ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDg4MDk0MzUuLjViZTlhZTggMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTEsMTMgKzExLDEzIEBACiAqLnJlagogKi5zd3AKICp+CisqLmdjPz8KKyoucHJvZmNsYW5nPworKi5wcm9mcmF3CiAuZ2RiX2hpc3RvcnkKIERvYy9idWlsZC8KLURvYy90b29scy9kb2N1dGlscy8KLURvYy90b29scy9qaW5qYS8KLURvYy90b29scy9qaW5qYTIvCi1Eb2MvdG9vbHMvcHlnbWVudHMvCi1Eb2MvdG9vbHMvc3BoaW54LworRG9jL3ZlbnYvCitMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKIExpYi9fc3lzY29uZmlnZGF0YS5weQpAQCAtMzEsMTggKzMxLDMxIEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAotTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgotTW9kdWxlcy9fdGVzdGVtYmVkCi1QQ2J1aWxkLyouYnNjCi1QQ2J1aWxkLyouZGxsCi1QQ2J1aWxkLyouZXhlCi1QQ2J1aWxkLyouZXhwCi1QQ2J1aWxkLyoubGliCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyoubwotUENidWlsZC8qLnBkYgotUENidWlsZC9XaW4zMi10ZW1wLSoKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQcm9ncmFtcy9fdGVzdGVtYmVkCitQQy9weXRob25fbnQqLmgKK1BDL3B5dGhvbm50X3JjKi5oCitQQy8qLyouZXhlCitQQy8qLyouZXhwCitQQy8qLyoubGliCitQQy8qLyouYnNjCitQQy8qLyouZGxsCitQQy8qLyoucGRiCitQQy8qLyoudXNlcgorUEMvKi8qLm5jYgorUEMvKi8qLnN1bworUEMvKi9XaW4zMi10ZW1wLSoKK1BDLyoveDY0LXRlbXAtKgorUEMvKi9hbWQ2NAorUENidWlsZC8qLnVzZXIKK1BDYnVpbGQvKi5zdW8KK1BDYnVpbGQvKi4qc2RmCitQQ2J1aWxkLyotcGdpCitQQ2J1aWxkLyotcGdvCitQQ2J1aWxkLy52cy8KIFBDYnVpbGQvYW1kNjQvCitQQ2J1aWxkL29iai8KK1BDQnVpbGQvd2luMzIvCiAucHVyaWZ5CiBQYXJzZXIvcGdlbgogX19weWNhY2hlX18KQEAgLTY0LDYgKzc3LDcgQEAKIHB5Y29uZmlnLmgKIHB5dGhvbi1jb25maWcKIHB5dGhvbi1jb25maWcucHkKK3B5dGhvbi5iYXQKIHB5dGhvbi5leGUKIHB5dGhvbi1nZGIucHkKIHB5dGhvbi5leGUtZ2RiLnB5CkBAIC03NSwzICs4OSw2IEBACiBjb3ZlcmFnZS8KIGV4dGVybmFscy8KIGh0bWxjb3YvCitUb29scy9tc2kvb2JqCitUb29scy9zc2wvYW1kNjQKK1Rvb2xzL3NzbC93aW4zMgpkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IDllNWE1ODMuLjdmMTRkZDYgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTksNiArOSw3IEBACiBhdXRvbTR0ZS5jYWNoZSQKIF5idWlsZC8KIF5Eb2MvYnVpbGQvCiteRG9jL3ZlbnYvCiBidWlsZG5vJAogY29uZmlnLmNhY2hlCiBjb25maWcubG9nCkBAIC0xOCw2ICsxOSw3IEBACiBwbGF0Zm9ybSQKIHB5Y29uZmlnLmgkCiBweXRob24kCitweXRob24uYmF0JAogcHl0aG9uLmV4ZSQKIHB5dGhvbi1jb25maWckCiBweXRob24tY29uZmlnLnB5JApAQCAtNDgsMTMgKzUwLDE1IEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KKyouZ2M/PworKi5wcm9mY2xhbmc/CisqLnByb2ZyYXcKK0xpYi9kaXN0dXRpbHMvY29tbWFuZC8qLnBkYgogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQogUEMvcHl0aG9uX250Ki5oCiBQQy9weXRob25udF9yYyouaAotUEMvKi5vYmoKLVBDLyouZXhlCiBQQy8qLyouZXhlCiBQQy8qLyouZXhwCiBQQy8qLyoubGliCkBAIC02NywyOSArNzEsMjEgQEAKIFBDLyovV2luMzItdGVtcC0qCiBQQy8qL3g2NC10ZW1wLSoKIFBDLyovYW1kNjQKLVBDYnVpbGQvKi5leGUKLVBDYnVpbGQvKi5kbGwKLVBDYnVpbGQvKi5wZGIKLVBDYnVpbGQvKi5saWIKLVBDYnVpbGQvKi5leHAKLVBDYnVpbGQvKi5vCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyoudXNlcgogUENidWlsZC8qLnN1bwogUENidWlsZC8qLipzZGYKLVBDYnVpbGQvV2luMzItdGVtcC0qCi1QQ2J1aWxkL3g2NC10ZW1wLSoKIFBDYnVpbGQvKi1wZ2kKIFBDYnVpbGQvKi1wZ28KK1BDYnVpbGQvLnZzCiBQQ2J1aWxkL2FtZDY0Ci1QQ2J1aWxkL2lwY2gKK1BDYnVpbGQvb2JqCitQQ2J1aWxkL3dpbjMyCiBUb29scy91bmljb2RlL2J1aWxkLwogVG9vbHMvdW5pY29kZS9NQVBQSU5HUy8KIEJ1aWxkTG9nLmh0bQogX19weWNhY2hlX18KLU1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKLU1vZHVsZXMvX3Rlc3RlbWJlZAorUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1Byb2dyYW1zL190ZXN0ZW1iZWQKIC5jb3ZlcmFnZQogY292ZXJhZ2UvCiBleHRlcm5hbHMvCkBAIC05OCwzICs5NCw2IEBACiAqLmdjbm8KICouZ2NvdgogY292ZXJhZ2UuaW5mbworVG9vbHMvbXNpL29iagorVG9vbHMvc3NsL2FtZDY0CitUb29scy9zc2wvd2luMzIKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGQ1ZWVhMjQuLjAzZmY3M2YgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ0LDMgKzE0NCwxNiBAQAogYWIyYzAyM2E5NDMyZjE2NjUyZTg5YzQwNGJiYzg0YWE5MWJmNTVhZiB2My40LjIKIDY5ZGQ1MjhjYTYyNTVhNjZjMzdjYzVjZjY4MGU4MzU3ZDEwOGIwMzYgdjMuNC4zcmMxCiBiNGNiZWNiYzA3ODFlODlhMzA5ZDAzYjYwYTFmNzVmODQ5OTI1MGU2IHYzLjQuMworNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQorMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgorODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMworNDEzZTBlMDAwNGY0Zjk1NDMzMWNiODEyMmFhNTVmZTIwODk4NDk1NSB2My41LjBhNAorMDcxZmVmYmI1ZTNkYjc3MGM2YzE5ZmJhOTk5NDY5OWYxMjFiMWNlYSB2My41LjBiMQorN2EwODhhZjU2MTViZjA0MDI0ZTk5MTIwNjhmNGJkOGY0M2VkMzkxNyB2My41LjBiMgorMDAzNWZjZDliOTI0M2FlNTJjMmU4MzAyMDRmZDljMWY3ZDUyODUzNCB2My41LjBiMworYzBkNjQxMDU0NjM1ODFmODVkMGUzNjhlOGQ2ZTU5YjdmZDhmMTJiMSB2My41LjBiNAorMWE1OGIxMjI3NTAxZTA0NmVlZTEzZDkwZjExMzQxN2I2MDg0MzMwMSB2My41LjByYzEKK2NjMTVkNzM2ZDg2MDMwM2I5ZGE5MGQ0M2NkMzJkYjM5YmFiMDQ4ZGYgdjMuNS4wcmMyCis2NmVkNTIzNzVkZjgwMmY5ZDBhMzQ0ODBkYWFhOGNlNzlmYzQxMzEzIHYzLjUuMHJjMworMmQwMzNmZWRmYTdmMWUzMjVmZDE0Y2NkYWE5Y2I0MjE1NWRhMjA2ZiB2My41LjByYzQKKzM3NGY1MDFmNDU2N2I3NTk1ZjJhZDc3OThhYTA5YWZhMjQ1NmJiMjggdjMuNS4wCmRpZmYgLS1naXQgYS8uaGd0b3VjaCBiLy5oZ3RvdWNoCmluZGV4IDdlM2E1ZTcuLmI5YmUwZjEgMTAwNjQ0Ci0tLSBhLy5oZ3RvdWNoCisrKyBiLy5oZ3RvdWNoCkBAIC0yLDcgKzIsOSBAQAogIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCiAjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworUHl0aG9uL2ltcG9ydGxpYi5oOiBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworCitJbmNsdWRlL29wY29kZS5oOiAgTGliL29wY29kZS5weSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CiAKIEluY2x1ZGUvUHl0aG9uLWFzdC5oOiBQYXJzZXIvUHl0aG9uLmFzZGwgUGFyc2VyL2FzZGwucHkgUGFyc2VyL2FzZGxfYy5weQogUHl0aG9uL1B5dGhvbi1hc3QuYzogSW5jbHVkZS9QeXRob24tYXN0LmgKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCBlYTMwMjMxLi5hNDJlOThiIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTIgQEAKIAogLlBIT05ZOiBoZWxwIGJ1aWxkIGh0bWwgaHRtbGhlbHAgbGF0ZXggdGV4dCBjaGFuZ2VzIGxpbmtjaGVjayBcCiAJc3VzcGljaW91cyBjb3ZlcmFnZSBkb2N0ZXN0IHB5ZG9jLXRvcGljcyBodG1sdmlldyBjbGVhbiBkaXN0IGNoZWNrIHNlcnZlIFwKLQlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUKKwlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUgdmVudgogCiBoZWxwOgogCUBlY2hvICJQbGVhc2UgdXNlIFxgbWFrZSA8dGFyZ2V0Picgd2hlcmUgPHRhcmdldD4gaXMgb25lIG9mIgogCUBlY2hvICIgIGNsZWFuICAgICAgdG8gcmVtb3ZlIGJ1aWxkIGZpbGVzIgorCUBlY2hvICIgIHZlbnYgICAgICAgdG8gY3JlYXRlIGEgdmVudiB3aXRoIG5lY2Vzc2FyeSB0b29scyIKIAlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgogCUBlY2hvICIgIGh0bWx2aWV3ICAgdG8gb3BlbiB0aGUgaW5kZXggcGFnZSBidWlsdCBieSB0aGUgaHRtbCB0YXJnZXQgaW4geW91ciBicm93c2VyIgogCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgpAQCAtOTUsMTQgKzk2LDE4IEBACiAKIHB5ZG9jLXRvcGljczogQlVJTERFUiA9IHB5ZG9jLXRvcGljcwogcHlkb2MtdG9waWNzOiBidWlsZAotCUBlY2hvICJCdWlsZGluZyBmaW5pc2hlZDsgbm93IGNvcHkgYnVpbGQvcHlkb2MtdG9waWNzL3RvcGljcy5weSIgXAotCSAgICAgICJ0byAuLi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkiCisJQGVjaG8gIkJ1aWxkaW5nIGZpbmlzaGVkOyBub3cgcnVuIHRoaXM6IiBcCisJICAgICAgImNwIGJ1aWxkL3B5ZG9jLXRvcGljcy90b3BpY3MucHkgLi4vTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IgogCiBodG1sdmlldzogaHRtbAogCSAkKFBZVEhPTikgLWMgImltcG9ydCB3ZWJicm93c2VyOyB3ZWJicm93c2VyLm9wZW4oJ2J1aWxkL2h0bWwvaW5kZXguaHRtbCcpIgogCiBjbGVhbjoKLQktcm0gLXJmIGJ1aWxkLyoKKwktcm0gLXJmIGJ1aWxkLyogdmVudi8qCisKK3ZlbnY6CisJJChQWVRIT04pIC1tIHZlbnYgdmVudgorCS4vdmVudi9iaW4vcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCAtVSBTcGhpbngKIAogZGlzdDoKIAlybSAtcmYgZGlzdApAQCAtMTcyLDQgKzE3NywzIEBACiAJCWV4aXQgMTs7IFwKIAllc2FjCiAJQG1ha2UgYXV0b2J1aWxkLWRldgotCmRpZmYgLS1naXQgYS9Eb2MvUkVBRE1FLnR4dCBiL0RvYy9SRUFETUUudHh0CmluZGV4IDU4YmRhNjIuLjU4MGQxMDIgMTAwNjQ0Ci0tLSBhL0RvYy9SRUFETUUudHh0CisrKyBiL0RvYy9SRUFETUUudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgcmVTdHJ1Y3R1cmVkVGV4dCAocmVTVCkgc291cmNlcyB0byB0aGUgUHl0aG9uCiBkb2N1bWVudGF0aW9uLiAgWW91IGRvbid0IG5lZWQgdG8gYnVpbGQgdGhlbSB5b3Vyc2VsZiwgcHJlYnVpbHQgdmVyc2lvbnMgYXJlCi1hdmFpbGFibGUgYXQgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC9kb3dubG9hZC5odG1sPi4KK2F2YWlsYWJsZSBhdCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L2Rvd25sb2FkLmh0bWw+LgogCiBEb2N1bWVudGF0aW9uIG9uIGF1dGhvcmluZyBQeXRob24gZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFib3V0CiBib3RoIHN0eWxlIGFuZCBtYXJrdXAsIGlzIGF2YWlsYWJsZSBpbiB0aGUgIkRvY3VtZW50aW5nIFB5dGhvbiIgY2hhcHRlciBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcmcucnN0IGIvRG9jL2MtYXBpL2FyZy5yc3QKaW5kZXggM2MwZjRiOS4uZWQ2MmRlYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2FyZy5yc3QKKysrIGIvRG9jL2MtYXBpL2FyZy5yc3QKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgogCi1gYHcqYGAgKDpjbGFzczpgYnl0ZWFycmF5YCBvciByZWFkLXdyaXRlIGJ5dGUtb3JpZW50ZWQgYnVmZmVyKSBbUHlfYnVmZmVyXQorYGB3KmBgIChyZWFkLXdyaXRlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApIFtQeV9idWZmZXJdCiAgICBUaGlzIGZvcm1hdCBhY2NlcHRzIGFueSBvYmplY3Qgd2hpY2ggaW1wbGVtZW50cyB0aGUgcmVhZC13cml0ZSBidWZmZXIKICAgIGludGVyZmFjZS4gSXQgZmlsbHMgYSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLgogICAgVGhlIGJ1ZmZlciBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGJ5dGVzLiBUaGUgY2FsbGVyIGhhdmUgdG8gY2FsbApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2J1ZmZlci5yc3QgYi9Eb2MvYy1hcGkvYnVmZmVyLnJzdAppbmRleCBkMDk5YWNlLi40NmMxOWQzIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdAorKysgYi9Eb2MvYy1hcGkvYnVmZmVyLnJzdApAQCAtOTYsOCArOTYsOCBAQAogICAgICAgYmxvY2sgb2YgdGhlIGV4cG9ydGVyLiBGb3IgZXhhbXBsZSwgd2l0aCBuZWdhdGl2ZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AKICAgICAgIHRoZSB2YWx1ZSBtYXkgcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgbWVtb3J5IGJsb2NrLgogCi0gICAgICBGb3IgY29udGlndW91cyBhcnJheXMsIHRoZSB2YWx1ZSBwb2ludHMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbWVtb3J5Ci0gICAgICBibG9jay4KKyAgICAgIEZvciA6dGVybTpgY29udGlndW91c2AgYXJyYXlzLCB0aGUgdmFsdWUgcG9pbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgIHRoZSBtZW1vcnkgYmxvY2suCiAKICAgIC4uIGM6bWVtYmVyOjogdm9pZCBcKm9iagogCkBAIC0yODEsMTEgKzI4MSwxNCBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAogCisuLiBpbmRleDo6IGNvbnRpZ3VvdXMsIEMtY29udGlndW91cywgRm9ydHJhbiBjb250aWd1b3VzCisKIGNvbnRpZ3VpdHkgcmVxdWVzdHMKIH5+fn5+fn5+fn5+fn5+fn5+fn4KIAotQyBvciBGb3J0cmFuIGNvbnRpZ3VpdHkgY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCB3aXRoIGFuZCB3aXRob3V0IHN0cmlkZQotaW5mb3JtYXRpb24uIFdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLCB0aGUgYnVmZmVyIG11c3QgYmUgQy1jb250aWd1b3VzLgorQyBvciBGb3J0cmFuIDp0ZXJtOmBjb250aWd1aXR5IDxjb250aWd1b3VzPmAgY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkLAord2l0aCBhbmQgd2l0aG91dCBzdHJpZGUgaW5mb3JtYXRpb24uIFdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLCB0aGUgYnVmZmVyCittdXN0IGJlIEMtY29udGlndW91cy4KIAogLi4gdGFidWxhcmNvbHVtbnM6OiB8cHswLjM1XGxpbmV3aWR0aH18bHxsfGx8bHwKIApAQCAtNDY2LDEzICs0NjksMTMgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBvcmRlcikKIAogICAgUmV0dXJuIDEgaWYgdGhlIG1lbW9yeSBkZWZpbmVkIGJ5IHRoZSAqdmlldyogaXMgQy1zdHlsZSAoKm9yZGVyKiBpcwotICAgYGAnQydgYCkgb3IgRm9ydHJhbi1zdHlsZSAoKm9yZGVyKiBpcyBgYCdGJ2BgKSBjb250aWd1b3VzIG9yIGVpdGhlciBvbmUKKyAgIGBgJ0MnYGApIG9yIEZvcnRyYW4tc3R5bGUgKCpvcmRlciogaXMgYGAnRidgYCkgOnRlcm06YGNvbnRpZ3VvdXNgIG9yIGVpdGhlciBvbmUKICAgICgqb3JkZXIqIGlzIGBgJ0EnYGApLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgb3JkZXIpCiAKLSAgIEZpbGwgdGhlICpzdHJpZGVzKiBhcnJheSB3aXRoIGJ5dGUtc3RyaWRlcyBvZiBhIGNvbnRpZ3VvdXMgKEMtc3R5bGUgaWYKKyAgIEZpbGwgdGhlICpzdHJpZGVzKiBhcnJheSB3aXRoIGJ5dGUtc3RyaWRlcyBvZiBhIDp0ZXJtOmBjb250aWd1b3VzYCAoQy1zdHlsZSBpZgogICAgKm9yZGVyKiBpcyBgYCdDJ2BgIG9yIEZvcnRyYW4tc3R5bGUgaWYgKm9yZGVyKiBpcyBgYCdGJ2BgKSBhcnJheSBvZiB0aGUKICAgIGdpdmVuIHNoYXBlIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBwZXIgZWxlbWVudC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvZGVjLnJzdCBiL0RvYy9jLWFwaS9jb2RlYy5yc3QKaW5kZXggODMyNTJhZi4uZGZlM2Q0MyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvZGVjLnJzdAorKysgYi9Eb2MvYy1hcGkvY29kZWMucnN0CkBAIC0xMTYsMyArMTE2LDggQEAKICAgIFJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKGBgXHhgYCwgYGBcdWBgIGFuZAogICAgYGBcVWBgKS4KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCisKKyAgIFJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29uY3JldGUucnN0IGIvRG9jL2MtYXBpL2NvbmNyZXRlLnJzdAppbmRleCAyZDU2Mzg2Li40N2RhYjgxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvY29uY3JldGUucnN0CisrKyBiL0RvYy9jLWFwaS9jb25jcmV0ZS5yc3QKQEAgLTExMiw1ICsxMTIsNiBAQAogICAgd2Vha3JlZi5yc3QKICAgIGNhcHN1bGUucnN0CiAgICBnZW4ucnN0CisgICBjb3JvLnJzdAogICAgZGF0ZXRpbWUucnN0CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9jb3JvLnJzdCBiL0RvYy9jLWFwaS9jb3JvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmU1MGI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2MtYXBpL2Nvcm8ucnN0CkBAIC0wLDAgKzEsMzQgQEAKKy4uIGhpZ2hsaWdodGxhbmc6OiBjCisKKy4uIF9jb3JvLW9iamVjdHM6CisKK0Nvcm91dGluZSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworQ29yb3V0aW5lIG9iamVjdHMgYXJlIHdoYXQgZnVuY3Rpb25zIGRlY2xhcmVkIHdpdGggYW4gYGBhc3luY2BgIGtleXdvcmQKK3JldHVybi4KKworCisuLiBjOnR5cGU6OiBQeUNvcm9PYmplY3QKKworICAgVGhlIEMgc3RydWN0dXJlIHVzZWQgZm9yIGNvcm91dGluZSBvYmplY3RzLgorCisKKy4uIGM6dmFyOjogUHlUeXBlT2JqZWN0IFB5Q29yb19UeXBlCisKKyAgIFRoZSB0eXBlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGNvcm91dGluZSBvYmplY3RzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb3JvX0NoZWNrRXhhY3QoUHlPYmplY3QgKm9iKQorCisgICBSZXR1cm4gdHJ1ZSBpZiAqb2IqJ3MgdHlwZSBpcyAqUHlDb3JvX1R5cGUqOyAqb2IqIG11c3Qgbm90IGJlICpOVUxMKi4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5Q29yb19OZXcoUHlGcmFtZU9iamVjdCAqZnJhbWUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCisKKyAgIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGNvcm91dGluZSBvYmplY3QgYmFzZWQgb24gdGhlICpmcmFtZSogb2JqZWN0LAorICAgd2l0aCBgYF9fbmFtZV9fYGAgYW5kIGBgX19xdWFsbmFtZV9fYGAgc2V0IHRvICpuYW1lKiBhbmQgKnF1YWxuYW1lKi4KKyAgIEEgcmVmZXJlbmNlIHRvICpmcmFtZSogaXMgc3RvbGVuIGJ5IHRoaXMgZnVuY3Rpb24uICBUaGUgKmZyYW1lKiBhcmd1bWVudAorICAgbXVzdCBub3QgYmUgKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IGMyZGY3NjcuLjNmZDY5YmEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTksMTMgKzksMTkgQEAKIAogVGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHdpbGwgbGV0IHlvdSBoYW5kbGUgYW5kIHJhaXNlIFB5dGhvbgogZXhjZXB0aW9ucy4gIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHNvbWUgb2YgdGhlIGJhc2ljcyBvZiBQeXRob24KLWV4Y2VwdGlvbiBoYW5kbGluZy4gIEl0IHdvcmtzIHNvbWV3aGF0IGxpa2UgdGhlIFVuaXggOmM6ZGF0YTpgZXJybm9gIHZhcmlhYmxlOgorZXhjZXB0aW9uIGhhbmRsaW5nLiAgSXQgd29ya3Mgc29tZXdoYXQgbGlrZSB0aGUgUE9TSVggOmM6ZGF0YTpgZXJybm9gIHZhcmlhYmxlOgogdGhlcmUgaXMgYSBnbG9iYWwgaW5kaWNhdG9yIChwZXIgdGhyZWFkKSBvZiB0aGUgbGFzdCBlcnJvciB0aGF0IG9jY3VycmVkLiAgTW9zdAotZnVuY3Rpb25zIGRvbid0IGNsZWFyIHRoaXMgb24gc3VjY2VzcywgYnV0IHdpbGwgc2V0IGl0IHRvIGluZGljYXRlIHRoZSBjYXVzZSBvZgotdGhlIGVycm9yIG9uIGZhaWx1cmUuICBNb3N0IGZ1bmN0aW9ucyBhbHNvIHJldHVybiBhbiBlcnJvciBpbmRpY2F0b3IsIHVzdWFsbHkKLSpOVUxMKiBpZiB0aGV5IGFyZSBzdXBwb3NlZCB0byByZXR1cm4gYSBwb2ludGVyLCBvciBgYC0xYGAgaWYgdGhleSByZXR1cm4gYW4KLWludGVnZXIgKGV4Y2VwdGlvbjogdGhlIDpjOmZ1bmM6YFB5QXJnX1wqYCBmdW5jdGlvbnMgcmV0dXJuIGBgMWBgIGZvciBzdWNjZXNzIGFuZAotYGAwYGAgZm9yIGZhaWx1cmUpLgorQyBBUEkgZnVuY3Rpb25zIGRvbid0IGNsZWFyIHRoaXMgb24gc3VjY2VzcywgYnV0IHdpbGwgc2V0IGl0IHRvIGluZGljYXRlIHRoZQorY2F1c2Ugb2YgdGhlIGVycm9yIG9uIGZhaWx1cmUuICBNb3N0IEMgQVBJIGZ1bmN0aW9ucyBhbHNvIHJldHVybiBhbiBlcnJvcgoraW5kaWNhdG9yLCB1c3VhbGx5ICpOVUxMKiBpZiB0aGV5IGFyZSBzdXBwb3NlZCB0byByZXR1cm4gYSBwb2ludGVyLCBvciBgYC0xYGAKK2lmIHRoZXkgcmV0dXJuIGFuIGludGVnZXIgKGV4Y2VwdGlvbjogdGhlIDpjOmZ1bmM6YFB5QXJnX1wqYCBmdW5jdGlvbnMKK3JldHVybiBgYDFgYCBmb3Igc3VjY2VzcyBhbmQgYGAwYGAgZm9yIGZhaWx1cmUpLgorCitDb25jcmV0ZWx5LCB0aGUgZXJyb3IgaW5kaWNhdG9yIGNvbnNpc3RzIG9mIHRocmVlIG9iamVjdCBwb2ludGVyczogdGhlCitleGNlcHRpb24ncyB0eXBlLCB0aGUgZXhjZXB0aW9uJ3MgdmFsdWUsIGFuZCB0aGUgdHJhY2ViYWNrIG9iamVjdC4gIEFueQorb2YgdGhvc2UgcG9pbnRlcnMgY2FuIGJlIE5VTEwgaWYgbm9uLXNldCAoYWx0aG91Z2ggc29tZSBjb21iaW5hdGlvbnMgYXJlCitmb3JiaWRkZW4sIGZvciBleGFtcGxlIHlvdSBjYW4ndCBoYXZlIGEgbm9uLU5VTEwgdHJhY2ViYWNrIGlmIHRoZSBleGNlcHRpb24KK3R5cGUgaXMgTlVMTCkuCiAKIFdoZW4gYSBmdW5jdGlvbiBtdXN0IGZhaWwgYmVjYXVzZSBzb21lIGZ1bmN0aW9uIGl0IGNhbGxlZCBmYWlsZWQsIGl0IGdlbmVyYWxseQogZG9lc24ndCBzZXQgdGhlIGVycm9yIGluZGljYXRvcjsgdGhlIGZ1bmN0aW9uIGl0IGNhbGxlZCBhbHJlYWR5IHNldCBpdC4gIEl0IGlzCkBAIC0yNywxMiArMzMsMjEgQEAKIHByb3BhZ2F0ZWQsIGFkZGl0aW9uYWwgY2FsbHMgaW50byB0aGUgUHl0aG9uL0MgQVBJIG1heSBub3QgYmVoYXZlIGFzIGludGVuZGVkCiBhbmQgbWF5IGZhaWwgaW4gbXlzdGVyaW91cyB3YXlzLgogCi1UaGUgZXJyb3IgaW5kaWNhdG9yIGNvbnNpc3RzIG9mIHRocmVlIFB5dGhvbiBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlc3VsdAotb2YgYGBzeXMuZXhjX2luZm8oKWBgLiAgQVBJIGZ1bmN0aW9ucyBleGlzdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBlcnJvciBpbmRpY2F0b3IKLWluIHZhcmlvdXMgd2F5cy4gIFRoZXJlIGlzIGEgc2VwYXJhdGUgZXJyb3IgaW5kaWNhdG9yIGZvciBlYWNoIHRocmVhZC4KKy4uIG5vdGU6OgorICAgVGhlIGVycm9yIGluZGljYXRvciBpcyAqKm5vdCoqIHRoZSByZXN1bHQgb2YgOmZ1bmM6YHN5cy5leGNfaW5mbygpYC4KKyAgIFRoZSBmb3JtZXIgY29ycmVzcG9uZHMgdG8gYW4gZXhjZXB0aW9uIHRoYXQgaXMgbm90IHlldCBjYXVnaHQgKGFuZCBpcworICAgdGhlcmVmb3JlIHN0aWxsIHByb3BhZ2F0aW5nKSwgd2hpbGUgdGhlIGxhdHRlciByZXR1cm5zIGFuIGV4Y2VwdGlvbiBhZnRlcgorICAgaXQgaXMgY2F1Z2h0IChhbmQgaGFzIHRoZXJlZm9yZSBzdG9wcGVkIHByb3BhZ2F0aW5nKS4KIAotLi4gWFhYIE9yZGVyIG9mIHRoZXNlIHNob3VsZCBiZSBtb3JlIHRob3VnaHRmdWwuCi0gICBFaXRoZXIgYWxwaGFiZXRpY2FsIG9yIHNvbWUga2luZCBvZiBzdHJ1Y3R1cmUuCisKK1ByaW50aW5nIGFuZCBjbGVhcmluZworPT09PT09PT09PT09PT09PT09PT09CisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfQ2xlYXIoKQorCisgICBDbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcyBub3Qgc2V0LCB0aGVyZSBpcyBubworICAgZWZmZWN0LgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1ByaW50RXgoaW50IHNldF9zeXNfbGFzdF92YXJzKQpAQCAtNTEsMTI3ICs2NiwyNCBAQAogICAgQWxpYXMgZm9yIGBgUHlFcnJfUHJpbnRFeCgxKWBgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfT2NjdXJyZWQoKQorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKFB5T2JqZWN0ICpvYmopCiAKLSAgIFRlc3Qgd2hldGhlciB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIHNldC4gIElmIHNldCwgcmV0dXJuIHRoZSBleGNlcHRpb24gKnR5cGUqCi0gICAodGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gb25lIG9mIHRoZSA6YzpmdW5jOmBQeUVycl9TZXRcKmAKLSAgIGZ1bmN0aW9ucyBvciB0byA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYCkuICBJZiBub3Qgc2V0LCByZXR1cm4gKk5VTEwqLiAgWW91IGRvIG5vdAotICAgb3duIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1cm4gdmFsdWUsIHNvIHlvdSBkbyBub3QgbmVlZCB0byA6YzpmdW5jOmBQeV9ERUNSRUZgCi0gICBpdC4KKyAgIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gYGBzeXMuc3RkZXJyYGAgd2hlbiBhbgorICAgZXhjZXB0aW9uIGhhcyBiZWVuIHNldCBidXQgaXQgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIGludGVycHJldGVyIHRvIGFjdHVhbGx5CisgICByYWlzZSB0aGUgZXhjZXB0aW9uLiAgSXQgaXMgdXNlZCwgZm9yIGV4YW1wbGUsIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbgorICAgOm1ldGg6YF9fZGVsX19gIG1ldGhvZC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIERvIG5vdCBjb21wYXJlIHRoZSByZXR1cm4gdmFsdWUgdG8gYSBzcGVjaWZpYyBleGNlcHRpb247IHVzZQotICAgICAgOmM6ZnVuYzpgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlc2AgaW5zdGVhZCwgc2hvd24gYmVsb3cuICAoVGhlIGNvbXBhcmlzb24gY291bGQKLSAgICAgIGVhc2lseSBmYWlsIHNpbmNlIHRoZSBleGNlcHRpb24gbWF5IGJlIGFuIGluc3RhbmNlIGluc3RlYWQgb2YgYSBjbGFzcywgaW4gdGhlCi0gICAgICBjYXNlIG9mIGEgY2xhc3MgZXhjZXB0aW9uLCBvciBpdCBtYXkgYmUgYSBzdWJjbGFzcyBvZiB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uLikKKyAgIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAqb2JqKiB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbnRleHQKKyAgIGluIHdoaWNoIHRoZSB1bnJhaXNhYmxlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gVGhlIHJlcHIgb2YgKm9iaiogd2lsbCBiZSBwcmludGVkIGluCisgICB0aGUgd2FybmluZyBtZXNzYWdlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZXhjKQorUmFpc2luZyBleGNlcHRpb25zCis9PT09PT09PT09PT09PT09PT0KIAotICAgRXF1aXZhbGVudCB0byBgYFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhQeUVycl9PY2N1cnJlZCgpLCBleGMpYGAuICBUaGlzCi0gICBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaXMgYWN0dWFsbHkgc2V0OyBhIG1lbW9yeSBhY2Nlc3MKLSAgIHZpb2xhdGlvbiB3aWxsIG9jY3VyIGlmIG5vIGV4Y2VwdGlvbiBoYXMgYmVlbiByYWlzZWQuCi0KLQotLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoUHlPYmplY3QgKmdpdmVuLCBQeU9iamVjdCAqZXhjKQotCi0gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgKmdpdmVuKiBleGNlcHRpb24gbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGluICpleGMqLiAgSWYKLSAgICpleGMqIGlzIGEgY2xhc3Mgb2JqZWN0LCB0aGlzIGFsc28gcmV0dXJucyB0cnVlIHdoZW4gKmdpdmVuKiBpcyBhbiBpbnN0YW5jZQotICAgb2YgYSBzdWJjbGFzcy4gIElmICpleGMqIGlzIGEgdHVwbGUsIGFsbCBleGNlcHRpb25zIGluIHRoZSB0dXBsZSAoYW5kCi0gICByZWN1cnNpdmVseSBpbiBzdWJ0dXBsZXMpIGFyZSBzZWFyY2hlZCBmb3IgYSBtYXRjaC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oUHlPYmplY3QqKmV4YywgUHlPYmplY3QqKnZhbCwgUHlPYmplY3QqKnRiKQotCi0gICBVbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgOmM6ZnVuYzpgUHlFcnJfRmV0Y2hgIGJlbG93Ci0gICBjYW4gYmUgInVubm9ybWFsaXplZCIsIG1lYW5pbmcgdGhhdCBgYCpleGNgYCBpcyBhIGNsYXNzIG9iamVjdCBidXQgYGAqdmFsYGAgaXMKLSAgIG5vdCBhbiBpbnN0YW5jZSBvZiB0aGUgIHNhbWUgY2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGluc3RhbnRpYXRlCi0gICB0aGUgY2xhc3MgaW4gdGhhdCBjYXNlLiAgSWYgdGhlIHZhbHVlcyBhcmUgYWxyZWFkeSBub3JtYWxpemVkLCBub3RoaW5nIGhhcHBlbnMuCi0gICBUaGUgZGVsYXllZCBub3JtYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGlzIGZ1bmN0aW9uICpkb2VzIG5vdCogaW1wbGljaXRseSBzZXQgdGhlIGBgX190cmFjZWJhY2tfX2BgCi0gICAgICBhdHRyaWJ1dGUgb24gdGhlIGV4Y2VwdGlvbiB2YWx1ZS4gSWYgc2V0dGluZyB0aGUgdHJhY2ViYWNrCi0gICAgICBhcHByb3ByaWF0ZWx5IGlzIGRlc2lyZWQsIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBzbmlwcGV0IGlzIG5lZWRlZDo6Ci0KLSAgICAgICAgIGlmICh0YiAhPSBOVUxMKSB7Ci0gICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKLSAgICAgICAgIH0KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9DbGVhcigpCi0KLSAgIENsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIG5vdCBzZXQsIHRoZXJlIGlzIG5vCi0gICBlZmZlY3QuCi0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfRmV0Y2goUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKLQotICAgUmV0cmlldmUgdGhlIGVycm9yIGluZGljYXRvciBpbnRvIHRocmVlIHZhcmlhYmxlcyB3aG9zZSBhZGRyZXNzZXMgYXJlIHBhc3NlZC4KLSAgIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgbm90IHNldCwgc2V0IGFsbCB0aHJlZSB2YXJpYWJsZXMgdG8gKk5VTEwqLiAgSWYgaXQgaXMKLSAgIHNldCwgaXQgd2lsbCBiZSBjbGVhcmVkIGFuZCB5b3Ugb3duIGEgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0IHJldHJpZXZlZC4gIFRoZQotICAgdmFsdWUgYW5kIHRyYWNlYmFjayBvYmplY3QgbWF5IGJlICpOVUxMKiBldmVuIHdoZW4gdGhlIHR5cGUgb2JqZWN0IGlzIG5vdC4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgb25seSB1c2VkIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBoYW5kbGUgZXhjZXB0aW9ucyBvcgotICAgICAgYnkgY29kZSB0aGF0IG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGVycm9yIGluZGljYXRvciB0ZW1wb3JhcmlseS4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9SZXN0b3JlKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCi0KLSAgIFNldCAgdGhlIGVycm9yIGluZGljYXRvciBmcm9tIHRoZSB0aHJlZSBvYmplY3RzLiAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcwotICAgYWxyZWFkeSBzZXQsIGl0IGlzIGNsZWFyZWQgZmlyc3QuICBJZiB0aGUgb2JqZWN0cyBhcmUgKk5VTEwqLCB0aGUgZXJyb3IKLSAgIGluZGljYXRvciBpcyBjbGVhcmVkLiAgRG8gbm90IHBhc3MgYSAqTlVMTCogdHlwZSBhbmQgbm9uLSpOVUxMKiB2YWx1ZSBvcgotICAgdHJhY2ViYWNrLiAgVGhlIGV4Y2VwdGlvbiB0eXBlIHNob3VsZCBiZSBhIGNsYXNzLiAgRG8gbm90IHBhc3MgYW4gaW52YWxpZAotICAgZXhjZXB0aW9uIHR5cGUgb3IgdmFsdWUuIChWaW9sYXRpbmcgdGhlc2UgcnVsZXMgd2lsbCBjYXVzZSBzdWJ0bGUgcHJvYmxlbXMKLSAgIGxhdGVyLikgIFRoaXMgY2FsbCB0YWtlcyBhd2F5IGEgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0OiB5b3UgbXVzdCBvd24gYQotICAgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0IGJlZm9yZSB0aGUgY2FsbCBhbmQgYWZ0ZXIgdGhlIGNhbGwgeW91IG5vIGxvbmdlciBvd24KLSAgIHRoZXNlIHJlZmVyZW5jZXMuICAoSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgdGhpcywgZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb24uICBJCi0gICB3YXJuZWQgeW91LikKLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgb25seSB1c2VkIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZQotICAgICAgZXJyb3IgaW5kaWNhdG9yIHRlbXBvcmFyaWx5OyB1c2UgOmM6ZnVuYzpgUHlFcnJfRmV0Y2hgIHRvIHNhdmUgdGhlIGN1cnJlbnQKLSAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCi0KLSAgIFJldHJpZXZlIHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycwotICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCi0gICBmcmVzaGx5IHJhaXNlZC4gIFJldHVybnMgbmV3IHJlZmVyZW5jZXMgZm9yIHRoZSB0aHJlZSBvYmplY3RzLCBhbnkgb2Ygd2hpY2gKLSAgIG1heSBiZSAqTlVMTCouICBEb2VzIG5vdCBtb2RpZnkgdGhlIGV4Y2VwdGlvbiBpbmZvIHN0YXRlLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCi0gICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KLSAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX1NldEV4Y0luZm9gIHRvIHJlc3RvcmUgb3IgY2xlYXIgdGhlCi0gICAgICBleGNlcHRpb24gc3RhdGUuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKLQotICAgU2V0IHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycwotICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCi0gICBmcmVzaGx5IHJhaXNlZC4gIFRoaXMgZnVuY3Rpb24gc3RlYWxzIHRoZSByZWZlcmVuY2VzIG9mIHRoZSBhcmd1bWVudHMuCi0gICBUbyBjbGVhciB0aGUgZXhjZXB0aW9uIHN0YXRlLCBwYXNzICpOVUxMKiBmb3IgYWxsIHRocmVlIGFyZ3VtZW50cy4KLSAgIEZvciBnZW5lcmFsIHJ1bGVzIGFib3V0IHRoZSB0aHJlZSBhcmd1bWVudHMsIHNlZSA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYC4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgotICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCi0gICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9HZXRFeGNJbmZvYCB0byByZWFkIHRoZSBleGNlcHRpb24KLSAgICAgIHN0YXRlLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKK1RoZXNlIGZ1bmN0aW9ucyBoZWxwIHlvdSBzZXQgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgZXJyb3IgaW5kaWNhdG9yLgorRm9yIGNvbnZlbmllbmNlLCBzb21lIG9mIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFsd2F5cyByZXR1cm4gYQorTlVMTCBwb2ludGVyIGZvciB1c2UgaW4gYSBgYHJldHVybmBgIHN0YXRlbWVudC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRTdHJpbmcoUHlPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCkBAIC0xOTcsNiArMTA5LDE0IEBACiAgICBzdHJpbmcuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9Gb3JtYXRWKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKKworICAgU2FtZSBhcyA6YzpmdW5jOmBQeUVycl9Gb3JtYXRgLCBidXQgdGFraW5nIGEgOmM6dHlwZTpgdmFfbGlzdGAgYXJndW1lbnQgcmF0aGVyCisgICB0aGFuIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0Tm9uZShQeU9iamVjdCAqdHlwZSkKIAogICAgVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgYGBQeUVycl9TZXRPYmplY3QodHlwZSwgUHlfTm9uZSlgYC4KQEAgLTM0Niw2ICsyNjYsMjIgQEAKICAgIHVzZS4KIAogCitJc3N1aW5nIHdhcm5pbmdzCis9PT09PT09PT09PT09PT09CisKK1VzZSB0aGVzZSBmdW5jdGlvbnMgdG8gaXNzdWUgd2FybmluZ3MgZnJvbSBDIGNvZGUuICBUaGV5IG1pcnJvciBzaW1pbGFyCitmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhlIFB5dGhvbiA6bW9kOmB3YXJuaW5nc2AgbW9kdWxlLiAgVGhleSBub3JtYWxseQorcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gKnN5cy5zdGRlcnIqOyBob3dldmVyLCBpdCBpcworYWxzbyBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB3YXJuaW5ncyBhcmUgdG8gYmUgdHVybmVkIGludG8KK2Vycm9ycywgYW5kIGluIHRoYXQgY2FzZSB0aGV5IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0Cit0aGUgZnVuY3Rpb25zIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIGEgcHJvYmxlbSB3aXRoIHRoZSB3YXJuaW5nIG1hY2hpbmVyeS4KK1RoZSByZXR1cm4gdmFsdWUgaXMgYGAwYGAgaWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3IgYGAtMWBgIGlmIGFuIGV4Y2VwdGlvbgoraXMgcmFpc2VkLiAgKEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHdhcm5pbmcgbWVzc2FnZSBpcworYWN0dWFsbHkgcHJpbnRlZCwgbm9yIHdoYXQgdGhlIHJlYXNvbiBpcyBmb3IgdGhlIGV4Y2VwdGlvbjsgdGhpcyBpcworaW50ZW50aW9uYWwuKSAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIGNhbGxlciBzaG91bGQgZG8gaXRzIG5vcm1hbAorZXhjZXB0aW9uIGhhbmRsaW5nIChmb3IgZXhhbXBsZSwgOmM6ZnVuYzpgUHlfREVDUkVGYCBvd25lZCByZWZlcmVuY2VzIGFuZCByZXR1cm4KK2FuIGVycm9yIHZhbHVlKS4KKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9XYXJuRXgoUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICptZXNzYWdlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQogCiAgICBJc3N1ZSBhIHdhcm5pbmcgbWVzc2FnZS4gIFRoZSAqY2F0ZWdvcnkqIGFyZ3VtZW50IGlzIGEgd2FybmluZyBjYXRlZ29yeSAoc2VlCkBAIC0zNTUsMTggKzI5MSw2IEBACiAgICBpcyB0aGUgZnVuY3Rpb24gY2FsbGluZyA6YzpmdW5jOmBQeUVycl9XYXJuRXhgLCAyIGlzICB0aGUgZnVuY3Rpb24gYWJvdmUgdGhhdCwKICAgIGFuZCBzbyBmb3J0aC4KIAotICAgVGhpcyBmdW5jdGlvbiBub3JtYWxseSBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gKnN5cy5zdGRlcnIqOyBob3dldmVyLCBpdCBpcwotICAgYWxzbyBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB3YXJuaW5ncyBhcmUgdG8gYmUgdHVybmVkIGludG8KLSAgIGVycm9ycywgYW5kIGluIHRoYXQgY2FzZSB0aGlzIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0Ci0gICB0aGUgZnVuY3Rpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIGEgcHJvYmxlbSB3aXRoIHRoZSB3YXJuaW5nIG1hY2hpbmVyeQotICAgKHRoZSBpbXBsZW1lbnRhdGlvbiBpbXBvcnRzIHRoZSA6bW9kOmB3YXJuaW5nc2AgbW9kdWxlIHRvIGRvIHRoZSBoZWF2eSBsaWZ0aW5nKS4KLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYGAwYGAgaWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3IgYGAtMWBgIGlmIGFuIGV4Y2VwdGlvbgotICAgaXMgcmFpc2VkLiAgKEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHdhcm5pbmcgbWVzc2FnZSBpcwotICAgYWN0dWFsbHkgcHJpbnRlZCwgbm9yIHdoYXQgdGhlIHJlYXNvbiBpcyBmb3IgdGhlIGV4Y2VwdGlvbjsgdGhpcyBpcwotICAgaW50ZW50aW9uYWwuKSAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIGNhbGxlciBzaG91bGQgZG8gaXRzIG5vcm1hbAotICAgZXhjZXB0aW9uIGhhbmRsaW5nIChmb3IgZXhhbXBsZSwgOmM6ZnVuYzpgUHlfREVDUkVGYCBvd25lZCByZWZlcmVuY2VzIGFuZCByZXR1cm4KLSAgIGFuIGVycm9yIHZhbHVlKS4KLQogICAgV2FybmluZyBjYXRlZ29yaWVzIG11c3QgYmUgc3ViY2xhc3NlcyBvZiA6YzpkYXRhOmBXYXJuaW5nYDsgdGhlIGRlZmF1bHQgd2FybmluZwogICAgY2F0ZWdvcnkgaXMgOmM6ZGF0YTpgUnVudGltZVdhcm5pbmdgLiAgVGhlIHN0YW5kYXJkIFB5dGhvbiB3YXJuaW5nIGNhdGVnb3JpZXMgYXJlCiAgICBhdmFpbGFibGUgYXMgZ2xvYmFsIHZhcmlhYmxlcyB3aG9zZSBuYW1lcyBhcmUgYGBQeUV4Y19gYCBmb2xsb3dlZCBieSB0aGUgUHl0aG9uCkBAIC00MTAsNiArMzM0LDEzOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX09jY3VycmVkKCkKKworICAgVGVzdCB3aGV0aGVyIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgc2V0LiAgSWYgc2V0LCByZXR1cm4gdGhlIGV4Y2VwdGlvbiAqdHlwZSoKKyAgICh0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGxhc3QgY2FsbCB0byBvbmUgb2YgdGhlIDpjOmZ1bmM6YFB5RXJyX1NldFwqYAorICAgZnVuY3Rpb25zIG9yIHRvIDpjOmZ1bmM6YFB5RXJyX1Jlc3RvcmVgKS4gIElmIG5vdCBzZXQsIHJldHVybiAqTlVMTCouICBZb3UgZG8gbm90CisgICBvd24gYSByZWZlcmVuY2UgdG8gdGhlIHJldHVybiB2YWx1ZSwgc28geW91IGRvIG5vdCBuZWVkIHRvIDpjOmZ1bmM6YFB5X0RFQ1JFRmAKKyAgIGl0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRG8gbm90IGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0byBhIHNwZWNpZmljIGV4Y2VwdGlvbjsgdXNlCisgICAgICA6YzpmdW5jOmBQeUVycl9FeGNlcHRpb25NYXRjaGVzYCBpbnN0ZWFkLCBzaG93biBiZWxvdy4gIChUaGUgY29tcGFyaXNvbiBjb3VsZAorICAgICAgZWFzaWx5IGZhaWwgc2luY2UgdGhlIGV4Y2VwdGlvbiBtYXkgYmUgYW4gaW5zdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzLCBpbiB0aGUKKyAgICAgIGNhc2Ugb2YgYSBjbGFzcyBleGNlcHRpb24sIG9yIGl0IG1heSBiZSBhIHN1YmNsYXNzIG9mIHRoZSBleHBlY3RlZCBleGNlcHRpb24uKQorCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZXhjKQorCisgICBFcXVpdmFsZW50IHRvIGBgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKFB5RXJyX09jY3VycmVkKCksIGV4YylgYC4gIFRoaXMKKyAgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiBpcyBhY3R1YWxseSBzZXQ7IGEgbWVtb3J5IGFjY2VzcworICAgdmlvbGF0aW9uIHdpbGwgb2NjdXIgaWYgbm8gZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZC4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZ2l2ZW4sIFB5T2JqZWN0ICpleGMpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSAqZ2l2ZW4qIGV4Y2VwdGlvbiBtYXRjaGVzIHRoZSBleGNlcHRpb24gdHlwZSBpbiAqZXhjKi4gIElmCisgICAqZXhjKiBpcyBhIGNsYXNzIG9iamVjdCwgdGhpcyBhbHNvIHJldHVybnMgdHJ1ZSB3aGVuICpnaXZlbiogaXMgYW4gaW5zdGFuY2UKKyAgIG9mIGEgc3ViY2xhc3MuICBJZiAqZXhjKiBpcyBhIHR1cGxlLCBhbGwgZXhjZXB0aW9uIHR5cGVzIGluIHRoZSB0dXBsZSAoYW5kCisgICByZWN1cnNpdmVseSBpbiBzdWJ0dXBsZXMpIGFyZSBzZWFyY2hlZCBmb3IgYSBtYXRjaC4KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9GZXRjaChQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQorCisgICBSZXRyaWV2ZSB0aGUgZXJyb3IgaW5kaWNhdG9yIGludG8gdGhyZWUgdmFyaWFibGVzIHdob3NlIGFkZHJlc3NlcyBhcmUgcGFzc2VkLgorICAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcyBub3Qgc2V0LCBzZXQgYWxsIHRocmVlIHZhcmlhYmxlcyB0byAqTlVMTCouICBJZiBpdCBpcworICAgc2V0LCBpdCB3aWxsIGJlIGNsZWFyZWQgYW5kIHlvdSBvd24gYSByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3QgcmV0cmlldmVkLiAgVGhlCisgICB2YWx1ZSBhbmQgdHJhY2ViYWNrIG9iamVjdCBtYXkgYmUgKk5VTEwqIGV2ZW4gd2hlbiB0aGUgdHlwZSBvYmplY3QgaXMgbm90LgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBvbmx5IHVzZWQgYnkgY29kZSB0aGF0IG5lZWRzIHRvIGNhdGNoIGV4Y2VwdGlvbnMgb3IKKyAgICAgIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBlcnJvciBpbmRpY2F0b3IgdGVtcG9yYXJpbHksIGUuZy46OgorCisgICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCAqKnR5cGUsICoqdmFsdWUsICoqdHJhY2ViYWNrOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CisKKyAgICAgICAgICAgIC8qIC4uLiBjb2RlIHRoYXQgbWlnaHQgcHJvZHVjZSBvdGhlciBlcnJvcnMgLi4uICovCisKKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUodHlwZSwgdmFsdWUsIHRyYWNlYmFjayk7CisgICAgICAgICB9CisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQorCisgICBTZXQgIHRoZSBlcnJvciBpbmRpY2F0b3IgZnJvbSB0aGUgdGhyZWUgb2JqZWN0cy4gIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMKKyAgIGFscmVhZHkgc2V0LCBpdCBpcyBjbGVhcmVkIGZpcnN0LiAgSWYgdGhlIG9iamVjdHMgYXJlICpOVUxMKiwgdGhlIGVycm9yCisgICBpbmRpY2F0b3IgaXMgY2xlYXJlZC4gIERvIG5vdCBwYXNzIGEgKk5VTEwqIHR5cGUgYW5kIG5vbi0qTlVMTCogdmFsdWUgb3IKKyAgIHRyYWNlYmFjay4gIFRoZSBleGNlcHRpb24gdHlwZSBzaG91bGQgYmUgYSBjbGFzcy4gIERvIG5vdCBwYXNzIGFuIGludmFsaWQKKyAgIGV4Y2VwdGlvbiB0eXBlIG9yIHZhbHVlLiAoVmlvbGF0aW5nIHRoZXNlIHJ1bGVzIHdpbGwgY2F1c2Ugc3VidGxlIHByb2JsZW1zCisgICBsYXRlci4pICBUaGlzIGNhbGwgdGFrZXMgYXdheSBhIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdDogeW91IG11c3Qgb3duIGEKKyAgIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdCBiZWZvcmUgdGhlIGNhbGwgYW5kIGFmdGVyIHRoZSBjYWxsIHlvdSBubyBsb25nZXIgb3duCisgICB0aGVzZSByZWZlcmVuY2VzLiAgKElmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHRoaXMsIGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uLiAgSQorICAgd2FybmVkIHlvdS4pCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBieSBjb2RlIHRoYXQgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKKyAgICAgIGVycm9yIGluZGljYXRvciB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9GZXRjaGAgdG8gc2F2ZSB0aGUgY3VycmVudAorICAgICAgZXJyb3IgaW5kaWNhdG9yLgorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbihQeU9iamVjdCoqZXhjLCBQeU9iamVjdCoqdmFsLCBQeU9iamVjdCoqdGIpCisKKyAgIFVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdGhlIHZhbHVlcyByZXR1cm5lZCBieSA6YzpmdW5jOmBQeUVycl9GZXRjaGAgYmVsb3cKKyAgIGNhbiBiZSAidW5ub3JtYWxpemVkIiwgbWVhbmluZyB0aGF0IGBgKmV4Y2BgIGlzIGEgY2xhc3Mgb2JqZWN0IGJ1dCBgYCp2YWxgYCBpcworICAgbm90IGFuIGluc3RhbmNlIG9mIHRoZSAgc2FtZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUKKyAgIHRoZSBjbGFzcyBpbiB0aGF0IGNhc2UuICBJZiB0aGUgdmFsdWVzIGFyZSBhbHJlYWR5IG5vcm1hbGl6ZWQsIG5vdGhpbmcgaGFwcGVucy4KKyAgIFRoZSBkZWxheWVkIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gKmRvZXMgbm90KiBpbXBsaWNpdGx5IHNldCB0aGUgYGBfX3RyYWNlYmFja19fYGAKKyAgICAgIGF0dHJpYnV0ZSBvbiB0aGUgZXhjZXB0aW9uIHZhbHVlLiBJZiBzZXR0aW5nIHRoZSB0cmFjZWJhY2sKKyAgICAgIGFwcHJvcHJpYXRlbHkgaXMgZGVzaXJlZCwgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHNuaXBwZXQgaXMgbmVlZGVkOjoKKworICAgICAgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICAgfQorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKKworICAgUmV0cmlldmUgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCisgICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgKmFscmVhZHkgY2F1Z2h0Kiwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBSZXR1cm5zIG5ldyByZWZlcmVuY2VzIGZvciB0aGUgdGhyZWUgb2JqZWN0cywgYW55IG9mIHdoaWNoCisgICBtYXkgYmUgKk5VTEwqLiAgRG9lcyBub3QgbW9kaWZ5IHRoZSBleGNlcHRpb24gaW5mbyBzdGF0ZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9TZXRFeGNJbmZvYCB0byByZXN0b3JlIG9yIGNsZWFyIHRoZQorICAgICAgZXhjZXB0aW9uIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCisKKyAgIFNldCB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyAqYWxyZWFkeSBjYXVnaHQqLCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFRoaXMgZnVuY3Rpb24gc3RlYWxzIHRoZSByZWZlcmVuY2VzIG9mIHRoZSBhcmd1bWVudHMuCisgICBUbyBjbGVhciB0aGUgZXhjZXB0aW9uIHN0YXRlLCBwYXNzICpOVUxMKiBmb3IgYWxsIHRocmVlIGFyZ3VtZW50cy4KKyAgIEZvciBnZW5lcmFsIHJ1bGVzIGFib3V0IHRoZSB0aHJlZSBhcmd1bWVudHMsIHNlZSA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9HZXRFeGNJbmZvYCB0byByZWFkIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitTaWduYWwgSGFuZGxpbmcKKz09PT09PT09PT09PT09PQorCisKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfQ2hlY2tTaWduYWxzKCkKIAogICAgLi4gaW5kZXg6OgpAQCAtNDQzLDEzICs1MDAsMjEgQEAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVNpZ25hbF9TZXRXYWtldXBGZChpbnQgZmQpCiAKLSAgIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBzcGVjaWZpZXMgYSBmaWxlIGRlc2NyaXB0b3IgdG8gd2hpY2ggYSBgYCdcMCdgYCBieXRlIHdpbGwKLSAgIGJlIHdyaXR0ZW4gd2hlbmV2ZXIgYSBzaWduYWwgaXMgcmVjZWl2ZWQuICBJdCByZXR1cm5zIHRoZSBwcmV2aW91cyBzdWNoIGZpbGUKLSAgIGRlc2NyaXB0b3IuICBUaGUgdmFsdWUgYGAtMWBgIGRpc2FibGVzIHRoZSBmZWF0dXJlOyB0aGlzIGlzIHRoZSBpbml0aWFsIHN0YXRlLgorICAgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIHNwZWNpZmllcyBhIGZpbGUgZGVzY3JpcHRvciB0byB3aGljaCB0aGUgc2lnbmFsIG51bWJlcgorICAgaXMgd3JpdHRlbiBhcyBhIHNpbmdsZSBieXRlIHdoZW5ldmVyIGEgc2lnbmFsIGlzIHJlY2VpdmVkLiAqZmQqIG11c3QgYmUKKyAgIG5vbi1ibG9ja2luZy4gSXQgcmV0dXJucyB0aGUgcHJldmlvdXMgc3VjaCBmaWxlIGRlc2NyaXB0b3IuCisKKyAgIFRoZSB2YWx1ZSBgYC0xYGAgZGlzYWJsZXMgdGhlIGZlYXR1cmU7IHRoaXMgaXMgdGhlIGluaXRpYWwgc3RhdGUuCiAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gOmZ1bmM6YHNpZ25hbC5zZXRfd2FrZXVwX2ZkYCBpbiBQeXRob24sIGJ1dCB3aXRob3V0IGFueQogICAgZXJyb3IgY2hlY2tpbmcuICAqZmQqIHNob3VsZCBiZSBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci4gIFRoZSBmdW5jdGlvbiBzaG91bGQKICAgIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgT24gV2luZG93cywgdGhlIGZ1bmN0aW9uIG5vdyBhbHNvIHN1cHBvcnRzIHNvY2tldCBoYW5kbGVzLgorCisKK0V4Y2VwdGlvbiBDbGFzc2VzCis9PT09PT09PT09PT09PT09PQogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX05ld0V4Y2VwdGlvbihjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqYmFzZSwgUHlPYmplY3QgKmRpY3QpCiAKQEAgLTQ3NSwxOCArNTQwLDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShQeU9iamVjdCAqb2JqKQotCi0gICBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gcHJpbnRzIGEgd2FybmluZyBtZXNzYWdlIHRvIGBgc3lzLnN0ZGVycmBgIHdoZW4gYW4KLSAgIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQgYnV0IGl0IGlzIGltcG9zc2libGUgZm9yIHRoZSBpbnRlcnByZXRlciB0byBhY3R1YWxseQotICAgcmFpc2UgdGhlIGV4Y2VwdGlvbi4gIEl0IGlzIHVzZWQsIGZvciBleGFtcGxlLCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW4KLSAgIDptZXRoOmBfX2RlbF9fYCBtZXRob2QuCi0KLSAgIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAqb2JqKiB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbnRleHQKLSAgIGluIHdoaWNoIHRoZSB1bnJhaXNhYmxlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gVGhlIHJlcHIgb2YgKm9iaiogd2lsbCBiZSBwcmludGVkIGluCi0gICB0aGUgd2FybmluZyBtZXNzYWdlLgotCi0KIEV4Y2VwdGlvbiBPYmplY3RzCiA9PT09PT09PT09PT09PT09PQogCkBAIC02MzAsMTIgKzY4MywxMiBAQAogICAgc2V0cyBhIDpleGM6YE1lbW9yeUVycm9yYCBhbmQgcmV0dXJucyBhIG5vbnplcm8gdmFsdWUuCiAKICAgIFRoZSBmdW5jdGlvbiB0aGVuIGNoZWNrcyBpZiB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIHJlYWNoZWQuICBJZiB0aGlzIGlzIHRoZQotICAgY2FzZSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHNldCBhbmQgYSBub256ZXJvIHZhbHVlIGlzIHJldHVybmVkLgorICAgY2FzZSwgYSA6ZXhjOmBSZWN1cnNpb25FcnJvcmAgaXMgc2V0IGFuZCBhIG5vbnplcm8gdmFsdWUgaXMgcmV0dXJuZWQuCiAgICBPdGhlcndpc2UsIHplcm8gaXMgcmV0dXJuZWQuCiAKICAgICp3aGVyZSogc2hvdWxkIGJlIGEgc3RyaW5nIHN1Y2ggYXMgYGAiIGluIGluc3RhbmNlIGNoZWNrImBgIHRvIGJlCi0gICBjb25jYXRlbmF0ZWQgdG8gdGhlIDpleGM6YFJ1bnRpbWVFcnJvcmAgbWVzc2FnZSBjYXVzZWQgYnkgdGhlIHJlY3Vyc2lvbiBkZXB0aAotICAgbGltaXQuCisgICBjb25jYXRlbmF0ZWQgdG8gdGhlIDpleGM6YFJlY3Vyc2lvbkVycm9yYCBtZXNzYWdlIGNhdXNlZCBieSB0aGUgcmVjdXJzaW9uCisgICBkZXB0aCBsaW1pdC4KIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCkKIApAQCAtNzQ3LDYgKzgwMCw4IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAgICAgICB8IDpleGM6YFByb2Nlc3NMb29rdXBFcnJvcmAgICAgICAgfCAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1JlY3Vyc2lvbkVycm9yYCAgICAgICAgICB8IDpleGM6YFJlY3Vyc2lvbkVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgICAgICB8IDpleGM6YFJlZmVyZW5jZUVycm9yYCAgICAgICAgICAgfCBcKDIpICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFJ1bnRpbWVFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CkBAIC03NzYsNiArODMxLDkgQEAKICAgIDpjOmRhdGE6YFB5RXhjX1Blcm1pc3Npb25FcnJvcmAsIDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAKICAgIGFuZCA6YzpkYXRhOmBQeUV4Y19UaW1lb3V0RXJyb3JgIHdlcmUgaW50cm9kdWNlZCBmb2xsb3dpbmcgOnBlcDpgMzE1MWAuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgOmM6ZGF0YTpgUHlFeGNfUmVjdXJzaW9uRXJyb3JgLgorCiAKIFRoZXNlIGFyZSBjb21wYXRpYmlsaXR5IGFsaWFzZXMgdG8gOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmA6CiAKQEAgLTgyNCw2ICs4ODIsNyBAQAogICAgc2luZ2xlOiBQeUV4Y19PdmVyZmxvd0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX1Blcm1pc3Npb25FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfUmVjdXJzaW9uRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUmVmZXJlbmNlRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUnVudGltZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5bnRheEVycm9yCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZ2VuLnJzdCBiL0RvYy9jLWFwaS9nZW4ucnN0CmluZGV4IDMzY2QyN2EuLjNhYjA3M2IgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9nZW4ucnN0CisrKyBiL0RvYy9jLWFwaS9nZW4ucnN0CkBAIC03LDcgKzcsNyBAQAogCiBHZW5lcmF0b3Igb2JqZWN0cyBhcmUgd2hhdCBQeXRob24gdXNlcyB0byBpbXBsZW1lbnQgZ2VuZXJhdG9yIGl0ZXJhdG9ycy4gVGhleQogYXJlIG5vcm1hbGx5IGNyZWF0ZWQgYnkgaXRlcmF0aW5nIG92ZXIgYSBmdW5jdGlvbiB0aGF0IHlpZWxkcyB2YWx1ZXMsIHJhdGhlcgotdGhhbiBleHBsaWNpdGx5IGNhbGxpbmcgOmM6ZnVuYzpgUHlHZW5fTmV3YC4KK3RoYW4gZXhwbGljaXRseSBjYWxsaW5nIDpjOmZ1bmM6YFB5R2VuX05ld2Agb3IgOmM6ZnVuYzpgUHlHZW5fTmV3V2l0aFF1YWxOYW1lYC4KIAogCiAuLiBjOnR5cGU6OiBQeUdlbk9iamVjdApAQCAtMjAsMTkgKzIwLDI1IEBACiAgICBUaGUgdHlwZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byBnZW5lcmF0b3Igb2JqZWN0cwogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2sob2IpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5R2VuX0NoZWNrKFB5T2JqZWN0ICpvYikKIAogICAgUmV0dXJuIHRydWUgaWYgKm9iKiBpcyBhIGdlbmVyYXRvciBvYmplY3Q7ICpvYiogbXVzdCBub3QgYmUgKk5VTEwqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2tFeGFjdChvYikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2tFeGFjdChQeU9iamVjdCAqb2IpCiAKLSAgIFJldHVybiB0cnVlIGlmICpvYioncyB0eXBlIGlzICpQeUdlbl9UeXBlKiBpcyBhIGdlbmVyYXRvciBvYmplY3Q7ICpvYiogbXVzdCBub3QKLSAgIGJlICpOVUxMKi4KKyAgIFJldHVybiB0cnVlIGlmICpvYioncyB0eXBlIGlzICpQeUdlbl9UeXBlKjsgKm9iKiBtdXN0IG5vdCBiZSAqTlVMTCouCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUdlbl9OZXcoUHlGcmFtZU9iamVjdCAqZnJhbWUpCiAKLSAgIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGdlbmVyYXRvciBvYmplY3QgYmFzZWQgb24gdGhlICpmcmFtZSogb2JqZWN0LiBBCi0gICByZWZlcmVuY2UgdG8gKmZyYW1lKiBpcyBzdG9sZW4gYnkgdGhpcyBmdW5jdGlvbi4gVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZQorICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgZ2VuZXJhdG9yIG9iamVjdCBiYXNlZCBvbiB0aGUgKmZyYW1lKiBvYmplY3QuCisgICBBIHJlZmVyZW5jZSB0byAqZnJhbWUqIGlzIHN0b2xlbiBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgYXJndW1lbnQgbXVzdCBub3QgYmUKICAgICpOVUxMKi4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoUHlGcmFtZU9iamVjdCAqZnJhbWUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCisKKyAgIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGdlbmVyYXRvciBvYmplY3QgYmFzZWQgb24gdGhlICpmcmFtZSogb2JqZWN0LAorICAgd2l0aCBgYF9fbmFtZV9fYGAgYW5kIGBgX19xdWFsbmFtZV9fYGAgc2V0IHRvICpuYW1lKiBhbmQgKnF1YWxuYW1lKi4KKyAgIEEgcmVmZXJlbmNlIHRvICpmcmFtZSogaXMgc3RvbGVuIGJ5IHRoaXMgZnVuY3Rpb24uICBUaGUgKmZyYW1lKiBhcmd1bWVudAorICAgbXVzdCBub3QgYmUgKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2ltcG9ydC5yc3QgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdAppbmRleCA2MDg2NWY0Li5iZjFiNDk1IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdApAQCAtMTgzLDkgKzE4Myw5IEBACiAKIC4uIGM6ZnVuY3Rpb246OiBsb25nIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKCkKIAotICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIFB5dGhvbiBieXRlY29kZSBmaWxlcyAoYS5rLmEuIDpmaWxlOmAucHljYCBhbmQKLSAgIDpmaWxlOmAucHlvYCBmaWxlcykuICBUaGUgbWFnaWMgbnVtYmVyIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBmaXJzdCBmb3VyIGJ5dGVzCi0gICBvZiB0aGUgYnl0ZWNvZGUgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLiBSZXR1cm5zIC0xIG9uIGVycm9yLgorICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIFB5dGhvbiBieXRlY29kZSBmaWxlcyAoYS5rLmEuIDpmaWxlOmAucHljYCBmaWxlKS4KKyAgIFRoZSBtYWdpYyBudW1iZXIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIGZpcnN0IGZvdXIgYnl0ZXMgb2YgdGhlIGJ5dGVjb2RlCisgICBmaWxlLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIuIFJldHVybnMgLTEgb24gZXJyb3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZXR1cm4gdmFsdWUgb2YgLTEgdXBvbiBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2luaXQucnN0IGIvRG9jL2MtYXBpL2luaXQucnN0CmluZGV4IDRiYjUwNjQuLjgxODIzYmYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbml0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKQEAgLTEzNCw2ICsxMzQsOSBAQAogICAgY2hhbmdlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHByb2dyYW0ncyBleGVjdXRpb24uICBObyBjb2RlIGluIHRoZSBQeXRob24KICAgIGludGVycHJldGVyIHdpbGwgY2hhbmdlIHRoZSBjb250ZW50cyBvZiB0aGlzIHN0b3JhZ2UuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAKIC4uIGM6ZnVuY3Rpb246OiB3Y2hhciogUHlfR2V0UHJvZ3JhbU5hbWUoKQogCkBAIC0yNDUsNiArMjQ4LDkgQEAKICAgIDpkYXRhOmBzeXMuZXhlY19wcmVmaXhgIHRvIGJlIGVtcHR5LiAgSXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBtb2RpZnkgdGhlc2UKICAgIGlmIHJlcXVpcmVkIGFmdGVyIGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAgICBUaGUgcGF0aCBhcmd1bWVudCBpcyBjb3BpZWQgaW50ZXJuYWxseSwgc28gdGhlIGNhbGxlciBtYXkgZnJlZSBpdCBhZnRlciB0aGUKICAgIGNhbGwgY29tcGxldGVzLgogCkBAIC0zNDQsNiArMzUwLDkgQEAKICAgICAgOmRhdGE6YHN5cy5wYXRoYCwgd2hpY2ggaXMgdGhlIHNhbWUgYXMgcHJlcGVuZGluZyB0aGUgY3VycmVudCB3b3JraW5nCiAgICAgIGRpcmVjdG9yeSAoYGAiLiJgYCkuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAgICAuLiBub3RlOjoKICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYXBwbGljYXRpb25zIGVtYmVkZGluZyB0aGUgUHl0aG9uIGludGVycHJldGVyCiAgICAgICBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiBleGVjdXRpbmcgYSBzaW5nbGUgc2NyaXB0IHBhc3MgMCBhcyAqdXBkYXRlcGF0aCosCkBAIC0zNjgsNiArMzc3LDkgQEAKICAgIHRvIDEgdW5sZXNzIHRoZSA6cHJvZ3JhbTpgcHl0aG9uYCBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZQogICAgOm9wdGlvbjpgLUlgLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgVGhlICp1cGRhdGVwYXRoKiB2YWx1ZSBkZXBlbmRzIG9uIDpvcHRpb246YC1JYC4KIAogCkBAIC0zODIsNiArMzk0LDkgQEAKICAgIGV4ZWN1dGlvbi4gIE5vIGNvZGUgaW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciB3aWxsIGNoYW5nZSB0aGUgY29udGVudHMgb2YKICAgIHRoaXMgc3RvcmFnZS4KIAorICAgVXNlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgdG8gZGVjb2RlIGEgYnl0ZXMgc3RyaW5nIHRvIGdldCBhCisgICA6Yzp0eXBlOmB3Y2hhcl8qYCBzdHJpbmcuCisKIAogLi4gYzpmdW5jdGlvbjo6IHdfY2hhciogUHlfR2V0UHl0aG9uSG9tZSgpCiAKQEAgLTg1OCw2ICs4NzMsOCBAQAogICAgICAgaW5zdGVhZC4KIAogCisuLiBfc3ViLWludGVycHJldGVyLXN1cHBvcnQ6CisKIFN1Yi1pbnRlcnByZXRlciBzdXBwb3J0CiA9PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CmluZGV4IDc5MDg2MjIuLjczMzkwMDYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnkucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CkBAIC05Miw4ICs5Miw4IEBACiBuZWVkIHRvIGJlIGhlbGQuCiAKIFRoZSBkZWZhdWx0IHJhdyBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwgYGBtYWxsb2MoMSlgYCB3aGVuCi1yZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCis6YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKK2BgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMTA2LDYgKzEwNiwxNyBAQAogICAgYmVlbiBpbml0aWFsaXplZCBpbiBhbnkgd2F5LgogCiAKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQorCisgICBBbGxvY2F0ZXMgKm5lbGVtKiBlbGVtZW50cyBlYWNoIHdob3NlIHNpemUgaW4gYnl0ZXMgaXMgKmVsc2l6ZSogYW5kIHJldHVybnMKKyAgIGEgcG9pbnRlciBvZiB0eXBlIDpjOnR5cGU6YHZvaWRcKmAgdG8gdGhlIGFsbG9jYXRlZCBtZW1vcnksIG9yICpOVUxMKiBpZiB0aGUKKyAgIHJlcXVlc3QgZmFpbHMuIFRoZSBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gemVyb3MuIFJlcXVlc3RpbmcgemVybyBlbGVtZW50cworICAgb3IgZWxlbWVudHMgb2Ygc2l6ZSB6ZXJvIGJ5dGVzIHJldHVybnMgYSBkaXN0aW5jdCBub24tKk5VTEwqIHBvaW50ZXIgaWYKKyAgIHBvc3NpYmxlLCBhcyBpZiBgYFB5TWVtX1Jhd0NhbGxvYygxLCAxKWBgIGhhZCBiZWVuIGNhbGxlZCBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbikKIAogICAgUmVzaXplcyB0aGUgbWVtb3J5IGJsb2NrIHBvaW50ZWQgdG8gYnkgKnAqIHRvICpuKiBieXRlcy4gVGhlIGNvbnRlbnRzIHdpbGwKQEAgLTEzNiw4ICsxNDcsOCBAQAogbWVtb3J5IGZyb20gdGhlIFB5dGhvbiBoZWFwLgogCiBUaGUgZGVmYXVsdCBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwgYGBtYWxsb2MoMSlgYCB3aGVuCi1yZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCis6YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKK2BgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtMTUyLDYgKzE2MywxNyBAQAogICAgYmVlbiBjYWxsZWQgaW5zdGVhZC4gVGhlIG1lbW9yeSB3aWxsIG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgaW4gYW55IHdheS4KIAogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKKworICAgQWxsb2NhdGVzICpuZWxlbSogZWxlbWVudHMgZWFjaCB3aG9zZSBzaXplIGluIGJ5dGVzIGlzICplbHNpemUqIGFuZCByZXR1cm5zCisgICBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCBvciAqTlVMTCogaWYgdGhlCisgICByZXF1ZXN0IGZhaWxzLiBUaGUgbWVtb3J5IGlzIGluaXRpYWxpemVkIHRvIHplcm9zLiBSZXF1ZXN0aW5nIHplcm8gZWxlbWVudHMKKyAgIG9yIGVsZW1lbnRzIG9mIHNpemUgemVybyBieXRlcyByZXR1cm5zIGEgZGlzdGluY3Qgbm9uLSpOVUxMKiBwb2ludGVyIGlmCisgICBwb3NzaWJsZSwgYXMgaWYgYGBQeU1lbV9DYWxsb2MoMSwgMSlgYCBoYWQgYmVlbiBjYWxsZWQgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCiAKICAgIFJlc2l6ZXMgdGhlIG1lbW9yeSBibG9jayBwb2ludGVkIHRvIGJ5ICpwKiB0byAqbiogYnl0ZXMuIFRoZSBjb250ZW50cyB3aWxsIGJlCkBAIC0yMTAsNyArMjMyLDcgQEAKIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLS4uIGM6dHlwZTo6IFB5TWVtQWxsb2NhdG9yCisuLiBjOnR5cGU6OiBQeU1lbUFsbG9jYXRvckV4CiAKICAgIFN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRvci4gVGhlIHN0cnVjdHVyZSBoYXMKICAgIGZvdXIgZmllbGRzOgpAQCAtMjIyLDExICsyNDQsMTkgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkKiBtYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSlgYCAgICAgICAgICAgICAgICAgfCBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGB2b2lkKiBjYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpYGAgfCBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayBpbml0aWFsaXplZCAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHplcm9zICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkKiByZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpYGAgfCBhbGxvY2F0ZSBvciByZXNpemUgYSBtZW1vcnkgYmxvY2sgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkIGZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpYGAgICAgICAgICAgICAgICAgICAgICAgfCBmcmVlIGEgbWVtb3J5IGJsb2NrICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvcmAgc3RydWN0dXJlIHdhcyByZW5hbWVkIHRvCisgICAgICA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvckV4YCBhbmQgYSBuZXcgYGBjYWxsb2NgYCBmaWVsZCB3YXMgYWRkZWQuCisKKwogLi4gYzp0eXBlOjogUHlNZW1BbGxvY2F0b3JEb21haW4KIAogICAgRW51bSB1c2VkIHRvIGlkZW50aWZ5IGFuIGFsbG9jYXRvciBkb21haW4uIERvbWFpbnM6CkBAIC0yMzksMTIgKzI2OSwxMiBAQAogICAgICA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCBhbmQgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKQorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCiAgICBHZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fU2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIAogICAgU2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKaW5kZXggNWU1MDk3Ny4uOWY2YmZkNyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdApAQCAtMzUsNyArMzUsNyBAQAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpvYmosIGludCBidWZmZXJ0eXBlLCBjaGFyIG9yZGVyKQogCi0gICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCB0byBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5IChpbiBlaXRoZXIKKyAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHRvIGEgOnRlcm06YGNvbnRpZ3VvdXNgIGNodW5rIG9mIG1lbW9yeSAoaW4gZWl0aGVyCiAgICAnQycgb3IgJ0Ynb3J0cmFuICpvcmRlciopIGZyb20gYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgYnVmZmVyCiAgICBpbnRlcmZhY2UuIElmIG1lbW9yeSBpcyBjb250aWd1b3VzLCB0aGUgbWVtb3J5dmlldyBvYmplY3QgcG9pbnRzIHRvIHRoZQogICAgb3JpZ2luYWwgbWVtb3J5LiBPdGhlcndpc2UsIGEgY29weSBpcyBtYWRlIGFuZCB0aGUgbWVtb3J5dmlldyBwb2ludHMgdG8gYQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21vZHVsZS5yc3QgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdAppbmRleCA5ODVhMzQ3Li5lZjc3OGNjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdAorKysgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdApAQCAtNyw4ICs3LDYgQEAKIAogLi4gaW5kZXg6OiBvYmplY3Q6IG1vZHVsZQogCi1UaGVyZSBhcmUgb25seSBhIGZldyBmdW5jdGlvbnMgc3BlY2lhbCB0byBtb2R1bGUgb2JqZWN0cy4KLQogCiAuLiBjOnZhcjo6IFB5VHlwZU9iamVjdCBQeU1vZHVsZV9UeXBlCiAKQEAgLTg0LDYgKzgyLDE4IEBACiAgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldE5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIG5hbWUgZW5jb2RlZCB0bwogICAgYGAndXRmLTgnYGAuCiAKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1vZHVsZV9HZXRTdGF0ZShQeU9iamVjdCAqbW9kdWxlKQorCisgICBSZXR1cm4gdGhlICJzdGF0ZSIgb2YgdGhlIG1vZHVsZSwgdGhhdCBpcywgYSBwb2ludGVyIHRvIHRoZSBibG9jayBvZiBtZW1vcnkKKyAgIGFsbG9jYXRlZCBhdCBtb2R1bGUgY3JlYXRpb24gdGltZSwgb3IgKk5VTEwqLiAgU2VlCisgICA6YzptZW1iZXI6YFB5TW9kdWxlRGVmLm1fc2l6ZWAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5TW9kdWxlRGVmKiBQeU1vZHVsZV9HZXREZWYoUHlPYmplY3QgKm1vZHVsZSkKKworICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgOmM6dHlwZTpgUHlNb2R1bGVEZWZgIHN0cnVjdCBmcm9tIHdoaWNoIHRoZSBtb2R1bGUgd2FzCisgICBjcmVhdGVkLCBvciAqTlVMTCogaWYgdGhlIG1vZHVsZSB3YXNuJ3QgY3JlYXRlZCBmcm9tIGEgZGVmaW5pdGlvbi4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUpCiAKQEAgLTEwOSw3MCArMTE5LDI1IEBACiAgICAgICB1bmVuY29kYWJsZSBmaWxlbmFtZXMsIHVzZSA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgaW5zdGVhZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QgKm1vZHVsZSkKLQotICAgUmV0dXJuIHRoZSAic3RhdGUiIG9mIHRoZSBtb2R1bGUsIHRoYXQgaXMsIGEgcG9pbnRlciB0byB0aGUgYmxvY2sgb2YgbWVtb3J5Ci0gICBhbGxvY2F0ZWQgYXQgbW9kdWxlIGNyZWF0aW9uIHRpbWUsIG9yICpOVUxMKi4gIFNlZQotICAgOmM6bWVtYmVyOmBQeU1vZHVsZURlZi5tX3NpemVgLgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU1vZHVsZURlZiogUHlNb2R1bGVfR2V0RGVmKFB5T2JqZWN0ICptb2R1bGUpCi0KLSAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIDpjOnR5cGU6YFB5TW9kdWxlRGVmYCBzdHJ1Y3QgZnJvbSB3aGljaCB0aGUgbW9kdWxlIHdhcwotICAgY3JlYXRlZCwgb3IgKk5VTEwqIGlmIHRoZSBtb2R1bGUgd2Fzbid0IGNyZWF0ZWQgd2l0aAotICAgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYC4KLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVN0YXRlX0ZpbmRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKLQotICAgUmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gKmRlZiogZm9yIHRoZSBjdXJyZW50IGludGVycHJldGVyLgotICAgVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIG9iamVjdCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgd2l0aAotICAgOmM6ZnVuYzpgUHlTdGF0ZV9BZGRNb2R1bGVgIGJlZm9yZWhhbmQuIEluIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdCBpcyBub3QKLSAgIGZvdW5kIG9yIGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgeWV0LCBpdCByZXR1cm5zIE5VTEwuCi0KLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZikKLQotICAgQXR0YWNoZXMgdGhlIG1vZHVsZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuIFRoaXMgYWxsb3dzCi0gICB0aGUgbW9kdWxlIG9iamVjdCB0byBiZSBhY2Nlc3NpYmxlIHZpYQotICAgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKLQotICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworLi4gX2luaXRpYWxpemluZy1tb2R1bGVzOgogCiBJbml0aWFsaXppbmcgQyBtb2R1bGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZXNlIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSB1c2VkIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCitNb2R1bGVzIG9iamVjdHMgYXJlIHVzdWFsbHkgY3JlYXRlZCBmcm9tIGV4dGVuc2lvbiBtb2R1bGVzIChzaGFyZWQgbGlicmFyaWVzCit3aGljaCBleHBvcnQgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24pLCBvciBjb21waWxlZC1pbiBtb2R1bGVzCisod2hlcmUgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGlzIGFkZGVkIHVzaW5nIDpjOmZ1bmM6YFB5SW1wb3J0X0FwcGVuZEluaXR0YWJgKS4KK1NlZSA6cmVmOmBidWlsZGluZ2Agb3IgOnJlZjpgZXh0ZW5kaW5nLXdpdGgtZW1iZWRkaW5nYCBmb3IgZGV0YWlscy4KIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9DcmVhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLQotICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqLiAgVGhpcyBiZWhhdmVzCi0gICBsaWtlIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZTJgIHdpdGggKm1vZHVsZV9hcGlfdmVyc2lvbiogc2V0IHRvCi0gICA6Y29uc3Q6YFBZVEhPTl9BUElfVkVSU0lPTmAuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9DcmVhdGUyKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCi0KLSAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgb2JqZWN0LCBnaXZlbiB0aGUgZGVmaW5pdGlvbiBpbiAqbW9kdWxlKiwgYXNzdW1pbmcgdGhlCi0gICBBUEkgdmVyc2lvbiAqbW9kdWxlX2FwaV92ZXJzaW9uKi4gIElmIHRoYXQgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbgotICAgb2YgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIsIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgIGlzIGVtaXR0ZWQuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBNb3N0IHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNpbmcgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYAotICAgICAgaW5zdGVhZDsgb25seSB1c2UgdGhpcyBpZiB5b3UgYXJlIHN1cmUgeW91IG5lZWQgaXQuCi0KK1RoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYW4gZWl0aGVyIHBhc3MgcGFzcyBhIG1vZHVsZSBkZWZpbml0aW9uIGluc3RhbmNlCit0byA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgbW9kdWxlIG9iamVjdCwKK29yIHJlcXVlc3QgIm11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIiBieSByZXR1cm5pbmcgdGhlIGRlZmluaXRpb24gc3RydWN0IGl0c2VsZi4KIAogLi4gYzp0eXBlOjogUHlNb2R1bGVEZWYKIAotICAgVGhpcyBzdHJ1Y3QgaG9sZHMgYWxsIGluZm9ybWF0aW9uIHRoYXQgaXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG1vZHVsZSBvYmplY3QuCi0gICBUaGVyZSBpcyB1c3VhbGx5IG9ubHkgb25lIHN0YXRpYyB2YXJpYWJsZSBvZiB0aGF0IHR5cGUgZm9yIGVhY2ggbW9kdWxlLCB3aGljaAotICAgaXMgc3RhdGljYWxseSBpbml0aWFsaXplZCBhbmQgdGhlbiBwYXNzZWQgdG8gOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYCBpbiB0aGUKLSAgIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KKyAgIFRoZSBtb2R1bGUgZGVmaW5pdGlvbiBzdHJ1Y3QsIHdoaWNoIGhvbGRzIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlCisgICBhIG1vZHVsZSBvYmplY3QuIFRoZXJlIGlzIHVzdWFsbHkgb25seSBvbmUgc3RhdGljYWxseSBpbml0aWFsaXplZCB2YXJpYWJsZQorICAgb2YgdGhpcyB0eXBlIGZvciBlYWNoIG1vZHVsZS4KIAogICAgLi4gYzptZW1iZXI6OiBQeU1vZHVsZURlZl9CYXNlIG1fYmFzZQogCkBAIC0xODksMTkgKzE1NCwyMSBAQAogCiAgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgbV9zaXplCiAKLSAgICAgIFNvbWUgbW9kdWxlcyBhbGxvdyByZS1pbml0aWFsaXphdGlvbiAoY2FsbGluZyB0aGVpciBgYFB5SW5pdF8qYGAgZnVuY3Rpb24KLSAgICAgIG1vcmUgdGhhbiBvbmNlKS4gVGhlc2UgbW9kdWxlcyBzaG91bGQga2VlcCB0aGVpciBzdGF0ZSBpbiBhIHBlci1tb2R1bGUKLSAgICAgIG1lbW9yeSBhcmVhIHRoYXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIDpjOmZ1bmM6YFB5TW9kdWxlX0dldFN0YXRlYC4KKyAgICAgIE1vZHVsZSBzdGF0ZSBtYXkgYmUga2VwdCBpbiBhIHBlci1tb2R1bGUgbWVtb3J5IGFyZWEgdGhhdCBjYW4gYmUKKyAgICAgIHJldHJpZXZlZCB3aXRoIDpjOmZ1bmM6YFB5TW9kdWxlX0dldFN0YXRlYCwgcmF0aGVyIHRoYW4gaW4gc3RhdGljIGdsb2JhbHMuCisgICAgICBUaGlzIG1ha2VzIG1vZHVsZXMgc2FmZSBmb3IgdXNlIGluIG11bHRpcGxlIHN1Yi1pbnRlcnByZXRlcnMuCiAKLSAgICAgIFRoaXMgbWVtb3J5IHNob3VsZCBiZSB1c2VkLCByYXRoZXIgdGhhbiBzdGF0aWMgZ2xvYmFscywgdG8gaG9sZCBwZXItbW9kdWxlCi0gICAgICBzdGF0ZSwgc2luY2UgaXQgaXMgdGhlbiBzYWZlIGZvciB1c2UgaW4gbXVsdGlwbGUgc3ViLWludGVycHJldGVycy4gIEl0IGlzCi0gICAgICBmcmVlZCB3aGVuIHRoZSBtb2R1bGUgb2JqZWN0IGlzIGRlYWxsb2NhdGVkLCBhZnRlciB0aGUgOmM6bWVtYmVyOmBtX2ZyZWVgCi0gICAgICBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQsIGlmIHByZXNlbnQuCisgICAgICBUaGlzIG1lbW9yeSBhcmVhIGlzIGFsbG9jYXRlZCBiYXNlZCBvbiAqbV9zaXplKiBvbiBtb2R1bGUgY3JlYXRpb24sCisgICAgICBhbmQgZnJlZWQgd2hlbiB0aGUgbW9kdWxlIG9iamVjdCBpcyBkZWFsbG9jYXRlZCwgYWZ0ZXIgdGhlCisgICAgICA6YzptZW1iZXI6YG1fZnJlZWAgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLCBpZiBwcmVzZW50LgogCi0gICAgICBTZXR0aW5nIGBgbV9zaXplYGAgdG8gYGAtMWBgIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBjYW4gbm90IGJlCi0gICAgICByZS1pbml0aWFsaXplZCBiZWNhdXNlIGl0IGhhcyBnbG9iYWwgc3RhdGUuIFNldHRpbmcgaXQgdG8gYSBub24tbmVnYXRpdmUKLSAgICAgIHZhbHVlIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBjYW4gYmUgcmUtaW5pdGlhbGl6ZWQgYW5kIHNwZWNpZmllcyB0aGUKLSAgICAgIGFkZGl0aW9uYWwgYW1vdW50IG9mIG1lbW9yeSBpdCByZXF1aXJlcyBmb3IgaXRzIHN0YXRlLgorICAgICAgU2V0dGluZyBgYG1fc2l6ZWBgIHRvIGBgLTFgYCBtZWFucyB0aGF0IHRoZSBtb2R1bGUgZG9lcyBub3Qgc3VwcG9ydAorICAgICAgc3ViLWludGVycHJldGVycywgYmVjYXVzZSBpdCBoYXMgZ2xvYmFsIHN0YXRlLgorCisgICAgICBTZXR0aW5nIGl0IHRvIGEgbm9uLW5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBjYW4gYmUKKyAgICAgIHJlLWluaXRpYWxpemVkIGFuZCBzcGVjaWZpZXMgdGhlIGFkZGl0aW9uYWwgYW1vdW50IG9mIG1lbW9yeSBpdCByZXF1aXJlcworICAgICAgZm9yIGl0cyBzdGF0ZS4gTm9uLW5lZ2F0aXZlIGBgbV9zaXplYGAgaXMgcmVxdWlyZWQgZm9yIG11bHRpLXBoYXNlCisgICAgICBpbml0aWFsaXphdGlvbi4KIAogICAgICAgU2VlIDpQRVA6YDMxMjFgIGZvciBtb3JlIGRldGFpbHMuCiAKQEAgLTIxMCw5ICsxNzcsMTggQEAKICAgICAgIEEgcG9pbnRlciB0byBhIHRhYmxlIG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMsIGRlc2NyaWJlZCBieQogICAgICAgOmM6dHlwZTpgUHlNZXRob2REZWZgIHZhbHVlcy4gIENhbiBiZSAqTlVMTCogaWYgbm8gZnVuY3Rpb25zIGFyZSBwcmVzZW50LgogCi0gICAuLiBjOm1lbWJlcjo6IGlucXVpcnkgbV9yZWxvYWQKKyAgIC4uIGM6bWVtYmVyOjogUHlNb2R1bGVEZWZfU2xvdCogbV9zbG90cwogCi0gICAgICBDdXJyZW50bHkgdW51c2VkLCBzaG91bGQgYmUgKk5VTEwqLgorICAgICAgQW4gYXJyYXkgb2Ygc2xvdCBkZWZpbml0aW9ucyBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sIHRlcm1pbmF0ZWQgYnkKKyAgICAgIGEgYGB7MCwgTlVMTH1gYCBlbnRyeS4KKyAgICAgIFdoZW4gdXNpbmcgc2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uLCAqbV9zbG90cyogbXVzdCBiZSAqTlVMTCouCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgICAgIFByaW9yIHRvIHZlcnNpb24gMy41LCB0aGlzIG1lbWJlciB3YXMgYWx3YXlzIHNldCB0byAqTlVMTCosCisgICAgICAgICBhbmQgd2FzIGRlZmluZWQgYXM6CisKKyAgICAgICAgICAgLi4gYzptZW1iZXI6OiBpbnF1aXJ5IG1fcmVsb2FkCiAKICAgIC4uIGM6bWVtYmVyOjogdHJhdmVyc2Vwcm9jIG1fdHJhdmVyc2UKIApAQCAtMjI5LDYgKzIwNSwyMDQgQEAKICAgICAgIEEgZnVuY3Rpb24gdG8gY2FsbCBkdXJpbmcgZGVhbGxvY2F0aW9uIG9mIHRoZSBtb2R1bGUgb2JqZWN0LCBvciAqTlVMTCogaWYKICAgICAgIG5vdCBuZWVkZWQuCiAKK1NpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1RoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbWF5IGNyZWF0ZSBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0CitkaXJlY3RseS4gVGhpcyBpcyByZWZlcnJlZCB0byBhcyAic2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uIiwgYW5kIHVzZXMgb25lCitvZiB0aGUgZm9sbG93aW5nIHR3byBtb2R1bGUgY3JlYXRpb24gZnVuY3Rpb25zOgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZShQeU1vZHVsZURlZiAqZGVmKQorCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKmRlZiouICBUaGlzIGJlaGF2ZXMKKyAgIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlMmAgd2l0aCAqbW9kdWxlX2FwaV92ZXJzaW9uKiBzZXQgdG8KKyAgIDpjb25zdDpgUFlUSE9OX0FQSV9WRVJTSU9OYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZTIoUHlNb2R1bGVEZWYgKmRlZiwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICpkZWYqLCBhc3N1bWluZyB0aGUKKyAgIEFQSSB2ZXJzaW9uICptb2R1bGVfYXBpX3ZlcnNpb24qLiAgSWYgdGhhdCB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSB2ZXJzaW9uCisgICBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciwgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AgaXMgZW1pdHRlZC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIE1vc3QgdXNlcyBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2luZyA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgCisgICAgICBpbnN0ZWFkOyBvbmx5IHVzZSB0aGlzIGlmIHlvdSBhcmUgc3VyZSB5b3UgbmVlZCBpdC4KKworQmVmb3JlIGl0IGlzIHJldHVybmVkIGZyb20gaW4gdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCB0aGUgcmVzdWx0aW5nIG1vZHVsZQorb2JqZWN0IGlzIHR5cGljYWxseSBwb3B1bGF0ZWQgdXNpbmcgZnVuY3Rpb25zIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfQWRkT2JqZWN0YC4KKworLi4gX211bHRpLXBoYXNlLWluaXRpYWxpemF0aW9uOgorCitNdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworQW4gYWx0ZXJuYXRlIHdheSB0byBzcGVjaWZ5IGV4dGVuc2lvbnMgaXMgdG8gcmVxdWVzdCAibXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24iLgorRXh0ZW5zaW9uIG1vZHVsZXMgY3JlYXRlZCB0aGlzIHdheSBiZWhhdmUgbW9yZSBsaWtlIFB5dGhvbiBtb2R1bGVzOiB0aGUKK2luaXRpYWxpemF0aW9uIGlzIHNwbGl0IGJldHdlZW4gdGhlICpjcmVhdGlvbiBwaGFzZSosIHdoZW4gdGhlIG1vZHVsZSBvYmplY3QKK2lzIGNyZWF0ZWQsIGFuZCB0aGUgKmV4ZWN1dGlvbiBwaGFzZSosIHdoZW4gaXQgaXMgcG9wdWxhdGVkLgorVGhlIGRpc3RpbmN0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIDpweTptZXRoOmBfX25ld19fYCBhbmQgOnB5Om1ldGg6YF9faW5pdF9fYCBtZXRob2RzCitvZiBjbGFzc2VzLgorCitVbmxpa2UgbW9kdWxlcyBjcmVhdGVkIHVzaW5nIHNpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbiwgdGhlc2UgbW9kdWxlcyBhcmUgbm90CitzaW5nbGV0b25zOiBpZiB0aGUgKnN5cy5tb2R1bGVzKiBlbnRyeSBpcyByZW1vdmVkIGFuZCB0aGUgbW9kdWxlIGlzIHJlLWltcG9ydGVkLAorYSBuZXcgbW9kdWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgdGhlIG9sZCBtb2R1bGUgaXMgc3ViamVjdCB0byBub3JtYWwgZ2FyYmFnZQorY29sbGVjdGlvbiAtLSBhcyB3aXRoIFB5dGhvbiBtb2R1bGVzLgorQnkgZGVmYXVsdCwgbXVsdGlwbGUgbW9kdWxlcyBjcmVhdGVkIGZyb20gdGhlIHNhbWUgZGVmaW5pdGlvbiBzaG91bGQgYmUKK2luZGVwZW5kZW50OiBjaGFuZ2VzIHRvIG9uZSBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3RoZXJzLgorVGhpcyBtZWFucyB0aGF0IGFsbCBzdGF0ZSBzaG91bGQgYmUgc3BlY2lmaWMgdG8gdGhlIG1vZHVsZSBvYmplY3QgKHVzaW5nIGUuZy4KK3VzaW5nIDpjOmZ1bmM6YFB5TW9kdWxlX0dldFN0YXRlYCksIG9yIGl0cyBjb250ZW50cyAoc3VjaCBhcyB0aGUgbW9kdWxlJ3MKKzphdHRyOmBfX2RpY3RfX2Agb3IgaW5kaXZpZHVhbCBjbGFzc2VzIGNyZWF0ZWQgd2l0aCA6YzpmdW5jOmBQeVR5cGVfRnJvbVNwZWNgKS4KKworQWxsIG1vZHVsZXMgY3JlYXRlZCB1c2luZyBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiBhcmUgZXhwZWN0ZWQgdG8gc3VwcG9ydAorOnJlZjpgc3ViLWludGVycHJldGVycyA8c3ViLWludGVycHJldGVyLXN1cHBvcnQ+YC4gTWFraW5nIHN1cmUgbXVsdGlwbGUgbW9kdWxlcworYXJlIGluZGVwZW5kZW50IGlzIHR5cGljYWxseSBlbm91Z2ggdG8gYWNoaWV2ZSB0aGlzLgorCitUbyByZXF1ZXN0IG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uLCB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24KKyhQeUluaXRfbW9kdWxlbmFtZSkgcmV0dXJucyBhIDpjOnR5cGU6YFB5TW9kdWxlRGVmYCBpbnN0YW5jZSB3aXRoIG5vbi1lbXB0eQorOmM6bWVtYmVyOmB+UHlNb2R1bGVEZWYubV9zbG90c2AuIEJlZm9yZSBpdCBpcyByZXR1cm5lZCwgdGhlIGBgUHlNb2R1bGVEZWZgYAoraW5zdGFuY2UgbXVzdCBiZSBpbml0aWFsaXplZCB3aXRoIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVEZWZfSW5pdChQeU1vZHVsZURlZiAqZGVmKQorCisgICBFbnN1cmVzIGEgbW9kdWxlIGRlZmluaXRpb24gaXMgYSBwcm9wZXJseSBpbml0aWFsaXplZCBQeXRob24gb2JqZWN0IHRoYXQKKyAgIGNvcnJlY3RseSByZXBvcnRzIGl0cyB0eXBlIGFuZCByZWZlcmVuY2UgY291bnQuCisKKyAgIFJldHVybnMgKmRlZiogY2FzdCB0byBgYFB5T2JqZWN0KmBgLCBvciAqTlVMTCogaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitUaGUgKm1fc2xvdHMqIG1lbWJlciBvZiB0aGUgbW9kdWxlIGRlZmluaXRpb24gbXVzdCBwb2ludCB0byBhbiBhcnJheSBvZgorYGBQeU1vZHVsZURlZl9TbG90YGAgc3RydWN0dXJlczoKKworLi4gYzp0eXBlOjogUHlNb2R1bGVEZWZfU2xvdAorCisgICAuLiBjOm1lbWJlcjo6IGludCBzbG90CisKKyAgICAgIEEgc2xvdCBJRCwgY2hvc2VuIGZyb20gdGhlIGF2YWlsYWJsZSB2YWx1ZXMgZXhwbGFpbmVkIGJlbG93LgorCisgICAuLiBjOm1lbWJlcjo6IHZvaWQqIHZhbHVlCisKKyAgICAgIFZhbHVlIG9mIHRoZSBzbG90LCB3aG9zZSBtZWFuaW5nIGRlcGVuZHMgb24gdGhlIHNsb3QgSUQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitUaGUgKm1fc2xvdHMqIGFycmF5IG11c3QgYmUgdGVybWluYXRlZCBieSBhIHNsb3Qgd2l0aCBpZCAwLgorCitUaGUgYXZhaWxhYmxlIHNsb3QgdHlwZXMgYXJlOgorCisuLiBjOnZhcjo6IFB5X21vZF9jcmVhdGUKKworICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gY3JlYXRlIHRoZSBtb2R1bGUgb2JqZWN0IGl0c2VsZi4KKyAgIFRoZSAqdmFsdWUqIHBvaW50ZXIgb2YgdGhpcyBzbG90IG11c3QgcG9pbnQgdG8gYSBmdW5jdGlvbiBvZiB0aGUgc2lnbmF0dXJlOgorCisgICAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIGNyZWF0ZV9tb2R1bGUoUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhIDpweTpjbGFzczpgfmltcG9ydGxpYi5tYWNoaW5lcnkuTW9kdWxlU3BlY2AKKyAgIGluc3RhbmNlLCBhcyBkZWZpbmVkIGluIDpQRVA6YDQ1MWAsIGFuZCB0aGUgbW9kdWxlIGRlZmluaXRpb24uCisgICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IG1vZHVsZSBvYmplY3QsIG9yIHNldCBhbiBlcnJvcgorICAgYW5kIHJldHVybiAqTlVMTCouCisKKyAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGtlcHQgbWluaW1hbC4gSW4gcGFydGljdWxhciwgaXQgc2hvdWxkIG5vdAorICAgY2FsbCBhcmJpdHJhcnkgUHl0aG9uIGNvZGUsIGFzIHRyeWluZyB0byBpbXBvcnQgdGhlIHNhbWUgbW9kdWxlIGFnYWluIG1heQorICAgcmVzdWx0IGluIGFuIGluZmluaXRlIGxvb3AuCisKKyAgIE11bHRpcGxlIGBgUHlfbW9kX2NyZWF0ZWBgIHNsb3RzIG1heSBub3QgYmUgc3BlY2lmaWVkIGluIG9uZSBtb2R1bGUKKyAgIGRlZmluaXRpb24uCisKKyAgIElmIGBgUHlfbW9kX2NyZWF0ZWBgIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHdpbGwgY3JlYXRlCisgICBhIG5vcm1hbCBtb2R1bGUgb2JqZWN0IHVzaW5nIDpjOmZ1bmM6YFB5TW9kdWxlX05ld2AuIFRoZSBuYW1lIGlzIHRha2VuIGZyb20KKyAgICpzcGVjKiwgbm90IHRoZSBkZWZpbml0aW9uLCB0byBhbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBkeW5hbWljYWxseSBhZGp1c3QKKyAgIHRvIHRoZWlyIHBsYWNlIGluIHRoZSBtb2R1bGUgaGllcmFyY2h5IGFuZCBiZSBpbXBvcnRlZCB1bmRlciBkaWZmZXJlbnQKKyAgIG5hbWVzIHRocm91Z2ggc3ltbGlua3MsIGFsbCB3aGlsZSBzaGFyaW5nIGEgc2luZ2xlIG1vZHVsZSBkZWZpbml0aW9uLgorCisgICBUaGVyZSBpcyBubyByZXF1aXJlbWVudCBmb3IgdGhlIHJldHVybmVkIG9iamVjdCB0byBiZSBhbiBpbnN0YW5jZSBvZgorICAgOmM6dHlwZTpgUHlNb2R1bGVfVHlwZWAuIEFueSB0eXBlIGNhbiBiZSB1c2VkLCBhcyBsb25nIGFzIGl0IHN1cHBvcnRzCisgICBzZXR0aW5nIGFuZCBnZXR0aW5nIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMuCisgICBIb3dldmVyLCBvbmx5IGBgUHlNb2R1bGVfVHlwZWBgIGluc3RhbmNlcyBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlCisgICBgYFB5TW9kdWxlRGVmYGAgaGFzIG5vbi0qTlVMTCogYGBtX21ldGhvZHNgYCwgYGBtX3RyYXZlcnNlYGAsIGBgbV9jbGVhcmBgLAorICAgYGBtX2ZyZWVgYDsgbm9uLXplcm8gYGBtX3NpemVgYDsgb3Igc2xvdHMgb3RoZXIgdGhhbiBgYFB5X21vZF9jcmVhdGVgYC4KKworLi4gYzp2YXI6OiBQeV9tb2RfZXhlYworCisgICBTcGVjaWZpZXMgYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB0byAqZXhlY3V0ZSogdGhlIG1vZHVsZS4KKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBleGVjdXRpbmcgdGhlIGNvZGUgb2YgYSBQeXRob24gbW9kdWxlOiB0eXBpY2FsbHksCisgICB0aGlzIGZ1bmN0aW9uIGFkZHMgY2xhc3NlcyBhbmQgY29uc3RhbnRzIHRvIHRoZSBtb2R1bGUuCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoZSBmdW5jdGlvbiBpczoKKworICAgLi4gYzpmdW5jdGlvbjo6IGludCBleGVjX21vZHVsZShQeU9iamVjdCogbW9kdWxlKQorCisgICBJZiBtdWx0aXBsZSBgYFB5X21vZF9leGVjYGAgc2xvdHMgYXJlIHNwZWNpZmllZCwgdGhleSBhcmUgcHJvY2Vzc2VkIGluIHRoZQorICAgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlICptX3Nsb3RzKiBhcnJheS4KKworU2VlIDpQRVA6YDQ4OWAgZm9yIG1vcmUgZGV0YWlscyBvbiBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbi4KKworTG93LWxldmVsIG1vZHVsZSBjcmVhdGlvbiBmdW5jdGlvbnMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGhvb2Qgd2hlbiB1c2luZyBtdWx0aS1waGFzZQoraW5pdGlhbGl6YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgZGlyZWN0bHksIGZvciBleGFtcGxlIHdoZW4gY3JlYXRpbmcgbW9kdWxlCitvYmplY3RzIGR5bmFtaWNhbGx5LiBOb3RlIHRoYXQgYm90aCBgYFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYGAgYW5kCitgYFB5TW9kdWxlX0V4ZWNEZWZgYCBtdXN0IGJlIGNhbGxlZCB0byBmdWxseSBpbml0aWFsaXplIGEgbW9kdWxlLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKiBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYyhQeU1vZHVsZURlZiAqZGVmLCBQeU9iamVjdCAqc3BlYykKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqIGFuZCB0aGUKKyAgIE1vZHVsZVNwZWMgKnNwZWMqLiAgVGhpcyBiZWhhdmVzIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyYAorICAgd2l0aCAqbW9kdWxlX2FwaV92ZXJzaW9uKiBzZXQgdG8gOmNvbnN0OmBQWVRIT05fQVBJX1ZFUlNJT05gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICogUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKFB5TW9kdWxlRGVmICpkZWYsIFB5T2JqZWN0ICpzcGVjLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQorCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKm1vZHVsZSogYW5kIHRoZQorICAgTW9kdWxlU3BlYyAqc3BlYyosIGFzc3VtaW5nIHRoZSBBUEkgdmVyc2lvbiAqbW9kdWxlX2FwaV92ZXJzaW9uKi4KKyAgIElmIHRoYXQgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciwKKyAgIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgIGlzIGVtaXR0ZWQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBNb3N0IHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNpbmcgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWNgCisgICAgICBpbnN0ZWFkOyBvbmx5IHVzZSB0aGlzIGlmIHlvdSBhcmUgc3VyZSB5b3UgbmVlZCBpdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfRXhlY0RlZihQeU9iamVjdCAqbW9kdWxlLCBQeU1vZHVsZURlZiAqZGVmKQorCisgICBQcm9jZXNzIGFueSBleGVjdXRpb24gc2xvdHMgKDpjOmRhdGE6YFB5X21vZF9leGVjYCkgZ2l2ZW4gaW4gKmRlZiouCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpkb2NzdHJpbmcpCisKKyAgIFNldCB0aGUgZG9jc3RyaW5nIGZvciAqbW9kdWxlKiB0byAqZG9jc3RyaW5nKi4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBjcmVhdGluZyBhIG1vZHVsZSBmcm9tCisgICBgYFB5TW9kdWxlRGVmYGAsIHVzaW5nIGVpdGhlciBgYFB5TW9kdWxlX0NyZWF0ZWBgIG9yCisgICBgYFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqbW9kdWxlLCBQeU1ldGhvZERlZiAqZnVuY3Rpb25zKQorCisgICBBZGQgdGhlIGZ1bmN0aW9ucyBmcm9tIHRoZSAqTlVMTCogdGVybWluYXRlZCAqZnVuY3Rpb25zKiBhcnJheSB0byAqbW9kdWxlKi4KKyAgIFJlZmVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1ldGhvZERlZmAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvbiBpbmRpdmlkdWFsCisgICBlbnRyaWVzIChkdWUgdG8gdGhlIGxhY2sgb2YgYSBzaGFyZWQgbW9kdWxlIG5hbWVzcGFjZSwgbW9kdWxlIGxldmVsCisgICAiZnVuY3Rpb25zIiBpbXBsZW1lbnRlZCBpbiBDIHR5cGljYWxseSByZWNlaXZlIHRoZSBtb2R1bGUgYXMgdGhlaXIgZmlyc3QKKyAgIHBhcmFtZXRlciwgbWFraW5nIHRoZW0gc2ltaWxhciB0byBpbnN0YW5jZSBtZXRob2RzIG9uIFB5dGhvbiBjbGFzc2VzKS4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBjcmVhdGluZyBhIG1vZHVsZSBmcm9tCisgICBgYFB5TW9kdWxlRGVmYGAsIHVzaW5nIGVpdGhlciBgYFB5TW9kdWxlX0NyZWF0ZWBgIG9yCisgICBgYFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitTdXBwb3J0IGZ1bmN0aW9ucworLi4uLi4uLi4uLi4uLi4uLi4KKworVGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiAoaWYgdXNpbmcgc2luZ2xlIHBoYXNlIGluaXRpYWxpemF0aW9uKSBvcgorYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhIG1vZHVsZSBleGVjdXRpb24gc2xvdCAoaWYgdXNpbmcgbXVsdGktcGhhc2UKK2luaXRpYWxpemF0aW9uKSwgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBoZWxwIGluaXRpYWxpemUgdGhlIG1vZHVsZQorc3RhdGU6CiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKIApAQCAtMjM2LDcgKzQxMCw2IEBACiAgICBiZSB1c2VkIGZyb20gdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAgVGhpcyBzdGVhbHMgYSByZWZlcmVuY2UgdG8KICAgICp2YWx1ZSouICBSZXR1cm4gYGAtMWBgIG9uIGVycm9yLCBgYDBgYCBvbiBzdWNjZXNzLgogCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqbmFtZSwgbG9uZyB2YWx1ZSkKIAogICAgQWRkIGFuIGludGVnZXIgY29uc3RhbnQgdG8gKm1vZHVsZSogYXMgKm5hbWUqLiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBjYW4gYmUKQEAgLTI0OCw3ICs0MjEsNyBAQAogCiAgICBBZGQgYSBzdHJpbmcgY29uc3RhbnQgdG8gKm1vZHVsZSogYXMgKm5hbWUqLiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBjYW4gYmUKICAgIHVzZWQgZnJvbSB0aGUgbW9kdWxlJ3MgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uICBUaGUgc3RyaW5nICp2YWx1ZSogbXVzdCBiZQotICAgbnVsbC10ZXJtaW5hdGVkLiAgUmV0dXJuIGBgLTFgYCBvbiBlcnJvciwgYGAwYGAgb24gc3VjY2Vzcy4KKyAgICpOVUxMKi10ZXJtaW5hdGVkLiAgUmV0dXJuIGBgLTFgYCBvbiBlcnJvciwgYGAwYGAgb24gc3VjY2Vzcy4KIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZEludE1hY3JvKFB5T2JqZWN0ICptb2R1bGUsIG1hY3JvKQpAQCAtMjYyLDMgKzQzNSwzNiBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeU1vZHVsZV9BZGRTdHJpbmdNYWNybyhQeU9iamVjdCAqbW9kdWxlLCBtYWNybykKIAogICAgQWRkIGEgc3RyaW5nIGNvbnN0YW50IHRvICptb2R1bGUqLgorCisKK01vZHVsZSBsb29rdXAKK15eXl5eXl5eXl5eXl4KKworU2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uIGNyZWF0ZXMgc2luZ2xldG9uIG1vZHVsZXMgdGhhdCBjYW4gYmUgbG9va2VkIHVwCitpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBpbnRlcnByZXRlci4gVGhpcyBhbGxvd3MgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUKK3JldHJpZXZlZCBsYXRlciB3aXRoIG9ubHkgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBkZWZpbml0aW9uLgorCitUaGVzZSBmdW5jdGlvbnMgd2lsbCBub3Qgd29yayBvbiBtb2R1bGVzIGNyZWF0ZWQgdXNpbmcgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sCitzaW5jZSBtdWx0aXBsZSBzdWNoIG1vZHVsZXMgY2FuIGJlIGNyZWF0ZWQgZnJvbSBhIHNpbmdsZSBkZWZpbml0aW9uLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5U3RhdGVfRmluZE1vZHVsZShQeU1vZHVsZURlZiAqZGVmKQorCisgICBSZXR1cm5zIHRoZSBtb2R1bGUgb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQgZnJvbSAqZGVmKiBmb3IgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuCisgICBUaGlzIG1ldGhvZCByZXF1aXJlcyB0aGF0IHRoZSBtb2R1bGUgb2JqZWN0IGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB3aXRoCisgICA6YzpmdW5jOmBQeVN0YXRlX0FkZE1vZHVsZWAgYmVmb3JlaGFuZC4gSW4gY2FzZSB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0IGlzIG5vdAorICAgZm91bmQgb3IgaGFzIG5vdCBiZWVuIGF0dGFjaGVkIHRvIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB5ZXQsIGl0IHJldHVybnMgKk5VTEwqLgorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIEF0dGFjaGVzIHRoZSBtb2R1bGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdGhlIGludGVycHJldGVyIHN0YXRlLiBUaGlzIGFsbG93cworICAgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUgYWNjZXNzaWJsZSB2aWEgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KKworICAgT25seSBlZmZlY3RpdmUgb24gbW9kdWxlcyBjcmVhdGVkIHVzaW5nIHNpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL251bWJlci5yc3QgYi9Eb2MvYy1hcGkvbnVtYmVyLnJzdAppbmRleCAyMTk1MWMzLi45YmNiNjQ5IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbnVtYmVyLnJzdAorKysgYi9Eb2MvYy1hcGkvbnVtYmVyLnJzdApAQCAtMzAsNiArMzAsMTQgQEAKICAgIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbiBgYG8xICogbzJgYC4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQorCisgICBSZXR1cm5zIHRoZSByZXN1bHQgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIG9uICpvMSogYW5kICpvMiosIG9yICpOVUxMKiBvbgorICAgZmFpbHVyZS4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uIGBgbzEgQCBvMmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX0Zsb29yRGl2aWRlKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQogCiAgICBSZXR1cm4gdGhlIGZsb29yIG9mICpvMSogZGl2aWRlZCBieSAqbzIqLCBvciAqTlVMTCogb24gZmFpbHVyZS4gIFRoaXMgaXMKQEAgLTE0Niw2ICsxNTQsMTUgQEAKICAgIHRoZSBQeXRob24gc3RhdGVtZW50IGBgbzEgKj0gbzJgYC4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX0luUGxhY2VNYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMikKKworICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvbiAqbzEqIGFuZCAqbzIqLCBvciAqTlVMTCogb24KKyAgIGZhaWx1cmUuICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgKmluLXBsYWNlKiB3aGVuICpvMSogc3VwcG9ydHMgaXQuICBUaGlzIGlzCisgICB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudCBgYG8xIEA9IG8yYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQogCiAgICBSZXR1cm5zIHRoZSBtYXRoZW1hdGljYWwgZmxvb3Igb2YgZGl2aWRpbmcgKm8xKiBieSAqbzIqLCBvciAqTlVMTCogb24gZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zeXMucnN0IGIvRG9jL2MtYXBpL3N5cy5yc3QKaW5kZXggN2NlYWQwNy4uM2Q4M2IyNyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N5cy5yc3QKKysrIGIvRG9jL2MtYXBpL3N5cy5yc3QKQEAgLTQ3LDYgKzQ3LDYwIEBACiAgICBub3QgY2FsbCB0aG9zZSBmdW5jdGlvbnMgZGlyZWN0bHkhICA6Yzp0eXBlOmBQeU9TX3NpZ2hhbmRsZXJfdGAgaXMgYSB0eXBlZGVmCiAgICBhbGlhcyBmb3IgOmM6dHlwZTpgdm9pZCAoXCopKGludClgLgogCisuLiBjOmZ1bmN0aW9uOjogd2NoYXJfdCogUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQorCisgICBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUgOnJlZjpgc3Vycm9nYXRlZXNjYXBlCisgICBlcnJvciBoYW5kbGVyIDxzdXJyb2dhdGVlc2NhcGU+YDogdW5kZWNvZGFibGUgYnl0ZXMgYXJlIGRlY29kZWQgYXMKKyAgIGNoYXJhY3RlcnMgaW4gcmFuZ2UgVStEQzgwLi5VK0RDRkYuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhCisgICBzdXJyb2dhdGUgY2hhcmFjdGVyLCBlc2NhcGUgdGhlIGJ5dGVzIHVzaW5nIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKKyAgIGhhbmRsZXIgaW5zdGVhZCBvZiBkZWNvZGluZyB0aGVtLgorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZywgdXNlCisgICA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYCB0byBmcmVlIHRoZSBtZW1vcnkuIElmIHNpemUgaXMgbm90IGBgTlVMTGBgLCB3cml0ZQorICAgdGhlIG51bWJlciBvZiB3aWRlIGNoYXJhY3RlcnMgZXhjbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpbnRvIGBgKnNpemVgYAorCisgICBSZXR1cm4gYGBOVUxMYGAgb24gZGVjb2RpbmcgZXJyb3Igb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuIElmICpzaXplKiBpcworICAgbm90IGBgTlVMTGBgLCBgYCpzaXplYGAgaXMgc2V0IHRvIGBgKHNpemVfdCktMWBgIG9uIG1lbW9yeSBlcnJvciBvciBzZXQgdG8KKyAgIGBgKHNpemVfdCktMmBgIG9uIGRlY29kaW5nIGVycm9yLgorCisgICBEZWNvZGluZyBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCisgICBsaWJyYXJ5LgorCisgICBVc2UgdGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24gdG8gZW5jb2RlIHRoZSBjaGFyYWN0ZXIgc3RyaW5nCisgICBiYWNrIHRvIGEgYnl0ZSBzdHJpbmcuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGFuZAorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemVgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5X0VuY29kZUxvY2FsZShjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKKworICAgRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKKyAgIDpyZWY6YHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIDxzdXJyb2dhdGVlc2NhcGU+YDogc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgIGluIHRoZSByYW5nZSBVK0RDODAuLlUrRENGRiBhcmUgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYuCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBzdHJpbmcsIHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYAorICAgdG8gZnJlZSB0aGUgbWVtb3J5LiBSZXR1cm4gYGBOVUxMYGAgb24gZW5jb2RpbmcgZXJyb3Igb3IgbWVtb3J5IGFsbG9jYXRpb24KKyAgIGVycm9yCisKKyAgIElmIGVycm9yX3BvcyBpcyBub3QgYGBOVUxMYGAsIGBgKmVycm9yX3Bvc2BgIGlzIHNldCB0byB0aGUgaW5kZXggb2YgdGhlCisgICBpbnZhbGlkIGNoYXJhY3RlciBvbiBlbmNvZGluZyBlcnJvciwgb3Igc2V0IHRvIGBgKHNpemVfdCktMWBgIG90aGVyd2lzZS4KKworICAgVXNlIHRoZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIGZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgYnl0ZXMgc3RyaW5nIGJhY2sKKyAgIHRvIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVGhlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIGFuZAorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBfc3lzdGVtZnVuY3Rpb25zOgogCiBTeXN0ZW0gRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKaW5kZXggNWRlOGJlMC4uYjUxMTNhYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdApAQCAtMjIwLDkgKzIyMCwxNCBAQAogICAgdGhlIHN1YnR5cGUncyA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfc2V0YXR0cmAgYW5kIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9zZXRhdHRyb2AgYXJlIGJvdGggKk5VTEwqLgogCiAKLS4uIGM6bWVtYmVyOjogdm9pZCogUHlUeXBlT2JqZWN0LnRwX3Jlc2VydmVkCisuLiBjOm1lbWJlcjo6IFB5QXN5bmNNZXRob2RzKiB0cF9hc19hc3luYwogCi0gICBSZXNlcnZlZCBzbG90LCBmb3JtZXJseSBrbm93biBhcyB0cF9jb21wYXJlLgorICAgUG9pbnRlciB0byBhbiBhZGRpdGlvbmFsIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGZpZWxkcyByZWxldmFudCBvbmx5IHRvCisgICBvYmplY3RzIHdoaWNoIGltcGxlbWVudCA6dGVybTpgYXdhaXRhYmxlYCBhbmQgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAKKyAgIHByb3RvY29scyBhdCB0aGUgQy1sZXZlbC4gIFNlZSA6cmVmOmBhc3luYy1zdHJ1Y3RzYCBmb3IgZGV0YWlscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBGb3JtZXJseSBrbm93biBhcyBgYHRwX2NvbXBhcmVgYCBhbmQgYGB0cF9yZXNlcnZlZGBgLgogCiAKIC4uIGM6bWVtYmVyOjogcmVwcmZ1bmMgUHlUeXBlT2JqZWN0LnRwX3JlcHIKQEAgLTExMTgsNiArMTEyMyw5IEBACiAgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7CiAKICAgICAgICAgICAgIHVuYXJ5ZnVuYyBuYl9pbmRleDsKKworICAgICAgICAgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5OwogICAgICAgIH0gUHlOdW1iZXJNZXRob2RzOwogCiAgICAuLiBub3RlOjoKQEAgLTEzMjksMyArMTMzNyw1OCBAQAogCiAgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAogICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KKworCisuLiBfYXN5bmMtc3RydWN0czoKKworCitBc3luYyBPYmplY3QgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gc2VjdGlvbmF1dGhvcjo6IFl1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzp0eXBlOjogUHlBc3luY01ldGhvZHMKKworICAgVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgcG9pbnRlcnMgdG8gdGhlIGZ1bmN0aW9ucyByZXF1aXJlZCB0byBpbXBsZW1lbnQKKyAgIDp0ZXJtOmBhd2FpdGFibGVgIGFuZCA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBvYmplY3RzLgorCisgICBIZXJlIGlzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbjo6CisKKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FpdGVyOworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FuZXh0OworICAgICAgICB9IFB5QXN5bmNNZXRob2RzOworCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9hd2FpdAorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYXdhaXQoUHlPYmplY3QgKnNlbGYpCisKKyAgIFRoZSByZXR1cm5lZCBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYXRvciwgaS5lLiA6YzpmdW5jOmBQeUl0ZXJfQ2hlY2tgIG11c3QKKyAgIHJldHVybiBgYDFgYCBmb3IgaXQuCisKKyAgIFRoaXMgc2xvdCBtYXkgYmUgc2V0IHRvICpOVUxMKiBpZiBhbiBvYmplY3QgaXMgbm90IGFuIDp0ZXJtOmBhd2FpdGFibGVgLgorCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9haXRlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYWl0ZXIoUHlPYmplY3QgKnNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdC4gIFNlZSA6bWV0aDpgX19hbmV4dF9fYCBmb3IgZGV0YWlscy4KKworICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqIGlmIGFuIG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQKKyAgIGFzeW5jaHJvbm91cyBpdGVyYXRpb24gcHJvdG9jb2wuCisKKy4uIGM6bWVtYmVyOjogdW5hcnlmdW5jIFB5QXN5bmNNZXRob2RzLmFtX2FuZXh0CisKKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgIFB5T2JqZWN0ICphbV9hbmV4dChQeU9iamVjdCAqc2VsZikKKworICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LiAgU2VlIDptZXRoOmBfX2FuZXh0X19gIGZvciBkZXRhaWxzLgorICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGY3ZTk5ZDYuLjJlZWFkYjUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTc2NSwxMSArNzY1LDEzIEBACiAgICAqZXJyb3JzKiBpcyBgYE5VTExgYC4gICpzdHIqIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQKICAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC03OTAsMTEgKzc5MiwxMyBAQAogICAgKmVycm9ycyogaXMgYGBOVUxMYGAuIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gKnN0ciogY2Fubm90CiAgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bworICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bwotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC04MzksMTIgKzg0MywxNCBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEgc3RyaW5nCisgICBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKLSAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCi0gICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgpAQCAtODc0LDEyICs4ODAsMTMgQEAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhIHN0cmluZworICAgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZW5jb2RlIGEKLSAgICAgIHN0cmluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQotICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9jb25mLnB5IGIvRG9jL2NvbmYucHkKaW5kZXggZjgwM2RlMi4uMjhkZDgwZiAxMDA2NDQKLS0tIGEvRG9jL2NvbmYucHkKKysrIGIvRG9jL2NvbmYucHkKQEAgLTM2LDYgKzM2LDkgQEAKICMgUmVxdWlyZSBTcGhpbnggMS4yIGZvciBidWlsZC4KIG5lZWRzX3NwaGlueCA9ICcxLjInCiAKKyMgSWdub3JlIGFueSAucnN0IGZpbGVzIGluIHRoZSB2ZW52LyBkaXJlY3RvcnkuCitleGNsdWRlX3BhdHRlcm5zID0gWyd2ZW52LyonXQorCiAKICMgT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IDYwMjU2MTcuLmUzODgxOTUgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtMzQ5LDYgKzM0OSwxMSBAQAogUHlFcnJfRm9ybWF0OmNvbnN0IGNoYXIqOmZvcm1hdDo6CiBQeUVycl9Gb3JtYXQ6Oi4uLjo6CiAKK1B5RXJyX0Zvcm1hdFY6UHlPYmplY3QqOjpudWxsOgorUHlFcnJfRm9ybWF0VjpQeU9iamVjdCo6ZXhjZXB0aW9uOisxOgorUHlFcnJfRm9ybWF0Vjpjb25zdCBjaGFyKjpmb3JtYXQ6OgorUHlFcnJfRm9ybWF0Vjp2YV9saXN0OnZhcmdzOjoKKwogUHlFcnJfV2FybkV4OmludDo6OgogUHlFcnJfV2FybkV4OlB5T2JqZWN0KjpjYXRlZ29yeTowOgogUHlFcnJfV2FybkV4OmNvbnN0IGNoYXIqOm1lc3NhZ2U6OgpAQCAtNDg2LDYgKzQ5MSwxMiBAQAogUHlHZW5fTmV3OlB5T2JqZWN0Kjo6KzE6CiBQeUdlbl9OZXc6UHlGcmFtZU9iamVjdCo6ZnJhbWU6MDoKIAorUHlHZW5fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0Kjo6KzE6CitQeUdlbl9OZXdXaXRoUXVhbE5hbWU6UHlGcmFtZU9iamVjdCo6ZnJhbWU6MDoKKworUHlDb3JvX05ldzpQeU9iamVjdCo6OisxOgorUHlDb3JvX05ldzpQeUZyYW1lT2JqZWN0KjpmcmFtZTowOgorCiBQeV9Jbml0TW9kdWxlOlB5T2JqZWN0Kjo6MDoKIFB5X0luaXRNb2R1bGU6Y29uc3QgY2hhcio6bmFtZTo6CiBQeV9Jbml0TW9kdWxlOlB5TWV0aG9kRGVmW106bWV0aG9kczo6CmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKaW5kZXggNmViODdjYi4uMzVhYTExNCAxMDA2NDQKLS0tIGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdApAQCAtODY4LDIzICs4NjgsMzEgQEAKIAogICAgQ3JlYXRlIGFuIGFyY2hpdmUgZmlsZSAoZWcuIGBgemlwYGAgb3IgYGB0YXJgYCkuICAqYmFzZV9uYW1lKiAgaXMgdGhlIG5hbWUgb2YKICAgIHRoZSBmaWxlIHRvIGNyZWF0ZSwgbWludXMgYW55IGZvcm1hdC1zcGVjaWZpYyBleHRlbnNpb247ICAqZm9ybWF0KiBpcyB0aGUKLSAgIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgYGB6aXBgYCwgYGB0YXJgYCwgIGBgenRhcmBgLCBvciBgYGd6dGFyYGAuICpyb290X2RpciogaXMKLSAgIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGFyY2hpdmU7IGllLiB3ZSB0eXBpY2FsbHkKLSAgIGBgY2hkaXJgYCBpbnRvICpyb290X2RpciogYmVmb3JlICBjcmVhdGluZyB0aGUgYXJjaGl2ZS4gICpiYXNlX2RpciogaXMgdGhlCi0gICBkaXJlY3Rvcnkgd2hlcmUgd2Ugc3RhcnQgIGFyY2hpdmluZyBmcm9tOyBpZS4gKmJhc2VfZGlyKiB3aWxsIGJlIHRoZSBjb21tb24KLSAgIHByZWZpeCBvZiBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZSBhcmNoaXZlLiAgKnJvb3RfZGlyKiBhbmQgKmJhc2VfZGlyKgotICAgYm90aCBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFyY2hpdmUgZmlsZS4KKyAgIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgYGB6aXBgYCwgYGB0YXJgYCwgYGBnenRhcmBgLCBgYGJ6dGFyYGAsIGBgeHp0YXJgYCwgb3IKKyAgIGBgenRhcmBgLiAqcm9vdF9kaXIqIGlzIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCisgICBhcmNoaXZlOyBpZS4gd2UgdHlwaWNhbGx5IGBgY2hkaXJgYCBpbnRvICpyb290X2RpciogYmVmb3JlICBjcmVhdGluZyB0aGUKKyAgIGFyY2hpdmUuICAqYmFzZV9kaXIqIGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgd2Ugc3RhcnQgIGFyY2hpdmluZyBmcm9tOyBpZS4KKyAgICpiYXNlX2Rpciogd2lsbCBiZSB0aGUgY29tbW9uIHByZWZpeCBvZiBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZQorICAgYXJjaGl2ZS4gICpyb290X2RpciogYW5kICpiYXNlX2RpciogYm90aCBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFyY2hpdmUgZmlsZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgeHp0YXJgYCBmb3JtYXQuCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX3RhcmJhbGwoYmFzZV9uYW1lLCBiYXNlX2RpclssIGNvbXByZXNzPSdnemlwJywgdmVyYm9zZT0wLCBkcnlfcnVuPTBdKQogCiAgICAnQ3JlYXRlIGFuIChvcHRpb25hbCBjb21wcmVzc2VkKSBhcmNoaXZlIGFzIGEgdGFyIGZpbGUgZnJvbSBhbGwgZmlsZXMgaW4gYW5kCi0gICB1bmRlciAqYmFzZV9kaXIqLiAqY29tcHJlc3MqIG11c3QgYmUgYGAnZ3ppcCdgYCAodGhlIGRlZmF1bHQpLCAgYGAnY29tcHJlc3MnYGAsCi0gICBgYCdiemlwMidgYCwgb3IgYGBOb25lYGAuICBCb3RoIDpwcm9ncmFtOmB0YXJgIGFuZCB0aGUgY29tcHJlc3Npb24gdXRpbGl0eSBuYW1lZAotICAgYnkgKmNvbXByZXNzKiBtdXN0IGJlIG9uIHRoZSAgZGVmYXVsdCBwcm9ncmFtIHNlYXJjaCBwYXRoLCBzbyB0aGlzIGlzIHByb2JhYmx5Ci0gICBVbml4LXNwZWNpZmljLiAgVGhlICBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCA6ZmlsZTpgYmFzZV9kaXIudGFyYCwKLSAgIHBvc3NpYmx5IHBsdXMgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoOmZpbGU6YC5nemAsIDpmaWxlOmAuYnoyYAotICAgb3IgOmZpbGU6YC5aYCkuICBSZXR1cm4gdGhlIG91dHB1dCBmaWxlbmFtZS4KKyAgIHVuZGVyICpiYXNlX2RpciouICpjb21wcmVzcyogbXVzdCBiZSBgYCdnemlwJ2BgICh0aGUgZGVmYXVsdCksCisgICBgYCdiemlwMidgYCwgYGAneHonYGAsIGBgJ2NvbXByZXNzJ2BgLCBvciBgYE5vbmVgYC4gIEZvciB0aGUgYGAnY29tcHJlc3MnYGAKKyAgIG1ldGhvZCB0aGUgY29tcHJlc3Npb24gdXRpbGl0eSBuYW1lZCBieSA6cHJvZ3JhbTpgY29tcHJlc3NgIG11c3QgYmUgb24gdGhlCisgICBkZWZhdWx0IHByb2dyYW0gc2VhcmNoIHBhdGgsIHNvIHRoaXMgaXMgcHJvYmFibHkgVW5peC1zcGVjaWZpYy4gIFRoZSBvdXRwdXQKKyAgIHRhciBmaWxlIHdpbGwgYmUgbmFtZWQgOmZpbGU6YGJhc2VfZGlyLnRhcmAsIHBvc3NpYmx5IHBsdXMgdGhlIGFwcHJvcHJpYXRlCisgICBjb21wcmVzc2lvbiBleHRlbnNpb24gKGBgLmd6YGAsIGBgLmJ6MmBgLCBgYC54emBgIG9yIGBgLlpgYCkuICBSZXR1cm4gdGhlCisgICBvdXRwdXQgZmlsZW5hbWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYHh6YGAgY29tcHJlc3Npb24uCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCBiYXNlX2RpclssIHZlcmJvc2U9MCwgZHJ5X3J1bj0wXSkKQEAgLTExOTMsMTIgKzEyMDEsMTIgQEAKIAogLi4gZnVuY3Rpb246OiBieXRlX2NvbXBpbGUocHlfZmlsZXNbLCBvcHRpbWl6ZT0wLCBmb3JjZT0wLCBwcmVmaXg9Tm9uZSwgYmFzZV9kaXI9Tm9uZSwgdmVyYm9zZT0xLCBkcnlfcnVuPTAsIGRpcmVjdD1Ob25lXSkKIAotICAgQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIGVpdGhlciA6ZmlsZTpgLnB5Y2Agb3IKLSAgIDpmaWxlOmAucHlvYCBmaWxlcyBpbiBhIDpmaWxlOmBfX3B5Y2FjaGVfX2Agc3ViZGlyZWN0b3J5IChzZWUgOnBlcDpgMzE0N2ApLgorICAgQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIDpmaWxlOmAucHljYCBmaWxlcyBpbiBhCisgICA6ZmlsZTpgX19weWNhY2hlX19gIHN1YmRpcmVjdG9yeSAoc2VlIDpwZXA6YDMxNDdgIGFuZCA6cGVwOmA0ODhgKS4KICAgICpweV9maWxlcyogaXMgYSBsaXN0IG9mIGZpbGVzIHRvIGNvbXBpbGU7IGFueSBmaWxlcyB0aGF0IGRvbid0IGVuZCBpbgogICAgOmZpbGU6YC5weWAgYXJlIHNpbGVudGx5IHNraXBwZWQuICAqb3B0aW1pemUqIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKLSAgICogYGAwYGAgLSBkb24ndCBvcHRpbWl6ZSAoZ2VuZXJhdGUgOmZpbGU6YC5weWNgKQorICAgKiBgYDBgYCAtIGRvbid0IG9wdGltaXplCiAgICAqIGBgMWBgIC0gbm9ybWFsIG9wdGltaXphdGlvbiAobGlrZSBgYHB5dGhvbiAtT2BgKQogICAgKiBgYDJgYCAtIGV4dHJhIG9wdGltaXphdGlvbiAobGlrZSBgYHB5dGhvbiAtT09gYCkKIApAQCAtMTIyMiwxMCArMTIzMCwxMyBAQAogICAgZG9pbmcsIGxlYXZlIGl0IHNldCB0byBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIuMwotICAgICAgQ3JlYXRlIGBgLnB5Y2BgIG9yIGBgLnB5b2BgIGZpbGVzIHdpdGggYW4gOmZ1bmM6YGltcG9ydCBtYWdpYyB0YWcKKyAgICAgIENyZWF0ZSBgYC5weWNgYCBmaWxlcyB3aXRoIGFuIDpmdW5jOmBpbXBvcnQgbWFnaWMgdGFnCiAgICAgICA8aW1wLmdldF90YWc+YCBpbiB0aGVpciBuYW1lLCBpbiBhIDpmaWxlOmBfX3B5Y2FjaGVfX2Agc3ViZGlyZWN0b3J5CiAgICAgICBpbnN0ZWFkIG9mIGZpbGVzIHdpdGhvdXQgdGFnIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQ3JlYXRlIGBgLnB5Y2BgIGZpbGVzIGFjY29yZGluZyB0byA6cGVwOmA0ODhgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmZjODIyX2VzY2FwZShoZWFkZXIpCiAKZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdCBiL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdAppbmRleCBjNTgyN2I2Li41MjNkMWUwIDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9idWlsdGRpc3QucnN0CkBAIC03MiwxMyArNzIsMTkgQEAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IEZvcm1hdCAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfAogKz09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PSsKLXwgYGBnenRhcmBgICAgfCBnemlwcGVkIHRhciBmaWxlICAgICAgICAgICAgIHwgKDEpLCgzKSB8Cit8IGBgZ3p0YXJgYCAgIHwgZ3ppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8IFwoMSkgICAgfAogfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5nemApICAgICAgICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCit8IGBgYnp0YXJgYCAgIHwgYnppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5iejJgKSAgICAgICAgICAgfCAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCit8IGBgeHp0YXJgYCAgIHwgeHppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci54emApICAgICAgICAgICAgfCAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IGBgenRhcmBgICAgIHwgY29tcHJlc3NlZCB0YXIgZmlsZSAgICAgICAgICB8IFwoMykgICAgfAogfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5aYCkgICAgICAgICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCi18IGBgdGFyYGAgICAgIHwgdGFyIGZpbGUgKDpmaWxlOmAudGFyYCkgICAgICB8IFwoMykgICAgfAorfCBgYHRhcmBgICAgICB8IHRhciBmaWxlICg6ZmlsZTpgLnRhcmApICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IGBgemlwYGAgICAgIHwgemlwIGZpbGUgKDpmaWxlOmAuemlwYCkgICAgICB8ICgyKSwoNCkgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKQEAgLTk0LDYgKzEwMCw5IEBACiB8IGBgbXNpYGAgICAgIHwgTWljcm9zb2Z0IEluc3RhbGxlci4gICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYHh6dGFyYGAgZm9ybWF0LgorCiAKIE5vdGVzOgogCkBAIC0xMDQsOCArMTEzLDcgQEAKICAgIGRlZmF1bHQgb24gV2luZG93cwogCiAoMykKLSAgIHJlcXVpcmVzIGV4dGVybmFsIHV0aWxpdGllczogOnByb2dyYW06YHRhcmAgYW5kIHBvc3NpYmx5IG9uZSBvZiA6cHJvZ3JhbTpgZ3ppcGAsCi0gICA6cHJvZ3JhbTpgYnppcDJgLCBvciA6cHJvZ3JhbTpgY29tcHJlc3NgCisgICByZXF1aXJlcyBleHRlcm5hbCA6cHJvZ3JhbTpgY29tcHJlc3NgIHV0aWxpdHkuCiAKICg0KQogICAgcmVxdWlyZXMgZWl0aGVyIGV4dGVybmFsIDpwcm9ncmFtOmB6aXBgIHV0aWxpdHkgb3IgOm1vZDpgemlwZmlsZWAgbW9kdWxlIChwYXJ0CkBAIC0xMTksMjEgKzEyNywyMiBAQAogb3B0aW9uOyB5b3UgY2FuIGFsc28gdXNlIHRoZSBjb21tYW5kIHRoYXQgZGlyZWN0bHkgaW1wbGVtZW50cyB0aGUgZm9ybWF0IHlvdSdyZQogaW50ZXJlc3RlZCBpbi4gIFNvbWUgb2YgdGhlc2UgOmNvbW1hbmQ6YGJkaXN0YCAic3ViLWNvbW1hbmRzIiBhY3R1YWxseSBnZW5lcmF0ZQogc2V2ZXJhbCBzaW1pbGFyIGZvcm1hdHM7IGZvciBpbnN0YW5jZSwgdGhlIDpjb21tYW5kOmBiZGlzdF9kdW1iYCBjb21tYW5kCi1nZW5lcmF0ZXMgYWxsIHRoZSAiZHVtYiIgYXJjaGl2ZSBmb3JtYXRzIChgYHRhcmBgLCBgYHp0YXJgYCwgYGBnenRhcmBgLCBhbmQKLWBgemlwYGApLCBhbmQgOmNvbW1hbmQ6YGJkaXN0X3JwbWAgZ2VuZXJhdGVzIGJvdGggYmluYXJ5IGFuZCBzb3VyY2UgUlBNcy4gIFRoZQotOmNvbW1hbmQ6YGJkaXN0YCBzdWItY29tbWFuZHMsIGFuZCB0aGUgZm9ybWF0cyBnZW5lcmF0ZWQgYnkgZWFjaCwgYXJlOgorZ2VuZXJhdGVzIGFsbCB0aGUgImR1bWIiIGFyY2hpdmUgZm9ybWF0cyAoYGB0YXJgYCwgYGBnenRhcmBgLCBgYGJ6dGFyYGAsCitgYHh6dGFyYGAsIGBgenRhcmBgLCBhbmQgYGB6aXBgYCksIGFuZCA6Y29tbWFuZDpgYmRpc3RfcnBtYCBnZW5lcmF0ZXMgYm90aAorYmluYXJ5IGFuZCBzb3VyY2UgUlBNcy4gIFRoZSA6Y29tbWFuZDpgYmRpc3RgIHN1Yi1jb21tYW5kcywgYW5kIHRoZSBmb3JtYXRzCitnZW5lcmF0ZWQgYnkgZWFjaCwgYXJlOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IENvbW1hbmQgICAgICAgICAgICAgICAgICB8IEZvcm1hdHMgICAgICAgICAgICAgICB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb21tYW5kOmBiZGlzdF9kdW1iYCAgICB8IHRhciwgenRhciwgZ3p0YXIsIHppcCB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF9ycG1gICAgICB8IHJwbSwgc3JwbSAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF93aW5pbnN0YCB8IHdpbmluc3QgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF9tc2lgICAgICB8IG1zaSAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tbWFuZCAgICAgICAgICAgICAgICAgIHwgRm9ybWF0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IDpjb21tYW5kOmBiZGlzdF9kdW1iYCAgICB8IHRhciwgZ3p0YXIsIGJ6dGFyLCB4enRhciwgenRhciwgemlwIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29tbWFuZDpgYmRpc3RfcnBtYCAgICAgfCBycG0sIHNycG0gICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbW1hbmQ6YGJkaXN0X3dpbmluc3RgIHwgd2luaW5zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb21tYW5kOmBiZGlzdF9tc2lgICAgICB8IG1zaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGdpdmUgZGV0YWlscyBvbiB0aGUgaW5kaXZpZHVhbCA6Y29tbWFuZDpgYmRpc3RfXCpgCiBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdAppbmRleCAwZWNlNjQ2Li44ZjQ2YmQ3IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0xNTYsOCArMTU2LDggQEAKIAogcHVyZSBQeXRob24gbW9kdWxlCiAgICBhIG1vZHVsZSB3cml0dGVuIGluIFB5dGhvbiBhbmQgY29udGFpbmVkIGluIGEgc2luZ2xlIDpmaWxlOmAucHlgIGZpbGUgKGFuZAotICAgcG9zc2libHkgYXNzb2NpYXRlZCA6ZmlsZTpgLnB5Y2AgYW5kL29yIDpmaWxlOmAucHlvYCBmaWxlcykuICBTb21ldGltZXMgcmVmZXJyZWQKLSAgIHRvIGFzIGEgInB1cmUgbW9kdWxlLiIKKyAgIHBvc3NpYmx5IGFzc29jaWF0ZWQgOmZpbGU6YC5weWNgIGZpbGVzKS4gIFNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhCisgICAicHVyZSBtb2R1bGUuIgogCiBleHRlbnNpb24gbW9kdWxlCiAgICBhIG1vZHVsZSB3cml0dGVuIGluIHRoZSBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugb2YgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbjogQy9DKysKQEAgLTIxMCw1ICsyMTAsMyBAQAogICAgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91ciBzb3VyY2UgdHJlZSAob3IgIHNvdXJjZSBkaXN0cmlidXRpb24pOyB0aGUKICAgIGRpcmVjdG9yeSB3aGVyZSA6ZmlsZTpgc2V0dXAucHlgIGV4aXN0cy4gIEdlbmVyYWxseSAgOmZpbGU6YHNldHVwLnB5YCB3aWxsIGJlCiAgICBydW4gZnJvbSB0aGlzIGRpcmVjdG9yeS4KLQotCmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0IGIvRG9jL2Rpc3R1dGlscy9zb3VyY2VkaXN0LnJzdAppbmRleCBiOWYwY2M4Li5mYjcwNTE0IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvc291cmNlZGlzdC5yc3QKQEAgLTMyLDEyICszMiwxOCBAQAogfCBgYGJ6dGFyYGAgfCBiemlwMidlZCB0YXIgZmlsZSAgICAgICB8ICAgICAgICAgfAogfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuYnoyYCkgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKworfCBgYHh6dGFyYGAgfCB4eidlZCB0YXIgZmlsZSAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIueHpgKSAgICAgICB8ICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHp0YXJgYCAgfCBjb21wcmVzc2VkIHRhciBmaWxlICAgICB8IFwoNCkgICAgfAogfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuWmApICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHRhcmBgICAgfCB0YXIgZmlsZSAoOmZpbGU6YC50YXJgKSB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgeHp0YXJgYCBmb3JtYXQuCisKIE5vdGVzOgogCiAoMSkKQEAgLTU0LDcgKzYwLDcgQEAKICAgIHJlcXVpcmVzIHRoZSA6cHJvZ3JhbTpgY29tcHJlc3NgIHByb2dyYW0uIE5vdGljZSB0aGF0IHRoaXMgZm9ybWF0IGlzIG5vdwogICAgcGVuZGluZyBmb3IgZGVwcmVjYXRpb24gYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbi4KIAotV2hlbiB1c2luZyBhbnkgYGB0YXJgYCBmb3JtYXQgKGBgZ3p0YXJgYCwgYGBienRhcmBgLCBgYHp0YXJgYCBvcgorV2hlbiB1c2luZyBhbnkgYGB0YXJgYCBmb3JtYXQgKGBgZ3p0YXJgYCwgYGBienRhcmBgLCBgYHh6dGFyYGAsIGBgenRhcmBgIG9yCiBgYHRhcmBgKSwgdW5kZXIgVW5peCB5b3UgY2FuIHNwZWNpZnkgdGhlIGBgb3duZXJgYCBhbmQgYGBncm91cGBgIG5hbWVzCiB0aGF0IHdpbGwgYmUgc2V0IGZvciBlYWNoIG1lbWJlciBvZiB0aGUgYXJjaGl2ZS4KIApkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9idWlsZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdAppbmRleCA2NTZhZjg4Li4xNjMxNzlkIDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdApAQCAtMSwyNyArMSw1OCBAQAogLi4gaGlnaGxpZ2h0bGFuZzo6IGMKIAotCiAuLiBfYnVpbGRpbmc6CiAKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQnVpbGRpbmcgQyBhbmQgQysrIEV4dGVuc2lvbnMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0EgQyBleHRlbnNpb24gZm9yIENQeXRob24gaXMgYSBzaGFyZWQgbGlicmFyeSAoZS5nLiBhIGBgLnNvYGAgZmlsZSBvbiBMaW51eCwKK2BgLnB5ZGBgIG9uIFdpbmRvd3MpLCB3aGljaCBleHBvcnRzIGFuICppbml0aWFsaXphdGlvbiBmdW5jdGlvbiouCisKK1RvIGJlIGltcG9ydGFibGUsIHRoZSBzaGFyZWQgbGlicmFyeSBtdXN0IGJlIGF2YWlsYWJsZSBvbiA6ZW52dmFyOmBQWVRIT05QQVRIYCwKK2FuZCBtdXN0IGJlIG5hbWVkIGFmdGVyIHRoZSBtb2R1bGUgbmFtZSwgd2l0aCBhbiBhcHByb3ByaWF0ZSBleHRlbnNpb24uCitXaGVuIHVzaW5nIGRpc3R1dGlscywgdGhlIGNvcnJlY3QgZmlsZW5hbWUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuCisKK1RoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBoYXMgdGhlIHNpZ25hdHVyZToKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUluaXRfbW9kdWxlbmFtZSh2b2lkKQorCitJdCByZXR1cm5zIGVpdGhlciBhIGZ1bGx5LWluaXRpYWxpemVkIG1vZHVsZSwgb3IgYSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAKK2luc3RhbmNlLiBTZWUgOnJlZjpgaW5pdGlhbGl6aW5nLW1vZHVsZXNgIGZvciBkZXRhaWxzLgorCisuLiBoaWdobGlnaHRsYW5nOjogcHl0aG9uCisKK0ZvciBtb2R1bGVzIHdpdGggQVNDSUktb25seSBuYW1lcywgdGhlIGZ1bmN0aW9uIG11c3QgYmUgbmFtZWQKK2BgUHlJbml0Xzxtb2R1bGVuYW1lPmBgLCB3aXRoIGBgPG1vZHVsZW5hbWU+YGAgcmVwbGFjZWQgYnkgdGhlIG5hbWUgb2YgdGhlCittb2R1bGUuIFdoZW4gdXNpbmcgOnJlZjpgbXVsdGktcGhhc2UtaW5pdGlhbGl6YXRpb25gLCBub24tQVNDSUkgbW9kdWxlIG5hbWVzCithcmUgYWxsb3dlZC4gSW4gdGhpcyBjYXNlLCB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbmFtZSBpcworYGBQeUluaXRVXzxtb2R1bGVuYW1lPmBgLCB3aXRoIGBgPG1vZHVsZW5hbWU+YGAgZW5jb2RlZCB1c2luZyBQeXRob24ncworKnB1bnljb2RlKiBlbmNvZGluZyB3aXRoIGh5cGhlbnMgcmVwbGFjZWQgYnkgdW5kZXJzY29yZXMuIEluIFB5dGhvbjo6CisKKyAgICBkZWYgaW5pdGZ1bmNfbmFtZShuYW1lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VmZml4ID0gYidfJyArIG5hbWUuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzdWZmaXggPSBiJ1VfJyArIG5hbWUuZW5jb2RlKCdwdW55Y29kZScpLnJlcGxhY2UoYictJywgYidfJykKKyAgICAgICAgcmV0dXJuIGInUHlJbml0JyArIHN1ZmZpeAorCitJdCBpcyBwb3NzaWJsZSB0byBleHBvcnQgbXVsdGlwbGUgbW9kdWxlcyBmcm9tIGEgc2luZ2xlIHNoYXJlZCBsaWJyYXJ5IGJ5CitkZWZpbmluZyBtdWx0aXBsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMuIEhvd2V2ZXIsIGltcG9ydGluZyB0aGVtIHJlcXVpcmVzCit1c2luZyBzeW1ib2xpYyBsaW5rcyBvciBhIGN1c3RvbSBpbXBvcnRlciwgYmVjYXVzZSBieSBkZWZhdWx0IG9ubHkgdGhlCitmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWxlbmFtZSBpcyBmb3VuZC4KK1NlZSA6UEVQOmA0ODkjbXVsdGlwbGUtbW9kdWxlcy1pbi1vbmUtbGlicmFyeWAgZm9yIGRldGFpbHMuCisKKworLi4gaGlnaGxpZ2h0bGFuZzo6IGMKKwogQnVpbGRpbmcgQyBhbmQgQysrIEV4dGVuc2lvbnMgd2l0aCBkaXN0dXRpbHMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBzZWN0aW9uYXV0aG9yOjogTWFydGluIHYuIEzDtndpcyA8bWFydGluQHYubG9ld2lzLmRlPgogCi0KLVN0YXJ0aW5nIGluIFB5dGhvbiAxLjQsIFB5dGhvbiBwcm92aWRlcywgb24gVW5peCwgYSBzcGVjaWFsIG1ha2UgZmlsZSBmb3IKLWJ1aWxkaW5nIG1ha2UgZmlsZXMgZm9yIGJ1aWxkaW5nIGR5bmFtaWNhbGx5LWxpbmtlZCBleHRlbnNpb25zIGFuZCBjdXN0b20KLWludGVycHJldGVycy4gIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDIuMCwgdGhpcyBtZWNoYW5pc20gKGtub3duIGFzIHJlbGF0ZWQgdG8KLU1ha2VmaWxlLnByZS5pbiwgYW5kIFNldHVwIGZpbGVzKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBCdWlsZGluZyBjdXN0b20KLWludGVycHJldGVycyB3YXMgcmFyZWx5IHVzZWQsIGFuZCBleHRlbnNpb24gbW9kdWxlcyBjYW4gYmUgYnVpbHQgdXNpbmcKLWRpc3R1dGlscy4KLQotQnVpbGRpbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZSB1c2luZyBkaXN0dXRpbHMgcmVxdWlyZXMgdGhhdCBkaXN0dXRpbHMgaXMKLWluc3RhbGxlZCBvbiB0aGUgYnVpbGQgbWFjaGluZSwgd2hpY2ggaXMgaW5jbHVkZWQgaW4gUHl0aG9uIDIueCBhbmQgYXZhaWxhYmxlCi1zZXBhcmF0ZWx5IGZvciBQeXRob24gMS41LiBTaW5jZSBkaXN0dXRpbHMgYWxzbyBzdXBwb3J0cyBjcmVhdGlvbiBvZiBiaW5hcnkKLXBhY2thZ2VzLCB1c2VycyBkb24ndCBuZWNlc3NhcmlseSBuZWVkIGEgY29tcGlsZXIgYW5kIGRpc3R1dGlscyB0byBpbnN0YWxsIHRoZQotZXh0ZW5zaW9uLgorRXh0ZW5zaW9uIG1vZHVsZXMgY2FuIGJlIGJ1aWx0IHVzaW5nIGRpc3R1dGlscywgIHdoaWNoIGlzIGluY2x1ZGVkIGluIFB5dGhvbi4KK1NpbmNlIGRpc3R1dGlscyBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIGJpbmFyeSBwYWNrYWdlcywgdXNlcnMgZG9uJ3QKK25lY2Vzc2FyaWx5IG5lZWQgYSBjb21waWxlciBhbmQgZGlzdHV0aWxzIHRvIGluc3RhbGwgdGhlIGV4dGVuc2lvbi4KIAogQSBkaXN0dXRpbHMgcGFja2FnZSBjb250YWlucyBhIGRyaXZlciBzY3JpcHQsIDpmaWxlOmBzZXR1cC5weWAuIFRoaXMgaXMgYSBwbGFpbgogUHl0aG9uIGZpbGUsIHdoaWNoLCBpbiB0aGUgbW9zdCBzaW1wbGUgY2FzZSwgY291bGQgbG9vayBsaWtlIHRoaXM6OgpkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CmluZGV4IDZjYjY4NmEuLmFjZDYwYWUgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKQEAgLTU4LDEyICs1OCwxOCBAQAogICAgaW50CiAgICBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICB7Ci0gICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOyAgLyogb3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkICovCi0gICAgIFB5X0luaXRpYWxpemUoKTsKLSAgICAgUHlSdW5fU2ltcGxlU3RyaW5nKCJmcm9tIHRpbWUgaW1wb3J0IHRpbWUsY3RpbWVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcmludCgnVG9kYXkgaXMnLCBjdGltZSh0aW1lKCkpKVxuIik7Ci0gICAgIFB5X0ZpbmFsaXplKCk7Ci0gICAgIHJldHVybiAwOworICAgICAgIHdjaGFyX3QgKnByb2dyYW0gPSBQeV9EZWNvZGVMb2NhbGUoYXJndlswXSwgTlVMTCk7CisgICAgICAgaWYgKHByb2dyYW0gPT0gTlVMTCkgeworICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIGVycm9yOiBjYW5ub3QgZGVjb2RlIGFyZ3ZbMF1cbiIpOworICAgICAgICAgICBleGl0KDEpOworICAgICAgIH0KKyAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShwcm9ncmFtKTsgIC8qIG9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCAqLworICAgICAgIFB5X0luaXRpYWxpemUoKTsKKyAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOworICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgUHlNZW1fUmF3RnJlZShwcm9ncmFtKTsKKyAgICAgICByZXR1cm4gMDsKICAgIH0KIAogVGhlIDpjOmZ1bmM6YFB5X1NldFByb2dyYW1OYW1lYCBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZQpAQCAtMTYwLDcgKzE2Niw3IEBACiBpbnRlcmVzdGluZyBwYXJ0IHdpdGggcmVzcGVjdCB0byBlbWJlZGRpbmcgUHl0aG9uIHN0YXJ0cyB3aXRoIDo6CiAKICAgIFB5X0luaXRpYWxpemUoKTsKLSAgIHBOYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYXJndlsxXSk7CisgICBwTmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYXJndlsxXSk7CiAgICAvKiBFcnJvciBjaGVja2luZyBvZiBwTmFtZSBsZWZ0IG91dCAqLwogICAgcE1vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydChwTmFtZSk7CiAKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAppbmRleCBiYTZiZmE3Li44Y2M0MTg0IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CkBAIC0zNzUsMTEgKzM3NSwxNyBAQAogICAgaW50CiAgICBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICB7CisgICAgICAgd2NoYXJfdCAqcHJvZ3JhbSA9IFB5X0RlY29kZUxvY2FsZShhcmd2WzBdLCBOVUxMKTsKKyAgICAgICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgZXJyb3I6IGNhbm5vdCBkZWNvZGUgYXJndlswXVxuIik7CisgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgfQorCiAgICAgICAgLyogQWRkIGEgYnVpbHQtaW4gbW9kdWxlLCBiZWZvcmUgUHlfSW5pdGlhbGl6ZSAqLwogICAgICAgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWIoInNwYW0iLCBQeUluaXRfc3BhbSk7CiAKICAgICAgICAvKiBQYXNzIGFyZ3ZbMF0gdG8gdGhlIFB5dGhvbiBpbnRlcnByZXRlciAqLwotICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOworICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHByb2dyYW0pOwogCiAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGludGVycHJldGVyLiAgUmVxdWlyZWQuICovCiAgICAgICAgUHlfSW5pdGlhbGl6ZSgpOwpAQCAtMzkxLDYgKzM5NywxMCBAQAogCiAgICAgICAgLi4uCiAKKyAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOworICAgICAgIHJldHVybiAwOworICAgfQorCiAuLiBub3RlOjoKIAogICAgUmVtb3ZpbmcgZW50cmllcyBmcm9tIGBgc3lzLm1vZHVsZXNgYCBvciBpbXBvcnRpbmcgY29tcGlsZWQgbW9kdWxlcyBpbnRvCkBAIC00MDMsNiArNDEzLDEzIEBACiBhcyA6ZmlsZTpgTW9kdWxlcy94eG1vZHVsZS5jYC4gIFRoaXMgZmlsZSBtYXkgYmUgdXNlZCBhcyBhICB0ZW1wbGF0ZSBvciBzaW1wbHkKIHJlYWQgYXMgYW4gZXhhbXBsZS4KIAorLi4gbm90ZTo6CisKKyAgIFVubGlrZSBvdXIgYGBzcGFtYGAgZXhhbXBsZSwgYGB4eG1vZHVsZWBgIHVzZXMgKm11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uKgorICAgKG5ldyBpbiBQeXRob24gMy41KSwgd2hlcmUgYSBQeU1vZHVsZURlZiBzdHJ1Y3R1cmUgaXMgcmV0dXJuZWQgZnJvbQorICAgYGBQeUluaXRfc3BhbWBgLCBhbmQgY3JlYXRpb24gb2YgdGhlIG1vZHVsZSBpcyBsZWZ0IHRvIHRoZSBpbXBvcnQgbWFjaGluZXJ5LgorICAgRm9yIGRldGFpbHMgb24gbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sIHNlZSA6UEVQOmA0ODlgLgorCiAKIC4uIF9jb21waWxhdGlvbjoKIApkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdAppbmRleCAwODg0NDMwLi5mNjBlMjA4IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdApAQCAtODAsNyArODAsNyBAQAogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCAxZGU4NmVmLi44NDZjMDFhIDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTY5LDExICs2OSwzNCBAQAogICAgICAgOnJlZjpgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhcmd1bWVudHMgYW5kIHBhcmFtZXRlcnMKICAgICAgIDxmYXEtYXJndW1lbnQtdnMtcGFyYW1ldGVyPmAsIGFuZCA6cGVwOmAzNjJgLgogCisgICBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyCisgICAgICBBbiBvYmplY3Qgd2hpY2ggY29udHJvbHMgdGhlIGVudmlyb25tZW50IHNlZW4gaW4gYW4KKyAgICAgIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQgYnkgZGVmaW5pbmcgOm1ldGg6YF9fYWVudGVyX19gIGFuZAorICAgICAgOm1ldGg6YF9fYWV4aXRfX2AgbWV0aG9kcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYC4KKworICAgYXN5bmNocm9ub3VzIGl0ZXJhYmxlCisgICAgICBBbiBvYmplY3QsIHRoYXQgY2FuIGJlIHVzZWQgaW4gYW4gOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50LgorICAgICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGF3YWl0YWJsZWAgZnJvbSBpdHMgOm1ldGg6YF9fYWl0ZXJfX2AgbWV0aG9kLAorICAgICAgd2hpY2ggc2hvdWxkIGluIHR1cm4gYmUgcmVzb2x2ZWQgaW4gYW4gOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAKKyAgICAgIG9iamVjdC4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYC4KKworICAgYXN5bmNocm9ub3VzIGl0ZXJhdG9yCisgICAgICBBbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIDptZXRoOmBfX2FpdGVyX19gIGFuZCA6bWV0aDpgX19hbmV4dF9fYAorICAgICAgbWV0aG9kcywgdGhhdCBtdXN0IHJldHVybiA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3RzLgorICAgICAgOmtleXdvcmQ6YGFzeW5jIGZvcmAgcmVzb2x2ZXMgYXdhaXRhYmxlIHJldHVybmVkIGZyb20gYXN5bmNocm9ub3VzCisgICAgICBpdGVyYXRvcidzIDptZXRoOmBfX2FuZXh0X19gIG1ldGhvZCB1bnRpbCBpdCByYWlzZXMKKyAgICAgIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXhjZXB0aW9uLiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgLgorCiAgICBhdHRyaWJ1dGUKICAgICAgIEEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGFuIG9iamVjdCB3aGljaCBpcyByZWZlcmVuY2VkIGJ5IG5hbWUgdXNpbmcKICAgICAgIGRvdHRlZCBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCBpZiBhbiBvYmplY3QgKm8qIGhhcyBhbiBhdHRyaWJ1dGUKICAgICAgICphKiBpdCB3b3VsZCBiZSByZWZlcmVuY2VkIGFzICpvLmEqLgogCisgICBhd2FpdGFibGUKKyAgICAgIEFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGluIGFuIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4gIENhbiBiZQorICAgICAgYSA6dGVybTpgY29yb3V0aW5lYCBvciBhbiBvYmplY3Qgd2l0aCBhbiA6bWV0aDpgX19hd2FpdF9fYCBtZXRob2QuCisgICAgICBTZWUgYWxzbyA6cGVwOmA0OTJgLgorCiAgICBCREZMCiAgICAgICBCZW5ldm9sZW50IERpY3RhdG9yIEZvciBMaWZlLCBhLmsuYS4gYEd1aWRvIHZhbiBSb3NzdW0KICAgICAgIDxodHRwczovL3d3dy5weXRob24ub3JnL35ndWlkby8+YF8sIFB5dGhvbidzIGNyZWF0b3IuCkBAIC04NiwxMiArMTA5LDIxIEBACiAgICAgICAgICBBIDp0ZXJtOmB0ZXh0IGZpbGVgIHJlYWRzIGFuZCB3cml0ZXMgOmNsYXNzOmBzdHJgIG9iamVjdHMuCiAKICAgIGJ5dGVzLWxpa2Ugb2JqZWN0Ci0gICAgICBBbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyb2JqZWN0c2AsIGxpa2UgOmNsYXNzOmBieXRlc2AsCi0gICAgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb3IgOmNsYXNzOmBtZW1vcnl2aWV3YC4gIEJ5dGVzLWxpa2Ugb2JqZWN0cyBjYW4KLSAgICAgIGJlIHVzZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGV4cGVjdCBiaW5hcnkgZGF0YSwgc3VjaCBhcwotICAgICAgY29tcHJlc3Npb24sIHNhdmluZyB0byBhIGJpbmFyeSBmaWxlIG9yIHNlbmRpbmcgb3ZlciBhIHNvY2tldC4KLSAgICAgIFNvbWUgb3BlcmF0aW9ucyBuZWVkIHRoZSBiaW5hcnkgZGF0YSB0byBiZSBtdXRhYmxlLCBpbiB3aGljaCBjYXNlCi0gICAgICBub3QgYWxsIGJ5dGVzLWxpa2Ugb2JqZWN0cyBjYW4gYXBwbHkuCisgICAgICBBbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyb2JqZWN0c2AgYW5kIGNhbgorICAgICAgZXhwb3J0IGEgQy06dGVybTpgY29udGlndW91c2AgYnVmZmVyLiBUaGlzIGluY2x1ZGVzIGFsbCA6Y2xhc3M6YGJ5dGVzYCwKKyAgICAgIDpjbGFzczpgYnl0ZWFycmF5YCwgYW5kIDpjbGFzczpgYXJyYXkuYXJyYXlgIG9iamVjdHMsIGFzIHdlbGwgYXMgbWFueQorICAgICAgY29tbW9uIDpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cy4gIEJ5dGVzLWxpa2Ugb2JqZWN0cyBjYW4KKyAgICAgIGJlIHVzZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IHdvcmsgd2l0aCBiaW5hcnkgZGF0YTsgdGhlc2UgaW5jbHVkZQorICAgICAgY29tcHJlc3Npb24sIHNhdmluZyB0byBhIGJpbmFyeSBmaWxlLCBhbmQgc2VuZGluZyBvdmVyIGEgc29ja2V0LgorCisgICAgICBTb21lIG9wZXJhdGlvbnMgbmVlZCB0aGUgYmluYXJ5IGRhdGEgdG8gYmUgbXV0YWJsZS4gIFRoZSBkb2N1bWVudGF0aW9uCisgICAgICBvZnRlbiByZWZlcnMgdG8gdGhlc2UgYXMgInJlYWQtd3JpdGUgYnl0ZXMtbGlrZSBvYmplY3RzIi4gIEV4YW1wbGUKKyAgICAgIG11dGFibGUgYnVmZmVyIG9iamVjdHMgaW5jbHVkZSA6Y2xhc3M6YGJ5dGVhcnJheWAgYW5kIGEKKyAgICAgIDpjbGFzczpgbWVtb3J5dmlld2Agb2YgYSA6Y2xhc3M6YGJ5dGVhcnJheWAuCisgICAgICBPdGhlciBvcGVyYXRpb25zIHJlcXVpcmUgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIHN0b3JlZCBpbgorICAgICAgaW1tdXRhYmxlIG9iamVjdHMgKCJyZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3RzIik7IGV4YW1wbGVzCisgICAgICBvZiB0aGVzZSBpbmNsdWRlIDpjbGFzczpgYnl0ZXNgIGFuZCBhIDpjbGFzczpgbWVtb3J5dmlld2AKKyAgICAgIG9mIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgogCiAgICBieXRlY29kZQogICAgICAgUHl0aG9uIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGludG8gYnl0ZWNvZGUsIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgpAQCAtMTM5LDYgKzE3MSwzMiBAQAogICAgICAgc3RhdGVtZW50IGJ5IGRlZmluaW5nIDptZXRoOmBfX2VudGVyX19gIGFuZCA6bWV0aDpgX19leGl0X19gIG1ldGhvZHMuCiAgICAgICBTZWUgOnBlcDpgMzQzYC4KIAorICAgY29udGlndW91cworICAgICAgLi4gaW5kZXg6OiBDLWNvbnRpZ3VvdXMsIEZvcnRyYW4gY29udGlndW91cworCisgICAgICBBIGJ1ZmZlciBpcyBjb25zaWRlcmVkIGNvbnRpZ3VvdXMgZXhhY3RseSBpZiBpdCBpcyBlaXRoZXIKKyAgICAgICpDLWNvbnRpZ3VvdXMqIG9yICpGb3J0cmFuIGNvbnRpZ3VvdXMqLiAgWmVyby1kaW1lbnNpb25hbCBidWZmZXJzIGFyZQorICAgICAgQyBhbmQgRm9ydHJhbiBjb250aWd1b3VzLiAgSW4gb25lLWRpbWVuc2lvbmFsIGFycmF5cywgdGhlIGl0ZW1zCisgICAgICBtdXN0IGJlIGxheWVkIG91dCBpbiBtZW1vcnkgbmV4dCB0byBlYWNoIG90aGVyLCBpbiBvcmRlciBvZgorICAgICAgaW5jcmVhc2luZyBpbmRleGVzIHN0YXJ0aW5nIGZyb20gemVyby4gIEluIG11bHRpZGltZW5zaW9uYWwKKyAgICAgIEMtY29udGlndW91cyBhcnJheXMsIHRoZSBsYXN0IGluZGV4IHZhcmllcyB0aGUgZmFzdGVzdCB3aGVuCisgICAgICB2aXNpdGluZyBpdGVtcyBpbiBvcmRlciBvZiBtZW1vcnkgYWRkcmVzcy4gIEhvd2V2ZXIsIGluCisgICAgICBGb3J0cmFuIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGUgZmlyc3QgaW5kZXggdmFyaWVzIHRoZSBmYXN0ZXN0LgorCisgICBjb3JvdXRpbmUKKyAgICAgIENvcm91dGluZXMgaXMgYSBtb3JlIGdlbmVyYWxpemVkIGZvcm0gb2Ygc3Vicm91dGluZXMuIFN1YnJvdXRpbmVzIGFyZQorICAgICAgZW50ZXJlZCBhdCBvbmUgcG9pbnQgYW5kIGV4aXRlZCBhdCBhbm90aGVyIHBvaW50LiAgQ29yb3V0aW5lcyBjYW4gYmUKKyAgICAgIGVudGVyZWQsIGV4aXRlZCwgYW5kIHJlc3VtZWQgYXQgbWFueSBkaWZmZXJlbnQgcG9pbnRzLiAgVGhleSBjYW4gYmUKKyAgICAgIGltcGxlbWVudGVkIHdpdGggdGhlIDprZXl3b3JkOmBhc3luYyBkZWZgIHN0YXRlbWVudC4gIFNlZSBhbHNvCisgICAgICA6cGVwOmA0OTJgLgorCisgICBjb3JvdXRpbmUgZnVuY3Rpb24KKyAgICAgIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdC4gIEEgY29yb3V0aW5lCisgICAgICBmdW5jdGlvbiBtYXkgYmUgZGVmaW5lZCB3aXRoIHRoZSA6a2V5d29yZDpgYXN5bmMgZGVmYCBzdGF0ZW1lbnQsCisgICAgICBhbmQgbWF5IGNvbnRhaW4gOmtleXdvcmQ6YGF3YWl0YCwgOmtleXdvcmQ6YGFzeW5jIGZvcmAsIGFuZAorICAgICAgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIGtleXdvcmRzLiAgVGhlc2Ugd2VyZSBpbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA0OTJgLgorCiAgICBDUHl0aG9uCiAgICAgICBUaGUgY2Fub25pY2FsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGFzCiAgICAgICBkaXN0cmlidXRlZCBvbiBgcHl0aG9uLm9yZyA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZz5gXy4gIFRoZSB0ZXJtICJDUHl0aG9uIgpAQCAtMjkwLDE0ICszNDgsMjMgQEAKICAgICAgIC4uIGluZGV4Ojogc2luZ2xlOiBnZW5lcmF0b3IKIAogICAgZ2VuZXJhdG9yCi0gICAgICBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gaXRlcmF0b3IuICBJdCBsb29rcyBsaWtlIGEgbm9ybWFsIGZ1bmN0aW9uCi0gICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudHMgZm9yIHByb2R1Y2luZyBhIHNlcmllcwotICAgICAgb2YgdmFsdWVzIHVzYWJsZSBpbiBhIGZvci1sb29wIG9yIHRoYXQgY2FuIGJlIHJldHJpZXZlZCBvbmUgYXQgYSB0aW1lIHdpdGgKLSAgICAgIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24uIEVhY2ggOmtleXdvcmQ6YHlpZWxkYCB0ZW1wb3JhcmlseSBzdXNwZW5kcwotICAgICAgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlIGxvY2F0aW9uIGV4ZWN1dGlvbiBzdGF0ZSAoaW5jbHVkaW5nIGxvY2FsCi0gICAgICB2YXJpYWJsZXMgYW5kIHBlbmRpbmcgdHJ5LXN0YXRlbWVudHMpLiAgV2hlbiB0aGUgZ2VuZXJhdG9yIHJlc3VtZXMsIGl0Ci0gICAgICBwaWNrcy11cCB3aGVyZSBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uCi0gICAgICBldmVyeSBpbnZvY2F0aW9uKS4KKyAgICAgIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIDp0ZXJtOmBnZW5lcmF0b3IgaXRlcmF0b3JgLiAgSXQgbG9va3MgbGlrZSBhCisgICAgICBub3JtYWwgZnVuY3Rpb24gZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucworICAgICAgZm9yIHByb2R1Y2luZyBhIHNlcmllcyBvZiB2YWx1ZXMgdXNhYmxlIGluIGEgZm9yLWxvb3Agb3IgdGhhdCBjYW4gYmUKKyAgICAgIHJldHJpZXZlZCBvbmUgYXQgYSB0aW1lIHdpdGggdGhlIDpmdW5jOmBuZXh0YCBmdW5jdGlvbi4KKworICAgICAgVXN1YWxseSByZWZlcnMgdG8gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGJ1dCBtYXkgcmVmZXIgdG8gYQorICAgICAgKmdlbmVyYXRvciBpdGVyYXRvciogaW4gc29tZSBjb250ZXh0cy4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnRlbmRlZAorICAgICAgbWVhbmluZyBpc24ndCBjbGVhciwgdXNpbmcgdGhlIGZ1bGwgdGVybXMgYXZvaWRzIGFtYmlndWl0eS4KKworICAgZ2VuZXJhdG9yIGl0ZXJhdG9yCisgICAgICBBbiBvYmplY3QgY3JlYXRlZCBieSBhIDp0ZXJtOmBnZW5lcmF0b3JgIGZ1bmN0aW9uLgorCisgICAgICBFYWNoIDprZXl3b3JkOmB5aWVsZGAgdGVtcG9yYXJpbHkgc3VzcGVuZHMgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlCisgICAgICBsb2NhdGlvbiBleGVjdXRpb24gc3RhdGUgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMgYW5kIHBlbmRpbmcKKyAgICAgIHRyeS1zdGF0ZW1lbnRzKS4gIFdoZW4gdGhlICpnZW5lcmF0b3IgaXRlcmF0b3IqIHJlc3VtZXMsIGl0IHBpY2tzLXVwIHdoZXJlCisgICAgICBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uIGV2ZXJ5CisgICAgICBpbnZvY2F0aW9uKS4KIAogICAgICAgLi4gaW5kZXg6OiBzaW5nbGU6IGdlbmVyYXRvciBleHByZXNzaW9uCiAKQEAgLTQwMiw2ICs0NjksMTkgQEAKICAgICAgIHRoYW4gY29tcGlsZWQgb25lcywgdGhvdWdoIHRoZWlyIHByb2dyYW1zIGdlbmVyYWxseSBhbHNvIHJ1biBtb3JlCiAgICAgICBzbG93bHkuICBTZWUgYWxzbyA6dGVybTpgaW50ZXJhY3RpdmVgLgogCisgICBpbnRlcnByZXRlciBzaHV0ZG93bgorICAgICAgV2hlbiBhc2tlZCB0byBzaHV0IGRvd24sIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZW50ZXJzIGEgc3BlY2lhbCBwaGFzZQorICAgICAgd2hlcmUgaXQgZ3JhZHVhbGx5IHJlbGVhc2VzIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLCBzdWNoIGFzIG1vZHVsZXMKKyAgICAgIGFuZCB2YXJpb3VzIGNyaXRpY2FsIGludGVybmFsIHN0cnVjdHVyZXMuICBJdCBhbHNvIG1ha2VzIHNldmVyYWwgY2FsbHMKKyAgICAgIHRvIHRoZSA6dGVybTpgZ2FyYmFnZSBjb2xsZWN0b3IgPGdhcmJhZ2UgY29sbGVjdGlvbj5gLiBUaGlzIGNhbiB0cmlnZ2VyCisgICAgICB0aGUgZXhlY3V0aW9uIG9mIGNvZGUgaW4gdXNlci1kZWZpbmVkIGRlc3RydWN0b3JzIG9yIHdlYWtyZWYgY2FsbGJhY2tzLgorICAgICAgQ29kZSBleGVjdXRlZCBkdXJpbmcgdGhlIHNodXRkb3duIHBoYXNlIGNhbiBlbmNvdW50ZXIgdmFyaW91cworICAgICAgZXhjZXB0aW9ucyBhcyB0aGUgcmVzb3VyY2VzIGl0IHJlbGllcyBvbiBtYXkgbm90IGZ1bmN0aW9uIGFueW1vcmUKKyAgICAgIChjb21tb24gZXhhbXBsZXMgYXJlIGxpYnJhcnkgbW9kdWxlcyBvciB0aGUgd2FybmluZ3MgbWFjaGluZXJ5KS4KKworICAgICAgVGhlIG1haW4gcmVhc29uIGZvciBpbnRlcnByZXRlciBzaHV0ZG93biBpcyB0aGF0IHRoZSBgYF9fbWFpbl9fYGAgbW9kdWxlCisgICAgICBvciB0aGUgc2NyaXB0IGJlaW5nIHJ1biBoYXMgZmluaXNoZWQgZXhlY3V0aW5nLgorCiAgICBpdGVyYWJsZQogICAgICAgQW4gb2JqZWN0IGNhcGFibGUgb2YgcmV0dXJuaW5nIGl0cyBtZW1iZXJzIG9uZSBhdCBhIHRpbWUuIEV4YW1wbGVzIG9mCiAgICAgICBpdGVyYWJsZXMgaW5jbHVkZSBhbGwgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBzdHJgLApAQCAtNDQ0LDEyICs1MjQsMTMgQEAKIAogICAgICAgQSBudW1iZXIgb2YgdG9vbHMgaW4gUHl0aG9uIGFjY2VwdCBrZXkgZnVuY3Rpb25zIHRvIGNvbnRyb2wgaG93IGVsZW1lbnRzCiAgICAgICBhcmUgb3JkZXJlZCBvciBncm91cGVkLiAgVGhleSBpbmNsdWRlIDpmdW5jOmBtaW5gLCA6ZnVuYzpgbWF4YCwKLSAgICAgIDpmdW5jOmBzb3J0ZWRgLCA6bWV0aDpgbGlzdC5zb3J0YCwgOmZ1bmM6YGhlYXBxLm5zbWFsbGVzdGAsCi0gICAgICA6ZnVuYzpgaGVhcHEubmxhcmdlc3RgLCBhbmQgOmZ1bmM6YGl0ZXJ0b29scy5ncm91cGJ5YC4KKyAgICAgIDpmdW5jOmBzb3J0ZWRgLCA6bWV0aDpgbGlzdC5zb3J0YCwgOmZ1bmM6YGhlYXBxLm1lcmdlYCwKKyAgICAgIDpmdW5jOmBoZWFwcS5uc21hbGxlc3RgLCA6ZnVuYzpgaGVhcHEubmxhcmdlc3RgLCBhbmQKKyAgICAgIDpmdW5jOmBpdGVydG9vbHMuZ3JvdXBieWAuCiAKICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gY3JlYXRlIGEga2V5IGZ1bmN0aW9uLiAgRm9yIGV4YW1wbGUuIHRoZQogICAgICAgOm1ldGg6YHN0ci5sb3dlcmAgbWV0aG9kIGNhbiBzZXJ2ZSBhcyBhIGtleSBmdW5jdGlvbiBmb3IgY2FzZSBpbnNlbnNpdGl2ZQotICAgICAgc29ydHMuICBBbHRlcm5hdGl2ZWx5LCBhbiBhZC1ob2Mga2V5IGZ1bmN0aW9uIGNhbiBiZSBidWlsdCBmcm9tIGEKKyAgICAgIHNvcnRzLiAgQWx0ZXJuYXRpdmVseSwgYSBrZXkgZnVuY3Rpb24gY2FuIGJlIGJ1aWx0IGZyb20gYQogICAgICAgOmtleXdvcmQ6YGxhbWJkYWAgZXhwcmVzc2lvbiBzdWNoIGFzIGBgbGFtYmRhIHI6IChyWzBdLCByWzJdKWBgLiAgQWxzbywKICAgICAgIHRoZSA6bW9kOmBvcGVyYXRvcmAgbW9kdWxlIHByb3ZpZGVzIHRocmVlIGtleSBmdW5jdGlvbiBjb25zdHJ1Y3RvcnM6CiAgICAgICA6ZnVuYzpgfm9wZXJhdG9yLmF0dHJnZXR0ZXJgLCA6ZnVuYzpgfm9wZXJhdG9yLml0ZW1nZXR0ZXJgLCBhbmQKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9jbGluaWMucnN0IGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKaW5kZXggZTM2MjYzMS4uNzUyNGM0YSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2NsaW5pYy5yc3QKKysrIGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKQEAgLTc1OCw2ICs3NTgsMTQgQEAKIEluIGFkZGl0aW9uLCBzb21lIGNvbnZlcnRlcnMgYWNjZXB0IGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSGVyZSBpcyBhIGxpc3QKIG9mIHRoZXNlIGFyZ3VtZW50cywgYWxvbmcgd2l0aCB0aGVpciBtZWFuaW5nczoKIAorICBgYGFjY2VwdGBgCisgICAgQSBzZXQgb2YgUHl0aG9uIHR5cGVzIChhbmQgcG9zc2libHkgcHNldWRvLXR5cGVzKTsKKyAgICB0aGlzIHJlc3RyaWN0cyB0aGUgYWxsb3dhYmxlIFB5dGhvbiBhcmd1bWVudCB0byB2YWx1ZXMgb2YgdGhlc2UgdHlwZXMuCisgICAgKFRoaXMgaXMgbm90IGEgZ2VuZXJhbC1wdXJwb3NlIGZhY2lsaXR5OyBhcyBhIHJ1bGUgaXQgb25seSBzdXBwb3J0cworICAgIHNwZWNpZmljIGxpc3RzIG9mIHR5cGVzIGFzIHNob3duIGluIHRoZSBsZWdhY3kgY29udmVydGVyIHRhYmxlLikKKworICAgIFRvIGFjY2VwdCBgYE5vbmVgYCwgYWRkIGBgTm9uZVR5cGVgYCB0byB0aGlzIHNldC4KKwogICBgYGJpdHdpc2VgYAogICAgIE9ubHkgc3VwcG9ydGVkIGZvciB1bnNpZ25lZCBpbnRlZ2Vycy4gIFRoZSBuYXRpdmUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzCiAgICAgUHl0aG9uIGFyZ3VtZW50IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgcGFyYW1ldGVyIHdpdGhvdXQgYW55IHJhbmdlIGNoZWNraW5nLApAQCAtNzcyLDM5ICs3ODAsMjcgQEAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIFNwZWNpZmllcyB0aGUgZW5jb2RpbmcgdG8gdXNlIHdoZW4gY29udmVydGluZwogICAgIHRoaXMgc3RyaW5nIGZyb20gYSBQeXRob24gc3RyIChVbmljb2RlKSB2YWx1ZSBpbnRvIGEgQyBgYGNoYXIgKmBgIHZhbHVlLgogCi0gIGBgbGVuZ3RoYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIHJlcXVlc3RzIHRoYXQgdGhlIGxlbmd0aCBvZiB0aGUKLSAgICBzdHJpbmcgYmUgcGFzc2VkIGluIHRvIHRoZSBpbXBsIGZ1bmN0aW9uLCBqdXN0IGFmdGVyIHRoZSBzdHJpbmcgcGFyYW1ldGVyLAotICAgIGluIGEgcGFyYW1ldGVyIG5hbWVkIGBgPHBhcmFtZXRlcl9uYW1lPl9sZW5ndGhgYC4KLQotICBgYG51bGxhYmxlYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIHRoaXMgcGFyYW1ldGVyIG1heSBhbHNvIGJlIHNldCB0bwotICAgIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBDIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byBgYE5VTExgYC4KIAogICBgYHN1YmNsYXNzX29mYGAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIGBgb2JqZWN0YGAgY29udmVydGVyLiAgUmVxdWlyZXMgdGhhdCB0aGUgUHl0aG9uCiAgICAgdmFsdWUgYmUgYSBzdWJjbGFzcyBvZiBhIFB5dGhvbiB0eXBlLCBhcyBleHByZXNzZWQgaW4gQy4KIAotICBgYHR5cGVzYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIGBgb2JqZWN0YGAgKGFuZCBgYHNlbGZgYCkgY29udmVydGVyLiAgU3BlY2lmaWVzCisgIGBgdHlwZWBgCisgICAgT25seSBzdXBwb3J0ZWQgZm9yIHRoZSBgYG9iamVjdGBgIGFuZCBgYHNlbGZgYCBjb252ZXJ0ZXJzLiAgU3BlY2lmaWVzCiAgICAgdGhlIEMgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZWNsYXJlIHRoZSB2YXJpYWJsZS4gIERlZmF1bHQgdmFsdWUgaXMKICAgICBgYCJQeU9iamVjdCAqImBgLgogCi0gIGBgdHlwZXNgYAotICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBsaXN0IG9mIFB5dGhvbiB0eXBlcyAoYW5kIHBvc3NpYmx5IHBzZXVkby10eXBlcyk7Ci0gICAgdGhpcyByZXN0cmljdHMgdGhlIGFsbG93YWJsZSBQeXRob24gYXJndW1lbnQgdG8gdmFsdWVzIG9mIHRoZXNlIHR5cGVzLgotICAgIChUaGlzIGlzIG5vdCBhIGdlbmVyYWwtcHVycG9zZSBmYWNpbGl0eTsgYXMgYSBydWxlIGl0IG9ubHkgc3VwcG9ydHMKLSAgICBzcGVjaWZpYyBsaXN0cyBvZiB0eXBlcyBhcyBzaG93biBpbiB0aGUgbGVnYWN5IGNvbnZlcnRlciB0YWJsZS4pCi0KICAgYGB6ZXJvZXNgYAogICAgIE9ubHkgc3VwcG9ydGVkIGZvciBzdHJpbmdzLiAgSWYgdHJ1ZSwgZW1iZWRkZWQgTlVMIGJ5dGVzIChgYCdcXDAnYGApIGFyZQotICAgIHBlcm1pdHRlZCBpbnNpZGUgdGhlIHZhbHVlLgorICAgIHBlcm1pdHRlZCBpbnNpZGUgdGhlIHZhbHVlLiAgVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHdpbGwgYmUgcGFzc2VkIGluCisgICAgdG8gdGhlIGltcGwgZnVuY3Rpb24sIGp1c3QgYWZ0ZXIgdGhlIHN0cmluZyBwYXJhbWV0ZXIsIGFzIGEgcGFyYW1ldGVyIG5hbWVkCisgICAgYGA8cGFyYW1ldGVyX25hbWU+X2xlbmd0aGBgLgogCiBQbGVhc2Ugbm90ZSwgbm90IGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB3aWxsIHdvcmsuCi1PZnRlbiB0aGVzZSBhcmd1bWVudHMgYXJlIGltcGxlbWVudGVkIGludGVybmFsbHkgYnkgc3BlY2lmaWMgYGBQeUFyZ19QYXJzZVR1cGxlYGAKK1VzdWFsbHkgdGhlc2UgYXJndW1lbnRzIGFyZSBpbXBsZW1lbnRlZCBieSBzcGVjaWZpYyBgYFB5QXJnX1BhcnNlVHVwbGVgYAogKmZvcm1hdCB1bml0cyosIHdpdGggc3BlY2lmaWMgYmVoYXZpb3IuICBGb3IgZXhhbXBsZSwgY3VycmVudGx5IHlvdSBjYW5ub3QKLWNhbGwgYGBzdHJgYCBhbmQgcGFzcyBpbiBgYHplcm9lcz1UcnVlYGAgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgYW4gYGBlbmNvZGluZ2BgOwotYWx0aG91Z2ggaXQncyBwZXJmZWN0bHkgcmVhc29uYWJsZSB0byB0aGluayB0aGlzIHdvdWxkIHdvcmssIHRoZXNlIHNlbWFudGljcyBkb24ndAorY2FsbCBgYHVuc2lnbmVkX3Nob3J0YGAgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgYGBiaXR3aXNlPVRydWVgYC4KK0FsdGhvdWdoIGl0J3MgcGVyZmVjdGx5IHJlYXNvbmFibGUgdG8gdGhpbmsgdGhpcyB3b3VsZCB3b3JrLCB0aGVzZSBzZW1hbnRpY3MgZG9uJ3QKIG1hcCB0byBhbnkgZXhpc3RpbmcgZm9ybWF0IHVuaXQuICBTbyBBcmd1bWVudCBDbGluaWMgZG9lc24ndCBzdXBwb3J0IGl0LiAgKE9yLCBhdAogbGVhc3QsIG5vdCB5ZXQuKQogCkBAIC04MTYsMTMgKzgxMiwxMyBAQAogYGAnQidgYCAgICAgYGB1bnNpZ25lZF9jaGFyKGJpdHdpc2U9VHJ1ZSlgYAogYGAnYidgYCAgICAgYGB1bnNpZ25lZF9jaGFyYGAKIGBgJ2MnYGAgICAgIGBgY2hhcmBgCi1gYCdDJ2BgICAgICBgYGludCh0eXBlcz0nc3RyJylgYAorYGAnQydgYCAgICAgYGBpbnQoYWNjZXB0PXtzdHJ9KWBgCiBgYCdkJ2BgICAgICBgYGRvdWJsZWBgCiBgYCdEJ2BgICAgICBgYFB5X2NvbXBsZXhgYAotYGAnZXMjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCBsZW5ndGg9VHJ1ZSwgemVyb2VzPVRydWUpYGAKIGBgJ2VzJ2BgICAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJylgYAotYGAnZXQjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB0eXBlcz0nYnl0ZXMgYnl0ZWFycmF5IHN0cicsIGxlbmd0aD1UcnVlKWBgCi1gYCdldCdgYCAgICBgYHN0cihlbmNvZGluZz0nbmFtZV9vZl9lbmNvZGluZycsIHR5cGVzPSdieXRlcyBieXRlYXJyYXkgc3RyJylgYAorYGAnZXMjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB6ZXJvZXM9VHJ1ZSlgYAorYGAnZXQnYGAgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCBhY2NlcHQ9e2J5dGVzLCBieXRlYXJyYXksIHN0cn0pYGAKK2BgJ2V0IydgYCAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9LCB6ZXJvZXM9VHJ1ZSlgYAogYGAnZidgYCAgICAgYGBmbG9hdGBgCiBgYCdoJ2BgICAgICBgYHNob3J0YGAKIGBgJ0gnYGAgICAgIGBgdW5zaWduZWRfc2hvcnQoYml0d2lzZT1UcnVlKWBgCkBAIC04MzAsMjkgKzgyNiwzMCBAQAogYGAnSSdgYCAgICAgYGB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKWBgCiBgYCdrJ2BgICAgICBgYHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKWBgCiBgYCdLJ2BgICAgICBgYHVuc2lnbmVkX1BZX0xPTkdfTE9ORyhiaXR3aXNlPVRydWUpYGAKK2BgJ2wnYGAgICAgIGBgbG9uZ2BgCiBgYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAorYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYAogYGAnTyYnYGAgICAgYGBvYmplY3QoY29udmVydGVyPSduYW1lX29mX2NfZnVuY3Rpb24nKWBgCi1gYCdPJ2BgICAgICBgYG9iamVjdGBgCiBgYCdwJ2BgICAgICBgYGJvb2xgYAotYGAncyMnYGAgICAgYGBzdHIobGVuZ3RoPVRydWUpYGAKIGBgJ1MnYGAgICAgIGBgUHlCeXRlc09iamVjdGBgCiBgYCdzJ2BgICAgICBgYHN0cmBgCi1gYCdzKidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInKWBgCi1gYCd1IydgYCAgICBgYFB5X1VOSUNPREUobGVuZ3RoPVRydWUpYGAKLWBgJ3UnYGAgICAgIGBgUHlfVU5JQ09ERWBgCitgYCdzIydgYCAgICBgYHN0cih6ZXJvZXM9VHJ1ZSlgYAorYGAncyonYGAgICAgYGBQeV9idWZmZXIoYWNjZXB0PXtidWZmZXIsIHN0cn0pYGAKIGBgJ1UnYGAgICAgIGBgdW5pY29kZWBgCi1gYCd3KidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nYnl0ZWFycmF5IHJ3YnVmZmVyJylgYAotYGAneSMnYGAgICAgYGBzdHIodHlwZXM9J2J5dGVzJywgbGVuZ3RoPVRydWUpYGAKK2BgJ3UnYGAgICAgIGBgUHlfVU5JQ09ERWBgCitgYCd1IydgYCAgICBgYFB5X1VOSUNPREUoemVyb2VzPVRydWUpYGAKK2BgJ3cqJ2BgICAgIGBgUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KWBgCiBgYCdZJ2BgICAgICBgYFB5Qnl0ZUFycmF5T2JqZWN0YGAKLWBgJ3knYGAgICAgIGBgc3RyKHR5cGVzPSdieXRlcycpYGAKK2BgJ3knYGAgICAgIGBgc3RyKGFjY2VwdD17Ynl0ZXN9KWBgCitgYCd5IydgYCAgICBgYHN0cihhY2NlcHQ9e3JvYnVmZmVyfSwgemVyb2VzPVRydWUpYGAKIGBgJ3kqJ2BgICAgIGBgUHlfYnVmZmVyYGAKLWBgJ1ojJ2BgICAgIGBgUHlfVU5JQ09ERShudWxsYWJsZT1UcnVlLCBsZW5ndGg9VHJ1ZSlgYAotYGAneiMnYGAgICAgYGBzdHIobnVsbGFibGU9VHJ1ZSwgbGVuZ3RoPVRydWUpYGAKLWBgJ1onYGAgICAgIGBgUHlfVU5JQ09ERShudWxsYWJsZT1UcnVlKWBgCi1gYCd6J2BgICAgICBgYHN0cihudWxsYWJsZT1UcnVlKWBgCi1gYCd6KidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInLCBudWxsYWJsZT1UcnVlKWBgCitgYCdaJ2BgICAgICBgYFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSlgYAorYGAnWiMnYGAgICAgYGBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0sIHplcm9lcz1UcnVlKWBgCitgYCd6J2BgICAgICBgYHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KWBgCitgYCd6IydgYCAgICBgYHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9LCB6ZXJvZXM9VHJ1ZSlgYAorYGAneionYGAgICAgYGBQeV9idWZmZXIoYWNjZXB0PXtidWZmZXIsIHN0ciwgTm9uZVR5cGV9KWBgCiA9PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQXMgYW4gZXhhbXBsZSwgaGVyZSdzIG91ciBzYW1wbGUgYGBwaWNrbGUuUGlja2xlci5kdW1wYGAgdXNpbmcgdGhlIHByb3BlcgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0IGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CmluZGV4IDE5NjliMzIuLjk0NWEyNDAgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAorKysgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKQEAgLTQ4MSwxMCArNDgxLDEwIEBACiBZb3UgY291bGQgZXF1YWxseSB3cml0ZSBgYGZvciBpIGluIGdlbmVyYXRlX2ludHMoNSlgYCwgb3IgYGBhLGIsYyA9CiBnZW5lcmF0ZV9pbnRzKDMpYGAuCiAKLUluc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bwotYGByYWlzZSBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgLiAgSWYgbm8gdmFsdWUgaXMgcmV0dXJuZWQgb3IgdGhlIGJvdHRvbSBvZiB0aGUKLWZ1bmN0aW9uIGlzIHJlYWNoZWQsIHRoZSBwcm9jZXNzaW9uIG9mIHZhbHVlcyBlbmRzIGFuZCB0aGUgZ2VuZXJhdG9yIGNhbm5vdAotcmV0dXJuIGFueSBmdXJ0aGVyIHZhbHVlcy4KK0luc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBjYXVzZXMgYGBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgCit0byBiZSByYWlzZWQgZnJvbSB0aGUgOm1ldGg6YH5nZW5lcmF0b3IuX19uZXh0X19gIG1ldGhvZC4gIE9uY2UgdGhpcyBoYXBwZW5zLCBvcgordGhlIGJvdHRvbSBvZiB0aGUgZnVuY3Rpb24gaXMgcmVhY2hlZCwgdGhlIHByb2Nlc3Npb24gb2YgdmFsdWVzIGVuZHMgYW5kIHRoZQorZ2VuZXJhdG9yIGNhbm5vdCB5aWVsZCBhbnkgZnVydGhlciB2YWx1ZXMuCiAKIFlvdSBjb3VsZCBhY2hpZXZlIHRoZSBlZmZlY3Qgb2YgZ2VuZXJhdG9ycyBtYW51YWxseSBieSB3cml0aW5nIHlvdXIgb3duIGNsYXNzCiBhbmQgc3RvcmluZyBhbGwgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZ2VuZXJhdG9yIGFzIGluc3RhbmNlIHZhcmlhYmxlcy4gIEZvcgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0IGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CmluZGV4IDYzMDVkMjQuLjgxM2JjMGYgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAorKysgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKQEAgLTMyNSw2ICszMjUsMTUgQEAKIAogICAgIE1haW5UaHJlYWQ6IExvb2sgb3V0IQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgUHJpb3IgdG8gUHl0aG9uIDMuNSwgdGhlIDpjbGFzczpgUXVldWVMaXN0ZW5lcmAgYWx3YXlzIHBhc3NlZCBldmVyeSBtZXNzYWdlCisgICByZWNlaXZlZCBmcm9tIHRoZSBxdWV1ZSB0byBldmVyeSBoYW5kbGVyIGl0IHdhcyBpbml0aWFsaXplZCB3aXRoLiAoVGhpcyB3YXMKKyAgIGJlY2F1c2UgaXQgd2FzIGFzc3VtZWQgdGhhdCBsZXZlbCBmaWx0ZXJpbmcgd2FzIGFsbCBkb25lIG9uIHRoZSBvdGhlciBzaWRlLAorICAgd2hlcmUgdGhlIHF1ZXVlIGlzIGZpbGxlZC4pIEZyb20gMy41IG9ud2FyZHMsIHRoaXMgYmVoYXZpb3VyIGNhbiBiZSBjaGFuZ2VkCisgICBieSBwYXNzaW5nIGEga2V5d29yZCBhcmd1bWVudCBgYHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1UcnVlYGAgdG8gdGhlCisgICBsaXN0ZW5lcidzIGNvbnN0cnVjdG9yLiBXaGVuIHRoaXMgaXMgZG9uZSwgdGhlIGxpc3RlbmVyIGNvbXBhcmVzIHRoZSBsZXZlbAorICAgb2YgZWFjaCBtZXNzYWdlIHdpdGggdGhlIGhhbmRsZXIncyBsZXZlbCwgYW5kIG9ubHkgcGFzc2VzIGEgbWVzc2FnZSB0byBhCisgICBoYW5kbGVyIGlmIGl0J3MgYXBwcm9wcmlhdGUgdG8gZG8gc28uCiAKIC4uIF9uZXR3b3JrLWxvZ2dpbmc6CiAKQEAgLTE2ODAsNyArMTY4OSw3IEBACiAKICAgICBkZWYgbWFpbigpOgogICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSclKG1lc3NhZ2UpcycpCi0gICAgICAgIGxvZ2dpbmcuaW5mbyhfKCdtZXNzYWdlIDEnLCBzZXRfdmFsdWU9c2V0KFsxLCAyLCAzXSksIHNub3dtYW49J1x1MjYwMycpKQorICAgICAgICBsb2dnaW5nLmluZm8oXygnbWVzc2FnZSAxJywgc2V0X3ZhbHVlPXsxLCAyLCAzfSwgc25vd21hbj0nXHUyNjAzJykpCiAKICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9weXBvcnRpbmcucnN0IGIvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKaW5kZXggNWU4NzVjZC4uYTJhYWYzNiAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKKysrIGIvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKQEAgLTIwNywxMyArMjA3LDEyIEBACiB0YWJsZSBsaXN0cyB0aGUgKip1bmlxdWUqKiBtZXRob2RzIG9mIGVhY2ggZGF0YSB0eXBlIGFjcm9zcyBQeXRob24gMiAmIDMKIChlLmcuLCB0aGUgYGBkZWNvZGUoKWBgIG1ldGhvZCBpcyB1c2FibGUgb24gdGhlIGVxdWl2YWxlbnQgYmluYXJ5IGRhdGEgdHlwZSBpbgogZWl0aGVyIFB5dGhvbiAyIG9yIDMsIGJ1dCBpdCBjYW4ndCBiZSB1c2VkIGJ5IHRoZSB0ZXh0IGRhdGEgdHlwZSBjb25zaXN0ZW50bHkKLWJldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4KK2JldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4gRG8KK25vdGUgdGhhdCBhcyBvZiBQeXRob24gMy41IHRoZSBgYF9fbW9kX19gYCBtZXRob2Qgd2FzIGFkZGVkIHRvIHRoZSBieXRlcyB0eXBlLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09CiAqKlRleHQgZGF0YSoqICAgICAgICAgICAgKipCaW5hcnkgZGF0YSoqCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1fX21vZF9fIChgYCVgYCBvcGVyYXRvcikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFwgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGVuY29kZQpAQCAtMzQ4LDEwICszNDcsMTIgQEAKIFB5dGhvbiAyIG9yIDMgc3VwcG9ydC4KIAogWW91IG1heSBhbHNvIHdhbnQgdG8gdXNlIHVzZSB0aGUgYGAtYmJgYCBmbGFnIHdpdGggdGhlIFB5dGhvbiAzIGludGVycHJldGVyIHRvCi10cmlnZ2VyIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhcmUgY29tcGFyaW5nIGJ5dGVzIHRvIHN0cmluZ3MuIFVzdWFsbHkgaXQncwotc2ltcGx5IGBgRmFsc2VgYCwgYnV0IGlmIHlvdSBtYWRlIGEgbWlzdGFrZSBpbiB5b3VyIHNlcGFyYXRpb24gb2YgdGV4dC9iaW5hcnkKLWRhdGEgaGFuZGxpbmcgeW91IG1heSBiZSBhY2NpZGVudGFsbHkgY29tcGFyaW5nIHRleHQgYW5kIGJpbmFyeSBkYXRhLiBUaGlzIGZsYWcKLXdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhhdCBvY2N1cnMgdG8gaGVscCB0cmFjayBkb3duIHN1Y2ggY2FzZXMuCit0cmlnZ2VyIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhcmUgY29tcGFyaW5nIGJ5dGVzIHRvIHN0cmluZ3Mgb3IgYnl0ZXMgdG8gYW4gaW50CisodGhlIGxhdHRlciBpcyBhdmFpbGFibGUgc3RhcnRpbmcgaW4gUHl0aG9uIDMuNSkuIEJ5IGRlZmF1bHQgdHlwZS1kaWZmZXJpbmcKK2NvbXBhcmlzb25zIHNpbXBseSByZXR1cm4gYGBGYWxzZWBgLCBidXQgaWYgeW91IG1hZGUgYSBtaXN0YWtlIGluIHlvdXIKK3NlcGFyYXRpb24gb2YgdGV4dC9iaW5hcnkgZGF0YSBoYW5kbGluZyBvciBpbmRleGluZyBvbiBieXRlcyB5b3Ugd291bGRuJ3QgZWFzaWx5CitmaW5kIHRoZSBtaXN0YWtlLiBUaGlzIGZsYWcgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVzZSBraW5kcyBvZgorY29tcGFyaXNvbnMgb2NjdXIsIG1ha2luZyB0aGUgbWlzdGFrZSBtdWNoIGVhc2llciB0byB0cmFjayBkb3duLgogCiBBbmQgdGhhdCdzIG1vc3RseSBpdCEgQXQgdGhpcyBwb2ludCB5b3VyIGNvZGUgYmFzZSBpcyBjb21wYXRpYmxlIHdpdGggYm90aAogUHl0aG9uIDIgYW5kIDMgc2ltdWx0YW5lb3VzbHkuIFlvdXIgdGVzdGluZyB3aWxsIGFsc28gYmUgc2V0IHVwIHNvIHRoYXQgeW91CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vcmVnZXgucnN0IGIvRG9jL2hvd3RvL3JlZ2V4LnJzdAppbmRleCA5YWUwNGQ3Li5hZDJjNmFiIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vcmVnZXgucnN0CisrKyBiL0RvYy9ob3d0by9yZWdleC5yc3QKQEAgLTExMzgsNyArMTEzOCw3IEBACiAKIElmICpyZXBsYWNlbWVudCogaXMgYSBzdHJpbmcsIGFueSBiYWNrc2xhc2ggZXNjYXBlcyBpbiBpdCBhcmUgcHJvY2Vzc2VkLiAgVGhhdAogaXMsIGBgXG5gYCBpcyBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgbmV3bGluZSBjaGFyYWN0ZXIsIGBgXHJgYCBpcyBjb252ZXJ0ZWQgdG8gYQotY2FycmlhZ2UgcmV0dXJuLCBhbmQgc28gZm9ydGguIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXGpgYCBhcmUgbGVmdCBhbG9uZS4KK2NhcnJpYWdlIHJldHVybiwgYW5kIHNvIGZvcnRoLiBVbmtub3duIGVzY2FwZXMgc3VjaCBhcyBgYFwmYGAgYXJlIGxlZnQgYWxvbmUuCiBCYWNrcmVmZXJlbmNlcywgc3VjaCBhcyBgYFw2YGAsIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSB0aGUKIGNvcnJlc3BvbmRpbmcgZ3JvdXAgaW4gdGhlIFJFLiAgVGhpcyBsZXRzIHlvdSBpbmNvcnBvcmF0ZSBwb3J0aW9ucyBvZiB0aGUKIG9yaWdpbmFsIHRleHQgaW4gdGhlIHJlc3VsdGluZyByZXBsYWNlbWVudCBzdHJpbmcuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdW5pY29kZS5yc3QgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKaW5kZXggYjQ5YWMzOS4uZWUzMWE5YyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0CisrKyBiL0RvYy9ob3d0by91bmljb2RlLnJzdApAQCAtMjgwLDggKzI4MCw5IEBACiBUaGUgKmVycm9ycyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSByZXNwb25zZSB3aGVuIHRoZSBpbnB1dCBzdHJpbmcgY2FuJ3QgYmUKIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIGVuY29kaW5nJ3MgcnVsZXMuICBMZWdhbCB2YWx1ZXMgZm9yIHRoaXMgYXJndW1lbnQgYXJlCiBgYCdzdHJpY3QnYGAgKHJhaXNlIGEgOmV4YzpgVW5pY29kZURlY29kZUVycm9yYCBleGNlcHRpb24pLCBgYCdyZXBsYWNlJ2BgICh1c2UKLWBgVStGRkZEYGAsIGBgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSYGApLCBvciBgYCdpZ25vcmUnYGAgKGp1c3QgbGVhdmUgdGhlCi1jaGFyYWN0ZXIgb3V0IG9mIHRoZSBVbmljb2RlIHJlc3VsdCkuCitgYFUrRkZGRGBgLCBgYFJFUExBQ0VNRU5UIENIQVJBQ1RFUmBgKSwgYGAnaWdub3JlJ2BgIChqdXN0IGxlYXZlIHRoZQorY2hhcmFjdGVyIG91dCBvZiB0aGUgVW5pY29kZSByZXN1bHQpLCBvciBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIChpbnNlcnRzIGEKK2BgXHhOTmBgIGVzY2FwZSBzZXF1ZW5jZSkuCiBUaGUgZm9sbG93aW5nIGV4YW1wbGVzIHNob3cgdGhlIGRpZmZlcmVuY2VzOjoKIAogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAic3RyaWN0IikgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTI5MSw2ICsyOTIsOCBAQAogICAgICAgaW52YWxpZCBzdGFydCBieXRlCiAgICAgPj4+IGInXHg4MGFiYycuZGVjb2RlKCJ1dGYtOCIsICJyZXBsYWNlIikKICAgICAnXHVmZmZkYWJjJworICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAiYmFja3NsYXNocmVwbGFjZSIpCisgICAgJ1xceDgwYWJjJwogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAiaWdub3JlIikKICAgICAnYWJjJwogCkBAIC0zMjUsOCArMzI4LDkgQEAKIDptZXRoOmB+Ynl0ZXMuZGVjb2RlYCBtZXRob2QgYnV0IHN1cHBvcnRzIGEgZmV3IG1vcmUgcG9zc2libGUgaGFuZGxlcnMuIEFzIHdlbGwgYXMKIGBgJ3N0cmljdCdgYCwgYGAnaWdub3JlJ2BgLCBhbmQgYGAncmVwbGFjZSdgYCAod2hpY2ggaW4gdGhpcyBjYXNlCiBpbnNlcnRzIGEgcXVlc3Rpb24gbWFyayBpbnN0ZWFkIG9mIHRoZSB1bmVuY29kYWJsZSBjaGFyYWN0ZXIpLCB0aGVyZSBpcwotYWxzbyBgYCd4bWxjaGFycmVmcmVwbGFjZSdgYCAoaW5zZXJ0cyBhbiBYTUwgY2hhcmFjdGVyIHJlZmVyZW5jZSkgYW5kCi1gYGJhY2tzbGFzaHJlcGxhY2VgYCAoaW5zZXJ0cyBhIGBgXHVOTk5OYGAgZXNjYXBlIHNlcXVlbmNlKS4KK2Fsc28gYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAgKGluc2VydHMgYW4gWE1MIGNoYXJhY3RlciByZWZlcmVuY2UpLAorYGBiYWNrc2xhc2hyZXBsYWNlYGAgKGluc2VydHMgYSBgYFx1Tk5OTmBgIGVzY2FwZSBzZXF1ZW5jZSkgYW5kCitgYG5hbWVyZXBsYWNlYGAgKGluc2VydHMgYSBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2UpLgogCiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIGRpZmZlcmVudCByZXN1bHRzOjoKIApAQCAtMzQ2LDYgKzM1MCw4IEBACiAgICAgYicmIzQwOTYwO2FiY2QmIzE5NzI7JwogICAgID4+PiB1LmVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgYidcXHVhMDAwYWJjZFxcdTA3YjQnCisgICAgPj4+IHUuZW5jb2RlKCdhc2NpaScsICduYW1lcmVwbGFjZScpCisgICAgYidcXE57WUkgU1lMTEFCTEUgSVR9YWJjZFxcdTA3YjQnCiAKIFRoZSBsb3ctbGV2ZWwgcm91dGluZXMgZm9yIHJlZ2lzdGVyaW5nIGFuZCBhY2Nlc3NpbmcgdGhlIGF2YWlsYWJsZQogZW5jb2RpbmdzIGFyZSBmb3VuZCBpbiB0aGUgOm1vZDpgY29kZWNzYCBtb2R1bGUuICBJbXBsZW1lbnRpbmcgbmV3CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkuYyBiL0RvYy9pbmNsdWRlcy9ub2RkeS5jCmluZGV4IDhmNzlmY2YuLjE5YTI3YTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeS5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeS5jCkBAIC0zOCw3ICszOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5KHZvaWQpIAorUHlJbml0X25vZGR5KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggMWM5ODYwZC4uOTg2ZDY3MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTEzLDcgKzEzLDcgQEAKICAgICB9CiAKICAgICBQeV9Jbml0aWFsaXplKCk7Ci0gICAgcE5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhhcmd2WzFdKTsKKyAgICBwTmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYXJndlsxXSk7CiAgICAgLyogRXJyb3IgY2hlY2tpbmcgb2YgcE5hbWUgbGVmdCBvdXQgKi8KIAogICAgIHBNb2R1bGUgPSBQeUltcG9ydF9JbXBvcnQocE5hbWUpOwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaCBiL0RvYy9pbmNsdWRlcy90eXBlc3RydWN0LmgKaW5kZXggNzI2NTAwOS4uOWY0Nzg5OSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaAorKysgYi9Eb2MvaW5jbHVkZXMvdHlwZXN0cnVjdC5oCkBAIC05LDcgKzksOCBAQAogICAgIHByaW50ZnVuYyB0cF9wcmludDsKICAgICBnZXRhdHRyZnVuYyB0cF9nZXRhdHRyOwogICAgIHNldGF0dHJmdW5jIHRwX3NldGF0dHI7Ci0gICAgdm9pZCAqdHBfcmVzZXJ2ZWQ7IC8qIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUgKi8KKyAgICBQeUFzeW5jTWV0aG9kcyAqdHBfYXNfYXN5bmM7IC8qIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUgKFB5dGhvbiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdHBfcmVzZXJ2ZWQgKFB5dGhvbiAzKSAqLwogICAgIHJlcHJmdW5jIHRwX3JlcHI7CiAKICAgICAvKiBNZXRob2Qgc3VpdGVzIGZvciBzdGFuZGFyZCBjbGFzc2VzICovCmRpZmYgLS1naXQgYS9Eb2MvaW5zdGFsbC9pbmRleC5yc3QgYi9Eb2MvaW5zdGFsbC9pbmRleC5yc3QKaW5kZXggOGYzYWQ3Mi4uODc2ZjM1MCAxMDA2NDQKLS0tIGEvRG9jL2luc3RhbGwvaW5kZXgucnN0CisrKyBiL0RvYy9pbnN0YWxsL2luZGV4LnJzdApAQCAtMzYxLDcgKzM2MSw3IEBACiBUeXBlIG9mIGZpbGUgICAgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeQogPT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBtb2R1bGVzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXHNpdGUtcGFja2FnZXNgCi1zY3JpcHRzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFNjcmlwdHNgCitzY3JpcHRzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXFNjcmlwdHNgCiBkYXRhICAgICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1gCiBDIGhlYWRlcnMgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXEluY2x1ZGVcXHtkaXN0bmFtZX1gCiA9PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L19fZnV0dXJlX18ucnN0IGIvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKaW5kZXggNzJmMjk2My4uNzNkOGI2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKQEAgLTg3LDYgKzg3LDkgQEAKIHwgdW5pY29kZV9saXRlcmFscyB8IDIuNi4wYTIgICAgIHwgMy4wICAgICAgICAgIHwgOnBlcDpgMzExMmA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICpCeXRlcyBsaXRlcmFscyBpbiBQeXRob24gMzAwMCogICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgZ2VuZXJhdG9yX3N0b3AgICB8IDMuNS4wYjEgICAgIHwgMy43ICAgICAgICAgIHwgOnBlcDpgNDc5YDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICpTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzKiAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAppbmRleCAwNjdmYjhmLi43MjA5NWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPSctJywgZnJvbWZpbGVfcHJlZml4X2NoYXJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRfZGVmYXVsdD1Ob25lLCBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSwgYWxsb3dfYWJicmV2PVRydWUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3QuIEFsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQKICAgIGFzIGtleXdvcmQgYXJndW1lbnRzLiBFYWNoIHBhcmFtZXRlciBoYXMgaXRzIG93biBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uCkBAIC0xNjksNiArMTY5LDEyIEBACiAKICAgICogYWRkX2hlbHBfIC0gQWRkIGEgLWgvLS1oZWxwIG9wdGlvbiB0byB0aGUgcGFyc2VyIChkZWZhdWx0OiBgYFRydWVgYCkKIAorICAgKiBhbGxvd19hYmJyZXZfIC0gQWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZSBhYmJyZXZpYXRlZCBpZiB0aGUKKyAgICAgYWJicmV2aWF0aW9uIGlzIHVuYW1iaWd1b3VzLiAoZGVmYXVsdDogYGBUcnVlYGApCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqYWxsb3dfYWJicmV2KiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIGhvdyBlYWNoIG9mIHRoZXNlIGFyZSB1c2VkLgogCiAKQEAgLTUxOCw2ICs1MjQsMjYgQEAKICAgID4+PiBwYXJzZXIucGFyc2VfYXJncyhbXSkKICAgIE5hbWVzcGFjZSgpCiAKKy4uIF9hbGxvd19hYmJyZXY6CisKK2FsbG93X2FiYnJldgorXl5eXl5eXl5eXl5eCisKK05vcm1hbGx5LCB3aGVuIHlvdSBwYXNzIGFuIGFyZ3VtZW50IGxpc3QgdG8gdGhlCis6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCBvZiBhIDpjbGFzczpgQXJndW1lbnRQYXJzZXJgLAoraXQgOnJlZjpgcmVjb2duaXplcyBhYmJyZXZpYXRpb25zIDxwcmVmaXgtbWF0Y2hpbmc+YCBvZiBsb25nIG9wdGlvbnMuCisKK1RoaXMgZmVhdHVyZSBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBgYGFsbG93X2FiYnJldmBgIHRvIGBgRmFsc2VgYDo6CisKKyAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgYWxsb3dfYWJicmV2PUZhbHNlKQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZm9vYmFyJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvb25sZXknLCBhY3Rpb249J3N0b3JlX2ZhbHNlJykKKyAgID4+PiBwYXJzZXIucGFyc2VfYXJncyhbJy0tZm9vbiddKQorICAgdXNhZ2U6IFBST0cgWy1oXSBbLS1mb29iYXJdIFstLWZvb25sZXldCisgICBQUk9HOiBlcnJvcjogdW5yZWNvZ25pemVkIGFyZ3VtZW50czogLS1mb29uCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIGNvbmZsaWN0X2hhbmRsZXIKIF5eXl5eXl5eXl5eXl5eXl4KQEAgLTE0MTAsOSArMTQzNiw5IEBACiBBcmd1bWVudCBhYmJyZXZpYXRpb25zIChwcmVmaXggbWF0Y2hpbmcpCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCBhbGxvd3MgbG9uZyBvcHRpb25zIHRvIGJlCi1hYmJyZXZpYXRlZCB0byBhIHByZWZpeCwgaWYgdGhlIGFiYnJldmlhdGlvbiBpcyB1bmFtYmlndW91cyAodGhlIHByZWZpeCBtYXRjaGVzCi1hIHVuaXF1ZSBvcHRpb24pOjoKK1RoZSA6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCA6cmVmOmBieSBkZWZhdWx0IDxhbGxvd19hYmJyZXY+YAorYWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZSBhYmJyZXZpYXRlZCB0byBhIHByZWZpeCwgaWYgdGhlIGFiYnJldmlhdGlvbiBpcwordW5hbWJpZ3VvdXMgKHRoZSBwcmVmaXggbWF0Y2hlcyBhIHVuaXF1ZSBvcHRpb24pOjoKIAogICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnKQogICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy1iYWNvbicpCkBAIC0xNDI2LDYgKzE0NTIsNyBAQAogICAgUFJPRzogZXJyb3I6IGFtYmlndW91cyBvcHRpb246IC1iYSBjb3VsZCBtYXRjaCAtYmFkZ2VyLCAtYmFjb24KIAogQW4gZXJyb3IgaXMgcHJvZHVjZWQgZm9yIGFyZ3VtZW50cyB0aGF0IGNvdWxkIHByb2R1Y2UgbW9yZSB0aGFuIG9uZSBvcHRpb25zLgorVGhpcyBmZWF0dXJlIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIDpyZWY6YGFsbG93X2FiYnJldmAgdG8gYGBGYWxzZWBgLgogCiAKIEJleW9uZCBgYHN5cy5hcmd2YGAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCBjNmZhMDYxLi43OTRkYThjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC0xNDcsNDAgKzE0Nyw2IEBACiAgICBieSB0aGUgY2hhbm5lbCBhZnRlciA6bWV0aDpgZm91bmRfdGVybWluYXRvcmAgaXMgY2FsbGVkLgogCiAKLWFzeW5jaGF0IC0gQXV4aWxpYXJ5IENsYXNzZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBjbGFzczo6IGZpZm8obGlzdD1Ob25lKQotCi0gICBBIDpjbGFzczpgZmlmb2AgaG9sZGluZyBkYXRhIHdoaWNoIGhhcyBiZWVuIHB1c2hlZCBieSB0aGUgYXBwbGljYXRpb24gYnV0Ci0gICBub3QgeWV0IHBvcHBlZCBmb3Igd3JpdGluZyB0byB0aGUgY2hhbm5lbC4gIEEgOmNsYXNzOmBmaWZvYCBpcyBhIGxpc3QgdXNlZAotICAgdG8gaG9sZCBkYXRhIGFuZC9vciBwcm9kdWNlcnMgdW50aWwgdGhleSBhcmUgcmVxdWlyZWQuICBJZiB0aGUgKmxpc3QqCi0gICBhcmd1bWVudCBpcyBwcm92aWRlZCB0aGVuIGl0IHNob3VsZCBjb250YWluIHByb2R1Y2VycyBvciBkYXRhIGl0ZW1zIHRvIGJlCi0gICB3cml0dGVuIHRvIHRoZSBjaGFubmVsLgotCi0KLSAgIC4uIG1ldGhvZDo6IGlzX2VtcHR5KCkKLQotICAgICAgUmV0dXJucyBgYFRydWVgYCBpZiBhbmQgb25seSBpZiB0aGUgZmlmbyBpcyBlbXB0eS4KLQotCi0gICAuLiBtZXRob2Q6OiBmaXJzdCgpCi0KLSAgICAgIFJldHVybnMgdGhlIGxlYXN0LXJlY2VudGx5IDptZXRoOmBwdXNoYFwgZWQgaXRlbSBmcm9tIHRoZSBmaWZvLgotCi0KLSAgIC4uIG1ldGhvZDo6IHB1c2goZGF0YSkKLQotICAgICAgQWRkcyB0aGUgZ2l2ZW4gZGF0YSAod2hpY2ggbWF5IGJlIGEgc3RyaW5nIG9yIGEgcHJvZHVjZXIgb2JqZWN0KSB0byB0aGUKLSAgICAgIHByb2R1Y2VyIGZpZm8uCi0KLQotICAgLi4gbWV0aG9kOjogcG9wKCkKLQotICAgICAgSWYgdGhlIGZpZm8gaXMgbm90IGVtcHR5LCByZXR1cm5zIGBgVHJ1ZSwgZmlyc3QoKWBgLCBkZWxldGluZyB0aGUgcG9wcGVkCi0gICAgICBpdGVtLiAgUmV0dXJucyBgYEZhbHNlLCBOb25lYGAgZm9yIGFuIGVtcHR5IGZpZm8uCi0KLQogLi4gX2FzeW5jaGF0LWV4YW1wbGU6CiAKIGFzeW5jaGF0IEV4YW1wbGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZGV2LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZGV2LnJzdAppbmRleCA0ODEyYzJmLi40OGU3NjY2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWRldi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1kZXYucnN0CkBAIC05OSw3ICs5OSw3IEBACiA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZWAgbWV0aG9kIHNob3VsZCBiZSB1c2VkLiBFeGFtcGxlIHRvCiBzY2hlZHVsZSBhIGNvcm91dGluZSBmcm9tIGEgZGlmZmVyZW50IHRocmVhZDo6CiAKLSAgICBsb29wLmNhbGxfc29vbl90aHJlYWRzYWZlKGFzeW5jaW8uYXN5bmMsIGNvcm9fZnVuYygpKQorICAgIGxvb3AuY2FsbF9zb29uX3RocmVhZHNhZmUoYXN5bmNpby5lbnN1cmVfZnV0dXJlLCBjb3JvX2Z1bmMoKSkKIAogTW9zdCBhc3luY2lvIG9iamVjdHMgYXJlIG5vdCB0aHJlYWQgc2FmZS4gWW91IHNob3VsZCBvbmx5IHdvcnJ5IGlmIHlvdSBhY2Nlc3MKIG9iamVjdHMgb3V0c2lkZSB0aGUgZXZlbnQgbG9vcC4gRm9yIGV4YW1wbGUsIHRvIGNhbmNlbCBhIGZ1dHVyZSwgZG9uJ3QgY2FsbApAQCAtMTYyLDEwICsxNjIsMTAgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2hlbiBhIGNvcm91dGluZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGl0cyByZXN1bHQgaXMgbm90IHBhc3NlZCB0bwotOmZ1bmM6YGFzeW5jYCBvciB0byB0aGUgOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgIG1ldGhvZCwgdGhlIGV4ZWN1dGlvbgotb2YgdGhlIGNvcm91dGluZSBvYmplY3Qgd2lsbCBuZXZlciBiZSBzY2hlZHVsZWQgd2hpY2ggaXMgcHJvYmFibHkgYSBidWcuCi06cmVmOmBFbmFibGUgdGhlIGRlYnVnIG1vZGUgb2YgYXN5bmNpbyA8YXN5bmNpby1kZWJ1Zy1tb2RlPmAgdG8gOnJlZjpgbG9nIGEKLXdhcm5pbmcgPGFzeW5jaW8tbG9nZ2VyPmAgdG8gZGV0ZWN0IGl0LgorOmZ1bmM6YGVuc3VyZV9mdXR1cmVgIG9yIHRvIHRoZSA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AgbWV0aG9kLAordGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29yb3V0aW5lIG9iamVjdCB3aWxsIG5ldmVyIGJlIHNjaGVkdWxlZCB3aGljaCBpcworcHJvYmFibHkgYSBidWcuICA6cmVmOmBFbmFibGUgdGhlIGRlYnVnIG1vZGUgb2YgYXN5bmNpbyA8YXN5bmNpby1kZWJ1Zy1tb2RlPmAKK3RvIDpyZWY6YGxvZyBhIHdhcm5pbmcgPGFzeW5jaW8tbG9nZ2VyPmAgdG8gZGV0ZWN0IGl0LgogCiBFeGFtcGxlIHdpdGggdGhlIGJ1Zzo6CiAKQEAgLTE4NCw3ICsxODQsNyBAQAogICAgICAgRmlsZSAidGVzdC5weSIsIGxpbmUgNywgaW4gPG1vZHVsZT4KICAgICAgICAgdGVzdCgpCiAKLVRoZSBmaXggaXMgdG8gY2FsbCB0aGUgOmZ1bmM6YGFzeW5jYCBmdW5jdGlvbiBvciB0aGUKK1RoZSBmaXggaXMgdG8gY2FsbCB0aGUgOmZ1bmM6YGVuc3VyZV9mdXR1cmVgIGZ1bmN0aW9uIG9yIHRoZQogOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgIG1ldGhvZCB3aXRoIHRoZSBjb3JvdXRpbmUgb2JqZWN0LgogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdAppbmRleCA3OGEwN2EwLi4wNzkyYTgzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CkBAIC0zNiw3ICszNiw3IEBACiAgICBSdW4gdW50aWwgdGhlIDpjbGFzczpgRnV0dXJlYCBpcyBkb25lLgogCiAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSA6cmVmOmBjb3JvdXRpbmUgb2JqZWN0IDxjb3JvdXRpbmU+YCwgaXQgaXMgd3JhcHBlZCBieQotICAgOmZ1bmM6YGFzeW5jYC4KKyAgIDpmdW5jOmBlbnN1cmVfZnV0dXJlYC4KIAogICAgUmV0dXJuIHRoZSBGdXR1cmUncyByZXN1bHQsIG9yIHJhaXNlIGl0cyBleGNlcHRpb24uCiAKQEAgLTI3NSw3ICsyNzUsOSBAQAogICAgICB0byBiaW5kIHRoZSBzb2NrZXQgdG8gbG9jYWxseS4gIFRoZSAqbG9jYWxfaG9zdCogYW5kICpsb2NhbF9wb3J0KgogICAgICBhcmUgbG9va2VkIHVwIHVzaW5nIGdldGFkZHJpbmZvKCksIHNpbWlsYXJseSB0byAqaG9zdCogYW5kICpwb3J0Ki4KIAotICAgT24gV2luZG93cyB3aXRoIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgLCBTU0wvVExTIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBPbiBXaW5kb3dzIHdpdGggOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAsIFNTTC9UTFMgaXMgbm93IHN1cHBvcnRlZC4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTM2MSwxNCArMzYzLDE2IEBACiAKICAgIFRoaXMgbWV0aG9kIGlzIGEgOnJlZjpgY29yb3V0aW5lIDxjb3JvdXRpbmU+YC4KIAotICAgT24gV2luZG93cyB3aXRoIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgLCBTU0wvVExTIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBPbiBXaW5kb3dzIHdpdGggOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAsIFNTTC9UTFMgaXMgbm93IHN1cHBvcnRlZC4KIAogICAgLi4gc2VlYWxzbzo6CiAKICAgICAgIFRoZSBmdW5jdGlvbiA6ZnVuYzpgc3RhcnRfc2VydmVyYCBjcmVhdGVzIGEgKDpjbGFzczpgU3RyZWFtUmVhZGVyYCwKICAgICAgIDpjbGFzczpgU3RyZWFtV3JpdGVyYCkgcGFpciBhbmQgY2FsbHMgYmFjayBhIGZ1bmN0aW9uIHdpdGggdGhpcyBwYWlyLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC40CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4xCiAKICAgICAgIFRoZSAqaG9zdCogcGFyYW1ldGVyIGNhbiBub3cgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3BzLnJzdAppbmRleCBhZmI4YjlmLi5hZTNiZjkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wcy5yc3QKQEAgLTEwMCw4ICsxMDAsNiBAQAogCiA6Y2xhc3M6YFByb2FjdG9yRXZlbnRMb29wYCBzcGVjaWZpYyBsaW1pdHM6CiAKLS0gU1NMIGlzIG5vdCBzdXBwb3J0ZWQ6IDptZXRoOmB+QmFzZUV2ZW50TG9vcC5jcmVhdGVfY29ubmVjdGlvbmAgYW5kCi0gIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5jcmVhdGVfc2VydmVyYCBjYW5ub3QgYmUgdXNlZCB3aXRoIFNTTCBmb3IgZXhhbXBsZQogLSA6bWV0aDpgfkJhc2VFdmVudExvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50YCAoVURQKSBpcyBub3Qgc3VwcG9ydGVkCiAtIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5hZGRfcmVhZGVyYCBhbmQgOm1ldGg6YH5CYXNlRXZlbnRMb29wLmFkZF93cml0ZXJgIGFyZQogICBub3Qgc3VwcG9ydGVkCkBAIC0xMTIsNiArMTEwLDEwIEBACiA8aHR0cDovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9IaWdoX1ByZWNpc2lvbl9FdmVudF9UaW1lcj5gXykgYW5kIG9uIHRoZSBXaW5kb3dzCiBjb25maWd1cmF0aW9uLiBTZWUgOnJlZjpgYXN5bmNpbyBkZWxheWVkIGNhbGxzIDxhc3luY2lvLWRlbGF5ZWQtY2FsbHM+YC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAgbm93IHN1cHBvcnRzIFNTTC4KKwogCiBNYWMgT1MgWAogXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QKaW5kZXggNjU2ODE2Zi4uMThhZWFmYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QKQEAgLTgyLDcgKzgyLDcgQEAKIAogICAgICAgICAtIGBgJ3N1YnByb2Nlc3MnYGA6IDpjbGFzczpgc3VicHJvY2Vzcy5Qb3BlbmAgaW5zdGFuY2UKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuNAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMQogICAgICAgYGAnc3NsX29iamVjdCdgYCBpbmZvIHdhcyBhZGRlZCB0byBTU0wgc29ja2V0cy4KIAogCkBAIC00NTMsOSArNDUzLDkgQEAKIENvcm91dGluZXMgYW5kIHByb3RvY29scwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNvcm91dGluZXMgY2FuIGJlIHNjaGVkdWxlZCBpbiBhIHByb3RvY29sIG1ldGhvZCB1c2luZyA6ZnVuYzpgYXN5bmNgLCBidXQgdGhlcmUKLWlzIG5vIGd1YXJhbnRlZSBtYWRlIGFib3V0IHRoZSBleGVjdXRpb24gb3JkZXIuICBQcm90b2NvbHMgYXJlIG5vdCBhd2FyZSBvZgotY29yb3V0aW5lcyBjcmVhdGVkIGluIHByb3RvY29sIG1ldGhvZHMgYW5kIHNvIHdpbGwgbm90IHdhaXQgZm9yIHRoZW0uCitDb3JvdXRpbmVzIGNhbiBiZSBzY2hlZHVsZWQgaW4gYSBwcm90b2NvbCBtZXRob2QgdXNpbmcgOmZ1bmM6YGVuc3VyZV9mdXR1cmVgLAorYnV0IHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBtYWRlIGFib3V0IHRoZSBleGVjdXRpb24gb3JkZXIuICBQcm90b2NvbHMgYXJlIG5vdAorYXdhcmUgb2YgY29yb3V0aW5lcyBjcmVhdGVkIGluIHByb3RvY29sIG1ldGhvZHMgYW5kIHNvIHdpbGwgbm90IHdhaXQgZm9yIHRoZW0uCiAKIFRvIGhhdmUgYSByZWxpYWJsZSBleGVjdXRpb24gb3JkZXIsIHVzZSA6cmVmOmBzdHJlYW0gb2JqZWN0cyA8YXN5bmNpby1zdHJlYW1zPmAgaW4gYQogY29yb3V0aW5lIHdpdGggYGB5aWVsZCBmcm9tYGAuIEZvciBleGFtcGxlLCB0aGUgOm1ldGg6YFN0cmVhbVdyaXRlci5kcmFpbmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QKaW5kZXggMzM3MDY3Mi4uZjExYzA5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QKQEAgLTgsNyArOCw2IEBACiAqIDpjbGFzczpgUXVldWVgCiAqIDpjbGFzczpgUHJpb3JpdHlRdWV1ZWAKICogOmNsYXNzOmBMaWZvUXVldWVgCi0qIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAKIAogYXN5bmNpbyBxdWV1ZSBBUEkgd2FzIGRlc2lnbmVkIHRvIGJlIGNsb3NlIHRvIGNsYXNzZXMgb2YgdGhlIDptb2Q6YHF1ZXVlYAogbW9kdWxlICg6Y2xhc3M6YH5xdWV1ZS5RdWV1ZWAsIDpjbGFzczpgfnF1ZXVlLlByaW9yaXR5UXVldWVgLApAQCAtMTQ0LDE2ICsxNDMsNiBAQAogICAgIGZpcnN0LgogCiAKLUpvaW5hYmxlUXVldWUKLV5eXl5eXl5eXl5eXl4KLQotLi4gY2xhc3M6OiBKb2luYWJsZVF1ZXVlCi0KLSAgIERlcHJlY2F0ZWQgYWxpYXMgZm9yIDpjbGFzczpgUXVldWVgLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy40LjQKLQotCiBFeGNlcHRpb25zCiBeXl5eXl5eXl5eCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tdGFzay5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLXRhc2sucnN0CmluZGV4IGU3ZmY3ZDIuLjE2NmFiNzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tdGFzay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby10YXNrLnJzdApAQCAtOCwxNyArOCwyMyBAQAogQ29yb3V0aW5lcwogLS0tLS0tLS0tLQogCi1BIGNvcm91dGluZSBpcyBhIGdlbmVyYXRvciB0aGF0IGZvbGxvd3MgY2VydGFpbiBjb252ZW50aW9ucy4gIEZvcgotZG9jdW1lbnRhdGlvbiBwdXJwb3NlcywgYWxsIGNvcm91dGluZXMgc2hvdWxkIGJlIGRlY29yYXRlZCB3aXRoCi1gYEBhc3luY2lvLmNvcm91dGluZWBgLCBidXQgdGhpcyBjYW5ub3QgYmUgc3RyaWN0bHkgZW5mb3JjZWQuCitDb3JvdXRpbmVzIHVzZWQgd2l0aCA6bW9kOmBhc3luY2lvYCBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlCis6a2V5d29yZDpgYXN5bmMgZGVmYCBzdGF0ZW1lbnQsIG9yIGJ5IHVzaW5nIDp0ZXJtOmBnZW5lcmF0b3JzIDxnZW5lcmF0b3I+YC4KK1RoZSA6a2V5d29yZDpgYXN5bmMgZGVmYCB0eXBlIG9mIGNvcm91dGluZSB3YXMgYWRkZWQgaW4gUHl0aG9uIDMuNSwgYW5kCitpcyByZWNvbW1lbmRlZCBpZiB0aGVyZSBpcyBubyBuZWVkIHRvIHN1cHBvcnQgb2xkZXIgUHl0aG9uIHZlcnNpb25zLgogCi1Db3JvdXRpbmVzIHVzZSB0aGUgYGB5aWVsZCBmcm9tYGAgc3ludGF4IGludHJvZHVjZWQgaW4gOnBlcDpgMzgwYCwKK0dlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzIHNob3VsZCBiZSBkZWNvcmF0ZWQgd2l0aCA6ZnVuYzpgQGFzeW5jaW8uY29yb3V0aW5lCis8YXN5bmNpby5jb3JvdXRpbmU+YCwgYWx0aG91Z2ggdGhpcyBpcyBub3Qgc3RyaWN0bHkgZW5mb3JjZWQuCitUaGUgZGVjb3JhdG9yIGVuYWJsZXMgY29tcGF0aWJpbGl0eSB3aXRoIDprZXl3b3JkOmBhc3luYyBkZWZgIGNvcm91dGluZXMsCithbmQgYWxzbyBzZXJ2ZXMgYXMgZG9jdW1lbnRhdGlvbi4gIEdlbmVyYXRvci1iYXNlZAorY29yb3V0aW5lcyB1c2UgdGhlIGBgeWllbGQgZnJvbWBgIHN5bnRheCBpbnRyb2R1Y2VkIGluIDpwZXA6YDM4MGAsCiBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBgYHlpZWxkYGAgc3ludGF4LgogCiBUaGUgd29yZCAiY29yb3V0aW5lIiwgbGlrZSB0aGUgd29yZCAiZ2VuZXJhdG9yIiwgaXMgdXNlZCBmb3IgdHdvCiBkaWZmZXJlbnQgKHRob3VnaCByZWxhdGVkKSBjb25jZXB0czoKIAotLSBUaGUgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIGEgY29yb3V0aW5lIChhIGZ1bmN0aW9uIGRlZmluaXRpb24KKy0gVGhlIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyBhIGNvcm91dGluZQorICAoYSBmdW5jdGlvbiBkZWZpbml0aW9uIHVzaW5nIDprZXl3b3JkOmBhc3luYyBkZWZgIG9yCiAgIGRlY29yYXRlZCB3aXRoIGBgQGFzeW5jaW8uY29yb3V0aW5lYGApLiAgSWYgZGlzYW1iaWd1YXRpb24gaXMgbmVlZGVkCiAgIHdlIHdpbGwgY2FsbCB0aGlzIGEgKmNvcm91dGluZSBmdW5jdGlvbiogKDpmdW5jOmBpc2Nvcm91dGluZWZ1bmN0aW9uYAogICByZXR1cm5zIGBgVHJ1ZWBgKS4KQEAgLTMwLDI5ICszNiwzMCBAQAogCiBUaGluZ3MgYSBjb3JvdXRpbmUgY2FuIGRvOgogCi0tIGBgcmVzdWx0ID0geWllbGQgZnJvbSBmdXR1cmVgYCAtLSBzdXNwZW5kcyB0aGUgY29yb3V0aW5lIHVudGlsIHRoZQorLSBgYHJlc3VsdCA9IGF3YWl0IGZ1dHVyZWBgIG9yIGBgcmVzdWx0ID0geWllbGQgZnJvbSBmdXR1cmVgYCAtLQorICBzdXNwZW5kcyB0aGUgY29yb3V0aW5lIHVudGlsIHRoZQogICBmdXR1cmUgaXMgZG9uZSwgdGhlbiByZXR1cm5zIHRoZSBmdXR1cmUncyByZXN1bHQsIG9yIHJhaXNlcyBhbgogICBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgcHJvcGFnYXRlZC4gIChJZiB0aGUgZnV0dXJlIGlzIGNhbmNlbGxlZCwKICAgaXQgd2lsbCByYWlzZSBhIGBgQ2FuY2VsbGVkRXJyb3JgYCBleGNlcHRpb24uKSAgTm90ZSB0aGF0IHRhc2tzIGFyZQogICBmdXR1cmVzLCBhbmQgZXZlcnl0aGluZyBzYWlkIGFib3V0IGZ1dHVyZXMgYWxzbyBhcHBsaWVzIHRvIHRhc2tzLgogCi0tIGBgcmVzdWx0ID0geWllbGQgZnJvbSBjb3JvdXRpbmVgYCAtLSB3YWl0IGZvciBhbm90aGVyIGNvcm91dGluZSB0bworLSBgYHJlc3VsdCA9IGF3YWl0IGNvcm91dGluZWBgIG9yIGBgcmVzdWx0ID0geWllbGQgZnJvbSBjb3JvdXRpbmVgYCAtLQorICB3YWl0IGZvciBhbm90aGVyIGNvcm91dGluZSB0bwogICBwcm9kdWNlIGEgcmVzdWx0IChvciByYWlzZSBhbiBleGNlcHRpb24sIHdoaWNoIHdpbGwgYmUgcHJvcGFnYXRlZCkuCiAgIFRoZSBgYGNvcm91dGluZWBgIGV4cHJlc3Npb24gbXVzdCBiZSBhICpjYWxsKiB0byBhbm90aGVyIGNvcm91dGluZS4KIAogLSBgYHJldHVybiBleHByZXNzaW9uYGAgLS0gcHJvZHVjZSBhIHJlc3VsdCB0byB0aGUgY29yb3V0aW5lIHRoYXQgaXMKLSAgd2FpdGluZyBmb3IgdGhpcyBvbmUgdXNpbmcgYGB5aWVsZCBmcm9tYGAuCisgIHdhaXRpbmcgZm9yIHRoaXMgb25lIHVzaW5nIDprZXl3b3JkOmBhd2FpdGAgb3IgYGB5aWVsZCBmcm9tYGAuCiAKIC0gYGByYWlzZSBleGNlcHRpb25gYCAtLSByYWlzZSBhbiBleGNlcHRpb24gaW4gdGhlIGNvcm91dGluZSB0aGF0IGlzCi0gIHdhaXRpbmcgZm9yIHRoaXMgb25lIHVzaW5nIGBgeWllbGQgZnJvbWBgLgorICB3YWl0aW5nIGZvciB0aGlzIG9uZSB1c2luZyA6a2V5d29yZDpgYXdhaXRgIG9yIGBgeWllbGQgZnJvbWBgLgogCi1DYWxsaW5nIGEgY29yb3V0aW5lIGRvZXMgbm90IHN0YXJ0IGl0cyBjb2RlIHJ1bm5pbmcgLS0gaXQgaXMganVzdCBhCi1nZW5lcmF0b3IsIGFuZCB0aGUgY29yb3V0aW5lIG9iamVjdCByZXR1cm5lZCBieSB0aGUgY2FsbCBpcyByZWFsbHkgYQotZ2VuZXJhdG9yIG9iamVjdCwgd2hpY2ggZG9lc24ndCBkbyBhbnl0aGluZyB1bnRpbCB5b3UgaXRlcmF0ZSBvdmVyIGl0LgotSW4gdGhlIGNhc2Ugb2YgYSBjb3JvdXRpbmUgb2JqZWN0LCB0aGVyZSBhcmUgdHdvIGJhc2ljIHdheXMgdG8gc3RhcnQKLWl0IHJ1bm5pbmc6IGNhbGwgYGB5aWVsZCBmcm9tIGNvcm91dGluZWBgIGZyb20gYW5vdGhlciBjb3JvdXRpbmUKK0NhbGxpbmcgYSBjb3JvdXRpbmUgZG9lcyBub3Qgc3RhcnQgaXRzIGNvZGUgcnVubmluZyAtLQordGhlIGNvcm91dGluZSBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIGNhbGwgZG9lc24ndCBkbyBhbnl0aGluZyB1bnRpbCB5b3UKK3NjaGVkdWxlIGl0cyBleGVjdXRpb24uICBUaGVyZSBhcmUgdHdvIGJhc2ljIHdheXMgdG8gc3RhcnQgaXQgcnVubmluZzoKK2NhbGwgYGBhd2FpdCBjb3JvdXRpbmVgYCBvciBgYHlpZWxkIGZyb20gY29yb3V0aW5lYGAgZnJvbSBhbm90aGVyIGNvcm91dGluZQogKGFzc3VtaW5nIHRoZSBvdGhlciBjb3JvdXRpbmUgaXMgYWxyZWFkeSBydW5uaW5nISksIG9yIHNjaGVkdWxlIGl0cyBleGVjdXRpb24KLXVzaW5nIHRoZSA6ZnVuYzpgYXN5bmNgIGZ1bmN0aW9uIG9yIHRoZSA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AKK3VzaW5nIHRoZSA6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAgZnVuY3Rpb24gb3IgdGhlIDptZXRoOmBCYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrYAogbWV0aG9kLgogCiAKQEAgLTYwLDkgKzY3LDE1IEBACiAKIC4uIGRlY29yYXRvcjo6IGNvcm91dGluZQogCi0gICAgRGVjb3JhdG9yIHRvIG1hcmsgY29yb3V0aW5lcy4KKyAgICBEZWNvcmF0b3IgdG8gbWFyayBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcy4gIFRoaXMgZW5hYmxlcworICAgIHRoZSBnZW5lcmF0b3IgdXNlIDprZXl3b3JkOmAheWllbGQgZnJvbWAgdG8gY2FsbCA6a2V5d29yZDpgYXN5bmMKKyAgICBkZWZgIGNvcm91dGluZXMsIGFuZCBhbHNvIGVuYWJsZXMgdGhlIGdlbmVyYXRvciB0byBiZSBjYWxsZWQgYnkKKyAgICA6a2V5d29yZDpgYXN5bmMgZGVmYCBjb3JvdXRpbmVzLCBmb3IgaW5zdGFuY2UgdXNpbmcgYW4KKyAgICA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb24uCiAKLSAgICBJZiB0aGUgY29yb3V0aW5lIGlzIG5vdCB5aWVsZGVkIGZyb20gYmVmb3JlIGl0IGlzIGRlc3Ryb3llZCwgYW4gZXJyb3IKKyAgICBUaGVyZSBpcyBubyBuZWVkIHRvIGRlY29yYXRlIDprZXl3b3JkOmBhc3luYyBkZWZgIGNvcm91dGluZXMgdGhlbXNlbHZlcy4KKworICAgIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90IHlpZWxkZWQgZnJvbSBiZWZvcmUgaXQgaXMgZGVzdHJveWVkLCBhbiBlcnJvcgogICAgIG1lc3NhZ2UgaXMgbG9nZ2VkLiBTZWUgOnJlZjpgRGV0ZWN0IGNvcm91dGluZXMgbmV2ZXIgc2NoZWR1bGVkCiAgICAgPGFzeW5jaW8tY29yb3V0aW5lLW5vdC1zY2hlZHVsZWQ+YC4KIApAQCAtNzIsNyArODUsNyBAQAogICAgIGV2ZW4gaWYgdGhleSBhcmUgcGxhaW4gUHl0aG9uIGZ1bmN0aW9ucyByZXR1cm5pbmcgYSA6Y2xhc3M6YEZ1dHVyZWAuCiAgICAgVGhpcyBpcyBpbnRlbnRpb25hbCB0byBoYXZlIGEgZnJlZWRvbSBvZiB0d2Vha2luZyB0aGUgaW1wbGVtZW50YXRpb24KICAgICBvZiB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgc3VjaCBhIGZ1bmN0aW9uIGlzIG5lZWRlZCB0byBiZQotICAgIHVzZWQgaW4gYSBjYWxsYmFjay1zdHlsZSBjb2RlLCB3cmFwIGl0cyByZXN1bHQgd2l0aCA6ZnVuYzpgYXN5bmNgLgorICAgIHVzZWQgaW4gYSBjYWxsYmFjay1zdHlsZSBjb2RlLCB3cmFwIGl0cyByZXN1bHQgd2l0aCA6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAuCiAKIAogLi4gX2FzeW5jaW8taGVsbG8td29ybGQtY29yb3V0aW5lOgpAQCAtODQsOCArOTcsNyBAQAogCiAgICAgaW1wb3J0IGFzeW5jaW8KIAotICAgIEBhc3luY2lvLmNvcm91dGluZQotICAgIGRlZiBoZWxsb193b3JsZCgpOgorICAgIGFzeW5jIGRlZiBoZWxsb193b3JsZCgpOgogICAgICAgICBwcmludCgiSGVsbG8gV29ybGQhIikKIAogICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKQEAgLTExMSw2ICsxMjMsMjEgQEAKICAgICBpbXBvcnQgYXN5bmNpbwogICAgIGltcG9ydCBkYXRldGltZQogCisgICAgYXN5bmMgZGVmIGRpc3BsYXlfZGF0ZShsb29wKToKKyAgICAgICAgZW5kX3RpbWUgPSBsb29wLnRpbWUoKSArIDUuMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgcHJpbnQoZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkpCisgICAgICAgICAgICBpZiAobG9vcC50aW1lKCkgKyAxLjApID49IGVuZF90aW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDEpCisKKyAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCisgICAgIyBCbG9ja2luZyBjYWxsIHdoaWNoIHJldHVybnMgd2hlbiB0aGUgZGlzcGxheV9kYXRlKCkgY29yb3V0aW5lIGlzIGRvbmUKKyAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShkaXNwbGF5X2RhdGUobG9vcCkpCisgICAgbG9vcC5jbG9zZSgpCisKK1RoZSBzYW1lIGNvcm91dGluZSBpbXBsZW1lbnRlZCB1c2luZyBhIGdlbmVyYXRvcjo6CisKICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICBkZWYgZGlzcGxheV9kYXRlKGxvb3ApOgogICAgICAgICBlbmRfdGltZSA9IGxvb3AudGltZSgpICsgNS4wCkBAIC0xMjAsMTEgKzE0Nyw2IEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHlpZWxkIGZyb20gYXN5bmNpby5zbGVlcCgxKQogCi0gICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQotICAgICMgQmxvY2tpbmcgY2FsbCB3aGljaCByZXR1cm5zIHdoZW4gdGhlIGRpc3BsYXlfZGF0ZSgpIGNvcm91dGluZSBpcyBkb25lCi0gICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoZGlzcGxheV9kYXRlKGxvb3ApKQotICAgIGxvb3AuY2xvc2UoKQotCiAuLiBzZWVhbHNvOjoKIAogICAgVGhlIDpyZWY6YGRpc3BsYXkgdGhlIGN1cnJlbnQgZGF0ZSB3aXRoIGNhbGxfbGF0ZXIoKQpAQCAtMTM5LDE1ICsxNjEsMTMgQEAKIAogICAgIGltcG9ydCBhc3luY2lvCiAKLSAgICBAYXN5bmNpby5jb3JvdXRpbmUKLSAgICBkZWYgY29tcHV0ZSh4LCB5KToKKyAgICBhc3luYyBkZWYgY29tcHV0ZSh4LCB5KToKICAgICAgICAgcHJpbnQoIkNvbXB1dGUgJXMgKyAlcyAuLi4iICUgKHgsIHkpKQotICAgICAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMS4wKQorICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDEuMCkKICAgICAgICAgcmV0dXJuIHggKyB5CiAKLSAgICBAYXN5bmNpby5jb3JvdXRpbmUKLSAgICBkZWYgcHJpbnRfc3VtKHgsIHkpOgotICAgICAgICByZXN1bHQgPSB5aWVsZCBmcm9tIGNvbXB1dGUoeCwgeSkKKyAgICBhc3luYyBkZWYgcHJpbnRfc3VtKHgsIHkpOgorICAgICAgICByZXN1bHQgPSBhd2FpdCBjb21wdXRlKHgsIHkpCiAgICAgICAgIHByaW50KCIlcyArICVzID0gJXMiICUgKHgsIHksIHJlc3VsdCkpCiAKICAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCkBAIC0zNzQsNyArMzk0LDcgQEAKICAgIDxjb3JvdXRpbmU+YCBkaWQgbm90IGNvbXBsZXRlLiBJdCBpcyBwcm9iYWJseSBhIGJ1ZyBhbmQgYSB3YXJuaW5nIGlzCiAgICBsb2dnZWQ6IHNlZSA6cmVmOmBQZW5kaW5nIHRhc2sgZGVzdHJveWVkIDxhc3luY2lvLXBlbmRpbmctdGFzay1kZXN0cm95ZWQ+YC4KIAotICAgRG9uJ3QgZGlyZWN0bHkgY3JlYXRlIDpjbGFzczpgVGFza2AgaW5zdGFuY2VzOiB1c2UgdGhlIDpmdW5jOmBhc3luY2AKKyAgIERvbid0IGRpcmVjdGx5IGNyZWF0ZSA6Y2xhc3M6YFRhc2tgIGluc3RhbmNlczogdXNlIHRoZSA6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAKICAgIGZ1bmN0aW9uIG9yIHRoZSA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AgbWV0aG9kLgogCiAgICBUaGlzIGNsYXNzIGlzIDpyZWY6YG5vdCB0aHJlYWQgc2FmZSA8YXN5bmNpby1tdWx0aXRocmVhZGluZz5gLgpAQCAtNTUwLDEyICs1NzAsMTQgQEAKIAogLi4gZnVuY3Rpb246OiBpc2Nvcm91dGluZShvYmopCiAKLSAgIFJldHVybiBgYFRydWVgYCBpZiAqb2JqKiBpcyBhIDpyZWY6YGNvcm91dGluZSBvYmplY3QgPGNvcm91dGluZT5gLgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpvYmoqIGlzIGEgOnJlZjpgY29yb3V0aW5lIG9iamVjdCA8Y29yb3V0aW5lPmAsCisgICB3aGljaCBtYXkgYmUgYmFzZWQgb24gYSBnZW5lcmF0b3Igb3IgYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgY29yb3V0aW5lLgogCi0uLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lZnVuY3Rpb24ob2JqKQorLi4gZnVuY3Rpb246OiBpc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpCiAKLSAgIFJldHVybiBgYFRydWVgYCBpZiAqZnVuYyogaXMgYSBkZWNvcmF0ZWQgOnJlZjpgY29yb3V0aW5lIGZ1bmN0aW9uCi0gICA8Y29yb3V0aW5lPmAuCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgKmZ1bmMqIGlzIGRldGVybWluZWQgdG8gYmUgYSA6cmVmOmBjb3JvdXRpbmUgZnVuY3Rpb24KKyAgIDxjb3JvdXRpbmU+YCwgd2hpY2ggbWF5IGJlIGEgZGVjb3JhdGVkIGdlbmVyYXRvciBmdW5jdGlvbiBvciBhbgorICAgOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24uCiAKIC4uIGNvcm91dGluZWZ1bmN0aW9uOjogc2xlZXAoZGVsYXksIHJlc3VsdD1Ob25lLCBcKiwgbG9vcD1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iejIucnN0IGIvRG9jL2xpYnJhcnkvYnoyLnJzdAppbmRleCA0ODhjZGE1Li4xYjhkOWNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iejIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKQEAgLTEyMCw2ICsxMjAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGAneCdgYCAoZXhjbHVzaXZlIGNyZWF0aW9uKSBtb2RlIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgorICAgICAgYGBOb25lYGAuCisKIAogSW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2MiwxNSArMTY2LDMyIEBACiAgICAgICB5b3UgbmVlZCB0byBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLAogICAgICAgeW91IG11c3QgdXNlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCiAKLSAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aD0tMSkKIAotICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkCi0gICAgICBkYXRhIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisgICAgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgKSwgcmV0dXJuaW5nCisgICAgICB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4gU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkCisgICAgICBpbnRlcm5hbGx5LCBmb3IgdXNlIGluIGxhdGVyIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlCisgICAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueQorICAgICAgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLgogCi0gICAgICBBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN0cmVhbSBpcwotICAgICAgcmVhY2hlZCByYWlzZXMgYW4gOmV4YzpgRU9GRXJyb3JgLiBJZiBhbnkgZGF0YSBpcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mCi0gICAgICB0aGUgc3RyZWFtLCBpdCBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YHVudXNlZF9kYXRhYCBhdHRyaWJ1dGUuCisgICAgICBJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCoKKyAgICAgIGJ5dGVzIG9mIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIKKyAgICAgIG91dHB1dCBjYW4gYmUgcHJvZHVjZWQsIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlIHdpbGwKKyAgICAgIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHQgY2FsbCB0bworICAgICAgOm1ldGg6YH4uZGVjb21wcmVzc2AgbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGBgYicnYGAgdG8gb2J0YWluCisgICAgICBtb3JlIG9mIHRoZSBvdXRwdXQuCiAKKyAgICAgIElmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyCisgICAgICBiZWNhdXNlIHRoaXMgd2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UKKyAgICAgICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLCB0aGUgOmF0dHI6YH4ubmVlZHNfaW5wdXRgIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBzZXQgdG8gYGBUcnVlYGAuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKKyAgICAgIHJhaXNlcyBhbiBgRU9GRXJyb3JgLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKKyAgICAgIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YH4udW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgIEFkZGVkIHRoZSAqbWF4X2xlbmd0aCogcGFyYW1ldGVyLgogCiAgICAuLiBhdHRyaWJ1dGU6OiBlb2YKIApAQCAtMTg2LDYgKzIwNywxMyBAQAogICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBoYXMgYmVlbgogICAgICAgcmVhY2hlZCwgaXRzIHZhbHVlIHdpbGwgYmUgYGBiJydgYC4KIAorICAgLi4gYXR0cmlidXRlOjogbmVlZHNfaW5wdXQKKworICAgICAgYGBGYWxzZWBgIGlmIHRoZSA6bWV0aDpgLmRlY29tcHJlc3NgIG1ldGhvZCBjYW4gcHJvdmlkZSBtb3JlCisgICAgICBkZWNvbXByZXNzZWQgZGF0YSBiZWZvcmUgcmVxdWlyaW5nIG5ldyB1bmNvbXByZXNzZWQgaW5wdXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIE9uZS1zaG90IChkZSljb21wcmVzc2lvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jZ2kucnN0IGIvRG9jL2xpYnJhcnkvY2dpLnJzdAppbmRleCA3NGFiZWQ1Li43ZTQ5NmNhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jZ2kucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NnaS5yc3QKQEAgLTE1Nyw2ICsxNTcsOSBAQAogICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKICAgICAgICAgICAgbGluZWNvdW50ID0gbGluZWNvdW50ICsgMQogCis6Y2xhc3M6YEZpZWxkU3RvcmFnZWAgb2JqZWN0cyBhbHNvIHN1cHBvcnQgYmVpbmcgdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50LCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgdGhlbSB3aGVuIGRvbmUuCisKIElmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkIHdoZW4gb2J0YWluaW5nIHRoZSBjb250ZW50cyBvZiBhbiB1cGxvYWRlZCBmaWxlCiAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHVzZXIgaW50ZXJydXB0cyB0aGUgZm9ybSBzdWJtaXNzaW9uIGJ5IGNsaWNraW5nIG9uCiBhIEJhY2sgb3IgQ2FuY2VsIGJ1dHRvbikgdGhlIDphdHRyOmB+RmllbGRTdG9yYWdlLmRvbmVgIGF0dHJpYnV0ZSBvZiB0aGUKQEAgLTE4Miw2ICsxODUsMTAgQEAKICAgIFRoZSA6YXR0cjpgfkZpZWxkU3RvcmFnZS5maWxlYCBhdHRyaWJ1dGUgaXMgYXV0b21hdGljYWxseSBjbG9zZWQgdXBvbiB0aGUKICAgIGdhcmJhZ2UgY29sbGVjdGlvbiBvZiB0aGUgY3JlYXRpbmcgOmNsYXNzOmBGaWVsZFN0b3JhZ2VgIGluc3RhbmNlLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCB0byB0aGUKKyAgIDpjbGFzczpgRmllbGRTdG9yYWdlYCBjbGFzcy4KKwogCiBIaWdoZXIgTGV2ZWwgSW50ZXJmYWNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKaW5kZXggYTk4MWQ5NC4uYWI2MTlhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdApAQCAtMjA3LDYgKzIwNywzOCBAQAogICAgYW5kIGBgRmFsc2VgYCBvdGhlcndpc2UuCiAKIAorLi4gZnVuY3Rpb246OiBpc2Nsb3NlKGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHZhbHVlcyAqYSogYW5kICpiKiBhcmUgY2xvc2UgdG8gZWFjaCBvdGhlciBhbmQKKyAgIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKKyAgIFdoZXRoZXIgb3Igbm90IHR3byB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgY2xvc2UgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8KKyAgIGdpdmVuIGFic29sdXRlIGFuZCByZWxhdGl2ZSB0b2xlcmFuY2VzLgorCisgICAqcmVsX3RvbCogaXMgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZSAtLSBpdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGRpZmZlcmVuY2UKKyAgIGJldHdlZW4gKmEqIGFuZCAqYiosIHJlbGF0aXZlIHRvIHRoZSBsYXJnZXIgYWJzb2x1dGUgdmFsdWUgb2YgKmEqIG9yICpiKi4KKyAgIEZvciBleGFtcGxlLCB0byBzZXQgYSB0b2xlcmFuY2Ugb2YgNSUsIHBhc3MgYGByZWxfdG9sPTAuMDVgYC4gIFRoZSBkZWZhdWx0CisgICB0b2xlcmFuY2UgaXMgYGAxZS0wOWBgLCB3aGljaCBhc3N1cmVzIHRoYXQgdGhlIHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lCisgICB3aXRoaW4gYWJvdXQgOSBkZWNpbWFsIGRpZ2l0cy4gICpyZWxfdG9sKiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgorCisgICAqYWJzX3RvbCogaXMgdGhlIG1pbmltdW0gYWJzb2x1dGUgdG9sZXJhbmNlIC0tIHVzZWZ1bCBmb3IgY29tcGFyaXNvbnMgbmVhcgorICAgemVyby4gKmFic190b2wqIG11c3QgYmUgYXQgbGVhc3QgemVyby4KKworICAgSWYgbm8gZXJyb3JzIG9jY3VyLCB0aGUgcmVzdWx0IHdpbGwgYmU6CisgICBgYGFicyhhLWIpIDw9IG1heChyZWxfdG9sICogbWF4KGFicyhhKSwgYWJzKGIpKSwgYWJzX3RvbClgYC4KKworICAgVGhlIElFRUUgNzU0IHNwZWNpYWwgdmFsdWVzIG9mIGBgTmFOYGAsIGBgaW5mYGAsIGFuZCBgYC1pbmZgYCB3aWxsIGJlCisgICBoYW5kbGVkIGFjY29yZGluZyB0byBJRUVFIHJ1bGVzLiAgU3BlY2lmaWNhbGx5LCBgYE5hTmBgIGlzIG5vdCBjb25zaWRlcmVkCisgICBjbG9zZSB0byBhbnkgb3RoZXIgdmFsdWUsIGluY2x1ZGluZyBgYE5hTmBgLiAgYGBpbmZgYCBhbmQgYGAtaW5mYGAgYXJlIG9ubHkKKyAgIGNvbnNpZGVyZWQgY2xvc2UgdG8gdGhlbXNlbHZlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6cGVwOmA0ODVgIC0tIEEgZnVuY3Rpb24gZm9yIHRlc3RpbmcgYXBwcm94aW1hdGUgZXF1YWxpdHkKKworCiBDb25zdGFudHMKIC0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2RlLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGUucnN0CmluZGV4IDViNWQ3Y2MuLjI3NTIwMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvZGUucnN0CkBAIC00LDYgKzQsNyBAQAogLi4gbW9kdWxlOjogY29kZQogICAgOnN5bm9wc2lzOiBGYWNpbGl0aWVzIHRvIGltcGxlbWVudCByZWFkLWV2YWwtcHJpbnQgbG9vcHMuCiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvZGUucHlgCiAKIFRoZSBgYGNvZGVgYCBtb2R1bGUgcHJvdmlkZXMgZmFjaWxpdGllcyB0byBpbXBsZW1lbnQgcmVhZC1ldmFsLXByaW50IGxvb3BzIGluCiBQeXRob24uICBUd28gY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGFyZSBpbmNsdWRlZCB3aGljaCBjYW4gYmUgdXNlZCB0bwpAQCAtMTEzLDYgKzExNCw5IEBACiAgICBiZWNhdXNlIGl0IGlzIHdpdGhpbiB0aGUgaW50ZXJwcmV0ZXIgb2JqZWN0IGltcGxlbWVudGF0aW9uLiBUaGUgb3V0cHV0IGlzCiAgICB3cml0dGVuIGJ5IHRoZSA6bWV0aDpgd3JpdGVgIG1ldGhvZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUgVGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2sgaXMgZGlzcGxheWVkIGluc3RlYWQKKyAgICAgIG9mIGp1c3QgdGhlIHByaW1hcnkgdHJhY2ViYWNrLgorCiAKIC4uIG1ldGhvZDo6IEludGVyYWN0aXZlSW50ZXJwcmV0ZXIud3JpdGUoZGF0YSkKIApAQCAtMTY1LDQgKzE2OSwzIEBACiAgICBuZXdsaW5lLiAgV2hlbiB0aGUgdXNlciBlbnRlcnMgdGhlIEVPRiBrZXkgc2VxdWVuY2UsIDpleGM6YEVPRkVycm9yYCBpcyByYWlzZWQuCiAgICBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiByZWFkcyBmcm9tIGBgc3lzLnN0ZGluYGA7IGEgc3ViY2xhc3MgbWF5IHJlcGxhY2UgdGhpcwogICAgd2l0aCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbi4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggNjI4OTY5Yy4uNDZkNzJiNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC03LDYgKzcsNyBAQAogLi4gc2VjdGlvbmF1dGhvcjo6IE1hcmMtQW5kcsOpIExlbWJ1cmcgPG1hbEBsZW1idXJnLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJ0aW4gdi4gTMO2d2lzIDxtYXJ0aW5Adi5sb2V3aXMuZGU+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvZGVjcy5weWAKIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBVbmljb2RlCkBAIC0yOSwxMCArMzAsOSBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGZvciBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgd2l0aAogYW55IGNvZGVjOgogCi0uLiBmdW5jdGlvbjo6IGVuY29kZShvYmosIFtlbmNvZGluZ1ssIGVycm9yc11dKQorLi4gZnVuY3Rpb246OiBlbmNvZGUob2JqLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpCiAKLSAgIEVuY29kZXMgKm9iaiogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouIFRoZSBkZWZhdWx0Ci0gICBlbmNvZGluZyBpcyBgYHV0Zi04YGAuCisgICBFbmNvZGVzICpvYmoqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciAqZW5jb2RpbmcqLgogCiAgICAqRXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IHRoZSBkZXNpcmVkIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlCiAgICBkZWZhdWx0IGVycm9yIGhhbmRsZXIgaXMgYGAnc3RyaWN0J2BgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UKQEAgLTQwLDEwICs0MCw5IEBACiAgICA6ZXhjOmBVbmljb2RlRW5jb2RlRXJyb3JgKS4gUmVmZXIgdG8gOnJlZjpgY29kZWMtYmFzZS1jbGFzc2VzYCBmb3IgbW9yZQogICAgaW5mb3JtYXRpb24gb24gY29kZWMgZXJyb3IgaGFuZGxpbmcuCiAKLS4uIGZ1bmN0aW9uOjogZGVjb2RlKG9iaiwgW2VuY29kaW5nWywgZXJyb3JzXV0pCisuLiBmdW5jdGlvbjo6IGRlY29kZShvYmosIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKIAotICAgRGVjb2RlcyAqb2JqKiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgKmVuY29kaW5nKi4gVGhlIGRlZmF1bHQKLSAgIGVuY29kaW5nIGlzIGBgdXRmLThgYC4KKyAgIERlY29kZXMgKm9iaiogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouCiAKICAgICpFcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgdGhlIGRlc2lyZWQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUKICAgIGRlZmF1bHQgZXJyb3IgaGFuZGxlciBpcyBgYCdzdHJpY3QnYGAgbWVhbmluZyB0aGF0IGRlY29kaW5nIGVycm9ycyByYWlzZQpAQCAtMTA0LDcgKzEwMyw2IEBACiBUbyBzaW1wbGlmeSBhY2Nlc3MgdG8gdGhlIHZhcmlvdXMgY29kZWMgY29tcG9uZW50cywgdGhlIG1vZHVsZSBwcm92aWRlcwogdGhlc2UgYWRkaXRpb25hbCBmdW5jdGlvbnMgd2hpY2ggdXNlIDpmdW5jOmBsb29rdXBgIGZvciB0aGUgY29kZWMgbG9va3VwOgogCi0KIC4uIGZ1bmN0aW9uOjogZ2V0ZW5jb2RlcihlbmNvZGluZykKIAogICAgTG9vayB1cCB0aGUgY29kZWMgZm9yIHRoZSBnaXZlbiBlbmNvZGluZyBhbmQgcmV0dXJuIGl0cyBlbmNvZGVyIGZ1bmN0aW9uLgpAQCAtMjc0LDYgKzI3Miw3IEBACiBjb2RlYyB3aWxsIGhhbmRsZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgZXJyb3JzLgogCiAKKy4uIF9zdXJyb2dhdGVlc2NhcGU6CiAuLiBfZXJyb3ItaGFuZGxlcnM6CiAKIEVycm9yIEhhbmRsZXJzCkBAIC0zMTUsMTAgKzMxNCwxNCBAQAogfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlZmVyZW5jZSAob25seSBmb3IgZW5jb2RpbmcpLiAgSW1wbGVtZW50ZWQgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW4gOmZ1bmM6YHhtbGNoYXJyZWZyZXBsYWNlX2Vycm9yc2AuICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgICB8IFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2VzICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG9ubHkgZm9yIGVuY29kaW5nKS4gIEltcGxlbWVudGVkIGluICAgICAgICAgIHwKK3wgYGAnYmFja3NsYXNocmVwbGFjZSdgYCAgfCBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4gICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8IEltcGxlbWVudGVkIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YGJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzYC4gICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCduYW1lcmVwbGFjZSdgYCAgICAgICB8IFJlcGxhY2Ugd2l0aCBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2VzICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG9ubHkgZm9yIGVuY29kaW5nKS4gIEltcGxlbWVudGVkIGluICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgbmFtZXJlcGxhY2VfZXJyb3JzYC4gICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCAgIHwgT24gZGVjb2RpbmcsIHJlcGxhY2UgYnl0ZSB3aXRoIGluZGl2aWR1YWwgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdXJyb2dhdGUgY29kZSByYW5naW5nIGZyb20gYGBVK0RDODBgYCB0byAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgVStEQ0ZGYGAuICBUaGlzIGNvZGUgd2lsbCB0aGVuIGJlIHR1cm5lZCAgICB8CkBAIC0zNDQsNiArMzQ3LDEzIEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgVGhlIGBgJ3N1cnJvZ2F0ZXBhc3MnYGAgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmtzIHdpdGggdXRmLTE2XCogYW5kIHV0Zi0zMlwqIGNvZGVjcy4KIAorLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlci4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXJzIG5vdyB3b3JrcyB3aXRoIGRlY29kaW5nIGFuZAorICAgdHJhbnNsYXRpbmcuCisKIFRoZSBzZXQgb2YgYWxsb3dlZCB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIGJ5IHJlZ2lzdGVyaW5nIGEgbmV3IG5hbWVkIGVycm9yCiBoYW5kbGVyOgogCkBAIC00MTEsOSArNDIxLDE3IEBACiAKIC4uIGZ1bmN0aW9uOjogYmFja3NsYXNocmVwbGFjZV9lcnJvcnMoZXhjZXB0aW9uKQogCi0gICBJbXBsZW1lbnRzIHRoZSBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGVycm9yIGhhbmRsaW5nIChmb3IgZW5jb2Rpbmcgd2l0aAorICAgSW1wbGVtZW50cyB0aGUgYGAnYmFja3NsYXNocmVwbGFjZSdgYCBlcnJvciBoYW5kbGluZyAoZm9yCisgICA6dGVybTpgdGV4dCBlbmNvZGluZ3MgPHRleHQgZW5jb2Rpbmc+YCBvbmx5KTogbWFsZm9ybWVkIGRhdGEgaXMKKyAgIHJlcGxhY2VkIGJ5IGEgYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLgorCisuLiBmdW5jdGlvbjo6IG5hbWVyZXBsYWNlX2Vycm9ycyhleGNlcHRpb24pCisKKyAgIEltcGxlbWVudHMgdGhlIGBgJ25hbWVyZXBsYWNlJ2BgIGVycm9yIGhhbmRsaW5nIChmb3IgZW5jb2Rpbmcgd2l0aAogICAgOnRlcm06YHRleHQgZW5jb2RpbmdzIDx0ZXh0IGVuY29kaW5nPmAgb25seSk6IHRoZQotICAgdW5lbmNvZGFibGUgY2hhcmFjdGVyIGlzIHJlcGxhY2VkIGJ5IGEgYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLgorICAgdW5lbmNvZGFibGUgY2hhcmFjdGVyIGlzIHJlcGxhY2VkIGJ5IGEgYGBcTnsuLi59YGAgZXNjYXBlIHNlcXVlbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCiAuLiBfY29kZWMtb2JqZWN0czoKQEAgLTExNDQsOCArMTE2MiwxNiBAQAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBrb2k4X3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSdXNzaWFuICAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBrb2k4X3QgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUYWppayAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBrb2k4X3UgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBVa3JhaW5pYW4gICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBrejEwNDggICAgICAgICAgfCBrel8xMDQ4LCBzdHJrMTA0OF8yMDAyLCByazEwNDggfCBLYXpha2ggICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBtYWNfY3lyaWxsaWMgICAgfCBtYWNjeXJpbGxpYyAgICAgICAgICAgICAgICAgICAgfCBCdWxnYXJpYW4sIEJ5ZWxvcnVzc2lhbiwgICAgICAgfAogfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNYWNlZG9uaWFuLCBSdXNzaWFuLCBTZXJiaWFuICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTQ0Niw0ICsxNDcyLDMgQEAKIEJPTSB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgVVRGLTggZW5jb2RlZCBieXRlcy4gRm9yIHRoZSBzdGF0ZWZ1bCBlbmNvZGVyIHRoaXMKIGlzIG9ubHkgZG9uZSBvbmNlIChvbiB0aGUgZmlyc3Qgd3JpdGUgdG8gdGhlIGJ5dGUgc3RyZWFtKS4gIEZvciBkZWNvZGluZyBhbgogb3B0aW9uYWwgVVRGLTggZW5jb2RlZCBCT00gYXQgdGhlIHN0YXJ0IG9mIHRoZSBkYXRhIHdpbGwgYmUgc2tpcHBlZC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKaW5kZXggOTljNDMxMS4uNTYzYzFiYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CkBAIC0zMywxMyArMzMsMTQgQEAKIAogLi4gdGFidWxhcmNvbHVtbnM6OiB8bHxMfEx8THwKIAotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIEFCQyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRzIGZyb20gICAgICAgICAgQWJzdHJhY3QgTWV0aG9kcyAgICAgICAgTWl4aW4gTWV0aG9kcwotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpjbGFzczpgQ29udGFpbmVyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBHZW5lcmF0b3JgICAgICAgICAgOmNsYXNzOmBJdGVyYXRvcmAgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAsIGBgX19pdGVyX19gYCwgYGBfX25leHRfX2BgCiA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiA6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAogCkBAIC04MCw3ICs4MSwxMSBAQAogOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKIDpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzpjbGFzczpgQXdhaXRhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2F3YWl0X19gYAorOmNsYXNzOmBDb3JvdXRpbmVgICAgICAgICAgOmNsYXNzOmBBd2FpdGFibGVgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAKKzpjbGFzczpgQXN5bmNJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2FpdGVyX19gYAorOmNsYXNzOmBBc3luY0l0ZXJhdG9yYCAgICAgOmNsYXNzOmBBc3luY0l0ZXJhYmxlYCBgYF9fYW5leHRfX2BgICAgICAgICAgICBgYF9fYWl0ZXJfX2BgCis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCiAuLiBjbGFzczo6IENvbnRhaW5lcgpAQCAtMTAyLDExICsxMDcsMzQgQEAKICAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZHMuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZgogICAgOnRlcm06YGl0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBHZW5lcmF0b3IKKworICAgQUJDIGZvciBnZW5lcmF0b3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGUgcHJvdG9jb2wgZGVmaW5lZCBpbgorICAgOnBlcDpgMzQyYCB0aGF0IGV4dGVuZHMgaXRlcmF0b3JzIHdpdGggdGhlIDptZXRoOmB+Z2VuZXJhdG9yLnNlbmRgLAorICAgOm1ldGg6YH5nZW5lcmF0b3IudGhyb3dgIGFuZCA6bWV0aDpgfmdlbmVyYXRvci5jbG9zZWAgbWV0aG9kcy4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBnZW5lcmF0b3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gY2xhc3M6OiBTZXF1ZW5jZQogICAgICAgICAgICBNdXRhYmxlU2VxdWVuY2UKIAogICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIDp0ZXJtOmBzZXF1ZW5jZXMgPHNlcXVlbmNlPmAuCiAKKyAgIEltcGxlbWVudGF0aW9uIG5vdGU6IFNvbWUgb2YgdGhlIG1peGluIG1ldGhvZHMsIHN1Y2ggYXMKKyAgIDptZXRoOmBfX2l0ZXJfX2AsIDptZXRoOmBfX3JldmVyc2VkX19gIGFuZCA6bWV0aDpgaW5kZXhgLCBtYWtlCisgICByZXBlYXRlZCBjYWxscyB0byB0aGUgdW5kZXJseWluZyA6bWV0aDpgX19nZXRpdGVtX19gIG1ldGhvZC4KKyAgIENvbnNlcXVlbnRseSwgaWYgOm1ldGg6YF9fZ2V0aXRlbV9fYCBpcyBpbXBsZW1lbnRlZCB3aXRoIGNvbnN0YW50CisgICBhY2Nlc3Mgc3BlZWQsIHRoZSBtaXhpbiBtZXRob2RzIHdpbGwgaGF2ZSBsaW5lYXIgcGVyZm9ybWFuY2U7CisgICBob3dldmVyLCBpZiB0aGUgdW5kZXJseWluZyBtZXRob2QgaXMgbGluZWFyIChhcyBpdCB3b3VsZCBiZSB3aXRoIGEKKyAgIGxpbmtlZCBsaXN0KSwgdGhlIG1peGlucyB3aWxsIGhhdmUgcXVhZHJhdGljIHBlcmZvcm1hbmNlIGFuZCB3aWxsCisgICBsaWtlbHkgbmVlZCB0byBiZSBvdmVycmlkZGVuLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGluZGV4KCkgbWV0aG9kIGFkZGVkIHN1cHBvcnQgZm9yICpzdG9wKiBhbmQgKnN0YXJ0KgorICAgICAgYXJndW1lbnRzLgorCisKIC4uIGNsYXNzOjogU2V0CiAgICAgICAgICAgIE11dGFibGVTZXQKIApAQCAtMTI0LDYgKzE1Miw1NiBAQAogCiAgICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KIAorLi4gY2xhc3M6OiBBd2FpdGFibGUKKworICAgQUJDIGZvciA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3RzLCB3aGljaCBjYW4gYmUgdXNlZCBpbiA6a2V5d29yZDpgYXdhaXRgCisgICBleHByZXNzaW9ucy4gIEN1c3RvbSBpbXBsZW1lbnRhdGlvbnMgbXVzdCBwcm92aWRlIHRoZSA6bWV0aDpgX19hd2FpdF9fYAorICAgbWV0aG9kLgorCisgICA6dGVybTpgQ29yb3V0aW5lYCBvYmplY3RzIGFuZCBpbnN0YW5jZXMgb2YgdGhlCisgICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lYCBBQkMgYXJlIGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBBQkMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgSW4gQ1B5dGhvbiwgZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMgKGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGgKKyAgICAgIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWApIGFyZQorICAgICAgKmF3YWl0YWJsZXMqLCBldmVuIHRob3VnaCB0aGV5IGRvIG5vdCBoYXZlIGFuIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKyAgICAgIFVzaW5nIGBgaXNpbnN0YW5jZShnZW5jb3JvLCBBd2FpdGFibGUpYGAgZm9yIHRoZW0gd2lsbCByZXR1cm4gYGBGYWxzZWBgLgorICAgICAgVXNlIDpmdW5jOmBpbnNwZWN0LmlzYXdhaXRhYmxlYCB0byBkZXRlY3QgdGhlbS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGNsYXNzOjogQ29yb3V0aW5lCisKKyAgIEFCQyBmb3IgY29yb3V0aW5lIGNvbXBhdGlibGUgY2xhc3Nlcy4gIFRoZXNlIGltcGxlbWVudCB0aGUKKyAgIGZvbGxvd2luZyBtZXRob2RzLCBkZWZpbmVkIGluIDpyZWY6YGNvcm91dGluZS1vYmplY3RzYDoKKyAgIDptZXRoOmB+Y29yb3V0aW5lLnNlbmRgLCA6bWV0aDpgfmNvcm91dGluZS50aHJvd2AsIGFuZAorICAgOm1ldGg6YH5jb3JvdXRpbmUuY2xvc2VgLiAgQ3VzdG9tIGltcGxlbWVudGF0aW9ucyBtdXN0IGFsc28gaW1wbGVtZW50CisgICA6bWV0aDpgX19hd2FpdF9fYC4gIEFsbCA6Y2xhc3M6YENvcm91dGluZWAgaW5zdGFuY2VzIGFyZSBhbHNvIGluc3RhbmNlcyBvZgorICAgOmNsYXNzOmBBd2FpdGFibGVgLiAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGNvcm91dGluZWAuCisKKyAgIC4uIG5vdGU6OgorICAgICAgSW4gQ1B5dGhvbiwgZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMgKGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGgKKyAgICAgIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWApIGFyZQorICAgICAgKmF3YWl0YWJsZXMqLCBldmVuIHRob3VnaCB0aGV5IGRvIG5vdCBoYXZlIGFuIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKyAgICAgIFVzaW5nIGBgaXNpbnN0YW5jZShnZW5jb3JvLCBDb3JvdXRpbmUpYGAgZm9yIHRoZW0gd2lsbCByZXR1cm4gYGBGYWxzZWBgLgorICAgICAgVXNlIDpmdW5jOmBpbnNwZWN0LmlzYXdhaXRhYmxlYCB0byBkZXRlY3QgdGhlbS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGNsYXNzOjogQXN5bmNJdGVyYWJsZQorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIGBgX19haXRlcl9fYGAgbWV0aG9kLiAgU2VlIGFsc28gdGhlCisgICBkZWZpbml0aW9uIG9mIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmFibGVgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY2xhc3M6OiBBc3luY0l0ZXJhdG9yCisKKyAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgYGBfX2FpdGVyX19gYCBhbmQgYGBfX2FuZXh0X19gYAorICAgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiBUaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IDM0N2NmMWYuLjgxMjFjYzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTM4Nyw3ICszODcsNyBAQAogICAgICAgU2VjdGlvbiA0LjYuMywgRXhlcmNpc2UgMTkqLgogCiAgICAgKiBUbyBlbnVtZXJhdGUgYWxsIGRpc3RpbmN0IG11bHRpc2V0cyBvZiBhIGdpdmVuIHNpemUgb3ZlciBhIGdpdmVuIHNldCBvZgotICAgICAgZWxlbWVudHMsIHNlZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50YC4KKyAgICAgIGVsZW1lbnRzLCBzZWUgOmZ1bmM6YGl0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudGA6CiAKICAgICAgICAgICAgIG1hcChDb3VudGVyLCBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgnQUJDJywgMikpIC0tPiBBQSBBQiBBQyBCQiBCQyBDQwogCkBAIC00MzcsNiArNDM3LDEzIEBACiAgICAgICAgIFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUgbGVhdmluZyBpdCB3aXRoIGxlbmd0aCAwLgogCiAKKyAgICAuLiBtZXRob2Q6OiBjb3B5KCkKKworICAgICAgICBDcmVhdGUgYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRlcXVlLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKICAgICAuLiBtZXRob2Q6OiBjb3VudCh4KQogCiAgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgZGVxdWUgZWxlbWVudHMgZXF1YWwgdG8gKngqLgpAQCAtNDU3LDYgKzQ2NCwyMiBAQAogICAgICAgICBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUgYXJndW1lbnQuCiAKIAorICAgIC4uIG1ldGhvZDo6IGluZGV4KHhbLCBzdGFydFssIHN0b3BdXSkKKworICAgICAgICBSZXR1cm4gdGhlIHBvc2l0aW9uIG9mICp4KiBpbiB0aGUgZGVxdWUgKGF0IG9yIGFmdGVyIGluZGV4ICpzdGFydCoKKyAgICAgICAgYW5kIGJlZm9yZSBpbmRleCAqc3RvcCopLiAgUmV0dXJucyB0aGUgZmlyc3QgbWF0Y2ggb3IgcmFpc2VzCisgICAgICAgIDpleGM6YFZhbHVlRXJyb3JgIGlmIG5vdCBmb3VuZC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisgICAgLi4gbWV0aG9kOjogaW5zZXJ0KGksIHgpCisKKyAgICAgICAgSW5zZXJ0ICp4KiBpbnRvIHRoZSBkZXF1ZSBhdCBwb3NpdGlvbiAqaSouCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogICAgIC4uIG1ldGhvZDo6IHBvcCgpCiAKICAgICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KQEAgLTQ3MSw3ICs0OTQsNyBAQAogCiAgICAgLi4gbWV0aG9kOjogcmVtb3ZlKHZhbHVlKQogCi0gICAgICAgIFJlbW92ZWQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnZhbHVlKi4gIElmIG5vdCBmb3VuZCwgcmFpc2VzIGEKKyAgICAgICAgUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCiAgICAgICAgIDpleGM6YFZhbHVlRXJyb3JgLgogCiAKQEAgLTUwNCw2ICs1MjcsOSBAQAogYWNjZXNzIGlzIE8oMSkgYXQgYm90aCBlbmRzIGJ1dCBzbG93cyB0byBPKG4pIGluIHRoZSBtaWRkbGUuICBGb3IgZmFzdCByYW5kb20KIGFjY2VzcywgdXNlIGxpc3RzIGluc3RlYWQuCiAKK1N0YXJ0aW5nIGluIHZlcnNpb24gMy41LCBkZXF1ZXMgc3VwcG9ydCBgYF9fYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLAorYW5kIGBgX19pbXVsX18oKWBgLgorCiBFeGFtcGxlOgogCiAuLiBkb2N0ZXN0OjoKQEAgLTg5OSw2ICs5MjUsMTUgQEAKIAogICAgID4+PiBQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCiAKK0RvY3N0cmluZ3MgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgbWFraW5nIGRpcmVjdCBhc3NpZ25tZW50cyB0byB0aGUgYGBfX2RvY19fYGAKK2ZpZWxkczoKKworICAgPj4+IEJvb2sgPSBuYW1lZHR1cGxlKCdCb29rJywgWydpZCcsICd0aXRsZScsICdhdXRob3JzJ10pCisgICA+Pj4gQm9vay5fX2RvY19fID0gJ0hhcmRjb3ZlciBib29rIGluIGFjdGl2ZSBjb2xsZWN0aW9uJworICAgPj4+IEJvb2suaWQuX19kb2NfXyA9ICcxMy1kaWdpdCBJU0JOJworICAgPj4+IEJvb2sudGl0bGUuX19kb2NfXyA9ICdUaXRsZSBvZiBmaXJzdCBwcmludGluZycKKyAgID4+PiBCb29rLmF1dGhvci5fX2RvY19fID0gJ0xpc3Qgb2YgYXV0aG9ycyBzb3J0ZWQgYnkgbGFzdCBuYW1lJworCiBEZWZhdWx0IHZhbHVlcyBjYW4gYmUgaW1wbGVtZW50ZWQgYnkgdXNpbmcgOm1ldGg6YF9yZXBsYWNlYCB0bwogY3VzdG9taXplIGEgcHJvdG90eXBlIGluc3RhbmNlOgogCkBAIC05ODIsNiArMTAxNyw5IEBACiBrZXl3b3JkIGFyZ3VtZW50cywgYnV0IHRoZWlyIG9yZGVyIGlzIGxvc3QgYmVjYXVzZSBQeXRob24ncyBmdW5jdGlvbiBjYWxsCiBzZW1hbnRpY3MgcGFzcy1pbiBrZXl3b3JkIGFyZ3VtZW50cyB1c2luZyBhIHJlZ3VsYXIgdW5vcmRlcmVkIGRpY3Rpb25hcnkuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgaXRlbXMsIGtleXMsIGFuZCB2YWx1ZXMgOnRlcm06YHZpZXdzIDx2aWV3PmAgb2YgOmNsYXNzOmBPcmRlcmVkRGljdGAgbm93CisgICBzdXBwb3J0IHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIDpmdW5jOmByZXZlcnNlZGAuCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIEV4YW1wbGVzIGFuZCBSZWNpcGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtMTExOSwzICsxMTU3LDcgQEAKICAgICBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YFVzZXJTdHJpbmdgIChvciBhCiAgICAgc3ViY2xhc3MpIG9yIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSB3aGljaCBjYW4gYmUgY29udmVydGVkIGludG8gYSBzdHJpbmcgdXNpbmcKICAgICB0aGUgYnVpbHQtaW4gOmZ1bmM6YHN0cmAgZnVuY3Rpb24uCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgIE5ldyBtZXRob2RzIGBgX19nZXRuZXdhcmdzX19gYCwgYGBfX3Jtb2RfX2BgLCBgYGNhc2Vmb2xkYGAsCisgICAgICAgYGBmb3JtYXRfbWFwYGAsIGBgaXNwcmludGFibGVgYCwgYW5kIGBgbWFrZXRyYW5zYGAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdCBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CmluZGV4IDk3MTJkZTIuLmM1NzM2ZjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0CkBAIC00Miw3ICs0Miw4IEBACiAKIC4uIGNtZG9wdGlvbjo6IC1xCiAKLSAgIERvIG5vdCBwcmludCB0aGUgbGlzdCBvZiBmaWxlcyBjb21waWxlZCwgcHJpbnQgb25seSBlcnJvciBtZXNzYWdlcy4KKyAgIERvIG5vdCBwcmludCB0aGUgbGlzdCBvZiBmaWxlcyBjb21waWxlZC4gSWYgcGFzc2VkIG9uY2UsIGVycm9yIG1lc3NhZ2VzIHdpbGwKKyAgIHN0aWxsIGJlIHByaW50ZWQuIElmIHBhc3NlZCB0d2ljZSAoYGAtcXFgYCksIGFsbCBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KIAogLi4gY21kb3B0aW9uOjogLWQgZGVzdGRpcgogCkBAIC03MCw5ICs3MSwyOCBAQAogICAgaXMgdG8gd3JpdGUgZmlsZXMgdG8gdGhlaXIgOnBlcDpgMzE0N2AgbG9jYXRpb25zIGFuZCBuYW1lcywgd2hpY2ggYWxsb3dzCiAgICBieXRlLWNvZGUgZmlsZXMgZnJvbSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gdG8gY29leGlzdC4KIAorLi4gY21kb3B0aW9uOjogLXIKKworICAgQ29udHJvbCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGV2ZWwgZm9yIHN1YmRpcmVjdG9yaWVzLgorICAgSWYgdGhpcyBpcyBnaXZlbiwgdGhlbiBgYC1sYGAgb3B0aW9uIHdpbGwgbm90IGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgIDpwcm9ncmFtOmBweXRob24gLW0gY29tcGlsZWFsbCA8ZGlyZWN0b3J5PiAtciAwYCBpcyBlcXVpdmFsZW50IHRvCisgICA6cHJvZ3JhbTpgcHl0aG9uIC1tIGNvbXBpbGVhbGwgPGRpcmVjdG9yeT4gLWxgLgorCisuLiBjbWRvcHRpb246OiAtaiBOCisKKyAgIFVzZSAqTiogd29ya2VycyB0byBjb21waWxlIHRoZSBmaWxlcyB3aXRoaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS4KKyAgIElmIGBgMGBgIGlzIHVzZWQsIHRoZW4gdGhlIHJlc3VsdCBvZiA6ZnVuYzpgb3MuY3B1X2NvdW50KClgCisgICB3aWxsIGJlIHVzZWQuCisKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBBZGRlZCB0aGUgYGAtaWBgLCBgYC1iYGAgYW5kIGBgLWhgYCBvcHRpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgdGhlICBgYC1qYGAsIGBgLXJgYCwgYW5kIGBgLXFxYGAgb3B0aW9ucy4gIGBgLXFgYCBvcHRpb24KKyAgIHdhcyBjaGFuZ2VkIHRvIGEgbXVsdGlsZXZlbCB2YWx1ZS4gIGBgLWJgYCB3aWxsIGFsd2F5cyBwcm9kdWNlIGEKKyAgIGJ5dGUtY29kZSBmaWxlIGVuZGluZyBpbiBgYC5weWNgYCwgbmV2ZXIgYGAucHlvYGAuCisKKwogVGhlcmUgaXMgbm8gY29tbWFuZC1saW5lIG9wdGlvbiB0byBjb250cm9sIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgdXNlZCBieSB0aGUKIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbiwgYmVjYXVzZSB0aGUgUHl0aG9uIGludGVycHJldGVyIGl0c2VsZiBhbHJlYWR5CiBwcm92aWRlcyB0aGUgb3B0aW9uOiA6cHJvZ3JhbTpgcHl0aG9uIC1PIC1tIGNvbXBpbGVhbGxgLgpAQCAtODAsNyArMTAwLDcgQEAKIFB1YmxpYyBmdW5jdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCisuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCiAgICBmaWxlcyBhbG9uZyB0aGUgd2F5LgpAQCAtMTAxLDggKzEyMSw5IEBACiAgICBmaWxlIGNvbnNpZGVyZWQgZm9yIGNvbXBpbGF0aW9uLCBhbmQgaWYgaXQgcmV0dXJucyBhIHRydWUgdmFsdWUsIHRoZSBmaWxlCiAgICBpcyBza2lwcGVkLgogCi0gICBJZiAqcXVpZXQqIGlzIHRydWUsIG5vdGhpbmcgaXMgcHJpbnRlZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHVubGVzcyBlcnJvcnMKLSAgIG9jY3VyLgorICAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgb3IgYGAwYGAgKHRoZSBkZWZhdWx0KSwgdGhlIGZpbGVuYW1lcyBhbmQgb3RoZXIKKyAgIGluZm9ybWF0aW9uIGFyZSBwcmludGVkIHRvIHN0YW5kYXJkIG91dC4gU2V0IHRvIGBgMWBgLCBvbmx5IGVycm9ycyBhcmUKKyAgIHByaW50ZWQuIFNldCB0byBgYDJgYCwgYWxsIG91dHB1dCBpcyBzdXBwcmVzc2VkLgogCiAgICBJZiAqbGVnYWN5KiBpcyB0cnVlLCBieXRlLWNvZGUgZmlsZXMgYXJlIHdyaXR0ZW4gdG8gdGhlaXIgbGVnYWN5IGxvY2F0aW9ucwogICAgYW5kIG5hbWVzLCB3aGljaCBtYXkgb3ZlcndyaXRlIGJ5dGUtY29kZSBmaWxlcyBjcmVhdGVkIGJ5IGFub3RoZXIgdmVyc2lvbiBvZgpAQCAtMTEzLDExICsxMzQsMjYgQEAKICAgICpvcHRpbWl6ZSogc3BlY2lmaWVzIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgZm9yIHRoZSBjb21waWxlci4gIEl0IGlzIHBhc3NlZCB0bwogICAgdGhlIGJ1aWx0LWluIDpmdW5jOmBjb21waWxlYCBmdW5jdGlvbi4KIAorICAgVGhlIGFyZ3VtZW50ICp3b3JrZXJzKiBzcGVjaWZpZXMgaG93IG1hbnkgd29ya2VycyBhcmUgdXNlZCB0bworICAgY29tcGlsZSBmaWxlcyBpbiBwYXJhbGxlbC4gVGhlIGRlZmF1bHQgaXMgdG8gbm90IHVzZSBtdWx0aXBsZSB3b3JrZXJzLgorICAgSWYgdGhlIHBsYXRmb3JtIGNhbid0IHVzZSBtdWx0aXBsZSB3b3JrZXJzIGFuZCAqd29ya2VycyogYXJndW1lbnQgaXMgZ2l2ZW4sCisgICB0aGVuIHNlcXVlbnRpYWwgY29tcGlsYXRpb24gd2lsbCBiZSB1c2VkIGFzIGEgZmFsbGJhY2suICBJZiAqd29ya2VycyogaXMKKyAgIGxvd2VyIHRoYW4gYGAwYGAsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCB0aGUgKmxlZ2FjeSogYW5kICpvcHRpbWl6ZSogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICp3b3JrZXJzKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KKworLi4gZnVuY3Rpb246OiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKICAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouCiAKQEAgLTEzMSw4ICsxNjcsOSBAQAogICAgZmlsZSBiZWluZyBjb21waWxlZCwgYW5kIGlmIGl0IHJldHVybnMgYSB0cnVlIHZhbHVlLCB0aGUgZmlsZSBpcyBub3QKICAgIGNvbXBpbGVkIGFuZCBgYFRydWVgYCBpcyByZXR1cm5lZC4KIAotICAgSWYgKnF1aWV0KiBpcyB0cnVlLCBub3RoaW5nIGlzIHByaW50ZWQgdG8gdGhlIHN0YW5kYXJkIG91dHB1dCB1bmxlc3MgZXJyb3JzCi0gICBvY2N1ci4KKyAgIElmICpxdWlldCogaXMgYGBGYWxzZWBgIG9yIGBgMGBgICh0aGUgZGVmYXVsdCksIHRoZSBmaWxlbmFtZXMgYW5kIG90aGVyCisgICBpbmZvcm1hdGlvbiBhcmUgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXQuIFNldCB0byBgYDFgYCwgb25seSBlcnJvcnMgYXJlCisgICBwcmludGVkLiBTZXQgdG8gYGAyYGAsIGFsbCBvdXRwdXQgaXMgc3VwcHJlc3NlZC4KIAogICAgSWYgKmxlZ2FjeSogaXMgdHJ1ZSwgYnl0ZS1jb2RlIGZpbGVzIGFyZSB3cml0dGVuIHRvIHRoZWlyIGxlZ2FjeSBsb2NhdGlvbnMKICAgIGFuZCBuYW1lcywgd2hpY2ggbWF5IG92ZXJ3cml0ZSBieXRlLWNvZGUgZmlsZXMgY3JlYXRlZCBieSBhbm90aGVyIHZlcnNpb24gb2YKQEAgLTE0NSw4ICsxODIsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCiAKLS4uIGZ1bmN0aW9uOjogY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPVRydWUsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KKworLi4gZnVuY3Rpb246OiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9VHJ1ZSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQogCiAgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIElmCiAgICAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZApAQCAtMTU3LDYgKzIwMCwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqbGVnYWN5KiBhbmQgKm9wdGltaXplKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqcXVpZXQqIHBhcmFtZXRlciB3YXMgY2hhbmdlZCB0byBhIG11bHRpbGV2ZWwgdmFsdWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmxlZ2FjeSogcGFyYW1ldGVyIG9ubHkgd3JpdGVzIG91dCBgYC5weWNgYCBmaWxlcywgbm90IGBgLnB5b2BgIGZpbGVzCisgICAgICBubyBtYXR0ZXIgd2hhdCB0aGUgdmFsdWUgb2YgKm9wdGltaXplKiBpcy4KIAogVG8gZm9yY2UgYSByZWNvbXBpbGUgb2YgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBpbiB0aGUgOmZpbGU6YExpYi9gCiBzdWJkaXJlY3RvcnkgYW5kIGFsbCBpdHMgc3ViZGlyZWN0b3JpZXM6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKaW5kZXggY2M4YjMzNS4uOWFjNjE3MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CkBAIC0zOCw3ICszOCw3IEBACiAgICAgICAgICAgICAgIGZ1dHVyZSA9IGV4ZWN1dG9yLnN1Ym1pdChwb3csIDMyMywgMTIzNSkKICAgICAgICAgICAgICAgcHJpbnQoZnV0dXJlLnJlc3VsdCgpKQogCi0gICAgLi4gbWV0aG9kOjogbWFwKGZ1bmMsICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSkKKyAgICAuLiBtZXRob2Q6OiBtYXAoZnVuYywgKml0ZXJhYmxlcywgdGltZW91dD1Ob25lLCBjaHVua3NpemU9MSkKIAogICAgICAgIEVxdWl2YWxlbnQgdG8gOmZ1bmM6YG1hcChmdW5jLCAqaXRlcmFibGVzKSA8bWFwPmAgZXhjZXB0ICpmdW5jKiBpcyBleGVjdXRlZAogICAgICAgIGFzeW5jaHJvbm91c2x5IGFuZCBzZXZlcmFsIGNhbGxzIHRvICpmdW5jKiBtYXkgYmUgbWFkZSBjb25jdXJyZW50bHkuICBUaGUKQEAgLTQ4LDcgKzQ4LDE2IEBACiAgICAgICAgKnRpbWVvdXQqIGNhbiBiZSBhbiBpbnQgb3IgYSBmbG9hdC4gIElmICp0aW1lb3V0KiBpcyBub3Qgc3BlY2lmaWVkIG9yCiAgICAgICAgYGBOb25lYGAsIHRoZXJlIGlzIG5vIGxpbWl0IHRvIHRoZSB3YWl0IHRpbWUuICBJZiBhIGNhbGwgcmFpc2VzIGFuCiAgICAgICAgZXhjZXB0aW9uLCB0aGVuIHRoYXQgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gaXRzIHZhbHVlIGlzCi0gICAgICAgcmV0cmlldmVkIGZyb20gdGhlIGl0ZXJhdG9yLgorICAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBpdGVyYXRvci4gV2hlbiB1c2luZyA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLCB0aGlzCisgICAgICAgbWV0aG9kIGNob3BzICppdGVyYWJsZXMqIGludG8gYSBudW1iZXIgb2YgY2h1bmtzIHdoaWNoIGl0IHN1Ym1pdHMgdG8gdGhlCisgICAgICAgcG9vbCBhcyBzZXBhcmF0ZSB0YXNrcy4gVGhlIChhcHByb3hpbWF0ZSkgc2l6ZSBvZiB0aGVzZSBjaHVua3MgY2FuIGJlCisgICAgICAgc3BlY2lmaWVkIGJ5IHNldHRpbmcgKmNodW5rc2l6ZSogdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyLiBGb3IgdmVyeSBsb25nCisgICAgICAgaXRlcmFibGVzLCB1c2luZyBhIGxhcmdlIHZhbHVlIGZvciAqY2h1bmtzaXplKiBjYW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlCisgICAgICAgcGVyZm9ybWFuY2UgY29tcGFyZWQgdG8gdGhlIGRlZmF1bHQgc2l6ZSBvZiAxLiBXaXRoIDpjbGFzczpgVGhyZWFkUG9vbEV4ZWN1dG9yYCwKKyAgICAgICAqY2h1bmtzaXplKiBoYXMgbm8gZWZmZWN0LgorCisgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICBBZGRlZCB0aGUgKmNodW5rc2l6ZSogYXJndW1lbnQuCiAKICAgICAuLiBtZXRob2Q6OiBzaHV0ZG93bih3YWl0PVRydWUpCiAKQEAgLTExNSwxMSArMTI0LDE5IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnMpCisuLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz1Ob25lKQogCiAgICBBbiA6Y2xhc3M6YEV4ZWN1dG9yYCBzdWJjbGFzcyB0aGF0IHVzZXMgYSBwb29sIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKgogICAgdGhyZWFkcyB0byBleGVjdXRlIGNhbGxzIGFzeW5jaHJvbm91c2x5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgKm1heF93b3JrZXJzKiBpcyBgYE5vbmVgYCBvcgorICAgICAgbm90IGdpdmVuLCBpdCB3aWxsIGRlZmF1bHQgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIG9uIHRoZSBtYWNoaW5lLAorICAgICAgbXVsdGlwbGllZCBieSBgYDVgYCwgYXNzdW1pbmcgdGhhdCA6Y2xhc3M6YFRocmVhZFBvb2xFeGVjdXRvcmAgaXMgb2Z0ZW4KKyAgICAgIHVzZWQgdG8gb3ZlcmxhcCBJL08gaW5zdGVhZCBvZiBDUFUgd29yayBhbmQgdGhlIG51bWJlciBvZiB3b3JrZXJzCisgICAgICBzaG91bGQgYmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZiB3b3JrZXJzCisgICAgICBmb3IgOmNsYXNzOmBQcm9jZXNzUG9vbEV4ZWN1dG9yYC4KKwogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTE3NSw2ICsxOTIsOCBAQAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCBleGVjdXRlcyBjYWxscyBhc3luY2hyb25vdXNseSB1c2luZyBhIHBvb2wKICAgIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKiBwcm9jZXNzZXMuICBJZiAqbWF4X3dvcmtlcnMqIGlzIGBgTm9uZWBgIG9yIG5vdAogICAgZ2l2ZW4sIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgb24gdGhlIG1hY2hpbmUuCisgICBJZiAqbWF4X3dvcmtlcnMqIGlzIGxvd2VyIG9yIGVxdWFsIHRvIGBgMGBgLCB0aGVuIGEgOmV4YzpgVmFsdWVFcnJvcmAKKyAgIHdpbGwgYmUgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgV2hlbiBvbmUgb2YgdGhlIHdvcmtlciBwcm9jZXNzZXMgdGVybWluYXRlcyBhYnJ1cHRseSwgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5yc3QKaW5kZXggOTI1NTFiYy4uYzkxODdhMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25maWdwYXJzZXIucnN0CkBAIC0xMSw2ICsxMSw4IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogQ2hyaXN0b3BoZXIgRy4gUGV0cmlsbGkgPHBldHJpbGxpQGFtYmVyLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiDFgXVrYXN6IExhbmdhIDxsdWthc3pAbGFuZ2EucGw+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbmZpZ3BhcnNlci5weWAKKwogLi4gaW5kZXg6OgogICAgcGFpcjogLmluaTsgZmlsZQogICAgcGFpcjogY29uZmlndXJhdGlvbjsgZmlsZQpAQCAtMTQyLDEyICsxNDQsMTMgQEAKICAgID4+PiBmbG9hdCh0b3BzZWNyZXRbJ0NvbXByZXNzaW9uTGV2ZWwnXSkKICAgIDkuMAogCi1FeHRyYWN0aW5nIEJvb2xlYW4gdmFsdWVzIGlzIG5vdCB0aGF0IHNpbXBsZSwgdGhvdWdoLiAgUGFzc2luZyB0aGUgdmFsdWUKLXRvIGBgYm9vbCgpYGAgd291bGQgZG8gbm8gZ29vZCBzaW5jZSBgYGJvb2woJ0ZhbHNlJylgYCBpcyBzdGlsbAotYGBUcnVlYGAuICBUaGlzIGlzIHdoeSBjb25maWcgcGFyc2VycyBhbHNvIHByb3ZpZGUgOm1ldGg6YGdldGJvb2xlYW5gLgotVGhpcyBtZXRob2QgaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgcmVjb2duaXplcyBCb29sZWFuIHZhbHVlcyBmcm9tCi1gYCd5ZXMnYGAvYGAnbm8nYGAsIGBgJ29uJ2BgL2BgJ29mZidgYCBhbmQgYGAnMSdgYC9gYCcwJ2BgIFsxXV8uCi1Gb3IgZXhhbXBsZToKK1NpbmNlIHRoaXMgdGFzayBpcyBzbyBjb21tb24sIGNvbmZpZyBwYXJzZXJzIHByb3ZpZGUgYSByYW5nZSBvZiBoYW5keSBnZXR0ZXIKK21ldGhvZHMgdG8gaGFuZGxlIGludGVnZXJzLCBmbG9hdHMgYW5kIGJvb2xlYW5zLiAgVGhlIGxhc3Qgb25lIGlzIHRoZSBtb3N0CitpbnRlcmVzdGluZyBiZWNhdXNlIHNpbXBseSBwYXNzaW5nIHRoZSB2YWx1ZSB0byBgYGJvb2woKWBgIHdvdWxkIGRvIG5vIGdvb2QKK3NpbmNlIGBgYm9vbCgnRmFsc2UnKWBgIGlzIHN0aWxsIGBgVHJ1ZWBgLiAgVGhpcyBpcyB3aHkgY29uZmlnIHBhcnNlcnMgYWxzbworcHJvdmlkZSA6bWV0aDpgZ2V0Ym9vbGVhbmAuICBUaGlzIG1ldGhvZCBpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZCByZWNvZ25pemVzCitCb29sZWFuIHZhbHVlcyBmcm9tIGBgJ3llcydgYC9gYCdubydgYCwgYGAnb24nYGAvYGAnb2ZmJ2BgLAorYGAndHJ1ZSdgYC9gYCdmYWxzZSdgYCBhbmQgYGAnMSdgYC9gYCcwJ2BgIFsxXV8uICBGb3IgZXhhbXBsZToKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE1OSwxMCArMTYyLDggQEAKICAgIFRydWUKIAogQXBhcnQgZnJvbSA6bWV0aDpgZ2V0Ym9vbGVhbmAsIGNvbmZpZyBwYXJzZXJzIGFsc28gcHJvdmlkZSBlcXVpdmFsZW50Ci06bWV0aDpgZ2V0aW50YCBhbmQgOm1ldGg6YGdldGZsb2F0YCBtZXRob2RzLCBidXQgdGhlc2UgYXJlIGZhciBsZXNzCi11c2VmdWwgc2luY2UgY29udmVyc2lvbiB1c2luZyA6ZnVuYzpgaW50YCBhbmQgOmZ1bmM6YGZsb2F0YCBpcwotc3VmZmljaWVudCBmb3IgdGhlc2UgdHlwZXMuCi0KKzptZXRoOmBnZXRpbnRgIGFuZCA6bWV0aDpgZ2V0ZmxvYXRgIG1ldGhvZHMuICBZb3UgY2FuIHJlZ2lzdGVyIHlvdXIgb3duCitjb252ZXJ0ZXJzIGFuZCBjdXN0b21pemUgdGhlIHByb3ZpZGVkIG9uZXMuIFsxXV8KIAogRmFsbGJhY2sgVmFsdWVzCiAtLS0tLS0tLS0tLS0tLS0KQEAgLTMxNywxMSArMzE4LDExIEBACiAuLiBjbGFzczo6IEV4dGVuZGVkSW50ZXJwb2xhdGlvbigpCiAKICAgIEFuIGFsdGVybmF0aXZlIGhhbmRsZXIgZm9yIGludGVycG9sYXRpb24gd2hpY2ggaW1wbGVtZW50cyBhIG1vcmUgYWR2YW5jZWQKLSAgIHN5bnRheCwgdXNlZCBmb3IgaW5zdGFuY2UgaW4gYGB6Yy5idWlsZG91dGBgLiBFeHRlbmRlZCBpbnRlcnBvbGF0aW9uIGlzCisgICBzeW50YXgsIHVzZWQgZm9yIGluc3RhbmNlIGluIGBgemMuYnVpbGRvdXRgYC4gIEV4dGVuZGVkIGludGVycG9sYXRpb24gaXMKICAgIHVzaW5nIGBgJHtzZWN0aW9uOm9wdGlvbn1gYCB0byBkZW5vdGUgYSB2YWx1ZSBmcm9tIGEgZm9yZWlnbiBzZWN0aW9uLgotICAgSW50ZXJwb2xhdGlvbiBjYW4gc3BhbiBtdWx0aXBsZSBsZXZlbHMuIEZvciBjb252ZW5pZW5jZSwgaWYgdGhlIGBgc2VjdGlvbjpgYAotICAgcGFydCBpcyBvbWl0dGVkLCBpbnRlcnBvbGF0aW9uIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24gKGFuZCBwb3NzaWJseQotICAgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHNwZWNpYWwgc2VjdGlvbikuCisgICBJbnRlcnBvbGF0aW9uIGNhbiBzcGFuIG11bHRpcGxlIGxldmVscy4gIEZvciBjb252ZW5pZW5jZSwgaWYgdGhlCisgICBgYHNlY3Rpb246YGAgcGFydCBpcyBvbWl0dGVkLCBpbnRlcnBvbGF0aW9uIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHNlY3Rpb24KKyAgIChhbmQgcG9zc2libHkgdGhlIGRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHNwZWNpYWwgc2VjdGlvbikuCiAKICAgIEZvciBleGFtcGxlLCB0aGUgY29uZmlndXJhdGlvbiBzcGVjaWZpZWQgYWJvdmUgd2l0aCBiYXNpYyBpbnRlcnBvbGF0aW9uLAogICAgd291bGQgbG9vayBsaWtlIHRoaXMgd2l0aCBleHRlbmRlZCBpbnRlcnBvbGF0aW9uOgpAQCAtMzk5LDEzICs0MDAsMTMgQEAKICAgKiBgYHBhcnNlci5wb3BpdGVtKClgYCBuZXZlciByZXR1cm5zIGl0LgogCiAqIGBgcGFyc2VyLmdldChzZWN0aW9uLCBvcHRpb24sICoqa3dhcmdzKWBgIC0gdGhlIHNlY29uZCBhcmd1bWVudCBpcyAqKm5vdCoqCi0gIGEgZmFsbGJhY2sgdmFsdWUuIE5vdGUgaG93ZXZlciB0aGF0IHRoZSBzZWN0aW9uLWxldmVsIGBgZ2V0KClgYCBtZXRob2RzIGFyZQorICBhIGZhbGxiYWNrIHZhbHVlLiAgTm90ZSBob3dldmVyIHRoYXQgdGhlIHNlY3Rpb24tbGV2ZWwgYGBnZXQoKWBgIG1ldGhvZHMgYXJlCiAgIGNvbXBhdGlibGUgYm90aCB3aXRoIHRoZSBtYXBwaW5nIHByb3RvY29sIGFuZCB0aGUgY2xhc3NpYyBjb25maWdwYXJzZXIgQVBJLgogCiAqIGBgcGFyc2VyLml0ZW1zKClgYCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmcgcHJvdG9jb2wgKHJldHVybnMgYSBsaXN0IG9mCiAgICpzZWN0aW9uX25hbWUqLCAqc2VjdGlvbl9wcm94eSogcGFpcnMgaW5jbHVkaW5nIHRoZSBERUZBVUxUU0VDVCkuICBIb3dldmVyLAogICB0aGlzIG1ldGhvZCBjYW4gYWxzbyBiZSBpbnZva2VkIHdpdGggYXJndW1lbnRzOiBgYHBhcnNlci5pdGVtcyhzZWN0aW9uLCByYXcsCi0gIHZhcnMpYGAuIFRoZSBsYXR0ZXIgY2FsbCByZXR1cm5zIGEgbGlzdCBvZiAqb3B0aW9uKiwgKnZhbHVlKiBwYWlycyBmb3IKKyAgdmFycylgYC4gIFRoZSBsYXR0ZXIgY2FsbCByZXR1cm5zIGEgbGlzdCBvZiAqb3B0aW9uKiwgKnZhbHVlKiBwYWlycyBmb3IKICAgYSBzcGVjaWZpZWQgYGBzZWN0aW9uYGAsIHdpdGggYWxsIGludGVycG9sYXRpb25zIGV4cGFuZGVkICh1bmxlc3MKICAgYGByYXc9VHJ1ZWBgIGlzIHByb3ZpZGVkKS4KIApAQCAtNTM5LDkgKzU0MCw5IEBACiAKICogKmRlbGltaXRlcnMqLCBkZWZhdWx0IHZhbHVlOiBgYCgnPScsICc6JylgYAogCi0gIERlbGltaXRlcnMgYXJlIHN1YnN0cmluZ3MgdGhhdCBkZWxpbWl0IGtleXMgZnJvbSB2YWx1ZXMgd2l0aGluIGEgc2VjdGlvbi4gVGhlCi0gIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0aW5nIHN1YnN0cmluZyBvbiBhIGxpbmUgaXMgY29uc2lkZXJlZCBhIGRlbGltaXRlci4KLSAgVGhpcyBtZWFucyB2YWx1ZXMgKGJ1dCBub3Qga2V5cykgY2FuIGNvbnRhaW4gdGhlIGRlbGltaXRlcnMuCisgIERlbGltaXRlcnMgYXJlIHN1YnN0cmluZ3MgdGhhdCBkZWxpbWl0IGtleXMgZnJvbSB2YWx1ZXMgd2l0aGluIGEgc2VjdGlvbi4KKyAgVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBkZWxpbWl0aW5nIHN1YnN0cmluZyBvbiBhIGxpbmUgaXMgY29uc2lkZXJlZAorICBhIGRlbGltaXRlci4gIFRoaXMgbWVhbnMgdmFsdWVzIChidXQgbm90IGtleXMpIGNhbiBjb250YWluIHRoZSBkZWxpbWl0ZXJzLgogCiAgIFNlZSBhbHNvIHRoZSAqc3BhY2VfYXJvdW5kX2RlbGltaXRlcnMqIGFyZ3VtZW50IHRvCiAgIDptZXRoOmBDb25maWdQYXJzZXIud3JpdGVgLgpAQCAtNTUzLDcgKzU1NCw3IEBACiAgIENvbW1lbnQgcHJlZml4ZXMgYXJlIHN0cmluZ3MgdGhhdCBpbmRpY2F0ZSB0aGUgc3RhcnQgb2YgYSB2YWxpZCBjb21tZW50IHdpdGhpbgogICBhIGNvbmZpZyBmaWxlLiAqY29tbWVudF9wcmVmaXhlcyogYXJlIHVzZWQgb25seSBvbiBvdGhlcndpc2UgZW1wdHkgbGluZXMKICAgKG9wdGlvbmFsbHkgaW5kZW50ZWQpIHdoZXJlYXMgKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBjYW4gYmUgdXNlZCBhZnRlcgotICBldmVyeSB2YWxpZCB2YWx1ZSAoZS5nLiAgc2VjdGlvbiBuYW1lcywgb3B0aW9ucyBhbmQgZW1wdHkgbGluZXMgYXMgd2VsbCkuIEJ5CisgIGV2ZXJ5IHZhbGlkIHZhbHVlIChlLmcuIHNlY3Rpb24gbmFtZXMsIG9wdGlvbnMgYW5kIGVtcHR5IGxpbmVzIGFzIHdlbGwpLiAgQnkKICAgZGVmYXVsdCBpbmxpbmUgY29tbWVudHMgYXJlIGRpc2FibGVkIGFuZCBgYCcjJ2BgIGFuZCBgYCc7J2BgIGFyZSB1c2VkIGFzCiAgIHByZWZpeGVzIGZvciB3aG9sZSBsaW5lIGNvbW1lbnRzLgogCkBAIC01NjMsMTAgKzU2NCwxMCBAQAogCiAgIFBsZWFzZSBub3RlIHRoYXQgY29uZmlnIHBhcnNlcnMgZG9uJ3Qgc3VwcG9ydCBlc2NhcGluZyBvZiBjb21tZW50IHByZWZpeGVzIHNvCiAgIHVzaW5nICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyogbWF5IHByZXZlbnQgdXNlcnMgZnJvbSBzcGVjaWZ5aW5nIG9wdGlvbgotICB2YWx1ZXMgd2l0aCBjaGFyYWN0ZXJzIHVzZWQgYXMgY29tbWVudCBwcmVmaXhlcy4gV2hlbiBpbiBkb3VidCwgYXZvaWQgc2V0dGluZwotICAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqLiBJbiBhbnkgY2lyY3Vtc3RhbmNlcywgdGhlIG9ubHkgd2F5IG9mIHN0b3JpbmcKLSAgY29tbWVudCBwcmVmaXggY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBtdWx0aWxpbmUgdmFsdWVzIGlzIHRvCi0gIGludGVycG9sYXRlIHRoZSBwcmVmaXgsIGZvciBleGFtcGxlOjoKKyAgdmFsdWVzIHdpdGggY2hhcmFjdGVycyB1c2VkIGFzIGNvbW1lbnQgcHJlZml4ZXMuICBXaGVuIGluIGRvdWJ0LCBhdm9pZAorICBzZXR0aW5nICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyouICBJbiBhbnkgY2lyY3Vtc3RhbmNlcywgdGhlIG9ubHkgd2F5IG9mCisgIHN0b3JpbmcgY29tbWVudCBwcmVmaXggY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBpbiBtdWx0aWxpbmUKKyAgdmFsdWVzIGlzIHRvIGludGVycG9sYXRlIHRoZSBwcmVmaXgsIGZvciBleGFtcGxlOjoKIAogICAgID4+PiBmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyLCBFeHRlbmRlZEludGVycG9sYXRpb24KICAgICA+Pj4gcGFyc2VyID0gQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249RXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkpCkBAIC02MTEsNyArNjEyLDcgQEAKIAogICBXaGVuIHNldCB0byBgYFRydWVgYCwgdGhlIHBhcnNlciB3aWxsIG5vdCBhbGxvdyBmb3IgYW55IHNlY3Rpb24gb3Igb3B0aW9uCiAgIGR1cGxpY2F0ZXMgd2hpbGUgcmVhZGluZyBmcm9tIGEgc2luZ2xlIHNvdXJjZSAodXNpbmcgOm1ldGg6YHJlYWRfZmlsZWAsCi0gIDptZXRoOmByZWFkX3N0cmluZ2Agb3IgOm1ldGg6YHJlYWRfZGljdGApLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2Ugc3RyaWN0CisgIDptZXRoOmByZWFkX3N0cmluZ2Agb3IgOm1ldGg6YHJlYWRfZGljdGApLiAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHN0cmljdAogICBwYXJzZXJzIGluIG5ldyBhcHBsaWNhdGlvbnMuCiAKICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTY0NiwxMiArNjQ3LDEyIEBACiAKICAgVGhlIGNvbnZlbnRpb24gb2YgYWxsb3dpbmcgYSBzcGVjaWFsIHNlY3Rpb24gb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIG90aGVyCiAgIHNlY3Rpb25zIG9yIGludGVycG9sYXRpb24gcHVycG9zZXMgaXMgYSBwb3dlcmZ1bCBjb25jZXB0IG9mIHRoaXMgbGlicmFyeSwKLSAgbGV0dGluZyB1c2VycyBjcmVhdGUgY29tcGxleCBkZWNsYXJhdGl2ZSBjb25maWd1cmF0aW9ucy4gVGhpcyBzZWN0aW9uIGlzCisgIGxldHRpbmcgdXNlcnMgY3JlYXRlIGNvbXBsZXggZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbnMuICBUaGlzIHNlY3Rpb24gaXMKICAgbm9ybWFsbHkgY2FsbGVkIGBgIkRFRkFVTFQiYGAgYnV0IHRoaXMgY2FuIGJlIGN1c3RvbWl6ZWQgdG8gcG9pbnQgdG8gYW55Ci0gIG90aGVyIHZhbGlkIHNlY3Rpb24gbmFtZS4gU29tZSB0eXBpY2FsIHZhbHVlcyBpbmNsdWRlOiBgYCJnZW5lcmFsImBgIG9yCi0gIGBgImNvbW1vbiJgYC4gVGhlIG5hbWUgcHJvdmlkZWQgaXMgdXNlZCBmb3IgcmVjb2duaXppbmcgZGVmYXVsdCBzZWN0aW9ucyB3aGVuCi0gIHJlYWRpbmcgZnJvbSBhbnkgc291cmNlIGFuZCBpcyB1c2VkIHdoZW4gd3JpdGluZyBjb25maWd1cmF0aW9uIGJhY2sgdG8KLSAgYSBmaWxlLiBJdHMgY3VycmVudCB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZQorICBvdGhlciB2YWxpZCBzZWN0aW9uIG5hbWUuICBTb21lIHR5cGljYWwgdmFsdWVzIGluY2x1ZGU6IGBgImdlbmVyYWwiYGAgb3IKKyAgYGAiY29tbW9uImBgLiAgVGhlIG5hbWUgcHJvdmlkZWQgaXMgdXNlZCBmb3IgcmVjb2duaXppbmcgZGVmYXVsdCBzZWN0aW9ucworICB3aGVuIHJlYWRpbmcgZnJvbSBhbnkgc291cmNlIGFuZCBpcyB1c2VkIHdoZW4gd3JpdGluZyBjb25maWd1cmF0aW9uIGJhY2sgdG8KKyAgYSBmaWxlLiAgSXRzIGN1cnJlbnQgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCB1c2luZyB0aGUKICAgYGBwYXJzZXJfaW5zdGFuY2UuZGVmYXVsdF9zZWN0aW9uYGAgYXR0cmlidXRlIGFuZCBtYXkgYmUgbW9kaWZpZWQgYXQgcnVudGltZQogICAoaS5lLiB0byBjb252ZXJ0IGZpbGVzIGZyb20gb25lIGZvcm1hdCB0byBhbm90aGVyKS4KIApAQCAtNjYwLDE0ICs2NjEsMzAgQEAKICAgSW50ZXJwb2xhdGlvbiBiZWhhdmlvdXIgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGhhbmRsZXIKICAgdGhyb3VnaCB0aGUgKmludGVycG9sYXRpb24qIGFyZ3VtZW50LiBgYE5vbmVgYCBjYW4gYmUgdXNlZCB0byB0dXJuIG9mZgogICBpbnRlcnBvbGF0aW9uIGNvbXBsZXRlbHksIGBgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKClgYCBwcm92aWRlcyBhIG1vcmUKLSAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCisgIGFkdmFuY2VkIHZhcmlhbnQgaW5zcGlyZWQgYnkgYGB6Yy5idWlsZG91dGBgLiAgTW9yZSBvbiB0aGUgc3ViamVjdCBpbiB0aGUKICAgYGRlZGljYXRlZCBkb2N1bWVudGF0aW9uIHNlY3Rpb24gPCNpbnRlcnBvbGF0aW9uLW9mLXZhbHVlcz5gXy4KICAgOmNsYXNzOmBSYXdDb25maWdQYXJzZXJgIGhhcyBhIGRlZmF1bHQgdmFsdWUgb2YgYGBOb25lYGAuCiAKKyogKmNvbnZlcnRlcnMqLCBkZWZhdWx0IHZhbHVlOiBub3Qgc2V0CisKKyAgQ29uZmlnIHBhcnNlcnMgcHJvdmlkZSBvcHRpb24gdmFsdWUgZ2V0dGVycyB0aGF0IHBlcmZvcm0gdHlwZSBjb252ZXJzaW9uLiAgQnkKKyAgZGVmYXVsdCA6bWV0aDpgZ2V0aW50YCwgOm1ldGg6YGdldGZsb2F0YCwgYW5kIDptZXRoOmBnZXRib29sZWFuYCBhcmUKKyAgaW1wbGVtZW50ZWQuICBTaG91bGQgb3RoZXIgZ2V0dGVycyBiZSBkZXNpcmFibGUsIHVzZXJzIG1heSBkZWZpbmUgdGhlbSBpbgorICBhIHN1YmNsYXNzIG9yIHBhc3MgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5IGlzIGEgbmFtZSBvZiB0aGUgY29udmVydGVyIGFuZAorICBlYWNoIHZhbHVlIGlzIGEgY2FsbGFibGUgaW1wbGVtZW50aW5nIHNhaWQgY29udmVyc2lvbi4gIEZvciBpbnN0YW5jZSwgcGFzc2luZworICBgYHsnZGVjaW1hbCc6IGRlY2ltYWwuRGVjaW1hbH1gYCB3b3VsZCBhZGQgOm1ldGg6YGdldGRlY2ltYWxgIG9uIGJvdGggdGhlCisgIHBhcnNlciBvYmplY3QgYW5kIGFsbCBzZWN0aW9uIHByb3hpZXMuICBJbiBvdGhlciB3b3JkcywgaXQgd2lsbCBiZSBwb3NzaWJsZQorICB0byB3cml0ZSBib3RoIGBgcGFyc2VyX2luc3RhbmNlLmdldGRlY2ltYWwoJ3NlY3Rpb24nLCAna2V5JywgZmFsbGJhY2s9MClgYAorICBhbmQgYGBwYXJzZXJfaW5zdGFuY2VbJ3NlY3Rpb24nXS5nZXRkZWNpbWFsKCdrZXknLCAwKWBgLgorCisgIElmIHRoZSBjb252ZXJ0ZXIgbmVlZHMgdG8gYWNjZXNzIHRoZSBzdGF0ZSBvZiB0aGUgcGFyc2VyLCBpdCBjYW4gYmUKKyAgaW1wbGVtZW50ZWQgYXMgYSBtZXRob2Qgb24gYSBjb25maWcgcGFyc2VyIHN1YmNsYXNzLiAgSWYgdGhlIG5hbWUgb2YgdGhpcworICBtZXRob2Qgc3RhcnRzIHdpdGggYGBnZXRgYCwgaXQgd2lsbCBiZSBhdmFpbGFibGUgb24gYWxsIHNlY3Rpb24gcHJveGllcywgaW4KKyAgdGhlIGRpY3QtY29tcGF0aWJsZSBmb3JtIChzZWUgdGhlIGBgZ2V0ZGVjaW1hbCgpYGAgZXhhbXBsZSBhYm92ZSkuCiAKIE1vcmUgYWR2YW5jZWQgY3VzdG9taXphdGlvbiBtYXkgYmUgYWNoaWV2ZWQgYnkgb3ZlcnJpZGluZyBkZWZhdWx0IHZhbHVlcyBvZgotdGhlc2UgcGFyc2VyIGF0dHJpYnV0ZXMuICBUaGUgZGVmYXVsdHMgYXJlIGRlZmluZWQgb24gdGhlIGNsYXNzZXMsIHNvIHRoZXkKLW1heSBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb3IgYnkgYXR0cmlidXRlIGFzc2lnbm1lbnQuCit0aGVzZSBwYXJzZXIgYXR0cmlidXRlcy4gIFRoZSBkZWZhdWx0cyBhcmUgZGVmaW5lZCBvbiB0aGUgY2xhc3Nlcywgc28gdGhleSBtYXkKK2JlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBvciBieSBhdHRyaWJ1dGUgYXNzaWdubWVudC4KIAogLi4gYXR0cmlidXRlOjogQk9PTEVBTl9TVEFURVMKIApAQCAtNzI1LDEwICs3NDIsMTEgQEAKIAogLi4gYXR0cmlidXRlOjogU0VDVENSRQogCi0gIEEgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gcGFyc2Ugc2VjdGlvbiBoZWFkZXJzLiBUaGUgZGVmYXVsdAotICBtYXRjaGVzIGBgW3NlY3Rpb25dYGAgdG8gdGhlIG5hbWUgYGAic2VjdGlvbiJgYC4gV2hpdGVzcGFjZSBpcyBjb25zaWRlcmVkIHBhcnQKLSAgb2YgdGhlIHNlY3Rpb24gbmFtZSwgdGh1cyBgYFsgIGxhcmNoICBdYGAgd2lsbCBiZSByZWFkIGFzIGEgc2VjdGlvbiBvZiBuYW1lCi0gIGBgIiAgbGFyY2ggICJgYC4gT3ZlcnJpZGUgdGhpcyBhdHRyaWJ1dGUgaWYgdGhhdCdzIHVuc3VpdGFibGUuICBGb3IgZXhhbXBsZToKKyAgQSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBwYXJzZSBzZWN0aW9uIGhlYWRlcnMuICBUaGUgZGVmYXVsdAorICBtYXRjaGVzIGBgW3NlY3Rpb25dYGAgdG8gdGhlIG5hbWUgYGAic2VjdGlvbiJgYC4gIFdoaXRlc3BhY2UgaXMgY29uc2lkZXJlZAorICBwYXJ0IG9mIHRoZSBzZWN0aW9uIG5hbWUsIHRodXMgYGBbICBsYXJjaCAgXWBgIHdpbGwgYmUgcmVhZCBhcyBhIHNlY3Rpb24gb2YKKyAgbmFtZSBgYCIgIGxhcmNoICAiYGAuICBPdmVycmlkZSB0aGlzIGF0dHJpYnV0ZSBpZiB0aGF0J3MgdW5zdWl0YWJsZS4gIEZvcgorICBleGFtcGxlOgogCiAgIC4uIGRvY3Rlc3Q6OgogCkBAIC04NTksNyArODc3LDcgQEAKIENvbmZpZ1BhcnNlciBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBjbGFzczo6IENvbmZpZ1BhcnNlcihkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QsIGFsbG93X25vX3ZhbHVlPUZhbHNlLCBkZWxpbWl0ZXJzPSgnPScsICc6JyksIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249Y29uZmlncGFyc2VyLkRFRkFVTFRTRUNULCBpbnRlcnBvbGF0aW9uPUJhc2ljSW50ZXJwb2xhdGlvbigpKQorLi4gY2xhc3M6OiBDb25maWdQYXJzZXIoZGVmYXVsdHM9Tm9uZSwgZGljdF90eXBlPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LCBhbGxvd19ub192YWx1ZT1GYWxzZSwgZGVsaW1pdGVycz0oJz0nLCAnOicpLCBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksIGlubGluZV9jb21tZW50X3ByZWZpeGVzPU5vbmUsIHN0cmljdD1UcnVlLCBlbXB0eV9saW5lc19pbl92YWx1ZXM9VHJ1ZSwgZGVmYXVsdF9zZWN0aW9uPWNvbmZpZ3BhcnNlci5ERUZBVUxUU0VDVCwgaW50ZXJwb2xhdGlvbj1CYXNpY0ludGVycG9sYXRpb24oKSwgY29udmVydGVycz17fSkKIAogICAgVGhlIG1haW4gY29uZmlndXJhdGlvbiBwYXJzZXIuICBXaGVuICpkZWZhdWx0cyogaXMgZ2l2ZW4sIGl0IGlzIGluaXRpYWxpemVkCiAgICBpbnRvIHRoZSBkaWN0aW9uYXJ5IG9mIGludHJpbnNpYyBkZWZhdWx0cy4gIFdoZW4gKmRpY3RfdHlwZSogaXMgZ2l2ZW4sIGl0CkBAIC04NjksOCArODg3LDggQEAKICAgIFdoZW4gKmRlbGltaXRlcnMqIGlzIGdpdmVuLCBpdCBpcyB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0CiAgICBkaXZpZGUga2V5cyBmcm9tIHZhbHVlcy4gIFdoZW4gKmNvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsIGJlIHVzZWQKICAgIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBvdGhlcndpc2UgZW1wdHkgbGluZXMuCi0gICBDb21tZW50cyBjYW4gYmUgaW5kZW50ZWQuIFdoZW4gKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBpcyBnaXZlbiwgaXQgd2lsbCBiZQotICAgdXNlZCBhcyB0aGUgc2V0IG9mIHN1YnN0cmluZ3MgdGhhdCBwcmVmaXggY29tbWVudHMgaW4gbm9uLWVtcHR5IGxpbmVzLgorICAgQ29tbWVudHMgY2FuIGJlIGluZGVudGVkLiAgV2hlbiAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsCisgICBiZSB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBub24tZW1wdHkgbGluZXMuCiAKICAgIFdoZW4gKnN0cmljdCogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgdGhlIHBhcnNlciB3b24ndCBhbGxvdyBmb3IKICAgIGFueSBzZWN0aW9uIG9yIG9wdGlvbiBkdXBsaWNhdGVzIHdoaWxlIHJlYWRpbmcgZnJvbSBhIHNpbmdsZSBzb3VyY2UgKGZpbGUsCkBAIC04ODQsMTMgKzkwMiwxMyBAQAogCiAgICBXaGVuICpkZWZhdWx0X3NlY3Rpb24qIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgdGhlIG5hbWUgZm9yIHRoZSBzcGVjaWFsCiAgICBzZWN0aW9uIGhvbGRpbmcgZGVmYXVsdCB2YWx1ZXMgZm9yIG90aGVyIHNlY3Rpb25zIGFuZCBpbnRlcnBvbGF0aW9uIHB1cnBvc2VzCi0gICAobm9ybWFsbHkgbmFtZWQgYGAiREVGQVVMVCJgYCkuIFRoaXMgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCBhbmQgY2hhbmdlZCBvbgorICAgKG5vcm1hbGx5IG5hbWVkIGBgIkRFRkFVTFQiYGApLiAgVGhpcyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGFuZCBjaGFuZ2VkIG9uCiAgICBydW50aW1lIHVzaW5nIHRoZSBgYGRlZmF1bHRfc2VjdGlvbmBgIGluc3RhbmNlIGF0dHJpYnV0ZS4KIAogICAgSW50ZXJwb2xhdGlvbiBiZWhhdmlvdXIgbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcHJvdmlkaW5nIGEgY3VzdG9tIGhhbmRsZXIKICAgIHRocm91Z2ggdGhlICppbnRlcnBvbGF0aW9uKiBhcmd1bWVudC4gYGBOb25lYGAgY2FuIGJlIHVzZWQgdG8gdHVybiBvZmYKICAgIGludGVycG9sYXRpb24gY29tcGxldGVseSwgYGBFeHRlbmRlZEludGVycG9sYXRpb24oKWBgIHByb3ZpZGVzIGEgbW9yZQotICAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCisgICBhZHZhbmNlZCB2YXJpYW50IGluc3BpcmVkIGJ5IGBgemMuYnVpbGRvdXRgYC4gIE1vcmUgb24gdGhlIHN1YmplY3QgaW4gdGhlCiAgICBgZGVkaWNhdGVkIGRvY3VtZW50YXRpb24gc2VjdGlvbiA8I2ludGVycG9sYXRpb24tb2YtdmFsdWVzPmBfLgogCiAgICBBbGwgb3B0aW9uIG5hbWVzIHVzZWQgaW4gaW50ZXJwb2xhdGlvbiB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIHRoZQpAQCAtODk5LDYgKzkxNywxMiBAQAogICAgY29udmVydHMgb3B0aW9uIG5hbWVzIHRvIGxvd2VyIGNhc2UpLCB0aGUgdmFsdWVzIGBgZm9vICUoYmFyKXNgYCBhbmQgYGBmb28KICAgICUoQkFSKXNgYCBhcmUgZXF1aXZhbGVudC4KIAorICAgV2hlbiAqY29udmVydGVycyogaXMgZ2l2ZW4sIGl0IHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgd2hlcmUgZWFjaCBrZXkKKyAgIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgYSB0eXBlIGNvbnZlcnRlciBhbmQgZWFjaCB2YWx1ZSBpcyBhIGNhbGxhYmxlCisgICBpbXBsZW1lbnRpbmcgdGhlIGNvbnZlcnNpb24gZnJvbSBzdHJpbmcgdG8gdGhlIGRlc2lyZWQgZGF0YXR5cGUuICBFdmVyeQorICAgY29udmVydGVyIGdldHMgaXRzIG93biBjb3JyZXNwb25kaW5nIDptZXRoOmBnZXQqKClgIG1ldGhvZCBvbiB0aGUgcGFyc2VyCisgICBvYmplY3QgYW5kIHNlY3Rpb24gcHJveGllcy4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFRoZSBkZWZhdWx0ICpkaWN0X3R5cGUqIGlzIDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgLgogCkBAIC05MDcsNiArOTMxLDkgQEAKICAgICAgICplbXB0eV9saW5lc19pbl92YWx1ZXMqLCAqZGVmYXVsdF9zZWN0aW9uKiBhbmQgKmludGVycG9sYXRpb24qIHdlcmUKICAgICAgIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlICpjb252ZXJ0ZXJzKiBhcmd1bWVudCB3YXMgYWRkZWQuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdHMoKQogCkBAIC05NDQsNyArOTcxLDcgQEAKICAgIC4uIG1ldGhvZDo6IGhhc19vcHRpb24oc2VjdGlvbiwgb3B0aW9uKQogCiAgICAgICBJZiB0aGUgZ2l2ZW4gKnNlY3Rpb24qIGV4aXN0cywgYW5kIGNvbnRhaW5zIHRoZSBnaXZlbiAqb3B0aW9uKiwgcmV0dXJuCi0gICAgICA6Y29uc3Q6YFRydWVgOyBvdGhlcndpc2UgcmV0dXJuIDpjb25zdDpgRmFsc2VgLiBJZiB0aGUgc3BlY2lmaWVkCisgICAgICA6Y29uc3Q6YFRydWVgOyBvdGhlcndpc2UgcmV0dXJuIDpjb25zdDpgRmFsc2VgLiAgSWYgdGhlIHNwZWNpZmllZAogICAgICAgKnNlY3Rpb24qIGlzIDpjb25zdDpgTm9uZWAgb3IgYW4gZW1wdHkgc3RyaW5nLCBERUZBVUxUIGlzIGFzc3VtZWQuCiAKIApAQCAtMTA2OSw3ICsxMDk2LDcgQEAKICAgICAgIDptZXRoOmBnZXRgIG1ldGhvZC4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEl0ZW1zIHByZXNlbnQgaW4gKnZhcnMqIG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIHJlc3VsdC4gVGhlIHByZXZpb3VzCisgICAgICAgICBJdGVtcyBwcmVzZW50IGluICp2YXJzKiBubyBsb25nZXIgYXBwZWFyIGluIHRoZSByZXN1bHQuICBUaGUgcHJldmlvdXMKICAgICAgICAgIGJlaGF2aW91ciBtaXhlZCBhY3R1YWwgcGFyc2VyIG9wdGlvbnMgd2l0aCB2YXJpYWJsZXMgcHJvdmlkZWQgZm9yCiAgICAgICAgICBpbnRlcnBvbGF0aW9uLgogCkBAIC0xMTcwLDcgKzExOTcsNyBAQAogCiAgICAuLiBub3RlOjoKICAgICAgIENvbnNpZGVyIHVzaW5nIDpjbGFzczpgQ29uZmlnUGFyc2VyYCBpbnN0ZWFkIHdoaWNoIGNoZWNrcyB0eXBlcyBvZgotICAgICAgdGhlIHZhbHVlcyB0byBiZSBzdG9yZWQgaW50ZXJuYWxseS4gSWYgeW91IGRvbid0IHdhbnQgaW50ZXJwb2xhdGlvbiwgeW91CisgICAgICB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbnRlcm5hbGx5LiAgSWYgeW91IGRvbid0IHdhbnQgaW50ZXJwb2xhdGlvbiwgeW91CiAgICAgICBjYW4gdXNlIGBgQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSlgYC4KIAogCkBAIC0xMTgxLDcgKzEyMDgsNyBAQAogICAgICAgKmRlZmF1bHQgc2VjdGlvbiogbmFtZSBpcyBwYXNzZWQsIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgICAgVHlwZSBvZiAqc2VjdGlvbiogaXMgbm90IGNoZWNrZWQgd2hpY2ggbGV0cyB1c2VycyBjcmVhdGUgbm9uLXN0cmluZyBuYW1lZAotICAgICAgc2VjdGlvbnMuIFRoaXMgYmVoYXZpb3VyIGlzIHVuc3VwcG9ydGVkIGFuZCBtYXkgY2F1c2UgaW50ZXJuYWwgZXJyb3JzLgorICAgICAgc2VjdGlvbnMuICBUaGlzIGJlaGF2aW91ciBpcyB1bnN1cHBvcnRlZCBhbmQgbWF5IGNhdXNlIGludGVybmFsIGVycm9ycy4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXQoc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSkKQEAgLTEyODIsMyArMTMwOSw0IEBACiAuLiBbMV0gQ29uZmlnIHBhcnNlcnMgYWxsb3cgZm9yIGhlYXZ5IGN1c3RvbWl6YXRpb24uICBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4KICAgICAgICBjaGFuZ2luZyB0aGUgYmVoYXZpb3VyIG91dGxpbmVkIGJ5IHRoZSBmb290bm90ZSByZWZlcmVuY2UsIGNvbnN1bHQgdGhlCiAgICAgICAgYEN1c3RvbWl6aW5nIFBhcnNlciBCZWhhdmlvdXJgXyBzZWN0aW9uLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0IGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdAppbmRleCA0MmI1YWYyLi5kNWEwZjA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKQEAgLTQ1LDcgKzQ1LDYgQEAKICAgIGZvciBtb3JlIGRldGFpbHMuCiAKIAotCiAuLiBkYXRhOjogRWxsaXBzaXMKIAogICAgVGhlIHNhbWUgYXMgYGAuLi5gYC4gIFNwZWNpYWwgdmFsdWUgdXNlZCBtb3N0bHkgaW4gY29uanVuY3Rpb24gd2l0aCBleHRlbmRlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCA2ZjM2ODY0Li41NTBiMzQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtMTcyLDYgKzE3MiwxNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAorLi4gZnVuY3Rpb246OiByZWRpcmVjdF9zdGRlcnIobmV3X3RhcmdldCkKKworICAgU2ltaWxhciB0byA6ZnVuYzpgfmNvbnRleHRsaWIucmVkaXJlY3Rfc3Rkb3V0YCBidXQgcmVkaXJlY3RpbmcKKyAgIDpkYXRhOmBzeXMuc3RkZXJyYCB0byBhbm90aGVyIGZpbGUgb3IgZmlsZS1saWtlIG9iamVjdC4KKworICAgVGhpcyBjb250ZXh0IG1hbmFnZXIgaXMgOnJlZjpgcmVlbnRyYW50IDxyZWVudHJhbnQtY21zPmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGNsYXNzOjogQ29udGV4dERlY29yYXRvcigpCiAKICAgIEEgYmFzZSBjbGFzcyB0aGF0IGVuYWJsZXMgYSBjb250ZXh0IG1hbmFnZXIgdG8gYWxzbyBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggZTlhOWNiNS4uNGZjZmFlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC01LDYgKzUsNyBAQAogICAgOnN5bm9wc2lzOiBXcml0ZSBhbmQgcmVhZCB0YWJ1bGFyIGRhdGEgdG8gYW5kIGZyb20gZGVsaW1pdGVkIGZpbGVzLgogLi4gc2VjdGlvbmF1dGhvcjo6IFNraXAgTW9udGFuYXJvIDxza2lwQHBvYm94LmNvbT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY3N2LnB5YAogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGNzdgpAQCAtNDE4LDcgKzQxOSw3IEBACiAKIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzICg6Y2xhc3M6YERpY3RXcml0ZXJgIGluc3RhbmNlcyBhbmQgb2JqZWN0cyByZXR1cm5lZCBieQogdGhlIDpmdW5jOmB3cml0ZXJgIGZ1bmN0aW9uKSBoYXZlIHRoZSBmb2xsb3dpbmcgcHVibGljIG1ldGhvZHMuICBBICpyb3cqIG11c3QgYmUKLWEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBvciBudW1iZXJzIGZvciA6Y2xhc3M6YFdyaXRlcmAgb2JqZWN0cyBhbmQgYSBkaWN0aW9uYXJ5CithbiBpdGVyYWJsZSBvZiBzdHJpbmdzIG9yIG51bWJlcnMgZm9yIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzIGFuZCBhIGRpY3Rpb25hcnkKIG1hcHBpbmcgZmllbGRuYW1lcyB0byBzdHJpbmdzIG9yIG51bWJlcnMgKGJ5IHBhc3NpbmcgdGhlbSB0aHJvdWdoIDpmdW5jOmBzdHJgCiBmaXJzdCkgZm9yIDpjbGFzczpgRGljdFdyaXRlcmAgb2JqZWN0cy4gIE5vdGUgdGhhdCBjb21wbGV4IG51bWJlcnMgYXJlIHdyaXR0ZW4KIG91dCBzdXJyb3VuZGVkIGJ5IHBhcmVucy4gVGhpcyBtYXkgY2F1c2Ugc29tZSBwcm9ibGVtcyBmb3Igb3RoZXIgcHJvZ3JhbXMgd2hpY2gKQEAgLTQzMCw2ICs0MzEsOCBAQAogICAgV3JpdGUgdGhlICpyb3cqIHBhcmFtZXRlciB0byB0aGUgd3JpdGVyJ3MgZmlsZSBvYmplY3QsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8KICAgIHRoZSBjdXJyZW50IGRpYWxlY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIGFyYml0cmFyeSBpdGVyYWJsZXMuCiAKIC4uIG1ldGhvZDo6IGNzdndyaXRlci53cml0ZXJvd3Mocm93cykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdCBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKaW5kZXggZjNlNjBiNC4uZThkZmQ4MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CkBAIC01OTksNiArNTk5LDEzIEBACiAgICAgICBPbmx5IG9uZSAqY2gqIGNhbiBiZSBwdXNoZWQgYmVmb3JlIDptZXRoOmBnZXRjaGAgaXMgY2FsbGVkLgogCiAKKy4uIGZ1bmN0aW9uOjogdXBkYXRlX2xpbmVzX2NvbHMoKQorCisgICBVcGRhdGUgOmVudnZhcjpgTElORVNgIGFuZCA6ZW52dmFyOmBDT0xTYC4gVXNlZnVsIGZvciBkZXRlY3RpbmcgbWFudWFsIHNjcmVlbiByZXNpemUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogdW5nZXRfd2NoKGNoKQogCiAgICBQdXNoICpjaCogc28gdGhlIG5leHQgOm1ldGg6YGdldF93Y2hgIHdpbGwgcmV0dXJuIGl0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDg4ZjNmNmUuLjk3NmNkNDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTcsNiArNyw4IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogVGltIFBldGVycyA8dGltQHpvcGUuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IEEuTS4gS3VjaGxpbmcgPGFta0BhbWsuY2E+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2RhdGV0aW1lLnB5YAorCiAuLiBYWFggd2hhdCBvcmRlciBzaG91bGQgdGhlIHR5cGVzIGJlIGRpc2N1c3NlZCBpbj8KIAogVGhlIDptb2Q6YGRhdGV0aW1lYCBtb2R1bGUgc3VwcGxpZXMgY2xhc3NlcyBmb3IgbWFuaXB1bGF0aW5nIGRhdGVzIGFuZCB0aW1lcyBpbgpAQCAtNzU3LDEzICs3NTksMTkgQEAKICAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcwogICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24sCiAgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgotICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbiAxOTcwIHRocm91Z2ggMjAzOC4gU2VlIGFsc28KLSAgIDptZXRoOmBmcm9tdGltZXN0YW1wYC4KKyAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4gMTk3MCB0aHJvdWdoIDIwMzguCiAKLSAgIE9uIHRoZSBQT1NJWCBjb21wbGlhbnQgcGxhdGZvcm1zLCBgYHV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKWBgCi0gICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbjo6CisgICBUbyBnZXQgYW4gYXdhcmUgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCwgY2FsbCA6bWV0aDpgZnJvbXRpbWVzdGFtcGA6OgogCi0gICAgIGRhdGV0aW1lKDE5NzAsIDEsIDEpICsgdGltZWRlbHRhKHNlY29uZHM9dGltZXN0YW1wKQorICAgICBkYXRldGltZS5mcm9tdGltZXN0YW1wKHRpbWVzdGFtcCwgdGltZXpvbmUudXRjKQorCisgICBPbiB0aGUgUE9TSVggY29tcGxpYW50IHBsYXRmb3JtcywgaXQgaXMgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nCisgICBleHByZXNzaW9uOjoKKworICAgICBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKSArIHRpbWVkZWx0YShzZWNvbmRzPXRpbWVzdGFtcCkKKworICAgZXhjZXB0IHRoZSBsYXR0ZXIgZm9ybXVsYSBhbHdheXMgc3VwcG9ydHMgdGhlIGZ1bGwgeWVhcnMgcmFuZ2U6IGJldHdlZW4KKyAgIDpjb25zdDpgTUlOWUVBUmAgYW5kIDpjb25zdDpgTUFYWUVBUmAgaW5jbHVzaXZlLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdGltZXN0YW1wCkBAIC0xMzc2LDEwICsxMzg0LDEzIEBACiAKICogZWZmaWNpZW50IHBpY2tsaW5nCiAKLSogaW4gQm9vbGVhbiBjb250ZXh0cywgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaXMgY29uc2lkZXJlZCB0byBiZSB0cnVlIGlmIGFuZAotICBvbmx5IGlmLCBhZnRlciBjb252ZXJ0aW5nIGl0IHRvIG1pbnV0ZXMgYW5kIHN1YnRyYWN0aW5nIDptZXRoOmB1dGNvZmZzZXRgIChvcgotICBgYDBgYCBpZiB0aGF0J3MgYGBOb25lYGApLCB0aGUgcmVzdWx0IGlzIG5vbi16ZXJvLgorSW4gYm9vbGVhbiBjb250ZXh0cywgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaXMgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgdHJ1ZS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIEJlZm9yZSBQeXRob24gMy41LCBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3YXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpZiBpdAorICAgcmVwcmVzZW50ZWQgbWlkbmlnaHQgaW4gVVRDLiAgVGhpcyBiZWhhdmlvciB3YXMgY29uc2lkZXJlZCBvYnNjdXJlIGFuZAorICAgZXJyb3ItcHJvbmUgYW5kIGhhcyBiZWVuIHJlbW92ZWQgaW4gUHl0aG9uIDMuNS4gIFNlZSA6aXNzdWU6YDEzOTM2YCBmb3IgZnVsbAorICAgZGV0YWlscy4KIAogSW5zdGFuY2UgbWV0aG9kczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGJtLnJzdCBiL0RvYy9saWJyYXJ5L2RibS5yc3QKaW5kZXggZTZhODJkNi4uM2YzYzQzZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGJtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CkBAIC0zMjUsMTMgKzMyNSwxOCBAQAogICAgZHVtYmRibSBkYXRhYmFzZSBpcyBjcmVhdGVkLCBmaWxlcyB3aXRoIDpmaWxlOmAuZGF0YCBhbmQgOmZpbGU6YC5kaXJgIGV4dGVuc2lvbnMKICAgIGFyZSBjcmVhdGVkLgogCi0gICBUaGUgb3B0aW9uYWwgKmZsYWcqIGFyZ3VtZW50IGlzIGN1cnJlbnRseSBpZ25vcmVkOyB0aGUgZGF0YWJhc2UgaXMgYWx3YXlzIG9wZW5lZAotICAgZm9yIHVwZGF0ZSwgYW5kIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KKyAgIFRoZSBvcHRpb25hbCAqZmxhZyogYXJndW1lbnQgc3VwcG9ydHMgb25seSB0aGUgc2VtYW50aWNzIG9mIGBgJ2MnYGAKKyAgIGFuZCBgYCduJ2BgIHZhbHVlcy4gIE90aGVyIHZhbHVlcyB3aWxsIGRlZmF1bHQgdG8gZGF0YWJhc2UgYmVpbmcgYWx3YXlzCisgICBvcGVuZWQgZm9yIHVwZGF0ZSwgYW5kIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIAogICAgVGhlIG9wdGlvbmFsICptb2RlKiBhcmd1bWVudCBpcyB0aGUgVW5peCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHkgd2hlbiB0aGUKICAgIGRhdGFiYXNlIGhhcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8gb2N0YWwgYGAwbzY2NmBgIChhbmQgd2lsbCBiZSBtb2RpZmllZAogICAgYnkgdGhlIHByZXZhaWxpbmcgdW1hc2spLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgOmZ1bmM6YC5vcGVuYCBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZSBmbGFnIGhhcyB0aGUgdmFsdWUKKyAgICAgIGBgJ24nYGAuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQogICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgIGNsYXNzLCA6Y2xhc3M6YGR1bWJkYm1gIG9iamVjdHMKICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCA3NTliZTcwLi41ZDdmZmZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtMTIsNiArMTIsOCBAQAogLi4gbW9kdWxlYXV0aG9yOjogU3RlZmFuIEtyYWggPHNrcmFoIGF0IGJ5dGVyZWVmLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2RlY2ltYWwucHlgCisKIC4uIGltcG9ydCBtb2R1bGVzIGZvciB0ZXN0aW5nIGlubGluZSBkb2N0ZXN0cyB3aXRoIHRoZSBTcGhpbnggZG9jdGVzdCBidWlsZGVyCiAuLiB0ZXN0c2V0dXA6OiAqCiAKQEAgLTc0Miw3ICs3NDQsNyBAQAogICAgICAgKiBgYCJOYU4iYGAsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiAoTm90IGEgTnVtYmVyKS4KICAgICAgICogYGAic05hTiJgYCwgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgc2lnbmFsaW5nIE5hTi4KIAotICAgLi4gbWV0aG9kOjogcXVhbnRpemUoZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUsIHdhdGNoZXhwPVRydWUpCisgICAuLiBtZXRob2Q6OiBxdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkKIAogICAgICAgUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUKICAgICAgIGV4cG9uZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4KQEAgLTc2NSwxNCArNzY3LDggQEAKICAgICAgIGBgY29udGV4dGBgIGFyZ3VtZW50OyBpZiBuZWl0aGVyIGFyZ3VtZW50IGlzIGdpdmVuIHRoZSByb3VuZGluZyBtb2RlIG9mCiAgICAgICB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuCiAKLSAgICAgIElmICp3YXRjaGV4cCogaXMgc2V0IChkZWZhdWx0KSwgdGhlbiBhbiBlcnJvciBpcyByZXR1cm5lZCB3aGVuZXZlciB0aGUKLSAgICAgIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gOmF0dHI6YEVtYXhgIG9yIGxlc3MgdGhhbgotICAgICAgOmF0dHI6YEV0aW55YC4KLQotICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotICAgICAgICAgKndhdGNoZXhwKiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZnJvbSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbgotICAgICAgICAgYW5kIGlzIG5vdCBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uCi0gICAgICAgICAzLjQsIHdoZXJlIGl0IGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorICAgICAgQW4gZXJyb3IgaXMgcmV0dXJuZWQgd2hlbmV2ZXIgdGhlIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4KKyAgICAgIDphdHRyOmBFbWF4YCBvciBsZXNzIHRoYW4gOmF0dHI6YEV0aW55YC4KIAogICAgLi4gbWV0aG9kOjogcmFkaXgoKQogCkBAIC0yMDkyLDQgKzIwODgsMyBAQAogCiAgICA+Pj4gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pLmNyZWF0ZV9kZWNpbWFsKCcxLjIzNDU2NzgnKQogICAgRGVjaW1hbCgnMS4yMzQ1JykKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0IGIvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CmluZGV4IDA2ZTcwNDguLmQyYjVmYTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKQEAgLTE2LDYgKzE2LDcgQEAKIAogLi4gdG9jdHJlZTo6CiAKKyAgIHR5cGluZy5yc3QKICAgIHB5ZG9jLnJzdAogICAgZG9jdGVzdC5yc3QKICAgIHVuaXR0ZXN0LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAppbmRleCA1ZjcyZWE2Li4zODI0NWU3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdApAQCAtNyw2ICs3LDggQEAKIC4uIHNlY3Rpb25hdXRob3I6OiBUaW0gUGV0ZXJzIDx0aW1fb25lQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIC4uIE1hcmt1cCBieSBGcmVkIEwuIERyYWtlLCBKci4gPGZkcmFrZUBhY20ub3JnPgogCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9kaWZmbGliLnB5YAorCiAuLiB0ZXN0c2V0dXA6OgogCiAgICBpbXBvcnQgc3lzCkBAIC0yNSw3ICsyNyw5IEBACiAgICBsaXR0bGUgZmFuY2llciB0aGFuLCBhbiBhbGdvcml0aG0gcHVibGlzaGVkIGluIHRoZSBsYXRlIDE5ODAncyBieSBSYXRjbGlmZiBhbmQKICAgIE9iZXJzaGVscCB1bmRlciB0aGUgaHlwZXJib2xpYyBuYW1lICJnZXN0YWx0IHBhdHRlcm4gbWF0Y2hpbmcuIiAgVGhlIGlkZWEgaXMgdG8KICAgIGZpbmQgdGhlIGxvbmdlc3QgY29udGlndW91cyBtYXRjaGluZyBzdWJzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIG5vICJqdW5rIgotICAgZWxlbWVudHMgKHRoZSBSYXRjbGlmZiBhbmQgT2JlcnNoZWxwIGFsZ29yaXRobSBkb2Vzbid0IGFkZHJlc3MganVuaykuICBUaGUgc2FtZQorICAgZWxlbWVudHM7IHRoZXNlICJqdW5rIiBlbGVtZW50cyBhcmUgb25lcyB0aGF0IGFyZSB1bmludGVyZXN0aW5nIGluIHNvbWUKKyAgIHNlbnNlLCBzdWNoIGFzIGJsYW5rIGxpbmVzIG9yIHdoaXRlc3BhY2UuICAoSGFuZGxpbmcganVuayBpcyBhbgorICAgZXh0ZW5zaW9uIHRvIHRoZSBSYXRjbGlmZiBhbmQgT2JlcnNoZWxwIGFsZ29yaXRobS4pIFRoZSBzYW1lCiAgICBpZGVhIGlzIHRoZW4gYXBwbGllZCByZWN1cnNpdmVseSB0byB0aGUgcGllY2VzIG9mIHRoZSBzZXF1ZW5jZXMgdG8gdGhlIGxlZnQgYW5kCiAgICB0byB0aGUgcmlnaHQgb2YgdGhlIG1hdGNoaW5nIHN1YnNlcXVlbmNlLiAgVGhpcyBkb2VzIG5vdCB5aWVsZCBtaW5pbWFsIGVkaXQKICAgIHNlcXVlbmNlcywgYnV0IGRvZXMgdGVuZCB0byB5aWVsZCBtYXRjaGVzIHRoYXQgImxvb2sgcmlnaHQiIHRvIHBlb3BsZS4KQEAgLTEwMCw3ICsxMDQsOCBAQAogCiAgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHB1YmxpYzoKIAotICAgLi4gbWV0aG9kOjogbWFrZV9maWxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2M9JycsIHRvZGVzYz0nJywgY29udGV4dD1GYWxzZSwgbnVtbGluZXM9NSkKKyAgIC4uIG1ldGhvZDo6IG1ha2VfZmlsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjPScnLCB0b2Rlc2M9JycsIGNvbnRleHQ9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1saW5lcz01LCAqLCBjaGFyc2V0PSd1dGYtOCcpCiAKICAgICAgIENvbXBhcmVzICpmcm9tbGluZXMqIGFuZCAqdG9saW5lcyogKGxpc3RzIG9mIHN0cmluZ3MpIGFuZCByZXR1cm5zIGEgc3RyaW5nIHdoaWNoCiAgICAgICBpcyBhIGNvbXBsZXRlIEhUTUwgZmlsZSBjb250YWluaW5nIGEgdGFibGUgc2hvd2luZyBsaW5lIGJ5IGxpbmUgZGlmZmVyZW5jZXMgd2l0aApAQCAtMTE5LDYgKzEyNCwxMCBAQAogICAgICAgdGhlIG5leHQgZGlmZmVyZW5jZSBoaWdobGlnaHQgYXQgdGhlIHRvcCBvZiB0aGUgYnJvd3NlciB3aXRob3V0IGFueSBsZWFkaW5nCiAgICAgICBjb250ZXh0KS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICpjaGFyc2V0KiBrZXl3b3JkLW9ubHkgYXJndW1lbnQgd2FzIGFkZGVkLiAgVGhlIGRlZmF1bHQgY2hhcnNldCBvZgorICAgICAgICAgSFRNTCBkb2N1bWVudCBjaGFuZ2VkIGZyb20gYGAnSVNPLTg4NTktMSdgYCB0byBgYCd1dGYtOCdgYC4KKwogICAgLi4gbWV0aG9kOjogbWFrZV90YWJsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjPScnLCB0b2Rlc2M9JycsIGNvbnRleHQ9RmFsc2UsIG51bWxpbmVzPTUpCiAKICAgICAgIENvbXBhcmVzICpmcm9tbGluZXMqIGFuZCAqdG9saW5lcyogKGxpc3RzIG9mIHN0cmluZ3MpIGFuZCByZXR1cm5zIGEgc3RyaW5nIHdoaWNoCkBAIC0yMDgsNyArMjE3LDcgQEAKICAgIENvbXBhcmUgKmEqIGFuZCAqYiogKGxpc3RzIG9mIHN0cmluZ3MpOyByZXR1cm4gYSA6Y2xhc3M6YERpZmZlcmBcIC1zdHlsZQogICAgZGVsdGEgKGEgOnRlcm06YGdlbmVyYXRvcmAgZ2VuZXJhdGluZyB0aGUgZGVsdGEgbGluZXMpLgogCi0gICBPcHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlcnMgKmxpbmVqdW5rKiBhbmQgKmNoYXJqdW5rKiBhcmUgZm9yIGZpbHRlciBmdW5jdGlvbnMKKyAgIE9wdGlvbmFsIGtleXdvcmQgcGFyYW1ldGVycyAqbGluZWp1bmsqIGFuZCAqY2hhcmp1bmsqIGFyZSBmaWx0ZXJpbmcgZnVuY3Rpb25zCiAgICAob3IgYGBOb25lYGApOgogCiAgICAqbGluZWp1bmsqOiBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQsIGFuZCByZXR1cm5zCkBAIC0yMjIsNyArMjMxLDcgQEAKICAgICpjaGFyanVuayo6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgY2hhcmFjdGVyIChhIHN0cmluZyBvZiBsZW5ndGggMSksIGFuZAogICAgcmV0dXJucyBpZiB0aGUgY2hhcmFjdGVyIGlzIGp1bmssIG9yIGZhbHNlIGlmIG5vdC4gVGhlIGRlZmF1bHQgaXMgbW9kdWxlLWxldmVsCiAgICBmdW5jdGlvbiA6ZnVuYzpgSVNfQ0hBUkFDVEVSX0pVTktgLCB3aGljaCBmaWx0ZXJzIG91dCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEKLSAgIGJsYW5rIG9yIHRhYjsgbm90ZTogYmFkIGlkZWEgdG8gaW5jbHVkZSBuZXdsaW5lIGluIHRoaXMhKS4KKyAgIGJsYW5rIG9yIHRhYjsgaXQncyBhIGJhZCBpZGVhIHRvIGluY2x1ZGUgbmV3bGluZSBpbiB0aGlzISkuCiAKICAgIDpmaWxlOmBUb29scy9zY3JpcHRzL25kaWZmLnB5YCBpcyBhIGNvbW1hbmQtbGluZSBmcm9udC1lbmQgdG8gdGhpcyBmdW5jdGlvbi4KIApAQCAtMzA2LDYgKzMxNSwyMSBAQAogCiAgICBTZWUgOnJlZjpgZGlmZmxpYi1pbnRlcmZhY2VgIGZvciBhIG1vcmUgZGV0YWlsZWQgZXhhbXBsZS4KIAorLi4gZnVuY3Rpb246OiBkaWZmX2J5dGVzKGRmdW5jLCBhLCBiLCBmcm9tZmlsZT1iJycsIHRvZmlsZT1iJycsIGZyb21maWxlZGF0ZT1iJycsIHRvZmlsZWRhdGU9YicnLCBuPTMsIGxpbmV0ZXJtPWInXFxuJykKKworICAgQ29tcGFyZSAqYSogYW5kICpiKiAobGlzdHMgb2YgYnl0ZXMgb2JqZWN0cykgdXNpbmcgKmRmdW5jKjsgeWllbGQgYQorICAgc2VxdWVuY2Ugb2YgZGVsdGEgbGluZXMgKGFsc28gYnl0ZXMpIGluIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkgKmRmdW5jKi4KKyAgICpkZnVuYyogbXVzdCBiZSBhIGNhbGxhYmxlLCB0eXBpY2FsbHkgZWl0aGVyIDpmdW5jOmB1bmlmaWVkX2RpZmZgIG9yCisgICA6ZnVuYzpgY29udGV4dF9kaWZmYC4KKworICAgQWxsb3dzIHlvdSB0byBjb21wYXJlIGRhdGEgd2l0aCB1bmtub3duIG9yIGluY29uc2lzdGVudCBlbmNvZGluZy4gQWxsCisgICBpbnB1dHMgZXhjZXB0ICpuKiBtdXN0IGJlIGJ5dGVzIG9iamVjdHMsIG5vdCBzdHIuIFdvcmtzIGJ5IGxvc3NsZXNzbHkKKyAgIGNvbnZlcnRpbmcgYWxsIGlucHV0cyAoZXhjZXB0ICpuKikgdG8gc3RyLCBhbmQgY2FsbGluZyBgYGRmdW5jKGEsIGIsCisgICBmcm9tZmlsZSwgdG9maWxlLCBmcm9tZmlsZWRhdGUsIHRvZmlsZWRhdGUsIG4sIGxpbmV0ZXJtKWBgLiBUaGUgb3V0cHV0IG9mCisgICAqZGZ1bmMqIGlzIHRoZW4gY29udmVydGVkIGJhY2sgdG8gYnl0ZXMsIHNvIHRoZSBkZWx0YSBsaW5lcyB0aGF0IHlvdQorICAgcmVjZWl2ZSBoYXZlIHRoZSBzYW1lIHVua25vd24vaW5jb25zaXN0ZW50IGVuY29kaW5ncyBhcyAqYSogYW5kICpiKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGZ1bmN0aW9uOjogSVNfTElORV9KVU5LKGxpbmUpCiAKQEAgLTYyMiw2ICs2NDYsMTIgQEAKICAgIGxlbmd0aCAxKSwgYW5kIHJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIGp1bmsuIFRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgLAogICAgbWVhbmluZyB0aGF0IG5vIGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIGp1bmsuCiAKKyAgIFRoZXNlIGp1bmstZmlsdGVyaW5nIGZ1bmN0aW9ucyBzcGVlZCB1cCBtYXRjaGluZyB0byBmaW5kCisgICBkaWZmZXJlbmNlcyBhbmQgZG8gbm90IGNhdXNlIGFueSBkaWZmZXJpbmcgbGluZXMgb3IgY2hhcmFjdGVycyB0bworICAgYmUgaWdub3JlZC4gIFJlYWQgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgOm1ldGg6YH5TZXF1ZW5jZU1hdGNoZXIuZmluZF9sb25nZXN0X21hdGNoYCBtZXRob2QncyAqaXNqdW5rKgorICAgcGFyYW1ldGVyIGZvciBhbiBleHBsYW5hdGlvbi4KKwogICAgOmNsYXNzOmBEaWZmZXJgIG9iamVjdHMgYXJlIHVzZWQgKGRlbHRhcyBnZW5lcmF0ZWQpIHZpYSBhIHNpbmdsZSBtZXRob2Q6CiAKIApAQCAtNzEzLDY1ICs3NDMsNCBAQAogSXQgaXMgYWxzbyBjb250YWluZWQgaW4gdGhlIFB5dGhvbiBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhcwogOmZpbGU6YFRvb2xzL3NjcmlwdHMvZGlmZi5weWAuCiAKLS4uIHRlc3Rjb2RlOjoKLQotICAgIiIiIENvbW1hbmQgbGluZSBpbnRlcmZhY2UgdG8gZGlmZmxpYi5weSBwcm92aWRpbmcgZGlmZnMgaW4gZm91ciBmb3JtYXRzOgotCi0gICAqIG5kaWZmOiAgICBsaXN0cyBldmVyeSBsaW5lIGFuZCBoaWdobGlnaHRzIGludGVybGluZSBjaGFuZ2VzLgotICAgKiBjb250ZXh0OiAgaGlnaGxpZ2h0cyBjbHVzdGVycyBvZiBjaGFuZ2VzIGluIGEgYmVmb3JlL2FmdGVyIGZvcm1hdC4KLSAgICogdW5pZmllZDogIGhpZ2hsaWdodHMgY2x1c3RlcnMgb2YgY2hhbmdlcyBpbiBhbiBpbmxpbmUgZm9ybWF0LgotICAgKiBodG1sOiAgICAgZ2VuZXJhdGVzIHNpZGUgYnkgc2lkZSBjb21wYXJpc29uIHdpdGggY2hhbmdlIGhpZ2hsaWdodHMuCi0KLSAgICIiIgotCi0gICBpbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgb3B0cGFyc2UKLQotICAgZGVmIG1haW4oKToKLSAgICAgICAgIyBDb25maWd1cmUgdGhlIG9wdGlvbiBwYXJzZXIKLSAgICAgICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIGZyb21maWxlIHRvZmlsZSIKLSAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UpCi0gICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgY29udGV4dCBmb3JtYXQgZGlmZiAoZGVmYXVsdCknKQotICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIHVuaWZpZWQgZm9ybWF0IGRpZmYnKQotICAgICAgIGhscCA9ICdQcm9kdWNlIEhUTUwgc2lkZSBieSBzaWRlIGRpZmYgKGNhbiB1c2UgLWMgYW5kIC1sIGluIGNvbmp1bmN0aW9uKScKLSAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLW0iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPWhscCkKLSAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSBuZGlmZiBmb3JtYXQgZGlmZicpCi0gICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1sIiwgIi0tbGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2V0IG51bWJlciBvZiBjb250ZXh0IGxpbmVzIChkZWZhdWx0IDMpJykKLSAgICAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICAgICBpZiBsZW4oYXJncykgPT0gMDoKLSAgICAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgIGlmIGxlbihhcmdzKSAhPSAyOgotICAgICAgICAgICBwYXJzZXIuZXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBib3RoIGEgZnJvbWZpbGUgYW5kIHRvZmlsZSIpCi0KLSAgICAgICBuID0gb3B0aW9ucy5saW5lcwotICAgICAgIGZyb21maWxlLCB0b2ZpbGUgPSBhcmdzICMgYXMgc3BlY2lmaWVkIGluIHRoZSB1c2FnZSBzdHJpbmcKLQotICAgICAgICMgd2UncmUgcGFzc2luZyB0aGVzZSBhcyBhcmd1bWVudHMgdG8gdGhlIGRpZmYgZnVuY3Rpb24KLSAgICAgICBmcm9tZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdChmcm9tZmlsZSkuc3RfbXRpbWUpCi0gICAgICAgdG9kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KHRvZmlsZSkuc3RfbXRpbWUpCi0gICAgICAgd2l0aCBvcGVuKGZyb21maWxlKSBhcyBmcm9tZiwgb3Blbih0b2ZpbGUpIGFzIHRvZjoKLSAgICAgICAgICAgZnJvbWxpbmVzLCB0b2xpbmVzID0gbGlzdChmcm9tZiksIGxpc3QodG9mKQotCi0gICAgICAgaWYgb3B0aW9ucy51OgotICAgICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZmlsZSwgdG9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWRhdGUsIHRvZGF0ZSwgbj1uKQotICAgICAgIGVsaWYgb3B0aW9ucy5uOgotICAgICAgICAgICBkaWZmID0gZGlmZmxpYi5uZGlmZihmcm9tbGluZXMsIHRvbGluZXMpCi0gICAgICAgZWxpZiBvcHRpb25zLm06Ci0gICAgICAgICAgIGRpZmYgPSBkaWZmbGliLkh0bWxEaWZmKCkubWFrZV9maWxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZmlsZSwgY29udGV4dD1vcHRpb25zLmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWxpbmVzPW4pCi0gICAgICAgZWxzZToKLSAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIuY29udGV4dF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21kYXRlLCB0b2RhdGUsIG49bikKLQotICAgICAgICMgd2UncmUgdXNpbmcgd3JpdGVsaW5lcyBiZWNhdXNlIGRpZmYgaXMgYSBnZW5lcmF0b3IKLSAgICAgICBzeXMuc3Rkb3V0LndyaXRlbGluZXMoZGlmZikKLQotICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBtYWluKCkKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vLi4vVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCAyNzNmYjIwLi4xYmNiM2E0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTQ4LDggKzQ4LDkgQEAKIAogLi4gY2xhc3M6OiBCeXRlY29kZSh4LCAqLCBmaXJzdF9saW5lPU5vbmUsIGN1cnJlbnRfb2Zmc2V0PU5vbmUpCiAKLSAgIEFuYWx5c2UgdGhlIGJ5dGVjb2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBmdW5jdGlvbiwgbWV0aG9kLCBzdHJpbmcgb2Ygc291cmNlCi0gICBjb2RlLCBvciBhIGNvZGUgb2JqZWN0IChhcyByZXR1cm5lZCBieSA6ZnVuYzpgY29tcGlsZWApLgorCisgICBBbmFseXNlIHRoZSBieXRlY29kZSBjb3JyZXNwb25kaW5nIHRvIGEgZnVuY3Rpb24sIGdlbmVyYXRvciwgbWV0aG9kLCBzdHJpbmcKKyAgIG9mIHNvdXJjZSBjb2RlLCBvciBhIGNvZGUgb2JqZWN0IChhcyByZXR1cm5lZCBieSA6ZnVuYzpgY29tcGlsZWApLgogCiAgICBUaGlzIGlzIGEgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgbWFueSBvZiB0aGUgZnVuY3Rpb25zIGxpc3RlZCBiZWxvdywgbW9zdAogICAgbm90YWJseSA6ZnVuYzpgZ2V0X2luc3RydWN0aW9uc2AsIGFzIGl0ZXJhdGluZyBvdmVyIGEgOmNsYXNzOmBCeXRlY29kZWAKQEAgLTEwOSw3ICsxMTAsNyBAQAogLi4gZnVuY3Rpb246OiBjb2RlX2luZm8oeCkKIAogICAgUmV0dXJuIGEgZm9ybWF0dGVkIG11bHRpLWxpbmUgc3RyaW5nIHdpdGggZGV0YWlsZWQgY29kZSBvYmplY3QgaW5mb3JtYXRpb24KLSAgIGZvciB0aGUgc3VwcGxpZWQgZnVuY3Rpb24sIG1ldGhvZCwgc291cmNlIGNvZGUgc3RyaW5nIG9yIGNvZGUgb2JqZWN0LgorICAgZm9yIHRoZSBzdXBwbGllZCBmdW5jdGlvbiwgZ2VuZXJhdG9yLCBtZXRob2QsIHNvdXJjZSBjb2RlIHN0cmluZyBvciBjb2RlIG9iamVjdC4KIAogICAgTm90ZSB0aGF0IHRoZSBleGFjdCBjb250ZW50cyBvZiBjb2RlIGluZm8gc3RyaW5ncyBhcmUgaGlnaGx5IGltcGxlbWVudGF0aW9uCiAgICBkZXBlbmRlbnQgYW5kIHRoZXkgbWF5IGNoYW5nZSBhcmJpdHJhcmlseSBhY3Jvc3MgUHl0aG9uIFZNcyBvciBQeXRob24KQEAgLTEzNiwxMSArMTM3LDExIEBACiAuLiBmdW5jdGlvbjo6IGRpcyh4PU5vbmUsICosIGZpbGU9Tm9uZSkKIAogICAgRGlzYXNzZW1ibGUgdGhlICp4KiBvYmplY3QuICAqeCogY2FuIGRlbm90ZSBlaXRoZXIgYSBtb2R1bGUsIGEgY2xhc3MsIGEKLSAgIG1ldGhvZCwgYSBmdW5jdGlvbiwgYSBjb2RlIG9iamVjdCwgYSBzdHJpbmcgb2Ygc291cmNlIGNvZGUgb3IgYSBieXRlIHNlcXVlbmNlCi0gICBvZiByYXcgYnl0ZWNvZGUuICBGb3IgYSBtb2R1bGUsIGl0IGRpc2Fzc2VtYmxlcyBhbGwgZnVuY3Rpb25zLiAgRm9yIGEgY2xhc3MsCi0gICBpdCBkaXNhc3NlbWJsZXMgYWxsIG1ldGhvZHMuICBGb3IgYSBjb2RlIG9iamVjdCBvciBzZXF1ZW5jZSBvZiByYXcgYnl0ZWNvZGUsCi0gICBpdCBwcmludHMgb25lIGxpbmUgcGVyIGJ5dGVjb2RlIGluc3RydWN0aW9uLiAgU3RyaW5ncyBhcmUgZmlyc3QgY29tcGlsZWQgdG8KLSAgIGNvZGUgb2JqZWN0cyB3aXRoIHRoZSA6ZnVuYzpgY29tcGlsZWAgYnVpbHQtaW4gZnVuY3Rpb24gYmVmb3JlIGJlaW5nCisgICBtZXRob2QsIGEgZnVuY3Rpb24sIGEgZ2VuZXJhdG9yLCBhIGNvZGUgb2JqZWN0LCBhIHN0cmluZyBvZiBzb3VyY2UgY29kZSBvcgorICAgYSBieXRlIHNlcXVlbmNlIG9mIHJhdyBieXRlY29kZS4gIEZvciBhIG1vZHVsZSwgaXQgZGlzYXNzZW1ibGVzIGFsbCBmdW5jdGlvbnMuCisgICBGb3IgYSBjbGFzcywgaXQgZGlzYXNzZW1ibGVzIGFsbCBtZXRob2RzLiAgRm9yIGEgY29kZSBvYmplY3Qgb3Igc2VxdWVuY2Ugb2YKKyAgIHJhdyBieXRlY29kZSwgaXQgcHJpbnRzIG9uZSBsaW5lIHBlciBieXRlY29kZSBpbnN0cnVjdGlvbi4gIFN0cmluZ3MgYXJlIGZpcnN0CisgICBjb21waWxlZCB0byBjb2RlIG9iamVjdHMgd2l0aCB0aGUgOmZ1bmM6YGNvbXBpbGVgIGJ1aWx0LWluIGZ1bmN0aW9uIGJlZm9yZSBiZWluZwogICAgZGlzYXNzZW1ibGVkLiAgSWYgbm8gb2JqZWN0IGlzIHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIGRpc2Fzc2VtYmxlcyB0aGUgbGFzdAogICAgdHJhY2ViYWNrLgogCkBAIC0zNDUsNiArMzQ2LDE0IEBACiAgICBJbXBsZW1lbnRzIGBgVE9TID0gaXRlcihUT1MpYGAuCiAKIAorLi4gb3Bjb2RlOjogR0VUX1lJRUxEX0ZST01fSVRFUgorCisgICBJZiBgYFRPU2BgIGlzIGEgOnRlcm06YGdlbmVyYXRvciBpdGVyYXRvcmAgb3IgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0CisgICBpdCBpcyBsZWZ0IGFzIGlzLiAgT3RoZXJ3aXNlLCBpbXBsZW1lbnRzIGBgVE9TID0gaXRlcihUT1MpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKICoqQmluYXJ5IG9wZXJhdGlvbnMqKgogCiBCaW5hcnkgb3BlcmF0aW9ucyByZW1vdmUgdGhlIHRvcCBvZiB0aGUgc3RhY2sgKFRPUykgYW5kIHRoZSBzZWNvbmQgdG9wLW1vc3QKQEAgLTM2MSw2ICszNzAsMTMgQEAKICAgIEltcGxlbWVudHMgYGBUT1MgPSBUT1MxICogVE9TYGAuCiAKIAorLi4gb3Bjb2RlOjogQklOQVJZX01BVFJJWF9NVUxUSVBMWQorCisgICBJbXBsZW1lbnRzIGBgVE9TID0gVE9TMSBAIFRPU2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBvcGNvZGU6OiBCSU5BUllfRkxPT1JfRElWSURFCiAKICAgIEltcGxlbWVudHMgYGBUT1MgPSBUT1MxIC8vIFRPU2BgLgpAQCAtNDMzLDYgKzQ0OSwxMyBAQAogICAgSW1wbGVtZW50cyBpbi1wbGFjZSBgYFRPUyA9IFRPUzEgKiBUT1NgYC4KIAogCisuLiBvcGNvZGU6OiBJTlBMQUNFX01BVFJJWF9NVUxUSVBMWQorCisgICBJbXBsZW1lbnRzIGluLXBsYWNlIGBgVE9TID0gVE9TMSBAIFRPU2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBvcGNvZGU6OiBJTlBMQUNFX0ZMT09SX0RJVklERQogCiAgICBJbXBsZW1lbnRzIGluLXBsYWNlIGBgVE9TID0gVE9TMSAvLyBUT1NgYC4KQEAgLTQ5Myw2ICs1MTYsNDAgQEAKICAgIEltcGxlbWVudHMgYGBkZWwgVE9TMVtUT1NdYGAuCiAKIAorKipDb3JvdXRpbmUgb3Bjb2RlcyoqCisKKy4uIG9wY29kZTo6IEdFVF9BV0FJVEFCTEUKKworICAgSW1wbGVtZW50cyBgYFRPUyA9IGdldF9hd2FpdGFibGUoVE9TKWBgLCB3aGVyZSBgYGdldF9hd2FpdGFibGUobylgYAorICAgcmV0dXJucyBgYG9gYCBpZiBgYG9gYCBpcyBhIGNvcm91dGluZSBvYmplY3Qgb3IgYSBnZW5lcmF0b3Igb2JqZWN0IHdpdGgKKyAgIHRoZSBDT19JVEVSQUJMRV9DT1JPVVRJTkUgZmxhZywgb3IgcmVzb2x2ZXMKKyAgIGBgby5fX2F3YWl0X19gYC4KKworCisuLiBvcGNvZGU6OiBHRVRfQUlURVIKKworICAgSW1wbGVtZW50cyBgYFRPUyA9IGdldF9hd2FpdGFibGUoVE9TLl9fYWl0ZXJfXygpKWBgLiAgU2VlIGBgR0VUX0FXQUlUQUJMRWBgCisgICBmb3IgZGV0YWlscyBhYm91dCBgYGdldF9hd2FpdGFibGVgYAorCisKKy4uIG9wY29kZTo6IEdFVF9BTkVYVAorCisgICBJbXBsZW1lbnRzIGBgUFVTSChnZXRfYXdhaXRhYmxlKFRPUy5fX2FuZXh0X18oKSkpYGAuICBTZWUgYGBHRVRfQVdBSVRBQkxFYGAKKyAgIGZvciBkZXRhaWxzIGFib3V0IGBgZ2V0X2F3YWl0YWJsZWBgCisKKworLi4gb3Bjb2RlOjogQkVGT1JFX0FTWU5DX1dJVEgKKworICAgUmVzb2x2ZXMgYGBfX2FlbnRlcl9fYGAgYW5kIGBgX19hZXhpdF9fYGAgZnJvbSB0aGUgb2JqZWN0IG9uIHRvcCBvZiB0aGUKKyAgIHN0YWNrLiAgUHVzaGVzIGBgX19hZXhpdF9fYGAgYW5kIHJlc3VsdCBvZiBgYF9fYWVudGVyX18oKWBgIHRvIHRoZSBzdGFjay4KKworCisuLiBvcGNvZGU6OiBTRVRVUF9BU1lOQ19XSVRICisKKyAgIENyZWF0ZXMgYSBuZXcgZnJhbWUgb2JqZWN0LgorCisKKwogKipNaXNjZWxsYW5lb3VzIG9wY29kZXMqKgogCiAuLiBvcGNvZGU6OiBQUklOVF9FWFBSCkBAIC01OTcsNyArNjU0LDcgQEAKICAgIDpvcGNvZGU6YFVOUEFDS19TRVFVRU5DRWApLgogCiAKLS4uIG9wY29kZTo6IFdJVEhfQ0xFQU5VUAorLi4gb3Bjb2RlOjogV0lUSF9DTEVBTlVQX1NUQVJUCiAKICAgIENsZWFucyB1cCB0aGUgc3RhY2sgd2hlbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYmxvY2sgZXhpdHMuICBUT1MgaXMgdGhlCiAgICBjb250ZXh0IG1hbmFnZXIncyA6bWV0aDpgX19leGl0X19gIGJvdW5kIG1ldGhvZC4gQmVsb3cgVE9TIGFyZSAxLS0zIHZhbHVlcwpAQCAtNjA5LDcgKzY2NiwxMyBAQAogICAgKiAoU0VDT05ELCBUSElSRCwgRk9VUlRIKSA9IGV4Y19pbmZvKCkKIAogICAgSW4gdGhlIGxhc3QgY2FzZSwgYGBUT1MoU0VDT05ELCBUSElSRCwgRk9VUlRIKWBgIGlzIGNhbGxlZCwgb3RoZXJ3aXNlCi0gICBgYFRPUyhOb25lLCBOb25lLCBOb25lKWBgLiAgSW4gYWRkaXRpb24sIFRPUyBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrLgorICAgYGBUT1MoTm9uZSwgTm9uZSwgTm9uZSlgYC4gIFB1c2hlcyBTRUNPTkQgYW5kIHJlc3VsdCBvZiB0aGUgY2FsbAorICAgdG8gdGhlIHN0YWNrLgorCisKKy4uIG9wY29kZTo6IFdJVEhfQ0xFQU5VUF9GSU5JU0gKKworICAgUG9wcyBleGNlcHRpb24gdHlwZSBhbmQgcmVzdWx0IG9mICdleGl0JyBmdW5jdGlvbiBjYWxsIGZyb20gdGhlIHN0YWNrLgogCiAgICBJZiB0aGUgc3RhY2sgcmVwcmVzZW50cyBhbiBleGNlcHRpb24sICphbmQqIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybnMgYQogICAgJ3RydWUnIHZhbHVlLCB0aGlzIGluZm9ybWF0aW9uIGlzICJ6YXBwZWQiIGFuZCByZXBsYWNlZCB3aXRoIGEgc2luZ2xlCkBAIC03OTUsMTAgKzg1OCw2IEBACiAgICBQdXNoZXMgYSB0cnkgYmxvY2sgZnJvbSBhIHRyeS1leGNlcHQgY2xhdXNlIG9udG8gdGhlIGJsb2NrIHN0YWNrLiAqZGVsdGEqCiAgICBwb2ludHMgdG8gdGhlIGZpbmFsbHkgYmxvY2suCiAKLS4uIG9wY29kZTo6IFNUT1JFX01BUAotCi0gICBTdG9yZSBhIGtleSBhbmQgdmFsdWUgcGFpciBpbiBhIGRpY3Rpb25hcnkuICBQb3BzIHRoZSBrZXkgYW5kIHZhbHVlIHdoaWxlCi0gICBsZWF2aW5nIHRoZSBkaWN0aW9uYXJ5IG9uIHRoZSBzdGFjay4KIAogLi4gb3Bjb2RlOjogTE9BRF9GQVNUICh2YXJfbnVtKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0IGIvRG9jL2xpYnJhcnkvZGlzdHJpYnV0aW9uLnJzdAppbmRleCBjNDk1NGQxLi4zZTZlODRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QKQEAgLTEyLDMgKzEyLDQgQEAKICAgIGRpc3R1dGlscy5yc3QKICAgIGVuc3VyZXBpcC5yc3QKICAgIHZlbnYucnN0CisgICB6aXBhcHAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CmluZGV4IGVhNmUxYjUuLjlmN2QxMmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CkBAIC0xMDUzLDE1ICsxMDUzLDkgQEAKIAogICAgVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBzYW1lIHNlYXJjaCB0ZWNobmlxdWUgYXMgOmZ1bmM6YHRlc3Rtb2RgLgogCi0gICAuLiBub3RlOjoKLSAgICAgIFVubGlrZSA6ZnVuYzpgdGVzdG1vZGAgYW5kIDpjbGFzczpgRG9jVGVzdEZpbmRlcmAsIHRoaXMgZnVuY3Rpb24gcmFpc2VzCi0gICAgICBhIDpleGM6YFZhbHVlRXJyb3JgIGlmICptb2R1bGUqIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MuICBZb3UgY2FuIHByZXZlbnQKLSAgICAgIHRoaXMgZXJyb3IgYnkgcGFzc2luZyBhIDpjbGFzczpgRG9jVGVzdEZpbmRlcmAgaW5zdGFuY2UgYXMgdGhlCi0gICAgICAqdGVzdF9maW5kZXIqIGFyZ3VtZW50IHdpdGggaXRzICpleGNsdWRlX2VtcHR5KiBrZXl3b3JkIGFyZ3VtZW50IHNldAotICAgICAgdG8gYGBGYWxzZWBgOjoKLQotICAgICAgICAgPj4+IGZpbmRlciA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcihleGNsdWRlX2VtcHR5PUZhbHNlKQotICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUodGVzdF9maW5kZXI9ZmluZGVyKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDpmdW5jOmBEb2NUZXN0U3VpdGVgIHJldHVybnMgYW4gZW1wdHkgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIGlmICptb2R1bGUqCisgICAgICBjb250YWlucyBubyBkb2NzdHJpbmdzIGluc3RlYWQgb2YgcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogCiBVbmRlciB0aGUgY292ZXJzLCA6ZnVuYzpgRG9jVGVzdFN1aXRlYCBjcmVhdGVzIGEgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIG91dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAppbmRleCBhZWVhOTQyLi5iOTFmMjZkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdApAQCAtNTc4LDYgKzU3OCwxNSBAQAogICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCiAKIAorICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKQorCisgICAgICBSZXR1cm4gdGhlIGxvd2VyY2FzZWQgdmFsdWUgKHdpdGhvdXQgcGFyYW1ldGVycykgb2YgdGhlIG1lc3NhZ2UncworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciBpZiBpdCBoYXMgb25lLCBvciBgYE5vbmVgYC4gIFRoZQorICAgICAgcG9zc2libGUgdmFsdWVzIGZvciB0aGlzIG1ldGhvZCBhcmUgKmlubGluZSosICphdHRhY2htZW50KiBvciBgYE5vbmVgYAorICAgICAgaWYgdGhlIG1lc3NhZ2UgZm9sbG93cyA6cmZjOmAyMTgzYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKICAgIC4uIG1ldGhvZDo6IHdhbGsoKQogCiAgICAgICBUaGUgOm1ldGg6YHdhbGtgIG1ldGhvZCBpcyBhbiBhbGwtcHVycG9zZSBnZW5lcmF0b3Igd2hpY2ggY2FuIGJlIHVzZWQgdG8KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKaW5kZXggMWQ3MDIyNS4uNjdkMGE2NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKQEAgLTE5NSw3ICsxOTUsOCBAQAogICAgc2V0IG9mIHRoZSB0ZXh0IGFuZCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gdGhlCiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCBjb25zdHJ1Y3RvcjsgaXQgZGVmYXVsdHMKICAgIHRvIGBgdXMtYXNjaWlgYCBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgYGBhc2NpaWBgIGNvZGUgcG9pbnRzLCBhbmQKLSAgIGBgdXRmLThgYCBvdGhlcndpc2UuCisgICBgYHV0Zi04YGAgb3RoZXJ3aXNlLiAgVGhlICpfY2hhcnNldCogcGFyYW1ldGVyIGFjY2VwdHMgZWl0aGVyIGEgc3RyaW5nIG9yIGEKKyAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UuCiAKICAgIFVubGVzcyB0aGUgKl9jaGFyc2V0KiBhcmd1bWVudCBpcyBleHBsaWNpdGx5IHNldCB0byBgYE5vbmVgYCwgdGhlCiAgICBNSU1FVGV4dCBvYmplY3QgY3JlYXRlZCB3aWxsIGhhdmUgYm90aCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgpAQCAtMjA2LDMgKzIwNyw2IEBACiAgICBgYENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgYCBoZWFkZXIsIGFmdGVyIHdoaWNoIGEgYGBzZXRfcGF5bG9hZGBgIGNhbGwKICAgIHdpbGwgYXV0b21hdGljYWxseSBlbmNvZGUgdGhlIG5ldyBwYXlsb2FkIChhbmQgYWRkIGEgbmV3CiAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpfY2hhcnNldCogYWxzbyBhY2NlcHRzIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2VzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKaW5kZXggZDRlM2ZjMS4uMDQ1YjExOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC0xODcsNiArMTg3LDE4IEBACiAgICAgICA6Y29uc3Q6YEZhbHNlYCAodGhlIGRlZmF1bHQpLCBkZWZlY3RzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgICAgOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAgbWV0aG9kLgogCisKKworICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21cXworCisgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBsaW5lcyBzdGFydGluZyB3aXRoICoiRnJvbSAiKiBpbiB0aGUgYm9keSBhcmUKKyAgICAgIGVzY2FwZWQgYnkgcHV0dGluZyBhIGBgPmBgIGluIGZyb250IG9mIHRoZW0uIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgd2hlbgorICAgICAgdGhlIG1lc3NhZ2UgaXMgYmVpbmcgc2VyaWFsaXplZCBieSBhIGdlbmVyYXRvci4KKyAgICAgIERlZmF1bHQ6IDpjb25zdDpgRmFsc2VgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgICAgIFRoZSAqbWFuZ2xlX2Zyb21fKiBwYXJhbWV0ZXIuCisKICAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZwogICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CiAKQEAgLTMxOSw2ICszMzEsMTMgQEAKICAgIDpjb25zdDpgY29tcGF0MzJgLCB0aGF0IGlzIHVzZWQgYXMgdGhlIGRlZmF1bHQgcG9saWN5LiAgVGh1cyB0aGUgZGVmYXVsdAogICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaXMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIuCiAKKyAgIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBoYXZlIHZhbHVlcyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgIDpjbGFzczpgUG9saWN5YCBkZWZhdWx0OgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbV8KKworICAgICAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAuCisKICAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKICAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgogCkBAIC0zNTYsNiArMzc1LDE0IEBACiAgICAgICBsaW5lIGJyZWFrcyBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCiAKIAorQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAgaXMgcHJvdmlkZWQgYXMgYSBtb2R1bGUgY29uc3RhbnQ6CisKKy4uIGRhdGE6OiBjb21wYXQzMgorCisgICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgorCisKIC4uIG5vdGU6OgogCiAgICBUaGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBkZXNjcmliZXMgbmV3IHBvbGljaWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQpAQCAtMzc4LDYgKzQwNSwxNCBAQAogICAgSW4gYWRkaXRpb24gdG8gdGhlIHNldHRhYmxlIGF0dHJpYnV0ZXMgbGlzdGVkIGFib3ZlIHRoYXQgYXBwbHkgdG8gYWxsCiAgICBwb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKIAorICAgLi4gYXR0cmlidXRlOjogdXRmOAorCisgICAgICBJZiBgYEZhbHNlYGAsIGZvbGxvdyA6cmZjOmA1MzIyYCwgc3VwcG9ydGluZyBub24tQVNDSUkgY2hhcmFjdGVycyBpbgorICAgICAgaGVhZGVycyBieSBlbmNvZGluZyB0aGVtIGFzICJlbmNvZGVkIHdvcmRzIi4gIElmIGBgVHJ1ZWBgLCBmb2xsb3cKKyAgICAgIDpyZmM6YDY1MzJgIGFuZCB1c2UgYGB1dGYtOGBgIGVuY29kaW5nIGZvciBoZWFkZXJzLiAgTWVzc2FnZXMKKyAgICAgIGZvcm1hdHRlZCBpbiB0aGlzIHdheSBtYXkgYmUgcGFzc2VkIHRvIFNNVFAgc2VydmVycyB0aGF0IHN1cHBvcnQKKyAgICAgIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkuCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJlZm9sZF9zb3VyY2UKIAogICAgICAgSWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IG9yaWdpbmF0ZWQgZnJvbSBhCkBAIC00OTksNiArNTM0LDE0IEBACiAgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQwogICAgY29tcGxpYW50LgogCisuLiBkYXRhOjogU01UUFVURjgKKworICAgVGhlIHNhbWUgYXMgYGBTTVRQYGAgZXhjZXB0IHRoYXQgOmF0dHI6YH5FbWFpbFBvbGljeS51dGY4YCBpcyBgYFRydWVgYC4KKyAgIFVzZWZ1bCBmb3Igc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gYSBtZXNzYWdlIHN0b3JlIHdpdGhvdXQgdXNpbmcgZW5jb2RlZAorICAgd29yZHMgaW4gdGhlIGhlYWRlcnMuICBTaG91bGQgb25seSBiZSB1c2VkIGZvciBTTVRQIHRyYXNtaXNzaW9uIGlmIHRoZQorICAgc2VuZGVyIG9yIHJlY2lwaWVudCBhZGRyZXNzZXMgaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycyAodGhlCisgICA6bWV0aDpgc210cGxpYi5TTVRQLnNlbmRfbWVzc2FnZWAgbWV0aG9kIGhhbmRsZXMgdGhpcyBhdXRvbWF0aWNhbGx5KS4KKwogLi4gZGF0YTo6IEhUVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIGhlYWRlcnMgd2l0aCBmb3IgdXNlIGluIEhUVFAgdHJhZmZpYy4gIExpa2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VudW0ucnN0IGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKaW5kZXggY2YwOTU1OS4uOWI0ZjliNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW51bS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKQEAgLTMxNCwxMSArMzE0LDExIEBACiAgICAgPj4+IHN0cihNb29kLmZ1bmt5KQogICAgICdteSBjdXN0b20gc3RyISAxJwogCi1UaGUgcnVsZXMgZm9yIHdoYXQgaXMgYWxsb3dlZCBhcmUgYXMgZm9sbG93czogX3N1bmRlcl8gbmFtZXMgKHN0YXJ0aW5nIGFuZAotZW5kaW5nIHdpdGggYSBzaW5nbGUgdW5kZXJzY29yZSkgYXJlIHJlc2VydmVkIGJ5IGVudW0gYW5kIGNhbm5vdCBiZSB1c2VkOwotYWxsIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCB3aXRoaW4gYW4gZW51bWVyYXRpb24gd2lsbCBiZWNvbWUgbWVtYmVycyBvZiB0aGlzCi1lbnVtZXJhdGlvbiwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mICpfX2R1bmRlcl9fKiBuYW1lcyBhbmQgZGVzY3JpcHRvcnMgKG1ldGhvZHMKLWFyZSBhbHNvIGRlc2NyaXB0b3JzKS4KK1RoZSBydWxlcyBmb3Igd2hhdCBpcyBhbGxvd2VkIGFyZSBhcyBmb2xsb3dzOiBuYW1lcyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCBhCit3aXRoIGEgc2luZ2xlIHVuZGVyc2NvcmUgYXJlIHJlc2VydmVkIGJ5IGVudW0gYW5kIGNhbm5vdCBiZSB1c2VkOyBhbGwgb3RoZXIKK2F0dHJpYnV0ZXMgZGVmaW5lZCB3aXRoaW4gYW4gZW51bWVyYXRpb24gd2lsbCBiZWNvbWUgbWVtYmVycyBvZiB0aGlzCitlbnVtZXJhdGlvbiwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHNwZWNpYWwgbWV0aG9kcyAoOm1ldGg6YF9fc3RyX19gLAorOm1ldGg6YF9fYWRkX19gLCBldGMuKSBhbmQgZGVzY3JpcHRvcnMgKG1ldGhvZHMgYXJlIGFsc28gZGVzY3JpcHRvcnMpLgogCiBOb3RlOiAgaWYgeW91ciBlbnVtZXJhdGlvbiBkZWZpbmVzIDptZXRoOmBfX25ld19fYCBhbmQvb3IgOm1ldGg6YF9faW5pdF9fYCB0aGVuCiB3aGF0ZXZlciB2YWx1ZShzKSB3ZXJlIGdpdmVuIHRvIHRoZSBlbnVtIG1lbWJlciB3aWxsIGJlIHBhc3NlZCBpbnRvIHRob3NlCkBAIC00MDAsNyArNDAwLDggQEAKIHdoaXRlc3BhY2Utc2VwYXJhdGVkIHN0cmluZyBvZiBuYW1lcywgYSBzZXF1ZW5jZSBvZiBuYW1lcywgYSBzZXF1ZW5jZSBvZgogMi10dXBsZXMgd2l0aCBrZXkvdmFsdWUgcGFpcnMsIG9yIGEgbWFwcGluZyAoZS5nLiBkaWN0aW9uYXJ5KSBvZiBuYW1lcyB0bwogdmFsdWVzLiAgVGhlIGxhc3QgdHdvIG9wdGlvbnMgZW5hYmxlIGFzc2lnbmluZyBhcmJpdHJhcnkgdmFsdWVzIHRvCi1lbnVtZXJhdGlvbnM7IHRoZSBvdGhlcnMgYXV0by1hc3NpZ24gaW5jcmVhc2luZyBpbnRlZ2VycyBzdGFydGluZyB3aXRoIDEuICBBCitlbnVtZXJhdGlvbnM7IHRoZSBvdGhlcnMgYXV0by1hc3NpZ24gaW5jcmVhc2luZyBpbnRlZ2VycyBzdGFydGluZyB3aXRoIDEgKHVzZQordGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBzdGFydGluZyB2YWx1ZSkuICBBCiBuZXcgY2xhc3MgZGVyaXZlZCBmcm9tIDpjbGFzczpgRW51bWAgaXMgcmV0dXJuZWQuICBJbiBvdGhlciB3b3JkcywgdGhlIGFib3ZlCiBhc3NpZ25tZW50IHRvIDpjbGFzczpgQW5pbWFsYCBpcyBlcXVpdmFsZW50IHRvOjoKIApAQCAtNDM4LDEyICs0MzksMTIgQEAKIAogVGhlIGNvbXBsZXRlIHNpZ25hdHVyZSBpczo6CiAKLSAgICBFbnVtKHZhbHVlPSdOZXdFbnVtTmFtZScsIG5hbWVzPTwuLi4+LCAqLCBtb2R1bGU9Jy4uLicsIHF1YWxuYW1lPScuLi4nLCB0eXBlPTxtaXhlZC1pbiBjbGFzcz4pCisgICAgRW51bSh2YWx1ZT0nTmV3RW51bU5hbWUnLCBuYW1lcz08Li4uPiwgKiwgbW9kdWxlPScuLi4nLCBxdWFsbmFtZT0nLi4uJywgdHlwZT08bWl4ZWQtaW4gY2xhc3M+LCBzdGFydD0xKQogCiA6dmFsdWU6IFdoYXQgdGhlIG5ldyBFbnVtIGNsYXNzIHdpbGwgcmVjb3JkIGFzIGl0cyBuYW1lLgogCiA6bmFtZXM6IFRoZSBFbnVtIG1lbWJlcnMuICBUaGlzIGNhbiBiZSBhIHdoaXRlc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIHN0cmluZwotICAodmFsdWVzIHdpbGwgc3RhcnQgYXQgMSk6OgorICAodmFsdWVzIHdpbGwgc3RhcnQgYXQgMSB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCk6OgogCiAgICAgJ3JlZCBncmVlbiBibHVlJyB8ICdyZWQsZ3JlZW4sYmx1ZScgfCAncmVkLCBncmVlbiwgYmx1ZScKIApAQCAtNDY1LDYgKzQ2NiwxMSBAQAogCiA6dHlwZTogdHlwZSB0byBtaXggaW4gdG8gbmV3IEVudW0gY2xhc3MuCiAKKzpzdGFydDogbnVtYmVyIHRvIHN0YXJ0IGNvdW50aW5nIGF0IGlmIG9ubHkgbmFtZXMgYXJlIHBhc3NlZCBpbi4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSAqc3RhcnQqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKIAogRGVyaXZlZCBFbnVtZXJhdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lcnJuby5yc3QgYi9Eb2MvbGlicmFyeS9lcnJuby5yc3QKaW5kZXggZDIxNjNiNi4uMjJhNWNiYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZXJybm8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Vycm5vLnJzdApAQCAtNDEsNyArNDEsMTAgQEAKIAogLi4gZGF0YTo6IEVJTlRSCiAKLSAgIEludGVycnVwdGVkIHN5c3RlbSBjYWxsCisgICBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbC4KKworICAgLi4gc2VlYWxzbzo6CisgICAgICBUaGlzIGVycm9yIGlzIG1hcHBlZCB0byB0aGUgZXhjZXB0aW9uIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgogCiAKIC4uIGRhdGE6OiBFSU8KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKaW5kZXggMjcxYTVjOC4uMGE0MjJiMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKQEAgLTE2Miw3ICsxNjIsOCBAQAogCiAuLiBleGNlcHRpb246OiBHZW5lcmF0b3JFeGl0CiAKLSAgIFJhaXNlZCB3aGVuIGEgOnRlcm06YGdlbmVyYXRvcmBcJ3MgOm1ldGg6YGNsb3NlYCBtZXRob2QgaXMgY2FsbGVkLiAgSXQKKyAgIFJhaXNlZCB3aGVuIGEgOnRlcm06YGdlbmVyYXRvcmAgb3IgOnRlcm06YGNvcm91dGluZWAgaXMgY2xvc2VkOworICAgc2VlIDptZXRoOmBnZW5lcmF0b3IuY2xvc2VgIGFuZCA6bWV0aDpgY29yb3V0aW5lLmNsb3NlYC4gIEl0CiAgICBkaXJlY3RseSBpbmhlcml0cyBmcm9tIDpleGM6YEJhc2VFeGNlcHRpb25gIGluc3RlYWQgb2YgOmV4YzpgRXhjZXB0aW9uYCBzaW5jZQogICAgaXQgaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLgogCkBAIC0yODEsNiArMjgyLDE2IEBACiAgICBoYW5kbGluZyBpbiBDLCBtb3N0IGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMgYXJlIG5vdCBjaGVja2VkLgogCiAKKy4uIGV4Y2VwdGlvbjo6IFJlY3Vyc2lvbkVycm9yCisKKyAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgSXQgaXMgcmFpc2VkIHdoZW4gdGhlCisgICBpbnRlcnByZXRlciBkZXRlY3RzIHRoYXQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIChzZWUKKyAgIDpmdW5jOmBzeXMuZ2V0cmVjdXJzaW9ubGltaXRgKSBpcyBleGNlZWRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBQcmV2aW91c2x5LCBhIHBsYWluIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBleGNlcHRpb246OiBSZWZlcmVuY2VFcnJvcgogCiAgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHdlYWsgcmVmZXJlbmNlIHByb3h5LCBjcmVhdGVkIGJ5IHRoZQpAQCAtMzA2LDE0ICszMTcsMzAgQEAKICAgIGdpdmVuIGFzIGFuIGFyZ3VtZW50IHdoZW4gY29uc3RydWN0aW5nIHRoZSBleGNlcHRpb24sIGFuZCBkZWZhdWx0cwogICAgdG8gOmNvbnN0OmBOb25lYC4KIAotICAgV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiByZXR1cm5zLCBhIG5ldyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBpbnN0YW5jZSBpcworICAgV2hlbiBhIDp0ZXJtOmBnZW5lcmF0b3JgIG9yIDp0ZXJtOmBjb3JvdXRpbmVgIGZ1bmN0aW9uCisgICByZXR1cm5zLCBhIG5ldyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBpbnN0YW5jZSBpcwogICAgcmFpc2VkLCBhbmQgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZQogICAgOmF0dHI6YHZhbHVlYCBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBleGNlcHRpb24uCiAKKyAgIElmIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGRlZmluZWQgaW4gdGhlIHByZXNlbmNlIG9mIGEgYGBmcm9tIF9fZnV0dXJlX18KKyAgIGltcG9ydCBnZW5lcmF0b3Jfc3RvcGBgIGRpcmVjdGl2ZSByYWlzZXMgOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIGl0IHdpbGwgYmUKKyAgIGNvbnZlcnRlZCBpbnRvIGEgOmV4YzpgUnVudGltZUVycm9yYCAocmV0YWluaW5nIHRoZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYAorICAgYXMgdGhlIG5ldyBleGNlcHRpb24ncyBjYXVzZSkuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCBgYHZhbHVlYGAgYXR0cmlidXRlIGFuZCB0aGUgYWJpbGl0eSBmb3IgZ2VuZXJhdG9yIGZ1bmN0aW9ucyB0bwogICAgICAgdXNlIGl0IHRvIHJldHVybiBhIHZhbHVlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSW50cm9kdWNlZCB0aGUgUnVudGltZUVycm9yIHRyYW5zZm9ybWF0aW9uLgorCisuLiBleGNlcHRpb246OiBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgTXVzdCBiZSByYWlzZWQgYnkgOm1ldGg6YF9fYW5leHRfX2AgbWV0aG9kIG9mIGFuCisgICA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBvYmplY3QgdG8gc3RvcCB0aGUgaXRlcmF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZXhjZXB0aW9uOjogU3ludGF4RXJyb3IKIAogICAgUmFpc2VkIHdoZW4gdGhlIHBhcnNlciBlbmNvdW50ZXJzIGEgc3ludGF4IGVycm9yLiAgVGhpcyBtYXkgb2NjdXIgaW4gYW4KQEAgLTUzNiw3ICs1NjMsMTIgQEAKIC4uIGV4Y2VwdGlvbjo6IEludGVycnVwdGVkRXJyb3IKIAogICAgUmFpc2VkIHdoZW4gYSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBieSBhbiBpbmNvbWluZyBzaWduYWwuCi0gICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFSU5UUmBgLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIDpweTpkYXRhOmB+ZXJybm8uRUlOVFJgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgUHl0aG9uIG5vdyByZXRyaWVzIHN5c3RlbSBjYWxscyB3aGVuIGEgc3lzY2FsbCBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICAgICBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAKKyAgICAgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgogCiAuLiBleGNlcHRpb246OiBJc0FEaXJlY3RvcnlFcnJvcgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0IGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdAppbmRleCBlYjIwMTZhLi4zYTViYWRkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTQ3LDYgKzQ3LDkgQEAKICAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMgaW50byAqZmlsZSouIElmICphbGxfdGhyZWFkcyogaXMKICAgIGBgRmFsc2VgYCwgZHVtcCBvbmx5IHRoZSBjdXJyZW50IHRocmVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCisKIAogRmF1bHQgaGFuZGxlciBzdGF0ZQogLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTksNiArNjIsMTIgQEAKICAgIHByb2R1Y2UgdHJhY2ViYWNrcyBmb3IgZXZlcnkgcnVubmluZyB0aHJlYWQuIE90aGVyd2lzZSwgZHVtcCBvbmx5IHRoZSBjdXJyZW50CiAgICB0aHJlYWQuCiAKKyAgIFRoZSAqZmlsZSogbXVzdCBiZSBrZXB0IG9wZW4gdW50aWwgdGhlIGZhdWx0IGhhbmRsZXIgaXMgZGlzYWJsZWQ6IHNlZQorICAgOnJlZjpgaXNzdWUgd2l0aCBmaWxlIGRlc2NyaXB0b3JzIDxmYXVsdGhhbmRsZXItZmQ+YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCisKIC4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCiAKICAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQpAQCAtODIsOSArOTEsMTYgQEAKICAgIGNhbGwgcmVwbGFjZXMgcHJldmlvdXMgcGFyYW1ldGVycyBhbmQgcmVzZXRzIHRoZSB0aW1lb3V0LiBUaGUgdGltZXIgaGFzIGEKICAgIHN1Yi1zZWNvbmQgcmVzb2x1dGlvbi4KIAorICAgVGhlICpmaWxlKiBtdXN0IGJlIGtlcHQgb3BlbiB1bnRpbCB0aGUgdHJhY2ViYWNrIGlzIGR1bXBlZCBvcgorICAgOmZ1bmM6YGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcmAgaXMgY2FsbGVkOiBzZWUgOnJlZjpgaXNzdWUgd2l0aCBmaWxlCisgICBkZXNjcmlwdG9ycyA8ZmF1bHRoYW5kbGVyLWZkPmAuCisKICAgIFRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSB3YXRjaGRvZyB0aHJlYWQgYW5kIHRoZXJlZm9yZSBpcyBub3QKICAgIGF2YWlsYWJsZSBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCB0aHJlYWRzIGRpc2FibGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQogCiAgICBDYW5jZWwgdGhlIGxhc3QgY2FsbCB0byA6ZnVuYzpgZHVtcF90cmFjZWJhY2tfbGF0ZXJgLgpAQCAtOTksOCArMTE1LDE0IEBACiAgICB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzLCBvciBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYgKmFsbF90aHJlYWRzKiBpcwogICAgYGBGYWxzZWBgLCBpbnRvICpmaWxlKi4gQ2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciBpZiBjaGFpbiBpcyBgYFRydWVgYC4KIAorICAgVGhlICpmaWxlKiBtdXN0IGJlIGtlcHQgb3BlbiB1bnRpbCB0aGUgc2lnbmFsIGlzIHVucmVnaXN0ZXJlZCBieQorICAgOmZ1bmM6YHVucmVnaXN0ZXJgOiBzZWUgOnJlZjpgaXNzdWUgd2l0aCBmaWxlIGRlc2NyaXB0b3JzIDxmYXVsdGhhbmRsZXItZmQ+YC4KKwogICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiB1bnJlZ2lzdGVyKHNpZ251bSkKIAogICAgVW5yZWdpc3RlciBhIHVzZXIgc2lnbmFsOiB1bmluc3RhbGwgdGhlIGhhbmRsZXIgb2YgdGhlICpzaWdudW0qIHNpZ25hbApAQCAtMTEwLDYgKzEzMiw4IEBACiAgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCiAKIAorLi4gX2ZhdWx0aGFuZGxlci1mZDoKKwogSXNzdWUgd2l0aCBmaWxlIGRlc2NyaXB0b3JzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmNudGwucnN0IGIvRG9jL2xpYnJhcnkvZmNudGwucnN0CmluZGV4IDhlOTMyZmIuLjQzMjE0MGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKQEAgLTI4LDQxICsyOCw0MSBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKLS4uIGZ1bmN0aW9uOjogZmNudGwoZmQsIG9wWywgYXJnXSkKKy4uIGZ1bmN0aW9uOjogZmNudGwoZmQsIGNtZCwgYXJnPTApCiAKLSAgIFBlcmZvcm0gdGhlIG9wZXJhdGlvbiAqb3AqIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIChmaWxlIG9iamVjdHMgcHJvdmlkaW5nCisgICBQZXJmb3JtIHRoZSBvcGVyYXRpb24gKmNtZCogb24gZmlsZSBkZXNjcmlwdG9yICpmZCogKGZpbGUgb2JqZWN0cyBwcm92aWRpbmcKICAgIGEgOm1ldGg6YH5pby5JT0Jhc2UuZmlsZW5vYCBtZXRob2QgYXJlIGFjY2VwdGVkIGFzIHdlbGwpLiAgVGhlIHZhbHVlcyB1c2VkCi0gICBmb3IgKm9wKiBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlIGFzIGNvbnN0YW50cworICAgZm9yICpjbWQqIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUgYXMgY29uc3RhbnRzCiAgICBpbiB0aGUgOm1vZDpgZmNudGxgIG1vZHVsZSwgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbiB0aGUgcmVsZXZhbnQgQwotICAgaGVhZGVyIGZpbGVzLiAgVGhlIGFyZ3VtZW50ICphcmcqIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gdGhlIGludGVnZXIKLSAgIHZhbHVlIGBgMGBgLiAgV2hlbiBwcmVzZW50LCBpdCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgdmFsdWUsIG9yIGEgc3RyaW5nLgotICAgV2l0aCB0aGUgYXJndW1lbnQgbWlzc2luZyBvciBhbiBpbnRlZ2VyIHZhbHVlLCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24KLSAgIGlzIHRoZSBpbnRlZ2VyIHJldHVybiB2YWx1ZSBvZiB0aGUgQyA6YzpmdW5jOmBmY250bGAgY2FsbC4gIFdoZW4gdGhlIGFyZ3VtZW50IGlzCi0gICBhIHN0cmluZyBpdCByZXByZXNlbnRzIGEgYmluYXJ5IHN0cnVjdHVyZSwgZS5nLiBjcmVhdGVkIGJ5IDpmdW5jOmBzdHJ1Y3QucGFja2AuCi0gICBUaGUgYmluYXJ5IGRhdGEgaXMgY29waWVkIHRvIGEgYnVmZmVyIHdob3NlIGFkZHJlc3MgaXMgcGFzc2VkIHRvIHRoZSBDCi0gICA6YzpmdW5jOmBmY250bGAgY2FsbC4gIFRoZSByZXR1cm4gdmFsdWUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgaXMgdGhlIGNvbnRlbnRzCi0gICBvZiB0aGUgYnVmZmVyLCBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgb2JqZWN0LiAgVGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgc3RyaW5nCi0gICB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGggb2YgdGhlICphcmcqIGFyZ3VtZW50LiAgVGhpcyBpcyBsaW1pdGVkIHRvIDEwMjQKLSAgIGJ5dGVzLiAgSWYgdGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGluIHRoZSBidWZmZXIgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMKLSAgIGxhcmdlciB0aGFuIDEwMjQgYnl0ZXMsIHRoaXMgaXMgbW9zdCBsaWtlbHkgdG8gcmVzdWx0IGluIGEgc2VnbWVudGF0aW9uCi0gICB2aW9sYXRpb24gb3IgYSBtb3JlIHN1YnRsZSBkYXRhIGNvcnJ1cHRpb24uCisgICBoZWFkZXIgZmlsZXMuIFRoZSBhcmd1bWVudCAqYXJnKiBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgdmFsdWUsIG9yIGEKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gV2l0aCBhbiBpbnRlZ2VyIHZhbHVlLCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMKKyAgIGZ1bmN0aW9uIGlzIHRoZSBpbnRlZ2VyIHJldHVybiB2YWx1ZSBvZiB0aGUgQyA6YzpmdW5jOmBmY250bGAgY2FsbC4gIFdoZW4KKyAgIHRoZSBhcmd1bWVudCBpcyBieXRlcyBpdCByZXByZXNlbnRzIGEgYmluYXJ5IHN0cnVjdHVyZSwgZS5nLiBjcmVhdGVkIGJ5CisgICA6ZnVuYzpgc3RydWN0LnBhY2tgLiBUaGUgYmluYXJ5IGRhdGEgaXMgY29waWVkIHRvIGEgYnVmZmVyIHdob3NlIGFkZHJlc3MgaXMKKyAgIHBhc3NlZCB0byB0aGUgQyA6YzpmdW5jOmBmY250bGAgY2FsbC4gIFRoZSByZXR1cm4gdmFsdWUgYWZ0ZXIgYSBzdWNjZXNzZnVsCisgICBjYWxsIGlzIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyLCBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisgICBUaGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoIG9mIHRoZQorICAgKmFyZyogYXJndW1lbnQuIFRoaXMgaXMgbGltaXRlZCB0byAxMDI0IGJ5dGVzLiBJZiB0aGUgaW5mb3JtYXRpb24gcmV0dXJuZWQKKyAgIGluIHRoZSBidWZmZXIgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaXMgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcworICAgbW9zdCBsaWtlbHkgdG8gcmVzdWx0IGluIGEgc2VnbWVudGF0aW9uIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEKKyAgIGNvcnJ1cHRpb24uCiAKICAgIElmIHRoZSA6YzpmdW5jOmBmY250bGAgZmFpbHMsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogCi0uLiBmdW5jdGlvbjo6IGlvY3RsKGZkLCBvcFssIGFyZ1ssIG11dGF0ZV9mbGFnXV0pCisuLiBmdW5jdGlvbjo6IGlvY3RsKGZkLCByZXF1ZXN0LCBhcmc9MCwgbXV0YXRlX2ZsYWc9VHJ1ZSkKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIDpmdW5jOmB+ZmNudGwuZmNudGxgIGZ1bmN0aW9uLCBleGNlcHQKICAgIHRoYXQgdGhlIGFyZ3VtZW50IGhhbmRsaW5nIGlzIGV2ZW4gbW9yZSBjb21wbGljYXRlZC4KIAotICAgVGhlIG9wIHBhcmFtZXRlciBpcyBsaW1pdGVkIHRvIHZhbHVlcyB0aGF0IGNhbiBmaXQgaW4gMzItYml0cy4KLSAgIEFkZGl0aW9uYWwgY29uc3RhbnRzIG9mIGludGVyZXN0IGZvciB1c2UgYXMgdGhlICpvcCogYXJndW1lbnQgY2FuIGJlCisgICBUaGUgKnJlcXVlc3QqIHBhcmFtZXRlciBpcyBsaW1pdGVkIHRvIHZhbHVlcyB0aGF0IGNhbiBmaXQgaW4gMzItYml0cy4KKyAgIEFkZGl0aW9uYWwgY29uc3RhbnRzIG9mIGludGVyZXN0IGZvciB1c2UgYXMgdGhlICpyZXF1ZXN0KiBhcmd1bWVudCBjYW4gYmUKICAgIGZvdW5kIGluIHRoZSA6bW9kOmB0ZXJtaW9zYCBtb2R1bGUsIHVuZGVyIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW4KICAgIHRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4KIAotICAgVGhlIHBhcmFtZXRlciAqYXJnKiBjYW4gYmUgb25lIG9mIGFuIGludGVnZXIsIGFic2VudCAodHJlYXRlZCBpZGVudGljYWxseSB0byB0aGUKLSAgIGludGVnZXIgYGAwYGApLCBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgcmVhZC1vbmx5IGJ1ZmZlciBpbnRlcmZhY2UgKG1vc3QgbGlrZWx5Ci0gICBhIHBsYWluIFB5dGhvbiBzdHJpbmcpIG9yIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSByZWFkLXdyaXRlIGJ1ZmZlciBpbnRlcmZhY2UuCisgICBUaGUgcGFyYW1ldGVyICphcmcqIGNhbiBiZSBvbmUgb2YgYW4gaW50ZWdlciwgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlCisgICByZWFkLW9ubHkgYnVmZmVyIGludGVyZmFjZSAobGlrZSA6Y2xhc3M6YGJ5dGVzYCkgb3IgYW4gb2JqZWN0IHN1cHBvcnRpbmcKKyAgIHRoZSByZWFkLXdyaXRlIGJ1ZmZlciBpbnRlcmZhY2UgKGxpa2UgOmNsYXNzOmBieXRlYXJyYXlgKS4KIAogICAgSW4gYWxsIGJ1dCB0aGUgbGFzdCBjYXNlLCBiZWhhdmlvdXIgaXMgYXMgZm9yIHRoZSA6ZnVuYzpgfmZjbnRsLmZjbnRsYAogICAgZnVuY3Rpb24uCkBAIC03Miw3ICs3Miw3IEBACiAKICAgIElmIGl0IGlzIGZhbHNlLCB0aGUgYnVmZmVyJ3MgbXV0YWJpbGl0eSBpcyBpZ25vcmVkIGFuZCBiZWhhdmlvdXIgaXMgYXMgZm9yIGEKICAgIHJlYWQtb25seSBidWZmZXIsIGV4Y2VwdCB0aGF0IHRoZSAxMDI0IGJ5dGUgbGltaXQgbWVudGlvbmVkIGFib3ZlIGlzIGF2b2lkZWQgLS0KLSAgIHNvIGxvbmcgYXMgdGhlIGJ1ZmZlciB5b3UgcGFzcyBpcyBhcyBsZWFzdCBhcyBsb25nIGFzIHdoYXQgdGhlIG9wZXJhdGluZyBzeXN0ZW0KKyAgIHNvIGxvbmcgYXMgdGhlIGJ1ZmZlciB5b3UgcGFzcyBpcyBhdCBsZWFzdCBhcyBsb25nIGFzIHdoYXQgdGhlIG9wZXJhdGluZyBzeXN0ZW0KICAgIHdhbnRzIHRvIHB1dCB0aGVyZSwgdGhpbmdzIHNob3VsZCB3b3JrLgogCiAgICBJZiAqbXV0YXRlX2ZsYWcqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlbiB0aGUgYnVmZmVyIGlzIChpbiBlZmZlY3QpIHBhc3NlZApAQCAtOTcsMjUgKzk3LDI1IEBACiAgICAgICBhcnJheSgnaCcsIFsxMzM0MV0pCiAKIAotLi4gZnVuY3Rpb246OiBmbG9jayhmZCwgb3ApCisuLiBmdW5jdGlvbjo6IGZsb2NrKGZkLCBvcGVyYXRpb24pCiAKLSAgIFBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uICpvcCogb24gZmlsZSBkZXNjcmlwdG9yICpmZCogKGZpbGUgb2JqZWN0cyBwcm92aWRpbmcKKyAgIFBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uICpvcGVyYXRpb24qIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIChmaWxlIG9iamVjdHMgcHJvdmlkaW5nCiAgICBhIDptZXRoOmB+aW8uSU9CYXNlLmZpbGVub2AgbWV0aG9kIGFyZSBhY2NlcHRlZCBhcyB3ZWxsKS4gU2VlIHRoZSBVbml4IG1hbnVhbAogICAgOm1hbnBhZ2U6YGZsb2NrKDIpYCBmb3IgZGV0YWlscy4gIChPbiBzb21lIHN5c3RlbXMsIHRoaXMgZnVuY3Rpb24gaXMgZW11bGF0ZWQKICAgIHVzaW5nIDpjOmZ1bmM6YGZjbnRsYC4pCiAKIAotLi4gZnVuY3Rpb246OiBsb2NrZihmZCwgb3BlcmF0aW9uLCBbbGVuZ3RoLCBbc3RhcnQsIFt3aGVuY2VdXV0pCisuLiBmdW5jdGlvbjo6IGxvY2tmKGZkLCBjbWQsIGxlbj0wLCBzdGFydD0wLCB3aGVuY2U9MCkKIAogICAgVGhpcyBpcyBlc3NlbnRpYWxseSBhIHdyYXBwZXIgYXJvdW5kIHRoZSA6ZnVuYzpgfmZjbnRsLmZjbnRsYCBsb2NraW5nIGNhbGxzLgotICAgKmZkKiBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgKm9wZXJhdGlvbioKKyAgICpmZCogaXMgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBsb2NrIG9yIHVubG9jaywgYW5kICpjbWQqCiAgICBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAKICAgICogOmNvbnN0OmBMT0NLX1VOYCAtLSB1bmxvY2sKICAgICogOmNvbnN0OmBMT0NLX1NIYCAtLSBhY3F1aXJlIGEgc2hhcmVkIGxvY2sKICAgICogOmNvbnN0OmBMT0NLX0VYYCAtLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrCiAKLSAgIFdoZW4gKm9wZXJhdGlvbiogaXMgOmNvbnN0OmBMT0NLX1NIYCBvciA6Y29uc3Q6YExPQ0tfRVhgLCBpdCBjYW4gYWxzbyBiZQorICAgV2hlbiAqY21kKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCiAgICBiaXR3aXNlIE9SZWQgd2l0aCA6Y29uc3Q6YExPQ0tfTkJgIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uCiAgICBJZiA6Y29uc3Q6YExPQ0tfTkJgIGlzIHVzZWQgYW5kIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4KICAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwgaGF2ZSBhbiAqZXJybm8qCkBAIC0xMjQsNyArMTI0LDcgQEAKICAgIHN5c3RlbXMsIDpjb25zdDpgTE9DS19FWGAgY2FuIG9ubHkgYmUgdXNlZCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHJlZmVycyB0byBhCiAgICBmaWxlIG9wZW5lZCBmb3Igd3JpdGluZy4KIAotICAgKmxlbmd0aCogaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCAqc3RhcnQqIGlzIHRoZSBieXRlIG9mZnNldCBhdAorICAgKmxlbiogaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCAqc3RhcnQqIGlzIHRoZSBieXRlIG9mZnNldCBhdAogICAgd2hpY2ggdGhlIGxvY2sgc3RhcnRzLCByZWxhdGl2ZSB0byAqd2hlbmNlKiwgYW5kICp3aGVuY2UqIGlzIGFzIHdpdGgKICAgIDpmdW5jOmBpby5JT0Jhc2Uuc2Vla2AsIHNwZWNpZmljYWxseToKIApAQCAtMTMzLDcgKzEzMyw3IEBACiAgICAqIDpjb25zdDpgMmAgLS0gcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSAoOmRhdGE6YG9zLlNFRUtfRU5EYCkKIAogICAgVGhlIGRlZmF1bHQgZm9yICpzdGFydCogaXMgMCwgd2hpY2ggbWVhbnMgdG8gc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KLSAgIFRoZSBkZWZhdWx0IGZvciAqbGVuZ3RoKiBpcyAwIHdoaWNoIG1lYW5zIHRvIGxvY2sgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4gIFRoZQorICAgVGhlIGRlZmF1bHQgZm9yICpsZW4qIGlzIDAgd2hpY2ggbWVhbnMgdG8gbG9jayB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiAgVGhlCiAgICBkZWZhdWx0IGZvciAqd2hlbmNlKiBpcyBhbHNvIDAuCiAKIEV4YW1wbGVzIChhbGwgb24gYSBTVlI0IGNvbXBsaWFudCBzeXN0ZW0pOjoKQEAgLTE0Nyw5ICsxNDcsOSBAQAogICAgcnYgPSBmY250bC5mY250bChmLCBmY250bC5GX1NFVExLVywgbG9ja2RhdGEpCiAKIE5vdGUgdGhhdCBpbiB0aGUgZmlyc3QgZXhhbXBsZSB0aGUgcmV0dXJuIHZhbHVlIHZhcmlhYmxlICpydiogd2lsbCBob2xkIGFuCi1pbnRlZ2VyIHZhbHVlOyBpbiB0aGUgc2Vjb25kIGV4YW1wbGUgaXQgd2lsbCBob2xkIGEgc3RyaW5nIHZhbHVlLiAgVGhlIHN0cnVjdHVyZQotbGF5LW91dCBmb3IgdGhlICpsb2NrZGF0YSogdmFyaWFibGUgaXMgc3lzdGVtIGRlcGVuZGVudCAtLS0gdGhlcmVmb3JlIHVzaW5nIHRoZQotOmZ1bmM6YGZsb2NrYCBjYWxsIG1heSBiZSBiZXR0ZXIuCitpbnRlZ2VyIHZhbHVlOyBpbiB0aGUgc2Vjb25kIGV4YW1wbGUgaXQgd2lsbCBob2xkIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiAgVGhlCitzdHJ1Y3R1cmUgbGF5LW91dCBmb3IgdGhlICpsb2NrZGF0YSogdmFyaWFibGUgaXMgc3lzdGVtIGRlcGVuZGVudCAtLS0gdGhlcmVmb3JlCit1c2luZyB0aGUgOmZ1bmM6YGZsb2NrYCBjYWxsIG1heSBiZSBiZXR0ZXIuCiAKIAogLi4gc2VlYWxzbzo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mb3JtYXR0ZXIucnN0IGIvRG9jL2xpYnJhcnkvZm9ybWF0dGVyLnJzdAppbmRleCAxODQ3YTgwLi5hNTE1Zjc0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mb3JtYXR0ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Zvcm1hdHRlci5yc3QKQEAgLTUsNyArNSw3IEBACiAgICA6c3lub3BzaXM6IEdlbmVyaWMgb3V0cHV0IGZvcm1hdHRlciBhbmQgZGV2aWNlIGludGVyZmFjZS4KICAgIDpkZXByZWNhdGVkOgogCi0uLiBkZXByZWNhdGVkOjogMy40CisuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjQgMy42CiAgICBEdWUgdG8gbGFjayBvZiB1c2FnZSwgdGhlIGZvcm1hdHRlciBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgaXMgc2xhdGVkCiAgICBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy42LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mcmFjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnJhY3Rpb25zLnJzdAppbmRleCBjMmM3NDAxLi5lMGYwNjgyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mcmFjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZyYWN0aW9ucy5yc3QKQEAgLTE3Miw2ICsxNzIsOSBAQAogICAgc2lnbiBhcyAqYiogaWYgKmIqIGlzIG5vbnplcm87IG90aGVyd2lzZSBpdCB0YWtlcyB0aGUgc2lnbiBvZiAqYSouICBgYGdjZCgwLAogICAgMClgYCByZXR1cm5zIGBgMGBgLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YG1hdGguZ2NkYCBpbnN0ZWFkLgorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAppbmRleCA1Mzc3MzM1Li40MDlmNmM0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKQEAgLTE1NiwxMSArMTU2LDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogY2hyKGkpCiAKLSAgIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGNoYXJhY3RlciB3aG9zZSBVbmljb2RlIGNvZGUgcG9pbnQgaXMgdGhlIGludGVnZXIKLSAgICppKi4gIEZvciBleGFtcGxlLCBgYGNocig5NylgYCByZXR1cm5zIHRoZSBzdHJpbmcgYGAnYSdgYC4gVGhpcyBpcyB0aGUKLSAgIGludmVyc2Ugb2YgOmZ1bmM6YG9yZGAuICBUaGUgdmFsaWQgcmFuZ2UgZm9yIHRoZSBhcmd1bWVudCBpcyBmcm9tIDAgdGhyb3VnaAotICAgMSwxMTQsMTExICgweDEwRkZGRiBpbiBiYXNlIDE2KS4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcwotICAgb3V0c2lkZSB0aGF0IHJhbmdlLgorICAgUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgY2hhcmFjdGVyIHdob3NlIFVuaWNvZGUgY29kZSBwb2ludCBpcyB0aGUKKyAgIGludGVnZXIgKmkqLiAgRm9yIGV4YW1wbGUsIGBgY2hyKDk3KWBgIHJldHVybnMgdGhlIHN0cmluZyBgYCdhJ2BgLCB3aGlsZQorICAgYGBjaHIoOTU3KWBgIHJldHVybnMgdGhlIHN0cmluZyBgYCfOvSdgYC4gVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiA6ZnVuYzpgb3JkYC4KKworICAgVGhlIHZhbGlkIHJhbmdlIGZvciB0aGUgYXJndW1lbnQgaXMgZnJvbSAwIHRocm91Z2ggMSwxMTQsMTExICgweDEwRkZGRiBpbgorICAgYmFzZSAxNikuICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMgb3V0c2lkZSB0aGF0IHJhbmdlLgogCiAKIC4uIGZ1bmN0aW9uOjogY2xhc3NtZXRob2QoZnVuY3Rpb24pCkBAIC05NzIsOSArOTczLDExIEBACiAgICAgIENoYXJhY3RlcnMgbm90IHN1cHBvcnRlZCBieSB0aGUgZW5jb2RpbmcgYXJlIHJlcGxhY2VkIHdpdGggdGhlCiAgICAgIGFwcHJvcHJpYXRlIFhNTCBjaGFyYWN0ZXIgcmVmZXJlbmNlIGBgJiNubm47YGAuCiAKLSAgICogYGAnYmFja3NsYXNocmVwbGFjZSdgYCAoYWxzbyBvbmx5IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcpCi0gICAgIHJlcGxhY2VzIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMgd2l0aCBQeXRob24ncyBiYWNrc2xhc2hlZCBlc2NhcGUKLSAgICAgc2VxdWVuY2VzLgorICAgKiBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIHJlcGxhY2VzIG1hbGZvcm1lZCBkYXRhIGJ5IFB5dGhvbidzIGJhY2tzbGFzaGVkCisgICAgIGVzY2FwZSBzZXF1ZW5jZXMuCisKKyAgICogYGAnbmFtZXJlcGxhY2UnYGAgKGFsc28gb25seSBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nKQorICAgICByZXBsYWNlcyB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlIHNlcXVlbmNlcy4KIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IG9wZW4oKSBidWlsdC1pbiBmdW5jdGlvbgpAQCAtOTk5LDggKzEwMDIsOCBAQAogCiAgICBJZiAqY2xvc2VmZCogaXMgYGBGYWxzZWBgIGFuZCBhIGZpbGUgZGVzY3JpcHRvciByYXRoZXIgdGhhbiBhIGZpbGVuYW1lIHdhcwogICAgZ2l2ZW4sIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGtlcHQgb3BlbiB3aGVuIHRoZSBmaWxlIGlzCi0gICBjbG9zZWQuICBJZiBhIGZpbGVuYW1lIGlzIGdpdmVuICpjbG9zZWZkKiBoYXMgbm8gZWZmZWN0IGFuZCBtdXN0IGJlIGBgVHJ1ZWBgCi0gICAodGhlIGRlZmF1bHQpLgorICAgY2xvc2VkLiAgSWYgYSBmaWxlbmFtZSBpcyBnaXZlbiAqY2xvc2VmZCogbXVzdCBiZSBgYFRydWVgYCAodGhlIGRlZmF1bHQpCisgICBvdGhlcndpc2UgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQuCiAKICAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCiAgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aApAQCAtMTA2MiwxNCArMTA2NSwxOCBAQAogCiAgICAgICBUaGUgYGAnVSdgYCBtb2RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCi0uLiBYWFggd29ya3MgZm9yIGJ5dGVzIHRvbywgYnV0IHNob3VsZCBpdD8KKwogLi4gZnVuY3Rpb246OiBvcmQoYykKIAogICAgR2l2ZW4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIG9uZSBVbmljb2RlIGNoYXJhY3RlciwgcmV0dXJuIGFuIGludGVnZXIKLSAgIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZSBjb2RlCi0gICBwb2ludCBvZiB0aGF0IGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYG9yZCgnYScpYGAgcmV0dXJucyB0aGUgaW50ZWdlciBgYDk3YGAKLSAgIGFuZCBgYG9yZCgnXHUyMDIwJylgYCByZXR1cm5zIGBgODIyNGBgLiAgVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiA6ZnVuYzpgY2hyYC4KKyAgIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZSBjb2RlIHBvaW50IG9mIHRoYXQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsCisgICBgYG9yZCgnYScpYGAgcmV0dXJucyB0aGUgaW50ZWdlciBgYDk3YGAgYW5kIGBgb3JkKCfOvScpYGAgcmV0dXJucyBgYDk1N2BgLgorICAgVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiA6ZnVuYzpgY2hyYC4KIAogCiAuLiBmdW5jdGlvbjo6IHBvdyh4LCB5Wywgel0pCkBAIC0xMTg2LDYgKzExOTMsOSBAQAogICAgVGhlIHJldHVybmVkIHByb3BlcnR5IG9iamVjdCBhbHNvIGhhcyB0aGUgYXR0cmlidXRlcyBgYGZnZXRgYCwgYGBmc2V0YGAsIGFuZAogICAgYGBmZGVsYGAgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGRvY3N0cmluZ3Mgb2YgcHJvcGVydHkgb2JqZWN0cyBhcmUgbm93IHdyaXRlYWJsZS4KKwogCiAuLiBfZnVuYy1yYW5nZToKIC4uIGZ1bmN0aW9uOjogcmFuZ2Uoc3RvcCkKQEAgLTEyMTgsOCArMTIyOCw4IEBACiAuLiBmdW5jdGlvbjo6IHJvdW5kKG51bWJlclssIG5kaWdpdHNdKQogCiAgICBSZXR1cm4gdGhlIGZsb2F0aW5nIHBvaW50IHZhbHVlICpudW1iZXIqIHJvdW5kZWQgdG8gKm5kaWdpdHMqIGRpZ2l0cyBhZnRlcgotICAgdGhlIGRlY2ltYWwgcG9pbnQuICBJZiAqbmRpZ2l0cyogaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gemVyby4gRGVsZWdhdGVzCi0gICB0byBgYG51bWJlci5fX3JvdW5kX18obmRpZ2l0cylgYC4KKyAgIHRoZSBkZWNpbWFsIHBvaW50LiAgSWYgKm5kaWdpdHMqIGlzIG9taXR0ZWQsIGl0IHJldHVybnMgdGhlIG5lYXJlc3QgaW50ZWdlcgorICAgdG8gaXRzIGlucHV0LiAgRGVsZWdhdGVzIHRvIGBgbnVtYmVyLl9fcm91bmRfXyhuZGlnaXRzKWBgLgogCiAgICBGb3IgdGhlIGJ1aWx0LWluIHR5cGVzIHN1cHBvcnRpbmcgOmZ1bmM6YHJvdW5kYCwgdmFsdWVzIGFyZSByb3VuZGVkIHRvIHRoZQogICAgY2xvc2VzdCBtdWx0aXBsZSBvZiAxMCB0byB0aGUgcG93ZXIgbWludXMgKm5kaWdpdHMqOyBpZiB0d28gbXVsdGlwbGVzIGFyZQpAQCAtMTQ4NSw3ICsxNDk1LDkgQEAKIAogICAgVGhlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciBvZiB0aGUgaXRlcmFibGVzIGlzIGd1YXJhbnRlZWQuIFRoaXMKICAgIG1ha2VzIHBvc3NpYmxlIGFuIGlkaW9tIGZvciBjbHVzdGVyaW5nIGEgZGF0YSBzZXJpZXMgaW50byBuLWxlbmd0aCBncm91cHMKLSAgIHVzaW5nIGBgemlwKCpbaXRlcihzKV0qbilgYC4KKyAgIHVzaW5nIGBgemlwKCpbaXRlcihzKV0qbilgYC4gIFRoaXMgcmVwZWF0cyB0aGUgKnNhbWUqIGl0ZXJhdG9yIGBgbmBgIHRpbWVzCisgICBzbyB0aGF0IGVhY2ggb3V0cHV0IHR1cGxlIGhhcyB0aGUgcmVzdWx0IG9mIGBgbmBgIGNhbGxzIHRvIHRoZSBpdGVyYXRvci4KKyAgIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgZGl2aWRpbmcgdGhlIGlucHV0IGludG8gbi1sZW5ndGggY2h1bmtzLgogCiAgICA6ZnVuYzpgemlwYCBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggdW5lcXVhbCBsZW5ndGggaW5wdXRzIHdoZW4geW91IGRvbid0CiAgICBjYXJlIGFib3V0IHRyYWlsaW5nLCB1bm1hdGNoZWQgdmFsdWVzIGZyb20gdGhlIGxvbmdlciBpdGVyYWJsZXMuICBJZiB0aG9zZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2MucnN0IGIvRG9jL2xpYnJhcnkvZ2MucnN0CmluZGV4IDgxMzU1NDIuLmQxMWMyZTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2djLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nYy5yc3QKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgYWRkZWQgdG8gdGhpcyBsaXN0IHJhdGhlciB0aGFuIGZyZWVkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgSWYgdGhpcyBsaXN0IGlzIG5vbi1lbXB0eSBhdCBpbnRlcnByZXRlciBzaHV0ZG93biwgYQorICAgICAgSWYgdGhpcyBsaXN0IGlzIG5vbi1lbXB0eSBhdCA6dGVybTpgaW50ZXJwcmV0ZXIgc2h1dGRvd25gLCBhCiAgICAgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGlzIGVtaXR0ZWQsIHdoaWNoIGlzIHNpbGVudCBieSBkZWZhdWx0LiAgSWYKICAgICAgIDpjb25zdDpgREVCVUdfVU5DT0xMRUNUQUJMRWAgaXMgc2V0LCBpbiBhZGRpdGlvbiBhbGwgdW5jb2xsZWN0YWJsZSBvYmplY3RzCiAgICAgICBhcmUgcHJpbnRlZC4KQEAgLTI1Miw4ICsyNTIsOCBAQAogICAgdG8gdGhlIGBgZ2FyYmFnZWBgIGxpc3QuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBBbHNvIHByaW50IHRoZSBjb250ZW50cyBvZiB0aGUgOmRhdGE6YGdhcmJhZ2VgIGxpc3QgYXQgaW50ZXJwcmV0ZXIKLSAgICAgIHNodXRkb3duLCBpZiBpdCBpc24ndCBlbXB0eS4KKyAgICAgIEFsc28gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSA6ZGF0YTpgZ2FyYmFnZWAgbGlzdCBhdAorICAgICAgOnRlcm06YGludGVycHJldGVyIHNodXRkb3duYCwgaWYgaXQgaXNuJ3QgZW1wdHkuCiAKIC4uIGRhdGE6OiBERUJVR19TQVZFQUxMCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0IGIvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKaW5kZXggZmYyM2I1OS4uNTE0Y2M1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QKQEAgLTM0NCw5ICszNDQsOSBAQAogVGhlIGVudGlyZSBzZXQgb2Yga2V5L3ZhbHVlIHBhaXJzIGFyZSBwbGFjZWQgaW50byBhIGRpY3Rpb25hcnkgYW5kIHNldCBhcyB0aGUKICJwcm90ZWN0ZWQiIDphdHRyOmBfaW5mb2AgaW5zdGFuY2UgdmFyaWFibGUuCiAKLUlmIHRoZSA6ZmlsZTpgLm1vYCBmaWxlJ3MgbWFnaWMgbnVtYmVyIGlzIGludmFsaWQsIG9yIGlmIG90aGVyIHByb2JsZW1zIG9jY3VyCi13aGlsZSByZWFkaW5nIHRoZSBmaWxlLCBpbnN0YW50aWF0aW5nIGEgOmNsYXNzOmBHTlVUcmFuc2xhdGlvbnNgIGNsYXNzIGNhbiByYWlzZQotOmV4YzpgT1NFcnJvcmAuCitJZiB0aGUgOmZpbGU6YC5tb2AgZmlsZSdzIG1hZ2ljIG51bWJlciBpcyBpbnZhbGlkLCB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgaXMKK3VuZXhwZWN0ZWQsIG9yIGlmIG90aGVyIHByb2JsZW1zIG9jY3VyIHdoaWxlIHJlYWRpbmcgdGhlIGZpbGUsIGluc3RhbnRpYXRpbmcgYQorOmNsYXNzOmBHTlVUcmFuc2xhdGlvbnNgIGNsYXNzIGNhbiByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBvdmVycmlkZGVuIGZyb20gdGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb246CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dsb2IucnN0IGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKaW5kZXggYWJjYmYzOC4uNTBmMzhhNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKICAgIFRoZSA6bW9kOmBwYXRobGliYCBtb2R1bGUgb2ZmZXJzIGhpZ2gtbGV2ZWwgcGF0aCBvYmplY3RzLgogCiAKLS4uIGZ1bmN0aW9uOjogZ2xvYihwYXRobmFtZSkKKy4uIGZ1bmN0aW9uOjogZ2xvYihwYXRobmFtZSwgKiwgcmVjdXJzaXZlPUZhbHNlKQogCiAgICBSZXR1cm4gYSBwb3NzaWJseS1lbXB0eSBsaXN0IG9mIHBhdGggbmFtZXMgdGhhdCBtYXRjaCAqcGF0aG5hbWUqLCB3aGljaCBtdXN0IGJlCiAgICBhIHN0cmluZyBjb250YWluaW5nIGEgcGF0aCBzcGVjaWZpY2F0aW9uLiAqcGF0aG5hbWUqIGNhbiBiZSBlaXRoZXIgYWJzb2x1dGUKQEAgLTM3LDggKzM3LDE5IEBACiAgICA6ZmlsZTpgLi4vLi4vVG9vbHMvXCovXCouZ2lmYCksIGFuZCBjYW4gY29udGFpbiBzaGVsbC1zdHlsZSB3aWxkY2FyZHMuIEJyb2tlbgogICAgc3ltbGlua3MgYXJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRzIChhcyBpbiB0aGUgc2hlbGwpLgogCisgICBJZiAqcmVjdXJzaXZlKiBpcyB0cnVlLCB0aGUgcGF0dGVybiAiYGAqKmBgIiB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQgemVybyBvcgorICAgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuICBJZiB0aGUgcGF0dGVybiBpcyBmb2xsb3dlZCBieSBhCisgICBgYG9zLnNlcGBgLCBvbmx5IGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3RvcmllcyBtYXRjaC4KIAotLi4gZnVuY3Rpb246OiBpZ2xvYihwYXRobmFtZSkKKyAgIC4uIG5vdGU6OgorICAgICAgVXNpbmcgdGhlICJgYCoqYGAiIHBhdHRlcm4gaW4gbGFyZ2UgZGlyZWN0b3J5IHRyZWVzIG1heSBjb25zdW1lCisgICAgICBhbiBpbm9yZGluYXRlIGFtb3VudCBvZiB0aW1lLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3VwcG9ydCBmb3IgcmVjdXJzaXZlIGdsb2JzIHVzaW5nICJgYCoqYGAiLgorCisKKy4uIGZ1bmN0aW9uOjogaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZT1GYWxzZSkKIAogICAgUmV0dXJuIGFuIDp0ZXJtOmBpdGVyYXRvcmAgd2hpY2ggeWllbGRzIHRoZSBzYW1lIHZhbHVlcyBhcyA6ZnVuYzpgZ2xvYmAKICAgIHdpdGhvdXQgYWN0dWFsbHkgc3RvcmluZyB0aGVtIGFsbCBzaW11bHRhbmVvdXNseS4KQEAgLTU1LDggKzY2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKLUZvciBleGFtcGxlLCBjb25zaWRlciBhIGRpcmVjdG9yeSBjb250YWluaW5nIG9ubHkgdGhlIGZvbGxvd2luZyBmaWxlczoKLTpmaWxlOmAxLmdpZmAsIDpmaWxlOmAyLnR4dGAsIGFuZCA6ZmlsZTpgY2FyZC5naWZgLiAgOmZ1bmM6YGdsb2JgIHdpbGwgcHJvZHVjZQorRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBmaWxlczoKKzpmaWxlOmAxLmdpZmAsIDpmaWxlOmAyLnR4dGAsIDpmaWxlOmBjYXJkLmdpZmAgYW5kIGEgc3ViZGlyZWN0b3J5IDpmaWxlOmBzdWJgCit3aGljaCBjb250YWlucyBvbmx5IHRoZSBmaWxlIDpmaWxlOmAzLnR4dGAuICA6ZnVuYzpgZ2xvYmAgd2lsbCBwcm9kdWNlCiB0aGUgZm9sbG93aW5nIHJlc3VsdHMuICBOb3RpY2UgaG93IGFueSBsZWFkaW5nIGNvbXBvbmVudHMgb2YgdGhlIHBhdGggYXJlCiBwcmVzZXJ2ZWQuIDo6CiAKQEAgLTY3LDYgKzc5LDEwIEBACiAgICBbJzEuZ2lmJywgJ2NhcmQuZ2lmJ10KICAgID4+PiBnbG9iLmdsb2IoJz8uZ2lmJykKICAgIFsnMS5naWYnXQorICAgPj4+IGdsb2IuZ2xvYignKiovKi50eHQnLCByZWN1cnNpdmU9VHJ1ZSkKKyAgIFsnMi50eHQnLCAnc3ViLzMudHh0J10KKyAgID4+PiBnbG9iLmdsb2IoJy4vKiovJywgcmVjdXJzaXZlPVRydWUpCisgICBbJy4vJywgJy4vc3ViLyddCiAKIElmIHRoZSBkaXJlY3RvcnkgY29udGFpbnMgZmlsZXMgc3RhcnRpbmcgd2l0aCBgYC5gYCB0aGV5IHdvbid0IGJlIG1hdGNoZWQgYnkKIGRlZmF1bHQuIEZvciBleGFtcGxlLCBjb25zaWRlciBhIGRpcmVjdG9yeSBjb250YWluaW5nIDpmaWxlOmBjYXJkLmdpZmAgYW5kCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nemlwLnJzdCBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CmluZGV4IDc4NTM2ZmEuLjA0YzQxZDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2d6aXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CkBAIC05MCwxMyArOTAsOSBAQAogICAgaXMgbm8gY29tcHJlc3Npb24uIFRoZSBkZWZhdWx0IGlzIGBgOWBgLgogCiAgICBUaGUgKm10aW1lKiBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBudW1lcmljIHRpbWVzdGFtcCB0byBiZSB3cml0dGVuIHRvCi0gICB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuICBBbGwgOnByb2dyYW06YGd6aXBgIGNvbXByZXNzZWQgc3RyZWFtcyBhcmUKLSAgIHJlcXVpcmVkIHRvIGNvbnRhaW4gYSB0aW1lc3RhbXAuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgY3VycmVudAotICAgdGltZSBpcyB1c2VkLiAgVGhpcyBtb2R1bGUgaWdub3JlcyB0aGUgdGltZXN0YW1wIHdoZW4gZGVjb21wcmVzc2luZzsKLSAgIGhvd2V2ZXIsIHNvbWUgcHJvZ3JhbXMsIHN1Y2ggYXMgOnByb2dyYW06YGd1bnppcGBcICwgbWFrZSB1c2Ugb2YgaXQuCi0gICBUaGUgZm9ybWF0IG9mIHRoZSB0aW1lc3RhbXAgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgcmV0dXJuIHZhbHVlIG9mCi0gICBgYHRpbWUudGltZSgpYGAgYW5kIG9mIHRoZSBgYHN0X210aW1lYGAgYXR0cmlidXRlIG9mIHRoZSBvYmplY3QgcmV0dXJuZWQKLSAgIGJ5IGBgb3Muc3RhdCgpYGAuCisgICB0aGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBmaWVsZCBpbiB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuICBJdAorICAgc2hvdWxkIG9ubHkgYmUgcHJvdmlkZWQgaW4gY29tcHJlc3Npb24gbW9kZS4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZQorICAgY3VycmVudCB0aW1lIGlzIHVzZWQuICBTZWUgdGhlIDphdHRyOmBtdGltZWAgYXR0cmlidXRlIGZvciBtb3JlIGRldGFpbHMuCiAKICAgIENhbGxpbmcgYSA6Y2xhc3M6YEd6aXBGaWxlYCBvYmplY3QncyA6bWV0aDpgY2xvc2VgIG1ldGhvZCBkb2VzIG5vdCBjbG9zZQogICAgKmZpbGVvYmoqLCBzaW5jZSB5b3UgbWlnaHQgd2lzaCB0byBhcHBlbmQgbW9yZSBtYXRlcmlhbCBhZnRlciB0aGUgY29tcHJlc3NlZApAQCAtMTA4LDkgKzEwNCw5IEBACiAgICBpbmNsdWRpbmcgaXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIE9ubHkgdGhlCiAgICA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAotICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKKyAgIDpjbGFzczpgR3ppcEZpbGVgIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2QgYW5kIGF0dHJpYnV0ZToKIAotICAgLi4gbWV0aG9kOjogcGVlayhbbl0pCisgICAuLiBtZXRob2Q6OiBwZWVrKG4pCiAKICAgICAgIFJlYWQgKm4qIHVuY29tcHJlc3NlZCBieXRlcyB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KICAgICAgIEF0IG1vc3Qgb25lIHNpbmdsZSByZWFkIG9uIHRoZSBjb21wcmVzc2VkIHN0cmVhbSBpcyBkb25lIHRvIHNhdGlzZnkKQEAgLTEyNCw5ICsxMjAsMjEgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IG10aW1lCisKKyAgICAgIFdoZW4gZGVjb21wcmVzc2luZywgdGhlIHZhbHVlIG9mIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIGZpZWxkIGluCisgICAgICB0aGUgbW9zdCByZWNlbnRseSByZWFkIGhlYWRlciBtYXkgYmUgcmVhZCBmcm9tIHRoaXMgYXR0cmlidXRlLCBhcyBhbgorICAgICAgaW50ZWdlci4gIFRoZSBpbml0aWFsIHZhbHVlIGJlZm9yZSByZWFkaW5nIGFueSBoZWFkZXJzIGlzIGBgTm9uZWBgLgorCisgICAgICBBbGwgOnByb2dyYW06YGd6aXBgIGNvbXByZXNzZWQgc3RyZWFtcyBhcmUgcmVxdWlyZWQgdG8gY29udGFpbiB0aGlzCisgICAgICB0aW1lc3RhbXAgZmllbGQuICBTb21lIHByb2dyYW1zLCBzdWNoIGFzIDpwcm9ncmFtOmBndW56aXBgXCAsIG1ha2UgdXNlCisgICAgICBvZiB0aGUgdGltZXN0YW1wLiAgVGhlIGZvcm1hdCBpcyB0aGUgc2FtZSBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICA6ZnVuYzpgdGltZS50aW1lYCBhbmQgdGhlIDphdHRyOmB+b3Muc3RhdF9yZXN1bHQuc3RfbXRpbWVgIGF0dHJpYnV0ZSBvZgorICAgICAgdGhlIG9iamVjdCByZXR1cm5lZCBieSA6ZnVuYzpgb3Muc3RhdGAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBTdXBwb3J0IGZvciB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCB3YXMgYWRkZWQsIGFsb25nIHdpdGggdGhlCi0gICAgICAqbXRpbWUqIGFyZ3VtZW50LgorICAgICAgKm10aW1lKiBjb25zdHJ1Y3RvciBhcmd1bWVudCBhbmQgOmF0dHI6YG10aW1lYCBhdHRyaWJ1dGUuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBTdXBwb3J0IGZvciB6ZXJvLXBhZGRlZCBhbmQgdW5zZWVrYWJsZSBmaWxlcyB3YXMgYWRkZWQuCkBAIC0xMzcsNiArMTQ1LDEyIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgYW5kIGBgJ3hiJ2BgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBhcmJpdHJhcnkKKyAgICAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAuCisgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKKyAgICAgIGBgTm9uZWBgLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCkBAIC0xNzUsOSArMTg5LDEwIEBACiBFeGFtcGxlIG9mIGhvdyB0byBHWklQIGNvbXByZXNzIGFuIGV4aXN0aW5nIGZpbGU6OgogCiAgICBpbXBvcnQgZ3ppcAorICAgaW1wb3J0IHNodXRpbAogICAgd2l0aCBvcGVuKCcvaG9tZS9qb2UvZmlsZS50eHQnLCAncmInKSBhcyBmX2luOgogICAgICAgIHdpdGggZ3ppcC5vcGVuKCcvaG9tZS9qb2UvZmlsZS50eHQuZ3onLCAnd2InKSBhcyBmX291dDoKLSAgICAgICAgICAgZl9vdXQud3JpdGVsaW5lcyhmX2luKQorICAgICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooZl9pbiwgZl9vdXQpCiAKIEV4YW1wbGUgb2YgaG93IHRvIEdaSVAgY29tcHJlc3MgYSBiaW5hcnkgc3RyaW5nOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGVhcHEucnN0IGIvRG9jL2xpYnJhcnkvaGVhcHEucnN0CmluZGV4IGY4OTcwYmUuLjlmYmJjYzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2hlYXBxLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oZWFwcS5yc3QKQEAgLTgyLDcgKzgyLDcgQEAKIFRoZSBtb2R1bGUgYWxzbyBvZmZlcnMgdGhyZWUgZ2VuZXJhbCBwdXJwb3NlIGZ1bmN0aW9ucyBiYXNlZCBvbiBoZWFwcy4KIAogCi0uLiBmdW5jdGlvbjo6IG1lcmdlKCppdGVyYWJsZXMpCisuLiBmdW5jdGlvbjo6IG1lcmdlKCppdGVyYWJsZXMsIGtleT1Ob25lLCByZXZlcnNlPUZhbHNlKQogCiAgICBNZXJnZSBtdWx0aXBsZSBzb3J0ZWQgaW5wdXRzIGludG8gYSBzaW5nbGUgc29ydGVkIG91dHB1dCAoZm9yIGV4YW1wbGUsIG1lcmdlCiAgICB0aW1lc3RhbXBlZCBlbnRyaWVzIGZyb20gbXVsdGlwbGUgbG9nIGZpbGVzKS4gIFJldHVybnMgYW4gOnRlcm06YGl0ZXJhdG9yYApAQCAtOTIsNiArOTIsMTggQEAKICAgIG5vdCBwdWxsIHRoZSBkYXRhIGludG8gbWVtb3J5IGFsbCBhdCBvbmNlLCBhbmQgYXNzdW1lcyB0aGF0IGVhY2ggb2YgdGhlIGlucHV0CiAgICBzdHJlYW1zIGlzIGFscmVhZHkgc29ydGVkIChzbWFsbGVzdCB0byBsYXJnZXN0KS4KIAorICAgSGFzIHR3byBvcHRpb25hbCBhcmd1bWVudHMgd2hpY2ggbXVzdCBiZSBzcGVjaWZpZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICprZXkqIHNwZWNpZmllcyBhIDp0ZXJtOmBrZXkgZnVuY3Rpb25gIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8KKyAgIGV4dHJhY3QgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggaW5wdXQgZWxlbWVudC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCisgICBgYE5vbmVgYCAoY29tcGFyZSB0aGUgZWxlbWVudHMgZGlyZWN0bHkpLgorCisgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBpbnB1dCBlbGVtZW50cworICAgYXJlIG1lcmdlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCAqa2V5KiBhbmQgKnJldmVyc2UqIHBhcmFtZXRlcnMuCisKIAogLi4gZnVuY3Rpb246OiBubGFyZ2VzdChuLCBpdGVyYWJsZSwga2V5PU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdAppbmRleCBmZWY5YzM4Li44MjQ5OTVlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CkBAIC0xNiwyMSArMTYsMTMgQEAKIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBjbGFzcyA6Y2xhc3M6YEhUTUxQYXJzZXJgIHdoaWNoIHNlcnZlcyBhcyB0aGUgYmFzaXMgZm9yCiBwYXJzaW5nIHRleHQgZmlsZXMgZm9ybWF0dGVkIGluIEhUTUwgKEh5cGVyVGV4dCBNYXJrLXVwIExhbmd1YWdlKSBhbmQgWEhUTUwuCiAKLS4uIGNsYXNzOjogSFRNTFBhcnNlcihzdHJpY3Q9RmFsc2UsICosIGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCisuLiBjbGFzczo6IEhUTUxQYXJzZXIoKiwgY29udmVydF9jaGFycmVmcz1UcnVlKQogCi0gICBDcmVhdGUgYSBwYXJzZXIgaW5zdGFuY2UuCisgICBDcmVhdGUgYSBwYXJzZXIgaW5zdGFuY2UgYWJsZSB0byBwYXJzZSBpbnZhbGlkIG1hcmt1cC4KIAotICAgSWYgKmNvbnZlcnRfY2hhcnJlZnMqIGlzIGBgVHJ1ZWBgIChkZWZhdWx0OiBgYEZhbHNlYGApLCBhbGwgY2hhcmFjdGVyCisgICBJZiAqY29udmVydF9jaGFycmVmcyogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgYWxsIGNoYXJhY3RlcgogICAgcmVmZXJlbmNlcyAoZXhjZXB0IHRoZSBvbmVzIGluIGBgc2NyaXB0YGAvYGBzdHlsZWBgIGVsZW1lbnRzKSBhcmUKICAgIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIFVuaWNvZGUgY2hhcmFjdGVycy4KLSAgIFRoZSB1c2Ugb2YgYGBjb252ZXJ0X2NoYXJyZWZzPVRydWVgYCBpcyBlbmNvdXJhZ2VkIGFuZCB3aWxsIGJlY29tZQotICAgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMuNS4KLQotICAgSWYgKnN0cmljdCogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCksIHRoZSBwYXJzZXIgd2lsbCBhY2NlcHQgYW5kIHBhcnNlCi0gICBpbnZhbGlkIG1hcmt1cC4gIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgIHRoZSBwYXJzZXIgd2lsbCByYWlzZSBhbgotICAgOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb24gaW5zdGVhZCBbI11fIHdoZW4gaXQncyBub3QKLSAgIGFibGUgdG8gcGFyc2UgdGhlIG1hcmt1cC4gIFRoZSB1c2Ugb2YgYGBzdHJpY3Q9VHJ1ZWBgIGlzIGRpc2NvdXJhZ2VkIGFuZAotICAgdGhlICpzdHJpY3QqIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQuCiAKICAgIEFuIDpjbGFzczpgLkhUTUxQYXJzZXJgIGluc3RhbmNlIGlzIGZlZCBIVE1MIGRhdGEgYW5kIGNhbGxzIGhhbmRsZXIgbWV0aG9kcwogICAgd2hlbiBzdGFydCB0YWdzLCBlbmQgdGFncywgdGV4dCwgY29tbWVudHMsIGFuZCBvdGhlciBtYXJrdXAgZWxlbWVudHMgYXJlCkBAIC00MCwzMSArMzIsMTEgQEAKICAgIFRoaXMgcGFyc2VyIGRvZXMgbm90IGNoZWNrIHRoYXQgZW5kIHRhZ3MgbWF0Y2ggc3RhcnQgdGFncyBvciBjYWxsIHRoZSBlbmQtdGFnCiAgICBoYW5kbGVyIGZvciBlbGVtZW50cyB3aGljaCBhcmUgY2xvc2VkIGltcGxpY2l0bHkgYnkgY2xvc2luZyBhbiBvdXRlciBlbGVtZW50LgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgKnN0cmljdCogYXJndW1lbnQgYWRkZWQuCi0KLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjUKLSAgICAgIFRoZSAqc3RyaWN0KiBhcmd1bWVudCBhbmQgdGhlIHN0cmljdCBtb2RlIGhhdmUgYmVlbiBkZXByZWNhdGVkLgotICAgICAgVGhlIHBhcnNlciBpcyBub3cgYWJsZSB0byBhY2NlcHQgYW5kIHBhcnNlIGludmFsaWQgbWFya3VwIHRvby4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgICpjb252ZXJ0X2NoYXJyZWZzKiBrZXl3b3JkIGFyZ3VtZW50IGFkZGVkLgogCi1BbiBleGNlcHRpb24gaXMgZGVmaW5lZCBhcyB3ZWxsOgotCi0KLS4uIGV4Y2VwdGlvbjo6IEhUTUxQYXJzZUVycm9yCi0KLSAgIEV4Y2VwdGlvbiByYWlzZWQgYnkgdGhlIDpjbGFzczpgSFRNTFBhcnNlcmAgY2xhc3Mgd2hlbiBpdCBlbmNvdW50ZXJzIGFuIGVycm9yCi0gICB3aGlsZSBwYXJzaW5nIGFuZCAqc3RyaWN0KiBpcyBgYFRydWVgYC4gIFRoaXMgZXhjZXB0aW9uIHByb3ZpZGVzIHRocmVlCi0gICBhdHRyaWJ1dGVzOiA6YXR0cjpgbXNnYCBpcyBhIGJyaWVmIG1lc3NhZ2UgZXhwbGFpbmluZyB0aGUgZXJyb3IsCi0gICA6YXR0cjpgbGluZW5vYCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBsaW5lIG9uIHdoaWNoIHRoZSBicm9rZW4gY29uc3RydWN0IHdhcwotICAgZGV0ZWN0ZWQsIGFuZCA6YXR0cjpgb2Zmc2V0YCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW50byB0aGUgbGluZSBhdAotICAgd2hpY2ggdGhlIGNvbnN0cnVjdCBzdGFydHMuCi0KLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjUKLSAgICAgIFRoaXMgZXhjZXB0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCdzIG5ldmVyIHJhaXNlZCBieSB0aGUgcGFyc2VyCi0gICAgICAod2hlbiB0aGUgZGVmYXVsdCBub24tc3RyaWN0IG1vZGUgaXMgdXNlZCkuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIGFyZ3VtZW50ICpjb252ZXJ0X2NoYXJyZWZzKiBpcyBub3cgYGBUcnVlYGAuCiAKIAogRXhhbXBsZSBIVE1MIFBhcnNlciBBcHBsaWNhdGlvbgpAQCAtMjQ2LDggKzIxOCw3IEBACiAKICAgIFRoZSAqZGF0YSogcGFyYW1ldGVyIHdpbGwgYmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZGVjbGFyYXRpb24gaW5zaWRlCiAgICB0aGUgYGA8IVsuLi5dPmBgIG1hcmt1cC4gIEl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gYmUgb3ZlcnJpZGRlbiBieSBhCi0gICBkZXJpdmVkIGNsYXNzLiAgVGhlIGJhc2UgY2xhc3MgaW1wbGVtZW50YXRpb24gcmFpc2VzIGFuIDpleGM6YEhUTUxQYXJzZUVycm9yYAotICAgd2hlbiAqc3RyaWN0KiBpcyBgYFRydWVgYC4KKyAgIGRlcml2ZWQgY2xhc3MuICBUaGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdGhpbmcuCiAKIAogLi4gX2h0bWxwYXJzZXItZXhhbXBsZXM6CkBAIC0zNTgsOSArMzI5LDMgQEAKICAgIERhdGEgICAgIDogdGFnIHNvdXAKICAgIEVuZCB0YWcgIDogcAogICAgRW5kIHRhZyAgOiBhCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyAqc3RyaWN0KiBtb2RlIGRvZXMgbm90IHJhaXNlCi0gICAgICAgZXhjZXB0aW9ucyBmb3IgYWxsIG5vbi1jb21wbGlhbnQgSFRNTC4gIFRoYXQgaXMsIHNvbWUgaW52YWxpZCBIVE1MCi0gICAgICAgaXMgdG9sZXJhdGVkIGV2ZW4gaW4gKnN0cmljdCogbW9kZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAppbmRleCA4MDdmNjg1Li5kNTc2NDljIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CkBAIC0xODAsNiArMTgwLDE3IEBACiAgICBpcyByZWNlaXZlZCBpbiB0aGUgSFRUUCBwcm90b2NvbCBmcm9tIHRoZSBzZXJ2ZXIuCiAKIAorLi4gZXhjZXB0aW9uOjogUmVtb3RlRGlzY29ubmVjdGVkCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvblJlc2V0RXJyb3JgIGFuZCA6ZXhjOmBCYWRTdGF0dXNMaW5lYC4gIFJhaXNlZAorICAgYnkgOm1ldGg6YEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlYCB3aGVuIHRoZSBhdHRlbXB0IHRvIHJlYWQgdGhlIHJlc3BvbnNlCisgICByZXN1bHRzIGluIG5vIGRhdGEgcmVhZCBmcm9tIHRoZSBjb25uZWN0aW9uLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHJlbW90ZSBlbmQKKyAgIGhhcyBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgUHJldmlvdXNseSwgOmV4YzpgQmFkU3RhdHVzTGluZWBcIGBgKCcnKWBgIHdhcyByYWlzZWQuCisKKwogVGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGFyZToKIAogLi4gZGF0YTo6IEhUVFBfUE9SVApAQCAtMTkxLDIyMSArMjAyLDE1IEBACiAKICAgIFRoZSBkZWZhdWx0IHBvcnQgZm9yIHRoZSBIVFRQUyBwcm90b2NvbCAoYWx3YXlzIGBgNDQzYGApLgogCi1hbmQgYWxzbyB0aGUgZm9sbG93aW5nIGNvbnN0YW50cyBmb3IgaW50ZWdlciBzdGF0dXMgY29kZXM6Ci0KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBDb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFsdWUgICB8IERlZmluaXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLXwgOmNvbnN0OmBDT05USU5VRWAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMTAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjEuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4xLjE+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFNXSVRDSElOR19QUk9UT0NPTFNgICAgICAgICAgICAgIHwgYGAxMDFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMS4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjEuMj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUFJPQ0VTU0lOR2AgICAgICAgICAgICAgICAgICAgICAgfCBgYDEwMmBgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfMTAyPmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgT0tgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDIwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBDUkVBVEVEYCAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMjAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEFDQ0VQVEVEYCAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMDJgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuMz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT05gICAgfCBgYDIwM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi40PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT19DT05URU5UYCAgICAgICAgICAgICAgICAgICAgICB8IGBgMjA0YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjU+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFU0VUX0NPTlRFTlRgICAgICAgICAgICAgICAgICAgIHwgYGAyMDVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuNj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUEFSVElBTF9DT05URU5UYCAgICAgICAgICAgICAgICAgfCBgYDIwNmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi43PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBNVUxUSV9TVEFUVVNgICAgICAgICAgICAgICAgICAgICB8IGBgMjA3YGAgfCBXRUJEQVYgYFJGQyAyNTE4LCBTZWN0aW9uIDEwLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU18yMDc+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBJTV9VU0VEYCAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMjI2YGAgfCBEZWx0YSBlbmNvZGluZyBpbiBIVFRQLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDMyMjlgLCBTZWN0aW9uIDEwLjQuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBNVUxUSVBMRV9DSE9JQ0VTYCAgICAgICAgICAgICAgICB8IGBgMzAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjE+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1PVkVEX1BFUk1BTkVOVExZYCAgICAgICAgICAgICAgIHwgYGAzMDFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuMj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgRk9VTkRgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDMwMmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy4zPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBTRUVfT1RIRVJgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMzAzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjQ+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PVF9NT0RJRklFRGAgICAgICAgICAgICAgICAgICAgIHwgYGAzMDRgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuNT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVVNFX1BST1hZYCAgICAgICAgICAgICAgICAgICAgICAgfCBgYDMwNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy42PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBURU1QT1JBUllfUkVESVJFQ1RgICAgICAgICAgICAgICB8IGBgMzA3YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjg+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEJBRF9SRVFVRVNUYCAgICAgICAgICAgICAgICAgICAgIHwgYGA0MDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVU5BVVRIT1JJWkVEYCAgICAgICAgICAgICAgICAgICAgfCBgYDQwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQQVlNRU5UX1JFUVVJUkVEYCAgICAgICAgICAgICAgICB8IGBgNDAyYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjM+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEZPUkJJRERFTmAgICAgICAgICAgICAgICAgICAgICAgIHwgYGA0MDNgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuND5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX0ZPVU5EYCAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwNGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC41PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBNRVRIT0RfTk9UX0FMTE9XRURgICAgICAgICAgICAgICB8IGBgNDA1YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjY+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PVF9BQ0NFUFRBQkxFYCAgICAgICAgICAgICAgICAgIHwgYGA0MDZgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC43ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuNz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgICAgfCBgYDQwN2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC44PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNUX1RJTUVPVVRgICAgICAgICAgICAgICAgICB8IGBgNDA4YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40Ljk+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YENPTkZMSUNUYCAgICAgICAgICAgICAgICAgICAgICAgIHwgYGA0MDlgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTA+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgR09ORWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQxMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xMT5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBMRU5HVEhfUkVRVUlSRURgICAgICAgICAgICAgICAgICB8IGBgNDExYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjEyPmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBSRUNPTkRJVElPTl9GQUlMRURgICAgICAgICAgICAgIHwgYGA0MTJgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTM+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVRVUVTVF9FTlRJVFlfVE9PX0xBUkdFYCAgICAgICAgfCBgYDQxM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xND5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNUX1VSSV9UT09fTE9OR2AgICAgICAgICAgICB8IGBgNDE0YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE1PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFVOU1VQUE9SVEVEX01FRElBX1RZUEVgICAgICAgICAgIHwgYGA0MTVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTY+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRWAgfCBgYDQxNmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjE3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xNz5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBFWFBFQ1RBVElPTl9GQUlMRURgICAgICAgICAgICAgICB8IGBgNDE3YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE4PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFVOUFJPQ0VTU0FCTEVfRU5USVRZYCAgICAgICAgICAgIHwgYGA0MjJgYCB8IFdFQkRBViwgYFJGQyAyNTE4LCBTZWN0aW9uIDEwLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzQyMj5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YExPQ0tFRGAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGA0MjNgYCB8IFdFQkRBViBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzQyMz5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEZBSUxFRF9ERVBFTkRFTkNZYCAgICAgICAgICAgICAgIHwgYGA0MjRgYCB8IFdFQkRBViwgYFJGQyAyNTE4LCBTZWN0aW9uIDEwLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzQyND5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFVQR1JBREVfUkVRVUlSRURgICAgICAgICAgICAgICAgIHwgYGA0MjZgYCB8IEhUVFAgVXBncmFkZSB0byBUTFMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMjgxN2AsIFNlY3Rpb24gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBSRUNPTkRJVElPTl9SRVFVSVJFRGAgICAgICAgICAgIHwgYGA0MjhgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFRPT19NQU5ZX1JFUVVFU1RTYCAgICAgICAgICAgICAgIHwgYGA0MjlgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VgIHwgYGA0MzFgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YElOVEVSTkFMX1NFUlZFUl9FUlJPUmAgICAgICAgICAgIHwgYGA1MDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX0lNUExFTUVOVEVEYCAgICAgICAgICAgICAgICAgfCBgYDUwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBCQURfR0FURVdBWWAgICAgICAgICAgICAgICAgICAgICB8IGBgNTAyYGAgfCBIVFRQLzEuMSBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjM+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFNFUlZJQ0VfVU5BVkFJTEFCTEVgICAgICAgICAgICAgIHwgYGA1MDNgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuND5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgR0FURVdBWV9USU1FT1VUYCAgICAgICAgICAgICAgICAgfCBgYDUwNGBgIHwgSFRUUC8xLjEgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS41PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRGAgICAgICB8IGBgNTA1YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjY+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YElOU1VGRklDSUVOVF9TVE9SQUdFYCAgICAgICAgICAgIHwgYGA1MDdgYCB8IFdFQkRBViwgYFJGQyAyNTE4LCBTZWN0aW9uIDEwLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzUwNz5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PVF9FWFRFTkRFRGAgICAgICAgICAgICAgICAgICAgIHwgYGA1MTBgYCB8IEFuIEhUVFAgRXh0ZW5zaW9uIEZyYW1ld29yaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMjc3NGAsIFNlY3Rpb24gNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgIHwgYGA1MTFgYCB8IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgNjU4NWAsIFNlY3Rpb24gNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgQWRkZWQgY29kZXMgYGA0MjhgYCwgYGA0MjlgYCwgYGA0MzFgYCBhbmQgYGA1MTFgYCBmcm9tIDpyZmM6YDY1ODVgLgotCi0KIC4uIGRhdGE6OiByZXNwb25zZXMKIAogICAgVGhpcyBkaWN0aW9uYXJ5IG1hcHMgdGhlIEhUVFAgMS4xIHN0YXR1cyBjb2RlcyB0byB0aGUgVzNDIG5hbWVzLgogCiAgICBFeGFtcGxlOiBgYGh0dHAuY2xpZW50LnJlc3BvbnNlc1todHRwLmNsaWVudC5OT1RfRk9VTkRdYGAgaXMgYGAnTm90IEZvdW5kJ2BgLgogCitTZWUgOnJlZjpgaHR0cC1zdGF0dXMtY29kZXNgIGZvciBhIGxpc3Qgb2YgSFRUUCBzdGF0dXMgY29kZXMgdGhhdCBhcmUKK2F2YWlsYWJsZSBpbiB0aGlzIG1vZHVsZSBhcyBjb25zdGFudHMuCisKIAogLi4gX2h0dHBjb25uZWN0aW9uLW9iamVjdHM6CiAKQEAgLTQ1OCw2ICsyNjMsMTEgQEAKICAgICAgIE5vdGUgdGhhdCB5b3UgbXVzdCBoYXZlIHJlYWQgdGhlIHdob2xlIHJlc3BvbnNlIGJlZm9yZSB5b3UgY2FuIHNlbmQgYSBuZXcKICAgICAgIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIGEgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCBvciBzdWJjbGFzcyBpcyByYWlzZWQsIHRoZQorICAgICAgOmNsYXNzOmBIVFRQQ29ubmVjdGlvbmAgb2JqZWN0IHdpbGwgYmUgcmVhZHkgdG8gcmVjb25uZWN0IHdoZW4KKyAgICAgIGEgbmV3IHJlcXVlc3QgaXMgc2VudC4KKwogCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5zZXRfZGVidWdsZXZlbChsZXZlbCkKIApAQCAtNDk2LDcgKzMwNiw5IEBACiAKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmNvbm5lY3QoKQogCi0gICBDb25uZWN0IHRvIHRoZSBzZXJ2ZXIgc3BlY2lmaWVkIHdoZW4gdGhlIG9iamVjdCB3YXMgY3JlYXRlZC4KKyAgIENvbm5lY3QgdG8gdGhlIHNlcnZlciBzcGVjaWZpZWQgd2hlbiB0aGUgb2JqZWN0IHdhcyBjcmVhdGVkLiAgQnkgZGVmYXVsdCwKKyAgIHRoaXMgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBtYWtpbmcgYSByZXF1ZXN0IGlmIHRoZSBjbGllbnQgZG9lcyBub3QKKyAgIGFscmVhZHkgaGF2ZSBhIGNvbm5lY3Rpb24uCiAKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uY2xvc2UoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKaW5kZXggNjQ2ZjJlOC4uN2M4NWQwOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CkBAIC0xNDMsMjYgKzE0Myw0MyBAQAogCiAgICBUaGUga2V5cyBhcmUgY2FzZS1pbnNlbnNpdGl2ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDptZXRoOmB+TW9yc2VsLl9fZXFfX2Agbm93IHRha2VzIDphdHRyOmB+TW9yc2VsLmtleWAgYW5kIDphdHRyOmB+TW9yc2VsLnZhbHVlYAorICAgICAgaW50byBhY2NvdW50LgorCiAKIC4uIGF0dHJpYnV0ZTo6IE1vcnNlbC52YWx1ZQogCiAgICBUaGUgdmFsdWUgb2YgdGhlIGNvb2tpZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgYXNzaWduaW5nIHRvIGBgdmFsdWVgYDsgdXNlIDptZXRoOmB+TW9yc2VsLnNldGAgaW5zdGVhZC4KKwogCiAuLiBhdHRyaWJ1dGU6OiBNb3JzZWwuY29kZWRfdmFsdWUKIAogICAgVGhlIGVuY29kZWQgdmFsdWUgb2YgdGhlIGNvb2tpZSAtLS0gdGhpcyBpcyB3aGF0IHNob3VsZCBiZSBzZW50LgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBhc3NpZ25pbmcgdG8gYGBjb2RlZF92YWx1ZWBgOyB1c2UgOm1ldGg6YH5Nb3JzZWwuc2V0YCBpbnN0ZWFkLgorCiAKIC4uIGF0dHJpYnV0ZTo6IE1vcnNlbC5rZXkKIAogICAgVGhlIG5hbWUgb2YgdGhlIGNvb2tpZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgYXNzaWduaW5nIHRvIGBga2V5YGA7IHVzZSA6bWV0aDpgfk1vcnNlbC5zZXRgIGluc3RlYWQuCisKIAogLi4gbWV0aG9kOjogTW9yc2VsLnNldChrZXksIHZhbHVlLCBjb2RlZF92YWx1ZSkKIAogICAgU2V0IHRoZSAqa2V5KiwgKnZhbHVlKiBhbmQgKmNvZGVkX3ZhbHVlKiBhdHRyaWJ1dGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBUaGUgdW5kb2N1bWVudGVkICpMZWdhbENoYXJzKiBwYXJhbWV0ZXIgaXMgaWdub3JlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluCisgICAgICBhIGZ1dHVyZSB2ZXJzaW9uLgorCiAKIC4uIG1ldGhvZDo6IE1vcnNlbC5pc1Jlc2VydmVkS2V5KEspCiAKQEAgLTE5Myw2ICsyMTAsMzAgQEAKICAgIFRoZSBtZWFuaW5nIGZvciAqYXR0cnMqIGlzIHRoZSBzYW1lIGFzIGluIDptZXRoOmBvdXRwdXRgLgogCiAKKy4uIG1ldGhvZDo6IE1vcnNlbC51cGRhdGUodmFsdWVzKQorCisgICBVcGRhdGUgdGhlIHZhbHVlcyBpbiB0aGUgTW9yc2VsIGRpY3Rpb25hcnkgd2l0aCB0aGUgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5CisgICAqdmFsdWVzKi4gIFJhaXNlIGFuIGVycm9yIGlmIGFueSBvZiB0aGUga2V5cyBpbiB0aGUgKnZhbHVlcyogZGljdCBpcyBub3QgYQorICAgdmFsaWQgOnJmYzpgMjEwOWAgYXR0cmlidXRlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgYW4gZXJyb3IgaXMgcmFpc2VkIGZvciBpbnZhbGlkIGtleXMuCisKKworLi4gbWV0aG9kOjogTW9yc2VsLmNvcHkodmFsdWUpCisKKyAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgTW9yc2VsIG9iamVjdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIHJldHVybiBhIE1vcnNlbCBvYmplY3QgaW5zdGVhZCBvZiBhIGRpY3QuCisKKworLi4gbWV0aG9kOjogTW9yc2VsLnNldGRlZmF1bHQoa2V5LCB2YWx1ZT1Ob25lKQorCisgICBSYWlzZSBhbiBlcnJvciBpZiBrZXkgaXMgbm90IGEgdmFsaWQgOnJmYzpgMjEwOWAgYXR0cmlidXRlLCBvdGhlcndpc2UKKyAgIGJlaGF2ZSB0aGUgc2FtZSBhcyA6bWV0aDpgZGljdC5zZXRkZWZhdWx0YC4KKworCiAuLiBfY29va2llLWV4YW1wbGU6CiAKIEV4YW1wbGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5yc3QKaW5kZXggYTM4N2EzNy4uYjZmMmM1OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5yc3QKQEAgLTEsNyArMSwxNiBAQAogOm1vZDpgaHR0cGAgLS0tIEhUVFAgbW9kdWxlcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1gYGh0dHBgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCB0aGUKKy4uIG1vZHVsZTo6IGh0dHAKKyAgIDpzeW5vcHNpczogSFRUUCBzdGF0dXMgY29kZXMgYW5kIG1lc3NhZ2VzCisKKy4uIGluZGV4OjoKKyAgIHBhaXI6IEhUVFA7IHByb3RvY29sCisgICBzaW5nbGU6IEhUVFA7IGh0dHAgKHN0YW5kYXJkIG1vZHVsZSkKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvaHR0cC9fX2luaXRfXy5weWAKKworOm1vZDpgaHR0cGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2V2ZXJhbCBtb2R1bGVzIGZvciB3b3JraW5nIHdpdGggdGhlCiBIeXBlclRleHQgVHJhbnNmZXIgUHJvdG9jb2w6CiAKICogOm1vZDpgaHR0cC5jbGllbnRgIGlzIGEgbG93LWxldmVsIEhUVFAgcHJvdG9jb2wgY2xpZW50OyBmb3IgaGlnaC1sZXZlbCBVUkwKQEAgLTksMyArMTgsMTA1IEBACiAqIDptb2Q6YGh0dHAuc2VydmVyYCBjb250YWlucyBiYXNpYyBIVFRQIHNlcnZlciBjbGFzc2VzIGJhc2VkIG9uIDptb2Q6YHNvY2tldHNlcnZlcmAKICogOm1vZDpgaHR0cC5jb29raWVzYCBoYXMgdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgc3RhdGUgbWFuYWdlbWVudCB3aXRoIGNvb2tpZXMKICogOm1vZDpgaHR0cC5jb29raWVqYXJgIHByb3ZpZGVzIHBlcnNpc3RlbmNlIG9mIGNvb2tpZXMKKworOm1vZDpgaHR0cGAgaXMgYWxzbyBhIG1vZHVsZSB0aGF0IGRlZmluZXMgYSBudW1iZXIgb2YgSFRUUCBzdGF0dXMgY29kZXMgYW5kCithc3NvY2lhdGVkIG1lc3NhZ2VzIHRocm91Z2ggdGhlIDpjbGFzczpgaHR0cC5IVFRQU3RhdHVzYCBlbnVtOgorCisuLiBjbGFzczo6IEhUVFBTdGF0dXMKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKyAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBlbnVtLkludEVudW1gIHRoYXQgZGVmaW5lcyBhIHNldCBvZiBIVFRQIHN0YXR1cyBjb2RlcywKKyAgIHJlYXNvbiBwaHJhc2VzIGFuZCBsb25nIGRlc2NyaXB0aW9ucyB3cml0dGVuIGluIEVuZ2xpc2guCisKKyAgIFVzYWdlOjoKKworICAgICAgPj4+IGZyb20gaHR0cCBpbXBvcnQgSFRUUFN0YXR1cworICAgICAgPj4+IEhUVFBTdGF0dXMuT0sKKyAgICAgIDxIVFRQU3RhdHVzLk9LOiAyMDA+CisgICAgICA+Pj4gSFRUUFN0YXR1cy5PSyA9PSAyMDAKKyAgICAgIFRydWUKKyAgICAgID4+PiBodHRwLkhUVFBTdGF0dXMuT0sudmFsdWUKKyAgICAgIDIwMAorICAgICAgPj4+IEhUVFBTdGF0dXMuT0sucGhyYXNlCisgICAgICAnT0snCisgICAgICA+Pj4gSFRUUFN0YXR1cy5PSy5kZXNjcmlwdGlvbgorICAgICAgJ1JlcXVlc3QgZnVsZmlsbGVkLCBkb2N1bWVudCBmb2xsb3dzJworICAgICAgPj4+IGxpc3QoSFRUUFN0YXR1cykKKyAgICAgIFs8SFRUUFN0YXR1cy5DT05USU5VRTogMTAwPiwgPEhUVFBTdGF0dXMuU1dJVENISU5HX1BST1RPQ09MUzogMTAxPiwgLi4uXQorCisuLiBfaHR0cC1zdGF0dXMtY29kZXM6CisKK0hUVFAgc3RhdHVzIGNvZGVzCistLS0tLS0tLS0tLS0tLS0tLQorCitTdXBwb3J0ZWQsCitgSUFOQS1yZWdpc3RlcmVkIDxodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2h0dHAtc3RhdHVzLWNvZGVzL2h0dHAtc3RhdHVzLWNvZGVzLnhodG1sPmBfCitzdGF0dXMgY29kZXMgYXZhaWxhYmxlIGluIDpjbGFzczpgaHR0cC5IVFRQU3RhdHVzYCBhcmU6CisKKz09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDb2RlICAgIEVudW0gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgIERldGFpbHMKKz09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitgYDEwMGBgIGBgQ09OVElOVUVgYCAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMi4xCitgYDEwMWBgIGBgU1dJVENISU5HX1BST1RPQ09MU2BgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMi4yCitgYDEwMmBgIGBgUFJPQ0VTU0lOR2BgICAgICAgICAgICAgICAgICAgICAgIFdlYkRBViA6cmZjOmAyNTE4YCwgU2VjdGlvbiAxMC4xCitgYDIwMGBgIGBgT0tgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMy4xCitgYDIwMWBgIGBgQ1JFQVRFRGBgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMy4yCitgYDIwMmBgIGBgQUNDRVBURURgYCAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMy4zCitgYDIwM2BgIGBgTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT05gYCAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMy40CitgYDIwNGBgIGBgTk9fQ09OVEVOVGBgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMy41CitgYDIwNWBgIGBgUkVTRVRfQ09OVEVOVGBgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuMy42CitgYDIwNmBgIGBgUEFSVElBTF9DT05URU5UYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzNgLCBTZWN0aW9uIDQuMQorYGAyMDdgYCBgYE1VTFRJX1NUQVRVU2BgICAgICAgICAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuMQorYGAyMDhgYCBgYEFMUkVBRFlfUkVQT1JURURgYCAgICAgICAgICAgICAgICBXZWJEQVYgQmluZGluZyBFeHRlbnNpb25zIDpyZmM6YDU4NDJgLCBTZWN0aW9uIDcuMSAoRXhwZXJpbWVudGFsKQorYGAyMjZgYCBgYElNX1VTRURgYCAgICAgICAgICAgICAgICAgICAgICAgICBEZWx0YSBFbmNvZGluZyBpbiBIVFRQIDpyZmM6YDMyMjlgLCBTZWN0aW9uIDEwLjQuMQorYGAzMDBgYCBgYE1VTFRJUExFX0NIT0lDRVNgYCAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuMQorYGAzMDFgYCBgYE1PVkVEX1BFUk1BTkVOVExZYGAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuMgorYGAzMDJgYCBgYEZPVU5EYGAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuMworYGAzMDNgYCBgYFNFRV9PVEhFUmBgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuNAorYGAzMDRgYCBgYE5PVF9NT0RJRklFRGBgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMyYCwgU2VjdGlvbiA0LjEKK2BgMzA1YGAgYGBVU0VfUFJPWFlgYCAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi40LjUKK2BgMzA3YGAgYGBURU1QT1JBUllfUkVESVJFQ1RgYCAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi40LjcKK2BgMzA4YGAgYGBQRVJNQU5FTlRfUkVESVJFQ1RgYCAgICAgICAgICAgICAgUGVybWFuZW50IFJlZGlyZWN0IDpyZmM6YDcyMzhgLCBTZWN0aW9uIDMgKEV4cGVyaW1lbnRhbCkKK2BgNDAwYGAgYGBCQURfUkVRVUVTVGBgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjEKK2BgNDAxYGAgYGBVTkFVVEhPUklaRURgYCAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgQXV0aGVudGljYXRpb24gOnJmYzpgNzIzNWAsIFNlY3Rpb24gMy4xCitgYDQwMmBgIGBgUEFZTUVOVF9SRVFVSVJFRGBgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4yCitgYDQwM2BgIGBgRk9SQklEREVOYGAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4zCitgYDQwNGBgIGBgTk9UX0ZPVU5EYGAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS40CitgYDQwNWBgIGBgTUVUSE9EX05PVF9BTExPV0VEYGAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS41CitgYDQwNmBgIGBgTk9UX0FDQ0VQVEFCTEVgYCAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS42CitgYDQwN2BgIGBgUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgYCAgIEhUVFAvMS4xIEF1dGhlbnRpY2F0aW9uIDpyZmM6YDcyMzVgLCBTZWN0aW9uIDMuMgorYGA0MDhgYCBgYFJFUVVFU1RfVElNRU9VVGBgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuNworYGA0MDlgYCBgYENPTkZMSUNUYGAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuOAorYGA0MTBgYCBgYEdPTkVgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuOQorYGA0MTFgYCBgYExFTkdUSF9SRVFVSVJFRGBgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTAKK2BgNDEyYGAgYGBQUkVDT05ESVRJT05fRkFJTEVEYGAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMmAsIFNlY3Rpb24gNC4yCitgYDQxM2BgIGBgUkVRVUVTVF9FTlRJVFlfVE9PX0xBUkdFYGAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xMQorYGA0MTRgYCBgYFJFUVVFU1RfVVJJX1RPT19MT05HYGAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTIKK2BgNDE1YGAgYGBVTlNVUFBPUlRFRF9NRURJQV9UWVBFYGAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjEzCitgYDQxNmBgIGBgUkVRVUVTVF9SQU5HRV9OT1RfU0FUSVNGSUFCTEVgYCAgIEhUVFAvMS4xIFJhbmdlIFJlcXVlc3RzIDpyZmM6YDcyMzNgLCBTZWN0aW9uIDQuNAorYGA0MTdgYCBgYEVYUEVDVEFUSU9OX0ZBSUxFRGBgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTQKK2BgNDIyYGAgYGBVTlBST0NFU1NBQkxFX0VOVElUWWBgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDQ5MThgLCBTZWN0aW9uIDExLjIKK2BgNDIzYGAgYGBMT0NLRURgYCAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDQ5MThgLCBTZWN0aW9uIDExLjMKK2BgNDI0YGAgYGBGQUlMRURfREVQRU5ERU5DWWBgICAgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDQ5MThgLCBTZWN0aW9uIDExLjQKK2BgNDI2YGAgYGBVUEdSQURFX1JFUVVJUkVEYGAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjE1CitgYDQyOGBgIGBgUFJFQ09ORElUSU9OX1JFUVVJUkVEYGAgICAgICAgICAgIEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMgOnJmYzpgNjU4NWAKK2BgNDI5YGAgYGBUT09fTUFOWV9SRVFVRVNUU2BgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcyA6cmZjOmA2NTg1YAorYGA0MzFgYCBgYFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VgYCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzIDpyZmM6YDY1ODVgCitgYDUwMGBgIGBgSU5URVJOQUxfU0VSVkVSX0VSUk9SYGAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNi4xCitgYDUwMWBgIGBgTk9UX0lNUExFTUVOVEVEYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNi4yCitgYDUwMmBgIGBgQkFEX0dBVEVXQVlgYCAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNi4zCitgYDUwM2BgIGBgU0VSVklDRV9VTkFWQUlMQUJMRWBgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNi40CitgYDUwNGBgIGBgR0FURVdBWV9USU1FT1VUYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNi41CitgYDUwNWBgIGBgSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURURgYCAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNi42CitgYDUwNmBgIGBgVkFSSUFOVF9BTFNPX05FR09USUFURVNgYCAgICAgICAgIFRyYW5zcGFyZW50IENvbnRlbnQgTmVnb3RpYXRpb24gaW4gSFRUUCA6cmZjOmAyMjk1YCwgU2VjdGlvbiA4LjEgKEV4cGVyaW1lbnRhbCkKK2BgNTA3YGAgYGBJTlNVRkZJQ0lFTlRfU1RPUkFHRWBgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDQ5MThgLCBTZWN0aW9uIDExLjUKK2BgNTA4YGAgYGBMT09QX0RFVEVDVEVEYGAgICAgICAgICAgICAgICAgICAgV2ViREFWIEJpbmRpbmcgRXh0ZW5zaW9ucyA6cmZjOmA1ODQyYCwgU2VjdGlvbiA3LjIgKEV4cGVyaW1lbnRhbCkKK2BgNTEwYGAgYGBOT1RfRVhURU5ERURgYCAgICAgICAgICAgICAgICAgICAgQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrIDpyZmM6YDI3NzRgLCBTZWN0aW9uIDcgKEV4cGVyaW1lbnRhbCkKK2BgNTExYGAgYGBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYGAgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcyA6cmZjOmA2NTg1YCwgU2VjdGlvbiA2Cis9PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBvcmRlciB0byBwcmVzZXJ2ZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgZW51bSB2YWx1ZXMgYXJlIGFsc28gcHJlc2VudAoraW4gdGhlIDptb2Q6YGh0dHAuY2xpZW50YCBtb2R1bGUgaW4gdGhlIGZvcm0gb2YgY29uc3RhbnRzLiBUaGUgZW51bSBuYW1lIGlzCitlcXVhbCB0byB0aGUgY29uc3RhbnQgbmFtZSAoaS5lLiBgYGh0dHAuSFRUUFN0YXR1cy5PS2BgIGlzIGFsc28gYXZhaWxhYmxlIGFzCitgYGh0dHAuY2xpZW50Lk9LYGApLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCBmYTczNmZlLi4xNWIwOTMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtMzcsNiArMzcsMTkgQEAKICAgIGluaXRpYWxpemVkLiBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgYGAnJ2BgICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4gSWYKICAgICpwb3J0KiBpcyBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgSU1BUDQgcG9ydCAoMTQzKSBpcyB1c2VkLgogCisgICBUaGUgOmNsYXNzOmBJTUFQNGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBXaGVuIHVzZWQKKyAgIGxpa2UgdGhpcywgdGhlIElNQVA0IGBgTE9HT1VUYGAgY29tbWFuZCBpcyBpc3N1ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZQorICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBleGl0cy4gIEUuZy46OgorCisgICAgPj4+IGZyb20gaW1hcGxpYiBpbXBvcnQgSU1BUDQKKyAgICA+Pj4gd2l0aCBJTUFQNCgiZG9tYWluLm9yZyIpIGFzIE06CisgICAgLi4uICAgICBNLm5vb3AoKQorICAgIC4uLgorICAgICgnT0snLCBbYidOb3RoaW5nIEFjY29tcGxpc2hlZC4gZDI1aWY2NWh5OTAzd2VvLjg3J10pCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBTdXBwb3J0IGZvciB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCB3YXMgYWRkZWQuCisKIFRocmVlIGV4Y2VwdGlvbnMgYXJlIGRlZmluZWQgYXMgYXR0cmlidXRlcyBvZiB0aGUgOmNsYXNzOmBJTUFQNGAgY2xhc3M6CiAKIApAQCAtNjQsNyArNzcsOCBAQAogVGhlcmUncyBhbHNvIGEgc3ViY2xhc3MgZm9yIHNlY3VyZSBjb25uZWN0aW9uczoKIAogCi0uLiBjbGFzczo6IElNQVA0X1NTTChob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpCisuLiBjbGFzczo6IElNQVA0X1NTTChob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpCiAKICAgIFRoaXMgaXMgYSBzdWJjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBJTUFQNGAgdGhhdCBjb25uZWN0cyBvdmVyIGFuIFNTTAogICAgZW5jcnlwdGVkIHNvY2tldCAodG8gdXNlIHRoaXMgY2xhc3MgeW91IG5lZWQgYSBzb2NrZXQgbW9kdWxlIHRoYXQgd2FzIGNvbXBpbGVkCkBAIC0xOTgsNiArMjEyLDEwIEBACiAgICB0aGF0IHdpbGwgYmUgYmFzZTY0IGVuY29kZWQgYW5kIHNlbnQgdG8gdGhlIHNlcnZlci4gIEl0IHNob3VsZCByZXR1cm4KICAgIGBgTm9uZWBgIGlmIHRoZSBjbGllbnQgYWJvcnQgcmVzcG9uc2UgYGAqYGAgc2hvdWxkIGJlIHNlbnQgaW5zdGVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIHN0cmluZyB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyBhcmUgbm93IGVuY29kZWQgdG8gYGB1dGYtOGBgIGluc3RlYWQgb2YKKyAgICAgIGJlaW5nIGxpbWl0ZWQgdG8gQVNDSUkuCisKIAogLi4gbWV0aG9kOjogSU1BUDQuY2hlY2soKQogCkBAIC0yMzAsNiArMjQ4LDE2IEBACiAgICBEZWxldGUgdGhlIEFDTHMgKHJlbW92ZSBhbnkgcmlnaHRzKSBzZXQgZm9yIHdobyBvbiBtYWlsYm94LgogCiAKKy4uIG1ldGhvZDo6IElNQVA0LmVuYWJsZShjYXBhYmlsaXR5KQorCisgICBFbmFibGUgKmNhcGFiaWxpdHkqIChzZWUgOnJmYzpgNTE2MWApLiAgTW9zdCBjYXBhYmlsaXRpZXMgZG8gbm90IG5lZWQgdG8gYmUKKyAgIGVuYWJsZWQuICBDdXJyZW50bHkgb25seSB0aGUgYGBVVEY4PUFDQ0VQVGBgIGNhcGFiaWxpdHkgaXMgc3VwcG9ydGVkCisgICAoc2VlIDpSRkM6YDY4NTVgKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBUaGUgOm1ldGg6YGVuYWJsZWAgbWV0aG9kIGl0c2VsZiwgYW5kIDpSRkM6YDY4NTVgIHN1cHBvcnQuCisKKwogLi4gbWV0aG9kOjogSU1BUDQuZXhwdW5nZSgpCiAKICAgIFBlcm1hbmVudGx5IHJlbW92ZSBkZWxldGVkIGl0ZW1zIGZyb20gc2VsZWN0ZWQgbWFpbGJveC4gR2VuZXJhdGVzIGFuIGBgRVhQVU5HRWBgCkBAIC0zNjcsNyArMzk1LDkgQEAKICAgIFNlYXJjaCBtYWlsYm94IGZvciBtYXRjaGluZyBtZXNzYWdlcy4gICpjaGFyc2V0KiBtYXkgYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKICAgIG5vIGBgQ0hBUlNFVGBgIHdpbGwgYmUgc3BlY2lmaWVkIGluIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuICBUaGUgSU1BUAogICAgcHJvdG9jb2wgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgY3JpdGVyaW9uIGJlIHNwZWNpZmllZDsgYW4gZXhjZXB0aW9uIHdpbGwgYmUKLSAgIHJhaXNlZCB3aGVuIHRoZSBzZXJ2ZXIgcmV0dXJucyBhbiBlcnJvci4KKyAgIHJhaXNlZCB3aGVuIHRoZSBzZXJ2ZXIgcmV0dXJucyBhbiBlcnJvci4gICpjaGFyc2V0KiBtdXN0IGJlIGBgTm9uZWBgIGlmCisgICB0aGUgYGBVVEY4PUFDQ0VQVGBgIGNhcGFiaWxpdHkgd2FzIGVuYWJsZWQgdXNpbmcgdGhlIDptZXRoOmBlbmFibGVgCisgICBjb21tYW5kLgogCiAgICBFeGFtcGxlOjoKIApAQCAtNTI5LDYgKzU1OSwxNSBAQAogICAgdGhlIG1vZHVsZSB2YXJpYWJsZSBgYERlYnVnYGAuICBWYWx1ZXMgZ3JlYXRlciB0aGFuIHRocmVlIHRyYWNlIGVhY2ggY29tbWFuZC4KIAogCisuLiBhdHRyaWJ1dGU6OiBJTUFQNC51dGY4X2VuYWJsZWQKKworICAgQm9vbGVhbiB2YWx1ZSB0aGF0IGlzIG5vcm1hbGx5IGBgRmFsc2VgYCwgYnV0IGlzIHNldCB0byBgYFRydWVgYCBpZiBhbgorICAgOm1ldGg6YGVuYWJsZWAgY29tbWFuZCBpcyBzdWNjZXNzZnVsbHkgaXNzdWVkIGZvciB0aGUgYGBVVEY4PUFDQ0VQVGBgCisgICBjYXBhYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBfaW1hcDQtZXhhbXBsZToKIAogSU1BUDQgRXhhbXBsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdCBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKaW5kZXggOWU4OTUyMy4uZjExZjZkYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CkBAIC00OCw2ICs0OCwxNCBAQAogKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGAncG5nJ2BgICB8IFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgICAgICAgICB8CiArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCd3ZWJwJ2BgIHwgV2ViUCBmaWxlcyAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJ2V4cidgYCAgfCBPcGVuRVhSIEZpbGVzICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICBUaGUgKmV4ciogYW5kICp3ZWJwKiBmb3JtYXRzIHdlcmUgYWRkZWQuCisKIAogWW91IGNhbiBleHRlbmQgdGhlIGxpc3Qgb2YgZmlsZSB0eXBlcyA6bW9kOmBpbWdoZHJgIGNhbiByZWNvZ25pemUgYnkgYXBwZW5kaW5nCiB0byB0aGlzIHZhcmlhYmxlOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggODNhNTJlNC4uNjhhNmI2OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC0xOTcsMTEgKzE5Nyw5IEBACiAgICB2YWx1ZSB3b3VsZCBiZSBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIGZvciBQeXRob24gMy4yLgogICAgVGhlIGBgY3B5dGhvbi0zMmBgIHN0cmluZyBjb21lcyBmcm9tIHRoZSBjdXJyZW50IG1hZ2ljIHRhZyAoc2VlCiAgICA6ZnVuYzpgZ2V0X3RhZ2A7IGlmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCB0aGVuCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbgotICAgYGAucHljYGAgd2hlbiBgYF9fZGVidWdfX2BgIGlzIGBgVHJ1ZWBgIG9yIGBgLnB5b2BgIGZvciBhbiBvcHRpbWl6ZWQgUHl0aG9uCi0gICAoaS5lLiBgYF9fZGVidWdfX2BgIGlzIGBgRmFsc2VgYCkuICBCeSBwYXNzaW5nIGluIGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYCBmb3IKLSAgICpkZWJ1Z19vdmVycmlkZSogeW91IGNhbiBvdmVycmlkZSB0aGUgc3lzdGVtJ3MgdmFsdWUgZm9yIGBgX19kZWJ1Z19fYGAgZm9yCi0gICBleHRlbnNpb24gc2VsZWN0aW9uLgorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiBCeSBwYXNzaW5nIGluIGBgVHJ1ZWBgIG9yCisgICBgYEZhbHNlYGAgZm9yICpkZWJ1Z19vdmVycmlkZSogeW91IGNhbiBvdmVycmlkZSB0aGUgc3lzdGVtJ3MgdmFsdWUgZm9yCisgICBgYF9fZGVidWdfX2BgLCBsZWFkaW5nIHRvIG9wdGltaXplZCBieXRlY29kZS4KIAogICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgogCkBAIC0yMTIsNiArMjEwLDkgQEAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKICAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2VgIGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmRlYnVnX292ZXJyaWRlKiBwYXJhbWV0ZXIgbm8gbG9uZ2VyIGNyZWF0ZXMgYSBgYC5weW9gYCBmaWxlLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggYzg0ZDJkZi4uNjMyZGY3NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC01NSw2ICs1NSwxMiBAQAogICAgIDpwZXA6YDQ1MWAKICAgICAgICAgQSBNb2R1bGVTcGVjIFR5cGUgZm9yIHRoZSBJbXBvcnQgU3lzdGVtCiAKKyAgICA6cGVwOmA0ODhgCisgICAgICAgIEVsaW1pbmF0aW9uIG9mIFBZTyBmaWxlcworCisgICAgOnBlcDpgNDg5YAorICAgICAgICBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uCisKICAgICA6cGVwOmAzMTIwYAogICAgICAgICBVc2luZyBVVEYtOCBhcyB0aGUgRGVmYXVsdCBTb3VyY2UgRW5jb2RpbmcKIApAQCAtNjksNiArNzUsMTAgQEAKIAogICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBidWlsdC1pbiA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24uCiAKKyAgICAuLiBub3RlOjoKKyAgICAgICBQcm9ncmFtbWF0aWMgaW1wb3J0aW5nIG9mIG1vZHVsZXMgc2hvdWxkIHVzZSA6ZnVuYzpgaW1wb3J0X21vZHVsZWAKKyAgICAgICBpbnN0ZWFkIG9mIHRoaXMgZnVuY3Rpb24uCisKIC4uIGZ1bmN0aW9uOjogaW1wb3J0X21vZHVsZShuYW1lLCBwYWNrYWdlPU5vbmUpCiAKICAgICBJbXBvcnQgYSBtb2R1bGUuIFRoZSAqbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIHdoYXQgbW9kdWxlIHRvCkBAIC04MSwxMiArOTEsMTUgQEAKIAogICAgIFRoZSA6ZnVuYzpgaW1wb3J0X21vZHVsZWAgZnVuY3Rpb24gYWN0cyBhcyBhIHNpbXBsaWZ5aW5nIHdyYXBwZXIgYXJvdW5kCiAgICAgOmZ1bmM6YGltcG9ydGxpYi5fX2ltcG9ydF9fYC4gVGhpcyBtZWFucyBhbGwgc2VtYW50aWNzIG9mIHRoZSBmdW5jdGlvbiBhcmUKLSAgICBkZXJpdmVkIGZyb20gOmZ1bmM6YGltcG9ydGxpYi5fX2ltcG9ydF9fYCwgaW5jbHVkaW5nIHJlcXVpcmluZyB0aGUgcGFja2FnZQotICAgIGZyb20gd2hpY2ggYW4gaW1wb3J0IGlzIG9jY3VycmluZyB0byBoYXZlIGJlZW4gcHJldmlvdXNseSBpbXBvcnRlZAotICAgIChpLmUuLCAqcGFja2FnZSogbXVzdCBhbHJlYWR5IGJlIGltcG9ydGVkKS4gVGhlIG1vc3QgaW1wb3J0YW50IGRpZmZlcmVuY2UKLSAgICBpcyB0aGF0IDpmdW5jOmBpbXBvcnRfbW9kdWxlYCByZXR1cm5zIHRoZSBzcGVjaWZpZWQgcGFja2FnZSBvciBtb2R1bGUKLSAgICAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYCByZXR1cm5zIHRoZQotICAgIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KKyAgICBkZXJpdmVkIGZyb20gOmZ1bmM6YGltcG9ydGxpYi5fX2ltcG9ydF9fYC4gVGhlIG1vc3QgaW1wb3J0YW50IGRpZmZlcmVuY2UKKyAgICBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMgaXMgdGhhdCA6ZnVuYzpgaW1wb3J0X21vZHVsZWAgcmV0dXJucyB0aGUKKyAgICBzcGVjaWZpZWQgcGFja2FnZSBvciBtb2R1bGUgKGUuZy4gYGBwa2cubW9kYGApLCB3aGlsZSA6ZnVuYzpgX19pbXBvcnRfX2AKKyAgICByZXR1cm5zIHRoZSB0b3AtbGV2ZWwgcGFja2FnZSBvciBtb2R1bGUgKGUuZy4gYGBwa2dgYCkuCisKKyAgICBJZiB5b3UgYXJlIGR5bmFtaWNhbGx5IGltcG9ydGluZyBhIG1vZHVsZSB0aGF0IHdhcyBjcmVhdGVkIHNpbmNlIHRoZQorICAgIGludGVycHJldGVyIGJlZ2FuIGV4ZWN1dGlvbiAoZS5nLiwgY3JlYXRlZCBhIFB5dGhvbiBzb3VyY2UgZmlsZSksIHlvdSBtYXkKKyAgICBuZWVkIHRvIGNhbGwgOmZ1bmM6YGludmFsaWRhdGVfY2FjaGVzYCBpbiBvcmRlciBmb3IgdGhlIG5ldyBtb2R1bGUgdG8gYmUKKyAgICBub3RpY2VkIGJ5IHRoZSBpbXBvcnQgc3lzdGVtLgogCiAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgICBQYXJlbnQgcGFja2FnZXMgYXJlIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQuCkBAIC0zNDEsMTMgKzM1NCwxNiBAQAogCiAgICAgLi4gbWV0aG9kOjogY3JlYXRlX21vZHVsZShzcGVjKQogCi0gICAgICAgQW4gb3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0byB1c2Ugd2hlbgotICAgICAgIGltcG9ydGluZyBhIG1vZHVsZS4gIGNyZWF0ZV9tb2R1bGUoKSBtYXkgYWxzbyByZXR1cm4gYGBOb25lYGAsCi0gICAgICAgaW5kaWNhdGluZyB0aGF0IHRoZSBkZWZhdWx0IG1vZHVsZSBjcmVhdGlvbiBzaG91bGQgdGFrZSBwbGFjZQotICAgICAgIGluc3RlYWQuCisgICAgICAgQSBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2R1bGUgb2JqZWN0IHRvIHVzZSB3aGVuCisgICAgICAgaW1wb3J0aW5nIGEgbW9kdWxlLiAgVGhpcyBtZXRob2QgbWF5IHJldHVybiBgYE5vbmVgYCwKKyAgICAgICBpbmRpY2F0aW5nIHRoYXQgZGVmYXVsdCBtb2R1bGUgY3JlYXRpb24gc2VtYW50aWNzIHNob3VsZCB0YWtlIHBsYWNlLgogCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgIFN0YXJ0aW5nIGluIFB5dGhvbiAzLjYsIHRoaXMgbWV0aG9kIHdpbGwgbm90IGJlIG9wdGlvbmFsIHdoZW4KKyAgICAgICAgICA6bWV0aDpgZXhlY19tb2R1bGVgIGlzIGRlZmluZWQuCisKICAgICAuLiBtZXRob2Q6OiBleGVjX21vZHVsZShtb2R1bGUpCiAKICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgdGhhdCBleGVjdXRlcyB0aGUgbW9kdWxlIGluIGl0cyBvd24gbmFtZXNwYWNlCkBAIC00MTEsNyArNDI3LDcgQEAKIAogICAgICAgICAuLiBkZXByZWNhdGVkOjogMy40CiAgICAgICAgICAgIFRoZSByZWNvbW1lbmRlZCBBUEkgZm9yIGxvYWRpbmcgYSBtb2R1bGUgaXMgOm1ldGg6YGV4ZWNfbW9kdWxlYAotICAgICAgICAgICAoYW5kIG9wdGlvbmFsbHkgOm1ldGg6YGNyZWF0ZV9tb2R1bGVgKS4gIExvYWRlcnMgc2hvdWxkIGltcGxlbWVudAorICAgICAgICAgICAoYW5kIDptZXRoOmBjcmVhdGVfbW9kdWxlYCkuICBMb2FkZXJzIHNob3VsZCBpbXBsZW1lbnQKICAgICAgICAgICAgaXQgaW5zdGVhZCBvZiBsb2FkX21vZHVsZSgpLiAgVGhlIGltcG9ydCBtYWNoaW5lcnkgdGFrZXMgY2FyZSBvZgogICAgICAgICAgICBhbGwgdGhlIG90aGVyIHJlc3BvbnNpYmlsaXRpZXMgb2YgbG9hZF9tb2R1bGUoKSB3aGVuIGV4ZWNfbW9kdWxlKCkKICAgICAgICAgICAgaXMgaW1wbGVtZW50ZWQuCkBAIC00OTMsNyArNTA5LDcgQEAKICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgICAgICAgUmFpc2VzIDpleGM6YEltcG9ydEVycm9yYCBpbnN0ZWFkIG9mIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCi0gICAgLi4gbWV0aG9kOjogc291cmNlX3RvX2NvZGUoZGF0YSwgcGF0aD0nPHN0cmluZz4nKQorICAgIC4uIHN0YXRpY21ldGhvZDo6IHNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGg9JzxzdHJpbmc+JykKIAogICAgICAgICBDcmVhdGUgYSBjb2RlIG9iamVjdCBmcm9tIFB5dGhvbiBzb3VyY2UuCiAKQEAgLTUwMiw4ICs1MTgsMTQgQEAKICAgICAgICAgdGhlICJwYXRoIiB0byB3aGVyZSB0aGUgc291cmNlIGNvZGUgb3JpZ2luYXRlZCBmcm9tLCB3aGljaCBjYW4gYmUgYW4KICAgICAgICAgYWJzdHJhY3QgY29uY2VwdCAoZS5nLiBsb2NhdGlvbiBpbiBhIHppcCBmaWxlKS4KIAorICAgICAgICBXaXRoIHRoZSBzdWJzZXF1ZW50IGNvZGUgb2JqZWN0IG9uZSBjYW4gZXhlY3V0ZSBpdCBpbiBhIG1vZHVsZSBieQorICAgICAgICBydW5uaW5nIGBgZXhlYyhjb2RlLCBtb2R1bGUuX19kaWN0X18pYGAuCisKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgICAgTWFkZSB0aGUgbWV0aG9kIHN0YXRpYy4KKwogICAgIC4uIG1ldGhvZDo6IGV4ZWNfbW9kdWxlKG1vZHVsZSkKIAogICAgICAgIEltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBMb2FkZXIuZXhlY19tb2R1bGVgLgpAQCAtNjg5LDYgKzcxMSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmF0dHI6YEJZVEVDT0RFX1NVRkZJWEVTYCBpbnN0ZWFkLgorCiAuLiBhdHRyaWJ1dGU6OiBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKIAogICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBvcHRpbWl6ZWQgYnl0ZWNvZGUKQEAgLTY5NiwxNCArNzIxLDE5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmF0dHI6YEJZVEVDT0RFX1NVRkZJWEVTYCBpbnN0ZWFkLgorCiAuLiBhdHRyaWJ1dGU6OiBCWVRFQ09ERV9TVUZGSVhFUwogCiAgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IgYnl0ZWNvZGUKLSAgIG1vZHVsZXMuIFNldCB0byBlaXRoZXIgOmF0dHI6YERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTYCBvcgotICAgOmF0dHI6YE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU2AgYmFzZWQgb24gd2hldGhlciBgYF9fZGVidWdfX2BgIGlzIHRydWUuCisgICBtb2R1bGVzIChpbmNsdWRpbmcgdGhlIGxlYWRpbmcgZG90KS4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgdmFsdWUgaXMgbm8gbG9uZ2VyIGRlcGVuZGVudCBvbiBgYF9fZGVidWdfX2BgLgorCiAuLiBhdHRyaWJ1dGU6OiBFWFRFTlNJT05fU1VGRklYRVMKIAogICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yCkBAIC03MzIsOSArNzYyLDkgQEAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KIAotICAgIC4uIG5vdGU6OgotICAgICAgIER1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBDLUFQSSwgZm9yIG5vdwotICAgICAgIEJ1aWx0aW5JbXBvcnRlciBkb2VzIG5vdCBpbXBsZW1lbnQgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAuCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICBBcyBwYXJ0IG9mIDpwZXA6YDQ4OWAsIHRoZSBidWlsdGluIGltcG9ydGVyIG5vdyBpbXBsZW1lbnRzCisgICAgICAgOm1ldGg6YExvYWRlci5jcmVhdGVfbW9kdWxlYCBhbmQgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAKIAogCiAuLiBjbGFzczo6IEZyb3plbkltcG9ydGVyCkBAIC03ODIsNiArODEyLDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgSWYgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgLS0gcmVwcmVzZW50ZWQgYnkgYW4gZW1wdHkgc3RyaW5nIC0tCisgICAgICAgICBpcyBubyBsb25nZXIgdmFsaWQgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZCBidXQgbm8gdmFsdWUgaXMgY2FjaGVkCisgICAgICAgICBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgorCiAgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCiAKICAgICAgIEEgbGVnYWN5IHdyYXBwZXIgYXJvdW5kIDptZXRoOmBmaW5kX3NwZWNgLgpAQCAtOTQ0LDE0ICs5NzksMTggQEAKIAogICAgICAgUGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZS4KIAotICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUobmFtZT1Ob25lKQorICAgLi4gbWV0aG9kOjogY3JlYXRlX21vZHVsZShzcGVjKQogCi0gICAgICBMb2FkcyB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpZiBhbmQgb25seSBpZiAqZnVsbG5hbWUqIGlzIHRoZSBzYW1lIGFzCi0gICAgICA6YXR0cjpgbmFtZWAgb3IgaXMgYGBOb25lYGAuCisgICAgICBDcmVhdGVzIHRoZSBtb2R1bGUgb2JqZWN0IGZyb20gdGhlIGdpdmVuIHNwZWNpZmljYXRpb24gaW4gYWNjb3JkYW5jZQorICAgICAgd2l0aCA6cGVwOmA0ODlgLgogCi0gICAgICAuLiBub3RlOjoKLSAgICAgICAgIER1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBDLUFQSSwgZm9yIG5vdwotICAgICAgICAgRXh0ZW5zaW9uRmlsZUxvYWRlciBkb2VzIG5vdCBpbXBsZW1lbnQgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAuCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gbWV0aG9kOjogZXhlY19tb2R1bGUobW9kdWxlKQorCisgICAgICBJbml0aWFsaXplcyB0aGUgZ2l2ZW4gbW9kdWxlIG9iamVjdCBpbiBhY2NvcmRhbmNlIHdpdGggOnBlcDpgNDg5YC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKQEAgLTEwNDcsMjMgKzEwODYsMzcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLS4uIGZ1bmN0aW9uOjogY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSwgKiwgb3B0aW1pemF0aW9uPU5vbmUpCiAKLSAgIFJldHVybiB0aGUgOnBlcDpgMzE0N2AgcGF0aCB0byB0aGUgYnl0ZS1jb21waWxlZCBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgIHNvdXJjZSAqcGF0aCouICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzIGBgL2Zvby9iYXIvYmF6LnB5YGAgdGhlIHJldHVybgorICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YC86cGVwOmA0ODhgIHBhdGggdG8gdGhlIGJ5dGUtY29tcGlsZWQgZmlsZSBhc3NvY2lhdGVkCisgICB3aXRoIHRoZSBzb3VyY2UgKnBhdGgqLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcyBgYC9mb28vYmFyL2Jhei5weWBgIHRoZSByZXR1cm4KICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKICAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCi0gICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KLSAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgYGBGYWxzZWBgKS4gIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IgYGBGYWxzZWBgIGZvcgotICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKLSAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuCiAKLSAgICpwYXRoKiBuZWVkIG5vdCBleGlzdC4KKyAgIFRoZSAqb3B0aW1pemF0aW9uKiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgb2YgdGhlCisgICBieXRlY29kZSBmaWxlLiBBbiBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyBubyBvcHRpbWl6YXRpb24sIHNvCisgICBgYC9mb28vYmFyL2Jhei5weWBgIHdpdGggYW4gKm9wdGltaXphdGlvbiogb2YgYGAnJ2BgIHdpbGwgcmVzdWx0IGluIGEKKyAgIGJ5dGVjb2RlIHBhdGggb2YgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYC4gYGBOb25lYGAgY2F1c2VzCisgICB0aGUgaW50ZXJwdGVyJ3Mgb3B0aW1pemF0aW9uIGxldmVsIHRvIGJlIHVzZWQuIEFueSBvdGhlciB2YWx1ZSdzIHN0cmluZworICAgcmVwcmVzZW50YXRpb24gYmVpbmcgdXNlZCwgc28gYGAvZm9vL2Jhci9iYXoucHlgYCB3aXRoIGFuICpvcHRpbWl6YXRpb24qIG9mCisgICBgYDJgYCB3aWxsIGxlYWQgdG8gdGhlIGJ5dGVjb2RlIHBhdGggb2YKKyAgIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIub3B0LTIucHljYGAuIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KKyAgIG9mICpvcHRpbWl6YXRpb24qIGNhbiBvbmx5IGJlIGFscGhhbnVtZXJpYywgZWxzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgIFRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkIGFuZCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZQorICAgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgLiBBIGBgVHJ1ZWBgIHZhbHVlIGlzIHRoZSBlcXVpdmFsZW50IG9mCisgICBzZXR0aW5nICpvcHRpbWl6YXRpb24qIHRvIHRoZSBlbXB0eSBzdHJpbmcuIEEgYGBGYWxzZWBgIHZhbHVlIGlzIHRoZSBzYW1lIGFzCisgICBzZXR0aW5nICpvcHRpbWl6YXRpb24qIHRvIGBgMWBgLiBJZiBib3RoICpkZWJ1Z19vdmVycmlkZSogYW4gKm9wdGltaXphdGlvbioKKyAgIGFyZSBub3QgYGBOb25lYGAgdGhlbiA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkIDo6My41CisgICAgICBUaGUgKm9wdGltaXphdGlvbiogcGFyYW1ldGVyIHdhcyBhZGRlZCBhbmQgdGhlICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyCisgICAgICB3YXMgZGVwcmVjYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKQEAgLTEwNzEsNyArMTEyNCw3IEBACiAgICBmaWxlIHBhdGguICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzCiAgICBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIHRoZSByZXR1cm5lZCBwYXRoIHdvdWxkIGJlCiAgICBgYC9mb28vYmFyL2Jhei5weWBgLiAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LCBob3dldmVyIGlmIGl0IGRvZXMgbm90IGNvbmZvcm0KLSAgIHRvIDpwZXA6YDMxNDdgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuIElmCisgICB0byA6cGVwOmAzMTQ3YCBvciA6cGVwOmA0ODhgIGZvcm1hdCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuIElmCiAgICA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgbm90IGRlZmluZWQsCiAgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCiAKQEAgLTExMTcsNiArMTE3MCwyMSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZnVuY3Rpb246OiBtb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisKKyAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgYmFzZWQgb24gKipzcGVjKiogYW5kIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAuCisKKyAgIElmIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueQorICAgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYAorICAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZyAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZQorICAgb24gdGhlIG1vZHVsZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBwcmVmZXJyZWQgb3ZlciB1c2luZyA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIHRvIGNyZWF0ZSBhCisgICBuZXcgbW9kdWxlIGFzICoqc3BlYyoqIGlzIHVzZWQgdG8gc2V0IGFzIG1hbnkgaW1wb3J0LWNvbnRyb2xsZWQgYXR0cmlidXRlcyBvbgorICAgdGhlIG1vZHVsZSBhcyBwb3NzaWJsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKICAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgCkBAIC0xMTk1LDMgKzEyNjMsMzkgQEAKICAgIG1vZHVsZSB3aWxsIGJlIGZpbGUtYmFzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisuLiBjbGFzczo6IExhenlMb2FkZXIobG9hZGVyKQorCisgICBBIGNsYXNzIHdoaWNoIHBvc3Rwb25lcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBsb2FkZXIgb2YgYSBtb2R1bGUgdW50aWwgdGhlCisgICBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBhY2Nlc3NlZC4KKworICAgVGhpcyBjbGFzcyAqKm9ubHkqKiB3b3JrcyB3aXRoIGxvYWRlcnMgdGhhdCBkZWZpbmUKKyAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGFzIGNvbnRyb2wgb3ZlciB3aGF0IG1vZHVsZSB0eXBlCisgICBpcyB1c2VkIGZvciB0aGUgbW9kdWxlIGlzIHJlcXVpcmVkLiBGb3IgdGhvc2Ugc2FtZSByZWFzb25zLCB0aGUgbG9hZGVyJ3MKKyAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIHdpbGwgYmUgaWdub3JlZCAoaS5lLiwgdGhlCisgICBsb2FkZXIncyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGBgTm9uZWBgKS4gRmluYWxseSwKKyAgIG1vZHVsZXMgd2hpY2ggc3Vic3RpdHV0ZSB0aGUgb2JqZWN0IHBsYWNlZCBpbnRvIDphdHRyOmBzeXMubW9kdWxlc2Agd2lsbAorICAgbm90IHdvcmsgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHByb3Blcmx5IHJlcGxhY2UgdGhlIG1vZHVsZSByZWZlcmVuY2VzCisgICB0aHJvdWdob3V0IHRoZSBpbnRlcnByZXRlciBzYWZlbHk7IDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBzdWNoIGEKKyAgIHN1YnN0aXR1dGlvbiBpcyBkZXRlY3RlZC4KKworICAgLi4gbm90ZTo6CisgICAgICBGb3IgcHJvamVjdHMgd2hlcmUgc3RhcnR1cCB0aW1lIGlzIGNyaXRpY2FsLCB0aGlzIGNsYXNzIGFsbG93cyBmb3IKKyAgICAgIHBvdGVudGlhbGx5IG1pbmltaXppbmcgdGhlIGNvc3Qgb2YgbG9hZGluZyBhIG1vZHVsZSBpZiBpdCBpcyBuZXZlciB1c2VkLgorICAgICAgRm9yIHByb2plY3RzIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBub3QgZXNzZW50aWFsIHRoZW4gdXNlIG9mIHRoaXMgY2xhc3MgaXMKKyAgICAgICoqaGVhdmlseSoqIGRpc2NvdXJhZ2VkIGR1ZSB0byBlcnJvciBtZXNzYWdlcyBjcmVhdGVkIGR1cmluZyBsb2FkaW5nIGJlaW5nCisgICAgICBwb3N0cG9uZWQgYW5kIHRodXMgb2NjdXJyaW5nIG91dCBvZiBjb250ZXh0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gY2xhc3NtZXRob2Q6OiBmYWN0b3J5KGxvYWRlcikKKworICAgICAgQSBzdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjYWxsYWJsZSB0aGF0IGNyZWF0ZXMgYSBsYXp5IGxvYWRlci4gVGhpcworICAgICAgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSBsb2FkZXIgaXMgcGFzc2VkIGJ5IGNsYXNzCisgICAgICBpbnN0ZWFkIG9mIGJ5IGluc3RhbmNlLgorICAgICAgOjoKKworICAgICAgICBzdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcgorICAgICAgICBsYXp5X2xvYWRlciA9IGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuZmFjdG9yeShsb2FkZXIpCisgICAgICAgIGZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcihwYXRoLCBbKGxhenlfbG9hZGVyLCBzdWZmaXhlcyldKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCA1N2ViNGZmLi4yNmEyOTEzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMjgsNyArMjgsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIDpmdW5jOmBnZXRtZW1iZXJzYCBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG1lbWJlcnMgb2YgYW4gb2JqZWN0IHN1Y2ggYXMgYQotY2xhc3Mgb3IgbW9kdWxlLiBUaGUgc2l4dGVlbiBmdW5jdGlvbnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCAiaXMiIGFyZSBtYWlubHkKK2NsYXNzIG9yIG1vZHVsZS4gVGhlIGZ1bmN0aW9ucyB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoICJpcyIgYXJlIG1haW5seQogcHJvdmlkZWQgYXMgY29udmVuaWVudCBjaG9pY2VzIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIDpmdW5jOmBnZXRtZW1iZXJzYC4KIFRoZXkgYWxzbyBoZWxwIHlvdSBkZXRlcm1pbmUgd2hlbiB5b3UgY2FuIGV4cGVjdCB0byBmaW5kIHRoZSBmb2xsb3dpbmcgc3BlY2lhbAogYXR0cmlidXRlczoKQEAgLTE2OCw2ICsxNjgsMzMgQEAKIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIGFuZCBsb2NhbCAgICAgICB8CiB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHZhcmlhYmxlcyAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgZ2VuZXJhdG9yIHwgX19uYW1lX18gICAgICAgIHwgbmFtZSAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBfX3F1YWxuYW1lX18gICAgfCBxdWFsaWZpZWQgbmFtZSAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGdpX2ZyYW1lICAgICAgICB8IGZyYW1lICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgZ2lfcnVubmluZyAgICAgIHwgaXMgdGhlIGdlbmVyYXRvciBydW5uaW5nPyB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBnaV9jb2RlICAgICAgICAgfCBjb2RlICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGdpX3lpZWxkZnJvbSAgICB8IG9iamVjdCBiZWluZyBpdGVyYXRlZCBieSAgfAorfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBgYHlpZWxkIGZyb21gYCwgb3IgICAgICAgIHwKK3wgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBjb3JvdXRpbmUgfCBfX25hbWVfXyAgICAgICAgfCBuYW1lICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IF9fcXVhbG5hbWVfXyAgICB8IHF1YWxpZmllZCBuYW1lICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgY3JfYXdhaXQgICAgICAgIHwgb2JqZWN0IGJlaW5nIGF3YWl0ZWQgb24sICB8Cit8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgY3JfZnJhbWUgICAgICAgIHwgZnJhbWUgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBjcl9ydW5uaW5nICAgICAgfCBpcyB0aGUgY29yb3V0aW5lIHJ1bm5pbmc/IHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGNyX2NvZGUgICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYnVpbHRpbiAgIHwgX19kb2NfXyAgICAgICAgIHwgZG9jdW1lbnRhdGlvbiBzdHJpbmcgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCAgICAgICAgICAgfCBfX25hbWVfXyAgICAgICAgfCBvcmlnaW5hbCBuYW1lIG9mIHRoaXMgICAgIHwKQEAgLTE4MCw2ICsyMDcsMTMgQEAKIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICBBZGQgYGBfX3F1YWxuYW1lX19gYCBhbmQgYGBnaV95aWVsZGZyb21gYCBhdHRyaWJ1dGVzIHRvIGdlbmVyYXRvcnMuCisKKyAgIFRoZSBgYF9fbmFtZV9fYGAgYXR0cmlidXRlIG9mIGdlbmVyYXRvcnMgaXMgbm93IHNldCBmcm9tIHRoZSBmdW5jdGlvbgorICAgbmFtZSwgaW5zdGVhZCBvZiB0aGUgY29kZSBuYW1lLCBhbmQgaXQgY2FuIG5vdyBiZSBtb2RpZmllZC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldG1lbWJlcnMob2JqZWN0WywgcHJlZGljYXRlXSkKIApAQCAtMjYxLDYgKzI5NSw0MSBAQAogICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KIAogCisuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lZnVuY3Rpb24ob2JqZWN0KQorCisgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgOnRlcm06YGNvcm91dGluZSBmdW5jdGlvbmAKKyAgIChhIGZ1bmN0aW9uIGRlZmluZWQgd2l0aCBhbiA6a2V5d29yZDpgYXN5bmMgZGVmYCBzeW50YXgpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lKG9iamVjdCkKKworICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIDp0ZXJtOmBjb3JvdXRpbmVgIGNyZWF0ZWQgYnkgYW4KKyAgIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBmdW5jdGlvbjo6IGlzYXdhaXRhYmxlKG9iamVjdCkKKworICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBjYW4gYmUgdXNlZCBpbiA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb24uCisKKyAgIENhbiBhbHNvIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMgZnJvbSByZWd1bGFyCisgICBnZW5lcmF0b3JzOjoKKworICAgICAgZGVmIGdlbigpOgorICAgICAgICAgIHlpZWxkCisgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICBkZWYgZ2VuX2Nvcm8oKToKKyAgICAgICAgICB5aWVsZAorCisgICAgICBhc3NlcnQgbm90IGlzYXdhaXRhYmxlKGdlbigpKQorICAgICAgYXNzZXJ0IGlzYXdhaXRhYmxlKGdlbl9jb3JvKCkpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogaXN0cmFjZWJhY2sob2JqZWN0KQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdHJhY2ViYWNrLgpAQCAtMzUxLDYgKzQyMCwxMiBAQAogLi4gZnVuY3Rpb246OiBnZXRkb2Mob2JqZWN0KQogCiAgICBHZXQgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciBhbiBvYmplY3QsIGNsZWFuZWQgdXAgd2l0aCA6ZnVuYzpgY2xlYW5kb2NgLgorICAgSWYgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciBhbiBvYmplY3QgaXMgbm90IHByb3ZpZGVkIGFuZCB0aGUgb2JqZWN0IGlzCisgICBhIGNsYXNzLCBhIG1ldGhvZCwgYSBwcm9wZXJ0eSBvciBhIGRlc2NyaXB0b3IsIHJldHJpZXZlIHRoZSBkb2N1bWVudGF0aW9uCisgICBzdHJpbmcgZnJvbSB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgRG9jdW1lbnRhdGlvbiBzdHJpbmdzIGFyZSBub3cgaW5oZXJpdGVkIGlmIG5vdCBvdmVycmlkZGVuLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Y29tbWVudHMob2JqZWN0KQpAQCAtNDIzLDcgKzQ5OCw3IEBACiByZXR1cm4gYW5ub3RhdGlvbi4gIFRvIHJldHJpZXZlIGEgU2lnbmF0dXJlIG9iamVjdCwgdXNlIHRoZSA6ZnVuYzpgc2lnbmF0dXJlYAogZnVuY3Rpb24uCiAKLS4uIGZ1bmN0aW9uOjogc2lnbmF0dXJlKGNhbGxhYmxlKQorLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFibGUsIFwqLCBmb2xsb3dfd3JhcHBlZD1UcnVlKQogCiAgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYGBjYWxsYWJsZWBgOjoKIApAQCAtNDQ4LDYgKzUyMywxMSBAQAogICAgUmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmIG5vIHNpZ25hdHVyZSBjYW4gYmUgcHJvdmlkZWQsIGFuZAogICAgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGF0IHR5cGUgb2Ygb2JqZWN0IGlzIG5vdCBzdXBwb3J0ZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgYGBmb2xsb3dfd3JhcHBlZGBgIHBhcmFtZXRlci4gUGFzcyBgYEZhbHNlYGAgdG8gZ2V0IGEgc2lnbmF0dXJlIG9mCisgICAgICBgYGNhbGxhYmxlYGAgc3BlY2lmaWNhbGx5IChgYGNhbGxhYmxlLl9fd3JhcHBlZF9fYGAgd2lsbCBub3QgYmUgdXNlZCB0bworICAgICAgdW53cmFwIGRlY29yYXRlZCBjYWxsYWJsZXMuKQorCiAgICAuLiBub3RlOjoKIAogICAgICAgU29tZSBjYWxsYWJsZXMgbWF5IG5vdCBiZSBpbnRyb3NwZWN0YWJsZSBpbiBjZXJ0YWluIGltcGxlbWVudGF0aW9ucyBvZgpAQCAtNDczLDYgKzU1Myw5IEBACiAgICBTaWduYXR1cmUgb2JqZWN0cyBhcmUgKmltbXV0YWJsZSouICBVc2UgOm1ldGg6YFNpZ25hdHVyZS5yZXBsYWNlYCB0byBtYWtlIGEKICAgIG1vZGlmaWVkIGNvcHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBTaWduYXR1cmUgb2JqZWN0cyBhcmUgcGlja2xhYmxlIGFuZCBoYXNoYWJsZS4KKwogICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLmVtcHR5CiAKICAgICAgIEEgc3BlY2lhbCBjbGFzcy1sZXZlbCBtYXJrZXIgdG8gc3BlY2lmeSBhYnNlbmNlIG9mIGEgcmV0dXJuIGFubm90YXRpb24uCkBAIC01MTcsMTIgKzYwMCwzMCBAQAogICAgICAgICAgPj4+IHN0cihuZXdfc2lnKQogICAgICAgICAgIihhLCBiKSAtPiAnbmV3IHJldHVybiBhbm5vJyIKIAorICAgLi4gY2xhc3NtZXRob2Q6OiBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZShvYmosIFwqLCBmb2xsb3dfd3JhcHBlZD1UcnVlKQorCisgICAgICAgUmV0dXJuIGEgOmNsYXNzOmBTaWduYXR1cmVgIChvciBpdHMgc3ViY2xhc3MpIG9iamVjdCBmb3IgYSBnaXZlbiBjYWxsYWJsZQorICAgICAgIGBgb2JqYGAuICBQYXNzIGBgZm9sbG93X3dyYXBwZWQ9RmFsc2VgYCB0byBnZXQgYSBzaWduYXR1cmUgb2YgYGBvYmpgYAorICAgICAgIHdpdGhvdXQgdW53cmFwcGluZyBpdHMgYGBfX3dyYXBwZWRfX2BgIGNoYWluLgorCisgICAgICAgVGhpcyBtZXRob2Qgc2ltcGxpZmllcyBzdWJjbGFzc2luZyBvZiA6Y2xhc3M6YFNpZ25hdHVyZWA6OgorCisgICAgICAgICBjbGFzcyBNeVNpZ25hdHVyZShTaWduYXR1cmUpOgorICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIHNpZyA9IE15U2lnbmF0dXJlLmZyb21fY2FsbGFibGUobWluKQorICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2lnLCBNeVNpZ25hdHVyZSkKKworICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIC4uIGNsYXNzOjogUGFyYW1ldGVyKG5hbWUsIGtpbmQsIFwqLCBkZWZhdWx0PVBhcmFtZXRlci5lbXB0eSwgYW5ub3RhdGlvbj1QYXJhbWV0ZXIuZW1wdHkpCiAKICAgIFBhcmFtZXRlciBvYmplY3RzIGFyZSAqaW1tdXRhYmxlKi4gIEluc3RlYWQgb2YgbW9kaWZ5aW5nIGEgUGFyYW1ldGVyIG9iamVjdCwKICAgIHlvdSBjYW4gdXNlIDptZXRoOmBQYXJhbWV0ZXIucmVwbGFjZWAgdG8gY3JlYXRlIGEgbW9kaWZpZWQgY29weS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFBhcmFtZXRlciBvYmplY3RzIGFyZSBwaWNrbGFibGUgYW5kIGhhc2hhYmxlLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZW1wdHkKIAogICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgYW5kCkBAIC02MzksMjcgKzc0MCw4IEBACiAKICAgICAgICAgIEFyZ3VtZW50cyBmb3Igd2hpY2ggOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBvcgogICAgICAgICAgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIHJlbGllZCBvbiBhIGRlZmF1bHQgdmFsdWUgYXJlIHNraXBwZWQuCi0gICAgICAgICBIb3dldmVyLCBpZiBuZWVkZWQsIGl0IGlzIGVhc3kgdG8gaW5jbHVkZSB0aGVtLgotCi0gICAgICA6OgotCi0gICAgICAgID4+PiBkZWYgZm9vKGEsIGI9MTApOgotICAgICAgICAuLi4gICAgIHBhc3MKLQotICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKGZvbykKLSAgICAgICAgPj4+IGJhID0gc2lnLmJpbmQoNSkKLQotICAgICAgICA+Pj4gYmEuYXJncywgYmEua3dhcmdzCi0gICAgICAgICgoNSwpLCB7fSkKLQotICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpOgotICAgICAgICAuLi4gICAgIGlmIChwYXJhbS5uYW1lIG5vdCBpbiBiYS5hcmd1bWVudHMKLSAgICAgICAgLi4uICAgICAgICAgICAgIGFuZCBwYXJhbS5kZWZhdWx0IGlzIG5vdCBwYXJhbS5lbXB0eSk6Ci0gICAgICAgIC4uLiAgICAgICAgIGJhLmFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHBhcmFtLmRlZmF1bHQKLQotICAgICAgICA+Pj4gYmEuYXJncywgYmEua3dhcmdzCi0gICAgICAgICgoNSwgMTApLCB7fSkKLQorICAgICAgICAgSG93ZXZlciwgaWYgbmVlZGVkLCB1c2UgOm1ldGg6YEJvdW5kQXJndW1lbnRzLmFwcGx5X2RlZmF1bHRzYCB0byBhZGQKKyAgICAgICAgIHRoZW0uCiAKICAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3MKIApAQCAtNjc1LDYgKzc1NywyNiBAQAogCiAgICAgICBBIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50IDpjbGFzczpgU2lnbmF0dXJlYCBvYmplY3QuCiAKKyAgIC4uIG1ldGhvZDo6IEJvdW5kQXJndW1lbnRzLmFwcGx5X2RlZmF1bHRzKCkKKworICAgICAgU2V0IGRlZmF1bHQgdmFsdWVzIGZvciBtaXNzaW5nIGFyZ3VtZW50cy4KKworICAgICAgRm9yIHZhcmlhYmxlLXBvc2l0aW9uYWwgYXJndW1lbnRzIChgYCphcmdzYGApIHRoZSBkZWZhdWx0IGlzIGFuCisgICAgICBlbXB0eSB0dXBsZS4KKworICAgICAgRm9yIHZhcmlhYmxlLWtleXdvcmQgYXJndW1lbnRzIChgYCoqa3dhcmdzYGApIHRoZSBkZWZhdWx0IGlzIGFuCisgICAgICBlbXB0eSBkaWN0LgorCisgICAgICA6OgorCisgICAgICAgID4+PiBkZWYgZm9vKGEsIGI9J2hhbScsICphcmdzKTogcGFzcworICAgICAgICA+Pj4gYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoJ3NwYW0nKQorICAgICAgICA+Pj4gYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICA+Pj4gYmEuYXJndW1lbnRzCisgICAgICAgIE9yZGVyZWREaWN0KFsoJ2EnLCAnc3BhbScpLCAoJ2InLCAnaGFtJyksICgnYXJncycsICgpKV0pCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICBUaGUgOmF0dHI6YGFyZ3NgIGFuZCA6YXR0cjpga3dhcmdzYCBwcm9wZXJ0aWVzIGNhbiBiZSB1c2VkIHRvIGludm9rZQogICAgZnVuY3Rpb25zOjoKIApAQCAtNzE5LDggKzgyMSwxMCBAQAogICAgKm4qIGVsZW1lbnRzIGxpc3RlZCBpbiAqYXJncyouCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjAKLSAgICAgIFVzZSA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgIGluc3RlYWQsIHdoaWNoIHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgICBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFuZCBhbm5vdGF0aW9ucy4KKyAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKKyAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLiAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlbW92ZWQKKyAgICAgIGluIFB5dGhvbiAzLjYuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRmdWxsYXJnc3BlYyhmdW5jKQpAQCAtNzQxLDE1ICs4NDUsMTYgQEAKIAogICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gOmZ1bmM6YGdldGFyZ3NwZWNgLgogCi0gICAuLiBub3RlOjoKLSAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAKLSAgICAgIGludGVyZmFjZSwgd2hpY2ggcHJvdmlkZXMgYSBiZXR0ZXIgd2F5IG9mIGludHJvc3BlY3RpbmcgZnVuY3Rpb25zLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgb24gOmZ1bmM6YHNpZ25hdHVyZWAsIGJ1dCBzdGlsbCBpZ25vcmVzCiAgICAgICBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlcyBhbmQgaW5jbHVkZXMgdGhlIGFscmVhZHkgYm91bmQgZmlyc3QKICAgICAgIHBhcmFtZXRlciBpbiB0aGUgc2lnbmF0dXJlIG91dHB1dCBmb3IgYm91bmQgbWV0aG9kcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhcmd2YWx1ZXMoZnJhbWUpCiAKQEAgLTc1OSw2ICs4NjQsMTEgQEAKICAgIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGBgKmBgIGFuZCBgYCoqYGAgYXJndW1lbnRzIG9yIGBgTm9uZWBgLiAgKmxvY2FscyogaXMgdGhlCiAgICBsb2NhbHMgZGljdGlvbmFyeSBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKKyAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLgorCiAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIApAQCAtNzgxLDYgKzg5MSwxMSBAQAogICAgPj4+IGZvcm1hdGFyZ3NwZWMoKmdldGZ1bGxhcmdzcGVjKGYpKQogICAgJyhhOiBpbnQsIGI6IGZsb2F0KScKIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisKIAogLi4gZnVuY3Rpb246OiBmb3JtYXRhcmd2YWx1ZXMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBsb2NhbHMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlXSkKIApAQCAtNzg4LDYgKzkwMywxMSBAQAogICAgOmZ1bmM6YGdldGFyZ3ZhbHVlc2AuICBUaGUgZm9ybWF0XCogYXJndW1lbnRzIGFyZSB0aGUgY29ycmVzcG9uZGluZyBvcHRpb25hbAogICAgZm9ybWF0dGluZyBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHRvIHR1cm4gbmFtZXMgYW5kIHZhbHVlcyBpbnRvIHN0cmluZ3MuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKKyAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0bXJvKGNscykKIApAQCAtODIyLDggKzk0Miw4IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBub3RlOjoKLSAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBpbnN0ZWFkLgorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDptZXRoOmBTaWduYXR1cmUuYmluZGAgYW5kIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Y2xvc3VyZXZhcnMoZnVuYykKQEAgLTg2NCwxMSArOTg0LDE3IEBACiBUaGUgaW50ZXJwcmV0ZXIgc3RhY2sKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGVuIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJldHVybiAiZnJhbWUgcmVjb3JkcywiIGVhY2ggcmVjb3JkIGlzIGEgdHVwbGUgb2YKLXNpeCBpdGVtczogdGhlIGZyYW1lIG9iamVjdCwgdGhlIGZpbGVuYW1lLCB0aGUgbGluZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgbGluZSwKK1doZW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuICJmcmFtZSByZWNvcmRzLCIgZWFjaCByZWNvcmQgaXMgYQorOnRlcm06YG5hbWVkIHR1cGxlYAorYGBGcmFtZUluZm8oZnJhbWUsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KWBgLgorVGhlIHR1cGxlIGNvbnRhaW5zIHRoZSBmcmFtZSBvYmplY3QsIHRoZSBmaWxlbmFtZSwgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZQorY3VycmVudCBsaW5lLAogdGhlIGZ1bmN0aW9uIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0IGZyb20gdGhlIHNvdXJjZSBjb2RlLCBhbmQgdGhlCiBpbmRleCBvZiB0aGUgY3VycmVudCBsaW5lIHdpdGhpbiB0aGF0IGxpc3QuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBSZXR1cm4gYSBuYW1lZCB0dXBsZSBpbnN0ZWFkIG9mIGEgdHVwbGUuCisKIC4uIG5vdGU6OgogCiAgICBLZWVwaW5nIHJlZmVyZW5jZXMgdG8gZnJhbWUgb2JqZWN0cywgYXMgZm91bmQgaW4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGZyYW1lCkBAIC05MTMsNiArMTAzOSwxMSBAQAogICAgcmV0dXJuZWQgbGlzdCByZXByZXNlbnRzICpmcmFtZSo7IHRoZSBsYXN0IGVudHJ5IHJlcHJlc2VudHMgdGhlIG91dGVybW9zdCBjYWxsCiAgICBvbiAqZnJhbWUqJ3Mgc3RhY2suCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBIGxpc3Qgb2YgOnRlcm06YG5hbWVkIHR1cGxlcyA8bmFtZWQgdHVwbGU+YAorICAgICAgYGBGcmFtZUluZm8oZnJhbWUsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KWBgCisgICAgICBpcyByZXR1cm5lZC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGlubmVyZnJhbWVzKHRyYWNlYmFjaywgY29udGV4dD0xKQogCkBAIC05MjEsNiArMTA1MiwxMSBAQAogICAgbGlzdCByZXByZXNlbnRzICp0cmFjZWJhY2sqOyB0aGUgbGFzdCBlbnRyeSByZXByZXNlbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzCiAgICByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBIGxpc3Qgb2YgOnRlcm06YG5hbWVkIHR1cGxlcyA8bmFtZWQgdHVwbGU+YAorICAgICAgYGBGcmFtZUluZm8oZnJhbWUsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KWBgCisgICAgICBpcyByZXR1cm5lZC4KKwogCiAuLiBmdW5jdGlvbjo6IGN1cnJlbnRmcmFtZSgpCiAKQEAgLTk0MCw2ICsxMDc2LDExIEBACiAgICByZXR1cm5lZCBsaXN0IHJlcHJlc2VudHMgdGhlIGNhbGxlcjsgdGhlIGxhc3QgZW50cnkgcmVwcmVzZW50cyB0aGUgb3V0ZXJtb3N0CiAgICBjYWxsIG9uIHRoZSBzdGFjay4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEEgbGlzdCBvZiA6dGVybTpgbmFtZWQgdHVwbGVzIDxuYW1lZCB0dXBsZT5gCisgICAgICBgYEZyYW1lSW5mbyhmcmFtZSwgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgpYGAKKyAgICAgIGlzIHJldHVybmVkLgorCiAKIC4uIGZ1bmN0aW9uOjogdHJhY2UoY29udGV4dD0xKQogCkBAIC05NDgsNiArMTA4OSwxMSBAQAogICAgZW50cnkgaW4gdGhlIGxpc3QgcmVwcmVzZW50cyB0aGUgY2FsbGVyOyB0aGUgbGFzdCBlbnRyeSByZXByZXNlbnRzIHdoZXJlIHRoZQogICAgZXhjZXB0aW9uIHdhcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBIGxpc3Qgb2YgOnRlcm06YG5hbWVkIHR1cGxlcyA8bmFtZWQgdHVwbGU+YAorICAgICAgYGBGcmFtZUluZm8oZnJhbWUsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmN0aW9uLCBjb2RlX2NvbnRleHQsIGluZGV4KWBgCisgICAgICBpcyByZXR1cm5lZC4KKwogCiBGZXRjaGluZyBhdHRyaWJ1dGVzIHN0YXRpY2FsbHkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTAwNyw4ICsxMTUzLDggQEAKICAgICAgICAgICAgcGFzcwogCiAKLUN1cnJlbnQgU3RhdGUgb2YgYSBHZW5lcmF0b3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0N1cnJlbnQgU3RhdGUgb2YgR2VuZXJhdG9ycyBhbmQgQ29yb3V0aW5lcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdoZW4gaW1wbGVtZW50aW5nIGNvcm91dGluZSBzY2hlZHVsZXJzIGFuZCBmb3Igb3RoZXIgYWR2YW5jZWQgdXNlcyBvZgogZ2VuZXJhdG9ycywgaXQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2VuZXJhdG9yIGlzIGN1cnJlbnRseQpAQCAtMTAyOCw2ICsxMTc0LDIxIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBmdW5jdGlvbjo6IGdldGNvcm91dGluZXN0YXRlKGNvcm91dGluZSkKKworICAgR2V0IGN1cnJlbnQgc3RhdGUgb2YgYSBjb3JvdXRpbmUgb2JqZWN0LiAgVGhlIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlCisgICB1c2VkIHdpdGggY29yb3V0aW5lIG9iamVjdHMgY3JlYXRlZCBieSA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMsIGJ1dAorICAgd2lsbCBhY2NlcHQgYW55IGNvcm91dGluZS1saWtlIG9iamVjdCB0aGF0IGhhcyBgYGNyX3J1bm5pbmdgYCBhbmQKKyAgIGBgY3JfZnJhbWVgYCBhdHRyaWJ1dGVzLgorCisgICBQb3NzaWJsZSBzdGF0ZXMgYXJlOgorICAgICogQ09ST19DUkVBVEVEOiBXYWl0aW5nIHRvIHN0YXJ0IGV4ZWN1dGlvbi4KKyAgICAqIENPUk9fUlVOTklORzogQ3VycmVudGx5IGJlaW5nIGV4ZWN1dGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KKyAgICAqIENPUk9fU1VTUEVOREVEOiBDdXJyZW50bHkgc3VzcGVuZGVkIGF0IGFuIGF3YWl0IGV4cHJlc3Npb24uCisgICAgKiBDT1JPX0NMT1NFRDogRXhlY3V0aW9uIGhhcyBjb21wbGV0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiBUaGUgY3VycmVudCBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGNhbiBhbHNvIGJlIHF1ZXJpZWQuIFRoaXMgaXMKIG1vc3RseSB1c2VmdWwgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHRvIGVuc3VyZSB0aGF0IGludGVybmFsIHN0YXRlIGlzIGJlaW5nCiB1cGRhdGVkIGFzIGV4cGVjdGVkOgpAQCAtMTA1Miw2ICsxMjEzLDEzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBmdW5jdGlvbjo6IGdldGNvcm91dGluZWxvY2Fscyhjb3JvdXRpbmUpCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgYW5hbG9nb3VzIHRvIDpmdW5jOmB+aW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHNgLCBidXQKKyAgIHdvcmtzIGZvciBjb3JvdXRpbmUgb2JqZWN0cyBjcmVhdGVkIGJ5IDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogLi4gX2luc3BlY3QtbW9kdWxlLWNsaToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW8ucnN0IGIvRG9jL2xpYnJhcnkvaW8ucnN0CmluZGV4IDliMTIwNDUuLjQ4ZmQyMjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pby5yc3QKQEAgLTMzOSw4ICszMzksMTEgQEAKICAgICAgIGlmICpzaXplKiBpcyBub3Qgc3BlY2lmaWVkKS4gIFRoZSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbiBpc24ndCBjaGFuZ2VkLgogICAgICAgVGhpcyByZXNpemluZyBjYW4gZXh0ZW5kIG9yIHJlZHVjZSB0aGUgY3VycmVudCBmaWxlIHNpemUuICBJbiBjYXNlIG9mCiAgICAgICBleHRlbnNpb24sIHRoZSBjb250ZW50cyBvZiB0aGUgbmV3IGZpbGUgYXJlYSBkZXBlbmQgb24gdGhlIHBsYXRmb3JtCi0gICAgICAob24gbW9zdCBzeXN0ZW1zLCBhZGRpdGlvbmFsIGJ5dGVzIGFyZSB6ZXJvLWZpbGxlZCwgb24gV2luZG93cyB0aGV5J3JlCi0gICAgICB1bmRldGVybWluZWQpLiAgVGhlIG5ldyBmaWxlIHNpemUgaXMgcmV0dXJuZWQuCisgICAgICAob24gbW9zdCBzeXN0ZW1zLCBhZGRpdGlvbmFsIGJ5dGVzIGFyZSB6ZXJvLWZpbGxlZCkuICBUaGUgbmV3IGZpbGUgc2l6ZQorICAgICAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBXaW5kb3dzIHdpbGwgbm93IHplcm8tZmlsbCBmaWxlcyB3aGVuIGV4dGVuZGluZy4KIAogICAgLi4gbWV0aG9kOjogd3JpdGFibGUoKQogCkBAIC0zOTEsOCArMzk0LDggQEAKICAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvKGIpCiAKICAgICAgIFJlYWQgdXAgdG8gYGBsZW4oYilgYCBieXRlcyBpbnRvIDpjbGFzczpgYnl0ZWFycmF5YCAqYiogYW5kIHJldHVybiB0aGUKLSAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KLSAgICAgIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgb2JqZWN0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBubyBieXRlcworICAgICAgYXJlIGF2YWlsYWJsZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGIpCiAKQEAgLTQ2NSw5ICs0NjgsMTAgQEAKIAogICAgLi4gbWV0aG9kOjogcmVhZDEoc2l6ZT0tMSkKIAotICAgICAgUmVhZCBhbmQgcmV0dXJuIHVwIHRvICpzaXplKiBieXRlcywgd2l0aCBhdCBtb3N0IG9uZSBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nCi0gICAgICByYXcgc3RyZWFtJ3MgOm1ldGg6YH5SYXdJT0Jhc2UucmVhZGAgbWV0aG9kLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHlvdQotICAgICAgYXJlIGltcGxlbWVudGluZyB5b3VyIG93biBidWZmZXJpbmcgb24gdG9wIG9mIGEgOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAKKyAgICAgIFJlYWQgYW5kIHJldHVybiB1cCB0byAqc2l6ZSogYnl0ZXMsIHdpdGggYXQgbW9zdCBvbmUgY2FsbCB0byB0aGUKKyAgICAgIHVuZGVybHlpbmcgcmF3IHN0cmVhbSdzIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRgIChvcgorICAgICAgOm1ldGg6YH5SYXdJT0Jhc2UucmVhZGludG9gKSBtZXRob2QuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IGFyZQorICAgICAgaW1wbGVtZW50aW5nIHlvdXIgb3duIGJ1ZmZlcmluZyBvbiB0b3Agb2YgYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYAogICAgICAgb2JqZWN0LgogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQpAQCAtNDc4LDggKzQ4MiwxOSBAQAogICAgICAgTGlrZSA6bWV0aDpgcmVhZGAsIG11bHRpcGxlIHJlYWRzIG1heSBiZSBpc3N1ZWQgdG8gdGhlIHVuZGVybHlpbmcgcmF3CiAgICAgICBzdHJlYW0sIHVubGVzcyB0aGUgbGF0dGVyIGlzIGludGVyYWN0aXZlLgogCi0gICAgICBBIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4KLSAgICAgIG5vbiBibG9ja2luZy1tb2RlLCBhbmQgaGFzIG5vIGRhdGEgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCisgICAgICBBIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4gbm9uCisgICAgICBibG9ja2luZy1tb2RlLCBhbmQgaGFzIG5vIGRhdGEgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvMShiKQorCisgICAgICBSZWFkIHVwIHRvIGBgbGVuKGIpYGAgYnl0ZXMgaW50byBieXRlYXJyYXkgKmIqLCB1c2luZyBhdCBtb3N0IG9uZSBjYWxsIHRvCisgICAgICB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtJ3MgOm1ldGg6YH5SYXdJT0Jhc2UucmVhZGAgKG9yCisgICAgICA6bWV0aDpgflJhd0lPQmFzZS5yZWFkaW50b2ApIG1ldGhvZC4gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KKworICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluIG5vbgorICAgICAgYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogICAgLi4gbWV0aG9kOjogd3JpdGUoYikKIApAQCAtNTA3LDkgKzUyMiwxMiBAQAogICAgVGhlICpuYW1lKiBjYW4gYmUgb25lIG9mIHR3byB0aGluZ3M6CiAKICAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlCi0gICAgIGZpbGUgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CisgICAgIGZpbGUgd2hpY2ggd2lsbCBiZSBvcGVuZWQuIEluIHRoaXMgY2FzZSBjbG9zZWZkIG11c3QgYmUgVHJ1ZSAodGhlIGRlZmF1bHQpCisgICAgIG90aGVyd2lzZSBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZC4KICAgICogYW4gaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBhbiBleGlzdGluZyBPUy1sZXZlbCBmaWxlIGRlc2NyaXB0b3IKLSAgICAgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyA6Y2xhc3M6YEZpbGVJT2Agb2JqZWN0IHdpbGwgZ2l2ZSBhY2Nlc3MuCisgICAgIHRvIHdoaWNoIHRoZSByZXN1bHRpbmcgOmNsYXNzOmBGaWxlSU9gIG9iamVjdCB3aWxsIGdpdmUgYWNjZXNzLiBXaGVuIHRoZQorICAgICBGaWxlSU8gb2JqZWN0IGlzIGNsb3NlZCB0aGlzIGZkIHdpbGwgYmUgY2xvc2VkIGFzIHdlbGwsIHVubGVzcyAqY2xvc2VmZCoKKyAgICAgaXMgc2V0IHRvIGBgRmFsc2VgYC4KIAogICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nCiAgICAoZGVmYXVsdCksIHdyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuIFRoZSBmaWxlIHdpbGwgYmUKQEAgLTU5OCw2ICs2MTYsMTEgQEAKIAogICAgICAgSW4gOmNsYXNzOmBCeXRlc0lPYCwgdGhpcyBpcyB0aGUgc2FtZSBhcyA6bWV0aDpgcmVhZGAuCiAKKyAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvMSgpCisKKyAgICAgIEluIDpjbGFzczpgQnl0ZXNJT2AsIHRoaXMgaXMgdGhlIHNhbWUgYXMgOm1ldGg6YHJlYWRpbnRvYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGNsYXNzOjogQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKQogCkBAIC04MDgsMTEgKzgzMSwxMyBAQAogICAgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVuY29kaW5nIGVycm9yICh0aGUgZGVmYXVsdCBvZiBgYE5vbmVgYCBoYXMgdGhlIHNhbWUKICAgIGVmZmVjdCksIG9yIHBhc3MgYGAnaWdub3JlJ2BgIHRvIGlnbm9yZSBlcnJvcnMuICAoTm90ZSB0aGF0IGlnbm9yaW5nIGVuY29kaW5nCiAgICBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLikgIGBgJ3JlcGxhY2UnYGAgY2F1c2VzIGEgcmVwbGFjZW1lbnQgbWFya2VyCi0gICAoc3VjaCBhcyBgYCc/J2BgKSB0byBiZSBpbnNlcnRlZCB3aGVyZSB0aGVyZSBpcyBtYWxmb3JtZWQgZGF0YS4gIFdoZW4KLSAgIHdyaXRpbmcsIGBgJ3htbGNoYXJyZWZyZXBsYWNlJ2BgIChyZXBsYWNlIHdpdGggdGhlIGFwcHJvcHJpYXRlIFhNTCBjaGFyYWN0ZXIKLSAgIHJlZmVyZW5jZSkgb3IgYGAnYmFja3NsYXNocmVwbGFjZSdgYCAocmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZQotICAgc2VxdWVuY2VzKSBjYW4gYmUgdXNlZC4gIEFueSBvdGhlciBlcnJvciBoYW5kbGluZyBuYW1lIHRoYXQgaGFzIGJlZW4KLSAgIHJlZ2lzdGVyZWQgd2l0aCA6ZnVuYzpgY29kZWNzLnJlZ2lzdGVyX2Vycm9yYCBpcyBhbHNvIHZhbGlkLgorICAgKHN1Y2ggYXMgYGAnPydgYCkgdG8gYmUgaW5zZXJ0ZWQgd2hlcmUgdGhlcmUgaXMgbWFsZm9ybWVkIGRhdGEuCisgICBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGNhdXNlcyBtYWxmb3JtZWQgZGF0YSB0byBiZSByZXBsYWNlZCBieSBhCisgICBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2UuICBXaGVuIHdyaXRpbmcsIGBgJ3htbGNoYXJyZWZyZXBsYWNlJ2BgCisgICAocmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwgY2hhcmFjdGVyIHJlZmVyZW5jZSkgIG9yIGBgJ25hbWVyZXBsYWNlJ2BgCisgICAocmVwbGFjZSB3aXRoIGBgXE57Li4ufWBgIGVzY2FwZSBzZXF1ZW5jZXMpIGNhbiBiZSB1c2VkLiAgQW55IG90aGVyIGVycm9yCisgICBoYW5kbGluZyBuYW1lIHRoYXQgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoCisgICA6ZnVuYzpgY29kZWNzLnJlZ2lzdGVyX2Vycm9yYCBpcyBhbHNvIHZhbGlkLgogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgaW8uVGV4dElPV3JhcHBlciBjbGFzcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdCBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKaW5kZXggMzAxMDQ4ZS4uOTBmY2M3NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0CkBAIC0xNDYsNiArMTQ2LDIwIEBACiAgICAgICB0aGUgYXBwcm9wcmlhdGUgbGVuZ3RoIChtb3N0IHNpZ25pZmljYW50IG9jdGV0IGZpcnN0KS4gVGhpcyBpcyA0IGJ5dGVzCiAgICAgICBmb3IgSVB2NCBhbmQgMTYgYnl0ZXMgZm9yIElQdjYuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHJldmVyc2VfcG9pbnRlcgorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgcmV2ZXJzZSBETlMgUFRSIHJlY29yZCBmb3IgdGhlIElQIGFkZHJlc3MsIGUuZy46OgorCisgICAgICAgICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIxMjcuMC4wLjEiKS5yZXZlcnNlX3BvaW50ZXIKKyAgICAgICAgICAnMS4wLjAuMTI3LmluLWFkZHIuYXJwYScKKyAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjIwMDE6ZGI4OjoxIikucmV2ZXJzZV9wb2ludGVyCisgICAgICAgICAgJzEuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjguYi5kLjAuMS4wLjAuMi5pcDYuYXJwYScKKworICAgICAgVGhpcyBpcyB0aGUgbmFtZSB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIHBlcmZvcm1pbmcgYSBQVFIgbG9va3VwLCBub3QgdGhlCisgICAgICByZXNvbHZlZCBob3N0bmFtZSBpdHNlbGYuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKIAogICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuICBTZWUKQEAgLTIyNiw2ICsyNDAsNyBAQAogICAgOmNsYXNzOmBJUHY0QWRkcmVzc2AgY2xhc3M6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHBhY2tlZAorICAgLi4gYXR0cmlidXRlOjogcmV2ZXJzZV9wb2ludGVyCiAgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCiAgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKQEAgLTM3Nyw2ICszOTIsMTIgQEAKICAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDQsIGJpZy1lbmRpYW4uCiAgICAgICBUaGUgaW50ZXJwcmV0YXRpb24gaXMgc2ltaWxhciB0byBhbiBpbnRlZ2VyICphZGRyZXNzKi4KIAorICAgNC4gQSB0d28tdHVwbGUgb2YgYW4gYWRkcmVzcyBkZXNjcmlwdGlvbiBhbmQgYSBuZXRtYXNrLCB3aGVyZSB0aGUgYWRkcmVzcworICAgICAgZGVzY3JpcHRpb24gaXMgZWl0aGVyIGEgc3RyaW5nLCBhIDMyLWJpdHMgaW50ZWdlciwgYSA0LWJ5dGVzIHBhY2tlZAorICAgICAgaW50ZWdlciwgb3IgYW4gZXhpc3RpbmcgSVB2NEFkZHJlc3Mgb2JqZWN0OyBhbmQgdGhlIG5ldG1hc2sgaXMgZWl0aGVyCisgICAgICBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aCAoZS5nLiBgYDI0YGApIG9yIGEgc3RyaW5nCisgICAgICByZXByZXNlbnRpbmcgdGhlIHByZWZpeCBtYXNrIChlLmcuIGBgMjU1LjI1NS4yNTUuMGBgKS4KKwogICAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NAogICAgYWRkcmVzcy4gIEEgOmV4YzpgTmV0bWFza1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgbWFzayBpcyBub3QgdmFsaWQgZm9yCiAgICBhbiBJUHY0IGFkZHJlc3MuCkBAIC0zODksNiArNDEwLDEwIEBACiAgICBvYmplY3RzIHdpbGwgcmFpc2UgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgYXJndW1lbnQncyBJUCB2ZXJzaW9uIGlzCiAgICBpbmNvbXBhdGlibGUgdG8gYGBzZWxmYGAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgQWRkZWQgdGhlIHR3by10dXBsZSBmb3JtIGZvciB0aGUgKmFkZHJlc3MqIGNvbnN0cnVjdG9yIHBhcmFtZXRlci4KKwogICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgogICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgogCkBAIC01NTMsNiArNTc4LDExIEBACiAgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCAxNiwgYmlnLWVuZGlhbi4KICAgICAgIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBzaW1pbGFyIHRvIGFuIGludGVnZXIgKmFkZHJlc3MqLgogCisgICA0LiBBIHR3by10dXBsZSBvZiBhbiBhZGRyZXNzIGRlc2NyaXB0aW9uIGFuZCBhIG5ldG1hc2ssIHdoZXJlIHRoZSBhZGRyZXNzCisgICAgICBkZXNjcmlwdGlvbiBpcyBlaXRoZXIgYSBzdHJpbmcsIGEgMTI4LWJpdHMgaW50ZWdlciwgYSAxNi1ieXRlcyBwYWNrZWQKKyAgICAgIGludGVnZXIsIG9yIGFuIGV4aXN0aW5nIElQdjRBZGRyZXNzIG9iamVjdDsgYW5kIHRoZSBuZXRtYXNrIGlzIGFuCisgICAgICBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aC4KKwogICAgQW4gOmV4YzpgQWRkcmVzc1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NgogICAgYWRkcmVzcy4gIEEgOmV4YzpgTmV0bWFza1ZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgbWFzayBpcyBub3QgdmFsaWQgZm9yCiAgICBhbiBJUHY2IGFkZHJlc3MuCkBAIC01NjEsNiArNTkxLDEwIEBACiAgICB0aGVuIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGhvc3QgYml0cyBhcmUgbWFza2VkIG91dAogICAgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGFkZHJlc3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgIEFkZGVkIHRoZSB0d28tdHVwbGUgZm9ybSBmb3IgdGhlICphZGRyZXNzKiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuCisKICAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KICAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdCBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKaW5kZXggZjQ4OTUzNS4uOGM3NTkyZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CkBAIC04NywxMCArODcsMTUgQEAKIAogLi4gZnVuY3Rpb246OiBhY2N1bXVsYXRlKGl0ZXJhYmxlWywgZnVuY10pCiAKLSAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBhY2N1bXVsYXRlZCBzdW1zLiBFbGVtZW50cyBtYXkgYmUgYW55IGFkZGFibGUKLSAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIG9yIDpjbGFzczpgfmZyYWN0aW9ucy5GcmFjdGlvbmAuCi0gICAgSWYgdGhlIG9wdGlvbmFsICpmdW5jKiBhcmd1bWVudCBpcyBzdXBwbGllZCwgaXQgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgdHdvCi0gICAgYXJndW1lbnRzIGFuZCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhZGRpdGlvbi4KKyAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBhY2N1bXVsYXRlZCBzdW1zLCBvciBhY2N1bXVsYXRlZAorICAgIHJlc3VsdHMgb2Ygb3RoZXIgYmluYXJ5IGZ1bmN0aW9ucyAoc3BlY2lmaWVkIHZpYSB0aGUgb3B0aW9uYWwKKyAgICAqZnVuYyogYXJndW1lbnQpLiAgSWYgKmZ1bmMqIGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbgorICAgIG9mIHR3byBhcmd1bWVudHMuIEVsZW1lbnRzIG9mIHRoZSBpbnB1dCAqaXRlcmFibGUqIG1heSBiZSBhbnkgdHlwZQorICAgIHRoYXQgY2FuIGJlIGFjY2VwdGVkIGFzIGFyZ3VtZW50cyB0byAqZnVuYyouIChGb3IgZXhhbXBsZSwgd2l0aAorICAgIHRoZSBkZWZhdWx0IG9wZXJhdGlvbiBvZiBhZGRpdGlvbiwgZWxlbWVudHMgbWF5IGJlIGFueSBhZGRhYmxlCisgICAgdHlwZSBpbmNsdWRpbmcgOmNsYXNzOmB+ZGVjaW1hbC5EZWNpbWFsYCBvcgorICAgIDpjbGFzczpgfmZyYWN0aW9ucy5GcmFjdGlvbmAuKSBJZiB0aGUgaW5wdXQgaXRlcmFibGUgaXMgZW1wdHksIHRoZQorICAgIG91dHB1dCBpdGVyYWJsZSB3aWxsIGFsc28gYmUgZW1wdHkuCiAKICAgICBFcXVpdmFsZW50IHRvOjoKIApAQCAtOTksNyArMTA0LDEwIEBACiAgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0pIC0tPiAxIDMgNiAxMCAxNQogICAgICAgICAgICAgIyBhY2N1bXVsYXRlKFsxLDIsMyw0LDVdLCBvcGVyYXRvci5tdWwpIC0tPiAxIDIgNiAyNCAxMjAKICAgICAgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKLSAgICAgICAgICAgIHRvdGFsID0gbmV4dChpdCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b3RhbCA9IG5leHQoaXQpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIHlpZWxkIHRvdGFsCiAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBpdDoKICAgICAgICAgICAgICAgICB0b3RhbCA9IGZ1bmModG90YWwsIGVsZW1lbnQpCkBAIC00MDAsNyArNDA4LDEwIEBACiAgICAgICAgICAgZGVmIF9ncm91cGVyKHNlbGYsIHRndGtleSk6CiAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuY3VycmtleSA9PSB0Z3RrZXk6CiAgICAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmN1cnJ2YWx1ZQotICAgICAgICAgICAgICAgICAgc2VsZi5jdXJydmFsdWUgPSBuZXh0KHNlbGYuaXQpICAgICMgRXhpdCBvbiBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJydmFsdWUgPSBuZXh0KHNlbGYuaXQpCisgICAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmtleSA9IHNlbGYua2V5ZnVuYyhzZWxmLmN1cnJ2YWx1ZSkKIAogCkBAIC00MjQsNyArNDM1LDEwIEBACiAgICAgICAgICAgIyBpc2xpY2UoJ0FCQ0RFRkcnLCAwLCBOb25lLCAyKSAtLT4gQSBDIEUgRwogICAgICAgICAgIHMgPSBzbGljZSgqYXJncykKICAgICAgICAgICBpdCA9IGl0ZXIocmFuZ2Uocy5zdGFydCBvciAwLCBzLnN0b3Agb3Igc3lzLm1heHNpemUsIHMuc3RlcCBvciAxKSkKLSAgICAgICAgICBuZXh0aSA9IG5leHQoaXQpCisgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICBuZXh0aSA9IG5leHQoaXQpCisgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgIGZvciBpLCBlbGVtZW50IGluIGVudW1lcmF0ZShpdGVyYWJsZSk6CiAgICAgICAgICAgICAgIGlmIGkgPT0gbmV4dGk6CiAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtZW50CkBAIC01ODIsNyArNTk2LDEwIEBACiAgICAgICAgICAgICBkZWYgZ2VuKG15ZGVxdWUpOgogICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBteWRlcXVlOiAgICAgICAgICAgICAjIHdoZW4gdGhlIGxvY2FsIGRlcXVlIGlzIGVtcHR5Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXd2YWwgPSBuZXh0KGl0KSAgICAgICAjIGZldGNoIGEgbmV3IHZhbHVlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbCA9IG5leHQoaXQpICAgIyBmZXRjaCBhIG5ldyB2YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGQgaW4gZGVxdWVzOiAgICAgICAgIyBsb2FkIGl0IHRvIGFsbCB0aGUgZGVxdWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmQobmV3dmFsKQogICAgICAgICAgICAgICAgICAgICB5aWVsZCBteWRlcXVlLnBvcGxlZnQoKQpAQCAtNjU3LDYgKzY3NCwxMSBAQAogICAgICAgICJSZXR1cm4gZnVuY3Rpb24oMCksIGZ1bmN0aW9uKDEpLCAuLi4iCiAgICAgICAgcmV0dXJuIG1hcChmdW5jdGlvbiwgY291bnQoc3RhcnQpKQogCisgICBkZWYgdGFpbChuLCBpdGVyYWJsZSk6CisgICAgICAgIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBsYXN0IG4gaXRlbXMiCisgICAgICAgIyB0YWlsKDMsICdBQkNERUZHJykgLS0+IEUgRiBHCisgICAgICAgcmV0dXJuIGl0ZXIoY29sbGVjdGlvbnMuZGVxdWUoaXRlcmFibGUsIG1heGxlbj1uKSkKKwogICAgZGVmIGNvbnN1bWUoaXRlcmF0b3IsIG4pOgogICAgICAgICJBZHZhbmNlIHRoZSBpdGVyYXRvciBuLXN0ZXBzIGFoZWFkLiBJZiBuIGlzIG5vbmUsIGNvbnN1bWUgZW50aXJlbHkuIgogICAgICAgICMgVXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN1bWUgaXRlcmF0b3JzIGF0IEMgc3BlZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9qc29uLnJzdCBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CmluZGV4IDZmNWY4YjEuLjQ5YmIwOTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2pzb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CkBAIC0xMDYsNiArMTA2LDggQEAKICAgICAkIGVjaG8gJ3sxLjI6My40fScgfCBweXRob24gLW0ganNvbi50b29sCiAgICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAyIChjaGFyIDEpCiAKK1NlZSA6cmVmOmBqc29uLWNvbW1hbmRsaW5lYCBmb3IgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbi4KKwogLi4gaGlnaGxpZ2h0OjogcHl0aG9uMwogCiAuLiBub3RlOjoKQEAgLTI0OCw3ICsyNTAsNyBAQAogICAgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBjbGFzcy4KIAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAogLi4gZnVuY3Rpb246OiBsb2FkcyhzLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCiAKQEAgLTI1OSw3ICsyNjEsNyBAQAogICAgKmVuY29kaW5nKiB3aGljaCBpcyBpZ25vcmVkIGFuZCBkZXByZWNhdGVkLgogCiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCiBFbmNvZGVycyBhbmQgRGVjb2RlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzMyLDEzICszMzQsMTYgQEAKICAgIGBgJ1xuJ2BgLCBgYCdccidgYCBhbmQgYGAnXDAnYGAuCiAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKICAgIC4uIG1ldGhvZDo6IGRlY29kZShzKQogCiAgICAgICBSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlCiAgICAgICBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkKIAorICAgICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiB0aGUgZ2l2ZW4gSlNPTiBkb2N1bWVudCBpcyBub3QKKyAgICAgIHZhbGlkLgorCiAgICAuLiBtZXRob2Q6OiByYXdfZGVjb2RlKHMpCiAKICAgICAgIERlY29kZSBhIEpTT04gZG9jdW1lbnQgZnJvbSAqcyogKGEgOmNsYXNzOmBzdHJgIGJlZ2lubmluZyB3aXRoIGEKQEAgLTQ2Nyw2ICs0NzIsMzYgQEAKICAgICAgICAgICAgICAgICBteXNvY2tldC53cml0ZShjaHVuaykKIAogCitFeGNlcHRpb25zCistLS0tLS0tLS0tCisKKy4uIGV4Y2VwdGlvbjo6IEpTT05EZWNvZGVFcnJvcihtc2csIGRvYywgcG9zLCBlbmQ9Tm9uZSkKKworICAgIFN1YmNsYXNzIG9mIDpleGM6YFZhbHVlRXJyb3JgIHdpdGggdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtc2cKKworICAgICAgICBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZS4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGRvYworCisgICAgICAgIFRoZSBKU09OIGRvY3VtZW50IGJlaW5nIHBhcnNlZC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHBvcworCisgICAgICAgIFRoZSBzdGFydCBpbmRleCBvZiAqZG9jKiB3aGVyZSBwYXJzaW5nIGZhaWxlZC4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVubworCisgICAgICAgIFRoZSBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gKnBvcyouCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBjb2xubworCisgICAgICAgIFRoZSBjb2x1bW4gY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogU3RhbmRhcmQgQ29tcGxpYW5jZSBhbmQgSW50ZXJvcGVyYWJpbGl0eQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01ODgsNiArNjIzLDY4IEBACiB3aGVuIHNlcmlhbGl6aW5nIGluc3RhbmNlcyBvZiAiZXhvdGljIiBudW1lcmljYWwgdHlwZXMgc3VjaCBhcwogOmNsYXNzOmBkZWNpbWFsLkRlY2ltYWxgLgogCisuLiBoaWdobGlnaHQ6OiBiYXNoCisuLiBtb2R1bGU6OiBqc29uLnRvb2wKKworLi4gX2pzb24tY29tbWFuZGxpbmU6CisKK0NvbW1hbmQgTGluZSBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YGpzb24udG9vbGAgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgdG8gdmFsaWRhdGUKK2FuZCBwcmV0dHktcHJpbnQgSlNPTiBvYmplY3RzLgorCitJZiB0aGUgb3B0aW9uYWwgYGBpbmZpbGVgYCBhbmQgYGBvdXRmaWxlYGAgYXJndW1lbnRzIGFyZSBub3QKK3NwZWNpZmllZCwgOmF0dHI6YHN5cy5zdGRpbmAgYW5kIDphdHRyOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQgcmVzcGVjdGl2ZWx5OjoKKworICAgICQgZWNobyAneyJqc29uIjogIm9iaiJ9JyB8IHB5dGhvbiAtbSBqc29uLnRvb2wKKyAgICB7CisgICAgICAgICJqc29uIjogIm9iaiIKKyAgICB9CisgICAgJCBlY2hvICd7MS4yOjMuNH0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAorICAgIEV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXM6IGxpbmUgMSBjb2x1bW4gMiAoY2hhciAxKQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIG91dHB1dCBpcyBub3cgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGlucHV0LiBVc2UgdGhlCisgICA6b3B0aW9uOmAtLXNvcnQta2V5c2Agb3B0aW9uIHRvIHNvcnQgdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMKKyAgIGFscGhhYmV0aWNhbGx5IGJ5IGtleS4KKworQ29tbWFuZCBsaW5lIG9wdGlvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eCisKKy4uIGNtZG9wdGlvbjo6IGluZmlsZQorCisgICBUaGUgSlNPTiBmaWxlIHRvIGJlIHZhbGlkYXRlZCBvciBwcmV0dHktcHJpbnRlZDo6CisKKyAgICAgICQgcHl0aG9uIC1tIGpzb24udG9vbCBtcF9maWxtcy5qc29uCisgICAgICBbCisgICAgICAgICAgeworICAgICAgICAgICAgICAidGl0bGUiOiAiQW5kIE5vdyBmb3IgU29tZXRoaW5nIENvbXBsZXRlbHkgRGlmZmVyZW50IiwKKyAgICAgICAgICAgICAgInllYXIiOiAxOTcxCisgICAgICAgICAgfSwKKyAgICAgICAgICB7CisgICAgICAgICAgICAgICJ0aXRsZSI6ICJNb250eSBQeXRob24gYW5kIHRoZSBIb2x5IEdyYWlsIiwKKyAgICAgICAgICAgICAgInllYXIiOiAxOTc1CisgICAgICAgICAgfQorICAgICAgXQorCisgICBJZiAqaW5maWxlKiBpcyBub3Qgc3BlY2lmaWVkLCByZWFkIGZyb20gOmF0dHI6YHN5cy5zdGRpbmAuCisKKy4uIGNtZG9wdGlvbjo6IG91dGZpbGUKKworICAgV3JpdGUgdGhlIG91dHB1dCBvZiB0aGUgKmluZmlsZSogdG8gdGhlIGdpdmVuICpvdXRmaWxlKi4gT3RoZXJ3aXNlLCB3cml0ZSBpdAorICAgdG8gOmF0dHI6YHN5cy5zdGRvdXRgLgorCisuLiBjbWRvcHRpb246OiAtLXNvcnQta2V5cworCisgICBTb3J0IHRoZSBvdXRwdXQgb2YgZGljdGlvbmFyaWVzIGFscGhhYmV0aWNhbGx5IGJ5IGtleS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGNtZG9wdGlvbjo6IC1oLCAtLWhlbHAKKworICAgU2hvdyB0aGUgaGVscCBtZXNzYWdlLgorCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9saW5lY2FjaGUucnN0IGIvRG9jL2xpYnJhcnkvbGluZWNhY2hlLnJzdAppbmRleCBmMThiMWNkLi42YzkyY2M1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9saW5lY2FjaGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QKQEAgLTQ3LDYgKzQ3LDE0IEBACiAgICBjaGFuZ2VkIG9uIGRpc2ssIGFuZCB5b3UgcmVxdWlyZSB0aGUgdXBkYXRlZCB2ZXJzaW9uLiAgSWYgKmZpbGVuYW1lKiBpcyBvbWl0dGVkLAogICAgaXQgd2lsbCBjaGVjayBhbGwgdGhlIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogCisuLiBmdW5jdGlvbjo6IGxhenljYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCisKKyAgIENhcHR1cmUgZW5vdWdoIGRldGFpbCBhYm91dCBhIG5vbi1maWxlIGJhc2VkIG1vZHVsZSB0byBwZXJtaXQgZ2V0dGluZyBpdHMKKyAgIGxpbmVzIGxhdGVyIHZpYSA6ZnVuYzpgZ2V0bGluZWAgZXZlbiBpZiAqbW9kdWxlX2dsb2JhbHMqIGlzIE5vbmUgaW4gdGhlIGxhdGVyCisgICBjYWxsLiBUaGlzIGF2b2lkcyBkb2luZyBJL08gdW50aWwgYSBsaW5lIGlzIGFjdHVhbGx5IG5lZWRlZCwgd2l0aG91dCBoYXZpbmcKKyAgIHRvIGNhcnJ5IHRoZSBtb2R1bGUgZ2xvYmFscyBhcm91bmQgaW5kZWZpbml0ZWx5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogRXhhbXBsZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CmluZGV4IDk2MDAxOTMuLmJjN2Y1ZjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdApAQCAtMzg3LDYgKzM4NywxNCBAQAogICAgYGBzdHIoZmxvYXQpYGAsIGJ1dCB0YWtlcyB0aGUgZGVjaW1hbCBwb2ludCBpbnRvIGFjY291bnQuCiAKIAorLi4gZnVuY3Rpb246OiBkZWxvY2FsaXplKHN0cmluZykKKworICAgIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSBub3JtYWxpemVkIG51bWJlciBzdHJpbmcsIGZvbGxvd2luZyB0aGUKKyAgICA6Y29uc3Q6YExDX05VTUVSSUNgIHNldHRpbmdzLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBhdG9mKHN0cmluZykKIAogICAgQ29udmVydHMgYSBzdHJpbmcgdG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIGZvbGxvd2luZyB0aGUgOmNvbnN0OmBMQ19OVU1FUklDYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAppbmRleCBkOTQ2ODkyLi42NzQwM2E5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdApAQCAtODUzLDcgKzg1Myw3IEBACiAgICBjcmVkZW50aWFscywgeW91IHNob3VsZCBhbHNvIHNwZWNpZnkgc2VjdXJlPVRydWUgc28gdGhhdCB5b3VyIHVzZXJpZCBhbmQKICAgIHBhc3N3b3JkIGFyZSBub3QgcGFzc2VkIGluIGNsZWFydGV4dCBhY3Jvc3MgdGhlIHdpcmUuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgKmNvbnRleHQqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKICAgIC4uIG1ldGhvZDo6IG1hcExvZ1JlY29yZChyZWNvcmQpCkBAIC05NTMsMTMgKzk1MywyMCBAQAogcG9zc2libGUsIHdoaWxlIGFueSBwb3RlbnRpYWxseSBzbG93IG9wZXJhdGlvbnMgKHN1Y2ggYXMgc2VuZGluZyBhbiBlbWFpbCB2aWEKIDpjbGFzczpgU01UUEhhbmRsZXJgKSBhcmUgZG9uZSBvbiBhIHNlcGFyYXRlIHRocmVhZC4KIAotLi4gY2xhc3M6OiBRdWV1ZUxpc3RlbmVyKHF1ZXVlLCAqaGFuZGxlcnMpCisuLiBjbGFzczo6IFF1ZXVlTGlzdGVuZXIocXVldWUsICpoYW5kbGVycywgcmVzcGVjdF9oYW5kbGVyX2xldmVsPUZhbHNlKQogCiAgICBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YFF1ZXVlTGlzdGVuZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIHF1ZXVlIHRvIHNlbmQgbWVzc2FnZXMgdG8gYW5kIGEgbGlzdCBvZiBoYW5kbGVycyB3aGljaAogICAgd2lsbCBoYW5kbGUgZW50cmllcyBwbGFjZWQgb24gdGhlIHF1ZXVlLiBUaGUgcXVldWUgY2FuIGJlIGFueSBxdWV1ZS0KICAgIGxpa2Ugb2JqZWN0OyBpdCdzIHBhc3NlZCBhcy1pcyB0byB0aGUgOm1ldGg6YGRlcXVldWVgIG1ldGhvZCwgd2hpY2ggbmVlZHMKLSAgIHRvIGtub3cgaG93IHRvIGdldCBtZXNzYWdlcyBmcm9tIGl0LgorICAgdG8ga25vdyBob3cgdG8gZ2V0IG1lc3NhZ2VzIGZyb20gaXQuIElmIGBgcmVzcGVjdF9oYW5kbGVyX2xldmVsYGAgaXMgYGBUcnVlYGAsCisgICBhIGhhbmRsZXIncyBsZXZlbCBpcyByZXNwZWN0ZWQgKGNvbXBhcmVkIHdpdGggdGhlIGxldmVsIGZvciB0aGUgbWVzc2FnZSkgd2hlbgorICAgZGVjaWRpbmcgd2hldGhlciB0byBwYXNzIG1lc3NhZ2VzIHRvIHRoYXQgaGFuZGxlcjsgb3RoZXJ3aXNlLCB0aGUgYmVoYXZpb3VyCisgICBpcyBhcyBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMgLSB0byBhbHdheXMgcGFzcyBlYWNoIG1lc3NhZ2UgdG8gZWFjaAorICAgaGFuZGxlci4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYHJlc3BlY3RfaGFuZGxlcl9sZXZlbHNgYCBhcmd1bWVudCB3YXMgYWRkZWQuCiAKICAgIC4uIG1ldGhvZDo6IGRlcXVldWUoYmxvY2spCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKaW5kZXggOTBmYjliMC4uYmY4MjFhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QKQEAgLTE1OSwxMSArMTU5LDEzIEBACiAgICAqbXNnKiB1c2luZyB0aGUgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0b3IuIChOb3RlIHRoYXQgdGhpcyBtZWFucyB0aGF0IHlvdSBjYW4KICAgIHVzZSBrZXl3b3JkcyBpbiB0aGUgZm9ybWF0IHN0cmluZywgdG9nZXRoZXIgd2l0aCBhIHNpbmdsZSBkaWN0aW9uYXJ5IGFyZ3VtZW50LikKIAotICAgVGhlcmUgYXJlIHRocmVlIGtleXdvcmQgYXJndW1lbnRzIGluICprd2FyZ3MqIHdoaWNoIGFyZSBpbnNwZWN0ZWQ6ICpleGNfaW5mbyoKLSAgIHdoaWNoLCBpZiBpdCBkb2VzIG5vdCBldmFsdWF0ZSBhcyBmYWxzZSwgY2F1c2VzIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiB0byBiZQorICAgVGhlcmUgYXJlIHRocmVlIGtleXdvcmQgYXJndW1lbnRzIGluICprd2FyZ3MqIHdoaWNoIGFyZSBpbnNwZWN0ZWQ6CisgICAqZXhjX2luZm8qLCAqc3RhY2tfaW5mbyosIGFuZCAqZXh0cmEqLgorCisgICBJZiAqZXhjX2luZm8qIGRvZXMgbm90IGV2YWx1YXRlIGFzIGZhbHNlLCBpdCBjYXVzZXMgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHRvIGJlCiAgICBhZGRlZCB0byB0aGUgbG9nZ2luZyBtZXNzYWdlLiBJZiBhbiBleGNlcHRpb24gdHVwbGUgKGluIHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBzeXMuZXhjX2luZm9gKSBpcyBwcm92aWRlZCwgaXQgaXMgdXNlZDsgb3RoZXJ3aXNlLCA6ZnVuYzpgc3lzLmV4Y19pbmZvYAotICAgaXMgY2FsbGVkIHRvIGdldCB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgorICAgOmZ1bmM6YHN5cy5leGNfaW5mb2ApIG9yIGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBpcyBwcm92aWRlZCwgaXQgaXMgdXNlZDsKKyAgIG90aGVyd2lzZSwgOmZ1bmM6YHN5cy5leGNfaW5mb2AgaXMgY2FsbGVkIHRvIGdldCB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogCiAgICBUaGUgc2Vjb25kIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgaXMgKnN0YWNrX2luZm8qLCB3aGljaCBkZWZhdWx0cyB0bwogICAgYGBGYWxzZWBgLiBJZiB0cnVlLCBzdGFjayBpbmZvcm1hdGlvbiBpcyBhZGRlZCB0byB0aGUgbG9nZ2luZwpAQCAtMjIwLDYgKzIyMiw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgICAgIFRoZSAqc3RhY2tfaW5mbyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqZXhjX2luZm8qIHBhcmFtZXRlciBjYW4gbm93IGFjY2VwdCBleGNlcHRpb24gaW5zdGFuY2VzLgorCiAKIC4uIG1ldGhvZDo6IExvZ2dlci5pbmZvKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sem1hLnJzdCBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CmluZGV4IGI3MTA1MWQuLjA1NDYwMDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2x6bWEucnN0CisrKyBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CkBAIC0xMTAsNiArMTEwLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgIngiYGAgYW5kIGBgInhiImBgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCisgICAgICBgYE5vbmVgYC4KKwogCiBDb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIyMSwxMyArMjI1LDMyIEBACiAgICAgICBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCwgeW91IG11c3QKICAgICAgIGNyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgogCi0gICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCisgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEsIG1heF9sZW5ndGg9LTEpCiAKLSAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgCi0gICAgICBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGRhdGEgZm9yIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGlucHV0LgotICAgICAgU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8KLSAgICAgIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZQotICAgICAgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCisgICAgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgKSwgcmV0dXJuaW5nCisgICAgICB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4gU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkCisgICAgICBpbnRlcm5hbGx5LCBmb3IgdXNlIGluIGxhdGVyIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlCisgICAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueQorICAgICAgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLgorCisgICAgICBJZiAqbWF4X2xlbmd0aCogaXMgbm9ubmVnYXRpdmUsIHJldHVybnMgYXQgbW9zdCAqbWF4X2xlbmd0aCoKKyAgICAgIGJ5dGVzIG9mIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIKKyAgICAgIG91dHB1dCBjYW4gYmUgcHJvZHVjZWQsIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlIHdpbGwKKyAgICAgIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHQgY2FsbCB0bworICAgICAgOm1ldGg6YH4uZGVjb21wcmVzc2AgbWF5IHByb3ZpZGUgKmRhdGEqIGFzIGBgYicnYGAgdG8gb2J0YWluCisgICAgICBtb3JlIG9mIHRoZSBvdXRwdXQuCisKKyAgICAgIElmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyCisgICAgICBiZWNhdXNlIHRoaXMgd2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UKKyAgICAgICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLCB0aGUgOmF0dHI6YH4ubmVlZHNfaW5wdXRgIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBzZXQgdG8gYGBUcnVlYGAuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKKyAgICAgIHJhaXNlcyBhbiBgRU9GRXJyb3JgLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKKyAgICAgIHN0cmVhbSBpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgOmF0dHI6YH4udW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICAgIEFkZGVkIHRoZSAqbWF4X2xlbmd0aCogcGFyYW1ldGVyLgogCiAgICAuLiBhdHRyaWJ1dGU6OiBjaGVjawogCkBAIC0yNDUsNiArMjY4LDEyIEBACiAKICAgICAgIEJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgcmVhY2hlZCwgdGhpcyB3aWxsIGJlIGBgYiIiYGAuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IG5lZWRzX2lucHV0CisKKyAgICAgIGBgRmFsc2VgYCBpZiB0aGUgOm1ldGg6YC5kZWNvbXByZXNzYCBtZXRob2QgY2FuIHByb3ZpZGUgbW9yZQorICAgICAgZGVjb21wcmVzc2VkIGRhdGEgYmVmb3JlIHJlcXVpcmluZyBuZXcgdW5jb21wcmVzc2VkIGlucHV0LgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdAppbmRleCAwZmM3YzdjLi4yNDQ2NjNlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdApAQCAtMTAwLDYgKzEwMCw0OCBAQAogICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzM5MzA5MC8+YF9cLgogCiAKKy4uIGZ1bmN0aW9uOjogZ2NkKGEsIGIpCisKKyAgIFJldHVybiB0aGUgZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgdGhlIGludGVnZXJzICphKiBhbmQgKmIqLiAgSWYgZWl0aGVyCisgICAqYSogb3IgKmIqIGlzIG5vbnplcm8sIHRoZW4gdGhlIHZhbHVlIG9mIGBgZ2NkKGEsIGIpYGAgaXMgdGhlIGxhcmdlc3QKKyAgIHBvc2l0aXZlIGludGVnZXIgdGhhdCBkaXZpZGVzIGJvdGggKmEqIGFuZCAqYiouICBgYGdjZCgwLCAwKWBgIHJldHVybnMKKyAgIGBgMGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBmdW5jdGlvbjo6IGlzY2xvc2UoYSwgYiwgKiwgcmVsX3RvbD0xZS0wOSwgYWJzX3RvbD0wLjApCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgdmFsdWVzICphKiBhbmQgKmIqIGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIGFuZAorICAgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgV2hldGhlciBvciBub3QgdHdvIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBjbG9zZSBpcyBkZXRlcm1pbmVkIGFjY29yZGluZyB0bworICAgZ2l2ZW4gYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHRvbGVyYW5jZXMuCisKKyAgICpyZWxfdG9sKiBpcyB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIC0tIGl0IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGlmZmVyZW5jZQorICAgYmV0d2VlbiAqYSogYW5kICpiKiwgcmVsYXRpdmUgdG8gdGhlIGxhcmdlciBhYnNvbHV0ZSB2YWx1ZSBvZiAqYSogb3IgKmIqLgorICAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIHRvbGVyYW5jZSBvZiA1JSwgcGFzcyBgYHJlbF90b2w9MC4wNWBgLiAgVGhlIGRlZmF1bHQKKyAgIHRvbGVyYW5jZSBpcyBgYDFlLTA5YGAsIHdoaWNoIGFzc3VyZXMgdGhhdCB0aGUgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUKKyAgIHdpdGhpbiBhYm91dCA5IGRlY2ltYWwgZGlnaXRzLiAgKnJlbF90b2wqIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICphYnNfdG9sKiBpcyB0aGUgbWluaW11bSBhYnNvbHV0ZSB0b2xlcmFuY2UgLS0gdXNlZnVsIGZvciBjb21wYXJpc29ucyBuZWFyCisgICB6ZXJvLiAqYWJzX3RvbCogbXVzdCBiZSBhdCBsZWFzdCB6ZXJvLgorCisgICBJZiBubyBlcnJvcnMgb2NjdXIsIHRoZSByZXN1bHQgd2lsbCBiZToKKyAgIGBgYWJzKGEtYikgPD0gbWF4KHJlbF90b2wgKiBtYXgoYWJzKGEpLCBhYnMoYikpLCBhYnNfdG9sKWBgLgorCisgICBUaGUgSUVFRSA3NTQgc3BlY2lhbCB2YWx1ZXMgb2YgYGBOYU5gYCwgYGBpbmZgYCwgYW5kIGBgLWluZmBgIHdpbGwgYmUKKyAgIGhhbmRsZWQgYWNjb3JkaW5nIHRvIElFRUUgcnVsZXMuICBTcGVjaWZpY2FsbHksIGBgTmFOYGAgaXMgbm90IGNvbnNpZGVyZWQKKyAgIGNsb3NlIHRvIGFueSBvdGhlciB2YWx1ZSwgaW5jbHVkaW5nIGBgTmFOYGAuICBgYGluZmBgIGFuZCBgYC1pbmZgYCBhcmUgb25seQorICAgY29uc2lkZXJlZCBjbG9zZSB0byB0aGVtc2VsdmVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDpwZXA6YDQ4NWAgLS0gQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorCisKIC4uIGZ1bmN0aW9uOjogaXNmaW5pdGUoeCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICp4KiBpcyBuZWl0aGVyIGFuIGluZmluaXR5IG5vciBhIE5hTiwgYW5kCkBAIC0zODMsNiArNDI1LDIyIEBACiAgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IGUgPSAyLjcxODI4MS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KIAogCisuLiBkYXRhOjogaW5mCisKKyAgIEEgZmxvYXRpbmctcG9pbnQgcG9zaXRpdmUgaW5maW5pdHkuICAoRm9yIG5lZ2F0aXZlIGluZmluaXR5LCB1c2UKKyAgIGBgLW1hdGguaW5mYGAuKSAgRXF1aXZhbGVudCB0byB0aGUgb3V0cHV0IG9mIGBgZmxvYXQoJ2luZicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGRhdGE6OiBuYW4KKworICAgQSBmbG9hdGluZy1wb2ludCAibm90IGEgbnVtYmVyIiAoTmFOKSB2YWx1ZS4gIEVxdWl2YWxlbnQgdG8gdGhlIG91dHB1dCBvZgorICAgYGBmbG9hdCgnbmFuJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gaW1wbC1kZXRhaWw6OgogCiAgICBUaGUgOm1vZDpgbWF0aGAgbW9kdWxlIGNvbnNpc3RzIG1vc3RseSBvZiB0aGluIHdyYXBwZXJzIGFyb3VuZCB0aGUgcGxhdGZvcm0gQwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdAppbmRleCAxOGUwNWUzLi5iNzRhODIzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tbWFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdApAQCAtMTc0LDYgKzE3NCw5IEBACiAgICAgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgogICAgICAgUmV0dXJucyBgYC0xYGAgb24gZmFpbHVyZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogZmx1c2goW29mZnNldFssIHNpemVdXSkKIApAQCAtMjM0LDYgKzIzNyw5IEBACiAgICAgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLgogICAgICAgUmV0dXJucyBgYC0xYGAgb24gZmFpbHVyZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogc2Vlayhwb3NbLCB3aGVuY2VdKQogCkBAIC0yNjEsNiArMjY3LDkgQEAKICAgICAgIHdlcmUgd3JpdHRlbi4gSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgogICAgICAgd3JpdGluZyB0byBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24uCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlX2J5dGUoYnl0ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggODJkZTE5Yi4uYTRkNDJhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC0xNDU4LDYgKzE0NTgsOSBAQAogICAgTm90ZSB0aGF0IGFjY2Vzc2luZyB0aGUgY3R5cGVzIG9iamVjdCB0aHJvdWdoIHRoZSB3cmFwcGVyIGNhbiBiZSBhIGxvdCBzbG93ZXIKICAgIHRoYW4gYWNjZXNzaW5nIHRoZSByYXcgY3R5cGVzIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFN5bmNocm9uaXplZCBvYmplY3RzIHN1cHBvcnQgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sLgorCiAKIFRoZSB0YWJsZSBiZWxvdyBjb21wYXJlcyB0aGUgc3ludGF4IGZvciBjcmVhdGluZyBzaGFyZWQgY3R5cGVzIG9iamVjdHMgZnJvbQogc2hhcmVkIG1lbW9yeSB3aXRoIHRoZSBub3JtYWwgY3R5cGVzIHN5bnRheC4gIChJbiB0aGUgdGFibGUgYGBNeVN0cnVjdGBgIGlzIHNvbWUKQEAgLTE5NDUsOSArMTk0OCw5IEBACiAgICAgICAgICA+Pj4gbCA9IG1hbmFnZXIubGlzdChyYW5nZSgxMCkpCiAgICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19sZW5fXycpCiAgICAgICAgICAxMAotICAgICAgICAgPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKHNsaWNlKDIsIDcpLCkpICAjIGVxdWl2IHRvIGBsWzI6N11gCisgICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoc2xpY2UoMiwgNyksKSkgIyBlcXVpdmFsZW50IHRvIGxbMjo3XQogICAgICAgICAgWzIsIDMsIDQsIDUsIDZdCi0gICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYAorICAgICAgICAgPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAgICAgICMgZXF1aXZhbGVudCB0byBsWzIwXQogICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgLi4uCiAgICAgICAgICBJbmRleEVycm9yOiBsaXN0IGluZGV4IG91dCBvZiByYW5nZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0IGIvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0CmluZGV4IGY5ZTJhM2QuLmMwMWU2M2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29wZXJhdG9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QKQEAgLTEzOCw2ICsxMzgsMTQgQEAKICAgIFJldHVybiBgYGEgKiBiYGAsIGZvciAqYSogYW5kICpiKiBudW1iZXJzLgogCiAKKy4uIGZ1bmN0aW9uOjogbWF0bXVsKGEsIGIpCisgICAgICAgICAgICAgIF9fbWF0bXVsX18oYSwgYikKKworICAgUmV0dXJuIGBgYSBAIGJgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBuZWcob2JqKQogICAgICAgICAgICAgICBfX25lZ19fKG9iaikKIApAQCAtMzkxLDYgKzM5OSw4IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE11bHRpcGxpY2F0aW9uICAgICAgICB8IGBgYSAqIGJgYCAgICAgICAgICAgICAgIHwgYGBtdWwoYSwgYilgYCAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE1hdHJpeCBNdWx0aXBsaWNhdGlvbiB8IGBgYSBAIGJgYCAgICAgICAgICAgICAgIHwgYGBtYXRtdWwoYSwgYilgYCAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE5lZ2F0aW9uIChBcml0aG1ldGljKSB8IGBgLSBhYGAgICAgICAgICAgICAgICAgIHwgYGBuZWcoYSlgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE5lZ2F0aW9uIChMb2dpY2FsKSAgICB8IGBgbm90IGFgYCAgICAgICAgICAgICAgIHwgYGBub3RfKGEpYGAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC00OTksNiArNTA5LDE0IEBACiAgICBgYGEgPSBpbXVsKGEsIGIpYGAgaXMgZXF1aXZhbGVudCB0byBgYGEgKj0gYmBgLgogCiAKKy4uIGZ1bmN0aW9uOjogaW1hdG11bChhLCBiKQorICAgICAgICAgICAgICBfX2ltYXRtdWxfXyhhLCBiKQorCisgICBgYGEgPSBpbWF0bXVsKGEsIGIpYGAgaXMgZXF1aXZhbGVudCB0byBgYGEgQD0gYmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGlvcihhLCBiKQogICAgICAgICAgICAgICBfX2lvcl9fKGEsIGIpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggOTI2MzFiMi4uYTNmZTczYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTY2LDExICs2NiwzNyBAQAogICAgZW1wdHkgc3RyaW5nIChgYCcnYGApLgogCiAKKy4uIGZ1bmN0aW9uOjogY29tbW9ucGF0aChwYXRocykKKworICAgUmV0dXJuIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aCBvZiBlYWNoIHBhdGhuYW1lIGluIHRoZSBzZXF1ZW5jZQorICAgKnBhdGhzKi4gIFJhaXNlIFZhbHVlRXJyb3IgaWYgKnBhdGhzKiBjb250YWlucyBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZQorICAgcGF0aG5hbWVzLCBvciBpZiAqcGF0aHMqIGlzIGVtcHR5LiAgVW5saWtlIDpmdW5jOmBjb21tb25wcmVmaXhgLCB0aGlzCisgICByZXR1cm5zIGEgdmFsaWQgcGF0aC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogY29tbW9ucHJlZml4KGxpc3QpCiAKLSAgIFJldHVybiB0aGUgbG9uZ2VzdCBwYXRoIHByZWZpeCAodGFrZW4gY2hhcmFjdGVyLWJ5LWNoYXJhY3RlcikgdGhhdCBpcyBhIHByZWZpeAotICAgb2YgYWxsIHBhdGhzIGluICAqbGlzdCouICBJZiAqbGlzdCogaXMgZW1wdHksIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIChgYCcnYGApLgotICAgTm90ZSB0aGF0IHRoaXMgbWF5IHJldHVybiBpbnZhbGlkIHBhdGhzIGJlY2F1c2UgaXQgd29ya3MgYSBjaGFyYWN0ZXIgYXQgYSB0aW1lLgorICAgUmV0dXJuIHRoZSBsb25nZXN0IHBhdGggcHJlZml4ICh0YWtlbiBjaGFyYWN0ZXItYnktY2hhcmFjdGVyKSB0aGF0IGlzIGEKKyAgIHByZWZpeCBvZiBhbGwgcGF0aHMgaW4gICpsaXN0Ki4gIElmICpsaXN0KiBpcyBlbXB0eSwgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcKKyAgIChgYCcnYGApLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGludmFsaWQgcGF0aHMgYmVjYXVzZSBpdCB3b3JrcyBhCisgICAgICBjaGFyYWN0ZXIgYXQgYSB0aW1lLiAgVG8gb2J0YWluIGEgdmFsaWQgcGF0aCwgc2VlCisgICAgICA6ZnVuYzpgY29tbW9ucGF0aGAuCisKKyAgICAgIDo6CisKKyAgICAgICAgPj4+IG9zLnBhdGguY29tbW9ucHJlZml4KFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKKyAgICAgICAgJy91c3IvbCcKKworICAgICAgICA+Pj4gb3MucGF0aC5jb21tb25wYXRoKFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKKyAgICAgICAgJy91c3InCiAKIAogLi4gZnVuY3Rpb246OiBkaXJuYW1lKHBhdGgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggOTE2ZjVlNS4uMzBmMTYwNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtNzgsOSArNzgsMTAgQEAKIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgIE9uIHNvbWUgc3lzdGVtcywgY29udmVyc2lvbiB1c2luZyB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgbWF5IGZhaWwuIEluIHRoaXMKLSAgIGNhc2UsIFB5dGhvbiB1c2VzIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVuY29kaW5nIGVycm9yIGhhbmRsZXIsIHdoaWNoIG1lYW5zCi0gICB0aGF0IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSByZXBsYWNlZCBieSBhIFVuaWNvZGUgY2hhcmFjdGVyIFUrREN4eCBvbgotICAgZGVjb2RpbmcsIGFuZCB0aGVzZSBhcmUgYWdhaW4gdHJhbnNsYXRlZCB0byB0aGUgb3JpZ2luYWwgYnl0ZSBvbiBlbmNvZGluZy4KKyAgIGNhc2UsIFB5dGhvbiB1c2VzIHRoZSA6cmVmOmBzdXJyb2dhdGVlc2NhcGUgZW5jb2RpbmcgZXJyb3IgaGFuZGxlcgorICAgPHN1cnJvZ2F0ZWVzY2FwZT5gLCB3aGljaCBtZWFucyB0aGF0IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSByZXBsYWNlZCBieSBhCisgICBVbmljb2RlIGNoYXJhY3RlciBVK0RDeHggb24gZGVjb2RpbmcsIGFuZCB0aGVzZSBhcmUgYWdhaW4gdHJhbnNsYXRlZCB0byB0aGUKKyAgIG9yaWdpbmFsIGJ5dGUgb24gZW5jb2RpbmcuCiAKIAogVGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIG11c3QgZ3VhcmFudGVlIHRvIHN1Y2Nlc3NmdWxseSBkZWNvZGUgYWxsIGJ5dGVzCkBAIC0zMTEsOCArMzEyLDYgQEAKIAogICAgUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgaWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IGdldHBwaWQoKQogCkBAIC01NDksOCArNTQ4LDYgQEAKICAgIE9uIHBsYXRmb3JtcyB3aGVyZSA6YzpmdW5jOmBzdHJlcnJvcmAgcmV0dXJucyBgYE5VTExgYCB3aGVuIGdpdmVuIGFuIHVua25vd24KICAgIGVycm9yIG51bWJlciwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZGF0YTo6IHN1cHBvcnRzX2J5dGVzX2Vudmlyb24KIApAQCAtNTY0LDggKzU2MSw2IEBACiAKICAgIFNldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiB1bmFtZSgpCiAKQEAgLTY1Niw4ICs2NTEsNiBAQAogCiAgICBDbG9zZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQpAQCAtNjc3LDggKzY3MCw2IEBACiAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgIHBhc3MKIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZGV2aWNlX2VuY29kaW5nKGZkKQogCkBAIC02OTUsOCArNjg2LDYgQEAKICAgIDI6IHN0ZGVyciksIHRoZSBuZXcgZmlsZSBkZXNjcmlwdG9yIGlzIDpyZWY6YGluaGVyaXRhYmxlCiAgICA8ZmRfaW5oZXJpdGFuY2U+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIG5ldyBmaWxlIGRlc2NyaXB0b3IgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KIApAQCAtNzA3LDggKzY5Niw2IEBACiAgICBUaGUgZmlsZSBkZXNjcmlwdG9yICpmZDIqIGlzIDpyZWY6YGluaGVyaXRhYmxlIDxmZF9pbmhlcml0YW5jZT5gIGJ5IGRlZmF1bHQsCiAgICBvciBub24taW5oZXJpdGFibGUgaWYgKmluaGVyaXRhYmxlKiBpcyBgYEZhbHNlYGAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZCB0aGUgb3B0aW9uYWwgKmluaGVyaXRhYmxlKiBwYXJhbWV0ZXIuCiAKQEAgLTc3NCw4ICs3NjEsNiBAQAogCiAgICAgICBUaGUgOmZ1bmM6YC5zdGF0YCBmdW5jdGlvbi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZnN0YXR2ZnMoZmQpCiAKQEAgLTgwNCw4ICs3ODksMjEgQEAKICAgIG1vc3QgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bwogICAgYGBvcy50cnVuY2F0ZShmZCwgbGVuZ3RoKWBgLgogCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCisKKy4uIGZ1bmN0aW9uOjogZ2V0X2Jsb2NraW5nKGZkKQorCisgICBHZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIGZpbGUgZGVzY3JpcHRvcjogYGBGYWxzZWBgIGlmIHRoZQorICAgOmRhdGE6YE9fTk9OQkxPQ0tgIGZsYWcgaXMgc2V0LCBgYFRydWVgYCBpZiB0aGUgZmxhZyBpcyBjbGVhcmVkLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgc2V0X2Jsb2NraW5nYCBhbmQgOm1ldGg6YHNvY2tldC5zb2NrZXQuc2V0YmxvY2tpbmdgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGlzYXR0eShmZCkKIApAQCAtODQ2LDggKzg0NCw2IEBACiAgICBjdXJyZW50IHBvc2l0aW9uOyA6Y29uc3Q6YFNFRUtfRU5EYCBvciBgYDJgYCB0byBzZXQgaXQgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZgogICAgdGhlIGZpbGUuIFJldHVybiB0aGUgbmV3IGN1cnNvciBwb3NpdGlvbiBpbiBieXRlcywgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZGF0YTo6IFNFRUtfU0VUCiAgICAgICAgICAgU0VFS19DVVIKQEAgLTg1Niw4ICs4NTIsNiBAQAogICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YGxzZWVrYCBmdW5jdGlvbi4gVGhlaXIgdmFsdWVzIGFyZSAwLCAxLCBhbmQgMiwKICAgIHJlc3BlY3RpdmVseS4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgY291bGQgc3VwcG9ydCBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQogICAgICAgOmRhdGE6YG9zLlNFRUtfSE9MRWAgb3IgOmRhdGE6YG9zLlNFRUtfREFUQWAuCkBAIC04NzgsOCArODcyLDYgQEAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCiAgICA8ZGlyX2ZkPmAgd2l0aCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgbmV3IGZpbGUgZGVzY3JpcHRvciBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCkBAIC04OTMsNiArODg1LDExIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIG9wdGlvbnMgZm9yIHRoZSAqZmxhZ3MqIHBhcmFtZXRlciB0byB0aGUKIDpmdW5jOmB+b3Mub3BlbmAgZnVuY3Rpb24uICBUaGV5IGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBPUiBvcGVyYXRvcgogYGB8YGAuICBTb21lIG9mIHRoZW0gYXJlIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gIEZvciBkZXNjcmlwdGlvbnMgb2YKQEAgLTEwNjAsOCArMTA1Nyw2IEBACiAgICBieXRlcyByZWFkLiAgSWYgdGhlIGVuZCBvZiB0aGUgZmlsZSByZWZlcnJlZCB0byBieSAqZmQqIGhhcyBiZWVuIHJlYWNoZWQsIGFuCiAgICBlbXB0eSBieXRlcyBvYmplY3QgaXMgcmV0dXJuZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGxvdy1sZXZlbCBJL08gYW5kIG11c3QgYmUgYXBwbGllZCB0byBhIGZpbGUKQEAgLTEwNzAsNiArMTA2NSwxMSBAQAogICAgICAgOmZ1bmM6YHBvcGVuYCBvciA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRpbmAsIHVzZSBpdHMKICAgICAgIDptZXRoOmB+ZmlsZS5yZWFkYCBvciA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIGNvdW50KQogICAgICAgICAgICAgICBzZW5kZmlsZShvdXQsIGluLCBvZmZzZXQsIGNvdW50LCBbaGVhZGVyc10sIFt0cmFpbGVyc10sIGZsYWdzPTApCkBAIC0xMDk5LDkgKzEwOTksMjYgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiBub3RlOjoKKworICAgICAgRm9yIGEgaGlnaGVyLWxldmVsIHdyYXBwZXIgb2YgOmZ1bmM6YHNlbmRmaWxlYCwgc2VlCisgICAgICA6bWV0aDpgc29ja2V0LnNvY2tldC5zZW5kZmlsZWAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZykKKworICAgU2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZSBzcGVjaWZpZWQgZmlsZSBkZXNjcmlwdG9yLiBTZXQgdGhlCisgICA6ZGF0YTpgT19OT05CTE9DS2AgZmxhZyBpZiBibG9ja2luZyBpcyBgYEZhbHNlYGAsIGNsZWFyIHRoZSBmbGFnIG90aGVyd2lzZS4KKworICAgU2VlIGFsc28gOmZ1bmM6YGdldF9ibG9ja2luZ2AgYW5kIDptZXRoOmBzb2NrZXQuc29ja2V0LnNldGJsb2NraW5nYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBkYXRhOjogU0ZfTk9ESVNLSU8KICAgICAgICAgICBTRl9NTk9XQUlUCiAgICAgICAgICAgU0ZfU1lOQwpAQCAtMTE1OCw4ICsxMTc1LDYgQEAKICAgIFdyaXRlIHRoZSBieXRlc3RyaW5nIGluICpzdHIqIHRvIGZpbGUgZGVzY3JpcHRvciAqZmQqLiBSZXR1cm4gdGhlIG51bWJlciBvZgogICAgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQpAQCAtMTE2OCw2ICsxMTgzLDExIEBACiAgICAgICA6ZnVuYzpgZmRvcGVuYCwgb3IgOmRhdGE6YHN5cy5zdGRvdXRgIG9yIDpkYXRhOmBzeXMuc3RkZXJyYCwgdXNlIGl0cwogICAgICAgOm1ldGg6YH5maWxlLndyaXRlYCBtZXRob2QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiB3cml0ZXYoZmQsIGJ1ZmZlcnMpCiAKQEAgLTEzMzAsOCArMTM1MCw2IEBACiAgICBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzYC4gIElmIGl0IGlzCiAgICB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBVc2luZyA6ZnVuYzpgYWNjZXNzYCB0byBjaGVjayBpZiBhIHVzZXIgaXMgYXV0aG9yaXplZCB0byBlLmcuIG9wZW4gYSBmaWxlCkBAIC0xMzg0LDggKzE0MDIsNiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuICBUaGUKICAgIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhbiBvcGVuZWQgZGlyZWN0b3J5LCBub3QgYW4gb3BlbiBmaWxlLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IKICAgICAgIG9uIHNvbWUgcGxhdGZvcm1zLgpAQCAtMTQ0Nyw4ICsxNDYzLDYgQEAKICAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAogICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgc2V0IHRoZSBmaWxlJ3MKQEAgLTE0OTksMTUgKzE1MTMsMTEgQEAKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Y3dkYigpCiAKICAgIFJldHVybiBhIGJ5dGVzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBsY2hmbGFncyhwYXRoLCBmbGFncykKIApAQCAtMTU3MCw3ICsxNTgwLDExIEBACiAgICAuLiBub3RlOjoKICAgICAgIFRvIGVuY29kZSBgYHN0cmBgIGZpbGVuYW1lcyB0byBgYGJ5dGVzYGAsIHVzZSA6ZnVuYzpgfm9zLmZzZW5jb2RlYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIFRoZSA6ZnVuYzpgc2NhbmRpcmAgZnVuY3Rpb24gcmV0dXJucyBkaXJlY3RvcnkgZW50cmllcyBhbG9uZyB3aXRoCisgICAgICBmaWxlIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgZ2l2aW5nIGJldHRlciBwZXJmb3JtYW5jZSBmb3IgbWFueQorICAgICAgY29tbW9uIHVzZSBjYXNlcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqcGF0aCogcGFyYW1ldGVyIGJlY2FtZSBvcHRpb25hbC4KQEAgLTE2MTksOCArMTYzMyw2IEBACiAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXM7IHNlZSB0aGUKICAgIDptb2Q6YHRlbXBmaWxlYCBtb2R1bGUncyA6ZnVuYzpgdGVtcGZpbGUubWtkdGVtcGAgZnVuY3Rpb24uCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKQEAgLTE3NzksOCArMTc5MSw2IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIDpmdW5jOmB1bmxpbmtgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCkBAIC0xODE0LDggKzE4MjQsNiBAQAogCiAgICBJZiB5b3Ugd2FudCBjcm9zcy1wbGF0Zm9ybSBvdmVyd3JpdGluZyBvZiB0aGUgZGVzdGluYXRpb24sIHVzZSA6ZnVuYzpgcmVwbGFjZWAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKnNyY19kaXJfZmQqIGFuZCAqZHN0X2Rpcl9mZCogYXJndW1lbnRzLgogCkBAIC0xODQ0LDggKzE4NTIsNiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCiAgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCkBAIC0xODU4LDEyICsxODY0LDE4MCBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKIAorLi4gZnVuY3Rpb246OiBzY2FuZGlyKHBhdGg9Jy4nKQorCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbnRyaWVzCisgICBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4gYXJiaXRyYXJ5CisgICBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdCBpbmNsdWRlZC4KKworICAgVXNpbmcgOmZ1bmM6YHNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YGxpc3RkaXJgIGNhbiBzaWduaWZpY2FudGx5CisgICBpbmNyZWFzZSB0aGUgcGVyZm9ybWFuY2Ugb2YgY29kZSB0aGF0IGFsc28gbmVlZHMgZmlsZSB0eXBlIG9yIGZpbGUKKyAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCisgICBpbmZvcm1hdGlvbiBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBpdCB3aGVuIHNjYW5uaW5nIGEgZGlyZWN0b3J5LgorICAgQWxsIDpjbGFzczpgRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0CisgICA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+RGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5CisgICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgRGlyRW50cnkuc3RhdGAKKyAgIGFsd2F5cyByZXF1aXJlcyBhIHN5c3RlbSBjYWxsIG9uIFVuaXggYnV0IG9ubHkgcmVxdWlyZXMgb25lIGZvcgorICAgc3ltYm9saWMgbGlua3Mgb24gV2luZG93cy4KKworICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAodXNlCisgICA6ZnVuYzpgfm9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZW5jb2RlIGFuZCBkZWNvZGUKKyAgIDpjbGFzczpgYnl0ZXNgIHBhdGhzKS4gT24gV2luZG93cywgKnBhdGgqIG11c3QgYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAuCisgICBPbiBib3RoIHN5dGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+RGlyRW50cnkubmFtZWAgYW5kCisgICA6YXR0cjpgfkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YERpckVudHJ5YCB3aWxsIGJlIG9mCisgICB0aGUgc2FtZSB0eXBlIGFzICpwYXRoKi4KKworICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGEgc2ltcGxlIHVzZSBvZiA6ZnVuYzpgc2NhbmRpcmAgdG8gZGlzcGxheSBhbGwKKyAgIHRoZSBmaWxlcyAoZXhjbHVkaW5nIGRpcmVjdG9yaWVzKSBpbiB0aGUgZ2l2ZW4gKnBhdGgqIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aAorICAgYGAnLidgYC4gVGhlIGBgZW50cnkuaXNfZmlsZSgpYGAgY2FsbCB3aWxsIGdlbmVyYWxseSBub3QgbWFrZSBhbiBhZGRpdGlvbmFsCisgICBzeXN0ZW0gY2FsbDo6CisKKyAgICAgIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKHBhdGgpOgorICAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgcHJpbnQoZW50cnkubmFtZSkKKworICAgLi4gbm90ZTo6CisKKyAgICAgIE9uIFVuaXgtYmFzZWQgc3lzdGVtcywgOmZ1bmM6YHNjYW5kaXJgIHVzZXMgdGhlIHN5c3RlbSdzCisgICAgICBgb3BlbmRpcigpIDxodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9vcGVuZGlyLmh0bWw+YF8KKyAgICAgIGFuZAorICAgICAgYHJlYWRkaXIoKSA8aHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvcmVhZGRpcl9yLmh0bWw+YF8KKyAgICAgIGZ1bmN0aW9ucy4gT24gV2luZG93cywgaXQgdXNlcyB0aGUgV2luMzIKKyAgICAgIGBGaW5kRmlyc3RGaWxlVyA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9hYTM2NDQxOCh2PXZzLjg1KS5hc3B4PmBfCisgICAgICBhbmQKKyAgICAgIGBGaW5kTmV4dEZpbGVXIDxodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY0NDI4KHY9dnMuODUpLmFzcHg+YF8KKyAgICAgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gY2xhc3M6OiBEaXJFbnRyeQorCisgICBPYmplY3QgeWllbGRlZCBieSA6ZnVuYzpgc2NhbmRpcmAgdG8gZXhwb3NlIHRoZSBmaWxlIHBhdGggYW5kIG90aGVyIGZpbGUKKyAgIGF0dHJpYnV0ZXMgb2YgYSBkaXJlY3RvcnkgZW50cnkuCisKKyAgIDpmdW5jOmBzY2FuZGlyYCB3aWxsIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGlzIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIHdpdGhvdXQKKyAgIG1ha2luZyBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscy4gV2hlbiBhIGBgc3RhdCgpYGAgb3IgYGBsc3RhdCgpYGAgc3lzdGVtIGNhbGwKKyAgIGlzIG1hZGUsIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KKworICAgYGBEaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKKyAgIHN0cnVjdHVyZXM7IGlmIHlvdSBrbm93IHRoZSBmaWxlIG1ldGFkYXRhIGhhcyBjaGFuZ2VkIG9yIGlmIGEgbG9uZyB0aW1lIGhhcworICAgZWxhcHNlZCBzaW5jZSBjYWxsaW5nIDpmdW5jOmBzY2FuZGlyYCwgY2FsbCBgYG9zLnN0YXQoZW50cnkucGF0aClgYCB0byBmZXRjaAorICAgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgQmVjYXVzZSB0aGUgYGBEaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKKyAgIGFsc28gcmFpc2UgOmV4YzpgT1NFcnJvcmAuIElmIHlvdSBuZWVkIHZlcnkgZmluZS1ncmFpbmVkCisgICBjb250cm9sIG92ZXIgZXJyb3JzLCB5b3UgY2FuIGNhdGNoIDpleGM6YE9TRXJyb3JgIHdoZW4gY2FsbGluZyBvbmUgb2YgdGhlCisgICBgYERpckVudHJ5YGAgbWV0aG9kcyBhbmQgaGFuZGxlIGFzIGFwcHJvcHJpYXRlLgorCisgICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBEaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgorCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIFRoZSBlbnRyeSdzIGJhc2UgZmlsZW5hbWUsIHJlbGF0aXZlIHRvIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCisgICAgICBhcmd1bWVudC4KKworICAgICAgVGhlIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgd2lsbCBiZSBvZiB0aGUgc2FtZSB0eXBlIChgYHN0cmBgIG9yCisgICAgICBgYGJ5dGVzYGApIGFzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqIGFyZ3VtZW50LiBVc2UKKyAgICAgIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGRlY29kZSBieXRlIGZpbGVuYW1lcy4KKworICAgLi4gYXR0cmlidXRlOjogcGF0aAorCisgICAgICBUaGUgZW50cnkncyBmdWxsIHBhdGggbmFtZTogZXF1aXZhbGVudCB0byBgYG9zLnBhdGguam9pbihzY2FuZGlyX3BhdGgsCisgICAgICBlbnRyeS5uYW1lKWBgIHdoZXJlICpzY2FuZGlyX3BhdGgqIGlzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCisgICAgICBhcmd1bWVudC4gIFRoZSBwYXRoIGlzIG9ubHkgYWJzb2x1dGUgaWYgdGhlIDpmdW5jOmBzY2FuZGlyYCAqcGF0aCoKKyAgICAgIGFyZ3VtZW50IHdhcyBhYnNvbHV0ZS4KKworICAgICAgVGhlIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGUgd2lsbCBiZSBvZiB0aGUgc2FtZSB0eXBlIChgYHN0cmBgIG9yCisgICAgICBgYGJ5dGVzYGApIGFzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqIGFyZ3VtZW50LiBVc2UKKyAgICAgIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGRlY29kZSBieXRlIGZpbGVuYW1lcy4KKworICAgLi4gbWV0aG9kOjogaW5vZGUoKQorCisgICAgICBSZXR1cm4gdGhlIGlub2RlIG51bWJlciBvZiB0aGUgZW50cnkuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB1c2UgYGBvcy5zdGF0KGVudHJ5LnBhdGgsCisgICAgICBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgICAgIE9uIFVuaXgsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkLgorCisgICAuLiBtZXRob2Q6OiBpc19kaXIoXCosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICAgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCByZXR1cm4gYGBUcnVlYGAgaWYgdGhlCisgICAgICBlbnRyeSBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gYSBkaXJlY3Rvcnk7CisgICAgICByZXR1cm4gYGBGYWxzZWBgIGlmIGl0IGlzIG9yIHBvaW50cyB0byBhbnkgb3RoZXIga2luZCBvZiBmaWxlLCBvciBpZiBpdAorICAgICAgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYEZhbHNlYGAsIHJldHVybiBgYFRydWVgYCBvbmx5IGlmIHRoaXMgZW50cnkKKyAgICAgIGlzIGEgZGlyZWN0b3J5OyByZXR1cm4gYGBGYWxzZWBgIGlmIGl0IGlzIGFueSBvdGhlciBraW5kIG9mIGZpbGUKKyAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwgOmZ1bmM6YG9zLnN0YXRgCisgICAgICBhbG9uZyB3aXRoIDpmdW5jOmBzdGF0LlNfSVNESVJgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoaXMgbWV0aG9kIGNhbiByYWlzZSA6ZXhjOmBPU0Vycm9yYCwgc3VjaCBhcyA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgLAorICAgICAgYnV0IDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYCBpcyBjYXVnaHQgYW5kIG5vdCByYWlzZWQuCisKKyAgICAgIEluIG1vc3QgY2FzZXMsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkLgorCisgICAuLiBtZXRob2Q6OiBpc19maWxlKFwqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSwgcmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZQorICAgICAgZW50cnkgaXMgYSBmaWxlIG9yIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBhIGZpbGU7IHJldHVybiBgYEZhbHNlYGAKKyAgICAgIGlmIGl0IGlzIG9yIHBvaW50cyB0byBhIGRpcmVjdG9yeSBvciBvdGhlciBub24tZmlsZSBlbnRyeSwgb3IgaWYgaXQKKyAgICAgIGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgYGBGYWxzZWBgLCByZXR1cm4gYGBUcnVlYGAgb25seSBpZiB0aGlzIGVudHJ5CisgICAgICBpcyBhIGZpbGU7IHJldHVybiBgYEZhbHNlYGAgaWYgaXQgaXMgYSBkaXJlY3Rvcnkgb3Igb3RoZXIgbm9uLWZpbGUgZW50cnksCisgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCisKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsIDpmdW5jOmBvcy5zdGF0YAorICAgICAgYWxvbmcgd2l0aCA6ZnVuYzpgc3RhdC5TX0lTUkVHYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICAgICBUaGlzIG1ldGhvZCBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAsIHN1Y2ggYXMgOmV4YzpgUGVybWlzc2lvbkVycm9yYCwKKyAgICAgIGJ1dCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgY2F1Z2h0IGFuZCBub3QgcmFpc2VkLgorCisgICAgICBJbiBtb3N0IGNhc2VzLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZC4KKworICAgLi4gbWV0aG9kOjogaXNfc3ltbGluaygpCisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGlzIGVudHJ5IGlzIGEgc3ltYm9saWMgbGluayAoZXZlbiBpZiBicm9rZW4pOworICAgICAgcmV0dXJuIGBgRmFsc2VgYCBpZiBpdCBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgb3IgYW55IGtpbmQgb2YgZmlsZSwKKyAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwKKyAgICAgIDpmdW5jOmBvcy5wYXRoLmlzbGlua2AgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgICAgVGhlIG1ldGhvZCBjYW4gcmFpc2UgOmV4YzpgT1NFcnJvcmAsIHN1Y2ggYXMgOmV4YzpgUGVybWlzc2lvbkVycm9yYCwKKyAgICAgIGJ1dCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgY2F1Z2h0IGFuZCBub3QgcmFpc2VkLgorCisgICAgICBJbiBtb3N0IGNhc2VzLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZC4KKworICAgLi4gbWV0aG9kOjogc3RhdChcKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgICAgIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgIG9iamVjdCBmb3IgdGhpcyBlbnRyeS4gVGhpcyBtZXRob2QKKyAgICAgIGZvbGxvd3Mgc3ltYm9saWMgbGlua3MgYnkgZGVmYXVsdDsgdG8gc3RhdCBhIHN5bWJvbGljIGxpbmsgYWRkIHRoZQorICAgICAgYGBmb2xsb3dfc3ltbGlua3M9RmFsc2VgYCBhcmd1bWVudC4KKworICAgICAgT24gVW5peCwgdGhpcyBtZXRob2QgYWx3YXlzIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwuIE9uIFdpbmRvd3MsCisgICAgICBgYERpckVudHJ5LnN0YXQoKWBgIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwgb25seSBpZiB0aGUKKyAgICAgIGVudHJ5IGlzIGEgc3ltYm9saWMgbGluaywgYW5kIGBgRGlyRW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAKKyAgICAgIG5ldmVyIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwuCisKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBgYHN0X2lub2BgLCBgYHN0X2RldmBgIGFuZCBgYHN0X25saW5rYGAgYXR0cmlidXRlcyBvZiB0aGUKKyAgICAgIDpjbGFzczpgc3RhdF9yZXN1bHRgIGFyZSBhbHdheXMgc2V0IHRvIHplcm8uIENhbGwgOmZ1bmM6YG9zLnN0YXRgIHRvCisgICAgICBnZXQgdGhlc2UgYXR0cmlidXRlcy4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwgOmZ1bmM6YG9zLnN0YXRgCisgICAgICB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IHN0YXQocGF0aCwgXCosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgR2V0IHRoZSBzdGF0dXMgb2YgYSBmaWxlIG9yIGEgZmlsZSBkZXNjcmlwdG9yLiBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGEKQEAgLTE4OTAsOCArMjA2NCw2IEBACiAgICAgICA+Pj4gc3RhdGluZm8uc3Rfc2l6ZQogICAgICAgMjY0CiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gc2VlYWxzbzo6CiAKICAgICAgIDpmdW5jOmBmc3RhdGAgYW5kIDpmdW5jOmBsc3RhdGAgZnVuY3Rpb25zLgpAQCAtMjAzOSw2ICsyMjExLDE1IEBACiAKICAgICAgIEZpbGUgdHlwZS4KIAorICAgT24gV2luZG93cyBzeXN0ZW1zLCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZSBpcyBhbHNvIGF2YWlsYWJsZToKKworICAgLi4gYXR0cmlidXRlOjogc3RfZmlsZV9hdHRyaWJ1dGVzCisKKyAgICAgIFdpbmRvd3MgZmlsZSBhdHRyaWJ1dGVzOiBgYGR3RmlsZUF0dHJpYnV0ZXNgYCBtZW1iZXIgb2YgdGhlCisgICAgICBgYEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OYGAgc3RydWN0dXJlIHJldHVybmVkIGJ5CisgICAgICA6YzpmdW5jOmBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZWAuIFNlZSB0aGUgYGBGSUxFX0FUVFJJQlVURV8qYGAKKyAgICAgIGNvbnN0YW50cyBpbiB0aGUgOm1vZDpgc3RhdGAgbW9kdWxlLgorCiAgICBUaGUgc3RhbmRhcmQgbW9kdWxlIDptb2Q6YHN0YXRgIGRlZmluZXMgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgdGhhdCBhcmUKICAgIHVzZWZ1bCBmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIGEgOmM6dHlwZTpgc3RhdGAgc3RydWN0dXJlLiAoT24KICAgIFdpbmRvd3MsIHNvbWUgaXRlbXMgYXJlIGZpbGxlZCB3aXRoIGR1bW15IHZhbHVlcy4pCkBAIC0yMDU2LDYgKzIyMzcsOSBAQAogICAgICAgQWRkZWQgdGhlIDphdHRyOmBzdF9hdGltZV9uc2AsIDphdHRyOmBzdF9tdGltZV9uc2AsIGFuZAogICAgICAgOmF0dHI6YHN0X2N0aW1lX25zYCBtZW1iZXJzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgc3RfZmlsZV9hdHRyaWJ1dGVzYCBtZW1iZXIgb24gV2luZG93cy4KKwogCiAuLiBmdW5jdGlvbjo6IHN0YXRfZmxvYXRfdGltZXMoW25ld3ZhbHVlXSkKIApAQCAtMjI1OSwxMCArMjQ0MywxMiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LgorICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MKIAogLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTIyNzEsOCArMjQ1Nyw2IEBACiAgICBuYW1lLiAgUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgOmZ1bmM6YHJlbW92ZWAgZm9yCiAgICBmdXJ0aGVyIGluZm9ybWF0aW9uLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIApAQCAtMjMwOSw4ICsyNDkzLDYgQEAKICAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAogICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCosICpmb2xsb3dfc3ltbGlua3MqLCBhbmQgKm5zKiBwYXJhbWV0ZXJzLgpAQCAtMjQwMSw2ICsyNTgzLDEwIEBACiAgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKICAgICAgICAgICAgICAgb3Mucm1kaXIob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgOmZ1bmM6YG9zLnNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YG9zLmxpc3RkaXJgLAorICAgICAgbWFraW5nIGl0IGZhc3RlciBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDpmdW5jOmBvcy5zdGF0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGZ3YWxrKHRvcD0nLicsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKQogCkBAIC0yNTU3LDggKzI3NDMsNiBAQAogICAgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIDpjb25zdDpgU0lHQUJSVGAgd2l0aAogICAgOmZ1bmM6YHNpZ25hbC5zaWduYWxgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBleGVjbChwYXRoLCBhcmcwLCBhcmcxLCAuLi4pCiAgICAgICAgICAgICAgIGV4ZWNsZShwYXRoLCBhcmcwLCBhcmcxLCAuLi4sIGVudikKQEAgLTI2MjIsOCArMjgwNiw2IEBACiAgICBFeGl0IHRoZSBwcm9jZXNzIHdpdGggc3RhdHVzICpuKiwgd2l0aG91dCBjYWxsaW5nIGNsZWFudXAgaGFuZGxlcnMsIGZsdXNoaW5nCiAgICBzdGRpbyBidWZmZXJzLCBldGMuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoZSBzdGFuZGFyZCB3YXkgdG8gZXhpdCBpcyBgYHN5cy5leGl0KG4pYGAuICA6ZnVuYzpgX2V4aXRgIHNob3VsZApAQCAtMjk4Niw2ICszMTY4LDEwIEBACiAgICBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuICBVc2UgdGhlIDpmdW5jOmBvcy5wYXRoLm5vcm1wYXRoYCBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdAogICAgdGhlIHBhdGggaXMgcHJvcGVybHkgZW5jb2RlZCBmb3IgV2luMzIuCiAKKyAgIFRvIHJlZHVjZSBpbnRlcnByZXRlciBzdGFydHVwIG92ZXJoZWFkLCB0aGUgV2luMzIgOmM6ZnVuYzpgU2hlbGxFeGVjdXRlYAorICAgZnVuY3Rpb24gaXMgbm90IHJlc29sdmVkIHVudGlsIHRoaXMgZnVuY3Rpb24gaXMgZmlyc3QgY2FsbGVkLiAgSWYgdGhlIGZ1bmN0aW9uCisgICBjYW5ub3QgYmUgcmVzb2x2ZWQsIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorCiAgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKIApAQCAtMzEzMyw2ICszMzE5LDExIEBACiAgICBpZCBpcyBrbm93biwgbm90IG5lY2Vzc2FyaWx5IGEgY2hpbGQgcHJvY2Vzcy4gVGhlIDpmdW5jOmBzcGF3blwqIDxzcGF3bmw+YAogICAgZnVuY3Rpb25zIGNhbGxlZCB3aXRoIDpjb25zdDpgUF9OT1dBSVRgIHJldHVybiBzdWl0YWJsZSBwcm9jZXNzIGhhbmRsZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gZnVuY3Rpb246OiB3YWl0MyhvcHRpb25zKQogCkBAIC0zNTQwLDMgKzM3MzEsOSBAQAogCiAgICBGb3IgYW4gZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgogICAgcHJvdmlkZWQgYnkgeW91ciBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyBub3cgdXNlZAorICAgICAgd2hlbiBhdmFpbGFibGUuICBPbiBPcGVuQlNEIDUuNiBhbmQgbmV3ZXIsIHRoZSBDIGBgZ2V0ZW50cm9weSgpYGAKKyAgICAgIGZ1bmN0aW9uIGlzIG5vdyB1c2VkLiBUaGVzZSBmdW5jdGlvbnMgYXZvaWQgdGhlIHVzYWdlIG9mIGFuIGludGVybmFsIGZpbGUKKyAgICAgIGRlc2NyaXB0b3IuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QgYi9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKaW5kZXggYmI1MDgxYS4uYzYwZDU5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdApAQCAtMTQ4LDIxICsxNDgsMzAgQEAKIAogLi4gbWV0aG9kOjogb3NzX2F1ZGlvX2RldmljZS53cml0ZShkYXRhKQogCi0gICBXcml0ZSB0aGUgUHl0aG9uIHN0cmluZyAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKLSAgIGJ5dGVzIHdyaXR0ZW4uICBJZiB0aGUgYXVkaW8gZGV2aWNlIGlzIGluIGJsb2NraW5nIG1vZGUgKHRoZSBkZWZhdWx0KSwgdGhlCi0gICBlbnRpcmUgc3RyaW5nIGlzIGFsd2F5cyB3cml0dGVuIChhZ2FpbiwgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1c3VhbCBVbml4IGRldmljZQotICAgc2VtYW50aWNzKS4gIElmIHRoZSBkZXZpY2UgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUsIHNvbWUgZGF0YSBtYXkgbm90IGJlIHdyaXR0ZW4KKyAgIFdyaXRlIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZSBhbmQgcmV0dXJuIHRoZQorICAgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICBJZiB0aGUgYXVkaW8gZGV2aWNlIGlzIGluIGJsb2NraW5nIG1vZGUgKHRoZQorICAgZGVmYXVsdCksIHRoZSBlbnRpcmUgZGF0YSBpcyBhbHdheXMgd3JpdHRlbiAoYWdhaW4sIHRoaXMgaXMgZGlmZmVyZW50IGZyb20KKyAgIHVzdWFsIFVuaXggZGV2aWNlIHNlbWFudGljcykuICBJZiB0aGUgZGV2aWNlIGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLCBzb21lCisgICBkYXRhIG1heSBub3QgYmUgd3JpdHRlbgogICAgLS0tc2VlIDptZXRoOmB3cml0ZWFsbGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAKIC4uIG1ldGhvZDo6IG9zc19hdWRpb19kZXZpY2Uud3JpdGVhbGwoZGF0YSkKIAotICAgV3JpdGUgdGhlIGVudGlyZSBQeXRob24gc3RyaW5nICpkYXRhKiB0byB0aGUgYXVkaW8gZGV2aWNlOiB3YWl0cyB1bnRpbCB0aGUgYXVkaW8KLSAgIGRldmljZSBpcyBhYmxlIHRvIGFjY2VwdCBkYXRhLCB3cml0ZXMgYXMgbXVjaCBkYXRhIGFzIGl0IHdpbGwgYWNjZXB0LCBhbmQKLSAgIHJlcGVhdHMgdW50aWwgKmRhdGEqIGhhcyBiZWVuIGNvbXBsZXRlbHkgd3JpdHRlbi4gSWYgdGhlIGRldmljZSBpcyBpbiBibG9ja2luZwotICAgbW9kZSAodGhlIGRlZmF1bHQpLCB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgOm1ldGg6YHdyaXRlYDsgOm1ldGg6YHdyaXRlYWxsYAotICAgaXMgb25seSB1c2VmdWwgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBIYXMgbm8gcmV0dXJuIHZhbHVlLCBzaW5jZSB0aGUgYW1vdW50IG9mCi0gICBkYXRhIHdyaXR0ZW4gaXMgYWx3YXlzIGVxdWFsIHRvIHRoZSBhbW91bnQgb2YgZGF0YSBzdXBwbGllZC4KKyAgIFdyaXRlIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCAqZGF0YSogdG8gdGhlIGF1ZGlvIGRldmljZTogd2FpdHMgdW50aWwKKyAgIHRoZSBhdWRpbyBkZXZpY2UgaXMgYWJsZSB0byBhY2NlcHQgZGF0YSwgd3JpdGVzIGFzIG11Y2ggZGF0YSBhcyBpdCB3aWxsCisgICBhY2NlcHQsIGFuZCByZXBlYXRzIHVudGlsICpkYXRhKiBoYXMgYmVlbiBjb21wbGV0ZWx5IHdyaXR0ZW4uIElmIHRoZSBkZXZpY2UKKyAgIGlzIGluIGJsb2NraW5nIG1vZGUgKHRoZSBkZWZhdWx0KSwgdGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCisgICA6bWV0aDpgd3JpdGVgOyA6bWV0aDpgd3JpdGVhbGxgIGlzIG9ubHkgdXNlZnVsIGluIG5vbi1ibG9ja2luZyBtb2RlLiAgSGFzCisgICBubyByZXR1cm4gdmFsdWUsIHNpbmNlIHRoZSBhbW91bnQgb2YgZGF0YSB3cml0dGVuIGlzIGFsd2F5cyBlcXVhbCB0byB0aGUKKyAgIGFtb3VudCBvZiBkYXRhIHN1cHBsaWVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgQXVkaW8gZGV2aWNlIG9iamVjdHMgYWxzbyBzdXBwb3J0IHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wsIGkuZS4gdGhleSBjYW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0IGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKaW5kZXggMjRlMmEzMC4uMmYwNjU0NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKQEAgLTYyOCw2ICs2MjgsMTcgQEAKICAgICAgIFBvc2l4UGF0aCgnL2hvbWUvYW50b2luZS9wYXRobGliJykKIAogCisuLiBjbGFzc21ldGhvZDo6IFBhdGguaG9tZSgpCisKKyAgIFJldHVybiBhIG5ldyBwYXRoIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSAoYXMKKyAgIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5wYXRoLmV4cGFuZHVzZXJgIHdpdGggYGB+YGAgY29uc3RydWN0KTo6CisKKyAgICAgID4+PiBQYXRoLmhvbWUoKQorICAgICAgUG9zaXhQYXRoKCcvaG9tZS9hbnRvaW5lJykKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUGF0aC5zdGF0KCkKIAogICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcGF0aCAoc2ltaWxhcmx5IHRvIDpmdW5jOmBvcy5zdGF0YCkuCkBAIC02NzAsNiArNjgxLDE4IEBACiAgICAgICBzeW1saW5rICpwb2ludHMgdG8qIGFuIGV4aXN0aW5nIGZpbGUgb3IgZGlyZWN0b3J5LgogCiAKKy4uIG1ldGhvZDo6IFBhdGguZXhwYW5kdXNlcigpCisKKyAgIFJldHVybiBhIG5ldyBwYXRoIHdpdGggZXhwYW5kZWQgYGB+YGAgYW5kIGBgfnVzZXJgYCBjb25zdHJ1Y3RzLAorICAgYXMgcmV0dXJuZWQgYnkgOm1ldGg6YG9zLnBhdGguZXhwYW5kdXNlcmA6OgorCisgICAgICA+Pj4gcCA9IFBvc2l4UGF0aCgnfi9maWxtcy9Nb250eSBQeXRob24nKQorICAgICAgPj4+IHAuZXhwYW5kdXNlcigpCisgICAgICBQb3NpeFBhdGgoJy9ob21lL2VyaWMvZmlsbXMvTW9udHkgUHl0aG9uJykKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUGF0aC5nbG9iKHBhdHRlcm4pCiAKICAgIEdsb2IgdGhlIGdpdmVuICpwYXR0ZXJuKiBpbiB0aGUgZGlyZWN0b3J5IHJlcHJlc2VudGVkIGJ5IHRoaXMgcGF0aCwKQEAgLTc5MSw3ICs4MTQsNyBAQAogICAgdGhlIHN5bWJvbGljIGxpbmsncyBpbmZvcm1hdGlvbiByYXRoZXIgdGhhbiBpdHMgdGFyZ2V0J3MuCiAKIAotLi4gbWV0aG9kOjogUGF0aC5ta2Rpcihtb2RlPTBvNzc3LCBwYXJlbnRzPUZhbHNlKQorLi4gbWV0aG9kOjogUGF0aC5ta2Rpcihtb2RlPTBvNzc3LCBwYXJlbnRzPUZhbHNlLCBleGlzdF9vaz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBhdCB0aGlzIGdpdmVuIHBhdGguICBJZiAqbW9kZSogaXMgZ2l2ZW4sIGl0IGlzCiAgICBjb21iaW5lZCB3aXRoIHRoZSBwcm9jZXNzJyBgYHVtYXNrYGAgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBmaWxlIG1vZGUKQEAgLTgwNSw2ICs4MjgsMTYgQEAKICAgIElmICpwYXJlbnRzKiBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLCBhIG1pc3NpbmcgcGFyZW50IHJhaXNlcwogICAgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgLgogCisgICBJZiAqZXhpc3Rfb2sqIGlzIGZhbHNlICh0aGUgZGVmYXVsdCksIGFuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMKKyAgIHJhaXNlZCBpZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy4KKworICAgSWYgKmV4aXN0X29rKiBpcyB0cnVlLCA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGV4Y2VwdGlvbnMgd2lsbCBiZQorICAgaWdub3JlZCAoc2FtZSBiZWhhdmlvciBhcyB0aGUgUE9TSVggYGBta2RpciAtcGBgIGNvbW1hbmQpLCBidXQgb25seSBpZiB0aGUKKyAgIGxhc3QgcGF0aCBjb21wb25lbnQgaXMgbm90IGFuIGV4aXN0aW5nIG5vbi1kaXJlY3RvcnkgZmlsZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqZXhpc3Rfb2sqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogUGF0aC5vcGVuKG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpCiAKQEAgLTgyNCw2ICs4NTcsMzQgQEAKICAgIGlmIHRoZSBmaWxlJ3MgdWlkIGlzbid0IGZvdW5kIGluIHRoZSBzeXN0ZW0gZGF0YWJhc2UuCiAKIAorLi4gbWV0aG9kOjogUGF0aC5yZWFkX2J5dGVzKCkKKworICAgUmV0dXJuIHRoZSBiaW5hcnkgY29udGVudHMgb2YgdGhlIHBvaW50ZWQtdG8gZmlsZSBhcyBhIGJ5dGVzIG9iamVjdDo6CisKKyAgICAgID4+PiBwID0gUGF0aCgnbXlfYmluYXJ5X2ZpbGUnKQorICAgICAgPj4+IHAud3JpdGVfYnl0ZXMoYidCaW5hcnkgZmlsZSBjb250ZW50cycpCisgICAgICAyMAorICAgICAgPj4+IHAucmVhZF9ieXRlcygpCisgICAgICBiJ0JpbmFyeSBmaWxlIGNvbnRlbnRzJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBtZXRob2Q6OiBQYXRoLnJlYWRfdGV4dChlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKKworICAgUmV0dXJuIHRoZSBkZWNvZGVkIGNvbnRlbnRzIG9mIHRoZSBwb2ludGVkLXRvIGZpbGUgYXMgYSBzdHJpbmc6OgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ215X3RleHRfZmlsZScpCisgICAgICA+Pj4gcC53cml0ZV90ZXh0KCdUZXh0IGZpbGUgY29udGVudHMnKQorICAgICAgMTgKKyAgICAgID4+PiBwLnJlYWRfdGV4dCgpCisgICAgICAnVGV4dCBmaWxlIGNvbnRlbnRzJworCisgICBUaGUgb3B0aW9uYWwgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gOmZ1bmM6YG9wZW5gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBtZXRob2Q6OiBQYXRoLnJlbmFtZSh0YXJnZXQpCiAKICAgIFJlbmFtZSB0aGlzIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSBnaXZlbiAqdGFyZ2V0Ki4gICp0YXJnZXQqIGNhbiBiZQpAQCAtODg0LDYgKzk0NSwyNSBAQAogICAgUmVtb3ZlIHRoaXMgZGlyZWN0b3J5LiAgVGhlIGRpcmVjdG9yeSBtdXN0IGJlIGVtcHR5LgogCiAKKy4uIG1ldGhvZDo6IFBhdGguc2FtZWZpbGUob3RoZXJfcGF0aCkKKworICAgUmV0dXJuIHdoZXRoZXIgdGhpcyBwYXRoIHBvaW50cyB0byB0aGUgc2FtZSBmaWxlIGFzICpvdGhlcl9wYXRoKiwgd2hpY2gKKyAgIGNhbiBiZSBlaXRoZXIgYSBQYXRoIG9iamVjdCwgb3IgYSBzdHJpbmcuICBUaGUgc2VtYW50aWNzIGFyZSBzaW1pbGFyCisgICB0byA6ZnVuYzpgb3MucGF0aC5zYW1lZmlsZWAgYW5kIDpmdW5jOmBvcy5wYXRoLnNhbWVzdGF0YC4KKworICAgQW4gOmV4YzpgT1NFcnJvcmAgY2FuIGJlIHJhaXNlZCBpZiBlaXRoZXIgZmlsZSBjYW5ub3QgYmUgYWNjZXNzZWQgZm9yIHNvbWUKKyAgIHJlYXNvbi4KKworICAgICAgPj4+IHAgPSBQYXRoKCdzcGFtJykKKyAgICAgID4+PiBxID0gUGF0aCgnZWdncycpCisgICAgICA+Pj4gcC5zYW1lZmlsZShxKQorICAgICAgRmFsc2UKKyAgICAgID4+PiBwLnNhbWVmaWxlKCdzcGFtJykKKyAgICAgIFRydWUKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUGF0aC5zeW1saW5rX3RvKHRhcmdldCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSkKIAogICAgTWFrZSB0aGlzIHBhdGggYSBzeW1ib2xpYyBsaW5rIHRvICp0YXJnZXQqLiAgVW5kZXIgV2luZG93cywKQEAgLTkxNywzICs5OTcsMzMgQEAKIAogICAgUmVtb3ZlIHRoaXMgZmlsZSBvciBzeW1ib2xpYyBsaW5rLiAgSWYgdGhlIHBhdGggcG9pbnRzIHRvIGEgZGlyZWN0b3J5LAogICAgdXNlIDpmdW5jOmBQYXRoLnJtZGlyYCBpbnN0ZWFkLgorCisKKy4uIG1ldGhvZDo6IFBhdGgud3JpdGVfYnl0ZXMoZGF0YSkKKworICAgT3BlbiB0aGUgZmlsZSBwb2ludGVkIHRvIGluIGJ5dGVzIG1vZGUsIHdyaXRlICpkYXRhKiB0byBpdCwgYW5kIGNsb3NlIHRoZQorICAgZmlsZTo6CisKKyAgICAgID4+PiBwID0gUGF0aCgnbXlfYmluYXJ5X2ZpbGUnKQorICAgICAgPj4+IHAud3JpdGVfYnl0ZXMoYidCaW5hcnkgZmlsZSBjb250ZW50cycpCisgICAgICAyMAorICAgICAgPj4+IHAucmVhZF9ieXRlcygpCisgICAgICBiJ0JpbmFyeSBmaWxlIGNvbnRlbnRzJworCisgICBBbiBleGlzdGluZyBmaWxlIG9mIHRoZSBzYW1lIG5hbWUgaXMgb3ZlcndyaXR0ZW4uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIG1ldGhvZDo6IFBhdGgud3JpdGVfdGV4dChkYXRhLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKKworICAgT3BlbiB0aGUgZmlsZSBwb2ludGVkIHRvIGluIHRleHQgbW9kZSwgd3JpdGUgKmRhdGEqIHRvIGl0LCBhbmQgY2xvc2UgdGhlCisgICBmaWxlOjoKKworICAgICAgPj4+IHAgPSBQYXRoKCdteV90ZXh0X2ZpbGUnKQorICAgICAgPj4+IHAud3JpdGVfdGV4dCgnVGV4dCBmaWxlIGNvbnRlbnRzJykKKyAgICAgIDE4CisgICAgICA+Pj4gcC5yZWFkX3RleHQoKQorICAgICAgJ1RleHQgZmlsZSBjb250ZW50cycKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0IGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAppbmRleCAwZjQ4Y2IxLi5hOTI1MjZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKQEAgLTQyNSw3ICs0MjUsNyBAQAogQXR0ZW1wdHMgdG8gcGlja2xlIHVucGlja2xhYmxlIG9iamVjdHMgd2lsbCByYWlzZSB0aGUgOmV4YzpgUGlja2xpbmdFcnJvcmAKIGV4Y2VwdGlvbjsgd2hlbiB0aGlzIGhhcHBlbnMsIGFuIHVuc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcyBtYXkgaGF2ZSBhbHJlYWR5CiBiZWVuIHdyaXR0ZW4gdG8gdGhlIHVuZGVybHlpbmcgZmlsZS4gIFRyeWluZyB0byBwaWNrbGUgYSBoaWdobHkgcmVjdXJzaXZlIGRhdGEKLXN0cnVjdHVyZSBtYXkgZXhjZWVkIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdpbGwgYmUKK3N0cnVjdHVyZSBtYXkgZXhjZWVkIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCwgYSA6ZXhjOmBSZWN1cnNpb25FcnJvcmAgd2lsbCBiZQogcmFpc2VkIGluIHRoaXMgY2FzZS4gIFlvdSBjYW4gY2FyZWZ1bGx5IHJhaXNlIHRoaXMgbGltaXQgd2l0aAogOmZ1bmM6YHN5cy5zZXRyZWN1cnNpb25saW1pdGAuCiAKQEAgLTg1OSw3ICs4NTksNyBAQAogICAgZGF0YSA9IHsKICAgICAgICAnYSc6IFsxLCAyLjAsIDMsIDQrNmpdLAogICAgICAgICdiJzogKCJjaGFyYWN0ZXIgc3RyaW5nIiwgYiJieXRlIHN0cmluZyIpLAotICAgICAgICdjJzogc2V0KFtOb25lLCBUcnVlLCBGYWxzZV0pCisgICAgICAgJ2MnOiB7Tm9uZSwgVHJ1ZSwgRmFsc2V9CiAgICB9CiAKICAgIHdpdGggb3BlbignZGF0YS5waWNrbGUnLCAnd2InKSBhcyBmOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAppbmRleCAxM2VhN2I5Li41ZDMyOTVkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdApAQCAtNTgsNyArNTgsNyBAQAogCiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBUaGlzIGVtdWxhdGlvbiBpcyBubyBsb25nZXIgbmVlZGVkLCBhcyB0aGUgc3RhbmRhcmQgaW1wb3J0IG1lY2hhbmlzbQotICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYAorICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYC4KIAogCiAuLiBjbGFzczo6IEltcExvYWRlcihmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0YykKQEAgLTY3LDcgKzY3LDcgQEAKIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogICAgICAgVGhpcyBlbXVsYXRpb24gaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYXMgdGhlIHN0YW5kYXJkIGltcG9ydCBtZWNoYW5pc20KLSAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAKKyAgICAgIGlzIG5vdyBmdWxseSBQRVAgMzAyIGNvbXBsaWFudCBhbmQgYXZhaWxhYmxlIGluIDptb2Q6YGltcG9ydGxpYmAuCiAKIAogLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihmdWxsbmFtZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdCBiL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAppbmRleCBlMjdmMmFkLi42NzljYzZiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CkBAIC0yNDcsNiArMjQ3LDggQEAKIAogICAgVGhpcyBpcyBhbm90aGVyIG5hbWUgZm9yIDpmdW5jOmBsaW51eF9kaXN0cmlidXRpb25gLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy43CisKIC4uIGZ1bmN0aW9uOjogbGludXhfZGlzdHJpYnV0aW9uKGRpc3RuYW1lPScnLCB2ZXJzaW9uPScnLCBpZD0nJywgc3VwcG9ydGVkX2Rpc3RzPSgnU3VTRScsJ2RlYmlhbicsJ3JlZGhhdCcsJ21hbmRyYWtlJywuLi4pLCBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTEpCiAKICAgIFRyaWVzIHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgTGludXggT1MgZGlzdHJpYnV0aW9uIG5hbWUuCkBAIC0yNjMsNiArMjY1LDggQEAKICAgIHBhcmFtZXRlcnMuICBgYGlkYGAgaXMgdGhlIGl0ZW0gaW4gcGFyZW50aGVzZXMgYWZ0ZXIgdGhlIHZlcnNpb24gbnVtYmVyLiAgSXQKICAgIGlzIHVzdWFsbHkgdGhlIHZlcnNpb24gY29kZW5hbWUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjcKKwogLi4gZnVuY3Rpb246OiBsaWJjX3ZlcihleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLCBsaWI9JycsIHZlcnNpb249JycsIGNodW5rc2l6ZT0yMDQ4KQogCiAgICBUcmllcyB0byBkZXRlcm1pbmUgdGhlIGxpYmMgdmVyc2lvbiBhZ2FpbnN0IHdoaWNoIHRoZSBmaWxlIGV4ZWN1dGFibGUgKGRlZmF1bHRzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0IGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAppbmRleCA0NWJhYWQ5Li44NDY4ZjRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKQEAgLTE5NCw2ICsxOTQsMTUgQEAKICAgIHRoZSB1bmlxdWUgaWQgZm9yIHRoYXQgbWVzc2FnZSBpbiB0aGUgZm9ybSBgYCdyZXNwb25zZSBtZXNnbnVtIHVpZGBgLCBvdGhlcndpc2UKICAgIHJlc3VsdCBpcyBsaXN0IGBgKHJlc3BvbnNlLCBbJ21lc2dudW0gdWlkJywgLi4uXSwgb2N0ZXRzKWBgLgogCisKKy4uIG1ldGhvZDo6IFBPUDMudXRmOCgpCisKKyAgIFRyeSB0byBzd2l0Y2ggdG8gVVRGLTggbW9kZS4gUmV0dXJucyB0aGUgc2VydmVyIHJlc3BvbnNlIGlmIHN1Y2Nlc3NmdWwsCisgICByYWlzZXMgOmNsYXNzOmBlcnJvcl9wcm90b2AgaWYgbm90LiBTcGVjaWZpZWQgaW4gOlJGQzpgNjg1NmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBPUDMuc3Rscyhjb250ZXh0PU5vbmUpCiAKICAgIFN0YXJ0IGEgVExTIHNlc3Npb24gb24gdGhlIGFjdGl2ZSBjb25uZWN0aW9uIGFzIHNwZWNpZmllZCBpbiA6cmZjOmAyNTk1YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BwcmludC5yc3QgYi9Eb2MvbGlicmFyeS9wcHJpbnQucnN0CmluZGV4IGMwNTg5YTMuLjBiNDRkYzggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BwcmludC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcHByaW50LnJzdApAQCAtMjM1LDEwICsyMzUsMTAgQEAKICAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMiA6OiBPbmx5J10sCi0gICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgZnJhbWV3b3JrIGZvciBQeXRob24gcHJvZ3JhbW1pbmcsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBzcGVjaWFsIGZvY3VzXHJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayBwcm9ncmFtbWluZyBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXByb3RvY29sIGludGVncmF0aW9uLicsCisgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgZnJhbWV3b3JrIGZvciBQeXRob24gcHJvZ3JhbW1pbmcsIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWFsIGZvY3VzXHJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayBwcm9ncmFtbWluZyBhbmQgbXVsdGlwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVncmF0aW9uLicsCiAgICAgICAgICAgICAgJ2RvY3NfdXJsJzogJycsCiAgICAgICAgICAgICAgJ2Rvd25sb2FkX3VybCc6ICdVTktOT1dOJywKICAgICAgICAgICAgICAnaG9tZV9wYWdlJzogJ2h0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS8nLApAQCAtMjg4LDEwICsyODgsMTAgQEAKICAgICAgICAgICAgICAnY2hlZXNlY2FrZV9kb2N1bWVudGF0aW9uX2lkJzogTm9uZSwKICAgICAgICAgICAgICAnY2hlZXNlY2FrZV9pbnN0YWxsYWJpbGl0eV9pZCc6IE5vbmUsCiAgICAgICAgICAgICAgJ2NsYXNzaWZpZXJzJzogWy4uLl0sCi0gICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgZnJhbWV3b3JrIGZvciBQeXRob24gcHJvZ3JhbW1pbmcsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBzcGVjaWFsIGZvY3VzXHJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayBwcm9ncmFtbWluZyBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXByb3RvY29sIGludGVncmF0aW9uLicsCisgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgZnJhbWV3b3JrIGZvciBQeXRob24gcHJvZ3JhbW1pbmcsIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWFsIGZvY3VzXHJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayBwcm9ncmFtbWluZyBhbmQgbXVsdGlwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVncmF0aW9uLicsCiAgICAgICAgICAgICAgJ2RvY3NfdXJsJzogJycsCiAgICAgICAgICAgICAgJ2Rvd25sb2FkX3VybCc6ICdVTktOT1dOJywKICAgICAgICAgICAgICAnaG9tZV9wYWdlJzogJ2h0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS8nLApAQCAtMzIzLDEzICszMjMsMTIgQEAKICAgICAgICAgICAgICAnY2hlZXNlY2FrZV9pbnN0YWxsYWJpbGl0eV9pZCc6IE5vbmUsCiAgICAgICAgICAgICAgJ2NsYXNzaWZpZXJzJzogWy4uLl0sCiAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0FuIGV4dGVuc2libGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXdvcmsgZm9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIHByb2dyYW1taW5nLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggc3BlY2lhbCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvY3VzXHJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXR3b3JrIHByb2dyYW1taW5nICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5kIG11bHRpcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXdvcmsgZm9yIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyYW1taW5nLCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lhbCBmb2N1c1xyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uIGV2ZW50LWJhc2VkIG5ldHdvcmsgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9ncmFtbWluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXByb3RvY29sICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdyYXRpb24uJywKICAgICAgICAgICAgICAnZG9jc191cmwnOiAnJywKICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLApAQCAtMzQ0LDggKzM0Myw4IEBACiAgICAgICAgICAgICAgJ3JlbGVhc2VfdXJsJzogJ2h0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9Ud2lzdGVkLzEyLjMuMCcsCiAgICAgICAgICAgICAgJ3JlcXVpcmVzX3B5dGhvbic6IE5vbmUsCiAgICAgICAgICAgICAgJ3N0YWJsZV92ZXJzaW9uJzogTm9uZSwKLSAgICAgICAgICAgICAnc3VtbWFyeSc6ICdBbiBhc3luY2hyb25vdXMgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmtpbmcgZnJhbWV3b3JrICcKLSAgICAgICAgICAgICAgICAgICAgICAgICd3cml0dGVuIGluIFB5dGhvbicsCisgICAgICAgICAgICAgJ3N1bW1hcnknOiAnQW4gYXN5bmNocm9ub3VzIG5ldHdvcmtpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1ld29yayB3cml0dGVuIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24nLAogICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEyLjMuMCd9LAogICAgICd1cmxzJzogW3suLi59LCB7Li4ufV19CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wcm9maWxlLnJzdCBiL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0CmluZGV4IDI5Mjg4MjEuLjk1OWQ5YjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0CkBAIC0zMyw3ICszMyw3IEBACiAyLiA6bW9kOmBwcm9maWxlYCwgYSBwdXJlIFB5dGhvbiBtb2R1bGUgd2hvc2UgaW50ZXJmYWNlIGlzIGltaXRhdGVkIGJ5CiAgICA6bW9kOmBjUHJvZmlsZWAsIGJ1dCB3aGljaCBhZGRzIHNpZ25pZmljYW50IG92ZXJoZWFkIHRvIHByb2ZpbGVkIHByb2dyYW1zLgogICAgSWYgeW91J3JlIHRyeWluZyB0byBleHRlbmQgdGhlIHByb2ZpbGVyIGluIHNvbWUgd2F5LCB0aGUgdGFzayBtaWdodCBiZSBlYXNpZXIKLSAgIHdpdGggdGhpcyBtb2R1bGUuCisgICB3aXRoIHRoaXMgbW9kdWxlLiAgT3JpZ2luYWxseSBkZXNpZ25lZCBhbmQgd3JpdHRlbiBieSBKaW0gUm9za2luZC4KIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0IGIvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKaW5kZXggYmFlODQ1MC4uOTdmMmIyMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKQEAgLTI5LDkgKzI5LDkgQEAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZShmaWxlLCBjZmlsZT1Ob25lLCBkZmlsZT1Ob25lLCBkb3JhaXNlPUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAogICAgQ29tcGlsZSBhIHNvdXJjZSBmaWxlIHRvIGJ5dGUtY29kZSBhbmQgd3JpdGUgb3V0IHRoZSBieXRlLWNvZGUgY2FjaGUgZmlsZS4KLSAgIFRoZSBzb3VyY2UgY29kZSBpcyBsb2FkZWQgZnJvbSB0aGUgZmlsZSBuYW1lICpmaWxlKi4gIFRoZSAgYnl0ZS1jb2RlIGlzCi0gICB3cml0dGVuIHRvICpjZmlsZSosIHdoaWNoIGRlZmF1bHRzIHRvIHRoZSA6UEVQOmAzMTQ3YCBwYXRoLCBlbmRpbmcgaW4KLSAgIGBgLnB5Y2BgIChgYC5weW9gYCBpZiBvcHRpbWl6YXRpb24gaXMgZW5hYmxlZCBpbiB0aGUgY3VycmVudCBpbnRlcnByZXRlcikuCisgICBUaGUgc291cmNlIGNvZGUgaXMgbG9hZGVkIGZyb20gdGhlIGZpbGUgbmFtZSAqZmlsZSouICBUaGUgYnl0ZS1jb2RlIGlzCisgICB3cml0dGVuIHRvICpjZmlsZSosIHdoaWNoIGRlZmF1bHRzIHRvIHRoZSA6cGVwOmAzMTQ3YC86cGVwOmA0ODhgIHBhdGgsIGVuZGluZworICAgaW4gYGAucHljYGAuCiAgICBGb3IgZXhhbXBsZSwgaWYgKmZpbGUqIGlzIGBgL2Zvby9iYXIvYmF6LnB5YGAgKmNmaWxlKiB3aWxsIGRlZmF1bHQgdG8KICAgIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuICBJZiAqZGZpbGUqIGlzCiAgICBzcGVjaWZpZWQsIGl0IGlzIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIGluIGVycm9yIG1lc3NhZ2VzIHdoZW4KQEAgLTY4LDcgKzY4LDcgQEAKIC4uIGZ1bmN0aW9uOjogbWFpbihhcmdzPU5vbmUpCiAKICAgIENvbXBpbGUgc2V2ZXJhbCBzb3VyY2UgZmlsZXMuICBUaGUgZmlsZXMgbmFtZWQgaW4gKmFyZ3MqIChvciBvbiB0aGUgY29tbWFuZAotICAgbGluZSwgaWYgKmFyZ3MqIGlzIGBgTm9uZWBgKSBhcmUgY29tcGlsZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZWNvZGUgaXMKKyAgIGxpbmUsIGlmICphcmdzKiBpcyBgYE5vbmVgYCkgYXJlIGNvbXBpbGVkIGFuZCB0aGUgcmVzdWx0aW5nIGJ5dGUtY29kZSBpcwogICAgY2FjaGVkIGluIHRoZSBub3JtYWwgbWFubmVyLiAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBzZWFyY2ggYSBkaXJlY3RvcnkKICAgIHN0cnVjdHVyZSB0byBsb2NhdGUgc291cmNlIGZpbGVzOyBpdCBvbmx5IGNvbXBpbGVzIGZpbGVzIG5hbWVkIGV4cGxpY2l0bHkuCiAgICBJZiBgYCctJ2BgIGlzIHRoZSBvbmx5IHBhcmFtZXRlciBpbiBhcmdzLCB0aGUgbGlzdCBvZiBmaWxlcyBpcyB0YWtlbiBmcm9tCkBAIC04Niw0ICs4NiwzIEBACiAKICAgIE1vZHVsZSA6bW9kOmBjb21waWxlYWxsYAogICAgICAgVXRpbGl0aWVzIHRvIGNvbXBpbGUgYWxsIFB5dGhvbiBzb3VyY2UgZmlsZXMgaW4gYSBkaXJlY3RvcnkgdHJlZS4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvcXVldWUucnN0CmluZGV4IDY4MGQ2OTAuLjFjYjA5MzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKQEAgLTE1OCwyMiArMTU4LDMyIEBACiAKIEV4YW1wbGUgb2YgaG93IHRvIHdhaXQgZm9yIGVucXVldWVkIHRhc2tzIHRvIGJlIGNvbXBsZXRlZDo6CiAKLSAgIGRlZiB3b3JrZXIoKToKLSAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICBpdGVtID0gcS5nZXQoKQotICAgICAgICAgICBkb193b3JrKGl0ZW0pCi0gICAgICAgICAgIHEudGFza19kb25lKCkKKyAgICBkZWYgd29ya2VyKCk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpdGVtID0gcS5nZXQoKQorICAgICAgICAgICAgaWYgaXRlbSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBkb193b3JrKGl0ZW0pCisgICAgICAgICAgICBxLnRhc2tfZG9uZSgpCiAKLSAgIHEgPSBRdWV1ZSgpCi0gICBmb3IgaSBpbiByYW5nZShudW1fd29ya2VyX3RocmVhZHMpOgotICAgICAgICB0ID0gVGhyZWFkKHRhcmdldD13b3JrZXIpCi0gICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgIHEgPSBxdWV1ZS5RdWV1ZSgpCisgICAgdGhyZWFkcyA9IFtdCisgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3dvcmtlcl90aHJlYWRzKToKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXdvcmtlcikKICAgICAgICAgdC5zdGFydCgpCisgICAgICAgIHRocmVhZHMuYXBwZW5kKHQpCiAKLSAgIGZvciBpdGVtIGluIHNvdXJjZSgpOgotICAgICAgIHEucHV0KGl0ZW0pCisgICAgZm9yIGl0ZW0gaW4gc291cmNlKCk6CisgICAgICAgIHEucHV0KGl0ZW0pCiAKLSAgIHEuam9pbigpICAgICAgICMgYmxvY2sgdW50aWwgYWxsIHRhc2tzIGFyZSBkb25lCisgICAgIyBibG9jayB1bnRpbCBhbGwgdGFza3MgYXJlIGRvbmUKKyAgICBxLmpvaW4oKQorCisgICAgIyBzdG9wIHdvcmtlcnMKKyAgICBmb3IgaSBpbiByYW5nZShudW1fd29ya2VyX3RocmVhZHMpOgorICAgICAgICBxLnB1dChOb25lKQorICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgIHQuam9pbigpCiAKIAogLi4gc2VlYWxzbzo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCAxMWRkMzY3Li5mOGI3NzI3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQ2LDggKzQ2LDcgQEAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzIG9mIHRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgdXNlZCBmb3IKLSAgIHNlY3VyaXR5IHB1cnBvc2VzLiAgVXNlIDpmdW5jOmBvcy51cmFuZG9tYCBvciA6Y2xhc3M6YFN5c3RlbVJhbmRvbWAgaWYKLSAgIHlvdSByZXF1aXJlIGEgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KKyAgIHNlY3VyaXR5IHB1cnBvc2VzLgogCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlLnJzdCBiL0RvYy9saWJyYXJ5L3JlLnJzdAppbmRleCBjM2M4YjY1Li44ODg0NTg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmUucnN0CkBAIC0yODEsOSArMjgxLDcgQEAKICAgIGFzc2VydGlvbmAuIGBgKD88PWFiYylkZWZgYCB3aWxsIGZpbmQgYSBtYXRjaCBpbiBgYGFiY2RlZmBgLCBzaW5jZSB0aGUKICAgIGxvb2tiZWhpbmQgd2lsbCBiYWNrIHVwIDMgY2hhcmFjdGVycyBhbmQgY2hlY2sgaWYgdGhlIGNvbnRhaW5lZCBwYXR0ZXJuIG1hdGNoZXMuCiAgICBUaGUgY29udGFpbmVkIHBhdHRlcm4gbXVzdCBvbmx5IG1hdGNoIHN0cmluZ3Mgb2Ygc29tZSBmaXhlZCBsZW5ndGgsIG1lYW5pbmcgdGhhdAotICAgYGBhYmNgYCBvciBgYGF8YmBgIGFyZSBhbGxvd2VkLCBidXQgYGBhKmBgIGFuZCBgYGF7Myw0fWBgIGFyZSBub3QuICBHcm91cAotICAgcmVmZXJlbmNlcyBhcmUgbm90IHN1cHBvcnRlZCBldmVuIGlmIHRoZXkgbWF0Y2ggc3RyaW5ncyBvZiBzb21lIGZpeGVkIGxlbmd0aC4KLSAgIE5vdGUgdGhhdAorICAgYGBhYmNgYCBvciBgYGF8YmBgIGFyZSBhbGxvd2VkLCBidXQgYGBhKmBgIGFuZCBgYGF7Myw0fWBgIGFyZSBub3QuICBOb3RlIHRoYXQKICAgIHBhdHRlcm5zIHdoaWNoIHN0YXJ0IHdpdGggcG9zaXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zIHdpbGwgbm90IG1hdGNoIGF0IHRoZQogICAgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYmVpbmcgc2VhcmNoZWQ7IHlvdSB3aWxsIG1vc3QgbGlrZWx5IHdhbnQgdG8gdXNlIHRoZQogICAgOmZ1bmM6YHNlYXJjaGAgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIDpmdW5jOmBtYXRjaGAgZnVuY3Rpb246CkBAIC0yOTksMTIgKzI5NywxNCBAQAogICAgICAgPj4+IG0uZ3JvdXAoMCkKICAgICAgICdlZ2cnCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGdyb3VwIHJlZmVyZW5jZXMgb2YgZml4ZWQgbGVuZ3RoLgorCiBgYCg/PCEuLi4pYGAKICAgIE1hdGNoZXMgaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHN0cmluZyBpcyBub3QgcHJlY2VkZWQgYnkgYSBtYXRjaCBmb3IKICAgIGBgLi4uYGAuICBUaGlzIGlzIGNhbGxlZCBhIDpkZm46YG5lZ2F0aXZlIGxvb2tiZWhpbmQgYXNzZXJ0aW9uYC4gIFNpbWlsYXIgdG8KICAgIHBvc2l0aXZlIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucywgdGhlIGNvbnRhaW5lZCBwYXR0ZXJuIG11c3Qgb25seSBtYXRjaCBzdHJpbmdzIG9mCi0gICBzb21lIGZpeGVkIGxlbmd0aCBhbmQgc2hvdWxkbid0IGNvbnRhaW4gZ3JvdXAgcmVmZXJlbmNlcy4KLSAgIFBhdHRlcm5zIHdoaWNoIHN0YXJ0IHdpdGggbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zIG1heQorICAgc29tZSBmaXhlZCBsZW5ndGguICBQYXR0ZXJucyB3aGljaCBzdGFydCB3aXRoIG5lZ2F0aXZlIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBtYXkKICAgIG1hdGNoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBiZWluZyBzZWFyY2hlZC4KIAogYGAoPyhpZC9uYW1lKXllcy1wYXR0ZXJufG5vLXBhdHRlcm4pYGAKQEAgLTQzOCw2ICs0MzgsMTAgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICBUaGUgYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGVzY2FwZSBzZXF1ZW5jZXMgaGF2ZSBiZWVuIGFkZGVkLgogCisuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42CisgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKKyAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTUyNCw3ICs1MjgsMTEgQEAKICAgIGN1cnJlbnQgbG9jYWxlLiBUaGUgdXNlIG9mIHRoaXMgZmxhZyBpcyBkaXNjb3VyYWdlZCBhcyB0aGUgbG9jYWxlIG1lY2hhbmlzbQogICAgaXMgdmVyeSB1bnJlbGlhYmxlLCBhbmQgaXQgb25seSBoYW5kbGVzIG9uZSAiY3VsdHVyZSIgYXQgYSB0aW1lIGFueXdheTsKICAgIHlvdSBzaG91bGQgdXNlIFVuaWNvZGUgbWF0Y2hpbmcgaW5zdGVhZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKLSAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLgorICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBtYWtlcyBzZW5zZSBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKKyAgICAgIERlcHJlY2F0ZWQgdGhlIHVzZSBvZiAgOmNvbnN0OmByZS5MT0NBTEVgIHdpdGggc3RyaW5nIHBhdHRlcm5zIG9yCisgICAgICA6Y29uc3Q6YHJlLkFTQ0lJYC4KIAogCiAuLiBkYXRhOjogTQpAQCAtNjI1LDE3ICs2MzMsMzcgQEAKICAgIFRoYXQgd2F5LCBzZXBhcmF0b3IgY29tcG9uZW50cyBhcmUgYWx3YXlzIGZvdW5kIGF0IHRoZSBzYW1lIHJlbGF0aXZlCiAgICBpbmRpY2VzIHdpdGhpbiB0aGUgcmVzdWx0IGxpc3QuCiAKLSAgIE5vdGUgdGhhdCAqc3BsaXQqIHdpbGwgbmV2ZXIgc3BsaXQgYSBzdHJpbmcgb24gYW4gZW1wdHkgcGF0dGVybiBtYXRjaC4KLSAgIEZvciBleGFtcGxlOgorICAgLi4gbm90ZTo6CiAKLSAgICAgID4+PiByZS5zcGxpdCgneConLCAnZm9vJykKLSAgICAgIFsnZm9vJ10KLSAgICAgID4+PiByZS5zcGxpdCgiKD9tKV4kIiwgImZvb1xuXG5iYXJcbiIpCi0gICAgICBbJ2Zvb1xuXG5iYXJcbiddCisgICAgICA6ZnVuYzpgc3BsaXRgIGRvZXNuJ3QgY3VycmVudGx5IHNwbGl0IGEgc3RyaW5nIG9uIGFuIGVtcHR5IHBhdHRlcm4gbWF0Y2guCisgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgPj4+IHJlLnNwbGl0KCd4KicsICdheGJjJykKKyAgICAgICAgIFsnYScsICdiYyddCisKKyAgICAgIEV2ZW4gdGhvdWdoIGBgJ3gqJ2BgIGFsc28gbWF0Y2hlcyAwICd4JyBiZWZvcmUgJ2EnLCBiZXR3ZWVuICdiJyBhbmQgJ2MnLAorICAgICAgYW5kIGFmdGVyICdjJywgY3VycmVudGx5IHRoZXNlIG1hdGNoZXMgYXJlIGlnbm9yZWQuICBUaGUgY29ycmVjdCBiZWhhdmlvcgorICAgICAgKGkuZS4gc3BsaXR0aW5nIG9uIGVtcHR5IG1hdGNoZXMgdG9vIGFuZCByZXR1cm5pbmcgYGBbJycsICdhJywgJ2InLCAnYycsCisgICAgICAnJ11gYCkgd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLCBidXQgc2luY2UgdGhpcworICAgICAgaXMgYSBiYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdlLCBhIDpleGM6YEZ1dHVyZVdhcm5pbmdgIHdpbGwgYmUgcmFpc2VkCisgICAgICBpbiB0aGUgbWVhbndoaWxlLgorCisgICAgICBQYXR0ZXJucyB0aGF0IGNhbiBvbmx5IG1hdGNoIGVtcHR5IHN0cmluZ3MgY3VycmVudGx5IG5ldmVyIHNwbGl0IHRoZQorICAgICAgc3RyaW5nLiAgU2luY2UgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBiZWhhdmlvciwgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgc3RhcnRpbmcgZnJvbSBQeXRob24gMy41OjoKKworICAgICAgICAgPj4+IHJlLnNwbGl0KCJeJCIsICJmb29cblxuYmFyXG4iLCBmbGFncz1yZS5NKQorICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgICAuLi4KKyAgICAgICAgIFZhbHVlRXJyb3I6IHNwbGl0KCkgcmVxdWlyZXMgYSBub24tZW1wdHkgcGF0dGVybiBtYXRjaC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFNwbGl0dGluZyBvbiBhIHBhdHRlcm4gdGhhdCBjb3VsZCBtYXRjaCBhbiBlbXB0eSBzdHJpbmcgbm93IHJhaXNlcworICAgICAgYSB3YXJuaW5nLiAgUGF0dGVybnMgdGhhdCBjYW4gb25seSBtYXRjaCBlbXB0eSBzdHJpbmdzIGFyZSBub3cgcmVqZWN0ZWQuCiAKIC4uIGZ1bmN0aW9uOjogZmluZGFsbChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApCiAKQEAgLTY2Myw3ICs2OTEsNyBAQAogICAgKnN0cmluZyogaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiAgKnJlcGwqIGNhbiBiZSBhIHN0cmluZyBvciBhIGZ1bmN0aW9uOyBpZiBpdCBpcwogICAgYSBzdHJpbmcsIGFueSBiYWNrc2xhc2ggZXNjYXBlcyBpbiBpdCBhcmUgcHJvY2Vzc2VkLiAgVGhhdCBpcywgYGBcbmBgIGlzCiAgICBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgbmV3bGluZSBjaGFyYWN0ZXIsIGBgXHJgYCBpcyBjb252ZXJ0ZWQgdG8gYSBjYXJyaWFnZSByZXR1cm4sIGFuZAotICAgc28gZm9ydGguICBVbmtub3duIGVzY2FwZXMgc3VjaCBhcyBgYFxqYGAgYXJlIGxlZnQgYWxvbmUuICBCYWNrcmVmZXJlbmNlcywgc3VjaAorICAgc28gZm9ydGguICBVbmtub3duIGVzY2FwZXMgc3VjaCBhcyBgYFwmYGAgYXJlIGxlZnQgYWxvbmUuICBCYWNrcmVmZXJlbmNlcywgc3VjaAogICAgYXMgYGBcNmBgLCBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgZ3JvdXAgNiBpbiB0aGUgcGF0dGVybi4KICAgIEZvciBleGFtcGxlOgogCkBAIC03MDUsNiArNzMzLDEzIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsIGZsYWdzIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVW5tYXRjaGVkIGdyb3VwcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKKyAgICAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQorICAgICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKwogCiAuLiBmdW5jdGlvbjo6IHN1Ym4ocGF0dGVybiwgcmVwbCwgc3RyaW5nLCBjb3VudD0wLCBmbGFncz0wKQogCkBAIC03MTQsNiArNzQ5LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KKwogCiAuLiBmdW5jdGlvbjo6IGVzY2FwZShzdHJpbmcpCiAKQEAgLTczMCwxMyArNzY4LDM2IEBACiAgICBDbGVhciB0aGUgcmVndWxhciBleHByZXNzaW9uIGNhY2hlLgogCiAKLS4uIGV4Y2VwdGlvbjo6IGVycm9yCisuLiBleGNlcHRpb246OiBlcnJvcihtc2csIHBhdHRlcm49Tm9uZSwgcG9zPU5vbmUpCiAKICAgIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIHN0cmluZyBwYXNzZWQgdG8gb25lIG9mIHRoZSBmdW5jdGlvbnMgaGVyZSBpcyBub3QgYQogICAgdmFsaWQgcmVndWxhciBleHByZXNzaW9uIChmb3IgZXhhbXBsZSwgaXQgbWlnaHQgY29udGFpbiB1bm1hdGNoZWQgcGFyZW50aGVzZXMpCiAgICBvciB3aGVuIHNvbWUgb3RoZXIgZXJyb3Igb2NjdXJzIGR1cmluZyBjb21waWxhdGlvbiBvciBtYXRjaGluZy4gIEl0IGlzIG5ldmVyIGFuCi0gICBlcnJvciBpZiBhIHN0cmluZyBjb250YWlucyBubyBtYXRjaCBmb3IgYSBwYXR0ZXJuLgorICAgZXJyb3IgaWYgYSBzdHJpbmcgY29udGFpbnMgbm8gbWF0Y2ggZm9yIGEgcGF0dGVybi4gIFRoZSBlcnJvciBpbnN0YW5jZSBoYXMKKyAgIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAuLiBhdHRyaWJ1dGU6OiBtc2cKKworICAgICAgVGhlIHVuZm9ybWF0dGVkIGVycm9yIG1lc3NhZ2UuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdHRlcm4KKworICAgICAgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwb3MKKworICAgICAgVGhlIGluZGV4IG9mICpwYXR0ZXJuKiB3aGVyZSBjb21waWxhdGlvbiBmYWlsZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVubworCisgICAgICBUaGUgbGluZSBjb3JyZXNwb25kaW5nIHRvICpwb3MqLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb2xubworCisgICAgICBUaGUgY29sdW1uIGNvcnJlc3BvbmRpbmcgdG8gKnBvcyouCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCiAKIC4uIF9yZS1vYmplY3RzOgogCkBAIC04ODksNiArOTUwLDggQEAKICAgIChgYFxnPDE+YGAsIGBgXGc8bmFtZT5gYCkgYXJlIHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUKICAgIGNvcnJlc3BvbmRpbmcgZ3JvdXAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KIAogLi4gbWV0aG9kOjogbWF0Y2guZ3JvdXAoW2dyb3VwMSwgLi4uXSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0IGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CmluZGV4IDY5MjMxMGIuLjM4NjRmMGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKQEAgLTU5LDYgKzU5LDE0IEBACiAgICBTYXZlIGEgcmVhZGxpbmUgaGlzdG9yeSBmaWxlLiBUaGUgZGVmYXVsdCBmaWxlbmFtZSBpcyA6ZmlsZTpgfi8uaGlzdG9yeWAuCiAKIAorLi4gZnVuY3Rpb246OiBhcHBlbmRfaGlzdG9yeV9maWxlKG5lbGVtZW50c1ssIGZpbGVuYW1lXSkKKworICAgQXBwZW5kIHRoZSBsYXN0ICpuZWxlbWVudHMqIG9mIGhpc3RvcnkgdG8gYSBmaWxlLiAgVGhlIGRlZmF1bHQgZmlsZW5hbWUgaXMKKyAgIDpmaWxlOmB+Ly5oaXN0b3J5YC4gIFRoZSBmaWxlIG11c3QgYWxyZWFkeSBleGlzdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBjbGVhcl9oaXN0b3J5KCkKIAogICAgQ2xlYXIgdGhlIGN1cnJlbnQgaGlzdG9yeS4gIChOb3RlOiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUgaWYgdGhlCkBAIC0yMDksNiArMjE3LDI2IEBACiBUaGlzIGNvZGUgaXMgYWN0dWFsbHkgYXV0b21hdGljYWxseSBydW4gd2hlbiBQeXRob24gaXMgcnVuIGluCiA6cmVmOmBpbnRlcmFjdGl2ZSBtb2RlIDx0dXQtaW50ZXJhY3RpdmU+YCAoc2VlIDpyZWY6YHJsY29tcGxldGVyLWNvbmZpZ2ApLgogCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgYWNoaWV2ZXMgdGhlIHNhbWUgZ29hbCBidXQgc3VwcG9ydHMgY29uY3VycmVudCBpbnRlcmFjdGl2ZQorc2Vzc2lvbnMsIGJ5IG9ubHkgYXBwZW5kaW5nIHRoZSBuZXcgaGlzdG9yeS4gOjoKKworICAgaW1wb3J0IGF0ZXhpdAorICAgaW1wb3J0IG9zCisgICBpbXBvcnQgcmVhbGluZQorICAgaGlzdGZpbGUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5leHBhbmR1c2VyKCJ+IiksICIucHl0aG9uX2hpc3RvcnkiKQorCisgICB0cnk6CisgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCisgICAgICAgaF9sZW4gPSByZWFkbGluZS5nZXRfaGlzdG9yeV9sZW5ndGgoKQorICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgIG9wZW4oaGlzdGZpbGUsICd3YicpLmNsb3NlKCkKKyAgICAgICBoX2xlbiA9IDAKKworICAgZGVmIHNhdmUocHJldl9oX2xlbiwgaGlzdGZpbGUpOgorICAgICAgIG5ld19oX2xlbiA9IHJlYWRsaW5lLmdldF9oaXN0b3J5X2xlbmd0aCgpCisgICAgICAgcmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZShuZXdfaF9sZW4gLSBwcmV2X2hfbGVuLCBoaXN0ZmlsZSkKKyAgIGF0ZXhpdC5yZWdpc3RlcihzYXZlLCBoX2xlbiwgaGlzdGZpbGUpCisKIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBleHRlbmRzIHRoZSA6Y2xhc3M6YGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlYCBjbGFzcyB0bwogc3VwcG9ydCBoaXN0b3J5IHNhdmUvcmVzdG9yZS4gOjoKIApAQCAtMjM0LDQgKzI2MiwzIEBACiAKICAgICAgICBkZWYgc2F2ZV9oaXN0b3J5KHNlbGYsIGhpc3RmaWxlKToKICAgICAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKGhpc3RmaWxlKQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCA1MzM0YWY4Li5hNjJkYzg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTE0NSw2ICsxNDUsMTMgQEAKICAgICAgIGxpYnJhcnksIGFuZCBkb2VzIG5vdCBoYW5kbGUgZmlsZSBkZXNjcmlwdG9ycyB0aGF0IGRvbid0IG9yaWdpbmF0ZSBmcm9tCiAgICAgICBXaW5Tb2NrLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyByZXRyaWVkIHdpdGggYSByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieQorICAgICAgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKworCiAuLiBhdHRyaWJ1dGU6OiBQSVBFX0JVRgogCiAgICBUaGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggY2FuIGJlIHdyaXR0ZW4gd2l0aG91dCBibG9ja2luZyB0byBhIHBpcGUKQEAgLTI0Miw2ICsyNDksMTIgQEAKICAgIHJldHVybmluZy4gSWYgKnRpbWVvdXQqIGlzIG9taXR0ZWQsIC0xLCBvciA6Y29uc3Q6YE5vbmVgLCB0aGUgY2FsbCB3aWxsCiAgICBibG9jayB1bnRpbCB0aGVyZSBpcyBhbiBldmVudCBmb3IgdGhpcyBwb2xsIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkKKyAgICAgIGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKIAogLi4gX2Vwb2xsLW9iamVjdHM6CiAKQEAgLTMyMiw2ICszMzUsMTIgQEAKIAogICAgV2FpdCBmb3IgZXZlbnRzLiB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0KQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyByZXRyaWVkIHdpdGggYSByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieQorICAgICAgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKwogCiAuLiBfcG9sbC1vYmplY3RzOgogCkBAIC00MDEsNiArNDIwLDEyIEBACiAgICByZXR1cm5pbmcuIElmICp0aW1lb3V0KiBpcyBvbWl0dGVkLCBuZWdhdGl2ZSwgb3IgOmNvbnN0OmBOb25lYCwgdGhlIGNhbGwgd2lsbAogICAgYmxvY2sgdW50aWwgdGhlcmUgaXMgYW4gZXZlbnQgZm9yIHRoaXMgcG9sbCBvYmplY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCiAKIC4uIF9rcXVldWUtb2JqZWN0czoKIApAQCAtNDM1LDYgKzQ2MCwxMiBAQAogICAgLSBtYXhfZXZlbnRzIG11c3QgYmUgMCBvciBhIHBvc2l0aXZlIGludGVnZXIKICAgIC0gdGltZW91dCBpbiBzZWNvbmRzIChmbG9hdHMgcG9zc2libGUpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCiAKIC4uIF9rZXZlbnQtb2JqZWN0czoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VsZWN0b3JzLnJzdCBiL0RvYy9saWJyYXJ5L3NlbGVjdG9ycy5yc3QKaW5kZXggOTgzNzdjOC4uNTZjZmM2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2VsZWN0b3JzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zZWxlY3RvcnMucnN0CkBAIC00NSwxMiArNDUsMTMgQEAKICAgICstLSBTZWxlY3RTZWxlY3RvcgogICAgKy0tIFBvbGxTZWxlY3RvcgogICAgKy0tIEVwb2xsU2VsZWN0b3IKKyAgICstLSBEZXZwb2xsU2VsZWN0b3IKICAgICstLSBLcXVldWVTZWxlY3RvcgogCiAKIEluIHRoZSBmb2xsb3dpbmcsICpldmVudHMqIGlzIGEgYml0d2lzZSBtYXNrIGluZGljYXRpbmcgd2hpY2ggSS9PIGV2ZW50cyBzaG91bGQKLWJlIHdhaXRlZCBmb3Igb24gYSBnaXZlbiBmaWxlIG9iamVjdC4gSXQgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGNvbnN0YW50cwotYmVsb3c6CitiZSB3YWl0ZWQgZm9yIG9uIGEgZ2l2ZW4gZmlsZSBvYmplY3QuIEl0IGNhbiBiZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBtb2R1bGVzCitjb25zdGFudHMgYmVsb3c6CiAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTE1OCw2ICsxNTksMTIgQEAKICAgICAgICAgICB0aW1lb3V0IGhhcyBlbGFwc2VkIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWw6IGluIHRoaXMKICAgICAgICAgICBjYXNlLCBhbiBlbXB0eSBsaXN0IHdpbGwgYmUgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBUaGUgc2VsZWN0b3IgaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkCisgICAgICAgICBieSBhIHNpZ25hbCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgZGlkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gKHNlZQorICAgICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IGxpc3QKKyAgICAgICAgIG9mIGV2ZW50cyBiZWZvcmUgdGhlIHRpbWVvdXQuCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgQ2xvc2UgdGhlIHNlbGVjdG9yLgpAQCAtMjA3LDYgKzIxNCwxNiBAQAogICAgICAgVGhpcyByZXR1cm5zIHRoZSBmaWxlIGRlc2NyaXB0b3IgdXNlZCBieSB0aGUgdW5kZXJseWluZwogICAgICAgOmZ1bmM6YHNlbGVjdC5lcG9sbGAgb2JqZWN0LgogCisuLiBjbGFzczo6IERldnBvbGxTZWxlY3RvcigpCisKKyAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAtYmFzZWQgc2VsZWN0b3IuCisKKyAgIC4uIG1ldGhvZDo6IGZpbGVubygpCisKKyAgICAgIFRoaXMgcmV0dXJucyB0aGUgZmlsZSBkZXNjcmlwdG9yIHVzZWQgYnkgdGhlIHVuZGVybHlpbmcKKyAgICAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gY2xhc3M6OiBLcXVldWVTZWxlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDA0YWZlOTIuLjNiNDY3ZTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtMTkxLDcgKzE5MSw4IEBACiAgICBtYXRjaCBvbmUgb2YgdGhlIGdsb2Itc3R5bGUgKnBhdHRlcm5zKiBwcm92aWRlZC4gIFNlZSB0aGUgZXhhbXBsZSBiZWxvdy4KIAogCi0uLiBmdW5jdGlvbjo6IGNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz1GYWxzZSwgaWdub3JlPU5vbmUsIGNvcHlfZnVuY3Rpb249Y29weTIsIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcz1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPUZhbHNlLCBpZ25vcmU9Tm9uZSwgXAorICAgICAgICAgICAgICBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKICAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKiwgcmV0dXJuaW5nIHRoZQogICAgZGVzdGluYXRpb24gZGlyZWN0b3J5LiAgVGhlIGRlc3RpbmF0aW9uCkBAIC0yODIsNyArMjgzLDcgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCwgY29weV9mdW5jdGlvbj1jb3B5MikKIAogICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCiAgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KQEAgLTI5MiwxNSArMjkzLDI2IEBACiAgICBiZSBvdmVyd3JpdHRlbiBkZXBlbmRpbmcgb24gOmZ1bmM6YG9zLnJlbmFtZWAgc2VtYW50aWNzLgogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwotICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgotICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisgICB1c2VkLiBPdGhlcndpc2UsICpzcmMqIGlzIGNvcGllZCB0byAqZHN0KiB1c2luZyAqY29weV9mdW5jdGlvbiogYW5kIHRoZW4KKyAgIHJlbW92ZWQuICBJbiBjYXNlIG9mIHN5bWxpbmtzLCBhIG5ldyBzeW1saW5rIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgb2YgKnNyYyoKKyAgIHdpbGwgYmUgY3JlYXRlZCBpbiBvciBhcyAqZHN0KiBhbmQgKnNyYyogd2lsbCBiZSByZW1vdmVkLgorCisgICBJZiAqY29weV9mdW5jdGlvbiogaXMgZ2l2ZW4sIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMKKyAgICpzcmMqIGFuZCAqZHN0KiwgYW5kIHdpbGwgYmUgdXNlZCB0byBjb3B5ICpzcmMqIHRvICpkZXN0KiBpZgorICAgOmZ1bmM6YG9zLnJlbmFtZWAgY2Fubm90IGJlIHVzZWQuICBJZiB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LAorICAgOmZ1bmM6YGNvcHl0cmVlYCBpcyBjYWxsZWQsIHBhc3NpbmcgaXQgdGhlIDpmdW5jOmBjb3B5X2Z1bmN0aW9uYC4gVGhlCisgICBkZWZhdWx0ICpjb3B5X2Z1bmN0aW9uKiBpcyA6ZnVuYzpgY29weTJgLiAgVXNpbmcgOmZ1bmM6YGNvcHlgIGFzIHRoZQorICAgKmNvcHlfZnVuY3Rpb24qIGFsbG93cyB0aGUgbW92ZSB0byBzdWNjZWVkIHdoZW4gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGFsc28KKyAgIGNvcHkgdGhlIG1ldGFkYXRhLCBhdCB0aGUgZXhwZW5zZSBvZiBub3QgY29weWluZyBhbnkgb2YgdGhlIG1ldGFkYXRhLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgZXhwbGljaXQgc3ltbGluayBoYW5kbGluZyBmb3IgZm9yZWlnbiBmaWxlc3lzdGVtcywgdGh1cyBhZGFwdGluZwogICAgICAgaXQgdG8gdGhlIGJlaGF2aW9yIG9mIEdOVSdzIDpwcm9ncmFtOmBtdmAuCiAgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbioga2V5d29yZCBhcmd1bWVudC4KKwogLi4gZnVuY3Rpb246OiBkaXNrX3VzYWdlKHBhdGgpCiAKICAgIFJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgCkBAIC00MTgsNiArNDMwLDI2IEBACiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCiAKIAorLi4gX3NodXRpbC1ybXRyZWUtZXhhbXBsZToKKworcm10cmVlIGV4YW1wbGUKK35+fn5+fn5+fn5+fn5+CisKK1RoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gcmVtb3ZlIGEgZGlyZWN0b3J5IHRyZWUgb24gV2luZG93cyB3aGVyZSBzb21lCitvZiB0aGUgZmlsZXMgaGF2ZSB0aGVpciByZWFkLW9ubHkgYml0IHNldC4gSXQgdXNlcyB0aGUgb25lcnJvciBjYWxsYmFjawordG8gY2xlYXIgdGhlIHJlYWRvbmx5IGJpdCBhbmQgcmVhdHRlbXB0IHRoZSByZW1vdmUuIEFueSBzdWJzZXF1ZW50IGZhaWx1cmUKK3dpbGwgcHJvcGFnYXRlLiA6OgorCisgICAgaW1wb3J0IG9zLCBzdGF0CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgZGVmIHJlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBfKToKKyAgICAgICAgIkNsZWFyIHRoZSByZWFkb25seSBiaXQgYW5kIHJlYXR0ZW1wdCB0aGUgcmVtb3ZhbCIKKyAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lXUklURSkKKyAgICAgICAgZnVuYyhwYXRoKQorCisgICAgc2h1dGlsLnJtdHJlZShkaXJlY3RvcnksIG9uZXJyb3I9cmVtb3ZlX3JlYWRvbmx5KQorCiAuLiBfYXJjaGl2aW5nLW9wZXJhdGlvbnM6CiAKIEFyY2hpdmluZyBvcGVyYXRpb25zCkBAIC00MzQsNyArNDY2LDggQEAKIAogICAgKmJhc2VfbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBpbmNsdWRpbmcgdGhlIHBhdGgsIG1pbnVzCiAgICBhbnkgZm9ybWF0LXNwZWNpZmljIGV4dGVuc2lvbi4gKmZvcm1hdCogaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YKLSAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KKyAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSksICJ4enRhciIKKyAgIChpZiB0aGUgOm1vZDpgbHptYWAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KIAogICAgKnJvb3RfZGlyKiBpcyBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQogICAgYXJjaGl2ZTsgZm9yIGV4YW1wbGUsIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICpyb290X2RpciogYmVmb3JlIGNyZWF0aW5nIHRoZQpAQCAtNDU3LDYgKzQ5MCw5IEBACiAKICAgIFRoZSAqdmVyYm9zZSogYXJndW1lbnQgaXMgdW51c2VkIGFuZCBkZXByZWNhdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlICp4enRhciogZm9ybWF0LgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTQ2Nyw2ICs1MDMsNyBAQAogCiAgICAtICpnenRhcio6IGd6aXAnZWQgdGFyLWZpbGUKICAgIC0gKmJ6dGFyKjogYnppcDInZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBiejJgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQorICAgLSAqeHp0YXIqOiB4eidlZCB0YXItZmlsZSAoaWYgdGhlIDptb2Q6YGx6bWFgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQogICAgLSAqdGFyKjogdW5jb21wcmVzc2VkIHRhciBmaWxlCiAgICAtICp6aXAqOiBaSVAgZmlsZQogCkBAIC01NDIsNiArNTc5LDcgQEAKIAogICAgLSAqZ3p0YXIqOiBnemlwJ2VkIHRhci1maWxlCiAgICAtICpienRhcio6IGJ6aXAyJ2VkIHRhci1maWxlIChpZiB0aGUgOm1vZDpgYnoyYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKKyAgIC0gKnh6dGFyKjogeHonZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBsem1hYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKICAgIC0gKnRhcio6IHVuY29tcHJlc3NlZCB0YXIgZmlsZQogICAgLSAqemlwKjogWklQIGZpbGUKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdCBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKaW5kZXggOGI5MDk5NC4uOGY4MTRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaWduYWwucnN0CkBAIC02NSw2ICs2NSwxNiBAQAogTW9kdWxlIGNvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIHNpZ25hbCAoU0lHKiksIGhhbmRsZXIgKDpjb25zdDpgU0lHX0RGTGAsIDpjb25zdDpgU0lHX0lHTmApIGFuZCBzaWdtYXNrCisgICAoOmNvbnN0OmBTSUdfQkxPQ0tgLCA6Y29uc3Q6YFNJR19VTkJMT0NLYCwgOmNvbnN0OmBTSUdfU0VUTUFTS2ApCisgICByZWxhdGVkIGNvbnN0YW50cyBsaXN0ZWQgYmVsb3cgd2VyZSB0dXJuZWQgaW50bworICAgOmNsYXNzOmBlbnVtcyA8ZW51bS5JbnRFbnVtPmAuCisgICA6ZnVuYzpgZ2V0c2lnbmFsYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCBhbmQKKyAgIDpmdW5jOmBzaWd3YWl0YCBmdW5jdGlvbnMgcmV0dXJuIGh1bWFuLXJlYWRhYmxlCisgICA6Y2xhc3M6YGVudW1zIDxlbnVtLkludEVudW0+YC4KKworCiBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGFyZToKIAogCkBAIC0yMDksMjEgKzIxOSwyMSBAQAogICAgOmZ1bmM6YHNpZ3BlbmRpbmdgLgogCiAKLS4uIGZ1bmN0aW9uOjogcHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKQorLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWduYWxudW0pCiAKLSAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbmFsbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKICAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQogICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KICAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCi0gICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKLSAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAotICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhCisgICBzaWduYWwgdG8gYSBwYXJ0aWN1bGFyIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsCisgICB0byBmYWlsIHdpdGggOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKICAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAogICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQogICAgZm9yICp0aHJlYWRfaWQqLgogCi0gICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIElmICpzaWduYWxudW0qIGlzIDAsIHRoZW4gbm8gc2lnbmFsIGlzIHNlbnQsIGJ1dCBlcnJvciBjaGVja2luZyBpcyBzdGlsbAogICAgcGVyZm9ybWVkOyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB0YXJnZXQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgcHRocmVhZF9raWxsKDMpYCBmb3IgZnVydGhlcgpAQCAtMzA4LDYgKzMxOCw5IEBACiAgICBhdHRlbXB0aW5nIHRvIGNhbGwgaXQgZnJvbSBvdGhlciB0aHJlYWRzIHdpbGwgY2F1c2UgYSA6ZXhjOmBWYWx1ZUVycm9yYAogICAgZXhjZXB0aW9uIHRvIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cyBzb2NrZXQgaGFuZGxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ2ludGVycnVwdChzaWduYWxudW0sIGZsYWcpCiAKQEAgLTM5NSw2ICs0MDgsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgaWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgbm90IGluICpzaWdzZXQqCisgICAgICBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yCisgICAgICB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ3RpbWVkd2FpdChzaWdzZXQsIHRpbWVvdXQpCiAKQEAgLTQwOSw2ICs0MjcsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCB0aGUgcmVjb21wdXRlZCAqdGltZW91dCogaWYgaW50ZXJydXB0ZWQKKyAgICAgIGJ5IGEgc2lnbmFsIG5vdCBpbiAqc2lnc2V0KiBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBfc2lnbmFsLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTFlNWRhOC4uNDNkYWY3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTI2LDI0ICsyNiwyMyBAQAogICAgOm9wdGlvbjpgLVNgLgogCiAuLiBpbmRleDo6Ci0gICBwYWlyOiBzaXRlLXB5dGhvbjsgZGlyZWN0b3J5CiAgICBwYWlyOiBzaXRlLXBhY2thZ2VzOyBkaXJlY3RvcnkKIAogSXQgc3RhcnRzIGJ5IGNvbnN0cnVjdGluZyB1cCB0byBmb3VyIGRpcmVjdG9yaWVzIGZyb20gYSBoZWFkIGFuZCBhIHRhaWwgcGFydC4KIEZvciB0aGUgaGVhZCBwYXJ0LCBpdCB1c2VzIGBgc3lzLnByZWZpeGBgIGFuZCBgYHN5cy5leGVjX3ByZWZpeGBgOyBlbXB0eSBoZWFkcwogYXJlIHNraXBwZWQuICBGb3IgdGhlIHRhaWwgcGFydCwgaXQgdXNlcyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGVuCiA6ZmlsZTpgbGliL3NpdGUtcGFja2FnZXNgIChvbiBXaW5kb3dzKSBvcgotOmZpbGU6YGxpYi9weXRob257WC5ZfS9zaXRlLXBhY2thZ2VzYCBhbmQgdGhlbiA6ZmlsZTpgbGliL3NpdGUtcHl0aG9uYCAob24KLVVuaXggYW5kIE1hY2ludG9zaCkuICBGb3IgZWFjaCBvZiB0aGUgZGlzdGluY3QgaGVhZC10YWlsIGNvbWJpbmF0aW9ucywgaXQgc2VlcwotaWYgaXQgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgYW5kIGlmIHNvLCBhZGRzIGl0IHRvIGBgc3lzLnBhdGhgYCBhbmQKLWFsc28gaW5zcGVjdHMgdGhlIG5ld2x5IGFkZGVkIHBhdGggZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMuCis6ZmlsZTpgbGliL3B5dGhvbntYLll9L3NpdGUtcGFja2FnZXNgIChvbiBVbml4IGFuZCBNYWNpbnRvc2gpLiAgRm9yIGVhY2gKK29mIHRoZSBkaXN0aW5jdCBoZWFkLXRhaWwgY29tYmluYXRpb25zLCBpdCBzZWVzIGlmIGl0IHJlZmVycyB0byBhbiBleGlzdGluZworZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZCBhbHNvIGluc3BlY3RzIHRoZSBuZXdseQorYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAotLi4gZGVwcmVjYXRlZDo6IDMuNAotICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQuCiAKIElmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCiBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKLWl0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyAoc3lzLmJhc2VfcHJlZml4IGFuZAogc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCiBpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKIHRoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKQEAgLTE5NSw4ICsxOTQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldHNpdGVwYWNrYWdlcygpCiAKLSAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMgKGFuZCBwb3NzaWJseQotICAgc2l0ZS1weXRob24pLgorICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIGFsbCBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcmllcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAppbmRleCAzZWJlZDA2Li45NzdmOWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGQucnN0CkBAIC0yMCw3ICsyMCw4IEBACiBBZGRpdGlvbmFsbHkgdGhlIFNNVFBDaGFubmVsIG1heSBiZSBleHRlbmRlZCB0byBpbXBsZW1lbnQgdmVyeSBzcGVjaWZpYwogaW50ZXJhY3Rpb24gYmVoYXZpb3VyIHdpdGggU01UUCBjbGllbnRzLgogCi1UaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBleHRlbnNpb24uCitUaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBhbmQgOnJmYzpgNjUzMWAKK1NNVFBVVEY4IGV4dGVuc2lvbnMuCiAKIAogU01UUFNlcnZlciBPYmplY3RzCkBAIC0yOCw3ICsyOSw3IEBACiAKIAogLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgSXQKQEAgLTM5LDI1ICs0MCw3NyBAQAogICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubwogICAgbGltaXQuCiAKLSAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCisgICAqbWFwKiBpcyB0aGUgc29ja2V0IG1hcCB0byB1c2UgZm9yIGNvbm5lY3Rpb25zIChhbiBpbml0aWFsbHkgZW1wdHkKKyAgIGRpY3Rpb25hcnkgaXMgYSBzdWl0YWJsZSB2YWx1ZSkuICBJZiBub3Qgc3BlY2lmaWVkIHRoZSA6bW9kOmBhc3luY29yZWAKKyAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKLSAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKKyAgICplbmFibGVfU01UUFVURjgqIGRldGVybWlucyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBJZiBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCAqZGVjb2RlX2RhdGEqIG11c3QgYmUgYGBGYWxzZWBgIChvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkKS4KKyAgIFdoZW4gYGBUcnVlYGAsIGBgU01UUFVURjhgYCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgYGBNQUlMYGAKKyAgIGNvbW1hbmQgYW5kIHdoZW4gcHJlc2VudCBpcyBwYXNzZWQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgaW4gdGhlCisgICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgogCi0gICAgICBSYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24uIE92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0bworICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjY7IHNwZWNpZnkKKyAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBXaGVuCisgICAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKKyAgIGV4dGVuc2lvbiAoOnJmYzpgNjE1MmApLCBhY2NlcHRzIHRoZSBgYEJPRFk9OEJJVE1JTUVgYCBwYXJhbWV0ZXIgdG8KKyAgIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBhbmQgd2hlbiBwcmVzZW50IHBhc3NlcyBpdCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYAorICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisKKyAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpCisKKyAgICAgIFJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KICAgICAgIGRvIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGlzIG1lc3NhZ2UuIFdoYXRldmVyIHdhcyBwYXNzZWQgaW4gdGhlCiAgICAgICBjb25zdHJ1Y3RvciBhcyAqcmVtb3RlYWRkciogd2lsbCBiZSBhdmFpbGFibGUgYXMgdGhlIDphdHRyOmBfcmVtb3RlYWRkcmAKICAgICAgIGF0dHJpYnV0ZS4gKnBlZXIqIGlzIHRoZSByZW1vdGUgaG9zdCdzIGFkZHJlc3MsICptYWlsZnJvbSogaXMgdGhlIGVudmVsb3BlCiAgICAgICBvcmlnaW5hdG9yLCAqcmNwdHRvcyogYXJlIHRoZSBlbnZlbG9wZSByZWNpcGllbnRzIGFuZCAqZGF0YSogaXMgYSBzdHJpbmcKLSAgICAgIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBlLW1haWwgKHdoaWNoIHNob3VsZCBiZSBpbiA6cmZjOmAyODIyYAorICAgICAgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgdGhlIGUtbWFpbCAod2hpY2ggc2hvdWxkIGJlIGluIDpyZmM6YDUzMjFgCiAgICAgICBmb3JtYXQpLgogCisgICAgICBJZiB0aGUgKmRlY29kZV9kYXRhKiBjb25zdHJ1Y3RvciBrZXl3b3JkIGlzIHNldCB0byBgYFRydWVgYCwgdGhlICpkYXRhKgorICAgICAgYXJndW1lbnQgd2lsbCBiZSBhIHVuaWNvZGUgc3RyaW5nLiAgSWYgaXQgaXMgc2V0IHRvIGBgRmFsc2VgYCwgaXQKKyAgICAgIHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCisKKyAgICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5CisgICAgICB1bmxlc3MgYXQgbGVhc3Qgb25lIG9mIGBgZGVjb2RlX2RhdGE9RmFsc2VgYCBvciBgYGVuYWJsZV9TTVRQVVRGOD1UcnVlYGAKKyAgICAgIHdhcyBnaXZlbiBhcyBhbiBpbml0IHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nCisgICAgICBrZXlzOgorCisgICAgICAgICAgKm1haWxfb3B0aW9ucyo6CisgICAgICAgICAgICAgYSBsaXN0IG9mIGFsbCByZWNlaXZlZCBwYXJhbWV0ZXJzIHRvIHRoZSBgYE1BSUxgYAorICAgICAgICAgICAgIGNvbW1hbmQgKHRoZSBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3M7IGV4YW1wbGU6CisgICAgICAgICAgICAgYGBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXWBgKS4KKworICAgICAgICAgICpyY3B0X29wdGlvbnMqOgorICAgICAgICAgICAgIHNhbWUgYXMgKm1haWxfb3B0aW9ucyogYnV0IGZvciB0aGUgYGBSQ1BUYGAgY29tbWFuZC4KKyAgICAgICAgICAgICBDdXJyZW50bHkgbm8gYGBSQ1BUIFRPYGAgb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCBzbyBmb3Igbm93CisgICAgICAgICAgICAgdGhpcyB3aWxsIGFsd2F5cyBiZSBhbiBlbXB0eSBsaXN0LgorCisgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgYGBwcm9jZXNzX21lc3NhZ2VgYCBzaG91bGQgdXNlIHRoZSBgYCoqa3dhcmdzYGAKKyAgICAgIHNpZ25hdHVyZSB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLCBzaW5jZSBmdXR1cmUgZmVhdHVyZQorICAgICAgZW5oYW5jZW1lbnRzIG1heSBhZGQga2V5cyB0byB0aGUga3dhcmdzIGRpY3Rpb25hcnkuCisKKyAgICAgIFJldHVybiBgYE5vbmVgYCB0byByZXF1ZXN0IGEgbm9ybWFsIGBgMjUwIE9rYGAgcmVzcG9uc2U7IG90aGVyd2lzZQorICAgICAgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiA6UkZDOmA1MzIxYCBmb3JtYXQuCisKICAgIC4uIGF0dHJpYnV0ZTo6IGNoYW5uZWxfY2xhc3MKIAogICAgICAgT3ZlcnJpZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvIHVzZSBhIGN1c3RvbSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBmb3IKICAgICAgIG1hbmFnaW5nIFNNVFAgY2xpZW50cy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSAqbWFwKiBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIFRoZSAqbWFwKiBjb25zdHJ1Y3RvciBhcmd1bWVudC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKKyAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKKyAgICAgIHNwZWNpZmllZC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtOTcsNyArMTUwLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBTTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTA4LDExICsxNjEsMjQgQEAKICAgIGFjY2VwdGVkIGluIGEgYGBEQVRBYGAgY29tbWFuZC4gIEEgdmFsdWUgb2YgYGBOb25lYGAgb3IgYGAwYGAgbWVhbnMgbm8KICAgIGxpbWl0LgogCisgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbnMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIGJvdGggKmVuYWJsZV9TTVRQVVRGOCogYW5kICpkZWNvZGVfZGF0YSogYXJlCisgICBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KKwogICAgQSBkaWN0aW9uYXJ5IGNhbiBiZSBzcGVjaWZpZWQgaW4gKm1hcCogdG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgc29ja2V0IG1hcC4KIAorICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBTcGVjaWZ5CisgICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLgorCiAgICBUbyB1c2UgYSBjdXN0b20gU01UUENoYW5uZWwgaW1wbGVtZW50YXRpb24geW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlCiAgICA6YXR0cjpgU01UUFNlcnZlci5jaGFubmVsX2NsYXNzYCBvZiB5b3VyIDpjbGFzczpgU01UUFNlcnZlcmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogYXJndW1lbnRzIHdlcmUgYWRkZWQuCisKICAgIFRoZSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBoYXMgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHNtdHBfc2VydmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDhlMWJmYjUuLmE3MWVlNTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC02MSw2ICs2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBUaGUgU01UUFVURjggZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkgaXMgbm93IHN1cHBvcnRlZC4KKworCiAuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUgWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKQpAQCAtMTYxLDYgKzE2NSwxMyBAQAogICAgVGhlIHNlcnZlciByZWZ1c2VkIG91ciBgYEhFTE9gYCBtZXNzYWdlLgogCiAKKy4uIGV4Y2VwdGlvbjo6IFNNVFBOb3RTdXBwb3J0ZWRFcnJvcgorCisgICAgVGhlIGNvbW1hbmQgb3Igb3B0aW9uIGF0dGVtcHRlZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBleGNlcHRpb246OiBTTVRQQXV0aGVudGljYXRpb25FcnJvcgogCiAgICBTTVRQIGF1dGhlbnRpY2F0aW9uIHdlbnQgd3JvbmcuICBNb3N0IHByb2JhYmx5IHRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUKQEAgLTE4OSw4ICsyMDAsMTIgQEAKIAogLi4gbWV0aG9kOjogU01UUC5zZXRfZGVidWdsZXZlbChsZXZlbCkKIAotICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHRydWUgdmFsdWUgZm9yICpsZXZlbCogcmVzdWx0cyBpbiBkZWJ1ZyBtZXNzYWdlcwotICAgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgorICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHZhbHVlIG9mIDEgb3IgYGBUcnVlYGAgZm9yICpsZXZlbCogcmVzdWx0cyBpbgorICAgZGVidWcgbWVzc2FnZXMgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbQorICAgdGhlIHNlcnZlci4gIEEgdmFsdWUgb2YgMiBmb3IgKmxldmVsKiByZXN1bHRzIGluIHRoZXNlIG1lc3NhZ2VzIGJlaW5nCisgICB0aW1lc3RhbXBlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUgQWRkZWQgZGVidWdsZXZlbCAyLgogCiAKIC4uIG1ldGhvZDo6IFNNVFAuZG9jbWQoY21kLCBhcmdzPScnKQpAQCAtMjQwLDggKzI1NSw3IEBACiAgICB0aGUgc2VydmVyIGlzIHN0b3JlZCBhcyB0aGUgOmF0dHI6YGVobG9fcmVzcGAgYXR0cmlidXRlLCA6YXR0cjpgZG9lc19lc210cGAKICAgIGlzIHNldCB0byB0cnVlIG9yIGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgRVNNVFAsIGFuZAogICAgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYCB3aWxsIGJlIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUKLSAgIFNNVFAgc2VydmljZSBleHRlbnNpb25zIHRoaXMgc2VydmVyIHN1cHBvcnRzLCBhbmQgdGhlaXIKLSAgIHBhcmFtZXRlcnMgKGlmIGFueSkuCisgICBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9ucyB0aGlzIHNlcnZlciBzdXBwb3J0cywgYW5kIHRoZWlyIHBhcmFtZXRlcnMgKGlmIGFueSkuCiAKICAgIFVubGVzcyB5b3Ugd2lzaCB0byB1c2UgOm1ldGg6YGhhc19leHRuYCBiZWZvcmUgc2VuZGluZyBtYWlsLCBpdCBzaG91bGQgbm90IGJlCiAgICBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIG1ldGhvZCBleHBsaWNpdGx5LiAgSXQgd2lsbCBiZSBpbXBsaWNpdGx5IGNhbGxlZCBieQpAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICBNYW55IHNpdGVzIGRpc2FibGUgU01UUCBgYFZSRllgYCBpbiBvcmRlciB0byBmb2lsIHNwYW1tZXJzLgogCiAKLS4uIG1ldGhvZDo6IFNNVFAubG9naW4odXNlciwgcGFzc3dvcmQpCisuLiBtZXRob2Q6OiBTTVRQLmxvZ2luKHVzZXIsIHBhc3N3b3JkLCAqLCBpbml0aWFsX3Jlc3BvbnNlX29rPVRydWUpCiAKICAgIExvZyBpbiBvbiBhbiBTTVRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLiBUaGUgYXJndW1lbnRzIGFyZSB0aGUKICAgIHVzZXJuYW1lIGFuZCB0aGUgcGFzc3dvcmQgdG8gYXV0aGVudGljYXRlIHdpdGguIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzCkBAIC0yODgsOSArMzAyLDY4IEBACiAgICA6ZXhjOmBTTVRQQXV0aGVudGljYXRpb25FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUgdXNlcm5hbWUvcGFzc3dvcmQgY29tYmluYXRpb24uCiAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKKyAgICAgIFRoZSBgYEFVVEhgYCBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKwogICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgZm91bmQuCiAKKyAgIEVhY2ggb2YgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IDptb2Q6YHNtdHBsaWJgIGFyZSB0cmllZCBpbgorICAgdHVybiBpZiB0aGV5IGFyZSBhZHZlcnRpc2VkIGFzIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLiAgU2VlIDptZXRoOmBhdXRoYAorICAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcy4gICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgcGFzc2VkIHRocm91Z2ggdG8gOm1ldGg6YGF1dGhgLgorCisgICBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICppbml0aWFsX3Jlc3BvbnNlX29rKiBzcGVjaWZpZXMgd2hldGhlciwgZm9yCisgICBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoYXQgc3VwcG9ydCBpdCwgYW4gImluaXRpYWwgcmVzcG9uc2UiIGFzIHNwZWNpZmllZAorICAgaW4gOnJmYzpgNDk1NGAgY2FuIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgYGBBVVRIYGAgY29tbWFuZCwgcmF0aGVyIHRoYW4KKyAgIHJlcXVpcmluZyBhIGNoYWxsZW5nZS9yZXNwb25zZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlIHJhaXNlZCwgYW5kIHRoZQorICAgICAgKmluaXRpYWxfcmVzcG9uc2Vfb2sqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKKworLi4gbWV0aG9kOjogU01UUC5hdXRoKG1lY2hhbmlzbSwgYXV0aG9iamVjdCwgKiwgaW5pdGlhbF9yZXNwb25zZV9vaz1UcnVlKQorCisgICBJc3N1ZSBhbiBgYFNNVFBgYCBgYEFVVEhgYCBjb21tYW5kIGZvciB0aGUgc3BlY2lmaWVkIGF1dGhlbnRpY2F0aW9uCisgICAqbWVjaGFuaXNtKiwgYW5kIGhhbmRsZSB0aGUgY2hhbGxlbmdlIHJlc3BvbnNlIHZpYSAqYXV0aG9iamVjdCouCisKKyAgICptZWNoYW5pc20qIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KKyAgIGJlIHVzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGBgQVVUSGBgIGNvbW1hbmQ7IHRoZSB2YWxpZCB2YWx1ZXMgYXJlCisgICB0aG9zZSBsaXN0ZWQgaW4gdGhlIGBgYXV0aGBgIGVsZW1lbnQgb2YgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYC4KKworICAgKmF1dGhvYmplY3QqIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3QgdGFraW5nIGFuIG9wdGlvbmFsIHNpbmdsZSBhcmd1bWVudDoKKworICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2U9Tm9uZSkKKworICAgSWYgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqaW5pdGlhbF9yZXNwb25zZV9vayogaXMgdHJ1ZSwKKyAgIGBgYXV0aG9iamVjdCgpYGAgd2lsbCBiZSBjYWxsZWQgZmlyc3Qgd2l0aCBubyBhcmd1bWVudC4gIEl0IGNhbiByZXR1cm4gdGhlCisgICA6cmZjOmA0OTU0YCAiaW5pdGlhbCByZXNwb25zZSIgYnl0ZXMgd2hpY2ggd2lsbCBiZSBlbmNvZGVkIGFuZCBzZW50IHdpdGgKKyAgIHRoZSBgYEFVVEhgYCBjb21tYW5kIGFzIGJlbG93LiAgSWYgdGhlIGBgYXV0aG9iamVjdCgpYGAgZG9lcyBub3Qgc3VwcG9ydCBhbgorICAgaW5pdGlhbCByZXNwb25zZSAoZS5nLiBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgY2hhbGxlbmdlKSwgaXQgc2hvdWxkIHJldHVybgorICAgTm9uZSB3aGVuIGNhbGxlZCB3aXRoIGBgY2hhbGxlbmdlPU5vbmVgYC4gIElmICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgZmFsc2UsIHRoZW4gYGBhdXRob2JqZWN0KClgYCB3aWxsIG5vdCBiZSBjYWxsZWQgZmlyc3Qgd2l0aCBOb25lLgorCisgICBJZiB0aGUgaW5pdGlhbCByZXNwb25zZSBjaGVjayByZXR1cm5zIE5vbmUsIG9yIGlmICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgZmFsc2UsIGBgYXV0aG9iamVjdCgpYGAgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlCisgICByZXNwb25zZTsgdGhlICpjaGFsbGVuZ2UqIGFyZ3VtZW50IGl0IGlzIHBhc3NlZCB3aWxsIGJlIGEgYGBieXRlc2BgLiAgSXQKKyAgIHNob3VsZCByZXR1cm4gYGBieXRlc2BgICpkYXRhKiB0aGF0IHdpbGwgYmUgYmFzZTY0IGVuY29kZWQgYW5kIHNlbnQgdG8gdGhlCisgICBzZXJ2ZXIuCisKKyAgIFRoZSBgYFNNVFBgYCBjbGFzcyBwcm92aWRlcyBgYGF1dGhvYmplY3RzYGAgZm9yIHRoZSBgYENSQU0tTUQ1YGAsIGBgUExBSU5gYCwKKyAgIGFuZCBgYExPR0lOYGAgbWVjaGFuaXNtczsgdGhleSBhcmUgbmFtZWQgYGBTTVRQLmF1dGhfY3JhbV9tZDVgYCwKKyAgIGBgU01UUC5hdXRoX3BsYWluYGAsIGFuZCBgYFNNVFAuYXV0aF9sb2dpbmBgIHJlc3BlY3RpdmVseS4gIFRoZXkgYWxsIHJlcXVpcmUKKyAgIHRoYXQgdGhlIGBgdXNlcmBgIGFuZCBgYHBhc3N3b3JkYGAgcHJvcGVydGllcyBvZiB0aGUgYGBTTVRQYGAgaW5zdGFuY2UgYXJlCisgICBzZXQgdG8gYXBwcm9wcmlhdGUgdmFsdWVzLgorCisgICBVc2VyIGNvZGUgZG9lcyBub3Qgbm9ybWFsbHkgbmVlZCB0byBjYWxsIGBgYXV0aGBgIGRpcmVjdGx5LCBidXQgY2FuIGluc3RlYWQKKyAgIGNhbGwgdGhlIDptZXRoOmBsb2dpbmAgbWV0aG9kLCB3aGljaCB3aWxsIHRyeSBlYWNoIG9mIHRoZSBhYm92ZSBtZWNoYW5pc21zCisgICBpbiB0dXJuLCBpbiB0aGUgb3JkZXIgbGlzdGVkLiAgYGBhdXRoYGAgaXMgZXhwb3NlZCB0byBmYWNpbGl0YXRlIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyBub3QgKG9yIG5vdCB5ZXQpIHN1cHBvcnRlZAorICAgZGlyZWN0bHkgYnkgOm1vZDpgc210cGxpYmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc3RhcnR0bHMoa2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpCiAKQEAgLTMxMCw3ICszODMsNyBAQAogICAgOmV4YzpgU01UUEhlbG9FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IHJlcGx5IHByb3Blcmx5IHRvIHRoZSBgYEhFTE9gYCBncmVldGluZy4KIAotICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKICAgICAgVGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTVEFSVFRMUyBleHRlbnNpb24uCiAKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAKQEAgLTMyNCw2ICszOTcsMTEgQEAKICAgICAgIDphdHRyOmBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRvciogKHNlZQogICAgICAgOmRhdGE6YH5zc2wuSEFTX1NOSWApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGVycm9yIHJhaXNlZCBmb3IgbGFjayBvZiBTVEFSVFRMUyBzdXBwb3J0IGlzIG5vdyB0aGUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgc3ViY2xhc3MgaW5zdGVhZCBvZiB0aGUgYmFzZQorICAgICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zNjAsNiArNDM4LDkgQEAKICAgIHJlY2lwaWVudCB0aGF0IHdhcyByZWZ1c2VkLiAgRWFjaCBlbnRyeSBjb250YWlucyBhIHR1cGxlIG9mIHRoZSBTTVRQIGVycm9yIGNvZGUKICAgIGFuZCB0aGUgYWNjb21wYW55aW5nIGVycm9yIG1lc3NhZ2Ugc2VudCBieSB0aGUgc2VydmVyLgogCisgICBJZiBgYFNNVFBVVEY4YGAgaXMgaW5jbHVkZWQgaW4gKm1haWxfb3B0aW9ucyosIGFuZCB0aGUgc2VydmVyIHN1cHBvcnRzIGl0LAorICAgKmZyb21fYWRkciogYW5kICp0b19hZGRyKiBtYXkgY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycy4KKwogICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKIAogICAgOmV4YzpgU01UUFJlY2lwaWVudHNSZWZ1c2VkYApAQCAtMzc4LDEyICs0NTksMjAgQEAKICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQgZXJyb3IgY29kZSAob3RoZXIgdGhhbiBhIHJlZnVzYWwgb2YgYQogICAgICAgcmVjaXBpZW50KS4KIAorICAgOmV4YzpgU01UUE5vdFN1cHBvcnRlZEVycm9yYAorICAgICAgYGBTTVRQVVRGOGBgIHdhcyBnaXZlbiBpbiB0aGUgKm1haWxfb3B0aW9ucyogYnV0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICBzZXJ2ZXIuCisKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKm1zZyogbWF5IGJlIGEgYnl0ZSBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBgYFNNVFBVVEY4YGAgc3VwcG9ydCBhZGRlZCwgYW5kIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlCisgICAgICByYWlzZWQgaWYgYGBTTVRQVVRGOGBgIGlzIHNwZWNpZmllZCBidXQgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IGl0LgorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc2VuZF9tZXNzYWdlKG1zZywgZnJvbV9hZGRyPU5vbmUsIHRvX2FkZHJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQpAQCAtMzk1LDcgKzQ4NCw3IEBACiAKICAgIElmICpmcm9tX2FkZHIqIGlzIGBgTm9uZWBgIG9yICp0b19hZGRycyogaXMgYGBOb25lYGAsIGBgc2VuZF9tZXNzYWdlYGAgZmlsbHMKICAgIHRob3NlIGFyZ3VtZW50cyB3aXRoIGFkZHJlc3NlcyBleHRyYWN0ZWQgZnJvbSB0aGUgaGVhZGVycyBvZiAqbXNnKiBhcwotICAgc3BlY2lmaWVkIGluIDpyZmM6YDI4MjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAorICAgc3BlY2lmaWVkIGluIDpyZmM6YDUzMjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAogICAgZmllbGQgaWYgaXQgaXMgcHJlc2VudCwgYW5kIG90aGVyd2lzZSB0byB0aGUgOm1haWxoZWFkZXI6YEZyb21gIGZpZWxkLgogICAgKnRvX2FkcmVzc2VzKiBjb21iaW5lcyB0aGUgdmFsdWVzIChpZiBhbnkpIG9mIHRoZSA6bWFpbGhlYWRlcjpgVG9gLAogICAgOm1haWxoZWFkZXI6YENjYCwgYW5kIDptYWlsaGVhZGVyOmBCY2NgIGZpZWxkcyBmcm9tICptc2cqLiAgSWYgZXhhY3RseSBvbmUKQEAgLTQxMCwxMCArNDk5LDE4IEBACiAgICBjYWxscyA6bWV0aDpgc2VuZG1haWxgIHRvIHRyYW5zbWl0IHRoZSByZXN1bHRpbmcgbWVzc2FnZS4gIFJlZ2FyZGxlc3Mgb2YgdGhlCiAgICB2YWx1ZXMgb2YgKmZyb21fYWRkciogYW5kICp0b19hZGRycyosIGBgc2VuZF9tZXNzYWdlYGAgZG9lcyBub3QgdHJhbnNtaXQgYW55CiAgICA6bWFpbGhlYWRlcjpgQmNjYCBvciA6bWFpbGhlYWRlcjpgUmVzZW50LUJjY2AgaGVhZGVycyB0aGF0IG1heSBhcHBlYXIKLSAgIGluICptc2cqLgorICAgaW4gKm1zZyouICBJZiBhbnkgb2YgdGhlIGFkZHJlc3NlcyBpbiAqZnJvbV9hZGRyKiBhbmQgKnRvX2FkZHJzKiBjb250YWluCisgICBub24tQVNDSUkgY2hhcmFjdGVycyBhbmQgdGhlIHNlcnZlciBkb2VzIG5vdCBhZHZlcnRpc2UgYGBTTVRQVVRGOGBgIHN1cHBvcnQsCisgICBhbiA6ZXhjOmBTTVRQTm90U3VwcG9ydGVkYCBlcnJvciBpcyByYWlzZWQuICBPdGhlcndpc2UgdGhlIGBgTWVzc2FnZWBgIGlzCisgICBzZXJpYWxpemVkIHdpdGggYSBjbG9uZSBvZiBpdHMgOm1vZDpgfmVtYWlsLnBvbGljeWAgd2l0aCB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGF0dHJpYnV0ZSBzZXQgdG8gYGBUcnVlYGAsIGFuZAorICAgYGBTTVRQVVRGOGBgIGFuZCBgYEJPRFk9OEJJVE1JTUVgYCBhcmUgYWRkZWQgdG8gKm1haWxfb3B0aW9ucyouCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIGludGVybmF0aW9uYWxpemVkIGFkZHJlc3NlcyAoYGBTTVRQVVRGOGBgKS4KKwogCiAuLiBtZXRob2Q6OiBTTVRQLnF1aXQoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0IGIvRG9jL2xpYnJhcnkvc25kaGRyLnJzdAppbmRleCBmMzZkZjY4Li5mOGI1ZDhiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NuZGhkci5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIAogVGhlIDptb2Q6YHNuZGhkcmAgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIHR5cGUKIG9mIHNvdW5kIGRhdGEgd2hpY2ggaXMgaW4gYSBmaWxlLiAgV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFibGUgdG8gZGV0ZXJtaW5lCi13aGF0IHR5cGUgb2Ygc291bmQgZGF0YSBpcyBzdG9yZWQgaW4gYSBmaWxlLCB0aGV5IHJldHVybiBhIHR1cGxlIGBgKHR5cGUsCi1zYW1wbGluZ19yYXRlLCBjaGFubmVscywgZnJhbWVzLCBiaXRzX3Blcl9zYW1wbGUpYGAuICBUaGUgdmFsdWUgZm9yICp0eXBlKgord2hhdCB0eXBlIG9mIHNvdW5kIGRhdGEgaXMgc3RvcmVkIGluIGEgZmlsZSwgdGhleSByZXR1cm4gYQorOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCwgY29udGFpbmluZyBmaXZlIGF0dHJpYnV0ZXM6IChgYGZpbGV0eXBlYGAsCitgYGZyYW1lcmF0ZWBgLCBgYG5jaGFubmVsc2BgLCBgYG5mcmFtZXNgYCwgYGBzYW1wd2lkdGhgYCkuIFRoZSB2YWx1ZSBmb3IgKnR5cGUqCiBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZSBhbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgYGAnYWlmYydgYCwgYGAnYWlmZidgYCwKIGBgJ2F1J2BgLCBgYCdoY29tJ2BgLCBgYCdzbmRyJ2BgLCBgYCdzbmR0J2BgLCBgYCd2b2MnYGAsIGBgJ3dhdidgYCwgYGAnOHN2eCdgYCwKIGBgJ3NiJ2BgLCBgYCd1YidgYCwgb3IgYGAndWwnYGAuICBUaGUgKnNhbXBsaW5nX3JhdGUqIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKQEAgLTMxLDEzICszMiwxOSBAQAogLi4gZnVuY3Rpb246OiB3aGF0KGZpbGVuYW1lKQogCiAgICBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHNvdW5kIGRhdGEgc3RvcmVkIGluIHRoZSBmaWxlICpmaWxlbmFtZSogdXNpbmcKLSAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgdHVwbGUgYXMgZGVzY3JpYmVkIGFib3ZlLCBvdGhlcndpc2UKKyAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgbmFtZWR0dXBsZSBhcyBkZXNjcmliZWQgYWJvdmUsIG90aGVyd2lzZQogICAgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIC4uIGZ1bmN0aW9uOjogd2hhdGhkcihmaWxlbmFtZSkKIAogICAgRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBzb3VuZCBkYXRhIHN0b3JlZCBpbiBhIGZpbGUgYmFzZWQgb24gdGhlIGZpbGUgIGhlYWRlci4KLSAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzIGdpdmVuIGJ5ICpmaWxlbmFtZSouICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB0dXBsZSBhcworICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgaXMgZ2l2ZW4gYnkgKmZpbGVuYW1lKi4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5hbWVkdHVwbGUgYXMKICAgIGRlc2NyaWJlZCBhYm92ZSBvbiBzdWNjZXNzLCBvciBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFJlc3VsdCBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIG5hbWVkdHVwbGUuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDI3MWRkYTguLmU1ODNlYmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtNDYsMTcgKzQ2LDIwIEBACiAtIFRoZSBhZGRyZXNzIG9mIGFuIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0IGJvdW5kIHRvIGEgZmlsZSBzeXN0ZW0gbm9kZQogICBpcyByZXByZXNlbnRlZCBhcyBhIHN0cmluZywgdXNpbmcgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGFuZCB0aGUKICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKHNlZSA6cGVwOmAzODNgKS4gIEFuIGFkZHJlc3MgaW4KLSAgTGludXgncyBhYnN0cmFjdCBuYW1lc3BhY2UgaXMgcmV0dXJuZWQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgd2l0aAorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgd2l0aAogICBhbiBpbml0aWFsIG51bGwgYnl0ZTsgbm90ZSB0aGF0IHNvY2tldHMgaW4gdGhpcyBuYW1lc3BhY2UgY2FuCiAgIGNvbW11bmljYXRlIHdpdGggbm9ybWFsIGZpbGUgc3lzdGVtIHNvY2tldHMsIHNvIHByb2dyYW1zIGludGVuZGVkIHRvCiAgIHJ1biBvbiBMaW51eCBtYXkgbmVlZCB0byBkZWFsIHdpdGggYm90aCB0eXBlcyBvZiBhZGRyZXNzLiAgQSBzdHJpbmcgb3IKLSAgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGNhbiBiZSB1c2VkIGZvciBlaXRoZXIgdHlwZSBvZiBhZGRyZXNzIHdoZW4KKyAgYnl0ZXMtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgogICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAogICAgICAgZW5jb2RpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAtIEEgcGFpciBgYChob3N0LCBwb3J0KWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX0lORVRgIGFkZHJlc3MgZmFtaWx5LAogICB3aGVyZSAqaG9zdCogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGVpdGhlciBhIGhvc3RuYW1lIGluIEludGVybmV0IGRvbWFpbgogICBub3RhdGlvbiBsaWtlIGBgJ2RhcmluZy5jd2kubmwnYGAgb3IgYW4gSVB2NCBhZGRyZXNzIGxpa2UgYGAnMTAwLjUwLjIwMC41J2BgLApAQCAtMjk4LDYgKzMwMSwxOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZGF0YTo6IENBTl9SQVdfRkRfRlJBTUVTCisKKyAgIEVuYWJsZXMgQ0FOIEZEIHN1cHBvcnQgaW4gYSBDQU5fUkFXIHNvY2tldC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgVGhpcyBhbGxvd3MgeW91ciBhcHBsaWNhdGlvbiB0byBzZW5kIGJvdGggQ0FOIGFuZCBDQU4gRkQgZnJhbWVzOyBob3dldmVyLAorICAgeW91IG9uZSBtdXN0IGFjY2VwdCBib3RoIENBTiBhbmQgQ0FOIEZEIGZyYW1lcyB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgc29ja2V0LgorCisgICBUaGlzIGNvbnN0YW50IGlzIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24uCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMy42LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGF0YTo6IEFGX1JEUwogICAgICAgICAgIFBGX1JEUwogICAgICAgICAgIFNPTF9SRFMKQEAgLTM5MCw3ICs0MDUsNiBAQAogICAgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlci4gIEFkZHJlc3MgZmFtaWx5LCBzb2NrZXQgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlciBhcmUKICAgIGFzIGZvciB0aGUgOmZ1bmM6YC5zb2NrZXRgIGZ1bmN0aW9uIGFib3ZlLiBUaGUgZGVmYXVsdCBmYW1pbHkgaXMgOmNvbnN0OmBBRl9VTklYYAogICAgaWYgZGVmaW5lZCBvbiB0aGUgcGxhdGZvcm07IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBBRl9JTkVUYC4KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogICAgVGhlIG5ld2x5IGNyZWF0ZWQgc29ja2V0cyBhcmUgOnJlZjpgbm9uLWluaGVyaXRhYmxlIDxmZF9pbmhlcml0YW5jZT5gLgogCkBAIC00MDEsNiArNDE1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgcmV0dXJuZWQgc29ja2V0cyBhcmUgbm93IG5vbi1pbmhlcml0YWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFdpbmRvd3Mgc3VwcG9ydCBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3NbLCB0aW1lb3V0Wywgc291cmNlX2FkZHJlc3NdXSkKIApAQCAtNjQ3LDggKzY2NCw4IEBACiAKIC4uIGZ1bmN0aW9uOjogaW5ldF9udG9hKHBhY2tlZF9pcCkKIAotICAgQ29udmVydCBhIDMyLWJpdCBwYWNrZWQgSVB2NCBhZGRyZXNzIChhIGJ5dGVzIG9iamVjdCBmb3VyIGNoYXJhY3RlcnMgaW4KLSAgIGxlbmd0aCkgdG8gaXRzIHN0YW5kYXJkIGRvdHRlZC1xdWFkIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yIGV4YW1wbGUsCisgICBDb252ZXJ0IGEgMzItYml0IHBhY2tlZCBJUHY0IGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBmb3VyCisgICBieXRlcyBpbiBsZW5ndGgpIHRvIGl0cyBzdGFuZGFyZCBkb3R0ZWQtcXVhZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLAogICAgJzEyMy40NS42Ny44OScpLiAgVGhpcyBpcyB1c2VmdWwgd2hlbiBjb252ZXJzaW5nIHdpdGggYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUKICAgIHN0YW5kYXJkIEMgbGlicmFyeSBhbmQgbmVlZHMgb2JqZWN0cyBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCwgd2hpY2gKICAgIGlzIHRoZSBDIHR5cGUgZm9yIHRoZSAzMi1iaXQgcGFja2VkIGJpbmFyeSBkYXRhIHRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgYW4KQEAgLTY1OSw2ICs2NzYsOSBAQAogICAgc3VwcG9ydCBJUHY2LCBhbmQgOmZ1bmM6YGluZXRfbnRvcGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBmb3IgSVB2NC92NiBkdWFsCiAgICBzdGFjayBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGluZXRfcHRvbihhZGRyZXNzX2ZhbWlseSwgaXBfc3RyaW5nKQogCkBAIC02ODEsMjIgKzcwMSwyNiBAQAogCiAuLiBmdW5jdGlvbjo6IGluZXRfbnRvcChhZGRyZXNzX2ZhbWlseSwgcGFja2VkX2lwKQogCi0gICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgYnl0ZXMgb2JqZWN0IG9mIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMpIHRvIGl0cwotICAgc3RhbmRhcmQsIGZhbWlseS1zcGVjaWZpYyBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvcgotICAgYGAnNWFlZjoyYjo6OCdgYCkuIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sCi0gICByZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkKLSAgIG9yIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCisgICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvZiBzb21lIG51bWJlciBvZgorICAgYnl0ZXMpIHRvIGl0cyBzdGFuZGFyZCwgZmFtaWx5LXNwZWNpZmljIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yCisgICBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvciBgYCc1YWVmOjJiOjo4J2BgKS4KKyAgIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sIHJldHVybnMgYW4KKyAgIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkgb3IKKyAgIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAotICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCi0gICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgQQotICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KKyAgIDpjb25zdDpgQUZfSU5FVDZgLiBJZiB0aGUgYnl0ZXMgb2JqZWN0ICpwYWNrZWRfaXAqIGlzIG5vdCB0aGUgY29ycmVjdAorICAgbGVuZ3RoIGZvciB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgZmFtaWx5LCA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIEEgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcyksIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIHN1cHBvcnQgYWRkZWQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4KICAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CkBAIC04MjEsNiArODQ1LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIHNvY2tldCBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuYmluZChhZGRyZXNzKQogCkBAIC04NTMsNiArODgyLDE5IEBACiAgICBDb25uZWN0IHRvIGEgcmVtb3RlIHNvY2tldCBhdCAqYWRkcmVzcyouIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZQogICAgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZSBhYm92ZS4pCiAKKyAgIElmIHRoZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCB0aGUgbWV0aG9kIHdhaXRzIHVudGlsIHRoZQorICAgY29ubmVjdGlvbiBjb21wbGV0ZXMsIG9yIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIG9uIHRpbWVvdXQsIGlmIHRoZQorICAgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzCisgICBhIHRpbWVvdXQuIEZvciBub24tYmxvY2tpbmcgc29ja2V0cywgdGhlIG1ldGhvZCByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICBzaWduYWwgKG9yIHRoZSBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZSBzaWduYWwgaGFuZGxlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgbWV0aG9kIG5vdyB3YWl0cyB1bnRpbCB0aGUgY29ubmVjdGlvbiBjb21wbGV0ZXMgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gaWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYQorICAgICAgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMKKyAgICAgIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQgKHNlZSB0aGUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKIApAQCAtOTQ4LDEyICs5OTAsMTUgQEAKICAgIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgOmZ1bmM6YGZjbnRsLmZjbnRsYCBhbmQgOmZ1bmM6YGZjbnRsLmlvY3RsYAogICAgZnVuY3Rpb25zIG1heSBiZSB1c2VkOyB0aGV5IGFjY2VwdCBhIHNvY2tldCBvYmplY3QgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCiAKLS4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oYmFja2xvZykKKy4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oW2JhY2tsb2ddKQogCi0gICBMaXN0ZW4gZm9yIGNvbm5lY3Rpb25zIG1hZGUgdG8gdGhlIHNvY2tldC4gIFRoZSAqYmFja2xvZyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZQotICAgbWF4aW11bSBudW1iZXIgb2YgcXVldWVkIGNvbm5lY3Rpb25zIGFuZCBzaG91bGQgYmUgYXQgbGVhc3QgMDsgdGhlIG1heGltdW0gdmFsdWUKLSAgIGlzIHN5c3RlbS1kZXBlbmRlbnQgKHVzdWFsbHkgNSksIHRoZSBtaW5pbXVtIHZhbHVlIGlzIGZvcmNlZCB0byAwLgorICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKKyAgIGJlIGF0IGxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisgICB1bmFjY2VwdGVkIGNvbm5lY3Rpb25zIHRoYXQgdGhlIHN5c3RlbSB3aWxsIGFsbG93IGJlZm9yZSByZWZ1c2luZyBuZXcKKyAgIGNvbm5lY3Rpb25zLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgcmVhc29uYWJsZSB2YWx1ZSBpcyBjaG9zZW4uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmJhY2tsb2cqIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwuCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5tYWtlZmlsZShtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsICosIGVuY29kaW5nPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQpAQCAtOTkxLDYgKzEwMzYsMTEgQEAKICAgICAgIEZvciBiZXN0IG1hdGNoIHdpdGggaGFyZHdhcmUgYW5kIG5ldHdvcmsgcmVhbGl0aWVzLCB0aGUgdmFsdWUgb2YgICpidWZzaXplKgogICAgICAgc2hvdWxkIGJlIGEgcmVsYXRpdmVseSBzbWFsbCBwb3dlciBvZiAyLCBmb3IgZXhhbXBsZSwgNDA5Ni4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Zmcm9tKGJ1ZnNpemVbLCBmbGFnc10pCiAKQEAgLTEwMDAsNiArMTA1MCwxMSBAQAogICAgOm1hbnBhZ2U6YHJlY3YoMilgIGZvciB0aGUgbWVhbmluZyBvZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmZsYWdzKjsgaXQgZGVmYXVsdHMKICAgIHRvIHplcm8uIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlIGFib3ZlLikKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQogCkBAIC0xMDY2LDYgKzExMjEsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQogCkBAIC0xMTMyLDYgKzExOTIsMTEgQEAKICAgIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGF0dGVtcHQgZGVsaXZlcnkgb2YgdGhlIHJlbWFpbmluZyBkYXRhLiBGb3IgZnVydGhlcgogICAgaW5mb3JtYXRpb24gb24gdGhpcyB0b3BpYywgY29uc3VsdCB0aGUgOnJlZjpgc29ja2V0LWhvd3RvYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNlbmRhbGwoYnl0ZXNbLCBmbGFnc10pCiAKQEAgLTExNDIsNiArMTIwNywxNSBAQAogICAgc3VjY2Vzcy4gIE9uIGVycm9yLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmQgdGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSBob3cKICAgIG11Y2ggZGF0YSwgaWYgYW55LCB3YXMgc3VjY2Vzc2Z1bGx5IHNlbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm8gbW9yZSByZXNldCBlYWNoIHRpbWUgZGF0YSBpcyBzZW50IHN1Y2Nlc3NmdWx5LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0aGUgbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byBzZW5kIGFsbCBkYXRhLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZHRvKGJ5dGVzLCBhZGRyZXNzKQogICAgICAgICAgICAgc29ja2V0LnNlbmR0byhieXRlcywgZmxhZ3MsIGFkZHJlc3MpCkBAIC0xMTUyLDYgKzEyMjYsMTEgQEAKICAgIGJ5dGVzIHNlbnQuIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlCiAgICBhYm92ZS4pCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKQogCkBAIC0xMTg4LDYgKzEyNjcsMjYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCisKKyAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKKyAgIDptb2Q6YG9zLnNlbmRmaWxlYCBhbmQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2VyZSBzZW50LgorICAgKmZpbGUqIG11c3QgYmUgYSByZWd1bGFyIGZpbGUgb2JqZWN0IG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gSWYKKyAgIDptb2Q6YG9zLnNlbmRmaWxlYCBpcyBub3QgYXZhaWxhYmxlIChlLmcuIFdpbmRvd3MpIG9yICpmaWxlKiBpcyBub3QgYQorICAgcmVndWxhciBmaWxlIDptZXRoOmBzZW5kYCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4gKm9mZnNldCogdGVsbHMgZnJvbSB3aGVyZSB0bworICAgc3RhcnQgcmVhZGluZyB0aGUgZmlsZS4gSWYgc3BlY2lmaWVkLCAqY291bnQqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMKKyAgIHRvIHRyYW5zbWl0IGFzIG9wcG9zZWQgdG8gc2VuZGluZyB0aGUgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gRmlsZQorICAgcG9zaXRpb24gaXMgdXBkYXRlZCBvbiByZXR1cm4gb3IgYWxzbyBpbiBjYXNlIG9mIGVycm9yIGluIHdoaWNoIGNhc2UKKyAgIDptZXRoOmBmaWxlLnRlbGwoKSA8aW8uSU9CYXNlLnRlbGw+YCBjYW4gYmUgdXNlZCB0byBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2YKKyAgIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4gVGhlIHNvY2tldCBtdXN0IGJlIG9mIDpjb25zdDpgU09DS19TVFJFQU1gIHR5cGUuIE5vbi0KKyAgIGJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2V0X2luaGVyaXRhYmxlKGluaGVyaXRhYmxlKQogCkBAIC0xMjI3LDExICsxMzI2LDE1IEBACiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yIGEKLSAgIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgYSBidWZmZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0bworICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCisgICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCisgICB1cCB0byB0aGUgY2FsbGVyIHRvCiAgICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KICAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggM2U0OWFmNi4uMThiZTkzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC0xMTQsNyArMTE0LDcgQEAKIEFub3RoZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlcXVlc3RzIGluIGFuIGVudmlyb25tZW50CiB0aGF0IHN1cHBvcnRzIG5laXRoZXIgdGhyZWFkcyBub3IgOmZ1bmM6YH5vcy5mb3JrYCAob3Igd2hlcmUgdGhlc2UgYXJlIHRvbwogZXhwZW5zaXZlIG9yIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBzZXJ2aWNlKSBpcyB0byBtYWludGFpbiBhbiBleHBsaWNpdCB0YWJsZSBvZgotcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2UgOmZ1bmM6YH5zZWxlY3Quc2VsZWN0YCB0byBkZWNpZGUgd2hpY2gKK3BhcnRpYWxseSBmaW5pc2hlZCByZXF1ZXN0cyBhbmQgdG8gdXNlIDptb2Q6YHNlbGVjdG9yc2AgdG8gZGVjaWRlIHdoaWNoCiByZXF1ZXN0IHRvIHdvcmsgb24gbmV4dCAob3Igd2hldGhlciB0byBoYW5kbGUgYSBuZXcgaW5jb21pbmcgcmVxdWVzdCkuICBUaGlzIGlzCiBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBzdHJlYW0gc2VydmljZXMgd2hlcmUgZWFjaCBjbGllbnQgY2FuIHBvdGVudGlhbGx5IGJlCiBjb25uZWN0ZWQgZm9yIGEgbG9uZyB0aW1lIChpZiB0aHJlYWRzIG9yIHN1YnByb2Nlc3NlcyBjYW5ub3QgYmUgdXNlZCkuICBTZWUKQEAgLTEzNyw3ICsxMzcsNyBAQAogLi4gbWV0aG9kOjogQmFzZVNlcnZlci5maWxlbm8oKQogCiAgICBSZXR1cm4gYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBzb2NrZXQgb24gd2hpY2ggdGhlIHNlcnZlciBpcwotICAgbGlzdGVuaW5nLiAgVGhpcyBmdW5jdGlvbiBpcyBtb3N0IGNvbW1vbmx5IHBhc3NlZCB0byA6ZnVuYzpgc2VsZWN0LnNlbGVjdGAsIHRvCisgICBsaXN0ZW5pbmcuICBUaGlzIGZ1bmN0aW9uIGlzIG1vc3QgY29tbW9ubHkgcGFzc2VkIHRvIDptb2Q6YHNlbGVjdG9yc2AsIHRvCiAgICBhbGxvdyBtb25pdG9yaW5nIG11bHRpcGxlIHNlcnZlcnMgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IDYwOTdlN2EuLmZjNjlhODAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC02NDksNiArNjQ5LDkgQEAKICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGNvbHVtbiBuYW1lcy4gSW1tZWRpYXRlbHkgYWZ0ZXIgYSBxdWVyeSwKICAgICAgIGl0IGlzIHRoZSBmaXJzdCBtZW1iZXIgb2YgZWFjaCB0dXBsZSBpbiA6YXR0cjpgQ3Vyc29yLmRlc2NyaXB0aW9uYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2Ygc2xpY2luZy4KKwogTGV0J3MgYXNzdW1lIHdlIGluaXRpYWxpemUgYSB0YWJsZSBhcyBpbiB0aGUgZXhhbXBsZSBnaXZlbiBhYm92ZTo6CiAKICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIjptZW1vcnk6IikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CmluZGV4IDIzM2RlOGQuLjQwNzUxMzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdApAQCAtMzE1LDYgKzMxNSw4IEBACiAKICAgIEZvciBhbG1vc3QgYWxsIGFwcGxpY2F0aW9ucyA6ZnVuYzpgb3MudXJhbmRvbWAgaXMgcHJlZmVyYWJsZS4KIAorICAgRm9yIGFsbW9zdCBhbGwgYXBwbGljYXRpb25zIDpmdW5jOmBvcy51cmFuZG9tYCBpcyBwcmVmZXJhYmxlLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gZnVuY3Rpb246OiBSQU5EX3N0YXR1cygpCkBAIC0zMzUsNiArMzM3LDggQEAKICAgIFNlZSBodHRwOi8vZWdkLnNvdXJjZWZvcmdlLm5ldC8gb3IgaHR0cDovL3BybmdkLnNvdXJjZWZvcmdlLm5ldC8gZm9yIHNvdXJjZXMKICAgIG9mIGVudHJvcHktZ2F0aGVyaW5nIGRhZW1vbnMuCiAKKyAgIEF2YWlsYWJpbGl0eTogbm90IGF2YWlsYWJsZSB3aXRoIExpYnJlU1NMLgorCiAuLiBmdW5jdGlvbjo6IFJBTkRfYWRkKGJ5dGVzLCBlbnRyb3B5KQogCiAgICBNaXggdGhlIGdpdmVuICpieXRlcyogaW50byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoZQpAQCAtMzQyLDYgKzM0Niw5IEBACiAgICBzdHJpbmcgKHNvIHlvdSBjYW4gYWx3YXlzIHVzZSA6Y29uc3Q6YDAuMGApLiAgU2VlIDpyZmM6YDE3NTBgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBzb3VyY2VzIG9mIGVudHJvcHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiBDZXJ0aWZpY2F0ZSBoYW5kbGluZwogXl5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMzUwLDEwICszNTcsOSBAQAogICAgVmVyaWZ5IHRoYXQgKmNlcnQqIChpbiBkZWNvZGVkIGZvcm1hdCBhcyByZXR1cm5lZCBieQogICAgOm1ldGg6YFNTTFNvY2tldC5nZXRwZWVyY2VydGApIG1hdGNoZXMgdGhlIGdpdmVuICpob3N0bmFtZSouICBUaGUgcnVsZXMKICAgIGFwcGxpZWQgYXJlIHRob3NlIGZvciBjaGVja2luZyB0aGUgaWRlbnRpdHkgb2YgSFRUUFMgc2VydmVycyBhcyBvdXRsaW5lZAotICAgaW4gOnJmYzpgMjgxOGAgYW5kIDpyZmM6YDYxMjVgLCBleGNlcHQgdGhhdCBJUCBhZGRyZXNzZXMgYXJlIG5vdCBjdXJyZW50bHkKLSAgIHN1cHBvcnRlZC4gSW4gYWRkaXRpb24gdG8gSFRUUFMsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHN1aXRhYmxlIGZvcgotICAgY2hlY2tpbmcgdGhlIGlkZW50aXR5IG9mIHNlcnZlcnMgaW4gdmFyaW91cyBTU0wtYmFzZWQgcHJvdG9jb2xzIHN1Y2ggYXMKLSAgIEZUUFMsIElNQVBTLCBQT1BTIGFuZCBvdGhlcnMuCisgICBpbiA6cmZjOmAyODE4YCBhbmQgOnJmYzpgNjEyNWAuICBJbiBhZGRpdGlvbiB0byBIVFRQUywgdGhpcyBmdW5jdGlvbgorICAgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBjaGVja2luZyB0aGUgaWRlbnRpdHkgb2Ygc2VydmVycyBpbiB2YXJpb3VzCisgICBTU0wtYmFzZWQgcHJvdG9jb2xzIHN1Y2ggYXMgRlRQUywgSU1BUFMsIFBPUFMgYW5kIG90aGVycy4KIAogICAgOmV4YzpgQ2VydGlmaWNhdGVFcnJvcmAgaXMgcmFpc2VkIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MsIHRoZSBmdW5jdGlvbgogICAgcmV0dXJucyBub3RoaW5nOjoKQEAgLTM3NSwyMiArMzgxLDM4IEBACiAgICAgICBJRE4gQS1sYWJlbHMgc3VjaCBhcyBgYHd3dyoueG4tLXB0aG9uLWt2YS5vcmdgYCBhcmUgc3RpbGwgc3VwcG9ydGVkLAogICAgICAgYnV0IGBgeCoucHl0aG9uLm9yZ2BgIG5vIGxvbmdlciBtYXRjaGVzIGBgeG4tLXRkYS5weXRob24ub3JnYGAuCiAKLS4uIGZ1bmN0aW9uOjogY2VydF90aW1lX3RvX3NlY29uZHModGltZXN0cmluZykKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBNYXRjaGluZyBvZiBJUCBhZGRyZXNzZXMsIHdoZW4gcHJlc2VudCBpbiB0aGUgc3ViamVjdEFsdE5hbWUgZmllbGQKKyAgICAgIG9mIHRoZSBjZXJ0aWZpY2F0ZSwgaXMgbm93IHN1cHBvcnRlZC4KIAotICAgUmV0dXJucyBhIGZsb2F0aW5nLXBvaW50IHZhbHVlIGNvbnRhaW5pbmcgYSBub3JtYWwgc2Vjb25kcy1hZnRlci10aGUtZXBvY2gKLSAgIHRpbWUgdmFsdWUsIGdpdmVuIHRoZSB0aW1lLXN0cmluZyByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIKLSAgIGRhdGUgZnJvbSBhIGNlcnRpZmljYXRlLgorLi4gZnVuY3Rpb246OiBjZXJ0X3RpbWVfdG9fc2Vjb25kcyhjZXJ0X3RpbWUpCiAKLSAgIEhlcmUncyBhbiBleGFtcGxlOjoKKyAgIFJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCwgZ2l2ZW4gdGhlIGBgY2VydF90aW1lYGAKKyAgIHN0cmluZyByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZSBmcm9tIGEKKyAgIGNlcnRpZmljYXRlIGluIGBgIiViICVkICVIOiVNOiVTICVZICVaImBgIHN0cnB0aW1lIGZvcm1hdCAoQworICAgbG9jYWxlKS4KIAotICAgICA+Pj4gaW1wb3J0IHNzbAotICAgICA+Pj4gc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCJNYXkgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQotICAgICAxMTc4Njk0MDAwLjAKLSAgICAgPj4+IGltcG9ydCB0aW1lCi0gICAgID4+PiB0aW1lLmN0aW1lKHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygiTWF5ICA5IDAwOjAwOjAwIDIwMDcgR01UIikpCi0gICAgICdXZWQgTWF5ICA5IDAwOjAwOjAwIDIwMDcnCisgICBIZXJlJ3MgYW4gZXhhbXBsZToKIAotLi4gZnVuY3Rpb246OiBnZXRfc2VydmVyX2NlcnRpZmljYXRlKGFkZHIsIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYzLCBjYV9jZXJ0cz1Ob25lKQorICAgLi4gZG9jdGVzdDo6IG5ld2NvbnRleHQKKworICAgICAgPj4+IGltcG9ydCBzc2wKKyAgICAgID4+PiB0aW1lc3RhbXAgPSBzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoIkphbiAgNSAwOTozNDo0MyAyMDE4IEdNVCIpCisgICAgICA+Pj4gdGltZXN0YW1wCisgICAgICAxNTE1MTQ0ODgzCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAgICAgID4+PiBwcmludChkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkpCisgICAgICAyMDE4LTAxLTA1IDA5OjM0OjQzCisKKyAgICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZXMgbXVzdCB1c2UgR01UICg6cmZjOmA1MjgwYCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJbnRlcnByZXQgdGhlIGlucHV0IHRpbWUgYXMgYSB0aW1lIGluIFVUQyBhcyBzcGVjaWZpZWQgYnkgJ0dNVCcKKyAgICAgIHRpbWV6b25lIGluIHRoZSBpbnB1dCBzdHJpbmcuIExvY2FsIHRpbWV6b25lIHdhcyB1c2VkCisgICAgICBwcmV2aW91c2x5LiBSZXR1cm4gYW4gaW50ZWdlciAobm8gZnJhY3Rpb25zIG9mIGEgc2Vjb25kIGluIHRoZQorICAgICAgaW5wdXQgZm9ybWF0KQorCisuLiBmdW5jdGlvbjo6IGdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoYWRkciwgc3NsX3ZlcnNpb249UFJPVE9DT0xfU1NMdjIzLCBjYV9jZXJ0cz1Ob25lKQogCiAgICBHaXZlbiB0aGUgYWRkcmVzcyBgYGFkZHJgYCBvZiBhbiBTU0wtcHJvdGVjdGVkIHNlcnZlciwgYXMgYSAoKmhvc3RuYW1lKiwKICAgICpwb3J0LW51bWJlciopIHBhaXIsIGZldGNoZXMgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLCBhbmQgcmV0dXJucyBpdCBhcyBhCkBAIC00MDQsNiArNDI2LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgSVB2Ni1jb21wYXRpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGRlZmF1bHQgKnNzbF92ZXJzaW9uKiBpcyBjaGFuZ2VkIGZyb20gOmRhdGE6YFBST1RPQ09MX1NTTHYzYCB0bworICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eSB3aXRoIG1vZGVybiBzZXJ2ZXJzLgorCiAuLiBmdW5jdGlvbjo6IERFUl9jZXJ0X3RvX1BFTV9jZXJ0KERFUl9jZXJ0X2J5dGVzKQogCiAgICBHaXZlbiBhIGNlcnRpZmljYXRlIGFzIGEgREVSLWVuY29kZWQgYmxvYiBvZiBieXRlcywgcmV0dXJucyBhIFBFTS1lbmNvZGVkCkBAIC02NzEsNiArNjk3LDEzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBkYXRhOjogSEFTX0FMUE4KKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgKkFwcGxpY2F0aW9uLUxheWVyCisgICBQcm90b2NvbCBOZWdvdGlhdGlvbiogVExTIGV4dGVuc2lvbiBhcyBkZXNjcmliZWQgaW4gOnJmYzpgNzMwMWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBkYXRhOjogSEFTX0VDREgKIAogICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBFbGxpcHRpYyBDdXJ2ZS1iYXNlZApAQCAtNzg4LDYgKzgyMSw4IEBACiAgICAgIChidXQgcGFzc2luZyBhIG5vbi16ZXJvIGBgZmxhZ3NgYCBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCkKICAgIC0gOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmQoKWAsIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kYWxsKClgICh3aXRoCiAgICAgIHRoZSBzYW1lIGxpbWl0YXRpb24pCisgICAtIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kZmlsZSgpYCAoYnV0IDptb2Q6YG9zLnNlbmRmaWxlYCB3aWxsIGJlIHVzZWQKKyAgICAgZm9yIHBsYWluLXRleHQgc29ja2V0cyBvbmx5LCBlbHNlIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kKClgIHdpbGwgYmUgdXNlZCkKICAgIC0gOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNodXRkb3duKClgCiAKICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSBTU0wgKGFuZCBUTFMpIHByb3RvY29sIGhhcyBpdHMgb3duIGZyYW1pbmcgYXRvcApAQCAtNzk4LDYgKzgzMywxNSBAQAogICAgVXN1YWxseSwgOmNsYXNzOmBTU0xTb2NrZXRgIGFyZSBub3QgY3JlYXRlZCBkaXJlY3RseSwgYnV0IHVzaW5nIHRoZQogICAgOmZ1bmM6YHdyYXBfc29ja2V0YCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6bWV0aDpgc2VuZGZpbGVgIG1ldGhvZCB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOm1ldGg6YHNodXRkb3duYCBkb2VzIG5vdCByZXNldCB0aGUgc29ja2V0IHRpbWVvdXQgZWFjaCB0aW1lIGJ5dGVzCisgICAgICBhcmUgcmVjZWl2ZWQgb3Igc2VudC4gVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uCisgICAgICBvZiB0aGUgc2h1dGRvd24uCisKKwogU1NMIHNvY2tldHMgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQucmVhZChsZW49MCwgYnVmZmVyPU5vbmUpCkBAIC04MTIsNiArODU2LDExIEBACiAgICBBcyBhdCBhbnkgdGltZSBhIHJlLW5lZ290aWF0aW9uIGlzIHBvc3NpYmxlLCBhIGNhbGwgdG8gOm1ldGg6YHJlYWRgIGNhbiBhbHNvCiAgICBjYXVzZSB3cml0ZSBvcGVyYXRpb25zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHJlYWQgdXAgdG8gKmxlbioKKyAgICAgIGJ5dGVzLgorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQud3JpdGUoYnVmKQogCiAgICBXcml0ZSAqYnVmKiB0byB0aGUgU1NMIHNvY2tldCBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gVGhlCkBAIC04MjMsNiArODcyLDEwIEBACiAgICBBcyBhdCBhbnkgdGltZSBhIHJlLW5lZ290aWF0aW9uIGlzIHBvc3NpYmxlLCBhIGNhbGwgdG8gOm1ldGg6YHdyaXRlYCBjYW4KICAgIGFsc28gY2F1c2UgcmVhZCBvcGVyYXRpb25zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHdyaXRlICpidWYqLgorCiAuLiBub3RlOjoKIAogICAgVGhlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIGFuZCA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAgbWV0aG9kcyBhcmUgdGhlCkBAIC04NDQsNiArODk3LDEwIEBACiAgICAgICA6YXR0cjpgflNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGF0dHJpYnV0ZSBvZiB0aGUgc29ja2V0J3MKICAgICAgIDphdHRyOmB+U1NMU29ja2V0LmNvbnRleHRgIGlzIHRydWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm8gbW9yZSByZXNldCBlYWNoIHRpbWUgYnl0ZXMgYXJlIHJlY2VpdmVkIG9yIHNlbnQuCisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24gb2YgdGhlIGhhbmRzaGFrZS4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LmdldHBlZXJjZXJ0KGJpbmFyeV9mb3JtPUZhbHNlKQogCiAgICBJZiB0aGVyZSBpcyBubyBjZXJ0aWZpY2F0ZSBmb3IgdGhlIHBlZXIgb24gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbiwKQEAgLTkxNyw2ICs5NzQsMTcgQEAKICAgIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIgb2Ygc2VjcmV0CiAgICBiaXRzIGJlaW5nIHVzZWQuICBJZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLCByZXR1cm5zIGBgTm9uZWBgLgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnMoKQorCisgICBSZXR1cm4gdGhlIGxpc3Qgb2YgY2lwaGVycyBzaGFyZWQgYnkgdGhlIGNsaWVudCBkdXJpbmcgdGhlIGhhbmRzaGFrZS4gIEVhY2gKKyAgIGVudHJ5IG9mIHRoZSByZXR1cm5lZCBsaXN0IGlzIGEgdGhyZWUtdmFsdWUgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUKKyAgIGNpcGhlciwgdGhlIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIKKyAgIG9mIHNlY3JldCBiaXRzIHRoZSBjaXBoZXIgdXNlcy4gIDptZXRoOmB+U1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzYCByZXR1cm5zCisgICBgYE5vbmVgYCBpZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkIG9yIHRoZSBzb2NrZXQgaXMgYSBjbGllbnQKKyAgIHNvY2tldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC5jb21wcmVzc2lvbigpCiAKICAgIFJldHVybiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGJlaW5nIHVzZWQgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgCkBAIC05NDAsMTIgKzEwMDgsMjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkKKworICAgUmV0dXJuIHRoZSBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUyBoYW5kc2hha2UuICBJZgorICAgOm1ldGg6YFNTTENvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgaWYgdGhlIG90aGVyIHBhcnR5IGRvZXMKKyAgIG5vdCBzdXBwb3J0IEFMUE4sIGlmIHRoaXMgc29ja2V0IGRvZXMgbm90IHN1cHBvcnQgYW55IG9mIHRoZSBjbGllbnQncworICAgcHJvcG9zZWQgcHJvdG9jb2xzLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgaGFwcGVuZWQgeWV0LCBgYE5vbmVgYCBpcworICAgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKIAotICAgUmV0dXJucyB0aGUgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMvU1NMIGhhbmRzaGFrZS4gSWYKLSAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgb3IgaWYgdGhlIG90aGVyIHBhcnR5Ci0gICBkb2VzIG5vdCBzdXBwb3J0IE5QTiwgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IHlldCBoYXBwZW5lZCwgdGhpcyB3aWxsCi0gICByZXR1cm4gYGBOb25lYGAuCisgICBSZXR1cm4gdGhlIGhpZ2hlci1sZXZlbCBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUy9TU0wKKyAgIGhhbmRzaGFrZS4gSWYgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIHdhcyBub3QgY2FsbGVkLCBvcgorICAgaWYgdGhlIG90aGVyIHBhcnR5IGRvZXMgbm90IHN1cHBvcnQgTlBOLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgeWV0CisgICBoYXBwZW5lZCwgdGhpcyB3aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKQEAgLTk1Nyw2ICsxMDM1LDE2IEBACiAgICByZXR1cm5lZCBzb2NrZXQgc2hvdWxkIGFsd2F5cyBiZSB1c2VkIGZvciBmdXJ0aGVyIGNvbW11bmljYXRpb24gd2l0aCB0aGUKICAgIG90aGVyIHNpZGUgb2YgdGhlIGNvbm5lY3Rpb24sIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBzb2NrZXQuCiAKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC52ZXJzaW9uKCkKKworICAgUmV0dXJuIHRoZSBhY3R1YWwgU1NMIHByb3RvY29sIHZlcnNpb24gbmVnb3RpYXRlZCBieSB0aGUgY29ubmVjdGlvbgorICAgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgIGlzIG5vIHNlY3VyZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorICAgQXMgb2YgdGhpcyB3cml0aW5nLCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGluY2x1ZGUgYGAiU1NMdjIiYGAsCisgICBgYCJTU0x2MyJgYCwgYGAiVExTdjEiYGAsIGBgIlRMU3YxLjEiYGAgYW5kIGBgIlRMU3YxLjIiYGAuCisgICBSZWNlbnQgT3BlblNTTCB2ZXJzaW9ucyBtYXkgZGVmaW5lIG1vcmUgcmV0dXJuIHZhbHVlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC5wZW5kaW5nKCkKIAogICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFscmVhZHkgZGVjcnlwdGVkIGJ5dGVzIGF2YWlsYWJsZSBmb3IgcmVhZCwgcGVuZGluZyBvbgpAQCAtMTEzNSw2ICsxMjIzLDIwIEBACiAgICAgICB3aGVuIGNvbm5lY3RlZCwgdGhlIDptZXRoOmBTU0xTb2NrZXQuY2lwaGVyYCBtZXRob2Qgb2YgU1NMIHNvY2tldHMgd2lsbAogICAgICAgZ2l2ZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNpcGhlci4KIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMocHJvdG9jb2xzKQorCisgICBTcGVjaWZ5IHdoaWNoIHByb3RvY29scyB0aGUgc29ja2V0IHNob3VsZCBhZHZlcnRpc2UgZHVyaW5nIHRoZSBTU0wvVExTCisgICBoYW5kc2hha2UuIEl0IHNob3VsZCBiZSBhIGxpc3Qgb2YgQVNDSUkgc3RyaW5ncywgbGlrZSBgYFsnaHR0cC8xLjEnLAorICAgJ3NwZHkvMiddYGAsIG9yZGVyZWQgYnkgcHJlZmVyZW5jZS4gVGhlIHNlbGVjdGlvbiBvZiBhIHByb3RvY29sIHdpbGwgaGFwcGVuCisgICBkdXJpbmcgdGhlIGhhbmRzaGFrZSwgYW5kIHdpbGwgcGxheSBvdXQgYWNjb3JkaW5nIHRvIDpyZmM6YDczMDFgLiBBZnRlciBhCisgICBzdWNjZXNzZnVsIGhhbmRzaGFrZSwgdGhlIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbGAgbWV0aG9kIHdpbGwKKyAgIHJldHVybiB0aGUgYWdyZWVkLXVwb24gcHJvdG9jb2wuCisKKyAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgOmRhdGE6YEhBU19BTFBOYCBpcworICAgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKHByb3RvY29scykKIAogICAgU3BlY2lmeSB3aGljaCBwcm90b2NvbHMgdGhlIHNvY2tldCBzaG91bGQgYWR2ZXJ0aXNlIGR1cmluZyB0aGUgU1NML1RMUwpAQCAtMTE3NSw3ICsxMjc3LDcgQEAKIAogICAgRHVlIHRvIHRoZSBlYXJseSBuZWdvdGlhdGlvbiBwaGFzZSBvZiB0aGUgVExTIGNvbm5lY3Rpb24sIG9ubHkgbGltaXRlZAogICAgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBhcmUgdXNhYmxlIGxpa2UKLSAgIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sYCBhbmQgOmF0dHI6YFNTTFNvY2tldC5jb250ZXh0YC4KKyAgIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbGAgYW5kIDphdHRyOmBTU0xTb2NrZXQuY29udGV4dGAuCiAgICA6bWV0aDpgU1NMU29ja2V0LmdldHBlZXJjZXJ0YCwgOm1ldGg6YFNTTFNvY2tldC5nZXRwZWVyY2VydGAsCiAgICA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgYW5kIDptZXRoOmBTU0xTb2NrZXQuY29tcHJlc3NgIG1ldGhvZHMgcmVxdWlyZSB0aGF0CiAgICB0aGUgVExTIGNvbm5lY3Rpb24gaGFzIHByb2dyZXNzZWQgYmV5b25kIHRoZSBUTFMgQ2xpZW50IEhlbGxvIGFuZCB0aGVyZWZvcmUKQEAgLTEyNTEsMTAgKzEzNTMsMjAgQEAKICAgIHF1aXRlIHNpbWlsYXJseSB0byBIVFRQIHZpcnR1YWwgaG9zdHMuIFNwZWNpZnlpbmcgKnNlcnZlcl9ob3N0bmFtZSogd2lsbAogICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqc2VydmVyX3NpZGUqIGlzIHRydWUuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBbHdheXMgYWxsb3cgYSBzZXJ2ZXJfaG9zdG5hbWUgdG8gYmUgcGFzc2VkLCBldmVuIGlmIE9wZW5TU0wgZG9lcyBub3QKICAgICAgIGhhdmUgU05JLgogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisKKyAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYnkgd3JhcHBpbmcgdGhlIEJJTyBvYmplY3RzCisgICAqaW5jb21pbmcqIGFuZCAqb3V0Z29pbmcqLiBUaGUgU1NMIHJvdXRpbmVzIHdpbGwgcmVhZCBpbnB1dCBkYXRhIGZyb20gdGhlCisgICBpbmNvbWluZyBCSU8gYW5kIHdyaXRlIGRhdGEgdG8gdGhlIG91dGdvaW5nIEJJTy4KKworICAgVGhlICpzZXJ2ZXJfc2lkZSogYW5kICpzZXJ2ZXJfaG9zdG5hbWUqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCisgICBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2Vzc2lvbl9zdGF0cygpCiAKICAgIEdldCBzdGF0aXN0aWNzIGFib3V0IHRoZSBTU0wgc2Vzc2lvbnMgY3JlYXRlZCBvciBtYW5hZ2VkIGJ5IHRoaXMgY29udGV4dC4KQEAgLTE2MjcsNyArMTczOSw3IEBACiAKIEFuZCBnbyBiYWNrIHRvIGxpc3RlbmluZyBmb3IgbmV3IGNsaWVudCBjb25uZWN0aW9ucyAob2YgY291cnNlLCBhIHJlYWwgc2VydmVyCiB3b3VsZCBwcm9iYWJseSBoYW5kbGUgZWFjaCBjbGllbnQgY29ubmVjdGlvbiBpbiBhIHNlcGFyYXRlIHRocmVhZCwgb3IgcHV0Ci10aGUgc29ja2V0cyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgdXNlIGFuIGV2ZW50IGxvb3ApLgordGhlIHNvY2tldHMgaW4gOnJlZjpgbm9uLWJsb2NraW5nIG1vZGUgPHNzbC1ub25ibG9ja2luZz5gIGFuZCB1c2UgYW4gZXZlbnQgbG9vcCkuCiAKIAogLi4gX3NzbC1ub25ibG9ja2luZzoKQEAgLTE2NDksNiArMTc2MSwxMiBAQAogICBzb2NrZXQgZmlyc3QsIGFuZCBhdHRlbXB0cyB0byAqcmVhZCogZnJvbSB0aGUgU1NMIHNvY2tldCBtYXkgcmVxdWlyZQogICBhIHByaW9yICp3cml0ZSogdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgSW4gZWFybGllciBQeXRob24gdmVyc2lvbnMsIHRoZSA6bWV0aDpgIVNTTFNvY2tldC5zZW5kYCBtZXRob2QKKyAgICAgcmV0dXJuZWQgemVybyBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgU1NMV2FudFdyaXRlRXJyb3JgIG9yCisgICAgIDpleGM6YFNTTFdhbnRSZWFkRXJyb3JgLgorCiAtIENhbGxpbmcgOmZ1bmM6YH5zZWxlY3Quc2VsZWN0YCB0ZWxscyB5b3UgdGhhdCB0aGUgT1MtbGV2ZWwgc29ja2V0IGNhbiBiZQogICByZWFkIGZyb20gKG9yIHdyaXR0ZW4gdG8pLCBidXQgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGVyZSBpcyBzdWZmaWNpZW50CiAgIGRhdGEgYXQgdGhlIHVwcGVyIFNTTCBsYXllci4gIEZvciBleGFtcGxlLCBvbmx5IHBhcnQgb2YgYW4gU1NMIGZyYW1lIG1pZ2h0CkBAIC0xNjgxLDEzICsxNzk5LDE0MyBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgVGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBzdXBwb3J0cyBub24tYmxvY2tpbmcgU1NMIHNvY2tldHMgYW5kIHByb3ZpZGVzIGEKKyAgIFRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgc3VwcG9ydHMgOnJlZjpgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXRzCisgICA8c3NsLW5vbmJsb2NraW5nPmAgYW5kIHByb3ZpZGVzIGEKICAgIGhpZ2hlciBsZXZlbCBBUEkuIEl0IHBvbGxzIGZvciBldmVudHMgdXNpbmcgdGhlIDptb2Q6YHNlbGVjdG9yc2AgbW9kdWxlIGFuZAogICAgaGFuZGxlcyA6ZXhjOmBTU0xXYW50V3JpdGVFcnJvcmAsIDpleGM6YFNTTFdhbnRSZWFkRXJyb3JgIGFuZAogICAgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBleGNlcHRpb25zLiBJdCBydW5zIHRoZSBTU0wgaGFuZHNoYWtlIGFzeW5jaHJvbm91c2x5CiAgICBhcyB3ZWxsLgogCiAKK01lbW9yeSBCSU8gU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitFdmVyIHNpbmNlIHRoZSBTU0wgbW9kdWxlIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjYsIHRoZSA6Y2xhc3M6YFNTTFNvY2tldGAKK2NsYXNzIGhhcyBwcm92aWRlZCB0d28gcmVsYXRlZCBidXQgZGlzdGluY3QgYXJlYXMgb2YgZnVuY3Rpb25hbGl0eToKKworLSBTU0wgcHJvdG9jb2wgaGFuZGxpbmcKKy0gTmV0d29yayBJTworCitUaGUgbmV0d29yayBJTyBBUEkgaXMgaWRlbnRpY2FsIHRvIHRoYXQgcHJvdmlkZWQgYnkgOmNsYXNzOmBzb2NrZXQuc29ja2V0YCwKK2Zyb20gd2hpY2ggOmNsYXNzOmBTU0xTb2NrZXRgIGFsc28gaW5oZXJpdHMuIFRoaXMgYWxsb3dzIGFuIFNTTCBzb2NrZXQgdG8gYmUKK3VzZWQgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBhIHJlZ3VsYXIgc29ja2V0LCBtYWtpbmcgaXQgdmVyeSBlYXN5IHRvIGFkZAorU1NMIHN1cHBvcnQgdG8gYW4gZXhpc3RpbmcgYXBwbGljYXRpb24uCisKK0NvbWJpbmluZyBTU0wgcHJvdG9jb2wgaGFuZGxpbmcgYW5kIG5ldHdvcmsgSU8gdXN1YWxseSB3b3JrcyB3ZWxsLCBidXQgdGhlcmUKK2FyZSBzb21lIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QuIEFuIGV4YW1wbGUgaXMgYXN5bmMgSU8gZnJhbWV3b3JrcyB0aGF0IHdhbnQgdG8KK3VzZSBhIGRpZmZlcmVudCBJTyBtdWx0aXBsZXhpbmcgbW9kZWwgdGhhbiB0aGUgInNlbGVjdC9wb2xsIG9uIGEgZmlsZQorZGVzY3JpcHRvciIgKHJlYWRpbmVzcyBiYXNlZCkgbW9kZWwgdGhhdCBpcyBhc3N1bWVkIGJ5IDpjbGFzczpgc29ja2V0LnNvY2tldGAKK2FuZCBieSB0aGUgaW50ZXJuYWwgT3BlblNTTCBzb2NrZXQgSU8gcm91dGluZXMuIFRoaXMgaXMgbW9zdGx5IHJlbGV2YW50IGZvcgorcGxhdGZvcm1zIGxpa2UgV2luZG93cyB3aGVyZSB0aGlzIG1vZGVsIGlzIG5vdCBlZmZpY2llbnQuIEZvciB0aGlzIHB1cnBvc2UsIGEKK3JlZHVjZWQgc2NvcGUgdmFyaWFudCBvZiA6Y2xhc3M6YFNTTFNvY2tldGAgY2FsbGVkIDpjbGFzczpgU1NMT2JqZWN0YCBpcworcHJvdmlkZWQuCisKKy4uIGNsYXNzOjogU1NMT2JqZWN0CisKKyAgIEEgcmVkdWNlZC1zY29wZSB2YXJpYW50IG9mIDpjbGFzczpgU1NMU29ja2V0YCByZXByZXNlbnRpbmcgYW4gU1NMIHByb3RvY29sCisgICBpbnN0YW5jZSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYW55IG5ldHdvcmsgSU8gbWV0aG9kcy4gVGhpcyBjbGFzcyBpcworICAgdHlwaWNhbGx5IHVzZWQgYnkgZnJhbWV3b3JrIGF1dGhvcnMgdGhhdCB3YW50IHRvIGltcGxlbWVudCBhc3luY2hyb25vdXMgSU8KKyAgIGZvciBTU0wgdGhyb3VnaCBtZW1vcnkgYnVmZmVycy4KKworICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBvbiB0b3Agb2YgYSBsb3ctbGV2ZWwgU1NMIG9iamVjdCBhcworICAgaW1wbGVtZW50ZWQgYnkgT3BlblNTTC4gVGhpcyBvYmplY3QgY2FwdHVyZXMgdGhlIHN0YXRlIG9mIGFuIFNTTCBjb25uZWN0aW9uCisgICBidXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgbmV0d29yayBJTyBpdHNlbGYuIElPIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCB0aHJvdWdoCisgICBzZXBhcmF0ZSAiQklPIiBvYmplY3RzIHdoaWNoIGFyZSBPcGVuU1NMJ3MgSU8gYWJzdHJhY3Rpb24gbGF5ZXIuCisKKyAgIEFuIDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUKKyAgIDptZXRoOmB+U1NMQ29udGV4dC53cmFwX2Jpb2AgbWV0aG9kLiBUaGlzIG1ldGhvZCB3aWxsIGNyZWF0ZSB0aGUKKyAgIDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBhbmQgYmluZCBpdCB0byBhIHBhaXIgb2YgQklPcy4gVGhlICppbmNvbWluZyoKKyAgIEJJTyBpcyB1c2VkIHRvIHBhc3MgZGF0YSBmcm9tIFB5dGhvbiB0byB0aGUgU1NMIHByb3RvY29sIGluc3RhbmNlLCB3aGlsZSB0aGUKKyAgICpvdXRnb2luZyogQklPIGlzIHVzZWQgdG8gcGFzcyBkYXRhIHRoZSBvdGhlciB3YXkgYXJvdW5kLgorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGF2YWlsYWJsZToKKworICAgLSA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXJ2ZXJfc2lkZWAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX2hvc3RuYW1lYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5yZWFkYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuZ2V0cGVlcmNlcnRgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbGAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuY2lwaGVyYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5zaGFyZWRfY2lwaGVyc2AKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuY29tcHJlc3Npb25gCisgICAtIDptZXRoOmB+U1NMU29ja2V0LnBlbmRpbmdgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQudW53cmFwYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nYAorCisgICBXaGVuIGNvbXBhcmVkIHRvIDpjbGFzczpgU1NMU29ja2V0YCwgdGhpcyBvYmplY3QgbGFja3MgdGhlIGZvbGxvd2luZworICAgZmVhdHVyZXM6CisKKyAgIC0gQW55IGZvcm0gb2YgbmV0d29yayBJTyBpbmNsdWdpbmcgbWV0aG9kcyBzdWNoIGFzIGBgcmVjdigpYGAgYW5kCisgICAgIGBgc2VuZCgpYGAuCisKKyAgIC0gVGhlcmUgaXMgbm8gKmRvX2hhbmRzaGFrZV9vbl9jb25uZWN0KiBtYWNoaW5lcnkuIFlvdSBtdXN0IGFsd2F5cyBtYW51YWxseQorICAgICBjYWxsIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAgdG8gc3RhcnQgdGhlIGhhbmRzaGFrZS4KKworICAgLSBUaGVyZSBpcyBubyBoYW5kbGluZyBvZiAqc3VwcHJlc3NfcmFnZ2VkX2VvZnMqLiBBbGwgZW5kLW9mLWZpbGUgY29uZGl0aW9ucworICAgICB0aGF0IGFyZSBpbiB2aW9sYXRpb24gb2YgdGhlIHByb3RvY29sIGFyZSByZXBvcnRlZCB2aWEgdGhlCisgICAgIDpleGM6YFNTTEVPRkVycm9yYCBleGNlcHRpb24uCisKKyAgIC0gVGhlIG1ldGhvZCA6bWV0aDpgflNTTFNvY2tldC51bndyYXBgIGNhbGwgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nLAorICAgICB1bmxpa2UgZm9yIGFuIFNTTCBzb2NrZXQgd2hlcmUgaXQgcmV0dXJucyB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKyAgIC0gVGhlICpzZXJ2ZXJfbmFtZV9jYWxsYmFjayogY2FsbGJhY2sgcGFzc2VkIHRvCisgICAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrYCB3aWxsIGdldCBhbiA6Y2xhc3M6YFNTTE9iamVjdGAKKyAgICAgaW5zdGFuY2UgaW5zdGVhZCBvZiBhIDpjbGFzczpgU1NMU29ja2V0YCBpbnN0YW5jZSBhcyBpdHMgZmlyc3QgcGFyYW1ldGVyLgorCisgICBTb21lIG5vdGVzIHJlbGF0ZWQgdG8gdGhlIHVzZSBvZiA6Y2xhc3M6YFNTTE9iamVjdGA6CisKKyAgIC0gQWxsIElPIG9uIGFuIDpjbGFzczpgU1NMT2JqZWN0YCBpcyA6cmVmOmBub24tYmxvY2tpbmcgPHNzbC1ub25ibG9ja2luZz5gLgorICAgICBUaGlzIG1lYW5zIHRoYXQgZm9yIGV4YW1wbGUgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAgd2lsbCByYWlzZSBhbgorICAgICA6ZXhjOmBTU0xXYW50UmVhZEVycm9yYCBpZiBpdCBuZWVkcyBtb3JlIGRhdGEgdGhhbiB0aGUgaW5jb21pbmcgQklPIGhhcworICAgICBhdmFpbGFibGUuCisKKyAgIC0gVGhlcmUgaXMgbm8gbW9kdWxlLWxldmVsIGBgd3JhcF9iaW8oKWBgIGNhbGwgbGlrZSB0aGVyZSBpcyBmb3IKKyAgICAgOm1ldGg6YH5TU0xDb250ZXh0LndyYXBfc29ja2V0YC4gQW4gOmNsYXNzOmBTU0xPYmplY3RgIGlzIGFsd2F5cyBjcmVhdGVkCisgICAgIHZpYSBhbiA6Y2xhc3M6YFNTTENvbnRleHRgLgorCitBbiBTU0xPYmplY3QgY29tbXVuaWNhdGVzIHdpdGggdGhlIG91dHNpZGUgd29ybGQgdXNpbmcgbWVtb3J5IGJ1ZmZlcnMuIFRoZQorY2xhc3MgOmNsYXNzOmBNZW1vcnlCSU9gIHByb3ZpZGVzIGEgbWVtb3J5IGJ1ZmZlciB0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGlzCitwdXJwb3NlLiAgSXQgd3JhcHMgYW4gT3BlblNTTCBtZW1vcnkgQklPIChCYXNpYyBJTykgb2JqZWN0OgorCisuLiBjbGFzczo6IE1lbW9yeUJJTworCisgICBBIG1lbW9yeSBidWZmZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXNzIGRhdGEgYmV0d2VlbiBQeXRob24gYW5kIGFuIFNTTAorICAgcHJvdG9jb2wgaW5zdGFuY2UuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IE1lbW9yeUJJTy5wZW5kaW5nCisKKyAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGN1cnJlbnRseSBpbiB0aGUgbWVtb3J5IGJ1ZmZlci4KKworICAgLi4gYXR0cmlidXRlOjogTWVtb3J5QklPLmVvZgorCisgICAgICBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgQklPIGlzIGN1cnJlbnQgYXQgdGhlIGVuZC1vZi1maWxlCisgICAgICBwb3NpdGlvbi4KKworICAgLi4gbWV0aG9kOjogTWVtb3J5QklPLnJlYWQobj0tMSkKKworICAgICAgUmVhZCB1cCB0byAqbiogYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IGJ1ZmZlci4gSWYgKm4qIGlzIG5vdCBzcGVjaWZpZWQgb3IKKyAgICAgIG5lZ2F0aXZlLCBhbGwgYnl0ZXMgYXJlIHJldHVybmVkLgorCisgICAuLiBtZXRob2Q6OiBNZW1vcnlCSU8ud3JpdGUoYnVmKQorCisgICAgICBXcml0ZSB0aGUgYnl0ZXMgZnJvbSAqYnVmKiB0byB0aGUgbWVtb3J5IEJJTy4gVGhlICpidWYqIGFyZ3VtZW50IG11c3QgYmUgYW4KKyAgICAgIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgcHJvdG9jb2wuCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLCB3aGljaCBpcyBhbHdheXMgZXF1YWwgdG8KKyAgICAgIHRoZSBsZW5ndGggb2YgKmJ1ZiouCisKKyAgIC4uIG1ldGhvZDo6IE1lbW9yeUJJTy53cml0ZV9lb2YoKQorCisgICAgICBXcml0ZSBhbiBFT0YgbWFya2VyIHRvIHRoZSBtZW1vcnkgQklPLiBBZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGl0CisgICAgICBpcyBpbGxlZ2FsIHRvIGNhbGwgOm1ldGg6YH5NZW1vcnlCSU8ud3JpdGVgLiBUaGUgYXR0cmlidXRlIDphdHRyOmBlb2ZgIHdpbGwKKyAgICAgIGJlY29tZSB0cnVlIGFmdGVyIGFsbCBkYXRhIGN1cnJlbnRseSBpbiB0aGUgYnVmZmVyIGhhcyBiZWVuIHJlYWQuCisKKwogLi4gX3NzbC1zZWN1cml0eToKIAogU2VjdXJpdHkgY29uc2lkZXJhdGlvbnMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0YXQucnN0IGIvRG9jL2xpYnJhcnkvc3RhdC5yc3QKaW5kZXggMjQ3NjlmNi4uODQ1YjJlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RhdC5yc3QKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICB3YWxrdHJlZShzeXMuYXJndlsxXSwgdmlzaXRmaWxlKQogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gY292ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgorQW4gYWRkaXRpb25hbCB1dGlsaXR5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIGNvbnZlcnQgYSBmaWxlJ3MgbW9kZSBpbiBhIGh1bWFuCiByZWFkYWJsZSBzdHJpbmc6CiAKIC4uIGZ1bmN0aW9uOjogZmlsZW1vZGUobW9kZSkKQEAgLTM5OSwzICszOTksMjkgQEAKICAgIFRoZSBmaWxlIGlzIGEgc25hcHNob3QgZmlsZS4KIAogU2VlIHRoZSBcKkJTRCBvciBNYWMgT1Mgc3lzdGVtcyBtYW4gcGFnZSA6bWFucGFnZTpgY2hmbGFncygyKWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK09uIFdpbmRvd3MsIHRoZSBmb2xsb3dpbmcgZmlsZSBhdHRyaWJ1dGUgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSB3aGVuCit0ZXN0aW5nIGJpdHMgaW4gdGhlIGBgc3RfZmlsZV9hdHRyaWJ1dGVzYGAgbWVtYmVyIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5zdGF0YC4KK1NlZSB0aGUgYFdpbmRvd3MgQVBJIGRvY3VtZW50YXRpb24KKzxodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2dnMjU4MTE3LmFzcHg+YF8KK2ZvciBtb3JlIGRldGFpbCBvbiB0aGUgbWVhbmluZyBvZiB0aGVzZSBjb25zdGFudHMuCisKKy4uIGRhdGE6OiBGSUxFX0FUVFJJQlVURV9BUkNISVZFCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfQ09NUFJFU1NFRAorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RFVklDRQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0VOQ1JZUFRFRAorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0hJRERFTgorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0KKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1RfQ09OVEVOVF9JTkRFWEVECisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX09GRkxJTkUKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9SRUFET05MWQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9TUEFSU0VfRklMRQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1NZU1RFTQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1ZJUlRVQUwKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKaW5kZXggYzNkYzYzZC4uYjNjOWUyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdApAQCAtMzU0LDcgKzM1NCw3IEBACiAgICBUaGUgbnVtZXJpYyBsaXRlcmFscyBhY2NlcHRlZCBpbmNsdWRlIHRoZSBkaWdpdHMgYGAwYGAgdG8gYGA5YGAgb3IgYW55CiAgICBVbmljb2RlIGVxdWl2YWxlbnQgKGNvZGUgcG9pbnRzIHdpdGggdGhlIGBgTmRgYCBwcm9wZXJ0eSkuCiAKLSAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjMuMC91Y2QvZXh0cmFjdGVkL0Rlcml2ZWROdW1lcmljVHlwZS50eHQKKyAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvZXh0cmFjdGVkL0Rlcml2ZWROdW1lcmljVHlwZS50eHQKICAgIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgY29kZSBwb2ludHMgd2l0aCB0aGUgYGBOZGBgIHByb3BlcnR5LgogCiAKQEAgLTE5NDAsNiArMTk0MCwxNiBAQAogICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLnN0cmlwKCdjbW93ei4nKQogICAgICAgJ2V4YW1wbGUnCiAKKyAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0cmlwcGVkCisgICBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgbGVhZGluZyBlbmQgdW50aWwKKyAgIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gdGhlIHNldCBvZgorICAgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzIHBsYWNlIG9uIHRoZSB0cmFpbGluZyBlbmQuCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBjb21tZW50X3N0cmluZyA9ICcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICMzMiAuLi4uLi4uJworICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nLnN0cmlwKCcuIyEgJykKKyAgICAgICdTZWN0aW9uIDMuMi4xIElzc3VlICMzMicKKwogCiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCkBAIC0yMjkzLDYgKzIzMDMsMTkgQEAKICAgID4+PiBieXRlcy5mcm9taGV4KCcyRWYwIEYxZjIgICcpCiAgICBiJy5ceGYwXHhmMVx4ZjInCiAKK0EgcmV2ZXJzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cyB0byB0cmFuc2Zvcm0gYSBieXRlcyBvYmplY3QgaW50byBpdHMKK2hleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLgorCisuLiBtZXRob2Q6OiBieXRlcy5oZXgoKQorCisgICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0IGNvbnRhaW5pbmcgdHdvIGhleGFkZWNpbWFsIGRpZ2l0cyBmb3IgZWFjaAorICAgYnl0ZSBpbiB0aGUgaW5zdGFuY2UuCisKKyAgID4+PiBiJ1x4ZjBceGYxXHhmMicuaGV4KCkKKyAgICdmMGYxZjInCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiBTaW5jZSBieXRlcyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMgKGFraW4gdG8gYSB0dXBsZSksIGZvciBhIGJ5dGVzCiBvYmplY3QgKmIqLCBgYGJbMF1gYCB3aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzCiBvYmplY3Qgb2YgbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlIGJvdGggaW5kZXhpbmcKQEAgLTIzNDgsNiArMjM3MSwxOSBAQAogICAgPj4+IGJ5dGVhcnJheS5mcm9taGV4KCcyRWYwIEYxZjIgICcpCiAgICBieXRlYXJyYXkoYicuXHhmMFx4ZjFceGYyJykKIAorQSByZXZlcnNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZXhpc3RzIHRvIHRyYW5zZm9ybSBhIGJ5dGVhcnJheSBvYmplY3QgaW50byBpdHMKK2hleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLgorCisuLiBtZXRob2Q6OiBieXRlYXJyYXkuaGV4KCkKKworICAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdCBjb250YWluaW5nIHR3byBoZXhhZGVjaW1hbCBkaWdpdHMgZm9yIGVhY2gKKyAgIGJ5dGUgaW4gdGhlIGluc3RhbmNlLgorCisgICA+Pj4gYnl0ZWFycmF5KGInXHhmMFx4ZjFceGYyJykuaGV4KCkKKyAgICdmMGYxZjInCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiBTaW5jZSBieXRlYXJyYXkgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzIChha2luIHRvIGEgbGlzdCksIGZvciBhCiBieXRlYXJyYXkgb2JqZWN0ICpiKiwgYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUKIGEgYnl0ZWFycmF5IG9iamVjdCBvZiBsZW5ndGggMS4gIChUaGlzIGNvbnRyYXN0cyB3aXRoIHRleHQgc3RyaW5ncywgd2hlcmUKQEAgLTMwOTMsNiArMzEyOSwyMDMgQEAKICAgICAgIGFsd2F5cyBwcm9kdWNlcyBhIG5ldyBvYmplY3QsIGV2ZW4gaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUuCiAKIAorLi4gX2J5dGVzLWZvcm1hdHRpbmc6CisKK2BgcHJpbnRmYGAtc3R5bGUgQnl0ZXMgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGZvcm1hdHRpbmcsIGJ5dGVzICglKQorICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBieXRlYXJyYXkgKCUpCisgICBzaW5nbGU6IGludGVycG9sYXRpb24sIGJ5dGVzICglKQorICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBieXRlYXJyYXkgKCUpCisgICBzaW5nbGU6IGJ5dGVzOyBmb3JtYXR0aW5nCisgICBzaW5nbGU6IGJ5dGVhcnJheTsgZm9ybWF0dGluZworICAgc2luZ2xlOiBieXRlczsgaW50ZXJwb2xhdGlvbgorICAgc2luZ2xlOiBieXRlYXJyYXk7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKKyAgIHNpbmdsZTogc3ByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCisgICBzaW5nbGU6ICUgZm9ybWF0dGluZworICAgc2luZ2xlOiAlIGludGVycG9sYXRpb24KKworLi4gbm90ZTo6CisKKyAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKKyAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBJZiB0aGUgdmFsdWUgYmVpbmcgcHJpbnRlZCBtYXkgYmUgYSB0dXBsZSBvcgorICAgZGljdGlvbmFyeSwgd3JhcCBpdCBpbiBhIHR1cGxlLgorCitCeXRlcyBvYmplY3RzIChgYGJ5dGVzYGAvYGBieXRlYXJyYXlgYCkgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjoKK3RoZSBgYCVgYCBvcGVyYXRvciAobW9kdWxvKS4KK1RoaXMgaXMgYWxzbyBrbm93biBhcyB0aGUgYnl0ZXMgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KK0dpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgYnl0ZXMgb2JqZWN0KSwgYGAlYGAgY29udmVyc2lvbgorc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgorVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHVzaW5nIHRoZSA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KKworSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tdHVwbGUKK29iamVjdC4gWzVdXyAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5IHRoZSBudW1iZXIgb2YKK2l0ZW1zIHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IGJ5dGVzIG9iamVjdCwgb3IgYSBzaW5nbGUgbWFwcGluZyBvYmplY3QgKGZvcgorZXhhbXBsZSwgYSBkaWN0aW9uYXJ5KS4KKworQSBjb252ZXJzaW9uIHNwZWNpZmllciBjb250YWlucyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGFuZCBoYXMgdGhlIGZvbGxvd2luZworY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOgorCisjLiBUaGUgYGAnJSdgYCBjaGFyYWN0ZXIsIHdoaWNoIG1hcmtzIHRoZSBzdGFydCBvZiB0aGUgc3BlY2lmaWVyLgorCisjLiBNYXBwaW5nIGtleSAob3B0aW9uYWwpLCBjb25zaXN0aW5nIG9mIGEgcGFyZW50aGVzaXNlZCBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzCisgICAoZm9yIGV4YW1wbGUsIGBgKHNvbWVuYW1lKWBgKS4KKworIy4gQ29udmVyc2lvbiBmbGFncyAob3B0aW9uYWwpLCB3aGljaCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBzb21lIGNvbnZlcnNpb24KKyAgIHR5cGVzLgorCisjLiBNaW5pbXVtIGZpZWxkIHdpZHRoIChvcHRpb25hbCkuICBJZiBzcGVjaWZpZWQgYXMgYW4gYGAnKidgYCAoYXN0ZXJpc2spLCB0aGUKKyAgIGFjdHVhbCB3aWR0aCBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgdHVwbGUgaW4gKnZhbHVlcyosIGFuZCB0aGUKKyAgIG9iamVjdCB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoIGFuZCBvcHRpb25hbCBwcmVjaXNpb24uCisKKyMuIFByZWNpc2lvbiAob3B0aW9uYWwpLCBnaXZlbiBhcyBhIGBgJy4nYGAgKGRvdCkgZm9sbG93ZWQgYnkgdGhlIHByZWNpc2lvbi4gIElmCisgICBzcGVjaWZpZWQgYXMgYGAnKidgYCAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsIHByZWNpc2lvbiBpcyByZWFkIGZyb20gdGhlIG5leHQKKyAgIGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgdGhlIHZhbHVlIHRvIGNvbnZlcnQgY29tZXMgYWZ0ZXIgdGhlCisgICBwcmVjaXNpb24uCisKKyMuIExlbmd0aCBtb2RpZmllciAob3B0aW9uYWwpLgorCisjLiBDb252ZXJzaW9uIHR5cGUuCisKK1doZW4gdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIGEgZGljdGlvbmFyeSAob3Igb3RoZXIgbWFwcGluZyB0eXBlKSwgdGhlbiB0aGUKK2Zvcm1hdHMgaW4gdGhlIGJ5dGVzIG9iamVjdCAqbXVzdCogaW5jbHVkZSBhIHBhcmVudGhlc2lzZWQgbWFwcGluZyBrZXkgaW50byB0aGF0CitkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBgYCclJ2BgIGNoYXJhY3Rlci4gVGhlIG1hcHBpbmcga2V5CitzZWxlY3RzIHRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQgZnJvbSB0aGUgbWFwcGluZy4gIEZvciBleGFtcGxlOgorCisgICA+Pj4gcHJpbnQoYiclKGxhbmd1YWdlKXMgaGFzICUobnVtYmVyKTAzZCBxdW90ZSB0eXBlcy4nICUKKyAgIC4uLiAgICAgICB7YidsYW5ndWFnZSc6IGIiUHl0aG9uIiwgYiJudW1iZXIiOiAyfSkKKyAgIGInUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuJworCitJbiB0aGlzIGNhc2Ugbm8gYGAqYGAgc3BlY2lmaWVycyBtYXkgb2NjdXIgaW4gYSBmb3JtYXQgKHNpbmNlIHRoZXkgcmVxdWlyZSBhCitzZXF1ZW50aWFsIHBhcmFtZXRlciBsaXN0KS4KKworVGhlIGNvbnZlcnNpb24gZmxhZyBjaGFyYWN0ZXJzIGFyZToKKworKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEZsYWcgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKys9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworfCBgYCcjJ2BgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgZm9ybSIgKHdoZXJlIGRlZmluZWQgICB8Cit8ICAgICAgICAgfCBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCcwJ2BgIHwgVGhlIGNvbnZlcnNpb24gd2lsbCBiZSB6ZXJvIHBhZGRlZCBmb3IgbnVtZXJpYyB2YWx1ZXMuICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnLSdgYCB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzIHRoZSBgYCcwJ2BgICAgICAgICAgfAorfCAgICAgICAgIHwgY29udmVyc2lvbiBpZiBib3RoIGFyZSBnaXZlbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnICdgYCB8IChhIHNwYWNlKSBBIGJsYW5rIHNob3VsZCBiZSBsZWZ0IGJlZm9yZSBhIHBvc2l0aXZlIG51bWJlciAob3IgZW1wdHkgfAorfCAgICAgICAgIHwgc3RyaW5nKSBwcm9kdWNlZCBieSBhIHNpZ25lZCBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnKydgYCB8IEEgc2lnbiBjaGFyYWN0ZXIgKGBgJysnYGAgb3IgYGAnLSdgYCkgd2lsbCBwcmVjZWRlIHRoZSBjb252ZXJzaW9uICAgfAorfCAgICAgICAgIHwgKG92ZXJyaWRlcyBhICJzcGFjZSIgZmxhZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworQSBsZW5ndGggbW9kaWZpZXIgKGBgaGBgLCBgYGxgYCwgb3IgYGBMYGApIG1heSBiZSBwcmVzZW50LCBidXQgaXMgaWdub3JlZCBhcyBpdAoraXMgbm90IG5lY2Vzc2FyeSBmb3IgUHl0aG9uIC0tIHNvIGUuZy4gYGAlbGRgYCBpcyBpZGVudGljYWwgdG8gYGAlZGBgLgorCitUaGUgY29udmVyc2lvbiB0eXBlcyBhcmU6CisKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgQ29udmVyc2lvbiB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKKys9PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAnZCdgYCAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnaSdgYCAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbydgYCAgICB8IFNpZ25lZCBvY3RhbCB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAndSdgYCAgICB8IE9ic29sZXRlIHR5cGUgLS0gaXQgaXMgaWRlbnRpY2FsIHRvIGBgJ2QnYGAuICAgICAgICB8IFwoOCkgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAneCdgYCAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAobG93ZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnWCdgYCAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAodXBwZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZSdgYCAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAobG93ZXJjYXNlKS4gICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnRSdgYCAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAodXBwZXJjYXNlKS4gICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZidgYCAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnRidgYCAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZydgYCAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyBsb3dlcmNhc2UgZXhwb25lbnRpYWwgICB8IFwoNCkgIHwKK3wgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnRydgYCAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyB1cHBlcmNhc2UgZXhwb25lbnRpYWwgICB8IFwoNCkgIHwKK3wgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnYydgYCAgICB8IFNpbmdsZSBieXRlIChhY2NlcHRzIGludGVnZXIgb3Igc2luZ2xlICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IGJ5dGUgb2JqZWN0cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnYidgYCAgICB8IEJ5dGVzIChhbnkgb2JqZWN0IHRoYXQgZm9sbG93cyB0aGUgICAgICAgICAgICAgICAgICB8IFwoNSkgIHwKK3wgICAgICAgICAgICB8IDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gIG9yIGhhcyAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IDptZXRoOmBfX2J5dGVzX19gKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAncydgYCAgICB8IGBgJ3MnYGAgaXMgYW4gYWxpYXMgZm9yIGBgJ2InYGAgYW5kIHNob3VsZCBvbmx5ICAgICB8IFwoNikgIHwKK3wgICAgICAgICAgICB8IGJlIHVzZWQgZm9yIFB5dGhvbjIvMyBjb2RlIGJhc2VzLiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnYSdgYCAgICB8IEJ5dGVzIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyAgICAgICAgICAgICB8IFwoNSkgIHwKK3wgICAgICAgICAgICB8IGBgcmVwcihvYmopLmVuY29kZSgnYXNjaWknLCdiYWNrc2xhc2hyZXBsYWNlKWBgKS4gICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAncidgYCAgICB8IGBgJ3InYGAgaXMgYW4gYWxpYXMgZm9yIGBgJ2EnYGAgYW5kIHNob3VsZCBvbmx5ICAgICB8IFwoNykgIHwKK3wgICAgICAgICAgICB8IGJlIHVzZWQgZm9yIFB5dGhvbjIvMyBjb2RlIGJhc2VzLiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnJSdgYCAgICB8IE5vIGFyZ3VtZW50IGlzIGNvbnZlcnRlZCwgcmVzdWx0cyBpbiBhIGBgJyUnYGAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IGNoYXJhY3RlciBpbiB0aGUgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKworTm90ZXM6CisKKygxKQorICAgVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoYGAnMCdgYCkgdG8gYmUgaW5zZXJ0ZWQgYmV0d2VlbgorICAgbGVmdC1oYW5kIHBhZGRpbmcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlIGxlYWRpbmcgY2hhcmFjdGVyCisgICBvZiB0aGUgcmVzdWx0IGlzIG5vdCBhbHJlYWR5IGEgemVyby4KKworKDIpCisgICBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyBgYCcweCdgYCBvciBgYCcwWCdgYCAoZGVwZW5kaW5nIG9uIHdoZXRoZXIKKyAgIHRoZSBgYCd4J2BgIG9yIGBgJ1gnYGAgZm9ybWF0IHdhcyB1c2VkKSB0byBiZSBpbnNlcnRlZCBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nCisgICBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG51bWJlciBpZiB0aGUgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QKKyAgIGFscmVhZHkgYSB6ZXJvLgorCisoMykKKyAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWwgcG9pbnQsIGV2ZW4gaWYKKyAgIG5vIGRpZ2l0cyBmb2xsb3cgaXQuCisKKyAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhbmQKKyAgIGRlZmF1bHRzIHRvIDYuCisKKyg0KQorICAgVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbCBwb2ludCwgYW5kCisgICB0cmFpbGluZyB6ZXJvZXMgYXJlIG5vdCByZW1vdmVkIGFzIHRoZXkgd291bGQgb3RoZXJ3aXNlIGJlLgorCisgICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgYmVmb3JlIGFuZCBhZnRlciB0aGUKKyAgIGRlY2ltYWwgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuCisKKyg1KQorICAgSWYgcHJlY2lzaW9uIGlzIGBgTmBgLCB0aGUgb3V0cHV0IGlzIHRydW5jYXRlZCB0byBgYE5gYCBjaGFyYWN0ZXJzLgorCisoNikKKyAgIGBgYiclcydgYCBpcyBkZXByZWNhdGVkLCBidXQgd2lsbCBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgdGhlIDMueCBzZXJpZXMuCisKKyg3KQorICAgYGBiJyVyJ2BgIGlzIGRlcHJlY2F0ZWQsIGJ1dCB3aWxsIG5vdCBiZSByZW1vdmVkIGR1cmluZyB0aGUgMy54IHNlcmllcy4KKworKDgpCisgICBTZWUgOnBlcDpgMjM3YC4KKworLi4gbm90ZTo6CisKKyAgIFRoZSBieXRlYXJyYXkgdmVyc2lvbiBvZiB0aGlzIG1ldGhvZCBkb2VzICpub3QqIG9wZXJhdGUgaW4gcGxhY2UgLSBpdAorICAgYWx3YXlzIHByb2R1Y2VzIGEgbmV3IG9iamVjdCwgZXZlbiBpZiBubyBjaGFuZ2VzIHdlcmUgbWFkZS4KKworLi4gc2VlYWxzbzo6IDpwZXA6YDQ2MWAuCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gX3R5cGVtZW1vcnl2aWV3OgogCiBNZW1vcnkgVmlld3MKQEAgLTMxMjEsMTAgKzMzNTQsOCBAQAogICAgdGhlIHZpZXcuIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKICAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgogCi0gICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuIElmCi0gICA6Y2xhc3M6YH5tZW1vcnl2aWV3LmZvcm1hdGAgaXMgb25lIG9mIHRoZSBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMKLSAgIGZyb20gdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLCBpbmRleGluZyB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50Ci0gICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuIEZ1bGwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgorICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHN1cHBvcnRzIHNsaWNpbmcgYW5kIGluZGV4aW5nIHRvIGV4cG9zZSBpdHMgZGF0YS4KKyAgIE9uZS1kaW1lbnNpb25hbCBzbGljaW5nIHdpbGwgcmVzdWx0IGluIGEgc3Vidmlldzo6CiAKICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoYidhYmNlZmcnKQogICAgID4+PiB2WzFdCkBAIC0zMTM2LDI1ICszMzY3LDI5IEBACiAgICAgPj4+IGJ5dGVzKHZbMTo0XSkKICAgICBiJ2JjZScKIAotICAgT3RoZXIgbmF0aXZlIGZvcm1hdHM6OgorICAgSWYgOmNsYXNzOmB+bWVtb3J5dmlldy5mb3JtYXRgIGlzIG9uZSBvZiB0aGUgbmF0aXZlIGZvcm1hdCBzcGVjaWZpZXJzCisgICBmcm9tIHRoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSwgaW5kZXhpbmcgd2l0aCBhbiBpbnRlZ2VyIG9yIGEgdHVwbGUgb2YKKyAgIGludGVnZXJzIGlzIGFsc28gc3VwcG9ydGVkIGFuZCByZXR1cm5zIGEgc2luZ2xlICplbGVtZW50KiB3aXRoCisgICB0aGUgY29ycmVjdCB0eXBlLiAgT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIGNhbiBiZSBpbmRleGVkCisgICB3aXRoIGFuIGludGVnZXIgb3IgYSBvbmUtaW50ZWdlciB0dXBsZS4gIE11bHRpLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzCisgICBjYW4gYmUgaW5kZXhlZCB3aXRoIHR1cGxlcyBvZiBleGFjdGx5ICpuZGltKiBpbnRlZ2VycyB3aGVyZSAqbmRpbSogaXMKKyAgIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucy4gIFplcm8tZGltZW5zaW9uYWwgbWVtb3J5dmlld3MgY2FuIGJlIGluZGV4ZWQKKyAgIHdpdGggdGhlIGVtcHR5IHR1cGxlLgorCisgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2l0aCBhIG5vbi1ieXRlIGZvcm1hdDo6CiAKICAgICAgID4+PiBpbXBvcnQgYXJyYXkKICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2wnLCBbLTExMTExMTExLCAyMjIyMjIyMiwgLTMzMzMzMzMzLCA0NDQ0NDQ0NF0pCi0gICAgICA+Pj4gYVswXQorICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICA+Pj4gbVswXQogICAgICAgLTExMTExMTExCi0gICAgICA+Pj4gYVstMV0KKyAgICAgID4+PiBtWy0xXQogICAgICAgNDQ0NDQ0NDQKLSAgICAgID4+PiBhWzI6M10udG9saXN0KCkKLSAgICAgIFstMzMzMzMzMzNdCi0gICAgICA+Pj4gYVs6OjJdLnRvbGlzdCgpCisgICAgICA+Pj4gbVs6OjJdLnRvbGlzdCgpCiAgICAgICBbLTExMTExMTExLCAtMzMzMzMzMzNdCi0gICAgICA+Pj4gYVs6Oi0xXS50b2xpc3QoKQotICAgICAgWzQ0NDQ0NDQ0LCAtMzMzMzMzMzMsIDIyMjIyMjIyLCAtMTExMTExMTFdCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotCi0gICBJZiB0aGUgdW5kZXJseWluZyBvYmplY3QgaXMgd3JpdGFibGUsIHRoZSBtZW1vcnl2aWV3IHN1cHBvcnRzIHNsaWNlCi0gICBhc3NpZ25tZW50LiBSZXNpemluZyBpcyBub3QgYWxsb3dlZDo6CisgICBJZiB0aGUgdW5kZXJseWluZyBvYmplY3QgaXMgd3JpdGFibGUsIHRoZSBtZW1vcnl2aWV3IHN1cHBvcnRzCisgICBvbmUtZGltZW5zaW9uYWwgc2xpY2UgYXNzaWdubWVudC4gUmVzaXppbmcgaXMgbm90IGFsbG93ZWQ6OgogCiAgICAgICA+Pj4gZGF0YSA9IGJ5dGVhcnJheShiJ2FiY2VmZycpCiAgICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoZGF0YSkKQEAgLTMxODcsMTIgKzM0MjIsMTYgQEAKICAgICAgIFRydWUKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyBjYW4gbm93IGJlIHNsaWNlZC4KICAgICAgIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyB3aXRoIGZvcm1hdHMgJ0InLCAnYicgb3IgJ2MnIGFyZSBub3cgaGFzaGFibGUuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBtZW1vcnl2aWV3IGlzIG5vdyByZWdpc3RlcmVkIGF1dG9tYXRpY2FsbHkgd2l0aAogICAgICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBtZW1vcnl2aWV3cyBjYW4gbm93IGJlIGluZGV4ZWQgd2l0aCB0dXBsZSBvZiBpbnRlZ2Vycy4KKwogICAgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgc2V2ZXJhbCBtZXRob2RzOgogCiAgICAuLiBtZXRob2Q6OiBfX2VxX18oZXhwb3J0ZXIpCkBAIC0zMjU5LDYgKzM0OTgsMTcgQEAKICAgICAgIHN1cHBvcnRzIGFsbCBmb3JtYXQgc3RyaW5ncywgaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIG5vdCBpbgogICAgICAgOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4LgogCisgICAuLiBtZXRob2Q6OiBoZXgoKQorCisgICAgICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0IGNvbnRhaW5pbmcgdHdvIGhleGFkZWNpbWFsIGRpZ2l0cyBmb3IgZWFjaAorICAgICAgYnl0ZSBpbiB0aGUgYnVmZmVyLiA6OgorCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQorICAgICAgICAgPj4+IG0uaGV4KCkKKyAgICAgICAgICc2MTYyNjMnCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAuLiBtZXRob2Q6OiB0b2xpc3QoKQogCiAgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIDo6CkBAIC0zMzE0LDEwICszNTY0LDEwIEBACiAgICAgICBDYXN0IGEgbWVtb3J5dmlldyB0byBhIG5ldyBmb3JtYXQgb3Igc2hhcGUuICpzaGFwZSogZGVmYXVsdHMgdG8KICAgICAgIGBgW2J5dGVfbGVuZ3RoLy9uZXdfaXRlbXNpemVdYGAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlc3VsdCB2aWV3CiAgICAgICB3aWxsIGJlIG9uZS1kaW1lbnNpb25hbC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyBtZW1vcnl2aWV3LCBidXQKLSAgICAgIHRoZSBidWZmZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuIFN1cHBvcnRlZCBjYXN0cyBhcmUgMUQgLT4gQy1jb250aWd1b3VzCisgICAgICB0aGUgYnVmZmVyIGl0c2VsZiBpcyBub3QgY29waWVkLiBTdXBwb3J0ZWQgY2FzdHMgYXJlIDFEIC0+IEMtOnRlcm06YGNvbnRpZ3VvdXNgCiAgICAgICBhbmQgQy1jb250aWd1b3VzIC0+IDFELgogCi0gICAgICBCb3RoIGZvcm1hdHMgYXJlIHJlc3RyaWN0ZWQgdG8gc2luZ2xlIGVsZW1lbnQgbmF0aXZlIGZvcm1hdHMgaW4KKyAgICAgIFRoZSBkZXN0aW5hdGlvbiBmb3JtYXQgaXMgcmVzdHJpY3RlZCB0byBhIHNpbmdsZSBlbGVtZW50IG5hdGl2ZSBmb3JtYXQgaW4KICAgICAgIDptb2Q6YHN0cnVjdGAgc3ludGF4LiBPbmUgb2YgdGhlIGZvcm1hdHMgbXVzdCBiZSBhIGJ5dGUgZm9ybWF0CiAgICAgICAoJ0InLCAnYicgb3IgJ2MnKS4gVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbXVzdCBiZSB0aGUgc2FtZQogICAgICAgYXMgdGhlIG9yaWdpbmFsIGxlbmd0aC4KQEAgLTMzOTgsNiArMzY0OCw5IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgVGhlIHNvdXJjZSBmb3JtYXQgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgd2hlbiBjYXN0aW5nIHRvIGEgYnl0ZSB2aWV3LgorCiAgICBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsIHJlYWRvbmx5IGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBvYmoKQEAgLTM1MDIsMTkgKzM3NTUsMTkgQEAKIAogICAgLi4gYXR0cmlidXRlOjogY19jb250aWd1b3VzCiAKLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBDLWNvbnRpZ3VvdXMuCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgQy06dGVybTpgY29udGlndW91c2AuCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAgICAuLiBhdHRyaWJ1dGU6OiBmX2NvbnRpZ3VvdXMKIAotICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEZvcnRyYW4gY29udGlndW91cy4KKyAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBGb3J0cmFuIDp0ZXJtOmBjb250aWd1b3VzYC4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRpZ3VvdXMKIAotICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIGNvbnRpZ3VvdXMuCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgOnRlcm06YGNvbnRpZ3VvdXNgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKaW5kZXggMTliZGIyMS4uMmJkOGRmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CkBAIC05NSw2ICs5NSwxMCBAQAogICAgICAgYW4gYXJiaXRyYXJ5IHNldCBvZiBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAgIDptZXRoOmBmb3JtYXRgIGlzIGp1c3QgYSB3cmFwcGVyIHRoYXQgY2FsbHMgOm1ldGg6YHZmb3JtYXRgLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICAgICBQYXNzaW5nIGEgZm9ybWF0IHN0cmluZyBhcyBrZXl3b3JkIGFyZ3VtZW50ICpmb3JtYXRfc3RyaW5nKiBoYXMgYmVlbgorICAgICAgICAgZGVwcmVjYXRlZC4KKwogICAgLi4gbWV0aG9kOjogdmZvcm1hdChmb3JtYXRfc3RyaW5nLCBhcmdzLCBrd2FyZ3MpCiAKICAgICAgIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgYWN0dWFsIHdvcmsgb2YgZm9ybWF0dGluZy4gIEl0IGlzIGV4cG9zZWQgYXMgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCA5YWM4ODgyLi5hZGY5OWVjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMjUsMTA0ICsyNSwzMiBAQAogVXNpbmcgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIE1vZHVsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGlzIHRvIHVzZSB0aGUgZm9sbG93aW5nCi1jb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGFsbCB1c2UgY2FzZXMgdGhleSBjYW4gaGFuZGxlLiBGb3IgbW9yZSBhZHZhbmNlZAotdXNlIGNhc2VzLCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFBvcGVuYCBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCitUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGlzIHRvIHVzZSB0aGUgOmZ1bmM6YHJ1bmAKK2Z1bmN0aW9uIGZvciBhbGwgdXNlIGNhc2VzIGl0IGNhbiBoYW5kbGUuIEZvciBtb3JlIGFkdmFuY2VkIHVzZSBjYXNlcywgdGhlCit1bmRlcmx5aW5nIDpjbGFzczpgUG9wZW5gIGludGVyZmFjZSBjYW4gYmUgdXNlZCBkaXJlY3RseS4KKworVGhlIDpmdW5jOmBydW5gIGZ1bmN0aW9uIHdhcyBhZGRlZCBpbiBQeXRob24gMy41OyBpZiB5b3UgbmVlZCB0byByZXRhaW4KK2NvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucywgc2VlIHRoZSA6cmVmOmBjYWxsLWZ1bmN0aW9uLXRyaW9gIHNlY3Rpb24uCiAKIAotLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCisgICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCi0gICByZXR1cm4gdGhlIDphdHRyOmByZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwogICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCiAgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSBhcGFydCBmcm9tICp0aW1lb3V0KiwKKyAgICppbnB1dCogYW5kICpjaGVjayosIGFsbCB0aGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIHBhc3NlZCB0aHJvdWdoIHRvCisgICB0aGF0IGludGVyZmFjZS4KIAotICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAotICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQotICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcwotICAgaGFzIHRlcm1pbmF0ZWQuCisgICBUaGlzIGRvZXMgbm90IGNhcHR1cmUgc3Rkb3V0IG9yIHN0ZGVyciBieSBkZWZhdWx0LiBUbyBkbyBzbywgcGFzcworICAgOmRhdGE6YFBJUEVgIGZvciB0aGUgKnN0ZG91dCogYW5kL29yICpzdGRlcnIqIGFyZ3VtZW50cy4KIAotICAgRXhhbXBsZXM6OgotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jYWxsKFsibHMiLCAiLWwiXSkKLSAgICAgIDAKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2FsbCgiZXhpdCAxIiwgc2hlbGw9VHJ1ZSkKLSAgICAgIDEKLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKLSAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCi0gICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKLSAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICAqdGltZW91dCogd2FzIGFkZGVkLgotCi0KLS4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCi0KLSAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIHJldHVybgotICAgY29kZSB3YXMgemVybyB0aGVuIHJldHVybiwgb3RoZXJ3aXNlIHJhaXNlIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQotICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUKLSAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLnJldHVybmNvZGVgIGF0dHJpYnV0ZS4KLQotICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgotICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQotICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCi0KLSAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKLSAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKLSAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKLSAgIGhhcyB0ZXJtaW5hdGVkLgotCi0gICBFeGFtcGxlczo6Ci0KLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJscyIsICItbCJdKQotICAgICAgMAotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19jYWxsKCJleGl0IDEiLCBzaGVsbD1UcnVlKQotICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgLi4uCi0gICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCi0gICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAotICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCi0gICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KLQotCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBpbnB1dD1Ob25lLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQotCi0gICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCi0KLSAgIElmIHRoZSByZXR1cm4gY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCi0gICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZQotICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3IucmV0dXJuY29kZWAgYXR0cmlidXRlIGFuZCBhbnkgb3V0cHV0IGluIHRoZQotICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3Iub3V0cHV0YCBhdHRyaWJ1dGUuCi0KLSAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KLSAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKLSAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqaW5wdXQqIGFuZCAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0bwotICAgdGhhdCBpbnRlcmZhY2UuICBJbiBhZGRpdGlvbiwgKnN0ZG91dCogaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBhcmd1bWVudCwgYXMKLSAgIGl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBjb2xsZWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgc3VicHJvY2Vzcy4KLQotICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAotICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB3YWl0ZWQgZm9yLiAgVGhlCiAgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCiAgICBoYXMgdGVybWluYXRlZC4KIApAQCAtMTMyLDUzICs2MCw2NCBAQAogICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKICAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCiAKKyAgIElmICpjaGVjayogaXMgVHJ1ZSwgYW5kIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub24temVybyBleGl0IGNvZGUsIGEKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBBdHRyaWJ1dGVzIG9mIHRoYXQKKyAgIGV4Y2VwdGlvbiBob2xkIHRoZSBhcmd1bWVudHMsIHRoZSBleGl0IGNvZGUsIGFuZCBzdGRvdXQgYW5kIHN0ZGVyciBpZiB0aGV5CisgICB3ZXJlIGNhcHR1cmVkLgorCiAgICBFeGFtcGxlczo6CiAKLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImVjaG8iLCAiSGVsbG8gV29ybGQhIl0pCi0gICAgICBiJ0hlbGxvIFdvcmxkIVxuJworICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dAorICAgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnXSwgcmV0dXJuY29kZT0wKQogCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJlY2hvIiwgIkhlbGxvIFdvcmxkISJdLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgICAgICdIZWxsbyBXb3JsZCFcbicKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsic2VkIiwgIi1lIiwgInMvZm9vL2Jhci8iXSwKLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1iIndoZW4gaW4gdGhlIGNvdXJzZSBvZiBmb29tYW4gZXZlbnRzXG4iKQotICAgICAgYid3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgYmFybWFuIGV2ZW50c1xuJwotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImV4aXQgMSIsIHNoZWxsPVRydWUpCisgICAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oImV4aXQgMSIsIHNoZWxsPVRydWUsIGNoZWNrPVRydWUpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAuLi4KKyAgICAgICAgLi4uCiAgICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCiAKLSAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGRhdGEgYXMgZW5jb2RlZCBieXRlcy4gVGhlIGFjdHVhbAotICAgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dCBkYXRhIG1heSBkZXBlbmQgb24gdGhlIGNvbW1hbmQgYmVpbmcgaW52b2tlZCwgc28gdGhlCi0gICBkZWNvZGluZyB0byB0ZXh0IHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSBoYW5kbGVkIGF0IHRoZSBhcHBsaWNhdGlvbiBsZXZlbC4KKyAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIiwgIi9kZXYvbnVsbCJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnLCAnL2Rldi9udWxsJ10sIHJldHVybmNvZGU9MCwKKyAgICAgIHN0ZG91dD1iJ2Nydy1ydy1ydy0gMSByb290IHJvb3QgMSwgMyBKYW4gMjMgMTY6MjMgL2Rldi9udWxsXG4nKQogCi0gICBUaGlzIGJlaGF2aW91ciBtYXkgYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nICp1bml2ZXJzYWxfbmV3bGluZXMqIHRvCi0gICBgYFRydWVgYCBhcyBkZXNjcmliZWQgYmVsb3cgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAotICAgVG8gYWxzbyBjYXB0dXJlIHN0YW5kYXJkIGVycm9yIGluIHRoZSByZXN1bHQsIHVzZQotICAgYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYDo6CisuLiBjbGFzczo6IENvbXBsZXRlZFByb2Nlc3MKIAotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAotICAgICAgLi4uICAgICAibHMgbm9uX2V4aXN0ZW50X2ZpbGU7IGV4aXQgMCIsCi0gICAgICAuLi4gICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKKyAgIFRoZSByZXR1cm4gdmFsdWUgZnJvbSA6ZnVuYzpgcnVuYCwgcmVwcmVzZW50aW5nIGEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZC4KIAotICAgLi4gbm90ZTo6CisgICAuLiBhdHRyaWJ1dGU6OiBhcmdzCiAKLSAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKLSAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCi0gICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKLSAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisgICAgICBUaGUgYXJndW1lbnRzIHVzZWQgdG8gbGF1bmNoIHRoZSBwcm9jZXNzLiBUaGlzIG1heSBiZSBhIGxpc3Qgb3IgYSBzdHJpbmcuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgLi4gYXR0cmlidXRlOjogcmV0dXJuY29kZQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKyAgICAgIEV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBUeXBpY2FsbHksIGFuIGV4aXQgc3RhdHVzIG9mIDAgaW5kaWNhdGVzCisgICAgICB0aGF0IGl0IHJhbiBzdWNjZXNzZnVsbHkuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40Ci0gICAgICAqaW5wdXQqIHdhcyBhZGRlZC4KKyAgICAgIEEgbmVnYXRpdmUgdmFsdWUgYGAtTmBgIGluZGljYXRlcyB0aGF0IHRoZSBjaGlsZCB3YXMgdGVybWluYXRlZCBieSBzaWduYWwKKyAgICAgIGBgTmBgIChQT1NJWCBvbmx5KS4KKworICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CisKKyAgICAgIENhcHR1cmVkIHN0ZG91dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gTm9uZSBpZiBzdGRvdXQKKyAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisKKyAgICAgIElmIHlvdSByYW4gdGhlIHByb2Nlc3Mgd2l0aCBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgLCBzdGRvdXQgYW5kCisgICAgICBzdGRlcnIgd2lsbCBiZSBjb21iaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIDphdHRyOmBzdGRlcnJgIHdpbGwgYmUKKyAgICAgIE5vbmUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0ZGVycgorCisgICAgICBDYXB0dXJlZCBzdGRlcnIgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIE5vbmUgaWYgc3RkZXJyCisgICAgICB3YXMgbm90IGNhcHR1cmVkLgorCisgICAuLiBtZXRob2Q6OiBjaGVja19yZXR1cm5jb2RlKCkKKworICAgICAgSWYgOmF0dHI6YHJldHVybmNvZGVgIGlzIG5vbi16ZXJvLCByYWlzZSBhIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBkYXRhOjogREVWTlVMTAogCkBAIC0yMjUsMTEgKzE2NCwyMiBAQAogCiAgICAgLi4gYXR0cmlidXRlOjogb3V0cHV0CiAKLSAgICAgICAgT3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBieQorICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgaXQgd2FzIGNhcHR1cmVkIGJ5IDpmdW5jOmBydW5gIG9yCiAgICAgICAgIDpmdW5jOmBjaGVja19vdXRwdXRgLiAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KIAorICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAorCisgICAgICAgIEFsaWFzIGZvciBvdXRwdXQsIGZvciBzeW1tZXRyeSB3aXRoIDphdHRyOmBzdGRlcnJgLgorCisgICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCisKKyAgICAgICAgU3RkZXJyIG91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAuCisgICAgICAgIE90aGVyd2lzZSwgYGBOb25lYGAuCisKICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBhdHRyaWJ1dGVzIGFkZGVkCiAKIC4uIGV4Y2VwdGlvbjo6IENhbGxlZFByb2Nlc3NFcnJvcgogCkBAIC0yNDYsOSArMTk2LDIwIEBACiAKICAgICAuLiBhdHRyaWJ1dGU6OiBvdXRwdXQKIAotICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGJ5CisgICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAgb3IKICAgICAgICAgOmZ1bmM6YGNoZWNrX291dHB1dGAuICBPdGhlcndpc2UsIGBgTm9uZWBgLgogCisgICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CisKKyAgICAgICAgQWxpYXMgZm9yIG91dHB1dCwgZm9yIHN5bW1ldHJ5IHdpdGggOmF0dHI6YHN0ZGVycmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKKworICAgICAgICBTdGRlcnIgb3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIGl0IHdhcyBjYXB0dXJlZCBieSA6ZnVuYzpgcnVuYC4KKyAgICAgICAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBhdHRyaWJ1dGVzIGFkZGVkCiAKIAogLi4gX2ZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHM6CkBAIC02MzUsNiArNTk2LDcgQEAKICAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCiAKICAgIDptZXRoOmBjb21tdW5pY2F0ZWAgcmV0dXJucyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KKyAgIFRoZSBkYXRhIHdpbGwgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgc3RyaW5ncy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTg1MSw2ICs4MTMsMTEyIEBACiAKICAgIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGlmIDpkYXRhOmBDUkVBVEVfTkVXX0NPTlNPTEVgIGlzIHNwZWNpZmllZC4KIAorLi4gX2NhbGwtZnVuY3Rpb24tdHJpbzoKKworT2xkZXIgaGlnaC1sZXZlbCBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ByaW9yIHRvIFB5dGhvbiAzLjUsIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBjb21wcmlzZWQgdGhlIGhpZ2ggbGV2ZWwgQVBJIHRvCitzdWJwcm9jZXNzLiBZb3UgY2FuIG5vdyB1c2UgOmZ1bmM6YHJ1bmAgaW4gbWFueSBjYXNlcywgYnV0IGxvdHMgb2YgZXhpc3RpbmcgY29kZQorY2FsbHMgdGhlc2UgZnVuY3Rpb25zLgorCisuLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQorCisgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KKyAgIHJldHVybiB0aGUgOmF0dHI6YH5Qb3Blbi5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICBydW4oLi4uKS5yZXR1cm5jb2RlCisKKyAgIChleGNlcHQgdGhhdCB0aGUgKmlucHV0KiBhbmQgKmNoZWNrKiBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkKQorCisgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QKKyAgIGNvbW1vbiBvbmVzLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorCisgICAuLiBub3RlOjoKKworICAgICAgRG8gbm90IHVzZSBgYHN0ZG91dD1QSVBFYGAgb3IgYGBzdGRlcnI9UElQRWBgIHdpdGggdGhpcworICAgICAgZnVuY3Rpb24uICBUaGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2gKKyAgICAgIG91dHB1dCB0byBhIHBpcGUgdG8gZmlsbCB1cCB0aGUgT1MgcGlwZSBidWZmZXIgYXMgdGhlIHBpcGVzIGFyZQorICAgICAgbm90IGJlaW5nIHJlYWQgZnJvbS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCisKKy4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisKKyAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIHJldHVybgorICAgY29kZSB3YXMgemVybyB0aGVuIHJldHVybiwgb3RoZXJ3aXNlIHJhaXNlIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQorICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUKKyAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLnJldHVybmNvZGVgIGF0dHJpYnV0ZS4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIHJ1biguLi4sIGNoZWNrPVRydWUpCisKKyAgIChleGNlcHQgdGhhdCB0aGUgKmlucHV0KiBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCkKKworICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0CisgICBjb21tb24gb25lcy4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKKyAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCisgICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKKyAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisKKy4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisKKyAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dC4KKworICAgSWYgdGhlIHJldHVybiBjb2RlIHdhcyBub24temVybyBpdCByYWlzZXMgYSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlCisgICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUgYW5kIGFueSBvdXRwdXQgaW4gdGhlCisgICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5vdXRwdXRgIGF0dHJpYnV0ZS4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIHJ1biguLi4sIGNoZWNrPVRydWUsIHN0ZG91dD1QSVBFKS5zdGRvdXQKKworICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLgorICAgVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlIHNhbWUgYXMgdGhhdCBvZiA6ZnVuYzpgcnVuYCAtCisgICBtb3N0IGFyZ3VtZW50cyBhcmUgcGFzc2VkIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBIb3dldmVyLCBleHBsaWNpdGx5IHBhc3NpbmcgYGBpbnB1dD1Ob25lYGAgdG8gaW5oZXJpdCB0aGUgcGFyZW50J3MKKyAgIHN0YW5kYXJkIGlucHV0IGZpbGUgaGFuZGxlIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGRhdGEgYXMgZW5jb2RlZCBieXRlcy4gVGhlIGFjdHVhbAorICAgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dCBkYXRhIG1heSBkZXBlbmQgb24gdGhlIGNvbW1hbmQgYmVpbmcgaW52b2tlZCwgc28gdGhlCisgICBkZWNvZGluZyB0byB0ZXh0IHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSBoYW5kbGVkIGF0IHRoZSBhcHBsaWNhdGlvbiBsZXZlbC4KKworICAgVGhpcyBiZWhhdmlvdXIgbWF5IGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyAqdW5pdmVyc2FsX25ld2xpbmVzKiB0bworICAgYGBUcnVlYGAgYXMgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLgorCisgICBUbyBhbHNvIGNhcHR1cmUgc3RhbmRhcmQgZXJyb3IgaW4gdGhlIHJlc3VsdCwgdXNlCisgICBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgOjoKKworICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgLi4uICAgICAibHMgbm9uX2V4aXN0ZW50X2ZpbGU7IGV4aXQgMCIsCisgICAgICAuLi4gICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKKyAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgU3VwcG9ydCBmb3IgdGhlICppbnB1dCoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCiAKIC4uIF9zdWJwcm9jZXNzLXJlcGxhY2VtZW50czoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0IGIvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0CmluZGV4IDI1MDNkMzMuLmJhMmNhZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5bXRhYmxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeW10YWJsZS5yc3QKQEAgLTcxLDEwICs3MSw2IEBACiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgYmxvY2sgdXNlcyBgYGV4ZWNgYC4KIAotICAgLi4gbWV0aG9kOjogaGFzX2ltcG9ydF9zdGFyKCkKLQotICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBibG9jayB1c2VzIGEgc3RhcnJlZCBmcm9tLWltcG9ydC4KLQogICAgLi4gbWV0aG9kOjogZ2V0X2lkZW50aWZpZXJzKCkKIAogICAgICAgUmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBvZiBzeW1ib2xzIGluIHRoaXMgdGFibGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCAzMDI0MDg2Li5iYjliZGM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTE2Nyw3ICsxNjcsNyBAQAogCiAuLiBkYXRhOjogZG9udF93cml0ZV9ieXRlY29kZQogCi0gICBJZiB0aGlzIGlzIHRydWUsIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiB0aGlzIGlzIHRydWUsIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgZmlsZXMgb24gdGhlCiAgICBpbXBvcnQgb2Ygc291cmNlIG1vZHVsZXMuICBUaGlzIHZhbHVlIGlzIGluaXRpYWxseSBzZXQgdG8gYGBUcnVlYGAgb3IKICAgIGBgRmFsc2VgYCBkZXBlbmRpbmcgb24gdGhlIDpvcHRpb246YC1CYCBjb21tYW5kIGxpbmUgb3B0aW9uIGFuZCB0aGUKICAgIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHlvdSBjYW4gc2V0IGl0CkBAIC01NzYsNiArNTc2LDE4IEBACiAgICAgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfY29yb3V0aW5lX3dyYXBwZXIoKQorCisgICBSZXR1cm5zIGBgTm9uZWBgLCBvciBhIHdyYXBwZXIgc2V0IGJ5IDpmdW5jOmBzZXRfY29yb3V0aW5lX3dyYXBwZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAorICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworCiAuLiBkYXRhOjogaGFzaF9pbmZvCiAKICAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaApAQCAtNzE4LDYgKzczMCwxNCBAQAogICAgdmFsdWUgb2YgOmZ1bmM6YGludGVybmAgYXJvdW5kIHRvIGJlbmVmaXQgZnJvbSBpdC4KIAogCisuLiBmdW5jdGlvbjo6IGlzX2ZpbmFsaXppbmcoKQorCisgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgUHl0aG9uIGludGVycHJldGVyIGlzCisgICA6dGVybTpgc2h1dHRpbmcgZG93biA8aW50ZXJwcmV0ZXIgc2h1dGRvd24+YCwgOmNvbnN0OmBGYWxzZWAgb3RoZXJ3aXNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBkYXRhOjogbGFzdF90eXBlCiAgICAgICAgICAgbGFzdF92YWx1ZQogICAgICAgICAgIGxhc3RfdHJhY2ViYWNrCkBAIC0xMDUzLDYgKzEwNzMsNDYgQEAKICAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKKworICAgQWxsb3dzIGludGVyY2VwdGluZyBjcmVhdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzIChvbmx5IG9uZXMgdGhhdAorICAgYXJlIGNyZWF0ZWQgYnkgYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb247IGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGgKKyAgIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAgd2lsbCBub3QgYmUKKyAgIGludGVyY2VwdGVkKS4KKworICAgVGhlICp3cmFwcGVyKiBhcmd1bWVudCBtdXN0IGJlIGVpdGhlcjoKKworICAgKiBhIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyBvbmUgYXJndW1lbnQgKGEgY29yb3V0aW5lIG9iamVjdCk7CisgICAqIGBgTm9uZWBgLCB0byByZXNldCB0aGUgd3JhcHBlci4KKworICAgSWYgY2FsbGVkIHR3aWNlLCB0aGUgbmV3IHdyYXBwZXIgcmVwbGFjZXMgdGhlIHByZXZpb3VzIG9uZS4gIFRoZSBmdW5jdGlvbgorICAgaXMgdGhyZWFkLXNwZWNpZmljLgorCisgICBUaGUgKndyYXBwZXIqIGNhbGxhYmxlIGNhbm5vdCBkZWZpbmUgbmV3IGNvcm91dGluZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseTo6CisKKyAgICAgICAgZGVmIHdyYXBwZXIoY29ybyk6CisgICAgICAgICAgICBhc3luYyBkZWYgd3JhcChjb3JvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgY29ybworICAgICAgICAgICAgcmV0dXJuIHdyYXAoY29ybykKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIGZhaWwgd2l0aCBhIFJ1bnRpbWVFcnJvciwgYmVjYXVzZQorICAgICAgICAjIGBgd3JhcHBlcmBgIGNyZWF0ZXMgYSBgYHdyYXAoY29ybylgYCBjb3JvdXRpbmU6CisgICAgICAgIGZvbygpCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBnZXRfY29yb3V0aW5lX3dyYXBwZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAorICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKICAgICAgICAgICBzdGRlcnIKQEAgLTEyMjMsNCArMTI4MywzIEBACiAuLiBydWJyaWM6OiBDaXRhdGlvbnMKIAogLi4gW0M5OV0gSVNPL0lFQyA5ODk5OjE5OTkuICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tIEMuIiAgQSBwdWJsaWMgZHJhZnQgb2YgdGhpcyBzdGFuZGFyZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMTQvd3d3L2RvY3MvbjEyNTYucGRmXCAuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RhcmZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKaW5kZXggMDVmMjlhZC4uYWRhY2IwYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKQEAgLTYyLDYgKzYyLDIzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjp4eidgYCAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uLiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3gnYGAgb3IgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIGV4Y2x1c2l2ZWx5IHdpdGhvdXQgICAgICAgIHwKKyAgIHwgYGAneDonYGAgICAgICAgICB8IGNvbXByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd4Omd6J2BgICAgICAgIHwgQ3JlYXRlIGEgdGFyZmlsZSB3aXRoIGd6aXAgY29tcHJlc3Npb24uICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBSYWlzZSBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGV4Y2VwdGlvbiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IGlmIGl0IGlzIGFscmVhZHkgZXhpc3RzLiAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3g6YnoyJ2BgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIHdpdGggYnppcDIgY29tcHJlc3Npb24uICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IFJhaXNlIGFuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgZXhjZXB0aW9uICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgaWYgaXQgaXMgYWxyZWFkeSBleGlzdHMuICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAneDp4eidgYCAgICAgICB8IENyZWF0ZSBhIHRhcmZpbGUgd2l0aCBsem1hIGNvbXByZXNzaW9uLiAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtODIsOSArOTksOSBAQAogICAgSWYgKmZpbGVvYmoqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIDp0ZXJtOmBmaWxlIG9iamVjdGAKICAgIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSBmb3IgKm5hbWUqLiBJdCBpcyBzdXBwb3NlZCB0byBiZSBhdCBwb3NpdGlvbiAwLgogCi0gICBGb3IgbW9kZXMgYGAndzpneidgYCwgYGAncjpneidgYCwgYGAndzpiejInYGAsIGBgJ3I6YnoyJ2BgLCA6ZnVuYzpgdGFyZmlsZS5vcGVuYAotICAgYWNjZXB0cyB0aGUga2V5d29yZCBhcmd1bWVudCAqY29tcHJlc3NsZXZlbCogdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb2YKLSAgIHRoZSBmaWxlLgorICAgRm9yIG1vZGVzIGBgJ3c6Z3onYGAsIGBgJ3I6Z3onYGAsIGBgJ3c6YnoyJ2BgLCBgYCdyOmJ6MidgYCwgYGAneDpneidgYCwKKyAgIGBgJ3g6YnoyJ2BgLCA6ZnVuYzpgdGFyZmlsZS5vcGVuYCBhY2NlcHRzIHRoZSBrZXl3b3JkIGFyZ3VtZW50CisgICAqY29tcHJlc3NsZXZlbCogdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIGZpbGUuCiAKICAgIEZvciBzcGVjaWFsIHB1cnBvc2VzLCB0aGVyZSBpcyBhIHNlY29uZCBmb3JtYXQgZm9yICptb2RlKjoKICAgIGBgJ2ZpbGVtb2RlfFtjb21wcmVzc2lvbl0nYGAuICA6ZnVuYzpgdGFyZmlsZS5vcGVuYCB3aWxsIHJldHVybiBhIDpjbGFzczpgVGFyRmlsZWAKQEAgLTEyNyw2ICsxNDQsOCBAQAogICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUgd2FzIGFkZGVkLgogCiAuLiBjbGFzczo6IFRhckZpbGUKIApAQCAtMjUyLDggKzI3MSw4IEBACiAgICBJbiB0aGlzIGNhc2UsIHRoZSBmaWxlIG9iamVjdCdzIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgaXMgdXNlZCBpZiBpdCBleGlzdHMuCiAKICAgICptb2RlKiBpcyBlaXRoZXIgYGAncidgYCB0byByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgYGAnYSdgYCB0byBhcHBlbmQKLSAgIGRhdGEgdG8gYW4gZXhpc3RpbmcgZmlsZSBvciBgYCd3J2BgIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nCi0gICBvbmUuCisgICBkYXRhIHRvIGFuIGV4aXN0aW5nIGZpbGUsIGBgJ3cnYGAgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcKKyAgIG9uZSBvciBgYCd4J2BgIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG9ubHkgaWYgaXQncyBub3QgZXhpc3RzLgogCiAgICBJZiAqZmlsZW9iaiogaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBkYXRhLiBJZiBpdCBjYW4gYmUKICAgIGRldGVybWluZWQsICptb2RlKiBpcyBvdmVycmlkZGVuIGJ5ICpmaWxlb2JqKidzIG1vZGUuICpmaWxlb2JqKiB3aWxsIGJlIHVzZWQKQEAgLTI5MiwxMiArMzExLDE0IEBACiAgICB0byBiZSBoYW5kbGVkLiBUaGUgZGVmYXVsdCBzZXR0aW5ncyB3aWxsIHdvcmsgZm9yIG1vc3QgdXNlcnMuCiAgICBTZWUgc2VjdGlvbiA6cmVmOmB0YXItdW5pY29kZWAgZm9yIGluLWRlcHRoIGluZm9ybWF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlICplcnJvcnMqIGFyZ3VtZW50LgotCiAgICBUaGUgKnBheF9oZWFkZXJzKiBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBkaWN0aW9uYXJ5IG9mIHN0cmluZ3Mgd2hpY2gKICAgIHdpbGwgYmUgYWRkZWQgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBpZiAqZm9ybWF0KiBpcyA6Y29uc3Q6YFBBWF9GT1JNQVRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgVXNlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlICplcnJvcnMqIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKIC4uIGNsYXNzbWV0aG9kOjogVGFyRmlsZS5vcGVuKC4uLikKIApAQCAtMzI4LDExICszNDksMTUgQEAKICAgIHJldHVybmVkIGJ5IDptZXRoOmBnZXRtZW1iZXJzYC4KIAogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmxpc3QodmVyYm9zZT1UcnVlKQorLi4gbWV0aG9kOjogVGFyRmlsZS5saXN0KHZlcmJvc2U9VHJ1ZSwgKiwgbWVtYmVycz1Ob25lKQogCiAgICBQcmludCBhIHRhYmxlIG9mIGNvbnRlbnRzIHRvIGBgc3lzLnN0ZG91dGBgLiBJZiAqdmVyYm9zZSogaXMgOmNvbnN0OmBGYWxzZWAsCiAgICBvbmx5IHRoZSBuYW1lcyBvZiB0aGUgbWVtYmVycyBhcmUgcHJpbnRlZC4gSWYgaXQgaXMgOmNvbnN0OmBUcnVlYCwgb3V0cHV0Ci0gICBzaW1pbGFyIHRvIHRoYXQgb2YgOnByb2dyYW06YGxzIC1sYCBpcyBwcm9kdWNlZC4KKyAgIHNpbWlsYXIgdG8gdGhhdCBvZiA6cHJvZ3JhbTpgbHMgLWxgIGlzIHByb2R1Y2VkLiBJZiBvcHRpb25hbCAqbWVtYmVycyogaXMKKyAgIGdpdmVuLCBpdCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5IDptZXRoOmBnZXRtZW1iZXJzYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqbWVtYmVycyogcGFyYW1ldGVyLgogCiAKIC4uIG1ldGhvZDo6IFRhckZpbGUubmV4dCgpCkBAIC0zNDIsNyArMzY3LDcgQEAKICAgIGF2YWlsYWJsZS4KIAogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RhbGwocGF0aD0iLiIsIG1lbWJlcnM9Tm9uZSkKKy4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGFsbChwYXRoPSIuIiwgbWVtYmVycz1Ob25lLCAqLCBudW1lcmljX293bmVyPUZhbHNlKQogCiAgICBFeHRyYWN0IGFsbCBtZW1iZXJzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IKICAgIGRpcmVjdG9yeSAqcGF0aCouIElmIG9wdGlvbmFsICptZW1iZXJzKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUKQEAgLTM1Miw2ICszNzcsMTAgQEAKICAgIHJlc2V0IGVhY2ggdGltZSBhIGZpbGUgaXMgY3JlYXRlZCBpbiBpdC4gQW5kLCBpZiBhIGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGRvCiAgICBub3QgYWxsb3cgd3JpdGluZywgZXh0cmFjdGluZyBmaWxlcyB0byBpdCB3aWxsIGZhaWwuCiAKKyAgIElmICpudW1lcmljX293bmVyKiBpcyA6Y29uc3Q6YFRydWVgLCB0aGUgdWlkIGFuZCBnaWQgbnVtYmVycyBmcm9tIHRoZSB0YXJmaWxlCisgICBhcmUgdXNlZCB0byBzZXQgdGhlIG93bmVyL2dyb3VwIGZvciB0aGUgZXh0cmFjdGVkIGZpbGVzLiBPdGhlcndpc2UsIHRoZSBuYW1lZAorICAgdmFsdWVzIGZyb20gdGhlIHRhcmZpbGUgYXJlIHVzZWQuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBOZXZlciBleHRyYWN0IGFyY2hpdmVzIGZyb20gdW50cnVzdGVkIHNvdXJjZXMgd2l0aG91dCBwcmlvciBpbnNwZWN0aW9uLgpAQCAtMzU5LDggKzM4OCwxMSBAQAogICAgICAgdGhhdCBoYXZlIGFic29sdXRlIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGBgIi8iYGAgb3IgZmlsZW5hbWVzIHdpdGggdHdvCiAgICAgICBkb3RzIGBgIi4uImBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICpudW1lcmljX29ubHkqIHBhcmFtZXRlci4KIAotLi4gbWV0aG9kOjogVGFyRmlsZS5leHRyYWN0KG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUpCisKKy4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdChtZW1iZXIsIHBhdGg9IiIsIHNldF9hdHRycz1UcnVlLCAqLCBudW1lcmljX293bmVyPUZhbHNlKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIHVzaW5nIGl0cwogICAgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseSBhcyBwb3NzaWJsZS4gKm1lbWJlcioKQEAgLTM2OCw2ICs0MDAsMTAgQEAKICAgIGRpcmVjdG9yeSB1c2luZyAqcGF0aCouIEZpbGUgYXR0cmlidXRlcyAob3duZXIsIG10aW1lLCBtb2RlKSBhcmUgc2V0IHVubGVzcwogICAgKnNldF9hdHRycyogaXMgZmFsc2UuCiAKKyAgIElmICpudW1lcmljX293bmVyKiBpcyA6Y29uc3Q6YFRydWVgLCB0aGUgdWlkIGFuZCBnaWQgbnVtYmVycyBmcm9tIHRoZSB0YXJmaWxlCisgICBhcmUgdXNlZCB0byBzZXQgdGhlIG93bmVyL2dyb3VwIGZvciB0aGUgZXh0cmFjdGVkIGZpbGVzLiBPdGhlcndpc2UsIHRoZSBuYW1lZAorICAgdmFsdWVzIGZyb20gdGhlIHRhcmZpbGUgYXJlIHVzZWQuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgOm1ldGg6YGV4dHJhY3RgIG1ldGhvZCBkb2VzIG5vdCB0YWtlIGNhcmUgb2Ygc2V2ZXJhbCBleHRyYWN0aW9uIGlzc3Vlcy4KQEAgLTM4MCw2ICs0MTYsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqc2V0X2F0dHJzKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgKm51bWVyaWNfb25seSogcGFyYW1ldGVyLgorCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RmaWxlKG1lbWJlcikKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuICptZW1iZXIqIG1heSBiZSBhIGZpbGVuYW1lCkBAIC04MDIsNCArODQxLDMgQEAKIGJlY2F1c2UgYWxsIHRoZSBtZXRhZGF0YSBpcyBzdG9yZWQgdXNpbmcgKlVURi04Ki4gKmVuY29kaW5nKiBpcyBvbmx5IHVzZWQgaW4KIHRoZSByYXJlIGNhc2VzIHdoZW4gYmluYXJ5IHBheCBoZWFkZXJzIGFyZSBkZWNvZGVkIG9yIHdoZW4gc3RyaW5ncyB3aXRoCiBzdXJyb2dhdGUgY2hhcmFjdGVycyBhcmUgc3RvcmVkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggNDRkMDI1ZC4uODNmOTk0MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMTYsMTYgKzE2LDE4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGdlbmVyYXRlcyB0ZW1wb3JhcnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLiAgSXQgd29ya3Mgb24gYWxsCi1zdXBwb3J0ZWQgcGxhdGZvcm1zLiAgSXQgcHJvdmlkZXMgdGhyZWUgbmV3IGZ1bmN0aW9ucywKLTpmdW5jOmBOYW1lZFRlbXBvcmFyeUZpbGVgLCA6ZnVuYzpgbWtzdGVtcGAsIGFuZCA6ZnVuYzpgbWtkdGVtcGAsIHdoaWNoIHNob3VsZAotZWxpbWluYXRlIGFsbCByZW1haW5pbmcgbmVlZCB0byB1c2UgdGhlIGluc2VjdXJlIDpmdW5jOmBta3RlbXBgIGZ1bmN0aW9uLgotVGVtcG9yYXJ5IGZpbGUgbmFtZXMgY3JlYXRlZCBieSB0aGlzIG1vZHVsZSBubyBsb25nZXIgY29udGFpbiB0aGUgcHJvY2VzcyBJRDsKLWluc3RlYWQgYSBzdHJpbmcgb2Ygc2l4IHJhbmRvbSBjaGFyYWN0ZXJzIGlzIHVzZWQuCitUaGlzIG1vZHVsZSBjcmVhdGVzIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICBJdCB3b3JrcyBvbiBhbGwKK3N1cHBvcnRlZCBwbGF0Zm9ybXMuIDpjbGFzczpgVGVtcG9yYXJ5RmlsZWAsIDpjbGFzczpgTmFtZWRUZW1wb3JhcnlGaWxlYCwKKzpjbGFzczpgVGVtcG9yYXJ5RGlyZWN0b3J5YCwgYW5kIDpjbGFzczpgU3Bvb2xlZFRlbXBvcmFyeUZpbGVgIGFyZSBoaWdoLWxldmVsCitpbnRlcmZhY2VzIHdoaWNoIHByb3ZpZGUgYXV0b21hdGljIGNsZWFudXAgYW5kIGNhbiBiZSB1c2VkIGFzCitjb250ZXh0IG1hbmFnZXJzLiA6ZnVuYzpgbWtzdGVtcGAgYW5kCis6ZnVuYzpgbWtkdGVtcGAgYXJlIGxvd2VyLWxldmVsIGZ1bmN0aW9ucyB3aGljaCByZXF1aXJlIG1hbnVhbCBjbGVhbnVwLgogCi1BbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCi1hbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCitBbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIGFuZCBjb25zdHJ1Y3RvcnMgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aGljaAorYWxsb3cgZGlyZWN0IGNvbnRyb2wgb3ZlciB0aGUgbG9jYXRpb24gYW5kIG5hbWUgb2YgdGVtcG9yYXJ5IGZpbGVzIGFuZAorZGlyZWN0b3JpZXMuIEZpbGVzIG5hbWVzIHVzZWQgYnkgdGhpcyBtb2R1bGUgaW5jbHVkZSBhIHN0cmluZyBvZgorcmFuZG9tIGNoYXJhY3RlcnMgd2hpY2ggYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHNlY3VyZWx5IGNyZWF0ZWQgaW4KK3NoYXJlZCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCkBAIC0zNCwyNSArMzYsMzcgQEAKIC4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLCBzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCiAKICAgIFJldHVybiBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgYXJlYS4KLSAgIFRoZSBmaWxlIGlzIGNyZWF0ZWQgdXNpbmcgOmZ1bmM6YG1rc3RlbXBgLiBJdCB3aWxsIGJlIGRlc3Ryb3llZCBhcyBzb29uCisgICBUaGUgZmlsZSBpcyBjcmVhdGVkIHNlY3VyZWx5LCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyA6ZnVuYzpgbWtzdGVtcGAuIEl0IHdpbGwgYmUgZGVzdHJveWVkIGFzIHNvb24KICAgIGFzIGl0IGlzIGNsb3NlZCAoaW5jbHVkaW5nIGFuIGltcGxpY2l0IGNsb3NlIHdoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlCi0gICBjb2xsZWN0ZWQpLiAgVW5kZXIgVW5peCwgdGhlIGRpcmVjdG9yeSBlbnRyeSBmb3IgdGhlIGZpbGUgaXMgcmVtb3ZlZAorICAgY29sbGVjdGVkKS4gIFVuZGVyIFVuaXgsIHRoZSBkaXJlY3RvcnkgZW50cnkgZm9yIHRoZSBmaWxlIGlzIGVpdGhlciBub3QgY3JlYXRlZCBhdCBhbGwgb3IgaXMgcmVtb3ZlZAogICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpbGUgaXMgY3JlYXRlZC4gIE90aGVyIHBsYXRmb3JtcyBkbyBub3Qgc3VwcG9ydAogICAgdGhpczsgeW91ciBjb2RlIHNob3VsZCBub3QgcmVseSBvbiBhIHRlbXBvcmFyeSBmaWxlIGNyZWF0ZWQgdXNpbmcgdGhpcwogICAgZnVuY3Rpb24gaGF2aW5nIG9yIG5vdCBoYXZpbmcgYSB2aXNpYmxlIG5hbWUgaW4gdGhlIGZpbGUgc3lzdGVtLgogCisgICBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoc2VlCisgICA6cmVmOmB0ZW1wZmlsZS1leGFtcGxlc2ApLiAgT24gY29tcGxldGlvbiBvZiB0aGUgY29udGV4dCBvcgorICAgZGVzdHJ1Y3Rpb24gb2YgdGhlIGZpbGUgb2JqZWN0IHRoZSB0ZW1wb3JhcnkgZmlsZSB3aWxsIGJlIHJlbW92ZWQKKyAgIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIFRoZSAqbW9kZSogcGFyYW1ldGVyIGRlZmF1bHRzIHRvIGBgJ3crYidgYCBzbyB0aGF0IHRoZSBmaWxlIGNyZWF0ZWQgY2FuCiAgICBiZSByZWFkIGFuZCB3cml0dGVuIHdpdGhvdXQgYmVpbmcgY2xvc2VkLiAgQmluYXJ5IG1vZGUgaXMgdXNlZCBzbyB0aGF0IGl0CiAgICBiZWhhdmVzIGNvbnNpc3RlbnRseSBvbiBhbGwgcGxhdGZvcm1zIHdpdGhvdXQgcmVnYXJkIGZvciB0aGUgZGF0YSB0aGF0IGlzCiAgICBzdG9yZWQuICAqYnVmZmVyaW5nKiwgKmVuY29kaW5nKiBhbmQgKm5ld2xpbmUqIGFyZSBpbnRlcnByZXRlZCBhcyBmb3IKICAgIDpmdW5jOmBvcGVuYC4KIAotICAgVGhlICpkaXIqLCAqcHJlZml4KiBhbmQgKnN1ZmZpeCogcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIDpmdW5jOmBta3N0ZW1wYC4KKyAgIFRoZSAqZGlyKiwgKnByZWZpeCogYW5kICpzdWZmaXgqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nCisgICBhcyB3aXRoIDpmdW5jOmBta3N0ZW1wYC4KIAogICAgVGhlIHJldHVybmVkIG9iamVjdCBpcyBhIHRydWUgZmlsZSBvYmplY3Qgb24gUE9TSVggcGxhdGZvcm1zLiAgT24gb3RoZXIKICAgIHBsYXRmb3JtcywgaXQgaXMgYSBmaWxlLWxpa2Ugb2JqZWN0IHdob3NlIDphdHRyOmAhZmlsZWAgYXR0cmlidXRlIGlzIHRoZQotICAgdW5kZXJseWluZyB0cnVlIGZpbGUgb2JqZWN0LiBUaGlzIGZpbGUtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgaW4gYQotICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCwganVzdCBsaWtlIGEgbm9ybWFsIGZpbGUuCisgICB1bmRlcmx5aW5nIHRydWUgZmlsZSBvYmplY3QuCisKKyAgIFRoZSA6cHk6ZGF0YTpgb3MuT19UTVBGSUxFYCBmbGFnIGlzIHVzZWQgaWYgaXQgaXMgYXZhaWxhYmxlIGFuZCB3b3JrcworICAgKExpbnV4LXNwZWNpZmljLCByZXF1aXJlcyBMaW51eCBrZXJuZWwgMy4xMSBvciBsYXRlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgIFRoZSA6cHk6ZGF0YTpgb3MuT19UTVBGSUxFYCBmbGFnIGlzIG5vdyB1c2VkIGlmIGF2YWlsYWJsZS4KIAogCiAuLiBmdW5jdGlvbjo6IE5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLCBzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUsIGRlbGV0ZT1UcnVlKQpAQCAtOTQsMTAgKzEwOCw5IEBACiAKIC4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RGlyZWN0b3J5KHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKIAotICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1c2luZyA6ZnVuYzpgbWtkdGVtcGAKLSAgICh0aGUgc3VwcGxpZWQgYXJndW1lbnRzIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24pLgorICAgVGhpcyBmdW5jdGlvbiBzZWN1cmVseSBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyA6ZnVuYzpgbWtkdGVtcGAuCiAgICBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoc2VlCi0gICA6cmVmOmBjb250ZXh0LW1hbmFnZXJzYCkuICBPbiBjb21wbGV0aW9uIG9mIHRoZSBjb250ZXh0IG9yIGRlc3RydWN0aW9uCisgICA6cmVmOmB0ZW1wZmlsZS1leGFtcGxlc2ApLiAgT24gY29tcGxldGlvbiBvZiB0aGUgY29udGV4dCBvciBkZXN0cnVjdGlvbgogICAgb2YgdGhlIHRlbXBvcmFyeSBkaXJlY3Rvcnkgb2JqZWN0IHRoZSBuZXdseSBjcmVhdGVkIHRlbXBvcmFyeSBkaXJlY3RvcnkKICAgIGFuZCBhbGwgaXRzIGNvbnRlbnRzIGFyZSByZW1vdmVkIGZyb20gdGhlIGZpbGVzeXN0ZW0uCiAKQEAgLTExMiw3ICsxMjUsNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gZnVuY3Rpb246OiBta3N0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgdGV4dD1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbWtzdGVtcChzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lLCB0ZXh0PUZhbHNlKQogCiAgICBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIG1vc3Qgc2VjdXJlIG1hbm5lciBwb3NzaWJsZS4gIFRoZXJlIGFyZQogICAgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBmaWxlJ3MgY3JlYXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHBsYXRmb3JtCkBAIC0xNDEsNiArMTU0LDE2IEBACiAgICBmaWxlbmFtZSB3aWxsIGhhdmUgYW55IG5pY2UgcHJvcGVydGllcywgc3VjaCBhcyBub3QgcmVxdWlyaW5nIHF1b3RpbmcKICAgIHdoZW4gcGFzc2VkIHRvIGV4dGVybmFsIGNvbW1hbmRzIHZpYSBgYG9zLnBvcGVuKClgYC4KIAorICAgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogbXVzdCBhbGwgY29udGFpbiB0aGUgc2FtZSB0eXBlLCBpZiBzcGVjaWZpZWQuCisgICBJZiB0aGV5IGFyZSBieXRlcywgdGhlIHJldHVybmVkIG5hbWUgd2lsbCBiZSBieXRlcyBpbnN0ZWFkIG9mIHN0ci4KKyAgIElmIHlvdSB3YW50IHRvIGZvcmNlIGEgYnl0ZXMgcmV0dXJuIHZhbHVlIHdpdGggb3RoZXJ3aXNlIGRlZmF1bHQgYmVoYXZpb3IsCisgICBwYXNzIGBgc3VmZml4PWInJ2BgLgorCisgICBBICpwcmVmaXgqIHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICA6ZnVuYzpgZ2V0dGVtcHByZWZpeGAgb3IgOmZ1bmM6YGdldHRlbXBwcmVmaXhiYCBhcyBhcHByb3ByaWF0ZS4KKworICAgQSAqc3VmZml4KiB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB1c2UgYW4gYXBwcm9wcmlhdGUgZW1wdHkgdmFsdWUuCisKICAgIElmICp0ZXh0KiBpcyBzcGVjaWZpZWQsIGl0IGluZGljYXRlcyB3aGV0aGVyIHRvIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5CiAgICBtb2RlICh0aGUgZGVmYXVsdCkgb3IgdGV4dCBtb2RlLiAgT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgbWFrZXMgbm8KICAgIGRpZmZlcmVuY2UuCkBAIC0xNDksOCArMTcyLDE0IEBACiAgICBmaWxlIChhcyB3b3VsZCBiZSByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmApIGFuZCB0aGUgYWJzb2x1dGUgcGF0aG5hbWUKICAgIG9mIHRoYXQgZmlsZSwgaW4gdGhhdCBvcmRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpzdWZmaXgqLCAqcHJlZml4KiwgYW5kICpkaXIqIG1heSBub3cgYmUgc3VwcGxpZWQgaW4gYnl0ZXMgaW4gb3JkZXIgdG8KKyAgICAgIG9idGFpbiBhIGJ5dGVzIHJldHVybiB2YWx1ZS4gIFByaW9yIHRvIHRoaXMsIG9ubHkgc3RyIHdhcyBhbGxvd2VkLgorICAgICAgKnN1ZmZpeCogYW5kICpwcmVmaXgqIG5vdyBhY2NlcHQgYW5kIGRlZmF1bHQgdG8gYGBOb25lYGAgdG8gY2F1c2UKKyAgICAgIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZC4KIAotLi4gZnVuY3Rpb246OiBta2R0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKKworLi4gZnVuY3Rpb246OiBta2R0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpCiAKICAgIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIHRoZSBtb3N0IHNlY3VyZSBtYW5uZXIgcG9zc2libGUuIFRoZXJlCiAgICBhcmUgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBkaXJlY3RvcnkncyBjcmVhdGlvbi4gIFRoZSBkaXJlY3RvcnkgaXMKQEAgLTE2NCw1MCArMTkzLDIxIEBACiAKICAgIDpmdW5jOmBta2R0ZW1wYCByZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRobmFtZSBvZiB0aGUgbmV3IGRpcmVjdG9yeS4KIAotCi0uLiBmdW5jdGlvbjo6IG1rdGVtcChzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAyLjMKLSAgICAgIFVzZSA6ZnVuYzpgbWtzdGVtcGAgaW5zdGVhZC4KLQotICAgUmV0dXJuIGFuIGFic29sdXRlIHBhdGhuYW1lIG9mIGEgZmlsZSB0aGF0IGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgdGhlCi0gICBjYWxsIGlzIG1hZGUuICBUaGUgKnByZWZpeCosICpzdWZmaXgqLCBhbmQgKmRpciogYXJndW1lbnRzIGFyZSB0aGUgc2FtZQotICAgYXMgZm9yIDpmdW5jOmBta3N0ZW1wYC4KLQotICAgLi4gd2FybmluZzo6Ci0KLSAgICAgIFVzZSBvZiB0aGlzIGZ1bmN0aW9uIG1heSBpbnRyb2R1Y2UgYSBzZWN1cml0eSBob2xlIGluIHlvdXIgcHJvZ3JhbS4gIEJ5Ci0gICAgICB0aGUgdGltZSB5b3UgZ2V0IGFyb3VuZCB0byBkb2luZyBhbnl0aGluZyB3aXRoIHRoZSBmaWxlIG5hbWUgaXQgcmV0dXJucywKLSAgICAgIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBiZWF0ZW4geW91IHRvIHRoZSBwdW5jaC4gIDpmdW5jOmBta3RlbXBgIHVzYWdlIGNhbgotICAgICAgYmUgcmVwbGFjZWQgZWFzaWx5IHdpdGggOmZ1bmM6YE5hbWVkVGVtcG9yYXJ5RmlsZWAsIHBhc3NpbmcgaXQgdGhlCi0gICAgICBgYGRlbGV0ZT1GYWxzZWBgIHBhcmFtZXRlcjo6Ci0KLSAgICAgICAgID4+PiBmID0gTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKLSAgICAgICAgID4+PiBmLm5hbWUKLSAgICAgICAgICcvdG1wL3RtcHRqdWpqdCcKLSAgICAgICAgID4+PiBmLndyaXRlKGIiSGVsbG8gV29ybGQhXG4iKQotICAgICAgICAgMTMKLSAgICAgICAgID4+PiBmLmNsb3NlKCkKLSAgICAgICAgID4+PiBvcy51bmxpbmsoZi5uYW1lKQotICAgICAgICAgPj4+IG9zLnBhdGguZXhpc3RzKGYubmFtZSkKLSAgICAgICAgIEZhbHNlCi0KLVRoZSBtb2R1bGUgdXNlcyBhIGdsb2JhbCB2YXJpYWJsZSB0aGF0IHRlbGwgaXQgaG93IHRvIGNvbnN0cnVjdCBhCi10ZW1wb3JhcnkgbmFtZS4gIFRoZXkgYXJlIGluaXRpYWxpemVkIGF0IHRoZSBmaXJzdCBjYWxsIHRvIGFueSBvZiB0aGUKLWZ1bmN0aW9ucyBhYm92ZS4gIFRoZSBjYWxsZXIgbWF5IGNoYW5nZSB0aGVtLCBidXQgdGhpcyBpcyBkaXNjb3VyYWdlZDsgdXNlCi10aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gYXJndW1lbnRzLCBpbnN0ZWFkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpzdWZmaXgqLCAqcHJlZml4KiwgYW5kICpkaXIqIG1heSBub3cgYmUgc3VwcGxpZWQgaW4gYnl0ZXMgaW4gb3JkZXIgdG8KKyAgICAgIG9idGFpbiBhIGJ5dGVzIHJldHVybiB2YWx1ZS4gIFByaW9yIHRvIHRoaXMsIG9ubHkgc3RyIHdhcyBhbGxvd2VkLgorICAgICAgKnN1ZmZpeCogYW5kICpwcmVmaXgqIG5vdyBhY2NlcHQgYW5kIGRlZmF1bHQgdG8gYGBOb25lYGAgdG8gY2F1c2UKKyAgICAgIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZC4KIAogCi0uLiBkYXRhOjogdGVtcGRpcgorLi4gZnVuY3Rpb246OiBnZXR0ZW1wZGlyKCkKIAotICAgV2hlbiBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgLCB0aGlzIHZhcmlhYmxlIGRlZmluZXMgdGhlCi0gICBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKmRpciogYXJndW1lbnQgdG8gYWxsIHRoZSBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGlzCi0gICBtb2R1bGUuCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB1c2VkIGZvciB0ZW1wb3JhcnkgZmlsZXMuIFRoaXMKKyAgIGRlZmluZXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqZGlyKiBhcmd1bWVudCB0byBhbGwgZnVuY3Rpb25zCisgICBpbiB0aGlzIG1vZHVsZS4KIAotICAgSWYgYGB0ZW1wZGlyYGAgaXMgdW5zZXQgb3IgYGBOb25lYGAgYXQgYW55IGNhbGwgdG8gYW55IG9mIHRoZSBhYm92ZQotICAgZnVuY3Rpb25zLCBQeXRob24gc2VhcmNoZXMgYSBzdGFuZGFyZCBsaXN0IG9mIGRpcmVjdG9yaWVzIGFuZCBzZXRzCi0gICAqdGVtcGRpciogdG8gdGhlIGZpcnN0IG9uZSB3aGljaCB0aGUgY2FsbGluZyB1c2VyIGNhbiBjcmVhdGUgZmlsZXMgaW4uCi0gICBUaGUgbGlzdCBpczoKKyAgIFB5dGhvbiBzZWFyY2hlcyBhIHN0YW5kYXJkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gZmluZCBvbmUgd2hpY2gKKyAgIHRoZSBjYWxsaW5nIHVzZXIgY2FuIGNyZWF0ZSBmaWxlcyBpbi4gIFRoZSBsaXN0IGlzOgogCiAgICAjLiBUaGUgZGlyZWN0b3J5IG5hbWVkIGJ5IHRoZSA6ZW52dmFyOmBUTVBESVJgIGVudmlyb25tZW50IHZhcmlhYmxlLgogCkBAIC0yMjUsMTkgKzIyNSw0MyBAQAogCiAgICAjLiBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAorICAgVGhlIHJlc3VsdCBvZiB0aGlzIHNlYXJjaCBpcyBjYWNoZWQsIHNlZSB0aGUgZGVzY3JpcHRpb24gb2YKKyAgIDpkYXRhOmB0ZW1wZGlyYCBiZWxvdy4KIAotLi4gZnVuY3Rpb246OiBnZXR0ZW1wZGlyKCkKKy4uIGZ1bmN0aW9uOjogZ2V0dGVtcGRpcmIoKQogCi0gICBSZXR1cm4gdGhlIGRpcmVjdG9yeSBjdXJyZW50bHkgc2VsZWN0ZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlcyBpbi4gSWYKLSAgIDpkYXRhOmB0ZW1wZGlyYCBpcyBub3QgYGBOb25lYGAsIHRoaXMgc2ltcGx5IHJldHVybnMgaXRzIGNvbnRlbnRzOyBvdGhlcndpc2UsCi0gICB0aGUgc2VhcmNoIGRlc2NyaWJlZCBhYm92ZSBpcyBwZXJmb3JtZWQsIGFuZCB0aGUgcmVzdWx0IHJldHVybmVkLgorICAgU2FtZSBhcyA6ZnVuYzpgZ2V0dGVtcGRpcmAgYnV0IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gYnl0ZXMuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGdldHRlbXBwcmVmaXgoKQogCiAgICBSZXR1cm4gdGhlIGZpbGVuYW1lIHByZWZpeCB1c2VkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZXMuICBUaGlzIGRvZXMgbm90CiAgICBjb250YWluIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50LgogCisuLiBmdW5jdGlvbjo6IGdldHRlbXBwcmVmaXhiKCkKKworICAgU2FtZSBhcyA6ZnVuYzpgZ2V0dGVtcHByZWZpeGJgIGJ1dCB0aGUgcmV0dXJuIHZhbHVlIGlzIGluIGJ5dGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworVGhlIG1vZHVsZSB1c2VzIGEgZ2xvYmFsIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkKK3VzZWQgZm9yIHRlbXBvcmFyeSBmaWxlcyByZXR1cm5lZCBieSA6ZnVuYzpgZ2V0dGVtcGRpcmAuICBJdCBjYW4gYmUKK3NldCBkaXJlY3RseSB0byBvdmVycmlkZSB0aGUgc2VsZWN0aW9uIHByb2Nlc3MsIGJ1dCB0aGlzIGlzIGRpc2NvdXJhZ2VkLgorQWxsIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB0YWtlIGEgKmRpciogYXJndW1lbnQgd2hpY2ggY2FuIGJlIHVzZWQKK3RvIHNwZWNpZnkgdGhlIGRpcmVjdG9yeSBhbmQgdGhpcyBpcyB0aGUgcmVjb21tZW5kIGFwcHJvYWNoLgorCisuLiBkYXRhOjogdGVtcGRpcgorCisgICBXaGVuIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gYGBOb25lYGAsIHRoaXMgdmFyaWFibGUgZGVmaW5lcyB0aGUKKyAgIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqZGlyKiBhcmd1bWVudCB0byBhbGwgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMKKyAgIG1vZHVsZS4KKworICAgSWYgYGB0ZW1wZGlyYGAgaXMgdW5zZXQgb3IgYGBOb25lYGAgYXQgYW55IGNhbGwgdG8gYW55IG9mIHRoZSBhYm92ZQorICAgZnVuY3Rpb25zIGV4Y2VwdCA6ZnVuYzpgZ2V0dGVtcHByZWZpeGAgaXQgaXMgaW5pdGFsaXplZCBmb2xsb3dpbmcgdGhlCisgICBhbGdvcml0aG0gZGVzY3JpYmVkIGluIDpmdW5jOmBnZXR0ZW1wZGlyYC4KKworLi4gX3RlbXBmaWxlLWV4YW1wbGVzOgogCiBFeGFtcGxlcwogLS0tLS0tLS0KQEAgLTI3MSwzICsyOTUsNDIgQEAKICAgICA+Pj4KICAgICAjIGRpcmVjdG9yeSBhbmQgY29udGVudHMgaGF2ZSBiZWVuIHJlbW92ZWQKIAorCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgaGlzdG9yaWNhbCB3YXkgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlcyB3YXMgdG8gZmlyc3QgZ2VuZXJhdGUgYQorZmlsZSBuYW1lIHdpdGggdGhlIDpmdW5jOmBta3RlbXBgIGZ1bmN0aW9uIGFuZCB0aGVuIGNyZWF0ZSBhIGZpbGUKK3VzaW5nIHRoaXMgbmFtZS4gVW5mb3J0dW5hdGVseSB0aGlzIGlzIG5vdCBzZWN1cmUsIGJlY2F1c2UgYSBkaWZmZXJlbnQKK3Byb2Nlc3MgbWF5IGNyZWF0ZSBhIGZpbGUgd2l0aCB0aGlzIG5hbWUgaW4gdGhlIHRpbWUgYmV0d2VlbiB0aGUgY2FsbAordG8gOmZ1bmM6YG1rdGVtcGAgYW5kIHRoZSBzdWJzZXF1ZW50IGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBmaWxlIGJ5IHRoZQorZmlyc3QgcHJvY2Vzcy4gVGhlIHNvbHV0aW9uIGlzIHRvIGNvbWJpbmUgdGhlIHR3byBzdGVwcyBhbmQgY3JlYXRlIHRoZQorZmlsZSBpbW1lZGlhdGVseS4gVGhpcyBhcHByb2FjaCBpcyB1c2VkIGJ5IDpmdW5jOmBta3N0ZW1wYCBhbmQgdGhlCitvdGhlciBmdW5jdGlvbnMgZGVzY3JpYmVkIGFib3ZlLgorCisuLiBmdW5jdGlvbjo6IG1rdGVtcChzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAyLjMKKyAgICAgIFVzZSA6ZnVuYzpgbWtzdGVtcGAgaW5zdGVhZC4KKworICAgUmV0dXJuIGFuIGFic29sdXRlIHBhdGhuYW1lIG9mIGEgZmlsZSB0aGF0IGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgdGhlCisgICBjYWxsIGlzIG1hZGUuICBUaGUgKnByZWZpeCosICpzdWZmaXgqLCBhbmQgKmRpciogYXJndW1lbnRzIGFyZSB0aGUgc2FtZQorICAgYXMgZm9yIDpmdW5jOmBta3N0ZW1wYC4KKworICAgLi4gd2FybmluZzo6CisKKyAgICAgIFVzZSBvZiB0aGlzIGZ1bmN0aW9uIG1heSBpbnRyb2R1Y2UgYSBzZWN1cml0eSBob2xlIGluIHlvdXIgcHJvZ3JhbS4gIEJ5CisgICAgICB0aGUgdGltZSB5b3UgZ2V0IGFyb3VuZCB0byBkb2luZyBhbnl0aGluZyB3aXRoIHRoZSBmaWxlIG5hbWUgaXQgcmV0dXJucywKKyAgICAgIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBiZWF0ZW4geW91IHRvIHRoZSBwdW5jaC4gIDpmdW5jOmBta3RlbXBgIHVzYWdlIGNhbgorICAgICAgYmUgcmVwbGFjZWQgZWFzaWx5IHdpdGggOmZ1bmM6YE5hbWVkVGVtcG9yYXJ5RmlsZWAsIHBhc3NpbmcgaXQgdGhlCisgICAgICBgYGRlbGV0ZT1GYWxzZWBgIHBhcmFtZXRlcjo6CisKKyAgICAgICAgID4+PiBmID0gTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgID4+PiBmLm5hbWUKKyAgICAgICAgICcvdG1wL3RtcHRqdWpqdCcKKyAgICAgICAgID4+PiBmLndyaXRlKGIiSGVsbG8gV29ybGQhXG4iKQorICAgICAgICAgMTMKKyAgICAgICAgID4+PiBmLmNsb3NlKCkKKyAgICAgICAgID4+PiBvcy51bmxpbmsoZi5uYW1lKQorICAgICAgICAgPj4+IG9zLnBhdGguZXhpc3RzKGYubmFtZSkKKyAgICAgICAgIEZhbHNlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDk3NDkwOWUuLmY3YWQ0NzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC01NjgsNiArNTY4LDE3IEBACiAgICAgICBkZWYgbG9hZF90ZXN0cygqYXJncyk6CiAgICAgICAgICAgcmV0dXJuIGxvYWRfcGFja2FnZV90ZXN0cyhvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAqYXJncykKIAorLi4gZnVuY3Rpb246OiBkZXRlY3RfYXBpX21pc21hdGNoKHJlZl9hcGksIG90aGVyX2FwaSwgKiwgaWdub3JlPSgpKToKKworICAgUmV0dXJucyB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMsIGZ1bmN0aW9ucyBvciBtZXRob2RzIG9mICpyZWZfYXBpKiBub3QKKyAgIGZvdW5kIG9uICpvdGhlcl9hcGkqLCBleGNlcHQgZm9yIGEgZGVmaW5lZCBsaXN0IG9mIGl0ZW1zIHRvIGJlCisgICBpZ25vcmVkIGluIHRoaXMgY2hlY2sgc3BlY2lmaWVkIGluICppZ25vcmUqLgorCisgICBCeSBkZWZhdWx0IHRoaXMgc2tpcHMgcHJpdmF0ZSBhdHRyaWJ1dGVzIGJlZ2lubmluZyB3aXRoICdfJyBidXQKKyAgIGluY2x1ZGVzIGFsbCBtYWdpYyBtZXRob2RzLCBpLmUuIHRob3NlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgaW4gJ19fJy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1lLnJzdCBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CmluZGV4IDhkOGI3ZDQuLjNkMzM1YzggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CkBAIC0zMTQsOSArMzE0LDkgQEAKICAgIHByb2Nlc3NlcyBydW5uaW5nIGZvciBtb3JlIHRoYW4gNDkgZGF5cy4gT24gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgV2luZG93cwogICAgYW5kIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLCA6ZnVuYzpgbW9ub3RvbmljYCBpcyBzeXN0ZW0td2lkZS4KIAotICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBNYWMgT1MgWCwgTGludXgsIEZyZWVCU0QsIE9wZW5CU0QsIFNvbGFyaXMuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZS4KIAogCiAuLiBmdW5jdGlvbjo6IHBlcmZfY291bnRlcigpCkBAIC0zNTAsNiArMzUwLDExIEBACiAgICByZXF1ZXN0ZWQgYnkgYW4gYXJiaXRyYXJ5IGFtb3VudCBiZWNhdXNlIG9mIHRoZSBzY2hlZHVsaW5nIG9mIG90aGVyIGFjdGl2aXR5CiAgICBpbiB0aGUgc3lzdGVtLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIG5vdyBzbGVlcHMgYXQgbGVhc3QgKnNlY3MqIGV2ZW4gaWYgdGhlIHNsZWVwIGlzIGludGVycnVwdGVkCisgICAgICBieSBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RyZnRpbWUoZm9ybWF0WywgdF0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CmluZGV4IDcwZGY0MDkuLmQxMDUxZjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdApAQCAtNTksMTggKzU5LDI2IEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhyZWUgY29udmVuaWVuY2UgZnVuY3Rpb25zIGFuZCBhIHB1YmxpYyBjbGFzczoKIAogCi0uLiBmdW5jdGlvbjo6IHRpbWVpdChzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08ZGVmYXVsdCB0aW1lcj4sIG51bWJlcj0xMDAwMDAwKQorLi4gZnVuY3Rpb246OiB0aW1laXQoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PGRlZmF1bHQgdGltZXI+LCBudW1iZXI9MTAwMDAwMCwgZ2xvYmFscz1Ob25lKQogCiAgICBDcmVhdGUgYSA6Y2xhc3M6YFRpbWVyYCBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBzdGF0ZW1lbnQsICpzZXR1cCogY29kZSBhbmQKICAgICp0aW1lciogZnVuY3Rpb24gYW5kIHJ1biBpdHMgOm1ldGg6YC50aW1laXRgIG1ldGhvZCB3aXRoICpudW1iZXIqIGV4ZWN1dGlvbnMuCisgICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFyZ3VtZW50IHNwZWNpZmllcyBhIG5hbWVzcGFjZSBpbiB3aGljaCB0byBleGVjdXRlIHRoZQorICAgY29kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlcGVhdChzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08ZGVmYXVsdCB0aW1lcj4sIHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCkKKy4uIGZ1bmN0aW9uOjogcmVwZWF0KHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTxkZWZhdWx0IHRpbWVyPiwgcmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwLCBnbG9iYWxzPU5vbmUpCiAKICAgIENyZWF0ZSBhIDpjbGFzczpgVGltZXJgIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIHN0YXRlbWVudCwgKnNldHVwKiBjb2RlIGFuZAogICAgKnRpbWVyKiBmdW5jdGlvbiBhbmQgcnVuIGl0cyA6bWV0aDpgLnJlcGVhdGAgbWV0aG9kIHdpdGggdGhlIGdpdmVuICpyZXBlYXQqCi0gICBjb3VudCBhbmQgKm51bWJlciogZXhlY3V0aW9ucy4KKyAgIGNvdW50IGFuZCAqbnVtYmVyKiBleGVjdXRpb25zLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhcmd1bWVudCBzcGVjaWZpZXMgYQorICAgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV4ZWN1dGUgdGhlIGNvZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIC4uIGZ1bmN0aW9uOjogZGVmYXVsdF90aW1lcigpCiAKQEAgLTgwLDcgKzg4LDcgQEAKICAgICAgIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAgaXMgbm93IHRoZSBkZWZhdWx0IHRpbWVyLgogCiAKLS4uIGNsYXNzOjogVGltZXIoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PHRpbWVyIGZ1bmN0aW9uPikKKy4uIGNsYXNzOjogVGltZXIoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PHRpbWVyIGZ1bmN0aW9uPiwgZ2xvYmFscz1Ob25lKQogCiAgICBDbGFzcyBmb3IgdGltaW5nIGV4ZWN1dGlvbiBzcGVlZCBvZiBzbWFsbCBjb2RlIHNuaXBwZXRzLgogCkBAIC04OCw3ICs5Niw5IEBACiAgICBmb3Igc2V0dXAsIGFuZCBhIHRpbWVyIGZ1bmN0aW9uLiAgQm90aCBzdGF0ZW1lbnRzIGRlZmF1bHQgdG8gYGAncGFzcydgYDsKICAgIHRoZSB0aW1lciBmdW5jdGlvbiBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgKHNlZSB0aGUgbW9kdWxlIGRvYyBzdHJpbmcpLgogICAgKnN0bXQqIGFuZCAqc2V0dXAqIG1heSBhbHNvIGNvbnRhaW4gbXVsdGlwbGUgc3RhdGVtZW50cyBzZXBhcmF0ZWQgYnkgYGA7YGAKLSAgIG9yIG5ld2xpbmVzLCBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgY29udGFpbiBtdWx0aS1saW5lIHN0cmluZyBsaXRlcmFscy4KKyAgIG9yIG5ld2xpbmVzLCBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgY29udGFpbiBtdWx0aS1saW5lIHN0cmluZyBsaXRlcmFscy4gIFRoZQorICAgc3RhdGVtZW50IHdpbGwgYnkgZGVmYXVsdCBiZSBleGVjdXRlZCB3aXRoaW4gdGltZWl0J3MgbmFtZXNwYWNlOyB0aGlzIGJlaGF2aW9yCisgICBjYW4gYmUgY29udHJvbGxlZCBieSBwYXNzaW5nIGEgbmFtZXNwYWNlIHRvICpnbG9iYWxzKi4KIAogICAgVG8gbWVhc3VyZSB0aGUgZXhlY3V0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHN0YXRlbWVudCwgdXNlIHRoZSA6bWV0aDpgLnRpbWVpdGAKICAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgbWV0aG9kIGlzIGEgY29udmVuaWVuY2UgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAKQEAgLTEwMSw2ICsxMTEsOCBAQAogICAgd2lsbCB0aGVuIGJlIGV4ZWN1dGVkIGJ5IDptZXRoOmAudGltZWl0YC4gIE5vdGUgdGhhdCB0aGUgdGltaW5nIG92ZXJoZWFkIGlzIGEKICAgIGxpdHRsZSBsYXJnZXIgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugb2YgdGhlIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAgICAuLiBtZXRob2Q6OiBUaW1lci50aW1laXQobnVtYmVyPTEwMDAwMDApCiAKQEAgLTE2OSw3ICsxODEsNyBAQAogCiBXaGVuIGNhbGxlZCBhcyBhIHByb2dyYW0gZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB0aGUgZm9sbG93aW5nIGZvcm0gaXMgdXNlZDo6CiAKLSAgIHB5dGhvbiAtbSB0aW1laXQgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstaF0gW3N0YXRlbWVudCAuLi5dCisgICBweXRob24gLW0gdGltZWl0IFstbiBOXSBbLXIgTl0gWy11IFVdIFstcyBTXSBbLXRdIFstY10gWy1oXSBbc3RhdGVtZW50IC4uLl0KIAogV2hlcmUgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSB1bmRlcnN0b29kOgogCkBAIC0xOTgsNiArMjEwLDEyIEBACiAKICAgIHVzZSA6ZnVuYzpgdGltZS50aW1lYCAoZGVwcmVjYXRlZCkKIAorLi4gY21kb3B0aW9uOjogLXUsIC0tdW5pdD1VCisKKyAgICBzcGVjaWZ5IGEgdGltZSB1bml0IGZvciB0aW1lciBvdXRwdXQ7IGNhbiBzZWxlY3QgdXNlYywgbXNlYywgb3Igc2VjCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBjbWRvcHRpb246OiAtYywgLS1jbG9jawogCiAgICB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIChkZXByZWNhdGVkKQpAQCAtMzIwLDMgKzMzOCwxNyBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICBpbXBvcnQgdGltZWl0CiAgICAgICAgcHJpbnQodGltZWl0LnRpbWVpdCgidGVzdCgpIiwgc2V0dXA9ImZyb20gX19tYWluX18gaW1wb3J0IHRlc3QiKSkKKworQW5vdGhlciBvcHRpb24gaXMgdG8gcGFzcyA6ZnVuYzpgZ2xvYmFsc2AgdG8gdGhlICAqZ2xvYmFscyogcGFyYW1ldGVyLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb2RlCit0byBiZSBleGVjdXRlZCB3aXRoaW4geW91ciBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2UuICBUaGlzIGNhbiBiZSBtb3JlIGNvbnZlbmllbnQKK3RoYW4gaW5kaXZpZHVhbGx5IHNwZWNpZnlpbmcgaW1wb3J0czo6CisKKyAgIGRlZiBmKHgpOgorICAgICAgIHJldHVybiB4KioyCisgICBkZWYgZyh4KToKKyAgICAgICByZXR1cm4geCoqNAorICAgZGVmIGgoeCk6CisgICAgICAgcmV0dXJuIHgqKjgKKworICAgaW1wb3J0IHRpbWVpdAorICAgcHJpbnQodGltZWl0LnRpbWVpdCgnW2Z1bmMoNDIpIGZvciBmdW5jIGluIChmLGcsaCldJywgZ2xvYmFscz1nbG9iYWxzKCkpKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdG9rZW4ucnN0IGIvRG9jL2xpYnJhcnkvdG9rZW4ucnN0CmluZGV4IDRjZDcwOTguLjg4ZmIzOGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rva2VuLnJzdAorKysgYi9Eb2MvbGlicmFyeS90b2tlbi5yc3QKQEAgLTkzLDYgKzkzLDcgQEAKICAgICAgICAgICBET1VCTEVTTEFTSAogICAgICAgICAgIERPVUJMRVNMQVNIRVFVQUwKICAgICAgICAgICBBVAorICAgICAgICAgIEFURVFVQUwKICAgICAgICAgICBSQVJST1cKICAgICAgICAgICBFTExJUFNJUwogICAgICAgICAgIE9QCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAppbmRleCAxNWZiZWRjLi44ZDIxNmQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKQEAgLTIyLDE1ICsyMiwyMCBAQAogCiAuLiBmdW5jdGlvbjo6IHByaW50X3RiKHRyYWNlYmFjaywgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKQogCi0gICBQcmludCB1cCB0byAqbGltaXQqIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAqdHJhY2ViYWNrKi4gIElmICpsaW1pdCogaXMgb21pdHRlZAotICAgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzIGFyZSBwcmludGVkLiBJZiAqZmlsZSogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlCi0gICBvdXRwdXQgZ29lcyB0byBgYHN5cy5zdGRlcnJgYDsgb3RoZXJ3aXNlIGl0IHNob3VsZCBiZSBhbiBvcGVuIGZpbGUgb3IgZmlsZS1saWtlCi0gICBvYmplY3QgdG8gcmVjZWl2ZSB0aGUgb3V0cHV0LgorICAgUHJpbnQgdXAgdG8gKmxpbWl0KiBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20gKnRyYWNlYmFjayogKHN0YXJ0aW5nIGZyb20KKyAgIHRoZSBjYWxsZXIncyBmcmFtZSkgaWYgKmxpbWl0KiBpcyBwb3NpdGl2ZS4gIE90aGVyd2lzZSwgcHJpbnQgdGhlIGxhc3QKKyAgIGBgYWJzKGxpbWl0KWBgIGVudHJpZXMuICBJZiAqbGltaXQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzCisgICBhcmUgcHJpbnRlZC4gIElmICpmaWxlKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgb3V0cHV0IGdvZXMgdG8KKyAgIGBgc3lzLnN0ZGVycmBgOyBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIGFuIG9wZW4gZmlsZSBvciBmaWxlLWxpa2Ugb2JqZWN0CisgICB0byByZWNlaXZlIHRoZSBvdXRwdXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgQWRkZWQgbmVnYXRpdmUgKmxpbWl0KiBzdXBwb3J0LgogCiAKIC4uIGZ1bmN0aW9uOjogcHJpbnRfZXhjZXB0aW9uKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2ssIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSkKIAotICAgUHJpbnQgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGFuZCB1cCB0byAqbGltaXQqIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbQorICAgUHJpbnQgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGFuZCBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20KICAgICp0cmFjZWJhY2sqIHRvICpmaWxlKi4gVGhpcyBkaWZmZXJzIGZyb20gOmZ1bmM6YHByaW50X3RiYCBpbiB0aGUgZm9sbG93aW5nCiAgICB3YXlzOgogCkBAIC00MSw2ICs0Niw3IEBACiAgICAgIHByaW50cyB0aGUgbGluZSB3aGVyZSB0aGUgc3ludGF4IGVycm9yIG9jY3VycmVkIHdpdGggYSBjYXJldCBpbmRpY2F0aW5nIHRoZQogICAgICBhcHByb3hpbWF0ZSBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCiAKKyAgIFRoZSBvcHRpb25hbCAqbGltaXQqIGFyZ3VtZW50IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciA6ZnVuYzpgcHJpbnRfdGJgLgogICAgSWYgKmNoYWluKiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIHRoZW4gY2hhaW5lZCBleGNlcHRpb25zICh0aGUKICAgIDphdHRyOmBfX2NhdXNlX19gIG9yIDphdHRyOmBfX2NvbnRleHRfX2AgYXR0cmlidXRlcyBvZiB0aGUgZXhjZXB0aW9uKSB3aWxsIGJlCiAgICBwcmludGVkIGFzIHdlbGwsIGxpa2UgdGhlIGludGVycHJldGVyIGl0c2VsZiBkb2VzIHdoZW4gcHJpbnRpbmcgYW4gdW5oYW5kbGVkCkBAIC00OSwzMyArNTUsNDEgQEAKIAogLi4gZnVuY3Rpb246OiBwcmludF9leGMobGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKQogCi0gICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYHByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpYGAuCisgICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYHByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0LCBmaWxlLAorICAgY2hhaW4pYGAuCiAKIAogLi4gZnVuY3Rpb246OiBwcmludF9sYXN0KGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSkKIAogICAgVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgYGBwcmludF9leGNlcHRpb24oc3lzLmxhc3RfdHlwZSwgc3lzLmxhc3RfdmFsdWUsCi0gICBzeXMubGFzdF90cmFjZWJhY2ssIGxpbWl0LCBmaWxlKWBgLiAgSW4gZ2VuZXJhbCBpdCB3aWxsIHdvcmsgb25seSBhZnRlcgotICAgYW4gZXhjZXB0aW9uIGhhcyByZWFjaGVkIGFuIGludGVyYWN0aXZlIHByb21wdCAoc2VlIDpkYXRhOmBzeXMubGFzdF90eXBlYCkuCisgICBzeXMubGFzdF90cmFjZWJhY2ssIGxpbWl0LCBmaWxlLCBjaGFpbilgYC4gIEluIGdlbmVyYWwgaXQgd2lsbCB3b3JrIG9ubHkKKyAgIGFmdGVyIGFuIGV4Y2VwdGlvbiBoYXMgcmVhY2hlZCBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQgKHNlZQorICAgOmRhdGE6YHN5cy5sYXN0X3R5cGVgKS4KIAogCiAuLiBmdW5jdGlvbjo6IHByaW50X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKQogCi0gICBUaGlzIGZ1bmN0aW9uIHByaW50cyBhIHN0YWNrIHRyYWNlIGZyb20gaXRzIGludm9jYXRpb24gcG9pbnQuICBUaGUgb3B0aW9uYWwgKmYqCi0gICBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBzdGFjayBmcmFtZSB0byBzdGFydC4gIFRoZSBvcHRpb25hbAotICAgKmxpbWl0KiBhbmQgKmZpbGUqIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCi0gICA6ZnVuYzpgcHJpbnRfZXhjZXB0aW9uYC4KKyAgIFByaW50IHVwIHRvICpsaW1pdCogc3RhY2sgdHJhY2UgZW50cmllcyAoc3RhcnRpbmcgZnJvbSB0aGUgaW52b2NhdGlvbgorICAgcG9pbnQpIGlmICpsaW1pdCogaXMgcG9zaXRpdmUuICBPdGhlcndpc2UsIHByaW50IHRoZSBsYXN0IGBgYWJzKGxpbWl0KWBgCisgICBlbnRyaWVzLiAgSWYgKmxpbWl0KiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCBhbGwgZW50cmllcyBhcmUgcHJpbnRlZC4KKyAgIFRoZSBvcHRpb25hbCAqZiogYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGUgc3RhY2sgZnJhbWUKKyAgIHRvIHN0YXJ0LiAgVGhlIG9wdGlvbmFsICpmaWxlKiBhcmd1bWVudCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgIDpmdW5jOmBwcmludF90YmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAgQWRkZWQgbmVnYXRpdmUgKmxpbWl0KiBzdXBwb3J0LgogCiAKIC4uIGZ1bmN0aW9uOjogZXh0cmFjdF90Yih0cmFjZWJhY2ssIGxpbWl0PU5vbmUpCiAKLSAgIFJldHVybiBhIGxpc3Qgb2YgdXAgdG8gKmxpbWl0KiAicHJlLXByb2Nlc3NlZCIgc3RhY2sgdHJhY2UgZW50cmllcyBleHRyYWN0ZWQKLSAgIGZyb20gdGhlIHRyYWNlYmFjayBvYmplY3QgKnRyYWNlYmFjayouICBJdCBpcyB1c2VmdWwgZm9yIGFsdGVybmF0ZSBmb3JtYXR0aW5nIG9mCi0gICBzdGFjayB0cmFjZXMuICBJZiAqbGltaXQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzIGFyZSBleHRyYWN0ZWQuICBBCi0gICAicHJlLXByb2Nlc3NlZCIgc3RhY2sgdHJhY2UgZW50cnkgaXMgYSA0LXR1cGxlICgqZmlsZW5hbWUqLCAqbGluZSBudW1iZXIqLAotICAgKmZ1bmN0aW9uIG5hbWUqLCAqdGV4dCopIHJlcHJlc2VudGluZyB0aGUgaW5mb3JtYXRpb24gdGhhdCBpcyB1c3VhbGx5IHByaW50ZWQKLSAgIGZvciBhIHN0YWNrIHRyYWNlLiAgVGhlICp0ZXh0KiBpcyBhIHN0cmluZyB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UKLSAgIHN0cmlwcGVkOyBpZiB0aGUgc291cmNlIGlzIG5vdCBhdmFpbGFibGUgaXQgaXMgYGBOb25lYGAuCisgICBSZXR1cm4gYSBsaXN0IG9mICJwcmUtcHJvY2Vzc2VkIiBzdGFjayB0cmFjZSBlbnRyaWVzIGV4dHJhY3RlZCBmcm9tIHRoZQorICAgdHJhY2ViYWNrIG9iamVjdCAqdHJhY2ViYWNrKi4gIEl0IGlzIHVzZWZ1bCBmb3IgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgb2YKKyAgIHN0YWNrIHRyYWNlcy4gIFRoZSBvcHRpb25hbCAqbGltaXQqIGFyZ3VtZW50IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgOmZ1bmM6YHByaW50X3RiYC4gIEEgInByZS1wcm9jZXNzZWQiIHN0YWNrIHRyYWNlIGVudHJ5IGlzIGEgNC10dXBsZQorICAgKCpmaWxlbmFtZSosICpsaW5lIG51bWJlciosICpmdW5jdGlvbiBuYW1lKiwgKnRleHQqKSByZXByZXNlbnRpbmcgdGhlCisgICBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzdWFsbHkgcHJpbnRlZCBmb3IgYSBzdGFjayB0cmFjZS4gIFRoZSAqdGV4dCogaXMgYQorICAgc3RyaW5nIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBzdHJpcHBlZDsgaWYgdGhlIHNvdXJjZSBpcworICAgbm90IGF2YWlsYWJsZSBpdCBpcyBgYE5vbmVgYC4KIAogCiAuLiBmdW5jdGlvbjo6IGV4dHJhY3Rfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lKQpAQCAtMTM2LDYgKzE1MCwxNjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIGZ1bmN0aW9uOjogd2Fsa19zdGFjayhmKQorCisgICBXYWxrIGEgc3RhY2sgZm9sbG93aW5nIGBgZi5mX2JhY2tgYCBmcm9tIHRoZSBnaXZlbiBmcmFtZSwgeWllbGRpbmcgdGhlIGZyYW1lCisgICBhbmQgbGluZSBudW1iZXIgZm9yIGVhY2ggZnJhbWUuIElmICpmKiBpcyBgYE5vbmVgYCwgdGhlIGN1cnJlbnQgc3RhY2sgaXMKKyAgIHVzZWQuIFRoaXMgaGVscGVyIGlzIHVzZWQgd2l0aCA6bWV0aDpgU3RhY2tTdW1tYXJ5LmV4dHJhY3RgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gZnVuY3Rpb246OiB3YWxrX3RiKHRiKQorCisgICBXYWxrIGEgdHJhY2ViYWNrIGZvbGxvd2luZyBgYHRiX25leHRgYCB5aWVsZGluZyB0aGUgZnJhbWUgYW5kIGxpbmUgbnVtYmVyCisgICBmb3IgZWFjaCBmcmFtZS4gVGhpcyBoZWxwZXIgaXMgdXNlZCB3aXRoIDptZXRoOmBTdGFja1N1bW1hcnkuZXh0cmFjdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitUaGUgbW9kdWxlIGFsc28gZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CisKKzpjbGFzczpgVHJhY2ViYWNrRXhjZXB0aW9uYCBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworOmNsYXNzOmBUcmFjZWJhY2tFeGNlcHRpb25gIG9iamVjdHMgYXJlIGNyZWF0ZWQgZnJvbSBhY3R1YWwgZXhjZXB0aW9ucyB0bworY2FwdHVyZSBkYXRhIGZvciBsYXRlciBwcmludGluZyBpbiBhIGxpZ2h0d2VpZ2h0IGZhc2hpb24uCisKKy4uIGNsYXNzOjogVHJhY2ViYWNrRXhjZXB0aW9uKGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2ssICosIGxpbWl0PU5vbmUsIGxvb2t1cF9saW5lcz1UcnVlLCBjYXB0dXJlX2xvY2Fscz1GYWxzZSkKKworICAgQ2FwdHVyZSBhbiBleGNlcHRpb24gZm9yIGxhdGVyIHJlbmRlcmluZy4gKmxpbWl0KiwgKmxvb2t1cF9saW5lcyogYW5kCisgICAqY2FwdHVyZV9sb2NhbHMqIGFyZSBhcyBmb3IgdGhlIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBjbGFzcy4KKworICAgTm90ZSB0aGF0IHdoZW4gbG9jYWxzIGFyZSBjYXB0dXJlZCwgdGhleSBhcmUgYWxzbyBzaG93biBpbiB0aGUgdHJhY2ViYWNrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBfX2NhdXNlX18KKworICAgICAgQSA6Y2xhc3M6YFRyYWNlYmFja0V4Y2VwdGlvbmAgb2YgdGhlIG9yaWdpbmFsIGBgX19jYXVzZV9fYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fY29udGV4dF9fCisKKyAgICAgIEEgOmNsYXNzOmBUcmFjZWJhY2tFeGNlcHRpb25gIG9mIHRoZSBvcmlnaW5hbCBgYF9fY29udGV4dF9fYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fc3VwcHJlc3NfY29udGV4dF9fCisKKyAgICAgIFRoZSBgYF9fc3VwcHJlc3NfY29udGV4dF9fYGAgdmFsdWUgZnJvbSB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdGFjaworCisgICAgICBBIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCByZXByZXNlbnRpbmcgdGhlIHRyYWNlYmFjay4KKworICAgLi4gYXR0cmlidXRlOjogZXhjX3R5cGUKKworICAgICAgVGhlIGNsYXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFjZWJhY2suCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZpbGVuYW1lCisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGZpbGUgbmFtZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVubworCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHRleHQKKworICAgICAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgdGV4dCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG9mZnNldAorCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlLgorCisgICAuLiBjbGFzc21ldGhvZDo6IGZyb21fZXhjZXB0aW9uKGV4YywgKiwgbGltaXQ9Tm9uZSwgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlKQorCisgICAgICBDYXB0dXJlIGFuIGV4Y2VwdGlvbiBmb3IgbGF0ZXIgcmVuZGVyaW5nLiAqbGltaXQqLCAqbG9va3VwX2xpbmVzKiBhbmQKKyAgICAgICpjYXB0dXJlX2xvY2FscyogYXJlIGFzIGZvciB0aGUgOmNsYXNzOmBTdGFja1N1bW1hcnlgIGNsYXNzLgorCisgICAgICBOb3RlIHRoYXQgd2hlbiBsb2NhbHMgYXJlIGNhcHR1cmVkLCB0aGV5IGFyZSBhbHNvIHNob3duIGluIHRoZSB0cmFjZWJhY2suCisKKyAgIC4uIG1ldGhvZDo6IGZvcm1hdCgqLCBjaGFpbj1UcnVlKQorCisgICAgICBGb3JtYXQgdGhlIGV4Y2VwdGlvbi4KKworICAgICAgSWYgKmNoYWluKiBpcyBub3QgYGBUcnVlYGAsIGBgX19jYXVzZV9fYGAgYW5kIGBgX19jb250ZXh0X19gYCB3aWxsIG5vdAorICAgICAgYmUgZm9ybWF0dGVkLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZSBhbmQKKyAgICAgIHNvbWUgY29udGFpbmluZyBpbnRlcm5hbCBuZXdsaW5lcy4gOmZ1bmM6YH50cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uYAorICAgICAgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZCB3aGljaCBqdXN0IHByaW50cyB0aGUgbGluZXMgdG8gYSBmaWxlLgorCisgICAgICBUaGUgbWVzc2FnZSBpbmRpY2F0aW5nIHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxhc3QKKyAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgorCisgICAuLiBtZXRob2Q6OiAgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCkKKworICAgICAgRm9ybWF0IHRoZSBleGNlcHRpb24gcGFydCBvZiB0aGUgdHJhY2ViYWNrLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZS4KKworICAgICAgTm9ybWFsbHksIHRoZSBnZW5lcmF0b3IgZW1pdHMgYSBzaW5nbGUgc3RyaW5nOyBob3dldmVyLCBmb3IKKyAgICAgIDpleGM6YFN5bnRheEVycm9yYCBleGNlcHRpb25zLCBpdCBlbWl0cyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdoZW4KKyAgICAgIHByaW50ZWQpIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIHN5bnRheAorICAgICAgZXJyb3Igb2NjdXJyZWQuCisKKyAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAorICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisKKworOmNsYXNzOmBTdGFja1N1bW1hcnlgIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCis6Y2xhc3M6YFN0YWNrU3VtbWFyeWAgb2JqZWN0cyByZXByZXNlbnQgYSBjYWxsIHN0YWNrIHJlYWR5IGZvciBmb3JtYXR0aW5nLgorCisuLiBjbGFzczo6IFN0YWNrU3VtbWFyeQorCisgICAuLiBjbGFzc21ldGhvZDo6IGV4dHJhY3QoZnJhbWVfZ2VuLCAqLCBsaW1pdD1Ob25lLCBsb29rdXBfbGluZXM9VHJ1ZSwgY2FwdHVyZV9sb2NhbHM9RmFsc2UpCisKKyAgICAgIENvbnN0cnVjdCBhIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBvYmplY3QgZnJvbSBhIGZyYW1lIGdlbmVyYXRvciAoc3VjaCBhcworICAgICAgaXMgcmV0dXJuZWQgYnkgOmZ1bmM6YH50cmFjZWJhY2sud2Fsa19zdGFja2Agb3IKKyAgICAgIDpmdW5jOmB+dHJhY2ViYWNrLndhbGtfdGJgKS4KKworICAgICAgSWYgKmxpbWl0KiBpcyBzdXBwbGllZCwgb25seSB0aGlzIG1hbnkgZnJhbWVzIGFyZSB0YWtlbiBmcm9tICpmcmFtZV9nZW4qLgorICAgICAgSWYgKmxvb2t1cF9saW5lcyogaXMgYGBGYWxzZWBgLCB0aGUgcmV0dXJuZWQgOmNsYXNzOmBGcmFtZVN1bW1hcnlgCisgICAgICBvYmplY3RzIHdpbGwgbm90IGhhdmUgcmVhZCB0aGVpciBsaW5lcyBpbiB5ZXQsIG1ha2luZyB0aGUgY29zdCBvZgorICAgICAgY3JlYXRpbmcgdGhlIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBjaGVhcGVyICh3aGljaCBtYXkgYmUgdmFsdWFibGUgaWYgaXQKKyAgICAgIG1heSBub3QgYWN0dWFsbHkgZ2V0IGZvcm1hdHRlZCkuIElmICpjYXB0dXJlX2xvY2FscyogaXMgYGBUcnVlYGAgdGhlCisgICAgICBsb2NhbCB2YXJpYWJsZXMgaW4gZWFjaCA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgYXJlIGNhcHR1cmVkIGFzIG9iamVjdAorICAgICAgcmVwcmVzZW50YXRpb25zLgorCisgICAuLiBjbGFzc21ldGhvZDo6IGZyb21fbGlzdChhX2xpc3QpCisKKyAgICAgIENvbnN0cnVjdCBhIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBvYmplY3QgZnJvbSBhIHN1cHBsaWVkIG9sZC1zdHlsZSBsaXN0CisgICAgICBvZiB0dXBsZXMuIEVhY2ggdHVwbGUgc2hvdWxkIGJlIGEgNC10dXBsZSB3aXRoIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsCisgICAgICBsaW5lIGFzIHRoZSBlbGVtZW50cy4KKworCis6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKzpjbGFzczpgRnJhbWVTdW1tYXJ5YCBvYmplY3RzIHJlcHJlc2VudCBhIHNpbmdsZSBmcmFtZSBpbiBhIHRyYWNlYmFjay4KKworLi4gY2xhc3M6OiBGcmFtZVN1bW1hcnkoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbG9va3VwX2xpbmU9VHJ1ZSwgbG9jYWxzPU5vbmUsIGxpbmU9Tm9uZSkKKworICAgUmVwcmVzZW50IGEgc2luZ2xlIGZyYW1lIGluIHRoZSB0cmFjZWJhY2sgb3Igc3RhY2sgdGhhdCBpcyBiZWluZyBmb3JtYXR0ZWQKKyAgIG9yIHByaW50ZWQuIEl0IG1heSBvcHRpb25hbGx5IGhhdmUgYSBzdHJpbmdpZmllZCB2ZXJzaW9uIG9mIHRoZSBmcmFtZXMKKyAgIGxvY2FscyBpbmNsdWRlZCBpbiBpdC4gSWYgKmxvb2t1cF9saW5lKiBpcyBgYEZhbHNlYGAsIHRoZSBzb3VyY2UgY29kZSBpcyBub3QKKyAgIGxvb2tlZCB1cCB1bnRpbCB0aGUgOmNsYXNzOmBGcmFtZVN1bW1hcnlgIGhhcyB0aGUgOmF0dHI6YH5GcmFtZVN1bW1hcnkubGluZWAKKyAgIGF0dHJpYnV0ZSBhY2Nlc3NlZCAod2hpY2ggYWxzbyBoYXBwZW5zIHdoZW4gY2FzdGluZyBpdCB0byBhIHR1cGxlKS4KKyAgIDphdHRyOmB+RnJhbWVTdW1tYXJ5LmxpbmVgIG1heSBiZSBkaXJlY3RseSBwcm92aWRlZCwgYW5kIHdpbGwgcHJldmVudCBsaW5lCisgICBsb29rdXBzIGhhcHBlbmluZyBhdCBhbGwuICpsb2NhbHMqIGlzIGFuIG9wdGlvbmFsIGxvY2FsIHZhcmlhYmxlCisgICBkaWN0aW9uYXJ5LCBhbmQgaWYgc3VwcGxpZWQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZQorICAgc3VtbWFyeSBmb3IgbGF0ZXIgZGlzcGxheS4KIAogLi4gX3RyYWNlYmFjay1leGFtcGxlOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKaW5kZXggYTA0YTQzMi4uMTNjODFhNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdApAQCAtMzYzLDcgKzM2Myw3IEBACiAgICBGaWx0ZXIgb24gdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MuCiAKICAgIFNlZSB0aGUgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAgZnVuY3Rpb24gZm9yIHRoZSBzeW50YXggb2YKLSAgICpmaWxlbmFtZV9wYXR0ZXJuKi4gVGhlIGBgJy5weWMnYGAgYW5kIGBgJy5weW8nYGAgZmlsZSBleHRlbnNpb25zIGFyZQorICAgKmZpbGVuYW1lX3BhdHRlcm4qLiBUaGUgYGAnLnB5YydgYCBmaWxlIGV4dGVuc2lvbiBpcwogICAgcmVwbGFjZWQgd2l0aCBgYCcucHknYGAuCiAKICAgIEV4YW1wbGVzOgpAQCAtMzc0LDYgKzM3NCwxMCBAQAogICAgICA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlCiAgICAqIGBgRmlsdGVyKEZhbHNlLCAiPHVua25vd24+IilgYCBleGNsdWRlcyBlbXB0eSB0cmFjZWJhY2tzCiAKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYCcucHlvJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KKwogICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCiAKICAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZApAQCAtNjMxLDQgKzYzNSwzIEBACiAgICAgICAgICAgICAgIG9iaiA9IE9iamVjdCgpCiAgICAgICAgICAgICBGaWxlICJ0ZXN0LnB5IiwgbGluZSAxMgogICAgICAgICAgICAgICB0YiA9IHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrKGYoKSkKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHVsaXBfY29yby5kaWEgYi9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYQppbmRleCBlY2NmNGZhLi43MGEzM2UzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYQorKysgYi9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLnBuZyBiL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nCmluZGV4IDY1YjY5NTEuLjM2Y2VkOGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nCisrKyBiL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QgYi9Eb2MvbGlicmFyeS90dXJ0bGUucnN0CmluZGV4IGVmZTVjNTQuLjMwZGQ2ZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHVydGxlLnJzdApAQCAtMTg3OSw3ICsxODc5LDcgQEAKIAogICAgICAgPj4+IGN2ID0gc2NyZWVuLmdldGNhbnZhcygpCiAgICAgICA+Pj4gY3YKLSAgICAgIDx0dXJ0bGUuU2Nyb2xsZWRDYW52YXMgb2JqZWN0IGF0IC4uLj4KKyAgICAgIDx0dXJ0bGUuU2Nyb2xsZWRDYW52YXMgb2JqZWN0IC4uLj4KIAogCiAuLiBmdW5jdGlvbjo6IGdldHNoYXBlcygpCkBAIC0yMzUxLDYgKzIzNTEsOSBAQAogfCAgICAgICAgICAgICAgICB8IHBhaXJ3aXNlIGluIG9wcG9zaXRlICAgICAgICAgfCBzaGFwZXNpemUsIHRpbHQsICAgICAgfAogfCAgICAgICAgICAgICAgICB8IGRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICAgfCBnZXRfc2hhcGVwb2x5LCB1cGRhdGUgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBzb3J0aW5nX2FuaW1hdGV8IHZpc3VhbCBkZW1vbnN0cmF0aW9uIG9mICAgICAgfCBzaW1wbGUgYWxpZ25tZW50LCAgICAgfAorfCAgICAgICAgICAgICAgICB8IGRpZmZlcmVudCBzb3J0aW5nIG1ldGhvZHMgICAgfCByYW5kb21pemF0aW9uICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCB0cmVlICAgICAgICAgICB8IGEgKGdyYXBoaWNhbCkgYnJlYWR0aCAgICAgICAgfCA6ZnVuYzpgY2xvbmVgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICB8IGZpcnN0IHRyZWUgKHVzaW5nIGdlbmVyYXRvcnMpfCAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IGFiZGI5MzkuLmViMjc4NDYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTg2LDggKzg2LDE2IEBACiAKIC4uIGRhdGE6OiBHZW5lcmF0b3JUeXBlCiAKLSAgIFRoZSB0eXBlIG9mIDp0ZXJtOmBnZW5lcmF0b3JgLWl0ZXJhdG9yIG9iamVjdHMsIHByb2R1Y2VkIGJ5IGNhbGxpbmcgYQotICAgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorICAgVGhlIHR5cGUgb2YgOnRlcm06YGdlbmVyYXRvcmAtaXRlcmF0b3Igb2JqZWN0cywgY3JlYXRlZCBieQorICAgZ2VuZXJhdG9yIGZ1bmN0aW9ucy4KKworCisuLiBkYXRhOjogQ29yb3V0aW5lVHlwZQorCisgICBUaGUgdHlwZSBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzLCBjcmVhdGVkIGJ5CisgICA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKIC4uIGRhdGE6OiBDb2RlVHlwZQpAQCAtMTE1LDYgKzEyMywxMCBAQAogICAgVGhlIHR5cGUgb2YgOnRlcm06YG1vZHVsZXMgPG1vZHVsZT5gLiBDb25zdHJ1Y3RvciB0YWtlcyB0aGUgbmFtZSBvZiB0aGUKICAgIG1vZHVsZSB0byBiZSBjcmVhdGVkIGFuZCBvcHRpb25hbGx5IGl0cyA6dGVybTpgZG9jc3RyaW5nYC4KIAorICAgLi4gbm90ZTo6CisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIHRvIGNyZWF0ZSBhIG5ldyBtb2R1bGUgaWYgeW91CisgICAgICB3aXNoIHRvIHNldCB0aGUgdmFyaW91cyBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBfX2RvY19fCiAKICAgICAgIFRoZSA6dGVybTpgZG9jc3RyaW5nYCBvZiB0aGUgbW9kdWxlLiBEZWZhdWx0cyB0byBgYE5vbmVgYC4KQEAgLTI2NywzICsyNzksMjUgQEAKICAgIGF0dHJpYnV0ZXMgb24gdGhlIGNsYXNzIHdpdGggdGhlIHNhbWUgbmFtZSAoc2VlIEVudW0gZm9yIGFuIGV4YW1wbGUpLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCitDb3JvdXRpbmUgVXRpbGl0eSBGdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGNvcm91dGluZShnZW5fZnVuYykKKworICAgVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIGEgOnRlcm06YGdlbmVyYXRvcmAgZnVuY3Rpb24gaW50byBhCisgICA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYCB3aGljaCByZXR1cm5zIGEgZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZS4KKyAgIFRoZSBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lIGlzIHN0aWxsIGEgOnRlcm06YGdlbmVyYXRvciBpdGVyYXRvcmAsCisgICBidXQgaXMgYWxzbyBjb25zaWRlcmVkIHRvIGJlIGEgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0IGFuZCBpcworICAgOnRlcm06YGF3YWl0YWJsZWAuICBIb3dldmVyLCBpdCBtYXkgbm90IG5lY2Vzc2FyaWx5IGltcGxlbWVudAorICAgdGhlIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKworICAgSWYgKmdlbl9mdW5jKiBpcyBhIGdlbmVyYXRvciBmdW5jdGlvbiwgaXQgd2lsbCBiZSBtb2RpZmllZCBpbi1wbGFjZS4KKworICAgSWYgKmdlbl9mdW5jKiBpcyBub3QgYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGl0IHdpbGwgYmUgd3JhcHBlZC4gSWYgaXQKKyAgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yYCwgdGhlIGluc3RhbmNlCisgICB3aWxsIGJlIHdyYXBwZWQgaW4gYW4gKmF3YWl0YWJsZSogcHJveHkgb2JqZWN0LiAgQWxsIG90aGVyIHR5cGVzCisgICBvZiBvYmplY3RzIHdpbGwgYmUgcmV0dXJuZWQgYXMgaXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY4NTIzYgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKQEAgLTAsMCArMSw1MjQgQEAKKzptb2Q6YHR5cGluZ2AgLS0tIFN1cHBvcnQgZm9yIHR5cGUgaGludHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogdHlwaW5nCisgICA6c3lub3BzaXM6IFN1cHBvcnQgZm9yIHR5cGUgaGludHMgKHNlZSBQRVAgNDg0KS4KKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvdHlwaW5nLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBzdXBwb3J0cyB0eXBlIGhpbnRzIGFzIHNwZWNpZmllZCBieSA6cGVwOmA0ODRgLiAgVGhlIG1vc3QKK2Z1bmRhbWVudGFsIHN1cHBvcnQgY29uc2lzdHMgb2YgdGhlIHR5cGUgOmNsYXNzOmBBbnlgLCA6Y2xhc3M6YFVuaW9uYCwKKzpjbGFzczpgVHVwbGVgLCA6Y2xhc3M6YENhbGxhYmxlYCwgOmNsYXNzOmBUeXBlVmFyYCwgYW5kCis6Y2xhc3M6YEdlbmVyaWNgLiAgRm9yIGZ1bGwgc3BlY2lmaWNhdGlvbiBwbGVhc2Ugc2VlIDpwZXA6YDQ4NGAuICBGb3IKK2Egc2ltcGxpZmllZCBpbnRyb2R1Y3Rpb24gdG8gdHlwZSBoaW50cyBzZWUgOnBlcDpgNDgzYC4KKworCitUaGUgZnVuY3Rpb24gYmVsb3cgdGFrZXMgYW5kIHJldHVybnMgYSBzdHJpbmcgYW5kIGlzIGFubm90YXRlZCBhcyBmb2xsb3dzOjoKKworICAgZGVmIGdyZWV0aW5nKG5hbWU6IHN0cikgLT4gc3RyOgorICAgICAgIHJldHVybiAnSGVsbG8gJyArIG5hbWUKKworSW4gdGhlIGZ1bmN0aW9uIGBgZ3JlZXRpbmdgYCwgdGhlIGFyZ3VtZW50IGBgbmFtZWBgIGlzIGV4cGVjdGVkIHRvIGJ5IG9mIHR5cGUKKzpjbGFzczpgc3RyYCBhbmQgdGhlIHJldHVybiB0eXBlIDpjbGFzczpgc3RyYC4gU3VidHlwZXMgYXJlIGFjY2VwdGVkIGFzCithcmd1bWVudHMuCisKK1R5cGUgYWxpYXNlcworLS0tLS0tLS0tLS0tCisKK0EgdHlwZSBhbGlhcyBpcyBkZWZpbmVkIGJ5IGFzc2lnbmluZyB0aGUgdHlwZSB0byB0aGUgYWxpYXM6OgorCisgICBWZWN0b3IgPSBMaXN0W2Zsb2F0XQorCitDYWxsYWJsZQorLS0tLS0tLS0KKworRnJhbWV3b3JrcyBleHBlY3RpbmcgY2FsbGJhY2sgZnVuY3Rpb25zIG9mIHNwZWNpZmljIHNpZ25hdHVyZXMgbWlnaHQgYmUKK3R5cGUgaGludGVkIHVzaW5nIGBgQ2FsbGFibGVbW0FyZzFUeXBlLCBBcmcyVHlwZV0sIFJldHVyblR5cGVdYGAuCisKK0ZvciBleGFtcGxlOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCisKKyAgIGRlZiBmZWVkZXIoZ2V0X25leHRfaXRlbTogQ2FsbGFibGVbW10sIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIyBCb2R5CisKKyAgIGRlZiBhc3luY19xdWVyeShvbl9zdWNjZXNzOiBDYWxsYWJsZVtbaW50XSwgTm9uZV0sCisgICAgICAgICAgICAgICAgICAgb25fZXJyb3I6IENhbGxhYmxlW1tpbnQsIEV4Y2VwdGlvbl0sIE5vbmVdKSAtPiBOb25lOgorICAgICAgICMgQm9keQorCitJdCBpcyBwb3NzaWJsZSB0byBkZWNsYXJlIHRoZSByZXR1cm4gdHlwZSBvZiBhIGNhbGxhYmxlIHdpdGhvdXQgc3BlY2lmeWluZwordGhlIGNhbGwgc2lnbmF0dXJlIGJ5IHN1YnN0aXR1dGluZyBhIGxpdGVyYWwgZWxsaXBzaXMKK2ZvciB0aGUgbGlzdCBvZiBhcmd1bWVudHMgaW4gdGhlIHR5cGUgaGludDogYGBDYWxsYWJsZVsuLi4sIFJldHVyblR5cGVdYGAuCitgYE5vbmVgYCBhcyBhIHR5cGUgaGludCBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgaXMgcmVwbGFjZWQgYnkgYGB0eXBlKE5vbmUpYGAuCisKK0dlbmVyaWNzCistLS0tLS0tLQorCitTaW5jZSB0eXBlIGluZm9ybWF0aW9uIGFib3V0IG9iamVjdHMga2VwdCBpbiBjb250YWluZXJzIGNhbm5vdCBiZSBzdGF0aWNhbGx5CitpbmZlcnJlZCBpbiBhIGdlbmVyaWMgd2F5LCBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaGF2ZSBiZWVuIGV4dGVuZGVkIHRvIHN1cHBvcnQKK3N1YnNjcmlwdGlvbiB0byBkZW5vdGUgZXhwZWN0ZWQgdHlwZXMgZm9yIGNvbnRhaW5lciBlbGVtZW50cy4KKworOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcsIFNlcXVlbmNlCisKKyAgIGRlZiBub3RpZnlfYnlfZW1haWwoZW1wbG95ZWVzOiBTZXF1ZW5jZVtFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlczogTWFwcGluZ1tzdHIsIHN0cl0pIC0+IE5vbmU6IC4uLgorCitHZW5lcmljcyBjYW4gYmUgcGFyYW1ldHJpemVkIGJ5IHVzaW5nIGEgbmV3IGZhY3RvcnkgYXZhaWxhYmxlIGluIHR5cGluZworY2FsbGVkIDpjbGFzczpgVHlwZVZhcmAuCisKKzo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZSwgVHlwZVZhcgorCisgICBUID0gVHlwZVZhcignVCcpICAgICAgIyBEZWNsYXJlIHR5cGUgdmFyaWFibGUKKworICAgZGVmIGZpcnN0KGw6IFNlcXVlbmNlW1RdKSAtPiBUOiAgICMgR2VuZXJpYyBmdW5jdGlvbgorICAgICAgIHJldHVybiBsWzBdCisKKworVXNlci1kZWZpbmVkIGdlbmVyaWMgdHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgdXNlci1kZWZpbmVkIGNsYXNzIGNhbiBiZSBkZWZpbmVkIGFzIGEgZ2VuZXJpYyBjbGFzcy4KKworOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMKKyAgIGZyb20gbG9nZ2luZyBpbXBvcnQgTG9nZ2VyCisKKyAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgY2xhc3MgTG9nZ2VkVmFyKEdlbmVyaWNbVF0pOgorICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZTogVCwgbmFtZTogc3RyLCBsb2dnZXI6IExvZ2dlcikgLT4gTm9uZToKKyAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgICAgIGRlZiBzZXQoc2VsZiwgbmV3OiBUKSAtPiBOb25lOgorICAgICAgICAgICBzZWxmLmxvZygnU2V0ICcgKyByZXByKHNlbGYudmFsdWUpKQorICAgICAgICAgICBzZWxmLnZhbHVlID0gbmV3CisKKyAgICAgICBkZWYgZ2V0KHNlbGYpIC0+IFQ6CisgICAgICAgICAgIHNlbGYubG9nKCdHZXQgJyArIHJlcHIoc2VsZi52YWx1ZSkpCisgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKyAgICAgICBkZWYgbG9nKHNlbGYsIG1lc3NhZ2U6IHN0cikgLT4gTm9uZToKKyAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygne306IHt9Jy5mb3JtYXQoc2VsZi5uYW1lLCBtZXNzYWdlKSkKKworYGBHZW5lcmljW1RdYGAgYXMgYSBiYXNlIGNsYXNzIGRlZmluZXMgdGhhdCB0aGUgY2xhc3MgYGBMb2dnZWRWYXJgYCB0YWtlcyBhCitzaW5nbGUgdHlwZSBwYXJhbWV0ZXIgYGBUYGAgLiBUaGlzIGFsc28gbWFrZXMgYGBUYGAgdmFsaWQgYXMgYSB0eXBlIHdpdGhpbiB0aGUKK2NsYXNzIGJvZHkuCisKK1RoZSA6Y2xhc3M6YEdlbmVyaWNgIGJhc2UgY2xhc3MgdXNlcyBhIG1ldGFjbGFzcyB0aGF0IGRlZmluZXMKKzptZXRoOmBfX2dldGl0ZW1fX2Agc28gdGhhdCBgYExvZ2dlZFZhclt0XWBgIGlzIHZhbGlkIGFzIGEgdHlwZTo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorCisgICBkZWYgemVyb19hbGxfdmFycyh2YXJzOiBJdGVyYWJsZVtMb2dnZWRWYXJbaW50XV0pIC0+IE5vbmU6CisgICAgICAgZm9yIHZhciBpbiB2YXJzOgorICAgICAgICAgICB2YXIuc2V0KDApCisKK0EgZ2VuZXJpYyB0eXBlIGNhbiBoYXZlIGFueSBudW1iZXIgb2YgdHlwZSB2YXJpYWJsZXMsIGFuZCB0eXBlIHZhcmlhYmxlcyBtYXkKK2JlIGNvbnN0cmFpbmVkOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMKKyAgIC4uLgorCisgICBUID0gVHlwZVZhcignVCcpCisgICBTID0gVHlwZVZhcignUycsIGludCwgc3RyKQorCisgICBjbGFzcyBTdHJhbmdlUGFpcihHZW5lcmljW1QsIFNdKToKKyAgICAgICAuLi4KKworRWFjaCB0eXBlIHZhcmlhYmxlIGFyZ3VtZW50IHRvIDpjbGFzczpgR2VuZXJpY2AgbXVzdCBiZSBkaXN0aW5jdC4KK1RoaXMgaXMgdGh1cyBpbnZhbGlkOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMKKyAgIC4uLgorCisgICBUID0gVHlwZVZhcignVCcpCisKKyAgIGNsYXNzIFBhaXIoR2VuZXJpY1tULCBUXSk6ICAgIyBJTlZBTElECisgICAgICAgLi4uCisKK1lvdSBjYW4gdXNlIG11bHRpcGxlIGluaGVyaXRhbmNlIHdpdGggOmNsYXNzOmBHZW5lcmljYDo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyLCBHZW5lcmljLCBTaXplZAorCisgICBUID0gVHlwZVZhcignVCcpCisKKyAgIGNsYXNzIExpbmtlZExpc3QoU2l6ZWQsIEdlbmVyaWNbVF0pOgorICAgICAgIC4uLgorCitXaGVuIGluaGVyaXRpbmcgZnJvbSBnZW5lcmljIGNsYXNzZXMsIHNvbWUgdHlwZSB2YXJpYWJsZXMgY291bGQgZml4ZWQ6OgorCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIE1hcHBpbmcKKworICAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgIGNsYXNzIE15RGljdChNYXBwaW5nW3N0ciwgVF0pOgorICAgICAgICAuLi4KKworSW4gdGhpcyBjYXNlIGBgTXlEaWN0YGAgaGFzIGEgc2luZ2xlIHBhcmFtZXRlciwgYGBUYGAuCisKK1N1YmNsYXNzaW5nIGEgZ2VuZXJpYyBjbGFzcyB3aXRob3V0IHNwZWNpZnlpbmcgdHlwZSBwYXJhbWV0ZXJzIGFzc3VtZXMKKzpjbGFzczpgQW55YCBmb3IgZWFjaCBwb3NpdGlvbi4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBgYE15SXRlcmFibGVgYCBpcworbm90IGdlbmVyaWMgYnV0IGltcGxpY2l0bHkgaW5oZXJpdHMgZnJvbSBgYEl0ZXJhYmxlW0FueV1gYDo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorCisgICBjbGFzcyBNeUl0ZXJhYmxlKEl0ZXJhYmxlKTogIyBTYW1lIGFzIEl0ZXJhYmxlW0FueV0KKworVGhlIG1ldGFjbGFzcyB1c2VkIGJ5IDpjbGFzczpgR2VuZXJpY2AgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGFiYy5BQkNNZXRhYC4KK0EgZ2VuZXJpYyBjbGFzcyBjYW4gYmUgYW4gQUJDIGJ5IGluY2x1ZGluZyBhYnN0cmFjdCBtZXRob2RzIG9yIHByb3BlcnRpZXMsCithbmQgZ2VuZXJpYyBjbGFzc2VzIGNhbiBhbHNvIGhhdmUgQUJDcyBhcyBiYXNlIGNsYXNzZXMgd2l0aG91dCBhIG1ldGFjbGFzcworY29uZmxpY3QuICBHZW5lcmljIG1ldGFjbGFzc2VzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisKK1RoZSA6Y2xhc3M6YEFueWAgdHlwZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Egc3BlY2lhbCBraW5kIG9mIHR5cGUgaXMgOmNsYXNzOmBBbnlgLiBFdmVyeSB0eXBlIGlzIGEgc3VidHlwZSBvZgorOmNsYXNzOmBBbnlgLiBUaGlzIGlzIGFsc28gdHJ1ZSBmb3IgdGhlIGJ1aWx0aW4gdHlwZSBvYmplY3QuIEhvd2V2ZXIsIHRvIHRoZQorc3RhdGljIHR5cGUgY2hlY2tlciB0aGVzZSBhcmUgY29tcGxldGVseSBkaWZmZXJlbnQuCisKK1doZW4gdGhlIHR5cGUgb2YgYSB2YWx1ZSBpcyA6Y2xhc3M6YG9iamVjdGAsIHRoZSB0eXBlIGNoZWNrZXIgd2lsbCByZWplY3QKK2FsbW9zdCBhbGwgb3BlcmF0aW9ucyBvbiBpdCwgYW5kIGFzc2lnbmluZyBpdCB0byBhIHZhcmlhYmxlIChvciB1c2luZyBpdCBhcyBhCityZXR1cm4gdmFsdWUpIG9mIGEgbW9yZSBzcGVjaWFsaXplZCB0eXBlIGlzIGEgdHlwZSBlcnJvci4gT24gdGhlIG90aGVyIGhhbmQsCit3aGVuIGEgdmFsdWUgaGFzIHR5cGUgOmNsYXNzOmBBbnlgLCB0aGUgdHlwZSBjaGVja2VyIHdpbGwgYWxsb3cgYWxsIG9wZXJhdGlvbnMKK29uIGl0LCBhbmQgYSB2YWx1ZSBvZiB0eXBlIDpjbGFzczpgQW55YCBjYW4gYmUgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSAob3IgdXNlZAorYXMgYSByZXR1cm4gdmFsdWUpIG9mIGEgbW9yZSBjb25zdHJhaW5lZCB0eXBlLgorCisKK0NsYXNzZXMsIGZ1bmN0aW9ucywgYW5kIGRlY29yYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlcywgZnVuY3Rpb25zIGFuZCBkZWNvcmF0b3JzOgorCisuLiBjbGFzczo6IEFueQorCisgICBTcGVjaWFsIHR5cGUgaW5kaWNhdGluZyBhbiB1bmNvbnN0cmFpbmVkIHR5cGUuCisKKyAgICogQW55IG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEFueWAuCisgICAqIEFueSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgQW55YC4KKyAgICogQXMgYSBzcGVjaWFsIGNhc2UsIDpjbGFzczpgQW55YCBhbmQgOmNsYXNzOmBvYmplY3RgIGFyZSBzdWJjbGFzc2VzIG9mCisgICAgIGVhY2ggb3RoZXIuCisKKy4uIGNsYXNzOjogVHlwZVZhcgorCisgICAgVHlwZSB2YXJpYWJsZS4KKworICAgIFVzYWdlOjoKKworICAgICAgVCA9IFR5cGVWYXIoJ1QnKSAgIyBDYW4gYmUgYW55dGhpbmcKKyAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykgICMgTXVzdCBiZSBzdHIgb3IgYnl0ZXMKKworICAgIFR5cGUgdmFyaWFibGVzIGV4aXN0IHByaW1hcmlseSBmb3IgdGhlIGJlbmVmaXQgb2Ygc3RhdGljIHR5cGUKKyAgICBjaGVja2Vycy4gIFRoZXkgc2VydmUgYXMgdGhlIHBhcmFtZXRlcnMgZm9yIGdlbmVyaWMgdHlwZXMgYXMgd2VsbAorICAgIGFzIGZvciBnZW5lcmljIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgU2VlIGNsYXNzIEdlbmVyaWMgZm9yIG1vcmUKKyAgICBpbmZvcm1hdGlvbiBvbiBnZW5lcmljIHR5cGVzLiAgR2VuZXJpYyBmdW5jdGlvbnMgd29yayBhcyBmb2xsb3dzOjoKKworICAgICAgIGRlZiByZXBlYXQoeDogVCwgbjogaW50KSAtPiBTZXF1ZW5jZVtUXToKKyAgICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIG4gcmVmZXJlbmNlcyB0byB4LiIiIgorICAgICAgICAgICByZXR1cm4gW3hdKm4KKworICAgICAgIGRlZiBsb25nZXN0KHg6IEEsIHk6IEEpIC0+IEE6CisgICAgICAgICAgICIiIlJldHVybiB0aGUgbG9uZ2VzdCBvZiB0d28gc3RyaW5ncy4iIiIKKyAgICAgICAgICAgcmV0dXJuIHggaWYgbGVuKHgpID49IGxlbih5KSBlbHNlIHkKKworICAgIFRoZSBsYXR0ZXIgZXhhbXBsZSdzIHNpZ25hdHVyZSBpcyBlc3NlbnRpYWxseSB0aGUgb3ZlcmxvYWRpbmcKKyAgICBvZiBgYChzdHIsIHN0cikgLT4gc3RyYGAgYW5kIGBgKGJ5dGVzLCBieXRlcykgLT4gYnl0ZXNgYC4gIEFsc28gbm90ZQorICAgIHRoYXQgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW5zdGFuY2VzIG9mIHNvbWUgc3ViY2xhc3Mgb2YgOmNsYXNzOmBzdHJgLAorICAgIHRoZSByZXR1cm4gdHlwZSBpcyBzdGlsbCBwbGFpbiA6Y2xhc3M6YHN0cmAuCisKKyAgICBBdCBydW50aW1lLCBgYGlzaW5zdGFuY2UoeCwgVClgYCB3aWxsIHJhaXNlIDpleGM6YFR5cGVFcnJvcmAuICBJbiBnZW5lcmFsLAorICAgIDpmdW5jOmBpc2luc3RhbmNlYCBhbmQgOmZ1bmM6YGlzc3ViY2xhc3NgIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHR5cGVzLgorCisgICAgVHlwZSB2YXJpYWJsZXMgbWF5IGJlIG1hcmtlZCBjb3ZhcmlhbnQgb3IgY29udHJhdmFyaWFudCBieSBwYXNzaW5nCisgICAgYGBjb3ZhcmlhbnQ9VHJ1ZWBgIG9yIGBgY29udHJhdmFyaWFudD1UcnVlYGAuICBTZWUgOnBlcDpgNDg0YCBmb3IgbW9yZQorICAgIGRldGFpbHMuICBCeSBkZWZhdWx0IHR5cGUgdmFyaWFibGVzIGFyZSBpbnZhcmlhbnQuICBBbHRlcm5hdGl2ZWx5LAorICAgIGEgdHlwZSB2YXJpYWJsZSBtYXkgc3BlY2lmeSBhbiB1cHBlciBib3VuZCB1c2luZyBgYGJvdW5kPTx0eXBlPmBgLgorICAgIFRoaXMgbWVhbnMgdGhhdCBhbiBhY3R1YWwgdHlwZSBzdWJzdGl0dXRlZCAoZXhwbGljaXRseSBvciBpbXBsaWNpdGx5KQorICAgIGZvciB0aGUgdHlwZSB2YXJpYWJsZSBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgdGhlIGJvdW5kYXJ5IHR5cGUsCisgICAgc2VlIDpwZXA6YDQ4NGAuCisKKy4uIGNsYXNzOjogVW5pb24KKworICAgVW5pb24gdHlwZTsgYGBVbmlvbltYLCBZXWBgIG1lYW5zIGVpdGhlciBYIG9yIFkuCisKKyAgIFRvIGRlZmluZSBhIHVuaW9uLCB1c2UgZS5nLiBgYFVuaW9uW2ludCwgc3RyXWBgLiAgRGV0YWlsczoKKworICAgKiBUaGUgYXJndW1lbnRzIG11c3QgYmUgdHlwZXMgYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lLgorCisgICAqIFVuaW9ucyBvZiB1bmlvbnMgYXJlIGZsYXR0ZW5lZCwgZS5nLjo6CisKKyAgICAgICBVbmlvbltVbmlvbltpbnQsIHN0cl0sIGZsb2F0XSA9PSBVbmlvbltpbnQsIHN0ciwgZmxvYXRdCisKKyAgICogVW5pb25zIG9mIGEgc2luZ2xlIGFyZ3VtZW50IHZhbmlzaCwgZS5nLjo6CisKKyAgICAgICBVbmlvbltpbnRdID09IGludCAgIyBUaGUgY29uc3RydWN0b3IgYWN0dWFsbHkgcmV0dXJucyBpbnQKKworICAgKiBSZWR1bmRhbnQgYXJndW1lbnRzIGFyZSBza2lwcGVkLCBlLmcuOjoKKworICAgICAgIFVuaW9uW2ludCwgc3RyLCBpbnRdID09IFVuaW9uW2ludCwgc3RyXQorCisgICAqIFdoZW4gY29tcGFyaW5nIHVuaW9ucywgdGhlIGFyZ3VtZW50IG9yZGVyIGlzIGlnbm9yZWQsIGUuZy46OgorCisgICAgICAgVW5pb25baW50LCBzdHJdID09IFVuaW9uW3N0ciwgaW50XQorCisgICAqIElmIDpjbGFzczpgQW55YCBpcyBwcmVzZW50IGl0IGlzIHRoZSBzb2xlIHN1cnZpdm9yLCBlLmcuOjoKKworICAgICAgIFVuaW9uW2ludCwgQW55XSA9PSBBbnkKKworICAgKiBZb3UgY2Fubm90IHN1YmNsYXNzIG9yIGluc3RhbnRpYXRlIGEgdW5pb24uCisKKyAgICogWW91IGNhbm5vdCB3cml0ZSBgYFVuaW9uW1hdW1ldYGAuCisKKyAgICogWW91IGNhbiB1c2UgYGBPcHRpb25hbFtYXWBgIGFzIGEgc2hvcnRoYW5kIGZvciBgYFVuaW9uW1gsIE5vbmVdYGAuCisKKy4uIGNsYXNzOjogT3B0aW9uYWwKKworICAgT3B0aW9uYWwgdHlwZS4KKworICAgYGBPcHRpb25hbFtYXWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBVbmlvbltYLCB0eXBlKE5vbmUpXWBgLgorCisuLiBjbGFzczo6IFR1cGxlCisKKyAgVHVwbGUgdHlwZTsgYGBUdXBsZVtYLCBZXWBgIGlzIHRoZSBpcyB0aGUgdHlwZSBvZiBhIHR1cGxlIG9mIHR3byBpdGVtcworICB3aXRoIHRoZSBmaXJzdCBpdGVtIG9mIHR5cGUgWCBhbmQgdGhlIHNlY29uZCBvZiB0eXBlIFkuCisKKyAgRXhhbXBsZTogYGBUdXBsZVtUMSwgVDJdYGAgaXMgYSB0dXBsZSBvZiB0d28gZWxlbWVudHMgY29ycmVzcG9uZGluZworICB0byB0eXBlIHZhcmlhYmxlcyBUMSBhbmQgVDIuICBgYFR1cGxlW2ludCwgZmxvYXQsIHN0cl1gYCBpcyBhIHR1cGxlCisgIG9mIGFuIGludCwgYSBmbG9hdCBhbmQgYSBzdHJpbmcuCisKKyAgVG8gc3BlY2lmeSBhIHZhcmlhYmxlLWxlbmd0aCB0dXBsZSBvZiBob21vZ2VuZW91cyB0eXBlLAorICB1c2UgbGl0ZXJhbCBlbGxpcHNpcywgZS5nLiBgYFR1cGxlW2ludCwgLi4uXWBgLgorCisuLiBjbGFzczo6IENhbGxhYmxlCisKKyAgIENhbGxhYmxlIHR5cGU7IGBgQ2FsbGFibGVbW2ludF0sIHN0cl1gYCBpcyBhIGZ1bmN0aW9uIG9mIChpbnQpIC0+IHN0ci4KKworICAgVGhlIHN1YnNjcmlwdGlvbiBzeW50YXggbXVzdCBhbHdheXMgYmUgdXNlZCB3aXRoIGV4YWN0bHkgdHdvCisgICB2YWx1ZXM6IHRoZSBhcmd1bWVudCBsaXN0IGFuZCB0aGUgcmV0dXJuIHR5cGUuICBUaGUgYXJndW1lbnQgbGlzdAorICAgbXVzdCBiZSBhIGxpc3Qgb2YgdHlwZXM7IHRoZSByZXR1cm4gdHlwZSBtdXN0IGJlIGEgc2luZ2xlIHR5cGUuCisKKyAgIFRoZXJlIGlzIG5vIHN5bnRheCB0byBpbmRpY2F0ZSBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cywKKyAgIHN1Y2ggZnVuY3Rpb24gdHlwZXMgYXJlIHJhcmVseSB1c2VkIGFzIGNhbGxiYWNrIHR5cGVzLgorICAgYGBDYWxsYWJsZVsuLi4sIFJldHVyblR5cGVdYGAgY291bGQgYmUgdXNlZCB0byB0eXBlIGhpbnQgYSBjYWxsYWJsZQorICAgdGFraW5nIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5pbmcgYGBSZXR1cm5UeXBlYGAuCisgICBBIHBsYWluIDpjbGFzczpgQ2FsbGFibGVgIGlzIGVxdWl2YWxlbnQgdG8gYGBDYWxsYWJsZVsuLi4sIEFueV1gYC4KKworLi4gY2xhc3M6OiBHZW5lcmljCisKKyAgIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGdlbmVyaWMgdHlwZXMuCisKKyAgIEEgZ2VuZXJpYyB0eXBlIGlzIHR5cGljYWxseSBkZWNsYXJlZCBieSBpbmhlcml0aW5nIGZyb20gYW4KKyAgIGluc3RhbnRpYXRpb24gb2YgdGhpcyBjbGFzcyB3aXRoIG9uZSBvciBtb3JlIHR5cGUgdmFyaWFibGVzLgorICAgRm9yIGV4YW1wbGUsIGEgZ2VuZXJpYyBtYXBwaW5nIHR5cGUgbWlnaHQgYmUgZGVmaW5lZCBhczo6CisKKyAgICAgIGNsYXNzIE1hcHBpbmcoR2VuZXJpY1tLVCwgVlRdKToKKyAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBLVCkgLT4gVlQ6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAjIEV0Yy4KKworICAgVGhpcyBjbGFzcyBjYW4gdGhlbiBiZSB1c2VkIGFzIGZvbGxvd3M6OgorCisgICAgICBYID0gVHlwZVZhcignWCcpCisgICAgICBZID0gVHlwZVZhcignWScpCisKKyAgICAgIGRlZiBsb29rdXBfbmFtZShtYXBwaW5nOiBNYXBwaW5nW1gsIFldLCBrZXk6IFgsIGRlZmF1bHQ6IFkpIC0+IFk6CisgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICByZXR1cm4gbWFwcGluZ1trZXldCisgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisuLiBjbGFzczo6IEl0ZXJhYmxlKEdlbmVyaWNbVF9jb10pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuSXRlcmFibGVgLgorCisuLiBjbGFzczo6IEl0ZXJhdG9yKEl0ZXJhYmxlW1RfY29dKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgdGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yYC4KKworLi4gY2xhc3M6OiBTdXBwb3J0c0ludAorCisgICAgQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBgYF9faW50X19gYC4KKworLi4gY2xhc3M6OiBTdXBwb3J0c0Zsb2F0CisKKyAgICBBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIGBgX19mbG9hdF9fYGAuCisKKy4uIGNsYXNzOjogU3VwcG9ydHNBYnMKKworICAgIEFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgYGBfX2Fic19fYGAgdGhhdCBpcyBjb3ZhcmlhbnQKKyAgICBpbiBpdHMgcmV0dXJuIHR5cGUuCisKKy4uIGNsYXNzOjogU3VwcG9ydHNSb3VuZAorCisgICAgQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBgYF9fcm91bmRfX2BgCisgICAgdGhhdCBpcyBjb3ZhcmlhbnQgaW4gaXRzIHJldHVybiB0eXBlLgorCisuLiBjbGFzczo6IFJldmVyc2libGUKKworICAgIEFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgYGBfX3JldmVyc2VkX19gYCByZXR1cm5pbmcKKyAgICBhbiBgYEl0ZXJhdG9yW1RfY29dYGAuCisKKy4uIGNsYXNzOjogQ29udGFpbmVyKEdlbmVyaWNbVF9jb10pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Db250YWluZXJgLgorCisuLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YC4KKworLi4gY2xhc3M6OiBNdXRhYmxlU2V0KEFic3RyYWN0U2V0W1RdKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNldGAuCisKKy4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLgorCisuLiBjbGFzczo6IE11dGFibGVNYXBwaW5nKE1hcHBpbmdbS1QsIFZUXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYC4KKworLi4gY2xhc3M6OiBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYC4KKworLi4gY2xhc3M6OiBNdXRhYmxlU2VxdWVuY2UoU2VxdWVuY2VbVF0pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAuCisKKy4uIGNsYXNzOjogQnl0ZVN0cmluZyhTZXF1ZW5jZVtpbnRdKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5CeXRlU3RyaW5nYC4KKworICAgVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIHR5cGVzIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAsCisgICBhbmQgOmNsYXNzOmBtZW1vcnl2aWV3YC4KKworICAgQXMgYSBzaG9ydGhhbmQgZm9yIHRoaXMgdHlwZSwgOmNsYXNzOmBieXRlc2AgY2FuIGJlIHVzZWQgdG8KKyAgIGFubm90YXRlIGFyZ3VtZW50cyBvZiBhbnkgb2YgdGhlIHR5cGVzIG1lbnRpb25lZCBhYm92ZS4KKworLi4gY2xhc3M6OiBMaXN0KGxpc3QsIE11dGFibGVTZXF1ZW5jZVtUXSkKKworICAgR2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgbGlzdGAuCisgICBVc2VmdWwgZm9yIGFubm90YXRpbmcgcmV0dXJuIHR5cGVzLiBUbyBhbm5vdGF0ZSBhcmd1bWVudHMgaXQgaXMgcHJlZmVycmVkCisgICB0byB1c2UgYWJzdHJhY3QgY29sbGVjdGlvbiB0eXBlcyBzdWNoIGFzIDpjbGFzczpgTWFwcGluZ2AsIDpjbGFzczpgU2VxdWVuY2VgLAorICAgb3IgOmNsYXNzOmBBYnN0cmFjdFNldGAuCisKKyAgIFRoaXMgdHlwZSBtYXkgYmUgdXNlZCBhcyBmb2xsb3dzOjoKKworICAgICAgVCA9IFR5cGVWYXIoJ1QnLCBpbnQsIGZsb2F0KQorCisgICAgICBkZWYgdmVjMih4OiBULCB5OiBUKSAtPiBMaXN0W1RdOgorICAgICAgICAgIHJldHVybiBbeCwgeV0KKworICAgICAgZGVmIHNsaWNlX190b180KHZlY3RvcjogU2VxdWVuY2VbVF0pIC0+IExpc3RbVF06CisgICAgICAgICAgcmV0dXJuIHZlY3RvclswOjRdCisKKy4uIGNsYXNzOjogQWJzdHJhY3RTZXQoc2V0LCBNdXRhYmxlU2V0W1RdKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXRgLgorCisuLiBjbGFzczo6IE1hcHBpbmdWaWV3KFNpemVkLCBJdGVyYWJsZVtUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ1ZpZXdgLgorCisuLiBjbGFzczo6IEtleXNWaWV3KE1hcHBpbmdWaWV3W0tUX2NvXSwgQWJzdHJhY3RTZXRbS1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5LZXlzVmlld2AuCisKKy4uIGNsYXNzOjogSXRlbXNWaWV3KE1hcHBpbmdWaWV3LCBHZW5lcmljW0tUX2NvLCBWVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkl0ZW1zVmlld2AuCisKKy4uIGNsYXNzOjogVmFsdWVzVmlldyhNYXBwaW5nVmlld1tWVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlZhbHVlc1ZpZXdgLgorCisuLiBjbGFzczo6IERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBkaWN0YC4KKyAgIFRoZSB1c2FnZSBvZiB0aGlzIHR5cGUgaXMgYXMgZm9sbG93czo6CisKKyAgICAgIGRlZiBnZXRfcG9zaXRpb25faW5faW5kZXgod29yZF9saXN0OiBEaWN0W3N0ciwgaW50XSwgd29yZDogc3RyKSAtPiBpbnQ6CisgICAgICAgICAgcmV0dXJuIHdvcmRfbGlzdFt3b3JkXQorCisuLiBjbGFzczo6IEdlbmVyYXRvcihJdGVyYXRvcltUX2NvXSwgR2VuZXJpY1tUX2NvLCBUX2NvbnRyYSwgVl9jb10pCisKKy4uIGNsYXNzOjogaW8KKworICAgV3JhcHBlciBuYW1lc3BhY2UgZm9yIEkvTyBzdHJlYW0gdHlwZXMuCisKKyAgIFRoaXMgZGVmaW5lcyB0aGUgZ2VuZXJpYyB0eXBlIGBgSU9bQW55U3RyXWBgIGFuZCBhbGlhc2VzIGBgVGV4dElPYGAKKyAgIGFuZCBgYEJpbmFyeUlPYGAgZm9yIHJlc3BlY3RpdmVseSBgYElPW3N0cl1gYCBhbmQgYGBJT1tieXRlc11gYC4KKyAgIFRoZXNlIHJlcHJlc2VudGluZyB0aGUgdHlwZXMgb2YgSS9PIHN0cmVhbXMgc3VjaCBhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YG9wZW5gLgorCisuLiBjbGFzczo6IHJlCisKKyAgIFdyYXBwZXIgbmFtZXNwYWNlIGZvciByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdHlwZXMuCisKKyAgIFRoaXMgZGVmaW5lcyB0aGUgdHlwZSBhbGlhc2VzIGBgUGF0dGVybmBgIGFuZCBgYE1hdGNoYGAgd2hpY2gKKyAgIGNvcnJlc3BvbmQgdG8gdGhlIHJldHVybiB0eXBlcyBmcm9tIDpmdW5jOmByZS5jb21waWxlYCBhbmQKKyAgIDpmdW5jOmByZS5tYXRjaGAuICBUaGVzZSB0eXBlcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucykKKyAgIGFyZSBnZW5lcmljIGluIGBgQW55U3RyYGAgYW5kIGNhbiBiZSBtYWRlIHNwZWNpZmljIGJ5IHdyaXRpbmcKKyAgIGBgUGF0dGVybltzdHJdYGAsIGBgUGF0dGVybltieXRlc11gYCwgYGBNYXRjaFtzdHJdYGAsIG9yCisgICBgYE1hdGNoW2J5dGVzXWBgLgorCisuLiBmdW5jdGlvbjo6IE5hbWVkVHVwbGUodHlwZW5hbWUsIGZpZWxkcykKKworICAgVHlwZWQgdmVyc2lvbiBvZiBuYW1lZHR1cGxlLgorCisgICBVc2FnZTo6CisKKyAgICAgICBFbXBsb3llZSA9IHR5cGluZy5OYW1lZFR1cGxlKCdFbXBsb3llZScsIFsoJ25hbWUnLCBzdHIpLCAnaWQnLCBpbnQpXSkKKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIEVtcGxveWVlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnRW1wbG95ZWUnLCBbJ25hbWUnLCAnaWQnXSkKKworICAgVGhlIHJlc3VsdGluZyBjbGFzcyBoYXMgb25lIGV4dHJhIGF0dHJpYnV0ZTogX2ZpZWxkX3R5cGVzLAorICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcworICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgQVBJLikKKworLi4gZnVuY3Rpb246OiBjYXN0KHR5cCwgdmFsKQorCisgICBDYXN0IGEgdmFsdWUgdG8gYSB0eXBlLgorCisgICBUaGlzIHJldHVybnMgdGhlIHZhbHVlIHVuY2hhbmdlZC4gIFRvIHRoZSB0eXBlIGNoZWNrZXIgdGhpcworICAgc2lnbmFscyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBkZXNpZ25hdGVkIHR5cGUsIGJ1dCBhdAorICAgcnVudGltZSB3ZSBpbnRlbnRpb25hbGx5IGRvbid0IGNoZWNrIGFueXRoaW5nICh3ZSB3YW50IHRoaXMKKyAgIHRvIGJlIGFzIGZhc3QgYXMgcG9zc2libGUpLgorCisuLiBmdW5jdGlvbjo6IGdldF90eXBlX2hpbnRzKG9iaikKKworICAgUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKworICAgVGhpcyBpcyBvZnRlbiB0aGUgc2FtZSBhcyBgYG9iai5fX2Fubm90YXRpb25zX19gYCwgYnV0IGl0IGhhbmRsZXMKKyAgIGZvcndhcmQgcmVmZXJlbmNlcyBlbmNvZGVkIGFzIHN0cmluZyBsaXRlcmFscywgYW5kIGlmIG5lY2Vzc2FyeQorICAgYWRkcyBgYE9wdGlvbmFsW3RdYGAgaWYgYSBkZWZhdWx0IHZhbHVlIGVxdWFsIHRvIE5vbmUgaXMgc2V0LgorCisuLiBkZWNvcmF0b3I6OiBub190eXBlX2NoZWNrKGFyZykKKworICAgRGVjb3JhdG9yIHRvIGluZGljYXRlIHRoYXQgYW5ub3RhdGlvbnMgYXJlIG5vdCB0eXBlIGhpbnRzLgorCisgICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNsYXNzIG9yIGZ1bmN0aW9uOyBpZiBpdCBpcyBhIGNsYXNzLCBpdAorICAgYXBwbGllcyByZWN1cnNpdmVseSB0byBhbGwgbWV0aG9kcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MgKGJ1dCBub3QKKyAgIHRvIG1ldGhvZHMgZGVmaW5lZCBpbiBpdHMgc3VwZXJjbGFzc2VzIG9yIHN1YmNsYXNzZXMpLgorCisgICBUaGlzIG11dGF0ZXMgdGhlIGZ1bmN0aW9uKHMpIGluIHBsYWNlLgorCisuLiBkZWNvcmF0b3I6OiBub190eXBlX2NoZWNrX2RlY29yYXRvcihkZWNvcmF0b3IpCisKKyAgIERlY29yYXRvciB0byBnaXZlIGFub3RoZXIgZGVjb3JhdG9yIHRoZSA6ZnVuYzpgbm9fdHlwZV9jaGVja2AgZWZmZWN0LgorCisgICBUaGlzIHdyYXBzIHRoZSBkZWNvcmF0b3Igd2l0aCBzb21ldGhpbmcgdGhhdCB3cmFwcyB0aGUgZGVjb3JhdGVkCisgICBmdW5jdGlvbiBpbiA6ZnVuYzpgbm9fdHlwZV9jaGVja2AuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggM2IzZDNhMC4uMTQzMGQ5YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTUsOCArMTUsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMy4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTE2Niw2ICsxNjYsNiBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMy4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjMuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAppbmRleCA0OGVlZmU5Li4xYjI3MWM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMTk4LDcgKzE5OCw3IEBACiB0aGUgKm5ld19jYWxsYWJsZSogYXJndW1lbnQgdG8gOmZ1bmM6YHBhdGNoYC4KIAogCi0uLiBjbGFzczo6IE1vY2soc3BlYz1Ob25lLCBzaWRlX2VmZmVjdD1Ob25lLCByZXR1cm5fdmFsdWU9REVGQVVMVCwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKy4uIGNsYXNzOjogTW9jayhzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MpCiAKICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBNb2NrYCBvYmplY3QuIDpjbGFzczpgTW9ja2AgdGFrZXMgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMKICAgICB0aGF0IHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgTW9jayBvYmplY3Q6CkBAIC0yMzUsNiArMjM1LDEyIEBACiAgICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQogICAgICAgOmF0dHI6YHJldHVybl92YWx1ZWAgYXR0cmlidXRlLgogCisgICAgKiAqdW5zYWZlKjogQnkgZGVmYXVsdCBpZiBhbnkgYXR0cmlidXRlIHN0YXJ0cyB3aXRoICphc3NlcnQqIG9yCisgICAgICAqYXNzcmV0KiB3aWxsIHJhaXNlIGFuIDpleGM6YEF0dHJpYnV0ZUVycm9yYC4gUGFzc2luZyBgYHVuc2FmZT1UcnVlYGAKKyAgICAgIHdpbGwgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIGF0dHJpYnV0ZXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAgKiAqd3JhcHMqOiBJdGVtIGZvciB0aGUgbW9jayBvYmplY3QgdG8gd3JhcC4gSWYgKndyYXBzKiBpcyBub3QgTm9uZSB0aGVuCiAgICAgICBjYWxsaW5nIHRoZSBNb2NrIHdpbGwgcGFzcyB0aGUgY2FsbCB0aHJvdWdoIHRvIHRoZSB3cmFwcGVkIG9iamVjdAogICAgICAgKHJldHVybmluZyB0aGUgcmVhbCByZXN1bHQpLiBBdHRyaWJ1dGUgYWNjZXNzIG9uIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGEKQEAgLTMxNSw2ICszMjEsMjAgQEAKICAgICAgICAgICAgID4+PiBjYWxscyA9IFtjYWxsKDQpLCBjYWxsKDIpLCBjYWxsKDMpXQogICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPVRydWUpCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoZSBtb2NrIHdhcyBuZXZlciBjYWxsZWQuCisKKyAgICAgICAgICAgID4+PiBtID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICA+Pj4gb2JqID0gbS5oZWxsbygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdoZWxsbycgdG8gbm90IGhhdmUgYmVlbiBjYWxsZWQuIENhbGxlZCAxIHRpbWVzLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKICAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKIApAQCAtMTAzMiw2ICsxMDUyLDEyIEBACiAgICAgZGVmYXVsdCBiZWNhdXNlIGl0IGNhbiBiZSBkYW5nZXJvdXMuIFdpdGggaXQgc3dpdGNoZWQgb24geW91IGNhbiB3cml0ZQogICAgIHBhc3NpbmcgdGVzdHMgYWdhaW5zdCBBUElzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QhCiAKKyAgICAuLiBub3RlOjoKKworICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgICBJZiB5b3UgYXJlIHBhdGNoaW5nIGJ1aWx0aW5zIGluIGEgbW9kdWxlIHRoZW4geW91IGRvbid0CisgICAgICAgICAgIG5lZWQgdG8gcGFzcyBgYGNyZWF0ZT1UcnVlYGAsIGl0IHdpbGwgYmUgYWRkZWQgYnkgZGVmYXVsdC4KKwogICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgOmNsYXNzOmBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQogICAgIGRlY29yYXRpbmcgZWFjaCB0ZXN0IG1ldGhvZCBpbiB0aGUgY2xhc3MuIFRoaXMgcmVkdWNlcyB0aGUgYm9pbGVycGxhdGUKICAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gOmZ1bmM6YHBhdGNoYCBmaW5kcwpAQCAtMTQwMyw2ICsxNDI5LDIyIEBACiAgICAgU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIE9ubHkgc3RvcHMgcGF0Y2hlcyBzdGFydGVkIHdpdGggYGBzdGFydGBgLgogCiAKKy4uIF9wYXRjaC1idWlsdGluczoKKworcGF0Y2ggYnVpbHRpbnMKK35+fn5+fn5+fn5+fn5+CitZb3UgY2FuIHBhdGNoIGFueSBidWlsdGlucyB3aXRoaW4gYSBtb2R1bGUuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBwYXRjaGVzCitidWlsdGluIDpmdW5jOmBvcmRgOgorCisgICAgPj4+IEBwYXRjaCgnX19tYWluX18ub3JkJykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19vcmQpOgorICAgIC4uLiAgICAgbW9ja19vcmQucmV0dXJuX3ZhbHVlID0gMTAxCisgICAgLi4uICAgICBwcmludChvcmQoJ2MnKSkKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisgICAgMTAxCisKKwogVEVTVF9QUkVGSVgKIH5+fn5+fn5+fn5+CiAKQEAgLTE1ODcsNyArMTYyOSw3IEBACiAqIENvbnRleHQgbWFuYWdlcjogYGBfX2VudGVyX19gYCBhbmQgYGBfX2V4aXRfX2BgCiAqIFVuYXJ5IG51bWVyaWMgbWV0aG9kczogYGBfX25lZ19fYGAsIGBgX19wb3NfX2BgIGFuZCBgYF9faW52ZXJ0X19gYAogKiBUaGUgbnVtZXJpYyBtZXRob2RzIChpbmNsdWRpbmcgcmlnaHQgaGFuZCBhbmQgaW4tcGxhY2UgdmFyaWFudHMpOgotICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fZGl2X19gYCwgYGBfX3RydWVkaXZfX2BgLAorICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fbWF0bXVsX19gYCwgYGBfX2Rpdl9fYGAsIGBgX190cnVlZGl2X19gYCwKICAgYGBfX2Zsb29yZGl2X19gYCwgYGBfX21vZF9fYGAsIGBgX19kaXZtb2RfX2BgLCBgYF9fbHNoaWZ0X19gYCwKICAgYGBfX3JzaGlmdF9fYGAsIGBgX19hbmRfX2BgLCBgYF9feG9yX19gYCwgYGBfX29yX19gYCwgYW5kIGBgX19wb3dfX2BgCiAqIE51bWVyaWMgY29udmVyc2lvbiBtZXRob2RzOiBgYF9fY29tcGxleF9fYGAsIGBgX19pbnRfX2BgLCBgYF9fZmxvYXRfX2BgCkBAIC0yMDA2LDcgKzIwNDgsNyBAQAogICAgICAgVGhlIG1vY2sgb2YgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGAgY2hhbmdlZCB0byBjb25zdW1lICpyZWFkX2RhdGEqIHJhdGhlcgogICAgICAgdGhhbiByZXR1cm5pbmcgaXQgb24gZWFjaCBjYWxsLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC40CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgKnJlYWRfZGF0YSogaXMgbm93IHJlc2V0IG9uIGVhY2ggY2FsbCB0byB0aGUgKm1vY2sqLgogCiBVc2luZyA6ZnVuYzpgb3BlbmAgYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgYSBncmVhdCB3YXkgdG8gZW5zdXJlIHlvdXIgZmlsZSBoYW5kbGVzCkBAIC0yMDIzLDcgKzIwNjUsNyBAQAogZW5vdWdoIHRoYXQgYSBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsLgogCiAgICAgPj4+IG0gPSBtb2NrX29wZW4oKQotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSwgY3JlYXRlPVRydWUpOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSk6CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycsICd3JykgYXMgaDoKICAgICAuLi4gICAgICAgICBoLndyaXRlKCdzb21lIHN0dWZmJykKICAgICAuLi4KQEAgLTIwMzgsNyArMjA4MCw3IEBACiAKIEFuZCBmb3IgcmVhZGluZyBmaWxlczoKIAotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJyksIGNyZWF0ZT1UcnVlKSBhcyBtOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJykpIGFzIG06CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6CiAgICAgLi4uICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKICAgICAuLi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCAxOTMwZjc4Li5kM2EzNjQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC0yMTQsOSArMjE0LDE2IEBACiAKICAgIFN0b3AgdGhlIHRlc3QgcnVuIG9uIHRoZSBmaXJzdCBlcnJvciBvciBmYWlsdXJlLgogCisuLiBjbWRvcHRpb246OiAtLWxvY2FscworCisgICBTaG93IGxvY2FsIHZhcmlhYmxlcyBpbiB0cmFjZWJhY2tzLgorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgIFRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBgYC1iYGAsIGBgLWNgYCBhbmQgYGAtZmBgIHdlcmUgYWRkZWQuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgVGhlIGNvbW1hbmQtbGluZSBvcHRpb24gYGAtLWxvY2Fsc2BgLgorCiBUaGUgY29tbWFuZCBsaW5lIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRlc3QgZGlzY292ZXJ5LCBmb3IgcnVubmluZyBhbGwgb2YgdGhlCiB0ZXN0cyBpbiBhIHByb2plY3Qgb3IganVzdCBhIHN1YnNldC4KIApAQCAtMTU0MSw2ICsxNTQ4LDIwIEBACiAgICA6ZGF0YTpgdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXJgLiAgVXNpbmcgYSBzdWJjbGFzcyBvciBpbnN0YW5jZSwgaG93ZXZlciwKICAgIGFsbG93cyBjdXN0b21pemF0aW9uIG9mIHNvbWUgY29uZmlndXJhYmxlIHByb3BlcnRpZXMuCiAKKyAgIDpjbGFzczpgVGVzdExvYWRlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcnJvcnMKKworICAgICAgQSBsaXN0IG9mIHRoZSBub24tZmF0YWwgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIGxvYWRpbmcgdGVzdHMuIE5vdCByZXNldAorICAgICAgYnkgdGhlIGxvYWRlciBhdCBhbnkgcG9pbnQuIEZhdGFsIGVycm9ycyBhcmUgc2lnbmFsbGVkIGJ5IHRoZSByZWxldmFudAorICAgICAgYSBtZXRob2QgcmFpc2luZyBhbiBleGNlcHRpb24gdG8gdGhlIGNhbGxlci4gTm9uLWZhdGFsIGVycm9ycyBhcmUgYWxzbworICAgICAgaW5kaWNhdGVkIGJ5IGEgc3ludGhldGljIHRlc3QgdGhhdCB3aWxsIHJhaXNlIHRoZSBvcmlnaW5hbCBlcnJvciB3aGVuCisgICAgICBydW4uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKICAgIDpjbGFzczpgVGVzdExvYWRlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogCkBAIC0xNTU2LDcgKzE1NzcsNyBAQAogICAgICAgY2FzZSBpcyBjcmVhdGVkIGZvciB0aGF0IG1ldGhvZCBpbnN0ZWFkLgogCiAKLSAgIC4uIG1ldGhvZDo6IGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKQorICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49Tm9uZSkKIAogICAgICAgUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiB0aGUgZ2l2ZW4gbW9kdWxlLiBUaGlzCiAgICAgICBtZXRob2Qgc2VhcmNoZXMgKm1vZHVsZSogZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tIDpjbGFzczpgVGVzdENhc2VgIGFuZApAQCAtMTU3MywxMSArMTU5NCwxOCBAQAogCiAgICAgICBJZiBhIG1vZHVsZSBwcm92aWRlcyBhIGBgbG9hZF90ZXN0c2BgIGZ1bmN0aW9uIGl0IHdpbGwgYmUgY2FsbGVkIHRvCiAgICAgICBsb2FkIHRoZSB0ZXN0cy4gVGhpcyBhbGxvd3MgbW9kdWxlcyB0byBjdXN0b21pemUgdGVzdCBsb2FkaW5nLgotICAgICAgVGhpcyBpcyB0aGUgYGxvYWRfdGVzdHMgcHJvdG9jb2xgXy4KKyAgICAgIFRoaXMgaXMgdGhlIGBsb2FkX3Rlc3RzIHByb3RvY29sYF8uICBUaGUgKnBhdHRlcm4qIGFyZ3VtZW50IGlzIHBhc3NlZCBhcworICAgICAgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIGBgbG9hZF90ZXN0c2BgLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgICAgU3VwcG9ydCBmb3IgYGBsb2FkX3Rlc3RzYGAgYWRkZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBUaGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsICp1c2VfbG9hZF90ZXN0cyogZGVmYXVsdCBhcmd1bWVudCBpcworICAgICAgICAgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCwgYWx0aG91Z2ggaXQgaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIGJhY2t3YXJkCisgICAgICAgICBjb21wYXRpYmlsaXR5LiAgVGhlIG1ldGhvZCBhbHNvIG5vdyBhY2NlcHRzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgICAgICAgICAqcGF0dGVybiogd2hpY2ggaXMgcGFzc2VkIHRvIGBgbG9hZF90ZXN0c2BgIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4KKwogCiAgICAuLiBtZXRob2Q6OiBsb2FkVGVzdHNGcm9tTmFtZShuYW1lLCBtb2R1bGU9Tm9uZSkKIApAQCAtMTYwMyw2ICsxNjMxLDEyIEBACiAKICAgICAgIFRoZSBtZXRob2Qgb3B0aW9uYWxseSByZXNvbHZlcyAqbmFtZSogcmVsYXRpdmUgdG8gdGhlIGdpdmVuICptb2R1bGUqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIG9yIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvY2N1cnMgd2hpbGUgdHJhdmVyc2luZworICAgICAgKm5hbWUqIHRoZW4gYSBzeW50aGV0aWMgdGVzdCB0aGF0IHJhaXNlcyB0aGF0IGVycm9yIHdoZW4gcnVuIHdpbGwgYmUKKyAgICAgIHJldHVybmVkLiBUaGVzZSBlcnJvcnMgYXJlIGluY2x1ZGVkIGluIHRoZSBlcnJvcnMgYWNjdW11bGF0ZWQgYnkKKyAgICAgIHNlbGYuZXJyb3JzLgorCiAKICAgIC4uIG1ldGhvZDo6IGxvYWRUZXN0c0Zyb21OYW1lcyhuYW1lcywgbW9kdWxlPU5vbmUpCiAKQEAgLTE2MjksMTggKzE2NjMsMjIgQEAKICAgICAgIHRoZSBzdGFydCBkaXJlY3RvcnkgaXMgbm90IHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IHRoZW4gdGhlIHRvcCBsZXZlbAogICAgICAgZGlyZWN0b3J5IG11c3QgYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkuCiAKLSAgICAgIElmIGltcG9ydGluZyBhIG1vZHVsZSBmYWlscywgZm9yIGV4YW1wbGUgZHVlIHRvIGEgc3ludGF4IGVycm9yLCB0aGVuIHRoaXMKLSAgICAgIHdpbGwgYmUgcmVjb3JkZWQgYXMgYSBzaW5nbGUgZXJyb3IgYW5kIGRpc2NvdmVyeSB3aWxsIGNvbnRpbnVlLiAgSWYgdGhlCi0gICAgICBpbXBvcnQgZmFpbHVyZSBpcyBkdWUgdG8gOmV4YzpgU2tpcFRlc3RgIGJlaW5nIHJhaXNlZCwgaXQgd2lsbCBiZSByZWNvcmRlZAotICAgICAgYXMgYSBza2lwIGluc3RlYWQgb2YgYW4gZXJyb3IuCisgICAgICBJZiBpbXBvcnRpbmcgYSBtb2R1bGUgZmFpbHMsIGZvciBleGFtcGxlIGR1ZSB0byBhIHN5bnRheCBlcnJvciwgdGhlbgorICAgICAgdGhpcyB3aWxsIGJlIHJlY29yZGVkIGFzIGEgc2luZ2xlIGVycm9yIGFuZCBkaXNjb3Zlcnkgd2lsbCBjb250aW51ZS4gIElmCisgICAgICB0aGUgaW1wb3J0IGZhaWx1cmUgaXMgZHVlIHRvIDpleGM6YFNraXBUZXN0YCBiZWluZyByYWlzZWQsIGl0IHdpbGwgYmUKKyAgICAgIHJlY29yZGVkIGFzIGEgc2tpcCBpbnN0ZWFkIG9mIGFuIGVycm9yLgogCi0gICAgICBJZiBhIHRlc3QgcGFja2FnZSBuYW1lIChkaXJlY3Rvcnkgd2l0aCA6ZmlsZTpgX19pbml0X18ucHlgKSBtYXRjaGVzIHRoZQotICAgICAgcGF0dGVybiB0aGVuIHRoZSBwYWNrYWdlIHdpbGwgYmUgY2hlY2tlZCBmb3IgYSBgYGxvYWRfdGVzdHNgYAotICAgICAgZnVuY3Rpb24uIElmIHRoaXMgZXhpc3RzIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCAqbG9hZGVyKiwgKnRlc3RzKiwKLSAgICAgICpwYXR0ZXJuKi4KKyAgICAgIElmIGEgcGFja2FnZSAoYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIGZpbGUgbmFtZWQgOmZpbGU6YF9faW5pdF9fLnB5YCkgaXMKKyAgICAgIGZvdW5kLCB0aGUgcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZm9yIGEgYGBsb2FkX3Rlc3RzYGAgZnVuY3Rpb24uIElmIHRoaXMKKyAgICAgIGV4aXN0cyB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkCisgICAgICBgYHBhY2thZ2UubG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKWBgLiBUZXN0IGRpc2NvdmVyeSB0YWtlcyBjYXJlCisgICAgICB0byBlbnN1cmUgdGhhdCBhIHBhY2thZ2UgaXMgb25seSBjaGVja2VkIGZvciB0ZXN0cyBvbmNlIGR1cmluZyBhbgorICAgICAgaW52b2NhdGlvbiwgZXZlbiBpZiB0aGUgbG9hZF90ZXN0cyBmdW5jdGlvbiBpdHNlbGYgY2FsbHMKKyAgICAgIGBgbG9hZGVyLmRpc2NvdmVyYGAuCiAKLSAgICAgIElmIGBgbG9hZF90ZXN0c2BgIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICpub3QqIHJlY3Vyc2UgaW50byB0aGUgcGFja2FnZSwKLSAgICAgIGBgbG9hZF90ZXN0c2BgIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIGFsbCB0ZXN0cyBpbiB0aGUgcGFja2FnZS4KKyAgICAgIElmIGBgbG9hZF90ZXN0c2BgIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICpub3QqIHJlY3Vyc2UgaW50byB0aGUKKyAgICAgIHBhY2thZ2UsIGBgbG9hZF90ZXN0c2BgIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIGFsbCB0ZXN0cyBpbiB0aGUKKyAgICAgIHBhY2thZ2UuCiAKICAgICAgIFRoZSBwYXR0ZXJuIGlzIGRlbGliZXJhdGVseSBub3Qgc3RvcmVkIGFzIGEgbG9hZGVyIGF0dHJpYnV0ZSBzbyB0aGF0CiAgICAgICBwYWNrYWdlcyBjYW4gY29udGludWUgZGlzY292ZXJ5IHRoZW1zZWx2ZXMuICp0b3BfbGV2ZWxfZGlyKiBpcyBzdG9yZWQgc28KQEAgLTE2NTksNiArMTY5NywxMSBAQAogICAgICAgICAgICB0aGUgc2FtZSBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtJ3Mgb3JkZXJpbmcgaXMgbm90CiAgICAgICAgICAgIGRlcGVuZGVudCBvbiBmaWxlIG5hbWUuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBGb3VuZCBwYWNrYWdlcyBhcmUgbm93IGNoZWNrZWQgZm9yIGBgbG9hZF90ZXN0c2BgIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgIHdoZXRoZXIgdGhlaXIgcGF0aCBtYXRjaGVzICpwYXR0ZXJuKiwgYmVjYXVzZSBpdCBpcyBpbXBvc3NpYmxlIGZvcgorICAgICAgICAgYSBwYWNrYWdlIG5hbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgcGF0dGVybi4KKwogCiAgICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgb2YgYSA6Y2xhc3M6YFRlc3RMb2FkZXJgIGNhbiBiZSBjb25maWd1cmVkIGVpdGhlciBieQogICAgc3ViY2xhc3Npbmcgb3IgYXNzaWdubWVudCBvbiBhbiBpbnN0YW5jZToKQEAgLTE3NDEsMTIgKzE3ODQsMTAgQEAKIAogICAgICAgU2V0IHRvIGBgVHJ1ZWBgIHdoZW4gdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0cyBzaG91bGQgc3RvcCBieSA6bWV0aDpgc3RvcGAuCiAKLQogICAgLi4gYXR0cmlidXRlOjogdGVzdHNSdW4KIAogICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiB0ZXN0cyBydW4gc28gZmFyLgogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IGJ1ZmZlcgogCiAgICAgICBJZiBzZXQgdG8gdHJ1ZSwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIHdpbGwgYmUgYnVmZmVyZWQgaW4gYmV0d2VlbgpAQCAtMTc1Niw3ICsxNzk3LDYgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLQogICAgLi4gYXR0cmlidXRlOjogZmFpbGZhc3QKIAogICAgICAgSWYgc2V0IHRvIHRydWUgOm1ldGg6YHN0b3BgIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBmaXJzdCBmYWlsdXJlIG9yIGVycm9yLApAQCAtMTc2NCw2ICsxODA0LDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBhdHRyaWJ1dGU6OiB0Yl9sb2NhbHMKKworICAgICAgSWYgc2V0IHRvIHRydWUgdGhlbiBsb2NhbCB2YXJpYWJsZXMgd2lsbCBiZSBzaG93biBpbiB0cmFjZWJhY2tzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogICAgLi4gbWV0aG9kOjogd2FzU3VjY2Vzc2Z1bCgpCiAKQEAgLTE3NzQsNyArMTgxOSw2IEBACiAgICAgICAgICBSZXR1cm5zIGBgRmFsc2VgYCBpZiB0aGVyZSB3ZXJlIGFueSA6YXR0cjpgdW5leHBlY3RlZFN1Y2Nlc3Nlc2AKICAgICAgICAgIGZyb20gdGVzdHMgbWFya2VkIHdpdGggdGhlIDpmdW5jOmBleHBlY3RlZEZhaWx1cmVgIGRlY29yYXRvci4KIAotCiAgICAuLiBtZXRob2Q6OiBzdG9wKCkKIAogICAgICAgVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCB0byBzaWduYWwgdGhhdCB0aGUgc2V0IG9mIHRlc3RzIGJlaW5nIHJ1biBzaG91bGQKQEAgLTE5MDYsMTIgKzE5NTAsMTQgQEAKIAogCiAuLiBjbGFzczo6IFRleHRUZXN0UnVubmVyKHN0cmVhbT1Ob25lLCBkZXNjcmlwdGlvbnM9VHJ1ZSwgdmVyYm9zaXR5PTEsIGZhaWxmYXN0PUZhbHNlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPUZhbHNlLCByZXN1bHRjbGFzcz1Ob25lLCB3YXJuaW5ncz1Ob25lLCAqLCB0Yl9sb2NhbHM9RmFsc2UpCiAKICAgIEEgYmFzaWMgdGVzdCBydW5uZXIgaW1wbGVtZW50YXRpb24gdGhhdCBvdXRwdXRzIHJlc3VsdHMgdG8gYSBzdHJlYW0uIElmICpzdHJlYW0qCiAgICBpcyBgYE5vbmVgYCwgdGhlIGRlZmF1bHQsIDpkYXRhOmBzeXMuc3RkZXJyYCBpcyB1c2VkIGFzIHRoZSBvdXRwdXQgc3RyZWFtLiBUaGlzIGNsYXNzCiAgICBoYXMgYSBmZXcgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMsIGJ1dCBpcyBlc3NlbnRpYWxseSB2ZXJ5IHNpbXBsZS4gIEdyYXBoaWNhbAotICAgYXBwbGljYXRpb25zIHdoaWNoIHJ1biB0ZXN0IHN1aXRlcyBzaG91bGQgcHJvdmlkZSBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb25zLgorICAgYXBwbGljYXRpb25zIHdoaWNoIHJ1biB0ZXN0IHN1aXRlcyBzaG91bGQgcHJvdmlkZSBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb25zLiBTdWNoCisgICBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGFjY2VwdCBgYCoqa3dhcmdzYGAgYXMgdGhlIGludGVyZmFjZSB0byBjb25zdHJ1Y3QgcnVubmVycworICAgY2hhbmdlcyB3aGVuIGZlYXR1cmVzIGFyZSBhZGRlZCB0byB1bml0dGVzdC4KIAogICAgQnkgZGVmYXVsdCB0aGlzIHJ1bm5lciBzaG93cyA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLAogICAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AsIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kCkBAIC0xOTMwLDYgKzE5NzYsOSBAQAogICAgICAgVGhlIGRlZmF1bHQgc3RyZWFtIGlzIHNldCB0byA6ZGF0YTpgc3lzLnN0ZGVycmAgYXQgaW5zdGFudGlhdGlvbiB0aW1lIHJhdGhlcgogICAgICAgdGhhbiBpbXBvcnQgdGltZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSB0Yl9sb2NhbHMgcGFyYW1ldGVyLgorCiAgICAuLiBtZXRob2Q6OiBfbWFrZVJlc3VsdCgpCiAKICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGluc3RhbmNlIG9mIGBgVGVzdFJlc3VsdGBgIHVzZWQgYnkgOm1ldGg6YHJ1bmAuCkBAIC0yMDI3LDcgKzIwNzYsMTAgQEAKIElmIGEgdGVzdCBtb2R1bGUgZGVmaW5lcyBgYGxvYWRfdGVzdHNgYCBpdCB3aWxsIGJlIGNhbGxlZCBieQogOm1ldGg6YFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZWAgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czo6CiAKLSAgICBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIE5vbmUpCisgICAgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBwYXR0ZXJuKQorCit3aGVyZSAqcGF0dGVybiogaXMgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggZnJvbSBgYGxvYWRUZXN0c0Zyb21Nb2R1bGVgYC4gIEl0CitkZWZhdWx0cyB0byBgYE5vbmVgYC4KIAogSXQgc2hvdWxkIHJldHVybiBhIDpjbGFzczpgVGVzdFN1aXRlYC4KIApAQCAtMjA0OSwyMSArMjEwMSwxMiBAQAogICAgICAgICAgICAgc3VpdGUuYWRkVGVzdHModGVzdHMpCiAgICAgICAgIHJldHVybiBzdWl0ZQogCi1JZiBkaXNjb3ZlcnkgaXMgc3RhcnRlZCwgZWl0aGVyIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciBieSBjYWxsaW5nCi06bWV0aDpgVGVzdExvYWRlci5kaXNjb3ZlcmAsIHdpdGggYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhIHBhY2thZ2UKLW5hbWUgdGhlbiB0aGUgcGFja2FnZSA6ZmlsZTpgX19pbml0X18ucHlgIHdpbGwgYmUgY2hlY2tlZCBmb3IgYGBsb2FkX3Rlc3RzYGAuCi0KLS4uIG5vdGU6OgotCi0gICBUaGUgZGVmYXVsdCBwYXR0ZXJuIGlzIGBgJ3Rlc3QqLnB5J2BgLiBUaGlzIG1hdGNoZXMgYWxsIFB5dGhvbiBmaWxlcwotICAgdGhhdCBzdGFydCB3aXRoIGBgJ3Rlc3QnYGAgYnV0ICp3b24ndCogbWF0Y2ggYW55IHRlc3QgZGlyZWN0b3JpZXMuCi0KLSAgIEEgcGF0dGVybiBsaWtlIGBgJ3Rlc3QqJ2BgIHdpbGwgbWF0Y2ggdGVzdCBwYWNrYWdlcyBhcyB3ZWxsIGFzCi0gICBtb2R1bGVzLgotCi1JZiB0aGUgcGFja2FnZSA6ZmlsZTpgX19pbml0X18ucHlgIGRlZmluZXMgYGBsb2FkX3Rlc3RzYGAgdGhlbiBpdCB3aWxsIGJlCi1jYWxsZWQgYW5kIGRpc2NvdmVyeSBub3QgY29udGludWVkIGludG8gdGhlIHBhY2thZ2UuIGBgbG9hZF90ZXN0c2BgCi1pcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czo6CitJZiBkaXNjb3ZlcnkgaXMgc3RhcnRlZCBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgcGFja2FnZSwgZWl0aGVyIGZyb20gdGhlCitjb21tYW5kIGxpbmUgb3IgYnkgY2FsbGluZyA6bWV0aDpgVGVzdExvYWRlci5kaXNjb3ZlcmAsIHRoZW4gdGhlIHBhY2thZ2UKKzpmaWxlOmBfX2luaXRfXy5weWAgd2lsbCBiZSBjaGVja2VkIGZvciBgYGxvYWRfdGVzdHNgYC4gIElmIHRoYXQgZnVuY3Rpb24gZG9lcworbm90IGV4aXN0LCBkaXNjb3Zlcnkgd2lsbCByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UgYXMgdGhvdWdoIGl0IHdlcmUganVzdAorYW5vdGhlciBkaXJlY3RvcnkuICBPdGhlcndpc2UsIGRpc2NvdmVyeSBvZiB0aGUgcGFja2FnZSdzIHRlc3RzIHdpbGwgYmUgbGVmdCB1cAordG8gYGBsb2FkX3Rlc3RzYGAgd2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6OgogCiAgICAgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBwYXR0ZXJuKQogCkBAIC0yMDgyLDYgKzIxMjUsMTEgQEAKICAgICAgICAgc3RhbmRhcmRfdGVzdHMuYWRkVGVzdHMocGFja2FnZV90ZXN0cykKICAgICAgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBEaXNjb3Zlcnkgbm8gbG9uZ2VyIGNoZWNrcyBwYWNrYWdlIG5hbWVzIGZvciBtYXRjaGluZyAqcGF0dGVybiogZHVlIHRvIHRoZQorICAgaW1wb3NzaWJpbGl0eSBvZiBwYWNrYWdlIG5hbWVzIG1hdGNoaW5nIHRoZSBkZWZhdWx0IHBhdHRlcm4uCisKKwogCiBDbGFzcyBhbmQgTW9kdWxlIEZpeHR1cmVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAppbmRleCBmYmJhYmNhLi40MDA5OGQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKQEAgLTI3MCw2ICsyNzAsMTEgQEAKICAgIDpmdW5jOmB1cmx1bnNwbGl0YCwgcmVtb3ZpbmcgcG9zc2libGUgKnNjaGVtZSogYW5kICpuZXRsb2MqIHBhcnRzLgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgIEJlaGF2aW91ciB1cGRhdGVkIHRvIG1hdGNoIHRoZSBzZW1hbnRpY3MgZGVmaW5lZCBpbiA6cmZjOmAzOTg2YC4KKworCiAuLiBmdW5jdGlvbjo6IHVybGRlZnJhZyh1cmwpCiAKICAgIElmICp1cmwqIGNvbnRhaW5zIGEgZnJhZ21lbnQgaWRlbnRpZmllciwgcmV0dXJuIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiAqdXJsKgpAQCAtNTE2LDcgKzUyMSw4IEBACiAgICBFeGFtcGxlOiBgYHVucXVvdGVfdG9fYnl0ZXMoJ2ElMjYlRUYnKWBgIHlpZWxkcyBgYGInYSZceGVmJ2BgLgogCiAKLS4uIGZ1bmN0aW9uOjogdXJsZW5jb2RlKHF1ZXJ5LCBkb3NlcT1GYWxzZSwgc2FmZT0nJywgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCisuLiBmdW5jdGlvbjo6IHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1Ob25lLCBxdW90ZV92aWE9cXVvdGVfcGx1cykKIAogICAgQ29udmVydCBhIG1hcHBpbmcgb2JqZWN0IG9yIGEgc2VxdWVuY2Ugb2YgdHdvLWVsZW1lbnQgdHVwbGVzLCB3aGljaCBtYXkKICAgIGNvbnRhaW4gOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMsIHRvIGEgInBlcmNlbnQtZW5jb2RlZCIKQEAgLTUyNSw4ICs1MzEsMTYgQEAKICAgIHByb3Blcmx5IGVuY29kZWQgdG8gYnl0ZXMsIG90aGVyd2lzZSBpdCB3b3VsZCByZXN1bHQgaW4gYSA6ZXhjOmBUeXBlRXJyb3JgLgogCiAgICBUaGUgcmVzdWx0aW5nIHN0cmluZyBpcyBhIHNlcmllcyBvZiBgYGtleT12YWx1ZWBgIHBhaXJzIHNlcGFyYXRlZCBieSBgYCcmJ2BgCi0gICBjaGFyYWN0ZXJzLCB3aGVyZSBib3RoICprZXkqIGFuZCAqdmFsdWUqIGFyZSBxdW90ZWQgdXNpbmcgOmZ1bmM6YHF1b3RlX3BsdXNgCi0gICBhYm92ZS4gV2hlbiBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcyBpcyB1c2VkIGFzIHRoZSAqcXVlcnkqCisgICBjaGFyYWN0ZXJzLCB3aGVyZSBib3RoICprZXkqIGFuZCAqdmFsdWUqIGFyZSBxdW90ZWQgdXNpbmcgdGhlICpxdW90ZV92aWEqCisgICBmdW5jdGlvbi4gIEJ5IGRlZmF1bHQsIDpmdW5jOmBxdW90ZV9wbHVzYCBpcyB1c2VkIHRvIHF1b3RlIHRoZSB2YWx1ZXMsIHdoaWNoCisgICBtZWFucyBzcGFjZXMgYXJlIHF1b3RlZCBhcyBhIGBgJysnYGAgY2hhcmFjdGVyIGFuZCAnLycgY2hhcmFjdGVycyBhcmUKKyAgIGVuY29kZWQgYXMgYGAlMkZgYCwgd2hpY2ggZm9sbG93cyB0aGUgc3RhbmRhcmQgZm9yIEdFVCByZXF1ZXN0cworICAgKGBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYGApLiAgQW4gYWx0ZXJuYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGJlCisgICBwYXNzZWQgYXMgKnF1b3RlX3ZpYSogaXMgOmZ1bmM6YHF1b3RlYCwgd2hpY2ggd2lsbCBlbmNvZGUgc3BhY2VzIGFzIGBgJTIwYGAKKyAgIGFuZCBub3QgZW5jb2RlICcvJyBjaGFyYWN0ZXJzLiAgRm9yIG1heGltdW0gY29udHJvbCBvZiB3aGF0IGlzIHF1b3RlZCwgdXNlCisgICBgYHF1b3RlYGAgYW5kIHNwZWNpZnkgYSB2YWx1ZSBmb3IgKnNhZmUqLgorCisgICBXaGVuIGEgc2VxdWVuY2Ugb2YgdHdvLWVsZW1lbnQgdHVwbGVzIGlzIHVzZWQgYXMgdGhlICpxdWVyeSoKICAgIGFyZ3VtZW50LCB0aGUgZmlyc3QgZWxlbWVudCBvZiBlYWNoIHR1cGxlIGlzIGEga2V5IGFuZCB0aGUgc2Vjb25kIGlzIGEKICAgIHZhbHVlLiBUaGUgdmFsdWUgZWxlbWVudCBpbiBpdHNlbGYgY2FuIGJlIGEgc2VxdWVuY2UgYW5kIGluIHRoYXQgY2FzZSwgaWYKICAgIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgKmRvc2VxKiBpcyBldmFsdWF0ZXMgdG8gKlRydWUqLCBpbmRpdmlkdWFsCkBAIC01MzUsNyArNTQ5LDcgQEAKICAgIHN0cmluZyB3aWxsIG1hdGNoIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXIgdHVwbGVzIGluIHRoZSBzZXF1ZW5jZS4KIAogICAgVGhlICpzYWZlKiwgKmVuY29kaW5nKiwgYW5kICplcnJvcnMqIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBkb3duIHRvCi0gICA6ZnVuYzpgcXVvdGVfcGx1c2AgKHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzIGFyZSBvbmx5IHBhc3NlZAorICAgKnF1b3RlX3ZpYSogKHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzIGFyZSBvbmx5IHBhc3NlZAogICAgd2hlbiBhIHF1ZXJ5IGVsZW1lbnQgaXMgYSA6Y2xhc3M6YHN0cmApLgogCiAgICBUbyByZXZlcnNlIHRoaXMgZW5jb2RpbmcgcHJvY2VzcywgOmZ1bmM6YHBhcnNlX3FzYCBhbmQgOmZ1bmM6YHBhcnNlX3FzbGAgYXJlCkBAIC01NDcsNiArNTYxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBRdWVyeSBwYXJhbWV0ZXIgc3VwcG9ydHMgYnl0ZXMgYW5kIHN0cmluZyBvYmplY3RzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgICpxdW90ZV92aWEqIHBhcmFtZXRlci4KKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IDc1Yjk1ZDkuLjM0OWJhNzAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTExNSw2ICsxMTUsNyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMwogICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KIAorCiAuLiBmdW5jdGlvbjo6IGluc3RhbGxfb3BlbmVyKG9wZW5lcikKIAogICAgSW5zdGFsbCBhbiA6Y2xhc3M6YE9wZW5lckRpcmVjdG9yYCBpbnN0YW5jZSBhcyB0aGUgZGVmYXVsdCBnbG9iYWwgb3BlbmVyLgpAQCAtMjg3LDEzICsyODgsMzcgQEAKICAgIGZpdHMuCiAKIAorLi4gY2xhc3M6OiBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoKCkKKworICAgQSB2YXJpYW50IG9mIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbWAgdGhhdCBhbHNvIGhhcyBhCisgICBkYXRhYmFzZSBvZiBgYHVyaSAtPiBpc19hdXRoZW50aWNhdGVkYGAgbWFwcGluZ3MuICBDYW4gYmUgdXNlZCBieSBhCisgICBCYXNpY0F1dGggaGFuZGxlciB0byBkZXRlcm1pbmUgd2hlbiB0byBzZW5kIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzCisgICBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgYGA0MDFgYCByZXNwb25zZSBmaXJzdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gY2xhc3M6OiBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCiAKICAgIFRoaXMgaXMgYSBtaXhpbiBjbGFzcyB0aGF0IGhlbHBzIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiwgYm90aCB0byB0aGUgcmVtb3RlCiAgICBob3N0IGFuZCB0byBhIHByb3h5LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZSBzb21ldGhpbmcgdGhhdCBpcwogICAgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgogICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgc3VwcG9ydGVkLiAgSWYgKnBhc3N3ZF9tZ3IqIGFsc28gcHJvdmlkZXMgYGBpc19hdXRoZW50aWNhdGVkYGAgYW5kCisgICBgYHVwZGF0ZV9hdXRoZW50aWNhdGVkYGAgbWV0aG9kcyAoc2VlCisgICA6cmVmOmBodHRwLXBhc3N3b3JkLW1nci13aXRoLXByaW9yLWF1dGhgKSwgdGhlbiB0aGUgaGFuZGxlciB3aWxsIHVzZSB0aGUKKyAgIGBgaXNfYXV0aGVudGljYXRlZGBgIHJlc3VsdCBmb3IgYSBnaXZlbiBVUkkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvCisgICBzZW5kIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIHdpdGggdGhlIHJlcXVlc3QuICBJZiBgYGlzX2F1dGhlbnRpY2F0ZWRgYAorICAgcmV0dXJucyBgYFRydWVgYCBmb3IgdGhlIFVSSSwgY3JlZGVudGlhbHMgYXJlIHNlbnQuICBJZiBgYGlzX2F1dGhlbnRpY2F0ZWRgYAorICAgaXMgYGBGYWxzZWBgLCBjcmVkZW50aWFscyBhcmUgbm90IHNlbnQsIGFuZCB0aGVuIGlmIGEgYGA0MDFgYCByZXNwb25zZSBpcworICAgcmVjZWl2ZWQgdGhlIHJlcXVlc3QgaXMgcmUtc2VudCB3aXRoIHRoZSBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gIElmCisgICBhdXRoZW50aWNhdGlvbiBzdWNjZWVkcywgYGB1cGRhdGVfYXV0aGVudGljYXRlZGBgIGlzIGNhbGxlZCB0byBzZXQKKyAgIGBgaXNfYXV0aGVudGljYXRlZGBgIGBgVHJ1ZWBgIGZvciB0aGUgVVJJLCBzbyB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdHMgdG8KKyAgIHRoZSBVUkkgb3IgYW55IG9mIGl0cyBzdXBlci1VUklzIHdpbGwgYXV0b21hdGljYWxseSBpbmNsdWRlIHRoZQorICAgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgQWRkZWQgYGBpc19hdXRoZW50aWNhdGVkYGAgc3VwcG9ydC4KIAogCiAuLiBjbGFzczo6IEhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQpAQCAtODQ1LDYgKzg3MCw0MiBAQAogICAgc2VhcmNoZWQgaWYgdGhlIGdpdmVuICpyZWFsbSogaGFzIG5vIG1hdGNoaW5nIHVzZXIvcGFzc3dvcmQuCiAKIAorLi4gX2h0dHAtcGFzc3dvcmQtbWdyLXdpdGgtcHJpb3ItYXV0aDoKKworSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwYXNzd29yZCBtYW5hZ2VyIGV4dGVuZHMgOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtYCB0byBzdXBwb3J0Cit0cmFja2luZyBVUklzIGZvciB3aGljaCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBzaG91bGQgYWx3YXlzIGJlIHNlbnQuCisKKworLi4gbWV0aG9kOjogSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aC5hZGRfcGFzc3dvcmQocmVhbG0sIHVyaSwgdXNlciwgXAorICAgICAgICAgICAgcGFzc3dkLCBpc19hdXRoZW50aWNhdGVkPUZhbHNlKQorCisgICAqcmVhbG0qLCAqdXJpKiwgKnVzZXIqLCAqcGFzc3dkKiBhcmUgYXMgZm9yCisgICA6bWV0aDpgSFRUUFBhc3N3b3JkTWdyLmFkZF9wYXNzd29yZGAuICAqaXNfYXV0aGVudGljYXRlZCogc2V0cyB0aGUgaW5pdGlhbAorICAgdmFsdWUgb2YgdGhlIGBgaXNfYXV0aGVudGljYXRlZGBgIGZsYWcgZm9yIHRoZSBnaXZlbiBVUkkgb3IgbGlzdCBvZiBVUklzLgorICAgSWYgKmlzX2F1dGhlbnRpY2F0ZWQqIGlzIHNwZWNpZmllZCBhcyBgYFRydWVgYCwgKnJlYWxtKiBpcyBpZ25vcmVkLgorCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1nci5maW5kX3VzZXJfcGFzc3dvcmQocmVhbG0sIGF1dGh1cmkpCisKKyAgIFNhbWUgYXMgZm9yIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbWAgb2JqZWN0cworCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgudXBkYXRlX2F1dGhlbnRpY2F0ZWQoc2VsZiwgdXJpLCBcCisgICAgICAgICAgICBpc19hdXRoZW50aWNhdGVkPUZhbHNlKQorCisgICBVcGRhdGUgdGhlIGBgaXNfYXV0aGVudGljYXRlZGBgIGZsYWcgZm9yIHRoZSBnaXZlbiAqdXJpKiBvciBsaXN0CisgICBvZiBVUklzLgorCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGguaXNfYXV0aGVudGljYXRlZChzZWxmLCBhdXRodXJpKQorCisgICBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBmbGFnIGZvcgorICAgdGhlIGdpdmVuIFVSSS4KKworCiAuLiBfYWJzdHJhY3QtYmFzaWMtYXV0aC1oYW5kbGVyOgogCiBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgT2JqZWN0cwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QgYi9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdAppbmRleCBjYzg4M2IxLi4yZTE2MDc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdApAQCAtMjU4LDcgKzI1OCw3IEBACiAgICBhcmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgb2YgY3JlYXRpb24uCiAKICAgIEEgZmluYWxpemVyIHdpbGwgbmV2ZXIgaW52b2tlIGl0cyBjYWxsYmFjayBkdXJpbmcgdGhlIGxhdGVyIHBhcnQgb2YKLSAgIHRoZSBpbnRlcnByZXRlciBzaHV0ZG93biB3aGVuIG1vZHVsZSBnbG9iYWxzIGFyZSBsaWFibGUgdG8gaGF2ZQorICAgdGhlIDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAgd2hlbiBtb2R1bGUgZ2xvYmFscyBhcmUgbGlhYmxlIHRvIGhhdmUKICAgIGJlZW4gcmVwbGFjZWQgYnkgOmNvbnN0OmBOb25lYC4KIAogICAgLi4gbWV0aG9kOjogX19jYWxsX18oKQpAQCAtNTI3LDggKzUyNyw4IEBACiAKIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMgbm8gbG9uZ2VyIHByZXZlbnQKIHJlZmVyZW5jZSBjeWNsZXMgZnJvbSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCwgYW5kIG1vZHVsZSBnbG9iYWxzIGFyZQotbm8gbG9uZ2VyIGZvcmNlZCB0byA6Y29uc3Q6YE5vbmVgIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bi4gU28gdGhpcwotY29kZSBzaG91bGQgd29yayB3aXRob3V0IGFueSBpc3N1ZXMgb24gQ1B5dGhvbi4KK25vIGxvbmdlciBmb3JjZWQgdG8gOmNvbnN0OmBOb25lYCBkdXJpbmcgOnRlcm06YGludGVycHJldGVyIHNodXRkb3duYC4KK1NvIHRoaXMgY29kZSBzaG91bGQgd29yayB3aXRob3V0IGFueSBpc3N1ZXMgb24gQ1B5dGhvbi4KIAogSG93ZXZlciwgaGFuZGxpbmcgb2YgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMgaXMgbm90b3Jpb3VzbHkgaW1wbGVtZW50YXRpb24KIHNwZWNpZmljLCBzaW5jZSBpdCBkZXBlbmRzIG9uIGludGVybmFsIGRldGFpbHMgb2YgdGhlIGludGVycHJldGVyJ3MgZ2FyYmFnZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCBhOWUxOWRhLi5kZTc0YzMwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtMTg0LDEwICsxODQsMTEgQEAKIG1hbmlwdWxhdGlvbiBvZiBXU0dJIHJlc3BvbnNlIGhlYWRlcnMgdXNpbmcgYSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlLgogCiAKLS4uIGNsYXNzOjogSGVhZGVycyhoZWFkZXJzKQorLi4gY2xhc3M6OiBIZWFkZXJzKFtoZWFkZXJzXSkKIAogICAgQ3JlYXRlIGEgbWFwcGluZy1saWtlIG9iamVjdCB3cmFwcGluZyAqaGVhZGVycyosIHdoaWNoIG11c3QgYmUgYSBsaXN0IG9mIGhlYWRlcgotICAgbmFtZS92YWx1ZSB0dXBsZXMgYXMgZGVzY3JpYmVkIGluIDpwZXA6YDMzMzNgLgorICAgbmFtZS92YWx1ZSB0dXBsZXMgYXMgZGVzY3JpYmVkIGluIDpwZXA6YDMzMzNgLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAqaGVhZGVycyogaXMKKyAgIGFuIGVtcHR5IGxpc3QuCiAKICAgIDpjbGFzczpgSGVhZGVyc2Agb2JqZWN0cyBzdXBwb3J0IHR5cGljYWwgbWFwcGluZyBvcGVyYXRpb25zIGluY2x1ZGluZwogICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCwgOm1ldGg6YGdldGAsIDptZXRoOmBfX3NldGl0ZW1fX2AsIDptZXRoOmBzZXRkZWZhdWx0YCwKQEAgLTI1MSw2ICsyNTIsMTAgQEAKICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqaGVhZGVycyogcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgorCisKIDptb2Q6YHdzZ2lyZWYuc2ltcGxlX3NlcnZlcmAgLS0gYSBzaW1wbGUgV1NHSSBIVFRQIHNlcnZlcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5zYXgucmVhZGVyLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgucmVhZGVyLnJzdAppbmRleCAzYWI2MDYzLi4zMWNhMjYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLnNheC5yZWFkZXIucnN0CkBAIC0xMDAsOCArMTAwLDEwIEBACiAgICBzeXN0ZW0gaWRlbnRpZmllciAoYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGlucHV0IHNvdXJjZSAtLSB0eXBpY2FsbHkgYSBmaWxlCiAgICBuYW1lIG9yIGFuIFVSTCksIGEgZmlsZS1saWtlIG9iamVjdCwgb3IgYW4gOmNsYXNzOmBJbnB1dFNvdXJjZWAgb2JqZWN0LiBXaGVuCiAgICA6bWV0aDpgcGFyc2VgIHJldHVybnMsIHRoZSBpbnB1dCBpcyBjb21wbGV0ZWx5IHByb2Nlc3NlZCwgYW5kIHRoZSBwYXJzZXIgb2JqZWN0Ci0gICBjYW4gYmUgZGlzY2FyZGVkIG9yIHJlc2V0LiBBcyBhIGxpbWl0YXRpb24sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkKLSAgIGFjY2VwdHMgYnl0ZSBzdHJlYW1zOyBwcm9jZXNzaW5nIG9mIGNoYXJhY3RlciBzdHJlYW1zIGlzIGZvciBmdXJ0aGVyIHN0dWR5LgorICAgY2FuIGJlIGRpc2NhcmRlZCBvciByZXNldC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgY2hhcmFjdGVyIHN0cmVhbXMuCiAKIAogLi4gbWV0aG9kOjogWE1MUmVhZGVyLmdldENvbnRlbnRIYW5kbGVyKCkKQEAgLTI4OCw4ICsyOTAsNyBAQAogCiAuLiBtZXRob2Q6OiBJbnB1dFNvdXJjZS5zZXRCeXRlU3RyZWFtKGJ5dGVmaWxlKQogCi0gICBTZXQgdGhlIGJ5dGUgc3RyZWFtIChhIFB5dGhvbiBmaWxlLWxpa2Ugb2JqZWN0IHdoaWNoIGRvZXMgbm90IHBlcmZvcm0KLSAgIGJ5dGUtdG8tY2hhcmFjdGVyIGNvbnZlcnNpb24pIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KKyAgIFNldCB0aGUgYnl0ZSBzdHJlYW0gKGEgOnRlcm06YGJpbmFyeSBmaWxlYCkgZm9yIHRoaXMgaW5wdXQgc291cmNlLgogCiAgICBUaGUgU0FYIHBhcnNlciB3aWxsIGlnbm9yZSB0aGlzIGlmIHRoZXJlIGlzIGFsc28gYSBjaGFyYWN0ZXIgc3RyZWFtIHNwZWNpZmllZCwKICAgIGJ1dCBpdCB3aWxsIHVzZSBhIGJ5dGUgc3RyZWFtIGluIHByZWZlcmVuY2UgdG8gb3BlbmluZyBhIFVSSSBjb25uZWN0aW9uIGl0c2VsZi4KQEAgLTMwOCw4ICszMDksNyBAQAogCiAuLiBtZXRob2Q6OiBJbnB1dFNvdXJjZS5zZXRDaGFyYWN0ZXJTdHJlYW0oY2hhcmZpbGUpCiAKLSAgIFNldCB0aGUgY2hhcmFjdGVyIHN0cmVhbSBmb3IgdGhpcyBpbnB1dCBzb3VyY2UuIChUaGUgc3RyZWFtIG11c3QgYmUgYSBQeXRob24gMS42Ci0gICBVbmljb2RlLXdyYXBwZWQgZmlsZS1saWtlIHRoYXQgcGVyZm9ybXMgY29udmVyc2lvbiB0byBzdHJpbmdzLikKKyAgIFNldCB0aGUgY2hhcmFjdGVyIHN0cmVhbSAoYSA6dGVybTpgdGV4dCBmaWxlYCkgZm9yIHRoaXMgaW5wdXQgc291cmNlLgogCiAgICBJZiB0aGVyZSBpcyBhIGNoYXJhY3RlciBzdHJlYW0gc3BlY2lmaWVkLCB0aGUgU0FYIHBhcnNlciB3aWxsIGlnbm9yZSBhbnkgYnl0ZQogICAgc3RyZWFtIGFuZCB3aWxsIG5vdCBhdHRlbXB0IHRvIG9wZW4gYSBVUkkgY29ubmVjdGlvbiB0byB0aGUgc3lzdGVtIGlkZW50aWZpZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgucnN0CmluZGV4IGU5NWQ2YjAuLjU1Zjk3OTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5zYXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgucnN0CkBAIC00Nyw3ICs0NywxMSBAQAogLi4gZnVuY3Rpb246OiBwYXJzZVN0cmluZyhzdHJpbmcsIGhhbmRsZXIsIGVycm9yX2hhbmRsZXI9aGFuZGxlci5FcnJvckhhbmRsZXIoKSkKIAogICAgU2ltaWxhciB0byA6ZnVuYzpgcGFyc2VgLCBidXQgcGFyc2VzIGZyb20gYSBidWZmZXIgKnN0cmluZyogcmVjZWl2ZWQgYXMgYQotICAgcGFyYW1ldGVyLgorICAgcGFyYW1ldGVyLiAgKnN0cmluZyogbXVzdCBiZSBhIDpjbGFzczpgc3RyYCBpbnN0YW5jZSBvciBhCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBvZiA6Y2xhc3M6YHN0cmAgaW5zdGFuY2VzLgogCiBBIHR5cGljYWwgU0FYIGFwcGxpY2F0aW9uIHVzZXMgdGhyZWUga2luZHMgb2Ygb2JqZWN0czogcmVhZGVycywgaGFuZGxlcnMgYW5kCiBpbnB1dCBzb3VyY2VzLiAgIlJlYWRlciIgaW4gdGhpcyBjb250ZXh0IGlzIGFub3RoZXIgdGVybSBmb3IgcGFyc2VyLCBpLmUuIHNvbWUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKaW5kZXggY2M1ZTgzYS4uZTE5OTkzMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKQEAgLTI3LDcgKzI3LDcgQEAKICAgIGNvbnN0cnVjdGVkIGRhdGEuICBJZiB5b3UgbmVlZCB0byBwYXJzZSB1bnRydXN0ZWQgb3IgdW5hdXRoZW50aWNhdGVkIGRhdGEgc2VlCiAgICA6cmVmOmB4bWwtdnVsbmVyYWJpbGl0aWVzYC4KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAogICAgRm9yIGh0dHBzIFVSSXMsIDptb2Q6YHhtbHJwYy5jbGllbnRgIG5vdyBwZXJmb3JtcyBhbGwgdGhlIG5lY2Vzc2FyeQogICAgY2VydGlmaWNhdGUgYW5kIGhvc3RuYW1lIGNoZWNrcyBieSBkZWZhdWx0CkBAIC0xMjksNyArMTI5LDcgQEAKICAgIDpjbGFzczpgU2VydmVyYCBpcyByZXRhaW5lZCBhcyBhbiBhbGlhcyBmb3IgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgZm9yIGJhY2t3YXJkcwogICAgY29tcGF0aWJpbGl0eS4gIE5ldyBjb2RlIHNob3VsZCB1c2UgOmNsYXNzOmBTZXJ2ZXJQcm94eWAuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCB0aGUgKmNvbnRleHQqIGFyZ3VtZW50LgogCiAKQEAgLTIwMCw2ICsyMDAsMTEgQEAKICAgIG5vIHN1Y2ggc3RyaW5nIGlzIGF2YWlsYWJsZSwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLiBUaGUgZG9jdW1lbnRhdGlvbgogICAgc3RyaW5nIG1heSBjb250YWluIEhUTUwgbWFya3VwLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICBJbnN0YW5jZXMgb2YgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wKKyAgIGZvciBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydC4KKwogCiBBIHdvcmtpbmcgZXhhbXBsZSBmb2xsb3dzLiBUaGUgc2VydmVyIGNvZGU6OgogCkBAIC0yMTcsOSArMjIyLDkgQEAKIAogICAgaW1wb3J0IHhtbHJwYy5jbGllbnQKIAotICAgcHJveHkgPSB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvIikKLSAgIHByaW50KCIzIGlzIGV2ZW46ICVzIiAlIHN0cihwcm94eS5pc19ldmVuKDMpKSkKLSAgIHByaW50KCIxMDAgaXMgZXZlbjogJXMiICUgc3RyKHByb3h5LmlzX2V2ZW4oMTAwKSkpCisgICB3aXRoIHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHkoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iKSBhcyBwcm94eToKKyAgICAgICBwcmludCgiMyBpcyBldmVuOiAlcyIgJSBzdHIocHJveHkuaXNfZXZlbigzKSkpCisgICAgICAgcHJpbnQoIjEwMCBpcyBldmVuOiAlcyIgJSBzdHIocHJveHkuaXNfZXZlbigxMDApKSkKIAogLi4gX2RhdGV0aW1lLW9iamVjdHM6CiAKQEAgLTUyNywxNCArNTMyLDE0IEBACiAgICBmcm9tIHhtbHJwYy5jbGllbnQgaW1wb3J0IFNlcnZlclByb3h5LCBFcnJvcgogCiAgICAjIHNlcnZlciA9IFNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSAjIGxvY2FsIHNlcnZlcgotICAgc2VydmVyID0gU2VydmVyUHJveHkoImh0dHA6Ly9iZXR0eS51c2VybGFuZC5jb20iKQorICAgd2l0aCBTZXJ2ZXJQcm94eSgiaHR0cDovL2JldHR5LnVzZXJsYW5kLmNvbSIpIGFzIHByb3h5OgogCi0gICBwcmludChzZXJ2ZXIpCisgICAgICAgcHJpbnQocHJveHkpCiAKLSAgIHRyeToKLSAgICAgICBwcmludChzZXJ2ZXIuZXhhbXBsZXMuZ2V0U3RhdGVOYW1lKDQxKSkKLSAgIGV4Y2VwdCBFcnJvciBhcyB2OgotICAgICAgIHByaW50KCJFUlJPUiIsIHYpCisgICAgICAgdHJ5OgorICAgICAgICAgICBwcmludChwcm94eS5leGFtcGxlcy5nZXRTdGF0ZU5hbWUoNDEpKQorICAgICAgIGV4Y2VwdCBFcnJvciBhcyB2OgorICAgICAgICAgICBwcmludCgiRVJST1IiLCB2KQogCiBUbyBhY2Nlc3MgYW4gWE1MLVJQQyBzZXJ2ZXIgdGhyb3VnaCBhIHByb3h5LCB5b3UgbmVlZCB0byBkZWZpbmUgIGEgY3VzdG9tCiB0cmFuc3BvcnQuICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwYXBwLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGFwcC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ0ODRjOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3ppcGFwcC5yc3QKQEAgLTAsMCArMSwyNTkgQEAKKzptb2Q6YHppcGFwcGAgLS0tIE1hbmFnZSBleGVjdXRhYmxlIHB5dGhvbiB6aXAgYXJjaGl2ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogemlwYXBwCisgICA6c3lub3BzaXM6IE1hbmFnZSBleGVjdXRhYmxlIHB5dGhvbiB6aXAgYXJjaGl2ZXMKKworCisuLiBpbmRleDo6CisgICBzaW5nbGU6IEV4ZWN1dGFibGUgWmlwIEZpbGVzCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi96aXBhcHAucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIHRvb2xzIHRvIG1hbmFnZSB0aGUgY3JlYXRpb24gb2YgemlwIGZpbGVzIGNvbnRhaW5pbmcKK1B5dGhvbiBjb2RlLCB3aGljaCBjYW4gYmUgIDpyZWY6YGV4ZWN1dGVkIGRpcmVjdGx5IGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKKzx1c2luZy1vbi1pbnRlcmZhY2Utb3B0aW9ucz5gLiAgVGhlIG1vZHVsZSBwcm92aWRlcyBib3RoIGEKKzpyZWY6YHppcGFwcC1jb21tYW5kLWxpbmUtaW50ZXJmYWNlYCBhbmQgYSA6cmVmOmB6aXBhcHAtcHl0aG9uLWFwaWAuCisKKworQmFzaWMgRXhhbXBsZQorLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRoZSA6cmVmOmBjb21tYW5kLWxpbmUtaW50ZXJmYWNlYAorY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcKK1B5dGhvbiBjb2RlLiAgV2hlbiBydW4sIHRoZSBhcmNoaXZlIHdpbGwgZXhlY3V0ZSB0aGUgYGBtYWluYGAgZnVuY3Rpb24gZnJvbQordGhlIG1vZHVsZSBgYG15YXBwYGAgaW4gdGhlIGFyY2hpdmUuCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIm15YXBwOm1haW4iCisgICAkIHB5dGhvbiBteWFwcC5weXoKKyAgIDxvdXRwdXQgZnJvbSBteWFwcD4KKworCisuLiBfemlwYXBwLWNvbW1hbmQtbGluZS1pbnRlcmZhY2U6CisKK0NvbW1hbmQtTGluZSBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBjYWxsZWQgYXMgYSBwcm9ncmFtIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgdGhlIGZvbGxvd2luZyBmb3JtIGlzIHVzZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAkIHB5dGhvbiAtbSB6aXBhcHAgc291cmNlIFtvcHRpb25zXQorCitJZiAqc291cmNlKiBpcyBhIGRpcmVjdG9yeSwgdGhpcyB3aWxsIGNyZWF0ZSBhbiBhcmNoaXZlIGZyb20gdGhlIGNvbnRlbnRzIG9mCisqc291cmNlKi4gIElmICpzb3VyY2UqIGlzIGEgZmlsZSwgaXQgc2hvdWxkIGJlIGFuIGFyY2hpdmUsIGFuZCBpdCB3aWxsIGJlCitjb3BpZWQgdG8gdGhlIHRhcmdldCBhcmNoaXZlIChvciB0aGUgY29udGVudHMgb2YgaXRzIHNoZWJhbmcgbGluZSB3aWxsIGJlCitkaXNwbGF5ZWQgaWYgdGhlIC0taW5mbyBvcHRpb24gaXMgc3BlY2lmaWVkKS4KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSB1bmRlcnN0b29kOgorCisuLiBwcm9ncmFtOjogemlwYXBwCisKKy4uIGNtZG9wdGlvbjo6IC1vIDxvdXRwdXQ+LCAtLW91dHB1dD08b3V0cHV0PgorCisgICBXcml0ZSB0aGUgb3V0cHV0IHRvIGEgZmlsZSBuYW1lZCAqb3V0cHV0Ki4gIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsCisgICB0aGUgb3V0cHV0IGZpbGVuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGlucHV0ICpzb3VyY2UqLCB3aXRoIHRoZQorICAgZXh0ZW5zaW9uIGBgLnB5emBgIGFkZGVkLiAgSWYgYW4gZXhwbGljaXQgZmlsZW5hbWUgaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgYXMKKyAgIGlzIChzbyBhIGBgLnB5emBgIGV4dGVuc2lvbiBzaG91bGQgYmUgaW5jbHVkZWQgaWYgcmVxdWlyZWQpLgorCisgICBBbiBvdXRwdXQgZmlsZW5hbWUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgdGhlICpzb3VyY2UqIGlzIGFuIGFyY2hpdmUgKGFuZCBpbgorICAgdGhhdCBjYXNlLCAqb3V0cHV0KiBtdXN0IG5vdCBiZSB0aGUgc2FtZSBhcyAqc291cmNlKikuCisKKy4uIGNtZG9wdGlvbjo6IC1wIDxpbnRlcnByZXRlcj4sIC0tcHl0aG9uPTxpbnRlcnByZXRlcj4KKworICAgQWRkIGEgYGAjIWBgIGxpbmUgdG8gdGhlIGFyY2hpdmUgc3BlY2lmeWluZyAqaW50ZXJwcmV0ZXIqIGFzIHRoZSBjb21tYW5kCisgICB0byBydW4uICBBbHNvLCBvbiBQT1NJWCwgbWFrZSB0aGUgYXJjaGl2ZSBleGVjdXRhYmxlLiAgVGhlIGRlZmF1bHQgaXMgdG8KKyAgIHdyaXRlIG5vIGBgIyFgYCBsaW5lLCBhbmQgbm90IG1ha2UgdGhlIGZpbGUgZXhlY3V0YWJsZS4KKworLi4gY21kb3B0aW9uOjogLW0gPG1haW5mbj4sIC0tbWFpbj08bWFpbmZuPgorCisgICBXcml0ZSBhIGBgX19tYWluX18ucHlgYCBmaWxlIHRvIHRoZSBhcmNoaXZlIHRoYXQgZXhlY3V0ZXMgKm1haW5mbiouICBUaGUKKyAgICptYWluZm4qIGFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICJwa2cubW9kOmZuIiwgd2hlcmUgInBrZy5tb2QiIGlzIGEKKyAgIHBhY2thZ2UvbW9kdWxlIGluIHRoZSBhcmNoaXZlLCBhbmQgImZuIiBpcyBhIGNhbGxhYmxlIGluIHRoZSBnaXZlbiBtb2R1bGUuCisgICBUaGUgYGBfX21haW5fXy5weWBgIGZpbGUgd2lsbCBleGVjdXRlIHRoYXQgY2FsbGFibGUuCisKKyAgIDpvcHRpb246YC0tbWFpbmAgY2Fubm90IGJlIHNwZWNpZmllZCB3aGVuIGNvcHlpbmcgYW4gYXJjaGl2ZS4KKworLi4gY21kb3B0aW9uOjogLS1pbmZvCisKKyAgIERpc3BsYXkgdGhlIGludGVycHJldGVyIGVtYmVkZGVkIGluIHRoZSBhcmNoaXZlLCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gIEluCisgICB0aGlzIGNhc2UsIGFueSBvdGhlciBvcHRpb25zIGFyZSBpZ25vcmVkIGFuZCBTT1VSQ0UgbXVzdCBiZSBhbiBhcmNoaXZlLCBub3QgYQorICAgZGlyZWN0b3J5LgorCisuLiBjbWRvcHRpb246OiAtaCwgLS1oZWxwCisKKyAgIFByaW50IGEgc2hvcnQgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdC4KKworCisuLiBfemlwYXBwLXB5dGhvbi1hcGk6CisKK1B5dGhvbiBBUEkKKy0tLS0tLS0tLS0KKworVGhlIG1vZHVsZSBkZWZpbmVzIHR3byBjb252ZW5pZW5jZSBmdW5jdGlvbnM6CisKKworLi4gZnVuY3Rpb246OiBjcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldD1Ob25lLCBpbnRlcnByZXRlcj1Ob25lLCBtYWluPU5vbmUpCisKKyAgIENyZWF0ZSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGZyb20gKnNvdXJjZSouICBUaGUgc291cmNlIGNhbiBiZSBhbnkKKyAgIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgICogVGhlIG5hbWUgb2YgYSBkaXJlY3RvcnksIG9yIGEgOmNsYXNzOmBwYXRobGliLlBhdGhgIG9iamVjdCByZWZlcnJpbmcKKyAgICAgdG8gYSBkaXJlY3RvcnksIGluIHdoaWNoIGNhc2UgYSBuZXcgYXBwbGljYXRpb24gYXJjaGl2ZSB3aWxsIGJlCisgICAgIGNyZWF0ZWQgZnJvbSB0aGUgY29udGVudCBvZiB0aGF0IGRpcmVjdG9yeS4KKyAgICogVGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgYXBwbGljYXRpb24gYXJjaGl2ZSBmaWxlLCBvciBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYAorICAgICBvYmplY3QgcmVmZXJyaW5nIHRvIHN1Y2ggYSBmaWxlLCBpbiB3aGljaCBjYXNlIHRoZSBmaWxlIGlzIGNvcGllZCB0bworICAgICB0aGUgdGFyZ2V0IChtb2RpZnlpbmcgaXQgdG8gcmVmbGVjdCB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqaW50ZXJwcmV0ZXIqCisgICAgIGFyZ3VtZW50KS4gIFRoZSBmaWxlIG5hbWUgc2hvdWxkIGluY2x1ZGUgdGhlIGBgLnB5emBgIGV4dGVuc2lvbiwgaWYgcmVxdWlyZWQuCisgICAqIEEgZmlsZSBvYmplY3Qgb3BlbiBmb3IgcmVhZGluZyBpbiBieXRlcyBtb2RlLiAgVGhlIGNvbnRlbnQgb2YgdGhlCisgICAgIGZpbGUgc2hvdWxkIGJlIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUsIGFuZCB0aGUgZmlsZSBvYmplY3QgaXMKKyAgICAgYXNzdW1lZCB0byBiZSBwb3NpdGlvbmVkIGF0IHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZS4KKworICAgVGhlICp0YXJnZXQqIGFyZ3VtZW50IGRldGVybWluZXMgd2hlcmUgdGhlIHJlc3VsdGluZyBhcmNoaXZlIHdpbGwgYmUKKyAgIHdyaXR0ZW46CisKKyAgICogSWYgaXQgaXMgdGhlIG5hbWUgb2YgYSBmaWxlLCBvciBhIDpjbGFzczpgcGF0aGxiLlBhdGhgIG9iamVjdCwKKyAgICAgdGhlIGFyY2hpdmUgd2lsbCBiZSB3cml0dGVuIHRvIHRoYXQgZmlsZS4KKyAgICogSWYgaXQgaXMgYW4gb3BlbiBmaWxlIG9iamVjdCwgdGhlIGFyY2hpdmUgd2lsbCBiZSB3cml0dGVuIHRvIHRoYXQKKyAgICAgZmlsZSBvYmplY3QsIHdoaWNoIG11c3QgYmUgb3BlbiBmb3Igd3JpdGluZyBpbiBieXRlcyBtb2RlLgorICAgKiBJZiB0aGUgdGFyZ2V0IGlzIG9taXR0ZWQgKG9yIE5vbmUpLCB0aGUgc291cmNlIG11c3QgYmUgYSBkaXJlY3RvcnkKKyAgICAgYW5kIHRoZSB0YXJnZXQgd2lsbCBiZSBhIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzb3VyY2UsIHdpdGgKKyAgICAgYSBgYC5weXpgYCBleHRlbnNpb24gYWRkZWQuCisKKyAgIFRoZSAqaW50ZXJwcmV0ZXIqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgUHl0aG9uCisgICBpbnRlcnByZXRlciB3aXRoIHdoaWNoIHRoZSBhcmNoaXZlIHdpbGwgYmUgZXhlY3V0ZWQuICBJdCBpcyB3cml0dGVuIGFzCisgICBhICJzaGViYW5nIiBsaW5lIGF0IHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZS4gIE9uIFBPU0lYLCB0aGlzIHdpbGwgYmUKKyAgIGludGVycHJldGVkIGJ5IHRoZSBPUywgYW5kIG9uIFdpbmRvd3MgaXQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBQeXRob24KKyAgIGxhdW5jaGVyLiAgT21pdHRpbmcgdGhlICppbnRlcnByZXRlciogcmVzdWx0cyBpbiBubyBzaGViYW5nIGxpbmUgYmVpbmcKKyAgIHdyaXR0ZW4uICBJZiBhbiBpbnRlcnByZXRlciBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgdGFyZ2V0IGlzIGEKKyAgIGZpbGVuYW1lLCB0aGUgZXhlY3V0YWJsZSBiaXQgb2YgdGhlIHRhcmdldCBmaWxlIHdpbGwgYmUgc2V0LgorCisgICBUaGUgKm1haW4qIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUKKyAgIHVzZWQgYXMgdGhlIG1haW4gcHJvZ3JhbSBmb3IgdGhlIGFyY2hpdmUuICBJdCBjYW4gb25seSBiZSBzcGVjaWZpZWQgaWYKKyAgIHRoZSBzb3VyY2UgaXMgYSBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIGRvZXMgbm90IGFscmVhZHkgY29udGFpbiBhCisgICBgYF9fbWFpbl9fLnB5YGAgZmlsZS4gIFRoZSAqbWFpbiogYXJndW1lbnQgc2hvdWxkIHRha2UgdGhlIGZvcm0KKyAgICJwa2cubW9kdWxlOmNhbGxhYmxlIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nCisgICAicGtnLm1vZHVsZSIgYW5kIGV4ZWN1dGluZyB0aGUgZ2l2ZW4gY2FsbGFibGUgd2l0aCBubyBhcmd1bWVudHMuICBJdAorICAgaXMgYW4gZXJyb3IgdG8gb21pdCAqbWFpbiogaWYgdGhlIHNvdXJjZSBpcyBhIGRpcmVjdG9yeSBhbmQgZG9lcyBub3QKKyAgIGNvbnRhaW4gYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSwgYXMgb3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYXJjaGl2ZQorICAgd291bGQgbm90IGJlIGV4ZWN1dGFibGUuCisKKyAgIElmIGEgZmlsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGZvciAqc291cmNlKiBvciAqdGFyZ2V0KiwgaXQgaXMgdGhlCisgICBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBjbG9zZSBpdCBhZnRlciBjYWxsaW5nIGNyZWF0ZV9hcmNoaXZlLgorCisgICBXaGVuIGNvcHlpbmcgYW4gZXhpc3RpbmcgYXJjaGl2ZSwgZmlsZSBvYmplY3RzIHN1cHBsaWVkIG9ubHkgbmVlZAorICAgYGByZWFkYGAgYW5kIGBgcmVhZGxpbmVgYCwgb3IgYGB3cml0ZWBgIG1ldGhvZHMuICBXaGVuIGNyZWF0aW5nIGFuCisgICBhcmNoaXZlIGZyb20gYSBkaXJlY3RvcnksIGlmIHRoZSB0YXJnZXQgaXMgYSBmaWxlIG9iamVjdCBpdCB3aWxsIGJlCisgICBwYXNzZWQgdG8gdGhlIGBgemlwZmlsZS5aaXBGaWxlYGAgY2xhc3MsIGFuZCBtdXN0IHN1cHBseSB0aGUgbWV0aG9kcworICAgbmVlZGVkIGJ5IHRoYXQgY2xhc3MuCisKKy4uIGZ1bmN0aW9uOjogZ2V0X2ludGVycHJldGVyKGFyY2hpdmUpCisKKyAgIFJldHVybiB0aGUgaW50ZXJwcmV0ZXIgc3BlY2lmaWVkIGluIHRoZSBgYCMhYGAgbGluZSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgICBhcmNoaXZlLiAgSWYgdGhlcmUgaXMgbm8gYGAjIWBgIGxpbmUsIHJldHVybiA6Y29uc3Q6YE5vbmVgLgorICAgVGhlICphcmNoaXZlKiBhcmd1bWVudCBjYW4gYmUgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZSBvYmplY3Qgb3BlbgorICAgZm9yIHJlYWRpbmcgaW4gYnl0ZXMgbW9kZS4gIEl0IGlzIGFzc3VtZWQgdG8gYmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBhcmNoaXZlLgorCisKKy4uIF96aXBhcHAtZXhhbXBsZXM6CisKK0V4YW1wbGVzCistLS0tLS0tLQorCitQYWNrIHVwIGEgZGlyZWN0b3J5IGludG8gYW4gYXJjaGl2ZSwgYW5kIHJ1biBpdC4KKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICQgcHl0aG9uIC1tIHppcGFwcCBteWFwcAorICAgJCBweXRob24gbXlhcHAucHl6CisgICA8b3V0cHV0IGZyb20gbXlhcHA+CisKK1RoZSBzYW1lIGNhbiBiZSBkb25lIHVzaW5nIHRoZSA6ZnVuYzpgY3JlYXRlX2FyY2hpdmVgIGZ1bmN0b246OgorCisgICA+Pj4gaW1wb3J0IHppcGFwcAorICAgPj4+IHppcGFwcC5jcmVhdGVfYXJjaGl2ZSgnbXlhcHAucHl6JywgJ215YXBwJykKKworVG8gbWFrZSB0aGUgYXBwbGljYXRpb24gZGlyZWN0bHkgZXhlY3V0YWJsZSBvbiBQT1NJWCwgc3BlY2lmeSBhbiBpbnRlcnByZXRlcgordG8gdXNlLgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1wICIvdXNyL2Jpbi9lbnYgcHl0aG9uIgorICAgJCAuL215YXBwLnB5egorICAgPG91dHB1dCBmcm9tIG15YXBwPgorCitUbyByZXBsYWNlIHRoZSBzaGViYW5nIGxpbmUgb24gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgY3JlYXRlIGEgbW9kaWZpZWQgYXJjaGl2ZQordXNpbmcgdGhlIDpmdW5jOmBjcmVhdGVfYXJjaGl2ZWAgZnVuY3Rpb246OgorCisgICA+Pj4gaW1wb3J0IHppcGFwcAorICAgPj4+IHppcGFwcC5jcmVhdGVfYXJjaGl2ZSgnb2xkX2FyY2hpdmUucHl6JywgJ25ld19hcmNoaXZlLnB5eicsICcvdXNyL2Jpbi9weXRob24zJykKKworVG8gdXBkYXRlIHRoZSBmaWxlIGluIHBsYWNlLCBkbyB0aGUgcmVwbGFjZW1lbnQgaW4gbWVtb3J5IHVzaW5nIGEgOmNsYXNzOmBCeXRlc0lPYAorb2JqZWN0LCBhbmQgdGhlbiBvdmVyd3JpdGUgdGhlIHNvdXJjZSBhZnRlcndhcmRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgcmlzaword2hlbiBvdmVyd3JpdGluZyBhIGZpbGUgaW4gcGxhY2UgdGhhdCBhbiBlcnJvciB3aWxsIHJlc3VsdCBpbiB0aGUgbG9zcyBvZgordGhlIG9yaWdpbmFsIGZpbGUuICBUaGlzIGNvZGUgZG9lcyBub3QgcHJvdGVjdCBhZ2FpbnN0IHN1Y2ggZXJyb3JzLCBidXQKK3Byb2R1Y3Rpb24gY29kZSBzaG91bGQgZG8gc28uICBBbHNvLCB0aGlzIG1ldGhvZCB3aWxsIG9ubHkgd29yayBpZiB0aGUgYXJjaGl2ZQorZml0cyBpbiBtZW1vcnk6OgorCisgICA+Pj4gaW1wb3J0IHppcGFwcAorICAgPj4+IGltcG9ydCBpbworICAgPj4+IHRlbXAgPSBpby5CeXRlc0lPKCkKKyAgID4+PiB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoJ215YXBwLnB5eicsIHRlbXAsICcvdXNyL2Jpbi9weXRob24yJykKKyAgID4+PiB3aXRoIG9wZW4oJ215YXBwLnB5eicsICd3YicpIGFzIGY6CisgICA+Pj4gICAgIGYud3JpdGUodGVtcC5nZXR2YWx1ZSgpKQorCitOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgYW4gaW50ZXJwcmV0ZXIgYW5kIHRoZW4gZGlzdHJpYnV0ZSB5b3VyIGFwcGxpY2F0aW9uCithcmNoaXZlLCB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgdXNlZCBpcyBwb3J0YWJsZS4gIFRoZSBQeXRob24KK2xhdW5jaGVyIGZvciBXaW5kb3dzIHN1cHBvcnRzIG1vc3QgY29tbW9uIGZvcm1zIG9mIFBPU0lYIGBgIyFgYCBsaW5lLCBidXQgdGhlcmUKK2FyZSBvdGhlciBpc3N1ZXMgdG8gY29uc2lkZXI6CisKKyogSWYgeW91IHVzZSAiL3Vzci9iaW4vZW52IHB5dGhvbiIgKG9yIG90aGVyIGZvcm1zIG9mIHRoZSAicHl0aG9uIiBjb21tYW5kLAorICBzdWNoIGFzICIvdXNyL2Jpbi9weXRob24iKSwgeW91IG5lZWQgdG8gY29uc2lkZXIgdGhhdCB5b3VyIHVzZXJzIG1heSBoYXZlCisgIGVpdGhlciBQeXRob24gMiBvciBQeXRob24gMyBhcyB0aGVpciBkZWZhdWx0LCBhbmQgd3JpdGUgeW91ciBjb2RlIHRvIHdvcmsKKyAgdW5kZXIgYm90aCB2ZXJzaW9ucy4KKyogSWYgeW91IHVzZSBhbiBleHBsaWNpdCB2ZXJzaW9uLCBmb3IgZXhhbXBsZSAiL3Vzci9iaW4vZW52IHB5dGhvbjMiIHlvdXIKKyAgYXBwbGljYXRpb24gd2lsbCBub3Qgd29yayBmb3IgdXNlcnMgd2hvIGRvIG5vdCBoYXZlIHRoYXQgdmVyc2lvbi4gIChUaGlzCisgIG1heSBiZSB3aGF0IHlvdSB3YW50IGlmIHlvdSBoYXZlIG5vdCBtYWRlIHlvdXIgY29kZSBQeXRob24gMiBjb21wYXRpYmxlKS4KKyogVGhlcmUgaXMgbm8gd2F5IHRvIHNheSAicHl0aG9uIFguWSBvciBsYXRlciIsIHNvIGJlIGNhcmVmdWwgb2YgdXNpbmcgYW4KKyAgZXhhY3QgdmVyc2lvbiBsaWtlICIvdXNyL2Jpbi9lbnYgcHl0aG9uMy40IiBhcyB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB5b3VyCisgIHNoZWJhbmcgbGluZSBmb3IgdXNlcnMgb2YgUHl0aG9uIDMuNSwgZm9yIGV4YW1wbGUuCisKK1RoZSBQeXRob24gWmlwIEFwcGxpY2F0aW9uIEFyY2hpdmUgRm9ybWF0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQeXRob24gaGFzIGJlZW4gYWJsZSB0byBleGVjdXRlIHppcCBmaWxlcyB3aGljaCBjb250YWluIGEgYGBfX21haW5fXy5weWBgIGZpbGUKK3NpbmNlIHZlcnNpb24gMi42LiAgSW4gb3JkZXIgdG8gYmUgZXhlY3V0ZWQgYnkgUHl0aG9uLCBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlCitzaW1wbHkgaGFzIHRvIGJlIGEgc3RhbmRhcmQgemlwIGZpbGUgY29udGFpbmluZyBhIGBgX19tYWluX18ucHlgYCBmaWxlIHdoaWNoCit3aWxsIGJlIHJ1biBhcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBhcHBsaWNhdGlvbi4gIEFzIHVzdWFsIGZvciBhbnkgUHl0aG9uCitzY3JpcHQsIHRoZSBwYXJlbnQgb2YgdGhlIHNjcmlwdCAoaW4gdGhpcyBjYXNlIHRoZSB6aXAgZmlsZSkgd2lsbCBiZSBwbGFjZWQgb24KKzpkYXRhOmBzeXMucGF0aGAgYW5kIHRodXMgZnVydGhlciBtb2R1bGVzIGNhbiBiZSBpbXBvcnRlZCBmcm9tIHRoZSB6aXAgZmlsZS4KKworVGhlIHppcCBmaWxlIGZvcm1hdCBhbGxvd3MgYXJiaXRyYXJ5IGRhdGEgdG8gYmUgcHJlcGVuZGVkIHRvIGEgemlwIGZpbGUuICBUaGUKK3ppcCBhcHBsaWNhdGlvbiBmb3JtYXQgdXNlcyB0aGlzIGFiaWxpdHkgdG8gcHJlcGVuZCBhIHN0YW5kYXJkIFBPU0lYICJzaGViYW5nIgorbGluZSB0byB0aGUgZmlsZSAoYGAjIS9wYXRoL3RvL2ludGVycHJldGVyYGApLgorCitGb3JtYWxseSwgdGhlIFB5dGhvbiB6aXAgYXBwbGljYXRpb24gZm9ybWF0IGlzIHRoZXJlZm9yZToKKworMS4gQW4gb3B0aW9uYWwgc2hlYmFuZyBsaW5lLCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGBgYicjISdgYCBmb2xsb3dlZCBieSBhbgorICAgaW50ZXJwcmV0ZXIgbmFtZSwgYW5kIHRoZW4gYSBuZXdsaW5lIChgYGInXG4nYGApIGNoYXJhY3Rlci4gIFRoZSBpbnRlcnByZXRlcgorICAgbmFtZSBjYW4gYmUgYW55dGhpbmcgYWNjZXB0YWJsZSB0byB0aGUgT1MgInNoZWJhbmciIHByb2Nlc3NpbmcsIG9yIHRoZSBQeXRob24KKyAgIGxhdW5jaGVyIG9uIFdpbmRvd3MuICBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkIGJlIGVuY29kZWQgaW4gVVRGLTggb24gV2luZG93cywKKyAgIGFuZCBpbiA6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpYCBvbiBQT1NJWC4KKzIuIFN0YW5kYXJkIHppcGZpbGUgZGF0YSwgYXMgZ2VuZXJhdGVkIGJ5IHRoZSA6bW9kOmB6aXBmaWxlYCBtb2R1bGUuICBUaGUKKyAgIHppcGZpbGUgY29udGVudCAqbXVzdCogaW5jbHVkZSBhIGZpbGUgY2FsbGVkIGBgX19tYWluX18ucHlgYCAod2hpY2ggbXVzdCBiZQorICAgaW4gdGhlICJyb290IiBvZiB0aGUgemlwZmlsZSAtIGkuZS4sIGl0IGNhbm5vdCBiZSBpbiBhIHN1YmRpcmVjdG9yeSkuICBUaGUKKyAgIHppcGZpbGUgZGF0YSBjYW4gYmUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQuCisKK0lmIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUgaGFzIGEgc2hlYmFuZyBsaW5lLCBpdCBtYXkgaGF2ZSB0aGUgZXhlY3V0YWJsZSBiaXQgc2V0CitvbiBQT1NJWCBzeXN0ZW1zLCB0byBhbGxvdyBpdCB0byBiZSBleGVjdXRlZCBkaXJlY3RseS4KKworVGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhhdCB0aGUgdG9vbHMgaW4gdGhpcyBtb2R1bGUgYXJlIHVzZWQgdG8gY3JlYXRlCithcHBsaWNhdGlvbiBhcmNoaXZlcyAtIHRoZSBtb2R1bGUgaXMgYSBjb252ZW5pZW5jZSwgYnV0IGFyY2hpdmVzIGluIHRoZSBhYm92ZQorZm9ybWF0IGNyZWF0ZWQgYnkgYW55IG1lYW5zIGFyZSBhY2NlcHRhYmxlIHRvIFB5dGhvbi4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAppbmRleCAxMGEwOTRmLi5kNDAzMTVlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdApAQCAtMTM0LDEyICsxMzQsMTYgQEAKIAogICAgT3BlbiBhIFpJUCBmaWxlLCB3aGVyZSAqZmlsZSogY2FuIGJlIGVpdGhlciBhIHBhdGggdG8gYSBmaWxlIChhIHN0cmluZykgb3IgYQogICAgZmlsZS1saWtlIG9iamVjdC4gIFRoZSAqbW9kZSogcGFyYW1ldGVyIHNob3VsZCBiZSBgYCdyJ2BgIHRvIHJlYWQgYW4gZXhpc3RpbmcKLSAgIGZpbGUsIGBgJ3cnYGAgdG8gdHJ1bmNhdGUgYW5kIHdyaXRlIGEgbmV3IGZpbGUsIG9yIGBgJ2EnYGAgdG8gYXBwZW5kIHRvIGFuCi0gICBleGlzdGluZyBmaWxlLiAgSWYgKm1vZGUqIGlzIGBgJ2EnYGAgYW5kICpmaWxlKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgWklQCisgICBmaWxlLCBgYCd3J2BgIHRvIHRydW5jYXRlIGFuZCB3cml0ZSBhIG5ldyBmaWxlLCBgYCd4J2BgIHRvIGV4Y2x1c2l2ZSBjcmVhdGUKKyAgIGFuZCB3cml0ZSBhIG5ldyBmaWxlLCBvciBgYCdhJ2BgIHRvIGFwcGVuZCB0byBhbiBleGlzdGluZyBmaWxlLgorICAgSWYgKm1vZGUqIGlzIGBgJ3gnYGAgYW5kICpmaWxlKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZmlsZSwKKyAgIGEgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIElmICptb2RlKiBpcyBgYCdhJ2BgIGFuZCAqZmlsZSogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIFpJUAogICAgZmlsZSwgdGhlbiBhZGRpdGlvbmFsIGZpbGVzIGFyZSBhZGRlZCB0byBpdC4gIElmICpmaWxlKiBkb2VzIG5vdCByZWZlciB0byBhCiAgICBaSVAgZmlsZSwgdGhlbiBhIG5ldyBaSVAgYXJjaGl2ZSBpcyBhcHBlbmRlZCB0byB0aGUgZmlsZS4gIFRoaXMgaXMgbWVhbnQgZm9yCiAgICBhZGRpbmcgYSBaSVAgYXJjaGl2ZSB0byBhbm90aGVyIGZpbGUgKHN1Y2ggYXMgOmZpbGU6YHB5dGhvbi5leGVgKS4gIElmCiAgICAqbW9kZSogaXMgYGBhYGAgYW5kIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IGF0IGFsbCwgaXQgaXMgY3JlYXRlZC4KKyAgIElmICptb2RlKiBpcyBgYHJgYCBvciBgYGFgYCwgdGhlIGZpbGUgc2hvdWxkIGJlIHNlZWthYmxlLgogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAogICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZApAQCAtMTUxLDcgKzE1NSw3IEBACiAgICBleHRlbnNpb25zIHdoZW4gdGhlIHppcGZpbGUgaXMgbGFyZ2VyIHRoYW4gMiBHaUIuIElmIGl0IGlzICBmYWxzZSA6bW9kOmB6aXBmaWxlYAogICAgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgWklQIGZpbGUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zLgogCi0gICBJZiB0aGUgZmlsZSBpcyBjcmVhdGVkIHdpdGggbW9kZSBgYCdhJ2BgIG9yIGBgJ3cnYGAgYW5kIHRoZW4KKyAgIElmIHRoZSBmaWxlIGlzIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBhbmQgdGhlbgogICAgOm1ldGg6YGNsb3NlZCA8Y2xvc2U+YCB3aXRob3V0IGFkZGluZyBhbnkgZmlsZXMgdG8gdGhlIGFyY2hpdmUsIHRoZSBhcHByb3ByaWF0ZQogICAgWklQIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IGFyY2hpdmUgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBmaWxlLgogCkBAIC0xNzEsNiArMTc1LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgWklQNjQgZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyB0byB1bnNlZWthYmxlIHN0cmVhbXMuCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCBtb2RlLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCkBAIC0yMjYsMTQgKzIzNCw4IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBJZiB0aGUgWmlwRmlsZSB3YXMgY3JlYXRlZCBieSBwYXNzaW5nIGluIGEgZmlsZS1saWtlIG9iamVjdCBhcyB0aGUgIGZpcnN0Ci0gICAgICBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIHRoZW4gdGhlIG9iamVjdCByZXR1cm5lZCBieSA6bWV0aDpgLm9wZW5gIHNoYXJlcyB0aGUKLSAgICAgIFppcEZpbGUncyBmaWxlIHBvaW50ZXIuICBVbmRlciB0aGVzZSAgY2lyY3Vtc3RhbmNlcywgdGhlIG9iamVjdCByZXR1cm5lZCBieQotICAgICAgOm1ldGg6YC5vcGVuYCBzaG91bGQgbm90ICBiZSB1c2VkIGFmdGVyIGFueSBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZAotICAgICAgb24gdGhlICBaaXBGaWxlIG9iamVjdC4gIElmIHRoZSBaaXBGaWxlIHdhcyBjcmVhdGVkIGJ5IHBhc3NpbmcgaW4gYSBzdHJpbmcgKHRoZQotICAgICAgZmlsZW5hbWUpIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIHRoZW4gIDptZXRoOmAub3BlbmAgd2lsbAotICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBoZWxkIGJ5IHRoZSBaaXBFeHRGaWxlLCBhbGxvd2luZyBpdCB0bwotICAgICAgb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZSAgWmlwRmlsZS4KKyAgICAgIE9iamVjdHMgcmV0dXJuZWQgYnkgOm1ldGg6YC5vcGVuYCBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZQorICAgICAgWmlwRmlsZS4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTMxOCw3ICszMjAsOCBAQAogICAgKmFyY25hbWUqIChieSBkZWZhdWx0LCB0aGlzIHdpbGwgYmUgdGhlIHNhbWUgYXMgKmZpbGVuYW1lKiwgYnV0IHdpdGhvdXQgYSBkcml2ZQogICAgbGV0dGVyIGFuZCB3aXRoIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLiAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKgogICAgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbiogcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IKLSAgIHRoZSBuZXcgZW50cnkuICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gd2l0aCBtb2RlIGBgJ3cnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCisgICB0aGUgbmV3IGVudHJ5LgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZwogICAgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCB3aWxsIHJhaXNlIGEKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBDYWxsaW5nICA6bWV0aDpgd3JpdGVgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCiAgICA6ZXhjOmBSdW50aW1lRXJyb3JgLgpAQCAtMzQwLDE2ICszNDMsMTYgQEAKICAgICAgIElmIGBgYXJjbmFtZWBgIChvciBgYGZpbGVuYW1lYGAsIGlmIGBgYXJjbmFtZWBgIGlzICBub3QgZ2l2ZW4pIGNvbnRhaW5zIGEgbnVsbAogICAgICAgYnl0ZSwgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgdGhlIG51bGwgYnl0ZS4KIAotCiAuLiBtZXRob2Q6OiBaaXBGaWxlLndyaXRlc3RyKHppbmZvX29yX2FyY25hbWUsIGJ5dGVzWywgY29tcHJlc3NfdHlwZV0pCiAKICAgIFdyaXRlIHRoZSBzdHJpbmcgKmJ5dGVzKiB0byB0aGUgYXJjaGl2ZTsgKnppbmZvX29yX2FyY25hbWUqIGlzIGVpdGhlciB0aGUgZmlsZQogICAgbmFtZSBpdCB3aWxsIGJlIGdpdmVuIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UuICBJZiBpdCdzCiAgICBhbiBpbnN0YW5jZSwgYXQgbGVhc3QgdGhlIGZpbGVuYW1lLCBkYXRlLCBhbmQgdGltZSBtdXN0IGJlIGdpdmVuLiAgSWYgaXQncyBhCi0gICBuYW1lLCB0aGUgZGF0ZSBhbmQgdGltZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZS4gVGhlIGFyY2hpdmUgbXVzdCBiZQotICAgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZyAgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIFppcEZpbGUKLSAgIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZwotICAgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgbmFtZSwgdGhlIGRhdGUgYW5kIHRpbWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuCisgICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKKyAgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbAorICAgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgogCiAgICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qCiAgICBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgbmV3IGVudHJ5LCBvciBpbiB0aGUgKnppbmZvX29yX2FyY25hbWUqCkBAIC0zNzcsNyArMzgwLDggQEAKIC4uIGF0dHJpYnV0ZTo6IFppcEZpbGUuY29tbWVudAogCiAgICBUaGUgY29tbWVudCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgWklQIGZpbGUuICBJZiBhc3NpZ25pbmcgYSBjb21tZW50IHRvIGEKLSAgIDpjbGFzczpgWmlwRmlsZWAgaW5zdGFuY2UgY3JlYXRlZCB3aXRoIG1vZGUgJ2EnIG9yICd3JywgdGhpcyBzaG91bGQgYmUgYQorICAgOmNsYXNzOmBaaXBGaWxlYCBpbnN0YW5jZSBjcmVhdGVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAsCisgICB0aGlzIHNob3VsZCBiZSBhCiAgICBzdHJpbmcgbm8gbG9uZ2VyIHRoYW4gNjU1MzUgYnl0ZXMuICBDb21tZW50cyBsb25nZXIgdGhhbiB0aGlzIHdpbGwgYmUKICAgIHRydW5jYXRlZCBpbiB0aGUgd3JpdHRlbiBhcmNoaXZlIHdoZW4gOm1ldGg6YGNsb3NlYCBpcyBjYWxsZWQuCiAKQEAgLTQwNyw4ICs0MTEsNyBAQAogICAgICAgYXJjaGl2ZS4KIAogICAgICAgSWYgdGhlICpvcHRpbWl6ZSogcGFyYW1ldGVyIHRvIDpjbGFzczpgUHlaaXBGaWxlYCB3YXMgbm90IGdpdmVuIG9yIGBgLTFgYCwKLSAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgaXMgYSA6ZmlsZTpgXCoucHlvYCBmaWxlIGlmIGF2YWlsYWJsZSwgZWxzZSBhCi0gICAgICA6ZmlsZTpgXCoucHljYCBmaWxlLCBjb21waWxpbmcgaWYgbmVjZXNzYXJ5LgorICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBpcyBhIDpmaWxlOmBcKi5weWNgIGZpbGUsIGNvbXBpbGluZyBpZiBuZWNlc3NhcnkuCiAKICAgICAgIElmIHRoZSAqb3B0aW1pemUqIHBhcmFtZXRlciB0byA6Y2xhc3M6YFB5WmlwRmlsZWAgd2FzIGBgMGBgLCBgYDFgYCBvcgogICAgICAgYGAyYGAsIG9ubHkgZmlsZXMgd2l0aCB0aGF0IG9wdGltaXphdGlvbiBsZXZlbCAoc2VlIDpmdW5jOmBjb21waWxlYCkgYXJlCkBAIC01NzEsNCArNTc0LDMgQEAKIC4uIGF0dHJpYnV0ZTo6IFppcEluZm8uZmlsZV9zaXplCiAKICAgIFNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBmaWxlLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0IGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAppbmRleCAyY2Y1MDhiLi44YTVkNWQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKQEAgLTIwLDEwICsyMCwxMCBAQAogaW1wb3J0IGZyb20gdGhlIDpmaWxlOmBsaWIvYCBzdWJkaXJlY3Rvcnkgd2l0aGluIHRoZSBhcmNoaXZlLgogCiBBbnkgZmlsZXMgbWF5IGJlIHByZXNlbnQgaW4gdGhlIFpJUCBhcmNoaXZlLCBidXQgb25seSBmaWxlcyA6ZmlsZTpgLnB5YCBhbmQKLTpmaWxlOmAucHlbY29dYCBhcmUgYXZhaWxhYmxlIGZvciBpbXBvcnQuICBaSVAgaW1wb3J0IG9mIGR5bmFtaWMgbW9kdWxlcworOmZpbGU6YC5weWNgIGFyZSBhdmFpbGFibGUgZm9yIGltcG9ydC4gIFpJUCBpbXBvcnQgb2YgZHluYW1pYyBtb2R1bGVzCiAoOmZpbGU6YC5weWRgLCA6ZmlsZTpgLnNvYCkgaXMgZGlzYWxsb3dlZC4gTm90ZSB0aGF0IGlmIGFuIGFyY2hpdmUgb25seSBjb250YWlucwogOmZpbGU6YC5weWAgZmlsZXMsIFB5dGhvbiB3aWxsIG5vdCBhdHRlbXB0IHRvIG1vZGlmeSB0aGUgYXJjaGl2ZSBieSBhZGRpbmcgdGhlCi1jb3JyZXNwb25kaW5nIDpmaWxlOmAucHljYCBvciA6ZmlsZTpgLnB5b2AgZmlsZSwgbWVhbmluZyB0aGF0IGlmIGEgWklQIGFyY2hpdmUKK2NvcnJlc3BvbmRpbmcgOmZpbGU6YC5weWNgIGZpbGUsIG1lYW5pbmcgdGhhdCBpZiBhIFpJUCBhcmNoaXZlCiBkb2Vzbid0IGNvbnRhaW4gOmZpbGU6YC5weWNgIGZpbGVzLCBpbXBvcnRpbmcgbWF5IGJlIHJhdGhlciBzbG93LgogCiBaSVAgYXJjaGl2ZXMgd2l0aCBhbiBhcmNoaXZlIGNvbW1lbnQgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgpAQCAtMTYxLDQgKzE2MSwzIEBACiAgICA+Pj4gaW1wb3J0IGp3enRocmVhZGluZwogICAgPj4+IGp3enRocmVhZGluZy5fX2ZpbGVfXwogICAgJ2V4YW1wbGUuemlwL2p3enRocmVhZGluZy5weScKLQpkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDI1MWY4MjIuLjVhYjgwODUgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTgsOSArOCwyMyBAQAogaWYgIiVTUEhJTlhCVUlMRCUiIEVRVSAiIiBzZXQgU1BISU5YQlVJTEQ9c3BoaW54LWJ1aWxkDQogaWYgIiVQWVRIT04lIiBFUVUgIiIgc2V0IFBZVEhPTj1weQ0KIA0KLWlmIERFRklORUQgUHJvZ3JhbUZpbGVzKHg4Nikgc2V0IF9QUkdNRkxTPSVQcm9ncmFtRmlsZXMoeDg2KSUNCi1pZiBOT1QgREVGSU5FRCBQcm9ncmFtRmlsZXMoeDg2KSBzZXQgX1BSR01GTFM9JVByb2dyYW1GaWxlcyUNCi1pZiAiJUhUTUxIRUxQJSIgRVFVICIiIHNldCBIVE1MSEVMUD0lX1BSR01GTFMlXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhlDQoraWYgIiUxIiBORVEgImh0bWxoZWxwIiBnb3RvIDpza2lwaGhjc2VhcmNoDQoraWYgZXhpc3QgIiVIVE1MSEVMUCUiIGdvdG8gOnNraXBoaGNzZWFyY2gNCisNCityZW0gU2VhcmNoIGZvciBISEMgaW4gbGlrZWx5IHBsYWNlcw0KK3NldCBIVE1MSEVMUD0NCit3aGVyZSBoaGMgL3EgJiYgc2V0IEhUTUxIRUxQPWhoYyAmJiBnb3RvIDpza2lwaGhjc2VhcmNoDQord2hlcmUgL1IgLi5cZXh0ZXJuYWxzIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyINCitpZiBub3QgZXhpc3QgIiVIVE1MSEVMUCUiIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBoaGMgPiAiJVRFTVAlXGhoYy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgSFRNTEhFTFA9IDwgIiVURU1QJVxoaGMubG9jIiAmIGRlbCAiJVRFTVAlXGhoYy5sb2MiDQoraWYgbm90IGV4aXN0ICIlSFRNTEhFTFAlIiB3aGVyZSAvUiAiJVByb2dyYW1GaWxlcyUiIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyINCitpZiBub3QgZXhpc3QgIiVIVE1MSEVMUCUiICgNCisgICAgZWNoby4NCisgICAgZWNoby5UaGUgSFRNTCBIZWxwIFdvcmtzaG9wIHdhcyBub3QgZm91bmQuICBTZXQgdGhlIEhUTUxIRUxQIHZhcmlhYmxlDQorICAgIGVjaG8udG8gdGhlIHBhdGggdG8gaGhjLmV4ZSBvciBkb3dubG9hZCBhbmQgaW5zdGFsbCBpdCBmcm9tDQorICAgIGVjaG8uaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjY5OTg1DQorICAgIGV4aXQgL0IgMQ0KKykNCis6c2tpcGhoY3NlYXJjaA0KIA0KIGlmICIlRElTVFZFUlNJT04lIiBFUVUgIiIgZm9yIC9mICJ1c2ViYWNrcSIgJSV2IGluIChgJVBZVEhPTiUgdG9vbHMvZXh0ZW5zaW9ucy9wYXRjaGxldmVsLnB5YCkgZG8gc2V0IERJU1RWRVJTSU9OPSUldg0KIA0KQEAgLTM2LDcgKzUwLDggQEAKICAgICBlY2hvLg0KICAgICBlY2hvLklmIHlvdSBkb24ndCBoYXZlIFNwaGlueCBpbnN0YWxsZWQsIGdyYWIgaXQgZnJvbQ0KICAgICBlY2hvLmh0dHA6Ly9zcGhpbngtZG9jLm9yZy8NCi0gICAgZ290byBlbmQNCisgICAgcG9wZA0KKyAgICBleGl0IC9CIDENCiApDQogDQogcmVtIFRhcmdldHMgdGhhdCBkbyByZXF1aXJlIHNwaGlueC1idWlsZCBhbmQgaGF2ZSB0aGVpciBvd24gbGFiZWwNCkBAIC03NiwxNSArOTEsNiBAQAogY21kIC9DICVTUEhJTlhCVUlMRCUgJVNQSElOWE9QVFMlIC1iJTEgLWRidWlsZFxkb2N0cmVlcyAuICVCVUlMRERJUiVcJSoNCiANCiBpZiAiJTEiIEVRVSAiaHRtbGhlbHAiICgNCi0gICAgaWYgIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgKA0KLSAgICAgICAgZWNoby4NCi0gICAgICAgIGVjaG8uVGhlIEhUTUwgSGVscCBXb3Jrc2hvcCB3YXMgbm90IGZvdW5kLiAgU2V0IHRoZSBIVE1MSEVMUCB2YXJpYWJsZQ0KLSAgICAgICAgZWNoby50byB0aGUgcGF0aCB0byBoaGMuZXhlIG9yIGRvd25sb2FkIGFuZCBpbnN0YWxsIGl0IGZyb20NCi0gICAgICAgIGVjaG8uaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjY5OTg1DQotICAgICAgICByZW0gU2V0IGVycm9ybGV2ZWwgdG8gMSBhbmQgZXhpdA0KLSAgICAgICAgY21kIC9DIGV4aXQgL2IgMQ0KLSAgICAgICAgZ290byBlbmQNCi0gICAgKQ0KICAgICBjbWQgL0MgIiVIVE1MSEVMUCUiIGJ1aWxkXGh0bWxoZWxwXHB5dGhvbiVESVNUVkVSU0lPTjouPSUuaGhwDQogICAgIHJlbSBoaGMuZXhlIHNlZW1zIHRvIGFsd2F5cyBleGl0IHdpdGggY29kZSAxLCByZXNldCB0byAwIGZvciBsZXNzIHRoYW4gMg0KICAgICBpZiBub3QgZXJyb3JsZXZlbCAyIGNtZCAvQyBleGl0IC9iIDANCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CmluZGV4IDVkZDE3ZWIuLjAxY2ZkNmQgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CkBAIC01MSw2ICs1MSw5IEBACiAgICAgICAgICAgICAgICAgOiB8IGB3aXRoX3N0bXRgCiAgICAgICAgICAgICAgICAgOiB8IGBmdW5jZGVmYAogICAgICAgICAgICAgICAgIDogfCBgY2xhc3NkZWZgCisgICAgICAgICAgICAgICAgOiB8IGBhc3luY193aXRoX3N0bXRgCisgICAgICAgICAgICAgICAgOiB8IGBhc3luY19mb3Jfc3RtdGAKKyAgICAgICAgICAgICAgICA6IHwgYGFzeW5jX2Z1bmNkZWZgCiAgICBzdWl0ZTogYHN0bXRfbGlzdGAgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIGBzdGF0ZW1lbnRgKyBERURFTlQKICAgIHN0YXRlbWVudDogYHN0bXRfbGlzdGAgTkVXTElORSB8IGBjb21wb3VuZF9zdG10YAogICAgc3RtdF9saXN0OiBgc2ltcGxlX3N0bXRgICgiOyIgYHNpbXBsZV9zdG10YCkqIFsiOyJdCkBAIC02NjAsNiArNjYzLDEzMCBAQAogICAgOnBlcDpgMzEyOWAgLSBDbGFzcyBEZWNvcmF0b3JzCiAKIAorQ29yb3V0aW5lcworPT09PT09PT09PQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gaW5kZXg6OiBzdGF0ZW1lbnQ6IGFzeW5jIGRlZgorLi4gX2Bhc3luYyBkZWZgOgorCitDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXN5bmNfZnVuY2RlZjogW2BkZWNvcmF0b3JzYF0gImFzeW5jIiAiZGVmIiBgZnVuY25hbWVgICIoIiBbYHBhcmFtZXRlcl9saXN0YF0gIikiIFsiLT4iIGBleHByZXNzaW9uYF0gIjoiIGBzdWl0ZWAKKworLi4gaW5kZXg6OgorICAga2V5d29yZDogYXN5bmMKKyAgIGtleXdvcmQ6IGF3YWl0CisKK0V4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnkgcG9pbnRzCisoc2VlIDp0ZXJtOmBjb3JvdXRpbmVgKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgYGBhd2FpdGBgIGFuZAorYGBhc3luY2BgIGlkZW50aWZpZXJzIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkczsgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9ucywKKzprZXl3b3JkOmBhc3luYyBmb3JgIGFuZCA6a2V5d29yZDpgYXN5bmMgd2l0aGAgY2FuIG9ubHkgYmUgdXNlZCBpbgorY29yb3V0aW5lIGJvZGllcy4KKworRnVuY3Rpb25zIGRlZmluZWQgd2l0aCBgYGFzeW5jIGRlZmBgIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZSBmdW5jdGlvbnMsCitldmVuIGlmIHRoZXkgZG8gbm90IGNvbnRhaW4gYGBhd2FpdGBgIG9yIGBgYXN5bmNgYCBrZXl3b3Jkcy4KKworSXQgaXMgYSA6ZXhjOmBTeW50YXhFcnJvcmAgdG8gdXNlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbnMgaW4KK2BgYXN5bmMgZGVmYGAgY29yb3V0aW5lcy4KKworQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjo6CisKKyAgICBhc3luYyBkZWYgZnVuYyhwYXJhbTEsIHBhcmFtMik6CisgICAgICAgIGRvX3N0dWZmKCkKKyAgICAgICAgYXdhaXQgc29tZV9jb3JvdXRpbmUoKQorCisKKy4uIGluZGV4Ojogc3RhdGVtZW50OiBhc3luYyBmb3IKKy4uIF9gYXN5bmMgZm9yYDoKKworVGhlIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBhc3luY19mb3Jfc3RtdDogImFzeW5jIiBgZm9yX3N0bXRgCisKK0FuIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmFibGVgIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSBpbiBpdHMKKyppdGVyKiBpbXBsZW1lbnRhdGlvbiwgYW5kIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgIGNhbiBjYWxsIGFzeW5jaHJvbm91cworY29kZSBpbiBpdHMgKm5leHQqIG1ldGhvZC4KKworVGhlIGBgYXN5bmMgZm9yYGAgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyIGFzeW5jaHJvbm91cworaXRlcmF0b3JzLgorCitUaGUgZm9sbG93aW5nIGNvZGU6OgorCisgICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOgorICAgICAgICBCTE9DSworICAgIGVsc2U6CisgICAgICAgIEJMT0NLMgorCitJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzo6CisKKyAgICBpdGVyID0gKElURVIpCisgICAgaXRlciA9IGF3YWl0IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpCisgICAgcnVubmluZyA9IFRydWUKKyAgICB3aGlsZSBydW5uaW5nOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBUQVJHRVQgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYW5leHRfXyhpdGVyKQorICAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOgorICAgICAgICAgICAgcnVubmluZyA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBCTE9DSworICAgIGVsc2U6CisgICAgICAgIEJMT0NLMgorCitTZWUgYWxzbyA6bWV0aDpgX19haXRlcl9fYCBhbmQgOm1ldGg6YF9fYW5leHRfX2AgZm9yIGRldGFpbHMuCisKK0l0IGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgIHRvIHVzZSBgYGFzeW5jIGZvcmBgIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuCis6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4KKworCisuLiBpbmRleDo6IHN0YXRlbWVudDogYXN5bmMgd2l0aAorLi4gX2Bhc3luYyB3aXRoYDoKKworVGhlIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFzeW5jX3dpdGhfc3RtdDogImFzeW5jIiBgd2l0aF9zdG10YAorCitBbiA6dGVybTpgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcmAgaXMgYSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCB0aGF0IGlzCithYmxlIHRvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy4KKworVGhlIGZvbGxvd2luZyBjb2RlOjoKKworICAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6CisgICAgICAgIEJMT0NLCisKK0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOjoKKworICAgIG1nciA9IChFWFBSKQorICAgIGFleGl0ID0gdHlwZShtZ3IpLl9fYWV4aXRfXworICAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncikKKyAgICBleGMgPSBUcnVlCisKKyAgICBWQVIgPSBhd2FpdCBhZW50ZXIKKyAgICB0cnk6CisgICAgICAgIEJMT0NLCisgICAgZXhjZXB0OgorICAgICAgICBpZiBub3QgYXdhaXQgYWV4aXQobWdyLCAqc3lzLmV4Y19pbmZvKCkpOgorICAgICAgICAgICAgcmFpc2UKKyAgICBlbHNlOgorICAgICAgICBhd2FpdCBhZXhpdChtZ3IsIE5vbmUsIE5vbmUsIE5vbmUpCisKK1NlZSBhbHNvIDptZXRoOmBfX2FlbnRlcl9fYCBhbmQgOm1ldGg6YF9fYWV4aXRfX2AgZm9yIGRldGFpbHMuCisKK0l0IGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgIHRvIHVzZSBgYGFzeW5jIHdpdGhgYCBzdGF0ZW1lbnQgb3V0c2lkZSBvZiBhbgorOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24uCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0OTJgIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXgKKworCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAogLi4gWyNdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdCBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAppbmRleCA0YWNmMTNlLi5lMWQ3MWI4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CkBAIC02MTYsNiArNjE2LDE2IEBACiAgICAgICBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mCiAgICAgICB2YWx1ZXMgdG8gYmUgcmV0dXJuZWQuCiAKKyAgIENvcm91dGluZSBmdW5jdGlvbnMKKyAgICAgIC4uIGluZGV4OjoKKyAgICAgICAgIHNpbmdsZTogY29yb3V0aW5lOyBmdW5jdGlvbgorCisgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nIDprZXl3b3JkOmBhc3luYyBkZWZgIGlzIGNhbGxlZAorICAgICAgYSA6ZGZuOmBjb3JvdXRpbmUgZnVuY3Rpb25gLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgcmV0dXJucyBhCisgICAgICA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QuICBJdCBtYXkgY29udGFpbiA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zLAorICAgICAgYXMgd2VsbCBhcyA6a2V5d29yZDpgYXN5bmMgd2l0aGAgYW5kIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudHMuIFNlZQorICAgICAgYWxzbyB0aGUgOnJlZjpgY29yb3V0aW5lLW9iamVjdHNgIHNlY3Rpb24uCisKICAgIEJ1aWx0LWluIGZ1bmN0aW9ucwogICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgb2JqZWN0OiBidWlsdC1pbiBmdW5jdGlvbgpAQCAtMTk5MCw2ICsyMDAwLDcgQEAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgICAgIG9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKQpAQCAtMjAwNiwxNSArMjAxNywxNiBAQAogICAgICAgYnVpbHRpbjogcG93CiAgICAgICBidWlsdGluOiBwb3cKIAotICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGArYGAsCi0gICBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLAotICAgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24KLSAgIGBgeCArIHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gOm1ldGg6YF9fYWRkX19gCi0gICBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIDptZXRoOmBfX2Rpdm1vZF9fYCBtZXRob2Qgc2hvdWxkIGJlIHRoZQotICAgZXF1aXZhbGVudCB0byB1c2luZyA6bWV0aDpgX19mbG9vcmRpdl9fYCBhbmQgOm1ldGg6YF9fbW9kX19gOyBpdCBzaG91bGQgbm90IGJlCi0gICByZWxhdGVkIHRvIDptZXRoOmBfX3RydWVkaXZfX2AuICBOb3RlIHRoYXQgOm1ldGg6YF9fcG93X19gIHNob3VsZCBiZSBkZWZpbmVkCi0gICB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4KLSAgIDpmdW5jOmBwb3dgIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC4KKyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMKKyAgIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYEBgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLAorICAgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0bworICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0CisgICBoYXMgYW4gOm1ldGg6YF9fYWRkX19gIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBpcyBjYWxsZWQuICBUaGUKKyAgIDptZXRoOmBfX2Rpdm1vZF9fYCBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nCisgICA6bWV0aDpgX19mbG9vcmRpdl9fYCBhbmQgOm1ldGg6YF9fbW9kX19gOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8KKyAgIDptZXRoOmBfX3RydWVkaXZfX2AuICBOb3RlIHRoYXQgOm1ldGg6YF9fcG93X19gIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdAorICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YHBvd2AKKyAgIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC4KIAogICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlIHN1cHBsaWVkCiAgICBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLgpAQCAtMjAyMyw2ICsyMDM1LDcgQEAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgICAgIG9iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcikKQEAgLTIwMzgsMTQgKzIwNTEsMTQgQEAKICAgICAgIGJ1aWx0aW46IGRpdm1vZAogICAgICAgYnVpbHRpbjogcG93CiAKLSAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgK2BgLAotICAgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsIDpmdW5jOmBwb3dgLCBgYCoqYGAsCi0gICBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLgotICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlCi0gICBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsjXV8gIEZvcgotICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mCi0gICBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX3JzdWJfX2AgbWV0aG9kLCBgYHkuX19yc3ViX18oeClgYCBpcyBjYWxsZWQgaWYKLSAgIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJucyAqTm90SW1wbGVtZW50ZWQqLgorICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucworICAgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsCisgICA6ZnVuYzpgcG93YCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkgd2l0aCByZWZsZWN0ZWQKKyAgIChzd2FwcGVkKSBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzCisgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50CisgICB0eXBlcy4gWyNdXyBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzCisgICBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX3JzdWJfX2AgbWV0aG9kLCBgYHkuX19yc3ViX18oeClgYAorICAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJucyAqTm90SW1wbGVtZW50ZWQqLgogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IHBvdwogCkBAIC0yMDYzLDYgKzIwNzYsNyBAQAogLi4gbWV0aG9kOjogb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKQorICAgICAgICAgICAgb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKQpAQCAtMjA3NCwxNyArMjA4OCwxNyBAQAogICAgICAgICAgICAgb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpCiAKICAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljIGFzc2lnbm1lbnRzCi0gICAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsCi0gICBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbgotICAgaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzCi0gICBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkCi0gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4KLSAgIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhbiA6bWV0aDpgX19pYWRkX19gIG1ldGhvZCwgYGB4ICs9IHlgYCBpcyBlcXVpdmFsZW50Ci0gICB0byBgYHggPSB4Ll9faWFkZF9fKHkpYGAgLiBPdGhlcndpc2UsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgCi0gICBhcmUgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuIEluIGNlcnRhaW4gc2l0dWF0aW9ucywKLSAgIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnMgKHNlZQotICAgOnJlZjpgZmFxLWF1Z21lbnRlZC1hc3NpZ25tZW50LXR1cGxlLWVycm9yYCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluCi0gICBmYWN0IHBhcnQgb2YgdGhlIGRhdGEgbW9kZWwuCisgICAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGBAPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCwgYGAqKj1gYCwgYGA8PD1gYCwKKyAgIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUKKyAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwKKyAgIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZQorICAgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KgorICAgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuIDptZXRoOmBfX2lhZGRfX2AgbWV0aG9kLCBgYHggKz0geWBgIGlzCisgICBlcXVpdmFsZW50IHRvIGBgeCA9IHguX19pYWRkX18oeSlgYCAuIE90aGVyd2lzZSwgYGB4Ll9fYWRkX18oeSlgYCBhbmQKKyAgIGBgeS5fX3JhZGRfXyh4KWBgIGFyZSBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC4gSW4KKyAgIGNlcnRhaW4gc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9ycyAoc2VlCisgICA6cmVmOmBmYXEtYXVnbWVudGVkLWFzc2lnbm1lbnQtdHVwbGUtZXJyb3JgKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdAorICAgcGFydCBvZiB0aGUgZGF0YSBtb2RlbC4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19uZWdfXyhzZWxmKQpAQCAtMjI1NCw2ICsyMjY4LDE1NSBAQAogb2JqZWN0IGl0c2VsZiBpbiBvcmRlciB0byBiZSBjb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLgogCiAKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogY29yb3V0aW5lCisKK0Nvcm91dGluZXMKKz09PT09PT09PT0KKworCitBd2FpdGFibGUgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0IGdlbmVyYWxseSBpbXBsZW1lbnRzIGFuIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKzp0ZXJtOmBDb3JvdXRpbmVgIG9iamVjdHMgcmV0dXJuZWQgZnJvbSA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMKK2FyZSBhd2FpdGFibGUuCisKKy4uIG5vdGU6OgorCisgICBUaGUgOnRlcm06YGdlbmVyYXRvciBpdGVyYXRvcmAgb2JqZWN0cyByZXR1cm5lZCBmcm9tIGdlbmVyYXRvcnMKKyAgIGRlY29yYXRlZCB3aXRoIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAKKyAgIGFyZSBhbHNvIGF3YWl0YWJsZSwgYnV0IHRoZXkgZG8gbm90IGltcGxlbWVudCA6bWV0aDpgX19hd2FpdF9fYC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYXdhaXRfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiA6dGVybTpgaXRlcmF0b3JgLiAgU2hvdWxkIGJlIHVzZWQgdG8gaW1wbGVtZW50CisgICA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3RzLiAgRm9yIGluc3RhbmNlLCA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBpbXBsZW1lbnRzCisgICB0aGlzIG1ldGhvZCB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIHNlZWFsc286OiA6cGVwOmA0OTJgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGF3YWl0YWJsZSBvYmplY3RzLgorCisKKy4uIF9jb3JvdXRpbmUtb2JqZWN0czoKKworQ29yb3V0aW5lIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKzp0ZXJtOmBDb3JvdXRpbmVgIG9iamVjdHMgYXJlIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdHMuCitBIGNvcm91dGluZSdzIGV4ZWN1dGlvbiBjYW4gYmUgY29udHJvbGxlZCBieSBjYWxsaW5nIDptZXRoOmBfX2F3YWl0X19gIGFuZAoraXRlcmF0aW5nIG92ZXIgdGhlIHJlc3VsdC4gIFdoZW4gdGhlIGNvcm91dGluZSBoYXMgZmluaXNoZWQgZXhlY3V0aW5nIGFuZAorcmV0dXJucywgdGhlIGl0ZXJhdG9yIHJhaXNlcyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgYW5kIHRoZSBleGNlcHRpb24ncworOmF0dHI6YH5TdG9wSXRlcmF0aW9uLnZhbHVlYCBhdHRyaWJ1dGUgaG9sZHMgdGhlIHJldHVybiB2YWx1ZS4gIElmIHRoZQorY29yb3V0aW5lIHJhaXNlcyBhbiBleGNlcHRpb24sIGl0IGlzIHByb3BhZ2F0ZWQgYnkgdGhlIGl0ZXJhdG9yLiAgQ29yb3V0aW5lcworc2hvdWxkIG5vdCBkaXJlY3RseSByYWlzZSB1bmhhbmRsZWQgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgZXhjZXB0aW9ucy4KKworQ29yb3V0aW5lcyBhbHNvIGhhdmUgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LCB3aGljaCBhcmUgYW5hbG9nb3VzIHRvCit0aG9zZSBvZiBnZW5lcmF0b3JzIChzZWUgOnJlZjpgZ2VuZXJhdG9yLW1ldGhvZHNgKS4gIEhvd2V2ZXIsIHVubGlrZQorZ2VuZXJhdG9ycywgY29yb3V0aW5lcyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBpdGVyYXRpb24uCisKKy4uIG1ldGhvZDo6IGNvcm91dGluZS5zZW5kKHZhbHVlKQorCisgICBTdGFydHMgb3IgcmVzdW1lcyBleGVjdXRpb24gb2YgdGhlIGNvcm91dGluZS4gIElmICp2YWx1ZSogaXMgYGBOb25lYGAsCisgICB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYWR2YW5jaW5nIHRoZSBpdGVyYXRvciByZXR1cm5lZCBieQorICAgOm1ldGg6YF9fYXdhaXRfX2AuICBJZiAqdmFsdWUqIGlzIG5vdCBgYE5vbmVgYCwgdGhpcyBtZXRob2QgZGVsZWdhdGVzCisgICB0byB0aGUgOm1ldGg6YH5nZW5lcmF0b3Iuc2VuZGAgbWV0aG9kIG9mIHRoZSBpdGVyYXRvciB0aGF0IGNhdXNlZAorICAgdGhlIGNvcm91dGluZSB0byBzdXNwZW5kLiAgVGhlIHJlc3VsdCAocmV0dXJuIHZhbHVlLAorICAgOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIG9yIG90aGVyIGV4Y2VwdGlvbikgaXMgdGhlIHNhbWUgYXMgd2hlbgorICAgaXRlcmF0aW5nIG92ZXIgdGhlIDptZXRoOmBfX2F3YWl0X19gIHJldHVybiB2YWx1ZSwgZGVzY3JpYmVkIGFib3ZlLgorCisuLiBtZXRob2Q6OiBjb3JvdXRpbmUudGhyb3codHlwZVssIHZhbHVlWywgdHJhY2ViYWNrXV0pCisKKyAgIFJhaXNlcyB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBpbiB0aGUgY29yb3V0aW5lLiAgVGhpcyBtZXRob2QgZGVsZWdhdGVzCisgICB0byB0aGUgOm1ldGg6YH5nZW5lcmF0b3IudGhyb3dgIG1ldGhvZCBvZiB0aGUgaXRlcmF0b3IgdGhhdCBjYXVzZWQKKyAgIHRoZSBjb3JvdXRpbmUgdG8gc3VzcGVuZCwgaWYgaXQgaGFzIHN1Y2ggYSBtZXRob2QuICBPdGhlcndpc2UsCisgICB0aGUgZXhjZXB0aW9uIGlzIHJhaXNlZCBhdCB0aGUgc3VzcGVuc2lvbiBwb2ludC4gIFRoZSByZXN1bHQKKyAgIChyZXR1cm4gdmFsdWUsIDpleGM6YFN0b3BJdGVyYXRpb25gLCBvciBvdGhlciBleGNlcHRpb24pIGlzIHRoZSBzYW1lIGFzCisgICB3aGVuIGl0ZXJhdGluZyBvdmVyIHRoZSA6bWV0aDpgX19hd2FpdF9fYCByZXR1cm4gdmFsdWUsIGRlc2NyaWJlZAorICAgYWJvdmUuICBJZiB0aGUgZXhjZXB0aW9uIGlzIG5vdCBjYXVnaHQgaW4gdGhlIGNvcm91dGluZSwgaXQgcHJvcGFnYXRlcworICAgYmFjayB0byB0aGUgY2FsbGVyLgorCisuLiBtZXRob2Q6OiBjb3JvdXRpbmUuY2xvc2UoKQorCisgICBDYXVzZXMgdGhlIGNvcm91dGluZSB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIGV4aXQuICBJZiB0aGUgY29yb3V0aW5lCisgICBpcyBzdXNwZW5kZWQsIHRoaXMgbWV0aG9kIGZpcnN0IGRlbGVnYXRlcyB0byB0aGUgOm1ldGg6YH5nZW5lcmF0b3IuY2xvc2VgCisgICBtZXRob2Qgb2YgdGhlIGl0ZXJhdG9yIHRoYXQgY2F1c2VkIHRoZSBjb3JvdXRpbmUgdG8gc3VzcGVuZCwgaWYgaXQKKyAgIGhhcyBzdWNoIGEgbWV0aG9kLiAgVGhlbiBpdCByYWlzZXMgOmV4YzpgR2VuZXJhdG9yRXhpdGAgYXQgdGhlCisgICBzdXNwZW5zaW9uIHBvaW50LCBjYXVzaW5nIHRoZSBjb3JvdXRpbmUgdG8gaW1tZWRpYXRlbHkgY2xlYW4gaXRzZWxmIHVwLgorICAgRmluYWxseSwgdGhlIGNvcm91dGluZSBpcyBtYXJrZWQgYXMgaGF2aW5nIGZpbmlzaGVkIGV4ZWN1dGluZywgZXZlbiBpZgorICAgaXQgd2FzIG5ldmVyIHN0YXJ0ZWQuCisKKyAgIENvcm91dGluZSBvYmplY3RzIGFyZSBhdXRvbWF0aWNhbGx5IGNsb3NlZCB1c2luZyB0aGUgYWJvdmUgcHJvY2VzcyB3aGVuCisgICB0aGV5IGFyZSBhYm91dCB0byBiZSBkZXN0cm95ZWQuCisKKworQXN5bmNocm9ub3VzIEl0ZXJhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzCitgYF9fYWl0ZXJfX2BgIGltcGxlbWVudGF0aW9uLCBhbmQgYW4gKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGwKK2FzeW5jaHJvbm91cyBjb2RlIGluIGl0cyBgYF9fYW5leHRfX2BgIG1ldGhvZC4KKworQXN5bmNocm9ub3VzIGl0ZXJhdG9ycyBjYW4gYmUgdXNlZCBpbiBhIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYWl0ZXJfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiAqYXdhaXRhYmxlKiByZXN1bHRpbmcgaW4gYW4gKmFzeW5jaHJvbm91cyBpdGVyYXRvciogb2JqZWN0LgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hbmV4dF9fKHNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqIHJlc3VsdGluZyBpbiBhIG5leHQgdmFsdWUgb2YgdGhlIGl0ZXJhdG9yLiAgU2hvdWxkCisgICByYWlzZSBhIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXJyb3Igd2hlbiB0aGUgaXRlcmF0aW9uIGlzIG92ZXIuCisKK0FuIGV4YW1wbGUgb2YgYW4gYXN5bmNocm9ub3VzIGl0ZXJhYmxlIG9iamVjdDo6CisKKyAgICBjbGFzcyBSZWFkZXI6CisgICAgICAgIGFzeW5jIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgICAgIC4uLgorCisgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICB2YWwgPSBhd2FpdCBzZWxmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIHZhbCA9PSBiJyc6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgICAgICByZXR1cm4gdmFsCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKK0FzeW5jaHJvbm91cyBDb250ZXh0IE1hbmFnZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0IGlzIGFibGUgdG8KK3N1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyBgYF9fYWVudGVyX19gYCBhbmQgYGBfX2FleGl0X19gYCBtZXRob2RzLgorCitBc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VycyBjYW4gYmUgdXNlZCBpbiBhIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQuCisKKy4uIG1ldGhvZDo6IG9iamVjdC5fX2FlbnRlcl9fKHNlbGYpCisKKyAgIFRoaXMgbWV0aG9kIGlzIHNlbWFudGljYWxseSBzaW1pbGFyIHRvIHRoZSA6bWV0aDpgX19lbnRlcl9fYCwgd2l0aCBvbmx5CisgICBkaWZmZXJlbmNlIHRoYXQgaXQgbXVzdCByZXR1cm4gYW4gKmF3YWl0YWJsZSouCisKKy4uIG1ldGhvZDo6IG9iamVjdC5fX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKQorCisgICBUaGlzIG1ldGhvZCBpcyBzZW1hbnRpY2FsbHkgc2ltaWxhciB0byB0aGUgOm1ldGg6YF9fZXhpdF9fYCwgd2l0aCBvbmx5CisgICBkaWZmZXJlbmNlIHRoYXQgaXQgbXVzdCByZXR1cm4gYW4gKmF3YWl0YWJsZSouCisKK0FuIGV4YW1wbGUgb2YgYW4gYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciBjbGFzczo6CisKKyAgICBjbGFzcyBBc3luY0NvbnRleHRNYW5hZ2VyOgorICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIGF3YWl0IGxvZygnZW50ZXJpbmcgY29udGV4dCcpCisKKyAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCB0Yik6CisgICAgICAgICAgICBhd2FpdCBsb2coJ2V4aXRpbmcgY29udGV4dCcpCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCiAuLiBbI10gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3QncyB0eXBlLCB1bmRlciBjZXJ0YWluCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdCBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CmluZGV4IDI5ZWYwYjcuLjVjMzNjZTYgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CkBAIC0zOTAsNiArMzkwLDcgQEAKICAgICAgIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuCiAKIC4uIGluZGV4Ojogb2JqZWN0OiBnZW5lcmF0b3IKKy4uIF9nZW5lcmF0b3ItbWV0aG9kczoKIAogR2VuZXJhdG9yLWl0ZXJhdG9yIG1ldGhvZHMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC00NDMsMTIgKzQ0NCwxMiBAQAogLi4gbWV0aG9kOjogZ2VuZXJhdG9yLmNsb3NlKCkKIAogICAgUmFpc2VzIGEgOmV4YzpgR2VuZXJhdG9yRXhpdGAgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gd2FzCi0gICBwYXVzZWQuICBJZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRoZW4gcmFpc2VzIDpleGM6YFN0b3BJdGVyYXRpb25gIChieQotICAgZXhpdGluZyBub3JtYWxseSwgb3IgZHVlIHRvIGFscmVhZHkgYmVpbmcgY2xvc2VkKSBvciA6ZXhjOmBHZW5lcmF0b3JFeGl0YCAoYnkKLSAgIG5vdCBjYXRjaGluZyB0aGUgZXhjZXB0aW9uKSwgY2xvc2UgcmV0dXJucyB0byBpdHMgY2FsbGVyLiAgSWYgdGhlIGdlbmVyYXRvcgotICAgeWllbGRzIGEgdmFsdWUsIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgZ2VuZXJhdG9yIHJhaXNlcyBhbnkKLSAgIG90aGVyIGV4Y2VwdGlvbiwgaXQgaXMgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyLiAgOm1ldGg6YGNsb3NlYCBkb2VzIG5vdGhpbmcKLSAgIGlmIHRoZSBnZW5lcmF0b3IgaGFzIGFscmVhZHkgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24gb3Igbm9ybWFsIGV4aXQuCisgICBwYXVzZWQuICBJZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRoZW4gZXhpdHMgZ3JhY2VmdWxseSwgaXMgYWxyZWFkeSBjbG9zZWQsCisgICBvciByYWlzZXMgOmV4YzpgR2VuZXJhdG9yRXhpdGAgKGJ5IG5vdCBjYXRjaGluZyB0aGUgZXhjZXB0aW9uKSwgY2xvc2UKKyAgIHJldHVybnMgdG8gaXRzIGNhbGxlci4gIElmIHRoZSBnZW5lcmF0b3IgeWllbGRzIGEgdmFsdWUsIGEKKyAgIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGdlbmVyYXRvciByYWlzZXMgYW55IG90aGVyIGV4Y2VwdGlvbiwKKyAgIGl0IGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4gIDptZXRoOmBjbG9zZWAgZG9lcyBub3RoaW5nIGlmIHRoZSBnZW5lcmF0b3IKKyAgIGhhcyBhbHJlYWR5IGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uIG9yIG5vcm1hbCBleGl0LgogCiAuLiBpbmRleDo6IHNpbmdsZTogeWllbGQ7IGV4YW1wbGVzCiAKQEAgLTgxMSw2ICs4MTIsMjAgQEAKICAgIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuCiAKIAorLi4gX2F3YWl0OgorCitBd2FpdCBleHByZXNzaW9uCis9PT09PT09PT09PT09PT09CisKK1N1c3BlbmQgdGhlIGV4ZWN1dGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvbiBhbiA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3QuCitDYW4gb25seSBiZSB1c2VkIGluc2lkZSBhIDp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25gLgorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBhd2FpdDogWyJhd2FpdCJdIGBwcmltYXJ5YAorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBfcG93ZXI6CiAKIFRoZSBwb3dlciBvcGVyYXRvcgpAQCAtODIwLDcgKzgzNSw3IEBACiBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgVGhlIHN5bnRheCBpczoKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgotICAgcG93ZXI6IGBwcmltYXJ5YCBbIioqIiBgdV9leHByYF0KKyAgIHBvd2VyOiBgYXdhaXRgIFsiKioiIGB1X2V4cHJgXQogCiBUaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlIG9wZXJhdG9ycwogYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluIHRoZSBldmFsdWF0aW9uIG9yZGVyCkBAIC04OTEsOCArOTA2LDkgQEAKIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZSBvcGVyYXRvcnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIG1fZXhwcjogYHVfZXhwcmAgfCBgbV9leHByYCAiKiIgYHVfZXhwcmAgfCBgbV9leHByYCAiLy8iIGB1X2V4cHJgIHwgYG1fZXhwcmAgIi8iIGB1X2V4cHJgCi0gICAgICAgICA6IHwgYG1fZXhwcmAgIiUiIGB1X2V4cHJgCisgICBtX2V4cHI6IGB1X2V4cHJgIHwgYG1fZXhwcmAgIioiIGB1X2V4cHJgIHwgYG1fZXhwcmAgIkAiIGBtX2V4cHJgIHwKKyAgICAgICAgIDogYG1fZXhwcmAgIi8vIiBgdV9leHByYHwgYG1fZXhwcmAgIi8iIGB1X2V4cHJgIHwKKyAgICAgICAgIDogYG1fZXhwcmAgIiUiIGB1X2V4cHJgCiAgICBhX2V4cHI6IGBtX2V4cHJgIHwgYGFfZXhwcmAgIisiIGBtX2V4cHJgIHwgYGFfZXhwcmAgIi0iIGBtX2V4cHJgCiAKIC4uIGluZGV4Ojogc2luZ2xlOiBtdWx0aXBsaWNhdGlvbgpAQCAtOTAzLDYgKzkxOSwxMyBAQAogY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCB0b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UKIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS4KIAorLi4gaW5kZXg6OiBzaW5nbGU6IG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorCitUaGUgYGBAYGAgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24uICBObworYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBpbmRleDo6CiAgICBleGNlcHRpb246IFplcm9EaXZpc2lvbkVycm9yCiAgICBzaW5nbGU6IGRpdmlzaW9uCkBAIC0xNDY2LDEzICsxNDg5LDE2IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwgcmVtYWluZGVyIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyNdXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgbWF0cml4ICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG11bHRpcGxpY2F0aW9uIGRpdmlzaW9uLCAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVtYWluZGVyIFsjXV8gICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgK3hgYCwgYGAteGBgLCBgYH54YGAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYCoqYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbI11fICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBhd2FpdGBgIGBgeGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXdhaXQgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgeFtpbmRleF1gYCwgYGB4W2luZGV4OmluZGV4XWBgLCAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgICAgICAgICAgICAgIHwKIHwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgIHwgY2FsbCwgYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKaW5kZXggMTZkMjhkOC4uZDU0OWIyNiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMzM5LDYgKzMzOSw3IEBACiAKICAgICBtb2R1bGUgPSBOb25lCiAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmUgYW5kIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICMgSXQgaXMgYXNzdW1lZCAnZXhlY19tb2R1bGUnIHdpbGwgYWxzbyBiZSBkZWZpbmVkIG9uIHRoZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gTW9kdWxlVHlwZShzcGVjLm5hbWUpCkBAIC00MjcsNyArNDI4LDcgQEAKIGJ5IGltcGxlbWVudGluZyBhIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kLgogSXQgdGFrZXMgb25lIGFyZ3VtZW50LCB0aGUgbW9kdWxlIHNwZWMsIGFuZCByZXR1cm5zIHRoZSBuZXcgbW9kdWxlIG9iamVjdAogdG8gdXNlIGR1cmluZyBsb2FkaW5nLiAgYGBjcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCBuZWVkIHRvIHNldCBhbnkgYXR0cmlidXRlcwotb24gdGhlIG1vZHVsZSBvYmplY3QuICBJZiB0aGUgbG9hZGVyIGRvZXMgbm90IGRlZmluZSBgYGNyZWF0ZV9tb2R1bGUoKWBgLCB0aGUKK29uIHRoZSBtb2R1bGUgb2JqZWN0LiAgSWYgdGhlIG1ldGhvZCByZXR1cm5zIGBgTm9uZWBgLCB0aGUKIGltcG9ydCBtYWNoaW5lcnkgd2lsbCBjcmVhdGUgdGhlIG5ldyBtb2R1bGUgaXRzZWxmLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKQEAgLTQ1OSw3ICs0NjAsMTMgQEAKIAogICAgICogSWYgbG9hZGluZyBmYWlscywgdGhlIGxvYWRlciBtdXN0IHJlbW92ZSBhbnkgbW9kdWxlcyBpdCBoYXMgaW5zZXJ0ZWQKICAgICAgIGludG8gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYnV0IGl0IG11c3QgcmVtb3ZlICoqb25seSoqIHRoZSBmYWlsaW5nCi0gICAgICBtb2R1bGUsIGFuZCBvbmx5IGlmIHRoZSBsb2FkZXIgaXRzZWxmIGhhcyBsb2FkZWQgaXQgZXhwbGljaXRseS4KKyAgICAgIG1vZHVsZShzKSwgYW5kIG9ubHkgaWYgdGhlIGxvYWRlciBpdHNlbGYgaGFzIGxvYWRlZCB0aGUgbW9kdWxlKHMpCisgICAgICBleHBsaWNpdGx5LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGlzIHJhaXNlZCB3aGVuIGBgZXhlY19tb2R1bGUoKWBgIGlzIGRlZmluZWQgYnV0CisgICBgYGNyZWF0ZV9tb2R1bGUoKWBgIGlzIG5vdC4gU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiBpdCB3aWxsIGJlIGFuIGVycm9yIHRvIG5vdAorICAgZGVmaW5lIGBgY3JlYXRlX21vZHVsZSgpYGAgb24gYSBsb2FkZXIgYXR0YWNoZWQgdG8gYSBNb2R1bGVTcGVjLgogCiBTdWJtb2R1bGVzCiAtLS0tLS0tLS0tCkBAIC02NzQsNyArNjgxLDcgQEAKIAogVGhlIGRlZmF1bHQgc2V0IG9mIHBhdGggZW50cnkgZmluZGVycyBpbXBsZW1lbnQgYWxsIHRoZSBzZW1hbnRpY3MgZm9yIGZpbmRpbmcKIG1vZHVsZXMgb24gdGhlIGZpbGUgc3lzdGVtLCBoYW5kbGluZyBzcGVjaWFsIGZpbGUgdHlwZXMgc3VjaCBhcyBQeXRob24gc291cmNlCi1jb2RlIChgYC5weWBgIGZpbGVzKSwgUHl0aG9uIGJ5dGUgY29kZSAoYGAucHljYGAgYW5kIGBgLnB5b2BgIGZpbGVzKSBhbmQKK2NvZGUgKGBgLnB5YGAgZmlsZXMpLCBQeXRob24gYnl0ZSBjb2RlIChgYC5weWNgYCBmaWxlcykgYW5kCiBzaGFyZWQgbGlicmFyaWVzIChlLmcuIGBgLnNvYGAgZmlsZXMpLiBXaGVuIHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgemlwaW1wb3J0YAogbW9kdWxlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB0aGUgZGVmYXVsdCBwYXRoIGVudHJ5IGZpbmRlcnMgYWxzbyBoYW5kbGUKIGxvYWRpbmcgYWxsIG9mIHRoZXNlIGZpbGUgdHlwZXMgKG90aGVyIHRoYW4gc2hhcmVkIGxpYnJhcmllcykgZnJvbSB6aXBmaWxlcy4KQEAgLTc4OCw2ICs3OTUsMTUgQEAKIHRvIGFzayB0aGUgZmluZGVyIGZvciBhIG1vZHVsZSBzcGVjLCB3aGljaCBpcyB0aGVuIHVzZWQgd2hlbiBsb2FkaW5nIHRoZQogbW9kdWxlLgogCitUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtLSBkZW5vdGVkIGJ5IGFuIGVtcHR5IHN0cmluZyAtLSBpcyBoYW5kbGVkCitzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGVudHJpZXMgb24gOmRhdGE6YHN5cy5wYXRoYC4gRmlyc3QsIGlmIHRoZQorY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyBmb3VuZCB0byBub3QgZXhpc3QsIG5vIHZhbHVlIGlzIHN0b3JlZCBpbgorOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4gU2Vjb25kLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHdvcmtpbmcKK2RpcmVjdG9yeSBpcyBsb29rZWQgdXAgZnJlc2ggZm9yIGVhY2ggbW9kdWxlIGxvb2t1cC4gVGhpcmQsIHRoZSBwYXRoIHVzZWQgZm9yCis6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGFuZCByZXR1cm5lZCBieQorOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWNgIHdpbGwgYmUgdGhlIGFjdHVhbCBjdXJyZW50Cit3b3JraW5nIGRpcmVjdG9yeSBhbmQgbm90IHRoZSBlbXB0eSBzdHJpbmcuCisKIFBhdGggZW50cnkgZmluZGVyIHByb3RvY29sCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCBhMTI2NWNmLi44YWQ5NzVmIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTMxMyw3ICszMTMsNyBAQAogKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzCiAqICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zCiAqICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gYFByb3BMaXN0LnR4dAotICA8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL1Byb3BMaXN0LnR4dD5gXyB0byBzdXBwb3J0IGJhY2t3YXJkcworICA8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL1Byb3BMaXN0LnR4dD5gXyB0byBzdXBwb3J0IGJhY2t3YXJkcwogICBjb21wYXRpYmlsaXR5CiAqICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZQogCkBAIC02OTIsNyArNjkyLDcgQEAKIAogVGhlIGZvbGxvd2luZyB0b2tlbnMgYXJlIG9wZXJhdG9yczo6CiAKLSAgICsgICAgICAgLSAgICAgICAqICAgICAgICoqICAgICAgLyAgICAgICAvLyAgICAgICUKKyAgICsgICAgICAgLSAgICAgICAqICAgICAgICoqICAgICAgLyAgICAgICAvLyAgICAgICUgICAgICBACiAgICA8PCAgICAgID4+ICAgICAgJiAgICAgICB8ICAgICAgIF4gICAgICAgfgogICAgPCAgICAgICA+ICAgICAgIDw9ICAgICAgPj0gICAgICA9PSAgICAgICE9CiAKQEAgLTcwOCw3ICs3MDgsNyBAQAogCiAgICAoICAgICAgICkgICAgICAgWyAgICAgICBdICAgICAgIHsgICAgICAgfQogICAgLCAgICAgICA6ICAgICAgIC4gICAgICAgOyAgICAgICBAICAgICAgID0gICAgICAgLT4KLSAgICs9ICAgICAgLT0gICAgICAqPSAgICAgIC89ICAgICAgLy89ICAgICAlPQorICAgKz0gICAgICAtPSAgICAgICo9ICAgICAgLz0gICAgICAvLz0gICAgICU9ICAgICAgQD0KICAgICY9ICAgICAgfD0gICAgICBePSAgICAgID4+PSAgICAgPDw9ICAgICAqKj0KIAogVGhlIHBlcmlvZCBjYW4gYWxzbyBvY2N1ciBpbiBmbG9hdGluZy1wb2ludCBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLiAgQSBzZXF1ZW5jZQpAQCAtNzI5LDQgKzcyOSw0IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCA4OTQ2YjRmLi41ZjYwNTQwIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC0yODEsNyArMjgxLDcgQEAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQ6IGBhdWd0YXJnZXRgIGBhdWdvcGAgKGBleHByZXNzaW9uX2xpc3RgIHwgYHlpZWxkX2V4cHJlc3Npb25gKQogICAgYXVndGFyZ2V0OiBgaWRlbnRpZmllcmAgfCBgYXR0cmlidXRlcmVmYCB8IGBzdWJzY3JpcHRpb25gIHwgYHNsaWNpbmdgCi0gICBhdWdvcDogIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iCisgICBhdWdvcDogIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IgogICAgICAgICA6IHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IgogCiAoU2VlIHNlY3Rpb24gOnJlZjpgcHJpbWFyaWVzYCBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKaW5kZXggNjRhNTY2NS4uZDQ0YjA1MiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CkBAIC0zNCw3ICszNCw3IEBACiAKIAogSVNTVUVfVVJJID0gJ2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy40LyVzJworU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNS8lcycKIAogIyBtb25rZXktcGF0Y2ggcmVTVCBwYXJzZXIgdG8gZGlzYWJsZSBhbHBoYWJldGljIGFuZCByb21hbiBlbnVtZXJhdGVkIGxpc3RzCiBmcm9tIGRvY3V0aWxzLnBhcnNlcnMucnN0LnN0YXRlcyBpbXBvcnQgQm9keQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgppbmRleCAwMzI1MzFkLi42ZTlkZWQzIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgpAQCAtMTIxLDYgKzEyMSw4IEBACiBsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQogbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKIGxpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsIj4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiIjIwMDE6ZGI4OjoxIiIpLnJldmVyc2VfcG9pbnRlciIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwiPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIiMjAwMTpkYjg6OjEiIikucmV2ZXJzZV9wb2ludGVyIgogbGlicmFyeS9pcGFkZHJlc3MsLDo6LCIiIjo6YWJjOjc6ZGVmIiIiCiBsaWJyYXJ5L2lwYWRkcmVzcywsOmRlZiwiIiI6OmFiYzo3OmRlZiIiIgogbGlicmFyeS9pcGFkZHJlc3MsLDo6LDo6RkZGRi85NgpAQCAtMTM4LDggKzE0MCw2IEBACiBsaWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAogbGlicmFyeS9tbWFwLCw6aTIsb2JqW2kxOmkyXQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAjIGVxdWl2IHRvIGBsWzIwXWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKHNsaWNlKDIsIDcpLCkpICAjIGVxdWl2IHRvIGBsWzI6N11gIgogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLDpxdWV1ZSwiPj4+IFF1ZXVlTWFuYWdlci5yZWdpc3RlcignZ2V0X3F1ZXVlJywgY2FsbGFibGU9bGFtYmRhOnF1ZXVlKSIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZigpYCBhbmQgYGcoKWAgYWNjZXNzaWJsZSB2aWEgcHJveHkKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZygpYCBhbmQgYF9oKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CkBAIC0xNzYsOCArMTc2LDYgQEAKIGxpYnJhcnkvc3NsLCw6b3BzLEVtYWlsIEFkZHJlc3MgW106b3BzQG15c2VydmVyLm15Z3JvdXAubXlvcmdhbml6YXRpb24uY29tCiBsaWJyYXJ5L3NzbCwsOlNvbWUsIkxvY2FsaXR5IE5hbWUgKGVnLCBjaXR5KSBbXTpTb21lIENpdHkiCiBsaWJyYXJ5L3NzbCwsOlVTLENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkgW0FVXTpVUwotbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGFbOjotMV0udG9saXN0KCkKLWxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBhWzo6Ml0udG9saXN0KCkKIGxpYnJhcnkvc3RkdHlwZXMsLDplbmQsc1tzdGFydDplbmRdCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gaGFzaCh2Wzo6LTJdKSA9PSBoYXNoKGInYWJjZWZnJ1s6Oi0yXSkKIGxpYnJhcnkvc3RkdHlwZXMsLDpsZW4sc1tsZW4ocyk6bGVuKHMpXQpAQCAtMjA3LDE2ICsyMDUsNiBAQAogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZSIKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmFjdG9yLCJmb3IgYWN0b3IgaW4gcm9vdC5maW5kYWxsKCdyZWFsX3BlcnNvbjphY3RvcicsIG5zKToiCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOm5hbWUsIm5hbWUgPSBhY3Rvci5maW5kKCdyZWFsX3BlcnNvbjpuYW1lJywgbnMpIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsImZvciBjaGFyIGluIGFjdG9yLmZpbmRhbGwoJ3JvbGU6Y2hhcmFjdGVyJywgbnMpOiIKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aApAQCAtMjQzLDcgKzIzMSw2IEBACiB0dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsImZpZWxkcyA9IHN0cnVjdC51bnBhY2soJzxJSUlISCcsIGRhdGFbc3RhcnQ6c3RhcnQrMTZdKSIKIHR1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxmaWxlbmFtZSA9IGRhdGFbc3RhcnQ6c3RhcnQrZmlsZW5hbWVzaXplXQogdHV0b3JpYWwvc3RkbGliMiwsOldhcm5pbmcsV0FSTklORzpyb290Oldhcm5pbmc6Y29uZmlnIGZpbGUgc2VydmVyLmNvbmYgbm90IGZvdW5kCi10dXRvcmlhbC92ZW52LCw6YzdiOTY0NWE2ZjM1LCJQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KSIKIHVzaW5nL2NtZGxpbmUsLDpjYXRlZ29yeSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCiB1c2luZy9jbWRsaW5lLCw6bGluZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQpAQCAtMjY0LDYgKzI1MSwxMSBAQAogd2hhdHNuZXcvMi41LCw6bWVtb3J5LDptZW1vcnk6CiB3aGF0c25ldy8yLjUsLDpzdGVwLFtzdGFydDpzdG9wOnN0ZXBdCiB3aGF0c25ldy8yLjUsLDpzdG9wLFtzdGFydDpzdG9wOnN0ZXBdCit3aGF0c25ldy8yLjcsLDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCit3aGF0c25ldy8yLjcsLDo6LD4+PiB1cmxwYXJzZS51cmxwYXJzZSgnaHR0cDovL1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdL2ZvbycpCit3aGF0c25ldy8yLjcsLDpTdW5kYXksJzIwMDk6NDpTdW5kYXknCit3aGF0c25ldy8yLjcsLDpDb29raWUsImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKK3doYXRzbmV3LzIuNywsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKIHdoYXRzbmV3LzMuMiwsOmFmZmUsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKIHdoYXRzbmV3LzMuMiwsOmFmZmUsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQogd2hhdHNuZXcvMy4yLCw6YmVlZiwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgpAQCAtMjc5LDE0ICsyNzEsMjcgQEAKIHdoYXRzbmV3LzMuMiwsOmd6LCI+Pj4gd2l0aCB0YXJmaWxlLm9wZW4obmFtZT0nbXlhcmNoaXZlLnRhci5neicsIG1vZGU9J3c6Z3onKSBhcyB0ZjoiCiB3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259CiB3aGF0c25ldy8zLjIsLDpwcmVmaXgsem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCi13aGF0c25ldy9jaGFuZ2Vsb2csLDpwbGF0Zm9ybSw6cGxhdGZvcm06CiB3aGF0c25ldy9jaGFuZ2Vsb2csLDpneiwiOiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICIidzpneiIiIG1vZGUgZGlkbid0Igotd2hhdHNuZXcvY2hhbmdlbG9nLCw6UHl0aG9uQ21kLCJXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkIgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBGaXggRlRQIHRlc3RzIGZvciBJUHY2LCBiaW5kIHRvICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiLiIKIHdoYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOnBhc3N3b3JkLHVzZXI6cGFzc3dvcmQKLXdoYXRzbmV3LzIuNyw3ODAsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKLXdoYXRzbmV3LzIuNyw5MDcsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNyw5MDcsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDE2NTcsOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKLXdoYXRzbmV3LzIuNywxNjU3LDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCitsaWJyYXJ5L3RhcmZpbGUsMTQ5LDp4eiwneDp4eicKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDI5MCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzMyLDphY3RvciwiZm9yIGFjdG9yIGluIHJvb3QuZmluZGFsbCgncmVhbF9wZXJzb246YWN0b3InLCBucyk6IgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzMyLDpuYW1lLCJuYW1lID0gYWN0b3IuZmluZCgncmVhbF9wZXJzb246bmFtZScsIG5zKSIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMzMiw6Y2hhcmFjdGVyLCJmb3IgY2hhciBpbiBhY3Rvci5maW5kYWxsKCdyb2xlOmNoYXJhY3RlcicsIG5zKToiCitsaWJyYXJ5L3ppcGFwcCwzMSw6bWFpbiwiJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICIibXlhcHA6bWFpbiIiIgorbGlicmFyeS96aXBhcHAsODIsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKK2xpYnJhcnkvemlwYXBwLDE1NSw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gbVs6OjJdLnRvbGlzdCgpCitsaWJyYXJ5L3N5cywxMTE1LGAsIyBgYHdyYXBwZXJgYCBjcmVhdGVzIGEgYGB3cmFwKGNvcm8pYGAgY29yb3V0aW5lOgordHV0b3JpYWwvdmVudiw3Nyw6YzdiOTY0NWE2ZjM1LCJQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KSIKK3doYXRzbmV3LzMuNSw5NjUsOnJvb3QsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCit3aGF0c25ldy8zLjUsOTY1LDp3YXJuaW5nLCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJword2hhdHNuZXcvMy41LDEyOTIsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKQord2hhdHNuZXcvMy41LDEzNTQsOnJvb3QsRVJST1I6cm9vdDpleGNlcHRpb24KK3doYXRzbmV3LzMuNSwxMzU0LDpleGNlcHRpb24sRVJST1I6cm9vdDpleGNlcHRpb24KZGlmZiAtLWdpdCBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCmluZGV4IGFiZGYwNzAuLjc4ZTljNGYgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKKysrIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbApAQCAtMyw4ICszLDcgQEAKIDxoMz5Eb2NzIGZvciBvdGhlciB2ZXJzaW9uczwvaDM+CiA8dWw+CiAgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8yLjcvIj5QeXRob24gMi43IChzdGFibGUpPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjMvIj5QeXRob24gMy4zIChzdGFibGUpPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjUvIj5QeXRob24gMy41IChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC8iPlB5dGhvbiAzLjQgKHN0YWJsZSk8L2E+PC9saT4KICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG9jL3ZlcnNpb25zLyI+T2xkIHZlcnNpb25zPC9hPjwvbGk+CiA8L3VsPgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0IGIvRG9jL3R1dG9yaWFsL2FwcGVuZGl4LnJzdAppbmRleCBjZTUwYzFlLi5lMDQ0NTliIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0CisrKyBiL0RvYy90dXRvcmlhbC9hcHBlbmRpeC5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKIE9uIEJTRCdpc2ggVW5peCBzeXN0ZW1zLCBQeXRob24gc2NyaXB0cyBjYW4gYmUgbWFkZSBkaXJlY3RseSBleGVjdXRhYmxlLCBsaWtlCiBzaGVsbCBzY3JpcHRzLCBieSBwdXR0aW5nIHRoZSBsaW5lIDo6CiAKLSAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMuNAorICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMy41CiAKIChhc3N1bWluZyB0aGF0IHRoZSBpbnRlcnByZXRlciBpcyBvbiB0aGUgdXNlcidzIDplbnZ2YXI6YFBBVEhgKSBhdCB0aGUgYmVnaW5uaW5nCiBvZiB0aGUgc2NyaXB0IGFuZCBnaXZpbmcgdGhlIGZpbGUgYW4gZXhlY3V0YWJsZSBtb2RlLiAgVGhlIGBgIyFgYCBtdXN0IGJlIHRoZQpAQCAtMTA3LDcgKzEwNyw3IEBACiAKICAgID4+PiBpbXBvcnQgc2l0ZQogICAgPj4+IHNpdGUuZ2V0dXNlcnNpdGVwYWNrYWdlcygpCi0gICAnL2hvbWUvdXNlci8ubG9jYWwvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJworICAgJy9ob21lL3VzZXIvLmxvY2FsL2xpYi9weXRob24zLjUvc2l0ZS1wYWNrYWdlcycKIAogTm93IHlvdSBjYW4gY3JlYXRlIGEgZmlsZSBuYW1lZCA6ZmlsZTpgdXNlcmN1c3RvbWl6ZS5weWAgaW4gdGhhdCBkaXJlY3RvcnkgYW5kCiBwdXQgYW55dGhpbmcgeW91IHdhbnQgaW4gaXQuICBJdCB3aWxsIGFmZmVjdCBldmVyeSBpbnZvY2F0aW9uIG9mIFB5dGhvbiwgdW5sZXNzCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0IGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdAppbmRleCAxZWEyOTlmLi4wZDUxNDgwIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKQEAgLTczLDEwICs3MywxMSBAQAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZXMgKngqIGFwcGVhcnMgaW4gdGhlIGxpc3QuCiAKIAotLi4gbWV0aG9kOjogbGlzdC5zb3J0KCkKKy4uIG1ldGhvZDo6IGxpc3Quc29ydChrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkKICAgIDpub2luZGV4OgogCi0gICBTb3J0IHRoZSBpdGVtcyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKyAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGluIHBsYWNlICh0aGUgYXJndW1lbnRzIGNhbiBiZSB1c2VkIGZvciBzb3J0CisgICBjdXN0b21pemF0aW9uLCBzZWUgOmZ1bmM6YHNvcnRlZGAgZm9yIHRoZWlyIGV4cGxhbmF0aW9uKS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnJldmVyc2UoKQpAQCAtNjExLDE4ICs2MTIsMTggQEAKICAgIG9yYW5nZQogICAgcGVhcgogCi1UbyBjaGFuZ2UgYSBzZXF1ZW5jZSB5b3UgYXJlIGl0ZXJhdGluZyBvdmVyIHdoaWxlIGluc2lkZSB0aGUgbG9vcCAoZm9yCi1leGFtcGxlIHRvIGR1cGxpY2F0ZSBjZXJ0YWluIGl0ZW1zKSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZmlyc3QgbWFrZQotYSBjb3B5LiAgTG9vcGluZyBvdmVyIGEgc2VxdWVuY2UgZG9lcyBub3QgaW1wbGljaXRseSBtYWtlIGEgY29weS4gIFRoZSBzbGljZQotbm90YXRpb24gbWFrZXMgdGhpcyBlc3BlY2lhbGx5IGNvbnZlbmllbnQ6OgorSXQgaXMgc29tZXRpbWVzIHRlbXB0aW5nIHRvIGNoYW5nZSBhIGxpc3Qgd2hpbGUgeW91IGFyZSBsb29waW5nIG92ZXIgaXQ7Citob3dldmVyLCBpdCBpcyBvZnRlbiBzaW1wbGVyIGFuZCBzYWZlciB0byBjcmVhdGUgYSBuZXcgbGlzdCBpbnN0ZWFkLiA6OgogCi0gICA+Pj4gd29yZHMgPSBbJ2NhdCcsICd3aW5kb3cnLCAnZGVmZW5lc3RyYXRlJ10KLSAgID4+PiBmb3IgdyBpbiB3b3Jkc1s6XTogICMgTG9vcCBvdmVyIGEgc2xpY2UgY29weSBvZiB0aGUgZW50aXJlIGxpc3QuCi0gICAuLi4gICAgIGlmIGxlbih3KSA+IDY6Ci0gICAuLi4gICAgICAgICB3b3Jkcy5pbnNlcnQoMCwgdykKKyAgID4+PiBpbXBvcnQgbWF0aAorICAgPj4+IHJhd19kYXRhID0gWzU2LjIsIGZsb2F0KCdOYU4nKSwgNTEuNywgNTUuMywgNTIuNSwgZmxvYXQoJ05hTicpLCA0Ny44XQorICAgPj4+IGZpbHRlcmVkX2RhdGEgPSBbXQorICAgPj4+IGZvciB2YWx1ZSBpbiByYXdfZGF0YToKKyAgIC4uLiAgICAgaWYgbm90IG1hdGguaXNuYW4odmFsdWUpOgorICAgLi4uICAgICAgICAgZmlsdGVyZWRfZGF0YS5hcHBlbmQodmFsdWUpCiAgICAuLi4KLSAgID4+PiB3b3JkcwotICAgWydkZWZlbmVzdHJhdGUnLCAnY2F0JywgJ3dpbmRvdycsICdkZWZlbmVzdHJhdGUnXQorICAgPj4+IGZpbHRlcmVkX2RhdGEKKyAgIFs1Ni4yLCA1MS43LCA1NS4zLCA1Mi41LCA0Ny44XQogCiAKIC4uIF90dXQtY29uZGl0aW9uczoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IGRkNmIxYTkuLmU5NjYwODUgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjRgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjVgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjQKKyAgIHB5dGhvbjMuNQogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zNGAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjM1YCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzQKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zNQogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTYsOCArOTYsOCBAQAogcHJpbnRzIGEgd2VsY29tZSBtZXNzYWdlIHN0YXRpbmcgaXRzIHZlcnNpb24gbnVtYmVyIGFuZCBhIGNvcHlyaWdodCBub3RpY2UKIGJlZm9yZSBwcmludGluZyB0aGUgZmlyc3QgcHJvbXB0OjoKIAotICAgJCBweXRob24zLjQKLSAgIFB5dGhvbiAzLjQgKGRlZmF1bHQsIE1hciAxNiAyMDE0LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy41CisgICBQeXRob24gMy41IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKaW5kZXggZmQzNjFhZS4uOWFlNjRiMCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdApAQCAtMjE2LDE1ICsyMTYsMTUgQEAKICAgc3RhdGVtZW50cywgdGhlIGBgLU9PYGAgc3dpdGNoIHJlbW92ZXMgYm90aCBhc3NlcnQgc3RhdGVtZW50cyBhbmQgX19kb2NfXwogICBzdHJpbmdzLiAgU2luY2Ugc29tZSBwcm9ncmFtcyBtYXkgcmVseSBvbiBoYXZpbmcgdGhlc2UgYXZhaWxhYmxlLCB5b3Ugc2hvdWxkCiAgIG9ubHkgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLiAgIk9wdGltaXplZCIgbW9kdWxlcyBoYXZlCi0gIGEgLnB5byByYXRoZXIgdGhhbiBhIC5weWMgc3VmZml4IGFuZCBhcmUgdXN1YWxseSBzbWFsbGVyLiAgRnV0dXJlIHJlbGVhc2VzIG1heQorICBhbiBgYG9wdC1gYCB0YWcgYW5kIGFyZSB1c3VhbGx5IHNtYWxsZXIuICBGdXR1cmUgcmVsZWFzZXMgbWF5CiAgIGNoYW5nZSB0aGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb24uCiAKLSogQSBwcm9ncmFtIGRvZXNuJ3QgcnVuIGFueSBmYXN0ZXIgd2hlbiBpdCBpcyByZWFkIGZyb20gYSBgYC5weWNgYCBvciBgYC5weW9gYAorKiBBIHByb2dyYW0gZG9lc24ndCBydW4gYW55IGZhc3RlciB3aGVuIGl0IGlzIHJlYWQgZnJvbSBhIGBgLnB5Y2BgCiAgIGZpbGUgdGhhbiB3aGVuIGl0IGlzIHJlYWQgZnJvbSBhIGBgLnB5YGAgZmlsZTsgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGZhc3RlcgotICBhYm91dCBgYC5weWNgYCBvciBgYC5weW9gYCBmaWxlcyBpcyB0aGUgc3BlZWQgd2l0aCB3aGljaCB0aGV5IGFyZSBsb2FkZWQuCisgIGFib3V0IGBgLnB5Y2BgIGZpbGVzIGlzIHRoZSBzcGVlZCB3aXRoIHdoaWNoIHRoZXkgYXJlIGxvYWRlZC4KIAotKiBUaGUgbW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgIGNhbiBjcmVhdGUgLnB5YyBmaWxlcyAob3IgLnB5byBmaWxlcyB3aGVuCi0gIDpvcHRpb246YC1PYCBpcyB1c2VkKSBmb3IgYWxsIG1vZHVsZXMgaW4gYSBkaXJlY3RvcnkuCisqIFRoZSBtb2R1bGUgOm1vZDpgY29tcGlsZWFsbGAgY2FuIGNyZWF0ZSAucHljIGZpbGVzIGZvciBhbGwgbW9kdWxlcyBpbiBhCisgIGRpcmVjdG9yeS4KIAogKiBUaGVyZSBpcyBtb3JlIGRldGFpbCBvbiB0aGlzIHByb2Nlc3MsIGluY2x1ZGluZyBhIGZsb3cgY2hhcnQgb2YgdGhlCiAgIGRlY2lzaW9ucywgaW4gUEVQIDMxNDcuCkBAIC01NDgsNCArNTQ4LDMgQEAKIC4uIFsjXSBJbiBmYWN0IGZ1bmN0aW9uIGRlZmluaXRpb25zIGFyZSBhbHNvICdzdGF0ZW1lbnRzJyB0aGF0IGFyZSAnZXhlY3V0ZWQnOyB0aGUKICAgIGV4ZWN1dGlvbiBvZiBhIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBkZWZpbml0aW9uIGVudGVycyB0aGUgZnVuY3Rpb24gbmFtZSBpbgogICAgdGhlIG1vZHVsZSdzIGdsb2JhbCBzeW1ib2wgdGFibGUuCi0KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggNzJkNTFkZS4uMDk1NGViYSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzQnCisgICAnQzpcXFB5dGhvbjM1JwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggYzAxOTdlYS4uZjdkMmEwYSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMTgsNyArMTgsNyBAQAogCiAgICA+Pj4gaW1wb3J0IHJlcHJsaWIKICAgID4+PiByZXBybGliLnJlcHIoc2V0KCdzdXBlcmNhbGlmcmFnaWxpc3RpY2V4cGlhbGlkb2Npb3VzJykpCi0gICAic2V0KFsnYScsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAuLi5dKSIKKyAgICJ7J2EnLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgLi4ufSIKIAogVGhlIDptb2Q6YHBwcmludGAgbW9kdWxlIG9mZmVycyBtb3JlIHNvcGhpc3RpY2F0ZWQgY29udHJvbCBvdmVyIHByaW50aW5nIGJvdGgKIGJ1aWx0LWluIGFuZCB1c2VyIGRlZmluZWQgb2JqZWN0cyBpbiBhIHdheSB0aGF0IGlzIHJlYWRhYmxlIGJ5IHRoZSBpbnRlcnByZXRlci4KQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzQvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zNS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IGE0NjM0OWIuLmM3MjEwYTAgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTE5MCwxMyArMTkwLDE2IEBACiAKIC4uIGNtZG9wdGlvbjo6IC1iCiAKLSAgIElzc3VlIGEgd2FybmluZyB3aGVuIGNvbXBhcmluZyBzdHIgYW5kIGJ5dGVzLiBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQorICAgSXNzdWUgYSB3YXJuaW5nIHdoZW4gY29tcGFyaW5nIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCB3aXRoCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agd2l0aCA6Y2xhc3M6YGludGAuICBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQogICAgb3B0aW9uIGlzIGdpdmVuIHR3aWNlICg6b3B0aW9uOmAtYmJgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWZmZWN0cyBjb21wYXJpc29ucyBvZiA6Y2xhc3M6YGJ5dGVzYCB3aXRoIDpjbGFzczpgaW50YC4KIAogLi4gY21kb3B0aW9uOjogLUIKIAotICAgSWYgZ2l2ZW4sIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiBnaXZlbiwgUHl0aG9uIHdvbid0IHRyeSB0byB3cml0ZSBgYC5weWNgYCBmaWxlcyBvbiB0aGUKICAgIGltcG9ydCBvZiBzb3VyY2UgbW9kdWxlcy4gIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwppbmRleCA0NWJkZDVhLi4wMmJjYmVlIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTIxLDExICsyMSwxMSBAQAogT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91CiBkb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIGM6XFB5dGhvbjM0XFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisgICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gYzpcUHl0aG9uMzVcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKIAogb3IgZXF1aXZhbGVudGx5OjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CiAKIFRoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcgYi9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjODhhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy93aW5faW5zdGFsbGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYzA1ZjcyYS4uMjExNmMxMCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtNywyMiArNywyMTMgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioKIAogLi4gc2VjdGlvbmF1dGhvcjo6IFJvYmVydCBMZWhtYW5uIDxsZWhtYW5ucm9AZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPgogCiBUaGlzIGRvY3VtZW50IGFpbXMgdG8gZ2l2ZSBhbiBvdmVydmlldyBvZiBXaW5kb3dzLXNwZWNpZmljIGJlaGF2aW91ciB5b3Ugc2hvdWxkCiBrbm93IGFib3V0IHdoZW4gdXNpbmcgUHl0aG9uIG9uIE1pY3Jvc29mdCBXaW5kb3dzLgogCi0uLiBYWFggKG5jb2dobGFuKQotCi0gICBUaGlzIGxvb2tzIHJhdGhlciBzdGFsZSB0byBtZS4uLgotCi0KIEluc3RhbGxpbmcgUHl0aG9uCiA9PT09PT09PT09PT09PT09PQogCi1Vbmxpa2UgbW9zdCBVbml4IHN5c3RlbXMgYW5kIHNlcnZpY2VzLCBXaW5kb3dzIGRvZXMgbm90IHJlcXVpcmUgUHl0aG9uIG5hdGl2ZWx5Ci1hbmQgdGh1cyBkb2VzIG5vdCBwcmUtaW5zdGFsbCBhIHZlcnNpb24gb2YgUHl0aG9uLiAgSG93ZXZlciwgdGhlIENQeXRob24gdGVhbQorVW5saWtlIG1vc3QgVW5peCBzeXN0ZW1zIGFuZCBzZXJ2aWNlcywgV2luZG93cyBkb2VzIG5vdCBpbmNsdWRlIGEgc3lzdGVtCitzdXBwb3J0ZWQgaW5zdGFsbGF0aW9uIG9mIFB5dGhvbi4gVG8gbWFrZSBQeXRob24gYXZhaWxhYmxlLCB0aGUgQ1B5dGhvbiB0ZWFtCiBoYXMgY29tcGlsZWQgV2luZG93cyBpbnN0YWxsZXJzIChNU0kgcGFja2FnZXMpIHdpdGggZXZlcnkgYHJlbGVhc2UKLTxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4KKzxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4gVGhlc2UgaW5zdGFsbGVycworYXJlIHByaW1hcmlseSBpbnRlbmRlZCB0byBhZGQgYSBwZXItdXNlciBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLCB3aXRoIHRoZQorY29yZSBpbnRlcnByZXRlciBhbmQgbGlicmFyeSBiZWluZyB1c2VkIGJ5IGEgc2luZ2xlIHVzZXIuIFRoZSBpbnN0YWxsZXIgaXMgYWxzbworYWJsZSB0byBpbnN0YWxsIGZvciBhbGwgdXNlcnMgb2YgYSBzaW5nbGUgbWFjaGluZSwgYW5kIGEgc2VwYXJhdGUgWklQIGZpbGUgaXMKK2F2YWlsYWJsZSBmb3IgYXBwbGljYXRpb24tbG9jYWwgZGlzdHJpYnV0aW9ucy4KKworSW5zdGFsbGF0aW9uIFN0ZXBzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRm91ciBQeXRob24gMy41IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlIDMyLWJpdAorYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbCBpbml0aWFsCitkb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcworbmVjZXNzYXJ5LiBUaGUgKm9mZmxpbmUgaW5zdGFsbGVyKiBpbmNsdWRlcyB0aGUgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIGEKK2RlZmF1bHQgaW5zdGFsbGF0aW9uIGFuZCBvbmx5IHJlcXVpcmVzIGFuIGludGVybmV0IGNvbm5lY3Rpb24gZm9yIG9wdGlvbmFsCitmZWF0dXJlcy4gU2VlIDpyZWY6YGluc3RhbGwtbGF5b3V0LW9wdGlvbmAgZm9yIG90aGVyIHdheXMgdG8gYXZvaWQgZG93bmxvYWRpbmcKK2R1cmluZyBpbnN0YWxsYXRpb24uCisKK0FmdGVyIHN0YXJ0aW5nIHRoZSBpbnN0YWxsZXIsIG9uZSBvZiB0d28gb3B0aW9ucyBtYXkgYmUgc2VsZWN0ZWQ6CisKKy4uIGltYWdlOjogd2luX2luc3RhbGxlci5wbmcKKworSWYgeW91IHNlbGVjdCAiSW5zdGFsbCBOb3ciOgorCisqIFlvdSB3aWxsICpub3QqIG5lZWQgdG8gYmUgYW4gYWRtaW5pc3RyYXRvciAodW5sZXNzIGEgc3lzdGVtIHVwZGF0ZSBmb3IgdGhlCisgIEMgUnVudGltZSBMaWJyYXJ5IGlzIHJlcXVpcmVkIG9yIHlvdSBpbnN0YWxsIHRoZSA6cmVmOmBsYXVuY2hlcmAgZm9yIGFsbAorICB1c2VycykKKyogUHl0aG9uIHdpbGwgYmUgaW5zdGFsbGVkIGludG8geW91ciB1c2VyIGRpcmVjdG9yeQorKiBUaGUgOnJlZjpgbGF1bmNoZXJgIHdpbGwgYmUgaW5zdGFsbGVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9uIGF0IHRoZSBib3R0b20KKyAgb2YgdGhlIGZpcnN0IHBhY2UKKyogVGhlIHN0YW5kYXJkIGxpYnJhcnksIHRlc3Qgc3VpdGUsIGxhdW5jaGVyIGFuZCBwaXAgd2lsbCBiZSBpbnN0YWxsZWQKKyogSWYgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIHRvIHlvdXIgOmVudnZhcjpgUEFUSGAKKyogU2hvcnRjdXRzIHdpbGwgb25seSBiZSB2aXNpYmxlIGZvciB0aGUgY3VycmVudCB1c2VyCisKK1NlbGVjdGluZyAiQ3VzdG9taXplIGluc3RhbGxhdGlvbiIgd2lsbCBhbGxvdyB5b3UgdG8gc2VsZWN0IHRoZSBmZWF0dXJlcyB0bworaW5zdGFsbCwgdGhlIGluc3RhbGxhdGlvbiBsb2NhdGlvbiBhbmQgb3RoZXIgb3B0aW9ucyBvciBwb3N0LWluc3RhbGwgYWN0aW9ucy4KK1RvIGluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgb3IgYmluYXJpZXMsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHRoaXMgb3B0aW9uLgorCitUbyBwZXJmb3JtIGFuIGFsbC11c2VycyBpbnN0YWxsYXRpb24sIHlvdSBzaG91bGQgc2VsZWN0ICJDdXN0b21pemUKK2luc3RhbGxhdGlvbiIuIEluIHRoaXMgY2FzZToKKworKiBZb3UgbWF5IGJlIHJlcXVpcmVkIHRvIHByb3ZpZGUgYWRtaW5pc3RyYXRpdmUgY3JlZGVudGlhbHMgb3IgYXBwcm92YWwKKyogUHl0aG9uIHdpbGwgYmUgaW5zdGFsbGVkIGludG8gdGhlIFByb2dyYW0gRmlsZXMgZGlyZWN0b3J5CisqIFRoZSA6cmVmOmBsYXVuY2hlcmAgd2lsbCBiZSBpbnN0YWxsZWQgaW50byB0aGUgV2luZG93cyBkaXJlY3RvcnkKKyogT3B0aW9uYWwgZmVhdHVyZXMgbWF5IGJlIHNlbGVjdGVkIGR1cmluZyBpbnN0YWxsYXRpb24KKyogVGhlIHN0YW5kYXJkIGxpYnJhcnkgY2FuIGJlIHByZS1jb21waWxlZCB0byBieXRlY29kZQorKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAorKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCisKKy4uIF9pbnN0YWxsLXF1aWV0LW9wdGlvbjoKKworSW5zdGFsbGluZyBXaXRob3V0IFVJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiB0aGUgaW5zdGFsbGVyIFVJIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBmcm9tIHRoZQorY29tbWFuZCBsaW5lLCBhbGxvd2luZyBzY3JpcHRlZCBpbnN0YWxsZXJzIHRvIHJlcGxpY2F0ZSBhbiBpbnN0YWxsYXRpb24gb24gbWFueQorbWFjaGluZXMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLiAgVGhlc2Ugb3B0aW9ucyBtYXkgYWxzbyBiZSBzZXQgd2l0aG91dAorc3VwcHJlc3NpbmcgdGhlIFVJIGluIG9yZGVyIHRvIGNoYW5nZSBzb21lIG9mIHRoZSBkZWZhdWx0cy4KKworVG8gY29tcGxldGVseSBoaWRlIHRoZSBpbnN0YWxsZXIgVUkgYW5kIGluc3RhbGwgUHl0aG9uIHNpbGVudGx5LCBwYXNzIHRoZQorYGAvcXVpZXRgYCBvcHRpb24uIFRvIHNraXAgcGFzdCB0aGUgdXNlciBpbnRlcmFjdGlvbiBidXQgc3RpbGwgZGlzcGxheQorcHJvZ3Jlc3MgYW5kIGVycm9ycywgcGFzcyB0aGUgYGAvcGFzc2l2ZWBgIG9wdGlvbi4gVGhlIGBgL3VuaW5zdGFsbGBgCitvcHRpb24gbWF5IGJlIHBhc3NlZCB0byBpbW1lZGlhdGVseSBiZWdpbiByZW1vdmluZyBQeXRob24gLSBubyBwcm9tcHQgd2lsbCBiZQorZGlzcGxheWVkLgorCitBbGwgb3RoZXIgb3B0aW9ucyBhcmUgcGFzc2VkIGFzIGBgbmFtZT12YWx1ZWBgLCB3aGVyZSB0aGUgdmFsdWUgaXMgdXN1YWxseQorYGAwYGAgdG8gZGlzYWJsZSBhIGZlYXR1cmUsIGBgMWBgIHRvIGVuYWJsZSBhIGZlYXR1cmUsIG9yIGEgcGF0aC4gVGhlIGZ1bGwgbGlzdAorb2YgYXZhaWxhYmxlIG9wdGlvbnMgaXMgc2hvd24gYmVsb3cuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgSW5zdGFsbEFsbFVzZXJzICAgICAgICAgICB8IFBlcmZvcm0gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBUYXJnZXREaXIgICAgICAgICAgICAgICAgIHwgVGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgICAgICAgICAgIHwgU2VsZWN0ZWQgYmFzZWQgb24gICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluc3RhbGxBbGxVc2VycyAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIgIHwgVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAgIHwgOmZpbGU6YCVQcm9ncmFtRmlsZXMlXFxcIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvciBhbGwtdXNlciBpbnN0YWxscyAgICAgICAgICAgICAgICB8IFB5dGhvbiBYLllgIG9yIDpmaWxlOmBcICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAlUHJvZ3JhbUZpbGVzKHg4NiklXFxcICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIFguWWAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IERlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIgfCBUaGUgZGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSBmb3IgICAgfCA6ZmlsZTpgJUxvY2FsQXBwRGF0YSVcXFwgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwganVzdC1mb3ItbWUgaW5zdGFsbHMgICAgICAgICAgICAgICAgIHwgUHJvZ3JhbXNcXFB5dGhvblhZYCBvciAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmaWxlOmAlTG9jYWxBcHBEYXRhJVxcXCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ncmFtc1xcUHl0aG9uWFktMzJgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRGVmYXVsdEN1c3RvbVRhcmdldERpciAgICB8IFRoZSBkZWZhdWx0IGN1c3RvbSBpbnN0YWxsIGRpcmVjdG9yeSB8IChlbXB0eSkgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ZWQgaW4gdGhlIFVJICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQXNzb2NpYXRlRmlsZXMgICAgICAgICAgICB8IENyZWF0ZSBmaWxlIGFzc29jaWF0aW9ucyBpZiB0aGUgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsYXVuY2hlciBpcyBhbHNvIGluc3RhbGxlZC4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tcGlsZUFsbCAgICAgICAgICAgICAgICB8IENvbXBpbGUgYWxsIGBgLnB5YGAgZmlsZXMgdG8gICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYC5weWNgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgUHJlcGVuZFBhdGggICAgICAgICAgICAgICB8IEFkZCBpbnN0YWxsIGFuZCBTY3JpcHRzIGRpcmVjdG9yaWVzICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aG8gOmVudnZhcjpgUEFUSGAgYW5kIGBgLlBZYGAgdG8gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOmVudnZhcjpgUEFUSEVYVGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNob3J0Y3V0cyAgICAgICAgICAgICAgICAgfCBDcmVhdGUgc2hvcnRjdXRzIGZvciB0aGUgaW50ZXJwcmV0ZXIsfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG9jdW1lbnRhdGlvbiBhbmQgSURMRSBpZiBpbnN0YWxsZWQuIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfZG9jICAgICAgICAgICAgICAgfCBJbnN0YWxsIFB5dGhvbiBtYW51YWwgICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9kZWJ1ZyAgICAgICAgICAgICB8IEluc3RhbGwgZGVidWcgYmluYXJpZXMgICAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2RldiAgICAgICAgICAgICAgIHwgSW5zdGFsbCBkZXZlbG9wZXIgaGVhZGVycyBhbmQgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2V4ZSAgICAgICAgICAgICAgIHwgSW5zdGFsbCA6ZmlsZTpgcHl0aG9uLmV4ZWAgYW5kICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGF0ZWQgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2xhdW5jaGVyICAgICAgICAgIHwgSW5zdGFsbCA6cmVmOmBsYXVuY2hlcmAuICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluc3RhbGxMYXVuY2hlckFsbFVzZXJzICAgfCBJbnN0YWxscyA6cmVmOmBsYXVuY2hlcmAgZm9yIGFsbCAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXNlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfbGliICAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgYW5kICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5zaW9uIG1vZHVsZXMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfcGlwICAgICAgICAgICAgICAgfCBJbnN0YWxsIGJ1bmRsZWQgcGlwIGFuZCBzZXR1cHRvb2xzICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9zeW1ib2xzICAgICAgICAgICB8IEluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgKGAqYC5wZGIpICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX3RjbHRrICAgICAgICAgICAgIHwgSW5zdGFsbCBUY2wvVGsgc3VwcG9ydCBhbmQgSURMRSAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfdGVzdCAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZSAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV90b29scyAgICAgICAgICAgICB8IEluc3RhbGwgdXRpbGl0eSBzY3JpcHRzICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBMYXVuY2hlck9ubHkgICAgICAgICAgICAgIHwgT25seSBpbnN0YWxscyB0aGUgbGF1bmNoZXIuIFRoaXMgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpbGwgb3ZlcnJpZGUgbW9zdCBvdGhlciBvcHRpb25zLiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBTaW1wbGVJbnN0YWxsICAgICAgICAgICAgIHwgRGlzYWJsZSBtb3N0IGluc3RhbGwgVUkgICAgICAgICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbiAgfCBBIGN1c3RvbSBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB0aGUgfCAoZW1wdHkpICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2ltcGxpZmllZCBpbnN0YWxsIFVJIGlzIHVzZWQuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0ZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKK3lvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CisKKyAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisKK1RvIGFsbG93IHVzZXJzIHRvIGVhc2lseSBpbnN0YWxsIGEgcGVyc29uYWwgY29weSBvZiBQeXRob24gd2l0aG91dCB0aGUgdGVzdAorc3VpdGUsIHlvdSBjb3VsZCBwcm92aWRlIGEgc2hvcnRjdXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQuIFRoaXMgd2lsbAorZGlzcGxheSBhIHNpbXBsaWZpZWQgaW5pdGlhbCBwYWdlIGFuZCBkaXNhbGxvdyBjdXN0b21pemF0aW9uOjoKKworICAgIHB5dGhvbi0zLjUuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCisgICAgICAgIFNpbXBsZUluc3RhbGw9MSBTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb249Ikp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlLiIKKworKE5vdGUgdGhhdCBvbWl0dGluZyB0aGUgbGF1bmNoZXIgYWxzbyBvbWl0cyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlzIG9ubHkKK3JlY29tbWVuZGVkIGZvciBwZXItdXNlciBpbnN0YWxscyB3aGVuIHRoZXJlIGlzIGFsc28gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24KK3RoYXQgaW5jbHVkZWQgdGhlIGxhdW5jaGVyLikKKworVGhlIG9wdGlvbnMgbGlzdGVkIGFib3ZlIGNhbiBhbHNvIGJlIHByb3ZpZGVkIGluIGEgZmlsZSBuYW1lZCBgYHVuYXR0ZW5kLnhtbGBgCithbG9uZ3NpZGUgdGhlIGV4ZWN1dGFibGUuIFRoaXMgZmlsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIG9wdGlvbnMgYW5kIHZhbHVlcy4KK1doZW4gYSB2YWx1ZSBpcyBwcm92aWRlZCBhcyBhbiBhdHRyaWJ1dGUsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgbnVtYmVyIGlmCitwb3NzaWJsZS4gVmFsdWVzIHByb3ZpZGVkIGFzIGVsZW1lbnQgdGV4dCBhcmUgYWx3YXlzIGxlZnQgYXMgc3RyaW5ncy4gVGhpcworZXhhbXBsZSBmaWxlIHNldHMgdGhlIHNhbWUgb3B0aW9ucyBhbmQgdGhlIHByZXZpb3VzIGV4YW1wbGU6OgorCisgICAgPE9wdGlvbnM+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5zdGFsbEFsbFVzZXJzIiBWYWx1ZT0ibm8iIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5jbHVkZV9sYXVuY2hlciIgVmFsdWU9IjAiIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5jbHVkZV90ZXN0IiBWYWx1ZT0ibm8iIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iU2ltcGxlSW5zdGFsbCIgVmFsdWU9InllcyIgLz4KKyAgICAgICAgPE9wdGlvbiBOYW1lPSJTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb24iPkp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlPC9PcHRpb24+CisgICAgPC9PcHRpb25zPgorCisuLiBfaW5zdGFsbC1sYXlvdXQtb3B0aW9uOgorCitJbnN0YWxsaW5nIFdpdGhvdXQgRG93bmxvYWRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyBzb21lIGZlYXR1cmVzIG9mIFB5dGhvbiBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBpbml0aWFsIGluc3RhbGxlciBkb3dubG9hZCwKK3NlbGVjdGluZyB0aG9zZSBmZWF0dXJlcyBtYXkgcmVxdWlyZSBhbiBpbnRlcm5ldCBjb25uZWN0aW9uLiAgVG8gYXZvaWQgdGhpcworbmVlZCwgYWxsIHBvc3NpYmxlIGNvbXBvbmVudHMgbWF5IGJlIGRvd25sb2FkZWQgb24tZGVtYW5kIHRvIGNyZWF0ZSBhIGNvbXBsZXRlCisqbGF5b3V0KiB0aGF0IHdpbGwgbm8gbG9uZ2VyIHJlcXVpcmUgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiByZWdhcmRsZXNzIG9mIHRoZQorc2VsZWN0ZWQgZmVhdHVyZXMuIE5vdGUgdGhhdCB0aGlzIGRvd25sb2FkIG1heSBiZSBiaWdnZXIgdGhhbiByZXF1aXJlZCwgYnV0Cit3aGVyZSBhIGxhcmdlIG51bWJlciBvZiBpbnN0YWxsYXRpb25zIGFyZSBnb2luZyB0byBiZSBwZXJmb3JtZWQgaXQgaXMgdmVyeQordXNlZnVsIHRvIGhhdmUgYSBsb2NhbGx5IGNhY2hlZCBjb3B5LgorCitFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIENvbW1hbmQgUHJvbXB0IHRvIGRvd25sb2FkIGFsbCBwb3NzaWJsZQorcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNS4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCituYW1lIG9mIHlvdXIgaW5zdGFsbGVyLCBhbmQgdG8gY3JlYXRlIGxheW91dHMgaW4gdGhlaXIgb3duIGRpcmVjdG9yaWVzIHRvCithdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgorCis6OgorCisgICAgcHl0aG9uLTMuNS4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQorCitZb3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgYGAvcXVpZXRgYCBvcHRpb24gdG8gaGlkZSB0aGUgcHJvZ3Jlc3MgZGlzcGxheS4KKworCitPdGhlciBQbGF0Zm9ybXMKKy0tLS0tLS0tLS0tLS0tLQogCiBXaXRoIG9uZ29pbmcgZGV2ZWxvcG1lbnQgb2YgUHl0aG9uLCBzb21lIHBsYXRmb3JtcyB0aGF0IHVzZWQgdG8gYmUgc3VwcG9ydGVkCiBlYXJsaWVyIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIChkdWUgdG8gdGhlIGxhY2sgb2YgdXNlcnMgb3IgZGV2ZWxvcGVycykuCkBAIC02NiwxOSArMjU3LDMxIEBACiBgQWN0aXZlUHl0aG9uIDxodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVweXRob24vPmBfCiAgICAgSW5zdGFsbGVyIHdpdGggbXVsdGktcGxhdGZvcm0gY29tcGF0aWJpbGl0eSwgZG9jdW1lbnRhdGlvbiwgUHlXaW4zMgogCi1gRW50aG91Z2h0IFB5dGhvbiBEaXN0cmlidXRpb24gPGh0dHBzOi8vd3d3LmVudGhvdWdodC5jb20vcHJvZHVjdHMvZXBkLz5gXwotICAgIFBvcHVsYXIgbW9kdWxlcyAoc3VjaCBhcyBQeVdpbjMyKSB3aXRoIHRoZWlyIHJlc3BlY3RpdmUgZG9jdW1lbnRhdGlvbiwgdG9vbAotICAgIHN1aXRlIGZvciBidWlsZGluZyBleHRlbnNpYmxlIFB5dGhvbiBhcHBsaWNhdGlvbnMKK2BBbmFjb25kYSA8aHR0cDovL3d3dy5jb250aW51dW0uaW8vZG93bmxvYWRzLz5gXworICAgIFBvcHVsYXIgc2NpZW50aWZpYyBtb2R1bGVzIChzdWNoIGFzIG51bXB5LCBzY2lweSBhbmQgcGFuZGFzKSBhbmQgdGhlCisgICAgYGBjb25kYWBgIHBhY2thZ2UgbWFuYWdlci4KIAotTm90aWNlIHRoYXQgdGhlc2UgcGFja2FnZXMgYXJlIGxpa2VseSB0byBpbnN0YWxsICpvbGRlciogdmVyc2lvbnMgb2YgUHl0aG9uLgorYENhbm9weSA8aHR0cHM6Ly93d3cuZW50aG91Z2h0LmNvbS9wcm9kdWN0cy9jYW5vcHkvPmBfCisgICAgQSAiY29tcHJlaGVuc2l2ZSBQeXRob24gYW5hbHlzaXMgZW52aXJvbm1lbnQiIHdpdGggZWRpdG9ycyBhbmQgb3RoZXIKKyAgICBkZXZlbG9wbWVudCB0b29scy4KKworYFdpblB5dGhvbiA8aHR0cHM6Ly93aW5weXRob24uZ2l0aHViLmlvLz5gXworICAgIFdpbmRvd3Mtc3BlY2lmaWMgZGlzdHJpYnV0aW9uIHdpdGggcHJlYnVpbHQgc2NpZW50aWZpYyBwYWNrYWdlcyBhbmQKKyAgICB0b29scyBmb3IgYnVpbGRpbmcgcGFja2FnZXMuCisKK05vdGUgdGhhdCB0aGVzZSBwYWNrYWdlcyBtYXkgbm90IGluY2x1ZGUgdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiBQeXRob24gb3IKK290aGVyIGxpYnJhcmllcywgYW5kIGFyZSBub3QgbWFpbnRhaW5lZCBvciBzdXBwb3J0ZWQgYnkgdGhlIGNvcmUgUHl0aG9uIHRlYW0uCiAKIAogCiBDb25maWd1cmluZyBQeXRob24KID09PT09PT09PT09PT09PT09PQogCi1JbiBvcmRlciB0byBydW4gUHl0aG9uIGZsYXdsZXNzbHksIHlvdSBtaWdodCBoYXZlIHRvIGNoYW5nZSBjZXJ0YWluIGVudmlyb25tZW50Ci1zZXR0aW5ncyBpbiBXaW5kb3dzLgorVG8gcnVuIFB5dGhvbiBjb252ZW5pZW50bHkgZnJvbSBhIGNvbW1hbmQgcHJvbXB0LCB5b3UgbWlnaHQgY29uc2lkZXIgY2hhbmdpbmcKK3NvbWUgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gV2luZG93cy4gIFdoaWxlIHRoZSBpbnN0YWxsZXIgcHJvdmlkZXMgYW4KK29wdGlvbiB0byBjb25maWd1cmUgdGhlIFBBVEggYW5kIFBBVEhFWFQgdmFyaWFibGVzIGZvciB5b3UsIHRoaXMgaXMgb25seQorcmVsaWFibGUgZm9yIGEgc2luZ2xlLCBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICBJZiB5b3UgcmVndWxhcmx5IHVzZSBtdWx0aXBsZQordmVyc2lvbnMgb2YgUHl0aG9uLCBjb25zaWRlciB1c2luZyB0aGUgOnJlZjpgbGF1bmNoZXJgLgogCiAKIC4uIF9zZXR0aW5nLWVudnZhcnM6CkBAIC04NiwxNjMgKzI4OSw4NiBAQAogRXhjdXJzdXM6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2luZG93cyBoYXMgYSBidWlsdC1pbiBkaWFsb2cgZm9yIGNoYW5naW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9sbG93aW5nCi1ndWlkZSBhcHBsaWVzIHRvIFhQIGNsYXNzaWNhbCB2aWV3KTogUmlnaHQtY2xpY2sgdGhlIGljb24gZm9yIHlvdXIgbWFjaGluZQotKHVzdWFsbHkgbG9jYXRlZCBvbiB5b3VyIERlc2t0b3AgYW5kIGNhbGxlZCAiTXkgQ29tcHV0ZXIiKSBhbmQgY2hvb3NlCi06bWVudXNlbGVjdGlvbjpgUHJvcGVydGllc2AgdGhlcmUuICBUaGVuLCBvcGVuIHRoZSA6Z3VpbGFiZWw6YEFkdmFuY2VkYCB0YWIKLWFuZCBjbGljayB0aGUgOmd1aWxhYmVsOmBFbnZpcm9ubWVudCBWYXJpYWJsZXNgIGJ1dHRvbi4KK1dpbmRvd3MgYWxsb3dzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSBjb25maWd1cmVkIHBlcm1hbmVudGx5IGF0IGJvdGggdGhlCitVc2VyIGxldmVsIGFuZCB0aGUgU3lzdGVtIGxldmVsLCBvciB0ZW1wb3JhcmlseSBpbiBhIGNvbW1hbmQgcHJvbXB0LgogCi1JbiBzaG9ydCwgeW91ciBwYXRoIGlzOgorVG8gdGVtcG9yYXJpbHkgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcywgb3BlbiBDb21tYW5kIFByb21wdCBhbmQgdXNlIHRoZQorOmNvbW1hbmQ6YHNldGAgY29tbWFuZDo6CiAKLSAgICA6bWVudXNlbGVjdGlvbjpgTXkgQ29tcHV0ZXIKLSAgICAtLT4gUHJvcGVydGllcwotICAgIC0tPiBBZHZhbmNlZAotICAgIC0tPiBFbnZpcm9ubWVudCBWYXJpYWJsZXNgCisgICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNTslUEFUSCUKKyAgICBDOlw+c2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKKyAgICBDOlw+cHl0aG9uCiAKK1RoZXNlIGNoYW5nZXMgd2lsbCBhcHBseSB0byBhbnkgZnVydGhlciBjb21tYW5kcyBleGVjdXRlZCBpbiB0aGF0IGNvbnNvbGUsIGFuZAord2lsbCBiZSBpbmhlcml0ZWQgYnkgYW55IGFwcGxpY2F0aW9ucyBzdGFydGVkIGZyb20gdGhlIGNvbnNvbGUuCisKK0luY2x1ZGluZyB0aGUgdmFyaWFibGUgbmFtZSB3aXRoaW4gcGVyY2VudCBzaWducyB3aWxsIGV4cGFuZCB0byB0aGUgZXhpc3RpbmcKK3ZhbHVlLCBhbGxvd2luZyB5b3UgdG8gYWRkIHlvdXIgbmV3IHZhbHVlIGF0IGVpdGhlciB0aGUgc3RhcnQgb3IgdGhlIGVuZC4KK01vZGlmeWluZyA6ZW52dmFyOmBQQVRIYCBieSBhZGRpbmcgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nCis6cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgdG8gdGhlIHN0YXJ0IGlzIGEgY29tbW9uIHdheSB0byBlbnN1cmUgdGhlIGNvcnJlY3QgdmVyc2lvbgorb2YgUHl0aG9uIGlzIGxhdW5jaGVkLgorCitUbyBwZXJtYW5lbnRseSBtb2RpZnkgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBjbGljayBTdGFydCBhbmQgc2VhcmNoCitmb3IgJ2VkaXQgZW52aXJvbm1lbnQgdmFyaWFibGVzJywgb3Igb3BlbiBTeXN0ZW0gcHJvcGVydGllcywgOmd1aWxhYmVsOmBBZHZhbmNlZAorc3lzdGVtIHNldHRpbmdzYCBhbmQgY2xpY2sgdGhlIDpndWlsYWJlbDpgRW52aXJvbm1lbnQgVmFyaWFibGVzYCBidXR0b24uCiBJbiB0aGlzIGRpYWxvZywgeW91IGNhbiBhZGQgb3IgbW9kaWZ5IFVzZXIgYW5kIFN5c3RlbSB2YXJpYWJsZXMuIFRvIGNoYW5nZQogU3lzdGVtIHZhcmlhYmxlcywgeW91IG5lZWQgbm9uLXJlc3RyaWN0ZWQgYWNjZXNzIHRvIHlvdXIgbWFjaGluZQogKGkuZS4gQWRtaW5pc3RyYXRvciByaWdodHMpLgogCi1Bbm90aGVyIHdheSBvZiBhZGRpbmcgdmFyaWFibGVzIHRvIHlvdXIgZW52aXJvbm1lbnQgaXMgdXNpbmcgdGhlIDpjb21tYW5kOmBzZXRgCi1jb21tYW5kOjoKKy4uIG5vdGU6OgogCi0gICAgc2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKKyAgICBXaW5kb3dzIHdpbGwgY29uY2F0ZW5hdGUgVXNlciB2YXJpYWJsZXMgKmFmdGVyKiBTeXN0ZW0gdmFyaWFibGVzLCB3aGljaCBtYXkKKyAgICBjYXVzZSB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBtb2RpZnlpbmcgOmVudnZhcjpgUEFUSGAuCiAKLVRvIG1ha2UgdGhpcyBzZXR0aW5nIHBlcm1hbmVudCwgeW91IGNvdWxkIGFkZCB0aGUgY29ycmVzcG9uZGluZyBjb21tYW5kIGxpbmUgdG8KLXlvdXIgOmZpbGU6YGF1dG9leGVjLmJhdGAuIDpwcm9ncmFtOmBtc2NvbmZpZ2AgaXMgYSBncmFwaGljYWwgaW50ZXJmYWNlIHRvIHRoaXMKLWZpbGUuCi0KLVZpZXdpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBhbHNvIGJlIGRvbmUgbW9yZSBzdHJhaWdodC1mb3J3YXJkOiBUaGUKLWNvbW1hbmQgcHJvbXB0IHdpbGwgZXhwYW5kIHN0cmluZ3Mgd3JhcHBlZCBpbnRvIHBlcmNlbnQgc2lnbnMgYXV0b21hdGljYWxseTo6Ci0KLSAgICBlY2hvICVQQVRIJQotCi1Db25zdWx0IDpjb21tYW5kOmBzZXQgLz9gIGZvciBkZXRhaWxzIG9uIHRoaXMgYmVoYXZpb3VyLgorICAgIFRoZSA6ZW52dmFyOmBQWVRIT05QQVRIYCB2YXJpYWJsZSBpcyB1c2VkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBQeXRob24gMiBhbmQKKyAgICBQeXRob24gMywgc28geW91IHNob3VsZCBub3QgcGVybWFuZW50bHkgY29uZmlndXJlIHRoaXMgdmFyaWFibGUgdW5sZXNzIGl0CisgICAgb25seSBpbmNsdWRlcyBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBvZiB5b3VyIGluc3RhbGxlZCBQeXRob24KKyAgICB2ZXJzaW9ucy4KIAogLi4gc2VlYWxzbzo6CiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTAwODQzCisgICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA4NDMKICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBXaW5kb3dzIE5UCiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMzEwNTE5CisgICAgaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2NjNzU0MjUwLmFzcHgKKyAgICAgIFRoZSBTRVQgY29tbWFuZCwgZm9yIHRlbXBvcmFyaWx5IG1vZGlmeWluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworICAgIGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc1NTEwNC5hc3B4CisgICAgICBUaGUgU0VUWCBjb21tYW5kLCBmb3IgcGVybWFuZW50bHkgbW9kaWZ5aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworCisgICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8zMTA1MTkKICAgICAgIEhvdyBUbyBNYW5hZ2UgRW52aXJvbm1lbnQgVmFyaWFibGVzIGluIFdpbmRvd3MgWFAKIAotICAgaHR0cDovL3d3dy5jaGVtLmdsYS5hYy51ay9+bG91aXMvc29mdHdhcmUvZmFxL3ExLmh0bWwKKyAgICBodHRwOi8vd3d3LmNoZW0uZ2xhLmFjLnVrL35sb3Vpcy9zb2Z0d2FyZS9mYXEvcTEuaHRtbAogICAgICAgU2V0dGluZyBFbnZpcm9ubWVudCB2YXJpYWJsZXMsIExvdWlzIEouIEZhcnJ1Z2lhCiAKLQogLi4gX3dpbmRvd3MtcGF0aC1tb2Q6CiAKIEZpbmRpbmcgdGhlIFB5dGhvbiBleGVjdXRhYmxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KLWludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBBcyBvZgotUHl0aG9uIDMuMywgdGhlIGluc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCitpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gVGhlCitpbnN0YWxsZXIgZm9yIFB5dGhvbiAzLjUgYW5kIGxhdGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotQXQgdGhlICJDdXN0b21pemUgUHl0aG9uIDMuMyIgc2NyZWVuLCBhbiBvcHRpb24gY2FsbGVkCi0iQWRkIHB5dGhvbi5leGUgdG8gc2VhcmNoIHBhdGgiIGNhbiBiZSBlbmFibGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBwbGFjZQoteW91ciBpbnN0YWxsYXRpb24gaW50byB0aGUgOmVudnZhcjpgJVBBVEglYC4gVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUKLTpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKK09uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiAzLjUgdG8KK1BBVEgiIGNhbiBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCis6ZW52dmFyOmBQQVRIYC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgOmZpbGU6YFNjcmlwdHNcXGAgZm9sZGVyIGlzIGFsc28gYWRkZWQuCitUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSA6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLCBhbmQKKzpjb21tYW5kOmBwaXBgIG9yIC4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgogc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLCBzZWUgOnJlZjpgdXNpbmctb24tY21kbGluZWAgZG9jdW1lbnRhdGlvbi4KIAogSWYgeW91IGRvbid0IGVuYWJsZSB0aGlzIG9wdGlvbiBhdCBpbnN0YWxsIHRpbWUsIHlvdSBjYW4gYWx3YXlzIHJlLXJ1biB0aGUKLWluc3RhbGxlciB0byBjaG9vc2UgaXQuCitpbnN0YWxsZXIsIHNlbGVjdCBNb2RpZnksIGFuZCBlbmFibGUgaXQuICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIG1hbnVhbGx5Cittb2RpZnkgdGhlIDplbnZ2YXI6YFBBVEhgIHVzaW5nIHRoZSBkaXJlY3Rpb25zIGluIDpyZWY6YHNldHRpbmctZW52dmFyc2AuICBZb3UKK25lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgUEFUSGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5CitvZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24sIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuICBBbgorZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFscmVhZHkKK2V4aXN0ZWQpOjoKIAotVGhlIGFsdGVybmF0aXZlIGlzIG1hbnVhbGx5IG1vZGlmeWluZyB0aGUgOmVudnZhcjpgJVBBVEglYCB1c2luZyB0aGUKLWRpcmVjdGlvbnMgaW4gOnJlZjpgc2V0dGluZy1lbnZ2YXJzYC4gWW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYAotZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwKLWRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuIEFuIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vawotbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYXJlIFdpbmRvd3MnIGRlZmF1bHQpOjoKLQotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24zMwotCi0KLUZpbmRpbmcgbW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tCi0KLVB5dGhvbiB1c3VhbGx5IHN0b3JlcyBpdHMgbGlicmFyeSAoYW5kIHRoZXJlYnkgeW91ciBzaXRlLXBhY2thZ2VzIGZvbGRlcikgaW4gdGhlCi1pbnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgU28sIGlmIHlvdSBoYWQgaW5zdGFsbGVkIFB5dGhvbiB0bwotOmZpbGU6YEM6XFxQeXRob25cXGAsIHRoZSBkZWZhdWx0IGxpYnJhcnkgd291bGQgcmVzaWRlIGluCi06ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxgIGFuZCB0aGlyZC1wYXJ0eSBtb2R1bGVzIHNob3VsZCBiZSBzdG9yZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXHNpdGUtcGFja2FnZXNcXGAuCi0KLVRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uIFdpbmRvd3M6Ci0KLSogQW4gZW1wdHkgZW50cnkgaXMgYWRkZWQgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAotICBkaXJlY3RvcnkuCi0KLSogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTlBBVEhgIGV4aXN0cywgYXMgZGVzY3JpYmVkIGluCi0gIDpyZWY6YHVzaW5nLW9uLWVudnZhcnNgLCBpdHMgZW50cmllcyBhcmUgYWRkZWQgbmV4dC4gIE5vdGUgdGhhdCBvbiBXaW5kb3dzLAotICBwYXRocyBpbiB0aGlzIHZhcmlhYmxlIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMsIHRvIGRpc3Rpbmd1aXNoIHRoZW0KLSAgZnJvbSB0aGUgY29sb24gdXNlZCBpbiBkcml2ZSBpZGVudGlmaWVycyAoYGBDOlxgYCBldGMuKS4KLQotKiBBZGRpdGlvbmFsICJhcHBsaWNhdGlvbiBwYXRocyIgY2FuIGJlIGFkZGVkIGluIHRoZSByZWdpc3RyeSBhcyBzdWJrZXlzIG9mCi0gIDpzYW1wOmBcXFNPRlRXQVJFXFxQeXRob25cXFB5dGhvbkNvcmVcXHt2ZXJzaW9ufVxcUHl0aG9uUGF0aGAgdW5kZXIgYm90aCB0aGUKLSAgYGBIS0VZX0NVUlJFTlRfVVNFUmBgIGFuZCBgYEhLRVlfTE9DQUxfTUFDSElORWBgIGhpdmVzLiAgU3Via2V5cyB3aGljaCBoYXZlCi0gIHNlbWljb2xvbi1kZWxpbWl0ZWQgcGF0aCBzdHJpbmdzIGFzIHRoZWlyIGRlZmF1bHQgdmFsdWUgd2lsbCBjYXVzZSBlYWNoIHBhdGgKLSAgdG8gYmUgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYC4gIChOb3RlIHRoYXQgYWxsIGtub3duIGluc3RhbGxlcnMgb25seSB1c2UKLSAgSEtMTSwgc28gSEtDVSBpcyB0eXBpY2FsbHkgZW1wdHkuKQotCi0qIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05IT01FYCBpcyBzZXQsIGl0IGlzIGFzc3VtZWQgYXMKLSAgIlB5dGhvbiBIb21lIi4gIE90aGVyd2lzZSwgdGhlIHBhdGggb2YgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUgaXMgdXNlZCB0bwotICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGBgTGliXG9zLnB5YGApIHRvIGRlZHVjZSB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEKLSAgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYAotICAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0IGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUKLSAgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aCBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgotCi0qIElmIHRoZSBQeXRob24gSG9tZSBjYW5ub3QgYmUgbG9jYXRlZCwgbm8gOmVudnZhcjpgUFlUSE9OUEFUSGAgaXMgc3BlY2lmaWVkIGluCi0gIHRoZSBlbnZpcm9ubWVudCwgYW5kIG5vIHJlZ2lzdHJ5IGVudHJpZXMgY2FuIGJlIGZvdW5kLCBhIGRlZmF1bHQgcGF0aCB3aXRoCi0gIHJlbGF0aXZlIGVudHJpZXMgaXMgdXNlZCAoZS5nLiBgYC5cTGliOy5ccGxhdC13aW5gYCwgZXRjKS4KLQotVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6Ci0KLSogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCi0gIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCi0gIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKLSAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KLQotKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAotICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCi0gIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCi0KLSogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGlzIG5vIHJlZ2lzdHJ5IChlZywgZnJvemVuIC5leGUsIHNvbWUKLSAgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAotICByZWxhdGl2ZSwgcGF0aHMuCi0KLQotRXhlY3V0aW5nIHNjcmlwdHMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUFzIG9mIFB5dGhvbiAzLjMsIFB5dGhvbiBpbmNsdWRlcyBhIGxhdW5jaGVyIHdoaWNoIGZhY2lsaXRhdGVzIHJ1bm5pbmcgUHl0aG9uCi1zY3JpcHRzLiBTZWUgOnJlZjpgbGF1bmNoZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi1FeGVjdXRpbmcgc2NyaXB0cyB3aXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XaXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIgaW5zdGFsbGVkLCBQeXRob24gc2NyaXB0cyAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uCi1gYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5IDpwcm9ncmFtOmBweXRob24uZXhlYCBieSBkZWZhdWx0LiAgVGhpcyBleGVjdXRhYmxlCi1vcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cyBvcGVuIGV2ZW4gaWYgdGhlIHByb2dyYW0gdXNlcyBhIEdVSS4gIElmIHlvdSBkbwotbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUgZXh0ZW5zaW9uIGBgLnB5d2BgIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNjcmlwdAotdG8gYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbncuZXhlYCBieSBkZWZhdWx0IChib3RoIGV4ZWN1dGFibGVzIGFyZQotbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsIG9mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkpLiAgVGhpcwotc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uIHN0YXJ0dXAuCi0KLVlvdSBjYW4gYWxzbyBtYWtlIGFsbCBgYC5weWBgIHNjcmlwdHMgZXhlY3V0ZSB3aXRoIDpwcm9ncmFtOmBweXRob253LmV4ZWAsCi1zZXR0aW5nIHRoaXMgdGhyb3VnaCB0aGUgdXN1YWwgZmFjaWxpdGllcywgZm9yIGV4YW1wbGUgKG1pZ2h0IHJlcXVpcmUKLWFkbWluaXN0cmF0aXZlIHJpZ2h0cyk6Ci0KLSMuIExhdW5jaCBhIGNvbW1hbmQgcHJvbXB0LgotIy4gQXNzb2NpYXRlIHRoZSBjb3JyZWN0IGZpbGUgZ3JvdXAgd2l0aCBgYC5weWBgIHNjcmlwdHM6OgotCi0gICAgICBhc3NvYyAucHk9UHl0aG9uLkZpbGUKLQotIy4gUmVkaXJlY3QgYWxsIFB5dGhvbiBmaWxlcyB0byB0aGUgbmV3IGV4ZWN1dGFibGU6OgotCi0gICAgICBmdHlwZSBQeXRob24uRmlsZT1DOlxQYXRoXHRvXHB5dGhvbncuZXhlICIlMSIgJSoKLQorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjUKIAogLi4gX2xhdW5jaGVyOgogCkBAIC0yNTEsMjEgKzM3NywyNiBAQAogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotVGhlIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cyBpcyBhIHV0aWxpdHkgd2hpY2ggYWlkcyBpbiB0aGUgbG9jYXRpb24gYW5kCi1leGVjdXRpb24gb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKK1RoZSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MgaXMgYSB1dGlsaXR5IHdoaWNoIGFpZHMgaW4gbG9jYXRpbmcgYW5kCitleGVjdXRpbmcgb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKIGNvbW1hbmQtbGluZSkgdG8gaW5kaWNhdGUgYSBwcmVmZXJlbmNlIGZvciBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLCBhbmQKIHdpbGwgbG9jYXRlIGFuZCBleGVjdXRlIHRoYXQgdmVyc2lvbi4KIAorVW5saWtlIHRoZSA6ZW52dmFyOmBQQVRIYCB2YXJpYWJsZSwgdGhlIGxhdW5jaGVyIHdpbGwgY29ycmVjdGx5IHNlbGVjdCB0aGUgbW9zdAorYXBwcm9wcmlhdGUgdmVyc2lvbiBvZiBQeXRob24uIEl0IHdpbGwgcHJlZmVyIHBlci11c2VyIGluc3RhbGxhdGlvbnMgb3Zlcgorc3lzdGVtLXdpZGUgb25lcywgYW5kIG9yZGVycyBieSBsYW5ndWFnZSB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBtb3N0CityZWNlbnRseSBpbnN0YWxsZWQgdmVyc2lvbi4KKwogR2V0dGluZyBzdGFydGVkCiAtLS0tLS0tLS0tLS0tLS0KIAogRnJvbSB0aGUgY29tbWFuZC1saW5lCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotWW91IHNob3VsZCBlbnN1cmUgdGhlIGxhdW5jaGVyIGlzIG9uIHlvdXIgUEFUSCAtIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzCi1pbnN0YWxsZWQgaXQgbWF5IGFscmVhZHkgYmUgdGhlcmUsIGJ1dCBjaGVjayBqdXN0IGluIGNhc2UgaXQgaXMgbm90LgotCi1Gcm9tIGEgY29tbWFuZC1wcm9tcHQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorU3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24gMy4zIGFuZCBsYXRlciB3aWxsIHB1dCB0aGUgbGF1bmNoZXIgb24geW91cgorOmVudnZhcjpgUEFUSGAuIFRoZSBsYXVuY2hlciBpcyBjb21wYXRpYmxlIHdpdGggYWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBvZgorUHl0aG9uLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQuIFRvIGNoZWNrIHRoYXQgdGhlCitsYXVuY2hlciBpcyBhdmFpbGFibGUsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIENvbW1hbmQgUHJvbXB0OgogCiA6OgogCkBAIC0yOTEsNiArNDIyLDI4IEBACiAKIFlvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDMueCBzdGFydHMuCiAKK0lmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IGRvIG5vdCBoYXZlIHRoZSBsYXVuY2hlciBpbnN0YWxsZWQ6CisKKzo6CisKKyAgJ3B5JyBpcyBub3QgcmVjb2duaXplZCBhcyBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBjb21tYW5kLAorICBvcGVyYWJsZSBwcm9ncmFtIG9yIGJhdGNoIGZpbGUuCisKK1Blci11c2VyIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIGRvIG5vdCBhZGQgdGhlIGxhdW5jaGVyIHRvIDplbnZ2YXI6YFBBVEhgCit1bmxlc3MgdGhlIG9wdGlvbiB3YXMgc2VsZWN0ZWQgb24gaW5zdGFsbGF0aW9uLgorCitWaXJ0dWFsIGVudmlyb25tZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK0lmIHRoZSBsYXVuY2hlciBpcyBydW4gd2l0aCBubyBleHBsaWNpdCBQeXRob24gdmVyc2lvbiBzcGVjaWZpY2F0aW9uLCBhbmQgYQordmlydHVhbCBlbnZpcm9ubWVudCAoY3JlYXRlZCB3aXRoIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IDptb2Q6YHZlbnZgIG1vZHVsZSBvcgordGhlIGV4dGVybmFsIGBgdmlydHVhbGVudmBgIHRvb2wpIGFjdGl2ZSwgdGhlIGxhdW5jaGVyIHdpbGwgcnVuIHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudCdzIGludGVycHJldGVyIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgb25lLiAgVG8gcnVuIHRoZSBnbG9iYWwKK2ludGVycHJldGVyLCBlaXRoZXIgZGVhY3RpdmF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgb3IgZXhwbGljaXRseSBzcGVjaWZ5Cit0aGUgZ2xvYmFsIFB5dGhvbiB2ZXJzaW9uLgorCiBGcm9tIGEgc2NyaXB0CiBeXl5eXl5eXl5eXl5eCiAKQEAgLTMyNiw3ICs0NzksNyBAQAogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgbGF1bmNoZXIgc2hvdWxkIGhhdmUgYmVlbiBhc3NvY2lhdGVkIHdpdGggUHl0aG9uIGZpbGVzIChpLmUuIGBgLnB5YGAsCi1gYC5weXdgYCwgYGAucHljYGAsIGBgLnB5b2BgIGZpbGVzKSB3aGVuIGl0IHdhcyBpbnN0YWxsZWQuICBUaGlzIG1lYW5zIHRoYXQKK2BgLnB5d2BgLCBgYC5weWNgYCBmaWxlcykgd2hlbiBpdCB3YXMgaW5zdGFsbGVkLiAgVGhpcyBtZWFucyB0aGF0CiB3aGVuIHlvdSBkb3VibGUtY2xpY2sgb24gb25lIG9mIHRoZXNlIGZpbGVzIGZyb20gV2luZG93cyBleHBsb3JlciB0aGUgbGF1bmNoZXIKIHdpbGwgYmUgdXNlZCwgYW5kIHRoZXJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmYWNpbGl0aWVzIGRlc2NyaWJlZCBhYm92ZSB0bwogaGF2ZSB0aGUgc2NyaXB0IHNwZWNpZnkgdGhlIHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuCkBAIC0zNjUsNiArNTE4LDE2IEBACiBvbiBXaW5kb3dzIHdoaWNoIHlvdSBob3BlIHdpbGwgYmUgdXNlZnVsIG9uIFVuaXgsIHlvdSBzaG91bGQgdXNlIG9uZSBvZiB0aGUKIHNoZWJhbmcgbGluZXMgc3RhcnRpbmcgd2l0aCBgYC91c3JgYC4KIAorQW55IG9mIHRoZSBhYm92ZSB2aXJ0dWFsIGNvbW1hbmRzIGNhbiBiZSBzdWZmaXhlZCB3aXRoIGFuIGV4cGxpY2l0IHZlcnNpb24KKyhlaXRoZXIganVzdCB0aGUgbWFqb3IgdmVyc2lvbiwgb3IgdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uKSAtIGZvciBleGFtcGxlCitgYC91c3IvYmluL3B5dGhvbjIuN2BgIC0gd2hpY2ggd2lsbCBjYXVzZSB0aGF0IHNwZWNpZmljIHZlcnNpb24gdG8gYmUgbG9jYXRlZAorYW5kIHVzZWQuCisKK1RoZSBgYC91c3IvYmluL2VudmBgIGZvcm0gb2Ygc2hlYmFuZyBsaW5lIGhhcyBvbmUgZnVydGhlciBzcGVjaWFsIHByb3BlcnR5LgorQmVmb3JlIGxvb2tpbmcgZm9yIGluc3RhbGxlZCBQeXRob24gaW50ZXJwcmV0ZXJzLCB0aGlzIGZvcm0gd2lsbCBzZWFyY2ggdGhlCitleGVjdXRhYmxlIDplbnZ2YXI6YFBBVEhgIGZvciBhIFB5dGhvbiBleGVjdXRhYmxlLiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQorYmVoYXZpb3VyIG9mIHRoZSBVbml4IGBgZW52YGAgcHJvZ3JhbSwgd2hpY2ggcGVyZm9ybXMgYSA6ZW52dmFyOmBQQVRIYCBzZWFyY2guCisKIEFyZ3VtZW50cyBpbiBzaGViYW5nIGxpbmVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0zODMsMTcgKzU0NiwxNiBAQAogQ3VzdG9taXphdGlvbiB2aWEgSU5JIGZpbGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotICAgIFR3byAuaW5pIGZpbGVzIHdpbGwgYmUgc2VhcmNoZWQgYnkgdGhlIGxhdW5jaGVyIC0gYGBweS5pbmlgYCBpbiB0aGUKLSAgICBjdXJyZW50IHVzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQKLSAgICBieSBjYWxsaW5nIHRoZSBXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpCi0gICAgYW5kIGBgcHkuaW5pYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlci4gIFRoZSBzYW1lIC5pbmkKLSAgICBmaWxlcyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuCi0gICAgcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbiAoaS5lLiBweXcuZXhlKQorVHdvIC5pbmkgZmlsZXMgd2lsbCBiZSBzZWFyY2hlZCBieSB0aGUgbGF1bmNoZXIgLSBgYHB5LmluaWBgIGluIHRoZSBjdXJyZW50Cit1c2VyJ3MgImFwcGxpY2F0aW9uIGRhdGEiIGRpcmVjdG9yeSAoaS5lLiB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5IGNhbGxpbmcgdGhlCitXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpIGFuZCBgYHB5LmluaWBgIGluIHRoZQorc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGxhdW5jaGVyLiBUaGUgc2FtZSAuaW5pIGZpbGVzIGFyZSB1c2VkIGZvciBib3RoIHRoZQorJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuIHB5LmV4ZSkgYW5kIGZvciB0aGUgJ3dpbmRvd3MnIHZlcnNpb24KKyhpLmUuIHB5dy5leGUpCiAKLSAgICBDdXN0b21pemF0aW9uIHNwZWNpZmllZCBpbiB0aGUgImFwcGxpY2F0aW9uIGRpcmVjdG9yeSIgd2lsbCBoYXZlCi0gICAgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUgbmV4dCB0byB0aGUgZXhlY3V0YWJsZSwgc28gYSB1c2VyLCB3aG8gbWF5IG5vdAotICAgIGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSAuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZQotICAgIGNvbW1hbmRzIGluIHRoYXQgZ2xvYmFsIC5pbmkgZmlsZSkKK0N1c3RvbWl6YXRpb24gc3BlY2lmaWVkIGluIHRoZSAiYXBwbGljYXRpb24gZGlyZWN0b3J5IiB3aWxsIGhhdmUgcHJlY2VkZW5jZSBvdmVyCit0aGUgb25lIG5leHQgdG8gdGhlIGV4ZWN1dGFibGUsIHNvIGEgdXNlciwgd2hvIG1heSBub3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlCisuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZSBjb21tYW5kcyBpbiB0aGF0IGdsb2JhbCAuaW5pIGZpbGUpCiAKIEN1c3RvbWl6aW5nIGRlZmF1bHQgUHl0aG9uIHZlcnNpb25zCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtNDg4LDYgKzY1MCw5OSBAQAogdGFyZ2V0IFB5dGhvbi4KIAogCisKKy4uIGZpbmRpbmdfbW9kdWxlczoKKworRmluZGluZyBtb2R1bGVzCis9PT09PT09PT09PT09PT0KKworUHl0aG9uIHVzdWFsbHkgc3RvcmVzIGl0cyBsaWJyYXJ5IChhbmQgdGhlcmVieSB5b3VyIHNpdGUtcGFja2FnZXMgZm9sZGVyKSBpbiB0aGUKK2luc3RhbGxhdGlvbiBkaXJlY3RvcnkuICBTbywgaWYgeW91IGhhZCBpbnN0YWxsZWQgUHl0aG9uIHRvCis6ZmlsZTpgQzpcXFB5dGhvblxcYCwgdGhlIGRlZmF1bHQgbGlicmFyeSB3b3VsZCByZXNpZGUgaW4KKzpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgorOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KKworVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKKworKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CisgIGRpcmVjdG9yeS4KKworKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgZXhpc3RzLCBhcyBkZXNjcmliZWQgaW4KKyAgOnJlZjpgdXNpbmctb24tZW52dmFyc2AsIGl0cyBlbnRyaWVzIGFyZSBhZGRlZCBuZXh0LiAgTm90ZSB0aGF0IG9uIFdpbmRvd3MsCisgIHBhdGhzIGluIHRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucywgdG8gZGlzdGluZ3Vpc2ggdGhlbQorICBmcm9tIHRoZSBjb2xvbiB1c2VkIGluIGRyaXZlIGlkZW50aWZpZXJzIChgYEM6XGBgIGV0Yy4pLgorCisqIEFkZGl0aW9uYWwgImFwcGxpY2F0aW9uIHBhdGhzIiBjYW4gYmUgYWRkZWQgaW4gdGhlIHJlZ2lzdHJ5IGFzIHN1YmtleXMgb2YKKyAgOnNhbXA6YFxcU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3ZlcnNpb259XFxQeXRob25QYXRoYCB1bmRlciBib3RoIHRoZQorICBgYEhLRVlfQ1VSUkVOVF9VU0VSYGAgYW5kIGBgSEtFWV9MT0NBTF9NQUNISU5FYGAgaGl2ZXMuICBTdWJrZXlzIHdoaWNoIGhhdmUKKyAgc2VtaWNvbG9uLWRlbGltaXRlZCBwYXRoIHN0cmluZ3MgYXMgdGhlaXIgZGVmYXVsdCB2YWx1ZSB3aWxsIGNhdXNlIGVhY2ggcGF0aAorICB0byBiZSBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiAgKE5vdGUgdGhhdCBhbGwga25vd24gaW5zdGFsbGVycyBvbmx5IHVzZQorICBIS0xNLCBzbyBIS0NVIGlzIHR5cGljYWxseSBlbXB0eS4pCisKKyogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcworICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQorICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCisgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQorICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisKKyogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KKyAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKKyAgcmVsYXRpdmUgZW50cmllcyBpcyB1c2VkIChlLmcuIGBgLlxMaWI7LlxwbGF0LXdpbmBgLCBldGMpLgorCitJZiBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaXMgZm91bmQgYWxvbmdzaWRlIHRoZSBtYWluIGV4ZWN1dGFibGUgb3IgaW4gdGhlCitkaXJlY3Rvcnkgb25lIGxldmVsIGFib3ZlIHRoZSBleGVjdXRhYmxlLCB0aGUgZm9sbG93aW5nIHZhcmlhdGlvbnMgYXBwbHk6CisKKyogSWYgYGBob21lYGAgaXMgYW4gYWJzb2x1dGUgcGF0aCBhbmQgOmVudnZhcjpgUFlUSE9OSE9NRWAgaXMgbm90IHNldCwgdGhpcworICBwYXRoIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlIHdoZW4gZGVkdWNpbmcgdGhlCisgIGhvbWUgbG9jYXRpb24uCisKKyogSWYgYGBhcHBsb2NhbGBgIGlzIHNldCB0byB0cnVlLCB0aGUgYGBob21lYGAgcHJvcGVydHkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZQorICBpcyBhbHdheXMgdXNlZCBhcyB0aGUgaG9tZSBwYXRoLCBhbmQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciByZWdpc3RyeQorICB2YWx1ZXMgYWZmZWN0aW5nIHRoZSBwYXRoIGFyZSBpZ25vcmVkLiBUaGUgbGFuZG1hcmsgZmlsZSBpcyBub3QgY2hlY2tlZC4KKworVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CisKKyogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCisgIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCisgIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKKyAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KKworKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAorICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCisgIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCisKKyogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGFyZSBubyByZWdpc3RyeSB2YWx1ZSAoZnJvemVuIC5leGUsCisgIHNvbWUgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAorICByZWxhdGl2ZSwgcGF0aHMuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKK2ZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CisKKyogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCisgIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCisgIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgorICBJdCB3aWxsIGFsc28gaWdub3JlIHVzZXIgc2l0ZS1wYWNrYWdlcyBhbmQgb3RoZXIgcGF0aHMgbGlzdGVkIGluIHRoZQorICByZWdpc3RyeS4KKworKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzUuZGxsYCBpbiB5b3VyIG93bgorICBleGVjdXRhYmxlLCBleHBsaWNpdGx5IGNhbGwgOmM6ZnVuYzpgUHlfU2V0UGF0aGAgb3IgKGF0IGxlYXN0KQorICA6YzpmdW5jOmBQeV9TZXRQcm9ncmFtTmFtZWAgYmVmb3JlIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgorCisqIENsZWFyIGFuZC9vciBvdmVyd3JpdGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgYW5kIHNldCA6ZW52dmFyOmBQWVRIT05IT01FYAorICBiZWZvcmUgbGF1bmNoaW5nIDpmaWxlOmBweXRob24uZXhlYCBmcm9tIHlvdXIgYXBwbGljYXRpb24uCisKKyogSWYgeW91IGNhbm5vdCB1c2UgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb25zIChmb3IgZXhhbXBsZSwgeW91IGFyZSBhCisgIGRpc3RyaWJ1dGlvbiB0aGF0IGFsbG93cyBwZW9wbGUgdG8gcnVuIDpmaWxlOmBweXRob24uZXhlYCBkaXJlY3RseSksIGVuc3VyZQorICB0aGF0IHRoZSBsYW5kbWFyayBmaWxlICg6ZmlsZTpgTGliXFxvcy5weWApIGV4aXN0cyBpbiB5b3VyIGluc3RhbGwgZGlyZWN0b3J5LgorICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLikKKworVGhlc2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgZmlsZXMgaW4gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gd2lsbCBub3QgdGFrZQorcHJlY2VkZW5jZSBvdmVyIHRoZSBjb3B5IG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJ1bmRsZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLgorT3RoZXJ3aXNlLCB5b3VyIHVzZXJzIG1heSBleHBlcmllbmNlIHByb2JsZW1zIHVzaW5nIHlvdXIgYXBwbGljYXRpb24uIE5vdGUgdGhhdAordGhlIGZpcnN0IHN1Z2dlc3Rpb24gaXMgdGhlIGJlc3QsIGFzIHRoZSBvdGhlciBtYXkgc3RpbGwgYmUgc3VzY2VwdGlibGUgdG8KK25vbi1zdGFuZGFyZCBwYXRocyBpbiB0aGUgcmVnaXN0cnkgYW5kIHVzZXIgc2l0ZS1wYWNrYWdlcy4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtNDk4LDcgKzc1Myw2IEBACiBUaGUgV2luZG93cy1zcGVjaWZpYyBzdGFuZGFyZCBtb2R1bGVzIGFyZSBkb2N1bWVudGVkIGluCiA6cmVmOmBtc3dpbi1zcGVjaWZpYy1zZXJ2aWNlc2AuCiAKLQogUHlXaW4zMgogLS0tLS0tLQogCkBAIC01NTcsMjAgKzgxMSw4IEBACiA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvc2V0dXAuaHRtbCNnZXR0aW5nLXRoZS1zb3VyY2UtY29kZT5gXy4KIAogVGhlIHNvdXJjZSB0cmVlIGNvbnRhaW5zIGEgYnVpbGQgc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgZm9yIE1pY3Jvc29mdAotVmlzdWFsIEMrKywgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcy4KLVZpZXcgdGhlIDpmaWxlOmByZWFkbWUudHh0YCBpbiB0aGVpciByZXNwZWN0aXZlIGRpcmVjdG9yaWVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IERpcmVjdG9yeSAgICAgICAgICB8IE1TVkMgdmVyc2lvbiB8IFZpc3VhbCBTdHVkaW8gdmVyc2lvbiB8Ci0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpmaWxlOmBQQy9WUzkuMC9gICB8IDkuMCAgICAgICAgICB8IDIwMDggICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpmaWxlOmBQQ2J1aWxkL2AgICB8IDEwLjAgICAgICAgICB8IDIwMTAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLU5vdGUgdGhhdCBhbnkgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSA6ZmlsZTpgUENgIGRpcmVjdG9yeSBhcmUgbm90Ci1uZWNlc3NhcmlseSBmdWxseSBzdXBwb3J0ZWQuICBUaGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZmlsZXMKLWZvciB0aGUgY29tcGlsZXIgdXNlZCB0byBidWlsZCB0aGUgb2ZmaWNpYWwgcmVsZWFzZS4KK1Zpc3VhbCBTdHVkaW8gMjAxNSwgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbgorcmVsZWFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbiB0aGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeS4KIAogQ2hlY2sgOmZpbGU6YFBDYnVpbGQvcmVhZG1lLnR4dGAgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIHByb2Nlc3MuCiAKQEAgLTU4OCw2ICs4MzAsODMgQEAKICAgICAgIGJ5IFRyZW50IEFwdGVkIGV0IGFsLCAyMDA3CiAKIAorRW1iZWRkZWQgRGlzdHJpYnV0aW9uCis9PT09PT09PT09PT09PT09PT09PT0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK1RoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgYSBaSVAgZmlsZSBjb250YWluaW5nIGEgbWluaW1hbCBQeXRob24gZW52aXJvbm1lbnQuCitJdCBpcyBpbnRlbmRlZCBmb3IgYWN0aW5nIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4gYmVpbmcKK2RpcmVjdGx5IGFjY2Vzc2VkIGJ5IGVuZC11c2Vycy4KKworV2hlbiBleHRyYWN0ZWQsIHRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgKGFsbW9zdCkgZnVsbHkgaXNvbGF0ZWQgZnJvbSB0aGUKK3VzZXIncyBzeXN0ZW0sIGluY2x1ZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHN5c3RlbSByZWdpc3RyeSBzZXR0aW5ncywgYW5kCitpbnN0YWxsZWQgcGFja2FnZXMuIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGluY2x1ZGVkIGFzIHByZS1jb21waWxlZCBhbmQKK29wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNS5kbGxgYCwKK2BgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgYXJlIGFsbCBwcm92aWRlZC4gVGNsL3RrIChpbmNsdWRpbmcgYWxsCitkZXBlbmRhbnRzLCBzdWNoIGFzIElkbGUpLCBwaXAgYW5kIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBhcmUgbm90IGluY2x1ZGVkLgorCisuLiBub3RlOjoKKworICAgIFRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gZG9lcyBub3QgaW5jbHVkZSB0aGUgYE1pY3Jvc29mdCBDIFJ1bnRpbWUKKyAgICA8aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD00ODE0NT5gXyBhbmQgaXQgaXMKKyAgICB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIGluc3RhbGxlciB0byBwcm92aWRlIHRoaXMuIFRoZQorICAgIHJ1bnRpbWUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCBvbiBhIHVzZXIncyBzeXN0ZW0gcHJldmlvdXNseSBvcgorICAgIGF1dG9tYXRpY2FsbHkgdmlhIFdpbmRvd3MgVXBkYXRlLCBhbmQgY2FuIGJlIGRldGVjdGVkIGJ5IGZpbmRpbmcKKyAgICBgYHVjcnRiYXNlLmRsbGBgIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3J5LgorCitUaGlyZC1wYXJ0eSBwYWNrYWdlcyBzaG91bGQgYmUgaW5zdGFsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZXIgYWxvbmdzaWRlCit0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uLiBVc2luZyBwaXAgdG8gbWFuYWdlIGRlcGVuZGVuY2llcyBhcyBmb3IgYSByZWd1bGFyCitQeXRob24gaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiwgdGhvdWdoIHdpdGggc29tZQorY2FyZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gaW5jbHVkZSBhbmQgdXNlIHBpcCBmb3IgYXV0b21hdGljIHVwZGF0ZXMuIEluCitnZW5lcmFsLCB0aGlyZC1wYXJ0eSBwYWNrYWdlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbgorKCJ2ZW5kb3JpbmciKSBzbyB0aGF0IHRoZSBkZXZlbG9wZXIgY2FuIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggbmV3ZXIKK3ZlcnNpb25zIGJlZm9yZSBwcm92aWRpbmcgdXBkYXRlcyB0byB1c2Vycy4KKworVGhlIHR3byByZWNvbW1lbmRlZCB1c2UgY2FzZXMgZm9yIHRoaXMgZGlzdHJpYnV0aW9uIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1B5dGhvbiBBcHBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGFwcGxpY2F0aW9uIHdyaXR0ZW4gaW4gUHl0aG9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IHJlcXVpcmUgdXNlcnMgdG8gYmUgYXdhcmUKK29mIHRoYXQgZmFjdC4gVGhlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBtYXkgYmUgdXNlZCBpbiB0aGlzIGNhc2UgdG8gaW5jbHVkZSBhCitwcml2YXRlIHZlcnNpb24gb2YgUHl0aG9uIGluIGFuIGluc3RhbGwgcGFja2FnZS4gRGVwZW5kaW5nIG9uIGhvdyB0cmFuc3BhcmVudCBpdAorc2hvdWxkIGJlIChvciBjb252ZXJzZWx5LCBob3cgcHJvZmVzc2lvbmFsIGl0IHNob3VsZCBhcHBlYXIpLCB0aGVyZSBhcmUgdHdvCitvcHRpb25zLgorCitVc2luZyBhIHNwZWNpYWxpemVkIGV4ZWN1dGFibGUgYXMgYSBsYXVuY2hlciByZXF1aXJlcyBzb21lIGNvZGluZywgYnV0IHByb3ZpZGVzCit0aGUgbW9zdCB0cmFuc3BhcmVudCBleHBlcmllbmNlIGZvciB1c2Vycy4gV2l0aCBhIGN1c3RvbWl6ZWQgbGF1bmNoZXIsIHRoZXJlIGFyZQorbm8gb2J2aW91cyBpbmRpY2F0aW9ucyB0aGF0IHRoZSBwcm9ncmFtIGlzIHJ1bm5pbmcgb24gUHl0aG9uOiBpY29ucyBjYW4gYmUKK2N1c3RvbWl6ZWQsIGNvbXBhbnkgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gY2FuIGJlIHNwZWNpZmllZCwgYW5kIGZpbGUKK2Fzc29jaWF0aW9ucyBiZWhhdmUgcHJvcGVybHkuIEluIG1vc3QgY2FzZXMsIGEgY3VzdG9tIGxhdW5jaGVyIHNob3VsZCBzaW1wbHkgYmUKK2FibGUgdG8gY2FsbCBgYFB5X01haW5gYCB3aXRoIGEgaGFyZC1jb2RlZCBjb21tYW5kIGxpbmUuCisKK1RoZSBzaW1wbGVyIGFwcHJvYWNoIGlzIHRvIHByb3ZpZGUgYSBiYXRjaCBmaWxlIG9yIGdlbmVyYXRlZCBzaG9ydGN1dCB0aGF0CitkaXJlY3RseSBjYWxscyB0aGUgYGBweXRob24uZXhlYGAgb3IgYGBweXRob253LmV4ZWBgIHdpdGggdGhlIHJlcXVpcmVkCitjb21tYW5kLWxpbmUgYXJndW1lbnRzLiBJbiB0aGlzIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGFwcGVhciB0byBiZSBQeXRob24KK2FuZCBub3QgaXRzIGFjdHVhbCBuYW1lLCBhbmQgdXNlcnMgbWF5IGhhdmUgdHJvdWJsZSBkaXN0aW5ndWlzaGluZyBpdCBmcm9tIG90aGVyCitydW5uaW5nIFB5dGhvbiBwcm9jZXNzZXMgb3IgZmlsZSBhc3NvY2lhdGlvbnMuCisKK1dpdGggdGhlIGxhdHRlciBhcHByb2FjaCwgcGFja2FnZXMgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBkaXJlY3RvcmllcyBhbG9uZ3NpZGUKK3RoZSBQeXRob24gZXhlY3V0YWJsZSB0byBlbnN1cmUgdGhleSBhcmUgYXZhaWxhYmxlIG9uIHRoZSBwYXRoLiBXaXRoIHRoZQorc3BlY2lhbGl6ZWQgbGF1bmNoZXIsIHBhY2thZ2VzIGNhbiBiZSBsb2NhdGVkIGluIG90aGVyIGxvY2F0aW9ucyBhcyB0aGVyZSBpcyBhbgorb3Bwb3J0dW5pdHkgdG8gc3BlY2lmeSB0aGUgc2VhcmNoIHBhdGggYmVmb3JlIGxhdW5jaGluZyB0aGUgYXBwbGljYXRpb24uCisKK0VtYmVkZGluZyBQeXRob24KKy0tLS0tLS0tLS0tLS0tLS0KKworQXBwbGljYXRpb25zIHdyaXR0ZW4gaW4gbmF0aXZlIGNvZGUgb2Z0ZW4gcmVxdWlyZSBzb21lIGZvcm0gb2Ygc2NyaXB0aW5nCitsYW5ndWFnZSwgYW5kIHRoZSBlbWJlZGRlZCBQeXRob24gZGlzdHJpYnV0aW9uIGNhbiBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIEluCitnZW5lcmFsLCB0aGUgbWFqb3JpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGluIG5hdGl2ZSBjb2RlLCBhbmQgc29tZSBwYXJ0IHdpbGwKK2VpdGhlciBpbnZva2UgYGBweXRob24uZXhlYGAgb3IgZGlyZWN0bHkgdXNlIGBgcHl0aG9uMy5kbGxgYC4gRm9yIGVpdGhlciBjYXNlLAorZXh0cmFjdGluZyB0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIHRvIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBhcHBsaWNhdGlvbgoraW5zdGFsbGF0aW9uIGlzIHN1ZmZpY2llbnQgdG8gcHJvdmlkZSBhIGxvYWRhYmxlIFB5dGhvbiBpbnRlcnByZXRlci4KKworQXMgd2l0aCB0aGUgYXBwbGljYXRpb24gdXNlLCBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkIHRvIGFueSBsb2NhdGlvbiBhcyB0aGVyZQoraXMgYW4gb3Bwb3J0dW5pdHkgdG8gc3BlY2lmeSBzZWFyY2ggcGF0aHMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgaW50ZXJwcmV0ZXIuCitPdGhlcndpc2UsIHRoZXJlIGlzIG5vIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdXNpbmcgdGhlIGVtYmVkZGVkCitkaXN0cmlidXRpb24gYW5kIGEgcmVndWxhciBpbnN0YWxsYXRpb24uCisKIE90aGVyIHJlc291cmNlcwogPT09PT09PT09PT09PT09CiAKQEAgLTYwMyw1ICs5MjIsMyBAQAogCiAgICA6cGVwOmAzOTdgIC0gUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzCiAgICAgICBUaGUgcHJvcG9zYWwgZm9yIHRoZSBsYXVuY2hlciB0byBiZSBpbmNsdWRlZCBpbiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KLQotCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdCBiL0RvYy93aGF0c25ldy8zLjUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2Y2IwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdApAQCAtMCwwICsxLDI0NzUgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy41CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpFZGl0b3JzOiBFbHZpcyBQcmFuc2tldmljaHVzIDxlbHZpc0BtYWdpYy5pbz4sIFl1cnkgU2VsaXZhbm92IDx5dXJ5QG1hZ2ljLmlvPgorCisuLiBSdWxlcyBmb3IgbWFpbnRlbmFuY2U6CisKKyAgICogQW55b25lIGNhbiBhZGQgdGV4dCB0byB0aGlzIGRvY3VtZW50LiAgRG8gbm90IHNwZW5kIHZlcnkgbXVjaCB0aW1lCisgICBvbiB0aGUgd29yZGluZyBvZiB5b3VyIGNoYW5nZXMsIGJlY2F1c2UgeW91ciB0ZXh0IHdpbGwgcHJvYmFibHkKKyAgIGdldCByZXdyaXR0ZW4gdG8gc29tZSBkZWdyZWUuCisKKyAgICogVGhlIG1haW50YWluZXIgd2lsbCBnbyB0aHJvdWdoIE1pc2MvTkVXUyBwZXJpb2RpY2FsbHkgYW5kIGFkZAorICAgY2hhbmdlczsgaXQncyB0aGVyZWZvcmUgbW9yZSBpbXBvcnRhbnQgdG8gYWRkIHlvdXIgY2hhbmdlcyB0bworICAgTWlzYy9ORVdTIHRoYW4gdG8gdGhpcyBmaWxlLgorCisgICAqIFRoaXMgaXMgbm90IGEgY29tcGxldGUgbGlzdCBvZiBldmVyeSBzaW5nbGUgY2hhbmdlOyBjb21wbGV0ZW5lc3MKKyAgIGlzIHRoZSBwdXJwb3NlIG9mIE1pc2MvTkVXUy4gIFNvbWUgY2hhbmdlcyBJIGNvbnNpZGVyIHRvbyBzbWFsbAorICAgb3IgZXNvdGVyaWMgdG8gaW5jbHVkZS4gIElmIHN1Y2ggYSBjaGFuZ2UgaXMgYWRkZWQgdG8gdGhlIHRleHQsCisgICBJJ2xsIGp1c3QgcmVtb3ZlIGl0LiAgKFRoaXMgaXMgYW5vdGhlciByZWFzb24geW91IHNob3VsZG4ndCBzcGVuZAorICAgdG9vIG11Y2ggdGltZSBvbiB3cml0aW5nIHlvdXIgYWRkaXRpb24uKQorCisgICAqIElmIHlvdSB3YW50IHRvIGRyYXcgeW91ciBuZXcgdGV4dCB0byB0aGUgYXR0ZW50aW9uIG9mIHRoZQorICAgbWFpbnRhaW5lciwgYWRkICdYWFgnIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFncmFwaCBvcgorICAgc2VjdGlvbi4KKworICAgKiBJdCdzIE9LIHRvIGp1c3QgYWRkIGEgZnJhZ21lbnRhcnkgbm90ZSBhYm91dCBhIGNoYW5nZS4gIEZvcgorICAgZXhhbXBsZTogIlhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlCisgICBzb2NrZXQgbW9kdWxlLiIgIFRoZSBtYWludGFpbmVyIHdpbGwgcmVzZWFyY2ggdGhlIGNoYW5nZSBhbmQKKyAgIHdyaXRlIHRoZSBuZWNlc3NhcnkgdGV4dC4KKworICAgKiBZb3UgY2FuIGNvbW1lbnQgb3V0IHlvdXIgYWRkaXRpb25zIGlmIHlvdSBsaWtlLCBidXQgaXQncyBub3QKKyAgIG5lY2Vzc2FyeSAoZXNwZWNpYWxseSB3aGVuIGEgZmluYWwgcmVsZWFzZSBpcyBzb21lIG1vbnRocyBhd2F5KS4KKworICAgKiBDcmVkaXQgdGhlIGF1dGhvciBvZiBhIHBhdGNoIG9yIGJ1Z2ZpeC4gICBKdXN0IHRoZSBuYW1lIGlzCisgICBzdWZmaWNpZW50OyB0aGUgZS1tYWlsIGFkZHJlc3MgaXNuJ3QgbmVjZXNzYXJ5LgorCisgICAqIEl0J3MgaGVscGZ1bCB0byBhZGQgdGhlIGJ1Zy9wYXRjaCBudW1iZXIgYXMgYSBjb21tZW50OgorCisgICBYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZSBzb2NrZXQKKyAgIG1vZHVsZS4KKyAgIChDb250cmlidXRlZCBieSBQLlkuIERldmVsb3BlciBpbiA6aXNzdWU6YDEyMzQ1YC4pCisKKyAgIFRoaXMgc2F2ZXMgdGhlIG1haW50YWluZXIgdGhlIGVmZm9ydCBvZiBnb2luZyB0aHJvdWdoIHRoZSBNZXJjdXJpYWwgbG9nCisgICB3aGVuIHJlc2VhcmNoaW5nIGEgY2hhbmdlLgorCitUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy41LCBjb21wYXJlZCB0byAzLjQuCitQeXRob24gMy41IHdhcyByZWxlYXNlZCBvbiBTZXB0ZW1iZXIgMTMsIDIwMTUuIMKgU2VlIHRoZQorYGNoYW5nZWxvZyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3L2NoYW5nZWxvZy5odG1sPmBfIGZvciBhIGZ1bGwKK2xpc3Qgb2YgY2hhbmdlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0NzhgIC0gUHl0aG9uIDMuNSBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogOnJlZjpgUEVQIDQ5MiA8d2hhdHNuZXctcGVwLTQ5Mj5gLCBjb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheC4KKyogOnJlZjpgUEVQIDQ2NSA8d2hhdHNuZXctcGVwLTQ2NT5gLCBhIG5ldyBtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3I6IGBgYSBAIGJgYC4KKyogOnJlZjpgUEVQIDQ0OCA8d2hhdHNuZXctcGVwLTQ0OD5gLCBhZGRpdGlvbmFsIHVucGFja2luZyBnZW5lcmFsaXphdGlvbnMuCisKKworTmV3IGxpYnJhcnkgbW9kdWxlczoKKworKiA6bW9kOmB0eXBpbmdgOiA6cmVmOmBQRVAgNDg0IC0tIFR5cGUgSGludHMgPHdoYXRzbmV3LXBlcC00ODQ+YC4KKyogOm1vZDpgemlwYXBwYDogOnJlZjpgUEVQIDQ0MSBJbXByb3ZpbmcgUHl0aG9uIFpJUCBBcHBsaWNhdGlvbiBTdXBwb3J0CisgIDx3aGF0c25ldy16aXBhcHA+YC4KKworCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogYGBieXRlcyAlIGFyZ3NgYCwgYGBieXRlYXJyYXkgJSBhcmdzYGA6IDpyZWY6YFBFUCA0NjEgPHdoYXRzbmV3LXBlcC00NjE+YCAtLQorICBBZGRpbmcgYGAlYGAgZm9ybWF0dGluZyB0byBieXRlcyBhbmQgYnl0ZWFycmF5LgorCisqIE5ldyA6bWV0aDpgYnl0ZXMuaGV4YCwgOm1ldGg6YGJ5dGVhcnJheS5oZXhgIGFuZCA6bWV0aDpgbWVtb3J5dmlldy5oZXhgCisgIG1ldGhvZHMuIChDb250cmlidXRlZCBieSBBcm5vbiBZYWFyaSBpbiA6aXNzdWU6YDk5NTFgLikKKworKiA6Y2xhc3M6YG1lbW9yeXZpZXdgIG5vdyBzdXBwb3J0cyB0dXBsZSBpbmRleGluZyAoaW5jbHVkaW5nIG11bHRpLWRpbWVuc2lvbmFsKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjM2MzJgLikKKworKiBHZW5lcmF0b3JzIGhhdmUgYSBuZXcgYGBnaV95aWVsZGZyb21gYCBhdHRyaWJ1dGUsIHdoaWNoIHJldHVybnMgdGhlCisgIG9iamVjdCBiZWluZyBpdGVyYXRlZCBieSBgYHlpZWxkIGZyb21gYCBleHByZXNzaW9ucy4gKENvbnRyaWJ1dGVkCisgIGJ5IEJlbm5vIExlc2xpZSBhbmQgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDQ1MGAuKQorCisqIEEgbmV3IDpleGM6YFJlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIG1heGltdW0KKyAgcmVjdXJzaW9uIGRlcHRoIGlzIHJlYWNoZWQuICAoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsCisgIGluIDppc3N1ZTpgMTkyMzVgLikKKworCitDUHl0aG9uIGltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBXaGVuIHRoZSBgYExDX1RZUEVgYCBsb2NhbGUgaXMgdGhlIFBPU0lYIGxvY2FsZSAoYGBDYGAgbG9jYWxlKSwKKyAgOnB5OmRhdGE6YHN5cy5zdGRpbmAgYW5kIDpweTpkYXRhOmBzeXMuc3Rkb3V0YCBub3cgdXNlIHRoZQorICBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yIGhhbmRsZXIsIGluc3RlYWQgb2YgdGhlIGBgc3RyaWN0YGAgZXJyb3IgaGFuZGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTk5NzdgLikKKworKiBgYC5weW9gYCBmaWxlcyBhcmUgbm8gbG9uZ2VyIHVzZWQgYW5kIGhhdmUgYmVlbiByZXBsYWNlZCBieSBhIG1vcmUgZmxleGlibGUKKyAgc2NoZW1lIHRoYXQgaW5jbHVkZXMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBleHBsaWNpdGx5IGluIGBgLnB5Y2BgIG5hbWUuCisgIChTZWUgOnJlZjpgUEVQIDQ4OCBvdmVydmlldyA8d2hhdHNuZXctcGVwLTQ4OD5gLikKKworKiBCdWlsdGluIGFuZCBleHRlbnNpb24gbW9kdWxlcyBhcmUgbm93IGluaXRpYWxpemVkIGluIGEgbXVsdGktcGhhc2UgcHJvY2VzcywKKyAgd2hpY2ggaXMgc2ltaWxhciB0byBob3cgUHl0aG9uIG1vZHVsZXMgYXJlIGxvYWRlZC4KKyAgKFNlZSA6cmVmOmBQRVAgNDg5IG92ZXJ2aWV3IDx3aGF0c25ldy1wZXAtNDg5PmAuKQorCisKK1NpZ25pZmljYW50IGltcHJvdmVtZW50cyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworKiA6Y2xhc3M6YGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBpcyBub3cKKyAgOnJlZjpgaW1wbGVtZW50ZWQgaW4gQyA8d2hhdHNuZXctb3JkZXJlZGRpY3Q+YCwgd2hpY2ggbWFrZXMgaXQKKyAgNCB0byAxMDAgdGltZXMgZmFzdGVyLgorCisqIDptb2Q6YHNzbGAgbW9kdWxlIGdhaW5lZAorICA6cmVmOmBzdXBwb3J0IGZvciBNZW1vcnkgQklPIDx3aGF0c25ldy1zc2xtZW1vcnliaW8+YCwgd2hpY2ggZGVjb3VwbGVzIFNTTAorICBwcm90b2NvbCBoYW5kbGluZyBmcm9tIG5ldHdvcmsgSU8uCisKKyogVGhlIG5ldyA6ZnVuYzpgb3Muc2NhbmRpcmAgZnVuY3Rpb24gcHJvdmlkZXMgYQorICA6cmVmOmBiZXR0ZXIgYW5kIHNpZ25pZmljYW50bHkgZmFzdGVyIHdheSA8d2hhdHNuZXctcGVwLTQ3MT5gCisgIG9mIGRpcmVjdG9yeSB0cmF2ZXJzYWwuCisKKyogOmZ1bmM6YGZ1bmN0b29scy5scnVfY2FjaGVgIGhhcyBiZWVuIG1vc3RseQorICA6cmVmOmByZWltcGxlbWVudGVkIGluIEMgPHdoYXRzbmV3LWxydWNhY2hlPmAsIHlpZWxkaW5nIG11Y2ggYmV0dGVyCisgIHBlcmZvcm1hbmNlLgorCisqIFRoZSBuZXcgOmZ1bmM6YHN1YnByb2Nlc3MucnVuYCBmdW5jdGlvbiBwcm92aWRlcyBhCisgIDpyZWY6YHN0cmVhbWxpbmVkIHdheSB0byBydW4gc3VicHJvY2Vzc2VzIDx3aGF0c25ldy1zdWJwcm9jZXNzPmAuCisKKyogVGhlIDptb2Q6YHRyYWNlYmFja2AgbW9kdWxlIGhhcyBiZWVuIHNpZ25pZmljYW50bHkKKyAgOnJlZjpgZW5oYW5jZWQgPHdoYXRzbmV3LXRyYWNlYmFjaz5gIGZvciBpbXByb3ZlZAorICBwZXJmb3JtYW5jZSBhbmQgZGV2ZWxvcGVyIGNvbnZlbmllbmNlLgorCisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBTU0x2MyBpcyBub3cgZGlzYWJsZWQgdGhyb3VnaG91dCB0aGUgc3RhbmRhcmQgbGlicmFyeS4KKyAgSXQgY2FuIHN0aWxsIGJlIGVuYWJsZWQgYnkgaW5zdGFudGlhdGluZyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgCisgIG1hbnVhbGx5LiAgKFNlZSA6aXNzdWU6YDIyNjM4YCBmb3IgbW9yZSBkZXRhaWxzOyB0aGlzIGNoYW5nZSB3YXMKKyAgYmFja3BvcnRlZCB0byBDUHl0aG9uIDMuNCBhbmQgMi43LikKKworKiBIVFRQIGNvb2tpZSBwYXJzaW5nIGlzIG5vdyBzdHJpY3RlciwgaW4gb3JkZXIgdG8gcHJvdGVjdAorICBhZ2FpbnN0IHBvdGVudGlhbCBpbmplY3Rpb24gYXR0YWNrcy4gKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91CisgIGluIDppc3N1ZTpgMjI3OTZgLikKKworCitXaW5kb3dzIGltcHJvdmVtZW50czoKKworKiBBIG5ldyBpbnN0YWxsZXIgZm9yIFdpbmRvd3MgaGFzIHJlcGxhY2VkIHRoZSBvbGQgTVNJLgorICBTZWUgOnJlZjpgdXNpbmctb24td2luZG93c2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyogV2luZG93cyBidWlsZHMgbm93IHVzZSBNaWNyb3NvZnQgVmlzdWFsIEMrKyAxNC4wLCBhbmQgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgc2hvdWxkIHVzZSB0aGUgc2FtZS4KKworCitQbGVhc2UgcmVhZCBvbiBmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdXNlci1mYWNpbmcgY2hhbmdlcywgaW5jbHVkaW5nIG1hbnkKK290aGVyIHNtYWxsZXIgaW1wcm92ZW1lbnRzLCBDUHl0aG9uIG9wdGltaXphdGlvbnMsIGRlcHJlY2F0aW9ucywgYW5kIHBvdGVudGlhbAorcG9ydGluZyBpc3N1ZXMuCisKKworTmV3IEZlYXR1cmVzCis9PT09PT09PT09PT0KKworLi4gX3doYXRzbmV3LXBlcC00OTI6CisKK1BFUCA0OTIgLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ5MmAgZ3JlYXRseSBpbXByb3ZlcyBzdXBwb3J0IGZvciBhc3luY2hyb25vdXMgcHJvZ3JhbW1pbmcgaW4gUHl0aG9uCitieSBhZGRpbmcgOnRlcm06YGF3YWl0YWJsZSBvYmplY3RzIDxhd2FpdGFibGU+YCwKKzp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25zIDxjb3JvdXRpbmUgZnVuY3Rpb24+YCwKKzp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0aW9uIDxhc3luY2hyb25vdXMgaXRlcmFibGU+YCwKK2FuZCA6dGVybTpgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcnMgPGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXI+YC4KKworQ29yb3V0aW5lIGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQgdXNpbmcgdGhlIG5ldyA6a2V5d29yZDpgYXN5bmMgZGVmYCBzeW50YXg6OgorCisgICAgPj4+IGFzeW5jIGRlZiBjb3JvKCk6CisgICAgLi4uICAgICByZXR1cm4gJ3NwYW0nCisKK0luc2lkZSBhIGNvcm91dGluZSBmdW5jdGlvbiwgdGhlIG5ldyA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb24gY2FuIGJlIHVzZWQKK3RvIHN1c3BlbmQgY29yb3V0aW5lIGV4ZWN1dGlvbiB1bnRpbCB0aGUgcmVzdWx0IGlzIGF2YWlsYWJsZS4gIEFueSBvYmplY3QKK2NhbiBiZSAqYXdhaXRlZCosIGFzIGxvbmcgYXMgaXQgaW1wbGVtZW50cyB0aGUgOnRlcm06YGF3YWl0YWJsZWAgcHJvdG9jb2wgYnkKK2RlZmluaW5nIHRoZSA6bWV0aDpgX19hd2FpdF9fYCBtZXRob2QuCisKK1BFUCA0OTIgYWxzbyBhZGRzIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudCBmb3IgY29udmVuaWVudCBpdGVyYXRpb24KK292ZXIgYXN5bmNocm9ub3VzIGl0ZXJhYmxlcy4KKworQW4gZXhhbXBsZSBvZiBhIHJ1ZGltZW50YXJ5IEhUVFAgY2xpZW50IHdyaXR0ZW4gdXNpbmcgdGhlIG5ldyBzeW50YXg6OgorCisgICAgaW1wb3J0IGFzeW5jaW8KKworICAgIGFzeW5jIGRlZiBodHRwX2dldChkb21haW4pOgorICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0IGFzeW5jaW8ub3Blbl9jb25uZWN0aW9uKGRvbWFpbiwgODApCisKKyAgICAgICAgd3JpdGVyLndyaXRlKGInXHJcbicuam9pbihbCisgICAgICAgICAgICBiJ0dFVCAvIEhUVFAvMS4xJywKKyAgICAgICAgICAgIGInSG9zdDogJWInICUgZG9tYWluLmVuY29kZSgnbGF0aW4tMScpLAorICAgICAgICAgICAgYidDb25uZWN0aW9uOiBjbG9zZScsCisgICAgICAgICAgICBiJycsIGInJworICAgICAgICBdKSkKKworICAgICAgICBhc3luYyBmb3IgbGluZSBpbiByZWFkZXI6CisgICAgICAgICAgICBwcmludCgnPj4+JywgbGluZSkKKworICAgICAgICB3cml0ZXIuY2xvc2UoKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIHRyeToKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoaHR0cF9nZXQoJ2V4YW1wbGUuY29tJykpCisgICAgZmluYWxseToKKyAgICAgICAgbG9vcC5jbG9zZSgpCisKKworU2ltaWxhcmx5IHRvIGFzeW5jaHJvbm91cyBpdGVyYXRpb24sIHRoZXJlIGlzIGEgbmV3IHN5bnRheCBmb3IgYXN5bmNocm9ub3VzCitjb250ZXh0IG1hbmFnZXJzLiAgVGhlIGZvbGxvd2luZyBzY3JpcHQ6OgorCisgICAgaW1wb3J0IGFzeW5jaW8KKworICAgIGFzeW5jIGRlZiBjb3JvKG5hbWUsIGxvY2spOgorICAgICAgICBwcmludCgnY29ybyB7fTogd2FpdGluZyBmb3IgbG9jaycuZm9ybWF0KG5hbWUpKQorICAgICAgICBhc3luYyB3aXRoIGxvY2s6CisgICAgICAgICAgICBwcmludCgnY29ybyB7fTogaG9sZGluZyB0aGUgbG9jaycuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorICAgICAgICAgICAgcHJpbnQoJ2Nvcm8ge306IHJlbGVhc2luZyB0aGUgbG9jaycuZm9ybWF0KG5hbWUpKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxvY2sgPSBhc3luY2lvLkxvY2soKQorICAgIGNvcm9zID0gYXN5bmNpby5nYXRoZXIoY29ybygxLCBsb2NrKSwgY29ybygyLCBsb2NrKSkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGNvcm9zKQorICAgIGZpbmFsbHk6CisgICAgICAgIGxvb3AuY2xvc2UoKQorCit3aWxsIG91dHB1dDo6CisKKyAgICBjb3JvIDI6IHdhaXRpbmcgZm9yIGxvY2sKKyAgICBjb3JvIDI6IGhvbGRpbmcgdGhlIGxvY2sKKyAgICBjb3JvIDE6IHdhaXRpbmcgZm9yIGxvY2sKKyAgICBjb3JvIDI6IHJlbGVhc2luZyB0aGUgbG9jaworICAgIGNvcm8gMTogaG9sZGluZyB0aGUgbG9jaworICAgIGNvcm8gMTogcmVsZWFzaW5nIHRoZSBsb2NrCisKK05vdGUgdGhhdCBib3RoIDprZXl3b3JkOmBhc3luYyBmb3JgIGFuZCA6a2V5d29yZDpgYXN5bmMgd2l0aGAgY2FuIG9ubHkKK2JlIHVzZWQgaW5zaWRlIGEgY29yb3V0aW5lIGZ1bmN0aW9uIGRlY2xhcmVkIHdpdGggOmtleXdvcmQ6YGFzeW5jIGRlZmAuCisKK0Nvcm91dGluZSBmdW5jdGlvbnMgYXJlIGludGVuZGVkIHRvIGJlIHJ1biBpbnNpZGUgYSBjb21wYXRpYmxlIGV2ZW50IGxvb3AsCitzdWNoIGFzIHRoZSA6cmVmOmBhc3luY2lvIGxvb3AgPGFzeW5jaW8tZXZlbnQtbG9vcD5gLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDkyYCAtLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKKy4uIF93aGF0c25ldy1wZXAtNDY1OgorCitQRVAgNDY1IC0gQSBkZWRpY2F0ZWQgaW5maXggb3BlcmF0b3IgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDY1YCBhZGRzIHRoZSBgYEBgYCBpbmZpeCBvcGVyYXRvciBmb3IgbWF0cml4IG11bHRpcGxpY2F0aW9uLgorQ3VycmVudGx5LCBubyBidWlsdGluIFB5dGhvbiB0eXBlcyBpbXBsZW1lbnQgdGhlIG5ldyBvcGVyYXRvciwgaG93ZXZlciwgaXQKK2NhbiBiZSBpbXBsZW1lbnRlZCBieSBkZWZpbmluZyA6bWV0aDpgX19tYXRtdWxfX2AsIDptZXRoOmBfX3JtYXRtdWxfX2AsCithbmQgOm1ldGg6YF9faW1hdG11bF9fYCBmb3IgcmVndWxhciwgcmVmbGVjdGVkLCBhbmQgaW4tcGxhY2UgbWF0cml4CittdWx0aXBsaWNhdGlvbi4gIFRoZSBzZW1hbnRpY3Mgb2YgdGhlc2UgbWV0aG9kcyBpcyBzaW1pbGFyIHRvIHRoYXQgb2YKK21ldGhvZHMgZGVmaW5pbmcgb3RoZXIgaW5maXggYXJpdGhtZXRpYyBvcGVyYXRvcnMuCisKK01hdHJpeCBtdWx0aXBsaWNhdGlvbiBpcyBhIG5vdGFibHkgY29tbW9uIG9wZXJhdGlvbiBpbiBtYW55IGZpZWxkcyBvZgorbWF0aGVtYXRpY3MsIHNjaWVuY2UsIGVuZ2luZWVyaW5nLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGBgQGBgIGFsbG93cyB3cml0aW5nCitjbGVhbmVyIGNvZGU6OgorCisgICAgUyA9IChIIEAgYmV0YSAtIHIpLlQgQCBpbnYoSCBAIFYgQCBILlQpIEAgKEggQCBiZXRhIC0gcikKKworaW5zdGVhZCBvZjo6CisKKyAgICBTID0gZG90KChkb3QoSCwgYmV0YSkgLSByKS5ULAorICAgICAgICAgICAgZG90KGludihkb3QoZG90KEgsIFYpLCBILlQpKSwgZG90KEgsIGJldGEpIC0gcikpCisKK0FuIHVwY29taW5nIHJlbGVhc2Ugb2YgTnVtUHkgMS4xMCB3aWxsIGFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IG9wZXJhdG9yOjoKKworICAgID4+PiBpbXBvcnQgbnVtcHkKKworICAgID4+PiB4ID0gbnVtcHkub25lcygzKQorICAgID4+PiB4CisgICAgYXJyYXkoWyAxLiwgMS4sIDEuXSkKKworICAgID4+PiBtID0gbnVtcHkuZXllKDMpCisgICAgPj4+IG0KKyAgICBhcnJheShbWyAxLiwgMC4sIDAuXSwKKyAgICAgICAgICAgWyAwLiwgMS4sIDAuXSwKKyAgICAgICAgICAgWyAwLiwgMC4sIDEuXV0pCisKKyAgICA+Pj4geCBAIG0KKyAgICBhcnJheShbIDEuLCAxLiwgMS5dKQorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjVgIC0tIEEgZGVkaWNhdGVkIGluZml4IG9wZXJhdG9yIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IE5hdGhhbmllbCBKLiBTbWl0aDsgaW1wbGVtZW50ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24uCisKKworLi4gX3doYXRzbmV3LXBlcC00NDg6CisKK1BFUCA0NDggLSBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDQ4YCBleHRlbmRzIHRoZSBhbGxvd2VkIHVzZXMgb2YgdGhlIGBgKmBgIGl0ZXJhYmxlIHVucGFja2luZworb3BlcmF0b3IgYW5kIGBgKipgYCBkaWN0aW9uYXJ5IHVucGFja2luZyBvcGVyYXRvci4gIEl0IGlzIG5vdyBwb3NzaWJsZQordG8gdXNlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdW5wYWNraW5ncyBpbiBmdW5jdGlvbiBjYWxsczo6CisKKyAgICA+Pj4gcHJpbnQoKlsxXSwgKlsyXSwgMywgKls0LCA1XSkKKyAgICAxIDIgMyA0IDUKKworICAgID4+PiBkZWYgZm4oYSwgYiwgYywgZCk6CisgICAgLi4uICAgICBwcmludChhLCBiLCBjLCBkKQorICAgIC4uLgorCisgICAgPj4+IGZuKCoqeydhJzogMSwgJ2MnOiAzfSwgKip7J2InOiAyLCAnZCc6IDR9KQorICAgIDEgMiAzIDQKKworU2ltaWxhcmx5LCB0dXBsZSwgbGlzdCwgc2V0LCBhbmQgZGljdGlvbmFyeSBkaXNwbGF5cyBhbGxvdyBtdWx0aXBsZQordW5wYWNraW5nczo6CisKKyAgICA+Pj4gKnJhbmdlKDQpLCA0CisgICAgKDAsIDEsIDIsIDMsIDQpCisKKyAgICA+Pj4gWypyYW5nZSg0KSwgNF0KKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiB7KnJhbmdlKDQpLCA0LCAqKDUsIDYsIDcpfQorICAgIHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3fQorCisgICAgPj4+IHsneCc6IDEsICoqeyd5JzogMn19CisgICAgeyd4JzogMSwgJ3knOiAyfQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDQ4YCAtLSBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEpvc2h1YSBMYW5kYXU7IGltcGxlbWVudGVkIGJ5IE5laWwgR2lyZGhhciwKKyAgICAgIFRob21hcyBXb3V0ZXJzLCBhbmQgSm9zaHVhIExhbmRhdS4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ2MToKKworUEVQIDQ2MSAtICUgZm9ybWF0dGluZyBzdXBwb3J0IGZvciBieXRlcyBhbmQgYnl0ZWFycmF5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDYxYCBhZGRzIHN1cHBvcnQgZm9yIGBgJWBgCis6cmVmOmBpbnRlcnBvbGF0aW9uIG9wZXJhdG9yIDxieXRlcy1mb3JtYXR0aW5nPmAgdG8gOmNsYXNzOmBieXRlc2AKK2FuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCisKK1doaWxlIGludGVycG9sYXRpb24gaXMgdXN1YWxseSB0aG91Z2h0IG9mIGFzIGEgc3RyaW5nIG9wZXJhdGlvbiwgdGhlcmUgYXJlCitjYXNlcyB3aGVyZSBpbnRlcnBvbGF0aW9uIG9uIGBgYnl0ZXNgYCBvciBgYGJ5dGVhcnJheXNgYCBtYWtlcyBzZW5zZSwgYW5kIHRoZQord29yayBuZWVkZWQgdG8gbWFrZSB1cCBmb3IgdGhpcyBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkgZGV0cmFjdHMgZnJvbSB0aGUKK292ZXJhbGwgcmVhZGFiaWxpdHkgb2YgdGhlIGNvZGUuICBUaGlzIGlzc3VlIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgd2hlbgorZGVhbGluZyB3aXRoIHdpcmUgZm9ybWF0IHByb3RvY29scywgd2hpY2ggYXJlIG9mdGVuIGEgbWl4dHVyZSBvZiBiaW5hcnkKK2FuZCBBU0NJSSBjb21wYXRpYmxlIHRleHQuCisKK0V4YW1wbGVzOjoKKworICAgID4+PiBiJ0hlbGxvICViIScgJSBiJ1dvcmxkJworICAgIGInSGVsbG8gV29ybGQhJworCisgICAgPj4+IGIneD0laSB5PSVmJyAlICgxLCAyLjUpCisgICAgYid4PTEgeT0yLjUwMDAwMCcKKworVW5pY29kZSBpcyBub3QgYWxsb3dlZCBmb3IgYGAlYmBgLCBidXQgaXQgaXMgYWNjZXB0ZWQgYnkgYGAlYWBgIChlcXVpdmFsZW50IG9mCitgYHJlcHIob2JqKS5lbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKWBgKTo6CisKKyAgICA+Pj4gYidIZWxsbyAlYiEnICUgJ1dvcmxkJworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgVHlwZUVycm9yOiAlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnc3RyJworCisgICAgPj4+IGIncHJpY2U6ICVhJyAlICcxMOKCrCcKKyAgICBiInByaWNlOiAnMTBcXHUyMGFjJyIKKworTm90ZSB0aGF0IGBgJXNgYCBhbmQgYGAlcmBgIGNvbnZlcnNpb24gdHlwZXMsIGFsdGhvdWdoIHN1cHBvcnRlZCwgc2hvdWxkCitvbmx5IGJlIHVzZWQgaW4gY29kZWJhc2VzIHRoYXQgbmVlZCBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjFgIC0tIEFkZGluZyAlIGZvcm1hdHRpbmcgdG8gYnl0ZXMgYW5kIGJ5dGVhcnJheQorICAgICAgUEVQIHdyaXR0ZW4gYnkgRXRoYW4gRnVybWFuOyBpbXBsZW1lbnRlZCBieSBOZWlsIFNjaGVtZW5hdWVyIGFuZAorICAgICAgRXRoYW4gRnVybWFuLgorCisKKy4uIF93aGF0c25ldy1wZXAtNDg0OgorCitQRVAgNDg0IC0gVHlwZSBIaW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnVuY3Rpb24gYW5ub3RhdGlvbiBzeW50YXggaGFzIGJlZW4gYSBQeXRob24gZmVhdHVyZSBzaW5jZSB2ZXJzaW9uIDMuMAorKDpwZXA6YDMxMDdgKSwgaG93ZXZlciB0aGUgc2VtYW50aWNzIG9mIGFubm90YXRpb25zIGhhcyBiZWVuIGxlZnQgdW5kZWZpbmVkLgorCitFeHBlcmllbmNlIGhhcyBzaG93biB0aGF0IHRoZSBtYWpvcml0eSBvZiBmdW5jdGlvbiBhbm5vdGF0aW9uCit1c2VzIHdlcmUgdG8gcHJvdmlkZSB0eXBlIGhpbnRzIHRvIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1ZXMuICBJdAorYmVjYW1lIGV2aWRlbnQgdGhhdCBpdCB3b3VsZCBiZSBiZW5lZmljaWFsIGZvciBQeXRob24gdXNlcnMsIGlmIHRoZQorc3RhbmRhcmQgbGlicmFyeSBpbmNsdWRlZCB0aGUgYmFzZSBkZWZpbml0aW9ucyBhbmQgdG9vbHMgZm9yIHR5cGUgYW5ub3RhdGlvbnMuCisKKzpwZXA6YDQ4NGAgaW50cm9kdWNlcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIGFwaT5gIHRvCitwcm92aWRlIHRoZXNlIHN0YW5kYXJkIGRlZmluaXRpb25zIGFuZCB0b29scywgYWxvbmcgd2l0aCBzb21lIGNvbnZlbnRpb25zCitmb3Igc2l0dWF0aW9ucyB3aGVyZSBhbm5vdGF0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KKworRm9yIGV4YW1wbGUsIGhlcmUgaXMgYSBzaW1wbGUgZnVuY3Rpb24gd2hvc2UgYXJndW1lbnQgYW5kIHJldHVybiB0eXBlCithcmUgZGVjbGFyZWQgaW4gdGhlIGFubm90YXRpb25zOjoKKworICAgIGRlZiBncmVldGluZyhuYW1lOiBzdHIpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICdIZWxsbyAnICsgbmFtZQorCitXaGlsZSB0aGVzZSBhbm5vdGF0aW9ucyBhcmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUgdGhyb3VnaCB0aGUgdXN1YWwKKzphdHRyOmBfX2Fubm90YXRpb25zX19gIGF0dHJpYnV0ZSwgKm5vIGF1dG9tYXRpYyB0eXBlIGNoZWNraW5nIGhhcHBlbnMgYXQKK3J1bnRpbWUqLiAgSW5zdGVhZCwgaXQgaXMgYXNzdW1lZCB0aGF0IGEgc2VwYXJhdGUgb2ZmLWxpbmUgdHlwZSBjaGVja2VyCisoZS5nLiBgbXlweSA8aHR0cDovL215cHktbGFuZy5vcmc+YF8pIHdpbGwgYmUgdXNlZCBmb3Igb24tZGVtYW5kCitzb3VyY2UgY29kZSBhbmFseXNpcy4KKworVGhlIHR5cGUgc3lzdGVtIHN1cHBvcnRzIHVuaW9ucywgZ2VuZXJpYyB0eXBlcywgYW5kIGEgc3BlY2lhbCB0eXBlCituYW1lZCA6Y2xhc3M6YH50eXBpbmcuQW55YCB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGggKGkuZS4gYXNzaWduYWJsZSB0bworYW5kIGZyb20pIGFsbCB0eXBlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgICogOm1vZDpgdHlwaW5nYCBtb2R1bGUgZG9jdW1lbnRhdGlvbgorICAgKiA6cGVwOmA0ODRgIC0tIFR5cGUgSGludHMKKyAgICAgICAgUEVQIHdyaXR0ZW4gYnkgR3VpZG8gdmFuIFJvc3N1bSwgSnVra2EgTGVodG9zYWxvLCBhbmQgxYF1a2FzeiBMYW5nYTsKKyAgICAgICAgaW1wbGVtZW50ZWQgYnkgR3VpZG8gdmFuIFJvc3N1bS4KKyAgICogOnBlcDpgNDgzYCAtLSBUaGUgVGhlb3J5IG9mIFR5cGUgSGludHMKKyAgICAgICAgUEVQIHdyaXR0ZW4gYnkgR3VpZG8gdmFuIFJvc3N1bQorCisKKy4uIF93aGF0c25ldy1wZXAtNDcxOgorCitQRVAgNDcxIC0gb3Muc2NhbmRpcigpIGZ1bmN0aW9uIC0tIGEgYmV0dGVyIGFuZCBmYXN0ZXIgZGlyZWN0b3J5IGl0ZXJhdG9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ3MWAgYWRkcyBhIG5ldyBkaXJlY3RvcnkgaXRlcmF0aW9uIGZ1bmN0aW9uLCA6ZnVuYzpgb3Muc2NhbmRpcmAsCit0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIEFkZGl0aW9uYWxseSwgOmZ1bmM6YG9zLndhbGtgIGlzIG5vdworaW1wbGVtZW50ZWQgdXNpbmcgYGBzY2FuZGlyYGAsIHdoaWNoIG1ha2VzIGl0IDMgdG8gNSB0aW1lcyBmYXN0ZXIKK29uIFBPU0lYIHN5c3RlbXMgYW5kIDcgdG8gMjAgdGltZXMgZmFzdGVyIG9uIFdpbmRvd3Mgc3lzdGVtcy4gIFRoaXMgaXMKK2xhcmdlbHkgYWNoaWV2ZWQgYnkgZ3JlYXRseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDpmdW5jOmBvcy5zdGF0YAorcmVxdWlyZWQgdG8gd2FsayBhIGRpcmVjdG9yeSB0cmVlLgorCitBZGRpdGlvbmFsbHksIGBgc2NhbmRpcmBgIHJldHVybnMgYW4gaXRlcmF0b3IsIGFzIG9wcG9zZWQgdG8gcmV0dXJuaW5nCithIGxpc3Qgb2YgZmlsZSBuYW1lcywgd2hpY2ggaW1wcm92ZXMgbWVtb3J5IGVmZmljaWVuY3kgd2hlbiBpdGVyYXRpbmcKK292ZXIgdmVyeSBsYXJnZSBkaXJlY3Rvcmllcy4KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGEgc2ltcGxlIHVzZSBvZiA6ZnVuYzpgb3Muc2NhbmRpcmAgdG8gZGlzcGxheSBhbGwKK3RoZSBmaWxlcyAoZXhjbHVkaW5nIGRpcmVjdG9yaWVzKSBpbiB0aGUgZ2l2ZW4gKnBhdGgqIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aAorYGAnLidgYC4gVGhlIDptZXRoOmBlbnRyeS5pc19maWxlKCkgPG9zLkRpckVudHJ5LmlzX2ZpbGU+YCBjYWxsIHdpbGwgZ2VuZXJhbGx5Citub3QgbWFrZSBhbiBhZGRpdGlvbmFsIHN5c3RlbSBjYWxsOjoKKworICAgIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKHBhdGgpOgorICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NzFgIC0tIG9zLnNjYW5kaXIoKSBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvcgorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEJlbiBIb3l0IHdpdGggdGhlIGhlbHAgb2YgVmljdG9yIFN0aW5uZXIuCisKKworLi4gX3doYXRzbmV3LXBlcC00NzU6CisKK1BFUCA0NzU6IFJldHJ5IHN5c3RlbSBjYWxscyBmYWlsaW5nIHdpdGggRUlOVFIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSA6cHk6ZGF0YTpgZXJybm8uRUlOVFJgIGVycm9yIGNvZGUgaXMgcmV0dXJuZWQgd2hlbmV2ZXIgYSBzeXN0ZW0gY2FsbCwgdGhhdAoraXMgd2FpdGluZyBmb3IgSS9PLCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gIFByZXZpb3VzbHksIFB5dGhvbiB3b3VsZAorcmFpc2UgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgaW4gc3VjaCBjYXNlLiAgVGhpcyBtZWFudCB0aGF0LCB3aGVuIHdyaXRpbmcgYQorUHl0aG9uIGFwcGxpY2F0aW9uLCB0aGUgZGV2ZWxvcGVyIGhhZCB0d28gY2hvaWNlczoKKworIy4gSWdub3JlIHRoZSBgYEludGVycnVwdGVkRXJyb3JgYC4KKyMuIEhhbmRsZSB0aGUgYGBJbnRlcnJ1cHRlZEVycm9yYGAgYW5kIGF0dGVtcHQgdG8gcmVzdGFydCB0aGUgaW50ZXJydXB0ZWQKKyAgIHN5c3RlbSBjYWxsIGF0IGV2ZXJ5IGNhbGwgc2l0ZS4KKworVGhlIGZpcnN0IG9wdGlvbiBtYWtlcyBhbiBhcHBsaWNhdGlvbiBmYWlsIGludGVybWl0dGVudGx5LgorVGhlIHNlY29uZCBvcHRpb24gYWRkcyBhIGxhcmdlIGFtb3VudCBvZiBib2lsZXJwbGF0ZSB0aGF0IG1ha2VzIHRoZQorY29kZSBuZWFybHkgdW5yZWFkYWJsZS4gIENvbXBhcmU6OgorCisgICAgcHJpbnQoIkhlbGxvIFdvcmxkIikKKworYW5kOjoKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJIZWxsbyBXb3JsZCIpCisgICAgICAgICAgICBicmVhaworICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKzpwZXA6YDQ3NWAgaW1wbGVtZW50cyBhdXRvbWF0aWMgcmV0cnkgb2Ygc3lzdGVtIGNhbGxzIG9uCitgYEVJTlRSYGAuICBUaGlzIHJlbW92ZXMgdGhlIGJ1cmRlbiBvZiBkZWFsaW5nIHdpdGggYGBFSU5UUmBgCitvciA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpbiB1c2VyIGNvZGUgaW4gbW9zdCBzaXR1YXRpb25zIGFuZCBtYWtlcworUHl0aG9uIHByb2dyYW1zLCBpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnksIG1vcmUgcm9idXN0LiAgTm90ZSB0aGF0Cit0aGUgc3lzdGVtIGNhbGwgaXMgb25seSByZXRyaWVkIGlmIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorZXhjZXB0aW9uLgorCitCZWxvdyBpcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIGFyZSBub3cgcmV0cmllZCB3aGVuIGludGVycnVwdGVkCitieSBhIHNpZ25hbDoKKworKiA6ZnVuYzpgb3BlbmAgYW5kIDpmdW5jOmBpby5vcGVuYDsKKworKiBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YGZhdWx0aGFuZGxlcmAgbW9kdWxlOworCisqIDptb2Q6YG9zYCBmdW5jdGlvbnM6IDpmdW5jOmB+b3MuZmNoZGlyYCwgOmZ1bmM6YH5vcy5mY2htb2RgLAorICA6ZnVuYzpgfm9zLmZjaG93bmAsIDpmdW5jOmB+b3MuZmRhdGFzeW5jYCwgOmZ1bmM6YH5vcy5mc3RhdGAsCisgIDpmdW5jOmB+b3MuZnN0YXR2ZnNgLCA6ZnVuYzpgfm9zLmZzeW5jYCwgOmZ1bmM6YH5vcy5mdHJ1bmNhdGVgLAorICA6ZnVuYzpgfm9zLm1rZmlmb2AsIDpmdW5jOmB+b3MubWtub2RgLCA6ZnVuYzpgfm9zLm9wZW5gLAorICA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgLCA6ZnVuYzpgfm9zLnBvc2l4X2ZhbGxvY2F0ZWAsIDpmdW5jOmB+b3MucHJlYWRgLAorICA6ZnVuYzpgfm9zLnB3cml0ZWAsIDpmdW5jOmB+b3MucmVhZGAsIDpmdW5jOmB+b3MucmVhZHZgLCA6ZnVuYzpgfm9zLnNlbmRmaWxlYCwKKyAgOmZ1bmM6YH5vcy53YWl0M2AsIDpmdW5jOmB+b3Mud2FpdDRgLCA6ZnVuYzpgfm9zLndhaXRgLAorICA6ZnVuYzpgfm9zLndhaXRpZGAsIDpmdW5jOmB+b3Mud2FpdHBpZGAsIDpmdW5jOmB+b3Mud3JpdGVgLAorICA6ZnVuYzpgfm9zLndyaXRldmA7CisKKyogc3BlY2lhbCBjYXNlczogOmZ1bmM6YG9zLmNsb3NlYCBhbmQgOmZ1bmM6YG9zLmR1cDJgIG5vdyBpZ25vcmUKKyAgOnB5OmRhdGE6YH5lcnJuby5FSU5UUmAgZXJyb3IsIHRoZSBzeXNjYWxsIGlzIG5vdCByZXRyaWVkIChzZWUgdGhlIFBFUAorICBmb3IgdGhlIHJhdGlvbmFsZSk7CisKKyogOm1vZDpgc2VsZWN0YCBmdW5jdGlvbnM6IDpmdW5jOmBkZXZwb2xsLnBvbGwoKSA8c2VsZWN0LmRldnBvbGwucG9sbD5gLAorICA6ZnVuYzpgZXBvbGwucG9sbCgpIDxzZWxlY3QuZXBvbGwucG9sbD5gLAorICA6ZnVuYzpga3F1ZXVlLmNvbnRyb2woKSA8c2VsZWN0LmtxdWV1ZS5jb250cm9sPmAsCisgIDpmdW5jOmBwb2xsLnBvbGwoKSA8c2VsZWN0LnBvbGwucG9sbD5gLCA6ZnVuYzpgfnNlbGVjdC5zZWxlY3RgOworCisqIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzOiA6bWV0aDpgfnNvY2tldC5zb2NrZXQuYWNjZXB0YCwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmNvbm5lY3RgIChleGNlcHQgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzKSwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnJlY3ZgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQucmVjdmZyb21gLAorICA6bWV0aDpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ2AsIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kYCwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRhbGxgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ2AsCisgIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kdG9gOworCisqIDpmdW5jOmBzaWduYWwuc2lndGltZWR3YWl0YCBhbmQgOmZ1bmM6YHNpZ25hbC5zaWd3YWl0aW5mb2A7CisKKyogOmZ1bmM6YHRpbWUuc2xlZXBgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDc1YCAtLSBSZXRyeSBzeXN0ZW0gY2FsbHMgZmFpbGluZyB3aXRoIEVJTlRSCisgICAgICBQRVAgYW5kIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpIGFuZAorICAgICAgVmljdG9yIFN0aW5uZXIsIHdpdGggdGhlIGhlbHAgb2YgQW50b2luZSBQaXRyb3UgKHRoZSBGcmVuY2ggY29ubmVjdGlvbikuCisKKworLi4gX3doYXRzbmV3LXBlcC00Nzk6CisKK1BFUCA0Nzk6IENoYW5nZSBTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaW50ZXJhY3Rpb24gb2YgZ2VuZXJhdG9ycyBhbmQgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW4gUHl0aG9uIDMuNCBhbmQKK2VhcmxpZXIgd2FzIHNvbWV0aW1lcyBzdXJwcmlzaW5nLCBhbmQgY291bGQgY29uY2VhbCBvYnNjdXJlIGJ1Z3MuICBQcmV2aW91c2x5LAorYGBTdG9wSXRlcmF0aW9uYGAgcmFpc2VkIGFjY2lkZW50YWxseSBpbnNpZGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd2FzCitpbnRlcnByZXRlZCBhcyB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24gYnkgdGhlIGxvb3AgY29uc3RydWN0IGRyaXZpbmcgdGhlCitnZW5lcmF0b3IuCisKKzpwZXA6YDQ3OWAgY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgZ2VuZXJhdG9yczogd2hlbiBhIGBgU3RvcEl0ZXJhdGlvbmBgCitleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZSBhIGdlbmVyYXRvciwgaXQgaXMgcmVwbGFjZWQgd2l0aCBhCis6ZXhjOmBSdW50aW1lRXJyb3JgIGJlZm9yZSBpdCBleGl0cyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiAgVGhlIG1haW4gZ29hbCBvZgordGhpcyBjaGFuZ2UgaXMgdG8gZWFzZSBkZWJ1Z2dpbmcgaW4gdGhlIHNpdHVhdGlvbiB3aGVyZSBhbiB1bmd1YXJkZWQKKzpmdW5jOmBuZXh0YCBjYWxsIHJhaXNlcyBgYFN0b3BJdGVyYXRpb25gYCBhbmQgY2F1c2VzIHRoZSBpdGVyYXRpb24gY29udHJvbGxlZAorYnkgdGhlIGdlbmVyYXRvciB0byB0ZXJtaW5hdGUgc2lsZW50bHkuIFRoaXMgaXMgcGFydGljdWxhcmx5IHBlcm5pY2lvdXMgaW4KK2NvbWJpbmF0aW9uIHdpdGggdGhlIGBgeWllbGQgZnJvbWBgIGNvbnN0cnVjdC4KKworVGhpcyBpcyBhIGJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlLCBzbyB0byBlbmFibGUgdGhlIG5ldyBiZWhhdmlvciwKK2EgOnRlcm06YF9fZnV0dXJlX19gIGltcG9ydCBpcyBuZWNlc3Nhcnk6OgorCisgICAgPj4+IGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9yX3N0b3AKKworICAgID4+PiBkZWYgZ2VuKCk6CisgICAgLi4uICAgICBuZXh0KGl0ZXIoW10pKQorICAgIC4uLiAgICAgeWllbGQKKyAgICAuLi4KKyAgICA+Pj4gbmV4dChnZW4oKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiBnZW4KKyAgICBTdG9wSXRlcmF0aW9uCisKKyAgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOgorCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICBSdW50aW1lRXJyb3I6IGdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbgorCitXaXRob3V0IGEgYGBfX2Z1dHVyZV9fYGAgaW1wb3J0LCBhIDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgIHdpbGwgYmUKK3JhaXNlZCB3aGVuZXZlciBhIGBgU3RvcEl0ZXJhdGlvbmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlIGEgZ2VuZXJhdG9yLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDc5YCAtLSBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycworICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2hyaXMgQW5nZWxpY28gYW5kIEd1aWRvIHZhbiBSb3NzdW0uIEltcGxlbWVudGVkIGJ5CisgICAgICBDaHJpcyBBbmdlbGljbywgWXVyeSBTZWxpdmFub3YgYW5kIE5pY2sgQ29naGxhbi4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ4NToKKworUEVQIDQ4NTogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODVgIGFkZHMgdGhlIDpmdW5jOmBtYXRoLmlzY2xvc2VgIGFuZCA6ZnVuYzpgY21hdGguaXNjbG9zZWAKK2Z1bmN0aW9ucyB3aGljaCB0ZWxsIHdoZXRoZXIgdHdvIHZhbHVlcyBhcmUgYXBwcm94aW1hdGVseSBlcXVhbCBvcgorImNsb3NlIiB0byBlYWNoIG90aGVyLiAgV2hldGhlciBvciBub3QgdHdvIHZhbHVlcyBhcmUgY29uc2lkZXJlZAorY2xvc2UgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8gZ2l2ZW4gYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHRvbGVyYW5jZXMuCitSZWxhdGl2ZSB0b2xlcmFuY2UgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBkaWZmZXJlbmNlIGJldHdlZW4gYGBpc2Nsb3NlYGAKK2FyZ3VtZW50cywgcmVsYXRpdmUgdG8gdGhlIGxhcmdlciBhYnNvbHV0ZSB2YWx1ZTo6CisKKyAgICA+Pj4gaW1wb3J0IG1hdGgKKyAgICA+Pj4gYSA9IDUuMAorICAgID4+PiBiID0gNC45OTk5OAorICAgID4+PiBtYXRoLmlzY2xvc2UoYSwgYiwgcmVsX3RvbD0xZS01KQorICAgIFRydWUKKyAgICA+Pj4gbWF0aC5pc2Nsb3NlKGEsIGIsIHJlbF90b2w9MWUtNikKKyAgICBGYWxzZQorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNvbXBhcmUgdHdvIHZhbHVlcyB1c2luZyBhYnNvbHV0ZSB0b2xlcmFuY2UsIHdoaWNoCittdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIHZhbHVlOjoKKworICAgID4+PiBpbXBvcnQgbWF0aAorICAgID4+PiBhID0gNS4wCisgICAgPj4+IGIgPSA0Ljk5OTk4CisgICAgPj4+IG1hdGguaXNjbG9zZShhLCBiLCBhYnNfdG9sPTAuMDAwMDMpCisgICAgVHJ1ZQorICAgID4+PiBtYXRoLmlzY2xvc2UoYSwgYiwgYWJzX3RvbD0wLjAwMDAxKQorICAgIEZhbHNlCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0ODVgIC0tIEEgZnVuY3Rpb24gZm9yIHRlc3RpbmcgYXBwcm94aW1hdGUgZXF1YWxpdHkKKyAgICAgIFBFUCB3cml0dGVuIGJ5IENocmlzdG9waGVyIEJhcmtlcjsgaW1wbGVtZW50ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZAorICAgICAgVGFsIEVpbmF0LgorCisKKy4uIF93aGF0c25ldy1wZXAtNDg2OgorCitQRVAgNDg2OiBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODZgIG1ha2VzIHRoZSBXaW5kb3dzIGxhdW5jaGVyIChzZWUgOnBlcDpgMzk3YCkgYXdhcmUgb2YgYW4gYWN0aXZlCit2aXJ0dWFsIGVudmlyb25tZW50LiBXaGVuIHRoZSBkZWZhdWx0IGludGVycHJldGVyIHdvdWxkIGJlIHVzZWQgYW5kIHRoZQorYGBWSVJUVUFMX0VOVmBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdGhlIGludGVycHJldGVyIGluIHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudCB3aWxsIGJlIHVzZWQuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDg2YCAtLSBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKyAgICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFBhdWwgTW9vcmUuCisKKworLi4gX3doYXRzbmV3LXBlcC00ODg6CisKK1BFUCA0ODg6IEVsaW1pbmF0aW9uIG9mIFBZTyBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ4OGAgZG9lcyBhd2F5IHdpdGggdGhlIGNvbmNlcHQgb2YgYGAucHlvYGAgZmlsZXMuIFRoaXMgbWVhbnMgdGhhdAorYGAucHljYGAgZmlsZXMgcmVwcmVzZW50IGJvdGggdW5vcHRpbWl6ZWQgYW5kIG9wdGltaXplZCBieXRlY29kZS4gVG8gcHJldmVudCB0aGUKK25lZWQgdG8gY29uc3RhbnRseSByZWdlbmVyYXRlIGJ5dGVjb2RlIGZpbGVzLCBgYC5weWNgYCBmaWxlcyBub3cgaGF2ZSBhbgorb3B0aW9uYWwgYGBvcHQtYGAgdGFnIGluIHRoZWlyIG5hbWUgd2hlbiB0aGUgYnl0ZWNvZGUgaXMgb3B0aW1pemVkLiBUaGlzIGhhcyB0aGUKK3NpZGUtZWZmZWN0IG9mIG5vIG1vcmUgYnl0ZWNvZGUgZmlsZSBuYW1lIGNsYXNoZXMgd2hlbiBydW5uaW5nIHVuZGVyIGVpdGhlcgorOm9wdGlvbjpgLU9gIG9yIDpvcHRpb246YC1PT2AuIENvbnNlcXVlbnRseSwgYnl0ZWNvZGUgZmlsZXMgZ2VuZXJhdGVkIGZyb20KKzpvcHRpb246YC1PYCwgYW5kIDpvcHRpb246YC1PT2AgbWF5IG5vdyBleGlzdCBzaW11bHRhbmVvdXNseS4KKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaGFzIGFuIHVwZGF0ZWQgQVBJIHRvIGhlbHAgd2l0aAordGhpcyBjaGFuZ2UuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0ODhgIC0tIEVsaW1pbmF0aW9uIG9mIFBZTyBmaWxlcworICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEJyZXR0IENhbm5vbi4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ4OToKKworUEVQIDQ4OTogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODlgIHVwZGF0ZXMgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUKK3R3byBzdGVwIG1vZHVsZSBsb2FkaW5nIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ1MWAgaW4gUHl0aG9uIDMuNC4KKworVGhpcyBjaGFuZ2UgYnJpbmdzIHRoZSBpbXBvcnQgc2VtYW50aWNzIG9mIGV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgb3B0LWluIHRvCit1c2luZyB0aGUgbmV3IG1lY2hhbmlzbSBtdWNoIGNsb3NlciB0byB0aG9zZSBvZiBQeXRob24gc291cmNlIGFuZCBieXRlY29kZQorbW9kdWxlcywgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHVzZSBhbnkgdmFsaWQgaWRlbnRpZmllciBhcyBhIG1vZHVsZSBuYW1lLAorcmF0aGVyIHRoYW4gYmVpbmcgcmVzdHJpY3RlZCB0byBBU0NJSS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ4OWAgLS0gTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbgorICAgICAgUEVQIHdyaXR0ZW4gYnkgUGV0ciBWaWt0b3JpbiwgU3RlZmFuIEJlaG5lbCwgYW5kIE5pY2sgQ29naGxhbjsKKyAgICAgIGltcGxlbWVudGVkIGJ5IFBldHIgVmlrdG9yaW4uCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQWRkZWQgdGhlIGBgIm5hbWVyZXBsYWNlImBgIGVycm9yIGhhbmRsZXJzLiAgVGhlIGBgImJhY2tzbGFzaHJlcGxhY2UiYGAKKyAgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmsgd2l0aCBkZWNvZGluZyBhbmQgdHJhbnNsYXRpbmcuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTk2NzZgIGFuZCA6aXNzdWU6YDIyMjg2YC4pCisKKyogVGhlIDpvcHRpb246YC1iYCBvcHRpb24gbm93IGFmZmVjdHMgY29tcGFyaXNvbnMgb2YgOmNsYXNzOmBieXRlc2Agd2l0aAorICA6Y2xhc3M6YGludGAuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNjgxYC4pCisKKyogTmV3IEthemFraCBgYGt6MTA0OGBgIGFuZCBUYWppayBgYGtvaThfdGBgIDpyZWY6YGNvZGVjcyA8c3RhbmRhcmQtZW5jb2RpbmdzPmAuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI2ODJgIGFuZCA6aXNzdWU6YDIyNjgxYC4pCisKKyogUHJvcGVydHkgZG9jc3RyaW5ncyBhcmUgbm93IHdyaXRhYmxlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgorICA6ZnVuYzpgY29sbGVjdGlvbnMubmFtZWR0dXBsZWAgZG9jc3RyaW5ncy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyNDA2NGAuKQorCisqIENpcmN1bGFyIGltcG9ydHMgaW52b2x2aW5nIHJlbGF0aXZlIGltcG9ydHMgYXJlIG5vdyBzdXBwb3J0ZWQuCisgIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gYW5kIEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTc2MzZgLikKKworCitOZXcgTW9kdWxlcworPT09PT09PT09PT0KKwordHlwaW5nCistLS0tLS0KKworVGhlIG5ldyA6bW9kOmB0eXBpbmdgIDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgYXBpPmAgbW9kdWxlCitwcm92aWRlcyBzdGFuZGFyZCBkZWZpbml0aW9ucyBhbmQgdG9vbHMgZm9yIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMuCitTZWUgOnJlZjpgVHlwZSBIaW50cyA8d2hhdHNuZXctcGVwLTQ4ND5gIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBfd2hhdHNuZXctemlwYXBwOgorCit6aXBhcHAKKy0tLS0tLQorCitUaGUgbmV3IDptb2Q6YHppcGFwcGAgbW9kdWxlIChzcGVjaWZpZWQgaW4gOnBlcDpgNDQxYCkgcHJvdmlkZXMgYW4gQVBJIGFuZAorY29tbWFuZCBsaW5lIHRvb2wgZm9yIGNyZWF0aW5nIGV4ZWN1dGFibGUgUHl0aG9uIFppcCBBcHBsaWNhdGlvbnMsIHdoaWNoCit3ZXJlIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuNiBpbiA6aXNzdWU6YDE3Mzk0NjhgLCBidXQgd2hpY2ggd2VyZSBub3Qgd2VsbAorcHVibGljaXplZCwgZWl0aGVyIGF0IHRoZSB0aW1lIG9yIHNpbmNlLgorCitXaXRoIHRoZSBuZXcgbW9kdWxlLCBidW5kbGluZyB5b3VyIGFwcGxpY2F0aW9uIGlzIGFzIHNpbXBsZSBhcyBwdXR0aW5nIGFsbAordGhlIGZpbGVzLCBpbmNsdWRpbmcgYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSwgaW50byBhIGRpcmVjdG9yeSBgYG15YXBwYGAKK2FuZCBydW5uaW5nOjoKKworICAgICQgcHl0aG9uIC1tIHppcGFwcCBteWFwcAorICAgICQgcHl0aG9uIG15YXBwLnB5egorCitUaGUgbW9kdWxlIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIGNvbnRyaWJ1dGVkIGJ5IFBhdWwgTW9vcmUgaW4KKzppc3N1ZTpgMjM0OTFgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDQxYCAtLSBJbXByb3ZpbmcgUHl0aG9uIFpJUCBBcHBsaWNhdGlvbiBTdXBwb3J0CisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCithcmdwYXJzZQorLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfmFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYCBjbGFzcyBub3cgYWxsb3dzIHRvIGRpc2FibGUKKzpyZWY6YGFiYnJldmlhdGVkIHVzYWdlIDxwcmVmaXgtbWF0Y2hpbmc+YCBvZiBsb25nIG9wdGlvbnMgYnkgc2V0dGluZworOnJlZjpgYWxsb3dfYWJicmV2YCB0byBgYEZhbHNlYGAuICAoQ29udHJpYnV0ZWQgYnkgSm9uYXRoYW4gUGF1Z2gsCitTdGV2ZW4gQmV0aGFyZCwgcGF1bCBqMyBhbmQgRGFuaWVsIEVyaWtzc29uIGluIDppc3N1ZTpgMTQ5MTBgLikKKworCithc3luY2lvCistLS0tLS0tCisKK1NpbmNlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBpcyA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gLAorYWxsIGNoYW5nZXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy41IGhhdmUgYWxzbyBiZWVuIGJhY2twb3J0ZWQgdG8gUHl0aG9uIDMuNC54LgorCitOb3RhYmxlIGNoYW5nZXMgaW4gdGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBzaW5jZSBQeXRob24gMy40LjA6CisKKyogTmV3IGRlYnVnZ2luZyBBUElzOiA6bWV0aDpgbG9vcC5zZXRfZGVidWcoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLnNldF9kZWJ1Zz5gCisgIGFuZCA6bWV0aDpgbG9vcC5nZXRfZGVidWcoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmdldF9kZWJ1Zz5gIG1ldGhvZHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lci4pCisKKyogVGhlIHByb2FjdG9yIGV2ZW50IGxvb3Agbm93IHN1cHBvcnRzIFNTTC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGFuZCBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyNTYwYC4pCisKKyogQSBuZXcgOm1ldGg6YGxvb3AuaXNfY2xvc2VkKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5pc19jbG9zZWQ+YCBtZXRob2QgdG8KKyAgY2hlY2sgaWYgdGhlIGV2ZW50IGxvb3AgaXMgY2xvc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTMyNmAuKQorCisqIEEgbmV3IDptZXRoOmBsb29wLmNyZWF0ZV90YXNrKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFzaz5gCisgIHRvIGNvbnZlbmllbnRseSBjcmVhdGUgYW5kIHNjaGVkdWxlIGEgbmV3IDpjbGFzczpgfmFzeW5jaW8uVGFza2AKKyAgZm9yIGEgY29yb3V0aW5lLiAgVGhlIGBgY3JlYXRlX3Rhc2tgYCBtZXRob2QgaXMgYWxzbyB1c2VkIGJ5IGFsbAorICBhc3luY2lvIGZ1bmN0aW9ucyB0aGF0IHdyYXAgY29yb3V0aW5lcyBpbnRvIHRhc2tzLCBzdWNoIGFzCisgIDpmdW5jOmBhc3luY2lvLndhaXRgLCA6ZnVuYzpgYXN5bmNpby5nYXRoZXJgLCBldGMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lci4pCisKKyogQSBuZXcgOm1ldGg6YHRyYW5zcG9ydC5nZXRfd3JpdGVfYnVmZmVyX2xpbWl0cygpIDxhc3luY2lvLldyaXRlVHJhbnNwb3J0LmdldF93cml0ZV9idWZmZXJfbGltaXRzPmAKKyAgbWV0aG9kIHRvIGlucXVpcmUgZm9yICpoaWdoLSogYW5kICpsb3ctKiB3YXRlciBsaW1pdHMgb2YgdGhlIGZsb3cKKyAgY29udHJvbC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworKiBUaGUgOmZ1bmM6YH5hc3luY2lvLmFzeW5jYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mCisgIDpmdW5jOmB+YXN5bmNpby5lbnN1cmVfZnV0dXJlYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOm1ldGg6YGxvb3Auc2V0X3Rhc2tfZmFjdG9yeSgpIDxhc3luY2lvLkJhc2VFdmVudExvb3Auc2V0X3Rhc2tfZmFjdG9yeT5gCisgIGFuZCA6bWV0aDpgbG9vcC5zZXRfdGFza19mYWN0b3J5KCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRfdGFza19mYWN0b3J5PmAKKyAgbWV0aG9kcyB0byBjdXN0b21pemUgdGhlIHRhc2sgZmFjdG9yeSB0aGF0CisgIDptZXRoOmBsb29wLmNyZWF0ZV90YXNrKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFzaz5gIG1ldGhvZCB1c2VzLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6bWV0aDpgUXVldWUuam9pbigpIDxhc3luY2lvLlF1ZXVlLmpvaW4+YCBhbmQKKyAgOm1ldGg6YFF1ZXVlLnRhc2tfZG9uZSgpIDxhc3luY2lvLlF1ZXVlLnRhc2tfZG9uZT5gIHF1ZXVlIG1ldGhvZHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lci4pCisKKyogVGhlIGBgSm9pbmFibGVRdWV1ZWBgIGNsYXNzIHdhcyByZW1vdmVkLCBpbiBmYXZvciBvZiB0aGUKKyAgOmNsYXNzOmBhc3luY2lvLlF1ZXVlYCBjbGFzcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworCitiejIKKy0tLQorCitUaGUgOm1ldGg6YEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzIDxiejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3M+YAorbWV0aG9kIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsICptYXhfbGVuZ3RoKiBhcmd1bWVudCB0byBsaW1pdCB0aGUgbWF4aW11bQorc2l6ZSBvZiBkZWNvbXByZXNzZWQgZGF0YS4gKENvbnRyaWJ1dGVkIGJ5IE5pa29sYXVzIFJhdGggaW4gOmlzc3VlOmAxNTk1NWAuKQorCisKK2NnaQorLS0tCisKK1RoZSA6Y2xhc3M6YH5jZ2kuRmllbGRTdG9yYWdlYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgCitwcm90b2NvbC4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjAyODlgLikKKworCitjbWF0aAorLS0tLS0KKworQSBuZXcgZnVuY3Rpb24gOmZ1bmM6YH5jbWF0aC5pc2Nsb3NlYCBwcm92aWRlcyBhIHdheSB0byB0ZXN0IGZvciBhcHByb3hpbWF0ZQorZXF1YWxpdHkuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZCBUYWwgRWluYXQgaW4gOmlzc3VlOmAyNDI3MGAuKQorCisKK2NvZGUKKy0tLS0KKworVGhlIDpmdW5jOmBJbnRlcmFjdGl2ZUludGVycHJldGVyLnNob3d0cmFjZWJhY2soKSA8Y29kZS5JbnRlcmFjdGl2ZUludGVycHJldGVyLnNob3d0cmFjZWJhY2s+YAorbWV0aG9kIG5vdyBwcmludHMgdGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2ssIGp1c3QgbGlrZSB0aGUgaW50ZXJhY3RpdmUKK2ludGVycHJldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE3NDQyYC4pCisKKworY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tCisKKy4uIF93aGF0c25ldy1vcmRlcmVkZGljdDoKKworVGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBjbGFzcyBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQywgd2hpY2gKK21ha2VzIGl0IDQgdG8gMTAwIHRpbWVzIGZhc3Rlci4gIChDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNjk5MWAuKQorCis6bWV0aDpgT3JkZXJlZERpY3QuaXRlbXMoKSA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QuaXRlbXM+YCwKKzptZXRoOmBPcmRlcmVkRGljdC5rZXlzKCkgPGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LmtleXM+YCwKKzptZXRoOmBPcmRlcmVkRGljdC52YWx1ZXMoKSA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QudmFsdWVzPmAgdmlld3Mgbm93IHN1cHBvcnQKKzpmdW5jOmByZXZlcnNlZGAgaXRlcmF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxOTUwNWAuKQorCitUaGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuZGVxdWVgIGNsYXNzIG5vdyBkZWZpbmVzCis6bWV0aDpgfmNvbGxlY3Rpb25zLmRlcXVlLmluZGV4YCwgOm1ldGg6YH5jb2xsZWN0aW9ucy5kZXF1ZS5pbnNlcnRgLCBhbmQKKzptZXRoOmB+Y29sbGVjdGlvbnMuZGVxdWUuY29weWAsIGFzIHdlbGwgYXMgc3VwcG9ydHMgYGArYGAgYW5kIGBgKmBgIG9wZXJhdG9ycy4KK1RoaXMgYWxsb3dzIGRlcXVlcyB0byBiZSByZWNvZ25pemVkIGFzIGEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAKK2FuZCBpbXByb3ZlcyB0aGVpciBzdWJzdGl0dXRhYmlsaXR5IGZvciBsaXN0cy4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciA6aXNzdWU6YDIzNzA0YC4pCisKK0RvY3N0cmluZ3MgcHJvZHVjZWQgYnkgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBjYW4gbm93IGJlIHVwZGF0ZWQ6OgorCisgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCisgICAgUG9pbnQuX19kb2NfXyA9ICdvcmRlcmVkIHBhaXInCisgICAgUG9pbnQueC5fX2RvY19fID0gJ2Fic2Npc3NhJworICAgIFBvaW50LnkuX19kb2NfXyA9ICdvcmRpbmF0ZScKKworKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyNDA2NGAuKQorCitUaGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuVXNlclN0cmluZ2AgY2xhc3Mgbm93IGltcGxlbWVudHMKKzptZXRoOmBfX2dldG5ld2FyZ3NfX2AsIDptZXRoOmBfX3Jtb2RfX2AsIDptZXRoOmB+c3RyLmNhc2Vmb2xkYCwKKzptZXRoOmB+c3RyLmZvcm1hdF9tYXBgLCA6bWV0aDpgfnN0ci5pc3ByaW50YWJsZWAsIGFuZCA6bWV0aDpgfnN0ci5tYWtldHJhbnNgCittZXRob2RzIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMgb2YgOmNsYXNzOmBzdHJgLgorKENvbnRyaWJ1dGVkIGJ5IEpvZSBKZXZuaWsgaW4gOmlzc3VlOmAyMjE4OWAuKQorCisKK2NvbGxlY3Rpb25zLmFiYworLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bWV0aDpgU2VxdWVuY2UuaW5kZXgoKSA8Y29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlLmluZGV4PmAgbWV0aG9kIG5vdworYWNjZXB0cyAqc3RhcnQqIGFuZCAqc3RvcCogYXJndW1lbnRzIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMKK29mIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YGxpc3RgLCBldGMuCisoQ29udHJpYnV0ZWQgYnkgRGV2aW4gSmVhbnBpZXJyZSBpbiA6aXNzdWU6YDIzMDg2YC4pCisKK0EgbmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3JgIGFic3RyYWN0IGJhc2UgY2xhc3MuIChDb250cmlidXRlZAorYnkgU3RlZmFuIEJlaG5lbCBpbiA6aXNzdWU6YDI0MDE4YC4pCisKK05ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlYCA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lYCwKKzpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Bc3luY0l0ZXJhdG9yYCwgYW5kCis6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYWJsZWAgYWJzdHJhY3QgYmFzZSBjbGFzc2VzLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQxODRgLikKKworRm9yIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zLCBhIGJhY2twb3J0IG9mIHRoZSBuZXcgQUJDcyBpcyBhdmFpbGFibGUgaW4gYW4KK2V4dGVybmFsIGBQeVBJIHBhY2thZ2UgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYmFja3BvcnRzX2FiYz5gXy4KKworCitjb21waWxlYWxsCistLS0tLS0tLS0tCisKK0EgbmV3IDptb2Q6YGNvbXBpbGVhbGxgIG9wdGlvbiwgOnNhbXA6YC1qIHtOfWAsIGFsbG93cyB0byBydW4gKk4qIHdvcmtlcnMKK3N1bXVsdGFuZW91c2x5IHRvIHBlcmZvcm0gcGFyYWxsZWwgYnl0ZWNvZGUgY29tcGlsYXRpb24uCitUaGUgOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfZGlyYCBmdW5jdGlvbiBoYXMgYSBjb3JyZXNwb25kaW5nIGBgd29ya2Vyc2BgCitwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTYxMDRgLikKKworQW5vdGhlciBuZXcgb3B0aW9uLCBgYC1yYGAsIGFsbG93cyB0byBjb250cm9sIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbgorbGV2ZWwgZm9yIHN1YmRpcmVjdG9yaWVzLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE5NjI4YC4pCisKK1RoZSBgYC1xYGAgY29tbWFuZCBsaW5lIG9wdGlvbiBjYW4gbm93IGJlIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSwgaW4KK3doaWNoIGNhc2UgYWxsIG91dHB1dCwgaW5jbHVkaW5nIGVycm9ycywgd2lsbCBiZSBzdXBwcmVzc2VkLiAgVGhlIGNvcnJlc3BvbmRpbmcKK2BgcXVpZXRgYCBwYXJhbWV0ZXIgaW4gOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfZGlyYCwKKzpmdW5jOmB+Y29tcGlsZWFsbC5jb21waWxlX2ZpbGVgLCBhbmQgOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfcGF0aGAgY2FuIG5vdworYWNjZXB0IGFuIGludGVnZXIgdmFsdWUgaW5kaWNhdGluZyB0aGUgbGV2ZWwgb2Ygb3V0cHV0IHN1cHByZXNzaW9uLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjEzMzhgLikKKworCitjb25jdXJyZW50LmZ1dHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1ldGg6YEV4ZWN1dG9yLm1hcCgpIDxjb25jdXJyZW50LmZ1dHVyZXMuRXhlY3V0b3IubWFwPmAgbWV0aG9kIG5vdyBhY2NlcHRzIGEKKypjaHVua3NpemUqIGFyZ3VtZW50IHRvIGFsbG93IGJhdGNoaW5nIG9mIHRhc2tzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugd2hlbgorOm1ldGg6YH5jb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaXMgdXNlZC4KKyhDb250cmlidXRlZCBieSBEYW4gTydSZWlsbHkgaW4gOmlzc3VlOmAxMTI3MWAuKQorCitBIG51bWJlciBvZiB3b3JrZXJzIGluIDpjbGFzczpgfmNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3JgIGNvbnN0cnVjdG9yIGlzCitvcHRpb25hbCBub3cuICBUaGUgZGVmYXVsdCB2YWx1ZSBlcXVhbHMgdG8gNSB0aW1lcyB0aGUgbnVtYmVyIG9mIENQVXMuCisoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMjE1MjdgLikKKworCitjb25maWdwYXJzZXIKKy0tLS0tLS0tLS0tLQorCis6bW9kOmBjb25maWdwYXJzZXJgIG5vdyBwcm92aWRlcyBhIHdheSB0byBjdXN0b21pemUgdGhlIGNvbnZlcnNpb24KK29mIHZhbHVlcyBieSBzcGVjaWZ5aW5nIGEgZGljdGlvbmFyeSBvZiBjb252ZXJ0ZXJzIGluCis6Y2xhc3M6YH5jb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyYCBjb25zdHJ1Y3Rvciwgb3IgYnkgZGVmaW5pbmcgdGhlbQorYXMgbWV0aG9kcyBpbiBgYENvbmZpZ1BhcnNlcmBgIHN1YmNsYXNzZXMuICBDb252ZXJ0ZXJzIGRlZmluZWQgaW4KK3BhcnNlciBpbnN0YW5jZSBhcmUgaW5oZXJpdGVkIGJ5IGl0cyBzZWN0aW9uIHByb3hpZXMuCisKK0V4YW1wbGU6OgorCisgICAgPj4+IGltcG9ydCBjb25maWdwYXJzZXIKKyAgICA+Pj4gY29udiA9IHt9CisgICAgPj4+IGNvbnZbJ2xpc3QnXSA9IGxhbWJkYSB2OiBbZS5zdHJpcCgpIGZvciBlIGluIHYuc3BsaXQoKSBpZiBlLnN0cmlwKCldCisgICAgPj4+IGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoY29udmVydGVycz1jb252KQorICAgID4+PiBjZmcucmVhZF9zdHJpbmcoIiIiCisgICAgLi4uIFtzXQorICAgIC4uLiBsaXN0ID0gYSBiIGMgZCBlIGYgZworICAgIC4uLiAiIiIpCisgICAgPj4+IGNmZy5nZXQoJ3MnLCAnbGlzdCcpCisgICAgJ2EgYiBjIGQgZSBmIGcnCisgICAgPj4+IGNmZy5nZXRsaXN0KCdzJywgJ2xpc3QnKQorICAgIFsnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZyddCisgICAgPj4+IHNlY3Rpb24gPSBjZmdbJ3MnXQorICAgID4+PiBzZWN0aW9uLmdldGxpc3QoJ2xpc3QnKQorICAgIFsnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZyddCisKKyhDb250cmlidXRlZCBieSDFgXVrYXN6IExhbmdhIGluIDppc3N1ZTpgMTgxNTlgLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5jb250ZXh0bGliLnJlZGlyZWN0X3N0ZGVycmAgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgKHNpbWlsYXIgdG8KKzpmdW5jOmB+Y29udGV4dGxpYi5yZWRpcmVjdF9zdGRvdXRgKSBtYWtlcyBpdCBlYXNpZXIgZm9yIHV0aWxpdHkgc2NyaXB0cyB0bworaGFuZGxlIGluZmxleGlibGUgQVBJcyB0aGF0IHdyaXRlIHRoZWlyIG91dHB1dCB0byA6ZGF0YTpgc3lzLnN0ZGVycmAgYW5kCitkb24ndCBwcm92aWRlIGFueSBvcHRpb25zIHRvIHJlZGlyZWN0IGl0OjoKKworICAgID4+PiBpbXBvcnQgY29udGV4dGxpYiwgaW8sIGxvZ2dpbmcKKyAgICA+Pj4gZiA9IGlvLlN0cmluZ0lPKCkKKyAgICA+Pj4gd2l0aCBjb250ZXh0bGliLnJlZGlyZWN0X3N0ZGVycihmKToKKyAgICAuLi4gICAgIGxvZ2dpbmcud2FybmluZygnd2FybmluZycpCisgICAgLi4uCisgICAgPj4+IGYuZ2V0dmFsdWUoKQorICAgICdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJworCisoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIyMzg5YC4pCisKKworY3N2CistLS0KKworVGhlIDptZXRoOmB+Y3N2LmNzdndyaXRlci53cml0ZXJvd2AgbWV0aG9kIG5vdyBzdXBwb3J0cyBhcmJpdHJhcnkgaXRlcmFibGVzLAorbm90IGp1c3Qgc2VxdWVuY2VzLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzE3MWAuKQorCisKK2N1cnNlcworLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5jdXJzZXMudXBkYXRlX2xpbmVzX2NvbHNgIGZ1bmN0aW9uIHVwZGF0ZXMgOmVudnZhcjpgTElORVNgCithbmQgOmVudnZhcjpgQ09MU2AgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGRldGVjdGluZworbWFudWFsIHNjcmVlbiByZXNpemUuICAoQ29udHJpYnV0ZWQgYnkgQXJub24gWWFhcmkgaW4gOmlzc3VlOmA0MjU0YC4pCisKKworZGJtCistLS0KKworOmZ1bmM6YGR1bWIub3BlbiA8ZGJtLmR1bWIub3Blbj5gIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdoZW4gdGhlIGZsYWcKK2hhcyB0aGUgdmFsdWUgYGAibiJgYC4gIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAxODAzOWAuKQorCisKK2RpZmZsaWIKKy0tLS0tLS0KKworVGhlIGNoYXJzZXQgb2YgSFRNTCBkb2N1bWVudHMgZ2VuZXJhdGVkIGJ5Cis6bWV0aDpgSHRtbERpZmYubWFrZV9maWxlKCkgPGRpZmZsaWIuSHRtbERpZmYubWFrZV9maWxlPmAKK2NhbiBub3cgYmUgY3VzdG9taXplZCBieSB1c2luZyBhIG5ldyAqY2hhcnNldCoga2V5d29yZC1vbmx5IGFyZ3VtZW50LgorVGhlIGRlZmF1bHQgY2hhcnNldCBvZiBIVE1MIGRvY3VtZW50IGNoYW5nZWQgZnJvbSBgYCJJU08tODg1OS0xImBgCit0byBgYCJ1dGYtOCJgYC4KKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjA1MmAuKQorCitUaGUgOmZ1bmM6YH5kaWZmbGliLmRpZmZfYnl0ZXNgIGZ1bmN0aW9uIGNhbiBub3cgY29tcGFyZSBsaXN0cyBvZiBieXRlCitzdHJpbmdzLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gZnJvbSBQeXRob24gMi4KKyhDb250cmlidXRlZCBieSBUZXJyeSBKLiBSZWVkeSBhbmQgR3JlZyBXYXJkIGluIDppc3N1ZTpgMTc0NDVgLikKKworCitkaXN0dXRpbHMKKy0tLS0tLS0tLQorCitCb3RoIGBgYnVpbGRgYCBhbmQgYGBidWlsZF9leHRgYCBjb21tYW5kcyBub3cgYWNjZXB0IGEgYGAtamBgIG9wdGlvbiB0bworZW5hYmxlIHBhcmFsbGVsIGJ1aWxkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgNTMwOWAuKQorCitUaGUgOm1vZDpgZGlzdHV0aWxzYCBtb2R1bGUgbm93IHN1cHBvcnRzIGBgeHpgYCBjb21wcmVzc2lvbiwgYW5kIGNhbiBiZQorZW5hYmxlZCBieSBwYXNzaW5nIGBgeHp0YXJgYCBhcyBhbiBhcmd1bWVudCB0byBgYGJkaXN0IC0tZm9ybWF0YGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE2MzE0YC4pCisKKworZG9jdGVzdAorLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5kb2N0ZXN0LkRvY1Rlc3RTdWl0ZWAgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eQorOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIGlmICptb2R1bGUqIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MgaW5zdGVhZCBvZgorcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYC4gIChDb250cmlidXRlZCBieSBHbGVubiBKb25lcyBpbiA6aXNzdWU6YDE1OTE2YC4pCisKKworZW1haWwKKy0tLS0tCisKK0EgbmV3IHBvbGljeSBvcHRpb24gOmF0dHI6YFBvbGljeS5tYW5nbGVfZnJvbV8gPGVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fPmAKK2NvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3RhcnQgd2l0aCBgYCJGcm9tICJgYCBpbiBlbWFpbCBib2RpZXMgYXJlCitwcmVmaXhlZCB3aXRoIGEgYGAiPiJgYCBjaGFyYWN0ZXIgYnkgZ2VuZXJhdG9ycy4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvcgorOmF0dHI6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlciBwb2xpY2llcy4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggaW4gOmlzc3VlOmAyMDA5OGAuKQorCitBIG5ldworOm1ldGg6YE1lc3NhZ2UuZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKSA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uPmAKK21ldGhvZCBwcm92aWRlcyBlYXN5IGFjY2VzcyB0byBhIGNhbm9uaWNhbCB2YWx1ZSBmb3IgdGhlCis6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgorKENvbnRyaWJ1dGVkIGJ5IEFiaGlsYXNoIFJhaiBpbiA6aXNzdWU6YDIxMDgzYC4pCisKK0EgbmV3IHBvbGljeSBvcHRpb24gOmF0dHI6YEVtYWlsUG9saWN5LnV0ZjggPGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4PmAKK2NhbiBiZSBzZXQgdG8gYGBUcnVlYGAgdG8gZW5jb2RlIGVtYWlsIGhlYWRlcnMgdXNpbmcgdGhlIFVURi04IGNoYXJzZXQgaW5zdGVhZAorb2YgdXNpbmcgZW5jb2RlZCB3b3Jkcy4gIFRoaXMgYWxsb3dzIGBgTWVzc2FnZXNgYCB0byBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvCis6cmZjOmA2NTMyYCBhbmQgdXNlZCB3aXRoIGFuIFNNVFAgc2VydmVyIHRoYXQgc3VwcG9ydHMgdGhlIDpyZmM6YDY1MzFgCitgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkIE11cnJheSBpbgorOmlzc3VlOmAyNDIxMWAuKQorCitUaGUgOmNsYXNzOmBtaW1lLnRleHQuTUlNRVRleHQgPGVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dD5gIGNvbnN0cnVjdG9yIG5vdworYWNjZXB0cyBhIDpjbGFzczpgY2hhcnNldC5DaGFyc2V0IDxlbWFpbC5jaGFyc2V0LkNoYXJzZXQ+YCBpbnN0YW5jZS4KKyhDb250cmlidXRlZCBieSBDbGF1ZGUgUGFyb3ogYW5kIEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAxNjMyNGAuKQorCisKK2VudW0KKy0tLS0KKworVGhlIDpjbGFzczpgfmVudW0uRW51bWAgY2FsbGFibGUgaGFzIGEgbmV3IHBhcmFtZXRlciAqc3RhcnQqIHRvCitzcGVjaWZ5IHRoZSBpbml0aWFsIG51bWJlciBvZiBlbnVtIHZhbHVlcyBpZiBvbmx5ICpuYW1lcyogYXJlIHByb3ZpZGVkOjoKKworICAgID4+PiBBbmltYWwgPSBlbnVtLkVudW0oJ0FuaW1hbCcsICdjYXQgZG9nJywgc3RhcnQ9MTApCisgICAgPj4+IEFuaW1hbC5jYXQKKyAgICA8QW5pbWFsLmNhdDogMTA+CisgICAgPj4+IEFuaW1hbC5kb2cKKyAgICA8QW5pbWFsLmRvZzogMTE+CisKKyhDb250cmlidXRlZCBieSBFdGhhbiBGdXJtYW4gaW4gOmlzc3VlOmAyMTcwNmAuKQorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKKzpmdW5jOmB+ZmF1bHRoYW5kbGVyLmVuYWJsZWAsIDpmdW5jOmB+ZmF1bHRoYW5kbGVyLnJlZ2lzdGVyYCwKKzpmdW5jOmB+ZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrYCBhbmQKKzpmdW5jOmB+ZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyYCBmdW5jdGlvbnMgbm93IGFjY2VwdCBmaWxlCitkZXNjcmlwdG9ycyBpbiBhZGRpdGlvbiB0byBmaWxlLWxpa2Ugb2JqZWN0cy4KKyhDb250cmlidXRlZCBieSBXZWkgV3UgaW4gOmlzc3VlOmAyMzU2NmAuKQorCisKK2Z1bmN0b29scworLS0tLS0tLS0tCisKKy4uIF93aGF0c25ldy1scnVjYWNoZToKKworTW9zdCBvZiA6ZnVuYzpgfmZ1bmN0b29scy5scnVfY2FjaGVgIG1hY2hpbmVyeSBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQywgbWFraW5nCitpdCBzaWduaWZpY2FudGx5IGZhc3Rlci4gIChDb250cmlidXRlZCBieSBNYXR0IEpvaW5lciwgQWxleGV5IEthY2hheWV2LCBhbmQKK1NlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNDM3M2AuKQorCisKK2dsb2IKKy0tLS0KKworOmZ1bmM6YH5nbG9iLmlnbG9iYCBhbmQgOmZ1bmM6YH5nbG9iLmdsb2JgIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCByZWN1cnNpdmUKK3NlYXJjaCBpbiBzdWJkaXJlY3RvcmllcyB1c2luZyB0aGUgYGAiKioiYGAgcGF0dGVybi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTM5NjhgLikKKworCitnemlwCistLS0tCisKK1RoZSAqbW9kZSogYXJndW1lbnQgb2YgOmNsYXNzOmB+Z3ppcC5HemlwRmlsZWAgY29uc3RydWN0b3Igbm93CithY2NlcHRzIGBgIngiYGAgdG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgVGltIEhlYW5leSBpbiA6aXNzdWU6YDE5MjIyYC4pCisKKworaGVhcHEKKy0tLS0tCisKK0VsZW1lbnQgY29tcGFyaXNvbiBpbiA6ZnVuYzpgfmhlYXBxLm1lcmdlYCBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgYnkKK3Bhc3NpbmcgYSA6dGVybTpga2V5IGZ1bmN0aW9uYCBpbiBhIG5ldyBvcHRpb25hbCAqa2V5KiBrZXl3b3JkIGFyZ3VtZW50LAorYW5kIGEgbmV3IG9wdGlvbmFsICpyZXZlcnNlKiBrZXl3b3JkIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHJldmVyc2UgZWxlbWVudAorY29tcGFyaXNvbjo6CisKKyAgICA+Pj4gaW1wb3J0IGhlYXBxCisgICAgPj4+IGEgPSBbJzknLCAnNzc3JywgJzU1NTU1J10KKyAgICA+Pj4gYiA9IFsnODgnLCAnNjY2NiddCisgICAgPj4+IGxpc3QoaGVhcHEubWVyZ2UoYSwgYiwga2V5PWxlbikpCisgICAgWyc5JywgJzg4JywgJzc3NycsICc2NjY2JywgJzU1NTU1J10KKyAgICA+Pj4gbGlzdChoZWFwcS5tZXJnZShyZXZlcnNlZChhKSwgcmV2ZXJzZWQoYiksIGtleT1sZW4sIHJldmVyc2U9VHJ1ZSkpCisgICAgWyc1NTU1NScsICc2NjY2JywgJzc3NycsICc4OCcsICc5J10KKworKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTM3NDJgLikKKworCitodHRwCistLS0tCisKK0EgbmV3IDpjbGFzczpgSFRUUFN0YXR1cyA8aHR0cC5IVFRQU3RhdHVzPmAgZW51bSB0aGF0IGRlZmluZXMgYSBzZXQgb2YKK0hUVFAgc3RhdHVzIGNvZGVzLCByZWFzb24gcGhyYXNlcyBhbmQgbG9uZyBkZXNjcmlwdGlvbnMgd3JpdHRlbiBpbiBFbmdsaXNoLgorKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMTc5M2AuKQorCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKSA8aHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2U+YAorbm93IHJhaXNlcyBhIDpleGM6YH5odHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWRgIGV4Y2VwdGlvbiB3aGVuIGEKK3JlbW90ZSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBjbG9zZWQgdW5leHBlY3RlZGx5LiAgQWRkaXRpb25hbGx5LCBpZiBhCis6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIChvZiB3aGljaCBgYFJlbW90ZURpc2Nvbm5lY3RlZGBgCitpcyBhIHN1YmNsYXNzKSBpcyByYWlzZWQsIHRoZSBjbGllbnQgc29ja2V0IGlzIG5vdyBjbG9zZWQgYXV0b21hdGljYWxseSwKK2FuZCB3aWxsIHJlY29ubmVjdCBvbiB0aGUgbmV4dCByZXF1ZXN0OjoKKworICAgIGltcG9ydCBodHRwLmNsaWVudAorICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbignd3d3LnB5dGhvbi5vcmcnKQorICAgIGZvciByZXRyaWVzIGluIHJhbmdlKDMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvJykKKyAgICAgICAgICAgIHJlc3AgPSBjb25uLmdldHJlc3BvbnNlKCkKKyAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LlJlbW90ZURpc2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHBhc3MKKworKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAzNTY2YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSBpZGxlbGliIGltcGxlbWVudHMgdGhlIElETEUgc2hlbGwgYW5kIGVkaXRvciBhbmQgaXMgbm90IGludGVuZGVkIGZvcgoraW1wb3J0IGJ5IG90aGVyIHByb2dyYW1zLCBpdCBnZXRzIGltcHJvdmVtZW50cyB3aXRoIGV2ZXJ5IHJlbGVhc2UuICBTZWUKKzpmaWxlOmBMaWIvaWRsZWxpYi9ORVdTLnR4dGAgZm9yIGEgY3VtdWxhdGl2ZSBsaXN0IG9mIGNoYW5nZXMgc2luY2UgMy40LjAsCithcyB3ZWxsIGFzIGNoYW5nZXMgbWFkZSBpbiBmdXR1cmUgMy41LnggcmVsZWFzZXMuIFRoaXMgZmlsZSBpcyBhbHNvIGF2YWlsYWJsZQorZnJvbSB0aGUgSURMRSA6bWVudXNlbGVjdGlvbjpgSGVscCAtLT4gQWJvdXQgSURMRWAgZGlhbG9nLgorCisKK2ltYXBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgfmltYXBsaWIuSU1BUDRgIGNsYXNzIG5vdyBzdXBwb3J0cyA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4KK1doZW4gdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQsIHRoZSBJTUFQNCBgYExPR09VVGBgCitjb21tYW5kIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2suCisoQ29udHJpYnV0ZWQgYnkgVGFyZWsgWmlhZMOpIGFuZCBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgNDk3MmAuKQorCitUaGUgOm1vZDpgaW1hcGxpYmAgbW9kdWxlIG5vdyBzdXBwb3J0cyA6cmZjOmA1MTYxYCAoRU5BQkxFIEV4dGVuc2lvbikKK2FuZCA6cmZjOmA2ODU1YCAoVVRGLTggU3VwcG9ydCkgdmlhIHRoZSA6bWV0aDpgSU1BUDQuZW5hYmxlKCkgPGltYXBsaWIuSU1BUDQuZW5hYmxlPmAKK21ldGhvZC4gIEEgbmV3IDphdHRyOmBJTUFQNC51dGY4X2VuYWJsZWQgPGltYXBsaWIuSU1BUDQudXRmOF9lbmFibGVkPmAKK2F0dHJpYnV0ZSwgdHJhY2tzIHdoZXRoZXIgb3Igbm90IDpyZmM6YDY4NTVgIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2gsIFIuIERhdmlkIE11cnJheSwgYW5kIE1hY2llaiBTenVsaWsgaW4KKzppc3N1ZTpgMjE4MDBgLikKKworVGhlIDptb2Q6YGltYXBsaWJgIG1vZHVsZSBub3cgYXV0b21hdGljYWxseSBlbmNvZGVzIG5vbi1BU0NJSSBzdHJpbmcgdXNlcm5hbWVzCithbmQgcGFzc3dvcmRzIHVzaW5nIFVURi04LCBhcyByZWNvbW1lbmRlZCBieSB0aGUgUkZDcy4gIChDb250cmlidXRlZCBieSBNaWxhbgorT2JlcmtpcmNoIGluIDppc3N1ZTpgMjE4MDBgLikKKworCitpbWdoZHIKKy0tLS0tLQorCitUaGUgOmZ1bmM6YH5pbWdoZHIud2hhdGAgZnVuY3Rpb24gbm93IHJlY29nbml6ZXMgdGhlCitgT3BlbkVYUiA8aHR0cDovL3d3dy5vcGVuZXhyLmNvbT5gXyBmb3JtYXQKKyhjb250cmlidXRlZCBieSBNYXJ0aW4gVmlnbmFsaSBhbmQgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMjAyOTVgKSwKK2FuZCB0aGUgYFdlYlAgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYlA+YF8gZm9ybWF0CisoY29udHJpYnV0ZWQgYnkgRmFicmljZSBBbmVjaGUgYW5kIENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDIwMTk3YC4pCisKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworVGhlIDpjbGFzczpgdXRpbC5MYXp5TG9hZGVyIDxpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyPmAgY2xhc3MgYWxsb3dzIGZvcgorbGF6eSBsb2FkaW5nIG9mIG1vZHVsZXMgaW4gYXBwbGljYXRpb25zIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBpbXBvcnRhbnQuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTc2MjFgLikKKworVGhlIDpmdW5jOmBhYmMuSW5zcGVjdExvYWRlci5zb3VyY2VfdG9fY29kZSgpIDxpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuc291cmNlX3RvX2NvZGU+YAorbWV0aG9kIGlzIG5vdyBhIHN0YXRpYyBtZXRob2QuICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBpbml0aWFsaXplIGEgbW9kdWxlCitvYmplY3Qgd2l0aCBjb2RlIGNvbXBpbGVkIGZyb20gYSBzdHJpbmcgYnkgcnVubmluZworYGBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXylgYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyMTE1NmAuKQorCitUaGUgbmV3IDpmdW5jOmB1dGlsLm1vZHVsZV9mcm9tX3NwZWMoKSA8aW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYz5gCitmdW5jdGlvbiBpcyBub3cgdGhlIHByZWZlcnJlZCB3YXkgdG8gY3JlYXRlIGEgbmV3IG1vZHVsZS4gIEFzIG9wcG9zZWQgdG8KK2NyZWF0aW5nIGEgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCBpbnN0YW5jZSBkaXJlY3RseSwgdGhpcyBuZXcgZnVuY3Rpb24KK3dpbGwgc2V0IHRoZSB2YXJpb3VzIGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHBhc3NlZC1pbgorc3BlYyBvYmplY3QuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjAzODNgLikKKworCitpbnNwZWN0CistLS0tLS0tCisKK0JvdGggOmNsYXNzOmB+aW5zcGVjdC5TaWduYXR1cmVgIGFuZCA6Y2xhc3M6YH5pbnNwZWN0LlBhcmFtZXRlcmAgY2xhc3NlcyBhcmUKK25vdyBwaWNrbGFibGUgYW5kIGhhc2hhYmxlLiAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjA3MjZgCithbmQgOmlzc3VlOmAyMDMzNGAuKQorCitBIG5ldworOm1ldGg6YEJvdW5kQXJndW1lbnRzLmFwcGx5X2RlZmF1bHRzKCkgPGluc3BlY3QuQm91bmRBcmd1bWVudHMuYXBwbHlfZGVmYXVsdHM+YAorbWV0aG9kIHByb3ZpZGVzIGEgd2F5IHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBhcmd1bWVudHM6OgorCisgICAgPj4+IGRlZiBmb28oYSwgYj0naGFtJywgKmFyZ3MpOiBwYXNzCisgICAgPj4+IGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKCdzcGFtJykKKyAgICA+Pj4gYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgID4+PiBiYS5hcmd1bWVudHMKKyAgICBPcmRlcmVkRGljdChbKCdhJywgJ3NwYW0nKSwgKCdiJywgJ2hhbScpLCAoJ2FyZ3MnLCAoKSldKQorCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDE5MGAuKQorCitBIG5ldyBjbGFzcyBtZXRob2QKKzptZXRoOmBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIDxpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlPmAgbWFrZXMKK3N1YmNsYXNzaW5nIG9mIDpjbGFzczpgfmluc3BlY3QuU2lnbmF0dXJlYCBlYXNpZXIuICAoQ29udHJpYnV0ZWQKK2J5IFl1cnkgU2VsaXZhbm92IGFuZCBFcmljIFNub3cgaW4gOmlzc3VlOmAxNzM3M2AuKQorCitUaGUgOmZ1bmM6YH5pbnNwZWN0LnNpZ25hdHVyZWAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYSAqZm9sbG93X3dyYXBwZWQqCitvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50LCB3aGljaCwgd2hlbiBzZXQgdG8gYGBGYWxzZWBgLCBkaXNhYmxlcyBhdXRvbWF0aWMKK2ZvbGxvd2luZyBvZiBgYF9fd3JhcHBlZF9fYGAgbGlua3MuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyMDY5MWAuKQorCitBIHNldCBvZiBuZXcgZnVuY3Rpb25zIHRvIGluc3BlY3QKKzp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25zIDxjb3JvdXRpbmUgZnVuY3Rpb24+YCBhbmQKKzp0ZXJtOmBjb3JvdXRpbmUgb2JqZWN0cyA8Y29yb3V0aW5lPmAgaGFzIGJlZW4gYWRkZWQ6Cis6ZnVuYzpgfmluc3BlY3QuaXNjb3JvdXRpbmVgLCA6ZnVuYzpgfmluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbmAsCis6ZnVuYzpgfmluc3BlY3QuaXNhd2FpdGFibGVgLCA6ZnVuYzpgfmluc3BlY3QuZ2V0Y29yb3V0aW5lbG9jYWxzYCwKK2FuZCA6ZnVuYzpgfmluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGVgLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQwMTdgIGFuZCA6aXNzdWU6YDI0NDAwYC4pCisKKzpmdW5jOmB+aW5zcGVjdC5zdGFja2AsIDpmdW5jOmB+aW5zcGVjdC50cmFjZWAsCis6ZnVuYzpgfmluc3BlY3QuZ2V0b3V0ZXJmcmFtZXNgLCBhbmQgOmZ1bmM6YH5pbnNwZWN0LmdldGlubmVyZnJhbWVzYAorZnVuY3Rpb25zIG5vdyByZXR1cm4gYSBsaXN0IG9mIG5hbWVkIHR1cGxlcy4KKyhDb250cmlidXRlZCBieSBEYW5pZWwgU2hhaGFmIGluIDppc3N1ZTpgMTY4MDhgLikKKworCitpbworLS0KKworQSBuZXcgOm1ldGg6YEJ1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvMSgpIDxpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50bzE+YAorbWV0aG9kLCB0aGF0IHVzZXMgYXQgbW9zdCBvbmUgY2FsbCB0byB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtJ3MKKzptZXRoOmBSYXdJT0Jhc2UucmVhZCgpIDxpby5SYXdJT0Jhc2UucmVhZD5gIG9yCis6bWV0aDpgUmF3SU9CYXNlLnJlYWRpbnRvKCkgPGlvLlJhd0lPQmFzZS5yZWFkaW50bz5gIG1ldGhvZHMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xhdXMgUmF0aCBpbiA6aXNzdWU6YDIwNTc4YC4pCisKKworaXBhZGRyZXNzCistLS0tLS0tLS0KKworQm90aCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2Nk5ldHdvcmtgIGNsYXNzZXMKK25vdyBhY2NlcHQgYW4gYGAoYWRkcmVzcywgbmV0bWFzaylgYCB0dXBsZSBhcmd1bWVudCwgc28gYXMgdG8gZWFzaWx5IGNvbnN0cnVjdAorbmV0d29yayBvYmplY3RzIGZyb20gZXhpc3RpbmcgYWRkcmVzc2VzOjoKKworICAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisgICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzEyNy4wLjAuMCcsIDgpKQorICAgIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpCisgICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzEyNy4wLjAuMCcsICcyNTUuMC4wLjAnKSkKKyAgICBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorCisoQ29udHJpYnV0ZWQgYnkgUGV0ZXIgTW9vZHkgYW5kIEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTY1MzFgLikKKworQSBuZXcgOmF0dHI6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsucmV2ZXJzZV9wb2ludGVyYCBhdHRyaWJ1dGUgZm9yCis6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2Nk5ldHdvcmtgIGNsYXNzZXMKK3JldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJldmVyc2UgRE5TIFBUUiByZWNvcmQ6OgorCisgICAgPj4+IGltcG9ydCBpcGFkZHJlc3MKKyAgICA+Pj4gYWRkciA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgICA+Pj4gYWRkci5yZXZlcnNlX3BvaW50ZXIKKyAgICAnMS4wLjAuMTI3LmluLWFkZHIuYXJwYScKKyAgICA+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpCisgICAgPj4+IGFkZHI2LnJldmVyc2VfcG9pbnRlcgorICAgICcxLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuaXA2LmFycGEnCisKKyhDb250cmlidXRlZCBieSBMZW9uIFdlYmVyIGluIDppc3N1ZTpgMjA0ODBgLikKKworCitqc29uCistLS0tCisKK1RoZSA6bW9kOmBqc29uLnRvb2xgIGNvbW1hbmQgbGluZSBpbnRlcmZhY2Ugbm93IHByZXNlcnZlcyB0aGUgb3JkZXIgb2Yga2V5cyBpbgorSlNPTiBvYmplY3RzIHBhc3NlZCBpbiBpbnB1dC4gIFRoZSBuZXcgYGAtLXNvcnQta2V5c2BgIG9wdGlvbiBjYW4gYmUgdXNlZAordG8gc29ydCB0aGUga2V5cyBhbHBoYWJldGljYWxseS4gKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcKK2luIDppc3N1ZTpgMjE2NTBgLikKKworSlNPTiBkZWNvZGVyIG5vdyByYWlzZXMgOmV4Yzpgfmpzb24uSlNPTkRlY29kZUVycm9yYCBpbnN0ZWFkIG9mCis6ZXhjOmBWYWx1ZUVycm9yYCB0byBwcm92aWRlIGJldHRlciBjb250ZXh0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTkzNjFgLikKKworCitsaW5lY2FjaGUKKy0tLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmxpbmVjYWNoZS5sYXp5Y2FjaGVgIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNhcHR1cmUgaW5mb3JtYXRpb24KK2Fib3V0IGEgbm9uLWZpbGUgYmFzZWQgbW9kdWxlIHRvIHBlcm1pdCBnZXR0aW5nIGl0cyBsaW5lcyBsYXRlciB2aWEKKzpmdW5jOmB+bGluZWNhY2hlLmdldGxpbmVgLiBUaGlzIGF2b2lkcyBkb2luZyBJL08gdW50aWwgYSBsaW5lIGlzIGFjdHVhbGx5CituZWVkZWQsIHdpdGhvdXQgaGF2aW5nIHRvIGNhcnJ5IHRoZSBtb2R1bGUgZ2xvYmFscyBhcm91bmQgaW5kZWZpbml0ZWx5LgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTc5MTFgLikKKworCitsb2NhbGUKKy0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmxvY2FsZS5kZWxvY2FsaXplYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgc3RyaW5nIGludG8KK2Egbm9ybWFsaXplZCBudW1iZXIgc3RyaW5nLCB0YWtpbmcgdGhlIGBgTENfTlVNRVJJQ2BgIHNldHRpbmdzIGludG8gYWNjb3VudDo6CisKKyAgICA+Pj4gaW1wb3J0IGxvY2FsZQorICAgID4+PiBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19OVU1FUklDLCAnZGVfREUuVVRGLTgnKQorICAgICdkZV9ERS5VVEYtOCcKKyAgICA+Pj4gbG9jYWxlLmRlbG9jYWxpemUoJzEuMjM0LDU2JykKKyAgICAnMTIzNC41NicKKyAgICA+Pj4gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfTlVNRVJJQywgJ2VuX1VTLlVURi04JykKKyAgICAnZW5fVVMuVVRGLTgnCisgICAgPj4+IGxvY2FsZS5kZWxvY2FsaXplKCcxLDIzNC41NicpCisgICAgJzEyMzQuNTYnCisKKyhDb250cmlidXRlZCBieSBDw6lkcmljIEtyaWVyIGluIDppc3N1ZTpgMTM5MThgLikKKworCitsb2dnaW5nCistLS0tLS0tCisKK0FsbCBsb2dnaW5nIG1ldGhvZHMgKDpjbGFzczpgfmxvZ2dpbmcuTG9nZ2VyYCA6bWV0aDpgfmxvZ2dpbmcuTG9nZ2VyLmxvZ2AsCis6bWV0aDpgfmxvZ2dpbmcuTG9nZ2VyLmV4Y2VwdGlvbmAsIDptZXRoOmB+bG9nZ2luZy5Mb2dnZXIuY3JpdGljYWxgLAorOm1ldGg6YH5sb2dnaW5nLkxvZ2dlci5kZWJ1Z2AsIGV0Yy4pLCBub3cgYWNjZXB0IGV4Y2VwdGlvbiBpbnN0YW5jZXMKK2FzIGFuICpleGNfaW5mbyogYXJndW1lbnQsIGluIGFkZGl0aW9uIHRvIGJvb2xlYW4gdmFsdWVzIGFuZCBleGNlcHRpb24KK3R1cGxlczo6CisKKyAgICA+Pj4gaW1wb3J0IGxvZ2dpbmcKKyAgICA+Pj4gdHJ5OgorICAgIC4uLiAgICAgMS8wCisgICAgLi4uIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBleDoKKyAgICAuLi4gICAgIGxvZ2dpbmcuZXJyb3IoJ2V4Y2VwdGlvbicsIGV4Y19pbmZvPWV4KQorICAgIEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCisKKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDIwNTM3YC4pCisKK1RoZSA6Y2xhc3M6YGhhbmRsZXJzLkhUVFBIYW5kbGVyIDxsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyPmAgY2xhc3Mgbm93CithY2NlcHRzIGFuIG9wdGlvbmFsIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlIHRvIGNvbmZpZ3VyZSBTU0wKK3NldHRpbmdzIHVzZWQgaW4gYW4gSFRUUCBjb25uZWN0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEFsZXggR2F5bm9yIGluIDppc3N1ZTpgMjI3ODhgLikKKworVGhlIDpjbGFzczpgaGFuZGxlcnMuUXVldWVMaXN0ZW5lciA8bG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyPmAgY2xhc3Mgbm93Cit0YWtlcyBhICpyZXNwZWN0X2hhbmRsZXJfbGV2ZWwqIGtleXdvcmQgYXJndW1lbnQgd2hpY2gsIGlmIHNldCB0byBgYFRydWVgYCwKK3dpbGwgcGFzcyBtZXNzYWdlcyB0byBoYW5kbGVycyB0YWtpbmcgaGFuZGxlciBsZXZlbHMgaW50byBhY2NvdW50LgorKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwLikKKworCitsem1hCistLS0tCisKK1RoZSA6bWV0aDpgTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgPGx6bWEuTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzPmAKK21ldGhvZCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCAqbWF4X2xlbmd0aCogYXJndW1lbnQgdG8gbGltaXQgdGhlIG1heGltdW0KK3NpemUgb2YgZGVjb21wcmVzc2VkIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDE1OTU1YC4pCisKKworbWF0aAorLS0tLQorCitUd28gbmV3IGNvbnN0YW50cyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZTogOmRhdGE6YH5tYXRoLmluZmAKK2FuZCA6ZGF0YTpgfm1hdGgubmFuYC4gIChDb250cmlidXRlZCBieSBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDIzMTg1YC4pCisKK0EgbmV3IGZ1bmN0aW9uIDpmdW5jOmB+bWF0aC5pc2Nsb3NlYCBwcm92aWRlcyBhIHdheSB0byB0ZXN0IGZvciBhcHByb3hpbWF0ZQorZXF1YWxpdHkuIChDb250cmlidXRlZCBieSBDaHJpcyBCYXJrZXIgYW5kIFRhbCBFaW5hdCBpbiA6aXNzdWU6YDI0MjcwYC4pCisKK0EgbmV3IDpmdW5jOmB+bWF0aC5nY2RgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiAgVGhlIDpmdW5jOmBmcmFjdGlvbnMuZ2NkYAorZnVuY3Rpb24gaXMgbm93IGRlcHJlY2F0ZWQuIChDb250cmlidXRlZCBieSBNYXJrIERpY2tpbnNvbiBhbmQgU2VyaGl5CitTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQ4NmAuKQorCisKK211bHRpcHJvY2Vzc2luZworLS0tLS0tLS0tLS0tLS0tCisKKzpmdW5jOmBzaGFyZWRjdHlwZXMuc3luY2hyb25pemVkKCkgPG11bHRpcHJvY2Vzc2luZy5zaGFyZWRjdHlwZXMuc3luY2hyb25pemVkPmAKK29iamVjdHMgbm93IHN1cHBvcnQgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaSBpbiA6aXNzdWU6YDIxNTY1YC4pCisKKworb3BlcmF0b3IKKy0tLS0tLS0tCisKKzpmdW5jOmB+b3BlcmF0b3IuYXR0cmdldHRlcmAsIDpmdW5jOmB+b3BlcmF0b3IuaXRlbWdldHRlcmAsCithbmQgOmZ1bmM6YH5vcGVyYXRvci5tZXRob2RjYWxsZXJgIG9iamVjdHMgbm93IHN1cHBvcnQgcGlja2xpbmcuCisoQ29udHJpYnV0ZWQgYnkgSm9zaCBSb3NlbmJlcmcgYW5kIFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjk1NWAuKQorCitOZXcgOmZ1bmM6YH5vcGVyYXRvci5tYXRtdWxgIGFuZCA6ZnVuYzpgfm9wZXJhdG9yLmltYXRtdWxgIGZ1bmN0aW9ucwordG8gcGVyZm9ybSBtYXRyaXggbXVsdGlwbGljYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMTE3NmAuKQorCisKK29zCistLQorCitUaGUgbmV3IDpmdW5jOmB+b3Muc2NhbmRpcmAgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG9mCis6Y2xhc3M6YH5vcy5EaXJFbnRyeWAgb2JqZWN0cyBoYXMgYmVlbiBhZGRlZC4gIElmIHBvc3NpYmxlLCA6ZnVuYzpgfm9zLnNjYW5kaXJgCitleHRyYWN0cyBmaWxlIGF0dHJpYnV0ZXMgd2hpbGUgc2Nhbm5pbmcgYSBkaXJlY3RvcnksIHJlbW92aW5nIHRoZSBuZWVkIHRvCitwZXJmb3JtIHN1YnNlcXVlbnQgc3lzdGVtIGNhbGxzIHRvIGRldGVybWluZSBmaWxlIHR5cGUgb3IgYXR0cmlidXRlcywgd2hpY2ggbWF5CitzaWduaWZpY2FudGx5IGltcHJvdmUgcGVyZm9ybWFuY2UuICAoQ29udHJpYnV0ZWQgYnkgQmVuIEhveXQgd2l0aCB0aGUgaGVscAorb2YgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjUyNGAuKQorCitPbiBXaW5kb3dzLCBhIG5ldworOmF0dHI6YHN0YXRfcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyA8b3Muc3RhdF9yZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzPmAKK2F0dHJpYnV0ZSBpcyBub3cgYXZhaWxhYmxlLiAgSXQgY29ycmVzcG9uZHMgdG8gdGhlIGBgZHdGaWxlQXR0cmlidXRlc2BgIG1lbWJlcgorb2YgdGhlIGBgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT05gYCBzdHJ1Y3R1cmUgcmV0dXJuZWQgYnkKK2BgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKWBgLiAgKENvbnRyaWJ1dGVkIGJ5IEJlbiBIb3l0IGluIDppc3N1ZTpgMjE3MTlgLikKKworVGhlIDpmdW5jOmB+b3MudXJhbmRvbWAgZnVuY3Rpb24gbm93IHVzZXMgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgb24gTGludXggMy4xNworb3IgbmV3ZXIsIGFuZCBgYGdldGVudHJvcHkoKWBgIG9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgcmVtb3ZpbmcgdGhlIG5lZWQgdG8KK3VzZSBgYC9kZXYvdXJhbmRvbWBgIGFuZCBhdm9pZGluZyBmYWlsdXJlcyBkdWUgdG8gcG90ZW50aWFsIGZpbGUgZGVzY3JpcHRvcgorZXhoYXVzdGlvbi4gIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMTgxYC4pCisKK05ldyA6ZnVuYzpgfm9zLmdldF9ibG9ja2luZ2AgYW5kIDpmdW5jOmB+b3Muc2V0X2Jsb2NraW5nYCBmdW5jdGlvbnMgYWxsb3cgdG8KK2dldCBhbmQgc2V0IGEgZmlsZSBkZXNjcmlwdG9yIGJsb2NraW5nIG1vZGUgKDpkYXRhOmB+b3MuT19OT05CTE9DS2AuKQorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNTRgLikKKworVGhlIDpmdW5jOmB+b3MudHJ1bmNhdGVgIGFuZCA6ZnVuYzpgfm9zLmZ0cnVuY2F0ZWAgZnVuY3Rpb25zIGFyZSBub3cgc3VwcG9ydGVkCitvbiBXaW5kb3dzLiAgKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjM2NjhgLikKKworVGhlcmUgaXMgYSBuZXcgOmZ1bmM6YG9zLnBhdGguY29tbW9ucGF0aGAgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb25nZXN0Citjb21tb24gc3ViLXBhdGggb2YgZWFjaCBwYXNzZWQgcGF0aG5hbWUuICBVbmxpa2UgdGhlCis6ZnVuYzpgb3MucGF0aC5jb21tb25wcmVmaXhgIGZ1bmN0aW9uLCBpdCBhbHdheXMgcmV0dXJucyBhIHZhbGlkCitwYXRoOjoKKworICAgID4+PiBvcy5wYXRoLmNvbW1vbnByZWZpeChbJy91c3IvbGliJywgJy91c3IvbG9jYWwvbGliJ10pCisgICAgJy91c3IvbCcKKworICAgID4+PiBvcy5wYXRoLmNvbW1vbnBhdGgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQorICAgICcvdXNyJworCisoQ29udHJpYnV0ZWQgYnkgUmFmaWsgRHJhb3VpIGFuZCBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTAzOTVgLikKKworCitwYXRobGliCistLS0tLS0tCisKK1RoZSBuZXcgOm1ldGg6YFBhdGguc2FtZWZpbGUoKSA8cGF0aGxpYi5QYXRoLnNhbWVmaWxlPmAgbWV0aG9kIGNhbiBiZSB1c2VkCit0byBjaGVjayB3aGV0aGVyIHRoZSBwYXRoIHBvaW50cyB0byB0aGUgc2FtZSBmaWxlIGFzIG90aGVyIHBhdGgsIHdoaWNoIGNhbiBiZQorZWl0aGVyIGFuIGFub3RoZXIgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3QsIG9yIGEgc3RyaW5nOjoKKworICAgID4+PiBpbXBvcnQgcGF0aGxpYgorICAgID4+PiBwMSA9IHBhdGhsaWIuUGF0aCgnL2V0Yy9ob3N0cycpCisgICAgPj4+IHAyID0gcGF0aGxpYi5QYXRoKCcvZXRjLy4uL2V0Yy9ob3N0cycpCisgICAgPj4+IHAxLnNhbWVmaWxlKHAyKQorICAgIFRydWUKKworKENvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvayBhbmQgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxOTc3NWAuKQorCitUaGUgOm1ldGg6YFBhdGgubWtkaXIoKSA8cGF0aGxpYi5QYXRoLm1rZGlyPmAgbWV0aG9kIGhvdyBhY2NlcHRzIGEgbmV3IG9wdGlvbmFsCisqZXhpc3Rfb2sqIGFyZ3VtZW50IHRvIG1hdGNoIGBgbWtkaXIgLXBgYCBhbmQgOmZ1bmM6YG9zLm1ha3JkaXJzYAorZnVuY3Rpb25hbGl0eS4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjE1MzlgLikKKworVGhlcmUgaXMgYSBuZXcgOm1ldGg6YFBhdGguZXhwYW5kdXNlcigpIDxwYXRobGliLlBhdGguZXhwYW5kdXNlcj5gIG1ldGhvZCB0bworZXhwYW5kIGBgfmBgIGFuZCBgYH51c2VyYGAgcHJlZml4ZXMuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBhbmQKK0NsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE5Nzc2YC4pCisKK0EgbmV3IDptZXRoOmBQYXRoLmhvbWUoKSA8cGF0aGxpYi5QYXRoLmhvbWU+YCBjbGFzcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZ2V0CithbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHVzZXLigJlzIGhvbWUKK2RpcmVjdG9yeS4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU2FsZ2FkbyBhbmQgTWF5YW5rIFRyaXBhdGhpIGluIDppc3N1ZTpgMTk3NzdgLikKKworTmV3IDptZXRoOmBQYXRoLndyaXRlX3RleHQoKSA8cGF0aGxpYi5QYXRoLndyaXRlX3RleHQ+YCwKKzptZXRoOmBQYXRoLnJlYWRfdGV4dCgpIDxwYXRobGliLlBhdGgucmVhZF90ZXh0PmAsCis6bWV0aDpgUGF0aC53cml0ZV9ieXRlcygpIDxwYXRobGliLlBhdGgud3JpdGVfYnl0ZXM+YCwKKzptZXRoOmBQYXRoLnJlYWRfYnl0ZXMoKSA8cGF0aGxpYi5QYXRoLnJlYWRfYnl0ZXM+YCBtZXRob2RzIHRvIHNpbXBsaWZ5CityZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gZmlsZXMuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBzbmlwcGV0IHdpbGwgY3JlYXRlIG9yIHJld3JpdGUgZXhpc3RpbmcgZmlsZQorYGB+L3NwYW00MmBgOjoKKworICAgID4+PiBpbXBvcnQgcGF0aGxpYgorICAgID4+PiBwID0gcGF0aGxpYi5QYXRoKCd+L3NwYW00MicpCisgICAgPj4+IHAuZXhwYW5kdXNlcigpLndyaXRlX3RleHQoJ2hhbScpCisgICAgMworCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0b3BoZXIgV2VsYm9ybiBpbiA6aXNzdWU6YDIwMjE4YC4pCisKKworcGlja2xlCistLS0tLS0KKworTmVzdGVkIG9iamVjdHMsIHN1Y2ggYXMgdW5ib3VuZCBtZXRob2RzIG9yIG5lc3RlZCBjbGFzc2VzLCBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoZXNlIGNhc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeQorU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2MTFgLikKKworCitwb3BsaWIKKy0tLS0tLQorCitBIG5ldyA6bWV0aDpgUE9QMy51dGY4KCkgPHBvcGxpYi5QT1AzLnV0Zjg+YCBjb21tYW5kIGVuYWJsZXMgOnJmYzpgNjg1NmAKKyhJbnRlcm5hdGlvbmFsaXplZCBFbWFpbCkgc3VwcG9ydCwgaWYgYSBQT1Agc2VydmVyIHN1cHBvcnRzIGl0LgorKENvbnRyaWJ1dGVkIGJ5IE1pbGFuIE9iZXJLaXJjaCBpbiA6aXNzdWU6YDIxODA0YC4pCisKKworcmUKKy0tCisKK1JlZmVyZW5jZXMgYW5kIGNvbmRpdGlvbmFsIHJlZmVyZW5jZXMgdG8gZ3JvdXBzIHdpdGggZml4ZWQgbGVuZ3RoIGFyZSBub3cKK2FsbG93ZWQgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zOjoKKworICAgID4+PiBpbXBvcnQgcmUKKyAgICA+Pj4gcGF0ID0gcmUuY29tcGlsZShyJyhhfGIpLig/PD1cMSljJykKKyAgICA+Pj4gcGF0Lm1hdGNoKCdhYWMnKQorICAgIDxfc3JlLlNSRV9NYXRjaCBvYmplY3Q7IHNwYW49KDAsIDMpLCBtYXRjaD0nYWFjJz4KKyAgICA+Pj4gcGF0Lm1hdGNoKCdiYmMnKQorICAgIDxfc3JlLlNSRV9NYXRjaCBvYmplY3Q7IHNwYW49KDAsIDMpLCBtYXRjaD0nYmJjJz4KKworKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmA5MTc5YC4pCisKK1RoZSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gaXMgbm8gbG9uZ2VyIGxpbWl0ZWQgYnkKKzEwMC4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0MzdgLikKKworVGhlIDpmdW5jOmB+cmUuc3ViYCBhbmQgOmZ1bmM6YH5yZS5zdWJuYCBmdW5jdGlvbnMgbm93IHJlcGxhY2UgdW5tYXRjaGVkCitncm91cHMgd2l0aCBlbXB0eSBzdHJpbmdzIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE1MTk2MzhgLikKKworVGhlIDpjbGFzczpgcmUuZXJyb3JgIGV4Y2VwdGlvbnMgaGF2ZSBuZXcgYXR0cmlidXRlczoKKzphdHRyOmB+cmUuZXJyb3IubXNnYCwgOmF0dHI6YH5yZS5lcnJvci5wYXR0ZXJuYCwKKzphdHRyOmB+cmUuZXJyb3IucG9zYCwgOmF0dHI6YH5yZS5lcnJvci5saW5lbm9gLAorYW5kIDphdHRyOmB+cmUuZXJyb3IuY29sbm9gIHRoYXQgcHJvdmlkZSBiZXR0ZXIgY29udGV4dAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yOjoKKworICAgID4+PiByZS5jb21waWxlKCIiIgorICAgIC4uLiAgICAgKD94KQorICAgIC4uLiAgICAgLisrCisgICAgLi4uICIiIikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgLi4uCisgICAgc3JlX2NvbnN0YW50cy5lcnJvcjogbXVsdGlwbGUgcmVwZWF0IGF0IHBvc2l0aW9uIDE2IChsaW5lIDMsIGNvbHVtbiA3KQorCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNTc4YC4pCisKKworcmVhZGxpbmUKKy0tLS0tLS0tCisKK0EgbmV3IDpmdW5jOmB+cmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYXBwZW5kCit0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0cmFpbGluZyBlbGVtZW50cyBpbiBoaXN0b3J5IHRvIHRoZSBnaXZlbiBmaWxlLgorKENvbnRyaWJ1dGVkIGJ5IEJydW5vIENhdWV0IGluIDppc3N1ZTpgMjI5NDBgLikKKworCitzZWxlY3RvcnMKKy0tLS0tLS0tLQorCitUaGUgbmV3IDpjbGFzczpgfnNlbGVjdG9ycy5EZXZwb2xsU2VsZWN0b3JgIHN1cHBvcnRzIGVmZmljaWVudAorYGAvZGV2L3BvbGxgYCBwb2xsaW5nIG9uIFNvbGFyaXMuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxODkzMWAuKQorCisKK3NodXRpbAorLS0tLS0tCisKK1RoZSA6ZnVuYzpgfnNodXRpbC5tb3ZlYCBmdW5jdGlvbiBub3cgYWNjZXB0cyBhICpjb3B5X2Z1bmN0aW9uKiBhcmd1bWVudCwKK2FsbG93aW5nLCBmb3IgZXhhbXBsZSwgdGhlIDpmdW5jOmB+c2h1dGlsLmNvcHlgIGZ1bmN0aW9uIHRvIGJlIHVzZWQgaW5zdGVhZCBvZgordGhlIGRlZmF1bHQgOmZ1bmM6YH5zaHV0aWwuY29weTJgIGlmIHRoZXJlIGlzIGEgbmVlZCB0byBpZ25vcmUgZmlsZSBtZXRhZGF0YQord2hlbiBtb3ZpbmcuCisoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTk4NDBgLikKKworVGhlIDpmdW5jOmB+c2h1dGlsLm1ha2VfYXJjaGl2ZWAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZSAqeHp0YXIqIGZvcm1hdC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgNTQxMWAuKQorCisKK3NpZ25hbAorLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6ZnVuYzpgfnNpZ25hbC5zZXRfd2FrZXVwX2ZkYCBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cworc29ja2V0IGhhbmRsZXMuICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjAxOGAuKQorCitWYXJpb3VzIGBgU0lHKmBgIGNvbnN0YW50cyBpbiB0aGUgOm1vZDpgc2lnbmFsYCBtb2R1bGUgaGF2ZSBiZWVuIGNvbnZlcnRlZCBpbnRvCis6bW9kOmBFbnVtcyA8ZW51bT5gLiAgVGhpcyBhbGxvd3MgbWVhbmluZ2Z1bCBuYW1lcyB0byBiZSBwcmludGVkCitkdXJpbmcgZGVidWdnaW5nLCBpbnN0ZWFkIG9mIGludGVnZXIgIm1hZ2ljIG51bWJlcnMiLgorKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIGluIDppc3N1ZTpgMjEwNzZgLikKKworCitzbXRwZAorLS0tLS0KKworQm90aCA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYCBhbmQgOmNsYXNzOmB+c210cGQuU01UUENoYW5uZWxgIGNsYXNzZXMgbm93CithY2NlcHQgYSAqZGVjb2RlX2RhdGEqIGtleXdvcmQgYXJndW1lbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgYERBVEFgYCBwb3J0aW9uIG9mCit0aGUgU01UUCB0cmFuc2FjdGlvbiBpcyBkZWNvZGVkIHVzaW5nIHRoZSBgYCJ1dGYtOCJgYCBjb2RlYyBvciBpcyBpbnN0ZWFkCitwcm92aWRlZCB0byB0aGUKKzptZXRoOmBTTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZSgpIDxzbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZT5gCittZXRob2QgYXMgYSBieXRlIHN0cmluZy4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CityZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBJZiAqZGVjb2RlX2RhdGEqIGlzIHNldAordG8gYGBGYWxzZWBgLCB0aGUgYGBwcm9jZXNzX21lc3NhZ2VgYCBtZXRob2QgbXVzdCBiZSBwcmVwYXJlZCB0byBhY2NlcHQga2V5d29yZAorYXJndW1lbnRzLgorKENvbnRyaWJ1dGVkIGJ5IE1hY2llaiBTenVsaWsgaW4gOmlzc3VlOmAxOTY2MmAuKQorCitUaGUgOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgY2xhc3Mgbm93IGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYCBleHRlbnNpb24KKyg6cmZjOmA2MTUyYCkgaWYgKmRlY29kZV9kYXRhKiBoYXMgYmVlbiBzZXQgYGBUcnVlYGAuICBJZiB0aGUgY2xpZW50CitzcGVjaWZpZXMgYGBCT0RZPThCSVRNSU1FYGAgb24gdGhlIGBgTUFJTGBgIGNvbW1hbmQsIGl0IGlzIHBhc3NlZCB0bworOm1ldGg6YFNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlKCkgPHNtdHBkLlNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlPmAKK3ZpYSB0aGUgKm1haWxfb3B0aW9ucyoga2V5d29yZC4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggYW5kIFIuICBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMTc5NWAuKQorCitUaGUgOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgY2xhc3Mgbm93IGFsc28gc3VwcG9ydHMgdGhlIGBgU01UUFVURjhgYAorZXh0ZW5zaW9uICg6cmZjOmA2NTMxYDogSW50ZXJuYXRpb25hbGl6ZWQgRW1haWwpLiAgSWYgdGhlIGNsaWVudCBzcGVjaWZpZWQKK2BgU01UUFVURjggQk9EWT04QklUTUlNRWBgIG9uIHRoZSBgYE1BSUxgYCBjb21tYW5kLCB0aGV5IGFyZSBwYXNzZWQgdG8KKzptZXRoOmBTTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZSgpIDxzbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZT5gCit2aWEgdGhlICptYWlsX29wdGlvbnMqIGtleXdvcmQuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCitgYHByb2Nlc3NfbWVzc2FnZWBgIG1ldGhvZCB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBgYFNNVFBVVEY4YGAgZGF0YS4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggaW4gOmlzc3VlOmAyMTcyNWAuKQorCitJdCBpcyBub3cgcG9zc2libGUgdG8gcHJvdmlkZSwgZGlyZWN0bHkgb3IgdmlhIG5hbWUgcmVzb2x1dGlvbiwgSVB2NgorYWRkcmVzc2VzIGluIHRoZSA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYCBjb25zdHJ1Y3RvciwgYW5kIGhhdmUgaXQKK3N1Y2Nlc3NmdWxseSBjb25uZWN0LiAgKENvbnRyaWJ1dGVkIGJ5IE1pbGFuIE9iZXJraXJjaCBpbiA6aXNzdWU6YDE0NzU4YC4pCisKKworc210cGxpYgorLS0tLS0tLQorCitBIG5ldyA6bWV0aDpgU01UUC5hdXRoKCkgPHNtdHBsaWIuU01UUC5hdXRoPmAgbWV0aG9kIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8KK2ltcGxlbWVudCBjdXN0b20gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcy4gKENvbnRyaWJ1dGVkIGJ5IE1pbGFuCitPYmVya2lyY2ggaW4gOmlzc3VlOmAxNTAxNGAuKQorCitUaGUgOm1ldGg6YFNNVFAuc2V0X2RlYnVnbGV2ZWwoKSA8c210cGxpYi5TTVRQLnNldF9kZWJ1Z2xldmVsPmAgbWV0aG9kIG5vdworYWNjZXB0cyBhbiBhZGRpdGlvbmFsIGRlYnVnbGV2ZWwgKDIpLCB3aGljaCBlbmFibGVzIHRpbWVzdGFtcHMgaW4gZGVidWcKK21lc3NhZ2VzLiAoQ29udHJpYnV0ZWQgYnkgR2F2aW4gQ2hhcHBlbGwgYW5kIE1hY2llaiBTenVsaWsgaW4gOmlzc3VlOmAxNjkxNGAuKQorCitCb3RoIDptZXRoOmBTTVRQLnNlbmRtYWlsKCkgPHNtdHBsaWIuU01UUC5zZW5kbWFpbD5gIGFuZAorOm1ldGg6YFNNVFAuc2VuZF9tZXNzYWdlKCkgPHNtdHBsaWIuU01UUC5zZW5kX21lc3NhZ2U+YCBtZXRob2RzIG5vdworc3VwcG9ydCBzdXBwb3J0IDpyZmM6YDY1MzFgIChTTVRQVVRGOCkuCisoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGFuZCBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMjAyN2AuKQorCisKK3NuZGhkcgorLS0tLS0tCisKKzpmdW5jOmB+c25kaGRyLndoYXRgIGFuZCA6ZnVuYzpgfnNuZGhkci53aGF0aGRyYCBmdW5jdGlvbnMgIG5vdyByZXR1cm4KK2EgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYC4gIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4KKzppc3N1ZTpgMTg2MTVgLikKKworCitzb2NrZXQKKy0tLS0tLQorCitGdW5jdGlvbnMgd2l0aCB0aW1lb3V0cyBub3cgdXNlIGEgbW9ub3RvbmljIGNsb2NrLCBpbnN0ZWFkIG9mIGEgc3lzdGVtIGNsb2NrLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNDNgLikKKworQSBuZXcgOm1ldGg6YHNvY2tldC5zZW5kZmlsZSgpIDxzb2NrZXQuc29ja2V0LnNlbmRmaWxlPmAgbWV0aG9kIGFsbG93cyB0bworc2VuZCBhIGZpbGUgb3ZlciBhIHNvY2tldCBieSB1c2luZyB0aGUgaGlnaC1wZXJmb3JtYW5jZSA6ZnVuYzpgb3Muc2VuZGZpbGVgCitmdW5jdGlvbiBvbiBVTklYIHJlc3VsdGluZyBpbiB1cGxvYWRzIGJlaW5nIGZyb20gMiB0byAzIHRpbWVzIGZhc3RlciB0aGFuIHdoZW4KK3VzaW5nIHBsYWluIDptZXRoOmBzb2NrZXQuc2VuZCgpIDxzb2NrZXQuc29ja2V0LnNlbmQ+YC4KKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2xhJyBpbiA6aXNzdWU6YDE3NTUyYC4pCisKK1RoZSA6bWV0aDpgc29ja2V0LnNlbmRhbGwoKSA8c29ja2V0LnNvY2tldC5zZW5kYWxsPmAgbWV0aG9kIG5vIGxvbmdlciByZXNldHMgdGhlCitzb2NrZXQgdGltZW91dCBldmVyeSB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LiAgVGhlIHNvY2tldCB0aW1lb3V0IGlzCitub3cgdGhlIG1heGltdW0gdG90YWwgZHVyYXRpb24gdG8gc2VuZCBhbGwgZGF0YS4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIzODUzYC4pCisKK1RoZSAqYmFja2xvZyogYXJndW1lbnQgb2YgdGhlIDptZXRoOmBzb2NrZXQubGlzdGVuKCkgPHNvY2tldC5zb2NrZXQubGlzdGVuPmAKK21ldGhvZCBpcyBub3cgb3B0aW9uYWwuICBCeSBkZWZhdWx0IGl0IGlzIHNldCB0bworOmRhdGE6YFNPTUFYQ09OTiA8c29ja2V0LlNPTUFYQ09OTj5gIG9yIHRvIGBgMTI4YGAgd2hpY2hldmVyIGlzIGxlc3MuCisoQ29udHJpYnV0ZWQgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpIGluIDppc3N1ZTpgMjE0NTVgLikKKworCitzc2wKKy0tLQorCisuLiBfd2hhdHNuZXctc3NsbWVtb3J5YmlvOgorCitNZW1vcnkgQklPIFN1cHBvcnQKK35+fn5+fn5+fn5+fn5+fn5+fgorCisoQ29udHJpYnV0ZWQgYnkgR2VlcnQgSmFuc2VuIGluIDppc3N1ZTpgMjE5NjVgLikKKworVGhlIG5ldyA6Y2xhc3M6YH5zc2wuU1NMT2JqZWN0YCBjbGFzcyBoYXMgYmVlbiBhZGRlZCB0byBwcm92aWRlIFNTTCBwcm90b2NvbAorc3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgbmV0d29yayBJL08gY2FwYWJpbGl0aWVzIG9mIDpjbGFzczpgfnNzbC5TU0xTb2NrZXRgCithcmUgbm90IG5lY2Vzc2FyeSBvciBzdWJvcHRpbWFsLiAgYGBTU0xPYmplY3RgYCByZXByZXNlbnRzCithbiBTU0wgcHJvdG9jb2wgaW5zdGFuY2UsIGJ1dCBkb2VzIG5vdCBpbXBsZW1lbnQgYW55IG5ldHdvcmsgSS9PIG1ldGhvZHMsIGFuZAoraW5zdGVhZCBwcm92aWRlcyBhIG1lbW9yeSBidWZmZXIgaW50ZXJmYWNlLiAgVGhlIG5ldyA6Y2xhc3M6YH5zc2wuTWVtb3J5QklPYAorY2xhc3MgY2FuIGJlIHVzZWQgdG8gcGFzcyBkYXRhIGJldHdlZW4gUHl0aG9uIGFuZCBhbiBTU0wgcHJvdG9jb2wgaW5zdGFuY2UuCisKK1RoZSBtZW1vcnkgQklPIFNTTCBzdXBwb3J0IGlzIHByaW1hcmlseSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZyYW1ld29ya3MKK2ltcGxlbWVudGluZyBhc3luY2hyb25vdXMgSS9PIGZvciB3aGljaCA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YCdzIHJlYWRpbmVzcworbW9kZWwgKCJzZWxlY3QvcG9sbCIpIGlzIGluZWZmaWNpZW50LgorCitBIG5ldyA6bWV0aDpgU1NMQ29udGV4dC53cmFwX2JpbygpIDxzc2wuU1NMQ29udGV4dC53cmFwX2Jpbz5gIG1ldGhvZCBjYW4gYmUgdXNlZAordG8gY3JlYXRlIGEgbmV3IGBgU1NMT2JqZWN0YGAgaW5zdGFuY2UuCisKKworQXBwbGljYXRpb24tTGF5ZXIgUHJvdG9jb2wgTmVnb3RpYXRpb24gU3VwcG9ydAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMDE4OGAuKQorCitXaGVyZSBPcGVuU1NMIHN1cHBvcnQgaXMgcHJlc2VudCwgOm1vZDpgc3NsYCBtb2R1bGUgbm93IGltcGxlbWVudHMKKypBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiogVExTIGV4dGVuc2lvbiBhcyBkZXNjcmliZWQKK2luIDpyZmM6YDczMDFgLgorCitUaGUgbmV3IDptZXRoOmBTU0xDb250ZXh0LnNldF9hbHBuX3Byb3RvY29scygpIDxzc2wuU1NMQ29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHM+YAorY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBwcm90b2NvbHMgYSBzb2NrZXQgc2hvdWxkIGFkdmVydGlzZSBkdXJpbmcKK3RoZSBUTFMgaGFuZHNoYWtlLgorCitUaGUgbmV3Cis6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSA8c3NsLlNTTFNvY2tldC5zZWxlY3RlZF9hbHBuX3Byb3RvY29sPmAKK3JldHVybnMgdGhlIHByb3RvY29sIHRoYXQgd2FzIHNlbGVjdGVkIGR1cmluZyB0aGUgVExTIGhhbmRzaGFrZS4KKzpkYXRhOmB+c3NsLkhBU19BTFBOYCBmbGFnIGluZGljYXRlcyB3aGV0aGVyIEFQTE4gc3VwcG9ydCBpcyBwcmVzZW50LgorCisKK090aGVyIENoYW5nZXMKK35+fn5+fn5+fn5+fn4KKworVGhlcmUgaXMgYSBuZXcgOm1ldGg6YFNTTFNvY2tldC52ZXJzaW9uKCkgPHNzbC5TU0xTb2NrZXQudmVyc2lvbj5gIG1ldGhvZCB0bworcXVlcnkgdGhlIGFjdHVhbCBwcm90b2NvbCB2ZXJzaW9uIGluIHVzZS4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDIwNDIxYC4pCisKK1RoZSA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YCBjbGFzcyBub3cgaW1wbGVtZW50cworYSA6bWV0aDpgU1NMU29ja2V0LnNlbmRmaWxlKCkgPHNzbC5TU0xTb2NrZXQuc2VuZGZpbGU+YCBtZXRob2QuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxNzU1MmAuKQorCitUaGUgOm1ldGg6YFNTTFNvY2tldC5zZW5kKCkgPHNzbC5TU0xTb2NrZXQuc2VuZD5gIG1ldGhvZCBub3cgcmFpc2VzIGVpdGhlcgorOmV4Yzpgc3NsLlNTTFdhbnRSZWFkRXJyb3JgIG9yIDpleGM6YHNzbC5TU0xXYW50V3JpdGVFcnJvcmAgZXhjZXB0aW9uIG9uIGEKK25vbi1ibG9ja2luZyBzb2NrZXQgaWYgdGhlIG9wZXJhdGlvbiB3b3VsZCBibG9jay4gUHJldmlvdXNseSwgaXQgd291bGQgcmV0dXJuCitgYDBgYC4gIChDb250cmlidXRlZCBieSBOaWtvbGF1cyBSYXRoIGluIDppc3N1ZTpgMjA5NTFgLikKKworVGhlIDpmdW5jOmB+c3NsLmNlcnRfdGltZV90b19zZWNvbmRzYCBmdW5jdGlvbiBub3cgaW50ZXJwcmV0cyB0aGUgaW5wdXQgdGltZQorYXMgVVRDIGFuZCBub3QgYXMgbG9jYWwgdGltZSwgcGVyIDpyZmM6YDUyODBgLiAgQWRkaXRpb25hbGx5LCB0aGUgcmV0dXJuCit2YWx1ZSBpcyBhbHdheXMgYW4gOmNsYXNzOmBpbnRgLiAoQ29udHJpYnV0ZWQgYnkgQWtpcmEgTGkgaW4gOmlzc3VlOmAxOTk0MGAuKQorCitOZXcgOm1ldGg6YFNTTE9iamVjdC5zaGFyZWRfY2lwaGVycygpIDxzc2wuU1NMT2JqZWN0LnNoYXJlZF9jaXBoZXJzPmAgYW5kCis6bWV0aDpgU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzKCkgPHNzbC5TU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnM+YCBtZXRob2RzIHJldHVybgordGhlIGxpc3Qgb2YgY2lwaGVycyBzZW50IGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2UuCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMzE4NmAuKQorCitUaGUgOm1ldGg6YFNTTFNvY2tldC5kb19oYW5kc2hha2UoKSA8c3NsLlNTTFNvY2tldC5kb19oYW5kc2hha2U+YCwKKzptZXRoOmBTU0xTb2NrZXQucmVhZCgpIDxzc2wuU1NMU29ja2V0LnJlYWQ+YCwKKzptZXRoOmBTU0xTb2NrZXQuc2h1dGRvd24oKSA8c3NsLlNTTFNvY2tldC5zaHV0ZG93bj5gLCBhbmQKKzptZXRoOmBTU0xTb2NrZXQud3JpdGUoKSA8c3NsLlNTTFNvY2tldC53cml0ZT5gIG1ldGhvZHMgb2YgOmNsYXNzOmB+c3NsLlNTTFNvY2tldGAKK2NsYXNzIG5vIGxvbmdlciByZXNldCB0aGUgc29ja2V0IHRpbWVvdXQgZXZlcnkgdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KK1RoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdGhlIG1heGltdW0gdG90YWwgZHVyYXRpb24gb2YgdGhlIG1ldGhvZC4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIzODUzYC4pCisKK1RoZSA6ZnVuYzpgfnNzbC5tYXRjaF9ob3N0bmFtZWAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIG1hdGNoaW5nIG9mIElQIGFkZHJlc3Nlcy4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDIzMjM5YC4pCisKKworc3FsaXRlMworLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+c3FsaXRlMy5Sb3dgIGNsYXNzIG5vdyBmdWxseSBzdXBwb3J0cyBzZXF1ZW5jZSBwcm90b2NvbCwKK2luIHBhcnRpY3VsYXIgOmZ1bmM6YHJldmVyc2VkYCBpdGVyYXRpb24gYW5kIHNsaWNlIGluZGV4aW5nLgorKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDEwMjAzYDsgYnkgTHVjYXMgU2luY2xhaXIsCitKZXNzaWNhIE1jS2VsbGFyLCBhbmQgIFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMzU4M2AuKQorCisKKy4uIF93aGF0c25ldy1zdWJwcm9jZXNzOgorCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5zdWJwcm9jZXNzLnJ1bmAgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuCitJdCBydW5zIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBhbmQgYW5kIHJldHVybnMgYQorOmNsYXNzOmB+c3VicHJvY2Vzcy5Db21wbGV0ZWRQcm9jZXNzYCBvYmplY3QsIHdoaWNoIGRlc2NyaWJlcyBhIGZpbmlzaGVkCitwcm9jZXNzLiAgVGhlIG5ldyBBUEkgaXMgbW9yZSBjb25zaXN0ZW50IGFuZCBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2gKK3RvIGludm9raW5nIHN1YnByb2Nlc3NlcyBpbiBQeXRob24gY29kZSB0aGF0IGRvZXMgbm90IG5lZWQgdG8gbWFpbnRhaW4KK2NvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucy4KKyhDb250cmlidXRlZCBieSBUaG9tYXMgS2x1eXZlciBpbiA6aXNzdWU6YDIzMzQyYC4pCisKK0V4YW1wbGVzOjoKKworICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKKyAgICBDb21wbGV0ZWRQcm9jZXNzKGFyZ3M9WydscycsICctbCddLCByZXR1cm5jb2RlPTApCisKKyAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oImV4aXQgMSIsIHNoZWxsPVRydWUsIGNoZWNrPVRydWUpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ2V4aXQgMScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMQorCisgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiLCAiL2Rldi9udWxsIl0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnLCAnL2Rldi9udWxsJ10sIHJldHVybmNvZGU9MCwKKyAgICBzdGRvdXQ9YidjcnctcnctcnctIDEgcm9vdCByb290IDEsIDMgSmFuIDIzIDE2OjIzIC9kZXYvbnVsbFxuJykKKworCitzeXMKKy0tLQorCitBIG5ldyA6ZnVuYzpgfnN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXJgIGZ1bmN0aW9uIGFsbG93cyBzZXR0aW5nIGEgZ2xvYmFsCitob29rIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSA6dGVybTpgY29yb3V0aW5lIG9iamVjdCA8Y29yb3V0aW5lPmAKK2lzIGNyZWF0ZWQgYnkgYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24uICBBIGNvcnJlc3BvbmRpbmcKKzpmdW5jOmB+c3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcmAgY2FuIGJlIHVzZWQgdG8gb2J0YWluIGEgY3VycmVudGx5IHNldAord3JhcHBlci4gIEJvdGggZnVuY3Rpb25zIGFyZSA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gLAorYW5kIGFyZSBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIG9ubHkuICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YKK2luIDppc3N1ZTpgMjQwMTdgLikKKworQSBuZXcgOmZ1bmM6YH5zeXMuaXNfZmluYWxpemluZ2AgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIFB5dGhvbgoraW50ZXJwcmV0ZXIgaXMgOnRlcm06YHNodXR0aW5nIGRvd24gPGludGVycHJldGVyIHNodXRkb3duPmAuCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAyMjY5NmAuKQorCisKK3N5c2NvbmZpZworLS0tLS0tLS0tCisKK1RoZSBuYW1lIG9mIHRoZSB1c2VyIHNjcmlwdHMgZGlyZWN0b3J5IG9uIFdpbmRvd3Mgbm93IGluY2x1ZGVzIHRoZSBmaXJzdAordHdvIGNvbXBvbmVudHMgb2YgUHl0aG9uIHZlcnNpb24uIChDb250cmlidXRlZCBieSBQYXVsIE1vb3JlCitpbiA6aXNzdWU6YDIzNDM3YC4pCisKKwordGFyZmlsZQorLS0tLS0tLQorCitUaGUgKm1vZGUqIGFyZ3VtZW50IG9mIHRoZSA6ZnVuYzpgfnRhcmZpbGUub3BlbmAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYGAieCJgYAordG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxNzE3YC4pCisKKzptZXRoOmBUYXJGaWxlLmV4dHJhY3RhbGwoKSA8dGFyZmlsZS5UYXJGaWxlLmV4dHJhY3RhbGw+YCBhbmQKKzptZXRoOmBUYXJGaWxlLmV4dHJhY3QoKSA8dGFyZmlsZS5UYXJGaWxlLmV4dHJhY3Q+YCBtZXRob2RzIG5vdyB0YWtlIGEga2V5d29yZAorYXJndW1lbnQgKm51bWVyaWNfb25seSouICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZSBleHRyYWN0ZWQgZmlsZXMgYW5kCitkaXJlY3RvcmllcyB3aWxsIGJlIG93bmVkIGJ5IHRoZSBudW1lcmljIGBgdWlkYGAgYW5kIGBgZ2lkYGAgZnJvbSB0aGUgdGFyZmlsZS4KK0lmIHNldCB0byBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0LCBhbmQgdGhlIGJlaGF2aW9yIGluIHZlcnNpb25zIHByaW9yIHRvIDMuNSksCit0aGV5IHdpbGwgYmUgb3duZWQgYnkgdGhlIG5hbWVkIHVzZXIgYW5kIGdyb3VwIGluIHRoZSB0YXJmaWxlLgorKENvbnRyaWJ1dGVkIGJ5IE1pY2hhZWwgVm9ndCBhbmQgRXJpYyBTbWl0aCBpbiA6aXNzdWU6YDIzMTkzYC4pCisKK1RoZSA6bWV0aDpgVGFyRmlsZS5saXN0KCkgPHRhcmZpbGUuVGFyRmlsZS5saXN0PmAgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwKKyptZW1iZXJzKiBrZXl3b3JkIGFyZ3VtZW50IHRoYXQgY2FuIGJlIHNldCB0byBhIHN1YnNldCBvZiB0aGUgbGlzdCByZXR1cm5lZAorYnkgOm1ldGg6YFRhckZpbGUuZ2V0bWVtYmVycygpIDx0YXJmaWxlLlRhckZpbGUuZ2V0bWVtYmVycz5gLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMTU0OWAuKQorCisKK3RocmVhZGluZworLS0tLS0tLS0tCisKK0JvdGggOm1ldGg6YExvY2suYWNxdWlyZSgpIDx0aHJlYWRpbmcuTG9jay5hY3F1aXJlPmAgYW5kCis6bWV0aDpgUkxvY2suYWNxdWlyZSgpIDx0aHJlYWRpbmcuUkxvY2suYWNxdWlyZT5gIG1ldGhvZHMKK25vdyB1c2UgYSBtb25vdG9uaWMgY2xvY2sgZm9yIHRpbWVvdXQgbWFuYWdlbWVudC4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMDQzYC4pCisKKwordGltZQorLS0tLQorCitUaGUgOmZ1bmM6YH50aW1lLm1vbm90b25pY2AgZnVuY3Rpb24gaXMgbm93IGFsd2F5cyBhdmFpbGFibGUuCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjA0M2AuKQorCisKK3RpbWVpdAorLS0tLS0tCisKK0EgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24gYGAtdWBgIG9yIDpzYW1wOmAtLXVuaXQ9e1V9YCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSB0aW1lCit1bml0IGZvciB0aGUgdGltZXIgb3V0cHV0LiAgU3VwcG9ydGVkIG9wdGlvbnMgYXJlIGBgdXNlY2BgLCBgYG1zZWNgYCwKK29yIGBgc2VjYGAuICAoQ29udHJpYnV0ZWQgYnkgSnVsaWFuIEdpbmRpIGluIDppc3N1ZTpgMTg5ODNgLikKKworVGhlIDpmdW5jOmB+dGltZWl0LnRpbWVpdGAgZnVuY3Rpb24gaGFzIGEgbmV3ICpnbG9iYWxzKiBwYXJhbWV0ZXIgZm9yCitzcGVjaWZ5aW5nIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdGhlIGNvZGUgd2lsbCBiZSBydW5uaW5nLgorKENvbnRyaWJ1dGVkIGJ5IEJlbiBSb2JlcnRzIGluIDppc3N1ZTpgMjUyN2AuKQorCisKK3RraW50ZXIKKy0tLS0tLS0KKworVGhlIDptb2Q6YHRraW50ZXIuX2ZpeGAgbW9kdWxlIHVzZWQgZm9yIHNldHRpbmcgdXAgdGhlIFRjbC9UayBlbnZpcm9ubWVudAorb24gV2luZG93cyBoYXMgYmVlbiByZXBsYWNlZCBieSBhIHByaXZhdGUgZnVuY3Rpb24gaW4gdGhlIDptb2Q6YF90a2ludGVyYAorbW9kdWxlIHdoaWNoIG1ha2VzIG5vIHBlcm1hbmVudCBjaGFuZ2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyhDb250cmlidXRlZCBieSBaYWNoYXJ5IFdhcmUgaW4gOmlzc3VlOmAyMDAzNWAuKQorCisKKy4uIF93aGF0c25ldy10cmFjZWJhY2s6CisKK3RyYWNlYmFjaworLS0tLS0tLS0tCisKK05ldyA6ZnVuYzpgfnRyYWNlYmFjay53YWxrX3N0YWNrYCBhbmQgOmZ1bmM6YH50cmFjZWJhY2sud2Fsa190YmAKK2Z1bmN0aW9ucyB0byBjb252ZW5pZW50bHkgdHJhdmVyc2UgZnJhbWUgYW5kIHRyYWNlYmFjayBvYmplY3RzLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTc5MTFgLikKKworTmV3IGxpZ2h0d2VpZ2h0IGNsYXNzZXM6IDpjbGFzczpgfnRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb25gLAorOmNsYXNzOmB+dHJhY2ViYWNrLlN0YWNrU3VtbWFyeWAsIGFuZCA6Y2xhc3M6YH50cmFjZWJhY2suRnJhbWVTdW1tYXJ5YC4KKyhDb250cmlidXRlZCBieSBSb2JlcnQgQ29sbGlucyBpbiA6aXNzdWU6YDE3OTExYC4pCisKK0JvdGggOmZ1bmM6YH50cmFjZWJhY2sucHJpbnRfdGJgIGFuZCA6ZnVuYzpgfnRyYWNlYmFjay5wcmludF9zdGFja2AgZnVuY3Rpb25zCitub3cgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSAqbGltaXQqIGFyZ3VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IERtaXRyeSBLYXpha292IGluIDppc3N1ZTpgMjI2MTlgLikKKworCit0eXBlcworLS0tLS0KKworQSBuZXcgOmZ1bmM6YH50eXBlcy5jb3JvdXRpbmVgIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybQorOnRlcm06YGdlbmVyYXRvciA8Z2VuZXJhdG9yIGl0ZXJhdG9yPmAgYW5kCis6Y2xhc3M6YGdlbmVyYXRvci1saWtlIDxjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yPmAgb2JqZWN0cyBpbnRvCis6dGVybTpgYXdhaXRhYmxlcyA8YXdhaXRhYmxlPmAuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDAxN2AuKQorCitBIG5ldyA6Y2xhc3M6YH50eXBlcy5Db3JvdXRpbmVUeXBlYCBpcyB0aGUgdHlwZSBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzCitjcmVhdGVkIGJ5IDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9ucy4KKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI0NDAwYC4pCisKKwordW5pY29kZWRhdGEKKy0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB1bmljb2RlZGF0YWAgbW9kdWxlIG5vdyB1c2VzIGRhdGEgZnJvbSBgVW5pY29kZSA4LjAuMAorPGh0dHA6Ly91bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlOC4wLjAvPmBfLgorCisKK3VuaXR0ZXN0CistLS0tLS0tLQorCitUaGUgOm1ldGg6YFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSgpIDx1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGU+YAorbWV0aG9kIG5vdyBhY2NlcHRzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50ICpwYXR0ZXJuKiB3aGljaCBpcyBwYXNzZWQgdG8KK2BgbG9hZF90ZXN0c2BgIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4gIEZvdW5kIHBhY2thZ2VzIGFyZSBub3cgY2hlY2tlZCBmb3IKK2BgbG9hZF90ZXN0c2BgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVpciBwYXRoIG1hdGNoZXMgKnBhdHRlcm4qLCBiZWNhdXNlIGl0CitpcyBpbXBvc3NpYmxlIGZvciBhIHBhY2thZ2UgbmFtZSB0byBtYXRjaCB0aGUgZGVmYXVsdCBwYXR0ZXJuLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGFuZCBCYXJyeSBBLiBXYXJzYXcgaW4gOmlzc3VlOmAxNjY2MmAuKQorCitVbml0dGVzdCBkaXNjb3ZlcnkgZXJyb3JzIG5vdyBhcmUgZXhwb3NlZCBpbgorOmRhdGE6YFRlc3RMb2FkZXIuZXJyb3JzIDx1bml0dGVzdC5UZXN0TG9hZGVyLmVycm9ycz5gIGF0dHJpYnV0ZSBvZiB0aGUKKzpjbGFzczpgfnVuaXR0ZXN0LlRlc3RMb2FkZXJgIGluc3RhbmNlLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTk3NDZgLikKKworQSBuZXcgY29tbWFuZCBsaW5lIG9wdGlvbiBgYC0tbG9jYWxzYGAgdG8gc2hvdyBsb2NhbCB2YXJpYWJsZXMgaW4KK3RyYWNlYmFja3MuICAoQ29udHJpYnV0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgaW4gOmlzc3VlOmAyMjkzNmAuKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIENsYXNzIGNvbnN0cnVjdG9yIGhhcyBhIG5ldyAqdW5zYWZlKiBwYXJhbWV0ZXIsIHdoaWNoIGNhdXNlcyBtb2NrCisgIG9iamVjdHMgdG8gcmFpc2UgOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9uIGF0dHJpYnV0ZSBuYW1lcyBzdGFydGluZworICB3aXRoIGBgImFzc2VydCJgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTIzOGAuKQorCisqIEEgbmV3IDptZXRoOmBNb2NrLmFzc2VydF9ub3RfY2FsbGVkKCkgPHVuaXR0ZXN0Lm1vY2suTW9jay5hc3NlcnRfbm90X2NhbGxlZD5gCisgIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgbW9jayBvYmplY3Qgd2FzIGNhbGxlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTI2MmAuKQorCitUaGUgOmNsYXNzOmB+dW5pdHRlc3QubW9jay5NYWdpY01vY2tgIGNsYXNzIG5vdyBzdXBwb3J0cyA6bWV0aDpgX190cnVlZGl2X19gLAorOm1ldGg6YF9fZGl2bW9kX19gIGFuZCA6bWV0aDpgX19tYXRtdWxfX2Agb3BlcmF0b3JzLgorKENvbnRyaWJ1dGVkIGJ5IEpvaGFubmVzIEJhaXRlciBpbiA6aXNzdWU6YDIwOTY4YCwgYW5kIEjDpWthbiBMw7Z2ZGFobAoraW4gOmlzc3VlOmAyMzU4MWAgYW5kIDppc3N1ZTpgMjM1NjhgLikKKworSXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IHBhc3MgYGBjcmVhdGU9VHJ1ZWBgIHRvIHRoZQorOmZ1bmM6YH51bml0dGVzdC5tb2NrLnBhdGNoYCBmdW5jdGlvbiB3aGVuIHBhdGNoaW5nIGJ1aWx0aW4gbmFtZXMuCisoQ29udHJpYnV0ZWQgYnkgS3VzaGFsIERhcyBpbiA6aXNzdWU6YDE3NjYwYC4pCisKKwordXJsbGliCistLS0tLS0KKworQSBuZXcKKzpjbGFzczpgcmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoIDx1cmxsaWIucmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoPmAKK2NsYXNzIGFsbG93cyBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIHRvIGJlIG1hbmFnZWQgc28gYXMgdG8KK2VsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBgYDQwMWBgIHJlc3BvbnNlIGhhbmRsaW5nLCBvciB0byB1bmNvbmRpdGlvbmFsbHkgc2VuZAorY3JlZGVudGlhbHMgb24gdGhlIGZpcnN0IHJlcXVlc3QgaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aCBzZXJ2ZXJzIHRoYXQKK3JldHVybiBhIGBgNDA0YGAgcmVzcG9uc2UgaW5zdGVhZCBvZiBhIGBgNDAxYGAgaWYgdGhlIGBgQXV0aG9yaXphdGlvbmBgIGhlYWRlcgoraXMgbm90IHNlbnQuIChDb250cmlidXRlZCBieSBNYXRlaiBDZXBsIGluIDppc3N1ZTpgMTk0OTRgIGFuZCBBa3NoaXQgS2h1cmFuYSBpbgorOmlzc3VlOmA3MTU5YC4pCisKK0EgbmV3ICpxdW90ZV92aWEqIGFyZ3VtZW50IGZvciB0aGUKKzpmdW5jOmBwYXJzZS51cmxlbmNvZGUoKSA8dXJsbGliLnBhcnNlLnVybGVuY29kZT5gCitmdW5jdGlvbiBwcm92aWRlcyBhIHdheSB0byBjb250cm9sIHRoZSBlbmNvZGluZyBvZiBxdWVyeSBwYXJ0cyBpZiBuZWVkZWQuCisoQ29udHJpYnV0ZWQgYnkgU2Ftd3lzZSBhbmQgQXJub24gWWFhcmkgaW4gOmlzc3VlOmAxMzg2NmAuKQorCitUaGUgOmZ1bmM6YHJlcXVlc3QudXJsb3BlbigpIDx1cmxsaWIucmVxdWVzdC51cmxvcGVuPmAgZnVuY3Rpb24gYWNjZXB0cyBhbgorOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IGFzIGEgKmNvbnRleHQqIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yCit0aGUgSFRUUFMgY29ubmVjdGlvbi4gIChDb250cmlidXRlZCBieSBBbGV4IEdheW5vciBpbiA6aXNzdWU6YDIyMzY2YC4pCisKK1RoZSA6ZnVuYzpgcGFyc2UudXJsam9pbigpIDx1cmxsaWIucGFyc2UudXJsam9pbj5gIHdhcyB1cGRhdGVkIHRvIHVzZSB0aGUKKzpyZmM6YDM5ODZgIHNlbWFudGljcyBmb3IgdGhlIHJlc29sdXRpb24gb2YgcmVsYXRpdmUgVVJMcywgcmF0aGVyIHRoYW4KKzpyZmM6YDE4MDhgIGFuZCA6cmZjOmAyMzk2YC4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBTZW50aGlsIEt1bWFyYW4gaW4gOmlzc3VlOmAyMjExOGAuKQorCisKK3dzZ2lyZWYKKy0tLS0tLS0KKworVGhlICpoZWFkZXJzKiBhcmd1bWVudCBvZiB0aGUgOmNsYXNzOmBoZWFkZXJzLkhlYWRlcnMgPHdzZ2lyZWYuaGVhZGVycy5IZWFkZXJzPmAKK2NsYXNzIGNvbnN0cnVjdG9yIGlzIG5vdyBvcHRpb25hbC4KKyhDb250cmlidXRlZCBieSBQYWJsbyBUb3JyZXMgTmF2YXJyZXRlIGFuZCBTaWxlbnRHaG9zdCBpbiA6aXNzdWU6YDU4MDBgLikKKworCit4bWxycGMKKy0tLS0tLQorCitUaGUgOmNsYXNzOmBjbGllbnQuU2VydmVyUHJveHkgPHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHk+YCBjbGFzcyBub3cgc3VwcG9ydHMKKzp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDIwNjI3YC4pCisKKzpjbGFzczpgY2xpZW50LlNlcnZlclByb3h5IDx4bWxycGMuY2xpZW50LlNlcnZlclByb3h5PmAgY29uc3RydWN0b3Igbm93IGFjY2VwdHMKK2FuIG9wdGlvbmFsIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlLgorKENvbnRyaWJ1dGVkIGJ5IEFsZXggR2F5bm9yIGluIDppc3N1ZTpgMjI5NjBgLikKKworCit4bWwuc2F4CistLS0tLS0tCisKK1NBWCBwYXJzZXJzIG5vdyBzdXBwb3J0IGEgY2hhcmFjdGVyIHN0cmVhbSBvZiB0aGUKKzpjbGFzczpgeG1scmVhZGVyLklucHV0U291cmNlIDx4bWwuc2F4LnhtbHJlYWRlci5JbnB1dFNvdXJjZT5gIG9iamVjdC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE3NWAuKQorCis6ZnVuYzpgfnhtbC5zYXgucGFyc2VTdHJpbmdgIG5vdyBhY2NlcHRzIGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMDU5MGAuKQorCisKK3ppcGZpbGUKKy0tLS0tLS0KKworWklQIG91dHB1dCBjYW4gbm93IGJlIHdyaXR0ZW4gdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzI1MmAuKQorCitUaGUgKm1vZGUqIGFyZ3VtZW50IG9mIDptZXRoOmBaaXBGaWxlLm9wZW4oKSA8emlwZmlsZS5aaXBGaWxlLm9wZW4+YCBtZXRob2Qgbm93CithY2NlcHRzIGBgIngiYGAgdG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIxNzE3YC4pCisKKworT3RoZXIgbW9kdWxlLWxldmVsIGNoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK01hbnkgZnVuY3Rpb25zIGluIDptb2Q6YG1tYXBgLCA6bW9kOmBvc3NhdWRpb2RldmAsIDptb2Q6YHNvY2tldGAsCis6bW9kOmBzc2xgLCBhbmQgOm1vZDpgY29kZWNzYCBtb2R1bGVzIG5vdyBhY2NlcHQgd3JpdGFibGUKKzp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMDAxYC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCitUaGUgOmZ1bmM6YG9zLndhbGtgIGZ1bmN0aW9uIGhhcyBiZWVuIHNwZWQgdXAgYnkgMyB0byA1IHRpbWVzIG9uIFBPU0lYIHN5c3RlbXMsCithbmQgYnkgNyB0byAyMCB0aW1lcyBvbiBXaW5kb3dzLiAgVGhpcyB3YXMgZG9uZSB1c2luZyB0aGUgbmV3IDpmdW5jOmBvcy5zY2FuZGlyYAorZnVuY3Rpb24sIHdoaWNoIGV4cG9zZXMgZmlsZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1bmRlcmx5aW5nIGBgcmVhZGRpcmBgIG9yCitgYEZpbmRGaXJzdEZpbGVgYC9gYEZpbmROZXh0RmlsZWBgIHN5c3RlbSBjYWxscy4gIChDb250cmlidXRlZCBieQorQmVuIEhveXQgd2l0aCBoZWxwIGZyb20gVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMzYwNWAuKQorCitDb25zdHJ1Y3Rpb24gb2YgYGBieXRlcyhpbnQpYGAgKGZpbGxlZCBieSB6ZXJvIGJ5dGVzKSBpcyBmYXN0ZXIgYW5kIHVzZXMgbGVzcworbWVtb3J5IGZvciBsYXJnZSBvYmplY3RzLiBgYGNhbGxvYygpYGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgbWFsbG9jKClgYCB0bworYWxsb2NhdGUgbWVtb3J5IGZvciB0aGVzZSBvYmplY3RzLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMzNgLikKKworU29tZSBvcGVyYXRpb25zIG9uIDptb2Q6YGlwYWRkcmVzc2AgOmNsYXNzOmB+aXBhZGRyZXNzLklQdjROZXR3b3JrYCBhbmQKKzpjbGFzczpgfmlwYWRkcmVzcy5JUHY2TmV0d29ya2AgaGF2ZSBiZWVuIG1hc3NpdmVseSBzcGVkIHVwLCBzdWNoIGFzCis6bWV0aDpgfmlwYWRkcmVzcy5JUHY0TmV0d29yay5zdWJuZXRzYCwgOm1ldGg6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsuc3VwZXJuZXRgLAorOmZ1bmM6YH5pcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2VgLCA6ZnVuYzpgfmlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXNgLgorVGhlIHNwZWVkIHVwIGNhbiByYW5nZSBmcm9tIDMgdG8gMTUgdGltZXMuCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UsIE1pY2hlbCBBbGJlcnQsIGFuZCBNYXJrdXMgaW4KKzppc3N1ZTpgMjE0ODZgLCA6aXNzdWU6YDIxNDg3YCwgOmlzc3VlOmAyMDgyNmAsIDppc3N1ZTpgMjMyNjZgLikKKworUGlja2xpbmcgb2YgOm1vZDpgaXBhZGRyZXNzYCBvYmplY3RzIHdhcyBvcHRpbWl6ZWQgdG8gcHJvZHVjZSBzaWduaWZpY2FudGx5CitzbWFsbGVyIG91dHB1dC4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjMxMzNgLikKKworTWFueSBvcGVyYXRpb25zIG9uIDpjbGFzczpgaW8uQnl0ZXNJT2AgYXJlIG5vdyA1MCUgdG8gMTAwJSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE1MzgxYCBhbmQgRGF2aWQgV2lsc29uIGluCis6aXNzdWU6YDIyMDAzYC4pCisKK1RoZSA6ZnVuYzpgbWFyc2hhbC5kdW1wc2AgZnVuY3Rpb24gaXMgbm93IGZhc3RlcjogNjUtODUlIHdpdGggdmVyc2lvbnMgMworYW5kIDQsIDIwLTI1JSB3aXRoIHZlcnNpb25zIDAgdG8gMiBvbiB0eXBpY2FsIGRhdGEsIGFuZCB1cCB0byA1IHRpbWVzIGluCitiZXN0IGNhc2VzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMDQxNmAgYW5kIDppc3N1ZTpgMjMzNDRgLikKKworVGhlIFVURi0zMiBlbmNvZGVyIGlzIG5vdyAzIHRvIDcgdGltZXMgZmFzdGVyLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNTAyN2AuKQorCitSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBub3cgcGFyc2VkIHVwIHRvIDEwJSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE5MzgwYC4pCisKK1RoZSA6ZnVuYzpganNvbi5kdW1wc2AgZnVuY3Rpb24gd2FzIG9wdGltaXplZCB0byBydW4gd2l0aAorYGBlbnN1cmVfYXNjaWk9RmFsc2VgYCBhcyBmYXN0IGFzIHdpdGggYGBlbnN1cmVfYXNjaWk9VHJ1ZWBgLgorKENvbnRyaWJ1dGVkIGJ5IE5hb2tpIEluYWRhIGluIDppc3N1ZTpgMjMyMDZgLikKKworVGhlIDpjOmZ1bmM6YFB5T2JqZWN0X0lzSW5zdGFuY2VgIGFuZCA6YzpmdW5jOmBQeU9iamVjdF9Jc1N1YmNsYXNzYAorZnVuY3Rpb25zIGhhdmUgYmVlbiBzcGVkIHVwIGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQKK2hhcyA6Y2xhc3M6YHR5cGVgIGFzIGl0cyBtZXRhY2xhc3MuCisoQ29udHJpYnV0ZWQgR2VvcmcgQnJhbmRsIGJ5IGluIDppc3N1ZTpgMjI1NDBgLikKKworTWV0aG9kIGNhY2hpbmcgd2FzIHNsaWdodGx5IGltcHJvdmVkLCB5aWVsZGluZyB1cCB0byA1JSBwZXJmb3JtYW5jZQoraW1wcm92ZW1lbnQgaW4gc29tZSBiZW5jaG1hcmtzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjI4NDdgLikKKworT2JqZWN0cyBmcm9tIDptb2Q6YHJhbmRvbWAgbW9kdWxlIG5vdyB1c2UgdHdvIHRpbWVzIGxlc3MgbWVtb3J5IG9uIDY0LWJpdAorYnVpbGRzLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzQ4OGAuKQorCitUaGUgOmZ1bmM6YHByb3BlcnR5YCBnZXR0ZXIgY2FsbHMgYXJlIHVwIHRvIDI1JSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgSm9lIEpldm5payBpbiA6aXNzdWU6YDIzOTEwYC4pCisKK0luc3RhbnRpYXRpb24gb2YgOmNsYXNzOmBmcmFjdGlvbnMuRnJhY3Rpb25gIGlzIG5vdyB1cCB0byAzMCUgZmFzdGVyLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZWZhbiBCZWhuZWwgaW4gOmlzc3VlOmAyMjQ2NGAuKQorCitTdHJpbmcgbWV0aG9kcyA6bWV0aDpgfnN0ci5maW5kYCwgOm1ldGg6YH5zdHIucmZpbmRgLCA6bWV0aDpgfnN0ci5zcGxpdGAsCis6bWV0aDpgfnN0ci5wYXJ0aXRpb25gIGFuZCA6a2V5d29yZDpgaW5gIHN0cmluZyBvcGVyYXRvciBhcmUgbm93IHNpZ25pZmljYW50bHkKK2Zhc3RlciBmb3Igc2VhcmNoaW5nIDEtY2hhcmFjdGVyIHN1YnN0cmluZ3MuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNTczYC4pCisKKworQnVpbGQgYW5kIEMgQVBJIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK05ldyBgYGNhbGxvY2BgIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOgorCisqIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AsCisqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AsCisqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsCisqIDpjOmZ1bmM6YF9QeU9iamVjdF9HQ19DYWxsb2NgLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTIzM2AuKQorCitOZXcgZW5jb2RpbmcvZGVjb2RpbmcgaGVscGVyIGZ1bmN0aW9uczoKKworKiA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIChyZXBsYWNlZCBgYF9QeV9jaGFyMndjaGFyKClgYCksCisqIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgKHJlcGxhY2VkIGBgX1B5X3djaGFyMmNoYXIoKWBgKS4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTgzOTVgLikKKworQSBuZXcgOmM6ZnVuYzpgUHlDb2RlY19OYW1lUmVwbGFjZUVycm9yc2AgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUgdW5pY29kZQorZW5jb2RlIGVycm9yIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlcy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTk2NzZgLikKKworQSBuZXcgOmM6ZnVuYzpgUHlFcnJfRm9ybWF0VmAgZnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9Gb3JtYXRgLAorYnV0IGFjY2VwdHMgYSBgYHZhX2xpc3RgYCBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDE4NzExYC4pCisKK0EgbmV3IDpjOmRhdGE6YFB5RXhjX1JlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24uCisoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsIGluIDppc3N1ZTpgMTkyMzVgLikKKworTmV3IDpjOmZ1bmM6YFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYCwgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyYCwKK2FuZCA6YzpmdW5jOmBQeU1vZHVsZV9FeGVjRGVmYCBmdW5jdGlvbnMgaW50cm9kdWNlZCBieSA6cGVwOmA0ODlgIC0tCittdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFBldHIgVmlrdG9yaW4gaW4gOmlzc3VlOmAyNDI2OGAuKQorCitOZXcgOmM6ZnVuYzpgUHlOdW1iZXJfTWF0cml4TXVsdGlwbHlgIGFuZAorOmM6ZnVuYzpgUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5YCBmdW5jdGlvbnMgdG8gcGVyZm9ybSBtYXRyaXgKK211bHRpcGxpY2F0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEJlbmphbWluIFBldGVyc29uIGluIDppc3N1ZTpgMjExNzZgLiAgU2VlIGFsc28gOnBlcDpgNDY1YAorZm9yIGRldGFpbHMuKQorCitUaGUgOmM6bWVtYmVyOmBQeVR5cGVPYmplY3QudHBfZmluYWxpemVgIHNsb3QgaXMgbm93IHBhcnQgb2Ygc3RhYmxlIEFCSS4KKworV2luZG93cyBidWlsZHMgbm93IHJlcXVpcmUgTWljcm9zb2Z0IFZpc3VhbCBDKysgMTQuMCwgd2hpY2gKK2lzIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIGBWaXN1YWwgU3R1ZGlvIDIwMTUgPGh0dHA6Ly93d3cudmlzdWFsc3R1ZGlvLmNvbT5gXy4KKworRXh0ZW5zaW9uIG1vZHVsZXMgbm93IGluY2x1ZGUgcGxhdGZvcm0gaW5mb3JtYXRpb24gdGFnIGluIHRoZWlyIGZpbGVuYW1lIG9uCitzb21lIHBsYXRmb3JtcyAodGhlIHRhZyBpcyBvcHRpb25hbCwgYW5kIENQeXRob24gd2lsbCBpbXBvcnQgZXh0ZW5zaW9ucyB3aXRob3V0CitpdDsgYWx0aG91Z2ggaWYgdGhlIHRhZyBpcyBwcmVzZW50IGFuZCBtaXNtYXRjaGVkLCB0aGUgZXh0ZW5zaW9uIHdvbid0IGJlCitsb2FkZWQpOgorCisqIE9uIExpbnV4LCBleHRlbnNpb24gbW9kdWxlIGZpbGVuYW1lcyBlbmQgd2l0aAorICBgYC5jcHl0aG9uLTxtYWpvcj48bWlub3I+bS08YXJjaGl0ZWN0dXJlPi08b3M+LnB5ZGBgOgorCisgICogYGA8bWFqb3I+YGAgaXMgdGhlIG1ham9yIG51bWJlciBvZiB0aGUgUHl0aG9uIHZlcnNpb247CisgICAgZm9yIFB5dGhvbiAzLjUgdGhpcyBpcyBgYDNgYC4KKworICAqIGBgPG1pbm9yPmBgIGlzIHRoZSBtaW5vciBudW1iZXIgb2YgdGhlIFB5dGhvbiB2ZXJzaW9uOworICAgIGZvciBQeXRob24gMy41IHRoaXMgaXMgYGA1YGAuCisKKyAgKiBgYDxhcmNoaXRlY3R1cmU+YGAgaXMgdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSB0aGUgZXh0ZW5zaW9uIG1vZHVsZQorICAgIHdhcyBidWlsdCB0byBydW4gb24uIEl0J3MgbW9zdCBjb21tb25seSBlaXRoZXIgYGBpMzg2YGAgZm9yIDMyLWJpdCBJbnRlbAorICAgIHBsYXRmb3JtcyBvciBgYHg4Nl82NGBgIGZvciA2NC1iaXQgSW50ZWwgKGFuZCBBTUQpIHBsYXRmb3Jtcy4KKworICAqIGBgPG9zPmBgIGlzIGFsd2F5cyBgYGxpbnV4LWdudWBgLCBleGNlcHQgZm9yIGV4dGVuc2lvbnMgYnVpbHQgdG8KKyAgICB0YWxrIHRvIHRoZSAzMi1iaXQgQUJJIG9uIDY0LWJpdCBwbGF0Zm9ybXMsIGluIHdoaWNoIGNhc2UgaXQgaXMKKyAgICBgYGxpbnV4LWdudTMyYGAgKGFuZCBgYDxhcmNoaXRlY3R1cmU+YGAgd2lsbCBiZSBgYHg4Nl82NGBgKS4KKworKiBPbiBXaW5kb3dzLCBleHRlbnNpb24gbW9kdWxlIGZpbGVuYW1lcyBlbmQgd2l0aAorICBgYDxkZWJ1Zz4uY3A8bWFqb3I+PG1pbm9yPi08cGxhdGZvcm0+LnB5ZGBgOgorCisgICogYGA8bWFqb3I+YGAgaXMgdGhlIG1ham9yIG51bWJlciBvZiB0aGUgUHl0aG9uIHZlcnNpb247CisgICAgZm9yIFB5dGhvbiAzLjUgdGhpcyBpcyBgYDNgYC4KKworICAqIGBgPG1pbm9yPmBgIGlzIHRoZSBtaW5vciBudW1iZXIgb2YgdGhlIFB5dGhvbiB2ZXJzaW9uOworICAgIGZvciBQeXRob24gMy41IHRoaXMgaXMgYGA1YGAuCisKKyAgKiBgYDxwbGF0Zm9ybT5gYCBpcyB0aGUgcGxhdGZvcm0gdGhlIGV4dGVuc2lvbiBtb2R1bGUgd2FzIGJ1aWx0IGZvciwKKyAgICBlaXRoZXIgYGB3aW4zMmBgIGZvciBXaW4zMiwgYGB3aW5fYW1kNjRgYCBmb3IgV2luNjQsIGBgd2luX2lhNjRgYCBmb3IKKyAgICBXaW5kb3dzIEl0YW5pdW0gNjQsIGFuZCBgYHdpbl9hcm1gYCBmb3IgV2luZG93cyBvbiBBUk0uCisKKyAgKiBJZiBidWlsdCBpbiBkZWJ1ZyBtb2RlLCBgYDxkZWJ1Zz5gYCB3aWxsIGJlIGBgX2RgYCwKKyAgICBvdGhlcndpc2UgaXQgd2lsbCBiZSBibGFuay4KKworKiBPbiBPUyBYIHBsYXRmb3JtcywgZXh0ZW5zaW9uIG1vZHVsZSBmaWxlbmFtZXMgbm93IGVuZCB3aXRoIGBgLWRhcndpbi5zb2BgLgorCisqIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIGV4dGVuc2lvbiBtb2R1bGUgZmlsZW5hbWVzIGFyZSB0aGUgc2FtZSBhcyB0aGV5IHdlcmUKKyAgd2l0aCBQeXRob24gMy40LgorCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworTmV3IEtleXdvcmRzCistLS0tLS0tLS0tLS0KKworYGBhc3luY2BgIGFuZCBgYGF3YWl0YGAgYXJlIG5vdCByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGFzIHZhcmlhYmxlLCBjbGFzcywKK2Z1bmN0aW9uIG9yIG1vZHVsZSBuYW1lcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYCBpbiBQeXRob24gMy41LCB0aGV5IHdpbGwKK2JlY29tZSBwcm9wZXIga2V5d29yZHMgaW4gUHl0aG9uIDMuNy4KKworCitEZXByZWNhdGVkIFB5dGhvbiBCZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmFpc2luZyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24gaW5zaWRlIGEgZ2VuZXJhdG9yIHdpbGwgbm93IGdlbmVyYXRlIGEgc2lsZW50Cis6ZXhjOmBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYCwgd2hpY2ggd2lsbCBiZWNvbWUgYSBub24tc2lsZW50IGRlcHJlY2F0aW9uCit3YXJuaW5nIGluIFB5dGhvbiAzLjYgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaW4gUHl0aG9uIDMuNy4KK1NlZSA6cmVmOmBQRVAgNDc5OiBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycyA8d2hhdHNuZXctcGVwLTQ3OT5gCitmb3IgZGV0YWlscy4KKworCitVbnN1cHBvcnRlZCBPcGVyYXRpbmcgU3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2luZG93cyBYUCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IE1pY3Jvc29mdCwgdGh1cywgcGVyIDpQRVA6YDExYCwgQ1B5dGhvbgorMy41IGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5IHN1cHBvcnRlZCBvbiB0aGlzIE9TLgorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIG1vZHVsZXMsIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBmb3JtYXR0ZXJgIG1vZHVsZSBoYXMgbm93IGdyYWR1YXRlZCB0byBmdWxsIGRlcHJlY2F0aW9uIGFuZCBpcyBzdGlsbAorc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjYuCisKK1RoZSA6ZnVuYzpgYXN5bmNpby5hc3luY2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorOmZ1bmM6YH5hc3luY2lvLmVuc3VyZV9mdXR1cmVgLgorCitUaGUgOm1vZDpgc210cGRgIG1vZHVsZSBoYXMgaW4gdGhlIHBhc3QgYWx3YXlzIGRlY29kZWQgdGhlIERBVEEgcG9ydGlvbiBvZgorZW1haWwgbWVzc2FnZXMgdXNpbmcgdGhlIGBgdXRmLThgYCBjb2RlYy4gIFRoaXMgY2FuIG5vdyBiZSBjb250cm9sbGVkIGJ5IHRoZQorbmV3ICpkZWNvZGVfZGF0YSoga2V5d29yZCB0byA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCitgYFRydWVgYCwgYnV0IHRoaXMgZGVmYXVsdCBpcyBkZXByZWNhdGVkLiAgU3BlY2lmeSB0aGUgKmRlY29kZV9kYXRhKiBrZXl3b3JkCit3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHRvIGF2b2lkIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nLgorCitEaXJlY3RseSBhc3NpZ25pbmcgdmFsdWVzIHRvIHRoZSA6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwua2V5YCwKKzphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC52YWx1ZWAgYW5kCis6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwuY29kZWRfdmFsdWVgIG9mIDpjbGFzczpgaHR0cC5jb29raWVzLk1vcnNlbGAKK29iamVjdHMgaXMgZGVwcmVjYXRlZC4gIFVzZSB0aGUgOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgbWV0aG9kCitpbnN0ZWFkLiAgSW4gYWRkaXRpb24sIHRoZSB1bmRvY3VtZW50ZWQgKkxlZ2FsQ2hhcnMqIHBhcmFtZXRlciBvZgorOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgaXMgZGVwcmVjYXRlZCwgYW5kIGlzIG5vdyBpZ25vcmVkLgorCitQYXNzaW5nIGEgZm9ybWF0IHN0cmluZyBhcyBrZXl3b3JkIGFyZ3VtZW50ICpmb3JtYXRfc3RyaW5nKiB0byB0aGUKKzptZXRoOmB+c3RyaW5nLkZvcm1hdHRlci5mb3JtYXRgIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmBzdHJpbmcuRm9ybWF0dGVyYAorY2xhc3MgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2NzFgLikKKworVGhlIDpmdW5jOmBwbGF0Zm9ybS5kaXN0YCBhbmQgOmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb25zCithcmUgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43LiAgTGludXggZGlzdHJpYnV0aW9ucyB1c2UKK3RvbyBtYW55IGRpZmZlcmVudCB3YXlzIG9mIGRlc2NyaWJpbmcgdGhlbXNlbHZlcywgc28gdGhlIGZ1bmN0aW9uYWxpdHkgaXMKK2xlZnQgdG8gYSBwYWNrYWdlLgorKENvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvayBhbmQgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDEzMjJgLikKKworVGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIGBgZnJvbV9mdW5jdGlvbmBgIGFuZCBgYGZyb21fYnVpbHRpbmBgIG1ldGhvZHMgb2YKKzpjbGFzczpgaW5zcGVjdC5TaWduYXR1cmVgIGFyZSBkZXByZWNhdGVkLiAgVXNlIHRoZSBuZXcKKzptZXRoOmBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIDxpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlPmAKK21ldGhvZCBpbnN0ZWFkLiAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDI0OGAuKQorCitUaGUgOmZ1bmM6YGluc3BlY3QuZ2V0YXJnc3BlY2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIHRvIGJlCityZW1vdmVkIGluIFB5dGhvbiAzLjYuICAoU2VlIDppc3N1ZTpgMjA0MzhgIGZvciBkZXRhaWxzLikKKworVGhlIDptb2Q6YGluc3BlY3RgIDpmdW5jOmB+aW5zcGVjdC5nZXRmdWxsYXJnc3BlY2AsCis6ZnVuYzpgfmluc3BlY3QuZ2V0YXJndmFsdWVzYCwgOmZ1bmM6YH5pbnNwZWN0LmdldGNhbGxhcmdzYCwKKzpmdW5jOmB+aW5zcGVjdC5nZXRhcmd2YWx1ZXNgLCA6ZnVuYzpgfmluc3BlY3QuZm9ybWF0YXJnc3BlY2AsIGFuZAorOmZ1bmM6YH5pbnNwZWN0LmZvcm1hdGFyZ3ZhbHVlc2AgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mCis6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIEFQSS4KKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDIwNDM4YC4pCisKK1VzZSBvZiA6Y29uc3Q6YHJlLkxPQ0FMRWAgZmxhZyB3aXRoIHN0ciBwYXR0ZXJucyBvciA6Y29uc3Q6YHJlLkFTQ0lJYCBpcyBub3cKK2RlcHJlY2F0ZWQuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNDA3YC4pCisKK1VzZSBvZiB1bnJlY29nbml6ZWQgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIKK2luIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJucyBhbmQgcmVwbGFjZW1lbnQgcGF0dGVybnMgbm93IHJhaXNlcyBhCitkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzYyMmAuKQorCitUaGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsICp1c2VfbG9hZF90ZXN0cyogZGVmYXVsdCBhcmd1bWVudCBvZiB0aGUKKzptZXRoOmB1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGVgIG1ldGhvZCBub3cgaXMKK2RlcHJlY2F0ZWQgYW5kIGlnbm9yZWQuCisoQ29udHJpYnV0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgYW5kIEJhcnJ5IEEuIFdhcnNhdyBpbiA6aXNzdWU6YDE2NjYyYC4pCisKKworUmVtb3ZlZAorPT09PT09PQorCitBUEkgYW5kIEZlYXR1cmUgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIG9ic29sZXRlIGFuZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgQVBJcyBhbmQgZmVhdHVyZXMgaGF2ZSBiZWVuCityZW1vdmVkOgorCisqIFRoZSBgYF9fdmVyc2lvbl9fYGAgYXR0cmlidXRlIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgZW1haWwgcGFja2FnZS4gIFRoZQorICBlbWFpbCBjb2RlIGhhc24ndCBiZWVuIHNoaXBwZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBzdGRsaWIgZm9yIGEgbG9uZyB0aW1lLAorICBhbmQgdGhlIGBgX192ZXJzaW9uX19gYCBzdHJpbmcgd2FzIG5vdCB1cGRhdGVkIGluIHRoZSBsYXN0IGZldyByZWxlYXNlcy4KKworKiBUaGUgaW50ZXJuYWwgYGBOZXRyY2BgIGNsYXNzIGluIHRoZSA6bW9kOmBmdHBsaWJgIG1vZHVsZSB3YXMgZGVwcmVjYXRlZCBpbgorICAzLjQsIGFuZCBoYXMgbm93IGJlZW4gcmVtb3ZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hdHQgQ2hhcHV0IGluIDppc3N1ZTpgNjYyM2AuKQorCisqIFRoZSBjb25jZXB0IG9mIGBgLnB5b2BgIGZpbGVzIGhhcyBiZWVuIHJlbW92ZWQuCisKKyogVGhlIEpvaW5hYmxlUXVldWUgY2xhc3MgaW4gdGhlIHByb3Zpc2lvbmFsIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSB3YXMKKyAgZGVwcmVjYXRlZCBpbiAzLjQuNCBhbmQgaXMgbm93IHJlbW92ZWQuCisgIChDb250cmlidXRlZCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcyBpbiA6aXNzdWU6YDIzNDY0YC4pCisKKworUG9ydGluZyB0byBQeXRob24gMy41Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCisKK0NoYW5nZXMgaW4gUHl0aG9uIGJlaGF2aW9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIER1ZSB0byBhbiBvdmVyc2lnaHQsIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zIGVycm9uZW91c2x5IGFjY2VwdGVkIHRoZQorICBmb2xsb3dpbmcgc3ludGF4OjoKKworICAgICAgZigxIGZvciB4IGluIFsxXSwgKmFyZ3MpCisgICAgICBmKDEgZm9yIHggaW4gWzFdLCAqKmt3YXJncykKKworICBQeXRob24gMy41IG5vdyBjb3JyZWN0bHkgcmFpc2VzIGEgOmV4YzpgU3ludGF4RXJyb3JgLCBhcyBnZW5lcmF0b3IKKyAgZXhwcmVzc2lvbnMgbXVzdCBiZSBwdXQgaW4gcGFyZW50aGVzZXMgaWYgbm90IGEgc29sZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uLgorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6cGVwOmA0NzVgOiBTeXN0ZW0gY2FsbHMgYXJlIG5vdyByZXRyaWVkIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgaW5zdGVhZAorICBvZiByYWlzaW5nIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QKKyAgcmFpc2UgYW4gZXhjZXB0aW9uLgorCisqIEJlZm9yZSBQeXRob24gMy41LCBhIDpjbGFzczpgZGF0ZXRpbWUudGltZWAgb2JqZWN0IHdhcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlCisgIGlmIGl0IHJlcHJlc2VudGVkIG1pZG5pZ2h0IGluIFVUQy4gIFRoaXMgYmVoYXZpb3Igd2FzIGNvbnNpZGVyZWQgb2JzY3VyZSBhbmQKKyAgZXJyb3ItcHJvbmUgYW5kIGhhcyBiZWVuIHJlbW92ZWQgaW4gUHl0aG9uIDMuNS4gIFNlZSA6aXNzdWU6YDEzOTM2YCBmb3IgZnVsbAorICBkZXRhaWxzLgorCisqIFRoZSA6bWV0aDpgc3NsLlNTTFNvY2tldC5zZW5kKClgIG1ldGhvZCBub3cgcmFpc2VzIGVpdGhlcgorICA6ZXhjOmBzc2wuU1NMV2FudFJlYWRFcnJvcmAgb3IgOmV4Yzpgc3NsLlNTTFdhbnRXcml0ZUVycm9yYAorICBvbiBhIG5vbi1ibG9ja2luZyBzb2NrZXQgaWYgdGhlIG9wZXJhdGlvbiB3b3VsZCBibG9jay4gIFByZXZpb3VzbHksCisgIGl0IHdvdWxkIHJldHVybiBgYDBgYC4gIChDb250cmlidXRlZCBieSBOaWtvbGF1cyBSYXRoIGluIDppc3N1ZTpgMjA5NTFgLikKKworKiBUaGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZiBnZW5lcmF0b3IgaXMgbm93IHNldCBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLAorICBpbnN0ZWFkIG9mIGJlaW5nIHNldCBmcm9tIHRoZSBjb2RlIG5hbWUuIFVzZSBgYGdlbi5naV9jb2RlLmNvX25hbWVgYCB0bworICByZXRyaWV2ZSB0aGUgY29kZSBuYW1lLiBHZW5lcmF0b3JzIGFsc28gaGF2ZSBhIG5ldyBgYF9fcXVhbG5hbWVfX2BgCisgIGF0dHJpYnV0ZSwgdGhlIHF1YWxpZmllZCBuYW1lLCB3aGljaCBpcyBub3cgdXNlZCBmb3IgdGhlIHJlcHJlc2VudGF0aW9uCisgIG9mIGEgZ2VuZXJhdG9yIChgYHJlcHIoZ2VuKWBgKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMDVgLikKKworKiBUaGUgZGVwcmVjYXRlZCAic3RyaWN0IiBtb2RlIGFuZCBhcmd1bWVudCBvZiA6Y2xhc3M6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VyYCwKKyAgOm1ldGg6YEhUTUxQYXJzZXIuZXJyb3JgLCBhbmQgdGhlIDpleGM6YEhUTUxQYXJzZXJFcnJvcmAgZXhjZXB0aW9uIGhhdmUgYmVlbgorICByZW1vdmVkLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDE1MTE0YC4pCisgIFRoZSAqY29udmVydF9jaGFycmVmcyogYXJndW1lbnQgb2YgOmNsYXNzOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAgaXMKKyAgbm93IGBgVHJ1ZWBgIGJ5IGRlZmF1bHQuICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxMDQ3YC4pCisKKyogQWx0aG91Z2ggaXQgaXMgbm90IGZvcm1hbGx5IHBhcnQgb2YgdGhlIEFQSSwgaXQgaXMgd29ydGggbm90aW5nIGZvciBwb3J0aW5nCisgIHB1cnBvc2VzIChpZTogZml4aW5nIHRlc3RzKSB0aGF0IGVycm9yIG1lc3NhZ2VzIHRoYXQgd2VyZSBwcmV2aW91c2x5IG9mIHRoZQorICBmb3JtICInc29tZXR5cGUnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCIgYXJlIG5vdyBvZiB0aGUgZm9ybSAiYQorICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIHJlcXVpcmVkLCBub3QgJ3NvbWV0eXBlJyIuCisgIChDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgaW4gOmlzc3VlOmAxNjUxOGAuKQorCisqIElmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBzZXQgdG8gYSBkaXJlY3RvcnkgdGhhdCBubyBsb25nZXIgZXhpc3RzIHRoZW4KKyAgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgIHdpbGwgbm8gbG9uZ2VyIGJlIHJhaXNlZCBhbmQgaW5zdGVhZAorICA6bWV0aDpgfmltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5maW5kX3NwZWNgIHdpbGwgcmV0dXJuIGBgTm9uZWBgCisgICoqd2l0aG91dCoqIGNhY2hpbmcgYGBOb25lYGAgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB3aGljaCBpcworICBkaWZmZXJlbnQgdGhhbiB0aGUgdHlwaWNhbCBjYXNlICg6aXNzdWU6YDIyODM0YCkuCisKKyogSFRUUCBzdGF0dXMgY29kZSBhbmQgbWVzc2FnZXMgZnJvbSA6bW9kOmBodHRwLmNsaWVudGAgYW5kIDptb2Q6YGh0dHAuc2VydmVyYAorICB3ZXJlIHJlZmFjdG9yZWQgaW50byBhIGNvbW1vbiA6Y2xhc3M6YH5odHRwLkhUVFBTdGF0dXNgIGVudW0uICBUaGUgdmFsdWVzIGluCisgIDptb2Q6YGh0dHAuY2xpZW50YCBhbmQgOm1vZDpgaHR0cC5zZXJ2ZXJgIHJlbWFpbiBhdmFpbGFibGUgZm9yIGJhY2t3YXJkcworICBjb21wYXRpYmlsaXR5LiAgKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMTc5M2AuKQorCisqIFdoZW4gYW4gaW1wb3J0IGxvYWRlciBkZWZpbmVzIDptZXRoOmBpbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5leGVjX21vZHVsZWAKKyAgaXQgaXMgbm93IGV4cGVjdGVkIHRvIGFsc28gZGVmaW5lCisgIDptZXRoOmB+aW1wb3J0bGliLm1hY2hpbmVyeS5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgKHJhaXNlcyBhCisgIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2Agbm93LCB3aWxsIGJlIGFuIGVycm9yIGluIFB5dGhvbiAzLjYpLiBJZiB0aGUgbG9hZGVyCisgIGluaGVyaXRzIGZyb20gOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkxvYWRlcmAgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCBlbHNlCisgIHNpbXBseSBkZWZpbmUgOm1ldGg6YH5pbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5jcmVhdGVfbW9kdWxlYCB0byByZXR1cm4KKyAgYGBOb25lYGAuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjMwMTRgLikKKworKiBUaGUgOmZ1bmM6YHJlLnNwbGl0YCBmdW5jdGlvbiBhbHdheXMgaWdub3JlZCBlbXB0eSBwYXR0ZXJuIG1hdGNoZXMsIHNvIHRoZQorICBgYCJ4KiJgYCBwYXR0ZXJuIHdvcmtlZCB0aGUgc2FtZSBhcyBgYCJ4KyJgYCwgYW5kIHRoZSBgYCJcYiJgYCBwYXR0ZXJuIG5ldmVyCisgIHdvcmtlZC4gIE5vdyA6ZnVuYzpgcmUuc3BsaXRgIHJhaXNlcyBhIHdhcm5pbmcgaWYgdGhlIHBhdHRlcm4gY291bGQgbWF0Y2gKKyAgYW4gZW1wdHkgc3RyaW5nLiAgRm9yIGNvbXBhdGliaWxpdHkgdXNlIHBhdHRlcm5zIHRoYXQgbmV2ZXIgbWF0Y2ggYW4gZW1wdHkKKyAgc3RyaW5nIChlLmcuIGBgIngrImBgIGluc3RlYWQgb2YgYGAieCoiYGApLiAgUGF0dGVybnMgdGhhdCBjb3VsZCBvbmx5IG1hdGNoCisgIGFuIGVtcHR5IHN0cmluZyAoc3VjaCBhcyBgYCJcYiJgYCkgbm93IHJhaXNlIGFuIGVycm9yLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyODE4YC4pCisKKyogVGhlIDpjbGFzczpgaHR0cC5jb29raWVzLk1vcnNlbGAgZGljdC1saWtlIGludGVyZmFjZSBoYXMgYmVlbiBtYWRlIHNlbGYKKyAgY29uc2lzdGVudDogIG1vcnNlbCBjb21wYXJpc29uIG5vdyB0YWtlcyB0aGUgOmF0dHI6YH5odHRwLmNvb2tpZXMuTW9yc2VsLmtleWAKKyAgYW5kIDphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC52YWx1ZWAgaW50byBhY2NvdW50LAorICA6bWV0aDpgfmh0dHAuY29va2llcy5Nb3JzZWwuY29weWAgbm93IHJlc3VsdHMgaW4gYQorICA6Y2xhc3M6YH5odHRwLmNvb2tpZXMuTW9yc2VsYCBpbnN0YW5jZSByYXRoZXIgdGhhbiBhIDpjbGFzczpgZGljdGAsIGFuZAorICA6bWV0aDpgfmh0dHAuY29va2llcy5Nb3JzZWwudXBkYXRlYCB3aWxsIG5vdyByYWlzZSBhbiBleGNlcHRpb24gaWYgYW55IG9mIHRoZQorICBrZXlzIGluIHRoZSB1cGRhdGUgZGljdGlvbmFyeSBhcmUgaW52YWxpZC4gIEluIGFkZGl0aW9uLCB0aGUgdW5kb2N1bWVudGVkCisgICpMZWdhbENoYXJzKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgaXMgZGVwcmVjYXRlZCBhbmQKKyAgaXMgbm93IGlnbm9yZWQuICAoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBpbiA6aXNzdWU6YDIyMTFgLikKKworKiA6cGVwOmA0ODhgIGhhcyByZW1vdmVkIGBgLnB5b2BgIGZpbGVzIGZyb20gUHl0aG9uIGFuZCBpbnRyb2R1Y2VkIHRoZSBvcHRpb25hbAorICBgYG9wdC1gYCB0YWcgaW4gYGAucHljYGAgZmlsZSBuYW1lcy4gVGhlCisgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaGFzIGdhaW5lZCBhbiAqb3B0aW1pemF0aW9uKgorICBwYXJhbWV0ZXIgdG8gaGVscCBjb250cm9sIHRoZSBgYG9wdC1gYCB0YWcuIEJlY2F1c2Ugb2YgdGhpcywgdGhlCisgICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvbiBpcyBub3cgZGVwcmVjYXRlZC4gYC5weW9gIGZpbGVzCisgIGFyZSBhbHNvIG5vIGxvbmdlciBzdXBwb3J0ZWQgYXMgYSBmaWxlIGFyZ3VtZW50IHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgYW5kCisgIHRodXMgc2VydmUgbm8gcHVycG9zZSB3aGVuIGRpc3RyaWJ1dGVkIG9uIHRoZWlyIG93biAoaS5lLiBzb3VyY2xlc3MgY29kZQorICBkaXN0cmlidXRpb24pLiBEdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGZvciBieXRlY29kZSBoYXMgY2hhbmdlZAorICBpbiBQeXRob24gMy41LCBhbGwgb2xkIGAucHlvYCBmaWxlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiBhcmUKKyAgaW52YWxpZCByZWdhcmRsZXNzIG9mIHRoaXMgUEVQLgorCisqIFRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSBub3cgZXhwb3J0cyB0aGUgOmRhdGE6YH5zb2NrZXQuQ0FOX1JBV19GRF9GUkFNRVNgCisgIGNvbnN0YW50IG9uIGxpbnV4IDMuNiBhbmQgZ3JlYXRlci4KKworKiBUaGUgOmZ1bmM6YHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kc2AgZnVuY3Rpb24gbm93IGludGVycHJldHMgdGhlIGlucHV0IHRpbWUKKyAgYXMgVVRDIGFuZCBub3QgYXMgbG9jYWwgdGltZSwgcGVyIDpyZmM6YDUyODBgLiAgQWRkaXRpb25hbGx5LCB0aGUgcmV0dXJuCisgIHZhbHVlIGlzIGFsd2F5cyBhbiA6Y2xhc3M6YGludGAuIChDb250cmlidXRlZCBieSBBa2lyYSBMaSBpbiA6aXNzdWU6YDE5OTQwYC4pCisKKyogVGhlIGBgcHlnZXR0ZXh0LnB5YGAgVG9vbCBub3cgdXNlcyB0aGUgc3RhbmRhcmQgK05OTk4gZm9ybWF0IGZvciB0aW1lem9uZXMgaW4KKyAgdGhlIFBPVC1DcmVhdGlvbi1EYXRlIGhlYWRlci4KKworKiBUaGUgOm1vZDpgc210cGxpYmAgbW9kdWxlIG5vdyB1c2VzIDpkYXRhOmBzeXMuc3RkZXJyYCBpbnN0ZWFkIG9mIHByZXZpb3VzCisgIG1vZHVsZSBsZXZlbCA6ZGF0YTpgc3RkZXJyYCB2YXJpYWJsZSBmb3IgZGVidWcgb3V0cHV0LiAgSWYgeW91ciAodGVzdCkKKyAgcHJvZ3JhbSBkZXBlbmRzIG9uIHBhdGNoaW5nIHRoZSBtb2R1bGUgbGV2ZWwgdmFyaWFibGUgdG8gY2FwdHVyZSB0aGUgZGVidWcKKyAgb3V0cHV0LCB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSBpdCB0byBjYXB0dXJlIHN5cy5zdGRlcnIgaW5zdGVhZC4KKworKiBUaGUgOm1ldGg6YHN0ci5zdGFydHN3aXRoYCBhbmQgOm1ldGg6YHN0ci5lbmRzd2l0aGAgbWV0aG9kcyBubyBsb25nZXIgcmV0dXJuCisgIGBgVHJ1ZWBgIHdoZW4gZmluZGluZyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGUgaW5kZXhlcyBhcmUgY29tcGxldGVseSBvdXQgb2YKKyAgcmFuZ2UuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI0Mjg0YC4pCisKKyogVGhlIDpmdW5jOmBpbnNwZWN0LmdldGRvY2AgZnVuY3Rpb24gbm93IHJldHVybnMgZG9jdW1lbnRhdGlvbiBzdHJpbmdzCisgIGluaGVyaXRlZCBmcm9tIGJhc2UgY2xhc3Nlcy4gIERvY3VtZW50YXRpb24gc3RyaW5ncyBubyBsb25nZXIgbmVlZCB0byBiZQorICBkdXBsaWNhdGVkIGlmIHRoZSBpbmhlcml0ZWQgZG9jdW1lbnRhdGlvbiBpcyBhcHByb3ByaWF0ZS4gIFRvIHN1cHByZXNzIGFuCisgIGluaGVyaXRlZCBzdHJpbmcsIGFuIGVtcHR5IHN0cmluZyBtdXN0IGJlIHNwZWNpZmllZCAob3IgdGhlIGRvY3VtZW50YXRpb24KKyAgbWF5IGJlIGZpbGxlZCBpbikuICBUaGlzIGNoYW5nZSBhZmZlY3RzIHRoZSBvdXRwdXQgb2YgdGhlIDptb2Q6YHB5ZG9jYAorICBtb2R1bGUgYW5kIHRoZSA6ZnVuYzpgaGVscGAgZnVuY3Rpb24uCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTU1ODJgLikKKworKiBOZXN0ZWQgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYCBjYWxscyBhcmUgbm93IGZsYXR0ZW5lZC4gIElmIHlvdSB3ZXJlCisgIHJlbHlpbmcgb24gdGhlIHByZXZpb3VzIGJlaGF2aW9yLCB5b3UgY2FuIG5vdyBlaXRoZXIgYWRkIGFuIGF0dHJpYnV0ZSB0byBhCisgIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgb2JqZWN0IG9yIHlvdSBjYW4gY3JlYXRlIGEgc3ViY2xhc3Mgb2YKKyAgOmZ1bmM6YGZ1bmN0b29scy5wYXJ0aWFsYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5IGluIDppc3N1ZTpgNzgzMGAuKQorCitDaGFuZ2VzIGluIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgdW5kb2N1bWVudGVkIDpjOm1lbWJlcjpgflB5TWVtb3J5Vmlld09iamVjdC5mb3JtYXRgIG1lbWJlciBvZiB0aGUKKyAgKG5vbi1wdWJsaWMpIDpjOnR5cGU6YFB5TWVtb3J5Vmlld09iamVjdGAgc3RydWN0dXJlIGhhcyBiZWVuIHJlbW92ZWQuCisgIEFsbCBleHRlbnNpb25zIHJlbHlpbmcgb24gdGhlIHJlbGV2YW50IHBhcnRzIGluIGBgbWVtb3J5b2JqZWN0LmhgYAorICBtdXN0IGJlIHJlYnVpbHQuCisKKyogVGhlIDpjOnR5cGU6YFB5TWVtQWxsb2NhdG9yYCBzdHJ1Y3R1cmUgd2FzIHJlbmFtZWQgdG8KKyAgOmM6dHlwZTpgUHlNZW1BbGxvY2F0b3JFeGAgYW5kIGEgbmV3IGBgY2FsbG9jYGAgZmllbGQgd2FzIGFkZGVkLgorCisqIFJlbW92ZWQgbm9uLWRvY3VtZW50ZWQgbWFjcm8gOmM6bWFjcm86YFB5T2JqZWN0X1JFUFJgIHdoaWNoIGxlYWtlZCByZWZlcmVuY2VzLgorICBVc2UgZm9ybWF0IGNoYXJhY3RlciBgYCVSYGAgaW4gOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Gb3JtYXRgLWxpa2UgZnVuY3Rpb25zCisgIHRvIGZvcm1hdCB0aGUgOmZ1bmM6YHJlcHJgIG9mIHRoZSBvYmplY3QuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0NTNgLikKKworKiBCZWNhdXNlIHRoZSBsYWNrIG9mIHRoZSA6YXR0cjpgX19tb2R1bGVfX2AgYXR0cmlidXRlIGJyZWFrcyBwaWNrbGluZyBhbmQKKyAgaW50cm9zcGVjdGlvbiwgYSBkZXByZWNhdGlvbiB3YXJuaW5nIG5vdyBpcyByYWlzZWQgZm9yIGJ1aWx0aW4gdHlwZSB3aXRob3V0CisgIHRoZSA6YXR0cjpgX19tb2R1bGVfX2AgYXR0cmlidXRlLiAgV291bGQgYmUgYW4gQXR0cmlidXRlRXJyb3IgaW4gZnV0dXJlLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIwMjA0YC4pCisKKyogQXMgcGFydCBvZiA6cGVwOmA0OTJgIGltcGxlbWVudGF0aW9uLCBgYHRwX3Jlc2VydmVkYGAgc2xvdCBvZgorICA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHdhcyByZXBsYWNlZCB3aXRoIGEKKyAgOmM6bWVtYmVyOmB0cF9hc19hc3luY2Agc2xvdC4gIFJlZmVyIHRvIDpyZWY6YGNvcm8tb2JqZWN0c2AgZm9yCisgIG5ldyB0eXBlcywgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zLgorCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0IGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdAppbmRleCAyOTkwMmU0Li5lZGI1NTAyIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CisrKyBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKQEAgLTExLDYgKzExLDcgQEAKIC4uIHRvY3RyZWU6OgogICAgOm1heGRlcHRoOiAyCiAKKyAgIDMuNS5yc3QKICAgIDMuNC5yc3QKICAgIDMuMy5yc3QKICAgIDMuMi5yc3QKZGlmZiAtLWdpdCBhL0dyYW1tYXIvR3JhbW1hciBiL0dyYW1tYXIvR3JhbW1hcgppbmRleCAwNWMzMTgxLi45OWZjZWEwIDEwMDY0NAotLS0gYS9HcmFtbWFyL0dyYW1tYXIKKysrIGIvR3JhbW1hci9HcmFtbWFyCkBAIC0yMSw4ICsyMSwxMSBAQAogCiBkZWNvcmF0b3I6ICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQogZGVjb3JhdG9yczogZGVjb3JhdG9yKwotZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpCitkZWNvcmF0ZWQ6IGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZiB8IGFzeW5jX2Z1bmNkZWYpCisKK2FzeW5jX2Z1bmNkZWY6IEFTWU5DIGZ1bmNkZWYKIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKKwogcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKIHR5cGVkYXJnc2xpc3Q6ICh0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJwogICAgICAgIFsnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWZdXQpAQCAtNDAsNyArNDMsNyBAQAogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAogICAgICAgICAgICAgICAgICAgICAgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdF9zdGFyX2V4cHIpKSopCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KLWF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nIHwKK2F1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKICMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKQEAgLTY1LDcgKzY4LDggQEAKIG5vbmxvY2FsX3N0bXQ6ICdub25sb2NhbCcgTkFNRSAoJywnIE5BTUUpKgogYXNzZXJ0X3N0bXQ6ICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQogCi1jb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQKK2NvbXBvdW5kX3N0bXQ6IGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IHdpdGhfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZCB8IGFzeW5jX3N0bXQKK2FzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpCiBpZl9zdG10OiAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KIHdoaWxlX3N0bXQ6ICd3aGlsZScgdGVzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiBmb3Jfc3RtdDogJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCkBAIC04OSw3ICs5Myw3IEBACiBub3RfdGVzdDogJ25vdCcgbm90X3Rlc3QgfCBjb21wYXJpc29uCiBjb21wYXJpc29uOiBleHByIChjb21wX29wIGV4cHIpKgogIyA8PiBpc24ndCBhY3R1YWxseSBhIHZhbGlkIGNvbXBhcmlzb24gb3BlcmF0b3IgaW4gUHl0aG9uLiBJdCdzIGhlcmUgZm9yIHRoZQotIyBzYWtlIG9mIGEgX19mdXR1cmVfXyBpbXBvcnQgZGVzY3JpYmVkIGluIFBFUCA0MDEKKyMgc2FrZSBvZiBhIF9fZnV0dXJlX18gaW1wb3J0IGRlc2NyaWJlZCBpbiBQRVAgNDAxICh3aGljaCByZWFsbHkgd29ya3MgOi0pCiBjb21wX29wOiAnPCd8Jz4nfCc9PSd8Jz49J3wnPD0nfCc8Pid8JyE9J3wnaW4nfCdub3QnICdpbid8J2lzJ3wnaXMnICdub3QnCiBzdGFyX2V4cHI6ICcqJyBleHByCiBleHByOiB4b3JfZXhwciAoJ3wnIHhvcl9leHByKSoKQEAgLTk3LDkgKzEwMSwxMCBAQAogYW5kX2V4cHI6IHNoaWZ0X2V4cHIgKCcmJyBzaGlmdF9leHByKSoKIHNoaWZ0X2V4cHI6IGFyaXRoX2V4cHIgKCgnPDwnfCc+PicpIGFyaXRoX2V4cHIpKgogYXJpdGhfZXhwcjogdGVybSAoKCcrJ3wnLScpIHRlcm0pKgotdGVybTogZmFjdG9yICgoJyonfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKK3Rlcm06IGZhY3RvciAoKCcqJ3wnQCd8Jy8nfCclJ3wnLy8nKSBmYWN0b3IpKgogZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi1wb3dlcjogYXRvbSB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCitwb3dlcjogYXRvbV9leHByIFsnKionIGZhY3Rvcl0KK2F0b21fZXhwcjogW0FXQUlUXSBhdG9tIHRyYWlsZXIqCiBhdG9tOiAoJygnIFt5aWVsZF9leHByfHRlc3RsaXN0X2NvbXBdICcpJyB8CiAgICAgICAgJ1snIFt0ZXN0bGlzdF9jb21wXSAnXScgfAogICAgICAgICd7JyBbZGljdG9yc2V0bWFrZXJdICd9JyB8CkBAIC0xMTEsMTcgKzExNiwyOSBAQAogc2xpY2VvcDogJzonIFt0ZXN0XQogZXhwcmxpc3Q6IChleHByfHN0YXJfZXhwcikgKCcsJyAoZXhwcnxzdGFyX2V4cHIpKSogWycsJ10KIHRlc3RsaXN0OiB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddCi1kaWN0b3JzZXRtYWtlcjogKCAodGVzdCAnOicgdGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkpIHwKLSAgICAgICAgICAgICAgICAgICh0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSkgKQorZGljdG9yc2V0bWFrZXI6ICggKCh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKQorICAgICAgICAgICAgICAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpKSogWycsJ10pKSB8CisgICAgICAgICAgICAgICAgICAoKHRlc3QgfCBzdGFyX2V4cHIpCisgICAgICAgICAgICAgICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8IHN0YXJfZXhwcikpKiBbJywnXSkpICkKIAogY2xhc3NkZWY6ICdjbGFzcycgTkFNRSBbJygnIFthcmdsaXN0XSAnKSddICc6JyBzdWl0ZQogCi1hcmdsaXN0OiAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgfCcqJyB0ZXN0ICgnLCcgYXJndW1lbnQpKiBbJywnICcqKicgdGVzdF0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgfCcqKicgdGVzdCkKK2FyZ2xpc3Q6IGFyZ3VtZW50ICgnLCcgYXJndW1lbnQpKiAgWycsJ10KKwogIyBUaGUgcmVhc29uIHRoYXQga2V5d29yZHMgYXJlIHRlc3Qgbm9kZXMgaW5zdGVhZCBvZiBOQU1FIGlzIHRoYXQgdXNpbmcgTkFNRQogIyByZXN1bHRzIGluIGFuIGFtYmlndWl0eS4gYXN0LmMgbWFrZXMgc3VyZSBpdCdzIGEgTkFNRS4KLWFyZ3VtZW50OiB0ZXN0IFtjb21wX2Zvcl0gfCB0ZXN0ICc9JyB0ZXN0ICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKKyMgInRlc3QgJz0nIHRlc3QiIGlzIHJlYWxseSAia2V5d29yZCAnPScgdGVzdCIsIGJ1dCB3ZSBoYXZlIG5vIHN1Y2ggdG9rZW4uCisjIFRoZXNlIG5lZWQgdG8gYmUgaW4gYSBzaW5nbGUgcnVsZSB0byBhdm9pZCBncmFtbWFyIHRoYXQgaXMgYW1iaWd1b3VzCisjIHRvIG91ciBMTCgxKSBwYXJzZXIuIEV2ZW4gdGhvdWdoICd0ZXN0JyBpbmNsdWRlcyAnKmV4cHInIGluIHN0YXJfZXhwciwKKyMgd2UgZXhwbGljaXRseSBtYXRjaCAnKicgaGVyZSwgdG9vLCB0byBnaXZlIGl0IHByb3BlciBwcmVjZWRlbmNlLgorIyBJbGxlZ2FsIGNvbWJpbmF0aW9ucyBhbmQgb3JkZXJpbmdzIGFyZSBibG9ja2VkIGluIGFzdC5jOgorIyBtdWx0aXBsZSAodGVzdCBjb21wX2ZvcikgYXJndWVtZW50cyBhcmUgYmxvY2tlZDsga2V5d29yZCB1bnBhY2tpbmdzCisjIHRoYXQgcHJlY2VkZSBpdGVyYWJsZSB1bnBhY2tpbmdzIGFyZSBibG9ja2VkOyBldGMuCithcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfAorICAgICAgICAgICAgdGVzdCAnPScgdGVzdCB8CisgICAgICAgICAgICAnKionIHRlc3QgfAorICAgICAgICAgICAgJyonIHRlc3QgKQorCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgogY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgb3JfdGVzdCBbY29tcF9pdGVyXQogY29tcF9pZjogJ2lmJyB0ZXN0X25vY29uZCBbY29tcF9pdGVyXQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCA2N2Q2NzdiLi4zYmMwMTVmIDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtMTUsOSArMTUsOSBAQAogCiB0eXBlZGVmIGVudW0gX2Jvb2xvcCB7IEFuZD0xLCBPcj0yIH0gYm9vbG9wX3R5OwogCi10eXBlZGVmIGVudW0gX29wZXJhdG9yIHsgQWRkPTEsIFN1Yj0yLCBNdWx0PTMsIERpdj00LCBNb2Q9NSwgUG93PTYsIExTaGlmdD03LAotICAgICAgICAgICAgICAgICAgICAgICAgIFJTaGlmdD04LCBCaXRPcj05LCBCaXRYb3I9MTAsIEJpdEFuZD0xMSwgRmxvb3JEaXY9MTIgfQotICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yX3R5OwordHlwZWRlZiBlbnVtIF9vcGVyYXRvciB7IEFkZD0xLCBTdWI9MiwgTXVsdD0zLCBNYXRNdWx0PTQsIERpdj01LCBNb2Q9NiwgUG93PTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgTFNoaWZ0PTgsIFJTaGlmdD05LCBCaXRPcj0xMCwgQml0WG9yPTExLCBCaXRBbmQ9MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRmxvb3JEaXY9MTMgfSBvcGVyYXRvcl90eTsKIAogdHlwZWRlZiBlbnVtIF91bmFyeW9wIHsgSW52ZXJ0PTEsIE5vdD0yLCBVQWRkPTMsIFVTdWI9NCB9IHVuYXJ5b3BfdHk7CiAKQEAgLTYzLDEyICs2MywxMyBAQAogICAgIH0gdjsKIH07CiAKLWVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBDbGFzc0RlZl9raW5kPTIsIFJldHVybl9raW5kPTMsCi0gICAgICAgICAgICAgICAgICBEZWxldGVfa2luZD00LCBBc3NpZ25fa2luZD01LCBBdWdBc3NpZ25fa2luZD02LCBGb3Jfa2luZD03LAotICAgICAgICAgICAgICAgICAgV2hpbGVfa2luZD04LCBJZl9raW5kPTksIFdpdGhfa2luZD0xMCwgUmFpc2Vfa2luZD0xMSwKLSAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTEyLCBBc3NlcnRfa2luZD0xMywgSW1wb3J0X2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTUsIEdsb2JhbF9raW5kPTE2LCBOb25sb2NhbF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTE4LCBQYXNzX2tpbmQ9MTksIEJyZWFrX2tpbmQ9MjAsIENvbnRpbnVlX2tpbmQ9MjF9OworZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIEFzeW5jRnVuY3Rpb25EZWZfa2luZD0yLCBDbGFzc0RlZl9raW5kPTMsCisgICAgICAgICAgICAgICAgICBSZXR1cm5fa2luZD00LCBEZWxldGVfa2luZD01LCBBc3NpZ25fa2luZD02LAorICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgRm9yX2tpbmQ9OCwgQXN5bmNGb3Jfa2luZD05LCBXaGlsZV9raW5kPTEwLAorICAgICAgICAgICAgICAgICAgSWZfa2luZD0xMSwgV2l0aF9raW5kPTEyLCBBc3luY1dpdGhfa2luZD0xMywgUmFpc2Vfa2luZD0xNCwKKyAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTE1LCBBc3NlcnRfa2luZD0xNiwgSW1wb3J0X2tpbmQ9MTcsCisgICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTgsIEdsb2JhbF9raW5kPTE5LCBOb25sb2NhbF9raW5kPTIwLAorICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTIxLCBQYXNzX2tpbmQ9MjIsIEJyZWFrX2tpbmQ9MjMsIENvbnRpbnVlX2tpbmQ9MjR9Owogc3RydWN0IF9zdG10IHsKICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC04MiwxMCArODMsMTYgQEAKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWU7CisgICAgICAgICAgICBhcmd1bWVudHNfdHkgYXJnczsKKyAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OworICAgICAgICAgICAgYXNkbF9zZXEgKmRlY29yYXRvcl9saXN0OworICAgICAgICAgICAgZXhwcl90eSByZXR1cm5zOworICAgICAgICB9IEFzeW5jRnVuY3Rpb25EZWY7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lOwogICAgICAgICAgICAgYXNkbF9zZXEgKmJhc2VzOwogICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzOwotICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzOwogICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICBhc2RsX3NlcSAqZGVjb3JhdG9yX2xpc3Q7CiAgICAgICAgIH0gQ2xhc3NEZWY7CkBAIC0xMTcsNiArMTI0LDEzIEBACiAgICAgICAgIH0gRm9yOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGV4cHJfdHkgdGFyZ2V0OworICAgICAgICAgICAgZXhwcl90eSBpdGVyOworICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CisgICAgICAgICAgICBhc2RsX3NlcSAqb3JlbHNlOworICAgICAgICB9IEFzeW5jRm9yOworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdGVzdDsKICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgYXNkbF9zZXEgKm9yZWxzZTsKQEAgLTEzNCw2ICsxNDgsMTEgQEAKICAgICAgICAgfSBXaXRoOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGFzZGxfc2VxICppdGVtczsKKyAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OworICAgICAgICB9IEFzeW5jV2l0aDsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBleHByX3R5IGV4YzsKICAgICAgICAgICAgIGV4cHJfdHkgY2F1c2U7CiAgICAgICAgIH0gUmFpc2U7CkBAIC0xODAsMTEgKzE5OSwxMSBAQAogZW51bSBfZXhwcl9raW5kIHtCb29sT3Bfa2luZD0xLCBCaW5PcF9raW5kPTIsIFVuYXJ5T3Bfa2luZD0zLCBMYW1iZGFfa2luZD00LAogICAgICAgICAgICAgICAgICAgSWZFeHBfa2luZD01LCBEaWN0X2tpbmQ9NiwgU2V0X2tpbmQ9NywgTGlzdENvbXBfa2luZD04LAogICAgICAgICAgICAgICAgICAgU2V0Q29tcF9raW5kPTksIERpY3RDb21wX2tpbmQ9MTAsIEdlbmVyYXRvckV4cF9raW5kPTExLAotICAgICAgICAgICAgICAgICAgWWllbGRfa2luZD0xMiwgWWllbGRGcm9tX2tpbmQ9MTMsIENvbXBhcmVfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIENhbGxfa2luZD0xNSwgTnVtX2tpbmQ9MTYsIFN0cl9raW5kPTE3LCBCeXRlc19raW5kPTE4LAotICAgICAgICAgICAgICAgICAgTmFtZUNvbnN0YW50X2tpbmQ9MTksIEVsbGlwc2lzX2tpbmQ9MjAsIEF0dHJpYnV0ZV9raW5kPTIxLAotICAgICAgICAgICAgICAgICAgU3Vic2NyaXB0X2tpbmQ9MjIsIFN0YXJyZWRfa2luZD0yMywgTmFtZV9raW5kPTI0LAotICAgICAgICAgICAgICAgICAgTGlzdF9raW5kPTI1LCBUdXBsZV9raW5kPTI2fTsKKyAgICAgICAgICAgICAgICAgIEF3YWl0X2tpbmQ9MTIsIFlpZWxkX2tpbmQ9MTMsIFlpZWxkRnJvbV9raW5kPTE0LAorICAgICAgICAgICAgICAgICAgQ29tcGFyZV9raW5kPTE1LCBDYWxsX2tpbmQ9MTYsIE51bV9raW5kPTE3LCBTdHJfa2luZD0xOCwKKyAgICAgICAgICAgICAgICAgIEJ5dGVzX2tpbmQ9MTksIE5hbWVDb25zdGFudF9raW5kPTIwLCBFbGxpcHNpc19raW5kPTIxLAorICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjIsIFN1YnNjcmlwdF9raW5kPTIzLCBTdGFycmVkX2tpbmQ9MjQsCisgICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjUsIExpc3Rfa2luZD0yNiwgVHVwbGVfa2luZD0yN307CiBzdHJ1Y3QgX2V4cHIgewogICAgIGVudW0gX2V4cHJfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTI0Nyw2ICsyNjYsMTAgQEAKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICB9IEF3YWl0OworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgIH0gWWllbGQ7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewpAQCAtMjYzLDggKzI4Niw2IEBACiAgICAgICAgICAgICBleHByX3R5IGZ1bmM7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYXJnczsKICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkczsKLSAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3M7Ci0gICAgICAgICAgICBleHByX3R5IGt3YXJnczsKICAgICAgICAgfSBDYWxsOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKQEAgLTQwNiwxMSArNDI3LDE0IEBACiBzdG10X3R5IF9QeV9GdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50c190eSBhcmdzLCBhc2RsX3NlcSAqIGJvZHksCiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqIGRlY29yYXRvcl9saXN0LCBleHByX3R5IHJldHVybnMsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBDbGFzc0RlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkgX1B5X0NsYXNzRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5KQorI2RlZmluZSBBc3luY0Z1bmN0aW9uRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgX1B5X0FzeW5jRnVuY3Rpb25EZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQorc3RtdF90eSBfUHlfQXN5bmNGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50c190eSBhcmdzLCBhc2RsX3NlcSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHksIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGV4cHJfdHkgcmV0dXJucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQ2xhc3NEZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSBfUHlfQ2xhc3NEZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KQogc3RtdF90eSBfUHlfQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqIGJhc2VzLCBhc2RsX3NlcSAqIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJncywgZXhwcl90eSBrd2FyZ3MsIGFzZGxfc2VxICogYm9keSwKLSAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGRlY29yYXRvcl9saXN0LCBpbnQgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgUmV0dXJuKGEwLCBhMSwgYTIsIGEzKSBfUHlfUmV0dXJuKGEwLCBhMSwgYTIsIGEzKQogc3RtdF90eSBfUHlfUmV0dXJuKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIERlbGV0ZShhMCwgYTEsIGEyLCBhMykgX1B5X0RlbGV0ZShhMCwgYTEsIGEyLCBhMykKQEAgLTQyNSw2ICs0NDksOSBAQAogI2RlZmluZSBGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Gb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCiBzdG10X3R5IF9QeV9Gb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqCiAgICAgICAgICAgICAgICAgb3JlbHNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBBc3luY0ZvcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgX1B5X0FzeW5jRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfQXN5bmNGb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqCisgICAgICAgICAgICAgICAgICAgICBvcmVsc2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFdoaWxlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9XaGlsZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogc3RtdF90eSBfUHlfV2hpbGUoZXhwcl90eSB0ZXN0LCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQzNCw2ICs0NjEsOSBAQAogI2RlZmluZSBXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEFzeW5jV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9Bc3luY1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0KQorc3RtdF90eSBfUHlfQXN5bmNXaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50CisgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBSYWlzZShhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9SYWlzZShhMCwgYTEsIGEyLCBhMywgYTQpCiBzdG10X3R5IF9QeV9SYWlzZShleHByX3R5IGV4YywgZXhwcl90eSBjYXVzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CkBAIC00OTYsNiArNTI2LDggQEAKICNkZWZpbmUgR2VuZXJhdG9yRXhwKGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X0dlbmVyYXRvckV4cChhMCwgYTEsIGEyLCBhMywgYTQpCiBleHByX3R5IF9QeV9HZW5lcmF0b3JFeHAoZXhwcl90eSBlbHQsIGFzZGxfc2VxICogZ2VuZXJhdG9ycywgaW50IGxpbmVubywgaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBBd2FpdChhMCwgYTEsIGEyLCBhMykgX1B5X0F3YWl0KGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfQXdhaXQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgWWllbGQoYTAsIGExLCBhMiwgYTMpIF9QeV9ZaWVsZChhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X1lpZWxkKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFlpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkRnJvbShhMCwgYTEsIGEyLCBhMykKQEAgLTUwNCwxMCArNTM2LDkgQEAKICNkZWZpbmUgQ29tcGFyZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQ29tcGFyZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogZXhwcl90eSBfUHlfQ29tcGFyZShleHByX3R5IGxlZnQsIGFzZGxfaW50X3NlcSAqIG9wcywgYXNkbF9zZXEgKiBjb21wYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgQ2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIF9QeV9DYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKLWV4cHJfdHkgX1B5X0NhbGwoZXhwcl90eSBmdW5jLCBhc2RsX3NlcSAqIGFyZ3MsIGFzZGxfc2VxICoga2V5d29yZHMsIGV4cHJfdHkKLSAgICAgICAgICAgICAgICAgc3RhcmFyZ3MsIGV4cHJfdHkga3dhcmdzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQotICAgICAgICAgICAgICAgICAqYXJlbmEpOworI2RlZmluZSBDYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9DYWxsKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCitleHByX3R5IF9QeV9DYWxsKGV4cHJfdHkgZnVuYywgYXNkbF9zZXEgKiBhcmdzLCBhc2RsX3NlcSAqIGtleXdvcmRzLCBpbnQKKyAgICAgICAgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBOdW0oYTAsIGExLCBhMiwgYTMpIF9QeV9OdW0oYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9OdW0ob2JqZWN0IG4sIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFN0cihhMCwgYTEsIGEyLCBhMykgX1B5X1N0cihhMCwgYTEsIGEyLCBhMykKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IDJkZDgyOTAuLjg1OGRiZDEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgInR1cGxlb2JqZWN0LmgiCiAjaW5jbHVkZSAibGlzdG9iamVjdC5oIgogI2luY2x1ZGUgImRpY3RvYmplY3QuaCIKKyNpbmNsdWRlICJvZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImVudW1vYmplY3QuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJtZXRob2RvYmplY3QuaCIKQEAgLTExMiw2ICsxMTMsNyBAQAogI2luY2x1ZGUgInB5YXJlbmEuaCIKICNpbmNsdWRlICJtb2RzdXBwb3J0LmgiCiAjaW5jbHVkZSAicHl0aG9ucnVuLmgiCisjaW5jbHVkZSAicHlsaWZlY3ljbGUuaCIKICNpbmNsdWRlICJjZXZhbC5oIgogI2luY2x1ZGUgInN5c21vZHVsZS5oIgogI2luY2x1ZGUgImludHJjaGVjay5oIgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDZlODUwYjguLjgzZGJmOTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTI2Niw2ICsyNjYsMTIgQEAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd2hlcmUpOworI2VuZGlmCisKICAgICAgICAvKgogICAgICBDYWxsIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdCwgY2FsbGFibGVfb2JqZWN0LCB3aXRoCiAgICAgIGFyZ3VtZW50cyBhbmQga2V5d29yZHMgYXJndW1lbnRzLiAgVGhlICdhcmdzJyBhcmd1bWVudCBjYW4gbm90IGJlCkBAIC02NTgsNiArNjY0LDEyIEBACiAgICAgIG8xKm8yLgogICAgICAgICovCiAKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9NYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CisKKyAgICAgICAvKgorICAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbjogbzEgQCBvMi4KKyAgICAgICAqLworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlOdW1iZXJfRmxvb3JEaXZpZGUoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOwogCiAgICAgICAgLyoKQEAgLTgzMiw2ICs4NDQsMTIgQEAKICAgICAgbzEgKj0gbzIuCiAgICAgICAgKi8KIAorICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TnVtYmVyX0luUGxhY2VNYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMik7CisKKyAgICAgICAvKgorICAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbjogbzEgQD0gbzIuCisgICAgICAgKi8KKwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZShQeU9iamVjdCAqbzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvMik7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKaW5kZXggMTQ5OGI4Zi4uMTFkNWY0MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKKysrIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKQEAgLTIxLDggKzIxLDggQEAKIGV4dGVybiB2b2lkIF9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwogCi0vKiBUaGlzIG9uZSBnZXRzIHRoZSByYXcgYXJndW1lbnQgbGlzdC4gKi8KLWV4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeU9iamVjdCAqYXJncyk7CisvKiBUaGUgbWFrZXRyYW5zKCkgc3RhdGljIG1ldGhvZC4gKi8KK2V4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0byk7CiAKIC8qIFNoYXJlZCBfX2RvY19fIHN0cmluZ3MuICovCiBleHRlcm4gY29uc3QgY2hhciBfUHlfaXNzcGFjZV9fZG9jX19bXTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCAwZWU4ZDM2Li5lMzc5YmFjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02Miw2ICs2Miw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlCeXRlc19SZXNpemUoUHlPYmplY3QgKiosIFB5X3NzaXplX3QpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jZXZhbC5oIGIvSW5jbHVkZS9jZXZhbC5oCmluZGV4IDQ5MzdmMmMuLmViMWVlNDMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY2V2YWwuaAorKysgYi9JbmNsdWRlL2NldmFsLmgKQEAgLTIzLDYgKzIzLDggQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1NldFByb2ZpbGUoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1NldFRyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcihQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRDb3JvdXRpbmVXcmFwcGVyKHZvaWQpOwogI2VuZGlmCiAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCkBAIC00NiwxNiArNDgsMTYgQEAKIAogICAgSW4gUHl0aG9uIDMuMCwgdGhpcyBwcm90ZWN0aW9uIGhhcyB0d28gbGV2ZWxzOgogICAgKiBub3JtYWwgYW50aS1yZWN1cnNpb24gcHJvdGVjdGlvbiBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcmVjdXJzaW9uIGxldmVsCi0gICAgIGV4Y2VlZHMgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGxpbWl0LiBJdCByYWlzZXMgYSBSdW50aW1lRXJyb3IsIGFuZCBzZXRzCisgICAgIGV4Y2VlZHMgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGxpbWl0LiBJdCByYWlzZXMgYSBSZWN1cnNpb25FcnJvciwgYW5kIHNldHMKICAgICAgdGhlICJvdmVyZmxvd2VkIiBmbGFnIGluIHRoZSB0aHJlYWQgc3RhdGUgc3RydWN0dXJlLiBUaGlzIGZsYWcKICAgICAgdGVtcG9yYXJpbHkgKmRpc2FibGVzKiB0aGUgbm9ybWFsIHByb3RlY3Rpb247IHRoaXMgYWxsb3dzIGNsZWFudXAgY29kZQogICAgICB0byBwb3RlbnRpYWxseSBvdXRncm93IHRoZSByZWN1cnNpb24gbGltaXQgd2hpbGUgcHJvY2Vzc2luZyB0aGUKLSAgICAgUnVudGltZUVycm9yLgorICAgICBSZWN1cnNpb25FcnJvci4KICAgICogImxhc3QgY2hhbmNlIiBhbnRpLXJlY3Vyc2lvbiBwcm90ZWN0aW9uIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSByZWN1cnNpb24KICAgICAgbGV2ZWwgZXhjZWVkcyAiY3VycmVudCByZWN1cnNpb24gbGltaXQgKyA1MCIuIEJ5IGNvbnN0cnVjdGlvbiwgdGhpcwogICAgICBwcm90ZWN0aW9uIGNhbiBvbmx5IGJlIHRyaWdnZXJlZCB3aGVuIHRoZSAib3ZlcmZsb3dlZCIgZmxhZyBpcyBzZXQuIEl0CiAgICAgIG1lYW5zIHRoZSBjbGVhbnVwIGNvZGUgaGFzIGl0c2VsZiBnb25lIGludG8gYW4gaW5maW5pdGUgbG9vcCwgb3IgdGhlCi0gICAgIFJ1bnRpbWVFcnJvciBoYXMgYmVlbiBtaXN0YWtpbmdseSBpZ25vcmVkLiBXaGVuIHRoaXMgcHJvdGVjdGlvbiBpcworICAgICBSZWN1cnNpb25FcnJvciBoYXMgYmVlbiBtaXN0YWtpbmdseSBpZ25vcmVkLiBXaGVuIHRoaXMgcHJvdGVjdGlvbiBpcwogICAgICB0cmlnZ2VyZWQsIHRoZSBpbnRlcnByZXRlciBhYm9ydHMgd2l0aCBhIEZhdGFsIEVycm9yLgogCiAgICBJbiBhZGRpdGlvbiwgdGhlICJvdmVyZmxvd2VkIiBmbGFnIGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQgd2hlbiB0aGUKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggN2M3ZTViZi4uNTZlNmVjMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTIxLDcgKzIxLDEyIEBACiAgICAgUHlPYmplY3QgKmNvX3Zhcm5hbWVzOwkvKiB0dXBsZSBvZiBzdHJpbmdzIChsb2NhbCB2YXJpYWJsZSBuYW1lcykgKi8KICAgICBQeU9iamVjdCAqY29fZnJlZXZhcnM7CS8qIHR1cGxlIG9mIHN0cmluZ3MgKGZyZWUgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2NlbGx2YXJzOyAgICAgIC8qIHR1cGxlIG9mIHN0cmluZ3MgKGNlbGwgdmFyaWFibGUgbmFtZXMpICovCi0gICAgLyogVGhlIHJlc3QgZG9lc24ndCBjb3VudCBmb3IgaGFzaCBvciBjb21wYXJpc29ucyAqLworICAgIC8qIFRoZSByZXN0IGFyZW4ndCB1c2VkIGluIGVpdGhlciBoYXNoIG9yIGNvbXBhcmlzb25zLCBleGNlcHQgZm9yCisgICAgICAgY29fbmFtZSAodXNlZCBpbiBib3RoKSBhbmQgY29fZmlyc3RsaW5lbm8gKHVzZWQgb25seSBpbgorICAgICAgIGNvbXBhcmlzb25zKS4gIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIKKyAgICAgICBmb3IgdHJhY2ViYWNrcyBhbmQgZGVidWdnZXJzOyBvdGhlcndpc2UsIGNvbnN0YW50IGRlLWR1cGxpY2F0aW9uCisgICAgICAgd291bGQgY29sbGFwc2UgaWRlbnRpY2FsIGZ1bmN0aW9ucy9sYW1iZGFzIGRlZmluZWQgb24gZGlmZmVyZW50IGxpbmVzLgorICAgICovCiAgICAgdW5zaWduZWQgY2hhciAqY29fY2VsbDJhcmc7IC8qIE1hcHMgY2VsbCB2YXJzIHdoaWNoIGFyZSBhcmd1bWVudHMuICovCiAgICAgUHlPYmplY3QgKmNvX2ZpbGVuYW1lOwkvKiB1bmljb2RlICh3aGVyZSBpdCB3YXMgbG9hZGVkIGZyb20pICovCiAgICAgUHlPYmplY3QgKmNvX25hbWU7CQkvKiB1bmljb2RlIChuYW1lLCBmb3IgcmVmZXJlbmNlKSAqLwpAQCAtNDYsNiArNTEsMTEgQEAKICovCiAjZGVmaW5lIENPX05PRlJFRSAgICAgICAweDAwNDAKIAorLyogVGhlIENPX0NPUk9VVElORSBmbGFnIGlzIHNldCBmb3IgY29yb3V0aW5lIGZ1bmN0aW9ucyAoZGVmaW5lZCB3aXRoCisgICBgYGFzeW5jIGRlZmBgIGtleXdvcmRzKSAqLworI2RlZmluZSBDT19DT1JPVVRJTkUgICAgICAgICAgICAweDAwODAKKyNkZWZpbmUgQ09fSVRFUkFCTEVfQ09ST1VUSU5FICAgMHgwMTAwCisKIC8qIFRoZXNlIGFyZSBubyBsb25nZXIgdXNlZC4gKi8KICNpZiAwCiAjZGVmaW5lIENPX0dFTkVSQVRPUl9BTExPV0VEICAgIDB4MTAwMApAQCAtNTcsNiArNjcsNyBAQAogI2RlZmluZSBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyAweDIwMDAwCiAKICNkZWZpbmUgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgIDB4NDAwMDAKKyNkZWZpbmUgQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QICAweDgwMDAwCiAKIC8qIFRoaXMgdmFsdWUgaXMgZm91bmQgaW4gdGhlIGNvX2NlbGwyYXJnIGFycmF5IHdoZW4gdGhlIGFzc29jaWF0ZWQgY2VsbAogICAgdmFyaWFibGUgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbiBhcmd1bWVudC4gVGhlIG1heGltdW0gbnVtYmVyIG9mCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvZGVjcy5oIGIvSW5jbHVkZS9jb2RlY3MuaAppbmRleCBiMzA4OGU0Li45ZTRmMzA1IDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGVjcy5oCisrKyBiL0luY2x1ZGUvY29kZWNzLmgKQEAgLTcxLDcgKzcxLDcgQEAKICAgIG9iamVjdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGUgZW5jb2RlciBmdW5jdGlvbiBmb3VuZCBmb3IgdGhlIGdpdmVuCiAgICBlbmNvZGluZyB1c2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgbWV0aG9kIGRlZmluZWQgYnkgZXJyb3JzLiBlcnJvcnMKICAgIG1heSBiZSBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBtZXRob2QgZGVmaW5lZCBmb3IgdGhlIGNvZGVjLgotICAgCisKICAgIFJhaXNlcyBhIExvb2t1cEVycm9yIGluIGNhc2Ugbm8gZW5jb2RlciBjYW4gYmUgZm91bmQuCiAKICAqLwpAQCAtODcsNyArODcsNyBAQAogICAgb2JqZWN0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZSBkZWNvZGVyIGZ1bmN0aW9uIGZvdW5kIGZvciB0aGUgZ2l2ZW4KICAgIGVuY29kaW5nIHVzaW5nIHRoZSBlcnJvciBoYW5kbGluZyBtZXRob2QgZGVmaW5lZCBieSBlcnJvcnMuIGVycm9ycwogICAgbWF5IGJlIE5VTEwgdG8gdXNlIHRoZSBkZWZhdWx0IG1ldGhvZCBkZWZpbmVkIGZvciB0aGUgY29kZWMuCi0gICAKKwogICAgUmFpc2VzIGEgTG9va3VwRXJyb3IgaW4gY2FzZSBubyBlbmNvZGVyIGNhbiBiZSBmb3VuZC4KIAogICovCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAogCiAKLS8qIC0tLSBDb2RlYyBMb29rdXAgQVBJcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKy8qIC0tLSBDb2RlYyBMb29rdXAgQVBJcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICBBbGwgQVBJcyByZXR1cm4gYSBjb2RlYyBvYmplY3Qgd2l0aCBpbmNyZW1lbnRlZCByZWZjb3VudCBhbmQgYXJlCiAgICBiYXNlZCBvbiBfUHlDb2RlY19Mb29rdXAoKS4gIFRoZSBzYW1lIGNvbW1lbnRzIHcvciB0byB0aGUgZW5jb2RpbmcKQEAgLTIyNSw2ICsyMjUsOSBAQAogLyogcmVwbGFjZSB0aGUgdW5pY29kZSBlbmNvZGUgZXJyb3Igd2l0aCBiYWNrc2xhc2ggZXNjYXBlcyAoXHgsIFx1IGFuZCBcVSkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpOwogCisvKiByZXBsYWNlIHRoZSB1bmljb2RlIGVuY29kZSBlcnJvciB3aXRoIGJhY2tzbGFzaCBlc2NhcGVzIChcTiwgXHgsIFx1IGFuZCBcVSkgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb2RlY19OYW1lUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKTsKKwogUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X2hleGRpZ2l0czsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBpbGUuaCBiL0luY2x1ZGUvY29tcGlsZS5oCmluZGV4IGM2NjUwZDcuLmVjZDhkYzEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGlsZS5oCisrKyBiL0luY2x1ZGUvY29tcGlsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEZVVFVSRV9QUklOVF9GVU5DVElPTiAicHJpbnRfZnVuY3Rpb24iCiAjZGVmaW5lIEZVVFVSRV9VTklDT0RFX0xJVEVSQUxTICJ1bmljb2RlX2xpdGVyYWxzIgogI2RlZmluZSBGVVRVUkVfQkFSUllfQVNfQkRGTCAiYmFycnlfYXNfRkxVRkwiCisjZGVmaW5lIEZVVFVSRV9HRU5FUkFUT1JfU1RPUCAiZ2VuZXJhdG9yX3N0b3AiCiAKIHN0cnVjdCBfbW9kOyAvKiBEZWNsYXJlIHRoZSBleGlzdGVuY2Ugb2YgdGhpcyB0eXBlICovCiAjZGVmaW5lIFB5QVNUX0NvbXBpbGUobW9kLCBzLCBmLCBhcikgUHlBU1RfQ29tcGlsZUV4KG1vZCwgcywgZiwgLTEsIGFyKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAppbmRleCAxOTM0ZjNiLi5jYjhjNTJjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaAorKysgYi9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaApAQCAtMTQsMjEgKzE0LDEzIEBACiAKIC8qIE9wZXJhdGlvbnMgb24gY29tcGxleCBudW1iZXJzIGZyb20gY29tcGxleG1vZHVsZS5jICovCiAKLSNkZWZpbmUgY19zdW0gX1B5X2Nfc3VtCi0jZGVmaW5lIGNfZGlmZiBfUHlfY19kaWZmCi0jZGVmaW5lIGNfbmVnIF9QeV9jX25lZwotI2RlZmluZSBjX3Byb2QgX1B5X2NfcHJvZAotI2RlZmluZSBjX3F1b3QgX1B5X2NfcXVvdAotI2RlZmluZSBjX3BvdyBfUHlfY19wb3cKLSNkZWZpbmUgY19hYnMgX1B5X2NfYWJzCi0KLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19zdW0oUHlfY29tcGxleCwgUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfZGlmZihQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19uZWcoUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfcHJvZChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19xdW90KFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX3BvdyhQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoZG91YmxlKSBjX2FicyhQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2Nfc3VtKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19kaWZmKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19uZWcoUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3Byb2QoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3F1b3QoUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3BvdyhQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlfY19hYnMoUHlfY29tcGxleCk7CiAjZW5kaWYKIAogLyogQ29tcGxleCBvYmplY3QgaW50ZXJmYWNlICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvZGljdG9iamVjdC5oCmluZGV4IGVmMTIyYmQuLjMyMGY5ZWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGljdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGljdG9iamVjdC5oCkBAIC0yNyw2ICsyNywxMSBAQAogICAgIFB5T2JqZWN0ICoqbWFfdmFsdWVzOwogfSBQeURpY3RPYmplY3Q7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlEaWN0T2JqZWN0ICpkdl9kaWN0OworfSBfUHlEaWN0Vmlld09iamVjdDsKKwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RfVHlwZTsKQEAgLTQwLDkgKzQ1LDkgQEAKICNkZWZpbmUgUHlEaWN0X0NoZWNrKG9wKSBcCiAgICAgICAgICAgICAgICAgIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfRElDVF9TVUJDTEFTUykKICNkZWZpbmUgUHlEaWN0X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0X1R5cGUpCi0jZGVmaW5lIFB5RGljdEtleXNfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0S2V5c19UeXBlKQotI2RlZmluZSBQeURpY3RJdGVtc19DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeURpY3RJdGVtc19UeXBlKQotI2RlZmluZSBQeURpY3RWYWx1ZXNfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0VmFsdWVzX1R5cGUpCisjZGVmaW5lIFB5RGljdEtleXNfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5RGljdEtleXNfVHlwZSkKKyNkZWZpbmUgUHlEaWN0SXRlbXNfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5RGljdEl0ZW1zX1R5cGUpCisjZGVmaW5lIFB5RGljdFZhbHVlc19DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlEaWN0VmFsdWVzX1R5cGUpCiAvKiBUaGlzIGV4Y2x1ZGVzIFZhbHVlcywgc2luY2UgdGhleSBhcmUgbm90IHNldHMuICovCiAjIGRlZmluZSBQeURpY3RWaWV3U2V0X0NoZWNrKG9wKSBcCiAgICAgKFB5RGljdEtleXNfQ2hlY2sob3ApIHx8IFB5RGljdEl0ZW1zX0NoZWNrKG9wKSkKQEAgLTUwLDYgKzU1LDEwIEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X05ldyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCk7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CkBAIC01OCw2ICs2NywxMCBAQAogICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogI2VuZGlmCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKGludCkgX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSwgUHlfaGFzaF90IGhhc2gpOworI2VuZGlmCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X05leHQoCkBAIC02Nyw2ICs4MCw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSwgUHlfaGFzaF90ICpoYXNoKTsKK1B5T2JqZWN0ICpfUHlEaWN0Vmlld19OZXcoUHlPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9LZXlzKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9WYWx1ZXMoUHlPYmplY3QgKm1wKTsKQEAgLTgwLDYgKzk0LDkgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9NYXliZVVudHJhY2soUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICptcCk7CiBQeV9zc2l6ZV90IF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CitQeU9iamVjdCAqX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICopOworUHlPYmplY3QgKl9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5T2JqZWN0ICpfUHlEaWN0X0Zyb21LZXlzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogI2RlZmluZSBfUHlEaWN0X0hhc1NwbGl0VGFibGUoZCkgKChkKS0+bWFfdmFsdWVzICE9IE5VTEwpCiAKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKQEAgLTk3LDYgKzExNCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb3RoZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpOworI2VuZGlmCisKIC8qIFB5RGljdF9NZXJnZUZyb21TZXEyIHVwZGF0ZXMvbWVyZ2VzIGZyb20gYW4gaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZwogICAgaXRlcmFibGUgb2JqZWN0cyBvZiBsZW5ndGggMi4gIElmIG92ZXJyaWRlIGlzIHRydWUsIHRoZSBsYXN0IG9jY3VycmVuY2UKICAgIG9mIGEga2V5IHdpbnMsIGVsc2UgdGhlIGZpcnN0LiAgVGhlIFB5dGhvbiBkaWN0IGNvbnN0cnVjdG9yIGRpY3Qoc2VxMikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZW9iamVjdC5oIGIvSW5jbHVkZS9maWxlb2JqZWN0LmgKaW5kZXggMDkzOTc0NC4uMDMxNTVkMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9maWxlb2JqZWN0LmgKQEAgLTMyLDE3ICszMiw2IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RmlsZV9OZXdTdGRQcmludGVyKGludCk7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTdGRQcmludGVyX1R5cGU7Ci0KLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKLS8qIEEgcm91dGluZSB0byBjaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvbiBXaW5kb3dzLiAgUmV0dXJucyAwCi0gKiBhbmQgc2V0cyBlcnJubyB0byBFQkFERiBpZiBpdCBpc24ndC4gIFRoaXMgaXMgdG8gYXZvaWQgQXNzZXJ0aW9ucwotICogZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgV2luZG93cyBDUlQgYmVnaW5uaW5nIHdpdGgKLSAqIFZpc3VhbCBTdHVkaW8gMjAwNQotICovCi1pbnQgX1B5VmVyaWZ5X2ZkKGludCBmZCk7Ci0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCi0jZW5kaWYKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgY2FuIGJlIHNlbGVjdCgpLWVkLiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggZTliYWQ4MC4uYjRhNjgzYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC03LDMwICs3LDU5IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOwogCi1QeUFQSV9GVU5DKHdjaGFyX3QgKikgX1B5X2NoYXIyd2NoYXIoCitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfRGVjb2RlTG9jYWxlKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwogCi1QeUFQSV9GVU5DKGNoYXIqKSBfUHlfd2NoYXIyY2hhcigKK1B5QVBJX0ZVTkMoY2hhciopIFB5X0VuY29kZUxvY2FsZSgKICAgICBjb25zdCB3Y2hhcl90ICp0ZXh0LAogICAgIHNpemVfdCAqZXJyb3JfcG9zKTsKIAotI2lmIGRlZmluZWQoSEFWRV9TVEFUKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQotUHlBUElfRlVOQyhpbnQpIF9QeV93c3RhdCgKLSAgICBjb25zdCB3Y2hhcl90KiBwYXRoLAotICAgIHN0cnVjdCBzdGF0ICpidWYpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisjaWZkZWYgTVNfV0lORE9XUworc3RydWN0IF9QeV9zdGF0X3N0cnVjdCB7CisgICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7CisgICAgX19pbnQ2NCBzdF9pbm87CisgICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKKyAgICBpbnQgc3Rfbmxpbms7CisgICAgaW50IHN0X3VpZDsKKyAgICBpbnQgc3RfZ2lkOworICAgIHVuc2lnbmVkIGxvbmcgc3RfcmRldjsKKyAgICBfX2ludDY0IHN0X3NpemU7CisgICAgdGltZV90IHN0X2F0aW1lOworICAgIGludCBzdF9hdGltZV9uc2VjOworICAgIHRpbWVfdCBzdF9tdGltZTsKKyAgICBpbnQgc3RfbXRpbWVfbnNlYzsKKyAgICB0aW1lX3Qgc3RfY3RpbWU7CisgICAgaW50IHN0X2N0aW1lX25zZWM7CisgICAgdW5zaWduZWQgbG9uZyBzdF9maWxlX2F0dHJpYnV0ZXM7Cit9OworI2Vsc2UKKyMgIGRlZmluZSBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdAogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1NUQVQKK1B5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXQoCisgICAgaW50IGZkLAorICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnN0YXR1cyk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXRfbm9yYWlzZSgKKyAgICBpbnQgZmQsCisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKTsKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc3RhdCgKICAgICBQeU9iamVjdCAqcGF0aCwKLSAgICBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1Zik7Ci0jZW5kaWYKKyAgICBzdHJ1Y3Qgc3RhdCAqc3RhdHVzKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeV9vcGVuKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlfb3Blbl9ub3JhaXNlKAorICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAorICAgIGludCBmbGFncyk7CiAjZW5kaWYKIAogUHlBUElfRlVOQyhGSUxFICopIF9QeV93Zm9wZW4oCkBAIC00NSw2ICs3NCwyMSBAQAogICAgIFB5T2JqZWN0ICpwYXRoLAogICAgIGNvbnN0IGNoYXIgKm1vZGUpOwogCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9yZWFkKAorICAgIGludCBmZCwKKyAgICB2b2lkICpidWYsCisgICAgc2l6ZV90IGNvdW50KTsKKworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfd3JpdGUoCisgICAgaW50IGZkLAorICAgIGNvbnN0IHZvaWQgKmJ1ZiwKKyAgICBzaXplX3QgY291bnQpOworCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV93cml0ZV9ub3JhaXNlKAorICAgIGludCBmZCwKKyAgICBjb25zdCB2b2lkICpidWYsCisgICAgc2l6ZV90IGNvdW50KTsKKwogI2lmZGVmIEhBVkVfUkVBRExJTksKIFB5QVBJX0ZVTkMoaW50KSBfUHlfd3JlYWRsaW5rKAogICAgIGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC03MCw4ICsxMTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MpOwogCiBQeUFQSV9GVU5DKGludCkgX1B5X2R1cChpbnQgZmQpOworCisjaWZuZGVmIE1TX1dJTkRPV1MKK1B5QVBJX0ZVTkMoaW50KSBfUHlfZ2V0X2Jsb2NraW5nKGludCBmZCk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKTsKKyNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisKKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCisvKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAorICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKKyAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCisgKiBWaXN1YWwgU3R1ZGlvIDIwMDUKKyAqLworaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOworCisjZWxzZQorI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCiAjZW5kaWYKIAorI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ2Vub2JqZWN0LmggYi9JbmNsdWRlL2dlbm9iamVjdC5oCmluZGV4IDY1ZjFlY2YuLjRjNzE4NjEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ2Vub2JqZWN0LmgKKysrIGIvSW5jbHVkZS9nZW5vYmplY3QuaApAQCAtMTAsMjEgKzEwLDI2IEBACiAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCiAKKy8qIF9QeUdlbk9iamVjdF9IRUFEIGRlZmluZXMgdGhlIGluaXRpYWwgc2VnbWVudCBvZiBnZW5lcmF0b3IKKyAgIGFuZCBjb3JvdXRpbmUgb2JqZWN0cy4gKi8KKyNkZWZpbmUgX1B5R2VuT2JqZWN0X0hFQUQocHJlZml4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3RfSEVBRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIE5vdGU6IGdpX2ZyYW1lIGNhbiBiZSBOVUxMIGlmIHRoZSBnZW5lcmF0b3IgaXMgImZpbmlzaGVkIiAqLyAgICAgICAgIFwKKyAgICBzdHJ1Y3QgX2ZyYW1lICpwcmVmaXgjI19mcmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogVHJ1ZSBpZiBnZW5lcmF0b3IgaXMgYmVpbmcgZXhlY3V0ZWQuICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNoYXIgcHJlZml4IyNfcnVubmluZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBUaGUgY29kZSBvYmplY3QgYmFja2luZyB0aGUgZ2VuZXJhdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX2NvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfd2Vha3JlZmxpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogTmFtZSBvZiB0aGUgZ2VuZXJhdG9yLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19uYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBRdWFsaWZpZWQgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3F1YWxuYW1lOworCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAogICAgIC8qIFRoZSBnaV8gcHJlZml4IGlzIGludGVuZGVkIHRvIHJlbWluZCBvZiBnZW5lcmF0b3ItaXRlcmF0b3IuICovCi0KLSAgICAvKiBOb3RlOiBnaV9mcmFtZSBjYW4gYmUgTlVMTCBpZiB0aGUgZ2VuZXJhdG9yIGlzICJmaW5pc2hlZCIgKi8KLSAgICBzdHJ1Y3QgX2ZyYW1lICpnaV9mcmFtZTsKLQotICAgIC8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLwotICAgIGNoYXIgZ2lfcnVubmluZzsKLQotICAgIC8qIFRoZSBjb2RlIG9iamVjdCBiYWNraW5nIHRoZSBnZW5lcmF0b3IgKi8KLSAgICBQeU9iamVjdCAqZ2lfY29kZTsKLQotICAgIC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2UuICovCi0gICAgUHlPYmplY3QgKmdpX3dlYWtyZWZsaXN0OworICAgIF9QeUdlbk9iamVjdF9IRUFEKGdpKQogfSBQeUdlbk9iamVjdDsKIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5R2VuX1R5cGU7CkBAIC0zMywxMSArMzgsMjggQEAKICNkZWZpbmUgUHlHZW5fQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeUdlbl9UeXBlKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5R2VuX05ldyhzdHJ1Y3QgX2ZyYW1lICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoc3RydWN0IF9mcmFtZSAqLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOwogUHlBUElfRlVOQyhpbnQpIFB5R2VuX05lZWRzRmluYWxpemluZyhQeUdlbk9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKiopOwogUHlPYmplY3QgKl9QeUdlbl9TZW5kKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHZW5fRmluYWxpemUoUHlPYmplY3QgKnNlbGYpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCB7CisgICAgX1B5R2VuT2JqZWN0X0hFQUQoY3IpCit9IFB5Q29yb09iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5Q29yb19UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeUNvcm9XcmFwcGVyX1R5cGU7CisKKyNkZWZpbmUgUHlDb3JvX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlDb3JvX1R5cGUpCitQeU9iamVjdCAqX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKFB5T2JqZWN0ICpvKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb3JvX05ldyhzdHJ1Y3QgX2ZyYW1lICosCisgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSk7CisjZW5kaWYKKworI3VuZGVmIF9QeUdlbk9iamVjdF9IRUFECiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtaW5pdC5oIGIvSW5jbHVkZS9ncmFtaW5pdC5oCmluZGV4IDNlYzk0OWEuLmQwMzBiYzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbWluaXQuaAorKysgYi9JbmNsdWRlL2dyYW1pbml0LmgKQEAgLTYsNzkgKzYsODIgQEAKICNkZWZpbmUgZGVjb3JhdG9yIDI1OQogI2RlZmluZSBkZWNvcmF0b3JzIDI2MAogI2RlZmluZSBkZWNvcmF0ZWQgMjYxCi0jZGVmaW5lIGZ1bmNkZWYgMjYyCi0jZGVmaW5lIHBhcmFtZXRlcnMgMjYzCi0jZGVmaW5lIHR5cGVkYXJnc2xpc3QgMjY0Ci0jZGVmaW5lIHRmcGRlZiAyNjUKLSNkZWZpbmUgdmFyYXJnc2xpc3QgMjY2Ci0jZGVmaW5lIHZmcGRlZiAyNjcKLSNkZWZpbmUgc3RtdCAyNjgKLSNkZWZpbmUgc2ltcGxlX3N0bXQgMjY5Ci0jZGVmaW5lIHNtYWxsX3N0bXQgMjcwCi0jZGVmaW5lIGV4cHJfc3RtdCAyNzEKLSNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3MgotI2RlZmluZSBhdWdhc3NpZ24gMjczCi0jZGVmaW5lIGRlbF9zdG10IDI3NAotI2RlZmluZSBwYXNzX3N0bXQgMjc1Ci0jZGVmaW5lIGZsb3dfc3RtdCAyNzYKLSNkZWZpbmUgYnJlYWtfc3RtdCAyNzcKLSNkZWZpbmUgY29udGludWVfc3RtdCAyNzgKLSNkZWZpbmUgcmV0dXJuX3N0bXQgMjc5Ci0jZGVmaW5lIHlpZWxkX3N0bXQgMjgwCi0jZGVmaW5lIHJhaXNlX3N0bXQgMjgxCi0jZGVmaW5lIGltcG9ydF9zdG10IDI4MgotI2RlZmluZSBpbXBvcnRfbmFtZSAyODMKLSNkZWZpbmUgaW1wb3J0X2Zyb20gMjg0Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NQotI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODYKLSNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4NwotI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjg4Ci0jZGVmaW5lIGRvdHRlZF9uYW1lIDI4OQotI2RlZmluZSBnbG9iYWxfc3RtdCAyOTAKLSNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTEKLSNkZWZpbmUgYXNzZXJ0X3N0bXQgMjkyCi0jZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjkzCi0jZGVmaW5lIGlmX3N0bXQgMjk0Ci0jZGVmaW5lIHdoaWxlX3N0bXQgMjk1Ci0jZGVmaW5lIGZvcl9zdG10IDI5NgotI2RlZmluZSB0cnlfc3RtdCAyOTcKLSNkZWZpbmUgd2l0aF9zdG10IDI5OAotI2RlZmluZSB3aXRoX2l0ZW0gMjk5Ci0jZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAwCi0jZGVmaW5lIHN1aXRlIDMwMQotI2RlZmluZSB0ZXN0IDMwMgotI2RlZmluZSB0ZXN0X25vY29uZCAzMDMKLSNkZWZpbmUgbGFtYmRlZiAzMDQKLSNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA1Ci0jZGVmaW5lIG9yX3Rlc3QgMzA2Ci0jZGVmaW5lIGFuZF90ZXN0IDMwNwotI2RlZmluZSBub3RfdGVzdCAzMDgKLSNkZWZpbmUgY29tcGFyaXNvbiAzMDkKLSNkZWZpbmUgY29tcF9vcCAzMTAKLSNkZWZpbmUgc3Rhcl9leHByIDMxMQotI2RlZmluZSBleHByIDMxMgotI2RlZmluZSB4b3JfZXhwciAzMTMKLSNkZWZpbmUgYW5kX2V4cHIgMzE0Ci0jZGVmaW5lIHNoaWZ0X2V4cHIgMzE1Ci0jZGVmaW5lIGFyaXRoX2V4cHIgMzE2Ci0jZGVmaW5lIHRlcm0gMzE3Ci0jZGVmaW5lIGZhY3RvciAzMTgKLSNkZWZpbmUgcG93ZXIgMzE5Ci0jZGVmaW5lIGF0b20gMzIwCi0jZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzIxCi0jZGVmaW5lIHRyYWlsZXIgMzIyCi0jZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzIzCi0jZGVmaW5lIHN1YnNjcmlwdCAzMjQKLSNkZWZpbmUgc2xpY2VvcCAzMjUKLSNkZWZpbmUgZXhwcmxpc3QgMzI2Ci0jZGVmaW5lIHRlc3RsaXN0IDMyNwotI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMjgKLSNkZWZpbmUgY2xhc3NkZWYgMzI5Ci0jZGVmaW5lIGFyZ2xpc3QgMzMwCi0jZGVmaW5lIGFyZ3VtZW50IDMzMQotI2RlZmluZSBjb21wX2l0ZXIgMzMyCi0jZGVmaW5lIGNvbXBfZm9yIDMzMwotI2RlZmluZSBjb21wX2lmIDMzNAotI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzNQotI2RlZmluZSB5aWVsZF9leHByIDMzNgotI2RlZmluZSB5aWVsZF9hcmcgMzM3CisjZGVmaW5lIGFzeW5jX2Z1bmNkZWYgMjYyCisjZGVmaW5lIGZ1bmNkZWYgMjYzCisjZGVmaW5lIHBhcmFtZXRlcnMgMjY0CisjZGVmaW5lIHR5cGVkYXJnc2xpc3QgMjY1CisjZGVmaW5lIHRmcGRlZiAyNjYKKyNkZWZpbmUgdmFyYXJnc2xpc3QgMjY3CisjZGVmaW5lIHZmcGRlZiAyNjgKKyNkZWZpbmUgc3RtdCAyNjkKKyNkZWZpbmUgc2ltcGxlX3N0bXQgMjcwCisjZGVmaW5lIHNtYWxsX3N0bXQgMjcxCisjZGVmaW5lIGV4cHJfc3RtdCAyNzIKKyNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3MworI2RlZmluZSBhdWdhc3NpZ24gMjc0CisjZGVmaW5lIGRlbF9zdG10IDI3NQorI2RlZmluZSBwYXNzX3N0bXQgMjc2CisjZGVmaW5lIGZsb3dfc3RtdCAyNzcKKyNkZWZpbmUgYnJlYWtfc3RtdCAyNzgKKyNkZWZpbmUgY29udGludWVfc3RtdCAyNzkKKyNkZWZpbmUgcmV0dXJuX3N0bXQgMjgwCisjZGVmaW5lIHlpZWxkX3N0bXQgMjgxCisjZGVmaW5lIHJhaXNlX3N0bXQgMjgyCisjZGVmaW5lIGltcG9ydF9zdG10IDI4MworI2RlZmluZSBpbXBvcnRfbmFtZSAyODQKKyNkZWZpbmUgaW1wb3J0X2Zyb20gMjg1CisjZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NgorI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODcKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OAorI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjg5CisjZGVmaW5lIGRvdHRlZF9uYW1lIDI5MAorI2RlZmluZSBnbG9iYWxfc3RtdCAyOTEKKyNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTIKKyNkZWZpbmUgYXNzZXJ0X3N0bXQgMjkzCisjZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk0CisjZGVmaW5lIGFzeW5jX3N0bXQgMjk1CisjZGVmaW5lIGlmX3N0bXQgMjk2CisjZGVmaW5lIHdoaWxlX3N0bXQgMjk3CisjZGVmaW5lIGZvcl9zdG10IDI5OAorI2RlZmluZSB0cnlfc3RtdCAyOTkKKyNkZWZpbmUgd2l0aF9zdG10IDMwMAorI2RlZmluZSB3aXRoX2l0ZW0gMzAxCisjZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAyCisjZGVmaW5lIHN1aXRlIDMwMworI2RlZmluZSB0ZXN0IDMwNAorI2RlZmluZSB0ZXN0X25vY29uZCAzMDUKKyNkZWZpbmUgbGFtYmRlZiAzMDYKKyNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA3CisjZGVmaW5lIG9yX3Rlc3QgMzA4CisjZGVmaW5lIGFuZF90ZXN0IDMwOQorI2RlZmluZSBub3RfdGVzdCAzMTAKKyNkZWZpbmUgY29tcGFyaXNvbiAzMTEKKyNkZWZpbmUgY29tcF9vcCAzMTIKKyNkZWZpbmUgc3Rhcl9leHByIDMxMworI2RlZmluZSBleHByIDMxNAorI2RlZmluZSB4b3JfZXhwciAzMTUKKyNkZWZpbmUgYW5kX2V4cHIgMzE2CisjZGVmaW5lIHNoaWZ0X2V4cHIgMzE3CisjZGVmaW5lIGFyaXRoX2V4cHIgMzE4CisjZGVmaW5lIHRlcm0gMzE5CisjZGVmaW5lIGZhY3RvciAzMjAKKyNkZWZpbmUgcG93ZXIgMzIxCisjZGVmaW5lIGF0b21fZXhwciAzMjIKKyNkZWZpbmUgYXRvbSAzMjMKKyNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjQKKyNkZWZpbmUgdHJhaWxlciAzMjUKKyNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjYKKyNkZWZpbmUgc3Vic2NyaXB0IDMyNworI2RlZmluZSBzbGljZW9wIDMyOAorI2RlZmluZSBleHBybGlzdCAzMjkKKyNkZWZpbmUgdGVzdGxpc3QgMzMwCisjZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMQorI2RlZmluZSBjbGFzc2RlZiAzMzIKKyNkZWZpbmUgYXJnbGlzdCAzMzMKKyNkZWZpbmUgYXJndW1lbnQgMzM0CisjZGVmaW5lIGNvbXBfaXRlciAzMzUKKyNkZWZpbmUgY29tcF9mb3IgMzM2CisjZGVmaW5lIGNvbXBfaWYgMzM3CisjZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM4CisjZGVmaW5lIHlpZWxkX2V4cHIgMzM5CisjZGVmaW5lIHlpZWxkX2FyZyAzNDAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbW1hci5oIGIvSW5jbHVkZS9ncmFtbWFyLmgKaW5kZXggYmE3ZDE5ZC4uODUxMjBiOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtbWFyLmgKKysrIGIvSW5jbHVkZS9ncmFtbWFyLmgKQEAgLTM3LDcgKzM3LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQJCSBzX25hcmNzOwogICAgIGFyYwkJKnNfYXJjOwkJLyogQXJyYXkgb2YgYXJjcyAqLwotCQorCiAgICAgLyogT3B0aW9uYWwgYWNjZWxlcmF0b3JzICovCiAgICAgaW50CQkgc19sb3dlcjsJLyogTG93ZXN0IGxhYmVsIGluZGV4ICovCiAgICAgaW50CQkgc191cHBlcjsJLyogSGlnaGVzdCBsYWJlbCBpbmRleCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9saXN0b2JqZWN0LmggYi9JbmNsdWRlL2xpc3RvYmplY3QuaAppbmRleCA3NGNmNDZmLi5kYWE1MTNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xpc3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2xpc3RvYmplY3QuaApAQCAtNzIsNiArNzIsNyBAQAogI2RlZmluZSBQeUxpc3RfR0VUX0lURU0ob3AsIGkpICgoKFB5TGlzdE9iamVjdCAqKShvcCkpLT5vYl9pdGVtW2ldKQogI2RlZmluZSBQeUxpc3RfU0VUX0lURU0ob3AsIGksIHYpICgoKFB5TGlzdE9iamVjdCAqKShvcCkpLT5vYl9pdGVtW2ldID0gKHYpKQogI2RlZmluZSBQeUxpc3RfR0VUX1NJWkUob3ApICAgIFB5X1NJWkUob3ApCisjZGVmaW5lIF9QeUxpc3RfSVRFTVMob3ApICAgICAgKCgoUHlMaXN0T2JqZWN0ICopKG9wKSktPm9iX2l0ZW0pCiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IGZmNDMzMDkuLmFlZDU5Y2UgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC0xOTgsNiArMTk4LDkgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgUHlPU19zdHJ0b3VsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIFB5QVBJX0ZVTkMobG9uZykgUHlPU19zdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogCisvKiBGb3IgdXNlIGJ5IHRoZSBnY2QgZnVuY3Rpb24gaW4gbWF0aG1vZHVsZS5jICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfR0NEKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKaW5kZXggMzgyY2E5Mi4uYWI1ZWUwOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAorKysgYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCkBAIC00NSw5ICs0NSw2IEBACiB9IF9QeU1hbmFnZWRCdWZmZXJPYmplY3Q7CiAKIAotLyogZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiAzLjUgKi8KLSNkZWZpbmUgX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVCAzIC8qIG11c3QgYmUgPj0gMyAqLwotCiAvKiBtZW1vcnl2aWV3IHN0YXRlIGZsYWdzICovCiAjZGVmaW5lIF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEICAgIDB4MDAxICAvKiBhY2Nlc3MgdG8gbWFzdGVyIGJ1ZmZlciBibG9ja2VkICovCiAjZGVmaW5lIF9QeV9NRU1PUllWSUVXX0MgICAgICAgICAgIDB4MDAyICAvKiBDLWNvbnRpZ3VvdXMgbGF5b3V0ICovCkBAIC02Miw3ICs1OSw2IEBACiAgICAgaW50IGZsYWdzOyAgICAgICAgICAgICAgICAgICAgLyogc3RhdGUgZmxhZ3MgKi8KICAgICBQeV9zc2l6ZV90IGV4cG9ydHM7ICAgICAgICAgICAvKiBudW1iZXIgb2YgYnVmZmVyIHJlLWV4cG9ydHMgKi8KICAgICBQeV9idWZmZXIgdmlldzsgICAgICAgICAgICAgICAvKiBwcml2YXRlIGNvcHkgb2YgdGhlIGV4cG9ydGVyJ3MgdmlldyAqLwotICAgIGNoYXIgZm9ybWF0W19QeV9NRU1PUllWSUVXX01BWF9GT1JNQVRdOyAvKiBkZXByZWNhdGVkLCByZW1vdmVkIGluIDMuNSAqLwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKICAgICBQeV9zc2l6ZV90IG9iX2FycmF5WzFdOyAgICAgICAvKiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyAqLwogfSBQeU1lbW9yeVZpZXdPYmplY3Q7CmRpZmYgLS1naXQgYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaAppbmRleCAzY2MyZWE5Li5lMmFkODA0IDEwMDY0NAotLS0gYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAKIHR5cGVkZWYgc3RydWN0IFB5TWV0aG9kRGVmIFB5TWV0aG9kRGVmOwogCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX05ldyhNTCwgU0VMRikgUHlDRnVuY3Rpb25fTmV3RXgoKE1MKSwgKFNFTEYpLCBOVUxMKQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9OZXdFeChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqLCAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fTmV3RXgoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7CiAKIC8qIEZsYWcgcGFzc2VkIHRvIG5ld21ldGhvZG9iamVjdCAqLwpAQCAtNjYsNyArNjYsNyBAQAogCiAvKiBNRVRIX0NPRVhJU1QgYWxsb3dzIGEgbWV0aG9kIHRvIGJlIGVudGVyZWQgZXZlbiB0aG91Z2ggYSBzbG90IGhhcwogICAgYWxyZWFkeSBmaWxsZWQgdGhlIGVudHJ5LiAgV2hlbiBkZWZpbmVkLCB0aGUgZmxhZyBhbGxvd3MgYSBzZXBhcmF0ZQotICAgbWV0aG9kLCAiX19jb250YWluc19fIiBmb3IgZXhhbXBsZSwgdG8gY29leGlzdCB3aXRoIGEgZGVmaW5lZCAKKyAgIG1ldGhvZCwgIl9fY29udGFpbnNfXyIgZm9yIGV4YW1wbGUsIHRvIGNvZXhpc3Qgd2l0aCBhIGRlZmluZWQKICAgIHNsb3QgbGlrZSBzcV9jb250YWlucy4gKi8KIAogI2RlZmluZSBNRVRIX0NPRVhJU1QgICAweDAwNDAKQEAgLTc3LDYgKzc3LDcgQEAKICAgICBQeU1ldGhvZERlZiAqbV9tbDsgLyogRGVzY3JpcHRpb24gb2YgdGhlIEMgZnVuY3Rpb24gdG8gY2FsbCAqLwogICAgIFB5T2JqZWN0ICAgICptX3NlbGY7IC8qIFBhc3NlZCBhcyAnc2VsZicgYXJnIHRvIHRoZSBDIGZ1bmMsIGNhbiBiZSBOVUxMICovCiAgICAgUHlPYmplY3QgICAgKm1fbW9kdWxlOyAvKiBUaGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUsIGNhbiBiZSBhbnl0aGluZyAqLworICAgIFB5T2JqZWN0ICAgICptX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBQeUNGdW5jdGlvbk9iamVjdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHN1cHBvcnQuaCBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCmluZGV4IDVkZTA0NTguLjgyOWFhZjggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oCisrKyBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCkBAIC0xMiwxMyArMTIsMTMgQEAKIC8qIElmIFBZX1NTSVpFX1RfQ0xFQU4gaXMgZGVmaW5lZCwgZWFjaCBmdW5jdGlvbnMgdHJlYXRzICMtc3BlY2lmaWVyCiAgICB0byBtZWFuIFB5X3NzaXplX3QgKi8KICNpZmRlZiBQWV9TU0laRV9UX0NMRUFOCi0jZGVmaW5lIFB5QXJnX1BhcnNlCQkJX1B5QXJnX1BhcnNlX1NpemVUCi0jZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUJCV9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0jZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwlfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0jZGVmaW5lIFB5QXJnX1ZhUGFyc2UJCQlfUHlBcmdfVmFQYXJzZV9TaXplVAotI2RlZmluZSBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcwlfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSNkZWZpbmUgUHlfQnVpbGRWYWx1ZQkJCV9QeV9CdWlsZFZhbHVlX1NpemVUCi0jZGVmaW5lIFB5X1ZhQnVpbGRWYWx1ZQkJCV9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfUGFyc2UgICAgICAgICAgICAgICAgICAgICBfUHlBcmdfUGFyc2VfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZSAgICAgICAgICAgICAgICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgICAgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfVmFQYXJzZSAgICAgICAgICAgICAgICAgICBfUHlBcmdfVmFQYXJzZV9TaXplVAorI2RlZmluZSBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyAgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorI2RlZmluZSBQeV9CdWlsZFZhbHVlICAgICAgICAgICAgICAgICAgIF9QeV9CdWlsZFZhbHVlX1NpemVUCisjZGVmaW5lIFB5X1ZhQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAogI2Vsc2UKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIHZhX2xpc3QpOwogI2VuZGlmCkBAIC01MCw2ICs1MCwxMyBAQAogI2RlZmluZSBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBjKSBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAjYywgYykKICNkZWZpbmUgUHlNb2R1bGVfQWRkU3RyaW5nTWFjcm8obSwgYykgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgI2MsIGMpCiAKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCisvKiBOZXcgaW4gMy41ICovCitQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfU2V0RG9jU3RyaW5nKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKik7CitQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkRnVuY3Rpb25zKFB5T2JqZWN0ICosIFB5TWV0aG9kRGVmICopOworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0V4ZWNEZWYoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZik7CisjZW5kaWYKKwogI2RlZmluZSBQeV9DTEVBTlVQX1NVUFBPUlRFRCAweDIwMDAwCiAKICNkZWZpbmUgUFlUSE9OX0FQSV9WRVJTSU9OIDEwMTMKQEAgLTY3LDM1ICs3NCwzNSBAQAogICAgUGxlYXNlIGFkZCBhIGxpbmUgb3IgdHdvIHRvIHRoZSB0b3Agb2YgdGhpcyBsb2cgZm9yIGVhY2ggQVBJCiAgICB2ZXJzaW9uIGNoYW5nZToKIAotICAgMjItRmViLTIwMDYgIE12TAkxMDEzCVBFUCAzNTMgLSBsb25nIGluZGljZXMgZm9yIHNlcXVlbmNlIGxlbmd0aHMKKyAgIDIyLUZlYi0yMDA2ICBNdkwgICAgIDEwMTMgICAgUEVQIDM1MyAtIGxvbmcgaW5kaWNlcyBmb3Igc2VxdWVuY2UgbGVuZ3RocwogCi0gICAxOS1BdWctMjAwMiAgR3ZSCTEwMTIJQ2hhbmdlcyB0byBzdHJpbmcgb2JqZWN0IHN0cnVjdCBmb3IKLSAgIAkJCQlpbnRlcm5pbmcgY2hhbmdlcywgc2F2aW5nIDMgYnl0ZXMuCisgICAxOS1BdWctMjAwMiAgR3ZSICAgICAxMDEyICAgIENoYW5nZXMgdG8gc3RyaW5nIG9iamVjdCBzdHJ1Y3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmluZyBjaGFuZ2VzLCBzYXZpbmcgMyBieXRlcy4KIAotICAgMTctSnVsLTIwMDEJR3ZSCTEwMTEJRGVzY3ItYnJhbmNoLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUKKyAgIDE3LUp1bC0yMDAxICBHdlIgICAgIDEwMTEgICAgRGVzY3ItYnJhbmNoLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUKIAogICAgMjUtSmFuLTIwMDEgIEZMRCAgICAgMTAxMCAgICBQYXJhbWV0ZXJzIGFkZGVkIHRvIFB5Q29kZV9OZXcoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZV9OZXcoKTsgUHl0aG9uIDIuMWEyCiAKICAgIDE0LU1hci0yMDAwICBHdlIgICAgIDEwMDkgICAgVW5pY29kZSBBUEkgYWRkZWQKIAotICAgMy1KYW4tMTk5OQlHdlIJMTAwNwlEZWNpZGVkIHRvIGNoYW5nZSBiYWNrISAgKERvbid0IHJldXNlIDEwMDghKQorICAgMy1KYW4tMTk5OSAgIEd2UiAgICAgMTAwNyAgICBEZWNpZGVkIHRvIGNoYW5nZSBiYWNrISAgKERvbid0IHJldXNlIDEwMDghKQogCi0gICAzLURlYy0xOTk4CUd2UgkxMDA4CVB5dGhvbiAxLjUuMmIxCisgICAzLURlYy0xOTk4ICAgR3ZSICAgICAxMDA4ICAgIFB5dGhvbiAxLjUuMmIxCiAKLSAgIDE4LUphbi0xOTk3CUd2UgkxMDA3CXN0cmluZyBpbnRlcm5pbmcgYW5kIG90aGVyIHNwZWVkdXBzCisgICAxOC1KYW4tMTk5NyAgR3ZSICAgICAxMDA3ICAgIHN0cmluZyBpbnRlcm5pbmcgYW5kIG90aGVyIHNwZWVkdXBzCiAKLSAgIDExLU9jdC0xOTk2CUd2UglyZW5hbWVkIFB5X0VsbGlwc2VzIHRvIFB5X0VsbGlwc2lzIDotKAorICAgMTEtT2N0LTE5OTYgIEd2UiAgICAgcmVuYW1lZCBQeV9FbGxpcHNlcyB0byBQeV9FbGxpcHNpcyA6LSgKIAotICAgMzAtSnVsLTE5OTYJR3ZSCVNsaWNlIGFuZCBlbGxpcHNlcyBzeW50YXggYWRkZWQKKyAgIDMwLUp1bC0xOTk2ICBHdlIgICAgIFNsaWNlIGFuZCBlbGxpcHNlcyBzeW50YXggYWRkZWQKIAotICAgMjMtSnVsLTE5OTYJR3ZSCUZvciAxLjQgLS0gYmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB0aGlzIHRpbWUgOi0pCisgICAyMy1KdWwtMTk5NiAgR3ZSICAgICBGb3IgMS40IC0tIGJldHRlciBzYWZlIHRoYW4gc29ycnkgdGhpcyB0aW1lIDotKQogCi0gICA3LU5vdi0xOTk1CUd2UglLZXl3b3JkIGFyZ3VtZW50cyAoc2hvdWxkJ3ZlIGJlZW4gZG9uZSBhdCAxLjMgOi0oICkKKyAgIDctTm92LTE5OTUgICBHdlIgICAgIEtleXdvcmQgYXJndW1lbnRzIChzaG91bGQndmUgYmVlbiBkb25lIGF0IDEuMyA6LSggKQogCi0gICAxMC1KYW4tMTk5NQlHdlIJUmVuYW1lZCBnbG9iYWxzIHRvIG5ldyBuYW1pbmcgc2NoZW1lCisgICAxMC1KYW4tMTk5NSAgR3ZSICAgICBSZW5hbWVkIGdsb2JhbHMgdG8gbmV3IG5hbWluZyBzY2hlbWUKIAotICAgOS1KYW4tMTk5NQlHdlIJSW5pdGlhbCB2ZXJzaW9uIChpbmNvbXBhdGlibGUgd2l0aCBvbGRlciBBUEkpCisgICA5LUphbi0xOTk1ICAgR3ZSICAgICBJbml0aWFsIHZlcnNpb24gKGluY29tcGF0aWJsZSB3aXRoIG9sZGVyIEFQSSkKICovCiAKIC8qIFRoZSBQWVRIT05fQUJJX1ZFUlNJT04gaXMgaW50cm9kdWNlZCBpbiBQRVAgMzg0LiBGb3IgdGhlIGxpZmV0aW1lIG9mCkBAIC0xMDUsMTAgKzExMiwxMSBAQAogI2RlZmluZSBQWVRIT05fQUJJX1NUUklORyAiMyIKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKLSAvKiBXaGVuIHdlIGFyZSB0cmFjaW5nIHJlZmVyZW5jZSBjb3VudHMsIHJlbmFtZSBQeU1vZHVsZV9DcmVhdGUyIHNvCisgLyogV2hlbiB3ZSBhcmUgdHJhY2luZyByZWZlcmVuY2UgY291bnRzLCByZW5hbWUgbW9kdWxlIGNyZWF0aW9uIGZ1bmN0aW9ucyBzbwogICAgIG1vZHVsZXMgY29tcGlsZWQgd2l0aCBpbmNvbXBhdGlibGUgc2V0dGluZ3Mgd2lsbCBnZW5lcmF0ZSBhCiAgICAgbGluay10aW1lIGVycm9yLiAqLwogICNkZWZpbmUgUHlNb2R1bGVfQ3JlYXRlMiBQeU1vZHVsZV9DcmVhdGUyVHJhY2VSZWZzCisgI2RlZmluZSBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyVHJhY2VSZWZzCiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9DcmVhdGUyKHN0cnVjdCBQeU1vZHVsZURlZiosCkBAIC0xMTYsMTIgKzEyNCwyNyBAQAogCiAjaWZkZWYgUHlfTElNSVRFRF9BUEkKICNkZWZpbmUgUHlNb2R1bGVfQ3JlYXRlKG1vZHVsZSkgXAotCVB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQUJJX1ZFUlNJT04pCisgICAgICAgIFB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQUJJX1ZFUlNJT04pCiAjZWxzZQogI2RlZmluZSBQeU1vZHVsZV9DcmVhdGUobW9kdWxlKSBcCi0JUHlNb2R1bGVfQ3JlYXRlMihtb2R1bGUsIFBZVEhPTl9BUElfVkVSU0lPTikKKyAgICAgICAgUHlNb2R1bGVfQ3JlYXRlMihtb2R1bGUsIFBZVEhPTl9BUElfVkVSU0lPTikKICNlbmRpZgogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIoUHlNb2R1bGVEZWYgKmRlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZHVsZV9hcGlfdmVyc2lvbik7CisKKyNpZmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYyhtb2R1bGUsIHNwZWMpIFwKKyAgICBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIobW9kdWxlLCBzcGVjLCBQWVRIT05fQUJJX1ZFUlNJT04pCisjZWxzZQorI2RlZmluZSBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYyhtb2R1bGUsIHNwZWMpIFwKKyAgICBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIobW9kdWxlLCBzcGVjLCBQWVRIT05fQVBJX1ZFUlNJT04pCisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KKyNlbmRpZiAvKiBOZXcgaW4gMy41ICovCisKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoY2hhciAqKSBfUHlfUGFja2FnZUNvbnRleHQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmggYi9JbmNsdWRlL21vZHVsZW9iamVjdC5oCmluZGV4IGYxMTkzNjQuLjIyOWQ3ZmEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaApAQCAtMzAsNiArMzAsMTIgQEAKIFB5QVBJX0ZVTkMoc3RydWN0IFB5TW9kdWxlRGVmKikgUHlNb2R1bGVfR2V0RGVmKFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQqKSBQeU1vZHVsZV9HZXRTdGF0ZShQeU9iamVjdCopOwogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZURlZl9Jbml0KHN0cnVjdCBQeU1vZHVsZURlZiopOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5TW9kdWxlRGVmX1R5cGU7CisjZW5kaWYKKwogdHlwZWRlZiBzdHJ1Y3QgUHlNb2R1bGVEZWZfQmFzZSB7CiAgIFB5T2JqZWN0X0hFQUQKICAgUHlPYmplY3QqICgqbV9pbml0KSh2b2lkKTsKQEAgLTQ0LDE5ICs1MCwzNSBAQAogICAgIE5VTEwsIC8qIG1fY29weSAqLyAgICAgICAgICBcCiAgIH0KIAorc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3Q7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLwordHlwZWRlZiBzdHJ1Y3QgUHlNb2R1bGVEZWZfU2xvdHsKKyAgICBpbnQgc2xvdDsKKyAgICB2b2lkICp2YWx1ZTsKK30gUHlNb2R1bGVEZWZfU2xvdDsKKworI2RlZmluZSBQeV9tb2RfY3JlYXRlIDEKKyNkZWZpbmUgUHlfbW9kX2V4ZWMgMgorCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIF9QeV9tb2RfTEFTVF9TTE9UIDIKKyNlbmRpZgorCisjZW5kaWYgLyogTmV3IGluIDMuNSAqLworCiB0eXBlZGVmIHN0cnVjdCBQeU1vZHVsZURlZnsKICAgUHlNb2R1bGVEZWZfQmFzZSBtX2Jhc2U7CiAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKICAgY29uc3QgY2hhciogbV9kb2M7CiAgIFB5X3NzaXplX3QgbV9zaXplOwogICBQeU1ldGhvZERlZiAqbV9tZXRob2RzOwotICBpbnF1aXJ5IG1fcmVsb2FkOworICBzdHJ1Y3QgUHlNb2R1bGVEZWZfU2xvdCogbV9zbG90czsKICAgdHJhdmVyc2Vwcm9jIG1fdHJhdmVyc2U7CiAgIGlucXVpcnkgbV9jbGVhcjsKICAgZnJlZWZ1bmMgbV9mcmVlOwogfVB5TW9kdWxlRGVmOwogCi0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL25vZGUuaCBiL0luY2x1ZGUvbm9kZS5oCmluZGV4IDJlNGUyYmEuLjY1NGFkODUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbm9kZS5oCisrKyBiL0luY2x1ZGUvbm9kZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAKIC8qIE5vZGUgYWNjZXNzIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBOQ0gobikJCSgobiktPm5fbmNoaWxkcmVuKQotCQorCiAjZGVmaW5lIENISUxEKG4sIGkpCSgmKG4pLT5uX2NoaWxkW2ldKQogI2RlZmluZSBSQ0hJTEQobiwgaSkJKENISUxEKG4sIE5DSChuKSArIGkpKQogI2RlZmluZSBUWVBFKG4pCQkoKG4pLT5uX3R5cGUpCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCA1Zjg2MmFiLi40ZDI4NmVmIDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTY1LDYgKzY1LDcgQEAKICNlcnJvciBQeV9MSU1JVEVEX0FQSSBpcyBpbmNvbXBhdGlibGUgd2l0aCBQeV9ERUJVRywgUHlfVFJBQ0VfUkVGUywgYW5kIFB5X1JFRl9ERUJVRwogI2VuZGlmCiAKKwogI2lmZGVmIFB5X1RSQUNFX1JFRlMKIC8qIERlZmluZSBwb2ludGVycyB0byBzdXBwb3J0IGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFsbCBsaXZlIGhlYXAgb2JqZWN0cy4gKi8KICNkZWZpbmUgX1B5T2JqZWN0X0hFQURfRVhUUkEgICAgICAgICAgICBcCkBAIC0yNzUsNiArMjc2LDkgQEAKICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7CiAKICAgICB1bmFyeWZ1bmMgbmJfaW5kZXg7CisKKyAgICBiaW5hcnlmdW5jIG5iX21hdHJpeF9tdWx0aXBseTsKKyAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5OwogfSBQeU51bWJlck1ldGhvZHM7CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTI5Nyw2ICszMDEsMTEgQEAKICAgICBvYmpvYmphcmdwcm9jIG1wX2Fzc19zdWJzY3JpcHQ7CiB9IFB5TWFwcGluZ01ldGhvZHM7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1bmFyeWZ1bmMgYW1fYXdhaXQ7CisgICAgdW5hcnlmdW5jIGFtX2FpdGVyOworICAgIHVuYXJ5ZnVuYyBhbV9hbmV4dDsKK30gUHlBc3luY01ldGhvZHM7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICAgZ2V0YnVmZmVycHJvYyBiZl9nZXRidWZmZXI7CkBAIC0zNDIsNyArMzUxLDggQEAKICAgICBwcmludGZ1bmMgdHBfcHJpbnQ7CiAgICAgZ2V0YXR0cmZ1bmMgdHBfZ2V0YXR0cjsKICAgICBzZXRhdHRyZnVuYyB0cF9zZXRhdHRyOwotICAgIHZvaWQgKnRwX3Jlc2VydmVkOyAvKiBmb3JtZXJseSBrbm93biBhcyB0cF9jb21wYXJlICovCisgICAgUHlBc3luY01ldGhvZHMgKnRwX2FzX2FzeW5jOyAvKiBmb3JtZXJseSBrbm93biBhcyB0cF9jb21wYXJlIChQeXRob24gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHRwX3Jlc2VydmVkIChQeXRob24gMykgKi8KICAgICByZXByZnVuYyB0cF9yZXByOwogCiAgICAgLyogTWV0aG9kIHN1aXRlcyBmb3Igc3RhbmRhcmQgY2xhc3NlcyAqLwpAQCAtNDQ5LDYgKzQ1OSw3IEBACiAgICAgLyogTm90ZTogdGhlcmUncyBhIGRlcGVuZGVuY3kgb24gdGhlIG9yZGVyIG9mIHRoZXNlIG1lbWJlcnMKICAgICAgICBpbiBzbG90cHRyKCkgaW4gdHlwZW9iamVjdC5jIC4gKi8KICAgICBQeVR5cGVPYmplY3QgaHRfdHlwZTsKKyAgICBQeUFzeW5jTWV0aG9kcyBhc19hc3luYzsKICAgICBQeU51bWJlck1ldGhvZHMgYXNfbnVtYmVyOwogICAgIFB5TWFwcGluZ01ldGhvZHMgYXNfbWFwcGluZzsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyBhc19zZXF1ZW5jZTsgLyogYXNfc2VxdWVuY2UgY29tZXMgYWZ0ZXIgYXNfbWFwcGluZywKQEAgLTU3MiwxMyArNTgzLDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeV9SZXByRW50ZXIoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X1JlcHJMZWF2ZShQeU9iamVjdCAqKTsKIAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotLyogSGVscGVyIGZvciBwYXNzaW5nIG9iamVjdHMgdG8gcHJpbnRmIGFuZCB0aGUgbGlrZS4KLSAgIExlYWtzIHJlZmNvdW50cy4gIERvbid0IHVzZSBpdCEKLSovCi0jZGVmaW5lIFB5T2JqZWN0X1JFUFIob2JqKSBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIob2JqKSkKLSNlbmRpZgotCiAvKiBGbGFnIGJpdHMgZm9yIHByaW50aW5nOiAqLwogI2RlZmluZSBQeV9QUklOVF9SQVcgICAgMSAgICAgICAvKiBObyBzdHJpbmcgcXVvdGVzIGV0Yy4gKi8KIApAQCAtNzE0LDExICs3MTgsMTcgQEAKICAgICAgICAgICAgICAgICBfUHlfTmVnYXRpdmVSZWZjb3VudChfX0ZJTEVfXywgX19MSU5FX18sICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopKE9QKSk7ICAgICAgICAgXAogfQorLyogUHlfUkVGX0RFQlVHIGFsc28gY29udHJvbHMgdGhlIGRpc3BsYXkgb2YgcmVmY291bnRzIGFuZCBtZW1vcnkgYmxvY2sKKyAqIGFsbG9jYXRpb25zIGF0IHRoZSBpbnRlcmFjdGl2ZSBwcm9tcHQgYW5kIGF0IGludGVycHJldGVyIHNodXRkb3duCisgKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5RGVidWdfUHJpbnRUb3RhbFJlZnModm9pZCk7CisjZGVmaW5lIF9QWV9ERUJVR19QUklOVF9UT1RBTF9SRUZTKCkgX1B5RGVidWdfUHJpbnRUb3RhbFJlZnMoKQogI2Vsc2UKICNkZWZpbmUgX1B5X0lOQ19SRUZUT1RBTAogI2RlZmluZSBfUHlfREVDX1JFRlRPVEFMCiAjZGVmaW5lIF9QeV9SRUZfREVCVUdfQ09NTUEKICNkZWZpbmUgX1B5X0NIRUNLX1JFRkNOVChPUCkgICAgLyogYSBzZW1pY29sb24gKi87CisjZGVmaW5lIF9QWV9ERUJVR19QUklOVF9UT1RBTF9SRUZTKCkKICNlbmRpZiAvKiBQeV9SRUZfREVCVUcgKi8KIAogI2lmZGVmIENPVU5UX0FMTE9DUwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmppbXBsLmggYi9JbmNsdWRlL29iamltcGwuaAppbmRleCAzZjIxYjcwLi42NWI2ZDkxIDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamltcGwuaAorKysgYi9JbmNsdWRlL29iamltcGwuaApAQCAtOTUsNiArOTUsNyBAQAogICAgdGhlIHJhdyBtZW1vcnkuCiAqLwogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X01hbGxvYyhzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0ZyZWUodm9pZCAqcHRyKTsKIApAQCAtMzIxLDcgKzMyMiw4IEBACiAgICAgICAgICghUHlUdXBsZV9DaGVja0V4YWN0KG9iaikgfHwgX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob2JqKSkpCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfQ2FsbG9jKHNpemVfdCBzaXplKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX05ldyhQeVR5cGVPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5VmFyT2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXdWYXIoUHlUeXBlT2JqZWN0ICosIFB5X3NzaXplX3QpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9HQ19UcmFjayh2b2lkICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vZGljdG9iamVjdC5oIGIvSW5jbHVkZS9vZGljdG9iamVjdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZDk1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL29kaWN0b2JqZWN0LmgKQEAgLTAsMCArMSw0MyBAQAorI2lmbmRlZiBQeV9PRElDVE9CSkVDVF9ICisjZGVmaW5lIFB5X09ESUNUT0JKRUNUX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisvKiBPcmRlcmVkRGljdCAqLworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKK3R5cGVkZWYgc3RydWN0IF9vZGljdG9iamVjdCBQeU9EaWN0T2JqZWN0OworCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdF9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RJdGVyX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdEtleXNfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0SXRlbXNfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0VmFsdWVzX1R5cGU7CisKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCisjZGVmaW5lIFB5T0RpY3RfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5T0RpY3RfVHlwZSkKKyNkZWZpbmUgUHlPRGljdF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5T0RpY3RfVHlwZSkKKyNkZWZpbmUgUHlPRGljdF9TSVpFKG9wKSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfdXNlZAorI2RlZmluZSBQeU9EaWN0X0hhc0tleShvZCwga2V5KSAoUHlNYXBwaW5nX0hhc0tleShQeU9iamVjdCAqKW9kLCBrZXkpCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPRGljdF9OZXcodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlPRGljdF9TZXRJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKml0ZW0pOworUHlBUElfRlVOQyhpbnQpIFB5T0RpY3RfRGVsSXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpOworCisvKiB3cmFwcGVycyBhcm91bmQgUHlEaWN0KiBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgUHlPRGljdF9HZXRJdGVtKG9kLCBrZXkpIFB5RGljdF9HZXRJdGVtKChQeU9iamVjdCAqKW9kLCBrZXkpCisjZGVmaW5lIFB5T0RpY3RfR2V0SXRlbVdpdGhFcnJvcihvZCwga2V5KSBcCisgICAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopb2QsIGtleSkKKyNkZWZpbmUgUHlPRGljdF9Db250YWlucyhvZCwga2V5KSBQeURpY3RfQ29udGFpbnMoKFB5T2JqZWN0ICopb2QsIGtleSkKKyNkZWZpbmUgUHlPRGljdF9TaXplKG9kKSBQeURpY3RfU2l6ZSgoUHlPYmplY3QgKilvZCkKKyNkZWZpbmUgUHlPRGljdF9HZXRJdGVtU3RyaW5nKG9kLCBrZXkpIFwKKyAgICBQeURpY3RfR2V0SXRlbVN0cmluZygoUHlPYmplY3QgKilvZCwga2V5KQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9PRElDVE9CSkVDVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCAwOTM2ZjJkLi4zZjkxN2ZiIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTEsMyArMSw0IEBACisvKiBBdXRvLWdlbmVyYXRlZCBieSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5ICovCiAjaWZuZGVmIFB5X09QQ09ERV9ICiAjZGVmaW5lIFB5X09QQ09ERV9ICiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTUsMTQxICs2LDEyMiBAQAogI2VuZGlmCiAKIAotLyogSW5zdHJ1Y3Rpb24gb3Bjb2RlcyBmb3IgY29tcGlsZWQgY29kZSAqLwotCi0jZGVmaW5lIFBPUF9UT1AgICAgICAgICAxCi0jZGVmaW5lIFJPVF9UV08gICAgICAgICAyCi0jZGVmaW5lIFJPVF9USFJFRSAgICAgICAzCi0jZGVmaW5lIERVUF9UT1AgICAgICAgICA0Ci0jZGVmaW5lIERVUF9UT1BfVFdPICAgICA1Ci0jZGVmaW5lIE5PUCAgICAgICAgICAgICA5Ci0KLSNkZWZpbmUgVU5BUllfUE9TSVRJVkUgIDEwCi0jZGVmaW5lIFVOQVJZX05FR0FUSVZFICAxMQotI2RlZmluZSBVTkFSWV9OT1QgICAgICAgMTIKLQotI2RlZmluZSBVTkFSWV9JTlZFUlQgICAgMTUKLQotI2RlZmluZSBCSU5BUllfUE9XRVIgICAgMTkKLQotI2RlZmluZSBCSU5BUllfTVVMVElQTFkgMjAKLQotI2RlZmluZSBCSU5BUllfTU9EVUxPICAgMjIKLSNkZWZpbmUgQklOQVJZX0FERCAgICAgIDIzCi0jZGVmaW5lIEJJTkFSWV9TVUJUUkFDVCAyNAotI2RlZmluZSBCSU5BUllfU1VCU0NSICAgMjUKLSNkZWZpbmUgQklOQVJZX0ZMT09SX0RJVklERSAyNgotI2RlZmluZSBCSU5BUllfVFJVRV9ESVZJREUgMjcKLSNkZWZpbmUgSU5QTEFDRV9GTE9PUl9ESVZJREUgMjgKLSNkZWZpbmUgSU5QTEFDRV9UUlVFX0RJVklERSAyOQotCi0jZGVmaW5lIFNUT1JFX01BUCAgICAgICA1NAotI2RlZmluZSBJTlBMQUNFX0FERCAgICAgNTUKLSNkZWZpbmUgSU5QTEFDRV9TVUJUUkFDVCAgICAgICAgNTYKLSNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWSAgICAgICAgNTcKLQotI2RlZmluZSBJTlBMQUNFX01PRFVMTyAgNTkKLSNkZWZpbmUgU1RPUkVfU1VCU0NSICAgIDYwCi0jZGVmaW5lIERFTEVURV9TVUJTQ1IgICA2MQotCi0jZGVmaW5lIEJJTkFSWV9MU0hJRlQgICA2MgotI2RlZmluZSBCSU5BUllfUlNISUZUICAgNjMKLSNkZWZpbmUgQklOQVJZX0FORCAgICAgIDY0Ci0jZGVmaW5lIEJJTkFSWV9YT1IgICAgICA2NQotI2RlZmluZSBCSU5BUllfT1IgICAgICAgNjYKLSNkZWZpbmUgSU5QTEFDRV9QT1dFUiAgIDY3Ci0jZGVmaW5lIEdFVF9JVEVSICAgICAgICA2OAotI2RlZmluZSBQUklOVF9FWFBSICAgICAgNzAKLSNkZWZpbmUgTE9BRF9CVUlMRF9DTEFTUyA3MQotI2RlZmluZSBZSUVMRF9GUk9NICAgICAgNzIKLQotI2RlZmluZSBJTlBMQUNFX0xTSElGVCAgNzUKLSNkZWZpbmUgSU5QTEFDRV9SU0hJRlQgIDc2Ci0jZGVmaW5lIElOUExBQ0VfQU5EICAgICA3NwotI2RlZmluZSBJTlBMQUNFX1hPUiAgICAgNzgKLSNkZWZpbmUgSU5QTEFDRV9PUiAgICAgIDc5Ci0jZGVmaW5lIEJSRUFLX0xPT1AgICAgICA4MAotI2RlZmluZSBXSVRIX0NMRUFOVVAgICAgODEKLQotI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgODMKLSNkZWZpbmUgSU1QT1JUX1NUQVIgICAgIDg0Ci0KLSNkZWZpbmUgWUlFTERfVkFMVUUgICAgIDg2Ci0jZGVmaW5lIFBPUF9CTE9DSyAgICAgICA4NwotI2RlZmluZSBFTkRfRklOQUxMWSAgICAgODgKLSNkZWZpbmUgUE9QX0VYQ0VQVCAgICAgIDg5Ci0KLSNkZWZpbmUgSEFWRV9BUkdVTUVOVCAgIDkwICAgICAgLyogT3Bjb2RlcyBmcm9tIGhlcmUgaGF2ZSBhbiBhcmd1bWVudDogKi8KLQotI2RlZmluZSBTVE9SRV9OQU1FICAgICAgOTAgICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX05BTUUgICAgIDkxICAgICAgLyogIiIgKi8KLSNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFIDkyICAgICAgLyogTnVtYmVyIG9mIHNlcXVlbmNlIGl0ZW1zICovCi0jZGVmaW5lIEZPUl9JVEVSICAgICAgICA5MwotI2RlZmluZSBVTlBBQ0tfRVggICAgICAgOTQgICAgICAvKiBOdW0gaXRlbXMgYmVmb3JlIHZhcmlhYmxlIHBhcnQgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTnVtIGl0ZW1zIGFmdGVyIHZhcmlhYmxlIHBhcnQgPDwgOCkgKi8KLQotI2RlZmluZSBTVE9SRV9BVFRSICAgICAgOTUgICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX0FUVFIgICAgIDk2ICAgICAgLyogIiIgKi8KLSNkZWZpbmUgU1RPUkVfR0xPQkFMICAgIDk3ICAgICAgLyogIiIgKi8KLSNkZWZpbmUgREVMRVRFX0dMT0JBTCAgIDk4ICAgICAgLyogIiIgKi8KLQotI2RlZmluZSBMT0FEX0NPTlNUICAgICAgMTAwICAgICAvKiBJbmRleCBpbiBjb25zdCBsaXN0ICovCi0jZGVmaW5lIExPQURfTkFNRSAgICAgICAxMDEgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBCVUlMRF9UVVBMRSAgICAgMTAyICAgICAvKiBOdW1iZXIgb2YgdHVwbGUgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTElTVCAgICAgIDEwMyAgICAgLyogTnVtYmVyIG9mIGxpc3QgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfU0VUICAgICAgIDEwNCAgICAgLyogTnVtYmVyIG9mIHNldCBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9NQVAgICAgICAgMTA1ICAgICAvKiBBbHdheXMgemVybyBmb3Igbm93ICovCi0jZGVmaW5lIExPQURfQVRUUiAgICAgICAxMDYgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBDT01QQVJFX09QICAgICAgMTA3ICAgICAvKiBDb21wYXJpc29uIG9wZXJhdG9yICovCi0jZGVmaW5lIElNUE9SVF9OQU1FICAgICAxMDggICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBJTVBPUlRfRlJPTSAgICAgMTA5ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLQotI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgMTEwICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCAqLwotI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAxMTEgICAgICAgIC8qIFRhcmdldCBieXRlIG9mZnNldCBmcm9tIGJlZ2lubmluZyBvZiBjb2RlICovCi0jZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgMTEyIC8qICIiICovCi0jZGVmaW5lIEpVTVBfQUJTT0xVVEUgICAxMTMgICAgIC8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX0ZBTFNFIDExNCAgIC8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgMTE1ICAgIC8qICIiICovCi0KLSNkZWZpbmUgTE9BRF9HTE9CQUwgICAgIDExNiAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0KLSNkZWZpbmUgQ09OVElOVUVfTE9PUCAgIDExOSAgICAgLyogU3RhcnQgb2YgbG9vcCAoYWJzb2x1dGUpICovCi0jZGVmaW5lIFNFVFVQX0xPT1AgICAgICAxMjAgICAgIC8qIFRhcmdldCBhZGRyZXNzIChyZWxhdGl2ZSkgKi8KLSNkZWZpbmUgU0VUVVBfRVhDRVBUICAgIDEyMSAgICAgLyogIiIgKi8KLSNkZWZpbmUgU0VUVVBfRklOQUxMWSAgIDEyMiAgICAgLyogIiIgKi8KLQotI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgMTI0ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgU1RPUkVfRkFTVCAgICAgIDEyNSAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIERFTEVURV9GQVNUICAgICAxMjYgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotCi0jZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAxMzAgICAgIC8qIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIgb3IgMykgKi8KLS8qIENBTExfRlVOQ1RJT05fWFhYIG9wY29kZXMgZGVmaW5lZCBiZWxvdyBkZXBlbmQgb24gdGhpcyBkZWZpbml0aW9uICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT04gICAxMzEgICAgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIE1BS0VfRlVOQ1RJT04gICAxMzIgICAgIC8qICNkZWZhdWx0cyArICNrd2RlZmF1bHRzPDw4ICsgI2Fubm90YXRpb25zPDwxNiAqLwotI2RlZmluZSBCVUlMRF9TTElDRSAgICAgMTMzICAgICAvKiBOdW1iZXIgb2YgaXRlbXMgKi8KLQotI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgMTM0ICAgICAvKiBzYW1lIGFzIE1BS0VfRlVOQ1RJT04gKi8KLSNkZWZpbmUgTE9BRF9DTE9TVVJFICAgIDEzNSAgICAgLyogTG9hZCBmcmVlIHZhcmlhYmxlIGZyb20gY2xvc3VyZSAqLwotI2RlZmluZSBMT0FEX0RFUkVGICAgICAgMTM2ICAgICAvKiBMb2FkIGFuZCBkZXJlZmVyZW5jZSBmcm9tIGNsb3N1cmUgY2VsbCAqLyAKLSNkZWZpbmUgU1RPUkVfREVSRUYgICAgIDEzNyAgICAgLyogU3RvcmUgaW50byBjZWxsICovIAotI2RlZmluZSBERUxFVEVfREVSRUYgICAgMTM4ICAgICAvKiBEZWxldGUgY2xvc3VyZSBjZWxsICovIAotCi0vKiBUaGUgbmV4dCAzIG9wY29kZXMgbXVzdCBiZSBjb250aWd1b3VzIGFuZCBzYXRpc2Z5Ci0gICAoQ0FMTF9GVU5DVElPTl9WQVIgLSBDQUxMX0ZVTkNUSU9OKSAmIDMgPT0gMSAgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgICAgMTQwICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAgICAxNDEgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgICAgIDE0MiAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLQotI2RlZmluZSBTRVRVUF9XSVRIIDE0MwotCi0vKiBTdXBwb3J0IGZvciBvcGFyZ3MgbW9yZSB0aGFuIDE2IGJpdHMgbG9uZyAqLwotI2RlZmluZSBFWFRFTkRFRF9BUkcgIDE0NAotCi0jZGVmaW5lIExJU1RfQVBQRU5EICAgICAxNDUKLSNkZWZpbmUgU0VUX0FERCAgICAgICAgIDE0NgotI2RlZmluZSBNQVBfQUREICAgICAgICAgMTQ3Ci0KLSNkZWZpbmUgTE9BRF9DTEFTU0RFUkVGICAgMTQ4CisgICAgLyogSW5zdHJ1Y3Rpb24gb3Bjb2RlcyBmb3IgY29tcGlsZWQgY29kZSAqLworI2RlZmluZSBQT1BfVE9QICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgUk9UX1RXTyAgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFJPVF9USFJFRSAgICAgICAgICAgICAgICAgMworI2RlZmluZSBEVVBfVE9QICAgICAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgRFVQX1RPUF9UV08gICAgICAgICAgICAgICA1CisjZGVmaW5lIE5PUCAgICAgICAgICAgICAgICAgICAgICAgOQorI2RlZmluZSBVTkFSWV9QT1NJVElWRSAgICAgICAgICAgMTAKKyNkZWZpbmUgVU5BUllfTkVHQVRJVkUgICAgICAgICAgIDExCisjZGVmaW5lIFVOQVJZX05PVCAgICAgICAgICAgICAgICAxMgorI2RlZmluZSBVTkFSWV9JTlZFUlQgICAgICAgICAgICAgMTUKKyNkZWZpbmUgQklOQVJZX01BVFJJWF9NVUxUSVBMWSAgIDE2CisjZGVmaW5lIElOUExBQ0VfTUFUUklYX01VTFRJUExZICAxNworI2RlZmluZSBCSU5BUllfUE9XRVIgICAgICAgICAgICAgMTkKKyNkZWZpbmUgQklOQVJZX01VTFRJUExZICAgICAgICAgIDIwCisjZGVmaW5lIEJJTkFSWV9NT0RVTE8gICAgICAgICAgICAyMgorI2RlZmluZSBCSU5BUllfQUREICAgICAgICAgICAgICAgMjMKKyNkZWZpbmUgQklOQVJZX1NVQlRSQUNUICAgICAgICAgIDI0CisjZGVmaW5lIEJJTkFSWV9TVUJTQ1IgICAgICAgICAgICAyNQorI2RlZmluZSBCSU5BUllfRkxPT1JfRElWSURFICAgICAgMjYKKyNkZWZpbmUgQklOQVJZX1RSVUVfRElWSURFICAgICAgIDI3CisjZGVmaW5lIElOUExBQ0VfRkxPT1JfRElWSURFICAgICAyOAorI2RlZmluZSBJTlBMQUNFX1RSVUVfRElWSURFICAgICAgMjkKKyNkZWZpbmUgR0VUX0FJVEVSICAgICAgICAgICAgICAgIDUwCisjZGVmaW5lIEdFVF9BTkVYVCAgICAgICAgICAgICAgICA1MQorI2RlZmluZSBCRUZPUkVfQVNZTkNfV0lUSCAgICAgICAgNTIKKyNkZWZpbmUgSU5QTEFDRV9BREQgICAgICAgICAgICAgIDU1CisjZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QgICAgICAgICA1NgorI2RlZmluZSBJTlBMQUNFX01VTFRJUExZICAgICAgICAgNTcKKyNkZWZpbmUgSU5QTEFDRV9NT0RVTE8gICAgICAgICAgIDU5CisjZGVmaW5lIFNUT1JFX1NVQlNDUiAgICAgICAgICAgICA2MAorI2RlZmluZSBERUxFVEVfU1VCU0NSICAgICAgICAgICAgNjEKKyNkZWZpbmUgQklOQVJZX0xTSElGVCAgICAgICAgICAgIDYyCisjZGVmaW5lIEJJTkFSWV9SU0hJRlQgICAgICAgICAgICA2MworI2RlZmluZSBCSU5BUllfQU5EICAgICAgICAgICAgICAgNjQKKyNkZWZpbmUgQklOQVJZX1hPUiAgICAgICAgICAgICAgIDY1CisjZGVmaW5lIEJJTkFSWV9PUiAgICAgICAgICAgICAgICA2NgorI2RlZmluZSBJTlBMQUNFX1BPV0VSICAgICAgICAgICAgNjcKKyNkZWZpbmUgR0VUX0lURVIgICAgICAgICAgICAgICAgIDY4CisjZGVmaW5lIEdFVF9ZSUVMRF9GUk9NX0lURVIgICAgICA2OQorI2RlZmluZSBQUklOVF9FWFBSICAgICAgICAgICAgICAgNzAKKyNkZWZpbmUgTE9BRF9CVUlMRF9DTEFTUyAgICAgICAgIDcxCisjZGVmaW5lIFlJRUxEX0ZST00gICAgICAgICAgICAgICA3MgorI2RlZmluZSBHRVRfQVdBSVRBQkxFICAgICAgICAgICAgNzMKKyNkZWZpbmUgSU5QTEFDRV9MU0hJRlQgICAgICAgICAgIDc1CisjZGVmaW5lIElOUExBQ0VfUlNISUZUICAgICAgICAgICA3NgorI2RlZmluZSBJTlBMQUNFX0FORCAgICAgICAgICAgICAgNzcKKyNkZWZpbmUgSU5QTEFDRV9YT1IgICAgICAgICAgICAgIDc4CisjZGVmaW5lIElOUExBQ0VfT1IgICAgICAgICAgICAgICA3OQorI2RlZmluZSBCUkVBS19MT09QICAgICAgICAgICAgICAgODAKKyNkZWZpbmUgV0lUSF9DTEVBTlVQX1NUQVJUICAgICAgIDgxCisjZGVmaW5lIFdJVEhfQ0xFQU5VUF9GSU5JU0ggICAgICA4MgorI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgICAgICAgICAgODMKKyNkZWZpbmUgSU1QT1JUX1NUQVIgICAgICAgICAgICAgIDg0CisjZGVmaW5lIFlJRUxEX1ZBTFVFICAgICAgICAgICAgICA4NgorI2RlZmluZSBQT1BfQkxPQ0sgICAgICAgICAgICAgICAgODcKKyNkZWZpbmUgRU5EX0ZJTkFMTFkgICAgICAgICAgICAgIDg4CisjZGVmaW5lIFBPUF9FWENFUFQgICAgICAgICAgICAgICA4OQorI2RlZmluZSBIQVZFX0FSR1VNRU5UICAgICAgICAgICAgOTAKKyNkZWZpbmUgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDkwCisjZGVmaW5lIERFTEVURV9OQU1FICAgICAgICAgICAgICA5MQorI2RlZmluZSBVTlBBQ0tfU0VRVUVOQ0UgICAgICAgICAgOTIKKyNkZWZpbmUgRk9SX0lURVIgICAgICAgICAgICAgICAgIDkzCisjZGVmaW5lIFVOUEFDS19FWCAgICAgICAgICAgICAgICA5NAorI2RlZmluZSBTVE9SRV9BVFRSICAgICAgICAgICAgICAgOTUKKyNkZWZpbmUgREVMRVRFX0FUVFIgICAgICAgICAgICAgIDk2CisjZGVmaW5lIFNUT1JFX0dMT0JBTCAgICAgICAgICAgICA5NworI2RlZmluZSBERUxFVEVfR0xPQkFMICAgICAgICAgICAgOTgKKyNkZWZpbmUgTE9BRF9DT05TVCAgICAgICAgICAgICAgMTAwCisjZGVmaW5lIExPQURfTkFNRSAgICAgICAgICAgICAgIDEwMQorI2RlZmluZSBCVUlMRF9UVVBMRSAgICAgICAgICAgICAxMDIKKyNkZWZpbmUgQlVJTERfTElTVCAgICAgICAgICAgICAgMTAzCisjZGVmaW5lIEJVSUxEX1NFVCAgICAgICAgICAgICAgIDEwNAorI2RlZmluZSBCVUlMRF9NQVAgICAgICAgICAgICAgICAxMDUKKyNkZWZpbmUgTE9BRF9BVFRSICAgICAgICAgICAgICAgMTA2CisjZGVmaW5lIENPTVBBUkVfT1AgICAgICAgICAgICAgIDEwNworI2RlZmluZSBJTVBPUlRfTkFNRSAgICAgICAgICAgICAxMDgKKyNkZWZpbmUgSU1QT1JUX0ZST00gICAgICAgICAgICAgMTA5CisjZGVmaW5lIEpVTVBfRk9SV0FSRCAgICAgICAgICAgIDExMAorI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAgICAxMTEKKyNkZWZpbmUgSlVNUF9JRl9UUlVFX09SX1BPUCAgICAgMTEyCisjZGVmaW5lIEpVTVBfQUJTT0xVVEUgICAgICAgICAgIDExMworI2RlZmluZSBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICAxMTQKKyNkZWZpbmUgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMTE1CisjZGVmaW5lIExPQURfR0xPQkFMICAgICAgICAgICAgIDExNgorI2RlZmluZSBDT05USU5VRV9MT09QICAgICAgICAgICAxMTkKKyNkZWZpbmUgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMTIwCisjZGVmaW5lIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyMQorI2RlZmluZSBTRVRVUF9GSU5BTExZICAgICAgICAgICAxMjIKKyNkZWZpbmUgTE9BRF9GQVNUICAgICAgICAgICAgICAgMTI0CisjZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAgICAgICAgIDEyNQorI2RlZmluZSBERUxFVEVfRkFTVCAgICAgICAgICAgICAxMjYKKyNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgMTMwCisjZGVmaW5lIENBTExfRlVOQ1RJT04gICAgICAgICAgIDEzMQorI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAxMzIKKyNkZWZpbmUgQlVJTERfU0xJQ0UgICAgICAgICAgICAgMTMzCisjZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAgICAgICAgIDEzNAorI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgICAgICAgICAxMzUKKyNkZWZpbmUgTE9BRF9ERVJFRiAgICAgICAgICAgICAgMTM2CisjZGVmaW5lIFNUT1JFX0RFUkVGICAgICAgICAgICAgIDEzNworI2RlZmluZSBERUxFVEVfREVSRUYgICAgICAgICAgICAxMzgKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgMTQwCisjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgIDE0MQorI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAxNDIKKyNkZWZpbmUgU0VUVVBfV0lUSCAgICAgICAgICAgICAgMTQzCisjZGVmaW5lIEVYVEVOREVEX0FSRyAgICAgICAgICAgIDE0NAorI2RlZmluZSBMSVNUX0FQUEVORCAgICAgICAgICAgICAxNDUKKyNkZWZpbmUgU0VUX0FERCAgICAgICAgICAgICAgICAgMTQ2CisjZGVmaW5lIE1BUF9BREQgICAgICAgICAgICAgICAgIDE0NworI2RlZmluZSBMT0FEX0NMQVNTREVSRUYgICAgICAgICAxNDgKKyNkZWZpbmUgQlVJTERfTElTVF9VTlBBQ0sgICAgICAgMTQ5CisjZGVmaW5lIEJVSUxEX01BUF9VTlBBQ0sgICAgICAgIDE1MAorI2RlZmluZSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCAxNTEKKyNkZWZpbmUgQlVJTERfVFVQTEVfVU5QQUNLICAgICAgMTUyCisjZGVmaW5lIEJVSUxEX1NFVF9VTlBBQ0sgICAgICAgIDE1MworI2RlZmluZSBTRVRVUF9BU1lOQ19XSVRIICAgICAgICAxNTQKIAogLyogRVhDRVBUX0hBTkRMRVIgaXMgYSBzcGVjaWFsLCBpbXBsaWNpdCBibG9jayB0eXBlIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbgogICAgZW50ZXJpbmcgYW4gZXhjZXB0IGhhbmRsZXIuIEl0IGlzIG5vdCBhbiBvcGNvZGUgYnV0IHdlIGRlZmluZSBpdCBoZXJlCkBAIC0xNDgsOCArMTMwLDkgQEAKICNkZWZpbmUgRVhDRVBUX0hBTkRMRVIgMjU3CiAKIAotZW51bSBjbXBfb3Age1B5Q21wX0xUPVB5X0xULCBQeUNtcF9MRT1QeV9MRSwgUHlDbXBfRVE9UHlfRVEsIFB5Q21wX05FPVB5X05FLCBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsCi0gICAgICAgICAgICAgUHlDbXBfSU4sIFB5Q21wX05PVF9JTiwgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OworZW51bSBjbXBfb3Age1B5Q21wX0xUPVB5X0xULCBQeUNtcF9MRT1QeV9MRSwgUHlDbXBfRVE9UHlfRVEsIFB5Q21wX05FPVB5X05FLAorICAgICAgICAgICAgICAgIFB5Q21wX0dUPVB5X0dULCBQeUNtcF9HRT1QeV9HRSwgUHlDbXBfSU4sIFB5Q21wX05PVF9JTiwKKyAgICAgICAgICAgICAgICBQeUNtcF9JUywgUHlDbXBfSVNfTk9ULCBQeUNtcF9FWENfTUFUQ0gsIFB5Q21wX0JBRH07CiAKICNkZWZpbmUgSEFTX0FSRyhvcCkgKChvcCkgPj0gSEFWRV9BUkdVTUVOVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vc2RlZnMuaCBiL0luY2x1ZGUvb3NkZWZzLmgKaW5kZXggMGMyZTM0Yi4uYmQ4NGMxYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vc2RlZnMuaAorKysgYi9JbmNsdWRlL29zZGVmcy5oCkBAIC03LDE1ICs3LDEyIEBACiAKIC8qIE9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW5jaWVzICovCiAKLS8qIE1vZCBieSBjaHJpc2g6IFFOWCBoYXMgV0FUQ09NLCBidXQgaXNuJ3QgRE9TICovCi0jaWYgIWRlZmluZWQoX19RTlhfXykKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKF9fREpHUFBfXykKKyNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFNFUCBMJ1xcJwogI2RlZmluZSBBTFRTRVAgTCcvJwogI2RlZmluZSBNQVhQQVRITEVOIDI1NgogI2RlZmluZSBERUxJTSBMJzsnCiAjZW5kaWYKLSNlbmRpZgogCiAvKiBGaWxlbmFtZSBzZXBhcmF0b3IgKi8KICNpZm5kZWYgU0VQCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCmluZGV4IGY4ODRjZDEuLjUxNDVkZDQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCisrKyBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCkBAIC0xNywxMyArMTcsMTMgQEAKIC8qIFZlcnNpb24gcGFyc2VkIG91dCBpbnRvIG51bWVyaWMgdmFsdWVzICovCiAvKi0tc3RhcnQgY29uc3RhbnRzLS0qLwogI2RlZmluZSBQWV9NQUpPUl9WRVJTSU9OCTMKLSNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk0Ci0jZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMworI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTUKKyNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkwCiAjZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9GSU5BTAogI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkwCiAKIC8qIFZlcnNpb24gYXMgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy40LjMrIgorI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjUuMCsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5YXRvbWljLmggYi9JbmNsdWRlL3B5YXRvbWljLmgKaW5kZXggZDRlMTllMC4uODkyYTIxNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWF0b21pYy5oCisrKyBiL0luY2x1ZGUvcHlhdG9taWMuaApAQCAtMSwxNCArMSwxMyBAQAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2lmbmRlZiBQeV9BVE9NSUNfSAogI2RlZmluZSBQeV9BVE9NSUNfSAotLyogWFhYOiBXaGVuIGNvbXBpbGVycyBzdGFydCBvZmZlcmluZyBhIHN0ZGF0b21pYy5oIHdpdGggbG9jay1mcmVlCi0gICBhdG9taWNfaW50IGFuZCBhdG9taWNfYWRkcmVzcyB0eXBlcywgaW5jbHVkZSB0aGF0IGhlcmUgYW5kIHJld3JpdGUKLSAgIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBpdC4gKi8KKyNpZmRlZiBQeV9CVUlMRF9DT1JFCiAKICNpbmNsdWRlICJkeW5hbWljX2Fubm90YXRpb25zLmgiCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7CisjaW5jbHVkZSAicHljb25maWcuaCIKKworI2lmIGRlZmluZWQoSEFWRV9TVERfQVRPTUlDKQorI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgogI2VuZGlmCiAKIC8qIFRoaXMgaXMgbW9kZWxlZCBhZnRlciB0aGUgYXRvbWljcyBpbnRlcmZhY2UgZnJvbSBDMXgsIGFjY29yZGluZyB0bwpAQCAtMjAsNiArMTksNzYgQEAKICAqIEJld2FyZSwgdGhlIGltcGxlbWVudGF0aW9ucyBoZXJlIGFyZSBkZWVwIG1hZ2ljLgogICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfU1REX0FUT01JQykKKwordHlwZWRlZiBlbnVtIF9QeV9tZW1vcnlfb3JkZXIgeworICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsYXhlZCA9IG1lbW9yeV9vcmRlcl9yZWxheGVkLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxdWlyZSA9IG1lbW9yeV9vcmRlcl9hY3F1aXJlLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsZWFzZSA9IG1lbW9yeV9vcmRlcl9yZWxlYXNlLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxX3JlbCA9IG1lbW9yeV9vcmRlcl9hY3FfcmVsLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfc2VxX2NzdCA9IG1lbW9yeV9vcmRlcl9zZXFfY3N0Cit9IF9QeV9tZW1vcnlfb3JkZXI7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7CisgICAgX0F0b21pYyB2b2lkICpfdmFsdWU7Cit9IF9QeV9hdG9taWNfYWRkcmVzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgeworICAgIGF0b21pY19pbnQgX3ZhbHVlOworfSBfUHlfYXRvbWljX2ludDsKKworI2RlZmluZSBfUHlfYXRvbWljX3NpZ25hbF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgYXRvbWljX3NpZ25hbF9mZW5jZShPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX3RocmVhZF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgYXRvbWljX3RocmVhZF9mZW5jZShPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX3N0b3JlX2V4cGxpY2l0KEFUT01JQ19WQUwsIE5FV19WQUwsIE9SREVSKSBcCisgICAgYXRvbWljX3N0b3JlX2V4cGxpY2l0KCYoQVRPTUlDX1ZBTCktPl92YWx1ZSwgTkVXX1ZBTCwgT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY19sb2FkX2V4cGxpY2l0KEFUT01JQ19WQUwsIE9SREVSKSBcCisgICAgYXRvbWljX2xvYWRfZXhwbGljaXQoJihBVE9NSUNfVkFMKS0+X3ZhbHVlLCBPUkRFUikKKworLyogVXNlIGJ1aWx0aW4gYXRvbWljIG9wZXJhdGlvbnMgaW4gR0NDID49IDQuNyAqLworI2VsaWYgZGVmaW5lZChIQVZFX0JVSUxUSU5fQVRPTUlDKQorCit0eXBlZGVmIGVudW0gX1B5X21lbW9yeV9vcmRlciB7CisgICAgX1B5X21lbW9yeV9vcmRlcl9yZWxheGVkID0gX19BVE9NSUNfUkVMQVhFRCwKKyAgICBfUHlfbWVtb3J5X29yZGVyX2FjcXVpcmUgPSBfX0FUT01JQ19BQ1FVSVJFLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsZWFzZSA9IF9fQVRPTUlDX1JFTEVBU0UsCisgICAgX1B5X21lbW9yeV9vcmRlcl9hY3FfcmVsID0gX19BVE9NSUNfQUNRX1JFTCwKKyAgICBfUHlfbWVtb3J5X29yZGVyX3NlcV9jc3QgPSBfX0FUT01JQ19TRVFfQ1NUCit9IF9QeV9tZW1vcnlfb3JkZXI7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7CisgICAgdm9pZCAqX3ZhbHVlOworfSBfUHlfYXRvbWljX2FkZHJlc3M7CisKK3R5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKKyAgICBpbnQgX3ZhbHVlOworfSBfUHlfYXRvbWljX2ludDsKKworI2RlZmluZSBfUHlfYXRvbWljX3NpZ25hbF9mZW5jZSgvKm1lbW9yeV9vcmRlciovIE9SREVSKSBcCisgICAgX19hdG9taWNfc2lnbmFsX2ZlbmNlKE9SREVSKQorCisjZGVmaW5lIF9QeV9hdG9taWNfdGhyZWFkX2ZlbmNlKC8qbWVtb3J5X29yZGVyKi8gT1JERVIpIFwKKyAgICBfX2F0b21pY190aHJlYWRfZmVuY2UoT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY19zdG9yZV9leHBsaWNpdChBVE9NSUNfVkFMLCBORVdfVkFMLCBPUkRFUikgXAorICAgIChhc3NlcnQoKE9SREVSKSA9PSBfX0FUT01JQ19SRUxBWEVEICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX1NFUV9DU1QgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfUkVMRUFTRSksICAgICAgICAgICAgICAgICAgXAorICAgICBfX2F0b21pY19zdG9yZV9uKCYoQVRPTUlDX1ZBTCktPl92YWx1ZSwgTkVXX1ZBTCwgT1JERVIpKQorCisjZGVmaW5lIF9QeV9hdG9taWNfbG9hZF9leHBsaWNpdChBVE9NSUNfVkFMLCBPUkRFUikgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KChPUkRFUikgPT0gX19BVE9NSUNfUkVMQVhFRCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgKE9SREVSKSA9PSBfX0FUT01JQ19TRVFfQ1NUICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX0FDUVVJUkUgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfQ09OU1VNRSksICAgICAgICAgICAgICAgICAgXAorICAgICBfX2F0b21pY19sb2FkX24oJihBVE9NSUNfVkFMKS0+X3ZhbHVlLCBPUkRFUikpCisKKyNlbHNlCisKIHR5cGVkZWYgZW51bSBfUHlfbWVtb3J5X29yZGVyIHsKICAgICBfUHlfbWVtb3J5X29yZGVyX3JlbGF4ZWQsCiAgICAgX1B5X21lbW9yeV9vcmRlcl9hY3F1aXJlLApAQCAtMTYyLDYgKzIzMSw3IEBACiAgICAgKChBVE9NSUNfVkFMKS0+X3ZhbHVlKQogCiAjZW5kaWYgIC8qICFnY2MgeDg2ICovCisjZW5kaWYKIAogLyogU3RhbmRhcmRpemVkIHNob3J0Y3V0cy4gKi8KICNkZWZpbmUgX1B5X2F0b21pY19zdG9yZShBVE9NSUNfVkFMLCBORVdfVkFMKSBcCkBAIC0xNzYsOSArMjQ2LDUgQEAKICNkZWZpbmUgX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoQVRPTUlDX1ZBTCkgXAogICAgIF9QeV9hdG9taWNfbG9hZF9leHBsaWNpdChBVE9NSUNfVkFMLCBfUHlfbWVtb3J5X29yZGVyX3JlbGF4ZWQpCiAKLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KKyNlbmRpZiAgLyogUHlfQlVJTERfQ09SRSAqLwogI2VuZGlmICAvKiBQeV9BVE9NSUNfSCAqLwotI2VuZGlmICAvKiBQeV9MSU1JVEVEX0FQSSAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCA4ZmU5ODE4Li4xOWJlYzJiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtNSw2ICs1LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIFRoZXNlIGdsb2JhbCB2YXJpYWJsZSBhcmUgZGVmaW5lZCBpbiBweWxpZmVjeWNsZS5jICovCisvKiBYWFggKG5jb2dobGFuKTogbW92ZSB0aGVzZSBkZWNsYXJhdGlvbnMgdG8gcHlsaWZlY3ljbGUuaD8gKi8KIFB5QVBJX0RBVEEoaW50KSBQeV9EZWJ1Z0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfVmVyYm9zZUZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfUXVpZXRGbGFnOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWVycm9ycy5oIGIvSW5jbHVkZS9weWVycm9ycy5oCmluZGV4IDAyZjY1ZDYuLjM1YWVkYjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHllcnJvcnMuaAorKysgYi9JbmNsdWRlL3B5ZXJyb3JzLmgKQEAgLTk5LDYgKzk5LDcgQEAKICNkZWZpbmUgX1B5X05PX1JFVFVSTgogI2VuZGlmCiAKKy8qIERlZmluZWQgaW4gUHl0aG9uL3B5bGlmZWN5Y2xlLmMgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKSBfUHlfTk9fUkVUVVJOOwogCiAjaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKQEAgLTE0Niw2ICsxNDcsNyBAQAogCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jhc2VFeGNlcHRpb247CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0V4Y2VwdGlvbjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19TdG9wSXRlcmF0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19HZW5lcmF0b3JFeGl0OwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Bcml0aG1ldGljRXJyb3I7CkBAIC0xNjUsNiArMTY3LDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTmFtZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PdmVyZmxvd0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19SdW50aW1lRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1JlY3Vyc2lvbkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19TeW50YXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZW50YXRpb25FcnJvcjsKQEAgLTI0NCw2ICsyNDcsMTIgQEAKICAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCiAgICAgLi4uCiAgICAgKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX0Zvcm1hdFYoCisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgdmFfbGlzdCB2YXJncyk7CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmggYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZWJlMgotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaApAQCAtMCwwICsxLDEyNCBAQAorCisvKiBJbnRlcmZhY2VzIHRvIGNvbmZpZ3VyZSwgcXVlcnksIGNyZWF0ZSAmIGRlc3Ryb3kgdGhlIFB5dGhvbiBydW50aW1lICovCisKKyNpZm5kZWYgUHlfUFlMSUZFQ1lDTEVfSAorI2RlZmluZSBQeV9QWUxJRkVDWUNMRV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1B5QVBJX0ZVTkModm9pZCkgUHlfU2V0UHJvZ3JhbU5hbWUod2NoYXJfdCAqKTsKK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKKworUHlBUElfRlVOQyh2b2lkKSBQeV9TZXRQeXRob25Ib21lKHdjaGFyX3QgKik7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHl0aG9uSG9tZSh2b2lkKTsKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogT25seSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0aGF0IGVtYmVkIHRoZSBpbnRlcnByZXRlciBhbmQgbmVlZCB0bworICogb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGVuY29kaW5nIGRldGVybWluYXRpb24gbWVjaGFuaXNtCisgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeV9TZXRTdGFuZGFyZFN0cmVhbUVuY29kaW5nKGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKyNlbmRpZgorCitQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemVFeChpbnQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOworI2VuZGlmCitQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CitQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKik7CisKKworLyogUHlfUHlBdEV4aXQgaXMgZm9yIHRoZSBhdGV4aXQgbW9kdWxlLCBQeV9BdEV4aXQgaXMgZm9yIGxvdy1sZXZlbAorICogZXhpdCBmdW5jdGlvbnMuCisgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X1B5QXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSk7CisjZW5kaWYKK1B5QVBJX0ZVTkMoaW50KSBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKKworUHlBUElfRlVOQyh2b2lkKSBQeV9FeGl0KGludCk7CisKKy8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4gKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpOworCitQeUFQSV9GVU5DKGludCkgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKiwgY29uc3QgY2hhciAqKTsKKyNlbmRpZgorCisvKiBCb290c3RyYXAgX19tYWluX18gKGRlZmluZWQgaW4gTW9kdWxlcy9tYWluLmMpICovCitQeUFQSV9GVU5DKGludCkgUHlfTWFpbihpbnQgYXJnYywgd2NoYXJfdCAqKmFyZ3YpOworCisvKiBJbiBnZXRwYXRoLmMgKi8KK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcm9ncmFtRnVsbFBhdGgodm9pZCk7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJlZml4KHZvaWQpOworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldEV4ZWNQcmVmaXgodm9pZCk7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UGF0aCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgICAgICBQeV9TZXRQYXRoKGNvbnN0IHdjaGFyX3QgKik7CisjaWZkZWYgTVNfV0lORE9XUworaW50IF9QeV9DaGVja1B5dGhvbjMoKTsKKyNlbmRpZgorCisvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRWZXJzaW9uKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFBsYXRmb3JtKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvcHlyaWdodCh2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOworI2VuZGlmCisKKy8qIEludGVybmFsIC0tIHZhcmlvdXMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb25zICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0luaXQodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdChQeU9iamVjdCAqIGJsdGlubW9kKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlGcmFtZV9Jbml0KHZvaWQpOworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0luaXQodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlCeXRlQXJyYXlfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0luaXQodm9pZCk7CisjZW5kaWYKKworLyogVmFyaW91cyBpbnRlcm5hbCBmaW5hbGl6ZXJzICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlNZXRob2RfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlGcmFtZV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUNGdW5jdGlvbl9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeURpY3RfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlUdXBsZV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUxpc3RfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlTZXRfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVBcnJheV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUZsb2F0X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5T1NfRmluaUludGVycnVwdHModm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0R1bXBTaHV0ZG93blN0YXRzKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeVNsaWNlX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeVR5cGVfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0Zpbmkodm9pZCk7CisKK1B5QVBJX0RBVEEoUHlUaHJlYWRTdGF0ZSAqKSBfUHlfRmluYWxpemluZzsKKyNlbmRpZgorCisvKiBTaWduYWxzICovCit0eXBlZGVmIHZvaWQgKCpQeU9TX3NpZ2hhbmRsZXJfdCkoaW50KTsKK1B5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7CitQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKKworLyogUmFuZG9tICovCitQeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9QWUxJRkVDWUNMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWFjcm8uaCBiL0luY2x1ZGUvcHltYWNyby5oCmluZGV4IDc5OTdjNTUuLjNmNmY1ZGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYWNyby5oCisrKyBiL0luY2x1ZGUvcHltYWNyby5oCkBAIC0xLDEzICsxLDI2IEBACiAjaWZuZGVmIFB5X1BZTUFDUk9fSAogI2RlZmluZSBQeV9QWU1BQ1JPX0gKIAorLyogTWluaW11bSB2YWx1ZSBiZXR3ZWVuIHggYW5kIHkgKi8KICNkZWZpbmUgUHlfTUlOKHgsIHkpICgoKHgpID4gKHkpKSA/ICh5KSA6ICh4KSkKKworLyogTWF4aW11bSB2YWx1ZSBiZXR3ZWVuIHggYW5kIHkgKi8KICNkZWZpbmUgUHlfTUFYKHgsIHkpICgoKHgpID4gKHkpKSA/ICh4KSA6ICh5KSkKIAorLyogQWJzb2x1dGUgdmFsdWUgb2YgdGhlIG51bWJlciB4ICovCisjZGVmaW5lIFB5X0FCUyh4KSAoKHgpIDwgMCA/IC0oeCkgOiAoeCkpCisKKyNkZWZpbmUgX1B5X1hTVFJJTkdJRlkoeCkgI3gKKworLyogQ29udmVydCB0aGUgYXJndW1lbnQgdG8gYSBzdHJpbmcuIEZvciBleGFtcGxlLCBQeV9TVFJJTkdJRlkoMTIzKSBpcyByZXBsYWNlZAorICAgd2l0aCAiMTIzIiBieSB0aGUgcHJlcHJvY2Vzc29yLiBEZWZpbmVzIGFyZSBhbHNvIHJlcGxhY2VkIGJ5IHRoZWlyIHZhbHVlLgorICAgRm9yIGV4YW1wbGUgUHlfU1RSSU5HSUZZKF9fTElORV9fKSBpcyByZXBsYWNlZCBieSB0aGUgbGluZSBudW1iZXIsIG5vdAorICAgYnkgIl9fTElORV9fIi4gKi8KKyNkZWZpbmUgUHlfU1RSSU5HSUZZKHgpIF9QeV9YU1RSSU5HSUZZKHgpCisKIC8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KICNkZWZpbmUgUHlfQ0hBUk1BU0soYykgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKIAotCiAvKiBBc3NlcnQgYSBidWlsZC10aW1lIGRlcGVuZGVuY3ksIGFzIGFuIGV4cHJlc3Npb24uCiAKICAgIFlvdXIgY29tcGlsZSB3aWxsIGZhaWwgaWYgdGhlIGNvbmRpdGlvbiBpc24ndCB0cnVlLCBvciBjYW4ndCBiZSBldmFsdWF0ZWQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltZW0uaCBiL0luY2x1ZGUvcHltZW0uaAppbmRleCAyMzcyYjg2Li4wNDNkYjY0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWVtLmgKKysrIGIvSW5jbHVkZS9weW1lbS5oCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdNYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9SYXdGcmVlKHZvaWQgKnB0cik7CiAjZW5kaWYKQEAgLTU3LDYgKzU4LDcgQEAKICovCiAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9NYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9GcmVlKHZvaWQgKnB0cik7CiAKQEAgLTEyNiwyMiArMTI4LDI1IEBACiB9IFB5TWVtQWxsb2NhdG9yRG9tYWluOwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogdXNlciBjb250ZXh0IHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIDMgZnVuY3Rpb25zICovCisgICAgLyogdXNlciBjb250ZXh0IHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIDQgZnVuY3Rpb25zICovCiAgICAgdm9pZCAqY3R4OwogCiAgICAgLyogYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgKi8KICAgICB2b2lkKiAoKm1hbGxvYykgKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOwogCisgICAgLyogYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgaW5pdGlhbGl6ZWQgYnkgemVyb3MgKi8KKyAgICB2b2lkKiAoKmNhbGxvYykgKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKKwogICAgIC8qIGFsbG9jYXRlIG9yIHJlc2l6ZSBhIG1lbW9yeSBibG9jayAqLwogICAgIHZvaWQqICgqcmVhbGxvYykgKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogCiAgICAgLyogcmVsZWFzZSBhIG1lbW9yeSBibG9jayAqLwogICAgIHZvaWQgKCpmcmVlKSAodm9pZCAqY3R4LCB2b2lkICpwdHIpOwotfSBQeU1lbUFsbG9jYXRvcjsKK30gUHlNZW1BbGxvY2F0b3JFeDsKIAogLyogR2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLiAqLwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpOwogCiAvKiBTZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCiAKQEAgLTE1NSw3ICsxNjAsNyBAQAogICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCkgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgdG8gcmVpbnN0YWxsIHRoZSBkZWJ1ZyBob29rcwogICAgb24gdG9wIG9uIHRoZSBuZXcgYWxsb2NhdG9yLiAqLwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpOwogCiAvKiBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgZm9sbG93aW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yCiAgICBmdW5jdGlvbnM6CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCBiMjlmOWJkLi42NmUwMGQ0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTM1NywyOCArMzU3LDYgQEAKICAqIHN0YXQoKSBhbmQgZnN0YXQoKSBmaWRkbGluZyAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogV2UgZXhwZWN0IHRoYXQgc3RhdCBhbmQgZnN0YXQgZXhpc3Qgb24gbW9zdCBzeXN0ZW1zLgotICogIEl0J3MgY29uZmlybWVkIG9uIFVuaXgsIE1hYyBhbmQgV2luZG93cy4KLSAqICBJZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtLCBhZGQKLSAqICAgICAgI2RlZmluZSBET05UX0hBVkVfU1RBVAotICogYW5kL29yCi0gKiAgICAgICNkZWZpbmUgRE9OVF9IQVZFX0ZTVEFUCi0gKiB0byB5b3VyIHB5Y29uZmlnLmguIFB5dGhvbiBjb2RlIGJleW9uZCB0aGlzIHNob3VsZCBjaGVjayBIQVZFX1NUQVQgYW5kCi0gKiBIQVZFX0ZTVEFUIGluc3RlYWQuCi0gKiBBbHNvCi0gKiAgICAgICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9ICi0gKiBpZiA8c3lzL3N0YXQuaD4gZXhpc3RzIG9uIHlvdXIgcGxhdGZvcm0sIGFuZAotICogICAgICAjZGVmaW5lIEhBVkVfU1RBVF9ICi0gKiBpZiA8c3RhdC5oPiBkb2VzLgotICovCi0jaWZuZGVmIERPTlRfSEFWRV9TVEFUCi0jZGVmaW5lIEhBVkVfU1RBVAotI2VuZGlmCi0KLSNpZm5kZWYgRE9OVF9IQVZFX0ZTVEFUCi0jZGVmaW5lIEhBVkVfRlNUQVQKLSNlbmRpZgotCiAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbGlmIGRlZmluZWQoSEFWRV9TVEFUX0gpCkBAIC01ODgsNiArNTY2LDI1IEBACiAgICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCisjaWZkZWYgSEFWRV9HQ0NfQVNNX0ZPUl9NQzY4ODgxCisjZGVmaW5lIEhBVkVfUFlfU0VUXzUzQklUX1BSRUNJU0lPTiAxCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0hFQURFUiBcCisgIHVuc2lnbmVkIGludCBvbGRfZnBjciwgbmV3X2ZwY3IKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQJCQkJCVwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsJCQlcCisgICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8JCQlcCisgICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOwkJCQlcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsJXAorICB9IHdoaWxlICgwKQorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQJCQkJCVwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOwlcCisgIH0gd2hpbGUgKDApCisjZW5kaWYKKwogLyogZGVmYXVsdCBkZWZpbml0aW9ucyBhcmUgZW1wdHkgKi8KICNpZm5kZWYgSEFWRV9QWV9TRVRfNTNCSVRfUFJFQ0lTSU9OCiAjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0hFQURFUgpAQCAtODgwLDQgKzg3NywyNCBAQAogI2RlZmluZSBQWV9MSVRUTEVfRU5ESUFOIDEKICNlbmRpZgogCisjaWZkZWYgUHlfQlVJTERfQ09SRSAKKy8qCisgKiBNYWNyb3MgdG8gcHJvdGVjdCBDUlQgY2FsbHMgYWdhaW5zdCBpbnN0YW50IHRlcm1pbmF0aW9uIHdoZW4gcGFzc2VkIGFuCisgKiBpbnZhbGlkIHBhcmFtZXRlciAoaXNzdWUyMzUyNCkuCisgKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE5MDAKKworZXh0ZXJuIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIF9QeV9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcjsKKyNkZWZpbmUgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSCB7IF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIF9QeV9vbGRfaGFuZGxlciA9IFwKKyAgICBfc2V0X3RocmVhZF9sb2NhbF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKF9QeV9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcik7CisjZGVmaW5lIF9QeV9FTkRfU1VQUFJFU1NfSVBIIF9zZXRfdGhyZWFkX2xvY2FsX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoX1B5X29sZF9oYW5kbGVyKTsgfQorCisjZWxzZQorCisjZGVmaW5lIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNkZWZpbmUgX1B5X0VORF9TVVBQUkVTU19JUEgKKworI2VuZGlmIC8qIF9NU0NfVkVSID49IDE5MDAgKi8KKyNlbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCisKICNlbmRpZiAvKiBQeV9QWVBPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCA0OTkyYzIyLi42MDAwYjgxIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtMTM0LDYgKzEzNCw5IEBACiAgICAgdm9pZCAoKm9uX2RlbGV0ZSkodm9pZCAqKTsKICAgICB2b2lkICpvbl9kZWxldGVfZGF0YTsKIAorICAgIFB5T2JqZWN0ICpjb3JvdXRpbmVfd3JhcHBlcjsKKyAgICBpbnQgaW5fY29yb3V0aW5lX3dyYXBwZXI7CisKICAgICAvKiBYWFggc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBhbHNvIGJlIGhlcmUgKi8KIAogfSBQeVRocmVhZFN0YXRlOwpAQCAtMTc1LDE1ICsxNzgsMTIgQEAKIAogLyogQXNzdW1pbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBHSUwsIHRoaXMgaXMgdGhlCiAgICBQeVRocmVhZFN0YXRlIGZvciB0aGUgY3VycmVudCB0aHJlYWQuICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCisjaWZkZWYgUHlfQlVJTERfQ09SRQogUHlBUElfREFUQShfUHlfYXRvbWljX2FkZHJlc3MpIF9QeVRocmVhZFN0YXRlX0N1cnJlbnQ7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCi0jZGVmaW5lIFB5VGhyZWFkU3RhdGVfR0VUKCkgUHlUaHJlYWRTdGF0ZV9HZXQoKQorIyAgZGVmaW5lIFB5VGhyZWFkU3RhdGVfR0VUKCkgXAorICAgICAgICAgICAgICgoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpKQogI2Vsc2UKLSNkZWZpbmUgUHlUaHJlYWRTdGF0ZV9HRVQoKSBcCi0gICAgKChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCisjICBkZWZpbmUgUHlUaHJlYWRTdGF0ZV9HRVQoKSBQeVRocmVhZFN0YXRlX0dldCgpCiAjZW5kaWYKIAogdHlwZWRlZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0cmhleC5oIGIvSW5jbHVkZS9weXN0cmhleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYzEyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5c3RyaGV4LmgKQEAgLTAsMCArMSwxNyBAQAorI2lmbmRlZiBQeV9TVFJIRVhfSAorI2RlZmluZSBQeV9TVFJIRVhfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFJldHVybnMgYSBzdHIoKSBjb250YWluaW5nIHRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXgoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CisvKiBSZXR1cm5zIGEgYnl0ZXMoKSBjb250YWluaW5nIHRoZSBBU0NJSSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXhfYnl0ZXMoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiAhUHlfU1RSSEVYX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IDJmYzU1NzguLmY5MjE0OGQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtOSw3ICs5LDggQEAKIAogI2RlZmluZSBQeUNGX01BU0sgKENPX0ZVVFVSRV9ESVZJU0lPTiB8IENPX0ZVVFVSRV9BQlNPTFVURV9JTVBPUlQgfCBcCiAgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX1dJVEhfU1RBVEVNRU5UIHwgQ09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OIHwgXAotICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9VTklDT0RFX0xJVEVSQUxTIHwgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwpCisgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMgfCBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCB8IFwKKyAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1ApCiAjZGVmaW5lIFB5Q0ZfTUFTS19PQlNPTEVURSAoQ09fTkVTVEVEKQogI2RlZmluZSBQeUNGX1NPVVJDRV9JU19VVEY4ICAweDAxMDAKICNkZWZpbmUgUHlDRl9ET05UX0lNUExZX0RFREVOVCAweDAyMDAKQEAgLTIyLDMwICsyMyw2IEBACiB9IFB5Q29tcGlsZXJGbGFnczsKICNlbmRpZgogCi1QeUFQSV9GVU5DKHZvaWQpIFB5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKik7Ci1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7Ci0KLVB5QVBJX0ZVTkModm9pZCkgUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICopOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFB5dGhvbkhvbWUodm9pZCk7Ci0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLS8qIE9ubHkgdXNlZCBieSBhcHBsaWNhdGlvbnMgdGhhdCBlbWJlZCB0aGUgaW50ZXJwcmV0ZXIgYW5kIG5lZWQgdG8KLSAqIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBlbmNvZGluZyBkZXRlcm1pbmF0aW9uIG1lY2hhbmlzbQotICovCi1QeUFQSV9GVU5DKGludCkgUHlfU2V0U3RhbmRhcmRTdHJlYW1FbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7Ci0jZW5kaWYKLQotUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplRXgoaW50KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKLSNlbmRpZgotUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKLVB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwotUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOwotCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlSdW5fU2ltcGxlU3RyaW5nRmxhZ3MoY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CiBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CkBAIC0xNjYsMjYgKzE0Myw2IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1ByaW50RXgoaW50KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfRGlzcGxheShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAotLyogUHlfUHlBdEV4aXQgaXMgZm9yIHRoZSBhdGV4aXQgbW9kdWxlLCBQeV9BdEV4aXQgaXMgZm9yIGxvdy1sZXZlbAotICogZXhpdCBmdW5jdGlvbnMuCi0gKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5X1B5QXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKLQotUHlBUElfRlVOQyh2b2lkKSBQeV9FeGl0KGludCk7Ci0KLS8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4gKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpOwotCi1QeUFQSV9GVU5DKGludCkgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKiwgY29uc3QgY2hhciAqKTsKLSNlbmRpZgotCi0vKiBCb290c3RyYXAgKi8KLVB5QVBJX0ZVTkMoaW50KSBQeV9NYWluKGludCBhcmdjLCB3Y2hhcl90ICoqYXJndik7Ci0KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFVzZSBtYWNyb3MgZm9yIGEgYnVuY2ggb2Ygb2xkIHZhcmlhbnRzICovCiAjZGVmaW5lIFB5UnVuX1N0cmluZyhzdHIsIHMsIGcsIGwpIFB5UnVuX1N0cmluZ0ZsYWdzKHN0ciwgcywgZywgbCwgTlVMTCkKQEAgLTIwNyw2NCArMTY0LDYgQEAKICAgICBQeVJ1bl9GaWxlRXhGbGFncyhmcCwgcCwgcywgZywgbCwgMCwgZmxhZ3MpCiAjZW5kaWYKIAotLyogSW4gZ2V0cGF0aC5jICovCi1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKHZvaWQpOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByZWZpeCh2b2lkKTsKLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRFeGVjUHJlZml4KHZvaWQpOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFBhdGgodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpICAgICAgUHlfU2V0UGF0aChjb25zdCB3Y2hhcl90ICopOwotI2lmZGVmIE1TX1dJTkRPV1MKLWludCBfUHlfQ2hlY2tQeXRob24zKCk7Ci0jZW5kaWYKLQotLyogSW4gdGhlaXIgb3duIGZpbGVzICovCi1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRQbGF0Zm9ybSh2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ2lkZW50aWZpZXIodm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hndmVyc2lvbih2b2lkKTsKLSNlbmRpZgotCi0vKiBJbnRlcm5hbCAtLSB2YXJpb3VzIG9uZS10aW1lIGluaXRpYWxpemF0aW9ucyAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCdWlsdGluX0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19Jbml0KHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQoUHlPYmplY3QgKiBibHRpbm1vZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKGludCkgX1B5RnJhbWVfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyhpbnQpIFB5Qnl0ZUFycmF5X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9Jbml0KHZvaWQpOwotI2VuZGlmCi0KLS8qIFZhcmlvdXMgaW50ZXJuYWwgZmluYWxpemVycyAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5TWV0aG9kX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5RnJhbWVfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlDRnVuY3Rpb25fRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5VHVwbGVfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlMaXN0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5U2V0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlCeXRlQXJyYXlfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlGbG9hdF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19EdW1wU2h1dGRvd25TdGF0cyh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlUeXBlX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9GaW5pKHZvaWQpOwotCi1QeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7Ci0jZW5kaWYKLQogLyogU3R1ZmYgd2l0aCBubyBwcm9wZXIgaG9tZSAoeWV0KSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhjaGFyICopIFB5T1NfUmVhZGxpbmUoRklMRSAqLCBGSUxFICosIGNvbnN0IGNoYXIgKik7CkBAIC0yOTAsMTQgKzE4OSw2IEBACiBQeUFQSV9GVU5DKGludCkgUHlPU19DaGVja1N0YWNrKHZvaWQpOwogI2VuZGlmCiAKLS8qIFNpZ25hbHMgKi8KLXR5cGVkZWYgdm9pZCAoKlB5T1Nfc2lnaGFuZGxlcl90KShpbnQpOwotUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19nZXRzaWcoaW50KTsKLVB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1Nfc2V0c2lnKGludCwgUHlPU19zaWdoYW5kbGVyX3QpOwotCi0vKiBSYW5kb20gKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tICh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGltZS5oIGIvSW5jbHVkZS9weXRpbWUuaAppbmRleCBiMGZjNmQwLi40OTQzMjJjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGltZS5oCisrKyBiL0luY2x1ZGUvcHl0aW1lLmgKQEAgLTEzLDYwICsxMywyNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfR0VUVElNRU9GREFZCi10eXBlZGVmIHN0cnVjdCB0aW1ldmFsIF9QeVRpbWVfdGltZXZhbDsKKyNpZmRlZiBQWV9JTlQ2NF9UCisvKiBfUHlUaW1lX3Q6IFB5dGhvbiB0aW1lc3RhbXAgd2l0aCBzdWJzZWNvbmQgcHJlY2lzaW9uLiBJdCBjYW4gYmUgdXNlZCB0bworICAgc3RvcmUgYSBkdXJhdGlvbiwgYW5kIHNvIGluZGlyZWN0bHkgYSBkYXRlIChyZWxhdGVkIHRvIGFub3RoZXIgZGF0ZSwgbGlrZQorICAgVU5JWCBlcG9jaCkuICovCit0eXBlZGVmIFBZX0lOVDY0X1QgX1B5VGltZV90OworI2RlZmluZSBfUHlUaW1lX01JTiBQWV9MTE9OR19NSU4KKyNkZWZpbmUgX1B5VGltZV9NQVggUFlfTExPTkdfTUFYCiAjZWxzZQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIHRpbWVfdCAgICAgICB0dl9zZWM7ICAgLyogc2Vjb25kcyBzaW5jZSBKYW4uIDEsIDE5NzAgKi8KLSAgICBsb25nICAgICAgICAgdHZfdXNlYzsgIC8qIGFuZCBtaWNyb3NlY29uZHMgKi8KLX0gX1B5VGltZV90aW1ldmFsOworIyAgZXJyb3IgIl9QeVRpbWVfdCBuZWVkIHNpZ25lZCA2NC1iaXQgaW50ZWdlciB0eXBlIgogI2VuZGlmCiAKLS8qIFN0cnVjdHVyZSB1c2VkIGJ5IHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uOwotICAgIGludCBtb25vdG9uaWM7Ci0gICAgaW50IGFkanVzdGFibGU7Ci0gICAgZG91YmxlIHJlc29sdXRpb247Ci19IF9QeV9jbG9ja19pbmZvX3Q7Ci0KLS8qIFNpbWlsYXIgdG8gUE9TSVggZ2V0dGltZW9mZGF5IGJ1dCBjYW5ub3QgZmFpbC4gIElmIHN5c3RlbSBnZXR0aW1lb2ZkYXkKLSAqIGZhaWxzIG9yIGlzIG5vdCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byBsb3dlciByZXNvbHV0aW9uIGNsb2Nrcy4KLSAqLwotUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKTsKLQotLyogU2ltaWxhciB0byBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGJ1dCByZXRyaWV2ZSBhbHNvIGluZm9ybWF0aW9uIG9uIHRoZQotICogY2xvY2sgdXNlZCB0byBnZXQgdGhlIGN1cnJlbnQgdGltZS4gKi8KLVB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygKLSAgICBfUHlUaW1lX3RpbWV2YWwgKnRwLAotICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOwotCi0jZGVmaW5lIF9QeVRpbWVfQUREX1NFQ09ORFModHYsIGludGVydmFsKSBcCi1kbyB7IFwKLSAgICB0di50dl91c2VjICs9IChsb25nKSAoKChsb25nKSBpbnRlcnZhbCAtIGludGVydmFsKSAqIDEwMDAwMDApOyBcCi0gICAgdHYudHZfc2VjICs9ICh0aW1lX3QpIGludGVydmFsICsgKHRpbWVfdCkgKHR2LnR2X3VzZWMgLyAxMDAwMDAwKTsgXAotICAgIHR2LnR2X3VzZWMgJT0gMTAwMDAwMDsgXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBfUHlUaW1lX0lOVEVSVkFMKHR2X3N0YXJ0LCB0dl9lbmQpIFwKLSAgICAoKHR2X2VuZC50dl9zZWMgLSB0dl9zdGFydC50dl9zZWMpICsgXAotICAgICAodHZfZW5kLnR2X3VzZWMgLSB0dl9zdGFydC50dl91c2VjKSAqIDAuMDAwMDAxKQotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi0KIHR5cGVkZWYgZW51bSB7Ci0gICAgLyogUm91bmQgdG93YXJkcyB6ZXJvLiAqLwotICAgIF9QeVRpbWVfUk9VTkRfRE9XTj0wLAotICAgIC8qIFJvdW5kIGF3YXkgZnJvbSB6ZXJvLiAqLwotICAgIF9QeVRpbWVfUk9VTkRfVVAKKyAgICAvKiBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKS4KKyAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCB0byByZWFkIGEgY2xvY2suICovCisgICAgX1B5VGltZV9ST1VORF9GTE9PUj0wLAorICAgIC8qIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpLgorICAgICAgIEZvciBleGFtcGxlLCB1c2VkIGZvciB0aW1lb3V0IHRvIHdhaXQgImF0IGxlYXN0IiBOIHNlY29uZHMuICovCisgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HCiB9IF9QeVRpbWVfcm91bmRfdDsKIAotLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIHRpbWVfdC4gKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZV90KAotICAgIFB5T2JqZWN0ICpvYmosCi0gICAgdGltZV90ICpzZWMsCi0gICAgX1B5VGltZV9yb3VuZF90KTsKLQogLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tVGltZV90KAogICAgIHRpbWVfdCBzZWMpOwpAQCAtNzUsNiArNDEsMTIgQEAKIFB5QVBJX0ZVTkModGltZV90KSBfUHlMb25nX0FzVGltZV90KAogICAgIFB5T2JqZWN0ICpvYmopOwogCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gdGltZV90LiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYywKKyAgICBfUHlUaW1lX3JvdW5kX3QpOworCiAvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1ldmFsIHN0cnVjdHVyZS4KICAgIHVzZWMgaXMgaW4gdGhlIHJhbmdlIFswOyA5OTk5OTldIGFuZCByb3VuZGVkIHRvd2FyZHMgemVyby4KICAgIEZvciBleGFtcGxlLCAtMS4yIGlzIGNvbnZlcnRlZCB0byAoLTIsIDgwMDAwMCkuICovCkBAIC05MiwxMCArNjQsMTI2IEBACiAgICAgdGltZV90ICpzZWMsCiAgICAgbG9uZyAqbnNlYywKICAgICBfUHlUaW1lX3JvdW5kX3QpOworCisKKy8qIENyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tU2Vjb25kcyhpbnQgc2Vjb25kcyk7CisKKy8qIE1hY3JvIHRvIGNyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMsIG5vIGludGVnZXIgb3ZlcmZsb3cuCisgICBPbmx5IHVzZSB0aGUgbWFjcm8gZm9yIHNtYWxsIHZhbHVlcywgcHJlZmVyIF9QeVRpbWVfRnJvbVNlY29uZHMoKS4gKi8KKyNkZWZpbmUgX1BZVElNRV9GUk9NU0VDT05EUyhzZWNvbmRzKSBcCisgICAgICAgICAgICAoKF9QeVRpbWVfdCkoc2Vjb25kcykgKiAoMTAwMCAqIDEwMDAgKiAxMDAwKSkKKworLyogQ3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKTsKKworLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIChQeXRob24gZmxvYXQgb3IgaW50KSB0byBhIHRpbWV0YW1wLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdChfUHlUaW1lX3QgKnQsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyAoUHl0aG9uIGZsb2F0IG9yIGludCwgMTBeLTMpIHRvIGEgdGltZXRhbXAuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0Zyb21NaWxsaXNlY29uZHNPYmplY3QoX1B5VGltZV90ICp0LAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCBhIHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgQyBkb3VibGUuICovCitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoX1B5VGltZV90IHQpOworCisvKiBDb252ZXJ0IHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgKDEwXi0zIHNlY29uZHMpLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoX1B5VGltZV90IHQsCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCB0aW1lc3RhbXAgdG8gYSBudW1iZXIgb2YgbWljcm9zZWNvbmRzICgxMF4tNiBzZWNvbmRzKS4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0FzTWljcm9zZWNvbmRzKF9QeVRpbWVfdCB0LAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIENvbnZlcnQgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICgxMF4tOSBzZWNvbmRzKSBhcyBhIFB5dGhvbiBpbnQKKyAgIG9iamVjdC4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KTsKKworLyogQ29udmVydCBhIHRpbWVzdGFtcCB0byBhIHRpbWV2YWwgc3RydWN0dXJlIChtaWNyb3NlY29uZCByZXNvbHV0aW9uKS4KKyAgIHR2X3VzZWMgaXMgYWx3YXlzIHBvc2l0aXZlLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgaWYgdGhlIGNvbnZlcnNpb24gb3ZlcmZsb3dlZCwKKyAgIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Bc1RpbWV2YWwoX1B5VGltZV90IHQsCisgICAgc3RydWN0IHRpbWV2YWwgKnR2LAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIFNpbWlsYXIgdG8gX1B5VGltZV9Bc1RpbWV2YWwoKSwgYnV0IGRvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKF9QeVRpbWVfdCB0LAorICAgIHN0cnVjdCB0aW1ldmFsICp0diwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IGEgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIHNlY29uZHMgKHNlY3MpIGFuZCBtaWNyb3NlY29uZHMgKHVzKS4KKyAgIHVzIGlzIGFsd2F5cyBwb3NpdGl2ZS4gVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIF9QeVRpbWVfQXNUaW1ldmFsKCkKKyAgIGV4Y2VwdCB0aGF0IHNlY3MgaXMgYWx3YXlzIGEgdGltZV90IHR5cGUsIHdoZXJlYXMgdGhlIHRpbWV2YWwgc3RydWN0dXJlCisgICB1c2VzIGEgQyBsb25nIGZvciB0dl9zZWMgb24gV2luZG93cy4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIGlmIHRoZSBjb252ZXJzaW9uIG92ZXJmbG93ZWQsCisgICByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1ldmFsVGltZV90KAorICAgIF9QeVRpbWVfdCB0LAorICAgIHRpbWVfdCAqc2VjcywKKyAgICBpbnQgKnVzLAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKKy8qIENvbnZlcnQgYSB0aW1lc3RhbXAgdG8gYSB0aW1lc3BlYyBzdHJ1Y3R1cmUgKG5hbm9zZWNvbmQgcmVzb2x1dGlvbikuCisgICB0dl9uc2VjIGlzIGFsd2F5cyBwb3NpdGl2ZS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1lc3BlYyhfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWVzcGVjICp0cyk7CiAjZW5kaWYKIAotLyogRHVtbXkgdG8gZm9yY2UgbGlua2luZy4gKi8KLVB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9Jbml0KHZvaWQpOworLyogR2V0IHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLgorCisgICBUaGUgZnVuY3Rpb24gY2Fubm90IGZhaWwuIF9QeVRpbWVfSW5pdCgpIGVuc3VyZXMgdGhhdCB0aGUgc3lzdGVtIGNsb2NrCisgICB3b3Jrcy4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrKHZvaWQpOworCisvKiBHZXQgdGhlIHRpbWUgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jayB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuCisgICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLiBUaGUgcmVmZXJlbmNlIHBvaW50IG9mCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIFRoZSBmdW5jdGlvbiBjYW5ub3QgZmFpbC4gX1B5VGltZV9Jbml0KCkgZW5zdXJlcyB0aGF0IGEgbW9ub3RvbmljIGNsb2NrCisgICBpcyBhdmFpbGFibGUgYW5kIHdvcmtzLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2sodm9pZCk7CisKKworLyogU3RydWN0dXJlIHVzZWQgYnkgdGltZS5nZXRfY2xvY2tfaW5mbygpICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb247CisgICAgaW50IG1vbm90b25pYzsKKyAgICBpbnQgYWRqdXN0YWJsZTsKKyAgICBkb3VibGUgcmVzb2x1dGlvbjsKK30gX1B5X2Nsb2NrX2luZm9fdDsKKworLyogR2V0IHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLgorICogRmlsbCBjbG9jayBpbmZvcm1hdGlvbiBpZiBpbmZvIGlzIG5vdCBOVUxMLgorICogUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuCisgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8oCisgICAgX1B5VGltZV90ICp0LAorICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOworCisvKiBHZXQgdGhlIHRpbWUgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jayB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuCisgICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLiBUaGUgcmVmZXJlbmNlIHBvaW50IG9mCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIEZpbGwgaW5mbyAoaWYgc2V0KSB3aXRoIGluZm9ybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiB1c2VkIHRvIGdldCB0aGUgdGltZS4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKAorICAgIF9QeVRpbWVfdCAqdCwKKyAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKKworCisvKiBJbml0aWFsaXplIHRpbWUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0luaXQodm9pZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggYWUzZjU1Ni4uZjE3YmMxYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC02LDM4ICs2LDQzIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKLS8qCi1UaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgorLyogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlOgogCiAxLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTAogMi4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teQogMy4gRHVtbXk6ICAga2V5ID09IGR1bW15CiAKLU5vdGU6IC5wb3AoKSBhYnVzZXMgdGhlIGhhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcwotbm8gbWVhbmluZyBvdGhlcndpc2UuCitUaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaGF2ZSBubyBtZWFuaW5nLgorVGhlIGhhc2ggZmllbGQgb2YgRHVtbW55IHNsb3RzIGFyZSBzZXQgdG8gLTEKK21lYW5pbmcgdGhhdCBkdW1teSBlbnRyaWVzIGNhbiBiZSBkZXRlY3RlZCBieQorZWl0aGVyIGVudHJ5LT5rZXk9PWR1bW15IG9yIGJ5IGVudHJ5LT5oYXNoPT0tMS4KICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCisKICNkZWZpbmUgUHlTZXRfTUlOU0laRSA4CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIHRoZSBrZXkuICovCiAgICAgUHlPYmplY3QgKmtleTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiB0aGUga2V5ICovCiB9IHNldGVudHJ5OwogCisvKiBUaGUgU2V0T2JqZWN0IGRhdGEgc3RydWN0dXJlIGlzIHNoYXJlZCBieSBzZXQgYW5kIGZyb3plbnNldCBvYmplY3RzLgogCi0vKgotVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBzaGFyZWQgYnkgc2V0IGFuZCBmcm96ZW5zZXQgb2JqZWN0cy4KK0ludmFyaWFudCBmb3Igc2V0czoKKyAtIGhhc2ggaXMgLTEKKworSW52YXJpYW50cyBmb3IgZnJvemVuc2V0czoKKyAtIGRhdGEgaXMgaW1tdXRhYmxlLgorIC0gaGFzaCBpcyB0aGUgaGFzaCBvZiB0aGUgZnJvemVuc2V0IG9yIC0xIGlmIG5vdCBjb21wdXRlZCB5ZXQuCisKICovCiAKLXR5cGVkZWYgc3RydWN0IF9zZXRvYmplY3QgUHlTZXRPYmplY3Q7Ci1zdHJ1Y3QgX3NldG9iamVjdCB7Cit0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogCi0gICAgUHlfc3NpemVfdCBmaWxsOyAgLyogIyBBY3RpdmUgKyAjIER1bW15ICovCi0gICAgUHlfc3NpemVfdCB1c2VkOyAgLyogIyBBY3RpdmUgKi8KKyAgICBQeV9zc2l6ZV90IGZpbGw7ICAgICAgICAgICAgLyogTnVtYmVyIGFjdGl2ZSBhbmQgZHVtbXkgZW50cmllcyovCisgICAgUHlfc3NpemVfdCB1c2VkOyAgICAgICAgICAgIC8qIE51bWJlciBhY3RpdmUgZW50cmllcyAqLwogCiAgICAgLyogVGhlIHRhYmxlIGNvbnRhaW5zIG1hc2sgKyAxIHNsb3RzLCBhbmQgdGhhdCdzIGEgcG93ZXIgb2YgMi4KICAgICAgKiBXZSBzdG9yZSB0aGUgbWFzayBpbnN0ZWFkIG9mIHRoZSBzaXplIGJlY2F1c2UgdGhlIG1hc2sgaXMgbW9yZQpAQCAtNDUsMzMgKzUwLDQyIEBACiAgICAgICovCiAgICAgUHlfc3NpemVfdCBtYXNrOwogCi0gICAgLyogdGFibGUgcG9pbnRzIHRvIHNtYWxsdGFibGUgZm9yIHNtYWxsIHRhYmxlcywgZWxzZSB0bwotICAgICAqIGFkZGl0aW9uYWwgbWFsbG9jJ2VkIG1lbW9yeS4gIHRhYmxlIGlzIG5ldmVyIE5VTEwhICBUaGlzIHJ1bGUKLSAgICAgKiBzYXZlcyByZXBlYXRlZCBydW50aW1lIG51bGwtdGVzdHMuCisgICAgLyogVGhlIHRhYmxlIHBvaW50cyB0byBhIGZpeGVkLXNpemUgc21hbGx0YWJsZSBmb3Igc21hbGwgdGFibGVzCisgICAgICogb3IgdG8gYWRkaXRpb25hbCBtYWxsb2MnZWQgbWVtb3J5IGZvciBiaWdnZXIgdGFibGVzLgorICAgICAqIFRoZSB0YWJsZSBwb2ludGVyIGlzIG5ldmVyIE5VTEwgd2hpY2ggc2F2ZXMgdXMgZnJvbSByZXBlYXRlZAorICAgICAqIHJ1bnRpbWUgbnVsbC10ZXN0cy4KICAgICAgKi8KICAgICBzZXRlbnRyeSAqdGFibGU7Ci0gICAgc2V0ZW50cnkgKigqbG9va3VwKShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKTsKLSAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogb25seSB1c2VkIGJ5IGZyb3plbnNldCBvYmplY3RzICovCi0gICAgc2V0ZW50cnkgc21hbGx0YWJsZVtQeVNldF9NSU5TSVpFXTsKKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogT25seSB1c2VkIGJ5IGZyb3plbnNldCBvYmplY3RzICovCisgICAgUHlfc3NpemVfdCBmaW5nZXI7ICAgICAgICAgIC8qIFNlYXJjaCBmaW5nZXIgZm9yIHBvcCgpICovCiAKKyAgICBzZXRlbnRyeSBzbWFsbHRhYmxlW1B5U2V0X01JTlNJWkVdOwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgICAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotfTsKLSNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworfSBQeVNldE9iamVjdDsKKworI2RlZmluZSBQeVNldF9HRVRfU0laRShzbykgKCgoUHlTZXRPYmplY3QgKikoc28pKS0+dXNlZCkKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlTZXRfRHVtbXk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCk7CitQeUFQSV9GVU5DKGludCkgX1B5U2V0X1VwZGF0ZShQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqaXRlcmFibGUpOworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CisKKyNlbmRpZiAvKiBTZWN0aW9uIGV4Y2x1ZGVkIGJ5IFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVNldF9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RnJvemVuU2V0X1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTZXRJdGVyX1R5cGU7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVNldF9EdW1teTsKLSNlbmRpZgogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X05ldyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGcm96ZW5TZXRfTmV3KFB5T2JqZWN0ICopOwogCi0vKiBJbnZhcmlhbnRzIGZvciBmcm96ZW5zZXRzOgotICogICAgIGRhdGEgaXMgaW1tdXRhYmxlLgotICogICAgIGhhc2ggaXMgdGhlIGhhc2ggb2YgdGhlIGZyb3plbnNldCBvciAtMSBpZiBub3QgY29tcHV0ZWQgeWV0LgotICogSW52YXJpYW50cyBmb3Igc2V0czoKLSAqICAgICBoYXNoIGlzIC0xCi0gKi8KK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9BZGQoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ29udGFpbnMoUHlPYmplY3QgKmFueXNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfRGlzY2FyZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVNldF9TaXplKFB5T2JqZWN0ICphbnlzZXQpOwogCiAjZGVmaW5lIFB5RnJvemVuU2V0X0NoZWNrRXhhY3Qob2IpIChQeV9UWVBFKG9iKSA9PSAmUHlGcm96ZW5TZXRfVHlwZSkKICNkZWZpbmUgUHlBbnlTZXRfQ2hlY2tFeGFjdChvYikgXApAQCAtODcsMjYgKzEwMSw2IEBACiAgICAgKFB5X1RZUEUob2IpID09ICZQeUZyb3plblNldF9UeXBlIHx8IFwKICAgICAgIFB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYiksICZQeUZyb3plblNldF9UeXBlKSkKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNldF9OZXcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnJvemVuU2V0X05ldyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlTZXRfU2l6ZShQeU9iamVjdCAqYW55c2V0KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlTZXRfR0VUX1NJWkUoc28pICgoKFB5U2V0T2JqZWN0ICopKHNvKSktPnVzZWQpCi0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhcihQeU9iamVjdCAqc2V0KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9Db250YWlucyhQeU9iamVjdCAqYW55c2V0LCBQeU9iamVjdCAqa2V5KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9EaXNjYXJkKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICprZXkpOwotUHlBUElfRlVOQyhpbnQpIFB5U2V0X0FkZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhpbnQpIF9QeVNldF9VcGRhdGUoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKml0ZXJhYmxlKTsKLQotUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7Ci0jZW5kaWYKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2xpY2VvYmplY3QuaCBiL0luY2x1ZGUvc2xpY2VvYmplY3QuaAppbmRleCBmN2VlOTBjLi4yNjM3MGUwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3NsaWNlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zbGljZW9iamVjdC5oCkBAIC00MSw3ICs0MSw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlTbGljZV9HZXRJbmRpY2VzKFB5T2JqZWN0ICpyLCBQeV9zc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgUHlfc3NpemVfdCAqc3RlcCk7CiBQeUFQSV9GVU5DKGludCkgUHlTbGljZV9HZXRJbmRpY2VzRXgoUHlPYmplY3QgKnIsIFB5X3NzaXplX3QgbGVuZ3RoLAotCQkJCSAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgCisJCQkJICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICpzdG9wLAogCQkJCSAgICBQeV9zc2l6ZV90ICpzdGVwLCBQeV9zc2l6ZV90ICpzbGljZWxlbmd0aCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IDFjZmQ4ODQuLjE0MDljZDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTQzLDcgKzQzLDYgQEAKICAgICBQeU9iamVjdCAqc3RlX2NoaWxkcmVuOyAgLyogbGlzdCBvZiBjaGlsZCBibG9ja3MgKi8KICAgICBQeU9iamVjdCAqc3RlX2RpcmVjdGl2ZXM7LyogbG9jYXRpb25zIG9mIGdsb2JhbCBhbmQgbm9ubG9jYWwgc3RhdGVtZW50cyAqLwogICAgIF9QeV9ibG9ja190eSBzdGVfdHlwZTsgICAvKiBtb2R1bGUsIGNsYXNzLCBvciBmdW5jdGlvbiAqLwotICAgIGludCBzdGVfdW5vcHRpbWl6ZWQ7ICAgICAvKiBmYWxzZSBpZiBuYW1lc3BhY2UgaXMgb3B0aW1pemVkICovCiAgICAgaW50IHN0ZV9uZXN0ZWQ7ICAgICAgLyogdHJ1ZSBpZiBibG9jayBpcyBuZXN0ZWQgKi8KICAgICB1bnNpZ25lZCBzdGVfZnJlZSA6IDE7ICAgICAgICAvKiB0cnVlIGlmIGJsb2NrIGhhcyBmcmVlIHZhcmlhYmxlcyAqLwogICAgIHVuc2lnbmVkIHN0ZV9jaGlsZF9mcmVlIDogMTsgIC8qIHRydWUgaWYgYSBjaGlsZCBibG9jayBoYXMgZnJlZSB2YXJzLApAQCAtMTA4LDEwICsxMDcsNiBAQAogI2RlZmluZSBGUkVFIDQKICNkZWZpbmUgQ0VMTCA1CiAKLS8qIFRoZSBmb2xsb3dpbmcgdHdvIG5hbWVzIGFyZSB1c2VkIGZvciB0aGUgc3RlX3Vub3B0aW1pemVkIGJpdCBmaWVsZCAqLwotI2RlZmluZSBPUFRfSU1QT1JUX1NUQVIgMQotI2RlZmluZSBPUFRfVE9QTEVWRUwgMiAgLyogdG9wLWxldmVsIG5hbWVzLCBpbmNsdWRpbmcgZXZhbCBhbmQgZXhlYyAqLwotCiAjZGVmaW5lIEdFTkVSQVRPUiAxCiAjZGVmaW5lIEdFTkVSQVRPUl9FWFBSRVNTSU9OIDIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS90b2tlbi5oIGIvSW5jbHVkZS90b2tlbi5oCmluZGV4IDkwNTAyMmIuLjU5NWFmYTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdG9rZW4uaAorKysgYi9JbmNsdWRlL3Rva2VuLmgKQEAgLTU4LDEzICs1OCwxNiBAQAogI2RlZmluZSBET1VCTEVTVEFSRVFVQUwJNDYKICNkZWZpbmUgRE9VQkxFU0xBU0gJNDcKICNkZWZpbmUgRE9VQkxFU0xBU0hFUVVBTCA0OAotI2RlZmluZSBBVCAgICAgICAgICAgICAgNDkJCi0jZGVmaW5lIFJBUlJPVyAgICAgICAgICA1MAotI2RlZmluZSBFTExJUFNJUyAgICAgICAgNTEKKyNkZWZpbmUgQVQgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIEFURVFVQUwJCTUwCisjZGVmaW5lIFJBUlJPVyAgICAgICAgICA1MQorI2RlZmluZSBFTExJUFNJUyAgICAgICAgNTIKIC8qIERvbid0IGZvcmdldCB0byB1cGRhdGUgdGhlIHRhYmxlIF9QeVBhcnNlcl9Ub2tlbk5hbWVzIGluIHRva2VuaXplci5jISAqLwotI2RlZmluZSBPUAkJNTIKLSNkZWZpbmUgRVJST1JUT0tFTgk1MwotI2RlZmluZSBOX1RPS0VOUwk1NAorI2RlZmluZSBPUAkJNTMKKyNkZWZpbmUgQVdBSVQJCTU0CisjZGVmaW5lIEFTWU5DCQk1NQorI2RlZmluZSBFUlJPUlRPS0VOCTU2CisjZGVmaW5lIE5fVE9LRU5TCTU3CiAKIC8qIFNwZWNpYWwgZGVmaW5pdGlvbnMgZm9yIGNvb3BlcmF0aW9uIHdpdGggcGFyc2VyICovCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHlwZXNsb3RzLmggYi9JbmNsdWRlL3R5cGVzbG90cy5oCmluZGV4IGFkM2NkZmIuLjBjZTZhMzcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHlwZXNsb3RzLmgKKysrIGIvSW5jbHVkZS90eXBlc2xvdHMuaApAQCAtNzQsMyArNzQsMTIgQEAKICNkZWZpbmUgUHlfdHBfbWVtYmVycyA3MgogI2RlZmluZSBQeV90cF9nZXRzZXQgNzMKICNkZWZpbmUgUHlfdHBfZnJlZSA3NAorI2RlZmluZSBQeV9uYl9tYXRyaXhfbXVsdGlwbHkgNzUKKyNkZWZpbmUgUHlfbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHkgNzYKKyNkZWZpbmUgUHlfYW1fYXdhaXQgNzcKKyNkZWZpbmUgUHlfYW1fYWl0ZXIgNzgKKyNkZWZpbmUgUHlfYW1fYW5leHQgNzkKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCisvKiBOZXcgaW4gMy41ICovCisjZGVmaW5lIFB5X3RwX2ZpbmFsaXplIDgwCisjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdWNuaGFzaC5oIGIvSW5jbHVkZS91Y25oYXNoLmgKaW5kZXggOGRlOWJhMC4uNDUzNjJlOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS91Y25oYXNoLmgKKysrIGIvSW5jbHVkZS91Y25oYXNoLmgKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBpbnQgc2l6ZTsKIAogICAgIC8qIEdldCBuYW1lIGZvciBhIGdpdmVuIGNoYXJhY3RlciBjb2RlLiAgUmV0dXJucyBub24temVybyBpZgotICAgICAgIHN1Y2Nlc3MsIHplcm8gaWYgbm90LiAgRG9lcyBub3Qgc2V0IFB5dGhvbiBleGNlcHRpb25zLiAKKyAgICAgICBzdWNjZXNzLCB6ZXJvIGlmIG5vdC4gIERvZXMgbm90IHNldCBQeXRob24gZXhjZXB0aW9ucy4KICAgICAgICBJZiBzZWxmIGlzIE5VTEwsIGRhdGEgY29tZSBmcm9tIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlLgogICAgICAgIElmIGl0IGlzIG5vdCBOVUxMLCBpdCBzaG91bGQgYmUgYSB1bmljb2RlZGF0YS51Y2RfWF9ZX1ogb2JqZWN0ICovCiAgICAgaW50ICgqZ2V0bmFtZSkoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLApkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCBkN2IyYWNlLi40YmE2MzI4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtMjA2MCwxMiArMjA2MCw2IEBACiAgICAgUHlPYmplY3QgKmVsZW1lbnQgICAgICAgICAgIC8qIEVsZW1lbnQgc3RyaW5nICovCiAgICAgKTsKIAotLyogQ2hlY2tzIHdoZXRoZXIgdGhlIHN0cmluZyBjb250YWlucyBhbnkgTlVMIGNoYXJhY3RlcnMuICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0ICopOwotI2VuZGlmCi0KIC8qIENoZWNrcyB3aGV0aGVyIGFyZ3VtZW50IGlzIGEgdmFsaWQgaWRlbnRpZmllci4gKi8KIAogUHlBUElfRlVOQyhpbnQpIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIoUHlPYmplY3QgKnMpOwpAQCAtMjI0NSw2ICsyMjM5LDggQEAKICAgICBQeV9VTklDT0RFIGMKICAgICApOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gb3JtYXRMb25nKFB5T2JqZWN0ICosIGludCwgaW50LCBpbnQpOworCiAvKiBDcmVhdGUgYSBjb3B5IG9mIGEgdW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gTlVMTAogICAgYW5kIHJhaXNlIGEgTWVtb3J5RXJyb3IgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsIG90aGVyd2lzZQogICAgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSBQeU1lbV9GcmVlKCkgdG8gZnJlZSB0aGUgYnVmZmVyKS4gKi8KZGlmZiAtLWdpdCBhL0xpYi9fX2Z1dHVyZV9fLnB5IGIvTGliL19fZnV0dXJlX18ucHkKaW5kZXggM2IyZDVlYy4uNjNiMmJlMyAxMDA2NDQKLS0tIGEvTGliL19fZnV0dXJlX18ucHkKKysrIGIvTGliL19fZnV0dXJlX18ucHkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAicHJpbnRfZnVuY3Rpb24iLAogICAgICJ1bmljb2RlX2xpdGVyYWxzIiwKICAgICAiYmFycnlfYXNfRkxVRkwiLAorICAgICJnZW5lcmF0b3Jfc3RvcCIsCiBdCiAKIF9fYWxsX18gPSBbImFsbF9mZWF0dXJlX25hbWVzIl0gKyBhbGxfZmVhdHVyZV9uYW1lcwpAQCAtNzIsNiArNzMsNyBAQAogQ09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OICA9IDB4MTAwMDAgICAjIHByaW50IGZ1bmN0aW9uCiBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyA9IDB4MjAwMDAgIyB1bmljb2RlIHN0cmluZyBsaXRlcmFscwogQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgPSAweDQwMDAwCitDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgID0gMHg4MDAwMCAjIFN0b3BJdGVyYXRpb24gYmVjb21lcyBSdW50aW1lRXJyb3IgaW4gZ2VuZXJhdG9ycwogCiBjbGFzcyBfRmVhdHVyZToKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9uYWxSZWxlYXNlLCBtYW5kYXRvcnlSZWxlYXNlLCBjb21waWxlcl9mbGFnKToKQEAgLTEzMiwzICsxMzQsNyBAQAogYmFycnlfYXNfRkxVRkwgPSBfRmVhdHVyZSgoMywgMSwgMCwgImFscGhhIiwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDMsIDksIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9CQVJSWV9BU19CREZMKQorCitnZW5lcmF0b3Jfc3RvcCA9IF9GZWF0dXJlKCgzLCA1LCAwLCAiYmV0YSIsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgzLCA3LCAwLCAiYWxwaGEiLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1ApCmRpZmYgLS1naXQgYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weSBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CmluZGV4IDMzYjU5YWIuLmY4OWJiNmYgMTAwNjQ0Ci0tLSBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CisrKyBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CkBAIC05LDcgKzksOCBAQAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgc3lzCiAKLV9fYWxsX18gPSBbIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwKK19fYWxsX18gPSBbIkF3YWl0YWJsZSIsICJDb3JvdXRpbmUiLCAiQXN5bmNJdGVyYWJsZSIsICJBc3luY0l0ZXJhdG9yIiwKKyAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsCiAgICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLAogICAgICAgICAgICAiU2V0IiwgIk11dGFibGVTZXQiLAogICAgICAgICAgICAiTWFwcGluZyIsICJNdXRhYmxlTWFwcGluZyIsCkBAIC01MCw2ICs1MSwxMyBAQAogZGljdF9pdGVtcyA9IHR5cGUoe30uaXRlbXMoKSkKICMjIG1pc2MgIyMKIG1hcHBpbmdwcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKK2dlbmVyYXRvciA9IHR5cGUoKGxhbWJkYTogKHlpZWxkKSkoKSkKKyMjIGNvcm91dGluZSAjIworYXN5bmMgZGVmIF9jb3JvKCk6IHBhc3MKK19jb3JvID0gX2Nvcm8oKQorY29yb3V0aW5lID0gdHlwZShfY29ybykKK19jb3JvLmNsb3NlKCkgICMgUHJldmVudCBSZXNvdXJjZVdhcm5pbmcKK2RlbCBfY29ybwogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwpAQCAtNzMsNiArODEsMTEzIEBACiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKK2NsYXNzIEF3YWl0YWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgeWllbGQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBBd2FpdGFibGU6CisgICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186CisgICAgICAgICAgICAgICAgaWYgIl9fYXdhaXRfXyIgaW4gQi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19hd2FpdF9fIl06CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitjbGFzcyBDb3JvdXRpbmUoQXdhaXRhYmxlKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICIiIlNlbmQgYSB2YWx1ZSBpbnRvIHRoZSBjb3JvdXRpbmUuCisgICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgIiIiUmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBjb3JvdXRpbmUuCisgICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHZhbCBpcyBOb25lOgorICAgICAgICAgICAgaWYgdGIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSB0eXAKKyAgICAgICAgICAgIHZhbCA9IHR5cCgpCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdmFsID0gdmFsLndpdGhfdHJhY2ViYWNrKHRiKQorICAgICAgICByYWlzZSB2YWwKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiUmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgY29yb3V0aW5lLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgKEdlbmVyYXRvckV4aXQsIFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0IikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBDb3JvdXRpbmU6CisgICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KKyAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgorICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKKyAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworQ29yb3V0aW5lLnJlZ2lzdGVyKGNvcm91dGluZSkKKworCitjbGFzcyBBc3luY0l0ZXJhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gQXN5bmNJdGVyYXRvcigpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYWJsZToKKyAgICAgICAgICAgIGlmIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworY2xhc3MgQXN5bmNJdGVyYXRvcihBc3luY0l0ZXJhYmxlKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSBvciByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24gd2hlbiBleGhhdXN0ZWQuIiIiCisgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhdG9yOgorICAgICAgICAgICAgaWYgKGFueSgiX19hbmV4dF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykgYW5kCisgICAgICAgICAgICAgICAgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKwogY2xhc3MgSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTEyNCw2ICsyMzksNjQgQEAKIEl0ZXJhdG9yLnJlZ2lzdGVyKHR1cGxlX2l0ZXJhdG9yKQogSXRlcmF0b3IucmVnaXN0ZXIoemlwX2l0ZXJhdG9yKQogCisKK2NsYXNzIEdlbmVyYXRvcihJdGVyYXRvcik6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSBmcm9tIHRoZSBnZW5lcmF0b3IuCisgICAgICAgIFdoZW4gZXhoYXVzdGVkLCByYWlzZSBTdG9wSXRlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZChOb25lKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgZ2VuZXJhdG9yLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICIiIlJhaXNlIGFuIGV4Y2VwdGlvbiBpbiB0aGUgZ2VuZXJhdG9yLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHRiIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgdHlwCisgICAgICAgICAgICB2YWwgPSB0eXAoKQorICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKKyAgICAgICAgcmFpc2UgdmFsCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIlJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGdlbmVyYXRvci4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudGhyb3coR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZXhjZXB0IChHZW5lcmF0b3JFeGl0LCBTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgR2VuZXJhdG9yOgorICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19pdGVyX18nLCAnX19uZXh0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgorICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKKyAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworR2VuZXJhdG9yLnJlZ2lzdGVyKGdlbmVyYXRvcikKKworCiBjbGFzcyBTaXplZChtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtNDUzLDYgKzYyNiw4IEBACiAKIGNsYXNzIE1hcHBpbmdWaWV3KFNpemVkKToKIAorICAgIF9fc2xvdHNfXyA9ICdfbWFwcGluZycsCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFwcGluZyk6CiAgICAgICAgIHNlbGYuX21hcHBpbmcgPSBtYXBwaW5nCiAKQEAgLTQ2NSw2ICs2NDAsOCBAQAogCiBjbGFzcyBLZXlzVmlldyhNYXBwaW5nVmlldywgU2V0KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb21faXRlcmFibGUoc2VsZiwgaXQpOgogICAgICAgICByZXR1cm4gc2V0KGl0KQpAQCAtNDgwLDYgKzY1Nyw4IEBACiAKIGNsYXNzIEl0ZW1zVmlldyhNYXBwaW5nVmlldywgU2V0KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb21faXRlcmFibGUoc2VsZiwgaXQpOgogICAgICAgICByZXR1cm4gc2V0KGl0KQpAQCAtNTAyLDYgKzY4MSw4IEBACiAKIGNsYXNzIFZhbHVlc1ZpZXcoTWFwcGluZ1ZpZXcpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6CiAgICAgICAgICAgICBpZiB2YWx1ZSA9PSBzZWxmLl9tYXBwaW5nW2tleV06CkBAIC02NDcsMTMgKzgyOCwyMyBAQAogICAgICAgICBmb3IgaSBpbiByZXZlcnNlZChyYW5nZShsZW4oc2VsZikpKToKICAgICAgICAgICAgIHlpZWxkIHNlbGZbaV0KIAotICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSk6Ci0gICAgICAgICcnJ1MuaW5kZXgodmFsdWUpIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLgorICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSwgc3RhcnQ9MCwgc3RvcD1Ob25lKToKKyAgICAgICAgJycnUy5pbmRleCh2YWx1ZSwgW3N0YXJ0LCBbc3RvcF1dKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS4KICAgICAgICAgICAgUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LgogICAgICAgICAnJycKLSAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKHNlbGYpOgotICAgICAgICAgICAgaWYgdiA9PSB2YWx1ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gaQorICAgICAgICBpZiBzdGFydCBpcyBub3QgTm9uZSBhbmQgc3RhcnQgPCAwOgorICAgICAgICAgICAgc3RhcnQgPSBtYXgobGVuKHNlbGYpICsgc3RhcnQsIDApCisgICAgICAgIGlmIHN0b3AgaXMgbm90IE5vbmUgYW5kIHN0b3AgPCAwOgorICAgICAgICAgICAgc3RvcCArPSBsZW4oc2VsZikKKworICAgICAgICBpID0gc3RhcnQKKyAgICAgICAgd2hpbGUgc3RvcCBpcyBOb25lIG9yIGkgPCBzdG9wOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHNlbGZbaV0gPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaSArPSAxCiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKIAogICAgIGRlZiBjb3VudChzZWxmLCB2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvX2NvbXByZXNzaW9uLnB5IGIvTGliL19jb21wcmVzc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDBmMzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL19jb21wcmVzc2lvbi5weQpAQCAtMCwwICsxLDE1MiBAQAorIiIiSW50ZXJuYWwgY2xhc3NlcyB1c2VkIGJ5IHRoZSBnemlwLCBsem1hIGFuZCBiejIgbW9kdWxlcyIiIgorCitpbXBvcnQgaW8KKworCitCVUZGRVJfU0laRSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUgICMgQ29tcHJlc3NlZCBkYXRhIHJlYWQgY2h1bmsgc2l6ZQorCisKK2NsYXNzIEJhc2VTdHJlYW0oaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgICIiIk1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYud3JpdGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCisgICAgICAgIGlmIG5vdCBzZWxmLnNlZWthYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCisKKworY2xhc3MgRGVjb21wcmVzc1JlYWRlcihpby5SYXdJT0Jhc2UpOgorICAgICIiIkFkYXB0cyB0aGUgZGVjb21wcmVzc29yIEFQSSB0byBhIFJhd0lPQmFzZSByZWFkZXIgQVBJIiIiCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnAsIGRlY29tcF9mYWN0b3J5LCB0cmFpbGluZ19lcnJvcj0oKSwgKipkZWNvbXBfYXJncyk6CisgICAgICAgIHNlbGYuX2ZwID0gZnAKKyAgICAgICAgc2VsZi5fZW9mID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcG9zID0gMCAgIyBDdXJyZW50IG9mZnNldCBpbiBkZWNvbXByZXNzZWQgc3RyZWFtCisKKyAgICAgICAgIyBTZXQgdG8gc2l6ZSBvZiBkZWNvbXByZXNzZWQgc3RyZWFtIG9uY2UgaXQgaXMga25vd24sIGZvciBTRUVLX0VORAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICAjIFNhdmUgdGhlIGRlY29tcHJlc3NvciBmYWN0b3J5IGFuZCBhcmd1bWVudHMuCisgICAgICAgICMgSWYgdGhlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBlYWNoCisgICAgICAgICMgc3RyZWFtIHdpbGwgbmVlZCBhIHNlcGFyYXRlIGRlY29tcHJlc3NvciBvYmplY3QuIEEgbmV3IGRlY29tcHJlc3NvcgorICAgICAgICAjIG9iamVjdCBpcyBhbHNvIG5lZWRlZCB3aGVuIGltcGxlbWVudGluZyBhIGJhY2t3YXJkcyBzZWVrKCkuCisgICAgICAgIHNlbGYuX2RlY29tcF9mYWN0b3J5ID0gZGVjb21wX2ZhY3RvcnkKKyAgICAgICAgc2VsZi5fZGVjb21wX2FyZ3MgPSBkZWNvbXBfYXJncworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBzZWxmLl9kZWNvbXBfZmFjdG9yeSgqKnNlbGYuX2RlY29tcF9hcmdzKQorCisgICAgICAgICMgRXhjZXB0aW9uIGNsYXNzIHRvIGNhdGNoIGZyb20gZGVjb21wcmVzc29yIHNpZ25pZnlpbmcgaW52YWxpZAorICAgICAgICAjIHRyYWlsaW5nIGRhdGEgdG8gaWdub3JlCisgICAgICAgIHNlbGYuX3RyYWlsaW5nX2Vycm9yID0gdHJhaWxpbmdfZXJyb3IKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICByZXR1cm4gc3VwZXIoKS5jbG9zZSgpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3LCB2aWV3LmNhc3QoIkIiKSBhcyBieXRlX3ZpZXc6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihieXRlX3ZpZXcpKQorICAgICAgICAgICAgYnl0ZV92aWV3WzpsZW4oZGF0YSldID0gZGF0YQorICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKworICAgICAgICBpZiBub3Qgc2l6ZSBvciBzZWxmLl9lb2Y6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGRhdGEgPSBOb25lICAjIERlZmF1bHQgaWYgRU9GIGlzIGVuY291bnRlcmVkCisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSAoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAucmVhZChCVUZGRVJfU0laRSkpCisgICAgICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gc2VsZi5fZGVjb21wX2ZhY3RvcnkoCisgICAgICAgICAgICAgICAgICAgICoqc2VsZi5fZGVjb21wX2FyZ3MpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2ssIHNpemUpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuX3RyYWlsaW5nX2Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIFRyYWlsaW5nIGRhdGEgaXNuJ3QgYSB2YWxpZCBjb21wcmVzc2VkIHN0cmVhbTsgaWdub3JlIGl0LgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IubmVlZHNfaW5wdXQ6CisgICAgICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZnAucmVhZChCVUZGRVJfU0laRSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBiIiIKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2ssIHNpemUpCisgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgc2VsZi5fZW9mID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcworICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwKQorICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KCoqc2VsZi5fZGVjb21wX2FyZ3MpCisKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CisgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCisgICAgICAgIGlmIHdoZW5jZSA9PSBpby5TRUVLX1NFVDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19FTkQ6CisgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KKyAgICAgICAgICAgIGlmIHNlbGYuX3NpemUgPCAwOgorICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYucmVhZChpby5ERUZBVUxUX0JVRkZFUl9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiB7fSIuZm9ybWF0KHdoZW5jZSkpCisKKyAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgorICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLl9wb3M6CisgICAgICAgICAgICBzZWxmLl9yZXdpbmQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2Zmc2V0IC09IHNlbGYuX3BvcworCisgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgorICAgICAgICB3aGlsZSBvZmZzZXQgPiAwOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChtaW4oaW8uREVGQVVMVF9CVUZGRVJfU0laRSwgb2Zmc2V0KSkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBvZmZzZXQgLT0gbGVuKGRhdGEpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcG9zCmRpZmYgLS1naXQgYS9MaWIvX2R1bW15X3RocmVhZC5weSBiL0xpYi9fZHVtbXlfdGhyZWFkLnB5CmluZGV4IGI2N2NmYjkuLjM2ZTVmMzggMTAwNjQ0Ci0tLSBhL0xpYi9fZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi9fZHVtbXlfdGhyZWFkLnB5CkBAIC0xNDAsNiArMTQwLDE0IEBACiAgICAgZGVmIGxvY2tlZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkX3N0YXR1cwogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjwlcyAlcy4lcyBvYmplY3QgYXQgJXM+IiAlICgKKyAgICAgICAgICAgICJsb2NrZWQiIGlmIHNlbGYubG9ja2VkX3N0YXR1cyBlbHNlICJ1bmxvY2tlZCIsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgaGV4KGlkKHNlbGYpKQorICAgICAgICApCisKICMgVXNlZCB0byBzaWduYWwgdGhhdCBpbnRlcnJ1cHRfbWFpbiB3YXMgY2FsbGVkIGluIGEgInRocmVhZCIKIF9pbnRlcnJ1cHQgPSBGYWxzZQogIyBUcnVlIHdoZW4gbm90IGV4ZWN1dGluZyBpbiBhICJ0aHJlYWQiCmRpZmYgLS1naXQgYS9MaWIvX3B5ZGVjaW1hbC5weSBiL0xpYi9fcHlkZWNpbWFsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YmE0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvX3B5ZGVjaW1hbC5weQpAQCAtMCwwICsxLDYzODAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA0IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisjIFdyaXR0ZW4gYnkgRXJpYyBQcmljZSA8ZXByaWNlIGF0IHRqaHNzdC5lZHU+CisjICAgIGFuZCBGYWN1bmRvIEJhdGlzdGEgPGZhY3VuZG8gYXQgdGFuaXF1ZXRpbC5jb20uYXI+CisjICAgIGFuZCBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CisjICAgIGFuZCBBYWh6IDxhYWh6IGF0IHBvYm94LmNvbT4KKyMgICAgYW5kIFRpbSBQZXRlcnMKKworIyBUaGlzIG1vZHVsZSBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIGxhdGVzdCB1cGRhdGVzIG9mIHRoZQorIyBJQk0gc3BlY2lmaWNhdGlvbiBhcyBpdCBldm9sdmVzLiAgVGhvc2UgdXBkYXRlcyB3aWxsIGJlIHRyZWF0ZWQKKyMgYXMgYnVnIGZpeGVzIChkZXZpYXRpb24gZnJvbSB0aGUgc3BlYyBpcyBhIGNvbXBhdGliaWxpdHksIHVzYWJpbGl0eQorIyBidWcpIGFuZCB3aWxsIGJlIGJhY2twb3J0ZWQuICBBdCB0aGlzIHBvaW50IHRoZSBzcGVjIGlzIHN0YWJpbGl6aW5nCisjIGFuZCB0aGUgdXBkYXRlcyBhcmUgYmVjb21pbmcgZmV3ZXIsIHNtYWxsZXIsIGFuZCBsZXNzIHNpZ25pZmljYW50LgorCisiIiIKK1RoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGJhc2VkIG9uCit0aGUgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbjoKKworICAgIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC9kZWNhcml0aC5odG1sCisKK2FuZCBJRUVFIHN0YW5kYXJkIDg1NC0xOTg3OgorCisgICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRUVFXzg1NC0xOTg3CisKK0RlY2ltYWwgZmxvYXRpbmcgcG9pbnQgaGFzIGZpbml0ZSBwcmVjaXNpb24gd2l0aCBhcmJpdHJhcmlseSBsYXJnZSBib3VuZHMuCisKK1RoZSBwdXJwb3NlIG9mIHRoaXMgbW9kdWxlIGlzIHRvIHN1cHBvcnQgYXJpdGhtZXRpYyB1c2luZyBmYW1pbGlhcgorInNjaG9vbGhvdXNlIiBydWxlcyBhbmQgdG8gYXZvaWQgc29tZSBvZiB0aGUgdHJpY2t5IHJlcHJlc2VudGF0aW9uCitpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIGJpbmFyeSBmbG9hdGluZyBwb2ludC4gIFRoZSBwYWNrYWdlIGlzIGVzcGVjaWFsbHkKK3VzZWZ1bCBmb3IgZmluYW5jaWFsIGFwcGxpY2F0aW9ucyBvciBmb3IgY29udGV4dHMgd2hlcmUgdXNlcnMgaGF2ZQorZXhwZWN0YXRpb25zIHRoYXQgYXJlIGF0IG9kZHMgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQgKGZvciBpbnN0YW5jZSwKK2luIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgMS4wMCAlIDAuMSBnaXZlcyAwLjA5OTk5OTk5OTk5OTk5OTk1IGluc3RlYWQKK29mIDAuMDsgRGVjaW1hbCgnMS4wMCcpICUgRGVjaW1hbCgnMC4xJykgcmV0dXJucyB0aGUgZXhwZWN0ZWQKK0RlY2ltYWwoJzAuMDAnKSkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIGRlY2ltYWwgbW9kdWxlOgorCis+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCis+Pj4gc2V0Y29udGV4dChFeHRlbmRlZENvbnRleHQpCis+Pj4gRGVjaW1hbCgwKQorRGVjaW1hbCgnMCcpCis+Pj4gRGVjaW1hbCgnMScpCitEZWNpbWFsKCcxJykKKz4+PiBEZWNpbWFsKCctLjAxMjMnKQorRGVjaW1hbCgnLTAuMDEyMycpCis+Pj4gRGVjaW1hbCgxMjM0NTYpCitEZWNpbWFsKCcxMjM0NTYnKQorPj4+IERlY2ltYWwoJzEyMy40NWUxMjM0NTY3OCcpCitEZWNpbWFsKCcxLjIzNDVFKzEyMzQ1NjgwJykKKz4+PiBEZWNpbWFsKCcxLjMzJykgKyBEZWNpbWFsKCcxLjI3JykKK0RlY2ltYWwoJzIuNjAnKQorPj4+IERlY2ltYWwoJzEyLjM0JykgKyBEZWNpbWFsKCczLjg3JykgLSBEZWNpbWFsKCcxOC40MScpCitEZWNpbWFsKCctMi4yMCcpCis+Pj4gZGlnID0gRGVjaW1hbCgxKQorPj4+IHByaW50KGRpZyAvIERlY2ltYWwoMykpCiswLjMzMzMzMzMzMworPj4+IGdldGNvbnRleHQoKS5wcmVjID0gMTgKKz4+PiBwcmludChkaWcgLyBEZWNpbWFsKDMpKQorMC4zMzMzMzMzMzMzMzMzMzMzMzMKKz4+PiBwcmludChkaWcuc3FydCgpKQorMQorPj4+IHByaW50KERlY2ltYWwoMykuc3FydCgpKQorMS43MzIwNTA4MDc1Njg4NzcyOQorPj4+IHByaW50KERlY2ltYWwoMykgKiogMTIzKQorNC44NTE5Mjc4MDk3Njg5NjQyN0UrNTgKKz4+PiBpbmYgPSBEZWNpbWFsKDEpIC8gRGVjaW1hbCgwKQorPj4+IHByaW50KGluZikKK0luZmluaXR5Cis+Pj4gbmVnaW5mID0gRGVjaW1hbCgtMSkgLyBEZWNpbWFsKDApCis+Pj4gcHJpbnQobmVnaW5mKQorLUluZmluaXR5Cis+Pj4gcHJpbnQobmVnaW5mICsgaW5mKQorTmFOCis+Pj4gcHJpbnQobmVnaW5mICogaW5mKQorLUluZmluaXR5Cis+Pj4gcHJpbnQoZGlnIC8gMCkKK0luZmluaXR5Cis+Pj4gZ2V0Y29udGV4dCgpLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IDEKKz4+PiBwcmludChkaWcgLyAwKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAuLi4KKyAgLi4uCisgIC4uLgorZGVjaW1hbC5EaXZpc2lvbkJ5WmVybzogeCAvIDAKKz4+PiBjID0gQ29udGV4dCgpCis+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMAorPj4+IGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpCitEZWNpbWFsKCdOYU4nKQorPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAxCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzEKKz4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAorPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCiswCis+Pj4gcHJpbnQoYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgIC4uLgorICAuLi4KKyAgLi4uCitkZWNpbWFsLkludmFsaWRPcGVyYXRpb246IDAgLyAwCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzEKKz4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAorPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAwCis+Pj4gcHJpbnQoYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkpCitOYU4KKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMQorPj4+CisiIiIKKworX19hbGxfXyA9IFsKKyAgICAjIFR3byBtYWpvciBjbGFzc2VzCisgICAgJ0RlY2ltYWwnLCAnQ29udGV4dCcsCisKKyAgICAjIE5hbWVkIHR1cGxlIHJlcHJlc2VudGF0aW9uCisgICAgJ0RlY2ltYWxUdXBsZScsCisKKyAgICAjIENvbnRleHRzCisgICAgJ0RlZmF1bHRDb250ZXh0JywgJ0Jhc2ljQ29udGV4dCcsICdFeHRlbmRlZENvbnRleHQnLAorCisgICAgIyBFeGNlcHRpb25zCisgICAgJ0RlY2ltYWxFeGNlcHRpb24nLCAnQ2xhbXBlZCcsICdJbnZhbGlkT3BlcmF0aW9uJywgJ0RpdmlzaW9uQnlaZXJvJywKKyAgICAnSW5leGFjdCcsICdSb3VuZGVkJywgJ1N1Ym5vcm1hbCcsICdPdmVyZmxvdycsICdVbmRlcmZsb3cnLAorICAgICdGbG9hdE9wZXJhdGlvbicsCisKKyAgICAjIEV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIEludmFsaWRPcGVyYXRpb24KKyAgICAnRGl2aXNpb25JbXBvc3NpYmxlJywgJ0ludmFsaWRDb250ZXh0JywgJ0NvbnZlcnNpb25TeW50YXgnLCAnRGl2aXNpb25VbmRlZmluZWQnLAorCisgICAgIyBDb25zdGFudHMgZm9yIHVzZSBpbiBzZXR0aW5nIHVwIGNvbnRleHRzCisgICAgJ1JPVU5EX0RPV04nLCAnUk9VTkRfSEFMRl9VUCcsICdST1VORF9IQUxGX0VWRU4nLCAnUk9VTkRfQ0VJTElORycsCisgICAgJ1JPVU5EX0ZMT09SJywgJ1JPVU5EX1VQJywgJ1JPVU5EX0hBTEZfRE9XTicsICdST1VORF8wNVVQJywKKworICAgICMgRnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgY29udGV4dHMKKyAgICAnc2V0Y29udGV4dCcsICdnZXRjb250ZXh0JywgJ2xvY2FsY29udGV4dCcsCisKKyAgICAjIExpbWl0cyBmb3IgdGhlIEMgdmVyc2lvbiBmb3IgY29tcGF0aWJpbGl0eQorICAgICdNQVhfUFJFQycsICAnTUFYX0VNQVgnLCAnTUlOX0VNSU4nLCAnTUlOX0VUSU5ZJywKKworICAgICMgQyB2ZXJzaW9uOiBjb21waWxlIHRpbWUgY2hvaWNlIHRoYXQgZW5hYmxlcyB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQKKyAgICAnSEFWRV9USFJFQURTJworXQorCitfX3huYW1lX18gPSBfX25hbWVfXyAgICAjIHN5cy5tb2R1bGVzIGxvb2t1cCAoLS13aXRob3V0LXRocmVhZHMpCitfX25hbWVfXyA9ICdkZWNpbWFsJyAgICAjIEZvciBwaWNrbGluZworX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCitfX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KKworaW1wb3J0IG1hdGggYXMgX21hdGgKK2ltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCitpbXBvcnQgc3lzCisKK3RyeToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCisgICAgRGVjaW1hbFR1cGxlID0gX25hbWVkdHVwbGUoJ0RlY2ltYWxUdXBsZScsICdzaWduIGRpZ2l0cyBleHBvbmVudCcpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgRGVjaW1hbFR1cGxlID0gbGFtYmRhICphcmdzOiBhcmdzCisKKyMgUm91bmRpbmcKK1JPVU5EX0RPV04gPSAnUk9VTkRfRE9XTicKK1JPVU5EX0hBTEZfVVAgPSAnUk9VTkRfSEFMRl9VUCcKK1JPVU5EX0hBTEZfRVZFTiA9ICdST1VORF9IQUxGX0VWRU4nCitST1VORF9DRUlMSU5HID0gJ1JPVU5EX0NFSUxJTkcnCitST1VORF9GTE9PUiA9ICdST1VORF9GTE9PUicKK1JPVU5EX1VQID0gJ1JPVU5EX1VQJworUk9VTkRfSEFMRl9ET1dOID0gJ1JPVU5EX0hBTEZfRE9XTicKK1JPVU5EXzA1VVAgPSAnUk9VTkRfMDVVUCcKKworIyBDb21wYXRpYmlsaXR5IHdpdGggdGhlIEMgdmVyc2lvbgorSEFWRV9USFJFQURTID0gVHJ1ZQoraWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKKyAgICBNQVhfUFJFQyA9IDk5OTk5OTk5OTk5OTk5OTk5OQorICAgIE1BWF9FTUFYID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUlOX0VNSU4gPSAtOTk5OTk5OTk5OTk5OTk5OTk5CitlbHNlOgorICAgIE1BWF9QUkVDID0gNDI1MDAwMDAwCisgICAgTUFYX0VNQVggPSA0MjUwMDAwMDAKKyAgICBNSU5fRU1JTiA9IC00MjUwMDAwMDAKKworTUlOX0VUSU5ZID0gTUlOX0VNSU4gLSAoTUFYX1BSRUMtMSkKKworIyBFcnJvcnMKKworY2xhc3MgRGVjaW1hbEV4Y2VwdGlvbihBcml0aG1ldGljRXJyb3IpOgorICAgICIiIkJhc2UgZXhjZXB0aW9uIGNsYXNzLgorCisgICAgVXNlZCBleGNlcHRpb25zIGRlcml2ZSBmcm9tIHRoaXMuCisgICAgSWYgYW4gZXhjZXB0aW9uIGRlcml2ZXMgZnJvbSBhbm90aGVyIGV4Y2VwdGlvbiBiZXNpZGVzIHRoaXMgKHN1Y2ggYXMKKyAgICBVbmRlcmZsb3cgKEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCkgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBvbmx5CisgICAgY2FsbGVkIGlmIHRoZSBvdGhlcnMgYXJlIHByZXNlbnQuICBUaGlzIGlzbid0IGFjdHVhbGx5IHVzZWQgZm9yCisgICAgYW55dGhpbmcsIHRob3VnaC4KKworICAgIGhhbmRsZSAgLS0gQ2FsbGVkIHdoZW4gY29udGV4dC5fcmFpc2VfZXJyb3IgaXMgY2FsbGVkIGFuZCB0aGUKKyAgICAgICAgICAgICAgIHRyYXBfZW5hYmxlciBpcyBub3Qgc2V0LiAgRmlyc3QgYXJndW1lbnQgaXMgc2VsZiwgc2Vjb25kIGlzIHRoZQorICAgICAgICAgICAgICAgY29udGV4dC4gIE1vcmUgYXJndW1lbnRzIGNhbiBiZSBnaXZlbiwgdGhvc2UgYmVpbmcgYWZ0ZXIKKyAgICAgICAgICAgICAgIHRoZSBleHBsYW5hdGlvbiBpbiBfcmFpc2VfZXJyb3IgKEZvciBleGFtcGxlLAorICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoTmV3RXJyb3IsICcoLXgpIScsIHNlbGYuX3NpZ24pIHdvdWxkCisgICAgICAgICAgICAgICBjYWxsIE5ld0Vycm9yKCkuaGFuZGxlKGNvbnRleHQsIHNlbGYuX3NpZ24pLikKKworICAgIFRvIGRlZmluZSBhIG5ldyBleGNlcHRpb24sIGl0IHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGhhdmUgaXQgZGVyaXZlCisgICAgZnJvbSBEZWNpbWFsRXhjZXB0aW9uLgorICAgICIiIgorICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQ2xhbXBlZChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJFeHBvbmVudCBvZiBhIDAgY2hhbmdlZCB0byBmaXQgYm91bmRzLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgY2xhbXBlZCBpZiB0aGUgZXhwb25lbnQgb2YgYSByZXN1bHQgaGFzIGJlZW4KKyAgICBhbHRlcmVkIGluIG9yZGVyIHRvIGZpdCB0aGUgY29uc3RyYWludHMgb2YgYSBzcGVjaWZpYyBjb25jcmV0ZQorICAgIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBtYXkgb2NjdXIgd2hlbiB0aGUgZXhwb25lbnQgb2YgYSB6ZXJvIHJlc3VsdCB3b3VsZAorICAgIGJlIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhIHJlcHJlc2VudGF0aW9uLCBvciB3aGVuIGEgbGFyZ2Ugbm9ybWFsCisgICAgbnVtYmVyIHdvdWxkIGhhdmUgYW4gZW5jb2RlZCBleHBvbmVudCB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZC4gIEluCisgICAgdGhpcyBsYXR0ZXIgY2FzZSwgdGhlIGV4cG9uZW50IGlzIHJlZHVjZWQgdG8gZml0IGFuZCB0aGUgY29ycmVzcG9uZGluZworICAgIG51bWJlciBvZiB6ZXJvIGRpZ2l0cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGNvZWZmaWNpZW50ICgiZm9sZC1kb3duIikuCisgICAgIiIiCisKK2NsYXNzIEludmFsaWRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbik6CisgICAgIiIiQW4gaW52YWxpZCBvcGVyYXRpb24gd2FzIHBlcmZvcm1lZC4KKworICAgIFZhcmlvdXMgYmFkIHRoaW5ncyBjYXVzZSB0aGlzOgorCisgICAgU29tZXRoaW5nIGNyZWF0ZXMgYSBzaWduYWxpbmcgTmFOCisgICAgLUlORiArIElORgorICAgIDAgKiAoKy0pSU5GCisgICAgKCstKUlORiAvICgrLSlJTkYKKyAgICB4ICUgMAorICAgICgrLSlJTkYgJSB4CisgICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQorICAgIHNxcnQoLXgpICwgeCA+IDAKKyAgICAwICoqIDAKKyAgICB4ICoqIChub24taW50ZWdlcikKKyAgICB4ICoqICgrLSlJTkYKKyAgICBBbiBvcGVyYW5kIGlzIGludmFsaWQKKworICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhZnRlciB0aGVzZSBpcyBhIHF1aWV0IHBvc2l0aXZlIE5hTiwKKyAgICBleGNlcHQgd2hlbiB0aGUgY2F1c2UgaXMgYSBzaWduYWxpbmcgTmFOLCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMKKyAgICBhbHNvIGEgcXVpZXQgTmFOLCBidXQgd2l0aCB0aGUgb3JpZ2luYWwgc2lnbiwgYW5kIGFuIG9wdGlvbmFsCisgICAgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4KKyAgICAiIiIKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYXJnc1swXS5fc2lnbiwgYXJnc1swXS5faW50LCAnbicsIFRydWUpCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgIHJldHVybiBfTmFOCisKK2NsYXNzIENvbnZlcnNpb25TeW50YXgoSW52YWxpZE9wZXJhdGlvbik6CisgICAgIiIiVHJ5aW5nIHRvIGNvbnZlcnQgYmFkbHkgZm9ybWVkIHN0cmluZy4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGFuIHN0cmluZyBpcyBiZWluZworICAgIGNvbnZlcnRlZCB0byBhIG51bWJlciBhbmQgaXQgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgbnVtZXJpYyBzdHJpbmcKKyAgICBzeW50YXguICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgorICAgICIiIgorICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBEaXZpc2lvbkJ5WmVybyhEZWNpbWFsRXhjZXB0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6CisgICAgIiIiRGl2aXNpb24gYnkgMC4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGRpdmlzaW9uLWJ5LXplcm8gaWYgZGl2aXNpb24gb2YgYSBmaW5pdGUgbnVtYmVyCisgICAgYnkgemVybyB3YXMgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciBvciBkaXZpZGUgb3BlcmF0aW9uLCBvciBhCisgICAgcG93ZXIgb3BlcmF0aW9uIHdpdGggbmVnYXRpdmUgcmlnaHQtaGFuZCBvcGVyYW5kKSwgYW5kIHRoZSBkaXZpZGVuZCB3YXMKKyAgICBub3QgemVyby4KKworICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpcyBbc2lnbixpbmZdLCB3aGVyZSBzaWduIGlzIHRoZSBleGNsdXNpdmUKKyAgICBvciBvZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGZvciBkaXZpZGUsIG9yIGlzIDEgZm9yIGFuIG9kZCBwb3dlciBvZgorICAgIC0wLCBmb3IgcG93ZXIuCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQorCitjbGFzcyBEaXZpc2lvbkltcG9zc2libGUoSW52YWxpZE9wZXJhdGlvbik6CisgICAgIiIiQ2Fubm90IHBlcmZvcm0gdGhlIGRpdmlzaW9uIGFkZXF1YXRlbHkuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiB0aGUgaW50ZWdlciByZXN1bHQgb2YgYQorICAgIGRpdmlkZS1pbnRlZ2VyIG9yIHJlbWFpbmRlciBvcGVyYXRpb24gaGFkIHRvbyBtYW55IGRpZ2l0cyAod291bGQgYmUKKyAgICBsb25nZXIgdGhhbiBwcmVjaXNpb24pLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBEaXZpc2lvblVuZGVmaW5lZChJbnZhbGlkT3BlcmF0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6CisgICAgIiIiVW5kZWZpbmVkIHJlc3VsdCBvZiBkaXZpc2lvbi4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGRpdmlzaW9uIGJ5IHplcm8gd2FzCisgICAgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciwgZGl2aWRlLCBvciByZW1haW5kZXIgb3BlcmF0aW9uKSwgYW5kCisgICAgdGhlIGRpdmlkZW5kIGlzIGFsc28gemVyby4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9OYU4KKworY2xhc3MgSW5leGFjdChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJIYWQgdG8gcm91bmQsIGxvc2luZyBpbmZvcm1hdGlvbi4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGluZXhhY3Qgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKKyAgICBub3QgZXhhY3QgKHRoYXQgaXMsIGl0IG5lZWRlZCB0byBiZSByb3VuZGVkIGFuZCBhbnkgZGlzY2FyZGVkIGRpZ2l0cworICAgIHdlcmUgbm9uLXplcm8pLCBvciBpZiBhbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgY29uZGl0aW9uIG9jY3Vycy4gIFRoZQorICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgorCisgICAgVGhlIGluZXhhY3Qgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCisgICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB3YXMgaW5leGFjdC4KKyAgICAiIiIKKworY2xhc3MgSW52YWxpZENvbnRleHQoSW52YWxpZE9wZXJhdGlvbik6CisgICAgIiIiSW52YWxpZCBjb250ZXh0LiAgVW5rbm93biByb3VuZGluZywgZm9yIGV4YW1wbGUuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBpbnZhbGlkIGNvbnRleHQgd2FzCisgICAgZGV0ZWN0ZWQgZHVyaW5nIGFuIG9wZXJhdGlvbi4gIFRoaXMgY2FuIG9jY3VyIGlmIGNvbnRleHRzIGFyZSBub3QgY2hlY2tlZAorICAgIG9uIGNyZWF0aW9uIGFuZCBlaXRoZXIgdGhlIHByZWNpc2lvbiBleGNlZWRzIHRoZSBjYXBhYmlsaXR5IG9mIHRoZQorICAgIHVuZGVybHlpbmcgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb3IgYW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCByb3VuZGluZworICAgIHdhcyBzcGVjaWZpZWQuICBUaGVzZSBhc3BlY3RzIG9mIHRoZSBjb250ZXh0IG5lZWQgb25seSBiZSBjaGVja2VkIHdoZW4KKyAgICB0aGUgdmFsdWVzIGFyZSByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBSb3VuZGVkKERlY2ltYWxFeGNlcHRpb24pOgorICAgICIiIk51bWJlciBnb3Qgcm91bmRlZCAobm90ICBuZWNlc3NhcmlseSBjaGFuZ2VkIGR1cmluZyByb3VuZGluZykuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyByb3VuZGVkIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCisgICAgcm91bmRlZCAodGhhdCBpcywgc29tZSB6ZXJvIG9yIG5vbi16ZXJvIGRpZ2l0cyB3ZXJlIGRpc2NhcmRlZCBmcm9tIHRoZQorICAgIGNvZWZmaWNpZW50KSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKKyAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KKworICAgIFRoZSByb3VuZGVkIHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgorICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgY2F1c2VkIGEgbG9zcyBvZiBwcmVjaXNpb24uCisgICAgIiIiCisKK2NsYXNzIFN1Ym5vcm1hbChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJFeHBvbmVudCA8IEVtaW4gYmVmb3JlIHJvdW5kaW5nLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgc3Vibm9ybWFsIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYSBjb252ZXJzaW9uIG9yCisgICAgb3BlcmF0aW9uIGlzIHN1Ym5vcm1hbCAodGhhdCBpcywgaXRzIGFkanVzdGVkIGV4cG9uZW50IGlzIGxlc3MgdGhhbgorICAgIEVtaW4sIGJlZm9yZSBhbnkgcm91bmRpbmcpLiAgVGhlIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgorCisgICAgVGhlIHN1Ym5vcm1hbCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KKyAgICBvciBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIHlpZWxkZWQgYSBzdWJub3JtYWwgcmVzdWx0LgorICAgICIiIgorCitjbGFzcyBPdmVyZmxvdyhJbmV4YWN0LCBSb3VuZGVkKToKKyAgICAiIiJOdW1lcmljYWwgb3ZlcmZsb3cuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBvdmVyZmxvdyBpZiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgYSByZXN1bHQKKyAgICAoZnJvbSBhIGNvbnZlcnNpb24gb3IgZnJvbSBhbiBvcGVyYXRpb24gdGhhdCBpcyBub3QgYW4gYXR0ZW1wdCB0byBkaXZpZGUKKyAgICBieSB6ZXJvKSwgYWZ0ZXIgcm91bmRpbmcsIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0CisgICAgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUgRW1heCkuCisKKyAgICBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHJvdW5kaW5nIG1vZGU6CisKKyAgICBGb3Igcm91bmQtaGFsZi11cCBhbmQgcm91bmQtaGFsZi1ldmVuIChhbmQgZm9yIHJvdW5kLWhhbGYtZG93biBhbmQKKyAgICByb3VuZC11cCwgaWYgaW1wbGVtZW50ZWQpLCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwKKyAgICB3aGVyZSBzaWduIGlzIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yIHJvdW5kLWRvd24sIHRoZQorICAgIHJlc3VsdCBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQorICAgIGN1cnJlbnQgcHJlY2lzaW9uLCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yCisgICAgcm91bmQtY2VpbGluZywgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3Igcm91bmQtZG93biBpZiB0aGUgc2lnbiBvZgorICAgIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGlzIDEsIG9yIGlzIFswLGluZl0gb3RoZXJ3aXNlLiAgRm9yIHJvdW5kLWZsb29yLAorICAgIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZQorICAgIHJlc3VsdCBpcyAwLCBvciBpcyBbMSxpbmZdIG90aGVyd2lzZS4gIEluIGFsbCBjYXNlcywgSW5leGFjdCBhbmQgUm91bmRlZAorICAgIHdpbGwgYWxzbyBiZSByYWlzZWQuCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKKyAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyBpbiAoUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1VORF9IQUxGX0RPV04sIFJPVU5EX1VQKToKKyAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKyAgICAgICAgaWYgc2lnbiA9PSAwOgorICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9DRUlMSU5HOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4LWNvbnRleHQucHJlYysxKQorICAgICAgICBpZiBzaWduID09IDE6CisgICAgICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKKworCitjbGFzcyBVbmRlcmZsb3coSW5leGFjdCwgUm91bmRlZCwgU3Vibm9ybWFsKToKKyAgICAiIiJOdW1lcmljYWwgdW5kZXJmbG93IHdpdGggcmVzdWx0IHJvdW5kZWQgdG8gMC4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHVuZGVyZmxvdyBpZiBhIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCB0aGUKKyAgICBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIHNtYWxsZXIgKG1vcmUgbmVnYXRpdmUpIHRoYW4KKyAgICB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gKHRoZSB2YWx1ZQorICAgIEVtaW4pLiAgVGhhdCBpcywgdGhlIHJlc3VsdCBpcyBib3RoIGluZXhhY3QgYW5kIHN1Ym5vcm1hbC4KKworICAgIFRoZSByZXN1bHQgYWZ0ZXIgYW4gdW5kZXJmbG93IHdpbGwgYmUgYSBzdWJub3JtYWwgbnVtYmVyIHJvdW5kZWQsIGlmCisgICAgbmVjZXNzYXJ5LCBzbyB0aGF0IGl0cyBleHBvbmVudCBpcyBub3QgbGVzcyB0aGFuIEV0aW55LiAgVGhpcyBtYXkgcmVzdWx0CisgICAgaW4gMCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCBhbiBleHBvbmVudCBvZiBFdGlueS4KKworICAgIEluIGFsbCBjYXNlcywgSW5leGFjdCwgUm91bmRlZCwgYW5kIFN1Ym5vcm1hbCB3aWxsIGFsc28gYmUgcmFpc2VkLgorICAgICIiIgorCitjbGFzcyBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBUeXBlRXJyb3IpOgorICAgICIiIkVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSBEZWNpbWFsKCkgY29uc3RydWN0b3IsIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKSBhbmQKKyAgICBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LgorICAgIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcKKyAgICBGbG9hdE9wZXJhdGlvbiBpbiB0aGUgY29udGV4dCBmbGFncy4gIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGgKKyAgICBEZWNpbWFsLmZyb21fZmxvYXQoKSBvciBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSBkbyBub3QKKyAgICBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgRmxvYXRPcGVyYXRpb24uCisgICAgIiIiCisKKyMgTGlzdCBvZiBwdWJsaWMgdHJhcHMgYW5kIGZsYWdzCitfc2lnbmFscyA9IFtDbGFtcGVkLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQsCisgICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbCwgRmxvYXRPcGVyYXRpb25dCisKKyMgTWFwIGNvbmRpdGlvbnMgKHBlciB0aGUgc3BlYykgdG8gc2lnbmFscworX2NvbmRpdGlvbl9tYXAgPSB7Q29udmVyc2lvblN5bnRheDpJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgRGl2aXNpb25JbXBvc3NpYmxlOkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICBEaXZpc2lvblVuZGVmaW5lZDpJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENvbnRleHQ6SW52YWxpZE9wZXJhdGlvbn0KKworIyBWYWxpZCByb3VuZGluZyBtb2RlcworX3JvdW5kaW5nX21vZGVzID0gKFJPVU5EX0RPV04sIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwgUk9VTkRfQ0VJTElORywKKyAgICAgICAgICAgICAgICAgICBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfMDVVUCkKKworIyMjIyMgQ29udGV4dCBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBUaGUgZ2V0Y29udGV4dCgpIGFuZCBzZXRjb250ZXh0KCkgZnVuY3Rpb24gbWFuYWdlIGFjY2VzcyB0byBhIHRocmVhZC1sb2NhbAorIyBjdXJyZW50IGNvbnRleHQuICBQeTIuNCBvZmZlcnMgZGlyZWN0IHN1cHBvcnQgZm9yIHRocmVhZCBsb2NhbHMuICBJZiB0aGF0CisjIGlzIG5vdCBhdmFpbGFibGUsIHVzZSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSB3aGljaCBpcyBzbG93ZXIgYnV0IHdpbGwKKyMgd29yayBmb3Igb2xkZXIgUHl0aG9ucy4gIElmIHRocmVhZHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBidWlsZCwgY3JlYXRlIGEKKyMgbW9jayB0aHJlYWRpbmcgb2JqZWN0IHdpdGggdGhyZWFkaW5nLmxvY2FsKCkgcmV0dXJuaW5nIHRoZSBtb2R1bGUgbmFtZXNwYWNlLgorCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHM7IGNyZWF0ZSBhIG1vY2sgb2JqZWN0IGluc3RlYWQKKyAgICBjbGFzcyBNb2NrVGhyZWFkaW5nKG9iamVjdCk6CisgICAgICAgIGRlZiBsb2NhbChzZWxmLCBzeXM9c3lzKToKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tfX3huYW1lX19dCisgICAgdGhyZWFkaW5nID0gTW9ja1RocmVhZGluZygpCisgICAgZGVsIE1vY2tUaHJlYWRpbmcKKwordHJ5OgorICAgIHRocmVhZGluZy5sb2NhbAorCitleGNlcHQgQXR0cmlidXRlRXJyb3I6CisKKyAgICAjIFRvIGZpeCByZWxvYWRpbmcsIGZvcmNlIGl0IHRvIGNyZWF0ZSBhIG5ldyBjb250ZXh0CisgICAgIyBPbGQgY29udGV4dHMgaGF2ZSBkaWZmZXJlbnQgZXhjZXB0aW9ucyBpbiB0aGVpciBkaWN0cywgbWFraW5nIHByb2JsZW1zLgorICAgIGlmIGhhc2F0dHIodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCksICdfX2RlY2ltYWxfY29udGV4dF9fJyk6CisgICAgICAgIGRlbCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCisKKyAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0KToKKyAgICAgICAgIiIiU2V0IHRoaXMgdGhyZWFkJ3MgY29udGV4dCB0byBjb250ZXh0LiIiIgorICAgICAgICBpZiBjb250ZXh0IGluIChEZWZhdWx0Q29udGV4dCwgQmFzaWNDb250ZXh0LCBFeHRlbmRlZENvbnRleHQpOgorICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKworICAgIGRlZiBnZXRjb250ZXh0KCk6CisgICAgICAgICIiIlJldHVybnMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgorCisgICAgICAgIElmIHRoaXMgdGhyZWFkIGRvZXMgbm90IHlldCBoYXZlIGEgY29udGV4dCwgcmV0dXJucworICAgICAgICBhIG5ldyBjb250ZXh0IGFuZCBzZXRzIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KKyAgICAgICAgTmV3IGNvbnRleHRzIGFyZSBjb3BpZXMgb2YgRGVmYXVsdENvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKKworZWxzZToKKworICAgIGxvY2FsID0gdGhyZWFkaW5nLmxvY2FsKCkKKyAgICBpZiBoYXNhdHRyKGxvY2FsLCAnX19kZWNpbWFsX2NvbnRleHRfXycpOgorICAgICAgICBkZWwgbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXworCisgICAgZGVmIGdldGNvbnRleHQoX2xvY2FsPWxvY2FsKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCisKKyAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCisgICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgorICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0CisKKyAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0LCBfbG9jYWw9bG9jYWwpOgorICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6CisgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKworICAgIGRlbCB0aHJlYWRpbmcsIGxvY2FsICAgICAgICAjIERvbid0IGNvbnRhbWluYXRlIHRoZSBuYW1lc3BhY2UKKworZGVmIGxvY2FsY29udGV4dChjdHg9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIGZvciBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQKKworICAgIFVzZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQKKyAgICBUaGUgcmV0dXJuZWQgY29udGV4dCBtYW5hZ2VyIGNyZWF0ZXMgYSBsb2NhbCBkZWNpbWFsIGNvbnRleHQKKyAgICBpbiBhIHdpdGggc3RhdGVtZW50OgorICAgICAgICBkZWYgc2luKHgpOgorICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgY3R4OgorICAgICAgICAgICAgICAgICBjdHgucHJlYyArPSAyCisgICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCisgICAgICAgICAgICAgICAgICMgdXNlcyBhIHByZWNpc2lvbiAyIGdyZWF0ZXIgdGhhbiBub3JtYWwKKyAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIHByZWNpc2lvbgorCisgICAgICAgICBkZWYgc2luKHgpOgorICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6CisgICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCisgICAgICAgICAgICAgICAgICMgdXNlcyB0aGUgRXh0ZW5kZWQgQ29udGV4dCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAjIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KKyAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIGNvbnRleHQKKworICAgID4+PiBzZXRjb250ZXh0KERlZmF1bHRDb250ZXh0KQorICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKKyAgICAyOAorICAgID4+PiB3aXRoIGxvY2FsY29udGV4dCgpOgorICAgIC4uLiAgICAgY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgLi4uICAgICBjdHgucHJlYyArPSAyCisgICAgLi4uICAgICBwcmludChjdHgucHJlYykKKyAgICAuLi4KKyAgICAzMAorICAgID4+PiB3aXRoIGxvY2FsY29udGV4dChFeHRlbmRlZENvbnRleHQpOgorICAgIC4uLiAgICAgcHJpbnQoZ2V0Y29udGV4dCgpLnByZWMpCisgICAgLi4uCisgICAgOQorICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKKyAgICAyOAorICAgICIiIgorICAgIGlmIGN0eCBpcyBOb25lOiBjdHggPSBnZXRjb250ZXh0KCkKKyAgICByZXR1cm4gX0NvbnRleHRNYW5hZ2VyKGN0eCkKKworCisjIyMjIyBEZWNpbWFsIGNsYXNzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBEbyBub3Qgc3ViY2xhc3MgRGVjaW1hbCBmcm9tIG51bWJlcnMuUmVhbCBhbmQgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIHN1Y2gKKyMgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdCBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4gIFNlZSB0aGUgbm90ZXMgaW4KKyMgbnVtYmVycy5weSBmb3IgbW9yZSBkZXRhaWwuCisKK2NsYXNzIERlY2ltYWwob2JqZWN0KToKKyAgICAiIiJGbG9hdGluZyBwb2ludCBjbGFzcyBmb3IgZGVjaW1hbCBhcml0aG1ldGljLiIiIgorCisgICAgX19zbG90c19fID0gKCdfZXhwJywnX2ludCcsJ19zaWduJywgJ19pc19zcGVjaWFsJykKKyAgICAjIEdlbmVyYWxseSwgdGhlIHZhbHVlIG9mIHRoZSBEZWNpbWFsIGluc3RhbmNlIGlzIGdpdmVuIGJ5CisgICAgIyAgKC0xKSoqX3NpZ24gKiBfaW50ICogMTAqKl9leHAKKyAgICAjIFNwZWNpYWwgdmFsdWVzIGFyZSBzaWduaWZpZWQgYnkgX2lzX3NwZWNpYWwgPT0gVHJ1ZQorCisgICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXworICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9IjAiLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIHBvaW50IGluc3RhbmNlLgorCisgICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykgICAgICAgICAgICAgICMgc3RyaW5nIGlucHV0CisgICAgICAgIERlY2ltYWwoJzMuMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbCgoMCwgKDMsIDEsIDQpLCAtMikpICAjIHR1cGxlIChzaWduLCBkaWdpdF90dXBsZSwgZXhwb25lbnQpCisgICAgICAgIERlY2ltYWwoJzMuMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbCgzMTQpICAgICAgICAgICAgICAgICAjIGludAorICAgICAgICBEZWNpbWFsKCczMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbChEZWNpbWFsKDMxNCkpICAgICAgICAjIGFub3RoZXIgZGVjaW1hbCBpbnN0YW5jZQorICAgICAgICBEZWNpbWFsKCczMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbCgnICAzLjE0ICBcXG4nKSAgICAgICAgIyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9rYXkKKyAgICAgICAgRGVjaW1hbCgnMy4xNCcpCisgICAgICAgICIiIgorCisgICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb2VmZmljaWVudCwgc2VsZi5faW50LCBpcyBhY3R1YWxseSBzdG9yZWQgYXMKKyAgICAgICAgIyBhIHN0cmluZyByYXRoZXIgdGhhbiBhcyBhIHR1cGxlIG9mIGRpZ2l0cy4gIFRoaXMgc3BlZWRzIHVwCisgICAgICAgICMgdGhlICJkaWdpdHMgdG8gaW50ZWdlciIgYW5kICJpbnRlZ2VyIHRvIGRpZ2l0cyIgY29udmVyc2lvbnMKKyAgICAgICAgIyB0aGF0IGFyZSB1c2VkIGluIGFsbW9zdCBldmVyeSBhcml0aG1ldGljIG9wZXJhdGlvbiBvbgorICAgICAgICAjIERlY2ltYWxzLiAgVGhpcyBpcyBhbiBpbnRlcm5hbCBkZXRhaWw6IHRoZSBhc190dXBsZSBmdW5jdGlvbgorICAgICAgICAjIGFuZCB0aGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBzdGlsbCBkZWFsIHdpdGggdHVwbGVzIG9mCisgICAgICAgICMgZGlnaXRzLgorCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCisKKyAgICAgICAgIyBGcm9tIGEgc3RyaW5nCisgICAgICAgICMgUkVzIGluc2lzdCBvbiByZWFsIHN0cmluZ3MsIHNvIHdlIGNhbiB0b28uCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpKQorICAgICAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBsaXRlcmFsIGZvciBEZWNpbWFsOiAlciIgJSB2YWx1ZSkKKworICAgICAgICAgICAgaWYgbS5ncm91cCgnc2lnbicpID09ICItIjoKKyAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAorICAgICAgICAgICAgaW50cGFydCA9IG0uZ3JvdXAoJ2ludCcpCisgICAgICAgICAgICBpZiBpbnRwYXJ0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcgorICAgICAgICAgICAgICAgIGZyYWNwYXJ0ID0gbS5ncm91cCgnZnJhYycpIG9yICcnCisgICAgICAgICAgICAgICAgZXhwID0gaW50KG0uZ3JvdXAoJ2V4cCcpIG9yICcwJykKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIoaW50KGludHBhcnQrZnJhY3BhcnQpKQorICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IGV4cCAtIGxlbihmcmFjcGFydCkKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlhZyA9IG0uZ3JvdXAoJ2RpYWcnKQorICAgICAgICAgICAgICAgIGlmIGRpYWcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgTmFOCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoZGlhZyBvciAnMCcpKS5sc3RyaXAoJzAnKQorICAgICAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduYWwnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9ICdOJworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ24nCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBpbmZpbml0eQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ0YnCisgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgIyBGcm9tIGFuIGludGVnZXIKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIGlmIHZhbHVlID49IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDEKKyAgICAgICAgICAgIHNlbGYuX2V4cCA9IDAKKyAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihhYnModmFsdWUpKQorICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICMgRnJvbSBhbm90aGVyIGRlY2ltYWwKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6CisgICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAorICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCisgICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAorICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAjIEZyb20gYW4gaW50ZXJuYWwgd29ya2luZyB2YWx1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBfV29ya1JlcCk6CisgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuc2lnbgorICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKHZhbHVlLmludCkKKyAgICAgICAgICAgIHNlbGYuX2V4cCA9IGludCh2YWx1ZS5leHApCisgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgIyB0dXBsZS9saXN0IGNvbnZlcnNpb24gKHBvc3NpYmx5IGZyb20gYXNfdHVwbGUoKSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGxpc3QsdHVwbGUpKToKKyAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgIT0gMzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHR1cGxlIHNpemUgaW4gY3JlYXRpb24gb2YgRGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSBsaXN0IG9yIHR1cGxlLiAgVGhlIGxpc3Qgb3IgdHVwbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBoYXZlIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMuJykKKyAgICAgICAgICAgICMgcHJvY2VzcyBzaWduLiAgVGhlIGlzaW5zdGFuY2UgdGVzdCByZWplY3RzIGZsb2F0cworICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKHZhbHVlWzBdLCBpbnQpIGFuZCB2YWx1ZVswXSBpbiAoMCwxKSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBzaWduLiAgVGhlIGZpcnN0IHZhbHVlIGluIHRoZSB0dXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlIGFuIGludGVnZXI7IGVpdGhlciAwIGZvciBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGl2ZSBudW1iZXIgb3IgMSBmb3IgYSBuZWdhdGl2ZSBudW1iZXIuIikKKyAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZVswXQorICAgICAgICAgICAgaWYgdmFsdWVbMl0gPT0gJ0YnOgorICAgICAgICAgICAgICAgICMgaW5maW5pdHk6IHZhbHVlWzFdIGlzIGlnbm9yZWQKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKKyAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbmQgdmFsaWRhdGUgdGhlIGRpZ2l0cyBpbiB2YWx1ZVsxXQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGRpZ2l0IGluIHZhbHVlWzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRpZ2l0LCBpbnQpIGFuZCAwIDw9IGRpZ2l0IDw9IDk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgbGVhZGluZyB6ZXJvcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlnaXRzIG9yIGRpZ2l0ICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmFwcGVuZChkaWdpdCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBzZWNvbmQgdmFsdWUgaW4gdGhlIHR1cGxlIG11c3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgY29tcG9zZWQgb2YgaW50ZWdlcnMgaW4gdGhlIHJhbmdlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAgdGhyb3VnaCA5LiIpCisgICAgICAgICAgICAgICAgaWYgdmFsdWVbMl0gaW4gKCduJywgJ04nKToKKyAgICAgICAgICAgICAgICAgICAgIyBOYU46IGRpZ2l0cyBmb3JtIHRoZSBkaWFnbm9zdGljCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWVbMl0sIGludCk6CisgICAgICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcjogZGlnaXRzIGdpdmUgdGhlIGNvZWZmaWNpZW50CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzIG9yIFswXSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSB0aGlyZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGFuIGludGVnZXIsIG9yIG9uZSBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzICdGJywgJ24nLCAnTicuIikKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgIgorICAgICAgICAgICAgICAgICJlbmFibGVkIikKKyAgICAgICAgICAgIHZhbHVlID0gRGVjaW1hbC5mcm9tX2Zsb2F0KHZhbHVlKQorICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKKyAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgorICAgICAgICAgICAgc2VsZi5faW50ICA9IHZhbHVlLl9pbnQKKyAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgID0gdmFsdWUuX2lzX3NwZWNpYWwKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCAlciB0byBEZWNpbWFsIiAlIHZhbHVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZmxvYXQoY2xzLCBmKToKKyAgICAgICAgIiIiQ29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LgorCisgICAgICAgIE5vdGUgdGhhdCBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuCisgICAgICAgIFNpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgdGhlCisgICAgICAgIHZhbHVlIGlzIHN0b3JlZCBhcyB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIHZhbHVlIHdoaWNoIGlzCisgICAgICAgIDB4MS45OTk5OTk5OTk5OTlhcC00LiAgVGhlIGV4YWN0IGVxdWl2YWxlbnQgb2YgdGhlIHZhbHVlIGluIGRlY2ltYWwKKyAgICAgICAgaXMgMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1LgorCisgICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQorICAgICAgICBEZWNpbWFsKCcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKQorICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgtZmxvYXQoJ2luZicpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC0wLjApCisgICAgICAgIERlY2ltYWwoJy0wJykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBpbnQpOiAgICAgICAgICAgICAgICAjIGhhbmRsZSBpbnRlZ2VyIGlucHV0cworICAgICAgICAgICAgcmV0dXJuIGNscyhmKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0LiIpCisgICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOgorICAgICAgICAgICAgcmV0dXJuIGNscyhyZXByKGYpKQorICAgICAgICBpZiBfbWF0aC5jb3B5c2lnbigxLjAsIGYpID09IDEuMDoKKyAgICAgICAgICAgIHNpZ24gPSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaWduID0gMQorICAgICAgICBuLCBkID0gYWJzKGYpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICBrID0gZC5iaXRfbGVuZ3RoKCkgLSAxCisgICAgICAgIHJlc3VsdCA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKG4qNSoqayksIC1rKQorICAgICAgICBpZiBjbHMgaXMgRGVjaW1hbDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBjbHMocmVzdWx0KQorCisgICAgZGVmIF9pc25hbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KKworICAgICAgICAwIGlmIGEgbnVtYmVyCisgICAgICAgIDEgaWYgTmFOCisgICAgICAgIDIgaWYgc05hTgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cAorICAgICAgICAgICAgaWYgZXhwID09ICduJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgZWxpZiBleHAgPT0gJ04nOgorICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2lzaW5maW5pdHkoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIGlzIGluZmluaXRlCisKKyAgICAgICAgMCBpZiBmaW5pdGUgb3Igbm90IGEgbnVtYmVyCisgICAgICAgIDEgaWYgK0lORgorICAgICAgICAtMSBpZiAtSU5GCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgorICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2NoZWNrX25hbnMoc2VsZiwgb3RoZXI9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KKworICAgICAgICBpZiBzZWxmLCBvdGhlciBhcmUgc05hTiwgc2lnbmFsCisgICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBOYU4gcmV0dXJuIG5hbgorICAgICAgICByZXR1cm4gMAorCisgICAgICAgIERvbmUgYmVmb3JlIG9wZXJhdGlvbnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGZfaXNfbmFuID0gc2VsZi5faXNuYW4oKQorICAgICAgICBpZiBvdGhlciBpcyBOb25lOgorICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCisKKyAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAgICAgaWYgc2VsZl9pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlcl9pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICAgICAgaWYgc2VsZl9pc19uYW46CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeF9uYW4oY29udGV4dCkKKworICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2NvbXBhcmVfY2hlY2tfbmFucyhzZWxmLCBvdGhlciwgY29udGV4dCk6CisgICAgICAgICIiIlZlcnNpb24gb2YgX2NoZWNrX25hbnMgdXNlZCBmb3IgdGhlIHNpZ25hbGluZyBjb21wYXJpc29ucworICAgICAgICBjb21wYXJlX3NpZ25hbCwgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLgorCisgICAgICAgIFNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBzZWxmIG9yIG90aGVyIGlzIGEgKHF1aWV0CisgICAgICAgIG9yIHNpZ25hbGluZykgTmFOLiAgU2lnbmFsaW5nIE5hTnMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcXVpZXQKKyAgICAgICAgTmFOcy4KKworICAgICAgICBSZXR1cm4gMCBpZiBuZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4uCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKKyAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfc25hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICAgICAgZWxpZiBzZWxmLmlzX3FuYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCisgICAgICAgICAgICBlbGlmIG90aGVyLmlzX3FuYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5vbnplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgTmFOcyBhbmQgaW5maW5pdGllcyBhcmUgY29uc2lkZXJlZCBub256ZXJvLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3NwZWNpYWwgb3Igc2VsZi5faW50ICE9ICcwJworCisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJDb21wYXJlIHRoZSB0d28gbm9uLU5hTiBkZWNpbWFsIGluc3RhbmNlcyBzZWxmIGFuZCBvdGhlci4KKworICAgICAgICBSZXR1cm5zIC0xIGlmIHNlbGYgPCBvdGhlciwgMCBpZiBzZWxmID09IG90aGVyIGFuZCAxCisgICAgICAgIGlmIHNlbGYgPiBvdGhlci4gIFRoaXMgcm91dGluZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIiIiCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHNlbGZfaW5mID0gc2VsZi5faXNpbmZpbml0eSgpCisgICAgICAgICAgICBvdGhlcl9pbmYgPSBvdGhlci5faXNpbmZpbml0eSgpCisgICAgICAgICAgICBpZiBzZWxmX2luZiA9PSBvdGhlcl9pbmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsaWYgc2VsZl9pbmYgPCBvdGhlcl9pbmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgIyBjaGVjayBmb3IgemVyb3M7ICBEZWNpbWFsKCcwJykgPT0gRGVjaW1hbCgnLTAnKQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gLSgoLTEpKipvdGhlci5fc2lnbikKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KKworICAgICAgICAjIElmIGRpZmZlcmVudCBzaWducywgbmVnIG9uZSBpcyBsZXNzCisgICAgICAgIGlmIG90aGVyLl9zaWduIDwgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBzZWxmLl9zaWduIDwgb3RoZXIuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIHNlbGZfYWRqdXN0ZWQgPSBzZWxmLmFkanVzdGVkKCkKKyAgICAgICAgb3RoZXJfYWRqdXN0ZWQgPSBvdGhlci5hZGp1c3RlZCgpCisgICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPT0gb3RoZXJfYWRqdXN0ZWQ6CisgICAgICAgICAgICBzZWxmX3BhZGRlZCA9IHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCkKKyAgICAgICAgICAgIG90aGVyX3BhZGRlZCA9IG90aGVyLl9pbnQgKyAnMCcqKG90aGVyLl9leHAgLSBzZWxmLl9leHApCisgICAgICAgICAgICBpZiBzZWxmX3BhZGRlZCA9PSBvdGhlcl9wYWRkZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsaWYgc2VsZl9wYWRkZWQgPCBvdGhlcl9wYWRkZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0oLTEpKipzZWxmLl9zaWduCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAoLTEpKipzZWxmLl9zaWduCisgICAgICAgIGVsaWYgc2VsZl9hZGp1c3RlZCA+IG90aGVyX2FkanVzdGVkOgorICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KKyAgICAgICAgZWxzZTogIyBzZWxmX2FkanVzdGVkIDwgb3RoZXJfYWRqdXN0ZWQKKyAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKnNlbGYuX3NpZ24pCisKKyAgICAjIE5vdGU6IFRoZSBEZWNpbWFsIHN0YW5kYXJkIGRvZXNuJ3QgY292ZXIgcmljaCBjb21wYXJpc29ucyBmb3IKKyAgICAjIERlY2ltYWxzLiAgSW4gcGFydGljdWxhciwgdGhlIHNwZWNpZmljYXRpb24gaXMgc2lsZW50IG9uIHRoZQorICAgICMgc3ViamVjdCBvZiB3aGF0IHNob3VsZCBoYXBwZW4gZm9yIGEgY29tcGFyaXNvbiBpbnZvbHZpbmcgYSBOYU4uCisgICAgIyBXZSB0YWtlIHRoZSBmb2xsb3dpbmcgYXBwcm9hY2g6CisgICAgIworICAgICMgICA9PSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBGYWxzZQorICAgICMgICAhPSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBUcnVlCisgICAgIyAgID09IG9yICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHNpZ25hbGluZyBOYU4gc2lnbmFsCisgICAgIyAgICAgIEludmFsaWRPcGVyYXRpb24sIGFuZCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSBhcyBhYm92ZSBpZiB0aGUKKyAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KKyAgICAjICAgPCwgPiwgPD0gYW5kID49IGNvbXBhcmlzb25zIGludm9sdmluZyBhIChxdWlldCBvciBzaWduYWxpbmcpCisgICAgIyAgICAgIE5hTiBzaWduYWwgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBpZiB0aGUKKyAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KKyAgICAjCisgICAgIyBUaGlzIGJlaGF2aW9yIGlzIGRlc2lnbmVkIHRvIGNvbmZvcm0gYXMgY2xvc2VseSBhcyBwb3NzaWJsZSB0bworICAgICMgdGhhdCBzcGVjaWZpZWQgYnkgSUVFRSA3NTQuCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1UcnVlKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBpZiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKKworICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKKworICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID4gMAorCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAorCisgICAgZGVmIGNvbXBhcmUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmUgc2VsZiB0byBvdGhlci4gIFJldHVybiBhIGRlY2ltYWwgdmFsdWU6CisKKyAgICAgICAgYSBvciBiIGlzIGEgTmFOID09PiBEZWNpbWFsKCdOYU4nKQorICAgICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJykKKyAgICAgICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJykKKyAgICAgICAgYSA+IGIgICAgICAgICAgID09PiBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICAjIENvbXBhcmUoTmFOLCBOYU4pID0gTmFOCisgICAgICAgIGlmIChzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyIGFuZCBvdGhlci5faXNfc3BlY2lhbCk6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmLl9jbXAob3RoZXIpKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAiIiJ4Ll9faGFzaF9fKCkgPD09PiBoYXNoKHgpIiIiCisKKyAgICAgICAgIyBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGFzaCBvZiBhIERlY2ltYWwgaW5zdGFuY2UKKyAgICAgICAgIyBhZ3JlZXMgd2l0aCB0aGUgaGFzaCBvZiBhIG51bWVyaWNhbGx5IGVxdWFsIGludGVnZXIsIGZsb2F0CisgICAgICAgICMgb3IgRnJhY3Rpb24sIHdlIGZvbGxvdyB0aGUgcnVsZXMgZm9yIG51bWVyaWMgaGFzaGVzIG91dGxpbmVkCisgICAgICAgICMgaW4gdGhlIGRvY3VtZW50YXRpb24uICAoU2VlIGxpYnJhcnkgZG9jcywgJ0J1aWx0LWluIFR5cGVzJykuCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBoYXNoIGEgc2lnbmFsaW5nIE5hTiB2YWx1ZS4nKQorICAgICAgICAgICAgZWxpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX05BTgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLV9QeUhBU0hfSU5GCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9QeUhBU0hfSU5GCisKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICBleHBfaGFzaCA9IHBvdygxMCwgc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHBfaGFzaCA9IHBvdyhfUHlIQVNIXzEwSU5WLCAtc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgICAgIGhhc2hfID0gaW50KHNlbGYuX2ludCkgKiBleHBfaGFzaCAlIF9QeUhBU0hfTU9EVUxVUworICAgICAgICBhbnMgPSBoYXNoXyBpZiBzZWxmID49IDAgZWxzZSAtaGFzaF8KKyAgICAgICAgcmV0dXJuIC0yIGlmIGFucyA9PSAtMSBlbHNlIGFucworCisgICAgZGVmIGFzX3R1cGxlKHNlbGYpOgorICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYSB0cmlwbGUgdHVwbGUuCisKKyAgICAgICAgVG8gc2hvdyB0aGUgaW50ZXJuYWxzIGV4YWN0bHkgYXMgdGhleSBhcmUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRGVjaW1hbFR1cGxlKHNlbGYuX3NpZ24sIHR1cGxlKG1hcChpbnQsIHNlbGYuX2ludCkpLCBzZWxmLl9leHApCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgorICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZAorICAgICAgICByZXR1cm4gIkRlY2ltYWwoJyVzJykiICUgc3RyKHNlbGYpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmc9RmFsc2UsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBpbiBzY2llbnRpZmljIG5vdGF0aW9uLgorCisgICAgICAgIENhcHR1cmVzIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24uCisgICAgICAgICIiIgorCisgICAgICAgIHNpZ24gPSBbJycsICctJ11bc2VsZi5fc2lnbl0KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnSW5maW5pdHknCisgICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnTmFOJyArIHNlbGYuX2ludAorICAgICAgICAgICAgZWxzZTogIyBzZWxmLl9leHAgPT0gJ04nCisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnc05hTicgKyBzZWxmLl9pbnQKKworICAgICAgICAjIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIGxlZnQgb2YgZGVjaW1hbCBwb2ludAorICAgICAgICBsZWZ0ZGlnaXRzID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkKKworICAgICAgICAjIGRvdHBsYWNlIGlzIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIHRoZSBsZWZ0IG9mIHRoZQorICAgICAgICAjIGRlY2ltYWwgcG9pbnQgaW4gdGhlIG1hbnRpc3NhIG9mIHRoZSBvdXRwdXQgc3RyaW5nICh0aGF0IGlzLAorICAgICAgICAjIGFmdGVyIGFkanVzdGluZyB0aGUgZXhwb25lbnQpCisgICAgICAgIGlmIHNlbGYuX2V4cCA8PSAwIGFuZCBsZWZ0ZGlnaXRzID4gLTY6CisgICAgICAgICAgICAjIG5vIGV4cG9uZW50IHJlcXVpcmVkCisgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKKyAgICAgICAgZWxpZiBub3QgZW5nOgorICAgICAgICAgICAgIyB1c3VhbCBzY2llbnRpZmljIG5vdGF0aW9uOiAxIGRpZ2l0IG9uIGxlZnQgb2YgdGhlIHBvaW50CisgICAgICAgICAgICBkb3RwbGFjZSA9IDEKKyAgICAgICAgZWxpZiBzZWxmLl9pbnQgPT0gJzAnOgorICAgICAgICAgICAgIyBlbmdpbmVlcmluZyBub3RhdGlvbiwgemVybworICAgICAgICAgICAgZG90cGxhY2UgPSAobGVmdGRpZ2l0cyArIDEpICUgMyAtIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIG5vbnplcm8KKyAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgLSAxKSAlIDMgKyAxCisKKyAgICAgICAgaWYgZG90cGxhY2UgPD0gMDoKKyAgICAgICAgICAgIGludHBhcnQgPSAnMCcKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgJzAnKigtZG90cGxhY2UpICsgc2VsZi5faW50CisgICAgICAgIGVsaWYgZG90cGxhY2UgPj0gbGVuKHNlbGYuX2ludCk6CisgICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50KycwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCisgICAgICAgICAgICBmcmFjcGFydCA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0KKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgc2VsZi5faW50W2RvdHBsYWNlOl0KKyAgICAgICAgaWYgbGVmdGRpZ2l0cyA9PSBkb3RwbGFjZToKKyAgICAgICAgICAgIGV4cCA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgZXhwID0gWydlJywgJ0UnXVtjb250ZXh0LmNhcGl0YWxzXSArICIlK2QiICUgKGxlZnRkaWdpdHMtZG90cGxhY2UpCisKKyAgICAgICAgcmV0dXJuIHNpZ24gKyBpbnRwYXJ0ICsgZnJhY3BhcnQgKyBleHAKKworICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbnZlcnQgdG8gZW5naW5lZXJpbmctdHlwZSBzdHJpbmcuCisKKyAgICAgICAgRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmUKKyAgICAgICAgYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuCisKKyAgICAgICAgU2FtZSBydWxlcyBmb3Igd2hlbiBpbiBleHBvbmVudGlhbCBhbmQgd2hlbiBhcyBhIHZhbHVlIGFzIGluIF9fc3RyX18uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fX3N0cl9fKGVuZz1UcnVlLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19uZWdfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHN3aXRjaGVkLgorCisgICAgICAgIFJvdW5kcywgaWYgaXQgaGFzIHJlYXNvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgorICAgICAgICAgICAgIyAtRGVjaW1hbCgnMCcpIGlzIERlY2ltYWwoJzAnKSwgbm90IERlY2ltYWwoJy0wJyksIGV4Y2VwdAorICAgICAgICAgICAgIyBpbiBST1VORF9GTE9PUiByb3VuZGluZyBtb2RlLgorICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X2FicygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfbmVnYXRlKCkKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfX3Bvc19fKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5LCB1bmxlc3MgaXQgaXMgYSBzTmFOLgorCisgICAgICAgIFJvdW5kcyB0aGUgbnVtYmVyIChpZiBtb3JlIHRoZW4gcHJlY2lzaW9uIGRpZ2l0cykKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgorICAgICAgICAgICAgIyArICgtMCkgPSAwLCBleGNlcHQgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KKyAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmKQorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9fYWJzX18oc2VsZiwgcm91bmQ9VHJ1ZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2Ygc2VsZi4KKworICAgICAgICBJZiB0aGUga2V5d29yZCBhcmd1bWVudCAncm91bmQnIGlzIGZhbHNlLCBkbyBub3Qgcm91bmQuICBUaGUKKyAgICAgICAgZXhwcmVzc2lvbiBzZWxmLl9fYWJzX18ocm91bmQ9RmFsc2UpIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgICAgc2VsZi5jb3B5X2FicygpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHJvdW5kOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9hYnMoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX19uZWdfXyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9fcG9zX18oY29udGV4dD1jb250ZXh0KQorCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHNlbGYgKyBvdGhlci4KKworICAgICAgICAtSU5GICsgSU5GIChvciB0aGUgcmV2ZXJzZSkgY2F1c2UgSW52YWxpZE9wZXJhdGlvbiBlcnJvcnMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICAjIElmIGJvdGggSU5GLCBzYW1lIHNpZ24gPT4gc2FtZSBhcyBib3RoLCBvcHBvc2l0ZSA9PiBlcnJvci4KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJy1JTkYgKyBJTkYnKQorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKSAgIyBDYW4ndCBib3RoIGJlIGluZmluaXR5IGhlcmUKKworICAgICAgICBleHAgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQorICAgICAgICBuZWdhdGl2ZXplcm8gPSAwCisgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfRkxPT1IgYW5kIHNlbGYuX3NpZ24gIT0gb3RoZXIuX3NpZ246CisgICAgICAgICAgICAjIElmIHRoZSBhbnN3ZXIgaXMgMCwgdGhlIHNpZ24gc2hvdWxkIGJlIG5lZ2F0aXZlLCBpbiB0aGlzIGNhc2UuCisgICAgICAgICAgICBuZWdhdGl2ZXplcm8gPSAxCisKKyAgICAgICAgaWYgbm90IHNlbGYgYW5kIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIHNpZ24gPSBtaW4oc2VsZi5fc2lnbiwgb3RoZXIuX3NpZ24pCisgICAgICAgICAgICBpZiBuZWdhdGl2ZXplcm86CisgICAgICAgICAgICAgICAgc2lnbiA9IDEKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCBleHApCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGV4cCA9IG1heChleHAsIG90aGVyLl9leHAgLSBjb250ZXh0LnByZWMtMSkKKyAgICAgICAgICAgIGFucyA9IG90aGVyLl9yZXNjYWxlKGV4cCwgY29udGV4dC5yb3VuZGluZykKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGV4cCA9IG1heChleHAsIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYy0xKQorICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICBvcDEsIG9wMiA9IF9ub3JtYWxpemUob3AxLCBvcDIsIGNvbnRleHQucHJlYykKKworICAgICAgICByZXN1bHQgPSBfV29ya1JlcCgpCisgICAgICAgIGlmIG9wMS5zaWduICE9IG9wMi5zaWduOgorICAgICAgICAgICAgIyBFcXVhbCBhbmQgb3Bwb3NpdGUKKyAgICAgICAgICAgIGlmIG9wMS5pbnQgPT0gb3AyLmludDoKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKG5lZ2F0aXZlemVybywgJzAnLCBleHApCisgICAgICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgICAgICBpZiBvcDEuaW50IDwgb3AyLmludDoKKyAgICAgICAgICAgICAgICBvcDEsIG9wMiA9IG9wMiwgb3AxCisgICAgICAgICAgICAgICAgIyBPSywgbm93IGFicyhvcDEpID4gYWJzKG9wMikKKyAgICAgICAgICAgIGlmIG9wMS5zaWduID09IDE6CisgICAgICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAxCisgICAgICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gb3AyLnNpZ24sIG9wMS5zaWduCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMAorICAgICAgICAgICAgICAgICMgU28gd2Uga25vdyB0aGUgc2lnbiwgYW5kIG9wMSA+IDAuCisgICAgICAgIGVsaWYgb3AxLnNpZ24gPT0gMToKKyAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQorICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gKDAsIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKKyAgICAgICAgIyBOb3csIG9wMSA+IGFicyhvcDIpID4gMAorCisgICAgICAgIGlmIG9wMi5zaWduID09IDA6CisgICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCArIG9wMi5pbnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5pbnQgPSBvcDEuaW50IC0gb3AyLmludAorCisgICAgICAgIHJlc3VsdC5leHAgPSBvcDEuZXhwCisgICAgICAgIGFucyA9IERlY2ltYWwocmVzdWx0KQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBfX3JhZGRfXyA9IF9fYWRkX18KKworICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gc2VsZiAtIG90aGVyIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBzZWxmIC0gb3RoZXIgaXMgY29tcHV0ZWQgYXMgc2VsZiArIG90aGVyLmNvcHlfbmVnYXRlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhvdGhlci5jb3B5X25lZ2F0ZSgpLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBvdGhlciAtIHNlbGYiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICByZXR1cm4gb3RoZXIuX19zdWJfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19tdWxfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHNlbGYgKiBvdGhlci4KKworICAgICAgICAoKy0pIElORiAqIDAgKG9yIGl0cyByZXZlcnNlKSByYWlzZSBJbnZhbGlkT3BlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgcmVzdWx0c2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcoKy0pSU5GICogMCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQorCisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiAoKy0pSU5GJykKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdHNpZ25dCisKKyAgICAgICAgcmVzdWx0ZXhwID0gc2VsZi5fZXhwICsgb3RoZXIuX2V4cAorCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSB6ZXJvCisgICAgICAgIGlmIG5vdCBzZWxmIG9yIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgJzAnLCByZXN1bHRleHApCisgICAgICAgICAgICAjIEZpeGluZyBpbiBjYXNlIHRoZSBleHBvbmVudCBpcyBvdXQgb2YgYm91bmRzCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSBwb3dlciBvZiAxMAorICAgICAgICBpZiBzZWxmLl9pbnQgPT0gJzEnOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCBvdGhlci5faW50LCByZXN1bHRleHApCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICBpZiBvdGhlci5faW50ID09ICcxJzoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc2VsZi5faW50LCByZXN1bHRleHApCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc3RyKG9wMS5pbnQgKiBvcDIuaW50KSwgcmVzdWx0ZXhwKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgIHJldHVybiBhbnMKKyAgICBfX3JtdWxfXyA9IF9fbXVsX18KKworICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHNlbGYgLyBvdGhlci4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORi8oKy0pSU5GJykKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKworICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkLCAnRGl2aXNpb24gYnkgaW5maW5pdHknKQorICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgY29udGV4dC5FdGlueSgpKQorCisgICAgICAgICMgU3BlY2lhbCBjYXNlcyBmb3IgemVyb2VzCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgLyAwJykKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLyAwJywgc2lnbikKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKKyAgICAgICAgICAgIGNvZWZmID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPSywgc28gbmVpdGhlciA9IDAsIElORiBvciBOYU4KKyAgICAgICAgICAgIHNoaWZ0ID0gbGVuKG90aGVyLl9pbnQpIC0gbGVuKHNlbGYuX2ludCkgKyBjb250ZXh0LnByZWMgKyAxCisgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwIC0gc2hpZnQKKyAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6CisgICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50ICogMTAqKnNoaWZ0LCBvcDIuaW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb2VmZiwgcmVtYWluZGVyID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQgKiAxMCoqLXNoaWZ0KQorICAgICAgICAgICAgaWYgcmVtYWluZGVyOgorICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgYWRqdXN0IHRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSA1ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGNvZWZmICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IGdldCBhcyBjbG9zZSB0byBpZGVhbCBleHBvbmVudCBhcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKKyAgICAgICAgICAgICAgICB3aGlsZSBleHAgPCBpZGVhbF9leHAgYW5kIGNvZWZmICUgMTAgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgLy89IDEwCisgICAgICAgICAgICAgICAgICAgIGV4cCArPSAxCisKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoY29lZmYpLCBleHApCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9kaXZpZGUoc2VsZiwgb3RoZXIsIGNvbnRleHQpOgorICAgICAgICAiIiJSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlciksIHRvIGNvbnRleHQucHJlYyBwcmVjaXNpb24uCisKKyAgICAgICAgQXNzdW1lcyB0aGF0IG5laXRoZXIgc2VsZiBub3Igb3RoZXIgaXMgYSBOYU4sIHRoYXQgc2VsZiBpcyBub3QKKyAgICAgICAgaW5maW5pdGUgYW5kIHRoYXQgb3RoZXIgaXMgbm9uemVyby4KKyAgICAgICAgIiIiCisgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KKyAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWRlYWxfZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKKworICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQorICAgICAgICBpZiBub3Qgc2VsZiBvciBvdGhlci5faXNpbmZpbml0eSgpIG9yIGV4cGRpZmYgPD0gLTI6CisgICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzY2FsZShpZGVhbF9leHAsIGNvbnRleHQucm91bmRpbmcpKQorICAgICAgICBpZiBleHBkaWZmIDw9IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKKyAgICAgICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKKyAgICAgICAgICAgIGlmIHEgPCAxMCoqY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgIHJldHVybiAoX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIocSksIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzdHIociksIGlkZWFsX2V4cCkpCisKKyAgICAgICAgIyBIZXJlIHRoZSBxdW90aWVudCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50YWJsZQorICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdW90aWVudCB0b28gbGFyZ2UgaW4gLy8sICUgb3IgZGl2bW9kJykKKyAgICAgICAgcmV0dXJuIGFucywgYW5zCisKKyAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fdHJ1ZWRpdl9fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX190cnVlZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlcikKKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiAoYW5zLCBhbnMpCisKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdkaXZtb2QoSU5GLCBJTkYpJykKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIChfU2lnbmVkSW5maW5pdHlbc2lnbl0sCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpKQorCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnZGl2bW9kKDAsIDApJykKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsIHNpZ24pLAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykpCisKKyAgICAgICAgcXVvdGllbnQsIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dCkKKyAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHF1b3RpZW50LCByZW1haW5kZXIKKworICAgIGRlZiBfX3JkaXZtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Rpdm1vZF9fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX19kaXZtb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19tb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgJSBvdGhlcgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpCisgICAgICAgIGVsaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAlIDAnKQorCisgICAgICAgIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dClbMV0KKyAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHJlbWFpbmRlcgorCisgICAgZGVmIF9fcm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fbW9kX18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX21vZF9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbWFpbmRlciBuZWFyZXN0IHRvIDAtICBhYnMocmVtYWluZGVyLW5lYXIpIDw9IG90aGVyLzIKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgc2VsZiA9PSArLy1pbmZpbml0eSAtPiBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcihpbmZpbml0eSwgeCknKQorCisgICAgICAgICMgb3RoZXIgPT0gMCAtPiBlaXRoZXIgSW52YWxpZE9wZXJhdGlvbiBvciBEaXZpc2lvblVuZGVmaW5lZAorICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoeCwgMCknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcigwLCAwKScpCisKKyAgICAgICAgIyBvdGhlciA9ICsvLWluZmluaXR5IC0+IHJlbWFpbmRlciA9IHNlbGYKKyAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgICMgc2VsZiA9IDAgLT4gcmVtYWluZGVyID0gc2VsZiwgd2l0aCBpZGVhbCBleHBvbmVudAorICAgICAgICBpZGVhbF9leHBvbmVudCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGlkZWFsX2V4cG9uZW50KQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgIyBjYXRjaCBtb3N0IGNhc2VzIG9mIGxhcmdlIG9yIHNtYWxsIHF1b3RpZW50CisgICAgICAgIGV4cGRpZmYgPSBzZWxmLmFkanVzdGVkKCkgLSBvdGhlci5hZGp1c3RlZCgpCisgICAgICAgIGlmIGV4cGRpZmYgPj0gY29udGV4dC5wcmVjICsgMToKKyAgICAgICAgICAgICMgZXhwZGlmZiA+PSBwcmVjKzEgPT4gYWJzKHNlbGYvb3RoZXIpID4gMTAqKnByZWMKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUpCisgICAgICAgIGlmIGV4cGRpZmYgPD0gLTI6CisgICAgICAgICAgICAjIGV4cGRpZmYgPD0gLTIgPT4gYWJzKHNlbGYvb3RoZXIpIDwgMC4xCisgICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGlkZWFsX2V4cG9uZW50LCBjb250ZXh0LnJvdW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgIyBhZGp1c3QgYm90aCBhcmd1bWVudHMgdG8gaGF2ZSB0aGUgc2FtZSBleHBvbmVudCwgdGhlbiBkaXZpZGUKKyAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKKyAgICAgICAgICAgIG9wMS5pbnQgKj0gMTAqKihvcDEuZXhwIC0gb3AyLmV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKKyAgICAgICAgcSwgciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50KQorICAgICAgICAjIHJlbWFpbmRlciBpcyByKjEwKippZGVhbF9leHBvbmVudDsgb3RoZXIgaXMgKy8tb3AyLmludCAqCisgICAgICAgICMgMTAqKmlkZWFsX2V4cG9uZW50LiAgIEFwcGx5IGNvcnJlY3Rpb24gdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgIyBhYnMocmVtYWluZGVyKSA8PSBhYnMob3RoZXIpLzIKKyAgICAgICAgaWYgMipyICsgKHEmMSkgPiBvcDIuaW50OgorICAgICAgICAgICAgciAtPSBvcDIuaW50CisgICAgICAgICAgICBxICs9IDEKKworICAgICAgICBpZiBxID49IDEwKipjb250ZXh0LnByZWM6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQorCisgICAgICAgICMgcmVzdWx0IGhhcyBzYW1lIHNpZ24gYXMgc2VsZiB1bmxlc3MgciBpcyBuZWdhdGl2ZQorICAgICAgICBzaWduID0gc2VsZi5fc2lnbgorICAgICAgICBpZiByIDwgMDoKKyAgICAgICAgICAgIHNpZ24gPSAxLXNpZ24KKyAgICAgICAgICAgIHIgPSAtcgorCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHIpLCBpZGVhbF9leHBvbmVudCkKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJzZWxmIC8vIG90aGVyIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GIC8vIElORicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQorCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAneCAvLyAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8vIDAnKQorCisgICAgICAgIHJldHVybiBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzBdCisKKyAgICBkZWYgX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Zsb29yZGl2X18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX2Zsb29yZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKKyAgICAgICAgIiIiRmxvYXQgcmVwcmVzZW50YXRpb24uIiIiCisgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6CisgICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCBzaWduYWxpbmcgTmFOIHRvIGZsb2F0IikKKyAgICAgICAgICAgIHMgPSAiLW5hbiIgaWYgc2VsZi5fc2lnbiBlbHNlICJuYW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzID0gc3RyKHNlbGYpCisgICAgICAgIHJldHVybiBmbG9hdChzKQorCisgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICIiIkNvbnZlcnRzIHNlbGYgdG8gYW4gaW50LCB0cnVuY2F0aW5nIGlmIG5lY2Vzc2FyeS4iIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIiKQorICAgICAgICAgICAgZWxpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgaW5maW5pdHkgdG8gaW50ZWdlciIpCisgICAgICAgIHMgPSAoLTEpKipzZWxmLl9zaWduCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludCkqMTAqKnNlbGYuX2V4cAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludFs6c2VsZi5fZXhwXSBvciAnMCcpCisKKyAgICBfX3RydW5jX18gPSBfX2ludF9fCisKKyAgICBkZWYgcmVhbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKyAgICByZWFsID0gcHJvcGVydHkocmVhbCkKKworICAgIGRlZiBpbWFnKHNlbGYpOgorICAgICAgICByZXR1cm4gRGVjaW1hbCgwKQorICAgIGltYWcgPSBwcm9wZXJ0eShpbWFnKQorCisgICAgZGVmIGNvbmp1Z2F0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGNvbXBsZXgoZmxvYXQoc2VsZikpCisKKyAgICBkZWYgX2ZpeF9uYW4oc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIkRlY2FwaXRhdGUgdGhlIHBheWxvYWQgb2YgYSBOYU4gdG8gZml0IHRoZSBjb250ZXh0IiIiCisgICAgICAgIHBheWxvYWQgPSBzZWxmLl9pbnQKKworICAgICAgICAjIG1heGltdW0gbGVuZ3RoIG9mIHBheWxvYWQgaXMgcHJlY2lzaW9uIGlmIGNsYW1wPTAsCisgICAgICAgICMgcHJlY2lzaW9uLTEgaWYgY2xhbXA9MS4KKyAgICAgICAgbWF4X3BheWxvYWRfbGVuID0gY29udGV4dC5wcmVjIC0gY29udGV4dC5jbGFtcAorICAgICAgICBpZiBsZW4ocGF5bG9hZCkgPiBtYXhfcGF5bG9hZF9sZW46CisgICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZFtsZW4ocGF5bG9hZCktbWF4X3BheWxvYWRfbGVuOl0ubHN0cmlwKCcwJykKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHBheWxvYWQsIHNlbGYuX2V4cCwgVHJ1ZSkKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgIGRlZiBfZml4KHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiJSb3VuZCBpZiBpdCBpcyBuZWNlc3NhcnkgdG8ga2VlcCBzZWxmIHdpdGhpbiBwcmVjIHByZWNpc2lvbi4KKworICAgICAgICBSb3VuZHMgYW5kIGZpeGVzIHRoZSBleHBvbmVudC4gIERvZXMgbm90IHJhaXNlIG9uIGEgc05hTi4KKworICAgICAgICBBcmd1bWVudHM6CisgICAgICAgIHNlbGYgLSBEZWNpbWFsIGluc3RhbmNlCisgICAgICAgIGNvbnRleHQgLSBjb250ZXh0IHVzZWQuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgorICAgICAgICAgICAgICAgICMgZGVjYXBpdGF0ZSBwYXlsb2FkIGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgc2VsZiBpcyArLy1JbmZpbml0eTsgcmV0dXJuIHVuYWx0ZXJlZAorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyBpZiBzZWxmIGlzIHplcm8gdGhlbiBleHBvbmVudCBzaG91bGQgYmUgYmV0d2VlbiBFdGlueSBhbmQKKyAgICAgICAgIyBFbWF4IGlmIGNsYW1wPT0wLCBhbmQgYmV0d2VlbiBFdGlueSBhbmQgRXRvcCBpZiBjbGFtcD09MS4KKyAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKKyAgICAgICAgRXRvcCA9IGNvbnRleHQuRXRvcCgpCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIEV0b3BdW2NvbnRleHQuY2xhbXBdCisgICAgICAgICAgICBuZXdfZXhwID0gbWluKG1heChzZWxmLl9leHAsIEV0aW55KSwgZXhwX21heCkKKyAgICAgICAgICAgIGlmIG5ld19leHAgIT0gc2VsZi5fZXhwOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBuZXdfZXhwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgZXhwX21pbiBpcyB0aGUgc21hbGxlc3QgYWxsb3dhYmxlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQsCisgICAgICAgICMgZXF1YWwgdG8gbWF4KHNlbGYuYWRqdXN0ZWQoKS1jb250ZXh0LnByZWMrMSwgRXRpbnkpCisgICAgICAgIGV4cF9taW4gPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYworICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKKyAgICAgICAgICAgICMgb3ZlcmZsb3c6IGV4cF9taW4gPiBFdG9wIGlmZiBzZWxmLmFkanVzdGVkKCkgPiBFbWF4CisgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgc2VsZl9pc19zdWJub3JtYWwgPSBleHBfbWluIDwgRXRpbnkKKyAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICBleHBfbWluID0gRXRpbnkKKworICAgICAgICAjIHJvdW5kIGlmIHNlbGYgaGFzIHRvbyBtYW55IGRpZ2l0cworICAgICAgICBpZiBzZWxmLl9leHAgPCBleHBfbWluOgorICAgICAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHBfbWluCisgICAgICAgICAgICBpZiBkaWdpdHMgPCAwOgorICAgICAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwX21pbi0xKQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDAKKyAgICAgICAgICAgIHJvdW5kaW5nX21ldGhvZCA9IHNlbGYuX3BpY2tfcm91bmRpbmdfZnVuY3Rpb25bY29udGV4dC5yb3VuZGluZ10KKyAgICAgICAgICAgIGNoYW5nZWQgPSByb3VuZGluZ19tZXRob2Qoc2VsZiwgZGlnaXRzKQorICAgICAgICAgICAgY29lZmYgPSBzZWxmLl9pbnRbOmRpZ2l0c10gb3IgJzAnCisgICAgICAgICAgICBpZiBjaGFuZ2VkID4gMDoKKyAgICAgICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCisgICAgICAgICAgICAgICAgaWYgbGVuKGNvZWZmKSA+IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBjb2VmZls6LTFdCisgICAgICAgICAgICAgICAgICAgIGV4cF9taW4gKz0gMQorCisgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHJvdW5kaW5nIHB1c2hlZCB0aGUgZXhwb25lbnQgb3V0IG9mIHJhbmdlCisgICAgICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKKyAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHBfbWluKQorCisgICAgICAgICAgICAjIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBzaWduYWxzLCB0YWtpbmcgY2FyZSB0byByZXNwZWN0CisgICAgICAgICAgICAjIHRoZSBwcmVjZWRlbmNlIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICAgICAgaWYgY2hhbmdlZCBhbmQgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQorICAgICAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQorICAgICAgICAgICAgaWYgY2hhbmdlZDoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgIGlmIG5vdCBhbnM6CisgICAgICAgICAgICAgICAgIyByYWlzZSBDbGFtcGVkIG9uIHVuZGVyZmxvdyB0byAwCisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmX2lzX3N1Ym5vcm1hbDoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKKworICAgICAgICAjIGZvbGQgZG93biBpZiBjbGFtcCA9PSAxIGFuZCBzZWxmIGhhcyB0b28gZmV3IGRpZ2l0cworICAgICAgICBpZiBjb250ZXh0LmNsYW1wID09IDEgYW5kIHNlbGYuX2V4cCA+IEV0b3A6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQorICAgICAgICAgICAgc2VsZl9wYWRkZWQgPSBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIEV0b3ApCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmX3BhZGRlZCwgRXRvcCkKKworICAgICAgICAjIGhlcmUgc2VsZiB3YXMgcmVwcmVzZW50YWJsZSB0byBiZWdpbiB3aXRoOyByZXR1cm4gdW5jaGFuZ2VkCisgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAjIGZvciBlYWNoIG9mIHRoZSByb3VuZGluZyBmdW5jdGlvbnMgYmVsb3c6CisgICAgIyAgIHNlbGYgaXMgYSBmaW5pdGUsIG5vbnplcm8gRGVjaW1hbAorICAgICMgICBwcmVjIGlzIGFuIGludGVnZXIgc2F0aXNmeWluZyAwIDw9IHByZWMgPCBsZW4oc2VsZi5faW50KQorICAgICMKKyAgICAjIGVhY2ggZnVuY3Rpb24gcmV0dXJucyBlaXRoZXIgLTEsIDAsIG9yIDEsIGFzIGZvbGxvd3M6CisgICAgIyAgIDEgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pCisgICAgIyAgIDAgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgdHJ1bmNhdGVkLCBhbmQgdGhhdCBhbGwgdGhlCisgICAgIyAgICAgZGlnaXRzIHRvIGJlIHRydW5jYXRlZCBhcmUgemVyb3MgKHNvIHRoZSB2YWx1ZSBpcyB1bmNoYW5nZWQpCisgICAgIyAgLTEgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIG5vbnplcm8gZGlnaXRzIHRvIGJlIHRydW5jYXRlZAorCisgICAgZGVmIF9yb3VuZF9kb3duKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJBbHNvIGtub3duIGFzIHJvdW5kLXRvd2FyZHMtMCwgdHJ1bmNhdGUuIiIiCisgICAgICAgIGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgIGRlZiBfcm91bmRfdXAoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyBhd2F5IGZyb20gMC4iIiIKKyAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCisKKyAgICBkZWYgX3JvdW5kX2hhbGZfdXAoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyA1IHVwIChhd2F5IGZyb20gMCkiIiIKKyAgICAgICAgaWYgc2VsZi5faW50W3ByZWNdIGluICc1Njc4OSc6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBlbGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgIGRlZiBfcm91bmRfaGFsZl9kb3duKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZCA1IGRvd24iIiIKKyAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKToKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2hhbGZfdXAocHJlYykKKworICAgIGRlZiBfcm91bmRfaGFsZl9ldmVuKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZCA1IHRvIGV2ZW4sIHJlc3QgdG8gbmVhcmVzdC4iIiIKKyAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKSBhbmQgXAorICAgICAgICAgICAgICAgIChwcmVjID09IDAgb3Igc2VsZi5faW50W3ByZWMtMV0gaW4gJzAyNDY4Jyk6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCisKKyAgICBkZWYgX3JvdW5kX2NlaWxpbmcoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyB1cCAobm90IGF3YXkgZnJvbSAwIGlmIG5lZ2F0aXZlLikiIiIKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKworICAgIGRlZiBfcm91bmRfZmxvb3Ioc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyBkb3duIChub3QgdG93YXJkcyAwIGlmIG5lZ2F0aXZlKSIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKworICAgIGRlZiBfcm91bmRfMDV1cChzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmQgZG93biB1bmxlc3MgZGlnaXQgcHJlYy0xIGlzIDAgb3IgNS4iIiIKKyAgICAgICAgaWYgcHJlYyBhbmQgc2VsZi5faW50W3ByZWMtMV0gbm90IGluICcwNSc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCisKKyAgICBfcGlja19yb3VuZGluZ19mdW5jdGlvbiA9IGRpY3QoCisgICAgICAgIFJPVU5EX0RPV04gPSBfcm91bmRfZG93biwKKyAgICAgICAgUk9VTkRfVVAgPSBfcm91bmRfdXAsCisgICAgICAgIFJPVU5EX0hBTEZfVVAgPSBfcm91bmRfaGFsZl91cCwKKyAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gX3JvdW5kX2hhbGZfZG93biwKKyAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gX3JvdW5kX2hhbGZfZXZlbiwKKyAgICAgICAgUk9VTkRfQ0VJTElORyA9IF9yb3VuZF9jZWlsaW5nLAorICAgICAgICBST1VORF9GTE9PUiA9IF9yb3VuZF9mbG9vciwKKyAgICAgICAgUk9VTkRfMDVVUCA9IF9yb3VuZF8wNXVwLAorICAgICkKKworICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgbj1Ob25lKToKKyAgICAgICAgIiIiUm91bmQgc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBvciB0byBhIGdpdmVuIHByZWNpc2lvbi4KKworICAgICAgICBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBzdXBwbGllZCwgcm91bmQgYSBmaW5pdGUgRGVjaW1hbAorICAgICAgICBpbnN0YW5jZSBzZWxmIHRvIHRoZSBuZWFyZXN0IGludGVnZXIuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yCisgICAgICAgIGEgTmFOIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIElmIHNlbGYgaXMgZmluaXRlCisgICAgICAgIGFuZCBsaWVzIGV4YWN0bHkgaGFsZndheSBiZXR3ZWVuIHR3byBpbnRlZ2VycyB0aGVuIGl0IGlzCisgICAgICAgIHJvdW5kZWQgdG8gdGhlIGludGVnZXIgd2l0aCBldmVuIGxhc3QgZGlnaXQuCisKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSkKKyAgICAgICAgMTIzCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctNDU2Ljc4OScpKQorICAgICAgICAtNDU3CisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctMy4wJykpCisgICAgICAgIC0zCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcyLjUnKSkKKyAgICAgICAgMgorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMy41JykpCisgICAgICAgIDQKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ0luZicpKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIE92ZXJmbG93RXJyb3I6IGNhbm5vdCByb3VuZCBhbiBpbmZpbml0eQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnTmFOJykpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgVmFsdWVFcnJvcjogY2Fubm90IHJvdW5kIGEgTmFOCisKKyAgICAgICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgbiBpcyBzdXBwbGllZCwgc2VsZiBpcyByb3VuZGVkIHRvIG4KKyAgICAgICAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgZm9yIHRoZSBjdXJyZW50CisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgRm9yIGFuIGludGVnZXIgbiwgcm91bmQoc2VsZiwgLW4pIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bworICAgICAgICBzZWxmLnF1YW50aXplKERlY2ltYWwoJzFFbicpKS4KKworICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAwKQorICAgICAgICBEZWNpbWFsKCcxMjMnKQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAyKQorICAgICAgICBEZWNpbWFsKCcxMjMuNDYnKQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAtMikKKyAgICAgICAgRGVjaW1hbCgnMUUrMicpCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctSW5maW5pdHknKSwgMzcpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdzTmFOMTIzJyksIDApCisgICAgICAgIERlY2ltYWwoJ05hTjEyMycpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIHR3by1hcmd1bWVudCBmb3JtOiB1c2UgdGhlIGVxdWl2YWxlbnQgcXVhbnRpemUgY2FsbAorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobiwgaW50KToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1NlY29uZCBhcmd1bWVudCB0byByb3VuZCBzaG91bGQgYmUgaW50ZWdyYWwnKQorICAgICAgICAgICAgZXhwID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIC1uKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucXVhbnRpemUoZXhwKQorCisgICAgICAgICMgb25lLWFyZ3VtZW50IGZvcm0KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0hBTEZfRVZFTikpCisKKyAgICBkZWYgX19mbG9vcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZsb29yIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBncmVhdGVzdAorICAgICAgICBpbnRlZ2VyIG4gc3VjaCB0aGF0IG4gPD0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4KKyAgICAgICAgdGhlbiBhIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfRkxPT1IpKQorCisgICAgZGVmIF9fY2VpbF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNlaWxpbmcgb2Ygc2VsZiwgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBGb3IgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBzZWxmLCByZXR1cm4gdGhlIGxlYXN0IGludGVnZXIgbgorICAgICAgICBzdWNoIHRoYXQgbiA+PSBzZWxmLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvciBhIE5hTiB0aGVuIGEKKyAgICAgICAgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9DRUlMSU5HKSkKKworICAgIGRlZiBmbWEoc2VsZiwgb3RoZXIsIHRoaXJkLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJGdXNlZCBtdWx0aXBseS1hZGQuCisKKyAgICAgICAgUmV0dXJucyBzZWxmKm90aGVyK3RoaXJkIHdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZQorICAgICAgICBwcm9kdWN0IHNlbGYqb3RoZXIuCisKKyAgICAgICAgc2VsZiBhbmQgb3RoZXIgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHdpdGggbm8gcm91bmRpbmcgb2YKKyAgICAgICAgdGhlIHJlc3VsdC4gIFRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCwKKyAgICAgICAgYW5kIGEgc2luZ2xlIGZpbmFsIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgIyBjb21wdXRlIHByb2R1Y3Q7IHJhaXNlIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIG9wZXJhbmQgaXMKKyAgICAgICAgIyBhIHNpZ25hbGluZyBOYU4gb3IgaWYgdGhlIHByb2R1Y3QgaXMgemVybyB0aW1lcyBpbmZpbml0eS4KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ04nOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsIHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlci5fZXhwID09ICdOJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBvdGhlcikKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IHNlbGYKKyAgICAgICAgICAgIGVsaWYgb3RoZXIuX2V4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IG90aGVyCisgICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnRic6CisgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTkYgKiAwIGluIGZtYScpCisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCisgICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ0YnOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICogSU5GIGluIGZtYScpCisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcm9kdWN0ID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBpbnQob3RoZXIuX2ludCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwICsgb3RoZXIuX2V4cCkKKworICAgICAgICByZXR1cm4gcHJvZHVjdC5fX2FkZF9fKHRoaXJkLCBjb250ZXh0KQorCisgICAgZGVmIF9wb3dlcl9tb2R1bG8oc2VsZiwgb3RoZXIsIG1vZHVsbywgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiVGhyZWUgYXJndW1lbnQgdmVyc2lvbiBvZiBfX3Bvd19fIiIiCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvKQorICAgICAgICBpZiBtb2R1bG8gaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gbW9kdWxvCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgZGVhbCB3aXRoIE5hTnM6IGlmIHRoZXJlIGFyZSBhbnkgc05hTnMgdGhlbiBmaXJzdCBvbmUgd2lucywKKyAgICAgICAgIyAoaS5lLiBiZWhhdmlvdXIgZm9yIE5hTnMgaXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YgZm1hKQorICAgICAgICBzZWxmX2lzX25hbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgbW9kdWxvX2lzX25hbiA9IG1vZHVsby5faXNuYW4oKQorICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW4gb3IgbW9kdWxvX2lzX25hbjoKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQorICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKKyAgICAgICAgICAgIGlmIG1vZHVsb19pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsbykKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgICAgICBpZiBvdGhlcl9pc19uYW46CisgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gbW9kdWxvLl9maXhfbmFuKGNvbnRleHQpCisKKyAgICAgICAgIyBjaGVjayBpbnB1dHM6IHdlIGFwcGx5IHNhbWUgcmVzdHJpY3Rpb25zIGFzIFB5dGhvbidzIHBvdygpCisgICAgICAgIGlmIG5vdCAoc2VsZi5faXNpbnRlZ2VyKCkgYW5kCisgICAgICAgICAgICAgICAgb3RoZXIuX2lzaW50ZWdlcigpIGFuZAorICAgICAgICAgICAgICAgIG1vZHVsby5faXNpbnRlZ2VyKCkpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvdygpIDNyZCBhcmd1bWVudCBub3QgYWxsb3dlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VubGVzcyBhbGwgYXJndW1lbnRzIGFyZSBpbnRlZ2VycycpCisgICAgICAgIGlmIG90aGVyIDwgMDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAybmQgYXJndW1lbnQgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVnYXRpdmUgd2hlbiAzcmQgYXJndW1lbnQgc3BlY2lmaWVkJykKKyAgICAgICAgaWYgbm90IG1vZHVsbzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgY2Fubm90IGJlIDAnKQorCisgICAgICAgICMgYWRkaXRpb25hbCByZXN0cmljdGlvbiBmb3IgZGVjaW1hbDogdGhlIG1vZHVsdXMgbXVzdCBiZSBsZXNzCisgICAgICAgICMgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZQorICAgICAgICBpZiBtb2R1bG8uYWRqdXN0ZWQoKSA+PSBjb250ZXh0LnByZWM6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdWZmaWNpZW50IHByZWNpc2lvbjogcG93KCkgM3JkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgbXVzdCBub3QgaGF2ZSBtb3JlIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gZGlnaXRzJykKKworICAgICAgICAjIGRlZmluZSAwKiowID09IE5hTiwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdHdvLWFyZ3VtZW50IHBvdworICAgICAgICAjIChldmVuIHRob3VnaCBpdCBodXJ0cyEpCisgICAgICAgIGlmIG5vdCBvdGhlciBhbmQgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgbGVhc3Qgb25lIG9mIHBvdygpIDFzdCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCAybmQgYXJndW1lbnQgbXVzdCBiZSBub256ZXJvIDsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAqKjAgaXMgbm90IGRlZmluZWQnKQorCisgICAgICAgICMgY29tcHV0ZSBzaWduIG9mIHJlc3VsdAorICAgICAgICBpZiBvdGhlci5faXNldmVuKCk6CisgICAgICAgICAgICBzaWduID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KKworICAgICAgICAjIGNvbnZlcnQgbW9kdWxvIHRvIGEgUHl0aG9uIGludGVnZXIsIGFuZCBzZWxmIGFuZCBvdGhlciB0bworICAgICAgICAjIERlY2ltYWwgaW50ZWdlcnMgKGkuZS4gZm9yY2UgdGhlaXIgZXhwb25lbnRzIHRvIGJlID49IDApCisgICAgICAgIG1vZHVsbyA9IGFicyhpbnQobW9kdWxvKSkKKyAgICAgICAgYmFzZSA9IF9Xb3JrUmVwKHNlbGYudG9faW50ZWdyYWxfdmFsdWUoKSkKKyAgICAgICAgZXhwb25lbnQgPSBfV29ya1JlcChvdGhlci50b19pbnRlZ3JhbF92YWx1ZSgpKQorCisgICAgICAgICMgY29tcHV0ZSByZXN1bHQgdXNpbmcgaW50ZWdlciBwb3coKQorICAgICAgICBiYXNlID0gKGJhc2UuaW50ICUgbW9kdWxvICogcG93KDEwLCBiYXNlLmV4cCwgbW9kdWxvKSkgJSBtb2R1bG8KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZXhwb25lbnQuZXhwKToKKyAgICAgICAgICAgIGJhc2UgPSBwb3coYmFzZSwgMTAsIG1vZHVsbykKKyAgICAgICAgYmFzZSA9IHBvdyhiYXNlLCBleHBvbmVudC5pbnQsIG1vZHVsbykKKworICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoYmFzZSksIDApCisKKyAgICBkZWYgX3Bvd2VyX2V4YWN0KHNlbGYsIG90aGVyLCBwKToKKyAgICAgICAgIiIiQXR0ZW1wdCB0byBjb21wdXRlIHNlbGYqKm90aGVyIGV4YWN0bHkuCisKKyAgICAgICAgR2l2ZW4gRGVjaW1hbHMgc2VsZiBhbmQgb3RoZXIgYW5kIGFuIGludGVnZXIgcCwgYXR0ZW1wdCB0bworICAgICAgICBjb21wdXRlIGFuIGV4YWN0IHJlc3VsdCBmb3IgdGhlIHBvd2VyIHNlbGYqKm90aGVyLCB3aXRoIHAKKyAgICAgICAgZGlnaXRzIG9mIHByZWNpc2lvbi4gIFJldHVybiBOb25lIGlmIHNlbGYqKm90aGVyIGlzIG5vdAorICAgICAgICBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gcCBkaWdpdHMuCisKKyAgICAgICAgQXNzdW1lcyB0aGF0IGVsaW1pbmF0aW9uIG9mIHNwZWNpYWwgY2FzZXMgaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBwZXJmb3JtZWQ6IHNlbGYgYW5kIG90aGVyIG11c3QgYm90aCBiZSBub25zcGVjaWFsOyBzZWxmIG11c3QKKyAgICAgICAgYmUgcG9zaXRpdmUgYW5kIG5vdCBudW1lcmljYWxseSBlcXVhbCB0byAxOyBvdGhlciBtdXN0IGJlCisgICAgICAgIG5vbnplcm8uICBGb3IgZWZmaWNpZW5jeSwgb3RoZXIuX2V4cCBzaG91bGQgbm90IGJlIHRvbyBsYXJnZSwKKyAgICAgICAgc28gdGhhdCAxMCoqYWJzKG90aGVyLl9leHApIGlzIGEgZmVhc2libGUgY2FsY3VsYXRpb24uIiIiCisKKyAgICAgICAgIyBJbiB0aGUgY29tbWVudHMgYmVsb3csIHdlIHdyaXRlIHggZm9yIHRoZSB2YWx1ZSBvZiBzZWxmIGFuZCB5IGZvciB0aGUKKyAgICAgICAgIyB2YWx1ZSBvZiBvdGhlci4gIFdyaXRlIHggPSB4YyoxMCoqeGUgYW5kIGFicyh5KSA9IHljKjEwKip5ZSwgd2l0aCB4YworICAgICAgICAjIGFuZCB5YyBwb3NpdGl2ZSBpbnRlZ2VycyBub3QgZGl2aXNpYmxlIGJ5IDEwLgorCisgICAgICAgICMgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBpZGVudGlmeSB0aGUgKmZhaWx1cmUqCisgICAgICAgICMgb2YgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgd2l0aCBhcyBsaXR0bGUgZWZmb3J0IGFzCisgICAgICAgICMgcG9zc2libGUuICBTbyB3ZSBsb29rIGZvciBjaGVhcCBhbmQgZWFzeSB0ZXN0cyB0aGF0CisgICAgICAgICMgZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiB4Kip5IGJlaW5nIGV4YWN0LiAgT25seSBpZiBhbGwKKyAgICAgICAgIyB0aGVzZSB0ZXN0cyBhcmUgcGFzc2VkIGRvIHdlIGdvIG9uIHRvIGFjdHVhbGx5IGNvbXB1dGUgeCoqeS4KKworICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbnVtYmVyIG0vbiwgd2l0aCBtIGFuZAorICAgICAgICAjIG4gcmVsYXRpdmVseSBwcmltZSBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5CisgICAgICAgICMgcmVwcmVzZW50YWJsZSAoYXQgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEKKyAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgeSBpcyBuZWdhdGl2ZQorICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZSBhIHBvd2VyCisgICAgICAgICMgb2YgMioqbiBvciA1KipuLgorICAgICAgICAjCisgICAgICAgICMgVGhlcmUncyBhIGxpbWl0IHRvIGhvdyBzbWFsbCB8eXwgY2FuIGJlOiBpZiB5PW0vbiBhcyBhYm92ZQorICAgICAgICAjIHRoZW46CisgICAgICAgICMKKyAgICAgICAgIyAgKDEpIGlmIHhjICE9IDEgdGhlbiBmb3IgdGhlIHJlc3VsdCB0byBiZSByZXByZXNlbnRhYmxlIHdlCisgICAgICAgICMgICAgICBuZWVkIHhjKiooMS9uKSA+PSAyLCBhbmQgaGVuY2UgYWxzbyB4YyoqfHl8ID49IDIuICBTbworICAgICAgICAjICAgICAgaWYgfHl8IDw9IDEvbmJpdHMoeGMpIHRoZW4geGMgPCAyKipuYml0cyh4YykgPD0KKyAgICAgICAgIyAgICAgIDIqKigxL3x5fCksIGhlbmNlIHhjKip8eXwgPCAyIGFuZCB0aGUgcmVzdWx0IGlzIG5vdAorICAgICAgICAjICAgICAgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgIworICAgICAgICAjICAoMikgaWYgeGUgIT0gMCwgfHhlfCooMS9uKSA+PSAxLCBzbyB8eGV8Knx5fCA+PSAxLiAgSGVuY2UgaWYKKyAgICAgICAgIyAgICAgIHx5fCA8IDEvfHhlfCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCisgICAgICAgICMKKyAgICAgICAgIyBOb3RlIHRoYXQgc2luY2UgeCBpcyBub3QgZXF1YWwgdG8gMSwgYXQgbGVhc3Qgb25lIG9mICgxKSBhbmQKKyAgICAgICAgIyAoMikgbXVzdCBhcHBseS4gIE5vdyB8eXwgPCAxL25iaXRzKHhjKSBpZmYgfHljfCpuYml0cyh4YykgPAorICAgICAgICAjIDEwKioteWUgaWZmIGxlbihzdHIofHljfCpuYml0cyh4YykpIDw9IC15ZS4KKyAgICAgICAgIworICAgICAgICAjIFRoZXJlJ3MgYWxzbyBhIGxpbWl0IHRvIGhvdyBsYXJnZSB5IGNhbiBiZSwgYXQgbGVhc3QgaWYgaXQncworICAgICAgICAjIHBvc2l0aXZlOiB0aGUgbm9ybWFsaXplZCByZXN1bHQgd2lsbCBoYXZlIGNvZWZmaWNpZW50IHhjKip5LAorICAgICAgICAjIHNvIGlmIGl0J3MgcmVwcmVzZW50YWJsZSB0aGVuIHhjKip5IDwgMTAqKnAsIGFuZCB5IDwKKyAgICAgICAgIyBwL2xvZzEwKHhjKS4gIEhlbmNlIGlmIHkqbG9nMTAoeGMpID49IHAgdGhlbiB0aGUgcmVzdWx0IGlzCisgICAgICAgICMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZS4KKworICAgICAgICAjIGlmIGxlbihzdHIoYWJzKHljKnhlKSkgPD0gLXllIHRoZW4gYWJzKHljKnhlKSA8IDEwKioteWUsCisgICAgICAgICMgc28gfHl8IDwgMS94ZSBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgIyBTaW1pbGFybHksIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllIGltcGxpZXMgfHl8CisgICAgICAgICMgPCAxL25iaXRzKHhjKS4KKworICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCisgICAgICAgIHdoaWxlIHhjICUgMTAgPT0gMDoKKyAgICAgICAgICAgIHhjIC8vPSAxMAorICAgICAgICAgICAgeGUgKz0gMQorCisgICAgICAgIHkgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCisgICAgICAgIHdoaWxlIHljICUgMTAgPT0gMDoKKyAgICAgICAgICAgIHljIC8vPSAxMAorICAgICAgICAgICAgeWUgKz0gMQorCisgICAgICAgICMgY2FzZSB3aGVyZSB4YyA9PSAxOiByZXN1bHQgaXMgMTAqKih4ZSp5KSwgd2l0aCB4ZSp5CisgICAgICAgICMgcmVxdWlyZWQgdG8gYmUgYW4gaW50ZWdlcgorICAgICAgICBpZiB4YyA9PSAxOgorICAgICAgICAgICAgeGUgKj0geWMKKyAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdyAxMCoqKHhlICogMTAqKnllKTsgIHhlICogMTAqKnllIG11c3QgYmUgaW50ZWdyYWwKKyAgICAgICAgICAgIHdoaWxlIHhlICUgMTAgPT0gMDoKKyAgICAgICAgICAgICAgICB4ZSAvLz0gMTAKKyAgICAgICAgICAgICAgICB5ZSArPSAxCisgICAgICAgICAgICBpZiB5ZSA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGV4cG9uZW50ID0geGUgKiAxMCoqeWUKKyAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50CisgICAgICAgICAgICAjIGlmIG90aGVyIGlzIGEgbm9ubmVnYXRpdmUgaW50ZWdlciwgdXNlIGlkZWFsIGV4cG9uZW50CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCkgYW5kIG90aGVyLl9zaWduID09IDA6CisgICAgICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQorICAgICAgICAgICAgICAgIHplcm9zID0gbWluKGV4cG9uZW50LWlkZWFsX2V4cG9uZW50LCBwLTEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHplcm9zID0gMAorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnICsgJzAnKnplcm9zLCBleHBvbmVudC16ZXJvcykKKworICAgICAgICAjIGNhc2Ugd2hlcmUgeSBpcyBuZWdhdGl2ZTogeGMgbXVzdCBiZSBlaXRoZXIgYSBwb3dlcgorICAgICAgICAjIG9mIDIgb3IgYSBwb3dlciBvZiA1LgorICAgICAgICBpZiB5LnNpZ24gPT0gMToKKyAgICAgICAgICAgIGxhc3RfZGlnaXQgPSB4YyAlIDEwCisgICAgICAgICAgICBpZiBsYXN0X2RpZ2l0IGluICgyLDQsNiw4KToKKyAgICAgICAgICAgICAgICAjIHF1aWNrIHRlc3QgZm9yIHBvd2VyIG9mIDIKKyAgICAgICAgICAgICAgICBpZiB4YyAmIC14YyAhPSB4YzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICAjIG5vdyB4YyBpcyBhIHBvd2VyIG9mIDI7IGUgaXMgaXRzIGV4cG9uZW50CisgICAgICAgICAgICAgICAgZSA9IF9uYml0cyh4YyktMQorCisgICAgICAgICAgICAgICAgIyBXZSBub3cgaGF2ZToKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHggPSAyKiplICogMTAqKnhlLCBlID4gMCwgYW5kIHkgPCAwLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFRoZSBleGFjdCByZXN1bHQgaXM6CisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB4Kip5ID0gNSoqKC1lKnkpICogMTAqKihlKnkgKyB4ZSp5KQorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHByb3ZpZGVkIHRoYXQgYm90aCBlKnkgYW5kIHhlKnkgYXJlIGludGVnZXJzLiAgTm90ZSB0aGF0IGlmCisgICAgICAgICAgICAgICAgIyA1KiooLWUqeSkgPj0gMTAqKnAsIHRoZW4gdGhlIHJlc3VsdCBjYW4ndCBiZSBleHByZXNzZWQKKyAgICAgICAgICAgICAgICAjIGV4YWN0bHkgd2l0aCBwIGRpZ2l0cyBvZiBwcmVjaXNpb24uCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgVXNpbmcgdGhlIGFib3ZlLCB3ZSBjYW4gZ3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUuCisgICAgICAgICAgICAgICAgIyA5My82NSBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nKDEwKS9sb2coNSksIHNvIGlmCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB5ZSA+PSBsZW4oc3RyKDkzKnAvLzY1KSkKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyB0aGVuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICAtZSp5ID49IC15ID49IDEwKip5ZSA+IDkzKnAvNjUgPiBwKmxvZygxMCkvbG9nKDUpLAorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHNvIDUqKigtZSp5KSA+PSAxMCoqcCwgYW5kIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICAgIyBjYW4ndCBiZSBleHByZXNzZWQgaW4gcCBkaWdpdHMuCisKKyAgICAgICAgICAgICAgICAjIGVtYXggPj0gbGFyZ2VzdCBlIHN1Y2ggdGhhdCA1KiplIDwgMTAqKnAuCisgICAgICAgICAgICAgICAgZW1heCA9IHAqOTMvLzY1CisgICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICAjIEZpbmQgLWUqeSBhbmQgLXhlKnk7IGJvdGggbXVzdCBiZSBpbnRlZ2VycworICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHhjID0gNSoqZQorCisgICAgICAgICAgICBlbGlmIGxhc3RfZGlnaXQgPT0gNToKKyAgICAgICAgICAgICAgICAjIGUgPj0gbG9nXzUoeGMpIGlmIHhjIGlzIGEgcG93ZXIgb2YgNTsgd2UgaGF2ZQorICAgICAgICAgICAgICAgICMgZXF1YWxpdHkgYWxsIHRoZSB3YXkgdXAgdG8geGM9NSoqMjY1OAorICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpKjI4Ly82NQorICAgICAgICAgICAgICAgIHhjLCByZW1haW5kZXIgPSBkaXZtb2QoNSoqZSwgeGMpCisgICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHdoaWxlIHhjICUgNSA9PSAwOgorICAgICAgICAgICAgICAgICAgICB4YyAvLz0gNQorICAgICAgICAgICAgICAgICAgICBlIC09IDEKKworICAgICAgICAgICAgICAgICMgR3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUsIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIGluCisgICAgICAgICAgICAgICAgIyB0aGUgJ3hjIGlzIGEgcG93ZXIgb2YgMicgYnJhbmNoLiAgMTAvMyBpcyBhbiB1cHBlciBib3VuZCBmb3IKKyAgICAgICAgICAgICAgICAjIGxvZygxMCkvbG9nKDIpLgorICAgICAgICAgICAgICAgIGVtYXggPSBwKjEwLy8zCisgICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICB4YyA9IDIqKmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgaWYgeGMgPj0gMTAqKnA6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHhlID0gLWUteGUKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cih4YyksIHhlKQorCisgICAgICAgICMgbm93IHkgaXMgcG9zaXRpdmU7IGZpbmQgbSBhbmQgbiBzdWNoIHRoYXQgeSA9IG0vbgorICAgICAgICBpZiB5ZSA+PSAwOgorICAgICAgICAgICAgbSwgbiA9IHljKjEwKip5ZSwgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgeGUgIT0gMCBhbmQgbGVuKHN0cihhYnMoeWMqeGUpKSkgPD0gLXllOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICB4Y19iaXRzID0gX25iaXRzKHhjKQorICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgbGVuKHN0cihhYnMoeWMpKnhjX2JpdHMpKSA8PSAteWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIG0sIG4gPSB5YywgMTAqKigteWUpCisgICAgICAgICAgICB3aGlsZSBtICUgMiA9PSBuICUgMiA9PSAwOgorICAgICAgICAgICAgICAgIG0gLy89IDIKKyAgICAgICAgICAgICAgICBuIC8vPSAyCisgICAgICAgICAgICB3aGlsZSBtICUgNSA9PSBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG0gLy89IDUKKyAgICAgICAgICAgICAgICBuIC8vPSA1CisKKyAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjKjEwKip4ZQorICAgICAgICBpZiBuID4gMToKKyAgICAgICAgICAgICMgaWYgMSA8IHhjIDwgMioqbiB0aGVuIHhjIGlzbid0IGFuIG50aCBwb3dlcgorICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgeGNfYml0cyA8PSBuOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIHhlLCByZW0gPSBkaXZtb2QoeGUsIG4pCisgICAgICAgICAgICBpZiByZW0gIT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAjIGNvbXB1dGUgbnRoIHJvb3Qgb2YgeGMgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCisgICAgICAgICAgICBhID0gMSA8PCAtKC1fbmJpdHMoeGMpLy9uKSAjIGluaXRpYWwgZXN0aW1hdGUKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcSwgciA9IGRpdm1vZCh4YywgYSoqKG4tMSkpCisgICAgICAgICAgICAgICAgaWYgYSA8PSBxOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGEgPSAoYSoobi0xKSArIHEpLy9uCisgICAgICAgICAgICBpZiBub3QgKGEgPT0gcSBhbmQgciA9PSAwKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgeGMgPSBhCisKKyAgICAgICAgIyBub3cgeGMqMTAqKnhlIGlzIHRoZSBudGggcm9vdCBvZiB0aGUgb3JpZ2luYWwgeGMqMTAqKnhlCisgICAgICAgICMgY29tcHV0ZSBtdGggcG93ZXIgb2YgeGMqMTAqKnhlCisKKyAgICAgICAgIyBpZiBtID4gcCoxMDAvL19sb2cxMF9sYih4YykgdGhlbiBtID4gcC9sb2cxMCh4YyksIGhlbmNlIHhjKiptID4KKyAgICAgICAgIyAxMCoqcCBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgaWYgeGMgPiAxIGFuZCBtID4gcCoxMDAvL19sb2cxMF9sYih4Yyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB4YyA9IHhjKiptCisgICAgICAgIHhlICo9IG0KKyAgICAgICAgaWYgeGMgPiAxMCoqcDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgIyBieSB0aGlzIHBvaW50IHRoZSByZXN1bHQgKmlzKiBleGFjdGx5IHJlcHJlc2VudGFibGUKKyAgICAgICAgIyBhZGp1c3QgdGhlIGV4cG9uZW50IHRvIGdldCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgaWRlYWwKKyAgICAgICAgIyBleHBvbmVudCwgaWYgbmVjZXNzYXJ5CisgICAgICAgIHN0cl94YyA9IHN0cih4YykKKyAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgorICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQorICAgICAgICAgICAgemVyb3MgPSBtaW4oeGUtaWRlYWxfZXhwb25lbnQsIHAtbGVuKHN0cl94YykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB6ZXJvcyA9IDAKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyX3hjKycwJyp6ZXJvcywgeGUtemVyb3MpCisKKyAgICBkZWYgX19wb3dfXyhzZWxmLCBvdGhlciwgbW9kdWxvPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzZWxmICoqIG90aGVyIFsgJSBtb2R1bG9dLgorCisgICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBzZWxmKipvdGhlci4KKworICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoc2VsZioqb3RoZXIpICUgbW9kdWxvLiAgRm9yIHRoZQorICAgICAgICB0aHJlZSBhcmd1bWVudCBmb3JtLCB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBvbiB0aGUKKyAgICAgICAgYXJndW1lbnRzIGhvbGQ6CisKKyAgICAgICAgIC0gYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsCisgICAgICAgICAtIG90aGVyIG11c3QgYmUgbm9ubmVnYXRpdmUKKyAgICAgICAgIC0gZWl0aGVyIHNlbGYgb3Igb3RoZXIgKG9yIGJvdGgpIG11c3QgYmUgbm9uemVybworICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBtdXN0IGhhdmUgYXQgbW9zdCBwIGRpZ2l0cywKKyAgICAgICAgICAgd2hlcmUgcCBpcyB0aGUgY29udGV4dCBwcmVjaXNpb24uCisKKyAgICAgICAgSWYgYW55IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2aW9sYXRlZCB0aGUgSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBmbGFnIGlzIHJhaXNlZC4KKworICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhzZWxmLCBvdGhlciwgbW9kdWxvKSBpcyBpZGVudGljYWwgdG8gdGhlCisgICAgICAgIHJlc3VsdCB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoc2VsZioqb3RoZXIpICUKKyAgICAgICAgbW9kdWxvIHdpdGggdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUKKyAgICAgICAgZWZmaWNpZW50bHkuICBJdCBpcyBhbHdheXMgZXhhY3QuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIG1vZHVsbyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3dlcl9tb2R1bG8ob3RoZXIsIG1vZHVsbywgY29udGV4dCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGVpdGhlciBhcmd1bWVudCBpcyBhIE5hTiA9PiByZXN1bHQgaXMgTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIDAqKjAgPSBOYU4gKCEpLCB4KiowID0gMSBmb3Igbm9uemVybyB4IChpbmNsdWRpbmcgKy8tSW5maW5pdHkpCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnMCAqKiAwJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKworICAgICAgICAjIHJlc3VsdCBoYXMgc2lnbiAxIGlmZiBzZWxmLl9zaWduIGlzIDEgYW5kIG90aGVyIGlzIGFuIG9kZCBpbnRlZ2VyCisgICAgICAgIHJlc3VsdF9zaWduID0gMAorICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyLl9pc2V2ZW4oKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3NpZ24gPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgLXZlKipub25pbnRlZ2VyID0gTmFOCisgICAgICAgICAgICAgICAgIyAoLTApKipub25pbnRlZ2VyID0gMCoqbm9uaW50ZWdlcgorICAgICAgICAgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ggKiogeSB3aXRoIHggbmVnYXRpdmUgYW5kIHkgbm90IGFuIGludGVnZXInKQorICAgICAgICAgICAgIyBuZWdhdGUgc2VsZiwgd2l0aG91dCBkb2luZyBhbnkgdW53YW50ZWQgcm91bmRpbmcKKyAgICAgICAgICAgIHNlbGYgPSBzZWxmLmNvcHlfbmVnYXRlKCkKKworICAgICAgICAjIDAqKigrdmUgb3IgSW5mKT0gMDsgMCoqKC12ZSBvciAtSW5mKSA9IEluZmluaXR5CisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQorCisgICAgICAgICMgSW5mKiooK3ZlIG9yIEluZikgPSBJbmY7IEluZioqKC12ZSBvciAtSW5mKSA9IDAKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQorCisgICAgICAgICMgMSoqb3RoZXIgPSAxLCBidXQgdGhlIGNob2ljZSBvZiBleHBvbmVudCBhbmQgdGhlIGZsYWdzCisgICAgICAgICMgZGVwZW5kIG9uIHRoZSBleHBvbmVudCBvZiBzZWxmLCBhbmQgb24gd2hldGhlciBvdGhlciBpcyBhCisgICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciwgYSBuZWdhdGl2ZSBpbnRlZ2VyLCBvciBuZWl0aGVyCisgICAgICAgIGlmIHNlbGYgPT0gX09uZToKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKToKKyAgICAgICAgICAgICAgICAjIGV4cCA9IG1heChzZWxmLl9leHAqbWF4KGludChvdGhlciksIDApLAorICAgICAgICAgICAgICAgICMgMS1jb250ZXh0LnByZWMpIGJ1dCBldmFsdWF0aW5nIGludChvdGhlcikgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAjIGlzIGRhbmdlcm91cyB1bnRpbCB3ZSBrbm93IG90aGVyIGlzIHNtYWxsIChvdGhlcgorICAgICAgICAgICAgICAgICMgY291bGQgYmUgMWU5OTk5OTk5OTkpCisgICAgICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IDAKKyAgICAgICAgICAgICAgICBlbGlmIG90aGVyID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gY29udGV4dC5wcmVjCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGludChvdGhlcikKKworICAgICAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgICAgICBpZiBleHAgPCAxLWNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gMS1jb250ZXh0LnByZWMKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCisKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScrJzAnKi1leHAsIGV4cCkKKworICAgICAgICAjIGNvbXB1dGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZgorICAgICAgICBzZWxmX2FkaiA9IHNlbGYuYWRqdXN0ZWQoKQorCisgICAgICAgICMgc2VsZiAqKiBpbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmID4gMSwgMCBpZiBzZWxmIDwgMQorICAgICAgICAjIHNlbGYgKiogLWluZmluaXR5IGlzIGluZmluaXR5IGlmIHNlbGYgPCAxLCAwIGlmIHNlbGYgPiAxCisgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiAob3RoZXIuX3NpZ24gPT0gMCkgPT0gKHNlbGZfYWRqIDwgMCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KKworICAgICAgICAjIGZyb20gaGVyZSBvbiwgdGhlIHJlc3VsdCBhbHdheXMgZ29lcyB0aHJvdWdoIHRoZSBjYWxsCisgICAgICAgICMgdG8gX2ZpeCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGFucyA9IE5vbmUKKyAgICAgICAgZXhhY3QgPSBGYWxzZQorCisgICAgICAgICMgY3J1ZGUgdGVzdCB0byBjYXRjaCBjYXNlcyBvZiBleHRyZW1lIG92ZXJmbG93L3VuZGVyZmxvdy4gIElmCisgICAgICAgICMgbG9nMTAoc2VsZikqb3RoZXIgPj0gMTAqKmJvdW5kIGFuZCBib3VuZCA+PSBsZW4oc3RyKEVtYXgpKQorICAgICAgICAjIHRoZW4gMTAqKmJvdW5kID49IDEwKipsZW4oc3RyKEVtYXgpKSA+PSBFbWF4KzEgYW5kIGhlbmNlCisgICAgICAgICMgc2VsZioqb3RoZXIgPj0gMTAqKihFbWF4KzEpLCBzbyBvdmVyZmxvdyBvY2N1cnMuICBUaGUgdGVzdAorICAgICAgICAjIGZvciB1bmRlcmZsb3cgaXMgc2ltaWxhci4KKyAgICAgICAgYm91bmQgPSBzZWxmLl9sb2cxMF9leHBfYm91bmQoKSArIG90aGVyLmFkanVzdGVkKCkKKyAgICAgICAgaWYgKHNlbGZfYWRqID49IDApID09IChvdGhlci5fc2lnbiA9PSAwKToKKyAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyICt2ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyIC12ZQorICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdworICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cihjb250ZXh0LkVtYXgpKToKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIGNvbnRleHQuRW1heCsxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBzZWxmID4gMSBhbmQgb3RoZXIgLXZlLCBvciBzZWxmIDwgMSBhbmQgb3RoZXIgK3ZlCisgICAgICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIHVuZGVyZmxvdyB0byAwCisgICAgICAgICAgICBFdGlueSA9IGNvbnRleHQuRXRpbnkoKQorICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cigtRXRpbnkpKToKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIEV0aW55LTEpCisKKyAgICAgICAgIyB0cnkgZm9yIGFuIGV4YWN0IHJlc3VsdCB3aXRoIHByZWNpc2lvbiArMQorICAgICAgICBpZiBhbnMgaXMgTm9uZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX3Bvd2VyX2V4YWN0KG90aGVyLCBjb250ZXh0LnByZWMgKyAxKQorICAgICAgICAgICAgaWYgYW5zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9zaWduID09IDE6CisgICAgICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMSwgYW5zLl9pbnQsIGFucy5fZXhwKQorICAgICAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQorCisgICAgICAgICMgdXN1YWwgY2FzZTogaW5leGFjdCByZXN1bHQsIHgqKnkgY29tcHV0ZWQgZGlyZWN0bHkgYXMgZXhwKHkqbG9nKHgpKQorICAgICAgICBpZiBhbnMgaXMgTm9uZToKKyAgICAgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKyAgICAgICAgICAgIHggPSBfV29ya1JlcChzZWxmKQorICAgICAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCisgICAgICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgICAgICB5YywgeWUgPSB5LmludCwgeS5leHAKKyAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgIHljID0gLXljCisKKyAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6ICBzdGFydCB3aXRoIHByZWNpc2lvbiArMywKKyAgICAgICAgICAgICMgdGhlbiBpbmNyZWFzZSBwcmVjaXNpb24gdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCisgICAgICAgICAgICBleHRyYSA9IDMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY29lZmYsIGV4cCA9IF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHArZXh0cmEpCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoY29lZmYpKS1wLTEpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleHRyYSArPSAzCisKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sIHN0cihjb2VmZiksIGV4cCkKKworICAgICAgICAjIHVubGlrZSBleHAsIGxuIGFuZCBsb2cxMCwgdGhlIHBvd2VyIGZ1bmN0aW9uIHJlc3BlY3RzIHRoZQorICAgICAgICAjIHJvdW5kaW5nIG1vZGU7IG5vIG5lZWQgdG8gc3dpdGNoIHRvIFJPVU5EX0hBTEZfRVZFTiBoZXJlCisKKyAgICAgICAgIyBUaGVyZSdzIGEgZGlmZmljdWx0eSBoZXJlIHdoZW4gJ290aGVyJyBpcyBub3QgYW4gaW50ZWdlciBhbmQKKyAgICAgICAgIyB0aGUgcmVzdWx0IGlzIGV4YWN0LiAgSW4gdGhpcyBjYXNlLCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIEluZXhhY3QgZmxhZyBiZSByYWlzZWQgKGluIHNwaXRlIG9mCisgICAgICAgICMgZXhhY3RuZXNzKSwgYnV0IHNpbmNlIHRoZSByZXN1bHQgaXMgZXhhY3QgX2ZpeCB3b24ndCBkbyB0aGlzCisgICAgICAgICMgZm9yIHVzLiAgKENvcnJlc3BvbmRpbmdseSwgdGhlIFVuZGVyZmxvdyBzaWduYWwgc2hvdWxkIGFsc28KKyAgICAgICAgIyBiZSByYWlzZWQgZm9yIHN1Ym5vcm1hbCByZXN1bHRzLikgIFdlIGNhbid0IGRpcmVjdGx5IHJhaXNlCisgICAgICAgICMgdGhlc2Ugc2lnbmFscyBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGNhbGxpbmcgX2ZpeCwgc2luY2UKKyAgICAgICAgIyB0aGF0IHdvdWxkIHZpb2xhdGUgdGhlIHByZWNlZGVuY2UgZm9yIHNpZ25hbHMuICBTbyB3ZSB3cmFwCisgICAgICAgICMgdGhlIC5fZml4IGNhbGwgaW4gYSB0ZW1wb3JhcnkgY29udGV4dCwgYW5kIHJlcmFpc2UKKyAgICAgICAgIyBhZnRlcndhcmRzLgorICAgICAgICBpZiBleGFjdCBhbmQgbm90IG90aGVyLl9pc2ludGVnZXIoKToKKyAgICAgICAgICAgICMgcGFkIHdpdGggemVyb3MgdXAgdG8gbGVuZ3RoIGNvbnRleHQucHJlYysxIGlmIG5lY2Vzc2FyeTsgdGhpcworICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgdGhlIFJvdW5kZWQgc2lnbmFsIHdpbGwgYmUgcmFpc2VkLgorICAgICAgICAgICAgaWYgbGVuKGFucy5faW50KSA8PSBjb250ZXh0LnByZWM6CisgICAgICAgICAgICAgICAgZXhwZGlmZiA9IGNvbnRleHQucHJlYyArIDEgLSBsZW4oYW5zLl9pbnQpCisgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShhbnMuX3NpZ24sIGFucy5faW50KycwJypleHBkaWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9leHAtZXhwZGlmZikKKworICAgICAgICAgICAgIyBjcmVhdGUgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQsIHdpdGggY2xlYXJlZCBmbGFncy90cmFwcworICAgICAgICAgICAgbmV3Y29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgICAgICBuZXdjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gX3NpZ25hbHM6CisgICAgICAgICAgICAgICAgbmV3Y29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMAorCisgICAgICAgICAgICAjIHJvdW5kIGluIHRoZSBuZXcgY29udGV4dAorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgobmV3Y29udGV4dCkKKworICAgICAgICAgICAgIyByYWlzZSBJbmV4YWN0LCBhbmQgaWYgbmVjZXNzYXJ5LCBVbmRlcmZsb3cKKyAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW1N1Ym5vcm1hbF06CisgICAgICAgICAgICAgICAgbmV3Y29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQorCisgICAgICAgICAgICAjIHByb3BhZ2F0ZSBzaWduYWxzIHRvIHRoZSBvcmlnaW5hbCBjb250ZXh0OyBfZml4IGNvdWxkCisgICAgICAgICAgICAjIGhhdmUgcmFpc2VkIGFueSBvZiBPdmVyZmxvdywgVW5kZXJmbG93LCBTdWJub3JtYWwsCisgICAgICAgICAgICAjIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQuICBPdmVyZmxvdyBuZWVkcyB0aGUgY29ycmVjdAorICAgICAgICAgICAgIyBhcmd1bWVudHMuICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBleGNlcHRpb25zIGlzCisgICAgICAgICAgICAjIGltcG9ydGFudCBoZXJlLgorICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tPdmVyZmxvd106CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4JywgYW5zLl9zaWduKQorICAgICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCwgQ2xhbXBlZDoKKyAgICAgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW2V4Y2VwdGlvbl06CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGV4Y2VwdGlvbikKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgX19ycG93X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19wb3dfXy4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fcG93X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIG5vcm1hbGl6ZShzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJOb3JtYWxpemUtIHN0cmlwIHRyYWlsaW5nIDBzLCBjaGFuZ2UgYW55dGhpbmcgZXF1YWwgdG8gMCB0byAwZTAiIiIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBkdXAgPSBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgaWYgZHVwLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gZHVwCisKKyAgICAgICAgaWYgbm90IGR1cDoKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKGR1cC5fc2lnbiwgJzAnLCAwKQorICAgICAgICBleHBfbWF4ID0gW2NvbnRleHQuRW1heCwgY29udGV4dC5FdG9wKCldW2NvbnRleHQuY2xhbXBdCisgICAgICAgIGVuZCA9IGxlbihkdXAuX2ludCkKKyAgICAgICAgZXhwID0gZHVwLl9leHAKKyAgICAgICAgd2hpbGUgZHVwLl9pbnRbZW5kLTFdID09ICcwJyBhbmQgZXhwIDwgZXhwX21heDoKKyAgICAgICAgICAgIGV4cCArPSAxCisgICAgICAgICAgICBlbmQgLT0gMQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sIGR1cC5faW50WzplbmRdLCBleHApCisKKyAgICBkZWYgcXVhbnRpemUoc2VsZiwgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJRdWFudGl6ZSBzZWxmIHNvIGl0cyBleHBvbmVudCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIGV4cC4KKworICAgICAgICBTaW1pbGFyIHRvIHNlbGYuX3Jlc2NhbGUoZXhwLl9leHApIGJ1dCB3aXRoIGVycm9yIGNoZWNraW5nLgorICAgICAgICAiIiIKKyAgICAgICAgZXhwID0gX2NvbnZlcnRfb3RoZXIoZXhwLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgorICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBleHAuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGV4cCwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIGV4cC5faXNpbmZpbml0eSgpIG9yIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKSAgIyBpZiBib3RoIGFyZSBpbmYsIGl0IGlzIE9LCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHdpdGggb25lIElORicpCisKKyAgICAgICAgIyBleHAuX2V4cCBzaG91bGQgYmUgYmV0d2VlbiBFdGlueSBhbmQgRW1heAorICAgICAgICBpZiBub3QgKGNvbnRleHQuRXRpbnkoKSA8PSBleHAuX2V4cCA8PSBjb250ZXh0LkVtYXgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgJ3RhcmdldCBleHBvbmVudCBvdXQgb2YgYm91bmRzIGluIHF1YW50aXplJykKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBleHAuX2V4cCkKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgIHNlbGZfYWRqdXN0ZWQgPSBzZWxmLmFkanVzdGVkKCkKKyAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCA+IGNvbnRleHQuRW1heDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudCBvZiBxdWFudGl6ZSByZXN1bHQgdG9vIGxhcmdlIGZvciBjdXJyZW50IGNvbnRleHQnKQorICAgICAgICBpZiBzZWxmX2FkanVzdGVkIC0gZXhwLl9leHAgKyAxID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHJlc3VsdCBoYXMgdG9vIG1hbnkgZGlnaXRzIGZvciBjdXJyZW50IGNvbnRleHQnKQorCisgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLl9leHAsIHJvdW5kaW5nKQorICAgICAgICBpZiBhbnMuYWRqdXN0ZWQoKSA+IGNvbnRleHQuRW1heDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudCBvZiBxdWFudGl6ZSByZXN1bHQgdG9vIGxhcmdlIGZvciBjdXJyZW50IGNvbnRleHQnKQorICAgICAgICBpZiBsZW4oYW5zLl9pbnQpID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHJlc3VsdCBoYXMgdG9vIG1hbnkgZGlnaXRzIGZvciBjdXJyZW50IGNvbnRleHQnKQorCisgICAgICAgICMgcmFpc2UgYXBwcm9wcmlhdGUgZmxhZ3MKKyAgICAgICAgaWYgYW5zIGFuZCBhbnMuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbjoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKKyAgICAgICAgaWYgYW5zLl9leHAgPiBzZWxmLl9leHA6CisgICAgICAgICAgICBpZiBhbnMgIT0gc2VsZjoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKworICAgICAgICAjIGNhbGwgdG8gZml4IHRha2VzIGNhcmUgb2YgYW55IG5lY2Vzc2FyeSBmb2xkZG93biwgYW5kCisgICAgICAgICMgc2lnbmFscyBDbGFtcGVkIGlmIG5lY2Vzc2FyeQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgc2FtZV9xdWFudHVtKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50OyBvdGhlcndpc2UKKyAgICAgICAgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgc3BlY2lhbCB2YWx1ZSwgdGhlIGZvbGxvd2luZyBydWxlcyBhcmUgdXNlZDoKKyAgICAgICAgICAgKiByZXR1cm4gVHJ1ZSBpZiBib3RoIG9wZXJhbmRzIGFyZSBpbmZpbml0aWVzCisgICAgICAgICAgICogcmV0dXJuIFRydWUgaWYgYm90aCBvcGVyYW5kcyBhcmUgTmFOcworICAgICAgICAgICAqIG90aGVyd2lzZSwgcmV0dXJuIEZhbHNlLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLmlzX25hbigpIGFuZCBvdGhlci5pc19uYW4oKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLmlzX2luZmluaXRlKCkgYW5kIG90aGVyLmlzX2luZmluaXRlKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gb3RoZXIuX2V4cAorCisgICAgZGVmIF9yZXNjYWxlKHNlbGYsIGV4cCwgcm91bmRpbmcpOgorICAgICAgICAiIiJSZXNjYWxlIHNlbGYgc28gdGhhdCB0aGUgZXhwb25lbnQgaXMgZXhwLCBlaXRoZXIgYnkgcGFkZGluZyB3aXRoIHplcm9zCisgICAgICAgIG9yIGJ5IHRydW5jYXRpbmcgZGlnaXRzLCB1c2luZyB0aGUgZ2l2ZW4gcm91bmRpbmcgbW9kZS4KKworICAgICAgICBTcGVjaWFscyBhcmUgcmV0dXJuZWQgd2l0aG91dCBjaGFuZ2UuICBUaGlzIG9wZXJhdGlvbiBpcworICAgICAgICBxdWlldDogaXQgcmFpc2VzIG5vIGZsYWdzLCBhbmQgdXNlcyBubyBpbmZvcm1hdGlvbiBmcm9tIHRoZQorICAgICAgICBjb250ZXh0LgorCisgICAgICAgIGV4cCA9IGV4cCB0byBzY2FsZSB0byAoYW4gaW50ZWdlcikKKyAgICAgICAgcm91bmRpbmcgPSByb3VuZGluZyBtb2RlCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGV4cCkKKworICAgICAgICBpZiBzZWxmLl9leHAgPj0gZXhwOgorICAgICAgICAgICAgIyBwYWQgYW5zd2VyIHdpdGggemVyb3MgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gZXhwKSwgZXhwKQorCisgICAgICAgICMgdG9vIG1hbnkgZGlnaXRzOyByb3VuZCBhbmQgbG9zZSBkYXRhLiAgSWYgc2VsZi5hZGp1c3RlZCgpIDwKKyAgICAgICAgIyBleHAtMSwgcmVwbGFjZSBzZWxmIGJ5IDEwKiooZXhwLTEpIGJlZm9yZSByb3VuZGluZworICAgICAgICBkaWdpdHMgPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGV4cAorICAgICAgICBpZiBkaWdpdHMgPCAwOgorICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzEnLCBleHAtMSkKKyAgICAgICAgICAgIGRpZ2l0cyA9IDAKKyAgICAgICAgdGhpc19mdW5jdGlvbiA9IHNlbGYuX3BpY2tfcm91bmRpbmdfZnVuY3Rpb25bcm91bmRpbmddCisgICAgICAgIGNoYW5nZWQgPSB0aGlzX2Z1bmN0aW9uKHNlbGYsIGRpZ2l0cykKKyAgICAgICAgY29lZmYgPSBzZWxmLl9pbnRbOmRpZ2l0c10gb3IgJzAnCisgICAgICAgIGlmIGNoYW5nZWQgPT0gMToKKyAgICAgICAgICAgIGNvZWZmID0gc3RyKGludChjb2VmZikrMSkKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgY29lZmYsIGV4cCkKKworICAgIGRlZiBfcm91bmQoc2VsZiwgcGxhY2VzLCByb3VuZGluZyk6CisgICAgICAgICIiIlJvdW5kIGEgbm9uemVybywgbm9uc3BlY2lhbCBEZWNpbWFsIHRvIGEgZml4ZWQgbnVtYmVyIG9mCisgICAgICAgIHNpZ25pZmljYW50IGZpZ3VyZXMsIHVzaW5nIHRoZSBnaXZlbiByb3VuZGluZyBtb2RlLgorCisgICAgICAgIEluZmluaXRpZXMsIE5hTnMgYW5kIHplcm9zIGFyZSByZXR1cm5lZCB1bmFsdGVyZWQuCisKKyAgICAgICAgVGhpcyBvcGVyYXRpb24gaXMgcXVpZXQ6IGl0IHJhaXNlcyBubyBmbGFncywgYW5kIHVzZXMgbm8KKyAgICAgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29udGV4dC4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcGxhY2VzIDw9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYXQgbGVhc3QgMSBpbiBfcm91bmQiKQorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShzZWxmLmFkanVzdGVkKCkrMS1wbGFjZXMsIHJvdW5kaW5nKQorICAgICAgICAjIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgcmVzY2FsZSBhbHRlcnMgdGhlIGFkanVzdGVkIGV4cG9uZW50OworICAgICAgICAjIGZvciBleGFtcGxlIHdoZW4gcm91bmRpbmcgOTkuOTcgdG8gMyBzaWduaWZpY2FudCBmaWd1cmVzLgorICAgICAgICAjIFdoZW4gdGhpcyBoYXBwZW5zIHdlIGVuZCB1cCB3aXRoIGFuIGV4dHJhIDAgYXQgdGhlIGVuZCBvZgorICAgICAgICAjIHRoZSBudW1iZXI7IGEgc2Vjb25kIHJlc2NhbGUgZml4ZXMgdGhpcy4KKyAgICAgICAgaWYgYW5zLmFkanVzdGVkKCkgIT0gc2VsZi5hZGp1c3RlZCgpOgorICAgICAgICAgICAgYW5zID0gYW5zLl9yZXNjYWxlKGFucy5hZGp1c3RlZCgpKzEtcGxhY2VzLCByb3VuZGluZykKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIHRvX2ludGVncmFsX2V4YWN0KHNlbGYsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJvdW5kcyB0byBhIG5lYXJieSBpbnRlZ2VyLgorCisgICAgICAgIElmIG5vIHJvdW5kaW5nIG1vZGUgaXMgc3BlY2lmaWVkLCB0YWtlIHRoZSByb3VuZGluZyBtb2RlIGZyb20KKyAgICAgICAgdGhlIGNvbnRleHQuICBUaGlzIG1ldGhvZCByYWlzZXMgdGhlIFJvdW5kZWQgYW5kIEluZXhhY3QgZmxhZ3MKKyAgICAgICAgd2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBTZWUgYWxzbzogdG9faW50ZWdyYWxfdmFsdWUsIHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcworICAgICAgICB0aGlzIG1ldGhvZCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IHJhaXNlIEluZXhhY3Qgb3IgUm91bmRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCAwKQorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIHJvdW5kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKKyAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKKyAgICAgICAgaWYgYW5zICE9IHNlbGY6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgdG9faW50ZWdyYWxfdmFsdWUoc2VsZiwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUm91bmRzIHRvIHRoZSBuZWFyZXN0IGludGVnZXIsIHdpdGhvdXQgcmFpc2luZyBpbmV4YWN0LCByb3VuZGVkLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIHJvdW5kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQorCisgICAgIyB0aGUgbWV0aG9kIG5hbWUgY2hhbmdlZCwgYnV0IHdlIHByb3ZpZGUgYWxzbyB0aGUgb2xkIG9uZSwgZm9yIGNvbXBhdGliaWxpdHkKKyAgICB0b19pbnRlZ3JhbCA9IHRvX2ludGVncmFsX3ZhbHVlCisKKyAgICBkZWYgc3FydChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHNlbGYuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgYW5kIHNlbGYuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgIyBleHBvbmVudCA9IHNlbGYuX2V4cCAvLyAyLiAgc3FydCgtMCkgPSAtMAorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIHNlbGYuX2V4cCAvLyAyKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzcXJ0KC14KSwgeCA+IDAnKQorCisgICAgICAgICMgQXQgdGhpcyBwb2ludCBzZWxmIHJlcHJlc2VudHMgYSBwb3NpdGl2ZSBudW1iZXIuICBMZXQgcCBiZQorICAgICAgICAjIHRoZSBkZXNpcmVkIHByZWNpc2lvbiBhbmQgZXhwcmVzcyBzZWxmIGluIHRoZSBmb3JtIGMqMTAwKiplCisgICAgICAgICMgd2l0aCBjIGEgcG9zaXRpdmUgcmVhbCBudW1iZXIgYW5kIGUgYW4gaW50ZWdlciwgYyBhbmQgZQorICAgICAgICAjIGJlaW5nIGNob3NlbiBzbyB0aGF0IDEwMCoqKHAtMSkgPD0gYyA8IDEwMCoqcC4gIFRoZW4gdGhlCisgICAgICAgICMgKGV4YWN0KSBzcXVhcmUgcm9vdCBvZiBzZWxmIGlzIHNxcnQoYykqMTAqKmUsIGFuZCAxMCoqKHAtMSkKKyAgICAgICAgIyA8PSBzcXJ0KGMpIDwgMTAqKnAsIHNvIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgRGVjaW1hbCBhdAorICAgICAgICAjIHByZWNpc2lvbiBwIGlzIG4qMTAqKmUgd2hlcmUgbiA9IHJvdW5kX2hhbGZfZXZlbihzcXJ0KGMpKSwKKyAgICAgICAgIyB0aGUgY2xvc2VzdCBpbnRlZ2VyIHRvIHNxcnQoYykgd2l0aCB0aGUgZXZlbiBpbnRlZ2VyIGNob3NlbgorICAgICAgICAjIGluIHRoZSBjYXNlIG9mIGEgdGllLgorICAgICAgICAjCisgICAgICAgICMgVG8gZW5zdXJlIGNvcnJlY3Qgcm91bmRpbmcgaW4gYWxsIGNhc2VzLCB3ZSB1c2UgdGhlCisgICAgICAgICMgZm9sbG93aW5nIHRyaWNrOiB3ZSBjb21wdXRlIHRoZSBzcXVhcmUgcm9vdCB0byBhbiBleHRyYQorICAgICAgICAjIHBsYWNlIChwcmVjaXNpb24gcCsxIGluc3RlYWQgb2YgcHJlY2lzaW9uIHApLCByb3VuZGluZyBkb3duLgorICAgICAgICAjIFRoZW4sIGlmIHRoZSByZXN1bHQgaXMgaW5leGFjdCBhbmQgaXRzIGxhc3QgZGlnaXQgaXMgMCBvciA1LAorICAgICAgICAjIHdlIGluY3JlYXNlIHRoZSBsYXN0IGRpZ2l0IHRvIDEgb3IgNiByZXNwZWN0aXZlbHk7IGlmIGl0J3MKKyAgICAgICAgIyBleGFjdCB3ZSBsZWF2ZSB0aGUgbGFzdCBkaWdpdCBhbG9uZS4gIE5vdyB0aGUgZmluYWwgcm91bmQgdG8KKyAgICAgICAgIyBwIHBsYWNlcyAob3IgZmV3ZXIgaW4gdGhlIGNhc2Ugb2YgdW5kZXJmbG93KSB3aWxsIHJvdW5kCisgICAgICAgICMgY29ycmVjdGx5IGFuZCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgZmxhZ3MuCisKKyAgICAgICAgIyB1c2UgYW4gZXh0cmEgZGlnaXQgb2YgcHJlY2lzaW9uCisgICAgICAgIHByZWMgPSBjb250ZXh0LnByZWMrMQorCisgICAgICAgICMgd3JpdGUgYXJndW1lbnQgaW4gdGhlIGZvcm0gYyoxMDAqKmUgd2hlcmUgZSA9IHNlbGYuX2V4cC8vMgorICAgICAgICAjIGlzIHRoZSAnaWRlYWwnIGV4cG9uZW50LCB0byBiZSB1c2VkIGlmIHRoZSBzcXVhcmUgcm9vdCBpcworICAgICAgICAjIGV4YWN0bHkgcmVwcmVzZW50YWJsZS4gIGwgaXMgdGhlIG51bWJlciBvZiAnZGlnaXRzJyBvZiBjIGluCisgICAgICAgICMgYmFzZSAxMDAsIHNvIHRoYXQgMTAwKioobC0xKSA8PSBjIDwgMTAwKipsLgorICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIGUgPSBvcC5leHAgPj4gMQorICAgICAgICBpZiBvcC5leHAgJiAxOgorICAgICAgICAgICAgYyA9IG9wLmludCAqIDEwCisgICAgICAgICAgICBsID0gKGxlbihzZWxmLl9pbnQpID4+IDEpICsgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYyA9IG9wLmludAorICAgICAgICAgICAgbCA9IGxlbihzZWxmLl9pbnQpKzEgPj4gMQorCisgICAgICAgICMgcmVzY2FsZSBzbyB0aGF0IGMgaGFzIGV4YWN0bHkgcHJlYyBiYXNlIDEwMCAnZGlnaXRzJworICAgICAgICBzaGlmdCA9IHByZWMtbAorICAgICAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICAgICAgYyAqPSAxMDAqKnNoaWZ0CisgICAgICAgICAgICBleGFjdCA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGMsIHJlbWFpbmRlciA9IGRpdm1vZChjLCAxMDAqKi1zaGlmdCkKKyAgICAgICAgICAgIGV4YWN0ID0gbm90IHJlbWFpbmRlcgorICAgICAgICBlIC09IHNoaWZ0CisKKyAgICAgICAgIyBmaW5kIG4gPSBmbG9vcihzcXJ0KGMpKSB1c2luZyBOZXd0b24ncyBtZXRob2QKKyAgICAgICAgbiA9IDEwKipwcmVjCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBxID0gYy8vbgorICAgICAgICAgICAgaWYgbiA8PSBxOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG4gPSBuICsgcSA+PiAxCisgICAgICAgIGV4YWN0ID0gZXhhY3QgYW5kIG4qbiA9PSBjCisKKyAgICAgICAgaWYgZXhhY3Q6CisgICAgICAgICAgICAjIHJlc3VsdCBpcyBleGFjdDsgcmVzY2FsZSB0byB1c2UgaWRlYWwgZXhwb25lbnQgZQorICAgICAgICAgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgICAgICAgICAjIGFzc2VydCBuICUgMTAqKnNoaWZ0ID09IDAKKyAgICAgICAgICAgICAgICBuIC8vPSAxMCoqc2hpZnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbiAqPSAxMCoqLXNoaWZ0CisgICAgICAgICAgICBlICs9IHNoaWZ0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHJlc3VsdCBpcyBub3QgZXhhY3Q7IGZpeCBsYXN0IGRpZ2l0IGFzIGRlc2NyaWJlZCBhYm92ZQorICAgICAgICAgICAgaWYgbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKworICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cihuKSwgZSkKKworICAgICAgICAjIHJvdW5kLCBhbmQgZml0IHRvIGN1cnJlbnQgY29udGV4dAorICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgbWF4KHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXIgdmFsdWUuCisKKyAgICAgICAgTGlrZSBtYXgoc2VsZiwgb3RoZXIpIGV4Y2VwdCBpZiBvbmUgaXMgbm90IGEgbnVtYmVyLCByZXR1cm5zCisgICAgICAgIE5hTiAoYW5kIHNpZ25hbHMgaWYgb25lIGlzIHNOYU4pLiAgQWxzbyByb3VuZHMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQorICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCisgICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgICAgIGlmIHNuIG9yIG9uOgorICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorCisgICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCisgICAgICAgIGlmIGMgPT0gMDoKKyAgICAgICAgICAgICMgSWYgYm90aCBvcGVyYW5kcyBhcmUgZmluaXRlIGFuZCBlcXVhbCBpbiBudW1lcmljYWwgdmFsdWUKKyAgICAgICAgICAgICMgdGhlbiBhbiBvcmRlcmluZyBpcyBhcHBsaWVkOgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBJZiB0aGUgc2lnbnMgZGlmZmVyIHRoZW4gbWF4IHJldHVybnMgdGhlIG9wZXJhbmQgd2l0aCB0aGUKKyAgICAgICAgICAgICMgcG9zaXRpdmUgc2lnbiBhbmQgbWluIHJldHVybnMgdGhlIG9wZXJhbmQgd2l0aCB0aGUgbmVnYXRpdmUgc2lnbgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBJZiB0aGUgc2lnbnMgYXJlIHRoZSBzYW1lIHRoZW4gdGhlIGV4cG9uZW50IGlzIHVzZWQgdG8gc2VsZWN0CisgICAgICAgICAgICAjIHRoZSByZXN1bHQuICBUaGlzIGlzIGV4YWN0bHkgdGhlIG9yZGVyaW5nIHVzZWQgaW4gY29tcGFyZV90b3RhbC4KKyAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCisKKyAgICAgICAgaWYgYyA9PSAtMToKKyAgICAgICAgICAgIGFucyA9IG90aGVyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgbWluKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVyIHZhbHVlLgorCisgICAgICAgIExpa2UgbWluKHNlbGYsIG90aGVyKSBleGNlcHQgaWYgb25lIGlzIG5vdCBhIG51bWJlciwgcmV0dXJucworICAgICAgICBOYU4gKGFuZCBzaWduYWxzIGlmIG9uZSBpcyBzTmFOKS4gIEFsc28gcm91bmRzLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKKyAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAorICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCisgICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgICAgICBpZiBzbiBvciBvbjoKKyAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKworICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQorICAgICAgICBpZiBjID09IDA6CisgICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQorCisgICAgICAgIGlmIGMgPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBvdGhlcgorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9pc2ludGVnZXIoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciBzZWxmIGlzIGFuIGludGVnZXIiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJlc3QgPSBzZWxmLl9pbnRbc2VsZi5fZXhwOl0KKyAgICAgICAgcmV0dXJuIHJlc3QgPT0gJzAnKmxlbihyZXN0KQorCisgICAgZGVmIF9pc2V2ZW4oc2VsZik6CisgICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiBzZWxmIGlzIGV2ZW4uICBBc3N1bWVzIHNlbGYgaXMgYW4gaW50ZWdlci4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYgb3Igc2VsZi5fZXhwID4gMDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9pbnRbLTErc2VsZi5fZXhwXSBpbiAnMDI0NjgnCisKKyAgICBkZWYgYWRqdXN0ZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCisgICAgICAgICMgSWYgTmFOIG9yIEluZmluaXR5LCBzZWxmLl9leHAgaXMgc3RyaW5nCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIGNhbm9uaWNhbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KKworICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQorICAgICAgICByZWNlaXZlZCBvYmplY3QgYWxyZWFkeSBpcyBpbiBpdHMgY2Fub25pY2FsIGZvcm0uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGNvbXBhcmVfc2lnbmFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIHRoZSBvdGhlciBvcGVyYW5kIG51bWVyaWNhbGx5LgorCisgICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCisgICAgICAgIE5hTnMgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBxdWlldCBOYU5zLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdCA9IFRydWUpCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICByZXR1cm4gc2VsZi5jb21wYXJlKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgY29tcGFyZV90b3RhbChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byBvdGhlciB1c2luZyB0aGUgYWJzdHJhY3QgcmVwcmVzZW50YXRpb25zLgorCisgICAgICAgIFRoaXMgaXMgbm90IGxpa2UgdGhlIHN0YW5kYXJkIGNvbXBhcmUsIHdoaWNoIHVzZSB0aGVpciBudW1lcmljYWwKKyAgICAgICAgdmFsdWUuIE5vdGUgdGhhdCBhIHRvdGFsIG9yZGVyaW5nIGlzIGRlZmluZWQgZm9yIGFsbCBwb3NzaWJsZSBhYnN0cmFjdAorICAgICAgICByZXByZXNlbnRhdGlvbnMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgIyBpZiBvbmUgaXMgbmVnYXRpdmUgYW5kIHRoZSBvdGhlciBpcyBwb3NpdGl2ZSwgaXQncyBlYXN5CisgICAgICAgIGlmIHNlbGYuX3NpZ24gYW5kIG5vdCBvdGhlci5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgaWYgbm90IHNlbGYuX3NpZ24gYW5kIG90aGVyLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KKworICAgICAgICAjIGxldCdzIGhhbmRsZSBib3RoIE5hTiB0eXBlcworICAgICAgICBzZWxmX25hbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgb3RoZXJfbmFuID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgaWYgc2VsZl9uYW4gb3Igb3RoZXJfbmFuOgorICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gb3RoZXJfbmFuOgorICAgICAgICAgICAgICAgICMgY29tcGFyZSBwYXlsb2FkcyBhcyB0aG91Z2ggdGhleSdyZSBpbnRlZ2VycworICAgICAgICAgICAgICAgIHNlbGZfa2V5ID0gbGVuKHNlbGYuX2ludCksIHNlbGYuX2ludAorICAgICAgICAgICAgICAgIG90aGVyX2tleSA9IGxlbihvdGhlci5faW50KSwgb3RoZXIuX2ludAorICAgICAgICAgICAgICAgIGlmIHNlbGZfa2V5IDwgb3RoZXJfa2V5OgorICAgICAgICAgICAgICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmX2tleSA+IG90aGVyX2tleToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgcmV0dXJuIF9aZXJvCisKKyAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKworICAgICAgICBpZiBzZWxmIDwgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgIGlmIHNlbGYgPiBvdGhlcjoKKyAgICAgICAgICAgIHJldHVybiBfT25lCisKKyAgICAgICAgaWYgc2VsZi5fZXhwIDwgb3RoZXIuX2V4cDoKKyAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICBpZiBzZWxmLl9leHAgPiBvdGhlci5fZXhwOgorICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgIHJldHVybiBfWmVybworCisKKyAgICBkZWYgY29tcGFyZV90b3RhbF9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gb3RoZXIgdXNpbmcgYWJzdHJhY3QgcmVwci4sIGlnbm9yaW5nIHNpZ24uCisKKyAgICAgICAgTGlrZSBjb21wYXJlX3RvdGFsLCBidXQgd2l0aCBvcGVyYW5kJ3Mgc2lnbiBpZ25vcmVkIGFuZCBhc3N1bWVkIHRvIGJlIDAuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgcyA9IHNlbGYuY29weV9hYnMoKQorICAgICAgICBvID0gb3RoZXIuY29weV9hYnMoKQorICAgICAgICByZXR1cm4gcy5jb21wYXJlX3RvdGFsKG8pCisKKyAgICBkZWYgY29weV9hYnMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuICIiIgorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKKworICAgIGRlZiBjb3B5X25lZ2F0ZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC4iIiIKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMSwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCisKKyAgICBkZWYgY29weV9zaWduKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHNlbGYgd2l0aCB0aGUgc2lnbiBvZiBvdGhlci4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShvdGhlci5fc2lnbiwgc2VsZi5faW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCisKKyAgICBkZWYgZXhwKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgZSAqKiBzZWxmLiIiIgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGV4cChOYU4pID0gTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBleHAoLUluZmluaXR5KSA9IDAKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgorICAgICAgICAgICAgcmV0dXJuIF9aZXJvCisKKyAgICAgICAgIyBleHAoMCkgPSAxCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9PbmUKKworICAgICAgICAjIGV4cChJbmZpbml0eSkgPSBJbmZpbml0eQorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyB0aGUgcmVzdWx0IGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIGluZXhhY3QgKHRoZSB0cnVlCisgICAgICAgICMgbWF0aGVtYXRpY2FsIHJlc3VsdCBpcyB0cmFuc2NlbmRlbnRhbCkuIFRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAgICAjIHJhaXNlIFJvdW5kZWQgYW5kIEluZXhhY3QgaGVyZS0tLXRoZXknbGwgYWx3YXlzIGJlIHJhaXNlZCBhcworICAgICAgICAjIGEgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIF9maXguCisgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKyAgICAgICAgYWRqID0gc2VsZi5hZGp1c3RlZCgpCisKKyAgICAgICAgIyB3ZSBvbmx5IG5lZWQgdG8gZG8gYW55IGNvbXB1dGF0aW9uIGZvciBxdWl0ZSBhIHNtYWxsIHJhbmdlCisgICAgICAgICMgb2YgYWRqdXN0ZWQgZXhwb25lbnRzLS0tZm9yIGV4YW1wbGUsIC0yOSA8PSBhZGogPD0gMTAgZm9yCisgICAgICAgICMgdGhlIGRlZmF1bHQgY29udGV4dC4gIEZvciBzbWFsbGVyIGV4cG9uZW50IHRoZSByZXN1bHQgaXMKKyAgICAgICAgIyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIDEgYXQgdGhlIGdpdmVuIHByZWNpc2lvbiwgd2hpbGUgZm9yCisgICAgICAgICMgbGFyZ2VyIGV4cG9uZW50IHRoZSByZXN1bHQgZWl0aGVyIG92ZXJmbG93cyBvciB1bmRlcmZsb3dzLgorICAgICAgICBpZiBzZWxmLl9zaWduID09IDAgYW5kIGFkaiA+IGxlbihzdHIoKGNvbnRleHQuRW1heCsxKSozKSk6CisgICAgICAgICAgICAjIG92ZXJmbG93CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FbWF4KzEpCisgICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAxIGFuZCBhZGogPiBsZW4oc3RyKCgtY29udGV4dC5FdGlueSgpKzEpKjMpKToKKyAgICAgICAgICAgICMgdW5kZXJmbG93IHRvIDAKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkV0aW55KCktMSkKKyAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDAgYW5kIGFkaiA8IC1wOgorICAgICAgICAgICAgIyBwKzEgZGlnaXRzOyBmaW5hbCByb3VuZCB3aWxsIHJhaXNlIGNvcnJlY3QgZmxhZ3MKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnICsgJzAnKihwLTEpICsgJzEnLCAtcCkKKyAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDEgYW5kIGFkaiA8IC1wLTE6CisgICAgICAgICAgICAjIHArMSBkaWdpdHM7IGZpbmFsIHJvdW5kIHdpbGwgcmFpc2UgY29ycmVjdCBmbGFncworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnOScqKHArMSksIC1wLTEpCisgICAgICAgICMgZ2VuZXJhbCBjYXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgICAgIGlmIG9wLnNpZ24gPT0gMToKKyAgICAgICAgICAgICAgICBjID0gLWMKKworICAgICAgICAgICAgIyBjb21wdXRlIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogaW5jcmVhc2UgcHJlY2lzaW9uIGJ5CisgICAgICAgICAgICAjIDMgZGlnaXRzIGF0IGEgdGltZSB1bnRpbCB3ZSBnZXQgYW4gdW5hbWJpZ3VvdXNseQorICAgICAgICAgICAgIyByb3VuZGFibGUgcmVzdWx0CisgICAgICAgICAgICBleHRyYSA9IDMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY29lZmYsIGV4cCA9IF9kZXhwKGMsIGUsIHArZXh0cmEpCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoY29lZmYpKS1wLTEpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleHRyYSArPSAzCisKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyKGNvZWZmKSwgZXhwKQorCisgICAgICAgICMgYXQgdGhpcyBzdGFnZSwgYW5zIHNob3VsZCByb3VuZCBjb3JyZWN0bHkgd2l0aCAqYW55KgorICAgICAgICAjIHJvdW5kaW5nIG1vZGUsIG5vdCBqdXN0IHdpdGggUk9VTkRfSEFMRl9FVkVOCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBpc19jYW5vbmljYWwoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgY2Fub25pY2FsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIGVuY29kaW5nIG9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMKKyAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19maW5pdGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEEgRGVjaW1hbCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGZpbml0ZSBpZiBpdCBpcyBuZWl0aGVyCisgICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5faXNfc3BlY2lhbAorCisgICAgZGVmIGlzX2luZmluaXRlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGluZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09ICdGJworCisgICAgZGVmIGlzX25hbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHFOYU4gb3Igc05hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCBpbiAoJ24nLCAnTicpCisKKyAgICBkZWYgaXNfbm9ybWFsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBub3JtYWwgbnVtYmVyOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuRW1pbiA8PSBzZWxmLmFkanVzdGVkKCkKKworICAgIGRlZiBpc19xbmFuKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgcXVpZXQgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09ICduJworCisgICAgZGVmIGlzX3NpZ25lZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBuZWdhdGl2ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ24gPT0gMQorCisgICAgZGVmIGlzX3NuYW4oc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBzaWduYWxpbmcgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09ICdOJworCisgICAgZGVmIGlzX3N1Ym5vcm1hbChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIHN1Ym5vcm1hbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHJldHVybiBzZWxmLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW4KKworICAgIGRlZiBpc196ZXJvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9pc19zcGVjaWFsIGFuZCBzZWxmLl9pbnQgPT0gJzAnCisKKyAgICBkZWYgX2xuX2V4cF9ib3VuZChzZWxmKToKKyAgICAgICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZi5sbigpLgorICAgICAgICBJbiBvdGhlciB3b3JkcywgY29tcHV0ZSByIHN1Y2ggdGhhdCBzZWxmLmxuKCkgPj0gMTAqKnIuICBBc3N1bWVzCisgICAgICAgIHRoYXQgc2VsZiBpcyBmaW5pdGUgYW5kIHBvc2l0aXZlIGFuZCB0aGF0IHNlbGYgIT0gMS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBmb3IgMC4xIDw9IHggPD0gMTAgd2UgdXNlIHRoZSBpbmVxdWFsaXRpZXMgMS0xL3ggPD0gbG4oeCkgPD0geC0xCisgICAgICAgIGFkaiA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQorICAgICAgICBpZiBhZGogPj0gMToKKyAgICAgICAgICAgICMgYXJndW1lbnQgPj0gMTA7IHdlIHVzZSAyMy8xMCA9IDIuMyBhcyBhIGxvd2VyIGJvdW5kIGZvciBsbigxMCkKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKGFkaioyMy8vMTApKSAtIDEKKyAgICAgICAgaWYgYWRqIDw9IC0yOgorICAgICAgICAgICAgIyBhcmd1bWVudCA8PSAwLjEKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKCgtMS1hZGopKjIzLy8xMCkpIC0gMQorICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAorICAgICAgICBpZiBhZGogPT0gMDoKKyAgICAgICAgICAgICMgMSA8IHNlbGYgPCAxMAorICAgICAgICAgICAgbnVtID0gc3RyKGMtMTAqKi1lKQorICAgICAgICAgICAgZGVuID0gc3RyKGMpCisgICAgICAgICAgICByZXR1cm4gbGVuKG51bSkgLSBsZW4oZGVuKSAtIChudW0gPCBkZW4pCisgICAgICAgICMgYWRqID09IC0xLCAwLjEgPD0gc2VsZiA8IDEKKyAgICAgICAgcmV0dXJuIGUgKyBsZW4oc3RyKDEwKiotZSAtIGMpKSAtIDEKKworCisgICAgZGVmIGxuKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHNlbGYuIiIiCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgbG4oTmFOKSA9IE5hTgorICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgbG4oMC4wKSA9PSAtSW5maW5pdHkKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKKworICAgICAgICAjIGxuKEluZmluaXR5KSA9IEluZmluaXR5CisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQorCisgICAgICAgICMgbG4oMS4wKSA9PSAwLjAKKyAgICAgICAgaWYgc2VsZiA9PSBfT25lOgorICAgICAgICAgICAgcmV0dXJuIF9aZXJvCisKKyAgICAgICAgIyBsbihuZWdhdGl2ZSkgcmFpc2VzIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xuIG9mIGEgbmVnYXRpdmUgdmFsdWUnKQorCisgICAgICAgICMgcmVzdWx0IGlzIGlycmF0aW9uYWwsIHNvIG5lY2Vzc2FyaWx5IGluZXhhY3QKKyAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgcCA9IGNvbnRleHQucHJlYworCisgICAgICAgICMgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiByZXBlYXRlZGx5IGluY3JlYXNlIHByZWNpc2lvbiBieSAzCisgICAgICAgICMgdW50aWwgd2UgZ2V0IGFuIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlIHJlc3VsdAorICAgICAgICBwbGFjZXMgPSBwIC0gc2VsZi5fbG5fZXhwX2JvdW5kKCkgKyAyICMgYXQgbGVhc3QgcCszIHBsYWNlcworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY29lZmYgPSBfZGxvZyhjLCBlLCBwbGFjZXMpCisgICAgICAgICAgICAjIGFzc2VydCBsZW4oc3RyKGFicyhjb2VmZikpKS1wID49IDEKKyAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGFicyhjb2VmZikpKS1wLTEpKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcGxhY2VzICs9IDMKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShpbnQoY29lZmY8MCksIHN0cihhYnMoY29lZmYpKSwgLXBsYWNlcykKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIF9sb2cxMF9leHBfYm91bmQoc2VsZik6CisgICAgICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG9nMTAoKS4KKyAgICAgICAgSW4gb3RoZXIgd29yZHMsIGZpbmQgciBzdWNoIHRoYXQgc2VsZi5sb2cxMCgpID49IDEwKipyLgorICAgICAgICBBc3N1bWVzIHRoYXQgc2VsZiBpcyBmaW5pdGUgYW5kIHBvc2l0aXZlIGFuZCB0aGF0IHNlbGYgIT0gMS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBGb3IgeCA+PSAxMCBvciB4IDwgMC4xIHdlIG9ubHkgbmVlZCBhIGJvdW5kIG9uIHRoZSBpbnRlZ2VyCisgICAgICAgICMgcGFydCBvZiBsb2cxMChzZWxmKSwgYW5kIHRoaXMgY29tZXMgZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgIyBleHBvbmVudCBvZiB4LiAgRm9yIDAuMSA8PSB4IDw9IDEwIHdlIHVzZSB0aGUgaW5lcXVhbGl0aWVzCisgICAgICAgICMgMS0xL3ggPD0gbG9nKHgpIDw9IHgtMS4gSWYgeCA+IDEgd2UgaGF2ZSB8bG9nMTAoeCl8ID4KKyAgICAgICAgIyAoMS0xL3gpLzIuMzEgPiAwLiAgSWYgeCA8IDEgdGhlbiB8bG9nMTAoeCl8ID4gKDEteCkvMi4zMSA+IDAKKworICAgICAgICBhZGogPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKKyAgICAgICAgaWYgYWRqID49IDE6CisgICAgICAgICAgICAjIHNlbGYgPj0gMTAKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKGFkaikpLTEKKyAgICAgICAgaWYgYWRqIDw9IC0yOgorICAgICAgICAgICAgIyBzZWxmIDwgMC4xCisgICAgICAgICAgICByZXR1cm4gbGVuKHN0cigtMS1hZGopKS0xCisgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCisgICAgICAgIGlmIGFkaiA9PSAwOgorICAgICAgICAgICAgIyAxIDwgc2VsZiA8IDEwCisgICAgICAgICAgICBudW0gPSBzdHIoYy0xMCoqLWUpCisgICAgICAgICAgICBkZW4gPSBzdHIoMjMxKmMpCisgICAgICAgICAgICByZXR1cm4gbGVuKG51bSkgLSBsZW4oZGVuKSAtIChudW0gPCBkZW4pICsgMgorICAgICAgICAjIGFkaiA9PSAtMSwgMC4xIDw9IHNlbGYgPCAxCisgICAgICAgIG51bSA9IHN0cigxMCoqLWUtYykKKyAgICAgICAgcmV0dXJuIGxlbihudW0pICsgZSAtIChudW0gPCAiMjMxIikgLSAxCisKKyAgICBkZWYgbG9nMTAoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2Ygc2VsZi4iIiIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBsb2cxMChOYU4pID0gTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBsb2cxMCgwLjApID09IC1JbmZpbml0eQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQorCisgICAgICAgICMgbG9nMTAoSW5maW5pdHkpID0gSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gX0luZmluaXR5CisKKyAgICAgICAgIyBsb2cxMChuZWdhdGl2ZSBvciAtSW5maW5pdHkpIHJhaXNlcyBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2cxMCBvZiBhIG5lZ2F0aXZlIHZhbHVlJykKKworICAgICAgICAjIGxvZzEwKDEwKipuKSA9IG4KKyAgICAgICAgaWYgc2VsZi5faW50WzBdID09ICcxJyBhbmQgc2VsZi5faW50WzE6XSA9PSAnMCcqKGxlbihzZWxmLl9pbnQpIC0gMSk6CisgICAgICAgICAgICAjIGFuc3dlciBtYXkgbmVlZCByb3VuZGluZworICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHJlc3VsdCBpcyBpcnJhdGlvbmFsLCBzbyBuZWNlc3NhcmlseSBpbmV4YWN0CisgICAgICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKworICAgICAgICAgICAgIyBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IHJlcGVhdGVkbHkgaW5jcmVhc2UgcHJlY2lzaW9uCisgICAgICAgICAgICAjIHVudGlsIHJlc3VsdCBpcyB1bmFtYmlndW91c2x5IHJvdW5kYWJsZQorICAgICAgICAgICAgcGxhY2VzID0gcC1zZWxmLl9sb2cxMF9leHBfYm91bmQoKSsyCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGNvZWZmID0gX2Rsb2cxMChjLCBlLCBwbGFjZXMpCisgICAgICAgICAgICAgICAgIyBhc3NlcnQgbGVuKHN0cihhYnMoY29lZmYpKSktcCA+PSAxCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoYWJzKGNvZWZmKSkpLXAtMSkpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHBsYWNlcyArPSAzCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGludChjb2VmZjwwKSwgc3RyKGFicyhjb2VmZikpLCAtcGxhY2VzKQorCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgbG9nYihzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiIgUmV0dXJucyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiBzZWxmJ3MgTVNELgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGludGVnZXIgd2hpY2ggaXMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUKKyAgICAgICAgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2Ygc2VsZiAoYXMgdGhvdWdoIGl0IHdlcmUgdHJ1bmNhdGVkCisgICAgICAgIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZSB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZAorICAgICAgICB3aXRob3V0IGxpbWl0aW5nIHRoZSByZXN1bHRpbmcgZXhwb25lbnQpLgorICAgICAgICAiIiIKKyAgICAgICAgIyBsb2diKE5hTikgPSBOYU4KKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBsb2diKCsvLUluZikgPSArSW5mCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKKworICAgICAgICAjIGxvZ2IoMCkgPSAtSW5mLCBEaXZpc2lvbkJ5WmVybworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ2xvZ2IoMCknLCAxKQorCisgICAgICAgICMgb3RoZXJ3aXNlLCBzaW1wbHkgcmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLCBhcyBhCisgICAgICAgICMgRGVjaW1hbC4gIE5vdGUgdGhhdCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gZml0IHRoZSByZXN1bHQKKyAgICAgICAgIyBpbnRvIHRoZSBjdXJyZW50IGNvbnRleHQuCisgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZi5hZGp1c3RlZCgpKQorICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfaXNsb2dpY2FsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbG9naWNhbCBvcGVyYW5kLgorCisgICAgICAgIEZvciBiZWluZyBsb2dpY2FsLCBpdCBtdXN0IGJlIGEgZmluaXRlIG51bWJlciB3aXRoIGEgc2lnbiBvZiAwLAorICAgICAgICBhbiBleHBvbmVudCBvZiAwLCBhbmQgYSBjb2VmZmljaWVudCB3aG9zZSBkaWdpdHMgbXVzdCBhbGwgYmUKKyAgICAgICAgZWl0aGVyIDAgb3IgMS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3NpZ24gIT0gMCBvciBzZWxmLl9leHAgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBmb3IgZGlnIGluIHNlbGYuX2ludDoKKyAgICAgICAgICAgIGlmIGRpZyBub3QgaW4gJzAxJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfZmlsbF9sb2dpY2FsKHNlbGYsIGNvbnRleHQsIG9wYSwgb3BiKToKKyAgICAgICAgZGlmID0gY29udGV4dC5wcmVjIC0gbGVuKG9wYSkKKyAgICAgICAgaWYgZGlmID4gMDoKKyAgICAgICAgICAgIG9wYSA9ICcwJypkaWYgKyBvcGEKKyAgICAgICAgZWxpZiBkaWYgPCAwOgorICAgICAgICAgICAgb3BhID0gb3BhWy1jb250ZXh0LnByZWM6XQorICAgICAgICBkaWYgPSBjb250ZXh0LnByZWMgLSBsZW4ob3BiKQorICAgICAgICBpZiBkaWYgPiAwOgorICAgICAgICAgICAgb3BiID0gJzAnKmRpZiArIG9wYgorICAgICAgICBlbGlmIGRpZiA8IDA6CisgICAgICAgICAgICBvcGIgPSBvcGJbLWNvbnRleHQucHJlYzpdCisgICAgICAgIHJldHVybiBvcGEsIG9wYgorCisgICAgZGVmIGxvZ2ljYWxfYW5kKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJBcHBsaWVzIGFuICdhbmQnIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYworICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKKworICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcworICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpJmludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQorCisgICAgZGVmIGxvZ2ljYWxfaW52ZXJ0KHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkludmVydCBhbGwgaXRzIGRpZ2l0cy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICByZXR1cm4gc2VsZi5sb2dpY2FsX3hvcihfZGVjX2Zyb21fdHJpcGxlKDAsJzEnKmNvbnRleHQucHJlYywwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKworICAgIGRlZiBsb2dpY2FsX29yKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJBcHBsaWVzIGFuICdvcicgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCisgICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQorCisgICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCisgICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSl8aW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCisKKyAgICBkZWYgbG9naWNhbF94b3Ioc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkFwcGxpZXMgYW4gJ3hvcicgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCisgICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQorCisgICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCisgICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSleaW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCisKKyAgICBkZWYgbWF4X21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKKyAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAorICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCisgICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgICAgICBpZiBzbiBvciBvbjoKKyAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKworICAgICAgICBjID0gc2VsZi5jb3B5X2FicygpLl9jbXAob3RoZXIuY29weV9hYnMoKSkKKyAgICAgICAgaWYgYyA9PSAwOgorICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKKworICAgICAgICBpZiBjID09IC0xOgorICAgICAgICAgICAgYW5zID0gb3RoZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBtaW5fbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQorICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCisgICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgICAgIGlmIHNuIG9yIG9uOgorICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorCisgICAgICAgIGMgPSBzZWxmLmNvcHlfYWJzKCkuX2NtcChvdGhlci5jb3B5X2FicygpKQorICAgICAgICBpZiBjID09IDA6CisgICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQorCisgICAgICAgIGlmIGMgPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBvdGhlcgorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIG5leHRfbWludXMoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBzbWFsbGVyIHRoYW4gaXRzZWxmLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCAnOScqY29udGV4dC5wcmVjLCBjb250ZXh0LkV0b3AoKSkKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0ZMT09SKQorICAgICAgICBjb250ZXh0Ll9pZ25vcmVfYWxsX2ZsYWdzKCkKKyAgICAgICAgbmV3X3NlbGYgPSBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgaWYgbmV3X3NlbGYgIT0gc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBuZXdfc2VsZgorICAgICAgICByZXR1cm4gc2VsZi5fX3N1Yl9fKF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkV0aW55KCktMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKworICAgIGRlZiBuZXh0X3BsdXMoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4gaXRzZWxmLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMSwgJzknKmNvbnRleHQucHJlYywgY29udGV4dC5FdG9wKCkpCisKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9DRUlMSU5HKQorICAgICAgICBjb250ZXh0Ll9pZ25vcmVfYWxsX2ZsYWdzKCkKKyAgICAgICAgbmV3X3NlbGYgPSBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgaWYgbmV3X3NlbGYgIT0gc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBuZXdfc2VsZgorICAgICAgICByZXR1cm4gc2VsZi5fX2FkZF9fKF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkV0aW55KCktMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKworICAgIGRlZiBuZXh0X3Rvd2FyZChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gc2VsZiwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIG90aGVyLgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgdG8gc2VsZgorICAgICAgICAoZXhjbHVkaW5nIHNlbGYpIHRoYXQgaXMgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIG90aGVyLAorICAgICAgICB1bmxlc3MgYm90aCBoYXZlIHRoZSBzYW1lIHZhbHVlLiAgSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUKKyAgICAgICAgbnVtZXJpY2FsbHkgZXF1YWwsIHRoZW4gdGhlIHJlc3VsdCBpcyBhIGNvcHkgb2Ygc2VsZiB3aXRoIHRoZQorICAgICAgICBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiBvdGhlci4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGNvbXBhcmlzb24gPSBzZWxmLl9jbXAob3RoZXIpCisgICAgICAgIGlmIGNvbXBhcmlzb24gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcHlfc2lnbihvdGhlcikKKworICAgICAgICBpZiBjb21wYXJpc29uID09IC0xOgorICAgICAgICAgICAgYW5zID0gc2VsZi5uZXh0X3BsdXMoY29udGV4dCkKKyAgICAgICAgZWxzZTogIyBjb21wYXJpc29uID09IDEKKyAgICAgICAgICAgIGFucyA9IHNlbGYubmV4dF9taW51cyhjb250ZXh0KQorCisgICAgICAgICMgZGVjaWRlIHdoaWNoIGZsYWdzIHRvIHJhaXNlIHVzaW5nIHZhbHVlIG9mIGFucworICAgICAgICBpZiBhbnMuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luZmluaXRlIHJlc3VsdCBmcm9tIG5leHRfdG93YXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFucy5fc2lnbikKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICBlbGlmIGFucy5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICAjIGlmIHByZWNpc2lvbiA9PSAxIHRoZW4gd2UgZG9uJ3QgcmFpc2UgQ2xhbXBlZCBmb3IgYQorICAgICAgICAgICAgIyByZXN1bHQgMEUtRXRpbnkuCisgICAgICAgICAgICBpZiBub3QgYW5zOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCisKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIG51bWJlcl9jbGFzcyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHNlbGYuCisKKyAgICAgICAgVGhlIGNsYXNzIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CisgICAgICAgICAgc05hTgorICAgICAgICAgIE5hTgorICAgICAgICAgIC1JbmZpbml0eQorICAgICAgICAgIC1Ob3JtYWwKKyAgICAgICAgICAtU3Vibm9ybWFsCisgICAgICAgICAgLVplcm8KKyAgICAgICAgICArWmVybworICAgICAgICAgICtTdWJub3JtYWwKKyAgICAgICAgICArTm9ybWFsCisgICAgICAgICAgK0luZmluaXR5CisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgIHJldHVybiAic05hTiIKKyAgICAgICAgaWYgc2VsZi5pc19xbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gIk5hTiIKKyAgICAgICAgaW5mID0gc2VsZi5faXNpbmZpbml0eSgpCisgICAgICAgIGlmIGluZiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuICIrSW5maW5pdHkiCisgICAgICAgIGlmIGluZiA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiAiLUluZmluaXR5IgorICAgICAgICBpZiBzZWxmLmlzX3plcm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuICItWmVybyIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICIrWmVybyIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiBzZWxmLmlzX3N1Ym5vcm1hbChjb250ZXh0PWNvbnRleHQpOgorICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIi1TdWJub3JtYWwiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAiK1N1Ym5vcm1hbCIKKyAgICAgICAgIyBqdXN0IGEgbm9ybWFsLCByZWd1bGFyLCBib3JpbmcgbnVtYmVyLCA6KQorICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuICItTm9ybWFsIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIrTm9ybWFsIgorCisgICAgZGVmIHJhZGl4KHNlbGYpOgorICAgICAgICAiIiJKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOikiIiIKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoMTApCisKKyAgICBkZWYgcm90YXRlKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgcm90YXRlZCBjb3B5IG9mIHNlbGYsIHZhbHVlLW9mLW90aGVyIHRpbWVzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgaWYgbm90ICgtY29udGV4dC5wcmVjIDw9IGludChvdGhlcikgPD0gY29udGV4dC5wcmVjKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyBnZXQgdmFsdWVzLCBwYWQgaWYgbmVjZXNzYXJ5CisgICAgICAgIHRvcm90ID0gaW50KG90aGVyKQorICAgICAgICByb3RkaWcgPSBzZWxmLl9pbnQKKyAgICAgICAgdG9wYWQgPSBjb250ZXh0LnByZWMgLSBsZW4ocm90ZGlnKQorICAgICAgICBpZiB0b3BhZCA+IDA6CisgICAgICAgICAgICByb3RkaWcgPSAnMCcqdG9wYWQgKyByb3RkaWcKKyAgICAgICAgZWxpZiB0b3BhZCA8IDA6CisgICAgICAgICAgICByb3RkaWcgPSByb3RkaWdbLXRvcGFkOl0KKworICAgICAgICAjIGxldCdzIHJvdGF0ZSEKKyAgICAgICAgcm90YXRlZCA9IHJvdGRpZ1t0b3JvdDpdICsgcm90ZGlnWzp0b3JvdF0KKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlZC5sc3RyaXAoJzAnKSBvciAnMCcsIHNlbGYuX2V4cCkKKworICAgIGRlZiBzY2FsZWIoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgc2VsZiBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlIHRvIGl0cyBleHAuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICBsaW1pbmYgPSAtMiAqIChjb250ZXh0LkVtYXggKyBjb250ZXh0LnByZWMpCisgICAgICAgIGxpbXN1cCA9ICAyICogKGNvbnRleHQuRW1heCArIGNvbnRleHQucHJlYykKKyAgICAgICAgaWYgbm90IChsaW1pbmYgPD0gaW50KG90aGVyKSA8PSBsaW1zdXApOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICBkID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCArIGludChvdGhlcikpCisgICAgICAgIGQgPSBkLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBzaGlmdChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHNoaWZ0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisgICAgICAgIGlmIG5vdCAoLWNvbnRleHQucHJlYyA8PSBpbnQob3RoZXIpIDw9IGNvbnRleHQucHJlYyk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgZ2V0IHZhbHVlcywgcGFkIGlmIG5lY2Vzc2FyeQorICAgICAgICB0b3JvdCA9IGludChvdGhlcikKKyAgICAgICAgcm90ZGlnID0gc2VsZi5faW50CisgICAgICAgIHRvcGFkID0gY29udGV4dC5wcmVjIC0gbGVuKHJvdGRpZykKKyAgICAgICAgaWYgdG9wYWQgPiAwOgorICAgICAgICAgICAgcm90ZGlnID0gJzAnKnRvcGFkICsgcm90ZGlnCisgICAgICAgIGVsaWYgdG9wYWQgPCAwOgorICAgICAgICAgICAgcm90ZGlnID0gcm90ZGlnWy10b3BhZDpdCisKKyAgICAgICAgIyBsZXQncyBzaGlmdCEKKyAgICAgICAgaWYgdG9yb3QgPCAwOgorICAgICAgICAgICAgc2hpZnRlZCA9IHJvdGRpZ1s6dG9yb3RdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaGlmdGVkID0gcm90ZGlnICsgJzAnKnRvcm90CisgICAgICAgICAgICBzaGlmdGVkID0gc2hpZnRlZFstY29udGV4dC5wcmVjOl0KKworICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRlZC5sc3RyaXAoJzAnKSBvciAnMCcsIHNlbGYuX2V4cCkKKworICAgICMgU3VwcG9ydCBmb3IgcGlja2xpbmcsIGNvcHksIGFuZCBkZWVwY29weQorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCAoc3RyKHNlbGYpLCkpCisKKyAgICBkZWYgX19jb3B5X18oc2VsZik6CisgICAgICAgIGlmIHR5cGUoc2VsZikgaXMgRGVjaW1hbDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmICAgICAjIEknbSBpbW11dGFibGU7IHRoZXJlZm9yZSBJIGFtIG15IG93biBjbG9uZQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc3RyKHNlbGYpKQorCisgICAgZGVmIF9fZGVlcGNvcHlfXyhzZWxmLCBtZW1vKToKKyAgICAgICAgaWYgdHlwZShzZWxmKSBpcyBEZWNpbWFsOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYgICAgICMgTXkgY29tcG9uZW50cyBhcmUgYWxzbyBpbW11dGFibGUKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHN0cihzZWxmKSkKKworICAgICMgUEVQIDMxMDEgc3VwcG9ydC4gIHRoZSBfbG9jYWxlY29udiBrZXl3b3JkIGFyZ3VtZW50IHNob3VsZCBiZQorICAgICMgY29uc2lkZXJlZCBwcml2YXRlOiBpdCdzIHByb3ZpZGVkIGZvciBlYXNlIG9mIHRlc3Rpbmcgb25seS4KKyAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjaWZpZXIsIGNvbnRleHQ9Tm9uZSwgX2xvY2FsZWNvbnY9Tm9uZSk6CisgICAgICAgICIiIkZvcm1hdCBhIERlY2ltYWwgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBzcGVjaWZpZXIuCisKKyAgICAgICAgVGhlIHNwZWNpZmllciBzaG91bGQgYmUgYSBzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyLCB3aXRoIHRoZQorICAgICAgICBmb3JtIGRlc2NyaWJlZCBpbiBQRVAgMzEwMS4gIEZvcm1hdHRpbmcgdHlwZXMgJ2UnLCAnRScsICdmJywKKyAgICAgICAgJ0YnLCAnZycsICdHJywgJ24nIGFuZCAnJScgYXJlIHN1cHBvcnRlZC4gIElmIHRoZSBmb3JtYXR0aW5nCisgICAgICAgIHR5cGUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0byAnZycgb3IgJ0cnLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgIHZhbHVlIG9mIGNvbnRleHQuY2FwaXRhbHMuCisgICAgICAgICIiIgorCisgICAgICAgICMgTm90ZTogUEVQIDMxMDEgc2F5cyB0aGF0IGlmIHRoZSB0eXBlIGlzIG5vdCBwcmVzZW50IHRoZW4KKyAgICAgICAgIyB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LgorICAgICAgICAjIFdlIHRha2UgdGhlIGxpYmVydHkgb2YgaWdub3JpbmcgdGhpcyByZXF1aXJlbWVudCBmb3IKKyAgICAgICAgIyBEZWNpbWFsLS0taXQncyBwcmVzdW1hYmx5IHRoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0CisgICAgICAgICMgZm9ybWF0KGZsb2F0LCAnJykgYmVoYXZlcyBzaW1pbGFybHkgdG8gc3RyKGZsb2F0KS4KKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIHNwZWMgPSBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcihzcGVjaWZpZXIsIF9sb2NhbGVjb252PV9sb2NhbGVjb252KQorCisgICAgICAgICMgc3BlY2lhbCB2YWx1ZXMgZG9uJ3QgY2FyZSBhYm91dCB0aGUgdHlwZSBvciBwcmVjaXNpb24KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHNpZ24gPSBfZm9ybWF0X3NpZ24oc2VsZi5fc2lnbiwgc3BlYykKKyAgICAgICAgICAgIGJvZHkgPSBzdHIoc2VsZi5jb3B5X2FicygpKQorICAgICAgICAgICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKKyAgICAgICAgICAgICAgICBib2R5ICs9ICclJworICAgICAgICAgICAgcmV0dXJuIF9mb3JtYXRfYWxpZ24oc2lnbiwgYm9keSwgc3BlYykKKworICAgICAgICAjIGEgdHlwZSBvZiBOb25lIGRlZmF1bHRzIHRvICdnJyBvciAnRycsIGRlcGVuZGluZyBvbiBjb250ZXh0CisgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpcyBOb25lOgorICAgICAgICAgICAgc3BlY1sndHlwZSddID0gWydnJywgJ0cnXVtjb250ZXh0LmNhcGl0YWxzXQorCisgICAgICAgICMgaWYgdHlwZSBpcyAnJScsIGFkanVzdCBleHBvbmVudCBvZiBzZWxmIGFjY29yZGluZ2x5CisgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6CisgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCsyKQorCisgICAgICAgICMgcm91bmQgaWYgbmVjZXNzYXJ5LCB0YWtpbmcgcm91bmRpbmcgbW9kZSBmcm9tIHRoZSBjb250ZXh0CisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZworICAgICAgICBwcmVjaXNpb24gPSBzcGVjWydwcmVjaXNpb24nXQorICAgICAgICBpZiBwcmVjaXNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKKyAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcm91bmQocHJlY2lzaW9uKzEsIHJvdW5kaW5nKQorICAgICAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6CisgICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3Jlc2NhbGUoLXByZWNpc2lvbiwgcm91bmRpbmcpCisgICAgICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZ0cnIGFuZCBsZW4oc2VsZi5faW50KSA+IHByZWNpc2lvbjoKKyAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcm91bmQocHJlY2lzaW9uLCByb3VuZGluZykKKyAgICAgICAgIyBzcGVjaWFsIGNhc2U6IHplcm9zIHdpdGggYSBwb3NpdGl2ZSBleHBvbmVudCBjYW4ndCBiZQorICAgICAgICAjIHJlcHJlc2VudGVkIGluIGZpeGVkIHBvaW50OyByZXNjYWxlIHRoZW0gdG8gMGUwLgorICAgICAgICBpZiBub3Qgc2VsZiBhbmQgc2VsZi5fZXhwID4gMCBhbmQgc3BlY1sndHlwZSddIGluICdmRiUnOgorICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCisKKyAgICAgICAgIyBmaWd1cmUgb3V0IHBsYWNlbWVudCBvZiB0aGUgZGVjaW1hbCBwb2ludAorICAgICAgICBsZWZ0ZGlnaXRzID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkKKyAgICAgICAgaWYgc3BlY1sndHlwZSddIGluICdlRSc6CisgICAgICAgICAgICBpZiBub3Qgc2VsZiBhbmQgcHJlY2lzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMSAtIHByZWNpc2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEKKyAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6CisgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKKyAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2dHJzoKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA8PSAwIGFuZCBsZWZ0ZGlnaXRzID4gLTY6CisgICAgICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMQorCisgICAgICAgICMgZmluZCBkaWdpdHMgYmVmb3JlIGFuZCBhZnRlciBkZWNpbWFsIHBvaW50LCBhbmQgZ2V0IGV4cG9uZW50CisgICAgICAgIGlmIGRvdHBsYWNlIDwgMDoKKyAgICAgICAgICAgIGludHBhcnQgPSAnMCcKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJzAnKigtZG90cGxhY2UpICsgc2VsZi5faW50CisgICAgICAgIGVsaWYgZG90cGxhY2UgPiBsZW4oc2VsZi5faW50KToKKyAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnQgKyAnMCcqKGRvdHBsYWNlLWxlbihzZWxmLl9pbnQpKQorICAgICAgICAgICAgZnJhY3BhcnQgPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludFs6ZG90cGxhY2VdIG9yICcwJworICAgICAgICAgICAgZnJhY3BhcnQgPSBzZWxmLl9pbnRbZG90cGxhY2U6XQorICAgICAgICBleHAgPSBsZWZ0ZGlnaXRzLWRvdHBsYWNlCisKKyAgICAgICAgIyBkb25lIHdpdGggdGhlIGRlY2ltYWwtc3BlY2lmaWMgc3R1ZmY7ICBoYW5kIG92ZXIgdGhlIHJlc3QKKyAgICAgICAgIyBvZiB0aGUgZm9ybWF0dGluZyB0byB0aGUgX2Zvcm1hdF9udW1iZXIgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfbnVtYmVyKHNlbGYuX3NpZ24sIGludHBhcnQsIGZyYWNwYXJ0LCBleHAsIHNwZWMpCisKK2RlZiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIGNvZWZmaWNpZW50LCBleHBvbmVudCwgc3BlY2lhbD1GYWxzZSk6CisgICAgIiIiQ3JlYXRlIGEgZGVjaW1hbCBpbnN0YW5jZSBkaXJlY3RseSwgd2l0aG91dCBhbnkgdmFsaWRhdGlvbiwKKyAgICBub3JtYWxpemF0aW9uIChlLmcuIHJlbW92YWwgb2YgbGVhZGluZyB6ZXJvcykgb3IgYXJndW1lbnQKKyAgICBjb252ZXJzaW9uLgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBmb3IgKmludGVybmFsIHVzZSBvbmx5Ki4KKyAgICAiIiIKKworICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhEZWNpbWFsKQorICAgIHNlbGYuX3NpZ24gPSBzaWduCisgICAgc2VsZi5faW50ID0gY29lZmZpY2llbnQKKyAgICBzZWxmLl9leHAgPSBleHBvbmVudAorICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBzcGVjaWFsCisKKyAgICByZXR1cm4gc2VsZgorCisjIFJlZ2lzdGVyIERlY2ltYWwgYXMgYSBraW5kIG9mIE51bWJlciAoYW4gYWJzdHJhY3QgYmFzZSBjbGFzcykuCisjIEhvd2V2ZXIsIGRvIG5vdCByZWdpc3RlciBpdCBhcyBSZWFsIChiZWNhdXNlIERlY2ltYWxzIGFyZSBub3QKKyMgaW50ZXJvcGVyYWJsZSB3aXRoIGZsb2F0cykuCitfbnVtYmVycy5OdW1iZXIucmVnaXN0ZXIoRGVjaW1hbCkKKworCisjIyMjIyBDb250ZXh0IGNsYXNzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgX0NvbnRleHRNYW5hZ2VyKG9iamVjdCk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIGNsYXNzIHRvIHN1cHBvcnQgbG9jYWxjb250ZXh0KCkuCisKKyAgICAgIFNldHMgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIF9fZW50ZXJfXygpIGFuZCByZXN0b3JlcworICAgICAgdGhlIHByZXZpb3VzIGRlY2ltYWwgY29udGV4dCBpbiBfX2V4aXRfXygpCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld19jb250ZXh0KToKKyAgICAgICAgc2VsZi5uZXdfY29udGV4dCA9IG5ld19jb250ZXh0LmNvcHkoKQorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuc2F2ZWRfY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZXRjb250ZXh0KHNlbGYubmV3X2NvbnRleHQpCisgICAgICAgIHJldHVybiBzZWxmLm5ld19jb250ZXh0CisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKKyAgICAgICAgc2V0Y29udGV4dChzZWxmLnNhdmVkX2NvbnRleHQpCisKK2NsYXNzIENvbnRleHQob2JqZWN0KToKKyAgICAiIiJDb250YWlucyB0aGUgY29udGV4dCBmb3IgYSBEZWNpbWFsIGluc3RhbmNlLgorCisgICAgQ29udGFpbnM6CisgICAgcHJlYyAtIHByZWNpc2lvbiAoZm9yIHVzZSBpbiByb3VuZGluZywgZGl2aXNpb24sIHNxdWFyZSByb290cy4uKQorICAgIHJvdW5kaW5nIC0gcm91bmRpbmcgdHlwZSAoaG93IHlvdSByb3VuZCkKKyAgICB0cmFwcyAtIElmIHRyYXBzW2V4Y2VwdGlvbl0gPSAxLCB0aGVuIHRoZSBleGNlcHRpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VkIHdoZW4gaXQgaXMgY2F1c2VkLiAgT3RoZXJ3aXNlLCBhIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGluLgorICAgIGZsYWdzICAtIFdoZW4gYW4gZXhjZXB0aW9uIGlzIGNhdXNlZCwgZmxhZ3NbZXhjZXB0aW9uXSBpcyBzZXQuCisgICAgICAgICAgICAgKFdoZXRoZXIgb3Igbm90IHRoZSB0cmFwX2VuYWJsZXIgaXMgc2V0KQorICAgICAgICAgICAgIFNob3VsZCBiZSByZXNldCBieSB1c2VyIG9mIERlY2ltYWwgaW5zdGFuY2UuCisgICAgRW1pbiAtICAgTWluaW11bSBleHBvbmVudAorICAgIEVtYXggLSAgIE1heGltdW0gZXhwb25lbnQKKyAgICBjYXBpdGFscyAtICAgICAgSWYgMSwgMSoxMF4xIGlzIHByaW50ZWQgYXMgMUUrMS4KKyAgICAgICAgICAgICAgICAgICAgSWYgMCwgcHJpbnRlZCBhcyAxZTEKKyAgICBjbGFtcCAtICBJZiAxLCBjaGFuZ2UgZXhwb25lbnRzIGlmIHRvbyBoaWdoIChEZWZhdWx0IDApCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CisgICAgICAgICMgU2V0IGRlZmF1bHRzOyBmb3IgZXZlcnl0aGluZyBleGNlcHQgZmxhZ3MgYW5kIF9pZ25vcmVkX2ZsYWdzLAorICAgICAgICAjIGluaGVyaXQgZnJvbSBEZWZhdWx0Q29udGV4dC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGMgPSBEZWZhdWx0Q29udGV4dAorICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYucHJlYyA9IHByZWMgaWYgcHJlYyBpcyBub3QgTm9uZSBlbHNlIGRjLnByZWMKKyAgICAgICAgc2VsZi5yb3VuZGluZyA9IHJvdW5kaW5nIGlmIHJvdW5kaW5nIGlzIG5vdCBOb25lIGVsc2UgZGMucm91bmRpbmcKKyAgICAgICAgc2VsZi5FbWluID0gRW1pbiBpZiBFbWluIGlzIG5vdCBOb25lIGVsc2UgZGMuRW1pbgorICAgICAgICBzZWxmLkVtYXggPSBFbWF4IGlmIEVtYXggaXMgbm90IE5vbmUgZWxzZSBkYy5FbWF4CisgICAgICAgIHNlbGYuY2FwaXRhbHMgPSBjYXBpdGFscyBpZiBjYXBpdGFscyBpcyBub3QgTm9uZSBlbHNlIGRjLmNhcGl0YWxzCisgICAgICAgIHNlbGYuY2xhbXAgPSBjbGFtcCBpZiBjbGFtcCBpcyBub3QgTm9uZSBlbHNlIGRjLmNsYW1wCisKKyAgICAgICAgaWYgX2lnbm9yZWRfZmxhZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IF9pZ25vcmVkX2ZsYWdzCisKKyAgICAgICAgaWYgdHJhcHMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkYy50cmFwcy5jb3B5KCkKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh0cmFwcywgZGljdCk6CisgICAgICAgICAgICBzZWxmLnRyYXBzID0gZGljdCgocywgaW50KHMgaW4gdHJhcHMpKSBmb3IgcyBpbiBfc2lnbmFscyArIHRyYXBzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50cmFwcyA9IHRyYXBzCisKKyAgICAgICAgaWYgZmxhZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0LmZyb21rZXlzKF9zaWduYWxzLCAwKQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGZsYWdzLCBkaWN0KToKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0KChzLCBpbnQocyBpbiBmbGFncykpIGZvciBzIGluIF9zaWduYWxzICsgZmxhZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKKworICAgIGRlZiBfc2V0X2ludGVnZXJfY2hlY2soc2VsZiwgbmFtZSwgdmFsdWUsIHZtaW4sIHZtYXgpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhbiBpbnRlZ2VyIiAlIG5hbWUpCisgICAgICAgIGlmIHZtaW4gPT0gJy1pbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVzLCAlZF0uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxpZiB2bWF4ID09ICdpbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlc10uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbiBvciB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVkXS4gZ290ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKyAgICBkZWYgX3NldF9zaWduYWxfZGljdChzZWxmLCBuYW1lLCBkKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYSBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIGQ6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIGQpCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lID09ICdwcmVjJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMSwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1pbic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsICctaW5mJywgMCkKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWF4JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2FwaXRhbHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NsYW1wJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdyb3VuZGluZyc6CisgICAgICAgICAgICBpZiBub3QgdmFsdWUgaW4gX3JvdW5kaW5nX21vZGVzOgorICAgICAgICAgICAgICAgICMgcmFpc2UgVHlwZUVycm9yIGV2ZW4gZm9yIHN0cmluZ3MgdG8gaGF2ZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgICMgYW1vbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlczogaW52YWxpZCByb3VuZGluZyBtb2RlIiAlIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdmbGFncycgb3IgbmFtZSA9PSAndHJhcHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9zaWduYWxfZGljdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdfaWdub3JlZF9mbGFncyc6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIidkZWNpbWFsLkNvbnRleHQnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGNhbm5vdCBiZSBkZWxldGVkIiAlIG5hbWUpCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHRyYXBzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLAorICAgICAgICAgICAgICAgIChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBmbGFncywgdHJhcHMpKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAiIiJTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuIiIiCisgICAgICAgIHMgPSBbXQorICAgICAgICBzLmFwcGVuZCgnQ29udGV4dChwcmVjPSUocHJlYylkLCByb3VuZGluZz0lKHJvdW5kaW5nKXMsICcKKyAgICAgICAgICAgICAgICAgJ0VtaW49JShFbWluKWQsIEVtYXg9JShFbWF4KWQsIGNhcGl0YWxzPSUoY2FwaXRhbHMpZCwgJworICAgICAgICAgICAgICAgICAnY2xhbXA9JShjbGFtcClkJworICAgICAgICAgICAgICAgICAlIHZhcnMoc2VsZikpCisgICAgICAgIG5hbWVzID0gW2YuX19uYW1lX18gZm9yIGYsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHMuYXBwZW5kKCdmbGFncz1bJyArICcsICcuam9pbihuYW1lcykgKyAnXScpCisgICAgICAgIG5hbWVzID0gW3QuX19uYW1lX18gZm9yIHQsIHYgaW4gc2VsZi50cmFwcy5pdGVtcygpIGlmIHZdCisgICAgICAgIHMuYXBwZW5kKCd0cmFwcz1bJyArICcsICcuam9pbihuYW1lcykgKyAnXScpCisgICAgICAgIHJldHVybiAnLCAnLmpvaW4ocykgKyAnKScKKworICAgIGRlZiBjbGVhcl9mbGFncyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIGZsYWdzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi5mbGFnczoKKyAgICAgICAgICAgIHNlbGYuZmxhZ3NbZmxhZ10gPSAwCisKKyAgICBkZWYgY2xlYXJfdHJhcHMoc2VsZik6CisgICAgICAgICIiIlJlc2V0IGFsbCB0cmFwcyB0byB6ZXJvIiIiCisgICAgICAgIGZvciBmbGFnIGluIHNlbGYudHJhcHM6CisgICAgICAgICAgICBzZWxmLnRyYXBzW2ZsYWddID0gMAorCisgICAgZGVmIF9zaGFsbG93X2NvcHkoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBzaGFsbG93IGNvcHkgZnJvbSBzZWxmLiIiIgorICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuZmxhZ3MsIHNlbGYudHJhcHMsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQorICAgICAgICByZXR1cm4gbmMKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgZGVlcCBjb3B5IGZyb20gc2VsZi4iIiIKKyAgICAgICAgbmMgPSBDb250ZXh0KHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFncy5jb3B5KCksIHNlbGYudHJhcHMuY29weSgpLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncykKKyAgICAgICAgcmV0dXJuIG5jCisgICAgX19jb3B5X18gPSBjb3B5CisKKyAgICBkZWYgX3JhaXNlX2Vycm9yKHNlbGYsIGNvbmRpdGlvbiwgZXhwbGFuYXRpb24gPSBOb25lLCAqYXJncyk6CisgICAgICAgICIiIkhhbmRsZXMgYW4gZXJyb3IKKworICAgICAgICBJZiB0aGUgZmxhZyBpcyBpbiBfaWdub3JlZF9mbGFncywgcmV0dXJucyB0aGUgZGVmYXVsdCByZXNwb25zZS4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCBzZXRzIHRoZSBmbGFnLCB0aGVuLCBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICB0cmFwX2VuYWJsZXIgaXMgc2V0LCBpdCByZXJhaXNlcyB0aGUgZXhjZXB0aW9uLiAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zCisgICAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIGFmdGVyIHNldHRpbmcgdGhlIGZsYWcuCisgICAgICAgICIiIgorICAgICAgICBlcnJvciA9IF9jb25kaXRpb25fbWFwLmdldChjb25kaXRpb24sIGNvbmRpdGlvbikKKyAgICAgICAgaWYgZXJyb3IgaW4gc2VsZi5faWdub3JlZF9mbGFnczoKKyAgICAgICAgICAgICMgRG9uJ3QgdG91Y2ggdGhlIGZsYWcKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigpLmhhbmRsZShzZWxmLCAqYXJncykKKworICAgICAgICBzZWxmLmZsYWdzW2Vycm9yXSA9IDEKKyAgICAgICAgaWYgbm90IHNlbGYudHJhcHNbZXJyb3JdOgorICAgICAgICAgICAgIyBUaGUgZXJyb3JzIGRlZmluZSBob3cgdG8gaGFuZGxlIHRoZW1zZWx2ZXMuCisgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uKCkuaGFuZGxlKHNlbGYsICphcmdzKQorCisgICAgICAgICMgRXJyb3JzIHNob3VsZCBvbmx5IGJlIHJpc2tlZCBvbiBjb3BpZXMgb2YgdGhlIGNvbnRleHQKKyAgICAgICAgIyBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gW10KKyAgICAgICAgcmFpc2UgZXJyb3IoZXhwbGFuYXRpb24pCisKKyAgICBkZWYgX2lnbm9yZV9hbGxfZmxhZ3Moc2VsZik6CisgICAgICAgICIiIklnbm9yZSBhbGwgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCIiIgorICAgICAgICByZXR1cm4gc2VsZi5faWdub3JlX2ZsYWdzKCpfc2lnbmFscykKKworICAgIGRlZiBfaWdub3JlX2ZsYWdzKHNlbGYsICpmbGFncyk6CisgICAgICAgICIiIklnbm9yZSB0aGUgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCIiIgorICAgICAgICAjIERvIG5vdCBtdXRhdGUtLSBUaGlzIHdheSwgY29waWVzIG9mIGEgY29udGV4dCBsZWF2ZSB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBhbG9uZS4KKyAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IChzZWxmLl9pZ25vcmVkX2ZsYWdzICsgbGlzdChmbGFncykpCisgICAgICAgIHJldHVybiBsaXN0KGZsYWdzKQorCisgICAgZGVmIF9yZWdhcmRfZmxhZ3Moc2VsZiwgKmZsYWdzKToKKyAgICAgICAgIiIiU3RvcCBpZ25vcmluZyB0aGUgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCIiIgorICAgICAgICBpZiBmbGFncyBhbmQgaXNpbnN0YW5jZShmbGFnc1swXSwgKHR1cGxlLGxpc3QpKToKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3NbMF0KKyAgICAgICAgZm9yIGZsYWcgaW4gZmxhZ3M6CisgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzLnJlbW92ZShmbGFnKQorCisgICAgIyBXZSBpbmhlcml0IG9iamVjdC5fX2hhc2hfXywgc28gd2UgbXVzdCBkZW55IHRoaXMgZXhwbGljaXRseQorICAgIF9faGFzaF9fID0gTm9uZQorCisgICAgZGVmIEV0aW55KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIEV0aW55ICg9IEVtaW4gLSBwcmVjICsgMSkiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWxmLkVtaW4gLSBzZWxmLnByZWMgKyAxKQorCisgICAgZGVmIEV0b3Aoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgbWF4aW11bSBleHBvbmVudCAoPSBFbWF4IC0gcHJlYyArIDEpIiIiCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5FbWF4IC0gc2VsZi5wcmVjICsgMSkKKworICAgIGRlZiBfc2V0X3JvdW5kaW5nKHNlbGYsIHR5cGUpOgorICAgICAgICAiIiJTZXRzIHRoZSByb3VuZGluZyB0eXBlLgorCisgICAgICAgIFNldHMgdGhlIHJvdW5kaW5nIHR5cGUsIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IChwcmV2aW91cykKKyAgICAgICAgcm91bmRpbmcgdHlwZS4gIE9mdGVuIHVzZWQgbGlrZToKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgIyBzbyB5b3UgZG9uJ3QgY2hhbmdlIHRoZSBjYWxsaW5nIGNvbnRleHQKKyAgICAgICAgIyBpZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIG1pZGRsZS4KKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfVVApCisgICAgICAgIHZhbCA9IHNlbGYuX19zdWJfXyhvdGhlciwgY29udGV4dD1jb250ZXh0KQorICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcocm91bmRpbmcpCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgcm91bmQgdXAgZm9yIHRoYXQgb3BlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcm91bmRpbmcgPSBzZWxmLnJvdW5kaW5nCisgICAgICAgIHNlbGYucm91bmRpbmc9IHR5cGUKKyAgICAgICAgcmV0dXJuIHJvdW5kaW5nCisKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWwoc2VsZiwgbnVtPScwJyk6CisgICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBidXQgdXNpbmcgc2VsZiBhcyBjb250ZXh0LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlCisgICAgICAgIElCTSBEZWNpbWFsIHNwZWNpZmljYXRpb24uIiIiCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIG51bSAhPSBudW0uc3RyaXAoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyB0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJtaXR0ZWQuIikKKworICAgICAgICBkID0gRGVjaW1hbChudW0sIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgZC5faXNuYW4oKSBhbmQgbGVuKGQuX2ludCkgPiBzZWxmLnByZWMgLSBzZWxmLmNsYW1wOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpYWdub3N0aWMgaW5mbyB0b28gbG9uZyBpbiBOYU4iKQorICAgICAgICByZXR1cm4gZC5fZml4KHNlbGYpCisKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmLCBmKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGZyb20gYSBmbG9hdCBidXQgcm91bmRpbmcgdXNpbmcgc2VsZgorICAgICAgICBhcyB0aGUgY29udGV4dC4KKworICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICA+Pj4gY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDMuMTQxNTkyNjUzNTg5NzkzMikKKyAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgdHJhcHM9W0luZXhhY3RdKQorICAgICAgICA+Pj4gY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDMuMTQxNTkyNjUzNTg5NzkzMikKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgLi4uCisgICAgICAgIGRlY2ltYWwuSW5leGFjdAorCisgICAgICAgICIiIgorICAgICAgICBkID0gRGVjaW1hbC5mcm9tX2Zsb2F0KGYpICAgICAgICMgQW4gZXhhY3QgY29udmVyc2lvbgorICAgICAgICByZXR1cm4gZC5fZml4KHNlbGYpICAgICAgICAgICAgICMgQXBwbHkgdGhlIGNvbnRleHQgcm91bmRpbmcKKworICAgICMgTWV0aG9kcworICAgIGRlZiBhYnMoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvcGVyYW5kLgorCisgICAgICAgIElmIHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHVzaW5nIHRoZSBtaW51cworICAgICAgICBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdXNpbmcKKyAgICAgICAgdGhlIHBsdXMgb3BlcmF0aW9uIG9uIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJzEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoLTEpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuX19hYnNfXyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgYWRkKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHN1bSBvZiB0aGUgdHdvIG9wZXJhbmRzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzcuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTkuMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKCcxRSsyJyksIERlY2ltYWwoJzEuMDFFKzQnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMkUrNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKDgpLCA1KQorICAgICAgICBEZWNpbWFsKCcxMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKDUsIDUpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fYWRkX18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9hcHBseShzZWxmLCBhKToKKyAgICAgICAgcmV0dXJuIHN0cihhLl9maXgoc2VsZikpCisKKyAgICBkZWYgY2Fub25pY2FsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzYW1lIERlY2ltYWwgb2JqZWN0LgorCisgICAgICAgIEFzIHdlIGRvIG5vdCBoYXZlIGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBzYW1lIG51bWJlciwgdGhlCisgICAgICAgIHJlY2VpdmVkIG9iamVjdCBhbHJlYWR5IGlzIGluIGl0cyBjYW5vbmljYWwgZm9ybS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIERlY2ltYWwoJzIuNTAnKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKKyAgICAgICAgcmV0dXJuIGEuY2Fub25pY2FsKCkKKworICAgIGRlZiBjb21wYXJlKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB2YWx1ZXMgbnVtZXJpY2FsbHkuCisKKyAgICAgICAgSWYgdGhlIHNpZ25zIG9mIHRoZSBvcGVyYW5kcyBkaWZmZXIsIGEgdmFsdWUgcmVwcmVzZW50aW5nIGVhY2ggb3BlcmFuZAorICAgICAgICAoJy0xJyBpZiB0aGUgb3BlcmFuZCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSBvcGVyYW5kIGlzIHplcm8gb3IKKyAgICAgICAgbmVnYXRpdmUgemVybywgb3IgJzEnIGlmIHRoZSBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvKSBpcyB1c2VkIGluCisgICAgICAgIHBsYWNlIG9mIHRoYXQgb3BlcmFuZCBmb3IgdGhlIGNvbXBhcmlzb24gaW5zdGVhZCBvZiB0aGUgYWN0dWFsCisgICAgICAgIG9wZXJhbmQuCisKKyAgICAgICAgVGhlIGNvbXBhcmlzb24gaXMgdGhlbiBlZmZlY3RlZCBieSBzdWJ0cmFjdGluZyB0aGUgc2Vjb25kIG9wZXJhbmQgZnJvbQorICAgICAgICB0aGUgZmlyc3QgYW5kIHRoZW4gcmV0dXJuaW5nIGEgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQgb2YgdGhlCisgICAgICAgIHN1YnRyYWN0aW9uOiAnLTEnIGlmIHRoZSByZXN1bHQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgcmVzdWx0IGlzCisgICAgICAgIHplcm8gb3IgbmVnYXRpdmUgemVybywgb3IgJzEnIGlmIHRoZSByZXN1bHQgaXMgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJy0zJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKDEsIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvbXBhcmUoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGNvbXBhcmVfc2lnbmFsKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG9mIHRoZSB0d28gb3BlcmFuZHMgbnVtZXJpY2FsbHkuCisKKyAgICAgICAgSXQncyBwcmV0dHkgbXVjaCBsaWtlIGNvbXBhcmUoKSwgYnV0IGFsbCBOYU5zIHNpZ25hbCwgd2l0aCBzaWduYWxpbmcKKyAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDAKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnTmFOJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgMQorICAgICAgICA+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDAKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnc05hTicpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDEKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoLTEsIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgtMSksIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoLTEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvbXBhcmVfc2lnbmFsKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbAorICAgICAgICB2YWx1ZS4gTm90ZSB0aGF0IGEgdG90YWwgb3JkZXJpbmcgaXMgZGVmaW5lZCBmb3IgYWxsIHBvc3NpYmxlIGFic3RyYWN0CisgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuNzMnKSwgRGVjaW1hbCgnMTI3LjknKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnLTEyNycpLCAgRGVjaW1hbCgnMTInKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMzAnKSwgRGVjaW1hbCgnMTIuMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zMCcpLCBEZWNpbWFsKCcxMi4zMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMnKSwgIERlY2ltYWwoJzEyLjMwMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMnKSwgIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbCgxLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb21wYXJlX3RvdGFsKGIpCisKKyAgICBkZWYgY29tcGFyZV90b3RhbF9tYWcoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiBpZ25vcmluZyBzaWduLgorCisgICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29tcGFyZV90b3RhbF9tYWcoYikKKworICAgIGRlZiBjb3B5X2FicyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKERlY2ltYWwoJy0xMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicygtMSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb3B5X2FicygpCisKKyAgICBkZWYgY29weV9kZWNpbWFsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgZGVjaW1hbCBvYmplY3QuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzIuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKERlY2ltYWwoJy0xLjAwJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoMSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gRGVjaW1hbChhKQorCisgICAgZGVmIGNvcHlfbmVnYXRlKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgb3BlcmFuZCB3aXRoIHRoZSBzaWduIGludmVydGVkLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoRGVjaW1hbCgnMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZShEZWNpbWFsKCctMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKDEpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvcHlfbmVnYXRlKCkKKworICAgIGRlZiBjb3B5X3NpZ24oc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvcGllcyB0aGUgc2Vjb25kIG9wZXJhbmQncyBzaWduIHRvIHRoZSBmaXJzdCBvbmUuCisKKyAgICAgICAgSW4gZGV0YWlsLCBpdCByZXR1cm5zIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIHRoZSBzaWduCisgICAgICAgIGVxdWFsIHRvIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCAnMS41MCcpLCBEZWNpbWFsKCc3LjMzJykpCisgICAgICAgIERlY2ltYWwoJzEuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCctMS41MCcpLCBEZWNpbWFsKCc3LjMzJykpCisgICAgICAgIERlY2ltYWwoJzEuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCAnMS41MCcpLCBEZWNpbWFsKCctNy4zMycpKQorICAgICAgICBEZWNpbWFsKCctMS41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoJy0xLjUwJyksIERlY2ltYWwoJy03LjMzJykpCisgICAgICAgIERlY2ltYWwoJy0xLjUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oMSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oMSwgRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvcHlfc2lnbihiKQorCisgICAgZGVmIGRpdmlkZShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiRGVjaW1hbCBkaXZpc2lvbiBpbiBhIHNwZWNpZmllZCBjb250ZXh0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcwLjMzMzMzMzMzMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcwLjY2NjY2NjY2NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzUnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcyLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzAuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzEyJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCc4LjAwJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnNC4wMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzIuNDAwJyksIERlY2ltYWwoJzIuMCcpKQorICAgICAgICBEZWNpbWFsKCcxLjIwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTAwMCcpLCBEZWNpbWFsKCcxMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMDAwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzIuNDBFKzYnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcxLjIwRSs2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoNSwgNSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoNSksIDUpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZSg1LCBEZWNpbWFsKDUpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fdHJ1ZWRpdl9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBkaXZpZGVfaW50KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJEaXZpZGVzIHR3byBudW1iZXJzIGFuZCByZXR1cm5zIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHJlc3VsdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMC4zJykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoMTAsIDMpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgxMCksIDMpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoMTAsIERlY2ltYWwoMykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19mbG9vcmRpdl9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBkaXZtb2Qoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybiAoYSAvLyBiLCBhICUgYikuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgRGVjaW1hbCgzKSkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMicpKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCBEZWNpbWFsKDQpKQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIDQpCisgICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgNCkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZCg4LCBEZWNpbWFsKDQpKQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX2Rpdm1vZF9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBleHAoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgZSAqKiBhLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCctSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCctMScpKQorICAgICAgICBEZWNpbWFsKCcwLjM2Nzg3OTQ0MScpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcyLjcxODI4MTgzJykKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzAuNjkzMTQ3MTgxJykpCisgICAgICAgIERlY2ltYWwoJzIuMDAwMDAwMDAnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnK0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IGMuZXhwKDEwKQorICAgICAgICBEZWNpbWFsKCcyMjAyNi40NjU4JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPV9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuZXhwKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBmbWEoc2VsZiwgYSwgYiwgYyk6CisgICAgICAgICIiIlJldHVybnMgYSBtdWx0aXBsaWVkIGJ5IGIsIHBsdXMgYy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyLCB1c2luZyBtdWx0aXBseSwKKyAgICAgICAgdGhlIHRoaXJkIG9wZXJhbmQgaXMgdGhlbiBhZGRlZCB0byB0aGUgcmVzdWx0IG9mIHRoYXQKKyAgICAgICAgbXVsdGlwbGljYXRpb24sIHVzaW5nIGFkZCwgYWxsIHdpdGggb25seSBvbmUgZmluYWwgcm91bmRpbmcuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc1JyksIERlY2ltYWwoJzcnKSkKKyAgICAgICAgRGVjaW1hbCgnMjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCczJyksIERlY2ltYWwoJy01JyksIERlY2ltYWwoJzcnKSkKKyAgICAgICAgRGVjaW1hbCgnLTgnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCc4ODg1NjUyOTAnKSwgRGVjaW1hbCgnMTU1Ny45NjkzMCcpLCBEZWNpbWFsKCctODYwODcuNzU3OCcpKQorICAgICAgICBEZWNpbWFsKCcxLjM4NDM1NzM2RSsxMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIDMsIDQpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCBEZWNpbWFsKDMpLCA0KQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgMywgRGVjaW1hbCg0KSkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5mbWEoYiwgYywgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGlzX2Nhbm9uaWNhbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgY2Fub25pY2FsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIGVuY29kaW5nIG9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMKKyAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImlzX2Nhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKKyAgICAgICAgcmV0dXJuIGEuaXNfY2Fub25pY2FsKCkKKworICAgIGRlZiBpc19maW5pdGUoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgorICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJy0wLjMnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCcwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnSW5mJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJ05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZSgxKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19maW5pdGUoKQorCisgICAgZGVmIGlzX2luZmluaXRlKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCctSW5mJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZSgxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfaW5maW5pdGUoKQorCisgICAgZGVmIGlzX25hbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBxTmFOIG9yIHNOYU47CisgICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCctc05hTicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19uYW4oKQorCisgICAgZGVmIGlzX25vcm1hbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBub3JtYWwgbnVtYmVyOworICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzAuMUUtOTk5JykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcwLjAwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCctSW5mJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKDEpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX25vcm1hbChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgaXNfcW5hbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBxdWlldCBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJ05hTicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCdzTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbigxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfcW5hbigpCisKKyAgICBkZWYgaXNfc2lnbmVkKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJy0xMicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJy0wJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoOCkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoLTgpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3NpZ25lZCgpCisKKyAgICBkZWYgaXNfc25hbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOOworICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3NuYW4oKQorCisgICAgZGVmIGlzX3N1Ym5vcm1hbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgc3Vibm9ybWFsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCcwLjFFLTk5OScpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCcwLjAwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCctSW5mJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19zdWJub3JtYWwoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGlzX3plcm8oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnMCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCctMEUrMicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygxKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMCkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfemVybygpCisKKyAgICBkZWYgbG4oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMS4wMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzIuNzE4MjgxODMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMCcpCisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzIuMzAyNTg1MDknKQorICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcrSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sbigxKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxuKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2cxMChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcwLjAwMScpKQorICAgICAgICBEZWNpbWFsKCctMycpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzEuMDAwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzAuMzAxMDI5OTk2JykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzcwJykpCisgICAgICAgIERlY2ltYWwoJzEuODQ1MDk4MDQnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcrSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sb2cxMCgwKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sb2cxMCgxKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZzEwKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2diKHNlbGYsIGEpOgorICAgICAgICAiIiIgUmV0dXJucyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3BlcmFuZCdzIE1TRC4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBpbnRlZ2VyIHdoaWNoIGlzIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlCisgICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHRoZSBvcGVyYW5kIChhcyB0aG91Z2ggdGhlCisgICAgICAgIG9wZXJhbmQgd2VyZSB0cnVuY2F0ZWQgdG8gYSBzaW5nbGUgZGlnaXQgd2hpbGUgbWFpbnRhaW5pbmcgdGhlCisgICAgICAgIHZhbHVlIG9mIHRoYXQgZGlnaXQgYW5kIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzI1MCcpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcwLjAzJykpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMTApCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMTAwKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2IoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2ljYWxfYW5kKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAnYW5kJyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KKworICAgICAgICBUaGUgb3BlcmFuZHMgbXVzdCBiZSBib3RoIGxvZ2ljYWwgbnVtYmVycy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMTExMScpLCBEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoMTEwLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoMTEwKSwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZCgxMTAsIERlY2ltYWwoMTEwMSkpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2dpY2FsX2FuZChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9naWNhbF9pbnZlcnQoc2VsZiwgYSk6CisgICAgICAgICIiIkludmVydCBhbGwgdGhlIGRpZ2l0cyBpbiB0aGUgb3BlcmFuZC4KKworICAgICAgICBUaGUgb3BlcmFuZCBtdXN0IGJlIGEgbG9naWNhbCBudW1iZXIuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzExMTExMTExMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxMTExMTExMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzExMTExMTExMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxMDEwMTAxMDEnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxMDEwMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KDExMDEpCisgICAgICAgIERlY2ltYWwoJzExMTExMDAxMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2dpY2FsX2ludmVydChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9naWNhbF9vcihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ29yJyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KKworICAgICAgICBUaGUgb3BlcmFuZHMgbXVzdCBiZSBib3RoIGxvZ2ljYWwgbnVtYmVycy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCisgICAgICAgIERlY2ltYWwoJzExMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMTExMCcpLCBEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKDExMCwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTExMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKDExMCksIDExMDEpCisgICAgICAgIERlY2ltYWwoJzExMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoMTEwLCBEZWNpbWFsKDExMDEpKQorICAgICAgICBEZWNpbWFsKCcxMTExJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2ljYWxfb3IoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2ljYWxfeG9yKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAneG9yJyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KKworICAgICAgICBUaGUgb3BlcmFuZHMgbXVzdCBiZSBib3RoIGxvZ2ljYWwgbnVtYmVycy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxMTExJyksIERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzExMDEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKDExMCwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTAxMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgxMTApLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMDExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcigxMTAsIERlY2ltYWwoMTEwMSkpCisgICAgICAgIERlY2ltYWwoJzEwMTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9naWNhbF94b3IoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1heChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIibWF4IGNvbXBhcmVzIHR3byB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybnMgdGhlIG1heGltdW0uCisKKyAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4gdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGFzIHRob3VnaCBieSB0aGUgY29tcGFyZQorICAgICAgICBvcGVyYXRpb24uICBJZiB0aGV5IGFyZSBudW1lcmljYWxseSBlcXVhbCB0aGVuIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZAorICAgICAgICBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSB0aGUgbWF4aW11bSAoY2xvc2VyIHRvIHBvc2l0aXZlCisgICAgICAgIGluZmluaXR5KSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzEuMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoMSwgMikKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heCgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm1heChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWF4X21hZyhzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKCc3JyksIERlY2ltYWwoJy0xMCcpKQorICAgICAgICBEZWNpbWFsKCctMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoMSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoMSksIC0yKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZygxLCBEZWNpbWFsKC0yKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubWF4X21hZyhiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWluKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJtaW4gY29tcGFyZXMgdHdvIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJucyB0aGUgbWluaW11bS4KKworICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIE5hTiB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgorICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYXMgdGhvdWdoIGJ5IHRoZSBjb21wYXJlCisgICAgICAgIG9wZXJhdGlvbi4gIElmIHRoZXkgYXJlIG51bWVyaWNhbGx5IGVxdWFsIHRoZW4gdGhlIGxlZnQtaGFuZCBvcGVyYW5kCisgICAgICAgIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlIHRoZSBtaW5pbXVtIChjbG9zZXIgdG8gbmVnYXRpdmUKKyAgICAgICAgaW5maW5pdHkpIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCcxLjAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oMSwgMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbigxLCBEZWNpbWFsKDI5KSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5taW4oYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1pbl9tYWcoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnLTInKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnTmFOJykpCisgICAgICAgIERlY2ltYWwoJy0zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKDEsIC0yKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoMSksIC0yKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKDEsIERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm1pbl9tYWcoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1pbnVzKHNlbGYsIGEpOgorICAgICAgICAiIiJNaW51cyBjb3JyZXNwb25kcyB0byB1bmFyeSBwcmVmaXggbWludXMgaW4gUHl0aG9uLgorCisgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzIHN1YnRyYWN0OyB0aGUKKyAgICAgICAgb3BlcmF0aW9uIG1pbnVzKGEpIGlzIGNhbGN1bGF0ZWQgYXMgc3VidHJhY3QoJzAnLCBhKSB3aGVyZSB0aGUgJzAnCisgICAgICAgIGhhcyB0aGUgc2FtZSBleHBvbmVudCBhcyB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKERlY2ltYWwoJzEuMycpKQorICAgICAgICBEZWNpbWFsKCctMS4zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cyhEZWNpbWFsKCctMS4zJykpCisgICAgICAgIERlY2ltYWwoJzEuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoMSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuX19uZWdfXyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbXVsdGlwbHkoc2VsZiwgYSwgYik6CisgICAgICAgICIiIm11bHRpcGx5IG11bHRpcGxpZXMgdHdvIG9wZXJhbmRzLgorCisgICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgc3BlY2lhbCB2YWx1ZSB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgorICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCB0b2dldGhlcgorICAgICAgICAoJ2xvbmcgbXVsdGlwbGljYXRpb24nKSwgcmVzdWx0aW5nIGluIGEgbnVtYmVyIHdoaWNoIG1heSBiZSBhcyBsb25nIGFzCisgICAgICAgIHRoZSBzdW0gb2YgdGhlIGxlbmd0aHMgb2YgdGhlIHR3byBvcGVyYW5kcy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzEuMjAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCczLjYwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCc3JyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCcwLjgnKSkKKyAgICAgICAgRGVjaW1hbCgnMC43MicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMC45JyksIERlY2ltYWwoJy0wJykpCisgICAgICAgIERlY2ltYWwoJy0wLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzY1NDMyMScpLCBEZWNpbWFsKCc2NTQzMjEnKSkKKyAgICAgICAgRGVjaW1hbCgnNC4yODEzNTk3MUUrMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KDcsIDcpCisgICAgICAgIERlY2ltYWwoJzQ5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKDcpLCA3KQorICAgICAgICBEZWNpbWFsKCc0OScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoNywgRGVjaW1hbCg3KSkKKyAgICAgICAgRGVjaW1hbCgnNDknKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19tdWxfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgbmV4dF9taW51cyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBzbWFsbGVyIHRoYW4gYS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfbWludXMoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCisgICAgICAgID4+PiBjLm5leHRfbWludXMoRGVjaW1hbCgnMUUtMTAwNycpKQorICAgICAgICBEZWNpbWFsKCcwRS0xMDA3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X21pbnVzKERlY2ltYWwoJy0xLjAwMDAwMDAzJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDA0JykKKyAgICAgICAgPj4+IGMubmV4dF9taW51cyhEZWNpbWFsKCdJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCc5Ljk5OTk5OTk5RSs5OTknKQorICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKDEpCisgICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm5leHRfbWludXMoY29udGV4dD1zZWxmKQorCisgICAgZGVmIG5leHRfcGx1cyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4gYS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfcGx1cyhEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQorICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoRGVjaW1hbCgnLTFFLTEwMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnLTBFLTEwMDcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfcGx1cyhEZWNpbWFsKCctMS4wMDAwMDAwMycpKQorICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwMicpCisgICAgICAgID4+PiBjLm5leHRfcGx1cyhEZWNpbWFsKCctSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnLTkuOTk5OTk5OTlFKzk5OScpCisgICAgICAgID4+PiBjLm5leHRfcGx1cygxKQorICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm5leHRfcGx1cyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbmV4dF90b3dhcmQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBjbG9zZXN0IHRvIGEsIGluIGRpcmVjdGlvbiB0b3dhcmRzIGIuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBmcm9tIHRoZSBmaXJzdAorICAgICAgICBvcGVyYW5kIChidXQgbm90IHRoZSBmaXJzdCBvcGVyYW5kKSB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24KKyAgICAgICAgdG93YXJkcyB0aGUgc2Vjb25kIG9wZXJhbmQsIHVubGVzcyB0aGUgb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZQorICAgICAgICB2YWx1ZS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xRS0xMDA3JyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTBFLTEwMDcnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMS4wMDAwMDAwMycpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDAyJykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMUUtMTAwNycpLCBEZWNpbWFsKCctMTAwJykpCisgICAgICAgIERlY2ltYWwoJzBFLTEwMDcnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMS4wMDAwMDAwMycpLCBEZWNpbWFsKCctMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDQnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcwLjAwJyksIERlY2ltYWwoJy0wLjAwMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuMDAnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZCgwLCAxKQorICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgwKSwgMSkKKyAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKDAsIERlY2ltYWwoMSkpCisgICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubmV4dF90b3dhcmQoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG5vcm1hbGl6ZShzZWxmLCBhKToKKyAgICAgICAgIiIibm9ybWFsaXplIHJlZHVjZXMgYW4gb3BlcmFuZCB0byBpdHMgc2ltcGxlc3QgZm9ybS4KKworICAgICAgICBFc3NlbnRpYWxseSBhIHBsdXMgb3BlcmF0aW9uIHdpdGggYWxsIHRyYWlsaW5nIHplcm9zIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgICAgcmVzdWx0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCctMi4wJykpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMS4yMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnLTEyMCcpKQorICAgICAgICBEZWNpbWFsKCctMS4yRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMTIwLjAwJykpCisgICAgICAgIERlY2ltYWwoJzEuMkUrMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzAuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKDYpCisgICAgICAgIERlY2ltYWwoJzYnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubm9ybWFsaXplKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBudW1iZXJfY2xhc3Moc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2YgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgVGhlIGNsYXNzIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CisgICAgICAgICAgLXNOYU4KKyAgICAgICAgICAtTmFOCisgICAgICAgICAgLUluZmluaXR5CisgICAgICAgICAgLU5vcm1hbAorICAgICAgICAgIC1TdWJub3JtYWwKKyAgICAgICAgICAtWmVybworICAgICAgICAgICtaZXJvCisgICAgICAgICAgK1N1Ym5vcm1hbAorICAgICAgICAgICtOb3JtYWwKKyAgICAgICAgICArSW5maW5pdHkKKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnSW5maW5pdHknKSkKKyAgICAgICAgJytJbmZpbml0eScKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzFFLTEwJykpCisgICAgICAgICcrTm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICAnK05vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzAuMUUtOTk5JykpCisgICAgICAgICcrU3Vibm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMCcpKQorICAgICAgICAnK1plcm8nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMCcpKQorICAgICAgICAnLVplcm8nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMC4xRS05OTknKSkKKyAgICAgICAgJy1TdWJub3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMUUtMTAnKSkKKyAgICAgICAgJy1Ob3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMi41MCcpKQorICAgICAgICAnLU5vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy1JbmZpbml0eScpKQorICAgICAgICAnLUluZmluaXR5JworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnTmFOJykpCisgICAgICAgICdOYU4nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctTmFOJykpCisgICAgICAgICdOYU4nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdzTmFOJykpCisgICAgICAgICdzTmFOJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoMTIzKQorICAgICAgICAnK05vcm1hbCcKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm51bWJlcl9jbGFzcyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgcGx1cyhzZWxmLCBhKToKKyAgICAgICAgIiIiUGx1cyBjb3JyZXNwb25kcyB0byB1bmFyeSBwcmVmaXggcGx1cyBpbiBQeXRob24uCisKKyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBldmFsdWF0ZWQgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgYWRkOyB0aGUKKyAgICAgICAgb3BlcmF0aW9uIHBsdXMoYSkgaXMgY2FsY3VsYXRlZCBhcyBhZGQoJzAnLCBhKSB3aGVyZSB0aGUgJzAnCisgICAgICAgIGhhcyB0aGUgc2FtZSBleHBvbmVudCBhcyB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoRGVjaW1hbCgnMS4zJykpCisgICAgICAgIERlY2ltYWwoJzEuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cyhEZWNpbWFsKCctMS4zJykpCisgICAgICAgIERlY2ltYWwoJy0xLjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoLTEpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLl9fcG9zX18oY29udGV4dD1zZWxmKQorCisgICAgZGVmIHBvd2VyKHNlbGYsIGEsIGIsIG1vZHVsbz1Ob25lKToKKyAgICAgICAgIiIiUmFpc2VzIGEgdG8gdGhlIHBvd2VyIG9mIGIsIHRvIG1vZHVsbyBpZiBnaXZlbi4KKworICAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgYSoqYi4gIElmIGEgaXMgbmVnYXRpdmUgdGhlbiBiCisgICAgICAgIG11c3QgYmUgaW50ZWdyYWwuICBUaGUgcmVzdWx0IHdpbGwgYmUgaW5leGFjdCB1bmxlc3MgYiBpcworICAgICAgICBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseQorICAgICAgICBpbiAncHJlY2lzaW9uJyBkaWdpdHMuCisKKyAgICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgKGEqKmIpICUgbW9kdWxvLiAgRm9yIHRoZQorICAgICAgICB0aHJlZSBhcmd1bWVudCBmb3JtLCB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBvbiB0aGUKKyAgICAgICAgYXJndW1lbnRzIGhvbGQ6CisKKyAgICAgICAgIC0gYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsCisgICAgICAgICAtIGIgbXVzdCBiZSBub25uZWdhdGl2ZQorICAgICAgICAgLSBhdCBsZWFzdCBvbmUgb2YgYSBvciBiIG11c3QgYmUgbm9uemVybworICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBoYXZlIGF0IG1vc3QgJ3ByZWNpc2lvbicgZGlnaXRzCisKKyAgICAgICAgVGhlIHJlc3VsdCBvZiBwb3coYSwgYiwgbW9kdWxvKSBpcyBpZGVudGljYWwgdG8gdGhlIHJlc3VsdAorICAgICAgICB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoYSoqYikgJSBtb2R1bG8gd2l0aAorICAgICAgICB1bmJvdW5kZWQgcHJlY2lzaW9uLCBidXQgaXMgY29tcHV0ZWQgbW9yZSBlZmZpY2llbnRseS4gIEl0IGlzCisgICAgICAgIGFsd2F5cyBleGFjdC4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnOCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0yJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTgnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyJyksIERlY2ltYWwoJy0zJykpCisgICAgICAgIERlY2ltYWwoJzAuMTI1JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMS43JyksIERlY2ltYWwoJzgnKSkKKyAgICAgICAgRGVjaW1hbCgnNjkuNzU3NTc0NCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMzAxMDI5OTk2JykpCisgICAgICAgIERlY2ltYWwoJzIuMDAwMDAwMDAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCctMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCctMScpKQorICAgICAgICBEZWNpbWFsKCctMCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCcxNicpKQorICAgICAgICBEZWNpbWFsKCcxMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMTYnKSkKKyAgICAgICAgRGVjaW1hbCgnLTExJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnOCcpLCBEZWNpbWFsKCcxNicpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJy0xNicpKQorICAgICAgICBEZWNpbWFsKCcxMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzIzRTEyMzQ1JyksIERlY2ltYWwoJzY3RTE4OScpLCBEZWNpbWFsKCcxMjM0NTY3ODknKSkKKyAgICAgICAgRGVjaW1hbCgnMTE3Mjk4MzAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxNycpLCBEZWNpbWFsKCcxNzI5JykpCisgICAgICAgIERlY2ltYWwoJy0wJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTIzJyksIERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnNjU1MzcnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgNykKKyAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcihEZWNpbWFsKDcpLCA3KQorICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIERlY2ltYWwoNyksIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19wb3dfXyhiLCBtb2R1bG8sIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBxdWFudGl6ZShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHZhbHVlIGVxdWFsIHRvICdhJyAocm91bmRlZCksIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgJ2InLgorCisgICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGRlcml2ZWQgZnJvbSB0aGF0IG9mIHRoZSBsZWZ0LWhhbmQKKyAgICAgICAgb3BlcmFuZC4gIEl0IG1heSBiZSByb3VuZGVkIHVzaW5nIHRoZSBjdXJyZW50IHJvdW5kaW5nIHNldHRpbmcgKGlmIHRoZQorICAgICAgICBleHBvbmVudCBpcyBiZWluZyBpbmNyZWFzZWQpLCBtdWx0aXBsaWVkIGJ5IGEgcG9zaXRpdmUgcG93ZXIgb2YgdGVuIChpZgorICAgICAgICB0aGUgZXhwb25lbnQgaXMgYmVpbmcgZGVjcmVhc2VkKSwgb3IgaXMgdW5jaGFuZ2VkIChpZiB0aGUgZXhwb25lbnQgaXMKKyAgICAgICAgYWxyZWFkeSBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQpLgorCisgICAgICAgIFVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBjb2VmZmljaWVudCBhZnRlciB0aGUKKyAgICAgICAgcXVhbnRpemUgb3BlcmF0aW9uIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBwcmVjaXNpb24gdGhlbiBhbiBJbnZhbGlkCisgICAgICAgIG9wZXJhdGlvbiBjb25kaXRpb24gaXMgcmFpc2VkLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQsIHVubGVzcyB0aGVyZSBpcworICAgICAgICBhbiBlcnJvciBjb25kaXRpb24sIHRoZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0IG9mIGEgcXVhbnRpemUgaXMgYWx3YXlzCisgICAgICAgIGVxdWFsIHRvIHRoYXQgb2YgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZC4KKworICAgICAgICBBbHNvIHVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBxdWFudGl6ZSB3aWxsIG5ldmVyIHJhaXNlIFVuZGVyZmxvdywgZXZlbgorICAgICAgICBpZiB0aGUgcmVzdWx0IGlzIHN1Ym5vcm1hbCBhbmQgaW5leGFjdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMDEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xNzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMScpKQorICAgICAgICBEZWNpbWFsKCcyLjE3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMWUrMCcpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMEUrMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLUluZicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMC4xJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0wJyksIERlY2ltYWwoJzFlKzUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTBFKzUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJyszNTIzNjQ1MC42JyksIERlY2ltYWwoJzFlLTInKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTEnKSkKKyAgICAgICAgRGVjaW1hbCgnMjE3LjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0wJykpCisgICAgICAgIERlY2ltYWwoJzIxNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4yRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUrMicpKQorICAgICAgICBEZWNpbWFsKCcyRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZSgxLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnF1YW50aXplKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiByYWRpeChzZWxmKToKKyAgICAgICAgIiIiSnVzdCByZXR1cm5zIDEwLCBhcyB0aGlzIGlzIERlY2ltYWwsIDopCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yYWRpeCgpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBEZWNpbWFsKDEwKQorCisgICAgZGVmIHJlbWFpbmRlcihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSByZXNpZHVlIG9mIHRoZSBkaXZpZGVuZCBhZnRlciB0aGUgb3BlcmF0aW9uIG9mCisgICAgICAgIGNhbGN1bGF0aW5nIGludGVnZXIgZGl2aXNpb24gYXMgZGVzY3JpYmVkIGZvciBkaXZpZGUtaW50ZWdlciwgcm91bmRlZAorICAgICAgICB0byBwcmVjaXNpb24gZGlnaXRzIGlmIG5lY2Vzc2FyeS4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsIGlmCisgICAgICAgIG5vbi16ZXJvLCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBvcmlnaW5hbCBkaXZpZGVuZC4KKworICAgICAgICBUaGlzIG9wZXJhdGlvbiB3aWxsIGZhaWwgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBpbnRlZ2VyIGRpdmlzaW9uCisgICAgICAgICh0aGF0IGlzLCBpZiBpbnRlZ2VyIGRpdmlzaW9uIG9uIHRoZSBzYW1lIHR3byBvcGVyYW5kcyB3b3VsZCBmYWlsLCB0aGUKKyAgICAgICAgcmVtYWluZGVyIGNhbm5vdCBiZSBjYWxjdWxhdGVkKS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwLjInKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMy42JyksIERlY2ltYWwoJzEuMycpKQorICAgICAgICBEZWNpbWFsKCcxLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcigyMiwgNikKKyAgICAgICAgRGVjaW1hbCgnNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoMjIpLCA2KQorICAgICAgICBEZWNpbWFsKCc0JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoMjIsIERlY2ltYWwoNikpCisgICAgICAgIERlY2ltYWwoJzQnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19tb2RfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgcmVtYWluZGVyX25lYXIoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgdG8gYmUgImEgLSBiICogbiIsIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGUgZXhhY3QKKyAgICAgICAgdmFsdWUgb2YgInggLyBiIiAoaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUKKyAgICAgICAgaXMgY2hvc2VuKS4gIElmIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gMCB0aGVuIGl0cyBzaWduIHdpbGwgYmUgdGhlCisgICAgICAgIHNpZ24gb2YgYS4KKworICAgICAgICBUaGlzIG9wZXJhdGlvbiB3aWxsIGZhaWwgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBpbnRlZ2VyIGRpdmlzaW9uCisgICAgICAgICh0aGF0IGlzLCBpZiBpbnRlZ2VyIGRpdmlzaW9uIG9uIHRoZSBzYW1lIHR3byBvcGVyYW5kcyB3b3VsZCBmYWlsLCB0aGUKKyAgICAgICAgcmVtYWluZGVyIGNhbm5vdCBiZSBjYWxjdWxhdGVkKS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0wLjknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzYnKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwLjInKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMycpKQorICAgICAgICBEZWNpbWFsKCcwLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzMuNicpLCBEZWNpbWFsKCcxLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoMywgMTEpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMyksIDExKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcigzLCBEZWNpbWFsKDExKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5yZW1haW5kZXJfbmVhcihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgcm90YXRlKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIGEgcm90YXRlZCBjb3B5IG9mIGEsIGIgdGltZXMuCisKKyAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgYSByb3RhdGVkIGNvcHkgb2YgdGhlIGRpZ2l0cyBpbgorICAgICAgICB0aGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuICBUaGUgbnVtYmVyIG9mIHBsYWNlcyBvZgorICAgICAgICByb3RhdGlvbiBpcyB0YWtlbiBmcm9tIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQsCisgICAgICAgIHdpdGggdGhlIHJvdGF0aW9uIGJlaW5nIHRvIHRoZSBsZWZ0IGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcworICAgICAgICBwb3NpdGl2ZSBvciB0byB0aGUgcmlnaHQgb3RoZXJ3aXNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzM0JyksIERlY2ltYWwoJzgnKSkKKyAgICAgICAgRGVjaW1hbCgnNDAwMDAwMDAzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnOScpKQorICAgICAgICBEZWNpbWFsKCcxMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCctMicpKQorICAgICAgICBEZWNpbWFsKCc4OTEyMzQ1NjcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxMjM0NTY3ODknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnKzInKSkKKyAgICAgICAgRGVjaW1hbCgnMzQ1Njc4OTEyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoMTMzMzMzMywgMSkKKyAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKDEzMzMzMzMpLCAxKQorICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKDEzMzMzMzMsIERlY2ltYWwoMSkpCisgICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnJvdGF0ZShiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgc2FtZV9xdWFudHVtKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgdGhlIHR3byBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIGV4cG9uZW50LgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgbmV2ZXIgYWZmZWN0ZWQgYnkgZWl0aGVyIHRoZSBzaWduIG9yIHRoZSBjb2VmZmljaWVudCBvZgorICAgICAgICBlaXRoZXIgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDAxJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMScpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCdJbmYnKSwgRGVjaW1hbCgnLUluZicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKDEwMDAwLCAtMSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDAwKSwgLTEpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oMTAwMDAsIERlY2ltYWwoLTEpKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5zYW1lX3F1YW50dW0oYikKKworICAgIGRlZiBzY2FsZWIgKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlIGl0cyBleHAuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCctMicpKQorICAgICAgICBEZWNpbWFsKCcwLjA3NTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnNy41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCc3LjUwRSszJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoMSwgNCkKKyAgICAgICAgRGVjaW1hbCgnMUUrNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoMSksIDQpCisgICAgICAgIERlY2ltYWwoJzFFKzQnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYigxLCBEZWNpbWFsKDQpKQorICAgICAgICBEZWNpbWFsKCcxRSs0JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNjYWxlYihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgc2hpZnQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgYSBzaGlmdGVkIGNvcHkgb2YgYSwgYiB0aW1lcy4KKworICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBhIHNoaWZ0ZWQgY29weSBvZiB0aGUgZGlnaXRzCisgICAgICAgIGluIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4gIFRoZSBudW1iZXIgb2YgcGxhY2VzCisgICAgICAgIHRvIHNoaWZ0IGlzIHRha2VuIGZyb20gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwKKyAgICAgICAgd2l0aCB0aGUgc2hpZnQgYmVpbmcgdG8gdGhlIGxlZnQgaWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzCisgICAgICAgIHBvc2l0aXZlIG9yIHRvIHRoZSByaWdodCBvdGhlcndpc2UuICBEaWdpdHMgc2hpZnRlZCBpbnRvIHRoZQorICAgICAgICBjb2VmZmljaWVudCBhcmUgemVyb3MuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCczNCcpLCBEZWNpbWFsKCc4JykpCisgICAgICAgIERlY2ltYWwoJzQwMDAwMDAwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnOScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnLTInKSkKKyAgICAgICAgRGVjaW1hbCgnMTIzNDU2NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTIzNDU2Nzg5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnKzInKSkKKyAgICAgICAgRGVjaW1hbCgnMzQ1Njc4OTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdCg4ODg4ODg4OCwgMikKKyAgICAgICAgRGVjaW1hbCgnODg4ODg4ODAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKDg4ODg4ODg4KSwgMikKKyAgICAgICAgRGVjaW1hbCgnODg4ODg4ODAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdCg4ODg4ODg4OCwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnODg4ODg4ODAwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNoaWZ0KGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBzcXJ0KHNlbGYsIGEpOgorICAgICAgICAiIiJTcXVhcmUgcm9vdCBvZiBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgdG8gY29udGV4dCBwcmVjaXNpb24uCisKKyAgICAgICAgSWYgdGhlIHJlc3VsdCBtdXN0IGJlIGluZXhhY3QsIGl0IGlzIHJvdW5kZWQgdXNpbmcgdGhlIHJvdW5kLWhhbGYtZXZlbgorICAgICAgICBhbGdvcml0aG0uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCctMCcpKQorICAgICAgICBEZWNpbWFsKCctMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcwLjM5JykpCisgICAgICAgIERlY2ltYWwoJzAuNjI0NDk5ODAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMS4wJykpCisgICAgICAgIERlY2ltYWwoJzEuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxLjAwJykpCisgICAgICAgIERlY2ltYWwoJzEuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCc3JykpCisgICAgICAgIERlY2ltYWwoJzIuNjQ1NzUxMzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMy4xNjIyNzc2NicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydCgyKQorICAgICAgICBEZWNpbWFsKCcxLjQxNDIxMzU2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wcmVjCisgICAgICAgIDkKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNxcnQoY29udGV4dD1zZWxmKQorCisgICAgZGVmIHN1YnRyYWN0KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG9wZXJhbmRzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCgnMS4zJyksIERlY2ltYWwoJzEuMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4yMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCgnMS4zJyksIERlY2ltYWwoJzEuMzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4wMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCgnMS4zJyksIERlY2ltYWwoJzIuMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuNzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KDgsIDUpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoOCksIDUpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KDgsIERlY2ltYWwoNSkpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19zdWJfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgdG9fZW5nX3N0cmluZyhzZWxmLCBhKToKKyAgICAgICAgIiIiQ29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uCisKKyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS50b19lbmdfc3RyaW5nKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiB0b19zY2lfc3RyaW5nKHNlbGYsIGEpOgorICAgICAgICAiIiJDb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi4KKworICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgY29udGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLl9fc3RyX18oY29udGV4dD1zZWxmKQorCisgICAgZGVmIHRvX2ludGVncmFsX2V4YWN0KHNlbGYsIGEpOgorICAgICAgICAiIiJSb3VuZHMgdG8gYW4gaW50ZWdlci4KKworICAgICAgICBXaGVuIHRoZSBvcGVyYW5kIGhhcyBhIG5lZ2F0aXZlIGV4cG9uZW50LCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCisgICAgICAgIGFzIHVzaW5nIHRoZSBxdWFudGl6ZSgpIG9wZXJhdGlvbiB1c2luZyB0aGUgZ2l2ZW4gb3BlcmFuZCBhcyB0aGUKKyAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KKyAgICAgICAgb2YgdGhlIG9wZXJhbmQgYXMgdGhlIHByZWNpc2lvbiBzZXR0aW5nOyBJbmV4YWN0IGFuZCBSb3VuZGVkIGZsYWdzCisgICAgICAgIGFyZSBhbGxvd2VkIGluIHRoaXMgb3BlcmF0aW9uLiAgVGhlIHJvdW5kaW5nIG1vZGUgaXMgdGFrZW4gZnJvbSB0aGUKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDAuMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnLTEwMS41JykpCisgICAgICAgIERlY2ltYWwoJy0xMDInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwRSs1JykpCisgICAgICAgIERlY2ltYWwoJzEuMEUrNicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnNy44OUUrNzcnKSkKKyAgICAgICAgRGVjaW1hbCgnNy44OUUrNzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnRvX2ludGVncmFsX2V4YWN0KGNvbnRleHQ9c2VsZikKKworICAgIGRlZiB0b19pbnRlZ3JhbF92YWx1ZShzZWxmLCBhKToKKyAgICAgICAgIiIiUm91bmRzIHRvIGFuIGludGVnZXIuCisKKyAgICAgICAgV2hlbiB0aGUgb3BlcmFuZCBoYXMgYSBuZWdhdGl2ZSBleHBvbmVudCwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQorICAgICAgICBhcyB1c2luZyB0aGUgcXVhbnRpemUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCisgICAgICAgIGxlZnQtaGFuZC1vcGVyYW5kLCAxRSswIGFzIHRoZSByaWdodC1oYW5kLW9wZXJhbmQsIGFuZCB0aGUgcHJlY2lzaW9uCisgICAgICAgIG9mIHRoZSBvcGVyYW5kIGFzIHRoZSBwcmVjaXNpb24gc2V0dGluZywgZXhjZXB0IHRoYXQgbm8gZmxhZ3Mgd2lsbAorICAgICAgICBiZSBzZXQuICBUaGUgcm91bmRpbmcgbW9kZSBpcyB0YWtlbiBmcm9tIHRoZSBjb250ZXh0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMC4wJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCctMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTBFKzUnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCc3Ljg5RSs3NycpKQorICAgICAgICBEZWNpbWFsKCc3Ljg5RSs3NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnLUluZicpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEudG9faW50ZWdyYWxfdmFsdWUoY29udGV4dD1zZWxmKQorCisgICAgIyB0aGUgbWV0aG9kIG5hbWUgY2hhbmdlZCwgYnV0IHdlIHByb3ZpZGUgYWxzbyB0aGUgb2xkIG9uZSwgZm9yIGNvbXBhdGliaWxpdHkKKyAgICB0b19pbnRlZ3JhbCA9IHRvX2ludGVncmFsX3ZhbHVlCisKK2NsYXNzIF9Xb3JrUmVwKG9iamVjdCk6CisgICAgX19zbG90c19fID0gKCdzaWduJywnaW50JywnZXhwJykKKyAgICAjIHNpZ246IDAgb3IgMQorICAgICMgaW50OiAgaW50CisgICAgIyBleHA6ICBOb25lLCBpbnQsIG9yIHN0cmluZworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPU5vbmUpOgorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5zaWduID0gTm9uZQorICAgICAgICAgICAgc2VsZi5pbnQgPSAwCisgICAgICAgICAgICBzZWxmLmV4cCA9IE5vbmUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHNlbGYuc2lnbiA9IHZhbHVlLl9zaWduCisgICAgICAgICAgICBzZWxmLmludCA9IGludCh2YWx1ZS5faW50KQorICAgICAgICAgICAgc2VsZi5leHAgPSB2YWx1ZS5fZXhwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSkKKyAgICAgICAgICAgIHNlbGYuc2lnbiA9IHZhbHVlWzBdCisgICAgICAgICAgICBzZWxmLmludCA9IHZhbHVlWzFdCisgICAgICAgICAgICBzZWxmLmV4cCA9IHZhbHVlWzJdCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiKCVyLCAlciwgJXIpIiAlIChzZWxmLnNpZ24sIHNlbGYuaW50LCBzZWxmLmV4cCkKKworICAgIF9fc3RyX18gPSBfX3JlcHJfXworCisKKworZGVmIF9ub3JtYWxpemUob3AxLCBvcDIsIHByZWMgPSAwKToKKyAgICAiIiJOb3JtYWxpemVzIG9wMSwgb3AyIHRvIGhhdmUgdGhlIHNhbWUgZXhwIGFuZCBsZW5ndGggb2YgY29lZmZpY2llbnQuCisKKyAgICBEb25lIGR1cmluZyBhZGRpdGlvbi4KKyAgICAiIiIKKyAgICBpZiBvcDEuZXhwIDwgb3AyLmV4cDoKKyAgICAgICAgdG1wID0gb3AyCisgICAgICAgIG90aGVyID0gb3AxCisgICAgZWxzZToKKyAgICAgICAgdG1wID0gb3AxCisgICAgICAgIG90aGVyID0gb3AyCisKKyAgICAjIExldCBleHAgPSBtaW4odG1wLmV4cCAtIDEsIHRtcC5hZGp1c3RlZCgpIC0gcHJlY2lzaW9uIC0gMSkuCisgICAgIyBUaGVuIGFkZGluZyAxMCoqZXhwIHRvIHRtcCBoYXMgdGhlIHNhbWUgZWZmZWN0IChhZnRlciByb3VuZGluZykKKyAgICAjIGFzIGFkZGluZyBhbnkgcG9zaXRpdmUgcXVhbnRpdHkgc21hbGxlciB0aGFuIDEwKipleHA7IHNpbWlsYXJseQorICAgICMgZm9yIHN1YnRyYWN0aW9uLiAgU28gaWYgb3RoZXIgaXMgc21hbGxlciB0aGFuIDEwKipleHAgd2UgcmVwbGFjZQorICAgICMgaXQgd2l0aCAxMCoqZXhwLiAgVGhpcyBhdm9pZHMgdG1wLmV4cCAtIG90aGVyLmV4cCBnZXR0aW5nIHRvbyBsYXJnZS4KKyAgICB0bXBfbGVuID0gbGVuKHN0cih0bXAuaW50KSkKKyAgICBvdGhlcl9sZW4gPSBsZW4oc3RyKG90aGVyLmludCkpCisgICAgZXhwID0gdG1wLmV4cCArIG1pbigtMSwgdG1wX2xlbiAtIHByZWMgLSAyKQorICAgIGlmIG90aGVyX2xlbiArIG90aGVyLmV4cCAtIDEgPCBleHA6CisgICAgICAgIG90aGVyLmludCA9IDEKKyAgICAgICAgb3RoZXIuZXhwID0gZXhwCisKKyAgICB0bXAuaW50ICo9IDEwICoqICh0bXAuZXhwIC0gb3RoZXIuZXhwKQorICAgIHRtcC5leHAgPSBvdGhlci5leHAKKyAgICByZXR1cm4gb3AxLCBvcDIKKworIyMjIyMgSW50ZWdlciBhcml0aG1ldGljIGZ1bmN0aW9ucyB1c2VkIGJ5IGxuLCBsb2cxMCwgZXhwIGFuZCBfX3Bvd19fICMjIyMjCisKK19uYml0cyA9IGludC5iaXRfbGVuZ3RoCisKK2RlZiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QobiwgZSk6CisgICAgIiIiIEdpdmVuIGludGVnZXJzIG4gYW5kIGUsIHJldHVybiBuICogMTAqKmUgaWYgaXQncyBhbiBpbnRlZ2VyLCBlbHNlIE5vbmUuCisKKyAgICBUaGUgY29tcHV0YXRpb24gaXMgZGVzaWduZWQgdG8gYXZvaWQgY29tcHV0aW5nIGxhcmdlIHBvd2VycyBvZiAxMAorICAgIHVubmVjZXNzYXJpbHkuCisKKyAgICA+Pj4gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KDMsIDQpCisgICAgMzAwMDAKKyAgICA+Pj4gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KDMwMCwgLTk5OTk5OTk5OSkgICMgcmV0dXJucyBOb25lCisKKyAgICAiIiIKKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiAwCisgICAgZWxpZiBlID49IDA6CisgICAgICAgIHJldHVybiBuICogMTAqKmUKKyAgICBlbHNlOgorICAgICAgICAjIHZhbF9uID0gbGFyZ2VzdCBwb3dlciBvZiAxMCBkaXZpZGluZyBuLgorICAgICAgICBzdHJfbiA9IHN0cihhYnMobikpCisgICAgICAgIHZhbF9uID0gbGVuKHN0cl9uKSAtIGxlbihzdHJfbi5yc3RyaXAoJzAnKSkKKyAgICAgICAgcmV0dXJuIE5vbmUgaWYgdmFsX24gPCAtZSBlbHNlIG4gLy8gMTAqKi1lCisKK2RlZiBfc3FydF9uZWFyZXN0KG4sIGEpOgorICAgICIiIkNsb3Nlc3QgaW50ZWdlciB0byB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHBvc2l0aXZlIGludGVnZXIgbi4gIGEgaXMKKyAgICBhbiBpbml0aWFsIGFwcHJveGltYXRpb24gdG8gdGhlIHNxdWFyZSByb290LiAgQW55IHBvc2l0aXZlIGludGVnZXIKKyAgICB3aWxsIGRvIGZvciBhLCBidXQgdGhlIGNsb3NlciBhIGlzIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiBuIHRoZQorICAgIGZhc3RlciBjb252ZXJnZW5jZSB3aWxsIGJlLgorCisgICAgIiIiCisgICAgaWYgbiA8PSAwIG9yIGEgPD0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQm90aCBhcmd1bWVudHMgdG8gX3NxcnRfbmVhcmVzdCBzaG91bGQgYmUgcG9zaXRpdmUuIikKKworICAgIGI9MAorICAgIHdoaWxlIGEgIT0gYjoKKyAgICAgICAgYiwgYSA9IGEsIGEtLW4vL2E+PjEKKyAgICByZXR1cm4gYQorCitkZWYgX3JzaGlmdF9uZWFyZXN0KHgsIHNoaWZ0KToKKyAgICAiIiJHaXZlbiBhbiBpbnRlZ2VyIHggYW5kIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBzaGlmdCwgcmV0dXJuIGNsb3Nlc3QKKyAgICBpbnRlZ2VyIHRvIHggLyAyKipzaGlmdDsgdXNlIHJvdW5kLXRvLWV2ZW4gaW4gY2FzZSBvZiBhIHRpZS4KKworICAgICIiIgorICAgIGIsIHEgPSAxIDw8IHNoaWZ0LCB4ID4+IHNoaWZ0CisgICAgcmV0dXJuIHEgKyAoMiooeCAmIChiLTEpKSArIChxJjEpID4gYikKKworZGVmIF9kaXZfbmVhcmVzdChhLCBiKToKKyAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gYS9iLCBhIGFuZCBiIHBvc2l0aXZlIGludGVnZXJzOyByb3VuZHMgdG8gZXZlbgorICAgIGluIHRoZSBjYXNlIG9mIGEgdGllLgorCisgICAgIiIiCisgICAgcSwgciA9IGRpdm1vZChhLCBiKQorICAgIHJldHVybiBxICsgKDIqciArIChxJjEpID4gYikKKworZGVmIF9pbG9nKHgsIE0sIEwgPSA4KToKKyAgICAiIiJJbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gTSpsb2coeC9NKSwgd2l0aCBhYnNvbHV0ZSBlcnJvciBib3VuZGFibGUKKyAgICBpbiB0ZXJtcyBvbmx5IG9mIHgvTS4KKworICAgIEdpdmVuIHBvc2l0aXZlIGludGVnZXJzIHggYW5kIE0sIHJldHVybiBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8KKyAgICBNICogbG9nKHgvTSkuICBGb3IgTCA9IDggYW5kIDAuMSA8PSB4L00gPD0gMTAgdGhlIGRpZmZlcmVuY2UKKyAgICBiZXR3ZWVuIHRoZSBhcHByb3hpbWF0aW9uIGFuZCB0aGUgZXhhY3QgcmVzdWx0IGlzIGF0IG1vc3QgMjIuICBGb3IKKyAgICBMID0gOCBhbmQgMS4wIDw9IHgvTSA8PSAxMC4wIHRoZSBkaWZmZXJlbmNlIGlzIGF0IG1vc3QgMTUuICBJbgorICAgIGJvdGggY2FzZXMgdGhlc2UgYXJlIHVwcGVyIGJvdW5kcyBvbiB0aGUgZXJyb3I7IGl0IHdpbGwgdXN1YWxseSBiZQorICAgIG11Y2ggc21hbGxlci4iIiIKKworICAgICMgVGhlIGJhc2ljIGFsZ29yaXRobSBpcyB0aGUgZm9sbG93aW5nOiBsZXQgbG9nMXAgYmUgdGhlIGZ1bmN0aW9uCisgICAgIyBsb2cxcCh4KSA9IGxvZygxK3gpLiAgVGhlbiBsb2coeC9NKSA9IGxvZzFwKCh4LU0pL00pLiAgV2UgdXNlCisgICAgIyB0aGUgcmVkdWN0aW9uCisgICAgIworICAgICMgICAgbG9nMXAoeSkgPSAyKmxvZzFwKHkvKDErc3FydCgxK3kpKSkKKyAgICAjCisgICAgIyByZXBlYXRlZGx5IHVudGlsIHRoZSBhcmd1bWVudCB0byBsb2cxcCBpcyBzbWFsbCAoPCAyKiotTCBpbgorICAgICMgYWJzb2x1dGUgdmFsdWUpLiAgRm9yIHNtYWxsIHkgd2UgY2FuIHVzZSB0aGUgVGF5bG9yIHNlcmllcworICAgICMgZXhwYW5zaW9uCisgICAgIworICAgICMgICAgbG9nMXAoeSkgfiB5IC0geSoqMi8yICsgeSoqMy8zIC0gLi4uIC0gKC15KSoqVC9UCisgICAgIworICAgICMgdHJ1bmNhdGluZyBhdCBUIHN1Y2ggdGhhdCB5KipUIGlzIHNtYWxsIGVub3VnaC4gIFRoZSB3aG9sZQorICAgICMgY29tcHV0YXRpb24gaXMgY2FycmllZCBvdXQgaW4gYSBmb3JtIG9mIGZpeGVkLXBvaW50IGFyaXRobWV0aWMsCisgICAgIyB3aXRoIGEgcmVhbCBudW1iZXIgeiBiZWluZyByZXByZXNlbnRlZCBieSBhbiBpbnRlZ2VyCisgICAgIyBhcHByb3hpbWF0aW9uIHRvIHoqTS4gIFRvIGF2b2lkIGxvc3Mgb2YgcHJlY2lzaW9uLCB0aGUgeSBiZWxvdworICAgICMgaXMgYWN0dWFsbHkgYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIDIqKlIqeSpNLCB3aGVyZSBSIGlzIHRoZQorICAgICMgbnVtYmVyIG9mIHJlZHVjdGlvbnMgcGVyZm9ybWVkIHNvIGZhci4KKworICAgIHkgPSB4LU0KKyAgICAjIGFyZ3VtZW50IHJlZHVjdGlvbjsgUiA9IG51bWJlciBvZiByZWR1Y3Rpb25zIHBlcmZvcm1lZAorICAgIFIgPSAwCisgICAgd2hpbGUgKFIgPD0gTCBhbmQgYWJzKHkpIDw8IEwtUiA+PSBNIG9yCisgICAgICAgICAgIFIgPiBMIGFuZCBhYnMoeSkgPj4gUi1MID49IE0pOgorICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KChNKnkpIDw8IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgTSArIF9zcXJ0X25lYXJlc3QoTSooTStfcnNoaWZ0X25lYXJlc3QoeSwgUikpLCBNKSkKKyAgICAgICAgUiArPSAxCisKKyAgICAjIFRheWxvciBzZXJpZXMgd2l0aCBUIHRlcm1zCisgICAgVCA9IC1pbnQoLTEwKmxlbihzdHIoTSkpLy8oMypMKSkKKyAgICB5c2hpZnQgPSBfcnNoaWZ0X25lYXJlc3QoeSwgUikKKyAgICB3ID0gX2Rpdl9uZWFyZXN0KE0sIFQpCisgICAgZm9yIGsgaW4gcmFuZ2UoVC0xLCAwLCAtMSk6CisgICAgICAgIHcgPSBfZGl2X25lYXJlc3QoTSwgaykgLSBfZGl2X25lYXJlc3QoeXNoaWZ0KncsIE0pCisKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KHcqeSwgTSkKKworZGVmIF9kbG9nMTAoYywgZSwgcCk6CisgICAgIiIiR2l2ZW4gaW50ZWdlcnMgYywgZSBhbmQgcCB3aXRoIGMgPiAwLCBwID49IDAsIGNvbXB1dGUgYW4gaW50ZWdlcgorICAgIGFwcHJveGltYXRpb24gdG8gMTAqKnAgKiBsb2cxMChjKjEwKiplKSwgd2l0aCBhbiBhYnNvbHV0ZSBlcnJvciBvZgorICAgIGF0IG1vc3QgMS4gIEFzc3VtZXMgdGhhdCBjKjEwKiplIGlzIG5vdCBleGFjdGx5IDEuIiIiCisKKyAgICAjIGluY3JlYXNlIHByZWNpc2lvbiBieSAyOyBjb21wZW5zYXRlIGZvciB0aGlzIGJ5IGRpdmlkaW5nCisgICAgIyBmaW5hbCByZXN1bHQgYnkgMTAwCisgICAgcCArPSAyCisKKyAgICAjIHdyaXRlIGMqMTAqKmUgYXMgZCoxMCoqZiB3aXRoIGVpdGhlcjoKKyAgICAjICAgZiA+PSAwIGFuZCAxIDw9IGQgPD0gMTAsIG9yCisgICAgIyAgIGYgPD0gMCBhbmQgMC4xIDw9IGQgPD0gMS4KKyAgICAjIFRodXMgZm9yIGMqMTAqKmUgY2xvc2UgdG8gMSwgZiA9IDAKKyAgICBsID0gbGVuKHN0cihjKSkKKyAgICBmID0gZStsIC0gKGUrbCA+PSAxKQorCisgICAgaWYgcCA+IDA6CisgICAgICAgIE0gPSAxMCoqcAorICAgICAgICBrID0gZStwLWYKKyAgICAgICAgaWYgayA+PSAwOgorICAgICAgICAgICAgYyAqPSAxMCoqaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYyA9IF9kaXZfbmVhcmVzdChjLCAxMCoqLWspCisKKyAgICAgICAgbG9nX2QgPSBfaWxvZyhjLCBNKSAjIGVycm9yIDwgNSArIDIyID0gMjcKKyAgICAgICAgbG9nXzEwID0gX2xvZzEwX2RpZ2l0cyhwKSAjIGVycm9yIDwgMQorICAgICAgICBsb2dfZCA9IF9kaXZfbmVhcmVzdChsb2dfZCpNLCBsb2dfMTApCisgICAgICAgIGxvZ190ZW5wb3dlciA9IGYqTSAjIGV4YWN0CisgICAgZWxzZToKKyAgICAgICAgbG9nX2QgPSAwICAjIGVycm9yIDwgMi4zMQorICAgICAgICBsb2dfdGVucG93ZXIgPSBfZGl2X25lYXJlc3QoZiwgMTAqKi1wKSAjIGVycm9yIDwgMC41CisKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KGxvZ190ZW5wb3dlcitsb2dfZCwgMTAwKQorCitkZWYgX2Rsb2coYywgZSwgcCk6CisgICAgIiIiR2l2ZW4gaW50ZWdlcnMgYywgZSBhbmQgcCB3aXRoIGMgPiAwLCBjb21wdXRlIGFuIGludGVnZXIKKyAgICBhcHByb3hpbWF0aW9uIHRvIDEwKipwICogbG9nKGMqMTAqKmUpLCB3aXRoIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgYXQgbW9zdCAxLiAgQXNzdW1lcyB0aGF0IGMqMTAqKmUgaXMgbm90IGV4YWN0bHkgMS4iIiIKKworICAgICMgSW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDIuIFRoZSBwcmVjaXNpb24gaW5jcmVhc2UgaXMgY29tcGVuc2F0ZWQKKyAgICAjIGZvciBhdCB0aGUgZW5kIHdpdGggYSBkaXZpc2lvbiBieSAxMDAuCisgICAgcCArPSAyCisKKyAgICAjIHJld3JpdGUgYyoxMCoqZSBhcyBkKjEwKipmIHdpdGggZWl0aGVyIGYgPj0gMCBhbmQgMSA8PSBkIDw9IDEwLAorICAgICMgb3IgZiA8PSAwIGFuZCAwLjEgPD0gZCA8PSAxLiAgVGhlbiB3ZSBjYW4gY29tcHV0ZSAxMCoqcCAqIGxvZyhjKjEwKiplKQorICAgICMgYXMgMTAqKnAgKiBsb2coZCkgKyAxMCoqcCpmICogbG9nKDEwKS4KKyAgICBsID0gbGVuKHN0cihjKSkKKyAgICBmID0gZStsIC0gKGUrbCA+PSAxKQorCisgICAgIyBjb21wdXRlIGFwcHJveGltYXRpb24gdG8gMTAqKnAqbG9nKGQpLCB3aXRoIGVycm9yIDwgMjcKKyAgICBpZiBwID4gMDoKKyAgICAgICAgayA9IGUrcC1mCisgICAgICAgIGlmIGsgPj0gMDoKKyAgICAgICAgICAgIGMgKj0gMTAqKmsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGMgPSBfZGl2X25lYXJlc3QoYywgMTAqKi1rKSAgIyBlcnJvciBvZiA8PSAwLjUgaW4gYworCisgICAgICAgICMgX2lsb2cgbWFnbmlmaWVzIGV4aXN0aW5nIGVycm9yIGluIGMgYnkgYSBmYWN0b3Igb2YgYXQgbW9zdCAxMAorICAgICAgICBsb2dfZCA9IF9pbG9nKGMsIDEwKipwKSAjIGVycm9yIDwgNSArIDIyID0gMjcKKyAgICBlbHNlOgorICAgICAgICAjIHAgPD0gMDoganVzdCBhcHByb3hpbWF0ZSB0aGUgd2hvbGUgdGhpbmcgYnkgMDsgZXJyb3IgPCAyLjMxCisgICAgICAgIGxvZ19kID0gMAorCisgICAgIyBjb21wdXRlIGFwcHJveGltYXRpb24gdG8gZioxMCoqcCpsb2coMTApLCB3aXRoIGVycm9yIDwgMTEuCisgICAgaWYgZjoKKyAgICAgICAgZXh0cmEgPSBsZW4oc3RyKGFicyhmKSkpLTEKKyAgICAgICAgaWYgcCArIGV4dHJhID49IDA6CisgICAgICAgICAgICAjIGVycm9yIGluIGYgKiBfbG9nMTBfZGlnaXRzKHArZXh0cmEpIDwgfGZ8ICogMSA9IHxmfAorICAgICAgICAgICAgIyBhZnRlciBkaXZpc2lvbiwgZXJyb3IgPCB8ZnwvMTAqKmV4dHJhICsgMC41IDwgMTAgKyAwLjUgPCAxMQorICAgICAgICAgICAgZl9sb2dfdGVuID0gX2Rpdl9uZWFyZXN0KGYqX2xvZzEwX2RpZ2l0cyhwK2V4dHJhKSwgMTAqKmV4dHJhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZl9sb2dfdGVuID0gMAorICAgIGVsc2U6CisgICAgICAgIGZfbG9nX3RlbiA9IDAKKworICAgICMgZXJyb3IgaW4gc3VtIDwgMTErMjcgPSAzODsgZXJyb3IgYWZ0ZXIgZGl2aXNpb24gPCAwLjM4ICsgMC41IDwgMQorICAgIHJldHVybiBfZGl2X25lYXJlc3QoZl9sb2dfdGVuICsgbG9nX2QsIDEwMCkKKworY2xhc3MgX0xvZzEwTWVtb2l6ZShvYmplY3QpOgorICAgICIiIkNsYXNzIHRvIGNvbXB1dGUsIHN0b3JlLCBhbmQgYWxsb3cgcmV0cmlldmFsIG9mLCBkaWdpdHMgb2YgdGhlCisgICAgY29uc3RhbnQgbG9nKDEwKSA9IDIuMzAyNTg1Li4uLiAgVGhpcyBjb25zdGFudCBpcyBuZWVkZWQgYnkKKyAgICBEZWNpbWFsLmxuLCBEZWNpbWFsLmxvZzEwLCBEZWNpbWFsLmV4cCBhbmQgRGVjaW1hbC5fX3Bvd19fLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWdpdHMgPSAiMjMwMjU4NTA5Mjk5NDA0NTY4NDAxNzk5MTQ1NDY4NDM2NDIwNzYwMTEwMTQ4ODYiCisKKyAgICBkZWYgZ2V0ZGlnaXRzKHNlbGYsIHApOgorICAgICAgICAiIiJHaXZlbiBhbiBpbnRlZ2VyIHAgPj0gMCwgcmV0dXJuIGZsb29yKDEwKipwKSpsb2coMTApLgorCisgICAgICAgIEZvciBleGFtcGxlLCBzZWxmLmdldGRpZ2l0cygzKSByZXR1cm5zIDIzMDIuCisgICAgICAgICIiIgorICAgICAgICAjIGRpZ2l0cyBhcmUgc3RvcmVkIGFzIGEgc3RyaW5nLCBmb3IgcXVpY2sgY29udmVyc2lvbiB0bworICAgICAgICAjIGludGVnZXIgaW4gdGhlIGNhc2UgdGhhdCB3ZSd2ZSBhbHJlYWR5IGNvbXB1dGVkIGVub3VnaAorICAgICAgICAjIGRpZ2l0czsgdGhlIHN0b3JlZCBkaWdpdHMgc2hvdWxkIGFsd2F5cyBiZSBjb3JyZWN0CisgICAgICAgICMgKHRydW5jYXRlZCwgbm90IHJvdW5kZWQgdG8gbmVhcmVzdCkuCisgICAgICAgIGlmIHAgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicCBzaG91bGQgYmUgbm9ubmVnYXRpdmUiKQorCisgICAgICAgIGlmIHAgPj0gbGVuKHNlbGYuZGlnaXRzKToKKyAgICAgICAgICAgICMgY29tcHV0ZSBwKzMsIHArNiwgcCs5LCAuLi4gZGlnaXRzOyBjb250aW51ZSB1bnRpbCBhdAorICAgICAgICAgICAgIyBsZWFzdCBvbmUgb2YgdGhlIGV4dHJhIGRpZ2l0cyBpcyBub256ZXJvCisgICAgICAgICAgICBleHRyYSA9IDMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgIyBjb21wdXRlIHArZXh0cmEgZGlnaXRzLCBjb3JyZWN0IHRvIHdpdGhpbiAxdWxwCisgICAgICAgICAgICAgICAgTSA9IDEwKioocCtleHRyYSsyKQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IHN0cihfZGl2X25lYXJlc3QoX2lsb2coMTAqTSwgTSksIDEwMCkpCisgICAgICAgICAgICAgICAgaWYgZGlnaXRzWy1leHRyYTpdICE9ICcwJypleHRyYToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleHRyYSArPSAzCisgICAgICAgICAgICAjIGtlZXAgYWxsIHJlbGlhYmxlIGRpZ2l0cyBzbyBmYXI7IHJlbW92ZSB0cmFpbGluZyB6ZXJvcworICAgICAgICAgICAgIyBhbmQgbmV4dCBub256ZXJvIGRpZ2l0CisgICAgICAgICAgICBzZWxmLmRpZ2l0cyA9IGRpZ2l0cy5yc3RyaXAoJzAnKVs6LTFdCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5kaWdpdHNbOnArMV0pCisKK19sb2cxMF9kaWdpdHMgPSBfTG9nMTBNZW1vaXplKCkuZ2V0ZGlnaXRzCisKK2RlZiBfaWV4cCh4LCBNLCBMPTgpOgorICAgICIiIkdpdmVuIGludGVnZXJzIHggYW5kIE0sIE0gPiAwLCBzdWNoIHRoYXQgeC9NIGlzIHNtYWxsIGluIGFic29sdXRlCisgICAgdmFsdWUsIGNvbXB1dGUgYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIE0qZXhwKHgvTSkuICBGb3IgMCA8PQorICAgIHgvTSA8PSAyLjQsIHRoZSBhYnNvbHV0ZSBlcnJvciBpbiB0aGUgcmVzdWx0IGlzIGJvdW5kZWQgYnkgNjAgKGFuZAorICAgIGlzIHVzdWFsbHkgbXVjaCBzbWFsbGVyKS4iIiIKKworICAgICMgQWxnb3JpdGhtOiB0byBjb21wdXRlIGV4cCh6KSBmb3IgYSByZWFsIG51bWJlciB6LCBmaXJzdCBkaXZpZGUgegorICAgICMgYnkgYSBzdWl0YWJsZSBwb3dlciBSIG9mIDIgc28gdGhhdCB8ei8yKipSfCA8IDIqKi1MLiAgVGhlbgorICAgICMgY29tcHV0ZSBleHBtMSh6LzIqKlIpID0gZXhwKHovMioqUikgLSAxIHVzaW5nIHRoZSB1c3VhbCBUYXlsb3IKKyAgICAjIHNlcmllcworICAgICMKKyAgICAjICAgICBleHBtMSh4KSA9IHggKyB4KioyLzIhICsgeCoqMy8zISArIC4uLgorICAgICMKKyAgICAjIE5vdyB1c2UgdGhlIGlkZW50aXR5CisgICAgIworICAgICMgICAgIGV4cG0xKDJ4KSA9IGV4cG0xKHgpKihleHBtMSh4KSsyKQorICAgICMKKyAgICAjIFIgdGltZXMgdG8gY29tcHV0ZSB0aGUgc2VxdWVuY2UgZXhwbTEoei8yKipSKSwKKyAgICAjIGV4cG0xKHovMioqKFItMSkpLCAuLi4gLCBleHAoei8yKSwgZXhwKHopLgorCisgICAgIyBGaW5kIFIgc3VjaCB0aGF0IHgvMioqUi9NIDw9IDIqKi1MCisgICAgUiA9IF9uYml0cygoeDw8TCkvL00pCisKKyAgICAjIFRheWxvciBzZXJpZXMuICAoMioqTCkqKlQgPiBNCisgICAgVCA9IC1pbnQoLTEwKmxlbihzdHIoTSkpLy8oMypMKSkKKyAgICB5ID0gX2Rpdl9uZWFyZXN0KHgsIFQpCisgICAgTXNoaWZ0ID0gTTw8UgorICAgIGZvciBpIGluIHJhbmdlKFQtMSwgMCwgLTEpOgorICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KHgqKE1zaGlmdCArIHkpLCBNc2hpZnQgKiBpKQorCisgICAgIyBFeHBhbnNpb24KKyAgICBmb3IgayBpbiByYW5nZShSLTEsIC0xLCAtMSk6CisgICAgICAgIE1zaGlmdCA9IE08PChrKzIpCisgICAgICAgIHkgPSBfZGl2X25lYXJlc3QoeSooeStNc2hpZnQpLCBNc2hpZnQpCisKKyAgICByZXR1cm4gTSt5CisKK2RlZiBfZGV4cChjLCBlLCBwKToKKyAgICAiIiJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gdG8gZXhwKGMqMTAqKmUpLCB3aXRoIHAgZGVjaW1hbCBwbGFjZXMgb2YKKyAgICBwcmVjaXNpb24uCisKKyAgICBSZXR1cm5zIGludGVnZXJzIGQsIGYgc3VjaCB0aGF0OgorCisgICAgICAxMCoqKHAtMSkgPD0gZCA8PSAxMCoqcCwgYW5kCisgICAgICAoZC0xKSoxMCoqZiA8IGV4cChjKjEwKiplKSA8IChkKzEpKjEwKipmCisKKyAgICBJbiBvdGhlciB3b3JkcywgZCoxMCoqZiBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIGV4cChjKjEwKiplKSB3aXRoIHAKKyAgICBkaWdpdHMgb2YgcHJlY2lzaW9uLCBhbmQgd2l0aCBhbiBlcnJvciBpbiBkIG9mIGF0IG1vc3QgMS4gIFRoaXMgaXMKKyAgICBhbG1vc3QsIGJ1dCBub3QgcXVpdGUsIHRoZSBzYW1lIGFzIHRoZSBlcnJvciBiZWluZyA8IDF1bHA6IHdoZW4gZAorICAgID0gMTAqKihwLTEpIHRoZSBlcnJvciBjb3VsZCBiZSB1cCB0byAxMCB1bHAuIiIiCisKKyAgICAjIHdlJ2xsIGNhbGwgaWV4cCB3aXRoIE0gPSAxMCoqKHArMiksIGdpdmluZyBwKzMgZGlnaXRzIG9mIHByZWNpc2lvbgorICAgIHAgKz0gMgorCisgICAgIyBjb21wdXRlIGxvZygxMCkgd2l0aCBleHRyYSBwcmVjaXNpb24gPSBhZGp1c3RlZCBleHBvbmVudCBvZiBjKjEwKiplCisgICAgZXh0cmEgPSBtYXgoMCwgZSArIGxlbihzdHIoYykpIC0gMSkKKyAgICBxID0gcCArIGV4dHJhCisKKyAgICAjIGNvbXB1dGUgcXVvdGllbnQgYyoxMCoqZS8obG9nKDEwKSkgPSBjKjEwKiooZStxKS8obG9nKDEwKSoxMCoqcSksCisgICAgIyByb3VuZGluZyBkb3duCisgICAgc2hpZnQgPSBlK3EKKyAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICBjc2hpZnQgPSBjKjEwKipzaGlmdAorICAgIGVsc2U6CisgICAgICAgIGNzaGlmdCA9IGMvLzEwKiotc2hpZnQKKyAgICBxdW90LCByZW0gPSBkaXZtb2QoY3NoaWZ0LCBfbG9nMTBfZGlnaXRzKHEpKQorCisgICAgIyByZWR1Y2UgcmVtYWluZGVyIGJhY2sgdG8gb3JpZ2luYWwgcHJlY2lzaW9uCisgICAgcmVtID0gX2Rpdl9uZWFyZXN0KHJlbSwgMTAqKmV4dHJhKQorCisgICAgIyBlcnJvciBpbiByZXN1bHQgb2YgX2lleHAgPCAxMjA7ICBlcnJvciBhZnRlciBkaXZpc2lvbiA8IDAuNjIKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KF9pZXhwKHJlbSwgMTAqKnApLCAxMDAwKSwgcXVvdCAtIHAgKyAzCisKK2RlZiBfZHBvd2VyKHhjLCB4ZSwgeWMsIHllLCBwKToKKyAgICAiIiJHaXZlbiBpbnRlZ2VycyB4YywgeGUsIHljIGFuZCB5ZSByZXByZXNlbnRpbmcgRGVjaW1hbHMgeCA9IHhjKjEwKip4ZSBhbmQKKyAgICB5ID0geWMqMTAqKnllLCBjb21wdXRlIHgqKnkuICBSZXR1cm5zIGEgcGFpciBvZiBpbnRlZ2VycyAoYywgZSkgc3VjaCB0aGF0OgorCisgICAgICAxMCoqKHAtMSkgPD0gYyA8PSAxMCoqcCwgYW5kCisgICAgICAoYy0xKSoxMCoqZSA8IHgqKnkgPCAoYysxKSoxMCoqZQorCisgICAgaW4gb3RoZXIgd29yZHMsIGMqMTAqKmUgaXMgYW4gYXBwcm94aW1hdGlvbiB0byB4Kip5IHdpdGggcCBkaWdpdHMKKyAgICBvZiBwcmVjaXNpb24sIGFuZCB3aXRoIGFuIGVycm9yIGluIGMgb2YgYXQgbW9zdCAxLiAgKFRoaXMgaXMKKyAgICBhbG1vc3QsIGJ1dCBub3QgcXVpdGUsIHRoZSBzYW1lIGFzIHRoZSBlcnJvciBiZWluZyA8IDF1bHA6IHdoZW4gYworICAgID09IDEwKioocC0xKSB3ZSBjYW4gb25seSBndWFyYW50ZWUgZXJyb3IgPCAxMHVscC4pCisKKyAgICBXZSBhc3N1bWUgdGhhdDogeCBpcyBwb3NpdGl2ZSBhbmQgbm90IGVxdWFsIHRvIDEsIGFuZCB5IGlzIG5vbnplcm8uCisgICAgIiIiCisKKyAgICAjIEZpbmQgYiBzdWNoIHRoYXQgMTAqKihiLTEpIDw9IHx5fCA8PSAxMCoqYgorICAgIGIgPSBsZW4oc3RyKGFicyh5YykpKSArIHllCisKKyAgICAjIGxvZyh4KSA9IGx4YyoxMCoqKC1wLWItMSksIHRvIHArYisxIHBsYWNlcyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludAorICAgIGx4YyA9IF9kbG9nKHhjLCB4ZSwgcCtiKzEpCisKKyAgICAjIGNvbXB1dGUgcHJvZHVjdCB5KmxvZyh4KSA9IHljKmx4YyoxMCoqKC1wLWItMSt5ZSkgPSBwYyoxMCoqKC1wLTEpCisgICAgc2hpZnQgPSB5ZS1iCisgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgcGMgPSBseGMqeWMqMTAqKnNoaWZ0CisgICAgZWxzZToKKyAgICAgICAgcGMgPSBfZGl2X25lYXJlc3QobHhjKnljLCAxMCoqLXNoaWZ0KQorCisgICAgaWYgcGMgPT0gMDoKKyAgICAgICAgIyB3ZSBwcmVmZXIgYSByZXN1bHQgdGhhdCBpc24ndCBleGFjdGx5IDE7IHRoaXMgbWFrZXMgaXQKKyAgICAgICAgIyBlYXNpZXIgdG8gY29tcHV0ZSBhIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdCBpbiBfX3Bvd19fCisgICAgICAgIGlmICgobGVuKHN0cih4YykpICsgeGUgPj0gMSkgPT0gKHljID4gMCkpOiAjIGlmIHgqKnkgPiAxOgorICAgICAgICAgICAgY29lZmYsIGV4cCA9IDEwKioocC0xKSsxLCAxLXAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvZWZmLCBleHAgPSAxMCoqcC0xLCAtcAorICAgIGVsc2U6CisgICAgICAgIGNvZWZmLCBleHAgPSBfZGV4cChwYywgLShwKzEpLCBwKzEpCisgICAgICAgIGNvZWZmID0gX2Rpdl9uZWFyZXN0KGNvZWZmLCAxMCkKKyAgICAgICAgZXhwICs9IDEKKworICAgIHJldHVybiBjb2VmZiwgZXhwCisKK2RlZiBfbG9nMTBfbGIoYywgY29ycmVjdGlvbiA9IHsKKyAgICAgICAgJzEnOiAxMDAsICcyJzogNzAsICczJzogNTMsICc0JzogNDAsICc1JzogMzEsCisgICAgICAgICc2JzogMjMsICc3JzogMTYsICc4JzogMTAsICc5JzogNX0pOgorICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgMTAwKmxvZzEwKGMpIGZvciBhIHBvc2l0aXZlIGludGVnZXIgYy4iIiIKKyAgICBpZiBjIDw9IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBhcmd1bWVudCB0byBfbG9nMTBfbGIgc2hvdWxkIGJlIG5vbm5lZ2F0aXZlLiIpCisgICAgc3RyX2MgPSBzdHIoYykKKyAgICByZXR1cm4gMTAwKmxlbihzdHJfYykgLSBjb3JyZWN0aW9uW3N0cl9jWzBdXQorCisjIyMjIyBIZWxwZXIgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PUZhbHNlLCBhbGxvd19mbG9hdD1GYWxzZSk6CisgICAgIiIiQ29udmVydCBvdGhlciB0byBEZWNpbWFsLgorCisgICAgVmVyaWZpZXMgdGhhdCBpdCdzIG9rIHRvIHVzZSBpbiBhbiBpbXBsaWNpdCBjb25zdHJ1Y3Rpb24uCisgICAgSWYgYWxsb3dfZmxvYXQgaXMgdHJ1ZSwgYWxsb3cgY29udmVyc2lvbiBmcm9tIGZsb2F0OyAgdGhpcworICAgIGlzIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24gbWV0aG9kcyAoX19lcV9fIGFuZCBmcmllbmRzKS4KKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERlY2ltYWwpOgorICAgICAgICByZXR1cm4gb3RoZXIKKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgorICAgICAgICByZXR1cm4gRGVjaW1hbChvdGhlcikKKyAgICBpZiBhbGxvd19mbG9hdCBhbmQgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgorICAgICAgICByZXR1cm4gRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQorCisgICAgaWYgcmFpc2VpdDoKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIG90aGVyKQorICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCitkZWYgX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPUZhbHNlKToKKyAgICAiIiJHaXZlbiBhIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiBhbmQgYSBQeXRob24gb2JqZWN0IG90aGVyLCByZXR1cm4KKyAgICBhIHBhaXIgKHMsIG8pIG9mIERlY2ltYWwgaW5zdGFuY2VzIHN1Y2ggdGhhdCAicyBvcCBvIiBpcworICAgIGVxdWl2YWxlbnQgdG8gInNlbGYgb3Agb3RoZXIiIGZvciBhbnkgb2YgdGhlIDYgY29tcGFyaXNvbgorICAgIG9wZXJhdG9ycyAib3AiLgorCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGVjaW1hbCk6CisgICAgICAgIHJldHVybiBzZWxmLCBvdGhlcgorCisgICAgIyBDb21wYXJpc29uIHdpdGggYSBSYXRpb25hbCBpbnN0YW5jZSAoYWxzbyBpbmNsdWRlcyBpbnRlZ2Vycyk6CisgICAgIyBzZWxmIG9wIG4vZCA8PT4gc2VsZipkIG9wIG4gKGZvciBuIGFuZCBkIGludGVnZXJzLCBkIHBvc2l0aXZlKS4KKyAgICAjIEEgTmFOIG9yIGluZmluaXR5IGNhbiBiZSBsZWZ0IHVuY2hhbmdlZCB3aXRob3V0IGFmZmVjdGluZyB0aGUKKyAgICAjIGNvbXBhcmlzb24gcmVzdWx0LgorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLlJhdGlvbmFsKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogb3RoZXIuZGVub21pbmF0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwKQorICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbChvdGhlci5udW1lcmF0b3IpCisKKyAgICAjIENvbXBhcmlzb25zIHdpdGggZmxvYXQgYW5kIGNvbXBsZXggdHlwZXMuICA9PSBhbmQgIT0gY29tcGFyaXNvbnMKKyAgICAjIHdpdGggY29tcGxleCBudW1iZXJzIHNob3VsZCBzdWNjZWVkLCByZXR1cm5pbmcgZWl0aGVyIFRydWUgb3IgRmFsc2UKKyAgICAjIGFzIGFwcHJvcHJpYXRlLiAgT3RoZXIgY29tcGFyaXNvbnMgcmV0dXJuIE5vdEltcGxlbWVudGVkLgorICAgIGlmIGVxdWFsaXR5X29wIGFuZCBpc2luc3RhbmNlKG90aGVyLCBfbnVtYmVycy5Db21wbGV4KSBhbmQgb3RoZXIuaW1hZyA9PSAwOgorICAgICAgICBvdGhlciA9IG90aGVyLnJlYWwKKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6CisgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgZXF1YWxpdHlfb3A6CisgICAgICAgICAgICBjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgZW5hYmxlZCIpCisgICAgICAgIHJldHVybiBzZWxmLCBEZWNpbWFsLmZyb21fZmxvYXQob3RoZXIpCisgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkLCBOb3RJbXBsZW1lbnRlZAorCisKKyMjIyMjIFNldHVwIFNwZWNpZmljIENvbnRleHRzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgVGhlIGRlZmF1bHQgY29udGV4dCBwcm90b3R5cGUgdXNlZCBieSBDb250ZXh0KCkKKyMgSXMgbXV0YWJsZSwgc28gdGhhdCBuZXcgY29udGV4dHMgY2FuIGhhdmUgZGlmZmVyZW50IGRlZmF1bHQgdmFsdWVzCisKK0RlZmF1bHRDb250ZXh0ID0gQ29udGV4dCgKKyAgICAgICAgcHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAorICAgICAgICB0cmFwcz1bRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uXSwKKyAgICAgICAgZmxhZ3M9W10sCisgICAgICAgIEVtYXg9OTk5OTk5LAorICAgICAgICBFbWluPS05OTk5OTksCisgICAgICAgIGNhcGl0YWxzPTEsCisgICAgICAgIGNsYW1wPTAKKykKKworIyBQcmUtbWFkZSBhbHRlcm5hdGUgY29udGV4dHMgb2ZmZXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbgorIyBEb24ndCBjaGFuZ2UgdGhlc2U7IHRoZSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIHNlbGVjdCB0aGVzZQorIyBjb250ZXh0cyBhbmQgYmUgYWJsZSB0byByZXByb2R1Y2UgcmVzdWx0cyBmcm9tIG90aGVyIGltcGxlbWVudGF0aW9ucworIyBvZiB0aGUgc3BlYy4KKworQmFzaWNDb250ZXh0ID0gQ29udGV4dCgKKyAgICAgICAgcHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX1VQLAorICAgICAgICB0cmFwcz1bRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBDbGFtcGVkLCBVbmRlcmZsb3ddLAorICAgICAgICBmbGFncz1bXSwKKykKKworRXh0ZW5kZWRDb250ZXh0ID0gQ29udGV4dCgKKyAgICAgICAgcHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sCisgICAgICAgIHRyYXBzPVtdLAorICAgICAgICBmbGFncz1bXSwKKykKKworCisjIyMjIyBjcnVkIGZvciBwYXJzaW5nIHN0cmluZ3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGZvciBwYXJzaW5nIG51bWVyaWMgc3RyaW5ncy4gIEFkZGl0aW9uYWwKKyMgY29tbWVudHM6CisjCisjIDEuIFVuY29tbWVudCB0aGUgdHdvICdccyonIGxpbmVzIHRvIGFsbG93IGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nCisjIHdoaXRlc3BhY2UuICBCdXQgbm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGRpc2FsbG93cyB3aGl0ZXNwYWNlIGluCisjIGEgbnVtZXJpYyBzdHJpbmcuCisjCisjIDIuIEZvciBmaW5pdGUgbnVtYmVycyAobm90IGluZmluaXRpZXMgYW5kIE5hTnMpIHRoZSBib2R5IG9mIHRoZQorIyBudW1iZXIgYmV0d2VlbiB0aGUgb3B0aW9uYWwgc2lnbiBhbmQgdGhlIG9wdGlvbmFsIGV4cG9uZW50IG11c3QgaGF2ZQorIyBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCwgcG9zc2libHkgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICBUaGUKKyMgbG9va2FoZWFkIGV4cHJlc3Npb24gJyg/PVxkfFwuXGQpJyBjaGVja3MgdGhpcy4KKworaW1wb3J0IHJlCitfcGFyc2VyID0gcmUuY29tcGlsZShyIiIiICAgICAgICAjIEEgbnVtZXJpYyBzdHJpbmcgY29uc2lzdHMgb2Y6CisjICAgIFxzKgorICAgICg/UDxzaWduPlstK10pPyAgICAgICAgICAgICAgIyBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBlaXRoZXIuLi4KKyAgICAoCisgICAgICAgICg/PVxkfFwuXGQpICAgICAgICAgICAgICAjIC4uLmEgbnVtYmVyICh3aXRoIGF0IGxlYXN0IG9uZSBkaWdpdCkKKyAgICAgICAgKD9QPGludD5cZCopICAgICAgICAgICAgICMgaGF2aW5nIGEgKHBvc3NpYmx5IGVtcHR5KSBpbnRlZ2VyIHBhcnQKKyAgICAgICAgKFwuKD9QPGZyYWM+XGQqKSk/ICAgICAgICMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgZnJhY3Rpb25hbCBwYXJ0CisgICAgICAgIChFKD9QPGV4cD5bLStdP1xkKykpPyAgICAjIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGV4cG9uZW50LCBvci4uLgorICAgIHwKKyAgICAgICAgSW5mKGluaXR5KT8gICAgICAgICAgICAgICMgLi4uYW4gaW5maW5pdHksIG9yLi4uCisgICAgfAorICAgICAgICAoP1A8c2lnbmFsPnMpPyAgICAgICAgICAgIyAuLi5hbiAob3B0aW9uYWxseSBzaWduYWxpbmcpCisgICAgICAgIE5hTiAgICAgICAgICAgICAgICAgICAgICAjIE5hTgorICAgICAgICAoP1A8ZGlhZz5cZCopICAgICAgICAgICAgIyB3aXRoIChwb3NzaWJseSBlbXB0eSkgZGlhZ25vc3RpYyBpbmZvLgorICAgICkKKyMgICAgXHMqCisgICAgXFoKKyIiIiwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpLm1hdGNoCisKK19hbGxfemVyb3MgPSByZS5jb21waWxlKCcwKiQnKS5tYXRjaAorX2V4YWN0X2hhbGYgPSByZS5jb21waWxlKCc1MCokJykubWF0Y2gKKworIyMjIyMgUEVQMzEwMSBzdXBwb3J0IGZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGhhdmUgbGl0dGxlIHRvIGRvIHdpdGggdGhlIERlY2ltYWwKKyMgY2xhc3MsIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBiZSByZXVzZWQgb3IgYWRhcHRlZCBmb3Igb3RoZXIgcHVyZQorIyBQeXRob24gbnVtZXJpYyBjbGFzc2VzIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgX19mb3JtYXRfXworIworIyBBIGZvcm1hdCBzcGVjaWZpZXIgZm9yIERlY2ltYWwgbG9va3MgbGlrZToKKyMKKyMgICBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW21pbmltdW13aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KKworX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXJfcmVnZXggPSByZS5jb21waWxlKHIiIiJcQQorKD86CisgICAoP1A8ZmlsbD4uKT8KKyAgICg/UDxhbGlnbj5bPD49Xl0pCispPworKD9QPHNpZ24+Wy0rIF0pPworKD9QPGFsdD5cIyk/CisoP1A8emVyb3BhZD4wKT8KKyg/UDxtaW5pbXVtd2lkdGg+KD8hMClcZCspPworKD9QPHRob3VzYW5kc19zZXA+LCk/CisoPzpcLig/UDxwcmVjaXNpb24+MHwoPyEwKVxkKykpPworKD9QPHR5cGU+W2VFZkZnR24lXSk/CitcWgorIiIiLCByZS5WRVJCT1NFfHJlLkRPVEFMTCkKKworZGVsIHJlCisKKyMgVGhlIGxvY2FsZSBtb2R1bGUgaXMgb25seSBuZWVkZWQgZm9yIHRoZSAnbicgZm9ybWF0IHNwZWNpZmllci4gIFRoZQorIyByZXN0IG9mIHRoZSBQRVAgMzEwMSBjb2RlIGZ1bmN0aW9ucyBxdWl0ZSBoYXBwaWx5IHdpdGhvdXQgaXQsIHNvIHdlCisjIGRvbid0IGNhcmUgdG9vIG11Y2ggaWYgbG9jYWxlIGlzbid0IHByZXNlbnQuCit0cnk6CisgICAgaW1wb3J0IGxvY2FsZSBhcyBfbG9jYWxlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCitkZWYgX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIoZm9ybWF0X3NwZWMsIF9sb2NhbGVjb252PU5vbmUpOgorICAgICIiIlBhcnNlIGFuZCB2YWxpZGF0ZSBhIGZvcm1hdCBzcGVjaWZpZXIuCisKKyAgICBUdXJucyBhIHN0YW5kYXJkIG51bWVyaWMgZm9ybWF0IHNwZWNpZmllciBpbnRvIGEgZGljdCwgd2l0aCB0aGUKKyAgICBmb2xsb3dpbmcgZW50cmllczoKKworICAgICAgZmlsbDogZmlsbCBjaGFyYWN0ZXIgdG8gcGFkIGZpZWxkIHRvIG1pbmltdW0gd2lkdGgKKyAgICAgIGFsaWduOiBhbGlnbm1lbnQgdHlwZSwgZWl0aGVyICc8JywgJz4nLCAnPScgb3IgJ14nCisgICAgICBzaWduOiBlaXRoZXIgJysnLCAnLScgb3IgJyAnCisgICAgICBtaW5pbXVtd2lkdGg6IG5vbm5lZ2F0aXZlIGludGVnZXIgZ2l2aW5nIG1pbmltdW0gd2lkdGgKKyAgICAgIHplcm9wYWQ6IGJvb2xlYW4sIGluZGljYXRpbmcgd2hldGhlciB0byBwYWQgd2l0aCB6ZXJvcworICAgICAgdGhvdXNhbmRzX3NlcDogc3RyaW5nIHRvIHVzZSBhcyB0aG91c2FuZHMgc2VwYXJhdG9yLCBvciAnJworICAgICAgZ3JvdXBpbmc6IGdyb3VwaW5nIGZvciB0aG91c2FuZHMgc2VwYXJhdG9ycywgaW4gZm9ybWF0CisgICAgICAgIHVzZWQgYnkgbG9jYWxlY29udgorICAgICAgZGVjaW1hbF9wb2ludDogc3RyaW5nIHRvIHVzZSBmb3IgZGVjaW1hbCBwb2ludAorICAgICAgcHJlY2lzaW9uOiBub25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBwcmVjaXNpb24sIG9yIE5vbmUKKyAgICAgIHR5cGU6IG9uZSBvZiB0aGUgY2hhcmFjdGVycyAnZUVmRmdHJScsIG9yIE5vbmUKKworICAgICIiIgorICAgIG0gPSBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcl9yZWdleC5tYXRjaChmb3JtYXRfc3BlYykKKyAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorCisgICAgIyBnZXQgdGhlIGRpY3Rpb25hcnkKKyAgICBmb3JtYXRfZGljdCA9IG0uZ3JvdXBkaWN0KCkKKworICAgICMgemVyb3BhZDsgZGVmYXVsdHMgZm9yIGZpbGwgYW5kIGFsaWdubWVudC4gIElmIHplcm8gcGFkZGluZworICAgICMgaXMgcmVxdWVzdGVkLCB0aGUgZmlsbCBhbmQgYWxpZ24gZmllbGRzIHNob3VsZCBiZSBhYnNlbnQuCisgICAgZmlsbCA9IGZvcm1hdF9kaWN0WydmaWxsJ10KKyAgICBhbGlnbiA9IGZvcm1hdF9kaWN0WydhbGlnbiddCisgICAgZm9ybWF0X2RpY3RbJ3plcm9wYWQnXSA9IChmb3JtYXRfZGljdFsnemVyb3BhZCddIGlzIG5vdCBOb25lKQorICAgIGlmIGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ106CisgICAgICAgIGlmIGZpbGwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGaWxsIGNoYXJhY3RlciBjb25mbGljdHMgd2l0aCAnMCciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaW4gZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorICAgICAgICBpZiBhbGlnbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFsaWdubWVudCBjb25mbGljdHMgd2l0aCAnMCcgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorICAgIGZvcm1hdF9kaWN0WydmaWxsJ10gPSBmaWxsIG9yICcgJworICAgICMgUEVQIDMxMDEgb3JpZ2luYWxseSBzcGVjaWZpZWQgdGhhdCB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgc2hvdWxkCisgICAgIyBiZSBsZWZ0OyAgaXQgd2FzIGxhdGVyIGFncmVlZCB0aGF0IHJpZ2h0LWFsaWduZWQgbWFrZXMgbW9yZSBzZW5zZQorICAgICMgZm9yIG51bWVyaWMgdHlwZXMuICBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTY4NTcuCisgICAgZm9ybWF0X2RpY3RbJ2FsaWduJ10gPSBhbGlnbiBvciAnPicKKworICAgICMgZGVmYXVsdCBzaWduIGhhbmRsaW5nOiAnLScgZm9yIG5lZ2F0aXZlLCAnJyBmb3IgcG9zaXRpdmUKKyAgICBpZiBmb3JtYXRfZGljdFsnc2lnbiddIGlzIE5vbmU6CisgICAgICAgIGZvcm1hdF9kaWN0WydzaWduJ10gPSAnLScKKworICAgICMgbWluaW11bXdpZHRoIGRlZmF1bHRzIHRvIDA7IHByZWNpc2lvbiByZW1haW5zIE5vbmUgaWYgbm90IGdpdmVuCisgICAgZm9ybWF0X2RpY3RbJ21pbmltdW13aWR0aCddID0gaW50KGZvcm1hdF9kaWN0WydtaW5pbXVtd2lkdGgnXSBvciAnMCcpCisgICAgaWYgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddIGlzIG5vdCBOb25lOgorICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSBpbnQoZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddKQorCisgICAgIyBpZiBmb3JtYXQgdHlwZSBpcyAnZycgb3IgJ0cnIHRoZW4gYSBwcmVjaXNpb24gb2YgMCBtYWtlcyBsaXR0bGUKKyAgICAjIHNlbnNlOyBjb252ZXJ0IGl0IHRvIDEuICBTYW1lIGlmIGZvcm1hdCB0eXBlIGlzIHVuc3BlY2lmaWVkLgorICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9PSAwOgorICAgICAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddIGlzIE5vbmUgb3IgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpbiAnZ0duJzoKKyAgICAgICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IDEKKworICAgICMgZGV0ZXJtaW5lIHRob3VzYW5kcyBzZXBhcmF0b3IsIGdyb3VwaW5nLCBhbmQgZGVjaW1hbCBzZXBhcmF0b3IsIGFuZAorICAgICMgYWRkIGFwcHJvcHJpYXRlIGVudHJpZXMgdG8gZm9ybWF0X2RpY3QKKyAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddID09ICduJzoKKyAgICAgICAgIyBhcGFydCBmcm9tIHNlcGFyYXRvcnMsICduJyBiZWhhdmVzIGp1c3QgbGlrZSAnZycKKyAgICAgICAgZm9ybWF0X2RpY3RbJ3R5cGUnXSA9ICdnJworICAgICAgICBpZiBfbG9jYWxlY29udiBpcyBOb25lOgorICAgICAgICAgICAgX2xvY2FsZWNvbnYgPSBfbG9jYWxlLmxvY2FsZWNvbnYoKQorICAgICAgICBpZiBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwbGljaXQgdGhvdXNhbmRzIHNlcGFyYXRvciBjb25mbGljdHMgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInbicgdHlwZSBpbiBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCisgICAgICAgIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gPSBfbG9jYWxlY29udlsndGhvdXNhbmRzX3NlcCddCisgICAgICAgIGZvcm1hdF9kaWN0Wydncm91cGluZyddID0gX2xvY2FsZWNvbnZbJ2dyb3VwaW5nJ10KKyAgICAgICAgZm9ybWF0X2RpY3RbJ2RlY2ltYWxfcG9pbnQnXSA9IF9sb2NhbGVjb252WydkZWNpbWFsX3BvaW50J10KKyAgICBlbHNlOgorICAgICAgICBpZiBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddIGlzIE5vbmU6CisgICAgICAgICAgICBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddID0gJycKKyAgICAgICAgZm9ybWF0X2RpY3RbJ2dyb3VwaW5nJ10gPSBbMywgMF0KKyAgICAgICAgZm9ybWF0X2RpY3RbJ2RlY2ltYWxfcG9pbnQnXSA9ICcuJworCisgICAgcmV0dXJuIGZvcm1hdF9kaWN0CisKK2RlZiBfZm9ybWF0X2FsaWduKHNpZ24sIGJvZHksIHNwZWMpOgorICAgICIiIkdpdmVuIGFuIHVucGFkZGVkLCBub24tYWxpZ25lZCBudW1lcmljIHN0cmluZyAnYm9keScgYW5kIHNpZ24KKyAgICBzdHJpbmcgJ3NpZ24nLCBhZGQgcGFkZGluZyBhbmQgYWxpZ25tZW50IGNvbmZvcm1pbmcgdG8gdGhlIGdpdmVuCisgICAgZm9ybWF0IHNwZWNpZmllciBkaWN0aW9uYXJ5ICdzcGVjJyAoYXMgcHJvZHVjZWQgYnkKKyAgICBwYXJzZV9mb3JtYXRfc3BlY2lmaWVyKS4KKworICAgICIiIgorICAgICMgaG93IG11Y2ggZXh0cmEgc3BhY2UgZG8gd2UgaGF2ZSB0byBwbGF5IHdpdGg/CisgICAgbWluaW11bXdpZHRoID0gc3BlY1snbWluaW11bXdpZHRoJ10KKyAgICBmaWxsID0gc3BlY1snZmlsbCddCisgICAgcGFkZGluZyA9IGZpbGwqKG1pbmltdW13aWR0aCAtIGxlbihzaWduKSAtIGxlbihib2R5KSkKKworICAgIGFsaWduID0gc3BlY1snYWxpZ24nXQorICAgIGlmIGFsaWduID09ICc8JzoKKyAgICAgICAgcmVzdWx0ID0gc2lnbiArIGJvZHkgKyBwYWRkaW5nCisgICAgZWxpZiBhbGlnbiA9PSAnPic6CisgICAgICAgIHJlc3VsdCA9IHBhZGRpbmcgKyBzaWduICsgYm9keQorICAgIGVsaWYgYWxpZ24gPT0gJz0nOgorICAgICAgICByZXN1bHQgPSBzaWduICsgcGFkZGluZyArIGJvZHkKKyAgICBlbGlmIGFsaWduID09ICdeJzoKKyAgICAgICAgaGFsZiA9IGxlbihwYWRkaW5nKS8vMgorICAgICAgICByZXN1bHQgPSBwYWRkaW5nWzpoYWxmXSArIHNpZ24gKyBib2R5ICsgcGFkZGluZ1toYWxmOl0KKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbmlzZWQgYWxpZ25tZW50IGZpZWxkJykKKworICAgIHJldHVybiByZXN1bHQKKworZGVmIF9ncm91cF9sZW5ndGhzKGdyb3VwaW5nKToKKyAgICAiIiJDb252ZXJ0IGEgbG9jYWxlY29udi1zdHlsZSBncm91cGluZyBpbnRvIGEgKHBvc3NpYmx5IGluZmluaXRlKQorICAgIGl0ZXJhYmxlIG9mIGludGVnZXJzIHJlcHJlc2VudGluZyBncm91cCBsZW5ndGhzLgorCisgICAgIiIiCisgICAgIyBUaGUgcmVzdWx0IGZyb20gbG9jYWxlY29udigpWydncm91cGluZyddLCBhbmQgdGhlIGlucHV0IHRvIHRoaXMKKyAgICAjIGZ1bmN0aW9uLCBzaG91bGQgYmUgYSBsaXN0IG9mIGludGVnZXJzIGluIG9uZSBvZiB0aGUKKyAgICAjIGZvbGxvd2luZyB0aHJlZSBmb3JtczoKKyAgICAjCisgICAgIyAgICgxKSBhbiBlbXB0eSBsaXN0LCBvcgorICAgICMgICAoMikgbm9uZW1wdHkgbGlzdCBvZiBwb3NpdGl2ZSBpbnRlZ2VycyArIFswXQorICAgICMgICAoMykgbGlzdCBvZiBwb3NpdGl2ZSBpbnRlZ2VycyArIFtsb2NhbGUuQ0hBUl9NQVhdLCBvcgorCisgICAgZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluLCByZXBlYXQKKyAgICBpZiBub3QgZ3JvdXBpbmc6CisgICAgICAgIHJldHVybiBbXQorICAgIGVsaWYgZ3JvdXBpbmdbLTFdID09IDAgYW5kIGxlbihncm91cGluZykgPj0gMjoKKyAgICAgICAgcmV0dXJuIGNoYWluKGdyb3VwaW5nWzotMV0sIHJlcGVhdChncm91cGluZ1stMl0pKQorICAgIGVsaWYgZ3JvdXBpbmdbLTFdID09IF9sb2NhbGUuQ0hBUl9NQVg6CisgICAgICAgIHJldHVybiBncm91cGluZ1s6LTFdCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5yZWNvZ25pc2VkIGZvcm1hdCBmb3IgZ3JvdXBpbmcnKQorCitkZWYgX2luc2VydF90aG91c2FuZHNfc2VwKGRpZ2l0cywgc3BlYywgbWluX3dpZHRoPTEpOgorICAgICIiIkluc2VydCB0aG91c2FuZHMgc2VwYXJhdG9ycyBpbnRvIGEgZGlnaXQgc3RyaW5nLgorCisgICAgc3BlYyBpcyBhIGRpY3Rpb25hcnkgd2hvc2Uga2V5cyBzaG91bGQgaW5jbHVkZSAndGhvdXNhbmRzX3NlcCcgYW5kCisgICAgJ2dyb3VwaW5nJzsgdHlwaWNhbGx5IGl0J3MgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBmb3JtYXQKKyAgICBzcGVjaWZpZXIgdXNpbmcgX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIuCisKKyAgICBUaGUgbWluX3dpZHRoIGtleXdvcmQgYXJndW1lbnQgZ2l2ZXMgdGhlIG1pbmltdW0gbGVuZ3RoIG9mIHRoZQorICAgIHJlc3VsdCwgd2hpY2ggd2lsbCBiZSBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyBpZiBuZWNlc3NhcnkuCisKKyAgICBJZiBuZWNlc3NhcnksIHRoZSB6ZXJvIHBhZGRpbmcgYWRkcyBhbiBleHRyYSAnMCcgb24gdGhlIGxlZnQgdG8KKyAgICBhdm9pZCBhIGxlYWRpbmcgdGhvdXNhbmRzIHNlcGFyYXRvci4gIEZvciBleGFtcGxlLCBpbnNlcnRpbmcKKyAgICBjb21tYXMgZXZlcnkgdGhyZWUgZGlnaXRzIGluICcxMjM0NTYnLCB3aXRoIG1pbl93aWR0aD04LCBnaXZlcworICAgICcwLDEyMyw0NTYnLCBldmVuIHRob3VnaCB0aGF0IGhhcyBsZW5ndGggOS4KKworICAgICIiIgorCisgICAgc2VwID0gc3BlY1sndGhvdXNhbmRzX3NlcCddCisgICAgZ3JvdXBpbmcgPSBzcGVjWydncm91cGluZyddCisKKyAgICBncm91cHMgPSBbXQorICAgIGZvciBsIGluIF9ncm91cF9sZW5ndGhzKGdyb3VwaW5nKToKKyAgICAgICAgaWYgbCA8PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZ3JvdXAgbGVuZ3RoIHNob3VsZCBiZSBwb3NpdGl2ZSIpCisgICAgICAgICMgbWF4KC4uLiwgMSkgZm9yY2VzIGF0IGxlYXN0IDEgZGlnaXQgdG8gdGhlIGxlZnQgb2YgYSBzZXBhcmF0b3IKKyAgICAgICAgbCA9IG1pbihtYXgobGVuKGRpZ2l0cyksIG1pbl93aWR0aCwgMSksIGwpCisgICAgICAgIGdyb3Vwcy5hcHBlbmQoJzAnKihsIC0gbGVuKGRpZ2l0cykpICsgZGlnaXRzWy1sOl0pCisgICAgICAgIGRpZ2l0cyA9IGRpZ2l0c1s6LWxdCisgICAgICAgIG1pbl93aWR0aCAtPSBsCisgICAgICAgIGlmIG5vdCBkaWdpdHMgYW5kIG1pbl93aWR0aCA8PSAwOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbWluX3dpZHRoIC09IGxlbihzZXApCisgICAgZWxzZToKKyAgICAgICAgbCA9IG1heChsZW4oZGlnaXRzKSwgbWluX3dpZHRoLCAxKQorICAgICAgICBncm91cHMuYXBwZW5kKCcwJyoobCAtIGxlbihkaWdpdHMpKSArIGRpZ2l0c1stbDpdKQorICAgIHJldHVybiBzZXAuam9pbihyZXZlcnNlZChncm91cHMpKQorCitkZWYgX2Zvcm1hdF9zaWduKGlzX25lZ2F0aXZlLCBzcGVjKToKKyAgICAiIiJEZXRlcm1pbmUgc2lnbiBjaGFyYWN0ZXIuIiIiCisKKyAgICBpZiBpc19uZWdhdGl2ZToKKyAgICAgICAgcmV0dXJuICctJworICAgIGVsaWYgc3BlY1snc2lnbiddIGluICcgKyc6CisgICAgICAgIHJldHVybiBzcGVjWydzaWduJ10KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycKKworZGVmIF9mb3JtYXRfbnVtYmVyKGlzX25lZ2F0aXZlLCBpbnRwYXJ0LCBmcmFjcGFydCwgZXhwLCBzcGVjKToKKyAgICAiIiJGb3JtYXQgYSBudW1iZXIsIGdpdmVuIHRoZSBmb2xsb3dpbmcgZGF0YToKKworICAgIGlzX25lZ2F0aXZlOiB0cnVlIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIGVsc2UgZmFsc2UKKyAgICBpbnRwYXJ0OiBzdHJpbmcgb2YgZGlnaXRzIHRoYXQgbXVzdCBhcHBlYXIgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50CisgICAgZnJhY3BhcnQ6IHN0cmluZyBvZiBkaWdpdHMgdGhhdCBtdXN0IGNvbWUgYWZ0ZXIgdGhlIHBvaW50CisgICAgZXhwOiBleHBvbmVudCwgYXMgYW4gaW50ZWdlcgorICAgIHNwZWM6IGRpY3Rpb25hcnkgcmVzdWx0aW5nIGZyb20gcGFyc2luZyB0aGUgZm9ybWF0IHNwZWNpZmllcgorCisgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBpbmZvcm1hdGlvbiBpbiBzcGVjIHRvOgorICAgICAgaW5zZXJ0IHNlcGFyYXRvcnMgKGRlY2ltYWwgc2VwYXJhdG9yIGFuZCB0aG91c2FuZHMgc2VwYXJhdG9ycykKKyAgICAgIGZvcm1hdCB0aGUgc2lnbgorICAgICAgZm9ybWF0IHRoZSBleHBvbmVudAorICAgICAgYWRkIHRyYWlsaW5nICclJyBmb3IgdGhlICclJyB0eXBlCisgICAgICB6ZXJvLXBhZCBpZiBuZWNlc3NhcnkKKyAgICAgIGZpbGwgYW5kIGFsaWduIGlmIG5lY2Vzc2FyeQorICAgICIiIgorCisgICAgc2lnbiA9IF9mb3JtYXRfc2lnbihpc19uZWdhdGl2ZSwgc3BlYykKKworICAgIGlmIGZyYWNwYXJ0IG9yIHNwZWNbJ2FsdCddOgorICAgICAgICBmcmFjcGFydCA9IHNwZWNbJ2RlY2ltYWxfcG9pbnQnXSArIGZyYWNwYXJ0CisKKyAgICBpZiBleHAgIT0gMCBvciBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKKyAgICAgICAgZWNoYXIgPSB7J0UnOiAnRScsICdlJzogJ2UnLCAnRyc6ICdFJywgJ2cnOiAnZSd9W3NwZWNbJ3R5cGUnXV0KKyAgICAgICAgZnJhY3BhcnQgKz0gInswfXsxOit9Ii5mb3JtYXQoZWNoYXIsIGV4cCkKKyAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgorICAgICAgICBmcmFjcGFydCArPSAnJScKKworICAgIGlmIHNwZWNbJ3plcm9wYWQnXToKKyAgICAgICAgbWluX3dpZHRoID0gc3BlY1snbWluaW11bXdpZHRoJ10gLSBsZW4oZnJhY3BhcnQpIC0gbGVuKHNpZ24pCisgICAgZWxzZToKKyAgICAgICAgbWluX3dpZHRoID0gMAorICAgIGludHBhcnQgPSBfaW5zZXJ0X3Rob3VzYW5kc19zZXAoaW50cGFydCwgc3BlYywgbWluX3dpZHRoKQorCisgICAgcmV0dXJuIF9mb3JtYXRfYWxpZ24oc2lnbiwgaW50cGFydCtmcmFjcGFydCwgc3BlYykKKworCisjIyMjIyBVc2VmdWwgQ29uc3RhbnRzIChpbnRlcm5hbCB1c2Ugb25seSkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBSZXVzYWJsZSBkZWZhdWx0cworX0luZmluaXR5ID0gRGVjaW1hbCgnSW5mJykKK19OZWdhdGl2ZUluZmluaXR5ID0gRGVjaW1hbCgnLUluZicpCitfTmFOID0gRGVjaW1hbCgnTmFOJykKK19aZXJvID0gRGVjaW1hbCgwKQorX09uZSA9IERlY2ltYWwoMSkKK19OZWdhdGl2ZU9uZSA9IERlY2ltYWwoLTEpCisKKyMgX1NpZ25lZEluZmluaXR5W3NpZ25dIGlzIGluZmluaXR5IHcvIHRoYXQgc2lnbgorX1NpZ25lZEluZmluaXR5ID0gKF9JbmZpbml0eSwgX05lZ2F0aXZlSW5maW5pdHkpCisKKyMgQ29uc3RhbnRzIHJlbGF0ZWQgdG8gdGhlIGhhc2ggaW1wbGVtZW50YXRpb247ICBoYXNoKHgpIGlzIGJhc2VkCisjIG9uIHRoZSByZWR1Y3Rpb24gb2YgeCBtb2R1bG8gX1B5SEFTSF9NT0RVTFVTCitfUHlIQVNIX01PRFVMVVMgPSBzeXMuaGFzaF9pbmZvLm1vZHVsdXMKKyMgaGFzaCB2YWx1ZXMgdG8gdXNlIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdGllcywgYW5kIG5hbnMKK19QeUhBU0hfSU5GID0gc3lzLmhhc2hfaW5mby5pbmYKK19QeUhBU0hfTkFOID0gc3lzLmhhc2hfaW5mby5uYW4KKworIyBfUHlIQVNIXzEwSU5WIGlzIHRoZSBpbnZlcnNlIG9mIDEwIG1vZHVsbyB0aGUgcHJpbWUgX1B5SEFTSF9NT0RVTFVTCitfUHlIQVNIXzEwSU5WID0gcG93KDEwLCBfUHlIQVNIX01PRFVMVVMgLSAyLCBfUHlIQVNIX01PRFVMVVMpCitkZWwgc3lzCmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggYzBiNWZkMS4uZjQ3ZGY5MSAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNiwxMSArNiwxOCBAQAogaW1wb3J0IGFiYwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCitpbXBvcnQgYXJyYXkKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCiAjIEltcG9ydCBfdGhyZWFkIGluc3RlYWQgb2YgdGhyZWFkaW5nIHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jawogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZyb20gX2R1bW15X3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCitpZiBzeXMucGxhdGZvcm0gaW4geyd3aW4zMicsICdjeWd3aW4nfToKKyAgICBmcm9tIG1zdmNydCBpbXBvcnQgc2V0bW9kZSBhcyBfc2V0bW9kZQorZWxzZToKKyAgICBfc2V0bW9kZSA9IE5vbmUKIAogaW1wb3J0IGlvCiBmcm9tIGlvIGltcG9ydCAoX19hbGxfXywgU0VFS19TRVQsIFNFRUtfQ1VSLCBTRUVLX0VORCkKQEAgLTI1Niw3ICsyNjMsNyBAQAogICAgIFRyaWNrIHNvIHRoYXQgb3BlbiB3b24ndCBiZWNvbWUgYSBib3VuZCBtZXRob2Qgd2hlbiBzdG9yZWQKICAgICBhcyBhIGNsYXNzIHZhcmlhYmxlIChhcyBkYm0uZHVtYiBkb2VzKS4KIAotICAgIFNlZSBpbml0c3RkaW8oKSBpbiBQeXRob24vcHl0aG9ucnVuLmMuCisgICAgU2VlIGluaXRzdGRpbygpIGluIFB5dGhvbi9weWxpZmVjeWNsZS5jLgogICAgICIiIgogICAgIF9fZG9jX18gPSBEb2NEZXNjcmlwdG9yKCkKIApAQCAtNjYyLDE2ICs2NjksMzMgQEAKICAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubwogICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCiAgICAgICAgICIiIgotICAgICAgICAjIFhYWCBUaGlzIG91Z2h0IHRvIHdvcmsgd2l0aCBhbnl0aGluZyB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgQVBJCi0gICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKGIpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50byhiLCByZWFkMT1GYWxzZSkKKworICAgIGRlZiByZWFkaW50bzEoc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gKmIqLCB1c2luZyBhdCBtb3N0IG9uZSBzeXN0ZW0gY2FsbAorCisgICAgICAgIFJldHVybnMgYW4gaW50IHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRikuCisKKyAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubworICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCisgICAgICAgICIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50byhiLCByZWFkMT1UcnVlKQorCisgICAgZGVmIF9yZWFkaW50byhzZWxmLCBiLCByZWFkMSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGIsIG1lbW9yeXZpZXcpOgorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgYiA9IGIuY2FzdCgnQicpCisKKyAgICAgICAgaWYgcmVhZDE6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShsZW4oYikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihiKSkKICAgICAgICAgbiA9IGxlbihkYXRhKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiWzpuXSA9IGRhdGEKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpbXBvcnQgYXJyYXkKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGIsIGFycmF5LmFycmF5KToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnIKLSAgICAgICAgICAgIGJbOm5dID0gYXJyYXkuYXJyYXkoJ2InLCBkYXRhKQorCisgICAgICAgIGJbOm5dID0gZGF0YQorCiAgICAgICAgIHJldHVybiBuCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgYik6CkBAIC03OTAsMTMgKzgxNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGNsc25hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICBtb2RuYW1lID0gc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXworICAgICAgICBjbHNuYW1lID0gc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiAiPF9weWlvLnswfT4iLmZvcm1hdChjbHNuYW1lKQorICAgICAgICAgICAgcmV0dXJuICI8e30ue30+Ii5mb3JtYXQobW9kbmFtZSwgY2xzbmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiPF9weWlvLnswfSBuYW1lPXsxIXJ9PiIuZm9ybWF0KGNsc25hbWUsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gIjx7fS57fSBuYW1lPXshcn0+Ii5mb3JtYXQobW9kbmFtZSwgY2xzbmFtZSwgbmFtZSkKIAogICAgICMjIyBMb3dlci1sZXZlbCBBUElzICMjIwogCkBAIC05OTMsMTAgKzEwMTgsNyBAQAogICAgICAgICAgICAgY3VycmVudF9zaXplID0gMAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFJlYWQgdW50aWwgRU9GIG9yIHVudGlsIHJlYWQoKSB3b3VsZCBibG9jay4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKCkKICAgICAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTAxNSwxMCArMTAzNyw3IEBACiAgICAgICAgIGNodW5rcyA9IFtidWZbcG9zOl1dCiAgICAgICAgIHdhbnRlZCA9IG1heChzZWxmLmJ1ZmZlcl9zaXplLCBuKQogICAgICAgICB3aGlsZSBhdmFpbCA8IG46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQod2FudGVkKQogICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMDQ3LDEyICsxMDY2LDcgQEAKICAgICAgICAgaGF2ZSA9IGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcwogICAgICAgICBpZiBoYXZlIDwgd2FudCBvciBoYXZlIDw9IDA6CiAgICAgICAgICAgICB0b19yZWFkID0gc2VsZi5idWZmZXJfc2l6ZSAtIGhhdmUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQogICAgICAgICAgICAgaWYgY3VycmVudDoKICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2J1ZiA9IHNlbGYuX3JlYWRfYnVmW3NlbGYuX3JlYWRfcG9zOl0gKyBjdXJyZW50CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSAwCkBAIC0xMDcxLDYgKzEwODUsNTggQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VubG9ja2VkKAogICAgICAgICAgICAgICAgIG1pbihzaXplLCBsZW4oc2VsZi5fcmVhZF9idWYpIC0gc2VsZi5fcmVhZF9wb3MpKQogCisgICAgIyBJbXBsZW1lbnRpbmcgcmVhZGludG8oKSBhbmQgcmVhZGludG8xKCkgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSAod2UKKyAgICAjIGNvdWxkIHJlbHkgb24gdGhlIGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZgorICAgICMgcmVhZCgpIGFuZCByZWFkMSgpKS4gV2UgZG8gaXQgYW55d2F5IHRvIGtlZXAgdGhlIF9weWlvIGltcGxlbWVudGF0aW9uCisgICAgIyBzaW1pbGFyIHRvIHRoZSBpbyBpbXBsZW1lbnRhdGlvbiAod2hpY2ggaW1wbGVtZW50cyB0aGUgbWV0aG9kcyBmb3IKKyAgICAjIHBlcmZvcm1hbmNlIHJlYXNvbnMpLgorICAgIGRlZiBfcmVhZGludG8oc2VsZiwgYnVmLCByZWFkMSk6CisgICAgICAgICIiIlJlYWQgZGF0YSBpbnRvICpidWYqIHdpdGggYXQgbW9zdCBvbmUgc3lzdGVtIGNhbGwuIiIiCisKKyAgICAgICAgaWYgbGVuKGJ1ZikgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgIyBOZWVkIHRvIGNyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IG9mIHR5cGUgJ2InLCBvdGhlcndpc2UKKyAgICAgICAgIyB3ZSBtYXkgbm90IGJlIGFibGUgdG8gYXNzaWduIGJ5dGVzIHRvIGl0LCBhbmQgc2xpY2luZyBpdAorICAgICAgICAjIHdvdWxkIGNyZWF0ZSBhIG5ldyBvYmplY3QuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJ1ZiwgbWVtb3J5dmlldyk6CisgICAgICAgICAgICBidWYgPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgYnVmID0gYnVmLmNhc3QoJ0InKQorCisgICAgICAgIHdyaXR0ZW4gPSAwCisgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgorICAgICAgICAgICAgd2hpbGUgd3JpdHRlbiA8IGxlbihidWYpOgorCisgICAgICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gcmVhZCBmcm9tIGludGVybmFsIGJ1ZmZlcgorICAgICAgICAgICAgICAgIGF2YWlsID0gbWluKGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcywgbGVuKGJ1ZikpCisgICAgICAgICAgICAgICAgaWYgYXZhaWw6CisgICAgICAgICAgICAgICAgICAgIGJ1Zlt3cml0dGVuOndyaXR0ZW4rYXZhaWxdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9idWZbc2VsZi5fcmVhZF9wb3M6c2VsZi5fcmVhZF9wb3MrYXZhaWxdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zICs9IGF2YWlsCisgICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gYXZhaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgd3JpdHRlbiA9PSBsZW4oYnVmKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAjIElmIHJlbWFpbmluZyBzcGFjZSBpbiBjYWxsZXJzIGJ1ZmZlciBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgICAgICMgaW50ZXJuYWwgYnVmZmVyLCByZWFkIGRpcmVjdGx5IGludG8gY2FsbGVycyBidWZmZXIKKyAgICAgICAgICAgICAgICBpZiBsZW4oYnVmKSAtIHdyaXR0ZW4gPiBzZWxmLmJ1ZmZlcl9zaXplOgorICAgICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcucmVhZGludG8oYnVmW3dyaXR0ZW46XSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG46CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAjIGVvZgorICAgICAgICAgICAgICAgICAgICB3cml0dGVuICs9IG4KKworICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHJlZmlsbCBpbnRlcm5hbCBidWZmZXIgLSB1bmxlc3Mgd2UncmUKKyAgICAgICAgICAgICAgICAjIGluIHJlYWQxIG1vZGUgYW5kIGFscmVhZHkgZ290IHNvbWUgZGF0YQorICAgICAgICAgICAgICAgIGVsaWYgbm90IChyZWFkMSBhbmQgd3JpdHRlbik6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wZWVrX3VubG9ja2VkKDEpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBlb2YKKworICAgICAgICAgICAgICAgICMgSW4gcmVhZGludG8xIG1vZGUsIHJldHVybiBhcyBzb29uIGFzIHdlIGhhdmUgc29tZSBkYXRhCisgICAgICAgICAgICAgICAgaWYgcmVhZDEgYW5kIHdyaXR0ZW46CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIHdyaXR0ZW4KKwogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpIC0gbGVuKHNlbGYuX3JlYWRfYnVmKSArIHNlbGYuX3JlYWRfcG9zCiAKQEAgLTExNDksOCArMTIxNSw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcud3JpdGUoc2VsZi5fd3JpdGVfYnVmKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzZWxmLnJhdyBzaG91bGQgaW1wbGVtZW50IFJhd0lPQmFzZTogaXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCByYWlzZSBCbG9ja2luZ0lPRXJyb3IiKQpAQCAtMTIyMCw2ICsxMjg0LDkgQEAKICAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5yZWFkMShzaXplKQogCisgICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWRpbnRvMShiKQorCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZGFibGUoKQogCkBAIC0xMzA0LDYgKzEzNzEsMTAgQEAKICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkMShzZWxmLCBzaXplKQogCisgICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bzEoc2VsZiwgYikKKwogICAgIGRlZiB3cml0ZShzZWxmLCBiKToKICAgICAgICAgaWYgc2VsZi5fcmVhZF9idWY6CiAgICAgICAgICAgICAjIFVuZG8gcmVhZGFoZWFkCkBAIC0xMzEzLDYgKzEzODQsMzQ1IEBACiAgICAgICAgIHJldHVybiBCdWZmZXJlZFdyaXRlci53cml0ZShzZWxmLCBiKQogCiAKK2NsYXNzIEZpbGVJTyhSYXdJT0Jhc2UpOgorICAgIF9mZCA9IC0xCisgICAgX2NyZWF0ZWQgPSBGYWxzZQorICAgIF9yZWFkYWJsZSA9IEZhbHNlCisgICAgX3dyaXRhYmxlID0gRmFsc2UKKyAgICBfYXBwZW5kaW5nID0gRmFsc2UKKyAgICBfc2Vla2FibGUgPSBOb25lCisgICAgX2Nsb3NlZmQgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0ncicsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpOgorICAgICAgICAiIiJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCisgICAgICAgIHdyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQKKyAgICAgICAgZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkCisgICAgICAgIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQorICAgICAgICBleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcgaW1wbGllcworICAgICAgICB3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLiBBZGQgYSAnKycgdG8gdGhlIG1vZGUKKyAgICAgICAgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieQorICAgICAgICBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKKyAgICAgICAgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS4KKyAgICAgICAgKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKgorICAgICAgICByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fZmQgPj0gMDoKKyAgICAgICAgICAgICMgSGF2ZSB0byBjbG9zZSB0aGUgZXhpc3RpbmcgZmlsZSBmaXJzdC4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQgPSAtMQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgZmxvYXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQnKQorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIGludCk6CisgICAgICAgICAgICBmZCA9IGZpbGUKKyAgICAgICAgICAgIGlmIGZkIDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3InKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmQgPSAtMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ludmFsaWQgbW9kZTogJXMnICUgKG1vZGUsKSkKKyAgICAgICAgaWYgbm90IHNldChtb2RlKSA8PSBzZXQoJ3hyd2FiKycpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBtb2RlOiAlcycgJSAobW9kZSwpKQorICAgICAgICBpZiBzdW0oYyBpbiAncndheCcgZm9yIGMgaW4gbW9kZSkgIT0gMSBvciBtb2RlLmNvdW50KCcrJykgPiAxOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RlIGFuZCBhdCBtb3N0IG9uZSBwbHVzJykKKworICAgICAgICBpZiAneCcgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX2NyZWF0ZWQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKyAgICAgICAgICAgIGZsYWdzID0gb3MuT19FWENMIHwgb3MuT19DUkVBVAorICAgICAgICBlbGlmICdyJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IDAKKyAgICAgICAgZWxpZiAndycgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX0NSRUFUIHwgb3MuT19UUlVOQworICAgICAgICBlbGlmICdhJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGFibGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9hcHBlbmRpbmcgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IG9zLk9fQVBQRU5EIHwgb3MuT19DUkVBVAorCisgICAgICAgIGlmICcrJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKworICAgICAgICBpZiBzZWxmLl9yZWFkYWJsZSBhbmQgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1JEV1IKKyAgICAgICAgZWxpZiBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIGZsYWdzIHw9IG9zLk9fUkRPTkxZCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1dST05MWQorCisgICAgICAgIGZsYWdzIHw9IGdldGF0dHIob3MsICdPX0JJTkFSWScsIDApCisKKyAgICAgICAgbm9pbmhlcml0X2ZsYWcgPSAoZ2V0YXR0cihvcywgJ09fTk9JTkhFUklUJywgMCkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihvcywgJ09fQ0xPRVhFQycsIDApKQorICAgICAgICBmbGFncyB8PSBub2luaGVyaXRfZmxhZworCisgICAgICAgIG93bmVkX2ZkID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmZCA8IDA6CisgICAgICAgICAgICAgICAgaWYgbm90IGNsb3NlZmQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZScpCisgICAgICAgICAgICAgICAgaWYgb3BlbmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihmaWxlLCBmbGFncywgMG82NjYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcGVuZXIoZmlsZSwgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZkLCBpbnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBpbnRlZ2VyIGZyb20gb3BlbmVyJykKKyAgICAgICAgICAgICAgICAgICAgaWYgZmQgPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yJykKKyAgICAgICAgICAgICAgICBvd25lZF9mZCA9IGZkCisgICAgICAgICAgICAgICAgaWYgbm90IG5vaW5oZXJpdF9mbGFnOgorICAgICAgICAgICAgICAgICAgICBvcy5zZXRfaW5oZXJpdGFibGUoZmQsIEZhbHNlKQorCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZkID0gY2xvc2VmZAorICAgICAgICAgICAgZmRmc3RhdCA9IG9zLmZzdGF0KGZkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0YXQuU19JU0RJUihmZGZzdGF0LnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJc0FEaXJlY3RvcnlFcnJvcihlcnJuby5FSVNESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0cmVycm9yKGVycm5vLkVJU0RJUiksIGZpbGUpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgdGhlIEF0dHJpYnVlRXJyb3IgaWYgc3RhdC5TX0lTRElSIG9yIGVycm5vLkVJU0RJUgorICAgICAgICAgICAgICAgICMgZG9uJ3QgZXhpc3QuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5fYmxrc2l6ZSA9IGdldGF0dHIoZmRmc3RhdCwgJ3N0X2Jsa3NpemUnLCAwKQorICAgICAgICAgICAgaWYgc2VsZi5fYmxrc2l6ZSA8PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX2Jsa3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisKKyAgICAgICAgICAgIGlmIF9zZXRtb2RlOgorICAgICAgICAgICAgICAgICMgZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzIChcclxuIDw9PiBcbikKKyAgICAgICAgICAgICAgICBfc2V0bW9kZShmZCwgb3MuT19CSU5BUlkpCisKKyAgICAgICAgICAgIHNlbGYubmFtZSA9IGZpbGUKKyAgICAgICAgICAgIGlmIHNlbGYuX2FwcGVuZGluZzoKKyAgICAgICAgICAgICAgICAjIEZvciBjb25zaXN0ZW50IGJlaGF2aW91ciwgd2UgZXhwbGljaXRseSBzZWVrIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZW5kIG9mIGZpbGUgKG90aGVyd2lzZSwgaXQgbWlnaHQgYmUgZG9uZSBvbmx5IG9uIHRoZQorICAgICAgICAgICAgICAgICMgZmlyc3Qgd3JpdGUoKSkuCisgICAgICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIFNFRUtfRU5EKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpZiBvd25lZF9mZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShvd25lZF9mZCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuX2ZkID0gZmQKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VuY2xvc2VkIGZpbGUgJXInICUgKHNlbGYsKSwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBjbGFzc19uYW1lID0gJyVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pCisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmV0dXJuICc8JXMgW2Nsb3NlZF0+JyAlIGNsYXNzX25hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gKCc8JXMgZmQ9JWQgbW9kZT0lciBjbG9zZWZkPSVyPicgJQorICAgICAgICAgICAgICAgICAgICAoY2xhc3NfbmFtZSwgc2VsZi5fZmQsIHNlbGYubW9kZSwgc2VsZi5fY2xvc2VmZCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gKCc8JXMgbmFtZT0lciBtb2RlPSVyIGNsb3NlZmQ9JXI+JyAlCisgICAgICAgICAgICAgICAgICAgIChjbGFzc19uYW1lLCBuYW1lLCBzZWxmLm1vZGUsIHNlbGYuX2Nsb3NlZmQpKQorCisgICAgZGVmIF9jaGVja1JlYWRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbignRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZycpCisKKyAgICBkZWYgX2NoZWNrV3JpdGFibGUoc2VsZiwgbXNnPU5vbmUpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbignRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZycpCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKKyAgICAgICAgT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQKKyAgICAgICAgSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQorICAgICAgICBpZiBzaXplIGlzIE5vbmUgb3Igc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG9zLnJlYWQoc2VsZi5fZmQsIHNpemUpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHJlYWRhbGwoc2VsZik6CisgICAgICAgICIiIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCisKKyAgICAgICAgSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgYXMgbXVjaCBhcyBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsCisgICAgICAgIG9yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tSZWFkYWJsZSgpCisgICAgICAgIGJ1ZnNpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvcyA9IG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKKyAgICAgICAgICAgIGVuZCA9IG9zLmZzdGF0KHNlbGYuX2ZkKS5zdF9zaXplCisgICAgICAgICAgICBpZiBlbmQgPj0gcG9zOgorICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBlbmQgLSBwb3MgKyAxCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSA+PSBidWZzaXplOgorICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBsZW4ocmVzdWx0KQorICAgICAgICAgICAgICAgIGJ1ZnNpemUgKz0gbWF4KGJ1ZnNpemUsIERFRkFVTFRfQlVGRkVSX1NJWkUpCisgICAgICAgICAgICBuID0gYnVmc2l6ZSAtIGxlbihyZXN1bHQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2h1bmsgPSBvcy5yZWFkKHNlbGYuX2ZkLCBuKQorICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBjaHVuazogIyByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVzdWx0ICs9IGNodW5rCisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKworICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4iIiIKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKG0pKQorICAgICAgICBuID0gbGVuKGRhdGEpCisgICAgICAgIG1bOm5dID0gZGF0YQorICAgICAgICByZXR1cm4gbgorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICAiIiJXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi4KKworICAgICAgICBPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KKyAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsCisgICAgICAgIHJldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrV3JpdGFibGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gb3Mud3JpdGUoc2VsZi5fZmQsIGIpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9U0VFS19TRVQpOgorICAgICAgICAiIiJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIEFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8KKyAgICAgICAgU0VFS19TRVQgb3IgMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0IHNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzCisgICAgICAgIGFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSwKKyAgICAgICAgYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoCisgICAgICAgIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS4KKworICAgICAgICBOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwb3MsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYW4gaW50ZWdlciBpcyByZXF1aXJlZCcpCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmxzZWVrKHNlbGYuX2ZkLCBwb3MsIHdoZW5jZSkKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICAiIiJ0ZWxsKCkgLT4gaW50LiAgQ3VycmVudCBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIENhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKKworICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuCisKKyAgICAgICAgU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuCisgICAgICAgIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tXcml0YWJsZSgpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLnRlbGwoKQorICAgICAgICBvcy5mdHJ1bmNhdGUoc2VsZi5fZmQsIHNpemUpCisgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIEEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorICAgICAgICBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgZmlsZSBzdXBwb3J0cyByYW5kb20tYWNjZXNzLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlIGlzIE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi50ZWxsKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9zZWVrYWJsZQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHJlYWQgbW9kZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSB3cml0ZSBtb2RlLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZkCisKKyAgICBkZWYgaXNhdHR5KHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmlzYXR0eShzZWxmLl9mZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWZkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZmQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2RlKHNlbGYpOgorICAgICAgICAiIiJTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUiIiIKKyAgICAgICAgaWYgc2VsZi5fY3JlYXRlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAneGIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3hiJworICAgICAgICBlbGlmIHNlbGYuX2FwcGVuZGluZzoKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAnYWIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2FiJworICAgICAgICBlbGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICAgICAgcmV0dXJuICdyYisnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAncmInCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJ3diJworCisKIGNsYXNzIFRleHRJT0Jhc2UoSU9CYXNlKToKIAogICAgICIiIkJhc2UgY2xhc3MgZm9yIHRleHQgSS9PLgpAQCAtMTU2Niw3ICsxOTc2LDggQEAKICAgICAjICAgLSAiY2hhcnNfLi4uIiBmb3IgaW50ZWdlciB2YXJpYWJsZXMgdGhhdCBjb3VudCBkZWNvZGVkIGNoYXJhY3RlcnMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gIjxfcHlpby5UZXh0SU9XcmFwcGVyIgorICAgICAgICByZXN1bHQgPSAiPHt9Lnt9Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZjc2ZmZmMS4uMzc0OTIzZCAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC0xNjcsOSArMTY3LDkgQEAKICAgICAgICAgICAgIHRpbWUudHpzZXQoKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIG5vX3NhdmluZyA9IGZyb3plbnNldChbInV0YyIsICJnbXQiLCB0aW1lLnR6bmFtZVswXS5sb3dlcigpXSkKKyAgICAgICAgbm9fc2F2aW5nID0gZnJvemVuc2V0KHsidXRjIiwgImdtdCIsIHRpbWUudHpuYW1lWzBdLmxvd2VyKCl9KQogICAgICAgICBpZiB0aW1lLmRheWxpZ2h0OgotICAgICAgICAgICAgaGFzX3NhdmluZyA9IGZyb3plbnNldChbdGltZS50em5hbWVbMV0ubG93ZXIoKV0pCisgICAgICAgICAgICBoYXNfc2F2aW5nID0gZnJvemVuc2V0KHt0aW1lLnR6bmFtZVsxXS5sb3dlcigpfSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGhhc19zYXZpbmcgPSBmcm96ZW5zZXQoKQogICAgICAgICBzZWxmLnRpbWV6b25lID0gKG5vX3NhdmluZywgaGFzX3NhdmluZykKQEAgLTI1Myw4ICsyNTMsOCBAQAogICAgICAgICAjIGZvcm1hdCBkaXJlY3RpdmVzICglbSwgZXRjLikuCiAgICAgICAgIHJlZ2V4X2NoYXJzID0gcmVfY29tcGlsZShyIihbXFwuXiQqKz9cKFwpe31cW1xdfF0pIikKICAgICAgICAgZm9ybWF0ID0gcmVnZXhfY2hhcnMuc3ViKHIiXFxcMSIsIGZvcm1hdCkKLSAgICAgICAgd2hpdGVzcGFjZV9yZXBsYWNlbWVudCA9IHJlX2NvbXBpbGUoJ1xzKycpCi0gICAgICAgIGZvcm1hdCA9IHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQuc3ViKCdccysnLCBmb3JtYXQpCisgICAgICAgIHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQgPSByZV9jb21waWxlKHInXHMrJykKKyAgICAgICAgZm9ybWF0ID0gd2hpdGVzcGFjZV9yZXBsYWNlbWVudC5zdWIocidcXHMrJywgZm9ybWF0KQogICAgICAgICB3aGlsZSAnJScgaW4gZm9ybWF0OgogICAgICAgICAgICAgZGlyZWN0aXZlX2luZGV4ID0gZm9ybWF0LmluZGV4KCclJykrMQogICAgICAgICAgICAgcHJvY2Vzc2VkX2Zvcm1hdCA9ICIlcyVzJXMiICUgKHByb2Nlc3NlZF9mb3JtYXQsCmRpZmYgLS1naXQgYS9MaWIvYWJjLnB5IGIvTGliL2FiYy5weQppbmRleCAwMzU4YTQ2Li4xY2JmOTZhIDEwMDY0NAotLS0gYS9MaWIvYWJjLnB5CisrKyBiL0xpYi9hYmMucHkKQEAgLTE2OCw3ICsxNjgsNyBAQAogCiAgICAgZGVmIF9kdW1wX3JlZ2lzdHJ5KGNscywgZmlsZT1Ob25lKToKICAgICAgICAgIiIiRGVidWcgaGVscGVyIHRvIHByaW50IHRoZSBBQkMgcmVnaXN0cnkuIiIiCi0gICAgICAgIHByaW50KCJDbGFzczogJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19uYW1lX18pLCBmaWxlPWZpbGUpCisgICAgICAgIHByaW50KCJDbGFzczogJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19xdWFsbmFtZV9fKSwgZmlsZT1maWxlKQogICAgICAgICBwcmludCgiSW52LmNvdW50ZXI6ICVzIiAlIEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlciwgZmlsZT1maWxlKQogICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoY2xzLl9fZGljdF9fLmtleXMoKSk6CiAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIl9hYmNfIik6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggYmUyNzZiYi4uOWEwNjcxOSAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtMTIwOSwxMSArMTIwOSw2IEBACiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikgPT0gdmFycyhvdGhlcikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgTmFtZXNwYWNlKToKLSAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQotCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX19kaWN0X18KIApAQCAtMTU5NSw2ICsxNTkwLDcgQEAKICAgICAgICAgLSBhcmd1bWVudF9kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbGwgYXJndW1lbnRzCiAgICAgICAgIC0gY29uZmxpY3RfaGFuZGxlciAtLSBTdHJpbmcgaW5kaWNhdGluZyBob3cgdG8gaGFuZGxlIGNvbmZsaWN0cwogICAgICAgICAtIGFkZF9oZWxwIC0tIEFkZCBhIC1oLy1oZWxwIG9wdGlvbgorICAgICAgICAtIGFsbG93X2FiYnJldiAtLSBBbGxvdyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdW5hbWJpZ3VvdXNseQogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsCkBAIC0xNjA4LDcgKzE2MDQsOCBAQAogICAgICAgICAgICAgICAgICBmcm9tZmlsZV9wcmVmaXhfY2hhcnM9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXJndW1lbnRfZGVmYXVsdD1Ob25lLAogICAgICAgICAgICAgICAgICBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsCi0gICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUpOgorICAgICAgICAgICAgICAgICBhZGRfaGVscD1UcnVlLAorICAgICAgICAgICAgICAgICBhbGxvd19hYmJyZXY9VHJ1ZSk6CiAKICAgICAgICAgc3VwZXJpbml0ID0gc3VwZXIoQXJndW1lbnRQYXJzZXIsIHNlbGYpLl9faW5pdF9fCiAgICAgICAgIHN1cGVyaW5pdChkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKQEAgLTE2MjYsNiArMTYyMyw3IEBACiAgICAgICAgIHNlbGYuZm9ybWF0dGVyX2NsYXNzID0gZm9ybWF0dGVyX2NsYXNzCiAgICAgICAgIHNlbGYuZnJvbWZpbGVfcHJlZml4X2NoYXJzID0gZnJvbWZpbGVfcHJlZml4X2NoYXJzCiAgICAgICAgIHNlbGYuYWRkX2hlbHAgPSBhZGRfaGVscAorICAgICAgICBzZWxmLmFsbG93X2FiYnJldiA9IGFsbG93X2FiYnJldgogCiAgICAgICAgIGFkZF9ncm91cCA9IHNlbGYuYWRkX2FyZ3VtZW50X2dyb3VwCiAgICAgICAgIHNlbGYuX3Bvc2l0aW9uYWxzID0gYWRkX2dyb3VwKF8oJ3Bvc2l0aW9uYWwgYXJndW1lbnRzJykpCkBAIC0yMTAzLDIzICsyMTAxLDI0IEBACiAgICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zW29wdGlvbl9zdHJpbmddCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnCiAKLSAgICAgICAgIyBzZWFyY2ggdGhyb3VnaCBhbGwgcG9zc2libGUgcHJlZml4ZXMgb2YgdGhlIG9wdGlvbiBzdHJpbmcKLSAgICAgICAgIyBhbmQgYWxsIGFjdGlvbnMgaW4gdGhlIHBhcnNlciBmb3IgcG9zc2libGUgaW50ZXJwcmV0YXRpb25zCi0gICAgICAgIG9wdGlvbl90dXBsZXMgPSBzZWxmLl9nZXRfb3B0aW9uX3R1cGxlcyhhcmdfc3RyaW5nKQorICAgICAgICBpZiBzZWxmLmFsbG93X2FiYnJldjoKKyAgICAgICAgICAgICMgc2VhcmNoIHRocm91Z2ggYWxsIHBvc3NpYmxlIHByZWZpeGVzIG9mIHRoZSBvcHRpb24gc3RyaW5nCisgICAgICAgICAgICAjIGFuZCBhbGwgYWN0aW9ucyBpbiB0aGUgcGFyc2VyIGZvciBwb3NzaWJsZSBpbnRlcnByZXRhdGlvbnMKKyAgICAgICAgICAgIG9wdGlvbl90dXBsZXMgPSBzZWxmLl9nZXRfb3B0aW9uX3R1cGxlcyhhcmdfc3RyaW5nKQogCi0gICAgICAgICMgaWYgbXVsdGlwbGUgYWN0aW9ucyBtYXRjaCwgdGhlIG9wdGlvbiBzdHJpbmcgd2FzIGFtYmlndW91cwotICAgICAgICBpZiBsZW4ob3B0aW9uX3R1cGxlcykgPiAxOgotICAgICAgICAgICAgb3B0aW9ucyA9ICcsICcuam9pbihbb3B0aW9uX3N0cmluZwotICAgICAgICAgICAgICAgIGZvciBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2FyZyBpbiBvcHRpb25fdHVwbGVzXSkKLSAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IGFyZ19zdHJpbmcsICdtYXRjaGVzJzogb3B0aW9uc30KLSAgICAgICAgICAgIG1zZyA9IF8oJ2FtYmlndW91cyBvcHRpb246ICUob3B0aW9uKXMgY291bGQgbWF0Y2ggJShtYXRjaGVzKXMnKQotICAgICAgICAgICAgc2VsZi5lcnJvcihtc2cgJSBhcmdzKQorICAgICAgICAgICAgIyBpZiBtdWx0aXBsZSBhY3Rpb25zIG1hdGNoLCB0aGUgb3B0aW9uIHN0cmluZyB3YXMgYW1iaWd1b3VzCisgICAgICAgICAgICBpZiBsZW4ob3B0aW9uX3R1cGxlcykgPiAxOgorICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAnLCAnLmpvaW4oW29wdGlvbl9zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9yIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnIGluIG9wdGlvbl90dXBsZXNdKQorICAgICAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IGFyZ19zdHJpbmcsICdtYXRjaGVzJzogb3B0aW9uc30KKyAgICAgICAgICAgICAgICBtc2cgPSBfKCdhbWJpZ3VvdXMgb3B0aW9uOiAlKG9wdGlvbilzIGNvdWxkIG1hdGNoICUobWF0Y2hlcylzJykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG1zZyAlIGFyZ3MpCiAKLSAgICAgICAgIyBpZiBleGFjdGx5IG9uZSBhY3Rpb24gbWF0Y2hlZCwgdGhpcyBzZWdtZW50YXRpb24gaXMgZ29vZCwKLSAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KLSAgICAgICAgZWxpZiBsZW4ob3B0aW9uX3R1cGxlcykgPT0gMToKLSAgICAgICAgICAgIG9wdGlvbl90dXBsZSwgPSBvcHRpb25fdHVwbGVzCi0gICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCisgICAgICAgICAgICAjIGlmIGV4YWN0bHkgb25lIGFjdGlvbiBtYXRjaGVkLCB0aGlzIHNlZ21lbnRhdGlvbiBpcyBnb29kLAorICAgICAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KKyAgICAgICAgICAgIGVsaWYgbGVuKG9wdGlvbl90dXBsZXMpID09IDE6CisgICAgICAgICAgICAgICAgb3B0aW9uX3R1cGxlLCA9IG9wdGlvbl90dXBsZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCiAKICAgICAgICAgIyBpZiBpdCB3YXMgbm90IGZvdW5kIGFzIGFuIG9wdGlvbiwgYnV0IGl0IGxvb2tzIGxpa2UgYSBuZWdhdGl2ZQogICAgICAgICAjIG51bWJlciwgaXQgd2FzIG1lYW50IHRvIGJlIHBvc2l0aW9uYWwKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IDAyYzNiMjguLjAzYzMwZjYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMTk0LDcgKzE5NCw3IEBACiAgICAgYmUgZm91bmQuICBJZiB0aGUgbm9kZSBwcm92aWRlZCBkb2VzIG5vdCBoYXZlIGRvY3N0cmluZ3MgYSBUeXBlRXJyb3IKICAgICB3aWxsIGJlIHJhaXNlZC4KICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKKyAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoQXN5bmNGdW5jdGlvbkRlZiwgRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlciBjYW4ndCBoYXZlIGRvY3N0cmluZ3MiICUgbm9kZS5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgaWYgbm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikgYW5kIFwKICAgICAgICBpc2luc3RhbmNlKG5vZGUuYm9keVswXS52YWx1ZSwgU3RyKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCAxNGMxNTJmLi5mNzI4ZDFiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0yODcsNiArMjg3LDkgQEAKIAogY2xhc3MgZmlmbzoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGlzdD1Ob25lKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYnLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKCkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY29yZS5weSBiL0xpYi9hc3luY29yZS5weQppbmRleCAwMGE2Mzk2Li4zYjUxZjBmIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNvcmUucHkKKysrIGIvTGliL2FzeW5jb3JlLnB5CkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgIEVOT1RDT05OLCBFU0hVVERPV04sIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKICAgICAgZXJyb3Jjb2RlCiAKLV9ESVNDT05ORUNURUQgPSBmcm96ZW5zZXQoKEVDT05OUkVTRVQsIEVOT1RDT05OLCBFU0hVVERPV04sIEVDT05OQUJPUlRFRCwgRVBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFQkFERikpCitfRElTQ09OTkVDVEVEID0gZnJvemVuc2V0KHtFQ09OTlJFU0VULCBFTk9UQ09OTiwgRVNIVVRET1dOLCBFQ09OTkFCT1JURUQsIEVQSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREZ9KQogCiB0cnk6CiAgICAgc29ja2V0X21hcApAQCAtMTQxLDEwICsxNDEsNyBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKIAogICAgICAgICBmb3IgZmQgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0xODIsMTAgKzE3OSw4IEBACiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByID0gW10KKworICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQogICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CkBAIC0yMjAsNyArMjE1LDcgQEAKICAgICBjb25uZWN0aW5nID0gRmFsc2UKICAgICBjbG9zaW5nID0gRmFsc2UKICAgICBhZGRyID0gTm9uZQotICAgIGlnbm9yZV9sb2dfdHlwZXMgPSBmcm96ZW5zZXQoWyd3YXJuaW5nJ10pCisgICAgaWdub3JlX2xvZ190eXBlcyA9IGZyb3plbnNldCh7J3dhcm5pbmcnfSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgaWYgbWFwIGlzIE5vbmU6CkBAIC0yNTUsNyArMjUwLDcgQEAKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9uZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBzdGF0dXMgPSBbc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXysiLiIrc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCisgICAgICAgIHN0YXR1cyA9IFtzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fKyIuIitzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX19dCiAgICAgICAgIGlmIHNlbGYuYWNjZXB0aW5nIGFuZCBzZWxmLmFkZHI6CiAgICAgICAgICAgICBzdGF0dXMuYXBwZW5kKCdsaXN0ZW5pbmcnKQogICAgICAgICBlbGlmIHNlbGYuY29ubmVjdGVkOgpAQCAtNDA0LDIwICszOTksNiBAQAogICAgICAgICAgICAgICAgIGlmIHdoeS5hcmdzWzBdIG5vdCBpbiAoRU5PVENPTk4sIEVCQURGKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAotICAgICMgY2hlYXAgaW5oZXJpdGFuY2UsIHVzZWQgdG8gcGFzcyBhbGwgb3RoZXIgYXR0cmlidXRlCi0gICAgIyByZWZlcmVuY2VzIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXRhdHRyID0gZ2V0YXR0cihzZWxmLnNvY2tldCwgYXR0cikKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGF0dHIpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gIiUobWUpcy4lKGF0dHIpcyBpcyBkZXByZWNhdGVkOyB1c2UgJShtZSlzLnNvY2tldC4lKGF0dHIpcyAiIFwKLSAgICAgICAgICAgICAgICAgICJpbnN0ZWFkIiAlIHsnbWUnIDogc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICdhdHRyJyA6IGF0dHJ9Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgICAgICByZXR1cm4gcmV0YXR0cgotCiAgICAgIyBsb2cgYW5kIGxvZ19pbmZvIG1heSBiZSBvdmVycmlkZGVuIHRvIHByb3ZpZGUgbW9yZSBzb3BoaXN0aWNhdGVkCiAgICAgIyBsb2dnaW5nIGFuZCB3YXJuaW5nIG1ldGhvZHMuIEluIGdlbmVyYWwsIGxvZyBpcyBmb3IgJ2hpdCcgbG9nZ2luZwogICAgICMgYW5kICdsb2dfaW5mbycgaXMgZm9yIGluZm9ybWF0aW9uYWwsIHdhcm5pbmcgYW5kIGVycm9yIGxvZ2dpbmcuCkBAIC02MDQsOCArNTg1LDYgQEAKICMgUmVnYXJkbGVzcywgdGhpcyBpcyB1c2VmdWwgZm9yIHBpcGVzLCBhbmQgc3RkaW4vc3Rkb3V0Li4uCiAKIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKLSAgICBpbXBvcnQgZmNudGwKLQogICAgIGNsYXNzIGZpbGVfd3JhcHBlcjoKICAgICAgICAgIyBIZXJlIHdlIG92ZXJyaWRlIGp1c3QgZW5vdWdoIHRvIG1ha2UgYSBmaWxlCiAgICAgICAgICMgbG9vayBsaWtlIGEgc29ja2V0IGZvciB0aGUgcHVycG9zZXMgb2YgYXN5bmNvcmUuCkBAIC02NTYsOSArNjM1LDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLnNldF9maWxlKGZkKQogICAgICAgICAgICAgIyBzZXQgaXQgdG8gbm9uLWJsb2NraW5nIG1vZGUKLSAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBGYWxzZSkKIAogICAgICAgICBkZWYgc2V0X2ZpbGUoc2VsZiwgZmQpOgogICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBmaWxlX3dyYXBwZXIoZmQpCmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA4MjcyZDVjLi41NmI1Zjg1IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzNSwxNCArMjM1LDEzIEBACiAgICAgZmluZm8gPSBnZXRmaWxlaW5mbyhpbnApCiAgICAgb2ZwID0gQmluSGV4KGZpbmZvLCBvdXQpCiAKLSAgICBpZnAgPSBpby5vcGVuKGlucCwgJ3JiJykKLSAgICAjIFhYWFggRG8gdGV4dGZpbGUgdHJhbnNsYXRpb24gb24gbm9uLW1hYyBzeXN0ZW1zCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKLSAgICAgICAgaWYgbm90IGQ6IGJyZWFrCi0gICAgICAgIG9mcC53cml0ZShkKQotICAgIG9mcC5jbG9zZV9kYXRhKCkKLSAgICBpZnAuY2xvc2UoKQorICAgIHdpdGggaW8ub3BlbihpbnAsICdyYicpIGFzIGlmcDoKKyAgICAgICAgIyBYWFhYIERvIHRleHRmaWxlIHRyYW5zbGF0aW9uIG9uIG5vbi1tYWMgc3lzdGVtcworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkOiBicmVhaworICAgICAgICAgICAgb2ZwLndyaXRlKGQpCisgICAgICAgIG9mcC5jbG9zZV9kYXRhKCkKIAogICAgIGlmcCA9IG9wZW5yc3JjKGlucCwgJ3JiJykKICAgICB3aGlsZSBUcnVlOgpAQCAtNDU5LDEzICs0NTgsMTIgQEAKICAgICBpZiBub3Qgb3V0OgogICAgICAgICBvdXQgPSBpZnAuRk5hbWUKIAotICAgIG9mcCA9IGlvLm9wZW4ob3V0LCAnd2InKQotICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBkID0gaWZwLnJlYWQoMTI4MDAwKQotICAgICAgICBpZiBub3QgZDogYnJlYWsKLSAgICAgICAgb2ZwLndyaXRlKGQpCi0gICAgb2ZwLmNsb3NlKCkKKyAgICB3aXRoIGlvLm9wZW4ob3V0LCAnd2InKSBhcyBvZnA6CisgICAgICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGQgPSBpZnAucmVhZCgxMjgwMDApCisgICAgICAgICAgICBpZiBub3QgZDogYnJlYWsKKyAgICAgICAgICAgIG9mcC53cml0ZShkKQogICAgIGlmcC5jbG9zZV9kYXRhKCkKIAogICAgIGQgPSBpZnAucmVhZF9yc3JjKDEyODAwMCkKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IDZjNWE2MGQuLmJjNzhjNTQgMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTIsNiArMTIsNyBAQAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IF9jb21wcmVzc2lvbgogCiB0cnk6CiAgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFJMb2NrCkBAIC0yMywxMyArMjQsMTEgQEAKIAogX01PREVfQ0xPU0VEICAgPSAwCiBfTU9ERV9SRUFEICAgICA9IDEKLV9NT0RFX1JFQURfRU9GID0gMgorIyBWYWx1ZSAyIG5vIGxvbmdlciB1c2VkCiBfTU9ERV9XUklURSAgICA9IDMKIAotX0JVRkZFUl9TSVpFID0gODE5MgogCi0KLWNsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorY2xhc3MgQloyRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAKICAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBiemlwMiAoZGUpY29tcHJlc3Npb24uCiAKQEAgLTYxLDEzICs2MCwxMSBAQAogICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCiAgICAgICAgICIiIgogICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCi0gICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgIyB3cml0ZWxpbmVzKCkgZG9lcyBub3QgZGVhZGxvY2suCiAgICAgICAgIHNlbGYuX2xvY2sgPSBSTG9jaygpCiAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQogICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX3NpemUgPSAtMQogCiAgICAgICAgIGlmIGJ1ZmZlcmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlVzZSBvZiAnYnVmZmVyaW5nJyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKQEAgLTc5LDkgKzc2LDYgQEAKICAgICAgICAgaWYgbW9kZSBpbiAoIiIsICJyIiwgInJiIik6CiAgICAgICAgICAgICBtb2RlID0gInJiIgogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIpOgogICAgICAgICAgICAgbW9kZSA9ICJ3YiIKICAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCkBAIC0xMDcsNiArMTAxLDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQogCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLAorICAgICAgICAgICAgICAgIEJaMkRlY29tcHJlc3NvciwgdHJhaWxpbmdfZXJyb3I9T1NFcnJvcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IDAKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgogCkBAIC0xMTcsOCArMTE4LDggQEAKICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTEzMCw4ICsxMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjbG9zZWQoc2VsZik6CkBAIC0xNDUsMTI1ICsxNDUsMTggQEAKIAogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9idWZmZXIuc2Vla2FibGUoKQogCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFECiAKICAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQogCi0gICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCi0KLSAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9XUklURToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQotCi0gICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQotICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKLQotICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCi0gICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90Ci0gICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCi0gICAgICAgIHdoaWxlIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKSkKLQotICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6Ci0gICAgICAgICAgICAgICAgICAgICMgRW5kLW9mLXN0cmVhbSBtYXJrZXIgYW5kIGVuZCBvZiBmaWxlLiBXZSdyZSBnb29kLgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFByb2JsZW0gLSB3ZSB3ZXJlIGV4cGVjdGluZyBtb3JlIGNvbXByZXNzZWQgZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBUcmFpbGluZyBkYXRhIGlzbid0IGEgdmFsaWQgYnppcDIgc3RyZWFtLiBXZSdyZSBkb25lIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCi0gICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KLSAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgICAgICBibG9ja3MgPSBbXQotICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KLSAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KLSAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCi0KLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBuIC09IGxlbihkYXRhKQotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KICAgICBkZWYgcGVlayhzZWxmLCBuPTApOgogICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KIApAQCAtMjcyLDkgKzE2NSwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgICAgICMgUmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgZmFjdCB0aGF0IEJ1ZmZlcmVkUmVhZGVyLnBlZWsoKQorICAgICAgICAgICAgIyBhbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSAoZXhjZXB0IGF0IEVPRiksIGluZGVwZW5kZW50CisgICAgICAgICAgICAjIG9mIHRoZSB2YWx1ZSBvZiBuCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsobikKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0yODQsNDcgKzE3OCwyOSBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGVsaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKLSAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uIFJlYWRzIHVwIHRvIGEKKyAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgogCiAgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KICAgICAgICAgIiIiCi0gICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgIGlmIChzaXplID09IDAgb3IKLSAgICAgICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgotICAgICAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgotICAgICAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGlmIHNpemUgPiAwOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKLSAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBiLgorICAgICAgICAiIiJSZWFkIGJ5dGVzIGludG8gYi4KIAogICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KICAgICAgICAgIiIiCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50byhzZWxmLCBiKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkaW50byhiKQogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTMzOSwxNSArMjE1LDcgQEAKICAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgICMgU2hvcnRjdXQgZm9yIHRoZSBjb21tb24gY2FzZSAtIHRoZSB3aG9sZSBsaW5lIGlzIGluIHRoZSBidWZmZXIuCi0gICAgICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCi0gICAgICAgICAgICAgICAgaWYgZW5kID4gMDoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4obGluZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZShzaXplKQogCiAgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zNjEsNyArMjI5LDggQEAKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQogICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lcyhzZWxmLCBzaXplKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZXMoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KQEAgLTM4NiwxOCArMjU1LDkgQEAKICAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisgICAgICAgICAgICByZXR1cm4gX2NvbXByZXNzaW9uLkJhc2VTdHJlYW0ud3JpdGVsaW5lcyhzZWxmLCBzZXEpCiAKLSAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KLSAgICBkZWYgX3Jld2luZChzZWxmKToKLSAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQotICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotCi0gICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9aW8uU0VFS19TRVQpOgogICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCiAKICAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKQEAgLTQxNCwzNSArMjc0LDE0IEBACiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCi0KLSAgICAgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCi0gICAgICAgICAgICBpZiB3aGVuY2UgPT0gMDoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgotICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAotICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKLSAgICAgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6ICVzIiAlICh3aGVuY2UsKSkKLQotICAgICAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgotICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgotICAgICAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKLQotICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCi0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci50ZWxsKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogCmRpZmYgLS1naXQgYS9MaWIvY2dpLnB5IGIvTGliL2NnaS5weQppbmRleCA0NWJhZGY2Li4yNmQyNTQ0IDEwMDc1NQotLS0gYS9MaWIvY2dpLnB5CisrKyBiL0xpYi9jZ2kucHkKQEAgLTU2Niw2ICs1NjYsMTIgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbi4iIiIKICAgICAgICAgcmV0dXJuICJGaWVsZFN0b3JhZ2UoJXIsICVyLCAlcikiICUgKApkaWZmIC0tZ2l0IGEvTGliL2NnaXRiLnB5IGIvTGliL2NnaXRiLnB5CmluZGV4IDZlYjUyZTcuLmIyOTExMDAgMTAwNjQ0Ci0tLSBhL0xpYi9jZ2l0Yi5weQorKysgYi9MaWIvY2dpdGIucHkKQEAgLTI5NCw5ICsyOTQsOCBAQAogICAgICAgICAgICAgKGZkLCBwYXRoKSA9IHRlbXBmaWxlLm1rc3RlbXAoc3VmZml4PXN1ZmZpeCwgZGlyPXNlbGYubG9nZGlyKQogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9zLmZkb3BlbihmZCwgJ3cnKQotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQotICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3MuZmRvcGVuKGZkLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQogICAgICAgICAgICAgICAgIG1zZyA9ICclcyBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhpcyBlcnJvci4nICUgcGF0aAogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBzYXZlIHRyYWNlYmFjayB0byAlcywgYnV0IGZhaWxlZC4nICUgcGF0aApkaWZmIC0tZ2l0IGEvTGliL2NvZGUucHkgYi9MaWIvY29kZS5weQppbmRleCBmODE4NGI2Li41MzI0NGUzIDEwMDY0NAotLS0gYS9MaWIvY29kZS5weQorKysgYi9MaWIvY29kZS5weQpAQCAtNyw2ICs3LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IGFyZ3BhcnNlCiBmcm9tIGNvZGVvcCBpbXBvcnQgQ29tbWFuZENvbXBpbGVyLCBjb21waWxlX2NvbW1hbmQKIAogX19hbGxfXyA9IFsiSW50ZXJhY3RpdmVJbnRlcnByZXRlciIsICJJbnRlcmFjdGl2ZUNvbnNvbGUiLCAiaW50ZXJhY3QiLApAQCAtMTM2LDI1ICsxMzcsMTggQEAKICAgICAgICAgVGhlIG91dHB1dCBpcyB3cml0dGVuIGJ5IHNlbGYud3JpdGUoKSwgYmVsb3cuCiAKICAgICAgICAgIiIiCisgICAgICAgIHN5cy5sYXN0X3R5cGUsIHN5cy5sYXN0X3ZhbHVlLCBsYXN0X3RiID0gZWkgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSBsYXN0X3RiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQotICAgICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gdGIKLSAgICAgICAgICAgIHRibGlzdCA9IHRyYWNlYmFjay5leHRyYWN0X3RiKHRiKQotICAgICAgICAgICAgZGVsIHRibGlzdFs6MV0KLSAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9saXN0KHRibGlzdCkKLSAgICAgICAgICAgIGlmIGxpbmVzOgotICAgICAgICAgICAgICAgIGxpbmVzLmluc2VydCgwLCAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuIikKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKKyAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZWlbMF0sIGVpWzFdLCBsYXN0X3RiLnRiX25leHQpCisgICAgICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soZWlbMF0sIGVpWzFdLCBsYXN0X3RiKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgdGJsaXN0ID0gdGIgPSBOb25lCi0gICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCi0gICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQotICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQorICAgICAgICAgICAgbGFzdF90YiA9IGVpID0gTm9uZQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KQEAgLTI5OSw0ICsyOTMsMTIgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGludGVyYWN0KCkKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMiKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5xIG9yIHN5cy5mbGFncy5xdWlldDoKKyAgICAgICAgYmFubmVyID0gJycKKyAgICBlbHNlOgorICAgICAgICBiYW5uZXIgPSBOb25lCisgICAgaW50ZXJhY3QoYmFubmVyKQpkaWZmIC0tZ2l0IGEvTGliL2NvZGVjcy5weSBiL0xpYi9jb2RlY3MucHkKaW5kZXggNGE0ZDA0My4uMjJkNWY4MiAxMDA2NDQKLS0tIGEvTGliL2NvZGVjcy5weQorKysgYi9MaWIvY29kZWNzLnB5CkBAIC0yNyw3ICsyNyw4IEBACiAgICAgICAgICAgICJnZXRpbmNyZW1lbnRhbGRlY29kZXIiLCAiZ2V0cmVhZGVyIiwgImdldHdyaXRlciIsCiAgICAgICAgICAgICJlbmNvZGUiLCAiZGVjb2RlIiwgIml0ZXJlbmNvZGUiLCAiaXRlcmRlY29kZSIsCiAgICAgICAgICAgICJzdHJpY3RfZXJyb3JzIiwgImlnbm9yZV9lcnJvcnMiLCAicmVwbGFjZV9lcnJvcnMiLAotICAgICAgICAgICAieG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzIiwgImJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzIiwKKyAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyIsICJuYW1lcmVwbGFjZV9lcnJvcnMiLAogICAgICAgICAgICAicmVnaXN0ZXJfZXJyb3IiLCAibG9va3VwX2Vycm9yIl0KIAogIyMjIENvbnN0YW50cwpAQCAtMTA1LDggKzEwNiw4IEBACiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzLiVzIG9iamVjdCBmb3IgZW5jb2RpbmcgJXMgYXQgMHgleD4iICUgXAotICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgcmV0dXJuICI8JXMuJXMgb2JqZWN0IGZvciBlbmNvZGluZyAlcyBhdCAlI3g+IiAlIFwKKyAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIGlkKHNlbGYpKQogCiBjbGFzcyBDb2RlYzoKQEAgLTEyNiw3ICsxMjcsOCBAQAogICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScgLSByZXBsYWNlIHdpdGggcHJpdmF0ZSBjb2RlIHBvaW50cyBVK0RDbm4uCiAgICAgICAgICAneG1sY2hhcnJlZnJlcGxhY2UnIC0gUmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuCi0gICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgIC0gUmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZXMKKyAgICAgICAgICdiYWNrc2xhc2hyZXBsYWNlJyAgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAgICAgICduYW1lcmVwbGFjZScgICAgICAgLSBSZXBsYWNlIHdpdGggXFxOey4uLn0gZXNjYXBlIHNlcXVlbmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGZvciBlbmNvZGluZykuCiAKICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgdmlhIHJlZ2lzdGVyX2Vycm9yLgpAQCAtMzU4LDcgKzM2MCw4IEBACiAgICAgICAgICAgICAgJ3htbGNoYXJyZWZyZXBsYWNlJyAtIFJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciByZWZlcmVuY2UuCiAgICAgICAgICAgICAgJ2JhY2tzbGFzaHJlcGxhY2UnICAtIFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VzIChvbmx5IGZvciBlbmNvZGluZykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlcy4KKyAgICAgICAgICAgICAnbmFtZXJlcGxhY2UnICAgICAgIC0gUmVwbGFjZSB3aXRoIFxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMuCiAKICAgICAgICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCBwYXJhbWV0ZXIgdmFsdWVzIGNhbiBiZSBleHRlbmRlZCB2aWEKICAgICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLgpAQCAtNDI4LDcgKzQzMSw4IEBACiAKICAgICAgICAgICAgICAnc3RyaWN0JyAtIHJhaXNlIGEgVmFsdWVFcnJvciAob3IgYSBzdWJjbGFzcykKICAgICAgICAgICAgICAnaWdub3JlJyAtIGlnbm9yZSB0aGUgY2hhcmFjdGVyIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0Ci0gICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7CisgICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlczsKIAogICAgICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHBhcmFtZXRlciB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIHZpYQogICAgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IuCkBAIC0xMDgwLDYgKzEwODQsNyBAQAogICAgIHJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJyZXBsYWNlIikKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBsb29rdXBfZXJyb3IoInhtbGNoYXJyZWZyZXBsYWNlIikKICAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyA9IGxvb2t1cF9lcnJvcigiYmFja3NsYXNocmVwbGFjZSIpCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJuYW1lcmVwbGFjZSIpCiBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgIyBJbiAtLWRpc2FibGUtdW5pY29kZSBidWlsZHMsIHRoZXNlIGVycm9yIGhhbmRsZXIgYXJlIG1pc3NpbmcKICAgICBzdHJpY3RfZXJyb3JzID0gTm9uZQpAQCAtMTA4Nyw2ICsxMDkyLDcgQEAKICAgICByZXBsYWNlX2Vycm9ycyA9IE5vbmUKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBOb25lCiAgICAgYmFja3NsYXNocmVwbGFjZV9lcnJvcnMgPSBOb25lCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gTm9uZQogCiAjIFRlbGwgbW9kdWxlZmluZGVyIHRoYXQgdXNpbmcgY29kZWNzIHByb2JhYmx5IG5lZWRzIHRoZSBlbmNvZGluZ3MKICMgcGFja2FnZQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CmluZGV4IDMzOTU1MmUuLjk0M2NiY2EgMTAwNjQ0Ci0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgX2NvbGxlY3Rpb25zX2FiYwogX19hbGxfXyArPSBfY29sbGVjdGlvbnNfYWJjLl9fYWxsX18KIAotZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKQEAgLTE2LDEwICsxNSw0MCBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHJlcGVhdCBhcyBfcmVwZWF0LCBjaGFpbiBhcyBfY2hhaW4sIHN0YXJtYXAgYXMgX3N0YXJtYXAKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIgYXMgX3JlY3Vyc2l2ZV9yZXByCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIE11dGFibGVTZXF1ZW5jZS5yZWdpc3RlcihkZXF1ZSkKKwordHJ5OgorICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIE9yZGVyZWREaWN0CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitjbGFzcyBfT3JkZXJlZERpY3RLZXlzVmlldyhLZXlzVmlldyk6CisKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHJldmVyc2VkKHNlbGYuX21hcHBpbmcpCisKK2NsYXNzIF9PcmRlcmVkRGljdEl0ZW1zVmlldyhJdGVtc1ZpZXcpOgorCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgZm9yIGtleSBpbiByZXZlcnNlZChzZWxmLl9tYXBwaW5nKToKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHNlbGYuX21hcHBpbmdba2V5XSkKKworY2xhc3MgX09yZGVyZWREaWN0VmFsdWVzVmlldyhWYWx1ZXNWaWV3KToKKworICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIGZvciBrZXkgaW4gcmV2ZXJzZWQoc2VsZi5fbWFwcGluZyk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9tYXBwaW5nW2tleV0KKwogY2xhc3MgX0xpbmsob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAncHJldicsICduZXh0JywgJ2tleScsICdfX3dlYWtyZWZfXycKIApAQCAtODMsNiArMTEyLDggQEAKICAgICAgICAgbGlua19uZXh0ID0gbGluay5uZXh0CiAgICAgICAgIGxpbmtfcHJldi5uZXh0ID0gbGlua19uZXh0CiAgICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CisgICAgICAgIGxpbmsucHJldiA9IE5vbmUKKyAgICAgICAgbGluay5uZXh0ID0gTm9uZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAnb2QuX19pdGVyX18oKSA8PT0+IGl0ZXIob2QpJwpAQCAtMTY2LDkgKzE5NywxOSBAQAogICAgICAgICByZXR1cm4gc2l6ZQogCiAgICAgdXBkYXRlID0gX191cGRhdGUgPSBNdXRhYmxlTWFwcGluZy51cGRhdGUKLSAgICBrZXlzID0gTXV0YWJsZU1hcHBpbmcua2V5cwotICAgIHZhbHVlcyA9IE11dGFibGVNYXBwaW5nLnZhbHVlcwotICAgIGl0ZW1zID0gTXV0YWJsZU1hcHBpbmcuaXRlbXMKKworICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAiRC5rZXlzKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3Mga2V5cyIKKyAgICAgICAgcmV0dXJuIF9PcmRlcmVkRGljdEtleXNWaWV3KHNlbGYpCisKKyAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgICJELml0ZW1zKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgaXRlbXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RJdGVtc1ZpZXcoc2VsZikKKworICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICJELnZhbHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyB2YWx1ZXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RWYWx1ZXNWaWV3KHNlbGYpCisKICAgICBfX25lX18gPSBNdXRhYmxlTWFwcGluZy5fX25lX18KIAogICAgIF9fbWFya2VyID0gb2JqZWN0KCkKQEAgLTIzMyw2ICsyNzQsMTMgQEAKICAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVyKQogCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIExlYXZlIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGluIHBsYWNlLgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIG5hbWVkdHVwbGUKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02OTYsMTQgKzc0NCwyMiBAQAogCiAgICAgZGVmIF9fcG9zX18oc2VsZik6CiAgICAgICAgICdBZGRzIGFuIGVtcHR5IGNvdW50ZXIsIGVmZmVjdGl2ZWx5IHN0cmlwcGluZyBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMnCi0gICAgICAgIHJldHVybiBzZWxmICsgQ291bnRlcigpCisgICAgICAgIHJlc3VsdCA9IENvdW50ZXIoKQorICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgaWYgY291bnQgPiAwOgorICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfX25lZ19fKHNlbGYpOgogICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKICAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KIAogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKyAgICAgICAgcmVzdWx0ID0gQ291bnRlcigpCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjb3VudCA8IDA6CisgICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gMCAtIGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKICAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCkBAIC05NDgsNyArMTAwNCw2IEBACiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPCAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPD0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPT0gc2VsZi5fX2Nhc3Qob3RoZXIpCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgIT0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPiAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPj0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fY2FzdChzZWxmLCBvdGhlcik6CkBAIC0xMDIwLDE1ICsxMDc1LDEzIEBACiAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKTogcmV0dXJuIGZsb2F0KHNlbGYuZGF0YSkKICAgICBkZWYgX19jb21wbGV4X18oc2VsZik6IHJldHVybiBjb21wbGV4KHNlbGYuZGF0YSkKICAgICBkZWYgX19oYXNoX18oc2VsZik6IHJldHVybiBoYXNoKHNlbGYuZGF0YSkKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5kYXRhWzpdLCkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBzdHJpbmcuZGF0YQogICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IHN0cmluZwotICAgIGRlZiBfX25lX18oc2VsZiwgc3RyaW5nKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSAhPSBzdHJpbmcuZGF0YQotICAgICAgICByZXR1cm4gc2VsZi5kYXRhICE9IHN0cmluZwogICAgIGRlZiBfX2x0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8IHN0cmluZy5kYXRhCkBAIC0xMDY4LDkgKzExMjEsMTMgQEAKICAgICBfX3JtdWxfXyA9IF9fbXVsX18KICAgICBkZWYgX19tb2RfXyhzZWxmLCBhcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSAlIGFyZ3MpCisgICAgZGVmIF9fcm1vZF9fKHNlbGYsIGZvcm1hdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmb3JtYXQgJSBhcmdzKQogCiAgICAgIyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGRlZmluZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyOgogICAgIGRlZiBjYXBpdGFsaXplKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmNhcGl0YWxpemUoKSkKKyAgICBkZWYgY2FzZWZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2FzZWZvbGQoKSkKICAgICBkZWYgY2VudGVyKHNlbGYsIHdpZHRoLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2VudGVyKHdpZHRoLCAqYXJncykpCiAgICAgZGVmIGNvdW50KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CkBAIC0xMDkzLDYgKzExNTAsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmZpbmQoc3ViLCBzdGFydCwgZW5kKQogICAgIGRlZiBmb3JtYXQoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0KCphcmdzLCAqKmt3ZHMpCisgICAgZGVmIGZvcm1hdF9tYXAoc2VsZiwgbWFwcGluZyk6CisgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0X21hcChtYXBwaW5nKQogICAgIGRlZiBpbmRleChzZWxmLCBzdWIsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmluZGV4KHN1Yiwgc3RhcnQsIGVuZCkKICAgICBkZWYgaXNhbHBoYShzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2FscGhhKCkKQEAgLTExMDIsNiArMTE2MSw3IEBACiAgICAgZGVmIGlzaWRlbnRpZmllcihzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2lkZW50aWZpZXIoKQogICAgIGRlZiBpc2xvd2VyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzbG93ZXIoKQogICAgIGRlZiBpc251bWVyaWMoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNudW1lcmljKCkKKyAgICBkZWYgaXNwcmludGFibGUoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNwcmludGFibGUoKQogICAgIGRlZiBpc3NwYWNlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzc3BhY2UoKQogICAgIGRlZiBpc3RpdGxlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdGl0bGUoKQogICAgIGRlZiBpc3VwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdXBwZXIoKQpAQCAtMTExMCw2ICsxMTcwLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sanVzdCh3aWR0aCwgKmFyZ3MpKQogICAgIGRlZiBsb3dlcihzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sb3dlcigpKQogICAgIGRlZiBsc3RyaXAoc2VsZiwgY2hhcnM9Tm9uZSk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEubHN0cmlwKGNoYXJzKSkKKyAgICBtYWtldHJhbnMgPSBzdHIubWFrZXRyYW5zCiAgICAgZGVmIHBhcnRpdGlvbihzZWxmLCBzZXApOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnBhcnRpdGlvbihzZXApCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgb2xkLCBuZXcsIG1heHNwbGl0PS0xKToKZGlmZiAtLWdpdCBhL0xpYi9jb21waWxlYWxsLnB5IGIvTGliL2NvbXBpbGVhbGwucHkKaW5kZXggZDk1N2VlNS4uNjRjMGE5YSAxMDA2NDQKLS0tIGEvTGliL2NvbXBpbGVhbGwucHkKKysrIGIvTGliL2NvbXBpbGVhbGwucHkKQEAgLTEsNCArMSw0IEBACi0iIiJNb2R1bGUvc2NyaXB0IHRvIGJ5dGUtY29tcGlsZSBhbGwgLnB5IGZpbGVzIHRvIC5weWMgKG9yIC5weW8pIGZpbGVzLgorIiIiTW9kdWxlL3NjcmlwdCB0byBieXRlLWNvbXBpbGUgYWxsIC5weSBmaWxlcyB0byAucHljIGZpbGVzLgogCiBXaGVuIGNhbGxlZCBhcyBhIHNjcmlwdCB3aXRoIGFyZ3VtZW50cywgdGhpcyBjb21waWxlcyB0aGUgZGlyZWN0b3JpZXMKIGdpdmVuIGFzIGFyZ3VtZW50cyByZWN1cnNpdmVseTsgdGhlIC1sIG9wdGlvbiBwcmV2ZW50cyBpdCBmcm9tCkBAIC0xNiwzMiArMTYsMjQgQEAKIGltcG9ydCBweV9jb21waWxlCiBpbXBvcnQgc3RydWN0CiAKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIFByb2Nlc3NQb29sRXhlY3V0b3IgPSBOb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKLWRlZiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwKLSAgICAgICAgICAgICAgICBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgdHJlZS4KLQotICAgIEFyZ3VtZW50cyAob25seSBkaXIgaXMgcmVxdWlyZWQpOgotCi0gICAgZGlyOiAgICAgICB0aGUgZGlyZWN0b3J5IHRvIGJ5dGUtY29tcGlsZQotICAgIG1heGxldmVsczogbWF4aW11bSByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMTApCi0gICAgZGRpcjogICAgICB0aGUgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIHBhdGggdG8gdGhlCi0gICAgICAgICAgICAgICBmaWxlIGFzIGl0IGlzIGNvbXBpbGVkIGludG8gZWFjaCBieXRlLWNvZGUgZmlsZS4KLSAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgotICAgIGxlZ2FjeTogICAgaWYgVHJ1ZSwgcHJvZHVjZSBsZWdhY3kgcHljIHBhdGhzIGluc3RlYWQgb2YgUEVQIDMxNDcgcGF0aHMKLSAgICBvcHRpbWl6ZTogIG9wdGltaXphdGlvbiBsZXZlbCBvciAtMSBmb3IgbGV2ZWwgb2YgdGhlIGludGVycHJldGVyCi0gICAgIiIiCitkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQogICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwcmludCgiQ2FuJ3QgbGlzdCB7IXJ9Ii5mb3JtYXQoZGlyKSkKKyAgICAgICAgaWYgcXVpZXQgPCAyOgorICAgICAgICAgICAgcHJpbnQoIkNhbid0IGxpc3QgeyFyfSIuZm9ybWF0KGRpcikpCiAgICAgICAgIG5hbWVzID0gW10KICAgICBuYW1lcy5zb3J0KCkKLSAgICBzdWNjZXNzID0gMQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBpZiBuYW1lID09ICdfX3B5Y2FjaGVfXyc6CiAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTEsMTcgKzQzLDUzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkZmlsZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZnVsbG5hbWUpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgIHlpZWxkIGZ1bGxuYW1lCiAgICAgICAgIGVsaWYgKG1heGxldmVscyA+IDAgYW5kIG5hbWUgIT0gb3MuY3VyZGlyIGFuZCBuYW1lICE9IG9zLnBhcmRpciBhbmQKICAgICAgICAgICAgICAgb3MucGF0aC5pc2RpcihmdWxsbmFtZSkgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSkpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGZ1bGxuYW1lLCBtYXhsZXZlbHMgLSAxLCBkZmlsZSwgZm9yY2UsIHJ4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0LCBsZWdhY3ksIG9wdGltaXplKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX3dhbGtfZGlyKGZ1bGxuYW1lLCBkZGlyPWRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGV2ZWxzPW1heGxldmVscyAtIDEsIHF1aWV0PXF1aWV0KQorCitkZWYgY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsCisgICAgICAgICAgICAgICAgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSwgd29ya2Vycz0xKToKKyAgICAiIiJCeXRlLWNvbXBpbGUgYWxsIG1vZHVsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSB0cmVlLgorCisgICAgQXJndW1lbnRzIChvbmx5IGRpciBpcyByZXF1aXJlZCk6CisKKyAgICBkaXI6ICAgICAgIHRoZSBkaXJlY3RvcnkgdG8gYnl0ZS1jb21waWxlCisgICAgbWF4bGV2ZWxzOiBtYXhpbXVtIHJlY3Vyc2lvbiBsZXZlbCAoZGVmYXVsdCAxMCkKKyAgICBkZGlyOiAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUKKyAgICAgICAgICAgICAgIGZpbGUgYXMgaXQgaXMgY29tcGlsZWQgaW50byBlYWNoIGJ5dGUtY29kZSBmaWxlLgorICAgIGZvcmNlOiAgICAgaWYgVHJ1ZSwgZm9yY2UgY29tcGlsYXRpb24sIGV2ZW4gaWYgdGltZXN0YW1wcyBhcmUgdXAtdG8tZGF0ZQorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCisgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocworICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKKyAgICB3b3JrZXJzOiAgIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAgICAiIiIKKyAgICBmaWxlcyA9IF93YWxrX2RpcihkaXIsIHF1aWV0PXF1aWV0LCBtYXhsZXZlbHM9bWF4bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGRkaXI9ZGRpcikKKyAgICBzdWNjZXNzID0gMQorICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd29ya2VycyA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwJykKKworICAgICAgICB3b3JrZXJzID0gd29ya2VycyBvciBOb25lCisgICAgICAgIHdpdGggUHJvY2Vzc1Bvb2xFeGVjdXRvcihtYXhfd29ya2Vycz13b3JrZXJzKSBhcyBleGVjdXRvcjoKKyAgICAgICAgICAgIHJlc3VsdHMgPSBleGVjdXRvci5tYXAocGFydGlhbChjb21waWxlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyLCBmb3JjZT1mb3JjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1yeCwgcXVpZXQ9cXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQorICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9maWxlKGZpbGUsIGRkaXIsIGZvcmNlLCByeCwgcXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeSwgb3B0aW1pemUpOgogICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsCitkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLAogICAgICAgICAgICAgICAgICBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKToKICAgICAiIiJCeXRlLWNvbXBpbGUgb25lIGZpbGUuCiAKQEAgLTcxLDcgKzk5LDggQEAKICAgICBkZGlyOiAgICAgIGlmIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgY29tcGlsZWQgaW4gdG8gdGhlCiAgICAgICAgICAgICAgICBieXRlLWNvZGUgZmlsZS4KICAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKQEAgLTg3LDExICsxMTYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbG5hbWUpOgogICAgICAgICBpZiBsZWdhY3k6Ci0gICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpCisgICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgJ2MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgICAgIG9wdCA9IG9wdGltaXplIGlmIG9wdGltaXplID49IDEgZWxzZSAnJwogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZ1bGxuYW1lKQogICAgICAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGNmaWxlKQpAQCAtMTE0LDcgKzE0NCwxMCBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgaWYgcXVpZXQ6CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcworICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogRXJyb3IgY29tcGlsaW5nIHshcn0uLi4nLmZvcm1hdChmdWxsbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyoqKiAnLCBlbmQ9JycpCkBAIC0xMjMsMjAgKzE1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIGlmIHF1aWV0OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKKyAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgICBwcmludCgnKioqIEVycm9yIGNvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogJywgZW5kPScnKQogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PUZhbHNlLAorZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsCiAgICAgICAgICAgICAgICAgIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpOgogICAgICIiIkJ5dGUtY29tcGlsZSBhbGwgbW9kdWxlIG9uIHN5cy5wYXRoLgogCkBAIC0xNDUsMTQgKzE3OSwxNSBAQAogICAgIHNraXBfY3VyZGlyOiBpZiB0cnVlLCBza2lwIGN1cnJlbnQgZGlyZWN0b3J5IChkZWZhdWx0IFRydWUpCiAgICAgbWF4bGV2ZWxzOiAgIG1heCByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMCkKICAgICBmb3JjZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCi0gICAgcXVpZXQ6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IEZhbHNlKQorICAgIHF1aWV0OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCAwKQogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgogICAgIHN1Y2Nlc3MgPSAxCiAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICAgICAgaWYgKG5vdCBkaXIgb3IgZGlyID09IG9zLmN1cmRpcikgYW5kIHNraXBfY3VyZGlyOgotICAgICAgICAgICAgcHJpbnQoJ1NraXBwaW5nIGN1cnJlbnQgZGlyZWN0b3J5JykKKyAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKKyAgICAgICAgICAgICAgICBwcmludCgnU2tpcHBpbmcgY3VycmVudCBkaXJlY3RvcnknKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgYW5kIGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlLCBxdWlldD1xdWlldCwKQEAgLTE2OSwxMCArMjA0LDE1IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9MCwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MTAsIGRlc3Q9J21heGxldmVscycsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCByZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgdHlwZT1pbnQsIGRlc3Q9J3JlY3Vyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnY29udHJvbCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGV2ZWwuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZiBgLWxgIGFuZCBgLXJgIG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZW4gYC1yYCB0YWtlcyBwcmVjZWRlbmNlLicpKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nZm9yY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZm9yY2UgcmVidWlsZCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwIHRvIGRhdGUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncXVpZXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdjb3VudCcsIGRlc3Q9J3F1aWV0JywgZGVmYXVsdD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXM7IC1xcSB3aWxsIHN1cHByZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBtZXNzYWdlcyBhcyB3ZWxsLicpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdsZWdhY3knLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGxlZ2FjeSAocHJlLVBFUDMxNDcpIGNvbXBpbGVkIGZpbGUgbG9jYXRpb25zJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsIG1ldGF2YXI9J0RFU1RESVInLCAgZGVzdD0nZGRpcicsIGRlZmF1bHQ9Tm9uZSwKQEAgLTE5Miw4ICsyMzIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCd6ZXJvIG9yIG1vcmUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBjb21waWxlOyBpZiBubyBhcmd1bWVudHMgZ2l2ZW4sIGRlZmF1bHRzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZXF1aXZhbGVudCBvZiAtbCBzeXMucGF0aCcpKQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWonLCAnLS13b3JrZXJzJywgZGVmYXVsdD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsIGhlbHA9J1J1biBjb21waWxlYWxsIGNvbmN1cnJlbnRseScpCiAKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIGNvbXBpbGVfZGVzdHMgPSBhcmdzLmNvbXBpbGVfZGVzdAogCiAgICAgaWYgKGFyZ3MuZGRpciBhbmQgKGxlbihjb21waWxlX2Rlc3RzKSAhPSAxCkBAIC0yMDMsNiArMjQ1LDEyIEBACiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBhcmdzLnJ4ID0gcmUuY29tcGlsZShhcmdzLnJ4KQogCisKKyAgICBpZiBhcmdzLnJlY3Vyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgbWF4bGV2ZWxzID0gYXJncy5yZWN1cnNpb24KKyAgICBlbHNlOgorICAgICAgICBtYXhsZXZlbHMgPSBhcmdzLm1heGxldmVscworCiAgICAgIyBpZiBmbGlzdCBpcyBwcm92aWRlZCB0aGVuIGxvYWQgaXQKICAgICBpZiBhcmdzLmZsaXN0OgogICAgICAgICB0cnk6CkBAIC0yMTAsOSArMjU4LDEzIEBACiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9kZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJFcnJvciByZWFkaW5nIGZpbGUgbGlzdCB7fSIuZm9ybWF0KGFyZ3MuZmxpc3QpKQorICAgICAgICAgICAgaWYgYXJncy5xdWlldCA8IDI6CisgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJlYWRpbmcgZmlsZSBsaXN0IHt9Ii5mb3JtYXQoYXJncy5mbGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGlmIGFyZ3Mud29ya2VycyBpcyBub3QgTm9uZToKKyAgICAgICAgYXJncy53b3JrZXJzID0gYXJncy53b3JrZXJzIG9yIE5vbmUKKwogICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgdHJ5OgogICAgICAgICBpZiBjb21waWxlX2Rlc3RzOgpAQCAtMjIyLDE2ICsyNzQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnF1aWV0LCBhcmdzLmxlZ2FjeSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9kaXIoZGVzdCwgYXJncy5tYXhsZXZlbHMsIGFyZ3MuZGRpciwKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGRlc3QsIG1heGxldmVscywgYXJncy5kZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5mb3JjZSwgYXJncy5yeCwgYXJncy5xdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5LCB3b3JrZXJzPWFyZ3Mud29ya2Vycyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZV9wYXRoKGxlZ2FjeT1hcmdzLmxlZ2FjeSwgZm9yY2U9YXJncy5mb3JjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9YXJncy5xdWlldCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQorICAgICAgICBpZiBhcmdzLnF1aWV0IDwgMjoKKyAgICAgICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQppbmRleCBhY2QwNWQwLi45ZTQ0NzEzIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKQEAgLTMwMiwxNyArMzAyLDIwIEBACiAgICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gRklOSVNIRUQ6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxGdXR1cmUgYXQgJXMgc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBoZXgoaWQoc2VsZikpLAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24uX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPEZ1dHVyZSBhdCAlcyBzdGF0ZT0lcyByZXR1cm5lZCAlcz4nICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgaGV4KGlkKHNlbGYpKSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8JXMgYXQgJSN4IHN0YXRlPSVzIHJldHVybmVkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQuX19jbGFzc19fLl9fbmFtZV9fKQotICAgICAgICAgICAgcmV0dXJuICc8RnV0dXJlIGF0ICVzIHN0YXRlPSVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgIGhleChpZChzZWxmKSksCisgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXM+JyAlICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgIF9TVEFURV9UT19ERVNDUklQVElPTl9NQVBbc2VsZi5fc3RhdGVdKQogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTUxNyw3ICs1MjAsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUpOgorICAgIGRlZiBtYXAoc2VsZiwgZm4sICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSwgY2h1bmtzaXplPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGEgaXRlcmF0b3IgZXF1aXZhbGVudCB0byBtYXAoZm4sIGl0ZXIpLgogCiAgICAgICAgIEFyZ3M6CkBAIC01MjUsNiArNTI4LDEwIEBACiAgICAgICAgICAgICAgICAgcGFzc2VkIGl0ZXJhYmxlcy4KICAgICAgICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKICAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgorICAgICAgICAgICAgY2h1bmtzaXplOiBUaGUgc2l6ZSBvZiB0aGUgY2h1bmtzIHRoZSBpdGVyYWJsZSB3aWxsIGJlIGJyb2tlbiBpbnRvCisgICAgICAgICAgICAgICAgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byBhIGNoaWxkIHByb2Nlc3MuIFRoaXMgYXJndW1lbnQgaXMgb25seQorICAgICAgICAgICAgICAgIHVzZWQgYnkgUHJvY2Vzc1Bvb2xFeGVjdXRvcjsgaXQgaXMgaWdub3JlZCBieQorICAgICAgICAgICAgICAgIFRocmVhZFBvb2xFeGVjdXRvci4KIAogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgQW4gaXRlcmF0b3IgZXF1aXZhbGVudCB0bzogbWFwKGZ1bmMsICppdGVyYWJsZXMpIGJ1dCB0aGUgY2FsbHMgbWF5CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKaW5kZXggMDdiNTIyNS4uM2RkNmRhMSAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQpAQCAtNTUsNiArNTUsOSBAQAogZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHdlYWtyZWYKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdHJhY2ViYWNrCiAKICMgV29ya2VycyBhcmUgY3JlYXRlZCBhcyBkYWVtb24gdGhyZWFkcyBhbmQgcHJvY2Vzc2VzLiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlCiAjIGludGVycHJldGVyIHRvIGV4aXQgd2hlbiB0aGVyZSBhcmUgc3RpbGwgaWRsZSBwcm9jZXNzZXMgaW4gYQpAQCAtODgsNiArOTEsMjcgQEAKICMgKEZ1dHVyZXMgaW4gdGhlIGNhbGwgcXVldWUgY2Fubm90IGJlIGNhbmNlbGxlZCkuCiBFWFRSQV9RVUVVRURfQ0FMTFMgPSAxCiAKKyMgSGFjayB0byBlbWJlZCBzdHJpbmdpZmljYXRpb24gb2YgcmVtb3RlIHRyYWNlYmFjayBpbiBsb2NhbCB0cmFjZWJhY2sKKworY2xhc3MgX1JlbW90ZVRyYWNlYmFjayhFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Yik6CisgICAgICAgIHNlbGYudGIgPSB0YgorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50YgorCitjbGFzcyBfRXhjZXB0aW9uV2l0aFRyYWNlYmFjazoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjLCB0Yik6CisgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShleGMpLCBleGMsIHRiKQorICAgICAgICB0YiA9ICcnLmpvaW4odGIpCisgICAgICAgIHNlbGYuZXhjID0gZXhjCisgICAgICAgIHNlbGYudGIgPSAnXG4iIiJcbiVzIiIiJyAlIHRiCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBfcmVidWlsZF9leGMsIChzZWxmLmV4Yywgc2VsZi50YikKKworZGVmIF9yZWJ1aWxkX2V4YyhleGMsIHRiKToKKyAgICBleGMuX19jYXVzZV9fID0gX1JlbW90ZVRyYWNlYmFjayh0YikKKyAgICByZXR1cm4gZXhjCisKIGNsYXNzIF9Xb3JrSXRlbShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdXR1cmUsIGZuLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICBzZWxmLmZ1dHVyZSA9IGZ1dHVyZQpAQCAtMTA4LDYgKzEzMiwyNiBAQAogICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAKK2RlZiBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemUpOgorICAgICIiIiBJdGVyYXRlcyBvdmVyIHppcCgpZWQgaXRlcmFibGVzIGluIGNodW5rcy4gIiIiCisgICAgaXQgPSB6aXAoKml0ZXJhYmxlcykKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjaHVuayA9IHR1cGxlKGl0ZXJ0b29scy5pc2xpY2UoaXQsIGNodW5rc2l6ZSkpCisgICAgICAgIGlmIG5vdCBjaHVuazoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB5aWVsZCBjaHVuaworCitkZWYgX3Byb2Nlc3NfY2h1bmsoZm4sIGNodW5rKToKKyAgICAiIiIgUHJvY2Vzc2VzIGEgY2h1bmsgb2YgYW4gaXRlcmFibGUgcGFzc2VkIHRvIG1hcC4KKworICAgIFJ1bnMgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBtYXAoKSBvbiBhIGNodW5rIG9mIHRoZQorICAgIGl0ZXJhYmxlIHBhc3NlZCB0byBtYXAuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHJ1biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MuCisKKyAgICAiIiIKKyAgICByZXR1cm4gW2ZuKCphcmdzKSBmb3IgYXJncyBpbiBjaHVua10KKwogZGVmIF9wcm9jZXNzX3dvcmtlcihjYWxsX3F1ZXVlLCByZXN1bHRfcXVldWUpOgogICAgICIiIkV2YWx1YXRlcyBjYWxscyBmcm9tIGNhbGxfcXVldWUgYW5kIHBsYWNlcyB0aGUgcmVzdWx0cyBpbiByZXN1bHRfcXVldWUuCiAKQEAgLTEzMCw4ICsxNzQsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gY2FsbF9pdGVtLmZuKCpjYWxsX2l0ZW0uYXJncywgKipjYWxsX2l0ZW0ua3dhcmdzKQogICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uPWUpKQorICAgICAgICAgICAgZXhjID0gX0V4Y2VwdGlvbldpdGhUcmFjZWJhY2soZSwgZS5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwgZXhjZXB0aW9uPWV4YykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KF9SZXN1bHRJdGVtKGNhbGxfaXRlbS53b3JrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9cikpCkBAIC0zMzQsNiArMzc4LDkgQEAKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gb3MuY3B1X2NvdW50KCkgb3IgMQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXhfd29ya2VycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIikKKwogICAgICAgICAgICAgc2VsZi5fbWF4X3dvcmtlcnMgPSBtYXhfd29ya2VycwogCiAgICAgICAgICMgTWFrZSB0aGUgY2FsbCBxdWV1ZSBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyB0bwpAQCAtNDA4LDYgKzQ1NSwzNSBAQAogICAgICAgICAgICAgcmV0dXJuIGYKICAgICBzdWJtaXQuX19kb2NfXyA9IF9iYXNlLkV4ZWN1dG9yLnN1Ym1pdC5fX2RvY19fCiAKKyAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUsIGNodW5rc2l6ZT0xKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG8gbWFwKGZuLCBpdGVyKS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZm46IEEgY2FsbGFibGUgdGhhdCB3aWxsIHRha2UgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgcGFzc2VkIGl0ZXJhYmxlcy4KKyAgICAgICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKKyAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgorICAgICAgICAgICAgY2h1bmtzaXplOiBJZiBncmVhdGVyIHRoYW4gb25lLCB0aGUgaXRlcmFibGVzIHdpbGwgYmUgY2hvcHBlZCBpbnRvCisgICAgICAgICAgICAgICAgY2h1bmtzIG9mIHNpemUgY2h1bmtzaXplIGFuZCBzdWJtaXR0ZWQgdG8gdGhlIHByb2Nlc3MgcG9vbC4KKyAgICAgICAgICAgICAgICBJZiBzZXQgdG8gb25lLCB0aGUgaXRlbXMgaW4gdGhlIGxpc3Qgd2lsbCBiZSBzZW50IG9uZSBhdCBhIHRpbWUuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG86IG1hcChmdW5jLCAqaXRlcmFibGVzKSBidXQgdGhlIGNhbGxzIG1heQorICAgICAgICAgICAgYmUgZXZhbHVhdGVkIG91dC1vZi1vcmRlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBUaW1lb3V0RXJyb3I6IElmIHRoZSBlbnRpcmUgcmVzdWx0IGl0ZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGdpdmVuIHRpbWVvdXQuCisgICAgICAgICAgICBFeGNlcHRpb246IElmIGZuKCphcmdzKSByYWlzZXMgZm9yIGFueSB2YWx1ZXMuCisgICAgICAgICIiIgorICAgICAgICBpZiBjaHVua3NpemUgPCAxOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2h1bmtzaXplIG11c3QgYmUgPj0gMS4iKQorCisgICAgICAgIHJlc3VsdHMgPSBzdXBlcigpLm1hcChwYXJ0aWFsKF9wcm9jZXNzX2NodW5rLCBmbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemU9Y2h1bmtzaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKHJlc3VsdHMpCisKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgd2FpdD1UcnVlKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fc2h1dGRvd25fdGhyZWFkID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCBmOWJlYjBmLi4zYWU0NDJkIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgd2Vha3JlZgoraW1wb3J0IG9zCiAKICMgV29ya2VycyBhcmUgY3JlYXRlZCBhcyBkYWVtb24gdGhyZWFkcy4gVGhpcyBpcyBkb25lIHRvIGFsbG93IHRoZSBpbnRlcnByZXRlcgogIyB0byBleGl0IHdoZW4gdGhlcmUgYXJlIHN0aWxsIGlkbGUgdGhyZWFkcyBpbiBhIFRocmVhZFBvb2xFeGVjdXRvcidzIHRocmVhZApAQCAtODAsMTMgKzgxLDIwIEBACiAgICAgICAgIF9iYXNlLkxPR0dFUi5jcml0aWNhbCgnRXhjZXB0aW9uIGluIHdvcmtlcicsIGV4Y19pbmZvPVRydWUpCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KICAgICAgICAgIiIiCisgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CisgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgorICAgICAgICAgICAgIyB1c2VkIHRvIG92ZXJsYXAgSS9PIGluc3RlYWQgb2YgQ1BVIHdvcmsuCisgICAgICAgICAgICBtYXhfd29ya2VycyA9IChvcy5jcHVfY291bnQoKSBvciAxKSAqIDUKKyAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heF93b3JrZXJzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKQorCiAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbWF4X3dvcmtlcnMKICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICAgc2VsZi5fdGhyZWFkcyA9IHNldCgpCmRpZmYgLS1naXQgYS9MaWIvY29uZmlncGFyc2VyLnB5IGIvTGliL2NvbmZpZ3BhcnNlci5weQppbmRleCBkY2I3ZWM0Li4zYTlmYjU2IDEwMDY0NAotLS0gYS9MaWIvY29uZmlncGFyc2VyLnB5CisrKyBiL0xpYi9jb25maWdwYXJzZXIucHkKQEAgLTE3LDcgKzE3LDggQEAKICAgICBfX2luaXRfXyhkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9X2RlZmF1bHRfZGljdCwgYWxsb3dfbm9fdmFsdWU9RmFsc2UsCiAgICAgICAgICAgICAgZGVsaW1pdGVycz0oJz0nLCAnOicpLCBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksCiAgICAgICAgICAgICAgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsCi0gICAgICAgICAgICAgZW1wdHlfbGluZXNfaW5fdmFsdWVzPVRydWUpOgorICAgICAgICAgICAgIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249J0RFRkFVTFQnLAorICAgICAgICAgICAgIGludGVycG9sYXRpb249PHVuc2V0PiwgY29udmVydGVycz08dW5zZXQ+KToKICAgICAgICAgQ3JlYXRlIHRoZSBwYXJzZXIuIFdoZW4gYGRlZmF1bHRzJyBpcyBnaXZlbiwgaXQgaXMgaW5pdGlhbGl6ZWQgaW50byB0aGUKICAgICAgICAgZGljdGlvbmFyeSBvciBpbnRyaW5zaWMgZGVmYXVsdHMuIFRoZSBrZXlzIG11c3QgYmUgc3RyaW5ncywgdGhlIHZhbHVlcwogICAgICAgICBtdXN0IGJlIGFwcHJvcHJpYXRlIGZvciAlKClzIHN0cmluZyBpbnRlcnBvbGF0aW9uLgpAQCAtNDcsNiArNDgsMjUgQEAKICAgICAgICAgV2hlbiBgYWxsb3dfbm9fdmFsdWUnIGlzIFRydWUgKGRlZmF1bHQ6IEZhbHNlKSwgb3B0aW9ucyB3aXRob3V0CiAgICAgICAgIHZhbHVlcyBhcmUgYWNjZXB0ZWQ7IHRoZSB2YWx1ZSBwcmVzZW50ZWQgZm9yIHRoZXNlIGlzIE5vbmUuCiAKKyAgICAgICAgV2hlbiBgZGVmYXVsdF9zZWN0aW9uJyBpcyBnaXZlbiwgdGhlIG5hbWUgb2YgdGhlIHNwZWNpYWwgc2VjdGlvbiBpcworICAgICAgICBuYW1lZCBhY2NvcmRpbmdseS4gQnkgZGVmYXVsdCBpdCBpcyBjYWxsZWQgYGAiREVGQVVMVCJgYCBidXQgdGhpcyBjYW4KKyAgICAgICAgYmUgY3VzdG9taXplZCB0byBwb2ludCB0byBhbnkgb3RoZXIgdmFsaWQgc2VjdGlvbiBuYW1lLiBJdHMgY3VycmVudAorICAgICAgICB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZSBgYHBhcnNlcl9pbnN0YW5jZS5kZWZhdWx0X3NlY3Rpb25gYAorICAgICAgICBhdHRyaWJ1dGUgYW5kIG1heSBiZSBtb2RpZmllZCBhdCBydW50aW1lLgorCisgICAgICAgIFdoZW4gYGludGVycG9sYXRpb25gIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYW4gSW50ZXJwb2xhdGlvbiBzdWJjbGFzcworICAgICAgICBpbnN0YW5jZS4gSXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBoYW5kbGVyIGZvciBvcHRpb24gdmFsdWUKKyAgICAgICAgcHJlLXByb2Nlc3Npbmcgd2hlbiB1c2luZyBnZXR0ZXJzLiBSYXdDb25maWdQYXJzZXIgb2JqZWN0IHMgZG9uJ3QgZG8KKyAgICAgICAgYW55IHNvcnQgb2YgaW50ZXJwb2xhdGlvbiwgd2hlcmVhcyBDb25maWdQYXJzZXIgdXNlcyBhbiBpbnN0YW5jZSBvZgorICAgICAgICBCYXNpY0ludGVycG9sYXRpb24uIFRoZSBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgYSBgYHpjLmJ1aWxkYm90YGAKKyAgICAgICAgaW5zcGlyZWQgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFdoZW4gYGNvbnZlcnRlcnNgIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5CisgICAgICAgIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgYSB0eXBlIGNvbnZlcnRlciBhbmQgZWFjaCB2YWx1ZSBpcyBhIGNhbGxhYmxlCisgICAgICAgIGltcGxlbWVudGluZyB0aGUgY29udmVyc2lvbiBmcm9tIHN0cmluZyB0byB0aGUgZGVzaXJlZCBkYXRhdHlwZS4gRXZlcnkKKyAgICAgICAgY29udmVydGVyIGdldHMgaXRzIGNvcnJlc3BvbmRpbmcgZ2V0KigpIG1ldGhvZCBvbiB0aGUgcGFyc2VyIG9iamVjdCBhbmQKKyAgICAgICAgc2VjdGlvbiBwcm94aWVzLgorCiAgICAgc2VjdGlvbnMoKQogICAgICAgICBSZXR1cm4gYWxsIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gbmFtZXMsIHNhbnMgREVGQVVMVC4KIApAQCAtMTI5LDkgKzE0OSwxMSBAQAogCiBfX2FsbF9fID0gWyJOb1NlY3Rpb25FcnJvciIsICJEdXBsaWNhdGVPcHRpb25FcnJvciIsICJEdXBsaWNhdGVTZWN0aW9uRXJyb3IiLAogICAgICAgICAgICAiTm9PcHRpb25FcnJvciIsICJJbnRlcnBvbGF0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvbkRlcHRoRXJyb3IiLAotICAgICAgICAgICAiSW50ZXJwb2xhdGlvblN5bnRheEVycm9yIiwgIlBhcnNpbmdFcnJvciIsCi0gICAgICAgICAgICJNaXNzaW5nU2VjdGlvbkhlYWRlckVycm9yIiwKKyAgICAgICAgICAgIkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvblN5bnRheEVycm9yIiwKKyAgICAgICAgICAgIlBhcnNpbmdFcnJvciIsICJNaXNzaW5nU2VjdGlvbkhlYWRlckVycm9yIiwKICAgICAgICAgICAgIkNvbmZpZ1BhcnNlciIsICJTYWZlQ29uZmlnUGFyc2VyIiwgIlJhd0NvbmZpZ1BhcnNlciIsCisgICAgICAgICAgICJJbnRlcnBvbGF0aW9uIiwgIkJhc2ljSW50ZXJwb2xhdGlvbiIsICAiRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIiwKKyAgICAgICAgICAgIkxlZ2FjeUludGVycG9sYXRpb24iLCAiU2VjdGlvblByb3h5IiwgIkNvbnZlcnRlck1hcHBpbmciLAogICAgICAgICAgICAiREVGQVVMVFNFQ1QiLCAiTUFYX0lOVEVSUE9MQVRJT05fREVQVEgiXQogCiBERUZBVUxUU0VDVCA9ICJERUZBVUxUIgpAQCAtNDA4LDcgKzQzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHYgPSBtYXBbdmFyXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgdmFyKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICBpZiAiJSIgaW4gdjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdGlvbiwgYWNjdW0sIHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgbWFwLCBkZXB0aCArIDEpCkBAIC00ODEsNyArNTAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0aGFuIG9uZSAnOicgZm91bmQ6ICVyIiAlIChyZXN0LCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgTm9TZWN0aW9uRXJyb3IsIE5vT3B0aW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsICI6Ii5qb2luKHBhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsICI6Ii5qb2luKHBhdGgpKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICBpZiAiJCIgaW4gdjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdCwgYWNjdW0sIHYsIHNlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChwYXJzZXIuaXRlbXMoc2VjdCwgcmF3PVRydWUpKSwKQEAgLTUxNCw3ICs1MzYsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICUgdmFycwogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsIGUuYXJnc1swXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCBlLmFyZ3NbMF0pIGZyb20gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiB2YWx1ZSBhbmQgIiUoIiBpbiB2YWx1ZToKQEAgLTU3OSwxMSArNjAxLDEyIEBACiAgICAgICAgICAgICAgICAgIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwKICAgICAgICAgICAgICAgICAgc3RyaWN0PVRydWUsIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLAogICAgICAgICAgICAgICAgICBkZWZhdWx0X3NlY3Rpb249REVGQVVMVFNFQ1QsCi0gICAgICAgICAgICAgICAgIGludGVycG9sYXRpb249X1VOU0VUKToKKyAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbj1fVU5TRVQsIGNvbnZlcnRlcnM9X1VOU0VUKToKIAogICAgICAgICBzZWxmLl9kaWN0ID0gZGljdF90eXBlCiAgICAgICAgIHNlbGYuX3NlY3Rpb25zID0gc2VsZi5fZGljdCgpCiAgICAgICAgIHNlbGYuX2RlZmF1bHRzID0gc2VsZi5fZGljdCgpCisgICAgICAgIHNlbGYuX2NvbnZlcnRlcnMgPSBDb252ZXJ0ZXJNYXBwaW5nKHNlbGYpCiAgICAgICAgIHNlbGYuX3Byb3hpZXMgPSBzZWxmLl9kaWN0KCkKICAgICAgICAgc2VsZi5fcHJveGllc1tkZWZhdWx0X3NlY3Rpb25dID0gU2VjdGlvblByb3h5KHNlbGYsIGRlZmF1bHRfc2VjdGlvbikKICAgICAgICAgaWYgZGVmYXVsdHM6CkBAIC02MTEsNiArNjM0LDggQEAKICAgICAgICAgICAgIHNlbGYuX2ludGVycG9sYXRpb24gPSBzZWxmLl9ERUZBVUxUX0lOVEVSUE9MQVRJT04KICAgICAgICAgaWYgc2VsZi5faW50ZXJwb2xhdGlvbiBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGlvbiA9IEludGVycG9sYXRpb24oKQorICAgICAgICBpZiBjb252ZXJ0ZXJzIGlzIG5vdCBfVU5TRVQ6CisgICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZXJzLnVwZGF0ZShjb252ZXJ0ZXJzKQogCiAgICAgZGVmIGRlZmF1bHRzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdHMKQEAgLTY0Niw3ICs2NzEsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcHRzID0gc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0uY29weSgpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pCisgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICAgb3B0cy51cGRhdGUoc2VsZi5fZGVmYXVsdHMpCiAgICAgICAgIHJldHVybiBsaXN0KG9wdHMua2V5cygpKQogCkBAIC03NzQsMzYgKzc5OSwzMSBAQAogICAgIGRlZiBfZ2V0KHNlbGYsIHNlY3Rpb24sIGNvbnYsIG9wdGlvbiwgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gY29udihzZWxmLmdldChzZWN0aW9uLCBvcHRpb24sICoqa3dhcmdzKSkKIAotICAgIGRlZiBnZXRpbnQoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKLSAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCk6CisgICAgZGVmIF9nZXRfY29udihzZWxmLCBzZWN0aW9uLCBvcHRpb24sIGNvbnYsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAorICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgaW50LCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgY29udiwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgKE5vU2VjdGlvbkVycm9yLCBOb09wdGlvbkVycm9yKToKICAgICAgICAgICAgIGlmIGZhbGxiYWNrIGlzIF9VTlNFVDoKICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sKKyAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaworCisgICAgIyBnZXRpbnQsIGdldGZsb2F0IGFuZCBnZXRib29sZWFuIHByb3ZpZGVkIGRpcmVjdGx5IGZvciBiYWNrd2FyZHMgY29tcGF0CisgICAgZGVmIGdldGludChzZWxmLCBzZWN0aW9uLCBvcHRpb24sICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAorICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGludCwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQogCiAgICAgZGVmIGdldGZsb2F0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCi0gICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgZmxvYXQsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzKQotICAgICAgICBleGNlcHQgKE5vU2VjdGlvbkVycm9yLCBOb09wdGlvbkVycm9yKToKLSAgICAgICAgICAgIGlmIGZhbGxiYWNrIGlzIF9VTlNFVDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sKKyAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGZsb2F0LCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaywgKiprd2FyZ3MpCiAKICAgICBkZWYgZ2V0Ym9vbGVhbihzZWxmLCBzZWN0aW9uLCBvcHRpb24sICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAotICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgc2VsZi5fY29udmVydF90b19ib29sZWFuLCBvcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1yYXcsIHZhcnM9dmFycykKLSAgICAgICAgZXhjZXB0IChOb1NlY3Rpb25FcnJvciwgTm9PcHRpb25FcnJvcik6Ci0gICAgICAgICAgICBpZiBmYWxsYmFjayBpcyBfVU5TRVQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIHNlbGYuX2NvbnZlcnRfdG9fYm9vbGVhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1yYXcsIHZhcnM9dmFycywgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQogCiAgICAgZGVmIGl0ZW1zKHNlbGYsIHNlY3Rpb249X1VOU0VULCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgKG5hbWUsIHZhbHVlKSB0dXBsZXMgZm9yIGVhY2ggb3B0aW9uIGluIGEgc2VjdGlvbi4KQEAgLTg3NSw3ICs4OTUsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlY3RkaWN0ID0gc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0KICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKQorICAgICAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pIGZyb20gTm9uZQogICAgICAgICBzZWN0ZGljdFtzZWxmLm9wdGlvbnhmb3JtKG9wdGlvbildID0gdmFsdWUKIAogICAgIGRlZiB3cml0ZShzZWxmLCBmcCwgc3BhY2VfYXJvdW5kX2RlbGltaXRlcnM9VHJ1ZSk6CkBAIC05MTYsNyArOTM2LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWN0ZGljdCA9IHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikKKyAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICAgb3B0aW9uID0gc2VsZi5vcHRpb254Zm9ybShvcHRpb24pCiAgICAgICAgIGV4aXN0ZWQgPSBvcHRpb24gaW4gc2VjdGRpY3QKICAgICAgICAgaWYgZXhpc3RlZDoKQEAgLTExNTMsNiArMTE3MywxMCBAQAogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJvcHRpb24gdmFsdWVzIG11c3QgYmUgc3RyaW5ncyIpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udmVydGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnZlcnRlcnMKKwogCiBjbGFzcyBDb25maWdQYXJzZXIoUmF3Q29uZmlnUGFyc2VyKToKICAgICAiIiJDb25maWdQYXJzZXIgaW1wbGVtZW50aW5nIGludGVycG9sYXRpb24uIiIiCkBAIC0xMTkzLDYgKzEyMTcsMTAgQEAKICAgICAgICAgIiIiQ3JlYXRlcyBhIHZpZXcgb24gYSBzZWN0aW9uIG9mIHRoZSBzcGVjaWZpZWQgYG5hbWVgIGluIGBwYXJzZXJgLiIiIgogICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgZm9yIGNvbnYgaW4gcGFyc2VyLmNvbnZlcnRlcnM6CisgICAgICAgICAgICBrZXkgPSAnZ2V0JyArIGNvbnYKKyAgICAgICAgICAgIGdldHRlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuZ2V0LCBfaW1wbD1nZXRhdHRyKHBhcnNlciwga2V5KSkKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCBnZXR0ZXIpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnPFNlY3Rpb246IHt9PicuZm9ybWF0KHNlbGYuX25hbWUpCkBAIC0xMjI2LDIyICsxMjU0LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZGVmYXVsdHMoKQogCi0gICAgZGVmIGdldChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXQoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCi0gICAgZGVmIGdldGludChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXRpbnQoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCi0gICAgZGVmIGdldGZsb2F0KHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldGZsb2F0KHNlbGYuX25hbWUsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCi0gICAgZGVmIGdldGJvb2xlYW4oc2VsZiwgb3B0aW9uLCBmYWxsYmFjaz1Ob25lLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0Ym9vbGVhbihzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHBhcnNlcihzZWxmKToKICAgICAgICAgIyBUaGUgcGFyc2VyIG9iamVjdCBvZiB0aGUgcHJveHkgaXMgcmVhZC1vbmx5LgpAQCAtMTI1MSwzICsxMjYzLDc3IEBACiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHNlY3Rpb24gb24gYSBwcm94eSBpcyByZWFkLW9ubHkuCiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgZ2V0KHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICBfaW1wbD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICIiIkdldCBhbiBvcHRpb24gdmFsdWUuCisKKyAgICAgICAgVW5sZXNzIGBmYWxsYmFja2AgaXMgcHJvdmlkZWQsIGBOb25lYCB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBvcHRpb24KKyAgICAgICAgaXMgbm90IGZvdW5kLgorCisgICAgICAgICIiIgorICAgICAgICAjIElmIGBfaW1wbGAgaXMgcHJvdmlkZWQsIGl0IHNob3VsZCBiZSBhIGdldHRlciBtZXRob2Qgb24gdGhlIHBhcnNlcgorICAgICAgICAjIG9iamVjdCB0aGF0IHByb3ZpZGVzIHRoZSBkZXNpcmVkIHR5cGUgY29udmVyc2lvbi4KKyAgICAgICAgaWYgbm90IF9pbXBsOgorICAgICAgICAgICAgX2ltcGwgPSBzZWxmLl9wYXJzZXIuZ2V0CisgICAgICAgIHJldHVybiBfaW1wbChzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKKyAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrLCAqKmt3YXJncykKKworCitjbGFzcyBDb252ZXJ0ZXJNYXBwaW5nKE11dGFibGVNYXBwaW5nKToKKyAgICAiIiJFbmFibGVzIHJldXNlIG9mIGdldCooKSBtZXRob2RzIGJldHdlZW4gdGhlIHBhcnNlciBhbmQgc2VjdGlvbiBwcm94aWVzLgorCisgICAgSWYgYSBwYXJzZXIgY2xhc3MgaW1wbGVtZW50cyBhIGdldHRlciBkaXJlY3RseSwgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4KKyAgICBrZXkgd2lsbCBiZSBgYE5vbmVgYC4gVGhlIHByZXNlbmNlIG9mIHRoZSBjb252ZXJ0ZXIgbmFtZSBoZXJlIGVuYWJsZXMKKyAgICBzZWN0aW9uIHByb3hpZXMgdG8gZmluZCBhbmQgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgcGFyc2VyIGNsYXNzLgorICAgICIiIgorCisgICAgR0VUVEVSQ1JFID0gcmUuY29tcGlsZShyIl5nZXQoP1A8bmFtZT4uKykkIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKKyAgICAgICAgc2VsZi5fZGF0YSA9IHt9CisgICAgICAgIGZvciBnZXR0ZXIgaW4gZGlyKHNlbGYuX3BhcnNlcik6CisgICAgICAgICAgICBtID0gc2VsZi5HRVRURVJDUkUubWF0Y2goZ2V0dGVyKQorICAgICAgICAgICAgaWYgbm90IG0gb3Igbm90IGNhbGxhYmxlKGdldGF0dHIoc2VsZi5fcGFyc2VyLCBnZXR0ZXIpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5fZGF0YVttLmdyb3VwKCduYW1lJyldID0gTm9uZSAgICMgU2VlIGNsYXNzIGRvY3N0cmluZy4KKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVtrZXldCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGsgPSAnZ2V0JyArIGtleQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5jb21wYXRpYmxlIGtleToge30gKHR5cGU6IHt9KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycuZm9ybWF0KGtleSwgdHlwZShrZXkpKSkKKyAgICAgICAgaWYgayA9PSAnZ2V0JzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0luY29tcGF0aWJsZSBrZXk6IGNhbm5vdCB1c2UgIiIgYXMgYSBuYW1lJykKKyAgICAgICAgc2VsZi5fZGF0YVtrZXldID0gdmFsdWUKKyAgICAgICAgZnVuYyA9IGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3BhcnNlci5fZ2V0X2NvbnYsIGNvbnY9dmFsdWUpCisgICAgICAgIGZ1bmMuY29udmVydGVyID0gdmFsdWUKKyAgICAgICAgc2V0YXR0cihzZWxmLl9wYXJzZXIsIGssIGZ1bmMpCisgICAgICAgIGZvciBwcm94eSBpbiBzZWxmLl9wYXJzZXIudmFsdWVzKCk6CisgICAgICAgICAgICBnZXR0ZXIgPSBmdW5jdG9vbHMucGFydGlhbChwcm94eS5nZXQsIF9pbXBsPWZ1bmMpCisgICAgICAgICAgICBzZXRhdHRyKHByb3h5LCBrLCBnZXR0ZXIpCisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgayA9ICdnZXQnICsgKGtleSBvciBOb25lKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorICAgICAgICBkZWwgc2VsZi5fZGF0YVtrZXldCisgICAgICAgIGZvciBpbnN0IGluIGl0ZXJ0b29scy5jaGFpbigoc2VsZi5fcGFyc2VyLCksIHNlbGYuX3BhcnNlci52YWx1ZXMoKSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsYXR0cihpbnN0LCBrKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgZG9uJ3QgcmFpc2Ugc2luY2UgdGhlIGVudHJ5IHdhcyBwcmVzZW50IGluIF9kYXRhLCBzaWxlbnRseQorICAgICAgICAgICAgICAgICMgY2xlYW4gdXAKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9kYXRhKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fZGF0YSkKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggMDdiMjI2MS4uNTM3Nzk4NyAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTUsNyArNSw3IEBACiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKIAogX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIiwgIkV4aXRTdGFjayIsCi0gICAgICAgICAgICJyZWRpcmVjdF9zdGRvdXQiLCAic3VwcHJlc3MiXQorICAgICAgICAgICAicmVkaXJlY3Rfc3Rkb3V0IiwgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtNzcsMTAgKzc3LDE3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5nZW4udGhyb3codHlwZSwgdmFsdWUsIHRyYWNlYmFjaykKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImdlbmVyYXRvciBkaWRuJ3Qgc3RvcCBhZnRlciB0aHJvdygpIikKICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIFN1cHByZXNzIHRoZSBleGNlcHRpb24gKnVubGVzcyogaXQncyB0aGUgc2FtZSBleGNlcHRpb24gdGhhdAorICAgICAgICAgICAgICAgICMgU3VwcHJlc3MgU3RvcEl0ZXJhdGlvbiAqdW5sZXNzKiBpdCdzIHRoZSBzYW1lIGV4Y2VwdGlvbiB0aGF0CiAgICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIHRvIHRocm93KCkuICBUaGlzIHByZXZlbnRzIGEgU3RvcEl0ZXJhdGlvbgotICAgICAgICAgICAgICAgICMgcmFpc2VkIGluc2lkZSB0aGUgIndpdGgiIHN0YXRlbWVudCBmcm9tIGJlaW5nIHN1cHByZXNzZWQKKyAgICAgICAgICAgICAgICAjIHJhaXNlZCBpbnNpZGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgZnJvbSBiZWluZyBzdXBwcmVzc2VkLgogICAgICAgICAgICAgICAgIHJldHVybiBleGMgaXMgbm90IHZhbHVlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIExpa2V3aXNlLCBhdm9pZCBzdXBwcmVzc2luZyBpZiBhIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIHRvIHRocm93KCkgYW5kIGxhdGVyIHdyYXBwZWQgaW50byBhIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgICAgICMgKHNlZSBQRVAgNDc5KS4KKyAgICAgICAgICAgICAgICBpZiBleGMuX19jYXVzZV9fIGlzIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICMgb25seSByZS1yYWlzZSBpZiBpdCdzICpub3QqIHRoZSBleGNlcHRpb24gdGhhdCB3YXMKICAgICAgICAgICAgICAgICAjIHBhc3NlZCB0byB0aHJvdygpLCBiZWNhdXNlIF9fZXhpdF9fKCkgbXVzdCBub3QgcmFpc2UKQEAgLTE1MSw4ICsxNTgsMjcgQEAKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCiAKLWNsYXNzIHJlZGlyZWN0X3N0ZG91dDoKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRlbXBvcmFyaWx5IHJlZGlyZWN0aW5nIHN0ZG91dCB0byBhbm90aGVyIGZpbGUKKworY2xhc3MgX1JlZGlyZWN0U3RyZWFtOgorCisgICAgX3N0cmVhbSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfdGFyZ2V0KToKKyAgICAgICAgc2VsZi5fbmV3X3RhcmdldCA9IG5ld190YXJnZXQKKyAgICAgICAgIyBXZSB1c2UgYSBsaXN0IG9mIG9sZCB0YXJnZXRzIHRvIG1ha2UgdGhpcyBDTSByZS1lbnRyYW50CisgICAgICAgIHNlbGYuX29sZF90YXJnZXRzID0gW10KKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuX29sZF90YXJnZXRzLmFwcGVuZChnZXRhdHRyKHN5cywgc2VsZi5fc3RyZWFtKSkKKyAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYuX3N0cmVhbSwgc2VsZi5fbmV3X3RhcmdldCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX25ld190YXJnZXQKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGN0eXBlLCBleGNpbnN0LCBleGN0Yik6CisgICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0sIHNlbGYuX29sZF90YXJnZXRzLnBvcCgpKQorCisKK2NsYXNzIHJlZGlyZWN0X3N0ZG91dChfUmVkaXJlY3RTdHJlYW0pOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGVtcG9yYXJpbHkgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIGFub3RoZXIgZmlsZS4KIAogICAgICAgICAjIEhvdyB0byBzZW5kIGhlbHAoKSB0byBzdGRlcnIKICAgICAgICAgd2l0aCByZWRpcmVjdF9zdGRvdXQoc3lzLnN0ZGVycik6CkBAIC0xNjQsMTggKzE5MCwxMyBAQAogICAgICAgICAgICAgICAgIGhlbHAocG93KQogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld190YXJnZXQpOgotICAgICAgICBzZWxmLl9uZXdfdGFyZ2V0ID0gbmV3X3RhcmdldAotICAgICAgICAjIFdlIHVzZSBhIGxpc3Qgb2Ygb2xkIHRhcmdldHMgdG8gbWFrZSB0aGlzIENNIHJlLWVudHJhbnQKLSAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMgPSBbXQorICAgIF9zdHJlYW0gPSAic3Rkb3V0IgogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMuYXBwZW5kKHN5cy5zdGRvdXQpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLl9uZXdfdGFyZ2V0Ci0gICAgICAgIHJldHVybiBzZWxmLl9uZXdfdGFyZ2V0CiAKLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjdHlwZSwgZXhjaW5zdCwgZXhjdGIpOgotICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5fb2xkX3RhcmdldHMucG9wKCkKK2NsYXNzIHJlZGlyZWN0X3N0ZGVycihfUmVkaXJlY3RTdHJlYW0pOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGVtcG9yYXJpbHkgcmVkaXJlY3Rpbmcgc3RkZXJyIHRvIGFub3RoZXIgZmlsZS4iIiIKKworICAgIF9zdHJlYW0gPSAic3RkZXJyIgogCiAKIGNsYXNzIHN1cHByZXNzOgpkaWZmIC0tZ2l0IGEvTGliL2NvcHkucHkgYi9MaWIvY29weS5weQppbmRleCBiYjg4NDBlLi4zYTQ1ZmRmIDEwMDY0NAotLS0gYS9MaWIvY29weS5weQorKysgYi9MaWIvY29weS5weQpAQCAtOTQsNyArOTQsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJlZHVjdG9yID0gZ2V0YXR0cih4LCAiX19yZWR1Y2VfZXhfXyIsIE5vbmUpCiAgICAgICAgIGlmIHJlZHVjdG9yOgotICAgICAgICAgICAgcnYgPSByZWR1Y3RvcigyKQorICAgICAgICAgICAgcnYgPSByZWR1Y3Rvcig0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9fIiwgTm9uZSkKICAgICAgICAgICAgIGlmIHJlZHVjdG9yOgpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9leF9fIiwgTm9uZSkKICAgICAgICAgICAgICAgICAgICAgaWYgcmVkdWN0b3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjdG9yKDIpCisgICAgICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjdG9yKDQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICByZWR1Y3RvciA9IGdldGF0dHIoeCwgIl9fcmVkdWNlX18iLCBOb25lKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVkdWN0b3I6CkBAIC0yMjEsMTcgKzIyMSwxNSBAQAogZFtsaXN0XSA9IF9kZWVwY29weV9saXN0CiAKIGRlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbyk6Ci0gICAgeSA9IFtdCi0gICAgZm9yIGEgaW4geDoKLSAgICAgICAgeS5hcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCisgICAgeSA9IFtkZWVwY29weShhLCBtZW1vKSBmb3IgYSBpbiB4XQogICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQogICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIG1lbW9baWQoeCldCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICBwYXNzCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKHgpKToKLSAgICAgICAgaWYgeFtpXSBpcyBub3QgeVtpXToKKyAgICBmb3IgaywgaiBpbiB6aXAoeCwgeSk6CisgICAgICAgIGlmIGsgaXMgbm90IGo6CiAgICAgICAgICAgICB5ID0gdHVwbGUoeSkKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9jc3YucHkgYi9MaWIvY3N2LnB5CmluZGV4IGE1NmVlZDguLmNhNDBlNWUgMTAwNjQ0Ci0tLSBhL0xpYi9jc3YucHkKKysrIGIvTGliL2Nzdi5weQpAQCAtMTQ3LDE2ICsxNDcsMTMgQEAKICAgICAgICAgICAgIGlmIHdyb25nX2ZpZWxkczoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkaWN0IGNvbnRhaW5zIGZpZWxkcyBub3QgaW4gZmllbGRuYW1lczogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCAiLmpvaW4oW3JlcHIoeCkgZm9yIHggaW4gd3JvbmdfZmllbGRzXSkpCi0gICAgICAgIHJldHVybiBbcm93ZGljdC5nZXQoa2V5LCBzZWxmLnJlc3R2YWwpIGZvciBrZXkgaW4gc2VsZi5maWVsZG5hbWVzXQorICAgICAgICByZXR1cm4gKHJvd2RpY3QuZ2V0KGtleSwgc2VsZi5yZXN0dmFsKSBmb3Iga2V5IGluIHNlbGYuZmllbGRuYW1lcykKIAogICAgIGRlZiB3cml0ZXJvdyhzZWxmLCByb3dkaWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlcm93KHNlbGYuX2RpY3RfdG9fbGlzdChyb3dkaWN0KSkKIAogICAgIGRlZiB3cml0ZXJvd3Moc2VsZiwgcm93ZGljdHMpOgotICAgICAgICByb3dzID0gW10KLSAgICAgICAgZm9yIHJvd2RpY3QgaW4gcm93ZGljdHM6Ci0gICAgICAgICAgICByb3dzLmFwcGVuZChzZWxmLl9kaWN0X3RvX2xpc3Qocm93ZGljdCkpCi0gICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZXJvd3Mocm93cykKKyAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlcm93cyhtYXAoc2VsZi5fZGljdF90b19saXN0LCByb3dkaWN0cykpCiAKICMgR3VhcmQgU25pZmZlcidzIHR5cGUgY2hlY2tpbmcgYWdhaW5zdCBidWlsZHMgdGhhdCBleGNsdWRlIGNvbXBsZXgoKQogdHJ5OgpAQCAtMjMxLDIwICsyMjgsMjEgQEAKICAgICAgICAgcXVvdGVzID0ge30KICAgICAgICAgZGVsaW1zID0ge30KICAgICAgICAgc3BhY2VzID0gMAorICAgICAgICBncm91cGluZGV4ID0gcmVnZXhwLmdyb3VwaW5kZXgKICAgICAgICAgZm9yIG0gaW4gbWF0Y2hlczoKLSAgICAgICAgICAgIG4gPSByZWdleHAuZ3JvdXBpbmRleFsncXVvdGUnXSAtIDEKKyAgICAgICAgICAgIG4gPSBncm91cGluZGV4WydxdW90ZSddIC0gMQogICAgICAgICAgICAga2V5ID0gbVtuXQogICAgICAgICAgICAgaWYga2V5OgogICAgICAgICAgICAgICAgIHF1b3Rlc1trZXldID0gcXVvdGVzLmdldChrZXksIDApICsgMQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG4gPSByZWdleHAuZ3JvdXBpbmRleFsnZGVsaW0nXSAtIDEKKyAgICAgICAgICAgICAgICBuID0gZ3JvdXBpbmRleFsnZGVsaW0nXSAtIDEKICAgICAgICAgICAgICAgICBrZXkgPSBtW25dCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGtleSBhbmQgKGRlbGltaXRlcnMgaXMgTm9uZSBvciBrZXkgaW4gZGVsaW1pdGVycyk6CiAgICAgICAgICAgICAgICAgZGVsaW1zW2tleV0gPSBkZWxpbXMuZ2V0KGtleSwgMCkgKyAxCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbiA9IHJlZ2V4cC5ncm91cGluZGV4WydzcGFjZSddIC0gMQorICAgICAgICAgICAgICAgIG4gPSBncm91cGluZGV4WydzcGFjZSddIC0gMQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBtW25dOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggNWM4MDNmZi4uNGNiNmQwZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0yMzcsMTQgKzIzNyw4IEBACiAKIGNsYXNzIGNfY2hhcl9wKF9TaW1wbGVDRGF0YSk6CiAgICAgX3R5cGVfID0gInoiCi0gICAgaWYgX29zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgaWYgbm90IHdpbmRsbC5rZXJuZWwzMi5Jc0JhZFN0cmluZ1B0ckEoc2VsZiwgLTEpOgotICAgICAgICAgICAgICAgIHJldHVybiAiJXMoJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi52YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY2FzdChzZWxmLCBjX3ZvaWRfcCkudmFsdWUpCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICIlcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBjYXN0KHNlbGYsIGNfdm9pZF9wKS52YWx1ZSkKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY192b2lkX3AuZnJvbV9idWZmZXIoc2VsZikudmFsdWUpCiBfY2hlY2tfc2l6ZShjX2NoYXJfcCwgIlAiKQogCiBjbGFzcyBjX3ZvaWRfcChfU2ltcGxlQ0RhdGEpOgpAQCAtMjU5LDYgKzI1Myw4IEBACiAKIGNsYXNzIGNfd2NoYXJfcChfU2ltcGxlQ0RhdGEpOgogICAgIF90eXBlXyA9ICJaIgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIlcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBjX3ZvaWRfcC5mcm9tX2J1ZmZlcihzZWxmKS52YWx1ZSkKIAogY2xhc3MgY193Y2hhcihfU2ltcGxlQ0RhdGEpOgogICAgIF90eXBlXyA9ICJ1IgpAQCAtMzUzLDcgKzM0OSw3IEBACiAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5kbGUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8JXMgJyVzJywgaGFuZGxlICV4IGF0ICV4PiIgJSBcCisgICAgICAgIHJldHVybiAiPCVzICclcycsIGhhbmRsZSAleCBhdCAlI3g+IiAlIFwKICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbmFtZSwKICAgICAgICAgICAgICAgICAoc2VsZi5faGFuZGxlICYgKF9zeXMubWF4c2l6ZSoyICsgMSkpLAogICAgICAgICAgICAgICAgIGlkKHNlbGYpICYgKF9zeXMubWF4c2l6ZSoyICsgMSkpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19lbmRpYW4ucHkgYi9MaWIvY3R5cGVzL19lbmRpYW4ucHkKaW5kZXggZGFlNjVmYy4uMzc0NDRiZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fZW5kaWFuLnB5CisrKyBiL0xpYi9jdHlwZXMvX2VuZGlhbi5weQpAQCAtNDUsNiArNDUsNyBAQAogCiAgICAgY2xhc3MgQmlnRW5kaWFuU3RydWN0dXJlKFN0cnVjdHVyZSwgbWV0YWNsYXNzPV9zd2FwcGVkX21ldGEpOgogICAgICAgICAiIiJTdHJ1Y3R1cmUgd2l0aCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIiIiIKKyAgICAgICAgX19zbG90c19fID0gKCkKICAgICAgICAgX3N3YXBwZWRieXRlc18gPSBOb25lCiAKIGVsaWYgc3lzLmJ5dGVvcmRlciA9PSAiYmlnIjoKQEAgLTUzLDYgKzU0LDcgQEAKICAgICBCaWdFbmRpYW5TdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmUKICAgICBjbGFzcyBMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUoU3RydWN0dXJlLCBtZXRhY2xhc3M9X3N3YXBwZWRfbWV0YSk6CiAgICAgICAgICIiIlN0cnVjdHVyZSB3aXRoIGxpdHRsZSBlbmRpYW4gYnl0ZSBvcmRlciIiIgorICAgICAgICBfX3Nsb3RzX18gPSAoKQogICAgICAgICBfc3dhcHBlZGJ5dGVzXyA9IE5vbmUKIAogZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2FzX3BhcmFtZXRlci5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2FzX3BhcmFtZXRlci5weQppbmRleCA5NDhiNDYzLi4yYTM0ODRiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hc19wYXJhbWV0ZXIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYXNfcGFyYW1ldGVyLnB5CkBAIC0xOTQsNyArMTk0LDcgQEAKIAogICAgICAgICBhID0gQSgpCiAgICAgICAgIGEuX2FzX3BhcmFtZXRlcl8gPSBhCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBjX2ludC5mcm9tX3BhcmFtKGEpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYnl0ZXN3YXAucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weQppbmRleCA0MjdiYjhiLi4wMWM5N2U4IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weQpAQCAtMjIsNiArMjIsMjYgQEAKICAgICAgICAgICAgIHNldGF0dHIoYml0cywgImklcyIgJSBpLCAxKQogICAgICAgICAgICAgZHVtcChiaXRzKQogCisgICAgZGVmIHRlc3Rfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEJpZ1BvaW50KEJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY19pbnQpLCAoInkiLCBjX2ludCldCisKKyAgICAgICAgY2xhc3MgTG93UG9pbnQoTGl0dGxlRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgICAgICBfZmllbGRzXyA9IFsoIngiLCBjX2ludCksICgieSIsIGNfaW50KV0KKworICAgICAgICBiaWcgPSBCaWdQb2ludCgpCisgICAgICAgIGxpdHRsZSA9IExvd1BvaW50KCkKKyAgICAgICAgYmlnLnggPSA0CisgICAgICAgIGJpZy55ID0gMgorICAgICAgICBsaXR0bGUueCA9IDIKKyAgICAgICAgbGl0dGxlLnkgPSA0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgYmlnLnogPSA0MgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGxpdHRsZS56ID0gMjQKKwogICAgIGRlZiB0ZXN0X2VuZGlhbl9zaG9ydChzZWxmKToKICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY19zaG9ydC5fX2N0eXBlX2xlX18sIGNfc2hvcnQpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQppbmRleCA0ZmI4OTY0Li4yODQ2OGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKQEAgLTUyLDcgKzUyLDkgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUobGliY19uYW1lKQorICAgICAgICAjIENSVCBpcyBubyBsb25nZXIgZGlyZWN0bHkgbG9hZGFibGUuIFNlZSBpc3N1ZTIzNjA2IGZvciB0aGUKKyAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCisgICAgICAgICNzZWxmLmFzc2VydElzTm90Tm9uZShsaWJjX25hbWUpCiAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJrZXJuZWwzMiIpKQogICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJ1c2VyMzIiKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BvaW50ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKaW5kZXggZTI0YTUyMC4uNDA3MzhmNyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKQEAgLTIyLDcgKzIyLDEwIEBACiAgICAgZGVmIHRlc3RfcGFzc19wb2ludGVycyhzZWxmKToKICAgICAgICAgZGxsID0gQ0RMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCiAgICAgICAgIGZ1bmMgPSBkbGwuX3Rlc3RmdW5jX3BfcAotICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKKyAgICAgICAgaWYgc2l6ZW9mKGNfbG9uZ2xvbmcpID09IHNpemVvZihjX3ZvaWRfcCk6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmdsb25nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKIAogICAgICAgICBpID0gY19pbnQoMTIzNDU2NzgpCiAjIyAgICAgICAgZnVuYy5hcmd0eXBlcyA9IChQT0lOVEVSKGNfaW50KSwpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHJvdG90eXBlcy5weQppbmRleCA4MThjMTExLi5jZDBjNjQ5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3Byb3RvdHlwZXMucHkKQEAgLTY5LDcgKzY5LDEwIEBACiAKICAgICBkZWYgdGVzdF9pbnRfcG9pbnRlcl9hcmcoc2VsZik6CiAgICAgICAgIGZ1bmMgPSB0ZXN0ZGxsLl90ZXN0ZnVuY19wX3AKLSAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nCisgICAgICAgIGlmIHNpemVvZihjX2xvbmdsb25nKSA9PSBzaXplb2YoY192b2lkX3ApOgorICAgICAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nbG9uZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZnVuYygwKSkKIAogICAgICAgICBjaSA9IGNfaW50KDApCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKaW5kZXggMWMxZmQ3ZC4uOTU1MWU3YSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQpAQCAtNTksOCArNTksMTMgQEAKICAgICAgICAgaXRlbXMgPSBbXQogICAgICAgICAjIF9mcm96ZW5faW1wb3J0bGliIGNoYW5nZXMgc2l6ZSB3aGVuZXZlciBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogICAgICAgICAjIGNoYW5nZXMsIHNvIGl0IGdldHMgYSBzcGVjaWFsIGNhc2UuICBXZSBzaG91bGQgbWFrZSBzdXJlIGl0J3MKLSAgICAgICAgIyBmb3VuZCwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IGl0cyBzaXplIHRvbyBtdWNoLgotICAgICAgICBfZnpuX2ltcGxpYl9zZWVuID0gRmFsc2UKKyAgICAgICAgIyBmb3VuZCwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IGl0cyBzaXplIHRvbyBtdWNoLiAgVGhlIHNhbWUKKyAgICAgICAgIyBhcHBsaWVzIHRvIF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsLgorICAgICAgICBib290c3RyYXBfc2VlbiA9IFtdCisgICAgICAgIGJvb3RzdHJhcF9leHBlY3RlZCA9IFsKKyAgICAgICAgICAgICAgICBiJ19mcm96ZW5faW1wb3J0bGliJywKKyAgICAgICAgICAgICAgICBiJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJywKKyAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciBlbnRyeSBpbiBmdDoKICAgICAgICAgICAgICMgVGhpcyBpcyBkYW5nZXJvdXMuIFdlICpjYW4qIGl0ZXJhdGUgb3ZlciBhIHBvaW50ZXIsIGJ1dAogICAgICAgICAgICAgIyB0aGUgbG9vcCB3aWxsIG5vdCB0ZXJtaW5hdGUgKG1heWJlIHdpdGggYW4gYWNjZXNzCkBAIC02OCwxMCArNzMsMTAgQEAKICAgICAgICAgICAgIGlmIGVudHJ5Lm5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiBlbnRyeS5uYW1lID09IGInX2Zyb3plbl9pbXBvcnRsaWInOgotICAgICAgICAgICAgICAgIF9mem5faW1wbGliX3NlZW4gPSBUcnVlCisgICAgICAgICAgICBpZiBlbnRyeS5uYW1lIGluIGJvb3RzdHJhcF9leHBlY3RlZDoKKyAgICAgICAgICAgICAgICBib290c3RyYXBfc2Vlbi5hcHBlbmQoZW50cnkubmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW50cnkuc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIl9mcm96ZW5faW1wb3J0bGliIHdhcyByZXBvcnRlZCBhcyBoYXZpbmcgbm8gc2l6ZSIpCisgICAgICAgICAgICAgICAgICAgICJ7fSB3YXMgcmVwb3J0ZWQgYXMgaGF2aW5nIG5vIHNpemUiLmZvcm1hdChlbnRyeS5uYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKChlbnRyeS5uYW1lLCBlbnRyeS5zaXplKSkKIApAQCAtODEsOCArODYsOCBAQAogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbXMsIGV4cGVjdGVkKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfZnpuX2ltcGxpYl9zZWVuLAotICAgICAgICAgICAgIl9mcm96ZW5faW1wb3J0bGliIHdhc24ndCBmb3VuZCBpbiBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoYm9vdHN0cmFwX3NlZW4pLCBib290c3RyYXBfZXhwZWN0ZWQsCisgICAgICAgICAgICAiZnJvemVuIGJvb3RzdHJhcCBtb2R1bGVzIGRpZCBub3QgbWF0Y2ggUHlJbXBvcnRfRnJvemVuTW9kdWxlcyIpCiAKICAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IF9wb2ludGVyX3R5cGVfY2FjaGUKICAgICAgICAgZGVsIF9wb2ludGVyX3R5cGVfY2FjaGVbc3RydWN0X2Zyb3plbl0KZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCA1OTUxMTNiLi45ZTc0Y2NkIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC0xOSw2ICsxOSw4IEBACiAgICAgICAgIGkgPSBpICsgbGVuKHByZWZpeCkKICAgICAgICAgcywgcmVzdCA9IHN5cy52ZXJzaW9uW2k6XS5zcGxpdCgiICIsIDEpCiAgICAgICAgIG1ham9yVmVyc2lvbiA9IGludChzWzotMl0pIC0gNgorICAgICAgICBpZiBtYWpvclZlcnNpb24gPj0gMTM6CisgICAgICAgICAgICBtYWpvclZlcnNpb24gKz0gMQogICAgICAgICBtaW5vclZlcnNpb24gPSBpbnQoc1syOjNdKSAvIDEwLjAKICAgICAgICAgIyBJIGRvbid0IHRoaW5rIHBhdGhzIGFyZSBhZmZlY3RlZCBieSBtaW5vciB2ZXJzaW9uIGluIHZlcnNpb24gNgogICAgICAgICBpZiBtYWpvclZlcnNpb24gPT0gNjoKQEAgLTM2LDggKzM4LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBpZiB2ZXJzaW9uIDw9IDY6CiAgICAgICAgICAgICBjbGlibmFtZSA9ICdtc3ZjcnQnCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgdmVyc2lvbiA8PSAxMzoKICAgICAgICAgICAgIGNsaWJuYW1lID0gJ21zdmNyJWQnICUgKHZlcnNpb24gKiAxMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQ1JUIGlzIG5vIGxvbmdlciBkaXJlY3RseSBsb2FkYWJsZS4gU2VlIGlzc3VlMjM2MDYgZm9yIHRoZQorICAgICAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICMgSWYgcHl0aG9uIHdhcyBidWlsdCB3aXRoIGluIGRlYnVnIG1vZGUKICAgICAgICAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCAzYWYxMmU3Li5iOTcxOWNiIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAKIE1JTllFQVIgPSAxCiBNQVhZRUFSID0gOTk5OQotX01BWE9SRElOQUwgPSAzNjUyMDU5ICMgZGF0ZS5tYXgudG9vcmRpbmFsKCkKK19NQVhPUkRJTkFMID0gMzY1MjA1OSAgIyBkYXRlLm1heC50b29yZGluYWwoKQogCiAjIFV0aWxpdHkgZnVuY3Rpb25zLCBhZGFwdGVkIGZyb20gUHl0aG9uJ3MgRGVtby9jbGFzc2VzL0RhdGVzLnB5LCB3aGljaAogIyBhbHNvIGFzc3VtZXMgdGhlIGN1cnJlbnQgR3JlZ29yaWFuIGNhbGVuZGFyIGluZGVmaW5pdGVseSBleHRlbmRlZCBpbgpAQCAtMjYsNyArMjYsNyBAQAogIyAtMSBpcyBhIHBsYWNlaG9sZGVyIGZvciBpbmRleGluZyBwdXJwb3Nlcy4KIF9EQVlTX0lOX01PTlRIID0gWy0xLCAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXQogCi1fREFZU19CRUZPUkVfTU9OVEggPSBbLTFdICMgLTEgaXMgYSBwbGFjZWhvbGRlciBmb3IgaW5kZXhpbmcgcHVycG9zZXMuCitfREFZU19CRUZPUkVfTU9OVEggPSBbLTFdICAjIC0xIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGluZGV4aW5nIHB1cnBvc2VzLgogZGJtID0gMAogZm9yIGRpbSBpbiBfREFZU19JTl9NT05USFsxOl06CiAgICAgX0RBWVNfQkVGT1JFX01PTlRILmFwcGVuZChkYm0pCkBAIC0xNjIsOSArMTYyLDkgQEAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6CiAgICAgIyBEb24ndCBjYWxsIHV0Y29mZnNldCgpIG9yIHR6bmFtZSgpIHVubGVzcyBhY3R1YWxseSBuZWVkZWQuCi0gICAgZnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCi0gICAgenJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICV6Ci0gICAgWnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVaCisgICAgZnJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlZgorICAgIHpyZXBsYWNlID0gTm9uZSAgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJXoKKyAgICBacmVwbGFjZSA9IE5vbmUgICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVaCiAKICAgICAjIFNjYW4gZm9ybWF0IGZvciAleiBhbmQgJVogZXNjYXBlcywgcmVwbGFjaW5nIGFzIG5lZWRlZC4KICAgICBuZXdmb3JtYXQgPSBbXQpAQCAtMjE3LDExICsyMTcsNiBAQAogICAgIG5ld2Zvcm1hdCA9ICIiLmpvaW4obmV3Zm9ybWF0KQogICAgIHJldHVybiBfdGltZS5zdHJmdGltZShuZXdmb3JtYXQsIHRpbWV0dXBsZSkKIAotZGVmIF9jYWxsX3R6aW5mb19tZXRob2QodHppbmZvLCBtZXRobmFtZSwgdHppbmZvYXJnKToKLSAgICBpZiB0emluZm8gaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gZ2V0YXR0cih0emluZm8sIG1ldGhuYW1lKSh0emluZm9hcmcpCi0KICMgSnVzdCByYWlzZSBUeXBlRXJyb3IgaWYgdGhlIGFyZyBpc24ndCBOb25lIG9yIGEgc3RyaW5nLgogZGVmIF9jaGVja190em5hbWUobmFtZSk6CiAgICAgaWYgbmFtZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKQEAgLTI0NSwxMyArMjQwLDMxIEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIGEgd2hvbGUgbnVtYmVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgbWludXRlcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQogICAgIGlmIG5vdCAtdGltZWRlbHRhKDEpIDwgb2Zmc2V0IDwgdGltZWRlbHRhKDEpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcygpPSVzLCBtdXN0IGJlIG11c3QgYmUgc3RyaWN0bHkgYmV0d2VlbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiIC10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCB0aW1lZGVsdGEoaG91cnM9MjQpIgotICAgICAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIG9mZnNldCkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgb2Zmc2V0KSkKKworZGVmIF9jaGVja19pbnRfZmllbGQodmFsdWUpOgorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgIHJldHVybiB2YWx1ZQorICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuX19pbnRfXygpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19faW50X18gcmV0dXJuZWQgbm9uLWludCAodHlwZSAlcyknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHZhbHVlKS5fX25hbWVfXykKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSAlcyknICUKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgIHJhaXNlIFR5cGVFcnJvcignaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0JykKIAogZGVmIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KToKLSAgICBpZiBub3QgaXNpbnN0YW5jZSh5ZWFyLCBpbnQpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ludCBleHBlY3RlZCcpCisgICAgeWVhciA9IF9jaGVja19pbnRfZmllbGQoeWVhcikKKyAgICBtb250aCA9IF9jaGVja19pbnRfZmllbGQobW9udGgpCisgICAgZGF5ID0gX2NoZWNrX2ludF9maWVsZChkYXkpCiAgICAgaWYgbm90IE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5ZWFyIG11c3QgYmUgaW4gJWQuLiVkJyAlIChNSU5ZRUFSLCBNQVhZRUFSKSwgeWVhcikKICAgICBpZiBub3QgMSA8PSBtb250aCA8PSAxMjoKQEAgLTI1OSwxMCArMjcyLDEzIEBACiAgICAgZGltID0gX2RheXNfaW5fbW9udGgoeWVhciwgbW9udGgpCiAgICAgaWYgbm90IDEgPD0gZGF5IDw9IGRpbToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGF5IG11c3QgYmUgaW4gMS4uJWQnICUgZGltLCBkYXkpCisgICAgcmV0dXJuIHllYXIsIG1vbnRoLCBkYXkKIAogZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpOgotICAgIGlmIG5vdCBpc2luc3RhbmNlKGhvdXIsIGludCk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW50IGV4cGVjdGVkJykKKyAgICBob3VyID0gX2NoZWNrX2ludF9maWVsZChob3VyKQorICAgIG1pbnV0ZSA9IF9jaGVja19pbnRfZmllbGQobWludXRlKQorICAgIHNlY29uZCA9IF9jaGVja19pbnRfZmllbGQoc2Vjb25kKQorICAgIG1pY3Jvc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChtaWNyb3NlY29uZCkKICAgICBpZiBub3QgMCA8PSBob3VyIDw9IDIzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdob3VyIG11c3QgYmUgaW4gMC4uMjMnLCBob3VyKQogICAgIGlmIG5vdCAwIDw9IG1pbnV0ZSA8PSA1OToKQEAgLTI3MSw2ICsyODcsNyBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzZWNvbmQgbXVzdCBiZSBpbiAwLi41OScsIHNlY29uZCkKICAgICBpZiBub3QgMCA8PSBtaWNyb3NlY29uZCA8PSA5OTk5OTk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21pY3Jvc2Vjb25kIG11c3QgYmUgaW4gMC4uOTk5OTk5JywgbWljcm9zZWNvbmQpCisgICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZAogCiBkZWYgX2NoZWNrX3R6aW5mb19hcmcodHopOgogICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKQEAgLTMxNiw3ICszMzMsNyBAQAogICAgIFJlcHJlc2VudGF0aW9uOiAoZGF5cywgc2Vjb25kcywgbWljcm9zZWNvbmRzKS4gIFdoeT8gIEJlY2F1c2UgSQogICAgIGZlbHQgbGlrZSBpdC4KICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX2RheXMnLCAnX3NlY29uZHMnLCAnX21pY3Jvc2Vjb25kcycKKyAgICBfX3Nsb3RzX18gPSAnX2RheXMnLCAnX3NlY29uZHMnLCAnX21pY3Jvc2Vjb25kcycsICdfaGFzaGNvZGUnCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIGRheXM9MCwgc2Vjb25kcz0wLCBtaWNyb3NlY29uZHM9MCwKICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM9MCwgbWludXRlcz0wLCBob3Vycz0wLCB3ZWVrcz0wKToKQEAgLTM4MiwzOCArMzk5LDI2IEBACiAgICAgICAgICMgc2Vjb25kc2ZyYWMgaXNuJ3QgcmVmZXJlbmNlZCBhZ2FpbgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobWljcm9zZWNvbmRzLCBmbG9hdCk6Ci0gICAgICAgICAgICBtaWNyb3NlY29uZHMgKz0gdXNkb3VibGUKLSAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcywgMCkKLSAgICAgICAgICAgIHNlY29uZHMsIG1pY3Jvc2Vjb25kcyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDFlNikKLSAgICAgICAgICAgIGFzc2VydCBtaWNyb3NlY29uZHMgPT0gaW50KG1pY3Jvc2Vjb25kcykKLSAgICAgICAgICAgIGFzc2VydCBzZWNvbmRzID09IGludChzZWNvbmRzKQotICAgICAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNC4qMzYwMC4pCi0gICAgICAgICAgICBhc3NlcnQgZGF5cyA9PSBpbnQoZGF5cykKLSAgICAgICAgICAgIGFzc2VydCBzZWNvbmRzID09IGludChzZWNvbmRzKQotICAgICAgICAgICAgZCArPSBpbnQoZGF5cykKLSAgICAgICAgICAgIHMgKz0gaW50KHNlY29uZHMpICAgIyBjYW4ndCBvdmVyZmxvdwotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KQotICAgICAgICAgICAgYXNzZXJ0IGFicyhzKSA8PSAzICogMjQgKiAzNjAwCi0gICAgICAgIGVsc2U6CisgICAgICAgICAgICBtaWNyb3NlY29uZHMgPSByb3VuZChtaWNyb3NlY29uZHMgKyB1c2RvdWJsZSkKICAgICAgICAgICAgIHNlY29uZHMsIG1pY3Jvc2Vjb25kcyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDEwMDAwMDApCiAgICAgICAgICAgICBkYXlzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDI0KjM2MDApCiAgICAgICAgICAgICBkICs9IGRheXMKLSAgICAgICAgICAgIHMgKz0gaW50KHNlY29uZHMpICAgICMgY2FuJ3Qgb3ZlcmZsb3cKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKLSAgICAgICAgICAgIGFzc2VydCBhYnMocykgPD0gMyAqIDI0ICogMzYwMAotICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gZmxvYXQobWljcm9zZWNvbmRzKQotICAgICAgICAgICAgbWljcm9zZWNvbmRzICs9IHVzZG91YmxlCi0gICAgICAgICAgICBtaWNyb3NlY29uZHMgPSByb3VuZChtaWNyb3NlY29uZHMsIDApCisgICAgICAgICAgICBzICs9IHNlY29uZHMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IGludChtaWNyb3NlY29uZHMpCisgICAgICAgICAgICBzZWNvbmRzLCBtaWNyb3NlY29uZHMgPSBkaXZtb2QobWljcm9zZWNvbmRzLCAxMDAwMDAwKQorICAgICAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNCozNjAwKQorICAgICAgICAgICAgZCArPSBkYXlzCisgICAgICAgICAgICBzICs9IHNlY29uZHMKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcyArIHVzZG91YmxlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1pY3Jvc2Vjb25kcywgaW50KQogICAgICAgICBhc3NlcnQgYWJzKHMpIDw9IDMgKiAyNCAqIDM2MDAKICAgICAgICAgYXNzZXJ0IGFicyhtaWNyb3NlY29uZHMpIDwgMy4xZTYKIAogICAgICAgICAjIEp1c3QgYSBsaXR0bGUgYml0IG9mIGNhcnJ5aW5nIHBvc3NpYmxlIGZvciBtaWNyb3NlY29uZHMgYW5kIHNlY29uZHMuCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1pY3Jvc2Vjb25kcywgZmxvYXQpCi0gICAgICAgIGFzc2VydCBpbnQobWljcm9zZWNvbmRzKSA9PSBtaWNyb3NlY29uZHMKLSAgICAgICAgdXMgPSBpbnQobWljcm9zZWNvbmRzKQotICAgICAgICBzZWNvbmRzLCB1cyA9IGRpdm1vZCh1cywgMTAwMDAwMCkKLSAgICAgICAgcyArPSBzZWNvbmRzICAgICMgY2FudCd0IG92ZXJmbG93Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKKyAgICAgICAgc2Vjb25kcywgdXMgPSBkaXZtb2QobWljcm9zZWNvbmRzLCAxMDAwMDAwKQorICAgICAgICBzICs9IHNlY29uZHMKICAgICAgICAgZGF5cywgcyA9IGRpdm1vZChzLCAyNCozNjAwKQogICAgICAgICBkICs9IGRheXMKIApAQCAtNDIxLDI3ICs0MjYsMzEgQEAKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KSBhbmQgMCA8PSBzIDwgMjQqMzYwMAogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh1cywgaW50KSBhbmQgMCA8PSB1cyA8IDEwMDAwMDAKIAotICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQotCi0gICAgICAgIHNlbGYuX2RheXMgPSBkCi0gICAgICAgIHNlbGYuX3NlY29uZHMgPSBzCi0gICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kcyA9IHVzCiAgICAgICAgIGlmIGFicyhkKSA+IDk5OTk5OTk5OToKICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoInRpbWVkZWx0YSAjIG9mIGRheXMgaXMgdG9vIGxhcmdlOiAlZCIgJSBkKQogCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgIHNlbGYuX2RheXMgPSBkCisgICAgICAgIHNlbGYuX3NlY29uZHMgPSBzCisgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kcyA9IHVzCisgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5fbWljcm9zZWNvbmRzOgotICAgICAgICAgICAgcmV0dXJuICIlcyglZCwgJWQsICVkKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzKQorICAgICAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzKQogICAgICAgICBpZiBzZWxmLl9zZWNvbmRzOgotICAgICAgICAgICAgcmV0dXJuICIlcyglZCwgJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzKQotICAgICAgICByZXR1cm4gIiVzKCVkKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fZGF5cykKKyAgICAgICAgICAgIHJldHVybiAiJXMuJXMoJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzKQorICAgICAgICByZXR1cm4gIiVzLiVzKCVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgbW0sIHNzID0gZGl2bW9kKHNlbGYuX3NlY29uZHMsIDYwKQpAQCAtNDU3LDcgKzQ2Niw3IEBACiAKICAgICBkZWYgdG90YWxfc2Vjb25kcyhzZWxmKToKICAgICAgICAgIiIiVG90YWwgc2Vjb25kcyBpbiB0aGUgZHVyYXRpb24uIiIiCi0gICAgICAgIHJldHVybiAoKHNlbGYuZGF5cyAqIDg2NDAwICsgc2VsZi5zZWNvbmRzKSoxMCoqNiArCisgICAgICAgIHJldHVybiAoKHNlbGYuZGF5cyAqIDg2NDAwICsgc2VsZi5zZWNvbmRzKSAqIDEwKio2ICsKICAgICAgICAgICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kcykgLyAxMCoqNgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC01NzgsMTIgKzU4Nyw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMApAQCAtNjEzLDcgKzYxNiw5IEBACiAgICAgICAgIHJldHVybiBfY21wKHNlbGYuX2dldHN0YXRlKCksIG90aGVyLl9nZXRzdGF0ZSgpKQogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIChzZWxmLl9kYXlzICE9IDAgb3IKQEAgLTY2MSw3ICs2NjYsNyBAQAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKICAgICB5ZWFyLCBtb250aCwgZGF5CiAgICAgIiIiCi0gICAgX19zbG90c19fID0gJ195ZWFyJywgJ19tb250aCcsICdfZGF5JworICAgIF9fc2xvdHNfXyA9ICdfeWVhcicsICdfbW9udGgnLCAnX2RheScsICdfaGFzaGNvZGUnCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCkBAIC02NzAsMTcgKzY3NSwxOSBAQAogCiAgICAgICAgIHllYXIsIG1vbnRoLCBkYXkgKHJlcXVpcmVkLCBiYXNlIDEpCiAgICAgICAgICIiIgotICAgICAgICBpZiAoaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSA0IGFuZAotICAgICAgICAgICAgMSA8PSB5ZWFyWzJdIDw9IDEyIGFuZCBtb250aCBpcyBOb25lKTogICMgTW9udGggaXMgc2FuZQorICAgICAgICBpZiBtb250aCBpcyBOb25lIGFuZCBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDQgYW5kIFwKKyAgICAgICAgICAgICAgICAxIDw9IHllYXJbMl0gPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIpCisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBfY2hlY2tfZGF0ZV9maWVsZHMoeWVhciwgbW9udGgsIGRheSkKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl95ZWFyID0geWVhcgogICAgICAgICBzZWxmLl9tb250aCA9IG1vbnRoCiAgICAgICAgIHNlbGYuX2RheSA9IGRheQorICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIEFkZGl0aW9uYWwgY29uc3RydWN0b3JzCkBAIC03MjAsMTAgKzcyNywxMSBAQAogICAgICAgICA+Pj4gcmVwcihkdCkKICAgICAgICAgJ2RhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDEsIDEsIDAsIDAsIHR6aW5mbz1kYXRldGltZS50aW1lem9uZS51dGMpJwogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICIlcyglZCwgJWQsICVkKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5feWVhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9udGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheSkKKyAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl95ZWFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5KQogICAgICMgWFhYIFRoZXNlIHNob3VsZG4ndCBkZXBlbmQgb24gdGltZS5sb2NhbHRpbWUoKSwgYmVjYXVzZSB0aGF0CiAgICAgIyBjbGlwcyB0aGUgdXNhYmxlIGRhdGVzIHRvIFsxOTcwIC4uIDIwMzgpLiAgQXQgbGVhc3QgY3RpbWUoKSBpcwogICAgICMgZWFzaWx5IGRvbmUgd2l0aG91dCB1c2luZyBzdHJmdGltZSgpIC0tIHRoYXQncyBiZXR0ZXIgdG9vIGJlY2F1c2UKQEAgLTc0Myw2ICs3NTEsOCBAQAogICAgICAgICByZXR1cm4gX3dyYXBfc3RyZnRpbWUoc2VsZiwgZm10LCBzZWxmLnRpbWV0dXBsZSgpKQogCiAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm10KToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZm10LCBzdHIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtdXN0IGJlIHN0ciwgbm90ICVzIiAlIHR5cGUoZm10KS5fX25hbWVfXykKICAgICAgICAgaWYgbGVuKGZtdCkgIT0gMDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLnN0cmZ0aW1lKGZtdCkKICAgICAgICAgcmV0dXJuIHN0cihzZWxmKQpAQCAtODAwLDcgKzgxMCw2IEBACiAgICAgICAgICAgICBtb250aCA9IHNlbGYuX21vbnRoCiAgICAgICAgIGlmIGRheSBpcyBOb25lOgogICAgICAgICAgICAgZGF5ID0gc2VsZi5fZGF5Ci0gICAgICAgIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQogICAgICAgICByZXR1cm4gZGF0ZSh5ZWFyLCBtb250aCwgZGF5KQogCiAgICAgIyBDb21wYXJpc29ucyBvZiBkYXRlIG9iamVjdHMgd2l0aCBvdGhlci4KQEAgLTgxMCwxMSArODE5LDYgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCi0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMApAQCAtODQzLDcgKzg0Nyw5IEBACiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgICJIYXNoLiIKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6CisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hjb2RlCiAKICAgICAjIENvbXB1dGF0aW9ucwogCkBAIC05MTMsOCArOTE5LDYgQEAKICAgICAgICAgcmV0dXJuIGJ5dGVzKFt5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheV0pLAogCiAgICAgZGVmIF9fc2V0c3RhdGUoc2VsZiwgc3RyaW5nKToKLSAgICAgICAgaWYgbGVuKHN0cmluZykgIT0gNCBvciBub3QgKDEgPD0gc3RyaW5nWzJdIDw9IDEyKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGVub3VnaCBhcmd1bWVudHMiKQogICAgICAgICB5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAKQEAgLTkzMyw2ICs5MzcsNyBAQAogICAgIFN1YmNsYXNzZXMgbXVzdCBvdmVycmlkZSB0aGUgbmFtZSgpLCB1dGNvZmZzZXQoKSBhbmQgZHN0KCkgbWV0aG9kcy4KICAgICAiIiIKICAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CiAgICAgICAgICJkYXRldGltZSAtPiBzdHJpbmcgbmFtZSBvZiB0aW1lIHpvbmUuIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJ0emluZm8gc3ViY2xhc3MgbXVzdCBvdmVycmlkZSB0em5hbWUoKSIpCkBAIC0xMDE5LDYgKzEwMjQsNyBAQAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbwogICAgICIiIgorICAgIF9fc2xvdHNfXyA9ICdfaG91cicsICdfbWludXRlJywgJ19zZWNvbmQnLCAnX21pY3Jvc2Vjb25kJywgJ190emluZm8nLCAnX2hhc2hjb2RlJwogCiAgICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KQEAgLTEwMjksMTggKzEwMzUsMjIgQEAKICAgICAgICAgc2Vjb25kLCBtaWNyb3NlY29uZCAoZGVmYXVsdCB0byB6ZXJvKQogICAgICAgICB0emluZm8gKGRlZmF1bHQgdG8gTm9uZSkKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdIDwgMjQ6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CisgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKGhvdXIsIG1pbnV0ZSBvciBOb25lKQorICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCi0gICAgICAgIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCiAgICAgICAgIHNlbGYuX21pbnV0ZSA9IG1pbnV0ZQogICAgICAgICBzZWxmLl9zZWNvbmQgPSBzZWNvbmQKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KKyAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMDc5LDEyICsxMDg5LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKQEAgLTExMjUsOCArMTEyOSw4IEBACiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKICAgICAgICAgICAgIHJldHVybiBfY21wKChzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCksCi0gICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgogICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKQEAgLTExMzksMTYgKzExNDMsMjAgQEAKIAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIiIiSGFzaC4iIiIKLSAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCi0gICAgICAgIGlmIG5vdCB0em9mZjogIyB6ZXJvIG9yIE5vbmUKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCi0gICAgICAgIGgsIG0gPSBkaXZtb2QodGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgLSB0em9mZiwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCi0gICAgICAgIGFzc2VydCBub3QgbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICBtIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQotICAgICAgICBpZiAwIDw9IGggPCAyNDoKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHRpbWUoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQotICAgICAgICByZXR1cm4gaGFzaCgoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgbm90IHR6b2ZmOiAgIyB6ZXJvIG9yIE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWRlbHRhKGhvdXJzPTEpKQorICAgICAgICAgICAgICAgIGFzc2VydCBub3QgbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgorICAgICAgICAgICAgICAgIG0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICAgICAgaWYgMCA8PSBoIDwgMjQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0aW1lKGgsIG0sIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goKGgsIG0sIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hjb2RlCiAKICAgICAjIENvbnZlcnNpb24gdG8gc3RyaW5nCiAKQEAgLTExNzYsOCArMTE4NCw5IEBACiAgICAgICAgICAgICBzID0gIiwgJWQiICUgc2VsZi5fc2Vjb25kCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzID0gIiIKLSAgICAgICAgcz0gIiVzKCVkLCAlZCVzKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzKQorICAgICAgICBzPSAiJXMuJXMoJWQsICVkJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgcykKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCkBAIC0xMjEwLDYgKzEyMTksOCBAQAogICAgICAgICByZXR1cm4gX3dyYXBfc3RyZnRpbWUoc2VsZiwgZm10LCB0aW1ldHVwbGUpCiAKICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBmbXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmbXQsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm11c3QgYmUgc3RyLCBub3QgJXMiICUgdHlwZShmbXQpLl9fbmFtZV9fKQogICAgICAgICBpZiBsZW4oZm10KSAhPSAwOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RyZnRpbWUoZm10KQogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCkBAIC0xMjY2LDE2ICsxMjc3LDggQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCi0gICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKICAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8pCiAKLSAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2Vjb25kIG9yIHNlbGYubWljcm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpIG9yIHRpbWVkZWx0YSgwKQotICAgICAgICByZXR1cm4gdGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgIT0gb2Zmc2V0Ci0KICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCiAgICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKQEAgLTEyODksMTUgKzEyOTIsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCBzZWxmLl90emluZm8pCiAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6Ci0gICAgICAgIGlmIGxlbihzdHJpbmcpICE9IDYgb3Igc3RyaW5nWzBdID49IDI0OgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIikKLSAgICAgICAgKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKKyAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCisgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwotICAgICAgICBpZiB0emluZm8gaXMgTm9uZSBvciBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6Ci0gICAgICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmcgJXIiICUgdHppbmZvKQorICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKHRpbWUsIHNlbGYuX2dldHN0YXRlKCkpCkBAIC0xMzE0LDI1ICsxMzEzLDMwIEBACiAgICAgVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbgogICAgIGluc3RhbmNlIG9mIGEgdHppbmZvIHN1YmNsYXNzLiBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50cy4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArIHRpbWUuX19zbG90c19fCiAKLSAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArICgKLSAgICAgICAgJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsCi0gICAgICAgICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycpCiAgICAgZGVmIF9fbmV3X18oY2xzLCB5ZWFyLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsCiAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwOgorICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZCAxIDw9IHllYXJbMl0gPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0Ci0gICAgICAgICAgICBzZWxmID0gZGF0ZS5fX25ld19fKGNscywgeWVhcls6NF0pCisgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKLSAgICAgICAgc2VsZiA9IGRhdGUuX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoLCBkYXkpCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCisgICAgICAgIHNlbGYuX21vbnRoID0gbW9udGgKKyAgICAgICAgc2VsZi5fZGF5ID0gZGF5CiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCiAgICAgICAgIHNlbGYuX21pbnV0ZSA9IG1pbnV0ZQogICAgICAgICBzZWxmLl9zZWNvbmQgPSBzZWNvbmQKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KKyAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMzk5LDExICsxNDAzLDYgQEAKICAgICAgICAgIiIiQ29uc3RydWN0IGEgbmFpdmUgVVRDIGRhdGV0aW1lIGZyb20gYSBQT1NJWCB0aW1lc3RhbXAuIiIiCiAgICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgVHJ1ZSwgTm9uZSkKIAotICAgICMgWFhYIFRoaXMgaXMgc3VwcG9zZWQgdG8gZG8gYmV0dGVyIHRoYW4gd2UgKmNhbiogZG8gYnkgdXNpbmcgdGltZS50aW1lKCksCi0gICAgIyBYWFggaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGEgbW9yZSBhY2N1cmF0ZSB3YXkuICBUaGUgQyBpbXBsZW1lbnRhdGlvbgotICAgICMgWFhYIHVzZXMgZ2V0dGltZW9mZGF5IG9uIHBsYXRmb3JtcyB0aGF0IGhhdmUgaXQsIGJ1dCB0aGF0IGlzbid0Ci0gICAgIyBYWFggYXZhaWxhYmxlIGZyb20gUHl0aG9uLiAgU28gbm93KCkgbWF5IHJldHVybiBkaWZmZXJlbnQgcmVzdWx0cwotICAgICMgWFhYIGFjcm9zcyB0aGUgaW1wbGVtZW50YXRpb25zLgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBub3coY2xzLCB0ej1Ob25lKToKICAgICAgICAgIkNvbnN0cnVjdCBhIGRhdGV0aW1lIGZyb20gdGltZS50aW1lKCkgYW5kIG9wdGlvbmFsIHRpbWUgem9uZSBpbmZvLiIKQEAgLTE0OTAsMTEgKzE0ODksOCBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCi0gICAgICAgIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCi0gICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKLSAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvKQorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKQogCiAgICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHo9Tm9uZSk6CiAgICAgICAgIGlmIHR6IGlzIE5vbmU6CkBAIC0xNTY0LDEwICsxNTYwLDkgQEAKICAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgc2VwIHNwZWNpZmllcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gZGF0ZSBhbmQKICAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCiAgICAgICAgICIiIgotICAgICAgICBzID0gKCIlMDRkLSUwMmQtJTAyZCVjIiAlIChzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCkgKwotICAgICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQorICAgICAgICBzID0gKCIlMDRkLSUwMmQtJTAyZCVjIiAlIChzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCBzZXApICsKKyAgICAgICAgICAgICBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgb2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICBpZiBvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBvZmYuZGF5cyA8IDA6CkBAIC0xNTgzLDE0ICsxNTc4LDE1IEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIkNvbnZlcnQgdG8gZm9ybWFsIHN0cmluZywgZm9yIHJlcHIoKS4iIiIKLSAgICAgICAgTCA9IFtzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCAjIFRoZXNlIGFyZSBuZXZlciB6ZXJvCisgICAgICAgIEwgPSBbc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgICMgVGhlc2UgYXJlIG5ldmVyIHplcm8KICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgc2VsZi5fbWljcm9zZWNvbmRdCiAgICAgICAgIGlmIExbLTFdID09IDA6CiAgICAgICAgICAgICBkZWwgTFstMV0KICAgICAgICAgaWYgTFstMV0gPT0gMDoKICAgICAgICAgICAgIGRlbCBMWy0xXQotICAgICAgICBzID0gIiwgIi5qb2luKG1hcChzdHIsIEwpKQotICAgICAgICBzID0gIiVzKCVzKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgcykKKyAgICAgICAgcyA9ICIlcy4lcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4obWFwKHN0ciwgTCkpKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKQEAgLTE2MjIsNyArMTYxOCw5IEBACiAgICAgICAgIGl0IG1lYW4gYW55dGhpbmcgaW4gcGFydGljdWxhci4gRm9yIGV4YW1wbGUsICJHTVQiLCAiVVRDIiwgIi01MDAiLAogICAgICAgICAiLTU6MDAiLCAiRURUIiwgIlVTL0Vhc3Rlcm4iLCAiQW1lcmljYS9OZXcgWW9yayIgYXJlIGFsbCB2YWxpZCByZXBsaWVzLgogICAgICAgICAiIiIKLSAgICAgICAgbmFtZSA9IF9jYWxsX3R6aW5mb19tZXRob2Qoc2VsZi5fdHppbmZvLCAidHpuYW1lIiwgc2VsZikKKyAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBuYW1lID0gc2VsZi5fdHppbmZvLnR6bmFtZShzZWxmKQogICAgICAgICBfY2hlY2tfdHpuYW1lKG5hbWUpCiAgICAgICAgIHJldHVybiBuYW1lCiAKQEAgLTE2NTEsMTQgKzE2NDksNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKLSAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCkBAIC0xNzA4LDkgKzE2OTgsOSBAQAogICAgICAgICAgICAgcmV0dXJuIF9jbXAoKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpLAotICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX3llYXIsIG90aGVyLl9tb250aCwgb3RoZXIuX2RheSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5feWVhciwgb3RoZXIuX21vbnRoLCBvdGhlci5fZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCiAgICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKICAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgogICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCkBAIC0xNzY4LDEyICsxNzU4LDE1IEBACiAgICAgICAgIHJldHVybiBiYXNlICsgb3RvZmYgLSBteW9mZgogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKLSAgICAgICAgaWYgdHpvZmYgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCi0gICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQotICAgICAgICBzZWNvbmRzID0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZAotICAgICAgICByZXR1cm4gaGFzaCh0aW1lZGVsdGEoZGF5cywgc2Vjb25kcywgc2VsZi5taWNyb3NlY29uZCkgLSB0em9mZikKKyAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6CisgICAgICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIHR6b2ZmIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQorICAgICAgICAgICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHRpbWVkZWx0YShkYXlzLCBzZWNvbmRzLCBzZWxmLm1pY3Jvc2Vjb25kKSAtIHR6b2ZmKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKQEAgLTE3OTAsMTQgKzE3ODMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCBzZWxmLl90emluZm8pCiAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CisgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQogICAgICAgICAoeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCiAgICAgICAgICBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKICAgICAgICAgc2VsZi5feWVhciA9IHloaSAqIDI1NiArIHlsbwogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKLSAgICAgICAgaWYgdHppbmZvIGlzIE5vbmUgb3IgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgotICAgICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnICVyIiAlIHR6aW5mbykKKyAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKQEAgLTE4MTMsNyArMTgwNSw3IEBACiAgICAgIyBYWFggVGhpcyBjb3VsZCBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHkKICAgICBUSFVSU0RBWSA9IDMKICAgICBmaXJzdGRheSA9IF95bWQyb3JkKHllYXIsIDEsIDEpCi0gICAgZmlyc3R3ZWVrZGF5ID0gKGZpcnN0ZGF5ICsgNikgJSA3ICMgU2VlIHdlZWtkYXkoKSBhYm92ZQorICAgIGZpcnN0d2Vla2RheSA9IChmaXJzdGRheSArIDYpICUgNyAgIyBTZWUgd2Vla2RheSgpIGFib3ZlCiAgICAgd2VlazFtb25kYXkgPSBmaXJzdGRheSAtIGZpcnN0d2Vla2RheQogICAgIGlmIGZpcnN0d2Vla2RheSA+IFRIVVJTREFZOgogICAgICAgICB3ZWVrMW1vbmRheSArPSA3CkBAIC0xODM0LDEzICsxODI2LDEyIEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyaW5nIikKICAgICAgICAgaWYgbm90IGNscy5fbWlub2Zmc2V0IDw9IG9mZnNldCA8PSBjbHMuX21heG9mZnNldDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRpbWVkZWx0YShob3Vycz0yNCkuIikKLSAgICAgICAgaWYgKG9mZnNldC5taWNyb3NlY29uZHMgIT0gMCBvcgotICAgICAgICAgICAgb2Zmc2V0LnNlY29uZHMgJSA2MCAhPSAwKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVkZWx0YShob3Vycz0yNCkuIikKKyAgICAgICAgaWYgKG9mZnNldC5taWNyb3NlY29uZHMgIT0gMCBvciBvZmZzZXQuc2Vjb25kcyAlIDYwICE9IDApOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKQogICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGUob2Zmc2V0LCBuYW1lKQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0xODc3LDEwICsxODY4LDEyIEBACiAgICAgICAgIGlmIHNlbGYgaXMgc2VsZi51dGM6CiAgICAgICAgICAgICByZXR1cm4gJ2RhdGV0aW1lLnRpbWV6b25lLnV0YycKICAgICAgICAgaWYgc2VsZi5fbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICIlcyglcikiICUgKCdkYXRldGltZS4nICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0KQotICAgICAgICByZXR1cm4gIiVzKCVyLCAlcikiICUgKCdkYXRldGltZS4nICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0LCBzZWxmLl9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICIlcy4lcyglcikiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCkKKyAgICAgICAgcmV0dXJuICIlcy4lcyglciwgJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQsIHNlbGYuX25hbWUpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudHpuYW1lKE5vbmUpCkBAIC0yMTM1LDE0ICsyMTI4LDEzIEBACiAgICAgcGFzcwogZWxzZToKICAgICAjIENsZWFuIHVwIHVudXNlZCBuYW1lcwotICAgIGRlbCAoX0RBWU5BTUVTLCBfREFZU19CRUZPUkVfTU9OVEgsIF9EQVlTX0lOX01PTlRILAotICAgICAgICAgX0RJMTAwWSwgX0RJNDAwWSwgX0RJNFksIF9NQVhPUkRJTkFMLCBfTU9OVEhOQU1FUywKLSAgICAgICAgIF9idWlsZF9zdHJ1Y3RfdGltZSwgX2NhbGxfdHppbmZvX21ldGhvZCwgX2NoZWNrX2RhdGVfZmllbGRzLAotICAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzLCBfY2hlY2tfdHppbmZvX2FyZywgX2NoZWNrX3R6bmFtZSwKLSAgICAgICAgIF9jaGVja191dGNfb2Zmc2V0LCBfY21wLCBfY21wZXJyb3IsIF9kYXRlX2NsYXNzLCBfZGF5c19iZWZvcmVfbW9udGgsCi0gICAgICAgICBfZGF5c19iZWZvcmVfeWVhciwgX2RheXNfaW5fbW9udGgsIF9mb3JtYXRfdGltZSwgX2lzX2xlYXAsCi0gICAgICAgICBfaXNvd2VlazFtb25kYXksIF9tYXRoLCBfb3JkMnltZCwgX3RpbWUsIF90aW1lX2NsYXNzLCBfdHppbmZvX2NsYXNzLAotICAgICAgICAgX3dyYXBfc3RyZnRpbWUsIF95bWQyb3JkKQorICAgIGRlbCAoX0RBWU5BTUVTLCBfREFZU19CRUZPUkVfTU9OVEgsIF9EQVlTX0lOX01PTlRILCBfREkxMDBZLCBfREk0MDBZLAorICAgICAgICAgX0RJNFksIF9FUE9DSCwgX01BWE9SRElOQUwsIF9NT05USE5BTUVTLCBfYnVpbGRfc3RydWN0X3RpbWUsCisgICAgICAgICBfY2hlY2tfZGF0ZV9maWVsZHMsIF9jaGVja19pbnRfZmllbGQsIF9jaGVja190aW1lX2ZpZWxkcywKKyAgICAgICAgIF9jaGVja190emluZm9fYXJnLCBfY2hlY2tfdHpuYW1lLCBfY2hlY2tfdXRjX29mZnNldCwgX2NtcCwgX2NtcGVycm9yLAorICAgICAgICAgX2RhdGVfY2xhc3MsIF9kYXlzX2JlZm9yZV9tb250aCwgX2RheXNfYmVmb3JlX3llYXIsIF9kYXlzX2luX21vbnRoLAorICAgICAgICAgX2Zvcm1hdF90aW1lLCBfaXNfbGVhcCwgX2lzb3dlZWsxbW9uZGF5LCBfbWF0aCwgX29yZDJ5bWQsCisgICAgICAgICBfdGltZSwgX3RpbWVfY2xhc3MsIF90emluZm9fY2xhc3MsIF93cmFwX3N0cmZ0aW1lLCBfeW1kMm9yZCkKICAgICAjIFhYWCBTaW5jZSBpbXBvcnQgKiBhYm92ZSBleGNsdWRlcyBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggXywKICAgICAjIGRvY3N0cmluZyBkb2VzIG5vdCBnZXQgb3ZlcndyaXR0ZW4uIEluIHRoZSBmdXR1cmUsIGl0IG1heSBiZQogICAgICMgYXBwcm9wcmlhdGUgdG8gbWFpbnRhaW4gYSBzaW5nbGUgbW9kdWxlIGxldmVsIGRvY3N0cmluZyBhbmQKZGlmZiAtLWdpdCBhL0xpYi9kYm0vX19pbml0X18ucHkgYi9MaWIvZGJtL19faW5pdF9fLnB5CmluZGV4IDVmNDY2NGEuLjY4MzFhODQgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vX19pbml0X18ucHkKKysrIGIvTGliL2RibS9fX2luaXRfXy5weQpAQCAtMTUzLDkgKzE1Myw5IEBACiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAjIFJlYWQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIC0tIHRoZSBtYWdpYyBudW1iZXIKLSAgICBzMTYgPSBmLnJlYWQoMTYpCi0gICAgZi5jbG9zZSgpCisgICAgd2l0aCBmOgorICAgICAgICAjIFJlYWQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIC0tIHRoZSBtYWdpYyBudW1iZXIKKyAgICAgICAgczE2ID0gZi5yZWFkKDE2KQogICAgIHMgPSBzMTZbMDo0XQogCiAgICAgIyBSZXR1cm4gIiIgaWYgbm90IGF0IGxlYXN0IDQgYnl0ZXMKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCA2M2JjMzI5Li43Nzc3YTdjIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC00NSw3ICs0NSw3IEBACiAgICAgX29zID0gX29zICAgICAgICMgZm9yIF9jb21taXQoKQogICAgIF9pbyA9IF9pbyAgICAgICAjIGZvciBfY29tbWl0KCkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlYmFzZW5hbWUsIG1vZGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlYmFzZW5hbWUsIG1vZGUsIGZsYWc9J2MnKToKICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGUKIAogICAgICAgICAjIFRoZSBkaXJlY3RvcnkgZmlsZSBpcyBhIHRleHQgZmlsZS4gIEVhY2ggbGluZSBsb29rcyBsaWtlCkBAIC02NSw2ICs2NSwxNyBAQAogICAgICAgICAjIFRoZSBpbmRleCBpcyBhbiBpbi1tZW1vcnkgZGljdCwgbWlycm9yaW5nIHRoZSBkaXJlY3RvcnkgZmlsZS4KICAgICAgICAgc2VsZi5faW5kZXggPSBOb25lICAjIG1hcHMga2V5cyB0byAocG9zLCBzaXopIHBhaXJzCiAKKyAgICAgICAgIyBIYW5kbGUgdGhlIGNyZWF0aW9uCisgICAgICAgIHNlbGYuX2NyZWF0ZShmbGFnKQorICAgICAgICBzZWxmLl91cGRhdGUoKQorCisgICAgZGVmIF9jcmVhdGUoc2VsZiwgZmxhZyk6CisgICAgICAgIGlmIGZsYWcgPT0gJ24nOgorICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIChzZWxmLl9kYXRmaWxlLCBzZWxmLl9iYWtmaWxlLCBzZWxmLl9kaXJmaWxlKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF9vcy5yZW1vdmUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBNb2QgYnkgSmFjazogY3JlYXRlIGRhdGEgZmlsZSBpZiBuZWVkZWQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IF9pby5vcGVuKHNlbGYuX2RhdGZpbGUsICdyJywgZW5jb2Rpbmc9IkxhdGluLTEiKQpAQCAtNzMsNyArODQsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2NobW9kKHNlbGYuX2RhdGZpbGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgc2VsZi5fdXBkYXRlKCkKIAogICAgICMgUmVhZCBkaXJlY3RvcnkgZmlsZSBpbnRvIHRoZSBpbi1tZW1vcnkgaW5kZXggZGljdC4KICAgICBkZWYgX3VwZGF0ZShzZWxmKToKQEAgLTI2NiwyMCArMjc2LDIwIEBACiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAKLWRlZiBvcGVuKGZpbGUsIGZsYWc9Tm9uZSwgbW9kZT0wbzY2Nik6CitkZWYgb3BlbihmaWxlLCBmbGFnPSdjJywgbW9kZT0wbzY2Nik6CiAgICAgIiIiT3BlbiB0aGUgZGF0YWJhc2UgZmlsZSwgZmlsZW5hbWUsIGFuZCByZXR1cm4gY29ycmVzcG9uZGluZyBvYmplY3QuCiAKICAgICBUaGUgZmxhZyBhcmd1bWVudCwgdXNlZCB0byBjb250cm9sIGhvdyB0aGUgZGF0YWJhc2UgaXMgb3BlbmVkIGluIHRoZQotICAgIG90aGVyIERCTSBpbXBsZW1lbnRhdGlvbnMsIGlzIGlnbm9yZWQgaW4gdGhlIGRibS5kdW1iIG1vZHVsZTsgdGhlCi0gICAgZGF0YWJhc2UgaXMgYWx3YXlzIG9wZW5lZCBmb3IgdXBkYXRlLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMKLSAgICBub3QgZXhpc3QuCisgICAgb3RoZXIgREJNIGltcGxlbWVudGF0aW9ucywgc3VwcG9ydHMgb25seSB0aGUgc2VtYW50aWNzIG9mICdjJyBhbmQgJ24nCisgICAgdmFsdWVzLiAgT3RoZXIgdmFsdWVzIHdpbGwgZGVmYXVsdCB0byB0aGUgc2VtYW50aWNzIG9mICdjJyB2YWx1ZToKKyAgICB0aGUgZGF0YWJhc2Ugd2lsbCBhbHdheXMgb3BlbmVkIGZvciB1cGRhdGUgYW5kIHdpbGwgYmUgY3JlYXRlZCBpZiBpdAorICAgIGRvZXMgbm90IGV4aXN0LgogCiAgICAgVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVOSVggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5IHdoZW4KICAgICB0aGUgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0byBvY3RhbCBjb2RlIDBvNjY2IChhbmQKICAgICB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBwcmV2YWlsaW5nIHVtYXNrKS4KIAogICAgICIiIgotICAgICMgZmxhZyBhcmd1bWVudCBpcyBjdXJyZW50bHkgaWdub3JlZAogCiAgICAgIyBNb2RpZnkgbW9kZSBkZXBlbmRpbmcgb24gdGhlIHVtYXNrCiAgICAgdHJ5OgpAQCAtMjkwLDUgKzMwMCw0IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUdXJuIG9mZiBhbnkgYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIHVtYXNrCiAgICAgICAgIG1vZGUgPSBtb2RlICYgKH51bSkKLQotICAgIHJldHVybiBfRGF0YWJhc2UoZmlsZSwgbW9kZSkKKyAgICByZXR1cm4gX0RhdGFiYXNlKGZpbGUsIG1vZGUsIGZsYWc9ZmxhZykKZGlmZiAtLWdpdCBhL0xpYi9kZWNpbWFsLnB5IGIvTGliL2RlY2ltYWwucHkKaW5kZXggMzI0ZTRmOS4uNzc0NmVhMiAxMDA2NDQKLS0tIGEvTGliL2RlY2ltYWwucHkKKysrIGIvTGliL2RlY2ltYWwucHkKQEAgLTEsNjQxMyArMSwxMSBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMDQgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSMgV3JpdHRlbiBieSBFcmljIFByaWNlIDxlcHJpY2UgYXQgdGpoc3N0LmVkdT4KLSMgICAgYW5kIEZhY3VuZG8gQmF0aXN0YSA8ZmFjdW5kbyBhdCB0YW5pcXVldGlsLmNvbS5hcj4KLSMgICAgYW5kIFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KLSMgICAgYW5kIEFhaHogPGFhaHogYXQgcG9ib3guY29tPgotIyAgICBhbmQgVGltIFBldGVycwotCi0jIFRoaXMgbW9kdWxlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgbGF0ZXN0IHVwZGF0ZXMgb2YgdGhlCi0jIElCTSBzcGVjaWZpY2F0aW9uIGFzIGl0IGV2b2x2ZXMuICBUaG9zZSB1cGRhdGVzIHdpbGwgYmUgdHJlYXRlZAotIyBhcyBidWcgZml4ZXMgKGRldmlhdGlvbiBmcm9tIHRoZSBzcGVjIGlzIGEgY29tcGF0aWJpbGl0eSwgdXNhYmlsaXR5Ci0jIGJ1ZykgYW5kIHdpbGwgYmUgYmFja3BvcnRlZC4gIEF0IHRoaXMgcG9pbnQgdGhlIHNwZWMgaXMgc3RhYmlsaXppbmcKLSMgYW5kIHRoZSB1cGRhdGVzIGFyZSBiZWNvbWluZyBmZXdlciwgc21hbGxlciwgYW5kIGxlc3Mgc2lnbmlmaWNhbnQuCi0KLSIiIgotVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFzZWQgb24KLXRoZSBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uOgotCi0gICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY2FyaXRoLmh0bWwKLQotYW5kIElFRUUgc3RhbmRhcmQgODU0LTE5ODc6Ci0KLSAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfODU0LTE5ODcKLQotRGVjaW1hbCBmbG9hdGluZyBwb2ludCBoYXMgZmluaXRlIHByZWNpc2lvbiB3aXRoIGFyYml0cmFyaWx5IGxhcmdlIGJvdW5kcy4KLQotVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMgdG8gc3VwcG9ydCBhcml0aG1ldGljIHVzaW5nIGZhbWlsaWFyCi0ic2Nob29saG91c2UiIHJ1bGVzIGFuZCB0byBhdm9pZCBzb21lIG9mIHRoZSB0cmlja3kgcmVwcmVzZW50YXRpb24KLWlzc3VlcyBhc3NvY2lhdGVkIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50LiAgVGhlIHBhY2thZ2UgaXMgZXNwZWNpYWxseQotdXNlZnVsIGZvciBmaW5hbmNpYWwgYXBwbGljYXRpb25zIG9yIGZvciBjb250ZXh0cyB3aGVyZSB1c2VycyBoYXZlCi1leHBlY3RhdGlvbnMgdGhhdCBhcmUgYXQgb2RkcyB3aXRoIGJpbmFyeSBmbG9hdGluZyBwb2ludCAoZm9yIGluc3RhbmNlLAotaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCAxLjAwICUgMC4xIGdpdmVzIDAuMDk5OTk5OTk5OTk5OTk5OTUgaW5zdGVhZAotb2YgMC4wOyBEZWNpbWFsKCcxLjAwJykgJSBEZWNpbWFsKCcwLjEnKSByZXR1cm5zIHRoZSBleHBlY3RlZAotRGVjaW1hbCgnMC4wMCcpKS4KLQotSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB1c2luZyB0aGUgZGVjaW1hbCBtb2R1bGU6Ci0KLT4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0ICoKLT4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKLT4+PiBEZWNpbWFsKDApCi1EZWNpbWFsKCcwJykKLT4+PiBEZWNpbWFsKCcxJykKLURlY2ltYWwoJzEnKQotPj4+IERlY2ltYWwoJy0uMDEyMycpCi1EZWNpbWFsKCctMC4wMTIzJykKLT4+PiBEZWNpbWFsKDEyMzQ1NikKLURlY2ltYWwoJzEyMzQ1NicpCi0+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4JykKLURlY2ltYWwoJzEuMjM0NUUrMTIzNDU2ODAnKQotPj4+IERlY2ltYWwoJzEuMzMnKSArIERlY2ltYWwoJzEuMjcnKQotRGVjaW1hbCgnMi42MCcpCi0+Pj4gRGVjaW1hbCgnMTIuMzQnKSArIERlY2ltYWwoJzMuODcnKSAtIERlY2ltYWwoJzE4LjQxJykKLURlY2ltYWwoJy0yLjIwJykKLT4+PiBkaWcgPSBEZWNpbWFsKDEpCi0+Pj4gcHJpbnQoZGlnIC8gRGVjaW1hbCgzKSkKLTAuMzMzMzMzMzMzCi0+Pj4gZ2V0Y29udGV4dCgpLnByZWMgPSAxOAotPj4+IHByaW50KGRpZyAvIERlY2ltYWwoMykpCi0wLjMzMzMzMzMzMzMzMzMzMzMzMwotPj4+IHByaW50KGRpZy5zcXJ0KCkpCi0xCi0+Pj4gcHJpbnQoRGVjaW1hbCgzKS5zcXJ0KCkpCi0xLjczMjA1MDgwNzU2ODg3NzI5Ci0+Pj4gcHJpbnQoRGVjaW1hbCgzKSAqKiAxMjMpCi00Ljg1MTkyNzgwOTc2ODk2NDI3RSs1OAotPj4+IGluZiA9IERlY2ltYWwoMSkgLyBEZWNpbWFsKDApCi0+Pj4gcHJpbnQoaW5mKQotSW5maW5pdHkKLT4+PiBuZWdpbmYgPSBEZWNpbWFsKC0xKSAvIERlY2ltYWwoMCkKLT4+PiBwcmludChuZWdpbmYpCi0tSW5maW5pdHkKLT4+PiBwcmludChuZWdpbmYgKyBpbmYpCi1OYU4KLT4+PiBwcmludChuZWdpbmYgKiBpbmYpCi0tSW5maW5pdHkKLT4+PiBwcmludChkaWcgLyAwKQotSW5maW5pdHkKLT4+PiBnZXRjb250ZXh0KCkudHJhcHNbRGl2aXNpb25CeVplcm9dID0gMQotPj4+IHByaW50KGRpZyAvIDApCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uLgotICAuLi4KLSAgLi4uCi1kZWNpbWFsLkRpdmlzaW9uQnlaZXJvOiB4IC8gMAotPj4+IGMgPSBDb250ZXh0KCkKLT4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0wCi0+Pj4gYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkKLURlY2ltYWwoJ05hTicpCi0+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDEKLT4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotMQotPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLTAKLT4+PiBwcmludChjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKSkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi0gIC4uLgotICAuLi4KLWRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbjogMCAvIDAKLT4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotMQotPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKLT4+PiBwcmludChjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKSkKLU5hTgotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0xCi0+Pj4KLSIiIgotCi1fX2FsbF9fID0gWwotICAgICMgVHdvIG1ham9yIGNsYXNzZXMKLSAgICAnRGVjaW1hbCcsICdDb250ZXh0JywKLQotICAgICMgTmFtZWQgdHVwbGUgcmVwcmVzZW50YXRpb24KLSAgICAnRGVjaW1hbFR1cGxlJywKLQotICAgICMgQ29udGV4dHMKLSAgICAnRGVmYXVsdENvbnRleHQnLCAnQmFzaWNDb250ZXh0JywgJ0V4dGVuZGVkQ29udGV4dCcsCi0KLSAgICAjIEV4Y2VwdGlvbnMKLSAgICAnRGVjaW1hbEV4Y2VwdGlvbicsICdDbGFtcGVkJywgJ0ludmFsaWRPcGVyYXRpb24nLCAnRGl2aXNpb25CeVplcm8nLAotICAgICdJbmV4YWN0JywgJ1JvdW5kZWQnLCAnU3Vibm9ybWFsJywgJ092ZXJmbG93JywgJ1VuZGVyZmxvdycsCi0gICAgJ0Zsb2F0T3BlcmF0aW9uJywKLQotICAgICMgRXhjZXB0aW9uYWwgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgSW52YWxpZE9wZXJhdGlvbgotICAgICdEaXZpc2lvbkltcG9zc2libGUnLCAnSW52YWxpZENvbnRleHQnLCAnQ29udmVyc2lvblN5bnRheCcsICdEaXZpc2lvblVuZGVmaW5lZCcsCi0KLSAgICAjIENvbnN0YW50cyBmb3IgdXNlIGluIHNldHRpbmcgdXAgY29udGV4dHMKLSAgICAnUk9VTkRfRE9XTicsICdST1VORF9IQUxGX1VQJywgJ1JPVU5EX0hBTEZfRVZFTicsICdST1VORF9DRUlMSU5HJywKLSAgICAnUk9VTkRfRkxPT1InLCAnUk9VTkRfVVAnLCAnUk9VTkRfSEFMRl9ET1dOJywgJ1JPVU5EXzA1VVAnLAotCi0gICAgIyBGdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBjb250ZXh0cwotICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JywKLQotICAgICMgTGltaXRzIGZvciB0aGUgQyB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgJ01BWF9QUkVDJywgICdNQVhfRU1BWCcsICdNSU5fRU1JTicsICdNSU5fRVRJTlknLAotCi0gICAgIyBDIHZlcnNpb246IGNvbXBpbGUgdGltZSBjaG9pY2UgdGhhdCBlbmFibGVzIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAotICAgICdIQVZFX1RIUkVBRFMnCi1dCi0KLV9fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsLwotX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjEiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCi0KLWltcG9ydCBtYXRoIGFzIF9tYXRoCi1pbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycwotaW1wb3J0IHN5cwogCiB0cnk6Ci0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQotICAgIERlY2ltYWxUdXBsZSA9IF9uYW1lZHR1cGxlKCdEZWNpbWFsVHVwbGUnLCAnc2lnbiBkaWdpdHMgZXhwb25lbnQnKQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIERlY2ltYWxUdXBsZSA9IGxhbWJkYSAqYXJnczogYXJncwotCi0jIFJvdW5kaW5nCi1ST1VORF9ET1dOID0gJ1JPVU5EX0RPV04nCi1ST1VORF9IQUxGX1VQID0gJ1JPVU5EX0hBTEZfVVAnCi1ST1VORF9IQUxGX0VWRU4gPSAnUk9VTkRfSEFMRl9FVkVOJwotUk9VTkRfQ0VJTElORyA9ICdST1VORF9DRUlMSU5HJwotUk9VTkRfRkxPT1IgPSAnUk9VTkRfRkxPT1InCi1ST1VORF9VUCA9ICdST1VORF9VUCcKLVJPVU5EX0hBTEZfRE9XTiA9ICdST1VORF9IQUxGX0RPV04nCi1ST1VORF8wNVVQID0gJ1JPVU5EXzA1VVAnCi0KLSMgQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDIHZlcnNpb24KLUhBVkVfVEhSRUFEUyA9IFRydWUKLWlmIHN5cy5tYXhzaXplID09IDIqKjYzLTE6Ci0gICAgTUFYX1BSRUMgPSA5OTk5OTk5OTk5OTk5OTk5OTkKLSAgICBNQVhfRU1BWCA9IDk5OTk5OTk5OTk5OTk5OTk5OQotICAgIE1JTl9FTUlOID0gLTk5OTk5OTk5OTk5OTk5OTk5OQotZWxzZToKLSAgICBNQVhfUFJFQyA9IDQyNTAwMDAwMAotICAgIE1BWF9FTUFYID0gNDI1MDAwMDAwCi0gICAgTUlOX0VNSU4gPSAtNDI1MDAwMDAwCi0KLU1JTl9FVElOWSA9IE1JTl9FTUlOIC0gKE1BWF9QUkVDLTEpCi0KLSMgRXJyb3JzCi0KLWNsYXNzIERlY2ltYWxFeGNlcHRpb24oQXJpdGhtZXRpY0Vycm9yKToKLSAgICAiIiJCYXNlIGV4Y2VwdGlvbiBjbGFzcy4KLQotICAgIFVzZWQgZXhjZXB0aW9ucyBkZXJpdmUgZnJvbSB0aGlzLgotICAgIElmIGFuIGV4Y2VwdGlvbiBkZXJpdmVzIGZyb20gYW5vdGhlciBleGNlcHRpb24gYmVzaWRlcyB0aGlzIChzdWNoIGFzCi0gICAgVW5kZXJmbG93IChJbmV4YWN0LCBSb3VuZGVkLCBTdWJub3JtYWwpIHRoYXQgaW5kaWNhdGVzIHRoYXQgaXQgaXMgb25seQotICAgIGNhbGxlZCBpZiB0aGUgb3RoZXJzIGFyZSBwcmVzZW50LiAgVGhpcyBpc24ndCBhY3R1YWxseSB1c2VkIGZvcgotICAgIGFueXRoaW5nLCB0aG91Z2guCi0KLSAgICBoYW5kbGUgIC0tIENhbGxlZCB3aGVuIGNvbnRleHQuX3JhaXNlX2Vycm9yIGlzIGNhbGxlZCBhbmQgdGhlCi0gICAgICAgICAgICAgICB0cmFwX2VuYWJsZXIgaXMgbm90IHNldC4gIEZpcnN0IGFyZ3VtZW50IGlzIHNlbGYsIHNlY29uZCBpcyB0aGUKLSAgICAgICAgICAgICAgIGNvbnRleHQuICBNb3JlIGFyZ3VtZW50cyBjYW4gYmUgZ2l2ZW4sIHRob3NlIGJlaW5nIGFmdGVyCi0gICAgICAgICAgICAgICB0aGUgZXhwbGFuYXRpb24gaW4gX3JhaXNlX2Vycm9yIChGb3IgZXhhbXBsZSwKLSAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE5ld0Vycm9yLCAnKC14KSEnLCBzZWxmLl9zaWduKSB3b3VsZAotICAgICAgICAgICAgICAgY2FsbCBOZXdFcnJvcigpLmhhbmRsZShjb250ZXh0LCBzZWxmLl9zaWduKS4pCi0KLSAgICBUbyBkZWZpbmUgYSBuZXcgZXhjZXB0aW9uLCBpdCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBoYXZlIGl0IGRlcml2ZQotICAgIGZyb20gRGVjaW1hbEV4Y2VwdGlvbi4KLSAgICAiIiIKLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIENsYW1wZWQoRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhwb25lbnQgb2YgYSAwIGNoYW5nZWQgdG8gZml0IGJvdW5kcy4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGNsYW1wZWQgaWYgdGhlIGV4cG9uZW50IG9mIGEgcmVzdWx0IGhhcyBiZWVuCi0gICAgYWx0ZXJlZCBpbiBvcmRlciB0byBmaXQgdGhlIGNvbnN0cmFpbnRzIG9mIGEgc3BlY2lmaWMgY29uY3JldGUKLSAgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgbWF5IG9jY3VyIHdoZW4gdGhlIGV4cG9uZW50IG9mIGEgemVybyByZXN1bHQgd291bGQKLSAgICBiZSBvdXRzaWRlIHRoZSBib3VuZHMgb2YgYSByZXByZXNlbnRhdGlvbiwgb3Igd2hlbiBhIGxhcmdlIG5vcm1hbAotICAgIG51bWJlciB3b3VsZCBoYXZlIGFuIGVuY29kZWQgZXhwb25lbnQgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQuICBJbgotICAgIHRoaXMgbGF0dGVyIGNhc2UsIHRoZSBleHBvbmVudCBpcyByZWR1Y2VkIHRvIGZpdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICBudW1iZXIgb2YgemVybyBkaWdpdHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBjb2VmZmljaWVudCAoImZvbGQtZG93biIpLgotICAgICIiIgotCi1jbGFzcyBJbnZhbGlkT3BlcmF0aW9uKERlY2ltYWxFeGNlcHRpb24pOgotICAgICIiIkFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQuCi0KLSAgICBWYXJpb3VzIGJhZCB0aGluZ3MgY2F1c2UgdGhpczoKLQotICAgIFNvbWV0aGluZyBjcmVhdGVzIGEgc2lnbmFsaW5nIE5hTgotICAgIC1JTkYgKyBJTkYKLSAgICAwICogKCstKUlORgotICAgICgrLSlJTkYgLyAoKy0pSU5GCi0gICAgeCAlIDAKLSAgICAoKy0pSU5GICUgeAotICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKLSAgICBzcXJ0KC14KSAsIHggPiAwCi0gICAgMCAqKiAwCi0gICAgeCAqKiAobm9uLWludGVnZXIpCi0gICAgeCAqKiAoKy0pSU5GCi0gICAgQW4gb3BlcmFuZCBpcyBpbnZhbGlkCi0KLSAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gYWZ0ZXIgdGhlc2UgaXMgYSBxdWlldCBwb3NpdGl2ZSBOYU4sCi0gICAgZXhjZXB0IHdoZW4gdGhlIGNhdXNlIGlzIGEgc2lnbmFsaW5nIE5hTiwgaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0IGlzCi0gICAgYWxzbyBhIHF1aWV0IE5hTiwgYnV0IHdpdGggdGhlIG9yaWdpbmFsIHNpZ24sIGFuZCBhbiBvcHRpb25hbAotICAgIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uCi0gICAgIiIiCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6Ci0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGFyZ3NbMF0uX3NpZ24sIGFyZ3NbMF0uX2ludCwgJ24nLCBUcnVlKQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4X25hbihjb250ZXh0KQotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBDb252ZXJzaW9uU3ludGF4KEludmFsaWRPcGVyYXRpb24pOgotICAgICIiIlRyeWluZyB0byBjb252ZXJ0IGJhZGx5IGZvcm1lZCBzdHJpbmcuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBzdHJpbmcgaXMgYmVpbmcKLSAgICBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgYW5kIGl0IGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIG51bWVyaWMgc3RyaW5nCi0gICAgc3ludGF4LiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KLSAgICAiIiIKLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgRGl2aXNpb25CeVplcm8oRGVjaW1hbEV4Y2VwdGlvbiwgWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICIiIkRpdmlzaW9uIGJ5IDAuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBkaXZpc2lvbi1ieS16ZXJvIGlmIGRpdmlzaW9uIG9mIGEgZmluaXRlIG51bWJlcgotICAgIGJ5IHplcm8gd2FzIGF0dGVtcHRlZCAoZHVyaW5nIGEgZGl2aWRlLWludGVnZXIgb3IgZGl2aWRlIG9wZXJhdGlvbiwgb3IgYQotICAgIHBvd2VyIG9wZXJhdGlvbiB3aXRoIG5lZ2F0aXZlIHJpZ2h0LWhhbmQgb3BlcmFuZCksIGFuZCB0aGUgZGl2aWRlbmQgd2FzCi0gICAgbm90IHplcm8uCi0KLSAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwgd2hlcmUgc2lnbiBpcyB0aGUgZXhjbHVzaXZlCi0gICAgb3Igb2YgdGhlIHNpZ25zIG9mIHRoZSBvcGVyYW5kcyBmb3IgZGl2aWRlLCBvciBpcyAxIGZvciBhbiBvZGQgcG93ZXIgb2YKLSAgICAtMCwgZm9yIHBvd2VyLgotICAgICIiIgotCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCBzaWduLCAqYXJncyk6Ci0gICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLQotY2xhc3MgRGl2aXNpb25JbXBvc3NpYmxlKEludmFsaWRPcGVyYXRpb24pOgotICAgICIiIkNhbm5vdCBwZXJmb3JtIHRoZSBkaXZpc2lvbiBhZGVxdWF0ZWx5LgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgdGhlIGludGVnZXIgcmVzdWx0IG9mIGEKLSAgICBkaXZpZGUtaW50ZWdlciBvciByZW1haW5kZXIgb3BlcmF0aW9uIGhhZCB0b28gbWFueSBkaWdpdHMgKHdvdWxkIGJlCi0gICAgbG9uZ2VyIHRoYW4gcHJlY2lzaW9uKS4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgRGl2aXNpb25VbmRlZmluZWQoSW52YWxpZE9wZXJhdGlvbiwgWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICIiIlVuZGVmaW5lZCByZXN1bHQgb2YgZGl2aXNpb24uCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBkaXZpc2lvbiBieSB6ZXJvIHdhcwotICAgIGF0dGVtcHRlZCAoZHVyaW5nIGEgZGl2aWRlLWludGVnZXIsIGRpdmlkZSwgb3IgcmVtYWluZGVyIG9wZXJhdGlvbiksIGFuZAotICAgIHRoZSBkaXZpZGVuZCBpcyBhbHNvIHplcm8uICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgotICAgICIiIgotCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6Ci0gICAgICAgIHJldHVybiBfTmFOCi0KLWNsYXNzIEluZXhhY3QoRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiSGFkIHRvIHJvdW5kLCBsb3NpbmcgaW5mb3JtYXRpb24uCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbmV4YWN0IHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCi0gICAgbm90IGV4YWN0ICh0aGF0IGlzLCBpdCBuZWVkZWQgdG8gYmUgcm91bmRlZCBhbmQgYW55IGRpc2NhcmRlZCBkaWdpdHMKLSAgICB3ZXJlIG5vbi16ZXJvKSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKLSAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KLQotICAgIFRoZSBpbmV4YWN0IHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgotICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgd2FzIGluZXhhY3QuCi0gICAgIiIiCi0KLWNsYXNzIEludmFsaWRDb250ZXh0KEludmFsaWRPcGVyYXRpb24pOgotICAgICIiIkludmFsaWQgY29udGV4dC4gIFVua25vd24gcm91bmRpbmcsIGZvciBleGFtcGxlLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgYW4gaW52YWxpZCBjb250ZXh0IHdhcwotICAgIGRldGVjdGVkIGR1cmluZyBhbiBvcGVyYXRpb24uICBUaGlzIGNhbiBvY2N1ciBpZiBjb250ZXh0cyBhcmUgbm90IGNoZWNrZWQKLSAgICBvbiBjcmVhdGlvbiBhbmQgZWl0aGVyIHRoZSBwcmVjaXNpb24gZXhjZWVkcyB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKLSAgICB1bmRlcmx5aW5nIGNvbmNyZXRlIHJlcHJlc2VudGF0aW9uIG9yIGFuIHVua25vd24gb3IgdW5zdXBwb3J0ZWQgcm91bmRpbmcKLSAgICB3YXMgc3BlY2lmaWVkLiAgVGhlc2UgYXNwZWN0cyBvZiB0aGUgY29udGV4dCBuZWVkIG9ubHkgYmUgY2hlY2tlZCB3aGVuCi0gICAgdGhlIHZhbHVlcyBhcmUgcmVxdWlyZWQgdG8gYmUgdXNlZC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgUm91bmRlZChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJOdW1iZXIgZ290IHJvdW5kZWQgKG5vdCAgbmVjZXNzYXJpbHkgY2hhbmdlZCBkdXJpbmcgcm91bmRpbmcpLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgcm91bmRlZCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiBpcwotICAgIHJvdW5kZWQgKHRoYXQgaXMsIHNvbWUgemVybyBvciBub24temVybyBkaWdpdHMgd2VyZSBkaXNjYXJkZWQgZnJvbSB0aGUKLSAgICBjb2VmZmljaWVudCksIG9yIGlmIGFuIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBjb25kaXRpb24gb2NjdXJzLiAgVGhlCi0gICAgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCi0KLSAgICBUaGUgcm91bmRlZCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KLSAgICBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIGNhdXNlZCBhIGxvc3Mgb2YgcHJlY2lzaW9uLgotICAgICIiIgotCi1jbGFzcyBTdWJub3JtYWwoRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhwb25lbnQgPCBFbWluIGJlZm9yZSByb3VuZGluZy4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHN1Ym5vcm1hbCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGEgY29udmVyc2lvbiBvcgotICAgIG9wZXJhdGlvbiBpcyBzdWJub3JtYWwgKHRoYXQgaXMsIGl0cyBhZGp1c3RlZCBleHBvbmVudCBpcyBsZXNzIHRoYW4KLSAgICBFbWluLCBiZWZvcmUgYW55IHJvdW5kaW5nKS4gIFRoZSByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KLQotICAgIFRoZSBzdWJub3JtYWwgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCi0gICAgb3Igb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB5aWVsZGVkIGEgc3Vibm9ybWFsIHJlc3VsdC4KLSAgICAiIiIKLQotY2xhc3MgT3ZlcmZsb3coSW5leGFjdCwgUm91bmRlZCk6Ci0gICAgIiIiTnVtZXJpY2FsIG92ZXJmbG93LgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgb3ZlcmZsb3cgaWYgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIGEgcmVzdWx0Ci0gICAgKGZyb20gYSBjb252ZXJzaW9uIG9yIGZyb20gYW4gb3BlcmF0aW9uIHRoYXQgaXMgbm90IGFuIGF0dGVtcHQgdG8gZGl2aWRlCi0gICAgYnkgemVybyksIGFmdGVyIHJvdW5kaW5nLCB3b3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIGxhcmdlc3QgdmFsdWUgdGhhdAotICAgIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlIEVtYXgpLgotCi0gICAgVGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSByb3VuZGluZyBtb2RlOgotCi0gICAgRm9yIHJvdW5kLWhhbGYtdXAgYW5kIHJvdW5kLWhhbGYtZXZlbiAoYW5kIGZvciByb3VuZC1oYWxmLWRvd24gYW5kCi0gICAgcm91bmQtdXAsIGlmIGltcGxlbWVudGVkKSwgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGlzIFtzaWduLGluZl0sCi0gICAgd2hlcmUgc2lnbiBpcyB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvciByb3VuZC1kb3duLCB0aGUKLSAgICByZXN1bHQgaXMgdGhlIGxhcmdlc3QgZmluaXRlIG51bWJlciB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBpbiB0aGUKLSAgICBjdXJyZW50IHByZWNpc2lvbiwgd2l0aCB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvcgotICAgIHJvdW5kLWNlaWxpbmcsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YKLSAgICB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBpcyAxLCBvciBpcyBbMCxpbmZdIG90aGVyd2lzZS4gIEZvciByb3VuZC1mbG9vciwKLSAgICB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIGZvciByb3VuZC1kb3duIGlmIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUKLSAgICByZXN1bHQgaXMgMCwgb3IgaXMgWzEsaW5mXSBvdGhlcndpc2UuICBJbiBhbGwgY2FzZXMsIEluZXhhY3QgYW5kIFJvdW5kZWQKLSAgICB3aWxsIGFsc28gYmUgcmFpc2VkLgotICAgICIiIgotCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCBzaWduLCAqYXJncyk6Ci0gICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgaW4gKFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9VTkRfSEFMRl9ET1dOLCBST1VORF9VUCk6Ci0gICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0gICAgICAgIGlmIHNpZ24gPT0gMDoKLSAgICAgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfQ0VJTElORzoKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnOScqY29udGV4dC5wcmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKLSAgICAgICAgaWYgc2lnbiA9PSAxOgotICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9GTE9PUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnOScqY29udGV4dC5wcmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtYXgtY29udGV4dC5wcmVjKzEpCi0KLQotY2xhc3MgVW5kZXJmbG93KEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCk6Ci0gICAgIiIiTnVtZXJpY2FsIHVuZGVyZmxvdyB3aXRoIHJlc3VsdCByb3VuZGVkIHRvIDAuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyB1bmRlcmZsb3cgaWYgYSByZXN1bHQgaXMgaW5leGFjdCBhbmQgdGhlCi0gICAgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCB3b3VsZCBiZSBzbWFsbGVyIChtb3JlIG5lZ2F0aXZlKSB0aGFuCi0gICAgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUKLSAgICBFbWluKS4gIFRoYXQgaXMsIHRoZSByZXN1bHQgaXMgYm90aCBpbmV4YWN0IGFuZCBzdWJub3JtYWwuCi0KLSAgICBUaGUgcmVzdWx0IGFmdGVyIGFuIHVuZGVyZmxvdyB3aWxsIGJlIGEgc3Vibm9ybWFsIG51bWJlciByb3VuZGVkLCBpZgotICAgIG5lY2Vzc2FyeSwgc28gdGhhdCBpdHMgZXhwb25lbnQgaXMgbm90IGxlc3MgdGhhbiBFdGlueS4gIFRoaXMgbWF5IHJlc3VsdAotICAgIGluIDAgd2l0aCB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBhbmQgYW4gZXhwb25lbnQgb2YgRXRpbnkuCi0KLSAgICBJbiBhbGwgY2FzZXMsIEluZXhhY3QsIFJvdW5kZWQsIGFuZCBTdWJub3JtYWwgd2lsbCBhbHNvIGJlIHJhaXNlZC4KLSAgICAiIiIKLQotY2xhc3MgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgVHlwZUVycm9yKToKLSAgICAiIiJFbmFibGUgc3RyaWN0ZXIgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscy4KLQotICAgIElmIHRoZSBzaWduYWwgaXMgbm90IHRyYXBwZWQgKGRlZmF1bHQpLCBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBpcwotICAgIHBlcm1pdHRlZCBpbiB0aGUgRGVjaW1hbCgpIGNvbnN0cnVjdG9yLCBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKCkgYW5kCi0gICAgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLiBCb3RoIGNvbnZlcnNpb24gYW5kIGNvbXBhcmlzb25zIGFyZSBleGFjdC4KLSAgICBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkIG9wZXJhdGlvbiBpcyBzaWxlbnRseSByZWNvcmRlZCBieSBzZXR0aW5nCi0gICAgRmxvYXRPcGVyYXRpb24gaW4gdGhlIGNvbnRleHQgZmxhZ3MuICBFeHBsaWNpdCBjb252ZXJzaW9ucyB3aXRoCi0gICAgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgb3IgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCkgZG8gbm90Ci0gICAgc2V0IHRoZSBmbGFnLgotCi0gICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAotICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIEZsb2F0T3BlcmF0aW9uLgotICAgICIiIgotCi0jIExpc3Qgb2YgcHVibGljIHRyYXBzIGFuZCBmbGFncwotX3NpZ25hbHMgPSBbQ2xhbXBlZCwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkLAotICAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWwsIEZsb2F0T3BlcmF0aW9uXQotCi0jIE1hcCBjb25kaXRpb25zIChwZXIgdGhlIHNwZWMpIHRvIHNpZ25hbHMKLV9jb25kaXRpb25fbWFwID0ge0NvbnZlcnNpb25TeW50YXg6SW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgIERpdmlzaW9uSW1wb3NzaWJsZTpJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgRGl2aXNpb25VbmRlZmluZWQ6SW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgIEludmFsaWRDb250ZXh0OkludmFsaWRPcGVyYXRpb259Ci0KLSMgVmFsaWQgcm91bmRpbmcgbW9kZXMKLV9yb3VuZGluZ19tb2RlcyA9IChST1VORF9ET1dOLCBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0VWRU4sIFJPVU5EX0NFSUxJTkcsCi0gICAgICAgICAgICAgICAgICAgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EXzA1VVApCi0KLSMjIyMjIENvbnRleHQgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgVGhlIGdldGNvbnRleHQoKSBhbmQgc2V0Y29udGV4dCgpIGZ1bmN0aW9uIG1hbmFnZSBhY2Nlc3MgdG8gYSB0aHJlYWQtbG9jYWwKLSMgY3VycmVudCBjb250ZXh0LiAgUHkyLjQgb2ZmZXJzIGRpcmVjdCBzdXBwb3J0IGZvciB0aHJlYWQgbG9jYWxzLiAgSWYgdGhhdAotIyBpcyBub3QgYXZhaWxhYmxlLCB1c2UgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgd2hpY2ggaXMgc2xvd2VyIGJ1dCB3aWxsCi0jIHdvcmsgZm9yIG9sZGVyIFB5dGhvbnMuICBJZiB0aHJlYWRzIGFyZSBub3QgcGFydCBvZiB0aGUgYnVpbGQsIGNyZWF0ZSBhCi0jIG1vY2sgdGhyZWFkaW5nIG9iamVjdCB3aXRoIHRocmVhZGluZy5sb2NhbCgpIHJldHVybmluZyB0aGUgbW9kdWxlIG5hbWVzcGFjZS4KLQotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWRzOyBjcmVhdGUgYSBtb2NrIG9iamVjdCBpbnN0ZWFkCi0gICAgY2xhc3MgTW9ja1RocmVhZGluZyhvYmplY3QpOgotICAgICAgICBkZWYgbG9jYWwoc2VsZiwgc3lzPXN5cyk6Ci0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbX19uYW1lX19dCi0gICAgdGhyZWFkaW5nID0gTW9ja1RocmVhZGluZygpCi0gICAgZGVsIE1vY2tUaHJlYWRpbmcKLQotdHJ5OgotICAgIHRocmVhZGluZy5sb2NhbAotCi1leGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0KLSAgICAjIFRvIGZpeCByZWxvYWRpbmcsIGZvcmNlIGl0IHRvIGNyZWF0ZSBhIG5ldyBjb250ZXh0Ci0gICAgIyBPbGQgY29udGV4dHMgaGF2ZSBkaWZmZXJlbnQgZXhjZXB0aW9ucyBpbiB0aGVpciBkaWN0cywgbWFraW5nIHByb2JsZW1zLgotICAgIGlmIGhhc2F0dHIodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCksICdfX2RlY2ltYWxfY29udGV4dF9fJyk6Ci0gICAgICAgIGRlbCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCi0KLSAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0KToKLSAgICAgICAgIiIiU2V0IHRoaXMgdGhyZWFkJ3MgY29udGV4dCB0byBjb250ZXh0LiIiIgotICAgICAgICBpZiBjb250ZXh0IGluIChEZWZhdWx0Q29udGV4dCwgQmFzaWNDb250ZXh0LCBFeHRlbmRlZENvbnRleHQpOgotICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKLQotICAgIGRlZiBnZXRjb250ZXh0KCk6Ci0gICAgICAgICIiIlJldHVybnMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgotCi0gICAgICAgIElmIHRoaXMgdGhyZWFkIGRvZXMgbm90IHlldCBoYXZlIGEgY29udGV4dCwgcmV0dXJucwotICAgICAgICBhIG5ldyBjb250ZXh0IGFuZCBzZXRzIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KLSAgICAgICAgTmV3IGNvbnRleHRzIGFyZSBjb3BpZXMgb2YgRGVmYXVsdENvbnRleHQuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCi0gICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLQotZWxzZToKLQotICAgIGxvY2FsID0gdGhyZWFkaW5nLmxvY2FsKCkKLSAgICBpZiBoYXNhdHRyKGxvY2FsLCAnX19kZWNpbWFsX2NvbnRleHRfXycpOgotICAgICAgICBkZWwgbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXwotCi0gICAgZGVmIGdldGNvbnRleHQoX2xvY2FsPWxvY2FsKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCi0KLSAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCi0gICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgotICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCi0gICAgICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0KLSAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0LCBfbG9jYWw9bG9jYWwpOgotICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKLQotICAgIGRlbCB0aHJlYWRpbmcsIGxvY2FsICAgICAgICAjIERvbid0IGNvbnRhbWluYXRlIHRoZSBuYW1lc3BhY2UKLQotZGVmIGxvY2FsY29udGV4dChjdHg9Tm9uZSk6Ci0gICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIGZvciBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQKLQotICAgIFVzZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQKLSAgICBUaGUgcmV0dXJuZWQgY29udGV4dCBtYW5hZ2VyIGNyZWF0ZXMgYSBsb2NhbCBkZWNpbWFsIGNvbnRleHQKLSAgICBpbiBhIHdpdGggc3RhdGVtZW50OgotICAgICAgICBkZWYgc2luKHgpOgotICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgY3R4OgotICAgICAgICAgICAgICAgICBjdHgucHJlYyArPSAyCi0gICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCi0gICAgICAgICAgICAgICAgICMgdXNlcyBhIHByZWNpc2lvbiAyIGdyZWF0ZXIgdGhhbiBub3JtYWwKLSAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIHByZWNpc2lvbgotCi0gICAgICAgICBkZWYgc2luKHgpOgotICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCi0gICAgICAgICAgICAgICAgICMgdXNlcyB0aGUgRXh0ZW5kZWQgQ29udGV4dCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAjIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KLSAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIGNvbnRleHQKLQotICAgID4+PiBzZXRjb250ZXh0KERlZmF1bHRDb250ZXh0KQotICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKLSAgICAyOAotICAgID4+PiB3aXRoIGxvY2FsY29udGV4dCgpOgotICAgIC4uLiAgICAgY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgLi4uICAgICBjdHgucHJlYyArPSAyCi0gICAgLi4uICAgICBwcmludChjdHgucHJlYykKLSAgICAuLi4KLSAgICAzMAotICAgID4+PiB3aXRoIGxvY2FsY29udGV4dChFeHRlbmRlZENvbnRleHQpOgotICAgIC4uLiAgICAgcHJpbnQoZ2V0Y29udGV4dCgpLnByZWMpCi0gICAgLi4uCi0gICAgOQotICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKLSAgICAyOAotICAgICIiIgotICAgIGlmIGN0eCBpcyBOb25lOiBjdHggPSBnZXRjb250ZXh0KCkKLSAgICByZXR1cm4gX0NvbnRleHRNYW5hZ2VyKGN0eCkKLQotCi0jIyMjIyBEZWNpbWFsIGNsYXNzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBEbyBub3Qgc3ViY2xhc3MgRGVjaW1hbCBmcm9tIG51bWJlcnMuUmVhbCBhbmQgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIHN1Y2gKLSMgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdCBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4gIFNlZSB0aGUgbm90ZXMgaW4KLSMgbnVtYmVycy5weSBmb3IgbW9yZSBkZXRhaWwuCi0KLWNsYXNzIERlY2ltYWwob2JqZWN0KToKLSAgICAiIiJGbG9hdGluZyBwb2ludCBjbGFzcyBmb3IgZGVjaW1hbCBhcml0aG1ldGljLiIiIgotCi0gICAgX19zbG90c19fID0gKCdfZXhwJywnX2ludCcsJ19zaWduJywgJ19pc19zcGVjaWFsJykKLSAgICAjIEdlbmVyYWxseSwgdGhlIHZhbHVlIG9mIHRoZSBEZWNpbWFsIGluc3RhbmNlIGlzIGdpdmVuIGJ5Ci0gICAgIyAgKC0xKSoqX3NpZ24gKiBfaW50ICogMTAqKl9leHAKLSAgICAjIFNwZWNpYWwgdmFsdWVzIGFyZSBzaWduaWZpZWQgYnkgX2lzX3NwZWNpYWwgPT0gVHJ1ZQotCi0gICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXwotICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9IjAiLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIHBvaW50IGluc3RhbmNlLgotCi0gICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykgICAgICAgICAgICAgICMgc3RyaW5nIGlucHV0Ci0gICAgICAgIERlY2ltYWwoJzMuMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbCgoMCwgKDMsIDEsIDQpLCAtMikpICAjIHR1cGxlIChzaWduLCBkaWdpdF90dXBsZSwgZXhwb25lbnQpCi0gICAgICAgIERlY2ltYWwoJzMuMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbCgzMTQpICAgICAgICAgICAgICAgICAjIGludAotICAgICAgICBEZWNpbWFsKCczMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbChEZWNpbWFsKDMxNCkpICAgICAgICAjIGFub3RoZXIgZGVjaW1hbCBpbnN0YW5jZQotICAgICAgICBEZWNpbWFsKCczMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbCgnICAzLjE0ICBcXG4nKSAgICAgICAgIyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9rYXkKLSAgICAgICAgRGVjaW1hbCgnMy4xNCcpCi0gICAgICAgICIiIgotCi0gICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb2VmZmljaWVudCwgc2VsZi5faW50LCBpcyBhY3R1YWxseSBzdG9yZWQgYXMKLSAgICAgICAgIyBhIHN0cmluZyByYXRoZXIgdGhhbiBhcyBhIHR1cGxlIG9mIGRpZ2l0cy4gIFRoaXMgc3BlZWRzIHVwCi0gICAgICAgICMgdGhlICJkaWdpdHMgdG8gaW50ZWdlciIgYW5kICJpbnRlZ2VyIHRvIGRpZ2l0cyIgY29udmVyc2lvbnMKLSAgICAgICAgIyB0aGF0IGFyZSB1c2VkIGluIGFsbW9zdCBldmVyeSBhcml0aG1ldGljIG9wZXJhdGlvbiBvbgotICAgICAgICAjIERlY2ltYWxzLiAgVGhpcyBpcyBhbiBpbnRlcm5hbCBkZXRhaWw6IHRoZSBhc190dXBsZSBmdW5jdGlvbgotICAgICAgICAjIGFuZCB0aGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBzdGlsbCBkZWFsIHdpdGggdHVwbGVzIG9mCi0gICAgICAgICMgZGlnaXRzLgotCi0gICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCi0KLSAgICAgICAgIyBGcm9tIGEgc3RyaW5nCi0gICAgICAgICMgUkVzIGluc2lzdCBvbiByZWFsIHN0cmluZ3MsIHNvIHdlIGNhbiB0b28uCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpKQotICAgICAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBsaXRlcmFsIGZvciBEZWNpbWFsOiAlciIgJSB2YWx1ZSkKLQotICAgICAgICAgICAgaWYgbS5ncm91cCgnc2lnbicpID09ICItIjoKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAotICAgICAgICAgICAgaW50cGFydCA9IG0uZ3JvdXAoJ2ludCcpCi0gICAgICAgICAgICBpZiBpbnRwYXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcgotICAgICAgICAgICAgICAgIGZyYWNwYXJ0ID0gbS5ncm91cCgnZnJhYycpIG9yICcnCi0gICAgICAgICAgICAgICAgZXhwID0gaW50KG0uZ3JvdXAoJ2V4cCcpIG9yICcwJykKLSAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIoaW50KGludHBhcnQrZnJhY3BhcnQpKQotICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IGV4cCAtIGxlbihmcmFjcGFydCkKLSAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlhZyA9IG0uZ3JvdXAoJ2RpYWcnKQotICAgICAgICAgICAgICAgIGlmIGRpYWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgTmFOCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoZGlhZyBvciAnMCcpKS5sc3RyaXAoJzAnKQotICAgICAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduYWwnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9ICdOJwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ24nCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBpbmZpbml0eQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ0YnCi0gICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgIyBGcm9tIGFuIGludGVnZXIKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKLSAgICAgICAgICAgIGlmIHZhbHVlID49IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDEKLSAgICAgICAgICAgIHNlbGYuX2V4cCA9IDAKLSAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihhYnModmFsdWUpKQotICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCi0gICAgICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgICAgICMgRnJvbSBhbm90aGVyIGRlY2ltYWwKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6Ci0gICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAotICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCi0gICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAotICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAjIEZyb20gYW4gaW50ZXJuYWwgd29ya2luZyB2YWx1ZQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBfV29ya1JlcCk6Ci0gICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuc2lnbgotICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKHZhbHVlLmludCkKLSAgICAgICAgICAgIHNlbGYuX2V4cCA9IGludCh2YWx1ZS5leHApCi0gICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgIyB0dXBsZS9saXN0IGNvbnZlcnNpb24gKHBvc3NpYmx5IGZyb20gYXNfdHVwbGUoKSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGxpc3QsdHVwbGUpKToKLSAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgIT0gMzoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHR1cGxlIHNpemUgaW4gY3JlYXRpb24gb2YgRGVjaW1hbCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSBsaXN0IG9yIHR1cGxlLiAgVGhlIGxpc3Qgb3IgdHVwbGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBoYXZlIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMuJykKLSAgICAgICAgICAgICMgcHJvY2VzcyBzaWduLiAgVGhlIGlzaW5zdGFuY2UgdGVzdCByZWplY3RzIGZsb2F0cwotICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKHZhbHVlWzBdLCBpbnQpIGFuZCB2YWx1ZVswXSBpbiAoMCwxKSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBzaWduLiAgVGhlIGZpcnN0IHZhbHVlIGluIHRoZSB0dXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlIGFuIGludGVnZXI7IGVpdGhlciAwIGZvciBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGl2ZSBudW1iZXIgb3IgMSBmb3IgYSBuZWdhdGl2ZSBudW1iZXIuIikKLSAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZVswXQotICAgICAgICAgICAgaWYgdmFsdWVbMl0gPT0gJ0YnOgotICAgICAgICAgICAgICAgICMgaW5maW5pdHk6IHZhbHVlWzFdIGlzIGlnbm9yZWQKLSAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKLSAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQotICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbmQgdmFsaWRhdGUgdGhlIGRpZ2l0cyBpbiB2YWx1ZVsxXQotICAgICAgICAgICAgICAgIGRpZ2l0cyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIGRpZ2l0IGluIHZhbHVlWzFdOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRpZ2l0LCBpbnQpIGFuZCAwIDw9IGRpZ2l0IDw9IDk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgbGVhZGluZyB6ZXJvcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlnaXRzIG9yIGRpZ2l0ICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmFwcGVuZChkaWdpdCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBzZWNvbmQgdmFsdWUgaW4gdGhlIHR1cGxlIG11c3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgY29tcG9zZWQgb2YgaW50ZWdlcnMgaW4gdGhlIHJhbmdlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAgdGhyb3VnaCA5LiIpCi0gICAgICAgICAgICAgICAgaWYgdmFsdWVbMl0gaW4gKCduJywgJ04nKToKLSAgICAgICAgICAgICAgICAgICAgIyBOYU46IGRpZ2l0cyBmb3JtIHRoZSBkaWFnbm9zdGljCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWVbMl0sIGludCk6Ci0gICAgICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcjogZGlnaXRzIGdpdmUgdGhlIGNvZWZmaWNpZW50Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzIG9yIFswXSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSB0aGlyZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGFuIGludGVnZXIsIG9yIG9uZSBvZiB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzICdGJywgJ24nLCAnTicuIikKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpOgotICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgIgotICAgICAgICAgICAgICAgICJlbmFibGVkIikKLSAgICAgICAgICAgIHZhbHVlID0gRGVjaW1hbC5mcm9tX2Zsb2F0KHZhbHVlKQotICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKLSAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgotICAgICAgICAgICAgc2VsZi5faW50ICA9IHZhbHVlLl9pbnQKLSAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgID0gdmFsdWUuX2lzX3NwZWNpYWwKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCAlciB0byBEZWNpbWFsIiAlIHZhbHVlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fZmxvYXQoY2xzLCBmKToKLSAgICAgICAgIiIiQ29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LgotCi0gICAgICAgIE5vdGUgdGhhdCBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuCi0gICAgICAgIFNpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgdGhlCi0gICAgICAgIHZhbHVlIGlzIHN0b3JlZCBhcyB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIHZhbHVlIHdoaWNoIGlzCi0gICAgICAgIDB4MS45OTk5OTk5OTk5OTlhcC00LiAgVGhlIGV4YWN0IGVxdWl2YWxlbnQgb2YgdGhlIHZhbHVlIGluIGRlY2ltYWwKLSAgICAgICAgaXMgMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1LgotCi0gICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQotICAgICAgICBEZWNpbWFsKCcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLSAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgtZmxvYXQoJ2luZicpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC0wLjApCi0gICAgICAgIERlY2ltYWwoJy0wJykKLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBpbnQpOiAgICAgICAgICAgICAgICAjIGhhbmRsZSBpbnRlZ2VyIGlucHV0cwotICAgICAgICAgICAgcmV0dXJuIGNscyhmKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0LiIpCi0gICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOgotICAgICAgICAgICAgcmV0dXJuIGNscyhyZXByKGYpKQotICAgICAgICBpZiBfbWF0aC5jb3B5c2lnbigxLjAsIGYpID09IDEuMDoKLSAgICAgICAgICAgIHNpZ24gPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzaWduID0gMQotICAgICAgICBuLCBkID0gYWJzKGYpLmFzX2ludGVnZXJfcmF0aW8oKQotICAgICAgICBrID0gZC5iaXRfbGVuZ3RoKCkgLSAxCi0gICAgICAgIHJlc3VsdCA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKG4qNSoqayksIC1rKQotICAgICAgICBpZiBjbHMgaXMgRGVjaW1hbDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBjbHMocmVzdWx0KQotCi0gICAgZGVmIF9pc25hbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KLQotICAgICAgICAwIGlmIGEgbnVtYmVyCi0gICAgICAgIDEgaWYgTmFOCi0gICAgICAgIDIgaWYgc05hTgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cAotICAgICAgICAgICAgaWYgZXhwID09ICduJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgZWxpZiBleHAgPT0gJ04nOgotICAgICAgICAgICAgICAgIHJldHVybiAyCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2lzaW5maW5pdHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIGlzIGluZmluaXRlCi0KLSAgICAgICAgMCBpZiBmaW5pdGUgb3Igbm90IGEgbnVtYmVyCi0gICAgICAgIDEgaWYgK0lORgotICAgICAgICAtMSBpZiAtSU5GCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2NoZWNrX25hbnMoc2VsZiwgb3RoZXI9Tm9uZSwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KLQotICAgICAgICBpZiBzZWxmLCBvdGhlciBhcmUgc05hTiwgc2lnbmFsCi0gICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBOYU4gcmV0dXJuIG5hbgotICAgICAgICByZXR1cm4gMAotCi0gICAgICAgIERvbmUgYmVmb3JlIG9wZXJhdGlvbnMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGZfaXNfbmFuID0gc2VsZi5faXNuYW4oKQotICAgICAgICBpZiBvdGhlciBpcyBOb25lOgotICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCi0KLSAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuOgotICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAgICAgaWYgc2VsZl9pc19uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAgICBpZiBvdGhlcl9pc19uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQotICAgICAgICAgICAgaWYgc2VsZl9pc19uYW46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeF9uYW4oY29udGV4dCkKLQotICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2NvbXBhcmVfY2hlY2tfbmFucyhzZWxmLCBvdGhlciwgY29udGV4dCk6Ci0gICAgICAgICIiIlZlcnNpb24gb2YgX2NoZWNrX25hbnMgdXNlZCBmb3IgdGhlIHNpZ25hbGluZyBjb21wYXJpc29ucwotICAgICAgICBjb21wYXJlX3NpZ25hbCwgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLgotCi0gICAgICAgIFNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBzZWxmIG9yIG90aGVyIGlzIGEgKHF1aWV0Ci0gICAgICAgIG9yIHNpZ25hbGluZykgTmFOLiAgU2lnbmFsaW5nIE5hTnMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcXVpZXQKLSAgICAgICAgTmFOcy4KLQotICAgICAgICBSZXR1cm4gMCBpZiBuZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4uCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfc25hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQotICAgICAgICAgICAgZWxpZiBzZWxmLmlzX3FuYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAgICBlbGlmIG90aGVyLmlzX3FuYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5vbnplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgTmFOcyBhbmQgaW5maW5pdGllcyBhcmUgY29uc2lkZXJlZCBub256ZXJvLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3NwZWNpYWwgb3Igc2VsZi5faW50ICE9ICcwJwotCi0gICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgotICAgICAgICAiIiJDb21wYXJlIHRoZSB0d28gbm9uLU5hTiBkZWNpbWFsIGluc3RhbmNlcyBzZWxmIGFuZCBvdGhlci4KLQotICAgICAgICBSZXR1cm5zIC0xIGlmIHNlbGYgPCBvdGhlciwgMCBpZiBzZWxmID09IG90aGVyIGFuZCAxCi0gICAgICAgIGlmIHNlbGYgPiBvdGhlci4gIFRoaXMgcm91dGluZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHNlbGZfaW5mID0gc2VsZi5faXNpbmZpbml0eSgpCi0gICAgICAgICAgICBvdGhlcl9pbmYgPSBvdGhlci5faXNpbmZpbml0eSgpCi0gICAgICAgICAgICBpZiBzZWxmX2luZiA9PSBvdGhlcl9pbmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgIGVsaWYgc2VsZl9pbmYgPCBvdGhlcl9pbmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgIyBjaGVjayBmb3IgemVyb3M7ICBEZWNpbWFsKCcwJykgPT0gRGVjaW1hbCgnLTAnKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gLSgoLTEpKipvdGhlci5fc2lnbikKLSAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KLQotICAgICAgICAjIElmIGRpZmZlcmVudCBzaWducywgbmVnIG9uZSBpcyBsZXNzCi0gICAgICAgIGlmIG90aGVyLl9zaWduIDwgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBpZiBzZWxmLl9zaWduIDwgb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgIHNlbGZfYWRqdXN0ZWQgPSBzZWxmLmFkanVzdGVkKCkKLSAgICAgICAgb3RoZXJfYWRqdXN0ZWQgPSBvdGhlci5hZGp1c3RlZCgpCi0gICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPT0gb3RoZXJfYWRqdXN0ZWQ6Ci0gICAgICAgICAgICBzZWxmX3BhZGRlZCA9IHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCkKLSAgICAgICAgICAgIG90aGVyX3BhZGRlZCA9IG90aGVyLl9pbnQgKyAnMCcqKG90aGVyLl9leHAgLSBzZWxmLl9leHApCi0gICAgICAgICAgICBpZiBzZWxmX3BhZGRlZCA9PSBvdGhlcl9wYWRkZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgIGVsaWYgc2VsZl9wYWRkZWQgPCBvdGhlcl9wYWRkZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0oLTEpKipzZWxmLl9zaWduCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAoLTEpKipzZWxmLl9zaWduCi0gICAgICAgIGVsaWYgc2VsZl9hZGp1c3RlZCA+IG90aGVyX2FkanVzdGVkOgotICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KLSAgICAgICAgZWxzZTogIyBzZWxmX2FkanVzdGVkIDwgb3RoZXJfYWRqdXN0ZWQKLSAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKnNlbGYuX3NpZ24pCi0KLSAgICAjIE5vdGU6IFRoZSBEZWNpbWFsIHN0YW5kYXJkIGRvZXNuJ3QgY292ZXIgcmljaCBjb21wYXJpc29ucyBmb3IKLSAgICAjIERlY2ltYWxzLiAgSW4gcGFydGljdWxhciwgdGhlIHNwZWNpZmljYXRpb24gaXMgc2lsZW50IG9uIHRoZQotICAgICMgc3ViamVjdCBvZiB3aGF0IHNob3VsZCBoYXBwZW4gZm9yIGEgY29tcGFyaXNvbiBpbnZvbHZpbmcgYSBOYU4uCi0gICAgIyBXZSB0YWtlIHRoZSBmb2xsb3dpbmcgYXBwcm9hY2g6Ci0gICAgIwotICAgICMgICA9PSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBGYWxzZQotICAgICMgICAhPSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBUcnVlCi0gICAgIyAgID09IG9yICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHNpZ25hbGluZyBOYU4gc2lnbmFsCi0gICAgIyAgICAgIEludmFsaWRPcGVyYXRpb24sIGFuZCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSBhcyBhYm92ZSBpZiB0aGUKLSAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KLSAgICAjICAgPCwgPiwgPD0gYW5kID49IGNvbXBhcmlzb25zIGludm9sdmluZyBhIChxdWlldCBvciBzaWduYWxpbmcpCi0gICAgIyAgICAgIE5hTiBzaWduYWwgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBpZiB0aGUKLSAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KLSAgICAjCi0gICAgIyBUaGlzIGJlaGF2aW9yIGlzIGRlc2lnbmVkIHRvIGNvbmZvcm0gYXMgY2xvc2VseSBhcyBwb3NzaWJsZSB0bwotICAgICMgdGhhdCBzcGVjaWZpZWQgYnkgSUVFRSA3NTQuCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1UcnVlKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBpZiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1UcnVlKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBpZiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKLQotCi0gICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPCAwCi0KLSAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCi0KLSAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+IDAKLQotICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID49IDAKLQotICAgIGRlZiBjb21wYXJlKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlIHNlbGYgdG8gb3RoZXIuICBSZXR1cm4gYSBkZWNpbWFsIHZhbHVlOgotCi0gICAgICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJykKLSAgICAgICAgYSA8IGIgICAgICAgICAgID09PiBEZWNpbWFsKCctMScpCi0gICAgICAgIGEgPT0gYiAgICAgICAgICA9PT4gRGVjaW1hbCgnMCcpCi0gICAgICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgIyBDb21wYXJlKE5hTiwgTmFOKSA9IE5hTgotICAgICAgICBpZiAoc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlciBhbmQgb3RoZXIuX2lzX3NwZWNpYWwpOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZi5fY21wKG90aGVyKSkKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgIiIieC5fX2hhc2hfXygpIDw9PT4gaGFzaCh4KSIiIgotCi0gICAgICAgICMgSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhhc2ggb2YgYSBEZWNpbWFsIGluc3RhbmNlCi0gICAgICAgICMgYWdyZWVzIHdpdGggdGhlIGhhc2ggb2YgYSBudW1lcmljYWxseSBlcXVhbCBpbnRlZ2VyLCBmbG9hdAotICAgICAgICAjIG9yIEZyYWN0aW9uLCB3ZSBmb2xsb3cgdGhlIHJ1bGVzIGZvciBudW1lcmljIGhhc2hlcyBvdXRsaW5lZAotICAgICAgICAjIGluIHRoZSBkb2N1bWVudGF0aW9uLiAgKFNlZSBsaWJyYXJ5IGRvY3MsICdCdWlsdC1pbiBUeXBlcycpLgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDYW5ub3QgaGFzaCBhIHNpZ25hbGluZyBOYU4gdmFsdWUuJykKLSAgICAgICAgICAgIGVsaWYgc2VsZi5pc19uYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5SEFTSF9OQU4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1fUHlIQVNIX0lORgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX0lORgotCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgZXhwX2hhc2ggPSBwb3coMTAsIHNlbGYuX2V4cCwgX1B5SEFTSF9NT0RVTFVTKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXhwX2hhc2ggPSBwb3coX1B5SEFTSF8xMElOViwgLXNlbGYuX2V4cCwgX1B5SEFTSF9NT0RVTFVTKQotICAgICAgICBoYXNoXyA9IGludChzZWxmLl9pbnQpICogZXhwX2hhc2ggJSBfUHlIQVNIX01PRFVMVVMKLSAgICAgICAgYW5zID0gaGFzaF8gaWYgc2VsZiA+PSAwIGVsc2UgLWhhc2hfCi0gICAgICAgIHJldHVybiAtMiBpZiBhbnMgPT0gLTEgZWxzZSBhbnMKLQotICAgIGRlZiBhc190dXBsZShzZWxmKToKLSAgICAgICAgIiIiUmVwcmVzZW50cyB0aGUgbnVtYmVyIGFzIGEgdHJpcGxlIHR1cGxlLgotCi0gICAgICAgIFRvIHNob3cgdGhlIGludGVybmFscyBleGFjdGx5IGFzIHRoZXkgYXJlLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIERlY2ltYWxUdXBsZShzZWxmLl9zaWduLCB0dXBsZShtYXAoaW50LCBzZWxmLl9pbnQpKSwgc2VsZi5fZXhwKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYW4gaW5zdGFuY2Ugb2YgRGVjaW1hbC4iIiIKLSAgICAgICAgIyBJbnZhcmlhbnQ6ICBldmFsKHJlcHIoZCkpID09IGQKLSAgICAgICAgcmV0dXJuICJEZWNpbWFsKCclcycpIiAlIHN0cihzZWxmKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZiwgZW5nPUZhbHNlLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4KLQotICAgICAgICBDYXB0dXJlcyBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uLgotICAgICAgICAiIiIKLQotICAgICAgICBzaWduID0gWycnLCAnLSddW3NlbGYuX3NpZ25dCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ0luZmluaXR5JwotICAgICAgICAgICAgZWxpZiBzZWxmLl9leHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ05hTicgKyBzZWxmLl9pbnQKLSAgICAgICAgICAgIGVsc2U6ICMgc2VsZi5fZXhwID09ICdOJwotICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ3NOYU4nICsgc2VsZi5faW50Ci0KLSAgICAgICAgIyBudW1iZXIgb2YgZGlnaXRzIG9mIHNlbGYuX2ludCB0byBsZWZ0IG9mIGRlY2ltYWwgcG9pbnQKLSAgICAgICAgbGVmdGRpZ2l0cyA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpCi0KLSAgICAgICAgIyBkb3RwbGFjZSBpcyBudW1iZXIgb2YgZGlnaXRzIG9mIHNlbGYuX2ludCB0byB0aGUgbGVmdCBvZiB0aGUKLSAgICAgICAgIyBkZWNpbWFsIHBvaW50IGluIHRoZSBtYW50aXNzYSBvZiB0aGUgb3V0cHV0IHN0cmluZyAodGhhdCBpcywKLSAgICAgICAgIyBhZnRlciBhZGp1c3RpbmcgdGhlIGV4cG9uZW50KQotICAgICAgICBpZiBzZWxmLl9leHAgPD0gMCBhbmQgbGVmdGRpZ2l0cyA+IC02OgotICAgICAgICAgICAgIyBubyBleHBvbmVudCByZXF1aXJlZAotICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCi0gICAgICAgIGVsaWYgbm90IGVuZzoKLSAgICAgICAgICAgICMgdXN1YWwgc2NpZW50aWZpYyBub3RhdGlvbjogMSBkaWdpdCBvbiBsZWZ0IG9mIHRoZSBwb2ludAotICAgICAgICAgICAgZG90cGxhY2UgPSAxCi0gICAgICAgIGVsaWYgc2VsZi5faW50ID09ICcwJzoKLSAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIHplcm8KLSAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgKyAxKSAlIDMgLSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGVuZ2luZWVyaW5nIG5vdGF0aW9uLCBub256ZXJvCi0gICAgICAgICAgICBkb3RwbGFjZSA9IChsZWZ0ZGlnaXRzIC0gMSkgJSAzICsgMQotCi0gICAgICAgIGlmIGRvdHBsYWNlIDw9IDA6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gJzAnCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcuJyArICcwJyooLWRvdHBsYWNlKSArIHNlbGYuX2ludAotICAgICAgICBlbGlmIGRvdHBsYWNlID49IGxlbihzZWxmLl9pbnQpOgotICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludCsnMCcqKGRvdHBsYWNlLWxlbihzZWxmLl9pbnQpKQotICAgICAgICAgICAgZnJhY3BhcnQgPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludFs6ZG90cGxhY2VdCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcuJyArIHNlbGYuX2ludFtkb3RwbGFjZTpdCi0gICAgICAgIGlmIGxlZnRkaWdpdHMgPT0gZG90cGxhY2U6Ci0gICAgICAgICAgICBleHAgPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgICAgIGV4cCA9IFsnZScsICdFJ11bY29udGV4dC5jYXBpdGFsc10gKyAiJStkIiAlIChsZWZ0ZGlnaXRzLWRvdHBsYWNlKQotCi0gICAgICAgIHJldHVybiBzaWduICsgaW50cGFydCArIGZyYWNwYXJ0ICsgZXhwCi0KLSAgICBkZWYgdG9fZW5nX3N0cmluZyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb252ZXJ0IHRvIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLgotCi0gICAgICAgIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudCB3aGljaCBpcyBhIG11bHRpcGxlIG9mIDMsIHNvIHRoZXJlCi0gICAgICAgIGFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLgotCi0gICAgICAgIFNhbWUgcnVsZXMgZm9yIHdoZW4gaW4gZXhwb25lbnRpYWwgYW5kIHdoZW4gYXMgYSB2YWx1ZSBhcyBpbiBfX3N0cl9fLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19zdHJfXyhlbmc9VHJ1ZSwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fbmVnX18oc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzd2l0Y2hlZC4KLQotICAgICAgICBSb3VuZHMsIGlmIGl0IGhhcyByZWFzb24uCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBub3Qgc2VsZiBhbmQgY29udGV4dC5yb3VuZGluZyAhPSBST1VORF9GTE9PUjoKLSAgICAgICAgICAgICMgLURlY2ltYWwoJzAnKSBpcyBEZWNpbWFsKCcwJyksIG5vdCBEZWNpbWFsKCctMCcpLCBleGNlcHQKLSAgICAgICAgICAgICMgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KLSAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X25lZ2F0ZSgpCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX19wb3NfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSwgdW5sZXNzIGl0IGlzIGEgc05hTi4KLQotICAgICAgICBSb3VuZHMgdGhlIG51bWJlciAoaWYgbW9yZSB0aGVuIHByZWNpc2lvbiBkaWdpdHMpCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBub3Qgc2VsZiBhbmQgY29udGV4dC5yb3VuZGluZyAhPSBST1VORF9GTE9PUjoKLSAgICAgICAgICAgICMgKyAoLTApID0gMCwgZXhjZXB0IGluIFJPVU5EX0ZMT09SIHJvdW5kaW5nIG1vZGUuCi0gICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfYWJzKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfX2Fic19fKHNlbGYsIHJvdW5kPVRydWUsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHNlbGYuCi0KLSAgICAgICAgSWYgdGhlIGtleXdvcmQgYXJndW1lbnQgJ3JvdW5kJyBpcyBmYWxzZSwgZG8gbm90IHJvdW5kLiAgVGhlCi0gICAgICAgIGV4cHJlc3Npb24gc2VsZi5fX2Fic19fKHJvdW5kPUZhbHNlKSBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgIHNlbGYuY29weV9hYnMoKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCByb3VuZDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcHlfYWJzKCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9fbmVnX18oY29udGV4dD1jb250ZXh0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fX3Bvc19fKGNvbnRleHQ9Y29udGV4dCkKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBzZWxmICsgb3RoZXIuCi0KLSAgICAgICAgLUlORiArIElORiAob3IgdGhlIHJldmVyc2UpIGNhdXNlIEludmFsaWRPcGVyYXRpb24gZXJyb3JzLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgIyBJZiBib3RoIElORiwgc2FtZSBzaWduID0+IHNhbWUgYXMgYm90aCwgb3Bwb3NpdGUgPT4gZXJyb3IuCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5fc2lnbiAhPSBvdGhlci5fc2lnbiBhbmQgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICctSU5GICsgSU5GJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChvdGhlcikgICMgQ2FuJ3QgYm90aCBiZSBpbmZpbml0eSBoZXJlCi0KLSAgICAgICAgZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKLSAgICAgICAgbmVnYXRpdmV6ZXJvID0gMAotICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SIGFuZCBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduOgotICAgICAgICAgICAgIyBJZiB0aGUgYW5zd2VyIGlzIDAsIHRoZSBzaWduIHNob3VsZCBiZSBuZWdhdGl2ZSwgaW4gdGhpcyBjYXNlLgotICAgICAgICAgICAgbmVnYXRpdmV6ZXJvID0gMQotCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBzaWduID0gbWluKHNlbGYuX3NpZ24sIG90aGVyLl9zaWduKQotICAgICAgICAgICAgaWYgbmVnYXRpdmV6ZXJvOgotICAgICAgICAgICAgICAgIHNpZ24gPSAxCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgZXhwKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICBleHAgPSBtYXgoZXhwLCBvdGhlci5fZXhwIC0gY29udGV4dC5wcmVjLTEpCi0gICAgICAgICAgICBhbnMgPSBvdGhlci5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBleHAgPSBtYXgoZXhwLCBzZWxmLl9leHAgLSBjb250ZXh0LnByZWMtMSkKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLCBjb250ZXh0LnJvdW5kaW5nKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgb3AxLCBvcDIgPSBfbm9ybWFsaXplKG9wMSwgb3AyLCBjb250ZXh0LnByZWMpCi0KLSAgICAgICAgcmVzdWx0ID0gX1dvcmtSZXAoKQotICAgICAgICBpZiBvcDEuc2lnbiAhPSBvcDIuc2lnbjoKLSAgICAgICAgICAgICMgRXF1YWwgYW5kIG9wcG9zaXRlCi0gICAgICAgICAgICBpZiBvcDEuaW50ID09IG9wMi5pbnQ6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShuZWdhdGl2ZXplcm8sICcwJywgZXhwKQotICAgICAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICAgICAgaWYgb3AxLmludCA8IG9wMi5pbnQ6Ci0gICAgICAgICAgICAgICAgb3AxLCBvcDIgPSBvcDIsIG9wMQotICAgICAgICAgICAgICAgICMgT0ssIG5vdyBhYnMob3AxKSA+IGFicyhvcDIpCi0gICAgICAgICAgICBpZiBvcDEuc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQotICAgICAgICAgICAgICAgIG9wMS5zaWduLCBvcDIuc2lnbiA9IG9wMi5zaWduLCBvcDEuc2lnbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKLSAgICAgICAgICAgICAgICAjIFNvIHdlIGtub3cgdGhlIHNpZ24sIGFuZCBvcDEgPiAwLgotICAgICAgICBlbGlmIG9wMS5zaWduID09IDE6Ci0gICAgICAgICAgICByZXN1bHQuc2lnbiA9IDEKLSAgICAgICAgICAgIG9wMS5zaWduLCBvcDIuc2lnbiA9ICgwLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAwCi0gICAgICAgICMgTm93LCBvcDEgPiBhYnMob3AyKSA+IDAKLQotICAgICAgICBpZiBvcDIuc2lnbiA9PSAwOgotICAgICAgICAgICAgcmVzdWx0LmludCA9IG9wMS5pbnQgKyBvcDIuaW50Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCAtIG9wMi5pbnQKLQotICAgICAgICByZXN1bHQuZXhwID0gb3AxLmV4cAotICAgICAgICBhbnMgPSBEZWNpbWFsKHJlc3VsdCkKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgX19yYWRkX18gPSBfX2FkZF9fCi0KLSAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHNlbGYgLSBvdGhlciIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgc2VsZiAtIG90aGVyIGlzIGNvbXB1dGVkIGFzIHNlbGYgKyBvdGhlci5jb3B5X25lZ2F0ZSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9fYWRkX18ob3RoZXIuY29weV9uZWdhdGUoKSwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fcnN1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gb3RoZXIgLSBzZWxmIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgcmV0dXJuIG90aGVyLl9fc3ViX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fbXVsX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzZWxmICogb3RoZXIuCi0KLSAgICAgICAgKCstKSBJTkYgKiAwIChvciBpdHMgcmV2ZXJzZSkgcmFpc2UgSW52YWxpZE9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIHJlc3VsdHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORiAqIDAnKQotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0c2lnbl0KLQotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcwICogKCstKUlORicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQotCi0gICAgICAgIHJlc3VsdGV4cCA9IHNlbGYuX2V4cCArIG90aGVyLl9leHAKLQotICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgbXVsdGlwbHlpbmcgYnkgemVybwotICAgICAgICBpZiBub3Qgc2VsZiBvciBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sICcwJywgcmVzdWx0ZXhwKQotICAgICAgICAgICAgIyBGaXhpbmcgaW4gY2FzZSB0aGUgZXhwb25lbnQgaXMgb3V0IG9mIGJvdW5kcwotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgbXVsdGlwbHlpbmcgYnkgcG93ZXIgb2YgMTAKLSAgICAgICAgaWYgc2VsZi5faW50ID09ICcxJzoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgb3RoZXIuX2ludCwgcmVzdWx0ZXhwKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgaWYgb3RoZXIuX2ludCA9PSAnMSc6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIHNlbGYuX2ludCwgcmVzdWx0ZXhwKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLQotICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIHN0cihvcDEuaW50ICogb3AyLmludCksIHJlc3VsdGV4cCkKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICByZXR1cm4gYW5zCi0gICAgX19ybXVsX18gPSBfX211bF9fCi0KLSAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzZWxmIC8gb3RoZXIuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSBhbmQgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJygrLSlJTkYvKCstKUlORicpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0KLSAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCwgJ0RpdmlzaW9uIGJ5IGluZmluaXR5JykKLSAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnMCcsIGNvbnRleHQuRXRpbnkoKSkKLQotICAgICAgICAjIFNwZWNpYWwgY2FzZXMgZm9yIHplcm9lcwotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8gMCcpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8gMCcsIHNpZ24pCi0KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwCi0gICAgICAgICAgICBjb2VmZiA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT0ssIHNvIG5laXRoZXIgPSAwLCBJTkYgb3IgTmFOCi0gICAgICAgICAgICBzaGlmdCA9IGxlbihvdGhlci5faW50KSAtIGxlbihzZWxmLl9pbnQpICsgY29udGV4dC5wcmVjICsgMQotICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCAtIHNoaWZ0Ci0gICAgICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgICAgICBpZiBzaGlmdCA+PSAwOgotICAgICAgICAgICAgICAgIGNvZWZmLCByZW1haW5kZXIgPSBkaXZtb2Qob3AxLmludCAqIDEwKipzaGlmdCwgb3AyLmludCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50ICogMTAqKi1zaGlmdCkKLSAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAjIHJlc3VsdCBpcyBub3QgZXhhY3Q7IGFkanVzdCB0byBlbnN1cmUgY29ycmVjdCByb3VuZGluZwotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgNSA9PSAwOgotICAgICAgICAgICAgICAgICAgICBjb2VmZiArPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIGV4YWN0OyBnZXQgYXMgY2xvc2UgdG8gaWRlYWwgZXhwb25lbnQgYXMgcG9zc2libGUKLSAgICAgICAgICAgICAgICBpZGVhbF9leHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwCi0gICAgICAgICAgICAgICAgd2hpbGUgZXhwIDwgaWRlYWxfZXhwIGFuZCBjb2VmZiAlIDEwID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvZWZmIC8vPSAxMAotICAgICAgICAgICAgICAgICAgICBleHAgKz0gMQotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKGNvZWZmKSwgZXhwKQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfZGl2aWRlKHNlbGYsIG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgIiIiUmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpLCB0byBjb250ZXh0LnByZWMgcHJlY2lzaW9uLgotCi0gICAgICAgIEFzc3VtZXMgdGhhdCBuZWl0aGVyIHNlbGYgbm9yIG90aGVyIGlzIGEgTmFOLCB0aGF0IHNlbGYgaXMgbm90Ci0gICAgICAgIGluZmluaXRlIGFuZCB0aGF0IG90aGVyIGlzIG5vbnplcm8uCi0gICAgICAgICIiIgotICAgICAgICBzaWduID0gc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduCi0gICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZGVhbF9leHAgPSBzZWxmLl9leHAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlkZWFsX2V4cCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCi0KLSAgICAgICAgZXhwZGlmZiA9IHNlbGYuYWRqdXN0ZWQoKSAtIG90aGVyLmFkanVzdGVkKCkKLSAgICAgICAgaWYgbm90IHNlbGYgb3Igb3RoZXIuX2lzaW5maW5pdHkoKSBvciBleHBkaWZmIDw9IC0yOgotICAgICAgICAgICAgcmV0dXJuIChfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgMCksCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2NhbGUoaWRlYWxfZXhwLCBjb250ZXh0LnJvdW5kaW5nKSkKLSAgICAgICAgaWYgZXhwZGlmZiA8PSBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgICAgICBpZiBvcDEuZXhwID49IG9wMi5leHA6Ci0gICAgICAgICAgICAgICAgb3AxLmludCAqPSAxMCoqKG9wMS5leHAgLSBvcDIuZXhwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvcDIuaW50ICo9IDEwKioob3AyLmV4cCAtIG9wMS5leHApCi0gICAgICAgICAgICBxLCByID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQpCi0gICAgICAgICAgICBpZiBxIDwgMTAqKmNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHEpLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc3RyKHIpLCBpZGVhbF9leHApKQotCi0gICAgICAgICMgSGVyZSB0aGUgcXVvdGllbnQgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGFibGUKLSAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVvdGllbnQgdG9vIGxhcmdlIGluIC8vLCAlIG9yIGRpdm1vZCcpCi0gICAgICAgIHJldHVybiBhbnMsIGFucwotCi0gICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX3RydWVkaXZfXy4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgcmV0dXJuIG90aGVyLl9fdHJ1ZWRpdl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gKGFucywgYW5zKQotCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnZGl2bW9kKElORiwgSU5GKScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFucywgYW5zCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAoX1NpZ25lZEluZmluaXR5W3NpZ25dLAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAlIHgnKSkKLQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJ2Rpdm1vZCgwLCAwKScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFucywgYW5zCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAoY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8vIDAnLCBzaWduKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICd4ICUgMCcpKQotCi0gICAgICAgIHF1b3RpZW50LCByZW1haW5kZXIgPSBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIHJlbWFpbmRlciA9IHJlbWFpbmRlci5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiBxdW90aWVudCwgcmVtYWluZGVyCi0KLSAgICBkZWYgX19yZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19kaXZtb2RfXy4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgcmV0dXJuIG90aGVyLl9fZGl2bW9kX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fbW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBzZWxmICUgb3RoZXIKLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAlIHgnKQotICAgICAgICBlbGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICd4ICUgMCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgJSAwJykKLQotICAgICAgICByZW1haW5kZXIgPSBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzFdCi0gICAgICAgIHJlbWFpbmRlciA9IHJlbWFpbmRlci5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiByZW1haW5kZXIKLQotICAgIGRlZiBfX3Jtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX21vZF9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX19tb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgcmVtYWluZGVyX25lYXIoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZW1haW5kZXIgbmVhcmVzdCB0byAwLSAgYWJzKHJlbWFpbmRlci1uZWFyKSA8PSBvdGhlci8yCi0gICAgICAgICIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIHNlbGYgPT0gKy8taW5maW5pdHkgLT4gSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoaW5maW5pdHksIHgpJykKLQotICAgICAgICAjIG90aGVyID09IDAgLT4gZWl0aGVyIEludmFsaWRPcGVyYXRpb24gb3IgRGl2aXNpb25VbmRlZmluZWQKLSAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgaWYgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmRlcl9uZWFyKHgsIDApJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoMCwgMCknKQotCi0gICAgICAgICMgb3RoZXIgPSArLy1pbmZpbml0eSAtPiByZW1haW5kZXIgPSBzZWxmCi0gICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYpCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICAjIHNlbGYgPSAwIC0+IHJlbWFpbmRlciA9IHNlbGYsIHdpdGggaWRlYWwgZXhwb25lbnQKLSAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBpZGVhbF9leHBvbmVudCkKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgICMgY2F0Y2ggbW9zdCBjYXNlcyBvZiBsYXJnZSBvciBzbWFsbCBxdW90aWVudAotICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQotICAgICAgICBpZiBleHBkaWZmID49IGNvbnRleHQucHJlYyArIDE6Ci0gICAgICAgICAgICAjIGV4cGRpZmYgPj0gcHJlYysxID0+IGFicyhzZWxmL290aGVyKSA+IDEwKipwcmVjCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQotICAgICAgICBpZiBleHBkaWZmIDw9IC0yOgotICAgICAgICAgICAgIyBleHBkaWZmIDw9IC0yID0+IGFicyhzZWxmL290aGVyKSA8IDAuMQotICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShpZGVhbF9leHBvbmVudCwgY29udGV4dC5yb3VuZGluZykKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgICMgYWRqdXN0IGJvdGggYXJndW1lbnRzIHRvIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQsIHRoZW4gZGl2aWRlCi0gICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQotICAgICAgICBpZiBvcDEuZXhwID49IG9wMi5leHA6Ci0gICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcDIuaW50ICo9IDEwKioob3AyLmV4cCAtIG9wMS5leHApCi0gICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKLSAgICAgICAgIyByZW1haW5kZXIgaXMgcioxMCoqaWRlYWxfZXhwb25lbnQ7IG90aGVyIGlzICsvLW9wMi5pbnQgKgotICAgICAgICAjIDEwKippZGVhbF9leHBvbmVudC4gICBBcHBseSBjb3JyZWN0aW9uIHRvIGVuc3VyZSB0aGF0Ci0gICAgICAgICMgYWJzKHJlbWFpbmRlcikgPD0gYWJzKG90aGVyKS8yCi0gICAgICAgIGlmIDIqciArIChxJjEpID4gb3AyLmludDoKLSAgICAgICAgICAgIHIgLT0gb3AyLmludAotICAgICAgICAgICAgcSArPSAxCi0KLSAgICAgICAgaWYgcSA+PSAxMCoqY29udGV4dC5wcmVjOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uSW1wb3NzaWJsZSkKLQotICAgICAgICAjIHJlc3VsdCBoYXMgc2FtZSBzaWduIGFzIHNlbGYgdW5sZXNzIHIgaXMgbmVnYXRpdmUKLSAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KLSAgICAgICAgaWYgciA8IDA6Ci0gICAgICAgICAgICBzaWduID0gMS1zaWduCi0gICAgICAgICAgICByID0gLXIKLQotICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihyKSwgaWRlYWxfZXhwb25lbnQpCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIic2VsZiAvLyBvdGhlciIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAvLyBJTkYnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NlbGYuX3NpZ24gXiBvdGhlci5fc2lnbl0KLQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAvLyAwJykKLQotICAgICAgICByZXR1cm4gc2VsZi5fZGl2aWRlKG90aGVyLCBjb250ZXh0KVswXQotCi0gICAgZGVmIF9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19mbG9vcmRpdl9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX19mbG9vcmRpdl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6Ci0gICAgICAgICIiIkZsb2F0IHJlcHJlc2VudGF0aW9uLiIiIgotICAgICAgICBpZiBzZWxmLl9pc25hbigpOgotICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgc2lnbmFsaW5nIE5hTiB0byBmbG9hdCIpCi0gICAgICAgICAgICBzID0gIi1uYW4iIGlmIHNlbGYuX3NpZ24gZWxzZSAibmFuIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcyA9IHN0cihzZWxmKQotICAgICAgICByZXR1cm4gZmxvYXQocykKLQotICAgIGRlZiBfX2ludF9fKHNlbGYpOgotICAgICAgICAiIiJDb252ZXJ0cyBzZWxmIHRvIGFuIGludCwgdHJ1bmNhdGluZyBpZiBuZWNlc3NhcnkuIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIikKLSAgICAgICAgICAgIGVsaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoIkNhbm5vdCBjb252ZXJ0IGluZmluaXR5IHRvIGludGVnZXIiKQotICAgICAgICBzID0gKC0xKSoqc2VsZi5fc2lnbgotICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBzKmludChzZWxmLl9pbnQpKjEwKipzZWxmLl9leHAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzKmludChzZWxmLl9pbnRbOnNlbGYuX2V4cF0gb3IgJzAnKQotCi0gICAgX190cnVuY19fID0gX19pbnRfXwotCi0gICAgZGVmIHJlYWwoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0gICAgcmVhbCA9IHByb3BlcnR5KHJlYWwpCi0KLSAgICBkZWYgaW1hZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoMCkKLSAgICBpbWFnID0gcHJvcGVydHkoaW1hZykKLQotICAgIGRlZiBjb25qdWdhdGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19jb21wbGV4X18oc2VsZik6Ci0gICAgICAgIHJldHVybiBjb21wbGV4KGZsb2F0KHNlbGYpKQotCi0gICAgZGVmIF9maXhfbmFuKHNlbGYsIGNvbnRleHQpOgotICAgICAgICAiIiJEZWNhcGl0YXRlIHRoZSBwYXlsb2FkIG9mIGEgTmFOIHRvIGZpdCB0aGUgY29udGV4dCIiIgotICAgICAgICBwYXlsb2FkID0gc2VsZi5faW50Ci0KLSAgICAgICAgIyBtYXhpbXVtIGxlbmd0aCBvZiBwYXlsb2FkIGlzIHByZWNpc2lvbiBpZiBjbGFtcD0wLAotICAgICAgICAjIHByZWNpc2lvbi0xIGlmIGNsYW1wPTEuCi0gICAgICAgIG1heF9wYXlsb2FkX2xlbiA9IGNvbnRleHQucHJlYyAtIGNvbnRleHQuY2xhbXAKLSAgICAgICAgaWYgbGVuKHBheWxvYWQpID4gbWF4X3BheWxvYWRfbGVuOgotICAgICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWRbbGVuKHBheWxvYWQpLW1heF9wYXlsb2FkX2xlbjpdLmxzdHJpcCgnMCcpCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBwYXlsb2FkLCBzZWxmLl9leHAsIFRydWUpCi0gICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICBkZWYgX2ZpeChzZWxmLCBjb250ZXh0KToKLSAgICAgICAgIiIiUm91bmQgaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgc2VsZiB3aXRoaW4gcHJlYyBwcmVjaXNpb24uCi0KLSAgICAgICAgUm91bmRzIGFuZCBmaXhlcyB0aGUgZXhwb25lbnQuICBEb2VzIG5vdCByYWlzZSBvbiBhIHNOYU4uCi0KLSAgICAgICAgQXJndW1lbnRzOgotICAgICAgICBzZWxmIC0gRGVjaW1hbCBpbnN0YW5jZQotICAgICAgICBjb250ZXh0IC0gY29udGV4dCB1c2VkLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5faXNuYW4oKToKLSAgICAgICAgICAgICAgICAjIGRlY2FwaXRhdGUgcGF5bG9hZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIHNlbGYgaXMgKy8tSW5maW5pdHk7IHJldHVybiB1bmFsdGVyZWQKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgaWYgc2VsZiBpcyB6ZXJvIHRoZW4gZXhwb25lbnQgc2hvdWxkIGJlIGJldHdlZW4gRXRpbnkgYW5kCi0gICAgICAgICMgRW1heCBpZiBjbGFtcD09MCwgYW5kIGJldHdlZW4gRXRpbnkgYW5kIEV0b3AgaWYgY2xhbXA9PTEuCi0gICAgICAgIEV0aW55ID0gY29udGV4dC5FdGlueSgpCi0gICAgICAgIEV0b3AgPSBjb250ZXh0LkV0b3AoKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGV4cF9tYXggPSBbY29udGV4dC5FbWF4LCBFdG9wXVtjb250ZXh0LmNsYW1wXQotICAgICAgICAgICAgbmV3X2V4cCA9IG1pbihtYXgoc2VsZi5fZXhwLCBFdGlueSksIGV4cF9tYXgpCi0gICAgICAgICAgICBpZiBuZXdfZXhwICE9IHNlbGYuX2V4cDoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQotICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgbmV3X2V4cCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIGV4cF9taW4gaXMgdGhlIHNtYWxsZXN0IGFsbG93YWJsZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0LAotICAgICAgICAjIGVxdWFsIHRvIG1heChzZWxmLmFkanVzdGVkKCktY29udGV4dC5wcmVjKzEsIEV0aW55KQotICAgICAgICBleHBfbWluID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBjb250ZXh0LnByZWMKLSAgICAgICAgaWYgZXhwX21pbiA+IEV0b3A6Ci0gICAgICAgICAgICAjIG92ZXJmbG93OiBleHBfbWluID4gRXRvcCBpZmYgc2VsZi5hZGp1c3RlZCgpID4gRW1heAotICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4Jywgc2VsZi5fc2lnbikKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIHNlbGZfaXNfc3Vibm9ybWFsID0gZXhwX21pbiA8IEV0aW55Ci0gICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgotICAgICAgICAgICAgZXhwX21pbiA9IEV0aW55Ci0KLSAgICAgICAgIyByb3VuZCBpZiBzZWxmIGhhcyB0b28gbWFueSBkaWdpdHMKLSAgICAgICAgaWYgc2VsZi5fZXhwIDwgZXhwX21pbjoKLSAgICAgICAgICAgIGRpZ2l0cyA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gZXhwX21pbgotICAgICAgICAgICAgaWYgZGlnaXRzIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMScsIGV4cF9taW4tMSkKLSAgICAgICAgICAgICAgICBkaWdpdHMgPSAwCi0gICAgICAgICAgICByb3VuZGluZ19tZXRob2QgPSBzZWxmLl9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uW2NvbnRleHQucm91bmRpbmddCi0gICAgICAgICAgICBjaGFuZ2VkID0gcm91bmRpbmdfbWV0aG9kKHNlbGYsIGRpZ2l0cykKLSAgICAgICAgICAgIGNvZWZmID0gc2VsZi5faW50WzpkaWdpdHNdIG9yICcwJwotICAgICAgICAgICAgaWYgY2hhbmdlZCA+IDA6Ci0gICAgICAgICAgICAgICAgY29lZmYgPSBzdHIoaW50KGNvZWZmKSsxKQotICAgICAgICAgICAgICAgIGlmIGxlbihjb2VmZikgPiBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICAgICAgICAgIGNvZWZmID0gY29lZmZbOi0xXQotICAgICAgICAgICAgICAgICAgICBleHBfbWluICs9IDEKLQotICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoZSByb3VuZGluZyBwdXNoZWQgdGhlIGV4cG9uZW50IG91dCBvZiByYW5nZQotICAgICAgICAgICAgaWYgZXhwX21pbiA+IEV0b3A6Ci0gICAgICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4Jywgc2VsZi5fc2lnbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBjb2VmZiwgZXhwX21pbikKLQotICAgICAgICAgICAgIyByYWlzZSB0aGUgYXBwcm9wcmlhdGUgc2lnbmFscywgdGFraW5nIGNhcmUgdG8gcmVzcGVjdAotICAgICAgICAgICAgIyB0aGUgcHJlY2VkZW5jZSBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24KLSAgICAgICAgICAgIGlmIGNoYW5nZWQgYW5kIHNlbGZfaXNfc3Vibm9ybWFsOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKLSAgICAgICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKLSAgICAgICAgICAgIGlmIGNoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgICAgICBpZiBub3QgYW5zOgotICAgICAgICAgICAgICAgICMgcmFpc2UgQ2xhbXBlZCBvbiB1bmRlcmZsb3cgdG8gMAotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCi0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCi0KLSAgICAgICAgIyBmb2xkIGRvd24gaWYgY2xhbXAgPT0gMSBhbmQgc2VsZiBoYXMgdG9vIGZldyBkaWdpdHMKLSAgICAgICAgaWYgY29udGV4dC5jbGFtcCA9PSAxIGFuZCBzZWxmLl9leHAgPiBFdG9wOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKLSAgICAgICAgICAgIHNlbGZfcGFkZGVkID0gc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBFdG9wKQotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZl9wYWRkZWQsIEV0b3ApCi0KLSAgICAgICAgIyBoZXJlIHNlbGYgd2FzIHJlcHJlc2VudGFibGUgdG8gYmVnaW4gd2l0aDsgcmV0dXJuIHVuY2hhbmdlZAotICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgIyBmb3IgZWFjaCBvZiB0aGUgcm91bmRpbmcgZnVuY3Rpb25zIGJlbG93OgotICAgICMgICBzZWxmIGlzIGEgZmluaXRlLCBub256ZXJvIERlY2ltYWwKLSAgICAjICAgcHJlYyBpcyBhbiBpbnRlZ2VyIHNhdGlzZnlpbmcgMCA8PSBwcmVjIDwgbGVuKHNlbGYuX2ludCkKLSAgICAjCi0gICAgIyBlYWNoIGZ1bmN0aW9uIHJldHVybnMgZWl0aGVyIC0xLCAwLCBvciAxLCBhcyBmb2xsb3dzOgotICAgICMgICAxIGluZGljYXRlcyB0aGF0IHNlbGYgc2hvdWxkIGJlIHJvdW5kZWQgdXAgKGF3YXkgZnJvbSB6ZXJvKQotICAgICMgICAwIGluZGljYXRlcyB0aGF0IHNlbGYgc2hvdWxkIGJlIHRydW5jYXRlZCwgYW5kIHRoYXQgYWxsIHRoZQotICAgICMgICAgIGRpZ2l0cyB0byBiZSB0cnVuY2F0ZWQgYXJlIHplcm9zIChzbyB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkKQotICAgICMgIC0xIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBub256ZXJvIGRpZ2l0cyB0byBiZSB0cnVuY2F0ZWQKLQotICAgIGRlZiBfcm91bmRfZG93bihzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiQWxzbyBrbm93biBhcyByb3VuZC10b3dhcmRzLTAsIHRydW5jYXRlLiIiIgotICAgICAgICBpZiBfYWxsX3plcm9zKHNlbGYuX2ludCwgcHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICBkZWYgX3JvdW5kX3VwKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgYXdheSBmcm9tIDAuIiIiCi0gICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQotCi0gICAgZGVmIF9yb3VuZF9oYWxmX3VwKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgNSB1cCAoYXdheSBmcm9tIDApIiIiCi0gICAgICAgIGlmIHNlbGYuX2ludFtwcmVjXSBpbiAnNTY3ODknOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxpZiBfYWxsX3plcm9zKHNlbGYuX2ludCwgcHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICBkZWYgX3JvdW5kX2hhbGZfZG93bihzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiUm91bmQgNSBkb3duIiIiCi0gICAgICAgIGlmIF9leGFjdF9oYWxmKHNlbGYuX2ludCwgcHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2hhbGZfZXZlbihzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiUm91bmQgNSB0byBldmVuLCByZXN0IHRvIG5lYXJlc3QuIiIiCi0gICAgICAgIGlmIF9leGFjdF9oYWxmKHNlbGYuX2ludCwgcHJlYykgYW5kIFwKLSAgICAgICAgICAgICAgICAocHJlYyA9PSAwIG9yIHNlbGYuX2ludFtwcmVjLTFdIGluICcwMjQ2OCcpOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfaGFsZl91cChwcmVjKQotCi0gICAgZGVmIF9yb3VuZF9jZWlsaW5nKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgdXAgKG5vdCBhd2F5IGZyb20gMCBpZiBuZWdhdGl2ZS4pIiIiCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2Zsb29yKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgZG93biAobm90IHRvd2FyZHMgMCBpZiBuZWdhdGl2ZSkiIiIKLSAgICAgICAgaWYgbm90IHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kXzA1dXAoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kIGRvd24gdW5sZXNzIGRpZ2l0IHByZWMtMSBpcyAwIG9yIDUuIiIiCi0gICAgICAgIGlmIHByZWMgYW5kIHNlbGYuX2ludFtwcmVjLTFdIG5vdCBpbiAnMDUnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2Rvd24ocHJlYykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQotCi0gICAgX3BpY2tfcm91bmRpbmdfZnVuY3Rpb24gPSBkaWN0KAotICAgICAgICBST1VORF9ET1dOID0gX3JvdW5kX2Rvd24sCi0gICAgICAgIFJPVU5EX1VQID0gX3JvdW5kX3VwLAotICAgICAgICBST1VORF9IQUxGX1VQID0gX3JvdW5kX2hhbGZfdXAsCi0gICAgICAgIFJPVU5EX0hBTEZfRE9XTiA9IF9yb3VuZF9oYWxmX2Rvd24sCi0gICAgICAgIFJPVU5EX0hBTEZfRVZFTiA9IF9yb3VuZF9oYWxmX2V2ZW4sCi0gICAgICAgIFJPVU5EX0NFSUxJTkcgPSBfcm91bmRfY2VpbGluZywKLSAgICAgICAgUk9VTkRfRkxPT1IgPSBfcm91bmRfZmxvb3IsCi0gICAgICAgIFJPVU5EXzA1VVAgPSBfcm91bmRfMDV1cCwKLSAgICApCi0KLSAgICBkZWYgX19yb3VuZF9fKHNlbGYsIG49Tm9uZSk6Ci0gICAgICAgICIiIlJvdW5kIHNlbGYgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgb3IgdG8gYSBnaXZlbiBwcmVjaXNpb24uCi0KLSAgICAgICAgSWYgb25seSBvbmUgYXJndW1lbnQgaXMgc3VwcGxpZWQsIHJvdW5kIGEgZmluaXRlIERlY2ltYWwKLSAgICAgICAgaW5zdGFuY2Ugc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvcgotICAgICAgICBhIE5hTiB0aGVuIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICBJZiBzZWxmIGlzIGZpbml0ZQotICAgICAgICBhbmQgbGllcyBleGFjdGx5IGhhbGZ3YXkgYmV0d2VlbiB0d28gaW50ZWdlcnMgdGhlbiBpdCBpcwotICAgICAgICByb3VuZGVkIHRvIHRoZSBpbnRlZ2VyIHdpdGggZXZlbiBsYXN0IGRpZ2l0LgotCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcxMjMuNDU2JykpCi0gICAgICAgIDEyMwotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLTQ1Ni43ODknKSkKLSAgICAgICAgLTQ1NwotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLTMuMCcpKQotICAgICAgICAtMwotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMi41JykpCi0gICAgICAgIDIKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzMuNScpKQotICAgICAgICA0Ci0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdJbmYnKSkKLSAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgIC4uLgotICAgICAgICBPdmVyZmxvd0Vycm9yOiBjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ05hTicpKQotICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgLi4uCi0gICAgICAgIFZhbHVlRXJyb3I6IGNhbm5vdCByb3VuZCBhIE5hTgotCi0gICAgICAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IG4gaXMgc3VwcGxpZWQsIHNlbGYgaXMgcm91bmRlZCB0byBuCi0gICAgICAgIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHRoZSByb3VuZGluZyBtb2RlIGZvciB0aGUgY3VycmVudAotICAgICAgICBjb250ZXh0LgotCi0gICAgICAgIEZvciBhbiBpbnRlZ2VyIG4sIHJvdW5kKHNlbGYsIC1uKSBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KLSAgICAgICAgc2VsZi5xdWFudGl6ZShEZWNpbWFsKCcxRW4nKSkuCi0KLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgMCkKLSAgICAgICAgRGVjaW1hbCgnMTIzJykKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMTIzLjQ2JykKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgLTIpCi0gICAgICAgIERlY2ltYWwoJzFFKzInKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLUluZmluaXR5JyksIDM3KQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnc05hTjEyMycpLCAwKQotICAgICAgICBEZWNpbWFsKCdOYU4xMjMnKQotCi0gICAgICAgICIiIgotICAgICAgICBpZiBuIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyB0d28tYXJndW1lbnQgZm9ybTogdXNlIHRoZSBlcXVpdmFsZW50IHF1YW50aXplIGNhbGwKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG4sIGludCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdTZWNvbmQgYXJndW1lbnQgdG8gcm91bmQgc2hvdWxkIGJlIGludGVncmFsJykKLSAgICAgICAgICAgIGV4cCA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCAtbikKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnF1YW50aXplKGV4cCkKLQotICAgICAgICAjIG9uZS1hcmd1bWVudCBmb3JtCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9IQUxGX0VWRU4pKQotCi0gICAgZGVmIF9fZmxvb3JfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBmbG9vciBvZiBzZWxmLCBhcyBhbiBpbnRlZ2VyLgotCi0gICAgICAgIEZvciBhIGZpbml0ZSBEZWNpbWFsIGluc3RhbmNlIHNlbGYsIHJldHVybiB0aGUgZ3JlYXRlc3QKLSAgICAgICAgaW50ZWdlciBuIHN1Y2ggdGhhdCBuIDw9IHNlbGYuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yIGEgTmFOCi0gICAgICAgIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0ZMT09SKSkKLQotICAgIGRlZiBfX2NlaWxfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjZWlsaW5nIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCi0KLSAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBsZWFzdCBpbnRlZ2VyIG4KLSAgICAgICAgc3VjaCB0aGF0IG4gPj0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4gdGhlbiBhCi0gICAgICAgIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQotICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfQ0VJTElORykpCi0KLSAgICBkZWYgZm1hKHNlbGYsIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiRnVzZWQgbXVsdGlwbHktYWRkLgotCi0gICAgICAgIFJldHVybnMgc2VsZipvdGhlcit0aGlyZCB3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZSBpbnRlcm1lZGlhdGUKLSAgICAgICAgcHJvZHVjdCBzZWxmKm90aGVyLgotCi0gICAgICAgIHNlbGYgYW5kIG90aGVyIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyLCB3aXRoIG5vIHJvdW5kaW5nIG9mCi0gICAgICAgIHRoZSByZXN1bHQuICBUaGUgdGhpcmQgb3BlcmFuZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSByZXN1bHQsCi0gICAgICAgIGFuZCBhIHNpbmdsZSBmaW5hbCByb3VuZGluZyBpcyBwZXJmb3JtZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgICMgY29tcHV0ZSBwcm9kdWN0OyByYWlzZSBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBvcGVyYW5kIGlzCi0gICAgICAgICMgYSBzaWduYWxpbmcgTmFOIG9yIGlmIHRoZSBwcm9kdWN0IGlzIHplcm8gdGltZXMgaW5maW5pdHkuCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgaWYgc2VsZi5fZXhwID09ICdOJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBzZWxmKQotICAgICAgICAgICAgaWYgb3RoZXIuX2V4cCA9PSAnTic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywgb3RoZXIpCi0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBzZWxmCi0gICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBvdGhlcgotICAgICAgICAgICAgZWxpZiBzZWxmLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5GICogMCBpbiBmbWEnKQotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQotICAgICAgICAgICAgZWxpZiBvdGhlci5fZXhwID09ICdGJzoKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCAqIElORiBpbiBmbWEnKQotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJvZHVjdCA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogaW50KG90aGVyLl9pbnQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCArIG90aGVyLl9leHApCi0KLSAgICAgICAgcmV0dXJuIHByb2R1Y3QuX19hZGRfXyh0aGlyZCwgY29udGV4dCkKLQotICAgIGRlZiBfcG93ZXJfbW9kdWxvKHNlbGYsIG90aGVyLCBtb2R1bG8sIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlRocmVlIGFyZ3VtZW50IHZlcnNpb24gb2YgX19wb3dfXyIiIgotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIG1vZHVsbyA9IF9jb252ZXJ0X290aGVyKG1vZHVsbykKLSAgICAgICAgaWYgbW9kdWxvIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG1vZHVsbwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGRlYWwgd2l0aCBOYU5zOiBpZiB0aGVyZSBhcmUgYW55IHNOYU5zIHRoZW4gZmlyc3Qgb25lIHdpbnMsCi0gICAgICAgICMgKGkuZS4gYmVoYXZpb3VyIGZvciBOYU5zIGlzIGlkZW50aWNhbCB0byB0aGF0IG9mIGZtYSkKLSAgICAgICAgc2VsZl9pc19uYW4gPSBzZWxmLl9pc25hbigpCi0gICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgIG1vZHVsb19pc19uYW4gPSBtb2R1bG8uX2lzbmFuKCkKLSAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuIG9yIG1vZHVsb19pc19uYW46Ci0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgICAgICBpZiBtb2R1bG9faXNfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bG8pCi0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQotICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuOgotICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4X25hbihjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsby5fZml4X25hbihjb250ZXh0KQotCi0gICAgICAgICMgY2hlY2sgaW5wdXRzOiB3ZSBhcHBseSBzYW1lIHJlc3RyaWN0aW9ucyBhcyBQeXRob24ncyBwb3coKQotICAgICAgICBpZiBub3QgKHNlbGYuX2lzaW50ZWdlcigpIGFuZAotICAgICAgICAgICAgICAgIG90aGVyLl9pc2ludGVnZXIoKSBhbmQKLSAgICAgICAgICAgICAgICBtb2R1bG8uX2lzaW50ZWdlcigpKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgbm90IGFsbG93ZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmxlc3MgYWxsIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMnKQotICAgICAgICBpZiBvdGhlciA8IDA6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgMm5kIGFyZ3VtZW50IGNhbm5vdCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZ2F0aXZlIHdoZW4gM3JkIGFyZ3VtZW50IHNwZWNpZmllZCcpCi0gICAgICAgIGlmIG5vdCBtb2R1bG86Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgM3JkIGFyZ3VtZW50IGNhbm5vdCBiZSAwJykKLQotICAgICAgICAjIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gZm9yIGRlY2ltYWw6IHRoZSBtb2R1bHVzIG11c3QgYmUgbGVzcwotICAgICAgICAjIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWUKLSAgICAgICAgaWYgbW9kdWxvLmFkanVzdGVkKCkgPj0gY29udGV4dC5wcmVjOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3VmZmljaWVudCBwcmVjaXNpb246IHBvdygpIDNyZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IG11c3Qgbm90IGhhdmUgbW9yZSB0aGFuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIGRpZ2l0cycpCi0KLSAgICAgICAgIyBkZWZpbmUgMCoqMCA9PSBOYU4sIGZvciBjb25zaXN0ZW5jeSB3aXRoIHR3by1hcmd1bWVudCBwb3cKLSAgICAgICAgIyAoZXZlbiB0aG91Z2ggaXQgaHVydHMhKQotICAgICAgICBpZiBub3Qgb3RoZXIgYW5kIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IGxlYXN0IG9uZSBvZiBwb3coKSAxc3QgYXJndW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgMm5kIGFyZ3VtZW50IG11c3QgYmUgbm9uemVybyA7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwKiowIGlzIG5vdCBkZWZpbmVkJykKLQotICAgICAgICAjIGNvbXB1dGUgc2lnbiBvZiByZXN1bHQKLSAgICAgICAgaWYgb3RoZXIuX2lzZXZlbigpOgotICAgICAgICAgICAgc2lnbiA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCi0KLSAgICAgICAgIyBjb252ZXJ0IG1vZHVsbyB0byBhIFB5dGhvbiBpbnRlZ2VyLCBhbmQgc2VsZiBhbmQgb3RoZXIgdG8KLSAgICAgICAgIyBEZWNpbWFsIGludGVnZXJzIChpLmUuIGZvcmNlIHRoZWlyIGV4cG9uZW50cyB0byBiZSA+PSAwKQotICAgICAgICBtb2R1bG8gPSBhYnMoaW50KG1vZHVsbykpCi0gICAgICAgIGJhc2UgPSBfV29ya1JlcChzZWxmLnRvX2ludGVncmFsX3ZhbHVlKCkpCi0gICAgICAgIGV4cG9uZW50ID0gX1dvcmtSZXAob3RoZXIudG9faW50ZWdyYWxfdmFsdWUoKSkKLQotICAgICAgICAjIGNvbXB1dGUgcmVzdWx0IHVzaW5nIGludGVnZXIgcG93KCkKLSAgICAgICAgYmFzZSA9IChiYXNlLmludCAlIG1vZHVsbyAqIHBvdygxMCwgYmFzZS5leHAsIG1vZHVsbykpICUgbW9kdWxvCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGV4cG9uZW50LmV4cCk6Ci0gICAgICAgICAgICBiYXNlID0gcG93KGJhc2UsIDEwLCBtb2R1bG8pCi0gICAgICAgIGJhc2UgPSBwb3coYmFzZSwgZXhwb25lbnQuaW50LCBtb2R1bG8pCi0KLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKGJhc2UpLCAwKQotCi0gICAgZGVmIF9wb3dlcl9leGFjdChzZWxmLCBvdGhlciwgcCk6Ci0gICAgICAgICIiIkF0dGVtcHQgdG8gY29tcHV0ZSBzZWxmKipvdGhlciBleGFjdGx5LgotCi0gICAgICAgIEdpdmVuIERlY2ltYWxzIHNlbGYgYW5kIG90aGVyIGFuZCBhbiBpbnRlZ2VyIHAsIGF0dGVtcHQgdG8KLSAgICAgICAgY29tcHV0ZSBhbiBleGFjdCByZXN1bHQgZm9yIHRoZSBwb3dlciBzZWxmKipvdGhlciwgd2l0aCBwCi0gICAgICAgIGRpZ2l0cyBvZiBwcmVjaXNpb24uICBSZXR1cm4gTm9uZSBpZiBzZWxmKipvdGhlciBpcyBub3QKLSAgICAgICAgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIHAgZGlnaXRzLgotCi0gICAgICAgIEFzc3VtZXMgdGhhdCBlbGltaW5hdGlvbiBvZiBzcGVjaWFsIGNhc2VzIGhhcyBhbHJlYWR5IGJlZW4KLSAgICAgICAgcGVyZm9ybWVkOiBzZWxmIGFuZCBvdGhlciBtdXN0IGJvdGggYmUgbm9uc3BlY2lhbDsgc2VsZiBtdXN0Ci0gICAgICAgIGJlIHBvc2l0aXZlIGFuZCBub3QgbnVtZXJpY2FsbHkgZXF1YWwgdG8gMTsgb3RoZXIgbXVzdCBiZQotICAgICAgICBub256ZXJvLiAgRm9yIGVmZmljaWVuY3ksIG90aGVyLl9leHAgc2hvdWxkIG5vdCBiZSB0b28gbGFyZ2UsCi0gICAgICAgIHNvIHRoYXQgMTAqKmFicyhvdGhlci5fZXhwKSBpcyBhIGZlYXNpYmxlIGNhbGN1bGF0aW9uLiIiIgotCi0gICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQgeSBmb3IgdGhlCi0gICAgICAgICMgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCBhYnMoeSkgPSB5YyoxMCoqeWUsIHdpdGggeGMKLSAgICAgICAgIyBhbmQgeWMgcG9zaXRpdmUgaW50ZWdlcnMgbm90IGRpdmlzaWJsZSBieSAxMC4KLQotICAgICAgICAjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gaWRlbnRpZnkgdGhlICpmYWlsdXJlKgotICAgICAgICAjIG9mIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIHdpdGggYXMgbGl0dGxlIGVmZm9ydCBhcwotICAgICAgICAjIHBvc3NpYmxlLiAgU28gd2UgbG9vayBmb3IgY2hlYXAgYW5kIGVhc3kgdGVzdHMgdGhhdAotICAgICAgICAjIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgeCoqeSBiZWluZyBleGFjdC4gIE9ubHkgaWYgYWxsCi0gICAgICAgICMgdGhlc2UgdGVzdHMgYXJlIHBhc3NlZCBkbyB3ZSBnbyBvbiB0byBhY3R1YWxseSBjb21wdXRlIHgqKnkuCi0KLSAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG51bWJlciBtL24sIHdpdGggbSBhbmQKLSAgICAgICAgIyBuIHJlbGF0aXZlbHkgcHJpbWUgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseQotICAgICAgICAjIHJlcHJlc2VudGFibGUgKGF0ICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhCi0gICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIHkgaXMgbmVnYXRpdmUKLSAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UgYSBwb3dlcgotICAgICAgICAjIG9mIDIqKm4gb3IgNSoqbi4KLSAgICAgICAgIwotICAgICAgICAjIFRoZXJlJ3MgYSBsaW1pdCB0byBob3cgc21hbGwgfHl8IGNhbiBiZTogaWYgeT1tL24gYXMgYWJvdmUKLSAgICAgICAgIyB0aGVuOgotICAgICAgICAjCi0gICAgICAgICMgICgxKSBpZiB4YyAhPSAxIHRoZW4gZm9yIHRoZSByZXN1bHQgdG8gYmUgcmVwcmVzZW50YWJsZSB3ZQotICAgICAgICAjICAgICAgbmVlZCB4YyoqKDEvbikgPj0gMiwgYW5kIGhlbmNlIGFsc28geGMqKnx5fCA+PSAyLiAgU28KLSAgICAgICAgIyAgICAgIGlmIHx5fCA8PSAxL25iaXRzKHhjKSB0aGVuIHhjIDwgMioqbmJpdHMoeGMpIDw9Ci0gICAgICAgICMgICAgICAyKiooMS98eXwpLCBoZW5jZSB4YyoqfHl8IDwgMiBhbmQgdGhlIHJlc3VsdCBpcyBub3QKLSAgICAgICAgIyAgICAgIHJlcHJlc2VudGFibGUuCi0gICAgICAgICMKLSAgICAgICAgIyAgKDIpIGlmIHhlICE9IDAsIHx4ZXwqKDEvbikgPj0gMSwgc28gfHhlfCp8eXwgPj0gMS4gIEhlbmNlIGlmCi0gICAgICAgICMgICAgICB8eXwgPCAxL3x4ZXwgdGhlbiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlLgotICAgICAgICAjCi0gICAgICAgICMgTm90ZSB0aGF0IHNpbmNlIHggaXMgbm90IGVxdWFsIHRvIDEsIGF0IGxlYXN0IG9uZSBvZiAoMSkgYW5kCi0gICAgICAgICMgKDIpIG11c3QgYXBwbHkuICBOb3cgfHl8IDwgMS9uYml0cyh4YykgaWZmIHx5Y3wqbmJpdHMoeGMpIDwKLSAgICAgICAgIyAxMCoqLXllIGlmZiBsZW4oc3RyKHx5Y3wqbmJpdHMoeGMpKSA8PSAteWUuCi0gICAgICAgICMKLSAgICAgICAgIyBUaGVyZSdzIGFsc28gYSBsaW1pdCB0byBob3cgbGFyZ2UgeSBjYW4gYmUsIGF0IGxlYXN0IGlmIGl0J3MKLSAgICAgICAgIyBwb3NpdGl2ZTogdGhlIG5vcm1hbGl6ZWQgcmVzdWx0IHdpbGwgaGF2ZSBjb2VmZmljaWVudCB4YyoqeSwKLSAgICAgICAgIyBzbyBpZiBpdCdzIHJlcHJlc2VudGFibGUgdGhlbiB4YyoqeSA8IDEwKipwLCBhbmQgeSA8Ci0gICAgICAgICMgcC9sb2cxMCh4YykuICBIZW5jZSBpZiB5KmxvZzEwKHhjKSA+PSBwIHRoZW4gdGhlIHJlc3VsdCBpcwotICAgICAgICAjIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUuCi0KLSAgICAgICAgIyBpZiBsZW4oc3RyKGFicyh5Yyp4ZSkpIDw9IC15ZSB0aGVuIGFicyh5Yyp4ZSkgPCAxMCoqLXllLAotICAgICAgICAjIHNvIHx5fCA8IDEveGUgYW5kIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgICMgU2ltaWxhcmx5LCBsZW4oc3RyKGFicyh5YykqeGNfYml0cykpIDw9IC15ZSBpbXBsaWVzIHx5fAotICAgICAgICAjIDwgMS9uYml0cyh4YykuCi0KLSAgICAgICAgeCA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIHhjLCB4ZSA9IHguaW50LCB4LmV4cAotICAgICAgICB3aGlsZSB4YyAlIDEwID09IDA6Ci0gICAgICAgICAgICB4YyAvLz0gMTAKLSAgICAgICAgICAgIHhlICs9IDEKLQotICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgIHljLCB5ZSA9IHkuaW50LCB5LmV4cAotICAgICAgICB3aGlsZSB5YyAlIDEwID09IDA6Ci0gICAgICAgICAgICB5YyAvLz0gMTAKLSAgICAgICAgICAgIHllICs9IDEKLQotICAgICAgICAjIGNhc2Ugd2hlcmUgeGMgPT0gMTogcmVzdWx0IGlzIDEwKiooeGUqeSksIHdpdGggeGUqeQotICAgICAgICAjIHJlcXVpcmVkIHRvIGJlIGFuIGludGVnZXIKLSAgICAgICAgaWYgeGMgPT0gMToKLSAgICAgICAgICAgIHhlICo9IHljCi0gICAgICAgICAgICAjIHJlc3VsdCBpcyBub3cgMTAqKih4ZSAqIDEwKip5ZSk7ICB4ZSAqIDEwKip5ZSBtdXN0IGJlIGludGVncmFsCi0gICAgICAgICAgICB3aGlsZSB4ZSAlIDEwID09IDA6Ci0gICAgICAgICAgICAgICAgeGUgLy89IDEwCi0gICAgICAgICAgICAgICAgeWUgKz0gMQotICAgICAgICAgICAgaWYgeWUgPCAwOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBleHBvbmVudCA9IHhlICogMTAqKnllCi0gICAgICAgICAgICBpZiB5LnNpZ24gPT0gMToKLSAgICAgICAgICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudAotICAgICAgICAgICAgIyBpZiBvdGhlciBpcyBhIG5vbm5lZ2F0aXZlIGludGVnZXIsIHVzZSBpZGVhbCBleHBvbmVudAotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgotICAgICAgICAgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gc2VsZi5fZXhwKmludChvdGhlcikKLSAgICAgICAgICAgICAgICB6ZXJvcyA9IG1pbihleHBvbmVudC1pZGVhbF9leHBvbmVudCwgcC0xKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6ZXJvcyA9IDAKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJyArICcwJyp6ZXJvcywgZXhwb25lbnQtemVyb3MpCi0KLSAgICAgICAgIyBjYXNlIHdoZXJlIHkgaXMgbmVnYXRpdmU6IHhjIG11c3QgYmUgZWl0aGVyIGEgcG93ZXIKLSAgICAgICAgIyBvZiAyIG9yIGEgcG93ZXIgb2YgNS4KLSAgICAgICAgaWYgeS5zaWduID09IDE6Ci0gICAgICAgICAgICBsYXN0X2RpZ2l0ID0geGMgJSAxMAotICAgICAgICAgICAgaWYgbGFzdF9kaWdpdCBpbiAoMiw0LDYsOCk6Ci0gICAgICAgICAgICAgICAgIyBxdWljayB0ZXN0IGZvciBwb3dlciBvZiAyCi0gICAgICAgICAgICAgICAgaWYgeGMgJiAteGMgIT0geGM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgIyBub3cgeGMgaXMgYSBwb3dlciBvZiAyOyBlIGlzIGl0cyBleHBvbmVudAotICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpLTEKLQotICAgICAgICAgICAgICAgICMgV2Ugbm93IGhhdmU6Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICB4ID0gMioqZSAqIDEwKip4ZSwgZSA+IDAsIGFuZCB5IDwgMC4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUaGUgZXhhY3QgcmVzdWx0IGlzOgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICAgeCoqeSA9IDUqKigtZSp5KSAqIDEwKiooZSp5ICsgeGUqeSkKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBwcm92aWRlZCB0aGF0IGJvdGggZSp5IGFuZCB4ZSp5IGFyZSBpbnRlZ2Vycy4gIE5vdGUgdGhhdCBpZgotICAgICAgICAgICAgICAgICMgNSoqKC1lKnkpID49IDEwKipwLCB0aGVuIHRoZSByZXN1bHQgY2FuJ3QgYmUgZXhwcmVzc2VkCi0gICAgICAgICAgICAgICAgIyBleGFjdGx5IHdpdGggcCBkaWdpdHMgb2YgcHJlY2lzaW9uLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFVzaW5nIHRoZSBhYm92ZSwgd2UgY2FuIGd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLgotICAgICAgICAgICAgICAgICMgOTMvNjUgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZygxMCkvbG9nKDUpLCBzbyBpZgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICAgeWUgPj0gbGVuKHN0cig5MypwLy82NSkpCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgdGhlbgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICAgLWUqeSA+PSAteSA+PSAxMCoqeWUgPiA5MypwLzY1ID4gcCpsb2coMTApL2xvZyg1KSwKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBzbyA1KiooLWUqeSkgPj0gMTAqKnAsIGFuZCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdAotICAgICAgICAgICAgICAgICMgY2FuJ3QgYmUgZXhwcmVzc2VkIGluIHAgZGlnaXRzLgotCi0gICAgICAgICAgICAgICAgIyBlbWF4ID49IGxhcmdlc3QgZSBzdWNoIHRoYXQgNSoqZSA8IDEwKipwLgotICAgICAgICAgICAgICAgIGVtYXggPSBwKjkzLy82NQotICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAgICAgIyBGaW5kIC1lKnkgYW5kIC14ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICB4YyA9IDUqKmUKLQotICAgICAgICAgICAgZWxpZiBsYXN0X2RpZ2l0ID09IDU6Ci0gICAgICAgICAgICAgICAgIyBlID49IGxvZ181KHhjKSBpZiB4YyBpcyBhIHBvd2VyIG9mIDU7IHdlIGhhdmUKLSAgICAgICAgICAgICAgICAjIGVxdWFsaXR5IGFsbCB0aGUgd2F5IHVwIHRvIHhjPTUqKjI2NTgKLSAgICAgICAgICAgICAgICBlID0gX25iaXRzKHhjKSoyOC8vNjUKLSAgICAgICAgICAgICAgICB4YywgcmVtYWluZGVyID0gZGl2bW9kKDUqKmUsIHhjKQotICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICB3aGlsZSB4YyAlIDUgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgeGMgLy89IDUKLSAgICAgICAgICAgICAgICAgICAgZSAtPSAxCi0KLSAgICAgICAgICAgICAgICAjIEd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBpbgotICAgICAgICAgICAgICAgICMgdGhlICd4YyBpcyBhIHBvd2VyIG9mIDInIGJyYW5jaC4gIDEwLzMgaXMgYW4gdXBwZXIgYm91bmQgZm9yCi0gICAgICAgICAgICAgICAgIyBsb2coMTApL2xvZygyKS4KLSAgICAgICAgICAgICAgICBlbWF4ID0gcCoxMC8vMwotICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQotICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQotICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgeGMgPSAyKiplCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIGlmIHhjID49IDEwKipwOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICB4ZSA9IC1lLXhlCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIoeGMpLCB4ZSkKLQotICAgICAgICAjIG5vdyB5IGlzIHBvc2l0aXZlOyBmaW5kIG0gYW5kIG4gc3VjaCB0aGF0IHkgPSBtL24KLSAgICAgICAgaWYgeWUgPj0gMDoKLSAgICAgICAgICAgIG0sIG4gPSB5YyoxMCoqeWUsIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHhlICE9IDAgYW5kIGxlbihzdHIoYWJzKHljKnhlKSkpIDw9IC15ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgeGNfYml0cyA9IF9uYml0cyh4YykKLSAgICAgICAgICAgIGlmIHhjICE9IDEgYW5kIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBtLCBuID0geWMsIDEwKiooLXllKQotICAgICAgICAgICAgd2hpbGUgbSAlIDIgPT0gbiAlIDIgPT0gMDoKLSAgICAgICAgICAgICAgICBtIC8vPSAyCi0gICAgICAgICAgICAgICAgbiAvLz0gMgotICAgICAgICAgICAgd2hpbGUgbSAlIDUgPT0gbiAlIDUgPT0gMDoKLSAgICAgICAgICAgICAgICBtIC8vPSA1Ci0gICAgICAgICAgICAgICAgbiAvLz0gNQotCi0gICAgICAgICMgY29tcHV0ZSBudGggcm9vdCBvZiB4YyoxMCoqeGUKLSAgICAgICAgaWYgbiA+IDE6Ci0gICAgICAgICAgICAjIGlmIDEgPCB4YyA8IDIqKm4gdGhlbiB4YyBpc24ndCBhbiBudGggcG93ZXIKLSAgICAgICAgICAgIGlmIHhjICE9IDEgYW5kIHhjX2JpdHMgPD0gbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICB4ZSwgcmVtID0gZGl2bW9kKHhlLCBuKQotICAgICAgICAgICAgaWYgcmVtICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjIHVzaW5nIE5ld3RvbidzIG1ldGhvZAotICAgICAgICAgICAgYSA9IDEgPDwgLSgtX25iaXRzKHhjKS8vbikgIyBpbml0aWFsIGVzdGltYXRlCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoeGMsIGEqKihuLTEpKQotICAgICAgICAgICAgICAgIGlmIGEgPD0gcToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBhID0gKGEqKG4tMSkgKyBxKS8vbgotICAgICAgICAgICAgaWYgbm90IChhID09IHEgYW5kIHIgPT0gMCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHhjID0gYQotCi0gICAgICAgICMgbm93IHhjKjEwKip4ZSBpcyB0aGUgbnRoIHJvb3Qgb2YgdGhlIG9yaWdpbmFsIHhjKjEwKip4ZQotICAgICAgICAjIGNvbXB1dGUgbXRoIHBvd2VyIG9mIHhjKjEwKip4ZQotCi0gICAgICAgICMgaWYgbSA+IHAqMTAwLy9fbG9nMTBfbGIoeGMpIHRoZW4gbSA+IHAvbG9nMTAoeGMpLCBoZW5jZSB4YyoqbSA+Ci0gICAgICAgICMgMTAqKnAgYW5kIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgIGlmIHhjID4gMSBhbmQgbSA+IHAqMTAwLy9fbG9nMTBfbGIoeGMpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgeGMgPSB4YyoqbQotICAgICAgICB4ZSAqPSBtCi0gICAgICAgIGlmIHhjID4gMTAqKnA6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgYnkgdGhpcyBwb2ludCB0aGUgcmVzdWx0ICppcyogZXhhY3RseSByZXByZXNlbnRhYmxlCi0gICAgICAgICMgYWRqdXN0IHRoZSBleHBvbmVudCB0byBnZXQgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIGlkZWFsCi0gICAgICAgICMgZXhwb25lbnQsIGlmIG5lY2Vzc2FyeQotICAgICAgICBzdHJfeGMgPSBzdHIoeGMpCi0gICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKSBhbmQgb3RoZXIuX3NpZ24gPT0gMDoKLSAgICAgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gc2VsZi5fZXhwKmludChvdGhlcikKLSAgICAgICAgICAgIHplcm9zID0gbWluKHhlLWlkZWFsX2V4cG9uZW50LCBwLWxlbihzdHJfeGMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgemVyb3MgPSAwCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cl94YysnMCcqemVyb3MsIHhlLXplcm9zKQotCi0gICAgZGVmIF9fcG93X18oc2VsZiwgb3RoZXIsIG1vZHVsbz1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gc2VsZiAqKiBvdGhlciBbICUgbW9kdWxvXS4KLQotICAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgc2VsZioqb3RoZXIuCi0KLSAgICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgKHNlbGYqKm90aGVyKSAlIG1vZHVsby4gIEZvciB0aGUKLSAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCi0gICAgICAgIGFyZ3VtZW50cyBob2xkOgotCi0gICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAotICAgICAgICAgLSBvdGhlciBtdXN0IGJlIG5vbm5lZ2F0aXZlCi0gICAgICAgICAtIGVpdGhlciBzZWxmIG9yIG90aGVyIChvciBib3RoKSBtdXN0IGJlIG5vbnplcm8KLSAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgbXVzdCBoYXZlIGF0IG1vc3QgcCBkaWdpdHMsCi0gICAgICAgICAgIHdoZXJlIHAgaXMgdGhlIGNvbnRleHQgcHJlY2lzaW9uLgotCi0gICAgICAgIElmIGFueSBvZiB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmlvbGF0ZWQgdGhlIEludmFsaWRPcGVyYXRpb24KLSAgICAgICAgZmxhZyBpcyByYWlzZWQuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBvZiBwb3coc2VsZiwgb3RoZXIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZQotICAgICAgICByZXN1bHQgdGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBieSBjb21wdXRpbmcgKHNlbGYqKm90aGVyKSAlCi0gICAgICAgIG1vZHVsbyB3aXRoIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlCi0gICAgICAgIGVmZmljaWVudGx5LiAgSXQgaXMgYWx3YXlzIGV4YWN0LgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBtb2R1bG8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcG93ZXJfbW9kdWxvKG90aGVyLCBtb2R1bG8sIGNvbnRleHQpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgIyBlaXRoZXIgYXJndW1lbnQgaXMgYSBOYU4gPT4gcmVzdWx0IGlzIE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgIyAwKiowID0gTmFOICghKSwgeCoqMCA9IDEgZm9yIG5vbnplcm8geCAoaW5jbHVkaW5nICsvLUluZmluaXR5KQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiogMCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0KLSAgICAgICAgIyByZXN1bHQgaGFzIHNpZ24gMSBpZmYgc2VsZi5fc2lnbiBpcyAxIGFuZCBvdGhlciBpcyBhbiBvZGQgaW50ZWdlcgotICAgICAgICByZXN1bHRfc2lnbiA9IDAKLSAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlci5faXNldmVuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zaWduID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIC12ZSoqbm9uaW50ZWdlciA9IE5hTgotICAgICAgICAgICAgICAgICMgKC0wKSoqbm9uaW50ZWdlciA9IDAqKm5vbmludGVnZXIKLSAgICAgICAgICAgICAgICBpZiBzZWxmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICd4ICoqIHkgd2l0aCB4IG5lZ2F0aXZlIGFuZCB5IG5vdCBhbiBpbnRlZ2VyJykKLSAgICAgICAgICAgICMgbmVnYXRlIHNlbGYsIHdpdGhvdXQgZG9pbmcgYW55IHVud2FudGVkIHJvdW5kaW5nCi0gICAgICAgICAgICBzZWxmID0gc2VsZi5jb3B5X25lZ2F0ZSgpCi0KLSAgICAgICAgIyAwKiooK3ZlIG9yIEluZik9IDA7IDAqKigtdmUgb3IgLUluZikgPSBJbmZpbml0eQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KLQotICAgICAgICAjIEluZioqKCt2ZSBvciBJbmYpID0gSW5mOyBJbmYqKigtdmUgb3IgLUluZikgPSAwCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKLQotICAgICAgICAjIDEqKm90aGVyID0gMSwgYnV0IHRoZSBjaG9pY2Ugb2YgZXhwb25lbnQgYW5kIHRoZSBmbGFncwotICAgICAgICAjIGRlcGVuZCBvbiB0aGUgZXhwb25lbnQgb2Ygc2VsZiwgYW5kIG9uIHdoZXRoZXIgb3RoZXIgaXMgYQotICAgICAgICAjIHBvc2l0aXZlIGludGVnZXIsIGEgbmVnYXRpdmUgaW50ZWdlciwgb3IgbmVpdGhlcgotICAgICAgICBpZiBzZWxmID09IF9PbmU6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6Ci0gICAgICAgICAgICAgICAgIyBleHAgPSBtYXgoc2VsZi5fZXhwKm1heChpbnQob3RoZXIpLCAwKSwKLSAgICAgICAgICAgICAgICAjIDEtY29udGV4dC5wcmVjKSBidXQgZXZhbHVhdGluZyBpbnQob3RoZXIpIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgIyBpcyBkYW5nZXJvdXMgdW50aWwgd2Uga25vdyBvdGhlciBpcyBzbWFsbCAob3RoZXIKLSAgICAgICAgICAgICAgICAjIGNvdWxkIGJlIDFlOTk5OTk5OTk5KQotICAgICAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSAwCi0gICAgICAgICAgICAgICAgZWxpZiBvdGhlciA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGNvbnRleHQucHJlYwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBpbnQob3RoZXIpCi0KLSAgICAgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgKiBtdWx0aXBsaWVyCi0gICAgICAgICAgICAgICAgaWYgZXhwIDwgMS1jb250ZXh0LnByZWM6Ci0gICAgICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgICAgICBleHAgPSAxLWNvbnRleHQucHJlYwotCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnKycwJyotZXhwLCBleHApCi0KLSAgICAgICAgIyBjb21wdXRlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYKLSAgICAgICAgc2VsZl9hZGogPSBzZWxmLmFkanVzdGVkKCkKLQotICAgICAgICAjIHNlbGYgKiogaW5maW5pdHkgaXMgaW5maW5pdHkgaWYgc2VsZiA+IDEsIDAgaWYgc2VsZiA8IDEKLSAgICAgICAgIyBzZWxmICoqIC1pbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmIDwgMSwgMCBpZiBzZWxmID4gMQotICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgKG90aGVyLl9zaWduID09IDApID09IChzZWxmX2FkaiA8IDApOgotICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMCcsIDApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0X3NpZ25dCi0KLSAgICAgICAgIyBmcm9tIGhlcmUgb24sIHRoZSByZXN1bHQgYWx3YXlzIGdvZXMgdGhyb3VnaCB0aGUgY2FsbAotICAgICAgICAjIHRvIF9maXggYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBhbnMgPSBOb25lCi0gICAgICAgIGV4YWN0ID0gRmFsc2UKLQotICAgICAgICAjIGNydWRlIHRlc3QgdG8gY2F0Y2ggY2FzZXMgb2YgZXh0cmVtZSBvdmVyZmxvdy91bmRlcmZsb3cuICBJZgotICAgICAgICAjIGxvZzEwKHNlbGYpKm90aGVyID49IDEwKipib3VuZCBhbmQgYm91bmQgPj0gbGVuKHN0cihFbWF4KSkKLSAgICAgICAgIyB0aGVuIDEwKipib3VuZCA+PSAxMCoqbGVuKHN0cihFbWF4KSkgPj0gRW1heCsxIGFuZCBoZW5jZQotICAgICAgICAjIHNlbGYqKm90aGVyID49IDEwKiooRW1heCsxKSwgc28gb3ZlcmZsb3cgb2NjdXJzLiAgVGhlIHRlc3QKLSAgICAgICAgIyBmb3IgdW5kZXJmbG93IGlzIHNpbWlsYXIuCi0gICAgICAgIGJvdW5kID0gc2VsZi5fbG9nMTBfZXhwX2JvdW5kKCkgKyBvdGhlci5hZGp1c3RlZCgpCi0gICAgICAgIGlmIChzZWxmX2FkaiA+PSAwKSA9PSAob3RoZXIuX3NpZ24gPT0gMCk6Ci0gICAgICAgICAgICAjIHNlbGYgPiAxIGFuZCBvdGhlciArdmUsIG9yIHNlbGYgPCAxIGFuZCBvdGhlciAtdmUKLSAgICAgICAgICAgICMgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cKLSAgICAgICAgICAgIGlmIGJvdW5kID49IGxlbihzdHIoY29udGV4dC5FbWF4KSk6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnLCBjb250ZXh0LkVtYXgrMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyIC12ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyICt2ZQotICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiB1bmRlcmZsb3cgdG8gMAotICAgICAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKLSAgICAgICAgICAgIGlmIGJvdW5kID49IGxlbihzdHIoLUV0aW55KSk6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnLCBFdGlueS0xKQotCi0gICAgICAgICMgdHJ5IGZvciBhbiBleGFjdCByZXN1bHQgd2l0aCBwcmVjaXNpb24gKzEKLSAgICAgICAgaWYgYW5zIGlzIE5vbmU6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9wb3dlcl9leGFjdChvdGhlciwgY29udGV4dC5wcmVjICsgMSkKLSAgICAgICAgICAgIGlmIGFucyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRfc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDEsIGFucy5faW50LCBhbnMuX2V4cCkKLSAgICAgICAgICAgICAgICBleGFjdCA9IFRydWUKLQotICAgICAgICAjIHVzdWFsIGNhc2U6IGluZXhhY3QgcmVzdWx0LCB4Kip5IGNvbXB1dGVkIGRpcmVjdGx5IGFzIGV4cCh5KmxvZyh4KSkKLSAgICAgICAgaWYgYW5zIGlzIE5vbmU6Ci0gICAgICAgICAgICBwID0gY29udGV4dC5wcmVjCi0gICAgICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgICAgIHhjLCB4ZSA9IHguaW50LCB4LmV4cAotICAgICAgICAgICAgeSA9IF9Xb3JrUmVwKG90aGVyKQotICAgICAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCi0gICAgICAgICAgICBpZiB5LnNpZ24gPT0gMToKLSAgICAgICAgICAgICAgICB5YyA9IC15YwotCi0gICAgICAgICAgICAjIGNvbXB1dGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiAgc3RhcnQgd2l0aCBwcmVjaXNpb24gKzMsCi0gICAgICAgICAgICAjIHRoZW4gaW5jcmVhc2UgcHJlY2lzaW9uIHVudGlsIHJlc3VsdCBpcyB1bmFtYmlndW91c2x5IHJvdW5kYWJsZQotICAgICAgICAgICAgZXh0cmEgPSAzCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvZWZmLCBleHAgPSBfZHBvd2VyKHhjLCB4ZSwgeWMsIHllLCBwK2V4dHJhKQotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGNvZWZmKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXh0cmEgKz0gMwotCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCBzdHIoY29lZmYpLCBleHApCi0KLSAgICAgICAgIyB1bmxpa2UgZXhwLCBsbiBhbmQgbG9nMTAsIHRoZSBwb3dlciBmdW5jdGlvbiByZXNwZWN0cyB0aGUKLSAgICAgICAgIyByb3VuZGluZyBtb2RlOyBubyBuZWVkIHRvIHN3aXRjaCB0byBST1VORF9IQUxGX0VWRU4gaGVyZQotCi0gICAgICAgICMgVGhlcmUncyBhIGRpZmZpY3VsdHkgaGVyZSB3aGVuICdvdGhlcicgaXMgbm90IGFuIGludGVnZXIgYW5kCi0gICAgICAgICMgdGhlIHJlc3VsdCBpcyBleGFjdC4gIEluIHRoaXMgY2FzZSwgdGhlIHNwZWNpZmljYXRpb24KLSAgICAgICAgIyByZXF1aXJlcyB0aGF0IHRoZSBJbmV4YWN0IGZsYWcgYmUgcmFpc2VkIChpbiBzcGl0ZSBvZgotICAgICAgICAjIGV4YWN0bmVzcyksIGJ1dCBzaW5jZSB0aGUgcmVzdWx0IGlzIGV4YWN0IF9maXggd29uJ3QgZG8gdGhpcwotICAgICAgICAjIGZvciB1cy4gIChDb3JyZXNwb25kaW5nbHksIHRoZSBVbmRlcmZsb3cgc2lnbmFsIHNob3VsZCBhbHNvCi0gICAgICAgICMgYmUgcmFpc2VkIGZvciBzdWJub3JtYWwgcmVzdWx0cy4pICBXZSBjYW4ndCBkaXJlY3RseSByYWlzZQotICAgICAgICAjIHRoZXNlIHNpZ25hbHMgZWl0aGVyIGJlZm9yZSBvciBhZnRlciBjYWxsaW5nIF9maXgsIHNpbmNlCi0gICAgICAgICMgdGhhdCB3b3VsZCB2aW9sYXRlIHRoZSBwcmVjZWRlbmNlIGZvciBzaWduYWxzLiAgU28gd2Ugd3JhcAotICAgICAgICAjIHRoZSAuX2ZpeCBjYWxsIGluIGEgdGVtcG9yYXJ5IGNvbnRleHQsIGFuZCByZXJhaXNlCi0gICAgICAgICMgYWZ0ZXJ3YXJkcy4KLSAgICAgICAgaWYgZXhhY3QgYW5kIG5vdCBvdGhlci5faXNpbnRlZ2VyKCk6Ci0gICAgICAgICAgICAjIHBhZCB3aXRoIHplcm9zIHVwIHRvIGxlbmd0aCBjb250ZXh0LnByZWMrMSBpZiBuZWNlc3Nhcnk7IHRoaXMKLSAgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHRoZSBSb3VuZGVkIHNpZ25hbCB3aWxsIGJlIHJhaXNlZC4KLSAgICAgICAgICAgIGlmIGxlbihhbnMuX2ludCkgPD0gY29udGV4dC5wcmVjOgotICAgICAgICAgICAgICAgIGV4cGRpZmYgPSBjb250ZXh0LnByZWMgKyAxIC0gbGVuKGFucy5faW50KQotICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYW5zLl9zaWduLCBhbnMuX2ludCsnMCcqZXhwZGlmZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFucy5fZXhwLWV4cGRpZmYpCi0KLSAgICAgICAgICAgICMgY3JlYXRlIGEgY29weSBvZiB0aGUgY3VycmVudCBjb250ZXh0LCB3aXRoIGNsZWFyZWQgZmxhZ3MvdHJhcHMKLSAgICAgICAgICAgIG5ld2NvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICAgICAgbmV3Y29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgICAgICBmb3IgZXhjZXB0aW9uIGluIF9zaWduYWxzOgotICAgICAgICAgICAgICAgIG5ld2NvbnRleHQudHJhcHNbZXhjZXB0aW9uXSA9IDAKLQotICAgICAgICAgICAgIyByb3VuZCBpbiB0aGUgbmV3IGNvbnRleHQKLSAgICAgICAgICAgIGFucyA9IGFucy5fZml4KG5ld2NvbnRleHQpCi0KLSAgICAgICAgICAgICMgcmFpc2UgSW5leGFjdCwgYW5kIGlmIG5lY2Vzc2FyeSwgVW5kZXJmbG93Ci0gICAgICAgICAgICBuZXdjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tTdWJub3JtYWxdOgotICAgICAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKLQotICAgICAgICAgICAgIyBwcm9wYWdhdGUgc2lnbmFscyB0byB0aGUgb3JpZ2luYWwgY29udGV4dDsgX2ZpeCBjb3VsZAotICAgICAgICAgICAgIyBoYXZlIHJhaXNlZCBhbnkgb2YgT3ZlcmZsb3csIFVuZGVyZmxvdywgU3Vibm9ybWFsLAotICAgICAgICAgICAgIyBJbmV4YWN0LCBSb3VuZGVkLCBDbGFtcGVkLiAgT3ZlcmZsb3cgbmVlZHMgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICMgYXJndW1lbnRzLiAgTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgZXhjZXB0aW9ucyBpcwotICAgICAgICAgICAgIyBpbXBvcnRhbnQgaGVyZS4KLSAgICAgICAgICAgIGlmIG5ld2NvbnRleHQuZmxhZ3NbT3ZlcmZsb3ddOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LCAnYWJvdmUgRW1heCcsIGFucy5fc2lnbikKLSAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gVW5kZXJmbG93LCBTdWJub3JtYWwsIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQ6Ci0gICAgICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tleGNlcHRpb25dOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihleGNlcHRpb24pCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIF9fcnBvd19fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fcG93X18uIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIHJldHVybiBvdGhlci5fX3Bvd19fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBub3JtYWxpemUoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiTm9ybWFsaXplLSBzdHJpcCB0cmFpbGluZyAwcywgY2hhbmdlIGFueXRoaW5nIGVxdWFsIHRvIDAgdG8gMGUwIiIiCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgZHVwID0gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgIGlmIGR1cC5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIGR1cAotCi0gICAgICAgIGlmIG5vdCBkdXA6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sICcwJywgMCkKLSAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIGNvbnRleHQuRXRvcCgpXVtjb250ZXh0LmNsYW1wXQotICAgICAgICBlbmQgPSBsZW4oZHVwLl9pbnQpCi0gICAgICAgIGV4cCA9IGR1cC5fZXhwCi0gICAgICAgIHdoaWxlIGR1cC5faW50W2VuZC0xXSA9PSAnMCcgYW5kIGV4cCA8IGV4cF9tYXg6Ci0gICAgICAgICAgICBleHAgKz0gMQotICAgICAgICAgICAgZW5kIC09IDEKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoZHVwLl9zaWduLCBkdXAuX2ludFs6ZW5kXSwgZXhwKQotCi0gICAgZGVmIHF1YW50aXplKHNlbGYsIGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lLCB3YXRjaGV4cD1UcnVlKToKLSAgICAgICAgIiIiUXVhbnRpemUgc2VsZiBzbyBpdHMgZXhwb25lbnQgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiBleHAuCi0KLSAgICAgICAgU2ltaWxhciB0byBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwKSBidXQgd2l0aCBlcnJvciBjaGVja2luZy4KLSAgICAgICAgIiIiCi0gICAgICAgIGV4cCA9IF9jb252ZXJ0X290aGVyKGV4cCwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZwotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3IgZXhwLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhleHAsIGNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBvciBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgaWYgZXhwLl9pc2luZmluaXR5KCkgYW5kIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikgICMgaWYgYm90aCBhcmUgaW5mLCBpdCBpcyBPSwotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSB3aXRoIG9uZSBJTkYnKQotCi0gICAgICAgICMgaWYgd2UncmUgbm90IHdhdGNoaW5nIGV4cG9uZW50cywgZG8gYSBzaW1wbGUgcmVzY2FsZQotICAgICAgICBpZiBub3Qgd2F0Y2hleHA6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwLCByb3VuZGluZykKLSAgICAgICAgICAgICMgcmFpc2UgSW5leGFjdCBhbmQgUm91bmRlZCB3aGVyZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgaWYgYW5zLl9leHAgPiBzZWxmLl9leHA6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgICAgICBpZiBhbnMgIT0gc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGV4cC5fZXhwIHNob3VsZCBiZSBiZXR3ZWVuIEV0aW55IGFuZCBFbWF4Ci0gICAgICAgIGlmIG5vdCAoY29udGV4dC5FdGlueSgpIDw9IGV4cC5fZXhwIDw9IGNvbnRleHQuRW1heCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAndGFyZ2V0IGV4cG9uZW50IG91dCBvZiBib3VuZHMgaW4gcXVhbnRpemUnKQotCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGV4cC5fZXhwKQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgc2VsZl9hZGp1c3RlZCA9IHNlbGYuYWRqdXN0ZWQoKQotICAgICAgICBpZiBzZWxmX2FkanVzdGVkID4gY29udGV4dC5FbWF4OgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50IG9mIHF1YW50aXplIHJlc3VsdCB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0gICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgLSBleHAuX2V4cCArIDEgPiBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAuX2V4cCwgcm91bmRpbmcpCi0gICAgICAgIGlmIGFucy5hZGp1c3RlZCgpID4gY29udGV4dC5FbWF4OgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50IG9mIHF1YW50aXplIHJlc3VsdCB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0gICAgICAgIGlmIGxlbihhbnMuX2ludCkgPiBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0KLSAgICAgICAgIyByYWlzZSBhcHByb3ByaWF0ZSBmbGFncwotICAgICAgICBpZiBhbnMgYW5kIGFucy5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQotICAgICAgICBpZiBhbnMuX2V4cCA+IHNlbGYuX2V4cDoKLSAgICAgICAgICAgIGlmIGFucyAhPSBzZWxmOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotCi0gICAgICAgICMgY2FsbCB0byBmaXggdGFrZXMgY2FyZSBvZiBhbnkgbmVjZXNzYXJ5IGZvbGRkb3duLCBhbmQKLSAgICAgICAgIyBzaWduYWxzIENsYW1wZWQgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBzYW1lX3F1YW50dW0oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgYW5kIG90aGVyIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQ7IG90aGVyd2lzZQotICAgICAgICByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBzcGVjaWFsIHZhbHVlLCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFyZSB1c2VkOgotICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIGluZmluaXRpZXMKLSAgICAgICAgICAgKiByZXR1cm4gVHJ1ZSBpZiBib3RoIG9wZXJhbmRzIGFyZSBOYU5zCi0gICAgICAgICAgICogb3RoZXJ3aXNlLCByZXR1cm4gRmFsc2UuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICByZXR1cm4gKHNlbGYuaXNfbmFuKCkgYW5kIG90aGVyLmlzX25hbigpIG9yCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuaXNfaW5maW5pdGUoKSBhbmQgb3RoZXIuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSBvdGhlci5fZXhwCi0KLSAgICBkZWYgX3Jlc2NhbGUoc2VsZiwgZXhwLCByb3VuZGluZyk6Ci0gICAgICAgICIiIlJlc2NhbGUgc2VsZiBzbyB0aGF0IHRoZSBleHBvbmVudCBpcyBleHAsIGVpdGhlciBieSBwYWRkaW5nIHdpdGggemVyb3MKLSAgICAgICAgb3IgYnkgdHJ1bmNhdGluZyBkaWdpdHMsIHVzaW5nIHRoZSBnaXZlbiByb3VuZGluZyBtb2RlLgotCi0gICAgICAgIFNwZWNpYWxzIGFyZSByZXR1cm5lZCB3aXRob3V0IGNoYW5nZS4gIFRoaXMgb3BlcmF0aW9uIGlzCi0gICAgICAgIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vIGluZm9ybWF0aW9uIGZyb20gdGhlCi0gICAgICAgIGNvbnRleHQuCi0KLSAgICAgICAgZXhwID0gZXhwIHRvIHNjYWxlIHRvIChhbiBpbnRlZ2VyKQotICAgICAgICByb3VuZGluZyA9IHJvdW5kaW5nIG1vZGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgZXhwKQotCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSBleHA6Ci0gICAgICAgICAgICAjIHBhZCBhbnN3ZXIgd2l0aCB6ZXJvcyBpZiBuZWNlc3NhcnkKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBleHApLCBleHApCi0KLSAgICAgICAgIyB0b28gbWFueSBkaWdpdHM7IHJvdW5kIGFuZCBsb3NlIGRhdGEuICBJZiBzZWxmLmFkanVzdGVkKCkgPAotICAgICAgICAjIGV4cC0xLCByZXBsYWNlIHNlbGYgYnkgMTAqKihleHAtMSkgYmVmb3JlIHJvdW5kaW5nCi0gICAgICAgIGRpZ2l0cyA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gZXhwCi0gICAgICAgIGlmIGRpZ2l0cyA8IDA6Ci0gICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMScsIGV4cC0xKQotICAgICAgICAgICAgZGlnaXRzID0gMAotICAgICAgICB0aGlzX2Z1bmN0aW9uID0gc2VsZi5fcGlja19yb3VuZGluZ19mdW5jdGlvbltyb3VuZGluZ10KLSAgICAgICAgY2hhbmdlZCA9IHRoaXNfZnVuY3Rpb24oc2VsZiwgZGlnaXRzKQotICAgICAgICBjb2VmZiA9IHNlbGYuX2ludFs6ZGlnaXRzXSBvciAnMCcKLSAgICAgICAgaWYgY2hhbmdlZCA9PSAxOgotICAgICAgICAgICAgY29lZmYgPSBzdHIoaW50KGNvZWZmKSsxKQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBjb2VmZiwgZXhwKQotCi0gICAgZGVmIF9yb3VuZChzZWxmLCBwbGFjZXMsIHJvdW5kaW5nKToKLSAgICAgICAgIiIiUm91bmQgYSBub256ZXJvLCBub25zcGVjaWFsIERlY2ltYWwgdG8gYSBmaXhlZCBudW1iZXIgb2YKLSAgICAgICAgc2lnbmlmaWNhbnQgZmlndXJlcywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCi0KLSAgICAgICAgSW5maW5pdGllcywgTmFOcyBhbmQgemVyb3MgYXJlIHJldHVybmVkIHVuYWx0ZXJlZC4KLQotICAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyBxdWlldDogaXQgcmFpc2VzIG5vIGZsYWdzLCBhbmQgdXNlcyBubwotICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb250ZXh0LgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBwbGFjZXMgPD0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhdCBsZWFzdCAxIGluIF9yb3VuZCIpCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKHNlbGYuYWRqdXN0ZWQoKSsxLXBsYWNlcywgcm91bmRpbmcpCi0gICAgICAgICMgaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSByZXNjYWxlIGFsdGVycyB0aGUgYWRqdXN0ZWQgZXhwb25lbnQ7Ci0gICAgICAgICMgZm9yIGV4YW1wbGUgd2hlbiByb3VuZGluZyA5OS45NyB0byAzIHNpZ25pZmljYW50IGZpZ3VyZXMuCi0gICAgICAgICMgV2hlbiB0aGlzIGhhcHBlbnMgd2UgZW5kIHVwIHdpdGggYW4gZXh0cmEgMCBhdCB0aGUgZW5kIG9mCi0gICAgICAgICMgdGhlIG51bWJlcjsgYSBzZWNvbmQgcmVzY2FsZSBmaXhlcyB0aGlzLgotICAgICAgICBpZiBhbnMuYWRqdXN0ZWQoKSAhPSBzZWxmLmFkanVzdGVkKCk6Ci0gICAgICAgICAgICBhbnMgPSBhbnMuX3Jlc2NhbGUoYW5zLmFkanVzdGVkKCkrMS1wbGFjZXMsIHJvdW5kaW5nKQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgdG9faW50ZWdyYWxfZXhhY3Qoc2VsZiwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUm91bmRzIHRvIGEgbmVhcmJ5IGludGVnZXIuCi0KLSAgICAgICAgSWYgbm8gcm91bmRpbmcgbW9kZSBpcyBzcGVjaWZpZWQsIHRha2UgdGhlIHJvdW5kaW5nIG1vZGUgZnJvbQotICAgICAgICB0aGUgY29udGV4dC4gIFRoaXMgbWV0aG9kIHJhaXNlcyB0aGUgUm91bmRlZCBhbmQgSW5leGFjdCBmbGFncwotICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgotCi0gICAgICAgIFNlZSBhbHNvOiB0b19pbnRlZ3JhbF92YWx1ZSwgd2hpY2ggZG9lcyBleGFjdGx5IHRoZSBzYW1lIGFzCi0gICAgICAgIHRoaXMgbWV0aG9kIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgcmFpc2UgSW5leGFjdCBvciBSb3VuZGVkLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIDApCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZwotICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQotICAgICAgICBpZiBhbnMgIT0gc2VsZjoKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiB0b19pbnRlZ3JhbF92YWx1ZShzZWxmLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSb3VuZHMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgd2l0aG91dCByYWlzaW5nIGluZXhhY3QsIHJvdW5kZWQuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZwotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCi0KLSAgICAjIHRoZSBtZXRob2QgbmFtZSBjaGFuZ2VkLCBidXQgd2UgcHJvdmlkZSBhbHNvIHRoZSBvbGQgb25lLCBmb3IgY29tcGF0aWJpbGl0eQotICAgIHRvX2ludGVncmFsID0gdG9faW50ZWdyYWxfdmFsdWUKLQotICAgIGRlZiBzcXJ0KHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygc2VsZi4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5fc2lnbiA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICAjIGV4cG9uZW50ID0gc2VsZi5fZXhwIC8vIDIuICBzcXJ0KC0wKSA9IC0wCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgc2VsZi5fZXhwIC8vIDIpCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NxcnQoLXgpLCB4ID4gMCcpCi0KLSAgICAgICAgIyBBdCB0aGlzIHBvaW50IHNlbGYgcmVwcmVzZW50cyBhIHBvc2l0aXZlIG51bWJlci4gIExldCBwIGJlCi0gICAgICAgICMgdGhlIGRlc2lyZWQgcHJlY2lzaW9uIGFuZCBleHByZXNzIHNlbGYgaW4gdGhlIGZvcm0gYyoxMDAqKmUKLSAgICAgICAgIyB3aXRoIGMgYSBwb3NpdGl2ZSByZWFsIG51bWJlciBhbmQgZSBhbiBpbnRlZ2VyLCBjIGFuZCBlCi0gICAgICAgICMgYmVpbmcgY2hvc2VuIHNvIHRoYXQgMTAwKioocC0xKSA8PSBjIDwgMTAwKipwLiAgVGhlbiB0aGUKLSAgICAgICAgIyAoZXhhY3QpIHNxdWFyZSByb290IG9mIHNlbGYgaXMgc3FydChjKSoxMCoqZSwgYW5kIDEwKioocC0xKQotICAgICAgICAjIDw9IHNxcnQoYykgPCAxMCoqcCwgc28gdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBEZWNpbWFsIGF0Ci0gICAgICAgICMgcHJlY2lzaW9uIHAgaXMgbioxMCoqZSB3aGVyZSBuID0gcm91bmRfaGFsZl9ldmVuKHNxcnQoYykpLAotICAgICAgICAjIHRoZSBjbG9zZXN0IGludGVnZXIgdG8gc3FydChjKSB3aXRoIHRoZSBldmVuIGludGVnZXIgY2hvc2VuCi0gICAgICAgICMgaW4gdGhlIGNhc2Ugb2YgYSB0aWUuCi0gICAgICAgICMKLSAgICAgICAgIyBUbyBlbnN1cmUgY29ycmVjdCByb3VuZGluZyBpbiBhbGwgY2FzZXMsIHdlIHVzZSB0aGUKLSAgICAgICAgIyBmb2xsb3dpbmcgdHJpY2s6IHdlIGNvbXB1dGUgdGhlIHNxdWFyZSByb290IHRvIGFuIGV4dHJhCi0gICAgICAgICMgcGxhY2UgKHByZWNpc2lvbiBwKzEgaW5zdGVhZCBvZiBwcmVjaXNpb24gcCksIHJvdW5kaW5nIGRvd24uCi0gICAgICAgICMgVGhlbiwgaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCBpdHMgbGFzdCBkaWdpdCBpcyAwIG9yIDUsCi0gICAgICAgICMgd2UgaW5jcmVhc2UgdGhlIGxhc3QgZGlnaXQgdG8gMSBvciA2IHJlc3BlY3RpdmVseTsgaWYgaXQncwotICAgICAgICAjIGV4YWN0IHdlIGxlYXZlIHRoZSBsYXN0IGRpZ2l0IGFsb25lLiAgTm93IHRoZSBmaW5hbCByb3VuZCB0bwotICAgICAgICAjIHAgcGxhY2VzIChvciBmZXdlciBpbiB0aGUgY2FzZSBvZiB1bmRlcmZsb3cpIHdpbGwgcm91bmQKLSAgICAgICAgIyBjb3JyZWN0bHkgYW5kIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBmbGFncy4KLQotICAgICAgICAjIHVzZSBhbiBleHRyYSBkaWdpdCBvZiBwcmVjaXNpb24KLSAgICAgICAgcHJlYyA9IGNvbnRleHQucHJlYysxCi0KLSAgICAgICAgIyB3cml0ZSBhcmd1bWVudCBpbiB0aGUgZm9ybSBjKjEwMCoqZSB3aGVyZSBlID0gc2VsZi5fZXhwLy8yCi0gICAgICAgICMgaXMgdGhlICdpZGVhbCcgZXhwb25lbnQsIHRvIGJlIHVzZWQgaWYgdGhlIHNxdWFyZSByb290IGlzCi0gICAgICAgICMgZXhhY3RseSByZXByZXNlbnRhYmxlLiAgbCBpcyB0aGUgbnVtYmVyIG9mICdkaWdpdHMnIG9mIGMgaW4KLSAgICAgICAgIyBiYXNlIDEwMCwgc28gdGhhdCAxMDAqKihsLTEpIDw9IGMgPCAxMDAqKmwuCi0gICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgZSA9IG9wLmV4cCA+PiAxCi0gICAgICAgIGlmIG9wLmV4cCAmIDE6Ci0gICAgICAgICAgICBjID0gb3AuaW50ICogMTAKLSAgICAgICAgICAgIGwgPSAobGVuKHNlbGYuX2ludCkgPj4gMSkgKyAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjID0gb3AuaW50Ci0gICAgICAgICAgICBsID0gbGVuKHNlbGYuX2ludCkrMSA+PiAxCi0KLSAgICAgICAgIyByZXNjYWxlIHNvIHRoYXQgYyBoYXMgZXhhY3RseSBwcmVjIGJhc2UgMTAwICdkaWdpdHMnCi0gICAgICAgIHNoaWZ0ID0gcHJlYy1sCi0gICAgICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgICAgICBjICo9IDEwMCoqc2hpZnQKLSAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYywgcmVtYWluZGVyID0gZGl2bW9kKGMsIDEwMCoqLXNoaWZ0KQotICAgICAgICAgICAgZXhhY3QgPSBub3QgcmVtYWluZGVyCi0gICAgICAgIGUgLT0gc2hpZnQKLQotICAgICAgICAjIGZpbmQgbiA9IGZsb29yKHNxcnQoYykpIHVzaW5nIE5ld3RvbidzIG1ldGhvZAotICAgICAgICBuID0gMTAqKnByZWMKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHEgPSBjLy9uCi0gICAgICAgICAgICBpZiBuIDw9IHE6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbiA9IG4gKyBxID4+IDEKLSAgICAgICAgZXhhY3QgPSBleGFjdCBhbmQgbipuID09IGMKLQotICAgICAgICBpZiBleGFjdDoKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIGV4YWN0OyByZXNjYWxlIHRvIHVzZSBpZGVhbCBleHBvbmVudCBlCi0gICAgICAgICAgICBpZiBzaGlmdCA+PSAwOgotICAgICAgICAgICAgICAgICMgYXNzZXJ0IG4gJSAxMCoqc2hpZnQgPT0gMAotICAgICAgICAgICAgICAgIG4gLy89IDEwKipzaGlmdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuICo9IDEwKiotc2hpZnQKLSAgICAgICAgICAgIGUgKz0gc2hpZnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgZml4IGxhc3QgZGlnaXQgYXMgZGVzY3JpYmVkIGFib3ZlCi0gICAgICAgICAgICBpZiBuICUgNSA9PSAwOgotICAgICAgICAgICAgICAgIG4gKz0gMQotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyKG4pLCBlKQotCi0gICAgICAgICMgcm91bmQsIGFuZCBmaXQgdG8gY3VycmVudCBjb250ZXh0Ci0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCi0gICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZwotCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBtYXgoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlciB2YWx1ZS4KLQotICAgICAgICBMaWtlIG1heChzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKLSAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgYyA9PSAwOgotICAgICAgICAgICAgIyBJZiBib3RoIG9wZXJhbmRzIGFyZSBmaW5pdGUgYW5kIGVxdWFsIGluIG51bWVyaWNhbCB2YWx1ZQotICAgICAgICAgICAgIyB0aGVuIGFuIG9yZGVyaW5nIGlzIGFwcGxpZWQ6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIElmIHRoZSBzaWducyBkaWZmZXIgdGhlbiBtYXggcmV0dXJucyB0aGUgb3BlcmFuZCB3aXRoIHRoZQotICAgICAgICAgICAgIyBwb3NpdGl2ZSBzaWduIGFuZCBtaW4gcmV0dXJucyB0aGUgb3BlcmFuZCB3aXRoIHRoZSBuZWdhdGl2ZSBzaWduCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIElmIHRoZSBzaWducyBhcmUgdGhlIHNhbWUgdGhlbiB0aGUgZXhwb25lbnQgaXMgdXNlZCB0byBzZWxlY3QKLSAgICAgICAgICAgICMgdGhlIHJlc3VsdC4gIFRoaXMgaXMgZXhhY3RseSB0aGUgb3JkZXJpbmcgdXNlZCBpbiBjb21wYXJlX3RvdGFsLgotICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKLQotICAgICAgICBpZiBjID09IC0xOgotICAgICAgICAgICAgYW5zID0gb3RoZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IHNlbGYKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBtaW4oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXIgdmFsdWUuCi0KLSAgICAgICAgTGlrZSBtaW4oc2VsZiwgb3RoZXIpIGV4Y2VwdCBpZiBvbmUgaXMgbm90IGEgbnVtYmVyLCByZXR1cm5zCi0gICAgICAgIE5hTiAoYW5kIHNpZ25hbHMgaWYgb25lIGlzIHNOYU4pLiAgQWxzbyByb3VuZHMuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQotICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCi0gICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKLSAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKLSAgICAgICAgICAgIGlmIHNuIG9yIG9uOgotICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotCi0gICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCi0gICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCi0KLSAgICAgICAgaWYgYyA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IG90aGVyCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX2lzaW50ZWdlcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHNlbGYgaXMgYW4gaW50ZWdlciIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmVzdCA9IHNlbGYuX2ludFtzZWxmLl9leHA6XQotICAgICAgICByZXR1cm4gcmVzdCA9PSAnMCcqbGVuKHJlc3QpCi0KLSAgICBkZWYgX2lzZXZlbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHNlbGYgaXMgZXZlbi4gIEFzc3VtZXMgc2VsZiBpcyBhbiBpbnRlZ2VyLiIiIgotICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmLl9leHAgPiAwOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ludFstMStzZWxmLl9leHBdIGluICcwMjQ2OCcKLQotICAgIGRlZiBhZGp1c3RlZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKLSAgICAgICAgIyBJZiBOYU4gb3IgSW5maW5pdHksIHNlbGYuX2V4cCBpcyBzdHJpbmcKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgY2Fub25pY2FsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBzYW1lIERlY2ltYWwgb2JqZWN0LgotCi0gICAgICAgIEFzIHdlIGRvIG5vdCBoYXZlIGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBzYW1lIG51bWJlciwgdGhlCi0gICAgICAgIHJlY2VpdmVkIG9iamVjdCBhbHJlYWR5IGlzIGluIGl0cyBjYW5vbmljYWwgZm9ybS4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgY29tcGFyZV9zaWduYWwoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gdGhlIG90aGVyIG9wZXJhbmQgbnVtZXJpY2FsbHkuCi0KLSAgICAgICAgSXQncyBwcmV0dHkgbXVjaCBsaWtlIGNvbXBhcmUoKSwgYnV0IGFsbCBOYU5zIHNpZ25hbCwgd2l0aCBzaWduYWxpbmcKLSAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0ID0gVHJ1ZSkKLSAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgIHJldHVybiBzZWxmLmNvbXBhcmUob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIHRoZSBhYnN0cmFjdCByZXByZXNlbnRhdGlvbnMuCi0KLSAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbAotICAgICAgICB2YWx1ZS4gTm90ZSB0aGF0IGEgdG90YWwgb3JkZXJpbmcgaXMgZGVmaW5lZCBmb3IgYWxsIHBvc3NpYmxlIGFic3RyYWN0Ci0gICAgICAgIHJlcHJlc2VudGF0aW9ucy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICAjIGlmIG9uZSBpcyBuZWdhdGl2ZSBhbmQgdGhlIG90aGVyIGlzIHBvc2l0aXZlLCBpdCdzIGVhc3kKLSAgICAgICAgaWYgc2VsZi5fc2lnbiBhbmQgbm90IG90aGVyLl9zaWduOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbiBhbmQgb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICBzaWduID0gc2VsZi5fc2lnbgotCi0gICAgICAgICMgbGV0J3MgaGFuZGxlIGJvdGggTmFOIHR5cGVzCi0gICAgICAgIHNlbGZfbmFuID0gc2VsZi5faXNuYW4oKQotICAgICAgICBvdGhlcl9uYW4gPSBvdGhlci5faXNuYW4oKQotICAgICAgICBpZiBzZWxmX25hbiBvciBvdGhlcl9uYW46Ci0gICAgICAgICAgICBpZiBzZWxmX25hbiA9PSBvdGhlcl9uYW46Ci0gICAgICAgICAgICAgICAgIyBjb21wYXJlIHBheWxvYWRzIGFzIHRob3VnaCB0aGV5J3JlIGludGVnZXJzCi0gICAgICAgICAgICAgICAgc2VsZl9rZXkgPSBsZW4oc2VsZi5faW50KSwgc2VsZi5faW50Ci0gICAgICAgICAgICAgICAgb3RoZXJfa2V5ID0gbGVuKG90aGVyLl9pbnQpLCBvdGhlci5faW50Ci0gICAgICAgICAgICAgICAgaWYgc2VsZl9rZXkgPCBvdGhlcl9rZXk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgICAgIGlmIHNlbGZfa2V5ID4gb3RoZXJfa2V5OgotICAgICAgICAgICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gX1plcm8KLQotICAgICAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotCi0gICAgICAgIGlmIHNlbGYgPCBvdGhlcjoKLSAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgaWYgc2VsZiA+IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuIF9PbmUKLQotICAgICAgICBpZiBzZWxmLl9leHAgPCBvdGhlci5fZXhwOgotICAgICAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+IG90aGVyLl9leHA6Ci0gICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgcmV0dXJuIF9aZXJvCi0KLQotICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byBvdGhlciB1c2luZyBhYnN0cmFjdCByZXByLiwgaWdub3Jpbmcgc2lnbi4KLQotICAgICAgICBMaWtlIGNvbXBhcmVfdG90YWwsIGJ1dCB3aXRoIG9wZXJhbmQncyBzaWduIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBzID0gc2VsZi5jb3B5X2FicygpCi0gICAgICAgIG8gPSBvdGhlci5jb3B5X2FicygpCi0gICAgICAgIHJldHVybiBzLmNvbXBhcmVfdG90YWwobykKLQotICAgIGRlZiBjb3B5X2FicyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4gIiIiCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQotCi0gICAgZGVmIGNvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIGludmVydGVkLiIiIgotICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgxLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKLQotICAgIGRlZiBjb3B5X3NpZ24oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgc2VsZiB3aXRoIHRoZSBzaWduIG9mIG90aGVyLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKG90aGVyLl9zaWduLCBzZWxmLl9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKLQotICAgIGRlZiBleHAoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBlICoqIHNlbGYuIiIiCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgZXhwKE5hTikgPSBOYU4KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGV4cCgtSW5maW5pdHkpID0gMAotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gX1plcm8KLQotICAgICAgICAjIGV4cCgwKSA9IDEKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gX09uZQotCi0gICAgICAgICMgZXhwKEluZmluaXR5KSA9IEluZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIHRoZSByZXN1bHQgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgaW5leGFjdCAodGhlIHRydWUKLSAgICAgICAgIyBtYXRoZW1hdGljYWwgcmVzdWx0IGlzIHRyYW5zY2VuZGVudGFsKS4gVGhlcmUncyBubyBuZWVkIHRvCi0gICAgICAgICMgcmFpc2UgUm91bmRlZCBhbmQgSW5leGFjdCBoZXJlLS0tdGhleSdsbCBhbHdheXMgYmUgcmFpc2VkIGFzCi0gICAgICAgICMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gX2ZpeC4KLSAgICAgICAgcCA9IGNvbnRleHQucHJlYwotICAgICAgICBhZGogPSBzZWxmLmFkanVzdGVkKCkKLQotICAgICAgICAjIHdlIG9ubHkgbmVlZCB0byBkbyBhbnkgY29tcHV0YXRpb24gZm9yIHF1aXRlIGEgc21hbGwgcmFuZ2UKLSAgICAgICAgIyBvZiBhZGp1c3RlZCBleHBvbmVudHMtLS1mb3IgZXhhbXBsZSwgLTI5IDw9IGFkaiA8PSAxMCBmb3IKLSAgICAgICAgIyB0aGUgZGVmYXVsdCBjb250ZXh0LiAgRm9yIHNtYWxsZXIgZXhwb25lbnQgdGhlIHJlc3VsdCBpcwotICAgICAgICAjIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gMSBhdCB0aGUgZ2l2ZW4gcHJlY2lzaW9uLCB3aGlsZSBmb3IKLSAgICAgICAgIyBsYXJnZXIgZXhwb25lbnQgdGhlIHJlc3VsdCBlaXRoZXIgb3ZlcmZsb3dzIG9yIHVuZGVyZmxvd3MuCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMCBhbmQgYWRqID4gbGVuKHN0cigoY29udGV4dC5FbWF4KzEpKjMpKToKLSAgICAgICAgICAgICMgb3ZlcmZsb3cKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkVtYXgrMSkKLSAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDEgYW5kIGFkaiA+IGxlbihzdHIoKC1jb250ZXh0LkV0aW55KCkrMSkqMykpOgotICAgICAgICAgICAgIyB1bmRlcmZsb3cgdG8gMAotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKQotICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMCBhbmQgYWRqIDwgLXA6Ci0gICAgICAgICAgICAjIHArMSBkaWdpdHM7IGZpbmFsIHJvdW5kIHdpbGwgcmFpc2UgY29ycmVjdCBmbGFncwotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScgKyAnMCcqKHAtMSkgKyAnMScsIC1wKQotICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMSBhbmQgYWRqIDwgLXAtMToKLSAgICAgICAgICAgICMgcCsxIGRpZ2l0czsgZmluYWwgcm91bmQgd2lsbCByYWlzZSBjb3JyZWN0IGZsYWdzCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICc5JyoocCsxKSwgLXAtMSkKLSAgICAgICAgIyBnZW5lcmFsIGNhc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICAgICAgaWYgb3Auc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIGMgPSAtYwotCi0gICAgICAgICAgICAjIGNvbXB1dGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiBpbmNyZWFzZSBwcmVjaXNpb24gYnkKLSAgICAgICAgICAgICMgMyBkaWdpdHMgYXQgYSB0aW1lIHVudGlsIHdlIGdldCBhbiB1bmFtYmlndW91c2x5Ci0gICAgICAgICAgICAjIHJvdW5kYWJsZSByZXN1bHQKLSAgICAgICAgICAgIGV4dHJhID0gMwotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBjb2VmZiwgZXhwID0gX2RleHAoYywgZSwgcCtleHRyYSkKLSAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihjb2VmZikpLXAtMSkpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKLQotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIoY29lZmYpLCBleHApCi0KLSAgICAgICAgIyBhdCB0aGlzIHN0YWdlLCBhbnMgc2hvdWxkIHJvdW5kIGNvcnJlY3RseSB3aXRoICphbnkqCi0gICAgICAgICMgcm91bmRpbmcgbW9kZSwgbm90IGp1c3Qgd2l0aCBST1VORF9IQUxGX0VWRU4KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0KLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIGlzX2Nhbm9uaWNhbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBjYW5vbmljYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cwotICAgICAgICBjYW5vbmljYWwsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMgVHJ1ZSBmb3IgYW55IERlY2ltYWwuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIGlzX2Zpbml0ZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBmaW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKLSAgICAgICAgaW5maW5pdGUgbm9yIGEgTmFOLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9pc19zcGVjaWFsCi0KLSAgICBkZWYgaXNfaW5maW5pdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgaW5maW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ0YnCi0KLSAgICBkZWYgaXNfbmFuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgcU5hTiBvciBzTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZXhwIGluICgnbicsICdOJykKLQotICAgIGRlZiBpc19ub3JtYWwoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIG5vcm1hbCBudW1iZXI7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICByZXR1cm4gY29udGV4dC5FbWluIDw9IHNlbGYuYWRqdXN0ZWQoKQotCi0gICAgZGVmIGlzX3FuYW4oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxdWlldCBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ24nCi0KLSAgICBkZWYgaXNfc2lnbmVkKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fc2lnbiA9PSAxCi0KLSAgICBkZWYgaXNfc25hbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHNpZ25hbGluZyBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ04nCi0KLSAgICBkZWYgaXNfc3Vibm9ybWFsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgc3Vibm9ybWFsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbgotCi0gICAgZGVmIGlzX3plcm8oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX2lzX3NwZWNpYWwgYW5kIHNlbGYuX2ludCA9PSAnMCcKLQotICAgIGRlZiBfbG5fZXhwX2JvdW5kKHNlbGYpOgotICAgICAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxuKCkuCi0gICAgICAgIEluIG90aGVyIHdvcmRzLCBjb21wdXRlIHIgc3VjaCB0aGF0IHNlbGYubG4oKSA+PSAxMCoqci4gIEFzc3VtZXMKLSAgICAgICAgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgotICAgICAgICAiIiIKLQotICAgICAgICAjIGZvciAwLjEgPD0geCA8PSAxMCB3ZSB1c2UgdGhlIGluZXF1YWxpdGllcyAxLTEveCA8PSBsbih4KSA8PSB4LTEKLSAgICAgICAgYWRqID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCi0gICAgICAgIGlmIGFkaiA+PSAxOgotICAgICAgICAgICAgIyBhcmd1bWVudCA+PSAxMDsgd2UgdXNlIDIzLzEwID0gMi4zIGFzIGEgbG93ZXIgYm91bmQgZm9yIGxuKDEwKQotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoYWRqKjIzLy8xMCkpIC0gMQotICAgICAgICBpZiBhZGogPD0gLTI6Ci0gICAgICAgICAgICAjIGFyZ3VtZW50IDw9IDAuMQotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoKC0xLWFkaikqMjMvLzEwKSkgLSAxCi0gICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgIGlmIGFkaiA9PSAwOgotICAgICAgICAgICAgIyAxIDwgc2VsZiA8IDEwCi0gICAgICAgICAgICBudW0gPSBzdHIoYy0xMCoqLWUpCi0gICAgICAgICAgICBkZW4gPSBzdHIoYykKLSAgICAgICAgICAgIHJldHVybiBsZW4obnVtKSAtIGxlbihkZW4pIC0gKG51bSA8IGRlbikKLSAgICAgICAgIyBhZGogPT0gLTEsIDAuMSA8PSBzZWxmIDwgMQotICAgICAgICByZXR1cm4gZSArIGxlbihzdHIoMTAqKi1lIC0gYykpIC0gMQotCi0KLSAgICBkZWYgbG4oc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2Ygc2VsZi4iIiIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgIyBsbihOYU4pID0gTmFOCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgIyBsbigwLjApID09IC1JbmZpbml0eQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQotCi0gICAgICAgICMgbG4oSW5maW5pdHkpID0gSW5maW5pdHkKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gX0luZmluaXR5Ci0KLSAgICAgICAgIyBsbigxLjApID09IDAuMAotICAgICAgICBpZiBzZWxmID09IF9PbmU6Ci0gICAgICAgICAgICByZXR1cm4gX1plcm8KLQotICAgICAgICAjIGxuKG5lZ2F0aXZlKSByYWlzZXMgSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG4gb2YgYSBuZWdhdGl2ZSB2YWx1ZScpCi0KLSAgICAgICAgIyByZXN1bHQgaXMgaXJyYXRpb25hbCwgc28gbmVjZXNzYXJpbHkgaW5leGFjdAotICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICBwID0gY29udGV4dC5wcmVjCi0KLSAgICAgICAgIyBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IHJlcGVhdGVkbHkgaW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDMKLSAgICAgICAgIyB1bnRpbCB3ZSBnZXQgYW4gdW5hbWJpZ3VvdXNseSByb3VuZGFibGUgcmVzdWx0Ci0gICAgICAgIHBsYWNlcyA9IHAgLSBzZWxmLl9sbl9leHBfYm91bmQoKSArIDIgIyBhdCBsZWFzdCBwKzMgcGxhY2VzCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjb2VmZiA9IF9kbG9nKGMsIGUsIHBsYWNlcykKLSAgICAgICAgICAgICMgYXNzZXJ0IGxlbihzdHIoYWJzKGNvZWZmKSkpLXAgPj0gMQotICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoYWJzKGNvZWZmKSkpLXAtMSkpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwbGFjZXMgKz0gMwotICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGludChjb2VmZjwwKSwgc3RyKGFicyhjb2VmZikpLCAtcGxhY2VzKQotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCi0gICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZwotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgX2xvZzEwX2V4cF9ib3VuZChzZWxmKToKLSAgICAgICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZi5sb2cxMCgpLgotICAgICAgICBJbiBvdGhlciB3b3JkcywgZmluZCByIHN1Y2ggdGhhdCBzZWxmLmxvZzEwKCkgPj0gMTAqKnIuCi0gICAgICAgIEFzc3VtZXMgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgotICAgICAgICAiIiIKLQotICAgICAgICAjIEZvciB4ID49IDEwIG9yIHggPCAwLjEgd2Ugb25seSBuZWVkIGEgYm91bmQgb24gdGhlIGludGVnZXIKLSAgICAgICAgIyBwYXJ0IG9mIGxvZzEwKHNlbGYpLCBhbmQgdGhpcyBjb21lcyBkaXJlY3RseSBmcm9tIHRoZQotICAgICAgICAjIGV4cG9uZW50IG9mIHguICBGb3IgMC4xIDw9IHggPD0gMTAgd2UgdXNlIHRoZSBpbmVxdWFsaXRpZXMKLSAgICAgICAgIyAxLTEveCA8PSBsb2coeCkgPD0geC0xLiBJZiB4ID4gMSB3ZSBoYXZlIHxsb2cxMCh4KXwgPgotICAgICAgICAjICgxLTEveCkvMi4zMSA+IDAuICBJZiB4IDwgMSB0aGVuIHxsb2cxMCh4KXwgPiAoMS14KS8yLjMxID4gMAotCi0gICAgICAgIGFkaiA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQotICAgICAgICBpZiBhZGogPj0gMToKLSAgICAgICAgICAgICMgc2VsZiA+PSAxMAotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoYWRqKSktMQotICAgICAgICBpZiBhZGogPD0gLTI6Ci0gICAgICAgICAgICAjIHNlbGYgPCAwLjEKLSAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKC0xLWFkaikpLTEKLSAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKLSAgICAgICAgaWYgYWRqID09IDA6Ci0gICAgICAgICAgICAjIDEgPCBzZWxmIDwgMTAKLSAgICAgICAgICAgIG51bSA9IHN0cihjLTEwKiotZSkKLSAgICAgICAgICAgIGRlbiA9IHN0cigyMzEqYykKLSAgICAgICAgICAgIHJldHVybiBsZW4obnVtKSAtIGxlbihkZW4pIC0gKG51bSA8IGRlbikgKyAyCi0gICAgICAgICMgYWRqID09IC0xLCAwLjEgPD0gc2VsZiA8IDEKLSAgICAgICAgbnVtID0gc3RyKDEwKiotZS1jKQotICAgICAgICByZXR1cm4gbGVuKG51bSkgKyBlIC0gKG51bSA8ICIyMzEiKSAtIDEKLQotICAgIGRlZiBsb2cxMChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiBzZWxmLiIiIgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGxvZzEwKE5hTikgPSBOYU4KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGxvZzEwKDAuMCkgPT0gLUluZmluaXR5Ci0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5Ci0KLSAgICAgICAgIyBsb2cxMChJbmZpbml0eSkgPSBJbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKLQotICAgICAgICAjIGxvZzEwKG5lZ2F0aXZlIG9yIC1JbmZpbml0eSkgcmFpc2VzIEludmFsaWRPcGVyYXRpb24KLSAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZzEwIG9mIGEgbmVnYXRpdmUgdmFsdWUnKQotCi0gICAgICAgICMgbG9nMTAoMTAqKm4pID0gbgotICAgICAgICBpZiBzZWxmLl9pbnRbMF0gPT0gJzEnIGFuZCBzZWxmLl9pbnRbMTpdID09ICcwJyoobGVuKHNlbGYuX2ludCkgLSAxKToKLSAgICAgICAgICAgICMgYW5zd2VyIG1heSBuZWVkIHJvdW5kaW5nCi0gICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIGlycmF0aW9uYWwsIHNvIG5lY2Vzc2FyaWx5IGluZXhhY3QKLSAgICAgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICAgICAgcCA9IGNvbnRleHQucHJlYwotCi0gICAgICAgICAgICAjIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogcmVwZWF0ZWRseSBpbmNyZWFzZSBwcmVjaXNpb24KLSAgICAgICAgICAgICMgdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCi0gICAgICAgICAgICBwbGFjZXMgPSBwLXNlbGYuX2xvZzEwX2V4cF9ib3VuZCgpKzIKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgY29lZmYgPSBfZGxvZzEwKGMsIGUsIHBsYWNlcykKLSAgICAgICAgICAgICAgICAjIGFzc2VydCBsZW4oc3RyKGFicyhjb2VmZikpKS1wID49IDEKLSAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihhYnMoY29lZmYpKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgcGxhY2VzICs9IDMKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoaW50KGNvZWZmPDApLCBzdHIoYWJzKGNvZWZmKSksIC1wbGFjZXMpCi0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBsb2diKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIiBSZXR1cm5zIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHNlbGYncyBNU0QuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQotICAgICAgICBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBzZWxmIChhcyB0aG91Z2ggaXQgd2VyZSB0cnVuY2F0ZWQKLSAgICAgICAgdG8gYSBzaW5nbGUgZGlnaXQgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHZhbHVlIG9mIHRoYXQgZGlnaXQgYW5kCi0gICAgICAgIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCi0gICAgICAgICIiIgotICAgICAgICAjIGxvZ2IoTmFOKSA9IE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGxvZ2IoKy8tSW5mKSA9ICtJbmYKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQotCi0gICAgICAgICMgbG9nYigwKSA9IC1JbmYsIERpdmlzaW9uQnlaZXJvCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAnbG9nYigwKScsIDEpCi0KLSAgICAgICAgIyBvdGhlcndpc2UsIHNpbXBseSByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYsIGFzIGEKLSAgICAgICAgIyBEZWNpbWFsLiAgTm90ZSB0aGF0IG5vIGF0dGVtcHQgaXMgbWFkZSB0byBmaXQgdGhlIHJlc3VsdAotICAgICAgICAjIGludG8gdGhlIGN1cnJlbnQgY29udGV4dC4KLSAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmLmFkanVzdGVkKCkpCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9pc2xvZ2ljYWwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBsb2dpY2FsIG9wZXJhbmQuCi0KLSAgICAgICAgRm9yIGJlaW5nIGxvZ2ljYWwsIGl0IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIHdpdGggYSBzaWduIG9mIDAsCi0gICAgICAgIGFuIGV4cG9uZW50IG9mIDAsIGFuZCBhIGNvZWZmaWNpZW50IHdob3NlIGRpZ2l0cyBtdXN0IGFsbCBiZQotICAgICAgICBlaXRoZXIgMCBvciAxLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5fc2lnbiAhPSAwIG9yIHNlbGYuX2V4cCAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGZvciBkaWcgaW4gc2VsZi5faW50OgotICAgICAgICAgICAgaWYgZGlnIG5vdCBpbiAnMDEnOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9maWxsX2xvZ2ljYWwoc2VsZiwgY29udGV4dCwgb3BhLCBvcGIpOgotICAgICAgICBkaWYgPSBjb250ZXh0LnByZWMgLSBsZW4ob3BhKQotICAgICAgICBpZiBkaWYgPiAwOgotICAgICAgICAgICAgb3BhID0gJzAnKmRpZiArIG9wYQotICAgICAgICBlbGlmIGRpZiA8IDA6Ci0gICAgICAgICAgICBvcGEgPSBvcGFbLWNvbnRleHQucHJlYzpdCi0gICAgICAgIGRpZiA9IGNvbnRleHQucHJlYyAtIGxlbihvcGIpCi0gICAgICAgIGlmIGRpZiA+IDA6Ci0gICAgICAgICAgICBvcGIgPSAnMCcqZGlmICsgb3BiCi0gICAgICAgIGVsaWYgZGlmIDwgMDoKLSAgICAgICAgICAgIG9wYiA9IG9wYlstY29udGV4dC5wcmVjOl0KLSAgICAgICAgcmV0dXJuIG9wYSwgb3BiCi0KLSAgICBkZWYgbG9naWNhbF9hbmQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkFwcGxpZXMgYW4gJ2FuZCcgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLQotICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCi0gICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQotCi0gICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCi0gICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSkmaW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCi0KLSAgICBkZWYgbG9naWNhbF9pbnZlcnQoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiSW52ZXJ0IGFsbCBpdHMgZGlnaXRzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHJldHVybiBzZWxmLmxvZ2ljYWxfeG9yKF9kZWNfZnJvbV90cmlwbGUoMCwnMScqY29udGV4dC5wcmVjLDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQotCi0gICAgZGVmIGxvZ2ljYWxfb3Ioc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkFwcGxpZXMgYW4gJ29yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKLSAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCi0KLSAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKLSAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKXxpbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKLQotICAgIGRlZiBsb2dpY2FsX3hvcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQXBwbGllcyBhbiAneG9yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKLSAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCi0KLSAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKLSAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKV5pbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKLQotICAgIGRlZiBtYXhfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQotICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCi0gICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKLSAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKLSAgICAgICAgICAgIGlmIHNuIG9yIG9uOgotICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotCi0gICAgICAgIGMgPSBzZWxmLmNvcHlfYWJzKCkuX2NtcChvdGhlci5jb3B5X2FicygpKQotICAgICAgICBpZiBjID09IDA6Ci0gICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQotCi0gICAgICAgIGlmIGMgPT0gLTE6Ci0gICAgICAgICAgICBhbnMgPSBvdGhlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZgotCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIG1pbl9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuY29weV9hYnMoKS5fY21wKG90aGVyLmNvcHlfYWJzKCkpCi0gICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCi0KLSAgICAgICAgaWYgYyA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IG90aGVyCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgbmV4dF9taW51cyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBpdHNlbGYuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICc5Jypjb250ZXh0LnByZWMsIGNvbnRleHQuRXRvcCgpKQotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfRkxPT1IpCi0gICAgICAgIGNvbnRleHQuX2lnbm9yZV9hbGxfZmxhZ3MoKQotICAgICAgICBuZXdfc2VsZiA9IHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICBpZiBuZXdfc2VsZiAhPSBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIG5ld19zZWxmCi0gICAgICAgIHJldHVybiBzZWxmLl9fc3ViX18oX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQotCi0gICAgZGVmIG5leHRfcGx1cyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBpdHNlbGYuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgxLCAnOScqY29udGV4dC5wcmVjLCBjb250ZXh0LkV0b3AoKSkKLQotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKLSAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0NFSUxJTkcpCi0gICAgICAgIGNvbnRleHQuX2lnbm9yZV9hbGxfZmxhZ3MoKQotICAgICAgICBuZXdfc2VsZiA9IHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICBpZiBuZXdfc2VsZiAhPSBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIG5ld19zZWxmCi0gICAgICAgIHJldHVybiBzZWxmLl9fYWRkX18oX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQotCi0gICAgZGVmIG5leHRfdG93YXJkKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBzZWxmLCBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIG51bWJlciB0byBzZWxmCi0gICAgICAgIChleGNsdWRpbmcgc2VsZikgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIsCi0gICAgICAgIHVubGVzcyBib3RoIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZQotICAgICAgICBudW1lcmljYWxseSBlcXVhbCwgdGhlbiB0aGUgcmVzdWx0IGlzIGEgY29weSBvZiBzZWxmIHdpdGggdGhlCi0gICAgICAgIHNpZ24gc2V0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIG90aGVyLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgY29tcGFyaXNvbiA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgY29tcGFyaXNvbiA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9zaWduKG90aGVyKQotCi0gICAgICAgIGlmIGNvbXBhcmlzb24gPT0gLTE6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLm5leHRfcGx1cyhjb250ZXh0KQotICAgICAgICBlbHNlOiAjIGNvbXBhcmlzb24gPT0gMQotICAgICAgICAgICAgYW5zID0gc2VsZi5uZXh0X21pbnVzKGNvbnRleHQpCi0KLSAgICAgICAgIyBkZWNpZGUgd2hpY2ggZmxhZ3MgdG8gcmFpc2UgdXNpbmcgdmFsdWUgb2YgYW5zCi0gICAgICAgIGlmIGFucy5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5maW5pdGUgcmVzdWx0IGZyb20gbmV4dF90b3dhcmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9zaWduKQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgIGVsaWYgYW5zLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW46Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihVbmRlcmZsb3cpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgICMgaWYgcHJlY2lzaW9uID09IDEgdGhlbiB3ZSBkb24ndCByYWlzZSBDbGFtcGVkIGZvciBhCi0gICAgICAgICAgICAjIHJlc3VsdCAwRS1FdGlueS4KLSAgICAgICAgICAgIGlmIG5vdCBhbnM6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgbnVtYmVyX2NsYXNzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2Ygc2VsZi4KLQotICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKLSAgICAgICAgICBzTmFOCi0gICAgICAgICAgTmFOCi0gICAgICAgICAgLUluZmluaXR5Ci0gICAgICAgICAgLU5vcm1hbAotICAgICAgICAgIC1TdWJub3JtYWwKLSAgICAgICAgICAtWmVybwotICAgICAgICAgICtaZXJvCi0gICAgICAgICAgK1N1Ym5vcm1hbAotICAgICAgICAgICtOb3JtYWwKLSAgICAgICAgICArSW5maW5pdHkKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuaXNfc25hbigpOgotICAgICAgICAgICAgcmV0dXJuICJzTmFOIgotICAgICAgICBpZiBzZWxmLmlzX3FuYW4oKToKLSAgICAgICAgICAgIHJldHVybiAiTmFOIgotICAgICAgICBpbmYgPSBzZWxmLl9pc2luZmluaXR5KCkKLSAgICAgICAgaWYgaW5mID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gIitJbmZpbml0eSIKLSAgICAgICAgaWYgaW5mID09IC0xOgotICAgICAgICAgICAgcmV0dXJuICItSW5maW5pdHkiCi0gICAgICAgIGlmIHNlbGYuaXNfemVybygpOgotICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gIi1aZXJvIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIitaZXJvIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGlmIHNlbGYuaXNfc3Vibm9ybWFsKGNvbnRleHQ9Y29udGV4dCk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgIHJldHVybiAiLVN1Ym5vcm1hbCIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIrU3Vibm9ybWFsIgotICAgICAgICAjIGp1c3QgYSBub3JtYWwsIHJlZ3VsYXIsIGJvcmluZyBudW1iZXIsIDopCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gIi1Ob3JtYWwiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIitOb3JtYWwiCi0KLSAgICBkZWYgcmFkaXgoc2VsZik6Ci0gICAgICAgICIiIkp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KSIiIgotICAgICAgICByZXR1cm4gRGVjaW1hbCgxMCkKLQotICAgIGRlZiByb3RhdGUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYSByb3RhdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotICAgICAgICBpZiBub3QgKC1jb250ZXh0LnByZWMgPD0gaW50KG90aGVyKSA8PSBjb250ZXh0LnByZWMpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIGdldCB2YWx1ZXMsIHBhZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgdG9yb3QgPSBpbnQob3RoZXIpCi0gICAgICAgIHJvdGRpZyA9IHNlbGYuX2ludAotICAgICAgICB0b3BhZCA9IGNvbnRleHQucHJlYyAtIGxlbihyb3RkaWcpCi0gICAgICAgIGlmIHRvcGFkID4gMDoKLSAgICAgICAgICAgIHJvdGRpZyA9ICcwJyp0b3BhZCArIHJvdGRpZwotICAgICAgICBlbGlmIHRvcGFkIDwgMDoKLSAgICAgICAgICAgIHJvdGRpZyA9IHJvdGRpZ1stdG9wYWQ6XQotCi0gICAgICAgICMgbGV0J3Mgcm90YXRlIQotICAgICAgICByb3RhdGVkID0gcm90ZGlnW3Rvcm90Ol0gKyByb3RkaWdbOnRvcm90XQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGVkLmxzdHJpcCgnMCcpIG9yICcwJywgc2VsZi5fZXhwKQotCi0gICAgZGVmIHNjYWxlYihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBzZWxmIG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWUgdG8gaXRzIGV4cC4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0gICAgICAgIGxpbWluZiA9IC0yICogKGNvbnRleHQuRW1heCArIGNvbnRleHQucHJlYykKLSAgICAgICAgbGltc3VwID0gIDIgKiAoY29udGV4dC5FbWF4ICsgY29udGV4dC5wcmVjKQotICAgICAgICBpZiBub3QgKGxpbWluZiA8PSBpbnQob3RoZXIpIDw9IGxpbXN1cCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgIGQgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGYuX2ludCwgc2VsZi5fZXhwICsgaW50KG90aGVyKSkKLSAgICAgICAgZCA9IGQuX2ZpeChjb250ZXh0KQotICAgICAgICByZXR1cm4gZAotCi0gICAgZGVmIHNoaWZ0KHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGEgc2hpZnRlZCBjb3B5IG9mIHNlbGYsIHZhbHVlLW9mLW90aGVyIHRpbWVzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLSAgICAgICAgaWYgbm90ICgtY29udGV4dC5wcmVjIDw9IGludChvdGhlcikgPD0gY29udGV4dC5wcmVjKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgIyBnZXQgdmFsdWVzLCBwYWQgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIHRvcm90ID0gaW50KG90aGVyKQotICAgICAgICByb3RkaWcgPSBzZWxmLl9pbnQKLSAgICAgICAgdG9wYWQgPSBjb250ZXh0LnByZWMgLSBsZW4ocm90ZGlnKQotICAgICAgICBpZiB0b3BhZCA+IDA6Ci0gICAgICAgICAgICByb3RkaWcgPSAnMCcqdG9wYWQgKyByb3RkaWcKLSAgICAgICAgZWxpZiB0b3BhZCA8IDA6Ci0gICAgICAgICAgICByb3RkaWcgPSByb3RkaWdbLXRvcGFkOl0KLQotICAgICAgICAjIGxldCdzIHNoaWZ0IQotICAgICAgICBpZiB0b3JvdCA8IDA6Ci0gICAgICAgICAgICBzaGlmdGVkID0gcm90ZGlnWzp0b3JvdF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNoaWZ0ZWQgPSByb3RkaWcgKyAnMCcqdG9yb3QKLSAgICAgICAgICAgIHNoaWZ0ZWQgPSBzaGlmdGVkWy1jb250ZXh0LnByZWM6XQotCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdGVkLmxzdHJpcCgnMCcpIG9yICcwJywgc2VsZi5fZXhwKQotCi0gICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5Ci0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIChzdHIoc2VsZiksKSkKLQotICAgIGRlZiBfX2NvcHlfXyhzZWxmKToKLSAgICAgICAgaWYgdHlwZShzZWxmKSBpcyBEZWNpbWFsOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYgICAgICMgSSdtIGltbXV0YWJsZTsgdGhlcmVmb3JlIEkgYW0gbXkgb3duIGNsb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIoc2VsZikpCi0KLSAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW8pOgotICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIERlY2ltYWw6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZiAgICAgIyBNeSBjb21wb25lbnRzIGFyZSBhbHNvIGltbXV0YWJsZQotICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc3RyKHNlbGYpKQotCi0gICAgIyBQRVAgMzEwMSBzdXBwb3J0LiAgdGhlIF9sb2NhbGVjb252IGtleXdvcmQgYXJndW1lbnQgc2hvdWxkIGJlCi0gICAgIyBjb25zaWRlcmVkIHByaXZhdGU6IGl0J3MgcHJvdmlkZWQgZm9yIGVhc2Ugb2YgdGVzdGluZyBvbmx5LgotICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWNpZmllciwgY29udGV4dD1Ob25lLCBfbG9jYWxlY29udj1Ob25lKToKLSAgICAgICAgIiIiRm9ybWF0IGEgRGVjaW1hbCBpbnN0YW5jZSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHNwZWNpZmllci4KLQotICAgICAgICBUaGUgc3BlY2lmaWVyIHNob3VsZCBiZSBhIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIsIHdpdGggdGhlCi0gICAgICAgIGZvcm0gZGVzY3JpYmVkIGluIFBFUCAzMTAxLiAgRm9ybWF0dGluZyB0eXBlcyAnZScsICdFJywgJ2YnLAotICAgICAgICAnRicsICdnJywgJ0cnLCAnbicgYW5kICclJyBhcmUgc3VwcG9ydGVkLiAgSWYgdGhlIGZvcm1hdHRpbmcKLSAgICAgICAgdHlwZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvICdnJyBvciAnRycsIGRlcGVuZGluZyBvbiB0aGUKLSAgICAgICAgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBOb3RlOiBQRVAgMzEwMSBzYXlzIHRoYXQgaWYgdGhlIHR5cGUgaXMgbm90IHByZXNlbnQgdGhlbgotICAgICAgICAjIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCi0gICAgICAgICMgV2UgdGFrZSB0aGUgbGliZXJ0eSBvZiBpZ25vcmluZyB0aGlzIHJlcXVpcmVtZW50IGZvcgotICAgICAgICAjIERlY2ltYWwtLS1pdCdzIHByZXN1bWFibHkgdGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQKLSAgICAgICAgIyBmb3JtYXQoZmxvYXQsICcnKSBiZWhhdmVzIHNpbWlsYXJseSB0byBzdHIoZmxvYXQpLgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgc3BlYyA9IF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyKHNwZWNpZmllciwgX2xvY2FsZWNvbnY9X2xvY2FsZWNvbnYpCi0KLSAgICAgICAgIyBzcGVjaWFsIHZhbHVlcyBkb24ndCBjYXJlIGFib3V0IHRoZSB0eXBlIG9yIHByZWNpc2lvbgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgc2lnbiA9IF9mb3JtYXRfc2lnbihzZWxmLl9zaWduLCBzcGVjKQotICAgICAgICAgICAgYm9keSA9IHN0cihzZWxmLmNvcHlfYWJzKCkpCi0gICAgICAgICAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgotICAgICAgICAgICAgICAgIGJvZHkgKz0gJyUnCi0gICAgICAgICAgICByZXR1cm4gX2Zvcm1hdF9hbGlnbihzaWduLCBib2R5LCBzcGVjKQotCi0gICAgICAgICMgYSB0eXBlIG9mIE5vbmUgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIGNvbnRleHQKLSAgICAgICAgaWYgc3BlY1sndHlwZSddIGlzIE5vbmU6Ci0gICAgICAgICAgICBzcGVjWyd0eXBlJ10gPSBbJ2cnLCAnRyddW2NvbnRleHQuY2FwaXRhbHNdCi0KLSAgICAgICAgIyBpZiB0eXBlIGlzICclJywgYWRqdXN0IGV4cG9uZW50IG9mIHNlbGYgYWNjb3JkaW5nbHkKLSAgICAgICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKLSAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGYuX2ludCwgc2VsZi5fZXhwKzIpCi0KLSAgICAgICAgIyByb3VuZCBpZiBuZWNlc3NhcnksIHRha2luZyByb3VuZGluZyBtb2RlIGZyb20gdGhlIGNvbnRleHQKLSAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0gICAgICAgIHByZWNpc2lvbiA9IHNwZWNbJ3ByZWNpc2lvbiddCi0gICAgICAgIGlmIHByZWNpc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgotICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yb3VuZChwcmVjaXNpb24rMSwgcm91bmRpbmcpCi0gICAgICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKLSAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcmVzY2FsZSgtcHJlY2lzaW9uLCByb3VuZGluZykKLSAgICAgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdnRycgYW5kIGxlbihzZWxmLl9pbnQpID4gcHJlY2lzaW9uOgotICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yb3VuZChwcmVjaXNpb24sIHJvdW5kaW5nKQotICAgICAgICAjIHNwZWNpYWwgY2FzZTogemVyb3Mgd2l0aCBhIHBvc2l0aXZlIGV4cG9uZW50IGNhbid0IGJlCi0gICAgICAgICMgcmVwcmVzZW50ZWQgaW4gZml4ZWQgcG9pbnQ7IHJlc2NhbGUgdGhlbSB0byAwZTAuCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBzZWxmLl9leHAgPiAwIGFuZCBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6Ci0gICAgICAgICAgICBzZWxmID0gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKLQotICAgICAgICAjIGZpZ3VyZSBvdXQgcGxhY2VtZW50IG9mIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAgICAgIGxlZnRkaWdpdHMgPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KQotICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBwcmVjaXNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxIC0gcHJlY2lzaW9uCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMQotICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKLSAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cwotICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZ0cnOgotICAgICAgICAgICAgaWYgc2VsZi5fZXhwIDw9IDAgYW5kIGxlZnRkaWdpdHMgPiAtNjoKLSAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxCi0KLSAgICAgICAgIyBmaW5kIGRpZ2l0cyBiZWZvcmUgYW5kIGFmdGVyIGRlY2ltYWwgcG9pbnQsIGFuZCBnZXQgZXhwb25lbnQKLSAgICAgICAgaWYgZG90cGxhY2UgPCAwOgotICAgICAgICAgICAgaW50cGFydCA9ICcwJwotICAgICAgICAgICAgZnJhY3BhcnQgPSAnMCcqKC1kb3RwbGFjZSkgKyBzZWxmLl9pbnQKLSAgICAgICAgZWxpZiBkb3RwbGFjZSA+IGxlbihzZWxmLl9pbnQpOgotICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludCArICcwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0gb3IgJzAnCi0gICAgICAgICAgICBmcmFjcGFydCA9IHNlbGYuX2ludFtkb3RwbGFjZTpdCi0gICAgICAgIGV4cCA9IGxlZnRkaWdpdHMtZG90cGxhY2UKLQotICAgICAgICAjIGRvbmUgd2l0aCB0aGUgZGVjaW1hbC1zcGVjaWZpYyBzdHVmZjsgIGhhbmQgb3ZlciB0aGUgcmVzdAotICAgICAgICAjIG9mIHRoZSBmb3JtYXR0aW5nIHRvIHRoZSBfZm9ybWF0X251bWJlciBmdW5jdGlvbgotICAgICAgICByZXR1cm4gX2Zvcm1hdF9udW1iZXIoc2VsZi5fc2lnbiwgaW50cGFydCwgZnJhY3BhcnQsIGV4cCwgc3BlYykKLQotZGVmIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgY29lZmZpY2llbnQsIGV4cG9uZW50LCBzcGVjaWFsPUZhbHNlKToKLSAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIGluc3RhbmNlIGRpcmVjdGx5LCB3aXRob3V0IGFueSB2YWxpZGF0aW9uLAotICAgIG5vcm1hbGl6YXRpb24gKGUuZy4gcmVtb3ZhbCBvZiBsZWFkaW5nIHplcm9zKSBvciBhcmd1bWVudAotICAgIGNvbnZlcnNpb24uCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIGZvciAqaW50ZXJuYWwgdXNlIG9ubHkqLgotICAgICIiIgotCi0gICAgc2VsZiA9IG9iamVjdC5fX25ld19fKERlY2ltYWwpCi0gICAgc2VsZi5fc2lnbiA9IHNpZ24KLSAgICBzZWxmLl9pbnQgPSBjb2VmZmljaWVudAotICAgIHNlbGYuX2V4cCA9IGV4cG9uZW50Ci0gICAgc2VsZi5faXNfc3BlY2lhbCA9IHNwZWNpYWwKLQotICAgIHJldHVybiBzZWxmCi0KLSMgUmVnaXN0ZXIgRGVjaW1hbCBhcyBhIGtpbmQgb2YgTnVtYmVyIChhbiBhYnN0cmFjdCBiYXNlIGNsYXNzKS4KLSMgSG93ZXZlciwgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIFJlYWwgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdAotIyBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4KLV9udW1iZXJzLk51bWJlci5yZWdpc3RlcihEZWNpbWFsKQotCi0KLSMjIyMjIENvbnRleHQgY2xhc3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBfQ29udGV4dE1hbmFnZXIob2JqZWN0KToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgY2xhc3MgdG8gc3VwcG9ydCBsb2NhbGNvbnRleHQoKS4KLQotICAgICAgU2V0cyBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gX19lbnRlcl9fKCkgYW5kIHJlc3RvcmVzCi0gICAgICB0aGUgcHJldmlvdXMgZGVjaW1hbCBjb250ZXh0IGluIF9fZXhpdF9fKCkKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmV3X2NvbnRleHQpOgotICAgICAgICBzZWxmLm5ld19jb250ZXh0ID0gbmV3X2NvbnRleHQuY29weSgpCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF9jb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNldGNvbnRleHQoc2VsZi5uZXdfY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHNlbGYubmV3X2NvbnRleHQKLSAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgotICAgICAgICBzZXRjb250ZXh0KHNlbGYuc2F2ZWRfY29udGV4dCkKLQotY2xhc3MgQ29udGV4dChvYmplY3QpOgotICAgICIiIkNvbnRhaW5zIHRoZSBjb250ZXh0IGZvciBhIERlY2ltYWwgaW5zdGFuY2UuCi0KLSAgICBDb250YWluczoKLSAgICBwcmVjIC0gcHJlY2lzaW9uIChmb3IgdXNlIGluIHJvdW5kaW5nLCBkaXZpc2lvbiwgc3F1YXJlIHJvb3RzLi4pCi0gICAgcm91bmRpbmcgLSByb3VuZGluZyB0eXBlIChob3cgeW91IHJvdW5kKQotICAgIHRyYXBzIC0gSWYgdHJhcHNbZXhjZXB0aW9uXSA9IDEsIHRoZW4gdGhlIGV4Y2VwdGlvbiBpcwotICAgICAgICAgICAgICAgICAgICByYWlzZWQgd2hlbiBpdCBpcyBjYXVzZWQuICBPdGhlcndpc2UsIGEgdmFsdWUgaXMKLSAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0ZWQgaW4uCi0gICAgZmxhZ3MgIC0gV2hlbiBhbiBleGNlcHRpb24gaXMgY2F1c2VkLCBmbGFnc1tleGNlcHRpb25dIGlzIHNldC4KLSAgICAgICAgICAgICAoV2hldGhlciBvciBub3QgdGhlIHRyYXBfZW5hYmxlciBpcyBzZXQpCi0gICAgICAgICAgICAgU2hvdWxkIGJlIHJlc2V0IGJ5IHVzZXIgb2YgRGVjaW1hbCBpbnN0YW5jZS4KLSAgICBFbWluIC0gICBNaW5pbXVtIGV4cG9uZW50Ci0gICAgRW1heCAtICAgTWF4aW11bSBleHBvbmVudAotICAgIGNhcGl0YWxzIC0gICAgICBJZiAxLCAxKjEwXjEgaXMgcHJpbnRlZCBhcyAxRSsxLgotICAgICAgICAgICAgICAgICAgICBJZiAwLCBwcmludGVkIGFzIDFlMQotICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLCB0cmFwcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKLSAgICAgICAgIyBTZXQgZGVmYXVsdHM7IGZvciBldmVyeXRoaW5nIGV4Y2VwdCBmbGFncyBhbmQgX2lnbm9yZWRfZmxhZ3MsCi0gICAgICAgICMgaW5oZXJpdCBmcm9tIERlZmF1bHRDb250ZXh0LgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkYyA9IERlZmF1bHRDb250ZXh0Ci0gICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgc2VsZi5wcmVjID0gcHJlYyBpZiBwcmVjIGlzIG5vdCBOb25lIGVsc2UgZGMucHJlYwotICAgICAgICBzZWxmLnJvdW5kaW5nID0gcm91bmRpbmcgaWYgcm91bmRpbmcgaXMgbm90IE5vbmUgZWxzZSBkYy5yb3VuZGluZwotICAgICAgICBzZWxmLkVtaW4gPSBFbWluIGlmIEVtaW4gaXMgbm90IE5vbmUgZWxzZSBkYy5FbWluCi0gICAgICAgIHNlbGYuRW1heCA9IEVtYXggaWYgRW1heCBpcyBub3QgTm9uZSBlbHNlIGRjLkVtYXgKLSAgICAgICAgc2VsZi5jYXBpdGFscyA9IGNhcGl0YWxzIGlmIGNhcGl0YWxzIGlzIG5vdCBOb25lIGVsc2UgZGMuY2FwaXRhbHMKLSAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wIGlmIGNsYW1wIGlzIG5vdCBOb25lIGVsc2UgZGMuY2xhbXAKLQotICAgICAgICBpZiBfaWdub3JlZF9mbGFncyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IFtdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gX2lnbm9yZWRfZmxhZ3MKLQotICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzICsgdHJhcHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKLQotICAgICAgICBpZiBmbGFncyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QuZnJvbWtleXMoX3NpZ25hbHMsIDApCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZmxhZ3MsIGRpY3QpOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QoKHMsIGludChzIGluIGZsYWdzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyBmbGFncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBmbGFncwotCi0gICAgZGVmIF9zZXRfaW50ZWdlcl9jaGVjayhzZWxmLCBuYW1lLCB2YWx1ZSwgdm1pbiwgdm1heCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGFuIGludGVnZXIiICUgbmFtZSkKLSAgICAgICAgaWYgdm1pbiA9PSAnLWluZic6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA+IHZtYXg6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJXMsICVkXS4gZ290OiAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQotICAgICAgICBlbGlmIHZtYXggPT0gJ2luZic6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW46Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVzXS4gZ290OiAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluIG9yIHZhbHVlID4gdm1heDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJWRdLiBnb3QgJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKLQotICAgIGRlZiBfc2V0X3NpZ25hbF9kaWN0KHNlbGYsIG5hbWUsIGQpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkLCBkaWN0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhIHNpZ25hbCBkaWN0IiAlIGQpCi0gICAgICAgIGZvciBrZXkgaW4gZDoKLSAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHNpZ25hbCBkaWN0IiAlIGQpCi0gICAgICAgIGZvciBrZXkgaW4gX3NpZ25hbHM6Ci0gICAgICAgICAgICBpZiBub3Qga2V5IGluIGQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHNpZ25hbCBkaWN0IiAlIGQpCi0gICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgZCkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgPT0gJ3ByZWMnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAxLCAnaW5mJykKLSAgICAgICAgZWxpZiBuYW1lID09ICdFbWluJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgJy1pbmYnLCAwKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtYXgnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAnaW5mJykKLSAgICAgICAgZWxpZiBuYW1lID09ICdjYXBpdGFscyc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnY2xhbXAnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ3JvdW5kaW5nJzoKLSAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBpbiBfcm91bmRpbmdfbW9kZXM6Ci0gICAgICAgICAgICAgICAgIyByYWlzZSBUeXBlRXJyb3IgZXZlbiBmb3Igc3RyaW5ncyB0byBoYXZlIGNvbnNpc3RlbmN5Ci0gICAgICAgICAgICAgICAgIyBhbW9uZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucy4KLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzOiBpbnZhbGlkIHJvdW5kaW5nIG1vZGUiICUgdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ2ZsYWdzJyBvciBuYW1lID09ICd0cmFwcyc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X3NpZ25hbF9kaWN0KG5hbWUsIHZhbHVlKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ19pZ25vcmVkX2ZsYWdzJzoKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKLSAgICAgICAgICAgICAgICAiJ2RlY2ltYWwuQ29udGV4dCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSBuYW1lKQotCi0gICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgotICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXMgY2Fubm90IGJlIGRlbGV0ZWQiICUgbmFtZSkKLQotICAgICMgU3VwcG9ydCBmb3IgcGlja2xpbmcsIGNvcHksIGFuZCBkZWVwY29weQotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICBmbGFncyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLmZsYWdzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgdHJhcHMgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi50cmFwcy5pdGVtcygpIGlmIHZdCi0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sCi0gICAgICAgICAgICAgICAgKHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCi0gICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIGZsYWdzLCB0cmFwcykpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICIiIlNob3cgdGhlIGN1cnJlbnQgY29udGV4dC4iIiIKLSAgICAgICAgcyA9IFtdCi0gICAgICAgIHMuYXBwZW5kKCdDb250ZXh0KHByZWM9JShwcmVjKWQsIHJvdW5kaW5nPSUocm91bmRpbmcpcywgJwotICAgICAgICAgICAgICAgICAnRW1pbj0lKEVtaW4pZCwgRW1heD0lKEVtYXgpZCwgY2FwaXRhbHM9JShjYXBpdGFscylkLCAnCi0gICAgICAgICAgICAgICAgICdjbGFtcD0lKGNsYW1wKWQnCi0gICAgICAgICAgICAgICAgICUgdmFycyhzZWxmKSkKLSAgICAgICAgbmFtZXMgPSBbZi5fX25hbWVfXyBmb3IgZiwgdiBpbiBzZWxmLmZsYWdzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgcy5hcHBlbmQoJ2ZsYWdzPVsnICsgJywgJy5qb2luKG5hbWVzKSArICddJykKLSAgICAgICAgbmFtZXMgPSBbdC5fX25hbWVfXyBmb3IgdCwgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgcy5hcHBlbmQoJ3RyYXBzPVsnICsgJywgJy5qb2luKG5hbWVzKSArICddJykKLSAgICAgICAgcmV0dXJuICcsICcuam9pbihzKSArICcpJwotCi0gICAgZGVmIGNsZWFyX2ZsYWdzKHNlbGYpOgotICAgICAgICAiIiJSZXNldCBhbGwgZmxhZ3MgdG8gemVybyIiIgotICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgotICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKLQotICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKLSAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKLSAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKLSAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCi0KLSAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCi0gICAgICAgIHJldHVybiBuYwotCi0gICAgZGVmIGNvcHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLmNvcHkoKSwgc2VsZi50cmFwcy5jb3B5KCksCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQotICAgICAgICByZXR1cm4gbmMKLSAgICBfX2NvcHlfXyA9IGNvcHkKLQotICAgIGRlZiBfcmFpc2VfZXJyb3Ioc2VsZiwgY29uZGl0aW9uLCBleHBsYW5hdGlvbiA9IE5vbmUsICphcmdzKToKLSAgICAgICAgIiIiSGFuZGxlcyBhbiBlcnJvcgotCi0gICAgICAgIElmIHRoZSBmbGFnIGlzIGluIF9pZ25vcmVkX2ZsYWdzLCByZXR1cm5zIHRoZSBkZWZhdWx0IHJlc3BvbnNlLgotICAgICAgICBPdGhlcndpc2UsIGl0IHNldHMgdGhlIGZsYWcsIHRoZW4sIGlmIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgIHRyYXBfZW5hYmxlciBpcyBzZXQsIGl0IHJlcmFpc2VzIHRoZSBleGNlcHRpb24uICBPdGhlcndpc2UsIGl0IHJldHVybnMKLSAgICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgYWZ0ZXIgc2V0dGluZyB0aGUgZmxhZy4KLSAgICAgICAgIiIiCi0gICAgICAgIGVycm9yID0gX2NvbmRpdGlvbl9tYXAuZ2V0KGNvbmRpdGlvbiwgY29uZGl0aW9uKQotICAgICAgICBpZiBlcnJvciBpbiBzZWxmLl9pZ25vcmVkX2ZsYWdzOgotICAgICAgICAgICAgIyBEb24ndCB0b3VjaCB0aGUgZmxhZwotICAgICAgICAgICAgcmV0dXJuIGVycm9yKCkuaGFuZGxlKHNlbGYsICphcmdzKQotCi0gICAgICAgIHNlbGYuZmxhZ3NbZXJyb3JdID0gMQotICAgICAgICBpZiBub3Qgc2VsZi50cmFwc1tlcnJvcl06Ci0gICAgICAgICAgICAjIFRoZSBlcnJvcnMgZGVmaW5lIGhvdyB0byBoYW5kbGUgdGhlbXNlbHZlcy4KLSAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24oKS5oYW5kbGUoc2VsZiwgKmFyZ3MpCi0KLSAgICAgICAgIyBFcnJvcnMgc2hvdWxkIG9ubHkgYmUgcmlza2VkIG9uIGNvcGllcyBvZiB0aGUgY29udGV4dAotICAgICAgICAjIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBbXQotICAgICAgICByYWlzZSBlcnJvcihleHBsYW5hdGlvbikKLQotICAgIGRlZiBfaWdub3JlX2FsbF9mbGFncyhzZWxmKToKLSAgICAgICAgIiIiSWdub3JlIGFsbCBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9pZ25vcmVfZmxhZ3MoKl9zaWduYWxzKQotCi0gICAgZGVmIF9pZ25vcmVfZmxhZ3Moc2VsZiwgKmZsYWdzKToKLSAgICAgICAgIiIiSWdub3JlIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCi0gICAgICAgICMgRG8gbm90IG11dGF0ZS0tIFRoaXMgd2F5LCBjb3BpZXMgb2YgYSBjb250ZXh0IGxlYXZlIHRoZSBvcmlnaW5hbAotICAgICAgICAjIGFsb25lLgotICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gKHNlbGYuX2lnbm9yZWRfZmxhZ3MgKyBsaXN0KGZsYWdzKSkKLSAgICAgICAgcmV0dXJuIGxpc3QoZmxhZ3MpCi0KLSAgICBkZWYgX3JlZ2FyZF9mbGFncyhzZWxmLCAqZmxhZ3MpOgotICAgICAgICAiIiJTdG9wIGlnbm9yaW5nIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCi0gICAgICAgIGlmIGZsYWdzIGFuZCBpc2luc3RhbmNlKGZsYWdzWzBdLCAodHVwbGUsbGlzdCkpOgotICAgICAgICAgICAgZmxhZ3MgPSBmbGFnc1swXQotICAgICAgICBmb3IgZmxhZyBpbiBmbGFnczoKLSAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MucmVtb3ZlKGZsYWcpCi0KLSAgICAjIFdlIGluaGVyaXQgb2JqZWN0Ll9faGFzaF9fLCBzbyB3ZSBtdXN0IGRlbnkgdGhpcyBleHBsaWNpdGx5Ci0gICAgX19oYXNoX18gPSBOb25lCi0KLSAgICBkZWYgRXRpbnkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgRXRpbnkgKD0gRW1pbiAtIHByZWMgKyAxKSIiIgotICAgICAgICByZXR1cm4gaW50KHNlbGYuRW1pbiAtIHNlbGYucHJlYyArIDEpCi0KLSAgICBkZWYgRXRvcChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBtYXhpbXVtIGV4cG9uZW50ICg9IEVtYXggLSBwcmVjICsgMSkiIiIKLSAgICAgICAgcmV0dXJuIGludChzZWxmLkVtYXggLSBzZWxmLnByZWMgKyAxKQotCi0gICAgZGVmIF9zZXRfcm91bmRpbmcoc2VsZiwgdHlwZSk6Ci0gICAgICAgICIiIlNldHMgdGhlIHJvdW5kaW5nIHR5cGUuCi0KLSAgICAgICAgU2V0cyB0aGUgcm91bmRpbmcgdHlwZSwgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgKHByZXZpb3VzKQotICAgICAgICByb3VuZGluZyB0eXBlLiAgT2Z0ZW4gdXNlZCBsaWtlOgotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICAjIHNvIHlvdSBkb24ndCBjaGFuZ2UgdGhlIGNhbGxpbmcgY29udGV4dAotICAgICAgICAjIGlmIGFuIGVycm9yIG9jY3VycyBpbiB0aGUgbWlkZGxlLgotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9VUCkKLSAgICAgICAgdmFsID0gc2VsZi5fX3N1Yl9fKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhyb3VuZGluZykKLQotICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCByb3VuZCB1cCBmb3IgdGhhdCBvcGVyYXRpb24uCi0gICAgICAgICIiIgotICAgICAgICByb3VuZGluZyA9IHNlbGYucm91bmRpbmcKLSAgICAgICAgc2VsZi5yb3VuZGluZz0gdHlwZQotICAgICAgICByZXR1cm4gcm91bmRpbmcKLQotICAgIGRlZiBjcmVhdGVfZGVjaW1hbChzZWxmLCBudW09JzAnKToKLSAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGJ1dCB1c2luZyBzZWxmIGFzIGNvbnRleHQuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUKLSAgICAgICAgSUJNIERlY2ltYWwgc3BlY2lmaWNhdGlvbi4iIiIKLQotICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgbnVtICE9IG51bS5zdHJpcCgpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZC4iKQotCi0gICAgICAgIGQgPSBEZWNpbWFsKG51bSwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiBkLl9pc25hbigpIGFuZCBsZW4oZC5faW50KSA+IHNlbGYucHJlYyAtIHNlbGYuY2xhbXA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhZ25vc3RpYyBpbmZvIHRvbyBsb25nIGluIE5hTiIpCi0gICAgICAgIHJldHVybiBkLl9maXgoc2VsZikKLQotICAgIGRlZiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KHNlbGYsIGYpOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBhIGZsb2F0IGJ1dCByb3VuZGluZyB1c2luZyBzZWxmCi0gICAgICAgIGFzIHRoZSBjb250ZXh0LgotCi0gICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCi0gICAgICAgID4+PiBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMy4xNDE1OTI2NTM1ODk3OTMyKQotICAgICAgICBEZWNpbWFsKCczLjE0MTUnKQotICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCi0gICAgICAgID4+PiBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMy4xNDE1OTI2NTM1ODk3OTMyKQotICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgICAuLi4KLSAgICAgICAgZGVjaW1hbC5JbmV4YWN0OiBOb25lCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGQgPSBEZWNpbWFsLmZyb21fZmxvYXQoZikgICAgICAgIyBBbiBleGFjdCBjb252ZXJzaW9uCi0gICAgICAgIHJldHVybiBkLl9maXgoc2VsZikgICAgICAgICAgICAgIyBBcHBseSB0aGUgY29udGV4dCByb3VuZGluZwotCi0gICAgIyBNZXRob2RzCi0gICAgZGVmIGFicyhzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgSWYgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdXNpbmcgdGhlIG1pbnVzCi0gICAgICAgIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZwotICAgICAgICB0aGUgcGx1cyBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJy0xMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicygtMSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX2Fic19fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBhZGQoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgc3VtIG9mIHRoZSB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnNy4wMCcpKQotICAgICAgICBEZWNpbWFsKCcxOS4wMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzFFKzInKSwgRGVjaW1hbCgnMS4wMUUrNCcpKQotICAgICAgICBEZWNpbWFsKCcxLjAyRSs0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoOCksIDUpCi0gICAgICAgIERlY2ltYWwoJzEzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoNSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgciA9IGEuX19hZGRfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgX2FwcGx5KHNlbGYsIGEpOgotICAgICAgICByZXR1cm4gc3RyKGEuX2ZpeChzZWxmKSkKLQotICAgIGRlZiBjYW5vbmljYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCi0KLSAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKLSAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMi41MCcpCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQotICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoKQotCi0gICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHZhbHVlcyBudW1lcmljYWxseS4KLQotICAgICAgICBJZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGRpZmZlciwgYSB2YWx1ZSByZXByZXNlbnRpbmcgZWFjaCBvcGVyYW5kCi0gICAgICAgICgnLTEnIGlmIHRoZSBvcGVyYW5kIGlzIGxlc3MgdGhhbiB6ZXJvLCAnMCcgaWYgdGhlIG9wZXJhbmQgaXMgemVybyBvcgotICAgICAgICBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIHplcm8pIGlzIHVzZWQgaW4KLSAgICAgICAgcGxhY2Ugb2YgdGhhdCBvcGVyYW5kIGZvciB0aGUgY29tcGFyaXNvbiBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwKLSAgICAgICAgb3BlcmFuZC4KLQotICAgICAgICBUaGUgY29tcGFyaXNvbiBpcyB0aGVuIGVmZmVjdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZWNvbmQgb3BlcmFuZCBmcm9tCi0gICAgICAgIHRoZSBmaXJzdCBhbmQgdGhlbiByZXR1cm5pbmcgYSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdCBvZiB0aGUKLSAgICAgICAgc3VidHJhY3Rpb246ICctMScgaWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSByZXN1bHQgaXMKLSAgICAgICAgemVybyBvciBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIHJlc3VsdCBpcyBncmVhdGVyIHRoYW4gemVyby4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnLTMnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCctMycpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29tcGFyZShiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgY29tcGFyZV9zaWduYWwoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgb2YgdGhlIHR3byBvcGVyYW5kcyBudW1lcmljYWxseS4KLQotICAgICAgICBJdCdzIHByZXR0eSBtdWNoIGxpa2UgY29tcGFyZSgpLCBidXQgYWxsIE5hTnMgc2lnbmFsLCB3aXRoIHNpZ25hbGluZwotICAgICAgICBOYU5zIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgcXVpZXQgTmFOcy4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dAotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAotICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLSAgICAgICAgMAotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCdOYU4nKSwgRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAxCi0gICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAotICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLSAgICAgICAgMAotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCdzTmFOJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLSAgICAgICAgMQotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKC0xKSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29tcGFyZV9zaWduYWwoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbi4KLQotICAgICAgICBUaGlzIGlzIG5vdCBsaWtlIHRoZSBzdGFuZGFyZCBjb21wYXJlLCB3aGljaCB1c2UgdGhlaXIgbnVtZXJpY2FsCi0gICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKLSAgICAgICAgcmVwcmVzZW50YXRpb25zLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi43MycpLCBEZWNpbWFsKCcxMjcuOScpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCctMTI3JyksICBEZWNpbWFsKCcxMicpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zMCcpLCBEZWNpbWFsKCcxMi4zJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMycpLCAgRGVjaW1hbCgnMTIuMzAwJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMycpLCAgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIDIpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDIpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmNvbXBhcmVfdG90YWwoYikKLQotICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIGlnbm9yaW5nIHNpZ24uCi0KLSAgICAgICAgTGlrZSBjb21wYXJlX3RvdGFsLCBidXQgd2l0aCBvcGVyYW5kJ3Mgc2lnbiBpZ25vcmVkIGFuZCBhc3N1bWVkIHRvIGJlIDAuCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb21wYXJlX3RvdGFsX21hZyhiKQotCi0gICAgZGVmIGNvcHlfYWJzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgb3BlcmFuZCB3aXRoIHRoZSBzaWduIHNldCB0byAwLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnLTEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKC0xKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmNvcHlfYWJzKCkKLQotICAgIGRlZiBjb3B5X2RlY2ltYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBkZWNpbWFsIG9iamVjdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoRGVjaW1hbCgnLTEuMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbCgxKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBEZWNpbWFsKGEpCi0KLSAgICBkZWYgY29weV9uZWdhdGUoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZShEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCctMTAxLjUnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoMSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29weV9uZWdhdGUoKQotCi0gICAgZGVmIGNvcHlfc2lnbihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29waWVzIHRoZSBzZWNvbmQgb3BlcmFuZCdzIHNpZ24gdG8gdGhlIGZpcnN0IG9uZS4KLQotICAgICAgICBJbiBkZXRhaWwsIGl0IHJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIHNpZ24KLSAgICAgICAgZXF1YWwgdG8gdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS41MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoJy0xLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS41MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJy03LjMzJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuNTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKDEpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29weV9zaWduKGIpCi0KLSAgICBkZWYgZGl2aWRlKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJEZWNpbWFsIGRpdmlzaW9uIGluIGEgc3BlY2lmaWVkIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzAuMzMzMzMzMzMzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzAuNjY2NjY2NjY3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnNScpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzIuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnMTInKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzguMDAnKSwgRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCc0LjAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMi40MDAnKSwgRGVjaW1hbCgnMi4wJykpCi0gICAgICAgIERlY2ltYWwoJzEuMjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMDAwJyksIERlY2ltYWwoJzEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxMDAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMi40MEUrNicpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzEuMjBFKzYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZSg1LCA1KQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCg1KSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIERlY2ltYWwoNSkpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgciA9IGEuX190cnVlZGl2X18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIGRpdmlkZV9pbnQoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkRpdmlkZXMgdHdvIG51bWJlcnMgYW5kIHJldHVybnMgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgcmVzdWx0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgMykKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKDEwKSwgMykKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgRGVjaW1hbCgzKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX2Zsb29yZGl2X18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIGRpdm1vZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJuIChhIC8vIGIsIGEgJSBiKS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCBEZWNpbWFsKDMpKQotICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoNCkpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoOCwgNCkKLSAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCA0KQotICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIERlY2ltYWwoNCkpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fZGl2bW9kX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIGV4cChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBlICoqIGEuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy1JbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy0xJykpCi0gICAgICAgIERlY2ltYWwoJzAuMzY3ODc5NDQxJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzIuNzE4MjgxODMnKQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMC42OTMxNDcxODEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCi0gICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcrSW5maW5pdHknKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5leHAoMTApCi0gICAgICAgIERlY2ltYWwoJzIyMDI2LjQ2NTgnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9X2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5leHAoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGZtYShzZWxmLCBhLCBiLCBjKToKLSAgICAgICAgIiIiUmV0dXJucyBhIG11bHRpcGxpZWQgYnkgYiwgcGx1cyBjLgotCi0gICAgICAgIFRoZSBmaXJzdCB0d28gb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHVzaW5nIG11bHRpcGx5LAotICAgICAgICB0aGUgdGhpcmQgb3BlcmFuZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSByZXN1bHQgb2YgdGhhdAotICAgICAgICBtdWx0aXBsaWNhdGlvbiwgdXNpbmcgYWRkLCBhbGwgd2l0aCBvbmx5IG9uZSBmaW5hbCByb3VuZGluZy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCczJyksIERlY2ltYWwoJzUnKSwgRGVjaW1hbCgnNycpKQotICAgICAgICBEZWNpbWFsKCcyMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnLTUnKSwgRGVjaW1hbCgnNycpKQotICAgICAgICBEZWNpbWFsKCctOCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzg4ODU2NTI5MCcpLCBEZWNpbWFsKCcxNTU3Ljk2OTMwJyksIERlY2ltYWwoJy04NjA4Ny43NTc4JykpCi0gICAgICAgIERlY2ltYWwoJzEuMzg0MzU3MzZFKzEyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgMywgNCkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIERlY2ltYWwoMyksIDQpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCBEZWNpbWFsKDQpKQotICAgICAgICBEZWNpbWFsKCc3JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmZtYShiLCBjLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgaXNfY2Fub25pY2FsKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBjYW5vbmljYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cwotICAgICAgICBjYW5vbmljYWwsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMgVHJ1ZSBmb3IgYW55IERlY2ltYWwuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaXNfY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQotICAgICAgICByZXR1cm4gYS5pc19jYW5vbmljYWwoKQotCi0gICAgZGVmIGlzX2Zpbml0ZShzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgIEEgRGVjaW1hbCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGZpbml0ZSBpZiBpdCBpcyBuZWl0aGVyCi0gICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnLTAuMycpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdJbmYnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKDEpCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX2Zpbml0ZSgpCi0KLSAgICBkZWYgaXNfaW5maW5pdGUoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGluZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19pbmZpbml0ZSgpCi0KLSAgICBkZWYgaXNfbmFuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHFOYU4gb3Igc05hTjsKLSAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJ05hTicpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJy1zTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX25hbigpCi0KLSAgICBkZWYgaXNfbm9ybWFsKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIG5vcm1hbCBudW1iZXI7Ci0gICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMC4xRS05OTknKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzAuMDAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoMSkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfbm9ybWFsKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBpc19xbmFuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJ3NOYU4nKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19xbmFuKCkKLQotICAgIGRlZiBpc19zaWduZWQoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnLTEyJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZCg4KQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZCgtOCkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfc2lnbmVkKCkKLQotICAgIGRlZiBpc19zbmFuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU47Ci0gICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnc05hTicpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbigxKQotICAgICAgICBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfc25hbigpCi0KLSAgICBkZWYgaXNfc3Vibm9ybWFsKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzAuMUUtOTk5JykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzAuMDAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX3N1Ym5vcm1hbChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgaXNfemVybyhzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCcwJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJy0wRSsyJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygwKQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc196ZXJvKCkKLQotICAgIGRlZiBsbihzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxLjAwMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMi43MTgyODE4MycpKQotICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAwJykKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4zMDI1ODUwOScpCi0gICAgICAgID4+PiBjLmxuKERlY2ltYWwoJytJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxuKDEpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG4oY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZzEwKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAuMDAxJykpCi0gICAgICAgIERlY2ltYWwoJy0zJykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMS4wMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMC4zMDEwMjk5OTYnKQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnNzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS44NDUwOTgwNCcpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJytJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxvZzEwKDApCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxvZzEwKDEpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9nMTAoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZ2Ioc2VsZiwgYSk6Ci0gICAgICAgICIiIiBSZXR1cm5zIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELgotCi0gICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGludGVnZXIgd2hpY2ggaXMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUKLSAgICAgICAgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgdGhlIG9wZXJhbmQgKGFzIHRob3VnaCB0aGUKLSAgICAgICAgb3BlcmFuZCB3ZXJlIHRydW5jYXRlZCB0byBhIHNpbmdsZSBkaWdpdCB3aGlsZSBtYWludGFpbmluZyB0aGUKLSAgICAgICAgdmFsdWUgb2YgdGhhdCBkaWdpdCBhbmQgd2l0aG91dCBsaW1pdGluZyB0aGUgcmVzdWx0aW5nIGV4cG9uZW50KS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMjUwJykpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzAuMDMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxMCkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxMDApCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9nYihjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9naWNhbF9hbmQoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICdhbmQnIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgotCi0gICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxMTExJyksIERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZCgxMTAsIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgxMTApLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKDExMCwgRGVjaW1hbCgxMTAxKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmxvZ2ljYWxfYW5kKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX2ludmVydChzZWxmLCBhKToKLSAgICAgICAgIiIiSW52ZXJ0IGFsbCB0aGUgZGlnaXRzIGluIHRoZSBvcGVyYW5kLgotCi0gICAgICAgIFRoZSBvcGVyYW5kIG11c3QgYmUgYSBsb2dpY2FsIG51bWJlci4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMTExMTExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzExMTExMTExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMTExMTExMTExJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzEwMTAxMDEwMScpKQotICAgICAgICBEZWNpbWFsKCcxMDEwMTAxMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTExMTEwMDEwJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX29yKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAnb3InIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgotCi0gICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxMTEwJyksIERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzExMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoMTEwLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMTExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoMTEwKSwgMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTExMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcigxMTAsIERlY2ltYWwoMTEwMSkpCi0gICAgICAgIERlY2ltYWwoJzExMTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9naWNhbF9vcihiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9naWNhbF94b3Ioc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICd4b3InIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgotCi0gICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzExMTEnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTEwMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMDExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKDExMCksIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKDExMCwgRGVjaW1hbCgxMTAxKSkKLSAgICAgICAgRGVjaW1hbCgnMTAxMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2dpY2FsX3hvcihiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbWF4KHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJtYXggY29tcGFyZXMgdHdvIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJucyB0aGUgbWF4aW11bS4KLQotICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIE5hTiB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgotICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYXMgdGhvdWdoIGJ5IHRoZSBjb21wYXJlCi0gICAgICAgIG9wZXJhdGlvbi4gIElmIHRoZXkgYXJlIG51bWVyaWNhbGx5IGVxdWFsIHRoZW4gdGhlIGxlZnQtaGFuZCBvcGVyYW5kCi0gICAgICAgIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlIHRoZSBtYXhpbXVtIChjbG9zZXIgdG8gcG9zaXRpdmUKLSAgICAgICAgaW5maW5pdHkpIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heCgxLCAyKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubWF4KGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtYXhfbWFnKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQotICAgICAgICBEZWNpbWFsKCc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTEwJykpCi0gICAgICAgIERlY2ltYWwoJy0xMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZygxLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgxKSwgLTIpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKDEsIERlY2ltYWwoLTIpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5tYXhfbWFnKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtaW4oc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIm1pbiBjb21wYXJlcyB0d28gdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm5zIHRoZSBtaW5pbXVtLgotCi0gICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBhcyB0aG91Z2ggYnkgdGhlIGNvbXBhcmUKLSAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKLSAgICAgICAgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuICBPdGhlcndpc2UgdGhlIG1pbmltdW0gKGNsb3NlciB0byBuZWdhdGl2ZQotICAgICAgICBpbmZpbml0eSkgb2YgdGhlIHR3byBvcGVyYW5kcyBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCczJyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzEuMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbigxLCAyKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKDEsIERlY2ltYWwoMjkpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm1pbihiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbWluX21hZyhzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCctMicpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKCctMycpLCBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnLTMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoMSwgLTIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgxKSwgLTIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoMSwgRGVjaW1hbCgtMikpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubWluX21hZyhiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbWludXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIk1pbnVzIGNvcnJlc3BvbmRzIHRvIHVuYXJ5IHByZWZpeCBtaW51cyBpbiBQeXRob24uCi0KLSAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBldmFsdWF0ZWQgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgc3VidHJhY3Q7IHRoZQotICAgICAgICBvcGVyYXRpb24gbWludXMoYSkgaXMgY2FsY3VsYXRlZCBhcyBzdWJ0cmFjdCgnMCcsIGEpIHdoZXJlIHRoZSAnMCcKLSAgICAgICAgaGFzIHRoZSBzYW1lIGV4cG9uZW50IGFzIHRoZSBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoRGVjaW1hbCgnMS4zJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKERlY2ltYWwoJy0xLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cygxKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX25lZ19fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtdWx0aXBseShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIibXVsdGlwbHkgbXVsdGlwbGllcyB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBzcGVjaWFsIHZhbHVlIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyCi0gICAgICAgICgnbG9uZyBtdWx0aXBsaWNhdGlvbicpLCByZXN1bHRpbmcgaW4gYSBudW1iZXIgd2hpY2ggbWF5IGJlIGFzIGxvbmcgYXMKLSAgICAgICAgdGhlIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIG9wZXJhbmRzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMS4yMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzMuNjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcyMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMC45JyksIERlY2ltYWwoJzAuOCcpKQotICAgICAgICBEZWNpbWFsKCcwLjcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcwLjknKSwgRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNjU0MzIxJyksIERlY2ltYWwoJzY1NDMyMScpKQotICAgICAgICBEZWNpbWFsKCc0LjI4MTM1OTcxRSsxMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoNywgNykKLSAgICAgICAgRGVjaW1hbCgnNDknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoNyksIDcpCi0gICAgICAgIERlY2ltYWwoJzQ5JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCBEZWNpbWFsKDcpKQotICAgICAgICBEZWNpbWFsKCc0OScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX211bF9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiBuZXh0X21pbnVzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBhLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKLSAgICAgICAgPj4+IGMubmV4dF9taW51cyhEZWNpbWFsKCcxRS0xMDA3JykpCi0gICAgICAgIERlY2ltYWwoJzBFLTEwMDcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfbWludXMoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDQnKQotICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJzkuOTk5OTk5OTlFKzk5OScpCi0gICAgICAgID4+PiBjLm5leHRfbWludXMoMSkKLSAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubmV4dF9taW51cyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbmV4dF9wbHVzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBhLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9wbHVzKERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCi0gICAgICAgID4+PiBjLm5leHRfcGx1cyhEZWNpbWFsKCctMUUtMTAwNycpKQotICAgICAgICBEZWNpbWFsKCctMEUtMTAwNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9wbHVzKERlY2ltYWwoJy0xLjAwMDAwMDAzJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDAyJykKLSAgICAgICAgPj4+IGMubmV4dF9wbHVzKERlY2ltYWwoJy1JbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCctOS45OTk5OTk5OUUrOTk5JykKLSAgICAgICAgPj4+IGMubmV4dF9wbHVzKDEpCi0gICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubmV4dF9wbHVzKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBuZXh0X3Rvd2FyZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gYSwgaW4gZGlyZWN0aW9uIHRvd2FyZHMgYi4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGZyb20gdGhlIGZpcnN0Ci0gICAgICAgIG9wZXJhbmQgKGJ1dCBub3QgdGhlIGZpcnN0IG9wZXJhbmQpIHRoYXQgaXMgaW4gdGhlIGRpcmVjdGlvbgotICAgICAgICB0b3dhcmRzIHRoZSBzZWNvbmQgb3BlcmFuZCwgdW5sZXNzIHRoZSBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lCi0gICAgICAgIHZhbHVlLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTFFLTEwMDcnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCctMEUtMTAwNycpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xLjAwMDAwMDAzJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDInKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxRS0xMDA3JyksIERlY2ltYWwoJy0xMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMEUtMTAwNycpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xLjAwMDAwMDAzJyksIERlY2ltYWwoJy0xMCcpKQotICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwNCcpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzAuMDAnKSwgRGVjaW1hbCgnLTAuMDAwMCcpKQotICAgICAgICBEZWNpbWFsKCctMC4wMCcpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKDAsIDEpCi0gICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDApLCAxKQotICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoMCwgRGVjaW1hbCgxKSkKLSAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5uZXh0X3Rvd2FyZChiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbm9ybWFsaXplKHNlbGYsIGEpOgotICAgICAgICAiIiJub3JtYWxpemUgcmVkdWNlcyBhbiBvcGVyYW5kIHRvIGl0cyBzaW1wbGVzdCBmb3JtLgotCi0gICAgICAgIEVzc2VudGlhbGx5IGEgcGx1cyBvcGVyYXRpb24gd2l0aCBhbGwgdHJhaWxpbmcgemVyb3MgcmVtb3ZlZCBmcm9tIHRoZQotICAgICAgICByZXN1bHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJy0yLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcxLjIwMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCctMTIwJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcxMjAuMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4yRSsyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMC4wMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoNikKLSAgICAgICAgRGVjaW1hbCgnNicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5ub3JtYWxpemUoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG51bWJlcl9jbGFzcyhzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKLSAgICAgICAgICAtc05hTgotICAgICAgICAgIC1OYU4KLSAgICAgICAgICAtSW5maW5pdHkKLSAgICAgICAgICAtTm9ybWFsCi0gICAgICAgICAgLVN1Ym5vcm1hbAotICAgICAgICAgIC1aZXJvCi0gICAgICAgICAgK1plcm8KLSAgICAgICAgICArU3Vibm9ybWFsCi0gICAgICAgICAgK05vcm1hbAotICAgICAgICAgICtJbmZpbml0eQotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdJbmZpbml0eScpKQotICAgICAgICAnK0luZmluaXR5JwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMUUtMTAnKSkKLSAgICAgICAgJytOb3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgICcrTm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMC4xRS05OTknKSkKLSAgICAgICAgJytTdWJub3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwJykpCi0gICAgICAgICcrWmVybycKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0wJykpCi0gICAgICAgICctWmVybycKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0wLjFFLTk5OScpKQotICAgICAgICAnLVN1Ym5vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0xRS0xMCcpKQotICAgICAgICAnLU5vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0yLjUwJykpCi0gICAgICAgICctTm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLUluZmluaXR5JykpCi0gICAgICAgICctSW5maW5pdHknCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgJ05hTicKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy1OYU4nKSkKLSAgICAgICAgJ05hTicKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ3NOYU4nKSkKLSAgICAgICAgJ3NOYU4nCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcygxMjMpCi0gICAgICAgICcrTm9ybWFsJwotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubnVtYmVyX2NsYXNzKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBwbHVzKHNlbGYsIGEpOgotICAgICAgICAiIiJQbHVzIGNvcnJlc3BvbmRzIHRvIHVuYXJ5IHByZWZpeCBwbHVzIGluIFB5dGhvbi4KLQotICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGV2YWx1YXRlZCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBhZGQ7IHRoZQotICAgICAgICBvcGVyYXRpb24gcGx1cyhhKSBpcyBjYWxjdWxhdGVkIGFzIGFkZCgnMCcsIGEpIHdoZXJlIHRoZSAnMCcKLSAgICAgICAgaGFzIHRoZSBzYW1lIGV4cG9uZW50IGFzIHRoZSBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cyhEZWNpbWFsKCcxLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKERlY2ltYWwoJy0xLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cygtMSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuX19wb3NfXyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgcG93ZXIoc2VsZiwgYSwgYiwgbW9kdWxvPU5vbmUpOgotICAgICAgICAiIiJSYWlzZXMgYSB0byB0aGUgcG93ZXIgb2YgYiwgdG8gbW9kdWxvIGlmIGdpdmVuLgotCi0gICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBhKipiLiAgSWYgYSBpcyBuZWdhdGl2ZSB0aGVuIGIKLSAgICAgICAgbXVzdCBiZSBpbnRlZ3JhbC4gIFRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyBiIGlzCi0gICAgICAgIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZSBhbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5Ci0gICAgICAgIGluICdwcmVjaXNpb24nIGRpZ2l0cy4KLQotICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uICBGb3IgdGhlCi0gICAgICAgIHRocmVlIGFyZ3VtZW50IGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZQotICAgICAgICBhcmd1bWVudHMgaG9sZDoKLQotICAgICAgICAgLSBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWwKLSAgICAgICAgIC0gYiBtdXN0IGJlIG5vbm5lZ2F0aXZlCi0gICAgICAgICAtIGF0IGxlYXN0IG9uZSBvZiBhIG9yIGIgbXVzdCBiZSBub256ZXJvCi0gICAgICAgICAtIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGhhdmUgYXQgbW9zdCAncHJlY2lzaW9uJyBkaWdpdHMKLQotICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhhLCBiLCBtb2R1bG8pIGlzIGlkZW50aWNhbCB0byB0aGUgcmVzdWx0Ci0gICAgICAgIHRoYXQgd291bGQgYmUgb2J0YWluZWQgYnkgY29tcHV0aW5nIChhKipiKSAlIG1vZHVsbyB3aXRoCi0gICAgICAgIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlIGVmZmljaWVudGx5LiAgSXQgaXMKLSAgICAgICAgYWx3YXlzIGV4YWN0LgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCc4JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTInKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctOCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnLTMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4xMjUnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxLjcnKSwgRGVjaW1hbCgnOCcpKQotICAgICAgICBEZWNpbWFsKCc2OS43NTc1NzQ0JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zMDEwMjk5OTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJy0xJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJy0xJykpCi0gICAgICAgIERlY2ltYWwoJy0wJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0KLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCi0gICAgICAgIERlY2ltYWwoJzExJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCcxNicpKQotICAgICAgICBEZWNpbWFsKCctMTEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc4JyksIERlY2ltYWwoJzE2JykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTE2JykpCi0gICAgICAgIERlY2ltYWwoJzExJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMjNFMTIzNDUnKSwgRGVjaW1hbCgnNjdFMTg5JyksIERlY2ltYWwoJzEyMzQ1Njc4OScpKQotICAgICAgICBEZWNpbWFsKCcxMTcyOTgzMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0wJyksIERlY2ltYWwoJzE3JyksIERlY2ltYWwoJzE3MjknKSkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMjMnKSwgRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCc2NTUzNycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcig3LCA3KQotICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKERlY2ltYWwoNyksIDcpCi0gICAgICAgIERlY2ltYWwoJzgyMzU0MycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgRGVjaW1hbCg3KSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX3Bvd19fKGIsIG1vZHVsbywgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIHF1YW50aXplKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIGEgdmFsdWUgZXF1YWwgdG8gJ2EnIChyb3VuZGVkKSwgaGF2aW5nIHRoZSBleHBvbmVudCBvZiAnYicuCi0KLSAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgZGVyaXZlZCBmcm9tIHRoYXQgb2YgdGhlIGxlZnQtaGFuZAotICAgICAgICBvcGVyYW5kLiAgSXQgbWF5IGJlIHJvdW5kZWQgdXNpbmcgdGhlIGN1cnJlbnQgcm91bmRpbmcgc2V0dGluZyAoaWYgdGhlCi0gICAgICAgIGV4cG9uZW50IGlzIGJlaW5nIGluY3JlYXNlZCksIG11bHRpcGxpZWQgYnkgYSBwb3NpdGl2ZSBwb3dlciBvZiB0ZW4gKGlmCi0gICAgICAgIHRoZSBleHBvbmVudCBpcyBiZWluZyBkZWNyZWFzZWQpLCBvciBpcyB1bmNoYW5nZWQgKGlmIHRoZSBleHBvbmVudCBpcwotICAgICAgICBhbHJlYWR5IGVxdWFsIHRvIHRoYXQgb2YgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCkuCi0KLSAgICAgICAgVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZQotICAgICAgICBxdWFudGl6ZSBvcGVyYXRpb24gd291bGQgYmUgZ3JlYXRlciB0aGFuIHByZWNpc2lvbiB0aGVuIGFuIEludmFsaWQKLSAgICAgICAgb3BlcmF0aW9uIGNvbmRpdGlvbiBpcyByYWlzZWQuICBUaGlzIGd1YXJhbnRlZXMgdGhhdCwgdW5sZXNzIHRoZXJlIGlzCi0gICAgICAgIGFuIGVycm9yIGNvbmRpdGlvbiwgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQgb2YgYSBxdWFudGl6ZSBpcyBhbHdheXMKLSAgICAgICAgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kLgotCi0gICAgICAgIEFsc28gdW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIHF1YW50aXplIHdpbGwgbmV2ZXIgcmFpc2UgVW5kZXJmbG93LCBldmVuCi0gICAgICAgIGlmIHRoZSByZXN1bHQgaXMgc3Vibm9ybWFsIGFuZCBpbmV4YWN0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQotICAgICAgICBEZWNpbWFsKCcyLjE3MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAxJykpCi0gICAgICAgIERlY2ltYWwoJzIuMTcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSswJykpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMWUrMScpKQotICAgICAgICBEZWNpbWFsKCcwRSsxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctSW5mJyksIERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0wLjEnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCctMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMWUrNScpKQotICAgICAgICBEZWNpbWFsKCctMEUrNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnKzM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0zNTIzNjQ1MC42JyksIERlY2ltYWwoJzFlLTInKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUtMScpKQotICAgICAgICBEZWNpbWFsKCcyMTcuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMjE3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUrMScpKQotICAgICAgICBEZWNpbWFsKCcyLjJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZSsyJykpCi0gICAgICAgIERlY2ltYWwoJzJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIDIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoMSksIDIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEucXVhbnRpemUoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHJhZGl4KHNlbGYpOgotICAgICAgICAiIiJKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOikKLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJhZGl4KCkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoMTApCi0KLSAgICBkZWYgcmVtYWluZGVyKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLgotCi0gICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIHJlc2lkdWUgb2YgdGhlIGRpdmlkZW5kIGFmdGVyIHRoZSBvcGVyYXRpb24gb2YKLSAgICAgICAgY2FsY3VsYXRpbmcgaW50ZWdlciBkaXZpc2lvbiBhcyBkZXNjcmliZWQgZm9yIGRpdmlkZS1pbnRlZ2VyLCByb3VuZGVkCi0gICAgICAgIHRvIHByZWNpc2lvbiBkaWdpdHMgaWYgbmVjZXNzYXJ5LiAgVGhlIHNpZ24gb2YgdGhlIHJlc3VsdCwgaWYKLSAgICAgICAgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLgotCi0gICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KLSAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQotICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMycpKQotICAgICAgICBEZWNpbWFsKCcwLjEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCczLjYnKSwgRGVjaW1hbCgnMS4zJykpCi0gICAgICAgIERlY2ltYWwoJzEuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCA2KQotICAgICAgICBEZWNpbWFsKCc0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgyMiksIDYpCi0gICAgICAgIERlY2ltYWwoJzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcigyMiwgRGVjaW1hbCg2KSkKLSAgICAgICAgRGVjaW1hbCgnNCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX21vZF9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyB0byBiZSAiYSAtIGIgKiBuIiwgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRoZSBleGFjdAotICAgICAgICB2YWx1ZSBvZiAieCAvIGIiIChpZiB0d28gaW50ZWdlcnMgYXJlIGVxdWFsbHkgbmVhciB0aGVuIHRoZSBldmVuIG9uZQotICAgICAgICBpcyBjaG9zZW4pLiAgSWYgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUKLSAgICAgICAgc2lnbiBvZiBhLgotCi0gICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KLSAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQotICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAuOScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnNicpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCi0gICAgICAgIERlY2ltYWwoJzAuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMy42JyksIERlY2ltYWwoJzEuMycpKQotICAgICAgICBEZWNpbWFsKCctMC4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcigzLCAxMSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgzKSwgMTEpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKDMsIERlY2ltYWwoMTEpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnJlbWFpbmRlcl9uZWFyKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiByb3RhdGUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgYSByb3RhdGVkIGNvcHkgb2YgYSwgYiB0aW1lcy4KLQotICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBhIHJvdGF0ZWQgY29weSBvZiB0aGUgZGlnaXRzIGluCi0gICAgICAgIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4gIFRoZSBudW1iZXIgb2YgcGxhY2VzIG9mCi0gICAgICAgIHJvdGF0aW9uIGlzIHRha2VuIGZyb20gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwKLSAgICAgICAgd2l0aCB0aGUgcm90YXRpb24gYmVpbmcgdG8gdGhlIGxlZnQgaWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzCi0gICAgICAgIHBvc2l0aXZlIG9yIHRvIHRoZSByaWdodCBvdGhlcndpc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMzQnKSwgRGVjaW1hbCgnOCcpKQotICAgICAgICBEZWNpbWFsKCc0MDAwMDAwMDMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCi0gICAgICAgIERlY2ltYWwoJzEyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJzg5MTIzNDU2NycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzEyMzQ1Njc4OScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQotICAgICAgICBEZWNpbWFsKCczNDU2Nzg5MTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZSgxMzMzMzMzLCAxKQotICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoMTMzMzMzMyksIDEpCi0gICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoMTMzMzMzMywgRGVjaW1hbCgxKSkKLSAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEucm90YXRlKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBzYW1lX3F1YW50dW0oc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyBuZXZlciBhZmZlY3RlZCBieSBlaXRoZXIgdGhlIHNpZ24gb3IgdGhlIGNvZWZmaWNpZW50IG9mCi0gICAgICAgIGVpdGhlciBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMDEnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAxJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJ0luZicpLCBEZWNpbWFsKCctSW5mJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oMTAwMDAsIC0xKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoMTAwMDApLCAtMSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bSgxMDAwMCwgRGVjaW1hbCgtMSkpCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnNhbWVfcXVhbnR1bShiKQotCi0gICAgZGVmIHNjYWxlYiAoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGZpcnN0IG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWUgaXRzIGV4cC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJzAuMDc1MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCc3LjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzcuNTBFKzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYigxLCA0KQotICAgICAgICBEZWNpbWFsKCcxRSs0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgxKSwgNCkKLSAgICAgICAgRGVjaW1hbCgnMUUrNCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKDEsIERlY2ltYWwoNCkpCi0gICAgICAgIERlY2ltYWwoJzFFKzQnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc2NhbGViKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBzaGlmdChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHNoaWZ0ZWQgY29weSBvZiBhLCBiIHRpbWVzLgotCi0gICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGEgc2hpZnRlZCBjb3B5IG9mIHRoZSBkaWdpdHMKLSAgICAgICAgaW4gdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLiAgVGhlIG51bWJlciBvZiBwbGFjZXMKLSAgICAgICAgdG8gc2hpZnQgaXMgdGFrZW4gZnJvbSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLAotICAgICAgICB3aXRoIHRoZSBzaGlmdCBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKLSAgICAgICAgcG9zaXRpdmUgb3IgdG8gdGhlIHJpZ2h0IG90aGVyd2lzZS4gIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlCi0gICAgICAgIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzM0JyksIERlY2ltYWwoJzgnKSkKLSAgICAgICAgRGVjaW1hbCgnNDAwMDAwMDAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCctMicpKQotICAgICAgICBEZWNpbWFsKCcxMjM0NTY3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxMjM0NTY3ODknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQotICAgICAgICBEZWNpbWFsKCczNDU2Nzg5MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KDg4ODg4ODg4LCAyKQotICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoODg4ODg4ODgpLCAyKQotICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KDg4ODg4ODg4LCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc2hpZnQoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHNxcnQoc2VsZiwgYSk6Ci0gICAgICAgICIiIlNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi4KLQotICAgICAgICBJZiB0aGUgcmVzdWx0IG11c3QgYmUgaW5leGFjdCwgaXQgaXMgcm91bmRlZCB1c2luZyB0aGUgcm91bmQtaGFsZi1ldmVuCi0gICAgICAgIGFsZ29yaXRobS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJy0wJykpCi0gICAgICAgIERlY2ltYWwoJy0wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzAuMzknKSkKLSAgICAgICAgRGVjaW1hbCgnMC42MjQ0OTk4MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEuMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzcnKSkKLSAgICAgICAgRGVjaW1hbCgnMi42NDU3NTEzMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCczLjE2MjI3NzY2JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KDIpCi0gICAgICAgIERlY2ltYWwoJzEuNDE0MjEzNTYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnByZWMKLSAgICAgICAgOQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc3FydChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgc3VidHJhY3Qoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMS4wNycpKQotICAgICAgICBEZWNpbWFsKCcwLjIzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMS4zMCcpKQotICAgICAgICBEZWNpbWFsKCcwLjAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMi4wNycpKQotICAgICAgICBEZWNpbWFsKCctMC43NycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoOCwgNSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCg4KSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoOCwgRGVjaW1hbCg1KSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX3N1Yl9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGEpOgotICAgICAgICAiIiJDb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi4KLQotICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgY29udGV4dC4KLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnRvX2VuZ19zdHJpbmcoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHRvX3NjaV9zdHJpbmcoc2VsZiwgYSk6Ci0gICAgICAgICIiIkNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgotCi0gICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0LgotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuX19zdHJfXyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgdG9faW50ZWdyYWxfZXhhY3Qoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJvdW5kcyB0byBhbiBpbnRlZ2VyLgotCi0gICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKLSAgICAgICAgYXMgdXNpbmcgdGhlIHF1YW50aXplKCkgb3BlcmF0aW9uIHVzaW5nIHRoZSBnaXZlbiBvcGVyYW5kIGFzIHRoZQotICAgICAgICBsZWZ0LWhhbmQtb3BlcmFuZCwgMUUrMCBhcyB0aGUgcmlnaHQtaGFuZC1vcGVyYW5kLCBhbmQgdGhlIHByZWNpc2lvbgotICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmc7IEluZXhhY3QgYW5kIFJvdW5kZWQgZmxhZ3MKLSAgICAgICAgYXJlIGFsbG93ZWQgaW4gdGhpcyBvcGVyYXRpb24uICBUaGUgcm91bmRpbmcgbW9kZSBpcyB0YWtlbiBmcm9tIHRoZQotICAgICAgICBjb250ZXh0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMC4wJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEwMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTBFKzUnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCc3Ljg5RSs3NycpKQotICAgICAgICBEZWNpbWFsKCc3Ljg5RSs3NycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEudG9faW50ZWdyYWxfZXhhY3QoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHRvX2ludGVncmFsX3ZhbHVlKHNlbGYsIGEpOgotICAgICAgICAiIiJSb3VuZHMgdG8gYW4gaW50ZWdlci4KLQotICAgICAgICBXaGVuIHRoZSBvcGVyYW5kIGhhcyBhIG5lZ2F0aXZlIGV4cG9uZW50LCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCi0gICAgICAgIGFzIHVzaW5nIHRoZSBxdWFudGl6ZSgpIG9wZXJhdGlvbiB1c2luZyB0aGUgZ2l2ZW4gb3BlcmFuZCBhcyB0aGUKLSAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KLSAgICAgICAgb2YgdGhlIG9wZXJhbmQgYXMgdGhlIHByZWNpc2lvbiBzZXR0aW5nLCBleGNlcHQgdGhhdCBubyBmbGFncyB3aWxsCi0gICAgICAgIGJlIHNldC4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCctMTAyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMEUrNScpKQotICAgICAgICBEZWNpbWFsKCcxLjBFKzYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzcuODlFKzc3JykpCi0gICAgICAgIERlY2ltYWwoJzcuODlFKzc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCctSW5mJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS50b19pbnRlZ3JhbF92YWx1ZShjb250ZXh0PXNlbGYpCi0KLSAgICAjIHRoZSBtZXRob2QgbmFtZSBjaGFuZ2VkLCBidXQgd2UgcHJvdmlkZSBhbHNvIHRoZSBvbGQgb25lLCBmb3IgY29tcGF0aWJpbGl0eQotICAgIHRvX2ludGVncmFsID0gdG9faW50ZWdyYWxfdmFsdWUKLQotY2xhc3MgX1dvcmtSZXAob2JqZWN0KToKLSAgICBfX3Nsb3RzX18gPSAoJ3NpZ24nLCdpbnQnLCdleHAnKQotICAgICMgc2lnbjogMCBvciAxCi0gICAgIyBpbnQ6ICBpbnQKLSAgICAjIGV4cDogIE5vbmUsIGludCwgb3Igc3RyaW5nCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9Tm9uZSk6Ci0gICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNpZ24gPSBOb25lCi0gICAgICAgICAgICBzZWxmLmludCA9IDAKLSAgICAgICAgICAgIHNlbGYuZXhwID0gTm9uZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIERlY2ltYWwpOgotICAgICAgICAgICAgc2VsZi5zaWduID0gdmFsdWUuX3NpZ24KLSAgICAgICAgICAgIHNlbGYuaW50ID0gaW50KHZhbHVlLl9pbnQpCi0gICAgICAgICAgICBzZWxmLmV4cCA9IHZhbHVlLl9leHAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKQotICAgICAgICAgICAgc2VsZi5zaWduID0gdmFsdWVbMF0KLSAgICAgICAgICAgIHNlbGYuaW50ID0gdmFsdWVbMV0KLSAgICAgICAgICAgIHNlbGYuZXhwID0gdmFsdWVbMl0KLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIoJXIsICVyLCAlcikiICUgKHNlbGYuc2lnbiwgc2VsZi5pbnQsIHNlbGYuZXhwKQotCi0gICAgX19zdHJfXyA9IF9fcmVwcl9fCi0KLQotCi1kZWYgX25vcm1hbGl6ZShvcDEsIG9wMiwgcHJlYyA9IDApOgotICAgICIiIk5vcm1hbGl6ZXMgb3AxLCBvcDIgdG8gaGF2ZSB0aGUgc2FtZSBleHAgYW5kIGxlbmd0aCBvZiBjb2VmZmljaWVudC4KLQotICAgIERvbmUgZHVyaW5nIGFkZGl0aW9uLgotICAgICIiIgotICAgIGlmIG9wMS5leHAgPCBvcDIuZXhwOgotICAgICAgICB0bXAgPSBvcDIKLSAgICAgICAgb3RoZXIgPSBvcDEKLSAgICBlbHNlOgotICAgICAgICB0bXAgPSBvcDEKLSAgICAgICAgb3RoZXIgPSBvcDIKLQotICAgICMgTGV0IGV4cCA9IG1pbih0bXAuZXhwIC0gMSwgdG1wLmFkanVzdGVkKCkgLSBwcmVjaXNpb24gLSAxKS4KLSAgICAjIFRoZW4gYWRkaW5nIDEwKipleHAgdG8gdG1wIGhhcyB0aGUgc2FtZSBlZmZlY3QgKGFmdGVyIHJvdW5kaW5nKQotICAgICMgYXMgYWRkaW5nIGFueSBwb3NpdGl2ZSBxdWFudGl0eSBzbWFsbGVyIHRoYW4gMTAqKmV4cDsgc2ltaWxhcmx5Ci0gICAgIyBmb3Igc3VidHJhY3Rpb24uICBTbyBpZiBvdGhlciBpcyBzbWFsbGVyIHRoYW4gMTAqKmV4cCB3ZSByZXBsYWNlCi0gICAgIyBpdCB3aXRoIDEwKipleHAuICBUaGlzIGF2b2lkcyB0bXAuZXhwIC0gb3RoZXIuZXhwIGdldHRpbmcgdG9vIGxhcmdlLgotICAgIHRtcF9sZW4gPSBsZW4oc3RyKHRtcC5pbnQpKQotICAgIG90aGVyX2xlbiA9IGxlbihzdHIob3RoZXIuaW50KSkKLSAgICBleHAgPSB0bXAuZXhwICsgbWluKC0xLCB0bXBfbGVuIC0gcHJlYyAtIDIpCi0gICAgaWYgb3RoZXJfbGVuICsgb3RoZXIuZXhwIC0gMSA8IGV4cDoKLSAgICAgICAgb3RoZXIuaW50ID0gMQotICAgICAgICBvdGhlci5leHAgPSBleHAKLQotICAgIHRtcC5pbnQgKj0gMTAgKiogKHRtcC5leHAgLSBvdGhlci5leHApCi0gICAgdG1wLmV4cCA9IG90aGVyLmV4cAotICAgIHJldHVybiBvcDEsIG9wMgotCi0jIyMjIyBJbnRlZ2VyIGFyaXRobWV0aWMgZnVuY3Rpb25zIHVzZWQgYnkgbG4sIGxvZzEwLCBleHAgYW5kIF9fcG93X18gIyMjIyMKLQotX25iaXRzID0gaW50LmJpdF9sZW5ndGgKLQotZGVmIF9kZWNpbWFsX2xzaGlmdF9leGFjdChuLCBlKToKLSAgICAiIiIgR2l2ZW4gaW50ZWdlcnMgbiBhbmQgZSwgcmV0dXJuIG4gKiAxMCoqZSBpZiBpdCdzIGFuIGludGVnZXIsIGVsc2UgTm9uZS4KLQotICAgIFRoZSBjb21wdXRhdGlvbiBpcyBkZXNpZ25lZCB0byBhdm9pZCBjb21wdXRpbmcgbGFyZ2UgcG93ZXJzIG9mIDEwCi0gICAgdW5uZWNlc3NhcmlseS4KLQotICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMywgNCkKLSAgICAzMDAwMAotICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMzAwLCAtOTk5OTk5OTk5KSAgIyByZXR1cm5zIE5vbmUKLQotICAgICIiIgotICAgIGlmIG4gPT0gMDoKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbGlmIGUgPj0gMDoKLSAgICAgICAgcmV0dXJuIG4gKiAxMCoqZQotICAgIGVsc2U6Ci0gICAgICAgICMgdmFsX24gPSBsYXJnZXN0IHBvd2VyIG9mIDEwIGRpdmlkaW5nIG4uCi0gICAgICAgIHN0cl9uID0gc3RyKGFicyhuKSkKLSAgICAgICAgdmFsX24gPSBsZW4oc3RyX24pIC0gbGVuKHN0cl9uLnJzdHJpcCgnMCcpKQotICAgICAgICByZXR1cm4gTm9uZSBpZiB2YWxfbiA8IC1lIGVsc2UgbiAvLyAxMCoqLWUKLQotZGVmIF9zcXJ0X25lYXJlc3QobiwgYSk6Ci0gICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcG9zaXRpdmUgaW50ZWdlciBuLiAgYSBpcwotICAgIGFuIGluaXRpYWwgYXBwcm94aW1hdGlvbiB0byB0aGUgc3F1YXJlIHJvb3QuICBBbnkgcG9zaXRpdmUgaW50ZWdlcgotICAgIHdpbGwgZG8gZm9yIGEsIGJ1dCB0aGUgY2xvc2VyIGEgaXMgdG8gdGhlIHNxdWFyZSByb290IG9mIG4gdGhlCi0gICAgZmFzdGVyIGNvbnZlcmdlbmNlIHdpbGwgYmUuCi0KLSAgICAiIiIKLSAgICBpZiBuIDw9IDAgb3IgYSA8PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCb3RoIGFyZ3VtZW50cyB0byBfc3FydF9uZWFyZXN0IHNob3VsZCBiZSBwb3NpdGl2ZS4iKQotCi0gICAgYj0wCi0gICAgd2hpbGUgYSAhPSBiOgotICAgICAgICBiLCBhID0gYSwgYS0tbi8vYT4+MQotICAgIHJldHVybiBhCi0KLWRlZiBfcnNoaWZ0X25lYXJlc3QoeCwgc2hpZnQpOgotICAgICIiIkdpdmVuIGFuIGludGVnZXIgeCBhbmQgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIHNoaWZ0LCByZXR1cm4gY2xvc2VzdAotICAgIGludGVnZXIgdG8geCAvIDIqKnNoaWZ0OyB1c2Ugcm91bmQtdG8tZXZlbiBpbiBjYXNlIG9mIGEgdGllLgotCi0gICAgIiIiCi0gICAgYiwgcSA9IDEgPDwgc2hpZnQsIHggPj4gc2hpZnQKLSAgICByZXR1cm4gcSArICgyKih4ICYgKGItMSkpICsgKHEmMSkgPiBiKQotCi1kZWYgX2Rpdl9uZWFyZXN0KGEsIGIpOgotICAgICIiIkNsb3Nlc3QgaW50ZWdlciB0byBhL2IsIGEgYW5kIGIgcG9zaXRpdmUgaW50ZWdlcnM7IHJvdW5kcyB0byBldmVuCi0gICAgaW4gdGhlIGNhc2Ugb2YgYSB0aWUuCi0KLSAgICAiIiIKLSAgICBxLCByID0gZGl2bW9kKGEsIGIpCi0gICAgcmV0dXJuIHEgKyAoMipyICsgKHEmMSkgPiBiKQotCi1kZWYgX2lsb2coeCwgTSwgTCA9IDgpOgotICAgICIiIkludGVnZXIgYXBwcm94aW1hdGlvbiB0byBNKmxvZyh4L00pLCB3aXRoIGFic29sdXRlIGVycm9yIGJvdW5kYWJsZQotICAgIGluIHRlcm1zIG9ubHkgb2YgeC9NLgotCi0gICAgR2l2ZW4gcG9zaXRpdmUgaW50ZWdlcnMgeCBhbmQgTSwgcmV0dXJuIGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0bwotICAgIE0gKiBsb2coeC9NKS4gIEZvciBMID0gOCBhbmQgMC4xIDw9IHgvTSA8PSAxMCB0aGUgZGlmZmVyZW5jZQotICAgIGJldHdlZW4gdGhlIGFwcHJveGltYXRpb24gYW5kIHRoZSBleGFjdCByZXN1bHQgaXMgYXQgbW9zdCAyMi4gIEZvcgotICAgIEwgPSA4IGFuZCAxLjAgPD0geC9NIDw9IDEwLjAgdGhlIGRpZmZlcmVuY2UgaXMgYXQgbW9zdCAxNS4gIEluCi0gICAgYm90aCBjYXNlcyB0aGVzZSBhcmUgdXBwZXIgYm91bmRzIG9uIHRoZSBlcnJvcjsgaXQgd2lsbCB1c3VhbGx5IGJlCi0gICAgbXVjaCBzbWFsbGVyLiIiIgotCi0gICAgIyBUaGUgYmFzaWMgYWxnb3JpdGhtIGlzIHRoZSBmb2xsb3dpbmc6IGxldCBsb2cxcCBiZSB0aGUgZnVuY3Rpb24KLSAgICAjIGxvZzFwKHgpID0gbG9nKDEreCkuICBUaGVuIGxvZyh4L00pID0gbG9nMXAoKHgtTSkvTSkuICBXZSB1c2UKLSAgICAjIHRoZSByZWR1Y3Rpb24KLSAgICAjCi0gICAgIyAgICBsb2cxcCh5KSA9IDIqbG9nMXAoeS8oMStzcXJ0KDEreSkpKQotICAgICMKLSAgICAjIHJlcGVhdGVkbHkgdW50aWwgdGhlIGFyZ3VtZW50IHRvIGxvZzFwIGlzIHNtYWxsICg8IDIqKi1MIGluCi0gICAgIyBhYnNvbHV0ZSB2YWx1ZSkuICBGb3Igc21hbGwgeSB3ZSBjYW4gdXNlIHRoZSBUYXlsb3Igc2VyaWVzCi0gICAgIyBleHBhbnNpb24KLSAgICAjCi0gICAgIyAgICBsb2cxcCh5KSB+IHkgLSB5KioyLzIgKyB5KiozLzMgLSAuLi4gLSAoLXkpKipUL1QKLSAgICAjCi0gICAgIyB0cnVuY2F0aW5nIGF0IFQgc3VjaCB0aGF0IHkqKlQgaXMgc21hbGwgZW5vdWdoLiAgVGhlIHdob2xlCi0gICAgIyBjb21wdXRhdGlvbiBpcyBjYXJyaWVkIG91dCBpbiBhIGZvcm0gb2YgZml4ZWQtcG9pbnQgYXJpdGhtZXRpYywKLSAgICAjIHdpdGggYSByZWFsIG51bWJlciB6IGJlaW5nIHJlcHJlc2VudGVkIGJ5IGFuIGludGVnZXIKLSAgICAjIGFwcHJveGltYXRpb24gdG8geipNLiAgVG8gYXZvaWQgbG9zcyBvZiBwcmVjaXNpb24sIHRoZSB5IGJlbG93Ci0gICAgIyBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gMioqUip5Kk0sIHdoZXJlIFIgaXMgdGhlCi0gICAgIyBudW1iZXIgb2YgcmVkdWN0aW9ucyBwZXJmb3JtZWQgc28gZmFyLgotCi0gICAgeSA9IHgtTQotICAgICMgYXJndW1lbnQgcmVkdWN0aW9uOyBSID0gbnVtYmVyIG9mIHJlZHVjdGlvbnMgcGVyZm9ybWVkCi0gICAgUiA9IDAKLSAgICB3aGlsZSAoUiA8PSBMIGFuZCBhYnMoeSkgPDwgTC1SID49IE0gb3IKLSAgICAgICAgICAgUiA+IEwgYW5kIGFicyh5KSA+PiBSLUwgPj0gTSk6Ci0gICAgICAgIHkgPSBfZGl2X25lYXJlc3QoKE0qeSkgPDwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNICsgX3NxcnRfbmVhcmVzdChNKihNK19yc2hpZnRfbmVhcmVzdCh5LCBSKSksIE0pKQotICAgICAgICBSICs9IDEKLQotICAgICMgVGF5bG9yIHNlcmllcyB3aXRoIFQgdGVybXMKLSAgICBUID0gLWludCgtMTAqbGVuKHN0cihNKSkvLygzKkwpKQotICAgIHlzaGlmdCA9IF9yc2hpZnRfbmVhcmVzdCh5LCBSKQotICAgIHcgPSBfZGl2X25lYXJlc3QoTSwgVCkKLSAgICBmb3IgayBpbiByYW5nZShULTEsIDAsIC0xKToKLSAgICAgICAgdyA9IF9kaXZfbmVhcmVzdChNLCBrKSAtIF9kaXZfbmVhcmVzdCh5c2hpZnQqdywgTSkKLQotICAgIHJldHVybiBfZGl2X25lYXJlc3Qodyp5LCBNKQotCi1kZWYgX2Rsb2cxMChjLCBlLCBwKToKLSAgICAiIiJHaXZlbiBpbnRlZ2VycyBjLCBlIGFuZCBwIHdpdGggYyA+IDAsIHAgPj0gMCwgY29tcHV0ZSBhbiBpbnRlZ2VyCi0gICAgYXBwcm94aW1hdGlvbiB0byAxMCoqcCAqIGxvZzEwKGMqMTAqKmUpLCB3aXRoIGFuIGFic29sdXRlIGVycm9yIG9mCi0gICAgYXQgbW9zdCAxLiAgQXNzdW1lcyB0aGF0IGMqMTAqKmUgaXMgbm90IGV4YWN0bHkgMS4iIiIKLQotICAgICMgaW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDI7IGNvbXBlbnNhdGUgZm9yIHRoaXMgYnkgZGl2aWRpbmcKLSAgICAjIGZpbmFsIHJlc3VsdCBieSAxMDAKLSAgICBwICs9IDIKLQotICAgICMgd3JpdGUgYyoxMCoqZSBhcyBkKjEwKipmIHdpdGggZWl0aGVyOgotICAgICMgICBmID49IDAgYW5kIDEgPD0gZCA8PSAxMCwgb3IKLSAgICAjICAgZiA8PSAwIGFuZCAwLjEgPD0gZCA8PSAxLgotICAgICMgVGh1cyBmb3IgYyoxMCoqZSBjbG9zZSB0byAxLCBmID0gMAotICAgIGwgPSBsZW4oc3RyKGMpKQotICAgIGYgPSBlK2wgLSAoZStsID49IDEpCi0KLSAgICBpZiBwID4gMDoKLSAgICAgICAgTSA9IDEwKipwCi0gICAgICAgIGsgPSBlK3AtZgotICAgICAgICBpZiBrID49IDA6Ci0gICAgICAgICAgICBjICo9IDEwKiprCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjID0gX2Rpdl9uZWFyZXN0KGMsIDEwKiotaykKLQotICAgICAgICBsb2dfZCA9IF9pbG9nKGMsIE0pICMgZXJyb3IgPCA1ICsgMjIgPSAyNwotICAgICAgICBsb2dfMTAgPSBfbG9nMTBfZGlnaXRzKHApICMgZXJyb3IgPCAxCi0gICAgICAgIGxvZ19kID0gX2Rpdl9uZWFyZXN0KGxvZ19kKk0sIGxvZ18xMCkKLSAgICAgICAgbG9nX3RlbnBvd2VyID0gZipNICMgZXhhY3QKLSAgICBlbHNlOgotICAgICAgICBsb2dfZCA9IDAgICMgZXJyb3IgPCAyLjMxCi0gICAgICAgIGxvZ190ZW5wb3dlciA9IF9kaXZfbmVhcmVzdChmLCAxMCoqLXApICMgZXJyb3IgPCAwLjUKLQotICAgIHJldHVybiBfZGl2X25lYXJlc3QobG9nX3RlbnBvd2VyK2xvZ19kLCAxMDApCi0KLWRlZiBfZGxvZyhjLCBlLCBwKToKLSAgICAiIiJHaXZlbiBpbnRlZ2VycyBjLCBlIGFuZCBwIHdpdGggYyA+IDAsIGNvbXB1dGUgYW4gaW50ZWdlcgotICAgIGFwcHJveGltYXRpb24gdG8gMTAqKnAgKiBsb2coYyoxMCoqZSksIHdpdGggYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICBhdCBtb3N0IDEuICBBc3N1bWVzIHRoYXQgYyoxMCoqZSBpcyBub3QgZXhhY3RseSAxLiIiIgotCi0gICAgIyBJbmNyZWFzZSBwcmVjaXNpb24gYnkgMi4gVGhlIHByZWNpc2lvbiBpbmNyZWFzZSBpcyBjb21wZW5zYXRlZAotICAgICMgZm9yIGF0IHRoZSBlbmQgd2l0aCBhIGRpdmlzaW9uIGJ5IDEwMC4KLSAgICBwICs9IDIKLQotICAgICMgcmV3cml0ZSBjKjEwKiplIGFzIGQqMTAqKmYgd2l0aCBlaXRoZXIgZiA+PSAwIGFuZCAxIDw9IGQgPD0gMTAsCi0gICAgIyBvciBmIDw9IDAgYW5kIDAuMSA8PSBkIDw9IDEuICBUaGVuIHdlIGNhbiBjb21wdXRlIDEwKipwICogbG9nKGMqMTAqKmUpCi0gICAgIyBhcyAxMCoqcCAqIGxvZyhkKSArIDEwKipwKmYgKiBsb2coMTApLgotICAgIGwgPSBsZW4oc3RyKGMpKQotICAgIGYgPSBlK2wgLSAoZStsID49IDEpCi0KLSAgICAjIGNvbXB1dGUgYXBwcm94aW1hdGlvbiB0byAxMCoqcCpsb2coZCksIHdpdGggZXJyb3IgPCAyNwotICAgIGlmIHAgPiAwOgotICAgICAgICBrID0gZStwLWYKLSAgICAgICAgaWYgayA+PSAwOgotICAgICAgICAgICAgYyAqPSAxMCoqawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYyA9IF9kaXZfbmVhcmVzdChjLCAxMCoqLWspICAjIGVycm9yIG9mIDw9IDAuNSBpbiBjCi0KLSAgICAgICAgIyBfaWxvZyBtYWduaWZpZXMgZXhpc3RpbmcgZXJyb3IgaW4gYyBieSBhIGZhY3RvciBvZiBhdCBtb3N0IDEwCi0gICAgICAgIGxvZ19kID0gX2lsb2coYywgMTAqKnApICMgZXJyb3IgPCA1ICsgMjIgPSAyNwotICAgIGVsc2U6Ci0gICAgICAgICMgcCA8PSAwOiBqdXN0IGFwcHJveGltYXRlIHRoZSB3aG9sZSB0aGluZyBieSAwOyBlcnJvciA8IDIuMzEKLSAgICAgICAgbG9nX2QgPSAwCi0KLSAgICAjIGNvbXB1dGUgYXBwcm94aW1hdGlvbiB0byBmKjEwKipwKmxvZygxMCksIHdpdGggZXJyb3IgPCAxMS4KLSAgICBpZiBmOgotICAgICAgICBleHRyYSA9IGxlbihzdHIoYWJzKGYpKSktMQotICAgICAgICBpZiBwICsgZXh0cmEgPj0gMDoKLSAgICAgICAgICAgICMgZXJyb3IgaW4gZiAqIF9sb2cxMF9kaWdpdHMocCtleHRyYSkgPCB8ZnwgKiAxID0gfGZ8Ci0gICAgICAgICAgICAjIGFmdGVyIGRpdmlzaW9uLCBlcnJvciA8IHxmfC8xMCoqZXh0cmEgKyAwLjUgPCAxMCArIDAuNSA8IDExCi0gICAgICAgICAgICBmX2xvZ190ZW4gPSBfZGl2X25lYXJlc3QoZipfbG9nMTBfZGlnaXRzKHArZXh0cmEpLCAxMCoqZXh0cmEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmX2xvZ190ZW4gPSAwCi0gICAgZWxzZToKLSAgICAgICAgZl9sb2dfdGVuID0gMAotCi0gICAgIyBlcnJvciBpbiBzdW0gPCAxMSsyNyA9IDM4OyBlcnJvciBhZnRlciBkaXZpc2lvbiA8IDAuMzggKyAwLjUgPCAxCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdChmX2xvZ190ZW4gKyBsb2dfZCwgMTAwKQotCi1jbGFzcyBfTG9nMTBNZW1vaXplKG9iamVjdCk6Ci0gICAgIiIiQ2xhc3MgdG8gY29tcHV0ZSwgc3RvcmUsIGFuZCBhbGxvdyByZXRyaWV2YWwgb2YsIGRpZ2l0cyBvZiB0aGUKLSAgICBjb25zdGFudCBsb2coMTApID0gMi4zMDI1ODUuLi4uICBUaGlzIGNvbnN0YW50IGlzIG5lZWRlZCBieQotICAgIERlY2ltYWwubG4sIERlY2ltYWwubG9nMTAsIERlY2ltYWwuZXhwIGFuZCBEZWNpbWFsLl9fcG93X18uIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmRpZ2l0cyA9ICIyMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjA3NjAxMTAxNDg4NiIKLQotICAgIGRlZiBnZXRkaWdpdHMoc2VsZiwgcCk6Ci0gICAgICAgICIiIkdpdmVuIGFuIGludGVnZXIgcCA+PSAwLCByZXR1cm4gZmxvb3IoMTAqKnApKmxvZygxMCkuCi0KLSAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGYuZ2V0ZGlnaXRzKDMpIHJldHVybnMgMjMwMi4KLSAgICAgICAgIiIiCi0gICAgICAgICMgZGlnaXRzIGFyZSBzdG9yZWQgYXMgYSBzdHJpbmcsIGZvciBxdWljayBjb252ZXJzaW9uIHRvCi0gICAgICAgICMgaW50ZWdlciBpbiB0aGUgY2FzZSB0aGF0IHdlJ3ZlIGFscmVhZHkgY29tcHV0ZWQgZW5vdWdoCi0gICAgICAgICMgZGlnaXRzOyB0aGUgc3RvcmVkIGRpZ2l0cyBzaG91bGQgYWx3YXlzIGJlIGNvcnJlY3QKLSAgICAgICAgIyAodHJ1bmNhdGVkLCBub3Qgcm91bmRlZCB0byBuZWFyZXN0KS4KLSAgICAgICAgaWYgcCA8IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwIHNob3VsZCBiZSBub25uZWdhdGl2ZSIpCi0KLSAgICAgICAgaWYgcCA+PSBsZW4oc2VsZi5kaWdpdHMpOgotICAgICAgICAgICAgIyBjb21wdXRlIHArMywgcCs2LCBwKzksIC4uLiBkaWdpdHM7IGNvbnRpbnVlIHVudGlsIGF0Ci0gICAgICAgICAgICAjIGxlYXN0IG9uZSBvZiB0aGUgZXh0cmEgZGlnaXRzIGlzIG5vbnplcm8KLSAgICAgICAgICAgIGV4dHJhID0gMwotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAjIGNvbXB1dGUgcCtleHRyYSBkaWdpdHMsIGNvcnJlY3QgdG8gd2l0aGluIDF1bHAKLSAgICAgICAgICAgICAgICBNID0gMTAqKihwK2V4dHJhKzIpCi0gICAgICAgICAgICAgICAgZGlnaXRzID0gc3RyKF9kaXZfbmVhcmVzdChfaWxvZygxMCpNLCBNKSwgMTAwKSkKLSAgICAgICAgICAgICAgICBpZiBkaWdpdHNbLWV4dHJhOl0gIT0gJzAnKmV4dHJhOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKLSAgICAgICAgICAgICMga2VlcCBhbGwgcmVsaWFibGUgZGlnaXRzIHNvIGZhcjsgcmVtb3ZlIHRyYWlsaW5nIHplcm9zCi0gICAgICAgICAgICAjIGFuZCBuZXh0IG5vbnplcm8gZGlnaXQKLSAgICAgICAgICAgIHNlbGYuZGlnaXRzID0gZGlnaXRzLnJzdHJpcCgnMCcpWzotMV0KLSAgICAgICAgcmV0dXJuIGludChzZWxmLmRpZ2l0c1s6cCsxXSkKLQotX2xvZzEwX2RpZ2l0cyA9IF9Mb2cxME1lbW9pemUoKS5nZXRkaWdpdHMKLQotZGVmIF9pZXhwKHgsIE0sIEw9OCk6Ci0gICAgIiIiR2l2ZW4gaW50ZWdlcnMgeCBhbmQgTSwgTSA+IDAsIHN1Y2ggdGhhdCB4L00gaXMgc21hbGwgaW4gYWJzb2x1dGUKLSAgICB2YWx1ZSwgY29tcHV0ZSBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gTSpleHAoeC9NKS4gIEZvciAwIDw9Ci0gICAgeC9NIDw9IDIuNCwgdGhlIGFic29sdXRlIGVycm9yIGluIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSA2MCAoYW5kCi0gICAgaXMgdXN1YWxseSBtdWNoIHNtYWxsZXIpLiIiIgotCi0gICAgIyBBbGdvcml0aG06IHRvIGNvbXB1dGUgZXhwKHopIGZvciBhIHJlYWwgbnVtYmVyIHosIGZpcnN0IGRpdmlkZSB6Ci0gICAgIyBieSBhIHN1aXRhYmxlIHBvd2VyIFIgb2YgMiBzbyB0aGF0IHx6LzIqKlJ8IDwgMioqLUwuICBUaGVuCi0gICAgIyBjb21wdXRlIGV4cG0xKHovMioqUikgPSBleHAoei8yKipSKSAtIDEgdXNpbmcgdGhlIHVzdWFsIFRheWxvcgotICAgICMgc2VyaWVzCi0gICAgIwotICAgICMgICAgIGV4cG0xKHgpID0geCArIHgqKjIvMiEgKyB4KiozLzMhICsgLi4uCi0gICAgIwotICAgICMgTm93IHVzZSB0aGUgaWRlbnRpdHkKLSAgICAjCi0gICAgIyAgICAgZXhwbTEoMngpID0gZXhwbTEoeCkqKGV4cG0xKHgpKzIpCi0gICAgIwotICAgICMgUiB0aW1lcyB0byBjb21wdXRlIHRoZSBzZXF1ZW5jZSBleHBtMSh6LzIqKlIpLAotICAgICMgZXhwbTEoei8yKiooUi0xKSksIC4uLiAsIGV4cCh6LzIpLCBleHAoeikuCi0KLSAgICAjIEZpbmQgUiBzdWNoIHRoYXQgeC8yKipSL00gPD0gMioqLUwKLSAgICBSID0gX25iaXRzKCh4PDxMKS8vTSkKLQotICAgICMgVGF5bG9yIHNlcmllcy4gICgyKipMKSoqVCA+IE0KLSAgICBUID0gLWludCgtMTAqbGVuKHN0cihNKSkvLygzKkwpKQotICAgIHkgPSBfZGl2X25lYXJlc3QoeCwgVCkKLSAgICBNc2hpZnQgPSBNPDxSCi0gICAgZm9yIGkgaW4gcmFuZ2UoVC0xLCAwLCAtMSk6Ci0gICAgICAgIHkgPSBfZGl2X25lYXJlc3QoeCooTXNoaWZ0ICsgeSksIE1zaGlmdCAqIGkpCi0KLSAgICAjIEV4cGFuc2lvbgotICAgIGZvciBrIGluIHJhbmdlKFItMSwgLTEsIC0xKToKLSAgICAgICAgTXNoaWZ0ID0gTTw8KGsrMikKLSAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCh5Kih5K01zaGlmdCksIE1zaGlmdCkKLQotICAgIHJldHVybiBNK3kKLQotZGVmIF9kZXhwKGMsIGUsIHApOgotICAgICIiIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiB0byBleHAoYyoxMCoqZSksIHdpdGggcCBkZWNpbWFsIHBsYWNlcyBvZgotICAgIHByZWNpc2lvbi4KLQotICAgIFJldHVybnMgaW50ZWdlcnMgZCwgZiBzdWNoIHRoYXQ6Ci0KLSAgICAgIDEwKioocC0xKSA8PSBkIDw9IDEwKipwLCBhbmQKLSAgICAgIChkLTEpKjEwKipmIDwgZXhwKGMqMTAqKmUpIDwgKGQrMSkqMTAqKmYKLQotICAgIEluIG90aGVyIHdvcmRzLCBkKjEwKipmIGlzIGFuIGFwcHJveGltYXRpb24gdG8gZXhwKGMqMTAqKmUpIHdpdGggcAotICAgIGRpZ2l0cyBvZiBwcmVjaXNpb24sIGFuZCB3aXRoIGFuIGVycm9yIGluIGQgb2YgYXQgbW9zdCAxLiAgVGhpcyBpcwotICAgIGFsbW9zdCwgYnV0IG5vdCBxdWl0ZSwgdGhlIHNhbWUgYXMgdGhlIGVycm9yIGJlaW5nIDwgMXVscDogd2hlbiBkCi0gICAgPSAxMCoqKHAtMSkgdGhlIGVycm9yIGNvdWxkIGJlIHVwIHRvIDEwIHVscC4iIiIKLQotICAgICMgd2UnbGwgY2FsbCBpZXhwIHdpdGggTSA9IDEwKioocCsyKSwgZ2l2aW5nIHArMyBkaWdpdHMgb2YgcHJlY2lzaW9uCi0gICAgcCArPSAyCi0KLSAgICAjIGNvbXB1dGUgbG9nKDEwKSB3aXRoIGV4dHJhIHByZWNpc2lvbiA9IGFkanVzdGVkIGV4cG9uZW50IG9mIGMqMTAqKmUKLSAgICBleHRyYSA9IG1heCgwLCBlICsgbGVuKHN0cihjKSkgLSAxKQotICAgIHEgPSBwICsgZXh0cmEKLQotICAgICMgY29tcHV0ZSBxdW90aWVudCBjKjEwKiplLyhsb2coMTApKSA9IGMqMTAqKihlK3EpLyhsb2coMTApKjEwKipxKSwKLSAgICAjIHJvdW5kaW5nIGRvd24KLSAgICBzaGlmdCA9IGUrcQotICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgIGNzaGlmdCA9IGMqMTAqKnNoaWZ0Ci0gICAgZWxzZToKLSAgICAgICAgY3NoaWZ0ID0gYy8vMTAqKi1zaGlmdAotICAgIHF1b3QsIHJlbSA9IGRpdm1vZChjc2hpZnQsIF9sb2cxMF9kaWdpdHMocSkpCi0KLSAgICAjIHJlZHVjZSByZW1haW5kZXIgYmFjayB0byBvcmlnaW5hbCBwcmVjaXNpb24KLSAgICByZW0gPSBfZGl2X25lYXJlc3QocmVtLCAxMCoqZXh0cmEpCi0KLSAgICAjIGVycm9yIGluIHJlc3VsdCBvZiBfaWV4cCA8IDEyMDsgIGVycm9yIGFmdGVyIGRpdmlzaW9uIDwgMC42MgotICAgIHJldHVybiBfZGl2X25lYXJlc3QoX2lleHAocmVtLCAxMCoqcCksIDEwMDApLCBxdW90IC0gcCArIDMKLQotZGVmIF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHApOgotICAgICIiIkdpdmVuIGludGVnZXJzIHhjLCB4ZSwgeWMgYW5kIHllIHJlcHJlc2VudGluZyBEZWNpbWFscyB4ID0geGMqMTAqKnhlIGFuZAotICAgIHkgPSB5YyoxMCoqeWUsIGNvbXB1dGUgeCoqeS4gIFJldHVybnMgYSBwYWlyIG9mIGludGVnZXJzIChjLCBlKSBzdWNoIHRoYXQ6Ci0KLSAgICAgIDEwKioocC0xKSA8PSBjIDw9IDEwKipwLCBhbmQKLSAgICAgIChjLTEpKjEwKiplIDwgeCoqeSA8IChjKzEpKjEwKiplCi0KLSAgICBpbiBvdGhlciB3b3JkcywgYyoxMCoqZSBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIHgqKnkgd2l0aCBwIGRpZ2l0cwotICAgIG9mIHByZWNpc2lvbiwgYW5kIHdpdGggYW4gZXJyb3IgaW4gYyBvZiBhdCBtb3N0IDEuICAoVGhpcyBpcwotICAgIGFsbW9zdCwgYnV0IG5vdCBxdWl0ZSwgdGhlIHNhbWUgYXMgdGhlIGVycm9yIGJlaW5nIDwgMXVscDogd2hlbiBjCi0gICAgPT0gMTAqKihwLTEpIHdlIGNhbiBvbmx5IGd1YXJhbnRlZSBlcnJvciA8IDEwdWxwLikKLQotICAgIFdlIGFzc3VtZSB0aGF0OiB4IGlzIHBvc2l0aXZlIGFuZCBub3QgZXF1YWwgdG8gMSwgYW5kIHkgaXMgbm9uemVyby4KLSAgICAiIiIKLQotICAgICMgRmluZCBiIHN1Y2ggdGhhdCAxMCoqKGItMSkgPD0gfHl8IDw9IDEwKipiCi0gICAgYiA9IGxlbihzdHIoYWJzKHljKSkpICsgeWUKLQotICAgICMgbG9nKHgpID0gbHhjKjEwKiooLXAtYi0xKSwgdG8gcCtiKzEgcGxhY2VzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAgbHhjID0gX2Rsb2coeGMsIHhlLCBwK2IrMSkKLQotICAgICMgY29tcHV0ZSBwcm9kdWN0IHkqbG9nKHgpID0geWMqbHhjKjEwKiooLXAtYi0xK3llKSA9IHBjKjEwKiooLXAtMSkKLSAgICBzaGlmdCA9IHllLWIKLSAgICBpZiBzaGlmdCA+PSAwOgotICAgICAgICBwYyA9IGx4Yyp5YyoxMCoqc2hpZnQKLSAgICBlbHNlOgotICAgICAgICBwYyA9IF9kaXZfbmVhcmVzdChseGMqeWMsIDEwKiotc2hpZnQpCi0KLSAgICBpZiBwYyA9PSAwOgotICAgICAgICAjIHdlIHByZWZlciBhIHJlc3VsdCB0aGF0IGlzbid0IGV4YWN0bHkgMTsgdGhpcyBtYWtlcyBpdAotICAgICAgICAjIGVhc2llciB0byBjb21wdXRlIGEgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0IGluIF9fcG93X18KLSAgICAgICAgaWYgKChsZW4oc3RyKHhjKSkgKyB4ZSA+PSAxKSA9PSAoeWMgPiAwKSk6ICMgaWYgeCoqeSA+IDE6Ci0gICAgICAgICAgICBjb2VmZiwgZXhwID0gMTAqKihwLTEpKzEsIDEtcAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29lZmYsIGV4cCA9IDEwKipwLTEsIC1wCi0gICAgZWxzZToKLSAgICAgICAgY29lZmYsIGV4cCA9IF9kZXhwKHBjLCAtKHArMSksIHArMSkKLSAgICAgICAgY29lZmYgPSBfZGl2X25lYXJlc3QoY29lZmYsIDEwKQotICAgICAgICBleHAgKz0gMQotCi0gICAgcmV0dXJuIGNvZWZmLCBleHAKLQotZGVmIF9sb2cxMF9sYihjLCBjb3JyZWN0aW9uID0gewotICAgICAgICAnMSc6IDEwMCwgJzInOiA3MCwgJzMnOiA1MywgJzQnOiA0MCwgJzUnOiAzMSwKLSAgICAgICAgJzYnOiAyMywgJzcnOiAxNiwgJzgnOiAxMCwgJzknOiA1fSk6Ci0gICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciAxMDAqbG9nMTAoYykgZm9yIGEgcG9zaXRpdmUgaW50ZWdlciBjLiIiIgotICAgIGlmIGMgPD0gMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGFyZ3VtZW50IHRvIF9sb2cxMF9sYiBzaG91bGQgYmUgbm9ubmVnYXRpdmUuIikKLSAgICBzdHJfYyA9IHN0cihjKQotICAgIHJldHVybiAxMDAqbGVuKHN0cl9jKSAtIGNvcnJlY3Rpb25bc3RyX2NbMF1dCi0KLSMjIyMjIEhlbHBlciBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1kZWYgX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9RmFsc2UsIGFsbG93X2Zsb2F0PUZhbHNlKToKLSAgICAiIiJDb252ZXJ0IG90aGVyIHRvIERlY2ltYWwuCi0KLSAgICBWZXJpZmllcyB0aGF0IGl0J3Mgb2sgdG8gdXNlIGluIGFuIGltcGxpY2l0IGNvbnN0cnVjdGlvbi4KLSAgICBJZiBhbGxvd19mbG9hdCBpcyB0cnVlLCBhbGxvdyBjb252ZXJzaW9uIGZyb20gZmxvYXQ7ICB0aGlzCi0gICAgaXMgdXNlZCBpbiB0aGUgY29tcGFyaXNvbiBtZXRob2RzIChfX2VxX18gYW5kIGZyaWVuZHMpLgotCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGVjaW1hbCk6Ci0gICAgICAgIHJldHVybiBvdGhlcgotICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGludCk6Ci0gICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKQotICAgIGlmIGFsbG93X2Zsb2F0IGFuZCBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6Ci0gICAgICAgIHJldHVybiBEZWNpbWFsLmZyb21fZmxvYXQob3RoZXIpCi0KLSAgICBpZiByYWlzZWl0OgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgb3RoZXIpCi0gICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KLWRlZiBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlciwgZXF1YWxpdHlfb3A9RmFsc2UpOgotICAgICIiIkdpdmVuIGEgRGVjaW1hbCBpbnN0YW5jZSBzZWxmIGFuZCBhIFB5dGhvbiBvYmplY3Qgb3RoZXIsIHJldHVybgotICAgIGEgcGFpciAocywgbykgb2YgRGVjaW1hbCBpbnN0YW5jZXMgc3VjaCB0aGF0ICJzIG9wIG8iIGlzCi0gICAgZXF1aXZhbGVudCB0byAic2VsZiBvcCBvdGhlciIgZm9yIGFueSBvZiB0aGUgNiBjb21wYXJpc29uCi0gICAgb3BlcmF0b3JzICJvcCIuCi0KLSAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEZWNpbWFsKToKLSAgICAgICAgcmV0dXJuIHNlbGYsIG90aGVyCi0KLSAgICAjIENvbXBhcmlzb24gd2l0aCBhIFJhdGlvbmFsIGluc3RhbmNlIChhbHNvIGluY2x1ZGVzIGludGVnZXJzKToKLSAgICAjIHNlbGYgb3Agbi9kIDw9PiBzZWxmKmQgb3AgbiAoZm9yIG4gYW5kIGQgaW50ZWdlcnMsIGQgcG9zaXRpdmUpLgotICAgICMgQSBOYU4gb3IgaW5maW5pdHkgY2FuIGJlIGxlZnQgdW5jaGFuZ2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZQotICAgICMgY29tcGFyaXNvbiByZXN1bHQuCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuUmF0aW9uYWwpOgotICAgICAgICBpZiBub3Qgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBvdGhlci5kZW5vbWluYXRvciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHApCi0gICAgICAgIHJldHVybiBzZWxmLCBEZWNpbWFsKG90aGVyLm51bWVyYXRvcikKLQotICAgICMgQ29tcGFyaXNvbnMgd2l0aCBmbG9hdCBhbmQgY29tcGxleCB0eXBlcy4gID09IGFuZCAhPSBjb21wYXJpc29ucwotICAgICMgd2l0aCBjb21wbGV4IG51bWJlcnMgc2hvdWxkIHN1Y2NlZWQsIHJldHVybmluZyBlaXRoZXIgVHJ1ZSBvciBGYWxzZQotICAgICMgYXMgYXBwcm9wcmlhdGUuICBPdGhlciBjb21wYXJpc29ucyByZXR1cm4gTm90SW1wbGVtZW50ZWQuCi0gICAgaWYgZXF1YWxpdHlfb3AgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLkNvbXBsZXgpIGFuZCBvdGhlci5pbWFnID09IDA6Ci0gICAgICAgIG90aGVyID0gb3RoZXIucmVhbAotICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKLSAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiBlcXVhbGl0eV9vcDoKLSAgICAgICAgICAgIGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dID0gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSBlbmFibGVkIikKLSAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKLSAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQsIE5vdEltcGxlbWVudGVkCi0KLQotIyMjIyMgU2V0dXAgU3BlY2lmaWMgQ29udGV4dHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBUaGUgZGVmYXVsdCBjb250ZXh0IHByb3RvdHlwZSB1c2VkIGJ5IENvbnRleHQoKQotIyBJcyBtdXRhYmxlLCBzbyB0aGF0IG5ldyBjb250ZXh0cyBjYW4gaGF2ZSBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMKLQotRGVmYXVsdENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sCi0gICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb25dLAotICAgICAgICBmbGFncz1bXSwKLSAgICAgICAgRW1heD05OTk5OTksCi0gICAgICAgIEVtaW49LTk5OTk5OSwKLSAgICAgICAgY2FwaXRhbHM9MSwKLSAgICAgICAgY2xhbXA9MAotKQotCi0jIFByZS1tYWRlIGFsdGVybmF0ZSBjb250ZXh0cyBvZmZlcmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uCi0jIERvbid0IGNoYW5nZSB0aGVzZTsgdGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gc2VsZWN0IHRoZXNlCi0jIGNvbnRleHRzIGFuZCBiZSBhYmxlIHRvIHJlcHJvZHVjZSByZXN1bHRzIGZyb20gb3RoZXIgaW1wbGVtZW50YXRpb25zCi0jIG9mIHRoZSBzcGVjLgotCi1CYXNpY0NvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfVVAsCi0gICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIENsYW1wZWQsIFVuZGVyZmxvd10sCi0gICAgICAgIGZsYWdzPVtdLAotKQotCi1FeHRlbmRlZENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgdHJhcHM9W10sCi0gICAgICAgIGZsYWdzPVtdLAotKQotCi0KLSMjIyMjIGNydWQgZm9yIHBhcnNpbmcgc3RyaW5ncyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgUmVndWxhciBleHByZXNzaW9uIHVzZWQgZm9yIHBhcnNpbmcgbnVtZXJpYyBzdHJpbmdzLiAgQWRkaXRpb25hbAotIyBjb21tZW50czoKLSMKLSMgMS4gVW5jb21tZW50IHRoZSB0d28gJ1xzKicgbGluZXMgdG8gYWxsb3cgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcKLSMgd2hpdGVzcGFjZS4gIEJ1dCBub3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gZGlzYWxsb3dzIHdoaXRlc3BhY2UgaW4KLSMgYSBudW1lcmljIHN0cmluZy4KLSMKLSMgMi4gRm9yIGZpbml0ZSBudW1iZXJzIChub3QgaW5maW5pdGllcyBhbmQgTmFOcykgdGhlIGJvZHkgb2YgdGhlCi0jIG51bWJlciBiZXR3ZWVuIHRoZSBvcHRpb25hbCBzaWduIGFuZCB0aGUgb3B0aW9uYWwgZXhwb25lbnQgbXVzdCBoYXZlCi0jIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0LCBwb3NzaWJseSBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4gIFRoZQotIyBsb29rYWhlYWQgZXhwcmVzc2lvbiAnKD89XGR8XC5cZCknIGNoZWNrcyB0aGlzLgotCi1pbXBvcnQgcmUKLV9wYXJzZXIgPSByZS5jb21waWxlKHIiIiIgICAgICAgICMgQSBudW1lcmljIHN0cmluZyBjb25zaXN0cyBvZjoKLSMgICAgXHMqCi0gICAgKD9QPHNpZ24+Wy0rXSk/ICAgICAgICAgICAgICAjIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGVpdGhlci4uLgotICAgICgKLSAgICAgICAgKD89XGR8XC5cZCkgICAgICAgICAgICAgICMgLi4uYSBudW1iZXIgKHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0KQotICAgICAgICAoP1A8aW50PlxkKikgICAgICAgICAgICAgIyBoYXZpbmcgYSAocG9zc2libHkgZW1wdHkpIGludGVnZXIgcGFydAotICAgICAgICAoXC4oP1A8ZnJhYz5cZCopKT8gICAgICAgIyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBmcmFjdGlvbmFsIHBhcnQKLSAgICAgICAgKEUoP1A8ZXhwPlstK10/XGQrKSk/ICAgICMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgZXhwb25lbnQsIG9yLi4uCi0gICAgfAotICAgICAgICBJbmYoaW5pdHkpPyAgICAgICAgICAgICAgIyAuLi5hbiBpbmZpbml0eSwgb3IuLi4KLSAgICB8Ci0gICAgICAgICg/UDxzaWduYWw+cyk/ICAgICAgICAgICAjIC4uLmFuIChvcHRpb25hbGx5IHNpZ25hbGluZykKLSAgICAgICAgTmFOICAgICAgICAgICAgICAgICAgICAgICMgTmFOCi0gICAgICAgICg/UDxkaWFnPlxkKikgICAgICAgICAgICAjIHdpdGggKHBvc3NpYmx5IGVtcHR5KSBkaWFnbm9zdGljIGluZm8uCi0gICAgKQotIyAgICBccyoKLSAgICBcWgotIiIiLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkubWF0Y2gKLQotX2FsbF96ZXJvcyA9IHJlLmNvbXBpbGUoJzAqJCcpLm1hdGNoCi1fZXhhY3RfaGFsZiA9IHJlLmNvbXBpbGUoJzUwKiQnKS5tYXRjaAotCi0jIyMjIyBQRVAzMTAxIHN1cHBvcnQgZnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gaGF2ZSBsaXR0bGUgdG8gZG8gd2l0aCB0aGUgRGVjaW1hbAotIyBjbGFzcywgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJldXNlZCBvciBhZGFwdGVkIGZvciBvdGhlciBwdXJlCi0jIFB5dGhvbiBudW1lcmljIGNsYXNzZXMgdGhhdCB3YW50IHRvIGltcGxlbWVudCBfX2Zvcm1hdF9fCi0jCi0jIEEgZm9ybWF0IHNwZWNpZmllciBmb3IgRGVjaW1hbCBsb29rcyBsaWtlOgotIwotIyAgIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bbWluaW11bXdpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQotCi1fcGFyc2VfZm9ybWF0X3NwZWNpZmllcl9yZWdleCA9IHJlLmNvbXBpbGUociIiIlxBCi0oPzoKLSAgICg/UDxmaWxsPi4pPwotICAgKD9QPGFsaWduPls8Pj1eXSkKLSk/Ci0oP1A8c2lnbj5bLSsgXSk/Ci0oP1A8YWx0PlwjKT8KLSg/UDx6ZXJvcGFkPjApPwotKD9QPG1pbmltdW13aWR0aD4oPyEwKVxkKyk/Ci0oP1A8dGhvdXNhbmRzX3NlcD4sKT8KLSg/OlwuKD9QPHByZWNpc2lvbj4wfCg/ITApXGQrKSk/Ci0oP1A8dHlwZT5bZUVmRmdHbiVdKT8KLVxaCi0iIiIsIHJlLlZFUkJPU0V8cmUuRE9UQUxMKQotCi1kZWwgcmUKLQotIyBUaGUgbG9jYWxlIG1vZHVsZSBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlICduJyBmb3JtYXQgc3BlY2lmaWVyLiAgVGhlCi0jIHJlc3Qgb2YgdGhlIFBFUCAzMTAxIGNvZGUgZnVuY3Rpb25zIHF1aXRlIGhhcHBpbHkgd2l0aG91dCBpdCwgc28gd2UKLSMgZG9uJ3QgY2FyZSB0b28gbXVjaCBpZiBsb2NhbGUgaXNuJ3QgcHJlc2VudC4KLXRyeToKLSAgICBpbXBvcnQgbG9jYWxlIGFzIF9sb2NhbGUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLWRlZiBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcihmb3JtYXRfc3BlYywgX2xvY2FsZWNvbnY9Tm9uZSk6Ci0gICAgIiIiUGFyc2UgYW5kIHZhbGlkYXRlIGEgZm9ybWF0IHNwZWNpZmllci4KLQotICAgIFR1cm5zIGEgc3RhbmRhcmQgbnVtZXJpYyBmb3JtYXQgc3BlY2lmaWVyIGludG8gYSBkaWN0LCB3aXRoIHRoZQotICAgIGZvbGxvd2luZyBlbnRyaWVzOgotCi0gICAgICBmaWxsOiBmaWxsIGNoYXJhY3RlciB0byBwYWQgZmllbGQgdG8gbWluaW11bSB3aWR0aAotICAgICAgYWxpZ246IGFsaWdubWVudCB0eXBlLCBlaXRoZXIgJzwnLCAnPicsICc9JyBvciAnXicKLSAgICAgIHNpZ246IGVpdGhlciAnKycsICctJyBvciAnICcKLSAgICAgIG1pbmltdW13aWR0aDogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgbWluaW11bSB3aWR0aAotICAgICAgemVyb3BhZDogYm9vbGVhbiwgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHBhZCB3aXRoIHplcm9zCi0gICAgICB0aG91c2FuZHNfc2VwOiBzdHJpbmcgdG8gdXNlIGFzIHRob3VzYW5kcyBzZXBhcmF0b3IsIG9yICcnCi0gICAgICBncm91cGluZzogZ3JvdXBpbmcgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3JzLCBpbiBmb3JtYXQKLSAgICAgICAgdXNlZCBieSBsb2NhbGVjb252Ci0gICAgICBkZWNpbWFsX3BvaW50OiBzdHJpbmcgdG8gdXNlIGZvciBkZWNpbWFsIHBvaW50Ci0gICAgICBwcmVjaXNpb246IG5vbm5lZ2F0aXZlIGludGVnZXIgZ2l2aW5nIHByZWNpc2lvbiwgb3IgTm9uZQotICAgICAgdHlwZTogb25lIG9mIHRoZSBjaGFyYWN0ZXJzICdlRWZGZ0clJywgb3IgTm9uZQotCi0gICAgIiIiCi0gICAgbSA9IF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4Lm1hdGNoKGZvcm1hdF9zcGVjKQotICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCi0KLSAgICAjIGdldCB0aGUgZGljdGlvbmFyeQotICAgIGZvcm1hdF9kaWN0ID0gbS5ncm91cGRpY3QoKQotCi0gICAgIyB6ZXJvcGFkOyBkZWZhdWx0cyBmb3IgZmlsbCBhbmQgYWxpZ25tZW50LiAgSWYgemVybyBwYWRkaW5nCi0gICAgIyBpcyByZXF1ZXN0ZWQsIHRoZSBmaWxsIGFuZCBhbGlnbiBmaWVsZHMgc2hvdWxkIGJlIGFic2VudC4KLSAgICBmaWxsID0gZm9ybWF0X2RpY3RbJ2ZpbGwnXQotICAgIGFsaWduID0gZm9ybWF0X2RpY3RbJ2FsaWduJ10KLSAgICBmb3JtYXRfZGljdFsnemVyb3BhZCddID0gKGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ10gaXMgbm90IE5vbmUpCi0gICAgaWYgZm9ybWF0X2RpY3RbJ3plcm9wYWQnXToKLSAgICAgICAgaWYgZmlsbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZpbGwgY2hhcmFjdGVyIGNvbmZsaWN0cyB3aXRoICcwJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCi0gICAgICAgIGlmIGFsaWduIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWxpZ25tZW50IGNvbmZsaWN0cyB3aXRoICcwJyBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCi0gICAgZm9ybWF0X2RpY3RbJ2ZpbGwnXSA9IGZpbGwgb3IgJyAnCi0gICAgIyBQRVAgMzEwMSBvcmlnaW5hbGx5IHNwZWNpZmllZCB0aGF0IHRoZSBkZWZhdWx0IGFsaWdubWVudCBzaG91bGQKLSAgICAjIGJlIGxlZnQ7ICBpdCB3YXMgbGF0ZXIgYWdyZWVkIHRoYXQgcmlnaHQtYWxpZ25lZCBtYWtlcyBtb3JlIHNlbnNlCi0gICAgIyBmb3IgbnVtZXJpYyB0eXBlcy4gIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNjg1Ny4KLSAgICBmb3JtYXRfZGljdFsnYWxpZ24nXSA9IGFsaWduIG9yICc+JwotCi0gICAgIyBkZWZhdWx0IHNpZ24gaGFuZGxpbmc6ICctJyBmb3IgbmVnYXRpdmUsICcnIGZvciBwb3NpdGl2ZQotICAgIGlmIGZvcm1hdF9kaWN0WydzaWduJ10gaXMgTm9uZToKLSAgICAgICAgZm9ybWF0X2RpY3RbJ3NpZ24nXSA9ICctJwotCi0gICAgIyBtaW5pbXVtd2lkdGggZGVmYXVsdHMgdG8gMDsgcHJlY2lzaW9uIHJlbWFpbnMgTm9uZSBpZiBub3QgZ2l2ZW4KLSAgICBmb3JtYXRfZGljdFsnbWluaW11bXdpZHRoJ10gPSBpbnQoZm9ybWF0X2RpY3RbJ21pbmltdW13aWR0aCddIG9yICcwJykKLSAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IGludChmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10pCi0KLSAgICAjIGlmIGZvcm1hdCB0eXBlIGlzICdnJyBvciAnRycgdGhlbiBhIHByZWNpc2lvbiBvZiAwIG1ha2VzIGxpdHRsZQotICAgICMgc2Vuc2U7IGNvbnZlcnQgaXQgdG8gMS4gIFNhbWUgaWYgZm9ybWF0IHR5cGUgaXMgdW5zcGVjaWZpZWQuCi0gICAgaWYgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID09IDA6Ci0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaXMgTm9uZSBvciBmb3JtYXRfZGljdFsndHlwZSddIGluICdnR24nOgotICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gMQotCi0gICAgIyBkZXRlcm1pbmUgdGhvdXNhbmRzIHNlcGFyYXRvciwgZ3JvdXBpbmcsIGFuZCBkZWNpbWFsIHNlcGFyYXRvciwgYW5kCi0gICAgIyBhZGQgYXBwcm9wcmlhdGUgZW50cmllcyB0byBmb3JtYXRfZGljdAotICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gPT0gJ24nOgotICAgICAgICAjIGFwYXJ0IGZyb20gc2VwYXJhdG9ycywgJ24nIGJlaGF2ZXMganVzdCBsaWtlICdnJwotICAgICAgICBmb3JtYXRfZGljdFsndHlwZSddID0gJ2cnCi0gICAgICAgIGlmIF9sb2NhbGVjb252IGlzIE5vbmU6Ci0gICAgICAgICAgICBfbG9jYWxlY29udiA9IF9sb2NhbGUubG9jYWxlY29udigpCi0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBsaWNpdCB0aG91c2FuZHMgc2VwYXJhdG9yIGNvbmZsaWN0cyB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiduJyB0eXBlIGluIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLSAgICAgICAgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSA9IF9sb2NhbGVjb252Wyd0aG91c2FuZHNfc2VwJ10KLSAgICAgICAgZm9ybWF0X2RpY3RbJ2dyb3VwaW5nJ10gPSBfbG9jYWxlY29udlsnZ3JvdXBpbmcnXQotICAgICAgICBmb3JtYXRfZGljdFsnZGVjaW1hbF9wb2ludCddID0gX2xvY2FsZWNvbnZbJ2RlY2ltYWxfcG9pbnQnXQotICAgIGVsc2U6Ci0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gaXMgTm9uZToKLSAgICAgICAgICAgIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gPSAnJwotICAgICAgICBmb3JtYXRfZGljdFsnZ3JvdXBpbmcnXSA9IFszLCAwXQotICAgICAgICBmb3JtYXRfZGljdFsnZGVjaW1hbF9wb2ludCddID0gJy4nCi0KLSAgICByZXR1cm4gZm9ybWF0X2RpY3QKLQotZGVmIF9mb3JtYXRfYWxpZ24oc2lnbiwgYm9keSwgc3BlYyk6Ci0gICAgIiIiR2l2ZW4gYW4gdW5wYWRkZWQsIG5vbi1hbGlnbmVkIG51bWVyaWMgc3RyaW5nICdib2R5JyBhbmQgc2lnbgotICAgIHN0cmluZyAnc2lnbicsIGFkZCBwYWRkaW5nIGFuZCBhbGlnbm1lbnQgY29uZm9ybWluZyB0byB0aGUgZ2l2ZW4KLSAgICBmb3JtYXQgc3BlY2lmaWVyIGRpY3Rpb25hcnkgJ3NwZWMnIChhcyBwcm9kdWNlZCBieQotICAgIHBhcnNlX2Zvcm1hdF9zcGVjaWZpZXIpLgotCi0gICAgIiIiCi0gICAgIyBob3cgbXVjaCBleHRyYSBzcGFjZSBkbyB3ZSBoYXZlIHRvIHBsYXkgd2l0aD8KLSAgICBtaW5pbXVtd2lkdGggPSBzcGVjWydtaW5pbXVtd2lkdGgnXQotICAgIGZpbGwgPSBzcGVjWydmaWxsJ10KLSAgICBwYWRkaW5nID0gZmlsbCoobWluaW11bXdpZHRoIC0gbGVuKHNpZ24pIC0gbGVuKGJvZHkpKQotCi0gICAgYWxpZ24gPSBzcGVjWydhbGlnbiddCi0gICAgaWYgYWxpZ24gPT0gJzwnOgotICAgICAgICByZXN1bHQgPSBzaWduICsgYm9keSArIHBhZGRpbmcKLSAgICBlbGlmIGFsaWduID09ICc+JzoKLSAgICAgICAgcmVzdWx0ID0gcGFkZGluZyArIHNpZ24gKyBib2R5Ci0gICAgZWxpZiBhbGlnbiA9PSAnPSc6Ci0gICAgICAgIHJlc3VsdCA9IHNpZ24gKyBwYWRkaW5nICsgYm9keQotICAgIGVsaWYgYWxpZ24gPT0gJ14nOgotICAgICAgICBoYWxmID0gbGVuKHBhZGRpbmcpLy8yCi0gICAgICAgIHJlc3VsdCA9IHBhZGRpbmdbOmhhbGZdICsgc2lnbiArIGJvZHkgKyBwYWRkaW5nW2hhbGY6XQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VucmVjb2duaXNlZCBhbGlnbm1lbnQgZmllbGQnKQotCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgX2dyb3VwX2xlbmd0aHMoZ3JvdXBpbmcpOgotICAgICIiIkNvbnZlcnQgYSBsb2NhbGVjb252LXN0eWxlIGdyb3VwaW5nIGludG8gYSAocG9zc2libHkgaW5maW5pdGUpCi0gICAgaXRlcmFibGUgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGdyb3VwIGxlbmd0aHMuCi0KLSAgICAiIiIKLSAgICAjIFRoZSByZXN1bHQgZnJvbSBsb2NhbGVjb252KClbJ2dyb3VwaW5nJ10sIGFuZCB0aGUgaW5wdXQgdG8gdGhpcwotICAgICMgZnVuY3Rpb24sIHNob3VsZCBiZSBhIGxpc3Qgb2YgaW50ZWdlcnMgaW4gb25lIG9mIHRoZQotICAgICMgZm9sbG93aW5nIHRocmVlIGZvcm1zOgotICAgICMKLSAgICAjICAgKDEpIGFuIGVtcHR5IGxpc3QsIG9yCi0gICAgIyAgICgyKSBub25lbXB0eSBsaXN0IG9mIHBvc2l0aXZlIGludGVnZXJzICsgWzBdCi0gICAgIyAgICgzKSBsaXN0IG9mIHBvc2l0aXZlIGludGVnZXJzICsgW2xvY2FsZS5DSEFSX01BWF0sIG9yCi0KLSAgICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHJlcGVhdAotICAgIGlmIG5vdCBncm91cGluZzoKLSAgICAgICAgcmV0dXJuIFtdCi0gICAgZWxpZiBncm91cGluZ1stMV0gPT0gMCBhbmQgbGVuKGdyb3VwaW5nKSA+PSAyOgotICAgICAgICByZXR1cm4gY2hhaW4oZ3JvdXBpbmdbOi0xXSwgcmVwZWF0KGdyb3VwaW5nWy0yXSkpCi0gICAgZWxpZiBncm91cGluZ1stMV0gPT0gX2xvY2FsZS5DSEFSX01BWDoKLSAgICAgICAgcmV0dXJuIGdyb3VwaW5nWzotMV0KLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bnJlY29nbmlzZWQgZm9ybWF0IGZvciBncm91cGluZycpCi0KLWRlZiBfaW5zZXJ0X3Rob3VzYW5kc19zZXAoZGlnaXRzLCBzcGVjLCBtaW5fd2lkdGg9MSk6Ci0gICAgIiIiSW5zZXJ0IHRob3VzYW5kcyBzZXBhcmF0b3JzIGludG8gYSBkaWdpdCBzdHJpbmcuCi0KLSAgICBzcGVjIGlzIGEgZGljdGlvbmFyeSB3aG9zZSBrZXlzIHNob3VsZCBpbmNsdWRlICd0aG91c2FuZHNfc2VwJyBhbmQKLSAgICAnZ3JvdXBpbmcnOyB0eXBpY2FsbHkgaXQncyB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGZvcm1hdAotICAgIHNwZWNpZmllciB1c2luZyBfcGFyc2VfZm9ybWF0X3NwZWNpZmllci4KLQotICAgIFRoZSBtaW5fd2lkdGgga2V5d29yZCBhcmd1bWVudCBnaXZlcyB0aGUgbWluaW11bSBsZW5ndGggb2YgdGhlCi0gICAgcmVzdWx0LCB3aGljaCB3aWxsIGJlIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeS4KLQotICAgIElmIG5lY2Vzc2FyeSwgdGhlIHplcm8gcGFkZGluZyBhZGRzIGFuIGV4dHJhICcwJyBvbiB0aGUgbGVmdCB0bwotICAgIGF2b2lkIGEgbGVhZGluZyB0aG91c2FuZHMgc2VwYXJhdG9yLiAgRm9yIGV4YW1wbGUsIGluc2VydGluZwotICAgIGNvbW1hcyBldmVyeSB0aHJlZSBkaWdpdHMgaW4gJzEyMzQ1NicsIHdpdGggbWluX3dpZHRoPTgsIGdpdmVzCi0gICAgJzAsMTIzLDQ1NicsIGV2ZW4gdGhvdWdoIHRoYXQgaGFzIGxlbmd0aCA5LgotCi0gICAgIiIiCi0KLSAgICBzZXAgPSBzcGVjWyd0aG91c2FuZHNfc2VwJ10KLSAgICBncm91cGluZyA9IHNwZWNbJ2dyb3VwaW5nJ10KLQotICAgIGdyb3VwcyA9IFtdCi0gICAgZm9yIGwgaW4gX2dyb3VwX2xlbmd0aHMoZ3JvdXBpbmcpOgotICAgICAgICBpZiBsIDw9IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJncm91cCBsZW5ndGggc2hvdWxkIGJlIHBvc2l0aXZlIikKLSAgICAgICAgIyBtYXgoLi4uLCAxKSBmb3JjZXMgYXQgbGVhc3QgMSBkaWdpdCB0byB0aGUgbGVmdCBvZiBhIHNlcGFyYXRvcgotICAgICAgICBsID0gbWluKG1heChsZW4oZGlnaXRzKSwgbWluX3dpZHRoLCAxKSwgbCkKLSAgICAgICAgZ3JvdXBzLmFwcGVuZCgnMCcqKGwgLSBsZW4oZGlnaXRzKSkgKyBkaWdpdHNbLWw6XSkKLSAgICAgICAgZGlnaXRzID0gZGlnaXRzWzotbF0KLSAgICAgICAgbWluX3dpZHRoIC09IGwKLSAgICAgICAgaWYgbm90IGRpZ2l0cyBhbmQgbWluX3dpZHRoIDw9IDA6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBtaW5fd2lkdGggLT0gbGVuKHNlcCkKLSAgICBlbHNlOgotICAgICAgICBsID0gbWF4KGxlbihkaWdpdHMpLCBtaW5fd2lkdGgsIDEpCi0gICAgICAgIGdyb3Vwcy5hcHBlbmQoJzAnKihsIC0gbGVuKGRpZ2l0cykpICsgZGlnaXRzWy1sOl0pCi0gICAgcmV0dXJuIHNlcC5qb2luKHJldmVyc2VkKGdyb3VwcykpCi0KLWRlZiBfZm9ybWF0X3NpZ24oaXNfbmVnYXRpdmUsIHNwZWMpOgotICAgICIiIkRldGVybWluZSBzaWduIGNoYXJhY3Rlci4iIiIKLQotICAgIGlmIGlzX25lZ2F0aXZlOgotICAgICAgICByZXR1cm4gJy0nCi0gICAgZWxpZiBzcGVjWydzaWduJ10gaW4gJyArJzoKLSAgICAgICAgcmV0dXJuIHNwZWNbJ3NpZ24nXQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJwotCi1kZWYgX2Zvcm1hdF9udW1iZXIoaXNfbmVnYXRpdmUsIGludHBhcnQsIGZyYWNwYXJ0LCBleHAsIHNwZWMpOgotICAgICIiIkZvcm1hdCBhIG51bWJlciwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBkYXRhOgotCi0gICAgaXNfbmVnYXRpdmU6IHRydWUgaWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgZWxzZSBmYWxzZQotICAgIGludHBhcnQ6IHN0cmluZyBvZiBkaWdpdHMgdGhhdCBtdXN0IGFwcGVhciBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQKLSAgICBmcmFjcGFydDogc3RyaW5nIG9mIGRpZ2l0cyB0aGF0IG11c3QgY29tZSBhZnRlciB0aGUgcG9pbnQKLSAgICBleHA6IGV4cG9uZW50LCBhcyBhbiBpbnRlZ2VyCi0gICAgc3BlYzogZGljdGlvbmFyeSByZXN1bHRpbmcgZnJvbSBwYXJzaW5nIHRoZSBmb3JtYXQgc3BlY2lmaWVyCi0KLSAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGluZm9ybWF0aW9uIGluIHNwZWMgdG86Ci0gICAgICBpbnNlcnQgc2VwYXJhdG9ycyAoZGVjaW1hbCBzZXBhcmF0b3IgYW5kIHRob3VzYW5kcyBzZXBhcmF0b3JzKQotICAgICAgZm9ybWF0IHRoZSBzaWduCi0gICAgICBmb3JtYXQgdGhlIGV4cG9uZW50Ci0gICAgICBhZGQgdHJhaWxpbmcgJyUnIGZvciB0aGUgJyUnIHR5cGUKLSAgICAgIHplcm8tcGFkIGlmIG5lY2Vzc2FyeQotICAgICAgZmlsbCBhbmQgYWxpZ24gaWYgbmVjZXNzYXJ5Ci0gICAgIiIiCi0KLSAgICBzaWduID0gX2Zvcm1hdF9zaWduKGlzX25lZ2F0aXZlLCBzcGVjKQotCi0gICAgaWYgZnJhY3BhcnQgb3Igc3BlY1snYWx0J106Ci0gICAgICAgIGZyYWNwYXJ0ID0gc3BlY1snZGVjaW1hbF9wb2ludCddICsgZnJhY3BhcnQKLQotICAgIGlmIGV4cCAhPSAwIG9yIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgotICAgICAgICBlY2hhciA9IHsnRSc6ICdFJywgJ2UnOiAnZScsICdHJzogJ0UnLCAnZyc6ICdlJ31bc3BlY1sndHlwZSddXQotICAgICAgICBmcmFjcGFydCArPSAiezB9ezE6K30iLmZvcm1hdChlY2hhciwgZXhwKQotICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6Ci0gICAgICAgIGZyYWNwYXJ0ICs9ICclJwotCi0gICAgaWYgc3BlY1snemVyb3BhZCddOgotICAgICAgICBtaW5fd2lkdGggPSBzcGVjWydtaW5pbXVtd2lkdGgnXSAtIGxlbihmcmFjcGFydCkgLSBsZW4oc2lnbikKLSAgICBlbHNlOgotICAgICAgICBtaW5fd2lkdGggPSAwCi0gICAgaW50cGFydCA9IF9pbnNlcnRfdGhvdXNhbmRzX3NlcChpbnRwYXJ0LCBzcGVjLCBtaW5fd2lkdGgpCi0KLSAgICByZXR1cm4gX2Zvcm1hdF9hbGlnbihzaWduLCBpbnRwYXJ0K2ZyYWNwYXJ0LCBzcGVjKQotCi0KLSMjIyMjIFVzZWZ1bCBDb25zdGFudHMgKGludGVybmFsIHVzZSBvbmx5KSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIFJldXNhYmxlIGRlZmF1bHRzCi1fSW5maW5pdHkgPSBEZWNpbWFsKCdJbmYnKQotX05lZ2F0aXZlSW5maW5pdHkgPSBEZWNpbWFsKCctSW5mJykKLV9OYU4gPSBEZWNpbWFsKCdOYU4nKQotX1plcm8gPSBEZWNpbWFsKDApCi1fT25lID0gRGVjaW1hbCgxKQotX05lZ2F0aXZlT25lID0gRGVjaW1hbCgtMSkKLQotIyBfU2lnbmVkSW5maW5pdHlbc2lnbl0gaXMgaW5maW5pdHkgdy8gdGhhdCBzaWduCi1fU2lnbmVkSW5maW5pdHkgPSAoX0luZmluaXR5LCBfTmVnYXRpdmVJbmZpbml0eSkKLQotIyBDb25zdGFudHMgcmVsYXRlZCB0byB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbjsgIGhhc2goeCkgaXMgYmFzZWQKLSMgb24gdGhlIHJlZHVjdGlvbiBvZiB4IG1vZHVsbyBfUHlIQVNIX01PRFVMVVMKLV9QeUhBU0hfTU9EVUxVUyA9IHN5cy5oYXNoX2luZm8ubW9kdWx1cwotIyBoYXNoIHZhbHVlcyB0byB1c2UgZm9yIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0aWVzLCBhbmQgbmFucwotX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgotX1B5SEFTSF9OQU4gPSBzeXMuaGFzaF9pbmZvLm5hbgotCi0jIF9QeUhBU0hfMTBJTlYgaXMgdGhlIGludmVyc2Ugb2YgMTAgbW9kdWxvIHRoZSBwcmltZSBfUHlIQVNIX01PRFVMVVMKLV9QeUhBU0hfMTBJTlYgPSBwb3coMTAsIF9QeUhBU0hfTU9EVUxVUyAtIDIsIF9QeUhBU0hfTU9EVUxVUykKLWRlbCBzeXMKLQotdHJ5OgotICAgIGltcG9ydCBfZGVjaW1hbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6Ci0gICAgczEgPSBzZXQoZGlyKCkpCi0gICAgczIgPSBzZXQoZGlyKF9kZWNpbWFsKSkKLSAgICBmb3IgbmFtZSBpbiBzMSAtIHMyOgotICAgICAgICBkZWwgZ2xvYmFscygpW25hbWVdCi0gICAgZGVsIHMxLCBzMiwgbmFtZQogICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0ICoKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgZG9jdGVzdCwgZGVjaW1hbAotICAgIGRvY3Rlc3QudGVzdG1vZChkZWNpbWFsKQorICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fZG9jX18KKyAgICBmcm9tIF9kZWNpbWFsIGltcG9ydCBfX3ZlcnNpb25fXworICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fbGlibXBkZWNfdmVyc2lvbl9fCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCAqCisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX2RvY19fCisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX3ZlcnNpb25fXworICAgIGZyb20gX3B5ZGVjaW1hbCBpbXBvcnQgX19saWJtcGRlY192ZXJzaW9uX18KZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggN2ViNDJhOS4uMjJkOTE0NSAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTI4LDkgKzI4LDkgQEAKIAogX19hbGxfXyA9IFsnZ2V0X2Nsb3NlX21hdGNoZXMnLCAnbmRpZmYnLCAncmVzdG9yZScsICdTZXF1ZW5jZU1hdGNoZXInLAogICAgICAgICAgICAnRGlmZmVyJywnSVNfQ0hBUkFDVEVSX0pVTksnLCAnSVNfTElORV9KVU5LJywgJ2NvbnRleHRfZGlmZicsCi0gICAgICAgICAgICd1bmlmaWVkX2RpZmYnLCAnSHRtbERpZmYnLCAnTWF0Y2gnXQorICAgICAgICAgICAndW5pZmllZF9kaWZmJywgJ2RpZmZfYnl0ZXMnLCAnSHRtbERpZmYnLCAnTWF0Y2gnXQogCi1pbXBvcnQgaGVhcHEKK2Zyb20gaGVhcHEgaW1wb3J0IG5sYXJnZXN0IGFzIF9ubGFyZ2VzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQogCiBNYXRjaCA9IF9uYW1lZHR1cGxlKCdNYXRjaCcsICdhIGIgc2l6ZScpCkBAIC03MjksNyArNzI5LDcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHMucmF0aW8oKSwgeCkpCiAKICAgICAjIE1vdmUgdGhlIGJlc3Qgc2NvcmVycyB0byBoZWFkIG9mIGxpc3QKLSAgICByZXN1bHQgPSBoZWFwcS5ubGFyZ2VzdChuLCByZXN1bHQpCisgICAgcmVzdWx0ID0gX25sYXJnZXN0KG4sIHJlc3VsdCkKICAgICAjIFN0cmlwIHNjb3JlcyBmb3IgdGhlIGJlc3QgbiBtYXRjaGVzCiAgICAgcmV0dXJuIFt4IGZvciBzY29yZSwgeCBpbiByZXN1bHRdCiAKQEAgLTg1MiwxMCArODUyLDkgQEAKICAgICAgICAgICBhbmQgcmV0dXJuIHRydWUgaWZmIHRoZSBzdHJpbmcgaXMganVuay4gVGhlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbgogICAgICAgICAgIGBJU19MSU5FX0pVTktgIG1heSBiZSB1c2VkIHRvIGZpbHRlciBvdXQgbGluZXMgd2l0aG91dCB2aXNpYmxlCiAgICAgICAgICAgY2hhcmFjdGVycywgZXhjZXB0IGZvciBhdCBtb3N0IG9uZSBzcGxhdCAoJyMnKS4gIEl0IGlzIHJlY29tbWVuZGVkCi0gICAgICAgICAgdG8gbGVhdmUgbGluZWp1bmsgTm9uZTsgYXMgb2YgUHl0aG9uIDIuMywgdGhlIHVuZGVybHlpbmcKLSAgICAgICAgICBTZXF1ZW5jZU1hdGNoZXIgY2xhc3MgaGFzIGdyb3duIGFuIGFkYXB0aXZlIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzCi0gICAgICAgICAgdGhhdCdzIGJldHRlciB0aGFuIGFueSBzdGF0aWMgZGVmaW5pdGlvbiB0aGUgYXV0aG9yIGhhcyBldmVyIGJlZW4KLSAgICAgICAgICBhYmxlIHRvIGNyYWZ0LgorICAgICAgICAgIHRvIGxlYXZlIGxpbmVqdW5rIE5vbmU7IHRoZSB1bmRlcmx5aW5nIFNlcXVlbmNlTWF0Y2hlciBjbGFzcyBoYXMKKyAgICAgICAgICBhbiBhZGFwdGl2ZSBub3Rpb24gb2YgIm5vaXNlIiBsaW5lcyB0aGF0J3MgYmV0dGVyIHRoYW4gYW55IHN0YXRpYworICAgICAgICAgIGRlZmluaXRpb24gdGhlIGF1dGhvciBoYXMgZXZlciBiZWVuIGFibGUgdG8gY3JhZnQuCiAKICAgICAgICAgLSBgY2hhcmp1bmtgOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvZiBsZW5ndGggMS4gVGhlCiAgICAgICAgICAgbW9kdWxlLWxldmVsIGZ1bmN0aW9uIGBJU19DSEFSQUNURVJfSlVOS2AgbWF5IGJlIHVzZWQgdG8gZmlsdGVyIG91dApAQCAtMTE3NSw2ICsxMTc0LDcgQEAKICAgICAgZm91cgogICAgICIiIgogCisgICAgX2NoZWNrX3R5cGVzKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbGluZXRlcm0pCiAgICAgc3RhcnRlZCA9IEZhbHNlCiAgICAgZm9yIGdyb3VwIGluIFNlcXVlbmNlTWF0Y2hlcihOb25lLGEsYikuZ2V0X2dyb3VwZWRfb3Bjb2RlcyhuKToKICAgICAgICAgaWYgbm90IHN0YXJ0ZWQ6CkBAIC0xMjYyLDYgKzEyNjIsNyBAQAogICAgICAgZm91cgogICAgICIiIgogCisgICAgX2NoZWNrX3R5cGVzKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbGluZXRlcm0pCiAgICAgcHJlZml4ID0gZGljdChpbnNlcnQ9JysgJywgZGVsZXRlPSctICcsIHJlcGxhY2U9JyEgJywgZXF1YWw9JyAgJykKICAgICBzdGFydGVkID0gRmFsc2UKICAgICBmb3IgZ3JvdXAgaW4gU2VxdWVuY2VNYXRjaGVyKE5vbmUsYSxiKS5nZXRfZ3JvdXBlZF9vcGNvZGVzKG4pOgpAQCAtMTI5MywyMiArMTI5NCw3MCBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBiW2oxOmoyXToKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHByZWZpeFt0YWddICsgbGluZQogCitkZWYgX2NoZWNrX3R5cGVzKGEsIGIsICphcmdzKToKKyAgICAjIENoZWNraW5nIHR5cGVzIGlzIHdlaXJkLCBidXQgdGhlIGFsdGVybmF0aXZlIGlzIGdhcmJsZWQgb3V0cHV0IHdoZW4KKyAgICAjIHNvbWVvbmUgcGFzc2VzIG1peGVkIGJ5dGVzIGFuZCBzdHIgdG8ge3VuaWZpZWQsY29udGV4dH1fZGlmZigpLiBFLmcuCisgICAgIyB3aXRob3V0IHRoaXMgY2hlY2ssIHBhc3NpbmcgZmlsZW5hbWVzIGFzIGJ5dGVzIHJlc3VsdHMgaW4gb3V0cHV0IGxpa2UKKyAgICAjICAgLS0tIGInb2xkZmlsZS50eHQnCisgICAgIyAgICsrKyBiJ25ld2ZpbGUudHh0JworICAgICMgYmVjYXVzZSBvZiBob3cgc3RyLmZvcm1hdCgpIGluY29ycG9yYXRlcyBieXRlcyBvYmplY3RzLgorICAgIGlmIGEgYW5kIG5vdCBpc2luc3RhbmNlKGFbMF0sIHN0cik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbGluZXMgdG8gY29tcGFyZSBtdXN0IGJlIHN0ciwgbm90ICVzICglciknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKGFbMF0pLl9fbmFtZV9fLCBhWzBdKSkKKyAgICBpZiBiIGFuZCBub3QgaXNpbnN0YW5jZShiWzBdLCBzdHIpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xpbmVzIHRvIGNvbXBhcmUgbXVzdCBiZSBzdHIsIG5vdCAlcyAoJXIpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShiWzBdKS5fX25hbWVfXywgYlswXSkpCisgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmcsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FsbCBhcmd1bWVudHMgbXVzdCBiZSBzdHIsIG5vdDogJXInICUgKGFyZywpKQorCitkZWYgZGlmZl9ieXRlcyhkZnVuYywgYSwgYiwgZnJvbWZpbGU9YicnLCB0b2ZpbGU9YicnLAorICAgICAgICAgICAgICAgZnJvbWZpbGVkYXRlPWInJywgdG9maWxlZGF0ZT1iJycsIG49MywgbGluZXRlcm09YidcbicpOgorICAgIHIiIiIKKyAgICBDb21wYXJlIGBhYCBhbmQgYGJgLCB0d28gc2VxdWVuY2VzIG9mIGxpbmVzIHJlcHJlc2VudGVkIGFzIGJ5dGVzIHJhdGhlcgorICAgIHRoYW4gc3RyLiBUaGlzIGlzIGEgd3JhcHBlciBmb3IgYGRmdW5jYCwgd2hpY2ggaXMgdHlwaWNhbGx5IGVpdGhlcgorICAgIHVuaWZpZWRfZGlmZigpIG9yIGNvbnRleHRfZGlmZigpLiBJbnB1dHMgYXJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvCisgICAgc3RyaW5ncyBzbyB0aGF0IGBkZnVuY2Agb25seSBoYXMgdG8gd29ycnkgYWJvdXQgc3RyaW5ncywgYW5kIGVuY29kZWQKKyAgICBiYWNrIHRvIGJ5dGVzIG9uIHJldHVybi4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gY29tcGFyZSBmaWxlcyB3aXRoCisgICAgdW5rbm93biBvciBpbmNvbnNpc3RlbnQgZW5jb2RpbmcuIEFsbCBvdGhlciBpbnB1dHMgKGV4Y2VwdCBgbmApIG11c3QgYmUKKyAgICBieXRlcyByYXRoZXIgdGhhbiBzdHIuCisgICAgIiIiCisgICAgZGVmIGRlY29kZShzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbXNnID0gKCdhbGwgYXJndW1lbnRzIG11c3QgYmUgYnl0ZXMsIG5vdCAlcyAoJXIpJyAlCisgICAgICAgICAgICAgICAgICAgKHR5cGUocykuX19uYW1lX18sIHMpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBlcnIKKyAgICBhID0gbGlzdChtYXAoZGVjb2RlLCBhKSkKKyAgICBiID0gbGlzdChtYXAoZGVjb2RlLCBiKSkKKyAgICBmcm9tZmlsZSA9IGRlY29kZShmcm9tZmlsZSkKKyAgICB0b2ZpbGUgPSBkZWNvZGUodG9maWxlKQorICAgIGZyb21maWxlZGF0ZSA9IGRlY29kZShmcm9tZmlsZWRhdGUpCisgICAgdG9maWxlZGF0ZSA9IGRlY29kZSh0b2ZpbGVkYXRlKQorICAgIGxpbmV0ZXJtID0gZGVjb2RlKGxpbmV0ZXJtKQorCisgICAgbGluZXMgPSBkZnVuYyhhLCBiLCBmcm9tZmlsZSwgdG9maWxlLCBmcm9tZmlsZWRhdGUsIHRvZmlsZWRhdGUsIG4sIGxpbmV0ZXJtKQorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICB5aWVsZCBsaW5lLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKwogZGVmIG5kaWZmKGEsIGIsIGxpbmVqdW5rPU5vbmUsIGNoYXJqdW5rPUlTX0NIQVJBQ1RFUl9KVU5LKToKICAgICByIiIiCiAgICAgQ29tcGFyZSBgYWAgYW5kIGBiYCAobGlzdHMgb2Ygc3RyaW5ncyk7IHJldHVybiBhIGBEaWZmZXJgLXN0eWxlIGRlbHRhLgogCiAgICAgT3B0aW9uYWwga2V5d29yZCBwYXJhbWV0ZXJzIGBsaW5lanVua2AgYW5kIGBjaGFyanVua2AgYXJlIGZvciBmaWx0ZXIKLSAgICBmdW5jdGlvbnMgKG9yIE5vbmUpOgorICAgIGZ1bmN0aW9ucywgb3IgY2FuIGJlIE5vbmU6CiAKLSAgICAtIGxpbmVqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQsIGFuZAorICAgIC0gbGluZWp1bms6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCBhbmQKICAgICAgIHJldHVybiB0cnVlIGlmZiB0aGUgc3RyaW5nIGlzIGp1bmsuICBUaGUgZGVmYXVsdCBpcyBOb25lLCBhbmQgaXMKLSAgICAgIHJlY29tbWVuZGVkOyBhcyBvZiBQeXRob24gMi4zLCBhbiBhZGFwdGl2ZSBub3Rpb24gb2YgIm5vaXNlIiBsaW5lcyBpcwotICAgICAgdXNlZCB0aGF0IGRvZXMgYSBnb29kIGpvYiBvbiBpdHMgb3duLgorICAgICAgcmVjb21tZW5kZWQ7IHRoZSB1bmRlcmx5aW5nIFNlcXVlbmNlTWF0Y2hlciBjbGFzcyBoYXMgYW4gYWRhcHRpdmUKKyAgICAgIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzLgogCi0gICAgLSBjaGFyanVuazogQSBmdW5jdGlvbiB0aGF0IHNob3VsZCBhY2NlcHQgYSBzdHJpbmcgb2YgbGVuZ3RoIDEuIFRoZQotICAgICAgZGVmYXVsdCBpcyBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gSVNfQ0hBUkFDVEVSX0pVTkssIHdoaWNoIGZpbHRlcnMgb3V0Ci0gICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEgYmxhbmsgb3IgdGFiOyBub3RlOiBiYWQgaWRlYSB0byBpbmNsdWRlIG5ld2xpbmUKLSAgICAgIGluIHRoaXMhKS4KKyAgICAtIGNoYXJqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIGNoYXJhY3RlciAoc3RyaW5nIG9mIGxlbmd0aAorICAgICAgMSksIGFuZCByZXR1cm5zIHRydWUgaWZmIHRoZSBjaGFyYWN0ZXIgaXMganVuay4gVGhlIGRlZmF1bHQgaXMKKyAgICAgIHRoZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gSVNfQ0hBUkFDVEVSX0pVTkssIHdoaWNoIGZpbHRlcnMgb3V0CisgICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEgYmxhbmsgb3IgdGFiOyBub3RlOiBpdCdzIGEgYmFkIGlkZWEgdG8KKyAgICAgIGluY2x1ZGUgbmV3bGluZSBpbiB0aGlzISkuCiAKICAgICBUb29scy9zY3JpcHRzL25kaWZmLnB5IGlzIGEgY29tbWFuZC1saW5lIGZyb250LWVuZCB0byB0aGlzIGZ1bmN0aW9uLgogCkBAIC0xNDEwLDcgKzE0NTksNyBAQAogICAgICAgICAgICAgY2hhbmdlX3JlLnN1YihyZWNvcmRfc3ViX2luZm8sbWFya2VycykKICAgICAgICAgICAgICMgcHJvY2VzcyBlYWNoIHR1cGxlIGluc2VydGluZyBvdXIgc3BlY2lhbCBtYXJrcyB0aGF0IHdvbid0IGJlCiAgICAgICAgICAgICAjIG5vdGljZWQgYnkgYW4geG1sL2h0bWwgZXNjYXBlci4KLSAgICAgICAgICAgIGZvciBrZXksKGJlZ2luLGVuZCkgaW4gc3ViX2luZm9bOjotMV06CisgICAgICAgICAgICBmb3Iga2V5LChiZWdpbixlbmQpIGluIHJldmVyc2VkKHN1Yl9pbmZvKToKICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dFswOmJlZ2luXSsnXDAnK2tleSt0ZXh0W2JlZ2luOmVuZF0rJ1wxJyt0ZXh0W2VuZDpdCiAgICAgICAgICAgICB0ZXh0ID0gdGV4dFsyOl0KICAgICAgICAgIyBIYW5kbGUgY2FzZSBvZiBhZGQvZGVsZXRlIGVudGlyZSBsaW5lCkBAIC0xNDQ4LDEwICsxNDk3LDcgQEAKICAgICAgICAgICAgICMgYXJlIGEgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggb2YgdGhlIDQgbGluZXMKICAgICAgICAgICAgICMgc28gd2UgY2FuIGRvIHNvbWUgdmVyeSByZWFkYWJsZSBjb21wYXJpc29ucy4KICAgICAgICAgICAgIHdoaWxlIGxlbihsaW5lcykgPCA0OgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKG5leHQoZGlmZl9saW5lc19pdGVyYXRvcikpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnWCcpCisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKG5leHQoZGlmZl9saW5lc19pdGVyYXRvciwgJ1gnKSkKICAgICAgICAgICAgIHMgPSAnJy5qb2luKFtsaW5lWzBdIGZvciBsaW5lIGluIGxpbmVzXSkKICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnWCcpOgogICAgICAgICAgICAgICAgICMgV2hlbiBubyBtb3JlIGxpbmVzLCBwdW1wIG91dCBhbnkgcmVtYWluaW5nIGJsYW5rIGxpbmVzIHNvIHRoZQpAQCAtMTUxNCw3ICsxNTYwLDcgQEAKICAgICAgICAgICAgICAgICBudW1fYmxhbmtzX3RvX3lpZWxkIC09IDEKICAgICAgICAgICAgICAgICB5aWVsZCAoJycsJ1xuJyksTm9uZSxUcnVlCiAgICAgICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoJ1gnKToKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIGZyb21fbGluZSx0b19saW5lLFRydWUKIApAQCAtMTUzNiw3ICsxNTgyLDEwIEBACiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAjIENvbGxlY3RpbmcgbGluZXMgb2YgdGV4dCB1bnRpbCB3ZSBoYXZlIGEgZnJvbS90byBwYWlyCiAgICAgICAgICAgICB3aGlsZSAobGVuKGZyb21saW5lcyk9PTAgb3IgbGVuKHRvbGluZXMpPT0wKToKLSAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgIGlmIGZyb21fbGluZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZnJvbWxpbmVzLmFwcGVuZCgoZnJvbV9saW5lLGZvdW5kX2RpZmYpKQogICAgICAgICAgICAgICAgIGlmIHRvX2xpbmUgaXMgbm90IE5vbmU6CkBAIC0xNTUwLDggKzE1OTksNyBAQAogICAgICMgdGhlbSB1cCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2Ugd2l0aCB0aGVtLgogICAgIGxpbmVfcGFpcl9pdGVyYXRvciA9IF9saW5lX3BhaXJfaXRlcmF0b3IoKQogICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHlpZWxkIG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQorICAgICAgICB5aWVsZCBmcm9tIGxpbmVfcGFpcl9pdGVyYXRvcgogICAgICMgSGFuZGxlIGNhc2Ugd2hlcmUgdXNlciB3YW50cyBjb250ZXh0IGRpZmZlcmVuY2luZy4gIFdlIG11c3QgZG8gc29tZQogICAgICMgc3RvcmFnZSBvZiBsaW5lcyB1bnRpbCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgdGhleSBhcmUgdG8gYmUgeWllbGRlZC4KICAgICBlbHNlOgpAQCAtMTU2NCw3ICsxNjEyLDEwIEBACiAgICAgICAgICAgICBpbmRleCwgY29udGV4dExpbmVzID0gMCwgW05vbmVdKihjb250ZXh0KQogICAgICAgICAgICAgZm91bmRfZGlmZiA9IEZhbHNlCiAgICAgICAgICAgICB3aGlsZShmb3VuZF9kaWZmIGlzIEZhbHNlKToKLSAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfcGFpcl9pdGVyYXRvcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBpID0gaW5kZXggJSBjb250ZXh0CiAgICAgICAgICAgICAgICAgY29udGV4dExpbmVzW2ldID0gKGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZikKICAgICAgICAgICAgICAgICBpbmRleCArPSAxCkBAIC0xNjAxLDcgKzE2NTIsNyBAQAogCiA8aGVhZD4KICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiCi0gICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CisgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSUoY2hhcnNldClzIiAvPgogICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+JShzdHlsZXMpcwogICAgIDwvc3R5bGU+CkBAIC0xNjc5LDcgKzE3MzAsNyBAQAogICAgICAgICB0YWJzaXplIC0tIHRhYiBzdG9wIHNwYWNpbmcsIGRlZmF1bHRzIHRvIDguCiAgICAgICAgIHdyYXBjb2x1bW4gLS0gY29sdW1uIG51bWJlciB3aGVyZSBsaW5lcyBhcmUgYnJva2VuIGFuZCB3cmFwcGVkLAogICAgICAgICAgICAgZGVmYXVsdHMgdG8gTm9uZSB3aGVyZSBsaW5lcyBhcmUgbm90IHdyYXBwZWQuCi0gICAgICAgIGxpbmVqdW5rLGNoYXJqdW5rIC0tIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbnRvIG5kaWZmKCkgKHVzZWQgdG8gYnkKKyAgICAgICAgbGluZWp1bmssY2hhcmp1bmsgLS0ga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gbmRpZmYoKSAodXNlZCBieQogICAgICAgICAgICAgSHRtbERpZmYoKSB0byBnZW5lcmF0ZSB0aGUgc2lkZSBieSBzaWRlIEhUTUwgZGlmZmVyZW5jZXMpLiAgU2VlCiAgICAgICAgICAgICBuZGlmZigpIGRvY3VtZW50YXRpb24gZm9yIGFyZ3VtZW50IGRlZmF1bHQgdmFsdWVzIGFuZCBkZXNjcmlwdGlvbnMuCiAgICAgICAgICIiIgpAQCAtMTY4OCw4ICsxNzM5LDggQEAKICAgICAgICAgc2VsZi5fbGluZWp1bmsgPSBsaW5lanVuawogICAgICAgICBzZWxmLl9jaGFyanVuayA9IGNoYXJqdW5rCiAKLSAgICBkZWYgbWFrZV9maWxlKHNlbGYsZnJvbWxpbmVzLHRvbGluZXMsZnJvbWRlc2M9JycsdG9kZXNjPScnLGNvbnRleHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBudW1saW5lcz01KToKKyAgICBkZWYgbWFrZV9maWxlKHNlbGYsIGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2M9JycsIHRvZGVzYz0nJywKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQ9RmFsc2UsIG51bWxpbmVzPTUsICosIGNoYXJzZXQ9J3V0Zi04Jyk6CiAgICAgICAgICIiIlJldHVybnMgSFRNTCBmaWxlIG9mIHNpZGUgYnkgc2lkZSBjb21wYXJpc29uIHdpdGggY2hhbmdlIGhpZ2hsaWdodHMKIAogICAgICAgICBBcmd1bWVudHM6CkBAIC0xNzA0LDEzICsxNzU1LDE2IEBACiAgICAgICAgICAgICBXaGVuIGNvbnRleHQgaXMgRmFsc2UsIGNvbnRyb2xzIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gcGxhY2UKICAgICAgICAgICAgIHRoZSAibmV4dCIgbGluayBhbmNob3JzIGJlZm9yZSB0aGUgbmV4dCBjaGFuZ2UgKHNvIGNsaWNrIG9mCiAgICAgICAgICAgICAibmV4dCIgbGluayBqdW1wcyB0byBqdXN0IGJlZm9yZSB0aGUgY2hhbmdlKS4KKyAgICAgICAgY2hhcnNldCAtLSBjaGFyc2V0IG9mIHRoZSBIVE1MIGRvY3VtZW50CiAgICAgICAgICIiIgogCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxlX3RlbXBsYXRlICUgZGljdCgKLSAgICAgICAgICAgIHN0eWxlcyA9IHNlbGYuX3N0eWxlcywKLSAgICAgICAgICAgIGxlZ2VuZCA9IHNlbGYuX2xlZ2VuZCwKLSAgICAgICAgICAgIHRhYmxlID0gc2VsZi5tYWtlX3RhYmxlKGZyb21saW5lcyx0b2xpbmVzLGZyb21kZXNjLHRvZGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCxudW1saW5lcz1udW1saW5lcykpCisgICAgICAgIHJldHVybiAoc2VsZi5fZmlsZV90ZW1wbGF0ZSAlIGRpY3QoCisgICAgICAgICAgICBzdHlsZXM9c2VsZi5fc3R5bGVzLAorICAgICAgICAgICAgbGVnZW5kPXNlbGYuX2xlZ2VuZCwKKyAgICAgICAgICAgIHRhYmxlPXNlbGYubWFrZV90YWJsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjLCB0b2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBudW1saW5lcz1udW1saW5lcyksCisgICAgICAgICAgICBjaGFyc2V0PWNoYXJzZXQKKyAgICAgICAgKSkuZW5jb2RlKGNoYXJzZXQsICd4bWxjaGFycmVmcmVwbGFjZScpLmRlY29kZShjaGFyc2V0KQogCiAgICAgZGVmIF90YWJfbmV3bGluZV9yZXBsYWNlKHNlbGYsZnJvbWxpbmVzLHRvbGluZXMpOgogICAgICAgICAiIiJSZXR1cm5zIGZyb20vdG8gbGluZSBsaXN0cyB3aXRoIHRhYnMgZXhwYW5kZWQgYW5kIG5ld2xpbmVzIHJlbW92ZWQuCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCA4MWNiZTdmLi5hZjM3Y2RmIDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICByZXR1cm4gYwogCiBkZWYgZGlzKHg9Tm9uZSwgKiwgZmlsZT1Ob25lKToKLSAgICAiIiJEaXNhc3NlbWJsZSBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUuCisgICAgIiIiRGlzYXNzZW1ibGUgY2xhc3NlcywgbWV0aG9kcywgZnVuY3Rpb25zLCBnZW5lcmF0b3JzLCBvciBjb2RlLgogCiAgICAgV2l0aCBubyBhcmd1bWVudCwgZGlzYXNzZW1ibGUgdGhlIGxhc3QgdHJhY2ViYWNrLgogCkBAIC00MSw2ICs0MSw4IEBACiAgICAgICAgIHggPSB4Ll9fZnVuY19fCiAgICAgaWYgaGFzYXR0cih4LCAnX19jb2RlX18nKTogICMgRnVuY3Rpb24KICAgICAgICAgeCA9IHguX19jb2RlX18KKyAgICBpZiBoYXNhdHRyKHgsICdnaV9jb2RlJyk6ICAjIEdlbmVyYXRvcgorICAgICAgICB4ID0geC5naV9jb2RlCiAgICAgaWYgaGFzYXR0cih4LCAnX19kaWN0X18nKTogICMgQ2xhc3Mgb3IgbW9kdWxlCiAgICAgICAgIGl0ZW1zID0gc29ydGVkKHguX19kaWN0X18uaXRlbXMoKSkKICAgICAgICAgZm9yIG5hbWUsIHgxIGluIGl0ZW1zOgpAQCAtODIsNiArODQsOCBAQAogICAgIDE2OiAiTkVTVEVEIiwKICAgICAzMjogIkdFTkVSQVRPUiIsCiAgICAgNjQ6ICJOT0ZSRUUiLAorICAgMTI4OiAiQ09ST1VUSU5FIiwKKyAgIDI1NjogIklURVJBQkxFX0NPUk9VVElORSIsCiB9CiAKIGRlZiBwcmV0dHlfZmxhZ3MoZmxhZ3MpOgpAQCAtOTksMTEgKzEwMywxMyBAQAogICAgIHJldHVybiAiLCAiLmpvaW4obmFtZXMpCiAKIGRlZiBfZ2V0X2NvZGVfb2JqZWN0KHgpOgotICAgICIiIkhlbHBlciB0byBoYW5kbGUgbWV0aG9kcywgZnVuY3Rpb25zLCBzdHJpbmdzIGFuZCByYXcgY29kZSBvYmplY3RzIiIiCisgICAgIiIiSGVscGVyIHRvIGhhbmRsZSBtZXRob2RzLCBmdW5jdGlvbnMsIGdlbmVyYXRvcnMsIHN0cmluZ3MgYW5kIHJhdyBjb2RlIG9iamVjdHMiIiIKICAgICBpZiBoYXNhdHRyKHgsICdfX2Z1bmNfXycpOiAjIE1ldGhvZAogICAgICAgICB4ID0geC5fX2Z1bmNfXwogICAgIGlmIGhhc2F0dHIoeCwgJ19fY29kZV9fJyk6ICMgRnVuY3Rpb24KICAgICAgICAgeCA9IHguX19jb2RlX18KKyAgICBpZiBoYXNhdHRyKHgsICdnaV9jb2RlJyk6ICAjIEdlbmVyYXRvcgorICAgICAgICB4ID0geC5naV9jb2RlCiAgICAgaWYgaXNpbnN0YW5jZSh4LCBzdHIpOiAgICAgIyBTb3VyY2UgY29kZQogICAgICAgICB4ID0gX3RyeV9jb21waWxlKHgsICI8ZGlzYXNzZW1ibHk+IikKICAgICBpZiBoYXNhdHRyKHgsICdjb19jb2RlJyk6ICAjIENvZGUgb2JqZWN0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL19tc3ZjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL19tc3ZjY29tcGlsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhNWYxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvX21zdmNjb21waWxlci5weQpAQCAtMCwwICsxLDU0NCBAQAorIiIiZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIKKworQ29udGFpbnMgTVNWQ0NvbXBpbGVyLCBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWJzdHJhY3QgQ0NvbXBpbGVyIGNsYXNzCitmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxNS4KKworVGhlIG1vZHVsZSBpcyBjb21wYXRpYmxlIHdpdGggVlMgMjAxNSBhbmQgbGF0ZXIuIFlvdSBjYW4gZmluZCBsZWdhY3kgc3VwcG9ydAorZm9yIG9sZGVyIHZlcnNpb25zIGluIGRpc3R1dGlscy5tc3ZjOWNvbXBpbGVyIGFuZCBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyLgorIiIiCisKKyMgV3JpdHRlbiBieSBQZXJyeSBTdG9sbAorIyBoYWNrZWQgYnkgUm9iaW4gQmVja2VyIGFuZCBUaG9tYXMgSGVsbGVyIHRvIGRvIGEgYmV0dGVyIGpvYiBvZgorIyAgIGZpbmRpbmcgRGV2U3R1ZGlvICh0aHJvdWdoIHRoZSByZWdpc3RyeSkKKyMgcG9ydGVkIHRvIFZTIDIwMDUgYW5kIFZTIDIwMDggYnkgQ2hyaXN0aWFuIEhlaW1lcworIyBwb3J0ZWQgdG8gVlMgMjAxNSBieSBTdGV2ZSBEb3dlcgorCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3VicHJvY2VzcworCitmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvciwgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxlRXJyb3IsIExpYkVycm9yLCBMaW5rRXJyb3IKK2Zyb20gZGlzdHV0aWxzLmNjb21waWxlciBpbXBvcnQgQ0NvbXBpbGVyLCBnZW5fbGliX29wdGlvbnMKK2Zyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKK2Zyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQorCitpbXBvcnQgd2lucmVnCitmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY291bnQKKworZGVmIF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpOgorICAgIHdpdGggd2lucmVnLk9wZW5LZXlFeCgKKyAgICAgICAgd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgciJTb2Z0d2FyZVxNaWNyb3NvZnRcVmlzdWFsU3R1ZGlvXFN4U1xWQzciLAorICAgICAgICBhY2Nlc3M9d2lucmVnLktFWV9SRUFEIHwgd2lucmVnLktFWV9XT1c2NF8zMktFWQorICAgICkgYXMga2V5OgorICAgICAgICBpZiBub3Qga2V5OgorICAgICAgICAgICAgbG9nLmRlYnVnKCJWaXN1YWwgQysrIGlzIG5vdCByZWdpc3RlcmVkIikKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisKKyAgICAgICAgYmVzdF92ZXJzaW9uID0gMAorICAgICAgICBiZXN0X2RpciA9IE5vbmUKKyAgICAgICAgZm9yIGkgaW4gY291bnQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2LCB2Y19kaXIsIHZ0ID0gd2lucmVnLkVudW1WYWx1ZShrZXksIGkpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgdiBhbmQgdnQgPT0gd2lucmVnLlJFR19TWiBhbmQgb3MucGF0aC5pc2Rpcih2Y19kaXIpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGludChmbG9hdCh2KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSAxNCBhbmQgdmVyc2lvbiA+IGJlc3RfdmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgYmVzdF92ZXJzaW9uLCBiZXN0X2RpciA9IHZlcnNpb24sIHZjX2RpcgorICAgICAgICBpZiBub3QgYmVzdF92ZXJzaW9uOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJObyBzdWl0YWJsZSBWaXN1YWwgQysrIHZlcnNpb24gZm91bmQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKworICAgICAgICB2Y3ZhcnNhbGwgPSBvcy5wYXRoLmpvaW4oYmVzdF9kaXIsICJ2Y3ZhcnNhbGwuYmF0IikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHZjdmFyc2FsbCk6CisgICAgICAgICAgICBsb2cuZGVidWcoIiVzIGNhbm5vdCBiZSBmb3VuZCIsIHZjdmFyc2FsbCkKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisKKyAgICAgICAgdmNydW50aW1lID0gTm9uZQorICAgICAgICB2Y3J1bnRpbWVfc3BlYyA9IF9WQ1ZBUlNfUExBVF9UT19WQ1JVTlRJTUVfUkVESVNULmdldChwbGF0X3NwZWMpCisgICAgICAgIGlmIHZjcnVudGltZV9zcGVjOgorICAgICAgICAgICAgdmNydW50aW1lID0gb3MucGF0aC5qb2luKGJlc3RfZGlyLAorICAgICAgICAgICAgICAgIHZjcnVudGltZV9zcGVjLmZvcm1hdChiZXN0X3ZlcnNpb24pKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHZjcnVudGltZSk6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIlcyBjYW5ub3QgYmUgZm91bmQiLCB2Y3J1bnRpbWUpCisgICAgICAgICAgICAgICAgdmNydW50aW1lID0gTm9uZQorCisgICAgICAgIHJldHVybiB2Y3ZhcnNhbGwsIHZjcnVudGltZQorCitkZWYgX2dldF92Y19lbnYocGxhdF9zcGVjKToKKyAgICBpZiBvcy5nZXRlbnYoIkRJU1RVVElMU19VU0VfU0RLIik6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBrZXkubG93ZXIoKTogdmFsdWUKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKQorICAgICAgICB9CisKKyAgICB2Y3ZhcnNhbGwsIHZjcnVudGltZSA9IF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpCisgICAgaWYgbm90IHZjdmFyc2FsbDoKKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiVW5hYmxlIHRvIGZpbmQgdmN2YXJzYWxsLmJhdCIpCisKKyAgICB0cnk6CisgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgICAgICAgJyJ7fSIge30gJiYgc2V0Jy5mb3JtYXQodmN2YXJzYWxsLCBwbGF0X3NwZWMpLAorICAgICAgICAgICAgc2hlbGw9VHJ1ZSwKKyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICApCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4YzoKKyAgICAgICAgbG9nLmVycm9yKGV4Yy5vdXRwdXQpCisgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoIkVycm9yIGV4ZWN1dGluZyB7fSIKKyAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Yy5jbWQpKQorCisgICAgZW52ID0geworICAgICAgICBrZXkubG93ZXIoKTogdmFsdWUKKyAgICAgICAgZm9yIGtleSwgXywgdmFsdWUgaW4KKyAgICAgICAgKGxpbmUucGFydGl0aW9uKCc9JykgZm9yIGxpbmUgaW4gb3V0LnNwbGl0bGluZXMoKSkKKyAgICAgICAgaWYga2V5IGFuZCB2YWx1ZQorICAgIH0KKworICAgIGlmIHZjcnVudGltZToKKyAgICAgICAgZW52WydweV92Y3J1bnRpbWVfcmVkaXN0J10gPSB2Y3J1bnRpbWUKKyAgICByZXR1cm4gZW52CisKK2RlZiBfZmluZF9leGUoZXhlLCBwYXRocz1Ob25lKToKKyAgICAiIiJSZXR1cm4gcGF0aCB0byBhbiBNU1ZDIGV4ZWN1dGFibGUgcHJvZ3JhbS4KKworICAgIFRyaWVzIHRvIGZpbmQgdGhlIHByb2dyYW0gaW4gc2V2ZXJhbCBwbGFjZXM6IGZpcnN0LCBvbmUgb2YgdGhlCisgICAgTVNWQyBwcm9ncmFtIHNlYXJjaCBwYXRocyBmcm9tIHRoZSByZWdpc3RyeTsgbmV4dCwgdGhlIGRpcmVjdG9yaWVzCisgICAgaW4gdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuICBJZiBhbnkgb2YgdGhvc2Ugd29yaywgcmV0dXJuIGFuCisgICAgYWJzb2x1dGUgcGF0aCB0aGF0IGlzIGtub3duIHRvIGV4aXN0LiAgSWYgbm9uZSBvZiB0aGVtIHdvcmssIGp1c3QKKyAgICByZXR1cm4gdGhlIG9yaWdpbmFsIHByb2dyYW0gbmFtZSwgJ2V4ZScuCisgICAgIiIiCisgICAgaWYgbm90IHBhdGhzOgorICAgICAgICBwYXRocyA9IG9zLmdldGVudigncGF0aCcpLnNwbGl0KG9zLnBhdGhzZXApCisgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgIGZuID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChwKSwgZXhlKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICByZXR1cm4gZm4KKyAgICByZXR1cm4gZXhlCisKKyMgQSBtYXAga2V5ZWQgYnkgZ2V0X3BsYXRmb3JtKCkgcmV0dXJuIHZhbHVlcyB0byB2YWx1ZXMgYWNjZXB0ZWQgYnkKKyMgJ3ZjdmFyc2FsbC5iYXQnLiAgTm90ZSBhIGNyb3NzLWNvbXBpbGUgbWF5IGNvbWJpbmUgdGhlc2UgKGVnLCAneDg2X2FtZDY0JyBpcworIyB0aGUgcGFyYW0gdG8gY3Jvc3MtY29tcGlsZSBvbiB4ODYgdGFyZ2V0dGluZyBhbWQ2NC4pCitQTEFUX1RPX1ZDVkFSUyA9IHsKKyAgICAnd2luMzInIDogJ3g4NicsCisgICAgJ3dpbi1hbWQ2NCcgOiAnYW1kNjQnLAorfQorCisjIEEgbWFwIGtleWVkIGJ5IGdldF9wbGF0Zm9ybSgpIHJldHVybiB2YWx1ZXMgdG8gdGhlIGZpbGUgdW5kZXIKKyMgdGhlIFZDIGluc3RhbGwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHZjcnVudGltZSByZWRpc3RyaWJ1dGFibGUuCitfVkNWQVJTX1BMQVRfVE9fVkNSVU5USU1FX1JFRElTVCA9IHsKKyAgICAneDg2JyA6ICdyZWRpc3RcXHg4NlxcTWljcm9zb2Z0LlZDezB9MC5DUlRcXHZjcnVudGltZXswfTAuZGxsJywKKyAgICAnYW1kNjQnIDogJ3JlZGlzdFxceDY0XFxNaWNyb3NvZnQuVkN7MH0wLkNSVFxcdmNydW50aW1lezB9MC5kbGwnLAorICAgICd4ODZfYW1kNjQnIDogJ3JlZGlzdFxceDY0XFxNaWNyb3NvZnQuVkN7MH0wLkNSVFxcdmNydW50aW1lezB9MC5kbGwnLAorfQorCisjIEEgc2V0IGNvbnRhaW5pbmcgdGhlIERMTHMgdGhhdCBhcmUgZ3VhcmFudGVlZCB0byBiZSBhdmFpbGFibGUgZm9yCisjIGFsbCBtaWNybyB2ZXJzaW9ucyBvZiB0aGlzIFB5dGhvbiB2ZXJzaW9uLiBLbm93biBleHRlbnNpb24KKyMgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIG5vdCBpbiB0aGlzIHNldCB3aWxsIGJlIGNvcGllZCB0byB0aGUgb3V0cHV0CisjIHBhdGguCitfQlVORExFRF9ETExTID0gZnJvemVuc2V0KFsndmNydW50aW1lMTQwLmRsbCddKQorCitjbGFzcyBNU1ZDQ29tcGlsZXIoQ0NvbXBpbGVyKSA6CisgICAgIiIiQ29uY3JldGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byBNaWNyb3NvZnQgVmlzdWFsIEMrKywKKyAgICAgICBhcyBkZWZpbmVkIGJ5IHRoZSBDQ29tcGlsZXIgYWJzdHJhY3QgY2xhc3MuIiIiCisKKyAgICBjb21waWxlcl90eXBlID0gJ21zdmMnCisKKyAgICAjIEp1c3Qgc2V0IHRoaXMgc28gQ0NvbXBpbGVyJ3MgY29uc3RydWN0b3IgZG9lc24ndCBiYXJmLiAgV2UgY3VycmVudGx5CisgICAgIyBkb24ndCB1c2UgdGhlICdzZXRfZXhlY3V0YWJsZXMoKScgYnVyZWF1Y3JhY3kgcHJvdmlkZWQgYnkgQ0NvbXBpbGVyLAorICAgICMgYXMgaXQgcmVhbGx5IGlzbid0IG5lY2Vzc2FyeSBmb3IgdGhpcyBzb3J0IG9mIHNpbmdsZS1jb21waWxlciBjbGFzcy4KKyAgICAjIFdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIHdpdGggVW5peENDb21waWxlciwKKyAgICAjIHRob3VnaCwgc28gaXQncyB3b3J0aCB0aGlua2luZyBhYm91dC4KKyAgICBleGVjdXRhYmxlcyA9IHt9CisKKyAgICAjIFByaXZhdGUgY2xhc3MgZGF0YSAobmVlZCB0byBkaXN0aW5ndWlzaCBDIGZyb20gQysrIHNvdXJjZSBmb3IgY29tcGlsZXIpCisgICAgX2NfZXh0ZW5zaW9ucyA9IFsnLmMnXQorICAgIF9jcHBfZXh0ZW5zaW9ucyA9IFsnLmNjJywgJy5jcHAnLCAnLmN4eCddCisgICAgX3JjX2V4dGVuc2lvbnMgPSBbJy5yYyddCisgICAgX21jX2V4dGVuc2lvbnMgPSBbJy5tYyddCisKKyAgICAjIE5lZWRlZCBmb3IgdGhlIGZpbGVuYW1lIGdlbmVyYXRpb24gbWV0aG9kcyBwcm92aWRlZCBieSB0aGUKKyAgICAjIGJhc2UgY2xhc3MsIENDb21waWxlci4KKyAgICBzcmNfZXh0ZW5zaW9ucyA9IChfY19leHRlbnNpb25zICsgX2NwcF9leHRlbnNpb25zICsKKyAgICAgICAgICAgICAgICAgICAgICBfcmNfZXh0ZW5zaW9ucyArIF9tY19leHRlbnNpb25zKQorICAgIHJlc19leHRlbnNpb24gPSAnLnJlcycKKyAgICBvYmpfZXh0ZW5zaW9uID0gJy5vYmonCisgICAgc3RhdGljX2xpYl9leHRlbnNpb24gPSAnLmxpYicKKyAgICBzaGFyZWRfbGliX2V4dGVuc2lvbiA9ICcuZGxsJworICAgIHN0YXRpY19saWJfZm9ybWF0ID0gc2hhcmVkX2xpYl9mb3JtYXQgPSAnJXMlcycKKyAgICBleGVfZXh0ZW5zaW9uID0gJy5leGUnCisKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPTAsIGRyeV9ydW49MCwgZm9yY2U9MCk6CisgICAgICAgIENDb21waWxlci5fX2luaXRfXyAoc2VsZiwgdmVyYm9zZSwgZHJ5X3J1biwgZm9yY2UpCisgICAgICAgICMgdGFyZ2V0IHBsYXRmb3JtICgucGxhdF9uYW1lIGlzIGNvbnNpc3RlbnQgd2l0aCAnYmRpc3QnKQorICAgICAgICBzZWxmLnBsYXRfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IEZhbHNlCisKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWxmLCBwbGF0X25hbWU9Tm9uZSk6CisgICAgICAgICMgbXVsdGktaW5pdCBtZWFucyB3ZSB3b3VsZCBuZWVkIHRvIGNoZWNrIHBsYXRmb3JtIHNhbWUgZWFjaCB0aW1lLi4uCisgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pbml0aWFsaXplZCwgImRvbid0IGluaXQgbXVsdGlwbGUgdGltZXMiCisgICAgICAgIGlmIHBsYXRfbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgcGxhdF9uYW1lID0gZ2V0X3BsYXRmb3JtKCkKKyAgICAgICAgIyBzYW5pdHkgY2hlY2sgZm9yIHBsYXRmb3JtcyB0byBwcmV2ZW50IG9ic2N1cmUgZXJyb3JzIGxhdGVyLgorICAgICAgICBpZiBwbGF0X25hbWUgbm90IGluIFBMQVRfVE9fVkNWQVJTOgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiLS1wbGF0LW5hbWUgbXVzdCBiZSBvbmUgb2Yge30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHVwbGUoUExBVF9UT19WQ1ZBUlMpKSkKKworICAgICAgICAjIE9uIHg4NiwgJ3ZjdmFyc2FsbC5iYXQgYW1kNjQnIGNyZWF0ZXMgYW4gZW52IHRoYXQgZG9lc24ndCB3b3JrOworICAgICAgICAjIHRvIGNyb3NzIGNvbXBpbGUsIHlvdSB1c2UgJ3g4Nl9hbWQ2NCcuCisgICAgICAgICMgT24gQU1ENjQsICd2Y3ZhcnNhbGwuYmF0IGFtZDY0JyBpcyBhIG5hdGl2ZSBidWlsZCBlbnY7IHRvIGNyb3NzCisgICAgICAgICMgY29tcGlsZSB1c2UgJ3g4NicgKGllLCBpdCBydW5zIHRoZSB4ODYgY29tcGlsZXIgZGlyZWN0bHkpCisgICAgICAgIGlmIHBsYXRfbmFtZSA9PSBnZXRfcGxhdGZvcm0oKSBvciBwbGF0X25hbWUgPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICMgbmF0aXZlIGJ1aWxkIG9yIGNyb3NzLWNvbXBpbGUgdG8gd2luMzIKKyAgICAgICAgICAgIHBsYXRfc3BlYyA9IFBMQVRfVE9fVkNWQVJTW3BsYXRfbmFtZV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgY3Jvc3MgY29tcGlsZSBmcm9tIHdpbjMyIC0+IHNvbWUgNjRiaXQKKyAgICAgICAgICAgIHBsYXRfc3BlYyA9ICd7fV97fScuZm9ybWF0KAorICAgICAgICAgICAgICAgIFBMQVRfVE9fVkNWQVJTW2dldF9wbGF0Zm9ybSgpXSwKKyAgICAgICAgICAgICAgICBQTEFUX1RPX1ZDVkFSU1twbGF0X25hbWVdCisgICAgICAgICAgICApCisKKyAgICAgICAgdmNfZW52ID0gX2dldF92Y19lbnYocGxhdF9zcGVjKQorICAgICAgICBpZiBub3QgdmNfZW52OgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiVW5hYmxlIHRvIGZpbmQgYSBjb21wYXRpYmxlICIKKyAgICAgICAgICAgICAgICAiVmlzdWFsIFN0dWRpbyBpbnN0YWxsYXRpb24uIikKKworICAgICAgICBzZWxmLl9wYXRocyA9IHZjX2Vudi5nZXQoJ3BhdGgnLCAnJykKKyAgICAgICAgcGF0aHMgPSBzZWxmLl9wYXRocy5zcGxpdChvcy5wYXRoc2VwKQorICAgICAgICBzZWxmLmNjID0gX2ZpbmRfZXhlKCJjbC5leGUiLCBwYXRocykKKyAgICAgICAgc2VsZi5saW5rZXIgPSBfZmluZF9leGUoImxpbmsuZXhlIiwgcGF0aHMpCisgICAgICAgIHNlbGYubGliID0gX2ZpbmRfZXhlKCJsaWIuZXhlIiwgcGF0aHMpCisgICAgICAgIHNlbGYucmMgPSBfZmluZF9leGUoInJjLmV4ZSIsIHBhdGhzKSAgICMgcmVzb3VyY2UgY29tcGlsZXIKKyAgICAgICAgc2VsZi5tYyA9IF9maW5kX2V4ZSgibWMuZXhlIiwgcGF0aHMpICAgIyBtZXNzYWdlIGNvbXBpbGVyCisgICAgICAgIHNlbGYubXQgPSBfZmluZF9leGUoIm10LmV4ZSIsIHBhdGhzKSAgICMgbWVzc2FnZSBjb21waWxlcgorICAgICAgICBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0ID0gdmNfZW52LmdldCgncHlfdmNydW50aW1lX3JlZGlzdCcsICcnKQorCisgICAgICAgIGZvciBkaXIgaW4gdmNfZW52LmdldCgnaW5jbHVkZScsICcnKS5zcGxpdChvcy5wYXRoc2VwKToKKyAgICAgICAgICAgIGlmIGRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9pbmNsdWRlX2RpcihkaXIpCisKKyAgICAgICAgZm9yIGRpciBpbiB2Y19lbnYuZ2V0KCdsaWInLCAnJykuc3BsaXQob3MucGF0aHNlcCk6CisgICAgICAgICAgICBpZiBkaXI6CisgICAgICAgICAgICAgICAgc2VsZi5hZGRfbGlicmFyeV9kaXIoZGlyKQorCisgICAgICAgIHNlbGYucHJlcHJvY2Vzc19vcHRpb25zID0gTm9uZQorICAgICAgICAjIElmIHZjcnVudGltZV9yZWRpc3QgaXMgYXZhaWxhYmxlLCBsaW5rIGFnYWluc3QgaXQgZHluYW1pY2FsbHkuIE90aGVyd2lzZSwKKyAgICAgICAgIyB1c2UgL01UW2RdIHRvIGJ1aWxkIHN0YXRpY2FsbHksIHRoZW4gc3dpdGNoIGZyb20gbGlidWNydFtkXS5saWIgdG8gdWNydFtkXS5saWIKKyAgICAgICAgIyBsYXRlciB0byBkeW5hbWljYWxseSBsaW5rIHRvIHVjcnRiYXNlIGJ1dCBub3QgdmNydW50aW1lLgorICAgICAgICBzZWxmLmNvbXBpbGVfb3B0aW9ucyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJywgJy9PeCcsICcvVzMnLCAnL0dMJywgJy9ETkRFQlVHJworICAgICAgICBdCisgICAgICAgIHNlbGYuY29tcGlsZV9vcHRpb25zLmFwcGVuZCgnL01EJyBpZiBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0IGVsc2UgJy9NVCcpCisKKyAgICAgICAgc2VsZi5jb21waWxlX29wdGlvbnNfZGVidWcgPSBbCisgICAgICAgICAgICAnL25vbG9nbycsICcvT2QnLCAnL01EZCcsICcvWmknLCAnL1czJywgJy9EX0RFQlVHJworICAgICAgICBdCisKKyAgICAgICAgbGRmbGFncyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJywgJy9JTkNSRU1FTlRBTDpOTycsICcvTFRDRycKKyAgICAgICAgXQorICAgICAgICBpZiBub3Qgc2VsZi5fdmNydW50aW1lX3JlZGlzdDoKKyAgICAgICAgICAgIGxkZmxhZ3MuZXh0ZW5kKCgnL25vZGVmYXVsdGxpYjpsaWJ1Y3J0LmxpYicsICd1Y3J0LmxpYicpKQorCisgICAgICAgIGxkZmxhZ3NfZGVidWcgPSBbCisgICAgICAgICAgICAnL25vbG9nbycsICcvSU5DUkVNRU5UQUw6Tk8nLCAnL0xUQ0cnLCAnL0RFQlVHOkZVTEwnCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmxkZmxhZ3NfZXhlID0gWypsZGZsYWdzLCAnL01BTklGRVNUOkVNQkVELElEPTEnXQorICAgICAgICBzZWxmLmxkZmxhZ3NfZXhlX2RlYnVnID0gWypsZGZsYWdzX2RlYnVnLCAnL01BTklGRVNUOkVNQkVELElEPTEnXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc2hhcmVkID0gWypsZGZsYWdzLCAnL0RMTCcsICcvTUFOSUZFU1Q6RU1CRUQsSUQ9MicsICcvTUFOSUZFU1RVQUM6Tk8nXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc2hhcmVkX2RlYnVnID0gWypsZGZsYWdzX2RlYnVnLCAnL0RMTCcsICcvTUFOSUZFU1Q6RU1CRUQsSUQ9MicsICcvTUFOSUZFU1RVQUM6Tk8nXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc3RhdGljID0gWypsZGZsYWdzXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc3RhdGljX2RlYnVnID0gWypsZGZsYWdzX2RlYnVnXQorCisgICAgICAgIHNlbGYuX2xkZmxhZ3MgPSB7CisgICAgICAgICAgICAoQ0NvbXBpbGVyLkVYRUNVVEFCTEUsIE5vbmUpOiBzZWxmLmxkZmxhZ3NfZXhlLAorICAgICAgICAgICAgKENDb21waWxlci5FWEVDVVRBQkxFLCBGYWxzZSk6IHNlbGYubGRmbGFnc19leGUsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLkVYRUNVVEFCTEUsIFRydWUpOiBzZWxmLmxkZmxhZ3NfZXhlX2RlYnVnLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfT0JKRUNULCBOb25lKTogc2VsZi5sZGZsYWdzX3NoYXJlZCwKKyAgICAgICAgICAgIChDQ29tcGlsZXIuU0hBUkVEX09CSkVDVCwgRmFsc2UpOiBzZWxmLmxkZmxhZ3Nfc2hhcmVkLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfT0JKRUNULCBUcnVlKTogc2VsZi5sZGZsYWdzX3NoYXJlZF9kZWJ1ZywKKyAgICAgICAgICAgIChDQ29tcGlsZXIuU0hBUkVEX0xJQlJBUlksIE5vbmUpOiBzZWxmLmxkZmxhZ3Nfc3RhdGljLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfTElCUkFSWSwgRmFsc2UpOiBzZWxmLmxkZmxhZ3Nfc3RhdGljLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfTElCUkFSWSwgVHJ1ZSk6IHNlbGYubGRmbGFnc19zdGF0aWNfZGVidWcsCisgICAgICAgIH0KKworICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgIyAtLSBXb3JrZXIgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGRlZiBvYmplY3RfZmlsZW5hbWVzKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGVuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9kaXI9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPScnKToKKyAgICAgICAgZXh0X21hcCA9IHsKKyAgICAgICAgICAgICoqe2V4dDogc2VsZi5vYmpfZXh0ZW5zaW9uIGZvciBleHQgaW4gc2VsZi5zcmNfZXh0ZW5zaW9uc30sCisgICAgICAgICAgICAqKntleHQ6IHNlbGYucmVzX2V4dGVuc2lvbiBmb3IgZXh0IGluIHNlbGYuX3JjX2V4dGVuc2lvbnMgKyBzZWxmLl9tY19leHRlbnNpb25zfSwKKyAgICAgICAgfQorCisgICAgICAgIG91dHB1dF9kaXIgPSBvdXRwdXRfZGlyIG9yICcnCisKKyAgICAgICAgZGVmIG1ha2Vfb3V0X3BhdGgocCk6CisgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHApCisgICAgICAgICAgICBpZiBzdHJpcF9kaXI6CisgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoYmFzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgXywgYmFzZSA9IG9zLnBhdGguc3BsaXRkcml2ZShiYXNlKQorICAgICAgICAgICAgICAgIGlmIGJhc2Uuc3RhcnRzd2l0aCgob3MucGF0aC5zZXAsIG9zLnBhdGguYWx0c2VwKSk6CisgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlWzE6XQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgWFhYOiBUaGlzIG1heSBwcm9kdWNlIGFic3VyZGx5IGxvbmcgcGF0aHMuIFdlIHNob3VsZCBjaGVjaworICAgICAgICAgICAgICAgICMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IGFuZCB0cmltIGJhc2UgdW50aWwgd2UgZml0IHdpdGhpbgorICAgICAgICAgICAgICAgICMgMjYwIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBiYXNlICsgZXh0X21hcFtleHRdKQorICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgICAgICMgQmV0dGVyIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIHNpbGVudGx5IGNvbnRpbnVpbmcKKyAgICAgICAgICAgICAgICAjIGFuZCBsYXRlciBjb21wbGFpbiBhYm91dCBzb3VyY2VzIGFuZCB0YXJnZXRzIGhhdmluZworICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IGxlbmd0aHMKKyAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IoIkRvbid0IGtub3cgaG93IHRvIGNvbXBpbGUge30iLmZvcm1hdChwKSkKKworICAgICAgICByZXR1cm4gbGlzdChtYXAobWFrZV9vdXRfcGF0aCwgc291cmNlX2ZpbGVuYW1lcykpCisKKworICAgIGRlZiBjb21waWxlKHNlbGYsIHNvdXJjZXMsCisgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1Ob25lLCBtYWNyb3M9Tm9uZSwgaW5jbHVkZV9kaXJzPU5vbmUsIGRlYnVnPTAsCisgICAgICAgICAgICAgICAgZXh0cmFfcHJlYXJncz1Ob25lLCBleHRyYV9wb3N0YXJncz1Ob25lLCBkZXBlbmRzPU5vbmUpOgorCisgICAgICAgIGlmIG5vdCBzZWxmLmluaXRpYWxpemVkOgorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKCkKKyAgICAgICAgY29tcGlsZV9pbmZvID0gc2VsZi5fc2V0dXBfY29tcGlsZShvdXRwdXRfZGlyLCBtYWNyb3MsIGluY2x1ZGVfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLCBkZXBlbmRzLCBleHRyYV9wb3N0YXJncykKKyAgICAgICAgbWFjcm9zLCBvYmplY3RzLCBleHRyYV9wb3N0YXJncywgcHBfb3B0cywgYnVpbGQgPSBjb21waWxlX2luZm8KKworICAgICAgICBjb21waWxlX29wdHMgPSBleHRyYV9wcmVhcmdzIG9yIFtdCisgICAgICAgIGNvbXBpbGVfb3B0cy5hcHBlbmQoJy9jJykKKyAgICAgICAgaWYgZGVidWc6CisgICAgICAgICAgICBjb21waWxlX29wdHMuZXh0ZW5kKHNlbGYuY29tcGlsZV9vcHRpb25zX2RlYnVnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tcGlsZV9vcHRzLmV4dGVuZChzZWxmLmNvbXBpbGVfb3B0aW9ucykKKworCisgICAgICAgIGFkZF9jcHBfb3B0cyA9IEZhbHNlCisKKyAgICAgICAgZm9yIG9iaiBpbiBvYmplY3RzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNyYywgZXh0ID0gYnVpbGRbb2JqXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgICAgICAjIHBhc3MgdGhlIGZ1bGwgcGF0aG5hbWUgdG8gTVNWQyBpbiBkZWJ1ZyBtb2RlLAorICAgICAgICAgICAgICAgICMgdGhpcyBhbGxvd3MgdGhlIGRlYnVnZ2VyIHRvIGZpbmQgdGhlIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAgICAgIyB3aXRob3V0IGFza2luZyB0aGUgdXNlciB0byBicm93c2UgZm9yIGl0CisgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5hYnNwYXRoKHNyYykKKworICAgICAgICAgICAgaWYgZXh0IGluIHNlbGYuX2NfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICBpbnB1dF9vcHQgPSAiL1RjIiArIHNyYworICAgICAgICAgICAgZWxpZiBleHQgaW4gc2VsZi5fY3BwX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgaW5wdXRfb3B0ID0gIi9UcCIgKyBzcmMKKyAgICAgICAgICAgICAgICBhZGRfY3BwX29wdHMgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGV4dCBpbiBzZWxmLl9yY19leHRlbnNpb25zOgorICAgICAgICAgICAgICAgICMgY29tcGlsZSAuUkMgdG8gLlJFUyBmaWxlCisgICAgICAgICAgICAgICAgaW5wdXRfb3B0ID0gc3JjCisgICAgICAgICAgICAgICAgb3V0cHV0X29wdCA9ICIvZm8iICsgb2JqCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLnJjXSArIHBwX29wdHMgKyBbb3V0cHV0X29wdCwgaW5wdXRfb3B0XSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBleHQgaW4gc2VsZi5fbWNfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICAjIENvbXBpbGUgLk1DIHRvIC5SQyBmaWxlIHRvIC5SRVMgZmlsZS4KKyAgICAgICAgICAgICAgICAjICAgKiAnLWggZGlyJyBzcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBmb3IgdGhlCisgICAgICAgICAgICAgICAgIyAgICAgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZQorICAgICAgICAgICAgICAgICMgICAqICctciBkaXInIHNwZWNpZmllcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAjICAgICBnZW5lcmF0ZWQgUkMgZmlsZSBhbmQgdGhlIGJpbmFyeSBtZXNzYWdlIHJlc291cmNlCisgICAgICAgICAgICAgICAgIyAgICAgaXQgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBGb3Igbm93IChzaW5jZSB0aGVyZSBhcmUgbm8gb3B0aW9ucyB0byBjaGFuZ2UgdGhpcyksCisgICAgICAgICAgICAgICAgIyB3ZSB1c2UgdGhlIHNvdXJjZS1kaXJlY3RvcnkgZm9yIHRoZSBpbmNsdWRlIGZpbGUgYW5kCisgICAgICAgICAgICAgICAgIyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgUkMgZmlsZSBhbmQgbWVzc2FnZQorICAgICAgICAgICAgICAgICMgcmVzb3VyY2VzLiBUaGlzIHdvcmtzIGF0IGxlYXN0IGZvciB3aW4zMmFsbC4KKyAgICAgICAgICAgICAgICBoX2RpciA9IG9zLnBhdGguZGlybmFtZShzcmMpCisgICAgICAgICAgICAgICAgcmNfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9iaikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgZmlyc3QgY29tcGlsZSAuTUMgdG8gLlJDIGFuZCAuSCBmaWxlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYubWMsICctaCcsIGhfZGlyLCAnLXInLCByY19kaXIsIHNyY10pCisgICAgICAgICAgICAgICAgICAgIGJhc2UsIF8gPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUgKHNyYykpCisgICAgICAgICAgICAgICAgICAgIHJjX2ZpbGUgPSBvcy5wYXRoLmpvaW4ocmNfZGlyLCBiYXNlICsgJy5yYycpCisgICAgICAgICAgICAgICAgICAgICMgdGhlbiBjb21waWxlIC5SQyB0byAuUkVTIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihbc2VsZi5yYywgIi9mbyIgKyBvYmosIHJjX2ZpbGVdKQorCisgICAgICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIENvbXBpbGVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBob3cgdG8gaGFuZGxlIHRoaXMgZmlsZT8KKyAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IoIkRvbid0IGtub3cgaG93IHRvIGNvbXBpbGUge30gdG8ge30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc3JjLCBvYmopKQorCisgICAgICAgICAgICBhcmdzID0gW3NlbGYuY2NdICsgY29tcGlsZV9vcHRzICsgcHBfb3B0cworICAgICAgICAgICAgaWYgYWRkX2NwcF9vcHRzOgorICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCcvRUhzYycpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChpbnB1dF9vcHQpCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiL0ZvIiArIG9iaikKKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX3Bvc3RhcmdzKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihhcmdzKQorICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKKworICAgICAgICByZXR1cm4gb2JqZWN0cworCisKKyAgICBkZWYgY3JlYXRlX3N0YXRpY19saWIoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2xpYm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWc9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xhbmc9Tm9uZSk6CisKKyAgICAgICAgaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoKQorICAgICAgICBvYmplY3RzLCBvdXRwdXRfZGlyID0gc2VsZi5fZml4X29iamVjdF9hcmdzKG9iamVjdHMsIG91dHB1dF9kaXIpCisgICAgICAgIG91dHB1dF9maWxlbmFtZSA9IHNlbGYubGlicmFyeV9maWxlbmFtZShvdXRwdXRfbGlibmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXI9b3V0cHV0X2RpcikKKworICAgICAgICBpZiBzZWxmLl9uZWVkX2xpbmsob2JqZWN0cywgb3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgICAgIGxpYl9hcmdzID0gb2JqZWN0cyArIFsnL09VVDonICsgb3V0cHV0X2ZpbGVuYW1lXQorICAgICAgICAgICAgaWYgZGVidWc6CisgICAgICAgICAgICAgICAgcGFzcyAjIFhYWCB3aGF0IGdvZXMgaGVyZT8KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoJ0V4ZWN1dGluZyAiJXMiICVzJywgc2VsZi5saWIsICcgJy5qb2luKGxpYl9hcmdzKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLmxpYl0gKyBsaWJfYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgICAgIHJhaXNlIExpYkVycm9yKG1zZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZy5kZWJ1Zygic2tpcHBpbmcgJXMgKHVwLXRvLWRhdGUpIiwgb3V0cHV0X2ZpbGVuYW1lKQorCisKKyAgICBkZWYgbGluayhzZWxmLAorICAgICAgICAgICAgIHRhcmdldF9kZXNjLAorICAgICAgICAgICAgIG9iamVjdHMsCisgICAgICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lLAorICAgICAgICAgICAgIG91dHB1dF9kaXI9Tm9uZSwKKyAgICAgICAgICAgICBsaWJyYXJpZXM9Tm9uZSwKKyAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9Tm9uZSwKKyAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1Ob25lLAorICAgICAgICAgICAgIGV4cG9ydF9zeW1ib2xzPU5vbmUsCisgICAgICAgICAgICAgZGVidWc9MCwKKyAgICAgICAgICAgICBleHRyYV9wcmVhcmdzPU5vbmUsCisgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3M9Tm9uZSwKKyAgICAgICAgICAgICBidWlsZF90ZW1wPU5vbmUsCisgICAgICAgICAgICAgdGFyZ2V0X2xhbmc9Tm9uZSk6CisKKyAgICAgICAgaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoKQorICAgICAgICBvYmplY3RzLCBvdXRwdXRfZGlyID0gc2VsZi5fZml4X29iamVjdF9hcmdzKG9iamVjdHMsIG91dHB1dF9kaXIpCisgICAgICAgIGZpeGVkX2FyZ3MgPSBzZWxmLl9maXhfbGliX2FyZ3MobGlicmFyaWVzLCBsaWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZV9saWJyYXJ5X2RpcnMpCisgICAgICAgIGxpYnJhcmllcywgbGlicmFyeV9kaXJzLCBydW50aW1lX2xpYnJhcnlfZGlycyA9IGZpeGVkX2FyZ3MKKworICAgICAgICBpZiBydW50aW1lX2xpYnJhcnlfZGlyczoKKyAgICAgICAgICAgIHNlbGYud2FybigiSSBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAncnVudGltZV9saWJyYXJ5X2RpcnMnOiAiCisgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKHJ1bnRpbWVfbGlicmFyeV9kaXJzKSkKKworICAgICAgICBsaWJfb3B0cyA9IGdlbl9saWJfb3B0aW9ucyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnMsIHJ1bnRpbWVfbGlicmFyeV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMpCisgICAgICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGVuYW1lKQorCisgICAgICAgIGlmIHNlbGYuX25lZWRfbGluayhvYmplY3RzLCBvdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAgICAgbGRmbGFncyA9IHNlbGYuX2xkZmxhZ3NbdGFyZ2V0X2Rlc2MsIGRlYnVnXQorCisgICAgICAgICAgICBleHBvcnRfb3B0cyA9IFsiL0VYUE9SVDoiICsgc3ltIGZvciBzeW0gaW4gKGV4cG9ydF9zeW1ib2xzIG9yIFtdKV0KKworICAgICAgICAgICAgbGRfYXJncyA9IChsZGZsYWdzICsgbGliX29wdHMgKyBleHBvcnRfb3B0cyArCisgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgKyBbJy9PVVQ6JyArIG91dHB1dF9maWxlbmFtZV0pCisKKyAgICAgICAgICAgICMgVGhlIE1TVkMgbGlua2VyIGdlbmVyYXRlcyAubGliIGFuZCAuZXhwIGZpbGVzLCB3aGljaCBjYW5ub3QgYmUKKyAgICAgICAgICAgICMgc3VwcHJlc3NlZCBieSBhbnkgbGlua2VyIHN3aXRjaGVzLiBUaGUgLmxpYiBmaWxlcyBtYXkgZXZlbiBiZQorICAgICAgICAgICAgIyBuZWVkZWQhIE1ha2Ugc3VyZSB0aGV5IGFyZSBnZW5lcmF0ZWQgaW4gdGhlIHRlbXBvcmFyeSBidWlsZAorICAgICAgICAgICAgIyBkaXJlY3RvcnkuIFNpbmNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgbmFtZXMgZm9yIGRlYnVnIGFuZCByZWxlYXNlCisgICAgICAgICAgICAjIGJ1aWxkcywgdGhleSBjYW4gZ28gaW50byB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBidWlsZF90ZW1wID0gb3MucGF0aC5kaXJuYW1lKG9iamVjdHNbMF0pCisgICAgICAgICAgICBpZiBleHBvcnRfc3ltYm9scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAoZGxsX25hbWUsIGRsbF9leHQpID0gb3MucGF0aC5zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShvdXRwdXRfZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGltcGxpYl9maWxlID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBidWlsZF90ZW1wLAorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZmlsZW5hbWUoZGxsX25hbWUpKQorICAgICAgICAgICAgICAgIGxkX2FyZ3MuYXBwZW5kICgnL0lNUExJQjonICsgaW1wbGliX2ZpbGUpCisKKyAgICAgICAgICAgIGlmIGV4dHJhX3ByZWFyZ3M6CisgICAgICAgICAgICAgICAgbGRfYXJnc1s6MF0gPSBleHRyYV9wcmVhcmdzCisgICAgICAgICAgICBpZiBleHRyYV9wb3N0YXJnczoKKyAgICAgICAgICAgICAgICBsZF9hcmdzLmV4dGVuZChleHRyYV9wb3N0YXJncykKKworICAgICAgICAgICAgb3V0cHV0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgob3V0cHV0X2ZpbGVuYW1lKSkKKyAgICAgICAgICAgIHNlbGYubWtwYXRoKG91dHB1dF9kaXIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCdFeGVjdXRpbmcgIiVzIiAlcycsIHNlbGYubGlua2VyLCAnICcuam9pbihsZF9hcmdzKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLmxpbmtlcl0gKyBsZF9hcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfdmNydW50aW1lKG91dHB1dF9kaXIpCisgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICByYWlzZSBMaW5rRXJyb3IobXNnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJza2lwcGluZyAlcyAodXAtdG8tZGF0ZSkiLCBvdXRwdXRfZmlsZW5hbWUpCisKKyAgICBkZWYgX2NvcHlfdmNydW50aW1lKHNlbGYsIG91dHB1dF9kaXIpOgorICAgICAgICB2Y3J1bnRpbWUgPSBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0CisgICAgICAgIGlmIG5vdCB2Y3J1bnRpbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKHZjcnVudGltZSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHZjcnVudGltZSkubG93ZXIoKSBpbiBfQlVORExFRF9ETExTOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgbG9nLmRlYnVnKCdDb3B5aW5nICIlcyInLCB2Y3J1bnRpbWUpCisgICAgICAgIHZjcnVudGltZSA9IHNodXRpbC5jb3B5KHZjcnVudGltZSwgb3V0cHV0X2RpcikKKyAgICAgICAgb3MuY2htb2QodmNydW50aW1lLCBzdGF0LlNfSVdSSVRFKQorCisgICAgZGVmIHNwYXduKHNlbGYsIGNtZCk6CisgICAgICAgIG9sZF9wYXRoID0gb3MuZ2V0ZW52KCdwYXRoJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZW52aXJvblsncGF0aCddID0gc2VsZi5fcGF0aHMKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnNwYXduKGNtZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ3BhdGgnXSA9IG9sZF9wYXRoCisKKyAgICAjIC0tIE1pc2NlbGxhbmVvdXMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgVGhlc2UgYXJlIGFsbCB1c2VkIGJ5IHRoZSAnZ2VuX2xpYl9vcHRpb25zKCkgZnVuY3Rpb24sIGluCisgICAgIyBjY29tcGlsZXIucHkuCisKKyAgICBkZWYgbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CisgICAgICAgIHJldHVybiAiL0xJQlBBVEg6IiArIGRpcgorCisgICAgZGVmIHJ1bnRpbWVfbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CisgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoCisgICAgICAgICAgICAgICJkb24ndCBrbm93IGhvdyB0byBzZXQgcnVudGltZSBsaWJyYXJ5IHNlYXJjaCBwYXRoIGZvciBNU1ZDIikKKworICAgIGRlZiBsaWJyYXJ5X29wdGlvbihzZWxmLCBsaWIpOgorICAgICAgICByZXR1cm4gc2VsZi5saWJyYXJ5X2ZpbGVuYW1lKGxpYikKKworICAgIGRlZiBmaW5kX2xpYnJhcnlfZmlsZShzZWxmLCBkaXJzLCBsaWIsIGRlYnVnPTApOgorICAgICAgICAjIFByZWZlciBhIGRlYnVnZ2luZyBsaWJyYXJ5IGlmIGZvdW5kIChhbmQgcmVxdWVzdGVkKSwgYnV0IGRlYWwKKyAgICAgICAgIyB3aXRoIGl0IGlmIHdlIGRvbid0IGhhdmUgb25lLgorICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgIHRyeV9uYW1lcyA9IFtsaWIgKyAiX2QiLCBsaWJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnlfbmFtZXMgPSBbbGliXQorICAgICAgICBmb3IgZGlyIGluIGRpcnM6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiB0cnlfbmFtZXM6CisgICAgICAgICAgICAgICAgbGliZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIHNlbGYubGlicmFyeV9maWxlbmFtZShuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaWJmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpYmZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT29wcywgZGlkbid0IGZpbmQgaXQgaW4gKmFueSogb2YgJ2RpcnMnCisgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCA0NDcwYmIwLi5iZWQxMzg0IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtNTcsMjYgKzU3LDI4IEBACiAgICAgIiIiQ3JlYXRlIGEgKHBvc3NpYmx5IGNvbXByZXNzZWQpIHRhciBmaWxlIGZyb20gYWxsIHRoZSBmaWxlcyB1bmRlcgogICAgICdiYXNlX2RpcicuCiAKLSAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJjb21wcmVzcyIsICJiemlwMiIsIG9yIE5vbmUuCi0gICAgKGNvbXByZXNzIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yKQorICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImJ6aXAyIiwgInh6IiwgImNvbXByZXNzIiwgb3IKKyAgICBOb25lLiAgKCJjb21wcmVzcyIgd2lsbCBiZSBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIpCiAKICAgICAnb3duZXInIGFuZCAnZ3JvdXAnIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBvd25lciBhbmQgYSBncm91cCBmb3IgdGhlCiAgICAgYXJjaGl2ZSB0aGF0IGlzIGJlaW5nIGJ1aWx0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IG93bmVyIGFuZCBncm91cAogICAgIHdpbGwgYmUgdXNlZC4KIAogICAgIFRoZSBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCAnYmFzZV9kaXInICsgICIudGFyIiwgcG9zc2libHkgcGx1cwotICAgIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKCIuZ3oiLCAiLmJ6MiIgb3IgIi5aIikuCisgICAgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoIi5neiIsICIuYnoyIiwgIi54eiIgb3IgIi5aIikuCiAKICAgICBSZXR1cm5zIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAgIiIiCi0gICAgdGFyX2NvbXByZXNzaW9uID0geydnemlwJzogJ2d6JywgJ2J6aXAyJzogJ2J6MicsIE5vbmU6ICcnLCAnY29tcHJlc3MnOiAnJ30KLSAgICBjb21wcmVzc19leHQgPSB7J2d6aXAnOiAnLmd6JywgJ2J6aXAyJzogJy5iejInLCAnY29tcHJlc3MnOiAnLlonfQorICAgIHRhcl9jb21wcmVzc2lvbiA9IHsnZ3ppcCc6ICdneicsICdiemlwMic6ICdiejInLCAneHonOiAneHonLCBOb25lOiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzJzogJyd9CisgICAgY29tcHJlc3NfZXh0ID0geydnemlwJzogJy5neicsICdiemlwMic6ICcuYnoyJywgJ3h6JzogJy54eicsCisgICAgICAgICAgICAgICAgICAgICdjb21wcmVzcyc6ICcuWid9CiAKICAgICAjIGZsYWdzIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtLCBlYWNoIGVsZW1lbnQgb2YgbGlzdCB3aWxsIGJlIGFuIGFyZ3VtZW50CiAgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQua2V5cygpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnOiBtdXN0IGJlIE5vbmUsICdnemlwJywgJ2J6aXAyJyAiCi0gICAgICAgICAgICAgICJvciAnY29tcHJlc3MnIikKKyAgICAgICAgICAgICAgImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJzogbXVzdCBiZSBOb25lLCAnZ3ppcCcsICdiemlwMicsICIKKyAgICAgICAgICAgICAgIid4eicgb3IgJ2NvbXByZXNzJyIpCiAKICAgICBhcmNoaXZlX25hbWUgPSBiYXNlX25hbWUgKyAnLnRhcicKICAgICBpZiBjb21wcmVzcyAhPSAnY29tcHJlc3MnOgpAQCAtMTc3LDYgKzE3OSw3IEBACiBBUkNISVZFX0ZPUk1BVFMgPSB7CiAgICAgJ2d6dGFyJzogKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnZ3ppcCcpXSwgImd6aXAnZWQgdGFyLWZpbGUiKSwKICAgICAnYnp0YXInOiAobWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdiemlwMicpXSwgImJ6aXAyJ2VkIHRhci1maWxlIiksCisgICAgJ3h6dGFyJzogKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAneHonKV0sICJ4eidlZCB0YXItZmlsZSIpLAogICAgICd6dGFyJzogIChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2NvbXByZXNzJyldLCAiY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgICd0YXInOiAgIChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgTm9uZSldLCAidW5jb21wcmVzc2VkIHRhciBmaWxlIiksCiAgICAgJ3ppcCc6ICAgKG1ha2VfemlwZmlsZSwgW10sIlpJUCBmaWxlIikKQEAgLTE5Nyw4ICsyMDAsOCBAQAogICAgICIiIkNyZWF0ZSBhbiBhcmNoaXZlIGZpbGUgKGVnLiB6aXAgb3IgdGFyKS4KIAogICAgICdiYXNlX25hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZSwgbWludXMgYW55IGZvcm1hdC1zcGVjaWZpYwotICAgIGV4dGVuc2lvbjsgJ2Zvcm1hdCcgaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgInppcCIsICJ0YXIiLCAienRhciIsCi0gICAgb3IgImd6dGFyIi4KKyAgICBleHRlbnNpb247ICdmb3JtYXQnIGlzIHRoZSBhcmNoaXZlIGZvcm1hdDogb25lIG9mICJ6aXAiLCAidGFyIiwgImd6dGFyIiwKKyAgICAiYnp0YXIiLCAieHp0YXIiLCBvciAienRhciIuCiAKICAgICAncm9vdF9kaXInIGlzIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCiAgICAgYXJjaGl2ZTsgaWUuIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICdyb290X2RpcicgYmVmb3JlIGNyZWF0aW5nIHRoZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQppbmRleCBlOTNhMjczLi44MmZkN2Q1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQpAQCAtOTU5LDcgKzk1OSw3IEBACiAjIGlzIGFzc3VtZWQgdG8gYmUgaW4gdGhlICdkaXN0dXRpbHMnIHBhY2thZ2UuKQogY29tcGlsZXJfY2xhc3MgPSB7ICd1bml4JzogICAgKCd1bml4Y2NvbXBpbGVyJywgJ1VuaXhDQ29tcGlsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCBVTklYLXN0eWxlIGNvbXBpbGVyIiksCi0gICAgICAgICAgICAgICAgICAgJ21zdmMnOiAgICAoJ21zdmNjb21waWxlcicsICdNU1ZDQ29tcGlsZXInLAorICAgICAgICAgICAgICAgICAgICdtc3ZjJzogICAgKCdfbXN2Y2NvbXBpbGVyJywgJ01TVkNDb21waWxlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc29mdCBWaXN1YWwgQysrIiksCiAgICAgICAgICAgICAgICAgICAgJ2N5Z3dpbic6ICAoJ2N5Z3dpbmNjb21waWxlcicsICdDeWd3aW5DQ29tcGlsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDeWd3aW4gcG9ydCBvZiBHTlUgQyBDb21waWxlciBmb3IgV2luMzIiKSwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weQppbmRleCA2ODE0YTFjLi4wMTQ4NzFkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0LnB5CkBAIC02MSwxMyArNjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJ30KIAogICAgICMgRXN0YWJsaXNoIHRoZSBwcmVmZXJyZWQgb3JkZXIgKGZvciB0aGUgLS1oZWxwLWZvcm1hdHMgb3B0aW9uKS4KLSAgICBmb3JtYXRfY29tbWFuZHMgPSBbJ3JwbScsICdnenRhcicsICdienRhcicsICd6dGFyJywgJ3RhcicsCisgICAgZm9ybWF0X2NvbW1hbmRzID0gWydycG0nLCAnZ3p0YXInLCAnYnp0YXInLCAneHp0YXInLCAnenRhcicsICd0YXInLAogICAgICAgICAgICAgICAgICAgICAgICAnd2luaW5zdCcsICd6aXAnLCAnbXNpJ10KIAogICAgICMgQW5kIHRoZSByZWFsIGluZm9ybWF0aW9uLgogICAgIGZvcm1hdF9jb21tYW5kID0geydycG0nOiAgICgnYmRpc3RfcnBtJywgICJSUE0gZGlzdHJpYnV0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgJ2d6dGFyJzogKCdiZGlzdF9kdW1iJywgImd6aXAnZWQgdGFyIGZpbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAnYnp0YXInOiAoJ2JkaXN0X2R1bWInLCAiYnppcDInZWQgdGFyIGZpbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAneHp0YXInOiAoJ2JkaXN0X2R1bWInLCAieHonZWQgdGFyIGZpbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAnenRhcic6ICAoJ2JkaXN0X2R1bWInLCAiY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd0YXInOiAgICgnYmRpc3RfZHVtYicsICJ0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JzogKCdiZGlzdF93aW5pbnN0JywKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKaW5kZXggNDQwNWQxMi4uZjFiZmIyNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKQEAgLTIyLDcgKzIyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBuYW1lIHRvIGVtYmVkIGluIGdlbmVyYXRlZCBmaWxlbmFtZXMgIgogICAgICAgICAgICAgICAgICAgICAgIihkZWZhdWx0OiAlcykiICUgZ2V0X3BsYXRmb3JtKCkpLAogICAgICAgICAgICAgICAgICAgICAoJ2Zvcm1hdD0nLCAnZicsCi0gICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBmb3JtYXQgdG8gY3JlYXRlICh0YXIsIHp0YXIsIGd6dGFyLCB6aXApIiksCisgICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBmb3JtYXQgdG8gY3JlYXRlICh0YXIsIGd6dGFyLCBienRhciwgeHp0YXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJ6dGFyLCB6aXApIiksCiAgICAgICAgICAgICAgICAgICAgICgna2VlcC10ZW1wJywgJ2snLAogICAgICAgICAgICAgICAgICAgICAgImtlZXAgdGhlIHBzZXVkby1pbnN0YWxsYXRpb24gdHJlZSBhcm91bmQgYWZ0ZXIgIiArCiAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBhcmNoaXZlIiksCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IDk1OWE4YmYuLjBjMGUyYzEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0zMDMsNyArMzAzLDYgQEAKICAgICAgICAgcmV0dXJuIGluc3RhbGxlcl9uYW1lCiAKICAgICBkZWYgZ2V0X2V4ZV9ieXRlcyhzZWxmKToKLSAgICAgICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBnZXRfYnVpbGRfdmVyc2lvbgogICAgICAgICAjIElmIGEgdGFyZ2V0LXZlcnNpb24gb3RoZXIgdGhhbiB0aGUgY3VycmVudCB2ZXJzaW9uIGhhcyBiZWVuCiAgICAgICAgICMgc3BlY2lmaWVkLCB0aGVuIHVzaW5nIHRoZSBNU1ZDIHZlcnNpb24gZnJvbSAqdGhpcyogYnVpbGQgaXMgbm8gZ29vZC4KICAgICAgICAgIyBXaXRob3V0IGFjdHVhbGx5IGZpbmRpbmcgYW5kIGV4ZWN1dGluZyB0aGUgdGFyZ2V0IHZlcnNpb24gYW5kIHBhcnNpbmcKQEAgLTMxMywyMCArMzEyLDMzIEBACiAgICAgICAgICMgV2UgY2FuIHRoZW4gZXhlY3V0ZSB0aGlzIHByb2dyYW0gdG8gb2J0YWluIGFueSBpbmZvIHdlIG5lZWQsIHN1Y2gKICAgICAgICAgIyBhcyB0aGUgcmVhbCBzeXMudmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBidWlsZC4KICAgICAgICAgY3VyX3ZlcnNpb24gPSBnZXRfcHl0aG9uX3ZlcnNpb24oKQotICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uIGFuZCBzZWxmLnRhcmdldF92ZXJzaW9uICE9IGN1cl92ZXJzaW9uOgotICAgICAgICAgICAgIyBJZiB0aGUgdGFyZ2V0IHZlcnNpb24gaXMgKmxhdGVyKiB0aGFuIHVzLCB0aGVuIHdlIGFzc3VtZSB0aGV5Ci0gICAgICAgICAgICAjIHVzZSB3aGF0IHdlIHVzZQotICAgICAgICAgICAgIyBzdHJpbmcgY29tcGFyZXMgc2VlbSB3cm9uZywgYnV0IGFyZSB3aGF0IHN5c2NvbmZpZy5weSBpdHNlbGYgdXNlcwotICAgICAgICAgICAgaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA+IGN1cl92ZXJzaW9uOgotICAgICAgICAgICAgICAgIGJ2ID0gZ2V0X2J1aWxkX3ZlcnNpb24oKQorCisgICAgICAgICMgSWYgdGhlIHRhcmdldCB2ZXJzaW9uIGlzICpsYXRlciogdGhhbiB1cywgdGhlbiB3ZSBhc3N1bWUgdGhleQorICAgICAgICAjIHVzZSB3aGF0IHdlIHVzZQorICAgICAgICAjIHN0cmluZyBjb21wYXJlcyBzZWVtIHdyb25nLCBidXQgYXJlIHdoYXQgc3lzY29uZmlnLnB5IGl0c2VsZiB1c2VzCisgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gYW5kIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCBjdXJfdmVyc2lvbjoKKyAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCAiMi40IjoKKyAgICAgICAgICAgICAgICBidiA9IDYuMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uID09ICIyLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gNy4xCisgICAgICAgICAgICBlbGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPT0gIjIuNSI6CisgICAgICAgICAgICAgICAgYnYgPSA4LjAKKyAgICAgICAgICAgIGVsaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA8PSAiMy4yIjoKKyAgICAgICAgICAgICAgICBidiA9IDkuMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDw9ICIzLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gMTAuMAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDwgIjIuNCI6Ci0gICAgICAgICAgICAgICAgICAgIGJ2ID0gNi4wCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnYgPSA3LjEKKyAgICAgICAgICAgICAgICBidiA9IDE0LjAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZm9yIGN1cnJlbnQgdmVyc2lvbiAtIHVzZSBhdXRob3JpdGF0aXZlIGNoZWNrLgotICAgICAgICAgICAgYnYgPSBnZXRfYnVpbGRfdmVyc2lvbigpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnJvbSBtc3ZjcnQgaW1wb3J0IENSVF9BU1NFTUJMWV9WRVJTSU9OCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgIyBjcm9zcy1idWlsZGluZywgc28gYXNzdW1lIHRoZSBsYXRlc3QgdmVyc2lvbgorICAgICAgICAgICAgICAgIGJ2ID0gMTQuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidiA9IGZsb2F0KCcuJy5qb2luKENSVF9BU1NFTUJMWV9WRVJTSU9OLnNwbGl0KCcuJywgMilbOjJdKSkKKwogCiAgICAgICAgICMgd2luaW5zdC14LnkuZXhlIGlzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGlzIGZpbGUKICAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CmluZGV4IGNmYzE1Y2YuLjMzN2RkMGIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICIoZGVmYXVsdDogJXMpIiAlIGdldF9wbGF0Zm9ybSgpKSwKICAgICAgICAgKCdjb21waWxlcj0nLCAnYycsCiAgICAgICAgICAic3BlY2lmeSB0aGUgY29tcGlsZXIgdHlwZSIpLAorICAgICAgICAoJ3BhcmFsbGVsPScsICdqJywKKyAgICAgICAgICJudW1iZXIgb2YgcGFyYWxsZWwgYnVpbGQgam9icyIpLAogICAgICAgICAoJ2RlYnVnJywgJ2cnLAogICAgICAgICAgImNvbXBpbGUgZXh0ZW5zaW9ucyBhbmQgbGlicmFyaWVzIHdpdGggZGVidWdnaW5nIGluZm9ybWF0aW9uIiksCiAgICAgICAgICgnZm9yY2UnLCAnZicsCkBAIC02NSw2ICs2Nyw3IEBACiAgICAgICAgIHNlbGYuZGVidWcgPSBOb25lCiAgICAgICAgIHNlbGYuZm9yY2UgPSAwCiAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXJhbGxlbCA9IE5vbmUKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSBpcyBOb25lOgpAQCAtMTE2LDYgKzExOSwxMiBAQAogICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhcmFsbGVsLCBzdHIpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucGFyYWxsZWwgPSBpbnQoc2VsZi5wYXJhbGxlbCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKCJwYXJhbGxlbCBzaG91bGQgYmUgYW4gaW50ZWdlciIpCisKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAjIFJ1biBhbGwgcmVsZXZhbnQgc3ViLWNvbW1hbmRzLiAgVGhpcyB3aWxsIGJlIHNvbWUgc3Vic2V0IG9mOgogICAgICAgICAjICAtIGJ1aWxkX3B5ICAgICAgLSBwdXJlIFB5dGhvbiBtb2R1bGVzCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQppbmRleCBhY2JlNjQ4Li5kNGNiMTFlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKQEAgLTQsNyArNCwxMCBAQAogbW9kdWxlcyAoY3VycmVudGx5IGxpbWl0ZWQgdG8gQyBleHRlbnNpb25zLCBzaG91bGQgYWNjb21tb2RhdGUgQysrCiBleHRlbnNpb25zIEFTQVApLiIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCAqCiBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGN1c3RvbWl6ZV9jb21waWxlciwgZ2V0X3B5dGhvbl92ZXJzaW9uCkBAIC0xNiwxMCArMTksNiBAQAogCiBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQogCi1pZiBvcy5uYW1lID09ICdudCc6Ci0gICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBnZXRfYnVpbGRfdmVyc2lvbgotICAgIE1TVkNfVkVSU0lPTiA9IGludChnZXRfYnVpbGRfdmVyc2lvbigpKQotCiAjIEFuIGV4dGVuc2lvbiBuYW1lIGlzIGp1c3QgYSBkb3Qtc2VwYXJhdGVkIGxpc3Qgb2YgUHl0aG9uIE5BTUVzIChpZS4KICMgdGhlIHNhbWUgYXMgYSBmdWxseS1xdWFsaWZpZWQgbW9kdWxlIG5hbWUpLgogZXh0ZW5zaW9uX25hbWVfcmUgPSByZS5jb21waWxlIFwKQEAgLTg1LDYgKzg0LDggQEAKICAgICAgICAgICJmb3JjaWJseSBidWlsZCBldmVyeXRoaW5nIChpZ25vcmUgZmlsZSB0aW1lc3RhbXBzKSIpLAogICAgICAgICAoJ2NvbXBpbGVyPScsICdjJywKICAgICAgICAgICJzcGVjaWZ5IHRoZSBjb21waWxlciB0eXBlIiksCisgICAgICAgICgncGFyYWxsZWw9JywgJ2onLAorICAgICAgICAgIm51bWJlciBvZiBwYXJhbGxlbCBidWlsZCBqb2JzIiksCiAgICAgICAgICgnc3dpZy1jcHAnLCBOb25lLAogICAgICAgICAgIm1ha2UgU1dJRyBjcmVhdGUgQysrIGZpbGVzIChkZWZhdWx0IGlzIEMpIiksCiAgICAgICAgICgnc3dpZy1vcHRzPScsIE5vbmUsCkBAIC0xMjQsNiArMTI1LDcgQEAKICAgICAgICAgc2VsZi5zd2lnX2NwcCA9IE5vbmUKICAgICAgICAgc2VsZi5zd2lnX29wdHMgPSBOb25lCiAgICAgICAgIHNlbGYudXNlciA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXJhbGxlbCA9IE5vbmUKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCkBAIC0xMzQsNiArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjb21waWxlcicsICdjb21waWxlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RlYnVnJywgJ2RlYnVnJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9yY2UnLCAnZm9yY2UnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdwYXJhbGxlbCcsICdwYXJhbGxlbCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3BsYXRfbmFtZScsICdwbGF0X25hbWUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCkBAIC0xOTksMjcgKzIwMiwxNyBAQAogICAgICAgICAgICAgX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCiAgICAgICAgICAgICBpZiBfc3lzX2hvbWU6CiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKF9zeXNfaG9tZSkKLSAgICAgICAgICAgIGlmIE1TVkNfVkVSU0lPTiA+PSA5OgotICAgICAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSAnJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgd2luLWFtZDY0IG9yIHdpbi1pYTY0Ci0gICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHNlbGYucGxhdF9uYW1lWzQ6XQotICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnUENidWlsZCcpCi0gICAgICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgICAgICBuZXdfbGliID0gb3MucGF0aC5qb2luKG5ld19saWIsIHN1ZmZpeCkKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQobmV3X2xpYikKIAotICAgICAgICAgICAgZWxpZiBNU1ZDX1ZFUlNJT04gPT0gODoKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDJywgJ1ZTOC4wJykpCi0gICAgICAgICAgICBlbGlmIE1TVkNfVkVSU0lPTiA9PSA3OgotICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUEMnLCAnVlM3LjEnKSkKKyAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKKyAgICAgICAgICAgIGlmIHNlbGYucGxhdF9uYW1lID09ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc3VmZml4ID0gJ3dpbjMyJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDJywgJ1ZDNicpKQorICAgICAgICAgICAgICAgICMgd2luLWFtZDY0IG9yIHdpbi1pYTY0CisgICAgICAgICAgICAgICAgc3VmZml4ID0gc2VsZi5wbGF0X25hbWVbNDpdCisgICAgICAgICAgICBuZXdfbGliID0gb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ1BDYnVpbGQnKQorICAgICAgICAgICAgaWYgc3VmZml4OgorICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4obmV3X2xpYiwgc3VmZml4KQorICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG5ld19saWIpCiAKICAgICAgICAgIyBmb3IgZXh0ZW5zaW9ucyB1bmRlciBDeWd3aW4gYW5kIEF0aGVPUyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlCiAgICAgICAgICMgYXBwZW5kZWQgdG8gbGlicmFyeV9kaXJzCkBAIC0yNzQsNiArMjY3LDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKHVzZXJfbGliKQogICAgICAgICAgICAgICAgIHNlbGYucnBhdGguYXBwZW5kKHVzZXJfbGliKQogCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXJhbGxlbCwgc3RyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBhcmFsbGVsID0gaW50KHNlbGYucGFyYWxsZWwpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNPcHRpb25FcnJvcigicGFyYWxsZWwgc2hvdWxkIGJlIGFuIGludGVnZXIiKQorCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVyIGltcG9ydCBuZXdfY29tcGlsZXIKIApAQCAtNDQyLDE1ICs0NDEsNDUgQEAKICAgICBkZWYgYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKToKICAgICAgICAgIyBGaXJzdCwgc2FuaXR5LWNoZWNrIHRoZSAnZXh0ZW5zaW9ucycgbGlzdAogICAgICAgICBzZWxmLmNoZWNrX2V4dGVuc2lvbnNfbGlzdChzZWxmLmV4dGVuc2lvbnMpCisgICAgICAgIGlmIHNlbGYucGFyYWxsZWw6CisgICAgICAgICAgICBzZWxmLl9idWlsZF9leHRlbnNpb25zX3BhcmFsbGVsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2J1aWxkX2V4dGVuc2lvbnNfc2VyaWFsKCkKIAorICAgIGRlZiBfYnVpbGRfZXh0ZW5zaW9uc19wYXJhbGxlbChzZWxmKToKKyAgICAgICAgd29ya2VycyA9IHNlbGYucGFyYWxsZWwKKyAgICAgICAgaWYgc2VsZi5wYXJhbGxlbCBpcyBUcnVlOgorICAgICAgICAgICAgd29ya2VycyA9IG9zLmNwdV9jb3VudCgpICAjIG1heSByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgVGhyZWFkUG9vbEV4ZWN1dG9yCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHdvcmtlcnMgPSBOb25lCisKKyAgICAgICAgaWYgd29ya2VycyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fYnVpbGRfZXh0ZW5zaW9uc19zZXJpYWwoKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgd2l0aCBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9d29ya2VycykgYXMgZXhlY3V0b3I6CisgICAgICAgICAgICBmdXR1cmVzID0gW2V4ZWN1dG9yLnN1Ym1pdChzZWxmLmJ1aWxkX2V4dGVuc2lvbiwgZXh0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uc10KKyAgICAgICAgICAgIGZvciBleHQsIGZ1dCBpbiB6aXAoc2VsZi5leHRlbnNpb25zLCBmdXR1cmVzKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2ZpbHRlcl9idWlsZF9lcnJvcnMoZXh0KToKKyAgICAgICAgICAgICAgICAgICAgZnV0LnJlc3VsdCgpCisKKyAgICBkZWYgX2J1aWxkX2V4dGVuc2lvbnNfc2VyaWFsKHNlbGYpOgogICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fZmlsdGVyX2J1aWxkX2Vycm9ycyhleHQpOgogICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRfZXh0ZW5zaW9uKGV4dCkKLSAgICAgICAgICAgIGV4Y2VwdCAoQ0NvbXBpbGVyRXJyb3IsIERpc3R1dGlsc0Vycm9yLCBDb21waWxlRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGV4dC5vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICBzZWxmLndhcm4oJ2J1aWxkaW5nIGV4dGVuc2lvbiAiJXMiIGZhaWxlZDogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBlKSkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9maWx0ZXJfYnVpbGRfZXJyb3JzKHNlbGYsIGV4dCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGV4Y2VwdCAoQ0NvbXBpbGVyRXJyb3IsIERpc3R1dGlsc0Vycm9yLCBDb21waWxlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgZXh0Lm9wdGlvbmFsOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLndhcm4oJ2J1aWxkaW5nIGV4dGVuc2lvbiAiJXMiIGZhaWxlZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAoZXh0Lm5hbWUsIGUpKQogCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbihzZWxmLCBleHQpOgogICAgICAgICBzb3VyY2VzID0gZXh0LnNvdXJjZXMKQEAgLTUwMiwxNSArNTMxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3M9ZXh0cmFfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1leHQuZGVwZW5kcykKIAotICAgICAgICAjIFhYWCAtLSB0aGlzIGlzIGEgVmlsZSBIQUNLIQotICAgICAgICAjCi0gICAgICAgICMgVGhlIHNldHVwLnB5IHNjcmlwdCBmb3IgUHl0aG9uIG9uIFVuaXggbmVlZHMgdG8gYmUgYWJsZSB0bwotICAgICAgICAjIGdldCB0aGlzIGxpc3Qgc28gaXQgY2FuIHBlcmZvcm0gYWxsIHRoZSBjbGVhbiB1cCBuZWVkZWQgdG8KLSAgICAgICAgIyBhdm9pZCBrZWVwaW5nIG9iamVjdCBmaWxlcyBhcm91bmQgd2hlbiBjbGVhbmluZyBvdXQgYSBmYWlsZWQKLSAgICAgICAgIyBidWlsZCBvZiBhbiBleHRlbnNpb24gbW9kdWxlLiAgU2luY2UgRGlzdHV0aWxzIGRvZXMgbm90Ci0gICAgICAgICMgdHJhY2sgZGVwZW5kZW5jaWVzLCB3ZSBoYXZlIHRvIGdldCByaWQgb2YgaW50ZXJtZWRpYXRlcyB0bwotICAgICAgICAjIGVuc3VyZSBhbGwgdGhlIGludGVybWVkaWF0ZXMgd2lsbCBiZSBwcm9wZXJseSByZS1idWlsdC4KLSAgICAgICAgIworICAgICAgICAjIFhYWCBvdXRkYXRlZCB2YXJpYWJsZSwga2VwdCBoZXJlIGluIGNhc2UgdGhpcmQtcGFydCBjb2RlCisgICAgICAgICMgbmVlZHMgaXQuCiAgICAgICAgIHNlbGYuX2J1aWx0X29iamVjdHMgPSBvYmplY3RzWzpdCiAKICAgICAgICAgIyBOb3cgbGluayB0aGUgb2JqZWN0IGZpbGVzIHRvZ2V0aGVyIGludG8gYSAic2hhcmVkIG9iamVjdCIgLS0KQEAgLTY1NSwxMCArNjc3LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKICAgICAgICAgZXh0X3BhdGggPSBleHRfbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICMgZXh0ZW5zaW9ucyBpbiBkZWJ1Z19tb2RlIGFyZSBuYW1lZCAnbW9kdWxlX2QucHlkJyB1bmRlciB3aW5kb3dzCiAgICAgICAgIGV4dF9zdWZmaXggPSBnZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmV4dF9wYXRoKSArICdfZCcgKyBleHRfc3VmZml4CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmV4dF9wYXRoKSArIGV4dF9zdWZmaXgKIAogICAgIGRlZiBnZXRfZXhwb3J0X3N5bWJvbHMoc2VsZiwgZXh0KToKQEAgLTY4Myw3ICs3MDIsNyBAQAogICAgICAgICAjIHRvIG5lZWQgaXQgbWVudGlvbmVkIGV4cGxpY2l0bHksIHRob3VnaCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgICMgQXBwZW5kICdfZCcgdG8gdGhlIHB5dGhvbiBpbXBvcnQgbGlicmFyeSBvbiBkZWJ1ZyBidWlsZHMuCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBNU1ZDQ29tcGlsZXIKKyAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgaW1wb3J0IE1TVkNDb21waWxlcgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5jb21waWxlciwgTVNWQ0NvbXBpbGVyKToKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICJweXRob24lZCVkIgogICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkKaW5kZXggOTEwMGI5Ni4uY2YwY2E1NyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9weS5weQpAQCAtMzE0LDEwICszMTQsMTAgQEAKICAgICAgICAgICAgIGlmIGluY2x1ZGVfYnl0ZWNvZGU6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21waWxlOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBvcHRpbWl6YXRpb249JycpKQogICAgICAgICAgICAgICAgIGlmIHNlbGYub3B0aW1pemUgPiAwOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1GYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgb3B0aW1pemF0aW9uPXNlbGYub3B0aW1pemUpKQogCiAgICAgICAgIG91dHB1dHMgKz0gWwogICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IGQ3NjhkYzUuLjY3ZGIwMDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CkBAIC01MSw3ICs1MSw3IEBACiAgICAgICAgICdwdXJlbGliJzogJyR1c2Vyc2l0ZScsCiAgICAgICAgICdwbGF0bGliJzogJyR1c2Vyc2l0ZScsCiAgICAgICAgICdoZWFkZXJzJzogJyR1c2VyYmFzZS9QeXRob24kcHlfdmVyc2lvbl9ub2RvdC9JbmNsdWRlLyRkaXN0X25hbWUnLAotICAgICAgICAnc2NyaXB0cyc6ICckdXNlcmJhc2UvU2NyaXB0cycsCisgICAgICAgICdzY3JpcHRzJzogJyR1c2VyYmFzZS9QeXRob24kcHlfdmVyc2lvbl9ub2RvdC9TY3JpcHRzJywKICAgICAgICAgJ2RhdGEnICAgOiAnJHVzZXJiYXNlJywKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkKaW5kZXggMjE1ODEzYi4uNjE1NGNmMCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2xpYi5weQpAQCAtMjIsMTUgKzIyLDE1IEBACiAgICAgIyBwb3NzaWJsZSBzY2VuYXJpb3M6CiAgICAgIyAgIDEpIG5vIGNvbXBpbGF0aW9uIGF0IGFsbCAoLS1uby1jb21waWxlIC0tbm8tb3B0aW1pemUpCiAgICAgIyAgIDIpIGNvbXBpbGUgLnB5YyBvbmx5ICgtLWNvbXBpbGUgLS1uby1vcHRpbWl6ZTsgZGVmYXVsdCkKLSAgICAjICAgMykgY29tcGlsZSAucHljIGFuZCAibGV2ZWwgMSIgLnB5byAoLS1jb21waWxlIC0tb3B0aW1pemUpCi0gICAgIyAgIDQpIGNvbXBpbGUgImxldmVsIDEiIC5weW8gb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUpCi0gICAgIyAgIDUpIGNvbXBpbGUgLnB5YyBhbmQgImxldmVsIDIiIC5weW8gKC0tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCi0gICAgIyAgIDYpIGNvbXBpbGUgImxldmVsIDIiIC5weW8gb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUtbW9yZSkKKyAgICAjICAgMykgY29tcGlsZSAucHljIGFuZCAib3B0LTEiIC5weWMgKC0tY29tcGlsZSAtLW9wdGltaXplKQorICAgICMgICA0KSBjb21waWxlICJvcHQtMSIgLnB5YyBvbmx5ICgtLW5vLWNvbXBpbGUgLS1vcHRpbWl6ZSkKKyAgICAjICAgNSkgY29tcGlsZSAucHljIGFuZCAib3B0LTIiIC5weWMgKC0tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCisgICAgIyAgIDYpIGNvbXBpbGUgIm9wdC0yIiAucHljIG9ubHkgKC0tbm8tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCiAgICAgIwotICAgICMgVGhlIFVJIGZvciB0aGlzIGlzIHR3byBvcHRpb24sICdjb21waWxlJyBhbmQgJ29wdGltaXplJy4KKyAgICAjIFRoZSBVSSBmb3IgdGhpcyBpcyB0d28gb3B0aW9ucywgJ2NvbXBpbGUnIGFuZCAnb3B0aW1pemUnLgogICAgICMgJ2NvbXBpbGUnIGlzIHN0cmljdGx5IGJvb2xlYW4sIGFuZCBvbmx5IGRlY2lkZXMgd2hldGhlciB0bwogICAgICMgZ2VuZXJhdGUgLnB5YyBmaWxlcy4gICdvcHRpbWl6ZScgaXMgdGhyZWUtd2F5ICgwLCAxLCBvciAyKSwgYW5kCi0gICAgIyBkZWNpZGVzIGJvdGggd2hldGhlciB0byBnZW5lcmF0ZSAucHlvIGZpbGVzIGFuZCB3aGF0IGxldmVsIG9mCisgICAgIyBkZWNpZGVzIGJvdGggd2hldGhlciB0byBnZW5lcmF0ZSAucHljIGZpbGVzIGFuZCB3aGF0IGxldmVsIG9mCiAgICAgIyBvcHRpbWl6YXRpb24gdG8gdXNlLgogCiAgICAgdXNlcl9vcHRpb25zID0gWwpAQCAtMTY2LDEwICsxNjYsMTAgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgc2VsZi5jb21waWxlOgogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX2ZpbGVzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIG9wdGltaXphdGlvbj0nJykpCiAgICAgICAgICAgICBpZiBzZWxmLm9wdGltaXplID4gMDoKICAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlcy5hcHBlbmQoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgb3B0aW1pemF0aW9uPXNlbGYub3B0aW1pemUpKQogCiAgICAgICAgIHJldHVybiBieXRlY29kZV9maWxlcwogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3VwbG9hZC5weQppbmRleCAxYTk2ZTIyLi4xYzRmYzQ4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkKQEAgLTEsMTEgKzEsMTQgQEAKLSIiImRpc3R1dGlscy5jb21tYW5kLnVwbG9hZAorIiIiCitkaXN0dXRpbHMuY29tbWFuZC51cGxvYWQKIAotSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICd1cGxvYWQnIHN1YmNvbW1hbmQgKHVwbG9hZCBwYWNrYWdlIHRvIFB5UEkpLiIiIgorSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICd1cGxvYWQnIHN1YmNvbW1hbmQgKHVwbG9hZCBwYWNrYWdlIHRvIGEgcGFja2FnZQoraW5kZXgpLgorIiIiCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcywgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBoYXNobGliCiBmcm9tIGJhc2U2NCBpbXBvcnQgc3RhbmRhcmRfYjY0ZW5jb2RlCiBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuLCBSZXF1ZXN0LCBIVFRQRXJyb3IKIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQpAQCAtMTQsMTIgKzE3LDYgQEAKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwogCi0jIHRoaXMga2VlcHMgY29tcGF0aWJpbGl0eSBmb3IgMi4zIGFuZCAyLjQKLWlmIHN5cy52ZXJzaW9uIDwgIjIuNSI6Ci0gICAgZnJvbSBtZDUgaW1wb3J0IG1kNQotZWxzZToKLSAgICBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQotCiBjbGFzcyB1cGxvYWQoUHlQSVJDQ29tbWFuZCk6CiAKICAgICBkZXNjcmlwdGlvbiA9ICJ1cGxvYWQgYmluYXJ5IHBhY2thZ2UgdG8gUHlQSSIKQEAgLTYwLDcgKzU3LDggQEAKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgotICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IoIk5vIGRpc3QgZmlsZSBjcmVhdGVkIGluIGVhcmxpZXIgY29tbWFuZCIpCisgICAgICAgICAgICBtc2cgPSAiTm8gZGlzdCBmaWxlIGNyZWF0ZWQgaW4gZWFybGllciBjb21tYW5kIgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IobXNnKQogICAgICAgICBmb3IgY29tbWFuZCwgcHl2ZXJzaW9uLCBmaWxlbmFtZSBpbiBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgogICAgICAgICAgICAgc2VsZi51cGxvYWRfZmlsZShjb21tYW5kLCBweXZlcnNpb24sIGZpbGVuYW1lKQogCkBAIC0xMDMsMTAgKzEwMSwxMCBAQAogICAgICAgICAgICAgJ2NvbnRlbnQnOiAob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksY29udGVudCksCiAgICAgICAgICAgICAnZmlsZXR5cGUnOiBjb21tYW5kLAogICAgICAgICAgICAgJ3B5dmVyc2lvbic6IHB5dmVyc2lvbiwKLSAgICAgICAgICAgICdtZDVfZGlnZXN0JzogbWQ1KGNvbnRlbnQpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgJ21kNV9kaWdlc3QnOiBoYXNobGliLm1kNShjb250ZW50KS5oZXhkaWdlc3QoKSwKIAogICAgICAgICAgICAgIyBhZGRpdGlvbmFsIG1ldGEtZGF0YQotICAgICAgICAgICAgJ21ldGFkYXRhX3ZlcnNpb24nIDogJzEuMCcsCisgICAgICAgICAgICAnbWV0YWRhdGFfdmVyc2lvbic6ICcxLjAnLAogICAgICAgICAgICAgJ3N1bW1hcnknOiBtZXRhLmdldF9kZXNjcmlwdGlvbigpLAogICAgICAgICAgICAgJ2hvbWVfcGFnZSc6IG1ldGEuZ2V0X3VybCgpLAogICAgICAgICAgICAgJ2F1dGhvcic6IG1ldGEuZ2V0X2NvbnRhY3QoKSwKQEAgLTE0OSw3ICsxNDcsNyBAQAogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICB0aXRsZSA9ICdcclxuQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5CiAgICAgICAgICAgICAjIGhhbmRsZSBtdWx0aXBsZSBlbnRyaWVzIGZvciB0aGUgc2FtZSBuYW1lCi0gICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSAhPSB0eXBlKFtdKToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0dXBsZToKQEAgLTE2NiwxMyArMTY0LDE1IEBACiAgICAgICAgIGJvZHkud3JpdGUoZW5kX2JvdW5kYXJ5KQogICAgICAgICBib2R5ID0gYm9keS5nZXR2YWx1ZSgpCiAKLSAgICAgICAgc2VsZi5hbm5vdW5jZSgiU3VibWl0dGluZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIHNlbGYucmVwb3NpdG9yeSksIGxvZy5JTkZPKQorICAgICAgICBtc2cgPSAiU3VibWl0dGluZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIHNlbGYucmVwb3NpdG9yeSkKKyAgICAgICAgc2VsZi5hbm5vdW5jZShtc2csIGxvZy5JTkZPKQogCiAgICAgICAgICMgYnVpbGQgdGhlIFJlcXVlc3QKLSAgICAgICAgaGVhZGVycyA9IHsnQ29udGVudC10eXBlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0lcycgJSBib3VuZGFyeSwKLSAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnOiBzdHIobGVuKGJvZHkpKSwKLSAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGF1dGh9CisgICAgICAgIGhlYWRlcnMgPSB7CisgICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSVzJyAlIGJvdW5kYXJ5LAorICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJzogc3RyKGxlbihib2R5KSksCisgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGF1dGgsCisgICAgICAgIH0KIAogICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdChzZWxmLnJlcG9zaXRvcnksIGRhdGE9Ym9keSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC1hbWQ2NC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLWFtZDY0LmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTVlNzhkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC1hbWQ2NC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzQzMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CmluZGV4IDJiZmU2NmEuLmYwNWIzNGIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKQEAgLTIyMSw4ICsyMjEsNiBAQAogICAgICAgICAjIEhtbSwgc2hvdWxkIHdlIGRvIHNvbWV0aGluZyBpZiBleGl0aW5nIHdpdGggYSBub24temVybyBjb2RlCiAgICAgICAgICMgKGllLiBlcnJvcik/CiAgICAgICAgIHBhc3MKLSAgICBleGNlcHQ6Ci0gICAgICAgIHJhaXNlCiAKICAgICBpZiBfc2V0dXBfZGlzdHJpYnV0aW9uIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigoIidkaXN0dXRpbHMuY29yZS5zZXR1cCgpJyB3YXMgbmV2ZXIgY2FsbGVkIC0tICIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQppbmRleCA3ZWIwNGJjLi5mZmIzM2ZmNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQpAQCAtNCw3ICs0LDkgQEAKIGJlaW5nIGJ1aWx0L2luc3RhbGxlZC9kaXN0cmlidXRlZC4KICIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlX2Zyb21fZmlsZQogCiB0cnk6CkBAIC0yMiw3ICsyNCw3IEBACiAjIHRoZSBzYW1lIGFzIGEgUHl0aG9uIE5BTUUgLS0gSSBkb24ndCBhbGxvdyBsZWFkaW5nIHVuZGVyc2NvcmVzLiAgVGhlIGZhY3QKICMgdGhhdCB0aGV5J3JlIHZlcnkgc2ltaWxhciBpcyBubyBjb2luY2lkZW5jZTsgdGhlIGRlZmF1bHQgbmFtaW5nIHNjaGVtZSBpcwogIyB0byBsb29rIGZvciBhIFB5dGhvbiBtb2R1bGUgbmFtZWQgYWZ0ZXIgdGhlIGNvbW1hbmQuCi1jb21tYW5kX3JlID0gcmUuY29tcGlsZSAocideW2EtekEtWl0oW2EtekEtWjAtOV9dKikkJykKK2NvbW1hbmRfcmUgPSByZS5jb21waWxlKHInXlthLXpBLVpdKFthLXpBLVowLTlfXSopJCcpCiAKIAogY2xhc3MgRGlzdHJpYnV0aW9uOgpAQCAtMzksNyArNDEsNiBAQAogICAgIFNlZSB0aGUgY29kZSBmb3IgJ3NldHVwKCknLCBpbiBjb3JlLnB5LCBmb3IgZGV0YWlscy4KICAgICAiIiIKIAotCiAgICAgIyAnZ2xvYmFsX29wdGlvbnMnIGRlc2NyaWJlcyB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgdGhhdCBtYXkgYmUKICAgICAjIHN1cHBsaWVkIHRvIHRoZSBzZXR1cCBzY3JpcHQgcHJpb3IgdG8gYW55IGFjdHVhbCBjb21tYW5kcy4KICAgICAjIEVnLiAiLi9zZXR1cC5weSAtbiIgb3IgIi4vc2V0dXAucHkgLS1xdWlldCIgYm90aCB0YWtlIGFkdmFudGFnZSBvZgpAQCAtNDgsMTIgKzQ5LDEzIEBACiAgICAgIyBkb24ndCB3YW50IHRvIHBvbGx1dGUgdGhlIGNvbW1hbmRzIHdpdGggdG9vIG1hbnkgb3B0aW9ucyB0aGF0IHRoZXkKICAgICAjIGhhdmUgbWluaW1hbCBjb250cm9sIG92ZXIuCiAgICAgIyBUaGUgZm91cnRoIGVudHJ5IGZvciB2ZXJib3NlIG1lYW5zIHRoYXQgaXQgY2FuIGJlIHJlcGVhdGVkLgotICAgIGdsb2JhbF9vcHRpb25zID0gWygndmVyYm9zZScsICd2JywgInJ1biB2ZXJib3NlbHkgKGRlZmF1bHQpIiwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgKCdxdWlldCcsICdxJywgInJ1biBxdWlldGx5ICh0dXJucyB2ZXJib3NpdHkgb2ZmKSIpLAotICAgICAgICAgICAgICAgICAgICAgICgnZHJ5LXJ1bicsICduJywgImRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCdoZWxwJywgJ2gnLCAic2hvdyBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ25vLXVzZXItY2ZnJywgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZSBweWRpc3R1dGlscy5jZmcgaW4geW91ciBob21lIGRpcmVjdG9yeScpLAorICAgIGdsb2JhbF9vcHRpb25zID0gWworICAgICAgICAoJ3ZlcmJvc2UnLCAndicsICJydW4gdmVyYm9zZWx5IChkZWZhdWx0KSIsIDEpLAorICAgICAgICAoJ3F1aWV0JywgJ3EnLCAicnVuIHF1aWV0bHkgKHR1cm5zIHZlcmJvc2l0eSBvZmYpIiksCisgICAgICAgICgnZHJ5LXJ1bicsICduJywgImRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIiksCisgICAgICAgICgnaGVscCcsICdoJywgInNob3cgZGV0YWlsZWQgaGVscCBtZXNzYWdlIiksCisgICAgICAgICgnbm8tdXNlci1jZmcnLCBOb25lLAorICAgICAgICAgICAgJ2lnbm9yZSBweWRpc3R1dGlscy5jZmcgaW4geW91ciBob21lIGRpcmVjdG9yeScpLAogICAgIF0KIAogICAgICMgJ2NvbW1vbl91c2FnZScgaXMgYSBzaG9ydCAoMi0zIGxpbmUpIHN0cmluZyBkZXNjcmliaW5nIHRoZSBjb21tb24KQEAgLTExNSwxMCArMTE3LDkgQEAKICAgICAjIG5lZ2F0aXZlIG9wdGlvbnMgYXJlIG9wdGlvbnMgdGhhdCBleGNsdWRlIG90aGVyIG9wdGlvbnMKICAgICBuZWdhdGl2ZV9vcHQgPSB7J3F1aWV0JzogJ3ZlcmJvc2UnfQogCi0KICAgICAjIC0tIENyZWF0aW9uL2luaXRpYWxpemF0aW9uIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgZGVmIF9faW5pdF9fIChzZWxmLCBhdHRycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXR0cnM9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdCBhIG5ldyBEaXN0cmlidXRpb24gaW5zdGFuY2U6IGluaXRpYWxpemUgYWxsIHRoZQogICAgICAgICBhdHRyaWJ1dGVzIG9mIGEgRGlzdHJpYnV0aW9uLCBhbmQgdGhlbiB1c2UgJ2F0dHJzJyAoYSBkaWN0aW9uYXJ5CiAgICAgICAgIG1hcHBpbmcgYXR0cmlidXRlIG5hbWVzIHRvIHZhbHVlcykgdG8gYXNzaWduIHNvbWUgb2YgdGhvc2UKQEAgLTUzMiwxNSArNTMzLDE1IEBACiAgICAgICAgICMgdG8gYmUgc3VyZSB0aGF0IHRoZSBiYXNpYyAiY29tbWFuZCIgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkLgogICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhjbWRfY2xhc3MsIENvbW1hbmQpOgogICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQ2xhc3NFcnJvcigKLSAgICAgICAgICAgICAgICAgICJjb21tYW5kIGNsYXNzICVzIG11c3Qgc3ViY2xhc3MgQ29tbWFuZCIgJSBjbWRfY2xhc3MpCisgICAgICAgICAgICAgICAgImNvbW1hbmQgY2xhc3MgJXMgbXVzdCBzdWJjbGFzcyBDb21tYW5kIiAlIGNtZF9jbGFzcykKIAogICAgICAgICAjIEFsc28gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbW1hbmQgb2JqZWN0IHByb3ZpZGVzIGEgbGlzdCBvZiBpdHMKICAgICAgICAgIyBrbm93biBvcHRpb25zLgogICAgICAgICBpZiBub3QgKGhhc2F0dHIoY21kX2NsYXNzLCAndXNlcl9vcHRpb25zJykgYW5kCiAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MudXNlcl9vcHRpb25zLCBsaXN0KSk6Ci0gICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNDbGFzc0Vycm9yKCgiY29tbWFuZCBjbGFzcyAlcyBtdXN0IHByb3ZpZGUgIiArCi0gICAgICAgICAgICAgICAgICAgIid1c2VyX29wdGlvbnMnIGF0dHJpYnV0ZSAoYSBsaXN0IG9mIHR1cGxlcykiKSAlIFwKLSAgICAgICAgICAgICAgICAgIGNtZF9jbGFzcykKKyAgICAgICAgICAgIG1zZyA9ICgiY29tbWFuZCBjbGFzcyAlcyBtdXN0IHByb3ZpZGUgIgorICAgICAgICAgICAgICAgICIndXNlcl9vcHRpb25zJyBhdHRyaWJ1dGUgKGEgbGlzdCBvZiB0dXBsZXMpIikKKyAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0NsYXNzRXJyb3IobXNnICUgY21kX2NsYXNzKQogCiAgICAgICAgICMgSWYgdGhlIGNvbW1hbmQgY2xhc3MgaGFzIGEgbGlzdCBvZiBuZWdhdGl2ZSBhbGlhcyBvcHRpb25zLAogICAgICAgICAjIG1lcmdlIGl0IGluIHdpdGggdGhlIGdsb2JhbCBuZWdhdGl2ZSBhbGlhc2VzLgpAQCAtNTUyLDEyICs1NTMsMTEgQEAKICAgICAgICAgIyBDaGVjayBmb3IgaGVscF9vcHRpb25zIGluIGNvbW1hbmQgY2xhc3MuICBUaGV5IGhhdmUgYSBkaWZmZXJlbnQKICAgICAgICAgIyBmb3JtYXQgKHR1cGxlIG9mIGZvdXIpIHNvIHdlIG5lZWQgdG8gcHJlcHJvY2VzcyB0aGVtIGhlcmUuCiAgICAgICAgIGlmIChoYXNhdHRyKGNtZF9jbGFzcywgJ2hlbHBfb3B0aW9ucycpIGFuZAotICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CisgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CiAgICAgICAgICAgICBoZWxwX29wdGlvbnMgPSBmaXhfaGVscF9vcHRpb25zKGNtZF9jbGFzcy5oZWxwX29wdGlvbnMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBoZWxwX29wdGlvbnMgPSBbXQogCi0KICAgICAgICAgIyBBbGwgY29tbWFuZHMgc3VwcG9ydCB0aGUgZ2xvYmFsIG9wdGlvbnMgdG9vLCBqdXN0IGJ5IGFkZGluZwogICAgICAgICAjIGluICdnbG9iYWxfb3B0aW9ucycuCiAgICAgICAgIHBhcnNlci5zZXRfb3B0aW9uX3RhYmxlKHNlbGYuZ2xvYmFsX29wdGlvbnMgKwpAQCAtNTcwLDcgKzU3MCw3IEBACiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiAoaGFzYXR0cihjbWRfY2xhc3MsICdoZWxwX29wdGlvbnMnKSBhbmQKLSAgICAgICAgICAgIGlzaW5zdGFuY2UoY21kX2NsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgorICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoY21kX2NsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgogICAgICAgICAgICAgaGVscF9vcHRpb25fZm91bmQ9MAogICAgICAgICAgICAgZm9yIChoZWxwX29wdGlvbiwgc2hvcnQsIGRlc2MsIGZ1bmMpIGluIGNtZF9jbGFzcy5oZWxwX29wdGlvbnM6CiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihvcHRzLCBwYXJzZXIuZ2V0X2F0dHJfbmFtZShoZWxwX29wdGlvbikpOgpAQCAtNjQ3LDcgKzY0Nyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGtsYXNzID0gc2VsZi5nZXRfY29tbWFuZF9jbGFzcyhjb21tYW5kKQogICAgICAgICAgICAgaWYgKGhhc2F0dHIoa2xhc3MsICdoZWxwX29wdGlvbnMnKSBhbmQKLSAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGtsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgorICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGtsYXNzLmhlbHBfb3B0aW9ucywgbGlzdCkpOgogICAgICAgICAgICAgICAgIHBhcnNlci5zZXRfb3B0aW9uX3RhYmxlKGtsYXNzLnVzZXJfb3B0aW9ucyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4X2hlbHBfb3B0aW9ucyhrbGFzcy5oZWxwX29wdGlvbnMpKQogICAgICAgICAgICAgZWxzZToKQEAgLTgxNCw3ICs4MTQsNyBAQAogICAgICAgICAgICAga2xhc3NfbmFtZSA9IGNvbW1hbmQKIAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF9faW1wb3J0X18gKG1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgyMyw4ICs4MjMsOCBAQAogICAgICAgICAgICAgICAgIGtsYXNzID0gZ2V0YXR0cihtb2R1bGUsIGtsYXNzX25hbWUpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzTW9kdWxlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgY29tbWFuZCAnJXMnIChubyBjbGFzcyAnJXMnIGluIG1vZHVsZSAnJXMnKSIKLSAgICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBrbGFzc19uYW1lLCBtb2R1bGVfbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbW1hbmQgJyVzJyAobm8gY2xhc3MgJyVzJyBpbiBtb2R1bGUgJyVzJykiCisgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIGtsYXNzX25hbWUsIG1vZHVsZV9uYW1lKSkKIAogICAgICAgICAgICAgc2VsZi5jbWRjbGFzc1tjb21tYW5kXSA9IGtsYXNzCiAgICAgICAgICAgICByZXR1cm4ga2xhc3MKQEAgLTg0MCw3ICs4NDAsNyBAQAogICAgICAgICBjbWRfb2JqID0gc2VsZi5jb21tYW5kX29iai5nZXQoY29tbWFuZCkKICAgICAgICAgaWYgbm90IGNtZF9vYmogYW5kIGNyZWF0ZToKICAgICAgICAgICAgIGlmIERFQlVHOgotICAgICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoIkRpc3RyaWJ1dGlvbi5nZXRfY29tbWFuZF9vYmooKTogIiBcCisgICAgICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgiRGlzdHJpYnV0aW9uLmdldF9jb21tYW5kX29iaigpOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRpbmcgJyVzJyBjb21tYW5kIG9iamVjdCIgJSBjb21tYW5kKQogCiAgICAgICAgICAgICBrbGFzcyA9IHNlbGYuZ2V0X2NvbW1hbmRfY2xhc3MoY29tbWFuZCkKQEAgLTg5Nyw4ICs4OTcsOCBAQAogICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKGNvbW1hbmRfb2JqLCBvcHRpb24sIHZhbHVlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgaW4gJXM6IGNvbW1hbmQgJyVzJyBoYXMgbm8gc3VjaCBvcHRpb24gJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc291cmNlLCBjb21tYW5kX25hbWUsIG9wdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgaW4gJXM6IGNvbW1hbmQgJyVzJyBoYXMgbm8gc3VjaCBvcHRpb24gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKHNvdXJjZSwgY29tbWFuZF9uYW1lLCBvcHRpb24pKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKG1zZykKIApAQCAtOTc0LDcgKzk3NCw2IEBACiAgICAgICAgIGNtZF9vYmoucnVuKCkKICAgICAgICAgc2VsZi5oYXZlX3J1bltjb21tYW5kXSA9IDEKIAotCiAgICAgIyAtLSBEaXN0cmlidXRpb24gcXVlcnkgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIGRlZiBoYXNfcHVyZV9tb2R1bGVzKHNlbGYpOgpAQCAtMTExMiwxNyArMTExMSwxNyBAQAogICAgICAgICAiIiIKICAgICAgICAgdmVyc2lvbiA9ICcxLjAnCiAgICAgICAgIGlmIChzZWxmLnByb3ZpZGVzIG9yIHNlbGYucmVxdWlyZXMgb3Igc2VsZi5vYnNvbGV0ZXMgb3IKLSAgICAgICAgICAgIHNlbGYuY2xhc3NpZmllcnMgb3Igc2VsZi5kb3dubG9hZF91cmwpOgorICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NpZmllcnMgb3Igc2VsZi5kb3dubG9hZF91cmwpOgogICAgICAgICAgICAgdmVyc2lvbiA9ICcxLjEnCiAKICAgICAgICAgZmlsZS53cml0ZSgnTWV0YWRhdGEtVmVyc2lvbjogJXNcbicgJSB2ZXJzaW9uKQotICAgICAgICBmaWxlLndyaXRlKCdOYW1lOiAlc1xuJyAlIHNlbGYuZ2V0X25hbWUoKSApCi0gICAgICAgIGZpbGUud3JpdGUoJ1ZlcnNpb246ICVzXG4nICUgc2VsZi5nZXRfdmVyc2lvbigpICkKLSAgICAgICAgZmlsZS53cml0ZSgnU3VtbWFyeTogJXNcbicgJSBzZWxmLmdldF9kZXNjcmlwdGlvbigpICkKLSAgICAgICAgZmlsZS53cml0ZSgnSG9tZS1wYWdlOiAlc1xuJyAlIHNlbGYuZ2V0X3VybCgpICkKLSAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3QoKSApCi0gICAgICAgIGZpbGUud3JpdGUoJ0F1dGhvci1lbWFpbDogJXNcbicgJSBzZWxmLmdldF9jb250YWN0X2VtYWlsKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdMaWNlbnNlOiAlc1xuJyAlIHNlbGYuZ2V0X2xpY2Vuc2UoKSApCisgICAgICAgIGZpbGUud3JpdGUoJ05hbWU6ICVzXG4nICUgc2VsZi5nZXRfbmFtZSgpKQorICAgICAgICBmaWxlLndyaXRlKCdWZXJzaW9uOiAlc1xuJyAlIHNlbGYuZ2V0X3ZlcnNpb24oKSkKKyAgICAgICAgZmlsZS53cml0ZSgnU3VtbWFyeTogJXNcbicgJSBzZWxmLmdldF9kZXNjcmlwdGlvbigpKQorICAgICAgICBmaWxlLndyaXRlKCdIb21lLXBhZ2U6ICVzXG4nICUgc2VsZi5nZXRfdXJsKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0F1dGhvcjogJXNcbicgJSBzZWxmLmdldF9jb250YWN0KCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0F1dGhvci1lbWFpbDogJXNcbicgJSBzZWxmLmdldF9jb250YWN0X2VtYWlsKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0xpY2Vuc2U6ICVzXG4nICUgc2VsZi5nZXRfbGljZW5zZSgpKQogICAgICAgICBpZiBzZWxmLmRvd25sb2FkX3VybDoKICAgICAgICAgICAgIGZpbGUud3JpdGUoJ0Rvd25sb2FkLVVSTDogJXNcbicgJSBzZWxmLmRvd25sb2FkX3VybCkKIApAQCAtMTEzMSw3ICsxMTMwLDcgQEAKIAogICAgICAgICBrZXl3b3JkcyA9ICcsJy5qb2luKHNlbGYuZ2V0X2tleXdvcmRzKCkpCiAgICAgICAgIGlmIGtleXdvcmRzOgotICAgICAgICAgICAgZmlsZS53cml0ZSgnS2V5d29yZHM6ICVzXG4nICUga2V5d29yZHMgKQorICAgICAgICAgICAgZmlsZS53cml0ZSgnS2V5d29yZHM6ICVzXG4nICUga2V5d29yZHMpCiAKICAgICAgICAgc2VsZi5fd3JpdGVfbGlzdChmaWxlLCAnUGxhdGZvcm0nLCBzZWxmLmdldF9wbGF0Zm9ybXMoKSkKICAgICAgICAgc2VsZi5fd3JpdGVfbGlzdChmaWxlLCAnQ2xhc3NpZmllcicsIHNlbGYuZ2V0X2NsYXNzaWZpZXJzKCkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weSBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CmluZGV4IGE5MzY1NWEuLjdlZmJiNzQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CkBAIC0xMzEsNiArMTMxLDE0IEBACiAgICAgICAgICAgICBtc2cgPSAiVW5rbm93biBFeHRlbnNpb24gb3B0aW9uczogJXMiICUgb3B0aW9ucwogICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2cpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPCVzLiVzKCVyKSBhdCAlI3g+JyAlICgKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICBzZWxmLm5hbWUsCisgICAgICAgICAgICBpZChzZWxmKSkKKworCiBkZWYgcmVhZF9zZXR1cF9maWxlKGZpbGVuYW1lKToKICAgICAiIiJSZWFkcyBhIFNldHVwIGZpbGUgYW5kIHJldHVybnMgRXh0ZW5zaW9uIGluc3RhbmNlcy4iIiIKICAgICBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IChwYXJzZV9tYWtlZmlsZSwgZXhwYW5kX21ha2VmaWxlX3ZhcnMsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKaW5kZXggYTVhNTAxMC4uZGE0YjIxZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQpAQCAtMTc5LDYgKzE3OSw5IEBACiAgICAgaSA9IGkgKyBsZW4ocHJlZml4KQogICAgIHMsIHJlc3QgPSBzeXMudmVyc2lvbltpOl0uc3BsaXQoIiAiLCAxKQogICAgIG1ham9yVmVyc2lvbiA9IGludChzWzotMl0pIC0gNgorICAgIGlmIG1ham9yVmVyc2lvbiA+PSAxMzoKKyAgICAgICAgIyB2MTMgd2FzIHNraXBwZWQgYW5kIHNob3VsZCBiZSB2MTQKKyAgICAgICAgbWFqb3JWZXJzaW9uICs9IDEKICAgICBtaW5vclZlcnNpb24gPSBpbnQoc1syOjNdKSAvIDEwLjAKICAgICAjIEkgZG9uJ3QgdGhpbmsgcGF0aHMgYXJlIGFmZmVjdGVkIGJ5IG1pbm9yIHZlcnNpb24gaW4gdmVyc2lvbiA2CiAgICAgaWYgbWFqb3JWZXJzaW9uID09IDY6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL21zdmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5CmluZGV4IDgxMTY2NTYuLjEwNDhjZDQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5CkBAIC0xNTcsNiArMTU3LDkgQEAKICAgICBpID0gaSArIGxlbihwcmVmaXgpCiAgICAgcywgcmVzdCA9IHN5cy52ZXJzaW9uW2k6XS5zcGxpdCgiICIsIDEpCiAgICAgbWFqb3JWZXJzaW9uID0gaW50KHNbOi0yXSkgLSA2CisgICAgaWYgbWFqb3JWZXJzaW9uID49IDEzOgorICAgICAgICAjIHYxMyB3YXMgc2tpcHBlZCBhbmQgc2hvdWxkIGJlIHYxNAorICAgICAgICBtYWpvclZlcnNpb24gKz0gMQogICAgIG1pbm9yVmVyc2lvbiA9IGludChzWzI6M10pIC8gMTAuMAogICAgICMgSSBkb24ndCB0aGluayBwYXRocyBhcmUgYWZmZWN0ZWQgYnkgbWlub3IgdmVyc2lvbiBpbiB2ZXJzaW9uIDYKICAgICBpZiBtYWpvclZlcnNpb24gPT0gNjoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkgYi9MaWIvZGlzdHV0aWxzL3NwYXduLnB5CmluZGV4IDIyZTg3ZTguLjVkZDQxNWEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zcGF3bi5weQpAQCAtMTM3LDkgKzEzNyw2IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGlkLCBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgZXJybm8KLSAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgbm90IERFQlVHOgogICAgICAgICAgICAgICAgICAgICBjbWQgPSBleGVjdXRhYmxlCiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRXhlY0Vycm9yKApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCBhMTQ1MmZlLi41NzM3MjRkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtOSw2ICs5LDcgQEAKIEVtYWlsOiAgICAgICAgPGZkcmFrZUBhY20ub3JnPgogIiIiCiAKK2ltcG9ydCBfaW1wCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMjIsMjMgKzIzLDE1IEBACiBCQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIAogIyBQYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4gT24gV2luZG93cyB0aGUgYmluYXJ5IG1heQotIyBsaXZlIGluIHByb2plY3QvUENCdWlsZDkuICBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4geDY0IFdpbmRvd3MgYnVpbGQsCi0jIGl0J2xsIGxpdmUgaW4gcHJvamVjdC9QQ2J1aWxkL2FtZDY0LgorIyBsaXZlIGluIHByb2plY3QvUENCdWlsZC93aW4zMiBvciBwcm9qZWN0L1BDQnVpbGQvYW1kNjQuCiAjIHNldCBmb3IgY3Jvc3MgYnVpbGRzCiBpZiAiX1BZVEhPTl9QUk9KRUNUX0JBU0UiIGluIG9zLmVudmlyb246CiAgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLmVudmlyb25bIl9QWVRIT05fUFJPSkVDVF9CQVNFIl0pCiBlbHNlOgogICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQotaWYgb3MubmFtZSA9PSAibnQiIGFuZCAicGNidWlsZCIgaW4gcHJvamVjdF9iYXNlWy04Ol0ubG93ZXIoKToKLSAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIpKQotIyBQQy9WUzcuMQotaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY1xcdiIgaW4gcHJvamVjdF9iYXNlWy0xMDpdLmxvd2VyKCk6Ci0gICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsIG9zLnBhdGgucGFyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5wYXJkaXIpKQotIyBQQy9BTUQ2NAotaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY2J1aWxkXFxhbWQ2NCIgaW4gcHJvamVjdF9iYXNlWy0xNDpdLmxvd2VyKCk6Ci0gICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsIG9zLnBhdGgucGFyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5wYXJkaXIpKQoraWYgKG9zLm5hbWUgPT0gJ250JyBhbmQKKyAgICBwcm9qZWN0X2Jhc2UubG93ZXIoKS5lbmRzd2l0aCgoJ1xccGNidWlsZFxcd2luMzInLCAnXFxwY2J1aWxkXFxhbWQ2NCcpKSk6CisgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShwcm9qZWN0X2Jhc2UpKQogCiAjIHB5dGhvbl9idWlsZDogKEJvb2xlYW4pIGlmIHRydWUsIHdlJ3JlIGVpdGhlciBidWlsZGluZyBQeXRob24gb3IKICMgYnVpbGRpbmcgYW4gZXh0ZW5zaW9uIHdpdGggYW4gdW4taW5zdGFsbGVkIFB5dGhvbiwgc28gd2UgdXNlCkBAIC01MSwxMSArNDQsOSBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKIF9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQotaWYgX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kIFwKLSAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ3BjYnVpbGQnLCAncGNidWlsZFxcYW1kNjQnKSk6Ci0gICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKLSAgICBpZiBfc3lzX2hvbWUuZW5kc3dpdGgoJ3BjYnVpbGQnKTogICAjIG11c3QgYmUgYW1kNjQKLSAgICAgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKK2lmIChfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQKKyAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ1xccGNidWlsZFxcd2luMzInLCAnXFxwY2J1aWxkXFxhbWQ2NCcpKSk6CisgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpKQogZGVmIF9weXRob25fYnVpbGQoKToKICAgICBpZiBfc3lzX2hvbWU6CiAgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQpAQCAtNDY4LDcgKzQ1OSw3IEBACiAgICAgIyBYWFggaG1tbS4uIGEgbm9ybWFsIGluc3RhbGwgcHV0cyBpbmNsdWRlIGZpbGVzIGhlcmUKICAgICBnWydJTkNMVURFUFknXSA9IGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCkKIAotICAgIGdbJ0VYVF9TVUZGSVgnXSA9ICcucHlkJworICAgIGdbJ0VYVF9TVUZGSVgnXSA9IF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKClbMF0KICAgICBnWydFWEUnXSA9ICIuZXhlIgogICAgIGdbJ1ZFUlNJT04nXSA9IGdldF9weXRob25fdmVyc2lvbigpLnJlcGxhY2UoIi4iLCAiIikKICAgICBnWydCSU5ESVInXSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKaW5kZXggMmQ3MmFmNC4uMDJmYTFlMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkNISVZFX0ZPUk1BVFMpCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlLCBzcGF3bgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja193YXJuaW5ncywgcnVuX3VuaXR0ZXN0LCBwYXRjaAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3dhcm5pbmdzLCBydW5fdW5pdHRlc3QsIHBhdGNoLCBjaGFuZ2VfY3dkCiAKIHRyeToKICAgICBpbXBvcnQgZ3JwCkBAIC0zNCw2ICszNCwxNiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIFpMSUJfU1VQUE9SVCA9IEZhbHNlCiAKK3RyeToKKyAgICBpbXBvcnQgYnoyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQorCiBkZWYgY2FuX2ZzX2VuY29kZShmaWxlbmFtZSk6CiAgICAgIiIiCiAgICAgUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGNhbiBiZSBzYXZlZCBpbiB0aGUgZmlsZSBzeXN0ZW0uCkBAIC01MiwxOSArNjIsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKLSAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGwoc2VsZik6Ci0gICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnYXJjaGl2ZScpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYsIG5hbWU9J2FyY2hpdmUnKToKKyAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsIG5hbWUsICcudGFyLmd6JykKKyAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCBuYW1lLCAnLnRhcicsIGNvbXByZXNzPU5vbmUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9nemlwKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCAnYXJjaGl2ZScsICcudGFyLmd6JywgY29tcHJlc3M9J2d6aXAnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAnTmVlZCBiejIgc3VwcG9ydCB0byBydW4nKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9iemlwMihzZWxmKToKKyAgICAgICAgdG1wZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKHRtcGRpciwgJ2FyY2hpdmUnLCAnLnRhci5iejInLCBjb21wcmVzcz0nYnppcDInKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobHptYSwgJ05lZWQgbHptYSBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX3h6KHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCAnYXJjaGl2ZScsICcudGFyLnh6JywgY29tcHJlc3M9J3h6JykKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9mc19lbmNvZGUoJ8OlcmNoaXYnKSwKICAgICAgICAgJ0ZpbGUgc3lzdGVtIGNhbm5vdCBoYW5kbGUgdGhpcyBmaWxlbmFtZScpCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2xhdGluMShzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGxhdGluIGNoYXJhY3RlcnMuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ8OlcmNoaXYnKSAjIG5vdGUgdGhpcyBpc24ndCBhIHJlYWwgd29yZAorICAgICAgICBzZWxmLnRlc3RfbWFrZV90YXJiYWxsKCfDpXJjaGl2JykgIyBub3RlIHRoaXMgaXNuJ3QgYSByZWFsIHdvcmQKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgn44Gu44Ki44O844Kr44Kk44OWJyksCiAgICAgICAgICdGaWxlIHN5c3RlbSBjYW5ub3QgaGFuZGxlIHRoaXMgZmlsZW5hbWUnKQogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9leHRlbmRlZChzZWxmKToKQEAgLTcyLDE2ICs5OSw5IEBACiAgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGV4dGVuZGVkCiAgICAgICAgIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgbGF0aW4gY2hhcnNldC4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgn44Gu44Ki44O844Kr44Kk44OWJykgIyBqYXBhbmVzZSBmb3IgYXJjaGl2ZQorICAgICAgICBzZWxmLnRlc3RfbWFrZV90YXJiYWxsKCfjga7jgqLjg7zjgqvjgqTjg5YnKSAjIGphcGFuZXNlIGZvciBhcmNoaXZlCiAKLSAgICBkZWYgX21ha2VfdGFyYmFsbChzZWxmLCB0YXJnZXRfbmFtZSk6Ci0gICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUyJ10sICd4eHgnKQotICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4odG1wZGlyLCAnc3ViJykpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQotCisgICAgZGVmIF9tYWtlX3RhcmJhbGwoc2VsZiwgdG1wZGlyLCB0YXJnZXRfbmFtZSwgc3VmZml4LCAqKmt3YXJncyk6CiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICB1bml0dGVzdC5za2lwVW5sZXNzKHNwbGl0ZHJpdmUodG1wZGlyKVswXSA9PSBzcGxpdGRyaXZlKHRtcGRpcjIpWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UgYW5kIHRhcmdldCBzaG91bGQgYmUgb24gc2FtZSBkcml2ZSIpCkBAIC04OSwyNyArMTA5LDEzIEBACiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCB0YXJnZXRfbmFtZSkKIAogICAgICAgICAjIHdvcmtpbmcgd2l0aCByZWxhdGl2ZSBwYXRocyB0byBhdm9pZCB0YXIgd2FybmluZ3MKLSAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIG9zLmNoZGlyKHRtcGRpcikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbWFrZV90YXJiYWxsKHNwbGl0ZHJpdmUoYmFzZV9uYW1lKVsxXSwgJy4nKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MuY2hkaXIob2xkX2RpcikKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHRtcGRpcik6CisgICAgICAgICAgICBtYWtlX3RhcmJhbGwoc3BsaXRkcml2ZShiYXNlX25hbWUpWzFdLCAnZGlzdCcsICoqa3dhcmdzKQogCiAgICAgICAgICMgY2hlY2sgaWYgdGhlIGNvbXByZXNzZWQgdGFyYmFsbCB3YXMgY3JlYXRlZAotICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXIuZ3onCisgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyBzdWZmaXgKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQotCi0gICAgICAgICMgdHJ5aW5nIGFuIHVuY29tcHJlc3NlZCBvbmUKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsIHRhcmdldF9uYW1lKQotICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3MuY2hkaXIodG1wZGlyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtYWtlX3RhcmJhbGwoc3BsaXRkcml2ZShiYXNlX25hbWUpWzFdLCAnLicsIGNvbXByZXNzPU5vbmUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5jaGRpcihvbGRfZGlyKQotICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXInCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHRhcmJhbGwpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQogCiAgICAgZGVmIF90YXJpbmZvKHNlbGYsIHBhdGgpOgogICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4ocGF0aCkKQEAgLTEyMCw2ICsxMjYsOSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgdGFyLmNsb3NlKCkKIAorICAgIF9jcmVhdGVkX2ZpbGVzID0gKCdkaXN0JywgJ2Rpc3QvZmlsZTEnLCAnZGlzdC9maWxlMicsCisgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3Qvc3ViJywgJ2Rpc3Qvc3ViL2ZpbGUzJywgJ2Rpc3Qvc3ViMicpCisKICAgICBkZWYgX2NyZWF0ZV9maWxlcyhzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCkBAIC0xMzAsMTUgKzEzOSwxNSBAQAogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YicpKQogICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW2Rpc3QsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViMicpKQotICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKLSAgICAgICAgcmV0dXJuIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lCisgICAgICAgIHJldHVybiB0bXBkaXIKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZpbmRfZXhlY3V0YWJsZSgndGFyJykgYW5kIGZpbmRfZXhlY3V0YWJsZSgnZ3ppcCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFpMSUJfU1VQUE9SVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnTmVlZCB0aGUgdGFyLCBnemlwIGFuZCB6bGliIGNvbW1hbmQgdG8gcnVuJykKICAgICBkZWYgdGVzdF90YXJmaWxlX3ZzX3RhcihzZWxmKToKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgb3MuY2hkaXIodG1wZGlyKQogICAgICAgICB0cnk6CkBAIC0xNjQsNyArMTczLDggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbDIpKQogICAgICAgICAjIGxldCdzIGNvbXBhcmUgYm90aCB0YXJiYWxscwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8odGFyYmFsbCksIHNlbGYuX3RhcmluZm8odGFyYmFsbDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8odGFyYmFsbCksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyh0YXJiYWxsMiksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCiAKICAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQpAQCAtMTkxLDcgKzIwMSw4IEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmluZF9leGVjdXRhYmxlKCdjb21wcmVzcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgY29tcHJlc3MgcHJvZ3JhbSBpcyByZXF1aXJlZCcpCiAgICAgZGVmIHRlc3RfY29tcHJlc3NfZGVwcmVjYXRlZChzZWxmKToKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQogCiAgICAgICAgICMgdXNpbmcgY29tcHJlc3MgYW5kIHRlc3RpbmcgdGhlIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCkBAIC0yMjQsMTcgKzIzNSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdOZWVkIHppcCBhbmQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKLSAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMiddLCAneHh4JykKLQotICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsICdhcmNoaXZlJykKLSAgICAgICAgbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgdG1wZGlyKQorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdhcmNoaXZlJykKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHRtcGRpcik6CisgICAgICAgICAgICBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCAnZGlzdCcpCiAKICAgICAgICAgIyBjaGVjayBpZiB0aGUgY29tcHJlc3NlZCB0YXJiYWxsIHdhcyBjcmVhdGVkCiAgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnppcCcKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh0YXJiYWxsKSBhcyB6ZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHpmLm5hbWVsaXN0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2Rpc3QvZmlsZTEnLCAnZGlzdC9maWxlMicsICdkaXN0L3N1Yi9maWxlMyddKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWklQX1NVUFBPUlQsICdOZWVkIHppcCBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV96aXBmaWxlX25vX3psaWIoc2VsZik6CkBAIC0yNTAsMTggKzI2MSwyNCBAQAogICAgICAgICBwYXRjaChzZWxmLCBhcmNoaXZlX3V0aWwuemlwZmlsZSwgJ1ppcEZpbGUnLCBmYWtlX3ppcGZpbGUpCiAKICAgICAgICAgIyBjcmVhdGUgc29tZXRoaW5nIHRvIHRhciBhbmQgY29tcHJlc3MKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQotICAgICAgICBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCB0bXBkaXIpCisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodG1wZGlyKToKKyAgICAgICAgICAgIG1ha2VfemlwZmlsZShiYXNlX25hbWUsICdkaXN0JykKIAogICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy56aXAnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoKHRhcmJhbGwsICJ3IiksIHsnY29tcHJlc3Npb24nOiB6aXBmaWxlLlpJUF9TVE9SRUR9KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUodGFyYmFsbCkgYXMgemY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh6Zi5uYW1lbGlzdCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydkaXN0L2ZpbGUxJywgJ2Rpc3QvZmlsZTInLCAnZGlzdC9zdWIvZmlsZTMnXSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2FyY2hpdmVfZm9ybWF0cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja19hcmNoaXZlX2Zvcm1hdHMoWydnenRhcicsICd4eHgnLCAnemlwJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrX2FyY2hpdmVfZm9ybWF0cyhbJ2d6dGFyJywgJ3ppcCddKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKFsnZ3p0YXInLCAnYnp0YXInLCAneHp0YXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6dGFyJywgJ3RhcicsICd6aXAnXSkpCiAKICAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmUoc2VsZik6CiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCkBAIC0yODIsNiArMjk5LDQxIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgQVJDSElWRV9GT1JNQVRTWyd4eHgnXQogCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX3RhcihzZWxmKToKKyAgICAgICAgYmFzZV9kaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpICwgJ2FyY2hpdmUnKQorICAgICAgICByZXMgPSBtYWtlX2FyY2hpdmUoYmFzZV9uYW1lLCAndGFyJywgYmFzZV9kaXIsICdkaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShyZXMpLCAnYXJjaGl2ZS50YXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8ocmVzKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX2d6dGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICdnenRhcicsIGJhc2VfZGlyLCAnZGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUocmVzKSwgJ2FyY2hpdmUudGFyLmd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHJlcyksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhiejIsICdOZWVkIGJ6MiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX2J6dGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICdienRhcicsIGJhc2VfZGlyLCAnZGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUocmVzKSwgJ2FyY2hpdmUudGFyLmJ6MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyhyZXMpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobHptYSwgJ05lZWQgeHogc3VwcG9ydCB0byBydW4nKQorICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZV94enRhcihzZWxmKToKKyAgICAgICAgYmFzZV9kaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpICwgJ2FyY2hpdmUnKQorICAgICAgICByZXMgPSBtYWtlX2FyY2hpdmUoYmFzZV9uYW1lLCAneHp0YXInLCBiYXNlX2RpciwgJ2Rpc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHJlcyksICdhcmNoaXZlLnRhci54eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyhyZXMpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQorCiAgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX293bmVyX2dyb3VwKHNlbGYpOgogICAgICAgICAjIHRlc3RpbmcgbWFrZV9hcmNoaXZlIHdpdGggb3duZXIgYW5kIGdyb3VwLCB3aXRoIHZhcmlvdXMgY29tYmluYXRpb25zCiAgICAgICAgICMgdGhpcyB3b3JrcyBldmVuIGlmIHRoZXJlJ3Mgbm90IGdpZC91aWQgc3VwcG9ydApAQCAtMjkxLDcgKzM0Myw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBncm91cCA9IG93bmVyID0gJ3Jvb3QnCiAKLSAgICAgICAgYmFzZV9kaXIsIHJvb3RfZGlyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9kaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgcm9vdF9kaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCiAgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICd6aXAnLCByb290X2RpciwgYmFzZV9kaXIsIG93bmVyPW93bmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9Z3JvdXApCkBAIC0zMTEsNyArMzY0LDggQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICJSZXF1aXJlcyB6bGliIikKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhVSURfR0lEX1NVUFBPUlQsICJSZXF1aXJlcyBncnAgYW5kIHB3ZCBzdXBwb3J0IikKICAgICBkZWYgdGVzdF90YXJmaWxlX3Jvb3Rfb3duZXIoc2VsZik6Ci0gICAgICAgIHRtcGRpciwgdG1wZGlyMiwgYmFzZV9uYW1lID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHRtcGRpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdhcmNoaXZlJykKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIG9zLmNoZGlyKHRtcGRpcikKICAgICAgICAgZ3JvdXAgPSBncnAuZ2V0Z3JnaWQoMClbMF0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdC5weQppbmRleCA1MDNhNmU4Li5mNzYyZjVkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0LnB5CkBAIC0yMSw3ICsyMSw3IEBACiAKICAgICAgICAgIyB3aGF0IGZvcm1hdHMgZG9lcyBiZGlzdCBvZmZlcj8KICAgICAgICAgZm9ybWF0cyA9IFsnYnp0YXInLCAnZ3p0YXInLCAnbXNpJywgJ3JwbScsICd0YXInLAotICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JywgJ3ppcCcsICd6dGFyJ10KKyAgICAgICAgICAgICAgICAgICAnd2luaW5zdCcsICd4enRhcicsICd6aXAnLCAnenRhciddCiAgICAgICAgIGZvdW5kID0gc29ydGVkKGNtZC5mb3JtYXRfY29tbWFuZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgZm9ybWF0cykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKaW5kZXggYjlmNDA3Zi4uMzY2ZmZiZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CkBAIC0zNyw2ICszNyw5IEBACiAgICAgICAgIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQgaW1wb3J0IGJ1aWxkX2V4dAogICAgICAgICBidWlsZF9leHQuVVNFUl9CQVNFID0gc2l0ZS5VU0VSX0JBU0UKIAorICAgIGRlZiBidWlsZF9leHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2V4dCgqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgdGVzdF9idWlsZF9leHQoc2VsZik6CiAgICAgICAgIGdsb2JhbCBBTFJFQURZX1RFU1RFRAogICAgICAgICBjb3B5X3h4bW9kdWxlX2Moc2VsZi50bXBfZGlyKQpAQCAtNDQsNyArNDcsNyBAQAogICAgICAgICB4eF9leHQgPSBFeHRlbnNpb24oJ3h4JywgW3h4X2NdKQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IFt4eF9leHRdfSkKICAgICAgICAgZGlzdC5wYWNrYWdlX2RpciA9IHNlbGYudG1wX2RpcgotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgZml4dXBfYnVpbGRfZXh0KGNtZCkKICAgICAgICAgY21kLmJ1aWxkX2xpYiA9IHNlbGYudG1wX2RpcgogICAgICAgICBjbWQuYnVpbGRfdGVtcCA9IHNlbGYudG1wX2RpcgpAQCAtOTEsNyArOTQsNyBAQAogCiAgICAgZGVmIHRlc3Rfc29sYXJpc19lbmFibGVfc2hhcmVkKHNlbGYpOgogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCd9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgb2xkID0gc3lzLnBsYXRmb3JtCiAKICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ3N1bm9zJyAjIGZvb2xpbmcgZmluYWxpemVfb3B0aW9ucwpAQCAtMTEzLDcgKzExNiw3IEBACiAgICAgZGVmIHRlc3RfdXNlcl9zaXRlKHNlbGYpOgogICAgICAgICBpbXBvcnQgc2l0ZQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCd9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKIAogICAgICAgICAjIG1ha2luZyBzdXJlIHRoZSB1c2VyIG9wdGlvbiBpcyB0aGVyZQogICAgICAgICBvcHRpb25zID0gW25hbWUgZm9yIG5hbWUsIHNob3J0LCBsYWJsZSBpbgpAQCAtMTQ0LDE0ICsxNDcsMTQgQEAKICAgICAgICAgIyB3aXRoIHRoZSBvcHRpb25hbCBhcmd1bWVudC4KICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPUZhbHNlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFVua25vd25GaWxlRXJyb3IsIENvbXBpbGVFcnJvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZC5ydW4pICAjIHNob3VsZCByYWlzZSBhbiBlcnJvcgogCiAgICAgICAgIG1vZHVsZXMgPSBbRXh0ZW5zaW9uKCdmb28nLCBbJ3h4eCddLCBvcHRpb25hbD1UcnVlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgY21kLnJ1bigpICAjIHNob3VsZCBwYXNzCiAKQEAgLTE2MCw3ICsxNjMsNyBAQAogICAgICAgICAjIGV0Yy4pIGFyZSBpbiB0aGUgaW5jbHVkZSBzZWFyY2ggcGF0aC4KICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPUZhbHNlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKIAogICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCkBAIC0xNzIsMTQgKzE3NSwxNCBAQAogCiAgICAgICAgICMgbWFrZSBzdXJlIGNtZC5saWJyYXJpZXMgaXMgdHVybmVkIGludG8gYSBsaXN0CiAgICAgICAgICMgaWYgaXQncyBhIHN0cmluZwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmxpYnJhcmllcyA9ICdteV9saWIsIG90aGVyX2xpYiBsYXN0bGliJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmxpYnJhcmllcywgWydteV9saWInLCAnb3RoZXJfbGliJywgJ2xhc3RsaWInXSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBjbWQubGlicmFyeV9kaXJzIGlzIHR1cm5lZCBpbnRvIGEgbGlzdAogICAgICAgICAjIGlmIGl0J3MgYSBzdHJpbmcKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5saWJyYXJ5X2RpcnMgPSAnbXlfbGliX2RpciVzb3RoZXJfbGliX2RpcicgJSBvcy5wYXRoc2VwCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignbXlfbGliX2RpcicsIGNtZC5saWJyYXJ5X2RpcnMpCkBAIC0xODcsNyArMTkwLDcgQEAKIAogICAgICAgICAjIG1ha2Ugc3VyZSBycGF0aCBpcyB0dXJuZWQgaW50byBhIGxpc3QKICAgICAgICAgIyBpZiBpdCdzIGEgc3RyaW5nCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQucnBhdGggPSAnb25lJXN0d28nICUgb3MucGF0aHNlcAogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnJwYXRoLCBbJ29uZScsICd0d28nXSkKQEAgLTE5NiwzMiArMTk5LDMyIEBACiAKICAgICAgICAgIyBtYWtlIHN1cmUgZGVmaW5lIGlzIHR1cm5lZCBpbnRvIDItdHVwbGVzCiAgICAgICAgICMgc3RyaW5ncyBpZiB0aGV5IGFyZSAnLCctc2VwYXJhdGVkIHN0cmluZ3MKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5kZWZpbmUgPSAnb25lLHR3bycKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5kZWZpbmUsIFsoJ29uZScsICcxJyksICgndHdvJywgJzEnKV0pCiAKICAgICAgICAgIyBtYWtlIHN1cmUgdW5kZWYgaXMgdHVybmVkIGludG8gYSBsaXN0IG9mCiAgICAgICAgICMgc3RyaW5ncyBpZiB0aGV5IGFyZSAnLCctc2VwYXJhdGVkIHN0cmluZ3MKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC51bmRlZiA9ICdvbmUsdHdvJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnVuZGVmLCBbJ29uZScsICd0d28nXSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBzd2lnX29wdHMgaXMgdHVybmVkIGludG8gYSBsaXN0Ci0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuc3dpZ19vcHRzID0gTm9uZQogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnN3aWdfb3B0cywgW10pCiAKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5zd2lnX29wdHMgPSAnMSAyJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLnN3aWdfb3B0cywgWycxJywgJzInXSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2V4dGVuc2lvbnNfbGlzdChzZWxmKToKICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbigpCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAKICAgICAgICAgIydleHRlbnNpb25zJyBvcHRpb24gbXVzdCBiZSBhIGxpc3Qgb2YgRXh0ZW5zaW9uIGluc3RhbmNlcwpAQCAtMjcwLDcgKzI3Myw3IEBACiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZV9maWxlcyhzZWxmKToKICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPUZhbHNlKV0KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLCAnZXh0X21vZHVsZXMnOiBtb2R1bGVzfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuZ2V0X3NvdXJjZV9maWxlcygpLCBbJ3h4eCddKQogCkBAIC0yNzksNyArMjgyLDcgQEAKICAgICAgICAgIyBzaG91bGQgbm90IGJlIG92ZXJyaWRlbiBieSBhIGNvbXBpbGVyIGluc3RhbmNlCiAgICAgICAgICMgd2hlbiB0aGUgY29tbWFuZCBpcyBydW4KICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbigpCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuY29tcGlsZXIgPSAndW5peCcKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBjbWQucnVuKCkKQEAgLTI5Miw3ICsyOTUsNyBAQAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ2ZvbycsIFtjX2ZpbGVdLCBvcHRpb25hbD1GYWxzZSkKICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXh0X21vZHVsZXMnOiBbZXh0XX0pCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBmaXh1cF9idWlsZF9leHQoY21kKQogICAgICAgICBjbWQuZW5zdXJlX2ZpbmFsaXplZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtZC5nZXRfb3V0cHV0cygpKSwgMSkKQEAgLTM1NSw3ICszNTgsNyBAQAogICAgICAgICAjZXRyZWVfZXh0ID0gRXh0ZW5zaW9uKCdseG1sLmV0cmVlJywgW2V0cmVlX2NdKQogICAgICAgICAjZGlzdCA9IERpc3RyaWJ1dGlvbih7J25hbWUnOiAnbHhtbCcsICdleHRfbW9kdWxlcyc6IFtldHJlZV9leHRdfSkKICAgICAgICAgZGlzdCA9IERpc3RyaWJ1dGlvbigpCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuaW5wbGFjZSA9IDEKICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5wYWNrYWdlX2RpciA9IHsnJzogJ3NyYyd9CiAgICAgICAgIGNtZC5kaXN0cmlidXRpb24ucGFja2FnZXMgPSBbJ2x4bWwnLCAnbHhtbC5odG1sJ10KQEAgLTQ2Miw3ICs0NjUsNyBAQAogICAgICAgICAgICAgJ2V4dF9tb2R1bGVzJzogW2RlcHRhcmdldF9leHRdCiAgICAgICAgIH0pCiAgICAgICAgIGRpc3QucGFja2FnZV9kaXIgPSBzZWxmLnRtcF9kaXIKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5idWlsZF9saWIgPSBzZWxmLnRtcF9kaXIKICAgICAgICAgY21kLmJ1aWxkX3RlbXAgPSBzZWxmLnRtcF9kaXIKIApAQCAtNDgxLDggKzQ4NCwxOSBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJXcm9uZyBkZXBsb3ltZW50IHRhcmdldCBkdXJpbmcgY29tcGlsYXRpb24iKQogCiAKK2NsYXNzIFBhcmFsbGVsQnVpbGRFeHRUZXN0Q2FzZShCdWlsZEV4dFRlc3RDYXNlKToKKworICAgIGRlZiBidWlsZF9leHQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgYnVpbGRfZXh0ID0gc3VwZXIoKS5idWlsZF9leHQoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBidWlsZF9leHQucGFyYWxsZWwgPSBUcnVlCisgICAgICAgIHJldHVybiBidWlsZF9leHQKKworCiBkZWYgdGVzdF9zdWl0ZSgpOgotICAgIHJldHVybiB1bml0dGVzdC5tYWtlU3VpdGUoQnVpbGRFeHRUZXN0Q2FzZSkKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoQnVpbGRFeHRUZXN0Q2FzZSkpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoUGFyYWxsZWxCdWlsZEV4dFRlc3RDYXNlKSkKKyAgICByZXR1cm4gc3VpdGUKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKaW5kZXggYzhmNmI4OS4uMTgyODNkYyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQpAQCAtMTIwLDggKzEyMCw4IEBACiAgICAgICAgIGZvdW5kID0gb3MubGlzdGRpcihjbWQuYnVpbGRfbGliKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb3VuZCksIFsnX19weWNhY2hlX18nLCAnYm9pbGVkZWdncy5weSddKQogICAgICAgICBmb3VuZCA9IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKGNtZC5idWlsZF9saWIsICdfX3B5Y2FjaGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb3VuZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydib2lsZWRlZ2dzLiVzLnB5bycgJSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnXSkKKyAgICAgICAgZXhwZWN0ID0gJ2JvaWxlZGVnZ3Mue30ub3B0LTEucHljJy5mb3JtYXQoc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm91bmQpLCBbZXhwZWN0XSkKIAogICAgIGRlZiB0ZXN0X2Rpcl9pbl9wYWNrYWdlX2RhdGEoc2VsZik6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQppbmRleCAxOGUxZTU3Li45MzEzMzMwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weQpAQCAtMjAsOCArMjAsNiBAQAogCiAKIGRlZiBfbWFrZV9leHRfbmFtZShtb2RuYW1lKToKLSAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIHN5cy5leGVjdXRhYmxlLmVuZHN3aXRoKCdfZC5leGUnKToKLSAgICAgICAgbW9kbmFtZSArPSAnX2QnCiAgICAgcmV0dXJuIG1vZG5hbWUgKyBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0VYVF9TVUZGSVgnKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQppbmRleCA0MGRkMWE5Li41Mzc4YWE4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CkBAIC00NCwxMiArNDQsMTEgQEAKICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwcm9qZWN0X2RpciwgJ2Zvby5weScpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShmLCAnIyBweXRob24gZmlsZScpCiAgICAgICAgIGNtZC5ieXRlX2NvbXBpbGUoW2ZdKQotICAgICAgICBweWNfZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdmb28ucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX292ZXJyaWRlPVRydWUpCi0gICAgICAgIHB5b19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9RmFsc2UpCisgICAgICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIG9wdGltaXphdGlvbj0nJykKKyAgICAgICAgcHljX29wdF9maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPWNtZC5vcHRpbWl6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5Y19maWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5b19maWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5Y19vcHRfZmlsZSkpCiAKICAgICBkZWYgdGVzdF9nZXRfb3V0cHV0cyhzZWxmKToKICAgICAgICAgcHJvamVjdF9kaXIsIGRpc3QgPSBzZWxmLmNyZWF0ZV9kaXN0KCkKQEAgLTY2LDggKzY1LDggQEAKICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5wYWNrYWdlcyA9IFsnc3BhbSddCiAgICAgICAgIGNtZC5kaXN0cmlidXRpb24uc2NyaXB0X25hbWUgPSAnc2V0dXAucHknCiAKLSAgICAgICAgIyBnZXRfb3V0cHV0cyBzaG91bGQgcmV0dXJuIDQgZWxlbWVudHM6IHNwYW0vX19pbml0X18ucHksIC5weWMgYW5kCi0gICAgICAgICMgLnB5bywgZm9vLmltcG9ydC10YWctYWJpZmxhZ3Muc28gLyBmb28ucHlkCisgICAgICAgICMgZ2V0X291dHB1dHMgc2hvdWxkIHJldHVybiA0IGVsZW1lbnRzOiBzcGFtL19faW5pdF9fLnB5IGFuZCAucHljLAorICAgICAgICAjIGZvby5pbXBvcnQtdGFnLWFiaWZsYWdzLnNvIC8gZm9vLnB5ZAogICAgICAgICBvdXRwdXRzID0gY21kLmdldF9vdXRwdXRzKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0cHV0cyksIDQsIG91dHB1dHMpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9tc3ZjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfbXN2Y2NvbXBpbGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZDkxMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfbXN2Y2NvbXBpbGVyLnB5CkBAIC0wLDAgKzEsOTAgQEAKKyIiIlRlc3RzIGZvciBkaXN0dXRpbHMuX21zdmNjb21waWxlci4iIiIKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9zCisKK2Zyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKworCitTS0lQX01FU1NBR0UgPSAoTm9uZSBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBlbHNlCisgICAgICAgICAgICAgICAgIlRoZXNlIHRlc3RzIGFyZSBvbmx5IGZvciB3aW4zMiIpCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKFNLSVBfTUVTU0FHRSBpcyBOb25lLCBTS0lQX01FU1NBR0UpCitjbGFzcyBtc3ZjY29tcGlsZXJUZXN0Q2FzZShzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25vX2NvbXBpbGVyKHNlbGYpOgorICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgYXMgX21zdmNjb21waWxlcgorICAgICAgICAjIG1ha2VzIHN1cmUgcXVlcnlfdmN2YXJzYWxsIHJhaXNlcworICAgICAgICAjIGEgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciBpZiB0aGUgY29tcGlsZXIKKyAgICAgICAgIyBpcyBub3QgZm91bmQKKyAgICAgICAgZGVmIF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKworICAgICAgICBvbGRfZmluZF92Y3ZhcnNhbGwgPSBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbAorICAgICAgICBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbCA9IF9maW5kX3ZjdmFyc2FsbAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXN0dXRpbHNQbGF0Zm9ybUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21zdmNjb21waWxlci5fZ2V0X3ZjX2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dvbnQgZmluZCB0aGlzIHZlcnNpb24nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBvbGRfZmluZF92Y3ZhcnNhbGwKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVyX29wdGlvbnMoc2VsZik6CisgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuX21zdmNjb21waWxlciBhcyBfbXN2Y2NvbXBpbGVyCisgICAgICAgICMgc3VwcHJlc3MgcGF0aCB0byB2Y3J1bnRpbWUgZnJvbSBfZmluZF92Y3ZhcnNhbGwgdG8KKyAgICAgICAgIyBjaGVjayB0aGF0IC9NVCBpcyBhZGRlZCB0byBjb21waWxlIG9wdGlvbnMKKyAgICAgICAgb2xkX2ZpbmRfdmN2YXJzYWxsID0gX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgZGVmIF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpOgorICAgICAgICAgICAgcmV0dXJuIG9sZF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpWzBdLCBOb25lCisgICAgICAgIF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsID0gX2ZpbmRfdmN2YXJzYWxsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbXBpbGVyID0gX21zdmNjb21waWxlci5NU1ZDQ29tcGlsZXIoKQorICAgICAgICAgICAgY29tcGlsZXIuaW5pdGlhbGl6ZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9NVCcsIGNvbXBpbGVyLmNvbXBpbGVfb3B0aW9ucykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJy9NRCcsIGNvbXBpbGVyLmNvbXBpbGVfb3B0aW9ucykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsID0gb2xkX2ZpbmRfdmN2YXJzYWxsCisKKyAgICBkZWYgdGVzdF92Y3J1bnRpbWVfY29weShzZWxmKToKKyAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyIGFzIF9tc3ZjY29tcGlsZXIKKyAgICAgICAgIyBmb3JjZSBwYXRoIHRvIGEga25vd24gZmlsZSAtIGl0IGRvZXNuJ3QgbWF0dGVyCisgICAgICAgICMgd2hhdCB3ZSBjb3B5IGFzIGxvbmcgYXMgaXRzIG5hbWUgaXMgbm90IGluCisgICAgICAgICMgX21zdmNjb21waWxlci5fQlVORExFRF9ETExTCisgICAgICAgIG9sZF9maW5kX3ZjdmFyc2FsbCA9IF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsCisgICAgICAgIGRlZiBfZmluZF92Y3ZhcnNhbGwocGxhdF9zcGVjKToKKyAgICAgICAgICAgIHJldHVybiBvbGRfZmluZF92Y3ZhcnNhbGwocGxhdF9zcGVjKVswXSwgX19maWxlX18KKyAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBfZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVtcGRpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBjb21waWxlciA9IF9tc3ZjY29tcGlsZXIuTVNWQ0NvbXBpbGVyKCkKKyAgICAgICAgICAgIGNvbXBpbGVyLmluaXRpYWxpemUoKQorICAgICAgICAgICAgY29tcGlsZXIuX2NvcHlfdmNydW50aW1lKHRlbXBkaXIpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAgICAgdGVtcGRpciwgb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykpKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsID0gb2xkX2ZpbmRfdmN2YXJzYWxsCisKKyAgICBkZWYgdGVzdF92Y3J1bnRpbWVfc2tpcF9jb3B5KHNlbGYpOgorICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgYXMgX21zdmNjb21waWxlcgorCisgICAgICAgIHRlbXBkaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBjb21waWxlciA9IF9tc3ZjY29tcGlsZXIuTVNWQ0NvbXBpbGVyKCkKKyAgICAgICAgY29tcGlsZXIuaW5pdGlhbGl6ZSgpCisgICAgICAgIGRsbCA9IGNvbXBpbGVyLl92Y3J1bnRpbWVfcmVkaXN0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShkbGwpKQorCisgICAgICAgIGNvbXBpbGVyLl9jb3B5X3ZjcnVudGltZSh0ZW1wZGlyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKAorICAgICAgICAgICAgdGVtcGRpciwgb3MucGF0aC5iYXNlbmFtZShkbGwpKSkpCisKK2RlZiB0ZXN0X3N1aXRlKCk6CisgICAgcmV0dXJuIHVuaXR0ZXN0Lm1ha2VTdWl0ZShtc3ZjY29tcGlsZXJUZXN0Q2FzZSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBydW5fdW5pdHRlc3QodGVzdF9zdWl0ZSgpKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CmluZGV4IDVhZGNhYzUuLmU0MjMzMjUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKQEAgLTMyMiwxMSArMzIyLDExIEBACiAgICAgICAgICAgICAgICAgICBwcmVmaXg9Tm9uZSwgYmFzZV9kaXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9MSwgZHJ5X3J1bj0wLAogICAgICAgICAgICAgICAgICAgZGlyZWN0PU5vbmUpOgotICAgICIiIkJ5dGUtY29tcGlsZSBhIGNvbGxlY3Rpb24gb2YgUHl0aG9uIHNvdXJjZSBmaWxlcyB0byBlaXRoZXIgLnB5YwotICAgIG9yIC5weW8gZmlsZXMgaW4gYSBfX3B5Y2FjaGVfXyBzdWJkaXJlY3RvcnkuICAncHlfZmlsZXMnIGlzIGEgbGlzdAorICAgICIiIkJ5dGUtY29tcGlsZSBhIGNvbGxlY3Rpb24gb2YgUHl0aG9uIHNvdXJjZSBmaWxlcyB0byAucHljCisgICAgZmlsZXMgaW4gYSBfX3B5Y2FjaGVfXyBzdWJkaXJlY3RvcnkuICAncHlfZmlsZXMnIGlzIGEgbGlzdAogICAgIG9mIGZpbGVzIHRvIGNvbXBpbGU7IGFueSBmaWxlcyB0aGF0IGRvbid0IGVuZCBpbiAiLnB5IiBhcmUgc2lsZW50bHkKICAgICBza2lwcGVkLiAgJ29wdGltaXplJyBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotICAgICAgMCAtIGRvbid0IG9wdGltaXplIChnZW5lcmF0ZSAucHljKQorICAgICAgMCAtIGRvbid0IG9wdGltaXplCiAgICAgICAxIC0gbm9ybWFsIG9wdGltaXphdGlvbiAobGlrZSAicHl0aG9uIC1PIikKICAgICAgIDIgLSBleHRyYSBvcHRpbWl6YXRpb24gKGxpa2UgInB5dGhvbiAtT08iKQogICAgIElmICdmb3JjZScgaXMgdHJ1ZSwgYWxsIGZpbGVzIGFyZSByZWNvbXBpbGVkIHJlZ2FyZGxlc3Mgb2YKQEAgLTQzOCw4ICs0MzgsOSBAQAogICAgICAgICAgICAgIyAgIGNmaWxlIC0gYnl0ZS1jb21waWxlZCBmaWxlCiAgICAgICAgICAgICAjICAgZGZpbGUgLSBwdXJwb3J0ZWQgc291cmNlIGZpbGVuYW1lIChzYW1lIGFzICdmaWxlJyBieSBkZWZhdWx0KQogICAgICAgICAgICAgaWYgb3B0aW1pemUgPj0gMDoKKyAgICAgICAgICAgICAgICBvcHQgPSAnJyBpZiBvcHRpbWl6ZSA9PSAwIGVsc2Ugb3B0aW1pemUKICAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKAotICAgICAgICAgICAgICAgICAgICBmaWxlLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgIGZpbGUsIG9wdGltaXphdGlvbj1vcHQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZSkKICAgICAgICAgICAgIGRmaWxlID0gZmlsZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy92ZXJzaW9uLnB5IGIvTGliL2Rpc3R1dGlscy92ZXJzaW9uLnB5CmluZGV4IGViY2FiODQuLmFmMTRjYzEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdmVyc2lvbi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb24ucHkKQEAgLTQ4LDEyICs0OCw2IEBACiAgICAgICAgICAgICByZXR1cm4gYwogICAgICAgICByZXR1cm4gYyA9PSAwCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgYyBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBjCi0gICAgICAgIHJldHVybiBjICE9IDAKLQogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQogICAgICAgICBpZiBjIGlzIE5vdEltcGxlbWVudGVkOgpkaWZmIC0tZ2l0IGEvTGliL2RvY3Rlc3QucHkgYi9MaWIvZG9jdGVzdC5weQppbmRleCA2NGU2ZDcxLi45NmFiMGM0IDEwMDY0NAotLS0gYS9MaWIvZG9jdGVzdC5weQorKysgYi9MaWIvZG9jdGVzdC5weQpAQCAtNTMwLDggKzUzMCw5IEBACiAgICAgICAgICAgICBleGFtcGxlcyA9ICcxIGV4YW1wbGUnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGFtcGxlcyA9ICclZCBleGFtcGxlcycgJSBsZW4oc2VsZi5leGFtcGxlcykKLSAgICAgICAgcmV0dXJuICgnPERvY1Rlc3QgJXMgZnJvbSAlczolcyAoJXMpPicgJQotICAgICAgICAgICAgICAgIChzZWxmLm5hbWUsIHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBleGFtcGxlcykpCisgICAgICAgIHJldHVybiAoJzwlcyAlcyBmcm9tICVzOiVzICglcyk+JyAlCisgICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBleGFtcGxlcykpCiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgdHlwZShzZWxmKSBpcyBub3QgdHlwZShvdGhlcik6CkBAIC05NzgsNyArOTc5LDggQEAKICAgICAgICAgICAgIGZvciB2YWxuYW1lLCB2YWwgaW4gb2JqLl9fZGljdF9fLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgdmFsbmFtZSA9ICclcy4lcycgJSAobmFtZSwgdmFsbmFtZSkKICAgICAgICAgICAgICAgICAjIFJlY3Vyc2UgdG8gZnVuY3Rpb25zICYgY2xhc3Nlcy4KLSAgICAgICAgICAgICAgICBpZiAoKGluc3BlY3QuaXNyb3V0aW5lKHZhbCkgb3IgaW5zcGVjdC5pc2NsYXNzKHZhbCkpIGFuZAorICAgICAgICAgICAgICAgIGlmICgoaW5zcGVjdC5pc3JvdXRpbmUoaW5zcGVjdC51bndyYXAodmFsKSkKKyAgICAgICAgICAgICAgICAgICAgIG9yIGluc3BlY3QuaXNjbGFzcyh2YWwpKSBhbmQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnJvbV9tb2R1bGUobW9kdWxlLCB2YWwpKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmluZCh0ZXN0cywgdmFsLCB2YWxuYW1lLCBtb2R1bGUsIHNvdXJjZV9saW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9icywgc2VlbikKQEAgLTEwNDksNyArMTA1MSw3IEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZpbGVuYW1lID0gZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIG1vZHVsZS5fX25hbWVfXykKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lWy00Ol0gaW4gKCIucHljIiwgIi5weW8iKToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lWy00Ol0gPT0gIi5weWMiOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldF9kb2N0ZXN0KGRvY3N0cmluZywgZ2xvYnMsIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubykKQEAgLTIzNjcsMTUgKzIzNjksNiBAQAogICAgICAgICBzdWl0ZSA9IF9Eb2NUZXN0U3VpdGUoKQogICAgICAgICBzdWl0ZS5hZGRUZXN0KFNraXBEb2NUZXN0Q2FzZShtb2R1bGUpKQogICAgICAgICByZXR1cm4gc3VpdGUKLSAgICBlbGlmIG5vdCB0ZXN0czoKLSAgICAgICAgIyBXaHkgZG8gd2Ugd2FudCB0byBkbyB0aGlzPyBCZWNhdXNlIGl0IHJldmVhbHMgYSBidWcgdGhhdCBtaWdodAotICAgICAgICAjIG90aGVyd2lzZSBiZSBoaWRkZW4uCi0gICAgICAgICMgSXQgaXMgcHJvYmFibHkgYSBidWcgdGhhdCB0aGlzIGV4Y2VwdGlvbiBpcyBub3QgYWxzbyByYWlzZWQgaWYgdGhlCi0gICAgICAgICMgbnVtYmVyIG9mIGRvY3Rlc3QgZXhhbXBsZXMgaW4gdGVzdHMgaXMgemVybyAoaS5lLiBpZiBubyBkb2N0ZXN0Ci0gICAgICAgICMgZXhhbXBsZXMgd2VyZSBmb3VuZCkuICBIb3dldmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgbm90IGJlIHJhaXNpbmcKLSAgICAgICAgIyBhbiBleGNlcHRpb24gYXQgYWxsIGhlcmUsIHRob3VnaCBpdCBpcyB0b28gbGF0ZSB0byBtYWtlIHRoaXMgY2hhbmdlCi0gICAgICAgICMgZm9yIGEgbWFpbnRlbmFuY2UgcmVsZWFzZS4gIFNlZSBhbHNvIGlzc3VlICMxNDY0OS4KLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtb2R1bGUsICJoYXMgbm8gZG9jc3RyaW5ncyIpCiAKICAgICB0ZXN0cy5zb3J0KCkKICAgICBzdWl0ZSA9IF9Eb2NUZXN0U3VpdGUoKQpAQCAtMjM4NSw3ICsyMzc4LDcgQEAKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGlmIG5vdCB0ZXN0LmZpbGVuYW1lOgogICAgICAgICAgICAgZmlsZW5hbWUgPSBtb2R1bGUuX19maWxlX18KLSAgICAgICAgICAgIGlmIGZpbGVuYW1lWy00Ol0gaW4gKCIucHljIiwgIi5weW8iKToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lWy00Ol0gPT0gIi5weWMiOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgICAgICAgICAgdGVzdC5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHN1aXRlLmFkZFRlc3QoRG9jVGVzdENhc2UodGVzdCwgKipvcHRpb25zKSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi9lbWFpbC9fX2luaXRfXy5weQppbmRleCBmZjE2ZjZhLi5mYWU4NzI0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX19pbml0X18ucHkKKysrIGIvTGliL2VtYWlsL19faW5pdF9fLnB5CkBAIC00LDggKzQsNiBAQAogCiAiIiJBIHBhY2thZ2UgZm9yIHBhcnNpbmcsIGhhbmRsaW5nLCBhbmQgZ2VuZXJhdGluZyBlbWFpbCBtZXNzYWdlcy4iIiIKIAotX192ZXJzaW9uX18gPSAnNS4xLjAnCi0KIF9fYWxsX18gPSBbCiAgICAgJ2Jhc2U2NG1pbWUnLAogICAgICdjaGFyc2V0JywKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQppbmRleCBhOWJkZjQ0Li5mMjY0MTkxIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC0zMjAsMTcgKzMyMCwxOCBAQAogICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCiAKICAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnIGlmIGZvbGRlZC5wb2xpY3kudXRmOCBlbHNlICdhc2NpaScKICAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKICAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZShlbmNvZGluZykKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoaXMgc2hvdWxkIGJlIGEgcG9saWN5IHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoaXMgc2hvdWxkIGJlIGEgcG9saWN5IHNldHRpbmcgd2hlbiB1dGY4IGlzIEZhbHNlLgogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JwogICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgZm9sZGVkLnBvbGljeSkKICAgICAgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCkBAIC0zOTQsMTEgKzM5NSwxMiBAQAogCiAgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CiAgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGVuY29kaW5nID0gJ3V0Zi04JyBpZiBmb2xkZWQucG9saWN5LnV0ZjggZWxzZSAnYXNjaWknCiAgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CiAgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCiAgICAgICAgICAgICBpc19ldyA9IEZhbHNlCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoZW5jb2RpbmcpCiAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKQEAgLTQ3NSwxMiArNDc3LDEzIEBACiAgICAgICAgICMgY29tbWVudCB0aGF0IGJlY29tZXMgYSBiYXJyaWVyIGFjcm9zcyB3aGljaCB3ZSBjYW4ndCBjb21wb3NlIGVuY29kZWQKICAgICAgICAgIyB3b3Jkcy4KICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZW5jb2RpbmcgPSAndXRmLTgnIGlmIGZvbGRlZC5wb2xpY3kudXRmOCBlbHNlICdhc2NpaScKICAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKICAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKICAgICAgICAgICAgIGhhc19ldyA9IEZhbHNlCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoZW5jb2RpbmcpCiAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKaW5kZXggODEwNjExNC4uYzBkOThhNCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMTQ5LDEyICsxNDksMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBzZXJpYWxpemF0aW9uLiAgTm9uZSBvciAwIG1lYW5zIG5vIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwaW5nIGlzIGRvbmUuICBEZWZhdWx0IGlzIDc4LgogCisgICAgbWFuZ2xlX2Zyb21fICAgICAgICAtLSBhIGZsYWcgdGhhdCwgd2hlbiBUcnVlIGVzY2FwZXMgRnJvbV8gbGluZXMgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5IG9mIHRoZSBtZXNzYWdlIGJ5IHB1dHRpbmcgYSBgPicgaW4gZnJvbnQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW0uIFRoaXMgaXMgdXNlZCB3aGVuIHRoZSBtZXNzYWdlIGlzIGJlaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkIGJ5IGEgZ2VuZXJhdG9yLiBEZWZhdWx0OiBUcnVlLgorCiAgICAgIiIiCiAKICAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQogICAgIGxpbmVzZXAgPSAnXG4nCiAgICAgY3RlX3R5cGUgPSAnOGJpdCcKICAgICBtYXhfbGluZV9sZW5ndGggPSA3OAorICAgIG1hbmdsZV9mcm9tXyA9IEZhbHNlCiAKICAgICBkZWYgaGFuZGxlX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CiAgICAgICAgICIiIkJhc2VkIG9uIHBvbGljeSwgZWl0aGVyIHJhaXNlIGRlZmVjdCBvciBjYWxsIHJlZ2lzdGVyX2RlZmVjdC4KQEAgLTI2Niw2ICsyNzIsOCBAQAogICAgIHJlcGxpY2F0ZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIHZlcnNpb24gNS4xLgogICAgICIiIgogCisgICAgbWFuZ2xlX2Zyb21fID0gVHJ1ZQorCiAgICAgZGVmIF9zYW5pdGl6ZV9oZWFkZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgogICAgICAgICAjIElmIHRoZSBoZWFkZXIgdmFsdWUgY29udGFpbnMgc3Vycm9nYXRlcywgcmV0dXJuIGEgSGVhZGVyIHVzaW5nCiAgICAgICAgICMgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0IHRvIGVuY29kZSB0aGUgYnl0ZXMgYXMgZW5jb2RlZCB3b3Jkcy4KZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9jaGFyc2V0LnB5IGIvTGliL2VtYWlsL2NoYXJzZXQucHkKaW5kZXggZTk5OTQ3Mi4uZWU1NjQwNCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2NoYXJzZXQucHkKKysrIGIvTGliL2VtYWlsL2NoYXJzZXQucHkKQEAgLTI0OSw5ICsyNDksNiBAQAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gc3RyKHNlbGYpID09IHN0cihvdGhlcikubG93ZXIoKQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCi0KICAgICBkZWYgZ2V0X2JvZHlfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29udGVudC10cmFuc2Zlci1lbmNvZGluZyB1c2VkIGZvciBib2R5IGVuY29kaW5nLgogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IGM5NWIyN2YuLmUyZTNlOTYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKIGZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogCiBOTENSRSA9IHJlLmNvbXBpbGUoJ1xyXG58XHJ8XG4nKQogTkxDUkVfYm9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pJykKQEAgLTUyLDggKzUzLDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICMgQ2h1bmtzIG9mIHRoZSBsYXN0IHBhcnRpYWwgbGluZSBwdXNoZWQgaW50byB0aGlzIG9iamVjdC4KICAgICAgICAgc2VsZi5fcGFydGlhbCA9IFtdCi0gICAgICAgICMgVGhlIGxpc3Qgb2YgZnVsbCwgcHVzaGVkIGxpbmVzLCBpbiByZXZlcnNlIG9yZGVyCi0gICAgICAgIHNlbGYuX2xpbmVzID0gW10KKyAgICAgICAgIyBBIGRlcXVlIG9mIGZ1bGwsIHB1c2hlZCBsaW5lcworICAgICAgICBzZWxmLl9saW5lcyA9IGRlcXVlKCkKICAgICAgICAgIyBUaGUgc3RhY2sgb2YgZmFsc2UtRU9GIGNoZWNraW5nIHByZWRpY2F0ZXMuCiAgICAgICAgIHNlbGYuX2VvZnN0YWNrID0gW10KICAgICAgICAgIyBBIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGhhcyBiZWVuIGNsb3NlZCBvciBub3QuCkBAIC03OCwyMSArNzksMjEgQEAKICAgICAgICAgICAgIHJldHVybiBOZWVkTW9yZURhdGEKICAgICAgICAgIyBQb3AgdGhlIGxpbmUgb2ZmIHRoZSBzdGFjayBhbmQgc2VlIGlmIGl0IG1hdGNoZXMgdGhlIGN1cnJlbnQKICAgICAgICAgIyBmYWxzZS1FT0YgcHJlZGljYXRlLgotICAgICAgICBsaW5lID0gc2VsZi5fbGluZXMucG9wKCkKKyAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVzLnBvcGxlZnQoKQogICAgICAgICAjIFJGQyAyMDQ2LCBzZWN0aW9uIDUuMS4yIHJlcXVpcmVzIHVzIHRvIHJlY29nbml6ZSBvdXRlciBsZXZlbAogICAgICAgICAjIGJvdW5kYXJpZXMgYXQgYW55IGxldmVsIG9mIGlubmVyIG5lc3RpbmcuICBEbyB0aGlzLCBidXQgYmUgc3VyZSBpdCdzCiAgICAgICAgICMgaW4gdGhlIG9yZGVyIG9mIG1vc3QgdG8gbGVhc3QgbmVzdGVkLgotICAgICAgICBmb3IgYXRlb2YgaW4gc2VsZi5fZW9mc3RhY2tbOjotMV06CisgICAgICAgIGZvciBhdGVvZiBpbiByZXZlcnNlZChzZWxmLl9lb2ZzdGFjayk6CiAgICAgICAgICAgICBpZiBhdGVvZihsaW5lKToKICAgICAgICAgICAgICAgICAjIFdlJ3JlIGF0IHRoZSBmYWxzZSBFT0YuICBCdXQgcHVzaCB0aGUgbGFzdCBsaW5lIGJhY2sgZmlyc3QuCi0gICAgICAgICAgICAgICAgc2VsZi5fbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgc2VsZi5fbGluZXMuYXBwZW5kbGVmdChsaW5lKQogICAgICAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgICByZXR1cm4gbGluZQogCiAgICAgZGVmIHVucmVhZGxpbmUoc2VsZiwgbGluZSk6CiAgICAgICAgICMgTGV0IHRoZSBjb25zdW1lciBwdXNoIGEgbGluZSBiYWNrIGludG8gdGhlIGJ1ZmZlci4KICAgICAgICAgYXNzZXJ0IGxpbmUgaXMgbm90IE5lZWRNb3JlRGF0YQotICAgICAgICBzZWxmLl9saW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgc2VsZi5fbGluZXMuYXBwZW5kbGVmdChsaW5lKQogCiAgICAgZGVmIHB1c2goc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIlB1c2ggc29tZSBuZXcgZGF0YSBpbnRvIHRoaXMgb2JqZWN0LiIiIgpAQCAtMTE5LDggKzEyMCw3IEBACiAgICAgICAgIHNlbGYucHVzaGxpbmVzKHBhcnRzKQogCiAgICAgZGVmIHB1c2hsaW5lcyhzZWxmLCBsaW5lcyk6Ci0gICAgICAgICMgUmV2ZXJzZSBhbmQgaW5zZXJ0IGF0IHRoZSBmcm9udCBvZiB0aGUgbGluZXMuCi0gICAgICAgIHNlbGYuX2xpbmVzWzowXSA9IGxpbmVzWzo6LTFdCisgICAgICAgIHNlbGYuX2xpbmVzLmV4dGVuZChsaW5lcykKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IDQ3MzU3MjEuLjExZmYxNmQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtMzIsMTYgKzMyLDE2IEBACiAgICAgIyBQdWJsaWMgaW50ZXJmYWNlCiAgICAgIwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPU5vbmUsICosCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsICosCiAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIHRoZSBnZW5lcmF0b3IgZm9yIG1lc3NhZ2UgZmxhdHRlbmluZy4KIAogICAgICAgICBvdXRmcCBpcyB0aGUgb3V0cHV0IGZpbGUtbGlrZSBvYmplY3QgZm9yIHdyaXRpbmcgdGhlIG1lc3NhZ2UgdG8uICBJdAogICAgICAgICBtdXN0IGhhdmUgYSB3cml0ZSgpIG1ldGhvZC4KIAotICAgICAgICBPcHRpb25hbCBtYW5nbGVfZnJvbV8gaXMgYSBmbGFnIHRoYXQsIHdoZW4gVHJ1ZSAodGhlIGRlZmF1bHQpLCBlc2NhcGVzCi0gICAgICAgIEZyb21fIGxpbmVzIGluIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIGJ5IHB1dHRpbmcgYSBgPicgaW4gZnJvbnQgb2YKLSAgICAgICAgdGhlbS4KKyAgICAgICAgT3B0aW9uYWwgbWFuZ2xlX2Zyb21fIGlzIGEgZmxhZyB0aGF0LCB3aGVuIFRydWUgKHRoZSBkZWZhdWx0IGlmIHBvbGljeQorICAgICAgICBpcyBub3Qgc2V0KSwgZXNjYXBlcyBGcm9tXyBsaW5lcyBpbiB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZSBieSBwdXR0aW5nCisgICAgICAgIGEgYD4nIGluIGZyb250IG9mIHRoZW0uCiAKICAgICAgICAgT3B0aW9uYWwgbWF4aGVhZGVybGVuIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZAogICAgICAgICBoZWFkZXIuICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIChpbiBjaGFyYWN0ZXJzLCB3aXRoIHRhYnMKQEAgLTU2LDYgKzU2LDkgQEAKICAgICAgICAgZmxhdHRlbiBtZXRob2QgaXMgdXNlZC4KIAogICAgICAgICAiIiIKKworICAgICAgICBpZiBtYW5nbGVfZnJvbV8gaXMgTm9uZToKKyAgICAgICAgICAgIG1hbmdsZV9mcm9tXyA9IFRydWUgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kubWFuZ2xlX2Zyb21fCiAgICAgICAgIHNlbGYuX2ZwID0gb3V0ZnAKICAgICAgICAgc2VsZi5fbWFuZ2xlX2Zyb21fID0gbWFuZ2xlX2Zyb21fCiAgICAgICAgIHNlbGYubWF4aGVhZGVybGVuID0gbWF4aGVhZGVybGVuCkBAIC00NDksNyArNDUyLDcgQEAKICAgICBMaWtlIHRoZSBHZW5lcmF0b3IgYmFzZSBjbGFzcywgZXhjZXB0IHRoYXQgbm9uLXRleHQgcGFydHMgYXJlIHN1YnN0aXR1dGVkCiAgICAgd2l0aCBhIGZvcm1hdCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJ0LgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgZm10PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj03OCwgZm10PU5vbmUpOgogICAgICAgICAiIiJMaWtlIEdlbmVyYXRvci5fX2luaXRfXygpIGV4Y2VwdCB0aGF0IGFuIGFkZGl0aW9uYWwgb3B0aW9uYWwKICAgICAgICAgYXJndW1lbnQgaXMgYWxsb3dlZC4KIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggOWM4OTU4OS4uNjgyMGVhMSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC0yNjIsOSArMjYyLDYgQEAKICAgICAgICAgIyBhcmdzIGFuZCBkbyBhbm90aGVyIGNvbXBhcmlzb24uCiAgICAgICAgIHJldHVybiBvdGhlciA9PSBzdHIoc2VsZikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYgPT0gb3RoZXIKLQogICAgIGRlZiBhcHBlbmQoc2VsZiwgcywgY2hhcnNldD1Ob25lLCBlcnJvcnM9J3N0cmljdCcpOgogICAgICAgICAiIiJBcHBlbmQgYSBzdHJpbmcgdG8gdGhlIE1JTUUgaGVhZGVyLgogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKaW5kZXggOTExYTJhZi4uNDY4Y2E5ZSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQpAQCAtODEsNyArODEsOCBAQAogICAgICAgICByZXR1cm4gbHAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJBZGRyZXNzKGRpc3BsYXlfbmFtZT17IXJ9LCB1c2VybmFtZT17IXJ9LCBkb21haW49eyFyfSkiLmZvcm1hdCgKKyAgICAgICAgcmV0dXJuICJ7fShkaXNwbGF5X25hbWU9eyFyfSwgdXNlcm5hbWU9eyFyfSwgZG9tYWluPXshcn0pIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9uYW1lLCBzZWxmLnVzZXJuYW1lLCBzZWxmLmRvbWFpbikKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtMTMyLDcgKzEzMyw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzZXMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJHcm91cChkaXNwbGF5X25hbWU9eyFyfSwgYWRkcmVzc2VzPXshcn0iLmZvcm1hdCgKKyAgICAgICAgcmV0dXJuICJ7fShkaXNwbGF5X25hbWU9eyFyfSwgYWRkcmVzc2VzPXshcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9uYW1lLCBzZWxmLmFkZHJlc3NlcykKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWVzc2FnZS5weQppbmRleCAyZjM3ZGJiLi5hODkyMDEyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWVzc2FnZS5weQpAQCAtOTI3LDIwICs5MjcsMjEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBbcGFydC5nZXRfY29udGVudF9jaGFyc2V0KGZhaWxvYmopIGZvciBwYXJ0IGluIHNlbGYud2FsaygpXQogCisgICAgZGVmIGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50LWRpc3Bvc2l0aW9uIGlmIGl0IGV4aXN0cywgb3IgTm9uZS4KKworICAgICAgICBUaGUgcmV0dXJuIHZhbHVlcyBjYW4gYmUgZWl0aGVyICdpbmxpbmUnLCAnYXR0YWNobWVudCcgb3IgTm9uZQorICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHJmYzIxODMuCisgICAgICAgICIiIgorICAgICAgICB2YWx1ZSA9IHNlbGYuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJykKKyAgICAgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGNfZCA9IF9zcGxpdHBhcmFtKHZhbHVlKVswXS5sb3dlcigpCisgICAgICAgIHJldHVybiBjX2QKKwogICAgICMgSS5lLiBkZWYgd2FsayhzZWxmKTogLi4uCiAgICAgZnJvbSBlbWFpbC5pdGVyYXRvcnMgaW1wb3J0IHdhbGsKIAotIyBYWFggU3VwcG9ydCBmb3IgdGVtcG9yYXJ5IGRlcHJlY2F0aW9uIGhhY2sgZm9yIGlzX2F0dGFjaG1lbnQgcHJvcGVydHkuCi1jbGFzcyBfSXNBdHRhY2htZW50OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQotICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKLSAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgIHdhcm5pbmdzLndhcm4oImlzX2F0dGFjaG1lbnQgd2lsbCBiZSBhIG1ldGhvZCwgbm90IGEgcHJvcGVydHksIGluIDMuNSIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MykKLSAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKIAogY2xhc3MgTUlNRVBhcnQoTWVzc2FnZSk6CiAKQEAgLTk1MCwxMiArOTUxLDkgQEAKICAgICAgICAgICAgIHBvbGljeSA9IGRlZmF1bHQKICAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3kpCiAKLSAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgY19kID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQotICAgICAgICByZXN1bHQgPSBGYWxzZSBpZiBjX2QgaXMgTm9uZSBlbHNlIGNfZC5jb250ZW50X2Rpc3Bvc2l0aW9uID09ICdhdHRhY2htZW50JwotICAgICAgICAjIFhYWCB0cmFuc2l0aW9uYWwgaGFjayB0byByYWlzZSBkZXByZWNhdGlvbiBpZiBub3QgY2FsbGVkLgotICAgICAgICByZXR1cm4gX0lzQXR0YWNobWVudChyZXN1bHQpCisgICAgICAgIHJldHVybiBGYWxzZSBpZiBjX2QgaXMgTm9uZSBlbHNlIGNfZC5jb250ZW50X2Rpc3Bvc2l0aW9uID09ICdhdHRhY2htZW50JwogCiAgICAgZGVmIF9maW5kX2JvZHkoc2VsZiwgcGFydCwgcHJlZmVyZW5jZWxpc3QpOgogICAgICAgICBpZiBwYXJ0LmlzX2F0dGFjaG1lbnQoKToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CmluZGV4IGVjMThiODUuLjQ3OTkyOGUgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQpAQCAtNiw2ICs2LDcgQEAKIAogX19hbGxfXyA9IFsnTUlNRVRleHQnXQogCitmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKIAogCkBAIC0zNCw2ICszNSw4IEBACiAgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXMtYXNjaWknCiAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3V0Zi04JworICAgICAgICBpZiBpc2luc3RhbmNlKF9jaGFyc2V0LCBDaGFyc2V0KToKKyAgICAgICAgICAgIF9jaGFyc2V0ID0gc3RyKF9jaGFyc2V0KQogCiAgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IF9jaGFyc2V0fSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wb2xpY3kucHkgYi9MaWIvZW1haWwvcG9saWN5LnB5CmluZGV4IGYwYjIwZjQuLjZhYzY0YTUgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9wb2xpY3kucHkKKysrIGIvTGliL2VtYWlsL3BvbGljeS5weQpAQCAtMzUsNiArMzUsMTMgQEAKICAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0bwogICAgIGFsbCBQb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKIAorICAgIHV0ZjggICAgICAgICAgICAgICAgLS0gaWYgRmFsc2UgKHRoZSBkZWZhdWx0KSBtZXNzYWdlIGhlYWRlcnMgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZCBhcyBBU0NJSSwgdXNpbmcgZW5jb2RlZCB3b3JkcyB0byBlbmNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc291cmNlIHN0cmluZ3MuICBJZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgdGhlIG1lc3NhZ2UgaGVhZGVycyB3aWxsIGJlIHNlcmlhbGl6ZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjggYW5kIHdpbGwgbm90IGNvbnRhaW4gZW5jb2RlZCB3b3JkcyAoc2VlIFJGQworICAgICAgICAgICAgICAgICAgICAgICAgICAgNjUzMiBmb3IgbW9yZSBvbiB0aGlzIHNlcmlhbGl6YXRpb24gZm9ybWF0KS4KKwogICAgIHJlZm9sZF9zb3VyY2UgICAgICAgLS0gaWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgTWVzc2FnZSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWUgZnJvbSB0aGUgcGFyc2luZyBvZiBzb21lIHNvdXJjZSwgdGhpcyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkCkBAIC03Miw2ICs3OSw3IEBACiAKICAgICAiIiIKIAorICAgIHV0ZjggPSBGYWxzZQogICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKICAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKICAgICBjb250ZW50X21hbmFnZXIgPSByYXdfZGF0YV9tYW5hZ2VyCkBAIC0xNzUsOSArMTgzLDEzIEBACiAgICAgICAgIHJlZm9sZF9oZWFkZXIgc2V0dGluZywgc2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgd2hldGhlciB0aGUgYmluYXJ5CiAgICAgICAgIGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KIAorICAgICAgICBJZiB1dGY4IGlzIHRydWUsIGhlYWRlcnMgYXJlIGVuY29kZWQgdG8gdXRmOCwgb3RoZXJ3aXNlIHRvIGFzY2lpIHdpdGgKKyAgICAgICAgbm9uLUFTQ0lJIHVuaWNvZGUgcmVuZGVyZWQgYXMgZW5jb2RlZCB3b3Jkcy4KKwogICAgICAgICAiIiIKICAgICAgICAgZm9sZGVkID0gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1zZWxmLmN0ZV90eXBlPT0nN2JpdCcpCi0gICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICBjaGFyc2V0ID0gJ3V0ZjgnIGlmIHNlbGYudXRmOCBlbHNlICdhc2NpaScKKyAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoY2hhcnNldCwgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAKICAgICBkZWYgX2ZvbGQoc2VsZiwgbmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9RmFsc2UpOgogICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpOgpAQCAtMTk5LDMgKzIxMSw0IEBACiBzdHJpY3QgPSBkZWZhdWx0LmNsb25lKHJhaXNlX29uX2RlZmVjdD1UcnVlKQogU01UUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicpCiBIVFRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJywgbWF4X2xpbmVfbGVuZ3RoPU5vbmUpCitTTVRQVVRGOCA9IFNNVFAuY2xvbmUodXRmOD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5IGIvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CmluZGV4IDRjYmFhZGUuLjY3YzgyOGQgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQorKysgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKQEAgLTQxMiw2ICs0MTIsMTEgQEAKICAgICAjIGtvaThfciBjb2RlYwogICAgICdjc2tvaThyJyAgICAgICAgICAgIDogJ2tvaThfcicsCiAKKyAgICAjIGt6MTA0OCBjb2RlYworICAgICdrel8xMDQ4JyAgICAgICAgICAgOiAna3oxMDQ4JywKKyAgICAncmsxMDQ4JyAgICAgICAgICAgIDogJ2t6MTA0OCcsCisgICAgJ3N0cmsxMDQ4XzIwMDInICAgICA6ICdrejEwNDgnLAorCiAgICAgIyBsYXRpbl8xIGNvZGVjCiAgICAgIwogICAgICMgTm90ZSB0aGF0IHRoZSBsYXRpbl8xIGNvZGVjIGlzIGltcGxlbWVudGVkIGludGVybmFsbHkgaW4gQyBhbmQgYQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5IGIvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5CmluZGV4IDI4N2ViODcuLjk1Y2IyYWUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQorKysgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKQEAgLTExLDIwICsxMSwyMyBAQAogIyMjIENvZGVjIEFQSXMKIAogZW5jb2RlID0gZnVuY3Rvb2xzLnBhcnRpYWwoY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDY1MDAxKQotZGVjb2RlID0gZnVuY3Rvb2xzLnBhcnRpYWwoY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDY1MDAxKQorX2RlY29kZSA9IGZ1bmN0b29scy5wYXJ0aWFsKGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA2NTAwMSkKKworZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKKyAgICByZXR1cm4gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoNjUwMDEsIGlucHV0LCBlcnJvcnMsIFRydWUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CiAgICAgICAgIHJldHVybiBlbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKLSAgICBfYnVmZmVyX2RlY29kZSA9IGRlY29kZQorICAgIF9idWZmZXJfZGVjb2RlID0gX2RlY29kZQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgZW5jb2RlID0gZW5jb2RlCiAKIGNsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKLSAgICBkZWNvZGUgPSBkZWNvZGUKKyAgICBkZWNvZGUgPSBfZGVjb2RlCiAKICMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQogCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2tvaThfdC5weSBiL0xpYi9lbmNvZGluZ3Mva29pOF90LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NDE1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW5jb2RpbmdzL2tvaThfdC5weQpAQCAtMCwwICsxLDMwOCBAQAorIiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBrb2k4X3QKKyIiIgorIyBodHRwOi8vcnUud2lraXBlZGlhLm9yZy93aWtpL9Ca0J7QmC04CisjIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5hcHBsZS5jb20vc291cmNlL2xpYmljb252L2xpYmljb252LTQvbGliaWNvbnYvdGVzdHMvS09JOC1ULlRYVAorCitpbXBvcnQgY29kZWNzCisKKyMjIyBDb2RlYyBBUElzCisKK2NsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CisKKyAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCisKKyAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCisKK2NsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCisKK2NsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBwYXNzCisKK2NsYXNzIFN0cmVhbVJlYWRlcihDb2RlYyxjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBwYXNzCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0na29pOC10JywKKyAgICAgICAgZW5jb2RlPUNvZGVjKCkuZW5jb2RlLAorICAgICAgICBkZWNvZGU9Q29kZWMoKS5kZWNvZGUsCisgICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCisgICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCisgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCisgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCisgICAgKQorCisKKyMjIyBEZWNvZGluZyBUYWJsZQorCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+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+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x1MDQ5YicgICAjICAweDgwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OTMnICAgIyAgMHg4MSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCisgICAgJ1x1MjAxYScgICAjICAweDgyIC0+IFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTA0OTInICAgIyAgMHg4MyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUyMDFlJyAgICMgIDB4ODQgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUyMDIwJyAgICMgIDB4ODYgLT4gREFHR0VSCisgICAgJ1x1MjAyMScgICAjICAweDg3IC0+IERPVUJMRSBEQUdHRVIKKyAgICAnXHVmZmZlJyAgICMgIDB4ODggLT4gVU5ERUZJTkVECisgICAgJ1x1MjAzMCcgICAjICAweDg5IC0+IFBFUiBNSUxMRSBTSUdOCisgICAgJ1x1MDRiMycgICAjICAweDhBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTIwMzknICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTA0YjInICAgIyAgMHg4QyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YjcnICAgIyAgMHg4RCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiNicgICAjICAweDhFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdWZmZmUnICAgIyAgMHg4RiAtPiBVTkRFRklORUQKKyAgICAnXHUwNDlhJyAgICMgIDB4OTAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjInICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICisgICAgJ1x1ZmZmZScgICAjICAweDk4IC0+IFVOREVGSU5FRAorICAgICdcdTIxMjInICAgIyAgMHg5OSAtPiBUUkFERSBNQVJLIFNJR04KKyAgICAnXHVmZmZlJyAgICMgIDB4OUEgLT4gVU5ERUZJTkVECisgICAgJ1x1MjAzYScgICAjICAweDlCIC0+IFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdWZmZmUnICAgIyAgMHg5QyAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4OUQgLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweDlFIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHg5RiAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4QTAgLT4gVU5ERUZJTkVECisgICAgJ1x1MDRlZicgICAjICAweEExIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x1MDRlZScgICAjICAweEEyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHUwNDUxJyAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCisgICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KKyAgICAnXHUwNGUzJyAgICMgIDB4QTUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgorICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHVmZmZlJyAgICMgIDB4QTggLT4gVU5ERUZJTkVECisgICAgJ1x1ZmZmZScgICAjICAweEE5IC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHhBQSAtPiBVTkRFRklORUQKKyAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KKyAgICAnXHhhZCcgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KKyAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x1ZmZmZScgICAjICAweEFGIC0+IFVOREVGSU5FRAorICAgICdceGIwJyAgICAgIyAgMHhCMCAtPiBERUdSRUUgU0lHTgorICAgICdceGIxJyAgICAgIyAgMHhCMSAtPiBQTFVTLU1JTlVTIFNJR04KKyAgICAnXHhiMicgICAgICMgIDB4QjIgLT4gU1VQRVJTQ1JJUFQgVFdPCisgICAgJ1x1MDQwMScgICAjICAweEIzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCisgICAgJ1x1ZmZmZScgICAjICAweEI0IC0+IFVOREVGSU5FRAorICAgICdcdTA0ZTInICAgIyAgMHhCNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x4YjYnICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgIyAgMHhCNyAtPiBNSURETEUgRE9UCisgICAgJ1x1ZmZmZScgICAjICAweEI4IC0+IFVOREVGSU5FRAorICAgICdcdTIxMTYnICAgIyAgMHhCOSAtPiBOVU1FUk8gU0lHTgorICAgICdcdWZmZmUnICAgIyAgMHhCQSAtPiBVTkRFRklORUQKKyAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1ZmZmZScgICAjICAweEJDIC0+IFVOREVGSU5FRAorICAgICdcdWZmZmUnICAgIyAgMHhCRCAtPiBVTkRFRklORUQKKyAgICAnXHVmZmZlJyAgICMgIDB4QkUgLT4gVU5ERUZJTkVECisgICAgJ1x4YTknICAgICAjICAweEJGIC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x1MDQ0ZScgICAjICAweEMwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQorICAgICdcdTA0MzAnICAgIyAgMHhDMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICdcdTA0MzEnICAgIyAgMHhDMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAnXHUwNDQ2JyAgICMgIDB4QzMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQorICAgICdcdTA0MzQnICAgIyAgMHhDNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKKyAgICAnXHUwNDM1JyAgICMgIDB4QzUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisgICAgJ1x1MDQ0NCcgICAjICAweEM2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgICdcdTA0MzMnICAgIyAgMHhDNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgJ1x1MDQ0NScgICAjICAweEM4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQorICAgICdcdTA0MzgnICAgIyAgMHhDOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgICdcdTA0MzknICAgIyAgMHhDQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICdcdTA0M2EnICAgIyAgMHhDQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAnXHUwNDNiJyAgICMgIDB4Q0MgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgJ1x1MDQzYycgICAjICAweENEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICdcdTA0M2QnICAgIyAgMHhDRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICAnXHUwNDNlJyAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAnXHUwNDNmJyAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCisgICAgJ1x1MDQ0ZicgICAjICAweEQxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZQQorICAgICdcdTA0NDAnICAgIyAgMHhEMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAnXHUwNDQxJyAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgJ1x1MDQ0MicgICAjICAweEQ0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICdcdTA0NDMnICAgIyAgMHhENSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICdcdTA0MzYnICAgIyAgMHhENiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCisgICAgJ1x1MDQzMicgICAjICAweEQ3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICdcdTA0NGMnICAgIyAgMHhEOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQ0YicgICAjICAweEQ5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQzNycgICAjICAweERBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAgICdcdTA0NDgnICAgIyAgMHhEQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCisgICAgJ1x1MDQ0ZCcgICAjICAweERDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFCisgICAgJ1x1MDQ0OScgICAjICAweEREIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQorICAgICdcdTA0NDcnICAgIyAgMHhERSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQ0YScgICAjICAweERGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDJlJyAgICMgIDB4RTAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKKyAgICAnXHUwNDEwJyAgICMgIDB4RTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQorICAgICdcdTA0MTEnICAgIyAgMHhFMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorICAgICdcdTA0MjYnICAgIyAgMHhFMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICAnXHUwNDE0JyAgICMgIDB4RTQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKyAgICAnXHUwNDE1JyAgICMgIDB4RTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKKyAgICAnXHUwNDI0JyAgICMgIDB4RTYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKKyAgICAnXHUwNDEzJyAgICMgIDB4RTcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisgICAgJ1x1MDQyNScgICAjICAweEU4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisgICAgJ1x1MDQxOCcgICAjICAweEU5IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKyAgICAnXHUwNDE5JyAgICMgIDB4RUEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQorICAgICdcdTA0MWEnICAgIyAgMHhFQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQorICAgICdcdTA0MWInICAgIyAgMHhFQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAorICAgICdcdTA0MWMnICAgIyAgMHhFRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQorICAgICdcdTA0MWQnICAgIyAgMHhFRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgorICAgICdcdTA0MWUnICAgIyAgMHhFRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1x1MDQxZicgICAjICAweEYwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCisgICAgJ1x1MDQyZicgICAjICAweEYxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCisgICAgJ1x1MDQyMCcgICAjICAweEYyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCisgICAgJ1x1MDQyMScgICAjICAweEYzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCisgICAgJ1x1MDQyMicgICAjICAweEY0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCisgICAgJ1x1MDQyMycgICAjICAweEY1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyAgICAnXHUwNDE2JyAgICMgIDB4RjYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCisgICAgJ1x1MDQxMicgICAjICAweEY3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCisgICAgJ1x1MDQyYycgICAjICAweEY4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0MmInICAgIyAgMHhGOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQxNycgICAjICAweEZBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisgICAgJ1x1MDQyOCcgICAjICAweEZCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQorICAgICdcdTA0MmQnICAgIyAgMHhGQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgJ1x1MDQyOScgICAjICAweEZEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQyNycgICAjICAweEZFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorICAgICdcdTA0MmEnICAgIyAgMHhGRiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KKykKKworIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3Mva3oxMDQ4LnB5IGIvTGliL2VuY29kaW5ncy9rejEwNDgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEyYWVlNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3Mva3oxMDQ4LnB5CkBAIC0wLDAgKzEsMzA3IEBACisiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIGt6MTA0OCBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSVNDL0taMTA0OC5UWFQnIHdpdGggZ2VuY29kZWMucHkuCisKKyIiIiMiCisKK2ltcG9ydCBjb2RlY3MKKworIyMjIENvZGVjIEFQSXMKKworY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKKworICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsIGVycm9ycywgZW5jb2RpbmdfdGFibGUpCisKKyAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LCBlcnJvcnMsIGRlY29kaW5nX3RhYmxlKQorCitjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CisgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycywgZW5jb2RpbmdfdGFibGUpWzBdCisKK2NsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzLCBkZWNvZGluZ190YWJsZSlbMF0KKworY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLCBjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBwYXNzCisKK2NsYXNzIFN0cmVhbVJlYWRlcihDb2RlYywgY29kZWNzLlN0cmVhbVJlYWRlcik6CisgICAgcGFzcworCisjIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKKworZGVmIGdldHJlZ2VudHJ5KCk6CisgICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCisgICAgICAgIG5hbWU9J2t6MTA0OCcsCisgICAgICAgIGVuY29kZT1Db2RlYygpLmVuY29kZSwKKyAgICAgICAgZGVjb2RlPUNvZGVjKCkuZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKKworCisjIyMgRGVjb2RpbmcgVGFibGUKKworZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgorICAgICdceDA1JyAgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICAjICAweDA3IC0+IEJFTEwKKyAgICAnXHgwOCcgICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKKyAgICAnXHgwYicgICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCisgICAgJ1x4MGUnICAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCisgICAgJ1x4MTEnICAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKKyAgICAnXHgxNCcgICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCisgICAgJ1x4MTcnICAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KKyAgICAnXHgxYScgICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKKyAgICAnXHgxZCcgICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKKyAgICAnICcgICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSworICAgICcjJyAgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KKyAgICAnJicgICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUworICAgICcpJyAgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KKyAgICAnLCcgICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAorICAgICcvJyAgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCisgICAgJzInICAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCisgICAgJzUnICAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCisgICAgJzgnICAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgICMgIDB4M0EgLT4gQ09MT04KKyAgICAnOycgICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCisgICAgJz4nICAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAorICAgICdBJyAgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworICAgICdEJyAgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorICAgICdHJyAgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICdKJyAgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorICAgICdNJyAgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworICAgICdQJyAgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorICAgICdTJyAgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorICAgICdWJyAgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorICAgICdZJyAgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAorICAgICdcXCcgICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXycgICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCisgICAgJ2InICAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECisgICAgJ2UnICAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCisgICAgJ2gnICAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCisgICAgJ2snICAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCisgICAgJ24nICAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCisgICAgJ3EnICAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCisgICAgJ3QnICAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCisgICAgJ3cnICAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCisgICAgJ3onICAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCisgICAgJ30nICAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x1MDQwMicgICAgIyAgMHg4MCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkUKKyAgICAnXHUwNDAzJyAgICAjICAweDgxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRQorICAgICdcdTIwMWEnICAgICMgIDB4ODIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ1MycgICAgIyAgMHg4MyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0pFCisgICAgJ1x1MjAxZScgICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICAjICAweDg1IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHUyMDIwJyAgICAjICAweDg2IC0+IERBR0dFUgorICAgICdcdTIwMjEnICAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgorICAgICdcdTIwYWMnICAgICMgIDB4ODggLT4gRVVSTyBTSUdOCisgICAgJ1x1MjAzMCcgICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgorICAgICdcdTA0MDknICAgICMgIDB4OEEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTEpFCisgICAgJ1x1MjAzOScgICAgIyAgMHg4QiAtPiBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTA0MGEnICAgICMgIDB4OEMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFCisgICAgJ1x1MDQ5YScgICAgIyAgMHg4RCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YmEnICAgICMgIDB4OEUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQQorICAgICdcdTA0MGYnICAgICMgIDB4OEYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpIRQorICAgICdcdTA0NTInICAgICMgIDB4OTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERKRQorICAgICdcdTIwMTgnICAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWMnICAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjInICAgICMgIDB4OTUgLT4gQlVMTEVUCisgICAgJ1x1MjAxMycgICAgIyAgMHg5NiAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAgIyAgMHg5NyAtPiBFTSBEQVNICisgICAgJ1x1ZmZmZScgICAgIyAgMHg5OCAtPiBVTkRFRklORUQKKyAgICAnXHUyMTIyJyAgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgorICAgICdcdTA0NTknICAgICMgIDB4OUEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRQorICAgICdcdTIwM2EnICAgICMgIDB4OUIgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDQ1YScgICAgIyAgMHg5QyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgTkpFCisgICAgJ1x1MDQ5YicgICAgIyAgMHg5RCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGJiJyAgICAjICAweDlFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCisgICAgJ1x1MDQ1ZicgICAgIyAgMHg5RiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRQorICAgICdceGEwJyAgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHUwNGIwJyAgICAjICAweEExIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNGIxJyAgICAjICAweEEyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCisgICAgJ1x1MDRkOCcgICAgIyAgMHhBMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQorICAgICdceGE0JyAgICAgICMgIDB4QTQgLT4gQ1VSUkVOQ1kgU0lHTgorICAgICdcdTA0ZTgnICAgICMgIDB4QTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE8KKyAgICAnXHhhNicgICAgICAjICAweEE2IC0+IEJST0tFTiBCQVIKKyAgICAnXHhhNycgICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTA0MDEnICAgICMgIDB4QTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KKyAgICAnXHhhOScgICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x1MDQ5MicgICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHhhYicgICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YWMnICAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgorICAgICdceGFkJyAgICAgICMgIDB4QUQgLT4gU09GVCBIWVBIRU4KKyAgICAnXHhhZScgICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdcdTA0YWUnICAgICMgIDB4QUYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVQorICAgICdceGIwJyAgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KKyAgICAnXHhiMScgICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgorICAgICdcdTA0MDYnICAgICMgIDB4QjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgJ1x1MDQ1NicgICAgIyAgMHhCMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgJ1x1MDRlOScgICAgIyAgMHhCNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8KKyAgICAnXHhiNScgICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KKyAgICAnXHhiNicgICAgICAjICAweEI2IC0+IFBJTENST1cgU0lHTgorICAgICdceGI3JyAgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAorICAgICdcdTA0NTEnICAgICMgIDB4QjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCisgICAgJ1x1MjExNicgICAgIyAgMHhCOSAtPiBOVU1FUk8gU0lHTgorICAgICdcdTA0OTMnICAgICMgIDB4QkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdceGJiJyAgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDRkOScgICAgIyAgMHhCQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EKKyAgICAnXHUwNGEyJyAgICAjICAweEJEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhMycgICAgIyAgMHhCRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFmJyAgICAjICAweEJGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x1MDQxMCcgICAgIyAgMHhDMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCisgICAgJ1x1MDQxMScgICAgIyAgMHhDMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorICAgICdcdTA0MTInICAgICMgIDB4QzIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkUKKyAgICAnXHUwNDEzJyAgICAjICAweEMzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQorICAgICdcdTA0MTQnICAgICMgIDB4QzQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKyAgICAnXHUwNDE1JyAgICAjICAweEM1IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCisgICAgJ1x1MDQxNicgICAgIyAgMHhDNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKKyAgICAnXHUwNDE3JyAgICAjICAweEM3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisgICAgJ1x1MDQxOCcgICAgIyAgMHhDOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCisgICAgJ1x1MDQxOScgICAgIyAgMHhDOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQxYScgICAgIyAgMHhDQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQorICAgICdcdTA0MWInICAgICMgIDB4Q0IgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKyAgICAnXHUwNDFjJyAgICAjICAweENDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCisgICAgJ1x1MDQxZCcgICAgIyAgMHhDRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgorICAgICdcdTA0MWUnICAgICMgIDB4Q0UgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTworICAgICdcdTA0MWYnICAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKKyAgICAnXHUwNDIwJyAgICAjICAweEQwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCisgICAgJ1x1MDQyMScgICAgIyAgMHhEMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworICAgICdcdTA0MjInICAgICMgIDB4RDIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKKyAgICAnXHUwNDIzJyAgICAjICAweEQzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyAgICAnXHUwNDI0JyAgICAjICAweEQ0IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVGCisgICAgJ1x1MDQyNScgICAgIyAgMHhENSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQorICAgICdcdTA0MjYnICAgICMgIDB4RDYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCisgICAgJ1x1MDQyNycgICAgIyAgMHhENyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUKKyAgICAnXHUwNDI4JyAgICAjICAweEQ4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQorICAgICdcdTA0MjknICAgICMgIDB4RDkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDJhJyAgICAjICAweERBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTgorICAgICdcdTA0MmInICAgICMgIDB4REIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQorICAgICdcdTA0MmMnICAgICMgIDB4REMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQyZCcgICAgIyAgMHhERCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFCisgICAgJ1x1MDQyZScgICAgIyAgMHhERSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQorICAgICdcdTA0MmYnICAgICMgIDB4REYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKKyAgICAnXHUwNDMwJyAgICAjICAweEUwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBBCisgICAgJ1x1MDQzMScgICAgIyAgMHhFMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAnXHUwNDMyJyAgICAjICAweEUyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICdcdTA0MzMnICAgICMgIDB4RTMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRQorICAgICdcdTA0MzQnICAgICMgIDB4RTQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCisgICAgJ1x1MDQzNScgICAgIyAgMHhFNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAnXHUwNDM2JyAgICAjICAweEU2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyAgICAnXHUwNDM3JyAgICAjICAweEU3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAgICdcdTA0MzgnICAgICMgIDB4RTggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICAnXHUwNDM5JyAgICAjICAweEU5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQzYScgICAgIyAgMHhFQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAnXHUwNDNiJyAgICAjICAweEVCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICdcdTA0M2MnICAgICMgIDB4RUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCisgICAgJ1x1MDQzZCcgICAgIyAgMHhFRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICAnXHUwNDNlJyAgICAjICAweEVFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgJ1x1MDQzZicgICAgIyAgMHhFRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUKKyAgICAnXHUwNDQwJyAgICAjICAweEYwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICdcdTA0NDEnICAgICMgIDB4RjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgJ1x1MDQ0MicgICAgIyAgMHhGMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKKyAgICAnXHUwNDQzJyAgICAjICAweEYzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgJ1x1MDQ0NCcgICAgIyAgMHhGNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKKyAgICAnXHUwNDQ1JyAgICAjICAweEY1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQQorICAgICdcdTA0NDYnICAgICMgIDB4RjYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQorICAgICdcdTA0NDcnICAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQorICAgICdcdTA0NDgnICAgICMgIDB4RjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQQorICAgICdcdTA0NDknICAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQ0YScgICAgIyAgMHhGQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCisgICAgJ1x1MDQ0YicgICAgIyAgMHhGQiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQorICAgICdcdTA0NGMnICAgICMgIDB4RkMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0NGQnICAgICMgIDB4RkQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKKyAgICAnXHUwNDRlJyAgICAjICAweEZFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZVQorICAgICdcdTA0NGYnICAgICMgIDB4RkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCispCisKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGUgPSBjb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbnVtLnB5IGIvTGliL2VudW0ucHkKaW5kZXggM2NkM2RmOC4uYzI4ZjM0NSAxMDA2NDQKLS0tIGEvTGliL2VudW0ucHkKKysrIGIvTGliL2VudW0ucHkKQEAgLTEwNiwxMiArMTA2LDIwIEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVudW0gbWVtYmVyIG5hbWU6IHswfScuZm9ybWF0KAogICAgICAgICAgICAgICAgICcsJy5qb2luKGludmFsaWRfbmFtZXMpKSkKIAorICAgICAgICAjIGNyZWF0ZSBhIGRlZmF1bHQgZG9jc3RyaW5nIGlmIG9uZSBoYXMgbm90IGJlZW4gcHJvdmlkZWQKKyAgICAgICAgaWYgJ19fZG9jX18nIG5vdCBpbiBjbGFzc2RpY3Q6CisgICAgICAgICAgICBjbGFzc2RpY3RbJ19fZG9jX18nXSA9ICdBbiBlbnVtZXJhdGlvbi4nCisKICAgICAgICAgIyBjcmVhdGUgb3VyIG5ldyBFbnVtIHR5cGUKICAgICAgICAgZW51bV9jbGFzcyA9IHN1cGVyKCkuX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QpCiAgICAgICAgIGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc18gPSBbXSAgICAgICAgICAgICAgICMgbmFtZXMgaW4gZGVmaW5pdGlvbiBvcmRlcgogICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfbWFwXyA9IE9yZGVyZWREaWN0KCkgICAgICAjIG5hbWUtPnZhbHVlIG1hcAogICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfdHlwZV8gPSBtZW1iZXJfdHlwZQogCisgICAgICAgICMgc2F2ZSBhdHRyaWJ1dGVzIGZyb20gc3VwZXIgY2xhc3NlcyBzbyB3ZSBrbm93IGlmIHdlIGNhbiB0YWtlCisgICAgICAgICMgdGhlIHNob3J0Y3V0IG9mIHN0b3JpbmcgbWVtYmVycyBpbiB0aGUgY2xhc3MgZGljdAorICAgICAgICBiYXNlX2F0dHJpYnV0ZXMgPSB7YSBmb3IgYiBpbiBiYXNlcyBmb3IgYSBpbiBiLl9fZGljdF9ffQorCiAgICAgICAgICMgUmV2ZXJzZSB2YWx1ZS0+bmFtZSBtYXAgZm9yIGhhc2hhYmxlIHZhbHVlcy4KICAgICAgICAgZW51bV9jbGFzcy5fdmFsdWUybWVtYmVyX21hcF8gPSB7fQogCkBAIC0xNjUsNiArMTczLDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgQWxpYXNlcyBkb24ndCBhcHBlYXIgaW4gbWVtYmVyIG5hbWVzIChvbmx5IGluIF9fbWVtYmVyc19fKS4KICAgICAgICAgICAgICAgICBlbnVtX2NsYXNzLl9tZW1iZXJfbmFtZXNfLmFwcGVuZChtZW1iZXJfbmFtZSkKKyAgICAgICAgICAgICMgcGVyZm9ybWFuY2UgYm9vc3QgZm9yIGFueSBtZW1iZXIgdGhhdCB3b3VsZCBub3Qgc2hhZG93CisgICAgICAgICAgICAjIGEgRHluYW1pY0NsYXNzQXR0cmlidXRlCisgICAgICAgICAgICBpZiBtZW1iZXJfbmFtZSBub3QgaW4gYmFzZV9hdHRyaWJ1dGVzOgorICAgICAgICAgICAgICAgIHNldGF0dHIoZW51bV9jbGFzcywgbWVtYmVyX25hbWUsIGVudW1fbWVtYmVyKQorICAgICAgICAgICAgIyBub3cgYWRkIHRvIF9tZW1iZXJfbWFwXwogICAgICAgICAgICAgZW51bV9jbGFzcy5fbWVtYmVyX21hcF9bbWVtYmVyX25hbWVdID0gZW51bV9tZW1iZXIKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAjIFRoaXMgbWF5IGZhaWwgaWYgdmFsdWUgaXMgbm90IGhhc2hhYmxlLiBXZSBjYW4ndCBhZGQgdGhlIHZhbHVlCkBAIC0xOTMsNyArMjA2LDcgQEAKICAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfXyA9IEVudW0uX19uZXdfXwogICAgICAgICByZXR1cm4gZW51bV9jbGFzcwogCi0gICAgZGVmIF9fY2FsbF9fKGNscywgdmFsdWUsIG5hbWVzPU5vbmUsICosIG1vZHVsZT1Ob25lLCBxdWFsbmFtZT1Ob25lLCB0eXBlPU5vbmUpOgorICAgIGRlZiBfX2NhbGxfXyhjbHMsIHZhbHVlLCBuYW1lcz1Ob25lLCAqLCBtb2R1bGU9Tm9uZSwgcXVhbG5hbWU9Tm9uZSwgdHlwZT1Ob25lLCBzdGFydD0xKToKICAgICAgICAgIiIiRWl0aGVyIHJldHVybnMgYW4gZXhpc3RpbmcgbWVtYmVyLCBvciBjcmVhdGVzIGEgbmV3IGVudW0gY2xhc3MuCiAKICAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBib3RoIHdoZW4gYW4gZW51bSBjbGFzcyBpcyBnaXZlbiBhIHZhbHVlIHRvIG1hdGNoCkBAIC0yMDUsNyArMjE4LDcgQEAKICAgICAgICAgYHZhbHVlYCB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSBuZXcgY2xhc3MuCiAKICAgICAgICAgYG5hbWVzYCBzaG91bGQgYmUgZWl0aGVyIGEgc3RyaW5nIG9mIHdoaXRlLXNwYWNlL2NvbW1hIGRlbGltaXRlZCBuYW1lcwotICAgICAgICAodmFsdWVzIHdpbGwgc3RhcnQgYXQgMSksIG9yIGFuIGl0ZXJhdG9yL21hcHBpbmcgb2YgbmFtZSwgdmFsdWUgcGFpcnMuCisgICAgICAgICh2YWx1ZXMgd2lsbCBzdGFydCBhdCBgc3RhcnRgKSwgb3IgYW4gaXRlcmF0b3IvbWFwcGluZyBvZiBuYW1lLCB2YWx1ZSBwYWlycy4KIAogICAgICAgICBgbW9kdWxlYCBzaG91bGQgYmUgc2V0IHRvIHRoZSBtb2R1bGUgdGhpcyBjbGFzcyBpcyBiZWluZyBjcmVhdGVkIGluOwogICAgICAgICBpZiBpdCBpcyBub3Qgc2V0LCBhbiBhdHRlbXB0IHRvIGZpbmQgdGhhdCBtb2R1bGUgd2lsbCBiZSBtYWRlLCBidXQgaWYKQEAgLTIyMSw3ICsyMzQsNyBAQAogICAgICAgICBpZiBuYW1lcyBpcyBOb25lOiAgIyBzaW1wbGUgdmFsdWUgbG9va3VwCiAgICAgICAgICAgICByZXR1cm4gY2xzLl9fbmV3X18oY2xzLCB2YWx1ZSkKICAgICAgICAgIyBvdGhlcndpc2UsIGZ1bmN0aW9uYWwgQVBJOiB3ZSdyZSBjcmVhdGluZyBhIG5ldyBFbnVtIHR5cGUKLSAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlXyh2YWx1ZSwgbmFtZXMsIG1vZHVsZT1tb2R1bGUsIHF1YWxuYW1lPXF1YWxuYW1lLCB0eXBlPXR5cGUpCisgICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV8odmFsdWUsIG5hbWVzLCBtb2R1bGU9bW9kdWxlLCBxdWFsbmFtZT1xdWFsbmFtZSwgdHlwZT10eXBlLCBzdGFydD1zdGFydCkKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oY2xzLCBtZW1iZXIpOgogICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShtZW1iZXIsIGNscykgYW5kIG1lbWJlci5fbmFtZV8gaW4gY2xzLl9tZW1iZXJfbWFwXwpAQCAtMjkyLDE2ICszMDUsMTYgQEAKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdDYW5ub3QgcmVhc3NpZ24gbWVtYmVycy4nKQogICAgICAgICBzdXBlcigpLl9fc2V0YXR0cl9fKG5hbWUsIHZhbHVlKQogCi0gICAgZGVmIF9jcmVhdGVfKGNscywgY2xhc3NfbmFtZSwgbmFtZXM9Tm9uZSwgKiwgbW9kdWxlPU5vbmUsIHF1YWxuYW1lPU5vbmUsIHR5cGU9Tm9uZSk6CisgICAgZGVmIF9jcmVhdGVfKGNscywgY2xhc3NfbmFtZSwgbmFtZXM9Tm9uZSwgKiwgbW9kdWxlPU5vbmUsIHF1YWxuYW1lPU5vbmUsIHR5cGU9Tm9uZSwgc3RhcnQ9MSk6CiAgICAgICAgICIiIkNvbnZlbmllbmNlIG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgRW51bSBjbGFzcy4KIAogICAgICAgICBgbmFtZXNgIGNhbiBiZToKIAogICAgICAgICAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgbWVtYmVyIG5hbWVzLCBzZXBhcmF0ZWQgZWl0aGVyIHdpdGggc3BhY2VzIG9yCi0gICAgICAgICAgY29tbWFzLiAgVmFsdWVzIGFyZSBhdXRvLW51bWJlcmVkIGZyb20gMS4KLSAgICAgICAgKiBBbiBpdGVyYWJsZSBvZiBtZW1iZXIgbmFtZXMuICBWYWx1ZXMgYXJlIGF1dG8tbnVtYmVyZWQgZnJvbSAxLgorICAgICAgICAgIGNvbW1hcy4gIFZhbHVlcyBhcmUgaW5jcmVtZW50ZWQgYnkgMSBmcm9tIGBzdGFydGAuCisgICAgICAgICogQW4gaXRlcmFibGUgb2YgbWVtYmVyIG5hbWVzLiAgVmFsdWVzIGFyZSBpbmNyZW1lbnRlZCBieSAxIGZyb20gYHN0YXJ0YC4KICAgICAgICAgKiBBbiBpdGVyYWJsZSBvZiAobWVtYmVyIG5hbWUsIHZhbHVlKSBwYWlycy4KLSAgICAgICAgKiBBIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUgLT4gdmFsdWUuCisgICAgICAgICogQSBtYXBwaW5nIG9mIG1lbWJlciBuYW1lIC0+IHZhbHVlIHBhaXJzLgogCiAgICAgICAgICIiIgogICAgICAgICBtZXRhY2xzID0gY2xzLl9fY2xhc3NfXwpAQCAtMzEyLDcgKzMyNSw3IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsIHN0cik6CiAgICAgICAgICAgICBuYW1lcyA9IG5hbWVzLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgKHR1cGxlLCBsaXN0KSkgYW5kIGlzaW5zdGFuY2UobmFtZXNbMF0sIHN0cik6Ci0gICAgICAgICAgICBuYW1lcyA9IFsoZSwgaSkgZm9yIChpLCBlKSBpbiBlbnVtZXJhdGUobmFtZXMsIDEpXQorICAgICAgICAgICAgbmFtZXMgPSBbKGUsIGkpIGZvciAoaSwgZSkgaW4gZW51bWVyYXRlKG5hbWVzLCBzdGFydCldCiAKICAgICAgICAgIyBIZXJlLCBuYW1lcyBpcyBlaXRoZXIgYW4gaXRlcmFibGUgb2YgKG5hbWUsIHZhbHVlKSBvciBhIG1hcHBpbmcuCiAgICAgICAgIGZvciBpdGVtIGluIG5hbWVzOgpAQCAtNDY4LDEwICs0ODEsOSBAQAogICAgICAgICAgICAgICAgIG0KICAgICAgICAgICAgICAgICBmb3IgY2xzIGluIHNlbGYuX19jbGFzc19fLm1ybygpCiAgICAgICAgICAgICAgICAgZm9yIG0gaW4gY2xzLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgaWYgbVswXSAhPSAnXycKKyAgICAgICAgICAgICAgICBpZiBtWzBdICE9ICdfJyBhbmQgbSBub3QgaW4gc2VsZi5fbWVtYmVyX21hcF8KICAgICAgICAgICAgICAgICBdCi0gICAgICAgIHJldHVybiAoWydfX2NsYXNzX18nLCAnX19kb2NfXycsICdfX21vZHVsZV9fJywgJ25hbWUnLCAndmFsdWUnXSArCi0gICAgICAgICAgICAgICAgYWRkZWRfYmVoYXZpb3IpCisgICAgICAgIHJldHVybiAoWydfX2NsYXNzX18nLCAnX19kb2NfXycsICdfX21vZHVsZV9fJ10gKyBhZGRlZF9iZWhhdmlvcikKIAogICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKToKICAgICAgICAgIyBtaXhlZC1pbiBFbnVtcyBzaG91bGQgdXNlIHRoZSBtaXhlZC1pbiB0eXBlJ3MgX19mb3JtYXRfXywgb3RoZXJ3aXNlCmRpZmYgLS1naXQgYS9MaWIvZmlsZWlucHV0LnB5IGIvTGliL2ZpbGVpbnB1dC5weQppbmRleCA4YWY0YTU3Li5hZjgxMGQxIDEwMDY0NAotLS0gYS9MaWIvZmlsZWlucHV0LnB5CisrKyBiL0xpYi9maWxlaW5wdXQucHkKQEAgLTI3NywyNCArMjc3LDI0IEBACiAKICAgICBkZWYgbmV4dGZpbGUoc2VsZik6CiAgICAgICAgIHNhdmVzdGRvdXQgPSBzZWxmLl9zYXZlc3Rkb3V0Ci0gICAgICAgIHNlbGYuX3NhdmVzdGRvdXQgPSAwCisgICAgICAgIHNlbGYuX3NhdmVzdGRvdXQgPSBOb25lCiAgICAgICAgIGlmIHNhdmVzdGRvdXQ6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZXN0ZG91dAogCiAgICAgICAgIG91dHB1dCA9IHNlbGYuX291dHB1dAotICAgICAgICBzZWxmLl9vdXRwdXQgPSAwCisgICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgb3V0cHV0OgogICAgICAgICAgICAgICAgIG91dHB1dC5jbG9zZSgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmaWxlID0gc2VsZi5fZmlsZQotICAgICAgICAgICAgc2VsZi5fZmlsZSA9IDAKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBOb25lCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgZmlsZSBhbmQgbm90IHNlbGYuX2lzc3RkaW46CiAgICAgICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBiYWNrdXBmaWxlbmFtZSA9IHNlbGYuX2JhY2t1cGZpbGVuYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5fYmFja3VwZmlsZW5hbWUgPSAwCisgICAgICAgICAgICAgICAgc2VsZi5fYmFja3VwZmlsZW5hbWUgPSBOb25lCiAgICAgICAgICAgICAgICAgaWYgYmFja3VwZmlsZW5hbWUgYW5kIG5vdCBzZWxmLl9iYWNrdXA6CiAgICAgICAgICAgICAgICAgICAgIHRyeTogb3MudW5saW5rKGJhY2t1cGZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjogcGFzcwpkaWZmIC0tZ2l0IGEvTGliL2Zvcm1hdHRlci5weSBiL0xpYi9mb3JtYXR0ZXIucHkKaW5kZXggOTMzODI2MS4uNWU4ZTJmZiAxMDA2NDQKLS0tIGEvTGliL2Zvcm1hdHRlci5weQorKysgYi9MaWIvZm9ybWF0dGVyLnB5CkBAIC0yMSw3ICsyMSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIHdhcm5pbmdzLndhcm4oJ3RoZSBmb3JtYXR0ZXIgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAnCi0gICAgICAgICAgICAgICdQeXRob24gMy42JywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgJ1B5dGhvbiAzLjYnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKIAogCiBBU19JUyA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mcmFjdGlvbnMucHkgYi9MaWIvZnJhY3Rpb25zLnB5CmluZGV4IDc5ZTgzZmYuLjYwYjA3MjggMTAwNjQ0Ci0tLSBhL0xpYi9mcmFjdGlvbnMucHkKKysrIGIvTGliL2ZyYWN0aW9ucy5weQpAQCAtMjAsNiArMjAsMTcgQEAKICAgICBVbmxlc3MgYj09MCwgdGhlIHJlc3VsdCB3aWxsIGhhdmUgdGhlIHNhbWUgc2lnbiBhcyBiIChzbyB0aGF0IHdoZW4KICAgICBiIGlzIGRpdmlkZWQgYnkgaXQsIHRoZSByZXN1bHQgY29tZXMgb3V0IHBvc2l0aXZlKS4KICAgICAiIiIKKyAgICBpbXBvcnQgd2FybmluZ3MKKyAgICB3YXJuaW5ncy53YXJuKCdmcmFjdGlvbnMuZ2NkKCkgaXMgZGVwcmVjYXRlZC4gVXNlIG1hdGguZ2NkKCkgaW5zdGVhZC4nLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIGlmIHR5cGUoYSkgaXMgaW50IGlzIHR5cGUoYik6CisgICAgICAgIGlmIChiIG9yIGEpIDwgMDoKKyAgICAgICAgICAgIHJldHVybiAtbWF0aC5nY2QoYSwgYikKKyAgICAgICAgcmV0dXJuIG1hdGguZ2NkKGEsIGIpCisgICAgcmV0dXJuIF9nY2QoYSwgYikKKworZGVmIF9nY2QoYSwgYik6CisgICAgIyBTdXBwb3J0cyBub24taW50ZWdlcnMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiAgICAgd2hpbGUgYjoKICAgICAgICAgYSwgYiA9IGIsIGElYgogICAgIHJldHVybiBhCkBAIC03MCw3ICs4MSw3IEBACiAgICAgX19zbG90c19fID0gKCdfbnVtZXJhdG9yJywgJ19kZW5vbWluYXRvcicpCiAKICAgICAjIFdlJ3JlIGltbXV0YWJsZSwgc28gdXNlIF9fbmV3X18gbm90IF9faW5pdF9fCi0gICAgZGVmIF9fbmV3X18oY2xzLCBudW1lcmF0b3I9MCwgZGVub21pbmF0b3I9Tm9uZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBudW1lcmF0b3I9MCwgZGVub21pbmF0b3I9Tm9uZSwgX25vcm1hbGl6ZT1UcnVlKToKICAgICAgICAgIiIiQ29uc3RydWN0cyBhIFJhdGlvbmFsLgogCiAgICAgICAgIFRha2VzIGEgc3RyaW5nIGxpa2UgJzMvMicgb3IgJzEuNScsIGFub3RoZXIgUmF0aW9uYWwgaW5zdGFuY2UsIGEKQEAgLTEwNCw3ICsxMTUsMTIgQEAKICAgICAgICAgc2VsZiA9IHN1cGVyKEZyYWN0aW9uLCBjbHMpLl9fbmV3X18oY2xzKQogCiAgICAgICAgIGlmIGRlbm9taW5hdG9yIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgbnVtYmVycy5SYXRpb25hbCk6CisgICAgICAgICAgICBpZiB0eXBlKG51bWVyYXRvcikgaXMgaW50OgorICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IG51bWVyYXRvcgorICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIG51bWJlcnMuUmF0aW9uYWwpOgogICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IG51bWVyYXRvci5udW1lcmF0b3IKICAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5kZW5vbWluYXRvcgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCkBAIC0xNTMsNiArMTY5LDkgQEAKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIFJhdGlvbmFsIGluc3RhbmNlIikKIAorICAgICAgICBlbGlmIHR5cGUobnVtZXJhdG9yKSBpcyBpbnQgaXMgdHlwZShkZW5vbWluYXRvcik6CisgICAgICAgICAgICBwYXNzICMgKnZlcnkqIG5vcm1hbCBjYXNlCisKICAgICAgICAgZWxpZiAoaXNpbnN0YW5jZShudW1lcmF0b3IsIG51bWJlcnMuUmF0aW9uYWwpIGFuZAogICAgICAgICAgICAgaXNpbnN0YW5jZShkZW5vbWluYXRvciwgbnVtYmVycy5SYXRpb25hbCkpOgogICAgICAgICAgICAgbnVtZXJhdG9yLCBkZW5vbWluYXRvciA9ICgKQEAgLTE2NSw5ICsxODQsMTggQEAKIAogICAgICAgICBpZiBkZW5vbWluYXRvciA9PSAwOgogICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IoJ0ZyYWN0aW9uKCVzLCAwKScgJSBudW1lcmF0b3IpCi0gICAgICAgIGcgPSBnY2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikKLSAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gbnVtZXJhdG9yIC8vIGcKLSAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSBkZW5vbWluYXRvciAvLyBnCisgICAgICAgIGlmIF9ub3JtYWxpemU6CisgICAgICAgICAgICBpZiB0eXBlKG51bWVyYXRvcikgaXMgaW50IGlzIHR5cGUoZGVub21pbmF0b3IpOgorICAgICAgICAgICAgICAgICMgKnZlcnkqIG5vcm1hbCBjYXNlCisgICAgICAgICAgICAgICAgZyA9IG1hdGguZ2NkKG51bWVyYXRvciwgZGVub21pbmF0b3IpCisgICAgICAgICAgICAgICAgaWYgZGVub21pbmF0b3IgPCAwOgorICAgICAgICAgICAgICAgICAgICBnID0gLWcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZyA9IF9nY2QobnVtZXJhdG9yLCBkZW5vbWluYXRvcikKKyAgICAgICAgICAgIG51bWVyYXRvciAvLz0gZworICAgICAgICAgICAgZGVub21pbmF0b3IgLy89IGcKKyAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gbnVtZXJhdG9yCisgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gZGVub21pbmF0b3IKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjc3LDcgKzMwNSw4IEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiInJlcHIoc2VsZikiIiIKLSAgICAgICAgcmV0dXJuICgnRnJhY3Rpb24oJXMsICVzKScgJSAoc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvcikpCisgICAgICAgIHJldHVybiAnJXMoJXMsICVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvcikKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAiIiJzdHIoc2VsZikiIiIKQEAgLTM5NSwxNyArNDI0LDE3IEBACiAKICAgICBkZWYgX2FkZChhLCBiKToKICAgICAgICAgIiIiYSArIGIiIiIKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEubnVtZXJhdG9yICogYi5kZW5vbWluYXRvciArCi0gICAgICAgICAgICAgICAgICAgICAgICBiLm51bWVyYXRvciAqIGEuZGVub21pbmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICBhLmRlbm9taW5hdG9yICogYi5kZW5vbWluYXRvcikKKyAgICAgICAgZGEsIGRiID0gYS5kZW5vbWluYXRvciwgYi5kZW5vbWluYXRvcgorICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5udW1lcmF0b3IgKiBkYiArIGIubnVtZXJhdG9yICogZGEsCisgICAgICAgICAgICAgICAgICAgICAgICBkYSAqIGRiKQogCiAgICAgX19hZGRfXywgX19yYWRkX18gPSBfb3BlcmF0b3JfZmFsbGJhY2tzKF9hZGQsIG9wZXJhdG9yLmFkZCkKIAogICAgIGRlZiBfc3ViKGEsIGIpOgogICAgICAgICAiIiJhIC0gYiIiIgotICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5udW1lcmF0b3IgKiBiLmRlbm9taW5hdG9yIC0KLSAgICAgICAgICAgICAgICAgICAgICAgIGIubnVtZXJhdG9yICogYS5kZW5vbWluYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGEuZGVub21pbmF0b3IgKiBiLmRlbm9taW5hdG9yKQorICAgICAgICBkYSwgZGIgPSBhLmRlbm9taW5hdG9yLCBiLmRlbm9taW5hdG9yCisgICAgICAgIHJldHVybiBGcmFjdGlvbihhLm51bWVyYXRvciAqIGRiIC0gYi5udW1lcmF0b3IgKiBkYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhICogZGIpCiAKICAgICBfX3N1Yl9fLCBfX3JzdWJfXyA9IF9vcGVyYXRvcl9mYWxsYmFja3MoX3N1Yiwgb3BlcmF0b3Iuc3ViKQogCkBAIC00NTMsMTAgKzQ4MiwxMiBAQAogICAgICAgICAgICAgICAgIHBvd2VyID0gYi5udW1lcmF0b3IKICAgICAgICAgICAgICAgICBpZiBwb3dlciA+PSAwOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRnJhY3Rpb24oYS5fbnVtZXJhdG9yICoqIHBvd2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5fZGVub21pbmF0b3IgKiogcG93ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl9kZW5vbWluYXRvciAqKiBwb3dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ub3JtYWxpemU9RmFsc2UpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEuX2Rlbm9taW5hdG9yICoqIC1wb3dlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuX251bWVyYXRvciAqKiAtcG93ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLl9udW1lcmF0b3IgKiogLXBvd2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25vcm1hbGl6ZT1GYWxzZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBIGZyYWN0aW9uYWwgcG93ZXIgd2lsbCBnZW5lcmFsbHkgcHJvZHVjZSBhbgogICAgICAgICAgICAgICAgICMgaXJyYXRpb25hbCBudW1iZXIuCkBAIC00ODAsMTUgKzUxMSwxNSBAQAogCiAgICAgZGVmIF9fcG9zX18oYSk6CiAgICAgICAgICIiIithOiBDb2VyY2VzIGEgc3ViY2xhc3MgaW5zdGFuY2UgdG8gRnJhY3Rpb24iIiIKLSAgICAgICAgcmV0dXJuIEZyYWN0aW9uKGEuX251bWVyYXRvciwgYS5fZGVub21pbmF0b3IpCisgICAgICAgIHJldHVybiBGcmFjdGlvbihhLl9udW1lcmF0b3IsIGEuX2Rlbm9taW5hdG9yLCBfbm9ybWFsaXplPUZhbHNlKQogCiAgICAgZGVmIF9fbmVnX18oYSk6CiAgICAgICAgICIiIi1hIiIiCi0gICAgICAgIHJldHVybiBGcmFjdGlvbigtYS5fbnVtZXJhdG9yLCBhLl9kZW5vbWluYXRvcikKKyAgICAgICAgcmV0dXJuIEZyYWN0aW9uKC1hLl9udW1lcmF0b3IsIGEuX2Rlbm9taW5hdG9yLCBfbm9ybWFsaXplPUZhbHNlKQogCiAgICAgZGVmIF9fYWJzX18oYSk6CiAgICAgICAgICIiImFicyhhKSIiIgotICAgICAgICByZXR1cm4gRnJhY3Rpb24oYWJzKGEuX251bWVyYXRvciksIGEuX2Rlbm9taW5hdG9yKQorICAgICAgICByZXR1cm4gRnJhY3Rpb24oYWJzKGEuX251bWVyYXRvciksIGEuX2Rlbm9taW5hdG9yLCBfbm9ybWFsaXplPUZhbHNlKQogCiAgICAgZGVmIF9fdHJ1bmNfXyhhKToKICAgICAgICAgIiIidHJ1bmMoYSkiIiIKQEAgLTU1NSw2ICs1ODYsOCBAQAogCiAgICAgZGVmIF9fZXFfXyhhLCBiKToKICAgICAgICAgIiIiYSA9PSBiIiIiCisgICAgICAgIGlmIHR5cGUoYikgaXMgaW50OgorICAgICAgICAgICAgcmV0dXJuIGEuX251bWVyYXRvciA9PSBiIGFuZCBhLl9kZW5vbWluYXRvciA9PSAxCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYiwgbnVtYmVycy5SYXRpb25hbCk6CiAgICAgICAgICAgICByZXR1cm4gKGEuX251bWVyYXRvciA9PSBiLm51bWVyYXRvciBhbmQKICAgICAgICAgICAgICAgICAgICAgYS5fZGVub21pbmF0b3IgPT0gYi5kZW5vbWluYXRvcikKZGlmZiAtLWdpdCBhL0xpYi9mdHBsaWIucHkgYi9MaWIvZnRwbGliLnB5CmluZGV4IDRkOTJiODYuLjU0YjBlMmMgMTAwNjQ0Ci0tLSBhL0xpYi9mdHBsaWIucHkKKysrIGIvTGliL2Z0cGxpYi5weQpAQCAtNDIsNyArNDIsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHNvY2tldCBpbXBvcnQgX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQKIAotX19hbGxfXyA9IFsiRlRQIiwgIk5ldHJjIl0KK19fYWxsX18gPSBbIkZUUCJdCiAKICMgTWFnaWMgbnVtYmVyIGZyb20gPHNvY2tldC5oPgogTVNHX09PQiA9IDB4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJvY2VzcyBkYXRhIG91dCBvZiBiYW5kCkBAIC05MjMsMTE1ICs5MjMsNiBAQAogICAgIHRhcmdldC52b2lkcmVzcCgpCiAKIAotY2xhc3MgTmV0cmM6Ci0gICAgIiIiQ2xhc3MgdG8gcGFyc2UgJiBwcm92aWRlIGFjY2VzcyB0byAnbmV0cmMnIGZvcm1hdCBmaWxlcy4KLQotICAgIFNlZSB0aGUgbmV0cmMoNCkgbWFuIHBhZ2UgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBmaWxlIGZvcm1hdC4KLQotICAgIFdBUk5JTkc6IFRoaXMgY2xhc3MgaXMgb2Jzb2xldGUgLS0gdXNlIG1vZHVsZSBuZXRyYyBpbnN0ZWFkLgotCi0gICAgIiIiCi0gICAgX19kZWZ1c2VyID0gTm9uZQotICAgIF9fZGVmcGFzc3dkID0gTm9uZQotICAgIF9fZGVmYWNjdCA9IE5vbmUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZT1Ob25lKToKLSAgICAgICAgd2FybmluZ3Mud2FybigiVGhpcyBjbGFzcyBpcyBkZXByZWNhdGVkLCB1c2UgdGhlIG5ldHJjIG1vZHVsZSBpbnN0ZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiAiSE9NRSIgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWyJIT01FIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5uZXRyYyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoInNwZWNpZnkgZmlsZSB0byBsb2FkIG9yIHNldCAkSE9NRSIpCi0gICAgICAgIHNlbGYuX19ob3N0cyA9IHt9Ci0gICAgICAgIHNlbGYuX19tYWNyb3MgPSB7fQotICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyIikKLSAgICAgICAgaW5fbWFjcm8gPSAwCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGluX21hY3JvIGFuZCBsaW5lLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgbWFjcm9fbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgaW5fbWFjcm86Ci0gICAgICAgICAgICAgICAgc2VsZi5fX21hY3Jvc1ttYWNyb19uYW1lXSA9IHR1cGxlKG1hY3JvX2xpbmVzKQotICAgICAgICAgICAgICAgIGluX21hY3JvID0gMAotICAgICAgICAgICAgd29yZHMgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgICAgIGhvc3QgPSB1c2VyID0gcGFzc3dkID0gYWNjdCA9IE5vbmUKLSAgICAgICAgICAgIGRlZmF1bHQgPSAwCi0gICAgICAgICAgICBpID0gMAotICAgICAgICAgICAgd2hpbGUgaSA8IGxlbih3b3Jkcyk6Ci0gICAgICAgICAgICAgICAgdzEgPSB3b3Jkc1tpXQotICAgICAgICAgICAgICAgIGlmIGkrMSA8IGxlbih3b3Jkcyk6Ci0gICAgICAgICAgICAgICAgICAgIHcyID0gd29yZHNbaSArIDFdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdzIgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgdzEgPT0gJ2RlZmF1bHQnOgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gMQotICAgICAgICAgICAgICAgIGVsaWYgdzEgPT0gJ21hY2hpbmUnIGFuZCB3MjoKLSAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHcyLmxvd2VyKCkKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnbG9naW4nIGFuZCB3MjoKLSAgICAgICAgICAgICAgICAgICAgdXNlciA9IHcyCi0gICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdzEgPT0gJ3Bhc3N3b3JkJyBhbmQgdzI6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3N3ZCA9IHcyCi0gICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdzEgPT0gJ2FjY291bnQnIGFuZCB3MjoKLSAgICAgICAgICAgICAgICAgICAgYWNjdCA9IHcyCi0gICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgIGVsaWYgdzEgPT0gJ21hY2RlZicgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICBtYWNyb19uYW1lID0gdzIKLSAgICAgICAgICAgICAgICAgICAgbWFjcm9fbGluZXMgPSBbXQotICAgICAgICAgICAgICAgICAgICBpbl9tYWNybyA9IDEKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgIGlmIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX2RlZnVzZXIgPSB1c2VyIG9yIHNlbGYuX19kZWZ1c2VyCi0gICAgICAgICAgICAgICAgc2VsZi5fX2RlZnBhc3N3ZCA9IHBhc3N3ZCBvciBzZWxmLl9fZGVmcGFzc3dkCi0gICAgICAgICAgICAgICAgc2VsZi5fX2RlZmFjY3QgPSBhY2N0IG9yIHNlbGYuX19kZWZhY2N0Ci0gICAgICAgICAgICBpZiBob3N0OgotICAgICAgICAgICAgICAgIGlmIGhvc3QgaW4gc2VsZi5fX2hvc3RzOgotICAgICAgICAgICAgICAgICAgICBvdXNlciwgb3Bhc3N3ZCwgb2FjY3QgPSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9faG9zdHNbaG9zdF0KLSAgICAgICAgICAgICAgICAgICAgdXNlciA9IHVzZXIgb3Igb3VzZXIKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dkID0gcGFzc3dkIG9yIG9wYXNzd2QKLSAgICAgICAgICAgICAgICAgICAgYWNjdCA9IGFjY3Qgb3Igb2FjY3QKLSAgICAgICAgICAgICAgICBzZWxmLl9faG9zdHNbaG9zdF0gPSB1c2VyLCBwYXNzd2QsIGFjY3QKLSAgICAgICAgZnAuY2xvc2UoKQotCi0gICAgZGVmIGdldF9ob3N0cyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBob3N0cyBtZW50aW9uZWQgaW4gdGhlIC5uZXRyYyBmaWxlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX2hvc3RzLmtleXMoKQotCi0gICAgZGVmIGdldF9hY2NvdW50KHNlbGYsIGhvc3QpOgotICAgICAgICAiIiJSZXR1cm5zIGxvZ2luIGluZm9ybWF0aW9uIGZvciB0aGUgbmFtZWQgaG9zdC4KLQotICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHJpcGxlIGNvbnRhaW5pbmcgdXNlcmlkLAotICAgICAgICBwYXNzd29yZCwgYW5kIHRoZSBhY2NvdW50aW5nIGZpZWxkLgotCi0gICAgICAgICIiIgotICAgICAgICBob3N0ID0gaG9zdC5sb3dlcigpCi0gICAgICAgIHVzZXIgPSBwYXNzd2QgPSBhY2N0ID0gTm9uZQotICAgICAgICBpZiBob3N0IGluIHNlbGYuX19ob3N0czoKLSAgICAgICAgICAgIHVzZXIsIHBhc3N3ZCwgYWNjdCA9IHNlbGYuX19ob3N0c1tob3N0XQotICAgICAgICB1c2VyID0gdXNlciBvciBzZWxmLl9fZGVmdXNlcgotICAgICAgICBwYXNzd2QgPSBwYXNzd2Qgb3Igc2VsZi5fX2RlZnBhc3N3ZAotICAgICAgICBhY2N0ID0gYWNjdCBvciBzZWxmLl9fZGVmYWNjdAotICAgICAgICByZXR1cm4gdXNlciwgcGFzc3dkLCBhY2N0Ci0KLSAgICBkZWYgZ2V0X21hY3JvcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgZGVmaW5lZCBtYWNybyBuYW1lcy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19tYWNyb3Mua2V5cygpCi0KLSAgICBkZWYgZ2V0X21hY3JvKHNlbGYsIG1hY3JvKToKLSAgICAgICAgIiIiUmV0dXJuIGEgc2VxdWVuY2Ugb2YgbGluZXMgd2hpY2ggZGVmaW5lIGEgbmFtZWQgbWFjcm8uIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9fbWFjcm9zW21hY3JvXQotCi0KLQogZGVmIHRlc3QoKToKICAgICAnJydUZXN0IHByb2dyYW0uCiAgICAgVXNhZ2U6IGZ0cCBbLWRdIFstcltmaWxlXV0gaG9zdCBbLWxbZGlyXV0gWy1kW2Rpcl1dIFstcF0gW2ZpbGVdIC4uLgpAQCAtMTA0NSw2ICs5MzYsOCBAQAogICAgICAgICBwcmludCh0ZXN0Ll9fZG9jX18pCiAgICAgICAgIHN5cy5leGl0KDApCiAKKyAgICBpbXBvcnQgbmV0cmMKKwogICAgIGRlYnVnZ2luZyA9IDAKICAgICByY2ZpbGUgPSBOb25lCiAgICAgd2hpbGUgc3lzLmFyZ3ZbMV0gPT0gJy1kJzoKQEAgLTEwNTksMTQgKzk1MiwxNCBAQAogICAgIGZ0cC5zZXRfZGVidWdsZXZlbChkZWJ1Z2dpbmcpCiAgICAgdXNlcmlkID0gcGFzc3dkID0gYWNjdCA9ICcnCiAgICAgdHJ5OgotICAgICAgICBuZXRyYyA9IE5ldHJjKHJjZmlsZSkKKyAgICAgICAgbmV0cmNvYmogPSBuZXRyYy5uZXRyYyhyY2ZpbGUpCiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGlmIHJjZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkNvdWxkIG5vdCBvcGVuIGFjY291bnQgZmlsZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtLSB1c2luZyBhbm9ueW1vdXMgbG9naW4uIikKICAgICBlbHNlOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB1c2VyaWQsIHBhc3N3ZCwgYWNjdCA9IG5ldHJjLmdldF9hY2NvdW50KGhvc3QpCisgICAgICAgICAgICB1c2VyaWQsIGFjY3QsIHBhc3N3ZCA9IG5ldHJjb2JqLmF1dGhlbnRpY2F0b3JzKGhvc3QpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICMgbm8gYWNjb3VudCBmb3IgaG9zdAogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDJjMjk5ZDcuLjA2YTRmZjEgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMjMsNyArMjMsNyBAQAogZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrS2V5RGljdGlvbmFyeQogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgUkxvY2sKLWV4Y2VwdDoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBjbGFzcyBSTG9jazoKICAgICAgICAgJ0R1bW15IHJlZW50cmFudCBsb2NrIGZvciBidWlsZHMgd2l0aG91dCB0aHJlYWRzJwogICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOiBwYXNzCkBAIC05NCwxMDggKzk0LDEwOSBAQAogIyBpbmZpbml0ZSByZWN1cnNpb24gdGhhdCBjb3VsZCBvY2N1ciB3aGVuIHRoZSBvcGVyYXRvciBkaXNwYXRjaCBsb2dpYwogIyBkZXRlY3RzIGEgTm90SW1wbGVtZW50ZWQgcmVzdWx0IGFuZCB0aGVuIGNhbGxzIGEgcmVmbGVjdGVkIG1ldGhvZC4KIAotZGVmIF9ndF9mcm9tX2x0KHNlbGYsIG90aGVyKToKK2RlZiBfZ3RfZnJvbV9sdChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA+IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPCBiKSBhbmQgKGEgIT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sdF9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgogCi1kZWYgX2xlX2Zyb21fbHQoc2VsZiwgb3RoZXIpOgorZGVmIF9sZV9mcm9tX2x0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDw9IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA8IGIpIG9yIChhID09IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbHRfXyhvdGhlcikKICAgICByZXR1cm4gb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKIAotZGVmIF9nZV9mcm9tX2x0KHNlbGYsIG90aGVyKToKK2RlZiBfZ2VfZnJvbV9sdChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA+PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhIDwgYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sdF9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdAogCi1kZWYgX2dlX2Zyb21fbGUoc2VsZiwgb3RoZXIpOgorZGVmIF9nZV9mcm9tX2xlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPD0gYikgb3IgKGEgPT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBvciBzZWxmID09IG90aGVyCiAKLWRlZiBfbHRfZnJvbV9sZShzZWxmLCBvdGhlcik6CitkZWYgX2x0X2Zyb21fbGUoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPCBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKGEgPD0gYikgYW5kIChhICE9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbGVfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgogCi1kZWYgX2d0X2Zyb21fbGUoc2VsZiwgb3RoZXIpOgorZGVmIF9ndF9mcm9tX2xlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID4gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2xlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CiAKLWRlZiBfbHRfZnJvbV9ndChzZWxmLCBvdGhlcik6CitkZWYgX2x0X2Zyb21fZ3Qoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPCBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID4gYikgYW5kIChhICE9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ3RfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQgYW5kIHNlbGYgIT0gb3RoZXIKIAotZGVmIF9nZV9mcm9tX2d0KHNlbGYsIG90aGVyKToKK2RlZiBfZ2VfZnJvbV9ndChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA+PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKGEgPiBiKSBvciAoYSA9PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2d0X18ob3RoZXIpCiAgICAgcmV0dXJuIG9wX3Jlc3VsdCBvciBzZWxmID09IG90aGVyCiAKLWRlZiBfbGVfZnJvbV9ndChzZWxmLCBvdGhlcik6CitkZWYgX2xlX2Zyb21fZ3Qoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPD0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ3RfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKIAotZGVmIF9sZV9mcm9tX2dlKHNlbGYsIG90aGVyKToKK2RlZiBfbGVfZnJvbV9nZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID49IGIpIG9yIChhID09IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ2VfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgogCi1kZWYgX2d0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgorZGVmIF9ndF9mcm9tX2dlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID4gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChhID49IGIpIGFuZCAoYSAhPSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2dlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBvcF9yZXN1bHQgYW5kIHNlbGYgIT0gb3RoZXIKIAotZGVmIF9sdF9mcm9tX2dlKHNlbGYsIG90aGVyKToKK2RlZiBfbHRfZnJvbV9nZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPj0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19nZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdAogCitfY29udmVydCA9IHsKKyAgICAnX19sdF9fJzogWygnX19ndF9fJywgX2d0X2Zyb21fbHQpLAorICAgICAgICAgICAgICAgKCdfX2xlX18nLCBfbGVfZnJvbV9sdCksCisgICAgICAgICAgICAgICAoJ19fZ2VfXycsIF9nZV9mcm9tX2x0KV0sCisgICAgJ19fbGVfXyc6IFsoJ19fZ2VfXycsIF9nZV9mcm9tX2xlKSwKKyAgICAgICAgICAgICAgICgnX19sdF9fJywgX2x0X2Zyb21fbGUpLAorICAgICAgICAgICAgICAgKCdfX2d0X18nLCBfZ3RfZnJvbV9sZSldLAorICAgICdfX2d0X18nOiBbKCdfX2x0X18nLCBfbHRfZnJvbV9ndCksCisgICAgICAgICAgICAgICAoJ19fZ2VfXycsIF9nZV9mcm9tX2d0KSwKKyAgICAgICAgICAgICAgICgnX19sZV9fJywgX2xlX2Zyb21fZ3QpXSwKKyAgICAnX19nZV9fJzogWygnX19sZV9fJywgX2xlX2Zyb21fZ2UpLAorICAgICAgICAgICAgICAgKCdfX2d0X18nLCBfZ3RfZnJvbV9nZSksCisgICAgICAgICAgICAgICAoJ19fbHRfXycsIF9sdF9mcm9tX2dlKV0KK30KKwogZGVmIHRvdGFsX29yZGVyaW5nKGNscyk6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIHRoYXQgZmlsbHMgaW4gbWlzc2luZyBvcmRlcmluZyBtZXRob2RzIiIiCi0gICAgY29udmVydCA9IHsKLSAgICAgICAgJ19fbHRfXyc6IFsoJ19fZ3RfXycsIF9ndF9mcm9tX2x0KSwKLSAgICAgICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2x0KSwKLSAgICAgICAgICAgICAgICAgICAoJ19fZ2VfXycsIF9nZV9mcm9tX2x0KV0sCi0gICAgICAgICdfX2xlX18nOiBbKCdfX2dlX18nLCBfZ2VfZnJvbV9sZSksCi0gICAgICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9sZSksCi0gICAgICAgICAgICAgICAgICAgKCdfX2d0X18nLCBfZ3RfZnJvbV9sZSldLAotICAgICAgICAnX19ndF9fJzogWygnX19sdF9fJywgX2x0X2Zyb21fZ3QpLAotICAgICAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fZ3QpLAotICAgICAgICAgICAgICAgICAgICgnX19sZV9fJywgX2xlX2Zyb21fZ3QpXSwKLSAgICAgICAgJ19fZ2VfXyc6IFsoJ19fbGVfXycsIF9sZV9mcm9tX2dlKSwKLSAgICAgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2dlKSwKLSAgICAgICAgICAgICAgICAgICAoJ19fbHRfXycsIF9sdF9mcm9tX2dlKV0KLSAgICB9CiAgICAgIyBGaW5kIHVzZXItZGVmaW5lZCBjb21wYXJpc29ucyAobm90IHRob3NlIGluaGVyaXRlZCBmcm9tIG9iamVjdCkuCi0gICAgcm9vdHMgPSBbb3AgZm9yIG9wIGluIGNvbnZlcnQgaWYgZ2V0YXR0cihjbHMsIG9wLCBOb25lKSBpcyBub3QgZ2V0YXR0cihvYmplY3QsIG9wLCBOb25lKV0KKyAgICByb290cyA9IFtvcCBmb3Igb3AgaW4gX2NvbnZlcnQgaWYgZ2V0YXR0cihjbHMsIG9wLCBOb25lKSBpcyBub3QgZ2V0YXR0cihvYmplY3QsIG9wLCBOb25lKV0KICAgICBpZiBub3Qgcm9vdHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ211c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBvcmRlcmluZyBvcGVyYXRpb246IDwgPiA8PSA+PScpCiAgICAgcm9vdCA9IG1heChyb290cykgICAgICAgIyBwcmVmZXIgX19sdF9fIHRvIF9fbGVfXyB0byBfX2d0X18gdG8gX19nZV9fCi0gICAgZm9yIG9wbmFtZSwgb3BmdW5jIGluIGNvbnZlcnRbcm9vdF06CisgICAgZm9yIG9wbmFtZSwgb3BmdW5jIGluIF9jb252ZXJ0W3Jvb3RdOgogICAgICAgICBpZiBvcG5hbWUgbm90IGluIHJvb3RzOgogICAgICAgICAgICAgb3BmdW5jLl9fbmFtZV9fID0gb3BuYW1lCiAgICAgICAgICAgICBzZXRhdHRyKGNscywgb3BuYW1lLCBvcGZ1bmMpCkBAIC0yMjIsOCArMjIzLDYgQEAKICAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSA8PSAwCiAgICAgICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgcmV0dXJuIG15Y21wKHNlbGYub2JqLCBvdGhlci5vYmopID49IDAKLSAgICAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICAgICByZXR1cm4gbXljbXAoc2VsZi5vYmosIG90aGVyLm9iaikgIT0gMAogICAgICAgICBfX2hhc2hfXyA9IE5vbmUKICAgICByZXR1cm4gSwogCkBAIC0yNDIsNiArMjQxLDE0IEBACiAgICAgIiIiTmV3IGZ1bmN0aW9uIHdpdGggcGFydGlhbCBhcHBsaWNhdGlvbiBvZiB0aGUgZ2l2ZW4gYXJndW1lbnRzCiAgICAgYW5kIGtleXdvcmRzLgogICAgICIiIgorICAgIGlmIGhhc2F0dHIoZnVuYywgJ2Z1bmMnKToKKyAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKKyAgICAgICAgdG1wa3cgPSBmdW5jLmtleXdvcmRzLmNvcHkoKQorICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgIGtleXdvcmRzID0gdG1wa3cKKyAgICAgICAgZGVsIHRtcGt3CisgICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKKwogICAgIGRlZiBuZXdmdW5jKCpmYXJncywgKipma2V5d29yZHMpOgogICAgICAgICBuZXdrZXl3b3JkcyA9IGtleXdvcmRzLmNvcHkoKQogICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoZmtleXdvcmRzKQpAQCAtMjkxLDcgKzI5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLmtleXdvcmRzLml0ZW1zKCkpCiAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSAie21vZHVsZX0ue2Nsc30oe2Z1bmN9LCB7YXJnc30sIHtrZXl3b3Jkc30pIgogICAgICAgICByZXR1cm4gZm9ybWF0X3N0cmluZy5mb3JtYXQobW9kdWxlPXNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM9c2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM9c2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYz1zZWxmLmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3Jkcz1rZXl3b3JkcykKQEAgLTQxMiwxMjAgKzQxOSwxMjkgQEAKICAgICBpZiBtYXhzaXplIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShtYXhzaXplLCBpbnQpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0V4cGVjdGVkIG1heHNpemUgdG8gYmUgYW4gaW50ZWdlciBvciBOb25lJykKIAorICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24pOgorICAgICAgICB3cmFwcGVyID0gX2xydV9jYWNoZV93cmFwcGVyKHVzZXJfZnVuY3Rpb24sIG1heHNpemUsIHR5cGVkLCBfQ2FjaGVJbmZvKQorICAgICAgICByZXR1cm4gdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgdXNlcl9mdW5jdGlvbikKKworICAgIHJldHVybiBkZWNvcmF0aW5nX2Z1bmN0aW9uCisKK2RlZiBfbHJ1X2NhY2hlX3dyYXBwZXIodXNlcl9mdW5jdGlvbiwgbWF4c2l6ZSwgdHlwZWQsIF9DYWNoZUluZm8pOgogICAgICMgQ29uc3RhbnRzIHNoYXJlZCBieSBhbGwgbHJ1IGNhY2hlIGluc3RhbmNlczoKICAgICBzZW50aW5lbCA9IG9iamVjdCgpICAgICAgICAgICMgdW5pcXVlIG9iamVjdCB1c2VkIHRvIHNpZ25hbCBjYWNoZSBtaXNzZXMKICAgICBtYWtlX2tleSA9IF9tYWtlX2tleSAgICAgICAgICMgYnVpbGQgYSBrZXkgZnJvbSB0aGUgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgUFJFViwgTkVYVCwgS0VZLCBSRVNVTFQgPSAwLCAxLCAyLCAzICAgIyBuYW1lcyBmb3IgdGhlIGxpbmsgZmllbGRzCiAKLSAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uKToKLSAgICAgICAgY2FjaGUgPSB7fQotICAgICAgICBoaXRzID0gbWlzc2VzID0gMAotICAgICAgICBmdWxsID0gRmFsc2UKLSAgICAgICAgY2FjaGVfZ2V0ID0gY2FjaGUuZ2V0ICAgICMgYm91bmQgbWV0aG9kIHRvIGxvb2t1cCBhIGtleSBvciByZXR1cm4gTm9uZQotICAgICAgICBsb2NrID0gUkxvY2soKSAgICAgICAgICAgIyBiZWNhdXNlIGxpbmtlZGxpc3QgdXBkYXRlcyBhcmVuJ3QgdGhyZWFkc2FmZQotICAgICAgICByb290ID0gW10gICAgICAgICAgICAgICAgIyByb290IG9mIHRoZSBjaXJjdWxhciBkb3VibHkgbGlua2VkIGxpc3QKLSAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXSAgICAgIyBpbml0aWFsaXplIGJ5IHBvaW50aW5nIHRvIHNlbGYKKyAgICBjYWNoZSA9IHt9CisgICAgaGl0cyA9IG1pc3NlcyA9IDAKKyAgICBmdWxsID0gRmFsc2UKKyAgICBjYWNoZV9nZXQgPSBjYWNoZS5nZXQgICAgIyBib3VuZCBtZXRob2QgdG8gbG9va3VwIGEga2V5IG9yIHJldHVybiBOb25lCisgICAgbG9jayA9IFJMb2NrKCkgICAgICAgICAgICMgYmVjYXVzZSBsaW5rZWRsaXN0IHVwZGF0ZXMgYXJlbid0IHRocmVhZHNhZmUKKyAgICByb290ID0gW10gICAgICAgICAgICAgICAgIyByb290IG9mIHRoZSBjaXJjdWxhciBkb3VibHkgbGlua2VkIGxpc3QKKyAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdICAgICAjIGluaXRpYWxpemUgYnkgcG9pbnRpbmcgdG8gc2VsZgogCi0gICAgICAgIGlmIG1heHNpemUgPT0gMDoKKyAgICBpZiBtYXhzaXplID09IDA6CiAKLSAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgICMgTm8gY2FjaGluZyAtLSBqdXN0IGEgc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwKLSAgICAgICAgICAgICAgICBub25sb2NhbCBtaXNzZXMKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAjIE5vIGNhY2hpbmcgLS0ganVzdCBhIHN0YXRpc3RpY3MgdXBkYXRlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsCisgICAgICAgICAgICBub25sb2NhbCBtaXNzZXMKKyAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBlbGlmIG1heHNpemUgaXMgTm9uZToKKworICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICMgU2ltcGxlIGNhY2hpbmcgd2l0aG91dCBvcmRlcmluZyBvciBzaXplIGxpbWl0CisgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKKyAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQorICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVfZ2V0KGtleSwgc2VudGluZWwpCisgICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IHNlbnRpbmVsOgorICAgICAgICAgICAgICAgIGhpdHMgKz0gMQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQKKyAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgZWxpZiBtYXhzaXplIGlzIE5vbmU6CisgICAgZWxzZToKIAotICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgIyBTaW1wbGUgY2FjaGluZyB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKLSAgICAgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKLSAgICAgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZV9nZXQoa2V5LCBzZW50aW5lbCkKLSAgICAgICAgICAgICAgICBpZiByZXN1bHQgaXMgbm90IHNlbnRpbmVsOgorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICMgU2l6ZSBsaW1pdGVkIGNhY2hpbmcgdGhhdCB0cmFja3MgYWNjZXNzZXMgYnkgcmVjZW5jeQorICAgICAgICAgICAgbm9ubG9jYWwgcm9vdCwgaGl0cywgbWlzc2VzLCBmdWxsCisgICAgICAgICAgICBrZXkgPSBtYWtlX2tleShhcmdzLCBrd2RzLCB0eXBlZCkKKyAgICAgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgICAgICBsaW5rID0gY2FjaGVfZ2V0KGtleSkKKyAgICAgICAgICAgICAgICBpZiBsaW5rIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIE1vdmUgdGhlIGxpbmsgdG8gdGhlIGZyb250IG9mIHRoZSBjaXJjdWxhciBxdWV1ZQorICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXYsIGxpbmtfbmV4dCwgX2tleSwgcmVzdWx0ID0gbGluaworICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXZbTkVYVF0gPSBsaW5rX25leHQKKyAgICAgICAgICAgICAgICAgICAgbGlua19uZXh0W1BSRVZdID0gbGlua19wcmV2CisgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCisgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gbGluaworICAgICAgICAgICAgICAgICAgICBsaW5rW1BSRVZdID0gbGFzdAorICAgICAgICAgICAgICAgICAgICBsaW5rW05FWFRdID0gcm9vdAogICAgICAgICAgICAgICAgICAgICBoaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gcmVzdWx0CisgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlOgorICAgICAgICAgICAgICAgICAgICAjIEdldHRpbmcgaGVyZSBtZWFucyB0aGF0IHRoaXMgc2FtZSBrZXkgd2FzIGFkZGVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNhY2hlIHdoaWxlIHRoZSBsb2NrIHdhcyByZWxlYXNlZC4gIFNpbmNlIHRoZSBsaW5rCisgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlzIGFscmVhZHkgZG9uZSwgd2UgbmVlZCBvbmx5IHJldHVybiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBjb21wdXRlZCByZXN1bHQgYW5kIHVwZGF0ZSB0aGUgY291bnQgb2YgbWlzc2VzLgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxpZiBmdWxsOgorICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgb2xkIHJvb3QgdG8gc3RvcmUgdGhlIG5ldyBrZXkgYW5kIHJlc3VsdC4KKyAgICAgICAgICAgICAgICAgICAgb2xkcm9vdCA9IHJvb3QKKyAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtLRVldID0ga2V5CisgICAgICAgICAgICAgICAgICAgIG9sZHJvb3RbUkVTVUxUXSA9IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAjIEVtcHR5IHRoZSBvbGRlc3QgbGluayBhbmQgbWFrZSBpdCB0aGUgbmV3IHJvb3QuCisgICAgICAgICAgICAgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bworICAgICAgICAgICAgICAgICAgICAjIHByZXZlbnQgdGhlaXIgcmVmIGNvdW50cyBmcm9tIGdvaW5nIHRvIHplcm8gZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZS4gVGhhdCB3aWxsIHByZXZlbnQgcG90ZW50aWFsbHkgYXJiaXRyYXJ5IG9iamVjdAorICAgICAgICAgICAgICAgICAgICAjIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCisgICAgICAgICAgICAgICAgICAgICMgc3RpbGwgYWRqdXN0aW5nIHRoZSBsaW5rcy4KKyAgICAgICAgICAgICAgICAgICAgcm9vdCA9IG9sZHJvb3RbTkVYVF0KKyAgICAgICAgICAgICAgICAgICAgb2xka2V5ID0gcm9vdFtLRVldCisgICAgICAgICAgICAgICAgICAgIG9sZHJlc3VsdCA9IHJvb3RbUkVTVUxUXQorICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSByb290W1JFU1VMVF0gPSBOb25lCisgICAgICAgICAgICAgICAgICAgICMgTm93IHVwZGF0ZSB0aGUgY2FjaGUgZGljdGlvbmFyeS4KKyAgICAgICAgICAgICAgICAgICAgZGVsIGNhY2hlW29sZGtleV0KKyAgICAgICAgICAgICAgICAgICAgIyBTYXZlIHRoZSBwb3RlbnRpYWxseSByZWVudHJhbnQgY2FjaGVba2V5XSBhc3NpZ25tZW50CisgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhc3QsIGFmdGVyIHRoZSByb290IGFuZCBsaW5rcyBoYXZlIGJlZW4gcHV0IGluCisgICAgICAgICAgICAgICAgICAgICMgYSBjb25zaXN0ZW50IHN0YXRlLgorICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gb2xkcm9vdAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgUHV0IHJlc3VsdCBpbiBhIG5ldyBsaW5rIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUuCisgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCisgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBbbGFzdCwgcm9vdCwga2V5LCByZXN1bHRdCisgICAgICAgICAgICAgICAgICAgIGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gY2FjaGVba2V5XSA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgZnVsbCA9IChsZW4oY2FjaGUpID49IG1heHNpemUpCiAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgZWxzZToKKyAgICBkZWYgY2FjaGVfaW5mbygpOgorICAgICAgICAiIiJSZXBvcnQgY2FjaGUgc3RhdGlzdGljcyIiIgorICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGxlbihjYWNoZSkpCiAKLSAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgICMgU2l6ZSBsaW1pdGVkIGNhY2hpbmcgdGhhdCB0cmFja3MgYWNjZXNzZXMgYnkgcmVjZW5jeQotICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJvb3QsIGhpdHMsIG1pc3NlcywgZnVsbAotICAgICAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQotICAgICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICAgICAgbGluayA9IGNhY2hlX2dldChrZXkpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE1vdmUgdGhlIGxpbmsgdG8gdGhlIGZyb250IG9mIHRoZSBjaXJjdWxhciBxdWV1ZQotICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2LCBsaW5rX25leHQsIF9rZXksIHJlc3VsdCA9IGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldltORVhUXSA9IGxpbmtfbmV4dAotICAgICAgICAgICAgICAgICAgICAgICAgbGlua19uZXh0W1BSRVZdID0gbGlua19wcmV2Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rW1BSRVZdID0gbGFzdAotICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tORVhUXSA9IHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMgKz0gMQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBjYWNoZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgR2V0dGluZyBoZXJlIG1lYW5zIHRoYXQgdGhpcyBzYW1lIGtleSB3YXMgYWRkZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGNhY2hlIHdoaWxlIHRoZSBsb2NrIHdhcyByZWxlYXNlZC4gIFNpbmNlIHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBpcyBhbHJlYWR5IGRvbmUsIHdlIG5lZWQgb25seSByZXR1cm4gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGNvbXB1dGVkIHJlc3VsdCBhbmQgdXBkYXRlIHRoZSBjb3VudCBvZiBtaXNzZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZnVsbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlIHRoZSBvbGQgcm9vdCB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0LgotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcm9vdCA9IHJvb3QKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZHJvb3RbS0VZXSA9IGtleQotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtSRVNVTFRdID0gcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEVtcHR5IHRoZSBvbGRlc3QgbGluayBhbmQgbWFrZSBpdCB0aGUgbmV3IHJvb3QuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG9sZCBrZXkgYW5kIG9sZCByZXN1bHQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICMgcHJldmVudCB0aGVpciByZWYgY291bnRzIGZyb20gZ29pbmcgdG8gemVybyBkdXJpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZS4gVGhhdCB3aWxsIHByZXZlbnQgcG90ZW50aWFsbHkgYXJiaXRyYXJ5IG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgIyBjbGVhbi11cCBjb2RlIChpLmUuIF9fZGVsX18pIGZyb20gcnVubmluZyB3aGlsZSB3ZSdyZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGlsbCBhZGp1c3RpbmcgdGhlIGxpbmtzLgotICAgICAgICAgICAgICAgICAgICAgICAgcm9vdCA9IG9sZHJvb3RbTkVYVF0KLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZGtleSA9IHJvb3RbS0VZXQotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcmVzdWx0ID0gcm9vdFtSRVNVTFRdCi0gICAgICAgICAgICAgICAgICAgICAgICByb290W0tFWV0gPSByb290W1JFU1VMVF0gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyB1cGRhdGUgdGhlIGNhY2hlIGRpY3Rpb25hcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgY2FjaGVbb2xka2V5XQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTYXZlIHRoZSBwb3RlbnRpYWxseSByZWVudHJhbnQgY2FjaGVba2V5XSBhc3NpZ25tZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGZvciBsYXN0LCBhZnRlciB0aGUgcm9vdCBhbmQgbGlua3MgaGF2ZSBiZWVuIHB1dCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhIGNvbnNpc3RlbnQgc3RhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gb2xkcm9vdAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBQdXQgcmVzdWx0IGluIGEgbmV3IGxpbmsgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rID0gW2xhc3QsIHJvb3QsIGtleSwgcmVzdWx0XQotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBjYWNoZVtrZXldID0gbGluawotICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCA9IChsZW4oY2FjaGUpID49IG1heHNpemUpCi0gICAgICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIGRlZiBjYWNoZV9jbGVhcigpOgorICAgICAgICAiIiJDbGVhciB0aGUgY2FjaGUgYW5kIGNhY2hlIHN0YXRpc3RpY3MiIiIKKyAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzLCBmdWxsCisgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKKyAgICAgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0KKyAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCisgICAgICAgICAgICBmdWxsID0gRmFsc2UKIAotICAgICAgICBkZWYgY2FjaGVfaW5mbygpOgotICAgICAgICAgICAgIiIiUmVwb3J0IGNhY2hlIHN0YXRpc3RpY3MiIiIKLSAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGxlbihjYWNoZSkpCisgICAgd3JhcHBlci5jYWNoZV9pbmZvID0gY2FjaGVfaW5mbworICAgIHdyYXBwZXIuY2FjaGVfY2xlYXIgPSBjYWNoZV9jbGVhcgorICAgIHJldHVybiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB1c2VyX2Z1bmN0aW9uKQogCi0gICAgICAgIGRlZiBjYWNoZV9jbGVhcigpOgotICAgICAgICAgICAgIiIiQ2xlYXIgdGhlIGNhY2hlIGFuZCBjYWNoZSBzdGF0aXN0aWNzIiIiCi0gICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGZ1bGwKLSAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICBjYWNoZS5jbGVhcigpCi0gICAgICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQotICAgICAgICAgICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCi0gICAgICAgICAgICAgICAgZnVsbCA9IEZhbHNlCi0KLSAgICAgICAgd3JhcHBlci5jYWNoZV9pbmZvID0gY2FjaGVfaW5mbwotICAgICAgICB3cmFwcGVyLmNhY2hlX2NsZWFyID0gY2FjaGVfY2xlYXIKLSAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCi0KLSAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgordHJ5OgorICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgX2xydV9jYWNoZV93cmFwcGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvZ2VuZXJpY3BhdGgucHkgYi9MaWIvZ2VuZXJpY3BhdGgucHkKaW5kZXggY2E0YTUxMC4uNjcxNDA2MSAxMDA2NDQKLS0tIGEvTGliL2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi9nZW5lcmljcGF0aC5weQpAQCAtMTMwLDMgKzEzMCwxNiBAQAogICAgICAgICAgICAgZmlsZW5hbWVJbmRleCArPSAxCiAKICAgICByZXR1cm4gcCwgcFs6MF0KKworZGVmIF9jaGVja19hcmdfdHlwZXMoZnVuY25hbWUsICphcmdzKToKKyAgICBoYXNzdHIgPSBoYXNieXRlcyA9IEZhbHNlCisgICAgZm9yIHMgaW4gYXJnczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICAgICAgaGFzc3RyID0gVHJ1ZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgorICAgICAgICAgICAgaGFzYnl0ZXMgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jbmFtZSwgcy5fX2NsYXNzX18uX19uYW1lX18pKSBmcm9tIE5vbmUKKyAgICBpZiBoYXNzdHIgYW5kIGhhc2J5dGVzOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMiKSBmcm9tIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9nZXR0ZXh0LnB5IGIvTGliL2dldHRleHQucHkKaW5kZXggOGNhZjFkMS4uMTAxMzc4ZiAxMDA2NDQKLS0tIGEvTGliL2dldHRleHQucHkKKysrIGIvTGliL2dldHRleHQucHkKQEAgLTIyNyw2ICsyMjcsMTMgQEAKICAgICBMRV9NQUdJQyA9IDB4OTUwNDEyZGUKICAgICBCRV9NQUdJQyA9IDB4ZGUxMjA0OTUKIAorICAgICMgQWNjZXB0YWJsZSAubW8gdmVyc2lvbnMKKyAgICBWRVJTSU9OUyA9ICgwLCAxKQorCisgICAgZGVmIF9nZXRfdmVyc2lvbnMoc2VsZiwgdmVyc2lvbik6CisgICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiBtYWpvciB2ZXJzaW9uLCBtaW5vciB2ZXJzaW9uIiIiCisgICAgICAgIHJldHVybiAodmVyc2lvbiA+PiAxNiwgdmVyc2lvbiAmIDB4ZmZmZikKKwogICAgIGRlZiBfcGFyc2Uoc2VsZiwgZnApOgogICAgICAgICAiIiJPdmVycmlkZSB0aGlzIG1ldGhvZCB0byBzdXBwb3J0IGFsdGVybmF0aXZlIC5tbyBmb3JtYXRzLiIiIgogICAgICAgICB1bnBhY2sgPSBzdHJ1Y3QudW5wYWNrCkBAIC0yNDcsNiArMjU0LDEyIEBACiAgICAgICAgICAgICBpaSA9ICc+SUknCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKDAsICdCYWQgbWFnaWMgbnVtYmVyJywgZmlsZW5hbWUpCisKKyAgICAgICAgbWFqb3JfdmVyc2lvbiwgbWlub3JfdmVyc2lvbiA9IHNlbGYuX2dldF92ZXJzaW9ucyh2ZXJzaW9uKQorCisgICAgICAgIGlmIG1ham9yX3ZlcnNpb24gbm90IGluIHNlbGYuVkVSU0lPTlM6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKDAsICdCYWQgdmVyc2lvbiBudW1iZXIgJyArIHN0cihtYWpvcl92ZXJzaW9uKSwgZmlsZW5hbWUpCisKICAgICAgICAgIyBOb3cgcHV0IGFsbCBtZXNzYWdlcyBmcm9tIHRoZSAubW8gZmlsZSBidWZmZXIgaW50byB0aGUgY2F0YWxvZwogICAgICAgICAjIGRpY3Rpb25hcnkuCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIG1zZ2NvdW50KToKZGlmZiAtLWdpdCBhL0xpYi9nbG9iLnB5IGIvTGliL2dsb2IucHkKaW5kZXggZDZlY2EyNC4uNTZkNjcwNCAxMDA2NDQKLS0tIGEvTGliL2dsb2IucHkKKysrIGIvTGliL2dsb2IucHkKQEAgLTYsNyArNiw3IEBACiAKIF9fYWxsX18gPSBbImdsb2IiLCAiaWdsb2IiXQogCi1kZWYgZ2xvYihwYXRobmFtZSk6CitkZWYgZ2xvYihwYXRobmFtZSwgKiwgcmVjdXJzaXZlPUZhbHNlKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHBhdGhzIG1hdGNoaW5nIGEgcGF0aG5hbWUgcGF0dGVybi4KIAogICAgIFRoZSBwYXR0ZXJuIG1heSBjb250YWluIHNpbXBsZSBzaGVsbC1zdHlsZSB3aWxkY2FyZHMgYSBsYQpAQCAtMTQsMTAgKzE0LDEyIEBACiAgICAgZG90IGFyZSBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG5vdCBtYXRjaGVkIGJ5ICcqJyBhbmQgJz8nCiAgICAgcGF0dGVybnMuCiAKKyAgICBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gJyoqJyB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQKKyAgICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLgogICAgICIiIgotICAgIHJldHVybiBsaXN0KGlnbG9iKHBhdGhuYW1lKSkKKyAgICByZXR1cm4gbGlzdChpZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlPXJlY3Vyc2l2ZSkpCiAKLWRlZiBpZ2xvYihwYXRobmFtZSk6CitkZWYgaWdsb2IocGF0aG5hbWUsICosIHJlY3Vyc2l2ZT1GYWxzZSk6CiAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhdG9yIHdoaWNoIHlpZWxkcyB0aGUgcGF0aHMgbWF0Y2hpbmcgYSBwYXRobmFtZSBwYXR0ZXJuLgogCiAgICAgVGhlIHBhdHRlcm4gbWF5IGNvbnRhaW4gc2ltcGxlIHNoZWxsLXN0eWxlIHdpbGRjYXJkcyBhIGxhCkBAIC0yNSw2ICsyNyw4IEBACiAgICAgZG90IGFyZSBzcGVjaWFsIGNhc2VzIHRoYXQgYXJlIG5vdCBtYXRjaGVkIGJ5ICcqJyBhbmQgJz8nCiAgICAgcGF0dGVybnMuCiAKKyAgICBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gJyoqJyB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQKKyAgICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLgogICAgICIiIgogICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICBpZiBub3QgaGFzX21hZ2ljKHBhdGhuYW1lKToKQEAgLTM3LDE3ICs0MSwyMyBAQAogICAgICAgICAgICAgICAgIHlpZWxkIHBhdGhuYW1lCiAgICAgICAgIHJldHVybgogICAgIGlmIG5vdCBkaXJuYW1lOgotICAgICAgICB5aWVsZCBmcm9tIGdsb2IxKE5vbmUsIGJhc2VuYW1lKQorICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IyKGRpcm5hbWUsIGJhc2VuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgeWllbGQgZnJvbSBnbG9iMShkaXJuYW1lLCBiYXNlbmFtZSkKICAgICAgICAgcmV0dXJuCiAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIHRoZSBhcmd1bWVudCBpdHNlbGYgYXMgYSBkaXJuYW1lIGlmIGl0IGlzIGEKICAgICAjIGRyaXZlIG9yIFVOQyBwYXRoLiAgUHJldmVudCBhbiBpbmZpbml0ZSByZWN1cnNpb24gaWYgYSBkcml2ZSBvciBVTkMgcGF0aAogICAgICMgY29udGFpbnMgbWFnaWMgY2hhcmFjdGVycyAoaS5lLiByJ1xcP1xDOicpLgogICAgIGlmIGRpcm5hbWUgIT0gcGF0aG5hbWUgYW5kIGhhc19tYWdpYyhkaXJuYW1lKToKLSAgICAgICAgZGlycyA9IGlnbG9iKGRpcm5hbWUpCisgICAgICAgIGRpcnMgPSBpZ2xvYihkaXJuYW1lLCByZWN1cnNpdmU9cmVjdXJzaXZlKQogICAgIGVsc2U6CiAgICAgICAgIGRpcnMgPSBbZGlybmFtZV0KICAgICBpZiBoYXNfbWFnaWMoYmFzZW5hbWUpOgotICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IxCisgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKKyAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjEKICAgICBlbHNlOgogICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IwCiAgICAgZm9yIGRpcm5hbWUgaW4gZGlyczoKQEAgLTgzLDYgKzkzLDM0IEBACiAgICAgICAgICAgICByZXR1cm4gW2Jhc2VuYW1lXQogICAgIHJldHVybiBbXQogCisjIFRoaXMgaGVscGVyIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbAorIyBkaXJlY3RvcnkuCisKK2RlZiBnbG9iMihkaXJuYW1lLCBwYXR0ZXJuKToKKyAgICBhc3NlcnQgX2lzcmVjdXJzaXZlKHBhdHRlcm4pCisgICAgaWYgZGlybmFtZToKKyAgICAgICAgeWllbGQgcGF0dGVybls6MF0KKyAgICB5aWVsZCBmcm9tIF9ybGlzdGRpcihkaXJuYW1lKQorCisjIFJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCisKK2RlZiBfcmxpc3RkaXIoZGlybmFtZSk6CisgICAgaWYgbm90IGRpcm5hbWU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlybmFtZSwgYnl0ZXMpOgorICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKKyAgICB0cnk6CisgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgcmV0dXJuCisgICAgZm9yIHggaW4gbmFtZXM6CisgICAgICAgIGlmIG5vdCBfaXNoaWRkZW4oeCk6CisgICAgICAgICAgICB5aWVsZCB4CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHgpIGlmIGRpcm5hbWUgZWxzZSB4CisgICAgICAgICAgICBmb3IgeSBpbiBfcmxpc3RkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKHgsIHkpCisKIAogbWFnaWNfY2hlY2sgPSByZS5jb21waWxlKCcoWyo/W10pJykKIG1hZ2ljX2NoZWNrX2J5dGVzID0gcmUuY29tcGlsZShiJyhbKj9bXSknKQpAQCAtOTcsNiArMTM1LDEyIEBACiBkZWYgX2lzaGlkZGVuKHBhdGgpOgogICAgIHJldHVybiBwYXRoWzBdIGluICgnLicsIGInLidbMF0pCiAKK2RlZiBfaXNyZWN1cnNpdmUocGF0dGVybik6CisgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBieXRlcyk6CisgICAgICAgIHJldHVybiBwYXR0ZXJuID09IGInKionCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT0gJyoqJworCiBkZWYgZXNjYXBlKHBhdGhuYW1lKToKICAgICAiIiJFc2NhcGUgYWxsIHNwZWNpYWwgY2hhcmFjdGVycy4KICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggN2FkMDBlMS4uNDUxNTJlNCAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgemxpYgogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KK2ltcG9ydCBfY29tcHJlc3Npb24KIAogX19hbGxfXyA9IFsiR3ppcEZpbGUiLCAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIl0KIApAQCAtODksNDkgKzkwLDM1IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyW3JlYWQ6XSArIFwKICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUucmVhZChzaXplLXNlbGYuX2xlbmd0aCtyZWFkKQogCi0gICAgZGVmIHByZXBlbmQoc2VsZiwgcHJlcGVuZD1iJycsIHJlYWRwcmV2aW91cz1GYWxzZSk6CisgICAgZGVmIHByZXBlbmQoc2VsZiwgcHJlcGVuZD1iJycpOgogICAgICAgICBpZiBzZWxmLl9yZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBwcmVwZW5kCi0gICAgICAgIGVsaWYgcmVhZHByZXZpb3VzIGFuZCBsZW4ocHJlcGVuZCkgPD0gc2VsZi5fcmVhZDoKKyAgICAgICAgZWxzZTogICMgQXNzdW1lIGRhdGEgd2FzIHJlYWQgc2luY2UgdGhlIGxhc3QgcHJlcGVuZCgpIGNhbGwKICAgICAgICAgICAgIHNlbGYuX3JlYWQgLT0gbGVuKHByZXBlbmQpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9yZWFkOl0gKyBwcmVwZW5kCiAgICAgICAgIHNlbGYuX2xlbmd0aCA9IGxlbihzZWxmLl9idWZmZXIpCiAgICAgICAgIHNlbGYuX3JlYWQgPSAwCiAKLSAgICBkZWYgdW51c2VkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9yZWFkIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gYicnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fcmVhZDpdCi0KLSAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKLSAgICAgICAgIyBUaGlzIGlzIG9ubHkgZXZlciBjYWxsZWQgd2l0aCBvZmZzZXQ9d2hlbmNlPTAKLSAgICAgICAgaWYgd2hlbmNlID09IDEgYW5kIHNlbGYuX3JlYWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiAwIDw9IG9mZnNldCArIHNlbGYuX3JlYWQgPD0gc2VsZi5fbGVuZ3RoOgotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQgKz0gb2Zmc2V0Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZWxmLl9sZW5ndGggLSBzZWxmLl9yZWFkCisgICAgZGVmIHNlZWsoc2VsZiwgb2ZmKToKICAgICAgICAgc2VsZi5fcmVhZCA9IE5vbmUKICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5maWxlLnNlZWsob2Zmc2V0LCB3aGVuY2UpCisgICAgICAgIHJldHVybiBzZWxmLmZpbGUuc2VlayhvZmYpCiAKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuZmlsZSwgbmFtZSkKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlICAjIEFsbG93cyBmYXN0LWZvcndhcmRpbmcgZXZlbiBpbiB1bnNlZWthYmxlIHN0cmVhbXMKIAotCi1jbGFzcyBHemlwRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CitjbGFzcyBHemlwRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAgICAgIiIiVGhlIEd6aXBGaWxlIGNsYXNzIHNpbXVsYXRlcyBtb3N0IG9mIHRoZSBtZXRob2RzIG9mIGEgZmlsZSBvYmplY3Qgd2l0aAotICAgIHRoZSBleGNlcHRpb24gb2YgdGhlIHJlYWRpbnRvKCkgYW5kIHRydW5jYXRlKCkgbWV0aG9kcy4KKyAgICB0aGUgZXhjZXB0aW9uIG9mIHRoZSB0cnVuY2F0ZSgpIG1ldGhvZC4KIAogICAgIFRoaXMgY2xhc3Mgb25seSBzdXBwb3J0cyBvcGVuaW5nIGZpbGVzIGluIGJpbmFyeSBtb2RlLiBJZiB5b3UgbmVlZCB0byBvcGVuIGEKICAgICBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB1c2UgdGhlIGd6aXAub3BlbigpIGZ1bmN0aW9uLgogCiAgICAgIiIiCiAKKyAgICAjIE92ZXJyaWRkZW4gd2l0aCBpbnRlcm5hbCBmaWxlIG9iamVjdCB0byBiZSBjbG9zZWQsIGlmIG9ubHkgYSBmaWxlbmFtZQorICAgICMgaXMgcGFzc2VkIGluCiAgICAgbXlmaWxlb2JqID0gTm9uZQotICAgIG1heF9yZWFkX2NodW5rID0gMTAgKiAxMDI0ICogMTAyNCAgICMgMTBNYgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUsIG1vZGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbD05LCBmaWxlb2JqPU5vbmUsIG10aW1lPU5vbmUpOgpAQCAtMTYzLDEzICsxNTAsOCBAQAogICAgICAgICBhdCBhbGwuIFRoZSBkZWZhdWx0IGlzIDkuCiAKICAgICAgICAgVGhlIG10aW1lIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG51bWVyaWMgdGltZXN0YW1wIHRvIGJlIHdyaXR0ZW4KLSAgICAgICAgdG8gdGhlIHN0cmVhbSB3aGVuIGNvbXByZXNzaW5nLiAgQWxsIGd6aXAgY29tcHJlc3NlZCBzdHJlYW1zCi0gICAgICAgIGFyZSByZXF1aXJlZCB0byBjb250YWluIGEgdGltZXN0YW1wLiAgSWYgb21pdHRlZCBvciBOb25lLCB0aGUKLSAgICAgICAgY3VycmVudCB0aW1lIGlzIHVzZWQuICBUaGlzIG1vZHVsZSBpZ25vcmVzIHRoZSB0aW1lc3RhbXAgd2hlbgotICAgICAgICBkZWNvbXByZXNzaW5nOyBob3dldmVyLCBzb21lIHByb2dyYW1zLCBzdWNoIGFzIGd1bnppcCwgbWFrZSB1c2UKLSAgICAgICAgb2YgaXQuICBUaGUgZm9ybWF0IG9mIHRoZSB0aW1lc3RhbXAgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUKLSAgICAgICAgcmV0dXJuIHZhbHVlIG9mIHRpbWUudGltZSgpIGFuZCBvZiB0aGUgc3RfbXRpbWUgbWVtYmVyIG9mIHRoZQotICAgICAgICBvYmplY3QgcmV0dXJuZWQgYnkgb3Muc3RhdCgpLgorICAgICAgICB0byB0aGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBmaWVsZCBpbiB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuCisgICAgICAgIElmIG9taXR0ZWQgb3IgTm9uZSwgdGhlIGN1cnJlbnQgdGltZSBpcyB1c2VkLgogCiAgICAgICAgICIiIgogCkBAIC0xODgsMTggKzE3MCw5IEBACiAKICAgICAgICAgaWYgbW9kZS5zdGFydHN3aXRoKCdyJyk6CiAgICAgICAgICAgICBzZWxmLm1vZGUgPSBSRUFECi0gICAgICAgICAgICAjIFNldCBmbGFnIGluZGljYXRpbmcgc3RhcnQgb2YgYSBuZXcgbWVtYmVyCi0gICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQotICAgICAgICAgICAgIyBCdWZmZXIgZGF0YSByZWFkIGZyb20gZ3ppcCBmaWxlLiBleHRyYXN0YXJ0IGlzIG9mZnNldCBpbgotICAgICAgICAgICAgIyBzdHJlYW0gd2hlcmUgYnVmZmVyIHN0YXJ0cy4gZXh0cmFzaXplIGlzIG51bWJlciBvZgotICAgICAgICAgICAgIyBieXRlcyByZW1haW5pbmcgaW4gYnVmZmVyIGZyb20gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uCi0gICAgICAgICAgICBzZWxmLmV4dHJhYnVmID0gYiIiCi0gICAgICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IDAKLSAgICAgICAgICAgIHNlbGYuZXh0cmFzdGFydCA9IDAKKyAgICAgICAgICAgIHJhdyA9IF9HemlwUmVhZGVyKGZpbGVvYmopCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBpby5CdWZmZXJlZFJlYWRlcihyYXcpCiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBmaWxlbmFtZQotICAgICAgICAgICAgIyBTdGFydHMgc21hbGwsIHNjYWxlcyBleHBvbmVudGlhbGx5Ci0gICAgICAgICAgICBzZWxmLm1pbl9yZWFkc2l6ZSA9IDEwMAotICAgICAgICAgICAgZmlsZW9iaiA9IF9QYWRkZWRGaWxlKGZpbGVvYmopCiAKICAgICAgICAgZWxpZiBtb2RlLnN0YXJ0c3dpdGgoKCd3JywgJ2EnLCAneCcpKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFdSSVRFCkBAIC0yMDksMTIgKzE4MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXpsaWIuTUFYX1dCSVRTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemxpYi5ERUZfTUVNX0xFVkVMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX210aW1lID0gbXRpbWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCiAgICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKLSAgICAgICAgc2VsZi5vZmZzZXQgPSAwCi0gICAgICAgIHNlbGYubXRpbWUgPSBtdGltZQogCiAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2d6aXBfaGVhZGVyKCkKQEAgLTIyNywyNiArMTk5LDIyIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lICsgIi5neiIKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG10aW1lKHNlbGYpOgorICAgICAgICAiIiJMYXN0IG1vZGlmaWNhdGlvbiB0aW1lIHJlYWQgZnJvbSBzdHJlYW0sIG9yIE5vbmUiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yYXcuX2xhc3RfbXRpbWUKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgZmlsZW9iaiA9IHNlbGYuZmlsZW9iagotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVvYmosIF9QYWRkZWRGaWxlKToKLSAgICAgICAgICAgIGZpbGVvYmogPSBmaWxlb2JqLmZpbGUKLSAgICAgICAgcyA9IHJlcHIoZmlsZW9iaikKKyAgICAgICAgcyA9IHJlcHIoc2VsZi5maWxlb2JqKQogICAgICAgICByZXR1cm4gJzxnemlwICcgKyBzWzE6LTFdICsgJyAnICsgaGV4KGlkKHNlbGYpKSArICc+JwogCi0gICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6Ci0gICAgICAgICIiIlJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgaGFzIGJlZW4gY2xvc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0kvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUuJykKLQogICAgIGRlZiBfaW5pdF93cml0ZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgIHNlbGYubmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpICYgMHhmZmZmZmZmZgogICAgICAgICBzZWxmLnNpemUgPSAwCiAgICAgICAgIHNlbGYud3JpdGVidWYgPSBbXQogICAgICAgICBzZWxmLmJ1ZnNpemUgPSAwCisgICAgICAgIHNlbGYub2Zmc2V0ID0gMCAgIyBDdXJyZW50IGZpbGUgb2Zmc2V0IGZvciBzZWVrKCksIHRlbGwoKSwgZXRjCiAKICAgICBkZWYgX3dyaXRlX2d6aXBfaGVhZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoYidcMDM3XDIxMycpICAgICAgICAgICAgICMgbWFnaWMgaGVhZGVyCkBAIC0yNjUsNyArMjMzLDcgQEAKICAgICAgICAgaWYgZm5hbWU6CiAgICAgICAgICAgICBmbGFncyA9IEZOQU1FCiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShjaHIoZmxhZ3MpLmVuY29kZSgnbGF0aW4tMScpKQotICAgICAgICBtdGltZSA9IHNlbGYubXRpbWUKKyAgICAgICAgbXRpbWUgPSBzZWxmLl93cml0ZV9tdGltZQogICAgICAgICBpZiBtdGltZSBpcyBOb25lOgogICAgICAgICAgICAgbXRpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICB3cml0ZTMydShzZWxmLmZpbGVvYmosIGludChtdGltZSkpCkBAIC0yNzQsNTkgKzI0Miw4IEBACiAgICAgICAgIGlmIGZuYW1lOgogICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGZuYW1lICsgYidcMDAwJykKIAotICAgIGRlZiBfaW5pdF9yZWFkKHNlbGYpOgotICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoYiIiKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgc2VsZi5zaXplID0gMAotCi0gICAgZGVmIF9yZWFkX2V4YWN0KHNlbGYsIG4pOgotICAgICAgICBkYXRhID0gc2VsZi5maWxlb2JqLnJlYWQobikKLSAgICAgICAgd2hpbGUgbGVuKGRhdGEpIDwgbjoKLSAgICAgICAgICAgIGIgPSBzZWxmLmZpbGVvYmoucmVhZChuIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgaWYgbm90IGI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQotICAgICAgICAgICAgZGF0YSArPSBiCi0gICAgICAgIHJldHVybiBkYXRhCi0KLSAgICBkZWYgX3JlYWRfZ3ppcF9oZWFkZXIoc2VsZik6Ci0gICAgICAgIG1hZ2ljID0gc2VsZi5maWxlb2JqLnJlYWQoMikKLSAgICAgICAgaWYgbWFnaWMgPT0gYicnOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgbWFnaWMgIT0gYidcMDM3XDIxMyc6Ci0gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdOb3QgYSBnemlwcGVkIGZpbGUnKQotCi0gICAgICAgIG1ldGhvZCwgZmxhZywgc2VsZi5tdGltZSA9IHN0cnVjdC51bnBhY2soIjxCQkl4eCIsIHNlbGYuX3JlYWRfZXhhY3QoOCkpCi0gICAgICAgIGlmIG1ldGhvZCAhPSA4OgotICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnKQotCi0gICAgICAgIGlmIGZsYWcgJiBGRVhUUkE6Ci0gICAgICAgICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSBleHRyYSBmaWVsZCwgaWYgcHJlc2VudAotICAgICAgICAgICAgZXh0cmFfbGVuLCA9IHN0cnVjdC51bnBhY2soIjxIIiwgc2VsZi5fcmVhZF9leGFjdCgyKSkKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfZXhhY3QoZXh0cmFfbGVuKQotICAgICAgICBpZiBmbGFnICYgRk5BTUU6Ci0gICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHMgPSBzZWxmLmZpbGVvYmoucmVhZCgxKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHM9PWInXDAwMCc6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIGZsYWcgJiBGQ09NTUVOVDoKLSAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyBhIGNvbW1lbnQKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgcyA9IHNlbGYuZmlsZW9iai5yZWFkKDEpCi0gICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgZmxhZyAmIEZIQ1JDOgotICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdCgyKSAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgMTYtYml0IGhlYWRlciBDUkMKLQotICAgICAgICB1bnVzZWQgPSBzZWxmLmZpbGVvYmoudW51c2VkKCkKLSAgICAgICAgaWYgdW51c2VkOgotICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5kZWNvbXByZXNzKHVudXNlZCkKLSAgICAgICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEodW5jb21wcmVzcykKLSAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiB3cml0ZShzZWxmLGRhdGEpOgotICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFdSSVRFOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAid3JpdGUoKSBvbiByZWFkLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKQEAgLTMzNCwxNjYgKzI1MSw0NyBAQAogICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlKCkgb24gY2xvc2VkIEd6aXBGaWxlIG9iamVjdCIpCiAKLSAgICAgICAgIyBDb252ZXJ0IGRhdGEgdHlwZSBpZiBjYWxsZWQgYnkgaW8uQnVmZmVyZWRXcml0ZXIuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgbWVtb3J5dmlldyk6Ci0gICAgICAgICAgICBkYXRhID0gZGF0YS50b2J5dGVzKCkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBieXRlcyk6CisgICAgICAgICAgICBsZW5ndGggPSBsZW4oZGF0YSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYWNjZXB0IGFueSBkYXRhIHRoYXQgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbAorICAgICAgICAgICAgZGF0YSA9IG1lbW9yeXZpZXcoZGF0YSkKKyAgICAgICAgICAgIGxlbmd0aCA9IGRhdGEubmJ5dGVzCiAKLSAgICAgICAgaWYgbGVuKGRhdGEpID4gMDoKKyAgICAgICAgaWYgbGVuZ3RoID4gMDoKICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShzZWxmLmNvbXByZXNzLmNvbXByZXNzKGRhdGEpKQotICAgICAgICAgICAgc2VsZi5zaXplICs9IGxlbihkYXRhKQorICAgICAgICAgICAgc2VsZi5zaXplICs9IGxlbmd0aAogICAgICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGRhdGEsIHNlbGYuY3JjKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbihkYXRhKQorICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuZ3RoCiAKLSAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorICAgICAgICByZXR1cm4gbGVuZ3RoCiAKICAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKLSAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicmVhZCgpIG9uIHdyaXRlLW9ubHkgR3ppcEZpbGUgb2JqZWN0IikKLQotICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA8PSAwIGFuZCBzZWxmLmZpbGVvYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBiJycKLQotICAgICAgICByZWFkc2l6ZSA9IDEwMjQKLSAgICAgICAgaWYgc2l6ZSA8IDA6ICAgICAgICAjIGdldCB0aGUgd2hvbGUgdGhpbmcKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuX3JlYWQocmVhZHNpemUpOgotICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKLSAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQotICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICMganVzdCBnZXQgc29tZSBtb3JlIG9mIGl0Ci0gICAgICAgICAgICB3aGlsZSBzaXplID4gc2VsZi5leHRyYXNpemU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlYWQocmVhZHNpemUpOgotICAgICAgICAgICAgICAgICAgICBpZiBzaXplID4gc2VsZi5leHRyYXNpemU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICByZWFkc2l6ZSA9IG1pbihzZWxmLm1heF9yZWFkX2NodW5rLCByZWFkc2l6ZSAqIDIpCi0KLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgY2h1bmsgPSBzZWxmLmV4dHJhYnVmW29mZnNldDogb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSBzZWxmLmV4dHJhc2l6ZSAtIHNpemUKLQotICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCi0gICAgICAgIHJldHVybiBjaHVuaworICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWQoc2l6ZSkKIAogICAgIGRlZiByZWFkMShzZWxmLCBzaXplPS0xKToKLSAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgIiIiSW1wbGVtZW50cyBCdWZmZXJlZElPQmFzZS5yZWFkMSgpCisKKyAgICAgICAgUmVhZHMgdXAgdG8gYSBidWZmZXIncyB3b3J0aCBvZiBkYXRhIGlzIHNpemUgaXMgbmVnYXRpdmUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQkFERiwgInJlYWQxKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQogCi0gICAgICAgIGlmIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuZmlsZW9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGInJwotCi0gICAgICAgICMgRm9yIGNlcnRhaW4gaW5wdXQgZGF0YSwgYSBzaW5nbGUgY2FsbCB0byBfcmVhZCgpIG1heSBub3QgcmV0dXJuCi0gICAgICAgICMgYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgcmV0cnkgdW50aWwgd2UgZ2V0IHNvbWUgZGF0YSBvciByZWFjaCBFT0YuCi0gICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuX3JlYWQoKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgc2l6ZSA8IDAgb3Igc2l6ZSA+IHNlbGYuZXh0cmFzaXplOgotICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZXh0cmFzaXplCi0KLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgY2h1bmsgPSBzZWxmLmV4dHJhYnVmW29mZnNldDogb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gc2l6ZQotICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCi0gICAgICAgIHJldHVybiBjaHVuaworICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHNpemUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiBwZWVrKHNlbGYsIG4pOgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJwZWVrKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQotCi0gICAgICAgICMgRG8gbm90IHJldHVybiByaWRpY3Vsb3VzbHkgc21hbGwgYnVmZmVycywgZm9yIG9uZSBjb21tb24gaWRpb20KLSAgICAgICAgIyBpcyB0byBjYWxsIHBlZWsoMSkgYW5kIGV4cGVjdCBtb3JlIGJ5dGVzIGluIHJldHVybi4KLSAgICAgICAgaWYgbiA8IDEwMDoKLSAgICAgICAgICAgIG4gPSAxMDAKLSAgICAgICAgaWYgc2VsZi5leHRyYXNpemUgPT0gMDoKLSAgICAgICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiBiJycKLSAgICAgICAgICAgICMgRW5zdXJlIHRoYXQgd2UgZG9uJ3QgcmV0dXJuIGIiIiBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgRU9GLgotICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplID09IDAgYW5kIHNlbGYuX3JlYWQobWF4KG4sIDEwMjQpKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0Ci0gICAgICAgIHJlbWFpbmluZyA9IHNlbGYuZXh0cmFzaXplCi0gICAgICAgIGFzc2VydCByZW1haW5pbmcgPT0gbGVuKHNlbGYuZXh0cmFidWYpIC0gb2Zmc2V0Ci0gICAgICAgIHJldHVybiBzZWxmLmV4dHJhYnVmW29mZnNldDpvZmZzZXQgKyBuXQotCi0gICAgZGVmIF91bnJlYWQoc2VsZiwgYnVmKToKLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSBsZW4oYnVmKSArIHNlbGYuZXh0cmFzaXplCi0gICAgICAgIHNlbGYub2Zmc2V0IC09IGxlbihidWYpCi0KLSAgICBkZWYgX3JlYWQoc2VsZiwgc2l6ZT0xMDI0KToKLSAgICAgICAgaWYgc2VsZi5maWxlb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZWxmLl9uZXdfbWVtYmVyOgotICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KLSAgICAgICAgICAgICMganVtcCB0byB0aGUgbmV4dCBtZW1iZXIsIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZCgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZF9nemlwX2hlYWRlcigpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgc2VsZi5kZWNvbXByZXNzID0gemxpYi5kZWNvbXByZXNzb2JqKC16bGliLk1BWF9XQklUUykKLSAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBGYWxzZQotCi0gICAgICAgICMgUmVhZCBhIGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgZmlsZQotICAgICAgICBidWYgPSBzZWxmLmZpbGVvYmoucmVhZChzaXplKQotCi0gICAgICAgICMgSWYgdGhlIEVPRiBoYXMgYmVlbiByZWFjaGVkLCBmbHVzaCB0aGUgZGVjb21wcmVzc2lvbiBvYmplY3QKLSAgICAgICAgIyBhbmQgbWFyayB0aGlzIG9iamVjdCBhcyBmaW5pc2hlZC4KLQotICAgICAgICBpZiBidWYgPT0gYiIiOgotICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5mbHVzaCgpCi0gICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiB0byB0aGV5IGNhbiBiZQotICAgICAgICAgICAgIyBzZWVuIGJ5IF9yZWFkX2VvZigpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmoucHJlcGVuZChzZWxmLmRlY29tcHJlc3MudW51c2VkX2RhdGEsIFRydWUpCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2VvZigpCi0gICAgICAgICAgICBzZWxmLl9hZGRfcmVhZF9kYXRhKCB1bmNvbXByZXNzICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHVuY29tcHJlc3MgPSBzZWxmLmRlY29tcHJlc3MuZGVjb21wcmVzcyhidWYpCi0gICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEoIHVuY29tcHJlc3MgKQotCi0gICAgICAgIGlmIHNlbGYuZGVjb21wcmVzcy51bnVzZWRfZGF0YSAhPSBiIiI6Ci0gICAgICAgICAgICAjIEVuZGluZyBjYXNlOiB3ZSd2ZSBjb21lIHRvIHRoZSBlbmQgb2YgYSBtZW1iZXIgaW4gdGhlIGZpbGUsCi0gICAgICAgICAgICAjIHNvIHNlZWsgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIHVudXNlZCBkYXRhLCBmaW5pc2ggdXAKLSAgICAgICAgICAgICMgdGhpcyBtZW1iZXIsIGFuZCByZWFkIGEgbmV3IGd6aXAgaGVhZGVyLgotICAgICAgICAgICAgIyBQcmVwZW5kIHRoZSBhbHJlYWR5IHJlYWQgYnl0ZXMgdG8gdGhlIGZpbGVvYmogdG8gdGhleSBjYW4gYmUKLSAgICAgICAgICAgICMgc2VlbiBieSBfcmVhZF9lb2YoKSBhbmQgX3JlYWRfZ3ppcF9oZWFkZXIoKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnByZXBlbmQoc2VsZi5kZWNvbXByZXNzLnVudXNlZF9kYXRhLCBUcnVlKQotICAgICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGFuZCBmaWxlIHNpemUsIGFuZCBzZXQgdGhlIGZsYWcgc28gd2UgcmVhZAotICAgICAgICAgICAgIyBhIG5ldyBtZW1iZXIgb24gdGhlIG5leHQgY2FsbAotICAgICAgICAgICAgc2VsZi5fcmVhZF9lb2YoKQotICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfYWRkX3JlYWRfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGRhdGEsIHNlbGYuY3JjKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgc2VsZi5leHRyYWJ1ZiA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgIHNlbGYuZXh0cmFzaXplID0gc2VsZi5leHRyYXNpemUgKyBsZW4oZGF0YSkKLSAgICAgICAgc2VsZi5leHRyYXN0YXJ0ID0gc2VsZi5vZmZzZXQKLSAgICAgICAgc2VsZi5zaXplID0gc2VsZi5zaXplICsgbGVuKGRhdGEpCi0KLSAgICBkZWYgX3JlYWRfZW9mKHNlbGYpOgotICAgICAgICAjIFdlJ3ZlIHJlYWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZQotICAgICAgICAjIFdlIGNoZWNrIHRoZSB0aGF0IHRoZSBjb21wdXRlZCBDUkMgYW5kIHNpemUgb2YgdGhlCi0gICAgICAgICMgdW5jb21wcmVzc2VkIGRhdGEgbWF0Y2hlcyB0aGUgc3RvcmVkIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGUgc2l6ZQotICAgICAgICAjIHN0b3JlZCBpcyB0aGUgdHJ1ZSBmaWxlIHNpemUgbW9kIDIqKjMyLgotICAgICAgICBjcmMzMiwgaXNpemUgPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBzZWxmLl9yZWFkX2V4YWN0KDgpKQotICAgICAgICBpZiBjcmMzMiAhPSBzZWxmLmNyYzoKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNSQyBjaGVjayBmYWlsZWQgJXMgIT0gJXMiICUgKGhleChjcmMzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXgoc2VsZi5jcmMpKSkKLSAgICAgICAgZWxpZiBpc2l6ZSAhPSAoc2VsZi5zaXplICYgMHhmZmZmZmZmZik6Ci0gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJJbmNvcnJlY3QgbGVuZ3RoIG9mIGRhdGEgcHJvZHVjZWQiKQotCi0gICAgICAgICMgR3ppcCBmaWxlcyBjYW4gYmUgcGFkZGVkIHdpdGggemVyb2VzIGFuZCBzdGlsbCBoYXZlIGFyY2hpdmVzLgotICAgICAgICAjIENvbnN1bWUgYWxsIHplcm8gYnl0ZXMgYW5kIHNldCB0aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgZmlyc3QKLSAgICAgICAgIyBub24temVybyBieXRlLiBTZWUgaHR0cDovL3d3dy5nemlwLm9yZy8jZmFxOAotICAgICAgICBjID0gYiJceDAwIgotICAgICAgICB3aGlsZSBjID09IGIiXHgwMCI6Ci0gICAgICAgICAgICBjID0gc2VsZi5maWxlb2JqLnJlYWQoMSkKLSAgICAgICAgaWYgYzoKLSAgICAgICAgICAgIHNlbGYuZmlsZW9iai5wcmVwZW5kKGMsIFRydWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucGVlayhuKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNsb3NlZChzZWxmKToKQEAgLTUxMCw2ICszMDgsOCBAQAogICAgICAgICAgICAgICAgIHdyaXRlMzJ1KGZpbGVvYmosIHNlbGYuY3JjKQogICAgICAgICAgICAgICAgICMgc2VsZi5zaXplIG1heSBleGNlZWQgMkdCLCBvciBldmVuIDRHQgogICAgICAgICAgICAgICAgIHdyaXRlMzJ1KGZpbGVvYmosIHNlbGYuc2l6ZSAmIDB4ZmZmZmZmZmYpCisgICAgICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbG9zZSgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBteWZpbGVvYmogPSBzZWxmLm15ZmlsZW9iagogICAgICAgICAgICAgaWYgbXlmaWxlb2JqOgpAQCAtNTE3LDcgKzMxNyw3IEBACiAgICAgICAgICAgICAgICAgbXlmaWxlb2JqLmNsb3NlKCkKIAogICAgIGRlZiBmbHVzaChzZWxmLHpsaWJfbW9kZT16bGliLlpfU1lOQ19GTFVTSCk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgPT0gV1JJVEU6CiAgICAgICAgICAgICAjIEVuc3VyZSB0aGUgY29tcHJlc3NvcidzIGJ1ZmZlciBpcyBmbHVzaGVkCiAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoc2VsZi5jb21wcmVzcy5mbHVzaCh6bGliX21vZGUpKQpAQCAtNTM2LDEyICszMzYsNyBAQAogICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIGZpbGUnJycKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDYW4ndCByZXdpbmQgaW4gd3JpdGUgbW9kZSIpCi0gICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKDApCi0gICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCi0gICAgICAgIHNlbGYuZXh0cmFidWYgPSBiIiIKLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSAwCi0gICAgICAgIHNlbGYuZXh0cmFzdGFydCA9IDAKLSAgICAgICAgc2VsZi5vZmZzZXQgPSAwCisgICAgICAgIHNlbGYuX2J1ZmZlci5zZWVrKDApCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm1vZGUgPT0gUkVBRApAQCAtNTUyLDEzICszNDcsMTMgQEAKICAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKLSAgICAgICAgaWYgd2hlbmNlOgotICAgICAgICAgICAgaWYgd2hlbmNlID09IDE6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBvZmZzZXQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VlayBmcm9tIGVuZCBub3Qgc3VwcG9ydGVkJykKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKKyAgICAgICAgICAgIGlmIHdoZW5jZSAhPSBpby5TRUVLX1NFVDoKKyAgICAgICAgICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0ICsgb2Zmc2V0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VlayBmcm9tIGVuZCBub3Qgc3VwcG9ydGVkJykKICAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYub2Zmc2V0OgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05lZ2F0aXZlIHNlZWsgaW4gd3JpdGUgbW9kZScpCiAgICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0CkBAIC01NjcsNTUgKzM2MiwxNTYgQEAKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGNodW5rKQogICAgICAgICAgICAgc2VsZi53cml0ZShieXRlcyhjb3VudCAlIDEwMjQpKQogICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgotICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6Ci0gICAgICAgICAgICAgICAgIyBmb3IgbmVnYXRpdmUgc2VlaywgcmV3aW5kIGFuZCBkbyBwb3NpdGl2ZSBzZWVrCi0gICAgICAgICAgICAgICAgc2VsZi5yZXdpbmQoKQotICAgICAgICAgICAgY291bnQgPSBvZmZzZXQgLSBzZWxmLm9mZnNldAotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQgLy8gMTAyNCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWFkKDEwMjQpCi0gICAgICAgICAgICBzZWxmLnJlYWQoY291bnQgJSAxMDI0KQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnNlZWsob2Zmc2V0LCB3aGVuY2UpCiAKICAgICAgICAgcmV0dXJuIHNlbGYub2Zmc2V0CiAKICAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWRsaW5lKHNpemUpCisKKworY2xhc3MgX0d6aXBSZWFkZXIoX2NvbXByZXNzaW9uLkRlY29tcHJlc3NSZWFkZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oX1BhZGRlZEZpbGUoZnApLCB6bGliLmRlY29tcHJlc3NvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgd2JpdHM9LXpsaWIuTUFYX1dCSVRTKQorICAgICAgICAjIFNldCBmbGFnIGluZGljYXRpbmcgc3RhcnQgb2YgYSBuZXcgbWVtYmVyCisgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCisgICAgICAgIHNlbGYuX2xhc3RfbXRpbWUgPSBOb25lCisKKyAgICBkZWYgX2luaXRfcmVhZChzZWxmKToKKyAgICAgICAgc2VsZi5fY3JjID0gemxpYi5jcmMzMihiIiIpICYgMHhmZmZmZmZmZgorICAgICAgICBzZWxmLl9zdHJlYW1fc2l6ZSA9IDAgICMgRGVjb21wcmVzc2VkIHNpemUgb2YgdW5jb25jYXRlbmF0ZWQgc3RyZWFtCisKKyAgICBkZWYgX3JlYWRfZXhhY3Qoc2VsZiwgbik6CisgICAgICAgICcnJ1JlYWQgZXhhY3RseSAqbiogYnl0ZXMgZnJvbSBgc2VsZi5fZnBgCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgYmVjYXVzZSBzZWxmLl9mcCBtYXkgYmUgdW5idWZmZXJlZCwKKyAgICAgICAgaS5lLiByZXR1cm4gc2hvcnQgcmVhZHMuCisgICAgICAgICcnJworCisgICAgICAgIGRhdGEgPSBzZWxmLl9mcC5yZWFkKG4pCisgICAgICAgIHdoaWxlIGxlbihkYXRhKSA8IG46CisgICAgICAgICAgICBiID0gc2VsZi5fZnAucmVhZChuIC0gbGVuKGRhdGEpKQorICAgICAgICAgICAgaWYgbm90IGI6CisgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICAgICAgZGF0YSArPSBiCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgX3JlYWRfZ3ppcF9oZWFkZXIoc2VsZik6CisgICAgICAgIG1hZ2ljID0gc2VsZi5fZnAucmVhZCgyKQorICAgICAgICBpZiBtYWdpYyA9PSBiJyc6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBpZiBtYWdpYyAhPSBiJ1wwMzdcMjEzJzoKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05vdCBhIGd6aXBwZWQgZmlsZSAoJXIpJyAlIG1hZ2ljKQorCisgICAgICAgIChtZXRob2QsIGZsYWcsCisgICAgICAgICBzZWxmLl9sYXN0X210aW1lKSA9IHN0cnVjdC51bnBhY2soIjxCQkl4eCIsIHNlbGYuX3JlYWRfZXhhY3QoOCkpCisgICAgICAgIGlmIG1ldGhvZCAhPSA4OgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignVW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnKQorCisgICAgICAgIGlmIGZsYWcgJiBGRVhUUkE6CisgICAgICAgICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSBleHRyYSBmaWVsZCwgaWYgcHJlc2VudAorICAgICAgICAgICAgZXh0cmFfbGVuLCA9IHN0cnVjdC51bnBhY2soIjxIIiwgc2VsZi5fcmVhZF9leGFjdCgyKSkKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfZXhhY3QoZXh0cmFfbGVuKQorICAgICAgICBpZiBmbGFnICYgRk5BTUU6CisgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZpbGVuYW1lCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLl9mcC5yZWFkKDEpCisgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZmxhZyAmIEZDT01NRU5UOgorICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBjb250YWluaW5nIGEgY29tbWVudAorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzID0gc2VsZi5fZnAucmVhZCgxKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHM9PWInXDAwMCc6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGZsYWcgJiBGSENSQzoKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfZXhhY3QoMikgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIDE2LWJpdCBoZWFkZXIgQ1JDCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKICAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICAjIFNob3J0Y3V0IGNvbW1vbiBjYXNlIC0gbmV3bGluZSBmb3VuZCBpbiBidWZmZXIuCi0gICAgICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICAgICAgaSA9IHNlbGYuZXh0cmFidWYuZmluZChiJ1xuJywgb2Zmc2V0KSArIDEKLSAgICAgICAgICAgIGlmIGkgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFzaXplIC09IGkgLSBvZmZzZXQKLSAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSBpIC0gb2Zmc2V0Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBpXQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFsbCgpCisgICAgICAgICMgc2l6ZT0wIGlzIHNwZWNpYWwgYmVjYXVzZSBkZWNvbXByZXNzKG1heF9sZW5ndGg9MCkgaXMgbm90IHN1cHBvcnRlZAorICAgICAgICBpZiBub3Qgc2l6ZToKKyAgICAgICAgICAgIHJldHVybiBiIiIKIAotICAgICAgICAgICAgc2l6ZSA9IHN5cy5tYXhzaXplCi0gICAgICAgICAgICByZWFkc2l6ZSA9IHNlbGYubWluX3JlYWRzaXplCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWFkc2l6ZSA9IHNpemUKLSAgICAgICAgYnVmcyA9IFtdCi0gICAgICAgIHdoaWxlIHNpemUgIT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLnJlYWQocmVhZHNpemUpCi0gICAgICAgICAgICBpID0gYy5maW5kKGInXG4nKQorICAgICAgICAjIEZvciBjZXJ0YWluIGlucHV0IGRhdGEsIGEgc2luZ2xlCisgICAgICAgICMgY2FsbCB0byBkZWNvbXByZXNzKCkgbWF5IG5vdCByZXR1cm4KKyAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgIyBFbmRpbmcgY2FzZTogd2UndmUgY29tZSB0byB0aGUgZW5kIG9mIGEgbWVtYmVyIGluIHRoZSBmaWxlLAorICAgICAgICAgICAgICAgICMgc28gZmluaXNoIHVwIHRoaXMgbWVtYmVyLCBhbmQgcmVhZCBhIG5ldyBnemlwIGhlYWRlci4KKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSBDUkMgYW5kIGZpbGUgc2l6ZSwgYW5kIHNldCB0aGUgZmxhZyBzbyB3ZSByZWFkCisgICAgICAgICAgICAgICAgIyBhIG5ldyBtZW1iZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2VvZigpCisgICAgICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBzZWxmLl9kZWNvbXBfZmFjdG9yeSgKKyAgICAgICAgICAgICAgICAgICAgKipzZWxmLl9kZWNvbXBfYXJncykKIAotICAgICAgICAgICAgIyBXZSBzZXQgaT1zaXplIHRvIGJyZWFrIG91dCBvZiB0aGUgbG9vcCB1bmRlciB0d28KLSAgICAgICAgICAgICMgY29uZGl0aW9uczogMSkgdGhlcmUncyBubyBuZXdsaW5lLCBhbmQgdGhlIGNodW5rIGlzCi0gICAgICAgICAgICAjIGxhcmdlciB0aGFuIHNpemUsIG9yIDIpIHRoZXJlIGlzIGEgbmV3bGluZSwgYnV0IHRoZQotICAgICAgICAgICAgIyByZXN1bHRpbmcgbGluZSB3b3VsZCBiZSBsb25nZXIgdGhhbiAnc2l6ZScuCi0gICAgICAgICAgICBpZiAoc2l6ZSA8PSBpKSBvciAoaSA9PSAtMSBhbmQgbGVuKGMpID4gc2l6ZSk6Ci0gICAgICAgICAgICAgICAgaSA9IHNpemUgLSAxCisgICAgICAgICAgICBpZiBzZWxmLl9uZXdfbWVtYmVyOgorICAgICAgICAgICAgICAgICMgSWYgdGhlIF9uZXdfbWVtYmVyIGZsYWcgaXMgc2V0LCB3ZSBoYXZlIHRvCisgICAgICAgICAgICAgICAgIyBqdW1wIHRvIHRoZSBuZXh0IG1lbWJlciwgaWYgdGhlcmUgaXMgb25lLgorICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlYWRfZ3ppcF9oZWFkZXIoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IEZhbHNlCiAKLSAgICAgICAgICAgIGlmIGkgPj0gMCBvciBjID09IGInJzoKLSAgICAgICAgICAgICAgICBidWZzLmFwcGVuZChjWzppICsgMV0pICAgICMgQWRkIHBvcnRpb24gb2YgbGFzdCBjaHVuawotICAgICAgICAgICAgICAgIHNlbGYuX3VucmVhZChjW2kgKyAxOl0pICAgIyBQdXNoIGJhY2sgcmVzdCBvZiBjaHVuaworICAgICAgICAgICAgIyBSZWFkIGEgY2h1bmsgb2YgZGF0YSBmcm9tIHRoZSBmaWxlCisgICAgICAgICAgICBidWYgPSBzZWxmLl9mcC5yZWFkKGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpCisKKyAgICAgICAgICAgIHVuY29tcHJlc3MgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhidWYsIHNpemUpCisgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsICE9IGIiIjoKKyAgICAgICAgICAgICAgICBzZWxmLl9mcC5wcmVwZW5kKHNlbGYuX2RlY29tcHJlc3Nvci51bmNvbnN1bWVkX3RhaWwpCisgICAgICAgICAgICBlbGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSAhPSBiIiI6CisgICAgICAgICAgICAgICAgIyBQcmVwZW5kIHRoZSBhbHJlYWR5IHJlYWQgYnl0ZXMgdG8gdGhlIGZpbGVvYmogc28gdGhleSBjYW4KKyAgICAgICAgICAgICAgICAjIGJlIHNlZW4gYnkgX3JlYWRfZW9mKCkgYW5kIF9yZWFkX2d6aXBfaGVhZGVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9mcC5wcmVwZW5kKHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSkKKworICAgICAgICAgICAgaWYgdW5jb21wcmVzcyAhPSBiIiI6CiAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGJ1ZiA9PSBiIiI6CisgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQogCi0gICAgICAgICAgICAjIEFwcGVuZCBjaHVuayB0byBsaXN0LCBkZWNyZWFzZSAnc2l6ZScsCi0gICAgICAgICAgICBidWZzLmFwcGVuZChjKQotICAgICAgICAgICAgc2l6ZSA9IHNpemUgLSBsZW4oYykKLSAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNpemUsIHJlYWRzaXplICogMikKLSAgICAgICAgaWYgcmVhZHNpemUgPiBzZWxmLm1pbl9yZWFkc2l6ZToKLSAgICAgICAgICAgIHNlbGYubWluX3JlYWRzaXplID0gbWluKHJlYWRzaXplLCBzZWxmLm1pbl9yZWFkc2l6ZSAqIDIsIDUxMikKLSAgICAgICAgcmV0dXJuIGInJy5qb2luKGJ1ZnMpICMgUmV0dXJuIHJlc3VsdGluZyBsaW5lCisgICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEoIHVuY29tcHJlc3MgKQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHVuY29tcHJlc3MpCisgICAgICAgIHJldHVybiB1bmNvbXByZXNzCiAKKyAgICBkZWYgX2FkZF9yZWFkX2RhdGEoc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYuX2NyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5fY3JjKSAmIDB4ZmZmZmZmZmYKKyAgICAgICAgc2VsZi5fc3RyZWFtX3NpemUgPSBzZWxmLl9zdHJlYW1fc2l6ZSArIGxlbihkYXRhKQorCisgICAgZGVmIF9yZWFkX2VvZihzZWxmKToKKyAgICAgICAgIyBXZSd2ZSByZWFkIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUKKyAgICAgICAgIyBXZSBjaGVjayB0aGUgdGhhdCB0aGUgY29tcHV0ZWQgQ1JDIGFuZCBzaXplIG9mIHRoZQorICAgICAgICAjIHVuY29tcHJlc3NlZCBkYXRhIG1hdGNoZXMgdGhlIHN0b3JlZCB2YWx1ZXMuICBOb3RlIHRoYXQgdGhlIHNpemUKKyAgICAgICAgIyBzdG9yZWQgaXMgdGhlIHRydWUgZmlsZSBzaXplIG1vZCAyKiozMi4KKyAgICAgICAgY3JjMzIsIGlzaXplID0gc3RydWN0LnVucGFjaygiPElJIiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKKyAgICAgICAgaWYgY3JjMzIgIT0gc2VsZi5fY3JjOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ1JDIGNoZWNrIGZhaWxlZCAlcyAhPSAlcyIgJSAoaGV4KGNyYzMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleChzZWxmLl9jcmMpKSkKKyAgICAgICAgZWxpZiBpc2l6ZSAhPSAoc2VsZi5fc3RyZWFtX3NpemUgJiAweGZmZmZmZmZmKToKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkluY29ycmVjdCBsZW5ndGggb2YgZGF0YSBwcm9kdWNlZCIpCisKKyAgICAgICAgIyBHemlwIGZpbGVzIGNhbiBiZSBwYWRkZWQgd2l0aCB6ZXJvZXMgYW5kIHN0aWxsIGhhdmUgYXJjaGl2ZXMuCisgICAgICAgICMgQ29uc3VtZSBhbGwgemVybyBieXRlcyBhbmQgc2V0IHRoZSBmaWxlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdAorICAgICAgICAjIG5vbi16ZXJvIGJ5dGUuIFNlZSBodHRwOi8vd3d3Lmd6aXAub3JnLyNmYXE4CisgICAgICAgIGMgPSBiIlx4MDAiCisgICAgICAgIHdoaWxlIGMgPT0gYiJceDAwIjoKKyAgICAgICAgICAgIGMgPSBzZWxmLl9mcC5yZWFkKDEpCisgICAgICAgIGlmIGM6CisgICAgICAgICAgICBzZWxmLl9mcC5wcmVwZW5kKGMpCisKKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5fcmV3aW5kKCkKKyAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKIAogZGVmIGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSk6CiAgICAgIiIiQ29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCBhbmQgcmV0dXJuIHRoZSBjb21wcmVzc2VkIHN0cmluZy4KZGlmZiAtLWdpdCBhL0xpYi9oZWFwcS5weSBiL0xpYi9oZWFwcS5weQppbmRleCBkNjE1MjM5Li4wN2FmMzdlIDEwMDY0NAotLS0gYS9MaWIvaGVhcHEucHkKKysrIGIvTGliL2hlYXBxLnB5CkBAIC0xMjcsOCArMTI3LDYgQEAKIF9fYWxsX18gPSBbJ2hlYXBwdXNoJywgJ2hlYXBwb3AnLCAnaGVhcGlmeScsICdoZWFwcmVwbGFjZScsICdtZXJnZScsCiAgICAgICAgICAgICdubGFyZ2VzdCcsICduc21hbGxlc3QnLCAnaGVhcHB1c2hwb3AnXQogCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlLCBjb3VudCwgdGVlLCBjaGFpbgotCiBkZWYgaGVhcHB1c2goaGVhcCwgaXRlbSk6CiAgICAgIiIiUHVzaCBpdGVtIG9udG8gaGVhcCwgbWFpbnRhaW5pbmcgdGhlIGhlYXAgaW52YXJpYW50LiIiIgogICAgIGhlYXAuYXBwZW5kKGl0ZW0pCkBAIC0xNDEsOSArMTM5LDggQEAKICAgICAgICAgcmV0dXJuaXRlbSA9IGhlYXBbMF0KICAgICAgICAgaGVhcFswXSA9IGxhc3RlbHQKICAgICAgICAgX3NpZnR1cChoZWFwLCAwKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybml0ZW0gPSBsYXN0ZWx0Ci0gICAgcmV0dXJuIHJldHVybml0ZW0KKyAgICAgICAgcmV0dXJuIHJldHVybml0ZW0KKyAgICByZXR1cm4gbGFzdGVsdAogCiBkZWYgaGVhcHJlcGxhY2UoaGVhcCwgaXRlbSk6CiAgICAgIiIiUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLgpAQCAtMTc5LDEyICsxNzYsMjIgQEAKICAgICBmb3IgaSBpbiByZXZlcnNlZChyYW5nZShuLy8yKSk6CiAgICAgICAgIF9zaWZ0dXAoeCwgaSkKIAotZGVmIF9oZWFwcHVzaHBvcF9tYXgoaGVhcCwgaXRlbSk6Ci0gICAgIiIiTWF4aGVhcCB2ZXJzaW9uIG9mIGEgaGVhcHB1c2ggZm9sbG93ZWQgYnkgYSBoZWFwcG9wLiIiIgotICAgIGlmIGhlYXAgYW5kIGl0ZW0gPCBoZWFwWzBdOgotICAgICAgICBpdGVtLCBoZWFwWzBdID0gaGVhcFswXSwgaXRlbQorZGVmIF9oZWFwcG9wX21heChoZWFwKToKKyAgICAiIiJNYXhoZWFwIHZlcnNpb24gb2YgYSBoZWFwcG9wLiIiIgorICAgIGxhc3RlbHQgPSBoZWFwLnBvcCgpICAgICMgcmFpc2VzIGFwcHJvcHJpYXRlIEluZGV4RXJyb3IgaWYgaGVhcCBpcyBlbXB0eQorICAgIGlmIGhlYXA6CisgICAgICAgIHJldHVybml0ZW0gPSBoZWFwWzBdCisgICAgICAgIGhlYXBbMF0gPSBsYXN0ZWx0CiAgICAgICAgIF9zaWZ0dXBfbWF4KGhlYXAsIDApCi0gICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgcmV0dXJuIHJldHVybml0ZW0KKyAgICByZXR1cm4gbGFzdGVsdAorCitkZWYgX2hlYXByZXBsYWNlX21heChoZWFwLCBpdGVtKToKKyAgICAiIiJNYXhoZWFwIHZlcnNpb24gb2YgYSBoZWFwcG9wIGZvbGxvd2VkIGJ5IGEgaGVhcHB1c2guIiIiCisgICAgcmV0dXJuaXRlbSA9IGhlYXBbMF0gICAgIyByYWlzZXMgYXBwcm9wcmlhdGUgSW5kZXhFcnJvciBpZiBoZWFwIGlzIGVtcHR5CisgICAgaGVhcFswXSA9IGl0ZW0KKyAgICBfc2lmdHVwX21heChoZWFwLCAwKQorICAgIHJldHVybiByZXR1cm5pdGVtCiAKIGRlZiBfaGVhcGlmeV9tYXgoeCk6CiAgICAgIiIiVHJhbnNmb3JtIGxpc3QgaW50byBhIG1heGhlYXAsIGluLXBsYWNlLCBpbiBPKGxlbih4KSkgdGltZS4iIiIKQEAgLTE5Miw0MiArMTk5LDYgQEAKICAgICBmb3IgaSBpbiByZXZlcnNlZChyYW5nZShuLy8yKSk6CiAgICAgICAgIF9zaWZ0dXBfbWF4KHgsIGkpCiAKLWRlZiBubGFyZ2VzdChuLCBpdGVyYWJsZSk6Ci0gICAgIiIiRmluZCB0aGUgbiBsYXJnZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC4KLQotICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUsIHJldmVyc2U9VHJ1ZSlbOm5dCi0gICAgIiIiCi0gICAgaWYgbiA8IDA6Ci0gICAgICAgIHJldHVybiBbXQotICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKLSAgICByZXN1bHQgPSBsaXN0KGlzbGljZShpdCwgbikpCi0gICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgIGhlYXBpZnkocmVzdWx0KQotICAgIF9oZWFwcHVzaHBvcCA9IGhlYXBwdXNocG9wCi0gICAgZm9yIGVsZW0gaW4gaXQ6Ci0gICAgICAgIF9oZWFwcHVzaHBvcChyZXN1bHQsIGVsZW0pCi0gICAgcmVzdWx0LnNvcnQocmV2ZXJzZT1UcnVlKQotICAgIHJldHVybiByZXN1bHQKLQotZGVmIG5zbWFsbGVzdChuLCBpdGVyYWJsZSk6Ci0gICAgIiIiRmluZCB0aGUgbiBzbWFsbGVzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuCi0KLSAgICBFcXVpdmFsZW50IHRvOiAgc29ydGVkKGl0ZXJhYmxlKVs6bl0KLSAgICAiIiIKLSAgICBpZiBuIDwgMDoKLSAgICAgICAgcmV0dXJuIFtdCi0gICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgIHJlc3VsdCA9IGxpc3QoaXNsaWNlKGl0LCBuKSkKLSAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgX2hlYXBpZnlfbWF4KHJlc3VsdCkKLSAgICBfaGVhcHB1c2hwb3AgPSBfaGVhcHB1c2hwb3BfbWF4Ci0gICAgZm9yIGVsZW0gaW4gaXQ6Ci0gICAgICAgIF9oZWFwcHVzaHBvcChyZXN1bHQsIGVsZW0pCi0gICAgcmVzdWx0LnNvcnQoKQotICAgIHJldHVybiByZXN1bHQKLQogIyAnaGVhcCcgaXMgYSBoZWFwIGF0IGFsbCBpbmRpY2VzID49IHN0YXJ0cG9zLCBleGNlcHQgcG9zc2libHkgZm9yIHBvcy4gIHBvcwogIyBpcyB0aGUgaW5kZXggb2YgYSBsZWFmIHdpdGggYSBwb3NzaWJseSBvdXQtb2Ytb3JkZXIgdmFsdWUuICBSZXN0b3JlIHRoZQogIyBoZWFwIGludmFyaWFudC4KQEAgLTM0MCwxMyArMzExLDcgQEAKICAgICBoZWFwW3Bvc10gPSBuZXdpdGVtCiAgICAgX3NpZnRkb3duX21heChoZWFwLCBzdGFydHBvcywgcG9zKQogCi0jIElmIGF2YWlsYWJsZSwgdXNlIEMgaW1wbGVtZW50YXRpb24KLXRyeToKLSAgICBmcm9tIF9oZWFwcSBpbXBvcnQgKgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotZGVmIG1lcmdlKCppdGVyYWJsZXMpOgorZGVmIG1lcmdlKCppdGVyYWJsZXMsIGtleT1Ob25lLCByZXZlcnNlPUZhbHNlKToKICAgICAnJydNZXJnZSBtdWx0aXBsZSBzb3J0ZWQgaW5wdXRzIGludG8gYSBzaW5nbGUgc29ydGVkIG91dHB1dC4KIAogICAgIFNpbWlsYXIgdG8gc29ydGVkKGl0ZXJ0b29scy5jaGFpbigqaXRlcmFibGVzKSkgYnV0IHJldHVybnMgYSBnZW5lcmF0b3IsCkBAIC0zNTYsNTEgKzMyMSwxNTggQEAKICAgICA+Pj4gbGlzdChtZXJnZShbMSwzLDUsN10sIFswLDIsNCw4XSwgWzUsMTAsMTUsMjBdLCBbXSwgWzI1XSkpCiAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDUsIDcsIDgsIDEwLCAxNSwgMjAsIDI1XQogCisgICAgSWYgKmtleSogaXMgbm90IE5vbmUsIGFwcGxpZXMgYSBrZXkgZnVuY3Rpb24gdG8gZWFjaCBlbGVtZW50IHRvIGRldGVybWluZQorICAgIGl0cyBzb3J0IG9yZGVyLgorCisgICAgPj4+IGxpc3QobWVyZ2UoWydkb2cnLCAnaG9yc2UnXSwgWydjYXQnLCAnZmlzaCcsICdrYW5nYXJvbyddLCBrZXk9bGVuKSkKKyAgICBbJ2RvZycsICdjYXQnLCAnZmlzaCcsICdob3JzZScsICdrYW5nYXJvbyddCisKICAgICAnJycKLSAgICBfaGVhcHBvcCwgX2hlYXByZXBsYWNlLCBfU3RvcEl0ZXJhdGlvbiA9IGhlYXBwb3AsIGhlYXByZXBsYWNlLCBTdG9wSXRlcmF0aW9uCi0gICAgX2xlbiA9IGxlbgogCiAgICAgaCA9IFtdCiAgICAgaF9hcHBlbmQgPSBoLmFwcGVuZAotICAgIGZvciBpdG51bSwgaXQgaW4gZW51bWVyYXRlKG1hcChpdGVyLCBpdGVyYWJsZXMpKToKKworICAgIGlmIHJldmVyc2U6CisgICAgICAgIF9oZWFwaWZ5ID0gX2hlYXBpZnlfbWF4CisgICAgICAgIF9oZWFwcG9wID0gX2hlYXBwb3BfbWF4CisgICAgICAgIF9oZWFwcmVwbGFjZSA9IF9oZWFwcmVwbGFjZV9tYXgKKyAgICAgICAgZGlyZWN0aW9uID0gLTEKKyAgICBlbHNlOgorICAgICAgICBfaGVhcGlmeSA9IGhlYXBpZnkKKyAgICAgICAgX2hlYXBwb3AgPSBoZWFwcG9wCisgICAgICAgIF9oZWFwcmVwbGFjZSA9IGhlYXByZXBsYWNlCisgICAgICAgIGRpcmVjdGlvbiA9IDEKKworICAgIGlmIGtleSBpcyBOb25lOgorICAgICAgICBmb3Igb3JkZXIsIGl0IGluIGVudW1lcmF0ZShtYXAoaXRlciwgaXRlcmFibGVzKSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV4dCA9IGl0Ll9fbmV4dF9fCisgICAgICAgICAgICAgICAgaF9hcHBlbmQoW25leHQoKSwgb3JkZXIgKiBkaXJlY3Rpb24sIG5leHRdKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBfaGVhcGlmeShoKQorICAgICAgICB3aGlsZSBsZW4oaCkgPiAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBvcmRlciwgbmV4dCA9IHMgPSBoWzBdCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIHNbMF0gPSBuZXh0KCkgICAgICAgICAgICMgcmFpc2VzIFN0b3BJdGVyYXRpb24gd2hlbiBleGhhdXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKGgsIHMpICAgICAgIyByZXN0b3JlIGhlYXAgY29uZGl0aW9uCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBfaGVhcHBvcChoKSAgICAgICAgICAgICAgICAgIyByZW1vdmUgZW1wdHkgaXRlcmF0b3IKKyAgICAgICAgaWYgaDoKKyAgICAgICAgICAgICMgZmFzdCBjYXNlIHdoZW4gb25seSBhIHNpbmdsZSBpdGVyYXRvciByZW1haW5zCisgICAgICAgICAgICB2YWx1ZSwgb3JkZXIsIG5leHQgPSBoWzBdCisgICAgICAgICAgICB5aWVsZCB2YWx1ZQorICAgICAgICAgICAgeWllbGQgZnJvbSBuZXh0Ll9fc2VsZl9fCisgICAgICAgIHJldHVybgorCisgICAgZm9yIG9yZGVyLCBpdCBpbiBlbnVtZXJhdGUobWFwKGl0ZXIsIGl0ZXJhYmxlcykpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXh0ID0gaXQuX19uZXh0X18KLSAgICAgICAgICAgIGhfYXBwZW5kKFtuZXh0KCksIGl0bnVtLCBuZXh0XSkKLSAgICAgICAgZXhjZXB0IF9TdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgdmFsdWUgPSBuZXh0KCkKKyAgICAgICAgICAgIGhfYXBwZW5kKFtrZXkodmFsdWUpLCBvcmRlciAqIGRpcmVjdGlvbiwgdmFsdWUsIG5leHRdKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICAgICAgICAgIHBhc3MKLSAgICBoZWFwaWZ5KGgpCi0KLSAgICB3aGlsZSBfbGVuKGgpID4gMToKKyAgICBfaGVhcGlmeShoKQorICAgIHdoaWxlIGxlbihoKSA+IDE6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdiwgaXRudW0sIG5leHQgPSBzID0gaFswXQotICAgICAgICAgICAgICAgIHlpZWxkIHYKLSAgICAgICAgICAgICAgICBzWzBdID0gbmV4dCgpICAgICAgICAgICAgICAgIyByYWlzZXMgU3RvcEl0ZXJhdGlvbiB3aGVuIGV4aGF1c3RlZAotICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShoLCBzKSAgICAgICAgICAjIHJlc3RvcmUgaGVhcCBjb25kaXRpb24KLSAgICAgICAgZXhjZXB0IF9TdG9wSXRlcmF0aW9uOgotICAgICAgICAgICAgX2hlYXBwb3AoaCkgICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSBlbXB0eSBpdGVyYXRvcgorICAgICAgICAgICAgICAgIGtleV92YWx1ZSwgb3JkZXIsIHZhbHVlLCBuZXh0ID0gcyA9IGhbMF0KKyAgICAgICAgICAgICAgICB5aWVsZCB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gbmV4dCgpCisgICAgICAgICAgICAgICAgc1swXSA9IGtleSh2YWx1ZSkKKyAgICAgICAgICAgICAgICBzWzJdID0gdmFsdWUKKyAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UoaCwgcykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBfaGVhcHBvcChoKQogICAgIGlmIGg6Ci0gICAgICAgICMgZmFzdCBjYXNlIHdoZW4gb25seSBhIHNpbmdsZSBpdGVyYXRvciByZW1haW5zCi0gICAgICAgIHYsIGl0bnVtLCBuZXh0ID0gaFswXQotICAgICAgICB5aWVsZCB2CisgICAgICAgIGtleV92YWx1ZSwgb3JkZXIsIHZhbHVlLCBuZXh0ID0gaFswXQorICAgICAgICB5aWVsZCB2YWx1ZQogICAgICAgICB5aWVsZCBmcm9tIG5leHQuX19zZWxmX18KIAotIyBFeHRlbmQgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBuc21hbGxlc3QgYW5kIG5sYXJnZXN0IHRvIHVzZSBhIGtleT0gYXJndW1lbnQKLV9uc21hbGxlc3QgPSBuc21hbGxlc3QKKworIyBBbGdvcml0aG0gbm90ZXMgZm9yIG5sYXJnZXN0KCkgYW5kIG5zbWFsbGVzdCgpCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgTWFrZSBhIHNpbmdsZSBwYXNzIG92ZXIgdGhlIGRhdGEgd2hpbGUga2VlcGluZyB0aGUgayBtb3N0IGV4dHJlbWUgdmFsdWVzCisjIGluIGEgaGVhcC4gIE1lbW9yeSBjb25zdW1wdGlvbiBpcyBsaW1pdGVkIHRvIGtlZXBpbmcgayB2YWx1ZXMgaW4gYSBsaXN0LgorIworIyBNZWFzdXJlZCBwZXJmb3JtYW5jZSBmb3IgcmFuZG9tIGlucHV0czoKKyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBjb21wYXJpc29ucworIyAgICBuIGlucHV0cyAgICAgay1leHRyZW1lIHZhbHVlcyAgKGF2ZXJhZ2Ugb2YgNSB0cmlhbHMpICAgJSBtb3JlIHRoYW4gbWluKCkKKyMgLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tCisjICAgICAgMSwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAgICAgIDMsMzE3ICAgICAgICAgICAgICAgMjMxLjclCisjICAgICAxMCwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAgICAgMTQsMDQ2ICAgICAgICAgICAgICAgIDQwLjUlCisjICAgIDEwMCwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAgICAxMDUsNzQ5ICAgICAgICAgICAgICAgICA1LjclCisjICAxLDAwMCwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAgMSwwMDcsNzUxICAgICAgICAgICAgICAgICAwLjglCisjIDEwLDAwMCwwMDAgICAgICAgICAgIDEwMCAgICAgICAgICAgICAxMCwwMDksNDAxICAgICAgICAgICAgICAgICAwLjElCisjCisjIFRoZW9yZXRpY2FsIG51bWJlciBvZiBjb21wYXJpc29ucyBmb3IgayBzbWFsbGVzdCBvZiBuIHJhbmRvbSBpbnB1dHM6CisjCisjIFN0ZXAgICBDb21wYXJpc29ucyAgICAgICAgICAgICAgICAgIEFjdGlvbgorIyAtLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgIDEgICAgIDEuNjYgKiBrICAgICAgICAgICAgICAgICAgICAgaGVhcGlmeSB0aGUgZmlyc3Qgay1pbnB1dHMKKyMgIDIgICAgIG4gLSBrICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZSByZW1haW5pbmcgZWxlbWVudHMgdG8gdG9wIG9mIGhlYXAKKyMgIDMgICAgIGsgKiAoMSArIGxnMihrKSkgKiBsbihuL2spICAgcmVwbGFjZSB0aGUgdG9wbW9zdCB2YWx1ZSBvbiB0aGUgaGVhcAorIyAgNCAgICAgayAqIGxnMihrKSAtIChrLzIpICAgICAgICAgICBmaW5hbCBzb3J0IG9mIHRoZSBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMKKyMKKyMgQ29tYmluaW5nIGFuZCBzaW1wbGlmeWluZyBmb3IgYSByb3VnaCBlc3RpbWF0ZSBnaXZlczoKKyMKKyMgICAgICAgIGNvbXBhcmlzb25zID0gbiArIGsgKiAobG9nKGssIDIpICogbG9nKG4vaykgKyBsb2coaywgMikgKyBsb2cobi9rKSkKKyMKKyMgQ29tcHV0aW5nIHRoZSBudW1iZXIgb2YgY29tcGFyaXNvbnMgZm9yIHN0ZXAgMzoKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgKiBGb3IgdGhlIGktdGggbmV3IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLCB0aGUgcHJvYmFiaWxpdHkgb2YgYmVpbmcgaW4gdGhlCisjICAgayBtb3N0IGV4dHJlbWUgdmFsdWVzIGlzIGsvaS4gIEZvciBleGFtcGxlLCB0aGUgcHJvYmFiaWxpdHkgb2YgdGhlIDEwMXN0CisjICAgdmFsdWUgc2VlbiBiZWluZyBpbiB0aGUgMTAwIG1vc3QgZXh0cmVtZSB2YWx1ZXMgaXMgMTAwLzEwMS4KKyMgKiBJZiB0aGUgdmFsdWUgaXMgYSBuZXcgZXh0cmVtZSB2YWx1ZSwgdGhlIGNvc3Qgb2YgaW5zZXJ0aW5nIGl0IGludG8gdGhlCisjICAgaGVhcCBpcyAxICsgbG9nKGssIDIpLgorIyAqIFRoZSBwcm9iYWJpbGl0eSB0aW1lcyB0aGUgY29zdCBnaXZlczoKKyMgICAgICAgICAgICAoay9pKSAqICgxICsgbG9nKGssIDIpKQorIyAqIFN1bW1pbmcgYWNyb3NzIHRoZSByZW1haW5pbmcgbi1rIGVsZW1lbnRzIGdpdmVzOgorIyAgICAgICAgICAgIHN1bSgoay9pKSAqICgxICsgbG9nKGssIDIpKSBmb3IgaSBpbiByYW5nZShrKzEsIG4rMSkpCisjICogVGhpcyByZWR1Y2VzIHRvOgorIyAgICAgICAgICAgIChIKG4pIC0gSChrKSkgKiBrICogKDEgKyBsb2coaywgMikpCisjICogV2hlcmUgSChuKSBpcyB0aGUgbi10aCBoYXJtb25pYyBudW1iZXIgZXN0aW1hdGVkIGJ5OgorIyAgICAgICAgICAgIGdhbW1hID0gMC41NzcyMTU2NjQ5CisjICAgICAgICAgICAgSChuKSA9IGxvZyhuLCBlKSArIGdhbW1hICsgMSAvICgyICogbikKKyMgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhcm1vbmljX3Nlcmllc18obWF0aGVtYXRpY3MpI1JhdGVfb2ZfZGl2ZXJnZW5jZQorIyAqIFN1YnN0aXR1dGluZyB0aGUgSChuKSBmb3JtdWxhOgorIyAgICAgICAgICAgIGNvbXBhcmlzb25zID0gayAqICgxICsgbG9nKGssIDIpKSAqIChsb2cobi9rLCBlKSArICgxL24gLSAxL2spIC8gMikKKyMKKyMgV29yc3QtY2FzZSBmb3Igc3RlcCAzOgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEluIHRoZSB3b3JzdCBjYXNlLCB0aGUgaW5wdXQgZGF0YSBpcyByZXZlcnNlZCBzb3J0ZWQgc28gdGhhdCBldmVyeSBuZXcgZWxlbWVudAorIyBtdXN0IGJlIGluc2VydGVkIGluIHRoZSBoZWFwOgorIworIyAgICAgICAgICAgICBjb21wYXJpc29ucyA9IDEuNjYgKiBrICsgbG9nKGssIDIpICogKG4gLSBrKQorIworIyBBbHRlcm5hdGl2ZSBBbGdvcml0aG1zCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT3RoZXIgYWxnb3JpdGhtcyB3ZXJlIG5vdCB1c2VkIGJlY2F1c2UgdGhleToKKyMgMSkgVG9vayBtdWNoIG1vcmUgYXV4aWxpYXJ5IG1lbW9yeSwKKyMgMikgTWFkZSBtdWx0aXBsZSBwYXNzZXMgb3ZlciB0aGUgZGF0YS4KKyMgMykgTWFkZSBtb3JlIGNvbXBhcmlzb25zIGluIGNvbW1vbiBjYXNlcyAoc21hbGwgaywgbGFyZ2Ugbiwgc2VtaS1yYW5kb20gaW5wdXQpLgorIyBTZWUgdGhlIG1vcmUgZGV0YWlsZWQgY29tcGFyaXNvbiBvZiBhcHByb2FjaCBhdDoKKyMgaHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NTczLWNvbXBhcmUtYWxnb3JpdGhtcy1mb3ItaGVhcHFzbWFsbGVzdAorCiBkZWYgbnNtYWxsZXN0KG4sIGl0ZXJhYmxlLCBrZXk9Tm9uZSk6CiAgICAgIiIiRmluZCB0aGUgbiBzbWFsbGVzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuCiAKICAgICBFcXVpdmFsZW50IHRvOiAgc29ydGVkKGl0ZXJhYmxlLCBrZXk9a2V5KVs6bl0KICAgICAiIiIKLSAgICAjIFNob3J0LWN1dCBmb3Igbj09MSBpcyB0byB1c2UgbWluKCkgd2hlbiBsZW4oaXRlcmFibGUpPjAKKworICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtaW4oKQogICAgIGlmIG4gPT0gMToKICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgICAgICBoZWFkID0gbGlzdChpc2xpY2UoaXQsIDEpKQotICAgICAgICBpZiBub3QgaGVhZDoKLSAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBzZW50aW5lbCA9IG9iamVjdCgpCiAgICAgICAgIGlmIGtleSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIFttaW4oY2hhaW4oaGVhZCwgaXQpKV0KLSAgICAgICAgcmV0dXJuIFttaW4oY2hhaW4oaGVhZCwgaXQpLCBrZXk9a2V5KV0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1pbihpdCwgZGVmYXVsdD1zZW50aW5lbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IG1pbihpdCwgZGVmYXVsdD1zZW50aW5lbCwga2V5PWtleSkKKyAgICAgICAgcmV0dXJuIFtdIGlmIHJlc3VsdCBpcyBzZW50aW5lbCBlbHNlIFtyZXN1bHRdCiAKICAgICAjIFdoZW4gbj49c2l6ZSwgaXQncyBmYXN0ZXIgdG8gdXNlIHNvcnRlZCgpCiAgICAgdHJ5OgpAQCAtNDEzLDMyICs0ODUsNTcgQEAKIAogICAgICMgV2hlbiBrZXkgaXMgbm9uZSwgdXNlIHNpbXBsZXIgZGVjb3JhdGlvbgogICAgIGlmIGtleSBpcyBOb25lOgotICAgICAgICBpdCA9IHppcChpdGVyYWJsZSwgY291bnQoKSkgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWNvcmF0ZQotICAgICAgICByZXN1bHQgPSBfbnNtYWxsZXN0KG4sIGl0KQotICAgICAgICByZXR1cm4gW3JbMF0gZm9yIHIgaW4gcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgIyB1bmRlY29yYXRlCisgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKKyAgICAgICAgIyBwdXQgdGhlIHJhbmdlKG4pIGZpcnN0IHNvIHRoYXQgemlwKCkgZG9lc24ndAorICAgICAgICAjIGNvbnN1bWUgb25lIHRvbyBtYW55IGVsZW1lbnRzIGZyb20gdGhlIGl0ZXJhdG9yCisgICAgICAgIHJlc3VsdCA9IFsoZWxlbSwgaSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKG4pLCBpdCldCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIF9oZWFwaWZ5X21heChyZXN1bHQpCisgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICBvcmRlciA9IG4KKyAgICAgICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAorICAgICAgICBmb3IgZWxlbSBpbiBpdDoKKyAgICAgICAgICAgIGlmIGVsZW0gPCB0b3A6CisgICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKHJlc3VsdCwgKGVsZW0sIG9yZGVyKSkKKyAgICAgICAgICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgICAgICAgICBvcmRlciArPSAxCisgICAgICAgIHJlc3VsdC5zb3J0KCkKKyAgICAgICAgcmV0dXJuIFtyWzBdIGZvciByIGluIHJlc3VsdF0KIAogICAgICMgR2VuZXJhbCBjYXNlLCBzbG93ZXN0IG1ldGhvZAotICAgIGluMSwgaW4yID0gdGVlKGl0ZXJhYmxlKQotICAgIGl0ID0gemlwKG1hcChrZXksIGluMSksIGNvdW50KCksIGluMikgICAgICAgICAgICAgICAgICAgIyBkZWNvcmF0ZQotICAgIHJlc3VsdCA9IF9uc21hbGxlc3QobiwgaXQpCi0gICAgcmV0dXJuIFtyWzJdIGZvciByIGluIHJlc3VsdF0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVjb3JhdGUKKyAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCisgICAgcmVzdWx0ID0gWyhrZXkoZWxlbSksIGksIGVsZW0pIGZvciBpLCBlbGVtIGluIHppcChyYW5nZShuKSwgaXQpXQorICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBfaGVhcGlmeV9tYXgocmVzdWx0KQorICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgIG9yZGVyID0gbgorICAgIF9oZWFwcmVwbGFjZSA9IF9oZWFwcmVwbGFjZV9tYXgKKyAgICBmb3IgZWxlbSBpbiBpdDoKKyAgICAgICAgayA9IGtleShlbGVtKQorICAgICAgICBpZiBrIDwgdG9wOgorICAgICAgICAgICAgX2hlYXByZXBsYWNlKHJlc3VsdCwgKGssIG9yZGVyLCBlbGVtKSkKKyAgICAgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICAgICAgb3JkZXIgKz0gMQorICAgIHJlc3VsdC5zb3J0KCkKKyAgICByZXR1cm4gW3JbMl0gZm9yIHIgaW4gcmVzdWx0XQogCi1fbmxhcmdlc3QgPSBubGFyZ2VzdAogZGVmIG5sYXJnZXN0KG4sIGl0ZXJhYmxlLCBrZXk9Tm9uZSk6CiAgICAgIiIiRmluZCB0aGUgbiBsYXJnZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC4KIAogICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUsIGtleT1rZXksIHJldmVyc2U9VHJ1ZSlbOm5dCiAgICAgIiIiCiAKLSAgICAjIFNob3J0LWN1dCBmb3Igbj09MSBpcyB0byB1c2UgbWF4KCkgd2hlbiBsZW4oaXRlcmFibGUpPjAKKyAgICAjIFNob3J0LWN1dCBmb3Igbj09MSBpcyB0byB1c2UgbWF4KCkKICAgICBpZiBuID09IDE6CiAgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKLSAgICAgICAgaGVhZCA9IGxpc3QoaXNsaWNlKGl0LCAxKSkKLSAgICAgICAgaWYgbm90IGhlYWQ6Ci0gICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgc2VudGluZWwgPSBvYmplY3QoKQogICAgICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBbbWF4KGNoYWluKGhlYWQsIGl0KSldCi0gICAgICAgIHJldHVybiBbbWF4KGNoYWluKGhlYWQsIGl0KSwga2V5PWtleSldCisgICAgICAgICAgICByZXN1bHQgPSBtYXgoaXQsIGRlZmF1bHQ9c2VudGluZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSBtYXgoaXQsIGRlZmF1bHQ9c2VudGluZWwsIGtleT1rZXkpCisgICAgICAgIHJldHVybiBbXSBpZiByZXN1bHQgaXMgc2VudGluZWwgZWxzZSBbcmVzdWx0XQogCiAgICAgIyBXaGVuIG4+PXNpemUsIGl0J3MgZmFzdGVyIHRvIHVzZSBzb3J0ZWQoKQogICAgIHRyeToKQEAgLTQ1MSwyNiArNTQ4LDYwIEBACiAKICAgICAjIFdoZW4ga2V5IGlzIG5vbmUsIHVzZSBzaW1wbGVyIGRlY29yYXRpb24KICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgaXQgPSB6aXAoaXRlcmFibGUsIGNvdW50KDAsLTEpKSAgICAgICAgICAgICAgICAgICAgICMgZGVjb3JhdGUKLSAgICAgICAgcmVzdWx0ID0gX25sYXJnZXN0KG4sIGl0KQotICAgICAgICByZXR1cm4gW3JbMF0gZm9yIHIgaW4gcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgIyB1bmRlY29yYXRlCisgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKKyAgICAgICAgcmVzdWx0ID0gWyhlbGVtLCBpKSBmb3IgaSwgZWxlbSBpbiB6aXAocmFuZ2UoMCwgLW4sIC0xKSwgaXQpXQorICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBoZWFwaWZ5KHJlc3VsdCkKKyAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgIG9yZGVyID0gLW4KKyAgICAgICAgX2hlYXByZXBsYWNlID0gaGVhcHJlcGxhY2UKKyAgICAgICAgZm9yIGVsZW0gaW4gaXQ6CisgICAgICAgICAgICBpZiB0b3AgPCBlbGVtOgorICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChlbGVtLCBvcmRlcikpCisgICAgICAgICAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgICAgICAgICAgb3JkZXIgLT0gMQorICAgICAgICByZXN1bHQuc29ydChyZXZlcnNlPVRydWUpCisgICAgICAgIHJldHVybiBbclswXSBmb3IgciBpbiByZXN1bHRdCiAKICAgICAjIEdlbmVyYWwgY2FzZSwgc2xvd2VzdCBtZXRob2QKLSAgICBpbjEsIGluMiA9IHRlZShpdGVyYWJsZSkKLSAgICBpdCA9IHppcChtYXAoa2V5LCBpbjEpLCBjb3VudCgwLC0xKSwgaW4yKSAgICAgICAgICAgICAgICMgZGVjb3JhdGUKLSAgICByZXN1bHQgPSBfbmxhcmdlc3QobiwgaXQpCi0gICAgcmV0dXJuIFtyWzJdIGZvciByIGluIHJlc3VsdF0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVjb3JhdGUKKyAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCisgICAgcmVzdWx0ID0gWyhrZXkoZWxlbSksIGksIGVsZW0pIGZvciBpLCBlbGVtIGluIHppcChyYW5nZSgwLCAtbiwgLTEpLCBpdCldCisgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIGhlYXBpZnkocmVzdWx0KQorICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgIG9yZGVyID0gLW4KKyAgICBfaGVhcHJlcGxhY2UgPSBoZWFwcmVwbGFjZQorICAgIGZvciBlbGVtIGluIGl0OgorICAgICAgICBrID0ga2V5KGVsZW0pCisgICAgICAgIGlmIHRvcCA8IGs6CisgICAgICAgICAgICBfaGVhcHJlcGxhY2UocmVzdWx0LCAoaywgb3JkZXIsIGVsZW0pKQorICAgICAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgICAgICBvcmRlciAtPSAxCisgICAgcmVzdWx0LnNvcnQocmV2ZXJzZT1UcnVlKQorICAgIHJldHVybiBbclsyXSBmb3IgciBpbiByZXN1bHRdCisKKyMgSWYgYXZhaWxhYmxlLCB1c2UgQyBpbXBsZW1lbnRhdGlvbgordHJ5OgorICAgIGZyb20gX2hlYXBxIGltcG9ydCAqCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwordHJ5OgorICAgIGZyb20gX2hlYXBxIGltcG9ydCBfaGVhcHJlcGxhY2VfbWF4CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwordHJ5OgorICAgIGZyb20gX2hlYXBxIGltcG9ydCBfaGVhcGlmeV9tYXgKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwcG9wX21heAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICMgU2ltcGxlIHNhbml0eSB0ZXN0Ci0gICAgaGVhcCA9IFtdCi0gICAgZGF0YSA9IFsxLCAzLCA1LCA3LCA5LCAyLCA0LCA2LCA4LCAwXQotICAgIGZvciBpdGVtIGluIGRhdGE6Ci0gICAgICAgIGhlYXBwdXNoKGhlYXAsIGl0ZW0pCi0gICAgc29ydCA9IFtdCi0gICAgd2hpbGUgaGVhcDoKLSAgICAgICAgc29ydC5hcHBlbmQoaGVhcHBvcChoZWFwKSkKLSAgICBwcmludChzb3J0KQogCiAgICAgaW1wb3J0IGRvY3Rlc3QKLSAgICBkb2N0ZXN0LnRlc3Rtb2QoKQorICAgIHByaW50KGRvY3Rlc3QudGVzdG1vZCgpKQpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvZW50aXRpZXMucHkgYi9MaWIvaHRtbC9lbnRpdGllcy5weQppbmRleCBmN2RlYWU2Li4zZTE3NzhiIDEwMDY0NAotLS0gYS9MaWIvaHRtbC9lbnRpdGllcy5weQorKysgYi9MaWIvaHRtbC9lbnRpdGllcy5weQpAQCAtMSw1ICsxLDggQEAKICIiIkhUTUwgY2hhcmFjdGVyIGVudGl0eSByZWZlcmVuY2VzLiIiIgogCitfX2FsbF9fID0gWydodG1sNScsICduYW1lMmNvZGVwb2ludCcsICdjb2RlcG9pbnQybmFtZScsICdlbnRpdHlkZWZzJ10KKworCiAjIG1hcHMgdGhlIEhUTUwgZW50aXR5IG5hbWUgdG8gdGhlIFVuaWNvZGUgY29kZSBwb2ludAogbmFtZTJjb2RlcG9pbnQgPSB7CiAgICAgJ0FFbGlnJzogICAgMHgwMGM2LCAjIGxhdGluIGNhcGl0YWwgbGV0dGVyIEFFID0gbGF0aW4gY2FwaXRhbCBsaWdhdHVyZSBBRSwgVSswMEM2IElTT2xhdDEKZGlmZiAtLWdpdCBhL0xpYi9odG1sL3BhcnNlci5weSBiL0xpYi9odG1sL3BhcnNlci5weQppbmRleCA5YWUzMWI5Li40M2U2NDExIDEwMDY0NAotLS0gYS9MaWIvaHRtbC9wYXJzZXIucHkKKysrIGIvTGliL2h0bWwvcGFyc2VyLnB5CkBAIC0yOSwzNSArMjksMTUgQEAKIHBpY2xvc2UgPSByZS5jb21waWxlKCc+JykKIGNvbW1lbnRjbG9zZSA9IHJlLmNvbXBpbGUocictLVxzKj4nKQogIyBOb3RlOgotIyAgMSkgdGhlIHN0cmljdCBhdHRyZmluZCBpc24ndCByZWFsbHkgc3RyaWN0LCBidXQgd2UgY2FuJ3QgbWFrZSBpdAotIyAgICAgY29ycmVjdGx5IHN0cmljdCB3aXRob3V0IGJyZWFraW5nIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7Ci0jICAyKSBpZiB5b3UgY2hhbmdlIHRhZ2ZpbmQvYXR0cmZpbmQgcmVtZW1iZXIgdG8gdXBkYXRlIGxvY2F0ZXN0YXJ0dGFnZW5kIHRvbzsKLSMgIDMpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCBhbmQvb3IgbG9jYXRlc3RhcnR0YWdlbmQgdGhlIHBhcnNlciB3aWxsCisjICAxKSBpZiB5b3UgY2hhbmdlIHRhZ2ZpbmQvYXR0cmZpbmQgcmVtZW1iZXIgdG8gdXBkYXRlIGxvY2F0ZXN0YXJ0dGFnZW5kIHRvbzsKKyMgIDIpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCBhbmQvb3IgbG9jYXRlc3RhcnR0YWdlbmQgdGhlIHBhcnNlciB3aWxsCiAjICAgICBleHBsb2RlLCBzbyBkb24ndCBkbyBpdC4KLXRhZ2ZpbmQgPSByZS5jb21waWxlKCcoW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKSg/OlxzfC8oPyE+KSkqJykKICMgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1vcGVuLXN0YXRlCiAjIGFuZCBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctbmFtZS1zdGF0ZQogdGFnZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQotYXR0cmZpbmQgPSByZS5jb21waWxlKAotICAgIHInXHMqKFthLXpBLVpfXVstLjphLXpBLVpfMC05XSopKFxzKj1ccyonCi0gICAgcicoXCdbXlwnXSpcJ3wiW14iXSoifFteXHMiXCc9PD5gXSopKT8nKQogYXR0cmZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKAogICAgIHInKCg/PD1bXCciXHMvXSlbXlxzLz5dW15ccy89Pl0qKShccyo9K1xzKicKICAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8KD8hW1wnIl0pW14+XHNdKikpPyg/OlxzfC8oPyE+KSkqJykKLWxvY2F0ZXN0YXJ0dGFnZW5kID0gcmUuY29tcGlsZShyIiIiCi0gIDxbYS16QS1aXVstLmEtekEtWjAtOTpfXSogICAgICAgICAgIyB0YWcgbmFtZQotICAoPzpccysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2hpdGVzcGFjZSBiZWZvcmUgYXR0cmlidXRlIG5hbWUKLSAgICAoPzpbYS16QS1aX11bLS46YS16QS1aMC05X10qICAgICAjIGF0dHJpYnV0ZSBuYW1lCi0gICAgICAoPzpccyo9XHMqICAgICAgICAgICAgICAgICAgICAgIyB2YWx1ZSBpbmRpY2F0b3IKLSAgICAgICAgKD86J1teJ10qJyAgICAgICAgICAgICAgICAgICAjIExJVEEtZW5jbG9zZWQgdmFsdWUKLSAgICAgICAgICB8XCJbXlwiXSpcIiAgICAgICAgICAgICAgICAjIExJVC1lbmNsb3NlZCB2YWx1ZQotICAgICAgICAgIHxbXidcIj5cc10rICAgICAgICAgICAgICAgICMgYmFyZSB2YWx1ZQotICAgICAgICAgKQotICAgICAgICk/Ci0gICAgICkKLSAgICkqCi0gIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cmFpbGluZyB3aGl0ZXNwYWNlCi0iIiIsIHJlLlZFUkJPU0UpCiBsb2NhdGVzdGFydHRhZ2VuZF90b2xlcmFudCA9IHJlLmNvbXBpbGUociIiIgogICA8W2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qICAgICAgICMgdGFnIG5hbWUKICAgKD86W1xzL10qICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIHdoaXRlc3BhY2UgYmVmb3JlIGF0dHJpYnV0ZSBuYW1lCkBAIC03OSwyNSArNTksNiBAQAogZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUoJzwvXHMqKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKilccyo+JykKIAogCi1jbGFzcyBIVE1MUGFyc2VFcnJvcihFeGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgZm9yIGFsbCBwYXJzZSBlcnJvcnMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBwb3NpdGlvbj0oTm9uZSwgTm9uZSkpOgotICAgICAgICBhc3NlcnQgbXNnCi0gICAgICAgIHNlbGYubXNnID0gbXNnCi0gICAgICAgIHNlbGYubGluZW5vID0gcG9zaXRpb25bMF0KLSAgICAgICAgc2VsZi5vZmZzZXQgPSBwb3NpdGlvblsxXQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHNlbGYubXNnCi0gICAgICAgIGlmIHNlbGYubGluZW5vIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgIiwgYXQgbGluZSAlZCIgJSBzZWxmLmxpbmVubwotICAgICAgICBpZiBzZWxmLm9mZnNldCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICIsIGNvbHVtbiAlZCIgJSAoc2VsZi5vZmZzZXQgKyAxKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLQotX2RlZmF1bHRfc2VudGluZWwgPSBvYmplY3QoKQogCiBjbGFzcyBIVE1MUGFyc2VyKF9tYXJrdXBiYXNlLlBhcnNlckJhc2UpOgogICAgICIiIkZpbmQgdGFncyBhbmQgb3RoZXIgbWFya3VwIGFuZCBjYWxsIGhhbmRsZXIgZnVuY3Rpb25zLgpAQCAtMTIzLDI3ICs4NCwxMiBAQAogCiAgICAgQ0RBVEFfQ09OVEVOVF9FTEVNRU5UUyA9ICgic2NyaXB0IiwgInN0eWxlIikKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9X2RlZmF1bHRfc2VudGluZWwsICosCi0gICAgICAgICAgICAgICAgIGNvbnZlcnRfY2hhcnJlZnM9X2RlZmF1bHRfc2VudGluZWwpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBjb252ZXJ0X2NoYXJyZWZzPVRydWUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuZCByZXNldCB0aGlzIGluc3RhbmNlLgogCi0gICAgICAgIElmIGNvbnZlcnRfY2hhcnJlZnMgaXMgVHJ1ZSAoZGVmYXVsdDogRmFsc2UpLCBhbGwgY2hhcmFjdGVyIHJlZmVyZW5jZXMKKyAgICAgICAgSWYgY29udmVydF9jaGFycmVmcyBpcyBUcnVlICh0aGUgZGVmYXVsdCksIGFsbCBjaGFyYWN0ZXIgcmVmZXJlbmNlcwogICAgICAgICBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBjaGFyYWN0ZXJzLgotICAgICAgICBJZiBzdHJpY3QgaXMgc2V0IHRvIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlIHBhcnNlciB3aWxsIHBhcnNlIGludmFsaWQKLSAgICAgICAgbWFya3VwLCBvdGhlcndpc2UgaXQgd2lsbCByYWlzZSBhbiBlcnJvci4gIE5vdGUgdGhhdCB0aGUgc3RyaWN0IG1vZGUKLSAgICAgICAgYW5kIGFyZ3VtZW50IGFyZSBkZXByZWNhdGVkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc3RyaWN0IGlzIG5vdCBfZGVmYXVsdF9zZW50aW5lbDoKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBzdHJpY3QgYXJndW1lbnQgYW5kIG1vZGUgYXJlIGRlcHJlY2F0ZWQuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdHJpY3QgPSBGYWxzZSAgIyBkZWZhdWx0Ci0gICAgICAgIHNlbGYuc3RyaWN0ID0gc3RyaWN0Ci0gICAgICAgIGlmIGNvbnZlcnRfY2hhcnJlZnMgaXMgX2RlZmF1bHRfc2VudGluZWw6Ci0gICAgICAgICAgICBjb252ZXJ0X2NoYXJyZWZzID0gRmFsc2UgICMgZGVmYXVsdAotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIHZhbHVlIG9mIGNvbnZlcnRfY2hhcnJlZnMgd2lsbCBiZWNvbWUgVHJ1ZSBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIzLjUuIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBzZXQgdGhlIHZhbHVlIGV4cGxpY2l0bHkuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIHNlbGYuY29udmVydF9jaGFycmVmcyA9IGNvbnZlcnRfY2hhcnJlZnMKICAgICAgICAgc2VsZi5yZXNldCgpCiAKQEAgLTE2OCwxMSArMTE0LDYgQEAKICAgICAgICAgIiIiSGFuZGxlIGFueSBidWZmZXJlZCBkYXRhLiIiIgogICAgICAgICBzZWxmLmdvYWhlYWQoMSkKIAotICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgd2FybmluZ3Mud2FybigiVGhlICdlcnJvcicgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmFpc2UgSFRNTFBhcnNlRXJyb3IobWVzc2FnZSwgc2VsZi5nZXRwb3MoKSkKLQogICAgIF9fc3RhcnR0YWdfdGV4dCA9IE5vbmUKIAogICAgIGRlZiBnZXRfc3RhcnR0YWdfdGV4dChzZWxmKToKQEAgLTIzNSwxMCArMTc2LDcgQEAKICAgICAgICAgICAgICAgICBlbGlmIHN0YXJ0c3dpdGgoIjw/IiwgaSk6CiAgICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX3BpKGkpCiAgICAgICAgICAgICAgICAgZWxpZiBzdGFydHN3aXRoKCI8ISIsIGkpOgotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX2RlY2xhcmF0aW9uKGkpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5wYXJzZV9odG1sX2RlY2xhcmF0aW9uKGkpCisgICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX2h0bWxfZGVjbGFyYXRpb24oaSkKICAgICAgICAgICAgICAgICBlbGlmIChpICsgMSkgPCBuOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKCI8IikKICAgICAgICAgICAgICAgICAgICAgayA9IGkgKyAxCkBAIC0yNDcsOCArMTg1LDYgQEAKICAgICAgICAgICAgICAgICBpZiBrIDwgMDoKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGVuZDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcigiRU9GIGluIG1pZGRsZSBvZiBjb25zdHJ1Y3QiKQogICAgICAgICAgICAgICAgICAgICBrID0gcmF3ZGF0YS5maW5kKCc+JywgaSArIDEpCiAgICAgICAgICAgICAgICAgICAgIGlmIGsgPCAwOgogICAgICAgICAgICAgICAgICAgICAgICAgayA9IHJhd2RhdGEuZmluZCgnPCcsIGkgKyAxKQpAQCAtMjkwLDEzICsyMjYsMTAgQEAKICAgICAgICAgICAgICAgICBpZiBtYXRjaDoKICAgICAgICAgICAgICAgICAgICAgIyBtYXRjaC5ncm91cCgpIHdpbGwgY29udGFpbiBhdCBsZWFzdCAyIGNoYXJzCiAgICAgICAgICAgICAgICAgICAgIGlmIGVuZCBhbmQgbWF0Y2guZ3JvdXAoKSA9PSByYXdkYXRhW2k6XToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoIkVPRiBpbiBtaWRkbGUgb2YgZW50aXR5IG9yIGNoYXIgcmVmIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG1hdGNoLmVuZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgayA8PSBpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzZWxmLnVwZGF0ZXBvcyhpLCBpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBtYXRjaC5lbmQoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgayA8PSBpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBuCisgICAgICAgICAgICAgICAgICAgICAgICBpID0gc2VsZi51cGRhdGVwb3MoaSwgaSArIDEpCiAgICAgICAgICAgICAgICAgICAgICMgaW5jb21wbGV0ZQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsaWYgKGkgKyAxKSA8IG46CkBAIC0zNzUsMTggKzMwOCwxMiBAQAogCiAgICAgICAgICMgTm93IHBhcnNlIHRoZSBkYXRhIGJldHdlZW4gaSsxIGFuZCBqIGludG8gYSB0YWcgYW5kIGF0dHJzCiAgICAgICAgIGF0dHJzID0gW10KLSAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICBtYXRjaCA9IHRhZ2ZpbmQubWF0Y2gocmF3ZGF0YSwgaSsxKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWF0Y2ggPSB0YWdmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkrMSkKKyAgICAgICAgbWF0Y2ggPSB0YWdmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkrMSkKICAgICAgICAgYXNzZXJ0IG1hdGNoLCAndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX3N0YXJ0dGFnKCknCiAgICAgICAgIGsgPSBtYXRjaC5lbmQoKQogICAgICAgICBzZWxmLmxhc3R0YWcgPSB0YWcgPSBtYXRjaC5ncm91cCgxKS5sb3dlcigpCiAgICAgICAgIHdoaWxlIGsgPCBlbmRwb3M6Ci0gICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICBtID0gYXR0cmZpbmQubWF0Y2gocmF3ZGF0YSwgaykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbSA9IGF0dHJmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGspCisgICAgICAgICAgICBtID0gYXR0cmZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaykKICAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBhdHRybmFtZSwgcmVzdCwgYXR0cnZhbHVlID0gbS5ncm91cCgxLCAyLCAzKQpAQCAtNDA5LDkgKzMzNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBzZWxmLl9fc3RhcnR0YWdfdGV4dC5yZmluZCgiXG4iKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQgKyBsZW4oc2VsZi5fX3N0YXJ0dGFnX3RleHQpCi0gICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJqdW5rIGNoYXJhY3RlcnMgaW4gc3RhcnQgdGFnOiAlciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHJhd2RhdGFbazplbmRwb3NdWzoyMF0sKSkKICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEocmF3ZGF0YVtpOmVuZHBvc10pCiAgICAgICAgICAgICByZXR1cm4gZW5kcG9zCiAgICAgICAgIGlmIGVuZC5lbmRzd2l0aCgnLz4nKToKQEAgLTQyNywxMCArMzUxLDcgQEAKICAgICAjIG9yIC0xIGlmIGluY29tcGxldGUuCiAgICAgZGVmIGNoZWNrX2Zvcl93aG9sZV9zdGFydF90YWcoc2VsZiwgaSk6CiAgICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKLSAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICBtID0gbG9jYXRlc3RhcnR0YWdlbmQubWF0Y2gocmF3ZGF0YSwgaSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG0gPSBsb2NhdGVzdGFydHRhZ2VuZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKQorICAgICAgICBtID0gbG9jYXRlc3RhcnR0YWdlbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSkKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIGogPSBtLmVuZCgpCiAgICAgICAgICAgICBuZXh0ID0gcmF3ZGF0YVtqOmorMV0KQEAgLTQ0Myw5ICszNjQsNiBAQAogICAgICAgICAgICAgICAgICAgICAjIGJ1ZmZlciBib3VuZGFyeQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgICAgICAjIGVsc2UgYm9ndXMgaW5wdXQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVwb3MoaSwgaiArIDEpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoIm1hbGZvcm1lZCBlbXB0eSBzdGFydCB0YWciKQogICAgICAgICAgICAgICAgIGlmIGogPiBpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gagogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC00NTgsOSArMzc2LDYgQEAKICAgICAgICAgICAgICAgICAjIGVuZCBvZiBpbnB1dCBpbiBvciBiZWZvcmUgYXR0cmlidXRlIHZhbHVlLCBvciB3ZSBoYXZlIHRoZQogICAgICAgICAgICAgICAgICMgJy8nIGZyb20gYSAnLz4nIGVuZGluZwogICAgICAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVwb3MoaSwgaikKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJtYWxmb3JtZWQgc3RhcnQgdGFnIikKICAgICAgICAgICAgIGlmIGogPiBpOgogICAgICAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDgwLDggKzM5NSw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLmNkYXRhX2VsZW0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YShyYXdkYXRhW2k6Z3Rwb3NdKQogICAgICAgICAgICAgICAgIHJldHVybiBndHBvcwotICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcigiYmFkIGVuZCB0YWc6ICVyIiAlIChyYXdkYXRhW2k6Z3Rwb3NdLCkpCiAgICAgICAgICAgICAjIGZpbmQgdGhlIG5hbWU6IHczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctbmFtZS1zdGF0ZQogICAgICAgICAgICAgbmFtZW1hdGNoID0gdGFnZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKzIpCiAgICAgICAgICAgICBpZiBub3QgbmFtZW1hdGNoOgpAQCAtNTQ3LDggKzQ2MCw3IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB1bmtub3duX2RlY2woc2VsZiwgZGF0YSk6Ci0gICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgc2VsZi5lcnJvcigidW5rbm93biBkZWNsYXJhdGlvbjogJXIiICUgKGRhdGEsKSkKKyAgICAgICAgcGFzcwogCiAgICAgIyBJbnRlcm5hbCAtLSBoZWxwZXIgdG8gcmVtb3ZlIHNwZWNpYWwgY2hhcmFjdGVyIHF1b3RpbmcKICAgICBkZWYgdW5lc2NhcGUoc2VsZiwgcyk6CmRpZmYgLS1naXQgYS9MaWIvaHR0cC9fX2luaXRfXy5weSBiL0xpYi9odHRwL19faW5pdF9fLnB5CmluZGV4IDE5NmQzNzguLmQ0MzM0Y2MgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL19faW5pdF9fLnB5CisrKyBiL0xpYi9odHRwL19faW5pdF9fLnB5CkBAIC0xICsxLDEzNCBAQAotIyBUaGlzIGRpcmVjdG9yeSBpcyBhIFB5dGhvbiBwYWNrYWdlLgorZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtCisKK19fYWxsX18gPSBbJ0hUVFBTdGF0dXMnXQorCitjbGFzcyBIVFRQU3RhdHVzKEludEVudW0pOgorICAgICIiIkhUVFAgc3RhdHVzIGNvZGVzIGFuZCByZWFzb24gcGhyYXNlcworCisgICAgU3RhdHVzIGNvZGVzIGZyb20gdGhlIGZvbGxvd2luZyBSRkNzIGFyZSBhbGwgb2JzZXJ2ZWQ6CisKKyAgICAgICAgKiBSRkMgNzIzMTogSHlwZXJ0ZXh0IFRyYW5zZmVyIFByb3RvY29sIChIVFRQLzEuMSksIG9ic29sZXRlcyAyNjE2CisgICAgICAgICogUkZDIDY1ODU6IEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMKKyAgICAgICAgKiBSRkMgMzIyOTogRGVsdGEgZW5jb2RpbmcgaW4gSFRUUAorICAgICAgICAqIFJGQyA0OTE4OiBIVFRQIEV4dGVuc2lvbnMgZm9yIFdlYkRBViwgb2Jzb2xldGVzIDI1MTgKKyAgICAgICAgKiBSRkMgNTg0MjogQmluZGluZyBFeHRlbnNpb25zIHRvIFdlYkRBVgorICAgICAgICAqIFJGQyA3MjM4OiBQZXJtYW5lbnQgUmVkaXJlY3QKKyAgICAgICAgKiBSRkMgMjI5NTogVHJhbnNwYXJlbnQgQ29udGVudCBOZWdvdGlhdGlvbiBpbiBIVFRQCisgICAgICAgICogUkZDIDI3NzQ6IEFuIEhUVFAgRXh0ZW5zaW9uIEZyYW1ld29yaworICAgICIiIgorICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUsIHBocmFzZSwgZGVzY3JpcHRpb249JycpOgorICAgICAgICBvYmogPSBpbnQuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICBvYmouX3ZhbHVlXyA9IHZhbHVlCisKKyAgICAgICAgb2JqLnBocmFzZSA9IHBocmFzZQorICAgICAgICBvYmouZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgorICAgICAgICByZXR1cm4gb2JqCisKKyAgICAjIGluZm9ybWF0aW9uYWwKKyAgICBDT05USU5VRSA9IDEwMCwgJ0NvbnRpbnVlJywgJ1JlcXVlc3QgcmVjZWl2ZWQsIHBsZWFzZSBjb250aW51ZScKKyAgICBTV0lUQ0hJTkdfUFJPVE9DT0xTID0gKDEwMSwgJ1N3aXRjaGluZyBQcm90b2NvbHMnLAorICAgICAgICAgICAgJ1N3aXRjaGluZyB0byBuZXcgcHJvdG9jb2w7IG9iZXkgVXBncmFkZSBoZWFkZXInKQorICAgIFBST0NFU1NJTkcgPSAxMDIsICdQcm9jZXNzaW5nJworCisgICAgIyBzdWNjZXNzCisgICAgT0sgPSAyMDAsICdPSycsICdSZXF1ZXN0IGZ1bGZpbGxlZCwgZG9jdW1lbnQgZm9sbG93cycKKyAgICBDUkVBVEVEID0gMjAxLCAnQ3JlYXRlZCcsICdEb2N1bWVudCBjcmVhdGVkLCBVUkwgZm9sbG93cycKKyAgICBBQ0NFUFRFRCA9ICgyMDIsICdBY2NlcHRlZCcsCisgICAgICAgICdSZXF1ZXN0IGFjY2VwdGVkLCBwcm9jZXNzaW5nIGNvbnRpbnVlcyBvZmYtbGluZScpCisgICAgTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04gPSAoMjAzLAorICAgICAgICAnTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb24nLCAnUmVxdWVzdCBmdWxmaWxsZWQgZnJvbSBjYWNoZScpCisgICAgTk9fQ09OVEVOVCA9IDIwNCwgJ05vIENvbnRlbnQnLCAnUmVxdWVzdCBmdWxmaWxsZWQsIG5vdGhpbmcgZm9sbG93cycKKyAgICBSRVNFVF9DT05URU5UID0gMjA1LCAnUmVzZXQgQ29udGVudCcsICdDbGVhciBpbnB1dCBmb3JtIGZvciBmdXJ0aGVyIGlucHV0JworICAgIFBBUlRJQUxfQ09OVEVOVCA9IDIwNiwgJ1BhcnRpYWwgQ29udGVudCcsICdQYXJ0aWFsIGNvbnRlbnQgZm9sbG93cycKKyAgICBNVUxUSV9TVEFUVVMgPSAyMDcsICdNdWx0aS1TdGF0dXMnCisgICAgQUxSRUFEWV9SRVBPUlRFRCA9IDIwOCwgJ0FscmVhZHkgUmVwb3J0ZWQnCisgICAgSU1fVVNFRCA9IDIyNiwgJ0lNIFVzZWQnCisKKyAgICAjIHJlZGlyZWN0aW9uCisgICAgTVVMVElQTEVfQ0hPSUNFUyA9ICgzMDAsICdNdWx0aXBsZSBDaG9pY2VzJywKKyAgICAgICAgJ09iamVjdCBoYXMgc2V2ZXJhbCByZXNvdXJjZXMgLS0gc2VlIFVSSSBsaXN0JykKKyAgICBNT1ZFRF9QRVJNQU5FTlRMWSA9ICgzMDEsICdNb3ZlZCBQZXJtYW5lbnRseScsCisgICAgICAgICdPYmplY3QgbW92ZWQgcGVybWFuZW50bHkgLS0gc2VlIFVSSSBsaXN0JykKKyAgICBGT1VORCA9IDMwMiwgJ0ZvdW5kJywgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnCisgICAgU0VFX09USEVSID0gMzAzLCAnU2VlIE90aGVyJywgJ09iamVjdCBtb3ZlZCAtLSBzZWUgTWV0aG9kIGFuZCBVUkwgbGlzdCcKKyAgICBOT1RfTU9ESUZJRUQgPSAoMzA0LCAnTm90IE1vZGlmaWVkJywKKyAgICAgICAgJ0RvY3VtZW50IGhhcyBub3QgY2hhbmdlZCBzaW5jZSBnaXZlbiB0aW1lJykKKyAgICBVU0VfUFJPWFkgPSAoMzA1LCAnVXNlIFByb3h5JywKKyAgICAgICAgJ1lvdSBtdXN0IHVzZSBwcm94eSBzcGVjaWZpZWQgaW4gTG9jYXRpb24gdG8gYWNjZXNzIHRoaXMgcmVzb3VyY2UnKQorICAgIFRFTVBPUkFSWV9SRURJUkVDVCA9ICgzMDcsICdUZW1wb3JhcnkgUmVkaXJlY3QnLAorICAgICAgICAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcpCisgICAgUEVSTUFORU5UX1JFRElSRUNUID0gKDMwOCwgJ1Blcm1hbmVudCBSZWRpcmVjdCcsCisgICAgICAgICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JykKKworICAgICMgY2xpZW50IGVycm9yCisgICAgQkFEX1JFUVVFU1QgPSAoNDAwLCAnQmFkIFJlcXVlc3QnLAorICAgICAgICAnQmFkIHJlcXVlc3Qgc3ludGF4IG9yIHVuc3VwcG9ydGVkIG1ldGhvZCcpCisgICAgVU5BVVRIT1JJWkVEID0gKDQwMSwgJ1VuYXV0aG9yaXplZCcsCisgICAgICAgICdObyBwZXJtaXNzaW9uIC0tIHNlZSBhdXRob3JpemF0aW9uIHNjaGVtZXMnKQorICAgIFBBWU1FTlRfUkVRVUlSRUQgPSAoNDAyLCAnUGF5bWVudCBSZXF1aXJlZCcsCisgICAgICAgICdObyBwYXltZW50IC0tIHNlZSBjaGFyZ2luZyBzY2hlbWVzJykKKyAgICBGT1JCSURERU4gPSAoNDAzLCAnRm9yYmlkZGVuJywKKyAgICAgICAgJ1JlcXVlc3QgZm9yYmlkZGVuIC0tIGF1dGhvcml6YXRpb24gd2lsbCBub3QgaGVscCcpCisgICAgTk9UX0ZPVU5EID0gKDQwNCwgJ05vdCBGb3VuZCcsCisgICAgICAgICdOb3RoaW5nIG1hdGNoZXMgdGhlIGdpdmVuIFVSSScpCisgICAgTUVUSE9EX05PVF9BTExPV0VEID0gKDQwNSwgJ01ldGhvZCBOb3QgQWxsb3dlZCcsCisgICAgICAgICdTcGVjaWZpZWQgbWV0aG9kIGlzIGludmFsaWQgZm9yIHRoaXMgcmVzb3VyY2UnKQorICAgIE5PVF9BQ0NFUFRBQkxFID0gKDQwNiwgJ05vdCBBY2NlcHRhYmxlJywKKyAgICAgICAgJ1VSSSBub3QgYXZhaWxhYmxlIGluIHByZWZlcnJlZCBmb3JtYXQnKQorICAgIFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gKDQwNywKKyAgICAgICAgJ1Byb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywKKyAgICAgICAgJ1lvdSBtdXN0IGF1dGhlbnRpY2F0ZSB3aXRoIHRoaXMgcHJveHkgYmVmb3JlIHByb2NlZWRpbmcnKQorICAgIFJFUVVFU1RfVElNRU9VVCA9ICg0MDgsICdSZXF1ZXN0IFRpbWVvdXQnLAorICAgICAgICAnUmVxdWVzdCB0aW1lZCBvdXQ7IHRyeSBhZ2FpbiBsYXRlcicpCisgICAgQ09ORkxJQ1QgPSA0MDksICdDb25mbGljdCcsICdSZXF1ZXN0IGNvbmZsaWN0JworICAgIEdPTkUgPSAoNDEwLCAnR29uZScsCisgICAgICAgICdVUkkgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgaGFzIGJlZW4gcGVybWFuZW50bHkgcmVtb3ZlZCcpCisgICAgTEVOR1RIX1JFUVVJUkVEID0gKDQxMSwgJ0xlbmd0aCBSZXF1aXJlZCcsCisgICAgICAgICdDbGllbnQgbXVzdCBzcGVjaWZ5IENvbnRlbnQtTGVuZ3RoJykKKyAgICBQUkVDT05ESVRJT05fRkFJTEVEID0gKDQxMiwgJ1ByZWNvbmRpdGlvbiBGYWlsZWQnLAorICAgICAgICAnUHJlY29uZGl0aW9uIGluIGhlYWRlcnMgaXMgZmFsc2UnKQorICAgIFJFUVVFU1RfRU5USVRZX1RPT19MQVJHRSA9ICg0MTMsICdSZXF1ZXN0IEVudGl0eSBUb28gTGFyZ2UnLAorICAgICAgICAnRW50aXR5IGlzIHRvbyBsYXJnZScpCisgICAgUkVRVUVTVF9VUklfVE9PX0xPTkcgPSAoNDE0LCAnUmVxdWVzdC1VUkkgVG9vIExvbmcnLAorICAgICAgICAnVVJJIGlzIHRvbyBsb25nJykKKyAgICBVTlNVUFBPUlRFRF9NRURJQV9UWVBFID0gKDQxNSwgJ1Vuc3VwcG9ydGVkIE1lZGlhIFR5cGUnLAorICAgICAgICAnRW50aXR5IGJvZHkgaW4gdW5zdXBwb3J0ZWQgZm9ybWF0JykKKyAgICBSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFID0gKDQxNiwKKyAgICAgICAgJ1JlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUnLAorICAgICAgICAnQ2Fubm90IHNhdGlzZnkgcmVxdWVzdCByYW5nZScpCisgICAgRVhQRUNUQVRJT05fRkFJTEVEID0gKDQxNywgJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCisgICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQnKQorICAgIFVOUFJPQ0VTU0FCTEVfRU5USVRZID0gNDIyLCAnVW5wcm9jZXNzYWJsZSBFbnRpdHknCisgICAgTE9DS0VEID0gNDIzLCAnTG9ja2VkJworICAgIEZBSUxFRF9ERVBFTkRFTkNZID0gNDI0LCAnRmFpbGVkIERlcGVuZGVuY3knCisgICAgVVBHUkFERV9SRVFVSVJFRCA9IDQyNiwgJ1VwZ3JhZGUgUmVxdWlyZWQnCisgICAgUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gKDQyOCwgJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCisgICAgICAgICdUaGUgb3JpZ2luIHNlcnZlciByZXF1aXJlcyB0aGUgcmVxdWVzdCB0byBiZSBjb25kaXRpb25hbCcpCisgICAgVE9PX01BTllfUkVRVUVTVFMgPSAoNDI5LCAnVG9vIE1hbnkgUmVxdWVzdHMnLAorICAgICAgICAnVGhlIHVzZXIgaGFzIHNlbnQgdG9vIG1hbnkgcmVxdWVzdHMgaW4gJworICAgICAgICAnYSBnaXZlbiBhbW91bnQgb2YgdGltZSAoInJhdGUgbGltaXRpbmciKScpCisgICAgUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9ICg0MzEsCisgICAgICAgICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKKyAgICAgICAgJ1RoZSBzZXJ2ZXIgaXMgdW53aWxsaW5nIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QgYmVjYXVzZSBpdHMgaGVhZGVyICcKKyAgICAgICAgJ2ZpZWxkcyBhcmUgdG9vIGxhcmdlJykKKworICAgICMgc2VydmVyIGVycm9ycworICAgIElOVEVSTkFMX1NFUlZFUl9FUlJPUiA9ICg1MDAsICdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InLAorICAgICAgICAnU2VydmVyIGdvdCBpdHNlbGYgaW4gdHJvdWJsZScpCisgICAgTk9UX0lNUExFTUVOVEVEID0gKDUwMSwgJ05vdCBJbXBsZW1lbnRlZCcsCisgICAgICAgICdTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbicpCisgICAgQkFEX0dBVEVXQVkgPSAoNTAyLCAnQmFkIEdhdGV3YXknLAorICAgICAgICAnSW52YWxpZCByZXNwb25zZXMgZnJvbSBhbm90aGVyIHNlcnZlci9wcm94eScpCisgICAgU0VSVklDRV9VTkFWQUlMQUJMRSA9ICg1MDMsICdTZXJ2aWNlIFVuYXZhaWxhYmxlJywKKyAgICAgICAgJ1RoZSBzZXJ2ZXIgY2Fubm90IHByb2Nlc3MgdGhlIHJlcXVlc3QgZHVlIHRvIGEgaGlnaCBsb2FkJykKKyAgICBHQVRFV0FZX1RJTUVPVVQgPSAoNTA0LCAnR2F0ZXdheSBUaW1lb3V0JywKKyAgICAgICAgJ1RoZSBnYXRld2F5IHNlcnZlciBkaWQgbm90IHJlY2VpdmUgYSB0aW1lbHkgcmVzcG9uc2UnKQorICAgIEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gKDUwNSwgJ0hUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkJywKKyAgICAgICAgJ0Nhbm5vdCBmdWxmaWxsIHJlcXVlc3QnKQorICAgIFZBUklBTlRfQUxTT19ORUdPVElBVEVTID0gNTA2LCAnVmFyaWFudCBBbHNvIE5lZ290aWF0ZXMnCisgICAgSU5TVUZGSUNJRU5UX1NUT1JBR0UgPSA1MDcsICdJbnN1ZmZpY2llbnQgU3RvcmFnZScKKyAgICBMT09QX0RFVEVDVEVEID0gNTA4LCAnTG9vcCBEZXRlY3RlZCcKKyAgICBOT1RfRVhURU5ERUQgPSA1MTAsICdOb3QgRXh0ZW5kZWQnCisgICAgTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9ICg1MTEsCisgICAgICAgICdOZXR3b3JrIEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywKKyAgICAgICAgJ1RoZSBjbGllbnQgbmVlZHMgdG8gYXV0aGVudGljYXRlIHRvIGdhaW4gbmV0d29yayBhY2Nlc3MnKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDFjNjlkY2IuLjgwYzgwY2YgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTIwLDEwICsyMCwxMiBAQAogICAgICAgfCAoIHB1dGhlYWRlcigpICkqICBlbmRoZWFkZXJzKCkKICAgICAgIHYKICAgICBSZXF1ZXN0LXNlbnQKLSAgICAgIHwKLSAgICAgIHwgcmVzcG9uc2UgPSBnZXRyZXNwb25zZSgpCi0gICAgICB2Ci0gICAgVW5yZWFkLXJlc3BvbnNlICAgW1Jlc3BvbnNlLWhlYWRlcnMtcmVhZF0KKyAgICAgIHxcX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdldHJlc3BvbnNlKCkgcmFpc2VzCisgICAgICB8IHJlc3BvbnNlID0gZ2V0cmVzcG9uc2UoKSAgICAgfCBDb25uZWN0aW9uRXJyb3IKKyAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgVW5yZWFkLXJlc3BvbnNlICAgICAgICAgICAgICAgIElkbGUKKyAgICBbUmVzcG9uc2UtaGVhZGVycy1yZWFkXQogICAgICAgfFxfX19fX19fX19fX19fX19fX19fXwogICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgIHwgcmVzcG9uc2UucmVhZCgpICAgICB8IHB1dHJlcXVlc3QoKQpAQCAtNjgsNiArNzAsNyBAQAogCiBpbXBvcnQgZW1haWwucGFyc2VyCiBpbXBvcnQgZW1haWwubWVzc2FnZQoraW1wb3J0IGh0dHAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTgyLDcgKzg1LDggQEAKICAgICAgICAgICAgIlVua25vd25UcmFuc2ZlckVuY29kaW5nIiwgIlVuaW1wbGVtZW50ZWRGaWxlTW9kZSIsCiAgICAgICAgICAgICJJbmNvbXBsZXRlUmVhZCIsICJJbnZhbGlkVVJMIiwgIkltcHJvcGVyQ29ubmVjdGlvblN0YXRlIiwKICAgICAgICAgICAgIkNhbm5vdFNlbmRSZXF1ZXN0IiwgIkNhbm5vdFNlbmRIZWFkZXIiLCAiUmVzcG9uc2VOb3RSZWFkeSIsCi0gICAgICAgICAgICJCYWRTdGF0dXNMaW5lIiwgIkxpbmVUb29Mb25nIiwgImVycm9yIiwgInJlc3BvbnNlcyJdCisgICAgICAgICAgICJCYWRTdGF0dXNMaW5lIiwgIkxpbmVUb29Mb25nIiwgIlJlbW90ZURpc2Nvbm5lY3RlZCIsICJlcnJvciIsCisgICAgICAgICAgICJyZXNwb25zZXMiXQogCiBIVFRQX1BPUlQgPSA4MAogSFRUUFNfUE9SVCA9IDQ0MwpAQCAtOTQsMTIyICs5OCwxMyBAQAogX0NTX1JFUV9TVEFSVEVEID0gJ1JlcXVlc3Qtc3RhcnRlZCcKIF9DU19SRVFfU0VOVCA9ICdSZXF1ZXN0LXNlbnQnCiAKLSMgc3RhdHVzIGNvZGVzCi0jIGluZm9ybWF0aW9uYWwKLUNPTlRJTlVFID0gMTAwCi1TV0lUQ0hJTkdfUFJPVE9DT0xTID0gMTAxCi1QUk9DRVNTSU5HID0gMTAyCiAKLSMgc3VjY2Vzc2Z1bAotT0sgPSAyMDAKLUNSRUFURUQgPSAyMDEKLUFDQ0VQVEVEID0gMjAyCi1OT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTiA9IDIwMwotTk9fQ09OVEVOVCA9IDIwNAotUkVTRVRfQ09OVEVOVCA9IDIwNQotUEFSVElBTF9DT05URU5UID0gMjA2Ci1NVUxUSV9TVEFUVVMgPSAyMDcKLUlNX1VTRUQgPSAyMjYKKyMgaGFjayB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorZ2xvYmFscygpLnVwZGF0ZShodHRwLkhUVFBTdGF0dXMuX19tZW1iZXJzX18pCiAKLSMgcmVkaXJlY3Rpb24KLU1VTFRJUExFX0NIT0lDRVMgPSAzMDAKLU1PVkVEX1BFUk1BTkVOVExZID0gMzAxCi1GT1VORCA9IDMwMgotU0VFX09USEVSID0gMzAzCi1OT1RfTU9ESUZJRUQgPSAzMDQKLVVTRV9QUk9YWSA9IDMwNQotVEVNUE9SQVJZX1JFRElSRUNUID0gMzA3Ci0KLSMgY2xpZW50IGVycm9yCi1CQURfUkVRVUVTVCA9IDQwMAotVU5BVVRIT1JJWkVEID0gNDAxCi1QQVlNRU5UX1JFUVVJUkVEID0gNDAyCi1GT1JCSURERU4gPSA0MDMKLU5PVF9GT1VORCA9IDQwNAotTUVUSE9EX05PVF9BTExPV0VEID0gNDA1Ci1OT1RfQUNDRVBUQUJMRSA9IDQwNgotUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgPSA0MDcKLVJFUVVFU1RfVElNRU9VVCA9IDQwOAotQ09ORkxJQ1QgPSA0MDkKLUdPTkUgPSA0MTAKLUxFTkdUSF9SRVFVSVJFRCA9IDQxMQotUFJFQ09ORElUSU9OX0ZBSUxFRCA9IDQxMgotUkVRVUVTVF9FTlRJVFlfVE9PX0xBUkdFID0gNDEzCi1SRVFVRVNUX1VSSV9UT09fTE9ORyA9IDQxNAotVU5TVVBQT1JURURfTUVESUFfVFlQRSA9IDQxNQotUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSA9IDQxNgotRVhQRUNUQVRJT05fRkFJTEVEID0gNDE3Ci1VTlBST0NFU1NBQkxFX0VOVElUWSA9IDQyMgotTE9DS0VEID0gNDIzCi1GQUlMRURfREVQRU5ERU5DWSA9IDQyNAotVVBHUkFERV9SRVFVSVJFRCA9IDQyNgotUFJFQ09ORElUSU9OX1JFUVVJUkVEID0gNDI4Ci1UT09fTUFOWV9SRVFVRVNUUyA9IDQyOQotUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSA9IDQzMQotCi0jIHNlcnZlciBlcnJvcgotSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gNTAwCi1OT1RfSU1QTEVNRU5URUQgPSA1MDEKLUJBRF9HQVRFV0FZID0gNTAyCi1TRVJWSUNFX1VOQVZBSUxBQkxFID0gNTAzCi1HQVRFV0FZX1RJTUVPVVQgPSA1MDQKLUhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEID0gNTA1Ci1JTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNwotTk9UX0VYVEVOREVEID0gNTEwCi1ORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gNTExCi0KKyMgYW5vdGhlciBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAjIE1hcHBpbmcgc3RhdHVzIGNvZGVzIHRvIG9mZmljaWFsIFczQyBuYW1lcwotcmVzcG9uc2VzID0gewotICAgIDEwMDogJ0NvbnRpbnVlJywKLSAgICAxMDE6ICdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKLQotICAgIDIwMDogJ09LJywKLSAgICAyMDE6ICdDcmVhdGVkJywKLSAgICAyMDI6ICdBY2NlcHRlZCcsCi0gICAgMjAzOiAnTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb24nLAotICAgIDIwNDogJ05vIENvbnRlbnQnLAotICAgIDIwNTogJ1Jlc2V0IENvbnRlbnQnLAotICAgIDIwNjogJ1BhcnRpYWwgQ29udGVudCcsCi0KLSAgICAzMDA6ICdNdWx0aXBsZSBDaG9pY2VzJywKLSAgICAzMDE6ICdNb3ZlZCBQZXJtYW5lbnRseScsCi0gICAgMzAyOiAnRm91bmQnLAotICAgIDMwMzogJ1NlZSBPdGhlcicsCi0gICAgMzA0OiAnTm90IE1vZGlmaWVkJywKLSAgICAzMDU6ICdVc2UgUHJveHknLAotICAgIDMwNjogJyhVbnVzZWQpJywKLSAgICAzMDc6ICdUZW1wb3JhcnkgUmVkaXJlY3QnLAotCi0gICAgNDAwOiAnQmFkIFJlcXVlc3QnLAotICAgIDQwMTogJ1VuYXV0aG9yaXplZCcsCi0gICAgNDAyOiAnUGF5bWVudCBSZXF1aXJlZCcsCi0gICAgNDAzOiAnRm9yYmlkZGVuJywKLSAgICA0MDQ6ICdOb3QgRm91bmQnLAotICAgIDQwNTogJ01ldGhvZCBOb3QgQWxsb3dlZCcsCi0gICAgNDA2OiAnTm90IEFjY2VwdGFibGUnLAotICAgIDQwNzogJ1Byb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywKLSAgICA0MDg6ICdSZXF1ZXN0IFRpbWVvdXQnLAotICAgIDQwOTogJ0NvbmZsaWN0JywKLSAgICA0MTA6ICdHb25lJywKLSAgICA0MTE6ICdMZW5ndGggUmVxdWlyZWQnLAotICAgIDQxMjogJ1ByZWNvbmRpdGlvbiBGYWlsZWQnLAotICAgIDQxMzogJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsCi0gICAgNDE0OiAnUmVxdWVzdC1VUkkgVG9vIExvbmcnLAotICAgIDQxNTogJ1Vuc3VwcG9ydGVkIE1lZGlhIFR5cGUnLAotICAgIDQxNjogJ1JlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUnLAotICAgIDQxNzogJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCi0gICAgNDI4OiAnUHJlY29uZGl0aW9uIFJlcXVpcmVkJywKLSAgICA0Mjk6ICdUb28gTWFueSBSZXF1ZXN0cycsCi0gICAgNDMxOiAnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsCi0KLSAgICA1MDA6ICdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3InLAotICAgIDUwMTogJ05vdCBJbXBsZW1lbnRlZCcsCi0gICAgNTAyOiAnQmFkIEdhdGV3YXknLAotICAgIDUwMzogJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAotICAgIDUwNDogJ0dhdGV3YXkgVGltZW91dCcsCi0gICAgNTA1OiAnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLAotICAgIDUxMTogJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAotfQorcmVzcG9uc2VzID0ge3Y6IHYucGhyYXNlIGZvciB2IGluIGh0dHAuSFRUUFN0YXR1cy5fX21lbWJlcnNfXy52YWx1ZXMoKX0KIAogIyBtYXhpbWFsIGFtb3VudCBvZiBkYXRhIHRvIHJlYWQgYXQgb25lIHRpbWUgaW4gX3NhZmVfcmVhZAogTUFYQU1PVU5UID0gMTA0ODU3NgpAQCAtMzA1LDcgKzIwMCw3IEBACiAgICAgcmV0dXJuIGVtYWlsLnBhcnNlci5QYXJzZXIoX2NsYXNzPV9jbGFzcykucGFyc2VzdHIoaHN0cmluZykKIAogCi1jbGFzcyBIVFRQUmVzcG9uc2UoaW8uUmF3SU9CYXNlKToKK2NsYXNzIEhUVFBSZXNwb25zZShpby5CdWZmZXJlZElPQmFzZSk6CiAKICAgICAjIFNlZSBSRkMgMjYxNiBzZWMgMTkuNiBhbmQgUkZDIDE5NDUgc2VjIDYgZm9yIGRldGFpbHMuCiAKQEAgLTM1Myw3ICsyNDgsOCBAQAogICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICMgUHJlc3VtYWJseSwgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gYmVmb3JlCiAgICAgICAgICAgICAjIHNlbmRpbmcgYSB2YWxpZCByZXNwb25zZS4KLSAgICAgICAgICAgIHJhaXNlIEJhZFN0YXR1c0xpbmUobGluZSkKKyAgICAgICAgICAgIHJhaXNlIFJlbW90ZURpc2Nvbm5lY3RlZCgiUmVtb3RlIGVuZCBjbG9zZWQgY29ubmVjdGlvbiB3aXRob3V0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVzcG9uc2UiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2ZXJzaW9uLCBzdGF0dXMsIHJlYXNvbiA9IGxpbmUuc3BsaXQoTm9uZSwgMikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CkBAIC01MzIsOSArNDI4LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gYiIiCiAKICAgICAgICAgaWYgYW10IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBBbW91bnQgaXMgZ2l2ZW4sIHNvIGNhbGwgYmFzZSBjbGFzcyB2ZXJzaW9uCi0gICAgICAgICAgICAjICh3aGljaCBpcyBpbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBzZWxmLnJlYWRpbnRvKQotICAgICAgICAgICAgcmV0dXJuIHN1cGVyKEhUVFBSZXNwb25zZSwgc2VsZikucmVhZChhbXQpCisgICAgICAgICAgICAjIEFtb3VudCBpcyBnaXZlbiwgaW1wbGVtZW50IHVzaW5nIHJlYWRpbnRvCisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KGFtdCkKKyAgICAgICAgICAgIG4gPSBzZWxmLnJlYWRpbnRvKGIpCisgICAgICAgICAgICByZXR1cm4gbWVtb3J5dmlldyhiKVs6bl0udG9ieXRlcygpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEFtb3VudCBpcyBub3QgZ2l2ZW4gKHVuYm91bmRlZCByZWFkKSBzbyB3ZSBtdXN0IGNoZWNrIHNlbGYubGVuZ3RoCiAgICAgICAgICAgICAjIGFuZCBzZWxmLmNodW5rZWQKQEAgLTYxNCw3MSArNTExLDY3IEBACiAgICAgICAgICAgICBpZiBsaW5lIGluIChiJ1xyXG4nLCBiJ1xuJywgYicnKToKICAgICAgICAgICAgICAgICBicmVhawogCisgICAgZGVmIF9nZXRfY2h1bmtfbGVmdChzZWxmKToKKyAgICAgICAgIyByZXR1cm4gc2VsZi5jaHVua19sZWZ0LCByZWFkaW5nIGEgbmV3IGNodW5rIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIyBjaHVua19sZWZ0ID09IDA6IGF0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgY2h1bmssIG5lZWQgdG8gY2xvc2UgaXQKKyAgICAgICAgIyBjaHVua19sZWZ0ID09IE5vbmU6IE5vIGN1cnJlbnQgY2h1bmssIHNob3VsZCByZWFkIG5leHQuCisgICAgICAgICMgVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vbi16ZXJvIG9yIE5vbmUgaWYgdGhlIGxhc3QgY2h1bmsgaGFzCisgICAgICAgICMgYmVlbiByZWFkLgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CisgICAgICAgIGlmIG5vdCBjaHVua19sZWZ0OiAjIENhbiBiZSAwIG9yIE5vbmUKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBXZSBhcmUgYXQgdGhlIGVuZCBvZiBjaHVuay4gZGljYXJkIGNodW5rIGVuZAorICAgICAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJykKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAjIGxhc3QgY2h1bms6IDEqKCIwIikgWyBjaHVuay1leHRlbnNpb24gXSBDUkxGCisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKCkKKyAgICAgICAgICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZzsgY2xvc2UgdGhlICJmaWxlIgorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQorICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCisgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0CisgICAgICAgIHJldHVybiBjaHVua19sZWZ0CisKICAgICBkZWYgX3JlYWRhbGxfY2h1bmtlZChzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgotICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CiAgICAgICAgIHZhbHVlID0gW10KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkKLSAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCi0KLSAgICAgICAgICAgICMgd2UgcmVhZCB0aGUgd2hvbGUgY2h1bmssIGdldCBhbm90aGVyCi0gICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICAgICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCi0KLSAgICAgICAgc2VsZi5fcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKCkKLQotICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZzsgY2xvc2UgdGhlICJmaWxlIgotICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKLQotICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKKyAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChjaHVua19sZWZ0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSAwCisgICAgICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCisgICAgICAgIGV4Y2VwdCBJbmNvbXBsZXRlUmVhZDoKKyAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkKIAogICAgIGRlZiBfcmVhZGludG9fY2h1bmtlZChzZWxmLCBiKToKICAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgotICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0Ci0KICAgICAgICAgdG90YWxfYnl0ZXMgPSAwCiAgICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGJ5dGVzKGJbMDp0b3RhbF9ieXRlc10pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9nZXRfY2h1bmtfbGVmdCgpCisgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMKIAotICAgICAgICAgICAgaWYgbGVuKG12YikgPCBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKLSAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0IC0gbgotICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcyArIG4KLSAgICAgICAgICAgIGVsaWYgbGVuKG12YikgPT0gY2h1bmtfbGVmdDoKLSAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byhtdmIpCi0gICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBOb25lCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZW1wX212YiA9IG12YlswOmNodW5rX2xlZnRdCisgICAgICAgICAgICAgICAgaWYgbGVuKG12YikgPD0gY2h1bmtfbGVmdDoKKyAgICAgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0IC0gbgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCisKKyAgICAgICAgICAgICAgICB0ZW1wX212YiA9IG12Yls6Y2h1bmtfbGVmdF0KICAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byh0ZW1wX212YikKICAgICAgICAgICAgICAgICBtdmIgPSBtdmJbbjpdCiAgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgorICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IDAKIAotICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKLSAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQotCi0gICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCi0gICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQotCi0gICAgICAgIHJldHVybiB0b3RhbF9ieXRlcworICAgICAgICBleGNlcHQgSW5jb21wbGV0ZVJlYWQ6CisgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhiWzA6dG90YWxfYnl0ZXNdKSkKIAogICAgIGRlZiBfc2FmZV9yZWFkKHNlbGYsIGFtdCk6CiAgICAgICAgICIiIlJlYWQgdGhlIG51bWJlciBvZiBieXRlcyByZXF1ZXN0ZWQsIGNvbXBlbnNhdGluZyBmb3IgcGFydGlhbCByZWFkcy4KQEAgLTcxOSw2ICs2MTIsNzMgQEAKICAgICAgICAgICAgIHRvdGFsX2J5dGVzICs9IG4KICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCiAKKyAgICBkZWYgcmVhZDEoc2VsZiwgbj0tMSk6CisgICAgICAgICIiIlJlYWQgd2l0aCBhdCBtb3N0IG9uZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsLiAgSWYgYXQgbGVhc3Qgb25lCisgICAgICAgIGJ5dGUgaXMgYnVmZmVyZWQsIHJldHVybiB0aGF0IGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmUgb3Igc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgaWYgc2VsZi5jaHVua2VkOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQxX2NodW5rZWQobikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mcC5yZWFkMShuKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGlmIG4gPj0gMDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgIyBzb21lIGltcGxlbWVudGF0aW9ucywgbGlrZSBCdWZmZXJlZFJlYWRlciwgZG9uJ3Qgc3VwcG9ydCAtMQorICAgICAgICAgICAgIyBSZWFkIGFuIGFyYml0cmFyaWx5IHNlbGVjdGVkIGxhcmdlaXNoIGNodW5rLgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mcC5yZWFkMSgxNioxMDI0KQorICAgICAgICBpZiBub3QgcmVzdWx0IGFuZCBuOgorICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBwZWVrKHNlbGYsIG49LTEpOgorICAgICAgICAjIEhhdmluZyB0aGlzIGVuYWJsZXMgSU9CYXNlLnJlYWRsaW5lKCkgdG8gcmVhZCBtb3JlIHRoYW4gb25lCisgICAgICAgICMgYnl0ZSBhdCBhIHRpbWUKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lIG9yIHNlbGYuX21ldGhvZCA9PSAiSEVBRCI6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wZWVrX2NodW5rZWQobikKKyAgICAgICAgcmV0dXJuIHNlbGYuZnAucGVlayhuKQorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIGxpbWl0PS0xKToKKyAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lIG9yIHNlbGYuX21ldGhvZCA9PSAiSEVBRCI6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGlmIHNlbGYuY2h1bmtlZDoKKyAgICAgICAgICAgICMgRmFsbGJhY2sgdG8gSU9CYXNlIHJlYWRsaW5lIHdoaWNoIHVzZXMgcGVlaygpIGFuZCByZWFkKCkKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnJlYWRsaW5lKGxpbWl0KQorICAgICAgICByZXN1bHQgPSBzZWxmLmZwLnJlYWRsaW5lKGxpbWl0KQorICAgICAgICBpZiBub3QgcmVzdWx0IGFuZCBsaW1pdDoKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX3JlYWQxX2NodW5rZWQoc2VsZiwgbik6CisgICAgICAgICMgU3RyaWN0bHkgc3BlYWtpbmcsIF9nZXRfY2h1bmtfbGVmdCgpIG1heSBjYXVzZSBtb3JlIHRoYW4gb25lIHJlYWQsCisgICAgICAgICMgYnV0IHRoYXQgaXMgb2ssIHNpbmNlIHRoYXQgaXMgdG8gc2F0aXNmeSB0aGUgY2h1bmtlZCBwcm90b2NvbC4KKyAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKKyAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lIG9yIG4gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKKyAgICAgICAgaWYgbm90ICgwIDw9IG4gPD0gY2h1bmtfbGVmdCk6CisgICAgICAgICAgICBuID0gY2h1bmtfbGVmdCAjIGlmIG4gaXMgbmVnYXRpdmUgb3IgbGFyZ2VyIHRoYW4gY2h1bmtfbGVmdAorICAgICAgICByZWFkID0gc2VsZi5mcC5yZWFkMShuKQorICAgICAgICBzZWxmLmNodW5rX2xlZnQgLT0gbGVuKHJlYWQpCisgICAgICAgIGlmIG5vdCByZWFkOgorICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYiIiKQorICAgICAgICByZXR1cm4gcmVhZAorCisgICAgZGVmIF9wZWVrX2NodW5rZWQoc2VsZiwgbik6CisgICAgICAgICMgU3RyaWN0bHkgc3BlYWtpbmcsIF9nZXRfY2h1bmtfbGVmdCgpIG1heSBjYXVzZSBtb3JlIHRoYW4gb25lIHJlYWQsCisgICAgICAgICMgYnV0IHRoYXQgaXMgb2ssIHNpbmNlIHRoYXQgaXMgdG8gc2F0aXNmeSB0aGUgY2h1bmtlZCBwcm90b2NvbC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKKyAgICAgICAgZXhjZXB0IEluY29tcGxldGVSZWFkOgorICAgICAgICAgICAgcmV0dXJuIGInJyAjIHBlZWsgZG9lc24ndCB3b3JyeSBhYm91dCBwcm90b2NvbAorICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gYicnICMgZW9mCisgICAgICAgICMgcGVlayBpcyBhbGxvd2VkIHRvIHJldHVybiBtb3JlIHRoYW4gcmVxdWVzdGVkLiAgSnVzdCByZXF1ZXN0IHRoZQorICAgICAgICAjIGVudGlyZSBjaHVuaywgYW5kIHRydW5jYXRlIHdoYXQgd2UgZ2V0LgorICAgICAgICByZXR1cm4gc2VsZi5mcC5wZWVrKGNodW5rX2xlZnQpWzpjaHVua19sZWZ0XQorCiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZnAuZmlsZW5vKCkKIApAQCAtNzYyLDE0ICs3MjIsNiBAQAogICAgIGRlZmF1bHRfcG9ydCA9IEhUVFBfUE9SVAogICAgIGF1dG9fb3BlbiA9IDEKICAgICBkZWJ1Z2xldmVsID0gMAotICAgICMgVENQIE1heGltdW0gU2VnbWVudCBTaXplIChNU1MpIGlzIGRldGVybWluZWQgYnkgdGhlIFRDUCBzdGFjayBvbgotICAgICMgYSBwZXItY29ubmVjdGlvbiBiYXNpcy4gIFRoZXJlIGlzIG5vIHNpbXBsZSBhbmQgZWZmaWNpZW50Ci0gICAgIyBwbGF0Zm9ybSBpbmRlcGVuZGVudCBtZWNoYW5pc20gZm9yIGRldGVybWluaW5nIHRoZSBNU1MsIHNvCi0gICAgIyBpbnN0ZWFkIGEgcmVhc29uYWJsZSBlc3RpbWF0ZSBpcyBjaG9zZW4uICBUaGUgZ2V0c29ja29wdCgpCi0gICAgIyBpbnRlcmZhY2UgdXNpbmcgdGhlIFRDUF9NQVhTRUcgcGFyYW1ldGVyIG1heSBiZSBhIHN1aXRhYmxlCi0gICAgIyBhcHByb2FjaCBvbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zLiBBIHZhbHVlIG9mIDE2S2lCIGlzIGNob3NlbgotICAgICMgYXMgYSByZWFzb25hYmxlIGVzdGltYXRlIG9mIHRoZSBtYXhpbXVtIE1TUy4KLSAgICBtc3MgPSAxNjM4NAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgpAQCAtODUxLDcgKzgwMyw3IEBACiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXNwb25zZV9jbGFzcyhzZWxmLnNvY2ssIG1ldGhvZD1zZWxmLl9tZXRob2QpCiAgICAgICAgICh2ZXJzaW9uLCBjb2RlLCBtZXNzYWdlKSA9IHJlc3BvbnNlLl9yZWFkX3N0YXR1cygpCiAKLSAgICAgICAgaWYgY29kZSAhPSAyMDA6CisgICAgICAgIGlmIGNvZGUgIT0gaHR0cC5IVFRQU3RhdHVzLk9LOgogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJUdW5uZWwgY29ubmVjdGlvbiBmYWlsZWQ6ICVkICVzIiAlIChjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5zdHJpcCgpKSkKQEAgLTg2NSwxMCArODE3LDE0IEBACiAgICAgICAgICAgICBpZiBsaW5lIGluIChiJ1xyXG4nLCBiJ1xuJywgYicnKToKICAgICAgICAgICAgICAgICBicmVhawogCisgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgIHByaW50KCdoZWFkZXI6JywgbGluZS5kZWNvZGUoKSkKKwogICAgIGRlZiBjb25uZWN0KHNlbGYpOgogICAgICAgICAiIiJDb25uZWN0IHRvIHRoZSBob3N0IGFuZCBwb3J0IHNwZWNpZmllZCBpbiBfX2luaXRfXy4iIiIKLSAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCxzZWxmLnBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbWVvdXQsIHNlbGYuc291cmNlX2FkZHJlc3MpCisgICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uKAorICAgICAgICAgICAgKHNlbGYuaG9zdCxzZWxmLnBvcnQpLCBzZWxmLnRpbWVvdXQsIHNlbGYuc291cmNlX2FkZHJlc3MpCisgICAgICAgIHNlbGYuc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwgc29ja2V0LlRDUF9OT0RFTEFZLCAxKQogCiAgICAgICAgIGlmIHNlbGYuX3R1bm5lbF9ob3N0OgogICAgICAgICAgICAgc2VsZi5fdHVubmVsKCkKQEAgLTk1MSwxOSArOTA3LDkgQEAKICAgICAgICAgc2VsZi5fYnVmZmVyLmV4dGVuZCgoYiIiLCBiIiIpKQogICAgICAgICBtc2cgPSBiIlxyXG4iLmpvaW4oc2VsZi5fYnVmZmVyKQogICAgICAgICBkZWwgc2VsZi5fYnVmZmVyWzpdCi0gICAgICAgICMgSWYgbXNnIGFuZCBtZXNzYWdlX2JvZHkgYXJlIHNlbnQgaW4gYSBzaW5nbGUgc2VuZCgpIGNhbGwsCi0gICAgICAgICMgaXQgd2lsbCBhdm9pZCBwZXJmb3JtYW5jZSBwcm9ibGVtcyBjYXVzZWQgYnkgdGhlIGludGVyYWN0aW9uCi0gICAgICAgICMgYmV0d2VlbiBkZWxheWVkIGFjayBhbmQgdGhlIE5hZ2xlIGFsZ29yaXRobS4gSG93ZXZlciwKLSAgICAgICAgIyB0aGVyZSBpcyBubyBwZXJmb3JtYW5jZSBnYWluIGlmIHRoZSBtZXNzYWdlIGlzIGxhcmdlcgotICAgICAgICAjIHRoYW4gTVNTIChhbmQgdGhlcmUgaXMgYSBtZW1vcnkgcGVuYWx0eSBmb3IgdGhlIG1lc3NhZ2UKLSAgICAgICAgIyBjb3B5KS4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlX2JvZHksIGJ5dGVzKSBhbmQgbGVuKG1lc3NhZ2VfYm9keSkgPCBzZWxmLm1zczoKLSAgICAgICAgICAgIG1zZyArPSBtZXNzYWdlX2JvZHkKLSAgICAgICAgICAgIG1lc3NhZ2VfYm9keSA9IE5vbmUKKwogICAgICAgICBzZWxmLnNlbmQobXNnKQogICAgICAgICBpZiBtZXNzYWdlX2JvZHkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIG1lc3NhZ2VfYm9keSB3YXMgbm90IGEgc3RyaW5nIChpLmUuIGl0IGlzIGEgZmlsZSksIGFuZAotICAgICAgICAgICAgIyB3ZSBtdXN0IHJ1biB0aGUgcmlzayBvZiBOYWdsZS4KICAgICAgICAgICAgIHNlbGYuc2VuZChtZXNzYWdlX2JvZHkpCiAKICAgICBkZWYgcHV0cmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgc2tpcF9ob3N0PTAsIHNraXBfYWNjZXB0X2VuY29kaW5nPTApOgpAQCAtMTIyNCw3ICsxMTcwLDExIEBACiAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVzcG9uc2VfY2xhc3Moc2VsZi5zb2NrLCBtZXRob2Q9c2VsZi5fbWV0aG9kKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlLmJlZ2luKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXNwb25zZS5iZWdpbigpCisgICAgICAgICAgICBleGNlcHQgQ29ubmVjdGlvbkVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2Uud2lsbF9jbG9zZSAhPSBfVU5LTk9XTgogICAgICAgICAgICAgc2VsZi5fX3N0YXRlID0gX0NTX0lETEUKIApAQCAtMTMyNyw3ICsxMjc3LDggQEAKICAgICAgICAgICAgIGUgPSAnLCAlaSBtb3JlIGV4cGVjdGVkJyAlIHNlbGYuZXhwZWN0ZWQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGUgPSAnJwotICAgICAgICByZXR1cm4gJ0luY29tcGxldGVSZWFkKCVpIGJ5dGVzIHJlYWQlcyknICUgKGxlbihzZWxmLnBhcnRpYWwpLCBlKQorICAgICAgICByZXR1cm4gJyVzKCVpIGJ5dGVzIHJlYWQlcyknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLnBhcnRpYWwpLCBlKQogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gcmVwcihzZWxmKQogCkBAIC0xMzU1LDUgKzEzMDYsMTAgQEAKICAgICAgICAgSFRUUEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCAiZ290IG1vcmUgdGhhbiAlZCBieXRlcyB3aGVuIHJlYWRpbmcgJXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoX01BWExJTkUsIGxpbmVfdHlwZSkpCiAKK2NsYXNzIFJlbW90ZURpc2Nvbm5lY3RlZChDb25uZWN0aW9uUmVzZXRFcnJvciwgQmFkU3RhdHVzTGluZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpOgorICAgICAgICBCYWRTdGF0dXNMaW5lLl9faW5pdF9fKHNlbGYsICIiKQorICAgICAgICBDb25uZWN0aW9uUmVzZXRFcnJvci5fX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KQorCiAjIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogZXJyb3IgPSBIVFRQRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVqYXIucHkgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKaW5kZXggOTJlYWQ1My4uYjFiYTcyZSAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llamFyLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZWphci5weQpAQCAtODIxLDcgKzgyMSw3IEBACiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiJXM9JXMiICUgKG5hbWUsIHJlcHIoYXR0cikpKQogICAgICAgICBhcmdzLmFwcGVuZCgicmVzdD0lcyIgJSByZXByKHNlbGYuX3Jlc3QpKQogICAgICAgICBhcmdzLmFwcGVuZCgicmZjMjEwOT0lcyIgJSByZXByKHNlbGYucmZjMjEwOSkpCi0gICAgICAgIHJldHVybiAiQ29va2llKCVzKSIgJSAiLCAiLmpvaW4oYXJncykKKyAgICAgICAgcmV0dXJuICIlcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAiLCAiLmpvaW4oYXJncykpCiAKIAogY2xhc3MgQ29va2llUG9saWN5OgpAQCAtMTk5OSw3ICsxOTk5LDYgQEAKIAogICAgICAgICBtYWdpYyA9IGYucmVhZGxpbmUoKQogICAgICAgICBpZiBub3Qgc2VsZi5tYWdpY19yZS5zZWFyY2gobWFnaWMpOgotICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZSBMb2FkRXJyb3IoCiAgICAgICAgICAgICAgICAgIiVyIGRvZXMgbm90IGxvb2sgbGlrZSBhIE5ldHNjYXBlIGZvcm1hdCBjb29raWVzIGZpbGUiICUKICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZXMucHkgYi9MaWIvaHR0cC9jb29raWVzLnB5CmluZGV4IDQ4MmU2MDEuLmZkYTAyYjcgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZXMucHkKKysrIGIvTGliL2h0dHAvY29va2llcy5weQpAQCAtMTM4LDYgKzEzOCwxMiBAQAogX3NlbWlzcGFjZWpvaW4gPSAnOyAnLmpvaW4KIF9zcGFjZWpvaW4gPSAnICcuam9pbgogCitkZWYgX3dhcm5fZGVwcmVjYXRlZF9zZXR0ZXIoc2V0dGVyKToKKyAgICBpbXBvcnQgd2FybmluZ3MKKyAgICBtc2cgPSAoJ1RoZSAuJXMgc2V0dGVyIGlzIGRlcHJlY2F0ZWQuIFRoZSBhdHRyaWJ1dGUgd2lsbCBiZSByZWFkLW9ubHkgaW4gJworICAgICAgICAgICAnZnV0dXJlIHJlbGVhc2VzLiBQbGVhc2UgdXNlIHRoZSBzZXQoKSBtZXRob2QgaW5zdGVhZC4nICUgc2V0dGVyKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MykKKwogIwogIyBEZWZpbmUgYW4gZXhjZXB0aW9uIHZpc2libGUgdG8gRXh0ZXJuYWwgbW9kdWxlcwogIwpAQCAtMTUxLDg4ICsxNTcsMzYgQEAKICMgaW50byBhIDQgY2hhcmFjdGVyIHNlcXVlbmNlOiBhIGZvcndhcmQtc2xhc2ggZm9sbG93ZWQgYnkgdGhlCiAjIHRocmVlLWRpZ2l0IG9jdGFsIGVxdWl2YWxlbnQgb2YgdGhlIGNoYXJhY3Rlci4gIEFueSAnXCcgb3IgJyInIGlzCiAjIHF1b3RlZCB3aXRoIGEgcHJlY2VlZGluZyAnXCcgc2xhc2guCisjIEJlY2F1c2Ugb2YgdGhlIHdheSBicm93c2VycyByZWFsbHkgaGFuZGxlIGNvb2tpZXMgKGFzIG9wcG9zZWQgdG8gd2hhdAorIyB0aGUgUkZDIHNheXMpIHdlIGFsc28gZW5jb2RlICIsIiBhbmQgIjsiLgogIwogIyBUaGVzZSBhcmUgdGFrZW4gZnJvbSBSRkMyMDY4IGFuZCBSRkMyMTA5LgogIyAgICAgICBfTGVnYWxDaGFycyAgICAgICBpcyB0aGUgbGlzdCBvZiBjaGFycyB3aGljaCBkb24ndCByZXF1aXJlICIncwogIyAgICAgICBfVHJhbnNsYXRvciAgICAgICBoYXNoLXRhYmxlIGZvciBmYXN0IHF1b3RpbmcKICMKLV9MZWdhbENoYXJzICAgICAgID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIiEjJCUmJyorLS5eX2B8fjoiCi1fVHJhbnNsYXRvciAgICAgICA9IHsKLSAgICAnXDAwMCcgOiAnXFwwMDAnLCAgJ1wwMDEnIDogJ1xcMDAxJywgICdcMDAyJyA6ICdcXDAwMicsCi0gICAgJ1wwMDMnIDogJ1xcMDAzJywgICdcMDA0JyA6ICdcXDAwNCcsICAnXDAwNScgOiAnXFwwMDUnLAotICAgICdcMDA2JyA6ICdcXDAwNicsICAnXDAwNycgOiAnXFwwMDcnLCAgJ1wwMTAnIDogJ1xcMDEwJywKLSAgICAnXDAxMScgOiAnXFwwMTEnLCAgJ1wwMTInIDogJ1xcMDEyJywgICdcMDEzJyA6ICdcXDAxMycsCi0gICAgJ1wwMTQnIDogJ1xcMDE0JywgICdcMDE1JyA6ICdcXDAxNScsICAnXDAxNicgOiAnXFwwMTYnLAotICAgICdcMDE3JyA6ICdcXDAxNycsICAnXDAyMCcgOiAnXFwwMjAnLCAgJ1wwMjEnIDogJ1xcMDIxJywKLSAgICAnXDAyMicgOiAnXFwwMjInLCAgJ1wwMjMnIDogJ1xcMDIzJywgICdcMDI0JyA6ICdcXDAyNCcsCi0gICAgJ1wwMjUnIDogJ1xcMDI1JywgICdcMDI2JyA6ICdcXDAyNicsICAnXDAyNycgOiAnXFwwMjcnLAotICAgICdcMDMwJyA6ICdcXDAzMCcsICAnXDAzMScgOiAnXFwwMzEnLCAgJ1wwMzInIDogJ1xcMDMyJywKLSAgICAnXDAzMycgOiAnXFwwMzMnLCAgJ1wwMzQnIDogJ1xcMDM0JywgICdcMDM1JyA6ICdcXDAzNScsCi0gICAgJ1wwMzYnIDogJ1xcMDM2JywgICdcMDM3JyA6ICdcXDAzNycsCitfTGVnYWxDaGFycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIhIyQlJicqKy0uXl9gfH46IgorX1VuZXNjYXBlZENoYXJzID0gX0xlZ2FsQ2hhcnMgKyAnICgpLzw9Pj9AW117fScKIAotICAgICMgQmVjYXVzZSBvZiB0aGUgd2F5IGJyb3dzZXJzIHJlYWxseSBoYW5kbGUgY29va2llcyAoYXMgb3Bwb3NlZAotICAgICMgdG8gd2hhdCB0aGUgUkZDIHNheXMpIHdlIGFsc28gZW5jb2RlICwgYW5kIDsKK19UcmFuc2xhdG9yID0ge246ICdcXCUwM28nICUgbgorICAgICAgICAgICAgICAgZm9yIG4gaW4gc2V0KHJhbmdlKDI1NikpIC0gc2V0KG1hcChvcmQsIF9VbmVzY2FwZWRDaGFycykpfQorX1RyYW5zbGF0b3IudXBkYXRlKHsKKyAgICBvcmQoJyInKTogJ1xcIicsCisgICAgb3JkKCdcXCcpOiAnXFxcXCcsCit9KQogCi0gICAgJywnIDogJ1xcMDU0JywgJzsnIDogJ1xcMDczJywKK19pc19sZWdhbF9rZXkgPSByZS5jb21waWxlKCdbJXNdKycgJSBfTGVnYWxDaGFycykuZnVsbG1hdGNoCiAKLSAgICAnIicgOiAnXFwiJywgICAgICAgJ1xcJyA6ICdcXFxcJywKLQotICAgICdcMTc3JyA6ICdcXDE3NycsICAnXDIwMCcgOiAnXFwyMDAnLCAgJ1wyMDEnIDogJ1xcMjAxJywKLSAgICAnXDIwMicgOiAnXFwyMDInLCAgJ1wyMDMnIDogJ1xcMjAzJywgICdcMjA0JyA6ICdcXDIwNCcsCi0gICAgJ1wyMDUnIDogJ1xcMjA1JywgICdcMjA2JyA6ICdcXDIwNicsICAnXDIwNycgOiAnXFwyMDcnLAotICAgICdcMjEwJyA6ICdcXDIxMCcsICAnXDIxMScgOiAnXFwyMTEnLCAgJ1wyMTInIDogJ1xcMjEyJywKLSAgICAnXDIxMycgOiAnXFwyMTMnLCAgJ1wyMTQnIDogJ1xcMjE0JywgICdcMjE1JyA6ICdcXDIxNScsCi0gICAgJ1wyMTYnIDogJ1xcMjE2JywgICdcMjE3JyA6ICdcXDIxNycsICAnXDIyMCcgOiAnXFwyMjAnLAotICAgICdcMjIxJyA6ICdcXDIyMScsICAnXDIyMicgOiAnXFwyMjInLCAgJ1wyMjMnIDogJ1xcMjIzJywKLSAgICAnXDIyNCcgOiAnXFwyMjQnLCAgJ1wyMjUnIDogJ1xcMjI1JywgICdcMjI2JyA6ICdcXDIyNicsCi0gICAgJ1wyMjcnIDogJ1xcMjI3JywgICdcMjMwJyA6ICdcXDIzMCcsICAnXDIzMScgOiAnXFwyMzEnLAotICAgICdcMjMyJyA6ICdcXDIzMicsICAnXDIzMycgOiAnXFwyMzMnLCAgJ1wyMzQnIDogJ1xcMjM0JywKLSAgICAnXDIzNScgOiAnXFwyMzUnLCAgJ1wyMzYnIDogJ1xcMjM2JywgICdcMjM3JyA6ICdcXDIzNycsCi0gICAgJ1wyNDAnIDogJ1xcMjQwJywgICdcMjQxJyA6ICdcXDI0MScsICAnXDI0MicgOiAnXFwyNDInLAotICAgICdcMjQzJyA6ICdcXDI0MycsICAnXDI0NCcgOiAnXFwyNDQnLCAgJ1wyNDUnIDogJ1xcMjQ1JywKLSAgICAnXDI0NicgOiAnXFwyNDYnLCAgJ1wyNDcnIDogJ1xcMjQ3JywgICdcMjUwJyA6ICdcXDI1MCcsCi0gICAgJ1wyNTEnIDogJ1xcMjUxJywgICdcMjUyJyA6ICdcXDI1MicsICAnXDI1MycgOiAnXFwyNTMnLAotICAgICdcMjU0JyA6ICdcXDI1NCcsICAnXDI1NScgOiAnXFwyNTUnLCAgJ1wyNTYnIDogJ1xcMjU2JywKLSAgICAnXDI1NycgOiAnXFwyNTcnLCAgJ1wyNjAnIDogJ1xcMjYwJywgICdcMjYxJyA6ICdcXDI2MScsCi0gICAgJ1wyNjInIDogJ1xcMjYyJywgICdcMjYzJyA6ICdcXDI2MycsICAnXDI2NCcgOiAnXFwyNjQnLAotICAgICdcMjY1JyA6ICdcXDI2NScsICAnXDI2NicgOiAnXFwyNjYnLCAgJ1wyNjcnIDogJ1xcMjY3JywKLSAgICAnXDI3MCcgOiAnXFwyNzAnLCAgJ1wyNzEnIDogJ1xcMjcxJywgICdcMjcyJyA6ICdcXDI3MicsCi0gICAgJ1wyNzMnIDogJ1xcMjczJywgICdcMjc0JyA6ICdcXDI3NCcsICAnXDI3NScgOiAnXFwyNzUnLAotICAgICdcMjc2JyA6ICdcXDI3NicsICAnXDI3NycgOiAnXFwyNzcnLCAgJ1wzMDAnIDogJ1xcMzAwJywKLSAgICAnXDMwMScgOiAnXFwzMDEnLCAgJ1wzMDInIDogJ1xcMzAyJywgICdcMzAzJyA6ICdcXDMwMycsCi0gICAgJ1wzMDQnIDogJ1xcMzA0JywgICdcMzA1JyA6ICdcXDMwNScsICAnXDMwNicgOiAnXFwzMDYnLAotICAgICdcMzA3JyA6ICdcXDMwNycsICAnXDMxMCcgOiAnXFwzMTAnLCAgJ1wzMTEnIDogJ1xcMzExJywKLSAgICAnXDMxMicgOiAnXFwzMTInLCAgJ1wzMTMnIDogJ1xcMzEzJywgICdcMzE0JyA6ICdcXDMxNCcsCi0gICAgJ1wzMTUnIDogJ1xcMzE1JywgICdcMzE2JyA6ICdcXDMxNicsICAnXDMxNycgOiAnXFwzMTcnLAotICAgICdcMzIwJyA6ICdcXDMyMCcsICAnXDMyMScgOiAnXFwzMjEnLCAgJ1wzMjInIDogJ1xcMzIyJywKLSAgICAnXDMyMycgOiAnXFwzMjMnLCAgJ1wzMjQnIDogJ1xcMzI0JywgICdcMzI1JyA6ICdcXDMyNScsCi0gICAgJ1wzMjYnIDogJ1xcMzI2JywgICdcMzI3JyA6ICdcXDMyNycsICAnXDMzMCcgOiAnXFwzMzAnLAotICAgICdcMzMxJyA6ICdcXDMzMScsICAnXDMzMicgOiAnXFwzMzInLCAgJ1wzMzMnIDogJ1xcMzMzJywKLSAgICAnXDMzNCcgOiAnXFwzMzQnLCAgJ1wzMzUnIDogJ1xcMzM1JywgICdcMzM2JyA6ICdcXDMzNicsCi0gICAgJ1wzMzcnIDogJ1xcMzM3JywgICdcMzQwJyA6ICdcXDM0MCcsICAnXDM0MScgOiAnXFwzNDEnLAotICAgICdcMzQyJyA6ICdcXDM0MicsICAnXDM0MycgOiAnXFwzNDMnLCAgJ1wzNDQnIDogJ1xcMzQ0JywKLSAgICAnXDM0NScgOiAnXFwzNDUnLCAgJ1wzNDYnIDogJ1xcMzQ2JywgICdcMzQ3JyA6ICdcXDM0NycsCi0gICAgJ1wzNTAnIDogJ1xcMzUwJywgICdcMzUxJyA6ICdcXDM1MScsICAnXDM1MicgOiAnXFwzNTInLAotICAgICdcMzUzJyA6ICdcXDM1MycsICAnXDM1NCcgOiAnXFwzNTQnLCAgJ1wzNTUnIDogJ1xcMzU1JywKLSAgICAnXDM1NicgOiAnXFwzNTYnLCAgJ1wzNTcnIDogJ1xcMzU3JywgICdcMzYwJyA6ICdcXDM2MCcsCi0gICAgJ1wzNjEnIDogJ1xcMzYxJywgICdcMzYyJyA6ICdcXDM2MicsICAnXDM2MycgOiAnXFwzNjMnLAotICAgICdcMzY0JyA6ICdcXDM2NCcsICAnXDM2NScgOiAnXFwzNjUnLCAgJ1wzNjYnIDogJ1xcMzY2JywKLSAgICAnXDM2NycgOiAnXFwzNjcnLCAgJ1wzNzAnIDogJ1xcMzcwJywgICdcMzcxJyA6ICdcXDM3MScsCi0gICAgJ1wzNzInIDogJ1xcMzcyJywgICdcMzczJyA6ICdcXDM3MycsICAnXDM3NCcgOiAnXFwzNzQnLAotICAgICdcMzc1JyA6ICdcXDM3NScsICAnXDM3NicgOiAnXFwzNzYnLCAgJ1wzNzcnIDogJ1xcMzc3JwotICAgIH0KLQotZGVmIF9xdW90ZShzdHIsIExlZ2FsQ2hhcnM9X0xlZ2FsQ2hhcnMpOgorZGVmIF9xdW90ZShzdHIpOgogICAgIHIiIiJRdW90ZSBhIHN0cmluZyBmb3IgdXNlIGluIGEgY29va2llIGhlYWRlci4KIAogICAgIElmIHRoZSBzdHJpbmcgZG9lcyBub3QgbmVlZCB0byBiZSBkb3VibGUtcXVvdGVkLCB0aGVuIGp1c3QgcmV0dXJuIHRoZQogICAgIHN0cmluZy4gIE90aGVyd2lzZSwgc3Vycm91bmQgdGhlIHN0cmluZyBpbiBkb3VibGVxdW90ZXMgYW5kIHF1b3RlCiAgICAgKHdpdGggYSBcKSBzcGVjaWFsIGNoYXJhY3RlcnMuCiAgICAgIiIiCi0gICAgaWYgYWxsKGMgaW4gTGVnYWxDaGFycyBmb3IgYyBpbiBzdHIpOgorICAgIGlmIHN0ciBpcyBOb25lIG9yIF9pc19sZWdhbF9rZXkoc3RyKToKICAgICAgICAgcmV0dXJuIHN0cgogICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnIicgKyBfbnVsbGpvaW4oX1RyYW5zbGF0b3IuZ2V0KHMsIHMpIGZvciBzIGluIHN0cikgKyAnIicKKyAgICAgICAgcmV0dXJuICciJyArIHN0ci50cmFuc2xhdGUoX1RyYW5zbGF0b3IpICsgJyInCiAKIAogX09jdGFsUGF0dCA9IHJlLmNvbXBpbGUociJcXFswLTNdWzAtN11bMC03XSIpCkBAIC0yNDEsNyArMTk1LDcgQEAKIGRlZiBfdW5xdW90ZShzdHIpOgogICAgICMgSWYgdGhlcmUgYXJlbid0IGFueSBkb3VibGVxdW90ZXMsCiAgICAgIyB0aGVuIHRoZXJlIGNhbid0IGJlIGFueSBzcGVjaWFsIGNoYXJhY3RlcnMuICBTZWUgUkZDIDIxMDkuCi0gICAgaWYgbGVuKHN0cikgPCAyOgorICAgIGlmIHN0ciBpcyBOb25lIG9yIGxlbihzdHIpIDwgMjoKICAgICAgICAgcmV0dXJuIHN0cgogICAgIGlmIHN0clswXSAhPSAnIicgb3Igc3RyWy0xXSAhPSAnIic6CiAgICAgICAgIHJldHVybiBzdHIKQEAgLTMzOSwzMyArMjkzLDEwOCBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAjIFNldCBkZWZhdWx0cwotICAgICAgICBzZWxmLmtleSA9IHNlbGYudmFsdWUgPSBzZWxmLmNvZGVkX3ZhbHVlID0gTm9uZQorICAgICAgICBzZWxmLl9rZXkgPSBzZWxmLl92YWx1ZSA9IHNlbGYuX2NvZGVkX3ZhbHVlID0gTm9uZQogCiAgICAgICAgICMgU2V0IGRlZmF1bHQgYXR0cmlidXRlcwogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX3Jlc2VydmVkOgogICAgICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksICIiKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGtleShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tleQorCisgICAgQGtleS5zZXR0ZXIKKyAgICBkZWYga2V5KHNlbGYsIGtleSk6CisgICAgICAgIF93YXJuX2RlcHJlY2F0ZWRfc2V0dGVyKCdrZXknKQorICAgICAgICBzZWxmLl9rZXkgPSBrZXkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlCisKKyAgICBAdmFsdWUuc2V0dGVyCisgICAgZGVmIHZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgX3dhcm5fZGVwcmVjYXRlZF9zZXR0ZXIoJ3ZhbHVlJykKKyAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvZGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY29kZWRfdmFsdWUKKworICAgIEBjb2RlZF92YWx1ZS5zZXR0ZXIKKyAgICBkZWYgY29kZWRfdmFsdWUoc2VsZiwgY29kZWRfdmFsdWUpOgorICAgICAgICBfd2Fybl9kZXByZWNhdGVkX3NldHRlcignY29kZWRfdmFsdWUnKQorICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9IGNvZGVkX3ZhbHVlCisKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgSywgVik6CiAgICAgICAgIEsgPSBLLmxvd2VyKCkKICAgICAgICAgaWYgbm90IEsgaW4gc2VsZi5fcmVzZXJ2ZWQ6Ci0gICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBBdHRyaWJ1dGUgJXMiICUgSykKKyAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbnZhbGlkIGF0dHJpYnV0ZSAlciIgJSAoSywpKQogICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIEssIFYpCiAKKyAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXksIHZhbD1Ob25lKToKKyAgICAgICAga2V5ID0ga2V5Lmxvd2VyKCkKKyAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLl9yZXNlcnZlZDoKKyAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbnZhbGlkIGF0dHJpYnV0ZSAlciIgJSAoa2V5LCkpCisgICAgICAgIHJldHVybiBkaWN0LnNldGRlZmF1bHQoc2VsZiwga2V5LCB2YWwpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG1vcnNlbCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vcnNlbCwgTW9yc2VsKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKGRpY3QuX19lcV9fKHNlbGYsIG1vcnNlbCkgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgPT0gbW9yc2VsLl92YWx1ZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9rZXkgPT0gbW9yc2VsLl9rZXkgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fY29kZWRfdmFsdWUgPT0gbW9yc2VsLl9jb2RlZF92YWx1ZSkKKworICAgIF9fbmVfXyA9IG9iamVjdC5fX25lX18KKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBNb3JzZWwoKQorICAgICAgICBkaWN0LnVwZGF0ZShtb3JzZWwsIHNlbGYpCisgICAgICAgIG1vcnNlbC5fX2RpY3RfXy51cGRhdGUoc2VsZi5fX2RpY3RfXykKKyAgICAgICAgcmV0dXJuIG1vcnNlbAorCisgICAgZGVmIHVwZGF0ZShzZWxmLCB2YWx1ZXMpOgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGtleSwgdmFsIGluIGRpY3QodmFsdWVzKS5pdGVtcygpOgorICAgICAgICAgICAga2V5ID0ga2V5Lmxvd2VyKCkKKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5fcmVzZXJ2ZWQ6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkludmFsaWQgYXR0cmlidXRlICVyIiAlIChrZXksKSkKKyAgICAgICAgICAgIGRhdGFba2V5XSA9IHZhbAorICAgICAgICBkaWN0LnVwZGF0ZShzZWxmLCBkYXRhKQorCiAgICAgZGVmIGlzUmVzZXJ2ZWRLZXkoc2VsZiwgSyk6CiAgICAgICAgIHJldHVybiBLLmxvd2VyKCkgaW4gc2VsZi5fcmVzZXJ2ZWQKIAogICAgIGRlZiBzZXQoc2VsZiwga2V5LCB2YWwsIGNvZGVkX3ZhbCwgTGVnYWxDaGFycz1fTGVnYWxDaGFycyk6Ci0gICAgICAgICMgRmlyc3Qgd2UgdmVyaWZ5IHRoYXQgdGhlIGtleSBpc24ndCBhIHJlc2VydmVkIHdvcmQKLSAgICAgICAgIyBTZWNvbmQgd2UgbWFrZSBzdXJlIGl0IG9ubHkgY29udGFpbnMgbGVnYWwgY2hhcmFjdGVycworICAgICAgICBpZiBMZWdhbENoYXJzICE9IF9MZWdhbENoYXJzOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICdMZWdhbENoYXJzIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkLCBpZ25vcmVkIGFuZCB3aWxsICcKKyAgICAgICAgICAgICAgICAnYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuJywgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKKwogICAgICAgICBpZiBrZXkubG93ZXIoKSBpbiBzZWxmLl9yZXNlcnZlZDoKLSAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJBdHRlbXB0IHRvIHNldCBhIHJlc2VydmVkIGtleTogJXMiICUga2V5KQotICAgICAgICBpZiBhbnkoYyBub3QgaW4gTGVnYWxDaGFycyBmb3IgYyBpbiBrZXkpOgotICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIklsbGVnYWwga2V5IHZhbHVlOiAlcyIgJSBrZXkpCisgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcignQXR0ZW1wdCB0byBzZXQgYSByZXNlcnZlZCBrZXkgJXInICUgKGtleSwpKQorICAgICAgICBpZiBub3QgX2lzX2xlZ2FsX2tleShrZXkpOgorICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoJ0lsbGVnYWwga2V5ICVyJyAlIChrZXksKSkKIAogICAgICAgICAjIEl0J3MgYSBnb29kIGtleSwgc28gc2F2ZSBpdC4KLSAgICAgICAgc2VsZi5rZXkgPSBrZXkKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbAotICAgICAgICBzZWxmLmNvZGVkX3ZhbHVlID0gY29kZWRfdmFsCisgICAgICAgIHNlbGYuX2tleSA9IGtleQorICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbAorICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9IGNvZGVkX3ZhbAorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICdrZXknOiBzZWxmLl9rZXksCisgICAgICAgICAgICAndmFsdWUnOiBzZWxmLl92YWx1ZSwKKyAgICAgICAgICAgICdjb2RlZF92YWx1ZSc6IHNlbGYuX2NvZGVkX3ZhbHVlLAorICAgICAgICB9CisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5fa2V5ID0gc3RhdGVbJ2tleSddCisgICAgICAgIHNlbGYuX3ZhbHVlID0gc3RhdGVbJ3ZhbHVlJ10KKyAgICAgICAgc2VsZi5fY29kZWRfdmFsdWUgPSBzdGF0ZVsnY29kZWRfdmFsdWUnXQogCiAgICAgZGVmIG91dHB1dChzZWxmLCBhdHRycz1Ob25lLCBoZWFkZXI9IlNldC1Db29raWU6Iik6CiAgICAgICAgIHJldHVybiAiJXMgJXMiICUgKGhlYWRlciwgc2VsZi5PdXRwdXRTdHJpbmcoYXR0cnMpKQpAQCAtMzczLDggKzQwMiw3IEBACiAgICAgX19zdHJfXyA9IG91dHB1dAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzwlczogJXM9JXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5rZXksIHJlcHIoc2VsZi52YWx1ZSkpCisgICAgICAgIHJldHVybiAnPCVzOiAlcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLk91dHB1dFN0cmluZygpKQogCiAgICAgZGVmIGpzX291dHB1dChzZWxmLCBhdHRycz1Ob25lKToKICAgICAgICAgIyBQcmludCBqYXZhc2NyaXB0CkBAIC00MDgsMTAgKzQzNiw5IEBACiAgICAgICAgICAgICAgICAgYXBwZW5kKCIlcz0lcyIgJSAoc2VsZi5fcmVzZXJ2ZWRba2V5XSwgX2dldGRhdGUodmFsdWUpKSkKICAgICAgICAgICAgIGVsaWYga2V5ID09ICJtYXgtYWdlIiBhbmQgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKICAgICAgICAgICAgICAgICBhcHBlbmQoIiVzPSVkIiAlIChzZWxmLl9yZXNlcnZlZFtrZXldLCB2YWx1ZSkpCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAic2VjdXJlIjoKLSAgICAgICAgICAgICAgICBhcHBlbmQoc3RyKHNlbGYuX3Jlc2VydmVkW2tleV0pKQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gImh0dHBvbmx5IjoKLSAgICAgICAgICAgICAgICBhcHBlbmQoc3RyKHNlbGYuX3Jlc2VydmVkW2tleV0pKQorICAgICAgICAgICAgZWxpZiBrZXkgaW4gc2VsZi5fZmxhZ3M6CisgICAgICAgICAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZChzdHIoc2VsZi5fcmVzZXJ2ZWRba2V5XSkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JXMiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIHZhbHVlKSkKIApAQCAtNTM0LDEwICs1NjEsMTcgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgX19wYXJzZV9zdHJpbmcoc2VsZiwgc3RyLCBwYXR0PV9Db29raWVQYXR0ZXJuKToKLSAgICAgICAgaSA9IDAgICAgICAgICAgICAjIE91ciBzdGFydGluZyBwb2ludAotICAgICAgICBuID0gbGVuKHN0cikgICAgICMgTGVuZ3RoIG9mIHN0cmluZwotICAgICAgICBNID0gTm9uZSAgICAgICAgICMgY3VycmVudCBtb3JzZWwKKyAgICAgICAgaSA9IDAgICAgICAgICAgICAgICAgICMgT3VyIHN0YXJ0aW5nIHBvaW50CisgICAgICAgIG4gPSBsZW4oc3RyKSAgICAgICAgICAjIExlbmd0aCBvZiBzdHJpbmcKKyAgICAgICAgcGFyc2VkX2l0ZW1zID0gW10gICAgICMgUGFyc2VkICh0eXBlLCBrZXksIHZhbHVlKSB0cmlwbGVzCisgICAgICAgIG1vcnNlbF9zZWVuID0gRmFsc2UgICAjIEEga2V5PXZhbHVlIHBhaXIgd2FzIHByZXZpb3VzbHkgZW5jb3VudGVyZWQKIAorICAgICAgICBUWVBFX0FUVFJJQlVURSA9IDEKKyAgICAgICAgVFlQRV9LRVlWQUxVRSA9IDIKKworICAgICAgICAjIFdlIGZpcnN0IHBhcnNlIHRoZSB3aG9sZSBjb29raWUgc3RyaW5nIGFuZCByZWplY3QgaXQgaWYgaXQncworICAgICAgICAjIHN5bnRhY3RpY2FsbHkgaW52YWxpZCAodGhpcyBoZWxwcyBhdm9pZCBzb21lIGNsYXNzZXMgb2YgaW5qZWN0aW9uCisgICAgICAgICMgYXR0YWNrcykuCiAgICAgICAgIHdoaWxlIDAgPD0gaSA8IG46CiAgICAgICAgICAgICAjIFN0YXJ0IGxvb2tpbmcgZm9yIGEgY29va2llCiAgICAgICAgICAgICBtYXRjaCA9IHBhdHQubWF0Y2goc3RyLCBpKQpAQCAtNTQ4LDIyICs1ODIsNDEgQEAKICAgICAgICAgICAgIGtleSwgdmFsdWUgPSBtYXRjaC5ncm91cCgia2V5IiksIG1hdGNoLmdyb3VwKCJ2YWwiKQogICAgICAgICAgICAgaSA9IG1hdGNoLmVuZCgwKQogCi0gICAgICAgICAgICAjIFBhcnNlIHRoZSBrZXksIHZhbHVlIGluIGNhc2UgaXQncyBtZXRhaW5mbwogICAgICAgICAgICAgaWYga2V5WzBdID09ICIkIjoKLSAgICAgICAgICAgICAgICAjIFdlIGlnbm9yZSBhdHRyaWJ1dGVzIHdoaWNoIHBlcnRhaW4gdG8gdGhlIGNvb2tpZQotICAgICAgICAgICAgICAgICMgbWVjaGFuaXNtIGFzIGEgd2hvbGUuICBTZWUgUkZDIDIxMDkuCi0gICAgICAgICAgICAgICAgIyAoRG9lcyBhbnlvbmUgY2FyZT8pCi0gICAgICAgICAgICAgICAgaWYgTToKLSAgICAgICAgICAgICAgICAgICAgTVtrZXlbMTpdXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgaWYgbm90IG1vcnNlbF9zZWVuOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGlnbm9yZSBhdHRyaWJ1dGVzIHdoaWNoIHBlcnRhaW4gdG8gdGhlIGNvb2tpZQorICAgICAgICAgICAgICAgICAgICAjIG1lY2hhbmlzbSBhcyBhIHdob2xlLCBzdWNoIGFzICIkVmVyc2lvbiIuCisgICAgICAgICAgICAgICAgICAgICMgU2VlIFJGQyAyOTY1LiAoRG9lcyBhbnlvbmUgY2FyZT8pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcGFyc2VkX2l0ZW1zLmFwcGVuZCgoVFlQRV9BVFRSSUJVVEUsIGtleVsxOl0sIHZhbHVlKSkKICAgICAgICAgICAgIGVsaWYga2V5Lmxvd2VyKCkgaW4gTW9yc2VsLl9yZXNlcnZlZDoKLSAgICAgICAgICAgICAgICBpZiBNOgotICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5Lmxvd2VyKCkgaW4gTW9yc2VsLl9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNW2tleV0gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgbm90IG1vcnNlbF9zZWVuOgorICAgICAgICAgICAgICAgICAgICAjIEludmFsaWQgY29va2llIHN0cmluZworICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBrZXkubG93ZXIoKSBpbiBNb3JzZWwuX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkX2l0ZW1zLmFwcGVuZCgoVFlQRV9BVFRSSUJVVEUsIGtleSwgVHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBNW2tleV0gPSBfdW5xdW90ZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSW52YWxpZCBjb29raWUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0FUVFJJQlVURSwga2V5LCBfdW5xdW90ZSh2YWx1ZSkpKQogICAgICAgICAgICAgZWxpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBydmFsLCBjdmFsID0gc2VsZi52YWx1ZV9kZWNvZGUodmFsdWUpCisgICAgICAgICAgICAgICAgcGFyc2VkX2l0ZW1zLmFwcGVuZCgoVFlQRV9LRVlWQUxVRSwga2V5LCBzZWxmLnZhbHVlX2RlY29kZSh2YWx1ZSkpKQorICAgICAgICAgICAgICAgIG1vcnNlbF9zZWVuID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEludmFsaWQgY29va2llIHN0cmluZworICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgVGhlIGNvb2tpZSBzdHJpbmcgaXMgdmFsaWQsIGFwcGx5IGl0LgorICAgICAgICBNID0gTm9uZSAgICAgICAgICMgY3VycmVudCBtb3JzZWwKKyAgICAgICAgZm9yIHRwLCBrZXksIHZhbHVlIGluIHBhcnNlZF9pdGVtczoKKyAgICAgICAgICAgIGlmIHRwID09IFRZUEVfQVRUUklCVVRFOgorICAgICAgICAgICAgICAgIGFzc2VydCBNIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgTVtrZXldID0gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHRwID09IFRZUEVfS0VZVkFMVUUKKyAgICAgICAgICAgICAgICBydmFsLCBjdmFsID0gdmFsdWUKICAgICAgICAgICAgICAgICBzZWxmLl9fc2V0KGtleSwgcnZhbCwgY3ZhbCkKICAgICAgICAgICAgICAgICBNID0gc2VsZltrZXldCiAKZGlmZiAtLWdpdCBhL0xpYi9odHRwL3NlcnZlci5weSBiL0xpYi9odHRwL3NlcnZlci5weQppbmRleCBjZTBmNmNmLi42YTBlNmZlIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9zZXJ2ZXIucHkKKysrIGIvTGliL2h0dHAvc2VydmVyLnB5CkBAIC0xMDMsNiArMTAzLDggQEAKIGltcG9ydCBjb3B5CiBpbXBvcnQgYXJncGFyc2UKIAorZnJvbSBodHRwIGltcG9ydCBIVFRQU3RhdHVzCisKIAogIyBEZWZhdWx0IGVycm9yIG1lc3NhZ2UgdGVtcGxhdGUKIERFRkFVTFRfRVJST1JfTUVTU0FHRSA9ICIiIlwKQEAgLTI4MSw3ICsyODMsOSBAQAogICAgICAgICBpZiBsZW4od29yZHMpID09IDM6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uID0gd29yZHMKICAgICAgICAgICAgIGlmIHZlcnNpb25bOjVdICE9ICdIVFRQLyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMCwgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGJhc2VfdmVyc2lvbl9udW1iZXIgPSB2ZXJzaW9uLnNwbGl0KCcvJywgMSlbMV0KQEAgLTI5NiwyNSArMzAwLDMxIEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICB2ZXJzaW9uX251bWJlciA9IGludCh2ZXJzaW9uX251bWJlclswXSksIGludCh2ZXJzaW9uX251bWJlclsxXSkKICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMCwgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgIkJhZCByZXF1ZXN0IHZlcnNpb24gKCVyKSIgJSB2ZXJzaW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgaWYgdmVyc2lvbl9udW1iZXIgPj0gKDEsIDEpIGFuZCBzZWxmLnByb3RvY29sX3ZlcnNpb24gPj0gIkhUVFAvMS4xIjoKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBGYWxzZQogICAgICAgICAgICAgaWYgdmVyc2lvbl9udW1iZXIgPj0gKDIsIDApOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig1MDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgVmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVELAorICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIFZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGggPSB3b3JkcwogICAgICAgICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uID0gVHJ1ZQogICAgICAgICAgICAgaWYgY29tbWFuZCAhPSAnR0VUJzoKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIEhUVFAvMC45IHJlcXVlc3QgdHlwZSAoJXIpIiAlIGNvbW1hbmQpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAiQmFkIEhUVFAvMC45IHJlcXVlc3QgdHlwZSAoJXIpIiAlIGNvbW1hbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsaWYgbm90IHdvcmRzOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLCAiQmFkIHJlcXVlc3Qgc3ludGF4ICglcikiICUgcmVxdWVzdGxpbmUpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3Qgc3ludGF4ICglcikiICUgcmVxdWVzdGxpbmUpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgc2VsZi5jb21tYW5kLCBzZWxmLnBhdGgsIHNlbGYucmVxdWVzdF92ZXJzaW9uID0gY29tbWFuZCwgcGF0aCwgdmVyc2lvbgogCkBAIC0zMjMsNyArMzMzLDkgQEAKICAgICAgICAgICAgIHNlbGYuaGVhZGVycyA9IGh0dHAuY2xpZW50LnBhcnNlX2hlYWRlcnMoc2VsZi5yZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NsYXNzPXNlbGYuTWVzc2FnZUNsYXNzKQogICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuTGluZVRvb0xvbmc6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLCAiTGluZSB0b28gbG9uZyIpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAiTGluZSB0b28gbG9uZyIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBjb25udHlwZSA9IHNlbGYuaGVhZGVycy5nZXQoJ0Nvbm5lY3Rpb24nLCAiIikKQEAgLTM1NSw3ICszNjcsNyBAQAogICAgICAgICBGYWxzZS4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlX29ubHkoMTAwKQorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Vfb25seShIVFRQU3RhdHVzLkNPTlRJTlVFKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKICAgICAgICAgcmV0dXJuIFRydWUKIApAQCAtMzczLDcgKzM4NSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSA9ICcnCiAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gPSAnJwogICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9ICcnCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQxNCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoSFRUUFN0YXR1cy5SRVFVRVNUX1VSSV9UT09fTE9ORykKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJhd19yZXF1ZXN0bGluZToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVlCkBAIC0zODMsNyArMzk1LDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1uYW1lID0gJ2RvXycgKyBzZWxmLmNvbW1hbmQKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsIG1uYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNTAxLCAiVW5zdXBwb3J0ZWQgbWV0aG9kICglcikiICUgc2VsZi5jb21tYW5kKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQsCisgICAgICAgICAgICAgICAgICAgICJVbnN1cHBvcnRlZCBtZXRob2QgKCVyKSIgJSBzZWxmLmNvbW1hbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsIG1uYW1lKQogICAgICAgICAgICAgbWV0aG9kKCkKQEAgLTQzOCw3ICs0NTIsMTEgQEAKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgaW50KGxlbihib2R5KSkpCiAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICBpZiBzZWxmLmNvbW1hbmQgIT0gJ0hFQUQnIGFuZCBjb2RlID49IDIwMCBhbmQgY29kZSBub3QgaW4gKDIwNCwgMzA0KToKKworICAgICAgICBpZiAoc2VsZi5jb21tYW5kICE9ICdIRUFEJyBhbmQKKyAgICAgICAgICAgICAgICBjb2RlID49IDIwMCBhbmQKKyAgICAgICAgICAgICAgICBjb2RlIG5vdCBpbiAoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9fQ09OVEVOVCwgSFRUUFN0YXR1cy5OT1RfTU9ESUZJRUQpKToKICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYm9keSkKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlKHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6CkBAIC00OTksNyArNTE3LDggQEAKICAgICAgICAgVGhpcyBpcyBjYWxsZWQgYnkgc2VuZF9yZXNwb25zZSgpLgogCiAgICAgICAgICIiIgotCisgICAgICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgSFRUUFN0YXR1cyk6CisgICAgICAgICAgICBjb2RlID0gY29kZS52YWx1ZQogICAgICAgICBzZWxmLmxvZ19tZXNzYWdlKCciJXMiICVzICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RsaW5lLCBzdHIoY29kZSksIHN0cihzaXplKSkKIApAQCAtNTgyLDgyICs2MDEsMTEgQEAKICAgICAjIE1lc3NhZ2VDbGFzcyB1c2VkIHRvIHBhcnNlIGhlYWRlcnMKICAgICBNZXNzYWdlQ2xhc3MgPSBodHRwLmNsaWVudC5IVFRQTWVzc2FnZQogCi0gICAgIyBUYWJsZSBtYXBwaW5nIHJlc3BvbnNlIGNvZGVzIHRvIG1lc3NhZ2VzOyBlbnRyaWVzIGhhdmUgdGhlCi0gICAgIyBmb3JtIHtjb2RlOiAoc2hvcnRtZXNzYWdlLCBsb25nbWVzc2FnZSl9LgotICAgICMgU2VlIFJGQyAyNjE2IGFuZCA2NTg1LgorICAgICMgaGFjayB0byBtYWludGFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICAgIHJlc3BvbnNlcyA9IHsKLSAgICAgICAgMTAwOiAoJ0NvbnRpbnVlJywgJ1JlcXVlc3QgcmVjZWl2ZWQsIHBsZWFzZSBjb250aW51ZScpLAotICAgICAgICAxMDE6ICgnU3dpdGNoaW5nIFByb3RvY29scycsCi0gICAgICAgICAgICAgICdTd2l0Y2hpbmcgdG8gbmV3IHByb3RvY29sOyBvYmV5IFVwZ3JhZGUgaGVhZGVyJyksCi0KLSAgICAgICAgMjAwOiAoJ09LJywgJ1JlcXVlc3QgZnVsZmlsbGVkLCBkb2N1bWVudCBmb2xsb3dzJyksCi0gICAgICAgIDIwMTogKCdDcmVhdGVkJywgJ0RvY3VtZW50IGNyZWF0ZWQsIFVSTCBmb2xsb3dzJyksCi0gICAgICAgIDIwMjogKCdBY2NlcHRlZCcsCi0gICAgICAgICAgICAgICdSZXF1ZXN0IGFjY2VwdGVkLCBwcm9jZXNzaW5nIGNvbnRpbnVlcyBvZmYtbGluZScpLAotICAgICAgICAyMDM6ICgnTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb24nLCAnUmVxdWVzdCBmdWxmaWxsZWQgZnJvbSBjYWNoZScpLAotICAgICAgICAyMDQ6ICgnTm8gQ29udGVudCcsICdSZXF1ZXN0IGZ1bGZpbGxlZCwgbm90aGluZyBmb2xsb3dzJyksCi0gICAgICAgIDIwNTogKCdSZXNldCBDb250ZW50JywgJ0NsZWFyIGlucHV0IGZvcm0gZm9yIGZ1cnRoZXIgaW5wdXQuJyksCi0gICAgICAgIDIwNjogKCdQYXJ0aWFsIENvbnRlbnQnLCAnUGFydGlhbCBjb250ZW50IGZvbGxvd3MuJyksCi0KLSAgICAgICAgMzAwOiAoJ011bHRpcGxlIENob2ljZXMnLAotICAgICAgICAgICAgICAnT2JqZWN0IGhhcyBzZXZlcmFsIHJlc291cmNlcyAtLSBzZWUgVVJJIGxpc3QnKSwKLSAgICAgICAgMzAxOiAoJ01vdmVkIFBlcm1hbmVudGx5JywgJ09iamVjdCBtb3ZlZCBwZXJtYW5lbnRseSAtLSBzZWUgVVJJIGxpc3QnKSwKLSAgICAgICAgMzAyOiAoJ0ZvdW5kJywgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnKSwKLSAgICAgICAgMzAzOiAoJ1NlZSBPdGhlcicsICdPYmplY3QgbW92ZWQgLS0gc2VlIE1ldGhvZCBhbmQgVVJMIGxpc3QnKSwKLSAgICAgICAgMzA0OiAoJ05vdCBNb2RpZmllZCcsCi0gICAgICAgICAgICAgICdEb2N1bWVudCBoYXMgbm90IGNoYW5nZWQgc2luY2UgZ2l2ZW4gdGltZScpLAotICAgICAgICAzMDU6ICgnVXNlIFByb3h5JywKLSAgICAgICAgICAgICAgJ1lvdSBtdXN0IHVzZSBwcm94eSBzcGVjaWZpZWQgaW4gTG9jYXRpb24gdG8gYWNjZXNzIHRoaXMgJwotICAgICAgICAgICAgICAncmVzb3VyY2UuJyksCi0gICAgICAgIDMwNzogKCdUZW1wb3JhcnkgUmVkaXJlY3QnLAotICAgICAgICAgICAgICAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcpLAotCi0gICAgICAgIDQwMDogKCdCYWQgUmVxdWVzdCcsCi0gICAgICAgICAgICAgICdCYWQgcmVxdWVzdCBzeW50YXggb3IgdW5zdXBwb3J0ZWQgbWV0aG9kJyksCi0gICAgICAgIDQwMTogKCdVbmF1dGhvcml6ZWQnLAotICAgICAgICAgICAgICAnTm8gcGVybWlzc2lvbiAtLSBzZWUgYXV0aG9yaXphdGlvbiBzY2hlbWVzJyksCi0gICAgICAgIDQwMjogKCdQYXltZW50IFJlcXVpcmVkJywKLSAgICAgICAgICAgICAgJ05vIHBheW1lbnQgLS0gc2VlIGNoYXJnaW5nIHNjaGVtZXMnKSwKLSAgICAgICAgNDAzOiAoJ0ZvcmJpZGRlbicsCi0gICAgICAgICAgICAgICdSZXF1ZXN0IGZvcmJpZGRlbiAtLSBhdXRob3JpemF0aW9uIHdpbGwgbm90IGhlbHAnKSwKLSAgICAgICAgNDA0OiAoJ05vdCBGb3VuZCcsICdOb3RoaW5nIG1hdGNoZXMgdGhlIGdpdmVuIFVSSScpLAotICAgICAgICA0MDU6ICgnTWV0aG9kIE5vdCBBbGxvd2VkJywKLSAgICAgICAgICAgICAgJ1NwZWNpZmllZCBtZXRob2QgaXMgaW52YWxpZCBmb3IgdGhpcyByZXNvdXJjZS4nKSwKLSAgICAgICAgNDA2OiAoJ05vdCBBY2NlcHRhYmxlJywgJ1VSSSBub3QgYXZhaWxhYmxlIGluIHByZWZlcnJlZCBmb3JtYXQuJyksCi0gICAgICAgIDQwNzogKCdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsICdZb3UgbXVzdCBhdXRoZW50aWNhdGUgd2l0aCAnCi0gICAgICAgICAgICAgICd0aGlzIHByb3h5IGJlZm9yZSBwcm9jZWVkaW5nLicpLAotICAgICAgICA0MDg6ICgnUmVxdWVzdCBUaW1lb3V0JywgJ1JlcXVlc3QgdGltZWQgb3V0OyB0cnkgYWdhaW4gbGF0ZXIuJyksCi0gICAgICAgIDQwOTogKCdDb25mbGljdCcsICdSZXF1ZXN0IGNvbmZsaWN0LicpLAotICAgICAgICA0MTA6ICgnR29uZScsCi0gICAgICAgICAgICAgICdVUkkgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgaGFzIGJlZW4gcGVybWFuZW50bHkgcmVtb3ZlZC4nKSwKLSAgICAgICAgNDExOiAoJ0xlbmd0aCBSZXF1aXJlZCcsICdDbGllbnQgbXVzdCBzcGVjaWZ5IENvbnRlbnQtTGVuZ3RoLicpLAotICAgICAgICA0MTI6ICgnUHJlY29uZGl0aW9uIEZhaWxlZCcsICdQcmVjb25kaXRpb24gaW4gaGVhZGVycyBpcyBmYWxzZS4nKSwKLSAgICAgICAgNDEzOiAoJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsICdFbnRpdHkgaXMgdG9vIGxhcmdlLicpLAotICAgICAgICA0MTQ6ICgnUmVxdWVzdC1VUkkgVG9vIExvbmcnLCAnVVJJIGlzIHRvbyBsb25nLicpLAotICAgICAgICA0MTU6ICgnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsICdFbnRpdHkgYm9keSBpbiB1bnN1cHBvcnRlZCBmb3JtYXQuJyksCi0gICAgICAgIDQxNjogKCdSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlJywKLSAgICAgICAgICAgICAgJ0Nhbm5vdCBzYXRpc2Z5IHJlcXVlc3QgcmFuZ2UuJyksCi0gICAgICAgIDQxNzogKCdFeHBlY3RhdGlvbiBGYWlsZWQnLAotICAgICAgICAgICAgICAnRXhwZWN0IGNvbmRpdGlvbiBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLicpLAotICAgICAgICA0Mjg6ICgnUHJlY29uZGl0aW9uIFJlcXVpcmVkJywKLSAgICAgICAgICAgICAgJ1RoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsLicpLAotICAgICAgICA0Mjk6ICgnVG9vIE1hbnkgUmVxdWVzdHMnLCAnVGhlIHVzZXIgaGFzIHNlbnQgdG9vIG1hbnkgcmVxdWVzdHMgJwotICAgICAgICAgICAgICAnaW4gYSBnaXZlbiBhbW91bnQgb2YgdGltZSAoInJhdGUgbGltaXRpbmciKS4nKSwKLSAgICAgICAgNDMxOiAoJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLCAnVGhlIHNlcnZlciBpcyB1bndpbGxpbmcgdG8gJwotICAgICAgICAgICAgICAncHJvY2VzcyB0aGUgcmVxdWVzdCBiZWNhdXNlIGl0cyBoZWFkZXIgZmllbGRzIGFyZSB0b28gbGFyZ2UuJyksCi0KLSAgICAgICAgNTAwOiAoJ0ludGVybmFsIFNlcnZlciBFcnJvcicsICdTZXJ2ZXIgZ290IGl0c2VsZiBpbiB0cm91YmxlJyksCi0gICAgICAgIDUwMTogKCdOb3QgSW1wbGVtZW50ZWQnLAotICAgICAgICAgICAgICAnU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24nKSwKLSAgICAgICAgNTAyOiAoJ0JhZCBHYXRld2F5JywgJ0ludmFsaWQgcmVzcG9uc2VzIGZyb20gYW5vdGhlciBzZXJ2ZXIvcHJveHkuJyksCi0gICAgICAgIDUwMzogKCdTZXJ2aWNlIFVuYXZhaWxhYmxlJywKLSAgICAgICAgICAgICAgJ1RoZSBzZXJ2ZXIgY2Fubm90IHByb2Nlc3MgdGhlIHJlcXVlc3QgZHVlIHRvIGEgaGlnaCBsb2FkJyksCi0gICAgICAgIDUwNDogKCdHYXRld2F5IFRpbWVvdXQnLAotICAgICAgICAgICAgICAnVGhlIGdhdGV3YXkgc2VydmVyIGRpZCBub3QgcmVjZWl2ZSBhIHRpbWVseSByZXNwb25zZScpLAotICAgICAgICA1MDU6ICgnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLCAnQ2Fubm90IGZ1bGZpbGwgcmVxdWVzdC4nKSwKLSAgICAgICAgNTExOiAoJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAotICAgICAgICAgICAgICAnVGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy4nKSwKLSAgICAgICAgfQorICAgICAgICB2OiAodi5waHJhc2UsIHYuZGVzY3JpcHRpb24pCisgICAgICAgIGZvciB2IGluIEhUVFBTdGF0dXMuX19tZW1iZXJzX18udmFsdWVzKCkKKyAgICB9CiAKIAogY2xhc3MgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgpAQCAtNzA3LDcgKzY1NSw3IEBACiAgICAgICAgICAgICBwYXJ0cyA9IHVybGxpYi5wYXJzZS51cmxzcGxpdChzZWxmLnBhdGgpCiAgICAgICAgICAgICBpZiBub3QgcGFydHMucGF0aC5lbmRzd2l0aCgnLycpOgogICAgICAgICAgICAgICAgICMgcmVkaXJlY3QgYnJvd3NlciAtIGRvaW5nIGJhc2ljYWxseSB3aGF0IGFwYWNoZSBkb2VzCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDMwMSkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5NT1ZFRF9QRVJNQU5FTlRMWSkKICAgICAgICAgICAgICAgICBuZXdfcGFydHMgPSAocGFydHNbMF0sIHBhcnRzWzFdLCBwYXJ0c1syXSArICcvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHNbM10sIHBhcnRzWzRdKQogICAgICAgICAgICAgICAgIG5ld191cmwgPSB1cmxsaWIucGFyc2UudXJsdW5zcGxpdChuZXdfcGFydHMpCkBAIC03MjUsMTAgKzY3MywxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gb3BlbihwYXRoLCAncmInKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDQsICJGaWxlIG5vdCBmb3VuZCIpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoSFRUUFN0YXR1cy5OT1RfRk9VTkQsICJGaWxlIG5vdCBmb3VuZCIpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQorICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0spCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCBjdHlwZSkKICAgICAgICAgICAgIGZzID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGZzWzZdKSkKQEAgLTc1MCw3ICs2OTgsOSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsaXN0ID0gb3MubGlzdGRpcihwYXRoKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDQsICJObyBwZXJtaXNzaW9uIHRvIGxpc3QgZGlyZWN0b3J5IikKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLk5PVF9GT1VORCwKKyAgICAgICAgICAgICAgICAiTm8gcGVybWlzc2lvbiB0byBsaXN0IGRpcmVjdG9yeSIpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBsaXN0LnNvcnQoa2V5PWxhbWJkYSBhOiBhLmxvd2VyKCkpCiAgICAgICAgIHIgPSBbXQpAQCAtNzg5LDcgKzczOSw3IEBACiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKICAgICAgICAgZi53cml0ZShlbmNvZGVkKQogICAgICAgICBmLnNlZWsoMCkKLSAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKKyAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JXMiICUgZW5jKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LUxlbmd0aCIsIHN0cihsZW4oZW5jb2RlZCkpKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKQEAgLTk3MSw3ICs5MjEsOSBAQAogICAgICAgICBpZiBzZWxmLmlzX2NnaSgpOgogICAgICAgICAgICAgc2VsZi5ydW5fY2dpKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig1MDEsICJDYW4gb25seSBQT1NUIHRvIENHSSBzY3JpcHRzIikKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCwKKyAgICAgICAgICAgICAgICAiQ2FuIG9ubHkgUE9TVCB0byBDR0kgc2NyaXB0cyIpCiAKICAgICBkZWYgc2VuZF9oZWFkKHNlbGYpOgogICAgICAgICAiIiJWZXJzaW9uIG9mIHNlbmRfaGVhZCB0aGF0IHN1cHBvcnQgQ0dJIHNjcmlwdHMiIiIKQEAgLTEwNDksMTcgKzEwMDEsMjEgQEAKICAgICAgICAgc2NyaXB0bmFtZSA9IGRpciArICcvJyArIHNjcmlwdAogICAgICAgICBzY3JpcHRmaWxlID0gc2VsZi50cmFuc2xhdGVfcGF0aChzY3JpcHRuYW1lKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0LCAiTm8gc3VjaCBDR0kgc2NyaXB0ICglcikiICUgc2NyaXB0bmFtZSkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLk5PVF9GT1VORCwKKyAgICAgICAgICAgICAgICAiTm8gc3VjaCBDR0kgc2NyaXB0ICglcikiICUgc2NyaXB0bmFtZSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzLCAiQ0dJIHNjcmlwdCBpcyBub3QgYSBwbGFpbiBmaWxlICglcikiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRuYW1lKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuRk9SQklEREVOLAorICAgICAgICAgICAgICAgICJDR0kgc2NyaXB0IGlzIG5vdCBhIHBsYWluIGZpbGUgKCVyKSIgJSBzY3JpcHRuYW1lKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlzcHkgPSBzZWxmLmlzX3B5dGhvbihzY3JpcHRuYW1lKQogICAgICAgICBpZiBzZWxmLmhhdmVfZm9yayBvciBub3QgaXNweToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMywgIkNHSSBzY3JpcHQgaXMgbm90IGV4ZWN1dGFibGUgKCVyKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5GT1JCSURERU4sCisgICAgICAgICAgICAgICAgICAgICJDR0kgc2NyaXB0IGlzIG5vdCBleGVjdXRhYmxlICglcikiICUgc2NyaXB0bmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIFJlZmVyZW5jZTogaHR0cDovL2hvb2hvby5uY3NhLnVpdWMuZWR1L2NnaS9lbnYuaHRtbApAQCAtMTEyNyw3ICsxMDgzLDcgQEAKICAgICAgICAgICAgICAgICAgICdIVFRQX1VTRVJfQUdFTlQnLCAnSFRUUF9DT09LSUUnLCAnSFRUUF9SRUZFUkVSJyk6CiAgICAgICAgICAgICBlbnYuc2V0ZGVmYXVsdChrLCAiIikKIAotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwLCAiU2NyaXB0IG91dHB1dCBmb2xsb3dzIikKKyAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0ssICJTY3JpcHQgb3V0cHV0IGZvbGxvd3MiKQogICAgICAgICBzZWxmLmZsdXNoX2hlYWRlcnMoKQogCiAgICAgICAgIGRlY29kZWRfcXVlcnkgPSBxdWVyeS5yZXBsYWNlKCcrJywgJyAnKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2hhbmdlTG9nIGIvTGliL2lkbGVsaWIvQ2hhbmdlTG9nCmluZGV4IDk4NTg3MWIuLjkwZTAyZjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NoYW5nZUxvZworKysgYi9MaWIvaWRsZWxpYi9DaGFuZ2VMb2cKQEAgLTIwLDcgKzIwLDcgQEAKIDIwMDEtMDctMTkgMTQ6NDkgIGVsZ3VhdmFzCiAKIAkqIENoYW5nZUxvZywgRWRpdG9yV2luZG93LnB5LCBJTlNUQUxMQVRJT04sIE5FV1MudHh0LCBSRUFETUUudHh0LAotCVRPRE8udHh0LCBpZGxldmVyLnB5OiAKKwlUT0RPLnR4dCwgaWRsZXZlci5weToKIAltaW5vciB0aWR5LXVwcyByZWFkeSBmb3IgMC44LjEgYWxwaGEgdGFyYmFsbCByZWxlYXNlCiAKIDIwMDEtMDctMTcgMTU6MTIgIGtiawpAQCAtMTcyLDcgKzE3Miw3IEBACiAJYWxsIHRoaXMgd29yayB3LyBhIGZ1dHVyZS1zdG10IGp1c3QgbG9va3MgaGFyZGVyIGFuZCBoYXJkZXIuIgogCS0tdGltX29uZQogCQotCShGcm9tIFJlbCAxLjg6ICJIYWNrIHRvIG1ha2UgdGhpcyBzdGlsbCB3b3JrIHdpdGggUHl0aG9uIDEuNS4yLiAKKwkoRnJvbSBSZWwgMS44OiAiSGFjayB0byBtYWtlIHRoaXMgc3RpbGwgd29yayB3aXRoIFB5dGhvbiAxLjUuMi4KIAk7LSggIiAtLWZkcmFrZSkKIAogMjAwMS0wNy0xNCAxNDo1MSAga2JrCkBAIC0xOTMsNyArMTkzLDcgQEAKIAl0ZXN0KCkgdG8gX3Rlc3QoKS4iICAtLUd2UgogCQogCVRoaXMgd2FzIGFuIGludGVyZXN0aW5nIG1lcmdlLiBUaGUgam9pbiBjb21wbGV0ZWx5IG1pc3NlZCByZW1vdmluZwotCWdvb2RuYW1lKCksIHdoaWNoIHdhcyBhZGphY2VudCwgYnV0IG91dHNpZGUgb2YsIGEgc21hbGwgY29uZmxpY3QuIAorCWdvb2RuYW1lKCksIHdoaWNoIHdhcyBhZGphY2VudCwgYnV0IG91dHNpZGUgb2YsIGEgc21hbGwgY29uZmxpY3QuCiAJSSBvbmx5IGNhdWdodCBpdCBieSBjb21wYXJpbmcgdGhlIDEuMS4zLjIvMS4xLjMuMyBkaWZmLiAgQ1ZTIGFpbid0CiAJaW5mYWxsaWJsZS4KIApAQCAtNTE2LDEyICs1MTYsMTIgQEAKIAogMjAwMC0wOC0xNSAyMjo1MSAgbm93b25kZXIKIAotCSogSURMRUZPUksuaHRtbDogCisJKiBJRExFRk9SSy5odG1sOgogCWNvcnJlY3RlZCBlbWFpbCBhZGRyZXNzCiAKIDIwMDAtMDgtMTUgMjI6NDcgIG5vd29uZGVyCiAKLQkqIElETEVGT1JLLmh0bWw6IAorCSogSURMRUZPUksuaHRtbDoKIAlhZGRlZCAuaHRtbCBmaWxlIGZvciBodHRwOi8vaWRsZWZvcmsuc291cmNlZm9yZ2UubmV0CiAKIDIwMDAtMDgtMTUgMTE6MTMgIGRzY2hlcmVyCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weSBiL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CmluZGV4IDQ0NzgzYjYuLjdkMjVhZGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CkBAIC01NywxOCArNTcsMTggQEAKICAgICAgICAgICAgICMgQ2FsY3VsYXRlIHRoZSBib3JkZXIgd2lkdGggYW5kIGhvcml6b250YWwgcGFkZGluZyByZXF1aXJlZCB0bwogICAgICAgICAgICAgIyBhbGlnbiB0aGUgY29udGV4dCB3aXRoIHRoZSB0ZXh0IGluIHRoZSBtYWluIFRleHQgd2lkZ2V0LgogICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBBbGwgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBpbnQoc3RyKDx2YWx1ZT4pKSwgc2luY2Ugc29tZQorICAgICAgICAgICAgIyBBbGwgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBnZXRpbnQoKSwgc2luY2Ugc29tZQogICAgICAgICAgICAgIyB2YWx1ZXMgbWF5IGJlIHBpeGVsIG9iamVjdHMsIHdoaWNoIGNhbid0IHNpbXBseSBiZSBhZGRlZCB0byBpbnRzLgogICAgICAgICAgICAgd2lkZ2V0cyA9IHNlbGYuZWRpdHdpbi50ZXh0LCBzZWxmLmVkaXR3aW4udGV4dF9mcmFtZQogICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIHJlcXVpcmVkIHZlcnRpY2FsIHBhZGRpbmcKICAgICAgICAgICAgIHBhZHggPSAwCiAgICAgICAgICAgICBmb3Igd2lkZ2V0IGluIHdpZGdldHM6Ci0gICAgICAgICAgICAgICAgcGFkeCArPSBpbnQoc3RyKCB3aWRnZXQucGFja19pbmZvKClbJ3BhZHgnXSApKQotICAgICAgICAgICAgICAgIHBhZHggKz0gaW50KHN0ciggd2lkZ2V0LmNnZXQoJ3BhZHgnKSApKQorICAgICAgICAgICAgICAgIHBhZHggKz0gd2lkZ2V0LnRrLmdldGludCh3aWRnZXQucGFja19pbmZvKClbJ3BhZHgnXSkKKyAgICAgICAgICAgICAgICBwYWR4ICs9IHdpZGdldC50ay5nZXRpbnQod2lkZ2V0LmNnZXQoJ3BhZHgnKSkKICAgICAgICAgICAgICMgQ2FsY3VsYXRlIHRoZSByZXF1aXJlZCBib3JkZXIgd2lkdGgKICAgICAgICAgICAgIGJvcmRlciA9IDAKICAgICAgICAgICAgIGZvciB3aWRnZXQgaW4gd2lkZ2V0czoKLSAgICAgICAgICAgICAgICBib3JkZXIgKz0gaW50KHN0ciggd2lkZ2V0LmNnZXQoJ2JvcmRlcicpICkpCisgICAgICAgICAgICAgICAgYm9yZGVyICs9IHdpZGdldC50ay5nZXRpbnQod2lkZ2V0LmNnZXQoJ2JvcmRlcicpKQogICAgICAgICAgICAgc2VsZi5sYWJlbCA9IHRraW50ZXIuTGFiZWwoc2VsZi5lZGl0d2luLnRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9IlxuIiAqIChzZWxmLmNvbnRleHRfZGVwdGggLSAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ISVNUT1JZLnR4dCBiL0xpYi9pZGxlbGliL0hJU1RPUlkudHh0CmluZGV4IDAxZDczZWQuLjczMWZhYmQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0hJU1RPUlkudHh0CisrKyBiL0xpYi9pZGxlbGliL0hJU1RPUlkudHh0CkBAIC0xMSw3ICsxMSw3IEBACiAqUmVsZWFzZSBkYXRlOiAyMi1KdWwtMjAwMSoKIAogLSBOZXcgdGFyYmFsbCByZWxlYXNlZCBhcyBhIHJlc3VsdCBvZiB0aGUgJ3Jldml0YWxpc2F0aW9uJyBvZiB0aGUgSURMRWZvcmsKLSAgcHJvamVjdC4gCisgIHByb2plY3QuCiAKIC0gVGhpcyByZWxlYXNlIHJlcXVpcmVzIHB5dGhvbiAyLjEgb3IgYmV0dGVyLiBDb21wYXRpYmlsaXR5IHdpdGggZWFybGllcgogICB2ZXJzaW9ucyBvZiBweXRob24gKGVzcGVjaWFsbHkgYW5jaWVudCBvbmVzIGxpa2UgMS41eCkgaXMgbm8gbG9uZ2VyIGEKQEAgLTI2LDggKzI2LDggQEAKICAgbm90IHdvcmtpbmcsIGJ1dCBJIGJlbGlldmUgdGhpcyB3YXMgdGhlIGNhc2Ugd2l0aCB0aGUgcHJldmlvdXMgSURMRSBmb3JrCiAgIHJlbGVhc2UgKDAuNy4xKSBhcyB3ZWxsLgogCi0tIFRoaXMgcmVsZWFzZSBpcyBiZWluZyBtYWRlIG5vdyB0byBtYXJrIHRoZSBwb2ludCBhdCB3aGljaCBJRExFZm9yayBpcyAKLSAgbGF1bmNoaW5nIGludG8gYSBuZXcgc3RhZ2Ugb2YgZGV2ZWxvcG1lbnQuIAorLSBUaGlzIHJlbGVhc2UgaXMgYmVpbmcgbWFkZSBub3cgdG8gbWFyayB0aGUgcG9pbnQgYXQgd2hpY2ggSURMRWZvcmsgaXMKKyAgbGF1bmNoaW5nIGludG8gYSBuZXcgc3RhZ2Ugb2YgZGV2ZWxvcG1lbnQuCiAKIC0gSURMRWZvcmsgQ1ZTIHdpbGwgbm93IGJlIGJyYW5jaGVkIHRvIGVuYWJsZSBmdXJ0aGVyIGRldmVsb3BtZW50IGFuZAogICBleHBsb3JhdGlvbiBvZiB0aGUgdHdvICJleGVjdXRpb24gaW4gYSByZW1vdGUgcHJvY2VzcyIgcGF0Y2hlcyBzdWJtaXR0ZWQgYnkKQEAgLTk2LDcgKzk2LDcgQEAKICAgICBpbnN0ZWFkIG9mIHRoZSBJRExFIGhlbHA7IHNoaWZ0LVRBQiBpcyBub3cgYSBzeW5vbnltIGZvciB1bmluZGVudC4KIAogLSBOZXcgbW9kdWxlczoKLSAgCisKICAgRXhlY0JpbmRpbmcucHkgICAgICAgICBFeGVjdXRlcyBwcm9ncmFtIHRocm91Z2ggbG9hZGVyCiAgIGxvYWRlci5weSAgICAgICAgICAgICAgQm9vdHN0cmFwcyB1c2VyIHByb2dyYW0KICAgcHJvdG9jb2wucHkgICAgICAgICAgICBSUEMgcHJvdG9jb2wKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL05FV1MudHh0IGIvTGliL2lkbGVsaWIvTkVXUy50eHQKaW5kZXggMDM1ZmViYi4uOWJkNjc4MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTkVXUy50eHQKKysrIGIvTGliL2lkbGVsaWIvTkVXUy50eHQKQEAgLTEsNiArMSw2IEBACi1XaGF0J3MgTmV3IGluIElkbGUgMy40LjQ/CitXaGF0J3MgTmV3IGluIElETEUgMy41LjE/CiA9PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE1LT8/LT8/KgorKlJlbGVhc2UgZGF0ZTogMjAxNS0wOS0xMyoKIAogLSBJc3N1ZSAjMjQ5NzI6IEluYWN0aXZlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kIG5vdyBtYXRjaGVzIGFjdGl2ZSBzZWxlY3Rpb24KICAgYmFja2dyb3VuZCwgYXMgY29uZmlndXJlZCBieSB1c2VyLCBvbiBhbGwgc3lzdGVtcy4gIEZvdW5kIGl0ZW1zIGFyZSBub3cKQEAgLTU0LDYgKzU0LDExIEBACiAKIC0gSXNzdWUgIzI0NzkwOiBSZW1vdmUgZXh0cmFuZW91cyBjb2RlICh3aGljaCBhbHNvIGNyZWF0ZSAyICYgMyBjb25mbGljdHMpLgogCisKK1doYXQncyBOZXcgaW4gSURMRSAzLjUuMD8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKypSZWxlYXNlIGRhdGU6IDIwMTUtMDktMTMqCisKIC0gSXNzdWUgIzIzNjcyOiBBbGxvdyBJZGxlIHRvIGVkaXQgYW5kIHJ1biBmaWxlcyB3aXRoIGFzdHJhbCBjaGFycyBpbiBuYW1lLgogICBQYXRjaCBieSBNb2hkIFNhbmFkIFpha2kgUml6dmkuCiAKQEAgLTcwLDExICs3NSw2IEBACiAtIElzc3VlICMyMzE4NDogcmVtb3ZlIHVudXNlZCBuYW1lcyBhbmQgaW1wb3J0cyBpbiBpZGxlbGliLgogICBJbml0aWFsIHBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgogCi0KLVdoYXQncyBOZXcgaW4gSWRsZSAzLjQuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtMDItMjUqCi0KIC0gSXNzdWUgIzIwNTc3OiBDb25maWd1cmF0aW9uIG9mIHRoZSBtYXggbGluZSBsZW5ndGggZm9yIHRoZSBGb3JtYXRQYXJhZ3JhcGgKICAgZXh0ZW5zaW9uIGhhcyBiZWVuIG1vdmVkIGZyb20gdGhlIEdlbmVyYWwgdGFiIG9mIHRoZSBJZGxlIHByZWZlcmVuY2VzIGRpYWxvZwogICB0byB0aGUgRm9ybWF0UGFyYWdyYXBoIHRhYiBvZiB0aGUgQ29uZmlnIEV4dGVuc2lvbnMgZGlhbG9nLgpAQCAtMTAzLDExICsxMDMsNiBAQAogLSBJc3N1ZSAjMjMxODA6IFJlbmFtZSBJRExFICJXaW5kb3dzIiBtZW51IGl0ZW0gdG8gIldpbmRvdyIuCiAgIFBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjQuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMTAtMDYqCi0KIC0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAogICBtb3ZlIHZlcnNpb24gdG8gZW5kLgogCkBAIC0xNDIsMTQgKzEzNyw4IEBACiAKIC0gSXNzdWUgIzE4NDA5OiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9Db21wbGV0ZS4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgogCi0tIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCi0gIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCi0gIGFzIG5lZWRlZCB0byB3b3JrIHdpdGggaHRlc3QuICBSdW5uaW5nIHRoZSBtb2R1bGUgYXMgX19tYWluX18gcnVucyBhbGwgdGVzdHMuCi0KLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuNC4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNC0wNS0xOCoKKy0gSXNzdWUgIzIxNDc3OiBodGVzdC5weSAtIEltcHJvdmUgZnJhbWV3b3JrLCBjb21wbGV0ZSBzZXQgb2YgdGVzdHMuCisgIFBhdGNoZXMgYnkgU2FpbWFkaGF2IEhlYmxpa2FyCiAKIC0gSXNzdWUgIzE4MTA0OiBBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KICAgY29uc29saWRhdGluZyBhbmQgaW1wcm92aW5nIGh1bWFuLXZhbGlkYXRlZCB0ZXN0cyBvZiBJZGxlLiBDaGFuZ2Ugb3RoZXIgZmlsZXMKQEAgLTI0OCwxMSArMjM3LDYgQEAKIC0gVXNlIG9mICdmaWx0ZXInIGluIGtleWJpbmRpbmdEaWFsb2cucHkgd2FzIGNhdXNpbmcgY3VzdG9tIGtleSBhc3NpZ25tZW50IHRvCiAgIGZhaWwuICBQYXRjaCA1NzA3IGFtYXVyeS5mb3JnZW90ZGFyYy4KIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy4xYTE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAwNy1NYXItMDkqCi0KIC0gSXNzdWUgIzQ4MTU6IE9mZmVyIGNvbnZlcnNpb24gdG8gVVRGLTggaWYgc291cmNlIGZpbGVzIGhhdmUKICAgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gYW5kIGFyZSBub3QgZW5jb2RlZCBpbiBVVEYtOC4KIApAQCAtMjkyLDExICsyNzYsNiBAQAogCiAtIElzc3VlICMzNTQ5OiBPbiBNYWNPUyB0aGUgcHJlZmVyZW5jZXMgbWVudSB3YXMgbm90IHByZXNlbnQKIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy4wIGZpbmFsPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDAzLURlYy0yMDA4KgotCiAtIElETEUgd291bGQgcHJpbnQgYSAiVW5oYW5kbGVkIHNlcnZlciBleGNlcHRpb24hIiBtZXNzYWdlIHdoZW4gaW50ZXJuYWwKICAgZGVidWdnaW5nIGlzIGVuYWJsZWQuCiAKQEAgLTMwNiwxMSArMjg1LDYgQEAKIC0gSXNzdWUgIzQzODM6IFdoZW4gSURMRSBjYW5ub3QgbWFrZSB0aGUgY29ubmVjdGlvbiB0byBpdHMgc3VicHJvY2VzcywgaXQgd291bGQKICAgZmFpbCB0byBwcm9wZXJseSBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjBhMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDI5LUZlYi0yMDA4KgotCiAtIGhlbHAoKSB3YXMgbm90IHBhZ2luZyB0byB0aGUgc2hlbGwuICBJc3N1ZTE2NTAuCiAKIC0gQ29kZUNvbnRleHQgd2FzIG5vdCBpbXBvcnRpbmcuCkBAIC0zMjIsMTkgKzI5Niw5IEBACiAKIC0gSXNzdWUgIzE1ODU6IElETEUgdXNlcyBub24tZXhpc3RlbnQgeHJhbmdlKCkgZnVuY3Rpb24uCiAKLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuMGEyPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMDYtRGVjLTIwMDcqCi0KIC0gV2luZG93cyBFT0wgc2VxdWVuY2Ugbm90IGNvbnZlcnRlZCBjb3JyZWN0bHksIGVuY29kaW5nIGVycm9yLgogICBDYXVzZWQgZmlsZSBzYXZlIHRvIGZhaWwuIEJ1ZyAxMTMwLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjBhMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDMxLUF1Zy0yMDA3KgotCiAtIElETEUgY29udmVydGVkIHRvIFB5dGhvbiAzMDAwIHN5bnRheC4KIAogLSBTdHJpbmdzIGJlY2FtZSBVbmljb2RlLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUkVBRE1FLnR4dCBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKaW5kZXggYjJiYjczYi4uN2Y0YTY2ZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAorKysgYi9MaWIvaWRsZWxpYi9SRUFETUUudHh0CkBAIC0xNCw3ICsxNCw3IEBACiBUaGVyZSBpcyBhIFB5dGhvbiBTaGVsbCB3aW5kb3cgd2hpY2ggZmVhdHVyZXMgY29sb3JpemluZyBhbmQgY29tbWFuZCByZWNhbGwuCiAKIElETEUgZXhlY3V0ZXMgUHl0aG9uIGNvZGUgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLCB3aGljaCBpcyByZXN0YXJ0ZWQgZm9yIGVhY2gKLVJ1biAoRjUpIGluaXRpYXRlZCBmcm9tIGFuIGVkaXRvciB3aW5kb3cuICBUaGUgZW52aXJvbm1lbnQgY2FuIGFsc28gYmUgCitSdW4gKEY1KSBpbml0aWF0ZWQgZnJvbSBhbiBlZGl0b3Igd2luZG93LiAgVGhlIGVudmlyb25tZW50IGNhbiBhbHNvIGJlCiByZXN0YXJ0ZWQgZnJvbSB0aGUgU2hlbGwgd2luZG93IHdpdGhvdXQgcmVzdGFydGluZyBJRExFLgogCiBUaGlzIGVuaGFuY2VtZW50IGhhcyBvZnRlbiBiZWVuIHJlcXVlc3RlZCwgYW5kIGlzIG5vdyBmaW5hbGx5IGF2YWlsYWJsZS4gIFRoZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weSBiL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKaW5kZXggYjNkN2JmYS4uNjdkN2Y2MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQorKysgYi9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CkBAIC00Nyw4ICs0Nyw5IEBACiAgICAgICAgIHRrLmNyZWF0ZWNvbW1hbmQodywgc2VsZi5kaXNwYXRjaCkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJXaWRnZXRSZWRpcmVjdG9yKCVzPCVzPikiICUgKHNlbGYud2lkZ2V0Ll9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0Ll93KQorICAgICAgICByZXR1cm4gIiVzKCVzPCVzPikiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0Ll9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndpZGdldC5fdykKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIlVucmVnaXN0ZXIgb3BlcmF0aW9ucyBhbmQgcmV2ZXJ0IHJlZGlyZWN0aW9uIGNyZWF0ZWQgYnkgLl9faW5pdF9fLiIKQEAgLTE0Miw3ICsxNDMsOCBAQAogICAgICAgICBzZWxmLm9yaWdfYW5kX29wZXJhdGlvbiA9IChyZWRpci5vcmlnLCBvcGVyYXRpb24pCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiT3JpZ2luYWxDb21tYW5kKCVyLCAlcikiICUgKHNlbGYucmVkaXIsIHNlbGYub3BlcmF0aW9uKQorICAgICAgICByZXR1cm4gIiVzKCVyLCAlcikiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVkaXIsIHNlbGYub3BlcmF0aW9uKQogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYudGtfY2FsbChzZWxmLm9yaWdfYW5kX29wZXJhdGlvbiArIGFyZ3MpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKaW5kZXggYzc3OTJmYi4uZWRiZDU1OCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQpAQCAtMTc4LDcgKzE3OCw3IEBACiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoMSkKICAgICAgICAgRXF1YWwoZW5naW5lLmdldHByb2coKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNYm94LnNob3dlcnJvci5tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3I6IG5vdGhpbmcgdG8gcmVwZWF0XG5QYXR0ZXJuOiArJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRXJyb3I6IG5vdGhpbmcgdG8gcmVwZWF0IGF0IHBvc2l0aW9uIDBcblBhdHRlcm46ICsnKQogCiAgICAgZGVmIHRlc3RfcmVwb3J0X2Vycm9yKHNlbGYpOgogICAgICAgICBzaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgpkaWZmIC0tZ2l0IGEvTGliL2ltYXBsaWIucHkgYi9MaWIvaW1hcGxpYi5weQppbmRleCBlYjA1ZGNiLi40ZThhNGJiIDEwMDY0NAotLS0gYS9MaWIvaW1hcGxpYi5weQorKysgYi9MaWIvaW1hcGxpYi5weQpAQCAtNjYsNiArNjYsNyBAQAogICAgICAgICAnQ1JFQVRFJzogICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgICdERUxFVEUnOiAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAgJ0RFTEVURUFDTCc6ICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAorICAgICAgICAnRU5BQkxFJzogICAgICAgKCdBVVRIJywgKSwKICAgICAgICAgJ0VYQU1JTkUnOiAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICAnRVhQVU5HRSc6ICAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICAgJ0ZFVENIJzogICAgICAgICgnU0VMRUNURUQnLCksCkBAIC0xMDcsMTIgKzEwOCwxNyBAQAogICAgICAgICBicicgKD9QPGhvdXI+WzAtOV1bMC05XSk6KD9QPG1pbj5bMC05XVswLTldKTooP1A8c2VjPlswLTldWzAtOV0pJwogICAgICAgICBicicgKD9QPHpvbmVuPlstK10pKD9QPHpvbmVoPlswLTldWzAtOV0pKD9QPHpvbmVtPlswLTldWzAtOV0pJwogICAgICAgICBiciciJykKKyMgTGl0ZXJhbCBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIExpdGVyYWwgPSByZS5jb21waWxlKGJyJy4qeyg/UDxzaXplPlxkKyl9JCcsIHJlLkFTQ0lJKQogTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCiBSZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT5bXlxdXSopKT9cXScpCiBVbnRhZ2dlZF9yZXNwb25zZSA9IHJlLmNvbXBpbGUoYnInXCogKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/JykKKyMgVW50YWdnZWRfc3RhdHVzIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiBVbnRhZ2dlZF9zdGF0dXMgPSByZS5jb21waWxlKAogICAgIGJyJ1wqICg/UDxkYXRhPlxkKykgKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhMj4uKikpPycsIHJlLkFTQ0lJKQorIyBXZSBjb21waWxlIHRoZXNlIGluIF9tb2RlX3h4eC4KK19MaXRlcmFsID0gYnInLip7KD9QPHNpemU+XGQrKX0kJworX1VudGFnZ2VkX3N0YXR1cyA9IGJyJ1wqICg/UDxkYXRhPlxkKykgKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhMj4uKikpPycKIAogCiAKQEAgLTE2Niw3ICsxNzIsNyBAQAogICAgIGNsYXNzIGFib3J0KGVycm9yKTogcGFzcyAgICAgICAgIyBTZXJ2aWNlIGVycm9ycyAtIGNsb3NlIGFuZCByZXRyeQogICAgIGNsYXNzIHJlYWRvbmx5KGFib3J0KTogcGFzcyAgICAgIyBNYWlsYm94IHN0YXR1cyBjaGFuZ2VkIHRvIFJFQUQtT05MWQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QgPSAnJywgcG9ydCA9IElNQVA0X1BPUlQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1BPUlQpOgogICAgICAgICBzZWxmLmRlYnVnID0gRGVidWcKICAgICAgICAgc2VsZi5zdGF0ZSA9ICdMT0dPVVQnCiAgICAgICAgIHNlbGYubGl0ZXJhbCA9IE5vbmUgICAgICAgICAgICAgIyBBIGxpdGVyYWwgYXJndW1lbnQgdG8gYSBjb21tYW5kCkBAIC0xNzYsNiArMTgyLDcgQEAKICAgICAgICAgc2VsZi5pc19yZWFkb25seSA9IEZhbHNlICAgICAgICAjIFJFQUQtT05MWSBkZXNpcmVkIHN0YXRlCiAgICAgICAgIHNlbGYudGFnbnVtID0gMAogICAgICAgICBzZWxmLl90bHNfZXN0YWJsaXNoZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlX2FzY2lpKCkKIAogICAgICAgICAjIE9wZW4gc29ja2V0IHRvIHNlcnZlci4KIApAQCAtMTkwLDYgKzE5NywxOSBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHJhaXNlCiAKKyAgICBkZWYgX21vZGVfYXNjaWkoc2VsZik6CisgICAgICAgIHNlbGYudXRmOF9lbmFibGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgIHNlbGYuTGl0ZXJhbCA9IHJlLmNvbXBpbGUoX0xpdGVyYWwsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLlVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoX1VudGFnZ2VkX3N0YXR1cywgcmUuQVNDSUkpCisKKworICAgIGRlZiBfbW9kZV91dGY4KHNlbGYpOgorICAgICAgICBzZWxmLnV0ZjhfZW5hYmxlZCA9IFRydWUKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAndXRmLTgnCisgICAgICAgIHNlbGYuTGl0ZXJhbCA9IHJlLmNvbXBpbGUoX0xpdGVyYWwpCisgICAgICAgIHNlbGYuVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZShfVW50YWdnZWRfc3RhdHVzKQorCiAKICAgICBkZWYgX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIHVuaXF1ZSB0YWcgZm9yIHRoaXMgc2Vzc2lvbiwKQEAgLTIzOSw2ICsyNTksMTQgQEAKICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIGF0dHIubG93ZXIoKSkKICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIlVua25vd24gSU1BUDQgY29tbWFuZDogJyVzJyIgJSBhdHRyKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYubG9nb3V0KCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAKIAogICAgICMgICAgICAgT3ZlcnJpZGFibGUgbWV0aG9kcwpAQCAtMzUyLDcgKzM4MCwxMCBAQAogICAgICAgICAgICAgZGF0ZV90aW1lID0gVGltZTJJbnRlcm5hbGRhdGUoZGF0ZV90aW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGF0ZV90aW1lID0gTm9uZQotICAgICAgICBzZWxmLmxpdGVyYWwgPSBNYXBDUkxGLnN1YihDUkxGLCBtZXNzYWdlKQorICAgICAgICBsaXRlcmFsID0gTWFwQ1JMRi5zdWIoQ1JMRiwgbWVzc2FnZSkKKyAgICAgICAgaWYgc2VsZi51dGY4X2VuYWJsZWQ6CisgICAgICAgICAgICBsaXRlcmFsID0gYidVVEY4ICgnICsgbGl0ZXJhbCArIGInKScKKyAgICAgICAgc2VsZi5saXRlcmFsID0gbGl0ZXJhbAogICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgbWFpbGJveCwgZmxhZ3MsIGRhdGVfdGltZSkKIAogCkBAIC00NDcsNiArNDc4LDE4IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5fc2ltcGxlX2NvbW1hbmQoJ0RFTEVURUFDTCcsIG1haWxib3gsIHdobykKIAorICAgIGRlZiBlbmFibGUoc2VsZiwgY2FwYWJpbGl0eSk6CisgICAgICAgICIiIlNlbmQgYW4gUkZDNTE2MSBlbmFibGUgc3RyaW5nIHRvIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnRhbmNlPi5lbmFibGUoY2FwYWJpbGl0eSkKKyAgICAgICAgIiIiCisgICAgICAgIGlmICdFTkFCTEUnIG5vdCBpbiBzZWxmLmNhcGFiaWxpdGllczoKKyAgICAgICAgICAgIHJhaXNlIElNQVA0LmVycm9yKCJTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBFTkFCTEUiKQorICAgICAgICB0eXAsIGRhdGEgPSBzZWxmLl9zaW1wbGVfY29tbWFuZCgnRU5BQkxFJywgY2FwYWJpbGl0eSkKKyAgICAgICAgaWYgdHlwID09ICdPSycgYW5kICdVVEY4PUFDQ0VQVCcgaW4gY2FwYWJpbGl0eS51cHBlcigpOgorICAgICAgICAgICAgc2VsZi5fbW9kZV91dGY4KCkKKyAgICAgICAgcmV0dXJuIHR5cCwgZGF0YQorCiAgICAgZGVmIGV4cHVuZ2Uoc2VsZik6CiAgICAgICAgICIiIlBlcm1hbmVudGx5IHJlbW92ZSBkZWxldGVkIGl0ZW1zIGZyb20gc2VsZWN0ZWQgbWFpbGJveC4KIApAQCAtNTUzLDcgKzU5Niw3IEBACiAgICAgZGVmIF9DUkFNX01ENV9BVVRIKHNlbGYsIGNoYWxsZW5nZSk6CiAgICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIENSQU0tTUQ1IGF1dGhlbnRpY2F0aW9uLiAiIiIKICAgICAgICAgaW1wb3J0IGhtYWMKLSAgICAgICAgcHdkID0gKHNlbGYucGFzc3dvcmQuZW5jb2RlKCdBU0NJSScpIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXNzd29yZCwgc3RyKQorICAgICAgICBwd2QgPSAoc2VsZi5wYXNzd29yZC5lbmNvZGUoJ3V0Zi04JykgaWYgaXNpbnN0YW5jZShzZWxmLnBhc3N3b3JkLCBzdHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNlbGYucGFzc3dvcmQpCiAgICAgICAgIHJldHVybiBzZWxmLnVzZXIgKyAiICIgKyBobWFjLkhNQUMocHdkLCBjaGFsbGVuZ2UsICdtZDUnKS5oZXhkaWdlc3QoKQogCkBAIC02NTMsOSArNjk2LDEyIEBACiAgICAgICAgICh0eXAsIFtkYXRhXSkgPSA8aW5zdGFuY2U+LnNlYXJjaChjaGFyc2V0LCBjcml0ZXJpb24sIC4uLikKIAogICAgICAgICAnZGF0YScgaXMgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgbWF0Y2hpbmcgbWVzc2FnZSBudW1iZXJzLgorICAgICAgICBJZiBVVEY4IGlzIGVuYWJsZWQsIGNoYXJzZXQgTVVTVCBiZSBOb25lLgogICAgICAgICAiIiIKICAgICAgICAgbmFtZSA9ICdTRUFSQ0gnCiAgICAgICAgIGlmIGNoYXJzZXQ6CisgICAgICAgICAgICBpZiBzZWxmLnV0ZjhfZW5hYmxlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBJTUFQNC5lcnJvcigiTm9uLU5vbmUgY2hhcnNldCBub3QgdmFsaWQgaW4gVVRGOCBtb2RlIikKICAgICAgICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgJ0NIQVJTRVQnLCBjaGFyc2V0LCAqY3JpdGVyaWEpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0eXAsIGRhdCA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKG5hbWUsICpjcml0ZXJpYSkKQEAgLTg2OSw3ICs5MTUsNyBAQAogICAgIGRlZiBfY2hlY2tfYnllKHNlbGYpOgogICAgICAgICBieWUgPSBzZWxmLnVudGFnZ2VkX3Jlc3BvbnNlcy5nZXQoJ0JZRScpCiAgICAgICAgIGlmIGJ5ZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoYnllWy0xXS5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKSkKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoYnllWy0xXS5kZWNvZGUoc2VsZi5fZW5jb2RpbmcsICdyZXBsYWNlJykpCiAKIAogICAgIGRlZiBfY29tbWFuZChzZWxmLCBuYW1lLCAqYXJncyk6CkBAIC04OTAsMTIgKzkzNiwxMiBAQAogICAgICAgICAgICAgcmFpc2Ugc2VsZi5yZWFkb25seSgnbWFpbGJveCBzdGF0dXMgY2hhbmdlZCB0byBSRUFELU9OTFknKQogCiAgICAgICAgIHRhZyA9IHNlbGYuX25ld190YWcoKQotICAgICAgICBuYW1lID0gYnl0ZXMobmFtZSwgJ0FTQ0lJJykKKyAgICAgICAgbmFtZSA9IGJ5dGVzKG5hbWUsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICBkYXRhID0gdGFnICsgYicgJyArIG5hbWUKICAgICAgICAgZm9yIGFyZyBpbiBhcmdzOgogICAgICAgICAgICAgaWYgYXJnIGlzIE5vbmU6IGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgc3RyKToKLSAgICAgICAgICAgICAgICBhcmcgPSBieXRlcyhhcmcsICJBU0NJSSIpCisgICAgICAgICAgICAgICAgYXJnID0gYnl0ZXMoYXJnLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgYicgJyArIGFyZwogCiAgICAgICAgIGxpdGVyYWwgPSBzZWxmLmxpdGVyYWwKQEAgLTkwNSw3ICs5NTEsNyBAQAogICAgICAgICAgICAgICAgIGxpdGVyYXRvciA9IGxpdGVyYWwKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbGl0ZXJhdG9yID0gTm9uZQotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgYnl0ZXMoJyB7JXN9JyAlIGxlbihsaXRlcmFsKSwgJ0FTQ0lJJykKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIGJ5dGVzKCcgeyVzfScgJSBsZW4obGl0ZXJhbCksIHNlbGYuX2VuY29kaW5nKQogCiAgICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gNDoKQEAgLTk3MCw3ICsxMDE2LDcgQEAKICAgICAgICAgdHlwLCBkYXQgPSBzZWxmLmNhcGFiaWxpdHkoKQogICAgICAgICBpZiBkYXQgPT0gW05vbmVdOgogICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcignbm8gQ0FQQUJJTElUWSByZXNwb25zZSBmcm9tIHNlcnZlcicpCi0gICAgICAgIGRhdCA9IHN0cihkYXRbLTFdLCAiQVNDSUkiKQorICAgICAgICBkYXQgPSBzdHIoZGF0Wy0xXSwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgIGRhdCA9IGRhdC51cHBlcigpCiAgICAgICAgIHNlbGYuY2FwYWJpbGl0aWVzID0gdHVwbGUoZGF0LnNwbGl0KCkpCiAKQEAgLTk4OSwxMCArMTAzNSwxMCBAQAogICAgICAgICBpZiBzZWxmLl9tYXRjaChzZWxmLnRhZ3JlLCByZXNwKToKICAgICAgICAgICAgIHRhZyA9IHNlbGYubW8uZ3JvdXAoJ3RhZycpCiAgICAgICAgICAgICBpZiBub3QgdGFnIGluIHNlbGYudGFnZ2VkX2NvbW1hbmRzOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3VuZXhwZWN0ZWQgdGFnZ2VkIHJlc3BvbnNlOiAlcycgJSByZXNwKQorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoJ3VuZXhwZWN0ZWQgdGFnZ2VkIHJlc3BvbnNlOiAlcicgJSByZXNwKQogCiAgICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKLSAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsICdBU0NJSScpCisgICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIGRhdCA9IHNlbGYubW8uZ3JvdXAoJ2RhdGEnKQogICAgICAgICAgICAgc2VsZi50YWdnZWRfY29tbWFuZHNbdGFnXSA9ICh0eXAsIFtkYXRdKQogICAgICAgICBlbHNlOgpAQCAtMTAwMSw3ICsxMDQ3LDcgQEAKICAgICAgICAgICAgICMgJyonICh1bnRhZ2dlZCkgcmVzcG9uc2VzPwogCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2goVW50YWdnZWRfcmVzcG9uc2UsIHJlc3ApOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX21hdGNoKFVudGFnZ2VkX3N0YXR1cywgcmVzcCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fbWF0Y2goc2VsZi5VbnRhZ2dlZF9zdGF0dXMsIHJlc3ApOgogICAgICAgICAgICAgICAgICAgICBkYXQyID0gc2VsZi5tby5ncm91cCgnZGF0YTInKQogCiAgICAgICAgICAgICBpZiBzZWxmLm1vIGlzIE5vbmU6CkBAIC0xMDExLDE3ICsxMDU3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGludWF0aW9uX3Jlc3BvbnNlID0gc2VsZi5tby5ncm91cCgnZGF0YScpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lICAgICAjIE5COiBpbmRpY2F0ZXMgY29udGludWF0aW9uCiAKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCJ1bmV4cGVjdGVkIHJlc3BvbnNlOiAnJXMnIiAlIHJlc3ApCisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgidW5leHBlY3RlZCByZXNwb25zZTogJXIiICUgcmVzcCkKIAogICAgICAgICAgICAgdHlwID0gc2VsZi5tby5ncm91cCgndHlwZScpCi0gICAgICAgICAgICB0eXAgPSBzdHIodHlwLCAnYXNjaWknKQorICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgICAgICBkYXQgPSBzZWxmLm1vLmdyb3VwKCdkYXRhJykKICAgICAgICAgICAgIGlmIGRhdCBpcyBOb25lOiBkYXQgPSBiJycgICAgICAgICMgTnVsbCB1bnRhZ2dlZCByZXNwb25zZQogICAgICAgICAgICAgaWYgZGF0MjogZGF0ID0gZGF0ICsgYicgJyArIGRhdDIKIAogICAgICAgICAgICAgIyBJcyB0aGVyZSBhIGxpdGVyYWwgdG8gY29tZT8KIAotICAgICAgICAgICAgd2hpbGUgc2VsZi5fbWF0Y2goTGl0ZXJhbCwgZGF0KToKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX21hdGNoKHNlbGYuTGl0ZXJhbCwgZGF0KToKIAogICAgICAgICAgICAgICAgICMgUmVhZCBsaXRlcmFsIGRpcmVjdCBmcm9tIGNvbm5lY3Rpb24uCiAKQEAgLTEwNDUsNyArMTA5MSw3IEBACiAKICAgICAgICAgaWYgdHlwIGluICgnT0snLCAnTk8nLCAnQkFEJykgYW5kIHNlbGYuX21hdGNoKFJlc3BvbnNlX2NvZGUsIGRhdCk6CiAgICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKLSAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsICJBU0NJSSIpCisgICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF91bnRhZ2dlZCh0eXAsIHNlbGYubW8uZ3JvdXAoJ2RhdGEnKSkKIAogICAgICAgICBpZiBfX2RlYnVnX186CkBAIC0xMTE1LDcgKzExNjEsNyBAQAogCiAgICAgZGVmIF9uZXdfdGFnKHNlbGYpOgogCi0gICAgICAgIHRhZyA9IHNlbGYudGFncHJlICsgYnl0ZXMoc3RyKHNlbGYudGFnbnVtKSwgJ0FTQ0lJJykKKyAgICAgICAgdGFnID0gc2VsZi50YWdwcmUgKyBieXRlcyhzdHIoc2VsZi50YWdudW0pLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgc2VsZi50YWdudW0gPSBzZWxmLnRhZ251bSArIDEKICAgICAgICAgc2VsZi50YWdnZWRfY29tbWFuZHNbdGFnXSA9IE5vbmUKICAgICAgICAgcmV0dXJuIHRhZwpAQCAtMTIwNSw3ICsxMjUxLDggQEAKICAgICAgICAgIiIiCiAKIAotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKQEAgLTEyNDMsNyArMTI5MCw3IEBACiAKICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9zdHJlYW0oY29tbWFuZCkKIAotICAgICAgICAgICAgd2hlcmUgImNvbW1hbmQiIGlzIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBzdWJwcm9jZXNzLlBvcGVuKCkKKyAgICAgICAgICAgICJjb21tYW5kIiAtIGEgc3RyaW5nIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBzdWJwcm9jZXNzLlBvcGVuKCkKIAogICAgIGZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIHRoZSBkb2NzdHJpbmcgb2YgdGhlIHBhcmVudCBjbGFzcyBJTUFQNC4KICAgICAiIiIKQEAgLTEzMjAsNyArMTM2Nyw3IEBACiAgICAgICAgICMKICAgICAgICAgb3VwID0gYicnCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5wLCBzdHIpOgotICAgICAgICAgICAgaW5wID0gaW5wLmVuY29kZSgnQVNDSUknKQorICAgICAgICAgICAgaW5wID0gaW5wLmVuY29kZSgndXRmLTgnKQogICAgICAgICB3aGlsZSBpbnA6CiAgICAgICAgICAgICBpZiBsZW4oaW5wKSA+IDQ4OgogICAgICAgICAgICAgICAgIHQgPSBpbnBbOjQ4XQpkaWZmIC0tZ2l0IGEvTGliL2ltZ2hkci5weSBiL0xpYi9pbWdoZHIucHkKaW5kZXggYWRkMmVhOC4uYjI2NzkyNSAxMDA2NDQKLS0tIGEvTGliL2ltZ2hkci5weQorKysgYi9MaWIvaW1naGRyLnB5CkBAIC0xMTAsNiArMTEwLDE4IEBACiAKIHRlc3RzLmFwcGVuZCh0ZXN0X2JtcCkKIAorZGVmIHRlc3Rfd2VicChoLCBmKToKKyAgICBpZiBoLnN0YXJ0c3dpdGgoYidSSUZGJykgYW5kIGhbODoxMl0gPT0gYidXRUJQJzoKKyAgICAgICAgcmV0dXJuICd3ZWJwJworCit0ZXN0cy5hcHBlbmQodGVzdF93ZWJwKQorCitkZWYgdGVzdF9leHIoaCwgZik6CisgICAgaWYgaC5zdGFydHN3aXRoKGInXHg3Nlx4MmZceDMxXHgwMScpOgorICAgICAgICByZXR1cm4gJ2V4cicKKwordGVzdHMuYXBwZW5kKHRlc3RfZXhyKQorCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiAjIFNtYWxsIHRlc3QgcHJvZ3JhbSAjCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0jCmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQppbmRleCBjOTIyZTkyLi5mNmZmZjQ0IDEwMDY0NAotLS0gYS9MaWIvaW1wLnB5CisrKyBiL0xpYi9pbXAucHkKQEAgLTgsMTUgKzgsMTYgQEAKICMgKFByb2JhYmx5KSBuZWVkIHRvIHN0YXkgaW4gX2ltcAogZnJvbSBfaW1wIGltcG9ydCAobG9ja19oZWxkLCBhY3F1aXJlX2xvY2ssIHJlbGVhc2VfbG9jaywKICAgICAgICAgICAgICAgICAgIGdldF9mcm96ZW5fb2JqZWN0LCBpc19mcm96ZW5fcGFja2FnZSwKLSAgICAgICAgICAgICAgICAgIGluaXRfYnVpbHRpbiwgaW5pdF9mcm96ZW4sIGlzX2J1aWx0aW4sIGlzX2Zyb3plbiwKKyAgICAgICAgICAgICAgICAgIGluaXRfZnJvemVuLCBpc19idWlsdGluLCBpc19mcm96ZW4sCiAgICAgICAgICAgICAgICAgICBfZml4X2NvX2ZpbGVuYW1lKQogdHJ5OgotICAgIGZyb20gX2ltcCBpbXBvcnQgbG9hZF9keW5hbWljCisgICAgZnJvbSBfaW1wIGltcG9ydCBjcmVhdGVfZHluYW1pYwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgICMgUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgbG9hZGluZy4KLSAgICBsb2FkX2R5bmFtaWMgPSBOb25lCisgICAgY3JlYXRlX2R5bmFtaWMgPSBOb25lCiAKLWZyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBfRVJSX01TRywgX1NwZWNNZXRob2RzCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBfRVJSX01TRywgX2V4ZWMsIF9sb2FkLCBfYnVpbHRpbl9mcm9tX25hbWUKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCiAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCkBAIC0yOSw3ICszMCw3IEBACiAKIHdhcm5pbmdzLndhcm4oInRoZSBpbXAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYjsgIgogICAgICAgICAgICAgICAic2VlIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBhbHRlcm5hdGl2ZSB1c2VzIiwKLSAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogCiAjIERFUFJFQ0FURUQKIFNFQVJDSF9FUlJPUiA9IDAKQEAgLTU4LDI0ICs1OSwyMyBAQAogZGVmIGdldF9tYWdpYygpOgogICAgICIiIioqREVQUkVDQVRFRCoqCiAKLSAgICBSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgLnB5YyBvciAucHlvIGZpbGVzLgorICAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIGZpbGVzLgogICAgICIiIgogICAgIHJldHVybiB1dGlsLk1BR0lDX05VTUJFUgogCiAKIGRlZiBnZXRfdGFnKCk6Ci0gICAgIiIiUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKKyAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBmaWxlcy4iIiIKICAgICByZXR1cm4gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwogCiAKIGRlZiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKToKICAgICAiIiIqKkRFUFJFQ0FURUQqKgogCi0gICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljLy5weW8gZmlsZS4KKyAgICBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMgZmlsZS4KIAogICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQotICAgIC5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uCi0gICAgd2lsbCBiZSAucHljIHVubGVzcyBzeXMuZmxhZ3Mub3B0aW1pemUgaXMgbm9uLXplcm8sIHRoZW4gaXQgd2lsbCBiZSAucHlvLgorICAgIC5weWMgZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLgogCiAgICAgSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHVzZWQgaW4KICAgICBwbGFjZSBvZiBzeXMuZmxhZ3Mub3B0aW1pemUuCkBAIC04MywxNiArODMsMTggQEAKICAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KIAogICAgICIiIgotICAgIHJldHVybiB1dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlKQorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICByZXR1cm4gdXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZSkKIAogCiBkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CiAgICAgIiIiKipERVBSRUNBVEVEKioKIAotICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgorICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KIAotICAgIFRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCi0gICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoIGRvZXMKKyAgICBUaGUgLnB5YyBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KKyAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljIGZpbGUuICBJZiBwYXRoIGRvZXMKICAgICBub3QgY29uZm9ybSB0byBQRVAgMzE0NyBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCiAgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCiAKQEAgLTE2NCwxMSArMTY2LDEwIEBACiBkZWYgbG9hZF9zb3VyY2UobmFtZSwgcGF0aG5hbWUsIGZpbGU9Tm9uZSk6CiAgICAgbG9hZGVyID0gX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKQogICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGhuYW1lLCBsb2FkZXI9bG9hZGVyKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICBtb2R1bGUgPSBtZXRob2RzLmV4ZWMoc3lzLm1vZHVsZXNbbmFtZV0pCisgICAgICAgIG1vZHVsZSA9IF9leGVjKHNwZWMsIHN5cy5tb2R1bGVzW25hbWVdKQogICAgIGVsc2U6Ci0gICAgICAgIG1vZHVsZSA9IG1ldGhvZHMubG9hZCgpCisgICAgICAgIG1vZHVsZSA9IF9sb2FkKHNwZWMpCiAgICAgIyBUbyBhbGxvdyByZWxvYWRpbmcgdG8gcG90ZW50aWFsbHkgd29yaywgdXNlIGEgbm9uLWhhY2tlZCBsb2FkZXIgd2hpY2gKICAgICAjIHdvbid0IHJlbHkgb24gYSBub3ctY2xvc2VkIGZpbGUgb2JqZWN0LgogICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCkBAIC0xODUsMTEgKzE4NiwxMCBAQAogICAgICIiIioqREVQUkVDQVRFRCoqIiIiCiAgICAgbG9hZGVyID0gX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpCiAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIG1vZHVsZSA9IG1ldGhvZHMuZXhlYyhzeXMubW9kdWxlc1tuYW1lXSkKKyAgICAgICAgbW9kdWxlID0gX2V4ZWMoc3BlYywgc3lzLm1vZHVsZXNbbmFtZV0pCiAgICAgZWxzZToKLSAgICAgICAgbW9kdWxlID0gbWV0aG9kcy5sb2FkKCkKKyAgICAgICAgbW9kdWxlID0gX2xvYWQoc3BlYykKICAgICAjIFRvIGFsbG93IHJlbG9hZGluZyB0byBwb3RlbnRpYWxseSB3b3JrLCB1c2UgYSBub24taGFja2VkIGxvYWRlciB3aGljaAogICAgICMgd29uJ3QgcmVseSBvbiBhIG5vdy1jbG9zZWQgZmlsZSBvYmplY3QuCiAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBTb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKQEAgLTIxMCwxMSArMjEwLDEwIEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnLmZvcm1hdChwYXRoKSkKICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPVtdKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICByZXR1cm4gbWV0aG9kcy5leGVjKHN5cy5tb2R1bGVzW25hbWVdKQorICAgICAgICByZXR1cm4gX2V4ZWMoc3BlYywgc3lzLm1vZHVsZXNbbmFtZV0pCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIG1ldGhvZHMubG9hZCgpCisgICAgICAgIHJldHVybiBfbG9hZChzcGVjKQogCiAKIGRlZiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZGV0YWlscyk6CkBAIC0zMTMsMyArMzEyLDM0IEBACiAKICAgICAiIiIKICAgICByZXR1cm4gaW1wb3J0bGliLnJlbG9hZChtb2R1bGUpCisKKworZGVmIGluaXRfYnVpbHRpbihuYW1lKToKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgTG9hZCBhbmQgcmV0dXJuIGEgYnVpbHQtaW4gbW9kdWxlIGJ5IG5hbWUsIG9yIE5vbmUgaXMgc3VjaCBtb2R1bGUgZG9lc24ndAorICAgIGV4aXN0CisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2J1aWx0aW5fZnJvbV9uYW1lKG5hbWUpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2lmIGNyZWF0ZV9keW5hbWljOgorICAgIGRlZiBsb2FkX2R5bmFtaWMobmFtZSwgcGF0aCwgZmlsZT1Ob25lKToKKyAgICAgICAgIiIiKipERVBSRUNBVEVEKioKKworICAgICAgICBMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuCisgICAgICAgICIiIgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIobmFtZSwgcGF0aCkKKworICAgICAgICAjIElzc3VlICMyNDc0ODogU2tpcCB0aGUgc3lzLm1vZHVsZXMgY2hlY2sgaW4gX2xvYWRfbW9kdWxlX3NoaW07CisgICAgICAgICMgYWx3YXlzIGxvYWQgbmV3IGV4dGVuc2lvbgorICAgICAgICBzcGVjID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKAorICAgICAgICAgICAgbmFtZT1uYW1lLCBsb2FkZXI9bG9hZGVyLCBvcmlnaW49cGF0aCkKKyAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCisKK2Vsc2U6CisgICAgbG9hZF9keW5hbWljID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKaW5kZXggMWJjOTk0Ny4uYjZhOWY4MiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0zMCw5ICszMCwyNiBAQAogICAgICAgICBwYXNzCiAgICAgc3lzLm1vZHVsZXNbJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJ10gPSBfYm9vdHN0cmFwCiAKK3RyeToKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwgYXMgX2Jvb3RzdHJhcF9leHRlcm5hbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAorICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX3NldHVwKF9ib290c3RyYXApCisgICAgX2Jvb3RzdHJhcC5fYm9vdHN0cmFwX2V4dGVybmFsID0gX2Jvb3RzdHJhcF9leHRlcm5hbAorZWxzZToKKyAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9fbmFtZV9fID0gJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsJworICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX19wYWNrYWdlX18gPSAnaW1wb3J0bGliJworICAgIHRyeToKKyAgICAgICAgX2Jvb3RzdHJhcF9leHRlcm5hbC5fX2ZpbGVfXyA9IF9fZmlsZV9fLnJlcGxhY2UoJ19faW5pdF9fLnB5JywgJ19ib290c3RyYXBfZXh0ZXJuYWwucHknKQorICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICMgX19maWxlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCwgZS5nLiBpZiB0aGlzIGNvZGUgZ2V0cworICAgICAgICAjIGZyb3plbiBieSBhIHRvb2wgbGlrZSBjeF9GcmVlemUuCisgICAgICAgIHBhc3MKKyAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnXSA9IF9ib290c3RyYXBfZXh0ZXJuYWwKKwogIyBUbyBzaW1wbGlmeSBpbXBvcnRzIGluIHRlc3QgY29kZQotX3dfbG9uZyA9IF9ib290c3RyYXAuX3dfbG9uZwotX3JfbG9uZyA9IF9ib290c3RyYXAuX3JfbG9uZworX3dfbG9uZyA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3dfbG9uZworX3JfbG9uZyA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX3JfbG9uZwogCiAjIEZ1bGx5IGJvb3RzdHJhcHBlZCBhdCB0aGlzIHBvaW50LCBpbXBvcnQgd2hhdGV2ZXIgeW91IGxpa2UsIGNpcmN1bGFyCiAjIGRlcGVuZGVuY2llcyBhbmQgc3RhcnR1cCBvdmVyaGVhZCBtaW5pbWlzYXRpb24gcGVybWl0dGluZyA6KQpAQCAtNzMsNyArOTAsNyBAQAogICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fbG9hZGVyX18gaXMgbm90IHNldCcuZm9ybWF0KG5hbWUpKSBmcm9tIE5vbmUKIAogICAgIHNwZWMgPSBfYm9vdHN0cmFwLl9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICAjIFdlIHdvbid0IHdvcnJ5IGFib3V0IG1hbGZvcm1lZCBzcGVjcyAobWlzc2luZyBhdHRyaWJ1dGVzKS4KQEAgLTEzOCwxNSArMTU1LDE1IEBACiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc3lzLm1vZHVsZXNbcGFyZW50X25hbWVdCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudF9uYW1lKSwgbmFtZT1wYXJlbnRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPXBhcmVudF9uYW1lKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGtncGF0aCA9IHBhcmVudC5fX3BhdGhfXwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGtncGF0aCA9IE5vbmUKICAgICAgICAgdGFyZ2V0ID0gbW9kdWxlCiAgICAgICAgIHNwZWMgPSBtb2R1bGUuX19zcGVjX18gPSBfYm9vdHN0cmFwLl9maW5kX3NwZWMobmFtZSwgcGtncGF0aCwgdGFyZ2V0KQotICAgICAgICBtZXRob2RzID0gX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKLSAgICAgICAgbWV0aG9kcy5leGVjKG1vZHVsZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fZXhlYyhzcGVjLCBtb2R1bGUpCiAgICAgICAgICMgVGhlIG1vZHVsZSBtYXkgaGF2ZSByZXBsYWNlZCBpdHNlbGYgaW4gc3lzLm1vZHVsZXMhCiAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggNWI5MWMwNS4uNmY2MmJiMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtOSw3ICs5LDcgQEAKICMKICMgSU1QT1JUQU5UOiBXaGVuZXZlciBtYWtpbmcgY2hhbmdlcyB0byB0aGlzIG1vZHVsZSwgYmUgc3VyZSB0byBydW4KICMgYSB0b3AtbGV2ZWwgbWFrZSBpbiBvcmRlciB0byBnZXQgdGhlIGZyb3plbiB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUKLSMgdXBkYXRlLiBOb3QgZG9pbmcgc28gd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIHVwZGF0ZWQuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKICMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQogIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgogIwpAQCAtMjIsMTAxICsyMiw3IEBACiAKICMgQm9vdHN0cmFwLXJlbGF0ZWQgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJwotCi0KLWRlZiBfbWFrZV9yZWxheF9jYXNlKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TKToKLSAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6Ci0gICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgotICAgICAgICAgICAgcmV0dXJuIGInUFlUSE9OQ0FTRU9LJyBpbiBfb3MuZW52aXJvbgotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgotICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBfcmVsYXhfY2FzZQotCi0KLWRlZiBfd19sb25nKHgpOgotICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLiIiIgotICAgIHJldHVybiAoaW50KHgpICYgMHhGRkZGRkZGRikudG9fYnl0ZXMoNCwgJ2xpdHRsZScpCi0KLQotZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKLSAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLiIiIgotICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhpbnRfYnl0ZXMsICdsaXR0bGUnKQotCi0KLWRlZiBfcGF0aF9qb2luKCpwYXRoX3BhcnRzKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5qb2luKCkuIiIiCi0gICAgcmV0dXJuIHBhdGhfc2VwLmpvaW4oW3BhcnQucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0cyBpZiBwYXJ0XSkKLQotCi1kZWYgX3BhdGhfc3BsaXQocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXQoKS4iIiIKLSAgICBpZiBsZW4ocGF0aF9zZXBhcmF0b3JzKSA9PSAxOgotICAgICAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihwYXRoX3NlcCkKLSAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCi0gICAgZm9yIHggaW4gcmV2ZXJzZWQocGF0aCk6Ci0gICAgICAgIGlmIHggaW4gcGF0aF9zZXBhcmF0b3JzOgotICAgICAgICAgICAgZnJvbnQsIHRhaWwgPSBwYXRoLnJzcGxpdCh4LCBtYXhzcGxpdD0xKQotICAgICAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCi0gICAgcmV0dXJuICcnLCBwYXRoCi0KLQotZGVmIF9wYXRoX3N0YXQocGF0aCk6Ci0gICAgIiIiU3RhdCB0aGUgcGF0aC4KLQotICAgIE1hZGUgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBtYWtlIGl0IGVhc2llciB0byBvdmVycmlkZSBpbiBleHBlcmltZW50cwotICAgIChlLmcuIGNhY2hlIHN0YXQgcmVzdWx0cykuCi0KLSAgICAiIiIKLSAgICByZXR1cm4gX29zLnN0YXQocGF0aCkKLQotCi1kZWYgX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIG1vZGUpOgotICAgICIiIlRlc3Qgd2hldGhlciB0aGUgcGF0aCBpcyB0aGUgc3BlY2lmaWVkIG1vZGUgdHlwZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHN0YXRfaW5mbyA9IF9wYXRoX3N0YXQocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIChzdGF0X2luZm8uc3RfbW9kZSAmIDBvMTcwMDAwKSA9PSBtb2RlCi0KLQotZGVmIF9wYXRoX2lzZmlsZShwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5pc2ZpbGUuIiIiCi0gICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzEwMDAwMCkKLQotCi1kZWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNkaXIuIiIiCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKLSAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMDQwMDAwKQotCi0KLWRlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgotICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCi0gICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKLSAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCi0gICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgotICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCi0gICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKLSAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQotICAgIHRyeToKLSAgICAgICAgIyBXZSBmaXJzdCB3cml0ZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB0aGVuIHVzZSBvcy5yZXBsYWNlKCkgdG8KLSAgICAgICAgIyBwZXJmb3JtIGFuIGF0b21pYyByZW5hbWUuCi0gICAgICAgIHdpdGggX2lvLkZpbGVJTyhmZCwgJ3diJykgYXMgZmlsZToKLSAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKLSAgICAgICAgX29zLnJlcGxhY2UocGF0aF90bXAsIHBhdGgpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF9vcy51bmxpbmsocGF0aF90bXApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICByYWlzZQotCitfYm9vdHN0cmFwX2V4dGVybmFsID0gTm9uZQogCiBkZWYgX3dyYXAobmV3LCBvbGQpOgogICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuIiIiCkBAIC0xMzAsMTAgKzM2LDYgQEAKICAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCiAKIAotX2NvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCi0KLQotCiBjbGFzcyBfTWFuYWdlUmVsb2FkOgogCiAgICAgIiIiTWFuYWdlcyB0aGUgcG9zc2libGUgY2xlYW4tdXAgb2Ygc3lzLm1vZHVsZXMgZm9yIGxvYWRfbW9kdWxlKCkuIiIiCkBAIC0zMDksNyArMjExLDYgQEAKICAgICAgICAgbG9jay5yZWxlYXNlKCkKIAogIyBGcmFtZSBzdHJpcHBpbmcgbWFnaWMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQogZGVmIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgIiIicmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMgaW4gaW1wb3J0LmMgd2lsbCBhbHdheXMgcmVtb3ZlIHNlcXVlbmNlcwogICAgIG9mIGltcG9ydGxpYiBmcmFtZXMgdGhhdCBlbmQgd2l0aCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgpAQCAtMzIxLDIwMCArMjIyLDYgQEAKICAgICByZXR1cm4gZigqYXJncywgKiprd2RzKQogCiAKLSMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCi0jIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCi0jCi0jIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKLSMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi0jIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCi0jCi0jIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLSMKLSMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLSMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQotIyAxMC4KLSMKLSMgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYwotIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi0jIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCi0jIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcwotIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci0jIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCi0jIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZwotIyB3aXRoIFB5dGhvbiAzLjJhMC4KLSMKLSMgS25vd24gdmFsdWVzOgotIyAgUHl0aG9uIDEuNTogICAyMDEyMQotIyAgUHl0aG9uIDEuNS4xOiAyMDEyMQotIyAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAotIyAgICAgUHl0aG9uIDIuMDogICA1MDgyMwotIyAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgotIyAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgotIyAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNwotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKLSMgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKLSMgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0jICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQotIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQotIyAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0jICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKLSMgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKLSMgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCi0jICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCi0jICAgICBQeXRob24gMi43YTA6IDYyMTgxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKLSMgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKLSMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQotIyAgICAgUHl0aG9uIDIuN2EwICA2MjIwMSAoaW50cm9kdWNlIEJVSUxEX1NFVCkKLSMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMTEgKGludHJvZHVjZSBNQVBfQUREIGFuZCBTRVRfQUREKQotIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAotIyAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQotIyAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCi0jICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCi0jICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0jICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQotIyAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQotIyAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCi0jICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQotIyAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQotIyAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KLSMgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotIyAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6Ci0jICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCi0jICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotIyAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCi0jICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQotIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSMgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQotIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSMgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSMgICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCi0jICAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKLSMgICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCi0jICAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCi0jICAgICBQeXRob24gMy40YTEgIDMyNTAgKGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdCBhcmd1bWVudHMgYmVmb3JlCi0jICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC1vbmx5IGRlZmF1bHRzKQotIyAgICAgUHl0aG9uIDMuNGExICAzMjYwIChhZGQgTE9BRF9DTEFTU0RFUkVGOyBhbGxvdyBsb2NhbHMgb2YgY2xhc3MgdG8gb3ZlcnJpZGUKLSMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMpCi0jICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSkKLSMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQotIyAgICAgUHl0aG9uIDMuNGE0ICAzMjkwIChjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjRhNCAgMzMwMCAobW9yZSBjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKLSMgICAgIFB5dGhvbiAzLjRyYzIgMzMxMCAoYWx0ZXIgX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQotIwotIyBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCi0jIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5Ci0jIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgotCi1NQUdJQ19OVU1CRVIgPSAoMzMxMCkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJwotX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKLQotX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCi0KLVNPVVJDRV9TVUZGSVhFUyA9IFsnLnB5J10gICMgX3NldHVwKCkgYWRkcyAucHl3IGFzIG5lZWRlZC4KLQotREVCVUdfQllURUNPREVfU1VGRklYRVMgPSBbJy5weWMnXQotT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHlvJ10KLQotZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUpOgotICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuCi0KLSAgICBUaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUKLSAgICAucHljLy5weW8gZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLiAgVGhlIGV4dGVuc2lvbgotICAgIHdpbGwgYmUgLnB5YyB1bmxlc3Mgc3lzLmZsYWdzLm9wdGltaXplIGlzIG5vbi16ZXJvLCB0aGVuIGl0IHdpbGwgYmUgLnB5by4KLQotICAgIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB1c2VkIGluCi0gICAgcGxhY2Ugb2Ygc3lzLmZsYWdzLm9wdGltaXplLgotCi0gICAgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCi0KLSAgICAiIiIKLSAgICBkZWJ1ZyA9IG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgaWYgZGVidWdfb3ZlcnJpZGUgaXMgTm9uZSBlbHNlIGRlYnVnX292ZXJyaWRlCi0gICAgaWYgZGVidWc6Ci0gICAgICAgIHN1ZmZpeGVzID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKLSAgICBlbHNlOgotICAgICAgICBzdWZmaXhlcyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwotICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQotICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCi0gICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwotICAgIGlmIHRhZyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQotICAgIGZpbGVuYW1lID0gJycuam9pbihbKGJhc2UgaWYgYmFzZSBlbHNlIHJlc3QpLCBzZXAsIHRhZywgc3VmZml4ZXNbMF1dKQotICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIF9QWUNBQ0hFLCBmaWxlbmFtZSkKLQotCi1kZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6Ci0gICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCi0KLSAgICBUaGUgLnB5Yy8ucHlvIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bwotICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMvLnB5byBmaWxlLiAgSWYgcGF0aCBkb2VzCi0gICAgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiBJZgotICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgotCi0gICAgIiIiCi0gICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQotICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQotICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQotICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9IG5vdCBib3R0b20tbGV2ZWwgZGlyZWN0b3J5IGluICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KF9QWUNBQ0hFLCBwYXRoKSkKLSAgICBpZiBweWNhY2hlX2ZpbGVuYW1lLmNvdW50KCcuJykgIT0gMjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZXhwZWN0ZWQgb25seSAyIGRvdHMgaW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQocHljYWNoZV9maWxlbmFtZSkpCi0gICAgYmFzZV9maWxlbmFtZSA9IHB5Y2FjaGVfZmlsZW5hbWUucGFydGl0aW9uKCcuJylbMF0KLSAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBiYXNlX2ZpbGVuYW1lICsgU09VUkNFX1NVRkZJWEVTWzBdKQotCi0KLWRlZiBfZ2V0X3NvdXJjZWZpbGUoYnl0ZWNvZGVfcGF0aCk6Ci0gICAgIiIiQ29udmVydCBhIGJ5dGVjb2RlIGZpbGUgcGF0aCB0byBhIHNvdXJjZSBwYXRoIChpZiBwb3NzaWJsZSkuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBwdXJlbHkgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvcgotICAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aEZpbGVuYW1lcygpIGluIHRoZSBDIEFQSS4KLQotICAgICIiIgotICAgIGlmIGxlbihieXRlY29kZV9wYXRoKSA9PSAwOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJlc3QsIF8sIGV4dGVuc2lvbiA9IGJ5dGVjb2RlX3BhdGgucnBhcnRpdGlvbignLicpCi0gICAgaWYgbm90IHJlc3Qgb3IgZXh0ZW5zaW9uLmxvd2VyKClbLTM6LTFdICE9ICdweSc6Ci0gICAgICAgIHJldHVybiBieXRlY29kZV9wYXRoCi0gICAgdHJ5OgotICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9mcm9tX2NhY2hlKGJ5dGVjb2RlX3BhdGgpCi0gICAgZXhjZXB0IChOb3RJbXBsZW1lbnRlZEVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgc291cmNlX3BhdGggPSBieXRlY29kZV9wYXRoWzotMV0KLSAgICByZXR1cm4gc291cmNlX3BhdGggaWYgX3BhdGhfaXNmaWxlKHNvdXJjZV9wYXRoKSBlbHNlIGJ5dGVjb2RlX3BhdGgKLQotCi1kZWYgX2NhbGNfbW9kZShwYXRoKToKLSAgICAiIiJDYWxjdWxhdGUgdGhlIG1vZGUgcGVybWlzc2lvbnMgZm9yIGEgYnl0ZWNvZGUgZmlsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIG1vZGUgPSBfcGF0aF9zdGF0KHBhdGgpLnN0X21vZGUKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgbW9kZSA9IDBvNjY2Ci0gICAgIyBXZSBhbHdheXMgZW5zdXJlIHdyaXRlIGFjY2VzcyBzbyB3ZSBjYW4gdXBkYXRlIGNhY2hlZCBmaWxlcwotICAgICMgbGF0ZXIgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZXMgYXJlIHJlYWQtb25seSBvbiBXaW5kb3dzICgjNjA3NCkKLSAgICBtb2RlIHw9IDBvMjAwCi0gICAgcmV0dXJuIG1vZGUKLQotCiBkZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncywgdmVyYm9zaXR5PTEpOgogICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZSA+PSB2ZXJib3NpdHk6CkBAIC01MjMsMjQgKzIzMCw2IEBACiAgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQogCiAKLWRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgotICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCi0gICAgbG9hZGVyIGNhbiBoYW5kbGUuCi0KLSAgICBUaGUgZmlyc3QgYXJndW1lbnQgKHNlbGYpIG11c3QgZGVmaW5lIF9uYW1lIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSAgICBjb21wYXJlZCBhZ2FpbnN0LiBJZiB0aGUgY29tcGFyaXNvbiBmYWlscyB0aGVuIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KLQotICAgICIiIgotICAgIGRlZiBfY2hlY2tfbmFtZV93cmFwcGVyKHNlbGYsIG5hbWU9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQotICAgICAgICBlbGlmIHNlbGYubmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlciBjYW5ub3QgaGFuZGxlICVzJyAlIG5hbWUsIG5hbWU9bmFtZSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCi0gICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQotICAgIHJldHVybiBfY2hlY2tfbmFtZV93cmFwcGVyCi0KLQogZGVmIF9yZXF1aXJlc19idWlsdGluKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGJ1aWx0LWluLiIiIgogICAgIGRlZiBfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKQEAgLTU2MywyMyArMjUyLDcgQEAKICAgICByZXR1cm4gX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyCiAKIAotZGVmIF9maW5kX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgYnkgZGVsZWdhdGluZyB0bwotICAgIHNlbGYuZmluZF9sb2FkZXIoKS4KLQotICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgZmluZGVyLmZpbmRfc3BlYygpLgotCi0gICAgIiIiCi0gICAgIyBDYWxsIGZpbmRfbG9hZGVyKCkuIElmIGl0IHJldHVybnMgYSBzdHJpbmcgKGluZGljYXRpbmcgdGhpcwotICAgICMgaXMgYSBuYW1lc3BhY2UgcGFja2FnZSBwb3J0aW9uKSwgZ2VuZXJhdGUgYSB3YXJuaW5nIGFuZAotICAgICMgcmV0dXJuIE5vbmUuCi0gICAgbG9hZGVyLCBwb3J0aW9ucyA9IHNlbGYuZmluZF9sb2FkZXIoZnVsbG5hbWUpCi0gICAgaWYgbG9hZGVyIGlzIE5vbmUgYW5kIGxlbihwb3J0aW9ucyk6Ci0gICAgICAgIG1zZyA9ICdOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSB7fTogbWlzc2luZyBfX2luaXRfXycKLSAgICAgICAgX3dhcm5pbmdzLndhcm4obXNnLmZvcm1hdChwb3J0aW9uc1swXSksIEltcG9ydFdhcm5pbmcpCi0gICAgcmV0dXJuIGxvYWRlcgotCi0KKyMgVHlwaWNhbGx5IHVzZWQgYnkgbG9hZGVyIGNsYXNzZXMgYXMgYSBtZXRob2QgcmVwbGFjZW1lbnQuCiBkZWYgX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgogICAgICIiIkxvYWQgdGhlIHNwZWNpZmllZCBtb2R1bGUgaW50byBzeXMubW9kdWxlcyBhbmQgcmV0dXJuIGl0LgogCkBAIC01ODcsMTAzICsyNjAsMTIgQEAKIAogICAgICIiIgogICAgIHNwZWMgPSBzcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBzZWxmKQotICAgIG1ldGhvZHMgPSBfU3BlY01ldGhvZHMoc3BlYykKICAgICBpZiBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbZnVsbG5hbWVdCi0gICAgICAgIG1ldGhvZHMuZXhlYyhtb2R1bGUpCisgICAgICAgIF9leGVjKHNwZWMsIG1vZHVsZSkKICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQogICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBtZXRob2RzLmxvYWQoKQotCi0KLWRlZiBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsIHNvdXJjZV9zdGF0cz1Ob25lLCBuYW1lPU5vbmUsIHBhdGg9Tm9uZSk6Ci0gICAgIiIiVmFsaWRhdGUgdGhlIGhlYWRlciBvZiB0aGUgcGFzc2VkLWluIGJ5dGVjb2RlIGFnYWluc3Qgc291cmNlX3N0YXRzIChpZgotICAgIGdpdmVuKSBhbmQgcmV0dXJuaW5nIHRoZSBieXRlY29kZSB0aGF0IGNhbiBiZSBjb21waWxlZCBieSBjb21waWxlKCkuCi0KLSAgICBBbGwgb3RoZXIgYXJndW1lbnRzIGFyZSB1c2VkIHRvIGVuaGFuY2UgZXJyb3IgcmVwb3J0aW5nLgotCi0gICAgSW1wb3J0RXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIG1hZ2ljIG51bWJlciBpcyBpbmNvcnJlY3Qgb3IgdGhlIGJ5dGVjb2RlIGlzCi0gICAgZm91bmQgdG8gYmUgc3RhbGUuIEVPRkVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBkYXRhIGlzIGZvdW5kIHRvIGJlCi0gICAgdHJ1bmNhdGVkLgotCi0gICAgIiIiCi0gICAgZXhjX2RldGFpbHMgPSB7fQotICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgIGV4Y19kZXRhaWxzWyduYW1lJ10gPSBuYW1lCi0gICAgZWxzZToKLSAgICAgICAgIyBUbyBwcmV2ZW50IGhhdmluZyB0byBtYWtlIGFsbCBtZXNzYWdlcyBoYXZlIGEgY29uZGl0aW9uYWwgbmFtZS4KLSAgICAgICAgbmFtZSA9ICc8Ynl0ZWNvZGU+JwotICAgIGlmIHBhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgIGV4Y19kZXRhaWxzWydwYXRoJ10gPSBwYXRoCi0gICAgbWFnaWMgPSBkYXRhWzo0XQotICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KLSAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6Ci0gICAgICAgIG1lc3NhZ2UgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQobmFtZSwgbWFnaWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKLSAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgdGltZXN0YW1wIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCi0gICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6Ci0gICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyBzaXplIG9mIHNvdXJjZSBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQotICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHNvdXJjZV9zdGF0c1snbXRpbWUnXSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3NpemUpICE9IHNvdXJjZV9zaXplOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqZXhjX2RldGFpbHMpCi0gICAgcmV0dXJuIGRhdGFbMTI6XQotCi0KLWRlZiBfY29tcGlsZV9ieXRlY29kZShkYXRhLCBuYW1lPU5vbmUsIGJ5dGVjb2RlX3BhdGg9Tm9uZSwgc291cmNlX3BhdGg9Tm9uZSk6Ci0gICAgIiIiQ29tcGlsZSBieXRlY29kZSBhcyByZXR1cm5lZCBieSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKCkuIiIiCi0gICAgY29kZSA9IG1hcnNoYWwubG9hZHMoZGF0YSkKLSAgICBpZiBpc2luc3RhbmNlKGNvZGUsIF9jb2RlX3R5cGUpOgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQotICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShjb2RlLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgcmV0dXJuIGNvZGUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignTm9uLWNvZGUgb2JqZWN0IGluIHshcn0nLmZvcm1hdChieXRlY29kZV9wYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCi0KLWRlZiBfY29kZV90b19ieXRlY29kZShjb2RlLCBtdGltZT0wLCBzb3VyY2Vfc2l6ZT0wKToKLSAgICAiIiJDb21waWxlIGEgY29kZSBvYmplY3QgaW50byBieXRlY29kZSBmb3Igd3JpdGluZyBvdXQgdG8gYSBieXRlLWNvbXBpbGVkCi0gICAgZmlsZS4iIiIKLSAgICBkYXRhID0gYnl0ZWFycmF5KE1BR0lDX05VTUJFUikKLSAgICBkYXRhLmV4dGVuZChfd19sb25nKG10aW1lKSkKLSAgICBkYXRhLmV4dGVuZChfd19sb25nKHNvdXJjZV9zaXplKSkKLSAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGUpKQotICAgIHJldHVybiBkYXRhCi0KLQotZGVmIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKToKLSAgICAiIiJEZWNvZGUgYnl0ZXMgcmVwcmVzZW50aW5nIHNvdXJjZSBjb2RlIGFuZCByZXR1cm4gdGhlIHN0cmluZy4KLQotICAgIFVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQgaXMgdXNlZCBpbiB0aGUgZGVjb2RpbmcuCi0gICAgIiIiCi0gICAgaW1wb3J0IHRva2VuaXplICAjIFRvIGF2b2lkIGJvb3RzdHJhcCBpc3N1ZXMuCi0gICAgc291cmNlX2J5dGVzX3JlYWRsaW5lID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQotICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHNvdXJjZV9ieXRlc19yZWFkbGluZSkKLSAgICBuZXdsaW5lX2RlY29kZXIgPSBfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlcihOb25lLCBUcnVlKQotICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQotCisgICAgICAgIHJldHVybiBfbG9hZChzcGVjKQogCiAjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTcwNCw3ICsyODYsNyBAQAogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBfU3BlY01ldGhvZHMoc3BlYykubW9kdWxlX3JlcHIoKQorICAgICAgICAgICAgcmV0dXJuIF9tb2R1bGVfcmVwcl9mcm9tX3NwZWMoc3BlYykKIAogICAgICMgV2UgY291bGQgdXNlIG1vZHVsZS5fX2NsYXNzX18uX19uYW1lX18gaW5zdGVhZCBvZiAnbW9kdWxlJyBpbiB0aGUKICAgICAjIHZhcmlvdXMgcmVwciBwZXJtdXRhdGlvbnMuCkBAIC04MjUsMTQgKzQwNyw5IEBACiAgICAgZGVmIGNhY2hlZChzZWxmKToKICAgICAgICAgaWYgc2VsZi5fY2FjaGVkIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBzZWxmLm9yaWdpbiBpcyBub3QgTm9uZSBhbmQgc2VsZi5fc2V0X2ZpbGVhdHRyOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5vcmlnaW4KLSAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShTT1VSQ0VfU1VGRklYRVMpKToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gY2FjaGVfZnJvbV9zb3VyY2UoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoQllURUNPREVfU1VGRklYRVMpKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVkID0gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBpZiBfYm9vdHN0cmFwX2V4dGVybmFsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWQgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9nZXRfY2FjaGVkKHNlbGYub3JpZ2luKQogICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVkCiAKICAgICBAY2FjaGVkLnNldHRlcgpAQCAtODU5LDYgKzQzNiwxMCBAQAogZGVmIHNwZWNfZnJvbV9sb2FkZXIobmFtZSwgbG9hZGVyLCAqLCBvcmlnaW49Tm9uZSwgaXNfcGFja2FnZT1Ob25lKToKICAgICAiIiJSZXR1cm4gYSBtb2R1bGUgc3BlYyBiYXNlZCBvbiB2YXJpb3VzIGxvYWRlciBtZXRob2RzLiIiIgogICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CisgICAgICAgIGlmIF9ib290c3RyYXBfZXh0ZXJuYWwgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24gPSBfYm9vdHN0cmFwX2V4dGVybmFsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCisKICAgICAgICAgaWYgaXNfcGFja2FnZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgIHNlYXJjaCA9IFtdIGlmIGlzX3BhY2thZ2UgZWxzZSBOb25lCkBAIC04ODEsNzAgKzQ2Miw2IEBACiBfUE9QVUxBVEUgPSBvYmplY3QoKQogCiAKLWRlZiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBsb2NhdGlvbj1Ob25lLCAqLCBsb2FkZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgotICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIGEgZmlsZSBsb2NhdGlvbi4KLQotICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAotICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIHRvIGEgbGlzdCBvZiBkaXJlY3RvcnkgcGF0aHMuICBBbgotICAgIGVtcHR5IGxpc3QgaXMgc3VmZmljaWVudCwgdGhvdWdoIGl0cyBub3Qgb3RoZXJ3aXNlIHVzZWZ1bCB0byB0aGUKLSAgICBpbXBvcnQgc3lzdGVtLgotCi0gICAgVGhlIGxvYWRlciBtdXN0IHRha2UgYSBzcGVjIGFzIGl0cyBvbmx5IF9faW5pdF9fKCkgYXJnLgotCi0gICAgIiIiCi0gICAgaWYgbG9jYXRpb24gaXMgTm9uZToKLSAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCi0gICAgICAgICMgb3JpZW50ZWQgc3BlYy4gIFNvIHdlIHNldCB0aGUgbG9jYXRpb24gdG8gYSBib2d1cyB2YWx1ZSBhbmQKLSAgICAgICAgIyBmaWxsIGluIGFzIG11Y2ggYXMgd2UgY2FuLgotICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCi0gICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6Ci0gICAgICAgICAgICAjIEV4ZWN1dGlvbkxvYWRlcgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKLSAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90Ci0gICAgIyB2YWxpZC4gIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiB0ZXN0aW5nIHNpbmNlIGFuCi0gICAgIyBpbmRpcmVjdCBsb2NhdGlvbiAoZS5nLiBhIHppcCBmaWxlIG9yIFVSTCkgd2lsbCBsb29rIGxpa2UgYQotICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCi0KLSAgICBzcGVjID0gTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIsIG9yaWdpbj1sb2NhdGlvbikKLSAgICBzcGVjLl9zZXRfZmlsZWF0dHIgPSBUcnVlCi0KLSAgICAjIFBpY2sgYSBsb2FkZXIgaWYgb25lIHdhc24ndCBwcm92aWRlZC4KLSAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgZm9yIGxvYWRlcl9jbGFzcywgc3VmZml4ZXMgaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6Ci0gICAgICAgICAgICBpZiBsb2NhdGlvbi5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgotICAgICAgICAgICAgICAgIGxvYWRlciA9IGxvYWRlcl9jbGFzcyhuYW1lLCBsb2NhdGlvbikKLSAgICAgICAgICAgICAgICBzcGVjLmxvYWRlciA9IGxvYWRlcgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgIyBTZXQgc3VibW9kdWxlX3NlYXJjaF9wYXRocyBhcHByb3ByaWF0ZWx5LgotICAgIGlmIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIF9QT1BVTEFURToKLSAgICAgICAgIyBDaGVjayB0aGUgbG9hZGVyLgotICAgICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ2lzX3BhY2thZ2UnKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpc19wYWNrYWdlID0gbG9hZGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbXQotICAgIGVsc2U6Ci0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPT0gW106Ci0gICAgICAgIGlmIGxvY2F0aW9uOgotICAgICAgICAgICAgZGlybmFtZSA9IF9wYXRoX3NwbGl0KGxvY2F0aW9uKVswXQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucy5hcHBlbmQoZGlybmFtZSkKLQotICAgIHJldHVybiBzcGVjCi0KLQogZGVmIF9zcGVjX2Zyb21fbW9kdWxlKG1vZHVsZSwgbG9hZGVyPU5vbmUsIG9yaWdpbj1Ob25lKToKICAgICAjIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgZm9yIHVzZSBpbiBfc2V0dXAoKS4KICAgICB0cnk6CkBAIC05OTAsMjU3ICs1MDcsMTkwIEBACiAgICAgcmV0dXJuIHNwZWMKIAogCi1jbGFzcyBfU3BlY01ldGhvZHM6CitkZWYgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSwgKiwgb3ZlcnJpZGU9RmFsc2UpOgorICAgICMgVGhlIHBhc3NlZC1pbiBtb2R1bGUgbWF5IGJlIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZSBhc3NpZ25tZW50LAorICAgICMgaW4gd2hpY2ggY2FzZSB3ZSBzaW1wbHkgZG9uJ3Qgc2V0IHRoZSBhdHRyaWJ1dGVzLgorICAgICMgX19uYW1lX18KKyAgICBpZiAob3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX25hbWVfXycsIE5vbmUpIGlzIE5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18gPSBzcGVjLm5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICMgX19sb2FkZXJfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCisgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgIyBBIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGFjay4KKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgX2Jvb3RzdHJhcF9leHRlcm5hbCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgICAgICAgICAgX05hbWVzcGFjZUxvYWRlciA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX05hbWVzcGFjZUxvYWRlcgogCi0gICAgIiIiQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgc3BlYyBvYmplY3RzIHRvIHByb3ZpZGUgc3BlYy1zcGVjaWZpYwotICAgIG1ldGhvZHMuIiIiCisgICAgICAgICAgICAgICAgbG9hZGVyID0gX05hbWVzcGFjZUxvYWRlci5fX25ld19fKF9OYW1lc3BhY2VMb2FkZXIpCisgICAgICAgICAgICAgICAgbG9hZGVyLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX3BhY2thZ2VfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLnBhcmVudAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX3NwZWNfXworICAgIHRyeToKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgICMgX19wYXRoX18KKyAgICBpZiBvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICMgX19maWxlX18vX19jYWNoZWRfXworICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgorICAgICAgICBpZiBvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzcGVjLm9yaWdpbgorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICMgVGhlIHZhcmlvdXMgc3BlY19mcm9tXyogZnVuY3Rpb25zIGNvdWxkIGJlIG1hZGUgZmFjdG9yeSBtZXRob2RzIGhlcmUuCisgICAgICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19jYWNoZWRfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjLmNhY2hlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gc3BlYy5jYWNoZWQKKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICByZXR1cm4gbW9kdWxlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYyk6Ci0gICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKIAotICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSByZXByIHRvIHVzZSBmb3IgdGhlIG1vZHVsZS4iIiIKLSAgICAgICAgIyBXZSBtb3N0bHkgcmVwbGljYXRlIF9tb2R1bGVfcmVwcigpIHVzaW5nIHRoZSBzcGVjIGF0dHJpYnV0ZXMuCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLSAgICAgICAgbmFtZSA9ICc/JyBpZiBzcGVjLm5hbWUgaXMgTm9uZSBlbHNlIHNwZWMubmFtZQotICAgICAgICBpZiBzcGVjLm9yaWdpbiBpcyBOb25lOgotICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfT4nLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoeyFyfSk+Jy5mb3JtYXQobmFtZSwgc3BlYy5sb2FkZXIpCitkZWYgbW9kdWxlX2Zyb21fc3BlYyhzcGVjKToKKyAgICAiIiJDcmVhdGUgYSBtb2R1bGUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHNwZWMuIiIiCisgICAgIyBUeXBpY2FsbHkgbG9hZGVycyB3aWxsIG5vdCBpbXBsZW1lbnQgY3JlYXRlX21vZHVsZSgpLgorICAgIG1vZHVsZSA9IE5vbmUKKyAgICBpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgorICAgICAgICAjIElmIGNyZWF0ZV9tb2R1bGUoKSByZXR1cm5zIGBOb25lYCB0aGVuIGl0IG1lYW5zIGRlZmF1bHQKKyAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICBlbGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgbG9hZGVycyBkZWZpbmluZyBleGVjX21vZHVsZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKKyAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQorICAgIHJldHVybiBtb2R1bGUKKworCitkZWYgX21vZHVsZV9yZXByX2Zyb21fc3BlYyhzcGVjKToKKyAgICAiIiJSZXR1cm4gdGhlIHJlcHIgdG8gdXNlIGZvciB0aGUgbW9kdWxlLiIiIgorICAgICMgV2UgbW9zdGx5IHJlcGxpY2F0ZSBfbW9kdWxlX3JlcHIoKSB1c2luZyB0aGUgc3BlYyBhdHRyaWJ1dGVzLgorICAgIG5hbWUgPSAnPycgaWYgc3BlYy5uYW1lIGlzIE5vbmUgZWxzZSBzcGVjLm5hbWUKKyAgICBpZiBzcGVjLm9yaWdpbiBpcyBOb25lOgorICAgICAgICBpZiBzcGVjLmxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0+Jy5mb3JtYXQobmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IGZyb20geyFyfT4nLmZvcm1hdChuYW1lLCBzcGVjLm9yaWdpbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHshcn0pPicuZm9ybWF0KG5hbWUsIHNwZWMubG9hZGVyKQorICAgIGVsc2U6CisgICAgICAgIGlmIHNwZWMuaGFzX2xvY2F0aW9uOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gZnJvbSB7IXJ9PicuZm9ybWF0KG5hbWUsIHNwZWMub3JpZ2luKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKHt9KT4nLmZvcm1hdChzcGVjLm5hbWUsIHNwZWMub3JpZ2luKQogCi0gICAgZGVmIGluaXRfbW9kdWxlX2F0dHJzKHNlbGYsIG1vZHVsZSwgKiwgX292ZXJyaWRlPUZhbHNlLCBfZm9yY2VfbmFtZT1UcnVlKToKLSAgICAgICAgIiIiU2V0IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzLgogCi0gICAgICAgIEFsbCBtaXNzaW5nIGltcG9ydC1yZWxhdGVkIG1vZHVsZSBhdHRyaWJ1dGVzIHdpbGwgYmUgc2V0LiAgSGVyZQotICAgICAgICBpcyBob3cgdGhlIHNwZWMgYXR0cmlidXRlcyBtYXAgb250byB0aGUgbW9kdWxlOgorIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KK2RlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgorICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgorICAgIG5hbWUgPSBzcGVjLm5hbWUKKyAgICBfaW1wLmFjcXVpcmVfbG9jaygpCisgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CisgICAgICAgIGlmIHN5cy5tb2R1bGVzLmdldChuYW1lKSBpcyBub3QgbW9kdWxlOgorICAgICAgICAgICAgbXNnID0gJ21vZHVsZSB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNwZWMubmFtZSkKKyAgICAgICAgICAgICMgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUsIG92ZXJyaWRlPVRydWUpCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgICMgKGlzc3VlMTk3MTMpIE9uY2UgQnVpbHRpbkltcG9ydGVyIGFuZCBFeHRlbnNpb25GaWxlTG9hZGVyCisgICAgICAgICAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCisgICAgICAgICAgICAjIHdhcm5pbmcgaGVyZS4KKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCiAKLSAgICAgICAgc3BlYy5uYW1lIC0+IG1vZHVsZS5fX25hbWVfXwotICAgICAgICBzcGVjLmxvYWRlciAtPiBtb2R1bGUuX19sb2FkZXJfXwotICAgICAgICBzcGVjLnBhcmVudCAtPiBtb2R1bGUuX19wYWNrYWdlX18KLSAgICAgICAgc3BlYyAtPiBtb2R1bGUuX19zcGVjX18KIAotICAgICAgICBPcHRpb25hbDoKLSAgICAgICAgc3BlYy5vcmlnaW4gLT4gbW9kdWxlLl9fZmlsZV9fIChpZiBzcGVjLnNldF9maWxlYXR0ciBpcyB0cnVlKQotICAgICAgICBzcGVjLmNhY2hlZCAtPiBtb2R1bGUuX19jYWNoZWRfXyAoaWYgX19maWxlX18gYWxzbyBzZXQpCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgLT4gbW9kdWxlLl9fcGF0aF9fIChpZiBzZXQpCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLQotICAgICAgICAjIFRoZSBwYXNzZWQgaW4gbW9kdWxlIG1heSBiZSBub3Qgc3VwcG9ydCBhdHRyaWJ1dGUgYXNzaWdubWVudCwKLSAgICAgICAgIyBpbiB3aGljaCBjYXNlIHdlIHNpbXBseSBkb24ndCBzZXQgdGhlIGF0dHJpYnV0ZXMuCi0KLSAgICAgICAgIyBfX25hbWVfXwotICAgICAgICBpZiAoX292ZXJyaWRlIG9yIF9mb3JjZV9uYW1lIG9yCi0gICAgICAgICAgICBnZXRhdHRyKG1vZHVsZSwgJ19fbmFtZV9fJywgTm9uZSkgaXMgTm9uZSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fID0gc3BlYy5uYW1lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICMgX19sb2FkZXJfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCi0gICAgICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIEEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoYWNrLgotICAgICAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IF9OYW1lc3BhY2VMb2FkZXIuX19uZXdfXyhfTmFtZXNwYWNlTG9hZGVyKQotICAgICAgICAgICAgICAgICAgICBsb2FkZXIuX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX3BhY2thZ2VfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gc3BlYy5wYXJlbnQKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX3NwZWNfXworZGVmIF9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoc3BlYyk6CisgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKKyAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCisgICAgIyB3YXJuaW5nIGhlcmUuCisgICAgc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUoc3BlYy5uYW1lKQorICAgICMgVGhlIG1vZHVsZSBtdXN0IGJlIGluIHN5cy5tb2R1bGVzIGF0IHRoaXMgcG9pbnQhCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbc3BlYy5uYW1lXQorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFNpbmNlIG1vZHVsZS5fX3BhdGhfXyBtYXkgbm90IGxpbmUgdXAgd2l0aAorICAgICAgICAgICAgIyBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfcGF0aHMsIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJlbHkKKyAgICAgICAgICAgICMgb24gc3BlYy5wYXJlbnQgaGVyZS4KKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXworICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLm5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fc3BlY19fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQogCi0gICAgICAgICMgX19wYXRoX18KLSAgICAgICAgaWYgX292ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYXRoX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKLSAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKK2RlZiBfbG9hZF91bmxvY2tlZChzcGVjKToKKyAgICAjIEEgaGVscGVyIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBpbXBvcnQgc3lzdGVtLgorICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAjIG5vdCBhIG5hbWVzcGFjZSBwYWNrYWdlCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgIHJldHVybiBfbG9hZF9iYWNrd2FyZF9jb21wYXRpYmxlKHNwZWMpCiAKLSAgICAgICAgaWYgc3BlYy5oYXNfbG9jYXRpb246Ci0gICAgICAgICAgICAjIF9fZmlsZV9fCi0gICAgICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2ZpbGVfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzcGVjLm9yaWdpbgotICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAjIF9fY2FjaGVkX18KLSAgICAgICAgICAgIGlmIF9vdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNwZWMuY2FjaGVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IHNwZWMuY2FjaGVkCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBjcmVhdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgdG8gYmUgbG9hZGVkLgotCi0gICAgICAgIFRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBhcmUgYWxzbyBzZXQgd2l0aCB0aGUKLSAgICAgICAgYXBwcm9wcmlhdGUgdmFsdWVzIGZyb20gdGhlIHNwZWMuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLnNwZWMKLSAgICAgICAgIyBUeXBpY2FsbHkgbG9hZGVycyB3aWxsIG5vdCBpbXBsZW1lbnQgY3JlYXRlX21vZHVsZSgpLgotICAgICAgICBpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnY3JlYXRlX21vZHVsZScpOgotICAgICAgICAgICAgIyBJZiBjcmVhdGVfbW9kdWxlKCkgcmV0dXJucyBgTm9uZWAgaXQgbWVhbnMgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICMgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCBiZSB1c2VkLgotICAgICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgIG1vZHVsZSA9IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICB3aXRoIF9pbnN0YWxsZWRfc2FmZWx5KG1vZHVsZSk6CisgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zcGVjLm5hbWUpCisgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2Ugc28gZG8gbm90aGluZy4KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZHVsZSA9IE5vbmUKLSAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBvcGVuKCkgaXMgZXZlciBjYWxsZWQgYXMgdGhlICdpbycKLSAgICAgICAgICAgICMgbW9kdWxlIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlCi0gICAgICAgICAgICAjIHRyaWdnZXIgYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKIAotICAgIGRlZiBfZXhlYyhzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJEbyBldmVyeXRoaW5nIG5lY2Vzc2FyeSB0byBleGVjdXRlIHRoZSBtb2R1bGUuCisgICAgIyBXZSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgaW1wb3J0LXJlbGF0ZWQgbW9kdWxlIGF0dHJpYnV0ZXMgZ2V0CisgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCisgICAgIyB0aGVpciBvd24uCisgICAgcmV0dXJuIHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KIAotICAgICAgICBUaGUgbmFtZXNwYWNlIG9mIGBtb2R1bGVgIGlzIHVzZWQgYXMgdGhlIHRhcmdldCBvZiBleGVjdXRpb24uCi0gICAgICAgIFRoaXMgbWV0aG9kIHVzZXMgdGhlIGxvYWRlcidzIGBleGVjX21vZHVsZSgpYCBtZXRob2QuCisjIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKKyMgX2xvYWRfbW9kdWxlX3NoaW0oKS4KK2RlZiBfbG9hZChzcGVjKToKKyAgICAiIiJSZXR1cm4gYSBuZXcgbW9kdWxlIG9iamVjdCwgbG9hZGVkIGJ5IHRoZSBzcGVjJ3MgbG9hZGVyLgogCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICBUaGUgbW9kdWxlIGlzIG5vdCBhZGRlZCB0byBpdHMgcGFyZW50LgogCi0gICAgIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KLSAgICBkZWYgZXhlYyhzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJFeGVjdXRlIHRoZSBzcGVjIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKLSAgICAgICAgbmFtZSA9IHNlbGYuc3BlYy5uYW1lCi0gICAgICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKLSAgICAgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6Ci0gICAgICAgICAgICBpZiBzeXMubW9kdWxlcy5nZXQobmFtZSkgaXMgbm90IG1vZHVsZToKLSAgICAgICAgICAgICAgICBtc2cgPSAnbW9kdWxlIHshcn0gbm90IGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKLSAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ21pc3NpbmcgbG9hZGVyJywgbmFtZT1zZWxmLnNwZWMubmFtZSkKLSAgICAgICAgICAgICAgICAjIG5hbWVzcGFjZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUsIF9vdmVycmlkZT1UcnVlKQotICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICAgICAgICAgIHNlbGYuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlLCBfb3ZlcnJpZGU9VHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICAgICAgICAgICMgKGlzc3VlMTk3MTMpIE9uY2UgQnVpbHRpbkltcG9ydGVyIGFuZCBFeHRlbnNpb25GaWxlTG9hZGVyCi0gICAgICAgICAgICAgICAgIyBoYXZlIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50ZWQsIHdlIGNhbiBhZGQgYSBkZXByZWNhdGlvbgotICAgICAgICAgICAgICAgICMgd2FybmluZyBoZXJlLgotICAgICAgICAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhlYyhtb2R1bGUpCi0gICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgIElmIGEgbW9kdWxlIGlzIGFscmVhZHkgaW4gc3lzLm1vZHVsZXMsIHRoYXQgZXhpc3RpbmcgbW9kdWxlIGdldHMKKyAgICBjbG9iYmVyZWQuCiAKLSAgICBkZWYgX2xvYWRfYmFja3dhcmRfY29tcGF0aWJsZShzZWxmKToKLSAgICAgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKLSAgICAgICAgIyBoYXZlIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50ZWQsIHdlIGNhbiBhZGQgYSBkZXByZWNhdGlvbgotICAgICAgICAjIHdhcm5pbmcgaGVyZS4KLSAgICAgICAgc3BlYyA9IHNlbGYuc3BlYwotICAgICAgICBzcGVjLmxvYWRlci5sb2FkX21vZHVsZShzcGVjLm5hbWUpCi0gICAgICAgICMgVGhlIG1vZHVsZSBtdXN0IGJlIGluIHN5cy5tb2R1bGVzIGF0IHRoaXMgcG9pbnQhCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW3NwZWMubmFtZV0KLSAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFNpbmNlIG1vZHVsZS5fX3BhdGhfXyBtYXkgbm90IGxpbmUgdXAgd2l0aAotICAgICAgICAgICAgICAgICMgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX3BhdGhzLCB3ZSBjYW4ndCBuZWNlc3NhcmlseSByZWx5Ci0gICAgICAgICAgICAgICAgIyBvbiBzcGVjLnBhcmVudCBoZXJlLgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNwZWMubmFtZS5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19zcGVjX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKLQotICAgIGRlZiBfbG9hZF91bmxvY2tlZChzZWxmKToKLSAgICAgICAgIyBBIGhlbHBlciBmb3IgZGlyZWN0IHVzZSBieSB0aGUgaW1wb3J0IHN5c3RlbS4KLSAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgbm90IGEgbmFtZXNwYWNlIHBhY2thZ2UKLSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoKQotCi0gICAgICAgIG1vZHVsZSA9IHNlbGYuY3JlYXRlKCkKLSAgICAgICAgd2l0aCBfaW5zdGFsbGVkX3NhZmVseShtb2R1bGUpOgotICAgICAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNlbGYuc3BlYy5uYW1lKQotICAgICAgICAgICAgICAgICMgQSBuYW1lc3BhY2UgcGFja2FnZSBzbyBkbyBub3RoaW5nLgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjKG1vZHVsZSkKLQotICAgICAgICAjIFdlIGRvbid0IGVuc3VyZSB0aGF0IHRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBnZXQKLSAgICAgICAgIyBzZXQgaW4gdGhlIHN5cy5tb2R1bGVzIHJlcGxhY2VtZW50IGNhc2UuICBTdWNoIG1vZHVsZXMgYXJlIG9uCi0gICAgICAgICMgdGhlaXIgb3duLgotICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCi0KLSAgICAjIEEgbWV0aG9kIHVzZWQgZHVyaW5nIHRlc3Rpbmcgb2YgX2xvYWRfdW5sb2NrZWQoKSBhbmQgYnkKLSAgICAjIF9sb2FkX21vZHVsZV9zaGltKCkuCi0gICAgZGVmIGxvYWQoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgb2JqZWN0LCBsb2FkZWQgYnkgdGhlIHNwZWMncyBsb2FkZXIuCi0KLSAgICAgICAgVGhlIG1vZHVsZSBpcyBub3QgYWRkZWQgdG8gaXRzIHBhcmVudC4KLQotICAgICAgICBJZiBhIG1vZHVsZSBpcyBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLCB0aGF0IGV4aXN0aW5nIG1vZHVsZSBnZXRzCi0gICAgICAgIGNsb2JiZXJlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQotICAgICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbG9hZF91bmxvY2tlZCgpCi0KLQotZGVmIF9maXhfdXBfbW9kdWxlKG5zLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lPU5vbmUpOgotICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCi0gICAgbG9hZGVyID0gbnMuZ2V0KCdfX2xvYWRlcl9fJykKLSAgICBzcGVjID0gbnMuZ2V0KCdfX3NwZWNfXycpCi0gICAgaWYgbm90IGxvYWRlcjoKLSAgICAgICAgaWYgc3BlYzoKLSAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCi0gICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgotICAgICAgICAgICAgbG9hZGVyID0gU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQotICAgIGlmIG5vdCBzcGVjOgotICAgICAgICBzcGVjID0gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgdHJ5OgotICAgICAgICBuc1snX19zcGVjX18nXSA9IHNwZWMKLSAgICAgICAgbnNbJ19fbG9hZGVyX18nXSA9IGxvYWRlcgotICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCi0gICAgICAgIG5zWydfX2NhY2hlZF9fJ10gPSBjcGF0aG5hbWUKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KLSAgICAgICAgcGFzcworICAgICIiIgorICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKKyAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihzcGVjLm5hbWUpOgorICAgICAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKIAogCiAjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xMjg1LDE2ICs3MzUsMTcgQEAKICAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyIGlmIHNwZWMgaXMgbm90IE5vbmUgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBAX3JlcXVpcmVzX2J1aWx0aW4KLSAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBidWlsdC1pbiBtb2R1bGUuIiIiCi0gICAgICAgICMgT25jZSBhbiBleGVjX21vZHVsZSgpIGltcGxlbWVudGF0aW9uIGlzIGFkZGVkIHdlIGNhbiBhbHNvCi0gICAgICAgICMgYWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBoZXJlLgotICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfYnVpbHRpbiwgZnVsbG5hbWUpCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gY2xzCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICcnCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgYnVpbHQtaW4gbW9kdWxlIiIiCisgICAgICAgIGlmIHNwZWMubmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3shcn0gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlJy5mb3JtYXQoc3BlYy5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9c3BlYy5uYW1lKQorICAgICAgICByZXR1cm4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmNyZWF0ZV9idWlsdGluLCBzcGVjKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkV4ZWMgYSBidWlsdC1pbiBtb2R1bGUiIiIKKyAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfYnVpbHRpbiwgbW9kdWxlKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19idWlsdGluCkBAIC0xMzE0LDYgKzc2NSw4IEBACiAgICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBidWlsdC1pbiBtb2R1bGVzIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBsb2FkX21vZHVsZSA9IGNsYXNzbWV0aG9kKF9sb2FkX21vZHVsZV9zaGltKQorCiAKIGNsYXNzIEZyb3plbkltcG9ydGVyOgogCkBAIC0xMzQ5LDYgKzgwMiwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY3JlYXRlX21vZHVsZShjbHMsIHNwZWMpOgorICAgICAgICAiIiJVc2UgZGVmYXVsdCBzZW1hbnRpY3MgZm9yIG1vZHVsZSBjcmVhdGlvbi4iIiIKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZXhlY19tb2R1bGUobW9kdWxlKToKICAgICAgICAgbmFtZSA9IG1vZHVsZS5fX3NwZWNfXy5uYW1lCkBAIC0xMzg2LDczMSArODQzLDYgQEAKICAgICAgICAgcmV0dXJuIF9pbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCiAKIAotY2xhc3MgV2luZG93c1JlZ2lzdHJ5RmluZGVyOgotCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4iIiIKLQotICAgIFJFR0lTVFJZX0tFWSA9ICgKLSAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCi0gICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX0nKQotICAgIFJFR0lTVFJZX0tFWV9ERUJVRyA9ICgKLSAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCi0gICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX1cXERlYnVnJykKLSAgICBERUJVR19CVUlMRCA9IEZhbHNlICAjIENoYW5nZWQgaW4gX3NldHVwKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfb3Blbl9yZWdpc3RyeShjbHMsIGtleSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwga2V5KQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgotICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6Ci0gICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCi0gICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6Ci0gICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgJycpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGZpbGVwYXRoCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICBmaWxlcGF0aCA9IGNscy5fc2VhcmNoX3JlZ2lzdHJ5KGZ1bGxuYW1lKQotICAgICAgICBpZiBmaWxlcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX3BhdGhfc3RhdChmaWxlcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKLSAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6Ci0gICAgICAgICAgICAgICAgc3BlYyA9IHNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1maWxlcGF0aCkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCi0gICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgX0xvYWRlckJhc2ljczoKLQotICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAotICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKLSAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCi0gICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQotICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KLSAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCi0gICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCi0KLSAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgIiIiRXhlY3V0ZSB0aGUgbW9kdWxlLiIiIgotICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShtb2R1bGUuX19uYW1lX18pCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdjYW5ub3QgbG9hZCBtb2R1bGUgeyFyfSB3aGVuIGdldF9jb2RlKCkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgTm9uZScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykpCi0gICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZSwgbW9kdWxlLl9fZGljdF9fKQotCi0gICAgbG9hZF9tb2R1bGUgPSBfbG9hZF9tb2R1bGVfc2hpbQotCi0KLWNsYXNzIFNvdXJjZUxvYWRlcihfTG9hZGVyQmFzaWNzKToKLQotICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCi0gICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgotCi0gICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCi0gICAgICAgICIiIgotICAgICAgICByYWlzZSBJT0Vycm9yCi0KLSAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aAotICAgICAgICB0byBieSB0aGUgcGF0aCAoc3RyKS4KLSAgICAgICAgUG9zc2libGUga2V5czoKLSAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQotICAgICAgICAgIGNvZGUgbW9kaWZpY2F0aW9uOwotICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KLSAgICAgICAgUmFpc2VzIElPRXJyb3Igd2hlbiB0aGUgcGF0aCBjYW5ub3QgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQotCi0gICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCi0KLSAgICAgICAgVGhlIHNvdXJjZSBwYXRoIGlzIG5lZWRlZCBpbiBvcmRlciB0byBjb3JyZWN0bHkgdHJhbnNmZXIgcGVybWlzc2lvbnMKLSAgICAgICAgIiIiCi0gICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBkZWxlZ2F0ZSB0byBzZXRfZGF0YSgpCi0gICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGNhY2hlX3BhdGgsIGRhdGEpCi0KLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCi0KLSAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCi0gICAgICAgICIiIgotCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZS4iIiIKLSAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHBhdGgpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKLSAgICAgICAgcmV0dXJuIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQotCi0gICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGgsICosIF9vcHRpbWl6ZT0tMSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgY29tcGlsZWQgZnJvbSBzb3VyY2UuCi0KLSAgICAgICAgVGhlICdkYXRhJyBhcmd1bWVudCBjYW4gYmUgYW55IG9iamVjdCB0eXBlIHRoYXQgY29tcGlsZSgpIHN1cHBvcnRzLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgotCi0gICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKLSAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKLSAgICAgICAgc291cmNlX210aW1lID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCi0gICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zdGF0cz1zdCwgbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKLSAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKLSAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCi0gICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKLQotCi1jbGFzcyBGaWxlTG9hZGVyOgotCi0gICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0Ci0gICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCi0gICAgICAgIGZpbmRlci4iIiIKLSAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAotICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgVGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIG1ldGhvZCBpcyBmb3IgdGhlIG5hbWUgY2hlY2suCi0gICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIG9mIHN1cGVyIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgotICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCi0gICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnBhdGgKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCi0gICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAncicpIGFzIGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKLQotCi1jbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6Ci0KLSAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgotCi0gICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgotICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKLSAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQotCi0gICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6Ci0gICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKLSAgICAgICAgbW9kZSA9IF9jYWxjX21vZGUoc291cmNlX3BhdGgpCi0gICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCi0KLSAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgotICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKLSAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCi0gICAgICAgIHBhdGhfcGFydHMgPSBbXQotICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KLSAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKLSAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKLSAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCi0gICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KLSAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6Ci0gICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQotICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKLSAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0Ci0gICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKLQotCi1jbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKLQotICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgotCi0gICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCi0gICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgotRVhURU5TSU9OX1NVRkZJWEVTID0gW10KLQotCi1jbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyOgotCi0gICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KLQotICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KLQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpIF4gaGFzaChzZWxmLnBhdGgpCi0KLSAgICBAX2NoZWNrX25hbWUKLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCi0gICAgICAgICMgT25jZSBhbiBleGVjX21vZHVsZSgpIGltcGxlbWVudGF0aW9uIGlzIGFkZGVkIHdlIGNhbiBhbHNvCi0gICAgICAgICMgYWRkIGEgZGVwcmVjYXRpb24gd2FybmluZyBoZXJlLgotICAgICAgICB3aXRoIF9NYW5hZ2VSZWxvYWQoZnVsbG5hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSBsb2FkZWQgZnJvbSB7IXJ9Jywgc2VsZi5wYXRoKQotICAgICAgICBpc19wYWNrYWdlID0gc2VsZi5pc19wYWNrYWdlKGZ1bGxuYW1lKQotICAgICAgICBpZiBpc19wYWNrYWdlIGFuZCBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCi0gICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KLSAgICAgICAgaWYgbm90IGlzX3BhY2thZ2U6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHJldHVybiBtb2R1bGUKLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgotICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCi0gICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKLQotICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgQF9jaGVja19uYW1lCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aAotCi0KLWNsYXNzIF9OYW1lc3BhY2VQYXRoOgotICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQotICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncwotICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAotICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKLSAgICBpcyBzeXMucGF0aC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCi0gICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKLSAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgotCi0gICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgotICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQotICAgICAgICBpZiBkb3QgPT0gJyc6Ci0gICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCi0gICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJwotICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCi0gICAgICAgICMgIHBhcmVudCBwYXRoLgotICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCi0KLSAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKLSAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKLQotICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6Ci0gICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCi0gICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKLSAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKLSAgICAgICAgICAgIHNwZWMgPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQotICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAotICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgc3BlYy5sb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQotCi0gICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKLSAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQotCi0gICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKLSAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKLQotCi0jIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIGluaXRfbW9kdWxlX2F0dHJzKCkgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkuCi1jbGFzcyBfTmFtZXNwYWNlTG9hZGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6Ci0gICAgICAgIHNlbGYuX3BhdGggPSBfTmFtZXNwYWNlUGF0aChuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcikKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6Ci0gICAgICAgICIiIlJldHVybiByZXByIGZvciB0aGUgbW9kdWxlLgotCi0gICAgICAgIFRoZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvZXMgdGhlIGpvYiBpdHNlbGYuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9IChuYW1lc3BhY2UpPicuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKLQotICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICByZXR1cm4gY29tcGlsZSgnJywgJzxzdHJpbmc+JywgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKLQotICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJMb2FkIGEgbmFtZXNwYWNlIG1vZHVsZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBUaGUgaW1wb3J0IHN5c3RlbSBuZXZlciBjYWxscyB0aGlzIG1ldGhvZC4KLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQotICAgICAgICByZXR1cm4gX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCi0KLQotIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBQYXRoRmluZGVyOgotCi0gICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhjbHMpOgotICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCi0gICAgICAgIHN0b3JlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZXMgKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKLSAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS52YWx1ZXMoKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKLSAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KLQotICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc3lzLnBhdGhfaG9va3M6Ci0gICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gaG9vayhwYXRoKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6Ci0gICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgotCi0gICAgICAgIElmIHRoZSBwYXRoIGVudHJ5IGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlcgotICAgICAgICBhbmQgY2FjaGUgaXQuIElmIG5vIGZpbmRlciBpcyBhdmFpbGFibGUsIHN0b3JlIE5vbmUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHBhdGggPT0gJyc6Ci0gICAgICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKLSAgICAgICAgcmV0dXJuIGZpbmRlcgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9sZWdhY3lfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgZmluZGVyKToKLSAgICAgICAgIyBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSBmb3IgYSBEZXByZWNhdGlvbldhcm5pbmcgaWYKLSAgICAgICAgIyB3ZSBlbmRlZCB1cCBnb2luZyB0aGF0IHJvdXRlLgotICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6Ci0gICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKGZ1bGxuYW1lKQotICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQotICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQotICAgICAgICBzcGVjID0gTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHBvcnRpb25zCi0gICAgICAgIHJldHVybiBzcGVjCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2dldF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiRmluZCB0aGUgbG9hZGVyIG9yIG5hbWVzcGFjZV9wYXRoIGZvciB0aGlzIG1vZHVsZS9wYWNrYWdlIG5hbWUuIiIiCi0gICAgICAgICMgSWYgdGhpcyBlbmRzIHVwIGJlaW5nIGEgbmFtZXNwYWNlIHBhY2thZ2UsIG5hbWVzcGFjZV9wYXRoIGlzCi0gICAgICAgICMgIHRoZSBsaXN0IG9mIHBhdGhzIHRoYXQgd2lsbCBiZWNvbWUgaXRzIF9fcGF0aF9fCi0gICAgICAgIG5hbWVzcGFjZV9wYXRoID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIHBhdGg6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbnRyeSwgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQotICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9zcGVjJyk6Ci0gICAgICAgICAgICAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKGZ1bGxuYW1lLCB0YXJnZXQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGNscy5fbGVnYWN5X2dldF9zcGVjKGZ1bGxuYW1lLCBmaW5kZXIpCi0gICAgICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICAgICAgICAgIHBvcnRpb25zID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgICAgIGlmIHBvcnRpb25zIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzcGVjIG1pc3NpbmcgbG9hZGVyJykKLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQotICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCi0gICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzcGVjID0gTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKLSAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBuYW1lc3BhY2VfcGF0aAotICAgICAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgotICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKLSAgICAgICAgc3BlYyA9IGNscy5fZ2V0X3NwZWMoZnVsbG5hbWUsIHBhdGgsIHRhcmdldCkKLSAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZWxpZiBzcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKLSAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCi0gICAgICAgICAgICAgICAgIyAgc3BlYyB3aGljaCBjYW4gY3JlYXRlIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KLSAgICAgICAgICAgICAgICBzcGVjLm9yaWdpbiA9ICduYW1lc3BhY2UnCi0gICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IF9OYW1lc3BhY2VQYXRoKGZ1bGxuYW1lLCBuYW1lc3BhY2VfcGF0aCwgY2xzLl9nZXRfc3BlYykKLSAgICAgICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgotICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBjbHMuZmluZF9zcGVjKGZ1bGxuYW1lLCBwYXRoKQotICAgICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKLQotCi1jbGFzcyBGaWxlRmluZGVyOgotCi0gICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCi0KLSAgICBJbnRlcmFjdGlvbnMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UsIGJlaW5nCi0gICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgKmxvYWRlcl9kZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKLSAgICAgICAgMi10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyIGFuZCB0aGUgZmlsZSBzdWZmaXhlcyB0aGUgbG9hZGVyCi0gICAgICAgIHJlY29nbml6ZXMuIiIiCi0gICAgICAgIGxvYWRlcnMgPSBbXQotICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBsb2FkZXJfZGV0YWlsczoKLSAgICAgICAgICAgIGxvYWRlcnMuZXh0ZW5kKChzdWZmaXgsIGxvYWRlcikgZm9yIHN1ZmZpeCBpbiBzdWZmaXhlcykKLSAgICAgICAgc2VsZi5fbG9hZGVycyA9IGxvYWRlcnMKLSAgICAgICAgIyBCYXNlIChkaXJlY3RvcnkpIHBhdGgKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aCBvciAnLicKLSAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCi0gICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoKQotICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoKQotCi0gICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgotICAgICAgICAiIiJJbnZhbGlkYXRlIHRoZSBkaXJlY3RvcnkgbXRpbWUuIiIiCi0gICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQotCi0gICAgZmluZF9tb2R1bGUgPSBfZmluZF9tb2R1bGVfc2hpbQotCi0gICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCi0gICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgotCi0gICAgICAgICIiIgotICAgICAgICBzcGVjID0gc2VsZi5maW5kX3NwZWMoZnVsbG5hbWUpCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lLCBbXQotICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIsIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgb3IgW10KLQotICAgIGRlZiBfZ2V0X3NwZWMoc2VsZiwgbG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgcGF0aCwgc21zbCwgdGFyZ2V0KToKLSAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKGZ1bGxuYW1lLCBwYXRoKQotICAgICAgICByZXR1cm4gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZnVsbG5hbWUsIHBhdGgsIGxvYWRlcj1sb2FkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQotCi0gICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKLSAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKLSAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKLSAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXRpbWUgPSBfcGF0aF9zdGF0KHNlbGYucGF0aCBvciBfb3MuZ2V0Y3dkKCkpLnN0X210aW1lCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgbXRpbWUgPSAtMQotICAgICAgICBpZiBtdGltZSAhPSBzZWxmLl9wYXRoX210aW1lOgotICAgICAgICAgICAgc2VsZi5fZmlsbF9jYWNoZSgpCi0gICAgICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gbXRpbWUKLSAgICAgICAgIyB0YWlsX21vZHVsZSBrZWVwcyB0aGUgb3JpZ2luYWwgY2FzaW5nLCBmb3IgX19maWxlX18gYW5kIGZyaWVuZHMKLSAgICAgICAgaWYgX3JlbGF4X2Nhc2UoKToKLSAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlCi0gICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZS5sb3dlcigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKLSAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlCi0gICAgICAgICMgQ2hlY2sgaWYgdGhlIG1vZHVsZSBpcyB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSAoYW5kIHRodXMgYSBwYWNrYWdlKS4KLSAgICAgICAgaWYgY2FjaGVfbW9kdWxlIGluIGNhY2hlOgotICAgICAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6Ci0gICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKLSAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKGJhc2VfcGF0aCwgaW5pdF9maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgW2Jhc2VfcGF0aF0sIHRhcmdldCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBJZiBhIG5hbWVzcGFjZSBwYWNrYWdlLCByZXR1cm4gdGhlIHBhdGggaWYgd2UgZG9uJ3QKLSAgICAgICAgICAgICAgICAjICBmaW5kIGEgbW9kdWxlIGluIHRoZSBuZXh0IHNlY3Rpb24uCi0gICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gX3BhdGhfaXNkaXIoYmFzZV9wYXRoKQotICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLmZvcm1hdChmdWxsX3BhdGgpLCB2ZXJib3NpdHk9MikKLSAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKLSAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgTm9uZSwgdGFyZ2V0KQotICAgICAgICBpZiBpc19uYW1lc3BhY2U6Ci0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9Jy5mb3JtYXQoYmFzZV9wYXRoKSkKLSAgICAgICAgICAgIHNwZWMgPSBNb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCi0gICAgICAgICAgICByZXR1cm4gc3BlYwotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgotICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgotICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCBvciBfb3MuZ2V0Y3dkKCkpCi0gICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKLSAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKLSAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KLSAgICAgICAgICAgIGNvbnRlbnRzID0gW10KLSAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQotICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCi0gICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKLSAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKLSAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKLSAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgotICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKLSAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgotICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQotICAgICAgICAgICAgICAgIGlmIGRvdDoKLSAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQotICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cwotICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgotICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6Ci0gICAgICAgICIiIkEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIHRvIHVzZSBvbiBzeXMucGF0aF9ob29rCi0gICAgICAgIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9hZGVycyBhbmQgdGhlIHBhdGgKLSAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgotCi0gICAgICAgIElmIHRoZSBwYXRoIGNhbGxlZCBvbiB0aGUgY2xvc3VyZSBpcyBub3QgYSBkaXJlY3RvcnksIEltcG9ydEVycm9yIGlzCi0gICAgICAgIHJhaXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKLSAgICAgICAgICAgICIiIlBhdGggaG9vayBmb3IgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLiIiIgotICAgICAgICAgICAgaWYgbm90IF9wYXRoX2lzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCi0gICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKLQotICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKLQotCiAjIEltcG9ydCBpdHNlbGYgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGNsYXNzIF9JbXBvcnRMb2NrQ29udGV4dDoKQEAgLTIxNDYsNyArODc4LDcgQEAKIAogZGVmIF9maW5kX3NwZWMobmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgogICAgICIiIkZpbmQgYSBtb2R1bGUncyBsb2FkZXIuIiIiCi0gICAgaWYgbm90IHN5cy5tZXRhX3BhdGg6CisgICAgaWYgc3lzLm1ldGFfcGF0aCBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5tZXRhX3BhdGg6CiAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMubWV0YV9wYXRoIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKICAgICAjIFdlIGNoZWNrIHN5cy5tb2R1bGVzIGhlcmUgZm9yIHRoZSByZWxvYWQgY2FzZS4gIFdoaWxlIGEgcGFzc2VkLWluCiAgICAgIyB0YXJnZXQgd2lsbCB1c3VhbGx5IGluZGljYXRlIGEgcmVsb2FkIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSwgd2hlcmVhcwpAQCAtMjIxOCwxMiArOTUwLDEyIEBACiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnKS5mb3JtYXQobmFtZSwgcGFyZW50KQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsc2U6Ci0gICAgICAgIG1vZHVsZSA9IF9TcGVjTWV0aG9kcyhzcGVjKS5fbG9hZF91bmxvY2tlZCgpCisgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgaWYgcGFyZW50OgogICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgogICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQpAQCAtMjMwOCwxNyArMTA0MCw2IEBACiAgICAgcmV0dXJuIHBhY2thZ2UKIAogCi1kZWYgX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6Ci0gICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KLQotICAgIEVhY2ggaXRlbSBpcyBhIHR1cGxlIChsb2FkZXIsIHN1ZmZpeGVzKS4KLSAgICAiIiIKLSAgICBleHRlbnNpb25zID0gRXh0ZW5zaW9uRmlsZUxvYWRlciwgX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKQotICAgIHNvdXJjZSA9IFNvdXJjZUZpbGVMb2FkZXIsIFNPVVJDRV9TVUZGSVhFUwotICAgIGJ5dGVjb2RlID0gU291cmNlbGVzc0ZpbGVMb2FkZXIsIEJZVEVDT0RFX1NVRkZJWEVTCi0gICAgcmV0dXJuIFtleHRlbnNpb25zLCBzb3VyY2UsIGJ5dGVjb2RlXQotCi0KIGRlZiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGUuCiAKQEAgLTIzNTgsOCArMTA3OSw3IEBACiAgICAgc3BlYyA9IEJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMobmFtZSkKICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBidWlsdC1pbiBtb2R1bGUgbmFtZWQgJyArIG5hbWUpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQotICAgIHJldHVybiBtZXRob2RzLl9sb2FkX3VubG9ja2VkKCkKKyAgICByZXR1cm4gX2xvYWRfdW5sb2NrZWQoc3BlYykKIAogCiBkZWYgX3NldHVwKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKQEAgLTIzNzAsMTUgKzEwOTAsMTAgQEAKICAgICBtb2R1bGVzLCB0aG9zZSB0d28gbW9kdWxlcyBtdXN0IGJlIGV4cGxpY2l0bHkgcGFzc2VkIGluLgogCiAgICAgIiIiCi0gICAgZ2xvYmFsIF9pbXAsIHN5cywgQllURUNPREVfU1VGRklYRVMKKyAgICBnbG9iYWwgX2ltcCwgc3lzCiAgICAgX2ltcCA9IF9pbXBfbW9kdWxlCiAgICAgc3lzID0gc3lzX21vZHVsZQogCi0gICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwotICAgIGVsc2U6Ci0gICAgICAgIEJZVEVDT0RFX1NVRkZJWEVTID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKLQogICAgICMgU2V0IHVwIHRoZSBzcGVjIGZvciBleGlzdGluZyBidWlsdGluL2Zyb3plbiBtb2R1bGVzLgogICAgIG1vZHVsZV90eXBlID0gdHlwZShzeXMpCiAgICAgZm9yIG5hbWUsIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5pdGVtcygpOgpAQCAtMjM5MCwzOSArMTEwNSwxNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc3BlYyA9IF9zcGVjX2Zyb21fbW9kdWxlKG1vZHVsZSwgbG9hZGVyKQotICAgICAgICAgICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQotICAgICAgICAgICAgbWV0aG9kcy5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCisgICAgICAgICAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQogCiAgICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCiAgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgZm9yIGJ1aWx0aW5fbmFtZSBpbiAoJ193YXJuaW5ncycsKToKICAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQogICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQogCi0gICAgIyBEaXJlY3RseSBsb2FkIHRoZSBvcyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KLSAgICBvc19kZXRhaWxzID0gKCdwb3NpeCcsIFsnLyddKSwgKCdudCcsIFsnXFwnLCAnLyddKQotICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKLSAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCi0gICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKLSAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KLSAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCi0gICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IF9idWlsdGluX2Zyb21fbmFtZShidWlsdGluX29zKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKLSAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX29zJywgb3NfbW9kdWxlKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcCcsIHBhdGhfc2VwKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcGFyYXRvcnMnLCAnJy5qb2luKHBhdGhfc2VwYXJhdG9ycykpCi0KICAgICAjIERpcmVjdGx5IGxvYWQgdGhlIF90aHJlYWQgbW9kdWxlIChuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcCkuCiAgICAgdHJ5OgogICAgICAgICB0aHJlYWRfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCdfdGhyZWFkJykKQEAgLTI0MzUsMjcgKzExMjgsMTUgQEAKICAgICB3ZWFrcmVmX21vZHVsZSA9IF9idWlsdGluX2Zyb21fbmFtZSgnX3dlYWtyZWYnKQogICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2Vha3JlZicsIHdlYWtyZWZfbW9kdWxlKQogCi0gICAgIyBEaXJlY3RseSBsb2FkIHRoZSB3aW5yZWcgbW9kdWxlIChuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcCkuCi0gICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgotICAgICAgICB3aW5yZWdfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCd3aW5yZWcnKQotICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3dpbnJlZycsIHdpbnJlZ19tb2R1bGUpCi0KLSAgICAjIENvbnN0YW50cwotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfcmVsYXhfY2FzZScsIF9tYWtlX3JlbGF4X2Nhc2UoKSkKLSAgICBFWFRFTlNJT05fU1VGRklYRVMuZXh0ZW5kKF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkpCi0gICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgotICAgICAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKLSAgICAgICAgaWYgJ19kLnB5ZCcgaW4gRVhURU5TSU9OX1NVRkZJWEVTOgotICAgICAgICAgICAgV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEID0gVHJ1ZQotCiAKIGRlZiBfaW5zdGFsbChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CiAgICAgIiIiSW5zdGFsbCBpbXBvcnRsaWIgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKICAgICBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpCi0gICAgc3VwcG9ydGVkX2xvYWRlcnMgPSBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKQotICAgIHN5cy5wYXRoX2hvb2tzLmV4dGVuZChbRmlsZUZpbmRlci5wYXRoX2hvb2soKnN1cHBvcnRlZF9sb2FkZXJzKV0pCisKICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCiAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCi0gICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6Ci0gICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKLSAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQorCisgICAgZ2xvYmFsIF9ib290c3RyYXBfZXh0ZXJuYWwKKyAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwKKyAgICBfYm9vdHN0cmFwX2V4dGVybmFsID0gX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwKKyAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbC5faW5zdGFsbChzeXMubW9kdWxlc1tfX25hbWVfX10pCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUwOGNlOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpAQCAtMCwwICsxLDE0MjYgQEAKKyIiIkNvcmUgaW1wbGVtZW50YXRpb24gb2YgcGF0aC1iYXNlZCBpbXBvcnQuCisKK1RoaXMgbW9kdWxlIGlzIE5PVCBtZWFudCB0byBiZSBkaXJlY3RseSBpbXBvcnRlZCEgSXQgaGFzIGJlZW4gZGVzaWduZWQgc3VjaAordGhhdCBpdCBjYW4gYmUgYm9vdHN0cmFwcGVkIGludG8gUHl0aG9uIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIEFzCitzdWNoIGl0IHJlcXVpcmVzIHRoZSBpbmplY3Rpb24gb2Ygc3BlY2lmaWMgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBpbiBvcmRlciB0bword29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCisKKyIiIgorIworIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1bgorIyBhIHRvcC1sZXZlbCBtYWtlIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24gb2YgdGhlIG1vZHVsZQorIyB1cGRhdGVkLiBOb3QgZG9pbmcgc28gd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIGFsbCBvdGhlcnMgd2hvIGRvbid0IGhhdmUgYSAuL3B5dGhvbiBhcm91bmQgdG8gZnJlZXplIHRoZSBtb2R1bGUKKyMgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21waWxhdGlvbi4KKyMKKworIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyMgV2hlbiBlZGl0aW5nIHRoaXMgY29kZSBiZSBhd2FyZSB0aGF0IGNvZGUgZXhlY3V0ZWQgYXQgaW1wb3J0IHRpbWUgQ0FOTk9UCisjIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbworIyBhbnl0aGluZyBzcGVjaWZpZWQgYXQgdGhlIGNsYXNzIGxldmVsLgorCisjIEJvb3RzdHJhcC1yZWxhdGVkIGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK19DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyA9ICd3aW4nLCAnY3lnd2luJywgJ2RhcndpbicKKworCitkZWYgX21ha2VfcmVsYXhfY2FzZSgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBiJ1BZVEhPTkNBU0VPSycgaW4gX29zLmVudmlyb24KKyAgICBlbHNlOgorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX3JlbGF4X2Nhc2UKKworCitkZWYgX3dfbG9uZyh4KToKKyAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4iIiIKKyAgICByZXR1cm4gKGludCh4KSAmIDB4RkZGRkZGRkYpLnRvX2J5dGVzKDQsICdsaXR0bGUnKQorCisKK2RlZiBfcl9sb25nKGludF9ieXRlcyk6CisgICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4iIiIKKyAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMoaW50X2J5dGVzLCAnbGl0dGxlJykKKworCitkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgorICAgIHJldHVybiBwYXRoX3NlcC5qb2luKFtwYXJ0LnJzdHJpcChwYXRoX3NlcGFyYXRvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIHBhdGhfcGFydHMgaWYgcGFydF0pCisKKworZGVmIF9wYXRoX3NwbGl0KHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0KCkuIiIiCisgICAgaWYgbGVuKHBhdGhfc2VwYXJhdG9ycykgPT0gMToKKyAgICAgICAgZnJvbnQsIF8sIHRhaWwgPSBwYXRoLnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgIGZvciB4IGluIHJldmVyc2VkKHBhdGgpOgorICAgICAgICBpZiB4IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIGZyb250LCB0YWlsID0gcGF0aC5yc3BsaXQoeCwgbWF4c3BsaXQ9MSkKKyAgICAgICAgICAgIHJldHVybiBmcm9udCwgdGFpbAorICAgIHJldHVybiAnJywgcGF0aAorCisKK2RlZiBfcGF0aF9zdGF0KHBhdGgpOgorICAgICIiIlN0YXQgdGhlIHBhdGguCisKKyAgICBNYWRlIGEgc2VwYXJhdGUgZnVuY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gb3ZlcnJpZGUgaW4gZXhwZXJpbWVudHMKKyAgICAoZS5nLiBjYWNoZSBzdGF0IHJlc3VsdHMpLgorCisgICAgIiIiCisgICAgcmV0dXJuIF9vcy5zdGF0KHBhdGgpCisKKworZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKKyAgICAiIiJUZXN0IHdoZXRoZXIgdGhlIHBhdGggaXMgdGhlIHNwZWNpZmllZCBtb2RlIHR5cGUuIiIiCisgICAgdHJ5OgorICAgICAgICBzdGF0X2luZm8gPSBfcGF0aF9zdGF0KHBhdGgpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiAoc3RhdF9pbmZvLnN0X21vZGUgJiAwbzE3MDAwMCkgPT0gbW9kZQorCisKK2RlZiBfcGF0aF9pc2ZpbGUocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNmaWxlLiIiIgorICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8xMDAwMDApCisKKworZGVmIF9wYXRoX2lzZGlyKHBhdGgpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzZGlyLiIiIgorICAgIGlmIG5vdCBwYXRoOgorICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCisgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzA0MDAwMCkKKworCitkZWYgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBtb2RlPTBvNjY2KToKKyAgICAiIiJCZXN0LWVmZm9ydCBmdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRvIGEgcGF0aCBhdG9taWNhbGx5LgorICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCisgICAgdGVtcG9yYXJ5IGZpbGUgaXMgYXR0ZW1wdGVkLiIiIgorICAgICMgaWQoKSBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgcHNldWRvLXJhbmRvbSBmaWxlbmFtZS4KKyAgICBwYXRoX3RtcCA9ICd7fS57fScuZm9ybWF0KHBhdGgsIGlkKHBhdGgpKQorICAgIGZkID0gX29zLm9wZW4ocGF0aF90bXAsCisgICAgICAgICAgICAgICAgICBfb3MuT19FWENMIHwgX29zLk9fQ1JFQVQgfCBfb3MuT19XUk9OTFksIG1vZGUgJiAwbzY2NikKKyAgICB0cnk6CisgICAgICAgICMgV2UgZmlyc3Qgd3JpdGUgZGF0YSB0byBhIHRlbXBvcmFyeSBmaWxlLCBhbmQgdGhlbiB1c2Ugb3MucmVwbGFjZSgpIHRvCisgICAgICAgICMgcGVyZm9ybSBhbiBhdG9taWMgcmVuYW1lLgorICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisgICAgICAgIF9vcy5yZXBsYWNlKHBhdGhfdG1wLCBwYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3MudW5saW5rKHBhdGhfdG1wKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UKKworCitfY29kZV90eXBlID0gdHlwZShfd3JpdGVfYXRvbWljLl9fY29kZV9fKQorCisKKyMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCisjIEl0IHNob3VsZCBjaGFuZ2UgZm9yIGVhY2ggaW5jb21wYXRpYmxlIGNoYW5nZSB0byB0aGUgYnl0ZWNvZGUuCisjCisjIFRoZSB2YWx1ZSBvZiBDUiBhbmQgTEYgaXMgaW5jb3Jwb3JhdGVkIHNvIGlmIHlvdSBldmVyIHJlYWQgb3Igd3JpdGUKKyMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCisjIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCisjCisjIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKKyMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgorIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KKyMKKyMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KKyMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQorIyAxMC4KKyMKKyMgU3RhcnRpbmcgd2l0aCB0aGUgYWRvcHRpb24gb2YgUEVQIDMxNDcgaW4gUHl0aG9uIDMuMiwgZXZlcnkgYnVtcCBpbiBtYWdpYworIyBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCisjIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCisjIHRoZSBtYWdpYyBudW1iZXIsIHlvdSBtdXN0IGFsc28gc2V0IGEgbmV3IHVuaXF1ZSBtYWdpYyB0YWcuICBHZW5lcmFsbHkgdGhpcworIyBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0CisjIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCisjIHRoYXQncyBjb21lIGJlZm9yZS4gIFRoZSB0YWdzIGFyZSBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLCBzdGFydGluZworIyB3aXRoIFB5dGhvbiAzLjJhMC4KKyMKKyMgS25vd24gdmFsdWVzOgorIyAgUHl0aG9uIDEuNTogICAyMDEyMQorIyAgUHl0aG9uIDEuNS4xOiAyMDEyMQorIyAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQorIyAgICAgUHl0aG9uIDEuNjogICA1MDQyOAorIyAgICAgUHl0aG9uIDIuMDogICA1MDgyMworIyAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMworIyAgICAgUHl0aG9uIDIuMTogICA2MDIwMgorIyAgICAgUHl0aG9uIDIuMS4xOiA2MDIwMgorIyAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgorIyAgICAgUHl0aG9uIDIuMjogICA2MDcxNworIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMQorIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQorIyAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKKyMgICAgIFB5dGhvbiAyLjRhMDogNjIwNDEKKyMgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKKyMgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwNzEKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCisjICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQorIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MiAoY2hhbmdlZCBXSVRIX0NMRUFOVVAgb3Bjb2RlKQorIyAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCisjICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKKyMgICAgIFB5dGhvbiAyLjVjMTogNjIxMjEgKGZpeCB3cm9uZyBsbm90YWIgd2l0aCBmb3IgbG9vcHMgYW5kCisjICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKKyMgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKKyMgICAgIFB5dGhvbiAyLjZhMDogNjIxNTEgKHBlZXBob2xlIG9wdGltaXphdGlvbnMgYW5kIFNUT1JFX01BUCBvcGNvZGUpCisjICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQorIyAgICAgUHl0aG9uIDIuN2EwOiA2MjE3MSAob3B0aW1pemUgbGlzdCBjb21wcmVoZW5zaW9ucy9jaGFuZ2UgTElTVF9BUFBFTkQpCisjICAgICBQeXRob24gMi43YTA6IDYyMTgxIChvcHRpbWl6ZSBjb25kaXRpb25hbCBicmFuY2hlczoKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIxOTEgKGludHJvZHVjZSBTRVRVUF9XSVRIKQorIyAgICAgUHl0aG9uIDIuN2EwICA2MjIwMSAoaW50cm9kdWNlIEJVSUxEX1NFVCkKKyMgICAgIFB5dGhvbiAyLjdhMCAgNjIyMTEgKGludHJvZHVjZSBNQVBfQUREIGFuZCBTRVRfQUREKQorIyAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAorIyAgICAgICAgICAgICAgICAgICAgMzAxMCAocmVtb3ZlZCBVTkFSWV9DT05WRVJUKQorIyAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQorIyAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCisjICAgICAgICAgICAgICAgICAgICAzMDQwIChhZGRlZCBzaWduYXR1cmUgYW5ub3RhdGlvbnMpCisjICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCisjICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQorIyAgICAgICAgICAgICAgICAgICAgMzA2MSAoc3RyaW5nIGxpdGVyYWxzIGJlY29tZSB1bmljb2RlKQorIyAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKKyMgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCisjICAgICAgICAgICAgICAgICAgICAzMDkxIChraWxsIHN0cjggaW50ZXJuaW5nKQorIyAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQorIyAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQorIyAgICAgUHl0aG9uIDMuMGE0OiAzMTExIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKS4KKyMgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQorIyAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6CisjICAgICAgICAgICAgIGNoYW5nZSBMSVNUX0FQUEVORCBhbmQgU0VUX0FERCwgYWRkIE1BUF9BREQpCisjICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgorIyAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisjICAgICBQeXRob24gMy4yYTA6IDMxNjAgKGFkZCBTRVRVUF9XSVRIKQorIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyMgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQorIyAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyMgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKKyMgICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCisjICAgICBQeXRob24gMy4zYTAgIDMyMDAgKF9fcXVhbG5hbWVfXyBhZGRlZCkKKyMgICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCisjICAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjNhNCAgMzIzMCAocmV2ZXJ0IGNoYW5nZXMgdG8gaW1wbGljaXQgX19jbGFzc19fIGNsb3N1cmUpCisjICAgICBQeXRob24gMy40YTEgIDMyNTAgKGV2YWx1YXRlIHBvc2l0aW9uYWwgZGVmYXVsdCBhcmd1bWVudHMgYmVmb3JlCisjICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZC1vbmx5IGRlZmF1bHRzKQorIyAgICAgUHl0aG9uIDMuNGExICAzMjYwIChhZGQgTE9BRF9DTEFTU0RFUkVGOyBhbGxvdyBsb2NhbHMgb2YgY2xhc3MgdG8gb3ZlcnJpZGUKKyMgICAgICAgICAgICAgICAgICAgICAgICBmcmVlIHZhcnMpCisjICAgICBQeXRob24gMy40YTEgIDMyNzAgKHZhcmlvdXMgdHdlYWtzIHRvIHRoZSBfX2NsYXNzX18gY2xvc3VyZSkKKyMgICAgIFB5dGhvbiAzLjRhMSAgMzI4MCAocmVtb3ZlIGltcGxpY2l0IGNsYXNzIGFyZ3VtZW50KQorIyAgICAgUHl0aG9uIDMuNGE0ICAzMjkwIChjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjRhNCAgMzMwMCAobW9yZSBjaGFuZ2VzIHRvIF9fcXVhbG5hbWVfXyBjb21wdXRhdGlvbikKKyMgICAgIFB5dGhvbiAzLjRyYzIgMzMxMCAoYWx0ZXIgX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQorIyAgICAgUHl0aG9uIDMuNWEwICAzMzIwIChtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3IpCisjICAgICBQeXRob24gMy41YjEgIDMzMzAgKFBFUCA0NDg6IEFkZGl0aW9uYWwgVW5wYWNraW5nIEdlbmVyYWxpemF0aW9ucykKKyMgICAgIFB5dGhvbiAzLjViMiAgMzM0MCAoZml4IGRpY3Rpb25hcnkgZGlzcGxheSBldmFsdWF0aW9uIG9yZGVyICMxMTIwNSkKKyMgICAgIFB5dGhvbiAzLjViMiAgMzM1MCAoYWRkIEdFVF9ZSUVMRF9GUk9NX0lURVIgb3Bjb2RlICMyNDQwMCkKKyMKKyMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubworIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorIyBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKS4KKworTUFHSUNfTlVNQkVSID0gKDMzNTApLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK19SQVdfTUFHSUNfTlVNQkVSID0gaW50LmZyb21fYnl0ZXMoTUFHSUNfTlVNQkVSLCAnbGl0dGxlJykgICMgRm9yIGltcG9ydC5jCisKK19QWUNBQ0hFID0gJ19fcHljYWNoZV9fJworX09QVCA9ICdvcHQtJworCitTT1VSQ0VfU1VGRklYRVMgPSBbJy5weSddICAjIF9zZXR1cCgpIGFkZHMgLnB5dyBhcyBuZWVkZWQuCisKK0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KKyMgRGVwcmVjYXRlZC4KK0RFQlVHX0JZVEVDT0RFX1NVRkZJWEVTID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTID0gQllURUNPREVfU1VGRklYRVMKKworZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUsICosIG9wdGltaXphdGlvbj1Ob25lKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMgZmlsZS4KKworICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQorICAgIC5weWMgZmlsZSBjYWxjdWxhdGVkIGFzIGlmIHRoZSAucHkgZmlsZSB3ZXJlIGltcG9ydGVkLgorCisgICAgVGhlICdvcHRpbWl6YXRpb24nIHBhcmFtZXRlciBjb250cm9scyB0aGUgcHJlc3VtZWQgb3B0aW1pemF0aW9uIGxldmVsIG9mCisgICAgdGhlIGJ5dGVjb2RlIGZpbGUuIElmICdvcHRpbWl6YXRpb24nIGlzIG5vdCBOb25lLCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uCisgICAgb2YgdGhlIGFyZ3VtZW50IGlzIHRha2VuIGFuZCB2ZXJpZmllZCB0byBiZSBhbHBoYW51bWVyaWMgKGVsc2UgVmFsdWVFcnJvcgorICAgIGlzIHJhaXNlZCkuCisKKyAgICBUaGUgZGVidWdfb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQuIElmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLAorICAgIGEgVHJ1ZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvIHRoZSBlbXB0eSBzdHJpbmcKKyAgICB3aGlsZSBhIEZhbHNlIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGluZyAnb3B0aW1pemF0aW9uJyB0byAnMScuCisKKyAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lOgorICAgICAgICBfd2FybmluZ3Mud2FybigndGhlIGRlYnVnX292ZXJyaWRlIHBhcmFtZXRlciBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAgICAgICAgICAgICAiJ29wdGltaXphdGlvbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgaWYgb3B0aW1pemF0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbWVzc2FnZSA9ICdkZWJ1Z19vdmVycmlkZSBvciBvcHRpbWl6YXRpb24gbXVzdCBiZSBzZXQgdG8gTm9uZScKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQorICAgICAgICBvcHRpbWl6YXRpb24gPSAnJyBpZiBkZWJ1Z19vdmVycmlkZSBlbHNlIDEKKyAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBiYXNlLCBzZXAsIHJlc3QgPSB0YWlsLnJwYXJ0aXRpb24oJy4nKQorICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBhbG1vc3RfZmlsZW5hbWUgPSAnJy5qb2luKFsoYmFzZSBpZiBiYXNlIGVsc2UgcmVzdCksIHNlcCwgdGFnXSkKKyAgICBpZiBvcHRpbWl6YXRpb24gaXMgTm9uZToKKyAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplID09IDA6CisgICAgICAgICAgICBvcHRpbWl6YXRpb24gPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3B0aW1pemF0aW9uID0gc3lzLmZsYWdzLm9wdGltaXplCisgICAgb3B0aW1pemF0aW9uID0gc3RyKG9wdGltaXphdGlvbikKKyAgICBpZiBvcHRpbWl6YXRpb24gIT0gJyc6CisgICAgICAgIGlmIG5vdCBvcHRpbWl6YXRpb24uaXNhbG51bSgpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYWxwaGFudW1lcmljJy5mb3JtYXQob3B0aW1pemF0aW9uKSkKKyAgICAgICAgYWxtb3N0X2ZpbGVuYW1lID0gJ3t9Lnt9e30nLmZvcm1hdChhbG1vc3RfZmlsZW5hbWUsIF9PUFQsIG9wdGltaXphdGlvbikKKyAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBfUFlDQUNIRSwgYWxtb3N0X2ZpbGVuYW1lICsgQllURUNPREVfU1VGRklYRVNbMF0pCisKKworZGVmIHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KKworICAgIFRoZSAucHljIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bworICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMgZmlsZS4gIElmIHBhdGggZG9lcworICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3LzQ4OCBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCisgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCisgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQorICAgIGRvdF9jb3VudCA9IHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKQorICAgIGlmIGRvdF9jb3VudCBub3QgaW4gezIsIDN9OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgb3IgMyBkb3RzIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KHB5Y2FjaGVfZmlsZW5hbWUpKQorICAgIGVsaWYgZG90X2NvdW50ID09IDM6CisgICAgICAgIG9wdGltaXphdGlvbiA9IHB5Y2FjaGVfZmlsZW5hbWUucnNwbGl0KCcuJywgMilbLTJdCisgICAgICAgIGlmIG5vdCBvcHRpbWl6YXRpb24uc3RhcnRzd2l0aChfT1BUKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9wdGltaXphdGlvbiBwb3J0aW9uIG9mIGZpbGVuYW1lIGRvZXMgbm90IHN0YXJ0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggeyFyfSIuZm9ybWF0KF9PUFQpKQorICAgICAgICBvcHRfbGV2ZWwgPSBvcHRpbWl6YXRpb25bbGVuKF9PUFQpOl0KKyAgICAgICAgaWYgbm90IG9wdF9sZXZlbC5pc2FsbnVtKCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvcHRpbWl6YXRpb24gbGV2ZWwgeyFyfSBpcyBub3QgYW4gYWxwaGFudW1lcmljICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIi5mb3JtYXQob3B0aW1pemF0aW9uKSkKKyAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCisKKworZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCisgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgorCisgICAgIiIiCisgICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFydGl0aW9uKCcuJykKKyAgICBpZiBub3QgcmVzdCBvciBleHRlbnNpb24ubG93ZXIoKVstMzotMV0gIT0gJ3B5JzoKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKKyAgICB0cnk6CisgICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlX2Zyb21fY2FjaGUoYnl0ZWNvZGVfcGF0aCkKKyAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBzb3VyY2VfcGF0aCA9IGJ5dGVjb2RlX3BhdGhbOi0xXQorICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3BhdGgpIGVsc2UgYnl0ZWNvZGVfcGF0aAorCisKK2RlZiBfZ2V0X2NhY2hlZChmaWxlbmFtZSk6CisgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgodHVwbGUoU09VUkNFX1NVRkZJWEVTKSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBjYWNoZV9mcm9tX3NvdXJjZShmaWxlbmFtZSkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShCWVRFQ09ERV9TVUZGSVhFUykpOgorICAgICAgICByZXR1cm4gZmlsZW5hbWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfY2FsY19tb2RlKHBhdGgpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgbW9kZSBwZXJtaXNzaW9ucyBmb3IgYSBieXRlY29kZSBmaWxlLiIiIgorICAgIHRyeToKKyAgICAgICAgbW9kZSA9IF9wYXRoX3N0YXQocGF0aCkuc3RfbW9kZQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBtb2RlID0gMG82NjYKKyAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCisgICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQorICAgIG1vZGUgfD0gMG8yMDAKKyAgICByZXR1cm4gbW9kZQorCisKK2RlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6CisgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgorICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKKyAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQorICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBiZWluZyByZXF1ZXN0ZWQgbWF0Y2hlcyB0aGUgb25lIHRoZQorICAgIGxvYWRlciBjYW4gaGFuZGxlLgorCisgICAgVGhlIGZpcnN0IGFyZ3VtZW50IChzZWxmKSBtdXN0IGRlZmluZSBfbmFtZSB3aGljaCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgY29tcGFyZWQgYWdhaW5zdC4gSWYgdGhlIGNvbXBhcmlzb24gZmFpbHMgdGhlbiBJbXBvcnRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBkZWYgX2NoZWNrX25hbWVfd3JhcHBlcihzZWxmLCBuYW1lPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgZWxpZiBzZWxmLm5hbWUgIT0gbmFtZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXIgZm9yICVzIGNhbm5vdCBoYW5kbGUgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgbmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgcmV0dXJuIG1ldGhvZChzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpCisgICAgdHJ5OgorICAgICAgICBfd3JhcCA9IF9ib290c3RyYXAuX3dyYXAKKyAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAjIFhYWCB5dWNrCisgICAgICAgIGRlZiBfd3JhcChuZXcsIG9sZCk6CisgICAgICAgICAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nXToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CisgICAgICAgICAgICAgICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCisgICAgICAgICAgICBuZXcuX19kaWN0X18udXBkYXRlKG9sZC5fX2RpY3RfXykKKyAgICBfd3JhcChfY2hlY2tfbmFtZV93cmFwcGVyLCBtZXRob2QpCisgICAgcmV0dXJuIF9jaGVja19uYW1lX3dyYXBwZXIKKworCitkZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgorICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSBieSBkZWxlZ2F0aW5nIHRvCisgICAgc2VsZi5maW5kX2xvYWRlcigpLgorCisgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBmaW5kZXIuZmluZF9zcGVjKCkuCisKKyAgICAiIiIKKyAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCisgICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCisgICAgIyByZXR1cm4gTm9uZS4KKyAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKKyAgICAgICAgbXNnID0gJ05vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fJworICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKKyAgICByZXR1cm4gbG9hZGVyCisKKworZGVmIF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwgc291cmNlX3N0YXRzPU5vbmUsIG5hbWU9Tm9uZSwgcGF0aD1Ob25lKToKKyAgICAiIiJWYWxpZGF0ZSB0aGUgaGVhZGVyIG9mIHRoZSBwYXNzZWQtaW4gYnl0ZWNvZGUgYWdhaW5zdCBzb3VyY2Vfc3RhdHMgKGlmCisgICAgZ2l2ZW4pIGFuZCByZXR1cm5pbmcgdGhlIGJ5dGVjb2RlIHRoYXQgY2FuIGJlIGNvbXBpbGVkIGJ5IGNvbXBpbGUoKS4KKworICAgIEFsbCBvdGhlciBhcmd1bWVudHMgYXJlIHVzZWQgdG8gZW5oYW5jZSBlcnJvciByZXBvcnRpbmcuCisKKyAgICBJbXBvcnRFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgbWFnaWMgbnVtYmVyIGlzIGluY29ycmVjdCBvciB0aGUgYnl0ZWNvZGUgaXMKKyAgICBmb3VuZCB0byBiZSBzdGFsZS4gRU9GRXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIGRhdGEgaXMgZm91bmQgdG8gYmUKKyAgICB0cnVuY2F0ZWQuCisKKyAgICAiIiIKKyAgICBleGNfZGV0YWlscyA9IHt9CisgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgZXhjX2RldGFpbHNbJ25hbWUnXSA9IG5hbWUKKyAgICBlbHNlOgorICAgICAgICAjIFRvIHByZXZlbnQgaGF2aW5nIHRvIG1ha2UgYWxsIG1lc3NhZ2VzIGhhdmUgYSBjb25kaXRpb25hbCBuYW1lLgorICAgICAgICBuYW1lID0gJzxieXRlY29kZT4nCisgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgZXhjX2RldGFpbHNbJ3BhdGgnXSA9IHBhdGgKKyAgICBtYWdpYyA9IGRhdGFbOjRdCisgICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQorICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQorICAgIGlmIG1hZ2ljICE9IE1BR0lDX05VTUJFUjoKKyAgICAgICAgbWVzc2FnZSA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBtYWdpYykKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQorICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6CisgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKKyAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfc2l6ZSkgIT0gc291cmNlX3NpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipleGNfZGV0YWlscykKKyAgICByZXR1cm4gZGF0YVsxMjpdCisKKworZGVmIF9jb21waWxlX2J5dGVjb2RlKGRhdGEsIG5hbWU9Tm9uZSwgYnl0ZWNvZGVfcGF0aD1Ob25lLCBzb3VyY2VfcGF0aD1Ob25lKToKKyAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKKyAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQorICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6CisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGNvZGUsIHNvdXJjZV9wYXRoKQorICAgICAgICByZXR1cm4gY29kZQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdOb24tY29kZSBvYmplY3QgaW4geyFyfScuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPW5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKKworZGVmIF9jb2RlX3RvX2J5dGVjb2RlKGNvZGUsIG10aW1lPTAsIHNvdXJjZV9zaXplPTApOgorICAgICIiIkNvbXBpbGUgYSBjb2RlIG9iamVjdCBpbnRvIGJ5dGVjb2RlIGZvciB3cml0aW5nIG91dCB0byBhIGJ5dGUtY29tcGlsZWQKKyAgICBmaWxlLiIiIgorICAgIGRhdGEgPSBieXRlYXJyYXkoTUFHSUNfTlVNQkVSKQorICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobXRpbWUpKQorICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX3NpemUpKQorICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZSkpCisgICAgcmV0dXJuIGRhdGEKKworCitkZWYgZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpOgorICAgICIiIkRlY29kZSBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiB0aGUgc3RyaW5nLgorCisgICAgVW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydCBpcyB1c2VkIGluIHRoZSBkZWNvZGluZy4KKyAgICAiIiIKKyAgICBpbXBvcnQgdG9rZW5pemUgICMgVG8gYXZvaWQgYm9vdHN0cmFwIGlzc3Vlcy4KKyAgICBzb3VyY2VfYnl0ZXNfcmVhZGxpbmUgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCisgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2Rpbmcoc291cmNlX2J5dGVzX3JlYWRsaW5lKQorICAgIG5ld2xpbmVfZGVjb2RlciA9IF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpCisgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisKKworIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitfUE9QVUxBVEUgPSBvYmplY3QoKQorCisKK2RlZiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBsb2NhdGlvbj1Ob25lLCAqLCBsb2FkZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1fUE9QVUxBVEUpOgorICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIGEgZmlsZSBsb2NhdGlvbi4KKworICAgIFRvIGluZGljYXRlIHRoYXQgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIHNldAorICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIHRvIGEgbGlzdCBvZiBkaXJlY3RvcnkgcGF0aHMuICBBbgorICAgIGVtcHR5IGxpc3QgaXMgc3VmZmljaWVudCwgdGhvdWdoIGl0cyBub3Qgb3RoZXJ3aXNlIHVzZWZ1bCB0byB0aGUKKyAgICBpbXBvcnQgc3lzdGVtLgorCisgICAgVGhlIGxvYWRlciBtdXN0IHRha2UgYSBzcGVjIGFzIGl0cyBvbmx5IF9faW5pdF9fKCkgYXJnLgorCisgICAgIiIiCisgICAgaWYgbG9jYXRpb24gaXMgTm9uZToKKyAgICAgICAgIyBUaGUgY2FsbGVyIG1heSBzaW1wbHkgd2FudCBhIHBhcnRpYWxseSBwb3B1bGF0ZWQgbG9jYXRpb24tCisgICAgICAgICMgb3JpZW50ZWQgc3BlYy4gIFNvIHdlIHNldCB0aGUgbG9jYXRpb24gdG8gYSBib2d1cyB2YWx1ZSBhbmQKKyAgICAgICAgIyBmaWxsIGluIGFzIG11Y2ggYXMgd2UgY2FuLgorICAgICAgICBsb2NhdGlvbiA9ICc8dW5rbm93bj4nCisgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnZ2V0X2ZpbGVuYW1lJyk6CisgICAgICAgICAgICAjIEV4ZWN1dGlvbkxvYWRlcgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKKyAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90CisgICAgIyB2YWxpZC4gIEhvd2V2ZXIsIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSBvZiB0ZXN0aW5nIHNpbmNlIGFuCisgICAgIyBpbmRpcmVjdCBsb2NhdGlvbiAoZS5nLiBhIHppcCBmaWxlIG9yIFVSTCkgd2lsbCBsb29rIGxpa2UgYQorICAgICMgbm9uLWV4aXN0ZW50IGZpbGUgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKG5hbWUsIGxvYWRlciwgb3JpZ2luPWxvY2F0aW9uKQorICAgIHNwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKKworICAgICMgUGljayBhIGxvYWRlciBpZiBvbmUgd2Fzbid0IHByb3ZpZGVkLgorICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICBmb3IgbG9hZGVyX2NsYXNzLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGxvY2F0aW9uLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKG5hbWUsIGxvY2F0aW9uKQorICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyID0gbG9hZGVyCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAjIFNldCBzdWJtb2R1bGVfc2VhcmNoX3BhdGhzIGFwcHJvcHJpYXRlbHkuCisgICAgaWYgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgX1BPUFVMQVRFOgorICAgICAgICAjIENoZWNrIHRoZSBsb2FkZXIuCisgICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnaXNfcGFja2FnZScpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBsb2FkZXIuaXNfcGFja2FnZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgaXNfcGFja2FnZToKKyAgICAgICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtdCisgICAgZWxzZToKKyAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9PSBbXToKKyAgICAgICAgaWYgbG9jYXRpb246CisgICAgICAgICAgICBkaXJuYW1lID0gX3BhdGhfc3BsaXQobG9jYXRpb24pWzBdCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zLmFwcGVuZChkaXJuYW1lKQorCisgICAgcmV0dXJuIHNwZWMKKworCisjIExvYWRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIiIiCisKKyAgICBSRUdJU1RSWV9LRVkgPSAoCisgICAgICAgICdTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259JworICAgICAgICAnXFxNb2R1bGVzXFx7ZnVsbG5hbWV9JykKKyAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCisgICAgICAgICdTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259JworICAgICAgICAnXFxNb2R1bGVzXFx7ZnVsbG5hbWV9XFxEZWJ1ZycpCisgICAgREVCVUdfQlVJTEQgPSBGYWxzZSAgIyBDaGFuZ2VkIGluIF9zZXR1cCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX29wZW5fcmVnaXN0cnkoY2xzLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCBrZXkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NlYXJjaF9yZWdpc3RyeShjbHMsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgY2xzLkRFQlVHX0JVSUxEOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWV9ERUJVRworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQorICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgorICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICcnKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgZmlsZXBhdGggPSBjbHMuX3NlYXJjaF9yZWdpc3RyeShmdWxsbmFtZSkKKyAgICAgICAgaWYgZmlsZXBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9wYXRoX3N0YXQoZmlsZXBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgICAgICAgICBpZiBmaWxlcGF0aC5lbmRzd2l0aCh0dXBsZShzdWZmaXhlcykpOgorICAgICAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLnNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXIoZnVsbG5hbWUsIGZpbGVwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1maWxlcGF0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgX0xvYWRlckJhc2ljczoKKworICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAorICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKKyAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCisgICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQorICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KKyAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiVXNlIGRlZmF1bHQgc2VtYW50aWNzIGZvciBtb2R1bGUgY3JlYXRpb24uIiIiCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiRXhlY3V0ZSB0aGUgbW9kdWxlLiIiIgorICAgICAgICBjb2RlID0gc2VsZi5nZXRfY29kZShtb2R1bGUuX19uYW1lX18pCisgICAgICAgIGlmIGNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdjYW5ub3QgbG9hZCBtb2R1bGUgeyFyfSB3aGVuIGdldF9jb2RlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgTm9uZScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykpCisgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKKworCitjbGFzcyBTb3VyY2VMb2FkZXIoX0xvYWRlckJhc2ljcyk6CisKKyAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgKGFuIGludCkgZm9yIHRoZQorICAgICAgICBzcGVjaWZpZWQgcGF0aCwgd2hlcmUgcGF0aCBpcyBhIHN0ci4KKworICAgICAgICBSYWlzZXMgSU9FcnJvciB3aGVuIHRoZSBwYXRoIGNhbm5vdCBiZSBoYW5kbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgSU9FcnJvcgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCByZXR1cm5pbmcgYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc3BlY2lmaWVkIHBhdGgKKyAgICAgICAgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KKworICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGNhY2hlX3BhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorCisgICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCisgICAgICAgICIiIgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgZGVsZWdhdGUgdG8gc2V0X2RhdGEoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQorCisgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorICAgICAgICAiIiIKKworCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9zb3VyY2UuIiIiCisgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCisgICAgICAgIHJldHVybiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcykKKworICAgIGRlZiBzb3VyY2VfdG9fY29kZShzZWxmLCBkYXRhLCBwYXRoLCAqLCBfb3B0aW1pemU9LTEpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNvZGUgb2JqZWN0IGNvbXBpbGVkIGZyb20gc291cmNlLgorCisgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgY2FuIGJlIGFueSBvYmplY3QgdHlwZSB0aGF0IGNvbXBpbGUoKSBzdXBwb3J0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwgZGF0YSwgcGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlLCBvcHRpbWl6ZT1fb3B0aW1pemUpCisKKyAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgorCisgICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9zdGF0cyB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKKyAgICAgICAgYnl0ZWNvZGUsIHNldF9kYXRhIG11c3QgYWxzbyBiZSBpbXBsZW1lbnRlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKKyAgICAgICAgc291cmNlX210aW1lID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9zdGF0cz1zdCwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKKyAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKKyAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCisgICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKKworCitjbGFzcyBGaWxlTG9hZGVyOgorCisgICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0CisgICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCisgICAgICAgIGZpbmRlci4iIiIKKyAgICAgICAgc2VsZi5uYW1lID0gZnVsbG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIG1ldGhvZCBpcyBmb3IgdGhlIG5hbWUgY2hlY2suCisgICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIG9mIHN1cGVyIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCisgICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCisgICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAncicpIGFzIGZpbGU6CisgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKKworCitjbGFzcyBTb3VyY2VGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIFNvdXJjZUxvYWRlcik6CisKKyAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VMb2FkZXIgdXNpbmcgdGhlIGZpbGUgc3lzdGVtLiIiIgorCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgorICAgICAgICBzdCA9IF9wYXRoX3N0YXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQorCisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSk6CisgICAgICAgICMgQWRhcHQgYmV0d2VlbiB0aGUgdHdvIEFQSXMKKyAgICAgICAgbW9kZSA9IF9jYWxjX21vZGUoc291cmNlX3BhdGgpCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEsIF9tb2RlPW1vZGUpCisKKyAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSwgKiwgX21vZGU9MG82NjYpOgorICAgICAgICAiIiJXcml0ZSBieXRlcyBkYXRhIHRvIGEgZmlsZS4iIiIKKyAgICAgICAgcGFyZW50LCBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgICAgIHBhdGhfcGFydHMgPSBbXQorICAgICAgICAjIEZpZ3VyZSBvdXQgd2hhdCBkaXJlY3RvcmllcyBhcmUgbWlzc2luZy4KKyAgICAgICAgd2hpbGUgcGFyZW50IGFuZCBub3QgX3BhdGhfaXNkaXIocGFyZW50KToKKyAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKKyAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCisgICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6CisgICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CisgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKKworCitjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKKworICAgICIiIkxvYWRlciB3aGljaCBoYW5kbGVzIHNvdXJjZWxlc3MgZmlsZSBpbXBvcnRzLiIiIgorCisgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQorICAgICAgICBieXRlc19kYXRhID0gX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPXBhdGgpCisgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLCBieXRlY29kZV9wYXRoPXBhdGgpCisKKyAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIHRoZXJlIGlzIG5vIHNvdXJjZSBjb2RlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisKKyMgRmlsbGVkIGluIGJ5IF9zZXR1cCgpLgorRVhURU5TSU9OX1NVRkZJWEVTID0gW10KKworCitjbGFzcyBFeHRlbnNpb25GaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorCisgICAgIiIiTG9hZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4KKworICAgIFRoZSBjb25zdHJ1Y3RvciBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggRmlsZUZpbmRlci4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fID09IG90aGVyLl9fY2xhc3NfXyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLm5hbWUpIF4gaGFzaChzZWxmLnBhdGgpCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIHVuaXRpYWxpemVkIGV4dGVuc2lvbiBtb2R1bGUiIiIKKyAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAorICAgICAgICAgICAgX2ltcC5jcmVhdGVfZHluYW1pYywgc3BlYykKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMubmFtZSwgc2VsZi5wYXRoKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlIiIiCisgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYucGF0aCkKKworICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGV4dGVuc2lvbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgorICAgICAgICBmaWxlX25hbWUgPSBfcGF0aF9zcGxpdChzZWxmLnBhdGgpWzFdCisgICAgICAgIHJldHVybiBhbnkoZmlsZV9uYW1lID09ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIEVYVEVOU0lPTl9TVUZGSVhFUykKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2Fubm90IGNyZWF0ZSBhIGNvZGUgb2JqZWN0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBleHRlbnNpb24gbW9kdWxlcyBoYXZlIG5vIHNvdXJjZSBjb2RlLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQF9jaGVja19uYW1lCisgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisKK2NsYXNzIF9OYW1lc3BhY2VQYXRoOgorICAgICIiIlJlcHJlc2VudHMgYSBuYW1lc3BhY2UgcGFja2FnZSdzIHBhdGguICBJdCB1c2VzIHRoZSBtb2R1bGUgbmFtZQorICAgIHRvIGZpbmQgaXRzIHBhcmVudCBtb2R1bGUsIGFuZCBmcm9tIHRoZXJlIGl0IGxvb2tzIHVwIHRoZSBwYXJlbnQncworICAgIF9fcGF0aF9fLiAgV2hlbiB0aGlzIGNoYW5nZXMsIHRoZSBtb2R1bGUncyBvd24gcGF0aCBpcyByZWNvbXB1dGVkLAorICAgIHVzaW5nIHBhdGhfZmluZGVyLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgcGFyZW50IG1vZHVsZSdzIHBhdGgKKyAgICBpcyBzeXMucGF0aC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXRoLCBwYXRoX2ZpbmRlcik6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYuX2xhc3RfcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkKKyAgICAgICAgc2VsZi5fcGF0aF9maW5kZXIgPSBwYXRoX2ZpbmRlcgorCisgICAgZGVmIF9maW5kX3BhcmVudF9wYXRoX25hbWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgdHVwbGUgb2YgKHBhcmVudC1tb2R1bGUtbmFtZSwgcGFyZW50LXBhdGgtYXR0ci1uYW1lKSIiIgorICAgICAgICBwYXJlbnQsIGRvdCwgbWUgPSBzZWxmLl9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICBpZiBkb3QgPT0gJyc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB0b3AtbGV2ZWwgbW9kdWxlLiBzeXMucGF0aCBjb250YWlucyB0aGUgcGFyZW50IHBhdGguCisgICAgICAgICAgICByZXR1cm4gJ3N5cycsICdwYXRoJworICAgICAgICAjIE5vdCBhIHRvcC1sZXZlbCBtb2R1bGUuIHBhcmVudC1tb2R1bGUuX19wYXRoX18gY29udGFpbnMgdGhlCisgICAgICAgICMgIHBhcmVudCBwYXRoLgorICAgICAgICByZXR1cm4gcGFyZW50LCAnX19wYXRoX18nCisKKyAgICBkZWYgX2dldF9wYXJlbnRfcGF0aChzZWxmKToKKyAgICAgICAgcGFyZW50X21vZHVsZV9uYW1lLCBwYXRoX2F0dHJfbmFtZSA9IHNlbGYuX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1twYXJlbnRfbW9kdWxlX25hbWVdLCBwYXRoX2F0dHJfbmFtZSkKKworICAgIGRlZiBfcmVjYWxjdWxhdGUoc2VsZik6CisgICAgICAgICMgSWYgdGhlIHBhcmVudCdzIHBhdGggaGFzIGNoYW5nZWQsIHJlY2FsY3VsYXRlIF9wYXRoCisgICAgICAgIHBhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpICMgTWFrZSBhIGNvcHkKKyAgICAgICAgaWYgcGFyZW50X3BhdGggIT0gc2VsZi5fbGFzdF9wYXJlbnRfcGF0aDoKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLl9wYXRoX2ZpbmRlcihzZWxmLl9uYW1lLCBwYXJlbnRfcGF0aCkKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IG5vIGNoYW5nZXMgYXJlIG1hZGUgaWYgYSBsb2FkZXIgaXMgcmV0dXJuZWQsIGJ1dCB3ZQorICAgICAgICAgICAgIyAgZG8gcmVtZW1iZXIgdGhlIG5ldyBwYXJlbnQgcGF0aAorICAgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnX05hbWVzcGFjZVBhdGgoeyFyfSknLmZvcm1hdChzZWxmLl9wYXRoKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKKyAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKKworCisjIFdlIHVzZSB0aGlzIGV4Y2x1c2l2ZWx5IGluIG1vZHVsZV9mcm9tX3NwZWMoKSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KK2NsYXNzIF9OYW1lc3BhY2VMb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgIiIiUmV0dXJuIHJlcHIgZm9yIHRoZSBtb2R1bGUuCisKKyAgICAgICAgVGhlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVGhlIGltcG9ydCBtYWNoaW5lcnkgZG9lcyB0aGUgam9iIGl0c2VsZi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKG5hbWVzcGFjZSk+Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBjb21waWxlKCcnLCAnPHN0cmluZz4nLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQorCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICIiIlVzZSBkZWZhdWx0IHNlbWFudGljcyBmb3IgbW9kdWxlIGNyZWF0aW9uLiIiIgorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQorCisKKyMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGF0aEZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy5wYXRoIGFuZCBwYWNrYWdlIF9fcGF0aF9fIGF0dHJpYnV0ZXMuIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoY2xzKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIHBhdGggZW50cnkgZmluZGVycworICAgICAgICBzdG9yZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVzICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgICAgIGZvciBmaW5kZXIgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgorICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCisKKyAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc3lzLnBhdGhfaG9va3MgaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMucGF0aF9ob29rczoKKyAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBob29rKHBhdGgpCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoKToKKyAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKyAgICAgICAgSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyCisgICAgICAgIGFuZCBjYWNoZSBpdC4gSWYgbm8gZmluZGVyIGlzIGF2YWlsYWJsZSwgc3RvcmUgTm9uZS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcGF0aCA9PSAnJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgIyBEb24ndCBjYWNoZSB0aGUgZmFpbHVyZSBhcyB0aGUgY3dkIGNhbiBlYXNpbHkgY2hhbmdlIHRvCisgICAgICAgICAgICAgICAgIyBhIHZhbGlkIGRpcmVjdG9yeSBsYXRlciBvbi4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaW5kZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKKyAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCisgICAgICAgIHJldHVybiBmaW5kZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGVnYWN5X2dldF9zcGVjKGNscywgZnVsbG5hbWUsIGZpbmRlcik6CisgICAgICAgICMgVGhpcyB3b3VsZCBiZSBhIGdvb2QgcGxhY2UgZm9yIGEgRGVwcmVjYXRpb25XYXJuaW5nIGlmCisgICAgICAgICMgd2UgZW5kZWQgdXAgZ29pbmcgdGhhdCByb3V0ZS4KKyAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQorICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQorICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gcG9ydGlvbnMKKyAgICAgICAgcmV0dXJuIHNwZWMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJGaW5kIHRoZSBsb2FkZXIgb3IgbmFtZXNwYWNlX3BhdGggZm9yIHRoaXMgbW9kdWxlL3BhY2thZ2UgbmFtZS4iIiIKKyAgICAgICAgIyBJZiB0aGlzIGVuZHMgdXAgYmVpbmcgYSBuYW1lc3BhY2UgcGFja2FnZSwgbmFtZXNwYWNlX3BhdGggaXMKKyAgICAgICAgIyAgdGhlIGxpc3Qgb2YgcGF0aHMgdGhhdCB3aWxsIGJlY29tZSBpdHMgX19wYXRoX18KKyAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBbXQorICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVudHJ5LCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCisgICAgICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX3NwZWMnKToKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMoZnVsbG5hbWUsIHRhcmdldCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzcGVjID0gY2xzLl9sZWdhY3lfZ2V0X3NwZWMoZnVsbG5hbWUsIGZpbmRlcikKKyAgICAgICAgICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCisgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICAgICAgaWYgcG9ydGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3NwZWMgbWlzc2luZyBsb2FkZXInKQorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCisgICAgICAgICAgICAgICAgIyAgY3JlYXRlIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFuZCBjb250aW51ZSBpdGVyYXRpbmcKKyAgICAgICAgICAgICAgICAjICBvbiBwYXRoLgorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAorICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCisgICAgICAgIHNwZWMgPSBjbHMuX2dldF9zcGVjKGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQpCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgICAgICAgaWYgbmFtZXNwYWNlX3BhdGg6CisgICAgICAgICAgICAgICAgIyBXZSBmb3VuZCBhdCBsZWFzdCBvbmUgbmFtZXNwYWNlIHBhdGguICBSZXR1cm4gYQorICAgICAgICAgICAgICAgICMgIHNwZWMgd2hpY2ggY2FuIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgc3BlYy5vcmlnaW4gPSAnbmFtZXNwYWNlJworICAgICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBfTmFtZXNwYWNlUGF0aChmdWxsbmFtZSwgbmFtZXNwYWNlX3BhdGgsIGNscy5fZ2V0X3NwZWMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgIiIiZmluZCB0aGUgbW9kdWxlIG9uIHN5cy5wYXRoIG9yICdwYXRoJyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyCisKKworY2xhc3MgRmlsZUZpbmRlcjoKKworICAgICIiIkZpbGUtYmFzZWQgZmluZGVyLgorCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpsb2FkZXJfZGV0YWlscyk6CisgICAgICAgICIiIkluaXRpYWxpemUgd2l0aCB0aGUgcGF0aCB0byBzZWFyY2ggb24gYW5kIGEgdmFyaWFibGUgbnVtYmVyIG9mCisgICAgICAgIDItdHVwbGVzIGNvbnRhaW5pbmcgdGhlIGxvYWRlciBhbmQgdGhlIGZpbGUgc3VmZml4ZXMgdGhlIGxvYWRlcgorICAgICAgICByZWNvZ25pemVzLiIiIgorICAgICAgICBsb2FkZXJzID0gW10KKyAgICAgICAgZm9yIGxvYWRlciwgc3VmZml4ZXMgaW4gbG9hZGVyX2RldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiSW52YWxpZGF0ZSB0aGUgZGlyZWN0b3J5IG10aW1lLiIiIgorICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gLTEKKworICAgIGZpbmRfbW9kdWxlID0gX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSwgb3IgdGhlIG5hbWVzcGFjZQorICAgICAgICBwYWNrYWdlIHBvcnRpb25zLiBSZXR1cm5zIChsb2FkZXIsIGxpc3Qtb2YtcG9ydGlvbnMpLgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZmluZF9zcGVjKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgc3BlYyA9IHNlbGYuZmluZF9zcGVjKGZ1bGxuYW1lKQorICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgW10KKyAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIG9yIFtdCisKKyAgICBkZWYgX2dldF9zcGVjKHNlbGYsIGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIHBhdGgsIHNtc2wsIHRhcmdldCk6CisgICAgICAgIGxvYWRlciA9IGxvYWRlcl9jbGFzcyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgcmV0dXJuIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKGZ1bGxuYW1lLCBwYXRoLCBsb2FkZXI9bG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9c21zbCkKKworICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCisgICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuIiIiCisgICAgICAgIGlzX25hbWVzcGFjZSA9IEZhbHNlCisgICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX3BhdGhfc3RhdChzZWxmLnBhdGggb3IgX29zLmdldGN3ZCgpKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgorICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIFtiYXNlX3BhdGhdLCB0YXJnZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWYgYSBuYW1lc3BhY2UgcGFja2FnZSwgcmV0dXJuIHRoZSBwYXRoIGlmIHdlIGRvbid0CisgICAgICAgICAgICAgICAgIyAgZmluZCBhIG1vZHVsZSBpbiB0aGUgbmV4dCBzZWN0aW9uLgorICAgICAgICAgICAgICAgIGlzX25hbWVzcGFjZSA9IF9wYXRoX2lzZGlyKGJhc2VfcGF0aCkKKyAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCisgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgorICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9Jy5mb3JtYXQoZnVsbF9wYXRoKSwgdmVyYm9zaXR5PTIpCisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIE5vbmUsIHRhcmdldCkKKyAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScuZm9ybWF0KGJhc2VfcGF0aCkpCisgICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQorICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCisgICAgICAgICAgICByZXR1cm4gc3BlYworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9maWxsX2NhY2hlKHNlbGYpOgorICAgICAgICAiIiJGaWxsIHRoZSBjYWNoZSBvZiBwb3RlbnRpYWwgbW9kdWxlcyBhbmQgcGFja2FnZXMgZm9yIHRoaXMgZGlyZWN0b3J5LiIiIgorICAgICAgICBwYXRoID0gc2VsZi5wYXRoCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnRlbnRzID0gX29zLmxpc3RkaXIocGF0aCBvciBfb3MuZ2V0Y3dkKCkpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgTm90QURpcmVjdG9yeUVycm9yKToKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBlaXRoZXIgYmVlbiByZW1vdmVkLCB0dXJuZWQgaW50byBhIGZpbGUsIG9yIG1hZGUKKyAgICAgICAgICAgICMgdW5yZWFkYWJsZS4KKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0ge2ZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzfQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhdGhfaG9vayhjbHMsICpsb2FkZXJfZGV0YWlscyk6CisgICAgICAgICIiIkEgY2xhc3MgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjbG9zdXJlIHRvIHVzZSBvbiBzeXMucGF0aF9ob29rCisgICAgICAgIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzcGVjaWZpZWQgbG9hZGVycyBhbmQgdGhlIHBhdGgKKyAgICAgICAgY2FsbGVkIG9uIHRoZSBjbG9zdXJlLgorCisgICAgICAgIElmIHRoZSBwYXRoIGNhbGxlZCBvbiB0aGUgY2xvc3VyZSBpcyBub3QgYSBkaXJlY3RvcnksIEltcG9ydEVycm9yIGlzCisgICAgICAgIHJhaXNlZC4KKworICAgICAgICAiIiIKKyAgICAgICAgZGVmIHBhdGhfaG9va19mb3JfRmlsZUZpbmRlcihwYXRoKToKKyAgICAgICAgICAgICIiIlBhdGggaG9vayBmb3IgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLiIiIgorICAgICAgICAgICAgaWYgbm90IF9wYXRoX2lzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQnLCBwYXRoPXBhdGgpCisgICAgICAgICAgICByZXR1cm4gY2xzKHBhdGgsICpsb2FkZXJfZGV0YWlscykKKworICAgICAgICByZXR1cm4gcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnRmlsZUZpbmRlcih7IXJ9KScuZm9ybWF0KHNlbGYucGF0aCkKKworCisjIEltcG9ydCBzZXR1cCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9maXhfdXBfbW9kdWxlKG5zLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lPU5vbmUpOgorICAgICMgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkuCisgICAgbG9hZGVyID0gbnMuZ2V0KCdfX2xvYWRlcl9fJykKKyAgICBzcGVjID0gbnMuZ2V0KCdfX3NwZWNfXycpCisgICAgaWYgbm90IGxvYWRlcjoKKyAgICAgICAgaWYgc3BlYzoKKyAgICAgICAgICAgIGxvYWRlciA9IHNwZWMubG9hZGVyCisgICAgICAgIGVsaWYgcGF0aG5hbWUgPT0gY3BhdGhuYW1lOgorICAgICAgICAgICAgbG9hZGVyID0gU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQorICAgIGlmIG5vdCBzcGVjOgorICAgICAgICBzcGVjID0gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCisgICAgdHJ5OgorICAgICAgICBuc1snX19zcGVjX18nXSA9IHNwZWMKKyAgICAgICAgbnNbJ19fbG9hZGVyX18nXSA9IGxvYWRlcgorICAgICAgICBuc1snX19maWxlX18nXSA9IHBhdGhuYW1lCisgICAgICAgIG5zWydfX2NhY2hlZF9fJ10gPSBjcGF0aG5hbWUKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAjIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydC4KKyAgICAgICAgcGFzcworCisKK2RlZiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBmaWxlLWJhc2VkIG1vZHVsZSBsb2FkZXJzLgorCisgICAgRWFjaCBpdGVtIGlzIGEgdHVwbGUgKGxvYWRlciwgc3VmZml4ZXMpLgorICAgICIiIgorICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCisgICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCisgICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCisKKworZGVmIF9zZXR1cChfYm9vdHN0cmFwX21vZHVsZSk6CisgICAgIiIiU2V0dXAgdGhlIHBhdGgtYmFzZWQgaW1wb3J0ZXJzIGZvciBpbXBvcnRsaWIgYnkgaW1wb3J0aW5nIG5lZWRlZAorICAgIGJ1aWx0LWluIG1vZHVsZXMgYW5kIGluamVjdGluZyB0aGVtIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKKyAgICBPdGhlciBjb21wb25lbnRzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgY29yZSBib290c3RyYXAgbW9kdWxlLgorCisgICAgIiIiCisgICAgZ2xvYmFsIHN5cywgX2ltcCwgX2Jvb3RzdHJhcAorICAgIF9ib290c3RyYXAgPSBfYm9vdHN0cmFwX21vZHVsZQorICAgIHN5cyA9IF9ib290c3RyYXAuc3lzCisgICAgX2ltcCA9IF9ib290c3RyYXAuX2ltcAorCisgICAgIyBEaXJlY3RseSBsb2FkIGJ1aWx0LWluIG1vZHVsZXMgbmVlZGVkIGR1cmluZyBib290c3RyYXAuCisgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgICAgIGlmIGJ1aWx0aW5fbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBvcyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICBvc19kZXRhaWxzID0gKCdwb3NpeCcsIFsnLyddKSwgKCdudCcsIFsnXFwnLCAnLyddKQorICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKKyAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCisgICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKKyAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KKyAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdpbXBvcnRsaWIgcmVxdWlyZXMgcG9zaXggb3IgbnQnKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfb3MnLCBvc19tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsICcnLmpvaW4ocGF0aF9zZXBhcmF0b3JzKSkKKworICAgICMgRGlyZWN0bHkgbG9hZCB0aGUgX3RocmVhZCBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICB0cnk6CisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBfYm9vdHN0cmFwLl9idWlsdGluX2Zyb21fbmFtZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ190aHJlYWQnLCB0aHJlYWRfbW9kdWxlKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBfd2Vha3JlZiBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICB3ZWFrcmVmX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKCdfd2Vha3JlZicpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisKKyAgICAjIERpcmVjdGx5IGxvYWQgdGhlIHdpbnJlZyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIHdpbnJlZ19tb2R1bGUgPSBfYm9vdHN0cmFwLl9idWlsdGluX2Zyb21fbmFtZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgIyBDb25zdGFudHMKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3JlbGF4X2Nhc2UnLCBfbWFrZV9yZWxheF9jYXNlKCkpCisgICAgRVhURU5TSU9OX1NVRkZJWEVTLmV4dGVuZChfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpKQorICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgU09VUkNFX1NVRkZJWEVTLmFwcGVuZCgnLnB5dycpCisgICAgICAgIGlmICdfZC5weWQnIGluIEVYVEVOU0lPTl9TVUZGSVhFUzoKKyAgICAgICAgICAgIFdpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRCA9IFRydWUKKworCitkZWYgX2luc3RhbGwoX2Jvb3RzdHJhcF9tb2R1bGUpOgorICAgICIiIkluc3RhbGwgdGhlIHBhdGgtYmFzZWQgaW1wb3J0IGNvbXBvbmVudHMuIiIiCisgICAgX3NldHVwKF9ib290c3RyYXBfbW9kdWxlKQorICAgIHN1cHBvcnRlZF9sb2FkZXJzID0gX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkKKyAgICBzeXMucGF0aF9ob29rcy5leHRlbmQoW0ZpbGVGaW5kZXIucGF0aF9ob29rKCpzdXBwb3J0ZWRfbG9hZGVycyldKQorICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKKworICAgICMgWFhYIFdlIGV4cG9zZSBhIGNvdXBsZSBvZiBjbGFzc2VzIGluIF9ib290c3RyYXAgZm9yIHRoZSBzYWtlIG9mCisgICAgIyBhIHNldHVwdG9vbHMgYnVnIChodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2lzc3VlLzM3OCkuCisgICAgX2Jvb3RzdHJhcF9tb2R1bGUuRmlsZUZpbmRlciA9IEZpbGVGaW5kZXIKKyAgICBfYm9vdHN0cmFwX21vZHVsZS5Tb3VyY2VGaWxlTG9hZGVyID0gU291cmNlRmlsZUxvYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCA1NThhYmQzLi4xMWFmMjJkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxMiArMSwxOCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIC4gaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKIGZyb20gLiBpbXBvcnQgbWFjaGluZXJ5CiB0cnk6CiAgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCisjICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAogZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICBpZiBleGMubmFtZSAhPSAnX2Zyb3plbl9pbXBvcnRsaWInOgogICAgICAgICByYWlzZQogICAgIF9mcm96ZW5faW1wb3J0bGliID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAorZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCA9IF9ib290c3RyYXBfZXh0ZXJuYWwKIGltcG9ydCBhYmMKIAogCkBAIC0xNCw3ICsyMCwxMCBAQAogICAgIGZvciBjbHMgaW4gY2xhc3NlczoKICAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGNscykKICAgICAgICAgaWYgX2Zyb3plbl9pbXBvcnRsaWIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYiwgY2xzLl9fbmFtZV9fKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgZnJvemVuX2NscyA9IGdldGF0dHIoX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwsIGNscy5fX25hbWVfXykKICAgICAgICAgICAgIGFic3RyYWN0X2Nscy5yZWdpc3Rlcihmcm96ZW5fY2xzKQogCiAKQEAgLTEwMiw3ICsxMTEsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtdCiAKLSAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX2ZpbmRfbW9kdWxlX3NoaW0KIAogICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKICAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KQEAgLTEyMiwxMSArMTMxLDggQEAKICAgICAgICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yIGlmIGFueXRoaW5nIHByZXZlbnRzIGl0CiAgICAgICAgIGZyb20gY3JlYXRpbmcgYSBuZXcgbW9kdWxlLiAgSXQgbWF5IHJldHVybiBOb25lIHRvIGluZGljYXRlCiAgICAgICAgIHRoYXQgdGhlIHNwZWMgc2hvdWxkIGNyZWF0ZSB0aGUgbmV3IG1vZHVsZS4KLQotICAgICAgICBjcmVhdGVfbW9kdWxlKCkgaXMgb3B0aW9uYWwuCi0KICAgICAgICAgIiIiCi0gICAgICAgICMgQnkgZGVmYXVsdCwgZGVmZXIgdG8gX1NwZWNNZXRob2RzLmNyZWF0ZSgpIGZvciB0aGUgbmV3IG1vZHVsZS4KKyAgICAgICAgIyBCeSBkZWZhdWx0LCBkZWZlciB0byBkZWZhdWx0IHNlbWFudGljcyBmb3IgdGhlIG5ldyBtb2R1bGUuCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAjIFdlIGRvbid0IGRlZmluZSBleGVjX21vZHVsZSgpIGhlcmUgc2luY2UgdGhhdCB3b3VsZCBicmVhawpAQCAtMjE3LDE1ICsyMjMsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAKLSAgICBkZWYgc291cmNlX3RvX2NvZGUoc2VsZiwgZGF0YSwgcGF0aD0nPHN0cmluZz4nKToKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHNvdXJjZV90b19jb2RlKGRhdGEsIHBhdGg9JzxzdHJpbmc+Jyk6CiAgICAgICAgICIiIkNvbXBpbGUgJ2RhdGEnIGludG8gYSBjb2RlIG9iamVjdC4KIAogICAgICAgICBUaGUgJ2RhdGEnIGFyZ3VtZW50IGNhbiBiZSBhbnl0aGluZyB0aGF0IGNvbXBpbGUoKSBjYW4gaGFuZGxlLiBUaGUncGF0aCcKICAgICAgICAgYXJndW1lbnQgc2hvdWxkIGJlIHdoZXJlIHRoZSBkYXRhIHdhcyByZXRyaWV2ZWQgKHdoZW4gYXBwbGljYWJsZSkuIiIiCiAgICAgICAgIHJldHVybiBjb21waWxlKGRhdGEsIHBhdGgsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCiAKLSAgICBleGVjX21vZHVsZSA9IF9ib290c3RyYXAuX0xvYWRlckJhc2ljcy5leGVjX21vZHVsZQotICAgIGxvYWRfbW9kdWxlID0gX2Jvb3RzdHJhcC5fTG9hZGVyQmFzaWNzLmxvYWRfbW9kdWxlCisgICAgZXhlY19tb2R1bGUgPSBfYm9vdHN0cmFwX2V4dGVybmFsLl9Mb2FkZXJCYXNpY3MuZXhlY19tb2R1bGUKKyAgICBsb2FkX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX0xvYWRlckJhc2ljcy5sb2FkX21vZHVsZQogCiBfcmVnaXN0ZXIoSW5zcGVjdExvYWRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQogCkBAIC0yNjcsNyArMjc0LDcgQEAKIF9yZWdpc3RlcihFeGVjdXRpb25Mb2FkZXIsIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKLWNsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcF9leHRlcm5hbC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCiAgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCkBAIC0yNzYsNyArMjgzLDcgQEAKICAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogCi1jbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgorY2xhc3MgU291cmNlTG9hZGVyKF9ib290c3RyYXBfZXh0ZXJuYWwuU291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRpbmcgc291cmNlIGNvZGUgKGFuZCBvcHRpb25hbGx5IGFueQogICAgIGNvcnJlc3BvbmRpbmcgYnl0ZWNvZGUpLgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCAyZTFiMmQ3Li4xYjJiNWM5IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMiwxOCArMiwxOCBAQAogCiBpbXBvcnQgX2ltcAogCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCAoU09VUkNFX1NVRkZJWEVTLCBERUJVR19CWVRFQ09ERV9TVUZGSVhFUywKLSAgICAgICAgICAgICAgICAgICAgICAgICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEVOU0lPTl9TVUZGSVhFUykKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IE1vZHVsZVNwZWMKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEJ1aWx0aW5JbXBvcnRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRnJvemVuSW1wb3J0ZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgUGF0aEZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRmlsZUZpbmRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IEV4dGVuc2lvbkZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IChTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgIEVYVEVOU0lPTl9TVUZGSVhFUykKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IFdpbmRvd3NSZWdpc3RyeUZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgUGF0aEZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgRmlsZUZpbmRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IEV4dGVuc2lvbkZpbGVMb2FkZXIKIAogCiBkZWYgYWxsX3N1ZmZpeGVzKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggNmQ3M2IxZC4uMWRiZmYyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMSwxNyArMSwxOSBAQAogIiIiVXRpbGl0eSBjb2RlIGZvciBjb25zdHJ1Y3RpbmcgaW1wb3J0ZXJzLCBldGMuIiIiCi0KLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IE1BR0lDX05VTUJFUgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IGRlY29kZV9zb3VyY2UKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBzcGVjX2Zyb21fbG9hZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbgorZnJvbSAuIGltcG9ydCBhYmMKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IG1vZHVsZV9mcm9tX3NwZWMKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IHNwZWNfZnJvbV9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9maW5kX3NwZWMKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IE1BR0lDX05VTUJFUgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IGRlY29kZV9zb3VyY2UKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbgogCiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKQEAgLTU0LDcgKzU2LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKQEAgLTk0LDcgKzk2LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX3NwZWNfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc3BlYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKQEAgLTIwMCwzICsyMDIsOTQgQEAKICAgICAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgbW9kdWxlLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgorCisKK2NsYXNzIF9Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisKKyAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB0byBhbGxvdyBfX2NsYXNzX18gbWFuaXB1bGF0aW9uLiIiIgorCisKK2NsYXNzIF9MYXp5TW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgorCisgICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCisKKyAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgIiIiVHJpZ2dlciB0aGUgbG9hZCBvZiB0aGUgbW9kdWxlIGFuZCByZXR1cm4gdGhlIGF0dHJpYnV0ZS4iIiIKKyAgICAgICAgIyBBbGwgbW9kdWxlIG1ldGFkYXRhIG11c3QgYmUgZ2FybmVyZWQgZnJvbSBfX3NwZWNfXyBpbiBvcmRlciB0byBhdm9pZAorICAgICAgICAjIHVzaW5nIG11dGF0ZWQgdmFsdWVzLgorICAgICAgICAjIFN0b3AgdHJpZ2dlcmluZyB0aGlzIG1ldGhvZC4KKyAgICAgICAgc2VsZi5fX2NsYXNzX18gPSBfTW9kdWxlCisgICAgICAgICMgR2V0IHRoZSBvcmlnaW5hbCBuYW1lIHRvIG1ha2Ugc3VyZSBubyBvYmplY3Qgc3Vic3RpdHV0aW9uIG9jY3VycmVkCisgICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgIG9yaWdpbmFsX25hbWUgPSBzZWxmLl9fc3BlY19fLm5hbWUKKyAgICAgICAgIyBGaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIHdlcmUgbXV0YXRlZCBiZXR3ZWVuIHRoZSBjcmVhdGlvbgorICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KKyAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlCisgICAgICAgIGF0dHJzX25vdyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGF0dHJzX25vdy5pdGVtcygpOgorICAgICAgICAgICAgIyBDb2RlIHRoYXQgc2V0IHRoZSBhdHRyaWJ1dGUgbWF5IGhhdmUga2VwdCBhIHJlZmVyZW5jZSB0byB0aGUKKyAgICAgICAgICAgICMgYXNzaWduZWQgb2JqZWN0LCBtYWtpbmcgaWRlbnRpdHkgbW9yZSBpbXBvcnRhbnQgdGhhbiBlcXVhbGl0eS4KKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gYXR0cnNfdGhlbjoKKyAgICAgICAgICAgICAgICBhdHRyc191cGRhdGVkW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgZWxpZiBpZChhdHRyc19ub3dba2V5XSkgIT0gaWQoYXR0cnNfdGhlbltrZXldKToKKyAgICAgICAgICAgICAgICBhdHRyc191cGRhdGVkW2tleV0gPSB2YWx1ZQorICAgICAgICBzZWxmLl9fc3BlY19fLmxvYWRlci5leGVjX21vZHVsZShzZWxmKQorICAgICAgICAjIElmIGV4ZWNfbW9kdWxlKCkgd2FzIHVzZWQgZGlyZWN0bHkgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoZSBtb2R1bGUKKyAgICAgICAgIyBvYmplY3Qgd2FzIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgorICAgICAgICBpZiBvcmlnaW5hbF9uYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgorICAgICAgICAgICAgICAgIG1zZyA9ICgnbW9kdWxlIG9iamVjdCBmb3IgeyFyfSBzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdkdXJpbmcgYSBsYXp5IGxvYWQnKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cuZm9ybWF0KG9yaWdpbmFsX25hbWUpKQorICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgorICAgICAgICAjIGxvYWRpbmcgc2l0dWF0aW9uLgorICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShhdHRyc191cGRhdGVkKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBhdHRyKQorCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAiIiJUcmlnZ2VyIHRoZSBsb2FkIGFuZCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0aW9uLiIiIgorICAgICAgICAjIFRvIHRyaWdnZXIgdGhlIGxvYWQgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXR0cmlidXRlCisgICAgICAgICMgZG9lc24ndCBleGlzdC4KKyAgICAgICAgc2VsZi5fX2dldGF0dHJpYnV0ZV9fKGF0dHIpCisgICAgICAgIGRlbGF0dHIoc2VsZiwgYXR0cikKKworCitjbGFzcyBMYXp5TG9hZGVyKGFiYy5Mb2FkZXIpOgorCisgICAgIiIiQSBsb2FkZXIgdGhhdCBjcmVhdGVzIGEgbW9kdWxlIHdoaWNoIGRlZmVycyBsb2FkaW5nIHVudGlsIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcik6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKGxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xvYWRlciBtdXN0IGRlZmluZSBleGVjX21vZHVsZSgpJykKKyAgICAgICAgZWxpZiBoYXNhdHRyKGxvYWRlci5fX2NsYXNzX18sICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICAgICBpZiBhYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGUgIT0gbG9hZGVyLl9fY2xhc3NfXy5jcmVhdGVfbW9kdWxlOgorICAgICAgICAgICAgICAgICMgT25seSBjYXJlIGlmIGNyZWF0ZV9tb2R1bGUoKSBpcyBvdmVycmlkZGVuIGluIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgICAgICAjIGltcG9ydGxpYi5hYmMuTG9hZGVyLgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbG9hZGVyIGNhbm5vdCBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmYWN0b3J5KGNscywgbG9hZGVyKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgY2FsbGFibGUgd2hpY2ggcmV0dXJucyB0aGUgZWFnZXIgbG9hZGVyIG1hZGUgbGF6eS4iIiIKKyAgICAgICAgY2xzLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKKyAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IGNscyhsb2FkZXIoKmFyZ3MsICoqa3dhcmdzKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2FkZXIpOgorICAgICAgICBzZWxmLl9fY2hlY2tfZWFnZXJfbG9hZGVyKGxvYWRlcikKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKKworICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAiIiJDcmVhdGUgYSBtb2R1bGUgd2hpY2ggY2FuIGhhdmUgaXRzIF9fY2xhc3NfXyBtYW5pcHVsYXRlZC4iIiIKKyAgICAgICAgcmV0dXJuIF9Nb2R1bGUoc3BlYy5uYW1lKQorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIk1ha2UgdGhlIG1vZHVsZSBsb2FkIGxhemlseS4iIiIKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IHNlbGYubG9hZGVyCisgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZi5sb2FkZXIKKyAgICAgICAgIyBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGRlZXAtY29weWluZyBhcyB0cnlpbmcgdG8gc2V0IGFuIGF0dHJpYnV0ZQorICAgICAgICAjIG9uIGFuIG9iamVjdCB3b3VsZCBoYXZlIHRyaWdnZXJlZCB0aGUgbG9hZCwKKyAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCisgICAgICAgICMgdHJ5aW5nIHRvIGFjY2VzcyBtb2R1bGUuX19zcGVjX18uCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIG1vZHVsZS5fX2NsYXNzX18gPSBfTGF6eU1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL2luc3BlY3QucHkgYi9MaWIvaW5zcGVjdC5weQppbmRleCA0Mjk4ZGU2Li5iZjRmODdkIDEwMDY0NAotLS0gYS9MaWIvaW5zcGVjdC5weQorKysgYi9MaWIvaW5zcGVjdC5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKIAogICAgIGdldGFyZ3NwZWMoKSwgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKLSAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24tMzAwMCBmZWF0dXJlcworICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGZlYXR1cmVzCiAgICAgZm9ybWF0YXJnc3BlYygpLCBmb3JtYXRhcmd2YWx1ZXMoKSAtIGZvcm1hdCBhbiBhcmd1bWVudCBzcGVjCiAgICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwogICAgIGN1cnJlbnRmcmFtZSgpIC0gZ2V0IHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lCkBAIC0zMiw2ICszMiw5IEBACiAgICAgICAgICAgICAgICdZdXJ5IFNlbGl2YW5vdiA8eXNlbGl2YW5vdkBzcHJ5bWl4LmNvbT4nKQogCiBpbXBvcnQgYXN0CitpbXBvcnQgZGlzCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgZW51bQogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKQEAgLTQ4LDE4ICs1MSwxMCBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgT3JkZXJlZERpY3QKIAogIyBDcmVhdGUgY29uc3RhbnRzIGZvciB0aGUgY29tcGlsZXIgZmxhZ3MgaW4gSW5jbHVkZS9jb2RlLmgKLSMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uLCBidXQgZmFsbAotIyBiYWNrIHRvIGhhcmQtY29kaW5nIHNvIHRoZSBkZXBlbmRlbmN5IGlzIG9wdGlvbmFsCi10cnk6Ci0gICAgZnJvbSBkaXMgaW1wb3J0IENPTVBJTEVSX0ZMQUdfTkFNRVMgYXMgX2ZsYWdfbmFtZXMKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBDT19PUFRJTUlaRUQsIENPX05FV0xPQ0FMUyA9IDB4MSwgMHgyCi0gICAgQ09fVkFSQVJHUywgQ09fVkFSS0VZV09SRFMgPSAweDQsIDB4OAotICAgIENPX05FU1RFRCwgQ09fR0VORVJBVE9SLCBDT19OT0ZSRUUgPSAweDEwLCAweDIwLCAweDQwCi1lbHNlOgotICAgIG1vZF9kaWN0ID0gZ2xvYmFscygpCi0gICAgZm9yIGssIHYgaW4gX2ZsYWdfbmFtZXMuaXRlbXMoKToKLSAgICAgICAgbW9kX2RpY3RbIkNPXyIgKyB2XSA9IGsKKyMgV2UgdHJ5IHRvIGdldCB0aGVtIGZyb20gZGlzIHRvIGF2b2lkIGR1cGxpY2F0aW9uCittb2RfZGljdCA9IGdsb2JhbHMoKQorZm9yIGssIHYgaW4gZGlzLkNPTVBJTEVSX0ZMQUdfTkFNRVMuaXRlbXMoKToKKyAgICBtb2RfZGljdFsiQ09fIiArIHZdID0gawogCiAjIFNlZSBJbmNsdWRlL29iamVjdC5oCiBUUEZMQUdTX0lTX0FCU1RSQUNUID0gMSA8PCAyMApAQCAtMTgyLDYgKzE3NywxNSBAQAogICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCiAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKQogCitkZWYgaXNjb3JvdXRpbmVmdW5jdGlvbihvYmplY3QpOgorICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCisKKyAgICBDb3JvdXRpbmUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4LAorICAgIG9yIGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGggInR5cGVzLmNvcm91dGluZSIuCisgICAgIiIiCisgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19DT1JPVVRJTkUpCisKIGRlZiBpc2dlbmVyYXRvcihvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCiAKQEAgLTE5OSw2ICsyMDMsMTcgQEAKICAgICAgICAgdGhyb3cgICAgICAgICAgIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGluc2lkZSB0aGUgZ2VuZXJhdG9yIiIiCiAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5HZW5lcmF0b3JUeXBlKQogCitkZWYgaXNjb3JvdXRpbmUob2JqZWN0KToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lLiIiIgorICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQ29yb3V0aW5lVHlwZSkKKworZGVmIGlzYXdhaXRhYmxlKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIHRydWUgaXMgb2JqZWN0IGNhbiBiZSBwYXNzZWQgdG8gYW4gYGBhd2FpdGBgIGV4cHJlc3Npb24uIiIiCisgICAgcmV0dXJuIChpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQ29yb3V0aW5lVHlwZSkgb3IKKyAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5HZW5lcmF0b3JUeXBlKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuZ2lfY29kZS5jb19mbGFncyAmIENPX0lURVJBQkxFX0NPUk9VVElORSBvcgorICAgICAgICAgICAgaXNpbnN0YW5jZShvYmplY3QsIGNvbGxlY3Rpb25zLmFiYy5Bd2FpdGFibGUpKQorCiBkZWYgaXN0cmFjZWJhY2sob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdHJhY2ViYWNrLgogCkBAIC00NjcsNiArNDgyLDc0IEBACiAgICAgZXhwbGluZSA9IGxpbmUuZXhwYW5kdGFicygpCiAgICAgcmV0dXJuIGxlbihleHBsaW5lKSAtIGxlbihleHBsaW5lLmxzdHJpcCgpKQogCitkZWYgX2ZpbmRjbGFzcyhmdW5jKToKKyAgICBjbHMgPSBzeXMubW9kdWxlcy5nZXQoZnVuYy5fX21vZHVsZV9fKQorICAgIGlmIGNscyBpcyBOb25lOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGZvciBuYW1lIGluIGZ1bmMuX19xdWFsbmFtZV9fLnNwbGl0KCcuJylbOi0xXToKKyAgICAgICAgY2xzID0gZ2V0YXR0cihjbHMsIG5hbWUpCisgICAgaWYgbm90IGlzY2xhc3MoY2xzKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm4gY2xzCisKK2RlZiBfZmluZGRvYyhvYmopOgorICAgIGlmIGlzY2xhc3Mob2JqKToKKyAgICAgICAgZm9yIGJhc2UgaW4gb2JqLl9fbXJvX186CisgICAgICAgICAgICBpZiBiYXNlIGlzIG5vdCBvYmplY3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkb2MgPSBiYXNlLl9fZG9jX18KKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgZG9jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9jCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBpZiBpc21ldGhvZChvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fZnVuY19fLl9fbmFtZV9fCisgICAgICAgIHNlbGYgPSBvYmouX19zZWxmX18KKyAgICAgICAgaWYgKGlzY2xhc3Moc2VsZikgYW5kCisgICAgICAgICAgICBnZXRhdHRyKGdldGF0dHIoc2VsZiwgbmFtZSwgTm9uZSksICdfX2Z1bmNfXycpIGlzIG9iai5fX2Z1bmNfXyk6CisgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCisgICAgICAgICAgICBjbHMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgIGVsaWYgaXNmdW5jdGlvbihvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCisgICAgICAgIGNscyA9IF9maW5kY2xhc3Mob2JqKQorICAgICAgICBpZiBjbHMgaXMgTm9uZSBvciBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgZWxpZiBpc2J1aWx0aW4ob2JqKToKKyAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXworICAgICAgICBzZWxmID0gb2JqLl9fc2VsZl9fCisgICAgICAgIGlmIChpc2NsYXNzKHNlbGYpIGFuZAorICAgICAgICAgICAgc2VsZi5fX3F1YWxuYW1lX18gKyAnLicgKyBuYW1lID09IG9iai5fX3F1YWxuYW1lX18pOgorICAgICAgICAgICAgIyBjbGFzc21ldGhvZAorICAgICAgICAgICAgY2xzID0gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICBlbGlmIGlzbWV0aG9kZGVzY3JpcHRvcihvYmopIG9yIGlzZGF0YWRlc2NyaXB0b3Iob2JqKToKKyAgICAgICAgbmFtZSA9IG9iai5fX25hbWVfXworICAgICAgICBjbHMgPSBvYmouX19vYmpjbGFzc19fCisgICAgICAgIGlmIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBwcm9wZXJ0eSk6CisgICAgICAgIGZ1bmMgPSBmLmZnZXQKKyAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgY2xzID0gX2ZpbmRjbGFzcyhmdW5jKQorICAgICAgICBpZiBjbHMgaXMgTm9uZSBvciBnZXRhdHRyKGNscywgbmFtZSkgaXMgbm90IG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZvciBiYXNlIGluIGNscy5fX21yb19fOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkb2MgPSBnZXRhdHRyKGJhc2UsIG5hbWUpLl9fZG9jX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgZG9jIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRvYworICAgIHJldHVybiBOb25lCisKIGRlZiBnZXRkb2Mob2JqZWN0KToKICAgICAiIiJHZXQgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIGZvciBhbiBvYmplY3QuCiAKQEAgLTQ3Nyw2ICs1NjAsMTEgQEAKICAgICAgICAgZG9jID0gb2JqZWN0Ll9fZG9jX18KICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIHJldHVybiBOb25lCisgICAgaWYgZG9jIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRvYyA9IF9maW5kZG9jKG9iamVjdCkKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZG9jLCBzdHIpOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHJldHVybiBjbGVhbmRvYyhkb2MpCkBAIC03MTAsNyArNzk4LDcgQEAKICAgICAgICAgaWYgbm90IGhhc2F0dHIob2JqZWN0LCAnY29fZmlyc3RsaW5lbm8nKToKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRpb24nKQogICAgICAgICBsbnVtID0gb2JqZWN0LmNvX2ZpcnN0bGluZW5vIC0gMQotICAgICAgICBwYXQgPSByZS5jb21waWxlKHInXihccypkZWZccyl8KC4qKD88IVx3KWxhbWJkYSg6fFxzKSl8XihccypAKScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocideKFxzKmRlZlxzKXwoXHMqYXN5bmNccytkZWZccyl8KC4qKD88IVx3KWxhbWJkYSg6fFxzKSl8XihccypAKScpCiAgICAgICAgIHdoaWxlIGxudW0gPiAwOgogICAgICAgICAgICAgaWYgcGF0Lm1hdGNoKGxpbmVzW2xudW1dKTogYnJlYWsKICAgICAgICAgICAgIGxudW0gPSBsbnVtIC0gMQpAQCAtNzcxLDIxICs4NTksMzcgQEAKICAgICAgICAgc2VsZi5pc2xhbWJkYSA9IEZhbHNlCiAgICAgICAgIHNlbGYuc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYucGFzc2xpbmUgPSBGYWxzZQorICAgICAgICBzZWxmLmluZGVjb3JhdG9yID0gRmFsc2UKKyAgICAgICAgc2VsZi5kZWNvcmF0b3JoYXNhcmdzID0gRmFsc2UKICAgICAgICAgc2VsZi5sYXN0ID0gMQogCiAgICAgZGVmIHRva2VuZWF0ZXIoc2VsZiwgdHlwZSwgdG9rZW4sIHNyb3djb2wsIGVyb3djb2wsIGxpbmUpOgotICAgICAgICBpZiBub3Qgc2VsZi5zdGFydGVkOgorICAgICAgICBpZiBub3Qgc2VsZi5zdGFydGVkIGFuZCBub3Qgc2VsZi5pbmRlY29yYXRvcjoKKyAgICAgICAgICAgICMgc2tpcCBhbnkgZGVjb3JhdG9ycworICAgICAgICAgICAgaWYgdG9rZW4gPT0gIkAiOgorICAgICAgICAgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBUcnVlCiAgICAgICAgICAgICAjIGxvb2sgZm9yIHRoZSBmaXJzdCAiZGVmIiwgImNsYXNzIiBvciAibGFtYmRhIgotICAgICAgICAgICAgaWYgdG9rZW4gaW4gKCJkZWYiLCAiY2xhc3MiLCAibGFtYmRhIik6CisgICAgICAgICAgICBlbGlmIHRva2VuIGluICgiZGVmIiwgImNsYXNzIiwgImxhbWJkYSIpOgogICAgICAgICAgICAgICAgIGlmIHRva2VuID09ICJsYW1iZGEiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmlzbGFtYmRhID0gVHJ1ZQogICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRlZCA9IFRydWUKICAgICAgICAgICAgIHNlbGYucGFzc2xpbmUgPSBUcnVlICAgICMgc2tpcCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lCisgICAgICAgIGVsaWYgdG9rZW4gPT0gIigiOgorICAgICAgICAgICAgaWYgc2VsZi5pbmRlY29yYXRvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmRlY29yYXRvcmhhc2FyZ3MgPSBUcnVlCisgICAgICAgIGVsaWYgdG9rZW4gPT0gIikiOgorICAgICAgICAgICAgaWYgc2VsZi5pbmRlY29yYXRvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmluZGVjb3JhdG9yID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLmRlY29yYXRvcmhhc2FyZ3MgPSBGYWxzZQogICAgICAgICBlbGlmIHR5cGUgPT0gdG9rZW5pemUuTkVXTElORToKICAgICAgICAgICAgIHNlbGYucGFzc2xpbmUgPSBGYWxzZSAgICMgc3RvcCBza2lwcGluZyB3aGVuIGEgTkVXTElORSBpcyBzZWVuCiAgICAgICAgICAgICBzZWxmLmxhc3QgPSBzcm93Y29sWzBdCiAgICAgICAgICAgICBpZiBzZWxmLmlzbGFtYmRhOiAgICAgICAjIGxhbWJkYXMgYWx3YXlzIGVuZCBhdCB0aGUgZmlyc3QgTkVXTElORQogICAgICAgICAgICAgICAgIHJhaXNlIEVuZE9mQmxvY2sKKyAgICAgICAgICAgICMgaGl0dGluZyBhIE5FV0xJTkUgd2hlbiBpbiBhIGRlY29yYXRvciB3aXRob3V0IGFyZ3MKKyAgICAgICAgICAgICMgZW5kcyB0aGUgZGVjb3JhdG9yCisgICAgICAgICAgICBpZiBzZWxmLmluZGVjb3JhdG9yIGFuZCBub3Qgc2VsZi5kZWNvcmF0b3JoYXNhcmdzOgorICAgICAgICAgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBGYWxzZQogICAgICAgICBlbGlmIHNlbGYucGFzc2xpbmU6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsaWYgdHlwZSA9PSB0b2tlbml6ZS5JTkRFTlQ6CkBAIC04MjIsMTAgKzkyNiwxMyBAQAogICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9iamVjdCBhbmQgdGhlIGxpbmUgbnVtYmVyIGluZGljYXRlcyB3aGVyZSBpbiB0aGUKICAgICBvcmlnaW5hbCBzb3VyY2UgZmlsZSB0aGUgZmlyc3QgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIE9TRXJyb3IgaXMKICAgICByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbm5vdCBiZSByZXRyaWV2ZWQuIiIiCisgICAgb2JqZWN0ID0gdW53cmFwKG9iamVjdCkKICAgICBsaW5lcywgbG51bSA9IGZpbmRzb3VyY2Uob2JqZWN0KQogCi0gICAgaWYgaXNtb2R1bGUob2JqZWN0KTogcmV0dXJuIGxpbmVzLCAwCi0gICAgZWxzZTogcmV0dXJuIGdldGJsb2NrKGxpbmVzW2xudW06XSksIGxudW0gKyAxCisgICAgaWYgaXNtb2R1bGUob2JqZWN0KToKKyAgICAgICAgcmV0dXJuIGxpbmVzLCAwCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGdldGJsb2NrKGxpbmVzW2xudW06XSksIGxudW0gKyAxCiAKIGRlZiBnZXRzb3VyY2Uob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdGhlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciBhbiBvYmplY3QuCkBAIC05MTksMTcgKzEwMjYsMTggQEAKIGRlZiBnZXRhcmdzcGVjKGZ1bmMpOgogICAgICIiIkdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgZnVuY3Rpb24ncyBhcmd1bWVudHMuCiAKLSAgICBBIHR1cGxlIG9mIGZvdXIgdGhpbmdzIGlzIHJldHVybmVkOiAoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzKS4KLSAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4KLSAgICAnYXJncycgd2lsbCBpbmNsdWRlIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4KLSAgICAndmFyYXJncycgYW5kICd2YXJrdycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCisgICAgQSB0dXBsZSBvZiBmb3VyIHRoaW5ncyBpcyByZXR1cm5lZDogKGFyZ3MsIHZhcmFyZ3MsIGtleXdvcmRzLCBkZWZhdWx0cykuCisgICAgJ2FyZ3MnIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMsIGluY2x1ZGluZyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgbmFtZXMuCisgICAgJ3ZhcmFyZ3MnIGFuZCAna2V5d29yZHMnIGFyZSB0aGUgbmFtZXMgb2YgdGhlICogYW5kICoqIGFyZ3VtZW50cyBvciBOb25lLgogICAgICdkZWZhdWx0cycgaXMgYW4gbi10dXBsZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBhcmd1bWVudHMuCiAKLSAgICBVc2UgdGhlIGdldGZ1bGxhcmdzcGVjKCkgQVBJIGZvciBQeXRob24tMzAwMCBjb2RlLCBhcyBhbm5vdGF0aW9ucworICAgIFVzZSB0aGUgZ2V0ZnVsbGFyZ3NwZWMoKSBBUEkgZm9yIFB5dGhvbiAzIGNvZGUsIGFzIGFubm90YXRpb25zCiAgICAgYW5kIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzdXBwb3J0ZWQuIGdldGFyZ3NwZWMoKSB3aWxsIHJhaXNlIFZhbHVlRXJyb3IKICAgICBpZiB0aGUgZnVuYyBoYXMgZWl0aGVyIGFubm90YXRpb25zIG9yIGtleXdvcmQgYXJndW1lbnRzLgogICAgICIiIgotCisgICAgd2FybmluZ3Mud2FybigiaW5zcGVjdC5nZXRhcmdzcGVjKCkgaXMgZGVwcmVjYXRlZCwgIgorICAgICAgICAgICAgICAgICAgInVzZSBpbnNwZWN0LnNpZ25hdHVyZSgpIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCiAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5uID0gXAogICAgICAgICBnZXRmdWxsYXJnc3BlYyhmdW5jKQogICAgIGlmIGt3b25seWFyZ3Mgb3IgYW5uOgpAQCAtOTUzLDYgKzEwNjEsOCBAQAogICAgICdhbm5vdGF0aW9ucycgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXJndW1lbnQgbmFtZXMgdG8gYW5ub3RhdGlvbnMuCiAKICAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byBnZXRhcmdzcGVjKCkuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBpbnNwZWN0LnNpZ25hdHVyZSgpIGluc3RlYWQuCiAgICAgIiIiCiAKICAgICB0cnk6CkBAIC05NzIsOSArMTA4MiwxMCBAQAogICAgICAgICAjIGdldGZ1bGxhcmdzcGVjKCkgaGlzdG9yaWNhbGx5IGlnbm9yZWQgX193cmFwcGVkX18gYXR0cmlidXRlcywKICAgICAgICAgIyBzbyB3ZSBlbnN1cmUgdGhhdCByZW1haW5zIHRoZSBjYXNlIGluIDMuMysKIAotICAgICAgICBzaWcgPSBfc2lnbmF0dXJlX2ludGVybmFsKGZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPUZhbHNlKQorICAgICAgICBzaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnY2xzPVNpZ25hdHVyZSkKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgogICAgICAgICAjIE1vc3Qgb2YgdGhlIHRpbWVzICdzaWduYXR1cmUnIHdpbGwgcmFpc2UgVmFsdWVFcnJvci4KICAgICAgICAgIyBCdXQsIGl0IGNhbiBhbHNvIHJhaXNlIEF0dHJpYnV0ZUVycm9yLCBhbmQsIG1heWJlIHNvbWV0aGluZwpAQCAtMTA0Myw4ICsxMTU0LDggQEAKIGRlZiBmb3JtYXRhbm5vdGF0aW9uKGFubm90YXRpb24sIGJhc2VfbW9kdWxlPU5vbmUpOgogICAgIGlmIGlzaW5zdGFuY2UoYW5ub3RhdGlvbiwgdHlwZSk6CiAgICAgICAgIGlmIGFubm90YXRpb24uX19tb2R1bGVfXyBpbiAoJ2J1aWx0aW5zJywgYmFzZV9tb2R1bGUpOgotICAgICAgICAgICAgcmV0dXJuIGFubm90YXRpb24uX19uYW1lX18KLSAgICAgICAgcmV0dXJuIGFubm90YXRpb24uX19tb2R1bGVfXysnLicrYW5ub3RhdGlvbi5fX25hbWVfXworICAgICAgICAgICAgcmV0dXJuIGFubm90YXRpb24uX19xdWFsbmFtZV9fCisgICAgICAgIHJldHVybiBhbm5vdGF0aW9uLl9fbW9kdWxlX18rJy4nK2Fubm90YXRpb24uX19xdWFsbmFtZV9fCiAgICAgcmV0dXJuIHJlcHIoYW5ub3RhdGlvbikKIAogZGVmIGZvcm1hdGFubm90YXRpb25yZWxhdGl2ZXRvKG9iamVjdCk6CkBAIC0xMzE3LDYgKzE0MjgsOCBAQAogICAgICMgRnJhbWVUeXBlLmZfbGluZW5vIGlzIG5vdyBhIGRlc2NyaXB0b3IgdGhhdCBncm92ZWxzIGNvX2xub3RhYgogICAgIHJldHVybiBmcmFtZS5mX2xpbmVubwogCitGcmFtZUluZm8gPSBuYW1lZHR1cGxlKCdGcmFtZUluZm8nLCAoJ2ZyYW1lJywpICsgVHJhY2ViYWNrLl9maWVsZHMpCisKIGRlZiBnZXRvdXRlcmZyYW1lcyhmcmFtZSwgY29udGV4dD0xKToKICAgICAiIiJHZXQgYSBsaXN0IG9mIHJlY29yZHMgZm9yIGEgZnJhbWUgYW5kIGFsbCBoaWdoZXIgKGNhbGxpbmcpIGZyYW1lcy4KIApAQCAtMTMyNCw3ICsxNDM3LDggQEAKICAgICBuYW1lLCBhIGxpc3Qgb2YgbGluZXMgb2YgY29udGV4dCwgYW5kIGluZGV4IHdpdGhpbiB0aGUgY29udGV4dC4iIiIKICAgICBmcmFtZWxpc3QgPSBbXQogICAgIHdoaWxlIGZyYW1lOgotICAgICAgICBmcmFtZWxpc3QuYXBwZW5kKChmcmFtZSwpICsgZ2V0ZnJhbWVpbmZvKGZyYW1lLCBjb250ZXh0KSkKKyAgICAgICAgZnJhbWVpbmZvID0gKGZyYW1lLCkgKyBnZXRmcmFtZWluZm8oZnJhbWUsIGNvbnRleHQpCisgICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoRnJhbWVJbmZvKCpmcmFtZWluZm8pKQogICAgICAgICBmcmFtZSA9IGZyYW1lLmZfYmFjawogICAgIHJldHVybiBmcmFtZWxpc3QKIApAQCAtMTMzNSw3ICsxNDQ5LDggQEAKICAgICBuYW1lLCBhIGxpc3Qgb2YgbGluZXMgb2YgY29udGV4dCwgYW5kIGluZGV4IHdpdGhpbiB0aGUgY29udGV4dC4iIiIKICAgICBmcmFtZWxpc3QgPSBbXQogICAgIHdoaWxlIHRiOgotICAgICAgICBmcmFtZWxpc3QuYXBwZW5kKCh0Yi50Yl9mcmFtZSwpICsgZ2V0ZnJhbWVpbmZvKHRiLCBjb250ZXh0KSkKKyAgICAgICAgZnJhbWVpbmZvID0gKHRiLnRiX2ZyYW1lLCkgKyBnZXRmcmFtZWluZm8odGIsIGNvbnRleHQpCisgICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoRnJhbWVJbmZvKCpmcmFtZWluZm8pKQogICAgICAgICB0YiA9IHRiLnRiX25leHQKICAgICByZXR1cm4gZnJhbWVsaXN0CiAKQEAgLTE0ODUsNiArMTYwMCw0NSBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB7fQogCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvcm91dGluZSBpbnRyb3NwZWN0aW9uCisKK0NPUk9fQ1JFQVRFRCA9ICdDT1JPX0NSRUFURUQnCitDT1JPX1JVTk5JTkcgPSAnQ09ST19SVU5OSU5HJworQ09ST19TVVNQRU5ERUQgPSAnQ09ST19TVVNQRU5ERUQnCitDT1JPX0NMT1NFRCA9ICdDT1JPX0NMT1NFRCcKKworZGVmIGdldGNvcm91dGluZXN0YXRlKGNvcm91dGluZSk6CisgICAgIiIiR2V0IGN1cnJlbnQgc3RhdGUgb2YgYSBjb3JvdXRpbmUgb2JqZWN0LgorCisgICAgUG9zc2libGUgc3RhdGVzIGFyZToKKyAgICAgIENPUk9fQ1JFQVRFRDogV2FpdGluZyB0byBzdGFydCBleGVjdXRpb24uCisgICAgICBDT1JPX1JVTk5JTkc6IEN1cnJlbnRseSBiZWluZyBleGVjdXRlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisgICAgICBDT1JPX1NVU1BFTkRFRDogQ3VycmVudGx5IHN1c3BlbmRlZCBhdCBhbiBhd2FpdCBleHByZXNzaW9uLgorICAgICAgQ09ST19DTE9TRUQ6IEV4ZWN1dGlvbiBoYXMgY29tcGxldGVkLgorICAgICIiIgorICAgIGlmIGNvcm91dGluZS5jcl9ydW5uaW5nOgorICAgICAgICByZXR1cm4gQ09ST19SVU5OSU5HCisgICAgaWYgY29yb3V0aW5lLmNyX2ZyYW1lIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBDT1JPX0NMT1NFRAorICAgIGlmIGNvcm91dGluZS5jcl9mcmFtZS5mX2xhc3RpID09IC0xOgorICAgICAgICByZXR1cm4gQ09ST19DUkVBVEVECisgICAgcmV0dXJuIENPUk9fU1VTUEVOREVECisKKworZGVmIGdldGNvcm91dGluZWxvY2Fscyhjb3JvdXRpbmUpOgorICAgICIiIgorICAgIEdldCB0aGUgbWFwcGluZyBvZiBjb3JvdXRpbmUgbG9jYWwgdmFyaWFibGVzIHRvIHRoZWlyIGN1cnJlbnQgdmFsdWVzLgorCisgICAgQSBkaWN0IGlzIHJldHVybmVkLCB3aXRoIHRoZSBrZXlzIHRoZSBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhbmQgdmFsdWVzIHRoZQorICAgIGJvdW5kIHZhbHVlcy4iIiIKKyAgICBmcmFtZSA9IGdldGF0dHIoY29yb3V0aW5lLCAiY3JfZnJhbWUiLCBOb25lKQorICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZnJhbWUuZl9sb2NhbHMKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4ge30KKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdCAoUEVQIDM2MikKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTE1MDEsNiArMTY1NSwxMCBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKGNscywgbWV0aG9kX25hbWUpOgorICAgICIiIlByaXZhdGUgaGVscGVyLiBDaGVja3MgaWYgYGBjbHNgYCBoYXMgYW4gYXR0cmlidXRlCisgICAgbmFtZWQgYGBtZXRob2RfbmFtZWBgIGFuZCByZXR1cm5zIGl0IG9ubHkgaWYgaXQgaXMgYQorICAgIHB1cmUgcHl0aG9uIGZ1bmN0aW9uLgorICAgICIiIgogICAgIHRyeToKICAgICAgICAgbWV0aCA9IGdldGF0dHIoY2xzLCBtZXRob2RfbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CkBAIC0xNTEzLDkgKzE2NzEsMTAgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgcGFydGlhbCwgZXh0cmFfYXJncz0oKSk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gY2FsY3VsYXRlIGhvdyAnd3JhcHBlZF9zaWcnIHNpZ25hdHVyZSB3aWxsCi0gICAgIyBsb29rIGxpa2UgYWZ0ZXIgYXBwbHlpbmcgYSAnZnVuY3Rvb2xzLnBhcnRpYWwnIG9iamVjdCAob3IgYWxpa2UpCi0gICAgIyBvbiBpdC4KKyAgICAiIiJQcml2YXRlIGhlbHBlciB0byBjYWxjdWxhdGUgaG93ICd3cmFwcGVkX3NpZycgc2lnbmF0dXJlIHdpbGwKKyAgICBsb29rIGxpa2UgYWZ0ZXIgYXBwbHlpbmcgYSAnZnVuY3Rvb2xzLnBhcnRpYWwnIG9iamVjdCAob3IgYWxpa2UpCisgICAgb24gaXQuCisgICAgIiIiCiAKICAgICBvbGRfcGFyYW1zID0gd3JhcHBlZF9zaWcucGFyYW1ldGVycwogICAgIG5ld19wYXJhbXMgPSBPcmRlcmVkRGljdChvbGRfcGFyYW1zLml0ZW1zKCkpCkBAIC0xNTg4LDggKzE3NDcsOSBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2JvdW5kX21ldGhvZChzaWcpOgotICAgICMgSW50ZXJuYWwgaGVscGVyIHRvIHRyYW5zZm9ybSBzaWduYXR1cmVzIGZvciB1bmJvdW5kCi0gICAgIyBmdW5jdGlvbnMgdG8gYm91bmQgbWV0aG9kcworICAgICIiIlByaXZhdGUgaGVscGVyIHRvIHRyYW5zZm9ybSBzaWduYXR1cmVzIGZvciB1bmJvdW5kCisgICAgZnVuY3Rpb25zIHRvIGJvdW5kIG1ldGhvZHMuCisgICAgIiIiCiAKICAgICBwYXJhbXMgPSB0dXBsZShzaWcucGFyYW1ldGVycy52YWx1ZXMoKSkKIApAQCAtMTYxMyw4ICsxNzczLDkgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9pc19idWlsdGluKG9iaik6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGNhbGxhYmxlIHRoYXQgbWlnaHQKLSAgICAjIHN1cHBvcnQgQXJndW1lbnQgQ2xpbmljJ3MgX190ZXh0X3NpZ25hdHVyZV9fIHByb3RvY29sLgorICAgICIiIlByaXZhdGUgaGVscGVyIHRvIHRlc3QgaWYgYG9iamAgaXMgYSBjYWxsYWJsZSB0aGF0IG1pZ2h0CisgICAgc3VwcG9ydCBBcmd1bWVudCBDbGluaWMncyBfX3RleHRfc2lnbmF0dXJlX18gcHJvdG9jb2wuCisgICAgIiIiCiAgICAgcmV0dXJuIChpc2J1aWx0aW4ob2JqKSBvcgogICAgICAgICAgICAgaXNtZXRob2RkZXNjcmlwdG9yKG9iaikgb3IKICAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMpIG9yCkBAIC0xNjI0LDEwICsxNzg1LDExIEBACiAKIAogZGVmIF9zaWduYXR1cmVfaXNfZnVuY3Rpb25saWtlKG9iaik6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGR1Y2sgdHlwZSBvZiBGdW5jdGlvblR5cGUuCi0gICAgIyBBIGdvb2QgZXhhbXBsZSBvZiBzdWNoIG9iamVjdHMgYXJlIGZ1bmN0aW9ucyBjb21waWxlZCB3aXRoCi0gICAgIyBDeXRob24sIHdoaWNoIGhhdmUgYWxsIGF0dHJpYnV0ZXMgdGhhdCBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uCi0gICAgIyB3b3VsZCBoYXZlLCBidXQgaGF2ZSB0aGVpciBjb2RlIHN0YXRpY2FsbHkgY29tcGlsZWQuCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGR1Y2sgdHlwZSBvZiBGdW5jdGlvblR5cGUuCisgICAgQSBnb29kIGV4YW1wbGUgb2Ygc3VjaCBvYmplY3RzIGFyZSBmdW5jdGlvbnMgY29tcGlsZWQgd2l0aAorICAgIEN5dGhvbiwgd2hpY2ggaGF2ZSBhbGwgYXR0cmlidXRlcyB0aGF0IGEgcHVyZSBQeXRob24gZnVuY3Rpb24KKyAgICB3b3VsZCBoYXZlLCBidXQgaGF2ZSB0aGVpciBjb2RlIHN0YXRpY2FsbHkgY29tcGlsZWQuCisgICAgIiIiCiAKICAgICBpZiBub3QgY2FsbGFibGUob2JqKSBvciBpc2NsYXNzKG9iaik6CiAgICAgICAgICMgQWxsIGZ1bmN0aW9uLWxpa2Ugb2JqZWN0cyBhcmUgb2J2aW91c2x5IGNhbGxhYmxlcywKQEAgLTE2NDgsMTEgKzE4MTAsMTIgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9nZXRfYm91bmRfcGFyYW0oc3BlYyk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gZ2V0IGZpcnN0IHBhcmFtZXRlciBuYW1lIGZyb20gYQotICAgICMgX190ZXh0X3NpZ25hdHVyZV9fIG9mIGEgYnVpbHRpbiBtZXRob2QsIHdoaWNoIHNob3VsZAotICAgICMgYmUgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6ICcoJHBhcmFtMSwgLi4uKScuCi0gICAgIyBBc3N1bXB0aW9ucyBhcmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgd29uJ3QgaGF2ZQotICAgICMgYSBkZWZhdWx0IHZhbHVlIG9yIGFuIGFubm90YXRpb24uCisgICAgIiIiIFByaXZhdGUgaGVscGVyIHRvIGdldCBmaXJzdCBwYXJhbWV0ZXIgbmFtZSBmcm9tIGEKKyAgICBfX3RleHRfc2lnbmF0dXJlX18gb2YgYSBidWlsdGluIG1ldGhvZCwgd2hpY2ggc2hvdWxkCisgICAgYmUgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6ICcoJHBhcmFtMSwgLi4uKScuCisgICAgQXNzdW1wdGlvbnMgYXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IHdvbid0IGhhdmUKKyAgICBhIGRlZmF1bHQgdmFsdWUgb3IgYW4gYW5ub3RhdGlvbi4KKyAgICAiIiIKIAogICAgIGFzc2VydCBzcGVjLnN0YXJ0c3dpdGgoJygkJykKIApAQCAtMTY3MSw3ICsxODM0LDkgQEAKIAogZGVmIF9zaWduYXR1cmVfc3RyaXBfbm9uX3B5dGhvbl9zeW50YXgoc2lnbmF0dXJlKToKICAgICAiIiIKLSAgICBUYWtlcyBhIHNpZ25hdHVyZSBpbiBBcmd1bWVudCBDbGluaWMncyBleHRlbmRlZCBzaWduYXR1cmUgZm9ybWF0LgorICAgIFByaXZhdGUgaGVscGVyIGZ1bmN0aW9uLiBUYWtlcyBhIHNpZ25hdHVyZSBpbiBBcmd1bWVudCBDbGluaWMncworICAgIGV4dGVuZGVkIHNpZ25hdHVyZSBmb3JtYXQuCisKICAgICBSZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgdGhpbmdzOgogICAgICAgKiB0aGF0IHNpZ25hdHVyZSByZS1yZW5kZXJlZCBpbiBzdGFuZGFyZCBQeXRob24gc3ludGF4LAogICAgICAgKiB0aGUgaW5kZXggb2YgdGhlICJzZWxmIiBwYXJhbWV0ZXIgKGdlbmVyYWxseSAwKSwgb3IgTm9uZSBpZgpAQCAtMTc0MCw4ICsxOTA1LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZnJvbXN0cihjbHMsIG9iaiwgcywgc2tpcF9ib3VuZF9hcmc9VHJ1ZSk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gcGFyc2UgY29udGVudCBvZiAnX190ZXh0X3NpZ25hdHVyZV9fJwotICAgICMgYW5kIHJldHVybiBhIFNpZ25hdHVyZSBiYXNlZCBvbiBpdAorICAgICIiIlByaXZhdGUgaGVscGVyIHRvIHBhcnNlIGNvbnRlbnQgb2YgJ19fdGV4dF9zaWduYXR1cmVfXycKKyAgICBhbmQgcmV0dXJuIGEgU2lnbmF0dXJlIGJhc2VkIG9uIGl0LgorICAgICIiIgorCiAgICAgUGFyYW1ldGVyID0gY2xzLl9wYXJhbWV0ZXJfY2xzCiAKICAgICBjbGVhbl9zaWduYXR1cmUsIHNlbGZfcGFyYW1ldGVyLCBsYXN0X3Bvc2l0aW9uYWxfb25seSA9IFwKQEAgLTE4NzksOCArMjA0NiwxMCBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbihjbHMsIGZ1bmMsIHNraXBfYm91bmRfYXJnPVRydWUpOgotICAgICMgSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yCi0gICAgIyBidWlsdGluIGNhbGxhYmxlcworICAgICIiIlByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yCisgICAgYnVpbHRpbiBjYWxsYWJsZXMuCisgICAgIiIiCisKICAgICBpZiBub3QgX3NpZ25hdHVyZV9pc19idWlsdGluKGZ1bmMpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoInshcn0gaXMgbm90IGEgUHl0aG9uIGJ1aWx0aW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIi5mb3JtYXQoZnVuYykpCkBAIC0xODkyLDcgKzIwNjEsOTUgQEAKICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tc3RyKGNscywgZnVuYywgcywgc2tpcF9ib3VuZF9hcmcpCiAKIAotZGVmIF9zaWduYXR1cmVfaW50ZXJuYWwob2JqLCBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9VHJ1ZSwgc2tpcF9ib3VuZF9hcmc9VHJ1ZSk6CitkZWYgX3NpZ25hdHVyZV9mcm9tX2Z1bmN0aW9uKGNscywgZnVuYyk6CisgICAgIiIiUHJpdmF0ZSBoZWxwZXI6IGNvbnN0cnVjdHMgU2lnbmF0dXJlIGZvciB0aGUgZ2l2ZW4gcHl0aG9uIGZ1bmN0aW9uLiIiIgorCisgICAgaXNfZHVja19mdW5jdGlvbiA9IEZhbHNlCisgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6CisgICAgICAgIGlmIF9zaWduYXR1cmVfaXNfZnVuY3Rpb25saWtlKGZ1bmMpOgorICAgICAgICAgICAgaXNfZHVja19mdW5jdGlvbiA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgaXQncyBub3QgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbiwgYW5kIG5vdCBhIGR1Y2sgdHlwZQorICAgICAgICAgICAgIyBvZiBwdXJlIGZ1bmN0aW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQorCisgICAgUGFyYW1ldGVyID0gY2xzLl9wYXJhbWV0ZXJfY2xzCisKKyAgICAjIFBhcmFtZXRlciBpbmZvcm1hdGlvbi4KKyAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgcG9zX2NvdW50ID0gZnVuY19jb2RlLmNvX2FyZ2NvdW50CisgICAgYXJnX25hbWVzID0gZnVuY19jb2RlLmNvX3Zhcm5hbWVzCisgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKKyAgICBrZXl3b3JkX29ubHlfY291bnQgPSBmdW5jX2NvZGUuY29fa3dvbmx5YXJnY291bnQKKyAgICBrZXl3b3JkX29ubHkgPSBhcmdfbmFtZXNbcG9zX2NvdW50Oihwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQpXQorICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KKyAgICBkZWZhdWx0cyA9IGZ1bmMuX19kZWZhdWx0c19fCisgICAga3dkZWZhdWx0cyA9IGZ1bmMuX19rd2RlZmF1bHRzX18KKworICAgIGlmIGRlZmF1bHRzOgorICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IGxlbihkZWZhdWx0cykKKyAgICBlbHNlOgorICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKKworICAgIHBhcmFtZXRlcnMgPSBbXQorCisgICAgIyBOb24ta2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgdy9vIGRlZmF1bHRzLgorICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKKyAgICBmb3IgbmFtZSBpbiBwb3NpdGlvbmFsWzpub25fZGVmYXVsdF9jb3VudF06CisgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JEKSkKKworICAgICMgLi4uIHcvIGRlZmF1bHRzLgorICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6CisgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0c1tvZmZzZXRdKSkKKworICAgICMgKmFyZ3MKKyAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgorICAgICAgICBuYW1lID0gYXJnX25hbWVzW3Bvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudF0KKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9WQVJfUE9TSVRJT05BTCkpCisKKyAgICAjIEtleXdvcmQtb25seSBwYXJhbWV0ZXJzLgorICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKKyAgICAgICAgZGVmYXVsdCA9IF9lbXB0eQorICAgICAgICBpZiBrd2RlZmF1bHRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKKworICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdCkpCisgICAgIyAqKmt3YXJncworICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTOgorICAgICAgICBpbmRleCA9IHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudAorICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgorICAgICAgICAgICAgaW5kZXggKz0gMQorCisgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbaW5kZXhdCisgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX0tFWVdPUkQpKQorCisgICAgIyBJcyAnZnVuYycgaXMgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbiAtIGRvbid0IHZhbGlkYXRlIHRoZQorICAgICMgcGFyYW1ldGVycyBsaXN0IChmb3IgY29ycmVjdCBvcmRlciBhbmQgZGVmYXVsdHMpLCBpdCBzaG91bGQgYmUgT0suCisgICAgcmV0dXJuIGNscyhwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249YW5ub3RhdGlvbnMuZ2V0KCdyZXR1cm4nLCBfZW1wdHkpLAorICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189aXNfZHVja19mdW5jdGlvbikKKworCitkZWYgX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKG9iaiwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2Nscyk6CisKKyAgICAiIiJQcml2YXRlIGhlbHBlciBmdW5jdGlvbiB0byBnZXQgc2lnbmF0dXJlIGZvciBhcmJpdHJhcnkKKyAgICBjYWxsYWJsZSBvYmplY3RzLgorICAgICIiIgogCiAgICAgaWYgbm90IGNhbGxhYmxlKG9iaik6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QnLmZvcm1hdChvYmopKQpAQCAtMTkwMCw5ICsyMTU3LDEyIEBACiAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1ldGhvZFR5cGUpOgogICAgICAgICAjIEluIHRoaXMgY2FzZSB3ZSBza2lwIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlpbmcKICAgICAgICAgIyBmdW5jdGlvbiAodXN1YWxseSBgc2VsZmAgb3IgYGNsc2ApLgotICAgICAgICBzaWcgPSBfc2lnbmF0dXJlX2ludGVybmFsKG9iai5fX2Z1bmNfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZSgKKyAgICAgICAgICAgIG9iai5fX2Z1bmNfXywKKyAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCisKICAgICAgICAgaWYgc2tpcF9ib3VuZF9hcmc6CiAgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9ib3VuZF9tZXRob2Qoc2lnKQogICAgICAgICBlbHNlOgpAQCAtMTkxNSwxMCArMjE3NSwxMSBAQAogICAgICAgICAgICAgIyBJZiB0aGUgdW53cmFwcGVkIG9iamVjdCBpcyBhICptZXRob2QqLCB3ZSBtaWdodCB3YW50IHRvCiAgICAgICAgICAgICAjIHNraXAgaXRzIGZpcnN0IHBhcmFtZXRlciAoc2VsZikuCiAgICAgICAgICAgICAjIFNlZSB0ZXN0X3NpZ25hdHVyZV93cmFwcGVkX2JvdW5kX21ldGhvZCBmb3IgZGV0YWlscy4KLSAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2ludGVybmFsKAorICAgICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZSgKICAgICAgICAgICAgICAgICBvYmosCiAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogCiAgICAgdHJ5OgogICAgICAgICBzaWcgPSBvYmouX19zaWduYXR1cmVfXwpAQCAtMTk0NSw5ICsyMjA2LDEyIEBACiAgICAgICAgICAgICAjICh1c3VhbGx5IGBzZWxmYCwgb3IgYGNsc2ApIHdpbGwgbm90IGJlIHBhc3NlZAogICAgICAgICAgICAgIyBhdXRvbWF0aWNhbGx5IChhcyBmb3IgYm91bmRtZXRob2RzKQogCi0gICAgICAgICAgICB3cmFwcGVkX3NpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwocGFydGlhbG1ldGhvZC5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgIHBhcnRpYWxtZXRob2QuZnVuYywKKyAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCisKICAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZ2V0X3BhcnRpYWwod3JhcHBlZF9zaWcsIHBhcnRpYWxtZXRob2QsIChOb25lLCkpCiAKICAgICAgICAgICAgIGZpcnN0X3dyYXBwZWRfcGFyYW0gPSB0dXBsZSh3cmFwcGVkX3NpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVswXQpAQCAtMTk1OCwxNiArMjIyMiwxOCBAQAogICAgIGlmIGlzZnVuY3Rpb24ob2JqKSBvciBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShvYmopOgogICAgICAgICAjIElmIGl0J3MgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbiwgb3IgYW4gb2JqZWN0IHRoYXQgaXMgZHVjayB0eXBlCiAgICAgICAgICMgb2YgYSBQeXRob24gZnVuY3Rpb24gKEN5dGhvbiBmdW5jdGlvbnMsIGZvciBpbnN0YW5jZSksIHRoZW46Ci0gICAgICAgIHJldHVybiBTaWduYXR1cmUuZnJvbV9mdW5jdGlvbihvYmopCisgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb24oc2lnY2xzLCBvYmopCiAKICAgICBpZiBfc2lnbmF0dXJlX2lzX2J1aWx0aW4ob2JqKToKLSAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9idWlsdGluKFNpZ25hdHVyZSwgb2JqLAorICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oc2lnY2xzLCBvYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZykKIAogICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBmdW5jdG9vbHMucGFydGlhbCk6Ci0gICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChvYmouZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICB3cmFwcGVkX3NpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZSgKKyAgICAgICAgICAgIG9iai5mdW5jLAorICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZ2V0X3BhcnRpYWwod3JhcHBlZF9zaWcsIG9iaikKIAogICAgIHNpZyA9IE5vbmUKQEAgLTE5NzgsMjMgKzIyNDQsMjkgQEAKICAgICAgICAgIyBpbiBpdHMgbWV0YWNsYXNzCiAgICAgICAgIGNhbGwgPSBfc2lnbmF0dXJlX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKHR5cGUob2JqKSwgJ19fY2FsbF9fJykKICAgICAgICAgaWYgY2FsbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwoY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZSgKKyAgICAgICAgICAgICAgICBjYWxsLAorICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgTm93IHdlIGNoZWNrIGlmIHRoZSAnb2JqJyBjbGFzcyBoYXMgYSAnX19uZXdfXycgbWV0aG9kCiAgICAgICAgICAgICBuZXcgPSBfc2lnbmF0dXJlX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19fbmV3X18nKQogICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwobmV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICBuZXcsCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIEZpbmFsbHksIHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IF9faW5pdF9fIGltcGxlbWVudGVkCiAgICAgICAgICAgICAgICAgaW5pdCA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2Qob2JqLCAnX19pbml0X18nKQogICAgICAgICAgICAgICAgIGlmIGluaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwoaW5pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgICAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogCiAgICAgICAgIGlmIHNpZyBpcyBOb25lOgogICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3csIHRoYXQgYG9iamAgaXMgYSBjbGFzcywgd2l0aCBubyB1c2VyLQpAQCAtMjAxNiw3ICsyMjg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgdGV4dF9zaWc6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIElmICdvYmonIGNsYXNzIGhhcyBhIF9fdGV4dF9zaWduYXR1cmVfXyBhdHRyaWJ1dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhIHNpZ25hdHVyZSBiYXNlZCBvbiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbXN0cihTaWduYXR1cmUsIG9iaiwgdGV4dF9zaWcpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tc3RyKHNpZ2Nscywgb2JqLCB0ZXh0X3NpZykKIAogICAgICAgICAgICAgIyBObyAnX190ZXh0X3NpZ25hdHVyZV9fJyB3YXMgZm91bmQgZm9yIHRoZSAnb2JqJyBjbGFzcy4KICAgICAgICAgICAgICMgTGFzdCBvcHRpb24gaXMgdG8gY2hlY2sgaWYgaXRzICdfX2luaXRfXycgaXMKQEAgLTIwMjQsOSArMjI5NiwxMyBAQAogICAgICAgICAgICAgaWYgdHlwZSBub3QgaW4gb2JqLl9fbXJvX186CiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEgY2xhc3MgKG5vdCBtZXRhY2xhc3MpLCBidXQgbm8gdXNlci1kZWZpbmVkCiAgICAgICAgICAgICAgICAgIyBfX2luaXRfXyBvciBfX25ld19fIGZvciBpdAotICAgICAgICAgICAgICAgIGlmIG9iai5fX2luaXRfXyBpcyBvYmplY3QuX19pbml0X186CisgICAgICAgICAgICAgICAgaWYgKG9iai5fX2luaXRfXyBpcyBvYmplY3QuX19pbml0X18gYW5kCisgICAgICAgICAgICAgICAgICAgIG9iai5fX25ld19fIGlzIG9iamVjdC5fX25ld19fKToKICAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gYSBzaWduYXR1cmUgb2YgJ29iamVjdCcgYnVpbHRpbi4KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ25hdHVyZShvYmplY3QpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gdHlwZSB7IXJ9Jy5mb3JtYXQob2JqKSkKIAogICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob2JqLCBfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMpOgogICAgICAgICAjIEFuIG9iamVjdCB3aXRoIF9fY2FsbF9fCkBAIC0yMDM2LDkgKzIzMTIsMTEgQEAKICAgICAgICAgY2FsbCA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQogICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwoY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZSgKKyAgICAgICAgICAgICAgICAgICAgY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleDoKICAgICAgICAgICAgICAgICBtc2cgPSAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciB7IXJ9Jy5mb3JtYXQob2JqKQogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKSBmcm9tIGV4CkBAIC0yMDU4LDQxICsyMzM2LDM1IEBACiAKICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYWxsYWJsZSB7IXJ9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJy5mb3JtYXQob2JqKSkKIAotZGVmIHNpZ25hdHVyZShvYmopOgotICAgICcnJ0dldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuJycnCi0gICAgcmV0dXJuIF9zaWduYXR1cmVfaW50ZXJuYWwob2JqKQotCiAKIGNsYXNzIF92b2lkOgotICAgICcnJ0EgcHJpdmF0ZSBtYXJrZXIgLSB1c2VkIGluIFBhcmFtZXRlciAmIFNpZ25hdHVyZScnJworICAgICIiIkEgcHJpdmF0ZSBtYXJrZXIgLSB1c2VkIGluIFBhcmFtZXRlciAmIFNpZ25hdHVyZS4iIiIKIAogCiBjbGFzcyBfZW1wdHk6Ci0gICAgcGFzcworICAgICIiIk1hcmtlciBvYmplY3QgZm9yIFNpZ25hdHVyZS5lbXB0eSBhbmQgUGFyYW1ldGVyLmVtcHR5LiIiIgogCiAKLWNsYXNzIF9QYXJhbWV0ZXJLaW5kKGludCk6Ci0gICAgZGVmIF9fbmV3X18oc2VsZiwgKmFyZ3MsIG5hbWUpOgotICAgICAgICBvYmogPSBpbnQuX19uZXdfXyhzZWxmLCAqYXJncykKLSAgICAgICAgb2JqLl9uYW1lID0gbmFtZQotICAgICAgICByZXR1cm4gb2JqCitjbGFzcyBfUGFyYW1ldGVyS2luZChlbnVtLkludEVudW0pOgorICAgIFBPU0lUSU9OQUxfT05MWSA9IDAKKyAgICBQT1NJVElPTkFMX09SX0tFWVdPUkQgPSAxCisgICAgVkFSX1BPU0lUSU9OQUwgPSAyCisgICAgS0VZV09SRF9PTkxZID0gMworICAgIFZBUl9LRVlXT1JEID0gNAogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9uYW1lCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnPF9QYXJhbWV0ZXJLaW5kOiB7IXJ9PicuZm9ybWF0KHNlbGYuX25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lXwogCiAKLV9QT1NJVElPTkFMX09OTFkgICAgICAgID0gX1BhcmFtZXRlcktpbmQoMCwgbmFtZT0nUE9TSVRJT05BTF9PTkxZJykKLV9QT1NJVElPTkFMX09SX0tFWVdPUkQgID0gX1BhcmFtZXRlcktpbmQoMSwgbmFtZT0nUE9TSVRJT05BTF9PUl9LRVlXT1JEJykKLV9WQVJfUE9TSVRJT05BTCAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoMiwgbmFtZT0nVkFSX1BPU0lUSU9OQUwnKQotX0tFWVdPUkRfT05MWSAgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgzLCBuYW1lPSdLRVlXT1JEX09OTFknKQotX1ZBUl9LRVlXT1JEICAgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCg0LCBuYW1lPSdWQVJfS0VZV09SRCcpCitfUE9TSVRJT05BTF9PTkxZICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5QT1NJVElPTkFMX09OTFkKK19QT1NJVElPTkFMX09SX0tFWVdPUkQgICA9IF9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT1JfS0VZV09SRAorX1ZBUl9QT1NJVElPTkFMICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuVkFSX1BPU0lUSU9OQUwKK19LRVlXT1JEX09OTFkgICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kLktFWVdPUkRfT05MWQorX1ZBUl9LRVlXT1JEICAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuVkFSX0tFWVdPUkQKIAogCiBjbGFzcyBQYXJhbWV0ZXI6Ci0gICAgJycnUmVwcmVzZW50cyBhIHBhcmFtZXRlciBpbiBhIGZ1bmN0aW9uIHNpZ25hdHVyZS4KKyAgICAiIiJSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgogCiAgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CiAKQEAgLTIxMTEsNyArMjM4Myw3IEBACiAgICAgICAgIFBvc3NpYmxlIHZhbHVlczogYFBhcmFtZXRlci5QT1NJVElPTkFMX09OTFlgLAogICAgICAgICBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRGAsIGBQYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUxgLAogICAgICAgICBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWAsIGBQYXJhbWV0ZXIuVkFSX0tFWVdPUkRgLgotICAgICcnJworICAgICIiIgogCiAgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfa2luZCcsICdfZGVmYXVsdCcsICdfYW5ub3RhdGlvbicpCiAKQEAgLTIxNDgsNiArMjQyMCwxNiBAQAogCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICh0eXBlKHNlbGYpLAorICAgICAgICAgICAgICAgIChzZWxmLl9uYW1lLCBzZWxmLl9raW5kKSwKKyAgICAgICAgICAgICAgICB7J19kZWZhdWx0Jzogc2VsZi5fZGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgJ19hbm5vdGF0aW9uJzogc2VsZi5fYW5ub3RhdGlvbn0pCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5fZGVmYXVsdCA9IHN0YXRlWydfZGVmYXVsdCddCisgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPSBzdGF0ZVsnX2Fubm90YXRpb24nXQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCkBAIC0yMTY2LDcgKzI0NDgsNyBAQAogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgbmFtZT1fdm9pZCwga2luZD1fdm9pZCwKICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uPV92b2lkLCBkZWZhdWx0PV92b2lkKToKLSAgICAgICAgJycnQ3JlYXRlcyBhIGN1c3RvbWl6ZWQgY29weSBvZiB0aGUgUGFyYW1ldGVyLicnJworICAgICAgICAiIiJDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBQYXJhbWV0ZXIuIiIiCiAKICAgICAgICAgaWYgbmFtZSBpcyBfdm9pZDoKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9uYW1lCkBAIC0yMjAyLDEwICsyNDg0LDE0IEBACiAgICAgICAgIHJldHVybiBmb3JtYXR0ZWQKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8e30gYXQgezojeH0geyFyfT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5uYW1lKQorICAgICAgICByZXR1cm4gJzx7fSAie30iPicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5uYW1lLCBzZWxmLmtpbmQsIHNlbGYuYW5ub3RhdGlvbiwgc2VsZi5kZWZhdWx0KSkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmIGlzIG90aGVyOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFBhcmFtZXRlcik6CiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIChzZWxmLl9uYW1lID09IG90aGVyLl9uYW1lIGFuZApAQCAtMjIxNSw3ICsyNTAxLDcgQEAKIAogCiBjbGFzcyBCb3VuZEFyZ3VtZW50czoKLSAgICAnJydSZXN1bHQgb2YgYFNpZ25hdHVyZS5iaW5kYCBjYWxsLiAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzCisgICAgIiIiUmVzdWx0IG9mIGBTaWduYXR1cmUuYmluZGAgY2FsbC4gIEhvbGRzIHRoZSBtYXBwaW5nIG9mIGFyZ3VtZW50cwogICAgIHRvIHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMuCiAKICAgICBIYXMgdGhlIGZvbGxvd2luZyBwdWJsaWMgYXR0cmlidXRlczoKQEAgLTIyMjksNyArMjUxNSw5IEBACiAgICAgICAgIFR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZhbHVlcy4KICAgICAqIGt3YXJncyA6IGRpY3QKICAgICAgICAgRGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMuCi0gICAgJycnCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoJ2FyZ3VtZW50cycsICdfc2lnbmF0dXJlJywgJ19fd2Vha3JlZl9fJykKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWduYXR1cmUsIGFyZ3VtZW50cyk6CiAgICAgICAgIHNlbGYuYXJndW1lbnRzID0gYXJndW1lbnRzCkBAIC0yMjkyLDE1ICsyNTgwLDYwIEBACiAKICAgICAgICAgcmV0dXJuIGt3YXJncwogCisgICAgZGVmIGFwcGx5X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAiIiJTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3NpbmcgYXJndW1lbnRzLgorCisgICAgICAgIEZvciB2YXJpYWJsZS1wb3NpdGlvbmFsIGFyZ3VtZW50cyAoKmFyZ3MpIHRoZSBkZWZhdWx0IGlzIGFuCisgICAgICAgIGVtcHR5IHR1cGxlLgorCisgICAgICAgIEZvciB2YXJpYWJsZS1rZXl3b3JkIGFyZ3VtZW50cyAoKiprd2FyZ3MpIHRoZSBkZWZhdWx0IGlzIGFuCisgICAgICAgIGVtcHR5IGRpY3QuCisgICAgICAgICIiIgorICAgICAgICBhcmd1bWVudHMgPSBzZWxmLmFyZ3VtZW50cworICAgICAgICBpZiBub3QgYXJndW1lbnRzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG5ld19hcmd1bWVudHMgPSBbXQorICAgICAgICBmb3IgbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXdfYXJndW1lbnRzLmFwcGVuZCgobmFtZSwgYXJndW1lbnRzW25hbWVdKSkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5kZWZhdWx0IGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICAgICAgICAgIHZhbCA9IHBhcmFtLmRlZmF1bHQKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtLmtpbmQgaXMgX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICB2YWwgPSAoKQorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ua2luZCBpcyBfVkFSX0tFWVdPUkQ6CisgICAgICAgICAgICAgICAgICAgIHZhbCA9IHt9CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIEJvdW5kQXJndW1lbnRzIHdhcyBsaWtlbHkgcHJvZHVjZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgIyBTaWduYXR1cmUuYmluZF9wYXJ0aWFsKCkuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgbmV3X2FyZ3VtZW50cy5hcHBlbmQoKG5hbWUsIHZhbCkpCisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gT3JkZXJlZERpY3QobmV3X2FyZ3VtZW50cykKKwogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmIGlzIG90aGVyOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEJvdW5kQXJndW1lbnRzKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICByZXR1cm4gKHNlbGYuc2lnbmF0dXJlID09IG90aGVyLnNpZ25hdHVyZSBhbmQKICAgICAgICAgICAgICAgICBzZWxmLmFyZ3VtZW50cyA9PSBvdGhlci5hcmd1bWVudHMpCiAKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5fc2lnbmF0dXJlID0gc3RhdGVbJ19zaWduYXR1cmUnXQorICAgICAgICBzZWxmLmFyZ3VtZW50cyA9IHN0YXRlWydhcmd1bWVudHMnXQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHsnX3NpZ25hdHVyZSc6IHNlbGYuX3NpZ25hdHVyZSwgJ2FyZ3VtZW50cyc6IHNlbGYuYXJndW1lbnRzfQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhcmdzID0gW10KKyAgICAgICAgZm9yIGFyZywgdmFsdWUgaW4gc2VsZi5hcmd1bWVudHMuaXRlbXMoKToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCd7fT17IXJ9Jy5mb3JtYXQoYXJnLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAnPHt9ICh7fSk+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbihhcmdzKSkKKwogCiBjbGFzcyBTaWduYXR1cmU6Ci0gICAgJycnQSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIG92ZXJhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24uCisgICAgIiIiQSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIG92ZXJhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24uCiAgICAgSXQgc3RvcmVzIGEgUGFyYW1ldGVyIG9iamVjdCBmb3IgZWFjaCBwYXJhbWV0ZXIgYWNjZXB0ZWQgYnkgdGhlCiAgICAgZnVuY3Rpb24sIGFzIHdlbGwgYXMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIGZ1bmN0aW9uIGl0c2VsZi4KIApAQCAtMjMyMCw3ICsyNjUzLDcgQEAKICAgICAqIGJpbmRfcGFydGlhbCgqYXJncywgKiprd2FyZ3MpIC0+IEJvdW5kQXJndW1lbnRzCiAgICAgICAgIENyZWF0ZXMgYSBwYXJ0aWFsIG1hcHBpbmcgZnJvbSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICB0byBwYXJhbWV0ZXJzIChzaW11bGF0aW5nICdmdW5jdG9vbHMucGFydGlhbCcgYmVoYXZpb3IuKQotICAgICcnJworICAgICIiIgogCiAgICAgX19zbG90c19fID0gKCdfcmV0dXJuX2Fubm90YXRpb24nLCAnX3BhcmFtZXRlcnMnKQogCkBAIC0yMzMxLDkgKzI2NjQsOSBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmFtZXRlcnM9Tm9uZSwgKiwgcmV0dXJuX2Fubm90YXRpb249X2VtcHR5LAogICAgICAgICAgICAgICAgICBfX3ZhbGlkYXRlX3BhcmFtZXRlcnNfXz1UcnVlKToKLSAgICAgICAgJycnQ29uc3RydWN0cyBTaWduYXR1cmUgZnJvbSB0aGUgZ2l2ZW4gbGlzdCBvZiBQYXJhbWV0ZXIKKyAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZnJvbSB0aGUgZ2l2ZW4gbGlzdCBvZiBQYXJhbWV0ZXIKICAgICAgICAgb2JqZWN0cyBhbmQgJ3JldHVybl9hbm5vdGF0aW9uJy4gIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAKICAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgogICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQpAQCAtMjM4Miw4OSArMjcxNSwyOCBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKLSAgICAgICAgJycnQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24nJycKKyAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24uIiIiCiAKLSAgICAgICAgaXNfZHVja19mdW5jdGlvbiA9IEZhbHNlCi0gICAgICAgIGlmIG5vdCBpc2Z1bmN0aW9uKGZ1bmMpOgotICAgICAgICAgICAgaWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2UoZnVuYyk6Ci0gICAgICAgICAgICAgICAgaXNfZHVja19mdW5jdGlvbiA9IFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBJZiBpdCdzIG5vdCBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBhbmQgbm90IGEgZHVjayB0eXBlCi0gICAgICAgICAgICAgICAgIyBvZiBwdXJlIGZ1bmN0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nLmZvcm1hdChmdW5jKSkKLQotICAgICAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKLQotICAgICAgICAjIFBhcmFtZXRlciBpbmZvcm1hdGlvbi4KLSAgICAgICAgZnVuY19jb2RlID0gZnVuYy5fX2NvZGVfXwotICAgICAgICBwb3NfY291bnQgPSBmdW5jX2NvZGUuY29fYXJnY291bnQKLSAgICAgICAgYXJnX25hbWVzID0gZnVuY19jb2RlLmNvX3Zhcm5hbWVzCi0gICAgICAgIHBvc2l0aW9uYWwgPSB0dXBsZShhcmdfbmFtZXNbOnBvc19jb3VudF0pCi0gICAgICAgIGtleXdvcmRfb25seV9jb3VudCA9IGZ1bmNfY29kZS5jb19rd29ubHlhcmdjb3VudAotICAgICAgICBrZXl3b3JkX29ubHkgPSBhcmdfbmFtZXNbcG9zX2NvdW50Oihwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQpXQotICAgICAgICBhbm5vdGF0aW9ucyA9IGZ1bmMuX19hbm5vdGF0aW9uc19fCi0gICAgICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18KLSAgICAgICAga3dkZWZhdWx0cyA9IGZ1bmMuX19rd2RlZmF1bHRzX18KLQotICAgICAgICBpZiBkZWZhdWx0czoKLSAgICAgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSAwCi0KLSAgICAgICAgcGFyYW1ldGVycyA9IFtdCi0KLSAgICAgICAgIyBOb24ta2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgdy9vIGRlZmF1bHRzLgotICAgICAgICBub25fZGVmYXVsdF9jb3VudCA9IHBvc19jb3VudCAtIHBvc19kZWZhdWx0X2NvdW50Ci0gICAgICAgIGZvciBuYW1lIGluIHBvc2l0aW9uYWxbOm5vbl9kZWZhdWx0X2NvdW50XToKLSAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQotICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQpKQotCi0gICAgICAgICMgLi4uIHcvIGRlZmF1bHRzLgotICAgICAgICBmb3Igb2Zmc2V0LCBuYW1lIGluIGVudW1lcmF0ZShwb3NpdGlvbmFsW25vbl9kZWZhdWx0X2NvdW50Ol0pOgotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHRzW29mZnNldF0pKQotCi0gICAgICAgICMgKmFyZ3MKLSAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgQ09fVkFSQVJHUzoKLSAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50XQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9QT1NJVElPTkFMKSkKLQotICAgICAgICAjIEtleXdvcmQtb25seSBwYXJhbWV0ZXJzLgotICAgICAgICBmb3IgbmFtZSBpbiBrZXl3b3JkX29ubHk6Ci0gICAgICAgICAgICBkZWZhdWx0ID0gX2VtcHR5Ci0gICAgICAgICAgICBpZiBrd2RlZmF1bHRzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBrd2RlZmF1bHRzLmdldChuYW1lLCBfZW1wdHkpCi0KLSAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQotICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9LRVlXT1JEX09OTFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KSkKLSAgICAgICAgIyAqKmt3YXJncwotICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUzoKLSAgICAgICAgICAgIGluZGV4ID0gcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50Ci0gICAgICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgotICAgICAgICAgICAgICAgIGluZGV4ICs9IDEKLQotICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1tpbmRleF0KLSAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQotICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9WQVJfS0VZV09SRCkpCi0KLSAgICAgICAgIyBJcyAnZnVuYycgaXMgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbiAtIGRvbid0IHZhbGlkYXRlIHRoZQotICAgICAgICAjIHBhcmFtZXRlcnMgbGlzdCAoZm9yIGNvcnJlY3Qgb3JkZXIgYW5kIGRlZmF1bHRzKSwgaXQgc2hvdWxkIGJlIE9LLgotICAgICAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCi0gICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249YW5ub3RhdGlvbnMuZ2V0KCdyZXR1cm4nLCBfZW1wdHkpLAotICAgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPWlzX2R1Y2tfZnVuY3Rpb24pCisgICAgICAgIHdhcm5pbmdzLndhcm4oImluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oKSBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAgICAgICAgICAgInVzZSBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9mdW5jdGlvbihjbHMsIGZ1bmMpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbV9idWlsdGluKGNscywgZnVuYyk6CisgICAgICAgICIiIkNvbnN0cnVjdHMgU2lnbmF0dXJlIGZvciB0aGUgZ2l2ZW4gYnVpbHRpbiBmdW5jdGlvbi4iIiIKKworICAgICAgICB3YXJuaW5ncy53YXJuKCJpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2J1aWx0aW4oKSBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAgICAgICAgICAgInVzZSBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9idWlsdGluKGNscywgZnVuYykKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2NhbGxhYmxlKGNscywgb2JqLCAqLCBmb2xsb3dfd3JhcHBlZD1UcnVlKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBjYWxsYWJsZSBvYmplY3QuIiIiCisgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUob2JqLCBzaWdjbHM9Y2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlZCkKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBwYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fcGFyYW1ldGVycwpAQCAtMjQ3NCwxMCArMjc0NiwxMCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fcmV0dXJuX2Fubm90YXRpb24KIAogICAgIGRlZiByZXBsYWNlKHNlbGYsICosIHBhcmFtZXRlcnM9X3ZvaWQsIHJldHVybl9hbm5vdGF0aW9uPV92b2lkKToKLSAgICAgICAgJycnQ3JlYXRlcyBhIGN1c3RvbWl6ZWQgY29weSBvZiB0aGUgU2lnbmF0dXJlLgorICAgICAgICAiIiJDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBTaWduYXR1cmUuCiAgICAgICAgIFBhc3MgJ3BhcmFtZXRlcnMnIGFuZC9vciAncmV0dXJuX2Fubm90YXRpb24nIGFyZ3VtZW50cwogICAgICAgICB0byBvdmVycmlkZSB0aGVtIGluIHRoZSBuZXcgY29weS4KLSAgICAgICAgJycnCisgICAgICAgICIiIgogCiAgICAgICAgIGlmIHBhcmFtZXRlcnMgaXMgX3ZvaWQ6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzID0gc2VsZi5wYXJhbWV0ZXJzLnZhbHVlcygpCkBAIC0yNDg4LDM5ICsyNzYwLDI5IEBACiAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uPXJldHVybl9hbm5vdGF0aW9uKQogCisgICAgZGVmIF9oYXNoX2Jhc2lzKHNlbGYpOgorICAgICAgICBwYXJhbXMgPSB0dXBsZShwYXJhbSBmb3IgcGFyYW0gaW4gc2VsZi5wYXJhbWV0ZXJzLnZhbHVlcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgIT0gX0tFWVdPUkRfT05MWSkKKworICAgICAgICBrd29fcGFyYW1zID0ge3BhcmFtLm5hbWU6IHBhcmFtIGZvciBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9LRVlXT1JEX09OTFl9CisKKyAgICAgICAgcmV0dXJuIHBhcmFtcywga3dvX3BhcmFtcywgc2VsZi5yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICBwYXJhbXMsIGt3b19wYXJhbXMsIHJldHVybl9hbm5vdGF0aW9uID0gc2VsZi5faGFzaF9iYXNpcygpCisgICAgICAgIGt3b19wYXJhbXMgPSBmcm96ZW5zZXQoa3dvX3BhcmFtcy52YWx1ZXMoKSkKKyAgICAgICAgcmV0dXJuIGhhc2goKHBhcmFtcywga3dvX3BhcmFtcywgcmV0dXJuX2Fubm90YXRpb24pKQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2lnbmF0dXJlKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICBpZiAoc2VsZi5yZXR1cm5fYW5ub3RhdGlvbiAhPSBvdGhlci5yZXR1cm5fYW5ub3RhdGlvbiBvcgotICAgICAgICAgICAgbGVuKHNlbGYucGFyYW1ldGVycykgIT0gbGVuKG90aGVyLnBhcmFtZXRlcnMpKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIG90aGVyX3Bvc2l0aW9ucyA9IHtwYXJhbTogaWR4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaWR4LCBwYXJhbSBpbiBlbnVtZXJhdGUob3RoZXIucGFyYW1ldGVycy5rZXlzKCkpfQotCi0gICAgICAgIGZvciBpZHgsIChwYXJhbV9uYW1lLCBwYXJhbSkgaW4gZW51bWVyYXRlKHNlbGYucGFyYW1ldGVycy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX0tFWVdPUkRfT05MWToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG90aGVyX3BhcmFtID0gb3RoZXIucGFyYW1ldGVyc1twYXJhbV9uYW1lXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0gIT0gb3RoZXJfcGFyYW06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvdGhlcl9pZHggPSBvdGhlcl9wb3NpdGlvbnNbcGFyYW1fbmFtZV0KLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZHggIT0gb3RoZXJfaWR4IG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbSAhPSBvdGhlci5wYXJhbWV0ZXJzW3BhcmFtX25hbWVdKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoX2Jhc2lzKCkgPT0gb3RoZXIuX2hhc2hfYmFzaXMoKQogCiAgICAgZGVmIF9iaW5kKHNlbGYsIGFyZ3MsIGt3YXJncywgKiwgcGFydGlhbD1GYWxzZSk6Ci0gICAgICAgICcnJ1ByaXZhdGUgbWV0aG9kLiAgRG9uJ3QgdXNlIGRpcmVjdGx5LicnJworICAgICAgICAiIiJQcml2YXRlIG1ldGhvZC4gRG9uJ3QgdXNlIGRpcmVjdGx5LiIiIgogCiAgICAgICAgIGFyZ3VtZW50cyA9IE9yZGVyZWREaWN0KCkKIApAQCAtMjU2OCw3ICsyODMwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6IHthcmchcn0nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmZvcm1hdChhcmc9cGFyYW0ubmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNTgxLDcgKzI4NDMsOCBAQAogICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rcyBsaWtlIHdlIGhhdmUgbm8gcGFyYW1ldGVyIGZvciB0aGlzIHBvc2l0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpIGZyb20gTm9uZQogCiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGFuICcqYXJncyctbGlrZSBhcmd1bWVudCwgbGV0J3MgZmlsbCBpdCB3aXRoCkBAIC0yNTkzLDggKzI4NTYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5uYW1lIGluIGt3YXJnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3thcmchcn0nLmZvcm1hdChhcmc9cGFyYW0ubmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQge2FyZyFyfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmc9cGFyYW0ubmFtZSkpIGZyb20gTm9uZQogCiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKIApAQCAtMjYyMyw3ICsyODg3LDcgQEAKICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cy4KICAgICAgICAgICAgICAgICBpZiAobm90IHBhcnRpYWwgYW5kIHBhcmFtLmtpbmQgIT0gX1ZBUl9QT1NJVElPTkFMIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHQgaXMgX2VtcHR5KToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7YXJnIXJ9IHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUnLiBcCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiB7YXJnIXJ9Jy4gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KGFyZz1wYXJhbV9uYW1lKSkgZnJvbSBOb25lCiAKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjQyLDI0ICsyOTA2LDM3IEBACiAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzW2t3YXJnc19wYXJhbS5uYW1lXSA9IGt3YXJncwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJykKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50IHthcmchcn0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZz1uZXh0KGl0ZXIoa3dhcmdzKSkpKQogCiAgICAgICAgIHJldHVybiBzZWxmLl9ib3VuZF9hcmd1bWVudHNfY2xzKHNlbGYsIGFyZ3VtZW50cykKIAogICAgIGRlZiBiaW5kKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBtYXBzIHRoZSBwYXNzZWQgYGFyZ3NgCisgICAgICAgICIiIkdldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBtYXBzIHRoZSBwYXNzZWQgYGFyZ3NgCiAgICAgICAgIGFuZCBga3dhcmdzYCB0byB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUuICBSYWlzZXMgYFR5cGVFcnJvcmAKICAgICAgICAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KLSAgICAgICAgJycnCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gYXJnc1swXS5fYmluZChhcmdzWzE6XSwga3dhcmdzKQogCiAgICAgZGVmIGJpbmRfcGFydGlhbCgqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgcGFydGlhbGx5IG1hcHMgdGhlCisgICAgICAgICIiIkdldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKICAgICAgICAgcGFzc2VkIGBhcmdzYCBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLgogICAgICAgICBSYWlzZXMgYFR5cGVFcnJvcmAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KLSAgICAgICAgJycnCisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gYXJnc1swXS5fYmluZChhcmdzWzE6XSwga3dhcmdzLCBwYXJ0aWFsPVRydWUpCiAKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICh0eXBlKHNlbGYpLAorICAgICAgICAgICAgICAgICh0dXBsZShzZWxmLl9wYXJhbWV0ZXJzLnZhbHVlcygpKSwpLAorICAgICAgICAgICAgICAgIHsnX3JldHVybl9hbm5vdGF0aW9uJzogc2VsZi5fcmV0dXJuX2Fubm90YXRpb259KQorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uID0gc3RhdGVbJ19yZXR1cm5fYW5ub3RhdGlvbiddCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPHt9IHt9PicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmKQorCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgIHJlbmRlcl9wb3Nfb25seV9zZXBhcmF0b3IgPSBGYWxzZQpAQCAtMjcwNSw2ICsyOTgyLDEyIEBACiAKICAgICAgICAgcmV0dXJuIHJlbmRlcmVkCiAKKworZGVmIHNpZ25hdHVyZShvYmosICosIGZvbGxvd193cmFwcGVkPVRydWUpOgorICAgICIiIkdldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuIiIiCisgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKG9iaiwgZm9sbG93X3dyYXBwZWQ9Zm9sbG93X3dyYXBwZWQpCisKKwogZGVmIF9tYWluKCk6CiAgICAgIiIiIExvZ2ljIGZvciBpbnNwZWN0aW5nIGFuIG9iamVjdCBnaXZlbiBhdCBjb21tYW5kIGxpbmUgIiIiCiAgICAgaW1wb3J0IGFyZ3BhcnNlCmRpZmYgLS1naXQgYS9MaWIvaXBhZGRyZXNzLnB5IGIvTGliL2lwYWRkcmVzcy5weQppbmRleCBhYzAzYzM2Li43NDY5YTlkIDEwMDY0NAotLS0gYS9MaWIvaXBhZGRyZXNzLnB5CisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTEzNSw3ICsxMzUsNyBAQAogICAgICIiIgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoNCwgJ2JpZycpCi0gICAgZXhjZXB0OgorICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NCIpCiAKIApAQCAtMTUxLDcgKzE1MSw3IEBACiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gYWRkcmVzcy50b19ieXRlcygxNiwgJ2JpZycpCi0gICAgZXhjZXB0OgorICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NiIpCiAKIApAQCAtMTY0LDIyICsxNjQsMjMgQEAKIAogCiBkZWYgX2ZpbmRfYWRkcmVzc19yYW5nZShhZGRyZXNzZXMpOgotICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBJUHYjQWRkcmVzcy4KKyAgICAiIiJGaW5kIGEgc2VxdWVuY2Ugb2Ygc29ydGVkIGRlZHVwbGljYXRlZCBJUHYjQWRkcmVzcy4KIAogICAgIEFyZ3M6CiAgICAgICAgIGFkZHJlc3NlczogYSBsaXN0IG9mIElQdiNBZGRyZXNzIG9iamVjdHMuCiAKLSAgICBSZXR1cm5zOgorICAgIFlpZWxkczoKICAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBmaXJzdCBhbmQgbGFzdCBJUCBhZGRyZXNzZXMgaW4gdGhlIHNlcXVlbmNlLgogCiAgICAgIiIiCi0gICAgZmlyc3QgPSBsYXN0ID0gYWRkcmVzc2VzWzBdCi0gICAgZm9yIGlwIGluIGFkZHJlc3Nlc1sxOl06Ci0gICAgICAgIGlmIGlwLl9pcCA9PSBsYXN0Ll9pcCArIDE6Ci0gICAgICAgICAgICBsYXN0ID0gaXAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgcmV0dXJuIChmaXJzdCwgbGFzdCkKKyAgICBpdCA9IGl0ZXIoYWRkcmVzc2VzKQorICAgIGZpcnN0ID0gbGFzdCA9IG5leHQoaXQpCisgICAgZm9yIGlwIGluIGl0OgorICAgICAgICBpZiBpcC5faXAgIT0gbGFzdC5faXAgKyAxOgorICAgICAgICAgICAgeWllbGQgZmlyc3QsIGxhc3QKKyAgICAgICAgICAgIGZpcnN0ID0gaXAKKyAgICAgICAgbGFzdCA9IGlwCisgICAgeWllbGQgZmlyc3QsIGxhc3QKIAogCiBkZWYgX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMobnVtYmVyLCBiaXRzKToKQEAgLTE5NSwxMSArMTk2LDcgQEAKICAgICAiIiIKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgcmV0dXJuIGJpdHMKLSAgICBmb3IgaSBpbiByYW5nZShiaXRzKToKLSAgICAgICAgaWYgKG51bWJlciA+PiBpKSAmIDE6Ci0gICAgICAgICAgICByZXR1cm4gaQotICAgICMgQWxsIGJpdHMgb2YgaW50ZXJlc3Qgd2VyZSB6ZXJvLCBldmVuIGlmIHRoZXJlIGFyZSBtb3JlIGluIHRoZSBudW1iZXIKLSAgICByZXR1cm4gYml0cworICAgIHJldHVybiBtaW4oYml0cywgKH5udW1iZXIgJiAobnVtYmVyLTEpKS5iaXRfbGVuZ3RoKCkpCiAKIAogZGVmIHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKGZpcnN0LCBsYXN0KToKQEAgLTI1MCwxNSArMjQ3LDE0IEBACiAgICAgd2hpbGUgZmlyc3RfaW50IDw9IGxhc3RfaW50OgogICAgICAgICBuYml0cyA9IG1pbihfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhmaXJzdF9pbnQsIGlwX2JpdHMpLAogICAgICAgICAgICAgICAgICAgICAobGFzdF9pbnQgLSBmaXJzdF9pbnQgKyAxKS5iaXRfbGVuZ3RoKCkgLSAxKQotICAgICAgICBuZXQgPSBpcCgnJXMvJWQnICUgKGZpcnN0LCBpcF9iaXRzIC0gbmJpdHMpKQorICAgICAgICBuZXQgPSBpcCgoZmlyc3RfaW50LCBpcF9iaXRzIC0gbmJpdHMpKQogICAgICAgICB5aWVsZCBuZXQKICAgICAgICAgZmlyc3RfaW50ICs9IDEgPDwgbmJpdHMKICAgICAgICAgaWYgZmlyc3RfaW50IC0gMSA9PSBpcC5fQUxMX09ORVM6CiAgICAgICAgICAgICBicmVhawotICAgICAgICBmaXJzdCA9IGZpcnN0Ll9fY2xhc3NfXyhmaXJzdF9pbnQpCiAKIAotZGVmIF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKGFkZHJlc3Nlcyk6CitkZWYgX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChhZGRyZXNzZXMpOgogICAgICIiIkxvb3BzIHRocm91Z2ggdGhlIGFkZHJlc3NlcywgY29sbGFwc2luZyBjb25jdXJyZW50IG5ldGJsb2Nrcy4KIAogICAgIEV4YW1wbGU6CkBAIC0yNjgsNyArMjY0LDcgQEAKICAgICAgICAgaXAzID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JykKICAgICAgICAgaXA0ID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JykKIAotICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KKyAgICAgICAgX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KICAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQogCiAgICAgICAgIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBkaXJlY3RseTsgaXQgaXMgY2FsbGVkIHZpYQpAQCAtMjgyLDI4ICsyNzgsMjkgQEAKICAgICAgICAgcGFzc2VkLgogCiAgICAgIiIiCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgbGFzdF9hZGRyID0gTm9uZQotICAgICAgICByZXRfYXJyYXkgPSBbXQotICAgICAgICBvcHRpbWl6ZWQgPSBGYWxzZQotCi0gICAgICAgIGZvciBjdXJfYWRkciBpbiBhZGRyZXNzZXM6Ci0gICAgICAgICAgICBpZiBub3QgcmV0X2FycmF5OgotICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCi0gICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKLSAgICAgICAgICAgIGVsaWYgKGN1cl9hZGRyLm5ldHdvcmtfYWRkcmVzcyA+PSBsYXN0X2FkZHIubmV0d29ya19hZGRyZXNzIGFuZAotICAgICAgICAgICAgICAgIGN1cl9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IGxhc3RfYWRkci5icm9hZGNhc3RfYWRkcmVzcyk6Ci0gICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBjdXJfYWRkciA9PSBsaXN0KGxhc3RfYWRkci5zdXBlcm5ldCgpLnN1Ym5ldHMoKSlbMV06Ci0gICAgICAgICAgICAgICAgcmV0X2FycmF5Wy0xXSA9IGxhc3RfYWRkciA9IGxhc3RfYWRkci5zdXBlcm5ldCgpCi0gICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsYXN0X2FkZHIgPSBjdXJfYWRkcgotICAgICAgICAgICAgICAgIHJldF9hcnJheS5hcHBlbmQoY3VyX2FkZHIpCi0KLSAgICAgICAgYWRkcmVzc2VzID0gcmV0X2FycmF5Ci0gICAgICAgIGlmIG5vdCBvcHRpbWl6ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gYWRkcmVzc2VzCisgICAgIyBGaXJzdCBtZXJnZQorICAgIHRvX21lcmdlID0gbGlzdChhZGRyZXNzZXMpCisgICAgc3VibmV0cyA9IHt9CisgICAgd2hpbGUgdG9fbWVyZ2U6CisgICAgICAgIG5ldCA9IHRvX21lcmdlLnBvcCgpCisgICAgICAgIHN1cGVybmV0ID0gbmV0LnN1cGVybmV0KCkKKyAgICAgICAgZXhpc3RpbmcgPSBzdWJuZXRzLmdldChzdXBlcm5ldCkKKyAgICAgICAgaWYgZXhpc3RpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHN1Ym5ldHNbc3VwZXJuZXRdID0gbmV0CisgICAgICAgIGVsaWYgZXhpc3RpbmcgIT0gbmV0OgorICAgICAgICAgICAgIyBNZXJnZSBjb25zZWN1dGl2ZSBzdWJuZXRzCisgICAgICAgICAgICBkZWwgc3VibmV0c1tzdXBlcm5ldF0KKyAgICAgICAgICAgIHRvX21lcmdlLmFwcGVuZChzdXBlcm5ldCkKKyAgICAjIFRoZW4gaXRlcmF0ZSBvdmVyIHJlc3VsdGluZyBuZXR3b3Jrcywgc2tpcHBpbmcgc3Vic3VtZWQgc3VibmV0cworICAgIGxhc3QgPSBOb25lCisgICAgZm9yIG5ldCBpbiBzb3J0ZWQoc3VibmV0cy52YWx1ZXMoKSk6CisgICAgICAgIGlmIGxhc3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIFNpbmNlIHRoZXkgYXJlIHNvcnRlZCwgbGFzdC5uZXR3b3JrX2FkZHJlc3MgPD0gbmV0Lm5ldHdvcmtfYWRkcmVzcworICAgICAgICAgICAgIyBpcyBhIGdpdmVuLgorICAgICAgICAgICAgaWYgbGFzdC5icm9hZGNhc3RfYWRkcmVzcyA+PSBuZXQuYnJvYWRjYXN0X2FkZHJlc3M6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgeWllbGQgbmV0CisgICAgICAgIGxhc3QgPSBuZXQKIAogCiBkZWYgY29sbGFwc2VfYWRkcmVzc2VzKGFkZHJlc3Nlcyk6CkBAIC0zMjQsNyArMzIxLDYgQEAKICAgICAgICAgVHlwZUVycm9yOiBJZiBwYXNzZWQgYSBsaXN0IG9mIG1peGVkIHZlcnNpb24gb2JqZWN0cy4KIAogICAgICIiIgotICAgIGkgPSAwCiAgICAgYWRkcnMgPSBbXQogICAgIGlwcyA9IFtdCiAgICAgbmV0cyA9IFtdCkBAIC0zNTIsMTUgKzM0OCwxMyBAQAogCiAgICAgIyBzb3J0IGFuZCBkZWR1cAogICAgIGlwcyA9IHNvcnRlZChzZXQoaXBzKSkKLSAgICBuZXRzID0gc29ydGVkKHNldChuZXRzKSkKIAotICAgIHdoaWxlIGkgPCBsZW4oaXBzKToKLSAgICAgICAgKGZpcnN0LCBsYXN0KSA9IF9maW5kX2FkZHJlc3NfcmFuZ2UoaXBzW2k6XSkKLSAgICAgICAgaSA9IGlwcy5pbmRleChsYXN0KSArIDEKLSAgICAgICAgYWRkcnMuZXh0ZW5kKHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKGZpcnN0LCBsYXN0KSkKKyAgICAjIGZpbmQgY29uc2VjdXRpdmUgYWRkcmVzcyByYW5nZXMgaW4gdGhlIHNvcnRlZCBzZXF1ZW5jZSBhbmQgc3VtbWFyaXplIHRoZW0KKyAgICBpZiBpcHM6CisgICAgICAgIGZvciBmaXJzdCwgbGFzdCBpbiBfZmluZF9hZGRyZXNzX3JhbmdlKGlwcyk6CisgICAgICAgICAgICBhZGRycy5leHRlbmQoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpKQogCi0gICAgcmV0dXJuIGl0ZXIoX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoc29ydGVkKAotICAgICAgICBhZGRycyArIG5ldHMsIGtleT1fQmFzZU5ldHdvcmsuX2dldF9uZXR3b3Jrc19rZXkpKSkKKyAgICByZXR1cm4gX2NvbGxhcHNlX2FkZHJlc3Nlc19pbnRlcm5hbChhZGRycyArIG5ldHMpCiAKIAogZGVmIGdldF9taXhlZF90eXBlX2tleShvYmopOgpAQCAtMzkyLDYgKzM4Niw4IEBACiAKICAgICAiIiJUaGUgbW90aGVyIGNsYXNzLiIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBleHBsb2RlZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsb25naGFuZCB2ZXJzaW9uIG9mIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIiIgpAQCAtNDAzLDYgKzM5OSwxNyBAQAogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgcmV2ZXJzZV9wb2ludGVyKHNlbGYpOgorICAgICAgICAiIiJUaGUgbmFtZSBvZiB0aGUgcmV2ZXJzZSBETlMgcG9pbnRlciBmb3IgdGhlIElQIGFkZHJlc3MsIGUuZy46CisgICAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjEyNy4wLjAuMSIpLnJldmVyc2VfcG9pbnRlcgorICAgICAgICAgICAgJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnCisgICAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjIwMDE6ZGI4OjoxIikucmV2ZXJzZV9wb2ludGVyCisgICAgICAgICAgICAnMS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuOC5iLmQuMC4xLjAuMC4yLmlwNi5hcnBhJworCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmV2ZXJzZV9wb2ludGVyKCkKKworICAgIEBwcm9wZXJ0eQogICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgogICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIHZlcnNpb24gc3BlY2lmaWVkJyAlICh0eXBlKHNlbGYpLCkKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCkBAIC00MjMsNyArNDMwLDggQEAKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBhZGRyZXNzX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4sIHNlbGYuX3ZlcnNpb24pKQogCi0gICAgZGVmIF9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChjbHMsIHByZWZpeGxlbik6CiAgICAgICAgICIiIlR1cm4gdGhlIHByZWZpeCBsZW5ndGggaW50byBhIGJpdHdpc2UgbmV0bWFzawogCiAgICAgICAgIEFyZ3M6CkBAIC00MzMsOSArNDQxLDEwIEBACiAgICAgICAgICAgICBBbiBpbnRlZ2VyLgogCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fQUxMX09ORVMgXiAoc2VsZi5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQorICAgICAgICByZXR1cm4gY2xzLl9BTExfT05FUyBeIChjbHMuX0FMTF9PTkVTID4+IHByZWZpeGxlbikKIAotICAgIGRlZiBfcHJlZml4X2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoY2xzLCBpcF9pbnQpOgogICAgICAgICAiIiJSZXR1cm4gcHJlZml4IGxlbmd0aCBmcm9tIHRoZSBiaXR3aXNlIG5ldG1hc2suCiAKICAgICAgICAgQXJnczoKQEAgLTQ0OCwyMiArNDU3LDI0IEBACiAgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiB0aGUgaW5wdXQgaW50ZXJtaW5nbGVzIHplcm9lcyAmIG9uZXMKICAgICAgICAgIiIiCiAgICAgICAgIHRyYWlsaW5nX3plcm9lcyA9IF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGlwX2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbikKLSAgICAgICAgcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbiAtIHRyYWlsaW5nX3plcm9lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuX21heF9wcmVmaXhsZW4pCisgICAgICAgIHByZWZpeGxlbiA9IGNscy5fbWF4X3ByZWZpeGxlbiAtIHRyYWlsaW5nX3plcm9lcwogICAgICAgICBsZWFkaW5nX29uZXMgPSBpcF9pbnQgPj4gdHJhaWxpbmdfemVyb2VzCiAgICAgICAgIGFsbF9vbmVzID0gKDEgPDwgcHJlZml4bGVuKSAtIDEKICAgICAgICAgaWYgbGVhZGluZ19vbmVzICE9IGFsbF9vbmVzOgotICAgICAgICAgICAgYnl0ZXNsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuIC8vIDgKKyAgICAgICAgICAgIGJ5dGVzbGVuID0gY2xzLl9tYXhfcHJlZml4bGVuIC8vIDgKICAgICAgICAgICAgIGRldGFpbHMgPSBpcF9pbnQudG9fYnl0ZXMoYnl0ZXNsZW4sICdiaWcnKQogICAgICAgICAgICAgbXNnID0gJ05ldG1hc2sgcGF0dGVybiAlciBtaXhlcyB6ZXJvZXMgJiBvbmVzJwogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBkZXRhaWxzKQogICAgICAgICByZXR1cm4gcHJlZml4bGVuCiAKLSAgICBkZWYgX3JlcG9ydF9pbnZhbGlkX25ldG1hc2soc2VsZiwgbmV0bWFza19zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVwb3J0X2ludmFsaWRfbmV0bWFzayhjbHMsIG5ldG1hc2tfc3RyKToKICAgICAgICAgbXNnID0gJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snICUgbmV0bWFza19zdHIKICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IobXNnKSBmcm9tIE5vbmUKIAotICAgIGRlZiBfcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhzZWxmLCBwcmVmaXhsZW5fc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3ByZWZpeF9mcm9tX3ByZWZpeF9zdHJpbmcoY2xzLCBwcmVmaXhsZW5fc3RyKToKICAgICAgICAgIiIiUmV0dXJuIHByZWZpeCBsZW5ndGggZnJvbSBhIG51bWVyaWMgc3RyaW5nCiAKICAgICAgICAgQXJnczoKQEAgLTQ3OCwxNiArNDg5LDE3IEBACiAgICAgICAgICMgaW50IGFsbG93cyBhIGxlYWRpbmcgKy8tIGFzIHdlbGwgYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZSwKICAgICAgICAgIyBzbyB3ZSBlbnN1cmUgdGhhdCBpc24ndCB0aGUgY2FzZQogICAgICAgICBpZiBub3QgX0Jhc2VWNC5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChwcmVmaXhsZW5fc3RyKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwcmVmaXhsZW4gPSBpbnQocHJlZml4bGVuX3N0cikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCi0gICAgICAgIGlmIG5vdCAoMCA8PSBwcmVmaXhsZW4gPD0gc2VsZi5fbWF4X3ByZWZpeGxlbik6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCisgICAgICAgICAgICBjbHMuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKKyAgICAgICAgaWYgbm90ICgwIDw9IHByZWZpeGxlbiA8PSBjbHMuX21heF9wcmVmaXhsZW4pOgorICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCiAgICAgICAgIHJldHVybiBwcmVmaXhsZW4KIAotICAgIGRlZiBfcHJlZml4X2Zyb21faXBfc3RyaW5nKHNlbGYsIGlwX3N0cik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoY2xzLCBpcF9zdHIpOgogICAgICAgICAiIiJUdXJuIGEgbmV0bWFzay9ob3N0bWFzayBzdHJpbmcgaW50byBhIHByZWZpeCBsZW5ndGgKIAogICAgICAgICBBcmdzOgpAQCAtNTAxLDI0ICs1MTMsMjcgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgUGFyc2UgdGhlIG5ldG1hc2svaG9zdG1hc2sgbGlrZSBhbiBJUCBhZGRyZXNzLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpcF9pbnQgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoaXBfc3RyKQorICAgICAgICAgICAgaXBfaW50ID0gY2xzLl9pcF9pbnRfZnJvbV9zdHJpbmcoaXBfc3RyKQogICAgICAgICBleGNlcHQgQWRkcmVzc1ZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGlwX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCiAKICAgICAgICAgIyBUcnkgbWF0Y2hpbmcgYSBuZXRtYXNrICh0aGlzIHdvdWxkIGJlIC8xKjAqLyBhcyBhIGJpdHdpc2UgcmVnZXhwKS4KICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIHR3byBhbWJpZ3VvdXMgY2FzZXMgKGFsbC1vbmVzIGFuZCBhbGwtemVyb2VzKSBhcmUKICAgICAgICAgIyB0cmVhdGVkIGFzIG5ldG1hc2tzLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKKyAgICAgICAgICAgIHJldHVybiBjbHMuX3ByZWZpeF9mcm9tX2lwX2ludChpcF9pbnQpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICMgSW52ZXJ0IHRoZSBiaXRzLCBhbmQgdHJ5IG1hdGNoaW5nIGEgLzArMSsvIGhvc3RtYXNrIGluc3RlYWQuCi0gICAgICAgIGlwX2ludCBePSBzZWxmLl9BTExfT05FUworICAgICAgICBpcF9pbnQgXj0gY2xzLl9BTExfT05FUwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKKyAgICAgICAgICAgIHJldHVybiBjbHMuX3ByZWZpeF9mcm9tX2lwX2ludChpcF9pbnQpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCisgICAgICAgICAgICBjbHMuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2soaXBfc3RyKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHN0cihzZWxmKSwpCiAKIAogQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZwpAQCAtNTMwLDEwICs1NDUsNyBAQAogICAgIHVzZWQgYnkgc2luZ2xlIElQIGFkZHJlc3Nlcy4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKLSAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKQotICAgICAgICAgICAgYW5kICcvJyBpbiBzdHIoYWRkcmVzcykpOgotICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiAlIGFkZHJlc3MpCisgICAgX19zbG90c19fID0gKCkKIAogICAgIGRlZiBfX2ludF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faXAKQEAgLTU3OSw2ICs1OTEsOSBAQAogICAgIGRlZiBfZ2V0X2FkZHJlc3Nfa2V5KHNlbGYpOgogICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24sIHNlbGYpCiAKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5faXAsKQorCiAKIEBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKIGNsYXNzIF9CYXNlTmV0d29yayhfSVBBZGRyZXNzQmFzZSk6CkBAIC03NjUsNyArNzgwLDcgQEAKICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIG5vdCBjb250YWluZWQgaW4gJXMnICUgKG90aGVyLCBzZWxmKSkKICAgICAgICAgaWYgb3RoZXIgPT0gc2VsZjoKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgTWFrZSBzdXJlIHdlJ3JlIGNvbXBhcmluZyB0aGUgbmV0d29yayBvZiBvdGhlci4KICAgICAgICAgb3RoZXIgPSBvdGhlci5fX2NsYXNzX18oJyVzLyVzJyAlIChvdGhlci5uZXR3b3JrX2FkZHJlc3MsCkBAIC05MDAsMjAgKzkxNSwxMSBAQAogICAgICAgICAgICAgICAgICdwcmVmaXggbGVuZ3RoIGRpZmYgJWQgaXMgaW52YWxpZCBmb3IgbmV0YmxvY2sgJXMnICUgKAogICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuLCBzZWxmKSkKIAotICAgICAgICBmaXJzdCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmV0d29ya19hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmKSkKLQotICAgICAgICB5aWVsZCBmaXJzdAotICAgICAgICBjdXJyZW50ID0gZmlyc3QKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGJyb2FkY2FzdCA9IGN1cnJlbnQuYnJvYWRjYXN0X2FkZHJlc3MKLSAgICAgICAgICAgIGlmIGJyb2FkY2FzdCA9PSBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgbmV3X2FkZHIgPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChicm9hZGNhc3QpICsgMSkKLSAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJXMnICUgKG5ld19hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbikpCi0KKyAgICAgICAgc3RhcnQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGVuZCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBzdGVwID0gKGludChzZWxmLmhvc3RtYXNrKSArIDEpID4+IHByZWZpeGxlbl9kaWZmCisgICAgICAgIGZvciBuZXdfYWRkciBpbiByYW5nZShzdGFydCwgZW5kLCBzdGVwKToKKyAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLl9fY2xhc3NfXygobmV3X2FkZHIsIG5ld19wcmVmaXhsZW4pKQogICAgICAgICAgICAgeWllbGQgY3VycmVudAogCiAgICAgZGVmIHN1cGVybmV0KHNlbGYsIHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSk6CkBAIC05NDcsMTUgKzk1MywxNSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQogICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgPSBzZWxmLl9wcmVmaXhsZW4gLSBuZXdfcHJlZml4CiAKLSAgICAgICAgaWYgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiA8IDA6CisgICAgICAgIG5ld19wcmVmaXhsZW4gPSBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmCisgICAgICAgIGlmIG5ld19wcmVmaXhsZW4gPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAnY3VycmVudCBwcmVmaXhsZW4gaXMgJWQsIGNhbm5vdCBoYXZlIGEgcHJlZml4bGVuX2RpZmYgb2YgJWQnICUKICAgICAgICAgICAgICAgICAoc2VsZi5wcmVmaXhsZW4sIHByZWZpeGxlbl9kaWZmKSkKLSAgICAgICAgIyBUT0RPIChwbW9vZHkpOiBvcHRpbWl6ZSB0aGlzLgotICAgICAgICB0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKQotICAgICAgICByZXR1cm4gdC5fX2NsYXNzX18oJyVzLyVkJyAlICh0Lm5ldHdvcmtfYWRkcmVzcywgdC5wcmVmaXhsZW4pKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oKAorICAgICAgICAgICAgaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIChpbnQoc2VsZi5uZXRtYXNrKSA8PCBwcmVmaXhsZW5fZGlmZiksCisgICAgICAgICAgICBuZXdfcHJlZml4bGVuCisgICAgICAgICAgICApKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKQEAgLTEwNDksMjEgKzEwNTUsNDkgQEAKIAogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKyAgICBfdmVyc2lvbiA9IDQKICAgICAjIEVxdWl2YWxlbnQgdG8gMjU1LjI1NS4yNTUuMjU1IG9yIDMyIGJpdHMgb2YgMSdzLgogICAgIF9BTExfT05FUyA9ICgyKipJUFY0TEVOR1RIKSAtIDEKICAgICBfREVDSU1BTF9ESUdJVFMgPSBmcm96ZW5zZXQoJzAxMjM0NTY3ODknKQogCiAgICAgIyB0aGUgdmFsaWQgb2N0ZXRzIGZvciBob3N0IGFuZCBuZXRtYXNrcy4gb25seSB1c2VmdWwgZm9yIElQdjQuCi0gICAgX3ZhbGlkX21hc2tfb2N0ZXRzID0gZnJvemVuc2V0KCgyNTUsIDI1NCwgMjUyLCAyNDgsIDI0MCwgMjI0LCAxOTIsIDEyOCwgMCkpCisgICAgX3ZhbGlkX21hc2tfb2N0ZXRzID0gZnJvemVuc2V0KHsyNTUsIDI1NCwgMjUyLCAyNDgsIDI0MCwgMjI0LCAxOTIsIDEyOCwgMH0pCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6Ci0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSA0Ci0gICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY0TEVOR1RICisgICAgX21heF9wcmVmaXhsZW4gPSBJUFY0TEVOR1RICisgICAgIyBUaGVyZSBhcmUgb25seSBhIGhhbmRmdWwgb2YgdmFsaWQgdjQgbmV0bWFza3MsIHNvIHdlIGNhY2hlIHRoZW0gYWxsCisgICAgIyB3aGVuIGNvbnN0cnVjdGVkIChzZWUgX21ha2VfbmV0bWFzaygpKS4KKyAgICBfbmV0bWFza19jYWNoZSA9IHt9CiAKICAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN0cihzZWxmKQogCi0gICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21ha2VfbmV0bWFzayhjbHMsIGFyZyk6CisgICAgICAgICIiIk1ha2UgYSAobmV0bWFzaywgcHJlZml4X2xlbikgdHVwbGUgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnQuCisKKyAgICAgICAgQXJndW1lbnQgY2FuIGJlOgorICAgICAgICAtIGFuIGludGVnZXIgKHRoZSBwcmVmaXggbGVuZ3RoKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aCAoZS5nLiAiMjQiKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG5ldG1hc2sgKGUuZy4gIjI1NS4yNTUuMjU1LjAiKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgYXJnIG5vdCBpbiBjbHMuX25ldG1hc2tfY2FjaGU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgaW50KToKKyAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBhcmcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtCisgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGNscy5fcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhhcmcpCisgICAgICAgICAgICAgICAgZXhjZXB0IE5ldG1hc2tWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgb3IgaG9zdG1hc2sgaW4gZG90dGVkLXF1YWQgZm9ybS4KKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBOZXRtYXNrVmFsdWVFcnJvci4KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoYXJnKQorICAgICAgICAgICAgbmV0bWFzayA9IElQdjRBZGRyZXNzKGNscy5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCisgICAgICAgICAgICBjbHMuX25ldG1hc2tfY2FjaGVbYXJnXSA9IG5ldG1hc2ssIHByZWZpeGxlbgorICAgICAgICByZXR1cm4gY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKGNscywgaXBfc3RyKToKICAgICAgICAgIiIiVHVybiB0aGUgZ2l2ZW4gSVAgc3RyaW5nIGludG8gYW4gaW50ZWdlciBmb3IgY29tcGFyaXNvbi4KIAogICAgICAgICBBcmdzOgpAQCAtMTA4NCwxMSArMTExOCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiAlIGlwX3N0cikKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW50LmZyb21fYnl0ZXMobWFwKHNlbGYuX3BhcnNlX29jdGV0LCBvY3RldHMpLCAnYmlnJykKKyAgICAgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhtYXAoY2xzLl9wYXJzZV9vY3RldCwgb2N0ZXRzKSwgJ2JpZycpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKIAotICAgIGRlZiBfcGFyc2Vfb2N0ZXQoc2VsZiwgb2N0ZXRfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhcnNlX29jdGV0KGNscywgb2N0ZXRfc3RyKToKICAgICAgICAgIiIiQ29udmVydCBhIGRlY2ltYWwgb2N0ZXQgaW50byBhbiBpbnRlZ2VyLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xMTA0LDcgKzExMzksNyBAQAogICAgICAgICBpZiBub3Qgb2N0ZXRfc3RyOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgb2N0ZXQgbm90IHBlcm1pdHRlZCIpCiAgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KLSAgICAgICAgaWYgbm90IHNlbGYuX0RFQ0lNQUxfRElHSVRTLmlzc3VwZXJzZXQob2N0ZXRfc3RyKToKKyAgICAgICAgaWYgbm90IGNscy5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChvY3RldF9zdHIpOgogICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCiAgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgpAQCAtMTEyNCw3ICsxMTU5LDggQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9jdGV0ICVkICg+IDI1NSkgbm90IHBlcm1pdHRlZCIgJSBvY3RldF9pbnQpCiAgICAgICAgIHJldHVybiBvY3RldF9pbnQKIAotICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoY2xzLCBpcF9pbnQpOgogICAgICAgICAiIiJUdXJucyBhIDMyLWJpdCBpbnRlZ2VyIGludG8gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCiAKICAgICAgICAgQXJnczoKQEAgLTExODgsNiArMTIyNCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgX3JldmVyc2VfcG9pbnRlcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByZXZlcnNlIEROUyBwb2ludGVyIG5hbWUgZm9yIHRoZSBJUHY0IGFkZHJlc3MuCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRzIHRoZSBtZXRob2QgZGVzY3JpYmVkIGluIFJGQzEwMzUgMy41LgorCisgICAgICAgICIiIgorICAgICAgICByZXZlcnNlX29jdGV0cyA9IHN0cihzZWxmKS5zcGxpdCgnLicpWzo6LTFdCisgICAgICAgIHJldHVybiAnLicuam9pbihyZXZlcnNlX29jdGV0cykgKyAnLmluLWFkZHIuYXJwYScKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgpAQCAtMTIwMSw2ICsxMjQ2LDggQEAKIAogICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NCBBZGRyZXNzZXMuIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoJ19pcCcsICdfX3dlYWtyZWZfXycpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CiAKICAgICAgICAgIiIiCkBAIC0xMjE3LDkgKzEyNjQsNiBAQAogICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGlwYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCi0gICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLQogICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCkBAIC0xMjM1LDYgKzEyNzksOCBAQAogICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgogICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgogICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBpZiAnLycgaW4gYWRkcl9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKICAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCiAKICAgICBAcHJvcGVydHkKQEAgLTEyNTEsOCArMTI5Nyw3IEBACiAgICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NCBOZXR3b3JrIHJhbmdlLgogCiAgICAgICAgICIiIgotICAgICAgICByZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gcmVzZXJ2ZWRfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX3Jlc2VydmVkX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKCkKQEAgLTEyNjQsMjEgKzEzMDksNyBAQAogICAgICAgICAgICAgaWFuYS1pcHY0LXNwZWNpYWwtcmVnaXN0cnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZiBpbiBJUHY0TmV0d29yaygnMC4wLjAuMC84Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxMC4wLjAuMC84Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE3Mi4xNi4wLjAvMTInKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yOScpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjAuMC4xNzAvMzEnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5OC4xOC4wLjAvMTUnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzE5OC41MS4xMDAuMC8yNCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMjAzLjAuMTEzLjAvMjQnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcyNTUuMjU1LjI1NS4yNTUvMzInKSkKLQorICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4gbmV0IGZvciBuZXQgaW4gc2VsZi5fY29uc3RhbnRzLl9wcml2YXRlX25ldHdvcmtzKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKQEAgLTEyODksOCArMTMyMCw3IEBACiAgICAgICAgICAgICBTZWUgUkZDIDMxNzEgZm9yIGRldGFpbHMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzIyNC4wLjAuMC80JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9tdWx0aWNhc3RfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgpAQCAtMTMwMSw4ICsxMzMxLDcgQEAKICAgICAgICAgICAgIFJGQyA1NzM1IDMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHVuc3BlY2lmaWVkX2FkZHJlc3MgPSBJUHY0QWRkcmVzcygnMC4wLjAuMCcpCi0gICAgICAgIHJldHVybiBzZWxmID09IHVuc3BlY2lmaWVkX2FkZHJlc3MKKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gc2VsZi5fY29uc3RhbnRzLl91bnNwZWNpZmllZF9hZGRyZXNzCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CkBAIC0xMzEyLDggKzEzNDEsNyBAQAogICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgcGVyIFJGQyAzMzMwLgogCiAgICAgICAgICIiIgotICAgICAgICBsb29wYmFja19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gbG9vcGJhY2tfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX2xvb3BiYWNrX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgpAQCAtMTMyMyw4ICsxMzUxLDcgQEAKICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBsaW5rLWxvY2FsIHBlciBSRkMgMzkyNy4KIAogICAgICAgICAiIiIKLSAgICAgICAgbGlua2xvY2FsX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX2xpbmtsb2NhbF9uZXR3b3JrCiAKIAogY2xhc3MgSVB2NEludGVyZmFjZShJUHY0QWRkcmVzcyk6CkBAIC0xMzM2LDYgKzEzNjMsMTggQEAKICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgdHVwbGUpOgorICAgICAgICAgICAgSVB2NEFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzc1swXSkKKyAgICAgICAgICAgIGlmIGxlbihhZGRyZXNzKSA+IDE6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gaW50KGFkZHJlc3NbMV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQogICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQogCkBAIC0xMzc1LDYgKzE0MTQsOCBAQAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCiAKKyAgICBfX3JlZHVjZV9fID0gX0lQQWRkcmVzc0Jhc2UuX19yZWR1Y2VfXworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlwKHNlbGYpOgogICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3Moc2VsZi5faXApCkBAIC0xNDQ3LDI0ICsxNDg4LDMwIEBACiAgICAgICAgICAgICAgIHN1cHBsaWVkLgogCiAgICAgICAgICIiIgotCi0gICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKICAgICAgICAgX0Jhc2VOZXR3b3JrLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCiAKLSAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3Mgb3IgaW50ZWdlcgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIChpbnQsIGJ5dGVzKSk6CiAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCi0gICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKLSAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2soc2VsZi5fbWF4X3ByZWZpeGxlbikKKyAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZS4KICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgotICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgotICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCi0gICAgICAgICAgICAjZml4bWU6IGFkZHJlc3MvbmV0d29yayB0ZXN0IGhlcmUuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgdHVwbGUpOgorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBhcmcgPSBhZGRyZXNzWzFdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2Ugd2VyZW4ndCBnaXZlbiBhbiBhZGRyZXNzWzFdCisgICAgICAgICAgICAgICAgYXJnID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzWzBdKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2soYXJnKQorICAgICAgICAgICAgcGFja2VkID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICAgICAgaWYgcGFja2VkICYgaW50KHNlbGYubmV0bWFzaykgIT0gcGFja2VkOgorICAgICAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgaGFzIGhvc3QgYml0cyBzZXQnICUgc2VsZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHBhY2tlZCAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgpAQCAtMTQ3MywxNiArMTUyMCwxMCBAQAogICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzBdKSkKIAogICAgICAgICBpZiBsZW4oYWRkcikgPT0gMjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIENoZWNrIGZvciBhIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhhZGRyWzFdKQotICAgICAgICAgICAgZXhjZXB0IE5ldG1hc2tWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBvciBob3N0bWFzayBpbiBkb3R0ZWQtcXVhZCBmb3JtLgotICAgICAgICAgICAgICAgICMgVGhpcyBtYXkgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IuCi0gICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21faXBfc3RyaW5nKGFkZHJbMV0pCisgICAgICAgICAgICBhcmcgPSBhZGRyWzFdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCi0gICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLl9wcmVmaXhsZW4pKQorICAgICAgICAgICAgYXJnID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCiAKICAgICAgICAgaWYgc3RyaWN0OgogICAgICAgICAgICAgaWYgKElQdjRBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KQEAgLTE1MDksNiArMTU1MCwzNyBAQAogICAgICAgICAgICAgICAgIG5vdCBzZWxmLmlzX3ByaXZhdGUpCiAKIAorY2xhc3MgX0lQdjRDb25zdGFudHM6CisgICAgX2xpbmtsb2NhbF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzE2OS4yNTQuMC4wLzE2JykKKworICAgIF9sb29wYmFja19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84JykKKworICAgIF9tdWx0aWNhc3RfbmV0d29yayA9IElQdjROZXR3b3JrKCcyMjQuMC4wLjAvNCcpCisKKyAgICBfcHJpdmF0ZV9uZXR3b3JrcyA9IFsKKyAgICAgICAgSVB2NE5ldHdvcmsoJzAuMC4wLjAvOCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTAuMC4wLjAvOCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE2OS4yNTQuMC4wLzE2JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxNzIuMTYuMC4wLzEyJyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjAvMjknKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMTcwLzMxJyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4xNjguMC4wLzE2JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTguMTguMC4wLzE1JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxOTguNTEuMTAwLjAvMjQnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzIwMy4wLjExMy4wLzI0JyksCisgICAgICAgIElQdjROZXR3b3JrKCcyNDAuMC4wLjAvNCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMjU1LjI1NS4yNTUuMjU1LzMyJyksCisgICAgICAgIF0KKworICAgIF9yZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKKworICAgIF91bnNwZWNpZmllZF9hZGRyZXNzID0gSVB2NEFkZHJlc3MoJzAuMC4wLjAnKQorCisKK0lQdjRBZGRyZXNzLl9jb25zdGFudHMgPSBfSVB2NENvbnN0YW50cworCiAKIGNsYXNzIF9CYXNlVjY6CiAKQEAgLTE1MTksMTUgKzE1OTEsMzcgQEAKIAogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKyAgICBfdmVyc2lvbiA9IDYKICAgICBfQUxMX09ORVMgPSAoMioqSVBWNkxFTkdUSCkgLSAxCiAgICAgX0hFWFRFVF9DT1VOVCA9IDgKICAgICBfSEVYX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZicpCisgICAgX21heF9wcmVmaXhsZW4gPSBJUFY2TEVOR1RICiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6Ci0gICAgICAgIHNlbGYuX3ZlcnNpb24gPSA2Ci0gICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY2TEVOR1RICisgICAgIyBUaGVyZSBhcmUgb25seSBhIGJ1bmNoIG9mIHZhbGlkIHY2IG5ldG1hc2tzLCBzbyB3ZSBjYWNoZSB0aGVtIGFsbAorICAgICMgd2hlbiBjb25zdHJ1Y3RlZCAoc2VlIF9tYWtlX25ldG1hc2soKSkuCisgICAgX25ldG1hc2tfY2FjaGUgPSB7fQogCi0gICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21ha2VfbmV0bWFzayhjbHMsIGFyZyk6CisgICAgICAgICIiIk1ha2UgYSAobmV0bWFzaywgcHJlZml4X2xlbikgdHVwbGUgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnQuCisKKyAgICAgICAgQXJndW1lbnQgY2FuIGJlOgorICAgICAgICAtIGFuIGludGVnZXIgKHRoZSBwcmVmaXggbGVuZ3RoKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IGxlbmd0aCAoZS5nLiAiMjQiKQorICAgICAgICAtIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG5ldG1hc2sgKGUuZy4gIjI1NS4yNTUuMjU1LjAiKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgYXJnIG5vdCBpbiBjbHMuX25ldG1hc2tfY2FjaGU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgaW50KToKKyAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBhcmcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFyZykKKyAgICAgICAgICAgIG5ldG1hc2sgPSBJUHY2QWRkcmVzcyhjbHMuX2lwX2ludF9mcm9tX3ByZWZpeChwcmVmaXhsZW4pKQorICAgICAgICAgICAgY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10gPSBuZXRtYXNrLCBwcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIGNscy5fbmV0bWFza19jYWNoZVthcmddCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhjbHMsIGlwX3N0cik6CiAgICAgICAgICIiIlR1cm4gYW4gSVB2NiBpcF9zdHIgaW50byBhbiBpbnRlZ2VyLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xNTYzLDcgKzE2NTcsNyBAQAogICAgICAgICAjIEFuIElQdjYgYWRkcmVzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiA4IGNvbG9ucyAoOSBwYXJ0cykuCiAgICAgICAgICMgVGhlIGV4dHJhIGNvbG9uIGNvbWVzIGZyb20gdXNpbmcgdGhlICI6OiIgbm90YXRpb24gZm9yIGEgc2luZ2xlCiAgICAgICAgICMgbGVhZGluZyBvciB0cmFpbGluZyB6ZXJvIHBhcnQuCi0gICAgICAgIF9tYXhfcGFydHMgPSBzZWxmLl9IRVhURVRfQ09VTlQgKyAxCisgICAgICAgIF9tYXhfcGFydHMgPSBjbHMuX0hFWFRFVF9DT1VOVCArIDEKICAgICAgICAgaWYgbGVuKHBhcnRzKSA+IF9tYXhfcGFydHM6CiAgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAlZCBjb2xvbnMgcGVybWl0dGVkIGluICVyIiAlIChfbWF4X3BhcnRzLTEsIGlwX3N0cikKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKQEAgLTE1OTUsMTcgKzE2ODksMTcgQEAKICAgICAgICAgICAgICAgICBpZiBwYXJ0c19sbzoKICAgICAgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgOiQgcmVxdWlyZXMgOjokCi0gICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gc2VsZi5fSEVYVEVUX0NPVU5UIC0gKHBhcnRzX2hpICsgcGFydHNfbG8pCisgICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gY2xzLl9IRVhURVRfQ09VTlQgLSAocGFydHNfaGkgKyBwYXJ0c19sbykKICAgICAgICAgICAgIGlmIHBhcnRzX3NraXBwZWQgPCAxOgogICAgICAgICAgICAgICAgIG1zZyA9ICJFeHBlY3RlZCBhdCBtb3N0ICVkIG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKLSAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGNscy5fSEVYVEVUX0NPVU5ULTEsIGlwX3N0cikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIE90aGVyd2lzZSwgYWxsb2NhdGUgdGhlIGVudGlyZSBhZGRyZXNzIHRvIHBhcnRzX2hpLiAgVGhlCiAgICAgICAgICAgICAjIGVuZHBvaW50cyBjb3VsZCBzdGlsbCBiZSBlbXB0eSwgYnV0IF9wYXJzZV9oZXh0ZXQoKSB3aWxsIGNoZWNrCiAgICAgICAgICAgICAjIGZvciB0aGF0LgotICAgICAgICAgICAgaWYgbGVuKHBhcnRzKSAhPSBzZWxmLl9IRVhURVRfQ09VTlQ6CisgICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IGNscy5fSEVYVEVUX0NPVU5UOgogICAgICAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5ICVkIHBhcnRzIGV4cGVjdGVkIHdpdGhvdXQgJzo6JyBpbiAlciIKLSAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULCBpcF9zdHIpKQorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChjbHMuX0hFWFRFVF9DT1VOVCwgaXBfc3RyKSkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKICAgICAgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgogICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgXjogcmVxdWlyZXMgXjo6CkBAIC0xNjIxLDE2ICsxNzE1LDE3IEBACiAgICAgICAgICAgICBpcF9pbnQgPSAwCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwYXJ0c19oaSk6CiAgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgotICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICAgICAgaXBfaW50IHw9IGNscy5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQogICAgICAgICAgICAgaXBfaW50IDw8PSAxNiAqIHBhcnRzX3NraXBwZWQKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1wYXJ0c19sbywgMCk6CiAgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgotICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICAgICAgaXBfaW50IHw9IGNscy5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQogICAgICAgICAgICAgcmV0dXJuIGlwX2ludAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CiAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCiAKLSAgICBkZWYgX3BhcnNlX2hleHRldChzZWxmLCBoZXh0ZXRfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3BhcnNlX2hleHRldChjbHMsIGhleHRldF9zdHIpOgogICAgICAgICAiIiJDb252ZXJ0IGFuIElQdjYgaGV4dGV0IHN0cmluZyBpbnRvIGFuIGludGVnZXIuCiAKICAgICAgICAgQXJnczoKQEAgLTE2NDUsNyArMTc0MCw3IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KLSAgICAgICAgaWYgbm90IHNlbGYuX0hFWF9ESUdJVFMuaXNzdXBlcnNldChoZXh0ZXRfc3RyKToKKyAgICAgICAgaWYgbm90IGNscy5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBoZXggZGlnaXRzIHBlcm1pdHRlZCBpbiAlciIgJSBoZXh0ZXRfc3RyKQogICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKICAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKQEAgLTE2NTUsNyArMTc1MCw4IEBACiAgICAgICAgICMgTGVuZ3RoIGNoZWNrIG1lYW5zIHdlIGNhbiBza2lwIGNoZWNraW5nIHRoZSBpbnRlZ2VyIHZhbHVlCiAgICAgICAgIHJldHVybiBpbnQoaGV4dGV0X3N0ciwgMTYpCiAKLSAgICBkZWYgX2NvbXByZXNzX2hleHRldHMoc2VsZiwgaGV4dGV0cyk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jb21wcmVzc19oZXh0ZXRzKGNscywgaGV4dGV0cyk6CiAgICAgICAgICIiIkNvbXByZXNzZXMgYSBsaXN0IG9mIGhleHRldHMuCiAKICAgICAgICAgQ29tcHJlc3NlcyBhIGxpc3Qgb2Ygc3RyaW5ncywgcmVwbGFjaW5nIHRoZSBsb25nZXN0IGNvbnRpbnVvdXMKQEAgLTE3MDIsNyArMTc5OCw4IEBACiAKICAgICAgICAgcmV0dXJuIGhleHRldHMKIAotICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KHNlbGYsIGlwX2ludD1Ob25lKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChjbHMsIGlwX2ludD1Ob25lKToKICAgICAgICAgIiIiVHVybnMgYSAxMjgtYml0IGludGVnZXIgaW50byBoZXhhZGVjaW1hbCBub3RhdGlvbi4KIAogICAgICAgICBBcmdzOgpAQCAtMTcxNiwxNSArMTgxMywxNSBAQAogCiAgICAgICAgICIiIgogICAgICAgICBpZiBpcF9pbnQgaXMgTm9uZToKLSAgICAgICAgICAgIGlwX2ludCA9IGludChzZWxmLl9pcCkKKyAgICAgICAgICAgIGlwX2ludCA9IGludChjbHMuX2lwKQogCi0gICAgICAgIGlmIGlwX2ludCA+IHNlbGYuX0FMTF9PTkVTOgorICAgICAgICBpZiBpcF9pbnQgPiBjbHMuX0FMTF9PTkVTOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSVB2NiBhZGRyZXNzIGlzIHRvbyBsYXJnZScpCiAKICAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKICAgICAgICAgaGV4dGV0cyA9IFsnJXgnICUgaW50KGhleF9zdHJbeDp4KzRdLCAxNikgZm9yIHggaW4gcmFuZ2UoMCwgMzIsIDQpXQogCi0gICAgICAgIGhleHRldHMgPSBzZWxmLl9jb21wcmVzc19oZXh0ZXRzKGhleHRldHMpCisgICAgICAgIGhleHRldHMgPSBjbHMuX2NvbXByZXNzX2hleHRldHMoaGV4dGV0cykKICAgICAgICAgcmV0dXJuICc6Jy5qb2luKGhleHRldHMpCiAKICAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKQEAgLTE3NTEsNiArMTg0OCwxNSBAQAogICAgICAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoJzonLmpvaW4ocGFydHMpLCBzZWxmLl9wcmVmaXhsZW4pCiAgICAgICAgIHJldHVybiAnOicuam9pbihwYXJ0cykKIAorICAgIGRlZiBfcmV2ZXJzZV9wb2ludGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHJldmVyc2UgRE5TIHBvaW50ZXIgbmFtZSBmb3IgdGhlIElQdjYgYWRkcmVzcy4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIG1ldGhvZCBkZXNjcmliZWQgaW4gUkZDMzU5NiAyLjUuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldmVyc2VfY2hhcnMgPSBzZWxmLmV4cGxvZGVkWzo6LTFdLnJlcGxhY2UoJzonLCAnJykKKyAgICAgICAgcmV0dXJuICcuJy5qb2luKHJldmVyc2VfY2hhcnMpICsgJy5pcDYuYXJwYScKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgpAQCAtMTc2NCw2ICsxODcwLDggQEAKIAogICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NiBBZGRyZXNzZXMuIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoJ19pcCcsICdfX3dlYWtyZWZfXycpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgYWRkcmVzcyBvYmplY3QuCiAKQEAgLTE3ODEsOSArMTg4OSw2IEBACiAgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCi0gICAgICAgIF9CYXNlVjYuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLQogICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCkBAIC0xNzk5LDYgKzE5MDQsOCBAQAogICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgogICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgogICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBpZiAnLycgaW4gYWRkcl9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKICAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCiAKICAgICBAcHJvcGVydHkKQEAgLTE4MTUsOCArMTkyMiw3IEBACiAgICAgICAgICAgICBTZWUgUkZDIDIzNzMgMi43IGZvciBkZXRhaWxzLgogCiAgICAgICAgICIiIgotICAgICAgICBtdWx0aWNhc3RfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZjAwOjovOCcpCi0gICAgICAgIHJldHVybiBzZWxmIGluIG11bHRpY2FzdF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbXVsdGljYXN0X25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKQEAgLTE4MjcsMTYgKzE5MzMsNyBAQAogICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgcmVzZXJ2ZWRfbmV0d29ya3MgPSBbSVB2Nk5ldHdvcmsoJzo6LzgnKSwgSVB2Nk5ldHdvcmsoJzEwMDo6LzgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDo6LzcnKSwgSVB2Nk5ldHdvcmsoJzQwMDo6LzYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJzEwMDA6Oi80JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc0MDAwOjovMycpLCBJUHY2TmV0d29yaygnNjAwMDo6LzMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdBMDAwOjovMycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnQzAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0UwMDA6Oi80JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdGMDAwOjovNScpLCBJUHY2TmV0d29yaygnRjgwMDo6LzYnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0ZFMDA6Oi85JyldCi0KLSAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gcmVzZXJ2ZWRfbmV0d29ya3MpCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiB4IGZvciB4IGluIHNlbGYuX2NvbnN0YW50cy5fcmVzZXJ2ZWRfbmV0d29ya3MpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKQEAgLTE4NDYsOCArMTk0Myw3IEBACiAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MjkxLgogCiAgICAgICAgICIiIgotICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX2xpbmtsb2NhbF9uZXR3b3JrCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfc2l0ZV9sb2NhbChzZWxmKToKQEAgLTE4NjEsOCArMTk1Nyw3IEBACiAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgogCiAgICAgICAgICIiIgotICAgICAgICBzaXRlbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZWMwOjovMTAnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBzaXRlbG9jYWxfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX3NpdGVsb2NhbF9uZXR3b3JrCiAKICAgICBAcHJvcGVydHkKICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCkBAIC0xODc0LDE2ICsxOTY5LDcgQEAKICAgICAgICAgICAgIGlhbmEtaXB2Ni1zcGVjaWFsLXJlZ2lzdHJ5LgogCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzo6LzEyOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnOjpmZmZmOjA6MC85NicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMTAwOjovNjQnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzIwMDE6Oi8yMycpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMToyOjovNDgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMzInKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJzIwMDE6MTA6Oi8yOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnZmMwMDo6LzcnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpKQorICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4gbmV0IGZvciBuZXQgaW4gc2VsZi5fY29uc3RhbnRzLl9wcml2YXRlX25ldHdvcmtzKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2dsb2JhbChzZWxmKToKQEAgLTE5NjgsNiArMjA1NCwxNiBAQAogICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoc2VsZi5faXApCiAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCB0dXBsZSk6CisgICAgICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzWzBdKQorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkcmVzc1sxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQogICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQpAQCAtMjAwNiw2ICsyMTAyLDggQEAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9pcCBeIHNlbGYuX3ByZWZpeGxlbiBeIGludChzZWxmLm5ldHdvcmsubmV0d29ya19hZGRyZXNzKQogCisgICAgX19yZWR1Y2VfXyA9IF9JUEFkZHJlc3NCYXNlLl9fcmVkdWNlX18KKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpcChzZWxmKToKICAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKHNlbGYuX2lwKQpAQCAtMjA4MiwyMSArMjE4MCwyOCBAQAogICAgICAgICAgICAgICBzdXBwbGllZC4KIAogICAgICAgICAiIiIKLSAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQogICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKIAotICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyIG9yIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGJ5dGVzLCBpbnQpKToKICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgc2VsZi5uZXRtYXNrLCBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYWtlX25ldG1hc2soc2VsZi5fbWF4X3ByZWZpeGxlbikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcwotICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKLSAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIHR1cGxlKToKKyAgICAgICAgICAgIGlmIGxlbihhZGRyZXNzKSA+IDE6CisgICAgICAgICAgICAgICAgYXJnID0gYWRkcmVzc1sxXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHJlc3NbMF0pCisgICAgICAgICAgICBwYWNrZWQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgICAgICBpZiBwYWNrZWQgJiBpbnQoc2VsZi5uZXRtYXNrKSAhPSBwYWNrZWQ6CisgICAgICAgICAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MocGFja2VkICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCkBAIC0yMTA2LDEyICsyMjExLDExIEBACiAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQogCiAgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgotICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcgotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhhZGRyWzFdKQorICAgICAgICAgICAgYXJnID0gYWRkclsxXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgYXJnID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCiAKLSAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHNlbGYuX3ByZWZpeGxlbikpCiAgICAgICAgIGlmIHN0cmljdDoKICAgICAgICAgICAgIGlmIChJUHY2QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgaW50KHNlbGYubmV0bWFzaykpICE9CiAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MpOgpAQCAtMjE0OCwzICsyMjUyLDM5IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3NpdGVfbG9jYWwgYW5kCiAgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19zaXRlX2xvY2FsKQorCisKK2NsYXNzIF9JUHY2Q29uc3RhbnRzOgorCisgICAgX2xpbmtsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpCisKKyAgICBfbXVsdGljYXN0X25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmYwMDo6LzgnKQorCisgICAgX3ByaXZhdGVfbmV0d29ya3MgPSBbCisgICAgICAgIElQdjZOZXR3b3JrKCc6OjEvMTI4JyksCisgICAgICAgIElQdjZOZXR3b3JrKCc6Oi8xMjgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzo6ZmZmZjowOjAvOTYnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzEwMDo6LzY0JyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOjovMjMnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6Mjo6LzQ4JyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzMyJyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOjEwOjovMjgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ2ZjMDA6Oi83JyksCisgICAgICAgIElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKSwKKyAgICAgICAgXQorCisgICAgX3Jlc2VydmVkX25ldHdvcmtzID0gWworICAgICAgICBJUHY2TmV0d29yaygnOjovOCcpLCBJUHY2TmV0d29yaygnMTAwOjovOCcpLAorICAgICAgICBJUHY2TmV0d29yaygnMjAwOjovNycpLCBJUHY2TmV0d29yaygnNDAwOjovNicpLAorICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzQwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCc2MDAwOjovMycpLAorICAgICAgICBJUHY2TmV0d29yaygnODAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0EwMDA6Oi8zJyksCisgICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ0YwMDA6Oi81JyksIElQdjZOZXR3b3JrKCdGODAwOjovNicpLAorICAgICAgICBJUHY2TmV0d29yaygnRkUwMDo6LzknKSwKKyAgICBdCisKKyAgICBfc2l0ZWxvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmVjMDo6LzEwJykKKworCitJUHY2QWRkcmVzcy5fY29uc3RhbnRzID0gX0lQdjZDb25zdGFudHMKZGlmZiAtLWdpdCBhL0xpYi9qc29uL19faW5pdF9fLnB5IGIvTGliL2pzb24vX19pbml0X18ucHkKaW5kZXggOTM5ODY2Ny4uMjYxMjY1NyAxMDA2NDQKLS0tIGEvTGliL2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL2pzb24vX19pbml0X18ucHkKQEAgLTk4LDEyICs5OCwxMiBAQAogX192ZXJzaW9uX18gPSAnMi4wLjknCiBfX2FsbF9fID0gWwogICAgICdkdW1wJywgJ2R1bXBzJywgJ2xvYWQnLCAnbG9hZHMnLAotICAgICdKU09ORGVjb2RlcicsICdKU09ORW5jb2RlcicsCisgICAgJ0pTT05EZWNvZGVyJywgJ0pTT05EZWNvZGVFcnJvcicsICdKU09ORW5jb2RlcicsCiBdCiAKIF9fYXV0aG9yX18gPSAnQm9iIElwcG9saXRvIDxib2JAcmVkaXZpLmNvbT4nCiAKLWZyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyCitmcm9tIC5kZWNvZGVyIGltcG9ydCBKU09ORGVjb2RlciwgSlNPTkRlY29kZUVycm9yCiBmcm9tIC5lbmNvZGVyIGltcG9ydCBKU09ORW5jb2RlcgogCiBfZGVmYXVsdF9lbmNvZGVyID0gSlNPTkVuY29kZXIoCkBAIC0zMTEsNyArMzExLDggQEAKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIG5vdCB7IXJ9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5fX2NsYXNzX18uX19uYW1lX18pKQogICAgIGlmIHMuc3RhcnRzd2l0aCh1J1x1ZmVmZicpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiKQorICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQogICAgIGlmIChjbHMgaXMgTm9uZSBhbmQgb2JqZWN0X2hvb2sgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2ludCBpcyBOb25lIGFuZCBwYXJzZV9mbG9hdCBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfY29uc3RhbnQgaXMgTm9uZSBhbmQgb2JqZWN0X3BhaXJzX2hvb2sgaXMgTm9uZSBhbmQgbm90IGt3KToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2RlY29kZXIucHkgYi9MaWIvanNvbi9kZWNvZGVyLnB5CmluZGV4IDU5ZTVmNDEuLjBmMDNmMjAgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2RlY29kZXIucHkKKysrIGIvTGliL2pzb24vZGVjb2Rlci5weQpAQCAtOCw3ICs4LDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBjX3NjYW5zdHJpbmcgPSBOb25lCiAKLV9fYWxsX18gPSBbJ0pTT05EZWNvZGVyJ10KK19fYWxsX18gPSBbJ0pTT05EZWNvZGVyJywgJ0pTT05EZWNvZGVFcnJvciddCiAKIEZMQUdTID0gcmUuVkVSQk9TRSB8IHJlLk1VTFRJTElORSB8IHJlLkRPVEFMTAogCkBAIC0xNywzMiArMTcsMzAgQEAKIE5lZ0luZiA9IGZsb2F0KCctaW5mJykKIAogCi1kZWYgbGluZWNvbChkb2MsIHBvcyk6Ci0gICAgaWYgaXNpbnN0YW5jZShkb2MsIGJ5dGVzKToKLSAgICAgICAgbmV3bGluZSA9IGInXG4nCi0gICAgZWxzZToKLSAgICAgICAgbmV3bGluZSA9ICdcbicKLSAgICBsaW5lbm8gPSBkb2MuY291bnQobmV3bGluZSwgMCwgcG9zKSArIDEKLSAgICBpZiBsaW5lbm8gPT0gMToKLSAgICAgICAgY29sbm8gPSBwb3MgKyAxCi0gICAgZWxzZToKLSAgICAgICAgY29sbm8gPSBwb3MgLSBkb2MucmluZGV4KG5ld2xpbmUsIDAsIHBvcykKLSAgICByZXR1cm4gbGluZW5vLCBjb2xubworY2xhc3MgSlNPTkRlY29kZUVycm9yKFZhbHVlRXJyb3IpOgorICAgICIiIlN1YmNsYXNzIG9mIFZhbHVlRXJyb3Igd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllczoKIAorICAgIG1zZzogVGhlIHVuZm9ybWF0dGVkIGVycm9yIG1lc3NhZ2UKKyAgICBkb2M6IFRoZSBKU09OIGRvY3VtZW50IGJlaW5nIHBhcnNlZAorICAgIHBvczogVGhlIHN0YXJ0IGluZGV4IG9mIGRvYyB3aGVyZSBwYXJzaW5nIGZhaWxlZAorICAgIGxpbmVubzogVGhlIGxpbmUgY29ycmVzcG9uZGluZyB0byBwb3MKKyAgICBjb2xubzogVGhlIGNvbHVtbiBjb3JyZXNwb25kaW5nIHRvIHBvcwogCi1kZWYgZXJybXNnKG1zZywgZG9jLCBwb3MsIGVuZD1Ob25lKToKLSAgICAjIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIF9qc29uCi0gICAgbGluZW5vLCBjb2xubyA9IGxpbmVjb2woZG9jLCBwb3MpCi0gICAgaWYgZW5kIGlzIE5vbmU6Ci0gICAgICAgIGZtdCA9ICd7MH06IGxpbmUgezF9IGNvbHVtbiB7Mn0gKGNoYXIgezN9KScKLSAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQobXNnLCBsaW5lbm8sIGNvbG5vLCBwb3MpCi0gICAgICAgICNmbXQgPSAnJXM6IGxpbmUgJWQgY29sdW1uICVkIChjaGFyICVkKScKLSAgICAgICAgI3JldHVybiBmbXQgJSAobXNnLCBsaW5lbm8sIGNvbG5vLCBwb3MpCi0gICAgZW5kbGluZW5vLCBlbmRjb2xubyA9IGxpbmVjb2woZG9jLCBlbmQpCi0gICAgZm10ID0gJ3swfTogbGluZSB7MX0gY29sdW1uIHsyfSAtIGxpbmUgezN9IGNvbHVtbiB7NH0gKGNoYXIgezV9IC0gezZ9KScKLSAgICByZXR1cm4gZm10LmZvcm1hdChtc2csIGxpbmVubywgY29sbm8sIGVuZGxpbmVubywgZW5kY29sbm8sIHBvcywgZW5kKQotICAgICNmbXQgPSAnJXM6IGxpbmUgJWQgY29sdW1uICVkIC0gbGluZSAlZCBjb2x1bW4gJWQgKGNoYXIgJWQgLSAlZCknCi0gICAgI3JldHVybiBmbXQgJSAobXNnLCBsaW5lbm8sIGNvbG5vLCBlbmRsaW5lbm8sIGVuZGNvbG5vLCBwb3MsIGVuZCkKKyAgICAiIiIKKyAgICAjIE5vdGUgdGhhdCB0aGlzIGV4Y2VwdGlvbiBpcyB1c2VkIGZyb20gX2pzb24KKyAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBkb2MsIHBvcyk6CisgICAgICAgIGxpbmVubyA9IGRvYy5jb3VudCgnXG4nLCAwLCBwb3MpICsgMQorICAgICAgICBjb2xubyA9IHBvcyAtIGRvYy5yZmluZCgnXG4nLCAwLCBwb3MpCisgICAgICAgIGVycm1zZyA9ICclczogbGluZSAlZCBjb2x1bW4gJWQgKGNoYXIgJWQpJyAlIChtc2csIGxpbmVubywgY29sbm8sIHBvcykKKyAgICAgICAgVmFsdWVFcnJvci5fX2luaXRfXyhzZWxmLCBlcnJtc2cpCisgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIHNlbGYuZG9jID0gZG9jCisgICAgICAgIHNlbGYucG9zID0gcG9zCisgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCisgICAgICAgIHNlbGYuY29sbm8gPSBjb2xubworCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHNlbGYubXNnLCBzZWxmLmRvYywgc2VsZi5wb3MpCiAKIAogX0NPTlNUQU5UUyA9IHsKQEAgLTY2LDcgKzY0LDcgQEAKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgbXNnID0gIkludmFsaWQgXFx1WFhYWCBlc2NhcGUiCi0gICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBwb3MpKQorICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcihtc2csIHMsIHBvcykKIAogZGVmIHB5X3NjYW5zdHJpbmcocywgZW5kLCBzdHJpY3Q9VHJ1ZSwKICAgICAgICAgX2I9QkFDS1NMQVNILCBfbT1TVFJJTkdDSFVOSy5tYXRjaCk6CkBAIC04NCw4ICs4Miw3IEBACiAgICAgd2hpbGUgMToKICAgICAgICAgY2h1bmsgPSBfbShzLCBlbmQpCiAgICAgICAgIGlmIGNodW5rIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgIGVycm1zZygiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKQogICAgICAgICBlbmQgPSBjaHVuay5lbmQoKQogICAgICAgICBjb250ZW50LCB0ZXJtaW5hdG9yID0gY2h1bmsuZ3JvdXBzKCkKICAgICAgICAgIyBDb250ZW50IGlzIGNvbnRhaW5zIHplcm8gb3IgbW9yZSB1bmVzY2FwZWQgc3RyaW5nIGNoYXJhY3RlcnMKQEAgLTk5LDIyICs5NiwyMSBAQAogICAgICAgICAgICAgaWYgc3RyaWN0OgogICAgICAgICAgICAgICAgICNtc2cgPSAiSW52YWxpZCBjb250cm9sIGNoYXJhY3RlciAlciBhdCIgJSAodGVybWluYXRvciwpCiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgY29udHJvbCBjaGFyYWN0ZXIgezAhcn0gYXQiLmZvcm1hdCh0ZXJtaW5hdG9yKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKKyAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IobXNnLCBzLCBlbmQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIF9hcHBlbmQodGVybWluYXRvcikKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlc2MgPSBzW2VuZF0KICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgIGVycm1zZygiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCIsIHMsIGJlZ2luKQogICAgICAgICAjIElmIG5vdCBhIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlLCBtdXN0IGJlIGluIHRoZSBsb29rdXAgdGFibGUKICAgICAgICAgaWYgZXNjICE9ICd1JzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjaGFyID0gX2JbZXNjXQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcZXNjYXBlOiB7MCFyfSIuZm9ybWF0KGVzYykKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIGVuZCkpCisgICAgICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKG1zZywgcywgZW5kKQogICAgICAgICAgICAgZW5kICs9IDEKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHVuaSA9IF9kZWNvZGVfdVhYWFgocywgZW5kKQpAQCAtMTYzLDggKzE1OSw4IEBACiAgICAgICAgICAgICAgICAgcGFpcnMgPSBvYmplY3RfaG9vayhwYWlycykKICAgICAgICAgICAgIHJldHVybiBwYWlycywgZW5kICsgMQogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICciJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKAotICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigKKyAgICAgICAgICAgICAgICAiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHMsIGVuZCkKICAgICBlbmQgKz0gMQogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIGtleSwgZW5kID0gc2NhbnN0cmluZyhzLCBlbmQsIHN0cmljdCkKQEAgLTE3NCw3ICsxNzAsNyBAQAogICAgICAgICBpZiBzW2VuZDplbmQgKyAxXSAhPSAnOic6CiAgICAgICAgICAgICBlbmQgPSBfdyhzLCBlbmQpLmVuZCgpCiAgICAgICAgICAgICBpZiBzW2VuZDplbmQgKyAxXSAhPSAnOic6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyAnOicgZGVsaW1pdGVyIiwgcywgZW5kKSkKKyAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyAnOicgZGVsaW1pdGVyIiwgcywgZW5kKQogICAgICAgICBlbmQgKz0gMQogCiAgICAgICAgIHRyeToKQEAgLTE4OCw3ICsxODQsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICBwYWlyc19hcHBlbmQoKGtleSwgdmFsdWUpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXh0Y2hhciA9IHNbZW5kXQpAQCAtMjAyLDEzICsxOTgsMTMgQEAKICAgICAgICAgaWYgbmV4dGNoYXIgPT0gJ30nOgogICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxpZiBuZXh0Y2hhciAhPSAnLCc6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBzLCBlbmQgLSAxKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nICcsJyBkZWxpbWl0ZXIiLCBzLCBlbmQgLSAxKQogICAgICAgICBlbmQgPSBfdyhzLCBlbmQpLmVuZCgpCiAgICAgICAgIG5leHRjaGFyID0gc1tlbmQ6ZW5kICsgMV0KICAgICAgICAgZW5kICs9IDEKICAgICAgICAgaWYgbmV4dGNoYXIgIT0gJyInOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coCi0gICAgICAgICAgICAgICAgIkV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMiLCBzLCBlbmQgLSAxKSkKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigKKyAgICAgICAgICAgICAgICAiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHMsIGVuZCAtIDEpCiAgICAgaWYgb2JqZWN0X3BhaXJzX2hvb2sgaXMgbm90IE5vbmU6CiAgICAgICAgIHJlc3VsdCA9IG9iamVjdF9wYWlyc19ob29rKHBhaXJzKQogICAgICAgICByZXR1cm4gcmVzdWx0LCBlbmQKQEAgLTIzMiw3ICsyMjgsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2YWx1ZSwgZW5kID0gc2Nhbl9vbmNlKHMsIGVuZCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICBfYXBwZW5kKHZhbHVlKQogICAgICAgICBuZXh0Y2hhciA9IHNbZW5kOmVuZCArIDFdCiAgICAgICAgIGlmIG5leHRjaGFyIGluIF93czoKQEAgLTI0Miw3ICsyMzgsNyBAQAogICAgICAgICBpZiBuZXh0Y2hhciA9PSAnXSc6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICcsJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNbZW5kXSBpbiBfd3M6CiAgICAgICAgICAgICAgICAgZW5kICs9IDEKQEAgLTM0Myw3ICszMzksNyBAQAogICAgICAgICBvYmosIGVuZCA9IHNlbGYucmF3X2RlY29kZShzLCBpZHg9X3cocywgMCkuZW5kKCkpCiAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgaWYgZW5kICE9IGxlbihzKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHRyYSBkYXRhIiwgcywgZW5kLCBsZW4ocykpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHRyYSBkYXRhIiwgcywgZW5kKQogICAgICAgICByZXR1cm4gb2JqCiAKICAgICBkZWYgcmF3X2RlY29kZShzZWxmLCBzLCBpZHg9MCk6CkBAIC0zNTgsNSArMzU0LDUgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb2JqLCBlbmQgPSBzZWxmLnNjYW5fb25jZShzLCBpZHgpCiAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGVycjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSBmcm9tIE5vbmUKICAgICAgICAgcmV0dXJuIG9iaiwgZW5kCmRpZmYgLS1naXQgYS9MaWIvanNvbi9lbmNvZGVyLnB5IGIvTGliL2pzb24vZW5jb2Rlci5weQppbmRleCAwNTEzODM4Li4yNmU5ZWIyIDEwMDY0NAotLS0gYS9MaWIvanNvbi9lbmNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2VuY29kZXIucHkKQEAgLTcsNiArNywxMCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGNfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkgPSBOb25lCiB0cnk6CisgICAgZnJvbSBfanNvbiBpbXBvcnQgZW5jb2RlX2Jhc2VzdHJpbmcgYXMgY19lbmNvZGVfYmFzZXN0cmluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGNfZW5jb2RlX2Jhc2VzdHJpbmcgPSBOb25lCit0cnk6CiAgICAgZnJvbSBfanNvbiBpbXBvcnQgbWFrZV9lbmNvZGVyIGFzIGNfbWFrZV9lbmNvZGVyCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgY19tYWtlX2VuY29kZXIgPSBOb25lCkBAIC0zMCw3ICszNCw3IEBACiBJTkZJTklUWSA9IGZsb2F0KCdpbmYnKQogRkxPQVRfUkVQUiA9IHJlcHIKIAotZGVmIGVuY29kZV9iYXNlc3RyaW5nKHMpOgorZGVmIHB5X2VuY29kZV9iYXNlc3RyaW5nKHMpOgogICAgICIiIlJldHVybiBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gc3RyaW5nCiAKICAgICAiIiIKQEAgLTM5LDYgKzQzLDkgQEAKICAgICByZXR1cm4gJyInICsgRVNDQVBFLnN1YihyZXBsYWNlLCBzKSArICciJwogCiAKK2VuY29kZV9iYXNlc3RyaW5nID0gKGNfZW5jb2RlX2Jhc2VzdHJpbmcgb3IgcHlfZW5jb2RlX2Jhc2VzdHJpbmcpCisKKwogZGVmIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKHMpOgogICAgICIiIlJldHVybiBhbiBBU0NJSS1vbmx5IEpTT04gcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gc3RyaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi9qc29uL3Rvb2wucHkgYi9MaWIvanNvbi90b29sLnB5CmluZGV4IDdkYjQ1MjguLjRmMzE4MmMgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL3Rvb2wucHkKKysrIGIvTGliL2pzb24vdG9vbC5weQpAQCAtMTAsMjggKzEwLDM5IEBACiAgICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAzIChjaGFyIDIpCiAKICIiIgotaW1wb3J0IHN5cworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBqc29uCitpbXBvcnQgc3lzCisKIAogZGVmIG1haW4oKToKLSAgICBpZiBsZW4oc3lzLmFyZ3YpID09IDE6Ci0gICAgICAgIGluZmlsZSA9IHN5cy5zdGRpbgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotICAgIGVsaWYgbGVuKHN5cy5hcmd2KSA9PSAyOgotICAgICAgICBpbmZpbGUgPSBvcGVuKHN5cy5hcmd2WzFdLCAncicpCi0gICAgICAgIG91dGZpbGUgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oc3lzLmFyZ3YpID09IDM6Ci0gICAgICAgIGluZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMV0sICdyJykKLSAgICAgICAgb3V0ZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMl0sICd3JykKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KHN5cy5hcmd2WzBdICsgIiBbaW5maWxlIFtvdXRmaWxlXV0iKQorICAgIHByb2cgPSAncHl0aG9uIC1tIGpzb24udG9vbCcKKyAgICBkZXNjcmlwdGlvbiA9ICgnQSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSBmb3IganNvbiBtb2R1bGUgJworICAgICAgICAgICAgICAgICAgICd0byB2YWxpZGF0ZSBhbmQgcHJldHR5LXByaW50IEpTT04gb2JqZWN0cy4nKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9cHJvZywgZGVzY3JpcHRpb249ZGVzY3JpcHRpb24pCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnaW5maWxlJywgbmFyZ3M9Jz8nLCB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhIEpTT04gZmlsZSB0byBiZSB2YWxpZGF0ZWQgb3IgcHJldHR5LXByaW50ZWQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ291dGZpbGUnLCBuYXJncz0nPycsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3cnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3dyaXRlIHRoZSBvdXRwdXQgb2YgaW5maWxlIHRvIG91dGZpbGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc29ydC1rZXlzJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NvcnQgdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMgYWxwaGFiZXRpY2FsbHkgYnkga2V5JykKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaW5maWxlID0gb3B0aW9ucy5pbmZpbGUgb3Igc3lzLnN0ZGluCisgICAgb3V0ZmlsZSA9IG9wdGlvbnMub3V0ZmlsZSBvciBzeXMuc3Rkb3V0CisgICAgc29ydF9rZXlzID0gb3B0aW9ucy5zb3J0X2tleXMKICAgICB3aXRoIGluZmlsZToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb2JqID0ganNvbi5sb2FkKGluZmlsZSkKKyAgICAgICAgICAgIGlmIHNvcnRfa2V5czoKKyAgICAgICAgICAgICAgICBvYmogPSBqc29uLmxvYWQoaW5maWxlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvYmogPSBqc29uLmxvYWQoaW5maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoZSkKICAgICB3aXRoIG91dGZpbGU6Ci0gICAgICAgIGpzb24uZHVtcChvYmosIG91dGZpbGUsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkKKyAgICAgICAganNvbi5kdW1wKG9iaiwgb3V0ZmlsZSwgc29ydF9rZXlzPXNvcnRfa2V5cywgaW5kZW50PTQpCiAgICAgICAgIG91dGZpbGUud3JpdGUoJ1xuJykKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dCBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CmluZGV4IGU2NjdiY2QuLmM5NTQ2NjkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CisrKyBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CkBAIC0zMyw3ICszMyw4IEBACiAKIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCiBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCi1kZWNvcmF0ZWQ6IGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKK2RlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmIHwgYXN5bmNfZnVuY2RlZikKK2FzeW5jX2Z1bmNkZWY6IEFTWU5DIGZ1bmNkZWYKIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCiB0eXBlZGFyZ3NsaXN0OiAoKHRmcGRlZiBbJz0nIHRlc3RdICcsJykqCkBAIC04Miw3ICs4Myw4IEBACiBleGVjX3N0bXQ6ICdleGVjJyBleHByIFsnaW4nIHRlc3QgWycsJyB0ZXN0XV0KIGFzc2VydF9zdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KIAotY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCitjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10Cithc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KQogaWZfc3RtdDogJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCiB3aGlsZV9zdG10OiAnd2hpbGUnIHRlc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQogZm9yX3N0bXQ6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQpAQCAtMTIxLDcgKzEyMyw3IEBACiBhcml0aF9leHByOiB0ZXJtICgoJysnfCctJykgdGVybSkqCiB0ZXJtOiBmYWN0b3IgKCgnKid8J0AnfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKIGZhY3RvcjogKCcrJ3wnLSd8J34nKSBmYWN0b3IgfCBwb3dlcgotcG93ZXI6IGF0b20gdHJhaWxlciogWycqKicgZmFjdG9yXQorcG93ZXI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCiBhdG9tOiAoJygnIFt5aWVsZF9leHByfHRlc3RsaXN0X2dleHBdICcpJyB8CiAgICAgICAgJ1snIFtsaXN0bWFrZXJdICddJyB8CiAgICAgICAgJ3snIFtkaWN0c2V0bWFrZXJdICd9JyB8CkBAIC0xNDIsNyArMTQ0LDcgQEAKIGNsYXNzZGVmOiAnY2xhc3MnIE5BTUUgWycoJyBbYXJnbGlzdF0gJyknXSAnOicgc3VpdGUKIAogYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXQotICAgICAgICAgICAgICAgICAgICAgICAgIHwnKicgdGVzdCAoJywnIGFyZ3VtZW50KSogWycsJyAnKionIHRlc3RdIAorICAgICAgICAgICAgICAgICAgICAgICAgIHwnKicgdGVzdCAoJywnIGFyZ3VtZW50KSogWycsJyAnKionIHRlc3RdCiAgICAgICAgICAgICAgICAgICAgICAgICAgfCcqKicgdGVzdCkKIGFyZ3VtZW50OiB0ZXN0IFtjb21wX2Zvcl0gfCB0ZXN0ICc9JyB0ZXN0ICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW4ucHkgYi9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weQppbmRleCA3NTk5Mzk2Li4xYTY3OTU1IDEwMDc1NQotLS0gYS9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weQorKysgYi9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weQpAQCAtNjIsOCArNjIsMTAgQEAKIENPTU1FTlQgPSA1MwogTkwgPSA1NAogUkFSUk9XID0gNTUKLUVSUk9SVE9LRU4gPSA1NgotTl9UT0tFTlMgPSA1NworQVdBSVQgPSA1NgorQVNZTkMgPSA1NworRVJST1JUT0tFTiA9IDU4CitOX1RPS0VOUyA9IDU5CiBOVF9PRkZTRVQgPSAyNTYKICMtLWVuZCBjb25zdGFudHMtLQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbml6ZS5weSBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5CmluZGV4IDNkZDFlZTkuLjFmZjFjNjEgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5CisrKyBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5CkBAIC0yMjAsNyArMjIwLDcgQEAKICAgICAgICAgZm9yIHRvayBpbiBpdGVyYWJsZToKICAgICAgICAgICAgIHRva251bSwgdG9rdmFsID0gdG9rWzoyXQogCi0gICAgICAgICAgICBpZiB0b2tudW0gaW4gKE5BTUUsIE5VTUJFUik6CisgICAgICAgICAgICBpZiB0b2tudW0gaW4gKE5BTUUsIE5VTUJFUiwgQVNZTkMsIEFXQUlUKToKICAgICAgICAgICAgICAgICB0b2t2YWwgKz0gJyAnCiAKICAgICAgICAgICAgIGlmIHRva251bSA9PSBJTkRFTlQ6CkBAIC0zNjYsNiArMzY2LDEyIEBACiAgICAgY29udGxpbmUgPSBOb25lCiAgICAgaW5kZW50cyA9IFswXQogCisgICAgIyAnc3Rhc2hlZCcgYW5kICdhc3luY18qJyBhcmUgdXNlZCBmb3IgYXN5bmMvYXdhaXQgcGFyc2luZworICAgIHN0YXNoZWQgPSBOb25lCisgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICBhc3luY19kZWZfaW5kZW50ID0gMAorICAgIGFzeW5jX2RlZl9ubCA9IEZhbHNlCisKICAgICB3aGlsZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29wIG92ZXIgbGluZXMgaW4gc3RyZWFtCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxpbmUgPSByZWFkbGluZSgpCkBAIC00MDYsNiArNDEyLDEwIEBACiAgICAgICAgICAgICAgICAgcG9zID0gcG9zICsgMQogICAgICAgICAgICAgaWYgcG9zID09IG1heDogYnJlYWsKIAorICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKKwogICAgICAgICAgICAgaWYgbGluZVtwb3NdIGluICcjXHJcbic6ICAgICAgICAgICAjIHNraXAgY29tbWVudHMgb3IgYmxhbmsgbGluZXMKICAgICAgICAgICAgICAgICBpZiBsaW5lW3Bvc10gPT0gJyMnOgogICAgICAgICAgICAgICAgICAgICBjb21tZW50X3Rva2VuID0gbGluZVtwb3M6XS5yc3RyaXAoJ1xyXG4nKQpAQCAtNDI4LDggKzQzOCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaW5kZW50IGRvZXMgbm90IG1hdGNoIGFueSBvdXRlciBpbmRlbnRhdGlvbiBsZXZlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAoIjx0b2tlbml6ZT4iLCBsbnVtLCBwb3MsIGxpbmUpKQogICAgICAgICAgICAgICAgIGluZGVudHMgPSBpbmRlbnRzWzotMV0KKworICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZiBhbmQgYXN5bmNfZGVmX2luZGVudCA+PSBpbmRlbnRzWy0xXToKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmX2luZGVudCA9IDAKKwogICAgICAgICAgICAgICAgIHlpZWxkIChERURFTlQsICcnLCAobG51bSwgcG9zKSwgKGxudW0sIHBvcyksIGxpbmUpCiAKKyAgICAgICAgICAgIGlmIGFzeW5jX2RlZiBhbmQgYXN5bmNfZGVmX25sIGFuZCBhc3luY19kZWZfaW5kZW50ID49IGluZGVudHNbLTFdOgorICAgICAgICAgICAgICAgIGFzeW5jX2RlZiA9IEZhbHNlCisgICAgICAgICAgICAgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKyAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gMAorCiAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0YXRlbWVudAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVG9rZW5FcnJvcigiRU9GIGluIG11bHRpLWxpbmUgc3RhdGVtZW50IiwgKGxudW0sIDApKQpAQCAtNDQ5LDkgKzQ3MCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBuZXdsaW5lID0gTkVXTElORQogICAgICAgICAgICAgICAgICAgICBpZiBwYXJlbmxldiA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lID0gTkwKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBhc3luY19kZWY6CisgICAgICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfbmwgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAobmV3bGluZSwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJyMnOgogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAoQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gZW5kcHJvZ3NbdG9rZW5dCkBAIC00NTksNiArNDg5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZW5kbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgb24gb25lIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGVuZG1hdGNoLmVuZCgwKQogICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBsaW5lW3N0YXJ0OnBvc10KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAoU1RSSU5HLCB0b2tlbiwgc3BvcywgKGxudW0sIHBvcyksIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCA9IChsbnVtLCBzdGFydCkgICAgICAgICAgICMgbXVsdGlwbGUgbGluZXMKQEAgLTQ3NiwyMiArNTA5LDYzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgKFNUUklORywgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluIG5hbWVjaGFyczogICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgbmFtZQotICAgICAgICAgICAgICAgICAgICB5aWVsZCAoTkFNRSwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuIGluICgnYXN5bmMnLCAnYXdhaXQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAoQVNZTkMgaWYgdG9rZW4gPT0gJ2FzeW5jJyBlbHNlIEFXQUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIHRvayA9IChOQU1FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2FzeW5jJyBhbmQgbm90IHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gdG9rCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuID09ICdkZWYnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXNoZWRbMF0gPT0gTkFNRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZFsxXSA9PSAnYXN5bmMnKToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZiA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gaW5kZW50c1stMV0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChBU1lOQywgc3Rhc2hlZFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZFsyXSwgc3Rhc2hlZFszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZFs0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRvawogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnXFwnOiAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdG10CiAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB5aWVsZCBpcyBuZXc7IG5lZWRlZCBmb3IgYmV0dGVyIGlkZW1wb3RlbmN5OgorICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgKE5MLCB0b2tlbiwgc3BvcywgKGxudW0sIHBvcyksIGxpbmUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDEKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpZiBpbml0aWFsIGluICcoW3snOiBwYXJlbmxldiA9IHBhcmVubGV2ICsgMQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gJyldfSc6IHBhcmVubGV2ID0gcGFyZW5sZXYgLSAxCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAoT1AsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB5aWVsZCAoRVJST1JUT0tFTiwgbGluZVtwb3NdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxudW0sIHBvcyksIChsbnVtLCBwb3MrMSksIGxpbmUpCiAgICAgICAgICAgICAgICAgcG9zID0gcG9zICsgMQogCisgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICBzdGFzaGVkID0gTm9uZQorCiAgICAgZm9yIGluZGVudCBpbiBpbmRlbnRzWzE6XTogICAgICAgICAgICAgICAgICMgcG9wIHJlbWFpbmluZyBpbmRlbnQgbGV2ZWxzCiAgICAgICAgIHlpZWxkIChERURFTlQsICcnLCAobG51bSwgMCksIChsbnVtLCAwKSwgJycpCiAgICAgeWllbGQgKEVORE1BUktFUiwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggNWJiOWQyYi4uYjUzM2MwMSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKQEAgLTU1LDEyICs1NSw2NCBAQAogCiAKIGNsYXNzIFRlc3RZaWVsZEZyb20oR3JhbW1hclRlc3QpOgotICAgIGRlZiB0ZXN0X21hdHJpeF9tdWx0aXBsaWNhdGlvbl9vcGVyYXRvcihzZWxmKToKKyAgICBkZWYgdGVzdF95aWVsZF9mcm9tKHNlbGYpOgogICAgICAgICBzZWxmLnZhbGlkYXRlKCJ5aWVsZCBmcm9tIHgiKQogICAgICAgICBzZWxmLnZhbGlkYXRlKCIoeWllbGQgZnJvbSB4KSArIHkiKQogICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCJ5aWVsZCBmcm9tIikKIAogCitjbGFzcyBUZXN0QXN5bmNBd2FpdChHcmFtbWFyVGVzdCk6CisgICAgZGVmIHRlc3RfYXdhaXRfZXhwcihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHgKKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisKKyAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworCisgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICAgICAgYXdhaXQgeAorICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6IHJldHVybiBhd2FpdCBhIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IGF3YWl0IHgKKyAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoImF3YWl0IHgiKQorICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgeCIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBhd2FpdCB4CisgICAgICAgICIiIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX3ZhcihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyA9IDEiIiIpCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXdhaXQgPSAxIiIiKQorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImRlZiBhc3luYygpOiBwYXNzIiIiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfd2l0aChzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBhIGluIGI6IHBhc3MiIiIpCisKKyAgICAgICAgc2VsZi5pbnZhbGlkX3N5bnRheCgiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBhIGluIGI6IHBhc3MiIiIpCisKKyAgICBkZWYgdGVzdF9hc3luY19mb3Ioc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyB3aXRoIGE6IHBhc3MiIiIpCisKKyAgICAgICAgc2VsZi5pbnZhbGlkX3N5bnRheCgiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHdpdGggYTogcGFzcyIiIikKKworCiBjbGFzcyBUZXN0UmFpc2VDaGFuZ2VzKEdyYW1tYXJUZXN0KToKICAgICBkZWYgdGVzdF8yeF9zdHlsZV8xKHNlbGYpOgogICAgICAgICBzZWxmLnZhbGlkYXRlKCJyYWlzZSIpCmRpZmYgLS1naXQgYS9MaWIvbGluZWNhY2hlLnB5IGIvTGliL2xpbmVjYWNoZS5weQppbmRleCA4ODRjYmY0Li4zYWZjY2UxIDEwMDY0NAotLS0gYS9MaWIvbGluZWNhY2hlLnB5CisrKyBiL0xpYi9saW5lY2FjaGUucHkKQEAgLTUsNiArNSw3IEBACiB0aGF0IG5hbWUuCiAiIiIKIAoraW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW5pemUKQEAgLTIxLDcgKzIyLDkgQEAKIAogIyBUaGUgY2FjaGUKIAotY2FjaGUgPSB7fSAjIFRoZSBjYWNoZQorIyBUaGUgY2FjaGUuIE1hcHMgZmlsZW5hbWVzIHRvIGVpdGhlciBhIHRodW5rIHdoaWNoIHdpbGwgcHJvdmlkZSBzb3VyY2UgY29kZSwKKyMgb3IgYSB0dXBsZSAoc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZSkgb25jZSBsb2FkZWQuCitjYWNoZSA9IHt9CiAKIAogZGVmIGNsZWFyY2FjaGUoKToKQEAgLTM2LDcgKzM5LDkgQEAKICAgICBVcGRhdGUgdGhlIGNhY2hlIGlmIGl0IGRvZXNuJ3QgY29udGFpbiBhbiBlbnRyeSBmb3IgdGhpcyBmaWxlIGFscmVhZHkuIiIiCiAKICAgICBpZiBmaWxlbmFtZSBpbiBjYWNoZToKLSAgICAgICAgcmV0dXJuIGNhY2hlW2ZpbGVuYW1lXVsyXQorICAgICAgICBlbnRyeSA9IGNhY2hlW2ZpbGVuYW1lXQorICAgICAgICBpZiBsZW4oZW50cnkpICE9IDE6CisgICAgICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCiAKICAgICB0cnk6CiAgICAgICAgIHJldHVybiB1cGRhdGVjYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCkBAIC01OCw3ICs2MywxMSBAQAogICAgICAgICAgICAgcmV0dXJuCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICBzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lID0gY2FjaGVbZmlsZW5hbWVdCisgICAgICAgIGVudHJ5ID0gY2FjaGVbZmlsZW5hbWVdCisgICAgICAgIGlmIGxlbihlbnRyeSkgPT0gMToKKyAgICAgICAgICAgICMgbGF6eSBjYWNoZSBlbnRyeSwgbGVhdmUgaXQgbGF6eS4KKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHNpemUsIG10aW1lLCBsaW5lcywgZnVsbG5hbWUgPSBlbnRyeQogICAgICAgICBpZiBtdGltZSBpcyBOb25lOgogICAgICAgICAgICAgY29udGludWUgICAjIG5vLW9wIGZvciBmaWxlcyBsb2FkZWQgdmlhIGEgX19sb2FkZXJfXwogICAgICAgICB0cnk6CkBAIC03Niw3ICs4NSw4IEBACiAgICAgYW5kIHJldHVybiBhbiBlbXB0eSBsaXN0LiIiIgogCiAgICAgaWYgZmlsZW5hbWUgaW4gY2FjaGU6Ci0gICAgICAgIGRlbCBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgaWYgbGVuKGNhY2hlW2ZpbGVuYW1lXSkgIT0gMToKKyAgICAgICAgICAgIGRlbCBjYWNoZVtmaWxlbmFtZV0KICAgICBpZiBub3QgZmlsZW5hbWUgb3IgKGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKSk6CiAgICAgICAgIHJldHVybiBbXQogCkBAIC04NiwyNyArOTYsMjMgQEAKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgYmFzZW5hbWUgPSBmaWxlbmFtZQogCi0gICAgICAgICMgVHJ5IGZvciBhIF9fbG9hZGVyX18sIGlmIGF2YWlsYWJsZQotICAgICAgICBpZiBtb2R1bGVfZ2xvYmFscyBhbmQgJ19fbG9hZGVyX18nIGluIG1vZHVsZV9nbG9iYWxzOgotICAgICAgICAgICAgbmFtZSA9IG1vZHVsZV9nbG9iYWxzLmdldCgnX19uYW1lX18nKQotICAgICAgICAgICAgbG9hZGVyID0gbW9kdWxlX2dsb2JhbHNbJ19fbG9hZGVyX18nXQotICAgICAgICAgICAgZ2V0X3NvdXJjZSA9IGdldGF0dHIobG9hZGVyLCAnZ2V0X3NvdXJjZScsIE5vbmUpCi0KLSAgICAgICAgICAgIGlmIG5hbWUgYW5kIGdldF9zb3VyY2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkYXRhID0gZ2V0X3NvdXJjZShuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIE9TRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBObyBsdWNrLCB0aGUgUEVQMzAyIGxvYWRlciBjYW5ub3QgZmluZCB0aGUgc291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGZvciB0aGlzIG1vZHVsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXQotICAgICAgICAgICAgICAgICAgICBjYWNoZVtmaWxlbmFtZV0gPSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW4oZGF0YSksIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBbbGluZSsnXG4nIGZvciBsaW5lIGluIGRhdGEuc3BsaXRsaW5lcygpXSwgZnVsbG5hbWUKLSAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCisgICAgICAgICMgUmVhbGlzZSBhIGxhenkgbG9hZGVyIGJhc2VkIGxvb2t1cCBpZiB0aGVyZSBpcyBvbmUKKyAgICAgICAgIyBvdGhlcndpc2UgdHJ5IHRvIGxvb2t1cCByaWdodCBub3cuCisgICAgICAgIGlmIGxhenljYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGEgPSBjYWNoZVtmaWxlbmFtZV1bMF0oKQorICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgTm8gbHVjaywgdGhlIFBFUDMwMiBsb2FkZXIgY2Fubm90IGZpbmQgdGhlIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAjIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICAgICAgICAgY2FjaGVbZmlsZW5hbWVdID0gKAorICAgICAgICAgICAgICAgICAgICBsZW4oZGF0YSksIE5vbmUsCisgICAgICAgICAgICAgICAgICAgIFtsaW5lKydcbicgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCldLCBmdWxsbmFtZQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCiAKICAgICAgICAgIyBUcnkgbG9va2luZyB0aHJvdWdoIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGgsIHdoaWNoIGlzIG9ubHkgdXNlZnVsCiAgICAgICAgICMgd2hlbiBoYW5kbGluZyBhIHJlbGF0aXZlIGZpbGVuYW1lLgpAQCAtMTM2LDMgKzE0MiwzNiBAQAogICAgIHNpemUsIG10aW1lID0gc3RhdC5zdF9zaXplLCBzdGF0LnN0X210aW1lCiAgICAgY2FjaGVbZmlsZW5hbWVdID0gc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZQogICAgIHJldHVybiBsaW5lcworCisKK2RlZiBsYXp5Y2FjaGUoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzKToKKyAgICAiIiJTZWVkIHRoZSBjYWNoZSBmb3IgZmlsZW5hbWUgd2l0aCBtb2R1bGVfZ2xvYmFscy4KKworICAgIFRoZSBtb2R1bGUgbG9hZGVyIHdpbGwgYmUgYXNrZWQgZm9yIHRoZSBzb3VyY2Ugb25seSB3aGVuIGdldGxpbmVzIGlzCisgICAgY2FsbGVkLCBub3QgaW1tZWRpYXRlbHkuCisKKyAgICBJZiB0aGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgY2FjaGUgYWxyZWFkeSwgaXQgaXMgbm90IGFsdGVyZWQuCisKKyAgICA6cmV0dXJuOiBUcnVlIGlmIGEgbGF6eSBsb2FkIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIGNhY2hlLAorICAgICAgICBvdGhlcndpc2UgRmFsc2UuIFRvIHJlZ2lzdGVyIHN1Y2ggYSBsb2FkIGEgbW9kdWxlIGxvYWRlciB3aXRoIGEKKyAgICAgICAgZ2V0X3NvdXJjZSBtZXRob2QgbXVzdCBiZSBmb3VuZCwgdGhlIGZpbGVuYW1lIG11c3QgYmUgYSBjYWNoYWJsZQorICAgICAgICBmaWxlbmFtZSwgYW5kIHRoZSBmaWxlbmFtZSBtdXN0IG5vdCBiZSBhbHJlYWR5IGNhY2hlZC4KKyAgICAiIiIKKyAgICBpZiBmaWxlbmFtZSBpbiBjYWNoZToKKyAgICAgICAgaWYgbGVuKGNhY2hlW2ZpbGVuYW1lXSkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBub3QgZmlsZW5hbWUgb3IgKGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKSk6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgICMgVHJ5IGZvciBhIF9fbG9hZGVyX18sIGlmIGF2YWlsYWJsZQorICAgIGlmIG1vZHVsZV9nbG9iYWxzIGFuZCAnX19sb2FkZXJfXycgaW4gbW9kdWxlX2dsb2JhbHM6CisgICAgICAgIG5hbWUgPSBtb2R1bGVfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJykKKyAgICAgICAgbG9hZGVyID0gbW9kdWxlX2dsb2JhbHNbJ19fbG9hZGVyX18nXQorICAgICAgICBnZXRfc291cmNlID0gZ2V0YXR0cihsb2FkZXIsICdnZXRfc291cmNlJywgTm9uZSkKKworICAgICAgICBpZiBuYW1lIGFuZCBnZXRfc291cmNlOgorICAgICAgICAgICAgZ2V0X2xpbmVzID0gZnVuY3Rvb2xzLnBhcnRpYWwoZ2V0X3NvdXJjZSwgbmFtZSkKKyAgICAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9IChnZXRfbGluZXMsKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL0xpYi9sb2NhbGUucHkgYi9MaWIvbG9jYWxlLnB5CmluZGV4IDdmZjQzNTYuLmNlYWE2ZDggMTAwNjQ0Ci0tLSBhL0xpYi9sb2NhbGUucHkKKysrIGIvTGliL2xvY2FsZS5weQpAQCAtMzAxLDggKzMwMSw4IEBACiAgICAgIiIiQ29udmVydCBmbG9hdCB0byBpbnRlZ2VyLCB0YWtpbmcgdGhlIGxvY2FsZSBpbnRvIGFjY291bnQuIiIiCiAgICAgcmV0dXJuIGZvcm1hdCgiJS4xMmciLCB2YWwpCiAKLWRlZiBhdG9mKHN0cmluZywgZnVuYz1mbG9hdCk6Ci0gICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIGZsb2F0IGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKK2RlZiBkZWxvY2FsaXplKHN0cmluZyk6CisgICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIG5vcm1hbGl6ZWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKICAgICAjRmlyc3QsIGdldCByaWQgb2YgdGhlIGdyb3VwaW5nCiAgICAgdHMgPSBsb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQogICAgIGlmIHRzOgpAQCAtMzExLDEyICszMTEsMTUgQEAKICAgICBkZCA9IGxvY2FsZWNvbnYoKVsnZGVjaW1hbF9wb2ludCddCiAgICAgaWYgZGQ6CiAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGRkLCAnLicpCi0gICAgI2ZpbmFsbHksIHBhcnNlIHRoZSBzdHJpbmcKLSAgICByZXR1cm4gZnVuYyhzdHJpbmcpCisgICAgcmV0dXJuIHN0cmluZwogCi1kZWYgYXRvaShzdHIpOgorZGVmIGF0b2Yoc3RyaW5nLCBmdW5jPWZsb2F0KToKKyAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgZmxvYXQgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgorICAgIHJldHVybiBmdW5jKGRlbG9jYWxpemUoc3RyaW5nKSkKKworZGVmIGF0b2koc3RyaW5nKToKICAgICAiQ29udmVydHMgYSBzdHJpbmcgdG8gYW4gaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCi0gICAgcmV0dXJuIGF0b2Yoc3RyLCBpbnQpCisgICAgcmV0dXJuIGludChkZWxvY2FsaXplKHN0cmluZykpCiAKIGRlZiBfdGVzdCgpOgogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKQpAQCAtNjk2LDcgKzY5OSw5IEBACiAgICAgJ2V1Y19rcic6ICAgICAgICAgICAgICAgICAgICAgICAnZXVjS1InLAogICAgICd1dGZfOCc6ICAgICAgICAgICAgICAgICAgICAgICAgJ1VURi04JywKICAgICAna29pOF9yJzogICAgICAgICAgICAgICAgICAgICAgICdLT0k4LVInLAorICAgICdrb2k4X3QnOiAgICAgICAgICAgICAgICAgICAgICAgJ0tPSTgtVCcsCiAgICAgJ2tvaThfdSc6ICAgICAgICAgICAgICAgICAgICAgICAnS09JOC1VJywKKyAgICAna3oxMDQ4JzogICAgICAgICAgICAgICAgICAgICAgICdSSzEwNDgnLAogICAgICdjcDEyNTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ0NQMTI1MScsCiAgICAgJ2NwMTI1NSc6ICAgICAgICAgICAgICAgICAgICAgICAnQ1AxMjU1JywKICAgICAnY3AxMjU2JzogICAgICAgICAgICAgICAgICAgICAgICdDUDEyNTYnLApkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQppbmRleCA2N2Q5ZDJlLi4xMDRiMGJlIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQorKysgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IDIwMDEtMjAxNCBieSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgQ29weXJpZ2h0IDIwMDEtMjAxNSBieSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICMKICMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCiAjIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwKQEAgLTE4LDcgKzE4LDcgQEAKIExvZ2dpbmcgcGFja2FnZSBmb3IgUHl0aG9uLiBCYXNlZCBvbiBQRVAgMjgyIGFuZCBjb21tZW50cyB0aGVyZXRvIGluCiBjb21wLmxhbmcucHl0aG9uLgogCi1Db3B5cmlnaHQgKEMpIDIwMDEtMjAxNCBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoQykgMjAwMS0yMDE1IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUbyB1c2UsIHNpbXBseSAnaW1wb3J0IGxvZ2dpbmcnIGFuZCBsb2cgYXdheSEKICIiIgpAQCAtMzE2LDYgKzMxNiw4IEBACiAgICAgICAgIHJldHVybiAnPExvZ1JlY29yZDogJXMsICVzLCAlcywgJXMsICIlcyI+JyUoc2VsZi5uYW1lLCBzZWxmLmxldmVsbm8sCiAgICAgICAgICAgICBzZWxmLnBhdGhuYW1lLCBzZWxmLmxpbmVubywgc2VsZi5tc2cpCiAKKyAgICBfX3JlcHJfXyA9IF9fc3RyX18KKwogICAgIGRlZiBnZXRNZXNzYWdlKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlIGZvciB0aGlzIExvZ1JlY29yZC4KQEAgLTEwOTEsNyArMTA5Myw2IEBACiAjCiAjICAgRGV0ZXJtaW5lIHdoaWNoIGNsYXNzIHRvIHVzZSB3aGVuIGluc3RhbnRpYXRpbmcgbG9nZ2Vycy4KICMKLV9sb2dnZXJDbGFzcyA9IE5vbmUKIAogZGVmIHNldExvZ2dlckNsYXNzKGtsYXNzKToKICAgICAiIiIKQEAgLTExMTAsNyArMTExMSw2IEBACiAgICAgIiIiCiAgICAgUmV0dXJuIHRoZSBjbGFzcyB0byBiZSB1c2VkIHdoZW4gaW5zdGFudGlhdGluZyBhIGxvZ2dlci4KICAgICAiIiIKLQogICAgIHJldHVybiBfbG9nZ2VyQ2xhc3MKIAogY2xhc3MgTWFuYWdlcihvYmplY3QpOgpAQCAtMTMwNywxMiArMTMwNywxMSBAQAogICAgICAgICBpZiBzZWxmLmlzRW5hYmxlZEZvcihFUlJPUik6CiAgICAgICAgICAgICBzZWxmLl9sb2coRVJST1IsIG1zZywgYXJncywgKiprd2FyZ3MpCiAKLSAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsIGV4Y19pbmZvPVRydWUsICoqa3dhcmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgbG9nZ2luZyBhbiBFUlJPUiB3aXRoIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbi4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1snZXhjX2luZm8nXSA9IFRydWUKLSAgICAgICAgc2VsZi5lcnJvcihtc2csICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5lcnJvcihtc2csICphcmdzLCBleGNfaW5mbz1leGNfaW5mbywgKiprd2FyZ3MpCiAKICAgICBkZWYgY3JpdGljYWwoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiIKQEAgLTE0MDcsNyArMTQwNiw5IEBACiAgICAgICAgIGVsc2U6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgZm4sIGxubywgZnVuYyA9ICIodW5rbm93biBmaWxlKSIsIDAsICIodW5rbm93biBmdW5jdGlvbikiCiAgICAgICAgIGlmIGV4Y19pbmZvOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjX2luZm8sIHR1cGxlKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjX2luZm8sIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gKHR5cGUoZXhjX2luZm8pLCBleGNfaW5mbywgZXhjX2luZm8uX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZXhjX2luZm8sIHR1cGxlKToKICAgICAgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgIHJlY29yZCA9IHNlbGYubWFrZVJlY29yZChzZWxmLm5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mbywgZnVuYywgZXh0cmEsIHNpbmZvKQpAQCAtMTYxNywxMiArMTYxOCwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sb2coRVJST1IsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgZGVmIGV4Y2VwdGlvbihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGV4Y2VwdGlvbihzZWxmLCBtc2csICphcmdzLCBleGNfaW5mbz1UcnVlLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgogICAgICAgICBEZWxlZ2F0ZSBhbiBleGNlcHRpb24gY2FsbCB0byB0aGUgdW5kZXJseWluZyBsb2dnZXIuCiAgICAgICAgICIiIgotICAgICAgICBrd2FyZ3NbImV4Y19pbmZvIl0gPSBUcnVlCi0gICAgICAgIHNlbGYubG9nKEVSUk9SLCBtc2csICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5sb2coRVJST1IsIG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogICAgIGRlZiBjcml0aWNhbChzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTgwNCwxNCArMTgwNCwxMyBAQAogICAgICAgICBiYXNpY0NvbmZpZygpCiAgICAgcm9vdC5lcnJvcihtc2csICphcmdzLCAqKmt3YXJncykKIAotZGVmIGV4Y2VwdGlvbihtc2csICphcmdzLCAqKmt3YXJncyk6CitkZWYgZXhjZXB0aW9uKG1zZywgKmFyZ3MsIGV4Y19pbmZvPVRydWUsICoqa3dhcmdzKToKICAgICAiIiIKICAgICBMb2cgYSBtZXNzYWdlIHdpdGggc2V2ZXJpdHkgJ0VSUk9SJyBvbiB0aGUgcm9vdCBsb2dnZXIsIHdpdGggZXhjZXB0aW9uCiAgICAgaW5mb3JtYXRpb24uIElmIHRoZSBsb2dnZXIgaGFzIG5vIGhhbmRsZXJzLCBiYXNpY0NvbmZpZygpIGlzIGNhbGxlZCB0byBhZGQKICAgICBhIGNvbnNvbGUgaGFuZGxlciB3aXRoIGEgcHJlLWRlZmluZWQgZm9ybWF0LgogICAgICIiIgotICAgIGt3YXJnc1snZXhjX2luZm8nXSA9IFRydWUKLSAgICBlcnJvcihtc2csICphcmdzLCAqKmt3YXJncykKKyAgICBlcnJvcihtc2csICphcmdzLCBleGNfaW5mbz1leGNfaW5mbywgKiprd2FyZ3MpCiAKIGRlZiB3YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weSBiL0xpYi9sb2dnaW5nL2NvbmZpZy5weQppbmRleCA4OTVmYjI2Li44YTk5OTIzIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9jb25maWcucHkKKysrIGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CkBAIC0xMTYsMTEgKzExNiwxMiBAQAogICAgICAgICBzZWN0bmFtZSA9ICJmb3JtYXR0ZXJfJXMiICUgZm9ybQogICAgICAgICBmcyA9IGNwLmdldChzZWN0bmFtZSwgImZvcm1hdCIsIHJhdz1UcnVlLCBmYWxsYmFjaz1Ob25lKQogICAgICAgICBkZnMgPSBjcC5nZXQoc2VjdG5hbWUsICJkYXRlZm10IiwgcmF3PVRydWUsIGZhbGxiYWNrPU5vbmUpCisgICAgICAgIHN0bCA9IGNwLmdldChzZWN0bmFtZSwgInN0eWxlIiwgcmF3PVRydWUsIGZhbGxiYWNrPSclJykKICAgICAgICAgYyA9IGxvZ2dpbmcuRm9ybWF0dGVyCiAgICAgICAgIGNsYXNzX25hbWUgPSBjcFtzZWN0bmFtZV0uZ2V0KCJjbGFzcyIpCiAgICAgICAgIGlmIGNsYXNzX25hbWU6CiAgICAgICAgICAgICBjID0gX3Jlc29sdmUoY2xhc3NfbmFtZSkKLSAgICAgICAgZiA9IGMoZnMsIGRmcykKKyAgICAgICAgZiA9IGMoZnMsIGRmcywgc3RsKQogICAgICAgICBmb3JtYXR0ZXJzW2Zvcm1dID0gZgogICAgIHJldHVybiBmb3JtYXR0ZXJzCiAKQEAgLTY2MCw3ICs2NjEsMTIgQEAKICAgICAgICAgICAgIGZtdCA9IGNvbmZpZy5nZXQoJ2Zvcm1hdCcsIE5vbmUpCiAgICAgICAgICAgICBkZm10ID0gY29uZmlnLmdldCgnZGF0ZWZtdCcsIE5vbmUpCiAgICAgICAgICAgICBzdHlsZSA9IGNvbmZpZy5nZXQoJ3N0eWxlJywgJyUnKQotICAgICAgICAgICAgcmVzdWx0ID0gbG9nZ2luZy5Gb3JtYXR0ZXIoZm10LCBkZm10LCBzdHlsZSkKKyAgICAgICAgICAgIGNuYW1lID0gY29uZmlnLmdldCgnY2xhc3MnLCBOb25lKQorICAgICAgICAgICAgaWYgbm90IGNuYW1lOgorICAgICAgICAgICAgICAgIGMgPSBsb2dnaW5nLkZvcm1hdHRlcgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjID0gX3Jlc29sdmUoY25hbWUpCisgICAgICAgICAgICByZXN1bHQgPSBjKGZtdCwgZGZtdCwgc3R5bGUpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBjb25maWd1cmVfZmlsdGVyKHNlbGYsIGNvbmZpZyk6CmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weSBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CmluZGV4IGZkYTgwOTMuLjAyYTVmYzEgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CisrKyBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAwMS0yMDEzIGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBDb3B5cmlnaHQgMjAwMS0yMDE1IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIwogIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKICMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLApAQCAtMTgsNyArMTgsNyBAQAogQWRkaXRpb25hbCBoYW5kbGVycyBmb3IgdGhlIGxvZ2dpbmcgcGFja2FnZSBmb3IgUHl0aG9uLiBUaGUgY29yZSBwYWNrYWdlIGlzCiBiYXNlZCBvbiBQRVAgMjgyIGFuZCBjb21tZW50cyB0aGVyZXRvIGluIGNvbXAubGFuZy5weXRob24uCiAKLUNvcHlyaWdodCAoQykgMjAwMS0yMDEzIFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDAxLTIwMTUgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZy5oYW5kbGVycycgYW5kIGxvZyBhd2F5IQogIiIiCkBAIC0xMzU1LDcgKzEzNTUsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgX3NlbnRpbmVsID0gTm9uZQogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSwgKmhhbmRsZXJzKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVlLCAqaGFuZGxlcnMsIHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1GYWxzZSk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIEluaXRpYWxpc2UgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHF1ZXVlIGFuZAogICAgICAgICAgICAgaGFuZGxlcnMuCkBAIC0xMzY0LDYgKzEzNjQsNyBAQAogICAgICAgICAgICAgc2VsZi5oYW5kbGVycyA9IGhhbmRsZXJzCiAgICAgICAgICAgICBzZWxmLl9zdG9wID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucmVzcGVjdF9oYW5kbGVyX2xldmVsID0gcmVzcGVjdF9oYW5kbGVyX2xldmVsCiAKICAgICAgICAgZGVmIGRlcXVldWUoc2VsZiwgYmxvY2spOgogICAgICAgICAgICAgIiIiCkBAIC0xNDA0LDcgKzE0MDUsMTIgQEAKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgcmVjb3JkID0gc2VsZi5wcmVwYXJlKHJlY29yZCkKICAgICAgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYuaGFuZGxlcnM6Ci0gICAgICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUocmVjb3JkKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJlc3BlY3RfaGFuZGxlcl9sZXZlbDoKKyAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzID0gcmVjb3JkLmxldmVsbm8gPj0gaGFuZGxlci5sZXZlbAorICAgICAgICAgICAgICAgIGlmIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHJlY29yZCkKIAogICAgICAgICBkZWYgX21vbml0b3Ioc2VsZik6CiAgICAgICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKaW5kZXggZjFkMzk1OC4uODk1MjhiNiAxMDA2NDQKLS0tIGEvTGliL2x6bWEucHkKKysrIGIvTGliL2x6bWEucHkKQEAgLTI1LDE3ICsyNSwxNiBAQAogaW1wb3J0IGlvCiBmcm9tIF9sem1hIGltcG9ydCAqCiBmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCitpbXBvcnQgX2NvbXByZXNzaW9uCiAKIAogX01PREVfQ0xPU0VEICAgPSAwCiBfTU9ERV9SRUFEICAgICA9IDEKLV9NT0RFX1JFQURfRU9GID0gMgorIyBWYWx1ZSAyIG5vIGxvbmdlciB1c2VkCiBfTU9ERV9XUklURSAgICA9IDMKIAotX0JVRkZFUl9TSVpFID0gODE5MgogCi0KLWNsYXNzIExaTUFGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKK2NsYXNzIExaTUFGaWxlKF9jb21wcmVzc2lvbi5CYXNlU3RyZWFtKToKIAogICAgICIiIkEgZmlsZSBvYmplY3QgcHJvdmlkaW5nIHRyYW5zcGFyZW50IExaTUEgKGRlKWNvbXByZXNzaW9uLgogCkBAIC05Miw4ICs5MSw2IEBACiAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQogICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX3NpemUgPSAtMQogCiAgICAgICAgIGlmIG1vZGUgaW4gKCJyIiwgInJiIik6CiAgICAgICAgICAgICBpZiBjaGVjayAhPSAtMToKQEAgLTEwNSwxOSArMTAyLDEzIEBACiAgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfQVVUTwogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAotICAgICAgICAgICAgIyBTYXZlIHRoZSBhcmdzIHRvIHBhc3MgdG8gdGhlIExaTUFEZWNvbXByZXNzb3IgaW5pdGlhbGl6ZXIuCi0gICAgICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAotICAgICAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4KLSAgICAgICAgICAgIHNlbGYuX2luaXRfYXJncyA9IHsiZm9ybWF0Ijpmb3JtYXQsICJmaWx0ZXJzIjpmaWx0ZXJzfQotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIsICJhIiwgImFiIiwgIngiLCAieGIiKToKICAgICAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZPUk1BVF9YWgogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQ9Zm9ybWF0LCBjaGVjaz1jaGVjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXQ9cHJlc2V0LCBmaWx0ZXJzPWZpbHRlcnMpCisgICAgICAgICAgICBzZWxmLl9wb3MgPSAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKIApAQCAtMTMzLDYgKzEyNCwxMSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKIAorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CisgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwgTFpNQURlY29tcHJlc3NvciwKKyAgICAgICAgICAgICAgICB0cmFpbGluZ19lcnJvcj1MWk1BRXJyb3IsIGZvcm1hdD1mb3JtYXQsIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgogCkBAIC0xNDIsOSArMTM4LDkgQEAKICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IE5vbmUKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKICAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKICAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCiAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTE2OSwxMjMgKzE2NSwxOCBAQAogCiAgICAgZGVmIHNlZWthYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisgICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2J1ZmZlci5zZWVrYWJsZSgpCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQKIAogICAgIGRlZiB3cml0YWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4iIiIKICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFCiAKLSAgICAjIE1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4KLQotICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciByZWFkaW5nIikKLQotICAgIGRlZiBfY2hlY2tfY2FuX3dyaXRlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlICE9IF9NT0RFX1dSSVRFOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9mcC5zZWVrYWJsZSgpOgotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQotCi0gICAgIyBGaWxsIHRoZSByZWFkYWhlYWQgYnVmZmVyIGlmIGl0IGlzIGVtcHR5LiBSZXR1cm5zIEZhbHNlIG9uIEVPRi4KLSAgICBkZWYgX2ZpbGxfYnVmZmVyKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKLSAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KLSAgICAgICAgd2hpbGUgc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKToKLSAgICAgICAgICAgIHJhd2Jsb2NrID0gKHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAucmVhZChfQlVGRkVSX1NJWkUpKQotCi0gICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IExaTUFEZWNvbXByZXNzb3IoKipzZWxmLl9pbml0X2FyZ3MpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgICAgICBleGNlcHQgTFpNQUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIFRyYWlsaW5nIGRhdGEgaXNuJ3QgYSB2YWxpZCBjb21wcmVzc2VkIHN0cmVhbTsgaWdub3JlIGl0LgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBSZWFkIGRhdGEgdW50aWwgRU9GLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2FsbChzZWxmLCByZXR1cm5fZGF0YT1UcnVlKToKLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgc2VsZi5fZmlsbF9idWZmZXIoKToKLSAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgotICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoc2VsZi5fYnVmZmVyKQotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKLSAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQotCi0gICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KLSAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgotICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKLSAgICAgICAgIyBJZiB3ZSBoYXZlIGVub3VnaCBkYXRhIGJ1ZmZlcmVkLCByZXR1cm4gaW1tZWRpYXRlbHkuCi0gICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlcl9vZmZzZXQgKyBuCi0gICAgICAgIGlmIGVuZCA8PSBsZW4oc2VsZi5fYnVmZmVyKToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKLSAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKLSAgICAgICAgICAgIHJldHVybiBkYXRhIGlmIHJldHVybl9kYXRhIGVsc2UgTm9uZQotCi0gICAgICAgICMgVGhlIGxvb3AgYXNzdW1lcyB0aGF0IF9idWZmZXJfb2Zmc2V0IGlzIDAuIEVuc3VyZSB0aGF0IHRoaXMgaXMgdHJ1ZS4KLSAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotCi0gICAgICAgIGJsb2NrcyA9IFtdCi0gICAgICAgIHdoaWxlIG4gPiAwIGFuZCBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgbiA8IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOm5dCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IG4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKLSAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQotCiAgICAgZGVmIHBlZWsoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgICIiIlJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgogCkBAIC0yOTMsOSArMTg0LDkgQEAKICAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICByZXR1cm4gYiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgICMgUmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgZmFjdCB0aGF0IEJ1ZmZlcmVkUmVhZGVyLnBlZWsoKSBhbHdheXMKKyAgICAgICAgIyByZXR1cm5zIGF0IGxlYXN0IG9uZSBieXRlIChleGNlcHQgYXQgRU9GKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsoc2l6ZSkKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zMDQsMzggKzE5NSwxOSBAQAogICAgICAgICBSZXR1cm5zIGIiIiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGF0IEVPRi4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICBlbGlmIHNpemUgPCAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Jsb2NrKHNpemUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKLSAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uIFJlYWRzIHVwIHRvIGEKKyAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgogCiAgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KICAgICAgICAgIiIiCi0gICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgaWYgKHNpemUgPT0gMCBvcgotICAgICAgICAgICAgIyBPbmx5IGNhbGwgX2ZpbGxfYnVmZmVyKCkgaWYgdGhlIGJ1ZmZlciBpcyBhY3R1YWxseSBlbXB0eS4KLSAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgotICAgICAgICAgICAgKHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcikgYW5kIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpKSk6Ci0gICAgICAgICAgICByZXR1cm4gYiIiCi0gICAgICAgIGlmIHNpemUgPiAwOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCArIHNpemVdCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLSAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHNpemUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCBhIGxpbmUgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zNDUsMTUgKzIxNyw3IEBACiAgICAgICAgIGNhc2UgdGhlIGxpbmUgbWF5IGJlIGluY29tcGxldGUpLiBSZXR1cm5zIGInJyBpZiBhbHJlYWR5IGF0IEVPRi4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgIyBTaG9ydGN1dCBmb3IgdGhlIGNvbW1vbiBjYXNlIC0gdGhlIHdob2xlIGxpbmUgaXMgaW4gdGhlIGJ1ZmZlci4KLSAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCi0gICAgICAgICAgICBpZiBlbmQgPiAwOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihsaW5lKQotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCi0gICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJlYWRsaW5lKHNpemUpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CiAgICAgICAgICIiIldyaXRlIGEgYnl0ZXMgb2JqZWN0IHRvIHRoZSBmaWxlLgpAQCAtMzY4LDE2ICsyMzIsNyBAQAogICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCiAgICAgICAgIHJldHVybiBsZW4oZGF0YSkKIAotICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgotICAgIGRlZiBfcmV3aW5kKHNlbGYpOgotICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCi0gICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECi0gICAgICAgIHNlbGYuX3BvcyA9IDAKLSAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KIAogICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQpAQCAtMzg5LDM4ICsyNDQsMTcgQEAKIAogICAgICAgICBSZXR1cm5zIHRoZSBuZXcgZmlsZSBwb3NpdGlvbi4KIAotICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc3AgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAorICAgICAgICBOb3RlIHRoYXQgc2Vla2luZyBpcyBlbXVsYXRlZCwgc28gZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzLAogICAgICAgICB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCi0KLSAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KLSAgICAgICAgaWYgd2hlbmNlID09IDA6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgd2hlbmNlID09IDE6Ci0gICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKLSAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKLSAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgotICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCi0gICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6IHt9Ii5mb3JtYXQod2hlbmNlKSkKLQotICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCi0gICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKLSAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCi0KLSAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCi0gICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKLQotICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIudGVsbCgpCiAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogCmRpZmYgLS1naXQgYS9MaWIvbWFjcGF0aC5weSBiL0xpYi9tYWNwYXRoLnB5CmluZGV4IDVjYTAwOTcuLmE5MGQxMDUgMTAwNjQ0Ci0tLSBhL0xpYi9tYWNwYXRoLnB5CisrKyBiL0xpYi9tYWNwYXRoLnB5CkBAIC01MCwyMCArNTAsMjYgQEAKIAogCiBkZWYgam9pbihzLCAqcCk6Ci0gICAgY29sb24gPSBfZ2V0X2NvbG9uKHMpCi0gICAgcGF0aCA9IHMKLSAgICBmb3IgdCBpbiBwOgotICAgICAgICBpZiAobm90IHBhdGgpIG9yIGlzYWJzKHQpOgotICAgICAgICAgICAgcGF0aCA9IHQKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHRbOjFdID09IGNvbG9uOgotICAgICAgICAgICAgdCA9IHRbMTpdCi0gICAgICAgIGlmIGNvbG9uIG5vdCBpbiBwYXRoOgotICAgICAgICAgICAgcGF0aCA9IGNvbG9uICsgcGF0aAotICAgICAgICBpZiBwYXRoWy0xOl0gIT0gY29sb246Ci0gICAgICAgICAgICBwYXRoID0gcGF0aCArIGNvbG9uCi0gICAgICAgIHBhdGggPSBwYXRoICsgdAotICAgIHJldHVybiBwYXRoCisgICAgdHJ5OgorICAgICAgICBjb2xvbiA9IF9nZXRfY29sb24ocykKKyAgICAgICAgcGF0aCA9IHMKKyAgICAgICAgaWYgbm90IHA6CisgICAgICAgICAgICBwYXRoWzowXSArIGNvbG9uICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KKyAgICAgICAgZm9yIHQgaW4gcDoKKyAgICAgICAgICAgIGlmIChub3QgcGF0aCkgb3IgaXNhYnModCk6CisgICAgICAgICAgICAgICAgcGF0aCA9IHQKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdFs6MV0gPT0gY29sb246CisgICAgICAgICAgICAgICAgdCA9IHRbMTpdCisgICAgICAgICAgICBpZiBjb2xvbiBub3QgaW4gcGF0aDoKKyAgICAgICAgICAgICAgICBwYXRoID0gY29sb24gKyBwYXRoCisgICAgICAgICAgICBpZiBwYXRoWy0xOl0gIT0gY29sb246CisgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGggKyBjb2xvbgorICAgICAgICAgICAgcGF0aCA9IHBhdGggKyB0CisgICAgICAgIHJldHVybiBwYXRoCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgcywgKnApCisgICAgICAgIHJhaXNlCiAKIAogZGVmIHNwbGl0KHMpOgpkaWZmIC0tZ2l0IGEvTGliL21haWxib3gucHkgYi9MaWIvbWFpbGJveC5weQppbmRleCA0ZTQyYWQyLi4yNGQ0YWVjIDEwMDY0NAotLS0gYS9MaWIvbWFpbGJveC5weQorKysgYi9MaWIvbWFpbGJveC5weQpAQCAtMTIzNCw4ICsxMjM0LDggQEAKIGNsYXNzIEJhYnlsKF9zaW5nbGVmaWxlTWFpbGJveCk6CiAgICAgIiIiQW4gUm1haWwtc3R5bGUgQmFieWwgbWFpbGJveC4iIiIKIAotICAgIF9zcGVjaWFsX2xhYmVscyA9IGZyb3plbnNldCgoJ3Vuc2VlbicsICdkZWxldGVkJywgJ2ZpbGVkJywgJ2Fuc3dlcmVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3J3YXJkZWQnLCAnZWRpdGVkJywgJ3Jlc2VudCcpKQorICAgIF9zcGVjaWFsX2xhYmVscyA9IGZyb3plbnNldCh7J3Vuc2VlbicsICdkZWxldGVkJywgJ2ZpbGVkJywgJ2Fuc3dlcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3J3YXJkZWQnLCAnZWRpdGVkJywgJ3Jlc2VudCd9KQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGZhY3Rvcnk9Tm9uZSwgY3JlYXRlPVRydWUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGEgQmFieWwgbWFpbGJveC4iIiIKQEAgLTE5NTMsNyArMTk1Myw3IEBACiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBsaW5lID0gc2VsZi5yZWFkbGluZSgpCiAgICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICB5aWVsZCBsaW5lCiAKICAgICBkZWYgdGVsbChzZWxmKToKQEAgLTE5NzAsOSArMTk3MCwxMSBAQAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUuIiIiCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19maWxlJyk6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2ZpbGUsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQotICAgICAgICAgICAgZGVsIHNlbGYuX2ZpbGUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuX2ZpbGUsICdjbG9zZScpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2ZpbGUKIAogICAgIGRlZiBfcmVhZChzZWxmLCBzaXplLCByZWFkX21ldGhvZCk6CiAgICAgICAgICIiIlJlYWQgc2l6ZSBieXRlcyB1c2luZyByZWFkX21ldGhvZC4iIiIKZGlmZiAtLWdpdCBhL0xpYi9tb2R1bGVmaW5kZXIucHkgYi9MaWIvbW9kdWxlZmluZGVyLnB5CmluZGV4IGI3NzhlNjAuLjUwZjI0NjIgMTAwNjQ0Ci0tLSBhL0xpYi9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL21vZHVsZWZpbmRlci5weQpAQCAtMSw3ICsxLDcgQEAKICIiIkZpbmQgbW9kdWxlcyB1c2VkIGJ5IGEgc2NyaXB0LCB1c2luZyBpbnRyb3NwZWN0aW9uLiIiIgogCiBpbXBvcnQgZGlzCi1pbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbAogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKQEAgLTIyMyw3ICsyMjMsNyBAQAogICAgICAgICBpZiBub3QgbS5fX3BhdGhfXzoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBtb2R1bGVzID0ge30KLSAgICAgICAgIyAnc3VmZml4ZXMnIHVzZWQgdG8gYmUgYSBsaXN0IGhhcmRjb2RlZCB0byBbIi5weSIsICIucHljIiwgIi5weW8iXS4KKyAgICAgICAgIyAnc3VmZml4ZXMnIHVzZWQgdG8gYmUgYSBsaXN0IGhhcmRjb2RlZCB0byBbIi5weSIsICIucHljIl0uCiAgICAgICAgICMgQnV0IHdlIG11c3QgYWxzbyBjb2xsZWN0IFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcyAtIGFsdGhvdWdoCiAgICAgICAgICMgd2UgY2Fubm90IHNlcGFyYXRlIG5vcm1hbCBkbGxzIGZyb20gUHl0aG9uIGV4dGVuc2lvbnMuCiAgICAgICAgIHN1ZmZpeGVzID0gW10KQEAgLTI4OSw3ICsyODksNyBAQAogICAgICAgICAgICAgY28gPSBjb21waWxlKGZwLnJlYWQoKSsnXG4nLCBwYXRobmFtZSwgJ2V4ZWMnKQogICAgICAgICBlbGlmIHR5cGUgPT0gaW1wLlBZX0NPTVBJTEVEOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1hcnNoYWxfZGF0YSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZnAucmVhZCgpKQorICAgICAgICAgICAgICAgIG1hcnNoYWxfZGF0YSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZnAucmVhZCgpKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICBzZWxmLm1zZ291dCgyLCAicmFpc2UgSW1wb3J0RXJyb3I6ICIgKyBzdHIoZXhjKSwgcGF0aG5hbWUpCiAgICAgICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CmluZGV4IGQyOWE1OTMuLjg3MzU2MGQgMTAwNjQ0Ci0tLSBhL0xpYi9tc2lsaWIvX19pbml0X18ucHkKKysrIGIvTGliL21zaWxpYi9fX2luaXRfXy5weQpAQCAtMzYxLDcgKzM2MSw3IEBACiAgICAgICAgICMgICAgICAgICAgICAgWyhsb2dpY2FsLCAwLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgxKSwKICAgICAgICAgIyAgICAgICAgICAgICAgIGZpbGVoYXNoLkludGVnZXJEYXRhKDIpLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgzKSwKICAgICAgICAgIyAgICAgICAgICAgICAgIGZpbGVoYXNoLkludGVnZXJEYXRhKDQpKV0pCi0gICAgICAgICMgQXV0b21hdGljYWxseSByZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIG9uIHVuaW5zdGFsbCAoMikKKyAgICAgICAgIyBBdXRvbWF0aWNhbGx5IHJlbW92ZSAucHljIGZpbGVzIG9uIHVuaW5zdGFsbCAoMikKICAgICAgICAgIyBYWFg6IGFkZGluZyBzbyBtYW55IFJlbW92ZUZpbGUgZW50cmllcyBtYWtlcyBpbnN0YWxsZXIgdW5iZWxpZXZhYmx5CiAgICAgICAgICMgc2xvdy4gU28gaW5zdGVhZCwgd2UgaGF2ZSB0byB1c2Ugd2lsZGNhcmQgcmVtb3ZlIGVudHJpZXMKICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLnB5Iik6CkBAIC0zODIsMTAgKzM4Miw5IEBACiAgICAgICAgIHJldHVybiBmaWxlcwogCiAgICAgZGVmIHJlbW92ZV9weWMoc2VsZik6Ci0gICAgICAgICJSZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIG9uIHVuaW5zdGFsbCIKKyAgICAgICAgIlJlbW92ZSAucHljIGZpbGVzIG9uIHVuaW5zdGFsbCIKICAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIlJlbW92ZUZpbGUiLAotICAgICAgICAgICAgICAgICBbKHNlbGYuY29tcG9uZW50KyJjIiwgc2VsZi5jb21wb25lbnQsICIqLnB5YyIsIHNlbGYubG9naWNhbCwgMiksCi0gICAgICAgICAgICAgICAgICAoc2VsZi5jb21wb25lbnQrIm8iLCBzZWxmLmNvbXBvbmVudCwgIioucHlvIiwgc2VsZi5sb2dpY2FsLCAyKV0pCisgICAgICAgICAgICAgICAgIFsoc2VsZi5jb21wb25lbnQrImMiLCBzZWxmLmNvbXBvbmVudCwgIioucHljIiwgc2VsZi5sb2dpY2FsLCAyKV0pCiAKIGNsYXNzIEJpbmFyeToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZm5hbWUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IDFlYjFhOGQuLjRjMzIyMzcgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTM2NSwxMCArMzY1LDcgQEAKICAgICBkZWYgX3NlbmQoc2VsZiwgYnVmLCB3cml0ZT1fd3JpdGUpOgogICAgICAgICByZW1haW5pbmcgPSBsZW4oYnVmKQogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG4gPSB3cml0ZShzZWxmLl9oYW5kbGUsIGJ1ZikKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBuID0gd3JpdGUoc2VsZi5faGFuZGxlLCBidWYpCiAgICAgICAgICAgICByZW1haW5pbmcgLT0gbgogICAgICAgICAgICAgaWYgcmVtYWluaW5nID09IDA6CiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTM3OSwxMCArMzc2LDcgQEAKICAgICAgICAgaGFuZGxlID0gc2VsZi5faGFuZGxlCiAgICAgICAgIHJlbWFpbmluZyA9IHNpemUKICAgICAgICAgd2hpbGUgcmVtYWluaW5nID4gMDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2h1bmsgPSByZWFkKGhhbmRsZSwgcmVtYWluaW5nKQogICAgICAgICAgICAgbiA9IGxlbihjaHVuaykKICAgICAgICAgICAgIGlmIG4gPT0gMDoKICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gc2l6ZToKQEAgLTQwMCwxNyArMzk0LDE0IEBACiAgICAgICAgIGlmIG4gPiAxNjM4NDoKICAgICAgICAgICAgICMgVGhlIHBheWxvYWQgaXMgbGFyZ2Ugc28gTmFnbGUncyBhbGdvcml0aG0gd29uJ3QgYmUgdHJpZ2dlcmVkCiAgICAgICAgICAgICAjIGFuZCB3ZSdkIGJldHRlciBhdm9pZCB0aGUgY29zdCBvZiBjb25jYXRlbmF0aW9uLgotICAgICAgICAgICAgY2h1bmtzID0gW2hlYWRlciwgYnVmXQotICAgICAgICBlbGlmIG4gPiAwOgorICAgICAgICAgICAgc2VsZi5fc2VuZChoZWFkZXIpCisgICAgICAgICAgICBzZWxmLl9zZW5kKGJ1ZikKKyAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgSXNzdWUgI+KArzIwNTQwOiBjb25jYXRlbmF0ZSBiZWZvcmUgc2VuZGluZywgdG8gYXZvaWQgZGVsYXlzIGR1ZQogICAgICAgICAgICAgIyB0byBOYWdsZSdzIGFsZ29yaXRobSBvbiBhIFRDUCBzb2NrZXQuCi0gICAgICAgICAgICBjaHVua3MgPSBbaGVhZGVyICsgYnVmXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBUaGlzIGNvZGUgcGF0aCBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgImJyb2tlbiBwaXBlIiBlcnJvcnMKLSAgICAgICAgICAgICMgd2hlbiBzZW5kaW5nIGEgMC1sZW5ndGggYnVmZmVyIGlmIHRoZSBvdGhlciBlbmQgY2xvc2VkIHRoZSBwaXBlLgotICAgICAgICAgICAgY2h1bmtzID0gW2hlYWRlcl0KLSAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKLSAgICAgICAgICAgIHNlbGYuX3NlbmQoY2h1bmspCisgICAgICAgICAgICAjIEFsc28gbm90ZSB3ZSB3YW50IHRvIGF2b2lkIHNlbmRpbmcgYSAwLWxlbmd0aCBidWZmZXIgc2VwYXJhdGVseSwKKyAgICAgICAgICAgICMgdG8gYXZvaWQgImJyb2tlbiBwaXBlIiBlcnJvcnMgaWYgdGhlIG90aGVyIGVuZCBjbG9zZWQgdGhlIHBpcGUuCisgICAgICAgICAgICBzZWxmLl9zZW5kKGhlYWRlciArIGJ1ZikKIAogICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgogICAgICAgICBidWYgPSBzZWxmLl9yZWN2KDQpCkBAIC01OTksMTMgKzU5MCw3IEBACiAgICAgICAgICAgICBzZWxmLl91bmxpbmsgPSBOb25lCiAKICAgICBkZWYgYWNjZXB0KHNlbGYpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcywgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IHNlbGYuX3NvY2tldC5hY2NlcHQoKQogICAgICAgICBzLnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CmluZGV4IDEzNWRiN2YuLjFhYmVhNjQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQpAQCAtODYsNyArODYsNyBAQAogICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpOgogICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQogICAgICAgICB0ZW1wLnNvcnQoKQotICAgICAgICByZXR1cm4gJ05hbWVzcGFjZSglcyknICUgc3RyLmpvaW4oJywgJywgdGVtcCkKKyAgICAgICAgcmV0dXJuICclcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4odGVtcCkpCiAKIGRpY3QgPSBkaWN0CiBsaXN0ID0gbGlzdApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CmluZGV4IDY5NGVmOTYuLjE5ODQzNzUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKQEAgLTU5LDkgKzU5LDggQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGlmIHRpbWVvdXQgPD0gMC4wOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHNlbGYuX2luLm5vdF9lbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5faW4ubm90X2VtcHR5LndhaXQodGltZW91dCkKLSAgICAgICAgc2VsZi5faW4ubm90X2VtcHR5LnJlbGVhc2UoKQorICAgICAgICB3aXRoIHNlbGYuX2luLm5vdF9lbXB0eToKKyAgICAgICAgICAgIHNlbGYuX2luLm5vdF9lbXB0eS53YWl0KHRpbWVvdXQpCiAgICAgICAgIHJldHVybiBzZWxmLl9pbi5xc2l6ZSgpID4gMAogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CmluZGV4IDM4NzUxN2UuLmIyN2NiYTUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICAgICAgICAgICAgIGFkZHJlc3MgPSBjb25uZWN0aW9uLmFyYml0cmFyeV9hZGRyZXNzKCdBRl9VTklYJykKICAgICAgICAgICAgICAgICBsaXN0ZW5lci5iaW5kKGFkZHJlc3MpCiAgICAgICAgICAgICAgICAgb3MuY2htb2QoYWRkcmVzcywgMG82MDApCi0gICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuKDEwMCkKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW4oKQogCiAgICAgICAgICAgICAgICAgIyBhbGwgY2xpZW50IHByb2Nlc3NlcyBvd24gdGhlIHdyaXRlIGVuZCBvZiB0aGUgImFsaXZlIiBwaXBlOwogICAgICAgICAgICAgICAgICMgd2hlbiB0aGV5IGFsbCB0ZXJtaW5hdGUgdGhlIHJlYWQgZW5kIGJlY29tZXMgcmVhZHkuCkBAIC0xODgsOCArMTg4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoY29kZSkKIAotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDT05OQUJPUlRFRDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTIzMCwxMyArMjI4LDcgQEAKICAgICBkYXRhID0gYicnCiAgICAgbGVuZ3RoID0gVU5TSUdORURfU1RSVUNULnNpemUKICAgICB3aGlsZSBsZW4oZGF0YSkgPCBsZW5ndGg6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcyA9IG9zLnJlYWQoZmQsIGxlbmd0aCAtIGxlbihkYXRhKSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcyA9IG9zLnJlYWQoZmQsIGxlbmd0aCAtIGxlbihkYXRhKSkKICAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigndW5leHBlY3RlZCBFT0YnKQogICAgICAgICBkYXRhICs9IHMKQEAgLTI0NSwxMyArMjM3LDcgQEAKIGRlZiB3cml0ZV91bnNpZ25lZChmZCwgbik6CiAgICAgbXNnID0gVU5TSUdORURfU1RSVUNULnBhY2sobikKICAgICB3aGlsZSBtc2c6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbmJ5dGVzID0gb3Mud3JpdGUoZmQsIG1zZykKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbmJ5dGVzID0gb3Mud3JpdGUoZmQsIG1zZykKICAgICAgICAgaWYgbmJ5dGVzID09IDA6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3Nob3VsZCBub3QgZ2V0IGhlcmUnKQogICAgICAgICBtc2cgPSBtc2dbbmJ5dGVzOl0KZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQppbmRleCAzNDRhNDVmLi40NGQ5NjM4IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CkBAIC01NCw3ICs1NCw5IEBACiAgICAgICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgogICAgICAgICAgICAgc2VsZi5zaXplLCBzZWxmLm5hbWUgPSBzZWxmLl9zdGF0ZSA9IHN0YXRlCiAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IG1tYXAubW1hcCgtMSwgc2VsZi5zaXplLCB0YWduYW1lPXNlbGYubmFtZSkKLSAgICAgICAgICAgIGFzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IF93aW5hcGkuRVJST1JfQUxSRUFEWV9FWElTVFMKKyAgICAgICAgICAgICMgWFhYIFRlbXBvcmFyaWx5IHByZXZlbnRpbmcgYnVpbGRib3QgZmFpbHVyZXMgd2hpbGUgZGV0ZXJtaW5pbmcKKyAgICAgICAgICAgICMgWFhYIHRoZSBjb3JyZWN0IGxvbmctdGVybSBmaXguIFNlZSBpc3N1ZSAyMzA2MAorICAgICAgICAgICAgI2Fzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IF93aW5hcGkuRVJST1JfQUxSRUFEWV9FWElTVFMKIAogZWxzZToKIApAQCAtNjksNyArNzEsMTQgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSkKICAgICAgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAoc2VsZi5mZCwpKQogICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmZkLCAnd2InLCBjbG9zZWZkPUZhbHNlKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGInXDAnKnNpemUpCisgICAgICAgICAgICAgICAgICAgIGJzID0gMTAyNCAqIDEwMjQKKyAgICAgICAgICAgICAgICAgICAgaWYgc2l6ZSA+PSBiczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHplcm9zID0gYidcMCcgKiBicworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2Uoc2l6ZSAvLyBicyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSh6ZXJvcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCB6ZXJvcworICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGInXDAnICogKHNpemUgJSBicykpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmLnRlbGwoKSA9PSBzaXplCiAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IG1tYXAubW1hcChzZWxmLmZkLCBzZWxmLnNpemUpCiAKICAgICBkZWYgcmVkdWNlX2FyZW5hKGEpOgpAQCAtMjE2LDkgKzIyNSw4IEBACiAgICAgICAgIGFzc2VydCAwIDw9IHNpemUgPCBzeXMubWF4c2l6ZQogICAgICAgICBpZiBvcy5nZXRwaWQoKSAhPSBzZWxmLl9sYXN0cGlkOgogICAgICAgICAgICAgc2VsZi5fX2luaXRfXygpICAgICAgICAgICAgICAgICAgICAgIyByZWluaXRpYWxpemUgYWZ0ZXIgZm9yawotICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9mcmVlX3BlbmRpbmdfYmxvY2tzKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9mcmVlX3BlbmRpbmdfYmxvY2tzKCkKICAgICAgICAgICAgIHNpemUgPSBzZWxmLl9yb3VuZHVwKG1heChzaXplLDEpLCBzZWxmLl9hbGlnbm1lbnQpCiAgICAgICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSA9IHNlbGYuX21hbGxvYyhzaXplKQogICAgICAgICAgICAgbmV3X3N0b3AgPSBzdGFydCArIHNpemUKQEAgLTIyNyw4ICsyMzUsNiBAQAogICAgICAgICAgICAgYmxvY2sgPSAoYXJlbmEsIHN0YXJ0LCBuZXdfc3RvcCkKICAgICAgICAgICAgIHNlbGYuX2FsbG9jYXRlZF9ibG9ja3MuYWRkKGJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGJsb2NrCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQogCiAjCiAjIENsYXNzIHJlcHJlc2VudGluZyBhIGNodW5rIG9mIGFuIG1tYXAgLS0gY2FuIGJlIGluaGVyaXRlZCBieSBjaGlsZCBwcm9jZXNzCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQppbmRleCA2NmQ0NmZjLi43NzY2NTZlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKQEAgLTY1LDggKzY1LDggQEAKICAgICAgICAgKHNlbGYudHlwZWlkLCBzZWxmLmFkZHJlc3MsIHNlbGYuaWQpID0gc3RhdGUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdUb2tlbih0eXBlaWQ9JXIsIGFkZHJlc3M9JXIsIGlkPSVyKScgJSBcCi0gICAgICAgICAgICAgICAoc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkKKyAgICAgICAgcmV0dXJuICclcyh0eXBlaWQ9JXIsIGFkZHJlc3M9JXIsIGlkPSVyKScgJSBcCisgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudHlwZWlkLCBzZWxmLmFkZHJlc3MsIHNlbGYuaWQpCiAKICMKICMgRnVuY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIG1hbmFnZXIncyBzZXJ2ZXIgcHJvY2VzcwpAQCAtMzA2LDggKzMwNiw3IEBACiAgICAgICAgICcnJwogICAgICAgICBSZXR1cm4gc29tZSBpbmZvIC0tLSB1c2VmdWwgdG8gc3BvdCBwcm9ibGVtcyB3aXRoIHJlZmNvdW50aW5nCiAgICAgICAgICcnJwotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgICAgICBrZXlzID0gbGlzdChzZWxmLmlkX3RvX29iai5rZXlzKCkpCiAgICAgICAgICAgICBrZXlzLnNvcnQoKQpAQCAtMzE3LDggKzMxNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlkZW50LCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNlbGYuaWRfdG9fb2JqW2lkZW50XVswXSlbOjc1XSkpCiAgICAgICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYubXV0ZXgucmVsZWFzZSgpCiAKICAgICBkZWYgbnVtYmVyX29mX29iamVjdHMoc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMzQzLDggKzM0MCw3IEBACiAgICAgICAgICcnJwogICAgICAgICBDcmVhdGUgYSBuZXcgc2hhcmVkIG9iamVjdCBhbmQgcmV0dXJuIGl0cyBpZAogICAgICAgICAnJycKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICBjYWxsYWJsZSwgZXhwb3NlZCwgbWV0aG9kX3RvX3R5cGVpZCwgcHJveHl0eXBlID0gXAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVnaXN0cnlbdHlwZWlkXQogCkBAIC0zNzQsOCArMzcwLDYgQEAKICAgICAgICAgICAgICMgaGFzIGJlZW4gY3JlYXRlZC4KICAgICAgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQogICAgICAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKIAogICAgIGRlZiBnZXRfbWV0aG9kcyhzZWxmLCBjLCB0b2tlbik6CiAgICAgICAgICcnJwpAQCAtMzkyLDIyICszODYsMTYgQEAKICAgICAgICAgc2VsZi5zZXJ2ZV9jbGllbnQoYykKIAogICAgIGRlZiBpbmNyZWYoc2VsZiwgYywgaWRlbnQpOgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYubXV0ZXgucmVsZWFzZSgpCiAKICAgICBkZWYgZGVjcmVmKHNlbGYsIGMsIGlkZW50KToKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICBhc3NlcnQgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPj0gMQogICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gLT0gMQogICAgICAgICAgICAgaWYgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPT0gMDoKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19vYmpbaWRlbnRdLCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XQogICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ2Rpc3Bvc2luZyBvZiBvYmogd2l0aCBpZCAlcicsIGlkZW50KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKIAogIwogIyBDbGFzcyB0byByZXByZXNlbnQgc3RhdGUgb2YgYSBtYW5hZ2VyCkBAIC02NzEsMTQgKzY1OSwxMSBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuLCBzZXJpYWxpemVyLCBtYW5hZ2VyPU5vbmUsCiAgICAgICAgICAgICAgICAgIGF1dGhrZXk9Tm9uZSwgZXhwb3NlZD1Ob25lLCBpbmNyZWY9VHJ1ZSk6Ci0gICAgICAgIEJhc2VQcm94eS5fbXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBCYXNlUHJveHkuX211dGV4OgogICAgICAgICAgICAgdGxzX2lkc2V0ID0gQmFzZVByb3h5Ll9hZGRyZXNzX3RvX2xvY2FsLmdldCh0b2tlbi5hZGRyZXNzLCBOb25lKQogICAgICAgICAgICAgaWYgdGxzX2lkc2V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdGxzX2lkc2V0ID0gdXRpbC5Gb3JrQXdhcmVMb2NhbCgpLCBQcm9jZXNzTG9jYWxTZXQoKQogICAgICAgICAgICAgICAgIEJhc2VQcm94eS5fYWRkcmVzc190b19sb2NhbFt0b2tlbi5hZGRyZXNzXSA9IHRsc19pZHNldAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgQmFzZVByb3h5Ll9tdXRleC5yZWxlYXNlKCkKIAogICAgICAgICAjIHNlbGYuX3RscyBpcyB1c2VkIHRvIHJlY29yZCB0aGUgY29ubmVjdGlvbiB1c2VkIGJ5IHRoaXMKICAgICAgICAgIyB0aHJlYWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgbWFuYWdlciBhdCB0b2tlbi5hZGRyZXNzCkBAIC04MTgsOCArODAzLDggQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2dldHZhbHVlKCkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0LCB0eXBlaWQgJXIgYXQgJXM+JyAlIFwKLSAgICAgICAgICAgICAgICh0eXBlKHNlbGYpLl9fbmFtZV9fLCBzZWxmLl90b2tlbi50eXBlaWQsICcweCV4JyAlIGlkKHNlbGYpKQorICAgICAgICByZXR1cm4gJzwlcyBvYmplY3QsIHR5cGVpZCAlciBhdCAlI3g+JyAlIFwKKyAgICAgICAgICAgICAgICh0eXBlKHNlbGYpLl9fbmFtZV9fLCBzZWxmLl90b2tlbi50eXBlaWQsIGlkKHNlbGYpKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgICcnJwpAQCAtOTE2LDcgKzkwMSw3IEBACiAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyk6CiAgICAgICAgICAgICAgICAgdGVtcC5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHRlbXAuc29ydCgpCi0gICAgICAgIHJldHVybiAnTmFtZXNwYWNlKCVzKScgJSBzdHIuam9pbignLCAnLCB0ZW1wKQorICAgICAgICByZXR1cm4gJyVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbih0ZW1wKSkKIAogY2xhc3MgVmFsdWUob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZWNvZGUsIHZhbHVlLCBsb2NrPVRydWUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CmluZGV4IGRiNmUzZTEuLjZkMjU0NjkgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4YykKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8TWF5YmVFbmNvZGluZ0Vycm9yOiAlcz4iICUgc3RyKHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzOiAlcz4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmKQogCiAKIGRlZiB3b3JrZXIoaW5xdWV1ZSwgb3V0cXVldWUsIGluaXRpYWxpemVyPU5vbmUsIGluaXRhcmdzPSgpLCBtYXh0YXNrcz1Ob25lLApAQCAtNjc1LDggKzY3NSw3IEBACiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgbmV4dChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpdGVtID0gc2VsZi5faXRlbXMucG9wbGVmdCgpCiAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKQEAgLTY4OSw4ICs2ODgsNiBAQAogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBzZWxmLl9sZW5ndGg6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJvcgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgICAgICBzdWNjZXNzLCB2YWx1ZSA9IGl0ZW0KICAgICAgICAgaWYgc3VjY2VzczoKQEAgLTcwMCw4ICs2OTcsNyBAQAogICAgIF9fbmV4dF9fID0gbmV4dCAgICAgICAgICAgICAgICAgICAgIyBYWFgKIAogICAgIGRlZiBfc2V0KHNlbGYsIGksIG9iaik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gaToKICAgICAgICAgICAgICAgICBzZWxmLl9pdGVtcy5hcHBlbmQob2JqKQogICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKQEAgLTcxNSwxOCArNzExLDEzIEBACiAKICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgIGRlZiBfc2V0X2xlbmd0aChzZWxmLCBsZW5ndGgpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHNlbGYuX2xlbmd0aCA9IGxlbmd0aAogICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmltYXBfdW5vcmRlcmVkKClgCkBAIC03MzUsMTUgKzcyNiwxMiBAQAogY2xhc3MgSU1hcFVub3JkZXJlZEl0ZXJhdG9yKElNYXBJdGVyYXRvcik6CiAKICAgICBkZWYgX3NldChzZWxmLCBpLCBvYmopOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHNlbGYuX2l0ZW1zLmFwcGVuZChvYmopCiAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCiAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBzZWxmLl9sZW5ndGg6CiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICMKICMKQEAgLTc2OSwxMCArNzU3LDcgQEAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9oZWxwX3N0dWZmX2ZpbmlzaChpbnF1ZXVlLCB0YXNrX2hhbmRsZXIsIHNpemUpOgogICAgICAgICAjIHB1dCBzZW50aW5lbHMgYXQgaGVhZCBvZiBpbnF1ZXVlIHRvIG1ha2Ugd29ya2VycyBmaW5pc2gKLSAgICAgICAgaW5xdWV1ZS5ub3RfZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBpbnF1ZXVlLm5vdF9lbXB0eToKICAgICAgICAgICAgIGlucXVldWUucXVldWUuY2xlYXIoKQogICAgICAgICAgICAgaW5xdWV1ZS5xdWV1ZS5leHRlbmQoW05vbmVdICogc2l6ZSkKICAgICAgICAgICAgIGlucXVldWUubm90X2VtcHR5Lm5vdGlmeV9hbGwoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaW5xdWV1ZS5ub3RfZW1wdHkucmVsZWFzZSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmsucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmsucHkKaW5kZXggMzY3ZTcyZS4uZDJlYmQ3YyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3JrLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAotaW1wb3J0IGVycm5vCiAKIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC0yOSw4ICsyOCw2IEBACiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBwaWQsIHN0cyA9IG9zLndhaXRwaWQoc2VsZi5waWQsIGZsYWcpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2VzcyBub3QgeWV0IGNyZWF0ZWQuIFNlZSAjMTczMTcxNwogICAgICAgICAgICAgICAgICAgICAjIGUuZXJybm8gPT0gZXJybm8uRUNISUxEID09IDEwCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDI5M2FkNzYuLjc4NmEzMDMgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC04MiwxNCArODIsMTEgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX3NlbS5hY3F1aXJlKGJsb2NrLCB0aW1lb3V0KToKICAgICAgICAgICAgIHJhaXNlIEZ1bGwKIAotICAgICAgICBzZWxmLl9ub3RlbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX25vdGVtcHR5OgogICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnRfdGhyZWFkKCkKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQob2JqKQogICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5LnJlbGVhc2UoKQogCiAgICAgZGVmIGdldChzZWxmLCBibG9jaz1UcnVlLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICBpZiBibG9jayBhbmQgdGltZW91dCBpcyBOb25lOgpAQCAtMjA2LDEyICsyMDMsOSBAQAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2ZpbmFsaXplX2Nsb3NlKGJ1ZmZlciwgbm90ZW1wdHkpOgogICAgICAgICBkZWJ1ZygndGVsbGluZyBxdWV1ZSB0aHJlYWQgdG8gcXVpdCcpCi0gICAgICAgIG5vdGVtcHR5LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggbm90ZW1wdHk6CiAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKF9zZW50aW5lbCkKICAgICAgICAgICAgIG5vdGVtcHR5Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBub3RlbXB0eS5yZWxlYXNlKCkKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2ZlZWQoYnVmZmVyLCBub3RlbXB0eSwgc2VuZF9ieXRlcywgd3JpdGVsb2NrLCBjbG9zZSwgaWdub3JlX2VwaXBlKToKQEAgLTMwMCwzNSArMjk0LDI0IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLl9zZW0uYWNxdWlyZShibG9jaywgdGltZW91dCk6CiAgICAgICAgICAgICByYWlzZSBGdWxsCiAKLSAgICAgICAgc2VsZi5fbm90ZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9ub3RlbXB0eSwgc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0X3RocmVhZCgpCiAgICAgICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKG9iaikKICAgICAgICAgICAgIHNlbGYuX3VuZmluaXNoZWRfdGFza3MucmVsZWFzZSgpCiAgICAgICAgICAgICBzZWxmLl9ub3RlbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKLSAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5LnJlbGVhc2UoKQogCiAgICAgZGVmIHRhc2tfZG9uZShzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5hY3F1aXJlKEZhbHNlKToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0YXNrX2RvbmUoKSBjYWxsZWQgdG9vIG1hbnkgdGltZXMnKQogICAgICAgICAgICAgaWYgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5fc2VtbG9jay5faXNfemVybygpOgogICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIGpvaW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX3VuZmluaXNoZWRfdGFza3MuX3NlbWxvY2suX2lzX3plcm8oKToKICAgICAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogIwogIyBTaW1wbGlmaWVkIFF1ZXVlIHR5cGUgLS0gcmVhbGx5IGp1c3QgYSBsb2NrZWQgcGlwZQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCAwYzE3ODI1Li40MjU4ZjU5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtMTg4LDYgKzE4OCwxMiBAQAogICAgICAgICBzZWxmLmFjcXVpcmUgPSBzZWxmLl9sb2NrLmFjcXVpcmUKICAgICAgICAgc2VsZi5yZWxlYXNlID0gc2VsZi5fbG9jay5yZWxlYXNlCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2VudGVyX18oKQorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19leGl0X18oKmFyZ3MpCisKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCiAgICAgICAgIHJldHVybiBzeW5jaHJvbml6ZWQsIChzZWxmLl9vYmosIHNlbGYuX2xvY2spCkBAIC0yMTIsMzIgKzIxOCwyMCBAQAogICAgICAgICByZXR1cm4gbGVuKHNlbGYuX29iaikKIAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKToKLSAgICAgICAgc2VsZi5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fb2JqW2ldCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGksIHZhbHVlKToKLSAgICAgICAgc2VsZi5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBzZWxmLl9vYmpbaV0gPSB2YWx1ZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKIAogICAgIGRlZiBfX2dldHNsaWNlX18oc2VsZiwgc3RhcnQsIHN0b3ApOgotICAgICAgICBzZWxmLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9vYmpbc3RhcnQ6c3RvcF0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKICAgICBkZWYgX19zZXRzbGljZV9fKHNlbGYsIHN0YXJ0LCBzdG9wLCB2YWx1ZXMpOgotICAgICAgICBzZWxmLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHNlbGYuX29ialtzdGFydDpzdG9wXSA9IHZhbHVlcwotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKIAogCiBjbGFzcyBTeW5jaHJvbml6ZWRTdHJpbmcoU3luY2hyb25pemVkQXJyYXkpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKaW5kZXggZGVhMWNiZC4uZDRiZGYwZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHZhbHVlID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPFNlbWFwaG9yZSh2YWx1ZT0lcyk+JyAlIHZhbHVlCisgICAgICAgIHJldHVybiAnPCVzKHZhbHVlPSVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCB2YWx1ZSkKIAogIwogIyBCb3VuZGVkIHNlbWFwaG9yZQpAQCAtMTUwLDggKzE1MCw4IEBACiAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX3NlbWxvY2suX2dldF92YWx1ZSgpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICB2YWx1ZSA9ICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxCb3VuZGVkU2VtYXBob3JlKHZhbHVlPSVzLCBtYXh2YWx1ZT0lcyk+JyAlIFwKLSAgICAgICAgICAgICAgICh2YWx1ZSwgc2VsZi5fc2VtbG9jay5tYXh2YWx1ZSkKKyAgICAgICAgcmV0dXJuICc8JXModmFsdWU9JXMsIG1heHZhbHVlPSVzKT4nICUgXAorICAgICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCB2YWx1ZSwgc2VsZi5fc2VtbG9jay5tYXh2YWx1ZSkKIAogIwogIyBOb24tcmVjdXJzaXZlIGxvY2sKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICAgICAgICAgIG5hbWUgPSAnU29tZU90aGVyUHJvY2VzcycKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIG5hbWUgPSAndW5rbm93bicKLSAgICAgICAgcmV0dXJuICc8TG9jayhvd25lcj0lcyk+JyAlIG5hbWUKKyAgICAgICAgcmV0dXJuICc8JXMob3duZXI9JXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpCiAKICMKICMgUmVjdXJzaXZlIGxvY2sKQEAgLTIwMiw3ICsyMDIsNyBAQAogICAgICAgICAgICAgICAgIG5hbWUsIGNvdW50ID0gJ1NvbWVPdGhlclByb2Nlc3MnLCAnbm9uemVybycKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIG5hbWUsIGNvdW50ID0gJ3Vua25vd24nLCAndW5rbm93bicKLSAgICAgICAgcmV0dXJuICc8UkxvY2soJXMsICVzKT4nICUgKG5hbWUsIGNvdW50KQorICAgICAgICByZXR1cm4gJzwlcyglcywgJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUsIGNvdW50KQogCiAjCiAjIENvbmRpdGlvbiB2YXJpYWJsZQpAQCAtMjQzLDcgKzI0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93b2tlbl9jb3VudC5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBudW1fd2FpdGVycyA9ICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxDb25kaXRpb24oJXMsICVzKT4nICUgKHNlbGYuX2xvY2ssIG51bV93YWl0ZXJzKQorICAgICAgICByZXR1cm4gJzwlcyglcywgJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX2xvY2ssIG51bV93YWl0ZXJzKQogCiAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKICAgICAgICAgYXNzZXJ0IHNlbGYuX2xvY2suX3NlbWxvY2suX2lzX21pbmUoKSwgXApAQCAtMzM3LDM0ICszMzcsMjQgQEAKICAgICAgICAgc2VsZi5fZmxhZyA9IGN0eC5TZW1hcGhvcmUoMCkKIAogICAgIGRlZiBpc19zZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgaWYgc2VsZi5fZmxhZy5hY3F1aXJlKEZhbHNlKToKICAgICAgICAgICAgICAgICBzZWxmLl9mbGFnLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgc2V0KHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSkKICAgICAgICAgICAgIHNlbGYuX2ZsYWcucmVsZWFzZSgpCiAgICAgICAgICAgICBzZWxmLl9jb25kLm5vdGlmeV9hbGwoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgIGRlZiBjbGVhcihzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZsYWcucmVsZWFzZSgpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzc0LDggKzM2NCw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAjCiAjIEJhcnJpZXIKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQppbmRleCAwYjY5NWU0Li5lYTU0NDNkIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CkBAIC0yMTIsMTAgKzIxMiwxMSBAQAogICAgICAgICAgICAgb2JqID0gTm9uZQogCiAgICAgICAgIGlmIG9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICc8RmluYWxpemUgb2JqZWN0LCBkZWFkPicKKyAgICAgICAgICAgIHJldHVybiAnPCVzIG9iamVjdCwgZGVhZD4nICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KIAotICAgICAgICB4ID0gJzxGaW5hbGl6ZSBvYmplY3QsIGNhbGxiYWNrPSVzJyAlIFwKLSAgICAgICAgICAgIGdldGF0dHIoc2VsZi5fY2FsbGJhY2ssICdfX25hbWVfXycsIHNlbGYuX2NhbGxiYWNrKQorICAgICAgICB4ID0gJzwlcyBvYmplY3QsIGNhbGxiYWNrPSVzJyAlICgKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYuX2NhbGxiYWNrLCAnX19uYW1lX18nLCBzZWxmLl9jYWxsYmFjaykpCiAgICAgICAgIGlmIHNlbGYuX2FyZ3M6CiAgICAgICAgICAgICB4ICs9ICcsIGFyZ3M9JyArIHN0cihzZWxmLl9hcmdzKQogICAgICAgICBpZiBzZWxmLl9rd2FyZ3M6CkBAIC0zMjcsNiArMzI4LDEzIEBACiAgICAgICAgIHNlbGYuYWNxdWlyZSA9IHNlbGYuX2xvY2suYWNxdWlyZQogICAgICAgICBzZWxmLnJlbGVhc2UgPSBzZWxmLl9sb2NrLnJlbGVhc2UKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZW50ZXJfXygpCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2V4aXRfXygqYXJncykKKworCiBjbGFzcyBGb3JrQXdhcmVMb2NhbCh0aHJlYWRpbmcubG9jYWwpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgcmVnaXN0ZXJfYWZ0ZXJfZm9yayhzZWxmLCBsYW1iZGEgb2JqIDogb2JqLl9fZGljdF9fLmNsZWFyKCkpCmRpZmYgLS1naXQgYS9MaWIvbnRwYXRoLnB5IGIvTGliL250cGF0aC5weQppbmRleCA5OTI5NzBhLi45Y2M1Y2E3IDEwMDY0NAotLS0gYS9MaWIvbnRwYXRoLnB5CisrKyBiL0xpYi9udHBhdGgucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgICAgImlzbW91bnQiLCAiZXhwYW5kdXNlciIsImV4cGFuZHZhcnMiLCJub3JtcGF0aCIsImFic3BhdGgiLAogICAgICAgICAgICAic3BsaXR1bmMiLCJjdXJkaXIiLCJwYXJkaXIiLCJzZXAiLCJwYXRoc2VwIiwiZGVmcGF0aCIsImFsdHNlcCIsCiAgICAgICAgICAgICJleHRzZXAiLCJkZXZudWxsIiwicmVhbHBhdGgiLCJzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyIsInJlbHBhdGgiLAotICAgICAgICAgICAic2FtZWZpbGUiLCAic2FtZW9wZW5maWxlIiwgInNhbWVzdGF0IixdCisgICAgICAgICAgICJzYW1lZmlsZSIsICJzYW1lb3BlbmZpbGUiLCAic2FtZXN0YXQiLCAiY29tbW9ucGF0aCJdCiAKICMgc3RyaW5ncyByZXByZXNlbnRpbmcgdmFyaW91cyBwYXRoLXJlbGF0ZWQgYml0cyBhbmQgcGllY2VzCiAjIFRoZXNlIGFyZSBwcmltYXJpbHkgZm9yIGV4cG9ydDsgaW50ZXJuYWxseSwgdGhleSBhcmUgaGFyZGNvZGVkLgpAQCAtMzIsNDggKzMyLDEyIEBACiAgICAgZGVmcGF0aCA9ICdcXFdpbmRvd3MnCiBkZXZudWxsID0gJ251bCcKIAotZGVmIF9nZXRfZW1wdHkocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiBiJycKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJycKLQotZGVmIF9nZXRfc2VwKHBhdGgpOgotICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICByZXR1cm4gYidcXCcKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJ1xcJwotCi1kZWYgX2dldF9hbHRzZXAocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiBiJy8nCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICcvJwotCiBkZWYgX2dldF9ib3Roc2VwcyhwYXRoKToKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgcmV0dXJuIGInXFwvJwogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiAnXFwvJwogCi1kZWYgX2dldF9kb3QocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiBiJy4nCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICcuJwotCi1kZWYgX2dldF9jb2xvbihwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInOicKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJzonCi0KLWRlZiBfZ2V0X3NwZWNpYWwocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiAoYidcXFxcLlxcJywgYidcXFxcP1xcJykKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gKCdcXFxcLlxcJywgJ1xcXFw/XFwnKQotCiAjIE5vcm1hbGl6ZSB0aGUgY2FzZSBvZiBhIHBhdGhuYW1lIGFuZCBtYXAgc2xhc2hlcyB0byBiYWNrc2xhc2hlcy4KICMgT3RoZXIgbm9ybWFsaXphdGlvbnMgKHN1Y2ggYXMgb3B0aW1pemluZyAnLi4vJyBhd2F5KSBhcmUgbm90IGRvbmUKICMgKHRoaXMgaXMgZG9uZSBieSBub3JtcGF0aCkuCkBAIC04MiwxMCArNDYsMTYgQEAKICAgICAiIiJOb3JtYWxpemUgY2FzZSBvZiBwYXRobmFtZS4KIAogICAgIE1ha2VzIGFsbCBjaGFyYWN0ZXJzIGxvd2VyY2FzZSBhbmQgYWxsIHNsYXNoZXMgaW50byBiYWNrc2xhc2hlcy4iIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIHN0cikpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vcm1jYXNlKCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJ3t9JyIuZm9ybWF0KHMuX19jbGFzc19fLl9fbmFtZV9fKSkKLSAgICByZXR1cm4gcy5yZXBsYWNlKF9nZXRfYWx0c2VwKHMpLCBfZ2V0X3NlcChzKSkubG93ZXIoKQorICAgIHRyeToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CisgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKGInLycsIGInXFwnKS5sb3dlcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKCcvJywgJ1xcJykubG93ZXIoKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5vcm1jYXNlKCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICVyIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKSBmcm9tIE5vbmUKKyAgICAgICAgcmFpc2UKIAogCiAjIFJldHVybiB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZS4KQEAgLTk3LDQwICs2Nyw1MSBAQAogZGVmIGlzYWJzKHMpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYWJzb2x1dGUiIiIKICAgICBzID0gc3BsaXRkcml2ZShzKVsxXQotICAgIHJldHVybiBsZW4ocykgPiAwIGFuZCBzWzoxXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCisgICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbMF0gaW4gX2dldF9ib3Roc2VwcyhzKQogCiAKICMgSm9pbiB0d28gKG9yIG1vcmUpIHBhdGhzLgogZGVmIGpvaW4ocGF0aCwgKnBhdGhzKToKLSAgICBzZXAgPSBfZ2V0X3NlcChwYXRoKQotICAgIHNlcHMgPSBfZ2V0X2JvdGhzZXBzKHBhdGgpCi0gICAgY29sb24gPSBfZ2V0X2NvbG9uKHBhdGgpCi0gICAgcmVzdWx0X2RyaXZlLCByZXN1bHRfcGF0aCA9IHNwbGl0ZHJpdmUocGF0aCkKLSAgICBmb3IgcCBpbiBwYXRoczoKLSAgICAgICAgcF9kcml2ZSwgcF9wYXRoID0gc3BsaXRkcml2ZShwKQotICAgICAgICBpZiBwX3BhdGggYW5kIHBfcGF0aFswXSBpbiBzZXBzOgotICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQotICAgICAgICAgICAgaWYgcF9kcml2ZSBvciBub3QgcmVzdWx0X2RyaXZlOgotICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKLSAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbGlmIHBfZHJpdmUgYW5kIHBfZHJpdmUgIT0gcmVzdWx0X2RyaXZlOgotICAgICAgICAgICAgaWYgcF9kcml2ZS5sb3dlcigpICE9IHJlc3VsdF9kcml2ZS5sb3dlcigpOgotICAgICAgICAgICAgICAgICMgRGlmZmVyZW50IGRyaXZlcyA9PiBpZ25vcmUgdGhlIGZpcnN0IHBhdGggZW50aXJlbHkKLSAgICAgICAgICAgICAgICByZXN1bHRfZHJpdmUgPSBwX2RyaXZlCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CisgICAgICAgIHNlcCA9IGInXFwnCisgICAgICAgIHNlcHMgPSBiJ1xcLycKKyAgICAgICAgY29sb24gPSBiJzonCisgICAgZWxzZToKKyAgICAgICAgc2VwID0gJ1xcJworICAgICAgICBzZXBzID0gJ1xcLycKKyAgICAgICAgY29sb24gPSAnOicKKyAgICB0cnk6CisgICAgICAgIGlmIG5vdCBwYXRoczoKKyAgICAgICAgICAgIHBhdGhbOjBdICsgc2VwICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KKyAgICAgICAgcmVzdWx0X2RyaXZlLCByZXN1bHRfcGF0aCA9IHNwbGl0ZHJpdmUocGF0aCkKKyAgICAgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCisgICAgICAgICAgICBpZiBwX3BhdGggYW5kIHBfcGF0aFswXSBpbiBzZXBzOgorICAgICAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgYWJzb2x1dGUKKyAgICAgICAgICAgICAgICBpZiBwX2RyaXZlIG9yIG5vdCByZXN1bHRfZHJpdmU6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKICAgICAgICAgICAgICAgICByZXN1bHRfcGF0aCA9IHBfcGF0aAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAjIFNhbWUgZHJpdmUgaW4gZGlmZmVyZW50IGNhc2UKLSAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKLSAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QKLSAgICAgICAgaWYgcmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWy0xXSBub3QgaW4gc2VwczoKLSAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcmVzdWx0X3BhdGggKyBzZXAKLSAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHBfcGF0aAotICAgICMjIGFkZCBzZXBhcmF0b3IgYmV0d2VlbiBVTkMgYW5kIG5vbi1hYnNvbHV0ZSBwYXRoCi0gICAgaWYgKHJlc3VsdF9wYXRoIGFuZCByZXN1bHRfcGF0aFswXSBub3QgaW4gc2VwcyBhbmQKLSAgICAgICAgcmVzdWx0X2RyaXZlIGFuZCByZXN1bHRfZHJpdmVbLTE6XSAhPSBjb2xvbik6Ci0gICAgICAgIHJldHVybiByZXN1bHRfZHJpdmUgKyBzZXAgKyByZXN1bHRfcGF0aAotICAgIHJldHVybiByZXN1bHRfZHJpdmUgKyByZXN1bHRfcGF0aAorICAgICAgICAgICAgZWxpZiBwX2RyaXZlIGFuZCBwX2RyaXZlICE9IHJlc3VsdF9kcml2ZToKKyAgICAgICAgICAgICAgICBpZiBwX2RyaXZlLmxvd2VyKCkgIT0gcmVzdWx0X2RyaXZlLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgICMgRGlmZmVyZW50IGRyaXZlcyA9PiBpZ25vcmUgdGhlIGZpcnN0IHBhdGggZW50aXJlbHkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQorICAgICAgICAgICAgICAgICAgICByZXN1bHRfcGF0aCA9IHBfcGF0aAorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgU2FtZSBkcml2ZSBpbiBkaWZmZXJlbnQgY2FzZQorICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKKyAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0CisgICAgICAgICAgICBpZiByZXN1bHRfcGF0aCBhbmQgcmVzdWx0X3BhdGhbLTFdIG5vdCBpbiBzZXBzOgorICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcmVzdWx0X3BhdGggKyBzZXAKKyAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcmVzdWx0X3BhdGggKyBwX3BhdGgKKyAgICAgICAgIyMgYWRkIHNlcGFyYXRvciBiZXR3ZWVuIFVOQyBhbmQgbm9uLWFic29sdXRlIHBhdGgKKyAgICAgICAgaWYgKHJlc3VsdF9wYXRoIGFuZCByZXN1bHRfcGF0aFswXSBub3QgaW4gc2VwcyBhbmQKKyAgICAgICAgICAgIHJlc3VsdF9kcml2ZSBhbmQgcmVzdWx0X2RyaXZlWy0xOl0gIT0gY29sb24pOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHNlcCArIHJlc3VsdF9wYXRoCisgICAgICAgIHJldHVybiByZXN1bHRfZHJpdmUgKyByZXN1bHRfcGF0aAorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnam9pbicsIHBhdGgsICpwYXRocykKKyAgICAgICAgcmFpc2UKIAogCiAjIFNwbGl0IGEgcGF0aCBpbiBhIGRyaXZlIHNwZWNpZmljYXRpb24gKGEgZHJpdmUgbGV0dGVyIGZvbGxvd2VkIGJ5IGEKQEAgLTE1NSwxMCArMTM2LDE2IEBACiAgICAgUGF0aHMgY2Fubm90IGNvbnRhaW4gYm90aCBhIGRyaXZlIGxldHRlciBhbmQgYSBVTkMgcGF0aC4KIAogICAgICIiIgotICAgIGVtcHR5ID0gX2dldF9lbXB0eShwKQotICAgIGlmIGxlbihwKSA+IDE6Ci0gICAgICAgIHNlcCA9IF9nZXRfc2VwKHApCi0gICAgICAgIG5vcm1wID0gcC5yZXBsYWNlKF9nZXRfYWx0c2VwKHApLCBzZXApCisgICAgaWYgbGVuKHApID49IDI6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgorICAgICAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgICAgIGFsdHNlcCA9IGInLycKKyAgICAgICAgICAgIGNvbG9uID0gYic6JworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VwID0gJ1xcJworICAgICAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgICAgICBjb2xvbiA9ICc6JworICAgICAgICBub3JtcCA9IHAucmVwbGFjZShhbHRzZXAsIHNlcCkKICAgICAgICAgaWYgKG5vcm1wWzA6Ml0gPT0gc2VwKjIpIGFuZCAobm9ybXBbMjozXSAhPSBzZXApOgogICAgICAgICAgICAgIyBpcyBhIFVOQyBwYXRoOgogICAgICAgICAgICAgIyB2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2diBkcml2ZSBsZXR0ZXIgb3IgVU5DIHBhdGgKQEAgLTE2NiwxOCArMTUzLDE4IEBACiAgICAgICAgICAgICAjICAgICAgICAgICBkaXJlY3RvcnkgXl5eXl5eXl5eXl5eXl5eCiAgICAgICAgICAgICBpbmRleCA9IG5vcm1wLmZpbmQoc2VwLCAyKQogICAgICAgICAgICAgaWYgaW5kZXggPT0gLTE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5LCBwCisgICAgICAgICAgICAgICAgcmV0dXJuIHBbOjBdLCBwCiAgICAgICAgICAgICBpbmRleDIgPSBub3JtcC5maW5kKHNlcCwgaW5kZXggKyAxKQogICAgICAgICAgICAgIyBhIFVOQyBwYXRoIGNhbid0IGhhdmUgdHdvIHNsYXNoZXMgaW4gYSByb3cKICAgICAgICAgICAgICMgKGFmdGVyIHRoZSBpbml0aWFsIHR3bykKICAgICAgICAgICAgIGlmIGluZGV4MiA9PSBpbmRleCArIDE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5LCBwCisgICAgICAgICAgICAgICAgcmV0dXJuIHBbOjBdLCBwCiAgICAgICAgICAgICBpZiBpbmRleDIgPT0gLTE6CiAgICAgICAgICAgICAgICAgaW5kZXgyID0gbGVuKHApCiAgICAgICAgICAgICByZXR1cm4gcFs6aW5kZXgyXSwgcFtpbmRleDI6XQotICAgICAgICBpZiBub3JtcFsxOjJdID09IF9nZXRfY29sb24ocCk6CisgICAgICAgIGlmIG5vcm1wWzE6Ml0gPT0gY29sb246CiAgICAgICAgICAgICByZXR1cm4gcFs6Ml0sIHBbMjpdCi0gICAgcmV0dXJuIGVtcHR5LCBwCisgICAgcmV0dXJuIHBbOjBdLCBwCiAKIAogIyBQYXJzZSBVTkMgcGF0aHMKQEAgLTIyMSwxMCArMjA4LDcgQEAKICAgICAgICAgaSAtPSAxCiAgICAgaGVhZCwgdGFpbCA9IHBbOmldLCBwW2k6XSAgIyBub3cgdGFpbCBoYXMgbm8gc2xhc2hlcwogICAgICMgcmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBoZWFkLCB1bmxlc3MgaXQncyBhbGwgc2xhc2hlcwotICAgIGhlYWQyID0gaGVhZAotICAgIHdoaWxlIGhlYWQyIGFuZCBoZWFkMlstMTpdIGluIHNlcHM6Ci0gICAgICAgIGhlYWQyID0gaGVhZDJbOi0xXQotICAgIGhlYWQgPSBoZWFkMiBvciBoZWFkCisgICAgaGVhZCA9IGhlYWQucnN0cmlwKHNlcHMpIG9yIGhlYWQKICAgICByZXR1cm4gZCArIGhlYWQsIHRhaWwKIAogCkBAIC0yMzQsOCArMjE4LDEwIEBACiAjIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgcm9vdCArIGV4dCA9PSBwLgogCiBkZWYgc3BsaXRleHQocCk6Ci0gICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCBfZ2V0X3NlcChwKSwgX2dldF9hbHRzZXAocCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2V0X2RvdChwKSkKKyAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKKyAgICAgICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCBiJ1xcJywgYicvJywgYicuJykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsICdcXCcsICcvJywgJy4nKQogc3BsaXRleHQuX19kb2NfXyA9IGdlbmVyaWNwYXRoLl9zcGxpdGV4dC5fX2RvY19fCiAKIApAQCAtMzQzLDcgKzMyOSw3IEBACiAgICAgICAgIHVzZXJob21lID0gam9pbihkcml2ZSwgb3MuZW52aXJvblsnSE9NRVBBVEgnXSkKIAogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICB1c2VyaG9tZSA9IHVzZXJob21lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgICAgIHVzZXJob21lID0gb3MuZnNlbmNvZGUodXNlcmhvbWUpCiAKICAgICBpZiBpICE9IDE6ICN+dXNlcgogICAgICAgICB1c2VyaG9tZSA9IGpvaW4oZGlybmFtZSh1c2VyaG9tZSksIHBhdGhbMTppXSkKQEAgLTM2OSwxMyArMzU1LDE0IEBACiAKICAgICBVbmtub3duIHZhcmlhYmxlcyBhcmUgbGVmdCB1bmNoYW5nZWQuIiIiCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIGlmIG9yZCgnJCcpIG5vdCBpbiBwYXRoIGFuZCBvcmQoJyUnKSBub3QgaW4gcGF0aDoKKyAgICAgICAgaWYgYickJyBub3QgaW4gcGF0aCBhbmQgYiclJyBub3QgaW4gcGF0aDoKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAgICAgICAgIGltcG9ydCBzdHJpbmcKICAgICAgICAgdmFyY2hhcnMgPSBieXRlcyhzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnXy0nLCAnYXNjaWknKQogICAgICAgICBxdW90ZSA9IGInXCcnCiAgICAgICAgIHBlcmNlbnQgPSBiJyUnCiAgICAgICAgIGJyYWNlID0gYid7JworICAgICAgICByYnJhY2UgPSBiJ30nCiAgICAgICAgIGRvbGxhciA9IGInJCcKICAgICAgICAgZW52aXJvbiA9IGdldGF0dHIob3MsICdlbnZpcm9uYicsIE5vbmUpCiAgICAgZWxzZToKQEAgLTM4Niw2ICszNzMsNyBAQAogICAgICAgICBxdW90ZSA9ICdcJycKICAgICAgICAgcGVyY2VudCA9ICclJwogICAgICAgICBicmFjZSA9ICd7JworICAgICAgICByYnJhY2UgPSAnfScKICAgICAgICAgZG9sbGFyID0gJyQnCiAgICAgICAgIGVudmlyb24gPSBvcy5lbnZpcm9uCiAgICAgcmVzID0gcGF0aFs6MF0KQEAgLTQzMiwxNSArNDIwLDkgQEAKICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFtpbmRleCsyOl0KICAgICAgICAgICAgICAgICBwYXRobGVuID0gbGVuKHBhdGgpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0aC5pbmRleChiJ30nKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRoLmluZGV4KCd9JykKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRoLmluZGV4KHJicmFjZSkKICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gYickeycgKyBwYXRoCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gJyR7JyArIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgcmVzICs9IGRvbGxhciArIGJyYWNlICsgcGF0aAogICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGhsZW4gLSAxCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgdmFyID0gcGF0aFs6aW5kZXhdCkBAIC00NTAsMTAgKzQzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZW52aXJvblt2YXJdCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYickeycgKyB2YXIgKyBiJ30nCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJyR7JyArIHZhciArICd9JworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBkb2xsYXIgKyBicmFjZSArIHZhciArIHJicmFjZQogICAgICAgICAgICAgICAgICAgICByZXMgKz0gdmFsdWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdmFyID0gcGF0aFs6MF0KQEAgLTQ4NSwxNiArNDY0LDI1IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKLSAgICBzZXAgPSBfZ2V0X3NlcChwYXRoKQotICAgIGRvdGRvdCA9IF9nZXRfZG90KHBhdGgpICogMgotICAgIHNwZWNpYWxfcHJlZml4ZXMgPSBfZ2V0X3NwZWNpYWwocGF0aCkKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgYWx0c2VwID0gYicvJworICAgICAgICBjdXJkaXIgPSBiJy4nCisgICAgICAgIHBhcmRpciA9IGInLi4nCisgICAgICAgIHNwZWNpYWxfcHJlZml4ZXMgPSAoYidcXFxcLlxcJywgYidcXFxcP1xcJykKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgIGFsdHNlcCA9ICcvJworICAgICAgICBjdXJkaXIgPSAnLicKKyAgICAgICAgcGFyZGlyID0gJy4uJworICAgICAgICBzcGVjaWFsX3ByZWZpeGVzID0gKCdcXFxcLlxcJywgJ1xcXFw/XFwnKQogICAgIGlmIHBhdGguc3RhcnRzd2l0aChzcGVjaWFsX3ByZWZpeGVzKToKICAgICAgICAgIyBpbiB0aGUgY2FzZSBvZiBwYXRocyB3aXRoIHRoZXNlIHByZWZpeGVzOgogICAgICAgICAjIFxcLlwgLT4gZGV2aWNlIG5hbWVzCiAgICAgICAgICMgXFw/XCAtPiBsaXRlcmFsIHBhdGhzCiAgICAgICAgICMgZG8gbm90IGRvIGFueSBub3JtYWxpemF0aW9uLCBidXQgcmV0dXJuIHRoZSBwYXRoIHVuY2hhbmdlZAogICAgICAgICByZXR1cm4gcGF0aAotICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoX2dldF9hbHRzZXAocGF0aCksIHNlcCkKKyAgICBwYXRoID0gcGF0aC5yZXBsYWNlKGFsdHNlcCwgc2VwKQogICAgIHByZWZpeCwgcGF0aCA9IHNwbGl0ZHJpdmUocGF0aCkKIAogICAgICMgY29sbGFwc2UgaW5pdGlhbCBiYWNrc2xhc2hlcwpAQCAtNTA1LDEzICs0OTMsMTMgQEAKICAgICBjb21wcyA9IHBhdGguc3BsaXQoc2VwKQogICAgIGkgPSAwCiAgICAgd2hpbGUgaSA8IGxlbihjb21wcyk6Ci0gICAgICAgIGlmIG5vdCBjb21wc1tpXSBvciBjb21wc1tpXSA9PSBfZ2V0X2RvdChwYXRoKToKKyAgICAgICAgaWYgbm90IGNvbXBzW2ldIG9yIGNvbXBzW2ldID09IGN1cmRpcjoKICAgICAgICAgICAgIGRlbCBjb21wc1tpXQotICAgICAgICBlbGlmIGNvbXBzW2ldID09IGRvdGRvdDoKLSAgICAgICAgICAgIGlmIGkgPiAwIGFuZCBjb21wc1tpLTFdICE9IGRvdGRvdDoKKyAgICAgICAgZWxpZiBjb21wc1tpXSA9PSBwYXJkaXI6CisgICAgICAgICAgICBpZiBpID4gMCBhbmQgY29tcHNbaS0xXSAhPSBwYXJkaXI6CiAgICAgICAgICAgICAgICAgZGVsIGNvbXBzW2ktMTppKzFdCiAgICAgICAgICAgICAgICAgaSAtPSAxCi0gICAgICAgICAgICBlbGlmIGkgPT0gMCBhbmQgcHJlZml4LmVuZHN3aXRoKF9nZXRfc2VwKHBhdGgpKToKKyAgICAgICAgICAgIGVsaWYgaSA9PSAwIGFuZCBwcmVmaXguZW5kc3dpdGgoc2VwKToKICAgICAgICAgICAgICAgICBkZWwgY29tcHNbaV0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaSArPSAxCkBAIC01MTksNyArNTA3LDcgQEAKICAgICAgICAgICAgIGkgKz0gMQogICAgICMgSWYgdGhlIHBhdGggaXMgbm93IGVtcHR5LCBzdWJzdGl0dXRlICcuJwogICAgIGlmIG5vdCBwcmVmaXggYW5kIG5vdCBjb21wczoKLSAgICAgICAgY29tcHMuYXBwZW5kKF9nZXRfZG90KHBhdGgpKQorICAgICAgICBjb21wcy5hcHBlbmQoY3VyZGlyKQogICAgIHJldHVybiBwcmVmaXggKyBzZXAuam9pbihjb21wcykKIAogCkBAIC01NTksNDIgKzU0NywxMDkgQEAKIHN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzID0gKGhhc2F0dHIoc3lzLCAiZ2V0d2luZG93c3ZlcnNpb24iKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpWzNdID49IDIpCiAKLWRlZiByZWxwYXRoKHBhdGgsIHN0YXJ0PWN1cmRpcik6CitkZWYgcmVscGF0aChwYXRoLCBzdGFydD1Ob25lKToKICAgICAiIiJSZXR1cm4gYSByZWxhdGl2ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CisgICAgICAgIHNlcCA9IGInXFwnCisgICAgICAgIGN1cmRpciA9IGInLicKKyAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgIGN1cmRpciA9ICcuJworICAgICAgICBwYXJkaXIgPSAnLi4nCiAKLSAgICBpZiBzdGFydCBpcyBjdXJkaXI6Ci0gICAgICAgIHN0YXJ0ID0gX2dldF9kb3QocGF0aCkKKyAgICBpZiBzdGFydCBpcyBOb25lOgorICAgICAgICBzdGFydCA9IGN1cmRpcgogCiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAotICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQotICAgIHBhdGhfYWJzID0gYWJzcGF0aChub3JtcGF0aChwYXRoKSkKLSAgICBzdGFydF9kcml2ZSwgc3RhcnRfcmVzdCA9IHNwbGl0ZHJpdmUoc3RhcnRfYWJzKQotICAgIHBhdGhfZHJpdmUsIHBhdGhfcmVzdCA9IHNwbGl0ZHJpdmUocGF0aF9hYnMpCi0gICAgaWYgbm9ybWNhc2Uoc3RhcnRfZHJpdmUpICE9IG5vcm1jYXNlKHBhdGhfZHJpdmUpOgotICAgICAgICBlcnJvciA9ICJwYXRoIGlzIG9uIG1vdW50ICd7MH0nLCBzdGFydCBvbiBtb3VudCAnezF9JyIuZm9ybWF0KAotICAgICAgICAgICAgcGF0aF9kcml2ZSwgc3RhcnRfZHJpdmUpCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJyb3IpCisgICAgdHJ5OgorICAgICAgICBzdGFydF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHN0YXJ0KSkKKyAgICAgICAgcGF0aF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHBhdGgpKQorICAgICAgICBzdGFydF9kcml2ZSwgc3RhcnRfcmVzdCA9IHNwbGl0ZHJpdmUoc3RhcnRfYWJzKQorICAgICAgICBwYXRoX2RyaXZlLCBwYXRoX3Jlc3QgPSBzcGxpdGRyaXZlKHBhdGhfYWJzKQorICAgICAgICBpZiBub3JtY2FzZShzdGFydF9kcml2ZSkgIT0gbm9ybWNhc2UocGF0aF9kcml2ZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwYXRoIGlzIG9uIG1vdW50ICVyLCBzdGFydCBvbiBtb3VudCAlciIgJSAoCisgICAgICAgICAgICAgICAgcGF0aF9kcml2ZSwgc3RhcnRfZHJpdmUpKQogCi0gICAgc3RhcnRfbGlzdCA9IFt4IGZvciB4IGluIHN0YXJ0X3Jlc3Quc3BsaXQoc2VwKSBpZiB4XQotICAgIHBhdGhfbGlzdCA9IFt4IGZvciB4IGluIHBhdGhfcmVzdC5zcGxpdChzZXApIGlmIHhdCi0gICAgIyBXb3JrIG91dCBob3cgbXVjaCBvZiB0aGUgZmlsZXBhdGggaXMgc2hhcmVkIGJ5IHN0YXJ0IGFuZCBwYXRoLgotICAgIGkgPSAwCi0gICAgZm9yIGUxLCBlMiBpbiB6aXAoc3RhcnRfbGlzdCwgcGF0aF9saXN0KToKLSAgICAgICAgaWYgbm9ybWNhc2UoZTEpICE9IG5vcm1jYXNlKGUyKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGkgKz0gMQorICAgICAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gc3RhcnRfcmVzdC5zcGxpdChzZXApIGlmIHhdCisgICAgICAgIHBhdGhfbGlzdCA9IFt4IGZvciB4IGluIHBhdGhfcmVzdC5zcGxpdChzZXApIGlmIHhdCisgICAgICAgICMgV29yayBvdXQgaG93IG11Y2ggb2YgdGhlIGZpbGVwYXRoIGlzIHNoYXJlZCBieSBzdGFydCBhbmQgcGF0aC4KKyAgICAgICAgaSA9IDAKKyAgICAgICAgZm9yIGUxLCBlMiBpbiB6aXAoc3RhcnRfbGlzdCwgcGF0aF9saXN0KToKKyAgICAgICAgICAgIGlmIG5vcm1jYXNlKGUxKSAhPSBub3JtY2FzZShlMik6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGkgKz0gMQogCi0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHBhcmRpciA9IGInLi4nCisgICAgICAgIHJlbF9saXN0ID0gW3BhcmRpcl0gKiAobGVuKHN0YXJ0X2xpc3QpLWkpICsgcGF0aF9saXN0W2k6XQorICAgICAgICBpZiBub3QgcmVsX2xpc3Q6CisgICAgICAgICAgICByZXR1cm4gY3VyZGlyCisgICAgICAgIHJldHVybiBqb2luKCpyZWxfbGlzdCkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEJ5dGVzV2FybmluZywgRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygncmVscGF0aCcsIHBhdGgsIHN0YXJ0KQorICAgICAgICByYWlzZQorCisKKyMgUmV0dXJuIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgcGF0aHMgZ2l2ZW4gYXMgaW5wdXQuCisjIFRoZSBmdW5jdGlvbiBpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZCAnc2VwYXJhdG9yLWluc2Vuc2l0aXZlJywgaS5lLiBpZiB0aGUKKyMgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIHBhdGhzIGlzIHRoZSB1c2Ugb2YgJ1wnIHZlcnN1cyAnLycgYXMgc2VwYXJhdG9yLAorIyB0aGV5IGFyZSBkZWVtZWQgdG8gYmUgZXF1YWwuCisjCisjIEhvd2V2ZXIsIHRoZSByZXR1cm5lZCBwYXRoIHdpbGwgaGF2ZSB0aGUgc3RhbmRhcmQgJ1wnIHNlcGFyYXRvciAoZXZlbiBpZiB0aGUKKyMgZ2l2ZW4gcGF0aHMgaGFkIHRoZSBhbHRlcm5hdGl2ZSAnLycgc2VwYXJhdG9yKSBhbmQgd2lsbCBoYXZlIHRoZSBjYXNlIG9mIHRoZQorIyBmaXJzdCBwYXRoIGdpdmVuIGluIHRoZSBzZXF1ZW5jZS4gQWRkaXRpb25hbGx5LCBhbnkgdHJhaWxpbmcgc2VwYXJhdG9yIGlzCisjIHN0cmlwcGVkIGZyb20gdGhlIHJldHVybmVkIHBhdGguCisKK2RlZiBjb21tb25wYXRoKHBhdGhzKToKKyAgICAiIiJHaXZlbiBhIHNlcXVlbmNlIG9mIHBhdGggbmFtZXMsIHJldHVybnMgdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoLiIiIgorCisgICAgaWYgbm90IHBhdGhzOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb21tb25wYXRoKCkgYXJnIGlzIGFuIGVtcHR5IHNlcXVlbmNlJykKKworICAgIGlmIGlzaW5zdGFuY2UocGF0aHNbMF0sIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgYWx0c2VwID0gYicvJworICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICAgZWxzZToKLSAgICAgICAgcGFyZGlyID0gJy4uJwotICAgIHJlbF9saXN0ID0gW3BhcmRpcl0gKiAobGVuKHN0YXJ0X2xpc3QpLWkpICsgcGF0aF9saXN0W2k6XQotICAgIGlmIG5vdCByZWxfbGlzdDoKLSAgICAgICAgcmV0dXJuIF9nZXRfZG90KHBhdGgpCi0gICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgIGFsdHNlcCA9ICcvJworICAgICAgICBjdXJkaXIgPSAnLicKKworICAgIHRyeToKKyAgICAgICAgZHJpdmVzcGxpdHMgPSBbc3BsaXRkcml2ZShwLnJlcGxhY2UoYWx0c2VwLCBzZXApLmxvd2VyKCkpIGZvciBwIGluIHBhdGhzXQorICAgICAgICBzcGxpdF9wYXRocyA9IFtwLnNwbGl0KHNlcCkgZm9yIGQsIHAgaW4gZHJpdmVzcGxpdHNdCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaXNhYnMsID0gc2V0KHBbOjFdID09IHNlcCBmb3IgZCwgcCBpbiBkcml2ZXNwbGl0cykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBtaXggYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHBhdGhzIikgZnJvbSBOb25lCisKKyAgICAgICAgIyBDaGVjayB0aGF0IGFsbCBkcml2ZSBsZXR0ZXJzIG9yIFVOQyBwYXRocyBtYXRjaC4gVGhlIGNoZWNrIGlzIG1hZGUgb25seQorICAgICAgICAjIG5vdyBvdGhlcndpc2UgdHlwZSBlcnJvcnMgZm9yIG1peGluZyBzdHJpbmdzIGFuZCBieXRlcyB3b3VsZCBub3QgYmUKKyAgICAgICAgIyBjYXVnaHQuCisgICAgICAgIGlmIGxlbihzZXQoZCBmb3IgZCwgcCBpbiBkcml2ZXNwbGl0cykpICE9IDE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQYXRocyBkb24ndCBoYXZlIHRoZSBzYW1lIGRyaXZlIikKKworICAgICAgICBkcml2ZSwgcGF0aCA9IHNwbGl0ZHJpdmUocGF0aHNbMF0ucmVwbGFjZShhbHRzZXAsIHNlcCkpCisgICAgICAgIGNvbW1vbiA9IHBhdGguc3BsaXQoc2VwKQorICAgICAgICBjb21tb24gPSBbYyBmb3IgYyBpbiBjb21tb24gaWYgYyBhbmQgYyAhPSBjdXJkaXJdCisKKyAgICAgICAgc3BsaXRfcGF0aHMgPSBbW2MgZm9yIGMgaW4gcyBpZiBjIGFuZCBjICE9IGN1cmRpcl0gZm9yIHMgaW4gc3BsaXRfcGF0aHNdCisgICAgICAgIHMxID0gbWluKHNwbGl0X3BhdGhzKQorICAgICAgICBzMiA9IG1heChzcGxpdF9wYXRocykKKyAgICAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKKyAgICAgICAgICAgIGlmIGMgIT0gczJbaV06CisgICAgICAgICAgICAgICAgY29tbW9uID0gY29tbW9uWzppXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tb24gPSBjb21tb25bOmxlbihzMSldCisKKyAgICAgICAgcHJlZml4ID0gZHJpdmUgKyBzZXAgaWYgaXNhYnMgZWxzZSBkcml2ZQorICAgICAgICByZXR1cm4gcHJlZml4ICsgc2VwLmpvaW4oY29tbW9uKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2NvbW1vbnBhdGgnLCAqcGF0aHMpCisgICAgICAgIHJhaXNlCiAKIAogIyBkZXRlcm1pbmUgaWYgdHdvIGZpbGVzIGFyZSBpbiBmYWN0IHRoZSBzYW1lIGZpbGUKZGlmZiAtLWdpdCBhL0xpYi9vcGNvZGUucHkgYi9MaWIvb3Bjb2RlLnB5CmluZGV4IDBiZDFlZTYuLjRjODI2YTcgMTAwNjQ0Ci0tLSBhL0xpYi9vcGNvZGUucHkKKysrIGIvTGliL29wY29kZS5weQpAQCAtNzAsNiArNzAsOSBAQAogCiBkZWZfb3AoJ1VOQVJZX0lOVkVSVCcsIDE1KQogCitkZWZfb3AoJ0JJTkFSWV9NQVRSSVhfTVVMVElQTFknLCAxNikKK2RlZl9vcCgnSU5QTEFDRV9NQVRSSVhfTVVMVElQTFknLCAxNykKKwogZGVmX29wKCdCSU5BUllfUE9XRVInLCAxOSkKIGRlZl9vcCgnQklOQVJZX01VTFRJUExZJywgMjApCiAKQEAgLTgyLDcgKzg1LDEwIEBACiBkZWZfb3AoJ0lOUExBQ0VfRkxPT1JfRElWSURFJywgMjgpCiBkZWZfb3AoJ0lOUExBQ0VfVFJVRV9ESVZJREUnLCAyOSkKIAotZGVmX29wKCdTVE9SRV9NQVAnLCA1NCkKK2RlZl9vcCgnR0VUX0FJVEVSJywgNTApCitkZWZfb3AoJ0dFVF9BTkVYVCcsIDUxKQorZGVmX29wKCdCRUZPUkVfQVNZTkNfV0lUSCcsIDUyKQorCiBkZWZfb3AoJ0lOUExBQ0VfQUREJywgNTUpCiBkZWZfb3AoJ0lOUExBQ0VfU1VCVFJBQ1QnLCA1NikKIGRlZl9vcCgnSU5QTEFDRV9NVUxUSVBMWScsIDU3KQpAQCAtOTcsMTAgKzEwMywxMiBAQAogZGVmX29wKCdCSU5BUllfT1InLCA2NikKIGRlZl9vcCgnSU5QTEFDRV9QT1dFUicsIDY3KQogZGVmX29wKCdHRVRfSVRFUicsIDY4KQorZGVmX29wKCdHRVRfWUlFTERfRlJPTV9JVEVSJywgNjkpCiAKIGRlZl9vcCgnUFJJTlRfRVhQUicsIDcwKQogZGVmX29wKCdMT0FEX0JVSUxEX0NMQVNTJywgNzEpCiBkZWZfb3AoJ1lJRUxEX0ZST00nLCA3MikKK2RlZl9vcCgnR0VUX0FXQUlUQUJMRScsIDczKQogCiBkZWZfb3AoJ0lOUExBQ0VfTFNISUZUJywgNzUpCiBkZWZfb3AoJ0lOUExBQ0VfUlNISUZUJywgNzYpCkBAIC0xMDgsNyArMTE2LDggQEAKIGRlZl9vcCgnSU5QTEFDRV9YT1InLCA3OCkKIGRlZl9vcCgnSU5QTEFDRV9PUicsIDc5KQogZGVmX29wKCdCUkVBS19MT09QJywgODApCi1kZWZfb3AoJ1dJVEhfQ0xFQU5VUCcsIDgxKQorZGVmX29wKCdXSVRIX0NMRUFOVVBfU1RBUlQnLCA4MSkKK2RlZl9vcCgnV0lUSF9DTEVBTlVQX0ZJTklTSCcsIDgyKQogCiBkZWZfb3AoJ1JFVFVSTl9WQUxVRScsIDgzKQogZGVmX29wKCdJTVBPUlRfU1RBUicsIDg0KQpAQCAtMTk0LDcgKzIwMywxNSBAQAogZGVmX29wKCdMT0FEX0NMQVNTREVSRUYnLCAxNDgpCiBoYXNmcmVlLmFwcGVuZCgxNDgpCiAKK2pyZWxfb3AoJ1NFVFVQX0FTWU5DX1dJVEgnLCAxNTQpCisKIGRlZl9vcCgnRVhURU5ERURfQVJHJywgMTQ0KQogRVhURU5ERURfQVJHID0gMTQ0CiAKK2RlZl9vcCgnQlVJTERfTElTVF9VTlBBQ0snLCAxNDkpCitkZWZfb3AoJ0JVSUxEX01BUF9VTlBBQ0snLCAxNTApCitkZWZfb3AoJ0JVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMJywgMTUxKQorZGVmX29wKCdCVUlMRF9UVVBMRV9VTlBBQ0snLCAxNTIpCitkZWZfb3AoJ0JVSUxEX1NFVF9VTlBBQ0snLCAxNTMpCisKIGRlbCBkZWZfb3AsIG5hbWVfb3AsIGpyZWxfb3AsIGphYnNfb3AKZGlmZiAtLWdpdCBhL0xpYi9vcGVyYXRvci5weSBiL0xpYi9vcGVyYXRvci5weQppbmRleCBiNjAzNDlmLi4wZTJlNTNlIDEwMDY0NAotLS0gYS9MaWIvb3BlcmF0b3IucHkKKysrIGIvTGliL29wZXJhdG9yLnB5CkBAIC0xMiwxMiArMTIsMTIgQEAKIAogX19hbGxfXyA9IFsnYWJzJywgJ2FkZCcsICdhbmRfJywgJ2F0dHJnZXR0ZXInLCAnY29uY2F0JywgJ2NvbnRhaW5zJywgJ2NvdW50T2YnLAogICAgICAgICAgICAnZGVsaXRlbScsICdlcScsICdmbG9vcmRpdicsICdnZScsICdnZXRpdGVtJywgJ2d0JywgJ2lhZGQnLCAnaWFuZCcsCi0gICAgICAgICAgICdpY29uY2F0JywgJ2lmbG9vcmRpdicsICdpbHNoaWZ0JywgJ2ltb2QnLCAnaW11bCcsICdpbmRleCcsCi0gICAgICAgICAgICdpbmRleE9mJywgJ2ludicsICdpbnZlcnQnLCAnaW9yJywgJ2lwb3cnLCAnaXJzaGlmdCcsICdpc18nLAotICAgICAgICAgICAnaXNfbm90JywgJ2lzdWInLCAnaXRlbWdldHRlcicsICdpdHJ1ZWRpdicsICdpeG9yJywgJ2xlJywKLSAgICAgICAgICAgJ2xlbmd0aF9oaW50JywgJ2xzaGlmdCcsICdsdCcsICdtZXRob2RjYWxsZXInLCAnbW9kJywgJ211bCcsICduZScsCi0gICAgICAgICAgICduZWcnLCAnbm90XycsICdvcl8nLCAncG9zJywgJ3BvdycsICdyc2hpZnQnLCAnc2V0aXRlbScsICdzdWInLAotICAgICAgICAgICAndHJ1ZWRpdicsICd0cnV0aCcsICd4b3InXQorICAgICAgICAgICAnaWNvbmNhdCcsICdpZmxvb3JkaXYnLCAnaWxzaGlmdCcsICdpbWF0bXVsJywgJ2ltb2QnLCAnaW11bCcsCisgICAgICAgICAgICdpbmRleCcsICdpbmRleE9mJywgJ2ludicsICdpbnZlcnQnLCAnaW9yJywgJ2lwb3cnLCAnaXJzaGlmdCcsCisgICAgICAgICAgICdpc18nLCAnaXNfbm90JywgJ2lzdWInLCAnaXRlbWdldHRlcicsICdpdHJ1ZWRpdicsICdpeG9yJywgJ2xlJywKKyAgICAgICAgICAgJ2xlbmd0aF9oaW50JywgJ2xzaGlmdCcsICdsdCcsICdtYXRtdWwnLCAnbWV0aG9kY2FsbGVyJywgJ21vZCcsCisgICAgICAgICAgICdtdWwnLCAnbmUnLCAnbmVnJywgJ25vdF8nLCAnb3JfJywgJ3BvcycsICdwb3cnLCAncnNoaWZ0JywKKyAgICAgICAgICAgJ3NldGl0ZW0nLCAnc3ViJywgJ3RydWVkaXYnLCAndHJ1dGgnLCAneG9yJ10KIAogZnJvbSBidWlsdGlucyBpbXBvcnQgYWJzIGFzIF9hYnMKIApAQCAtMTA1LDYgKzEwNSwxMCBAQAogICAgICJTYW1lIGFzIGEgKiBiLiIKICAgICByZXR1cm4gYSAqIGIKIAorZGVmIG1hdG11bChhLCBiKToKKyAgICAiU2FtZSBhcyBhIEAgYi4iCisgICAgcmV0dXJuIGEgQCBiCisKIGRlZiBuZWcoYSk6CiAgICAgIlNhbWUgYXMgLWEuIgogICAgIHJldHVybiAtYQpAQCAtMjI3LDEwICsyMzEsMTMgQEAKICAgICBBZnRlciBoID0gYXR0cmdldHRlcignbmFtZS5maXJzdCcsICduYW1lLmxhc3QnKSwgdGhlIGNhbGwgaChyKSByZXR1cm5zCiAgICAgKHIubmFtZS5maXJzdCwgci5uYW1lLmxhc3QpLgogICAgICIiIgorICAgIF9fc2xvdHNfXyA9ICgnX2F0dHJzJywgJ19jYWxsJykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRyLCAqYXR0cnMpOgogICAgICAgICBpZiBub3QgYXR0cnM6CiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyLCBzdHIpOgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYXR0cmlidXRlIG5hbWUgbXVzdCBiZSBhIHN0cmluZycpCisgICAgICAgICAgICBzZWxmLl9hdHRycyA9IChhdHRyLCkKICAgICAgICAgICAgIG5hbWVzID0gYXR0ci5zcGxpdCgnLicpCiAgICAgICAgICAgICBkZWYgZnVuYyhvYmopOgogICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgpAQCAtMjM4LDcgKzI0NSw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG9iagogICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdldHRlcnMgPSB0dXBsZShtYXAoYXR0cmdldHRlciwgKGF0dHIsKSArIGF0dHJzKSkKKyAgICAgICAgICAgIHNlbGYuX2F0dHJzID0gKGF0dHIsKSArIGF0dHJzCisgICAgICAgICAgICBnZXR0ZXJzID0gdHVwbGUobWFwKGF0dHJnZXR0ZXIsIHNlbGYuX2F0dHJzKSkKICAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKGdldHRlcihvYmopIGZvciBnZXR0ZXIgaW4gZ2V0dGVycykKICAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCkBAIC0yNDYsMTkgKzI1NCwzMCBAQAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbChvYmopCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMuJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKG1hcChyZXByLCBzZWxmLl9hdHRycykpKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgc2VsZi5fYXR0cnMKKwogY2xhc3MgaXRlbWdldHRlcjoKICAgICAiIiIKICAgICBSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBmZXRjaGVzIHRoZSBnaXZlbiBpdGVtKHMpIGZyb20gaXRzIG9wZXJhbmQuCiAgICAgQWZ0ZXIgZiA9IGl0ZW1nZXR0ZXIoMiksIHRoZSBjYWxsIGYocikgcmV0dXJucyByWzJdLgogICAgIEFmdGVyIGcgPSBpdGVtZ2V0dGVyKDIsIDUsIDMpLCB0aGUgY2FsbCBnKHIpIHJldHVybnMgKHJbMl0sIHJbNV0sIHJbM10pCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCdfaXRlbXMnLCAnX2NhbGwnKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW0sICppdGVtcyk6CiAgICAgICAgIGlmIG5vdCBpdGVtczoKKyAgICAgICAgICAgIHNlbGYuX2l0ZW1zID0gKGl0ZW0sKQogICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgICByZXR1cm4gb2JqW2l0ZW1dCiAgICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaXRlbXMgPSAoaXRlbSwpICsgaXRlbXMKKyAgICAgICAgICAgIHNlbGYuX2l0ZW1zID0gaXRlbXMgPSAoaXRlbSwpICsgaXRlbXMKICAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG9ialtpXSBmb3IgaSBpbiBpdGVtcykKICAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCkBAIC0yNjYsNiArMjg1LDE0IEBACiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iaik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKG9iaikKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy4lcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihtYXAocmVwciwgc2VsZi5faXRlbXMpKSkKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIHNlbGYuX2l0ZW1zCisKIGNsYXNzIG1ldGhvZGNhbGxlcjoKICAgICAiIiIKICAgICBSZXR1cm4gYSBjYWxsYWJsZSBvYmplY3QgdGhhdCBjYWxscyB0aGUgZ2l2ZW4gbWV0aG9kIG9uIGl0cyBvcGVyYW5kLgpAQCAtMjczLDYgKzMwMCw3IEBACiAgICAgQWZ0ZXIgZyA9IG1ldGhvZGNhbGxlcignbmFtZScsICdkYXRlJywgZm9vPTEpLCB0aGUgY2FsbCBnKHIpIHJldHVybnMKICAgICByLm5hbWUoJ2RhdGUnLCBmb289MSkuCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfYXJncycsICdfa3dhcmdzJykKIAogICAgIGRlZiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBpZiBsZW4oYXJncykgPCAyOgpAQCAtMjgwLDEyICszMDgsMzAgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgIHNlbGYgPSBhcmdzWzBdCiAgICAgICAgIHNlbGYuX25hbWUgPSBhcmdzWzFdCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuX25hbWUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ21ldGhvZCBuYW1lIG11c3QgYmUgYSBzdHJpbmcnKQogICAgICAgICBzZWxmLl9hcmdzID0gYXJnc1syOl0KICAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKICAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCBzZWxmLl9uYW1lKSgqc2VsZi5fYXJncywgKipzZWxmLl9rd2FyZ3MpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbcmVwcihzZWxmLl9uYW1lKV0KKyAgICAgICAgYXJncy5leHRlbmQobWFwKHJlcHIsIHNlbGYuX2FyZ3MpKQorICAgICAgICBhcmdzLmV4dGVuZCgnJXM9JXInICUgKGssIHYpIGZvciBrLCB2IGluIHNlbGYuX2t3YXJncy5pdGVtcygpKQorICAgICAgICByZXR1cm4gJyVzLiVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKGFyZ3MpKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl9rd2FyZ3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLl9uYW1lLCkgKyBzZWxmLl9hcmdzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorICAgICAgICAgICAgcmV0dXJuIHBhcnRpYWwoc2VsZi5fX2NsYXNzX18sIHNlbGYuX25hbWUsICoqc2VsZi5fa3dhcmdzKSwgc2VsZi5fYXJncworCisKICMgSW4tcGxhY2UgT3BlcmF0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiojCiAKIGRlZiBpYWRkKGEsIGIpOgpAQCAtMzI2LDYgKzM3MiwxMSBAQAogICAgIGEgKj0gYgogICAgIHJldHVybiBhCiAKK2RlZiBpbWF0bXVsKGEsIGIpOgorICAgICJTYW1lIGFzIGEgQD0gYi4iCisgICAgYSBAPSBiCisgICAgcmV0dXJuIGEKKwogZGVmIGlvcihhLCBiKToKICAgICAiU2FtZSBhcyBhIHw9IGIuIgogICAgIGEgfD0gYgpAQCAtMzgzLDYgKzQzNCw3IEBACiBfX2xzaGlmdF9fID0gbHNoaWZ0CiBfX21vZF9fID0gbW9kCiBfX211bF9fID0gbXVsCitfX21hdG11bF9fID0gbWF0bXVsCiBfX25lZ19fID0gbmVnCiBfX29yX18gPSBvcl8KIF9fcG9zX18gPSBwb3MKQEAgLTQwMyw2ICs0NTUsNyBAQAogX19pbHNoaWZ0X18gPSBpbHNoaWZ0CiBfX2ltb2RfXyA9IGltb2QKIF9faW11bF9fID0gaW11bAorX19pbWF0bXVsX18gPSBpbWF0bXVsCiBfX2lvcl9fID0gaW9yCiBfX2lwb3dfXyA9IGlwb3cKIF9faXJzaGlmdF9fID0gaXJzaGlmdApkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IGE4ZjZhMGIuLjNkMmM2ZDMgMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTYxLDYgKzYxLDEwIEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAKKyAgICBpbXBvcnQgcG9zaXgKKyAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChwb3NpeCkpCisgICAgZGVsIHBvc2l4CisKIGVsaWYgJ250JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdudCcKICAgICBsaW5lc2VwID0gJ1xyXG4nCkBAIC0zMTksNyArMzIzLDcgQEAKICAgICB0aGUgdmFsdWUgb2YgdG9wZG93biwgdGhlIGxpc3Qgb2Ygc3ViZGlyZWN0b3JpZXMgaXMgcmV0cmlldmVkIGJlZm9yZSB0aGUKICAgICB0dXBsZXMgZm9yIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyBzdWJkaXJlY3RvcmllcyBhcmUgZ2VuZXJhdGVkLgogCi0gICAgQnkgZGVmYXVsdCBlcnJvcnMgZnJvbSB0aGUgb3MubGlzdGRpcigpIGNhbGwgYXJlIGlnbm9yZWQuICBJZgorICAgIEJ5IGRlZmF1bHQgZXJyb3JzIGZyb20gdGhlIG9zLnNjYW5kaXIoKSBjYWxsIGFyZSBpZ25vcmVkLiAgSWYKICAgICBvcHRpb25hbCBhcmcgJ29uZXJyb3InIGlzIHNwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgZnVuY3Rpb247IGl0CiAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCBvbmUgYXJndW1lbnQsIGFuIE9TRXJyb3IgaW5zdGFuY2UuICBJdCBjYW4KICAgICByZXBvcnQgdGhlIGVycm9yIHRvIGNvbnRpbnVlIHdpdGggdGhlIHdhbGssIG9yIHJhaXNlIHRoZSBleGNlcHRpb24KQEAgLTM0OCw3ICszNTIsOCBAQAogCiAgICAgIiIiCiAKLSAgICBpc2xpbmssIGpvaW4sIGlzZGlyID0gcGF0aC5pc2xpbmssIHBhdGguam9pbiwgcGF0aC5pc2RpcgorICAgIGRpcnMgPSBbXQorICAgIG5vbmRpcnMgPSBbXQogCiAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBwZXJtaXNzaW9uIGZvciB0b3AsIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3QKICAgICAjIGdldCBhIGxpc3Qgb2YgdGhlIGZpbGVzIHRoZSBkaXJlY3RvcnkgY29udGFpbnMuICBvcy53YWxrCkBAIC0zNTYsMjggKzM2MSw3MSBAQAogICAgICMgbWlub3IgcmVhc29uIHdoZW4gKHNheSkgYSB0aG91c2FuZCByZWFkYWJsZSBkaXJlY3RvcmllcyBhcmUgc3RpbGwKICAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgIHRyeToKLSAgICAgICAgIyBOb3RlIHRoYXQgbGlzdGRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCisgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQogICAgICAgICAjIHRvIGVhcmxpZXIgaW1wb3J0LSouCi0gICAgICAgIG5hbWVzID0gbGlzdGRpcih0b3ApCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBvbmVycm9yKGVycikKKyAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCiAgICAgICAgIHJldHVybgogCi0gICAgZGlycywgbm9uZGlycyA9IFtdLCBbXQotICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBpZiBpc2Rpcihqb2luKHRvcCwgbmFtZSkpOgotICAgICAgICAgICAgZGlycy5hcHBlbmQobmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGVudHJ5ID0gbmV4dChzY2FuZGlyX2l0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICB0cnk6CisgICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAorICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCisgICAgICAgICAgICBpc19kaXIgPSBGYWxzZQorCisgICAgICAgIGlmIGlzX2RpcjoKKyAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorCisgICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6CisgICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCisgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCisgICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKKyAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IGVudHJ5LmlzX3N5bWxpbmsoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBlbnRyeSBpcyBub3QgYSBzeW1ib2xpYyBsaW5rLCBzYW1lIGJlaGF2aW91ciB0aGFuCisgICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KKyAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCisgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gbm90IGlzX3N5bWxpbmsKKworICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhlbnRyeS5wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKKworICAgICMgWWllbGQgYmVmb3JlIHJlY3Vyc2lvbiBpZiBnb2luZyB0b3AgZG93bgogICAgIGlmIHRvcGRvd246CiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwotICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgIG5ld19wYXRoID0gam9pbih0b3AsIG5hbWUpCi0gICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgotICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKLSAgICBpZiBub3QgdG9wZG93bjoKKworICAgICAgICAjIFJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3JpZXMKKyAgICAgICAgaXNsaW5rLCBqb2luID0gcGF0aC5pc2xpbmssIHBhdGguam9pbgorICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgbmV3X3BhdGggPSBqb2luKHRvcCwgbmFtZSkKKyAgICAgICAgICAgICMgSXNzdWUgIzIzNjA1OiBvcy5wYXRoLmlzbGluaygpIGlzIHVzZWQgaW5zdGVhZCBvZiBjYWNoaW5nCisgICAgICAgICAgICAjIGVudHJ5LmlzX3N5bWxpbmsoKSByZXN1bHQgZHVyaW5nIHRoZSBsb29wIG9uIG9zLnNjYW5kaXIoKSBiZWNhdXNlCisgICAgICAgICAgICAjIHRoZSBjYWxsZXIgY2FuIHJlcGxhY2UgdGhlIGRpcmVjdG9yeSBlbnRyeSBkdXJpbmcgdGhlICJ5aWVsZCIKKyAgICAgICAgICAgICMgYWJvdmUuCisgICAgICAgICAgICBpZiBmb2xsb3dsaW5rcyBvciBub3QgaXNsaW5rKG5ld19wYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQorICAgIGVsc2U6CisgICAgICAgICMgWWllbGQgYWZ0ZXIgcmVjdXJzaW9uIGlmIGdvaW5nIGJvdHRvbSB1cAogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAogX19hbGxfXy5hcHBlbmQoIndhbGsiKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCA5MThhYzhkLi4wMWU2NmEwIDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMjI1LDYgKzIyNSwzNiBAQAogICAgICAgICAgICAgIyBJdCdzIGEgcGF0aCBvbiBhIG5ldHdvcmsgZHJpdmUgPT4gJ2ZpbGU6Ly9ob3N0L3NoYXJlL2EvYicKICAgICAgICAgICAgIHJldHVybiAnZmlsZTonICsgdXJscXVvdGVfZnJvbV9ieXRlcyhwYXRoLmFzX3Bvc2l4KCkuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgZGVmIGdldGhvbWVkaXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIHVzZXJob21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgIGVsaWYgJ1VTRVJQUk9GSUxFJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdXNlcmhvbWUgPSBvcy5lbnZpcm9uWydVU0VSUFJPRklMRSddCisgICAgICAgIGVsaWYgJ0hPTUVQQVRIJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRydiA9IG9zLmVudmlyb25bJ0hPTUVEUklWRSddCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgZHJ2ID0gJycKKyAgICAgICAgICAgIHVzZXJob21lID0gZHJ2ICsgb3MuZW52aXJvblsnSE9NRVBBVEgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBkZXRlcm1pbmUgaG9tZSBkaXJlY3RvcnkiKQorCisgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgIyBUcnkgdG8gZ3Vlc3MgdXNlciBob21lIGRpcmVjdG9yeS4gIEJ5IGRlZmF1bHQgYWxsIHVzZXJzCisgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGFyZSBsb2NhdGVkIGluIHRoZSBzYW1lIHBsYWNlIGFuZCBhcmUgbmFtZWQgYnkKKyAgICAgICAgICAgICMgY29ycmVzcG9uZGluZyB1c2VybmFtZXMuICBJZiBjdXJyZW50IHVzZXIgaG9tZSBkaXJlY3RvcnkgcG9pbnRzCisgICAgICAgICAgICAjIHRvIG5vbnN0YW5kYXJkIHBsYWNlLCB0aGlzIGd1ZXNzIGlzIGxpa2VseSB3cm9uZy4KKyAgICAgICAgICAgIGlmIG9zLmVudmlyb25bJ1VTRVJOQU1FJ10gIT0gdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgZHJ2LCByb290LCBwYXJ0cyA9IHNlbGYucGFyc2VfcGFydHMoKHVzZXJob21lLCkpCisgICAgICAgICAgICAgICAgaWYgcGFydHNbLTFdICE9IG9zLmVudmlyb25bJ1VTRVJOQU1FJ106CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisgICAgICAgICAgICAgICAgcGFydHNbLTFdID0gdXNlcm5hbWUKKyAgICAgICAgICAgICAgICBpZiBkcnYgb3Igcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgdXNlcmhvbWUgPSBkcnYgKyByb290ICsgc2VsZi5qb2luKHBhcnRzWzE6XSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1c2VyaG9tZSA9IHNlbGYuam9pbihwYXJ0cykKKyAgICAgICAgcmV0dXJuIHVzZXJob21lCiAKIGNsYXNzIF9Qb3NpeEZsYXZvdXIoX0ZsYXZvdXIpOgogICAgIHNlcCA9ICcvJwpAQCAtMzA4LDYgKzMzOCwyMSBAQAogICAgICAgICBicGF0aCA9IGJ5dGVzKHBhdGgpCiAgICAgICAgIHJldHVybiAnZmlsZTovLycgKyB1cmxxdW90ZV9mcm9tX2J5dGVzKGJwYXRoKQogCisgICAgZGVmIGdldGhvbWVkaXIoc2VsZiwgdXNlcm5hbWUpOgorICAgICAgICBpZiBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKS5wd19kaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGltcG9ydCBwd2QKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHdkLmdldHB3bmFtKHVzZXJuYW1lKS5wd19kaXIKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IGRldGVybWluZSBob21lIGRpcmVjdG9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgJXIiICUgdXNlcm5hbWUpCisKIAogX3dpbmRvd3NfZmxhdm91ciA9IF9XaW5kb3dzRmxhdm91cigpCiBfcG9zaXhfZmxhdm91ciA9IF9Qb3NpeEZsYXZvdXIoKQpAQCAtOTY0LDYgKzEwMDksMjQgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBjbHMob3MuZ2V0Y3dkKCkpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgaG9tZShjbHMpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgcGF0aCBwb2ludGluZyB0byB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IChhcworICAgICAgICByZXR1cm5lZCBieSBvcy5wYXRoLmV4cGFuZHVzZXIoJ34nKSkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gY2xzKGNscygpLl9mbGF2b3VyLmdldGhvbWVkaXIoTm9uZSkpCisKKyAgICBkZWYgc2FtZWZpbGUoc2VsZiwgb3RoZXJfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIGBvdGhlcl9maWxlYCBpcyB0aGUgc2FtZSBvciBub3QgYXMgdGhpcyBmaWxlLgorICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MucGF0aC5zYW1lZmlsZShmaWxlLCBvdGhlcl9maWxlKSkuCisgICAgICAgICIiIgorICAgICAgICBzdCA9IHNlbGYuc3RhdCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG90aGVyX3N0ID0gb3RoZXJfcGF0aC5zdGF0KCkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgb3RoZXJfc3QgPSBvcy5zdGF0KG90aGVyX3BhdGgpCisgICAgICAgIHJldHVybiBvcy5wYXRoLnNhbWVzdGF0KHN0LCBvdGhlcl9zdCkKKwogICAgIGRlZiBpdGVyZGlyKHNlbGYpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgdGhlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LiAgRG9lcyBub3QgeWllbGQgYW55CiAgICAgICAgIHJlc3VsdCBmb3IgdGhlIHNwZWNpYWwgcGF0aHMgJy4nIGFuZCAnLi4nLgpAQCAtMTA3Miw2ICsxMTM1LDM5IEBACiAgICAgICAgIHJldHVybiBpby5vcGVuKHN0cihzZWxmKSwgbW9kZSwgYnVmZmVyaW5nLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXI9c2VsZi5fb3BlbmVyKQogCisgICAgZGVmIHJlYWRfYnl0ZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIGJ5dGVzIG1vZGUsIHJlYWQgaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQorCisgICAgZGVmIHJlYWRfdGV4dChzZWxmLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZSwgcmVhZCBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ncicsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKyAgICBkZWYgd3JpdGVfYnl0ZXMoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIGJ5dGVzIG1vZGUsIHdyaXRlIHRvIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICAjIHR5cGUtY2hlY2sgZm9yIHRoZSBidWZmZXIgaW50ZXJmYWNlIGJlZm9yZSB0cnVuY2F0aW5nIHRoZSBmaWxlCisgICAgICAgIHZpZXcgPSBtZW1vcnl2aWV3KGRhdGEpCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3diJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLndyaXRlKHZpZXcpCisKKyAgICBkZWYgd3JpdGVfdGV4dChzZWxmLCBkYXRhLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBPcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZSwgd3JpdGUgdG8gaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2RhdGEgbXVzdCBiZSBzdHIsIG5vdCAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSd3JywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZi53cml0ZShkYXRhKQorCiAgICAgZGVmIHRvdWNoKHNlbGYsIG1vZGU9MG82NjYsIGV4aXN0X29rPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIHRoaXMgZmlsZSB3aXRoIHRoZSBnaXZlbiBhY2Nlc3MgbW9kZSwgaWYgaXQgZG9lc24ndCBleGlzdC4KQEAgLTEwOTUsMTQgKzExOTEsMjEgQEAKICAgICAgICAgZmQgPSBzZWxmLl9yYXdfb3BlbihmbGFncywgbW9kZSkKICAgICAgICAgb3MuY2xvc2UoZmQpCiAKLSAgICBkZWYgbWtkaXIoc2VsZiwgbW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSk6CisgICAgZGVmIG1rZGlyKHNlbGYsIG1vZGU9MG83NzcsIHBhcmVudHM9RmFsc2UsIGV4aXN0X29rPUZhbHNlKToKICAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKICAgICAgICAgaWYgbm90IHBhcmVudHM6Ci0gICAgICAgICAgICBzZWxmLl9hY2Nlc3Nvci5ta2RpcihzZWxmLCBtb2RlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yLm1rZGlyKHNlbGYsIG1vZGUpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCBleGlzdF9vayBvciBub3Qgc2VsZi5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLl9hY2Nlc3Nvci5ta2RpcihzZWxmLCBtb2RlKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBub3QgZXhpc3Rfb2sgb3Igbm90IHNlbGYuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRU5PRU5UOgogICAgICAgICAgICAgICAgICAgICByYWlzZQpAQCAtMTI4Myw2ICsxMzg2LDE3IEBACiAgICAgICAgICAgICAjIChzZWUgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3BpdHJvdS9wYXRobGliL2lzc3VlLzEyLykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVmIGV4cGFuZHVzZXIoc2VsZik6CisgICAgICAgICIiIiBSZXR1cm4gYSBuZXcgcGF0aCB3aXRoIGV4cGFuZGVkIH4gYW5kIH51c2VyIGNvbnN0cnVjdHMKKyAgICAgICAgKGFzIHJldHVybmVkIGJ5IG9zLnBhdGguZXhwYW5kdXNlcikKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChub3QgKHNlbGYuX2RydiBvciBzZWxmLl9yb290KSBhbmQKKyAgICAgICAgICAgIHNlbGYuX3BhcnRzIGFuZCBzZWxmLl9wYXJ0c1swXVs6MV0gPT0gJ34nKToKKyAgICAgICAgICAgIGhvbWVkaXIgPSBzZWxmLl9mbGF2b3VyLmdldGhvbWVkaXIoc2VsZi5fcGFydHNbMF1bMTpdKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Zyb21fcGFydHMoW2hvbWVkaXJdICsgc2VsZi5fcGFydHNbMTpdKQorCisgICAgICAgIHJldHVybiBzZWxmCisKIAogY2xhc3MgUG9zaXhQYXRoKFBhdGgsIFB1cmVQb3NpeFBhdGgpOgogICAgIF9fc2xvdHNfXyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvcGRiLnB5IGIvTGliL3BkYi5weQppbmRleCA3ZDU4YzJhLi40Y2JhOGEwIDEwMDc1NQotLS0gYS9MaWIvcGRiLnB5CisrKyBiL0xpYi9wZGIucHkKQEAgLTEzMTYsNyArMTMxNiw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBJcyBpdCBhIGNsYXNzPwogICAgICAgICBpZiB2YWx1ZS5fX2NsYXNzX18gaXMgdHlwZToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnQ2xhc3MgJXMuJXMnICUgKHZhbHVlLl9fbW9kdWxlX18sIHZhbHVlLl9fbmFtZV9fKSkKKyAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnQ2xhc3MgJXMuJXMnICUgKHZhbHVlLl9fbW9kdWxlX18sIHZhbHVlLl9fcXVhbG5hbWVfXykpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBOb25lIG9mIHRoZSBhYm92ZS4uLgogICAgICAgICBzZWxmLm1lc3NhZ2UodHlwZSh2YWx1ZSkpCmRpZmYgLS1naXQgYS9MaWIvcGlja2xlLnB5IGIvTGliL3BpY2tsZS5weQppbmRleCBjNzI5OGFmLi5lOTMwNTdhIDEwMDY0NAotLS0gYS9MaWIvcGlja2xlLnB5CisrKyBiL0xpYi9waWNrbGUucHkKQEAgLTI1OCwyNCArMjU4LDIwIEBACiAKICMgVG9vbHMgdXNlZCBmb3IgcGlja2xpbmcuCiAKLWRlZiBfZ2V0YXR0cmlidXRlKG9iaiwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9RmFsc2UpOgotICAgIGRvdHRlZF9wYXRoID0gbmFtZS5zcGxpdCgiLiIpCi0gICAgaWYgbm90IGFsbG93X3F1YWxuYW1lIGFuZCBsZW4oZG90dGVkX3BhdGgpID4gMToKLSAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNhbid0IGdldCBxdWFsaWZpZWQgYXR0cmlidXRlIHshcn0gb24geyFyfTsgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgcHJvdG9jb2xzID49IDQgdG8gZW5hYmxlIHN1cHBvcnQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkKLSAgICBmb3Igc3VicGF0aCBpbiBkb3R0ZWRfcGF0aDoKK2RlZiBfZ2V0YXR0cmlidXRlKG9iaiwgbmFtZSk6CisgICAgZm9yIHN1YnBhdGggaW4gbmFtZS5zcGxpdCgnLicpOgogICAgICAgICBpZiBzdWJwYXRoID09ICc8bG9jYWxzPic6CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQ2FuJ3QgZ2V0IGxvY2FsIGF0dHJpYnV0ZSB7IXJ9IG9uIHshcn0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG5hbWUsIG9iaikpCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhcmVudCA9IG9iagogICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIHN1YnBhdGgpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJDYW4ndCBnZXQgYXR0cmlidXRlIHshcn0gb24geyFyfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkKLSAgICByZXR1cm4gb2JqCisgICAgcmV0dXJuIG9iaiwgcGFyZW50CiAKLWRlZiB3aGljaG1vZHVsZShvYmosIG5hbWUsIGFsbG93X3F1YWxuYW1lPUZhbHNlKToKK2RlZiB3aGljaG1vZHVsZShvYmosIG5hbWUpOgogICAgICIiIkZpbmQgdGhlIG1vZHVsZSBhbiBvYmplY3QgYmVsb25nIHRvLiIiIgogICAgIG1vZHVsZV9uYW1lID0gZ2V0YXR0cihvYmosICdfX21vZHVsZV9fJywgTm9uZSkKICAgICBpZiBtb2R1bGVfbmFtZSBpcyBub3QgTm9uZToKQEAgLTI4Niw3ICsyODIsNyBAQAogICAgICAgICBpZiBtb2R1bGVfbmFtZSA9PSAnX19tYWluX18nIG9yIG1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUsIGFsbG93X3F1YWxuYW1lKSBpcyBvYmo6CisgICAgICAgICAgICBpZiBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSlbMF0gaXMgb2JqOgogICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGVfbmFtZQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCkBAIC04OTksMTYgKzg5NSwxNiBAQAogICAgICAgICB3cml0ZSA9IHNlbGYud3JpdGUKICAgICAgICAgbWVtbyA9IHNlbGYubWVtbwogCi0gICAgICAgIGlmIG5hbWUgaXMgTm9uZSBhbmQgc2VsZi5wcm90byA+PSA0OgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBuYW1lID0gZ2V0YXR0cihvYmosICdfX3F1YWxuYW1lX18nLCBOb25lKQogICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCiAKLSAgICAgICAgbW9kdWxlX25hbWUgPSB3aGljaG1vZHVsZShvYmosIG5hbWUsIGFsbG93X3F1YWxuYW1lPXNlbGYucHJvdG8gPj0gNCkKKyAgICAgICAgbW9kdWxlX25hbWUgPSB3aGljaG1vZHVsZShvYmosIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUsIGxldmVsPTApCiAgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KLSAgICAgICAgICAgIG9iajIgPSBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9c2VsZi5wcm90byA+PSA0KQorICAgICAgICAgICAgb2JqMiwgcGFyZW50ID0gX2dldGF0dHJpYnV0ZShtb2R1bGUsIG5hbWUpCiAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKAogICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgJXI6IGl0J3Mgbm90IGZvdW5kIGFzICVzLiVzIiAlCkBAIC05MzAsMTEgKzkyNiwxNiBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHdyaXRlKEVYVDQgKyBwYWNrKCI8aSIsIGNvZGUpKQogICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBsYXN0bmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIGlmIHBhcmVudCBpcyBtb2R1bGU6CisgICAgICAgICAgICBuYW1lID0gbGFzdG5hbWUKICAgICAgICAgIyBOb24tQVNDSUkgaWRlbnRpZmllcnMgYXJlIHN1cHBvcnRlZCBvbmx5IHdpdGggcHJvdG9jb2xzID49IDMuCiAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKICAgICAgICAgICAgIHNlbGYuc2F2ZShtb2R1bGVfbmFtZSkKICAgICAgICAgICAgIHNlbGYuc2F2ZShuYW1lKQogICAgICAgICAgICAgd3JpdGUoU1RBQ0tfR0xPQkFMKQorICAgICAgICBlbGlmIHBhcmVudCBpcyBub3QgbW9kdWxlOgorICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShnZXRhdHRyLCAocGFyZW50LCBsYXN0bmFtZSkpCiAgICAgICAgIGVsaWYgc2VsZi5wcm90byA+PSAzOgogICAgICAgICAgICAgd3JpdGUoR0xPQkFMICsgYnl0ZXMobW9kdWxlX25hbWUsICJ1dGYtOCIpICsgYidcbicgKwogICAgICAgICAgICAgICAgICAgYnl0ZXMobmFtZSwgInV0Zi04IikgKyBiJ1xuJykKQEAgLTEzODEsOCArMTM4MiwxMCBAQAogICAgICAgICAgICAgZWxpZiBtb2R1bGUgaW4gX2NvbXBhdF9waWNrbGUuSU1QT1JUX01BUFBJTkc6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gX2NvbXBhdF9waWNrbGUuSU1QT1JUX01BUFBJTkdbbW9kdWxlXQogICAgICAgICBfX2ltcG9ydF9fKG1vZHVsZSwgbGV2ZWw9MCkKLSAgICAgICAgcmV0dXJuIF9nZXRhdHRyaWJ1dGUoc3lzLm1vZHVsZXNbbW9kdWxlXSwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfcXVhbG5hbWU9c2VsZi5wcm90byA+PSA0KQorICAgICAgICBpZiBzZWxmLnByb3RvID49IDQ6CisgICAgICAgICAgICByZXR1cm4gX2dldGF0dHJpYnV0ZShzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lKVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc3lzLm1vZHVsZXNbbW9kdWxlXSwgbmFtZSkKIAogICAgIGRlZiBsb2FkX3JlZHVjZShzZWxmKToKICAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IGE1NGU5NDcuLmZjNGEwNzQgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC02MTYsNyArNjE2LDcgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAjIFhYWCBuZWVkcyB0ZXN0CiAgICAgbW9kID0gKHN5cy5tb2R1bGVzLmdldChwYWNrYWdlKSBvcgotICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykubG9hZCgpKQorICAgICAgICAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKSkKICAgICBpZiBtb2QgaXMgTm9uZSBvciBub3QgaGFzYXR0cihtb2QsICdfX2ZpbGVfXycpOgogICAgICAgICByZXR1cm4gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggYWQ0MjVhMS4uZjNkMmM0MiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTE2LDYgKzExNiw4IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBzeXMsIG9zLCByZSwgc3VicHJvY2VzcwogCitpbXBvcnQgd2FybmluZ3MKKwogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKIAogIyBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtJ3MgL2Rldi9udWxsIGRldmljZQpAQCAtMTY1LDQwICsxNjcsMzkgQEAKICAgICAgICAgIyBoZXJlIHRvIHdvcmsgYXJvdW5kIHByb2JsZW1zIHdpdGggQ3lnd2luIG5vdCBiZWluZwogICAgICAgICAjIGFibGUgdG8gb3BlbiBzeW1saW5rcyBmb3IgcmVhZGluZwogICAgICAgICBleGVjdXRhYmxlID0gb3MucGF0aC5yZWFscGF0aChleGVjdXRhYmxlKQotICAgIGYgPSBvcGVuKGV4ZWN1dGFibGUsICdyYicpCi0gICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKLSAgICBwb3MgPSAwCi0gICAgd2hpbGUgMToKLSAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgotICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LCBwb3MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtID0gTm9uZQotICAgICAgICBpZiBub3QgbToKLSAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCi0gICAgICAgICAgICBpZiBub3QgYmluYXJ5OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgPSAwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCwgZ2xpYmMsIGdsaWJjdmVyc2lvbiwgc28sIHRocmVhZHMsIHNvdmVyc2lvbiA9IFsKLSAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcwotICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KLSAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6Ci0gICAgICAgICAgICBsaWIgPSAnbGliYycKLSAgICAgICAgZWxpZiBnbGliYzoKLSAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgotICAgICAgICAgICAgICAgIGxpYiA9ICdnbGliYycKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCi0gICAgICAgICAgICBlbGlmIGdsaWJjdmVyc2lvbiA+IHZlcnNpb246Ci0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgotICAgICAgICBlbGlmIHNvOgotICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6CisgICAgd2l0aCBvcGVuKGV4ZWN1dGFibGUsICdyYicpIGFzIGY6CisgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCisgICAgICAgIHBvcyA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIGlmIGInbGliYycgaW4gYmluYXJ5IG9yIGInR0xJQkMnIGluIGJpbmFyeToKKyAgICAgICAgICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnksIHBvcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbSA9IE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBtOgorICAgICAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCisgICAgICAgICAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwb3MgPSAwCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGxpYmNpbml0LCBnbGliYywgZ2xpYmN2ZXJzaW9uLCBzbywgdGhyZWFkcywgc292ZXJzaW9uID0gWworICAgICAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgICAgIGZvciBzIGluIG0uZ3JvdXBzKCldCisgICAgICAgICAgICBpZiBsaWJjaW5pdCBhbmQgbm90IGxpYjoKICAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKLSAgICAgICAgICAgICAgICBpZiBzb3ZlcnNpb24gYW5kIHNvdmVyc2lvbiA+IHZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzb3ZlcnNpb24KLSAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbiArIHRocmVhZHMKLSAgICAgICAgcG9zID0gbS5lbmQoKQotICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZWxpZiBnbGliYzoKKyAgICAgICAgICAgICAgICBpZiBsaWIgIT0gJ2dsaWJjJzoKKyAgICAgICAgICAgICAgICAgICAgbGliID0gJ2dsaWJjJworICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCisgICAgICAgICAgICAgICAgZWxpZiBnbGliY3ZlcnNpb24gPiB2ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCisgICAgICAgICAgICBlbGlmIHNvOgorICAgICAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgorICAgICAgICAgICAgICAgICAgICBsaWIgPSAnbGliYycKKyAgICAgICAgICAgICAgICAgICAgaWYgc292ZXJzaW9uIGFuZCBzb3ZlcnNpb24gPiB2ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNvdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24gKyB0aHJlYWRzCisgICAgICAgICAgICBwb3MgPSBtLmVuZCgpCiAgICAgcmV0dXJuIGxpYiwgdmVyc2lvbgogCiBkZWYgX2Rpc3RfdHJ5X2hhcmRlcihkaXN0bmFtZSwgdmVyc2lvbiwgaWQpOgpAQCAtMzAwLDYgKzMwMSwxNSBAQAogCiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1fc3VwcG9ydGVkX2Rpc3RzLAogICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTEpOgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oImRpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAgICJpbiBQeXRob24gMy41IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNyIsCisgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLCBzdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9kaXN0cmlidXRpb25fbmFtZSkKKworZGVmIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLCBzdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lKToKIAogICAgICIiIiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIExpbnV4IE9TIGRpc3RyaWJ1dGlvbiBuYW1lLgogCkBAIC0zNjYsOSArMzc2LDEzIEBACiAgICAgICAgIGFyZ3MgZ2l2ZW4gYXMgcGFyYW1ldGVycy4KIAogICAgICIiIgotICAgIHJldHVybiBsaW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2Rpc3RzPXN1cHBvcnRlZF9kaXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKKyAgICBpbXBvcnQgd2FybmluZ3MKKyAgICB3YXJuaW5ncy53YXJuKCJkaXN0KCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAiCisgICAgICAgICAgICAgICAgICAiaW4gUHl0aG9uIDMuNSBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjciLAorICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgIHJldHVybiBfbGludXhfZGlzdHJpYnV0aW9uKGRpc3RuYW1lLCB2ZXJzaW9uLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZGlzdHM9c3VwcG9ydGVkX2Rpc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKIAogZGVmIHBvcGVuKGNtZCwgbW9kZT0ncicsIGJ1ZnNpemU9LTEpOgogCkBAIC00MjgsNyArNDQyLDcgQEAKICAgICAjIFRyeSBzb21lIGNvbW1vbiBjbWQgc3RyaW5ncwogICAgIGZvciBjbWQgaW4gKCd2ZXInLCAnY29tbWFuZCAvYyB2ZXInLCAnY21kIC9jIHZlcicpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwaXBlID0gcG9wZW4oY21kKQorICAgICAgICAgICAgcGlwZSA9IG9zLnBvcGVuKGNtZCkKICAgICAgICAgICAgIGluZm8gPSBwaXBlLnJlYWQoKQogICAgICAgICAgICAgaWYgcGlwZS5jbG9zZSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ2NvbW1hbmQgZmFpbGVkJykKQEAgLTEzODEsNyArMTM5NSwxNSBAQAogCiAgICAgZWxpZiBzeXN0ZW0gaW4gKCdMaW51eCcsKToKICAgICAgICAgIyBMaW51eCBiYXNlZCBzeXN0ZW1zCi0gICAgICAgIGRpc3RuYW1lLCBkaXN0dmVyc2lvbiwgZGlzdGlkID0gZGlzdCgnJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgIyBzZWUgaXNzdWUgIzEzMjIgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAgICAgICAgICdpZ25vcmUnLAorICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCisgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGRpc3RuYW1lLCBkaXN0dmVyc2lvbiwgZGlzdGlkID0gZGlzdCgnJykKICAgICAgICAgaWYgZGlzdG5hbWUgYW5kIG5vdCB0ZXJzZToKICAgICAgICAgICAgIHBsYXRmb3JtID0gX3BsYXRmb3JtKHN5c3RlbSwgcmVsZWFzZSwgbWFjaGluZSwgcHJvY2Vzc29yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGgnLApkaWZmIC0tZ2l0IGEvTGliL3BvcGxpYi5weSBiL0xpYi9wb3BsaWIucHkKaW5kZXggNDkxNTYyOC4uZjY3MjM5MCAxMDA2NDQKLS0tIGEvTGliL3BvcGxpYi5weQorKysgYi9MaWIvcG9wbGliLnB5CkBAIC03MSw2ICs3MSw3IEBACiAgICAgICAgICAgICBVSURMIFttc2ddICAgICAgICAgICAgICB1aWRsKG1zZyA9IE5vbmUpCiAgICAgICAgICAgICBDQVBBICAgICAgICAgICAgICAgICAgICBjYXBhKCkKICAgICAgICAgICAgIFNUTFMgICAgICAgICAgICAgICAgICAgIHN0bHMoKQorICAgICAgICAgICAgVVRGOCAgICAgICAgICAgICAgICAgICAgdXRmOCgpCiAKICAgICBSYWlzZXMgb25lIGV4Y2VwdGlvbjogJ2Vycm9yX3Byb3RvJy4KIApAQCAtMzQ4LDYgKzM0OSwxMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5fbG9uZ2NtZCgnVUlETCcpCiAKIAorICAgIGRlZiB1dGY4KHNlbGYpOgorICAgICAgICAiIiJUcnkgdG8gZW50ZXIgVVRGLTggbW9kZSAoc2VlIFJGQyA2ODU2KS4gUmV0dXJucyBzZXJ2ZXIgcmVzcG9uc2UuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ1VURjgnKQorCisKICAgICBkZWYgY2FwYShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHNlcnZlciBjYXBhYmlsaXRpZXMgKFJGQyAyNDQ5KSBhcyBhIGRpY3Rpb25hcnkKICAgICAgICAgPj4+IGM9cG9wbGliLlBPUDMoJ2xvY2FsaG9zdCcpCmRpZmYgLS1naXQgYS9MaWIvcG9zaXhwYXRoLnB5IGIvTGliL3Bvc2l4cGF0aC5weQppbmRleCAwYWE1M2ZlLi4wOWI4ODk3IDEwMDY0NAotLS0gYS9MaWIvcG9zaXhwYXRoLnB5CisrKyBiL0xpYi9wb3NpeHBhdGgucHkKQEAgLTIyLDcgKzIyLDggQEAKICAgICAgICAgICAgImlzbW91bnQiLCAiZXhwYW5kdXNlciIsImV4cGFuZHZhcnMiLCJub3JtcGF0aCIsImFic3BhdGgiLAogICAgICAgICAgICAic2FtZWZpbGUiLCJzYW1lb3BlbmZpbGUiLCJzYW1lc3RhdCIsCiAgICAgICAgICAgICJjdXJkaXIiLCJwYXJkaXIiLCJzZXAiLCJwYXRoc2VwIiwiZGVmcGF0aCIsImFsdHNlcCIsImV4dHNlcCIsCi0gICAgICAgICAgICJkZXZudWxsIiwicmVhbHBhdGgiLCJzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyIsInJlbHBhdGgiXQorICAgICAgICAgICAiZGV2bnVsbCIsInJlYWxwYXRoIiwic3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMiLCJyZWxwYXRoIiwKKyAgICAgICAgICAgImNvbW1vbnBhdGgiXQogCiAjIFN0cmluZ3MgcmVwcmVzZW50aW5nIHZhcmlvdXMgcGF0aC1yZWxhdGVkIGJpdHMgYW5kIHBpZWNlcy4KICMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCkBAIC03NSw2ICs3Niw4IEBACiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKKyAgICAgICAgaWYgbm90IHA6CisgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCiAgICAgICAgIGZvciBiIGluIHA6CiAgICAgICAgICAgICBpZiBiLnN0YXJ0c3dpdGgoc2VwKToKICAgICAgICAgICAgICAgICBwYXRoID0gYgpAQCAtODIsMTEgKzg1LDggQEAKICAgICAgICAgICAgICAgICBwYXRoICs9IGIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGF0aCArPSBzZXAgKyBiCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgaWYgYWxsKGlzaW5zdGFuY2UocywgKHN0ciwgYnl0ZXMpKSBmb3IgcyBpbiAoYSwpICsgcCk6Ci0gICAgICAgICAgICAjIE11c3QgaGF2ZSBhIG1peHR1cmUgb2YgdGV4dCBhbmQgYmluYXJ5IGRhdGEKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb25lbnRzIikgZnJvbSBOb25lCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgYSwgKnApCiAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIHBhdGgKIApAQCAtNDQ1LDEzICs0NDUsNTggQEAKICAgICBpZiBzdGFydCBpcyBOb25lOgogICAgICAgICBzdGFydCA9IGN1cmRpcgogCi0gICAgc3RhcnRfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgoc3RhcnQpLnNwbGl0KHNlcCkgaWYgeF0KLSAgICBwYXRoX2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHBhdGgpLnNwbGl0KHNlcCkgaWYgeF0KKyAgICB0cnk6CisgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCisgICAgICAgIHBhdGhfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgocGF0aCkuc3BsaXQoc2VwKSBpZiB4XQorICAgICAgICAjIFdvcmsgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaWxlcGF0aCBpcyBzaGFyZWQgYnkgc3RhcnQgYW5kIHBhdGguCisgICAgICAgIGkgPSBsZW4oY29tbW9ucHJlZml4KFtzdGFydF9saXN0LCBwYXRoX2xpc3RdKSkKIAotICAgICMgV29yayBvdXQgaG93IG11Y2ggb2YgdGhlIGZpbGVwYXRoIGlzIHNoYXJlZCBieSBzdGFydCBhbmQgcGF0aC4KLSAgICBpID0gbGVuKGNvbW1vbnByZWZpeChbc3RhcnRfbGlzdCwgcGF0aF9saXN0XSkpCisgICAgICAgIHJlbF9saXN0ID0gW3BhcmRpcl0gKiAobGVuKHN0YXJ0X2xpc3QpLWkpICsgcGF0aF9saXN0W2k6XQorICAgICAgICBpZiBub3QgcmVsX2xpc3Q6CisgICAgICAgICAgICByZXR1cm4gY3VyZGlyCisgICAgICAgIHJldHVybiBqb2luKCpyZWxfbGlzdCkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEJ5dGVzV2FybmluZywgRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygncmVscGF0aCcsIHBhdGgsIHN0YXJ0KQorICAgICAgICByYWlzZQogCi0gICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCi0gICAgaWYgbm90IHJlbF9saXN0OgotICAgICAgICByZXR1cm4gY3VyZGlyCi0gICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorCisjIFJldHVybiB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGggb2YgdGhlIHNlcXVlbmNlIG9mIHBhdGhzIGdpdmVuIGFzIGlucHV0LgorIyBUaGUgcGF0aHMgYXJlIG5vdCBub3JtYWxpemVkIGJlZm9yZSBjb21wYXJpbmcgdGhlbSAodGhpcyBpcyB0aGUKKyMgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikuIEFueSB0cmFpbGluZyBzZXBhcmF0b3IgaXMgc3RyaXBwZWQgZnJvbSB0aGUKKyMgcmV0dXJuZWQgcGF0aC4KKworZGVmIGNvbW1vbnBhdGgocGF0aHMpOgorICAgICIiIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGguIiIiCisKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQorCisgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnLycKKyAgICAgICAgY3VyZGlyID0gJy4nCisKKyAgICB0cnk6CisgICAgICAgIHNwbGl0X3BhdGhzID0gW3BhdGguc3BsaXQoc2VwKSBmb3IgcGF0aCBpbiBwYXRoc10KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBwIGluIHBhdGhzKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IG1peCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMiKSBmcm9tIE5vbmUKKworICAgICAgICBzcGxpdF9wYXRocyA9IFtbYyBmb3IgYyBpbiBzIGlmIGMgYW5kIGMgIT0gY3VyZGlyXSBmb3IgcyBpbiBzcGxpdF9wYXRoc10KKyAgICAgICAgczEgPSBtaW4oc3BsaXRfcGF0aHMpCisgICAgICAgIHMyID0gbWF4KHNwbGl0X3BhdGhzKQorICAgICAgICBjb21tb24gPSBzMQorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgorICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKKyAgICAgICAgICAgICAgICBjb21tb24gPSBzMVs6aV0KKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHByZWZpeCA9IHNlcCBpZiBpc2FicyBlbHNlIHNlcFs6MF0KKyAgICAgICAgcmV0dXJuIHByZWZpeCArIHNlcC5qb2luKGNvbW1vbikKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdjb21tb25wYXRoJywgKnBhdGhzKQorICAgICAgICByYWlzZQpkaWZmIC0tZ2l0IGEvTGliL3BwcmludC5weSBiL0xpYi9wcHJpbnQucHkKaW5kZXggMmNiZmZlZC4uODc2NDliNCAxMDA2NDQKLS0tIGEvTGliL3BwcmludC5weQorKysgYi9MaWIvcHByaW50LnB5CkBAIC0zNCw5ICszNCwxMCBAQAogCiAiIiIKIAoraW1wb3J0IGNvbGxlY3Rpb25zIGFzIF9jb2xsZWN0aW9ucwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzIGFzIF9zeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0IGFzIF9PcmRlcmVkRGljdAoraW1wb3J0IHR5cGVzIGFzIF90eXBlcwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8gYXMgX1N0cmluZ0lPCiAKIF9fYWxsX18gPSBbInBwcmludCIsInBmb3JtYXQiLCJpc3JlYWRhYmxlIiwiaXNyZWN1cnNpdmUiLCJzYWZlcmVwciIsCkBAIC04NSwxNCArODYsMTAgQEAKIAogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBydiA9IHNlbGYub2JqLl9fbHRfXyhvdGhlci5vYmopCisgICAgICAgICAgICByZXR1cm4gc2VsZi5vYmogPCBvdGhlci5vYmoKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJ2ID0gTm90SW1wbGVtZW50ZWQKLQotICAgICAgICBpZiBydiBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJ2ID0gKHN0cih0eXBlKHNlbGYub2JqKSksIGlkKHNlbGYub2JqKSkgPCBcCi0gICAgICAgICAgICAgICAgIChzdHIodHlwZShvdGhlci5vYmopKSwgaWQob3RoZXIub2JqKSkKLSAgICAgICAgcmV0dXJuIHJ2CisgICAgICAgICAgICByZXR1cm4gKChzdHIodHlwZShzZWxmLm9iaikpLCBpZChzZWxmLm9iaikpIDwgXAorICAgICAgICAgICAgICAgICAgICAoc3RyKHR5cGUob3RoZXIub2JqKSksIGlkKG90aGVyLm9iaikpKQogCiBkZWYgX3NhZmVfdHVwbGUodCk6CiAgICAgIkhlbHBlciBmdW5jdGlvbiBmb3IgY29tcGFyaW5nIDItdHVwbGVzIgpAQCAtMTIzLDkgKzEyMCwxMiBAQAogICAgICAgICAiIiIKICAgICAgICAgaW5kZW50ID0gaW50KGluZGVudCkKICAgICAgICAgd2lkdGggPSBpbnQod2lkdGgpCi0gICAgICAgIGFzc2VydCBpbmRlbnQgPj0gMCwgImluZGVudCBtdXN0IGJlID49IDAiCi0gICAgICAgIGFzc2VydCBkZXB0aCBpcyBOb25lIG9yIGRlcHRoID4gMCwgImRlcHRoIG11c3QgYmUgPiAwIgotICAgICAgICBhc3NlcnQgd2lkdGgsICJ3aWR0aCBtdXN0IGJlICE9IDAiCisgICAgICAgIGlmIGluZGVudCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbmRlbnQgbXVzdCBiZSA+PSAwJykKKyAgICAgICAgaWYgZGVwdGggaXMgbm90IE5vbmUgYW5kIGRlcHRoIDw9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkZXB0aCBtdXN0IGJlID4gMCcpCisgICAgICAgIGlmIG5vdCB3aWR0aDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dpZHRoIG11c3QgYmUgIT0gMCcpCiAgICAgICAgIHNlbGYuX2RlcHRoID0gZGVwdGgKICAgICAgICAgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA9IGluZGVudAogICAgICAgICBzZWxmLl93aWR0aCA9IHdpZHRoCkBAIC0xNTIsMTMzICsxNTIsMjIzIEBACiAgICAgICAgIHJldHVybiByZWFkYWJsZSBhbmQgbm90IHJlY3Vyc2l2ZQogCiAgICAgZGVmIF9mb3JtYXQoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6Ci0gICAgICAgIGxldmVsID0gbGV2ZWwgKyAxCiAgICAgICAgIG9iamlkID0gaWQob2JqZWN0KQogICAgICAgICBpZiBvYmppZCBpbiBjb250ZXh0OgogICAgICAgICAgICAgc3RyZWFtLndyaXRlKF9yZWN1cnNpb24ob2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYuX3JlY3Vyc2l2ZSA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX3JlYWRhYmxlID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXAgPSBzZWxmLl9yZXByKG9iamVjdCwgY29udGV4dCwgbGV2ZWwgLSAxKQotICAgICAgICB0eXAgPSB0eXBlKG9iamVjdCkKLSAgICAgICAgbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSAxIC0gaW5kZW50IC0gYWxsb3dhbmNlCi0gICAgICAgIHNlcExpbmVzID0gbGVuKHJlcCkgPiBtYXhfd2lkdGgKKyAgICAgICAgcmVwID0gc2VsZi5fcmVwcihvYmplY3QsIGNvbnRleHQsIGxldmVsKQorICAgICAgICBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudCAtIGFsbG93YW5jZQorICAgICAgICBpZiBsZW4ocmVwKSA+IG1heF93aWR0aDoKKyAgICAgICAgICAgIHAgPSBzZWxmLl9kaXNwYXRjaC5nZXQodHlwZShvYmplY3QpLl9fcmVwcl9fLCBOb25lKQorICAgICAgICAgICAgaWYgcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKKyAgICAgICAgICAgICAgICBwKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgKyAxKQorICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG9iamVjdCwgZGljdCk6CisgICAgICAgICAgICAgICAgY29udGV4dFtvYmppZF0gPSAxCisgICAgICAgICAgICAgICAgc2VsZi5fcHByaW50X2RpY3Qob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsICsgMSkKKyAgICAgICAgICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc3RyZWFtLndyaXRlKHJlcCkKKworICAgIF9kaXNwYXRjaCA9IHt9CisKKyAgICBkZWYgX3BwcmludF9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICB3cml0ZSgneycpCisgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgorICAgICAgICAgICAgd3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKKyAgICAgICAgbGVuZ3RoID0gbGVuKG9iamVjdCkKKyAgICAgICAgaWYgbGVuZ3RoOgorICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQob2JqZWN0Lml0ZW1zKCksIGtleT1fc2FmZV90dXBsZSkKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9kaWN0X2l0ZW1zKGl0ZW1zLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICB3cml0ZSgnfScpCiAKLSAgICAgICAgaWYgc2VwTGluZXM6Ci0gICAgICAgICAgICByID0gZ2V0YXR0cih0eXAsICJfX3JlcHJfXyIsIE5vbmUpCi0gICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgZGljdCk6Ci0gICAgICAgICAgICAgICAgd3JpdGUoJ3snKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbihvYmplY3QpCi0gICAgICAgICAgICAgICAgaWYgbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50ID0gaW5kZW50ICsgc2VsZi5faW5kZW50X3Blcl9sZXZlbAotICAgICAgICAgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgX09yZGVyZWREaWN0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gbGlzdChvYmplY3QuaXRlbXMoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gc29ydGVkKG9iamVjdC5pdGVtcygpLCBrZXk9X3NhZmVfdHVwbGUpCi0gICAgICAgICAgICAgICAgICAgIGtleSwgZW50ID0gaXRlbXNbMF0KLSAgICAgICAgICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihrZXksIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCc6ICcpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50ICsgbGVuKHJlcCkgKyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICBpZiBsZW5ndGggPiAxOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtleSwgZW50IGluIGl0ZW1zWzE6XToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXAgPSBzZWxmLl9yZXByKGtleSwgY29udGV4dCwgbGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoJyxcbiVzJXM6ICcgJSAoJyAnKmluZGVudCwgcmVwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCArIGxlbihyZXApICsgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSBpbmRlbnQgLSBzZWxmLl9pbmRlbnRfcGVyX2xldmVsCi0gICAgICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQotICAgICAgICAgICAgICAgIHdyaXRlKCd9JykKLSAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBfZGlzcGF0Y2hbZGljdC5fX3JlcHJfX10gPSBfcHByaW50X2RpY3QKIAotICAgICAgICAgICAgaWYgKChpc3N1YmNsYXNzKHR5cCwgbGlzdCkgYW5kIHIgaXMgbGlzdC5fX3JlcHJfXykgb3IKLSAgICAgICAgICAgICAgICAoaXNzdWJjbGFzcyh0eXAsIHR1cGxlKSBhbmQgciBpcyB0dXBsZS5fX3JlcHJfXykgb3IKLSAgICAgICAgICAgICAgICAoaXNzdWJjbGFzcyh0eXAsIHNldCkgYW5kIHIgaXMgc2V0Ll9fcmVwcl9fKSBvcgotICAgICAgICAgICAgICAgIChpc3N1YmNsYXNzKHR5cCwgZnJvemVuc2V0KSBhbmQgciBpcyBmcm96ZW5zZXQuX19yZXByX18pCi0gICAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGxlbihvYmplY3QpCi0gICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIGxpc3QpOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnWycpCi0gICAgICAgICAgICAgICAgICAgIGVuZGNoYXIgPSAnXScKLSAgICAgICAgICAgICAgICBlbGlmIGlzc3ViY2xhc3ModHlwLCB0dXBsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCcoJykKLSAgICAgICAgICAgICAgICAgICAgZW5kY2hhciA9ICcpJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZShyZXApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgaWYgdHlwIGlzIHNldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCd7JykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZGNoYXIgPSAnfScKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKHR5cC5fX25hbWVfXykKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKCcoeycpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRjaGFyID0gJ30pJwotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICs9IGxlbih0eXAuX19uYW1lX18pICsgMQotICAgICAgICAgICAgICAgICAgICBvYmplY3QgPSBzb3J0ZWQob2JqZWN0LCBrZXk9X3NhZmVfa2V5KQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dFtvYmppZF0gPSAxCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKLSAgICAgICAgICAgICAgICAgICAgZGVsIGNvbnRleHRbb2JqaWRdCi0gICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIHR1cGxlKSBhbmQgbGVuZ3RoID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCcsJykKLSAgICAgICAgICAgICAgICB3cml0ZShlbmRjaGFyKQotICAgICAgICAgICAgICAgIHJldHVybgorICAgIGRlZiBfcHByaW50X29yZGVyZWRfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKCcpCisgICAgICAgIHNlbGYuX2Zvcm1hdChsaXN0KG9iamVjdC5pdGVtcygpKSwgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICsgbGVuKGNscy5fX25hbWVfXykgKyAxLCBhbGxvd2FuY2UgKyAxLAorICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnKScpCiAKLSAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBzdHIpIGFuZCBsZW4ob2JqZWN0KSA+IDAgYW5kIHIgaXMgc3RyLl9fcmVwcl9fOgotICAgICAgICAgICAgICAgIGNodW5rcyA9IFtdCi0gICAgICAgICAgICAgICAgbGluZXMgPSBvYmplY3Quc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICAgICAgICAgIGlmIGxldmVsID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGluZGVudCArPSAxCi0gICAgICAgICAgICAgICAgICAgIG1heF93aWR0aCAtPSAyCi0gICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgICAgICAgICAgICAgcmVwID0gcmVwcihsaW5lKQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocmVwKSA8PSBtYXhfd2lkdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQSBsaXN0IG9mIGFsdGVybmF0aW5nIChub24tc3BhY2UsIHNwYWNlKSBzdHJpbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IHJlLnNwbGl0KHInKFxzKyknLCBsaW5lKSArIFsnJ10KLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHBhcnRzKSwgMik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydCA9IHBhcnRzW2ldICsgcGFydHNbaSsxXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGN1cnJlbnQgKyBwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJlcHIoY2FuZGlkYXRlKSkgPiBtYXhfd2lkdGg6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcHIoY3VycmVudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJ0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZQorICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuT3JkZXJlZERpY3QuX19yZXByX19dID0gX3BwcmludF9vcmRlcmVkX2RpY3QKKworICAgIGRlZiBfcHByaW50X2xpc3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHN0cmVhbS53cml0ZSgnWycpCisgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnXScpCisKKyAgICBfZGlzcGF0Y2hbbGlzdC5fX3JlcHJfX10gPSBfcHByaW50X2xpc3QKKworICAgIGRlZiBfcHByaW50X3R1cGxlKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzdHJlYW0ud3JpdGUoJygnKQorICAgICAgICBlbmRjaGFyID0gJywpJyBpZiBsZW4ob2JqZWN0KSA9PSAxIGVsc2UgJyknCisgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyBsZW4oZW5kY2hhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKGVuZGNoYXIpCisKKyAgICBfZGlzcGF0Y2hbdHVwbGUuX19yZXByX19dID0gX3BwcmludF90dXBsZQorCisgICAgZGVmIF9wcHJpbnRfc2V0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHR5cCA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgaWYgdHlwIGlzIHNldDoKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSgneycpCisgICAgICAgICAgICBlbmRjaGFyID0gJ30nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUodHlwLl9fbmFtZV9fICsgJyh7JykKKyAgICAgICAgICAgIGVuZGNoYXIgPSAnfSknCisgICAgICAgICAgICBpbmRlbnQgKz0gbGVuKHR5cC5fX25hbWVfXykgKyAxCisgICAgICAgIG9iamVjdCA9IHNvcnRlZChvYmplY3QsIGtleT1fc2FmZV9rZXkpCisgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyBsZW4oZW5kY2hhciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKGVuZGNoYXIpCisKKyAgICBfZGlzcGF0Y2hbc2V0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfc2V0CisgICAgX2Rpc3BhdGNoW2Zyb3plbnNldC5fX3JlcHJfX10gPSBfcHByaW50X3NldAorCisgICAgZGVmIF9wcHJpbnRfc3RyKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICB3cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2h1bmtzID0gW10KKyAgICAgICAgbGluZXMgPSBvYmplY3Quc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICBpZiBsZXZlbCA9PSAxOgorICAgICAgICAgICAgaW5kZW50ICs9IDEKKyAgICAgICAgICAgIGFsbG93YW5jZSArPSAxCisgICAgICAgIG1heF93aWR0aDEgPSBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudAorICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICAgICAgcmVwID0gcmVwcihsaW5lKQorICAgICAgICAgICAgaWYgaSA9PSBsZW4obGluZXMpIC0gMToKKyAgICAgICAgICAgICAgICBtYXhfd2lkdGgxIC09IGFsbG93YW5jZQorICAgICAgICAgICAgaWYgbGVuKHJlcCkgPD0gbWF4X3dpZHRoMToKKyAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBBIGxpc3Qgb2YgYWx0ZXJuYXRpbmcgKG5vbi1zcGFjZSwgc3BhY2UpIHN0cmluZ3MKKyAgICAgICAgICAgICAgICBwYXJ0cyA9IHJlLmZpbmRhbGwocidcUypccyonLCBsaW5lKQorICAgICAgICAgICAgICAgIGFzc2VydCBwYXJ0cworICAgICAgICAgICAgICAgIGFzc2VydCBub3QgcGFydHNbLTFdCisgICAgICAgICAgICAgICAgcGFydHMucG9wKCkgICMgZHJvcCBlbXB0eSBsYXN0IHBhcnQKKyAgICAgICAgICAgICAgICBtYXhfd2lkdGgyID0gbWF4X3dpZHRoCisgICAgICAgICAgICAgICAgY3VycmVudCA9ICcnCisgICAgICAgICAgICAgICAgZm9yIGosIHBhcnQgaW4gZW51bWVyYXRlKHBhcnRzKToKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY3VycmVudCArIHBhcnQKKyAgICAgICAgICAgICAgICAgICAgaWYgaiA9PSBsZW4ocGFydHMpIC0gMSBhbmQgaSA9PSBsZW4obGluZXMpIC0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF93aWR0aDIgLT0gYWxsb3dhbmNlCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXByKGNhbmRpZGF0ZSkpID4gbWF4X3dpZHRoMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQotICAgICAgICAgICAgICAgIGlmIGxlbihjaHVua3MpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKHJlcCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgbGV2ZWwgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJygnKQotICAgICAgICAgICAgICAgIGZvciBpLCByZXAgaW4gZW51bWVyYXRlKGNodW5rcyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGkgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoJ1xuJyArICcgJyppbmRlbnQpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlKHJlcCkKLSAgICAgICAgICAgICAgICBpZiBsZXZlbCA9PSAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnKScpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJ0CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlCisgICAgICAgICAgICAgICAgaWYgY3VycmVudDoKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXByKGN1cnJlbnQpKQorICAgICAgICBpZiBsZW4oY2h1bmtzKSA9PSAxOgorICAgICAgICAgICAgd3JpdGUocmVwKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGxldmVsID09IDE6CisgICAgICAgICAgICB3cml0ZSgnKCcpCisgICAgICAgIGZvciBpLCByZXAgaW4gZW51bWVyYXRlKGNodW5rcyk6CisgICAgICAgICAgICBpZiBpID4gMDoKKyAgICAgICAgICAgICAgICB3cml0ZSgnXG4nICsgJyAnKmluZGVudCkKKyAgICAgICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgaWYgbGV2ZWwgPT0gMToKKyAgICAgICAgICAgIHdyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtzdHIuX19yZXByX19dID0gX3BwcmludF9zdHIKKworICAgIGRlZiBfcHByaW50X2J5dGVzKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpZiBsZW4ob2JqZWN0KSA8PSA0OgorICAgICAgICAgICAgd3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmVucyA9IGxldmVsID09IDEKKyAgICAgICAgaWYgcGFyZW5zOgorICAgICAgICAgICAgaW5kZW50ICs9IDEKKyAgICAgICAgICAgIGFsbG93YW5jZSArPSAxCisgICAgICAgICAgICB3cml0ZSgnKCcpCisgICAgICAgIGRlbGltID0gJycKKyAgICAgICAgZm9yIHJlcCBpbiBfd3JhcF9ieXRlc19yZXByKG9iamVjdCwgc2VsZi5fd2lkdGggLSBpbmRlbnQsIGFsbG93YW5jZSk6CisgICAgICAgICAgICB3cml0ZShkZWxpbSkKKyAgICAgICAgICAgIHdyaXRlKHJlcCkKKyAgICAgICAgICAgIGlmIG5vdCBkZWxpbToKKyAgICAgICAgICAgICAgICBkZWxpbSA9ICdcbicgKyAnICcqaW5kZW50CisgICAgICAgIGlmIHBhcmVuczoKKyAgICAgICAgICAgIHdyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtieXRlcy5fX3JlcHJfX10gPSBfcHByaW50X2J5dGVzCisKKyAgICBkZWYgX3BwcmludF9ieXRlYXJyYXkoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIHdyaXRlKCdieXRlYXJyYXkoJykKKyAgICAgICAgc2VsZi5fcHByaW50X2J5dGVzKGJ5dGVzKG9iamVjdCksIHN0cmVhbSwgaW5kZW50ICsgMTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCArIDEpCisgICAgICAgIHdyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtieXRlYXJyYXkuX19yZXByX19dID0gX3BwcmludF9ieXRlYXJyYXkKKworICAgIGRlZiBfcHByaW50X21hcHBpbmdwcm94eShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc3RyZWFtLndyaXRlKCdtYXBwaW5ncHJveHkoJykKKyAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdC5jb3B5KCksIHN0cmVhbSwgaW5kZW50ICsgMTMsIGFsbG93YW5jZSArIDEsCisgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtfdHlwZXMuTWFwcGluZ1Byb3h5VHlwZS5fX3JlcHJfX10gPSBfcHByaW50X21hcHBpbmdwcm94eQorCisgICAgZGVmIF9mb3JtYXRfZGljdF9pdGVtcyhzZWxmLCBpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKToKKyAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgaW5kZW50ICs9IHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKKyAgICAgICAgZGVsaW1ubCA9ICcsXG4nICsgJyAnICogaW5kZW50CisgICAgICAgIGxhc3RfaW5kZXggPSBsZW4oaXRlbXMpIC0gMQorICAgICAgICBmb3IgaSwgKGtleSwgZW50KSBpbiBlbnVtZXJhdGUoaXRlbXMpOgorICAgICAgICAgICAgbGFzdCA9IGkgPT0gbGFzdF9pbmRleAorICAgICAgICAgICAgcmVwID0gc2VsZi5fcmVwcihrZXksIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgd3JpdGUocmVwKQorICAgICAgICAgICAgd3JpdGUoJzogJykKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50ICsgbGVuKHJlcCkgKyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSBpZiBsYXN0IGVsc2UgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIGlmIG5vdCBsYXN0OgorICAgICAgICAgICAgICAgIHdyaXRlKGRlbGltbmwpCiAKICAgICBkZWYgX2Zvcm1hdF9pdGVtcyhzZWxmLCBpdGVtcywgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgogICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpbmRlbnQgKz0gc2VsZi5faW5kZW50X3Blcl9sZXZlbAorICAgICAgICBpZiBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID4gMToKKyAgICAgICAgICAgIHdyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCiAgICAgICAgIGRlbGltbmwgPSAnLFxuJyArICcgJyAqIGluZGVudAogICAgICAgICBkZWxpbSA9ICcnCi0gICAgICAgIHdpZHRoID0gbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQgLSBhbGxvd2FuY2UgKyAyCi0gICAgICAgIGZvciBlbnQgaW4gaXRlbXM6CisgICAgICAgIHdpZHRoID0gbWF4X3dpZHRoID0gc2VsZi5fd2lkdGggLSBpbmRlbnQgKyAxCisgICAgICAgIGl0ID0gaXRlcihpdGVtcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dF9lbnQgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBsYXN0ID0gRmFsc2UKKyAgICAgICAgd2hpbGUgbm90IGxhc3Q6CisgICAgICAgICAgICBlbnQgPSBuZXh0X2VudAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5leHRfZW50ID0gbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGxhc3QgPSBUcnVlCisgICAgICAgICAgICAgICAgbWF4X3dpZHRoIC09IGFsbG93YW5jZQorICAgICAgICAgICAgICAgIHdpZHRoIC09IGFsbG93YW5jZQogICAgICAgICAgICAgaWYgc2VsZi5fY29tcGFjdDoKICAgICAgICAgICAgICAgICByZXAgPSBzZWxmLl9yZXByKGVudCwgY29udGV4dCwgbGV2ZWwpCiAgICAgICAgICAgICAgICAgdyA9IGxlbihyZXApICsgMgpAQCAtMjk0LDcgKzM4NCw5IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB3cml0ZShkZWxpbSkKICAgICAgICAgICAgIGRlbGltID0gZGVsaW1ubAotICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2FuY2UgaWYgbGFzdCBlbHNlIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCiAKICAgICBkZWYgX3JlcHIoc2VsZiwgb2JqZWN0LCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgIHJlcHIsIHJlYWRhYmxlLCByZWN1cnNpdmUgPSBzZWxmLmZvcm1hdChvYmplY3QsIGNvbnRleHQuY29weSgpLApAQCAtMzEyLDI5ICs0MDQsOTMgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBfc2FmZV9yZXByKG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCkKIAorICAgIGRlZiBfcHByaW50X2RlZmF1bHRfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICByZGYgPSBzZWxmLl9yZXByKG9iamVjdC5kZWZhdWx0X2ZhY3RvcnksIGNvbnRleHQsIGxldmVsKQorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIGluZGVudCArPSBsZW4oY2xzLl9fbmFtZV9fKSArIDEKKyAgICAgICAgc3RyZWFtLndyaXRlKCclcyglcyxcbiVzJyAlIChjbHMuX19uYW1lX18sIHJkZiwgJyAnICogaW5kZW50KSkKKyAgICAgICAgc2VsZi5fcHByaW50X2RpY3Qob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHN0cmVhbS53cml0ZSgnKScpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfZGVmYXVsdF9kaWN0CisKKyAgICBkZWYgX3BwcmludF9jb3VudGVyKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoeycpCisgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCisgICAgICAgIGl0ZW1zID0gb2JqZWN0Lm1vc3RfY29tbW9uKCkKKyAgICAgICAgc2VsZi5fZm9ybWF0X2RpY3RfaXRlbXMoaXRlbXMsIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICsgbGVuKGNscy5fX25hbWVfXykgKyAxLCBhbGxvd2FuY2UgKyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCd9KScpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLkNvdW50ZXIuX19yZXByX19dID0gX3BwcmludF9jb3VudGVyCisKKyAgICBkZWYgX3BwcmludF9jaGFpbl9tYXAoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0Lm1hcHMpOgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjbHMgPSBvYmplY3QuX19jbGFzc19fCisgICAgICAgIHN0cmVhbS53cml0ZShjbHMuX19uYW1lX18gKyAnKCcpCisgICAgICAgIGluZGVudCArPSBsZW4oY2xzLl9fbmFtZV9fKSArIDEKKyAgICAgICAgZm9yIGksIG0gaW4gZW51bWVyYXRlKG9iamVjdC5tYXBzKToKKyAgICAgICAgICAgIGlmIGkgPT0gbGVuKG9iamVjdC5tYXBzKSAtIDE6CisgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0KG0sIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQobSwgc3RyZWFtLCBpbmRlbnQsIDEsIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnLFxuJyArICcgJyAqIGluZGVudCkKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuQ2hhaW5NYXAuX19yZXByX19dID0gX3BwcmludF9jaGFpbl9tYXAKKworICAgIGRlZiBfcHByaW50X2RlcXVlKHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoJykKKyAgICAgICAgaW5kZW50ICs9IGxlbihjbHMuX19uYW1lX18pICsgMQorICAgICAgICBzdHJlYW0ud3JpdGUoJ1snKQorICAgICAgICBpZiBvYmplY3QubWF4bGVuIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlICsgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnXSknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBybWwgPSBzZWxmLl9yZXByKG9iamVjdC5tYXhsZW4sIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgc3RyZWFtLndyaXRlKCddLFxuJXNtYXhsZW49JXMpJyAlICgnICcgKiBpbmRlbnQsIHJtbCkpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLmRlcXVlLl9fcmVwcl9fXSA9IF9wcHJpbnRfZGVxdWUKKworICAgIGRlZiBfcHByaW50X3VzZXJfZGljdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdC5kYXRhLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCAtIDEpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLlVzZXJEaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfdXNlcl9kaWN0CisKKyAgICBkZWYgX3BwcmludF91c2VyX2xpc3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuZGF0YSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgLSAxKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5Vc2VyTGlzdC5fX3JlcHJfX10gPSBfcHByaW50X3VzZXJfbGlzdAorCisgICAgZGVmIF9wcHJpbnRfdXNlcl9zdHJpbmcoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHNlbGYuX2Zvcm1hdChvYmplY3QuZGF0YSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwgLSAxKQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5Vc2VyU3RyaW5nLl9fcmVwcl9fXSA9IF9wcHJpbnRfdXNlcl9zdHJpbmcKIAogIyBSZXR1cm4gdHJpcGxlIChyZXByX3N0cmluZywgaXNyZWFkYWJsZSwgaXNyZWN1cnNpdmUpLgogCiBkZWYgX3NhZmVfcmVwcihvYmplY3QsIGNvbnRleHQsIG1heGxldmVscywgbGV2ZWwpOgogICAgIHR5cCA9IHR5cGUob2JqZWN0KQotICAgIGlmIHR5cCBpcyBzdHI6Ci0gICAgICAgIGlmICdsb2NhbGUnIG5vdCBpbiBfc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gcmVwcihvYmplY3QpLCBUcnVlLCBGYWxzZQotICAgICAgICBpZiAiJyIgaW4gb2JqZWN0IGFuZCAnIicgbm90IGluIG9iamVjdDoKLSAgICAgICAgICAgIGNsb3N1cmUgPSAnIicKLSAgICAgICAgICAgIHF1b3RlcyA9IHsnIic6ICdcXCInfQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY2xvc3VyZSA9ICInIgotICAgICAgICAgICAgcXVvdGVzID0geyInIjogIlxcJyJ9Ci0gICAgICAgIHFnZXQgPSBxdW90ZXMuZ2V0Ci0gICAgICAgIHNpbyA9IF9TdHJpbmdJTygpCi0gICAgICAgIHdyaXRlID0gc2lvLndyaXRlCi0gICAgICAgIGZvciBjaGFyIGluIG9iamVjdDoKLSAgICAgICAgICAgIGlmIGNoYXIuaXNhbHBoYSgpOgotICAgICAgICAgICAgICAgIHdyaXRlKGNoYXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdyaXRlKHFnZXQoY2hhciwgcmVwcihjaGFyKVsxOi0xXSkpCi0gICAgICAgIHJldHVybiAoIiVzJXMlcyIgJSAoY2xvc3VyZSwgc2lvLmdldHZhbHVlKCksIGNsb3N1cmUpKSwgVHJ1ZSwgRmFsc2UKKyAgICBpZiB0eXAgaW4gX2J1aWx0aW5fc2NhbGFyczoKKyAgICAgICAgcmV0dXJuIHJlcHIob2JqZWN0KSwgVHJ1ZSwgRmFsc2UKIAogICAgIHIgPSBnZXRhdHRyKHR5cCwgIl9fcmVwcl9fIiwgTm9uZSkKICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgZGljdCkgYW5kIHIgaXMgZGljdC5fX3JlcHJfXzoKQEAgLTM5OSw2ICs1NTUsOCBAQAogICAgIHJlcCA9IHJlcHIob2JqZWN0KQogICAgIHJldHVybiByZXAsIChyZXAgYW5kIG5vdCByZXAuc3RhcnRzd2l0aCgnPCcpKSwgRmFsc2UKIAorX2J1aWx0aW5fc2NhbGFycyA9IGZyb3plbnNldCh7c3RyLCBieXRlcywgYnl0ZWFycmF5LCBpbnQsIGZsb2F0LCBjb21wbGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwgdHlwZShOb25lKX0pCiAKIGRlZiBfcmVjdXJzaW9uKG9iamVjdCk6CiAgICAgcmV0dXJuICgiPFJlY3Vyc2lvbiBvbiAlcyB3aXRoIGlkPSVzPiIKQEAgLTQxOCw1ICs1NzYsMjIgQEAKICAgICBwcmludCgiX3NhZmVfcmVwcjoiLCB0MiAtIHQxKQogICAgIHByaW50KCJwZm9ybWF0OiIsIHQzIC0gdDIpCiAKK2RlZiBfd3JhcF9ieXRlc19yZXByKG9iamVjdCwgd2lkdGgsIGFsbG93YW5jZSk6CisgICAgY3VycmVudCA9IGInJworICAgIGxhc3QgPSBsZW4ob2JqZWN0KSAvLyA0ICogNAorICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihvYmplY3QpLCA0KToKKyAgICAgICAgcGFydCA9IG9iamVjdFtpOiBpKzRdCisgICAgICAgIGNhbmRpZGF0ZSA9IGN1cnJlbnQgKyBwYXJ0CisgICAgICAgIGlmIGkgPT0gbGFzdDoKKyAgICAgICAgICAgIHdpZHRoIC09IGFsbG93YW5jZQorICAgICAgICBpZiBsZW4ocmVwcihjYW5kaWRhdGUpKSA+IHdpZHRoOgorICAgICAgICAgICAgaWYgY3VycmVudDoKKyAgICAgICAgICAgICAgICB5aWVsZCByZXByKGN1cnJlbnQpCisgICAgICAgICAgICBjdXJyZW50ID0gcGFydAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY3VycmVudCA9IGNhbmRpZGF0ZQorICAgIGlmIGN1cnJlbnQ6CisgICAgICAgIHlpZWxkIHJlcHIoY3VycmVudCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBfcGVyZmNoZWNrKCkKZGlmZiAtLWdpdCBhL0xpYi9weV9jb21waWxlLnB5IGIvTGliL3B5X2NvbXBpbGUucHkKaW5kZXggZjY1ZWVhZi4uMTFjNWI1MCAxMDA2NDQKLS0tIGEvTGliL3B5X2NvbXBpbGUucHkKKysrIGIvTGliL3B5X2NvbXBpbGUucHkKQEAgLTEsOSArMSw5IEBACi0iIiJSb3V0aW5lIHRvICJjb21waWxlIiBhIC5weSBmaWxlIHRvIGEgLnB5YyAob3IgLnB5bykgZmlsZS4KKyIiIlJvdXRpbmUgdG8gImNvbXBpbGUiIGEgLnB5IGZpbGUgdG8gYSAucHljIGZpbGUuCiAKIFRoaXMgbW9kdWxlIGhhcyBpbnRpbWF0ZSBrbm93bGVkZ2Ugb2YgdGhlIGZvcm1hdCBvZiAucHljIGZpbGVzLgogIiIiCiAKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKQEAgLTY3LDcgKzY3LDcgQEAKIAogICAgIDpwYXJhbSBmaWxlOiBUaGUgc291cmNlIGZpbGUgbmFtZS4KICAgICA6cGFyYW0gY2ZpbGU6IFRoZSB0YXJnZXQgYnl0ZSBjb21waWxlZCBmaWxlIG5hbWUuICBXaGVuIG5vdCBnaXZlbiwgdGhpcwotICAgICAgICBkZWZhdWx0cyB0byB0aGUgUEVQIDMxNDcgbG9jYXRpb24uCisgICAgICAgIGRlZmF1bHRzIHRvIHRoZSBQRVAgMzE0Ny9QRVAgNDg4IGxvY2F0aW9uLgogICAgIDpwYXJhbSBkZmlsZTogUHVycG9ydGVkIGZpbGUgbmFtZSwgaS5lLiB0aGUgZmlsZSBuYW1lIHRoYXQgc2hvd3MgdXAgaW4KICAgICAgICAgZXJyb3IgbWVzc2FnZXMuICBEZWZhdWx0cyB0byB0aGUgc291cmNlIGZpbGUgbmFtZS4KICAgICA6cGFyYW0gZG9yYWlzZTogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBzaG91bGQgYmUKQEAgLTg1LDEyICs4NSwxMiBAQAogICAgIE5vdGUgdGhhdCBpdCBpc24ndCBuZWNlc3NhcnkgdG8gYnl0ZS1jb21waWxlIFB5dGhvbiBtb2R1bGVzIGZvcgogICAgIGV4ZWN1dGlvbiBlZmZpY2llbmN5IC0tIFB5dGhvbiBpdHNlbGYgYnl0ZS1jb21waWxlcyBhIG1vZHVsZSB3aGVuCiAgICAgaXQgaXMgbG9hZGVkLCBhbmQgaWYgaXQgY2FuLCB3cml0ZXMgb3V0IHRoZSBieXRlY29kZSB0byB0aGUKLSAgICBjb3JyZXNwb25kaW5nIC5weWMgKG9yIC5weW8pIGZpbGUuCisgICAgY29ycmVzcG9uZGluZyAucHljIGZpbGUuCiAKICAgICBIb3dldmVyLCBpZiBhIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdXNlcnMsIGl0IGlzIGEKICAgICBnb29kIGlkZWEgdG8gYnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIHVwb24gaW5zdGFsbGF0aW9uLCBzaW5jZQogICAgIG90aGVyIHVzZXJzIG1heSBub3QgYmUgYWJsZSB0byB3cml0ZSBpbiB0aGUgc291cmNlIGRpcmVjdG9yaWVzLAotICAgIGFuZCB0aHVzIHRoZXkgd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0aGUgLnB5Yy8ucHlvIGZpbGUsIGFuZCB0aGVuCisgICAgYW5kIHRodXMgdGhleSB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRoZSAucHljIGZpbGUsIGFuZCB0aGVuCiAgICAgdGhleSB3b3VsZCBiZSBieXRlLWNvbXBpbGluZyBldmVyeSBtb2R1bGUgZWFjaCB0aW1lIGl0IGlzIGxvYWRlZC4KICAgICBUaGlzIGNhbiBzbG93IGRvd24gcHJvZ3JhbSBzdGFydC11cCBjb25zaWRlcmFibHkuCiAKQEAgLTEwNSw4ICsxMDUsOSBAQAogICAgICIiIgogICAgIGlmIGNmaWxlIGlzIE5vbmU6CiAgICAgICAgIGlmIG9wdGltaXplID49IDA6CisgICAgICAgICAgICBvcHRpbWl6YXRpb24gPSBvcHRpbWl6ZSBpZiBvcHRpbWl6ZSA+PSAxIGVsc2UgJycKICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0aW1pemF0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlKQogICAgIGlmIG9zLnBhdGguaXNsaW5rKGNmaWxlKToKQEAgLTEzNiwxMCArMTM3LDEwIEBACiAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgcGFzcwogICAgIHNvdXJjZV9zdGF0cyA9IGxvYWRlci5wYXRoX3N0YXRzKGZpbGUpCi0gICAgYnl0ZWNvZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fY29kZV90b19ieXRlY29kZSgKKyAgICBieXRlY29kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9jb2RlX3RvX2J5dGVjb2RlKAogICAgICAgICAgICAgY29kZSwgc291cmNlX3N0YXRzWydtdGltZSddLCBzb3VyY2Vfc3RhdHNbJ3NpemUnXSkKLSAgICBtb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXAuX2NhbGNfbW9kZShmaWxlKQotICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl93cml0ZV9hdG9taWMoY2ZpbGUsIGJ5dGVjb2RlLCBtb2RlKQorICAgIG1vZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY2FsY19tb2RlKGZpbGUpCisgICAgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3dyaXRlX2F0b21pYyhjZmlsZSwgYnl0ZWNvZGUsIG1vZGUpCiAgICAgcmV0dXJuIGNmaWxlCiAKIApkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5CmluZGV4IDBjN2I2MGQuLmVlNTU4YmYgMTAwNzU1Ci0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTUzLDYgKzUzLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbAogaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IGluc3BlY3QKQEAgLTIxMyw3ICsyMTQsNyBAQAogZGVmIGlzcGFja2FnZShwYXRoKToKICAgICAiIiJHdWVzcyB3aGV0aGVyIGEgcGF0aCByZWZlcnMgdG8gYSBwYWNrYWdlIGRpcmVjdG9yeS4iIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgorICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihwYXRoLCAnX19pbml0X18nICsgZXh0KSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKQEAgLTI2NCw5ICsyNjUsOCBAQAogICAgICAgICAgICAgIyBYWFggV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBwYXNzIGluIHRoZSBsb2FkZXIgaGVyZS4KICAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbignX190ZW1wX18nLCBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXI9bG9hZGVyKQotICAgICAgICAgICAgX3NwZWMgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBfc3BlYy5sb2FkKCkKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ19fdGVtcF9fJ10KQEAgLTI5MywxNCArMjkzLDEzIEBACiAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCiAgICAgbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKICAgICBpZiBpc19ieXRlY29kZToKLSAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aCkKICAgICBlbHNlOgotICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkKICAgICAjIFhYWCBXZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIHBhc3MgaW4gdGhlIGxvYWRlciBoZXJlLgogICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRoLCBsb2FkZXI9bG9hZGVyKQotICAgIF9zcGVjID0gaW1wb3J0bGliLl9ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gX3NwZWMubG9hZCgpCisgICAgICAgIHJldHVybiBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgIGV4Y2VwdDoKICAgICAgICAgcmFpc2UgRXJyb3JEdXJpbmdJbXBvcnQocGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAKQEAgLTE1OTEsNyArMTU5MCwxMCBAQAogICAgIGlmIGlzaW5zdGFuY2UodGhpbmcsIHN0cik6CiAgICAgICAgIG9iamVjdCA9IGxvY2F0ZSh0aGluZywgZm9yY2Vsb2FkKQogICAgICAgICBpZiBvYmplY3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXInICUgdGhpbmcpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignJydcCitObyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXIuCitVc2UgaGVscCgpIHRvIGdldCB0aGUgaW50ZXJhY3RpdmUgaGVscCB1dGlsaXR5LgorVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJyAlIHRoaW5nKQogICAgICAgICByZXR1cm4gb2JqZWN0LCB0aGluZwogICAgIGVsc2U6CiAgICAgICAgIG5hbWUgPSBnZXRhdHRyKHRoaW5nLCAnX19uYW1lX18nLCBOb25lKQpAQCAtMTYzOCw5ICsxNjQwLDggQEAKICAgICB0cnk6CiAgICAgICAgIG9iamVjdCwgbmFtZSA9IHJlc29sdmUodGhpbmcsIGZvcmNlbG9hZCkKICAgICAgICAgcGFnZSA9IGh0bWwucGFnZShkZXNjcmliZShvYmplY3QpLCBodG1sLmRvY3VtZW50KG9iamVjdCwgbmFtZSkpCi0gICAgICAgIGZpbGUgPSBvcGVuKG5hbWUgKyAnLmh0bWwnLCAndycsIGVuY29kaW5nPSd1dGYtOCcpCi0gICAgICAgIGZpbGUud3JpdGUocGFnZSkKLSAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihuYW1lICsgJy5odG1sJywgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShwYWdlKQogICAgICAgICBwcmludCgnd3JvdGUnLCBuYW1lICsgJy5odG1sJykKICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFcnJvckR1cmluZ0ltcG9ydCkgYXMgdmFsdWU6CiAgICAgICAgIHByaW50KHZhbHVlKQpAQCAtMTgzNSw3ICsxODM2LDggQEAKICAgICAgICAgaWYgaW5zcGVjdC5zdGFjaygpWzFdWzNdID09ICc/JzoKICAgICAgICAgICAgIHNlbGYoKQogICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIHJldHVybiAnPHB5ZG9jLkhlbHBlciBpbnN0YW5jZT4nCisgICAgICAgIHJldHVybiAnPCVzLiVzIGluc3RhbmNlPicgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pCiAKICAgICBfR29JbnRlcmFjdGl2ZSA9IG9iamVjdCgpCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHJlcXVlc3Q9X0dvSW50ZXJhY3RpdmUpOgpAQCAtMTg2MSw3ICsxODYzLDEwIEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHJlcXVlc3QgPSByZXBsYWNlKHJlcXVlc3QsICciJywgJycsICInIiwgJycpLnN0cmlwKCkKICAgICAgICAgICAgIGlmIHJlcXVlc3QubG93ZXIoKSBpbiAoJ3EnLCAncXVpdCcpOiBicmVhawotICAgICAgICAgICAgc2VsZi5oZWxwKHJlcXVlc3QpCisgICAgICAgICAgICBpZiByZXF1ZXN0ID09ICdoZWxwJzoKKyAgICAgICAgICAgICAgICBzZWxmLmludHJvKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5oZWxwKHJlcXVlc3QpCiAKICAgICBkZWYgZ2V0bGluZShzZWxmLCBwcm9tcHQpOgogICAgICAgICAiIiJSZWFkIG9uZSBsaW5lLCB1c2luZyBpbnB1dCgpIHdoZW4gYXBwcm9wcmlhdGUuIiIiCkBAIC0xODc1LDggKzE4ODAsNyBAQAogICAgIGRlZiBoZWxwKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBpZiB0eXBlKHJlcXVlc3QpIGlzIHR5cGUoJycpOgogICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3Quc3RyaXAoKQotICAgICAgICAgICAgaWYgcmVxdWVzdCA9PSAnaGVscCc6IHNlbGYuaW50cm8oKQotICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICdrZXl3b3Jkcyc6IHNlbGYubGlzdGtleXdvcmRzKCkKKyAgICAgICAgICAgIGlmIHJlcXVlc3QgPT0gJ2tleXdvcmRzJzogc2VsZi5saXN0a2V5d29yZHMoKQogICAgICAgICAgICAgZWxpZiByZXF1ZXN0ID09ICdzeW1ib2xzJzogc2VsZi5saXN0c3ltYm9scygpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ3RvcGljcyc6IHNlbGYubGlzdHRvcGljcygpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ21vZHVsZXMnOiBzZWxmLmxpc3Rtb2R1bGVzKCkKQEAgLTE4ODksNiArMTg5Myw3IEBACiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgaW4gc2VsZi5rZXl3b3Jkczogc2VsZi5zaG93dG9waWMocmVxdWVzdCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdCBpbiBzZWxmLnRvcGljczogc2VsZi5zaG93dG9waWMocmVxdWVzdCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdDogZG9jKHJlcXVlc3QsICdIZWxwIG9uICVzOicsIG91dHB1dD1zZWxmLl9vdXRwdXQpCisgICAgICAgICAgICBlbHNlOiBkb2Moc3RyLCAnSGVscCBvbiAlczonLCBvdXRwdXQ9c2VsZi5fb3V0cHV0KQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UocmVxdWVzdCwgSGVscGVyKTogc2VsZigpCiAgICAgICAgIGVsc2U6IGRvYyhyZXF1ZXN0LCAnSGVscCBvbiAlczonLCBvdXRwdXQ9c2VsZi5fb3V0cHV0KQogICAgICAgICBzZWxmLm91dHB1dC53cml0ZSgnXG4nKQpAQCAtMjA4NCw5ICsyMDg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBOb25lCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX3NwZWMgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gX3NwZWMubG9hZCgpCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fbG9hZChzcGVjKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCBlNTRiNmRkLi5mNjZkZDYyIDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDc5ICsxLDEyODgxIEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBTdW4gRmViIDIyIDIzOjUyOjA1IDIwMTUKLXRvcGljcyA9IHsnYXNzZXJ0JzogdSdcblRoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyBhc3NlcnRpb25zXG5pbnRvIGEgcHJvZ3JhbTpcblxuICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuXG5UaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgaWYgbm90IGV4cHJlc3Npb24xOiByYWlzZSBBc3NlcnRpb25FcnJvcihleHByZXNzaW9uMilcblxuVGhlc2UgZXF1aXZhbGVuY2VzIGFzc3VtZSB0aGF0ICJfX2RlYnVnX18iIGFuZCAiQXNzZXJ0aW9uRXJyb3IiIHJlZmVyXG50byB0aGUgYnVpbHQtaW4gdmFyaWFibGVzIHdpdGggdGhvc2UgbmFtZXMuICBJbiB0aGUgY3VycmVudFxuaW1wbGVtZW50YXRpb24sIHRoZSBidWlsdC1pbiB2YXJpYWJsZSAiX19kZWJ1Z19fIiBpcyAiVHJ1ZSIgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCAiRmFsc2UiIHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCAoY29tbWFuZFxubGluZSBvcHRpb24gLU8pLiAgVGhlIGN1cnJlbnQgY29kZSBnZW5lcmF0b3IgZW1pdHMgbm8gY29kZSBmb3IgYW5cbmFzc2VydCBzdGF0ZW1lbnQgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIGF0IGNvbXBpbGUgdGltZS4gIE5vdGVcbnRoYXQgaXQgaXMgdW5uZWNlc3NhcnkgdG8gaW5jbHVkZSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBleHByZXNzaW9uXG50aGF0IGZhaWxlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZTsgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgcGFydCBvZiB0aGVcbnN0YWNrIHRyYWNlLlxuXG5Bc3NpZ25tZW50cyB0byAiX19kZWJ1Z19fIiBhcmUgaWxsZWdhbC4gIFRoZSB2YWx1ZSBmb3IgdGhlIGJ1aWx0LWluXG52YXJpYWJsZSBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGludGVycHJldGVyIHN0YXJ0cy5cbicsCi0gJ2Fzc2lnbm1lbnQnOiB1J1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0OiBUaGUgb2JqZWN0IGlzIGFzc2lnbmVkIHRvXG4gIHRoYXQgdGFyZ2V0LlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHM6IFRoZVxuICBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyB0aGVyZVxuICBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlIGFzc2lnbmVkLCBmcm9tXG4gIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuXG4gICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSBhIHNlcXVlbmNlXG4gICAgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgICBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCxcbiAgICBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZCB0YXJnZXQuICBUaGVcbiAgICBmaW5hbCBpdGVtcyBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXRzIGFmdGVyIHRoZVxuICAgIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXMgaW4gdGhlIHNlcXVlbmNlIGlzXG4gICAgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0IGNhbiBiZSBlbXB0eSkuXG5cbiAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHRhcmdldCBsaXN0IGVuY2xvc2VkIGluIHBhcmVudGhlc2VzIG9yIGluXG4gIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyXG4gIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIGl0cyBpdGVtcyBhcmVcbiAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2U6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW5cbiAgdGhlIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYW4gb2JqZWN0IHdpdGhcbiAgYXNzaWduYWJsZSBhdHRyaWJ1dGVzOyBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgIlR5cGVFcnJvciIgaXNcbiAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0b1xuICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgcmFpc2VzXG4gIGFuIGV4Y2VwdGlvbiAodXN1YWxseSBidXQgbm90IG5lY2Vzc2FyaWx5ICJBdHRyaWJ1dGVFcnJvciIpLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyBpbnN0YW5jZVxuICBhdHRyaWJ1dGUgZXhpc3RzKSBhIGNsYXNzIGF0dHJpYnV0ZS4gIFRoZSBMSFMgdGFyZ2V0ICJhLngiIGlzIGFsd2F5c1xuICBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuICBUaHVzLCB0aGVcbiAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgc2FtZVxuICBhdHRyaWJ1dGU6IGlmIHRoZSBSSFMgZXhwcmVzc2lvbiByZWZlcnMgdG8gYSBjbGFzcyBhdHRyaWJ1dGUsIHRoZVxuICBMSFMgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBhdHRyaWJ1dGUgYXMgdGhlIHRhcmdldCBvZiB0aGVcbiAgYXNzaWdubWVudDpcblxuICAgICBjbGFzcyBDbHM6XG4gICAgICAgICB4ID0gMyAgICAgICAgICAgICAjIGNsYXNzIHZhcmlhYmxlXG4gICAgIGluc3QgPSBDbHMoKVxuICAgICBpbnN0LnggPSBpbnN0LnggKyAxICAgIyB3cml0ZXMgaW5zdC54IGFzIDQgbGVhdmluZyBDbHMueCBhcyAzXG5cbiAgVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBuZWNlc3NhcmlseSBhcHBseSB0byBkZXNjcmlwdG9yXG4gIGF0dHJpYnV0ZXMsIHN1Y2ggYXMgcHJvcGVydGllcyBjcmVhdGVkIHdpdGggInByb3BlcnR5KCkiLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSBzZXF1ZW5jZVxuICBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSBvciBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSkuXG4gIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgeWllbGQgYW4gaW50ZWdlci4gIElmIGl0IGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmVcbiAgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSBpcyBhc2tlZFxuICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICBJZiB0aGVcbiAgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiSW5kZXhFcnJvciIgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgIl9fc2V0aXRlbV9fKCkiIG1ldGhvZCBpcyBjYWxsZWQgd2l0aFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdFxuICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvYmplY3RcbiAgb2YgdGhlIHNhbWUgdHlwZS4gIE5leHQsIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgZXhwcmVzc2lvbnMgYXJlXG4gIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgdGhlXG4gIHNlcXVlbmNlXCdzIGxlbmd0aC4gIFRoZSBib3VuZHMgc2hvdWxkIGV2YWx1YXRlIHRvIGludGVnZXJzLiBJZlxuICBlaXRoZXIgYm91bmQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGVcbiAgcmVzdWx0aW5nIGJvdW5kcyBhcmUgY2xpcHBlZCB0byBsaWUgYmV0d2VlbiB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvIHJlcGxhY2VcbiAgdGhlIHNsaWNlIHdpdGggdGhlIGl0ZW1zIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZS4gIFRoZSBsZW5ndGggb2ZcbiAgdGhlIHNsaWNlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbGVuZ3RoIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZSxcbiAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSB0YXJnZXRcbiAgc2VxdWVuY2UgYWxsb3dzIGl0LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGVcbnN5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsIGFuZFxuaW52YWxpZCBzeW50YXggaXMgcmVqZWN0ZWQgZHVyaW5nIHRoZSBjb2RlIGdlbmVyYXRpb24gcGhhc2UsIGNhdXNpbmdcbmxlc3MgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMuXG5cbkFsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzIGJldHdlZW5cbnRoZSBsZWZ0LWhhbmQgc2lkZSBhbmQgdGhlIHJpZ2h0LWhhbmQgc2lkZSBhcmUgXCdzaW11bHRhbmVub3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0IHRocmVlXG5zeW1ib2xzLilcblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2Ugbm9ybWFsXG5hc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgZXhwcmVzc2lvblxubGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYXNzaWdubWVudFxub24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxuVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlIHJld3JpdHRlbiBhc1xuInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluIHRoZVxuYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuIHBvc3NpYmxlLFxudGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCByYXRoZXIgdGhhblxuY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkIG9iamVjdFxuaXMgbW9kaWZpZWQgaW5zdGVhZC5cblxuVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSBsZWZ0LVxuaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciBleGFtcGxlLCAiYVtpXVxuKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kIHBlcmZvcm1zXG50aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYXRvbS1pZGVudGlmaWVycyc6IHUnXG5JZGVudGlmaWVycyAoTmFtZXMpXG4qKioqKioqKioqKioqKioqKioqXG5cbkFuIGlkZW50aWZpZXIgb2NjdXJyaW5nIGFzIGFuIGF0b20gaXMgYSBuYW1lLiAgU2VlIHNlY3Rpb25cbipJZGVudGlmaWVycyBhbmQga2V5d29yZHMqIGZvciBsZXhpY2FsIGRlZmluaXRpb24gYW5kIHNlY3Rpb24gKk5hbWluZ1xuYW5kIGJpbmRpbmcqIGZvciBkb2N1bWVudGF0aW9uIG9mIG5hbWluZyBhbmQgYmluZGluZy5cblxuV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlIGF0b20geWllbGRzXG50aGF0IG9iamVjdC4gV2hlbiBhIG5hbWUgaXMgbm90IGJvdW5kLCBhbiBhdHRlbXB0IHRvIGV2YWx1YXRlIGl0XG5yYWlzZXMgYSAiTmFtZUVycm9yIiBleGNlcHRpb24uXG5cbioqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0IHRleHR1YWxseSBvY2N1cnMgaW5cbmEgY2xhc3MgZGVmaW5pdGlvbiBiZWdpbnMgd2l0aCB0d28gb3IgbW9yZSB1bmRlcnNjb3JlIGNoYXJhY3RlcnMgYW5kXG5kb2VzIG5vdCBlbmQgaW4gdHdvIG9yIG1vcmUgdW5kZXJzY29yZXMsIGl0IGlzIGNvbnNpZGVyZWQgYSAqcHJpdmF0ZVxubmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSBsb25nZXIgZm9ybVxuYmVmb3JlIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGVtLiAgVGhlIHRyYW5zZm9ybWF0aW9uIGluc2VydHMgdGhlXG5jbGFzcyBuYW1lLCB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgcmVtb3ZlZCBhbmQgYSBzaW5nbGUgdW5kZXJzY29yZVxuaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSBpZGVudGlmaWVyICJfX3NwYW0iXG5vY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCAiSGFtIiB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvICJfSGFtX19zcGFtIi5cblRoaXMgdHJhbnNmb3JtYXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2hcbnRoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZ1xuKGxvbmdlciB0aGFuIDI1NSBjaGFyYWN0ZXJzKSwgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heVxuaGFwcGVuLiBJZiB0aGUgY2xhc3MgbmFtZSBjb25zaXN0cyBvbmx5IG9mIHVuZGVyc2NvcmVzLCBub1xudHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCi0gJ2F0b20tbGl0ZXJhbHMnOiB1IlxuTGl0ZXJhbHNcbioqKioqKioqXG5cblB5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzIG51bWVyaWNcbmxpdGVyYWxzOlxuXG4gICBsaXRlcmFsIDo6PSBzdHJpbmdsaXRlcmFsIHwgYnl0ZXNsaXRlcmFsXG4gICAgICAgICAgICAgICB8IGludGVnZXIgfCBmbG9hdG51bWJlciB8IGltYWdudW1iZXJcblxuRXZhbHVhdGlvbiBvZiBhIGxpdGVyYWwgeWllbGRzIGFuIG9iamVjdCBvZiB0aGUgZ2l2ZW4gdHlwZSAoc3RyaW5nLFxuYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggdGhlIGdpdmVuXG52YWx1ZS4gIFRoZSB2YWx1ZSBtYXkgYmUgYXBwcm94aW1hdGVkIGluIHRoZSBjYXNlIG9mIGZsb2F0aW5nIHBvaW50XG5hbmQgaW1hZ2luYXJ5IChjb21wbGV4KSBsaXRlcmFscy4gIFNlZSBzZWN0aW9uICpMaXRlcmFscyogZm9yIGRldGFpbHMuXG5cbkFsbCBsaXRlcmFscyBjb3JyZXNwb25kIHRvIGltbXV0YWJsZSBkYXRhIHR5cGVzLCBhbmQgaGVuY2UgdGhlXG5vYmplY3QncyBpZGVudGl0eSBpcyBsZXNzIGltcG9ydGFudCB0aGFuIGl0cyB2YWx1ZS4gIE11bHRpcGxlXG5ldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlIHNhbWVcbm9jY3VycmVuY2UgaW4gdGhlIHByb2dyYW0gdGV4dCBvciBhIGRpZmZlcmVudCBvY2N1cnJlbmNlKSBtYXkgb2J0YWluXG50aGUgc2FtZSBvYmplY3Qgb3IgYSBkaWZmZXJlbnQgb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUuXG4iLAotICdhdHRyaWJ1dGUtYWNjZXNzJzogdSdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5UaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgbW9kdWxlIGFzXG5zcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzXG5hcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3NcbmF0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSBvZiB0aGVcbmdpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSBmaXJzdFxucG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzIGF0dHJpYnV0ZSBmb3JcbnVuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAiYS54Ii4gSG93XG50aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICpfX3Nsb3RzX18qXG4gICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlXG4gICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaFxuICAgaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAiQXR0cmlidXRlRXJyb3IiLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKLSAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiB1J1xuQXR0cmlidXRlIHJlZmVyZW5jZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgcGVyaW9kIGFuZCBhIG5hbWU6XG5cbiAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgdGhhdCBzdXBwb3J0c1xuYXR0cmlidXRlIHJlZmVyZW5jZXMsIHdoaWNoIG1vc3Qgb2JqZWN0cyBkby4gIFRoaXMgb2JqZWN0IGlzIHRoZW5cbmFza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSBpZGVudGlmaWVyLiAgVGhpc1xucHJvZHVjdGlvbiBjYW4gYmUgY3VzdG9taXplZCBieSBvdmVycmlkaW5nIHRoZSAiX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiAiQXR0cmlidXRlRXJyb3IiIGlzXG5yYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0IHByb2R1Y2VkIGlzXG5kZXRlcm1pbmVkIGJ5IHRoZSBvYmplY3QuICBNdWx0aXBsZSBldmFsdWF0aW9ucyBvZiB0aGUgc2FtZSBhdHRyaWJ1dGVcbnJlZmVyZW5jZSBtYXkgeWllbGQgZGlmZmVyZW50IG9iamVjdHMuXG4nLAotICdhdWdhc3NpZ24nOiB1J1xuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0IHRocmVlXG5zeW1ib2xzLilcblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2Ugbm9ybWFsXG5hc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgZXhwcmVzc2lvblxubGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYXNzaWdubWVudFxub24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxuVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlIHJld3JpdHRlbiBhc1xuInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluIHRoZVxuYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuIHBvc3NpYmxlLFxudGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCByYXRoZXIgdGhhblxuY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkIG9iamVjdFxuaXMgbW9kaWZpZWQgaW5zdGVhZC5cblxuVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSBsZWZ0LVxuaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciBleGFtcGxlLCAiYVtpXVxuKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kIHBlcmZvcm1zXG50aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYmluYXJ5JzogdSdcbkJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG5sZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiBub24tXG5udW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xubGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxub3BlcmF0b3JzOlxuXG4gICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICIvLyIgdV9leHByIHwgbV9leHByICIvIiB1X2V4cHJcbiAgICAgICAgICAgICAgfCBtX2V4cHIgIiUiIHVfZXhwclxuICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG5cblRoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSBhblxuaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbm51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuXG5JbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG5yZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uXG5cblRoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICI0KjAuNyArXG4wLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgc2FtZSBzaWduXG5hcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCBpc1xuc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogInggPT0gKHgvL3kpKnkgKyAoeCV5KSIuICBGbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIGFyZSBhbHNvXG5jb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjogImRpdm1vZCh4LCB5KSA9PVxuKHgvL3ksIHgleSkiLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlICIlIlxub3BlcmF0b3IgaXMgYWxzbyBvdmVybG9hZGVkIGJ5IHN0cmluZyBvYmplY3RzIHRvIHBlcmZvcm0gb2xkLXN0eWxlXG5zdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gIFRoZSBzeW50YXggZm9yXG5zdHJpbmcgZm9ybWF0dGluZyBpcyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZSxcbnNlY3Rpb24gKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyouXG5cblRoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSAiZGl2bW9kKCkiXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSAiYWJzKCkiIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgIisiIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gIFRoZVxuYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIGJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZVxudHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlXG5hbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgIi0iIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLlxuJywKLSAnYml0d2lzZSc6IHUnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoIG11c3RcbmJlIGludGVnZXJzLlxuXG5UaGUgIl4iIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBYT1IgKGV4Y2x1c2l2ZSBPUikgb2YgaXRzXG5hcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG5cblRoZSAifCIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKLSAnYmx0aW4tY29kZS1vYmplY3RzJzogdSdcbkNvZGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cbkNvZGUgb2JqZWN0cyBhcmUgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gdG8gcmVwcmVzZW50ICJwc2V1ZG8tXG5jb21waWxlZCIgZXhlY3V0YWJsZSBQeXRob24gY29kZSBzdWNoIGFzIGEgZnVuY3Rpb24gYm9keS4gVGhleSBkaWZmZXJcbmZyb20gZnVuY3Rpb24gb2JqZWN0cyBiZWNhdXNlIHRoZXkgZG9uXCd0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlaXJcbmdsb2JhbCBleGVjdXRpb24gZW52aXJvbm1lbnQuICBDb2RlIG9iamVjdHMgYXJlIHJldHVybmVkIGJ5IHRoZSBidWlsdC1cbmluICJjb21waWxlKCkiIGZ1bmN0aW9uIGFuZCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gZnVuY3Rpb24gb2JqZWN0c1xudGhyb3VnaCB0aGVpciAiX19jb2RlX18iIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlICJjb2RlIiBtb2R1bGUuXG5cbkEgY29kZSBvYmplY3QgY2FuIGJlIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCBieSBwYXNzaW5nIGl0IChpbnN0ZWFkIG9mIGFcbnNvdXJjZSBzdHJpbmcpIHRvIHRoZSAiZXhlYygpIiBvciAiZXZhbCgpIiAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiB1J1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG4iRWxsaXBzaXMiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoRWxsaXBzaXMpKCkiIHByb2R1Y2VzIHRoZVxuIkVsbGlwc2lzIiBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgIkVsbGlwc2lzIiBvciAiLi4uIi5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogdSdcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVybiBhXG52YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIG51bGxcbm9iamVjdCwgbmFtZWQgIk5vbmUiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoTm9uZSkoKSIgcHJvZHVjZXMgdGhlXG5zYW1lIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiTm9uZSIuXG4nLAotICdibHRpbi10eXBlLW9iamVjdHMnOiB1J1xuVHlwZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuVHlwZSBvYmplY3RzIHJlcHJlc2VudCB0aGUgdmFyaW91cyBvYmplY3QgdHlwZXMuICBBbiBvYmplY3RcJ3MgdHlwZSBpc1xuYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJ0eXBlKCkiLiAgVGhlcmUgYXJlIG5vIHNwZWNpYWxcbm9wZXJhdGlvbnMgb24gdHlwZXMuICBUaGUgc3RhbmRhcmQgbW9kdWxlICJ0eXBlcyIgZGVmaW5lcyBuYW1lcyBmb3JcbmFsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cblxuVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPGNsYXNzIFwnaW50XCc+Ii5cbicsCi0gJ2Jvb2xlYW5zJzogdSdcbkJvb2xlYW4gb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqXG5cbiAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbiAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcblxuSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zIGFyZVxudXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyBmYWxzZTogIkZhbHNlIiwgIk5vbmUiLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbnN0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuZGljdGlvbmFyaWVzLCBzZXRzIGFuZCBmcm96ZW5zZXRzKS4gIEFsbCBvdGhlciB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyB0cnVlLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIGN1c3RvbWl6ZSB0aGVpciB0cnV0aCB2YWx1ZSBieVxucHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cblxuVGhlIG9wZXJhdG9yICJub3QiIHlpZWxkcyAiVHJ1ZSIgaWYgaXRzIGFyZ3VtZW50IGlzIGZhbHNlLCAiRmFsc2UiXG5vdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsIGl0c1xudmFsdWUgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZVxuaXMgcmV0dXJuZWQuXG5cblRoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgdmFsdWVcbmlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWUgaXNcbnJldHVybmVkLlxuXG4oTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlIHRoZXlcbnJldHVybiB0byAiRmFsc2UiIGFuZCAiVHJ1ZSIsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmICJzIiBpcyBhIHN0cmluZyB0aGF0XG5zaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgZXhwcmVzc2lvblxuInMgb3IgXCdmb29cJyIgeWllbGRzIHRoZSBkZXNpcmVkIHZhbHVlLiAgQmVjYXVzZSAibm90IiBoYXMgdG8gY3JlYXRlIGFcbm5ldyB2YWx1ZSwgaXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiBpdHNcbmFyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciB0aGFuICJcJ1wnIi4pXG4nLAotICdicmVhayc6IHUnXG5UaGUgImJyZWFrIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBicmVha19zdG10IDo6PSAiYnJlYWsiXG5cbiJicmVhayIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbmxvb3AuXG5cbkl0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAiZWxzZSJcbmNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhICJmb3IiIGxvb3AgaXMgdGVybWluYXRlZCBieSAiYnJlYWsiLCB0aGUgbG9vcCBjb250cm9sIHRhcmdldFxua2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG5cbldoZW4gImJyZWFrIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICJmaW5hbGx5IlxuY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nIHRoZVxubG9vcC5cbicsCi0gJ2NhbGxhYmxlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAotICdjYWxscyc6IHUnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhICpmdW5jdGlvbiopIHdpdGggYSBwb3NzaWJseVxuZW1wdHkgc2VyaWVzIG9mICphcmd1bWVudHMqOlxuXG4gICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCBjb21wcmVoZW5zaW9uXSAiKSJcbiAgIGFyZ3VtZW50X2xpc3QgICAgICAgIDo6PSBwb3NpdGlvbmFsX2FyZ3VtZW50cyBbIiwiIGtleXdvcmRfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqIiBleHByZXNzaW9uXSBbIiwiIGtleXdvcmRfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZF9hcmd1bWVudHMgWyIsIiAiKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqIiBleHByZXNzaW9uIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCAiKioiIGV4cHJlc3Npb25cbiAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBleHByZXNzaW9uICgiLCIgZXhwcmVzc2lvbikqXG4gICBrZXl3b3JkX2FyZ3VtZW50cyAgICA6Oj0ga2V5d29yZF9pdGVtICgiLCIga2V5d29yZF9pdGVtKSpcbiAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG5cbkFuIG9wdGlvbmFsIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZFxua2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG4iX19jYWxsX18oKSIgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbmJlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoIHRoZVxuY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAoRGVmYXVsdFxudmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG5tdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSB3aWxsXG5iZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uXCd0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yIHRoZVxuY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlIGFueVxudW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhICJUeXBlRXJyb3IiXG5leGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCBhc1xudGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvIHBhcnNlXG50aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIioqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSBub1xuZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuXG5JZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgImV4cHJlc3Npb24iXG5tdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzIGl0ZXJhYmxlIGFyZSB0cmVhdGVkXG5hcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50czsgaWYgdGhlcmUgYXJlXG5wb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCAiZXhwcmVzc2lvbiIgZXZhbHVhdGVzIHRvIGFcbnNlcXVlbmNlICp5MSosIC4uLiwgKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rTlxucG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCAqeTEqLCAuLi4sICp5TSouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiB0aGVcbmtleXdvcmQgYXJndW1lbnRzIChhbmQgdGhlICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgIipleHByZXNzaW9uIiBzeW50YXhcbnRvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lcyBub3RcbmFyaXNlLlxuXG5JZiB0aGUgc3ludGF4ICIqKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG4iZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuYXBwZWFyaW5nIGluIGJvdGggImV4cHJlc3Npb24iIGFuZCBhcyBhbiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50LCBhXG4iVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuXG5Gb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciJcbmNhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxubmFtZXMuXG5cbkEgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgKkZ1bmN0aW9uIGRlZmluaXRpb25zKi4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSAicmV0dXJuIlxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSAiX19jYWxsX18oKSIgbWV0aG9kOyB0aGUgZWZmZWN0IGlzIHRoZW4gdGhlXG4gICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAotICdjbGFzcyc6IHUnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuIElmIGJvdGggYXJlXG5udW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgdGhlICI9PSIgYW5kXG4iIT0iIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0byBiZVxudW5lcXVhbCwgd2hpbGUgdGhlICI8IiwgIj4iLCAiPj0iIGFuZCAiPD0iIG9wZXJhdG9ycyByYWlzZSBhXG4iVHlwZUVycm9yIiB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0aGF0IGRvIG5vdFxuaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2YgdHlwZXMuICBZb3UgY2FuXG5jb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW4gdHlwZXMgYnlcbmRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgIl9fZ3RfXygpIiwgZGVzY3JpYmVkIGluIHNlY3Rpb25cbipCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgInggaXMgeCIgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgInggIT0geCIuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi4gIEZvciBleGFtcGxlLCBib3RoICIzIDxcbiAgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsIHJldHVybiAiRmFsc2UiLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgdGhlaXJcbiAgY2hhcmFjdGVycy4gWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uXG4gIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iIGhhcyB0aGUgc2FtZVxuICB2YWx1ZSBhcyAieCA8PSB5Ii4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QsIHRoZVxuICBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPCBbMSwyLDNdIikuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgIihrZXksIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zICIoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJykiIHJhaXNlICJUeXBlRXJyb3IiLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzICJ7MSwyfSIgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbiAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleVxuICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkXG4gIHNtYWxsZXIgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXRcbiAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyIG9mXG50aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3QgbnVtZXJpY1xudHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpc1xubm90IHN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgIk5vdEltcGxlbWVudGVkIi5cblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuXG5UaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggaXMgeSIgaXNcbnRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzIG5vdCB5IlxueWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCi0gJ2NvbXBvdW5kJzogdSdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCBjb250cm9sXG5mbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwXG5jb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50IGFsbG93cyB0aGVcbmV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgb2ZcbmNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZFxuc3RhdGVtZW50cy5cblxuQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggImlmIiBjbGF1c2UgYSBmb2xsb3dpbmcgImVsc2UiIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQoKSIgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhICJORVdMSU5FIiBwb3NzaWJseSBmb2xsb3dlZCBieSBhXG4iREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlICJmb3IiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4gICAgdGhlcmUgaXMgYSAiZmluYWxseSIgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlclxuICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mXG4gICAgYW4gZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiwgImNvbnRpbnVlIiwgb3JcbiAgICAiYnJlYWsiIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlXG4gICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAotICdjb250ZXh0LW1hbmFnZXJzJzogdSdcbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ2NvbnRpbnVlJzogdSdcblRoZSAiY29udGludWUiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcblxuImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvciAiZmluYWxseSJcbmNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGUgb2YgdGhlXG5uZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuICJjb250aW51ZSIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYVxuImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbnN0YXJ0aW5nIHRoZSBuZXh0IGxvb3AgY3ljbGUuXG4nLAotICdjb252ZXJzaW9ucyc6IHUnXG5Bcml0aG1ldGljIGNvbnZlcnNpb25zXG4qKioqKioqKioqKioqKioqKioqKioqXG5cbldoZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlIHBocmFzZVxuInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzIG1lYW5zXG50aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgYXMgZm9sbG93czpcblxuKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzIGNvbnZlcnRlZCB0b1xuICBjb21wbGV4O1xuXG4qIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB0aGVcbiAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuXG4qIG90aGVyd2lzZSwgYm90aCBtdXN0IGJlIGludGVnZXJzIGFuZCBubyBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS5cblxuU29tZSBhZGRpdGlvbmFsIHJ1bGVzIGFwcGx5IGZvciBjZXJ0YWluIG9wZXJhdG9ycyAoZS5nLiwgYSBzdHJpbmcgYXMgYVxubGVmdCBhcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAotICdjdXN0b21pemF0aW9uJzogdSdcbkJhc2ljIGN1c3RvbWl6YXRpb25cbioqKioqKioqKioqKioqKioqKipcblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICJfX25ld19fKCkiIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseSBhblxuICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbiAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICJfX25ld19fKCkiLlxuXG4gICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICJfX25ld19fKCkiKSwgYnV0XG4gICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgbWV0aG9kLCBpZlxuICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoZVxuICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuXG4gICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiBjb25zdHJ1Y3RpbmdcbiAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byBjdXN0b21pc2VcbiAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiIG1ldGhvZCwgdGhlXG4gICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdFxuICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZS5cbiAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciB0aGVcbiAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXIgaXNcbiAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWUgY29tbW9uXG4gICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBmcm9tXG4gICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuIG9iamVjdHMgKGUuZy4sXG4gICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoIHBhcmVudCBhbmRcbiAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSBvZlxuICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhIHJlZmVyZW5jZVxuICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiB1bmhhbmRsZWRcbiAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvIHRoZVxuICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSB0aGlyZCBjYW5cbiAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuIENpcmN1bGFyXG4gICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkIHVwIHdoZW4gdGhlXG4gICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieSBkZWZhdWx0KS4gUmVmZXJcbiAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgICBhYm91dCB0aGlzIHRvcGljLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaFxuICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nXG4gICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvXG4gICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzIGludm9rZWQgaW5cbiAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlXG4gICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgIl9fZGVsX18oKSJcbiAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nXG4gICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzXG4gICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkXG4gICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LFxuICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAib2ZmaWNpYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCB0aGlzXG4gICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkIHRvXG4gICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAiX19yZXByX18oKSIgYnV0XG4gICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICJpbmZvcm1hbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZm9ybWF0KCkiIGFuZFxuICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSBzdHJpbmdcbiAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICpzdHJpbmcqXG4gICBvYmplY3QuXG5cbiAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGFcbiAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuXG4gICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICJvYmplY3QiXG4gICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBvZiBjbGFzcyAic3RyIikgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhXG4gICBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0b1xuICAgdGhlIHR5cGUgaW1wbGVtZW50aW5nICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsXG4gICBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYVxuICAgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICJvYmplY3QiIGl0c2VsZlxuICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAieC5fX2xlX18oeSkiLFxuICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAieD55IiBjYWxsc1xuICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICJOb3RJbXBsZW1lbnRlZCJcbiAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgb2ZcbiAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSByZXR1cm5lZCBmb3IgYVxuICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gYW55IHZhbHVlLFxuICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gY29udGV4dCAoZS5nLixcbiAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICJib29sKCkiXG4gICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgIng9PXkiIGRvZXMgbm90IGltcGx5IHRoYXQgInghPXkiIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgIl9fZXFfXygpIiwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgIl9fbmVfXygpIiBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBTZWUgdGhlXG4gICBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvbiBjcmVhdGluZ1xuICAgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBhbmRcbiAgIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uXG5cbiAgIEFyZ3VtZW50cyB0byByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBhcmUgbmV2ZXIgY29lcmNlZC5cblxuICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdFxuICAgb3BlcmF0aW9uLCBzZWUgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgb24gbWVtYmVyc1xuICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAiZGljdCIuXG4gICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaFxuICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgcGFydCBpblxuICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gb2JqZWN0XCdzXG4gICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgIlB5X3NzaXplX3QiLiAgVGhpc1xuICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uIDMyLWJpdFxuICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0IGludGVyb3BlcmF0ZSBvbiBidWlsZHNcbiAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gYWxsXG4gICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggInB5dGhvbiAtY1xuICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlIikuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuJywKLSAnZGVidWdnZXInOiB1J1xuInBkYiIgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbioqU291cmNlIGNvZGU6KiogTGliL3BkYi5weVxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuIlBkYiIuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnkgcmVhZGluZ1xudGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgImJkYiIgYW5kICJjbWQiLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzICIoUGRiKSIuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbSB1bmRlclxuY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBUYWItY29tcGxldGlvbiB2aWEgdGhlICJyZWFkbGluZSIgbW9kdWxlIGlzXG5hdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWxcbmFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuXG4icGRiLnB5IiBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuICBGb3JcbmV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogInBkYi5weSIgbm93IGFjY2VwdHMgYSAiLWMiIG9wdGlvbiB0aGF0IGV4ZWN1dGVzXG5jb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSAqRGVidWdnZXIgQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSAiY29udGludWUiIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlICJjb250aW51ZSIsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlICJfX21haW5fXyIgaXMgdXNlZC4gIChTZWUgdGhlXG4gICBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgb3IgImV2YWwoKSIgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuICJydW5ldmFsKCkiIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgICJydW4oKSIuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yIGluc3RhbnRpYXRpbmdcbnRoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiB5b3Ugd2FudFxudG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlRcbiAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICJzdGVwIlxuICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbiAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSBzdG9wcGluZyBhdFxuICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciBvdXRcbiAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICBXaXRoXG4gICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0IGRpZmZlcnNcbiAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucCBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxuICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciBjb21tYW5kXG4gICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIHByZXR0eS1cbiAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSBhbGxcbiAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucyBhcmVcbiAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlXG4gICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6IHUnXG5UaGUgImRlbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCi0gJ2RpY3QnOiB1J1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvblxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxubmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4iZm9yIiBhbmQgImlmIiBjbGF1c2VzLiBXaGVuIHRoZSBjb21wcmVoZW5zaW9uIGlzIHJ1biwgdGhlIHJlc3VsdGluZ1xua2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSBvcmRlclxudGhleSBhcmUgcHJvZHVjZWQuXG5cblJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZXMgb2YgdGhlIGtleSB2YWx1ZXMgYXJlIGxpc3RlZCBlYXJsaWVyIGluXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqLiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG5zaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG5iZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbnJpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCi0gJ2R5bmFtaWMtZmVhdHVyZXMnOiB1J1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhXG5mdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZVxudmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAotICdlbHNlJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2V4Y2VwdGlvbnMnOiB1J1xuRXhjZXB0aW9uc1xuKioqKioqKioqKlxuXG5FeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgY29udHJvbFxub2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbmNvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBlcnJvciBpc1xuZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgYnkgYW55XG5jb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrIHdoZXJlXG50aGUgZXJyb3Igb2NjdXJyZWQuXG5cblRoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSBydW4tdGltZVxuZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG5leHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gRXhjZXB0aW9uXG5oYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICBUaGVcbiJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNsZWFudXBcbmNvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCB3aGV0aGVyIGFuXG5leGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cblxuUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuIG91dGVyXG5sZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgdGhlXG5mYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgY29kZVxuZnJvbSB0aGUgdG9wKS5cblxuV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgdGVybWluYXRlc1xuZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluIGxvb3AuICBJblxuZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlIGV4Y2VwdGlvbiBpc1xuIlN5c3RlbUV4aXQiLlxuXG5FeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiBjbGF1c2UgaXNcbnNlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0IHJlZmVyZW5jZSB0aGVcbmNsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSBjYW4gYmVcbnJlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbmV4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cblxuTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gIFRoZWlyXG4gIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgd2l0aG91dFxuICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuIHVuZGVyXG4gIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cblxuU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHRyeVxuc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgYnlcbiAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSBpc1xuICAgIGNvbXBpbGVkLlxuJywKLSAnZXhlY21vZGVsJzogdSdcbkV4ZWN1dGlvbiBtb2RlbFxuKioqKioqKioqKioqKioqXG5cblxuTmFtaW5nIGFuZCBiaW5kaW5nXG49PT09PT09PT09PT09PT09PT1cblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLiBFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvXG50aGUgKmJpbmRpbmcqIG9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBpbiB0aGUgaW5uZXJtb3N0IGZ1bmN0aW9uIGJsb2NrXG5jb250YWluaW5nIHRoZSB1c2UuXG5cbkEgKmJsb2NrKiBpcyBhIHBpZWNlIG9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhXG51bml0LiBUaGUgZm9sbG93aW5nIGFyZSBibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzXG5kZWZpbml0aW9uLiBFYWNoIGNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHRcbmZpbGUgKGEgZmlsZSBnaXZlbiBhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkXG5hcyBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEFcbnNjcmlwdCBjb21tYW5kIChhIGNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmVcbndpdGggdGhlIFwnKiotYyoqXCcgb3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZFxudG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS4gIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGFcbmNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlXG5jb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tIHRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvclxuZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXNcbm1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyB3aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGUgbW9kdWxlXG5sZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlIGNvZGVcbmJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2tcbmJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbklmIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaGFzIG5vdCBiZWVuIGJvdW5kLCBhblxuIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhXG5zdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lXG5uYW1lcy4gVGhlc2UgcmVmZXJlbmNlcyBmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uLlxuVGhlIG5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeVxub2YgdGhlIGNsYXNzLiAgTmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUgYXJlIG5vdCB2aXNpYmxlIGluXG5tZXRob2RzLlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cbklmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuXG5cbkV4Y2VwdGlvbnNcbj09PT09PT09PT1cblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4cHJsaXN0cyc6IHUnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG5cbkFuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZVxubGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlXG5leHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKLSAnZmxvYXRpbmcnOiB1J1xuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsXG5kZWZpbml0aW9uczpcblxuICAgZmxvYXRudW1iZXIgICA6Oj0gcG9pbnRmbG9hdCB8IGV4cG9uZW50ZmxvYXRcbiAgIHBvaW50ZmxvYXQgICAgOjo9IFtpbnRwYXJ0XSBmcmFjdGlvbiB8IGludHBhcnQgIi4iXG4gICBleHBvbmVudGZsb2F0IDo6PSAoaW50cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4gICBpbnRwYXJ0ICAgICAgIDo6PSBkaWdpdCtcbiAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdCtcbiAgIGV4cG9uZW50ICAgICAgOjo9ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGRpZ2l0K1xuXG5Ob3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgdXNpbmdcbnJhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXJcbmFzICI3N2UxMCIuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAiLSIgYW5kIHRoZVxubGl0ZXJhbCAiMSIuXG4nLAotICdmb3InOiB1J1xuVGhlICJmb3IiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHNlcXVlbmNlXG4oc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbiJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24pLFxudGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbml0ZW0uXG5cblRoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgbGlzdC5cblRoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzIGluY2x1ZGluZ1xudGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuXG4gICBmb3IgaSBpbiByYW5nZSgxMCk6XG4gICAgICAgcHJpbnQoaSlcbiAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgbmV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG5hbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciBpXG46PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4gIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKLSAnZm9ybWF0c3RyaW5ncyc6IHUnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBhbmQgdGhlICJGb3JtYXR0ZXIiIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiAiRm9ybWF0dGVyIixcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG4ie30iLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbFxudGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgdG8gaW5jbHVkZVxuYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgZG91Ymxpbmc6XG4ie3siIGFuZCAifX0iLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAqZm9ybWF0X3NwZWMqLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYSBjb2xvbiAiXCc6XCciLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdCBmb3IgdGhlXG5yZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICJcJzEwXCciIG9yXG4iXCc6LV1cJyIpIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSBmb2xsb3dlZCBieSBhbnlcbm51bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm1cbiJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAiZ2V0YXR0cigpIiwgd2hpbGUgYW5cbmV4cHJlc3Npb24gb2YgdGhlIGZvcm0gIlwnW2luZGV4XVwnIiBkb2VzIGFuIGluZGV4IGxvb2t1cCB1c2luZ1xuIl9fZ2V0aXRlbV9fKCkiLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gIlwne30ge31cJyIgaXMgZXF1aXZhbGVudCB0byAiXCd7MH0gezF9XCciLlxuXG5Tb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuXG4gICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gezF9IlxuICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbiAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICMgRmlyc3QgZWxlbWVudCBvZiBrZXl3b3JkIGFyZ3VtZW50IFwncGxheWVyc1wnLlxuXG5UaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlIGZvcm1hdHRpbmcuXG5Ob3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGUgIl9fZm9ybWF0X18oKSJcbm1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyBpdCBpcyBkZXNpcmFibGUgdG9cbmZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzIG93blxuZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG5jYWxsaW5nICJfX2Zvcm1hdF9fKCkiLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmcgbG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6ICJcJyFzXCciIHdoaWNoIGNhbGxzXG4ic3RyKCkiIG9uIHRoZSB2YWx1ZSwgIlwnIXJcJyIgd2hpY2ggY2FsbHMgInJlcHIoKSIgYW5kICJcJyFhXCciIHdoaWNoXG5jYWxscyAiYXNjaWkoKSIuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiAiZm9ybWF0KCkiIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoIiIiIikgcHJvZHVjZXNcbnRoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gQSBub24tZW1wdHlcbmZvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG5cblRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG5cbiAgIGZvcm1hdF9zcGVjIDo6PSBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuICAgZmlsbCAgICAgICAgOjo9IDxhbnkgY2hhcmFjdGVyPlxuICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuICAgd2lkdGggICAgICAgOjo9IGludGVnZXJcbiAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4gICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG5cbklmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCBieSBhICpmaWxsKlxuY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgaWZcbm9taXR0ZWQuIE5vdGUgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gdXNlICJ7IiBhbmQgIn0iIGFzICpmaWxsKlxuY2hhciB3aGlsZSB1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kOyB0aGlzIGxpbWl0YXRpb24gaG93ZXZlclxuZG9lc25cJ3QgYWZmZWN0IHRoZSAiZm9ybWF0KCkiIGZ1bmN0aW9uLlxuXG5UaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyBmb2xsb3dzOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0IG9iamVjdHMpLiAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG51bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgdGhlIHNpZ24gKGlmIGFueSkgICAgfFxuICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yIHByaW50aW5nIGZpZWxkcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gXCcrMDAwMDAwMTIwXCcuIFRoaXMgYWxpZ25tZW50IG9wdGlvbiBpcyBvbmx5ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdeXCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSBmaWVsZCB3aWR0aFxud2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyB0aGF0IHRoZVxuYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG5cblRoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiBiZSBvbmUgb2ZcbnRoZSBmb2xsb3dpbmc6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbiAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgdXNlZCBvbiBwb3NpdGl2ZSAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAiXCcwb1wnIiwgb3JcbiJcJzB4XCciIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAiXCdHXCciXG5jb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC5cblxuVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kcyBzZXBhcmF0b3IuXG5Gb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlICJcJ25cJyIgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZVxuaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgYWxzbyAqKlBFUCAzNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5QcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYSB6ZXJvICgiXCcwXCciKSBjaGFyYWN0ZXIgZW5hYmxlcyBzaWduLVxuYXdhcmUgemVyby1wYWRkaW5nIGZvciBudW1lcmljIHR5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgKmZpbGwqXG5jaGFyYWN0ZXIgb2YgIlwnMFwnIiB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgIlwnPVwnIi5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoICJcJ2ZcJyIgYW5kICJcJ0ZcJyIsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnRcbmZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgIlwnR1wnIi4gIEZvciBub24tXG5udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW4gb3RoZXJcbndvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LiBUaGVcbipwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ3NcJyIgICAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ2JcJyIgICAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdjXCciICAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2RcJyIgICAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwneFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdYXCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2RcJyIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbiAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIG51bWJlciAgICB8XG4gICB8ICAgICAgICAgICB8IHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgIlwnZFwnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdCAiXCduXCciXG5hbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlIGludGVnZXIgdG9cbmEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzICI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgIlwnZlwnIiwgYnV0IGNvbnZlcnRzICJuYW4iIHRvICJOQU4iICAgIHxcbiAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICJJTkYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICJwID49IDEiLCB0aGlzICAgICAgfFxuICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCBmb3JtYXQgb3IgaW4gICAgICB8XG4gICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgVGhlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgdGhlIHJlc3VsdCAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiIHxcbiAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00IDw9IGV4cCA8IHAiLCB0aGUgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdmXCciIGFuZCAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbiAicC0xLWV4cCIuICBPdGhlcndpc2UsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kIHByZWNpc2lvbiAicC0xIi4gSW4gYm90aCAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSByZW1vdmVkIGZyb20gdGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyBhbHNvIHJlbW92ZWQgaWYgICAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyBpdC4gIFBvc2l0aXZlIGFuZCAgfFxuICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHplcm8sIGFuZCBuYW5zLCAgIHxcbiAgIHwgICAgICAgICAgIHwgYXJlIGZvcm1hdHRlZCBhcyAiaW5mIiwgIi1pbmYiLCAiMCIsICItMCIgYW5kICJuYW4iICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgfFxuICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgcHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0IHN3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlIHJlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4gICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsIHRvby4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZ1wnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgYW5kIGRpc3BsYXlzIGluICAgfFxuICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byAiXCdnXCciLCBleGNlcHQgdGhhdCBmaXhlZC1wb2ludCBub3RhdGlvbiwgd2hlbiAgIHxcbiAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSBkZWNpbWFsIHBvaW50LiBUaGUgICB8XG4gICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzIGFzIGhpZ2ggYXMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBwYXJ0aWN1bGFyIHZhbHVlLiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgdG8gbWF0Y2ggdGhlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgZm9ybWF0ICAgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4IGFuZCBjb21wYXJpc29uXG53aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLFxud2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAiJSIuIEZvclxuZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnQgYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0VcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiB1J1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG4nLAotICdnbG9iYWwnOiB1J1xuVGhlICJnbG9iYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSBlbnRpcmVcbmN1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gYmVcbmludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhIGdsb2JhbFxudmFyaWFibGUgd2l0aG91dCAiZ2xvYmFsIiwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG5nbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSBjb2RlXG5ibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgImdsb2JhbCIgc3RhdGVtZW50LlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWxcbnBhcmFtZXRlcnMgb3IgaW4gYSAiZm9yIiBsb29wIGNvbnRyb2wgdGFyZ2V0LCAiY2xhc3MiIGRlZmluaXRpb24sXG5mdW5jdGlvbiBkZWZpbml0aW9uLCBvciAiaW1wb3J0IiBzdGF0ZW1lbnQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RcbmVuZm9yY2UgdGhlIHR3byByZXN0cmljdGlvbnMsIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlIHRoaXNcbmZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSBjaGFuZ2VcbnRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci4gIEl0XG5hcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbnN0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgc3RyaW5nXG5vciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyBub3RcbmFmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG5jb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgaW4gdGhlXG5jb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAiZXZhbCgpIlxuYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCi0gJ2lkLWNsYXNzZXMnOiB1J1xuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lkZW50aWZpZXJzJzogdSdcbklkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbklkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgdGhlXG5mb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9ucy5cblxuVGhlIHN5bnRheCBvZiBpZGVudGlmaWVycyBpbiBQeXRob24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgc3RhbmRhcmRcbmFubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyBzZWUgYWxzb1xuKipQRVAgMzEzMSoqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG5cbldpdGhpbiB0aGUgQVNDSUkgcmFuZ2UgKFUrMDAwMS4uVSswMDdGKSwgdGhlIHZhbGlkIGNoYXJhY3RlcnMgZm9yXG5pZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlXG5sZXR0ZXJzICJBIiB0aHJvdWdoICJaIiwgdGhlIHVuZGVyc2NvcmUgIl8iIGFuZCwgZXhjZXB0IGZvciB0aGUgZmlyc3RcbmNoYXJhY3RlciwgdGhlIGRpZ2l0cyAiMCIgdGhyb3VnaCAiOSIuXG5cblB5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSBBU0NJSVxucmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSBjbGFzc2lmaWNhdGlvblxudXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgaW5jbHVkZWQgaW4gdGhlXG4idW5pY29kZWRhdGEiIG1vZHVsZS5cblxuSWRlbnRpZmllcnMgYXJlIHVubGltaXRlZCBpbiBsZW5ndGguICBDYXNlIGlzIHNpZ25pZmljYW50LlxuXG4gICBpZGVudGlmaWVyICAgOjo9IHhpZF9zdGFydCB4aWRfY29udGludWUqXG4gICBpZF9zdGFydCAgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBnZW5lcmFsIGNhdGVnb3JpZXMgTHUsIExsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlIE90aGVyX0lEX1N0YXJ0IHByb3BlcnR5PlxuICAgaWRfY29udGludWUgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQsIHBsdXMgY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggdGhlIE90aGVyX0lEX0NvbnRpbnVlIHByb3BlcnR5PlxuICAgeGlkX3N0YXJ0ICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbiAgIHhpZF9jb250aW51ZSA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX2NvbnRpbnVlIHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfY29udGludWUqIj5cblxuVGhlIFVuaWNvZGUgY2F0ZWdvcnkgY29kZXMgbWVudGlvbmVkIGFib3ZlIHN0YW5kIGZvcjpcblxuKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcblxuKiAqTGwqIC0gbG93ZXJjYXNlIGxldHRlcnNcblxuKiAqTHQqIC0gdGl0bGVjYXNlIGxldHRlcnNcblxuKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuXG4qICpMbyogLSBvdGhlciBsZXR0ZXJzXG5cbiogKk5sKiAtIGxldHRlciBudW1iZXJzXG5cbiogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcblxuKiAqTWMqIC0gc3BhY2luZyBjb21iaW5pbmcgbWFya3NcblxuKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzXG5cbiogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcblxuKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluIFByb3BMaXN0LnR4dCB0b1xuICBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cbiogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG5cbkFsbCBpZGVudGlmaWVycyBhcmUgY29udmVydGVkIGludG8gdGhlIG5vcm1hbCBmb3JtIE5GS0Mgd2hpbGUgcGFyc2luZztcbmNvbXBhcmlzb24gb2YgaWRlbnRpZmllcnMgaXMgYmFzZWQgb24gTkZLQy5cblxuQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyIGNoYXJhY3RlcnMgZm9yXG5Vbmljb2RlIDQuMSBjYW4gYmUgZm91bmQgYXQgaHR0cDovL3d3dy5kY2wuaHBpLnVuaS1cbnBvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuXG5cbktleXdvcmRzXG49PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAqa2V5d29yZHMqIG9mXG50aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gIFRoZXkgbXVzdFxuYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcblxuICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbiAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4gICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4gICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbiAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbiAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbiAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG5cblxuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lmJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2ltYWdpbmFyeSc6IHUnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcblxuICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKLSAnaW1wb3J0JzogdSdcblRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbiAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5XaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgdGhlXG50d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzIHRob3VnaFxudGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWRpdWFsIGltcG9ydCBzdGF0ZW1lbnRzLlxuXG5UaGUgZGV0YWlscyBvZiB0aGUgZmlyc3Qgc3RlcCwgZmluZGluZyBhbmQgbG9hZGluZyBtb2R1bGVzIGFyZVxuZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSAqaW1wb3J0IHN5c3RlbSosXG53aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0XG5jYW4gYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvXG5jdXN0b21pemUgdGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5XG5pbmRpY2F0ZSBlaXRoZXIgdGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW5cbmVycm9yIG9jY3VycmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb25cbm9mIHRoZSBtb2R1bGVcJ3MgY29kZS5cblxuSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlXG5hdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czpcblxuKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgImFzIiwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgImFzIiBpcyBib3VuZCBkaXJlY3RseSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlLlxuXG4qIElmIG5vIG90aGVyIG5hbWUgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBhXG4gIHRvcCBsZXZlbCBtb2R1bGUsIHRoZSBtb2R1bGVcJ3MgbmFtZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlXG4gIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGVcblxuKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiB0aGVcbiAgbmFtZSBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzIGJvdW5kIGluXG4gIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiBUaGVcbiAgaW1wb3J0ZWQgbW9kdWxlIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkIG5hbWVcbiAgcmF0aGVyIHRoYW4gZGlyZWN0bHlcblxuVGhlICJmcm9tIiBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcblxuMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgImZyb20iIGNsYXVzZSwgbG9hZGluZyBhbmRcbiAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7XG5cbjIuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlICJpbXBvcnQiIGNsYXVzZXM6XG5cbiAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcblxuICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgdGhlblxuICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcblxuICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBsb2NhbFxuICAgICAgbmFtZXNwYWNlLCB1c2luZyB0aGUgbmFtZSBpbiB0aGUgImFzIiBjbGF1c2UgaWYgaXQgaXMgcHJlc2VudCxcbiAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcblxuRXhhbXBsZXM6XG5cbiAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiXG4gICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXpcbiAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyXG5cbklmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoIlwnKlwnIiksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cblxuVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlXG5tb2R1bGVcJ3MgbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkICJfX2FsbF9fIjsgaWYgZGVmaW5lZCwgaXQgbXVzdFxuYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5IHRoYXRcbm1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiAiX19hbGxfXyIgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmRcbmFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmICJfX2FsbF9fIiBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWNcbm5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSB3aGljaCBkbyBub3RcbmJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCBjb250YWluXG50aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSBleHBvcnRpbmdcbml0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmVcbmltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgb25seVxuYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbmZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5XaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5IHRoZVxuYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgY29udGFpbmVkXG53aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgd2l0aGluXG50aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuIEJ5XG51c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAiZnJvbSIgeW91XG5jYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG4iZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3Ugd2lsbFxuZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiBpbXBvcnQgbW9kIlxuZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuIFRoZVxuc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQIDMyOCoqLlxuXG4iaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cblxuXG5GdXR1cmUgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT1cblxuQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyXG5tb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG5hdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSBmZWF0dXJlXG5iZWNvbWVzIHN0YW5kYXJkLlxuXG5UaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnNcbm9mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdFxuYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG5yZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbiJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlXG50aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCB3aWxsXG5iZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXhlYygpIiBhbmRcbiJjb21waWxlKCkiIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgIk0iIGNvbnRhaW5pbmcgYSBmdXR1cmUgc3RhdGVtZW50XG53aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWQgd2l0aCB0aGVcbmZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuImNvbXBpbGUoKSIgLS0tIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIGZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286ICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuXG4gICAgIFRoZSBvcmlnaW5hbCBwcm9wb3NhbCBmb3IgdGhlIF9fZnV0dXJlX18gbWVjaGFuaXNtLlxuJywKLSAnaW4nOiB1J1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG5lcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzIGV2YWx1YXRlZCBvbmx5XG5vbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG5mb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsIGV4Y2VwdFxudGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW5cbiphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxucGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgdmFsdWVzXG5vZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS4gSWYgYm90aCBhcmVcbm51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLCB0aGUgIj09IiBhbmRcbiIhPSIgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRvIGJlXG51bmVxdWFsLCB3aGlsZSB0aGUgIjwiLCAiPiIsICI+PSIgYW5kICI8PSIgb3BlcmF0b3JzIHJhaXNlIGFcbiJUeXBlRXJyb3IiIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRoYXQgZG8gbm90XG5pbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZiB0eXBlcy4gIFlvdSBjYW5cbmNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pbiB0eXBlcyBieVxuZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSAiX19ndF9fKCkiLCBkZXNjcmliZWQgaW4gc2VjdGlvblxuKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgImZsb2F0KFwnTmFOXCcpIiBhbmQgIkRlY2ltYWwoXCdOYU5cJykiIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCAieCBpcyB4IiBidXQgYXJlIG5vdCBlcXVhbCB0b1xuICB0aGVtc2VsdmVzLCAieCAhPSB4Ii4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSB0byBhXG4gIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLiAgRm9yIGV4YW1wbGUsIGJvdGggIjMgPFxuICBmbG9hdChcJ05hTlwnKSIgYW5kICJmbG9hdChcJ05hTlwnKSA8IDMiIHdpbGwgcmV0dXJuICJGYWxzZSIuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIGVxdWl2YWxlbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAib3JkKCkiKSBvZiB0aGVpclxuICBjaGFyYWN0ZXJzLiBbM10gU3RyaW5nIGFuZCBieXRlcyBvYmplY3QgY2FuXCd0IGJlIGNvbXBhcmVkIVxuXG4qIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb25cbiAgb2YgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBlYWNoXG4gIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gWzEsMix5XSIgaGFzIHRoZSBzYW1lXG4gIHZhbHVlIGFzICJ4IDw9IHkiLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdCBleGlzdCwgdGhlXG4gIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsICJbMSwyXSA8IFsxLDIsM10iKS5cblxuKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGVcbiAgc2FtZSAiKGtleSwgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgIihcJzxcJywgXCc8PVwnLCBcJz49XCcsXG4gIFwnPlwnKSIgcmFpc2UgIlR5cGVFcnJvciIuXG5cbiogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kXG4gIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICh0aGVcbiAgdHdvIHNldHMgInsxLDJ9IiBhbmQgezIsM30gYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4gIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlIG5vdFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgb3JkZXJpbmcuXG4gIEZvciBleGFtcGxlLCAibWluKCkiLCAibWF4KCkiLCBhbmQgInNvcnRlZCgpIiBwcm9kdWNlIHVuZGVmaW5lZFxuICByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cblxuKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5XG4gIGFyZSB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWRcbiAgc21hbGxlciBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dFxuICBjb25zaXN0ZW50bHkgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXIgb2ZcbnRoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdCBudW1lcmljXG50eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlci4gIFdoZW4gY3Jvc3MtdHlwZSBjb21wYXJpc29uIGlzXG5ub3Qgc3VwcG9ydGVkLCB0aGUgY29tcGFyaXNvbiBtZXRob2QgcmV0dXJucyAiTm90SW1wbGVtZW50ZWQiLlxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnaW50ZWdlcnMnOiB1J1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4MTAwMDAwMDAwXG4gICAgICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgICAgICAgICAgMHhkZWFkYmVlZlxuJywKLSAnbGFtYmRhJzogdSdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvIGNyZWF0ZVxuYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb24iXG55aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgZnVuY3Rpb25cbm9iamVjdCBkZWZpbmVkIHdpdGhcblxuICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4gICAgICAgcmV0dXJuIGV4cHJlc3Npb25cblxuU2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgbGlzdHMuXG5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90IGNvbnRhaW5cbnN0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAotICdsaXN0cyc6IHUnXG5MaXN0IGRpc3BsYXlzXG4qKioqKioqKioqKioqXG5cbkEgbGlzdCBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGV4cHJlc3Npb25zIGVuY2xvc2VkIGluXG5zcXVhcmUgYnJhY2tldHM6XG5cbiAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtleHByZXNzaW9uX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcblxuQSBsaXN0IGRpc3BsYXkgeWllbGRzIGEgbmV3IGxpc3Qgb2JqZWN0LCB0aGUgY29udGVudHMgYmVpbmcgc3BlY2lmaWVkXG5ieSBlaXRoZXIgYSBsaXN0IG9mIGV4cHJlc3Npb25zIG9yIGEgY29tcHJlaGVuc2lvbi4gIFdoZW4gYSBjb21tYS1cbnNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgZWxlbWVudHMgYXJlIGV2YWx1YXRlZFxuZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBwbGFjZWQgaW50byB0aGUgbGlzdCBvYmplY3QgaW4gdGhhdCBvcmRlci5cbldoZW4gYSBjb21wcmVoZW5zaW9uIGlzIHN1cHBsaWVkLCB0aGUgbGlzdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZVxuZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAotICduYW1pbmcnOiB1J1xuTmFtaW5nIGFuZCBiaW5kaW5nXG4qKioqKioqKioqKioqKioqKipcblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLiBFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvXG50aGUgKmJpbmRpbmcqIG9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBpbiB0aGUgaW5uZXJtb3N0IGZ1bmN0aW9uIGJsb2NrXG5jb250YWluaW5nIHRoZSB1c2UuXG5cbkEgKmJsb2NrKiBpcyBhIHBpZWNlIG9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhXG51bml0LiBUaGUgZm9sbG93aW5nIGFyZSBibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzXG5kZWZpbml0aW9uLiBFYWNoIGNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHRcbmZpbGUgKGEgZmlsZSBnaXZlbiBhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkXG5hcyBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEFcbnNjcmlwdCBjb21tYW5kIChhIGNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmVcbndpdGggdGhlIFwnKiotYyoqXCcgb3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZFxudG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS4gIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGFcbmNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlXG5jb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tIHRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvclxuZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXNcbm1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyB3aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2ssXG51bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGUgbW9kdWxlXG5sZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlIGNvZGVcbmJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2tcbmJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbklmIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaGFzIG5vdCBiZWVuIGJvdW5kLCBhblxuIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhXG5zdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lXG5uYW1lcy4gVGhlc2UgcmVmZXJlbmNlcyBmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uLlxuVGhlIG5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeVxub2YgdGhlIGNsYXNzLiAgTmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUgYXJlIG5vdCB2aXNpYmxlIGluXG5tZXRob2RzLlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cbklmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKLSAnbm9ubG9jYWwnOiB1J1xuVGhlICJub25sb2NhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgbm9ubG9jYWxfc3RtdCA6Oj0gIm5vbmxvY2FsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGV4Y2x1ZGluZ1xuZ2xvYmFscy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYmluZGluZyBpc1xudG8gc2VhcmNoIHRoZSBsb2NhbCBuYW1lc3BhY2UgZmlyc3QuICBUaGUgc3RhdGVtZW50IGFsbG93c1xuZW5jYXBzdWxhdGVkIGNvZGUgdG8gcmViaW5kIHZhcmlhYmxlcyBvdXRzaWRlIG9mIHRoZSBsb2NhbCBzY29wZVxuYmVzaWRlcyB0aGUgZ2xvYmFsIChtb2R1bGUpIHNjb3BlLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiBhXG4iZ2xvYmFsIiBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgbXVzdCBub3QgY29sbGlkZSB3aXRoIHByZS1cbmV4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMDQqKiAtIEFjY2VzcyB0byBOYW1lcyBpbiBPdXRlciBTY29wZXNcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICJub25sb2NhbCIgc3RhdGVtZW50LlxuJywKLSAnbnVtYmVycyc6IHUnXG5OdW1lcmljIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBudW1lcmljIGxpdGVyYWxzOiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnRcbm51bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4oY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCBudW1iZXIgYW5kIGFuXG5pbWFnaW5hcnkgbnVtYmVyKS5cblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgYW5kIHRoZVxubGl0ZXJhbCAiMSIuXG4nLAotICdudW1lcmljLXR5cGVzJzogdSdcbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGVcbiAgIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW5cbiAgICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLiAgVGhlICJfX2Rpdm1vZF9fKCkiXG4gICBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nICJfX2Zsb29yZGl2X18oKSIgYW5kXG4gICAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvICJfX3RydWVkaXZfXygpIi4gIE5vdGVcbiAgIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0IGFuIG9wdGlvbmFsIHRoaXJkXG4gICBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pbiAicG93KCkiIGZ1bmN0aW9uIGlzXG4gICB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsICJwb3coKSIsXG4gICAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuXG4gICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3RcbiAgIHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLCAiPDw9IixcbiAgICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlXG4gICBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2hcbiAgIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbFxuICAgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhblxuICAgIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9IHguX19pYWRkX18oeSkiXG4gICAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmUgY29uc2lkZXJlZCwgYXNcbiAgIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpbiBzaXR1YXRpb25zLCBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9ycyAoc2VlICpXaHkgZG9lc1xuICAgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBhZGRpdGlvblxuICAgd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YSBtb2RlbC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICIrIixcbiAgICJhYnMoKSIgYW5kICJ+IikuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICJpbnQoKSIsXG4gICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGVcbiAgIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciBQeXRob24gbmVlZHNcbiAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciBvYmplY3QgKHN1Y2hcbiAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAib2N0KCkiXG4gICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgbnVtZXJpY1xuICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG5cbiAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsIHdoZW5cbiAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlIGRlZmluZWQsIGFuZFxuICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nLAotICdvYmplY3RzJzogdSdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnImlzIlwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG5yZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSBtZW1vcnlcbmFkZHJlc3Mgd2hlcmUgIngiIGlzIHN0b3JlZC5cblxuQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHNcbihlLmcuLCAiZG9lcyBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlc1xuZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzXG50eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3RcJ3Ncbip0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG5cblRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW5cbmNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlXG5vbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhblxuaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGVcbm9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyIHRoZVxuY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoc29cbnlvdSBzaG91bGQgYWx3YXlzIGNsb3NlIGZpbGVzIGV4cGxpY2l0bHkpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSAiY2xvc2UoKSIgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJyJ0cnkiLi4uImZpbmFsbHkiXCcgc3RhdGVtZW50IGFuZCB0aGUgXCcid2l0aCJcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAxIixcbiJhIiBhbmQgImIiIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZSB2YWx1ZVxub25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgImMgPSBbXTsgZCA9IFtdIiwgImMiXG5hbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbmNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgImMgPSBkID0gW10iIGFzc2lnbnMgdGhlIHNhbWUgb2JqZWN0XG50byBib3RoICJjIiBhbmQgImQiLilcbicsCi0gJ29wZXJhdG9yLXN1bW1hcnknOiB1J1xuT3BlcmF0b3IgcHJlY2VkZW5jZVxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgaW4gUHl0aG9uLCBmcm9tXG5sb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBleHBvbmVudGlhdGlvbiwgd2hpY2hcbmdyb3VwcyBmcm9tIHJpZ2h0IHRvIGxlZnQpLlxuXG5Ob3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSB0ZXN0cywgYWxsIGhhdmVcbnRoZSBzYW1lIHByZWNlZGVuY2UgYW5kIGhhdmUgYSBsZWZ0LXRvLXJpZ2h0IGNoYWluaW5nIGZlYXR1cmUgYXNcbmRlc2NyaWJlZCBpbiB0aGUgKkNvbXBhcmlzb25zKiBzZWN0aW9uLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJsYW1iZGEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJpZiIgLS0gImVsc2UiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJvciIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJhbmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJub3QiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJpbiIsICJub3QgaW4iLCAiaXMiLCAiaXMgbm90IiwgIjwiLCAiPD0iLCAiPiIsIHwgQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG58ICI+PSIsICIhPSIsICI9PSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGVzdHMgYW5kIGlkZW50aXR5IHRlc3RzICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJ8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJeIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBYT1IgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICImIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICI8PCIsICI+PiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2hpZnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIrIiwgIi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIqIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCByZW1haW5kZXIgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWzVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG58ICJ4KGFyZ3VtZW50cy4uLikiLCAieC5hdHRyaWJ1dGUiICAgICAgICAgICAgICAgIHwgYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIoZXhwcmVzc2lvbnMuLi4pIiwgIltleHByZXNzaW9ucy4uLl0iLCAie2tleTogIHwgQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG58IHZhbHVlLi4ufSIsICJ7ZXhwcmVzc2lvbnMuLi59IiAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSwgZGljdGlvbmFyeSBkaXNwbGF5LCBzZXQgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCBmb3IgZmxvYXRzXG4gICAgaXQgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciBleGFtcGxlLCBhbmRcbiAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuIElFRUUgNzU0IGRvdWJsZS1cbiAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzICIxZTEwMCIsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgIi0xZS0xMDAgKyAxZTEwMCIsIHdoaWNoXG4gICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlIGZ1bmN0aW9uXG4gICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyB0aGUgc2lnbiBvZiB0aGVcbiAgICBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyAiLTFlLTEwMCIgaW4gdGhpcyBjYXNlLlxuICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciAieC8veSIgdG8gYmUgb25lIGxhcmdlciB0aGFuICIoeC14JXkpLy95IiBkdWUgdG9cbiAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgcmVzdWx0LCBpblxuICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiBiZSB2ZXJ5IGNsb3NlXG4gICAgdG8gIngiLlxuXG5bM10gV2hpbGUgY29tcGFyaXNvbnMgYmV0d2VlbiBzdHJpbmdzIG1ha2Ugc2Vuc2UgYXQgdGhlIGJ5dGVcbiAgICBsZXZlbCwgdGhleSBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gdXNlcnMuICBGb3IgZXhhbXBsZSwgdGhlXG4gICAgc3RyaW5ncyAiIlxcdTAwQzciIiBhbmQgIiJcXHUwMzI3XFx1MDA0MyIiIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cblxuWzRdIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgdGhlXG4gICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlIHNlZW1pbmdseSB1bnVzdWFsXG4gICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSB0aG9zZVxuICAgIGludm9sdmluZyBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yIGNvbnN0YW50cy5cbiAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG5cbls1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7IHRoZSBzYW1lXG4gICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuXG5bNl0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpY1xuICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAiMioqLTEiIGlzICIwLjUiLlxuJywKLSAncGFzcyc6IHUnXG5UaGUgInBhc3MiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgaGFwcGVucy5cbkl0IGlzIHVzZWZ1bCBhcyBhIHBsYWNlaG9sZGVyIHdoZW4gYSBzdGF0ZW1lbnQgaXMgcmVxdWlyZWRcbnN5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcblxuICAgZGVmIGYoYXJnKTogcGFzcyAgICAjIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcgKHlldClcblxuICAgY2xhc3MgQzogcGFzcyAgICAgICAjIGEgY2xhc3Mgd2l0aCBubyBtZXRob2RzICh5ZXQpXG4nLAotICdwb3dlcic6IHUnXG5UaGUgcG93ZXIgb3BlcmF0b3JcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xubGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZVxuc3ludGF4IGlzOlxuXG4gICBwb3dlciA6Oj0gcHJpbWFyeSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCi0gJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAotICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiAieD09eSIgZG9lcyBub3QgaW1wbHkgdGhhdCAieCE9eSIgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyAiX19lcV9fKCkiLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICAiX19uZV9fKCkiIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZSB0aGVcbiAgIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uIGNyZWF0aW5nXG4gICAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvbiBvcGVyYXRpb25zIGFuZFxuICAgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUiKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxufn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgY2xhc3MgYm9keSBpc1xuZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZVxucmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbiJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlIGluc3RhbmNlc1xub2YgIk1ldGEiOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gInR5cGUoKSIgaXNcbiAgdXNlZFxuXG4qIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2ZcbiAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mIGFsbFxuc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGFcbnN1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZVxuY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uXG53aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsXG5pdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcyxcbioqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb21cbnRoZSBjbGFzcyBkZWZpbml0aW9uKS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgImRpY3QoKSIgaW5zdGFuY2UuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuXG4gICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgZ2xvYmFscygpLFxubmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gImV4ZWMoKSIgaXMgdGhhdFxubGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSBtZXRob2RzKSB0b1xucmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSBjbGFzc1xuZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbixcbm1ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGVcbmNsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdFxucGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsXG5mcm9tIHN0YXRpYyBtZXRob2RzLlxuXG5cbkNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzXG5ib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm1cbm9mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb25cbmxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGVcbmN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlXG5tZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcblxuICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG5cblxuTWV0YWNsYXNzIGV4YW1wbGVcbi0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyB2YXJpYWJsZXNcbmFyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzIGFuZFxuYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLFxuICAgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZVxuICAgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluICJwb3coKSIgZnVuY3Rpb24gaXNcbiAgIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdFxuICAgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuXG4gICAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID0geC5fX2lhZGRfXyh5KSJcbiAgIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhc1xuICAgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUgKldoeSBkb2VzXG4gICBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGFkZGl0aW9uXG4gICB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5XG5hbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZiB0aGVzZVxubWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbCB3aGVuXG5pbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSxcbiAgICB1bmRlciBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2RcbiAgICBpZGVhIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmXG4gICAgaXQgaXMgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzICJfX2FkZF9fKCkiKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzIG5vdFxuICAgIHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZSByZWZsZWN0ZWQgbWV0aG9kIGlzIG5vdCBjYWxsZWQuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAic3RyLmZvcm1hdCgpIixcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpTdHJpbmcgRm9ybWF0dGluZyopIGFuZCB0aGUgb3RoZXIgYmFzZWQgb25cbkMgInByaW50ZiIgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciByYW5nZSBvZiB0eXBlcyBhbmRcbmlzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gZmFzdGVyIGZvciB0aGUgY2FzZXNcbml0IGNhbiBoYW5kbGUgKCpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqKS5cblxuVGhlICpUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMqIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgY292ZXJzXG5hIG51bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCB1dGlsaXRpZXNcbihpbmNsdWRpbmcgcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlICJyZSIgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgIlwnXHhkZlwnIiBpcyBlcXVpdmFsZW50IHRvICIic3MiIi5cbiAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gbm90aGluZyB0byAiXCdceGRmXCciO1xuICAgImNhc2Vmb2xkKCkiIGNvbnZlcnRzIGl0IHRvICIic3MiIi5cblxuICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJIHNwYWNlKS4gVGhlXG4gICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICJsZW4ocykiLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgIlwndXRmLThcJyIuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICJcJ3N0cmljdFwnIixcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSAiVW5pY29kZUVycm9yIi4gT3RoZXIgcG9zc2libGVcbiAgIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciLCAiXCd4bWxjaGFycmVmcmVwbGFjZVwnIixcbiAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgdmlhXG4gICAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiAqRXJyb3IgSGFuZGxlcnMqLiBGb3IgYSBsaXN0XG4gICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZCBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3VmZml4ZXNcbiAgIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IG9uZSBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqIGNoYXJhY3RlcnNcbiAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgYW5kIHNvIG9uKS5cbiAgIFRvIGV4cGFuZCB0aGUgc3RyaW5nLCB0aGUgY3VycmVudCBjb2x1bW4gaXMgc2V0IHRvIHplcm8gYW5kIHRoZVxuICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgY2hhcmFjdGVyIGlzIGFcbiAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGUgcmVzdWx0XG4gICB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiIHBvc2l0aW9uLiAoVGhlXG4gICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXG4gICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpc1xuICAgcmVzZXQgdG8gemVyby4gIEFueSBvdGhlciBjaGFyYWN0ZXIgaXMgY29waWVkIHVuY2hhbmdlZCBhbmQgdGhlXG4gICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgdGhlXG4gICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoKVxuICAgXCcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNFwnXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoNClcbiAgIFwnMDEgIDAxMiAwMTIzICAgIDAxMjM0XCdcblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSAic1tzdGFydDplbmRdIi5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vd1xuICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsXG4gICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgIm1hcHBpbmciIGlzIHVzZWRcbiAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yIGV4YW1wbGVcbiAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyICJjIlxuICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgIlRydWUiOlxuICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAiYy5pc251bWVyaWMoKSIuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbiAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaCBhc1xuICAgImRlZiIgYW5kICJjbGFzcyIuXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICJyZXByKCkiIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgICAgXCdzcGFjaW91cyAgIFwnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICAic3RyLnRyYW5zbGF0ZSgpIi5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICAgICBcJyAgIHNwYWNpb3VzXCdcbiAgICAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICAgICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgIm1heHNwbGl0KzEiXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsIFwnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4gICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCBcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4gICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcsIG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiwzXCddXG4gICAgICA+Pj4gXCcxLDIsLDMsXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJ1wnLCBcJzNcJywgXCdcJ11cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgcmV0dXJucyAiW10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQobWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyIDNcJ11cbiAgICAgID4+PiBcJyAgIDEgICAyICAgMyAgIFwnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiBUaGlzIG1ldGhvZCB1c2VzIHRoZSAqdW5pdmVyc2FsIG5ld2xpbmVzKiBhcHByb2FjaCB0b1xuICAgc3BsaXR0aW5nIGxpbmVzLiBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKVxuICAgICAgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuICAgICAgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsIFwna2xcXHJcXG5cJ11cblxuICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG5cbiAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbiAgICAgIFtdXG4gICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ09uZSBsaW5lXCddXG5cbiAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuXG4gICAgICA+Pj4gXCdcJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnXCddXG4gICAgICA+Pj4gXCdUd28gbGluZXNcXG5cJy5zcGxpdChcJ1xcblwnKVxuICAgICAgW1wnVHdvIGxpbmVzXCcsIFwnXCddXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlIHJldHVyblxuICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rIGZvci5cbiAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG4gICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpc1xuICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICAgICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdIZWxsbyB3b3JsZFwnLnRpdGxlKClcbiAgICAgIFwnSGVsbG8gV29ybGRcJ1xuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgIk5vbmUiLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byAiTm9uZSIgYXJlXG4gICBkZWxldGVkLlxuXG4gICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbVxuICAgICBjaGFyYWN0ZXIgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgImNvZGVjcyIgbW9kdWxlIChzZWVcbiAgICAgImVuY29kaW5ncy5jcDEyNTEiIGZvciBhbiBleGFtcGxlKS5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG4gICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgIlwnMFwnIiBkaWdpdHMgdG9cbiAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeCAoIlwnK1wnIi8iXCctXCciXG4gICBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduIGNoYXJhY3RlclxuICAgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXNcbiAgIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAotICdzdHJpbmdzJzogdSdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4gICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnIHNob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4gICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG5cbk9uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyB0aGF0XG53aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICJieXRlc3ByZWZpeCJcbmFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgYnlcbnRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gaXNcbmdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSBlbmNsb3NlZFxuaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbmdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoXG4oIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgcHJvZHVjZVxuYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSBtYXlcbm9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3JcbmdyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuXG5BcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgd2l0aCBhXG4idSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB0cmVhdFxuYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscyxcbiJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS5cbkdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhblxuUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW5cbmFkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbFxuUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5JbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxubGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuXG5Vbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluIHN0cmluZ1xuYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZVxudXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhblxuICAgYmUgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZVxuICAgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbiAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlXG5iYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZFxuc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlXG5xdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90XG5lbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBsaXRlcmFsXG5jYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgZXNjYXBlXG50aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2hcbmZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyBwYXJ0XG5vZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCi0gJ3N1YnNjcmlwdGlvbnMnOiB1J1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb25cbihsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgIngiKS5cblRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXJcbm9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgaXRlbSB3aG9zZVxuaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgZm9yXG5uZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzICJfX2dldGl0ZW1fXygpIlxubWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkXG50aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKLSAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKLSAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICJtYXRoLnNpbigpIlxuICAgICAgKCJtYXRoIiBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4gICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgZnVuY3Rpb25cJ3NcbiAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbiAgICAgICJfX21vZHVsZV9fIiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZFxuICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuXG4gICBCdWlsdC1pbiBtZXRob2RzXG4gICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCB0aGlzXG4gICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4gICAgICAiYWxpc3QuYXBwZW5kKCkiLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4gICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgIl9faW5pdF9fKCkiIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cblxuTW9kdWxlc1xuICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlXG4gICBjcmVhdGVkIGJ5IHRoZSAqaW1wb3J0IHN5c3RlbSogYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICJpbXBvcnQiXG4gICBzdGF0ZW1lbnQgKHNlZSAiaW1wb3J0IiksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBIG1vZHVsZVxuICAgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzXG4gICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuICAgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzIGVxdWl2YWxlbnRcbiAgIHRvICJtLl9fZGljdF9fWyJ4Il0iLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZVxuICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc25cJ3QgbmVlZGVkIG9uY2VcbiAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuXG4gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6ICJfX2RpY3RfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzIG5hbWU7XG4gICAiX19kb2NfXyIgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgIk5vbmUiIGlmXG4gICB1bmF2YWlsYWJsZTsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGVcbiAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQ1xuICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4gICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpc1xuICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCBhbGxvd1xuICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSBpc1xuICAgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzICJDIiwgc2F5KSB3b3VsZCB5aWVsZCBhXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuICAgb2JqZWN0IHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlcyBpcyAiQyIuICBXaGVuIGl0IHdvdWxkIHlpZWxkIGFcbiAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZCBieVxuICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cblxuICAgQ2xhc3MgYXR0cmlidXRlIGFzc2lnbm1lbnRzIHVwZGF0ZSB0aGUgY2xhc3NcJ3MgZGljdGlvbmFyeSwgbmV2ZXJcbiAgIHRoZSBkaWN0aW9uYXJ5IG9mIGEgYmFzZSBjbGFzcy5cblxuICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzIGluc3RhbmNlXG4gICAoc2VlIGJlbG93KS5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBjbGFzcyBuYW1lOyAiX19tb2R1bGVfXyIgaXNcbiAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgdGhlXG4gICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSB0dXBsZVxuICAgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluIHRoZVxuICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLlxuICAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwncyBjbGFzcyBoYXMgYVxuICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCBpbnN0ZWFkXG4gICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkkvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbiAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSAib3BlbigpIiBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgbWV0aG9kXG4gICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gbmFtZTtcbiAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7ICJjb19ubG9jYWxzIiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuICAgICAgImNvX3Zhcm5hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBsb2NhbFxuICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgaXMgYVxuICAgICAgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlXG4gICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhIHN0cmluZ1xuICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICJjb19jb25zdHMiXG4gICAgICBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX2ZpbGVuYW1lIiBpcyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4gICAgICAiY29fbG5vdGFiIiBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgImNvX3N0YWNrc2l6ZSIgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyIGVuY29kaW5nIGFcbiAgICAgIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuXG4gICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICIweDA0IlxuICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCBhblxuICAgICAgYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0ICIweDA4IiBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCBhcmJpdHJhcnlcbiAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuICAgICAgZ2VuZXJhdG9yLlxuXG4gICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uIilcbiAgICAgIGFsc28gdXNlIGJpdHMgaW4gImNvX2ZsYWdzIiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgY29kZSBvYmplY3RcbiAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiBpc1xuICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gZW5hYmxlZDtcbiAgICAgIGJpdHMgIjB4MTAiIGFuZCAiMHgxMDAwIiB3ZXJlIHVzZWQgaW4gZWFybGllciB2ZXJzaW9ucyBvZlxuICAgICAgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluICJjb19mbGFncyIgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG5cbiAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuICAgICAgImNvX2NvbnN0cyIgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyBzdGFja1xuICAgICAgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yICJOb25lIiBpZiB0aGlzIGlzIHRoZSBib3R0b21cbiAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gdGhpc1xuICAgICAgZnJhbWU7ICJmX2xvY2FscyIgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwIGxvY2FsXG4gICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICJmX2xhc3RpIlxuICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbiAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuXG4gICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciBvZlxuICAgICAgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiBqdW1wc1xuICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBIGRlYnVnZ2VyXG4gICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSB3cml0aW5nXG4gICAgICB0byBmX2xpbmVuby5cblxuICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIGZyYW1lLmNsZWFyKClcblxuICAgICAgICAgVGhpcyBtZXRob2QgY2xlYXJzIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBoZWxkIGJ5XG4gICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsIHRoZVxuICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlIGN5Y2xlc1xuICAgICAgICAgaW52b2x2aW5nIGZyYW1lIG9iamVjdHMgKGZvciBleGFtcGxlIHdoZW4gY2F0Y2hpbmcgYW5cbiAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuXG4gICAgICAgICAiUnVudGltZUVycm9yIiBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuXG5cbiAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuICAgVHJhY2ViYWNrIG9iamVjdHNcbiAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gIEFcbiAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuIHRoZVxuICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssIGF0XG4gICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250IG9mXG4gICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIGVudGVyZWQsXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgc2VjdGlvblxuICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgdGhlXG4gICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zIG5vXG4gICAgICBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5IGZvcm1hdHRlZClcbiAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyBpbnRlcmFjdGl2ZSxcbiAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgInN5cy5sYXN0X3RyYWNlYmFjayIuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiB0aGVcbiAgICAgIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkKSwgb3JcbiAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbiAgICAgIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDsgInRiX2xpbmVubyIgZ2l2ZXMgdGhlIGxpbmVcbiAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyB0aGVcbiAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW5cbiAgICAgIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWVcbiAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggbm9cbiAgICAgIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2Ugb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuXG4gICBTbGljZSBvYmplY3RzXG4gICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yICJfX2dldGl0ZW1fXygpIlxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICJzdG9wIlxuICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiIGlmXG4gICAgICBvbWl0dGVkLiAgVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKLSAndHlwZXNmdW5jdGlvbnMnOiB1J1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogImZ1bmMoYXJndW1lbnQtbGlzdCkiLlxuXG5UaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6IGJ1aWx0LWluIGZ1bmN0aW9uc1xuYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgb3BlcmF0aW9uICh0byBjYWxsXG50aGUgZnVuY3Rpb24pLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCwgaGVuY2UgdGhlXG5kaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuXG5TZWUgKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbWFwcGluZyc6IHUnXG5NYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG50aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSBjb21wdXRlcnMgc3RvcmVcbmZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSB1bndpc2UgdG8gdXNlXG50aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG5cbkRpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgImtleTpcbnZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgXCdzam9lcmRcJzpcbjQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAiZGljdCJcbmNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KCoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cblxuICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSBpcyBjcmVhdGVkLlxuICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgb2JqZWN0LCBhXG4gICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgdGhlIG1hcHBpbmdcbiAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAqaXRlcmFibGUqXG4gICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuIGl0ZXJhYmxlIHdpdGhcbiAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSBiZWNvbWVzIGEga2V5XG4gICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgY29ycmVzcG9uZGluZ1xuICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGZvciB0aGF0IGtleVxuICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG5cbiAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGVpclxuICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgdmFsdWUgZnJvbVxuICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LlxuXG4gICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsXG4gICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuXG4gICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuICAgICAgPj4+IGIgPSB7XCdvbmVcJzogMSwgXCd0d29cJzogMiwgXCd0aHJlZVwnOiAzfVxuICAgICAgPj4+IGMgPSBkaWN0KHppcChbXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnXSwgWzEsIDIsIDNdKSlcbiAgICAgID4+PiBkID0gZGljdChbKFwndHdvXCcsIDIpLCAoXCdvbmVcJywgMSksIChcJ3RocmVlXCcsIDMpXSlcbiAgICAgID4+PiBlID0gZGljdCh7XCd0aHJlZVwnOiAzLCBcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlcbiAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbiAgICAgIFRydWVcblxuICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yXG4gICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55IHZhbGlkIGtleXNcbiAgIGNhbiBiZSB1c2VkLlxuXG4gICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kIHRoZXJlZm9yZSxcbiAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG5cbiAgIGxlbihkKVxuXG4gICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG5cbiAgIGRba2V5XVxuXG4gICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiBhbmQgKmtleSpcbiAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgbWV0aG9kIHdpdGhcbiAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uIHRoZW4gcmV0dXJuc1xuICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yIG1ldGhvZHMgaW52b2tlXG4gICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgIktleUVycm9yIlxuICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuXG4gICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgbWV0aG9kIGlzIHVzZWRcbiAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG5cbiAgIGRba2V5XSA9IHZhbHVlXG5cbiAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgKmtleSogaXMgbm90XG4gICAgICBpbiB0aGUgbWFwLlxuXG4gICBrZXkgaW4gZFxuXG4gICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG5cbiAgIGl0ZXIoZClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICBUaGlzIGlzIGFcbiAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIGdldChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2VcbiAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gIk5vbmUiLCBzb1xuICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgdmFsdWUpIlxuICAgICAgcGFpcnMpLiBTZWUgdGhlICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgcG9wKGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiBhbmQgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSAiS2V5RXJyb3IiIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSAiKGtleSwgdmFsdWUpIiBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICAicG9waXRlbSgpIiBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyBlbXB0eSwgY2FsbGluZyAicG9waXRlbSgpIiByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIHVwZGF0ZShbb3RoZXJdKVxuXG4gICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gKm90aGVyKixcbiAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gIk5vbmUiLlxuXG4gICAgICAidXBkYXRlKCkiIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiAiZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpIi5cblxuICAgdmFsdWVzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgdmFsdWVzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHlcbiAgdmlldyBvZiBhICJkaWN0Ii5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiIGFuZFxuImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uIHRoZVxuZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnkgY2hhbmdlcyxcbnRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mICIoa2V5LCB2YWx1ZSkiKSBpbiB0aGUgZGljdGlvbmFyeS5cblxuICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIGFuIGFyYml0cmFyeSBvcmRlciB3aGljaCBpc1xuICAgbm9uLXJhbmRvbSwgdmFyaWVzIGFjcm9zcyBQeXRob24gaW1wbGVtZW50YXRpb25zLCBhbmQgZGVwZW5kcyBvblxuICAgdGhlIGRpY3Rpb25hcnlcJ3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmIGtleXMsXG4gICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gaW50ZXJ2ZW5pbmdcbiAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsIGRpcmVjdGx5XG4gICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiIHBhaXJzIHVzaW5nXG4gICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgd2F5IHRvXG4gICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gZC5pdGVtcygpXSIuXG5cbiAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeVxuICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLCB2YWx1ZXNcbiAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgdmFsdWUpIlxuICAgdHVwbGUpLlxuXG5LZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kIGhhc2hhYmxlLlxuSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgIihrZXksIHZhbHVlKSIgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyAiY29sbGVjdGlvbnMuYWJjLlNldCIgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsICI9PSIsXG4iPCIsIG9yICJeIikuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAotICd0eXBlc21ldGhvZHMnOiB1J1xuTWV0aG9kc1xuKioqKioqKlxuXG5NZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbm90YXRpb24uXG5UaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgImFwcGVuZCgpIiBvbiBsaXN0cylcbmFuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkIHdpdGggdGhlXG50eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cblxuSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgbmFtZXNwYWNlKVxudGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCBtZXRob2QqIChhbHNvXG5jYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkIHRoZSAic2VsZiJcbmFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3byBzcGVjaWFsIHJlYWQtXG5vbmx5IGF0dHJpYnV0ZXM6ICJtLl9fc2VsZl9fIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRob2Rcbm9wZXJhdGVzLCBhbmQgIm0uX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlIG1ldGhvZC5cbkNhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSBlcXVpdmFsZW50IHRvXG5jYWxsaW5nICJtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKCJtZXRoLl9fZnVuY19fIiksIHNldHRpbmcgbWV0aG9kXG5hdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gc2V0IGFuXG5hdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiAiQXR0cmlidXRlRXJyb3IiIGJlaW5nIHJhaXNlZC4gIEluXG5vcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBpdCBvbiB0aGVcbnVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbiAgIC4uLiAgICAgICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSBcJ215IG5hbWUgaXMgbWV0aG9kXCcgICMgY2FuXCd0IHNldCBvbiB0aGUgbWV0aG9kXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBBdHRyaWJ1dGVFcnJvcjogXCdtZXRob2RcJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSBcJ3dob2FtaVwnXG4gICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pXG4gICBcJ215IG5hbWUgaXMgbWV0aG9kXCdcblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtb2R1bGVzJzogdSdcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczogIm0ubmFtZSIsXG53aGVyZSAqbSogaXMgYSBtb2R1bGUgYW5kICpuYW1lKiBhY2Nlc3NlcyBhIG5hbWUgZGVmaW5lZCBpbiAqbSpcJ3NcbnN5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgdGhhdCB0aGVcbiJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gb24gYSBtb2R1bGVcbm9iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0IG5hbWVkICpmb28qIHRvXG5leGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhIG1vZHVsZVxubmFtZWQgKmZvbyogc29tZXdoZXJlLilcblxuQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyB0aGVcbmRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlXCdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUsIGJ1dCBkaXJlY3RcbmFzc2lnbm1lbnQgdG8gdGhlICJfX2RpY3RfXyIgYXR0cmlidXRlIGlzIG5vdCBwb3NzaWJsZSAoeW91IGNhbiB3cml0ZVxuIm0uX19kaWN0X19bXCdhXCddID0gMSIsIHdoaWNoIGRlZmluZXMgIm0uYSIgdG8gYmUgIjEiLCBidXQgeW91IGNhblwndFxud3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgaXMgbm90XG5yZWNvbW1lbmRlZC5cblxuTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8bW9kdWxlXG5cJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgd3JpdHRlbiBhc1xuIjxtb2R1bGUgXCdvc1wnIGZyb20gXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCi0gJ3R5cGVzc2VxJzogdSdcblNlcXVlbmNlIFR5cGVzIC0tLSAibGlzdCIsICJ0dXBsZSIsICJyYW5nZSJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG5pcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnNcbm9uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cblxuVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5LlxuSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLFxuKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueVxudHlwZSBhbmQgdmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqLlxuXG5UaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgKHJlcGV0aXRpb24pXG5vcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpY1xub3BlcmF0aW9ucy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJGYWxzZSIgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAieCBub3QgaW4gcyIgICAgICAgICAgICAgICB8ICJGYWxzZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJUcnVlIiAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicyArIHQiICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKiBuIiBvciAibiAqIHMiICAgICAgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgICB8ICgyKSg3KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibGVuKHMpIiAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgIm1pbihzKSIgICAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtYXgocykiICAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHwgKDgpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsXG50dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbmNvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbnR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW5cbnRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hpbGUgdGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlXG4gICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzXG4gICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4gICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuXG4gICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbiAgICAgIFRydWVcblxuMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzXG4gICBhcmUgc2hhbGxvdzsgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50c1xuICAgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbjMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mXG4gICB0aGUgc3RyaW5nOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG5cbjQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlIG9mXG4gICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAiTm9uZSIsXG4gICB1c2UgIjAiLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXNcbiAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cblxuNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzIHRoZVxuICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgInggPSBpICsgbiprIiBzdWNoIHRoYXQgIjAgPD0gbiA8XG4gICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgImkrMiprIixcbiAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbiAgIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZVxuICAgImxlbihzKSIuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yICJOb25lIiwgdGhleSBiZWNvbWUgImVuZCJcbiAgIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKiBjYW5ub3QgYmVcbiAgIHplcm8uIElmICprKiBpcyAiTm9uZSIsIGl0IGlzIHRyZWF0ZWQgbGlrZSAiMSIuXG5cbjYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ld1xuICAgb2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZFxuICAgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbFxuICAgc2VxdWVuY2UgbGVuZ3RoLiBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG9cbiAgIG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgInN0ciIgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kIHVzZVxuICAgICAic3RyLmpvaW4oKSIgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgImlvLlN0cmluZ0lPIiBpbnN0YW5jZVxuICAgICBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiBvYmplY3RzIGFyZVxuICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0XG4gICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgInNbaTpqXS5pbmRleCh4KSIsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiBpbnN0YW5jZXMsIHRvXG5iZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiIGluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiICAgICAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoc2FtZSBhcyAic1tsZW4ocyk6bGVuKHMpXSA9IHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAiW10iXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2FdIixcbiAgICAgIlthLCBiLCBjXSJcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICJsaXN0KFwnYWJjXCcpIlxuICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiByZXR1cm5zICJbMSwgMixcbiAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5XG4gICBsaXN0LCAiW10iLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICJzb3J0ZWQoKSJcbiAgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgY29tcGFyaXNvbnNcbiAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb25cbiAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGVcbiAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG5cbiAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkXG4gICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0XG4gICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAiZW51bWVyYXRlKCkiXG5idWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Vcbm9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAic2V0IiBvclxuImRpY3QiIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAiKCkiXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgIihhLCkiXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG5cbiAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICJ0dXBsZShpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsIFwnYlwnLCBcJ2NcJykiXG4gICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgaXNcbiAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLFxuICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlXG4gICBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgInJbaV0gPFxuICAgc3RvcCIuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuICAgIk92ZXJmbG93RXJyb3IiLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICJ0dXBsZSIgaXNcbnRoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50IG9mXG5tZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgb25seVxuc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWxcbml0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG5wcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLFxuc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS1cbmxpc3QsIHR1cGxlLCByYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzIHRoZW0gYXNcbnNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXlcbnJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSBvYmplY3RzXG50aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCJcbmF0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgInJhbmdlKDAsIDMsXG4yKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50XG50aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgXCc9PVwnIGFuZCBcJyE9XCcgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzXG5iYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZ1xuYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicsCi0gJ3R5cGVzc2VxLW11dGFibGUnOiB1J1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHQiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJywKLSAndW5hcnknOiB1J1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG5hcmd1bWVudC5cblxuVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICd5aWVsZCc6IHUnXG5UaGUgInlpZWxkIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cbkEgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSAqeWllbGRcbmV4cHJlc3Npb24qLiBUaGUgeWllbGQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIG9taXQgdGhlIHBhcmVudGhlc2VzXG50aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXF1aXJlZCBpbiB0aGUgZXF1aXZhbGVudCB5aWVsZCBleHByZXNzaW9uXG5zdGF0ZW1lbnQuIEZvciBleGFtcGxlLCB0aGUgeWllbGQgc3RhdGVtZW50c1xuXG4gICB5aWVsZCA8ZXhwcj5cbiAgIHlpZWxkIGZyb20gPGV4cHI+XG5cbmFyZSBlcXVpdmFsZW50IHRvIHRoZSB5aWVsZCBleHByZXNzaW9uIHN0YXRlbWVudHNcblxuICAgKHlpZWxkIDxleHByPilcbiAgICh5aWVsZCBmcm9tIDxleHByPilcblxuWWllbGQgZXhwcmVzc2lvbnMgYW5kIHN0YXRlbWVudHMgYXJlIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGFcbipnZW5lcmF0b3IqIGZ1bmN0aW9uLCBhbmQgYXJlIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yXG5mdW5jdGlvbi4gIFVzaW5nIHlpZWxkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvIGNhdXNlXG50aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWxcbmZ1bmN0aW9uLlxuXG5Gb3IgZnVsbCBkZXRhaWxzIG9mICJ5aWVsZCIgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG5leHByZXNzaW9ucyogc2VjdGlvbi5cbid9CisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBTZXAgMTIgMTc6MjI6MjQgMjAxNQordG9waWNzID0geydhc3NlcnQnOiAnXG4nCisgICAgICAgICAgICdUaGUgImFzc2VydCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2VydCBzdGF0ZW1lbnRzIGFyZSBhIGNvbnZlbmllbnQgd2F5IHRvIGluc2VydCBkZWJ1Z2dpbmcgJworICAgICAgICAgICAnYXNzZXJ0aW9uc1xuJworICAgICAgICAgICAnaW50byBhIHByb2dyYW06XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGFzc2VydF9zdG10IDo6PSAiYXNzZXJ0IiBleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHNpbXBsZSBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24iLCBpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiAnCisgICAgICAgICAgICdyZWZlclxuJworICAgICAgICAgICAndG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiICcKKyAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICdub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAnKGNvbW1hbmRcbicKKyAgICAgICAgICAgJ2xpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdhc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlICcKKyAgICAgICAgICAgJ3RpbWUuICBOb3RlXG4nCisgICAgICAgICAgICd0aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgJworICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAndGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgJworICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICdzdGFjayB0cmFjZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSAnCisgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAorICdhc3NpZ25tZW50JzogJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgJworICAgICAgICAgICAgICAgJ2FuZCB0b1xuJworICAgICAgICAgICAgICAgJ21vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoZXhwcmVzc2lvbl9saXN0IHwgJworICAgICAgICAgICAgICAgJ3lpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICAnICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiB0YXJnZXRfbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAnKmF0dHJpYnV0ZXJlZiosICpzdWJzY3JpcHRpb24qLCBhbmQgKnNsaWNpbmcqLilcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAnCisgICAgICAgICAgICAgICAnKHJlbWVtYmVyIHRoYXRcbicKKyAgICAgICAgICAgICAgICd0aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsICcKKyAgICAgICAgICAgICAgICd0aGUgbGF0dGVyXG4nCisgICAgICAgICAgICAgICAneWllbGRpbmcgYSB0dXBsZSkgYW5kIGFzc2lnbnMgdGhlIHNpbmdsZSByZXN1bHRpbmcgb2JqZWN0IHRvICcKKyAgICAgICAgICAgICAgICdlYWNoIG9mXG4nCisgICAgICAgICAgICAgICAndGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXRcbicKKyAgICAgICAgICAgICAgICcobGlzdCkuIFdoZW4gYSB0YXJnZXQgaXMgcGFydCBvZiBhIG11dGFibGUgb2JqZWN0IChhbiAnCisgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAncmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgJworICAgICAgICAgICAgICAgJ1RoZSBydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgJworICAgICAgICAgICAgICAgJ2dpdmVuIHdpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAgICAgICAnaGllcmFyY2h5KikuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSAnCisgICAgICAgICAgICAgICAnZW5jbG9zZWQgaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0OiBUaGUgb2JqZWN0IGlzICcKKyAgICAgICAgICAgICAgICdhc3NpZ25lZCB0b1xuJworICAgICAgICAgICAgICAgJyAgdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiAnCisgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAnICBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyAnCisgICAgICAgICAgICAgICAnYXMgdGhlcmVcbicKKyAgICAgICAgICAgICAgICcgIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgJworICAgICAgICAgICAgICAgJ2Fzc2lnbmVkLCBmcm9tXG4nCisgICAgICAgICAgICAgICAnICBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAnICAgIGFzdGVyaXNrLCBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgJworICAgICAgICAgICAgICAgJ2Egc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgICAgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICAgIGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgc2VxdWVuY2UgYXJlICcKKyAgICAgICAgICAgICAgICdhc3NpZ25lZCxcbicKKyAgICAgICAgICAgICAgICcgICAgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgJworICAgICAgICAgICAgICAgJ3RhcmdldC4gIFRoZVxuJworICAgICAgICAgICAgICAgJyAgICBmaW5hbCBpdGVtcyBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdhZnRlciB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiB0aGUgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlIGlzXG4nCisgICAgICAgICAgICAgICAnICAgIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgJworICAgICAgICAgICAgICAgJ2VtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgJworICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAnICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnaXRlbXMgYXJlXG4nCisgICAgICAgICAgICAgICAnICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAgICd0YXJnZXRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgc2luZ2xlIHRhcmdldCBpcyByZWN1cnNpdmVseSAnCisgICAgICAgICAgICAgICAnZGVmaW5lZCBhc1xuJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBJZiB0aGUgbmFtZSBkb2VzIG5vdCBvY2N1ciBpbiBhICJnbG9iYWwiIG9yICJub25sb2NhbCIgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICAgJ29iamVjdCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgJworICAgICAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgJworICAgICAgICAgICAgICAgJ2NhdXNlIHRoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICduYW1lIHRvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYSB0YXJnZXQgbGlzdCBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcyBvciAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICcgIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICdzYW1lIG51bWJlclxuJworICAgICAgICAgICAgICAgJyAgb2YgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzICcKKyAgICAgICAgICAgICAgICdpdGVtcyBhcmVcbicKKyAgICAgICAgICAgICAgICcgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAgICd0YXJnZXRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpblxuJworICAgICAgICAgICAgICAgJyAgdGhlIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYW4gb2JqZWN0ICcKKyAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAnCisgICAgICAgICAgICAgICAnIlR5cGVFcnJvciIgaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgJworICAgICAgICAgICAgICAgJ2l0IHJhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgJworICAgICAgICAgICAgICAgJ0Nscy54IGFzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgIgorICAgICAgICAgICAgICAgJ2lzIGFza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgJworICAgICAgICAgICAgICAgJ2luZGV4LiAgSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgJworICAgICAgICAgICAgICAgJ3RvIGFcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzICIKKyAgICAgICAgICAgICAgICdrZXkgdHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgJworICAgICAgICAgICAgICAgJ2EgbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2Ugb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2Ugb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gIgorICAgICAgICAgICAgICAgJ2ludGVnZXJzLiBJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgIgorICAgICAgICAgICAgICAgJ3RvIGl0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkICcKKyAgICAgICAgICAgICAgICd0byByZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLCBhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAndGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnCisgICAgICAgICAgICAgICAiJ3NpbXVsdGFuZW5vdXMnIChmb3JcbiIKKyAgICAgICAgICAgICAgICdleGFtcGxlICJhLCBiID0gYiwgYSIgc3dhcHMgdHdvIHZhcmlhYmxlcyksIG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICcqd2l0aGluKiB0aGVcbicKKyAgICAgICAgICAgICAgICdjb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBvY2N1ciBsZWZ0LXRvLXJpZ2h0LCAnCisgICAgICAgICAgICAgICAnc29tZXRpbWVzXG4nCisgICAgICAgICAgICAgICAncmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICdwcmludHNcbicKKyAgICAgICAgICAgICAgICciWzAsIDJdIjpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICB4ID0gWzAsIDFdXG4nCisgICAgICAgICAgICAgICAnICAgaSA9IDBcbicKKyAgICAgICAgICAgICAgICcgICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgJworICAgICAgICAgICAgICAgJ3VwZGF0ZWRcbicKKyAgICAgICAgICAgICAgICcgICBwcmludCh4KVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgJworICAgICAgICAgICAgICAgJ2xhc3QgdGhyZWVcbicKKyAgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSAnCisgICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICAnYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgICdvbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAgJ1RoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgICdyZXdyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICcieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsICcKKyAgICAgICAgICAgICAgICdlZmZlY3QuIEluIHRoZVxuJworICAgICAgICAgICAgICAgJ2F1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiAnCisgICAgICAgICAgICAgICAncG9zc2libGUsXG4nCisgICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICAncmF0aGVyIHRoYW5cbicKKyAgICAgICAgICAgICAgICdjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSAnCisgICAgICAgICAgICAgICAnb2xkIG9iamVjdFxuJworICAgICAgICAgICAgICAgJ2lzIG1vZGlmaWVkIGluc3RlYWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlICcKKyAgICAgICAgICAgICAgICd0aGUgbGVmdC1cbicKKyAgICAgICAgICAgICAgICdoYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yICcKKyAgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAgJys9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCAnCisgICAgICAgICAgICAgICAncGVyZm9ybXNcbicKKyAgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gJworICAgICAgICAgICAgICAgJyJhW2ldIi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgJworICAgICAgICAgICAgICAgJ3RhcmdldHMgaW4gYVxuJworICAgICAgICAgICAgICAgJ3NpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuICcKKyAgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgJ3RoZSBub3JtYWxcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgJworICAgICAgICAgICAgICAgJ2Fib3V0XG4nCisgICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRzLlxuJywKKyAnYXRvbS1pZGVudGlmaWVycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyAoTmFtZXMpXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0FuIGlkZW50aWZpZXIgb2NjdXJyaW5nIGFzIGFuIGF0b20gaXMgYSBuYW1lLiAgU2VlICcKKyAgICAgICAgICAgICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gKk5hbWluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdG9tIHlpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAncmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXh0dWFsbHkgb2NjdXJzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBhICpwcml2YXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnbmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2EgbG9uZ2VyIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3NpbmdsZSB1bmRlcnNjb3JlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiX19zcGFtIlxuJworICAgICAgICAgICAgICAgICAgICAgJ29jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3RvICJfSGFtX19zcGFtIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBpbiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnZXh0cmVtZWx5IGxvbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0aW9uIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndW5kZXJzY29yZXMsIG5vXG4nCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCisgJ2F0b20tbGl0ZXJhbHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnTGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuICcKKyAgICAgICAgICAgICAgICAgICd0eXBlIChzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBnaXZlblxuJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqICcKKyAgICAgICAgICAgICAgICAgICdmb3IgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kICcKKyAgICAgICAgICAgICAgICAgICdoZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICJvYmplY3QncyBpZGVudGl0eSBpcyBsZXNzIGltcG9ydGFudCB0aGFuIGl0cyB2YWx1ZS4gICIKKyAgICAgICAgICAgICAgICAgICdNdWx0aXBsZVxuJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgJworICAgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAgICdvY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgJworICAgICAgICAgICAgICAgICAgJ21heSBvYnRhaW5cbicKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBvYmplY3Qgb3IgYSBkaWZmZXJlbnQgb2JqZWN0IHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLlxuJywKKyAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ25vciBpcyBpdCBmb3VuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG5hbWUuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgJ29yIHJhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCBtZWNoYW5pc20sXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2lzIGRvbmUgYm90aCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICcKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICAnCisgICAgICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250cm9sIGJ5IG5vdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgKGJ1dFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhY3R1YWxseSBnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmZpbml0ZSByZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGJhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2tpbmcgdXAgc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAgICAnbG9va3VwKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWUsIGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICciZGVsIG9iai5uYW1lIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGlyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBtdXN0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhIGxpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc29ydHMgaXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzJyAiCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAnCisgICAgICAgICAgICAgICAgICAgICAnKGNsYXNzIGF0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCAnCisgICAgICAgICAgICAgICAgICAgICAnb3IgIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICAnCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyBtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnImluc3BlY3QiIG1vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2V0dGluZyB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnZHluYW1pYyBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGFuIG9iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXQsIG9yIGRlbGV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgIgorICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLCAiYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnb25lIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdCBiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdvY2N1cnMgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAgICAnd2VyZSBkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcsICJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciAnCisgICAgICAgICAgICAgICAgICAgICAnY29kZSBkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtZWQgaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCAnCisgICAgICAgICAgICAgICAgICAgICAndHlwZShhKSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0NsYXNzIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjYWxsOlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdTdXBlciBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAgICAgJyJzdXBlcihCLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3Igd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosICcKKyAgICAgICAgICAgICAgICAgICAgICdvYmouX19jbGFzc19fKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uIGRlcGVuZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdvbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICAgICAnYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHdpbGwgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIG9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgICAgJyJfX3NldF9fKCkiIGFuZC9vclxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnbmVpdGhlciwgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyAnCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGJvdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgIl9fZ2V0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnImNsYXNzbWV0aG9kKCkiKSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIGNhblxuJworICAgICAgICAgICAgICAgICAgICAgJ3JlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnYSBwcm9wZXJ0eS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdfX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSAnCisgICAgICAgICAgICAgICAgICAgICAnZmV3IGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ3doZW4gY3JlYXRpbmcgbGFyZ2VcbicKKyAgICAgICAgICAgICAgICAgICAgICdudW1iZXJzIG9mIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gYSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBvZiBpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgdG8gaG9sZCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdwcmV2ZW50cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGVhY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgJworICAgICAgICAgICAgICAgICAgICAgJ3NvIGEgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgICAgICAgICAnQXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIi4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyAnCisgICAgICAgICAgICAgICAgICAgICAndG8gaXRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdhZGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG5hbWUuICBBc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0ICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0IHZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyAnCisgICAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCAnCisgICAgICAgICAgICAgICAgICAgICAndG8gdGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCAnCisgICAgICAgICAgICAgICAgICAgICAnaGF2ZSBhICpfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcywgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBiYXNlIGNsYXNzKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICAnCisgICAgICAgICAgICAgICAgICAgICAnSW4gdGhlIGZ1dHVyZSwgYVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlcml2ZWQgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgJworICAgICAgICAgICAgICAgICAgICAgJyJieXRlcyIgYW5kICJ0dXBsZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qLiBNYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0dHJpYnV0ZSByZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdBbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncGVyaW9kIGFuZCBhIG5hbWU6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZXMsIHdoaWNoIG1vc3Qgb2JqZWN0cyBkby4gIFRoaXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QgaXMgdGhlblxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVyLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWN0aW9uIGNhbiBiZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0IHByb2R1Y2VkIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBtYXkgeWllbGQgZGlmZmVyZW50IG9iamVjdHMuXG4nLAorICdhdWdhc3NpZ24nOiAnXG4nCisgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgJworICAgICAgICAgICAgICAnc3RhdGVtZW50LCBvZiBhXG4nCisgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wICcKKyAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAnICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8ICcKKyAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICciLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbicKKyAgICAgICAgICAgICAgJyAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSAnCisgICAgICAgICAgICAgICdsYXN0IHRocmVlXG4nCisgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCAnCisgICAgICAgICAgICAgICdlZmZlY3QuIEluIHRoZVxuJworICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgJworICAgICAgICAgICAgICAnb2xkIG9iamVjdFxuJworICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICdsZWZ0LVxuJworICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gJworICAgICAgICAgICAgICAnImFbaV0iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgJworICAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhXG4nCisgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzICcKKyAgICAgICAgICAgICAgJ3RoZSBub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgJworICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyICcKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRzLlxuJywKKyAnYmluYXJ5JzogJ1xuJworICAgICAgICAgICAnQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbicKKyAgICAgICAgICAgJ2xldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byAnCisgICAgICAgICAgICdjZXJ0YWluIG5vbi1cbicKKyAgICAgICAgICAgJ251bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgJworICAgICAgICAgICAndHdvXG4nCisgICAgICAgICAgICdsZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG4nCisgICAgICAgICAgICdvcGVyYXRvcnM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuJworICAgICAgICAgICAnICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuJworICAgICAgICAgICAnICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCAnCisgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAnaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ251bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgJworICAgICAgICAgICAndG9nZXRoZXIuXG4nCisgICAgICAgICAgICdJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhICcKKyAgICAgICAgICAgJ25lZ2F0aXZlXG4nCisgICAgICAgICAgICdyZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbicKKyAgICAgICAgICAgJ211bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgJworICAgICAgICAgICAnb3BlcmF0b3IuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAncXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuJworICAgICAgICAgICAnY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCAnCisgICAgICAgICAgICd3aGlsZVxuJworICAgICAgICAgICAnZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgIm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSAnZmxvb3InIGZ1bmN0aW9uIGFwcGxpZWQgdG8gIgorICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdyZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiAnCisgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gJworICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgJ3RoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAnY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuJworICAgICAgICAgICAnIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyAnCisgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAnbnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICcKKyAgICAgICAgICAgJyI0KjAuNyArXG4nCisgICAgICAgICAgICcwLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgJworICAgICAgICAgICAnc2FtZSBzaWduXG4nCisgICAgICAgICAgICdhcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgJ3Jlc3VsdCBpc1xuJworICAgICAgICAgICAnc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgJworICAgICAgICAgICAnWzFdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgJworICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICdpZGVudGl0eTogInggPT0gKHgvL3kpKnkgKyAoeCV5KSIuICBGbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvICcKKyAgICAgICAgICAgJ2FyZSBhbHNvXG4nCisgICAgICAgICAgICdjb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjogImRpdm1vZCh4LCB5KSAnCisgICAgICAgICAgICc9PVxuJworICAgICAgICAgICAnKHgvL3ksIHgleSkiLiBbMl0uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlICcKKyAgICAgICAgICAgJyIlIlxuJworICAgICAgICAgICAnb3BlcmF0b3IgaXMgYWxzbyBvdmVybG9hZGVkIGJ5IHN0cmluZyBvYmplY3RzIHRvIHBlcmZvcm0gJworICAgICAgICAgICAnb2xkLXN0eWxlXG4nCisgICAgICAgICAgICdzdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gIFRoZSBzeW50YXggJworICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICdzdHJpbmcgZm9ybWF0dGluZyBpcyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZSxcbicKKyAgICAgICAgICAgJ3NlY3Rpb24gKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSAnCisgICAgICAgICAgICciZGl2bW9kKCkiXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgJworICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAnZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSAiYWJzKCkiIGZ1bmN0aW9uIGlmICcKKyAgICAgICAgICAgJ2FwcHJvcHJpYXRlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIisiIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIGJlIHNlcXVlbmNlcyBvZiAnCisgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAndHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiAnCisgICAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAgICdhbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuJworICAgICAgICAgICAnY29uY2F0ZW5hdGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIi0iIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0cyAnCisgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICdUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLlxuJywKKyAnYml0d2lzZSc6ICdcbicKKyAgICAgICAgICAgICdCaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0VhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgJworICAgICAgICAgICAgJ2xldmVsOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbicKKyAgICAgICAgICAgICcgICB4b3JfZXhwciA6Oj0gYW5kX2V4cHIgfCB4b3JfZXhwciAiXiIgYW5kX2V4cHJcbicKKyAgICAgICAgICAgICcgICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAiJiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIEFORCBvZiBpdHMgYXJndW1lbnRzLCB3aGljaCAnCisgICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAgJ2JlIGludGVnZXJzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbicKKyAgICAgICAgICAgICdhcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzICcKKyAgICAgICAgICAgICdhcmd1bWVudHMsXG4nCisgICAgICAgICAgICAnd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicsCisgJ2JsdGluLWNvZGUtb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0NvZGUgT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0NvZGUgb2JqZWN0cyBhcmUgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gdG8gJworICAgICAgICAgICAgICAgICAgICAgICAncmVwcmVzZW50ICJwc2V1ZG8tXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdjb21waWxlZCIgZXhlY3V0YWJsZSBQeXRob24gY29kZSBzdWNoIGFzIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgICAnYm9keS4gVGhleSBkaWZmZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgImZyb20gZnVuY3Rpb24gb2JqZWN0cyBiZWNhdXNlIHRoZXkgZG9uJ3QgY29udGFpbiBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0byB0aGVpclxuJworICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAgICAgICAnaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnImNvZGUiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Bhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuJworICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1NlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicsCisgJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBFbGxpcHNpcyBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnKlNsaWNpbmdzKikuICBJdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxsaXBzaXMgb2JqZWN0LCBuYW1lZFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnIkVsbGlwc2lzIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKEVsbGlwc2lzKSgpIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWNlcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyJFbGxpcHNpcyIgc2luZ2xldG9uLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdJdCBpcyB3cml0dGVuIGFzICJFbGxpcHNpcyIgb3IgIi4uLiIuXG4nLAorICdibHRpbi1udWxsLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAnVGhlIE51bGwgT2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgIgorICAgICAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgJworICAgICAgICAgICAgICAgICAgICAgICdleGFjdGx5IG9uZSBudWxsXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCwgbmFtZWQgIk5vbmUiIChhIGJ1aWx0LWluIG5hbWUpLiAgJworICAgICAgICAgICAgICAgICAgICAgICcidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAnc2FtZSBzaW5nbGV0b24uXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICdJdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCisgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUgT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gJworICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgdHlwZSBpc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJ0eXBlKCkiLiAgVGhlcmUgJworICAgICAgICAgICAgICAgICAgICAgICAnYXJlIG5vIHNwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgb24gdHlwZXMuICBUaGUgc3RhbmRhcmQgbW9kdWxlICJ0eXBlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyBuYW1lcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPGNsYXNzIFwnaW50XCc+Ii5cbicsCisgJ2Jvb2xlYW5zJzogJ1xuJworICAgICAgICAgICAgICdCb29sZWFuIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBvcl90ZXN0ICA6Oj0gYW5kX3Rlc3QgfCBvcl90ZXN0ICJvciIgYW5kX3Rlc3RcbicKKyAgICAgICAgICAgICAnICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbicKKyAgICAgICAgICAgICAnICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgJ3VzZWQgYnkgY29udHJvbCBmbG93IHN0YXRlbWVudHMsIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJ3N0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuJworICAgICAgICAgICAgICdkaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyB0cnVlLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIGN1c3RvbWl6ZSB0aGVpciB0cnV0aCB2YWx1ZSAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGluZyBhICJfX2Jvb2xfXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnIkZhbHNlIlxuJworICAgICAgICAgICAgICdvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiAieCBhbmQgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIGZhbHNlLCAnCisgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICd2YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgJworICAgICAgICAgICAgICdyZXN1bHRpbmcgdmFsdWVcbicKKyAgICAgICAgICAgICAnaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiAieCBvciB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgJworICAgICAgICAgICAgICdpdHMgdmFsdWVcbicKKyAgICAgICAgICAgICAnaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyAnCisgICAgICAgICAgICAgJ3ZhbHVlIGlzXG4nCisgICAgICAgICAgICAgJ3JldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKE5vdGUgdGhhdCBuZWl0aGVyICJhbmQiIG5vciAib3IiIHJlc3RyaWN0IHRoZSB2YWx1ZSBhbmQgdHlwZSAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgJworICAgICAgICAgICAgICdldmFsdWF0ZWRcbicKKyAgICAgICAgICAgICAnYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmICJzIiBpcyBhIHN0cmluZyAnCisgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAnc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgZGVmYXVsdCB2YWx1ZSBpZiBpdCBpcyBlbXB0eSwgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcicyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byAnCisgICAgICAgICAgICAgJ2NyZWF0ZSBhXG4nCisgICAgICAgICAgICAgJ25ldyB2YWx1ZSwgaXQgcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSAnCisgICAgICAgICAgICAgJ29mIGl0c1xuJworICAgICAgICAgICAgICdhcmd1bWVudCAoZm9yIGV4YW1wbGUsICJub3QgXCdmb29cJyIgcHJvZHVjZXMgIkZhbHNlIiByYXRoZXIgJworICAgICAgICAgICAgICd0aGFuICJcJ1wnIi4pXG4nLAorICdicmVhayc6ICdcbicKKyAgICAgICAgICAnVGhlICJicmVhayIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluICcKKyAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICdsb29wLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICcKKyAgICAgICAgICAnImVsc2UiXG4nCisgICAgICAgICAgJ2NsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgYSAiZm9yIiBsb29wIGlzIHRlcm1pbmF0ZWQgYnkgImJyZWFrIiwgdGhlIGxvb3AgY29udHJvbCAnCisgICAgICAgICAgJ3RhcmdldFxuJworICAgICAgICAgICdrZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1doZW4gImJyZWFrIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgJ2NsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdsb29wLlxuJywKKyAnY2FsbGFibGUtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247ICcKKyAgICAgICAgICAgICAgICAgICAnaWYgdGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJywKKyAnY2FsbHMnOiAnXG4nCisgICAgICAgICAgJ0NhbGxzXG4nCisgICAgICAgICAgJyoqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhICcKKyAgICAgICAgICAncG9zc2libHlcbicKKyAgICAgICAgICAnZW1wdHkgc2VyaWVzIG9mICphcmd1bWVudHMqOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2FsbCAgICAgICAgICAgICAgICAgOjo9IHByaW1hcnkgIigiIFthcmd1bWVudF9saXN0IFsiLCJdIHwgJworICAgICAgICAgICdjb21wcmVoZW5zaW9uXSAiKSJcbicKKyAgICAgICAgICAnICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgJworICAgICAgICAgICdrZXl3b3JkX2FyZ3VtZW50c11cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqIiBleHByZXNzaW9uXSBbIiwiICcKKyAgICAgICAgICAna2V5d29yZF9hcmd1bWVudHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKioiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZF9hcmd1bWVudHMgWyIsIiAiKiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgJworICAgICAgICAgICdleHByZXNzaW9uXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8ICIqIiBleHByZXNzaW9uIFsiLCIga2V5d29yZF9hcmd1bWVudHNdICcKKyAgICAgICAgICAnWyIsIiAiKioiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJyAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBleHByZXNzaW9uICgiLCIgZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuJworICAgICAgICAgICcgICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJ2Z1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnb2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuJworICAgICAgICAgICciX19jYWxsX18oKSIgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgJ2V2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbicKKyAgICAgICAgICAnKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBmb3JtYWwgKnBhcmFtZXRlciogJworICAgICAgICAgICdsaXN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkICcKKyAgICAgICAgICAnc2xvdHMgaXNcbicKKyAgICAgICAgICAnY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuJworICAgICAgICAgICdhcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICd2YWx1ZSBvZiB0aGUgYXJndW1lbnQgaXMgcGxhY2VkIGluIHRoZSBzbG90LCBmaWxsaW5nIGl0IChldmVuIGlmICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgJworICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgJ2JlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICcoRGVmYXVsdFxuJworICAgICAgICAgICd2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICdtdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAiYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlICcKKyAgICAgICAgICAnYXJlIGFueVxuJworICAgICAgICAgICd1bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgJworICAgICAgICAgICciVHlwZUVycm9yIlxuJworICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJ3RoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbicKKyAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgJworICAgICAgICAgICdldmVuXG4nCisgICAgICAgICAgImlmIHRoZXkgYXJlICduYW1lZCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxuIgorICAgICAgICAgICd0aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAnZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvICcKKyAgICAgICAgICAncGFyc2VcbicKKyAgICAgICAgICAndGhlaXIgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3Nsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzXG4nCisgICAgICAgICAgJyhvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgJworICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAnbmFtZSwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgJworICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICdleGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgJworICAgICAgICAgICciZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhbiBpdGVyYWJsZS4gIEVsZW1lbnRzIGZyb20gdGhpcyBpdGVyYWJsZSBhcmUgJworICAgICAgICAgICd0cmVhdGVkXG4nCisgICAgICAgICAgJ2FzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBpZiB0aGVyZSBhcmVcbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCBhbmQgImV4cHJlc3Npb24iIGV2YWx1YXRlcyAnCisgICAgICAgICAgJ3RvIGFcbicKKyAgICAgICAgICAnc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTStOXG4nCisgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgKnkxKiwgLi4uLCAqeU0qLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4ICcKKyAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgJ2FwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIHRoZSAiKipleHByZXNzaW9uIiBhcmd1bWVudCwgaWYgYW55IC0tICcKKyAgICAgICAgICAnc2VlXG4nCisgICAgICAgICAgJ2JlbG93KS4gIFNvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IGRlZiBmKGEsIGIpOlxuJworICAgICAgICAgICcgICAuLi4gIHByaW50KGEsIGIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICA+Pj4gZihiPTEsICooMiwpKVxuJworICAgICAgICAgICcgICAyIDFcbicKKyAgICAgICAgICAnICAgPj4+IGYoYT0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAiICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYSdcbiIKKyAgICAgICAgICAnICAgPj4+IGYoMSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDEgMlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlICIqZXhwcmVzc2lvbiIgJworICAgICAgICAgICdzeW50YXhcbicKKyAgICAgICAgICAndG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJ2FyaXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIHN5bnRheCAiKipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuJworICAgICAgICAgICciZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICd0cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJbiB0aGUgY2FzZSBvZiBhICcKKyAgICAgICAgICAna2V5d29yZFxuJworICAgICAgICAgICdhcHBlYXJpbmcgaW4gYm90aCAiZXhwcmVzc2lvbiIgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgJworICAgICAgICAgICdhcmd1bWVudCwgYVxuJworICAgICAgICAgICciVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIG9yICcKKyAgICAgICAgICAnIioqaWRlbnRpZmllciJcbicKKyAgICAgICAgICAnY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAnbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNhbGwgYWx3YXlzIHJldHVybnMgc29tZSB2YWx1ZSwgcG9zc2libHkgIk5vbmUiLCB1bmxlc3MgaXQgJworICAgICAgICAgICdyYWlzZXMgYW5cbicKKyAgICAgICAgICAnZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdjYWxsYWJsZSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBpdCBpcy0tLVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4nCisgICAgICAgICAgJyAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4nCisgICAgICAgICAgJyAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICcgICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICcKKyAgICAgICAgICAnInJldHVybiJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3Mgb2JqZWN0OlxuJworICAgICAgICAgICcgICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBpbnN0YW5jZSBtZXRob2Q6XG4nCisgICAgICAgICAgJyAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICcgICBsaXN0IHRoYXQgaXMgb25lIGxvbmdlciB0aGFuIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjYWxsOiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2U6XG4nCisgICAgICAgICAgJyAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgJworICAgICAgICAgICd0aGVuIHRoZVxuJworICAgICAgICAgICcgICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAorICdjbGFzcyc6ICdcbicKKyAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlICcKKyAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAndHlwZSBoaWVyYXJjaHkqKTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAnCisgICAgICAgICAgJyI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4nCisgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyAnCisgICAgICAgICAgJ2NyZWF0aW9uKlxuJworICAgICAgICAgICdmb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSAnCisgICAgICAgICAgJ3RvIGFcbicKKyAgICAgICAgICAnY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiAnCisgICAgICAgICAgJ2luaGVyaXRhbmNlXG4nCisgICAgICAgICAgJ2xpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzcyBGb286XG4nCisgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzcyBGb28ob2JqZWN0KTpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIlRoZSBjbGFzcydzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbiIKKyAgICAgICAgICAnKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdvcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuJworICAgICAgICAgICJmdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzcydzIHN1aXRlIGZpbmlzaGVzICIKKyAgICAgICAgICAnZXhlY3V0aW9uLCBpdHNcbicKKyAgICAgICAgICAnZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gJworICAgICAgICAgICdbNF0gQVxuJworICAgICAgICAgICdjbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgJworICAgICAgICAgICdiYXNlXG4nCisgICAgICAgICAgJ2NsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICdUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICduYW1lc3BhY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgJworICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgJworICAgICAgICAgICd0aGVuXG4nCisgICAgICAgICAgJ2JvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAiCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdjbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgJworICAgICAgICAgICdhdHRyaWJ1dGVzXG4nCisgICAgICAgICAgJ2NhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbicKKyAgICAgICAgICAnaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAnCisgICAgICAgICAgJyIic2VsZi5uYW1lIiIsXG4nCisgICAgICAgICAgJ2FuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAnd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgJworICAgICAgICAgICdkZWZhdWx0c1xuJworICAgICAgICAgICdmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAndW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicsCisgJ2NvbXBhcmlzb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAgICAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciAnCisgICAgICAgICAgICAgICAgJ2JpdHdpc2VcbicKKyAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiAnCisgICAgICAgICAgICAgICAgJ2hhdmUgdGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICAgICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyAnCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmx5XG4nCisgICAgICAgICAgICAgICAgJ29uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4ICcKKyAgICAgICAgICAgICAgICAnPCB5IiBpc1xuJworICAgICAgICAgICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICAgICdhbmQgKm9wMSosXG4nCisgICAgICAgICAgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiAnCisgICAgICAgICAgICAgICAgJ29wMiBjIC4uLiB5XG4nCisgICAgICAgICAgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gJworICAgICAgICAgICAgICAgICd6IiwgZXhjZXB0XG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgJworICAgICAgICAgICAgICAgICcodGhvdWdoXG4nCisgICAgICAgICAgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICI8IiwgIj4iLCAiPT0iLCAiPj0iLCAiPD0iLCBhbmQgIiE9IiBjb21wYXJlICcKKyAgICAgICAgICAgICAgICAndGhlIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICdvZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS4gJworICAgICAgICAgICAgICAgICdJZiBib3RoIGFyZVxuJworICAgICAgICAgICAgICAgICdudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgJworICAgICAgICAgICAgICAgICd0aGUgIj09IiBhbmRcbicKKyAgICAgICAgICAgICAgICAnIiE9IiBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMgJworICAgICAgICAgICAgICAgICd0byBiZVxuJworICAgICAgICAgICAgICAgICd1bmVxdWFsLCB3aGlsZSB0aGUgIjwiLCAiPiIsICI+PSIgYW5kICI8PSIgb3BlcmF0b3JzIHJhaXNlICcKKyAgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgICciVHlwZUVycm9yIiB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZG8gbm90XG4nCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudCB0aGVzZSBvcGVyYXRvcnMgZm9yIHRoZSBnaXZlbiBwYWlyIG9mIHR5cGVzLiAgWW91ICcKKyAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgJ2NvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ3R5cGVzIGJ5XG4nCisgICAgICAgICAgICAgICAgJ2RlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgIl9fZ3RfXygpIiwgZGVzY3JpYmVkICcKKyAgICAgICAgICAgICAgICAnaW4gc2VjdGlvblxuJworICAgICAgICAgICAgICAgICcqQmFzaWMgY3VzdG9taXphdGlvbiouXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgJ3R5cGU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBUaGUgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmUgJworICAgICAgICAgICAgICAgICdzcGVjaWFsLiBUaGV5XG4nCisgICAgICAgICAgICAgICAgJyAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCAieCBpcyB4IiBidXQgYXJlIG5vdCBlcXVhbCAnCisgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlbXNlbHZlcywgInggIT0geCIuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgJworICAgICAgICAgICAgICAgICd0byBhXG4nCisgICAgICAgICAgICAgICAgJyAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICJGYWxzZSIuICBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICAgICdib3RoICIzIDxcbicKKyAgICAgICAgICAgICAgICAnICBmbG9hdChcJ05hTlwnKSIgYW5kICJmbG9hdChcJ05hTlwnKSA8IDMiIHdpbGwgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAnIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICcgIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbicKKyAgICAgICAgICAgICAgICAnICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgJworICAgICAgICAgICAgICAgICdvZiB0aGVpclxuJworICAgICAgICAgICAgICAgICIgIGNoYXJhY3RlcnMuIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW4ndCBiZSAiCisgICAgICAgICAgICAgICAgJ2NvbXBhcmVkIVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAnICBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICdlcXVhbCwgZWFjaFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAnb2YgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAnICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyICcKKyAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAnICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gWzEsMix5XSIgJworICAgICAgICAgICAgICAgICdoYXMgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAnICB2YWx1ZSBhcyAieCA8PSB5Ii4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3QgJworICAgICAgICAgICAgICAgICdleGlzdCwgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgIlsxLDJdIDwgJworICAgICAgICAgICAgICAgICdbMSwyLDNdIikuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSAnCisgICAgICAgICAgICAgICAgJ2hhdmUgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgc2FtZSAiKGtleSwgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgIihcJzxcJywgJworICAgICAgICAgICAgICAgICInPD0nLCAnPj0nLFxuIgorICAgICAgICAgICAgICAgICcgIFwnPlwnKSIgcmFpc2UgIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gJworICAgICAgICAgICAgICAgICdzdWJzZXQgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCAnCisgICAgICAgICAgICAgICAgJ29yZGVyaW5ncyAodGhlXG4nCisgICAgICAgICAgICAgICAgJyAgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyAnCisgICAgICAgICAgICAgICAgJ29mIG9uZVxuJworICAgICAgICAgICAgICAgICcgIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAnc2V0cyBhcmUgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsICcKKyAgICAgICAgICAgICAgICAnb3JkZXJpbmcuXG4nCisgICAgICAgICAgICAgICAgJyAgRm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgJworICAgICAgICAgICAgICAgICd1bmRlZmluZWRcbicKKyAgICAgICAgICAgICAgICAnICByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCAnCisgICAgICAgICAgICAgICAgJ3VubGVzcyB0aGV5XG4nCisgICAgICAgICAgICAgICAgJyAgYXJlIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgJworICAgICAgICAgICAgICAgICdjb25zaWRlcmVkXG4nCisgICAgICAgICAgICAgICAgJyAgc21hbGxlciBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5ICcKKyAgICAgICAgICAgICAgICAnYnV0XG4nCisgICAgICAgICAgICAgICAgJyAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyICcKKyAgICAgICAgICAgICAgICAnZWl0aGVyIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgJworICAgICAgICAgICAgICAgICdNb3N0IG51bWVyaWNcbicKKyAgICAgICAgICAgICAgICAndHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGUgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGlzXG4nCisgICAgICAgICAgICAgICAgJ25vdCBzdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluICcKKyAgICAgICAgICAgICAgICAncyJcbicKKyAgICAgICAgICAgICAgICAnZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlICcKKyAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLiAgInhcbicKKyAgICAgICAgICAgICAgICAnbm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICcKKyAgICAgICAgICAgICAgICAnImluIiB0ZXN0c1xuJworICAgICAgICAgICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ3N1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAnbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSAnCisgICAgICAgICAgICAgICAgJ2ZvciBlIGluXG4nCisgICAgICAgICAgICAgICAgJ3kpIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgJworICAgICAgICAgICAgICAgICdvbmx5IGlmICp4KiBpc1xuJworICAgICAgICAgICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAnCisgICAgICAgICAgICAgICAgJy0xIi4gIEVtcHR5XG4nCisgICAgICAgICAgICAgICAgJ3N0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSAnCisgICAgICAgICAgICAgICAgJ290aGVyIHN0cmluZyxcbicKKyAgICAgICAgICAgICAgICAnc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiICcKKyAgICAgICAgICAgICAgICAnbWV0aG9kLCAieFxuJworICAgICAgICAgICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBidXQgZG9cbicKKyAgICAgICAgICAgICAgICAnZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiAnCisgICAgICAgICAgICAgICAgJ3dpdGggInggPT0geiJcbicKKyAgICAgICAgICAgICAgICAnaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICAgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSAnCisgICAgICAgICAgICAgICAgJ2NsYXNzIGRlZmluZXNcbicKKyAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgJworICAgICAgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCAnCisgICAgICAgICAgICAgICAgJ2xvd2VyXG4nCisgICAgICAgICAgICAgICAgJ2ludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiAnCisgICAgICAgICAgICAgICAgJ2FueSBvdGhlclxuJworICAgICAgICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIG9mXG4nCisgICAgICAgICAgICAgICAgJyJpbiIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogJworICAgICAgICAgICAgICAgICcieCBpcyB5IiBpc1xuJworICAgICAgICAgICAgICAgICd0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICAieCBpcyAnCisgICAgICAgICAgICAgICAgJ25vdCB5IlxuJworICAgICAgICAgICAgICAgICd5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKKyAnY29tcG91bmQnOiAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgJworICAgICAgICAgICAgICdhZmZlY3RcbicKKyAgICAgICAgICAgICAnb3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSAnCisgICAgICAgICAgICAgJ3dheS4gIEluXG4nCisgICAgICAgICAgICAgJ2dlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gJworICAgICAgICAgICAgICdzaW1wbGVcbicKKyAgICAgICAgICAgICAnaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gJworICAgICAgICAgICAgICdvbmUgbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCAnCisgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAnZmxvdyBjb25zdHJ1Y3RzLiAgInRyeSIgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgJworICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgJ2NvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgJworICAgICAgICAgICAgICdhbGxvd3MgdGhlXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgJworICAgICAgICAgICAgICdibG9jayBvZlxuJworICAgICAgICAgICAgICdjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHkgJworICAgICAgICAgICAgICdjb21wb3VuZFxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgJ2NsYXVzZXMuJyAgQSAiCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICJjb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSAnc3VpdGUuJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbiIKKyAgICAgICAgICAgICAncGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiAnCisgICAgICAgICAgICAgJ2xldmVsLlxuJworICAgICAgICAgICAgICdFYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkICcKKyAgICAgICAgICAgICAnYW5kIGVuZHNcbicKKyAgICAgICAgICAgICAnd2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSAnCisgICAgICAgICAgICAgImhlYWRlcidzXG4iCisgICAgICAgICAgICAgJ2NvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiAnCisgICAgICAgICAgICAgJ3N1YnNlcXVlbnRcbicKKyAgICAgICAgICAgICAnbGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBhIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgJworICAgICAgICAgICAgICJ3b3VsZG4ndCBiZVxuIgorICAgICAgICAgICAgICdjbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkICcKKyAgICAgICAgICAgICAnYmVsb25nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdjb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJyJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1N1bW1hcml6aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQrIERFREVOVFxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5ICcKKyAgICAgICAgICAgICAnZm9sbG93ZWQgYnkgYVxuJworICAgICAgICAgICAgICciREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlZ2luXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSAnCisgICAgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgICAgJ2FtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiAnCisgICAgICAgICAgICAgJ1B5dGhvbiBieVxuJworICAgICAgICAgICAgICdyZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9ybWF0dGluZyBvZiB0aGUgZ3JhbW1hciBydWxlcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zICcKKyAgICAgICAgICAgICAncGxhY2VzXG4nCisgICAgICAgICAgICAgJ2VhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zIG9uZVxuJworICAgICAgICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucypcbicKKyAgICAgICAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCkuXG4nCisgICAgICAgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgJworICAgICAgICAgICAgICdpZlxuJworICAgICAgICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgJworICAgICAgICAgICAgICdhcyBhblxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIHRydWU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgJworICAgICAgICAgICAgICdleGVjdXRlcyB0aGVcbicKKyAgICAgICAgICAgICAnZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3QgdGltZVxuJworICAgICAgICAgICAgICdpdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICdhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCAnCisgICAgICAgICAgICAgJ2dvZXMgYmFja1xuJworICAgICAgICAgICAgICd0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJyhzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiICcKKyAgICAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuICcKKyAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAnb2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgICAgICAnImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoICcKKyAgICAgICAgICAgICAnaXRlbVxuJworICAgICAgICAgICAgICdwcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgJworICAgICAgICAgICAgICdpdGVyYXRvci4gIEVhY2hcbicKKyAgICAgICAgICAgICAnaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICdmb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgJ3N1aXRlIGlzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgJworICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAgICAgICdleGNlcHRpb24pLFxuJworICAgICAgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgJworICAgICAgICAgICAgICd0aGUgbG9vcFxuJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyAnCisgICAgICAgICAgICAgJ25leHRcbicKKyAgICAgICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSAnCisgICAgICAgICAgICAgJ3RhcmdldCBsaXN0LlxuJworICAgICAgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ2luY2x1ZGluZ1xuJworICAgICAgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3IgaSBpbiByYW5nZSgxMCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCAnCisgICAgICAgICAgICAgJ3RoZSBuZXh0XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzICcKKyAgICAgICAgICAgICAnZmluaXNoZWQsXG4nCisgICAgICAgICAgICAgJ2J1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAndG8gYXRcbicKKyAgICAgICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiAnCisgICAgICAgICAgICAgJ3JldHVybnMgYW5cbicKKyAgICAgICAgICAgICAnaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mICcKKyAgICAgICAgICAgICAnUGFzY2FsXCdzICJmb3IgaVxuJworICAgICAgICAgICAgICc6PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAnCisgICAgICAgICAgICAgJzJdIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgJworICAgICAgICAgICAgICdieSB0aGVcbicKKyAgICAgICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiAnCisgICAgICAgICAgICAgJ2xpc3RzKS4gIEFuXG4nCisgICAgICAgICAgICAgJyAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkICcKKyAgICAgICAgICAgICAnbmV4dCxcbicKKyAgICAgICAgICAgICAnICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyAnCisgICAgICAgICAgICAgJ2NvdW50ZXIgaGFzXG4nCisgICAgICAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgJworICAgICAgICAgICAgICdUaGlzIG1lYW5zXG4nCisgICAgICAgICAgICAgJyAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSAnCisgICAgICAgICAgICAgJ2Zyb20gdGhlXG4nCisgICAgICAgICAgICAgJyAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSAnCisgICAgICAgICAgICAgJ2luZGV4IG9mXG4nCisgICAgICAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsICcKKyAgICAgICAgICAgICAnaWYgdGhlXG4nCisgICAgICAgICAgICAgJyAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdpdGVtLCB0aGVcbicKKyAgICAgICAgICAgICAnICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICdsb29wLlxuJworICAgICAgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICAgICAgJyAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICAgICAgJyAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciAnCisgICAgICAgICAgICAgJ2NsZWFudXAgY29kZVxuJworICAgICAgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiAnCisgICAgICAgICAgICAgJ3N1aXRlKStcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiAnCisgICAgICAgICAgICAgJ1doZW4gbm9cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuJworICAgICAgICAgICAgICdleGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSAnCisgICAgICAgICAgICAgJ3NlYXJjaCBmb3IgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgJworICAgICAgICAgICAgICdjbGF1c2VzXG4nCisgICAgICAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAgICAgICdleHByZXNzaW9uLVxuJworICAgICAgICAgICAgICdsZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0ICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgJworICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAnb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgJworICAgICAgICAgICAgICdjb21wYXRpYmxlXG4nCisgICAgICAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgJ29iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgJ2hhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgJworICAgICAgICAgICAgICdpbnZvY2F0aW9uIHN0YWNrLlxuJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgJworICAgICAgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgICAgICAncmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzICcKKyAgICAgICAgICAgICAnY2FuY2VsZWQgYW5kXG4nCisgICAgICAgICAgICAgJ2Egc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgJworICAgICAgICAgICAgICdhbmQgb25cbicKKyAgICAgICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAndGhlIGV4Y2VwdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvXG4nCisgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgJworICAgICAgICAgICAgICdjbGF1c2UsIGlmXG4nCisgICAgICAgICAgICAgInByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsICIKKyAgICAgICAgICAgICAnZXhjZXB0XG4nCisgICAgICAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyAnCisgICAgICAgICAgICAgJ2Jsb2NrIGlzXG4nCisgICAgICAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJyhUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgJworICAgICAgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgJworICAgICAgICAgICAgICdoYW5kbGVyLCB0aGVcbicKKyAgICAgICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnICAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgJworICAgICAgICAgICAgICd0byBiZVxuJworICAgICAgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhICcKKyAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgJ2N5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSAnCisgICAgICAgICAgICAgJ2FsaXZlXG4nCisgICAgICAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0ICIKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSAic3lzIiBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3NlZCAnCisgICAgICAgICAgICAgJ3ZpYVxuJworICAgICAgICAgICAgICcic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlICcKKyAgICAgICAgICAgICAnY29uc2lzdGluZyBvZiB0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCAnCisgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICdwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdyZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiAnCisgICAgICAgICAgICAgJ3JldHVybmluZ1xuJworICAgICAgICAgICAgICdmcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgJworICAgICAgICAgICAgICdmbG93cyBvZmZcbicKKyAgICAgICAgICAgICAndGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiICcKKyAgICAgICAgICAgICAnY2xhdXNlIGFyZVxuJworICAgICAgICAgICAgICdub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gICcKKyAgICAgICAgICAgICAnVGhlICJ0cnkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiICcKKyAgICAgICAgICAgICAnY2xhdXNlcy4gIElmIGFuXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgSWZcbicKKyAgICAgICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlICcKKyAgICAgICAgICAgICAnc2F2ZWRcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgICAgICAnICAgNDJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgJworICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgJworICAgICAgICAgICAgICdpbGxlZ2FsIGluXG4nCisgICAgICAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZnV0dXJlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnInJldHVybiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZXMsIGFcbicKKyAgICAgICAgICAgICAnInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgJworICAgICAgICAgICAgICdhbHdheXMgYmUgdGhlXG4nCisgICAgICAgICAgICAgJ2xhc3Qgb25lIGV4ZWN1dGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAndHJ5J1xuIgorICAgICAgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnZmluYWxseSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAgICAgICIgICAnZmluYWxseSdcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAgICAgICcqRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICdnZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2UgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrICcKKyAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoICcKKyAgICAgICAgICAgICAnU3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uICcKKyAgICAgICAgICAgICAnInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxuJworICAgICAgICAgICAgICd1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAnCisgICAgICAgICAgICAgJyJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgICAgICcgICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciAnCisgICAgICAgICAgICAgJ3VzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlICcKKyAgICAgICAgICAgICAncmV0dXJuXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgJworICAgICAgICAgICAgICciX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAgICAgJyAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCAnCisgICAgICAgICAgICAgJ2Fsd2F5cyBiZVxuJworICAgICAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3IgJworICAgICAgICAgICAgICdvY2N1cnJpbmdcbicKKyAgICAgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuICBJZiAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiAnCisgICAgICAgICAgICAgJ090aGVyd2lzZSwgdGhyZWVcbicKKyAgICAgICAgICAgICAnICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAnCisgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uLCB0aGVcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gJworICAgICAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgICAgICcgICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzICcKKyAgICAgICAgICAgICAndGFrZW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgJworICAgICAgICAgICAgICdleHByZXNzaW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgJworICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgJworICAgICAgICAgICAgICdbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbicKKyAgICAgICAgICAgICAnICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCAnCisgICAgICAgICAgICAgJ1siLCJdXSAiKSJdIE5FV0xJTkVcbicKKyAgICAgICAgICAgICAnICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogJworICAgICAgICAgICAgICdbIiwiICIqKiIgcGFyYW1ldGVyXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzICcKKyAgICAgICAgICAgICAnZXhlY3V0aW9uIGJpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICAnCisgICAgICAgICAgICAgJ1RoaXNcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCAnCisgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICdhcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzICcKKyAgICAgICAgICAgICAnY2FsbGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgJworICAgICAgICAgICAgICd0aGlzIGdldHNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICcKKyAgICAgICAgICAgICAnKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSAnCisgICAgICAgICAgICAgJ2FwcGxpZWQgaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgJworICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlICcKKyAgICAgICAgICAgICAnLS0tIHRoaXNcbicKKyAgICAgICAgICAgICAnaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2dyYW1tYXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCAnCisgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXNcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ3NhbWUgInByZS1cbicKKyAgICAgICAgICAgICAnY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSAnCisgICAgICAgICAgICAgJ2ltcG9ydGFudFxuJworICAgICAgICAgICAgICd0byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCAnCisgICAgICAgICAgICAgJ3N1Y2ggYXMgYVxuJworICAgICAgICAgICAgICdsaXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICcoZS5nLiBieVxuJworICAgICAgICAgICAgICdhcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgJworICAgICAgICAgICAgICdtb2RpZmllZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgJworICAgICAgICAgICAgICd0byB1c2VcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiwgZS5nLjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBwZW5ndWluID0gW11cbicKKyAgICAgICAgICAgICAnICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbicKKyAgICAgICAgICAgICAnICAgICAgIHJldHVybiBwZW5ndWluXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluICcKKyAgICAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICAgICcqQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAnbWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gJworICAgICAgICAgICAgICdhcmd1bWVudHMsIGZyb21cbicKKyAgICAgICAgICAgICAna2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSAnCisgICAgICAgICAgICAgJ3JlY2VpdmluZyBhbnlcbicKKyAgICAgICAgICAgICAnZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICAnCisgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICdmb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbicKKyAgICAgICAgICAgICAnZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyAnCisgICAgICAgICAgICAgJ3RvIGEgbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2tleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkICcKKyAgICAgICAgICAgICAnYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiICcKKyAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3RoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuICcKKyAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAnb2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgJworICAgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ2xpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uICcKKyAgICAgICAgICAgICAnYW5kIGFyZVxuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gICcKKyAgICAgICAgICAgICAnQW5ub3RhdGlvbnMgbWF5XG4nCisgICAgICAgICAgICAgJ2JlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSAnCisgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlLlxuJworICAgICAgICAgICAgICdUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbicKKyAgICAgICAgICAgICAiZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVycycgbmFtZXMgaW4gdGhlICIKKyAgICAgICAgICAgICAnIl9fYW5ub3RhdGlvbnNfXyJcbicKKyAgICAgICAgICAgICAnYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgJworICAgICAgICAgICAgICdub3QgYm91bmRcbicKKyAgICAgICAgICAgICAndG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb247XG4nCisgICAgICAgICAgICAgJ2EgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlICcKKyAgICAgICAgICAgICAnaXRcbicKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIgorICAgICAgICAgICAgICciImRlZiIiXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSAnCisgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlICcKKyAgICAgICAgICAgICAndmFyaWFibGVzIHVzZWRcbicKKyAgICAgICAgICAgICAnaW4gdGhlIG5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlICcKKyAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAndHlwZSBoaWVyYXJjaHkqKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgJworICAgICAgICAgICAgICdbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgJworICAgICAgICAgICAgICdpbmhlcml0YW5jZSBsaXN0XG4nCisgICAgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyAnCisgICAgICAgICAgICAgJ2NyZWF0aW9uKlxuJworICAgICAgICAgICAgICdmb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvIGFcbicKKyAgICAgICAgICAgICAnY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiAnCisgICAgICAgICAgICAgJ2luaGVyaXRhbmNlXG4nCisgICAgICAgICAgICAgJ2xpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgJworICAgICAgICAgICAgICdoZW5jZSxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgIgorICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJypOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSAnCisgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyAnCisgICAgICAgICAgICAgJ21vc3RseVxuJworICAgICAgICAgICAgICJmdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzcydzIHN1aXRlIGZpbmlzaGVzICIKKyAgICAgICAgICAgICAnZXhlY3V0aW9uLCBpdHNcbicKKyAgICAgICAgICAgICAnZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gJworICAgICAgICAgICAgICdbNF0gQVxuJworICAgICAgICAgICAgICdjbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciAnCisgICAgICAgICAgICAgJ3RoZSBiYXNlXG4nCisgICAgICAgICAgICAgJ2NsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICdUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICduYW1lc3BhY2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlICcKKyAgICAgICAgICAgICAnc2FtZSBhcyBmb3JcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggJworICAgICAgICAgICAgICdpcyB0aGVuXG4nCisgICAgICAgICAgICAgJ2JvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgIgorICAgICAgICAgICAgICdkZWZpbml0aW9uIGFyZVxuJworICAgICAgICAgICAgICdjbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgJworICAgICAgICAgICAgICdhdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdpbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICcKKyAgICAgICAgICAgICAnIiJzZWxmLm5hbWUiIixcbicKKyAgICAgICAgICAgICAnYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSAnCisgICAgICAgICAgICAgJ3NhbWUgbmFtZVxuJworICAgICAgICAgICAgICd3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyAnCisgICAgICAgICAgICAgJ2RlZmF1bHRzXG4nCisgICAgICAgICAgICAgJ2ZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuICcKKyAgICAgICAgICAgICAnbGVhZCB0b1xuJworICAgICAgICAgICAgICd1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSAnCisgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgJ3ZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAnCisgICAgICAgICAgICAgJy1cbicKKyAgICAgICAgICAgICAnICBDbGFzcyBEZWNvcmF0b3JzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29yb3V0aW5lc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29yb3V0aW5lIGZ1bmN0aW9uIGRlZmluaXRpb25cbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX2Z1bmNkZWYgOjo9IFtkZWNvcmF0b3JzXSAiYXN5bmMiICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRXhlY3V0aW9uIG9mIFB5dGhvbiBjb3JvdXRpbmVzIGNhbiBiZSBzdXNwZW5kZWQgYW5kIHJlc3VtZWQgYXQgJworICAgICAgICAgICAgICdtYW55XG4nCisgICAgICAgICAgICAgJ3BvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgJworICAgICAgICAgICAgICciYXdhaXQiIGFuZFxuJworICAgICAgICAgICAgICciYXN5bmMiIGlkZW50aWZpZXJzIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkczsgImF3YWl0IiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLFxuJworICAgICAgICAgICAgICciYXN5bmMgZm9yIiBhbmQgImFzeW5jIHdpdGgiIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29yb3V0aW5lICcKKyAgICAgICAgICAgICAnYm9kaWVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb25zIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXggYXJlIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2Nvcm91dGluZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIgJworICAgICAgICAgICAgICdrZXl3b3Jkcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgJworICAgICAgICAgICAgICdkZWYiXG4nCisgICAgICAgICAgICAgJ2Nvcm91dGluZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiBleGFtcGxlIG9mIGEgY29yb3V0aW5lIGZ1bmN0aW9uOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuJworICAgICAgICAgICAgICcgICAgICAgZG9fc3R1ZmYoKVxuJworICAgICAgICAgICAgICcgICAgICAgYXdhaXQgc29tZV9jb3JvdXRpbmUoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZm9yX3N0bXQgOjo9ICJhc3luYyIgZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuICphc3luY2hyb25vdXMgaXRlcmFibGUqIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSAnCisgICAgICAgICAgICAgJ2luIGl0c1xuJworICAgICAgICAgICAgICcqaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuJworICAgICAgICAgICAgICdhc3luY2hyb25vdXMgY29kZSBpbiBpdHMgKm5leHQqIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbicKKyAgICAgICAgICAgICAnYXN5bmNocm9ub3VzIGl0ZXJhdG9ycy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIGZvciBUQVJHRVQgaW4gSVRFUjpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DSzJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaXRlciA9IChJVEVSKVxuJworICAgICAgICAgICAgICcgICBpdGVyID0gYXdhaXQgdHlwZShpdGVyKS5fX2FpdGVyX18oaXRlcilcbicKKyAgICAgICAgICAgICAnICAgcnVubmluZyA9IFRydWVcbicKKyAgICAgICAgICAgICAnICAgd2hpbGUgcnVubmluZzpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBUQVJHRVQgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYW5leHRfXyhpdGVyKVxuJworICAgICAgICAgICAgICcgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBydW5uaW5nID0gRmFsc2VcbicKKyAgICAgICAgICAgICAnICAgICAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLMlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc28gIl9fYWl0ZXJfXygpIiBhbmQgIl9fYW5leHRfXygpIiBmb3IgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICciYXN5bmMgZGVmIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIHdpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfd2l0aF9zdG10IDo6PSAiYXN5bmMiIHdpdGhfc3RtdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gKmFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIqIGlzIGEgKmNvbnRleHQgbWFuYWdlciogdGhhdCAnCisgICAgICAgICAgICAgJ2lzIGFibGVcbicKKyAgICAgICAgICAgICAndG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb2RlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG1nciA9IChFWFBSKVxuJworICAgICAgICAgICAgICcgICBhZXhpdCA9IHR5cGUobWdyKS5fX2FleGl0X19cbicKKyAgICAgICAgICAgICAnICAgYWVudGVyID0gdHlwZShtZ3IpLl9fYWVudGVyX18obWdyKVxuJworICAgICAgICAgICAgICcgICBleGMgPSBUcnVlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBWQVIgPSBhd2FpdCBhZW50ZXJcbicKKyAgICAgICAgICAgICAnICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0OlxuJworICAgICAgICAgICAgICcgICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc28gIl9fYWVudGVyX18oKSIgYW5kICJfX2FleGl0X18oKSIgZm9yIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnQgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDQ5MioqIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCAnCisgICAgICAgICAgICAgJ3N5bnRheFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrICcKKyAgICAgICAgICAgICAndW5sZXNzXG4nCisgICAgICAgICAgICAgJyAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSAnCisgICAgICAgICAgICAgJ2Fub3RoZXJcbicKKyAgICAgICAgICAgICAnICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSAnCisgICAgICAgICAgICAgJ2xvc3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAnICAgICJicmVhayIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlXG4nCisgICAgICAgICAgICAgIiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uJ3MgIgorICAgICAgICAgICAgICciX19kb2NfXyJcbicKKyAgICAgICAgICAgICAiICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvbidzICpkb2NzdHJpbmcqLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlICcKKyAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAnICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgIiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzJ3MgKmRvY3N0cmluZyouXG4iLAorICdjb250ZXh0LW1hbmFnZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1dpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQgbWFuYWdlclxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0XG4nCisgICAgICAgICAgICAgICAgICAgICAnZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgICAgICdtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gKlRoZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGVpciBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1R5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdraW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyAnCisgICAgICAgICAgICAgICAgICAgICAncmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgICAgICdNYW5hZ2VyIFR5cGVzKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiAnCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gIgorICAgICAgICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICdhbnkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RvIHN1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgJworICAgICAgICAgICAgICAgICAgICAgJ2JlIHByb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICdjb250aW51ZSc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAncmVhbGx5XG4nCisgICAgICAgICAgICAgJ3N0YXJ0aW5nIHRoZSBuZXh0IGxvb3AgY3ljbGUuXG4nLAorICdjb252ZXJzaW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAnQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdXaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSAnCisgICAgICAgICAgICAgICAgJ3BocmFzZVxuJworICAgICAgICAgICAgICAgICcidGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwiICcKKyAgICAgICAgICAgICAgICAndGhpcyBtZWFuc1xuJworICAgICAgICAgICAgICAgICd0aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgJworICAgICAgICAgICAgICAgICdhcyBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVydGVkIHRvXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgJ25lY2Vzc2FyeS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1NvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgJworICAgICAgICAgICAgICAgICdzdHJpbmcgYXMgYVxuJworICAgICAgICAgICAgICAgICJsZWZ0IGFyZ3VtZW50IHRvIHRoZSAnJScgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSAiCisgICAgICAgICAgICAgICAgJ3RoZWlyIG93blxuJworICAgICAgICAgICAgICAgICdjb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKKyAnY3VzdG9taXphdGlvbic6ICdcbicKKyAgICAgICAgICAgICAgICAgICdCYXNpYyBjdXN0b21pemF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSAnCisgICAgICAgICAgICAgICAgICAnaXQgYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgJworICAgICAgICAgICAgICAgICAgJ3JlcXVlc3RlZCBhcyBpdHNcbicKKyAgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSAnCisgICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzKS4gIFRoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJyh1c3VhbGx5IGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGFuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCAnCisgICAgICAgICAgICAgICAgICAndGhlbiB0aGUgbmV3XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAnY3JlYXRpb24uICBJdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAgJ29yZGVyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiksIGJ1dFxuJworICAgICAgICAgICAgICAgICAgJyAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyAnCisgICAgICAgICAgICAgICAgICAnYXJlIHRob3NlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBoYXMgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaWZcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgJworICAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgJyAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICAnY3VzdG9taXNlXG4nCisgICAgICAgICAgICAgICAgICAnICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAnCisgICAgICAgICAgICAgICAgICAnIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICAnCisgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAnCisgICAgICAgICAgICAgICAgICAnIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGNhbGwgaXRcbicKKyAgICAgICAgICAgICAgICAgICcgICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgICdhdCBhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICdndWFyYW50ZWVkIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnZXhpc3Qgd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbGF0dGVyIGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyAnCisgICAgICAgICAgICAgICAgICAnemVyby4gIFNvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiAnCisgICAgICAgICAgICAgICAgICAnYW4gb2JqZWN0IGZyb21cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzIChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3N0YWNrIGZyYW1lIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICAnc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yICcKKyAgICAgICAgICAgICAgICAgICdhIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gJworICAgICAgICAgICAgICAgICAgJ3VuaGFuZGxlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkICcKKyAgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgICdicmVha2luZyB0aGUgY3ljbGVzO1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlICcKKyAgICAgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZSB0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICcKKyAgICAgICAgICAgICAgICAgICcic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCAnCisgICAgICAgICAgICAgICAgICAnY2xlYW5lZCB1cCB3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgIiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0J3Mgb24gYnkgIgorICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAnaW5mb3JtYXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgJworICAgICAgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ29jY3VyIGR1cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzICcKKyAgICAgICAgICAgICAgICAgICdwcmludGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyAnCisgICAgICAgICAgICAgICAgICAnaW52b2tlZCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiAnCisgICAgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZGVsX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Byb2Nlc3Mgb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyAnCisgICAgICAgICAgICAgICAgICAnZG93bikuICBGb3IgdGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAgJ21pbmltdW0gbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCAnCisgICAgICAgICAgICAgICAgICAndmVyc2lvbiAxLjUsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYSBzaW5nbGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdvdGhlciBnbG9iYWxzIGFyZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgJworICAgICAgICAgICAgICAgICAgJ2V4aXN0LCB0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsICcKKyAgICAgICAgICAgICAgICAgICdhdmFpbGFibGUgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgIm9mZmljaWFsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgJworICAgICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgJworICAgICAgICAgICAgICAgICAgJ2JlIHVzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuICcKKyAgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAnIl9fcmVwcl9fKCkiIGJ1dFxuJworICAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gJworICAgICAgICAgICAgICAgICAgJ2FuICJpbmZvcm1hbCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgJworICAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5ICcKKyAgICAgICAgICAgICAgICAgICdwcmludGFibGUgc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAgICdhICpzdHJpbmcqXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIG5vXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgJworICAgICAgICAgICAgICAgICAgJ3VzZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgJ3R5cGUgIm9iamVjdCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2J5dGVzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb24gb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdleHRlbnNpb24sIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBvZiBjbGFzcyAic3RyIikgdG8gcHJvZHVjZSBhICcKKyAgICAgICAgICAgICAgICAgICciZm9ybWF0dGVkIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyAnCisgICAgICAgICAgICAgICAgICAnb3B0aW9uc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgImZvcm1hdF9zcGVjIiAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgaXMgdXAgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCAnCisgICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICAnICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAndHlwZXMsIG9yIHVzZSBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgJworICAgICAgICAgICAgICAgICAgJyJvYmplY3QiIGl0c2VsZlxuJworICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiAnCisgICAgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgJworICAgICAgICAgICAgICAgICAgJ25hbWVzIGlzIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAgJyJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiAnCisgICAgICAgICAgICAgICAgICAncGFpciBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm4gYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCAnCisgICAgICAgICAgICAgICAgICAnY2FsbCAiYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gJworICAgICAgICAgICAgICAgICAgJ290aGVyIGltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kcyAodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdidXQgdGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggJworICAgICAgICAgICAgICAgICAgIm90aGVyJ3MgcmVmbGVjdGlvbixcbiIKKyAgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duICcKKyAgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZCdzICIKKyAgICAgICAgICAgICAgICAgICd0eXBlIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICIgICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzICIKKyAgICAgICAgICAgICAgICAgICd0eXBlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgJworICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICBsZWZ0IG9wZXJhbmQncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCAiCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3NpbmcgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19oYXNoX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsICcKKyAgICAgICAgICAgICAgICAgICdhbmQgImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSAnCisgICAgICAgICAgICAgICAgICAncmVxdWlyZWQgcHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlOyBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlICcKKyAgICAgICAgICAgICAgICAgICdvcikgdGhlIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgJworICAgICAgICAgICAgICAgICAgJ2EgcGFydCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gJworICAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICAnICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgICciUHlfc3NpemVfdCIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uICcKKyAgICAgICAgICAgICAgICAgICczMi1iaXRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2ludGVyb3BlcmF0ZSBvbiBidWlsZHNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoICcKKyAgICAgICAgICAgICAgICAgICdvbiBhbGxcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggJworICAgICAgICAgICAgICAgICAgJyJweXRob24gLWNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgJworICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAnIl9fZXFfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSAnCisgICAgICAgICAgICAgICAgICAnYXMgaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgJworICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgIiAgIHJlcXVpcmVzIHRoYXQgYSBrZXkncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlICIKKyAgICAgICAgICAgICAgICAgICJvYmplY3QncyBoYXNoXG4iCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgJworICAgICAgICAgICAgICAgICAgJyhleGNlcHQgd2l0aFxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZSBzdWNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgJworICAgICAgICAgICAgICAgICAgJz09IGhhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICAnCisgICAgICAgICAgICAgICAgICAnV2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gJworICAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMuSGFzaGFibGUiKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgJworICAgICAgICAgICAgICAgICAgJ3RoZSBpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAgJyAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuJworICAgICAgICAgICAgICAgICAgJyAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICAnc3VwcHJlc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluICcKKyAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgJworICAgICAgICAgICAgICAgICAgJ2J5dGVzIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlICcKKyAgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiAnCisgICAgICAgICAgICAgICAgICAnYWdhaW5zdCBhIGRlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2V4cGxvaXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICAnY29tcGxleGl0eS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFNlZSAnCisgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ29yZGVyIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyICcKKyAgICAgICAgICAgICAgICAgICdtYWRlIGd1YXJhbnRlZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2J1aWx0LWluIG9wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAgJyAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZSBvYmplY3QgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIGFyZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCisgJ2RlYnVnZ2VyJzogJ1xuJworICAgICAgICAgICAgICcicGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlICJwZGIiIGRlZmluZXMgYW4gaW50ZXJhY3RpdmUgc291cmNlIGNvZGUgZGVidWdnZXIgJworICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAnUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludHMgYW5kXG4nCisgICAgICAgICAgICAgJ3NpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgJworICAgICAgICAgICAgICdmcmFtZXMsXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlIGxpc3RpbmcsIGFuZCBldmFsdWF0aW9uIG9mIGFyYml0cmFyeSBQeXRob24gY29kZSAnCisgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICdjb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gJworICAgICAgICAgICAgICdkZWJ1Z2dpbmdcbicKKyAgICAgICAgICAgICAnYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyIGlzIGV4dGVuc2libGUgLS0gaXQgaXMgYWN0dWFsbHkgZGVmaW5lZCBhcyB0aGUgJworICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICciUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSAnCisgICAgICAgICAgICAgJ3JlYWRpbmdcbicKKyAgICAgICAgICAgICAndGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgImJkYiIgJworICAgICAgICAgICAgICdhbmQgImNtZCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzICIoUGRiKSIuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgJworICAgICAgICAgICAgICdwcm9ncmFtIHVuZGVyXG4nCisgICAgICAgICAgICAgJ2NvbnRyb2wgb2YgdGhlIGRlYnVnZ2VyIGlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBwZGJcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBteW1vZHVsZVxuJworICAgICAgICAgICAgICIgICA+Pj4gcGRiLnJ1bignbXltb2R1bGUudGVzdCgpJylcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigwKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKSBjb250aW51ZVxuJworICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDEpPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgIiAgIE5hbWVFcnJvcjogJ3NwYW0nXG4iCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiAnCisgICAgICAgICAgICAgJ21vZHVsZSBpc1xuJworICAgICAgICAgICAgICdhdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAgICdhbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSAicCIgY29tbWFuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgJworICAgICAgICAgICAgICdzY3JpcHRzLiAgRm9yXG4nCisgICAgICAgICAgICAgJ2V4YW1wbGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyICcKKyAgICAgICAgICAgICAncG9zdC1tb3J0ZW1cbicKKyAgICAgICAgICAgICAnZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICAnCisgICAgICAgICAgICAgJ0FmdGVyIHBvc3QtXG4nCisgICAgICAgICAgICAgJ21vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiICcKKyAgICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAgICJyZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYidzICIKKyAgICAgICAgICAgICAnc3RhdGUgKHN1Y2hcbicKKyAgICAgICAgICAgICAnYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAiZGVidWdnZXIgdXBvbiBwcm9ncmFtJ3MgZXhpdC5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMjogInBkYi5weSIgbm93IGFjY2VwdHMgYSAiLWMiIG9wdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnZXhlY3V0ZXNcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgYXMgaWYgZ2l2ZW4gaW4gYSAiLnBkYnJjIiBmaWxlLCBzZWUgKkRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnQ29tbWFuZHMqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgZnJvbSBhIHJ1bm5pbmcgJworICAgICAgICAgICAgICdwcm9ncmFtIGlzXG4nCisgICAgICAgICAgICAgJ3RvIGluc2VydFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhdCB0aGUgbG9jYXRpb24geW91IHdhbnQgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIuICBZb3UgY2FuICcKKyAgICAgICAgICAgICAndGhlblxuJworICAgICAgICAgICAgICdzdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgJworICAgICAgICAgICAgICdydW5uaW5nXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSAiY29udGludWUiIGNvbW1hbmQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBwZGJcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBteW1vZHVsZVxuJworICAgICAgICAgICAgICcgICA+Pj4gbXltb2R1bGUudGVzdCgpXG4nCisgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuJworICAgICAgICAgICAgICcgICAgICAgdGVzdDIoKVxuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChzcGFtKVxuJworICAgICAgICAgICAgICcgICBOYW1lRXJyb3I6IHNwYW1cbicKKyAgICAgICAgICAgICAnICAgPj4+IHBkYi5wbSgpXG4nCisgICAgICAgICAgICAgJyAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbicKKyAgICAgICAgICAgICAnICAgLT4gcHJpbnQoc3BhbSlcbicKKyAgICAgICAgICAgICAnICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlICcKKyAgICAgICAgICAgICAnb2JqZWN0KSB1bmRlclxuJworICAgICAgICAgICAgICcgICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgJworICAgICAgICAgICAgICdjb2RlIGlzXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSAiY29udGludWUiLCBvciAnCisgICAgICAgICAgICAgJ3lvdSBjYW5cbicKKyAgICAgICAgICAgICAnICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsICcKKyAgICAgICAgICAgICAndGhlc2VcbicKKyAgICAgICAgICAgICAnICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAnCisgICAgICAgICAgICAgJypsb2NhbHMqXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkOyBieVxuJworICAgICAgICAgICAgICcgICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgJworICAgICAgICAgICAgICcoU2VlIHRoZVxuJworICAgICAgICAgICAgICcgICBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgb3IgImV2YWwoKSIgJworICAgICAgICAgICAgICdmdW5jdGlvbnMuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSAnCisgICAgICAgICAgICAgJ29iamVjdClcbicKKyAgICAgICAgICAgICAnICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgJworICAgICAgICAgICAgICdyZXR1cm5zIHRoZVxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzICcKKyAgICAgICAgICAgICAnc2ltaWxhciB0b1xuJworICAgICAgICAgICAgICcgICAicnVuKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiAnCisgICAgICAgICAgICAgJ2lmIHRoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiAnCisgICAgICAgICAgICAgJ2Fzc2VydGlvblxuJworICAgICAgICAgICAgICcgICBmYWlscykuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIGdpdmVuICp0cmFjZWJhY2sqICcKKyAgICAgICAgICAgICAnb2JqZWN0LiAgSWYgbm9cbicKKyAgICAgICAgICAgICAnICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCAnCisgICAgICAgICAgICAgJ2lmIHRoZVxuJworICAgICAgICAgICAgICcgICBkZWZhdWx0IGlzIHRvIGJlIHVzZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBtKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4nCisgICAgICAgICAgICAgJyAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yICcKKyAgICAgICAgICAgICAnaW5zdGFudGlhdGluZ1xuJworICAgICAgICAgICAgICd0aGUgIlBkYiIgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZSBuYW1lLiAgSWYgJworICAgICAgICAgICAgICd5b3Ugd2FudFxuJworICAgICAgICAgICAgICd0byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgImNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsICIKKyAgICAgICAgICAgICAnc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAiUGRiIiBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAnICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAnCisgICAgICAgICAgICAgJ2dsb2Itc3R5bGVcbicKKyAgICAgICAgICAgICAnICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvICcKKyAgICAgICAgICAgICAnZnJhbWVzIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuICcKKyAgICAgICAgICAgICAnWzFdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCAnCisgICAgICAgICAgICAgJ2lzIHNlbnRcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEN0cmwtQyBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgImNvbnRpbnVlIiBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgJworICAgICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICAgICcgICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSAnCisgICAgICAgICAgICAgJ1NJR0lOVFxuJworICAgICAgICAgICAgICcgICBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0b3QgdHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ2RqYW5nby4qJ10pLnNldF90cmFjZSgpXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSAnCisgICAgICAgICAgICAgJ1NJR0lOVFxuJworICAgICAgICAgICAgICcgICBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkgUGRiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuJworICAgICAgICAgICAgICcgICBzZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCAnCisgICAgICAgICAgICAgJ2Fib3ZlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0RlYnVnZ2VyIENvbW1hbmRzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gICcKKyAgICAgICAgICAgICAnTW9zdFxuJworICAgICAgICAgICAgICdjb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzICcKKyAgICAgICAgICAgICAnaW5kaWNhdGVkOyBlLmcuXG4nCisgICAgICAgICAgICAgJyJoKGVscCkiIG1lYW5zIHRoYXQgZWl0aGVyICJoIiBvciAiaGVscCIgY2FuIGJlIHVzZWQgdG8gZW50ZXIgJworICAgICAgICAgICAgICd0aGUgaGVscFxuJworICAgICAgICAgICAgICdjb21tYW5kIChidXQgbm90ICJoZSIgb3IgImhlbCIsIG5vciAiSCIgb3IgIkhlbHAiIG9yICJIRUxQIikuXG4nCisgICAgICAgICAgICAgJ0FyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIChzcGFjZXMgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICd0YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzICcKKyAgICAgICAgICAgICAnKCJbXSIpIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbicKKyAgICAgICAgICAgICAnQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgJworICAgICAgICAgICAgICdiYXJcbicKKyAgICAgICAgICAgICAnKCJ8IikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFbnRlcmluZyBhIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kIGVudGVyZWQuICAnCisgICAgICAgICAgICAgJ0V4Y2VwdGlvbjogaWZcbicKKyAgICAgICAgICAgICAndGhlIGxhc3QgY29tbWFuZCB3YXMgYSAibGlzdCIgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlICcKKyAgICAgICAgICAgICAnbGlzdGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc24ndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgIgorICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtICcKKyAgICAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAgICAnZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuICcKKyAgICAgICAgICAgICAnZXhjbGFtYXRpb25cbicKKyAgICAgICAgICAgICAncG9pbnQgKCIhIikuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgJworICAgICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICAgICduYW1lIGlzXG4nCisgICAgICAgICAgICAgInByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlcidzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyIHN1cHBvcnRzICphbGlhc2VzKi4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJ2FsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCAnCisgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgJ2V4YW1pbmF0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAnYnkgIjs7Ii5cbicKKyAgICAgICAgICAgICAnKEEgc2luZ2xlICI7IiBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvciBtdWx0aXBsZSAnCisgICAgICAgICAgICAgJ2NvbW1hbmRzXG4nCisgICAgICAgICAgICAgJ2luIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyAnCisgICAgICAgICAgICAgJ2ludGVsbGlnZW5jZSBpc1xuJworICAgICAgICAgICAgICdhcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUgaW5wdXQgaXMgc3BsaXQgYXQgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnIjs7IiBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWQgc3RyaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkICcKKyAgICAgICAgICAgICAnYmVlbiB0eXBlZFxuJworICAgICAgICAgICAgICdhdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciAnCisgICAgICAgICAgICAgJ2FsaWFzZXMuICBJZlxuJworICAgICAgICAgICAgICdib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0ICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2FsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICIucGRicmMiIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyAnCisgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAnY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgJworICAgICAgICAgICAgICd0aGVzZVxuJworICAgICAgICAgICAgICdjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaChlbHApIFtjb21tYW5kXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgJworICAgICAgICAgICAgICdXaXRoIGFcbicKKyAgICAgICAgICAgICAnICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gICcKKyAgICAgICAgICAgICAnImhlbHAgcGRiIlxuJworICAgICAgICAgICAgICcgICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgJyJwZGIiXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICdpZGVudGlmaWVyLCAiaGVscFxuJworICAgICAgICAgICAgICcgICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndyhoZXJlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlICcKKyAgICAgICAgICAgICAnYm90dG9tLiAgQW5cbicKKyAgICAgICAgICAgICAnICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRleHQgb2ZcbicKKyAgICAgICAgICAgICAnICAgbW9zdCBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Qob3duKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1KHApIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiAnCisgICAgICAgICAgICAgJ3RoZSBzdGFja1xuJworICAgICAgICAgICAgICcgICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZmlsZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGFibGVcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSAnCisgICAgICAgICAgICAgJ3ByZWZpeGVkXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gJworICAgICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgICAgIiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgIgorICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIGFcbicKKyAgICAgICAgICAgICAnICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiAnCisgICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAgJyAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRzIGF0XG4nCisgICAgICAgICAgICAgJyAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgJworICAgICAgICAgICAgICdudW1iZXJzLCBjbGVhclxuJworICAgICAgICAgICAgICcgICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0ICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgYXNrIGNvbmZpcm1hdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICAgICcgICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCwgaXRcbicKKyAgICAgICAgICAgICAnICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlICcKKyAgICAgICAgICAgICAnKHJlLSllbmFibGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiAnCisgICAgICAgICAgICAgJ2NvdW50IGlzXG4nCisgICAgICAgICAgICAgJyAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgJworICAgICAgICAgICAgICdiZWNvbWVzIGFjdGl2ZVxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgJworICAgICAgICAgICAgICdicmVha3BvaW50XG4nCisgICAgICAgICAgICAgJyAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byAnCisgICAgICAgICAgICAgJ3RydWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gJworICAgICAgICAgICAgICd3aGljaCBtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAnCisgICAgICAgICAgICAgJypjb25kaXRpb24qXG4nCisgICAgICAgICAgICAgJyAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgJworICAgICAgICAgICAgICdicmVha3BvaW50XG4nCisgICAgICAgICAgICAgJyAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIFticG51bWJlcl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAnCisgICAgICAgICAgICAgJypicG51bWJlciouICBUaGVcbicKKyAgICAgICAgICAgICAnICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSAnCisgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAnICAgY29udGFpbmluZyBqdXN0ICJlbmQiIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuICcKKyAgICAgICAgICAgICAnZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpIGNvbW1hbmRzIDFcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIGVuZFxuJworICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgJworICAgICAgICAgICAgICdmb2xsb3dcbicKKyAgICAgICAgICAgICAnICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBzZXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCAnCisgICAgICAgICAgICAgJ2FnYWluLlxuJworICAgICAgICAgICAgICcgICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgJworICAgICAgICAgICAgICdjb21tYW5kIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcmVzdW1lcyBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5ICcKKyAgICAgICAgICAgICAnY29udGludWUsXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgJworICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICcgICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAnICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgJworICAgICAgICAgICAgICdicmVha3BvaW50LS13aGljaFxuJworICAgICAgICAgICAgICcgICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzICcKKyAgICAgICAgICAgICAnYWJvdXQgd2hpY2hcbicKKyAgICAgICAgICAgICAnICAgbGlzdCB0byBleGVjdXRlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgSWYgeW91IHVzZSB0aGUgJ3NpbGVudCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgIgorICAgICAgICAgICAgICd1c3VhbFxuJworICAgICAgICAgICAgICcgICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gICcKKyAgICAgICAgICAgICAnVGhpcyBtYXkgYmVcbicKKyAgICAgICAgICAgICAnICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljICcKKyAgICAgICAgICAgICAnbWVzc2FnZSBhbmRcbicKKyAgICAgICAgICAgICAnICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50ICcKKyAgICAgICAgICAgICAnYW55dGhpbmcsIHlvdVxuJworICAgICAgICAgICAgICcgICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncyh0ZXApXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlICcKKyAgICAgICAgICAgICAnb2NjYXNpb25cbicKKyAgICAgICAgICAgICAnICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudCBmdW5jdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICduKGV4dClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIm5leHQiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICcgICBpcyB0aGF0ICJzdGVwIiBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlICcKKyAgICAgICAgICAgICAnIm5leHQiXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSAnCisgICAgICAgICAgICAgJ3N0b3BwaW5nIGF0XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndW50KGlsKSBbbGluZW5vXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICcgICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyAnCisgICAgICAgICAgICAgJ3N0b3Agd2hlblxuJworICAgICAgICAgICAgICcgICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgJworICAgICAgICAgICAgICdudW1iZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdyKGV0dXJuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjKG9udChpbnVlKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzICcKKyAgICAgICAgICAgICAnZW5jb3VudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdqKHVtcCkgbGluZW5vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlICcKKyAgICAgICAgICAgICAnY29kZSBhZ2FpbixcbicKKyAgICAgICAgICAgICAiICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb24ndCB3YW50IHRvIHJ1bi5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAnICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCAnCisgICAgICAgICAgICAgJ29yIG91dFxuJworICAgICAgICAgICAgICcgICBvZiBhICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdsKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsICcKKyAgICAgICAgICAgICAnbGlzdCAxMVxuJworICAgICAgICAgICAgICcgICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgJworICAgICAgICAgICAgICdsaXN0aW5nLlxuJworICAgICAgICAgICAgICcgICBXaXRoICIuIiBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdsaW5lLiAgV2l0aFxuJworICAgICAgICAgICAgICcgICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgJworICAgICAgICAgICAgICdsZXNzXG4nCisgICAgICAgICAgICAgJyAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgJworICAgICAgICAgICAgICciLT4iLiAgSWYgYW5cbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgICAgJyAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0ICcKKyAgICAgICAgICAgICAnZGlmZmVyc1xuJworICAgICAgICAgICAgICcgICBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAiPj4iIG1hcmtlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2xsIHwgbG9uZ2xpc3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbicKKyAgICAgICAgICAgICAnICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYShyZ3MpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3AgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCAnCisgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICcgICB2YWx1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGU6ICJwcmludCgpIiBjYW4gYWxzbyBiZSB1c2VkLCBidXQgaXMgbm90IGEgZGVidWdnZXIgJworICAgICAgICAgICAgICdjb21tYW5kXG4nCisgICAgICAgICAgICAgJyAgICAgLS0tIHRoaXMgZXhlY3V0ZXMgdGhlIFB5dGhvbiAicHJpbnQoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwcCBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaWtlIHRoZSAicCIgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyAnCisgICAgICAgICAgICAgJ3ByZXR0eS1cbicKKyAgICAgICAgICAgICAnICAgcHJpbnRlZCB1c2luZyB0aGUgInBwcmludCIgbW9kdWxlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnd2hhdGlzIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzb3VyY2UgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSAnCisgICAgICAgICAgICAgJ2l0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggJworICAgICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZnJhbWUuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpbnRlcmFjdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3RhcnQgYW4gaW50ZXJhdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlICJjb2RlIiBtb2R1bGUpICcKKyAgICAgICAgICAgICAnd2hvc2VcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyAnCisgICAgICAgICAgICAgJ2ZvdW5kIGluXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgJworICAgICAgICAgICAgICdjb21tYW5kXG4nCisgICAgICAgICAgICAgJyAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICcgICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkICcKKyAgICAgICAgICAgICAnYnkgYWxsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICcgICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgJworICAgICAgICAgICAgICdsZWdhbGx5XG4nCisgICAgICAgICAgICAgJyAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAnCisgICAgICAgICAgICAgJypjYW4qIGJlXG4nCisgICAgICAgICAgICAgJyAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSAnCisgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAnICAgYWxvbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiAnCisgICAgICAgICAgICAgJ3BsYWNlZFxuJworICAgICAgICAgICAgICcgICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogJworICAgICAgICAgICAgICdwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbicKKyAgICAgICAgICAgICAnICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuJworICAgICAgICAgICAgICcgICAgICBhbGlhcyBwcyBwaSBzZWxmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmFsaWFzIG5hbWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnISBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyAnCisgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICcgICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJnbG9iYWwiIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gWyctbCddXG4iCisgICAgICAgICAgICAgJyAgICAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdydW4gW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdyZXN0YXJ0IFthcmdzIC4uLl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgJworICAgICAgICAgICAgICdzdXBwbGllZCxcbicKKyAgICAgICAgICAgICAnICAgaXQgaXMgc3BsaXQgd2l0aCAic2hsZXgiIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuJworICAgICAgICAgICAgICcgICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgJworICAgICAgICAgICAgICdvcHRpb25zIGFyZVxuJworICAgICAgICAgICAgICcgICBwcmVzZXJ2ZWQuICJyZXN0YXJ0IiBpcyBhbiBhbGlhcyBmb3IgInJ1biIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdxKHVpdClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyAnCisgICAgICAgICAgICAgJ2Fib3J0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluICcKKyAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgJyAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKKyAnZGVsJzogJ1xuJworICAgICAgICAnVGhlICJkZWwiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50ICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdkZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSAnCisgICAgICAgICdzb21lXG4nCisgICAgICAgICdoaW50cy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tICcKKyAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgJ3RvIHJpZ2h0LlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgJworICAgICAgICAnb3JcbicKKyAgICAgICAgJ2dsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhICcKKyAgICAgICAgJyJnbG9iYWwiXG4nCisgICAgICAgICdzdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbicKKyAgICAgICAgJyJOYW1lRXJyb3IiIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzICcKKyAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAndG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gJworICAgICAgICAnZ2VuZXJhbFxuJworICAgICAgICAnZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgJworICAgICAgICAnZXZlblxuJworICAgICAgICAndGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG4nCisgICAgICAgICdmcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhICcKKyAgICAgICAgJ25lc3RlZFxuJworICAgICAgICAnYmxvY2suXG4nLAorICdkaWN0JzogJ1xuJworICAgICAgICAgJ0RpY3Rpb25hcnkgZGlzcGxheXNcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtICcKKyAgICAgICAgICdwYWlyc1xuJworICAgICAgICAgJ2VuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCAnCisgICAgICAgICAnZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbicKKyAgICAgICAgICcgICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4nCisgICAgICAgICAnICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uXG4nCisgICAgICAgICAnICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0lmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSAnCisgICAgICAgICAnYXJlXG4nCisgICAgICAgICAnZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlICcKKyAgICAgICAgICdkaWN0aW9uYXJ5OlxuJworICAgICAgICAgJ2VhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG4nCisgICAgICAgICAnY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUgJworICAgICAgICAgJ2tleVxuJworICAgICAgICAgIm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5J3MgIgorICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG4nCisgICAgICAgICAnbmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlICcKKyAgICAgICAgICd1c3VhbFxuJworICAgICAgICAgJyJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgJworICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgJ2tleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgJworICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAndGhleSBhcmUgcHJvZHVjZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbicKKyAgICAgICAgICdzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqLiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSAnCisgICAgICAgICAndHlwZVxuJworICAgICAgICAgJ3Nob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgICcKKyAgICAgICAgICdDbGFzaGVzXG4nCisgICAgICAgICAnYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAnCisgICAgICAgICAnKHRleHR1YWxseVxuJworICAgICAgICAgJ3JpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCisgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnbm90IGF0IGNvbXBpbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgJworICAgICAgICAgICAgICAgICAgICAgJzQyOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHdoZW4gdXNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0ICcKKyAgICAgICAgICAgICAgICAgICAgICdpcyBpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyAnCisgICAgICAgICAgICAgICAgICAgICAndG8gdGhlIGZ1bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCBpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAgICAgICAgICdhcmUgbm90IHJlc29sdmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgJworICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdlbHNlJzogJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICdvbmVcbicKKyAgICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuICcKKyAgICAgICAgICdvcGVyYXRpb25zKlxuJworICAgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyAnCisgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yICcKKyAgICAgICAgICdldmFsdWF0ZWQpLlxuJworICAgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbicKKyAgICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2V4Y2VwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAgICdvZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgICdjb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgJworICAgICAgICAgICAgICAgJ2Vycm9yIGlzXG4nCisgICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgJworICAgICAgICAgICAgICAgJ29yIGJ5IGFueVxuJworICAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgJworICAgICAgICAgICAgICAgJ2Jsb2NrIHdoZXJlXG4nCisgICAgICAgICAgICAgICAndGhlIGVycm9yIG9jY3VycmVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICAncnVuLXRpbWVcbicKKyAgICAgICAgICAgICAgICdlcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuICcKKyAgICAgICAgICAgICAgICdhbHNvXG4nCisgICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgJworICAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ3doZXRoZXIgYW5cbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdQeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCAnCisgICAgICAgICAgICAgICAnYW4gb3V0ZXJcbicKKyAgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2ZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSAnCisgICAgICAgICAgICAgICAnb2YgY29kZVxuJworICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gJworICAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiICcKKyAgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRoZVxuJworICAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICAncmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAgJyAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICcqVGhlIHRyeVxuJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50Ki5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgJyAgICBjb21waWxlZC5cbicsCisgJ2V4ZWNtb2RlbCc6ICdcbicKKyAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBtb2RlbFxuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU3RydWN0dXJlIG9mIGEgcHJvZ3JhbW1cbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqICcKKyAgICAgICAgICAgICAgJ2lzIGEgcGllY2VcbicKKyAgICAgICAgICAgICAgJ29mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSAnCisgICAgICAgICAgICAgICdmb2xsb3dpbmcgYXJlXG4nCisgICAgICAgICAgICAgICdibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uICcKKyAgICAgICAgICAgICAgJ0VhY2hcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSAnCisgICAgICAgICAgICAgICdmaWxlIGdpdmVuXG4nCisgICAgICAgICAgICAgICdhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgJworICAgICAgICAgICAgICAnY29tbWFuZCBsaW5lXG4nCisgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0ICcKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgKGFcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgJworICAgICAgICAgICAgICAiJyoqLWMqKidcbiIKKyAgICAgICAgICAgICAgJ29wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICdmdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSAnCisgICAgICAgICAgICAgICdjb250YWluc1xuJworICAgICAgICAgICAgICAnc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lc1xuJworICAgICAgICAgICAgICAid2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrJ3MgIgorICAgICAgICAgICAgICAnZXhlY3V0aW9uIGhhc1xuJworICAgICAgICAgICAgICAnY29tcGxldGVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZ1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQmluZGluZyBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlICcKKyAgICAgICAgICAgICAgJ2JpbmQgdGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzICcKKyAgICAgICAgICAgICAgJ3RoYXQgYXJlXG4nCisgICAgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsICcKKyAgICAgICAgICAgICAgJ29yIGFmdGVyXG4nCisgICAgICAgICAgICAgICciYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgJworICAgICAgICAgICAgICAnVGhpcyBmb3JtXG4nCisgICAgICAgICAgICAgICdtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAnYm91bmQgZm9yXG4nCisgICAgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICAgICduYW1lKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2RlZmluZWQgYnkgYVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgJworICAgICAgICAgICAgICAndG9wLWxldmVsXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCAnCisgICAgICAgICAgICAgICdibG9jayxcbicKKyAgICAgICAgICAgICAgJ3VubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzICcKKyAgICAgICAgICAgICAgJ2JvdW5kIGF0IHRoZVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAgICAnKmJpbmRpbmcqXG4nCisgICAgICAgICAgICAgICdvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gJworICAgICAgICAgICAgICAncnVsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUmVzb2x1dGlvbiBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICAnCisgICAgICAgICAgICAgICdJZiBhIGxvY2FsXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0ICcKKyAgICAgICAgICAgICAgJ2Jsb2NrLiAgSWYgdGhlXG4nCisgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byAnCisgICAgICAgICAgICAgICdhbnkgYmxvY2tzXG4nCisgICAgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgJworICAgICAgICAgICAgICAnY29kZSBibG9ja1xuJworICAgICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgJ3JhaXNlZC4gSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gJworICAgICAgICAgICAgICAnYSBsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50ICcKKyAgICAgICAgICAgICAgJ3doZXJlIHRoZVxuJworICAgICAgICAgICAgICAnbmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICciVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9jaywgYWxsXG4nCisgICAgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyAnCisgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkICcKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhXG4nCisgICAgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uICcKKyAgICAgICAgICAgICAgJ2xhY2tzXG4nCisgICAgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciAnCisgICAgICAgICAgICAgICdhbnl3aGVyZVxuJworICAgICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiAnCisgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiAnCisgICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lICcKKyAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBieVxuJworICAgICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgICAgJ2ZpcnN0LiAgSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyAnCisgICAgICAgICAgICAgICdzZWFyY2hlZC4gIFRoZVxuJworICAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgJworICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICdpbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlICcKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICdjb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgJworICAgICAgICAgICAgICAnYSBnbG9iYWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciAnCisgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgJ3Njb3BlLlxuJworICAgICAgICAgICAgICAnIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lICcKKyAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICdleGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAgJ3RpbWUgYVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAnCisgICAgICAgICAgICAgICciZXZhbCgpIiBhcmVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAnaXMgYW5cbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICdmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgJ3VuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UuIFRoZVxuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9mXG4nCisgICAgICAgICAgICAgICd0aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgJworICAgICAgICAgICAgICAnbGltaXRlZCB0b1xuJworICAgICAgICAgICAgICAndGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mICcKKyAgICAgICAgICAgICAgJ21ldGhvZHMgLS1cbicKKyAgICAgICAgICAgICAgJ3RoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSAnCisgICAgICAgICAgICAgICd0aGV5IGFyZVxuJworICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgICd3aWxsIGZhaWw6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGNsYXNzIEE6XG4nCisgICAgICAgICAgICAgICcgICAgICAgYSA9IDQyXG4nCisgICAgICAgICAgICAgICcgICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0J1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSAnCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrXG4nCisgICAgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluICcKKyAgICAgICAgICAgICAgJ2l0cyBnbG9iYWxcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgJworICAgICAgICAgICAgICAnbGF0dGVyIGNhc2VcbicKKyAgICAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7ICcKKyAgICAgICAgICAgICAgJ3doZW4gaW4gYW55XG4nCisgICAgICAgICAgICAgICdvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgJyJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSAnCisgICAgICAgICAgICAgICd1c2VyLWNyZWF0ZWRcbicKKyAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAnCisgICAgICAgICAgICAgICdVc2Vyc1xuJworICAgICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgICAgJ3RoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzICcKKyAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgJworICAgICAgICAgICAgICAnY29tcGlsZVxuJworICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsICcKKyAgICAgICAgICAgICAgJ3doZW4gdXNlZFxuJworICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlICcKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAnaWxsZWdhbCB0b1xuJworICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAnZnVsbFxuJworICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiAnCisgICAgICAgICAgICAgICd0aGUgbG9jYWxcbicKKyAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICdyZXNvbHZlZFxuJworICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIGlzXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAnZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgJworICAgICAgICAgICAgICAnb3IgYnkgYW55XG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQuICBUaGVcbicKKyAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0ICcKKyAgICAgICAgICAgICAgJ2FuIG91dGVyXG4nCisgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2UgJworICAgICAgICAgICAgICAnb2YgY29kZVxuJworICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICcqVGhlIHRyeVxuJworICAgICAgICAgICAgICAnc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudCouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhwcmxpc3RzJzogJ1xuJworICAgICAgICAgICAgICAnRXhwcmVzc2lvbiBsaXN0c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBleHByZXNzaW9uX2xpc3QgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBleHByZXNzaW9uIGxpc3QgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgJworICAgICAgICAgICAgICAndHVwbGUuICBUaGVcbicKKyAgICAgICAgICAgICAgJ2xlbmd0aCBvZiB0aGUgdHVwbGUgaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgJworICAgICAgICAgICAgICAnbGlzdC4gIFRoZVxuJworICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAnCisgICAgICAgICAgICAgICcoYS5rLmEuIGFcbicKKyAgICAgICAgICAgICAgJypzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAid2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgIgorICAgICAgICAgICAgICAneWllbGRzIHRoZVxuJworICAgICAgICAgICAgICAndmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gJworICAgICAgICAgICAgICAnZW1wdHkgcGFpclxuJworICAgICAgICAgICAgICAnb2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKKyAnZmxvYXRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICdsZXhpY2FsXG4nCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZmxvYXRudW1iZXIgICA6Oj0gcG9pbnRmbG9hdCB8IGV4cG9uZW50ZmxvYXRcbicKKyAgICAgICAgICAgICAnICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnRmbG9hdCA6Oj0gKGludHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuJworICAgICAgICAgICAgICcgICBpbnRwYXJ0ICAgICAgIDo6PSBkaWdpdCtcbicKKyAgICAgICAgICAgICAnICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdCtcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkIHVzaW5nXG4nCisgICAgICAgICAgICAgJ3JhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgJworICAgICAgICAgICAgICdzYW1lIG51bWJlclxuJworICAgICAgICAgICAgICdhcyAiNzdlMTAiLiBUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpc1xuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICdsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlICcKKyAgICAgICAgICAgICAnbGlrZSAiLTEiXG4nCisgICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiAnCisgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAnbGl0ZXJhbCAiMSIuXG4nLAorICdmb3InOiAnXG4nCisgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgJworICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgJyhzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG4nCisgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAnImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbicKKyAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gICcKKyAgICAgICAgJ0VhY2hcbicKKyAgICAgICAgJ2l0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICdmb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSAnCisgICAgICAgICdpc1xuJworICAgICAgICAnZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iICcKKyAgICAgICAgJ2V4Y2VwdGlvbiksXG4nCisgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlICcKKyAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICd3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuJworICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCAnCisgICAgICAgICdsaXN0LlxuJworICAgICAgICAnVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgJworICAgICAgICAnaW5jbHVkaW5nXG4nCisgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGZvciBpIGluIHJhbmdlKDEwKTpcbicKKyAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAnICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSAnCisgICAgICAgICduZXh0XG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzICcKKyAgICAgICAgJ2ZpbmlzaGVkLFxuJworICAgICAgICAnYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gJworICAgICAgICAnYXRcbicKKyAgICAgICAgJ2FsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuJworICAgICAgICAiaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbCdzICIKKyAgICAgICAgJyJmb3IgaVxuJworICAgICAgICAnOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgJworICAgICAgICAnMl0iLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5ICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICAnCisgICAgICAgICdBblxuJworICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgJworICAgICAgICAnbmV4dCxcbicKKyAgICAgICAgJyAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciAnCisgICAgICAgICdoYXNcbicKKyAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyAnCisgICAgICAgICdtZWFuc1xuJworICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggJworICAgICAgICAnb2ZcbicKKyAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlICcKKyAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICcgIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICcgICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFN0cmluZyBTeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSAnCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICdzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiAnCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdHRlciIsXG4nCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdjdXJseSBicmFjZXNcbicKKyAgICAgICAgICAgICAgICAgICcie30iLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzICcKKyAgICAgICAgICAgICAgICAgICdjb25zaWRlcmVkIGxpdGVyYWxcbicKKyAgICAgICAgICAgICAgICAgICd0ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgJworICAgICAgICAgICAgICAgICAgJ25lZWQgdG8gaW5jbHVkZVxuJworICAgICAgICAgICAgICAgICAgJ2EgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkICcKKyAgICAgICAgICAgICAgICAgICdieSBkb3VibGluZzpcbicKKyAgICAgICAgICAgICAgICAgICcie3siIGFuZCAifX0iLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgJworICAgICAgICAgICAgICAgICAgJ3wgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICAnIl0iPiArXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICAgICdzZWN0aW9uPlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0ICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAgICAgICcqZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byAnCisgICAgICAgICAgICAgICAgICAnYmUgZm9ybWF0dGVkXG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCAnCisgICAgICAgICAgICAgICAgICAnZmllbGQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiAnCisgICAgICAgICAgICAgICAgICAnZmllbGQsIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAncHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgIlwnIVwnIiwgYW5kIGEgJworICAgICAgICAgICAgICAgICAgJypmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAncHJlY2VkZWQgYnkgYSBjb2xvbiAiXCc6XCciLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VtZW50IHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzICcKKyAgICAgICAgICAgICAgICAgICdlaXRoZXIgYVxuJworICAgICAgICAgICAgICAgICAgIm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSAiCisgICAgICAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICAgICAgImFyZ3VtZW50LCBhbmQgaWYgaXQncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkICIKKyAgICAgICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ2FyZSAwLCAxLCAyLFxuJworICAgICAgICAgICAgICAgICAgJy4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpICcKKyAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnbnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IG9yZGVyLlxuJworICAgICAgICAgICAgICAgICAgJ0JlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgJ3Bvc3NpYmxlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyAnCisgICAgICAgICAgICAgICAgICAnIlwnMTBcJyIgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCc6LV1cJyIpIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnkgYW55XG4nCisgICAgICAgICAgICAgICAgICAnbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAgICAnb2YgdGhlIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICciXCcubmFtZVwnIiBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgJworICAgICAgICAgICAgICAgICAgJyJnZXRhdHRyKCkiLCB3aGlsZSBhblxuJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gb2YgdGhlIGZvcm0gIlwnW2luZGV4XVwnIiBkb2VzIGFuIGluZGV4IGxvb2t1cCAnCisgICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllcnMgY2FuIGJlXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZCwgc28gIlwne30ge31cJyIgaXMgZXF1aXZhbGVudCB0byAiXCd7MH0gezF9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSAnCisgICAgICAgICAgICAgICAgICAndG8gezF9IlxuJworICAgICAgICAgICAgICAgICAgJyAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkICcKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnbmFtZSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgJworICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICMgRmlyc3QgZWxlbWVudCBvZiAnCisgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAncGxheWVycycuXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJfX2Zvcm1hdF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICdkZXNpcmFibGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLCBvdmVycmlkaW5nIGl0cyAnCisgICAgICAgICAgICAgICAgICAnb3duXG4nCisgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWUgdG8gYSAnCisgICAgICAgICAgICAgICAgICAnc3RyaW5nIGJlZm9yZVxuJworICAgICAgICAgICAgICAgICAgJ2NhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyAnCisgICAgICAgICAgICAgICAgICAnYnlwYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgJworICAgICAgICAgICAgICAgICAgJ3doaWNoIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnInN0cigpIiBvbiB0aGUgdmFsdWUsICJcJyFyXCciIHdoaWNoIGNhbGxzICJyZXByKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnIWFcJyIgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICdjYWxscyAiYXNjaWkoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGFyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyAnCisgICAgICAgICAgICAgICAgICAndGhlIHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGgsIGFsaWdubWVudCxcbicKKyAgICAgICAgICAgICAgICAgICdwYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2NhbiBkZWZpbmUgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnb3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyAnCisgICAgICAgICAgICAgICAgICAnbWluaS1sYW5ndWFnZSwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICdpcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkc1xuJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBjYW4gY29udGFpbiAnCisgICAgICAgICAgICAgICAgICAnb25seSBhIGZpZWxkXG4nCisgICAgICAgICAgICAgICAgICAnbmFtZTsgY29udmVyc2lvbiBmbGFncyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb25zIGFyZSBub3QgJworICAgICAgICAgICAgICAgICAgJ2FsbG93ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgJworICAgICAgICAgICAgICAgICAgJ2JlZm9yZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpcyBhbGxvd3MgdGhlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICd2YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2VcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZHMgY29udGFpbmVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzICcKKyAgICAgICAgICAgICAgICAgICdhcmUgcHJlc2VudGVkXG4nCisgICAgICAgICAgICAgICAgICAnKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkICcKKyAgICAgICAgICAgICAgICAgICdkaXJlY3RseSB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pbiAiZm9ybWF0KCkiIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lIGhvd1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXRcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zICcKKyAgICAgICAgICAgICAgICAgICdhcmUgb25seVxuJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJygiIiIiKSBwcm9kdWNlc1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWUuIEEgbm9uLWVtcHR5XG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdF9zcGVjIDo6PSAnCisgICAgICAgICAgICAgICAgICAnW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbicKKyAgICAgICAgICAgICAgICAgICcgICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAgICAgICAnICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICcKKyAgICAgICAgICAgICAgICAgICciRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGEgKmZpbGwqXG4nCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3NwYWNlIGlmXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gTm90ZSB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgInsiIGFuZCAifSIgJworICAgICAgICAgICAgICAgICAgJ2FzICpmaWxsKlxuJworICAgICAgICAgICAgICAgICAgJ2NoYXIgd2hpbGUgdXNpbmcgdGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZDsgdGhpcyAnCisgICAgICAgICAgICAgICAgICAnbGltaXRhdGlvbiBob3dldmVyXG4nCisgICAgICAgICAgICAgICAgICAnZG9lc25cJ3QgYWZmZWN0IHRoZSAiZm9ybWF0KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgT3B0aW9uICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3QgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMpLiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzaWduIChpZiBhbnkpICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ3ByaW50aW5nIGZpZWxkcyAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtICcrMDAwMDAwMTIwJy4gVGhpcyBhbGlnbm1lbnQgIgorICAgICAgICAgICAgICAgICAgJ29wdGlvbiBpcyBvbmx5ICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICd0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBhdmFpbGFibGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ3NwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIHdpZHRoXG4nCisgICAgICAgICAgICAgICAgICAnd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gJworICAgICAgICAgICAgICAgICAgJ2JlIG9uZSBvZlxuJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAgJ2ZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3VzZWQgb24gcG9zaXRpdmUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAgJ2ZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgJworICAgICAgICAgICAgICAgICAgJ2ZvciBkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCAnCisgICAgICAgICAgICAgICAgICAnY29tcGxleCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICdEZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgJworICAgICAgICAgICAgICAgICAgJ2hleGFkZWNpbWFsIG91dHB1dFxuJworICAgICAgICAgICAgICAgICAgJ2lzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAnCisgICAgICAgICAgICAgICAgICAnIlwnMG9cJyIsIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnMHhcJyIgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gJworICAgICAgICAgICAgICAgICAgJ2Fsd2F5cyBjb250YWluIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiAnCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgICAnb25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyJcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICdyZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHMgc2VwYXJhdG9yLlxuJworICAgICAgICAgICAgICAgICAgJ0ZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50YXRpb24gdHlwZVxuJworICAgICAgICAgICAgICAgICAgJ2luc3RlYWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgJworICAgICAgICAgICAgICAgICAgJ2Fsc28gKipQRVAgMzc4KiopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyp3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgJworICAgICAgICAgICAgICAgICAgJ3dpZHRoLiAgSWYgbm90XG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjb250ZW50LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1ByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhIHplcm8gKCJcJzBcJyIpIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAnZW5hYmxlcyBzaWduLVxuJworICAgICAgICAgICAgICAgICAgJ2F3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCAnCisgICAgICAgICAgICAgICAgICAndG8gYSAqZmlsbCpcbicKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgb2YgIlwnMFwnIiB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgJworICAgICAgICAgICAgICAgICAgJyJcJz1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgJ2JlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZGVjaW1hbCBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2ZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyIuICBGb3Igbm9uLVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSAnCisgICAgICAgICAgICAgICAgICAnaW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICd3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICd0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAyLiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAxMC4gICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluICcKKyAgICAgICAgICAgICAgICAgICdiYXNlIDguICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyBsb3dlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93ICcKKyAgICAgICAgICAgICAgICAgICcoZXhjZXB0ICJcJ25cJyJcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgJworICAgICAgICAgICAgICAgICAgJ3RoZSBpbnRlZ2VyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgICdhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgJworICAgICAgICAgICAgICAgICAgJ2luIHNjaWVudGlmaWMgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyICdlJyB0byAiCisgICAgICAgICAgICAgICAgICAnaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgY2FzZSAnRScgYXMgdGhlIHNlcGFyYXRvciAiCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBudW1iZXIuICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAnY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICcKKyAgICAgICAgICAgICAgICAgICciSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAnCisgICAgICAgICAgICAgICAgICAnInAgPj0gMSIsIHRoaXMgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgb3IgaW4gICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzICcKKyAgICAgICAgICAgICAgICAgICdtYWduaXR1ZGUuICBUaGUgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZSByZXN1bHQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdhbmQgcHJlY2lzaW9uICJwLTEiIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCAnCisgICAgICAgICAgICAgICAgICAnPD0gZXhwIDwgcCIsIHRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gJworICAgICAgICAgICAgICAgICAgJ3R5cGUgIlwnZlwnIiBhbmQgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzICcKKyAgICAgICAgICAgICAgICAgICdhbHNvIHJlbW92ZWQgaWYgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ2l0LiAgUG9zaXRpdmUgYW5kICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLCBhbmQgbmFucywgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgJworICAgICAgICAgICAgICAgICAgJyItMCIgYW5kICJuYW4iICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICdzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCAnCisgICAgICAgICAgICAgICAgICAndG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgJworICAgICAgICAgICAgICAgICAgJzEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICdwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgJworICAgICAgICAgICAgICAgICAgJ3RvIHJlcHJlc2VudCB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzICcKKyAgICAgICAgICAgICAgICAgICd0byBtYXRjaCB0aGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJ290aGVyIGZvcm1hdCAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ21vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgZXhhbXBsZXNcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4ICcKKyAgICAgICAgICAgICAgICAgICdhbmQgY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIG9sZCAiJSItZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAnIiUiLWZvcm1hdHRpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCAnCisgICAgICAgICAgICAgICAgICAnb2YgIiUiLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCAiXCclMDMuMmZcJyIgY2FuIGJlIHRyYW5zbGF0ZWQgdG8gJworICAgICAgICAgICAgICAgICAgJyJcJ3s6MDMuMmZ9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zLCBzaG93blxuJworICAgICAgICAgICAgICAgICAgJ2luIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfSwgezF9LCB7Mn0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAne30sIHt9LCB7fScuZm9ybWF0KCdhJywgJ2InLCAnYycpICAjIDMuMSsgb25seVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoKidhYmMnKSAgICAgICMgdW5wYWNraW5nICIKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9ezF9ezB9Jy5mb3JtYXQoJ2FicmEnLCAnY2FkJykgICAjIGFyZ3VtZW50cycgIgorICAgICAgICAgICAgICAgICAgJ2luZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2FicmFjYWRhYnJhJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdChsYXRpdHVkZT0nMzcuMjROJywgIgorICAgICAgICAgICAgICAgICAgImxvbmdpdHVkZT0nLTExNS44MVcnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gY29vcmQgPSB7J2xhdGl0dWRlJzogJzM3LjI0TicsICdsb25naXR1ZGUnOiAiCisgICAgICAgICAgICAgICAgICAiJy0xMTUuODFXJ31cbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdCgqKmNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBhdHRyaWJ1dGVzOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gMy01alxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAoJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgIgorICAgICAgICAgICAgICAgICAgInBhcnQgezAucmVhbH0gJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uJykuZm9ybWF0KGMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgIgorICAgICAgICAgICAgICAgICAgInBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC4nXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIFBvaW50OlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdQb2ludCh7c2VsZi54fSwgIgorICAgICAgICAgICAgICAgICAgIntzZWxmLnl9KScuZm9ybWF0KHNlbGY9c2VsZilcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdQb2ludCg0LCAyKSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBpdGVtczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY29vcmQgPSAoMywgNSlcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ1g6IHswWzBdfTsgIFk6IHswWzFdfScuZm9ybWF0KGNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdYOiAzOyAgWTogNSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAneyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuJworICAgICAgICAgICAgICAgICAgJyAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAndGVzdDIiXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PDMwfScuZm9ybWF0KCdsZWZ0IGFsaWduZWQnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Oj4zMH0nLmZvcm1hdCgncmlnaHQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6XjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6Kl4zMH0nLmZvcm1hdCgnY2VudGVyZWQnKSAgIyB1c2UgJyonIGFzIGEgZmlsbCAiCisgICAgICAgICAgICAgICAgICAnY2hhclxuJworICAgICAgICAgICAgICAgICAgIiAgICcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKionXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIlK2YiLCAiJS1mIiwgYW5kICIlIGYiIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6K2Z9OyB7OitmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0ICIKKyAgICAgICAgICAgICAgICAgICdhbHdheXNcbicKKyAgICAgICAgICAgICAgICAgICIgICAnKzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OiBmfTsgezogZn0nLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlICIKKyAgICAgICAgICAgICAgICAgICdmb3IgcG9zaXRpdmUgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgIiAgICcgMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6LWZ9OyB7Oi1mfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgIgorICAgICAgICAgICAgICAgICAgInRoZSBtaW51cyAtLSBzYW1lIGFzICd7OmZ9OyB7OmZ9J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICczLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byAnCisgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50IGJhc2VzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46ICcKKyAgICAgICAgICAgICAgICAgICd7MDpifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46ICcKKyAgICAgICAgICAgICAgICAgICd7MDojYn0iLmZvcm1hdCg0MilcbicKKyAgICAgICAgICAgICAgICAgICIgICAnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6LH0nLmZvcm1hdCgxMjM0NTY3ODkwKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcxLDIzNCw1NjcsODkwJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBwb2ludHMgPSAxOVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiB0b3RhbCA9IDIyXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfScuZm9ybWF0KHBvaW50cy90b3RhbClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiUnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OiVZLSVtLSVkICVIOiVNOiVTfScuZm9ybWF0KGQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzIwMTAtMDctMDQgMTI6MTU6NTgnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcCgnPF4+JywgWydsZWZ0JywgJ2NlbnRlcicsICIKKyAgICAgICAgICAgICAgICAgICIncmlnaHQnXSk6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAnezA6e2ZpbGx9e2FsaWdufTE2fScuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sICIKKyAgICAgICAgICAgICAgICAgICdhbGlnbj1hbGlnbilcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICIgICAnbGVmdDw8PDw8PDw8PDw8PCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnXl5eXl5jZW50ZXJeXl5eXidcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnPj4+Pj4+Pj4+Pj5yaWdodCdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezowMlh9ezowMlh9ezowMlh9ezowMlh9Jy5mb3JtYXQoKm9jdGV0cylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQzBBODAwMDEnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGludChfLCAxNilcbicKKyAgICAgICAgICAgICAgICAgICcgICAzMjMyMjM1NTIxXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHdpZHRoID0gNVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOiAjZG9jdGVzdDogJworICAgICAgICAgICAgICAgICAgJytOT1JNQUxJWkVfV0hJVEVTUEFDRVxuJworICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gJ2RYb2InOlxuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHByaW50KCd7MDp7d2lkdGh9e2Jhc2V9fScuZm9ybWF0KG51bSwgIgorICAgICAgICAgICAgICAgICAgImJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9JyAnKVxuIgorICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA1ICAgICA1ICAgICA1ICAgMTAxXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA4ICAgICA4ICAgIDEwICAxMDAwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDExICAgICBCICAgIDEzICAxMDExXG4nLAorICdmdW5jdGlvbic6ICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAnCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0ICcKKyAgICAgICAgICAgICAnWyIsIl1dICIpIl0gTkVXTElORVxuJworICAgICAgICAgICAgICcgICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgIioqIiBwYXJhbWV0ZXJdXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgJworICAgICAgICAgICAgICdleGVjdXRpb24gYmluZHNcbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gICcKKyAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICdmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsICcKKyAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgJworICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyAnCisgICAgICAgICAgICAgJ3RoaXMgZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgJworICAgICAgICAgICAgICcqZGVjb3JhdG9yKlxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICdkZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJ3Jlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBuYW1lXG4nCisgICAgICAgICAgICAgJ2luc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlICcKKyAgICAgICAgICAgICAnYXBwbGllZCBpblxuJworICAgICAgICAgICAgICduZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuJworICAgICAgICAgICAgICcqZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAndmFsdWVzLiJcbicKKyAgICAgICAgICAgICAnRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJyphcmd1bWVudCogbWF5XG4nCisgICAgICAgICAgICAgImJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlcidzIGRlZmF1bHQgIgorICAgICAgICAgICAgICd2YWx1ZSBpc1xuJworICAgICAgICAgICAgICdzdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgJworICAgICAgICAgICAgICctLS0gdGhpc1xuJworICAgICAgICAgICAgICdpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnZ3JhbW1hci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyoqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0ICcKKyAgICAgICAgICAgICAnd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpc1xuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnc2FtZSAicHJlLVxuJworICAgICAgICAgICAgICdjb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5ICcKKyAgICAgICAgICAgICAnaW1wb3J0YW50XG4nCisgICAgICAgICAgICAgJ3RvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsICcKKyAgICAgICAgICAgICAnc3VjaCBhcyBhXG4nCisgICAgICAgICAgICAgJ2xpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgJyhlLmcuIGJ5XG4nCisgICAgICAgICAgICAgJ2FwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCAnCisgICAgICAgICAgICAgJ21vZGlmaWVkLlxuJworICAgICAgICAgICAgICdUaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyAnCisgICAgICAgICAgICAgJ3RvIHVzZVxuJworICAgICAgICAgICAgICciTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5ICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuJworICAgICAgICAgICAgICcgICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHBlbmd1aW4gPSBbXVxuJworICAgICAgICAgICAgICcgICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuJworICAgICAgICAgICAgICcgICAgICAgcmV0dXJuIHBlbmd1aW5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gJworICAgICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgICAgJypDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyc1xuJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiAnCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgZnJvbVxuJworICAgICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4nCisgICAgICAgICAgICAgJyIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlICcKKyAgICAgICAgICAgICAncmVjZWl2aW5nIGFueVxuJworICAgICAgICAgICAgICdleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gICcKKyAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgJ2Zvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuJworICAgICAgICAgICAgICdkaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nICcKKyAgICAgICAgICAgICAndG8gYSBuZXdcbicKKyAgICAgICAgICAgICAnZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAna2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgJworICAgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdQYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgJworICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gJworICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSAnCisgICAgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAgICAnInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAgICAnbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gJworICAgICAgICAgICAgICdhbmQgYXJlXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgJworICAgICAgICAgICAgICdBbm5vdGF0aW9ucyBtYXlcbicKKyAgICAgICAgICAgICAnYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlICcKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUuXG4nCisgICAgICAgICAgICAgJ1RoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgJ25vdCBib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbjtcbicKKyAgICAgICAgICAgICAnYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICdhc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgJworICAgICAgICAgICAgICdpdFxuJworICAgICAgICAgICAgICdhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiCisgICAgICAgICAgICAgJyIiZGVmIiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgJworICAgICAgICAgICAgICd2YXJpYWJsZXMgdXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgJworICAgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCisgJ2dsb2JhbCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgJworICAgICAgICAgICAnZW50aXJlXG4nCisgICAgICAgICAgICdjdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuJworICAgICAgICAgICAnZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ3NhbWUgY29kZVxuJworICAgICAgICAgICAnYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgJworICAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgICdwYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiAnCisgICAgICAgICAgICdkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgImltcG9ydCIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICdlbmZvcmNlIHRoZSB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSAnCisgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICdmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHkgJworICAgICAgICAgICAnY2hhbmdlXG4nCisgICAgICAgICAgICd0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlICJnbG9iYWwiIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSAnCisgICAgICAgICAgICdwYXJzZXIuICBJdFxuJworICAgICAgICAgICAnYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlICJnbG9iYWwiXG4nCisgICAgICAgICAgICdzdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgImdsb2JhbCIgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiBhICcKKyAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAnb3IgY29kZSBvYmplY3Qgc3VwcGxpZWQgdG8gdGhlIGJ1aWx0LWluICJleGVjKCkiIGZ1bmN0aW9uIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdhZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgY29kZVxuJworICAgICAgICAgICAnY29udGFpbmVkIGluIHN1Y2ggYSBzdHJpbmcgaXMgdW5hZmZlY3RlZCBieSAiZ2xvYmFsIiBzdGF0ZW1lbnRzICcKKyAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAnY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGUgJworICAgICAgICAgICAnImV2YWwoKSJcbicKKyAgICAgICAgICAgJ2FuZCAiY29tcGlsZSgpIiBmdW5jdGlvbnMuXG4nLAorICdpZC1jbGFzc2VzJzogJ1xuJworICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAnbWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiAnCisgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICd0cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgJyAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgJworICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIgIl8iXG4nCisgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdyZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgJworICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAnICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzICcKKyAgICAgICAgICAgICAgICdub3QgZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICdjb252ZW50aW9uLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICcgICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICAnCisgICAgICAgICAgICAgICAnQ3VycmVudFxuJworICAgICAgICAgICAgICAgJyAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqICcKKyAgICAgICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgJworICAgICAgICAgICAgICAgJ3ZlcnNpb25zIG9mXG4nCisgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICdkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgJworICAgICAgICAgICAgICAgJ29mIGJhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAorICdpZGVudGlmaWVycyc6ICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAnYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgJworICAgICAgICAgICAgICAgICdiZWxvdzsgc2VlIGFsc29cbicKKyAgICAgICAgICAgICAgICAnKipQRVAgMzEzMSoqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdXaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCAnCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgZm9yXG4nCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlICcKKyAgICAgICAgICAgICAgICAnYW5kIGxvd2VyY2FzZVxuJworICAgICAgICAgICAgICAgICdsZXR0ZXJzICJBIiB0aHJvdWdoICJaIiwgdGhlIHVuZGVyc2NvcmUgIl8iIGFuZCwgZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIsIHRoZSBkaWdpdHMgIjAiIHRocm91Z2ggIjkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgJworICAgICAgICAgICAgICAgICd0aGUgQVNDSUlcbicKKyAgICAgICAgICAgICAgICAncmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSAnCisgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2F0aW9uXG4nCisgICAgICAgICAgICAgICAgJ3VzZXMgdGhlIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGFzICcKKyAgICAgICAgICAgICAgICAnaW5jbHVkZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgJyJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYXJlIHVubGltaXRlZCBpbiBsZW5ndGguICBDYXNlIGlzIHNpZ25pZmljYW50LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuJworICAgICAgICAgICAgICAgICcgICBpZF9zdGFydCAgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBnZW5lcmFsIGNhdGVnb3JpZXMgJworICAgICAgICAgICAgICAgICdMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCAnCisgICAgICAgICAgICAgICAgJ3RoZSBPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbicKKyAgICAgICAgICAgICAgICAnICAgaWRfY29udGludWUgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQsIHBsdXMgJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCAnCisgICAgICAgICAgICAgICAgJ3RoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX3N0YXJ0ICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuJworICAgICAgICAgICAgICAgICcgICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSAnCisgICAgICAgICAgICAgICAgJ05GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTGwqIC0gbG93ZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbyogLSBvdGhlciBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTWMqIC0gc3BhY2luZyBjb21iaW5pbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAnUHJvcExpc3QudHh0IHRvXG4nCisgICAgICAgICAgICAgICAgJyAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0FsbCBpZGVudGlmaWVycyBhcmUgY29udmVydGVkIGludG8gdGhlIG5vcm1hbCBmb3JtIE5GS0MgJworICAgICAgICAgICAgICAgICd3aGlsZSBwYXJzaW5nO1xuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGZvclxuJworICAgICAgICAgICAgICAgICdVbmljb2RlIDQuMSBjYW4gYmUgZm91bmQgYXQgaHR0cDovL3d3dy5kY2wuaHBpLnVuaS1cbicKKyAgICAgICAgICAgICAgICAncG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnS2V5d29yZHNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICcKKyAgICAgICAgICAgICAgICAnKmtleXdvcmRzKiBvZlxuJworICAgICAgICAgICAgICAgICd0aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gICcKKyAgICAgICAgICAgICAgICAnVGhleSBtdXN0XG4nCisgICAgICAgICAgICAgICAgJ2JlIHNwZWxsZWQgZXhhY3RseSBhcyB3cml0dGVuIGhlcmU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuJworICAgICAgICAgICAgICAgICcgICBOb25lICAgICAgIGNvbnRpbnVlICAgZm9yICAgICAgICBsYW1iZGEgICAgIHRyeVxuJworICAgICAgICAgICAgICAgICcgICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuJworICAgICAgICAgICAgICAgICcgICBhcyAgICAgICAgIGVsaWYgICAgICAgaWYgICAgICAgICBvciAgICAgICAgIHlpZWxkXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAnICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdSZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSAnCisgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAnbWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiAnCisgICAgICAgICAgICAgICAgJ2xlYWRpbmcgYW5kXG4nCisgICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfKiJcbicKKyAgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIgIl8iXG4nCisgICAgICAgICAgICAgICAgJyAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSAnCisgICAgICAgICAgICAgICAgJ3Jlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgJworICAgICAgICAgICAgICAgICdXaGVuIG5vdFxuJworICAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgJworICAgICAgICAgICAgICAgICdub3QgZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAnICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICAgICdsaWJyYXJ5KS4gIEN1cnJlbnRcbicKKyAgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogJworICAgICAgICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlICcKKyAgICAgICAgICAgICAgICAndmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCAnCisgICAgICAgICAgICAgICAgJ3RoYXQgZG9lcyBub3RcbicKKyAgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAgJyAgIHdhcm5pbmcuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgICcgICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkICcKKyAgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgICdtYW5nbGVkIGZvcm1cbicKKyAgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgJ29mIGJhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKKyAnaWYnOiAnXG4nCisgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgJ1xuJworICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICdcbicKKyAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAnb25lXG4nCisgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gJworICAgICAgICdvcGVyYXRpb25zKlxuJworICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuJworICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnaW1hZ2luYXJ5JzogJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBpbnRwYXJ0KSAoImoiIHwgIkoiKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0ICcKKyAgICAgICAgICAgICAgJ29mIDAuMC5cbicKKyAgICAgICAgICAgICAgJ0NvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgJ251bWJlcnNcbicKKyAgICAgICAgICAgICAgJ2FuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgJ2NvbXBsZXhcbicKKyAgICAgICAgICAgICAgJ251bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciAnCisgICAgICAgICAgICAgICd0byBpdCxcbicKKyAgICAgICAgICAgICAgJ2UuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGpcbicsCisgJ2ltcG9ydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4nCisgICAgICAgICAgICcgICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAgJ3R3b1xuJworICAgICAgICAgICAnc3RlcHM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbicKKyAgICAgICAgICAgJyAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5ICcKKyAgICAgICAgICAgJ2NvbW1hcykgdGhlXG4nCisgICAgICAgICAgICd0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzICcKKyAgICAgICAgICAgJ3Rob3VnaFxuJworICAgICAgICAgICAndGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWRpdWFsIGltcG9ydCAnCisgICAgICAgICAgICdzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZGV0YWlscyBvZiB0aGUgZmlyc3Qgc3RlcCwgZmluZGluZyBhbmQgbG9hZGluZyBtb2R1bGVzIGFyZVxuJworICAgICAgICAgICAnZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSAqaW1wb3J0ICcKKyAgICAgICAgICAgJ3N5c3RlbSosXG4nCisgICAgICAgICAgICd3aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdjYW4gYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4nCisgICAgICAgICAgICdjdXN0b21pemUgdGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgJworICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICdpbmRpY2F0ZSBlaXRoZXIgdGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2Vycm9yIG9jY3VycmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyAnCisgICAgICAgICAgICdleGVjdXRpb25cbicKKyAgICAgICAgICAgIm9mIHRoZSBtb2R1bGUncyBjb2RlLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlICcKKyAgICAgICAgICAgJ21hZGVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkICcKKyAgICAgICAgICAgJ2lzIGFcbicKKyAgICAgICAgICAgIiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsICIKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICcgIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyAnCisgICAgICAgICAgICdib3VuZCBpblxuJworICAgICAgICAgICAnICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICcgIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICcgIHJhdGhlciB0aGFuIGRpcmVjdGx5XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4nCisgICAgICAgICAgICcgICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICdjbGF1c2VzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kICcKKyAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgJyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJyAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzICcKKyAgICAgICAgICAgJ3ByZXNlbnQsXG4nCisgICAgICAgICAgICcgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0V4YW1wbGVzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kICcKKyAgICAgICAgICAgJ2xvY2FsbHlcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kICcKKyAgICAgICAgICAgJ2FzIGZiYlxuJworICAgICAgICAgICAnICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgJworICAgICAgICAgICAnYXMgYmF6XG4nCisgICAgICAgICAgICcgICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgJworICAgICAgICAgICAnYXMgYXR0clxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICduYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgJ2NoZWNraW5nIHRoZVxuJworICAgICAgICAgICAnbW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsICcKKyAgICAgICAgICAgJ2l0IG11c3RcbicKKyAgICAgICAgICAgJ2JlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICdhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICJuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCAiCisgICAgICAgICAgICdkbyBub3RcbicKKyAgICAgICAgICAgJ2JlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICd0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSAnCisgICAgICAgICAgICdleHBvcnRpbmdcbicKKyAgICAgICAgICAgJ2l0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzICcKKyAgICAgICAgICAgJ3doaWNoIHdlcmVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgJworICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAnYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgJworICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICd3aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgJworICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICd0aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuICcKKyAgICAgICAgICAgJ0J5XG4nCisgICAgICAgICAgICd1c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAnCisgICAgICAgICAgICciZnJvbSIgeW91XG4nCisgICAgICAgICAgICdjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlICcKKyAgICAgICAgICAgJ2hpZXJhcmNoeVxuJworICAgICAgICAgICAnd2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlICcKKyAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgJ3BhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzICcKKyAgICAgICAgICAgJ21lYW5zIHVwXG4nCisgICAgICAgICAgICdvbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSAnCisgICAgICAgICAgICdleGVjdXRlXG4nCisgICAgICAgICAgICciZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3UgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiAnCisgICAgICAgICAgICdpbXBvcnQgbW9kIlxuJworICAgICAgICAgICAnZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQICcKKyAgICAgICAgICAgJzMyOCoqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICciaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAnZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGdXR1cmUgc3RhdGVtZW50c1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSAnCisgICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICdtb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSAnCisgICAgICAgICAgICdmZWF0dXJlXG4nCisgICAgICAgICAgICdiZWNvbWVzIHN0YW5kYXJkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgJworICAgICAgICAgICAndmVyc2lvbnNcbicKKyAgICAgICAgICAgJ29mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICAnCisgICAgICAgICAgICdJdFxuJworICAgICAgICAgICAnYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG4nCisgICAgICAgICAgICdyZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgJworICAgICAgICAgICAnZmVhdHVyZSBbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4nCisgICAgICAgICAgICcgICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdsaW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogY29tbWVudHMsXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogYmxhbmsgbGluZXMsIGFuZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbicKKyAgICAgICAgICAgJyJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuJworICAgICAgICAgICAnIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCAnCisgICAgICAgICAgICdiZWNhdXNlXG4nCisgICAgICAgICAgICd0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzICcKKyAgICAgICAgICAgJ2NvbXBhdGliaWxpdHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCAnCisgICAgICAgICAgICdjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICd0aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAncmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbicKKyAgICAgICAgICAgJ3J1bnRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgJworICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAnYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAndGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50ICcKKyAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICdleGVjdXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgJworICAgICAgICAgICAnZmVhdHVyZVxuJworICAgICAgICAgICAnZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAiVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdCdzIGFuIG9yZGluYXJ5IGltcG9ydCAiCisgICAgICAgICAgICdzdGF0ZW1lbnQgd2l0aFxuJworICAgICAgICAgICAnbm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuJworICAgICAgICAgICAnImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ3dpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCAnCisgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAnZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yICcKKyAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAndGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbicKKyAgICAgICAgICAgJ2ludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICd0byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgJworICAgICAgICAgICAnYmUgaW5cbicKKyAgICAgICAgICAgJ2VmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAorICdpbic6ICdcbicKKyAgICAgICAnQ29tcGFyaXNvbnNcbicKKyAgICAgICAnKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1VubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAncHJpb3JpdHksXG4nCisgICAgICAgJ3doaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxuJworICAgICAgICdvcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG4nCisgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICdcbicKKyAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4nCisgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgJ1xuJworICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG4nCisgICAgICAgJ2VxdWl2YWxlbnQgdG8gInggPCB5IGFuZCB5IDw9IHoiLCBleGNlcHQgdGhhdCAieSIgaXMgZXZhbHVhdGVkIG9ubHlcbicKKyAgICAgICAnb25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuJworICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICcKKyAgICAgICAnKm9wMSosXG4nCisgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgYyAuLi4gJworICAgICAgICd5XG4nCisgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsICcKKyAgICAgICAnZXhjZXB0XG4nCisgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgJ1xuJworICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb24gJworICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxuJworICAgICAgICdwZXJoYXBzIG5vdCBwcmV0dHkpLlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgJworICAgICAgICd2YWx1ZXNcbicKKyAgICAgICAnb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuIElmIGJvdGggJworICAgICAgICdhcmVcbicKKyAgICAgICAnbnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsIHRoZSAiPT0iICcKKyAgICAgICAnYW5kXG4nCisgICAgICAgJyIhPSIgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRvIGJlXG4nCisgICAgICAgJ3VuZXF1YWwsIHdoaWxlIHRoZSAiPCIsICI+IiwgIj49IiBhbmQgIjw9IiBvcGVyYXRvcnMgcmFpc2UgYVxuJworICAgICAgICciVHlwZUVycm9yIiB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyB0aGF0IGRvIG5vdFxuJworICAgICAgICdpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZiB0eXBlcy4gIFlvdSBjYW5cbicKKyAgICAgICAnY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Ygbm9uLWJ1aWx0LWluIHR5cGVzIGJ5XG4nCisgICAgICAgJ2RlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgIl9fZ3RfXygpIiwgZGVzY3JpYmVkIGluICcKKyAgICAgICAnc2VjdGlvblxuJworICAgICAgICcqQmFzaWMgY3VzdG9taXphdGlvbiouXG4nCisgICAgICAgJ1xuJworICAgICAgICdDb21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuJworICAgICAgICdcbicKKyAgICAgICAnKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJyogVGhlIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlIHNwZWNpYWwuICcKKyAgICAgICAnVGhleVxuJworICAgICAgICcgIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgInggaXMgeCIgYnV0IGFyZSBub3QgZXF1YWwgdG9cbicKKyAgICAgICAnICB0aGVtc2VsdmVzLCAieCAhPSB4Ii4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSB0byBhXG4nCisgICAgICAgJyAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICJGYWxzZSIuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8XG4nCisgICAgICAgJyAgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsIHJldHVybiAiRmFsc2UiLlxuJworICAgICAgICdcbicKKyAgICAgICAnKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuJworICAgICAgICcgIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cbicKKyAgICAgICAnXG4nCisgICAgICAgJyogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbicKKyAgICAgICAnICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgJworICAgICAgICd0aGVpclxuJworICAgICAgICIgIGNoYXJhY3RlcnMuIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW4ndCBiZSBjb21wYXJlZCFcbiIKKyAgICAgICAnXG4nCisgICAgICAgJyogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvblxuJworICAgICAgICcgIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgJworICAgICAgICdlYWNoXG4nCisgICAgICAgJyAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlICcKKyAgICAgICAnc2FtZVxuJworICAgICAgICcgIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuJworICAgICAgICdcbicKKyAgICAgICAnICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbicKKyAgICAgICAnICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gWzEsMix5XSIgaGFzIHRoZSAnCisgICAgICAgJ3NhbWVcbicKKyAgICAgICAnICB2YWx1ZSBhcyAieCA8PSB5Ii4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QsICcKKyAgICAgICAndGhlXG4nCisgICAgICAgJyAgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgIlsxLDJdIDwgJworICAgICAgICdbMSwyLDNdIikuXG4nCisgICAgICAgJ1xuJworICAgICAgICcqIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlICcKKyAgICAgICAndGhlXG4nCisgICAgICAgJyAgc2FtZSAiKGtleSwgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgIihcJzxcJywgXCc8PVwnLCAnCisgICAgICAgIic+PScsXG4iCisgICAgICAgJyAgXCc+XCcpIiByYWlzZSAiVHlwZUVycm9yIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJyogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgJworICAgICAgICdhbmRcbicKKyAgICAgICAnICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAnCisgICAgICAgJyh0aGVcbicKKyAgICAgICAnICB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuJworICAgICAgICcgIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlICcKKyAgICAgICAnbm90XG4nCisgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsICcKKyAgICAgICAnb3JkZXJpbmcuXG4nCisgICAgICAgJyAgRm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4nCisgICAgICAgJyAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG4nCisgICAgICAgJ1xuJworICAgICAgICcqIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXlcbicKKyAgICAgICAnICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkXG4nCisgICAgICAgJyAgc21hbGxlciBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dFxuJworICAgICAgICcgIGNvbnNpc3RlbnRseSB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG4nCisgICAgICAgJ1xuJworICAgICAgICdDb21wYXJpc29uIG9mIG9iamVjdHMgb2YgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXIgJworICAgICAgICdvZlxuJworICAgICAgICd0aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3QgJworICAgICAgICdudW1lcmljXG4nCisgICAgICAgJ3R5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gJworICAgICAgICdpc1xuJworICAgICAgICdub3Qgc3VwcG9ydGVkLCB0aGUgY29tcGFyaXNvbiBtZXRob2QgcmV0dXJucyAiTm90SW1wbGVtZW50ZWQiLlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbicKKyAgICAgICAnZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAnInhcbicKKyAgICAgICAnbm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuJworICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iICcKKyAgICAgICAndGVzdHNcbicKKyAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xuJworICAgICAgICdsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbicKKyAgICAgICAnZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxuJworICAgICAgICd5KSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqICcKKyAgICAgICAnaXNcbicKKyAgICAgICAnYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgJworICAgICAgICdFbXB0eVxuJworICAgICAgICdzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgJworICAgICAgICdzdHJpbmcsXG4nCisgICAgICAgJ3NvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICcKKyAgICAgICAnInhcbicKKyAgICAgICAnaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCAnCisgICAgICAgJ2RvXG4nCisgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSAnCisgICAgICAgJ3oiXG4nCisgICAgICAgJ2lzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbicKKyAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuJworICAgICAgICdcbicKKyAgICAgICAnTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyAnCisgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxuJworICAgICAgICduZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbicKKyAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuJworICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbicKKyAgICAgICAnImluIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiAnCisgICAgICAgJ2lzXG4nCisgICAgICAgJ3RydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzIG5vdCB5IlxuJworICAgICAgICd5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKKyAnaW50ZWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgJ0ludGVnZXIgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgJworICAgICAgICAgICAgICd8IGJpbmludGVnZXJcbicKKyAgICAgICAgICAgICAnICAgZGVjaW1hbGludGVnZXIgOjo9IG5vbnplcm9kaWdpdCBkaWdpdCogfCAiMCIrXG4nCisgICAgICAgICAgICAgJyAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbicKKyAgICAgICAgICAgICAnICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuJworICAgICAgICAgICAgICcgICBvY3RpbnRlZ2VyICAgICA6Oj0gIjAiICgibyIgfCAiTyIpIG9jdGRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBvY3RkaWdpdCAgICAgICA6Oj0gIjAiLi4uIjciXG4nCisgICAgICAgICAgICAgJyAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuJworICAgICAgICAgICAgICcgICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0ICcKKyAgICAgICAgICAgICAnZnJvbSB3aGF0XG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCAnCisgICAgICAgICAgICAgJ2FsbG93ZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggJworICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAndXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgJworICAgICAgICAgICAgICcwYjEwMDExMDExMVxuJworICAgICAgICAgICAgICcgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgJworICAgICAgICAgICAgICcweGRlYWRiZWVmXG4nLAorICdsYW1iZGEnOiAnXG4nCisgICAgICAgICAgICdMYW1iZGFzXG4nCisgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiAnCisgICAgICAgICAgICdleHByZXNzaW9uX25vY29uZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byAnCisgICAgICAgICAgICdjcmVhdGVcbicKKyAgICAgICAgICAgJ2Fub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiAnCisgICAgICAgICAgICdleHByZXNzaW9uIlxuJworICAgICAgICAgICAneWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhICcKKyAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICdvYmplY3QgZGVmaW5lZCB3aXRoXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuJworICAgICAgICAgICAnICAgICAgIHJldHVybiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyICcKKyAgICAgICAgICAgJ2xpc3RzLlxuJworICAgICAgICAgICAnTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICdzdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKKyAnbGlzdHMnOiAnXG4nCisgICAgICAgICAgJ0xpc3QgZGlzcGxheXNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBsaXN0IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2YgZXhwcmVzc2lvbnMgZW5jbG9zZWQgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICdzcXVhcmUgYnJhY2tldHM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbZXhwcmVzc2lvbl9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSB5aWVsZHMgYSBuZXcgbGlzdCBvYmplY3QsIHRoZSBjb250ZW50cyBiZWluZyAnCisgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICdieSBlaXRoZXIgYSBsaXN0IG9mIGV4cHJlc3Npb25zIG9yIGEgY29tcHJlaGVuc2lvbi4gIFdoZW4gYSAnCisgICAgICAgICAgJ2NvbW1hLVxuJworICAgICAgICAgICdzZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSAnCisgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICdmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0ICcKKyAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgJ1doZW4gYSBjb21wcmVoZW5zaW9uIGlzIHN1cHBsaWVkLCB0aGUgbGlzdCBpcyBjb25zdHJ1Y3RlZCBmcm9tICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2VsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKKyAnbmFtaW5nJzogJ1xuJworICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nXG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCaW5kaW5nIG9mIG5hbWVzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJypOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xuJworICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvICcKKyAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ2lkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgJworICAgICAgICAgICAnYWZ0ZXJcbicKKyAgICAgICAgICAgJyJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnb2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICAnCisgICAgICAgICAgICdUaGlzIGZvcm1cbicKKyAgICAgICAgICAgJ21heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCAnCisgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgJ3RoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlICcKKyAgICAgICAgICAgJ25hbWUpLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdFYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgJworICAgICAgICAgICAnZGVmaW5lZCBieSBhXG4nCisgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSAnCisgICAgICAgICAgICd0b3AtbGV2ZWxcbicKKyAgICAgICAgICAgJ2NvZGUgYmxvY2spLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0ICcKKyAgICAgICAgICAgJ2Jsb2NrLFxuJworICAgICAgICAgICAndW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgJworICAgICAgICAgICAnYXQgdGhlXG4nCisgICAgICAgICAgICdtb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAnY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSAnCisgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICdibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAnCisgICAgICAgICAgICcqYmluZGluZypcbicKKyAgICAgICAgICAgJ29mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiAnCisgICAgICAgICAgICdydWxlcy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdSZXNvbHV0aW9uIG9mIG5hbWVzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICAnCisgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSAnCisgICAgICAgICAgICdibG9ja3NcbicKKyAgICAgICAgICAgJ2NvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrICcKKyAgICAgICAgICAgJ2ludHJvZHVjZXNcbicKKyAgICAgICAgICAgJ2EgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlICcKKyAgICAgICAgICAgJ25lYXJlc3RcbicKKyAgICAgICAgICAgJ2VuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlICcKKyAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICJpcyBjYWxsZWQgdGhlIGJsb2NrJ3MgKmVudmlyb25tZW50Ki5cbiIKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAncmFpc2VkLiBJZlxuJworICAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byBhICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICd2YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgJworICAgICAgICAgICAnd2hlcmUgdGhlXG4nCisgICAgICAgICAgICduYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJyJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCAnCisgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgJ3VzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgJworICAgICAgICAgICAnd2l0aGluIGFcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbicKKyAgICAgICAgICAgJ2RlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyICcKKyAgICAgICAgICAgJ2FueXdoZXJlXG4nCisgICAgICAgICAgICd3aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgJworICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICdzcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICd0b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgJworICAgICAgICAgICAnbmFtZXNwYWNlIGJ5XG4nCisgICAgICAgICAgICdzZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgJworICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICdjb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlICcKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnb2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgJworICAgICAgICAgICAnZmlyc3QuICBJZlxuJworICAgICAgICAgICAndGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzICcKKyAgICAgICAgICAgJ3NlYXJjaGVkLiAgVGhlXG4nCisgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyAnCisgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgJ2luIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgJworICAgICAgICAgICAndmFyaWFibGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhICcKKyAgICAgICAgICAgJ2dsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyIHRvXG4nCisgICAgICAgICAgICdwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gJworICAgICAgICAgICAnc2NvcGUuXG4nCisgICAgICAgICAgICciU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2V4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgJworICAgICAgICAgICAndGltZSBhXG4nCisgICAgICAgICAgICdtb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyAnCisgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgJyJfX21haW5fXyIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0NsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICJldmFsKCkiICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiBpcyAnCisgICAgICAgICAgICdhblxuJworICAgICAgICAgICAnZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlICcKKyAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgJ2ZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAndW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICduYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgJ2RpY3Rpb25hcnkgb2ZcbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyAnCisgICAgICAgICAgICdsaW1pdGVkIHRvXG4nCisgICAgICAgICAgICd0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgJworICAgICAgICAgICAnbWV0aG9kcyAtLVxuJworICAgICAgICAgICAndGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlICcKKyAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICdpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgJ3dpbGwgZmFpbDpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgY2xhc3MgQTpcbicKKyAgICAgICAgICAgJyAgICAgICBhID0gNDJcbicKKyAgICAgICAgICAgJyAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzICcKKyAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAnbmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSAnCisgICAgICAgICAgICdsYXR0ZXIgY2FzZVxuJworICAgICAgICAgICAidGhlIG1vZHVsZSdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiCisgICAgICAgICAgICciX19tYWluX18iXG4nCisgICAgICAgICAgICdtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiAnCisgICAgICAgICAgICdpbiBhbnlcbicKKyAgICAgICAgICAgJ290aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhICcKKyAgICAgICAgICAgJ3VzZXItY3JlYXRlZFxuJworICAgICAgICAgICAnZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuJworICAgICAgICAgICAnIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG4nCisgICAgICAgICAgICd3YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAnCisgICAgICAgICAgICciaW1wb3J0IlxuJworICAgICAgICAgICAndGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCAnCisgICAgICAgICAgICdjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiAnCisgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICdpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSAnCisgICAgICAgICAgICdmdWxsXG4nCisgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAnYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90ICcKKyAgICAgICAgICAgJ3Jlc29sdmVkXG4nCisgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICduYW1lc3BhY2UuICBbMV1cbicKKyAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICdvdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCisgJ25vbmxvY2FsJzogJ1xuJworICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byAnCisgICAgICAgICAgICAgJ3JlZmVyIHRvXG4nCisgICAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSAnCisgICAgICAgICAgICAgJ2V4Y2x1ZGluZ1xuJworICAgICAgICAgICAgICdnbG9iYWxzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciAnCisgICAgICAgICAgICAgJ2JpbmRpbmcgaXNcbicKKyAgICAgICAgICAgICAndG8gc2VhcmNoIHRoZSBsb2NhbCBuYW1lc3BhY2UgZmlyc3QuICBUaGUgc3RhdGVtZW50IGFsbG93c1xuJworICAgICAgICAgICAgICdlbmNhcHN1bGF0ZWQgY29kZSB0byByZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsICcKKyAgICAgICAgICAgICAnc2NvcGVcbicKKyAgICAgICAgICAgICAnYmVzaWRlcyB0aGUgZ2xvYmFsIChtb2R1bGUpIHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbicKKyAgICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgJworICAgICAgICAgICAgICdjcmVhdGVkXG4nCisgICAgICAgICAgICAgJ2Nhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgbXVzdCBub3QgY29sbGlkZSB3aXRoICcKKyAgICAgICAgICAgICAncHJlLVxuJworICAgICAgICAgICAgICdleGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICJub25sb2NhbCIgc3RhdGVtZW50LlxuJywKKyAnbnVtYmVycyc6ICdcbicKKyAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBudW1lcmljIGxpdGVyYWxzOiBpbnRlZ2VycywgZmxvYXRpbmcgJworICAgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgICAnbnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcoY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCBudW1iZXIgYW5kIGFuXG4nCisgICAgICAgICAgICAnaW1hZ2luYXJ5IG51bWJlcikuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICcKKyAgICAgICAgICAgICciLTEiXG4nCisgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgJworICAgICAgICAgICAgJ1wnIi0iXCcgYW5kIHRoZVxuJworICAgICAgICAgICAgJ2xpdGVyYWwgIjEiLlxuJywKKyAnbnVtZXJpYy10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3QgJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAgJ25vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgJworICAgICAgICAgICAgICAgICAgJ2lzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAncmVsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgdG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCAnCisgICAgICAgICAgICAgICAgICAncmVmbGVjdGVkIChzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAgJyJfX3JzdWJfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAgJyAgICpOb3RJbXBsZW1lbnRlZCouXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICAnIl9fcnBvd19fKCkiICh0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSAiCisgICAgICAgICAgICAgICAgICAncmVmbGVjdGVkIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgIgorICAgICAgICAgICAgICAgICAgJ2FsbG93cyBzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgJworICAgICAgICAgICAgICAgICAgJyIlPSIsICIqKj0iLFxuJworICAgICAgICAgICAgICAgICAgJyAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuIHRoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgJworICAgICAgICAgICAgICAgICAgJ2Egc3BlY2lmaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyAnCisgICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdvZiBhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgICcieCA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gJworICAgICAgICAgICAgICAgICAgJ2NlcnRhaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluICcKKyAgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGVycm9yc1xuJworICAgICAgICAgICAgICAgICAgIiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gIgorICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgJworICAgICAgICAgICAgICAgICAgJ29mIHRoZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICAnICAgbW9kZWwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVnX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3NfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAgJygiLSIsICIrIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiYWJzKCkiIGFuZCAifiIpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnImNvbXBsZXgoKSIsICJpbnQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0IChzdWNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICcib2N0KCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nLAorICdvYmplY3RzJzogJ1xuJworICAgICAgICAgICAgJ09iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiKk9iamVjdHMqIGFyZSBQeXRob24ncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgIgorICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgJ3Byb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiAnCisgICAgICAgICAgICAnb2JqZWN0cy4gKEluXG4nCisgICAgICAgICAgICAiYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uJ3MgbW9kZWwgb2YgYSAiCisgICAgICAgICAgICAnInN0b3JlZFxuJworICAgICAgICAgICAgJ3Byb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICcqaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5ICcKKyAgICAgICAgICAgICd0aGluayBvZiBpdFxuJworICAgICAgICAgICAgJ2FzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCciaXMiXCcgb3BlcmF0b3IgJworICAgICAgICAgICAgJ2NvbXBhcmVzIHRoZVxuJworICAgICAgICAgICAgJ2lkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gJworICAgICAgICAgICAgJ2ludGVnZXJcbicKKyAgICAgICAgICAgICdyZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sICJpZCh4KSIgaXMgdGhlICcKKyAgICAgICAgICAgICdtZW1vcnlcbicKKyAgICAgICAgICAgICdhZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCAiCisgICAgICAgICAgICAnc3VwcG9ydHNcbicKKyAgICAgICAgICAgICcoZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSAnCisgICAgICAgICAgICAndmFsdWVzXG4nCisgICAgICAgICAgICAnZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gJworICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAndHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gJworICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAnKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgJworICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgJ2NoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgJworICAgICAgICAgICAgJ3VuY2hhbmdlYWJsZVxuJworICAgICAgICAgICAgJ29uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG4nCisgICAgICAgICAgICAnaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhICcKKyAgICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgICAib2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciAiCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uICcKKyAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgJ29iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzICcKKyAgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgICdzdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlICcKKyAgICAgICAgICAgICdzdWJ0bGUuKVxuJworICAgICAgICAgICAgIkFuIG9iamVjdCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yICIKKyAgICAgICAgICAgICdpbnN0YW5jZSxcbicKKyAgICAgICAgICAgICdudW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzICcKKyAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICdsaXN0cyBhcmUgbXV0YWJsZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5ICcKKyAgICAgICAgICAgICdiZWNvbWVcbicKKyAgICAgICAgICAgICd1bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgJ2FsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAnCisgICAgICAgICAgICAnLS0tIGl0IGlzXG4nCisgICAgICAgICAgICAnYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlICcKKyAgICAgICAgICAgICdzdGlsbFxuJworICAgICAgICAgICAgJ3JlYWNoYWJsZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSAnCisgICAgICAgICAgICAncmVmZXJlbmNlLVxuJworICAgICAgICAgICAgJ2NvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSAnCisgICAgICAgICAgICAnbGlua2VkXG4nCisgICAgICAgICAgICAnZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbicKKyAgICAgICAgICAgICd1bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSAnCisgICAgICAgICAgICAnY29udGFpbmluZ1xuJworICAgICAgICAgICAgJ2NpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICJnYyIgbW9kdWxlICcKKyAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gJworICAgICAgICAgICAgJ090aGVyXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgJworICAgICAgICAgICAgJ2RlcGVuZFxuJworICAgICAgICAgICAgJ29uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lICcKKyAgICAgICAgICAgICd1bnJlYWNoYWJsZSAoc29cbicKKyAgICAgICAgICAgICd5b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJOb3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb24ncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuIgorICAgICAgICAgICAgJ2ZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlICcKKyAgICAgICAgICAgICdjb2xsZWN0YWJsZS5cbicKKyAgICAgICAgICAgICdBbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhICcKKyAgICAgICAgICAgICdcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuJworICAgICAgICAgICAgJ3N0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyAnCisgICAgICAgICAgICAnb3BlblxuJworICAgICAgICAgICAgJ2ZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSAnCisgICAgICAgICAgICAnZnJlZWRcbicKKyAgICAgICAgICAgICd3aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICdyZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuICcKKyAgICAgICAgICAgICdQcm9ncmFtc1xuJworICAgICAgICAgICAgJ2FyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gICcKKyAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICdcJyJ0cnkiLi4uImZpbmFsbHkiXCcgc3RhdGVtZW50IGFuZCB0aGUgXCcid2l0aCJcJyBzdGF0ZW1lbnQgJworICAgICAgICAgICAgJ3Byb3ZpZGVcbicKKyAgICAgICAgICAgICdjb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSAnCisgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAnKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuJworICAgICAgICAgICAgImRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyJ3MgdmFsdWUuICAiCisgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICdtb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSAnCisgICAgICAgICAgICAnaW1wbHkgdGhlXG4nCisgICAgICAgICAgICAndmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCAnCisgICAgICAgICAgICAnd2hlbiB3ZVxuJworICAgICAgICAgICAgJ3RhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgJworICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgJ2ltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuICcKKyAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICdjb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlICcKKyAgICAgICAgICAgICdvYmplY3QsIGl0c1xuJworICAgICAgICAgICAgJ3ZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1R5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbicKKyAgICAgICAgICAgICdpbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgJworICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgJ3R5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICdyZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCAnCisgICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgICdmb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgJworICAgICAgICAgICAgJz0gMSIsXG4nCisgICAgICAgICAgICAnImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlICcKKyAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgJ29uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSAnCisgICAgICAgICAgICAnW10iLCAiYyJcbicKKyAgICAgICAgICAgICdhbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgJworICAgICAgICAgICAgJ25ld2x5XG4nCisgICAgICAgICAgICAnY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSAnCisgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAndG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAorICdvcGVyYXRvci1zdW1tYXJ5JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9yIHByZWNlZGVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBQeXRob24sIGZyb21cbicKKyAgICAgICAgICAgICAgICAgICAgICdsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCAnCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSAobW9zdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlLiAgVW5sZXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gICcKKyAgICAgICAgICAgICAgICAgICAgICdPcGVyYXRvcnMgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnZXhwb25lbnRpYXRpb24sIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBzIGZyb20gcmlnaHQgdG8gbGVmdCkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgJworICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzLCBhbGwgaGF2ZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHByZWNlZGVuY2UgYW5kIGhhdmUgYSBsZWZ0LXRvLXJpZ2h0IGNoYWluaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdmZWF0dXJlIGFzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkIGluIHRoZSAqQ29tcGFyaXNvbnMqIHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0V4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhd2FpdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0F3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGZsb2F0c1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgJworICAgICAgICAgICAgICAgICAgICAgJ0ZvciBleGFtcGxlLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnSUVFRSA3NTQgZG91YmxlLVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArICcKKyAgICAgICAgICAgICAgICAgICAgICcxZTEwMCIsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgInksIGl0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgJyIoeC14JXkpLy95IiBkdWUgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xhdHRlciByZXN1bHQsIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSAnCisgICAgICAgICAgICAgICAgICAgICAneSIgYmUgdmVyeSBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0byAieCIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzNdIFdoaWxlIGNvbXBhcmlzb25zIGJldHdlZW4gc3RyaW5ncyBtYWtlIHNlbnNlIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYnl0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBsZXZlbCwgdGhleSBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gdXNlcnMuICAnCisgICAgICAgICAgICAgICAgICAgICAnRm9yIGV4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBzdHJpbmdzICIiXFx1MDBDNyIiIGFuZCAiIlxcdTAwNDNcXHUwMzI3IiIgY29tcGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50bHksIGV2ZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdGhvdWdoIHRoZXkgYm90aCByZXByZXNlbnQgdGhlIHNhbWUgdW5pY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIChMQVRJTlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIGluIGEgaHVtYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcmVjb2duaXphYmxlIHdheSwgY29tcGFyZSB1c2luZyAnCisgICAgICAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsICcKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VlbWluZ2x5IHVudXN1YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgJworICAgICAgICAgICAgICAgICAgICAgJ2xpa2UgdGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0YW50cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nOyB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAnCisgICAgICAgICAgICAgICAgICAgICAnIjIqKi0xIiBpcyAiMC41Ii5cbicsCisgJ3Bhc3MnOiAnXG4nCisgICAgICAgICAnVGhlICJwYXNzIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgJworICAgICAgICAgJ2hhcHBlbnMuXG4nCisgICAgICAgICAnSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuJworICAgICAgICAgJ3N5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKKyAncG93ZXInOiAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvclxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gJworICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAnbGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gICcKKyAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgJ3N5bnRheCBpczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHBvd2VyIDo6PSBhd2FpdCBbIioqIiB1X2V4cHJdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5ICcKKyAgICAgICAgICAnb3BlcmF0b3JzLCB0aGVcbicKKyAgICAgICAgICAnb3BlcmF0b3JzIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90ICcKKyAgICAgICAgICAnY29uc3RyYWluXG4nCisgICAgICAgICAgJ3RoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJyJwb3coKSJcbicKKyAgICAgICAgICAnZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0ICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAncmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgJworICAgICAgICAgICd0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgJworICAgICAgICAgICd1bmxlc3NcbicKKyAgICAgICAgICAndGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuJworICAgICAgICAgICdjb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgJyIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnUmFpc2luZyAiMC4wIiB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIuXG4nCisgICAgICAgICAgJ1JhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgJyJjb21wbGV4IlxuJworICAgICAgICAgICdudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAorICdyYWlzZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJyYWlzZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2Vfc3RtdCA6Oj0gInJhaXNlIiBbZXhwcmVzc2lvbiBbImZyb20iIGV4cHJlc3Npb25dXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0ICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ3RoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSwgYSAiUnVudGltZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkICcKKyAgICAgICAgICAnaW5kaWNhdGluZ1xuJworICAgICAgICAgICd0aGF0IHRoaXMgaXMgYW4gZXJyb3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdPdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICdvYmplY3QuICBJdCBtdXN0IGJlIGVpdGhlciBhIHN1YmNsYXNzIG9yIGFuIGluc3RhbmNlIG9mXG4nCisgICAgICAgICAgJyJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsICcKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnb2J0YWluZWQgd2hlbiBuZWVkZWQgYnkgaW5zdGFudGlhdGluZyB0aGUgY2xhc3Mgd2l0aCBubyAnCisgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIlRoZSAqdHlwZSogb2YgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlJ3MgY2xhc3MsICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICdpcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCAnCisgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgJ2lzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biAnCisgICAgICAgICAgJ3RyYWNlYmFjayBpblxuJworICAgICAgICAgICdvbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoICcKKyAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICd0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzICcKKyAgICAgICAgICAnYXJndW1lbnQpLFxuJworICAgICAgICAgICdsaWtlIHNvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgJworICAgICAgICAgICdzZWNvbmRcbicKKyAgICAgICAgICAnKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICd0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsICcKKyAgICAgICAgICAnYm90aFxuJworICAgICAgICAgICdleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiB0cnk6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4nCisgICAgICAgICAgJyAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKSBmcm9tIGV4Y1xuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgJ2V4Y2VwdGlvbjpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Egc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkICcKKyAgICAgICAgICAnaW5zaWRlXG4nCisgICAgICAgICAgJ2FuIGV4Y2VwdGlvbiBoYW5kbGVyIG9yIGEgImZpbmFsbHkiIGNsYXVzZTogdGhlIHByZXZpb3VzICcKKyAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgJ3RoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uICcKKyAgICAgICAgICAnb2NjdXJyZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAnKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiAnCisgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAnKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCisgJ3JldHVybic6ICdcbicKKyAgICAgICAgICAgJ1RoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gJworICAgICAgICAgICAnZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ25vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3N1YnN0aXR1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uICcKKyAgICAgICAgICAgJ2xpc3QgKG9yXG4nCisgICAgICAgICAgICciTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdyZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuJworICAgICAgICAgICAnIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgJworICAgICAgICAgICAnYXR0cmlidXRlLlxuJywKKyAnc2VxdWVuY2UtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lciBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciAnCisgICAgICAgICAgICAgICAgICAgJ3R1cGxlcykgb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHdlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2Ugb3IgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCAnCisgICAgICAgICAgICAgICAgICAgJzw9IGsgPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsICcKKyAgICAgICAgICAgICAgICAgICAnd2hpY2ggZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkICIKKyAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJyJzb3J0KCkiLCBsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRvcnMuICBJdCBpc1xuJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICciaW4iIG9wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciAnCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGFsbG93XG4nCisgICAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgJworICAgICAgICAgICAgICAgICAgICdhbiBvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciAnCisgICAgICAgICAgICAgICAgICAgJ29yIGxlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICAnIj49IiAwLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciAnCisgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgICd0aHJlZSBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCAnCisgICAgICAgICAgICAgICAgICAgJ2luIHdpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2UgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmICcKKyAgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAnCisgICAgICAgICAgICAgICAgICAgJyJJbmRleEVycm9yIiBzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90ICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2VuZCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICcic2VsZltrZXldIiBmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsICcKKyAgICAgICAgICAgICAgICAgICAnb3IgaWYgbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgJworICAgICAgICAgICAgICAgICAgICdub3RlIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzICcKKyAgICAgICAgICAgICAgICAgICAnaWYgZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbnMgc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBhIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ2NhbiBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAgICAgICdvbiBpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JldmVyc2VkX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluICcKKyAgICAgICAgICAgICAgICAgICAncmV2ZXJzZSBvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICdwcm90b2NvbCAoIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgJworICAgICAgICAgICAgICAgICAgICdub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgJworICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBjb250YWluZXJcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgICAnbW9yZSBlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAnYmUgYSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gICcKKyAgICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVybiB0cnVlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gJworICAgICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UqLlxuJywKKyAnc2hpZnRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ1NoaWZ0aW5nIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSAnCisgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdzZWNvbmQgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdBIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICcKKyAgICAgICAgICAgICAnInBvdygyLG4pIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuICBJZiB0aGUgcmlnaHQtaGFuZCAnCisgICAgICAgICAgICAgJ29wZXJhbmQgaXNcbicKKyAgICAgICAgICAgICAnICBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFuICJPdmVyZmxvd0Vycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICdyYWlzZWQuXG4nLAorICdzbGljaW5ncyc6ICdcbicKKyAgICAgICAgICAgICAnU2xpY2luZ3NcbicKKyAgICAgICAgICAgICAnKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Egc2xpY2luZyBzZWxlY3RzIGEgcmFuZ2Ugb2YgaXRlbXMgaW4gYSBzZXF1ZW5jZSBvYmplY3QgKGUuZy4sICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICdzdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICdvciBhc1xuJworICAgICAgICAgICAgICd0YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgImRlbCIgc3RhdGVtZW50cy4gIFRoZSBzeW50YXggZm9yIGEgJworICAgICAgICAgICAgICdzbGljaW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuJworICAgICAgICAgICAgICcgICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfaXRlbSAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlXG4nCisgICAgICAgICAgICAgJyAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiAnCisgICAgICAgICAgICAgJ1tzdHJpZGVdIF1cbicKKyAgICAgICAgICAgICAnICAgbG93ZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0ICcKKyAgICAgICAgICAgICAnbG9va3MgbGlrZVxuJworICAgICAgICAgICAgICdhbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55ICcKKyAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyICcKKyAgICAgICAgICAgICAnY29tcGxpY2F0aW5nIHRoZVxuJworICAgICAgICAgICAgICdzeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvbiBhcyBhIHN1YnNjcmlwdGlvbiB0YWtlcyBwcmlvcml0eSBvdmVyIHRoZVxuJworICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlICcKKyAgICAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICAgICdjb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgJworICAgICAgICAgICAgICdpbmRleGVkXG4nCisgICAgICAgICAgICAgJyh1c2luZyB0aGUgc2FtZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pICcKKyAgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAgJ2tleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiAnCisgICAgICAgICAgICAgJ3RoZSBzbGljZVxuJworICAgICAgICAgICAgICdsaXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlICcKKyAgICAgICAgICAgICAnY29udGFpbmluZyB0aGVcbicKKyAgICAgICAgICAgICAnY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgJworICAgICAgICAgICAgICd0aGUgbG9uZVxuJworICAgICAgICAgICAgICdzbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgJworICAgICAgICAgICAgICdzbGljZSBpcyBhXG4nCisgICAgICAgICAgICAgJ3NsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopICcKKyAgICAgICAgICAgICAnd2hvc2VcbicKKyAgICAgICAgICAgICAnInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGVcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgZ2l2ZW4gYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsXG4nCisgICAgICAgICAgICAgJ3Jlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCisgJ3NwZWNpYWxhdHRycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ1NwZWNpYWwgQXR0cmlidXRlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgJworICAgICAgICAgICAgICAgICAndG8gc2V2ZXJhbFxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vdCByZXBvcnRlZFxuJworICAgICAgICAgICAgICAgICAnYnkgdGhlICJkaXIoKSIgYnVpbHQtaW4gZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RpY3RfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiAnCisgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5fX2NsYXNzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19iYXNlc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3F1YWxuYW1lX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlICpxdWFsaWZpZWQgbmFtZSogb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19tcm9fX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGF0dHJpYnV0ZSBpcyBhIHR1cGxlIG9mIGNsYXNzZXMgdGhhdCBhcmUgJworICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICBsb29raW5nIGZvciBiYXNlIGNsYXNzZXMgZHVyaW5nIG1ldGhvZCByZXNvbHV0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5tcm8oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhIG1ldGFjbGFzcyB0byAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pemUgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciBmb3IgaXRzIGluc3RhbmNlcy4gIEl0IGlzICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBhdCBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFudGlhdGlvbiwgYW5kIGl0cyByZXN1bHQgaXMgc3RvcmVkIGluICJfX21yb19fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzICcKKyAgICAgICAgICAgICAgICAgJ2ltbWVkaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSAnCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBbPGNsYXNzICdib29sJz5dXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgJ2ZvdW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgaW4gdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgJworICAgICAgICAgICAgICAgICAnY3VzdG9taXphdGlvbiopLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCAnCisgICAgICAgICAgICAgICAgICdlcXVhbCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJbM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW4ndCB0ZWxsIHRoZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIG9wZXJhbmRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCAnCisgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UpLFxuJworICAgICAgICAgICAgICAgICAnICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCAnCisgICAgICAgICAgICAgICAgICdieSBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdzeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgJworICAgICAgICAgICAgICAgICAnc2xpY2luZykgYnlcbicKKyAgICAgICAgICAgICAgICAgImRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvbidzICIKKyAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICcqb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciAnCisgICAgICAgICAgICAgICAgICdvd24gYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgY2xhc3MsXG4nCisgICAgICAgICAgICAgICAgICd0aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAnInR5cGUoeCkuX19nZXRpdGVtX18oeCwgaSkiLlxuJworICAgICAgICAgICAgICAgICAnRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJyh0eXBpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsICcKKyAgICAgICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAgICAgICdpbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RlZ3JlZSB0aGF0IGl0XG4nCisgICAgICAgICAgICAgICAgICdtYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICdzb21lXG4nCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzLCBidXRcbicKKyAgICAgICAgICAgICAgICAgJ2V4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgJworICAgICAgICAgICAgICAgICAndGhpcyBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJOb2RlTGlzdCIgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgJ01vZGVsLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCYXNpYyBjdXN0b21pemF0aW9uXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0ICcKKyAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgICAgICAgJ2FzIGl0c1xuJworICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICAnCisgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnKHVzdWFsbHkgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCAnCisgICAgICAgICAgICAgICAgICd0aGVuIHRoZSBuZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgJworICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICcgICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGlvbi4gIEl0XG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiksIGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGhhcyBhblxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciAnCisgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gJworICAgICAgICAgICAgICAgICAnY29uc3RydWN0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAnY3VzdG9taXNlXG4nCisgICAgICAgICAgICAgICAgICcgICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgJyJfX2luaXRfXygpIjsgZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gICcKKyAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAnICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGNhbGwgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgJworICAgICAgICAgICAgICAgICAnYXQgYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAnICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZWQgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAnZXhpc3Qgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gJworICAgICAgICAgICAgICAgICAndGhlIGZvcm1lclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGUgbGF0dGVyIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzICcKKyAgICAgICAgICAgICAgICAgJ3plcm8uICBTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzIChlLmcuLFxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCAnCisgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgJworICAgICAgICAgICAgICAgICAnc3RhY2sgZnJhbWUgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAnc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgJworICAgICAgICAgICAgICAgICAnYSByZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gJworICAgICAgICAgICAgICAgICAndW5oYW5kbGVkXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCAnCisgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgJworICAgICAgICAgICAgICAgICAnVGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjeWNsZXM7XG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSAnCisgICAgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAndGhpcmQgY2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICcKKyAgICAgICAgICAgICAgICAgJyJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuJworICAgICAgICAgICAgICAgICAnICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCAnCisgICAgICAgICAgICAgICAgICd1cCB3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXQncyBvbiBieSAiCisgICAgICAgICAgICAgICAgICdkZWZhdWx0KS4gUmVmZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIHRvcGljLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciAnCisgICAgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgJworICAgICAgICAgICAgICAgICAnb2NjdXIgZHVyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzICcKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiAnCisgICAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnIl9fZGVsX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdwcm9jZXNzIG9mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gICcKKyAgICAgICAgICAgICAgICAgJ0ZvciB0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgJ21pbmltdW0gbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ3ZlcnNpb24gMS41LFxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCAnCisgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICdnbG9iYWxzIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyAnCisgICAgICAgICAgICAgICAgICdleGlzdCwgdGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsICcKKyAgICAgICAgICAgICAgICAgJ2F2YWlsYWJsZSBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXByX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICcib2ZmaWNpYWwiXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsICcKKyAgICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCAnCisgICAgICAgICAgICAgICAgICdiZSB1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAgICAgICAnICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gJworICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19yZXByX18oKSIgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICcKKyAgICAgICAgICAgICAgICAgJyJpbmZvcm1hbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICdyZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyAnCisgICAgICAgICAgICAgICAgICdpbXBvcnRhbnQgdGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAgICdhICpzdHJpbmcqXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgJworICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBvZiBjbGFzcyAic3RyIikgdG8gcHJvZHVjZSBhICcKKyAgICAgICAgICAgICAgICAgJyJmb3JtYXR0ZWQiXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ29wdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgImZvcm1hdF9zcGVjIiAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpcyB1cCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgdGhlIHR5cGUgaW1wbGVtZW50aW5nICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgJ3R5cGVzLCBvciB1c2UgYVxuJworICAgICAgICAgICAgICAgICAnICAgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICcKKyAgICAgICAgICAgICAgICAgJyJvYmplY3QiIGl0c2VsZlxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgJworICAgICAgICAgICAgICAgICAnbmFtZXMgaXMgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAnCisgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAnICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAnCisgICAgICAgICAgICAgICAgICcieD55IiBjYWxsc1xuJworICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICcKKyAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBmb3IgYVxuJworICAgICAgICAgICAgICAgICAnICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAnICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dCAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCAnCisgICAgICAgICAgICAgICAgICdjYWxsICJib29sKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciAnCisgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyAnCisgICAgICAgICAgICAgICAgICdvdGhlciBpbXBsaWVkXG4nCisgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3QgJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLCBzZWVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSAnCisgICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnYnV0IHRoZSByaWdodFxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAiZWFjaCBvdGhlcidzXG4iCisgICAgICAgICAgICAgICAgICcgICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzICcKKyAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uICcKKyAgICAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyAiCisgICAgICAgICAgICAgICAgICd0eXBlIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgIiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3MgdHlwZSwgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgJworICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgIgorICAgICAgICAgICAgICAgICAnc3ViY2xhc3NpbmcgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19oYXNoX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICdvbiBtZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSAnCisgICAgICAgICAgICAgICAgICdyZXF1aXJlZCBwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlOyBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgJworICAgICAgICAgICAgICAgICAnb3IpIHRoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgJworICAgICAgICAgICAgICAgICAnYSBwYXJ0IGluXG4nCisgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiAnCisgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgJyJQeV9zc2l6ZV90Ii4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICczMi1iaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCAnCisgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJweXRob24gLWNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fZXFfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgJ2FzIGl0ZW1zIGluXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90ICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgIiAgIHJlcXVpcmVzIHRoYXQgYSBrZXkncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlICIKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBieVxuJworICAgICAgICAgICAgICAgICAnICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSBzdWNoXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSAnCisgICAgICAgICAgICAgICAgICc9PSBoYXNoKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAnIl9faGFzaF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICAnCisgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICdhdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAnICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgJworICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMuSGFzaGFibGUiKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuJworICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiAnCisgICAgICAgICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAncmFuZG9tIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAnICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgJworICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgJworICAgICAgICAgICAgICAgICAnYSBkZW5pYWwtXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgJworICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgJworICAgICAgICAgICAgICAgICAnY29tcGxleGl0eS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgU2VlICcKKyAgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciAnCisgICAgICAgICAgICAgICAgICdtYWRlIGd1YXJhbnRlZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICczMi1iaXQgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkICcKKyAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Jvb2xfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pbiBvcGVyYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBvYmplY3QgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZWFuaW5nIG9mXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yICcKKyAgICAgICAgICAgICAgICAgJ2lzIGl0IGZvdW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ25hbWUuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciAnCisgICAgICAgICAgICAgICAgICdyYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCAnCisgICAgICAgICAgICAgICAgICdtZWNoYW5pc20sXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ2FzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAnICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAnZG9uZSBib3RoIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAnICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gICcKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAnICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRyb2wgYnkgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgKGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ2dldCB0b3RhbFxuJworICAgICAgICAgICAgICAgICAnICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyAnCisgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgJworICAgICAgICAgICAgICAgICAncmVjdXJzaW9uIGluXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgJworICAgICAgICAgICAgICAgICAnbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSAnCisgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICdmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAnb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ211c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhICcKKyAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgJypvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudHMpLiAgSW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICciTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiAnCisgICAgICAgICAgICAgICAgICdvZiB0aGUgb3duZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnImluc3BlY3QiIG1vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnKHNldHRpbmcgdGhpc1xuJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICdkeW5hbWljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdnaXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgZm9yXG4nCisgICAgICAgICAgICAgICAgICd1bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW52b2tpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggJworICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiAnCisgICAgICAgICAgICAgICAgICdieSBtZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgJ2lzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgJworICAgICAgICAgICAgICAgICAnb3IgZGVsZXRlXG4nCisgICAgICAgICAgICAgICAgICJ0aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0J3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiCisgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAnbG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICcidHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYW5kXG4nCisgICAgICAgICAgICAgICAgICdob3cgdGhleSB3ZXJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAnCisgICAgICAgICAgICAgICAgICciYS54Ii4gSG93XG4nCisgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpcmVjdCBDYWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgJworICAgICAgICAgICAgICAgICAnaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjYWxsOlxuJworICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTdXBlciBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICcic3VwZXIoQixcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICcgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3Igd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbiBkZXBlbmRzXG4nCisgICAgICAgICAgICAgICAgICdvbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgJ2FueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbicKKyAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICd3aWxsIHJldHVyblxuJworICAgICAgICAgICAgICAgICAndGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiAnCisgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX3NldF9fKCkiIGFuZC9vclxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJ25laXRoZXIsIGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICdhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgJworICAgICAgICAgICAgICAgICAnYm90aFxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyAnCisgICAgICAgICAgICAgICAgICdoYXZlIGp1c3QgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgJ2NvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAnImNsYXNzbWV0aG9kKCkiKSBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyBjYW5cbicKKyAgICAgICAgICAgICAgICAgJ3JlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2FjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSAnCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAncHJvcGVydHkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAnbnVtYmVycyBvZiBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAndG8gaG9sZCBhXG4nCisgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKiBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCAnCisgICAgICAgICAgICAgICAgICdvciBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciAnCisgICAgICAgICAgICAgICAgICdlYWNoXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICcgIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICAgICAnQXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIuIElmXG4nCisgICAgICAgICAgICAgICAgICcgIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAndmFyaWFibGUgbmFtZS4gIEFzXG4nCisgICAgICAgICAgICAgICAgICcgIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdhICpfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICdjb250YWluIG5hbWVzXG4nCisgICAgICAgICAgICAgICAgICcgIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICdpbmFjY2Vzc2libGVcbicKKyAgICAgICAgICAgICAgICAgJyAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAnICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gJworICAgICAgICAgICAgICAgICAndGhlIGZ1dHVyZSwgYVxuJworICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCAnCisgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgJworICAgICAgICAgICAgICAgICAnYW5kICJ0dXBsZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiAnCisgICAgICAgICAgICAgICAgICdNYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgJ21lYW5pbmcgbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgJworICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICAgICdsb2NhbGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAncmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgJworICAgICAgICAgICAgICAgICAnb3IgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2luaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQuIEluXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnb2YgIk1ldGEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzICcKKyAgICAgICAgICAgICAgICAgJ29jY3VyOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gJworICAgICAgICAgICAgICAgICAnInR5cGUoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcywgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpICcKKyAgICAgICAgICAgICAgICAgJ29mIGFsbFxuJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJ3N1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgJworICAgICAgICAgICAgICAgICAnIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsXG4nCisgICAgICAgICAgICAgICAgICdpdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCAnCisgICAgICAgICAgICAgICAgICdiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJyoqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCAnCisgICAgICAgICAgICAgICAgICdjb21lIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBkZWZpbml0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgImRpY3QoKSIgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgJworICAgICAgICAgICAgICAgICAnZ2xvYmFscygpLFxuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gJworICAgICAgICAgICAgICAgICAnImV4ZWMoKSIgaXMgdGhhdFxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzKSB0b1xuJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAncGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYWNjZXNzZWQgYXQgYWxsXG4nCisgICAgICAgICAgICAgICAgICdmcm9tIHN0YXRpYyBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICcibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgJworICAgICAgICAgICAgICAgICAnYXJlIHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICdhcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgJworICAgICAgICAgICAgICAgICAndGhlIHplcm8tXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgJworICAgICAgICAgICAgICAgICAnY2xvc3VyZVxuJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSByZWZlclxuJworICAgICAgICAgICAgICAgICAndG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm1cbicKKyAgICAgICAgICAgICAgICAgJ29mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnYmFzZWQgb25cbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgJworICAgICAgICAgICAgICAgICAndG8gbWFrZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgJworICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdGluZ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzIGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSAnCisgICAgICAgICAgICAgICAgICdpZGVhcyB0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgJ2JlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY1xuJworICAgICAgICAgICAgICAgICAnZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCAnCisgICAgICAgICAgICAgICAgICdmcmFtZXdvcmtzLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuJworICAgICAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyAnCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXNcbicKKyAgICAgICAgICAgICAgICAgJ2FyZSBkZWZpbmVkOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgQGNsYXNzbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCAnCisgICAgICAgICAgICAgICAgICdkaWN0KG5hbWVzcGFjZSkpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gQS5tZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICIgICAoJ19fbW9kdWxlX18nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJylcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICdwcm9jZXNzIGJlZ2luc1xuJworICAgICAgICAgICAgICAgICAnd2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zIGFuXG4nCisgICAgICAgICAgICAgICAgICdlbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcmRlcmVkIGRpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJ2lzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgJworICAgICAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICAgICAnaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcmRlcmVkXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3Igb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyAnCisgICAgICAgICAgICAgICAgICd0aGVzZSBtZXRob2RzIGluXG4nCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzICcKKyAgICAgICAgICAgICAgICAgJyhBQkNzKSBhc1xuJworICAgICAgICAgICAgICAgICAnInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICd0eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhICcKKyAgICAgICAgICAgICAgICAgJyhkaXJlY3Qgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAnCisgICAgICAgICAgICAgICAgICcoZGlyZWN0IG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyhtZXRhY2xhc3MpIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdhY3R1YWwgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJ29uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSAnCisgICAgICAgICAgICAgICAgICdDbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICcKKyAgICAgICAgICAgICAgICAgJyJpc2luc3RhbmNlKCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb25hbGl0eSBpblxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJhYmMiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAndGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lciBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSAnCisgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICd3ZWxsLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICdmaXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnb3IgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2VtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSAnCisgICAgICAgICAgICAgICAgICdrIDwgTiIgd2hlcmVcbicKKyAgICAgICAgICAgICAgICAgJypOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggJworICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJjbGVhcigpIixcbicKKyAgICAgICAgICAgICAgICAgJyJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICJiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZCBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IGJhc2VcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX3NldGl0ZW1fXygpIiwgIl9fZGVsaXRlbV9fKCkiLCBhbmQgImtleXMoKSIuIE11dGFibGUgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICciZXh0ZW5kKCkiLFxuJworICAgICAgICAgICAgICAgICAnImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCAnCisgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgJyhtZWFuaW5nXG4nCisgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnIl9faWFkZF9fKCkiLCAiX19tdWxfXygpIiwgIl9fcm11bF9fKCkiIGFuZCAiX19pbXVsX18oKSIgJworICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgJworICAgICAgICAgICAgICAgICAnSXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJfX2NvbnRhaW5zX18oKSIgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlICJpbiIgJworICAgICAgICAgICAgICAgICAnb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzLCBpdFxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyICcKKyAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgJworICAgICAgICAgICAgICAgICAndG8gYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAndGhyb3VnaCB0aGUgdmFsdWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyICI+PSIgMC4gIEFsc28sIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICciX19sZW5fXygpIiBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmxlbmd0aF9oaW50KCkiLiBTaG91bGQgJworICAgICAgICAgICAgICAgICAncmV0dXJuIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciAnCisgICAgICAgICAgICAgICAgICdvciBsZXNzIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAnCisgICAgICAgICAgICAgICAgICcwLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVsxOjJdID0gYlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2UgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy4gIE5vdGUgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLiBJZlxuJworICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkOyBpZiBvZlxuJworICAgICAgICAgICAgICAgICAnICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgJworICAgICAgICAgICAgICAgICAnIkluZGV4RXJyb3IiIHNob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAnInNlbGZba2V5XSIgZm9yIGRpY3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICdub3RlIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciAnCisgICAgICAgICAgICAgICAgICdpZiBuZXcga2V5c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICdyZXBsYWNlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzICcKKyAgICAgICAgICAgICAgICAgJ2lmIGVsZW1lbnRzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgJworICAgICAgICAgICAgICAgICAnYSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2NhbiBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICdpdCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7ICcKKyAgICAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gJworICAgICAgICAgICAgICAgICAncmV2ZXJzZSBvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgJygiX19sZW5fXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgcHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlZCBieVxuJworICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoImluIiBhbmQgIm5vdCBpbiIpIGFyZSAnCisgICAgICAgICAgICAgICAgICdub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lclxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgJ21vcmUgZWZmaWNpZW50XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgJworICAgICAgICAgICAgICAgICAnYSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgJworICAgICAgICAgICAgICAgICAncmV0dXJuIHRydWVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUga2V5LWl0ZW0gcGFpcnMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAnbWVtYmVyc2hpcCB0ZXN0XG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhICJfX2l0ZXJfXygpIiwgdGhlbiB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlICp0aGlzICcKKyAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSwgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgdG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggJworICAgICAgICAgICAgICAgICAncmVmbGVjdGVkIChzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmQgZG9lc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZHMgYXJlIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlICIKKyAgICAgICAgICAgICAgICAgJ3JlZmxlY3RlZCBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAnCisgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgJyAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdhdHRlbXB0IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgJyAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiAnCisgICAgICAgICAgICAgICAgICdhIHNwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyAnCisgICAgICAgICAgICAgICAgICdiYWNrIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAnInggPVxuJworICAgICAgICAgICAgICAgICAnICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAnCisgICAgICAgICAgICAgICAgICcieS5fX3JhZGRfXyh4KSIgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgJ2NlcnRhaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gJworICAgICAgICAgICAgICAgICAndW5leHBlY3RlZCBlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgIiAgIChzZWUgKldoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gIgorICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhZGRpdGlvbiB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVnX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hYnNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgJygiLSIsICIrIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb2F0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJpbnQoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luZGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICdQeXRob24gbmVlZHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICcib2N0KCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQsIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgJworICAgICAgICAgICAgICAgICAnY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAnYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgJworICAgICAgICAgICAgICAgICAnY29udGV4dCBtYW5hZ2VyXG4nCisgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0XG4nCisgICAgICAgICAgICAgICAgICdmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgJworICAgICAgICAgICAgICAgICAnYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICcqVGhlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyAnCisgICAgICAgICAgICAgICAgICd0aGVpciBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgJworICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAnY2xvc2luZyBvcGVuZWRcbicKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICdNYW5hZ2VyIFR5cGVzKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgJ3RhcmdldChzKVxuJworICAgICAgICAgICAgICAgICAnICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAncGFyYW1ldGVyc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICdleGl0ZWQuIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgJworICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAnc3VwcHJlc3MgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICdwcm9jZXNzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgIiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBhcmUgb25seVxuJworICAgICAgICAgICAgICAgICAiZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdCdzICIKKyAgICAgICAgICAgICAgICAgJ3R5cGUsIG5vdCBpblxuJworICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgIgorICAgICAgICAgICAgICAgICAncmVhc29uIHdoeVxuJworICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlICdDJyBoYXMgbm8gbGVuKClcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBieVxuJworICAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCAnCisgICAgICAgICAgICAgICAgICdsb29rdXAgb2YgdGhlc2VcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ZhaWwgd2hlblxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgJ19faGFzaF9fJyBvZiAnaW50JyBvYmplY3QgbmVlZHMgIgorICAgICAgICAgICAgICAgICAnYW4gYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICJ3YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICdtZXRhY2xhc3MgY29uZnVzaW9uJywgYW5kICIKKyAgICAgICAgICAgICAgICAgJ2lzIGF2b2lkZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAnbWV0aG9kczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICdjb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvICcKKyAgICAgICAgICAgICAgICAgJ2J5cGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAgICAgICAnICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyAnCisgICAgICAgICAgICAgICAgICdmYXNoaW9uIHByb3ZpZGVzXG4nCisgICAgICAgICAgICAgICAgICdzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyLCBhdFxuJworICAgICAgICAgICAgICAgICAndGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5nIE1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgJworICAgICAgICAgICAgICAgICAgICdvbmUgcHJvdmlkaW5nIGFcbicKKyAgICAgICAgICAgICAgICAgICAnbGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgJworICAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyIGJhc2VkIG9uXG4nCisgICAgICAgICAgICAgICAgICAgJ0MgInByaW50ZiIgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciAnCisgICAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIHR5cGVzIGFuZFxuJworICAgICAgICAgICAgICAgICAgICdpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgY2FzZXNcbicKKyAgICAgICAgICAgICAgICAgICAnaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlICpUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMqIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICAgICAnbGlicmFyeSBjb3ZlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0ICcKKyAgICAgICAgICAgICAgICAgICAncmVsYXRlZCB1dGlsaXRpZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiAnCisgICAgICAgICAgICAgICAgICAgJ21vZHVsZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FwaXRhbGl6ZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2FwaXRhbGl6ZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FzZWZvbGQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgJworICAgICAgICAgICAgICAgICAgICdhZ2dyZXNzaXZlIGJlY2F1c2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ8OfXCciIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gJworICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvICJcJ8OfXCciO1xuJworICAgICAgICAgICAgICAgICAgICcgICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiAnCisgICAgICAgICAgICAgICAgICAgJ1BhZGRpbmcgaXMgZG9uZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgJworICAgICAgICAgICAgICAgICAgICdzcGFjZSkuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gJworICAgICAgICAgICAgICAgICAgICdvciBlcXVhbCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnKnN0YXJ0KiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC4gRGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICcgICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCAnCisgICAgICAgICAgICAgICAgICAgJ2EgZGlmZmVyZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnIlwnc3RyaWN0XCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAnT3RoZXIgcG9zc2libGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICcKKyAgICAgICAgICAgICAgICAgICAnIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgJworICAgICAgICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gKkVycm9yICcKKyAgICAgICAgICAgICAgICAgICAnSGFuZGxlcnMqLiBGb3IgYSBsaXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICAgICAnRW5jb2RpbmdzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAnCisgICAgICAgICAgICAgICAgICAgJypzdWZmaXgqLFxuJworICAgICAgICAgICAgICAgICAgICcgICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhICcKKyAgICAgICAgICAgICAgICAgICAndHVwbGUgb2Ygc3VmZml4ZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nICcKKyAgICAgICAgICAgICAgICAgICAnYXQgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAndGhhdCBwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVwbGFjZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICAgICAgICdjb2x1bW4gYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsICcKKyAgICAgICAgICAgICAgICAgICAnMTYgYW5kIHNvIG9uKS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gJworICAgICAgICAgICAgICAgICAgICd6ZXJvIGFuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgJworICAgICAgICAgICAgICAgICAgICdpbnNlcnRlZCBpbiB0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi4gKFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciBpcyBhIG5ld2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICdjdXJyZW50IGNvbHVtbiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgJworICAgICAgICAgICAgICAgICAgICd1bmNoYW5nZWQgYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSAnCisgICAgICAgICAgICAgICAgICAgJyJzW3N0YXJ0OmVuZF0iLlxuJworICAgICAgICAgICAgICAgICAgICcgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkICcKKyAgICAgICAgICAgICAgICAgICAnYXMgaW4gc2xpY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91ICcKKyAgICAgICAgICAgICAgICAgICAnbmVlZCB0byBrbm93XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBvciBub3QsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgICA+Pj4gJ1B5JyBpbiAnUHl0aG9uJ1xuIgorICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gJworICAgICAgICAgICAgICAgICAgICd3aGljaCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yICcKKyAgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgZmllbGRzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgJworICAgICAgICAgICAgICAgICAgICdjb250YWlucyBlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgJworICAgICAgICAgICAgICAgICAgICduYW1lIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgJworICAgICAgICAgICAgICAgICAgICdlYWNoXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbicKKyAgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBzdW0gb2YgMSArIDIgaXMgMydcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdF9tYXAobWFwcGluZylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnIm1hcHBpbmciIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCAnCisgICAgICAgICAgICAgICAgICAgJ2lmIGZvciBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7bmFtZX0gd2FzIGJvcm4gaW4gIgorICAgICAgICAgICAgICAgICAgICJ7Y291bnRyeX0nLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPSdHdWlkbycpKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbG51bSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciAiYyJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciVHJ1ZSI6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgJworICAgICAgICAgICAgICAgICAgICciYy5pc251bWVyaWMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbHBoYSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhYmV0aWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCAnCisgICAgICAgICAgICAgICAgICAgJ2NhdGVnb3J5IHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhpcyBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gJworICAgICAgICAgICAgICAgICAgICd0aGUgVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RlY2ltYWwoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICAgICAgICdkZWNpbWFsIGNoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdEZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgJworICAgICAgICAgICAgICAgICAgICdjYW4gYmUgdXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyAnCisgICAgICAgICAgICAgICAgICAgJ0RJR0lUIFpFUk8uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNkaWdpdCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlcmUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnaW5jbHVkZSBkZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgJworICAgICAgICAgICAgICAgICAgICdzdWNoIGFzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2lkZW50aWZpZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICAgICdhY2NvcmRpbmcgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ2tleXdvcmRzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgJworICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVycyBzdWNoIGFzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJkZWYiIGFuZCAiY2xhc3MiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbG93ZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdhcmUgbG93ZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc251bWVyaWMoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICAgICAgICdudW1lcmljIGNoYXJhY3RlcnMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICcKKyAgICAgICAgICAgICAgICAgICAnTnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgdGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCAnCisgICAgICAgICAgICAgICAgICAgJ1ZVTEdBUiBGUkFDVElPTlxuJworICAgICAgICAgICAgICAgICAgICcgICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSAnCisgICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgJworICAgICAgICAgICAgICAgICAgICdOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3ByaW50YWJsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ3ByaW50YWJsZSBvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UgYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAnCisgICAgICAgICAgICAgICAgICAgJygweDIwKSB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAnInJlcHIoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2hhbmRsaW5nIG9mIHN0cmluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3NwYWNlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGUgY2hhcmFjdGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggJworICAgICAgICAgICAgICAgICAgICdiaWRpcmVjdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3RpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0aGVyZSBpcyBhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ21heSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnb25seSBjYXNlZCBvbmVzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdhcmUgdXBwZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5qb2luKGl0ZXJhYmxlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgJworICAgICAgICAgICAgICAgICAgICdpZiB0aGVyZSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyAnCisgICAgICAgICAgICAgICAgICAgJyJieXRlcyIgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRpbmcgdGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCAqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqICcKKyAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQgaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubG93ZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgWzRdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluICcKKyAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiAzLjEzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAncmVtb3ZlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSAnCisgICAgICAgICAgICAgICAgICAgJ3ByZWZpeDsgcmF0aGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICBzcGFjaW91cyAgICcubHN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ3NwYWNpb3VzICAgJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScubHN0cmlwKCdjbW93ei4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnZXhhbXBsZS5jb20nXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJzdHIudHJhbnNsYXRlKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSAnCisgICAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgbWFwcGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCAxKSB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgJworICAgICAgICAgICAgICAgICAgICdOb25lLlxuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnZXF1YWwgbGVuZ3RoLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4ICcKKyAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgJworICAgICAgICAgICAgICAgICAgICdpcyBhIHRoaXJkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgJworICAgICAgICAgICAgICAgICAgICdiZSBtYXBwZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCByZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHR3byBlbXB0eSBzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKm9sZCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGdpdmVuLCBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICcKKyAgICAgICAgICAgICAgICAgICAnInNbc3RhcnQ6ZW5kXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgJworICAgICAgICAgICAgICAgICAgICdhcyBpbiBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICcgICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJyZmluZCgpIiBidXQgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgJworICAgICAgICAgICAgICAgICAgICdsZW5ndGggKndpZHRoKi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAnCisgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0IGlzIGFuIEFTQ0lJXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJwYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnKm1heHNwbGl0KiBzcGxpdHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHNwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiICcKKyAgICAgICAgICAgICAgICAgICAnd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAnc3VmZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5yc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnICAgc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnbWlzc2lzc2lwcGknLnJzdHJpcCgnaXB6JylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ21pc3Npc3MnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogJworICAgICAgICAgICAgICAgICAgICdhcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcibWF4c3BsaXQrMSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlbiB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBtYWRlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgJworICAgICAgICAgICAgICAgICAgICdncm91cGVkIHRvZ2V0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yICcKKyAgICAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgJworICAgICAgICAgICAgICAgICAgICdcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAgICAnIltcJ1wnXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJywgbWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIsMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLCwzLCcuc3BsaXQoJywnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICcnLCAnMycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVnYXJkZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gJworICAgICAgICAgICAgICAgICAgICdlbXB0eSBzdHJpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciAnCisgICAgICAgICAgICAgICAgICAgJ3RyYWlsaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdvciBhIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgIltdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQobWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIgMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgMSAgIDIgICAzICAgJy5zcGxpdCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdyZXN1bHRpbmcgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gICcKKyAgICAgICAgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICcqdW5pdmVyc2FsIG5ld2xpbmVzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSAnCisgICAgICAgICAgICAgICAgICAgJ1JldHVybiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCAnCisgICAgICAgICAgICAgICAgICAgJ0NvZGUpICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3QgJworICAgICAgICAgICAgICAgICAgICdvZiBsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGMnLCAnJywgJ2RlIGZnJywgJ2tsJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgIgorICAgICAgICAgICAgICAgICAgICJmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnYWIgY1xcbicsICdcXG4nLCAnZGUgZmdcXHInLCAna2xcXHJcXG4nXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIGEgdGVybWluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnT25lIGxpbmUnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJycuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdUd28gbGluZXNcXG4nLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ1R3byBsaW5lcycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4KiwgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gJworICAgICAgICAgICAgICAgICAgICdsb29rIGZvci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAnCisgICAgICAgICAgICAgICAgICAgJyJOb25lIiwgdGhlICpjaGFycypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgJworICAgICAgICAgICAgICAgICAgICdpdHMgdmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ3NwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScuc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIG91dGVybW9zdCBsZWFkaW5nIGFuZCB0cmFpbGluZyAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBsZWFkaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuZCB1bnRpbCByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIGluICpjaGFycyouIEEgc2ltaWxhciBhY3Rpb24gdGFrZXMgJworICAgICAgICAgICAgICAgICAgICdwbGFjZSBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZyA9ICcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICIKKyAgICAgICAgICAgICAgICAgICAiIzMyIC4uLi4uLi4nXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcCgnLiMhICcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdTZWN0aW9uIDMuMi4xIElzc3VlICMzMidcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zd2FwY2FzZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICduZWNlc3NhcmlseSB0cnVlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzICcKKyAgICAgICAgICAgICAgICAgICAnc3RhcnQgd2l0aCBhblxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ0hlbGxvIHdvcmxkJy50aXRsZSgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdIZWxsbyBXb3JsZCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiB3b3JrcyBpblxuJworICAgICAgICAgICAgICAgICAgICcgICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluICcKKyAgICAgICAgICAgICAgICAgICAnY29udHJhY3Rpb25zIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBkZXNpcmVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVUsiLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nICcKKyAgICAgICAgICAgICAgICAgICAncmVndWxhclxuJworICAgICAgICAgICAgICAgICAgICcgICBleHByZXNzaW9uczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBpbXBvcnQgcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogJworICAgICAgICAgICAgICAgICAgICdtby5ncm91cCgwKVswXS51cHBlcigpICtcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICdtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudHJhbnNsYXRlKHRhYmxlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGluIHdoaWNoIGVhY2ggY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gbWFwcGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiAgVGhlIHRhYmxlIG11c3QgJworICAgICAgICAgICAgICAgICAgICdiZSBhbiBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBpbXBsZW1lbnRzIGluZGV4aW5nIHZpYSAiX19nZXRpdGVtX18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAndHlwaWNhbGx5IGEgKm1hcHBpbmcqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yICpzZXF1ZW5jZSouICBXaGVuIGluZGV4ZWQgYnkgYSBVbmljb2RlIG9yZGluYWwgKGFuICcKKyAgICAgICAgICAgICAgICAgICAnaW50ZWdlciksIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWJsZSBvYmplY3QgY2FuIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nOiByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGUgb3JkaW5hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBvciBhIHN0cmluZywgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gb25lIG9yIG1vcmUgJworICAgICAgICAgICAgICAgICAgICdvdGhlciBjaGFyYWN0ZXJzO1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gIk5vbmUiLCB0byBkZWxldGUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBzdHJpbmc7IG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlIGEgIkxvb2t1cEVycm9yIiBleGNlcHRpb24sIHRvIG1hcCB0aGUgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAndG8gaXRzZWxmLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgWW91IGNhbiB1c2UgInN0ci5tYWtldHJhbnMoKSIgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gJworICAgICAgICAgICAgICAgICAgICdtYXAgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTZWUgYWxzbyB0aGUgImNvZGVjcyIgbW9kdWxlIGZvciBhIG1vcmUgZmxleGlibGUgJworICAgICAgICAgICAgICAgICAgICdhcHByb2FjaCB0byBjdXN0b21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnVwcGVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgJworICAgICAgICAgICAgICAgICAgICcoTGV0dGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluICcKKyAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiAzLjEzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnpmaWxsKHdpZHRoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgJworICAgICAgICAgICAgICAgICAgICciXCcwXCciIGRpZ2l0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBtYWtlIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBBIGxlYWRpbmcgc2lnbiAnCisgICAgICAgICAgICAgICAgICAgJ3ByZWZpeFxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgJyphZnRlciogdGhlIHNpZ25cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnMDAwNDInXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnLTAwNDInXG4iLAorICdzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgJworICAgICAgICAgICAgJ2xvbmdzdHJpbmcpXG4nCisgICAgICAgICAgICAnICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0c3RyaW5naXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8ICcKKyAgICAgICAgICAgICdcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgJworICAgICAgICAgICAgJ25ld2xpbmUgb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAnCisgICAgICAgICAgICAnInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8ICcKKyAgICAgICAgICAgICdcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgJworICAgICAgICAgICAgJ25ld2xpbmUgb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgJworICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICd3aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICcKKyAgICAgICAgICAgICciYnl0ZXNwcmVmaXgiXG4nCisgICAgICAgICAgICAnYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXQgaXMgJworICAgICAgICAgICAgJ2RlZmluZWQgYnlcbicKKyAgICAgICAgICAgICd0aGUgZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIFVURi04IGlmIG5vIGVuY29kaW5nICcKKyAgICAgICAgICAgICdkZWNsYXJhdGlvbiBpc1xuJworICAgICAgICAgICAgJ2dpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnSW4gcGxhaW4gRW5nbGlzaDogQm90aCB0eXBlcyBvZiBsaXRlcmFscyBjYW4gYmUgZW5jbG9zZWQgaW4gJworICAgICAgICAgICAgJ21hdGNoaW5nXG4nCisgICAgICAgICAgICAnc2luZ2xlIHF1b3RlcyAoIlwnIikgb3IgZG91YmxlIHF1b3RlcyAoIiIiKS4gIFRoZXkgY2FuIGFsc28gYmUgJworICAgICAgICAgICAgJ2VuY2xvc2VkXG4nCisgICAgICAgICAgICAnaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbicKKyAgICAgICAgICAgICdnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlICcKKyAgICAgICAgICAgICdiYWNrc2xhc2hcbicKKyAgICAgICAgICAgICcoIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgJworICAgICAgICAgICAgJ2hhdmUgYVxuJworICAgICAgICAgICAgJ3NwZWNpYWwgbWVhbmluZywgc3VjaCBhcyBuZXdsaW5lLCBiYWNrc2xhc2ggaXRzZWxmLCBvciB0aGUgJworICAgICAgICAgICAgJ3F1b3RlXG4nCisgICAgICAgICAgICAnY2hhcmFjdGVyLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0J5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7ICcKKyAgICAgICAgICAgICd0aGV5IHByb2R1Y2VcbicKKyAgICAgICAgICAgICdhbiBpbnN0YW5jZSBvZiB0aGUgImJ5dGVzIiB0eXBlIGluc3RlYWQgb2YgdGhlICJzdHIiIHR5cGUuICAnCisgICAgICAgICAgICAnVGhleSBtYXlcbicKKyAgICAgICAgICAgICdvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgJworICAgICAgICAgICAgJzEyOCBvclxuJworICAgICAgICAgICAgJ2dyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHN0cmluZyBsaXRlcmFscyAnCisgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAnInUiIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54ICcKKyAgICAgICAgICAgICdjb2RlYmFzZXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICdsZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3ICcKKyAgICAgICAgICAgICdzdHJpbmdzKiBhbmQgdHJlYXRcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nICcKKyAgICAgICAgICAgICdsaXRlcmFscyxcbicKKyAgICAgICAgICAgICciXCdcXFVcJyIgYW5kICJcJ1xcdVwnIiBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCAnCisgICAgICAgICAgICAnc3BlY2lhbGx5LlxuJworICAgICAgICAgICAgIkdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSAiCisgICAgICAgICAgICAndGhhblxuJworICAgICAgICAgICAgJ1B5dGhvbiAzLnhcJ3MgdGhlICJcJ3VyXCciIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgJworICAgICAgICAgICAgJ2hhcyBiZWVuXG4nCisgICAgICAgICAgICAnYWRkZWQgYXMgYSBzeW5vbnltIG9mICJcJ2JyXCciLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWxcbicKKyAgICAgICAgICAgICcoInVcJ3ZhbHVlXCciKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiAnCisgICAgICAgICAgICAnZHVhbFxuJworICAgICAgICAgICAgJ1B5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSAnCisgICAgICAgICAgICAnaW5mb3JtYXRpb24uXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlICcKKyAgICAgICAgICAgICdhbGxvd2VkXG4nCisgICAgICAgICAgICAnKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgJworICAgICAgICAgICAgJ3Jvd1xuJworICAgICAgICAgICAgJ3Rlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvICcKKyAgICAgICAgICAgICdvcGVuIHRoZVxuJworICAgICAgICAgICAgJ2xpdGVyYWwsIGkuZS4gZWl0aGVyICJcJyIgb3IgIiIiLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdVbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgJworICAgICAgICAgICAgJ3NlcXVlbmNlcyBpbiBzdHJpbmdcbicKKyAgICAgICAgICAgICdhbmQgYnl0ZXMgbGl0ZXJhbHMgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyICcKKyAgICAgICAgICAgICd0byB0aG9zZVxuJworICAgICAgICAgICAgJ3VzZWQgYnkgU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgJ05vdGVzICAgfFxuJworICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbicKKyAgICAgICAgICAgICd8ICJcXG5ld2xpbmUiICAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxcXCIgICAgICAgICAgICAgIHwgQmFja3NsYXNoICgiXFwiKSAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxcJyIgICAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlICgiXCciKSAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFwiIiAgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKCIiIikgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcYSIgICAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGIiICAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxmIiAgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcbiIgICAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHIiICAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx0IiAgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdiIgICAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXG9vbyIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICcKKyAgICAgICAgICAgICcoMSwzKSAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx4aGgiICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAnCisgICAgICAgICAgICAnKDIsMykgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0VzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAnTm90ZXMgICB8XG4nCisgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xuJworICAgICAgICAgICAgJ3wgIlxcTntuYW1lfSIgICAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgJworICAgICAgICAgICAgJyg0KSAgICAgfFxuJworICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdXh4eHgiICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgJworICAgICAgICAgICAgJyg1KSAgICAgfFxuJworICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgJworICAgICAgICAgICAgJyg2KSAgICAgfFxuJworICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICcgICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSAnCisgICAgICAgICAgICAnZXNjYXBlc1xuJworICAgICAgICAgICAgJyAgIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzICcKKyAgICAgICAgICAgICdiZWVuXG4nCisgICAgICAgICAgICAnICAgYWRkZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciAnCisgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAnICAgYmUgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggJworICAgICAgICAgICAgJ2RpZ2l0cyBhcmVcbicKKyAgICAgICAgICAgICcgICByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc2LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5ICcKKyAgICAgICAgICAgICdlaWdodFxuJworICAgICAgICAgICAgJyAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgJworICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgJ3N0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCouICAnCisgICAgICAgICAgICAnKFRoaXNcbicKKyAgICAgICAgICAgICdiZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyAnCisgICAgICAgICAgICAnbWlzdHlwZWQsXG4nCisgICAgICAgICAgICAndGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgJworICAgICAgICAgICAgJ2lzIGFsc29cbicKKyAgICAgICAgICAgICdpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiAnCisgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgJworICAgICAgICAgICAgJ2J5dGVzXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgJworICAgICAgICAgICAgJ2J1dCB0aGVcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSAnCisgICAgICAgICAgICAndmFsaWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSAnCisgICAgICAgICAgICAnZG91YmxlXG4nCisgICAgICAgICAgICAncXVvdGU7ICJyIlxcIiIgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nICcKKyAgICAgICAgICAgICdjYW5ub3RcbicKKyAgICAgICAgICAgICdlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyAnCisgICAgICAgICAgICAnbGl0ZXJhbFxuJworICAgICAgICAgICAgJ2Nhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCAnCisgICAgICAgICAgICAnZXNjYXBlXG4nCisgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyAnCisgICAgICAgICAgICAncGFydFxuJworICAgICAgICAgICAgJ29mIHRoZSBsaXRlcmFsLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3Vic2NyaXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdTdWJzY3JpcHRpb25zXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Egc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICd0dXBsZSBvciBsaXN0KVxuJworICAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzICcKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAgICAgICcobGlzdHMgb3IgZGljdGlvbmFyaWVzIGZvciBleGFtcGxlKS4gIFVzZXItZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0byBhblxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRzIHRvIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICdrZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgJworICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lXG4nCisgICAgICAgICAgICAgICAgICAnaXRlbS4pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdpbmRpY2VzIGluXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSAnCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xlbmd0aCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIG9mICJ4IikuXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzICcKKyAgICAgICAgICAgICAgICAgICd0aGFuIHRoZSBudW1iZXJcbicKKyAgICAgICAgICAgICAgICAgICdvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgJworICAgICAgICAgICAgICAgICAgJ3RoZSBpdGVtIHdob3NlXG4nCisgICAgICAgICAgICAgICAgICAnaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlICcKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0IGZvclxuJworICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3QncyAiCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGFkZFxuJworICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBIHN0cmluZydzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgIgorICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAorICd0cnV0aCc6ICdcbicKKyAgICAgICAgICAnVHJ1dGggVmFsdWUgVGVzdGluZ1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbicKKyAgICAgICAgICAnIndoaWxlIiBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdmb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiAiTm9uZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIkZhbHNlIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCAiXCdcJyIsICIoKSIsICJbXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgInt9Ii5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4nCisgICAgICAgICAgJyAgIl9fYm9vbF9fKCkiIG9yICJfX2xlbl9fKCkiIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FsbCBvdGhlciB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgdHJ1ZSAtLS0gc28gb2JqZWN0cyBvZiBtYW55IHR5cGVzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ2Fsd2F5cyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0ICcKKyAgICAgICAgICAnYWx3YXlzXG4nCisgICAgICAgICAgJ3JldHVybiAiMCIgb3IgIkZhbHNlIiBmb3IgZmFsc2UgYW5kICIxIiBvciAiVHJ1ZSIgZm9yIHRydWUsICcKKyAgICAgICAgICAndW5sZXNzXG4nCisgICAgICAgICAgJ290aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zICcKKyAgICAgICAgICAnIm9yIlxuJworICAgICAgICAgICdhbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKKyAndHJ5JzogJ1xuJworICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgJworICAgICAgICAnY29kZVxuJworICAgICAgICAnZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgJyAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgJ3N1aXRlKStcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuICcKKyAgICAgICAgJ25vXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICdjbGF1c2VzXG4nCisgICAgICAgICdpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuICcKKyAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICdsZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbicKKyAgICAgICAgJ2V4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCAnCisgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICdpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgJworICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyAnCisgICAgICAgICdjb21wYXRpYmxlXG4nCisgICAgICAgICd3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ29iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlICcKKyAgICAgICAgJ2V4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgJ3N0YWNrLlxuJworICAgICAgICAnWzFdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgJworICAgICAgICAnY2xhdXNlXG4nCisgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgJworICAgICAgICAnYW5kXG4nCisgICAgICAgICdhIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCAnCisgICAgICAgICdvblxuJworICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgJworICAgICAgICAndG9cbicKKyAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCAnCisgICAgICAgICdpZlxuJworICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICdjbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAnKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSAnCisgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICdhbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyAnCisgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICdhdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIGZvb1xuJworICAgICAgICAnXG4nCisgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZm9vXG4nCisgICAgICAgICcgICAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byAnCisgICAgICAgICdiZVxuJworICAgICAgICAnYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlICcKKyAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuJworICAgICAgICAnY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG4nCisgICAgICAgICd1bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAnZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuJworICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgJworICAgICAgICAnKHNlZVxuJworICAgICAgICAnc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAncHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG4nCisgICAgICAgICdyZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbicKKyAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzICcKKyAgICAgICAgJ29mZlxuJworICAgICAgICAndGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSAnCisgICAgICAgICdhcmVcbicKKyAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgJworICAgICAgICAnInRyeSJcbicKKyAgICAgICAgJ2NsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiAnCisgICAgICAgICdhblxuJworICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICAnCisgICAgICAgICdJZlxuJworICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAnY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgJworICAgICAgICAnc2F2ZWRcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgJworICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICdpcyBkaXNjYXJkZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZigpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZigpXG4nCisgICAgICAgICcgICA0MlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG4nCisgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSAnCisgICAgICAgICdpc1xuJworICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCAnCisgICAgICAgICdpblxuJworICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG4nCisgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuJworICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4nCisgICAgICAgICcicmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICd0cnknXG4iCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICdcbicKKyAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAnKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG4nCisgICAgICAgICdnZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCisgJ3R5cGVzJzogJ1xuJworICAgICAgICAgICdUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdCZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgJworICAgICAgICAgICdFeHRlbnNpb25cbicKKyAgICAgICAgICAnbW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJ1B5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgJworICAgICAgICAgICdudW1iZXJzLFxuJworICAgICAgICAgICdlZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCAnCisgICAgICAgICAgJ2FkZGl0aW9uc1xuJworICAgICAgICAgICd3aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG4nCisgICAgICAgICAgIidzcGVjaWFsIGF0dHJpYnV0ZXMuJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyAiCisgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciAnCisgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAnbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm9uZVxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICcKKyAgICAgICAgICAnIk5vbmUiLiBJdFxuJworICAgICAgICAgICcgICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsICcKKyAgICAgICAgICAnZS5nLixcbicKKyAgICAgICAgICAiICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVyblxuIgorICAgICAgICAgICcgICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm90SW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuJworICAgICAgICAgICcgICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlICcKKyAgICAgICAgICAnb3BlcmF0aW9uIGZvclxuJworICAgICAgICAgICcgICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4nCisgICAgICAgICAgJyAgIHJlZmxlY3RlZCBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZWUgKkltcGxlbWVudGluZyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zKiBmb3IgbW9yZSAnCisgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdFbGxpcHNpc1xuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsICIuLi4iIG9yICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnIm51bWJlcnMuTnVtYmVyIlxuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgJworICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyICcKKyAgICAgICAgICAnY2hhbmdlcy5cbicKKyAgICAgICAgICAnICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuJworICAgICAgICAgICcgICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsICcKKyAgICAgICAgICAncmVwcmVzZW50YXRpb25cbicKKyAgICAgICAgICAnICAgaW4gY29tcHV0ZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgY29tcGxleCBudW1iZXJzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuSW50ZWdyYWwiXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mICcKKyAgICAgICAgICAnaW50ZWdlcnNcbicKKyAgICAgICAgICAnICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSW50ZWdlcnMgKCJpbnQiKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0ICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiAnCisgICAgICAgICAgJ3NoaWZ0XG4nCisgICAgICAgICAgJyAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgIiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyJ3NcbiIKKyAgICAgICAgICAnICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgJworICAgICAgICAgICdzdHJpbmcgb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlICcKKyAgICAgICAgICAndHdvXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAnCisgICAgICAgICAgJzAgYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgICAgICIiVHJ1ZSIiIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayAnCisgICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgJworICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICcgICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4nCisgICAgICAgICAgJyAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSAnCisgICAgICAgICAgJ2FjY2VwdGVkXG4nCisgICAgICAgICAgJyAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgJworICAgICAgICAgICdzaW5nbGUtXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvICcKKyAgICAgICAgICAndGhlcmUgaXNcbicKKyAgICAgICAgICAnICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mICcKKyAgICAgICAgICAnZmxvYXRpbmdcbicKKyAgICAgICAgICAnICAgICAgcG9pbnQgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLkNvbXBsZXgiICgiY29tcGxleCIpXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbicKKyAgICAgICAgICAnICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyAnCisgICAgICAgICAgJ2FwcGx5XG4nCisgICAgICAgICAgJyAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzICcKKyAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICcgICAgICBjb21wbGV4IG51bWJlciAieiIgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyAiei5yZWFsIiBhbmQgInouaW1hZyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbicKKyAgICAgICAgICAnICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAnICAgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGUgaW5kZXggJworICAgICAgICAgICdzZXRcbicKKyAgICAgICAgICAnICAgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mIHNlcXVlbmNlICcKKyAgICAgICAgICAnKmEqIGlzXG4nCisgICAgICAgICAgJyAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogImFbaTpqXSIgc2VsZWN0cyBhbGwgaXRlbXMgJworICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgJyAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbicKKyAgICAgICAgICAnICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzICcKKyAgICAgICAgICAnaW1wbGllc1xuJworICAgICAgICAgICcgICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgJworICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAnICAgcGFyYW1ldGVyOiAiYVtpOmo6a10iIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KiAnCisgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgJyAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBJbW11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgJworICAgICAgICAgICdpdCBpc1xuJworICAgICAgICAgICcgICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciAnCisgICAgICAgICAgJ29iamVjdHMsXG4nCisgICAgICAgICAgJyAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyAnCisgICAgICAgICAgJ2hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3RyaW5nc1xuJworICAgICAgICAgICcgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlICcKKyAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICcgICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSAnCisgICAgICAgICAgJ1UrMTBGRkZGIlxuJworICAgICAgICAgICIgICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgIgorICAgICAgICAgICciY2hhciJcbicKKyAgICAgICAgICAnICAgICAgICAgdHlwZTsgaW5zdGVhZCwgZXZlcnkgY29kZSBwb2ludCBpbiB0aGUgc3RyaW5nIGlzICcKKyAgICAgICAgICAncmVwcmVzZW50ZWRcbicKKyAgICAgICAgICAnICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvICcKKyAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgJ2xlbmd0aFxuJworICAgICAgICAgICcgICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUdXBsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gJworICAgICAgICAgICdUdXBsZXMgb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgJ3NpbmdsZXRvbicpIGNhbiAiCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuICcKKyAgICAgICAgICAnZXhwcmVzc2lvbiBieVxuJworICAgICAgICAgICcgICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSAnCisgICAgICAgICAgJzgtYml0XG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgJworICAgICAgICAgICcyNTYuXG4nCisgICAgICAgICAgJyAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlICJiXCdhYmNcJyIpIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICcgICAgICAgICAiYnl0ZXMoKSIgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICAnCisgICAgICAgICAgJ0Fsc28sXG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICcKKyAgICAgICAgICAnImRlY29kZSgpIlxuJworICAgICAgICAgICcgICAgICAgICBtZXRob2QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBNdXRhYmxlIHNlcXVlbmNlc1xuJworICAgICAgICAgICcgICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgJworICAgICAgICAgICd0YXJnZXQgb2ZcbicKKyAgICAgICAgICAnICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTGlzdHNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyAnCisgICAgICAgICAgJ25lZWRlZFxuJworICAgICAgICAgICcgICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZSBBcnJheXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSAnCisgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlICcKKyAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NldCB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuJworICAgICAgICAgICcgICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuICcKKyAgICAgICAgICAnSG93ZXZlcixcbicKKyAgICAgICAgICAnICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4nCisgICAgICAgICAgJyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlICcKKyAgICAgICAgICAnZmFzdFxuJworICAgICAgICAgICcgICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbicKKyAgICAgICAgICAnICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCAnCisgICAgICAgICAgJ3VuaW9uLFxuJworICAgICAgICAgICcgICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4nCisgICAgICAgICAgJyAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICIxLjAiKSwgb25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29udGFpbmVkIGluIGEgc2V0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgJworICAgICAgICAgICdzZXZlcmFsXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgImFkZCgpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZyb3plbiBzZXRzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCAqaGFzaGFibGUqLCBpdCBjYW4gYmUgdXNlZCBhZ2FpbiBhcyBhbiBlbGVtZW50IG9mICcKKyAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICcgICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdNYXBwaW5nc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSAnCisgICAgICAgICAgJ2luZGV4XG4nCisgICAgICAgICAgJyAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCAnCisgICAgICAgICAgJ2J5ICJrIlxuJworICAgICAgICAgICcgICBmcm9tIHRoZSBtYXBwaW5nICJhIjsgdGhpcyBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucyBhbmQgYXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRGljdGlvbmFyaWVzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgJworICAgICAgICAgICdhc1xuJworICAgICAgICAgICcgICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBvZlxuJworICAgICAgICAgICIgICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXkncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiAiCisgICAgICAgICAgJ2NvbnN0YW50LlxuJworICAgICAgICAgICcgICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciAnCisgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAnICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAnCisgICAgICAgICAgJyIxLjAiKVxuJworICAgICAgICAgICcgICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4nCisgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICcKKyAgICAgICAgICAnInsuLi59IlxuJworICAgICAgICAgICcgICAgICBub3RhdGlvbiAoc2VlIHNlY3Rpb24gKkRpY3Rpb25hcnkgZGlzcGxheXMqKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuJworICAgICAgICAgICcgICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICcKKyAgICAgICAgICAnImNvbGxlY3Rpb25zIlxuJworICAgICAgICAgICcgICAgICBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDYWxsYWJsZSB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gKkNhbGxzKikgY2FuIGJlIGFwcGxpZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAiICAgICAgYXMgdGhlIGZ1bmN0aW9uJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kb2NfXyIgICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICcKKyAgICAgICAgICAnZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgJworICAgICAgICAgICdpZiAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCAnCisgICAgICAgICAgJ2J5ICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAnc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICduYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkICcKKyAgICAgICAgICAnbmFtZSogfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uICcKKyAgICAgICAgICAnMy4zLiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlICcKKyAgICAgICAgICAndGhlICAgICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCAnCisgICAgICAgICAgJ29yICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmICcKKyAgICAgICAgICAndW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyAnCisgICAgICAgICAgJ2RlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciAnCisgICAgICAgICAgJ3Rob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlICcKKyAgICAgICAgICAnZGVmYXVsdHMsICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgJworICAgICAgICAgICdoYXZlICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0ICcKKyAgICAgICAgICAndmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCAnCisgICAgICAgICAgJ3JlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAnYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSAnCisgICAgICAgICAgJ2RpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgJworICAgICAgICAgICJmdW5jdGlvbidzICAgICAgIHwgICAgICAgICAgICAgfFxuIgorICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgJworICAgICAgICAgICdnbG9iYWwgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlICcKKyAgICAgICAgICAnaW4gICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyAnCisgICAgICAgICAgJ2RlZmluZWQuIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2UgJworICAgICAgICAgICdzdXBwb3J0aW5nICAgICAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uICcKKyAgICAgICAgICAnYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzICcKKyAgICAgICAgICAndGhhdCB8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgJworICAgICAgICAgICd0aGUgICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbidzIGZyZWUgIgorICAgICAgICAgICd2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgJworICAgICAgICAgICdhbm5vdGF0aW9ucyAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgJworICAgICAgICAgICd0aGUgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgJworICAgICAgICAgICduYW1lcywgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlICcKKyAgICAgICAgICAncmV0dXJuICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmICcKKyAgICAgICAgICAncHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyAnCisgICAgICAgICAgJ2ZvciAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSAnCisgICAgICAgICAgJ3BhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlICcKKyAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbmVkIHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCAnCisgICAgICAgICAgJ21ldGFkYXRhXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvICcKKyAgICAgICAgICAnZ2V0IGFuZFxuJworICAgICAgICAgICcgICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb25seVxuJworICAgICAgICAgICcgICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICcKKyAgICAgICAgICAnRnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnV0dXJlLipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvbidzIGRlZmluaXRpb24gY2FuICIKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mICcKKyAgICAgICAgICAnaW50ZXJuYWxcbicKKyAgICAgICAgICAnICAgICAgdHlwZXMgYmVsb3cuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBJbnN0YW5jZSBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlIGFuZFxuJworICAgICAgICAgICcgICAgICBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbikuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiX19zZWxmX18iIGlzIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgIl9fZnVuY19fLl9fZG9jX18iKTsgJworICAgICAgICAgICciX19uYW1lX18iXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgJworICAgICAgICAgICciX19tb2R1bGVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAnCisgICAgICAgICAgJyJOb25lIlxuJworICAgICAgICAgICcgICAgICBpZiB1bmF2YWlsYWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgJworICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0ICcKKyAgICAgICAgICAnY2xhc3MpLCBpZlxuJworICAgICAgICAgICcgICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICd1c2VyLVxuJworICAgICAgICAgICcgICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgJworICAgICAgICAgICdpbnN0YW5jZXMsXG4nCisgICAgICAgICAgJyAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iICcKKyAgICAgICAgICAnYXR0cmlidXRlIGlzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4nCisgICAgICAgICAgJyAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSAnCisgICAgICAgICAgJ2JlaGF2aW91ciBpc1xuJworICAgICAgICAgICcgICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAnCisgICAgICAgICAgJyJfX2Z1bmNfXyJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgJyAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAnCisgICAgICAgICAgJyJmKCkiLFxuJworICAgICAgICAgICcgICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyAnCisgICAgICAgICAgJ2VxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgJworICAgICAgICAgICdhY3R1YWxseVxuJworICAgICAgICAgICcgICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICcKKyAgICAgICAgICAnIkMuZigxKSJcbicKKyAgICAgICAgICAnICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgJworICAgICAgICAgICd1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2FsbCB0aGF0ICcKKyAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCAnCisgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAnICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBvZiB0aGUgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbicKKyAgICAgICAgICAnICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgJworICAgICAgICAgICdmdW5jdGlvbiouXG4nCisgICAgICAgICAgJyAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgJworICAgICAgICAgICdjYWxsaW5nXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAnCisgICAgICAgICAgJyJ5aWVsZCJcbicKKyAgICAgICAgICAnICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgJworICAgICAgICAgICdvclxuJworICAgICAgICAgICcgICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCAnCisgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAnICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nICJhc3luYyBkZWYiIGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuICcKKyAgICAgICAgICAnY2FsbGVkLFxuJworICAgICAgICAgICcgICAgICByZXR1cm5zIGEgKmNvcm91dGluZSogb2JqZWN0LiAgSXQgbWF5IGNvbnRhaW4gImF3YWl0IlxuJworICAgICAgICAgICcgICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiICcKKyAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnICAgICAgU2VlIGFsc28gdGhlICpDb3JvdXRpbmUgT2JqZWN0cyogc2VjdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyAnCisgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICcgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICcKKyAgICAgICAgICAnIm1hdGguc2luKCkiXG4nCisgICAgICAgICAgJyAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCAnCisgICAgICAgICAgJ3JlYWQtXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ2RvY3VtZW50YXRpb25cbicKKyAgICAgICAgICAnICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlICcKKyAgICAgICAgICAiZnVuY3Rpb24nc1xuIgorICAgICAgICAgICcgICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4nCisgICAgICAgICAgJyAgICAgICJfX21vZHVsZV9fIiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBmdW5jdGlvbiB3YXMgJworICAgICAgICAgICdkZWZpbmVkXG4nCisgICAgICAgICAgJyAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEJ1aWx0LWluIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4nCisgICAgICAgICAgJyAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzZXNcbicKKyAgICAgICAgICAnICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyAnCisgICAgICAgICAgJ2ZhY3Rvcmllc1xuJworICAgICAgICAgICcgICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgJworICAgICAgICAgICdwb3NzaWJsZSBmb3JcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICAgICAiX19pbml0X18oKSIgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgSW5zdGFuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSAnCisgICAgICAgICAgJ2RlZmluaW5nXG4nCisgICAgICAgICAgJyAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01vZHVsZXNcbicKKyAgICAgICAgICAnICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAnCisgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCAoc2VlICJpbXBvcnQiKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuJworICAgICAgICAgICcgICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSAnCisgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICcgICBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgJworICAgICAgICAgICcodGhpcyBpc1xuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuJworICAgICAgICAgICcgICBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuJworICAgICAgICAgICcgICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyAnCisgICAgICAgICAgJ2VxdWl2YWxlbnRcbicKKyAgICAgICAgICAnICAgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSAnCisgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAiICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgIgorICAgICAgICAgICdvbmNlXG4nCisgICAgICAgICAgJyAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSAiCisgICAgICAgICAgJ2RpY3Rpb25hcnksXG4nCisgICAgICAgICAgJyAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgJyAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4nCisgICAgICAgICAgJyAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSAnCisgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAnICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAnc3RpbGwgaGFzXG4nCisgICAgICAgICAgJyAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbicKKyAgICAgICAgICAnICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSAnCisgICAgICAgICAgJyJfX2ZpbGVfXyJcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgJworICAgICAgICAgICdDXG4nCisgICAgICAgICAgJyAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuJworICAgICAgICAgICcgICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0N1c3RvbSBjbGFzc2VzXG4nCisgICAgICAgICAgJyAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgJworICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSAnCisgICAgICAgICAgJ2ltcGxlbWVudGVkXG4nCisgICAgICAgICAgJyAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSAnCisgICAgICAgICAgJ3RyYW5zbGF0ZWRcbicKKyAgICAgICAgICAnICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAnICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCAnCisgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgJyAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAnbmFtZSBpc1xuJworICAgICAgICAgICcgICBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuJworICAgICAgICAgICcgICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuJworICAgICAgICAgICcgICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAiICAgJ2RpYW1vbmQnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4iCisgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gJworICAgICAgICAgICdBZGRpdGlvbmFsXG4nCisgICAgICAgICAgJyAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuJworICAgICAgICAgICcgICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgb2JqZWN0IHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlcyBpcyAiQyIuICBXaGVuIGl0IHdvdWxkICcKKyAgICAgICAgICAneWllbGQgYVxuJworICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAnd3JhcHBlZCBieVxuJworICAgICAgICAgICcgICB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgJworICAgICAgICAgICdEZXNjcmlwdG9ycypcbicKKyAgICAgICAgICAnICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21heVxuJworICAgICAgICAgICcgICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzcydzIGRpY3Rpb25hcnksICIKKyAgICAgICAgICAnbmV2ZXJcbicKKyAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgJworICAgICAgICAgICd0dXBsZVxuJworICAgICAgICAgICcgICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgJworICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAnICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAiICAgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSAnCisgICAgICAgICAgJ2Fib3ZlKS5cbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSAnCisgICAgICAgICAgJ3NlYXJjaGVkLlxuJworICAgICAgICAgICIgICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2UncyBjbGFzcyAiCisgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICcgICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgJworICAgICAgICAgICd1c2VyLWRlZmluZWRcbicKKyAgICAgICAgICAnICAgZnVuY3Rpb24gb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbicKKyAgICAgICAgICAnICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgJworICAgICAgICAgICd3YXlcbicKKyAgICAgICAgICAnICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgJ21heVxuJworICAgICAgICAgICIgICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzJ3MgIgorICAgICAgICAgICciX19kaWN0X18iLlxuJworICAgICAgICAgICIgICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0J3MgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZSdzXG4iCisgICAgICAgICAgIiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3MncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4iCisgICAgICAgICAgJyAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCAnCisgICAgICAgICAgJ2luc3RlYWRcbicKKyAgICAgICAgICAnICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciAnCisgICAgICAgICAgJ21hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbicKKyAgICAgICAgICAnICAgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4nCisgICAgICAgICAgJyAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0kvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbicKKyAgICAgICAgICAnICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSAib3BlbigpIiBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uLFxuJworICAgICAgICAgICcgICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiICcKKyAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9mIHNvY2tldCBvYmplY3RzIChhbmQgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kc1xuJworICAgICAgICAgICcgICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGUgb2JqZWN0cyAic3lzLnN0ZGluIiwgInN5cy5zdGRvdXQiIGFuZCAic3lzLnN0ZGVyciIgYXJlXG4nCisgICAgICAgICAgJyAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSAnCisgICAgICAgICAgImludGVycHJldGVyJ3NcbiIKKyAgICAgICAgICAnICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gJworICAgICAgICAgICd0ZXh0XG4nCisgICAgICAgICAgJyAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbnRlcm5hbCB0eXBlc1xuJworICAgICAgICAgICcgICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29kZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uICcKKyAgICAgICAgICAnY29kZSxcbicKKyAgICAgICAgICAnICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gJworICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICIgICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCAiCisgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICcgICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgJworICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAnICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyAnCisgICAgICAgICAgJ2NhbGN1bGF0ZWQgYXRcbicKKyAgICAgICAgICAnICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gJworICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX2FyZ2NvdW50IiBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAnKGluY2x1ZGluZ1xuJworICAgICAgICAgICcgICAgICBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7ICJjb19ubG9jYWxzIiBpcyB0aGUgbnVtYmVyICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgJworICAgICAgICAgICdhcmd1bWVudHMpO1xuJworICAgICAgICAgICcgICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiICcKKyAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICcgICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbicKKyAgICAgICAgICAnICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbicKKyAgICAgICAgICAnICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhICcKKyAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgJyAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAnCisgICAgICAgICAgJyJjb19jb25zdHMiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J5dGVjb2RlO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyAnCisgICAgICAgICAgJ2NvbXBpbGVkO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4nCisgICAgICAgICAgJyAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbicKKyAgICAgICAgICAnICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuJworICAgICAgICAgICcgICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciAnCisgICAgICAgICAgJ2VuY29kaW5nIGFcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICcKKyAgICAgICAgICAnIjB4MDQiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byAnCisgICAgICAgICAgJ2FjY2VwdCBhblxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZ2VuZXJhdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCAnCisgICAgICAgICAgJ2RpdmlzaW9uIilcbicKKyAgICAgICAgICAnICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAnCisgICAgICAgICAgJyIweDIwMDAiIGlzXG4nCisgICAgICAgICAgJyAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uICcKKyAgICAgICAgICAnZW5hYmxlZDtcbicKKyAgICAgICAgICAnICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJyAgICAgIFB5dGhvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuJworICAgICAgICAgICcgICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcmFtZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImZfYmFjayIgaXMgdG8gdGhlIHByZXZpb3VzICcKKyAgICAgICAgICAnc3RhY2tcbicKKyAgICAgICAgICAnICAgICAgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yICJOb25lIiBpZiB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2JvdHRvbVxuJworICAgICAgICAgICcgICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuJworICAgICAgICAgICcgICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICcKKyAgICAgICAgICAnImZfbGFzdGkiXG4nCisgICAgICAgICAgJyAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lICcKKyAgICAgICAgICAnbnVtYmVyIG9mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24gJworICAgICAgICAgICdqdW1wc1xuJworICAgICAgICAgICcgICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgJworICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICcgICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSAnCisgICAgICAgICAgJ3dyaXRpbmdcbicKKyAgICAgICAgICAnICAgICAgdG8gZl9saW5lbm8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lLmNsZWFyKClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgJworICAgICAgICAgICdoZWxkIGJ5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlICcKKyAgICAgICAgICAnY3ljbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgJworICAgICAgICAgICdleGVjdXRpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gJworICAgICAgICAgICdzdGFjaywgYXRcbicKKyAgICAgICAgICAnICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgJworICAgICAgICAgICdlbnRlcmVkLFxuJworICAgICAgICAgICcgICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIHJldHVybmVkIGJ5ICJzeXMuZXhjX2luZm8oKSIuIFdoZW4gdGhlIHByb2dyYW0gJworICAgICAgICAgICdjb250YWlucyBub1xuJworICAgICAgICAgICcgICAgICBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5ICcKKyAgICAgICAgICAnZm9ybWF0dGVkKVxuJworICAgICAgICAgICcgICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgJworICAgICAgICAgICdpbnRlcmFjdGl2ZSxcbicKKyAgICAgICAgICAnICAgICAgaXQgaXMgYWxzbyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgdXNlciBhcyAnCisgICAgICAgICAgJyJzeXMubGFzdF90cmFjZWJhY2siLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInRiX25leHQiIGlzIHRoZSBuZXh0IGxldmVsICcKKyAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAnb2NjdXJyZWQpLCBvclxuJworICAgICAgICAgICcgICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDsgInRiX2xpbmVubyIgZ2l2ZXMgdGhlICcKKyAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZSBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGlmIHRoZSBleGNlcHRpb24gb2NjdXJyZWQgaW4gYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJyAgICAgIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2Ugb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2xpY2Ugb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yICcKKyAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAnCisgICAgICAgICAgJyJzdG9wIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgdXBwZXIgYm91bmQ7ICJzdGVwIiBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpcyAnCisgICAgICAgICAgJyJOb25lIiBpZlxuJworICAgICAgICAgICcgICAgICBvbWl0dGVkLiAgVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogJworICAgICAgICAgICdpdGVtcy5cbicKKyAgICAgICAgICAnICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuJworICAgICAgICAgICcgICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAnICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgJworICAgICAgICAgICdvdGhlclxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhICcKKyAgICAgICAgICAnc3RhdGljXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2UsIHRoZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICcgICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0cyBhcmVcbicKKyAgICAgICAgICAnICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCAnCisgICAgICAgICAgJ3VzdWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSAnCisgICAgICAgICAgJ3dyYXBwZXJcbicKKyAgICAgICAgICAnICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSAnCisgICAgICAgICAgJ2JlaGF2aW91ciBvZlxuJworICAgICAgICAgICcgICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCAnCisgICAgICAgICAgJ2Fib3ZlLFxuJworICAgICAgICAgICcgICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgJworICAgICAgICAgICdjcmVhdGVkXG4nCisgICAgICAgICAgJyAgICAgIGJ5IHRoZSBidWlsdC1pbiAiY2xhc3NtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nLAorICd0eXBlc2Z1bmN0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gICcKKyAgICAgICAgICAgICAgICAgICAnVGhlIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICcKKyAgICAgICAgICAgICAgICAgICAnImZ1bmMoYXJndW1lbnQtbGlzdCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiAnCisgICAgICAgICAgICAgICAgICAgJ2J1aWx0LWluIGZ1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiAodG8gY2FsbFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24pLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCwgJworICAgICAgICAgICAgICAgICAgICdoZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1NlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtYXBwaW5nJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgICdtYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBidWlsdC1cbicKKyAgICAgICAgICAgICAgICAgJ2luICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJBIGRpY3Rpb25hcnkncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzICIKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcyBvclxuJworICAgICAgICAgICAgICAgICAnb3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyICcKKyAgICAgICAgICAgICAgICAgJ3RoYW4gYnkgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICdpZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2tleXMgb2JleVxuJworICAgICAgICAgICAgICAgICAndGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyAnCisgICAgICAgICAgICAgICAgICdjb21wYXJlIGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcoc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAnaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG4nCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSAnCisgICAgICAgICAgICAgICAgICdjb21wdXRlcnMgc3RvcmVcbicKKyAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSAnCisgICAgICAgICAgICAgICAgICd1bndpc2UgdG8gdXNlXG4nCisgICAgICAgICAgICAgICAgICd0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2xpc3Qgb2YgImtleTpcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgJworICAgICAgICAgICAgICAgICAiJ3Nqb2VyZCc6XG4iCisgICAgICAgICAgICAgICAgICc0MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgJworICAgICAgICAgICAgICAgICAnImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnaXMgY3JlYXRlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICAgICAnKml0ZXJhYmxlKlxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gJworICAgICAgICAgICAgICAgICAnYmVjb21lcyBhIGtleVxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICdmb3IgdGhhdCBrZXlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyAnCisgICAgICAgICAgICAgICAgICdhbmQgdGhlaXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBlcXVhbFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBiID0geydvbmUnOiAxLCAndHdvJzogMiwgJ3RocmVlJzogM31cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjID0gZGljdCh6aXAoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sIFsxLCAyLCAiCisgICAgICAgICAgICAgICAgICczXSkpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZCA9IGRpY3QoWygndHdvJywgMiksICgnb25lJywgMSksICgndGhyZWUnLCAiCisgICAgICAgICAgICAgICAgICczKV0pXG4nCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZSA9IGRpY3Qoeyd0aHJlZSc6IDMsICdvbmUnOiAxLCAndHdvJzogMn0pXG4iCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSAnCisgICAgICAgICAgICAgICAgICdvbmx5IHdvcmtzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSAnCisgICAgICAgICAgICAgICAgICd2YWxpZCBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVyZWZvcmUsXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBsZW4oZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciIgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICciX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd0aGVuIHJldHVybnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGludm9rZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0ICcKKyAgICAgICAgICAgICAgICAgJ2Nhbm5vdCBiZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAwXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ10gKz0gMVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAxXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyB1c2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV0gPSB2YWx1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZGVsIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW4gdGhlIG1hcC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IGluIGRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleSBub3QgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xlYXIoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcHkoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBzZXQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBnZXQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LCBlbHNlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiwgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgaXRlbXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgcG9wKGtleVssIGRlZmF1bHRdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAnaXRzIHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiAnCisgICAgICAgICAgICAgICAgICdhbmQgKmtleSogaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSAiS2V5RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgcG9waXRlbSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSAiKGtleSwgdmFsdWUpIiBwYWlyICcKKyAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAicG9waXRlbSgpIiBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgJworICAgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyBlbXB0eSwgY2FsbGluZyAicG9waXRlbSgpIiByYWlzZXMgYSAiS2V5RXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmICcKKyAgICAgICAgICAgICAgICAgJ25vdCwgaW5zZXJ0XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAnKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVwZGF0ZShbb3RoZXJdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gJworICAgICAgICAgICAgICAgICAnKm90aGVyKixcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAidXBkYXRlKCkiIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3QgJworICAgICAgICAgICAgICAgICAnb3IgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlcyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCAnCisgICAgICAgICAgICAgICAgICd0aGUgZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiAnCisgICAgICAgICAgICAgICAgICciZC51cGRhdGUocmVkPTEsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBibHVlPTIpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBEaWN0aW9uYXJpZXMgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgIihrZXksXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAoXCc8XCcsIFwnPD1cJywgJworICAgICAgICAgICAgICAgICAiJz49JywgJz4nKSByYWlzZVxuIgorICAgICAgICAgICAgICAgICAnICAgIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgJworICAgICAgICAgICAgICAgICAncmVhZC1vbmx5XG4nCisgICAgICAgICAgICAgICAgICcgIHZpZXcgb2YgYSAiZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgJworICAgICAgICAgICAgICAgICAndmlldyBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAnY2hhbmdlcyxcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgJworICAgICAgICAgICAgICAgICAncmVzcGVjdGl2ZSBkYXRhLFxuJworICAgICAgICAgICAgICAgICAnYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnbGVuKGRpY3R2aWV3KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdpdGVyKGRpY3R2aWV3KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgJyhyZXByZXNlbnRlZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgdHVwbGVzIG9mICIoa2V5LCB2YWx1ZSkiKSBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIGFuIGFyYml0cmFyeSBvcmRlciAnCisgICAgICAgICAgICAgICAgICd3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgbm9uLXJhbmRvbSwgdmFyaWVzIGFjcm9zcyBQeXRob24gaW1wbGVtZW50YXRpb25zLCBhbmQgJworICAgICAgICAgICAgICAgICAnZGVwZW5kcyBvblxuJworICAgICAgICAgICAgICAgICAiICAgdGhlIGRpY3Rpb25hcnkncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gIgorICAgICAgICAgICAgICAgICAnSWYga2V5cyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyAnCisgICAgICAgICAgICAgICAgICdpbnRlcnZlbmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgJ3dpbGwgZGlyZWN0bHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgIih2YWx1ZSwga2V5KSIgJworICAgICAgICAgICAgICAgICAncGFpcnMgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ6aXAoKSI6ICJwYWlycyA9IHppcChkLnZhbHVlcygpLCBkLmtleXMoKSkiLiAgQW5vdGhlciAnCisgICAgICAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzICJwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpbiAnCisgICAgICAgICAgICAgICAgICdkLml0ZW1zKCldIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBtYXkgcmFpc2UgYSAiUnVudGltZUVycm9yIiBvciBmYWlsIHRvIGl0ZXJhdGUgb3ZlciBhbGwgJworICAgICAgICAgICAgICAgICAnZW50cmllcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAneCBpbiBkaWN0dmlld1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzICcKKyAgICAgICAgICAgICAgICAgJ2tleXMsIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICAnICAgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhICIoa2V5LCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSkiXG4nCisgICAgICAgICAgICAgICAgICcgICB0dXBsZSkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0tleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgJworICAgICAgICAgICAgICAgICAnaGFzaGFibGUuXG4nCisgICAgICAgICAgICAgICAgICdJZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCAiKGtleSwgdmFsdWUpIiBwYWlycyAnCisgICAgICAgICAgICAgICAgICdhcmUgdW5pcXVlXG4nCisgICAgICAgICAgICAgICAgICdhbmQgaGFzaGFibGUsIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gICcKKyAgICAgICAgICAgICAgICAgJyhWYWx1ZXMgdmlld3MgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgdHJlYXRlZCBhcyBzZXQtbGlrZSBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ25vdCB1bmlxdWUuKVxuJworICAgICAgICAgICAgICAgICAnRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Fic3RyYWN0XG4nCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzICJjb2xsZWN0aW9ucy5hYmMuU2V0IiBhcmUgYXZhaWxhYmxlIChmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgIj09IixcbicKKyAgICAgICAgICAgICAgICAgJyI8Iiwgb3IgIl4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkaXNoZXMgPSB7J2VnZ3MnOiAyLCAnc2F1c2FnZSc6IDEsICdiYWNvbic6IDEsICIKKyAgICAgICAgICAgICAgICAgIidzcGFtJzogNTAwfVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGl0ZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IG4gPSAwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIG4gKz0gdmFsXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gcHJpbnQobilcbicKKyAgICAgICAgICAgICAgICAgJyAgIDUwNFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KGtleXMpXG4nCisgICAgICAgICAgICAgICAgICIgICBbJ2VnZ3MnLCAnYmFjb24nLCAnc2F1c2FnZScsICdzcGFtJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KHZhbHVlcylcbicKKyAgICAgICAgICAgICAgICAgJyAgIFsyLCAxLCAxLCA1MDBdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0ICcKKyAgICAgICAgICAgICAgICAgJ2NoYW5nZXNcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkZWwgZGlzaGVzWydlZ2dzJ11cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkZWwgZGlzaGVzWydzYXVzYWdlJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KGtleXMpXG4nCisgICAgICAgICAgICAgICAgICIgICBbJ3NwYW0nLCAnYmFjb24nXVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGtleXMgJiB7J2VnZ3MnLCAnYmFjb24nLCAnc2FsYWQnfVxuIgorICAgICAgICAgICAgICAgICAiICAgeydiYWNvbid9XG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4ga2V5cyBeIHsnc2F1c2FnZScsICdqdWljZSd9XG4iCisgICAgICAgICAgICAgICAgICIgICB7J2p1aWNlJywgJ3NhdXNhZ2UnLCAnYmFjb24nLCAnc3BhbSd9XG4iLAorICd0eXBlc21ldGhvZHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICdub3RhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyAnCisgICAgICAgICAgICAgICAgICciYXBwZW5kKCkiIG9uIGxpc3RzKVxuJworICAgICAgICAgICAgICAgICAnYW5kIGNsYXNzIGluc3RhbmNlIG1ldGhvZHMuICBCdWlsdC1pbiBtZXRob2RzIGFyZSAnCisgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3R5cGVzIHRoYXQgc3VwcG9ydCB0aGVtLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJZiB5b3UgYWNjZXNzIGEgbWV0aG9kIChhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UpXG4nCisgICAgICAgICAgICAgICAgICd0aHJvdWdoIGFuIGluc3RhbmNlLCB5b3UgZ2V0IGEgc3BlY2lhbCBvYmplY3Q6IGEgKmJvdW5kICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCogKGFsc29cbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCAqaW5zdGFuY2UgbWV0aG9kKikgb2JqZWN0LiBXaGVuIGNhbGxlZCwgaXQgd2lsbCBhZGQgJworICAgICAgICAgICAgICAgICAndGhlICJzZWxmIlxuJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50IGxpc3QuICBCb3VuZCBtZXRob2RzIGhhdmUgdHdvICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgcmVhZC1cbicKKyAgICAgICAgICAgICAgICAgJ29ubHkgYXR0cmlidXRlczogIm0uX19zZWxmX18iIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnb3BlcmF0ZXMsIGFuZCAibS5fX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZyAnCisgICAgICAgICAgICAgICAgICd0aGUgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnQ2FsbGluZyAibShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIiBpcyBjb21wbGV0ZWx5ICcKKyAgICAgICAgICAgICAgICAgJ2VxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxpbmcgIm0uX19mdW5jX18obS5fX3NlbGZfXywgYXJnLTEsIGFyZy0yLCAuLi4sICcKKyAgICAgICAgICAgICAgICAgJ2FyZy1uKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0xpa2UgZnVuY3Rpb24gb2JqZWN0cywgYm91bmQgbWV0aG9kIG9iamVjdHMgc3VwcG9ydCAnCisgICAgICAgICAgICAgICAgICdnZXR0aW5nIGFyYml0cmFyeVxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcy4gIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgb25cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoIm1ldGguX19mdW5jX18iKSwgc2V0dGluZyAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byAnCisgICAgICAgICAgICAgICAgICdzZXQgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvbiBhIG1ldGhvZCByZXN1bHRzIGluIGFuICJBdHRyaWJ1dGVFcnJvciIgYmVpbmcgJworICAgICAgICAgICAgICAgICAncmFpc2VkLiAgSW5cbicKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIHNldCBhIG1ldGhvZCBhdHRyaWJ1dGUsIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAnc2V0IGl0IG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAndW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3Q6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGMubWV0aG9kLndob2FtaSA9ICdteSBuYW1lIGlzIG1ldGhvZCcgICMgY2FuJ3Qgc2V0ICIKKyAgICAgICAgICAgICAgICAgJ29uIHRoZSBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIEF0dHJpYnV0ZUVycm9yOiAnbWV0aG9kJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAiCisgICAgICAgICAgICAgICAgICInd2hvYW1pJ1xuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9ICdteSBuYW1lIGlzIG1ldGhvZCdcbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLm1ldGhvZC53aG9hbWlcbicKKyAgICAgICAgICAgICAgICAgIiAgICdteSBuYW1lIGlzIG1ldGhvZCdcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtb2R1bGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnYWNjZXNzOiAibS5uYW1lIixcbicKKyAgICAgICAgICAgICAgICAgJ3doZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgImluICptKidzXG4iCisgICAgICAgICAgICAgICAgICdzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29uIGEgbW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICduYW1lZCAqZm9vKiB0b1xuJworICAgICAgICAgICAgICAgICAnZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVkICpmb28qIHNvbWV3aGVyZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Egc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nICIKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgIgorICAgICAgICAgICAgICAgICAnYnV0IGRpcmVjdFxuJworICAgICAgICAgICAgICAgICAnYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICcKKyAgICAgICAgICAgICAgICAgJyh5b3UgY2FuIHdyaXRlXG4nCisgICAgICAgICAgICAgICAgICcibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsICcKKyAgICAgICAgICAgICAgICAgImJ1dCB5b3UgY2FuJ3RcbiIKKyAgICAgICAgICAgICAgICAgJ3dyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAnCisgICAgICAgICAgICAgICAgICciPG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlIFwnb3NcJyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJ1wnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAorICd0eXBlc3NlcSc6ICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2UgVHlwZXMgLS0tICJsaXN0IiwgInR1cGxlIiwgInJhbmdlIlxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCAnCisgICAgICAgICAgICAgJ3JhbmdlXG4nCisgICAgICAgICAgICAgJ29iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgJworICAgICAgICAgICAgICcqYmluYXJ5XG4nCisgICAgICAgICAgICAgJ2RhdGEqIGFuZCAqdGV4dCBzdHJpbmdzKiBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3QgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSAnCisgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuJworICAgICAgICAgICAgICdpcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgJworICAgICAgICAgICAgICdwcmlvcml0eS5cbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgJworICAgICAgICAgICAgICcqaSosXG4nCisgICAgICAgICAgICAgJypqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgJ21lZXRzIGFueVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiICcKKyAgICAgICAgICAgICAnKHJlcGV0aXRpb24pXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiAnCisgICAgICAgICAgICAgJ2lzICAgICAgfCAoMSkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAnCisgICAgICAgICAgICAgJyJGYWxzZSIgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqICcKKyAgICAgICAgICAgICAnaXMgICAgIHwgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgJworICAgICAgICAgICAgICciVHJ1ZSIgICAgICAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICsgdCIgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAnCisgICAgICAgICAgICAgJyp0KiB8ICg2KSg3KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqIG4iIG9yICJuICogcyIgICAgICAgICB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAnCisgICAgICAgICAgICAgJypzKiAgICAgICAgfCAoMikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luICcKKyAgICAgICAgICAgICAnMCAgICAgIHwgKDMpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICcKKyAgICAgICAgICAgICAnKmoqICAgICB8ICgzKSg0KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAnCisgICAgICAgICAgICAgJypqKiAgICAgfCAoMykoNSkgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAnCisgICAgICAgICAgICAgJyprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgJworICAgICAgICAgICAgICcqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAnCisgICAgICAgICAgICAgJypzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAnCisgICAgICAgICAgICAgJypzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSAnCisgICAgICAgICAgICAgJ29mIHwgKDgpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciAnCisgICAgICAgICAgICAgJ2luZGV4ICAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAnCisgICAgICAgICAgICAgJypqKikgICAgICAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzICcKKyAgICAgICAgICAgICAnb2YgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluICcKKyAgICAgICAgICAgICAncGFydGljdWxhcixcbicKKyAgICAgICAgICAgICAndHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCAnCisgICAgICAgICAgICAgJ2V2ZXJ5XG4nCisgICAgICAgICAgICAgJ2VsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mICcKKyAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAndHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgJworICAgICAgICAgICAgICcqQ29tcGFyaXNvbnMqIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiBXaGlsZSB0aGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICcgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgJworICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuJworICAgICAgICAgICAgICcgICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4nCisgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoICcKKyAgICAgICAgICAgICAneWllbGRzIGFuXG4nCisgICAgICAgICAgICAgJyAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0ICcKKyAgICAgICAgICAgICAndGhlIGNvcGllc1xuJworICAgICAgICAgICAgICcgICBhcmUgc2hhbGxvdzsgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuICcKKyAgICAgICAgICAgICAnaGF1bnRzXG4nCisgICAgICAgICAgICAgJyAgIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbXSwgW10sIFtdXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbWzNdLCBbM10sIFszXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgIltbXV0iIGlzIGEgb25lLWVsZW1lbnQgbGlzdCAnCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICAnICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mICJbW11dICogMyIgYXJlICcKKyAgICAgICAgICAgICAnKHBvaW50ZXJzXG4nCisgICAgICAgICAgICAgJyAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAibGlzdHMiIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFs1XSwgWzddXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgJworICAgICAgICAgICAgICdCdXQgbm90ZVxuJworICAgICAgICAgICAgICcgICB0aGF0ICItMCIgaXMgc3RpbGwgIjAiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3IgJworICAgICAgICAgICAgICciTm9uZSIsXG4nCisgICAgICAgICAgICAgJyAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICcKKyAgICAgICAgICAgICAnKmkqIGlzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCAnCisgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSAnCisgICAgICAgICAgICAgJ24gPFxuJworICAgICAgICAgICAgICcgICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgJworICAgICAgICAgICAgICciaSsyKmsiLFxuJworICAgICAgICAgICAgICcgICAiaSszKmsiIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyXG4nCisgICAgICAgICAgICAgJyAgIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gImxlbihzKSIsICcKKyAgICAgICAgICAgICAndXNlXG4nCisgICAgICAgICAgICAgJyAgICJsZW4ocykiLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciAiTm9uZSIsIHRoZXkgYmVjb21lICcKKyAgICAgICAgICAgICAnImVuZCJcbicKKyAgICAgICAgICAgICAnICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqICcKKyAgICAgICAgICAgICAnY2Fubm90IGJlXG4nCisgICAgICAgICAgICAgJyAgIHplcm8uIElmICprKiBpcyAiTm9uZSIsIGl0IGlzIHRyZWF0ZWQgbGlrZSAiMSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXdcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlICcKKyAgICAgICAgICAgICAndG90YWxcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgbGVuZ3RoLiBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCAnCisgICAgICAgICAgICAgJ3N3aXRjaCB0b1xuJworICAgICAgICAgICAgICcgICBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgJworICAgICAgICAgICAgICd1c2VcbicKKyAgICAgICAgICAgICAnICAgICAic3RyLmpvaW4oKSIgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgImlvLlN0cmluZ0lPIiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgJyAgICAgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgImJ5dGVzIiBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbicKKyAgICAgICAgICAgICAnICAgICAiYnl0ZXMuam9pbigpIiBvciAiaW8uQnl0ZXNJTyIsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2VcbicKKyAgICAgICAgICAgICAnICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29iamVjdHMgYXJlXG4nCisgICAgICAgICAgICAgJyAgICAgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInR1cGxlIiBvYmplY3RzLCBleHRlbmQgYSAibGlzdCIgJworICAgICAgICAgICAgICdpbnN0ZWFkXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzICcKKyAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyAicmFuZ2UiKSBvbmx5IHN1cHBvcnQgaXRlbVxuJworICAgICAgICAgICAgICIgICBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCAiCisgICAgICAgICAgICAgJ3N1cHBvcnRcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnOC4gImluZGV4IiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouICcKKyAgICAgICAgICAgICAnV2hlblxuJworICAgICAgICAgICAgICcgICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kICcKKyAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAnICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyAnCisgICAgICAgICAgICAgJyJzW2k6al0uaW5kZXgoeCkiLFxuJworICAgICAgICAgICAgICcgICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICcgICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICcgICBzbGljZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5ICcKKyAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgJ3RoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyAnCisgICAgICAgICAgICAgJ3N1cHBvcnQgZm9yXG4nCisgICAgICAgICAgICAgJ3RoZSAiaGFzaCgpIiBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyAidHVwbGUiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLCB0b1xuJworICAgICAgICAgICAgICdiZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zICcKKyAgICAgICAgICAgICAndW5oYXNoYWJsZVxuJworICAgICAgICAgICAgICd2YWx1ZXMgd2lsbCByZXN1bHQgaW4gIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgJworICAgICAgICAgICAgICd0byBtYWtlXG4nCisgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAnCisgICAgICAgICAgICAgJyp0KiBpcyBhbnlcbicKKyAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSAnCisgICAgICAgICAgICAgJ3R5cGUgYW5kXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdhY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAnCisgICAgICAgICAgICAgJzI1NSIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCAnCisgICAgICAgICAgICAgJ2J5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gJworICAgICAgICAgICAgICcqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgJworICAgICAgICAgICAgICd0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICdbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iICcKKyAgICAgICAgICAgICAnYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlICcKKyAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiAnCisgICAgICAgICAgICAgJ3RoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiICcKKyAgICAgICAgICAgICAnKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgJworICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICcKKyAgICAgICAgICAgICAnInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgJyJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgJworICAgICAgICAgICAgICdjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzICcKKyAgICAgICAgICAgICAnInNbbGVuKHMpOmxlbihzKV0gPSB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICd0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0ICcKKyAgICAgICAgICAgICAndGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSAnCisgICAgICAgICAgICAgJ2FzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSAnCisgICAgICAgICAgICAgJ1t4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqICcKKyAgICAgICAgICAgICAnYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAnCisgICAgICAgICAgICAgJypzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gJworICAgICAgICAgICAgICcqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0gJworICAgICAgICAgICAgICd4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogJworICAgICAgICAgICAgICdpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAncGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzICcKKyAgICAgICAgICAgICAncmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5ICcKKyAgICAgICAgICAgICAnZGVmYXVsdFxuJworICAgICAgICAgICAgICcgICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4nCisgICAgICAgICAgICAgJyAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvICcKKyAgICAgICAgICAgICAncmVtaW5kIHVzZXJzXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgJworICAgICAgICAgICAgICdyZXZlcnNlZFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAiCisgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdHNcbicKKyAgICAgICAgICAgICAnPT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgJworICAgICAgICAgICAgICdjb2xsZWN0aW9ucyBvZlxuJworICAgICAgICAgICAgICdob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCAnCisgICAgICAgICAgICAgJ3ZhcnkgYnlcbicKKyAgICAgICAgICAgICAnYXBwbGljYXRpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6ICcKKyAgICAgICAgICAgICAnIltdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICcKKyAgICAgICAgICAgICAnIlthXSIsXG4nCisgICAgICAgICAgICAgJyAgICAgIlthLCBiLCBjXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246ICJbeCBmb3IgeCBpbiBpdGVyYWJsZV0iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiAibGlzdCgpIiBvciAibGlzdChpdGVyYWJsZSkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAnImxpc3QoXCdhYmNcJykiXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybnMgIltcJ2FcJywgXCdiXCcsIFwnY1wnXSIgYW5kICJsaXN0KCAoMSwgMiwgMykgKSIgJworICAgICAgICAgICAgICdyZXR1cm5zICJbMSwgMixcbicKKyAgICAgICAgICAgICAnICAgM10iLiBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgJworICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICcgICBsaXN0LCAiW10iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZSAnCisgICAgICAgICAgICAgJyJzb3J0ZWQoKSJcbicKKyAgICAgICAgICAgICAnICAgYnVpbHQtaW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgJworICAgICAgICAgICAgICdtZXRob2Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgJworICAgICAgICAgICAgICdjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICcgICAgICBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmIGFueSAnCisgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAnICAgICAgb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAnCisgICAgICAgICAgICAgJyhhbmQgdGhlXG4nCisgICAgICAgICAgICAgJyAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCAnCisgICAgICAgICAgICAgJ3N0YXRlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJyAgICAgIGtleXdvcmQgKCprZXl3b3JkLW9ubHkgYXJndW1lbnRzKik6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciAnCisgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgJyAgICAgICJrZXk9c3RyLmxvd2VyIikuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gJworICAgICAgICAgICAgICd0aGUgbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nICcKKyAgICAgICAgICAgICAncHJvY2Vzcy5cbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgJworICAgICAgICAgICAgICdzb3J0ZWRcbicKKyAgICAgICAgICAgICAnICAgICAgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAiZnVuY3Rvb2xzLmNtcF90b19rZXkoKSIgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gJworICAgICAgICAgICAgICdjb252ZXJ0IGFcbicKKyAgICAgICAgICAgICAnICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvICJUcnVlIiwgdGhlbiAnCisgICAgICAgICAgICAgJ3RoZSBsaXN0XG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgJworICAgICAgICAgICAgICdyZXZlcnNlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSAnCisgICAgICAgICAgICAgJ29mIHNwYWNlXG4nCisgICAgICAgICAgICAgJyAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgJworICAgICAgICAgICAgICdvcGVyYXRlc1xuJworICAgICAgICAgICAgICcgICAgICBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgJworICAgICAgICAgICAgICcodXNlXG4nCisgICAgICAgICAgICAgJyAgICAgICJzb3J0ZWQoKSIgdG8gZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0ICcKKyAgICAgICAgICAgICAnaW5zdGFuY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlICJzb3J0KCkiIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgICAgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yICcKKyAgICAgICAgICAgICAnc29ydGluZyBpblxuJworICAgICAgICAgICAgICcgICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gJworICAgICAgICAgICAgICdieSBzYWxhcnlcbicKKyAgICAgICAgICAgICAnICAgICAgZ3JhZGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgJworICAgICAgICAgICAgICdzb3J0ZWQsXG4nCisgICAgICAgICAgICAgJyAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlICcKKyAgICAgICAgICAgICAnbGlzdCBpc1xuJworICAgICAgICAgICAgICcgICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlICcKKyAgICAgICAgICAgICAnbGlzdCBhcHBlYXJcbicKKyAgICAgICAgICAgICAnICAgICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyAiVmFsdWVFcnJvciIgaWYgaXQgJworICAgICAgICAgICAgICdjYW4gZGV0ZWN0XG4nCisgICAgICAgICAgICAgJyAgICAgIHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1R1cGxlc1xuJworICAgICAgICAgICAgICc9PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1R1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgJworICAgICAgICAgICAgICdjb2xsZWN0aW9ucyBvZlxuJworICAgICAgICAgICAgICdoZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJyJlbnVtZXJhdGUoKSJcbicKKyAgICAgICAgICAgICAnYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaW1tdXRhYmxlICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnb2YgaG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhICcKKyAgICAgICAgICAgICAnInNldCIgb3JcbicKKyAgICAgICAgICAgICAnImRpY3QiIGluc3RhbmNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGNsYXNzIHR1cGxlKFtpdGVyYWJsZV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAnCisgICAgICAgICAgICAgJyIoKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgJworICAgICAgICAgICAgICciKGEsKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHRoZSAidHVwbGUoKSIgYnVpbHQtaW46ICJ0dXBsZSgpIiBvciAnCisgICAgICAgICAgICAgJyJ0dXBsZShpdGVyYWJsZSkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCAnCisgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICIgICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciAiCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuJworICAgICAgICAgICAgICcgICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCAidHVwbGUoXCdhYmNcJykiIHJldHVybnMgIihcJ2FcJywgJworICAgICAgICAgICAgICdcJ2JcJywgXCdjXCcpIlxuJworICAgICAgICAgICAgICcgICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gJworICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICcgICBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsICIoKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJyAgIHR1cGxlIGNhc2UsIG9yIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyAnCisgICAgICAgICAgICAgJ2FtYmlndWl0eS5cbicKKyAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGUsICJmKGEsIGIsIGMpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZSAnCisgICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICAnICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzICcKKyAgICAgICAgICAgICAndGhlIHNvbGVcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgJworICAgICAgICAgICAgICdjbGVhcmVyXG4nCisgICAgICAgICAgICAgJ3RoYW4gYWNjZXNzIGJ5IGluZGV4LCAiY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIiBtYXkgYmUgYSAnCisgICAgICAgICAgICAgJ21vcmVcbicKKyAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Jhbmdlc1xuJworICAgICAgICAgICAgICc9PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicmFuZ2UiIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyAnCisgICAgICAgICAgICAgJ2FuZCBpc1xuJworICAgICAgICAgICAgICdjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiICcKKyAgICAgICAgICAgICAnbG9vcHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuJworICAgICAgICAgICAgICdjbGFzcyBjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAnCisgICAgICAgICAgICAgJyhlaXRoZXJcbicKKyAgICAgICAgICAgICAnICAgYnVpbHQtaW4gImludCIgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlICcKKyAgICAgICAgICAgICAnIl9faW5kZXhfXyJcbicKKyAgICAgICAgICAgICAnICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCAnCisgICAgICAgICAgICAgJ2RlZmF1bHRzIHRvXG4nCisgICAgICAgICAgICAgJyAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gJworICAgICAgICAgICAgICciMCIuIElmXG4nCisgICAgICAgICAgICAgJyAgICpzdGVwKiBpcyB6ZXJvLCAiVmFsdWVFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSAiciIgYXJlICcKKyAgICAgICAgICAgICAnZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICcgICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgJworICAgICAgICAgICAgICcicltpXSA8XG4nCisgICAgICAgICAgICAgJyAgIHN0b3AiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbFxuJworICAgICAgICAgICAgICcgICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiLCBidXQgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgInJbMF0iIGRvZXMgbm90IG1lZXQgdGhlICcKKyAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAnICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJyAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuJworICAgICAgICAgICAgICcgICAiT3ZlcmZsb3dFcnJvciIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZSBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgMywgNiwgOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgJ2V4Y2VwdFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCAnCisgICAgICAgICAgICAgJ3BhdHRlcm4pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGFkdmFudGFnZSBvZiB0aGUgInJhbmdlIiB0eXBlIG92ZXIgYSByZWd1bGFyICJsaXN0IiBvciAnCisgICAgICAgICAgICAgJyJ0dXBsZSIgaXNcbicKKyAgICAgICAgICAgICAndGhhdCBhICJyYW5nZSIgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKSBhbW91bnQgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICdtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgJworICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgJ3N0b3JlcyB0aGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgdmFsdWVzLCBjYWxjdWxhdGluZyAnCisgICAgICAgICAgICAgJ2luZGl2aWR1YWxcbicKKyAgICAgICAgICAgICAnaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAncHJvdmlkZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4ICcKKyAgICAgICAgICAgICAnbG9va3VwLFxuJworICAgICAgICAgICAgICdzbGljaW5nIGFuZCBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgKlNlcXVlbmNlIFR5cGVzICcKKyAgICAgICAgICAgICAnLS0tXG4nCisgICAgICAgICAgICAgJ2xpc3QsIHR1cGxlLCByYW5nZSopOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJcbicKKyAgICAgICAgICAgICAncmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiAxMSBpbiByXG4nCisgICAgICAgICAgICAgJ0ZhbHNlXG4nCisgICAgICAgICAgICAgJz4+PiAxMCBpbiByXG4nCisgICAgICAgICAgICAgJ1RydWVcbicKKyAgICAgICAgICAgICAnPj4+IHIuaW5kZXgoMTApXG4nCisgICAgICAgICAgICAgJzVcbicKKyAgICAgICAgICAgICAnPj4+IHJbNV1cbicKKyAgICAgICAgICAgICAnMTBcbicKKyAgICAgICAgICAgICAnPj4+IHJbOjVdXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDEwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gclstMV1cbicKKyAgICAgICAgICAgICAnMThcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzICcKKyAgICAgICAgICAgICAndGhlbSBhc1xuJworICAgICAgICAgICAgICdzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZiAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICd0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSAicmFuZ2UoMCkgPT0gcmFuZ2UoMiwgMSwgMykiIG9yICcKKyAgICAgICAgICAgICAnInJhbmdlKDAsIDMsXG4nCisgICAgICAgICAgICAgJzIpID09IHJhbmdlKDAsIDQsIDIpIi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCAnCisgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAnYW5kIG5lZ2F0aXZlIGluZGljZXMuIFRlc3QgImludCIgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiAnCisgICAgICAgICAgICAgJ2NvbnN0YW50XG4nCisgICAgICAgICAgICAgJ3RpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlICIKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mICcKKyAgICAgICAgICAgICAnY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2Jhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiAnCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMuXG4nLAorICd0eXBlc3NlcS1tdXRhYmxlJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnbXV0YWJsZSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgdG8gbWFrZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gJworICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlLCAqdCogaXMgYW55XG4nCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWV0cyBhbnkgdHlwZSBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVhcnJheSIgb25seVxuJworICAgICAgICAgICAgICAgICAgICAgJ2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSAnCisgICAgICAgICAgICAgICAgICAgICAneCA8PSAyNTUiKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlcyAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gJworICAgICAgICAgICAgICAgICAgICAgJyppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2VuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCAnCisgICAgICAgICAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAgICAnInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiAgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAgICAnInNbbGVuKHMpOmxlbihzKV0gPSB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAndCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gJworICAgICAgICAgICAgICAgICAgICAgJypzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJyhzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSAnCisgICAgICAgICAgICAgICAgICAgICAnYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgJworICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgICAgICAgICAnaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAgICAgICAgICd4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgJworICAgICAgICAgICAgICAgICAgICAgJ29mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdieSBkZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gKnMqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdwbGFjZSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICAnCisgICAgICAgICAgICAgICAgICAgICAnVG8gcmVtaW5kIHVzZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgcmV2ZXJzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc1LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgJworICAgICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0ICIKKyAgICAgICAgICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiAnCisgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kcy5cbicsCisgJ3VuYXJ5JzogJ1xuJworICAgICAgICAgICdVbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICdwcmlvcml0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyAnCisgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAnYXJndW1lbnQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIisiIChwbHVzKSBvcGVyYXRvciB5aWVsZHMgaXRzIG51bWVyaWMgYXJndW1lbnQgJworICAgICAgICAgICd1bmNoYW5nZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIn4iIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgJworICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAnaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuJworICAgICAgICAgICciLSh4KzEpIi4gIEl0IG9ubHkgYXBwbGllcyB0byBpbnRlZ3JhbCBudW1iZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyICcKKyAgICAgICAgICAndHlwZSwgYVxuJworICAgICAgICAgICciVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKKyAnd2hpbGUnOiAnXG4nCisgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nLAorICd3aXRoJzogJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrICcKKyAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbicKKyAgICAgICAgICdDb250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAnCisgICAgICAgICAnInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxuJworICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbicKKyAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG4nCisgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcxLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgJworICAgICAgICAgJyJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICcKKyAgICAgICAgICciX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsICcKKyAgICAgICAgICdhbHdheXMgYmVcbicKKyAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byAnCisgICAgICAgICAndGhlXG4nCisgICAgICAgICAnICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yICcKKyAgICAgICAgICdvY2N1cnJpbmdcbicKKyAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbicKKyAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4nCisgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbicKKyAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgJworICAgICAgICAgJ3RoZVxuJworICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbicKKyAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gJworICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJywKKyAneWllbGQnOiAnXG4nCisgICAgICAgICAgJ1RoZSAieWllbGQiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSAqeWllbGRcbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgJworICAgICAgICAgICdwYXJlbnRoZXNlc1xuJworICAgICAgICAgICd0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXF1aXJlZCBpbiB0aGUgZXF1aXZhbGVudCB5aWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAnc3RhdGVtZW50LiBGb3IgZXhhbXBsZSwgdGhlIHlpZWxkIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkIDxleHByPlxuJworICAgICAgICAgICcgICB5aWVsZCBmcm9tIDxleHByPlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgKHlpZWxkIDxleHByPilcbicKKyAgICAgICAgICAnICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnWWllbGQgZXhwcmVzc2lvbnMgYW5kIHN0YXRlbWVudHMgYXJlIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGFcbicKKyAgICAgICAgICAnKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSAnCisgICAgICAgICAgJ2dlbmVyYXRvclxuJworICAgICAgICAgICdmdW5jdGlvbi4gIFVzaW5nIHlpZWxkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvICcKKyAgICAgICAgICAnY2F1c2VcbicKKyAgICAgICAgICAndGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgJworICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3IgZnVsbCBkZXRhaWxzIG9mICJ5aWVsZCIgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9xdWV1ZS5weSBiL0xpYi9xdWV1ZS5weQppbmRleCAzY2VlMzZiLi41NzI0MjVlIDEwMDY0NAotLS0gYS9MaWIvcXVldWUucHkKKysrIGIvTGliL3F1ZXVlLnB5CkBAIC02LDEwICs2LDcgQEAKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gaGVhcHEgaW1wb3J0IGhlYXBwdXNoLCBoZWFwcG9wCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogCiBfX2FsbF9fID0gWydFbXB0eScsICdGdWxsJywgJ1F1ZXVlJywgJ1ByaW9yaXR5UXVldWUnLCAnTGlmb1F1ZXVlJ10KIApkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggNDY0MjkyOC4uMWY1YmU0NSAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC02ODcsNyArNjg3LDcgQEAKICAgICBwcmludChyb3VuZCh0MS10MCwgMyksICdzZWMsJywgZW5kPScgJykKICAgICBhdmcgPSB0b3RhbC9uCiAgICAgc3RkZGV2ID0gX3NxcnQoc3FzdW0vbiAtIGF2ZyphdmcpCi0gICAgcHJpbnQoJ2F2ZyAlZywgc3RkZGV2ICVnLCBtaW4gJWcsIG1heCAlZycgJSBcCisgICAgcHJpbnQoJ2F2ZyAlZywgc3RkZGV2ICVnLCBtaW4gJWcsIG1heCAlZ1xuJyAlIFwKICAgICAgICAgICAgICAgKGF2Zywgc3RkZGV2LCBzbWFsbGVzdCwgbGFyZ2VzdCkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3JlLnB5IGIvTGliL3JlLnB5CmluZGV4IDE5OWFmZWUuLmRkZTg5MDEgMTAwNjQ0Ci0tLSBhL0xpYi9yZS5weQorKysgYi9MaWIvcmUucHkKQEAgLTEyOCwxMCArMTI4LDEzIEBACiAgICAgX2xvY2FsZSA9IE5vbmUKIAogIyBwdWJsaWMgc3ltYm9scwotX19hbGxfXyA9IFsgIm1hdGNoIiwgImZ1bGxtYXRjaCIsICJzZWFyY2giLCAic3ViIiwgInN1Ym4iLCAic3BsaXQiLCAiZmluZGFsbCIsCi0gICAgImNvbXBpbGUiLCAicHVyZ2UiLCAidGVtcGxhdGUiLCAiZXNjYXBlIiwgIkEiLCAiSSIsICJMIiwgIk0iLCAiUyIsICJYIiwKLSAgICAiVSIsICJBU0NJSSIsICJJR05PUkVDQVNFIiwgIkxPQ0FMRSIsICJNVUxUSUxJTkUiLCAiRE9UQUxMIiwgIlZFUkJPU0UiLAotICAgICJVTklDT0RFIiwgImVycm9yIiBdCitfX2FsbF9fID0gWworICAgICJtYXRjaCIsICJmdWxsbWF0Y2giLCAic2VhcmNoIiwgInN1YiIsICJzdWJuIiwgInNwbGl0IiwKKyAgICAiZmluZGFsbCIsICJmaW5kaXRlciIsICJjb21waWxlIiwgInB1cmdlIiwgInRlbXBsYXRlIiwgImVzY2FwZSIsCisgICAgImVycm9yIiwgIkEiLCAiSSIsICJMIiwgIk0iLCAiUyIsICJYIiwgIlUiLAorICAgICJBU0NJSSIsICJJR05PUkVDQVNFIiwgIkxPQ0FMRSIsICJNVUxUSUxJTkUiLCAiRE9UQUxMIiwgIlZFUkJPU0UiLAorICAgICJVTklDT0RFIiwKK10KIAogX192ZXJzaW9uX18gPSAiMi4yLjEiCiAKQEAgLTIwOSwxNCArMjEyLDEyIEBACiAgICAgRW1wdHkgbWF0Y2hlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4iIiIKICAgICByZXR1cm4gX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpLmZpbmRhbGwoc3RyaW5nKQogCi1pZiBzeXMuaGV4dmVyc2lvbiA+PSAweDAyMDIwMDAwOgotICAgIF9fYWxsX18uYXBwZW5kKCJmaW5kaXRlciIpCi0gICAgZGVmIGZpbmRpdGVyKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCk6Ci0gICAgICAgICIiIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBpbiB0aGUKLSAgICAgICAgc3RyaW5nLiAgRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGEgbWF0Y2ggb2JqZWN0LgorZGVmIGZpbmRpdGVyKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCk6CisgICAgIiIiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIGluIHRoZQorICAgIHN0cmluZy4gIEZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4KIAotICAgICAgICBFbXB0eSBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LiIiIgotICAgICAgICByZXR1cm4gX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpLmZpbmRpdGVyKHN0cmluZykKKyAgICBFbXB0eSBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LiIiIgorICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuZmluZGl0ZXIoc3RyaW5nKQogCiBkZWYgY29tcGlsZShwYXR0ZXJuLCBmbGFncz0wKToKICAgICAiQ29tcGlsZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuLCByZXR1cm5pbmcgYSBwYXR0ZXJuIG9iamVjdC4iCkBAIC0yNzYsMjMgKzI3NywyMSBAQAogX01BWENBQ0hFID0gNTEyCiBkZWYgX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcGF0dGVybgotICAgIGJ5cGFzc19jYWNoZSA9IGZsYWdzICYgREVCVUcKLSAgICBpZiBub3QgYnlwYXNzX2NhY2hlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwLCBsb2MgPSBfY2FjaGVbdHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3NdCi0gICAgICAgICAgICBpZiBsb2MgaXMgTm9uZSBvciBsb2MgPT0gX2xvY2FsZS5zZXRsb2NhbGUoX2xvY2FsZS5MQ19DVFlQRSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHAKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcworICAgIHRyeToKKyAgICAgICAgcCwgbG9jID0gX2NhY2hlW3R5cGUocGF0dGVybiksIHBhdHRlcm4sIGZsYWdzXQorICAgICAgICBpZiBsb2MgaXMgTm9uZSBvciBsb2MgPT0gX2xvY2FsZS5zZXRsb2NhbGUoX2xvY2FsZS5MQ19DVFlQRSk6CisgICAgICAgICAgICByZXR1cm4gcAorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcwogICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgX3BhdHRlcm5fdHlwZSk6CiAgICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAiQ2Fubm90IHByb2Nlc3MgZmxhZ3MgYXJndW1lbnQgd2l0aCBhIGNvbXBpbGVkIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgICJjYW5ub3QgcHJvY2VzcyBmbGFncyBhcmd1bWVudCB3aXRoIGEgY29tcGlsZWQgcGF0dGVybiIpCiAgICAgICAgIHJldHVybiBwYXR0ZXJuCiAgICAgaWYgbm90IHNyZV9jb21waWxlLmlzc3RyaW5nKHBhdHRlcm4pOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgc3RyaW5nIG9yIGNvbXBpbGVkIHBhdHRlcm4iKQogICAgIHAgPSBzcmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4sIGZsYWdzKQotICAgIGlmIG5vdCBieXBhc3NfY2FjaGU6CisgICAgaWYgbm90IChmbGFncyAmIERFQlVHKToKICAgICAgICAgaWYgbGVuKF9jYWNoZSkgPj0gX01BWENBQ0hFOgogICAgICAgICAgICAgX2NhY2hlLmNsZWFyKCkKICAgICAgICAgaWYgcC5mbGFncyAmIExPQ0FMRToKQEAgLTM1MiwxMCArMzUxLDExIEBACiAgICAgICAgIHMgPSBzcmVfcGFyc2UuUGF0dGVybigpCiAgICAgICAgIHMuZmxhZ3MgPSBmbGFncwogICAgICAgICBmb3IgcGhyYXNlLCBhY3Rpb24gaW4gbGV4aWNvbjoKKyAgICAgICAgICAgIGdpZCA9IHMub3Blbmdyb3VwKCkKICAgICAgICAgICAgIHAuYXBwZW5kKHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsKLSAgICAgICAgICAgICAgICAoU1VCUEFUVEVSTiwgKGxlbihwKSsxLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKKyAgICAgICAgICAgICAgICAoU1VCUEFUVEVSTiwgKGdpZCwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCiAgICAgICAgICAgICAgICAgXSkpCi0gICAgICAgIHMuZ3JvdXBzID0gbGVuKHApKzEKKyAgICAgICAgICAgIHMuY2xvc2Vncm91cChnaWQsIHBbLTFdKQogICAgICAgICBwID0gc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWyhCUkFOQ0gsIChOb25lLCBwKSldKQogICAgICAgICBzZWxmLnNjYW5uZXIgPSBzcmVfY29tcGlsZS5jb21waWxlKHApCiAgICAgZGVmIHNjYW4oc2VsZiwgc3RyaW5nKToKQEAgLTM2Myw3ICszNjMsNyBAQAogICAgICAgICBhcHBlbmQgPSByZXN1bHQuYXBwZW5kCiAgICAgICAgIG1hdGNoID0gc2VsZi5zY2FubmVyLnNjYW5uZXIoc3RyaW5nKS5tYXRjaAogICAgICAgICBpID0gMAotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgbSA9IG1hdGNoKCkKICAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgIGJyZWFrCmRpZmYgLS1naXQgYS9MaWIvcmVwcmxpYi5weSBiL0xpYi9yZXBybGliLnB5CmluZGV4IGY4MDMzNjAuLmVjYmQyY2MgMTAwNjQ0Ci0tLSBhL0xpYi9yZXBybGliLnB5CisrKyBiL0xpYi9yZXBybGliLnB5CkBAIC04MywxNiArODMsMjIgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICdbJywgJ10nLCBzZWxmLm1heGxpc3QpCiAKICAgICBkZWYgcmVwcl9hcnJheShzZWxmLCB4LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCB4OgorICAgICAgICAgICAgcmV0dXJuICJhcnJheSgnJXMnKSIgJSB4LnR5cGVjb2RlCiAgICAgICAgIGhlYWRlciA9ICJhcnJheSgnJXMnLCBbIiAlIHgudHlwZWNvZGUKICAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsIGhlYWRlciwgJ10pJywgc2VsZi5tYXhhcnJheSkKIAogICAgIGRlZiByZXByX3NldChzZWxmLCB4LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCB4OgorICAgICAgICAgICAgcmV0dXJuICdzZXQoKScKICAgICAgICAgeCA9IF9wb3NzaWJseV9zb3J0ZWQoeCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICdzZXQoWycsICddKScsIHNlbGYubWF4c2V0KQorICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgJ3snLCAnfScsIHNlbGYubWF4c2V0KQogCiAgICAgZGVmIHJlcHJfZnJvemVuc2V0KHNlbGYsIHgsIGxldmVsKToKKyAgICAgICAgaWYgbm90IHg6CisgICAgICAgICAgICByZXR1cm4gJ2Zyb3plbnNldCgpJwogICAgICAgICB4ID0gX3Bvc3NpYmx5X3NvcnRlZCh4KQotICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgJ2Zyb3plbnNldChbJywgJ10pJywKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcHJfaXRlcmFibGUoeCwgbGV2ZWwsICdmcm96ZW5zZXQoeycsICd9KScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF4ZnJvemVuc2V0KQogCiAgICAgZGVmIHJlcHJfZGVxdWUoc2VsZiwgeCwgbGV2ZWwpOgpAQCAtMTM2LDcgKzE0Miw3IEBACiAgICAgICAgICAgICAjIEJ1Z3MgaW4geC5fX3JlcHJfXygpIGNhbiBjYXVzZSBhcmJpdHJhcnkKICAgICAgICAgICAgICMgZXhjZXB0aW9ucyAtLSB0aGVuIG1ha2UgdXAgc29tZXRoaW5nCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gJzwlcyBpbnN0YW5jZSBhdCAleD4nICUgKHguX19jbGFzc19fLl9fbmFtZV9fLCBpZCh4KSkKKyAgICAgICAgICAgIHJldHVybiAnPCVzIGluc3RhbmNlIGF0ICUjeD4nICUgKHguX19jbGFzc19fLl9fbmFtZV9fLCBpZCh4KSkKICAgICAgICAgaWYgbGVuKHMpID4gc2VsZi5tYXhvdGhlcjoKICAgICAgICAgICAgIGkgPSBtYXgoMCwgKHNlbGYubWF4b3RoZXItMykvLzIpCiAgICAgICAgICAgICBqID0gbWF4KDAsIHNlbGYubWF4b3RoZXItMy1pKQpkaWZmIC0tZ2l0IGEvTGliL3J1bnB5LnB5IGIvTGliL3J1bnB5LnB5CmluZGV4IDBiYjU3ZDcuLjFjNTcyOWQgMTAwNjQ0Ci0tLSBhL0xpYi9ydW5weS5weQorKysgYi9MaWIvcnVucHkucHkKQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgc2VsZi52YWx1ZSA9IHNlbGYuX3NlbnRpbmVsCiAgICAgICAgIHN5cy5hcmd2WzBdID0gc2VsZi5fc2F2ZWRfdmFsdWUKIAotIyBUT0RPOiBSZXBsYWNlIHRoZXNlIGhlbHBlcnMgd2l0aCBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMKKyMgVE9ETzogUmVwbGFjZSB0aGVzZSBoZWxwZXJzIHdpdGggaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwgZnVuY3Rpb25zLgogZGVmIF9ydW5fY29kZShjb2RlLCBydW5fZ2xvYmFscywgaW5pdF9nbG9iYWxzPU5vbmUsCiAgICAgICAgICAgICAgIG1vZF9uYW1lPU5vbmUsIG1vZF9zcGVjPU5vbmUsCiAgICAgICAgICAgICAgIHBrZ19uYW1lPU5vbmUsIHNjcmlwdF9uYW1lPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IDJlNmIwMGEuLmI0NzY0OGQgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTM1LDE2ICszNSwxMiBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiBfX2FsbF9fID0gWyJzY2hlZHVsZXIiXQogCiBjbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzJykpOgogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQotICAgIGRlZiBfX25lX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSAhPSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2xlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2d0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+ICAoby50aW1lLCBvLnByaW9yaXR5KQpkaWZmIC0tZ2l0IGEvTGliL3NlbGVjdG9ycy5weSBiL0xpYi9zZWxlY3RvcnMucHkKaW5kZXggN2I2ZGEyOS4uNmQ1NjljMyAxMDA2NDQKLS0tIGEvTGliL3NlbGVjdG9ycy5weQorKysgYi9MaWIvc2VsZWN0b3JzLnB5CkBAIC0xNzQsOSArMTc0LDkgQEAKICAgICAgICAgU2VsZWN0b3JLZXkgZm9yIHRoaXMgZmlsZSBvYmplY3QKICAgICAgICAgIiIiCiAgICAgICAgIG1hcHBpbmcgPSBzZWxmLmdldF9tYXAoKQorICAgICAgICBpZiBtYXBwaW5nIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1NlbGVjdG9yIGlzIGNsb3NlZCcpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG1hcHBpbmcgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcgogICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmdbZmlsZW9ial0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoInshcn0gaXMgbm90IHJlZ2lzdGVyZWQiLmZvcm1hdChmaWxlb2JqKSkgZnJvbSBOb25lCkBAIC00NDUsMTAgKzQ0NSw2NiBAQAogICAgICAgICAgICAgcmV0dXJuIHJlYWR5CiAKICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fZXBvbGwuY2xvc2UoKQorICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisKKworaWYgaGFzYXR0cihzZWxlY3QsICdkZXZwb2xsJyk6CisKKyAgICBjbGFzcyBEZXZwb2xsU2VsZWN0b3IoX0Jhc2VTZWxlY3RvckltcGwpOgorICAgICAgICAiIiJTb2xhcmlzIC9kZXYvcG9sbCBzZWxlY3Rvci4iIiIKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgICAgIHNlbGYuX2RldnBvbGwgPSBzZWxlY3QuZGV2cG9sbCgpCisKKyAgICAgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9kZXZwb2xsLmZpbGVubygpCisKKyAgICAgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIGZpbGVvYmosIGV2ZW50cywgZGF0YT1Ob25lKToKKyAgICAgICAgICAgIGtleSA9IHN1cGVyKCkucmVnaXN0ZXIoZmlsZW9iaiwgZXZlbnRzLCBkYXRhKQorICAgICAgICAgICAgcG9sbF9ldmVudHMgPSAwCisgICAgICAgICAgICBpZiBldmVudHMgJiBFVkVOVF9SRUFEOgorICAgICAgICAgICAgICAgIHBvbGxfZXZlbnRzIHw9IHNlbGVjdC5QT0xMSU4KKyAgICAgICAgICAgIGlmIGV2ZW50cyAmIEVWRU5UX1dSSVRFOgorICAgICAgICAgICAgICAgIHBvbGxfZXZlbnRzIHw9IHNlbGVjdC5QT0xMT1VUCisgICAgICAgICAgICBzZWxmLl9kZXZwb2xsLnJlZ2lzdGVyKGtleS5mZCwgcG9sbF9ldmVudHMpCisgICAgICAgICAgICByZXR1cm4ga2V5CisKKyAgICAgICAgZGVmIHVucmVnaXN0ZXIoc2VsZiwgZmlsZW9iaik6CisgICAgICAgICAgICBrZXkgPSBzdXBlcigpLnVucmVnaXN0ZXIoZmlsZW9iaikKKyAgICAgICAgICAgIHNlbGYuX2RldnBvbGwudW5yZWdpc3RlcihrZXkuZmQpCisgICAgICAgICAgICByZXR1cm4ga2V5CisKKyAgICAgICAgZGVmIHNlbGVjdChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgICAgICAgICBlbGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIGRldnBvbGwoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsIHJvdW5kIGF3YXkgZnJvbQorICAgICAgICAgICAgICAgICMgemVybyB0byB3YWl0ICphdCBsZWFzdCogdGltZW91dCBzZWNvbmRzLgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBtYXRoLmNlaWwodGltZW91dCAqIDFlMykKKyAgICAgICAgICAgIHJlYWR5ID0gW10KICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9lcG9sbC5jbG9zZSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorICAgICAgICAgICAgICAgIGZkX2V2ZW50X2xpc3QgPSBzZWxmLl9kZXZwb2xsLnBvbGwodGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiByZWFkeQorICAgICAgICAgICAgZm9yIGZkLCBldmVudCBpbiBmZF9ldmVudF9saXN0OgorICAgICAgICAgICAgICAgIGV2ZW50cyA9IDAKKyAgICAgICAgICAgICAgICBpZiBldmVudCAmIH5zZWxlY3QuUE9MTElOOgorICAgICAgICAgICAgICAgICAgICBldmVudHMgfD0gRVZFTlRfV1JJVEUKKyAgICAgICAgICAgICAgICBpZiBldmVudCAmIH5zZWxlY3QuUE9MTE9VVDoKKyAgICAgICAgICAgICAgICAgICAgZXZlbnRzIHw9IEVWRU5UX1JFQUQKKworICAgICAgICAgICAgICAgIGtleSA9IHNlbGYuX2tleV9mcm9tX2ZkKGZkKQorICAgICAgICAgICAgICAgIGlmIGtleToKKyAgICAgICAgICAgICAgICAgICAgcmVhZHkuYXBwZW5kKChrZXksIGV2ZW50cyAmIGtleS5ldmVudHMpKQorICAgICAgICAgICAgcmV0dXJuIHJlYWR5CisKKyAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fZGV2cG9sbC5jbG9zZSgpCisgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKIAogCiBpZiBoYXNhdHRyKHNlbGVjdCwgJ2txdWV1ZScpOgpAQCAtNTE5LDE4ICs1NzUsMTkgQEAKICAgICAgICAgICAgIHJldHVybiByZWFkeQogCiAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9rcXVldWUuY2xvc2UoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2txdWV1ZS5jbG9zZSgpCisgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKIAogCi0jIENob29zZSB0aGUgYmVzdCBpbXBsZW1lbnRhdGlvbjogcm91Z2hseSwgZXBvbGx8a3F1ZXVlID4gcG9sbCA+IHNlbGVjdC4KKyMgQ2hvb3NlIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uLCByb3VnaGx5OgorIyAgICBlcG9sbHxrcXVldWV8ZGV2cG9sbCA+IHBvbGwgPiBzZWxlY3QuCiAjIHNlbGVjdCgpIGFsc28gY2FuJ3QgYWNjZXB0IGEgRkQgPiBGRF9TRVRTSVpFICh1c3VhbGx5IGFyb3VuZCAxMDI0KQogaWYgJ0txdWV1ZVNlbGVjdG9yJyBpbiBnbG9iYWxzKCk6CiAgICAgRGVmYXVsdFNlbGVjdG9yID0gS3F1ZXVlU2VsZWN0b3IKIGVsaWYgJ0Vwb2xsU2VsZWN0b3InIGluIGdsb2JhbHMoKToKICAgICBEZWZhdWx0U2VsZWN0b3IgPSBFcG9sbFNlbGVjdG9yCitlbGlmICdEZXZwb2xsU2VsZWN0b3InIGluIGdsb2JhbHMoKToKKyAgICBEZWZhdWx0U2VsZWN0b3IgPSBEZXZwb2xsU2VsZWN0b3IKIGVsaWYgJ1BvbGxTZWxlY3RvcicgaW4gZ2xvYmFscygpOgogICAgIERlZmF1bHRTZWxlY3RvciA9IFBvbGxTZWxlY3RvcgogZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9zaGxleC5weSBiL0xpYi9zaGxleC5weQppbmRleCA0NjcyNTUzLi5mMDgzOTE4IDEwMDY0NAotLS0gYS9MaWIvc2hsZXgucHkKKysrIGIvTGliL3NobGV4LnB5CkBAIC00OSw5ICs0OSw2IEBACiAgICAgICAgIHNlbGYudG9rZW4gPSAnJwogICAgICAgICBzZWxmLmZpbGVzdGFjayA9IGRlcXVlKCkKICAgICAgICAgc2VsZi5zb3VyY2UgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICBwcmludCgnc2hsZXg6IHJlYWRpbmcgZnJvbSAlcywgbGluZSAlZCcgXAotICAgICAgICAgICAgICAgICAgJSAoc2VsZi5pbnN0cmVhbSwgc2VsZi5saW5lbm8pKQogCiAgICAgZGVmIHB1c2hfdG9rZW4oc2VsZiwgdG9rKToKICAgICAgICAgIlB1c2ggYSB0b2tlbiBvbnRvIHRoZSBzdGFjayBwb3BwZWQgYnkgdGhlIGdldF90b2tlbiBtZXRob2QiCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCBkNzY3YTBjLi4zZjRiNmJmIDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzdGF0Ci1mcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgKIGltcG9ydCBmbm1hdGNoCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBlcnJubwpAQCAtMjEsNiArMjAsMTMgQEAKICAgICBfQloyX1NVUFBPUlRFRCA9IEZhbHNlCiAKIHRyeToKKyAgICBpbXBvcnQgbHptYQorICAgIGRlbCBsem1hCisgICAgX0xaTUFfU1VQUE9SVEVEID0gVHJ1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9MWk1BX1NVUFBPUlRFRCA9IEZhbHNlCisKK3RyeToKICAgICBmcm9tIHB3ZCBpbXBvcnQgZ2V0cHduYW0KIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBnZXRwd25hbSA9IE5vbmUKQEAgLTQ5MSw3ICs0OTcsNyBAQAogICAgIHNlcCA9IG9zLnBhdGguc2VwICsgKG9zLnBhdGguYWx0c2VwIG9yICcnKQogICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgucnN0cmlwKHNlcCkpCiAKLWRlZiBtb3ZlKHNyYywgZHN0KToKK2RlZiBtb3ZlKHNyYywgZHN0LCBjb3B5X2Z1bmN0aW9uPWNvcHkyKToKICAgICAiIiJSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBpcwogICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLiBSZXR1cm4gdGhlIGZpbGUgb3IgZGlyZWN0b3J5J3MKICAgICBkZXN0aW5hdGlvbi4KQEAgLTUwOCw2ICs1MTQsMTEgQEAKICAgICByZWNyZWF0ZWQgdW5kZXIgdGhlIG5ldyBuYW1lIGlmIG9zLnJlbmFtZSgpIGZhaWxzIGJlY2F1c2Ugb2YgY3Jvc3MKICAgICBmaWxlc3lzdGVtIHJlbmFtZXMuCiAKKyAgICBUaGUgb3B0aW9uYWwgYGNvcHlfZnVuY3Rpb25gIGFyZ3VtZW50IGlzIGEgY2FsbGFibGUgdGhhdCB3aWxsIGJlIHVzZWQKKyAgICB0byBjb3B5IHRoZSBzb3VyY2Ugb3IgaXQgd2lsbCBiZSBkZWxlZ2F0ZWQgdG8gYGNvcHl0cmVlYC4KKyAgICBCeSBkZWZhdWx0LCBjb3B5MigpIGlzIHVzZWQsIGJ1dCBhbnkgZnVuY3Rpb24gdGhhdCBzdXBwb3J0cyB0aGUgc2FtZQorICAgIHNpZ25hdHVyZSAobGlrZSBjb3B5KCkpIGNhbiBiZSB1c2VkLgorCiAgICAgQSBsb3QgbW9yZSBjb3VsZCBiZSBkb25lIGhlcmUuLi4gIEEgbG9vayBhdCBhIG12LmMgc2hvd3MgYSBsb3Qgb2YKICAgICB0aGUgaXNzdWVzIHRoaXMgaW1wbGVtZW50YXRpb24gZ2xvc3NlcyBvdmVyLgogCkBAIC01MzIsMTcgKzU0MywxOSBAQAogICAgICAgICAgICAgb3MudW5saW5rKHNyYykKICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CiAgICAgICAgICAgICBpZiBfZGVzdGluc3JjKHNyYywgZHN0KToKLSAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiAnJXMnLiIgJSAoc3JjLCBkc3QpKQotICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICclcycuIiAlIChzcmMsIGRzdCkpCisgICAgICAgICAgICBjb3B5dHJlZShzcmMsIHJlYWxfZHN0LCBjb3B5X2Z1bmN0aW9uPWNvcHlfZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1UcnVlKQogICAgICAgICAgICAgcm10cmVlKHNyYykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvcHkyKHNyYywgcmVhbF9kc3QpCisgICAgICAgICAgICBjb3B5X2Z1bmN0aW9uKHNyYywgcmVhbF9kc3QpCiAgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQogICAgIHJldHVybiByZWFsX2RzdAogCiBkZWYgX2Rlc3RpbnNyYyhzcmMsIGRzdCk6Ci0gICAgc3JjID0gYWJzcGF0aChzcmMpCi0gICAgZHN0ID0gYWJzcGF0aChkc3QpCisgICAgc3JjID0gb3MucGF0aC5hYnNwYXRoKHNyYykKKyAgICBkc3QgPSBvcy5wYXRoLmFic3BhdGgoZHN0KQogICAgIGlmIG5vdCBzcmMuZW5kc3dpdGgob3MucGF0aC5zZXApOgogICAgICAgICBzcmMgKz0gb3MucGF0aC5zZXAKICAgICBpZiBub3QgZHN0LmVuZHN3aXRoKG9zLnBhdGguc2VwKToKQEAgLTU3OCwxNCArNTkxLDE0IEBACiAgICAgIiIiQ3JlYXRlIGEgKHBvc3NpYmx5IGNvbXByZXNzZWQpIHRhciBmaWxlIGZyb20gYWxsIHRoZSBmaWxlcyB1bmRlcgogICAgICdiYXNlX2RpcicuCiAKLSAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJiemlwMiIsIG9yIE5vbmUuCisgICAgJ2NvbXByZXNzJyBtdXN0IGJlICJnemlwIiAodGhlIGRlZmF1bHQpLCAiYnppcDIiLCAieHoiLCBvciBOb25lLgogCiAgICAgJ293bmVyJyBhbmQgJ2dyb3VwJyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW4gb3duZXIgYW5kIGEgZ3JvdXAgZm9yIHRoZQogICAgIGFyY2hpdmUgdGhhdCBpcyBiZWluZyBidWlsdC4gSWYgbm90IHByb3ZpZGVkLCB0aGUgY3VycmVudCBvd25lciBhbmQgZ3JvdXAKICAgICB3aWxsIGJlIHVzZWQuCiAKICAgICBUaGUgb3V0cHV0IHRhciBmaWxlIHdpbGwgYmUgbmFtZWQgJ2Jhc2VfbmFtZScgKyAgIi50YXIiLCBwb3NzaWJseSBwbHVzCi0gICAgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoIi5neiIsIG9yICIuYnoyIikuCisgICAgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoIi5neiIsICIuYnoyIiwgb3IgIi54eiIpLgogCiAgICAgUmV0dXJucyB0aGUgb3V0cHV0IGZpbGVuYW1lLgogICAgICIiIgpAQCAtNTk2LDYgKzYwOSwxMCBAQAogICAgICAgICB0YXJfY29tcHJlc3Npb25bJ2J6aXAyJ10gPSAnYnoyJwogICAgICAgICBjb21wcmVzc19leHRbJ2J6aXAyJ10gPSAnLmJ6MicKIAorICAgIGlmIF9MWk1BX1NVUFBPUlRFRDoKKyAgICAgICAgdGFyX2NvbXByZXNzaW9uWyd4eiddID0gJ3h6JworICAgICAgICBjb21wcmVzc19leHRbJ3h6J10gPSAnLnh6JworCiAgICAgIyBmbGFncyBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSwgZWFjaCBlbGVtZW50IG9mIGxpc3Qgd2lsbCBiZSBhbiBhcmd1bWVudAogICAgIGlmIGNvbXByZXNzIGlzIG5vdCBOb25lIGFuZCBjb21wcmVzcyBub3QgaW4gY29tcHJlc3NfZXh0OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiYWQgdmFsdWUgZm9yICdjb21wcmVzcycsIG9yIGNvbXByZXNzaW9uIGZvcm1hdCBub3QgIgpAQCAtNjM1LDIzICs2NTIsNiBAQAogCiAgICAgcmV0dXJuIGFyY2hpdmVfbmFtZQogCi1kZWYgX2NhbGxfZXh0ZXJuYWxfemlwKGJhc2VfZGlyLCB6aXBfZmlsZW5hbWUsIHZlcmJvc2U9RmFsc2UsIGRyeV9ydW49RmFsc2UpOgotICAgICMgWFhYIHNlZSBpZiB3ZSB3YW50IHRvIGtlZXAgYW4gZXh0ZXJuYWwgY2FsbCBoZXJlCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgemlwb3B0aW9ucyA9ICItciIKLSAgICBlbHNlOgotICAgICAgICB6aXBvcHRpb25zID0gIi1ycSIKLSAgICBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgotICAgIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgotICAgIHRyeToKLSAgICAgICAgc3Bhd24oWyJ6aXAiLCB6aXBvcHRpb25zLCB6aXBfZmlsZW5hbWUsIGJhc2VfZGlyXSwgZHJ5X3J1bj1kcnlfcnVuKQotICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3I6Ci0gICAgICAgICMgWFhYIHJlYWxseSBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiAiY291bGRuJ3QgZmluZAotICAgICAgICAjIGV4dGVybmFsICd6aXAnIGNvbW1hbmQiIGFuZCAiemlwIGZhaWxlZCIuCi0gICAgICAgIHJhaXNlIEV4ZWNFcnJvcigidW5hYmxlIHRvIGNyZWF0ZSB6aXAgZmlsZSAnJXMnOiAiCi0gICAgICAgICAgICAiY291bGQgbmVpdGhlciBpbXBvcnQgdGhlICd6aXBmaWxlJyBtb2R1bGUgbm9yICIKLSAgICAgICAgICAgICJmaW5kIGEgc3RhbmRhbG9uZSB6aXAgdXRpbGl0eSIpICUgemlwX2ZpbGVuYW1lCi0KIGRlZiBfbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgYmFzZV9kaXIsIHZlcmJvc2U9MCwgZHJ5X3J1bj0wLCBsb2dnZXI9Tm9uZSk6CiAgICAgIiIiQ3JlYXRlIGEgemlwIGZpbGUgZnJvbSBhbGwgdGhlIGZpbGVzIHVuZGVyICdiYXNlX2RpcicuCiAKQEAgLTY2MSw2ICs2NjEsOCBAQAogICAgIGF2YWlsYWJsZSwgcmFpc2VzIEV4ZWNFcnJvci4gIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG91dHB1dCB6aXAKICAgICBmaWxlLgogICAgICIiIgorICAgIGltcG9ydCB6aXBmaWxlCisKICAgICB6aXBfZmlsZW5hbWUgPSBiYXNlX25hbWUgKyAiLnppcCIKICAgICBhcmNoaXZlX2RpciA9IG9zLnBhdGguZGlybmFtZShiYXNlX25hbWUpCiAKQEAgLTY3MCwzOSArNjcyLDI5IEBACiAgICAgICAgIGlmIG5vdCBkcnlfcnVuOgogICAgICAgICAgICAgb3MubWFrZWRpcnMoYXJjaGl2ZV9kaXIpCiAKLSAgICAjIElmIHppcGZpbGUgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUsIHRyeSBzcGF3bmluZyBhbiBleHRlcm5hbCAnemlwJwotICAgICMgY29tbWFuZC4KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB6aXBmaWxlCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICB6aXBmaWxlID0gTm9uZQorICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgbG9nZ2VyLmluZm8oImNyZWF0aW5nICclcycgYW5kIGFkZGluZyAnJXMnIHRvIGl0IiwKKyAgICAgICAgICAgICAgICAgICAgemlwX2ZpbGVuYW1lLCBiYXNlX2RpcikKIAotICAgIGlmIHppcGZpbGUgaXMgTm9uZToKLSAgICAgICAgX2NhbGxfZXh0ZXJuYWxfemlwKGJhc2VfZGlyLCB6aXBfZmlsZW5hbWUsIHZlcmJvc2UsIGRyeV9ydW4pCi0gICAgZWxzZToKLSAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgbG9nZ2VyLmluZm8oImNyZWF0aW5nICclcycgYW5kIGFkZGluZyAnJXMnIHRvIGl0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHppcF9maWxlbmFtZSwgYmFzZV9kaXIpCi0KLSAgICAgICAgaWYgbm90IGRyeV9ydW46Ci0gICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh6aXBfZmlsZW5hbWUsICJ3IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uPXppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6ZjoKLSAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChiYXNlX2RpcikKLSAgICAgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCBwYXRoKQotICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKLSAgICAgICAgICAgICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGJhc2VfZGlyKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGRpcm5hbWVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKSkKKyAgICBpZiBub3QgZHJ5X3J1bjoKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoemlwX2ZpbGVuYW1lLCAidyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzaW9uPXppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6ZjoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGJhc2VfZGlyKQorICAgICAgICAgICAgemYud3JpdGUocGF0aCwgcGF0aCkKKyAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQorICAgICAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2FsayhiYXNlX2Rpcik6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGRpcm5hbWVzKToKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQorICAgICAgICAgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgemYud3JpdGUocGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCiAKICAgICByZXR1cm4gemlwX2ZpbGVuYW1lCiAKQEAgLTcxNiw2ICs3MDgsMTAgQEAKICAgICBfQVJDSElWRV9GT1JNQVRTWydienRhciddID0gKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2J6aXAyJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnppcDInZWQgdGFyLWZpbGUiKQogCitpZiBfTFpNQV9TVVBQT1JURUQ6CisgICAgX0FSQ0hJVkVfRk9STUFUU1sneHp0YXInXSA9IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICd4eicpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInh6J2VkIHRhci1maWxlIikKKwogZGVmIGdldF9hcmNoaXZlX2Zvcm1hdHMoKToKICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cyBmb3IgYXJjaGl2aW5nIGFuZCB1bmFyY2hpdmluZy4KIApAQCAtOTA0LDcgKzkwMCw3IEBACiAgICAgICAgIHppcC5jbG9zZSgpCiAKIGRlZiBfdW5wYWNrX3RhcmZpbGUoZmlsZW5hbWUsIGV4dHJhY3RfZGlyKToKLSAgICAiIiJVbnBhY2sgdGFyL3Rhci5nei90YXIuYnoyIGBmaWxlbmFtZWAgdG8gYGV4dHJhY3RfZGlyYAorICAgICIiIlVucGFjayB0YXIvdGFyLmd6L3Rhci5iejIvdGFyLnh6IGBmaWxlbmFtZWAgdG8gYGV4dHJhY3RfZGlyYAogICAgICIiIgogICAgIHRyeToKICAgICAgICAgdGFyb2JqID0gdGFyZmlsZS5vcGVuKGZpbGVuYW1lKQpAQCAtOTIzLDkgKzkxOSwxMyBAQAogICAgIH0KIAogaWYgX0JaMl9TVVBQT1JURUQ6Ci0gICAgX1VOUEFDS19GT1JNQVRTWydienRhciddID0gKFsnLmJ6MiddLCBfdW5wYWNrX3RhcmZpbGUsIFtdLAorICAgIF9VTlBBQ0tfRk9STUFUU1snYnp0YXInXSA9IChbJy50YXIuYnoyJywgJy50YnoyJ10sIF91bnBhY2tfdGFyZmlsZSwgW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiemlwMidlZCB0YXItZmlsZSIpCiAKK2lmIF9MWk1BX1NVUFBPUlRFRDoKKyAgICBfVU5QQUNLX0ZPUk1BVFNbJ3h6dGFyJ10gPSAoWycudGFyLnh6JywgJy50eHonXSwgX3VucGFja190YXJmaWxlLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInh6J2VkIHRhci1maWxlIikKKwogZGVmIF9maW5kX3VucGFja19mb3JtYXQoZmlsZW5hbWUpOgogICAgIGZvciBuYW1lLCBpbmZvIGluIF9VTlBBQ0tfRk9STUFUUy5pdGVtcygpOgogICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIGluZm9bMF06CmRpZmYgLS1naXQgYS9MaWIvc2lnbmFsLnB5IGIvTGliL3NpZ25hbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzFkNzEyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3NpZ25hbC5weQpAQCAtMCwwICsxLDc5IEBACitpbXBvcnQgX3NpZ25hbAorZnJvbSBfc2lnbmFsIGltcG9ydCAqCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMgYXMgX3dyYXBzCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0gYXMgX0ludEVudW0KKworX2dsb2JhbHMgPSBnbG9iYWxzKCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICdTaWduYWxzJywgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBuYW1lOgorICAgICAgICAgICAgbmFtZS5pc3VwcGVyKCkKKyAgICAgICAgICAgIGFuZCAobmFtZS5zdGFydHN3aXRoKCdTSUcnKSBhbmQgbm90IG5hbWUuc3RhcnRzd2l0aCgnU0lHXycpKQorICAgICAgICAgICAgb3IgbmFtZS5zdGFydHN3aXRoKCdDVFJMXycpKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAgICAgJ0hhbmRsZXJzJywgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lIGluICgnU0lHX0RGTCcsICdTSUdfSUdOJykpCisKK2lmICdwdGhyZWFkX3NpZ21hc2snIGluIF9nbG9iYWxzOgorICAgIF9JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAgICAgJ1NpZ21hc2tzJywgX19uYW1lX18sCisgICAgICAgICAgICBsYW1iZGEgbmFtZTogbmFtZSBpbiAoJ1NJR19CTE9DSycsICdTSUdfVU5CTE9DSycsICdTSUdfU0VUTUFTSycpKQorCisKK2RlZiBfaW50X3RvX2VudW0odmFsdWUsIGVudW1fa2xhc3MpOgorICAgICIiIkNvbnZlcnQgYSBudW1lcmljIHZhbHVlIHRvIGFuIEludEVudW0gbWVtYmVyLgorICAgIElmIGl0J3Mgbm90IGEga25vd24gbWVtYmVyLCByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUgaXRzZWxmLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGVudW1fa2xhc3ModmFsdWUpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHJldHVybiB2YWx1ZQorCisKK2RlZiBfZW51bV90b19pbnQodmFsdWUpOgorICAgICIiIkNvbnZlcnQgYW4gSW50RW51bSBtZW1iZXIgdG8gYSBudW1lcmljIHZhbHVlLgorICAgIElmIGl0J3Mgbm90IGEgSW50RW51bSBtZW1iZXIgcmV0dXJuIHRoZSB2YWx1ZSBpdHNlbGYuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW50KHZhbHVlKQorICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKworQF93cmFwcyhfc2lnbmFsLnNpZ25hbCkKK2RlZiBzaWduYWwoc2lnbmFsbnVtLCBoYW5kbGVyKToKKyAgICBoYW5kbGVyID0gX3NpZ25hbC5zaWduYWwoX2VudW1fdG9faW50KHNpZ25hbG51bSksIF9lbnVtX3RvX2ludChoYW5kbGVyKSkKKyAgICByZXR1cm4gX2ludF90b19lbnVtKGhhbmRsZXIsIEhhbmRsZXJzKQorCisKK0Bfd3JhcHMoX3NpZ25hbC5nZXRzaWduYWwpCitkZWYgZ2V0c2lnbmFsKHNpZ25hbG51bSk6CisgICAgaGFuZGxlciA9IF9zaWduYWwuZ2V0c2lnbmFsKHNpZ25hbG51bSkKKyAgICByZXR1cm4gX2ludF90b19lbnVtKGhhbmRsZXIsIEhhbmRsZXJzKQorCisKK2lmICdwdGhyZWFkX3NpZ21hc2snIGluIF9nbG9iYWxzOgorICAgIEBfd3JhcHMoX3NpZ25hbC5wdGhyZWFkX3NpZ21hc2spCisgICAgZGVmIHB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spOgorICAgICAgICBzaWdzX3NldCA9IF9zaWduYWwucHRocmVhZF9zaWdtYXNrKGhvdywgbWFzaykKKyAgICAgICAgcmV0dXJuIHNldChfaW50X3RvX2VudW0oeCwgU2lnbmFscykgZm9yIHggaW4gc2lnc19zZXQpCisgICAgcHRocmVhZF9zaWdtYXNrLl9fZG9jX18gPSBfc2lnbmFsLnB0aHJlYWRfc2lnbWFzay5fX2RvY19fCisKKworaWYgJ3NpZ3BlbmRpbmcnIGluIF9nbG9iYWxzOgorICAgIEBfd3JhcHMoX3NpZ25hbC5zaWdwZW5kaW5nKQorICAgIGRlZiBzaWdwZW5kaW5nKCk6CisgICAgICAgIHNpZ3MgPSBfc2lnbmFsLnNpZ3BlbmRpbmcoKQorICAgICAgICByZXR1cm4gc2V0KF9pbnRfdG9fZW51bSh4LCBTaWduYWxzKSBmb3IgeCBpbiBzaWdzKQorCisKK2lmICdzaWd3YWl0JyBpbiBfZ2xvYmFsczoKKyAgICBAX3dyYXBzKF9zaWduYWwuc2lnd2FpdCkKKyAgICBkZWYgc2lnd2FpdChzaWdzZXQpOgorICAgICAgICByZXRzaWcgPSBfc2lnbmFsLnNpZ3dhaXQoc2lnc2V0KQorICAgICAgICByZXR1cm4gX2ludF90b19lbnVtKHJldHNpZywgU2lnbmFscykKKyAgICBzaWd3YWl0Ll9fZG9jX18gPSBfc2lnbmFsLnNpZ3dhaXQKKworZGVsIF9nbG9iYWxzLCBfd3JhcHMKZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKaW5kZXggYWQ1ZDEzNi4uNmY2NmMwNyAxMDA2NDQKLS0tIGEvTGliL3NpdGUucHkKKysrIGIvTGliL3NpdGUucHkKQEAgLTcsNyArNyw3IEBACiBUaGlzIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gIE9uCiBVbml4IChpbmNsdWRpbmcgTWFjIE9TWCksIGl0IHN0YXJ0cyB3aXRoIHN5cy5wcmVmaXggYW5kCiBzeXMuZXhlY19wcmVmaXggKGlmIGRpZmZlcmVudCkgYW5kIGFwcGVuZHMKLWxpYi9weXRob248dmVyc2lvbj4vc2l0ZS1wYWNrYWdlcyBhcyB3ZWxsIGFzIGxpYi9zaXRlLXB5dGhvbi4KK2xpYi9weXRob248dmVyc2lvbj4vc2l0ZS1wYWNrYWdlcy4KIE9uIG90aGVyIHBsYXRmb3JtcyAoc3VjaCBhcyBXaW5kb3dzKSwgaXQgdHJpZXMgZWFjaCBvZiB0aGUKIHByZWZpeGVzIGRpcmVjdGx5LCBhcyB3ZWxsIGFzIHdpdGggbGliL3NpdGUtcGFja2FnZXMgYXBwZW5kZWQuICBUaGUKIHJlc3VsdGluZyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlIGFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQKQEAgLTE1LDcgKzE1LDcgQEAKIAogSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAotaXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIChzeXMuYmFzZV9wcmVmaXggYW5kCiBzeXMuYmFzZV9leGVjX3ByZWZpeCB3aWxsIGFsd2F5cyBiZSB0aGUgInJlYWwiIHByZWZpeGVzIG9mIHRoZSBQeXRob24KIGluc3RhbGxhdGlvbikuIElmICJweXZlbnYuY2ZnIiAoYSBib290c3RyYXAgY29uZmlndXJhdGlvbiBmaWxlKSBjb250YWlucwogdGhlIGtleSAiaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyIgc2V0IHRvIGFueXRoaW5nIG90aGVyIHRoYW4gImZhbHNlIgpAQCAtOTgsOCArOTgsOCBAQAogZGVmIGFic19wYXRocygpOgogICAgICIiIlNldCBhbGwgbW9kdWxlIF9fZmlsZV9fIGFuZCBfX2NhY2hlZF9fIGF0dHJpYnV0ZXMgdG8gYW4gYWJzb2x1dGUgcGF0aCIiIgogICAgIGZvciBtIGluIHNldChzeXMubW9kdWxlcy52YWx1ZXMoKSk6Ci0gICAgICAgIGlmIChnZXRhdHRyKGdldGF0dHIobSwgJ19fbG9hZGVyX18nLCBOb25lKSwgJ19fbW9kdWxlX18nLCBOb25lKSAhPQotICAgICAgICAgICAgICAgICdfZnJvemVuX2ltcG9ydGxpYicpOgorICAgICAgICBpZiAoZ2V0YXR0cihnZXRhdHRyKG0sICdfX2xvYWRlcl9fJywgTm9uZSksICdfX21vZHVsZV9fJywgTm9uZSkgbm90IGluCisgICAgICAgICAgICAgICAgKCdfZnJvemVuX2ltcG9ydGxpYicsICdfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCcpKToKICAgICAgICAgICAgIGNvbnRpbnVlICAgIyBkb24ndCBtZXNzIHdpdGggYSBQRVAgMzAyLXN1cHBsaWVkIF9fZmlsZV9fCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG0uX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobS5fX2ZpbGVfXykKQEAgLTI4NSw4ICsyODUsNyBAQAogICAgIHJldHVybiBrbm93bl9wYXRocwogCiBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgotICAgICIiIlJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yaWVzCi0gICAgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikuCisgICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMuCiAKICAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiBgYHByZWZpeGVzYGAgKG9yIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgKSwKICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCkBAIC0zMDcsNyArMzA2LDYgQEAKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChwcmVmaXgpCiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQpAQCAtMzIzLDE0ICszMjEsOSBAQAogICAgIHJldHVybiBzaXRlcGFja2FnZXMKIAogZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6Ci0gICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikgdG8gc3lzLnBhdGgiIiIKKyAgICAiIiJBZGQgc2l0ZS1wYWNrYWdlcyB0byBzeXMucGF0aCIiIgogICAgIGZvciBzaXRlZGlyIGluIGdldHNpdGVwYWNrYWdlcyhwcmVmaXhlcyk6CiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc2l0ZWRpcik6Ci0gICAgICAgICAgICBpZiAic2l0ZS1weXRob24iIGluIHNpdGVkaXI6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignInNpdGUtcHl0aG9uIiBkaXJlY3RvcmllcyB3aWxsIG5vdCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydGVkIGluIDMuNSBhbnltb3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIGFkZHNpdGVkaXIoc2l0ZWRpciwga25vd25fcGF0aHMpCiAKICAgICByZXR1cm4ga25vd25fcGF0aHMKQEAgLTQ4Myw2ICs0NzYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnYXBwbG9jYWwnIGFuZCB2YWx1ZS5sb3dlcigpID09ICd0cnVlJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwLWxvY2FsIGluc3RhbGxzIHVzZSB0aGUgZXhlX2RpciBhcyBwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBvbmUgbGV2ZWwgaGlnaGVyLCBhbmQgZG8gbm90IHVzZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICMgc2l0ZSBwYWNrYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVfcHJlZml4ID0gZXhlX2RpcgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSAnZmFsc2UnCiAKICAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CiAKZGlmZiAtLWdpdCBhL0xpYi9zbXRwZC5weSBiL0xpYi9zbXRwZC5weQppbmRleCBkYjdjODY3Li5mZjg2ZTdkIDEwMDc1NQotLS0gYS9MaWIvc210cGQucHkKKysrIGIvTGliL3NtdHBkLnB5CkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKLSIiIkFuIFJGQyA1MzIxIHNtdHAgcHJveHkuCisiIiJBbiBSRkMgNTMyMSBzbXRwIHByb3h5IHdpdGggb3B0aW9uYWwgUkZDIDE4NzAgYW5kIFJGQyA2NTMxIGV4dGVuc2lvbnMuCiAKIFVzYWdlOiAlKHByb2dyYW0pcyBbb3B0aW9uc10gW2xvY2FsaG9zdDpsb2NhbHBvcnQgW3JlbW90ZWhvc3Q6cmVtb3RlcG9ydF1dCiAKQEAgLTI1LDYgKzI1LDEwIEBACiAgICAgICAgIFJlc3RyaWN0IHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlIHRvICJsaW1pdCIgbnVtYmVyIG9mCiAgICAgICAgIGJ5dGVzIHZpYSB0aGUgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uICBEZWZhdWx0cyB0byAzMzU1NDQzMiBieXRlcy4KIAorICAgIC0tc210cHV0ZjgKKyAgICAtdQorICAgICAgICBFbmFibGUgdGhlIFNNVFBVVEY4IGV4dGVuc2lvbiBhbmQgYmVoYXZlIGFzIGFuIFJGQyA2NTMxIHNtdHAgcHJveHkuCisKICAgICAtLWRlYnVnCiAgICAgLWQKICAgICAgICAgVHVybiBvbiBkZWJ1Z2dpbmcgcHJpbnRzLgpAQCAtOTgsNyArMTAyLDYgQEAKIAogREVCVUdTVFJFQU0gPSBEZXZudWxsKCkKIE5FV0xJTkUgPSAnXG4nCi1FTVBUWVNUUklORyA9ICcnCiBDT01NQVNQQUNFID0gJywgJwogREFUQV9TSVpFX0RFRkFVTFQgPSAzMzU1NDQzMgogCkBAIC0xMTYsMjYgKzExOSw0OCBAQAogCiAgICAgY29tbWFuZF9zaXplX2xpbWl0ID0gNTEyCiAgICAgY29tbWFuZF9zaXplX2xpbWl0cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYSB4PWNvbW1hbmRfc2l6ZV9saW1pdDogeCkKLSAgICBjb21tYW5kX3NpemVfbGltaXRzLnVwZGF0ZSh7Ci0gICAgICAgICdNQUlMJzogY29tbWFuZF9zaXplX2xpbWl0ICsgMjYsCi0gICAgICAgIH0pCi0gICAgbWF4X2NvbW1hbmRfc2l6ZV9saW1pdCA9IG1heChjb21tYW5kX3NpemVfbGltaXRzLnZhbHVlcygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1heF9jb21tYW5kX3NpemVfbGltaXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBtYXgoc2VsZi5jb21tYW5kX3NpemVfbGltaXRzLnZhbHVlcygpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBtYXA9Tm9uZSk6CisgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIG1hcD1tYXApCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0Ci0gICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQotICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgorICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICAgICAgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QgYmUgc2V0IHRvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQorICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQorICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgorICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCisgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQorICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSAnJworICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9ICdcclxuJworICAgICAgICAgICAgc2VsZi5fZG90c2VwID0gJy4nCisgICAgICAgICAgICBzZWxmLl9uZXdsaW5lID0gTkVXTElORQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSBiJycKKyAgICAgICAgICAgIHNlbGYuX2xpbmVzZXAgPSBiJ1xyXG4nCisgICAgICAgICAgICBzZWxmLl9kb3RzZXAgPSBvcmQoYicuJykKKyAgICAgICAgICAgIHNlbGYuX25ld2xpbmUgPSBiJ1xuJworICAgICAgICBzZWxmLl9zZXRfcnNldF9zdGF0ZSgpCiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCi0gICAgICAgIHNlbGYubWFpbGZyb20gPSBOb25lCi0gICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCi0gICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCisgICAgICAgIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0cy5jbGVhcigpCiAgICAgICAgIHNlbGYuZnFkbiA9IHNvY2tldC5nZXRmcWRuKCkKLSAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucGVlciA9IGNvbm4uZ2V0cGVlcm5hbWUoKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CkBAIC0xNDcsOCArMTcyLDIyIEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJ1BlZXI6JywgcmVwcihzZWxmLnBlZXIpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBfX3ZlcnNpb25fXykpCisKKyAgICBkZWYgX3NldF9wb3N0X2RhdGFfc3RhdGUoc2VsZik6CisgICAgICAgICIiIlJlc2V0IHN0YXRlIHZhcmlhYmxlcyB0byB0aGVpciBwb3N0LURBVEEgc3RhdGUuIiIiCisgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAorICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQorICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQorICAgICAgICBzZWxmLnJlcXVpcmVfU01UUFVURjggPSBGYWxzZQorICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQotICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorCisgICAgZGVmIF9zZXRfcnNldF9zdGF0ZShzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHN0YXRlIHZhcmlhYmxlcyBleGNlcHQgdGhlIGdyZWV0aW5nLiIiIgorICAgICAgICBzZWxmLl9zZXRfcG9zdF9kYXRhX3N0YXRlKCkKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCisKIAogICAgICMgcHJvcGVydGllcyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKICAgICBAcHJvcGVydHkKQEAgLTI3Miw5ICszMTEsMTAgQEAKICAgICAgICAgICAgICJzZXQgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuYWRkciA9IHZhbHVlCiAKLSAgICAjIE92ZXJyaWRlcyBiYXNlIGNsYXNzIGZvciBjb252ZW5pZW5jZQorICAgICMgT3ZlcnJpZGVzIGJhc2UgY2xhc3MgZm9yIGNvbnZlbmllbmNlLgogICAgIGRlZiBwdXNoKHNlbGYsIG1zZyk6Ci0gICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQucHVzaChzZWxmLCBieXRlcyhtc2cgKyAnXHJcbicsICdhc2NpaScpKQorICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0LnB1c2goc2VsZiwgYnl0ZXMoCisgICAgICAgICAgICBtc2cgKyAnXHJcbicsICd1dGYtOCcgaWYgc2VsZi5yZXF1aXJlX1NNVFBVVEY4IGVsc2UgJ2FzY2lpJykpCiAKICAgICAjIEltcGxlbWVudGF0aW9uIG9mIGJhc2UgY2xhc3MgYWJzdHJhY3QgbWV0aG9kCiAgICAgZGVmIGNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKQEAgLTI4NywxMSArMzI3LDE0IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxpZiBsaW1pdDoKICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzICs9IGxlbihkYXRhKQotICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgInV0Zi04IikpCisgICAgICAgIGlmIHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICd1dGYtOCcpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoZGF0YSkKIAogICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgICBkZWYgZm91bmRfdGVybWluYXRvcihzZWxmKToKLSAgICAgICAgbGluZSA9IEVNUFRZU1RSSU5HLmpvaW4oc2VsZi5yZWNlaXZlZF9saW5lcykKKyAgICAgICAgbGluZSA9IHNlbGYuX2VtcHR5c3RyaW5nLmpvaW4oc2VsZi5yZWNlaXZlZF9saW5lcykKICAgICAgICAgcHJpbnQoJ0RhdGE6JywgcmVwcihsaW5lKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCiAgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkNPTU1BTkQ6CkBAIC0yOTksNyArMzQyLDggQEAKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBiYWQgc3ludGF4JykKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIG1ldGhvZCA9IE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgICAgICBsaW5lID0gc3RyKGxpbmUsICd1dGYtOCcpCiAgICAgICAgICAgICBpID0gbGluZS5maW5kKCcgJykKICAgICAgICAgICAgIGlmIGkgPCAwOgogICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBsaW5lLnVwcGVyKCkKQEAgLTMzMCwyMSArMzc0LDIxIEBACiAgICAgICAgICAgICAjIFJlbW92ZSBleHRyYW5lb3VzIGNhcnJpYWdlIHJldHVybnMgYW5kIGRlLXRyYW5zcGFyZW5jeSBhY2NvcmRpbmcKICAgICAgICAgICAgICMgdG8gUkZDIDUzMjEsIFNlY3Rpb24gNC41LjIuCiAgICAgICAgICAgICBkYXRhID0gW10KLSAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoJ1xyXG4nKToKLSAgICAgICAgICAgICAgICBpZiB0ZXh0IGFuZCB0ZXh0WzBdID09ICcuJzoKKyAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoc2VsZi5fbGluZXNlcCk6CisgICAgICAgICAgICAgICAgaWYgdGV4dCBhbmQgdGV4dFswXSA9PSBzZWxmLl9kb3RzZXA6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHRleHRbMTpdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKHRleHQpCi0gICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSBORVdMSU5FLmpvaW4oZGF0YSkKLSAgICAgICAgICAgIHN0YXR1cyA9IHNlbGYuc210cF9zZXJ2ZXIucHJvY2Vzc19tZXNzYWdlKHNlbGYucGVlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFpbGZyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJjcHR0b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEpCi0gICAgICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQotICAgICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAotICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCi0gICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSBzZWxmLl9uZXdsaW5lLmpvaW4oZGF0YSkKKyAgICAgICAgICAgIGFyZ3MgPSAoc2VsZi5wZWVyLCBzZWxmLm1haWxmcm9tLCBzZWxmLnJjcHR0b3MsIHNlbGYucmVjZWl2ZWRfZGF0YSkKKyAgICAgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICAgICAga3dhcmdzID0geworICAgICAgICAgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogc2VsZi5tYWlsX29wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICdyY3B0X29wdGlvbnMnOiBzZWxmLnJjcHRfb3B0aW9ucywKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0dXMgPSBzZWxmLnNtdHBfc2VydmVyLnByb2Nlc3NfbWVzc2FnZSgqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9zZXRfcG9zdF9kYXRhX3N0YXRlKCkKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogICAgICAgICAgICAgZWxzZToKQEAgLTM1NSwyNiArMzk5LDM1IEBACiAgICAgICAgIGlmIG5vdCBhcmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IEhFTE8gaG9zdG5hbWUnKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgU2VlIGlzc3VlICMyMTc4MyBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgYmVoYXZpb3IuCiAgICAgICAgIGlmIHNlbGYuc2Vlbl9ncmVldGluZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIER1cGxpY2F0ZSBIRUxPL0VITE8nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCi0gICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgJXMnICUgc2VsZi5mcWRuKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKKyAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCisgICAgICAgIHNlbGYucHVzaCgnMjUwICVzJyAlIHNlbGYuZnFkbikKIAogICAgIGRlZiBzbXRwX0VITE8oc2VsZiwgYXJnKToKICAgICAgICAgaWYgbm90IGFyZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZScpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBTZWUgaXNzdWUgIzIxNzgzIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBiZWhhdmlvci4KICAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKLSAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKLSAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0OgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCi0gICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl9zZXRfcnNldF9zdGF0ZSgpCisgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBUcnVlCisgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKKyAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC1TSVpFICVzJyAlIHNlbGYuZGF0YV9zaXplX2xpbWl0KQorICAgICAgICAgICAgc2VsZi5jb21tYW5kX3NpemVfbGltaXRzWydNQUlMJ10gKz0gMjYKKyAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtOEJJVE1JTUUnKQorICAgICAgICBpZiBzZWxmLmVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNNVFBVVEY4JykKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1snTUFJTCddICs9IDEwCisgICAgICAgIHNlbGYucHVzaCgnMjUwIEhFTFAnKQogCiAgICAgZGVmIHNtdHBfTk9PUChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CkBAIC00MDUsMTEgKzQ1OCwxNSBAQAogICAgICAgICByZXR1cm4gYWRkcmVzcy5hZGRyX3NwZWMsIHJlc3QKIAogICAgIGRlZiBfZ2V0cGFyYW1zKHNlbGYsIHBhcmFtcyk6Ci0gICAgICAgICMgUmV0dXJuIGFueSBwYXJhbWV0ZXJzIHRoYXQgYXBwZWFyIHRvIGJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYWNjb3JkaW5nCi0gICAgICAgICMgdG8gUkZDIDE4NjksIGlnbm9yZSBhbGwgb3RoZXJzLiAgKFBvc3RlbCBydWxlOiBhY2NlcHQgd2hhdCB3ZSBjYW4uKQotICAgICAgICBwYXJhbXMgPSBbcGFyYW0uc3BsaXQoJz0nLCAxKSBmb3IgcGFyYW0gaW4gcGFyYW1zLnNwbGl0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJz0nIGluIHBhcmFtXQotICAgICAgICByZXR1cm4ge2s6IHYgZm9yIGssIHYgaW4gcGFyYW1zIGlmIGsuaXNhbG51bSgpfQorICAgICAgICAjIFJldHVybiBwYXJhbXMgYXMgZGljdGlvbmFyeS4gUmV0dXJuIE5vbmUgaWYgbm90IGFsbCBwYXJhbWV0ZXJzCisgICAgICAgICMgYXBwZWFyIHRvIGJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYWNjb3JkaW5nIHRvIFJGQyAxODY5LgorICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICBmb3IgcGFyYW0gaW4gcGFyYW1zOgorICAgICAgICAgICAgcGFyYW0sIGVxLCB2YWx1ZSA9IHBhcmFtLnBhcnRpdGlvbignPScpCisgICAgICAgICAgICBpZiBub3QgcGFyYW0uaXNhbG51bSgpIG9yIGVxIGFuZCBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHJlc3VsdFtwYXJhbV0gPSB2YWx1ZSBpZiBlcSBlbHNlIFRydWUKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIHNtdHBfSEVMUChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CkBAIC00NTksNyArNTE2LDcgQEAKIAogICAgIGRlZiBzbXRwX01BSUwoc2VsZiwgYXJnKToKICAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKLSAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHByaW50KCc9PT0+IE1BSUwnLCBhcmcsIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIHN5bnRheGVyciA9ICc1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPicKQEAgLTQ3OSwxMCArNTM2LDIzIEBACiAgICAgICAgIGlmIHNlbGYubWFpbGZyb206CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVzdGVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQorICAgICAgICBzZWxmLm1haWxfb3B0aW9ucyA9IHBhcmFtcy51cHBlcigpLnNwbGl0KCkKKyAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHNlbGYubWFpbF9vcHRpb25zKQogICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgYm9keSA9IHBhcmFtcy5wb3AoJ0JPRFknLCAnN0JJVCcpCisgICAgICAgICAgICBpZiBib2R5IG5vdCBpbiBbJzdCSVQnLCAnOEJJVE1JTUUnXToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBFcnJvcjogQk9EWSBjYW4gb25seSBiZSBvbmUgb2YgN0JJVCwgOEJJVE1JTUUnKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLmVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIHNtdHB1dGY4ID0gcGFyYW1zLnBvcCgnU01UUFVURjgnLCBGYWxzZSkKKyAgICAgICAgICAgIGlmIHNtdHB1dGY4IGlzIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5yZXF1aXJlX1NNVFBVVEY4ID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBzbXRwdXRmOCBpcyBub3QgRmFsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgRXJyb3I6IFNNVFBVVEY4IHRha2VzIG5vIGFyZ3VtZW50cycpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNpemUgPSBwYXJhbXMucG9wKCdTSVpFJywgTm9uZSkKICAgICAgICAgaWYgc2l6ZToKICAgICAgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKQEAgLTUxNywxNiArNTg3LDE2IEBACiAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgogICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBwYXJhbXM6Ci0gICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6Ci0gICAgICAgICAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQotICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgcGFyYW1zIGFuZCBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgorICAgICAgICBpZiBub3Qgc2VsZi5leHRlbmRlZF9zbXRwIGFuZCBwYXJhbXM6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmNwdF9vcHRpb25zID0gcGFyYW1zLnVwcGVyKCkuc3BsaXQoKQorICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMoc2VsZi5yY3B0X29wdGlvbnMpCisgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFhYWCBjdXJyZW50bHkgdGhlcmUgYXJlIG5vIG9wdGlvbnMgd2UgcmVjb2duaXplLgorICAgICAgICBpZiBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5yY3B0dG9zLmFwcGVuZChhZGRyZXNzKQpAQCAtNTM3LDExICs2MDcsNyBAQAogICAgICAgICBpZiBhcmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFJTRVQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgUmVzZXRzIHRoZSBzZW5kZXIsIHJlY2lwaWVudHMsIGFuZCBkYXRhLCBidXQgbm90IHRoZSBncmVldGluZwotICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQotICAgICAgICBzZWxmLnJjcHR0b3MgPSBbXQotICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJwotICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgc2VsZi5fc2V0X3JzZXRfc3RhdGUoKQogICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9EQVRBKHNlbGYsIGFyZyk6CkBAIC01NjgsMTMgKzYzNCwyOSBAQAogICAgIGNoYW5uZWxfY2xhc3MgPSBTTVRQQ2hhbm5lbAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKLSAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULCBtYXA9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUsCisgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAorICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAorICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGFyYW1ldGVycyBjYW5ub3QgYmUgc2V0IHRvIFRydWUgYXQgdGhlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzYW1lIHRpbWUuIikKKyAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKKyAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKKyAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAorICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKKyAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1tYXApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgZ2FpX3Jlc3VsdHMgPSBzb2NrZXQuZ2V0YWRkcmluZm8oKmxvY2FsYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGdhaV9yZXN1bHRzWzBdWzBdLCBnYWlfcmVzdWx0c1swXVsxXSkKICAgICAgICAgICAgICMgdHJ5IHRvIHJlLXVzZSBhIHNlcnZlciBwb3J0IGlmIHBvc3NpYmxlCiAgICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKICAgICAgICAgICAgIHNlbGYuYmluZChsb2NhbGFkZHIpCkBAIC01ODksMTEgKzY3MSwxNiBAQAogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKICAgICAgICAgcHJpbnQoJ0luY29taW5nIGNvbm5lY3Rpb24gZnJvbSAlcycgJSByZXByKGFkZHIpLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcCkKKyAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEpCiAKICAgICAjIEFQSSBmb3IgImRvaW5nIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGUgbWVzc2FnZSIKLSAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk92ZXJyaWRlIHRoaXMgYWJzdHJhY3QgbWV0aG9kIHRvIGhhbmRsZSBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQuCiAKICAgICAgICAgcGVlciBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgKGlwYWRkciwgcG9ydCkgb2YgdGhlIGNsaWVudCB0aGF0IG1hZGUgdGhlCkBAIC02MTEsMjkgKzY5OCw1OCBAQAogICAgICAgICBjb250YWluaW5nIGEgYC4nIGZvbGxvd2VkIGJ5IG90aGVyIHRleHQgaGFzIGhhZCB0aGUgbGVhZGluZyBkb3QKICAgICAgICAgcmVtb3ZlZC4KIAotICAgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gTm9uZSwgZm9yIGEgbm9ybWFsIGAyNTAgT2snIHJlc3BvbnNlOwotICAgICAgICBvdGhlcndpc2UgaXQgcmV0dXJucyB0aGUgZGVzaXJlZCByZXNwb25zZSBzdHJpbmcgaW4gUkZDIDgyMSBmb3JtYXQuCisgICAgICAgIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQorICAgICAgICB1bmxlc3MgZGVjb2RlX2RhdGE9RmFsc2Ugb3IgZW5hYmxlX1NNVFBVVEY4PVRydWUgd2FzIGdpdmVuIGFzIGluaXQKKyAgICAgICAgcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIHV0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CisgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHRoZSBtYWlsIGNvbW1hbmQuICBBbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3MuICBFeGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddLgorICAgICAgICAgICAgJ3JjcHRfb3B0aW9ucyc6IHNhbWUsIGZvciB0aGUgcmNwdCBjb21tYW5kLgorCisgICAgICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBOb25lIGZvciBhIG5vcm1hbCBgMjUwIE9rJyByZXNwb25zZTsKKyAgICAgICAgb3RoZXJ3aXNlLCBpdCBzaG91bGQgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiBSRkMgODIxCisgICAgICAgIGZvcm1hdC4KIAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKIGNsYXNzIERlYnVnZ2luZ1NlcnZlcihTTVRQU2VydmVyKToKLSAgICAjIERvIHNvbWV0aGluZyB3aXRoIHRoZSBnYXRoZXJlZCBtZXNzYWdlCi0gICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CisKKyAgICBkZWYgX3ByaW50X21lc3NhZ2VfY29udGVudChzZWxmLCBwZWVyLCBkYXRhKToKICAgICAgICAgaW5oZWFkZXJzID0gMQotICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJykKLSAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0nKQorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXRsaW5lcygpCiAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgogICAgICAgICAgICAgIyBoZWFkZXJzIGZpcnN0CiAgICAgICAgICAgICBpZiBpbmhlYWRlcnMgYW5kIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIHByaW50KCdYLVBlZXI6JywgcGVlclswXSkKKyAgICAgICAgICAgICAgICBwZWVyaGVhZGVyID0gJ1gtUGVlcjogJyArIHBlZXJbMF0KKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIGRlY29kZWRfZGF0YT1mYWxzZTsgbWFrZSBoZWFkZXIgbWF0Y2ggb3RoZXIgYmluYXJ5IG91dHB1dAorICAgICAgICAgICAgICAgICAgICBwZWVyaGVhZGVyID0gcmVwcihwZWVyaGVhZGVyLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICBwcmludChwZWVyaGVhZGVyKQogICAgICAgICAgICAgICAgIGluaGVhZGVycyA9IDAKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHN0cik6CisgICAgICAgICAgICAgICAgIyBBdm9pZCBzcHVyaW91cyAnc3RyIG9uIGJ5dGVzIGluc3RhbmNlJyB3YXJuaW5nLgorICAgICAgICAgICAgICAgIGxpbmUgPSByZXByKGxpbmUpCiAgICAgICAgICAgICBwcmludChsaW5lKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpOgorICAgICAgICBwcmludCgnLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLScpCisgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgIGlmIGt3YXJncy5nZXQoJ21haWxfb3B0aW9ucycpOgorICAgICAgICAgICAgICAgIHByaW50KCdtYWlsIG9wdGlvbnM6ICVzJyAlIGt3YXJnc1snbWFpbF9vcHRpb25zJ10pCisgICAgICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdyY3B0X29wdGlvbnMnKToKKyAgICAgICAgICAgICAgICBwcmludCgncmNwdCBvcHRpb25zOiAlc1xuJyAlIGt3YXJnc1sncmNwdF9vcHRpb25zJ10pCisgICAgICAgIHNlbGYuX3ByaW50X21lc3NhZ2VfY29udGVudChwZWVyLCBkYXRhKQogICAgICAgICBwcmludCgnLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLScpCiAKIAogY2xhc3MgUHVyZVByb3h5KFNNVFBTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiAnZW5hYmxlX1NNVFBVVEY4JyBpbiBrd2FyZ3MgYW5kIGt3YXJnc1snZW5hYmxlX1NNVFBVVEY4J106CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQdXJlUHJveHkgZG9lcyBub3Qgc3VwcG9ydCBTTVRQVVRGOC4iKQorICAgICAgICBzdXBlcihQdXJlUHJveHksIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJykKICAgICAgICAgIyBMb29rIGZvciB0aGUgbGFzdCBoZWFkZXIKQEAgLTY3NCw2ICs3OTAsMTEgQEAKIAogCiBjbGFzcyBNYWlsbWFuUHJveHkoUHVyZVByb3h5KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgJ2VuYWJsZV9TTVRQVVRGOCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2VuYWJsZV9TTVRQVVRGOCddOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWFpbG1hblByb3h5IGRvZXMgbm90IHN1cHBvcnQgU01UUFVURjguIikKKyAgICAgICAgc3VwZXIoUHVyZVByb3h5LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KICAgICAgICAgZnJvbSBNYWlsbWFuIGltcG9ydCBVdGlscwpAQCAtNzUyLDE3ICs4NzMsMTkgQEAKIAogCiBjbGFzcyBPcHRpb25zOgotICAgIHNldHVpZCA9IDEKKyAgICBzZXR1aWQgPSBUcnVlCiAgICAgY2xhc3NuYW1lID0gJ1B1cmVQcm94eScKICAgICBzaXplX2xpbWl0ID0gTm9uZQorICAgIGVuYWJsZV9TTVRQVVRGOCA9IEZhbHNlCiAKIAogZGVmIHBhcnNlYXJncygpOgogICAgIGdsb2JhbCBERUJVR1NUUkVBTQogICAgIHRyeToKICAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoCi0gICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOnM6ZCcsCi0gICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnc2l6ZT0nLCAnZGVidWcnXSkKKyAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6czpkdScsCisgICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnc2l6ZT0nLCAnZGVidWcnLAorICAgICAgICAgICAgICdzbXRwdXRmOCddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgZToKICAgICAgICAgdXNhZ2UoMSwgZSkKIApAQCAtNzc0LDExICs4OTcsMTMgQEAKICAgICAgICAgICAgIHByaW50KF9fdmVyc2lvbl9fKQogICAgICAgICAgICAgc3lzLmV4aXQoMCkKICAgICAgICAgZWxpZiBvcHQgaW4gKCctbicsICctLW5vc2V0dWlkJyk6Ci0gICAgICAgICAgICBvcHRpb25zLnNldHVpZCA9IDAKKyAgICAgICAgICAgIG9wdGlvbnMuc2V0dWlkID0gRmFsc2UKICAgICAgICAgZWxpZiBvcHQgaW4gKCctYycsICctLWNsYXNzJyk6CiAgICAgICAgICAgICBvcHRpb25zLmNsYXNzbmFtZSA9IGFyZwogICAgICAgICBlbGlmIG9wdCBpbiAoJy1kJywgJy0tZGVidWcnKToKICAgICAgICAgICAgIERFQlVHU1RSRUFNID0gc3lzLnN0ZGVycgorICAgICAgICBlbGlmIG9wdCBpbiAoJy11JywgJy0tc210cHV0ZjgnKToKKyAgICAgICAgICAgIG9wdGlvbnMuZW5hYmxlX1NNVFBVVEY4ID0gVHJ1ZQogICAgICAgICBlbGlmIG9wdCBpbiAoJy1zJywgJy0tc2l6ZScpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGludF9zaXplID0gaW50KGFyZykKQEAgLTgzMyw3ICs5NTgsNyBAQAogICAgIGNsYXNzXyA9IGdldGF0dHIobW9kLCBjbGFzc25hbWUpCiAgICAgcHJveHkgPSBjbGFzc18oKG9wdGlvbnMubG9jYWxob3N0LCBvcHRpb25zLmxvY2FscG9ydCksCiAgICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSwKLSAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVfbGltaXQpCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0LCBlbmFibGVfU01UUFVURjg9b3B0aW9ucy5lbmFibGVfU01UUFVURjgpCiAgICAgaWYgb3B0aW9ucy5zZXR1aWQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBwd2QKZGlmZiAtLWdpdCBhL0xpYi9zbXRwbGliLnB5IGIvTGliL3NtdHBsaWIucHkKaW5kZXggZGIyM2ZmMC4uNGZlNmFhZiAxMDA3NTUKLS0tIGEvTGliL3NtdHBsaWIucHkKKysrIGIvTGliL3NtdHBsaWIucHkKQEAgLTUwLDggKzUwLDkgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBobWFjCiBpbXBvcnQgY29weQoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgc3lzCiBmcm9tIGVtYWlsLmJhc2U2NG1pbWUgaW1wb3J0IGJvZHlfZW5jb2RlIGFzIGVuY29kZV9iYXNlNjQKLWZyb20gc3lzIGltcG9ydCBzdGRlcnIKIAogX19hbGxfXyA9IFsiU01UUEV4Y2VwdGlvbiIsICJTTVRQU2VydmVyRGlzY29ubmVjdGVkIiwgIlNNVFBSZXNwb25zZUV4Y2VwdGlvbiIsCiAgICAgICAgICAgICJTTVRQU2VuZGVyUmVmdXNlZCIsICJTTVRQUmVjaXBpZW50c1JlZnVzZWQiLCAiU01UUERhdGFFcnJvciIsCkBAIC03MCw2ICs3MSwxMyBAQAogY2xhc3MgU01UUEV4Y2VwdGlvbihPU0Vycm9yKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhpcyBtb2R1bGUuIiIiCiAKK2NsYXNzIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcihTTVRQRXhjZXB0aW9uKToKKyAgICAiIiJUaGUgY29tbWFuZCBvciBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgU01UUCBzZXJ2ZXIuCisKKyAgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gcnVuIGEgY29tbWFuZCBvciBhCisgICAgY29tbWFuZCB3aXRoIGFuIG9wdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisgICAgIiIiCisKIGNsYXNzIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoU01UUEV4Y2VwdGlvbik6CiAgICAgIiIiTm90IGNvbm5lY3RlZCB0byBhbnkgU01UUCBzZXJ2ZXIuCiAKQEAgLTIzNiw2ICsyNDQsNyBAQAogICAgICAgICBzZWxmLl9ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQorICAgICAgICBzZWxmLmNvbW1hbmRfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcwogCiAgICAgICAgIGlmIGhvc3Q6CkBAIC0yODIsMTIgKzI5MSwxNyBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5kZWJ1Z2xldmVsID0gZGVidWdsZXZlbAogCisgICAgZGVmIF9wcmludF9kZWJ1ZyhzZWxmLCAqYXJncyk6CisgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDE6CisgICAgICAgICAgICBwcmludChkYXRldGltZS5kYXRldGltZS5ub3coKS50aW1lKCksICphcmdzLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgqYXJncywgZmlsZT1zeXMuc3RkZXJyKQorCiAgICAgZGVmIF9nZXRfc29ja2V0KHNlbGYsIGhvc3QsIHBvcnQsIHRpbWVvdXQpOgogICAgICAgICAjIFRoaXMgbWFrZXMgaXQgc2ltcGxlciBmb3IgU01UUF9TU0wgdG8gdXNlIHRoZSBTTVRQIGNvbm5lY3QgY29kZQogICAgICAgICAjIGFuZCBqdXN0IGFsdGVyIHRoZSBzb2NrZXQgY29ubmVjdGlvbiBiaXQuCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgnY29ubmVjdDogdG8nLCAoaG9zdCwgcG9ydCksIHNlbGYuc291cmNlX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0OiB0bycsIChob3N0LCBwb3J0KSwgc2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKIApAQCAtMzE3LDIxICszMzEsMjQgQEAKICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICBwb3J0ID0gc2VsZi5kZWZhdWx0X3BvcnQKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCAoaG9zdCwgcG9ydCkpCiAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2dldF9zb2NrZXQoaG9zdCwgcG9ydCwgc2VsZi50aW1lb3V0KQogICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgiY29ubmVjdDoiLCBtc2csIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6JywgcmVwcihtc2cpKQogICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKIAogICAgIGRlZiBzZW5kKHNlbGYsIHMpOgogICAgICAgICAiIiJTZW5kIGBzJyB0byB0aGUgc2VydmVyLiIiIgogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ3NlbmQ6JywgcmVwcihzKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1Zygnc2VuZDonLCByZXByKHMpKQogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdzb2NrJykgYW5kIHNlbGYuc29jazoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAjIHNlbmQgaXMgdXNlZCBieSB0aGUgJ2RhdGEnIGNvbW1hbmQsIHdoZXJlIGNvbW1hbmRfZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAjIHNob3VsZCBub3QgYmUgdXNlZCwgYnV0ICdkYXRhJyBuZWVkcyB0byBjb252ZXJ0IHRoZSBzdHJpbmcgdG8KKyAgICAgICAgICAgICAgICAjIGJpbmFyeSBpdHNlbGYgYW55d2F5LCBzbyB0aGF0J3Mgbm90IGEgcHJvYmxlbS4KKyAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoc2VsZi5jb21tYW5kX2VuY29kaW5nKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKHMpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKQEAgLTM3NSw3ICszOTIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQoIkNvbm5lY3Rpb24gdW5leHBlY3RlZGx5IGNsb3NlZCIpCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCdyZXBseTonLCByZXByKGxpbmUpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygncmVwbHk6JywgcmVwcihsaW5lKSkKICAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+IF9NQVhMSU5FOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBSZXNwb25zZUV4Y2VwdGlvbig1MDAsICJMaW5lIHRvbyBsb25nLiIpCkBAIC0zOTQsOCArNDExLDcgQEAKIAogICAgICAgICBlcnJtc2cgPSBiIlxuIi5qb2luKHJlc3ApCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdyZXBseTogcmV0Y29kZSAoJXMpOyBNc2c6ICVhJyAlIChlcnJjb2RlLCBlcnJtc2cpKQogICAgICAgICByZXR1cm4gZXJyY29kZSwgZXJybXNnCiAKICAgICBkZWYgZG9jbWQoc2VsZiwgY21kLCBhcmdzPSIiKToKQEAgLTQ3Nyw2ICs0OTMsNyBAQAogCiAgICAgZGVmIHJzZXQoc2VsZik6CiAgICAgICAgICIiIlNNVFAgJ3JzZXQnIGNvbW1hbmQgLS0gcmVzZXRzIHNlc3Npb24uIiIiCisgICAgICAgIHNlbGYuY29tbWFuZF9lbmNvZGluZyA9ICdhc2NpaScKICAgICAgICAgcmV0dXJuIHNlbGYuZG9jbWQoInJzZXQiKQogCiAgICAgZGVmIF9yc2V0KHNlbGYpOgpAQCAtNDk2LDkgKzUxMywyMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5kb2NtZCgibm9vcCIpCiAKICAgICBkZWYgbWFpbChzZWxmLCBzZW5kZXIsIG9wdGlvbnM9W10pOgotICAgICAgICAiIiJTTVRQICdtYWlsJyBjb21tYW5kIC0tIGJlZ2lucyBtYWlsIHhmZXIgc2Vzc2lvbi4iIiIKKyAgICAgICAgIiIiU01UUCAnbWFpbCcgY29tbWFuZCAtLSBiZWdpbnMgbWFpbCB4ZmVyIHNlc3Npb24uCisKKyAgICAgICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKKworICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICBUaGUgb3B0aW9ucyBwYXJhbWV0ZXIgaW5jbHVkZXMgJ1NNVFBVVEY4JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgdGhlIFNNVFBVVEY4IGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzZXJ2ZXIuCisgICAgICAgICIiIgogICAgICAgICBvcHRpb25saXN0ID0gJycKICAgICAgICAgaWYgb3B0aW9ucyBhbmQgc2VsZi5kb2VzX2VzbXRwOgorICAgICAgICAgICAgaWYgYW55KHgubG93ZXIoKT09J3NtdHB1dGY4JyBmb3IgeCBpbiBvcHRpb25zKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmhhc19leHRuKCdzbXRwdXRmOCcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1hbmRfZW5jb2RpbmcgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgJ1NNVFBVVEY4IG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyJykKICAgICAgICAgICAgIG9wdGlvbmxpc3QgPSAnICcgKyAnICcuam9pbihvcHRpb25zKQogICAgICAgICBzZWxmLnB1dGNtZCgibWFpbCIsICJGUk9NOiVzJXMiICUgKHF1b3RlYWRkcihzZW5kZXIpLCBvcHRpb25saXN0KSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0cmVwbHkoKQpAQCAtNTI0LDcgKzU1NCw3IEBACiAgICAgICAgIHNlbGYucHV0Y21kKCJkYXRhIikKICAgICAgICAgKGNvZGUsIHJlcGwpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgiZGF0YToiLCAoY29kZSwgcmVwbCksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2RhdGE6JywgKGNvZGUsIHJlcGwpKQogICAgICAgICBpZiBjb2RlICE9IDM1NDoKICAgICAgICAgICAgIHJhaXNlIFNNVFBEYXRhRXJyb3IoY29kZSwgcmVwbCkKICAgICAgICAgZWxzZToKQEAgLTUzNyw3ICs1NjcsNyBAQAogICAgICAgICAgICAgc2VsZi5zZW5kKHEpCiAgICAgICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICBwcmludCgiZGF0YToiLCAoY29kZSwgbXNnKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2RhdGE6JywgKGNvZGUsIG1zZykpCiAgICAgICAgICAgICByZXR1cm4gKGNvZGUsIG1zZykKIAogICAgIGRlZiB2ZXJpZnkoc2VsZiwgYWRkcmVzcyk6CkBAIC01NzEsMTIgKzYwMSw3OCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCAoMjAwIDw9IGNvZGUgPD0gMjk5KToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU01UUEhlbG9FcnJvcihjb2RlLCByZXNwKQogCi0gICAgZGVmIGxvZ2luKHNlbGYsIHVzZXIsIHBhc3N3b3JkKToKKyAgICBkZWYgYXV0aChzZWxmLCBtZWNoYW5pc20sIGF1dGhvYmplY3QsICosIGluaXRpYWxfcmVzcG9uc2Vfb2s9VHJ1ZSk6CisgICAgICAgICIiIkF1dGhlbnRpY2F0aW9uIGNvbW1hbmQgLSByZXF1aXJlcyByZXNwb25zZSBwcm9jZXNzaW5nLgorCisgICAgICAgICdtZWNoYW5pc20nIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KKyAgICAgICAgYmUgdXNlZCAtIHRoZSB2YWxpZCB2YWx1ZXMgYXJlIHRob3NlIGxpc3RlZCBpbiB0aGUgJ2F1dGgnCisgICAgICAgIGVsZW1lbnQgb2YgJ2VzbXRwX2ZlYXR1cmVzJy4KKworICAgICAgICAnYXV0aG9iamVjdCcgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgYSBzaW5nbGUgYXJndW1lbnQ6CisKKyAgICAgICAgICAgICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2UpCisKKyAgICAgICAgSXQgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlIHJlc3BvbnNlOyB0aGUKKyAgICAgICAgY2hhbGxlbmdlIGFyZ3VtZW50IGl0IGlzIHBhc3NlZCB3aWxsIGJlIGEgYnl0ZXMuICBJdCBzaG91bGQgcmV0dXJuCisgICAgICAgIGJ5dGVzIGRhdGEgdGhhdCB3aWxsIGJlIGJhc2U2NCBlbmNvZGVkIGFuZCBzZW50IHRvIHRoZSBzZXJ2ZXIuCisKKyAgICAgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICAgICAgICAtIGluaXRpYWxfcmVzcG9uc2Vfb2s6IEFsbG93IHNlbmRpbmcgdGhlIFJGQyA0OTU0IGluaXRpYWwtcmVzcG9uc2UKKyAgICAgICAgICAgICAgdG8gdGhlIEFVVEggY29tbWFuZCwgaWYgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydHMgaXQuCisgICAgICAgICIiIgorICAgICAgICAjIFJGQyA0OTU0IGFsbG93cyBhdXRoIG1ldGhvZHMgdG8gcHJvdmlkZSBhbiBpbml0aWFsIHJlc3BvbnNlLiAgTm90IGFsbAorICAgICAgICAjIG1ldGhvZHMgc3VwcG9ydCBpdC4gIEJ5IGRlZmluaXRpb24sIGlmIHRoZXkgcmV0dXJuIHNvbWV0aGluZyBvdGhlcgorICAgICAgICAjIHRoYW4gTm9uZSB3aGVuIGNoYWxsZW5nZSBpcyBOb25lLCB0aGVuIHRoZXkgZG8uICBTZWUgaXNzdWUgIzE1MDE0LgorICAgICAgICBtZWNoYW5pc20gPSBtZWNoYW5pc20udXBwZXIoKQorICAgICAgICBpbml0aWFsX3Jlc3BvbnNlID0gKGF1dGhvYmplY3QoKSBpZiBpbml0aWFsX3Jlc3BvbnNlX29rIGVsc2UgTm9uZSkKKyAgICAgICAgaWYgaW5pdGlhbF9yZXNwb25zZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZW5jb2RlX2Jhc2U2NChpbml0aWFsX3Jlc3BvbnNlLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKQorICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsIG1lY2hhbmlzbSArICIgIiArIHJlc3BvbnNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsIG1lY2hhbmlzbSkKKyAgICAgICAgICAgICMgU2VydmVyIHJlcGxpZXMgd2l0aCAzMzQgKGNoYWxsZW5nZSkgb3IgNTM1IChub3Qgc3VwcG9ydGVkKQorICAgICAgICAgICAgaWYgY29kZSA9PSAzMzQ6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlID0gYmFzZTY0LmRlY29kZWJ5dGVzKHJlc3ApCisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBlbmNvZGVfYmFzZTY0KAorICAgICAgICAgICAgICAgICAgICBhdXRob2JqZWN0KGNoYWxsZW5nZSkuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpCisgICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZChyZXNwb25zZSkKKyAgICAgICAgaWYgY29kZSBpbiAoMjM1LCA1MDMpOgorICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQorICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQorCisgICAgZGVmIGF1dGhfY3JhbV9tZDUoc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBDUkFNLU1ENSBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyCisgICAgICAgIGFuZCBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgIyBDUkFNLU1ENSBkb2VzIG5vdCBzdXBwb3J0IGluaXRpYWwtcmVzcG9uc2UuCisgICAgICAgIGlmIGNoYWxsZW5nZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYudXNlciArICIgIiArIGhtYWMuSE1BQygKKyAgICAgICAgICAgIHNlbGYucGFzc3dvcmQuZW5jb2RlKCdhc2NpaScpLCBjaGFsbGVuZ2UsICdtZDUnKS5oZXhkaWdlc3QoKQorCisgICAgZGVmIGF1dGhfcGxhaW4oc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBQTEFJTiBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyIGFuZAorICAgICAgICBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgcmV0dXJuICJcMCVzXDAlcyIgJSAoc2VsZi51c2VyLCBzZWxmLnBhc3N3b3JkKQorCisgICAgZGVmIGF1dGhfbG9naW4oc2VsZiwgY2hhbGxlbmdlPU5vbmUpOgorICAgICAgICAiIiIgQXV0aG9iamVjdCB0byB1c2Ugd2l0aCBMT0dJTiBhdXRoZW50aWNhdGlvbi4gUmVxdWlyZXMgc2VsZi51c2VyIGFuZAorICAgICAgICBzZWxmLnBhc3N3b3JkIHRvIGJlIHNldC4iIiIKKyAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgKKyAgICAgICAgICAgIGVuY29kZV9iYXNlNjQoc2VsZi51c2VyLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKSkKKyAgICAgICAgaWYgY29kZSA9PSAzMzQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXNzd29yZAorICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQorCisgICAgZGVmIGxvZ2luKHNlbGYsIHVzZXIsIHBhc3N3b3JkLCAqLCBpbml0aWFsX3Jlc3BvbnNlX29rPVRydWUpOgogICAgICAgICAiIiJMb2cgaW4gb24gYW4gU01UUCBzZXJ2ZXIgdGhhdCByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4KIAogICAgICAgICBUaGUgYXJndW1lbnRzIGFyZToKLSAgICAgICAgICAgIC0gdXNlcjogICAgIFRoZSB1c2VyIG5hbWUgdG8gYXV0aGVudGljYXRlIHdpdGguCi0gICAgICAgICAgICAtIHBhc3N3b3JkOiBUaGUgcGFzc3dvcmQgZm9yIHRoZSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgICAgIC0gdXNlcjogICAgICAgICBUaGUgdXNlciBuYW1lIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLgorICAgICAgICAgICAgLSBwYXNzd29yZDogICAgIFRoZSBwYXNzd29yZCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uLgorCisgICAgICAgIEtleXdvcmQgYXJndW1lbnRzOgorICAgICAgICAgICAgLSBpbml0aWFsX3Jlc3BvbnNlX29rOiBBbGxvdyBzZW5kaW5nIHRoZSBSRkMgNDk1NCBpbml0aWFsLXJlc3BvbnNlCisgICAgICAgICAgICAgIHRvIHRoZSBBVVRIIGNvbW1hbmQsIGlmIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHN1cHBvcnRzIGl0LgogCiAgICAgICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIEVITE8gb3IgSEVMTyBjb21tYW5kIHRoaXMgc2Vzc2lvbiwgdGhpcwogICAgICAgICBtZXRob2QgdHJpZXMgRVNNVFAgRUhMTyBmaXJzdC4KQEAgLTU4OSw2NyArNjg1LDQ5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGhlbG8gZ3JlZXRpbmcuCiAgICAgICAgICBTTVRQQXV0aGVudGljYXRpb25FcnJvciAgVGhlIHNlcnZlciBkaWRuJ3QgYWNjZXB0IHRoZSB1c2VybmFtZS8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCBjb21iaW5hdGlvbi4KKyAgICAgICAgIFNNVFBOb3RTdXBwb3J0ZWRFcnJvciAgICBUaGUgQVVUSCBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLgogICAgICAgICAgU01UUEV4Y2VwdGlvbiAgICAgICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZC4KICAgICAgICAgIiIiCiAKLSAgICAgICAgZGVmIGVuY29kZV9jcmFtX21kNShjaGFsbGVuZ2UsIHVzZXIsIHBhc3N3b3JkKToKLSAgICAgICAgICAgIGNoYWxsZW5nZSA9IGJhc2U2NC5kZWNvZGVieXRlcyhjaGFsbGVuZ2UpCi0gICAgICAgICAgICByZXNwb25zZSA9IHVzZXIgKyAiICIgKyBobWFjLkhNQUMocGFzc3dvcmQuZW5jb2RlKCdhc2NpaScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSwgJ21kNScpLmhleGRpZ2VzdCgpCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlX2Jhc2U2NChyZXNwb25zZS5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykKLQotICAgICAgICBkZWYgZW5jb2RlX3BsYWluKHVzZXIsIHBhc3N3b3JkKToKLSAgICAgICAgICAgIHMgPSAiXDAlc1wwJXMiICUgKHVzZXIsIHBhc3N3b3JkKQotICAgICAgICAgICAgcmV0dXJuIGVuY29kZV9iYXNlNjQocy5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykKLQotICAgICAgICBBVVRIX1BMQUlOID0gIlBMQUlOIgotICAgICAgICBBVVRIX0NSQU1fTUQ1ID0gIkNSQU0tTUQ1IgotICAgICAgICBBVVRIX0xPR0lOID0gIkxPR0lOIgotCiAgICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCi0KICAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oImF1dGgiKToKLSAgICAgICAgICAgIHJhaXNlIFNNVFBFeGNlcHRpb24oIlNNVFAgQVVUSCBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKKyAgICAgICAgICAgIHJhaXNlIFNNVFBOb3RTdXBwb3J0ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAiU01UUCBBVVRIIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4iKQogCiAgICAgICAgICMgQXV0aGVudGljYXRpb24gbWV0aG9kcyB0aGUgc2VydmVyIGNsYWltcyB0byBzdXBwb3J0CiAgICAgICAgIGFkdmVydGlzZWRfYXV0aGxpc3QgPSBzZWxmLmVzbXRwX2ZlYXR1cmVzWyJhdXRoIl0uc3BsaXQoKQogCi0gICAgICAgICMgTGlzdCBvZiBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHdlIHN1cHBvcnQ6IGZyb20gcHJlZmVycmVkIHRvCi0gICAgICAgICMgbGVzcyBwcmVmZXJyZWQgbWV0aG9kcy4gRXhjZXB0IGZvciB0aGUgcHVycG9zZSBvZiB0ZXN0aW5nIHRoZSB3ZWFrZXIKLSAgICAgICAgIyBvbmVzLCB3ZSBwcmVmZXIgc3Ryb25nZXIgbWV0aG9kcyBsaWtlIENSQU0tTUQ1OgotICAgICAgICBwcmVmZXJyZWRfYXV0aHMgPSBbQVVUSF9DUkFNX01ENSwgQVVUSF9QTEFJTiwgQVVUSF9MT0dJTl0KKyAgICAgICAgIyBBdXRoZW50aWNhdGlvbiBtZXRob2RzIHdlIGNhbiBoYW5kbGUgaW4gb3VyIHByZWZlcnJlZCBvcmRlcjoKKyAgICAgICAgcHJlZmVycmVkX2F1dGhzID0gWydDUkFNLU1ENScsICdQTEFJTicsICdMT0dJTiddCiAKLSAgICAgICAgIyBXZSB0cnkgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgdGhlIHNlcnZlciBhZHZlcnRpc2VzLCBidXQgb25seSB0aGUKLSAgICAgICAgIyBvbmVzICp3ZSogc3VwcG9ydC4gQW5kIGluIG91ciBwcmVmZXJyZWQgb3JkZXIuCi0gICAgICAgIGF1dGhsaXN0ID0gW2F1dGggZm9yIGF1dGggaW4gcHJlZmVycmVkX2F1dGhzIGlmIGF1dGggaW4gYWR2ZXJ0aXNlZF9hdXRobGlzdF0KKyAgICAgICAgIyBXZSB0cnkgdGhlIHN1cHBvcnRlZCBhdXRoZW50aWNhdGlvbnMgaW4gb3VyIHByZWZlcnJlZCBvcmRlciwgaWYKKyAgICAgICAgIyB0aGUgc2VydmVyIHN1cHBvcnRzIHRoZW0uCisgICAgICAgIGF1dGhsaXN0ID0gW2F1dGggZm9yIGF1dGggaW4gcHJlZmVycmVkX2F1dGhzCisgICAgICAgICAgICAgICAgICAgIGlmIGF1dGggaW4gYWR2ZXJ0aXNlZF9hdXRobGlzdF0KICAgICAgICAgaWYgbm90IGF1dGhsaXN0OgogICAgICAgICAgICAgcmFpc2UgU01UUEV4Y2VwdGlvbigiTm8gc3VpdGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kIGZvdW5kLiIpCiAKICAgICAgICAgIyBTb21lIHNlcnZlcnMgYWR2ZXJ0aXNlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgdGhleSBkb24ndCByZWFsbHkKICAgICAgICAgIyBzdXBwb3J0LCBzbyBpZiBhdXRoZW50aWNhdGlvbiBmYWlscywgd2UgY29udGludWUgdW50aWwgd2UndmUgdHJpZWQKICAgICAgICAgIyBhbGwgbWV0aG9kcy4KKyAgICAgICAgc2VsZi51c2VyLCBzZWxmLnBhc3N3b3JkID0gdXNlciwgcGFzc3dvcmQKICAgICAgICAgZm9yIGF1dGhtZXRob2QgaW4gYXV0aGxpc3Q6Ci0gICAgICAgICAgICBpZiBhdXRobWV0aG9kID09IEFVVEhfQ1JBTV9NRDU6Ci0gICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsIEFVVEhfQ1JBTV9NRDUpCi0gICAgICAgICAgICAgICAgaWYgY29kZSA9PSAzMzQ6Ci0gICAgICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoZW5jb2RlX2NyYW1fbWQ1KHJlc3AsIHVzZXIsIHBhc3N3b3JkKSkKLSAgICAgICAgICAgIGVsaWYgYXV0aG1ldGhvZCA9PSBBVVRIX1BMQUlOOgotICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLAotICAgICAgICAgICAgICAgICAgICBBVVRIX1BMQUlOICsgIiAiICsgZW5jb2RlX3BsYWluKHVzZXIsIHBhc3N3b3JkKSkKLSAgICAgICAgICAgIGVsaWYgYXV0aG1ldGhvZCA9PSBBVVRIX0xPR0lOOgotICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoIkFVVEgiLAotICAgICAgICAgICAgICAgICAgICAiJXMgJXMiICUgKEFVVEhfTE9HSU4sIGVuY29kZV9iYXNlNjQodXNlci5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykpKQotICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gMzM0OgotICAgICAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKGVuY29kZV9iYXNlNjQocGFzc3dvcmQuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpKQorICAgICAgICAgICAgbWV0aG9kX25hbWUgPSAnYXV0aF8nICsgYXV0aG1ldGhvZC5sb3dlcigpLnJlcGxhY2UoJy0nLCAnXycpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5hdXRoKAorICAgICAgICAgICAgICAgICAgICBhdXRobWV0aG9kLCBnZXRhdHRyKHNlbGYsIG1ldGhvZF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9yZXNwb25zZV9vaz1pbml0aWFsX3Jlc3BvbnNlX29rKQorICAgICAgICAgICAgICAgICMgMjM1ID09ICdBdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsJworICAgICAgICAgICAgICAgICMgNTAzID09ICdFcnJvcjogYWxyZWFkeSBhdXRoZW50aWNhdGVkJworICAgICAgICAgICAgICAgIGlmIGNvZGUgaW4gKDIzNSwgNTAzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQorICAgICAgICAgICAgZXhjZXB0IFNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgbGFzdF9leGNlcHRpb24gPSBlCiAKLSAgICAgICAgICAgICMgMjM1ID09ICdBdXRoZW50aWNhdGlvbiBzdWNjZXNzZnVsJwotICAgICAgICAgICAgIyA1MDMgPT0gJ0Vycm9yOiBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQnCi0gICAgICAgICAgICBpZiBjb2RlIGluICgyMzUsIDUwMyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChjb2RlLCByZXNwKQotCi0gICAgICAgICMgV2UgY291bGQgbm90IGxvZ2luIHN1Y2Vzc2Z1bGx5LiBSZXR1cm4gcmVzdWx0IG9mIGxhc3QgYXR0ZW1wdC4KLSAgICAgICAgcmFpc2UgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IoY29kZSwgcmVzcCkKKyAgICAgICAgIyBXZSBjb3VsZCBub3QgbG9naW4gc3VjY2Vzc2Z1bGx5LiAgUmV0dXJuIHJlc3VsdCBvZiBsYXN0IGF0dGVtcHQuCisgICAgICAgIHJhaXNlIGxhc3RfZXhjZXB0aW9uCiAKICAgICBkZWYgc3RhcnR0bHMoc2VsZiwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpOgogICAgICAgICAiIiJQdXRzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBTTVRQIHNlcnZlciBpbnRvIFRMUyBtb2RlLgpAQCAtNjcwLDcgKzc0OCw4IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmVobG9fb3JfaGVsb19pZl9uZWVkZWQoKQogICAgICAgICBpZiBub3Qgc2VsZi5oYXNfZXh0bigic3RhcnR0bHMiKToKLSAgICAgICAgICAgIHJhaXNlIFNNVFBFeGNlcHRpb24oIlNUQVJUVExTIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4iKQorICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICJTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuIikKICAgICAgICAgKHJlc3AsIHJlcGx5KSA9IHNlbGYuZG9jbWQoIlNUQVJUVExTIikKICAgICAgICAgaWYgcmVzcCA9PSAyMjA6CiAgICAgICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgpAQCAtNzM1LDYgKzgxNCw5IEBACiAgICAgICAgICBTTVRQRGF0YUVycm9yICAgICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgY29kZSAob3RoZXIgdGhhbiBhIHJlZnVzYWwgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZWNpcGllbnQpLgorICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICBUaGUgbWFpbF9vcHRpb25zIHBhcmFtZXRlciBpbmNsdWRlcyAnU01UUFVURjgnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCB0aGUgU01UUFVURjggZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlcnZlci4KIAogICAgICAgICBOb3RlOiB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIG9wZW4gZXZlbiBhZnRlciBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgogCkBAIC03NjMsOCArODQ1LDYgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShtc2csIHN0cik6CiAgICAgICAgICAgICBtc2cgPSBfZml4X2VvbHMobXNnKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgaWYgc2VsZi5kb2VzX2VzbXRwOgotICAgICAgICAgICAgIyBIbW1tPyB3aGF0J3MgdGhpcz8gLWRkbQotICAgICAgICAgICAgIyBzZWxmLmVzbXRwX2ZlYXR1cmVzWyc3Yml0J109IiIKICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2V4dG4oJ3NpemUnKToKICAgICAgICAgICAgICAgICBlc210cF9vcHRzLmFwcGVuZCgic2l6ZT0lZCIgJSBsZW4obXNnKSkKICAgICAgICAgICAgIGZvciBvcHRpb24gaW4gbWFpbF9vcHRpb25zOgpAQCAtODEyLDcgKzg5MiwxMyBAQAogICAgICAgICB0b19hZGRyLCBhbnkgQmNjIGZpZWxkIChvciBSZXNlbnQtQmNjIGZpZWxkLCB3aGVuIHRoZSBNZXNzYWdlIGlzIGEKICAgICAgICAgcmVzZW50KSBvZiB0aGUgTWVzc2FnZSBvYmplY3Qgd29uJ3QgYmUgdHJhbnNtaXR0ZWQuICBUaGUgTWVzc2FnZQogICAgICAgICBvYmplY3QgaXMgdGhlbiBzZXJpYWxpemVkIHVzaW5nIGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvciBhbmQKLSAgICAgICAgc2VuZG1haWwgaXMgY2FsbGVkIHRvIHRyYW5zbWl0IHRoZSBtZXNzYWdlLgorICAgICAgICBzZW5kbWFpbCBpcyBjYWxsZWQgdG8gdHJhbnNtaXQgdGhlIG1lc3NhZ2UuICBJZiB0aGUgc2VuZGVyIG9yIGFueSBvZgorICAgICAgICB0aGUgcmVjaXBpZW50IGFkZHJlc3NlcyBjb250YWluIG5vbi1BU0NJSSBhbmQgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZQorICAgICAgICBTTVRQVVRGOCBjYXBhYmlsaXR5LCB0aGUgcG9saWN5IGlzIGNsb25lZCB3aXRoIHV0Zjggc2V0IHRvIFRydWUgZm9yIHRoZQorICAgICAgICBzZXJpYWxpemF0aW9uLCBhbmQgU01UUFVURjggYW5kIEJPRFk9OEJJVE1JTUUgYXJlIGFzc2VydGVkIG9uIHRoZSBzZW5kLgorICAgICAgICBJZiB0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU01UUFVURjgsIGFuIFNNUFROb3RTdXBwb3J0ZWQgZXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLiAgT3RoZXJ3aXNlIHRoZSBnZW5lcmF0b3IgaXMgY2FsbGVkIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZQorICAgICAgICBwb2xpY3kuCiAKICAgICAgICAgIiIiCiAgICAgICAgICMgJ1Jlc2VudC1EYXRlJyBpcyBhIG1hbmRhdG9yeSBmaWVsZCBpZiB0aGUgTWVzc2FnZSBpcyByZXNlbnQgKFJGQyAyODIyCkBAIC04MjUsNiArOTExLDcgQEAKICAgICAgICAgIyBvcHRpb24gYWxsb3dpbmcgdGhlIHVzZXIgdG8gZW5hYmxlIHRoZSBoZXVyaXN0aWNzLiAgKEl0IHNob3VsZCBiZQogICAgICAgICAjIHBvc3NpYmxlIHRvIGd1ZXNzIGNvcnJlY3RseSBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLikKIAorICAgICAgICBzZWxmLmVobG9fb3JfaGVsb19pZl9uZWVkZWQoKQogICAgICAgICByZXNlbnQgPSBtc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQogICAgICAgICBpZiByZXNlbnQgaXMgTm9uZToKICAgICAgICAgICAgIGhlYWRlcl9wcmVmaXggPSAnJwpAQCAtODQwLDE0ICs5MjcsMzAgQEAKICAgICAgICAgaWYgdG9fYWRkcnMgaXMgTm9uZToKICAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4ICsgJ1RvJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdCY2MnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0NjJ10pIGlmIGYgaXMgbm90IE5vbmVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZiBpcyBub3QgTm9uZV0KICAgICAgICAgICAgIHRvX2FkZHJzID0gW2FbMV0gZm9yIGEgaW4gZW1haWwudXRpbHMuZ2V0YWRkcmVzc2VzKGFkZHJfZmllbGRzKV0KICAgICAgICAgIyBNYWtlIGEgbG9jYWwgY29weSBzbyB3ZSBjYW4gZGVsZXRlIHRoZSBiY2MgaGVhZGVycy4KICAgICAgICAgbXNnX2NvcHkgPSBjb3B5LmNvcHkobXNnKQogICAgICAgICBkZWwgbXNnX2NvcHlbJ0JjYyddCiAgICAgICAgIGRlbCBtc2dfY29weVsnUmVzZW50LUJjYyddCisgICAgICAgIGludGVybmF0aW9uYWwgPSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAnJy5qb2luKFtmcm9tX2FkZHIsICp0b19hZGRyc10pLmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuaGFzX2V4dG4oJ3NtdHB1dGY4Jyk6CisgICAgICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAiT25lIG9yIG1vcmUgc291cmNlIG9yIGRlbGl2ZXJ5IGFkZHJlc3NlcyByZXF1aXJlIgorICAgICAgICAgICAgICAgICAgICAiIGludGVybmF0aW9uYWxpemVkIGVtYWlsIHN1cHBvcnQsIGJ1dCB0aGUgc2VydmVyIgorICAgICAgICAgICAgICAgICAgICAiIGRvZXMgbm90IGFkdmVydGlzZSB0aGUgcmVxdWlyZWQgU01UUFVURjggY2FwYWJpbGl0eSIpCisgICAgICAgICAgICBpbnRlcm5hdGlvbmFsID0gVHJ1ZQogICAgICAgICB3aXRoIGlvLkJ5dGVzSU8oKSBhcyBieXRlc21zZzoKLSAgICAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYnl0ZXNtc2cpCisgICAgICAgICAgICBpZiBpbnRlcm5hdGlvbmFsOgorICAgICAgICAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzbXNnLCBwb2xpY3k9bXNnLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQorICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucyArPSBbJ1NNVFBVVEY4JywgJ0JPRFk9OEJJVE1JTUUnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKGJ5dGVzbXNnKQogICAgICAgICAgICAgZy5mbGF0dGVuKG1zZ19jb3B5LCBsaW5lc2VwPSdcclxuJykKICAgICAgICAgICAgIGZsYXRtc2cgPSBieXRlc21zZy5nZXR2YWx1ZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRtYWlsKGZyb21fYWRkciwgdG9fYWRkcnMsIGZsYXRtc2csIG1haWxfb3B0aW9ucywKQEAgLTkxNSw3ICsxMDE4LDcgQEAKIAogICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCiAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc2VsZi5jb250ZXh0LndyYXBfc29ja2V0KG5ld19zb2NrZXQsCkBAIC05NjMsMTQgKzEwNjYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KGhvc3QpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICBwcmludCgnY29ubmVjdCBmYWlsOicsIGhvc3QsIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0IGZhaWw6JywgaG9zdCkKICAgICAgICAgICAgIGlmIHNlbGYuc29jazoKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5zb2NrID0gTm9uZQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIG1zZywgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCBtc2cpCiAgICAgICAgIHJldHVybiAoY29kZSwgbXNnKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9zbmRoZHIucHkgYi9MaWIvc25kaGRyLnB5CmluZGV4IDI0MGU1MDcuLmU1OTAxZWMgMTAwNjQ0Ci0tLSBhL0xpYi9zbmRoZHIucHkKKysrIGIvTGliL3NuZGhkci5weQpAQCAtMzIsNiArMzIsMTEgQEAKIAogX19hbGxfXyA9IFsnd2hhdCcsICd3aGF0aGRyJ10KIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorCitTbmRIZWFkZXJzID0gbmFtZWR0dXBsZSgnU25kSGVhZGVycycsCisgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXR5cGUgZnJhbWVyYXRlIG5jaGFubmVscyBuZnJhbWVzIHNhbXB3aWR0aCcpCisKIGRlZiB3aGF0KGZpbGVuYW1lKToKICAgICAiIiJHdWVzcyB0aGUgdHlwZSBvZiBhIHNvdW5kIGZpbGUuIiIiCiAgICAgcmVzID0gd2hhdGhkcihmaWxlbmFtZSkKQEAgLTQ1LDcgKzUwLDcgQEAKICAgICAgICAgZm9yIHRmIGluIHRlc3RzOgogICAgICAgICAgICAgcmVzID0gdGYoaCwgZikKICAgICAgICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzCisgICAgICAgICAgICAgICAgcmV0dXJuIFNuZEhlYWRlcnMoKnJlcykKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCAwMDQ1ODg2Li5kYjM0YWIzIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKIGltcG9ydCBfc29ja2V0CiBmcm9tIF9zb2NrZXQgaW1wb3J0ICoKIAotaW1wb3J0IG9zLCBzeXMsIGlvCitpbXBvcnQgb3MsIHN5cywgaW8sIHNlbGVjdG9ycwogZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtCiAKIHRyeToKQEAgLTY5LDYgKzY5LDcgQEAKICMgTm90ZSB0aGF0IF9zb2NrZXQgb25seSBrbm93cyBhYm91dCB0aGUgaW50ZWdlciB2YWx1ZXMuIFRoZSBwdWJsaWMgaW50ZXJmYWNlCiAjIGluIHRoaXMgbW9kdWxlIHVuZGVyc3RhbmRzIHRoZSBlbnVtcyBhbmQgdHJhbnNsYXRlcyB0aGVtIGJhY2sgZnJvbSBpbnRlZ2VycwogIyB3aGVyZSBuZWVkZWQgKGUuZy4gLmZhbWlseSBwcm9wZXJ0eSBvZiBhIHNvY2tldCBvYmplY3QpLgorCiBJbnRFbnVtLl9jb252ZXJ0KAogICAgICAgICAnQWRkcmVzc0ZhbWlseScsCiAgICAgICAgIF9fbmFtZV9fLApAQCAtNzksNiArODAsMTAgQEAKICAgICAgICAgX19uYW1lX18sCiAgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdTT0NLXycpKQogCitfTE9DQUxIT1NUICAgID0gJzEyNy4wLjAuMScKK19MT0NBTEhPU1RfVjYgPSAnOjoxJworCisKIGRlZiBfaW50ZW51bV9jb252ZXJ0ZXIodmFsdWUsIGVudW1fa2xhc3MpOgogICAgICIiIkNvbnZlcnQgYSBudW1lcmljIGZhbWlseSB2YWx1ZSB0byBhbiBJbnRFbnVtIG1lbWJlci4KIApAQCAtMTEyLDYgKzExNyw5IEBACiAgICAgX19hbGxfXy5hcHBlbmQoImVycm9yVGFiIikKIAogCitjbGFzcyBfR2l2ZXVwT25TZW5kZmlsZShFeGNlcHRpb24pOiBwYXNzCisKKwogY2xhc3Mgc29ja2V0KF9zb2NrZXQuc29ja2V0KToKIAogICAgICIiIkEgc3ViY2xhc3Mgb2YgX3NvY2tldC5zb2NrZXQgYWRkaW5nIHRoZSBtYWtlZmlsZSgpIG1ldGhvZC4iIiIKQEAgLTE0MSw3ICsxNDksNyBAQAogICAgICAgICBjbG9zZWQgPSBnZXRhdHRyKHNlbGYsICdfY2xvc2VkJywgRmFsc2UpCiAgICAgICAgIHMgPSAiPCVzLiVzJXMgZmQ9JWksIGZhbWlseT0lcywgdHlwZT0lcywgcHJvdG89JWkiIFwKICAgICAgICAgICAgICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCi0gICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKICAgICAgICAgICAgICAgICIgW2Nsb3NlZF0iIGlmIGNsb3NlZCBlbHNlICIiLAogICAgICAgICAgICAgICAgc2VsZi5maWxlbm8oKSwKICAgICAgICAgICAgICAgIHNlbGYuZmFtaWx5LApAQCAtMjM1LDYgKzI0MywxNDkgQEAKICAgICAgICAgdGV4dC5tb2RlID0gbW9kZQogICAgICAgICByZXR1cm4gdGV4dAogCisgICAgaWYgaGFzYXR0cihvcywgJ3NlbmRmaWxlJyk6CisKKyAgICAgICAgZGVmIF9zZW5kZmlsZV91c2Vfc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2VuZGZpbGVfcGFyYW1zKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgICAgICBzb2Nrbm8gPSBzZWxmLmZpbGVubygpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmlsZW5vID0gZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24pIGFzIGVycjoKKyAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpICAjIG5vdCBhIHJlZ3VsYXIgZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZzaXplID0gb3MuZnN0YXQoZmlsZW5vKS5zdF9zaXplCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpICAjIG5vdCBhIHJlZ3VsYXIgZmlsZQorICAgICAgICAgICAgaWYgbm90IGZzaXplOgorICAgICAgICAgICAgICAgIHJldHVybiAwICAjIGVtcHR5IGZpbGUKKyAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IGZzaXplIGlmIG5vdCBjb3VudCBlbHNlIGNvdW50CisKKyAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQorICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vbi1ibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgICAgICMgcG9sbC9zZWxlY3QgaGF2ZSB0aGUgYWR2YW50YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55CisgICAgICAgICAgICAjIGV4dHJhIGZpbGUgZGVzY3JpcHRvciwgY29udHJhcmlseSB0byBlcG9sbC9rcXVldWUKKyAgICAgICAgICAgICMgKGFsc28sIHRoZXkgcmVxdWlyZSBhIHNpbmdsZSBzeXNjYWxsKS4KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IoKQorICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc29ja25vLCBzZWxlY3RvcnMuRVZFTlRfV1JJVEUpCisKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAorICAgICAgICAgICAgc2VsZWN0b3Jfc2VsZWN0ID0gc2VsZWN0b3Iuc2VsZWN0CisgICAgICAgICAgICBvc19zZW5kZmlsZSA9IG9zLnNlbmRmaWxlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBhbmQgbm90IHNlbGVjdG9yX3NlbGVjdCh0aW1lb3V0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIF9zb2NrZXQudGltZW91dCgndGltZWQgb3V0JykKKyAgICAgICAgICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NpemUgPSBjb3VudCAtIHRvdGFsX3NlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJsb2Nrc2l6ZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBvc19zZW5kZmlsZShzb2Nrbm8sIGZpbGVubywgb2Zmc2V0LCBibG9ja3NpemUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgdGltZW91dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEJsb2NrIHVudGlsIHRoZSBzb2NrZXQgaXMgcmVhZHkgdG8gc2VuZCBzb21lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhOyBhdm9pZHMgaG9nZ2luZyBDUFUgcmVzb3VyY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yX3NlbGVjdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b3RhbF9zZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBjYW4gZ2V0IGhlcmUgZm9yIGRpZmZlcmVudCByZWFzb25zLCB0aGUgbWFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25lIGJlaW5nICdmaWxlJyBpcyBub3QgYSByZWd1bGFyIG1tYXAoMiktbGlrZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBmYWxsIGJhY2sgb24gdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBsYWluIHNlbmQoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZShlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnIgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgICMgRU9GCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX3NlbnQKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKKyAgICAgICAgICAgICAgICAgICAgZmlsZS5zZWVrKG9mZnNldCkKKyAgICBlbHNlOgorICAgICAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CisgICAgICAgICAgICByYWlzZSBfR2l2ZXVwT25TZW5kZmlsZSgKKyAgICAgICAgICAgICAgICAib3Muc2VuZGZpbGUoKSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKQorCisgICAgZGVmIF9zZW5kZmlsZV91c2Vfc2VuZChzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3NlbmRmaWxlX3BhcmFtcyhmaWxlLCBvZmZzZXQsIGNvdW50KQorICAgICAgICBpZiBzZWxmLmdldHRpbWVvdXQoKSA9PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm9uLWJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBvZmZzZXQ6CisgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0KQorICAgICAgICBibG9ja3NpemUgPSBtaW4oY291bnQsIDgxOTIpIGlmIGNvdW50IGVsc2UgODE5MgorICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICAjIGxvY2FsaXplIHZhcmlhYmxlIGFjY2VzcyB0byBtaW5pbWl6ZSBvdmVyaGVhZAorICAgICAgICBmaWxlX3JlYWQgPSBmaWxlLnJlYWQKKyAgICAgICAgc29ja19zZW5kID0gc2VsZi5zZW5kCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCAtIHRvdGFsX3NlbnQsIGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2tzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGRhdGEgPSBtZW1vcnl2aWV3KGZpbGVfcmVhZChibG9ja3NpemUpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBFT0YKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZW50ID0gc29ja19zZW5kKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZW50IDwgbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhW3NlbnQ6XQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIHRvdGFsX3NlbnQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPiAwIGFuZCBoYXNhdHRyKGZpbGUsICdzZWVrJyk6CisgICAgICAgICAgICAgICAgZmlsZS5zZWVrKG9mZnNldCArIHRvdGFsX3NlbnQpCisKKyAgICBkZWYgX2NoZWNrX3NlbmRmaWxlX3BhcmFtcyhzZWxmLCBmaWxlLCBvZmZzZXQsIGNvdW50KToKKyAgICAgICAgaWYgJ2InIG5vdCBpbiBnZXRhdHRyKGZpbGUsICdtb2RlJywgJ2InKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImZpbGUgc2hvdWxkIGJlIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5vdCBzZWxmLnR5cGUgJiBTT0NLX1NUUkVBTToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9ubHkgU09DS19TVFJFQU0gdHlwZSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBjb3VudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvdW50LCBpbnQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgImNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIChnb3QgeyFyfSkiLmZvcm1hdChjb3VudCkpCisgICAgICAgICAgICBpZiBjb3VudCA8PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciAoZ290IHshcn0pIi5mb3JtYXQoY291bnQpKQorCisgICAgZGVmIHNlbmRmaWxlKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgIiIic2VuZGZpbGUoZmlsZVssIG9mZnNldFssIGNvdW50XV0pIC0+IHNlbnQKKworICAgICAgICBTZW5kIGEgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZCBieSB1c2luZyBoaWdoLXBlcmZvcm1hbmNlCisgICAgICAgIG9zLnNlbmRmaWxlKCkgYW5kIHJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoCisgICAgICAgIHdlcmUgc2VudC4KKyAgICAgICAgKmZpbGUqIG11c3QgYmUgYSByZWd1bGFyIGZpbGUgb2JqZWN0IG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4KKyAgICAgICAgSWYgb3Muc2VuZGZpbGUoKSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIFdpbmRvd3MpIG9yIGZpbGUgaXMKKyAgICAgICAgbm90IGEgcmVndWxhciBmaWxlIHNvY2tldC5zZW5kKCkgd2lsbCBiZSB1c2VkIGluc3RlYWQuCisgICAgICAgICpvZmZzZXQqIHRlbGxzIGZyb20gd2hlcmUgdG8gc3RhcnQgcmVhZGluZyB0aGUgZmlsZS4KKyAgICAgICAgSWYgc3BlY2lmaWVkLCAqY291bnQqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdG8gdHJhbnNtaXQKKyAgICAgICAgYXMgb3Bwb3NlZCB0byBzZW5kaW5nIHRoZSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkLgorICAgICAgICBGaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgb24gcmV0dXJuIG9yIGFsc28gaW4gY2FzZSBvZiBlcnJvciBpbgorICAgICAgICB3aGljaCBjYXNlIGZpbGUudGVsbCgpIGNhbiBiZSB1c2VkIHRvIGZpZ3VyZSBvdXQgdGhlIG51bWJlciBvZgorICAgICAgICBieXRlcyB3aGljaCB3ZXJlIHNlbnQuCisgICAgICAgIFRoZSBzb2NrZXQgbXVzdCBiZSBvZiBTT0NLX1NUUkVBTSB0eXBlLgorICAgICAgICBOb24tYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKyAgICAgICAgZXhjZXB0IF9HaXZldXBPblNlbmRmaWxlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRmaWxlX3VzZV9zZW5kKGZpbGUsIG9mZnNldCwgY291bnQpCisKICAgICBkZWYgX2RlY3JlZl9zb2NrZXRpb3Moc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2lvX3JlZnMgPiAwOgogICAgICAgICAgICAgc2VsZi5faW9fcmVmcyAtPSAxCkBAIC0zMjUsNiArNDc2LDUyIEBACiAgICAgICAgIGIgPSBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgYi5kZXRhY2goKSkKICAgICAgICAgcmV0dXJuIGEsIGIKIAorZWxzZToKKworICAgICMgT3JpZ2luOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS80MzI1NzgzLCBieSBHZWVydCBKYW5zZW4uICBQdWJsaWMgZG9tYWluLgorICAgIGRlZiBzb2NrZXRwYWlyKGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wKToKKyAgICAgICAgaWYgZmFtaWx5ID09IEFGX0lORVQ6CisgICAgICAgICAgICBob3N0ID0gX0xPQ0FMSE9TVAorICAgICAgICBlbGlmIGZhbWlseSA9PSBBRl9JTkVUNjoKKyAgICAgICAgICAgIGhvc3QgPSBfTE9DQUxIT1NUX1Y2CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IEFGX0lORVQgYW5kIEFGX0lORVQ2IHNvY2tldCBhZGRyZXNzIGZhbWlsaWVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQiKQorICAgICAgICBpZiB0eXBlICE9IFNPQ0tfU1RSRUFNOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBTT0NLX1NUUkVBTSBzb2NrZXQgdHlwZSBpcyBzdXBwb3J0ZWQiKQorICAgICAgICBpZiBwcm90byAhPSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBwcm90b2NvbCB6ZXJvIGlzIHN1cHBvcnRlZCIpCisKKyAgICAgICAgIyBXZSBjcmVhdGUgYSBjb25uZWN0ZWQgVENQIHNvY2tldC4gTm90ZSB0aGUgdHJpY2sgd2l0aAorICAgICAgICAjIHNldGJsb2NraW5nKEZhbHNlKSB0aGF0IHByZXZlbnRzIHVzIGZyb20gaGF2aW5nIHRvIGNyZWF0ZSBhIHRocmVhZC4KKyAgICAgICAgbHNvY2sgPSBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbHNvY2suYmluZCgoaG9zdCwgMCkpCisgICAgICAgICAgICBsc29jay5saXN0ZW4oKQorICAgICAgICAgICAgIyBPbiBJUHY2LCBpZ25vcmUgZmxvd19pbmZvIGFuZCBzY29wZV9pZAorICAgICAgICAgICAgYWRkciwgcG9ydCA9IGxzb2NrLmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICBjc29jayA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNzb2NrLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY3NvY2suY29ubmVjdCgoYWRkciwgcG9ydCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IChCbG9ja2luZ0lPRXJyb3IsIEludGVycnVwdGVkRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgY3NvY2suc2V0YmxvY2tpbmcoVHJ1ZSkKKyAgICAgICAgICAgICAgICBzc29jaywgXyA9IGxzb2NrLmFjY2VwdCgpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgY3NvY2suY2xvc2UoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsc29jay5jbG9zZSgpCisgICAgICAgIHJldHVybiAoc3NvY2ssIGNzb2NrKQorCitzb2NrZXRwYWlyLl9fZG9jX18gPSAiIiJzb2NrZXRwYWlyKFtmYW1pbHlbLCB0eXBlWywgcHJvdG9dXV0pIC0+IChzb2NrZXQgb2JqZWN0LCBzb2NrZXQgb2JqZWN0KQorQ3JlYXRlIGEgcGFpciBvZiBzb2NrZXQgb2JqZWN0cyBmcm9tIHRoZSBzb2NrZXRzIHJldHVybmVkIGJ5IHRoZSBwbGF0Zm9ybQorc29ja2V0cGFpcigpIGZ1bmN0aW9uLgorVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHNvY2tldCgpIGV4Y2VwdCB0aGUgZGVmYXVsdCBmYW1pbHkgaXMgQUZfVU5JWAoraWYgZGVmaW5lZCBvbiB0aGUgcGxhdGZvcm07IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgQUZfSU5FVC4KKyIiIgogCiBfYmxvY2tpbmdfZXJybm9zID0geyBFQUdBSU4sIEVXT1VMREJMT0NLIH0KIApAQCAtMzc1LDggKzU3Miw2IEBACiAgICAgICAgICAgICBleGNlcHQgdGltZW91dDoKICAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0X29jY3VycmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIGluIF9ibG9ja2luZ19lcnJub3M6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA1Y2I4OWJlLi4wY2U4ZTgxIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTk0LDcgKzk0LDcgQEAKIEFub3RoZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlcXVlc3RzIGluIGFuCiBlbnZpcm9ubWVudCB0aGF0IHN1cHBvcnRzIG5laXRoZXIgdGhyZWFkcyBub3IgZm9yayAob3Igd2hlcmUgdGhlc2UgYXJlCiB0b28gZXhwZW5zaXZlIG9yIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBzZXJ2aWNlKSBpcyB0byBtYWludGFpbiBhbgotZXhwbGljaXQgdGFibGUgb2YgcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2Ugc2VsZWN0KCkgdG8KK2V4cGxpY2l0IHRhYmxlIG9mIHBhcnRpYWxseSBmaW5pc2hlZCByZXF1ZXN0cyBhbmQgdG8gdXNlIGEgc2VsZWN0b3IgdG8KIGRlY2lkZSB3aGljaCByZXF1ZXN0IHRvIHdvcmsgb24gbmV4dCAob3Igd2hldGhlciB0byBoYW5kbGUgYSBuZXcKIGluY29taW5nIHJlcXVlc3QpLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBzdHJlYW0gc2VydmljZXMKIHdoZXJlIGVhY2ggY2xpZW50IGNhbiBwb3RlbnRpYWxseSBiZSBjb25uZWN0ZWQgZm9yIGEgbG9uZyB0aW1lIChpZgpAQCAtMTA0LDcgKzEwNCw2IEBACiAtIFN0YW5kYXJkIGNsYXNzZXMgZm9yIFN1biBSUEMgKHdoaWNoIHVzZXMgZWl0aGVyIFVEUCBvciBUQ1ApCiAtIFN0YW5kYXJkIG1peC1pbiBjbGFzc2VzIHRvIGltcGxlbWVudCB2YXJpb3VzIGF1dGhlbnRpY2F0aW9uCiAgIGFuZCBlbmNyeXB0aW9uIHNjaGVtZXMKLS0gU3RhbmRhcmQgZnJhbWV3b3JrIGZvciBzZWxlY3QtYmFzZWQgbXVsdGlwbGV4aW5nCiAKIFhYWCBPcGVuIHByb2JsZW1zOgogLSBXaGF0IHRvIGRvIHdpdGggb3V0LW9mLWJhbmQgZGF0YT8KQEAgLTEzMCwxMyArMTI5LDE0IEBACiAKIAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAogX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwgIkZvcmtpbmdVRFBTZXJ2ZXIiLAogICAgICAgICAgICAiRm9ya2luZ1RDUFNlcnZlciIsICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKQEAgLTE0NywxNCArMTQ3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICJUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyIiwKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhEYXRhZ3JhbVNlcnZlciJdKQogCi1kZWYgX2VpbnRyX3JldHJ5KGZ1bmMsICphcmdzKToKLSAgICAiIiJyZXN0YXJ0IGEgc3lzdGVtIGNhbGwgaW50ZXJydXB0ZWQgYnkgRUlOVFIiIiIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyMgcG9sbC9zZWxlY3QgaGF2ZSB0aGUgYWR2YW50YWdlIG9mIG5vdCByZXF1aXJpbmcgYW55IGV4dHJhIGZpbGUgZGVzY3JpcHRvciwKKyMgY29udHJhcmlseSB0byBlcG9sbC9rcXVldWUgKGFsc28sIHRoZXkgcmVxdWlyZSBhIHNpbmdsZSBzeXNjYWxsKS4KK2lmIGhhc2F0dHIoc2VsZWN0b3JzLCAnUG9sbFNlbGVjdG9yJyk6CisgICAgX1NlcnZlclNlbGVjdG9yID0gc2VsZWN0b3JzLlBvbGxTZWxlY3RvcgorZWxzZToKKyAgICBfU2VydmVyU2VsZWN0b3IgPSBzZWxlY3RvcnMuU2VsZWN0U2VsZWN0b3IKKwogCiBjbGFzcyBCYXNlU2VydmVyOgogCkBAIC0xNjYsNyArMTY1LDcgQEAKICAgICAtIHNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbD0wLjUpCiAgICAgLSBzaHV0ZG93bigpCiAgICAgLSBoYW5kbGVfcmVxdWVzdCgpICAjIGlmIHlvdSBkbyBub3QgdXNlIHNlcnZlX2ZvcmV2ZXIoKQotICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0KCkKKyAgICAtIGZpbGVubygpIC0+IGludCAgICMgZm9yIHNlbGVjdG9yCiAKICAgICBNZXRob2RzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW46CiAKQEAgLTIyNywxNyArMjI2LDE5IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9faXNfc2h1dF9kb3duLmNsZWFyKCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0OgotICAgICAgICAgICAgICAgICMgWFhYOiBDb25zaWRlciB1c2luZyBhbm90aGVyIGZpbGUgZGVzY3JpcHRvciBvcgotICAgICAgICAgICAgICAgICMgY29ubmVjdGluZyB0byB0aGUgc29ja2V0IHRvIHdha2UgdGhpcyB1cCBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgIyBwb2xsaW5nLiBQb2xsaW5nIHJlZHVjZXMgb3VyIHJlc3BvbnNpdmVuZXNzIHRvIGEKLSAgICAgICAgICAgICAgICAjIHNodXRkb3duIHJlcXVlc3QgYW5kIHdhc3RlcyBjcHUgYXQgYWxsIG90aGVyIHRpbWVzLgotICAgICAgICAgICAgICAgIHIsIHcsIGUgPSBfZWludHJfcmV0cnkoc2VsZWN0LnNlbGVjdCwgW3NlbGZdLCBbXSwgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xsX2ludGVydmFsKQotICAgICAgICAgICAgICAgIGlmIHNlbGYgaW4gcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisgICAgICAgICAgICAjIFhYWDogQ29uc2lkZXIgdXNpbmcgYW5vdGhlciBmaWxlIGRlc2NyaXB0b3Igb3IgY29ubmVjdGluZyB0byB0aGUKKyAgICAgICAgICAgICMgc29ja2V0IHRvIHdha2UgdGhpcyB1cCBpbnN0ZWFkIG9mIHBvbGxpbmcuIFBvbGxpbmcgcmVkdWNlcyBvdXIKKyAgICAgICAgICAgICMgcmVzcG9uc2l2ZW5lc3MgdG8gYSBzaHV0ZG93biByZXF1ZXN0IGFuZCB3YXN0ZXMgY3B1IGF0IGFsbCBvdGhlcgorICAgICAgICAgICAgIyB0aW1lcy4KKyAgICAgICAgICAgIHdpdGggX1NlcnZlclNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CisgICAgICAgICAgICAgICAgc2VsZWN0b3IucmVnaXN0ZXIoc2VsZiwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCiAKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZpY2VfYWN0aW9ucygpCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0OgorICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHNlbGVjdG9yLnNlbGVjdChwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgICAgICAgICBpZiByZWFkeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uc2V0KCkKQEAgLTI2MCwxNiArMjYxLDE2IEBACiAgICAgICAgICIiIgogICAgICAgICBwYXNzCiAKLSAgICAjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGhhbmRsaW5nLCBnZXR0aW5nLCBwcm9jZXNzaW5nIGFuZAotICAgICMgZmluaXNoaW5nIGEgcmVxdWVzdCBpcyBmYWlybHkgYXJiaXRyYXJ5LiAgUmVtZW1iZXI6CisgICAgIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBoYW5kbGluZywgZ2V0dGluZywgcHJvY2Vzc2luZyBhbmQgZmluaXNoaW5nIGEKKyAgICAjIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgICMKLSAgICAjIC0gaGFuZGxlX3JlcXVlc3QoKSBpcyB0aGUgdG9wLWxldmVsIGNhbGwuICBJdCBjYWxscwotICAgICMgICBzZWxlY3QsIGdldF9yZXF1ZXN0KCksIHZlcmlmeV9yZXF1ZXN0KCkgYW5kIHByb2Nlc3NfcmVxdWVzdCgpCisgICAgIyAtIGhhbmRsZV9yZXF1ZXN0KCkgaXMgdGhlIHRvcC1sZXZlbCBjYWxsLiAgSXQgY2FsbHMgc2VsZWN0b3Iuc2VsZWN0KCksCisgICAgIyAgIGdldF9yZXF1ZXN0KCksIHZlcmlmeV9yZXF1ZXN0KCkgYW5kIHByb2Nlc3NfcmVxdWVzdCgpCiAgICAgIyAtIGdldF9yZXF1ZXN0KCkgaXMgZGlmZmVyZW50IGZvciBzdHJlYW0gb3IgZGF0YWdyYW0gc29ja2V0cwotICAgICMgLSBwcm9jZXNzX3JlcXVlc3QoKSBpcyB0aGUgcGxhY2UgdGhhdCBtYXkgZm9yayBhIG5ldyBwcm9jZXNzCi0gICAgIyAgIG9yIGNyZWF0ZSBhIG5ldyB0aHJlYWQgdG8gZmluaXNoIHRoZSByZXF1ZXN0Ci0gICAgIyAtIGZpbmlzaF9yZXF1ZXN0KCkgaW5zdGFudGlhdGVzIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3M7Ci0gICAgIyAgIHRoaXMgY29uc3RydWN0b3Igd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgYWxsIGJ5IGl0c2VsZgorICAgICMgLSBwcm9jZXNzX3JlcXVlc3QoKSBpcyB0aGUgcGxhY2UgdGhhdCBtYXkgZm9yayBhIG5ldyBwcm9jZXNzIG9yIGNyZWF0ZSBhCisgICAgIyAgIG5ldyB0aHJlYWQgdG8gZmluaXNoIHRoZSByZXF1ZXN0CisgICAgIyAtIGZpbmlzaF9yZXF1ZXN0KCkgaW5zdGFudGlhdGVzIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3M7IHRoaXMKKyAgICAjICAgY29uc3RydWN0b3Igd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgYWxsIGJ5IGl0c2VsZgogCiAgICAgZGVmIGhhbmRsZV9yZXF1ZXN0KHNlbGYpOgogICAgICAgICAiIiJIYW5kbGUgb25lIHJlcXVlc3QsIHBvc3NpYmx5IGJsb2NraW5nLgpAQCAtMjgzLDE4ICsyODQsMzAgQEAKICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLnRpbWVvdXQKICAgICAgICAgZWxpZiBzZWxmLnRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0aW1lb3V0ID0gbWluKHRpbWVvdXQsIHNlbGYudGltZW91dCkKLSAgICAgICAgZmRfc2V0cyA9IF9laW50cl9yZXRyeShzZWxlY3Quc2VsZWN0LCBbc2VsZl0sIFtdLCBbXSwgdGltZW91dCkKLSAgICAgICAgaWYgbm90IGZkX3NldHNbMF06Ci0gICAgICAgICAgICBzZWxmLmhhbmRsZV90aW1lb3V0KCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZSgpICsgdGltZW91dAorCisgICAgICAgICMgV2FpdCB1bnRpbCBhIHJlcXVlc3QgYXJyaXZlcyBvciB0aGUgdGltZW91dCBleHBpcmVzIC0gdGhlIGxvb3AgaXMKKyAgICAgICAgIyBuZWNlc3NhcnkgdG8gYWNjb21tb2RhdGUgZWFybHkgd2FrZXVwcyBkdWUgdG8gRUlOVFIuCisgICAgICAgIHdpdGggX1NlcnZlclNlbGVjdG9yKCkgYXMgc2VsZWN0b3I6CisgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3RlcihzZWxmLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKKworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZWFkeSA9IHNlbGVjdG9yLnNlbGVjdCh0aW1lb3V0KQorICAgICAgICAgICAgICAgIGlmIHJlYWR5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlX3RpbWVvdXQoKQogCiAgICAgZGVmIF9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKHNlbGYpOgogICAgICAgICAiIiJIYW5kbGUgb25lIHJlcXVlc3QsIHdpdGhvdXQgYmxvY2tpbmcuCiAKLSAgICAgICAgSSBhc3N1bWUgdGhhdCBzZWxlY3Quc2VsZWN0IGhhcyByZXR1cm5lZCB0aGF0IHRoZSBzb2NrZXQgaXMKLSAgICAgICAgcmVhZGFibGUgYmVmb3JlIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCwgc28gdGhlcmUgc2hvdWxkIGJlCi0gICAgICAgIG5vIHJpc2sgb2YgYmxvY2tpbmcgaW4gZ2V0X3JlcXVlc3QoKS4KKyAgICAgICAgSSBhc3N1bWUgdGhhdCBzZWxlY3Rvci5zZWxlY3QoKSBoYXMgcmV0dXJuZWQgdGhhdCB0aGUgc29ja2V0IGlzCisgICAgICAgIHJlYWRhYmxlIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQsIHNvIHRoZXJlIHNob3VsZCBiZSBubyByaXNrIG9mCisgICAgICAgIGJsb2NraW5nIGluIGdldF9yZXF1ZXN0KCkuCiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuZ2V0X3JlcXVlc3QoKQpAQCAtMzc3LDcgKzM5MCw3IEBACiAgICAgLSBzZXJ2ZV9mb3JldmVyKHBvbGxfaW50ZXJ2YWw9MC41KQogICAgIC0gc2h1dGRvd24oKQogICAgIC0gaGFuZGxlX3JlcXVlc3QoKSAgIyBpZiB5b3UgZG9uJ3QgdXNlIHNlcnZlX2ZvcmV2ZXIoKQotICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0KCkKKyAgICAtIGZpbGVubygpIC0+IGludCAgICMgZm9yIHNlbGVjdG9yCiAKICAgICBNZXRob2RzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW46CiAKQEAgLTQ2Myw3ICs0NzYsNyBAQAogICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBzb2NrZXQgZmlsZSBudW1iZXIuCiAKLSAgICAgICAgSW50ZXJmYWNlIHJlcXVpcmVkIGJ5IHNlbGVjdCgpLgorICAgICAgICBJbnRlcmZhY2UgcmVxdWlyZWQgYnkgc2VsZWN0b3IuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5maWxlbm8oKQpAQCAtNTQwLDggKzU1Myw2IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCiAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CmluZGV4IGE4MzQ4YjQuLmY1ODc1OTYgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKQEAgLTExMSw2ICsxMTEsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKICAgICAgICAgICAgIHJvd1syKioxMDAwXQogCisgICAgZGVmIENoZWNrU3FsaXRlUm93U2xpY2Uoc2VsZik6CisgICAgICAgICMgQSBzcWxpdGUuUm93IGNhbiBiZSBzbGljZWQgbGlrZSBhIGxpc3QuCisgICAgICAgIHNlbGYuY29uLnJvd19mYWN0b3J5ID0gc3FsaXRlLlJvdworICAgICAgICByb3cgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgMSwgMiwgMywgNCIpLmZldGNob25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMDowXSwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzA6MV0sICgxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzE6M10sICgyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMzoxXSwgKCkpCisgICAgICAgICMgRXhwbGljaXQgYm91bmRzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMTpdLCAoMiwgMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzozXSwgKDEsIDIsIDMpKQorICAgICAgICAjIFNsaWNlcyBjYW4gdXNlIG5lZ2F0aXZlIGluZGljZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93Wy0yOi0xXSwgKDMsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbLTI6XSwgKDMsIDQpKQorICAgICAgICAjIFNsaWNpbmcgc3VwcG9ydHMgc3RlcHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzA6NDoyXSwgKDEsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1szOjA6LTJdLCAoNCwgMikpCisKICAgICBkZWYgQ2hlY2tTcWxpdGVSb3dJdGVyKHNlbGYpOgogICAgICAgICAiIiJDaGVja3MgaWYgdGhlIHJvdyBvYmplY3QgaXMgaXRlcmFibGUiIiIKICAgICAgICAgc2VsZi5jb24ucm93X2ZhY3RvcnkgPSBzcWxpdGUuUm93CmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggNTUwZWExNS4uNTAyYjA2MSAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtMTMsMTkgKzEzLDEzIEBACiBpbXBvcnQgX3NyZQogaW1wb3J0IHNyZV9wYXJzZQogZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqCi1mcm9tIF9zcmUgaW1wb3J0IE1BWFJFUEVBVAogCiBhc3NlcnQgX3NyZS5NQUdJQyA9PSBNQUdJQywgIlNSRSBtb2R1bGUgbWlzbWF0Y2giCiAKLWlmIF9zcmUuQ09ERVNJWkUgPT0gMjoKLSAgICBNQVhDT0RFID0gNjU1MzUKLWVsc2U6Ci0gICAgTUFYQ09ERSA9IDB4RkZGRkZGRkYKLQotX0xJVEVSQUxfQ09ERVMgPSBzZXQoW0xJVEVSQUwsIE5PVF9MSVRFUkFMXSkKLV9SRVBFQVRJTkdfQ09ERVMgPSBzZXQoW1JFUEVBVCwgTUlOX1JFUEVBVCwgTUFYX1JFUEVBVF0pCi1fU1VDQ0VTU19DT0RFUyA9IHNldChbU1VDQ0VTUywgRkFJTFVSRV0pCi1fQVNTRVJUX0NPREVTID0gc2V0KFtBU1NFUlQsIEFTU0VSVF9OT1RdKQorX0xJVEVSQUxfQ09ERVMgPSB7TElURVJBTCwgTk9UX0xJVEVSQUx9CitfUkVQRUFUSU5HX0NPREVTID0ge1JFUEVBVCwgTUlOX1JFUEVBVCwgTUFYX1JFUEVBVH0KK19TVUNDRVNTX0NPREVTID0ge1NVQ0NFU1MsIEZBSUxVUkV9CitfQVNTRVJUX0NPREVTID0ge0FTU0VSVCwgQVNTRVJUX05PVH0KIAogIyBTZXRzIG9mIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIHdoaWNoIGhhdmUgdGhlIHNhbWUgdXBwZXJjYXNlLgogX2VxdWl2YWxlbmNlcyA9ICgKQEAgLTg2LDc1ICs4MCw3NSBAQAogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgogICAgICAgICAgICAgICAgIGxvID0gX3NyZS5nZXRsb3dlcihhdiwgZmxhZ3MpCiAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGxvIGluIGZpeGVzOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbSU5fSUdOT1JFXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChJTl9JR05PUkUpCiAgICAgICAgICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAgICAgIGlmIG9wIGlzIE5PVF9MSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW05FR0FURV0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE5FR0FURSkKICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gKGxvLCkgKyBmaXhlc1tsb106Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTElURVJBTF0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KExJVEVSQUwpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0KGspCi0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tGQUlMVVJFXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChGQUlMVVJFKQogICAgICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbT1BfSUdOT1JFW29wXV0pCisgICAgICAgICAgICAgICAgICAgIGVtaXQoT1BfSUdOT1JFW29wXSkKICAgICAgICAgICAgICAgICAgICAgZW1pdChsbykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgSU46CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW09QX0lHTk9SRVtvcF1dKQorICAgICAgICAgICAgICAgIGVtaXQoT1BfSUdOT1JFW29wXSkKICAgICAgICAgICAgICAgICBkZWYgZml4dXAobGl0ZXJhbCwgZmxhZ3M9ZmxhZ3MpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NyZS5nZXRsb3dlcihsaXRlcmFsLCBmbGFncykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgICAgIGZpeHVwID0gTm9uZQogICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgIF9jb21waWxlX2NoYXJzZXQoYXYsIGZsYWdzLCBjb2RlLCBmaXh1cCwgZml4ZXMpCiAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgZWxpZiBvcCBpcyBBTlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RPVEFMTDoKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbQU5ZX0FMTF0pCisgICAgICAgICAgICAgICAgZW1pdChBTllfQUxMKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbQU5ZXSkKKyAgICAgICAgICAgICAgICBlbWl0KEFOWSkKICAgICAgICAgZWxpZiBvcCBpbiBSRVBFQVRJTkdfQ09ERVM6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1RFTVBMQVRFOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgdGVtcGxhdGUgb3BlcmF0b3IiKQorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgdGVtcGxhdGUgb3BlcmF0b3IgJXIiICUgKG9wLCkpCiAgICAgICAgICAgICBlbGlmIF9zaW1wbGUoYXYpIGFuZCBvcCBpcyBub3QgUkVQRUFUOgogICAgICAgICAgICAgICAgIGlmIG9wIGlzIE1BWF9SRVBFQVQ6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tSRVBFQVRfT05FXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChSRVBFQVRfT05FKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tNSU5fUkVQRUFUX09ORV0pCisgICAgICAgICAgICAgICAgICAgIGVtaXQoTUlOX1JFUEVBVF9PTkUpCiAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBlbWl0KGF2WzBdKQogICAgICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tTVUNDRVNTXSkKKyAgICAgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICAgICAgY29kZVtza2lwXSA9IF9sZW4oY29kZSkgLSBza2lwCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tSRVBFQVRdKQorICAgICAgICAgICAgICAgIGVtaXQoUkVQRUFUKQogICAgICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAgZW1pdChhdlswXSkKICAgICAgICAgICAgICAgICBlbWl0KGF2WzFdKQogICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzJdLCBmbGFncykKICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgICAgICBpZiBvcCBpcyBNQVhfUkVQRUFUOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUFYX1VOVElMXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChNQVhfVU5USUwpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW01JTl9VTlRJTF0pCisgICAgICAgICAgICAgICAgICAgIGVtaXQoTUlOX1VOVElMKQogICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46CiAgICAgICAgICAgICBpZiBhdlswXToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUFSS10pCisgICAgICAgICAgICAgICAgZW1pdChNQVJLKQogICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIpCiAgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICAgaWYgYXZbMF06Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW01BUktdKQorICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKICAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKzEpCiAgICAgICAgIGVsaWYgb3AgaW4gU1VDQ0VTU19DT0RFUzoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICBlbGlmIG9wIGluIEFTU0VSVF9DT0RFUzoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgIGlmIGF2WzBdID49IDA6CiAgICAgICAgICAgICAgICAgZW1pdCgwKSAjIGxvb2sgYWhlYWQKQEAgLTE2NCw1NyArMTU4LDU3IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJsb29rLWJlaGluZCByZXF1aXJlcyBmaXhlZC13aWR0aCBwYXR0ZXJuIikKICAgICAgICAgICAgICAgICBlbWl0KGxvKSAjIGxvb2sgYmVoaW5kCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCi0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbU1VDQ0VTU10pCisgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgZWxpZiBvcCBpcyBDQUxMOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXYsIGZsYWdzKQotICAgICAgICAgICAgZW1pdChPUENPREVTW1NVQ0NFU1NdKQorICAgICAgICAgICAgZW1pdChTVUNDRVNTKQogICAgICAgICAgICAgY29kZVtza2lwXSA9IF9sZW4oY29kZSkgLSBza2lwCiAgICAgICAgIGVsaWYgb3AgaXMgQVQ6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTVVMVElMSU5FOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTVVMVElMSU5FLmdldChhdiwgYXYpCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IEFUX0xPQ0FMRS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9VTklDT0RFLmdldChhdiwgYXYpCi0gICAgICAgICAgICBlbWl0KEFUQ09ERVNbYXZdKQorICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIHRhaWwgPSBbXQogICAgICAgICAgICAgdGFpbGFwcGVuZCA9IHRhaWwuYXBwZW5kCiAgICAgICAgICAgICBmb3IgYXYgaW4gYXZbMV06CiAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXYsIGZsYWdzKQogICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2LCBmbGFncykKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbSlVNUF0pCisgICAgICAgICAgICAgICAgZW1pdChKVU1QKQogICAgICAgICAgICAgICAgIHRhaWxhcHBlbmQoX2xlbihjb2RlKSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKLSAgICAgICAgICAgIGVtaXQoMCkgIyBlbmQgb2YgYnJhbmNoCisgICAgICAgICAgICBlbWl0KEZBSUxVUkUpICMgZW5kIG9mIGJyYW5jaAogICAgICAgICAgICAgZm9yIHRhaWwgaW4gdGFpbDoKICAgICAgICAgICAgICAgICBjb2RlW3RhaWxdID0gX2xlbihjb2RlKSAtIHRhaWwKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgYXYgPSBDSF9MT0NBTEVbYXZdCiAgICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgICBhdiA9IENIX1VOSUNPREVbYXZdCi0gICAgICAgICAgICBlbWl0KENIQ09ERVNbYXZdKQorICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbT1BfSUdOT1JFW29wXV0pCisgICAgICAgICAgICAgICAgZW1pdChPUF9JR05PUkVbb3BdKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBlbWl0KGF2LTEpCiAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBlbWl0KGF2WzBdLTEpCiAgICAgICAgICAgICBza2lweWVzID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQogICAgICAgICAgICAgaWYgYXZbMl06Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW0pVTVBdKQorICAgICAgICAgICAgICAgIGVtaXQoSlVNUCkKICAgICAgICAgICAgICAgICBza2lwbm8gPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICAgICAgY29kZVtza2lweWVzXSA9IF9sZW4oY29kZSkgLSBza2lweWVzICsgMQogICAgICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzJdLCBmbGFncykKQEAgLTIyMiwxOSArMjE2LDE4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvZGVbc2tpcHllc10gPSBfbGVuKGNvZGUpIC0gc2tpcHllcyArIDEKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZSIsIG9wKQorICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUgJXIiICUgKG9wLCkpCiAKIGRlZiBfY29tcGlsZV9jaGFyc2V0KGNoYXJzZXQsIGZsYWdzLCBjb2RlLCBmaXh1cD1Ob25lLCBmaXhlcz1Ob25lKToKICAgICAjIGNvbXBpbGUgY2hhcnNldCBzdWJwcm9ncmFtCiAgICAgZW1pdCA9IGNvZGUuYXBwZW5kCi0gICAgZm9yIG9wLCBhdiBpbiBfb3B0aW1pemVfY2hhcnNldChjaGFyc2V0LCBmaXh1cCwgZml4ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpOgotICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgIGZvciBvcCwgYXYgaW4gX29wdGltaXplX2NoYXJzZXQoY2hhcnNldCwgZml4dXAsIGZpeGVzKToKKyAgICAgICAgZW1pdChvcCkKICAgICAgICAgaWYgb3AgaXMgTkVHQVRFOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICBlbWl0KGF2KQotICAgICAgICBlbGlmIG9wIGlzIFJBTkdFOgorICAgICAgICBlbGlmIG9wIGlzIFJBTkdFIG9yIG9wIGlzIFJBTkdFX0lHTk9SRToKICAgICAgICAgICAgIGVtaXQoYXZbMF0pCiAgICAgICAgICAgICBlbWl0KGF2WzFdKQogICAgICAgICBlbGlmIG9wIGlzIENIQVJTRVQ6CkBAIC0yNDMsMTYgKzIzNiwxNiBAQAogICAgICAgICAgICAgY29kZS5leHRlbmQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgQ0FURUdPUlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKLSAgICAgICAgICAgICAgICBlbWl0KENIQ09ERVNbQ0hfTE9DQUxFW2F2XV0pCisgICAgICAgICAgICAgICAgZW1pdChDSF9MT0NBTEVbYXZdKQogICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6Ci0gICAgICAgICAgICAgICAgZW1pdChDSENPREVTW0NIX1VOSUNPREVbYXZdXSkKKyAgICAgICAgICAgICAgICBlbWl0KENIX1VOSUNPREVbYXZdKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KENIQ09ERVNbYXZdKQorICAgICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigiaW50ZXJuYWw6IHVuc3VwcG9ydGVkIHNldCBvcGVyYXRvciIpCi0gICAgZW1pdChPUENPREVTW0ZBSUxVUkVdKQorICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCBzZXQgb3BlcmF0b3IgJXIiICUgKG9wLCkpCisgICAgZW1pdChGQUlMVVJFKQogCi1kZWYgX29wdGltaXplX2NoYXJzZXQoY2hhcnNldCwgZml4dXAsIGZpeGVzLCBpc3VuaWNvZGUpOgorZGVmIF9vcHRpbWl6ZV9jaGFyc2V0KGNoYXJzZXQsIGZpeHVwLCBmaXhlcyk6CiAgICAgIyBpbnRlcm5hbDogb3B0aW1pemUgY2hhcmFjdGVyIHNldAogICAgIG91dCA9IFtdCiAgICAgdGFpbCA9IFtdCkBAIC0yNjIsMTAgKzI1NSwxMCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZpeHVwOgotICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGZpeHVwKGF2KQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtpXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpeGVzIGFuZCBpIGluIGZpeGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGZpeGVzW2ldOgorICAgICAgICAgICAgICAgICAgICAgICAgbG8gPSBmaXh1cChhdikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBbbG9dID0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGxvIGluIGZpeGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIGZpeGVzW2xvXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtrXSA9IDEKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXBbYXZdID0gMQpAQCAtMjkxLDIxICsyODQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1VQ1MxIGNoYXJhY3RlciBjb2RlcwogICAgICAgICAgICAgICAgICAgICBjaGFybWFwICs9IGInXDAnICogMHhmZjAwCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyIGNvZGVzCi0gICAgICAgICAgICAgICAgaWYgZml4dXAgYW5kIGlzdW5pY29kZSBhbmQgb3AgaXMgUkFOR0U6Ci0gICAgICAgICAgICAgICAgICAgIGxvLCBoaSA9IGF2Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlcyA9IFthdl0KLSAgICAgICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB0d28gcmFuZ2VzIG9mIGNhc2VkIGFzdHJhbCBjaGFyYWN0ZXJzOgotICAgICAgICAgICAgICAgICAgICAjIDEwNDAwLTEwNDRGIChEZXNlcmV0KSBhbmQgMTE4QTAtMTE4REYgKFdhcmFuZyBDaXRpKS4KLSAgICAgICAgICAgICAgICAgICAgX2ZpeHVwX3JhbmdlKG1heCgweDEwMDAwLCBsbyksIG1pbigweDExZmZmLCBoaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZXMsIGZpeHVwKQotICAgICAgICAgICAgICAgICAgICBmb3IgbG8sIGhpIGluIHJhbmdlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvID09IGhpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChMSVRFUkFMLCBoaSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChSQU5HRSwgKGxvLCBoaSkpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChvcCwgYXYpKQorICAgICAgICAgICAgICAgICMgQ2hhcmFjdGVyIHNldCBjb250YWlucyBub24tQk1QIGNoYXJhY3RlciBjb2Rlcy4KKyAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSBvbmx5IHR3byByYW5nZXMgb2YgY2FzZWQgbm9uLUJNUCBjaGFyYWN0ZXJzOgorICAgICAgICAgICAgICAgICMgMTA0MDAtMTA0NEYgKERlc2VyZXQpIGFuZCAxMThBMC0xMThERiAoV2FyYW5nIENpdGkpLAorICAgICAgICAgICAgICAgICMgYW5kIGZvciBib3RoIHJhbmdlcyBSQU5HRV9JR05PUkUgd29ya3MuCisgICAgICAgICAgICAgICAgaWYgZml4dXAgYW5kIG9wIGlzIFJBTkdFOgorICAgICAgICAgICAgICAgICAgICBvcCA9IFJBTkdFX0lHTk9SRQorICAgICAgICAgICAgICAgIHRhaWwuYXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgYnJlYWsKIAogICAgICMgY29tcHJlc3MgY2hhcmFjdGVyIG1hcApAQCAtMzgzLDI1ICszNjgsOCBAQAogICAgIG91dCArPSB0YWlsCiAgICAgcmV0dXJuIG91dAogCi1kZWYgX2ZpeHVwX3JhbmdlKGxvLCBoaSwgcmFuZ2VzLCBmaXh1cCk6Ci0gICAgZm9yIGkgaW4gbWFwKGZpeHVwLCByYW5nZShsbywgaGkrMSkpOgotICAgICAgICBmb3IgaywgKGxvLCBoaSkgaW4gZW51bWVyYXRlKHJhbmdlcyk6Ci0gICAgICAgICAgICBpZiBpIDwgbG86Ci0gICAgICAgICAgICAgICAgaWYgbCA9PSBsbyAtIDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlc1trXSA9IChpLCBoaSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYW5nZXMuaW5zZXJ0KGssIChpLCBpKSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxpZiBpID4gaGk6Ci0gICAgICAgICAgICAgICAgaWYgaSA9PSBoaSArIDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlc1trXSA9IChsbywgaSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhbmdlcy5hcHBlbmQoKGksIGkpKQotCiBfQ09ERUJJVFMgPSBfc3JlLkNPREVTSVpFICogOAorTUFYQ09ERSA9ICgxIDw8IF9DT0RFQklUUykgLSAxCiBfQklUU19UUkFOUyA9IGInMCcgKyBiJzEnICogMjU1CiBkZWYgX21rX2JpdG1hcChiaXRzLCBfQ09ERUJJVFM9X0NPREVCSVRTLCBfaW50PWludCk6CiAgICAgcyA9IGJpdHMudHJhbnNsYXRlKF9CSVRTX1RSQU5TKVs6Oi0xXQpAQCAtNDQ2LDggKzQxNCwxMSBAQAogICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCiAgICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCiAgICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCisgICAgaWYgaGkgPiBNQVhDT0RFOgorICAgICAgICBoaSA9IE1BWENPREUKICAgICBpZiBsbyA9PSAwOgotICAgICAgICByZXR1cm4gIyBub3Qgd29ydGggaXQKKyAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCisgICAgICAgIHJldHVybgogICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAogICAgIHByZWZpeCA9IFtdCiAgICAgcHJlZml4YXBwZW5kID0gcHJlZml4LmFwcGVuZApAQCAtNTA1LDIxICs0NzYsMjEgQEAKICAgICAgICAgICAgIGVsaWYgb3AgaXMgSU46CiAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGF2CiAjIyAgICAgaWYgcHJlZml4OgotIyMgICAgICAgICBwcmludCAiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXAKKyMjICAgICAgICAgcHJpbnQoIioqKiBQUkVGSVgiLCBwcmVmaXgsIHByZWZpeF9za2lwKQogIyMgICAgIGlmIGNoYXJzZXQ6Ci0jIyAgICAgICAgIHByaW50ICIqKiogQ0hBUlNFVCIsIGNoYXJzZXQKKyMjICAgICAgICAgcHJpbnQoIioqKiBDSEFSU0VUIiwgY2hhcnNldCkKICAgICAjIGFkZCBhbiBpbmZvIGJsb2NrCiAgICAgZW1pdCA9IGNvZGUuYXBwZW5kCi0gICAgZW1pdChPUENPREVTW0lORk9dKQorICAgIGVtaXQoSU5GTykKICAgICBza2lwID0gbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgIyBsaXRlcmFsIGZsYWcKICAgICBtYXNrID0gMAogICAgIGlmIHByZWZpeDoKICAgICAgICAgbWFzayA9IFNSRV9JTkZPX1BSRUZJWAogICAgICAgICBpZiBsZW4ocHJlZml4KSA9PSBwcmVmaXhfc2tpcCA9PSBsZW4ocGF0dGVybi5kYXRhKToKLSAgICAgICAgICAgIG1hc2sgPSBtYXNrICsgU1JFX0lORk9fTElURVJBTAorICAgICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19MSVRFUkFMCiAgICAgZWxpZiBjaGFyc2V0OgotICAgICAgICBtYXNrID0gbWFzayArIFNSRV9JTkZPX0NIQVJTRVQKKyAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19DSEFSU0VUCiAgICAgZW1pdChtYXNrKQogICAgICMgcGF0dGVybiBsZW5ndGgKICAgICBpZiBsbyA8IE1BWENPREU6CkBAIC01MjcsMTAgKzQ5OCw3IEBACiAgICAgZWxzZToKICAgICAgICAgZW1pdChNQVhDT0RFKQogICAgICAgICBwcmVmaXggPSBwcmVmaXhbOk1BWENPREVdCi0gICAgaWYgaGkgPCBNQVhDT0RFOgotICAgICAgICBlbWl0KGhpKQotICAgIGVsc2U6Ci0gICAgICAgIGVtaXQoMCkKKyAgICBlbWl0KG1pbihoaSwgTUFYQ09ERSkpCiAgICAgIyBhZGQgbGl0ZXJhbCBwcmVmaXgKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIGVtaXQobGVuKHByZWZpeCkpICMgbGVuZ3RoCkBAIC01NTYsNyArNTI0LDcgQEAKICAgICAjIGNvbXBpbGUgdGhlIHBhdHRlcm4KICAgICBfY29tcGlsZShjb2RlLCBwLmRhdGEsIGZsYWdzKQogCi0gICAgY29kZS5hcHBlbmQoT1BDT0RFU1tTVUNDRVNTXSkKKyAgICBjb2RlLmFwcGVuZChTVUNDRVNTKQogCiAgICAgcmV0dXJuIGNvZGUKIApAQCAtNTcxLDEzICs1MzksNyBAQAogCiAgICAgY29kZSA9IF9jb2RlKHAsIGZsYWdzKQogCi0gICAgIyBwcmludCBjb2RlCi0KLSAgICAjIFhYWDogPGZsPiBnZXQgcmlkIG9mIHRoaXMgbGltaXRhdGlvbiEKLSAgICBpZiBwLnBhdHRlcm4uZ3JvdXBzID4gMTAwOgotICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKLSAgICAgICAgICAgICJzb3JyeSwgYnV0IHRoaXMgdmVyc2lvbiBvbmx5IHN1cHBvcnRzIDEwMCBuYW1lZCBncm91cHMiCi0gICAgICAgICAgICApCisgICAgIyBwcmludChjb2RlKQogCiAgICAgIyBtYXAgaW4gZWl0aGVyIGRpcmVjdGlvbgogICAgIGdyb3VwaW5kZXggPSBwLnBhdHRlcm4uZ3JvdXBkaWN0CmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbnN0YW50cy5weSBiL0xpYi9zcmVfY29uc3RhbnRzLnB5CmluZGV4IDIzZTM1MTYuLmZjNjg0YWUgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29uc3RhbnRzLnB5CisrKyBiL0xpYi9zcmVfY29uc3RhbnRzLnB5CkBAIC0xMywxNTMgKzEzLDExNSBAQAogCiAjIHVwZGF0ZSB3aGVuIGNvbnN0YW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZAogCi1NQUdJQyA9IDIwMDMxMDE3CitNQUdJQyA9IDIwMTQwOTE3CiAKLWZyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFUCitmcm9tIF9zcmUgaW1wb3J0IE1BWFJFUEVBVCwgTUFYR1JPVVBTCiAKICMgU1JFIHN0YW5kYXJkIGV4Y2VwdGlvbiAoYWNjZXNzIGFzIHNyZS5lcnJvcikKICMgc2hvdWxkIHRoaXMgcmVhbGx5IGJlIGhlcmU/CiAKIGNsYXNzIGVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFzcworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIHBhdHRlcm49Tm9uZSwgcG9zPU5vbmUpOgorICAgICAgICBzZWxmLm1zZyA9IG1zZworICAgICAgICBzZWxmLnBhdHRlcm4gPSBwYXR0ZXJuCisgICAgICAgIHNlbGYucG9zID0gcG9zCisgICAgICAgIGlmIHBhdHRlcm4gaXMgbm90IE5vbmUgYW5kIHBvcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1zZyA9ICclcyBhdCBwb3NpdGlvbiAlZCcgJSAobXNnLCBwb3MpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIHN0cik6CisgICAgICAgICAgICAgICAgbmV3bGluZSA9ICdcbicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3bGluZSA9IGInXG4nCisgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHBhdHRlcm4uY291bnQobmV3bGluZSwgMCwgcG9zKSArIDEKKyAgICAgICAgICAgIHNlbGYuY29sbm8gPSBwb3MgLSBwYXR0ZXJuLnJmaW5kKG5ld2xpbmUsIDAsIHBvcykKKyAgICAgICAgICAgIGlmIG5ld2xpbmUgaW4gcGF0dGVybjoKKyAgICAgICAgICAgICAgICBtc2cgPSAnJXMgKGxpbmUgJWQsIGNvbHVtbiAlZCknICUgKG1zZywgc2VsZi5saW5lbm8sIHNlbGYuY29sbm8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYuY29sbm8gPSBOb25lCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obXNnKQorCisKK2NsYXNzIF9OYW1lZEludENvbnN0YW50KGludCk6CisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgbmFtZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcihfTmFtZWRJbnRDb25zdGFudCwgY2xzKS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKKyAgICBfX3JlcHJfXyA9IF9fc3RyX18KKworTUFYUkVQRUFUID0gX05hbWVkSW50Q29uc3RhbnQoTUFYUkVQRUFULCAnTUFYUkVQRUFUJykKKworZGVmIF9tYWtlY29kZXMobmFtZXMpOgorICAgIG5hbWVzID0gbmFtZXMuc3RyaXAoKS5zcGxpdCgpCisgICAgaXRlbXMgPSBbX05hbWVkSW50Q29uc3RhbnQoaSwgbmFtZSkgZm9yIGksIG5hbWUgaW4gZW51bWVyYXRlKG5hbWVzKV0KKyAgICBnbG9iYWxzKCkudXBkYXRlKHtpdGVtLm5hbWU6IGl0ZW0gZm9yIGl0ZW0gaW4gaXRlbXN9KQorICAgIHJldHVybiBpdGVtcwogCiAjIG9wZXJhdG9ycworIyBmYWlsdXJlPTAgc3VjY2Vzcz0xIChqdXN0IGJlY2F1c2UgaXQgbG9va3MgYmV0dGVyIHRoYXQgd2F5IDotKQorT1BDT0RFUyA9IF9tYWtlY29kZXMoIiIiCisgICAgRkFJTFVSRSBTVUNDRVNTCiAKLUZBSUxVUkUgPSAiZmFpbHVyZSIKLVNVQ0NFU1MgPSAic3VjY2VzcyIKKyAgICBBTlkgQU5ZX0FMTAorICAgIEFTU0VSVCBBU1NFUlRfTk9UCisgICAgQVQKKyAgICBCUkFOQ0gKKyAgICBDQUxMCisgICAgQ0FURUdPUlkKKyAgICBDSEFSU0VUIEJJR0NIQVJTRVQKKyAgICBHUk9VUFJFRiBHUk9VUFJFRl9FWElTVFMgR1JPVVBSRUZfSUdOT1JFCisgICAgSU4gSU5fSUdOT1JFCisgICAgSU5GTworICAgIEpVTVAKKyAgICBMSVRFUkFMIExJVEVSQUxfSUdOT1JFCisgICAgTUFSSworICAgIE1BWF9VTlRJTAorICAgIE1JTl9VTlRJTAorICAgIE5PVF9MSVRFUkFMIE5PVF9MSVRFUkFMX0lHTk9SRQorICAgIE5FR0FURQorICAgIFJBTkdFCisgICAgUkVQRUFUCisgICAgUkVQRUFUX09ORQorICAgIFNVQlBBVFRFUk4KKyAgICBNSU5fUkVQRUFUX09ORQorICAgIFJBTkdFX0lHTk9SRQogCi1BTlkgPSAiYW55IgotQU5ZX0FMTCA9ICJhbnlfYWxsIgotQVNTRVJUID0gImFzc2VydCIKLUFTU0VSVF9OT1QgPSAiYXNzZXJ0X25vdCIKLUFUID0gImF0IgotQklHQ0hBUlNFVCA9ICJiaWdjaGFyc2V0IgotQlJBTkNIID0gImJyYW5jaCIKLUNBTEwgPSAiY2FsbCIKLUNBVEVHT1JZID0gImNhdGVnb3J5IgotQ0hBUlNFVCA9ICJjaGFyc2V0IgotR1JPVVBSRUYgPSAiZ3JvdXByZWYiCi1HUk9VUFJFRl9JR05PUkUgPSAiZ3JvdXByZWZfaWdub3JlIgotR1JPVVBSRUZfRVhJU1RTID0gImdyb3VwcmVmX2V4aXN0cyIKLUlOID0gImluIgotSU5fSUdOT1JFID0gImluX2lnbm9yZSIKLUlORk8gPSAiaW5mbyIKLUpVTVAgPSAianVtcCIKLUxJVEVSQUwgPSAibGl0ZXJhbCIKLUxJVEVSQUxfSUdOT1JFID0gImxpdGVyYWxfaWdub3JlIgotTUFSSyA9ICJtYXJrIgotTUFYX1JFUEVBVCA9ICJtYXhfcmVwZWF0IgotTUFYX1VOVElMID0gIm1heF91bnRpbCIKLU1JTl9SRVBFQVQgPSAibWluX3JlcGVhdCIKLU1JTl9VTlRJTCA9ICJtaW5fdW50aWwiCi1ORUdBVEUgPSAibmVnYXRlIgotTk9UX0xJVEVSQUwgPSAibm90X2xpdGVyYWwiCi1OT1RfTElURVJBTF9JR05PUkUgPSAibm90X2xpdGVyYWxfaWdub3JlIgotUkFOR0UgPSAicmFuZ2UiCi1SRVBFQVQgPSAicmVwZWF0IgotUkVQRUFUX09ORSA9ICJyZXBlYXRfb25lIgotU1VCUEFUVEVSTiA9ICJzdWJwYXR0ZXJuIgotTUlOX1JFUEVBVF9PTkUgPSAibWluX3JlcGVhdF9vbmUiCisgICAgTUlOX1JFUEVBVCBNQVhfUkVQRUFUCisiIiIpCitkZWwgT1BDT0RFU1stMjpdICMgcmVtb3ZlIE1JTl9SRVBFQVQgYW5kIE1BWF9SRVBFQVQKIAogIyBwb3NpdGlvbnMKLUFUX0JFR0lOTklORyA9ICJhdF9iZWdpbm5pbmciCi1BVF9CRUdJTk5JTkdfTElORSA9ICJhdF9iZWdpbm5pbmdfbGluZSIKLUFUX0JFR0lOTklOR19TVFJJTkcgPSAiYXRfYmVnaW5uaW5nX3N0cmluZyIKLUFUX0JPVU5EQVJZID0gImF0X2JvdW5kYXJ5IgotQVRfTk9OX0JPVU5EQVJZID0gImF0X25vbl9ib3VuZGFyeSIKLUFUX0VORCA9ICJhdF9lbmQiCi1BVF9FTkRfTElORSA9ICJhdF9lbmRfbGluZSIKLUFUX0VORF9TVFJJTkcgPSAiYXRfZW5kX3N0cmluZyIKLUFUX0xPQ19CT1VOREFSWSA9ICJhdF9sb2NfYm91bmRhcnkiCi1BVF9MT0NfTk9OX0JPVU5EQVJZID0gImF0X2xvY19ub25fYm91bmRhcnkiCi1BVF9VTklfQk9VTkRBUlkgPSAiYXRfdW5pX2JvdW5kYXJ5IgotQVRfVU5JX05PTl9CT1VOREFSWSA9ICJhdF91bmlfbm9uX2JvdW5kYXJ5IgorQVRDT0RFUyA9IF9tYWtlY29kZXMoIiIiCisgICAgQVRfQkVHSU5OSU5HIEFUX0JFR0lOTklOR19MSU5FIEFUX0JFR0lOTklOR19TVFJJTkcKKyAgICBBVF9CT1VOREFSWSBBVF9OT05fQk9VTkRBUlkKKyAgICBBVF9FTkQgQVRfRU5EX0xJTkUgQVRfRU5EX1NUUklORworICAgIEFUX0xPQ19CT1VOREFSWSBBVF9MT0NfTk9OX0JPVU5EQVJZCisgICAgQVRfVU5JX0JPVU5EQVJZIEFUX1VOSV9OT05fQk9VTkRBUlkKKyIiIikKIAogIyBjYXRlZ29yaWVzCi1DQVRFR09SWV9ESUdJVCA9ICJjYXRlZ29yeV9kaWdpdCIKLUNBVEVHT1JZX05PVF9ESUdJVCA9ICJjYXRlZ29yeV9ub3RfZGlnaXQiCi1DQVRFR09SWV9TUEFDRSA9ICJjYXRlZ29yeV9zcGFjZSIKLUNBVEVHT1JZX05PVF9TUEFDRSA9ICJjYXRlZ29yeV9ub3Rfc3BhY2UiCi1DQVRFR09SWV9XT1JEID0gImNhdGVnb3J5X3dvcmQiCi1DQVRFR09SWV9OT1RfV09SRCA9ICJjYXRlZ29yeV9ub3Rfd29yZCIKLUNBVEVHT1JZX0xJTkVCUkVBSyA9ICJjYXRlZ29yeV9saW5lYnJlYWsiCi1DQVRFR09SWV9OT1RfTElORUJSRUFLID0gImNhdGVnb3J5X25vdF9saW5lYnJlYWsiCi1DQVRFR09SWV9MT0NfV09SRCA9ICJjYXRlZ29yeV9sb2Nfd29yZCIKLUNBVEVHT1JZX0xPQ19OT1RfV09SRCA9ICJjYXRlZ29yeV9sb2Nfbm90X3dvcmQiCi1DQVRFR09SWV9VTklfRElHSVQgPSAiY2F0ZWdvcnlfdW5pX2RpZ2l0IgotQ0FURUdPUllfVU5JX05PVF9ESUdJVCA9ICJjYXRlZ29yeV91bmlfbm90X2RpZ2l0IgotQ0FURUdPUllfVU5JX1NQQUNFID0gImNhdGVnb3J5X3VuaV9zcGFjZSIKLUNBVEVHT1JZX1VOSV9OT1RfU1BBQ0UgPSAiY2F0ZWdvcnlfdW5pX25vdF9zcGFjZSIKLUNBVEVHT1JZX1VOSV9XT1JEID0gImNhdGVnb3J5X3VuaV93b3JkIgotQ0FURUdPUllfVU5JX05PVF9XT1JEID0gImNhdGVnb3J5X3VuaV9ub3Rfd29yZCIKLUNBVEVHT1JZX1VOSV9MSU5FQlJFQUsgPSAiY2F0ZWdvcnlfdW5pX2xpbmVicmVhayIKLUNBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLID0gImNhdGVnb3J5X3VuaV9ub3RfbGluZWJyZWFrIgorQ0hDT0RFUyA9IF9tYWtlY29kZXMoIiIiCisgICAgQ0FURUdPUllfRElHSVQgQ0FURUdPUllfTk9UX0RJR0lUCisgICAgQ0FURUdPUllfU1BBQ0UgQ0FURUdPUllfTk9UX1NQQUNFCisgICAgQ0FURUdPUllfV09SRCBDQVRFR09SWV9OT1RfV09SRAorICAgIENBVEVHT1JZX0xJTkVCUkVBSyBDQVRFR09SWV9OT1RfTElORUJSRUFLCisgICAgQ0FURUdPUllfTE9DX1dPUkQgQ0FURUdPUllfTE9DX05PVF9XT1JECisgICAgQ0FURUdPUllfVU5JX0RJR0lUIENBVEVHT1JZX1VOSV9OT1RfRElHSVQKKyAgICBDQVRFR09SWV9VTklfU1BBQ0UgQ0FURUdPUllfVU5JX05PVF9TUEFDRQorICAgIENBVEVHT1JZX1VOSV9XT1JEIENBVEVHT1JZX1VOSV9OT1RfV09SRAorICAgIENBVEVHT1JZX1VOSV9MSU5FQlJFQUsgQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUsKKyIiIikKIAotT1BDT0RFUyA9IFsKLQotICAgICMgZmFpbHVyZT0wIHN1Y2Nlc3M9MSAoanVzdCBiZWNhdXNlIGl0IGxvb2tzIGJldHRlciB0aGF0IHdheSA6LSkKLSAgICBGQUlMVVJFLCBTVUNDRVNTLAotCi0gICAgQU5ZLCBBTllfQUxMLAotICAgIEFTU0VSVCwgQVNTRVJUX05PVCwKLSAgICBBVCwKLSAgICBCUkFOQ0gsCi0gICAgQ0FMTCwKLSAgICBDQVRFR09SWSwKLSAgICBDSEFSU0VULCBCSUdDSEFSU0VULAotICAgIEdST1VQUkVGLCBHUk9VUFJFRl9FWElTVFMsIEdST1VQUkVGX0lHTk9SRSwKLSAgICBJTiwgSU5fSUdOT1JFLAotICAgIElORk8sCi0gICAgSlVNUCwKLSAgICBMSVRFUkFMLCBMSVRFUkFMX0lHTk9SRSwKLSAgICBNQVJLLAotICAgIE1BWF9VTlRJTCwKLSAgICBNSU5fVU5USUwsCi0gICAgTk9UX0xJVEVSQUwsIE5PVF9MSVRFUkFMX0lHTk9SRSwKLSAgICBORUdBVEUsCi0gICAgUkFOR0UsCi0gICAgUkVQRUFULAotICAgIFJFUEVBVF9PTkUsCi0gICAgU1VCUEFUVEVSTiwKLSAgICBNSU5fUkVQRUFUX09ORQotCi1dCi0KLUFUQ09ERVMgPSBbCi0gICAgQVRfQkVHSU5OSU5HLCBBVF9CRUdJTk5JTkdfTElORSwgQVRfQkVHSU5OSU5HX1NUUklORywgQVRfQk9VTkRBUlksCi0gICAgQVRfTk9OX0JPVU5EQVJZLCBBVF9FTkQsIEFUX0VORF9MSU5FLCBBVF9FTkRfU1RSSU5HLAotICAgIEFUX0xPQ19CT1VOREFSWSwgQVRfTE9DX05PTl9CT1VOREFSWSwgQVRfVU5JX0JPVU5EQVJZLAotICAgIEFUX1VOSV9OT05fQk9VTkRBUlkKLV0KLQotQ0hDT0RFUyA9IFsKLSAgICBDQVRFR09SWV9ESUdJVCwgQ0FURUdPUllfTk9UX0RJR0lULCBDQVRFR09SWV9TUEFDRSwKLSAgICBDQVRFR09SWV9OT1RfU1BBQ0UsIENBVEVHT1JZX1dPUkQsIENBVEVHT1JZX05PVF9XT1JELAotICAgIENBVEVHT1JZX0xJTkVCUkVBSywgQ0FURUdPUllfTk9UX0xJTkVCUkVBSywgQ0FURUdPUllfTE9DX1dPUkQsCi0gICAgQ0FURUdPUllfTE9DX05PVF9XT1JELCBDQVRFR09SWV9VTklfRElHSVQsIENBVEVHT1JZX1VOSV9OT1RfRElHSVQsCi0gICAgQ0FURUdPUllfVU5JX1NQQUNFLCBDQVRFR09SWV9VTklfTk9UX1NQQUNFLCBDQVRFR09SWV9VTklfV09SRCwKLSAgICBDQVRFR09SWV9VTklfTk9UX1dPUkQsIENBVEVHT1JZX1VOSV9MSU5FQlJFQUssCi0gICAgQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUsKLV0KLQotZGVmIG1ha2VkaWN0KGxpc3QpOgotICAgIGQgPSB7fQotICAgIGkgPSAwCi0gICAgZm9yIGl0ZW0gaW4gbGlzdDoKLSAgICAgICAgZFtpdGVtXSA9IGkKLSAgICAgICAgaSA9IGkgKyAxCi0gICAgcmV0dXJuIGQKLQotT1BDT0RFUyA9IG1ha2VkaWN0KE9QQ09ERVMpCi1BVENPREVTID0gbWFrZWRpY3QoQVRDT0RFUykKLUNIQ09ERVMgPSBtYWtlZGljdChDSENPREVTKQogCiAjIHJlcGxhY2VtZW50IG9wZXJhdGlvbnMgZm9yICJpZ25vcmUgY2FzZSIgbW9kZQogT1BfSUdOT1JFID0gewogICAgIEdST1VQUkVGOiBHUk9VUFJFRl9JR05PUkUsCiAgICAgSU46IElOX0lHTk9SRSwKICAgICBMSVRFUkFMOiBMSVRFUkFMX0lHTk9SRSwKLSAgICBOT1RfTElURVJBTDogTk9UX0xJVEVSQUxfSUdOT1JFCisgICAgTk9UX0xJVEVSQUw6IE5PVF9MSVRFUkFMX0lHTk9SRSwKKyAgICBSQU5HRTogUkFOR0VfSUdOT1JFLAogfQogCiBBVF9NVUxUSUxJTkUgPSB7CkBAIC0yMTcsMTEgKzE3OSwxMSBAQAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGRlZiBkdW1wKGYsIGQsIHByZWZpeCk6Ci0gICAgICAgIGl0ZW1zID0gc29ydGVkKGQuaXRlbXMoKSwga2V5PWxhbWJkYSBhOiBhWzFdKQotICAgICAgICBmb3IgaywgdiBpbiBpdGVtczoKLSAgICAgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgJXNfJXMgJXNcbiIgJSAocHJlZml4LCBrLnVwcGVyKCksIHYpKQotICAgIGYgPSBvcGVuKCJzcmVfY29uc3RhbnRzLmgiLCAidyIpCi0gICAgZi53cml0ZSgiIiJcCisgICAgICAgIGl0ZW1zID0gc29ydGVkKGQpCisgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAgICAgICAgZi53cml0ZSgiI2RlZmluZSAlc18lcyAlZFxuIiAlIChwcmVmaXgsIGl0ZW0sIGl0ZW0pKQorICAgIHdpdGggb3Blbigic3JlX2NvbnN0YW50cy5oIiwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKCIiIlwKIC8qCiAgKiBTZWNyZXQgTGFicycgUmVndWxhciBFeHByZXNzaW9uIEVuZ2luZQogICoKQEAgLTIzNywyNSArMTk5LDI0IEBACiAKICIiIikKIAotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX01BR0lDICVkXG4iICUgTUFHSUMpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX01BR0lDICVkXG4iICUgTUFHSUMpCiAKLSAgICBkdW1wKGYsIE9QQ09ERVMsICJTUkVfT1AiKQotICAgIGR1bXAoZiwgQVRDT0RFUywgIlNSRSIpCi0gICAgZHVtcChmLCBDSENPREVTLCAiU1JFIikKKyAgICAgICAgZHVtcChmLCBPUENPREVTLCAiU1JFX09QIikKKyAgICAgICAgZHVtcChmLCBBVENPREVTLCAiU1JFIikKKyAgICAgICAgZHVtcChmLCBDSENPREVTLCAiU1JFIikKIAotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVEVNUExBVEUgJWRcbiIgJSBTUkVfRkxBR19URU1QTEFURSkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0lHTk9SRUNBU0UgJWRcbiIgJSBTUkVfRkxBR19JR05PUkVDQVNFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTE9DQUxFICVkXG4iICUgU1JFX0ZMQUdfTE9DQUxFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTVVMVElMSU5FICVkXG4iICUgU1JFX0ZMQUdfTVVMVElMSU5FKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfRE9UQUxMICVkXG4iICUgU1JFX0ZMQUdfRE9UQUxMKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVU5JQ09ERSAlZFxuIiAlIFNSRV9GTEFHX1VOSUNPREUpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19WRVJCT1NFICVkXG4iICUgU1JFX0ZMQUdfVkVSQk9TRSkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0RFQlVHICVkXG4iICUgU1JFX0ZMQUdfREVCVUcpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19BU0NJSSAlZFxuIiAlIFNSRV9GTEFHX0FTQ0lJKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX1RFTVBMQVRFICVkXG4iICUgU1JFX0ZMQUdfVEVNUExBVEUpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfSUdOT1JFQ0FTRSAlZFxuIiAlIFNSRV9GTEFHX0lHTk9SRUNBU0UpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTE9DQUxFICVkXG4iICUgU1JFX0ZMQUdfTE9DQUxFKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX01VTFRJTElORSAlZFxuIiAlIFNSRV9GTEFHX01VTFRJTElORSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19ET1RBTEwgJWRcbiIgJSBTUkVfRkxBR19ET1RBTEwpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVU5JQ09ERSAlZFxuIiAlIFNSRV9GTEFHX1VOSUNPREUpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVkVSQk9TRSAlZFxuIiAlIFNSRV9GTEFHX1ZFUkJPU0UpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfREVCVUcgJWRcbiIgJSBTUkVfRkxBR19ERUJVRykKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19BU0NJSSAlZFxuIiAlIFNSRV9GTEFHX0FTQ0lJKQogCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19QUkVGSVggJWRcbiIgJSBTUkVfSU5GT19QUkVGSVgpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19MSVRFUkFMICVkXG4iICUgU1JFX0lORk9fTElURVJBTCkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0NIQVJTRVQgJWRcbiIgJSBTUkVfSU5GT19DSEFSU0VUKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX1BSRUZJWCAlZFxuIiAlIFNSRV9JTkZPX1BSRUZJWCkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19MSVRFUkFMICVkXG4iICUgU1JFX0lORk9fTElURVJBTCkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfSU5GT19DSEFSU0VUICVkXG4iICUgU1JFX0lORk9fQ0hBUlNFVCkKIAotICAgIGYuY2xvc2UoKQogICAgIHByaW50KCJkb25lIikKZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IGRmMWU2NDMuLjY3Zjg0ZTkgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtMTMsMTcgKzEzLDIwIEBACiAjIFhYWDogc2hvdyBzdHJpbmcgb2Zmc2V0IGFuZCBvZmZlbmRpbmcgY2hhcmFjdGVyIGZvciBhbGwgZXJyb3JzCiAKIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKgotZnJvbSBfc3JlIGltcG9ydCBNQVhSRVBFQVQKIAogU1BFQ0lBTF9DSEFSUyA9ICIuXFxbeygpKis/XiR8IgogUkVQRUFUX0NIQVJTID0gIiorP3siCiAKLURJR0lUUyA9IHNldCgiMDEyMzQ1Njc4OSIpCitESUdJVFMgPSBmcm96ZW5zZXQoIjAxMjM0NTY3ODkiKQogCi1PQ1RESUdJVFMgPSBzZXQoIjAxMjM0NTY3IikKLUhFWERJR0lUUyA9IHNldCgiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRiIpCitPQ1RESUdJVFMgPSBmcm96ZW5zZXQoIjAxMjM0NTY3IikKK0hFWERJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRiIpCitBU0NJSUxFVFRFUlMgPSBmcm96ZW5zZXQoImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiKQogCi1XSElURVNQQUNFID0gc2V0KCIgXHRcblxyXHZcZiIpCitXSElURVNQQUNFID0gZnJvemVuc2V0KCIgXHRcblxyXHZcZiIpCisKK19SRVBFQVRDT0RFUyA9IGZyb3plbnNldCh7TUlOX1JFUEVBVCwgTUFYX1JFUEVBVH0pCitfVU5JVENPREVTID0gZnJvemVuc2V0KHtBTlksIFJBTkdFLCBJTiwgTElURVJBTCwgTk9UX0xJVEVSQUwsIENBVEVHT1JZfSkKIAogRVNDQVBFUyA9IHsKICAgICByIlxhIjogKExJVEVSQUwsIG9yZCgiXGEiKSksCkBAIC02NiwyNiArNjksMzYgQEAKICAgICAjIG1hc3RlciBwYXR0ZXJuIG9iamVjdC4gIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBhdHRyaWJ1dGVzCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmZsYWdzID0gMAotICAgICAgICBzZWxmLm9wZW4gPSBbXQotICAgICAgICBzZWxmLmdyb3VwcyA9IDEKICAgICAgICAgc2VsZi5ncm91cGRpY3QgPSB7fQotICAgICAgICBzZWxmLmxvb2tiZWhpbmQgPSAwCi0KKyAgICAgICAgc2VsZi5zdWJwYXR0ZXJucyA9IFtOb25lXSAgIyBncm91cCAwCisgICAgICAgIHNlbGYubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ3JvdXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuc3VicGF0dGVybnMpCiAgICAgZGVmIG9wZW5ncm91cChzZWxmLCBuYW1lPU5vbmUpOgogICAgICAgICBnaWQgPSBzZWxmLmdyb3VwcwotICAgICAgICBzZWxmLmdyb3VwcyA9IGdpZCArIDEKKyAgICAgICAgc2VsZi5zdWJwYXR0ZXJucy5hcHBlbmQoTm9uZSkKKyAgICAgICAgaWYgc2VsZi5ncm91cHMgPiBNQVhHUk9VUFM6CisgICAgICAgICAgICByYWlzZSBlcnJvcigidG9vIG1hbnkgZ3JvdXBzIikKICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG9naWQgPSBzZWxmLmdyb3VwZGljdC5nZXQobmFtZSwgTm9uZSkKICAgICAgICAgICAgIGlmIG9naWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICVzIGFzIGdyb3VwICVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAlZCIgJSAocmVwcihuYW1lKSwgZ2lkLCAgb2dpZCkpCisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICVyIGFzIGdyb3VwICVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAlZCIgJSAobmFtZSwgZ2lkLCAgb2dpZCkpCiAgICAgICAgICAgICBzZWxmLmdyb3VwZGljdFtuYW1lXSA9IGdpZAotICAgICAgICBzZWxmLm9wZW4uYXBwZW5kKGdpZCkKICAgICAgICAgcmV0dXJuIGdpZAotICAgIGRlZiBjbG9zZWdyb3VwKHNlbGYsIGdpZCk6Ci0gICAgICAgIHNlbGYub3Blbi5yZW1vdmUoZ2lkKQorICAgIGRlZiBjbG9zZWdyb3VwKHNlbGYsIGdpZCwgcCk6CisgICAgICAgIHNlbGYuc3VicGF0dGVybnNbZ2lkXSA9IHAKICAgICBkZWYgY2hlY2tncm91cChzZWxmLCBnaWQpOgotICAgICAgICByZXR1cm4gZ2lkIDwgc2VsZi5ncm91cHMgYW5kIGdpZCBub3QgaW4gc2VsZi5vcGVuCisgICAgICAgIHJldHVybiBnaWQgPCBzZWxmLmdyb3VwcyBhbmQgc2VsZi5zdWJwYXR0ZXJuc1tnaWRdIGlzIG5vdCBOb25lCisKKyAgICBkZWYgY2hlY2tsb29rYmVoaW5kZ3JvdXAoc2VsZiwgZ2lkLCBzb3VyY2UpOgorICAgICAgICBpZiBzZWxmLmxvb2tiZWhpbmRncm91cHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jaGVja2dyb3VwKGdpZCk6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCcpCisgICAgICAgICAgICBpZiBnaWQgPj0gc2VsZi5sb29rYmVoaW5kZ3JvdXBzOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignY2Fubm90IHJlZmVyIHRvIGdyb3VwIGRlZmluZWQgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9va2JlaGluZCBzdWJwYXR0ZXJuJykKIAogY2xhc3MgU3ViUGF0dGVybjoKICAgICAjIGEgc3VicGF0dGVybiwgaW4gaW50ZXJtZWRpYXRlIGZvcm0KQEAgLTk5LDI0ICsxMTIsMjQgQEAKICAgICAgICAgbmwgPSBUcnVlCiAgICAgICAgIHNlcXR5cGVzID0gKHR1cGxlLCBsaXN0KQogICAgICAgICBmb3Igb3AsIGF2IGluIHNlbGYuZGF0YToKLSAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyBvcCwgZW5kPScnKQotICAgICAgICAgICAgaWYgb3AgPT0gSU46CisgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgc3RyKG9wKSwgZW5kPScnKQorICAgICAgICAgICAgaWYgb3AgaXMgSU46CiAgICAgICAgICAgICAgICAgIyBtZW1iZXIgc3VibGFuZ3VhZ2UKICAgICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgICAgZm9yIG9wLCBhIGluIGF2OgotICAgICAgICAgICAgICAgICAgICBwcmludCgobGV2ZWwrMSkqIiAgIiArIG9wLCBhKQotICAgICAgICAgICAgZWxpZiBvcCA9PSBCUkFOQ0g6CisgICAgICAgICAgICAgICAgICAgIHByaW50KChsZXZlbCsxKSoiICAiICsgc3RyKG9wKSwgYSkKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgogICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgICBmb3IgaSwgYSBpbiBlbnVtZXJhdGUoYXZbMV0pOgogICAgICAgICAgICAgICAgICAgICBpZiBpOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArICJvciIpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgIk9SIikKICAgICAgICAgICAgICAgICAgICAgYS5kdW1wKGxldmVsKzEpCi0gICAgICAgICAgICBlbGlmIG9wID09IEdST1VQUkVGX0VYSVNUUzoKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUZfRVhJU1RTOgogICAgICAgICAgICAgICAgIGNvbmRncm91cCwgaXRlbV95ZXMsIGl0ZW1fbm8gPSBhdgogICAgICAgICAgICAgICAgIHByaW50KCcnLCBjb25kZ3JvdXApCiAgICAgICAgICAgICAgICAgaXRlbV95ZXMuZHVtcChsZXZlbCsxKQogICAgICAgICAgICAgICAgIGlmIGl0ZW1fbm86Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyAiZWxzZSIpCisgICAgICAgICAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyAiRUxTRSIpCiAgICAgICAgICAgICAgICAgICAgIGl0ZW1fbm8uZHVtcChsZXZlbCsxKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGF2LCBzZXF0eXBlcyk6CiAgICAgICAgICAgICAgICAgbmwgPSBGYWxzZQpAQCAtMTUzLDExICsxNjYsOSBAQAogICAgICAgICBzZWxmLmRhdGEuYXBwZW5kKGNvZGUpCiAgICAgZGVmIGdldHdpZHRoKHNlbGYpOgogICAgICAgICAjIGRldGVybWluZSB0aGUgd2lkdGggKG1pbiwgbWF4KSBmb3IgdGhpcyBzdWJwYXR0ZXJuCi0gICAgICAgIGlmIHNlbGYud2lkdGg6CisgICAgICAgIGlmIHNlbGYud2lkdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi53aWR0aAogICAgICAgICBsbyA9IGhpID0gMAotICAgICAgICBVTklUQ09ERVMgPSAoQU5ZLCBSQU5HRSwgSU4sIExJVEVSQUwsIE5PVF9MSVRFUkFMLCBDQVRFR09SWSkKLSAgICAgICAgUkVQRUFUQ09ERVMgPSAoTUlOX1JFUEVBVCwgTUFYX1JFUEVBVCkKICAgICAgICAgZm9yIG9wLCBhdiBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgICBpZiBvcCBpcyBCUkFOQ0g6CiAgICAgICAgICAgICAgICAgaSA9IE1BWFJFUEVBVCAtIDEKQEAgLTE3NiwxNCArMTg3LDI4IEBACiAgICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCi0gICAgICAgICAgICBlbGlmIG9wIGluIFJFUEVBVENPREVTOgorICAgICAgICAgICAgZWxpZiBvcCBpbiBfUkVQRUFUQ09ERVM6CiAgICAgICAgICAgICAgICAgaSwgaiA9IGF2WzJdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaSAqIGF2WzBdCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGogKiBhdlsxXQotICAgICAgICAgICAgZWxpZiBvcCBpbiBVTklUQ09ERVM6CisgICAgICAgICAgICBlbGlmIG9wIGluIF9VTklUQ09ERVM6CiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIDEKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgMQotICAgICAgICAgICAgZWxpZiBvcCA9PSBTVUNDRVNTOgorICAgICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKKyAgICAgICAgICAgICAgICBpLCBqID0gc2VsZi5wYXR0ZXJuLnN1YnBhdHRlcm5zW2F2XS5nZXR3aWR0aCgpCisgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKKyAgICAgICAgICAgICAgICBoaSA9IGhpICsgagorICAgICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRl9FWElTVFM6CisgICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICBpZiBhdlsyXSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbCwgaCA9IGF2WzJdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICAgICAgaSA9IG1pbihpLCBsKQorICAgICAgICAgICAgICAgICAgICBqID0gbWF4KGosIGgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaSA9IDAKKyAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQorICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCisgICAgICAgICAgICBlbGlmIG9wIGlzIFNVQ0NFU1M6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgc2VsZi53aWR0aCA9IG1pbihsbywgTUFYUkVQRUFUIC0gMSksIG1pbihoaSwgTUFYUkVQRUFUKQogICAgICAgICByZXR1cm4gc2VsZi53aWR0aApAQCAtMTkyLDMzICsyMTcsMzMgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgc2VsZi5pc3RleHQgPSBpc2luc3RhbmNlKHN0cmluZywgc3RyKQogICAgICAgICBzZWxmLnN0cmluZyA9IHN0cmluZworICAgICAgICBpZiBub3Qgc2VsZi5pc3RleHQ6CisgICAgICAgICAgICBzdHJpbmcgPSBzdHIoc3RyaW5nLCAnbGF0aW4xJykKKyAgICAgICAgc2VsZi5kZWNvZGVkX3N0cmluZyA9IHN0cmluZwogICAgICAgICBzZWxmLmluZGV4ID0gMAorICAgICAgICBzZWxmLm5leHQgPSBOb25lCiAgICAgICAgIHNlbGYuX19uZXh0KCkKICAgICBkZWYgX19uZXh0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmluZGV4ID49IGxlbihzZWxmLnN0cmluZyk6CisgICAgICAgIGluZGV4ID0gc2VsZi5pbmRleAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaGFyID0gc2VsZi5kZWNvZGVkX3N0cmluZ1tpbmRleF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICBzZWxmLm5leHQgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgY2hhciA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXg6c2VsZi5pbmRleCsxXQotICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgdGhlIHN0cjgsIHNpbmNlIGluZGV4aW5nIHJldHVybnMgYSBpbnRlZ2VyCi0gICAgICAgICMgWFhYIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIHRlc3RfYnVnXzkyNjA3NSBpbiB0ZXN0X3JlLnB5Ci0gICAgICAgIGlmIGNoYXIgYW5kIG5vdCBzZWxmLmlzdGV4dDoKLSAgICAgICAgICAgIGNoYXIgPSBjaHIoY2hhclswXSkKICAgICAgICAgaWYgY2hhciA9PSAiXFwiOgorICAgICAgICAgICAgaW5kZXggKz0gMQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGMgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4ICsgMV0KKyAgICAgICAgICAgICAgICBjaGFyICs9IHNlbGYuZGVjb2RlZF9zdHJpbmdbaW5kZXhdCiAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlIChlbmQgb2YgbGluZSkiKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuaXN0ZXh0OgotICAgICAgICAgICAgICAgIGMgPSBjaHIoYykKLSAgICAgICAgICAgIGNoYXIgPSBjaGFyICsgYwotICAgICAgICBzZWxmLmluZGV4ID0gc2VsZi5pbmRleCArIGxlbihjaGFyKQorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgZXNjYXBlIChlbmQgb2YgcGF0dGVybikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5nLCBsZW4oc2VsZi5zdHJpbmcpIC0gMSkgZnJvbSBOb25lCisgICAgICAgIHNlbGYuaW5kZXggPSBpbmRleCArIDEKICAgICAgICAgc2VsZi5uZXh0ID0gY2hhcgotICAgIGRlZiBtYXRjaChzZWxmLCBjaGFyLCBza2lwPTEpOgorICAgIGRlZiBtYXRjaChzZWxmLCBjaGFyKToKICAgICAgICAgaWYgY2hhciA9PSBzZWxmLm5leHQ6Ci0gICAgICAgICAgICBpZiBza2lwOgotICAgICAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICB0aGlzID0gc2VsZi5uZXh0CiAgICAgICAgIHNlbGYuX19uZXh0KCkKQEAgLTIzMiwxMCArMjU3LDMwIEBACiAgICAgICAgICAgICByZXN1bHQgKz0gYwogICAgICAgICAgICAgc2VsZi5fX25leHQoKQogICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZGVmIGdldHVudGlsKHNlbGYsIHRlcm1pbmF0b3IpOgorICAgICAgICByZXN1bHQgPSAnJworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYyA9IHNlbGYubmV4dAorICAgICAgICAgICAgc2VsZi5fX25leHQoKQorICAgICAgICAgICAgaWYgYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoIm1pc3NpbmcgZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyAlcywgdW50ZXJtaW5hdGVkIG5hbWUiICUgdGVybWluYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihyZXN1bHQpKQorICAgICAgICAgICAgaWYgYyA9PSB0ZXJtaW5hdG9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXJyb3IoIm1pc3NpbmcgZ3JvdXAgbmFtZSIsIDEpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCArPSBjCisgICAgICAgIHJldHVybiByZXN1bHQKICAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgsIHNlbGYubmV4dAorICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHNlZWsoc2VsZiwgaW5kZXgpOgotICAgICAgICBzZWxmLmluZGV4LCBzZWxmLm5leHQgPSBpbmRleAorICAgICAgICBzZWxmLmluZGV4ID0gaW5kZXgKKyAgICAgICAgc2VsZi5fX25leHQoKQorCisgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgb2Zmc2V0PTApOgorICAgICAgICByZXR1cm4gZXJyb3IobXNnLCBzZWxmLnN0cmluZywgc2VsZi50ZWxsKCkgLSBvZmZzZXQpCiAKICMgVGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIG5vdCB1c2VkIGluIHRoaXMgbW9kdWxlIGFueW1vcmUsIGJ1dCB3ZSBrZWVwCiAjIHRoZW0gaGVyZSAod2l0aCBEZXByZWNhdGlvbldhcm5pbmdzKSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCkBAIC0yNzAsNyArMzE1LDcgQEAKICAgICBpZiBjb2RlOgogICAgICAgICByZXR1cm4gY29kZQogICAgIGNvZGUgPSBDQVRFR09SSUVTLmdldChlc2NhcGUpCi0gICAgaWYgY29kZSBhbmQgY29kZVswXSA9PSBJTjoKKyAgICBpZiBjb2RlIGFuZCBjb2RlWzBdIGlzIElOOgogICAgICAgICByZXR1cm4gY29kZQogICAgIHRyeToKICAgICAgICAgYyA9IGVzY2FwZVsxOjJdCkBAIC0yNzgsMzMgKzMyMyw0MSBAQAogICAgICAgICAgICAgIyBoZXhhZGVjaW1hbCBlc2NhcGUgKGV4YWN0bHkgdHdvIGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KSAmIDB4ZmYKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgogICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKICAgICAgICAgZWxpZiBjID09ICJVIiBhbmQgc291cmNlLmlzdGV4dDoKICAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg4LCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAxMDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMjpdLCAxNikKICAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgZWxpZiBjIGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICh1cCB0byB0aHJlZSBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCisgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsxOl0sIDgpCisgICAgICAgICAgICBpZiBjID4gMG8zNzc6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdvY3RhbCBlc2NhcGUgdmFsdWUgJXMgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgorICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCi0gICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcihlc2NhcGUpKQorICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogCiBkZWYgX2VzY2FwZShzb3VyY2UsIGVzY2FwZSwgc3RhdGUpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluIGV4cHJlc3Npb24KQEAgLTMyMCw2OSArMzczLDcwIEBACiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgogICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkKICAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICpvciogZGVjaW1hbCBncm91cCByZWZlcmVuY2UgKHNpZ2gpCiAgICAgICAgICAgICBpZiBzb3VyY2UubmV4dCBpbiBESUdJVFM6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCisgICAgICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXQoKQogICAgICAgICAgICAgICAgIGlmIChlc2NhcGVbMV0gaW4gT0NURElHSVRTIGFuZCBlc2NhcGVbMl0gaW4gT0NURElHSVRTIGFuZAogICAgICAgICAgICAgICAgICAgICBzb3VyY2UubmV4dCBpbiBPQ1RESUdJVFMpOgogICAgICAgICAgICAgICAgICAgICAjIGdvdCB0aHJlZSBvY3RhbCBkaWdpdHM7IHRoaXMgaXMgYW4gb2N0YWwgZXNjYXBlCi0gICAgICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgorICAgICAgICAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldCgpCisgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzE6XSwgOCkKKyAgICAgICAgICAgICAgICAgICAgaWYgYyA+IDBvMzc3OgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdvY3RhbCBlc2NhcGUgdmFsdWUgJXMgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlIDAtMG8zNzcnICUgZXNjYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICAgICAgIyBub3QgYW4gb2N0YWwgZXNjYXBlLCBzbyB0aGlzIGlzIGEgZ3JvdXAgcmVmZXJlbmNlCiAgICAgICAgICAgICBncm91cCA9IGludChlc2NhcGVbMTpdKQogICAgICAgICAgICAgaWYgZ3JvdXAgPCBzdGF0ZS5ncm91cHM6CiAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXRlLmNoZWNrZ3JvdXAoZ3JvdXApOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiY2Fubm90IHJlZmVyIHRvIG9wZW4gZ3JvdXAiKQotICAgICAgICAgICAgICAgIGlmIHN0YXRlLmxvb2tiZWhpbmQ6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3NlcnRpb25zIGFyZSBub3Qgc3VwcG9ydGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2xvb2tiZWhpbmRncm91cChncm91cCwgc291cmNlKQogICAgICAgICAgICAgICAgIHJldHVybiBHUk9VUFJFRiwgZ3JvdXAKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLCBsZW4oZXNjYXBlKSkKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKKyAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwotICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKSkKKyAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKIAotZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPTEpOgorZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPVRydWUpOgogICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCiAKICAgICBpdGVtcyA9IFtdCiAgICAgaXRlbXNhcHBlbmQgPSBpdGVtcy5hcHBlbmQKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAotICAgIHdoaWxlIDE6CisgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpCisgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUpKQotICAgICAgICBpZiBzb3VyY2VtYXRjaCgifCIpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgbm90IG5lc3RlZDoKKyAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ8Iik6CiAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3Qgc291cmNlLm5leHQgb3Igc291cmNlbWF0Y2goIikiLCAwKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigicGF0dGVybiBub3QgcHJvcGVybHkgY2xvc2VkIikKIAogICAgIGlmIGxlbihpdGVtcykgPT0gMToKICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdCkBAIC0zOTEsNyArNDQ1LDcgQEAKICAgICBzdWJwYXR0ZXJuYXBwZW5kID0gc3VicGF0dGVybi5hcHBlbmQKIAogICAgICMgY2hlY2sgaWYgYWxsIGl0ZW1zIHNoYXJlIGEgY29tbW9uIHByZWZpeAotICAgIHdoaWxlIDE6CisgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgcHJlZml4ID0gTm9uZQogICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgIGlmIG5vdCBpdGVtOgpAQCAtNDExLDE2ICs0NjUsMTIgQEAKIAogICAgICMgY2hlY2sgaWYgdGhlIGJyYW5jaCBjYW4gYmUgcmVwbGFjZWQgYnkgYSBjaGFyYWN0ZXIgc2V0CiAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgIGlmIGxlbihpdGVtKSAhPSAxIG9yIGl0ZW1bMF1bMF0gIT0gTElURVJBTDoKKyAgICAgICAgaWYgbGVuKGl0ZW0pICE9IDEgb3IgaXRlbVswXVswXSBpcyBub3QgTElURVJBTDoKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKICAgICAgICAgIyB3ZSBjYW4gc3RvcmUgdGhpcyBhcyBhIGNoYXJhY3RlciBzZXQgaW5zdGVhZCBvZiBhCiAgICAgICAgICMgYnJhbmNoICh0aGUgY29tcGlsZXIgbWF5IG9wdGltaXplIHRoaXMgZXZlbiBtb3JlKQotICAgICAgICBzZXQgPSBbXQotICAgICAgICBzZXRhcHBlbmQgPSBzZXQuYXBwZW5kCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgc2V0YXBwZW5kKGl0ZW1bMF0pCi0gICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKElOLCBzZXQpKQorICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChJTiwgW2l0ZW1bMF0gZm9yIGl0ZW0gaW4gaXRlbXNdKSkKICAgICAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChCUkFOQ0gsIChOb25lLCBpdGVtcykpKQpAQCAtNDMwLDIxICs0ODAsMTQgQEAKICAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQogICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgogICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCi0gICAgICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgotICAgICAgICAgICAgcmFpc2UgZXJyb3IoImNvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gdHdvIGJyYW5jaGVzIikKKyAgICAgICAgaWYgc291cmNlLm5leHQgPT0gInwiOgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjb25kaXRpb25hbCBiYWNrcmVmIHdpdGggbW9yZSB0aGFuIHR3byBicmFuY2hlcyIpCiAgICAgZWxzZToKICAgICAgICAgaXRlbV9ubyA9IE5vbmUKLSAgICBpZiBzb3VyY2UubmV4dCBhbmQgbm90IHNvdXJjZS5tYXRjaCgiKSIsIDApOgotICAgICAgICByYWlzZSBlcnJvcigicGF0dGVybiBub3QgcHJvcGVybHkgY2xvc2VkIikKICAgICBzdWJwYXR0ZXJuID0gU3ViUGF0dGVybihzdGF0ZSkKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoR1JPVVBSRUZfRVhJU1RTLCAoY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLV9QQVRURVJORU5ERVJTID0gc2V0KCJ8KSIpCi1fQVNTRVJUQ0hBUlMgPSBzZXQoIj0hPCIpCi1fTE9PS0JFSElOREFTU0VSVENIQVJTID0gc2V0KCI9ISIpCi1fUkVQRUFUQ09ERVMgPSBzZXQoW01JTl9SRVBFQVQsIE1BWF9SRVBFQVRdKQotCiBkZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUpOgogICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQpAQCAtNDU0LDM0ICs0OTcsMzggQEAKICAgICBzb3VyY2VnZXQgPSBzb3VyY2UuZ2V0CiAgICAgc291cmNlbWF0Y2ggPSBzb3VyY2UubWF0Y2gKICAgICBfbGVuID0gbGVuCi0gICAgUEFUVEVSTkVOREVSUyA9IF9QQVRURVJORU5ERVJTCi0gICAgQVNTRVJUQ0hBUlMgPSBfQVNTRVJUQ0hBUlMKLSAgICBMT09LQkVISU5EQVNTRVJUQ0hBUlMgPSBfTE9PS0JFSElOREFTU0VSVENIQVJTCi0gICAgUkVQRUFUQ09ERVMgPSBfUkVQRUFUQ09ERVMKKyAgICBfb3JkID0gb3JkCisgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQogCi0gICAgd2hpbGUgMToKKyAgICB3aGlsZSBUcnVlOgogCi0gICAgICAgIGlmIHNvdXJjZS5uZXh0IGluIFBBVFRFUk5FTkRFUlM6Ci0gICAgICAgICAgICBicmVhayAjIGVuZCBvZiBzdWJwYXR0ZXJuCi0gICAgICAgIHRoaXMgPSBzb3VyY2VnZXQoKQorICAgICAgICB0aGlzID0gc291cmNlLm5leHQKICAgICAgICAgaWYgdGhpcyBpcyBOb25lOgogICAgICAgICAgICAgYnJlYWsgIyBlbmQgb2YgcGF0dGVybgorICAgICAgICBpZiB0aGlzIGluICJ8KSI6CisgICAgICAgICAgICBicmVhayAjIGVuZCBvZiBzdWJwYXR0ZXJuCisgICAgICAgIHNvdXJjZWdldCgpCiAKLSAgICAgICAgaWYgc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFOgorICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgIyBza2lwIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCiAgICAgICAgICAgICBpZiB0aGlzIGluIFdISVRFU1BBQ0U6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIHRoaXMgPT0gIiMiOgotICAgICAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRoaXMgaW4gKE5vbmUsICJcbiIpOgorICAgICAgICAgICAgICAgICAgICBpZiB0aGlzIGlzIE5vbmUgb3IgdGhpcyA9PSAiXG4iOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgIGlmIHRoaXMgYW5kIHRoaXNbMF0gbm90IGluIFNQRUNJQUxfQ0hBUlM6Ci0gICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBvcmQodGhpcykpKQorICAgICAgICBpZiB0aGlzWzBdID09ICJcXCI6CisgICAgICAgICAgICBjb2RlID0gX2VzY2FwZShzb3VyY2UsIHRoaXMsIHN0YXRlKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZChjb2RlKQorCisgICAgICAgIGVsaWYgdGhpcyBub3QgaW4gU1BFQ0lBTF9DSEFSUzoKKyAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiWyI6CisgICAgICAgICAgICBoZXJlID0gc291cmNlLnRlbGwoKSAtIDEKICAgICAgICAgICAgICMgY2hhcmFjdGVyIHNldAogICAgICAgICAgICAgc2V0ID0gW10KICAgICAgICAgICAgIHNldGFwcGVuZCA9IHNldC5hcHBlbmQKQEAgLTQ5MSwzOSArNTM4LDQyIEBACiAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChORUdBVEUsIE5vbmUpKQogICAgICAgICAgICAgIyBjaGVjayByZW1haW5pbmcgY2hhcmFjdGVycwogICAgICAgICAgICAgc3RhcnQgPSBzZXRbOl0KLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHRoaXMgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgIGlmIHRoaXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSkKICAgICAgICAgICAgICAgICBpZiB0aGlzID09ICJdIiBhbmQgc2V0ICE9IHN0YXJ0OgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgdGhpcyBhbmQgdGhpc1swXSA9PSAiXFwiOgorICAgICAgICAgICAgICAgIGVsaWYgdGhpc1swXSA9PSAiXFwiOgogICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGlzKQotICAgICAgICAgICAgICAgIGVsaWYgdGhpczoKLSAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBMSVRFUkFMLCBvcmQodGhpcykKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5leHBlY3RlZCBlbmQgb2YgcmVndWxhciBleHByZXNzaW9uIikKKyAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBMSVRFUkFMLCBfb3JkKHRoaXMpCiAgICAgICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIi0iKToKICAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgcmFuZ2UKLSAgICAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHRoaXMgPT0gIl0iOgorICAgICAgICAgICAgICAgICAgICB0aGF0ID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHRoYXQgPT0gIl0iOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gaXMgSU46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBjb2RlMVsxXVswXQogICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKGNvZGUxKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChMSVRFUkFMLCBvcmQoIi0iKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKExJVEVSQUwsIF9vcmQoIi0iKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBlbGlmIHRoaXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGlzWzBdID09ICJcXCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhpcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBMSVRFUkFMLCBvcmQodGhpcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdICE9IExJVEVSQUwgb3IgY29kZTJbMF0gIT0gTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciByYW5nZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBsbyA9IGNvZGUxWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBoaSA9IGNvZGUyWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBoaSA8IGxvOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIHJhbmdlIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoUkFOR0UsIChsbywgaGkpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdFswXSA9PSAiXFwiOgorICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhhdCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBMSVRFUkFMLCBfb3JkKHRoYXQpCisgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdICE9IExJVEVSQUwgb3IgY29kZTJbMF0gIT0gTElURVJBTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIHJhbmdlICVzLSVzIiAlICh0aGlzLCB0aGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKHRoaXMpICsgMSArIGxlbih0aGF0KSkKKyAgICAgICAgICAgICAgICAgICAgbG8gPSBjb2RlMVsxXQorICAgICAgICAgICAgICAgICAgICBoaSA9IGNvZGUyWzFdCisgICAgICAgICAgICAgICAgICAgIGlmIGhpIDwgbG86CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiYmFkIGNoYXJhY3RlciByYW5nZSAlcy0lcyIgJSAodGhpcywgdGhhdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbih0aGlzKSArIDEgKyBsZW4odGhhdCkpCisgICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoUkFOR0UsIChsbywgaGkpKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpZiBjb2RlMVswXSBpcyBJTjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gY29kZTFbMV1bMF0KQEAgLTUzOCw4ICs1ODgsOSBAQAogICAgICAgICAgICAgICAgICMgWFhYOiA8Zmw+IHNob3VsZCBhZGQgY2hhcm1hcCBvcHRpbWl6YXRpb24gaGVyZQogICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKElOLCBzZXQpKQogCi0gICAgICAgIGVsaWYgdGhpcyBhbmQgdGhpc1swXSBpbiBSRVBFQVRfQ0hBUlM6CisgICAgICAgIGVsaWYgdGhpcyBpbiBSRVBFQVRfQ0hBUlM6CiAgICAgICAgICAgICAjIHJlcGVhdCBwcmV2aW91cyBpdGVtCisgICAgICAgICAgICBoZXJlID0gc291cmNlLnRlbGwoKQogICAgICAgICAgICAgaWYgdGhpcyA9PSAiPyI6CiAgICAgICAgICAgICAgICAgbWluLCBtYXggPSAwLCAxCiAgICAgICAgICAgICBlbGlmIHRoaXMgPT0gIioiOgpAQCAtNTQ5LDIwICs2MDAsMTkgQEAKICAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDEsIE1BWFJFUEVBVAogICAgICAgICAgICAgZWxpZiB0aGlzID09ICJ7IjoKICAgICAgICAgICAgICAgICBpZiBzb3VyY2UubmV4dCA9PSAifSI6Ci0gICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIG9yZCh0aGlzKSkpCisgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGhlcmUgPSBzb3VyY2UudGVsbCgpCiAgICAgICAgICAgICAgICAgbWluLCBtYXggPSAwLCBNQVhSRVBFQVQKICAgICAgICAgICAgICAgICBsbyA9IGhpID0gIiIKICAgICAgICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBESUdJVFM6Ci0gICAgICAgICAgICAgICAgICAgIGxvID0gbG8gKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgbG8gKz0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiLCIpOgogICAgICAgICAgICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBESUdJVFM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoaSA9IGhpICsgc291cmNlZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpICs9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaGkgPSBsbwogICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgifSIpOgotICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBvcmQodGhpcykpKQorICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChMSVRFUkFMLCBfb3JkKHRoaXMpKSkKICAgICAgICAgICAgICAgICAgICAgc291cmNlLnNlZWsoaGVyZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBsbzoKQEAgLTU3NCwxOCArNjI0LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIGlmIG1heCA+PSBNQVhSRVBFQVQ6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJ0aGUgcmVwZXRpdGlvbiBudW1iZXIgaXMgdG9vIGxhcmdlIikKICAgICAgICAgICAgICAgICAgICAgaWYgbWF4IDwgbWluOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCByZXBlYXQgaW50ZXJ2YWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaW4gcmVwZWF0IGdyZWF0ZXIgdGhhbiBtYXggcmVwZWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBxdWFudGlmaWVyICVyIiAlIChjaGFyLCkpCiAgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggaXRlbSB0byByZXBlYXQKICAgICAgICAgICAgIGlmIHN1YnBhdHRlcm46CiAgICAgICAgICAgICAgICAgaXRlbSA9IHN1YnBhdHRlcm5bLTE6XQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpdGVtID0gTm9uZQotICAgICAgICAgICAgaWYgbm90IGl0ZW0gb3IgKF9sZW4oaXRlbSkgPT0gMSBhbmQgaXRlbVswXVswXSA9PSBBVCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5vdGhpbmcgdG8gcmVwZWF0IikKLSAgICAgICAgICAgIGlmIGl0ZW1bMF1bMF0gaW4gUkVQRUFUQ09ERVM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm11bHRpcGxlIHJlcGVhdCIpCisgICAgICAgICAgICBpZiBub3QgaXRlbSBvciAoX2xlbihpdGVtKSA9PSAxIGFuZCBpdGVtWzBdWzBdIGlzIEFUKToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm5vdGhpbmcgdG8gcmVwZWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUgKyBsZW4odGhpcykpCisgICAgICAgICAgICBpZiBpdGVtWzBdWzBdIGluIF9SRVBFQVRDT0RFUzoKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm11bHRpcGxlIHJlcGVhdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlICsgbGVuKHRoaXMpKQogICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuWy0xXSA9IChNSU5fUkVQRUFULCAobWluLCBtYXgsIGl0ZW0pKQogICAgICAgICAgICAgZWxzZToKQEAgLTU5NSwxNTAgKzY0OCwxNDAgQEAKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFOWSwgTm9uZSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICIoIjoKLSAgICAgICAgICAgIGdyb3VwID0gMQorICAgICAgICAgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpIC0gMQorICAgICAgICAgICAgZ3JvdXAgPSBUcnVlCiAgICAgICAgICAgICBuYW1lID0gTm9uZQogICAgICAgICAgICAgY29uZGdyb3VwID0gTm9uZQogICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKLSAgICAgICAgICAgICAgICBncm91cCA9IDAKICAgICAgICAgICAgICAgICAjIG9wdGlvbnMKLSAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiUCIpOgorICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKKyAgICAgICAgICAgICAgICBpZiBjaGFyID09ICJQIjoKICAgICAgICAgICAgICAgICAgICAgIyBweXRob24gZXh0ZW5zaW9ucwogICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lZCBncm91cDogc2tpcCBmb3J3YXJkIHRvIGVuZCBvZiBuYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW50ZXJtaW5hdGVkIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIj4iOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lICsgY2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibWlzc2luZyBncm91cCBuYW1lIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBzb3VyY2UuZ2V0dW50aWwoIj4iKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgc291cmNlbWF0Y2goIj0iKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZWQgYmFja3JlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVudGVybWluYXRlZCBuYW1lIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZSArIGNoYXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiKSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciBpbiBiYWNrcmVmIGdyb3VwIG5hbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnaWQgPSBzdGF0ZS5ncm91cGRpY3QuZ2V0KG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBnaWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IobXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUubG9va2JlaGluZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0ZS5jaGVja2dyb3VwKGdpZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihuYW1lKSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2xvb2tiZWhpbmRncm91cChnaWQsIHNvdXJjZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEdST1VQUkVGLCBnaWQpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmtub3duIHNwZWNpZmllcjogP1AlcyIgJSBjaGFyKQotICAgICAgICAgICAgICAgIGVsaWYgc291cmNlbWF0Y2goIjoiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/UCIgKyBjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDIpCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyID09ICI6IjoKICAgICAgICAgICAgICAgICAgICAgIyBub24tY2FwdHVyaW5nIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgIGdyb3VwID0gMgotICAgICAgICAgICAgICAgIGVsaWYgc291cmNlbWF0Y2goIiMiKToKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBOb25lCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyID09ICIjIjoKICAgICAgICAgICAgICAgICAgICAgIyBjb21tZW50Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2UubmV4dCBpcyBOb25lIG9yIHNvdXJjZS5uZXh0ID09ICIpIjoKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBjb21tZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlZ2V0KCkgPT0gIikiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goIikiKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbGlmIHNvdXJjZS5uZXh0IGluIEFTU0VSVENIQVJTOgorICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiAiPSE8IjoKICAgICAgICAgICAgICAgICAgICAgIyBsb29rYWhlYWQgYXNzZXJ0aW9ucwotICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgZGlyID0gMQogICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICI8IjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IG5vdCBpbiBMT09LQkVISU5EQVNTRVJUQ0hBUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInN5bnRheCBlcnJvciIpCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSAtMSAjIGxvb2tiZWhpbmQKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgbm90IGluICI9ISI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/PCIgKyBjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY2hhcikgKyAyKQorICAgICAgICAgICAgICAgICAgICAgICAgZGlyID0gLTEgIyBsb29rYmVoaW5kCisgICAgICAgICAgICAgICAgICAgICAgICBsb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUubG9va2JlaGluZGdyb3VwcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5ncm91cHMKICAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmQgLT0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIj0iOgogICAgICAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQVNTRVJULCAoZGlyLCBwKSkpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBU1NFUlRfTk9ULCAoZGlyLCBwKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiKCIpOgorICAgICAgICAgICAgICAgIGVsaWYgY2hhciA9PSAiKCI6CiAgICAgICAgICAgICAgICAgICAgICMgY29uZGl0aW9uYWwgYmFja3JlZmVyZW5jZSBncm91cAotICAgICAgICAgICAgICAgICAgICBjb25kbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW50ZXJtaW5hdGVkIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiKSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRuYW1lID0gY29uZG5hbWUgKyBjaGFyCi0gICAgICAgICAgICAgICAgICAgIGdyb3VwID0gMgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29uZG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibWlzc2luZyBncm91cCBuYW1lIikKKyAgICAgICAgICAgICAgICAgICAgY29uZG5hbWUgPSBzb3VyY2UuZ2V0dW50aWwoIikiKQorICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgaWYgY29uZG5hbWUuaXNpZGVudGlmaWVyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25kZ3JvdXAgPSBzdGF0ZS5ncm91cGRpY3QuZ2V0KGNvbmRuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZTogezAhcn0iLmZvcm1hdChjb25kbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcihtc2cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBjb25kbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjb25kbmFtZSkgKyAxKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRncm91cCA9IGludChjb25kbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lIikKLSAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUubG9va2JlaGluZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignZ3JvdXAgcmVmZXJlbmNlcyBpbiBsb29rYmVoaW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgY29uZG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY29uZG5hbWUpICsgMSkgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29uZGdyb3VwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGdyb3VwIG51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjb25kbmFtZSkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwID49IE1BWEdST1VQUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGNvbmRncm91cCwgc291cmNlKQorICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUzoKICAgICAgICAgICAgICAgICAgICAgIyBmbGFncwotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc291cmNlLm5leHQgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybiIpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIEZMQUdTOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmxhZ3MgPSBzdGF0ZS5mbGFncyB8IEZMQUdTW3NvdXJjZWdldCgpXQotICAgICAgICAgICAgaWYgZ3JvdXA6Ci0gICAgICAgICAgICAgICAgIyBwYXJzZSBncm91cCBjb250ZW50cwotICAgICAgICAgICAgICAgIGlmIGdyb3VwID09IDI6Ci0gICAgICAgICAgICAgICAgICAgICMgYW5vbnltb3VzIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyApIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIikiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZmxhZyIsIGxlbihjaGFyKSkKKyAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBleHRlbnNpb24gPyIgKyBjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMSkKKworICAgICAgICAgICAgIyBwYXJzZSBncm91cCBjb250ZW50cworICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBncm91cCA9IHN0YXRlLm9wZW5ncm91cChuYW1lKQotICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cDoKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goIikiKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQotICAgICAgICAgICAgICAgIGlmIGdyb3VwIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwKQotICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgcCkpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihlcnIubXNnLCBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIGlmIGNvbmRncm91cDoKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKLSAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiKSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5rbm93biBleHRlbnNpb24iKQorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUpCisgICAgICAgICAgICBpZiBub3Qgc291cmNlLm1hdGNoKCIpIik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQorICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc3RhdGUuY2xvc2Vncm91cChncm91cCwgcCkKKyAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgcCkpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiXiI6CiAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVCwgQVRfQkVHSU5OSU5HKSkKQEAgLTc0NiwyNSArNzg5LDMxIEBACiAgICAgICAgIGVsaWYgdGhpcyA9PSAiJCI6CiAgICAgICAgICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoQVQsIEFUX0VORCkpCiAKLSAgICAgICAgZWxpZiB0aGlzIGFuZCB0aGlzWzBdID09ICJcXCI6Ci0gICAgICAgICAgICBjb2RlID0gX2VzY2FwZShzb3VyY2UsIHRoaXMsIHN0YXRlKQotICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZChjb2RlKQotCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigicGFyc2VyIGVycm9yIikKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bnN1cHBvcnRlZCBzcGVjaWFsIGNoYXJhY3RlciAlciIgJSAoY2hhciwpKQogCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAogZGVmIGZpeF9mbGFncyhzcmMsIGZsYWdzKToKICAgICAjIENoZWNrIGFuZCBmaXggZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIHBhdHRlcm4gKHN0ciBvciBieXRlcykKICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKToKKyAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkxPQ0FMRSBmbGFnIHdpdGggYSBzdHIgcGF0dGVybiBpcyBkZXByZWNhdGVkLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQogICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKICAgICAgICAgICAgIGZsYWdzIHw9IFNSRV9GTEFHX1VOSUNPREUKICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBU0NJSSBhbmQgVU5JQ09ERSBmbGFncyBhcmUgaW5jb21wYXRpYmxlIikKICAgICBlbHNlOgogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCB1c2UgVU5JQ09ERSBmbGFnIHdpdGggYSBieXRlcyBwYXR0ZXJuIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgVU5JQ09ERSBmbGFnIHdpdGggYSBieXRlcyBwYXR0ZXJuIikKKyAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUgYW5kIGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKICAgICByZXR1cm4gZmxhZ3MKIAogZGVmIHBhcnNlKHN0ciwgZmxhZ3M9MCwgcGF0dGVybj1Ob25lKToKQEAgLTc4MCwxMSArODI5LDkgQEAKICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIDApCiAgICAgcC5wYXR0ZXJuLmZsYWdzID0gZml4X2ZsYWdzKHN0ciwgcC5wYXR0ZXJuLmZsYWdzKQogCi0gICAgdGFpbCA9IHNvdXJjZS5nZXQoKQotICAgIGlmIHRhaWwgPT0gIikiOgotICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCi0gICAgZWxpZiB0YWlsOgotICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgY2hhcmFjdGVycyBhdCBlbmQgb2YgcmVndWxhciBleHByZXNzaW9uIikKKyAgICBpZiBzb3VyY2UubmV4dCBpcyBub3QgTm9uZToKKyAgICAgICAgYXNzZXJ0IHNvdXJjZS5uZXh0ID09ICIpIgorICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogCiAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19ERUJVRzoKICAgICAgICAgcC5kdW1wKCkKQEAgLTgxMSw2ICs4NTgsNyBAQAogICAgICAgICAgICAgZGVsIGxpdGVyYWxbOl0KICAgICAgICAgZ3JvdXBzLmFwcGVuZCgobGVuKGxpdGVyYWxzKSwgaW5kZXgpKQogICAgICAgICBsaXRlcmFscy5hcHBlbmQoTm9uZSkKKyAgICBncm91cGluZGV4ID0gcGF0dGVybi5ncm91cGluZGV4CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgdGhpcyA9IHNnZXQoKQogICAgICAgICBpZiB0aGlzIGlzIE5vbmU6CkBAIC04MjAsMjggKzg2OCwyNSBAQAogICAgICAgICAgICAgYyA9IHRoaXNbMV0KICAgICAgICAgICAgIGlmIGMgPT0gImciOgogICAgICAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICAgICAgICAgIGlmIHMubWF0Y2goIjwiKToKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW50ZXJtaW5hdGVkIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiPiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gY2hhcgotICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibWlzc2luZyBncm91cCBuYW1lIikKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGluZGV4IDwgMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJuZWdhdGl2ZSBncm91cCBudW1iZXIiKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzLm1hdGNoKCI8Iik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoIm1pc3NpbmcgPCIpCisgICAgICAgICAgICAgICAgbmFtZSA9IHMuZ2V0dW50aWwoIj4iKQorICAgICAgICAgICAgICAgIGlmIG5hbWUuaXNpZGVudGlmaWVyKCk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0dGVybi5ncm91cGluZGV4W25hbWVdCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGdyb3VwaW5kZXhbbmFtZV0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZ3JvdXAgbmFtZTogezAhcn0iLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCJ1bmtub3duIGdyb3VwIG5hbWUgJXIiICUgbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGludChuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID49IE1BWEdST1VQUzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICBhZGRncm91cChpbmRleCkKICAgICAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAgICAgaWYgcy5uZXh0IGluIE9DVERJR0lUUzoKQEAgLTg1NywxNCArOTAyLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLm5leHQgaW4gT0NURElHSVRTKToKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgKz0gc2dldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpc29jdGFsID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgbGFwcGVuZChjaHIoaW50KHRoaXNbMTpdLCA4KSAmIDB4ZmYpKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludCh0aGlzWzE6XSwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMgPiAwbzM3NzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCdvY3RhbCBlc2NhcGUgdmFsdWUgJXMgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UgMC0wbzM3NycgJSB0aGlzLCBsZW4odGhpcykpCisgICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihjKSkKICAgICAgICAgICAgICAgICBpZiBub3QgaXNvY3RhbDoKICAgICAgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW50KHRoaXNbMTpdKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0aGlzID0gY2hyKEVTQ0FQRVNbdGhpc11bMV0pCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgorICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD00KQogICAgICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKQEAgLTg3OCwxNCArOTMwLDEyIEBACiAKIGRlZiBleHBhbmRfdGVtcGxhdGUodGVtcGxhdGUsIG1hdGNoKToKICAgICBnID0gbWF0Y2guZ3JvdXAKLSAgICBzZXAgPSBtYXRjaC5zdHJpbmdbOjBdCisgICAgZW1wdHkgPSBtYXRjaC5zdHJpbmdbOjBdCiAgICAgZ3JvdXBzLCBsaXRlcmFscyA9IHRlbXBsYXRlCiAgICAgbGl0ZXJhbHMgPSBsaXRlcmFsc1s6XQogICAgIHRyeToKICAgICAgICAgZm9yIGluZGV4LCBncm91cCBpbiBncm91cHM6Ci0gICAgICAgICAgICBsaXRlcmFsc1tpbmRleF0gPSBzID0gZyhncm91cCkKLSAgICAgICAgICAgIGlmIHMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5tYXRjaGVkIGdyb3VwIikKKyAgICAgICAgICAgIGxpdGVyYWxzW2luZGV4XSA9IGcoZ3JvdXApIG9yIGVtcHR5CiAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgIHJhaXNlIGVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIpCi0gICAgcmV0dXJuIHNlcC5qb2luKGxpdGVyYWxzKQorICAgIHJldHVybiBlbXB0eS5qb2luKGxpdGVyYWxzKQpkaWZmIC0tZ2l0IGEvTGliL3NzbC5weSBiL0xpYi9zc2wucHkKaW5kZXggZWM0MmUzOC4uYWI3YTQ5YiAxMDA2NDQKLS0tIGEvTGliL3NzbC5weQorKysgYi9MaWIvc3NsLnB5CkBAIC04NywxNyArODcsMTggQEAKIEFMRVJUX0RFU0NSSVBUSU9OX1VOS05PV05fUFNLX0lERU5USVRZCiAiIiIKIAoraW1wb3J0IGlwYWRkcmVzcwogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBlbnVtIGltcG9ydCBFbnVtIGFzIF9FbnVtCitmcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0sIEludEVudW0gYXMgX0ludEVudW0KIAogaW1wb3J0IF9zc2wgICAgICAgICAgICAgIyBpZiB3ZSBjYW4ndCBpbXBvcnQgaXQsIGxldCB0aGUgZXJyb3IgcHJvcGFnYXRlCiAKIGZyb20gX3NzbCBpbXBvcnQgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiwgT1BFTlNTTF9WRVJTSU9OX0lORk8sIE9QRU5TU0xfVkVSU0lPTgotZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dAorZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgTWVtb3J5QklPCiBmcm9tIF9zc2wgaW1wb3J0ICgKICAgICBTU0xFcnJvciwgU1NMWmVyb1JldHVybkVycm9yLCBTU0xXYW50UmVhZEVycm9yLCBTU0xXYW50V3JpdGVFcnJvciwKICAgICBTU0xTeXNjYWxsRXJyb3IsIFNTTEVPRkVycm9yLApAQCAtMTE5LDMwICsxMjAsMjMgQEAKIF9pbXBvcnRfc3ltYm9scygnT1BfJykKIF9pbXBvcnRfc3ltYm9scygnQUxFUlRfREVTQ1JJUFRJT05fJykKIF9pbXBvcnRfc3ltYm9scygnU1NMX0VSUk9SXycpCi1faW1wb3J0X3N5bWJvbHMoJ1BST1RPQ09MXycpCiBfaW1wb3J0X3N5bWJvbHMoJ1ZFUklGWV8nKQogCi1mcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOCitmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOLCBIQVNfQUxQTgogCiBmcm9tIF9zc2wgaW1wb3J0IF9PUEVOU1NMX0FQSV9WRVJTSU9OCiAKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAnX1NTTE1ldGhvZCcsIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSwKKyAgICAgICAgc291cmNlPV9zc2wpCiAKLV9QUk9UT0NPTF9OQU1FUyA9IHt2YWx1ZTogbmFtZSBmb3IgbmFtZSwgdmFsdWUgaW4gZ2xvYmFscygpLml0ZW1zKCkgaWYgbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKX0KK19QUk9UT0NPTF9OQU1FUyA9IHt2YWx1ZTogbmFtZSBmb3IgbmFtZSwgdmFsdWUgaW4gX1NTTE1ldGhvZC5fX21lbWJlcnNfXy5pdGVtcygpfQorCiB0cnk6Ci0gICAgZnJvbSBfc3NsIGltcG9ydCBQUk9UT0NPTF9TU0x2MgogICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBQUk9UT0NPTF9TU0x2MgotZXhjZXB0IEltcG9ydEVycm9yOgorZXhjZXB0IE5hbWVFcnJvcjoKICAgICBfU1NMdjJfSUZfRVhJU1RTID0gTm9uZQotZWxzZToKLSAgICBfUFJPVE9DT0xfTkFNRVNbUFJPVE9DT0xfU1NMdjJdID0gIlNTTHYyIgotCi10cnk6Ci0gICAgZnJvbSBfc3NsIGltcG9ydCBQUk9UT0NPTF9UTFN2MV8xLCBQUk9UT0NPTF9UTFN2MV8yCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotZWxzZToKLSAgICBfUFJPVE9DT0xfTkFNRVNbUFJPVE9DT0xfVExTdjFfMV0gPSAiVExTdjEuMSIKLSAgICBfUFJPVE9DT0xfTkFNRVNbUFJPVE9DT0xfVExTdjFfMl0gPSAiVExTdjEuMiIKIAogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgZnJvbSBfc3NsIGltcG9ydCBlbnVtX2NlcnRpZmljYXRlcywgZW51bV9jcmxzCkBAIC0yNDYsNiArMjQwLDE3IEBACiAgICAgcmV0dXJuIHBhdC5tYXRjaChob3N0bmFtZSkKIAogCitkZWYgX2lwYWRkcmVzc19tYXRjaChpcG5hbWUsIGhvc3RfaXApOgorICAgICIiIkV4YWN0IG1hdGNoaW5nIG9mIElQIGFkZHJlc3Nlcy4KKworICAgIFJGQyA2MTI1IGV4cGxpY2l0bHkgZG9lc24ndCBkZWZpbmUgYW4gYWxnb3JpdGhtIGZvciB0aGlzCisgICAgKHNlY3Rpb24gMS43LjIgLSAiT3V0IG9mIFNjb3BlIikuCisgICAgIiIiCisgICAgIyBPcGVuU1NMIG1heSBhZGQgYSB0cmFpbGluZyBuZXdsaW5lIHRvIGEgc3ViamVjdEFsdE5hbWUncyBJUCBhZGRyZXNzCisgICAgaXAgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcyhpcG5hbWUucnN0cmlwKCkpCisgICAgcmV0dXJuIGlwID09IGhvc3RfaXAKKworCiBkZWYgbWF0Y2hfaG9zdG5hbWUoY2VydCwgaG9zdG5hbWUpOgogICAgICIiIlZlcmlmeSB0aGF0ICpjZXJ0KiAoaW4gZGVjb2RlZCBmb3JtYXQgYXMgcmV0dXJuZWQgYnkKICAgICBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKSkgbWF0Y2hlcyB0aGUgKmhvc3RuYW1lKi4gIFJGQyAyODE4IGFuZCBSRkMgNjEyNQpAQCAtMjU4LDExICsyNjMsMjAgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZW1wdHkgb3Igbm8gY2VydGlmaWNhdGUsIG1hdGNoX2hvc3RuYW1lIG5lZWRzIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJTU0wgc29ja2V0IG9yIFNTTCBjb250ZXh0IHdpdGggZWl0aGVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0VSVF9PUFRJT05BTCBvciBDRVJUX1JFUVVJUkVEIikKKyAgICB0cnk6CisgICAgICAgIGhvc3RfaXAgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcyhob3N0bmFtZSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgIyBOb3QgYW4gSVAgYWRkcmVzcyAoY29tbW9uIGNhc2UpCisgICAgICAgIGhvc3RfaXAgPSBOb25lCiAgICAgZG5zbmFtZXMgPSBbXQogICAgIHNhbiA9IGNlcnQuZ2V0KCdzdWJqZWN0QWx0TmFtZScsICgpKQogICAgIGZvciBrZXksIHZhbHVlIGluIHNhbjoKICAgICAgICAgaWYga2V5ID09ICdETlMnOgotICAgICAgICAgICAgaWYgX2Ruc25hbWVfbWF0Y2godmFsdWUsIGhvc3RuYW1lKToKKyAgICAgICAgICAgIGlmIGhvc3RfaXAgaXMgTm9uZSBhbmQgX2Ruc25hbWVfbWF0Y2godmFsdWUsIGhvc3RuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGRuc25hbWVzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgZWxpZiBrZXkgPT0gJ0lQIEFkZHJlc3MnOgorICAgICAgICAgICAgaWYgaG9zdF9pcCBpcyBub3QgTm9uZSBhbmQgX2lwYWRkcmVzc19tYXRjaCh2YWx1ZSwgaG9zdF9pcCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBkbnNuYW1lcy5hcHBlbmQodmFsdWUpCiAgICAgaWYgbm90IGRuc25hbWVzOgpAQCAtMzYxLDYgKzM3NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKIAorICAgIGRlZiB3cmFwX2JpbyhzZWxmLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlPUZhbHNlLAorICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSk6CisgICAgICAgIHNzbG9iaiA9IHNlbGYuX3dyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqKQorCiAgICAgZGVmIHNldF9ucG5fcHJvdG9jb2xzKHNlbGYsIG5wbl9wcm90b2NvbHMpOgogICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQogICAgICAgICBmb3IgcHJvdG9jb2wgaW4gbnBuX3Byb3RvY29sczoKQEAgLTM3Miw2ICszOTIsMTcgQEAKIAogICAgICAgICBzZWxmLl9zZXRfbnBuX3Byb3RvY29scyhwcm90b3MpCiAKKyAgICBkZWYgc2V0X2FscG5fcHJvdG9jb2xzKHNlbGYsIGFscG5fcHJvdG9jb2xzKToKKyAgICAgICAgcHJvdG9zID0gYnl0ZWFycmF5KCkKKyAgICAgICAgZm9yIHByb3RvY29sIGluIGFscG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgYiA9IGJ5dGVzKHByb3RvY29sLCAnYXNjaWknKQorICAgICAgICAgICAgaWYgbGVuKGIpID09IDAgb3IgbGVuKGIpID4gMjU1OgorICAgICAgICAgICAgICAgIHJhaXNlIFNTTEVycm9yKCdBTFBOIHByb3RvY29scyBtdXN0IGJlIDEgdG8gMjU1IGluIGxlbmd0aCcpCisgICAgICAgICAgICBwcm90b3MuYXBwZW5kKGxlbihiKSkKKyAgICAgICAgICAgIHByb3Rvcy5leHRlbmQoYikKKworICAgICAgICBzZWxmLl9zZXRfYWxwbl9wcm90b2NvbHMocHJvdG9zKQorCiAgICAgZGVmIF9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMoc2VsZiwgc3RvcmVuYW1lLCBwdXJwb3NlKToKICAgICAgICAgY2VydHMgPSBieXRlYXJyYXkoKQogICAgICAgICBmb3IgY2VydCwgZW5jb2RpbmcsIHRydXN0IGluIGVudW1fY2VydGlmaWNhdGVzKHN0b3JlbmFtZSk6CkBAIC00ODgsNiArNTE5LDE0MSBAQAogX2NyZWF0ZV9zdGRsaWJfY29udGV4dCA9IF9jcmVhdGVfdW52ZXJpZmllZF9jb250ZXh0CiAKIAorY2xhc3MgU1NMT2JqZWN0OgorICAgICIiIlRoaXMgY2xhc3MgaW1wbGVtZW50cyBhbiBpbnRlcmZhY2Ugb24gdG9wIG9mIGEgbG93LWxldmVsIFNTTCBvYmplY3QgYXMKKyAgICBpbXBsZW1lbnRlZCBieSBPcGVuU1NMLiBUaGlzIG9iamVjdCBjYXB0dXJlcyB0aGUgc3RhdGUgb2YgYW4gU1NMIGNvbm5lY3Rpb24KKyAgICBidXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgbmV0d29yayBJTyBpdHNlbGYuIElPIG5lZWRzIHRvIGJlIHBlcmZvcm1lZAorICAgIHRocm91Z2ggc2VwYXJhdGUgIkJJTyIgb2JqZWN0cyB3aGljaCBhcmUgT3BlblNTTCdzIElPIGFic3RyYWN0aW9uIGxheWVyLgorCisgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCBoYXZlIGEgcHVibGljIGNvbnN0cnVjdG9yLiBJbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5CisgICAgYGBTU0xDb250ZXh0LndyYXBfYmlvYGAuIFRoaXMgY2xhc3MgaXMgdHlwaWNhbGx5IHVzZWQgYnkgZnJhbWV3b3JrIGF1dGhvcnMKKyAgICB0aGF0IHdhbnQgdG8gaW1wbGVtZW50IGFzeW5jaHJvbm91cyBJTyBmb3IgU1NMIHRocm91Z2ggbWVtb3J5IGJ1ZmZlcnMuCisKKyAgICBXaGVuIGNvbXBhcmVkIHRvIGBgU1NMU29ja2V0YGAsIHRoaXMgb2JqZWN0IGxhY2tzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6CisKKyAgICAgKiBBbnkgZm9ybSBvZiBuZXR3b3JrIElPIGluY2x1Z2luZyBtZXRob2RzIHN1Y2ggYXMgYGByZWN2YGAgYW5kIGBgc2VuZGBgLgorICAgICAqIFRoZSBgYGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0YGAgYW5kIGBgc3VwcHJlc3NfcmFnZ2VkX2VvZnNgYCBtYWNoaW5lcnkuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lKToKKyAgICAgICAgc2VsZi5fc3Nsb2JqID0gc3Nsb2JqCisgICAgICAgICMgTm90ZTogX3NzbG9iaiB0YWtlcyBhIHdlYWsgcmVmZXJlbmNlIHRvIG93bmVyCisgICAgICAgIHNlbGYuX3NzbG9iai5vd25lciA9IG93bmVyIG9yIHNlbGYKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZXh0KHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMQ29udGV4dCB0aGF0IGlzIGN1cnJlbnRseSBpbiB1c2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouY29udGV4dAorCisgICAgQGNvbnRleHQuc2V0dGVyCisgICAgZGVmIGNvbnRleHQoc2VsZiwgY3R4KToKKyAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2ZXJfc2lkZShzZWxmKToKKyAgICAgICAgIiIiV2hldGhlciB0aGlzIGlzIGEgc2VydmVyLXNpZGUgc29ja2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlcnZlcl9zaWRlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2VydmVyX2hvc3RuYW1lKHNlbGYpOgorICAgICAgICAiIiJUaGUgY3VycmVudGx5IHNldCBzZXJ2ZXIgaG9zdG5hbWUgKGZvciBTTkkpLCBvciBgYE5vbmVgYCBpZiBubworICAgICAgICBzZXJ2ZXIgaG9zdGFtZSBpcyBzZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX2hvc3RuYW1lCisKKyAgICBkZWYgcmVhZChzZWxmLCBsZW49MCwgYnVmZmVyPU5vbmUpOgorICAgICAgICAiIiJSZWFkIHVwIHRvICdsZW4nIGJ5dGVzIGZyb20gdGhlIFNTTCBvYmplY3QgYW5kIHJldHVybiB0aGVtLgorCisgICAgICAgIElmICdidWZmZXInIGlzIHByb3ZpZGVkLCByZWFkIGludG8gdGhpcyBidWZmZXIgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mCisgICAgICAgIGJ5dGVzIHJlYWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBidWZmZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLnJlYWQobGVuIG9yIDEwMjQpCisgICAgICAgIHJldHVybiB2CisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlICdkYXRhJyB0byB0aGUgU1NMIG9iamVjdCBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMKKyAgICAgICAgd3JpdHRlbi4KKworICAgICAgICBUaGUgJ2RhdGEnIGFyZ3VtZW50IG11c3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoud3JpdGUoZGF0YSkKKworICAgIGRlZiBnZXRwZWVyY2VydChzZWxmLCBiaW5hcnlfZm9ybT1GYWxzZSk6CisgICAgICAgICIiIlJldHVybnMgYSBmb3JtYXR0ZWQgdmVyc2lvbiBvZiB0aGUgZGF0YSBpbiB0aGUgY2VydGlmaWNhdGUgcHJvdmlkZWQKKyAgICAgICAgYnkgdGhlIG90aGVyIGVuZCBvZiB0aGUgU1NMIGNoYW5uZWwuCisKKyAgICAgICAgUmV0dXJuIE5vbmUgaWYgbm8gY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLCB7fSBpZiBhIGNlcnRpZmljYXRlIHdhcworICAgICAgICBwcm92aWRlZCwgYnV0IG5vdCB2YWxpZGF0ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCisKKyAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBOUE4gcHJvdG9jb2wgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgCisgICAgICAgIGlmIGEgbmV4dCBwcm90b2NvbCB3YXMgbm90IG5lZ290aWF0ZWQgb3IgaWYgTlBOIGlzIG5vdCBzdXBwb3J0ZWQgYnkgb25lCisgICAgICAgIG9mIHRoZSBwZWVycy4iIiIKKyAgICAgICAgaWYgX3NzbC5IQVNfTlBOOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorCisgICAgZGVmIHNlbGVjdGVkX2FscG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIEFMUE4gcHJvdG9jb2wgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgCisgICAgICAgIGlmIGEgbmV4dCBwcm90b2NvbCB3YXMgbm90IG5lZ290aWF0ZWQgb3IgaWYgQUxQTiBpcyBub3Qgc3VwcG9ydGVkIGJ5IG9uZQorICAgICAgICBvZiB0aGUgcGVlcnMuIiIiCisgICAgICAgIGlmIF9zc2wuSEFTX0FMUE46CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKQorCisgICAgZGVmIGNpcGhlcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgY2lwaGVyIGFzIGEgMy10dXBsZSBgYChuYW1lLAorICAgICAgICBzc2xfdmVyc2lvbiwgc2VjcmV0X2JpdHMpYGAuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouY2lwaGVyKCkKKworICAgIGRlZiBzaGFyZWRfY2lwaGVycyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjaXBoZXJzIHNoYXJlZCBieSB0aGUgY2xpZW50IGR1cmluZyB0aGUgaGFuZHNoYWtlIG9yCisgICAgICAgIE5vbmUgaWYgdGhpcyBpcyBub3QgYSB2YWxpZCBzZXJ2ZXIgY29ubmVjdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2hhcmVkX2NpcGhlcnMoKQorCisgICAgZGVmIGNvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgY29tcHJlc3Npb24gYWxnb3JpdGhtIGluIHVzZSwgb3IgYGBOb25lYGAgaWYKKyAgICAgICAgY29tcHJlc3Npb24gd2FzIG5vdCBuZWdvdGlhdGVkIG9yIG5vdCBzdXBwb3J0ZWQgYnkgb25lIG9mIHRoZSBwZWVycy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jb21wcmVzc2lvbigpCisKKyAgICBkZWYgcGVuZGluZyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgcmVhZCBpbW1lZGlhdGVseS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5wZW5kaW5nKCkKKworICAgIGRlZiBkb19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgICIiIlN0YXJ0IHRoZSBTU0wvVExTIGhhbmRzaGFrZS4iIiIKKyAgICAgICAgc2VsZi5fc3Nsb2JqLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIGlmIHNlbGYuY29udGV4dC5jaGVja19ob3N0bmFtZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9ob3N0bmFtZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSBuZWVkcyBzZXJ2ZXJfaG9zdG5hbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IikKKyAgICAgICAgICAgIG1hdGNoX2hvc3RuYW1lKHNlbGYuZ2V0cGVlcmNlcnQoKSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCisKKyAgICBkZWYgdW53cmFwKHNlbGYpOgorICAgICAgICAiIiJTdGFydCB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zaHV0ZG93bigpCisKKyAgICBkZWYgZ2V0X2NoYW5uZWxfYmluZGluZyhzZWxmLCBjYl90eXBlPSJ0bHMtdW5pcXVlIik6CisgICAgICAgICIiIkdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgY3VycmVudCBjb25uZWN0aW9uLiAgUmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuIiIiCisgICAgICAgIGlmIGNiX3R5cGUgbm90IGluIENIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIikKKyAgICAgICAgaWYgY2JfdHlwZSAhPSAidGxzLXVuaXF1ZSI6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0gY2hhbm5lbCBiaW5kaW5nIHR5cGUgbm90IGltcGxlbWVudGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfdHlwZSkpCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCisKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBwcm90b2NvbCB2ZXJzaW9uIHVzZWQgYnkgdGhlCisgICAgICAgIGN1cnJlbnQgU1NMIGNoYW5uZWwuICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnZlcnNpb24oKQorCisKIGNsYXNzIFNTTFNvY2tldChzb2NrZXQpOgogICAgICIiIlRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHN1YnR5cGUgb2Ygc29ja2V0LnNvY2tldCB0aGF0IHdyYXBzCiAgICAgdGhlIHVuZGVybHlpbmcgT1Mgc29ja2V0IGluIGFuIFNTTCBjb250ZXh0IHdoZW4gbmVjZXNzYXJ5LCBhbmQKQEAgLTU3MCw4ICs3MzYsOSBAQAogICAgICAgICBpZiBjb25uZWN0ZWQ6CiAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgU1NMIG9iamVjdAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IHNlbGYuX2NvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIHNlcnZlcl9zaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQorICAgICAgICAgICAgICAgIHNzbG9iaiA9IHNlbGYuX2NvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIHNlcnZlcl9zaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmKQogICAgICAgICAgICAgICAgIGlmIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0OgogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXR0aW1lb3V0KCkKICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwLjA6CkBAIC02MTYsMTEgKzc4Myw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJSZWFkIG9uIGNsb3NlZCBvciB1bndyYXBwZWQgU1NMIHNvY2tldC4iKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBidWZmZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgdiA9IHNlbGYuX3NzbG9iai5yZWFkKGxlbiwgYnVmZmVyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLnJlYWQobGVuIG9yIDEwMjQpCi0gICAgICAgICAgICByZXR1cm4gdgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5yZWFkKGxlbiwgYnVmZmVyKQogICAgICAgICBleGNlcHQgU1NMRXJyb3IgYXMgeDoKICAgICAgICAgICAgIGlmIHguYXJnc1swXSA9PSBTU0xfRVJST1JfRU9GIGFuZCBzZWxmLnN1cHByZXNzX3JhZ2dlZF9lb2ZzOgogICAgICAgICAgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKQEAgLTY0Nyw3ICs4MTAsNyBAQAogCiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfY29ubmVjdGVkKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5wZWVyX2NlcnRpZmljYXRlKGJpbmFyeV9mb3JtKQorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmdldHBlZXJjZXJ0KGJpbmFyeV9mb3JtKQogCiAgICAgZGVmIHNlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQpAQCAtNjU2LDYgKzgxOSwxMyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQogCisgICAgZGVmIHNlbGVjdGVkX2FscG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iaiBvciBub3QgX3NzbC5IQVNfQUxQTjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKQorCiAgICAgZGVmIGNpcGhlcihzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqOgpAQCAtNjYzLDYgKzgzMywxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jaXBoZXIoKQogCisgICAgZGVmIHNoYXJlZF9jaXBoZXJzKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkKKwogICAgIGRlZiBjb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqOgpAQCAtNjc3LDE3ICs4NTMsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICJub24temVybyBmbGFncyBub3QgYWxsb3dlZCBpbiBjYWxscyB0byBzZW5kKCkgb24gJXMiICUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdiA9IHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQotICAgICAgICAgICAgZXhjZXB0IFNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgaWYgeC5hcmdzWzBdID09IFNTTF9FUlJPUl9XQU5UX1JFQUQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICAgICAgZWxpZiB4LmFyZ3NbMF0gPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHYKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoud3JpdGUoZGF0YSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZChzZWxmLCBkYXRhLCBmbGFncykKIApAQCAtNzIzLDYgKzg4OSwxNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5zZW5kYWxsKHNlbGYsIGRhdGEsIGZsYWdzKQogCisgICAgZGVmIHNlbmRmaWxlKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgIiIiU2VuZCBhIGZpbGUsIHBvc3NpYmx5IGJ5IHVzaW5nIG9zLnNlbmRmaWxlKCkgaWYgdGhpcyBpcyBhCisgICAgICAgIGNsZWFyLXRleHQgc29ja2V0LiAgUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgc2VudC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBOb25lOgorICAgICAgICAgICAgIyBvcy5zZW5kZmlsZSgpIHdvcmtzIHdpdGggcGxhaW4gc29ja2V0cyBvbmx5CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5zZW5kZmlsZShmaWxlLCBvZmZzZXQsIGNvdW50KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRmaWxlX3VzZV9zZW5kKGZpbGUsIG9mZnNldCwgY291bnQpCisKICAgICBkZWYgcmVjdihzZWxmLCBidWZsZW49MTAyNCwgZmxhZ3M9MCk6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtNzg3LDcgKzk2Myw3IEBACiAKICAgICBkZWYgdW53cmFwKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6Ci0gICAgICAgICAgICBzID0gc2VsZi5fc3Nsb2JqLnNodXRkb3duKCkKKyAgICAgICAgICAgIHMgPSBzZWxmLl9zc2xvYmoudW53cmFwKCkKICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgIGVsc2U6CkBAIC04MDgsMTIgKzk4NCw2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNldHRpbWVvdXQodGltZW91dCkKIAotICAgICAgICBpZiBzZWxmLmNvbnRleHQuY2hlY2tfaG9zdG5hbWU6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXJfaG9zdG5hbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2hlY2tfaG9zdG5hbWUgbmVlZHMgc2VydmVyX2hvc3RuYW1lICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCIpCi0gICAgICAgICAgICBtYXRjaF9ob3N0bmFtZShzZWxmLmdldHBlZXJjZXJ0KCksIHNlbGYuc2VydmVyX2hvc3RuYW1lKQotCiAgICAgZGVmIF9yZWFsX2Nvbm5lY3Qoc2VsZiwgYWRkciwgY29ubmVjdF9leCk6CiAgICAgICAgIGlmIHNlbGYuc2VydmVyX3NpZGU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBjb25uZWN0IGluIHNlcnZlci1zaWRlIG1vZGUiKQpAQCAtODIxLDcgKzk5MSw4IEBACiAgICAgICAgICMgY29ubmVjdGVkIGF0IHRoZSB0aW1lIG9mIHRoZSBjYWxsLiAgV2UgY29ubmVjdCBpdCwgdGhlbiB3cmFwIGl0LgogICAgICAgICBpZiBzZWxmLl9jb25uZWN0ZWQ6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhdHRlbXB0IHRvIGNvbm5lY3QgYWxyZWFkeS1jb25uZWN0ZWQgU1NMU29ja2V0ISIpCi0gICAgICAgIHNlbGYuX3NzbG9iaiA9IHNlbGYuY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgRmFsc2UsIHNlbGYuc2VydmVyX2hvc3RuYW1lKQorICAgICAgICBzc2xvYmogPSBzZWxmLmNvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIEZhbHNlLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgY29ubmVjdF9leDoKICAgICAgICAgICAgICAgICByYyA9IHNvY2tldC5jb25uZWN0X2V4KHNlbGYsIGFkZHIpCkBAIC04NjQsMTUgKzEwMzUsMTggQEAKICAgICAgICAgaWYgdGhlIHJlcXVlc3RlZCBgY2JfdHlwZWAgaXMgbm90IHN1cHBvcnRlZC4gIFJldHVybiBieXRlcyBvZiB0aGUgZGF0YQogICAgICAgICBvciBOb25lIGlmIHRoZSBkYXRhIGlzIG5vdCBhdmFpbGFibGUgKGUuZy4gYmVmb3JlIHRoZSBoYW5kc2hha2UpLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgY2JfdHlwZSBub3QgaW4gQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5zdXBwb3J0ZWQgY2hhbm5lbCBiaW5kaW5nIHR5cGUiKQotICAgICAgICBpZiBjYl90eXBlICE9ICJ0bHMtdW5pcXVlIjoKLSAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfSBjaGFubmVsIGJpbmRpbmcgdHlwZSBub3QgaW1wbGVtZW50ZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChjYl90eXBlKSkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnRsc191bmlxdWVfY2IoKQorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoY2JfdHlwZSkKKworICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBwcm90b2NvbCB2ZXJzaW9uIHVzZWQgYnkgdGhlCisgICAgICAgIGN1cnJlbnQgU1NMIGNoYW5uZWwsIG9yIE5vbmUgaWYgdGhlcmUgaXMgbm8gZXN0YWJsaXNoZWQgY2hhbm5lbC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai52ZXJzaW9uKCkKIAogCiBkZWYgd3JhcF9zb2NrZXQoc29jaywga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLApAQCAtODkyLDEyICsxMDY2LDM0IEBACiAjIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMKIAogZGVmIGNlcnRfdGltZV90b19zZWNvbmRzKGNlcnRfdGltZSk6Ci0gICAgIiIiVGFrZXMgYSBkYXRlLXRpbWUgc3RyaW5nIGluIHN0YW5kYXJkIEFTTjFfcHJpbnQgZm9ybQotICAgICgiTU9OIERBWSAyNEhPVVI6TUlOVVRFOlNFQyBZRUFSIFRJTUVaT05FIikgYW5kIHJldHVybgotICAgIGEgUHl0aG9uIHRpbWUgdmFsdWUgaW4gc2Vjb25kcyBwYXN0IHRoZSBlcG9jaC4iIiIKKyAgICAiIiJSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2gsIGdpdmVuIHRoZSB0aW1lc3RyaW5nCisgICAgcmVwcmVzZW50aW5nIHRoZSAibm90QmVmb3JlIiBvciAibm90QWZ0ZXIiIGRhdGUgZnJvbSBhIGNlcnRpZmljYXRlCisgICAgaW4gYGAiJWIgJWQgJUg6JU06JVMgJVkgJVoiYGAgc3RycHRpbWUgZm9ybWF0IChDIGxvY2FsZSkuCiAKLSAgICBpbXBvcnQgdGltZQotICAgIHJldHVybiB0aW1lLm1rdGltZSh0aW1lLnN0cnB0aW1lKGNlcnRfdGltZSwgIiViICVkICVIOiVNOiVTICVZIEdNVCIpKQorICAgICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZXMgbXVzdCB1c2UgVVRDIChSRkMgNTI4MCkuCisKKyAgICBNb250aCBpcyBvbmUgb2Y6IEphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjCisgICAgVVRDIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgR01UIChzZWUgQVNOMV9USU1FX3ByaW50KCkpCisgICAgIiIiCisgICAgZnJvbSB0aW1lIGltcG9ydCBzdHJwdGltZQorICAgIGZyb20gY2FsZW5kYXIgaW1wb3J0IHRpbWVnbQorCisgICAgbW9udGhzID0gKAorICAgICAgICAiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwKKyAgICAgICAgIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyIKKyAgICApCisgICAgdGltZV9mb3JtYXQgPSAnICVkICVIOiVNOiVTICVZIEdNVCcgIyBOT1RFOiBubyBtb250aCwgZml4ZWQgR01UCisgICAgdHJ5OgorICAgICAgICBtb250aF9udW1iZXIgPSBtb250aHMuaW5kZXgoY2VydF90aW1lWzozXS50aXRsZSgpKSArIDEKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndGltZSBkYXRhICVyIGRvZXMgbm90IG1hdGNoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZm9ybWF0ICIlJWIlcyInICUgKGNlcnRfdGltZSwgdGltZV9mb3JtYXQpKQorICAgIGVsc2U6CisgICAgICAgICMgZm91bmQgdmFsaWQgbW9udGgKKyAgICAgICAgdHQgPSBzdHJwdGltZShjZXJ0X3RpbWVbMzpdLCB0aW1lX2Zvcm1hdCkKKyAgICAgICAgIyByZXR1cm4gYW4gaW50ZWdlciwgdGhlIHByZXZpb3VzIG1rdGltZSgpLWJhc2VkIGltcGxlbWVudGF0aW9uCisgICAgICAgICMgcmV0dXJuZWQgYSBmbG9hdCAoZnJhY3Rpb25hbCBzZWNvbmRzIGFyZSBhbHdheXMgemVybyBoZXJlKS4KKyAgICAgICAgcmV0dXJuIHRpbWVnbSgodHRbMF0sIG1vbnRoX251bWJlcikgKyB0dFsyOjZdKQogCiBQRU1fSEVBREVSID0gIi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLSIKIFBFTV9GT09URVIgPSAiLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLSIKZGlmZiAtLWdpdCBhL0xpYi9zdGF0LnB5IGIvTGliL3N0YXQucHkKaW5kZXggM2VlY2MzZS4uNDY4MzdjMCAxMDA2NDQKLS0tIGEvTGliL3N0YXQucHkKKysrIGIvTGliL3N0YXQucHkKQEAgLTE0OCw2ICsxNDgsMjkgQEAKICAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKICAgICByZXR1cm4gIiIuam9pbihwZXJtKQogCisKKyMgV2luZG93cyBGSUxFX0FUVFJJQlVURSBjb25zdGFudHMgZm9yIGludGVycHJldGluZyBvcy5zdGF0KCkncworIyAic3RfZmlsZV9hdHRyaWJ1dGVzIiBtZW1iZXIKKworRklMRV9BVFRSSUJVVEVfQVJDSElWRSA9IDMyCitGSUxFX0FUVFJJQlVURV9DT01QUkVTU0VEID0gMjA0OAorRklMRV9BVFRSSUJVVEVfREVWSUNFID0gNjQKK0ZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSA9IDE2CitGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQgPSAxNjM4NAorRklMRV9BVFRSSUJVVEVfSElEREVOID0gMgorRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSA9IDMyNzY4CitGSUxFX0FUVFJJQlVURV9OT1JNQUwgPSAxMjgKK0ZJTEVfQVRUUklCVVRFX05PVF9DT05URU5UX0lOREVYRUQgPSA4MTkyCitGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBID0gMTMxMDcyCitGSUxFX0FUVFJJQlVURV9PRkZMSU5FID0gNDA5NgorRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkgPSAxCitGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UID0gMTAyNAorRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUgPSA1MTIKK0ZJTEVfQVRUUklCVVRFX1NZU1RFTSA9IDQKK0ZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWSA9IDI1NgorRklMRV9BVFRSSUJVVEVfVklSVFVBTCA9IDY1NTM2CisKKwogIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCiB0cnk6CiAgICAgZnJvbSBfc3RhdCBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvTGliL3N0YXRpc3RpY3MucHkgYi9MaWIvc3RhdGlzdGljcy5weQppbmRleCAyNWEyNmQ0Li4zOTcyZWQyIDEwMDY0NAotLS0gYS9MaWIvc3RhdGlzdGljcy5weQorKysgYi9MaWIvc3RhdGlzdGljcy5weQpAQCAtMTUwLDcgKzE1MCw3IEBACiAgICAgIyBXZSBmYWlsIGFzIHNvb24gYXMgd2UgcmVhY2ggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBpbnQgb3IgdGhlIHR5cGUgb2YKICAgICAjIHRoZSBmaXJzdCB2YWx1ZSB3aGljaCBpcyBub3QgYW4gaW50LiBFLmcuIF9zdW0oW2ludCwgaW50LCBmbG9hdCwgaW50XSkKICAgICAjIGlzIG9rYXksIGJ1dCBzdW0oW2ludCwgaW50LCBmbG9hdCwgRnJhY3Rpb25dKSBpcyBub3QuCi0gICAgYWxsb3dlZF90eXBlcyA9IHNldChbaW50LCB0eXBlKHN0YXJ0KV0pCisgICAgYWxsb3dlZF90eXBlcyA9IHtpbnQsIHR5cGUoc3RhcnQpfQogICAgIG4sIGQgPSBfZXhhY3RfcmF0aW8oc3RhcnQpCiAgICAgcGFydGlhbHMgPSB7ZDogbn0gICMgbWFwIHtkZW5vbWluYXRvcjogc3VtIG9mIG51bWVyYXRvcnN9CiAgICAgIyBNaWNyby1vcHRpbWl6YXRpb25zLgpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgIGFzc2VydCBhbGxvd2VkX3R5cGVzLnBvcCgpIGlzIGludAogICAgICAgICBUID0gaW50CiAgICAgZWxzZToKLSAgICAgICAgVCA9IChhbGxvd2VkX3R5cGVzIC0gc2V0KFtpbnRdKSkucG9wKCkKKyAgICAgICAgVCA9IChhbGxvd2VkX3R5cGVzIC0ge2ludH0pLnBvcCgpCiAgICAgaWYgTm9uZSBpbiBwYXJ0aWFsczoKICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVCwgKGZsb2F0LCBEZWNpbWFsKSkKICAgICAgICAgYXNzZXJ0IG5vdCBtYXRoLmlzZmluaXRlKHBhcnRpYWxzW05vbmVdKQpkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggZWYwNzg3Zi4uNjJlOGYyZiAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC0xNzgsNiArMTc4LDkgQEAKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBpZiAnZm9ybWF0X3N0cmluZycgaW4ga3dhcmdzOgogICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSBrd2FyZ3MucG9wKCdmb3JtYXRfc3RyaW5nJykKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJQYXNzaW5nICdmb3JtYXRfc3RyaW5nJyBhcyBrZXl3b3JkIGFyZ3VtZW50IGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZm9ybWF0KCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQ6ICdmb3JtYXRfc3RyaW5nJyIpIGZyb20gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCBmMTFlNTM4Li5iNmM0Mzc0IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtMTA0LDE3ICsxMDQsMjEgQEAKIElmIGVudiBpcyBub3QgTm9uZSwgaXQgZGVmaW5lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbmV3CiBwcm9jZXNzLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgZmFsc2UsIHRoZSBmaWxlIG9iamVjdHMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyCitJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgRmFsc2UsIHRoZSBmaWxlIG9iamVjdHMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyCiBhcmUgb3BlbmVkIGFzIGJpbmFyeSBmaWxlcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMgZG9uZS4KIAotSWYgdW5pdmVyc2FsX25ld2xpbmVzIGlzIHRydWUsIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlCi1vcGVuZWQgYXMgYSB0ZXh0IGZpbGVzLCBidXQgbGluZXMgbWF5IGJlIHRlcm1pbmF0ZWQgYnkgYW55IG9mICdcbicsCitJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgVHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKK29wZW5lZCBhcyBhIHRleHQgZmlsZSwgYnV0IGxpbmVzIG1heSBiZSB0ZXJtaW5hdGVkIGJ5IGFueSBvZiAnXG4nLAogdGhlIFVuaXggZW5kLW9mLWxpbmUgY29udmVudGlvbiwgJ1xyJywgdGhlIG9sZCBNYWNpbnRvc2ggY29udmVudGlvbiBvcgogJ1xyXG4nLCB0aGUgV2luZG93cyBjb252ZW50aW9uLiAgQWxsIG9mIHRoZXNlIGV4dGVybmFsIHJlcHJlc2VudGF0aW9ucwogYXJlIHNlZW4gYXMgJ1xuJyBieSB0aGUgUHl0aG9uIHByb2dyYW0uICBBbHNvLCB0aGUgbmV3bGluZXMgYXR0cmlidXRlCiBvZiB0aGUgZmlsZSBvYmplY3RzIHN0ZG91dCwgc3RkaW4gYW5kIHN0ZGVyciBhcmUgbm90IHVwZGF0ZWQgYnkgdGhlCiBjb21tdW5pY2F0ZSgpIG1ldGhvZC4KIAorSW4gZWl0aGVyIGNhc2UsIHRoZSBwcm9jZXNzIGJlaW5nIGNvbW11bmljYXRlZCB3aXRoIHNob3VsZCBzdGFydCB1cAorZXhwZWN0aW5nIHRvIHJlY2VpdmUgYnl0ZXMgb24gaXRzIHN0YW5kYXJkIGlucHV0IGFuZCBkZWNvZGUgdGhlbSB3aXRoCit0aGUgc2FtZSBlbmNvZGluZyB0aGV5IGFyZSBzZW50IGluLgorCiBUaGUgc3RhcnR1cGluZm8gYW5kIGNyZWF0aW9uZmxhZ3MsIGlmIGdpdmVuLCB3aWxsIGJlIHBhc3NlZCB0byB0aGUKIHVuZGVybHlpbmcgQ3JlYXRlUHJvY2VzcygpIGZ1bmN0aW9uLiAgVGhleSBjYW4gc3BlY2lmeSB0aGluZ3Mgc3VjaCBhcwogYXBwZWFyYW5jZSBvZiB0aGUgbWFpbiB3aW5kb3cgYW5kIHByaW9yaXR5IGZvciB0aGUgbmV3IHByb2Nlc3MuCkBAIC0xODQsNiArMTg4LDkgQEAKICAgICBwYXNzIGEgc3RyaW5nIHRvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB5b3UgdXNlIHRoaXMgYXJndW1lbnQKICAgICB5b3UgbWF5IG5vdCBhbHNvIHVzZSB0aGUgUG9wZW4gY29uc3RydWN0b3IncyAic3RkaW4iIGFyZ3VtZW50LgogCisgICAgSWYgdW5pdmVyc2FsX25ld2xpbmVzIGlzIHNldCB0byBUcnVlLCB0aGUgImlucHV0IiBhcmd1bWVudCBtdXN0CisgICAgYmUgYSBzdHJpbmcgcmF0aGVyIHRoYW4gYnl0ZXMsIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYSBzdHJpbmcuCisKIEV4Y2VwdGlvbnMKIC0tLS0tLS0tLS0KIEV4Y2VwdGlvbnMgcmFpc2VkIGluIHRoZSBjaGlsZCBwcm9jZXNzLCBiZWZvcmUgdGhlIG5ldyBwcm9ncmFtIGhhcwpAQCAtMjI1LDkgKzIzMiwxMyBAQAogY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSkKICAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dAogICAgIGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvCi0gICAgdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyB0byBiZQorICAgIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZQogICAgIHNlbnQgdG8gdGhlIGNoaWxkIHByb2Nlc3MsIG9yIE5vbmUsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8KLSAgICB0aGUgY2hpbGQuCisgICAgdGhlIGNoaWxkLiBJZiB0aGUgUG9wZW4gaW5zdGFuY2Ugd2FzIGNvbnN0cnVjdGVkIHdpdGggdW5pdmVyc2FsX25ld2xpbmVzCisgICAgc2V0IHRvIFRydWUsIHRoZSBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcgYW5kIHdpbGwgYmUgZW5jb2RlZAorICAgIHVzaW5nIHRoZSBwcmVmZXJyZWQgc3lzdGVtIGVuY29kaW5nIChzZWUgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKTsKKyAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgRmFsc2UsIHRoZSBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIGJ5dGUgc3RyaW5nLgogCiAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4KIApAQCAtMzQ1LDcgKzM1Niw3IEBACiAiIiIKIAogaW1wb3J0IHN5cwotbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQorX21zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKQEAgLTM1NCwxMCArMzY1LDcgQEAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZXJybm8KLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogIyBFeGNlcHRpb24gY2xhc3NlcyB1c2VkIGJ5IHRoaXMgbW9kdWxlLgogY2xhc3MgU3VicHJvY2Vzc0Vycm9yKEV4Y2VwdGlvbik6IHBhc3MKQEAgLTM2OSwyOSArMzc3LDUzIEBACiAgICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKICAgICBjaGVja19vdXRwdXQoKSB3aWxsIGFsc28gc3RvcmUgdGhlIG91dHB1dCBpbiB0aGUgb3V0cHV0IGF0dHJpYnV0ZS4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZSwgY21kLCBvdXRwdXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldHVybmNvZGUsIGNtZCwgb3V0cHV0PU5vbmUsIHN0ZGVycj1Ob25lKToKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gcmV0dXJuY29kZQogICAgICAgICBzZWxmLmNtZCA9IGNtZAogICAgICAgICBzZWxmLm91dHB1dCA9IG91dHB1dAorICAgICAgICBzZWxmLnN0ZGVyciA9IHN0ZGVycgorCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkIiAlIChzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0ZG91dChzZWxmKToKKyAgICAgICAgIiIiQWxpYXMgZm9yIG91dHB1dCBhdHRyaWJ1dGUsIHRvIG1hdGNoIHN0ZGVyciIiIgorICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQKKworICAgIEBzdGRvdXQuc2V0dGVyCisgICAgZGVmIHN0ZG91dChzZWxmLCB2YWx1ZSk6CisgICAgICAgICMgVGhlcmUncyBubyBvYnZpb3VzIHJlYXNvbiB0byBzZXQgdGhpcywgYnV0IGFsbG93IGl0IGFueXdheSBzbworICAgICAgICAjIC5zdGRvdXQgaXMgYSB0cmFuc3BhcmVudCBhbGlhcyBmb3IgLm91dHB1dAorICAgICAgICBzZWxmLm91dHB1dCA9IHZhbHVlCisKIAogY2xhc3MgVGltZW91dEV4cGlyZWQoU3VicHJvY2Vzc0Vycm9yKToKICAgICAiIiJUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzIHdoaWxlIHdhaXRpbmcgZm9yIGEKICAgICBjaGlsZCBwcm9jZXNzLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsIHRpbWVvdXQsIG91dHB1dD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCB0aW1lb3V0LCBvdXRwdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgogICAgICAgICBzZWxmLmNtZCA9IGNtZAogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICgiQ29tbWFuZCAnJXMnIHRpbWVkIG91dCBhZnRlciAlcyBzZWNvbmRzIiAlCiAgICAgICAgICAgICAgICAgKHNlbGYuY21kLCBzZWxmLnRpbWVvdXQpKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0ZG91dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub3V0cHV0CiAKLWlmIG1zd2luZG93czoKKyAgICBAc3Rkb3V0LnNldHRlcgorICAgIGRlZiBzdGRvdXQoc2VsZiwgdmFsdWUpOgorICAgICAgICAjIFRoZXJlJ3Mgbm8gb2J2aW91cyByZWFzb24gdG8gc2V0IHRoaXMsIGJ1dCBhbGxvdyBpdCBhbnl3YXkgc28KKyAgICAgICAgIyAuc3Rkb3V0IGlzIGEgdHJhbnNwYXJlbnQgYWxpYXMgZm9yIC5vdXRwdXQKKyAgICAgICAgc2VsZi5vdXRwdXQgPSB2YWx1ZQorCisKK2lmIF9tc3dpbmRvd3M6CiAgICAgaW1wb3J0IHRocmVhZGluZwogICAgIGltcG9ydCBtc3ZjcnQKICAgICBpbXBvcnQgX3dpbmFwaQpAQCAtNDI1LDkgKzQ1NywxMiBAQAogCiAKIF9fYWxsX18gPSBbIlBvcGVuIiwgIlBJUEUiLCAiU1RET1VUIiwgImNhbGwiLCAiY2hlY2tfY2FsbCIsICJnZXRzdGF0dXNvdXRwdXQiLAotICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiLCAiREVWTlVMTCJdCisgICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgInJ1biIsICJDYWxsZWRQcm9jZXNzRXJyb3IiLCAiREVWTlVMTCIsCisgICAgICAgICAgICJTdWJwcm9jZXNzRXJyb3IiLCAiVGltZW91dEV4cGlyZWQiLCAiQ29tcGxldGVkUHJvY2VzcyJdCisgICAgICAgICAgICMgTk9URTogV2UgaW50ZW50aW9uYWxseSBleGNsdWRlIGxpc3QyY21kbGluZSBhcyBpdCBpcworICAgICAgICAgICAjIGNvbnNpZGVyZWQgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgaXNzdWUxMDgzOC4KIAotaWYgbXN3aW5kb3dzOgoraWYgX21zd2luZG93czoKICAgICBmcm9tIF93aW5hcGkgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKICAgICAgICAgICAgICAgICAgICAgICAgICBTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLApAQCAtNDUzLDE1ICs0ODgsMTEgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFscmVhZHkgY2xvc2VkIikKIAogICAgICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gIkhhbmRsZSglZCkiICUgaW50KHNlbGYpCisgICAgICAgICAgICByZXR1cm4gIiVzKCVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGludChzZWxmKSkKIAogICAgICAgICBfX2RlbF9fID0gQ2xvc2UKICAgICAgICAgX19zdHJfXyA9IF9fcmVwcl9fCiAKLXRyeToKLSAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKLWV4Y2VwdDoKLSAgICBNQVhGRCA9IDI1NgogCiAjIFRoaXMgbGlzdHMgaG9sZHMgUG9wZW4gaW5zdGFuY2VzIGZvciB3aGljaCB0aGUgdW5kZXJseWluZyBwcm9jZXNzIGhhZCBub3QKICMgZXhpdGVkIGF0IHRoZSB0aW1lIGl0cyBfX2RlbF9fIG1ldGhvZCBnb3QgY2FsbGVkOiB0aG9zZSBwcm9jZXNzZXMgYXJlIHdhaXQoKWVkCkBAIC00ODUsMTQgKzUxNiw2IEBACiBERVZOVUxMID0gLTMKIAogCi1kZWYgX2VpbnRyX3JldHJ5X2NhbGwoZnVuYywgKmFyZ3MpOgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLQogIyBYWFggVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIGFuZCB0aGUgdGVzdCBzdWl0ZSwKICMgYnV0IGl0J3MgaGVyZSBzbyB0aGF0IGl0IGNhbiBiZSBpbXBvcnRlZCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0CiAjIHRocmVhZHMuCkBAIC01OTEsMzQgKzYxNCwxMDIgQEAKICAgICAuLi4gICAgICAgICAgICAgIGlucHV0PWIid2hlbiBpbiB0aGUgY291cnNlIG9mIGZvb21hbiBldmVudHNcbiIpCiAgICAgYid3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgYmFybWFuIGV2ZW50c1xuJwogCi0gICAgSWYgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUgaXMgcGFzc2VkLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYQotICAgIHN0cmluZyByYXRoZXIgdGhhbiBieXRlcy4KKyAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSBpcyBwYXNzZWQsIHRoZSAiaW5wdXQiIGFyZ3VtZW50IG11c3QgYmUgYQorICAgIHN0cmluZyBhbmQgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIGEgc3RyaW5nIHJhdGhlciB0aGFuIGJ5dGVzLgogICAgICIiIgogICAgIGlmICdzdGRvdXQnIGluIGt3YXJnczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3Rkb3V0IGFyZ3VtZW50IG5vdCBhbGxvd2VkLCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uJykKLSAgICBpZiAnaW5wdXQnIGluIGt3YXJnczoKKworICAgIGlmICdpbnB1dCcgaW4ga3dhcmdzIGFuZCBrd2FyZ3NbJ2lucHV0J10gaXMgTm9uZToKKyAgICAgICAgIyBFeHBsaWNpdGx5IHBhc3NpbmcgaW5wdXQ9Tm9uZSB3YXMgcHJldmlvdXNseSBlcXVpdmFsZW50IHRvIHBhc3NpbmcgYW4KKyAgICAgICAgIyBlbXB0eSBzdHJpbmcuIFRoYXQgaXMgbWFpbnRhaW5lZCBoZXJlIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAga3dhcmdzWydpbnB1dCddID0gJycgaWYga3dhcmdzLmdldCgndW5pdmVyc2FsX25ld2xpbmVzJywgRmFsc2UpIGVsc2UgYicnCisKKyAgICByZXR1cm4gcnVuKCpwb3BlbmFyZ3MsIHN0ZG91dD1QSVBFLCB0aW1lb3V0PXRpbWVvdXQsIGNoZWNrPVRydWUsCisgICAgICAgICAgICAgICAqKmt3YXJncykuc3Rkb3V0CisKKworY2xhc3MgQ29tcGxldGVkUHJvY2VzcyhvYmplY3QpOgorICAgICIiIkEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZCBydW5uaW5nLgorCisgICAgVGhpcyBpcyByZXR1cm5lZCBieSBydW4oKS4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICBhcmdzOiBUaGUgbGlzdCBvciBzdHIgYXJncyBwYXNzZWQgdG8gcnVuKCkuCisgICAgICByZXR1cm5jb2RlOiBUaGUgZXhpdCBjb2RlIG9mIHRoZSBwcm9jZXNzLCBuZWdhdGl2ZSBmb3Igc2lnbmFscy4KKyAgICAgIHN0ZG91dDogVGhlIHN0YW5kYXJkIG91dHB1dCAoTm9uZSBpZiBub3QgY2FwdHVyZWQpLgorICAgICAgc3RkZXJyOiBUaGUgc3RhbmRhcmQgZXJyb3IgKE5vbmUgaWYgbm90IGNhcHR1cmVkKS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYXJncywgcmV0dXJuY29kZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLnJldHVybmNvZGUgPSByZXR1cm5jb2RlCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gc3Rkb3V0CisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbJ2FyZ3M9eyFyfScuZm9ybWF0KHNlbGYuYXJncyksCisgICAgICAgICAgICAgICAgJ3JldHVybmNvZGU9eyFyfScuZm9ybWF0KHNlbGYucmV0dXJuY29kZSldCisgICAgICAgIGlmIHNlbGYuc3Rkb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3N0ZG91dD17IXJ9Jy5mb3JtYXQoc2VsZi5zdGRvdXQpKQorICAgICAgICBpZiBzZWxmLnN0ZGVyciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCdzdGRlcnI9eyFyfScuZm9ybWF0KHNlbGYuc3RkZXJyKSkKKyAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLCAnLCAnLmpvaW4oYXJncykpCisKKyAgICBkZWYgY2hlY2tfcmV0dXJuY29kZShzZWxmKToKKyAgICAgICAgIiIiUmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yIGlmIHRoZSBleGl0IGNvZGUgaXMgbm9uLXplcm8uIiIiCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZToKKyAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihzZWxmLnJldHVybmNvZGUsIHNlbGYuYXJncywgc2VsZi5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIpCisKKworZGVmIHJ1bigqcG9wZW5hcmdzLCBpbnB1dD1Ob25lLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBhIENvbXBsZXRlZFByb2Nlc3MgaW5zdGFuY2UuCisKKyAgICBUaGUgcmV0dXJuZWQgaW5zdGFuY2Ugd2lsbCBoYXZlIGF0dHJpYnV0ZXMgYXJncywgcmV0dXJuY29kZSwgc3Rkb3V0IGFuZAorICAgIHN0ZGVyci4gQnkgZGVmYXVsdCwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG5vdCBjYXB0dXJlZCwgYW5kIHRob3NlIGF0dHJpYnV0ZXMKKyAgICB3aWxsIGJlIE5vbmUuIFBhc3Mgc3Rkb3V0PVBJUEUgYW5kL29yIHN0ZGVycj1QSVBFIGluIG9yZGVyIHRvIGNhcHR1cmUgdGhlbS4KKworICAgIElmIGNoZWNrIGlzIFRydWUgYW5kIHRoZSBleGl0IGNvZGUgd2FzIG5vbi16ZXJvLCBpdCByYWlzZXMgYQorICAgIENhbGxlZFByb2Nlc3NFcnJvci4gVGhlIENhbGxlZFByb2Nlc3NFcnJvciBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZQorICAgIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZSwgYW5kIG91dHB1dCAmIHN0ZGVyciBhdHRyaWJ1dGVzIGlmIHRob3NlIHN0cmVhbXMKKyAgICB3ZXJlIGNhcHR1cmVkLgorCisgICAgSWYgdGltZW91dCBpcyBnaXZlbiwgYW5kIHRoZSBwcm9jZXNzIHRha2VzIHRvbyBsb25nLCBhIFRpbWVvdXRFeHBpcmVkCisgICAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLgorCisgICAgVGhlcmUgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgImlucHV0IiwgYWxsb3dpbmcgeW91IHRvCisgICAgcGFzcyBhIHN0cmluZyB0byB0aGUgc3VicHJvY2VzcydzIHN0ZGluLiAgSWYgeW91IHVzZSB0aGlzIGFyZ3VtZW50CisgICAgeW91IG1heSBub3QgYWxzbyB1c2UgdGhlIFBvcGVuIGNvbnN0cnVjdG9yJ3MgInN0ZGluIiBhcmd1bWVudCwgYXMKKyAgICBpdCB3aWxsIGJlIHVzZWQgaW50ZXJuYWxseS4KKworICAgIFRoZSBvdGhlciBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuCisKKyAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSBpcyBwYXNzZWQsIHRoZSAiaW5wdXQiIGFyZ3VtZW50IG11c3QgYmUgYQorICAgIHN0cmluZyBhbmQgc3Rkb3V0L3N0ZGVyciBpbiB0aGUgcmV0dXJuZWQgb2JqZWN0IHdpbGwgYmUgc3RyaW5ncyByYXRoZXIgdGhhbgorICAgIGJ5dGVzLgorICAgICIiIgorICAgIGlmIGlucHV0IGlzIG5vdCBOb25lOgogICAgICAgICBpZiAnc3RkaW4nIGluIGt3YXJnczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3N0ZGluIGFuZCBpbnB1dCBhcmd1bWVudHMgbWF5IG5vdCBib3RoIGJlIHVzZWQuJykKLSAgICAgICAgaW5wdXRkYXRhID0ga3dhcmdzWydpbnB1dCddCi0gICAgICAgIGRlbCBrd2FyZ3NbJ2lucHV0J10KICAgICAgICAga3dhcmdzWydzdGRpbiddID0gUElQRQotICAgIGVsc2U6Ci0gICAgICAgIGlucHV0ZGF0YSA9IE5vbmUKLSAgICB3aXRoIFBvcGVuKCpwb3BlbmFyZ3MsIHN0ZG91dD1QSVBFLCAqKmt3YXJncykgYXMgcHJvY2VzczoKKworICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgKiprd2FyZ3MpIGFzIHByb2Nlc3M6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoaW5wdXRkYXRhLCB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoaW5wdXQsIHRpbWVvdXQ9dGltZW91dCkKICAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKLSAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9b3V0cHV0KQorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHByb2Nlc3MuYXJncywgdGltZW91dCwgb3V0cHV0PXN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdGRlcnIpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCiAgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCi0gICAgICAgIGlmIHJldGNvZGU6Ci0gICAgICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcHJvY2Vzcy5hcmdzLCBvdXRwdXQ9b3V0cHV0KQotICAgIHJldHVybiBvdXRwdXQKKyAgICAgICAgaWYgY2hlY2sgYW5kIHJldGNvZGU6CisgICAgICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcHJvY2Vzcy5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIpCisgICAgcmV0dXJuIENvbXBsZXRlZFByb2Nlc3MocHJvY2Vzcy5hcmdzLCByZXRjb2RlLCBzdGRvdXQsIHN0ZGVycikKIAogCiBkZWYgbGlzdDJjbWRsaW5lKHNlcSk6CkBAIC03NjYsNyArODU3LDcgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYnVmc2l6ZSwgaW50KToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYnVmc2l6ZSBtdXN0IGJlIGFuIGludGVnZXIiKQogCi0gICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgaWYgX21zd2luZG93czoKICAgICAgICAgICAgIGlmIHByZWV4ZWNfZm4gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJlZXhlY19mbiBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtcyIpCkBAIC04MjYsNyArOTE3LDcgQEAKICAgICAgICAgIyBxdWlja2x5IHRlcm1pbmF0aW5nIGNoaWxkIGNvdWxkIG1ha2Ugb3VyIGZkcyB1bndyYXBwYWJsZQogICAgICAgICAjIChzZWUgIzg0NTgpLgogCi0gICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgaWYgX21zd2luZG93czoKICAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgIHAyY3dyaXRlID0gbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlKHAyY3dyaXRlLkRldGFjaCgpLCAwKQogICAgICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKQEAgLTkxOCwxNCArMTAwOSwzNSBAQAogICAgICAgICAgICAgc2VsZi5fZGV2bnVsbCA9IG9zLm9wZW4ob3MuZGV2bnVsbCwgb3MuT19SRFdSKQogICAgICAgICByZXR1cm4gc2VsZi5fZGV2bnVsbAogCisgICAgZGVmIF9zdGRpbl93cml0ZShzZWxmLCBpbnB1dCk6CisgICAgICAgIGlmIGlucHV0OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4ud3JpdGUoaW5wdXQpCisgICAgICAgICAgICBleGNlcHQgQnJva2VuUGlwZUVycm9yOgorICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSBtdXN0IGlnbm9yZSBicm9rZW4gcGlwZSBlcnJvcgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5WQUwgYW5kIHNlbGYucG9sbCgpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIElzc3VlICMxOTYxMjogT24gV2luZG93cywgc3RkaW4ud3JpdGUoKSBmYWlscyB3aXRoIEVJTlZBTAorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBwcm9jZXNzIGFscmVhZHkgZXhpdGVkIGJlZm9yZSB0aGUgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQorCiAgICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICIiIkludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20KICAgICAgICAgc3Rkb3V0IGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvcgotICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUKLSAgICAgICAgYnl0ZXMgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQotICAgICAgICBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuCisgICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLgogCi0gICAgICAgIGNvbW11bmljYXRlKCkgcmV0dXJucyBhIHR1cGxlIChzdGRvdXQsIHN0ZGVycikuIiIiCisgICAgICAgIFRoZSBvcHRpb25hbCAiaW5wdXQiIGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlCisgICAgICAgIGNoaWxkIHByb2Nlc3MgKGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzIGlzIFRydWUsIHRoaXMgc2hvdWxkCisgICAgICAgIGJlIGEgc3RyaW5nOyBpZiBpdCBpcyBGYWxzZSwgImlucHV0IiBzaG91bGQgYmUgYnl0ZXMpLCBvcgorICAgICAgICBOb25lLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKworICAgICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLiAgVGhlc2Ugd2lsbCBiZQorICAgICAgICBieXRlcyBvciwgaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgd2FzIFRydWUsIGEgc3RyaW5nLgorICAgICAgICAiIiIKIAogICAgICAgICBpZiBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgYW5kIGlucHV0OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNlbmQgaW5wdXQgYWZ0ZXIgc3RhcnRpbmcgY29tbXVuaWNhdGlvbiIpCkBAIC05MzgsMTggKzEwNTAsMTIgQEAKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUKICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46Ci0gICAgICAgICAgICAgICAgaWYgaW5wdXQ6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4ud3JpdGUoaW5wdXQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVQSVBFIGFuZCBlLmVycm5vICE9IGVycm5vLkVJTlZBTDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZGluX3dyaXRlKGlucHV0KQogICAgICAgICAgICAgZWxpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXQgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZG91dC5yZWFkKQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuc3Rkb3V0LnJlYWQoKQogICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmNsb3NlKCkKICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgc3RkZXJyID0gX2VpbnRyX3JldHJ5X2NhbGwoc2VsZi5zdGRlcnIucmVhZCkKKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLnN0ZGVyci5yZWFkKCkKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCiAgICAgICAgICAgICBzZWxmLndhaXQoKQogICAgICAgICBlbHNlOgpAQCAtOTg4LDcgKzEwOTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCiAKIAotICAgIGlmIG1zd2luZG93czoKKyAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAjCiAgICAgICAgICMgV2luZG93cyBtZXRob2RzCiAgICAgICAgICMKQEAgLTExOTMsMjEgKzEyOTksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5zdGFydCgpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46Ci0gICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4ud3JpdGUoaW5wdXQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSBzaG91bGQgaWdub3JlIHBpcGUgZnVsbCBlcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgKGUuZXJybm8gPT0gZXJybm8uRUlOVkFMCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5wb2xsKCkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSXNzdWUgIzE5NjEyOiBzdGRpbi53cml0ZSgpIGZhaWxzIHdpdGggRUlOVkFMCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgcHJvY2VzcyBhbHJlYWR5IGV4aXRlZCBiZWZvcmUgdGhlIHdyaXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZGluX3dyaXRlKGlucHV0KQogCiAgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSByZWFkZXIgdGhyZWFkcywgb3IgdGltZSBvdXQuICBJZiB3ZSB0aW1lIG91dCwgdGhlCiAgICAgICAgICAgICAjIHRocmVhZHMgcmVtYWluIHJlYWRpbmcgYW5kIHRoZSBmZHMgbGVmdCBvcGVuIGluIGNhc2UgdGhlIHVzZXIKQEAgLTEzMjIsMTYgKzE0MTQsNiBAQAogICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSkKIAogCi0gICAgICAgIGRlZiBfY2xvc2VfZmRzKHNlbGYsIGZkc190b19rZWVwKToKLSAgICAgICAgICAgIHN0YXJ0X2ZkID0gMwotICAgICAgICAgICAgZm9yIGZkIGluIHNvcnRlZChmZHNfdG9fa2VlcCk6Ci0gICAgICAgICAgICAgICAgaWYgZmQgPj0gc3RhcnRfZmQ6Ci0gICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlcmFuZ2Uoc3RhcnRfZmQsIGZkKQotICAgICAgICAgICAgICAgICAgICBzdGFydF9mZCA9IGZkICsgMQotICAgICAgICAgICAgaWYgc3RhcnRfZmQgPD0gTUFYRkQ6Ci0gICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZShzdGFydF9mZCwgTUFYRkQpCi0KLQogICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8sIGNyZWF0aW9uZmxhZ3MsIHNoZWxsLApAQCAtMTQxNyw3ICsxNDk5LDcgQEAKICAgICAgICAgICAgICAgICAjIGV4Y2VwdGlvbiAobGltaXRlZCBpbiBzaXplKQogICAgICAgICAgICAgICAgIGVycnBpcGVfZGF0YSA9IGJ5dGVhcnJheSgpCiAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgcGFydCA9IF9laW50cl9yZXRyeV9jYWxsKG9zLnJlYWQsIGVycnBpcGVfcmVhZCwgNTAwMDApCisgICAgICAgICAgICAgICAgICAgIHBhcnQgPSBvcy5yZWFkKGVycnBpcGVfcmVhZCwgNTAwMDApCiAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfZGF0YSArPSBwYXJ0CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0IG9yIGxlbihlcnJwaXBlX2RhdGEpID4gNTAwMDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTQyNywxMCArMTUwOSw5IEBACiAKICAgICAgICAgICAgIGlmIGVycnBpcGVfZGF0YToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIF9laW50cl9yZXRyeV9jYWxsKG9zLndhaXRwaWQsIHNlbGYucGlkLCAwKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9uYW1lLCBoZXhfZXJybm8sIGVycl9tc2cgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhLnNwbGl0KGInOicsIDIpKQpAQCAtMTUxMywxMCArMTU5NCw4IEBACiAgICAgICAgIGRlZiBfdHJ5X3dhaXQoc2VsZiwgd2FpdF9mbGFncyk6CiAgICAgICAgICAgICAiIiJBbGwgY2FsbGVycyB0byB0aGlzIGZ1bmN0aW9uIE1VU1QgaG9sZCBzZWxmLl93YWl0cGlkX2xvY2suIiIiCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IF9laW50cl9yZXRyeV9jYWxsKG9zLndhaXRwaWQsIHNlbGYucGlkLCB3YWl0X2ZsYWdzKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVDSElMRDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgd2FpdF9mbGFncykKKyAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZwogICAgICAgICAgICAgICAgICMgZm9yIGNoaWxkIHByb2Nlc3NlcyBoYXMgb3RoZXJ3aXNlIGJlZW4gZGlzYWJsZWQgZm9yIG91cgogICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCkBAIC0xNjI4LDEyICsxNzA3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICs9IG9zLndyaXRlKGtleS5mZCwgY2h1bmspCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUElQRToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLnVucmVnaXN0ZXIoa2V5LmZpbGVvYmopCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkuZmlsZW9iai5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLnVucmVnaXN0ZXIoa2V5LmZpbGVvYmopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbnB1dF9vZmZzZXQgPj0gbGVuKHNlbGYuX2lucHV0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLnVucmVnaXN0ZXIoa2V5LmZpbGVvYmopCmRpZmYgLS1naXQgYS9MaWIvc3ltYm9sLnB5IGIvTGliL3N5bWJvbC5weQppbmRleCA1Y2Y0YTY1Li43NTQxNDk3IDEwMDc1NQotLS0gYS9MaWIvc3ltYm9sLnB5CisrKyBiL0xpYi9zeW1ib2wucHkKQEAgLTE2LDgyICsxNiw4NSBAQAogZGVjb3JhdG9yID0gMjU5CiBkZWNvcmF0b3JzID0gMjYwCiBkZWNvcmF0ZWQgPSAyNjEKLWZ1bmNkZWYgPSAyNjIKLXBhcmFtZXRlcnMgPSAyNjMKLXR5cGVkYXJnc2xpc3QgPSAyNjQKLXRmcGRlZiA9IDI2NQotdmFyYXJnc2xpc3QgPSAyNjYKLXZmcGRlZiA9IDI2Nwotc3RtdCA9IDI2OAotc2ltcGxlX3N0bXQgPSAyNjkKLXNtYWxsX3N0bXQgPSAyNzAKLWV4cHJfc3RtdCA9IDI3MQotdGVzdGxpc3Rfc3Rhcl9leHByID0gMjcyCi1hdWdhc3NpZ24gPSAyNzMKLWRlbF9zdG10ID0gMjc0Ci1wYXNzX3N0bXQgPSAyNzUKLWZsb3dfc3RtdCA9IDI3NgotYnJlYWtfc3RtdCA9IDI3NwotY29udGludWVfc3RtdCA9IDI3OAotcmV0dXJuX3N0bXQgPSAyNzkKLXlpZWxkX3N0bXQgPSAyODAKLXJhaXNlX3N0bXQgPSAyODEKLWltcG9ydF9zdG10ID0gMjgyCi1pbXBvcnRfbmFtZSA9IDI4MwotaW1wb3J0X2Zyb20gPSAyODQKLWltcG9ydF9hc19uYW1lID0gMjg1Ci1kb3R0ZWRfYXNfbmFtZSA9IDI4NgotaW1wb3J0X2FzX25hbWVzID0gMjg3Ci1kb3R0ZWRfYXNfbmFtZXMgPSAyODgKLWRvdHRlZF9uYW1lID0gMjg5Ci1nbG9iYWxfc3RtdCA9IDI5MAotbm9ubG9jYWxfc3RtdCA9IDI5MQotYXNzZXJ0X3N0bXQgPSAyOTIKLWNvbXBvdW5kX3N0bXQgPSAyOTMKLWlmX3N0bXQgPSAyOTQKLXdoaWxlX3N0bXQgPSAyOTUKLWZvcl9zdG10ID0gMjk2Ci10cnlfc3RtdCA9IDI5Nwotd2l0aF9zdG10ID0gMjk4Ci13aXRoX2l0ZW0gPSAyOTkKLWV4Y2VwdF9jbGF1c2UgPSAzMDAKLXN1aXRlID0gMzAxCi10ZXN0ID0gMzAyCi10ZXN0X25vY29uZCA9IDMwMwotbGFtYmRlZiA9IDMwNAotbGFtYmRlZl9ub2NvbmQgPSAzMDUKLW9yX3Rlc3QgPSAzMDYKLWFuZF90ZXN0ID0gMzA3Ci1ub3RfdGVzdCA9IDMwOAotY29tcGFyaXNvbiA9IDMwOQotY29tcF9vcCA9IDMxMAotc3Rhcl9leHByID0gMzExCi1leHByID0gMzEyCi14b3JfZXhwciA9IDMxMwotYW5kX2V4cHIgPSAzMTQKLXNoaWZ0X2V4cHIgPSAzMTUKLWFyaXRoX2V4cHIgPSAzMTYKLXRlcm0gPSAzMTcKLWZhY3RvciA9IDMxOAotcG93ZXIgPSAzMTkKLWF0b20gPSAzMjAKLXRlc3RsaXN0X2NvbXAgPSAzMjEKLXRyYWlsZXIgPSAzMjIKLXN1YnNjcmlwdGxpc3QgPSAzMjMKLXN1YnNjcmlwdCA9IDMyNAotc2xpY2VvcCA9IDMyNQotZXhwcmxpc3QgPSAzMjYKLXRlc3RsaXN0ID0gMzI3Ci1kaWN0b3JzZXRtYWtlciA9IDMyOAotY2xhc3NkZWYgPSAzMjkKLWFyZ2xpc3QgPSAzMzAKLWFyZ3VtZW50ID0gMzMxCi1jb21wX2l0ZXIgPSAzMzIKLWNvbXBfZm9yID0gMzMzCi1jb21wX2lmID0gMzM0Ci1lbmNvZGluZ19kZWNsID0gMzM1Ci15aWVsZF9leHByID0gMzM2Ci15aWVsZF9hcmcgPSAzMzcKK2FzeW5jX2Z1bmNkZWYgPSAyNjIKK2Z1bmNkZWYgPSAyNjMKK3BhcmFtZXRlcnMgPSAyNjQKK3R5cGVkYXJnc2xpc3QgPSAyNjUKK3RmcGRlZiA9IDI2NgordmFyYXJnc2xpc3QgPSAyNjcKK3ZmcGRlZiA9IDI2OAorc3RtdCA9IDI2OQorc2ltcGxlX3N0bXQgPSAyNzAKK3NtYWxsX3N0bXQgPSAyNzEKK2V4cHJfc3RtdCA9IDI3MgordGVzdGxpc3Rfc3Rhcl9leHByID0gMjczCithdWdhc3NpZ24gPSAyNzQKK2RlbF9zdG10ID0gMjc1CitwYXNzX3N0bXQgPSAyNzYKK2Zsb3dfc3RtdCA9IDI3NworYnJlYWtfc3RtdCA9IDI3OAorY29udGludWVfc3RtdCA9IDI3OQorcmV0dXJuX3N0bXQgPSAyODAKK3lpZWxkX3N0bXQgPSAyODEKK3JhaXNlX3N0bXQgPSAyODIKK2ltcG9ydF9zdG10ID0gMjgzCitpbXBvcnRfbmFtZSA9IDI4NAoraW1wb3J0X2Zyb20gPSAyODUKK2ltcG9ydF9hc19uYW1lID0gMjg2Citkb3R0ZWRfYXNfbmFtZSA9IDI4NworaW1wb3J0X2FzX25hbWVzID0gMjg4Citkb3R0ZWRfYXNfbmFtZXMgPSAyODkKK2RvdHRlZF9uYW1lID0gMjkwCitnbG9iYWxfc3RtdCA9IDI5MQorbm9ubG9jYWxfc3RtdCA9IDI5MgorYXNzZXJ0X3N0bXQgPSAyOTMKK2NvbXBvdW5kX3N0bXQgPSAyOTQKK2FzeW5jX3N0bXQgPSAyOTUKK2lmX3N0bXQgPSAyOTYKK3doaWxlX3N0bXQgPSAyOTcKK2Zvcl9zdG10ID0gMjk4Cit0cnlfc3RtdCA9IDI5OQord2l0aF9zdG10ID0gMzAwCit3aXRoX2l0ZW0gPSAzMDEKK2V4Y2VwdF9jbGF1c2UgPSAzMDIKK3N1aXRlID0gMzAzCit0ZXN0ID0gMzA0Cit0ZXN0X25vY29uZCA9IDMwNQorbGFtYmRlZiA9IDMwNgorbGFtYmRlZl9ub2NvbmQgPSAzMDcKK29yX3Rlc3QgPSAzMDgKK2FuZF90ZXN0ID0gMzA5Citub3RfdGVzdCA9IDMxMAorY29tcGFyaXNvbiA9IDMxMQorY29tcF9vcCA9IDMxMgorc3Rhcl9leHByID0gMzEzCitleHByID0gMzE0Cit4b3JfZXhwciA9IDMxNQorYW5kX2V4cHIgPSAzMTYKK3NoaWZ0X2V4cHIgPSAzMTcKK2FyaXRoX2V4cHIgPSAzMTgKK3Rlcm0gPSAzMTkKK2ZhY3RvciA9IDMyMAorcG93ZXIgPSAzMjEKK2F0b21fZXhwciA9IDMyMgorYXRvbSA9IDMyMwordGVzdGxpc3RfY29tcCA9IDMyNAordHJhaWxlciA9IDMyNQorc3Vic2NyaXB0bGlzdCA9IDMyNgorc3Vic2NyaXB0ID0gMzI3CitzbGljZW9wID0gMzI4CitleHBybGlzdCA9IDMyOQordGVzdGxpc3QgPSAzMzAKK2RpY3RvcnNldG1ha2VyID0gMzMxCitjbGFzc2RlZiA9IDMzMgorYXJnbGlzdCA9IDMzMworYXJndW1lbnQgPSAzMzQKK2NvbXBfaXRlciA9IDMzNQorY29tcF9mb3IgPSAzMzYKK2NvbXBfaWYgPSAzMzcKK2VuY29kaW5nX2RlY2wgPSAzMzgKK3lpZWxkX2V4cHIgPSAzMzkKK3lpZWxkX2FyZyA9IDM0MAogIy0tZW5kIGNvbnN0YW50cy0tCiAKIHN5bV9uYW1lID0ge30KZGlmZiAtLWdpdCBhL0xpYi9zeW10YWJsZS5weSBiL0xpYi9zeW10YWJsZS5weQppbmRleCBlMjMzMTNiLi44NGZlYzRhIDEwMDY0NAotLS0gYS9MaWIvc3ltdGFibGUucHkKKysrIGIvTGliL3N5bXRhYmxlLnB5CkBAIC0yLDcgKzIsNyBAQAogCiBpbXBvcnQgX3N5bXRhYmxlCiBmcm9tIF9zeW10YWJsZSBpbXBvcnQgKFVTRSwgREVGX0dMT0JBTCwgREVGX0xPQ0FMLCBERUZfUEFSQU0sCi0gICAgIERFRl9JTVBPUlQsIERFRl9CT1VORCwgT1BUX0lNUE9SVF9TVEFSLCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCisgICAgIERFRl9JTVBPUlQsIERFRl9CT1VORCwgU0NPUEVfT0ZGLCBTQ09QRV9NQVNLLCBGUkVFLAogICAgICBMT0NBTCwgR0xPQkFMX0lNUExJQ0lULCBHTE9CQUxfRVhQTElDSVQsIENFTEwpCiAKIGltcG9ydCB3ZWFrcmVmCkBAIC03NCw4ICs3NCw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLl90YWJsZS5saW5lbm8KIAogICAgIGRlZiBpc19vcHRpbWl6ZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBib29sKHNlbGYuX3RhYmxlLnR5cGUgPT0gX3N5bXRhYmxlLlRZUEVfRlVOQ1RJT04KLSAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl90YWJsZS5vcHRpbWl6ZWQpCisgICAgICAgIHJldHVybiBib29sKHNlbGYuX3RhYmxlLnR5cGUgPT0gX3N5bXRhYmxlLlRZUEVfRlVOQ1RJT04pCiAKICAgICBkZWYgaXNfbmVzdGVkKHNlbGYpOgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLl90YWJsZS5uZXN0ZWQpCkBAIC04NywxMCArODYsNiBAQAogICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgc2NvcGUgdXNlcyBleGVjLiAgRGVwcmVjYXRlZCBtZXRob2QuIiIiCiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIGhhc19pbXBvcnRfc3RhcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIHNjb3BlIHVzZXMgaW1wb3J0ICoiIiIKLSAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUub3B0aW1pemVkICYgT1BUX0lNUE9SVF9TVEFSKQotCiAgICAgZGVmIGdldF9pZGVudGlmaWVycyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3RhYmxlLnN5bWJvbHMua2V5cygpCiAKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IGRiZjc3NjcuLjEzNzkzMmUgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L0luY2x1ZGUnLAotICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L1NjcmlwdHMnLAorICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9TY3JpcHRzJywKICAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ3Bvc2l4X3VzZXInOiB7CkBAIC0xMDksMTMgKzEwOSw4IEBACiAgICAgIyB1bmFibGUgdG8gcmV0cmlldmUgdGhlIHJlYWwgcHJvZ3JhbSBuYW1lCiAgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLmdldGN3ZCgpKQogCi1pZiBvcy5uYW1lID09ICJudCIgYW5kICJwY2J1aWxkIiBpbiBfUFJPSkVDVF9CQVNFWy04Ol0ubG93ZXIoKToKLSAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpcikpCi0jIFBDL1ZTNy4xCi1pZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjXFx2IiBpbiBfUFJPSkVDVF9CQVNFWy0xMDpdLmxvd2VyKCk6Ci0gICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCBwYXJkaXIsIHBhcmRpcikpCi0jIFBDL0FNRDY0Ci1pZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjYnVpbGRcXGFtZDY0IiBpbiBfUFJPSkVDVF9CQVNFWy0xNDpdLmxvd2VyKCk6CitpZiAob3MubmFtZSA9PSAnbnQnIGFuZAorICAgIF9QUk9KRUNUX0JBU0UubG93ZXIoKS5lbmRzd2l0aCgoJ1xccGNidWlsZFxcd2luMzInLCAnXFxwY2J1aWxkXFxhbWQ2NCcpKSk6CiAgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCBwYXJkaXIsIHBhcmRpcikpCiAKICMgc2V0IGZvciBjcm9zcyBidWlsZHMKQEAgLTEyOSwxMSArMTI0LDkgQEAKICAgICByZXR1cm4gRmFsc2UKIAogX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCi1pZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAotICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKLSAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQotICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAotICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQoraWYgKF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkpCiBkZWYgaXNfcHl0aG9uX2J1aWxkKGNoZWNrX2hvbWU9RmFsc2UpOgogICAgIGlmIGNoZWNrX2hvbWUgYW5kIF9zeXNfaG9tZToKICAgICAgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihfc3lzX2hvbWUpCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDVmMWE5NzkuLmNhNDUxMjYgMTAwNzU1Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC0xNDE0LDkgKzE0MTQsOSBAQAogICAgICAgICAgICBjYW4gYmUgZGV0ZXJtaW5lZCwgYG1vZGUnIGlzIG92ZXJyaWRkZW4gYnkgYGZpbGVvYmoncyBtb2RlLgogICAgICAgICAgICBgZmlsZW9iaicgaXMgbm90IGNsb3NlZCwgd2hlbiBUYXJGaWxlIGlzIGNsb3NlZC4KICAgICAgICAgIiIiCi0gICAgICAgIG1vZGVzID0geyJyIjogInJiIiwgImEiOiAicitiIiwgInciOiAid2IifQorICAgICAgICBtb2RlcyA9IHsiciI6ICJyYiIsICJhIjogInIrYiIsICJ3IjogIndiIiwgIngiOiAieGIifQogICAgICAgICBpZiBtb2RlIG5vdCBpbiBtb2RlczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICdhJyBvciAndyciKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnLCAndycgb3IgJ3gnIikKICAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgICBzZWxmLl9tb2RlID0gbW9kZXNbbW9kZV0KIApAQCAtMTQ4OCw3ICsxNDg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEhlYWRlckVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3Ioc3RyKGUpKQogCi0gICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gImF3IjoKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoImEiLCAidyIsICJ4Iik6CiAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGVkID0gVHJ1ZQogCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5wYXhfaGVhZGVyczoKQEAgLTE1MjksNiArMTUyOSwxNSBAQAogICAgICAgICAgICAndzpiejInICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCiAgICAgICAgICAgICd3Onh6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggbHptYSBjb21wcmVzc2lvbgogCisgICAgICAgICAgICd4JyBvciAneDonICBjcmVhdGUgYSB0YXJmaWxlIGV4Y2x1c2l2ZWx5IHdpdGhvdXQgY29tcHJlc3Npb24sIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICBhbiBleGNlcHRpb24gaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICd4Omd6JyAgICAgICBjcmVhdGUgYW4gZ3ppcCBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICd4OmJ6MicgICAgICBjcmVhdGUgYW4gYnppcDIgY29tcHJlc3NlZCB0YXJmaWxlLCByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY3JlYXRlZAorICAgICAgICAgICAneDp4eicgICAgICAgY3JlYXRlIGFuIGx6bWEgY29tcHJlc3NlZCB0YXJmaWxlLCByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY3JlYXRlZAorCiAgICAgICAgICAgICdyfConICAgICAgICBvcGVuIGEgc3RyZWFtIG9mIHRhciBibG9ja3Mgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbgogICAgICAgICAgICAncnwnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MgZm9yIHJlYWRpbmcKICAgICAgICAgICAgJ3J8Z3onICAgICAgIG9wZW4gYSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKQEAgLTE1ODcsNyArMTU5Niw3IEBACiAgICAgICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiB0CiAKLSAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJ3Iik6CisgICAgICAgIGVsaWYgbW9kZSBpbiAoImEiLCAidyIsICJ4Iik6CiAgICAgICAgICAgICByZXR1cm4gY2xzLnRhcm9wZW4obmFtZSwgbW9kZSwgZmlsZW9iaiwgKiprd2FyZ3MpCiAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5kaXNjZXJuaWJsZSBtb2RlIikKQEAgLTE1OTYsOCArMTYwNSw4IEBACiAgICAgZGVmIHRhcm9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgICIiIk9wZW4gdW5jb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJhIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICdhJyBvciAndyciKQorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAiYSIsICJ3IiwgIngiKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICdhJywgJ3cnIG9yICd4JyIpCiAgICAgICAgIHJldHVybiBjbHMobmFtZSwgbW9kZSwgZmlsZW9iaiwgKiprd2FyZ3MpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTE2MDUsOCArMTYxNCw4IEBACiAgICAgICAgICIiIk9wZW4gZ3ppcCBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnIikKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3cnIG9yICd4JyIpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGd6aXAKQEAgLTE2MzksOCArMTY0OCw4IEBACiAgICAgICAgICIiIk9wZW4gYnppcDIgY29tcHJlc3NlZCB0YXIgYXJjaGl2ZSBuYW1lIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuCiAgICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InIG9yICd3Jy4iKQorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJ4Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAndycgb3IgJ3gnIikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgYnoyCkBAIC0xNjY4LDggKzE2NzcsOCBAQAogICAgICAgICAiIiJPcGVuIGx6bWEgY29tcHJlc3NlZCB0YXIgYXJjaGl2ZSBuYW1lIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuCiAgICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InIG9yICd3JyIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgIngiKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICd3JyBvciAneCciKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBsem1hCkBAIC0xNzExLDcgKzE3MjAsNyBAQAogCiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gImF3IjoKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoImEiLCAidyIsICJ4Iik6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKE5VTCAqIChCTE9DS1NJWkUgKiAyKSkKICAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSAoQkxPQ0tTSVpFICogMikKICAgICAgICAgICAgICAgICAjIGZpbGwgdXAgdGhlIGVuZCB3aXRoIHplcm8tYmxvY2tzCkBAIC0xNzU3LDcgKzE3NjYsNyBAQAogICAgICAgICAgICBhZGRmaWxlKCkuIElmIGdpdmVuLCBgYXJjbmFtZScgc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIG5hbWUgZm9yIHRoZQogICAgICAgICAgICBmaWxlIGluIHRoZSBhcmNoaXZlLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fY2hlY2soImF3IikKKyAgICAgICAgc2VsZi5fY2hlY2soImF3eCIpCiAKICAgICAgICAgIyBXaGVuIGZpbGVvYmogaXMgZ2l2ZW4sIHJlcGxhY2UgbmFtZSBieQogICAgICAgICAjIGZpbGVvYmoncyByZWFsIG5hbWUuCkBAIC0xODQ4LDE0ICsxODU3LDE3IEBACiAgICAgICAgICAgICAgICAgdGFyaW5mby5kZXZtaW5vciA9IG9zLm1pbm9yKHN0YXRyZXMuc3RfcmRldikKICAgICAgICAgcmV0dXJuIHRhcmluZm8KIAotICAgIGRlZiBsaXN0KHNlbGYsIHZlcmJvc2U9VHJ1ZSk6CisgICAgZGVmIGxpc3Qoc2VsZiwgdmVyYm9zZT1UcnVlLCAqLCBtZW1iZXJzPU5vbmUpOgogICAgICAgICAiIiJQcmludCBhIHRhYmxlIG9mIGNvbnRlbnRzIHRvIHN5cy5zdGRvdXQuIElmIGB2ZXJib3NlJyBpcyBGYWxzZSwgb25seQogICAgICAgICAgICB0aGUgbmFtZXMgb2YgdGhlIG1lbWJlcnMgYXJlIHByaW50ZWQuIElmIGl0IGlzIFRydWUsIGFuIGBscyAtbCctbGlrZQotICAgICAgICAgICBvdXRwdXQgaXMgcHJvZHVjZWQuCisgICAgICAgICAgIG91dHB1dCBpcyBwcm9kdWNlZC4gYG1lbWJlcnMnIGlzIG9wdGlvbmFsIGFuZCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZQorICAgICAgICAgICBsaXN0IHJldHVybmVkIGJ5IGdldG1lbWJlcnMoKS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrKCkKIAotICAgICAgICBmb3IgdGFyaW5mbyBpbiBzZWxmOgorICAgICAgICBpZiBtZW1iZXJzIGlzIE5vbmU6CisgICAgICAgICAgICBtZW1iZXJzID0gc2VsZgorICAgICAgICBmb3IgdGFyaW5mbyBpbiBtZW1iZXJzOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBfc2FmZV9wcmludChzdGF0LmZpbGVtb2RlKHRhcmluZm8ubW9kZSkpCiAgICAgICAgICAgICAgICAgX3NhZmVfcHJpbnQoIiVzLyVzIiAlICh0YXJpbmZvLnVuYW1lIG9yIHRhcmluZm8udWlkLApAQCAtMTg4OCw3ICsxOTAwLDcgQEAKICAgICAgICAgICAgVGFySW5mbyBvYmplY3QsIGlmIGl0IHJldHVybnMgTm9uZSB0aGUgVGFySW5mbyBvYmplY3Qgd2lsbCBiZQogICAgICAgICAgICBleGNsdWRlZCBmcm9tIHRoZSBhcmNoaXZlLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fY2hlY2soImF3IikKKyAgICAgICAgc2VsZi5fY2hlY2soImF3eCIpCiAKICAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgogICAgICAgICAgICAgYXJjbmFtZSA9IG5hbWUKQEAgLTE5NDUsNyArMTk1Nyw3IEBACiAgICAgICAgICAgIE9uIFdpbmRvd3MgcGxhdGZvcm1zLCBgZmlsZW9iaicgc2hvdWxkIGFsd2F5cyBiZSBvcGVuZWQgd2l0aCBtb2RlCiAgICAgICAgICAgICdyYicgdG8gYXZvaWQgaXJyaXRhdGlvbiBhYm91dCB0aGUgZmlsZSBzaXplLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fY2hlY2soImF3IikKKyAgICAgICAgc2VsZi5fY2hlY2soImF3eCIpCiAKICAgICAgICAgdGFyaW5mbyA9IGNvcHkuY29weSh0YXJpbmZvKQogCkBAIC0xOTY0LDEyICsxOTc2LDEzIEBACiAKICAgICAgICAgc2VsZi5tZW1iZXJzLmFwcGVuZCh0YXJpbmZvKQogCi0gICAgZGVmIGV4dHJhY3RhbGwoc2VsZiwgcGF0aD0iLiIsIG1lbWJlcnM9Tm9uZSk6CisgICAgZGVmIGV4dHJhY3RhbGwoc2VsZiwgcGF0aD0iLiIsIG1lbWJlcnM9Tm9uZSwgKiwgbnVtZXJpY19vd25lcj1GYWxzZSk6CiAgICAgICAgICIiIkV4dHJhY3QgYWxsIG1lbWJlcnMgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nCiAgICAgICAgICAgIGRpcmVjdG9yeSBhbmQgc2V0IG93bmVyLCBtb2RpZmljYXRpb24gdGltZSBhbmQgcGVybWlzc2lvbnMgb24KICAgICAgICAgICAgZGlyZWN0b3JpZXMgYWZ0ZXJ3YXJkcy4gYHBhdGgnIHNwZWNpZmllcyBhIGRpZmZlcmVudCBkaXJlY3RvcnkKICAgICAgICAgICAgdG8gZXh0cmFjdCB0by4gYG1lbWJlcnMnIGlzIG9wdGlvbmFsIGFuZCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZQotICAgICAgICAgICBsaXN0IHJldHVybmVkIGJ5IGdldG1lbWJlcnMoKS4KKyAgICAgICAgICAgbGlzdCByZXR1cm5lZCBieSBnZXRtZW1iZXJzKCkuIElmIGBudW1lcmljX293bmVyYCBpcyBUcnVlLCBvbmx5CisgICAgICAgICAgIHRoZSBudW1iZXJzIGZvciB1c2VyL2dyb3VwIG5hbWVzIGFyZSB1c2VkIGFuZCBub3QgdGhlIG5hbWVzLgogICAgICAgICAiIiIKICAgICAgICAgZGlyZWN0b3JpZXMgPSBbXQogCkBAIC0xOTgzLDcgKzE5OTYsOCBAQAogICAgICAgICAgICAgICAgIHRhcmluZm8gPSBjb3B5LmNvcHkodGFyaW5mbykKICAgICAgICAgICAgICAgICB0YXJpbmZvLm1vZGUgPSAwbzcwMAogICAgICAgICAgICAgIyBEbyBub3Qgc2V0X2F0dHJzIGRpcmVjdG9yaWVzLCBhcyB3ZSB3aWxsIGRvIHRoYXQgZnVydGhlciBkb3duCi0gICAgICAgICAgICBzZWxmLmV4dHJhY3QodGFyaW5mbywgcGF0aCwgc2V0X2F0dHJzPW5vdCB0YXJpbmZvLmlzZGlyKCkpCisgICAgICAgICAgICBzZWxmLmV4dHJhY3QodGFyaW5mbywgcGF0aCwgc2V0X2F0dHJzPW5vdCB0YXJpbmZvLmlzZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19vd25lcj1udW1lcmljX293bmVyKQogCiAgICAgICAgICMgUmV2ZXJzZSBzb3J0IGRpcmVjdG9yaWVzLgogICAgICAgICBkaXJlY3Rvcmllcy5zb3J0KGtleT1sYW1iZGEgYTogYS5uYW1lKQpAQCAtMTk5Myw3ICsyMDA3LDcgQEAKICAgICAgICAgZm9yIHRhcmluZm8gaW4gZGlyZWN0b3JpZXM6CiAgICAgICAgICAgICBkaXJwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsIHRhcmluZm8ubmFtZSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIGRpcnBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5jaG93bih0YXJpbmZvLCBkaXJwYXRoLCBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAgICAgICAgICAgICAgICAgc2VsZi51dGltZSh0YXJpbmZvLCBkaXJwYXRoKQogICAgICAgICAgICAgICAgIHNlbGYuY2htb2QodGFyaW5mbywgZGlycGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBFeHRyYWN0RXJyb3IgYXMgZToKQEAgLTIwMDIsMTIgKzIwMTYsMTQgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYmcoMSwgInRhcmZpbGU6ICVzIiAlIGUpCiAKLSAgICBkZWYgZXh0cmFjdChzZWxmLCBtZW1iZXIsIHBhdGg9IiIsIHNldF9hdHRycz1UcnVlKToKKyAgICBkZWYgZXh0cmFjdChzZWxmLCBtZW1iZXIsIHBhdGg9IiIsIHNldF9hdHRycz1UcnVlLCAqLCBudW1lcmljX293bmVyPUZhbHNlKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAogICAgICAgICAgICB1c2luZyBpdHMgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseQogICAgICAgICAgICBhcyBwb3NzaWJsZS4gYG1lbWJlcicgbWF5IGJlIGEgZmlsZW5hbWUgb3IgYSBUYXJJbmZvIG9iamVjdC4gWW91IGNhbgogICAgICAgICAgICBzcGVjaWZ5IGEgZGlmZmVyZW50IGRpcmVjdG9yeSB1c2luZyBgcGF0aCcuIEZpbGUgYXR0cmlidXRlcyAob3duZXIsCi0gICAgICAgICAgIG10aW1lLCBtb2RlKSBhcmUgc2V0IHVubGVzcyBgc2V0X2F0dHJzJyBpcyBGYWxzZS4KKyAgICAgICAgICAgbXRpbWUsIG1vZGUpIGFyZSBzZXQgdW5sZXNzIGBzZXRfYXR0cnMnIGlzIEZhbHNlLiBJZiBgbnVtZXJpY19vd25lcmAKKyAgICAgICAgICAgaXMgVHJ1ZSwgb25seSB0aGUgbnVtYmVycyBmb3IgdXNlci9ncm91cCBuYW1lcyBhcmUgdXNlZCBhbmQgbm90CisgICAgICAgICAgIHRoZSBuYW1lcy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrKCJyIikKIApAQCAtMjAyMiw3ICsyMDM4LDggQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9leHRyYWN0X21lbWJlcih0YXJpbmZvLCBvcy5wYXRoLmpvaW4ocGF0aCwgdGFyaW5mby5uYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9hdHRycz1zZXRfYXR0cnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYXR0cnM9c2V0X2F0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19vd25lcj1udW1lcmljX293bmVyKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgaWYgc2VsZi5lcnJvcmxldmVsID4gMDoKICAgICAgICAgICAgICAgICByYWlzZQpAQCAtMjA2OCw3ICsyMDg1LDggQEAKICAgICAgICAgICAgICMgYmxrZGV2LCBldGMuKSwgcmV0dXJuIE5vbmUgaW5zdGVhZCBvZiBhIGZpbGUgb2JqZWN0LgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBfZXh0cmFjdF9tZW1iZXIoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCwgc2V0X2F0dHJzPVRydWUpOgorICAgIGRlZiBfZXh0cmFjdF9tZW1iZXIoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCwgc2V0X2F0dHJzPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPUZhbHNlKToKICAgICAgICAgIiIiRXh0cmFjdCB0aGUgVGFySW5mbyBvYmplY3QgdGFyaW5mbyB0byBhIHBoeXNpY2FsCiAgICAgICAgICAgIGZpbGUgY2FsbGVkIHRhcmdldHBhdGguCiAgICAgICAgICIiIgpAQCAtMjEwNiw3ICsyMTI0LDcgQEAKICAgICAgICAgICAgIHNlbGYubWFrZWZpbGUodGFyaW5mbywgdGFyZ2V0cGF0aCkKIAogICAgICAgICBpZiBzZXRfYXR0cnM6Ci0gICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIHRhcmdldHBhdGgpCisgICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIHRhcmdldHBhdGgsIG51bWVyaWNfb3duZXIpCiAgICAgICAgICAgICBpZiBub3QgdGFyaW5mby5pc3N5bSgpOgogICAgICAgICAgICAgICAgIHNlbGYuY2htb2QodGFyaW5mbywgdGFyZ2V0cGF0aCkKICAgICAgICAgICAgICAgICBzZWxmLnV0aW1lKHRhcmluZm8sIHRhcmdldHBhdGgpCkBAIC0yMTk1LDE5ICsyMjEzLDI0IEBACiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJ1bmFibGUgdG8gcmVzb2x2ZSBsaW5rIGluc2lkZSBhcmNoaXZlIikKIAotICAgIGRlZiBjaG93bihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKLSAgICAgICAgIiIiU2V0IG93bmVyIG9mIHRhcmdldHBhdGggYWNjb3JkaW5nIHRvIHRhcmluZm8uCisgICAgZGVmIGNob3duKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgsIG51bWVyaWNfb3duZXIpOgorICAgICAgICAiIiJTZXQgb3duZXIgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4gSWYgbnVtZXJpY19vd25lcgorICAgICAgICAgICBpcyBUcnVlLCB1c2UgLmdpZC8udWlkIGluc3RlYWQgb2YgLmduYW1lLy51bmFtZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHB3ZCBhbmQgaGFzYXR0cihvcywgImdldGV1aWQiKSBhbmQgb3MuZ2V0ZXVpZCgpID09IDA6CiAgICAgICAgICAgICAjIFdlIGhhdmUgdG8gYmUgcm9vdCB0byBkbyBzby4KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBnID0gZ3JwLmdldGdybmFtKHRhcmluZm8uZ25hbWUpWzJdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBpZiBudW1lcmljX293bmVyOgogICAgICAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHUgPSBwd2QuZ2V0cHduYW0odGFyaW5mby51bmFtZSlbMl0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICB1ID0gdGFyaW5mby51aWQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBnID0gZ3JwLmdldGdybmFtKHRhcmluZm8uZ25hbWUpWzJdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICBnID0gdGFyaW5mby5naWQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHUgPSBwd2QuZ2V0cHduYW0odGFyaW5mby51bmFtZSlbMl0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIHRhcmluZm8uaXNzeW0oKSBhbmQgaGFzYXR0cihvcywgImxjaG93biIpOgogICAgICAgICAgICAgICAgICAgICBvcy5sY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKZGlmZiAtLWdpdCBhL0xpYi90ZWxuZXRsaWIucHkgYi9MaWIvdGVsbmV0bGliLnB5CmluZGV4IDUxNzM4ZjAuLjcyZGFiYzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZWxuZXRsaWIucHkKKysrIGIvTGliL3RlbG5ldGxpYi5weQpAQCAtMzYsMTAgKzM2LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzZWxlY3RvcnMKLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogX19hbGxfXyA9IFsiVGVsbmV0Il0KIApAQCAtMjY1LDggKzI2Miw4IEBACiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbi4iIiIKICAgICAgICAgc29jayA9IHNlbGYuc29jawotICAgICAgICBzZWxmLnNvY2sgPSAwCi0gICAgICAgIHNlbGYuZW9mID0gMQorICAgICAgICBzZWxmLnNvY2sgPSBOb25lCisgICAgICAgIHNlbGYuZW9mID0gVHJ1ZQogICAgICAgICBzZWxmLmlhY3NlcSA9IGInJwogICAgICAgICBzZWxmLnNiID0gMAogICAgICAgICBpZiBzb2NrOgpkaWZmIC0tZ2l0IGEvTGliL3RlbXBmaWxlLnB5IGIvTGliL3RlbXBmaWxlLnB5CmluZGV4IDA1MzcyMjguLjJmMWY5ZmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVtcGZpbGUucHkKQEAgLTYsNiArNiwxNCBAQAogZXhjZXB0IGZvciAnbWt0ZW1wJy4gICdta3RlbXAnIGlzIHN1YmplY3QgdG8gcmFjZSBjb25kaXRpb25zIGFuZAogc2hvdWxkIG5vdCBiZSB1c2VkOyBpdCBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5LgogCitUaGUgZGVmYXVsdCBwYXRoIG5hbWVzIGFyZSByZXR1cm5lZCBhcyBzdHIuICBJZiB5b3Ugc3VwcGx5IGJ5dGVzIGFzCitpbnB1dCwgYWxsIHJldHVybiB2YWx1ZXMgd2lsbCBiZSBpbiBieXRlcy4gIEV4OgorCisgICAgPj4+IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICg0LCAnL3RtcC90bXB0cHU5bmluOCcpCisgICAgPj4+IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PWInJykKKyAgICBiJy90bXAvdG1wcGJpOGYwaHknCisKIFRoaXMgbW9kdWxlIGFsc28gcHJvdmlkZXMgc29tZSBkYXRhIGl0ZW1zIHRvIHRoZSB1c2VyOgogCiAgIFRNUF9NQVggIC0gbWF4aW11bSBudW1iZXIgb2YgbmFtZXMgdGhhdCB3aWxsIGJlIHRyaWVkIGJlZm9yZQpAQCAtMjEsNyArMjksOCBAQAogICAgICJta3N0ZW1wIiwgIm1rZHRlbXAiLCAgICAgICAgICAgICAgICAgICMgbG93IGxldmVsIHNhZmUgaW50ZXJmYWNlcwogICAgICJta3RlbXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVwcmVjYXRlZCB1bnNhZmUgaW50ZXJmYWNlCiAgICAgIlRNUF9NQVgiLCAiZ2V0dGVtcHByZWZpeCIsICAgICAgICAgICAgIyBjb25zdGFudHMKLSAgICAidGVtcGRpciIsICJnZXR0ZW1wZGlyIgorICAgICJ0ZW1wZGlyIiwgImdldHRlbXBkaXIiLAorICAgICJnZXR0ZW1wcHJlZml4YiIsICJnZXR0ZW1wZGlyYiIsCiAgICBdCiAKIApAQCAtNTUsOCArNjQsMTAgQEAKIGVsc2U6CiAgICAgVE1QX01BWCA9IDEwMDAwCiAKLSMgQWx0aG91Z2ggaXQgZG9lcyBub3QgaGF2ZSBhbiB1bmRlcnNjb3JlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoaXMKLSMgdmFyaWFibGUgaXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsIChzZWUgaXNzdWUgMTAzNTQpLgorIyBUaGlzIHZhcmlhYmxlIF93YXNfIHVudXNlZCBmb3IgbGVnYWN5IHJlYXNvbnMsIHNlZSBpc3N1ZSAxMDM1NC4KKyMgQnV0IGFzIG9mIDMuNSB3ZSBhY3R1YWxseSB1c2UgaXQgYXQgcnVudGltZSBzbyBjaGFuZ2luZyBpdCB3b3VsZAorIyBoYXZlIGEgcG9zc2libHkgZGVzaXJhYmxlIHNpZGUgZWZmZWN0Li4uICBCdXQgd2UgZG8gbm90IHdhbnQgdG8gc3VwcG9ydAorIyB0aGF0IGFzIGFuIEFQSS4gIEl0IGlzIHVuZG9jdW1lbnRlZCBvbiBwdXJwb3NlLiAgRG8gbm90IGRlcGVuZCBvbiB0aGlzLgogdGVtcGxhdGUgPSAidG1wIgogCiAjIEludGVybmFsIHJvdXRpbmVzLgpAQCAtODIsNiArOTMsNDYgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gVHJ1ZQogCisKK2RlZiBfaW5mZXJfcmV0dXJuX3R5cGUoKmFyZ3MpOgorICAgICIiIkxvb2sgYXQgdGhlIHR5cGUgb2YgYWxsIGFyZ3MgYW5kIGRpdmluZSB0aGVpciBpbXBsaWVkIHJldHVybiB0eXBlLiIiIgorICAgIHJldHVybl90eXBlID0gTm9uZQorICAgIGZvciBhcmcgaW4gYXJnczoKKyAgICAgICAgaWYgYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgYnl0ZXMpOgorICAgICAgICAgICAgaWYgcmV0dXJuX3R5cGUgaXMgc3RyOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IGJ5dGVzIGFuZCBub24tYnl0ZXMgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCBjb21wb25lbnRzLiIpCisgICAgICAgICAgICByZXR1cm5fdHlwZSA9IGJ5dGVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiByZXR1cm5fdHlwZSBpcyBieXRlczoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBieXRlcyBhbmQgbm9uLWJ5dGVzIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGggY29tcG9uZW50cy4iKQorICAgICAgICAgICAgcmV0dXJuX3R5cGUgPSBzdHIKKyAgICBpZiByZXR1cm5fdHlwZSBpcyBOb25lOgorICAgICAgICByZXR1cm4gc3RyICAjIHRlbXBmaWxlIEFQSXMgcmV0dXJuIGEgc3RyIGJ5IGRlZmF1bHQuCisgICAgcmV0dXJuIHJldHVybl90eXBlCisKKworZGVmIF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcik6CisgICAgIiIiQ29tbW9uIHBhcmFtZXRlciBwcm9jZXNzaW5nIGZvciBtb3N0IEFQSXMgaW4gdGhpcyBtb2R1bGUuIiIiCisgICAgb3V0cHV0X3R5cGUgPSBfaW5mZXJfcmV0dXJuX3R5cGUocHJlZml4LCBzdWZmaXgsIGRpcikKKyAgICBpZiBzdWZmaXggaXMgTm9uZToKKyAgICAgICAgc3VmZml4ID0gb3V0cHV0X3R5cGUoKQorICAgIGlmIHByZWZpeCBpcyBOb25lOgorICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICBwcmVmaXggPSB0ZW1wbGF0ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJlZml4ID0gX29zLmZzZW5jb2RlKHRlbXBsYXRlKQorICAgIGlmIGRpciBpcyBOb25lOgorICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICBkaXIgPSBnZXR0ZW1wZGlyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXJiKCkKKyAgICByZXR1cm4gcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUKKworCiBjbGFzcyBfUmFuZG9tTmFtZVNlcXVlbmNlOgogICAgICIiIkFuIGluc3RhbmNlIG9mIF9SYW5kb21OYW1lU2VxdWVuY2UgZ2VuZXJhdGVzIGFuIGVuZGxlc3MKICAgICBzZXF1ZW5jZSBvZiB1bnByZWRpY3RhYmxlIHN0cmluZ3Mgd2hpY2ggY2FuIHNhZmVseSBiZSBpbmNvcnBvcmF0ZWQKQEAgLTE5NSwxNyArMjQ2LDE4IEBACiAgICAgcmV0dXJuIF9uYW1lX3NlcXVlbmNlCiAKIAotZGVmIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzKToKK2RlZiBfbWtzdGVtcF9pbm5lcihkaXIsIHByZSwgc3VmLCBmbGFncywgb3V0cHV0X3R5cGUpOgogICAgICIiIkNvZGUgY29tbW9uIHRvIG1rc3RlbXAsIFRlbXBvcmFyeUZpbGUsIGFuZCBOYW1lZFRlbXBvcmFyeUZpbGUuIiIiCiAKICAgICBuYW1lcyA9IF9nZXRfY2FuZGlkYXRlX25hbWVzKCkKKyAgICBpZiBvdXRwdXRfdHlwZSBpcyBieXRlczoKKyAgICAgICAgbmFtZXMgPSBtYXAoX29zLmZzZW5jb2RlLCBuYW1lcykKIAogICAgIGZvciBzZXEgaW4gcmFuZ2UoVE1QX01BWCk6CiAgICAgICAgIG5hbWUgPSBuZXh0KG5hbWVzKQogICAgICAgICBmaWxlID0gX29zLnBhdGguam9pbihkaXIsIHByZSArIG5hbWUgKyBzdWYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZkID0gX29zLm9wZW4oZmlsZSwgZmxhZ3MsIDBvNjAwKQotICAgICAgICAgICAgcmV0dXJuIChmZCwgX29zLnBhdGguYWJzcGF0aChmaWxlKSkKICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlICAgICMgdHJ5IGFnYWluCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CkBAIC0yMTYsNiArMjY4LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICByZXR1cm4gKGZkLCBfb3MucGF0aC5hYnNwYXRoKGZpbGUpKQogCiAgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKF9lcnJuby5FRVhJU1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGUgbmFtZSBmb3VuZCIpCkBAIC0yMjQsOSArMjc3LDEzIEBACiAjIFVzZXIgdmlzaWJsZSBpbnRlcmZhY2VzLgogCiBkZWYgZ2V0dGVtcHByZWZpeCgpOgotICAgICIiIkFjY2Vzc29yIGZvciB0ZW1wZGlyLnRlbXBsYXRlLiIiIgorICAgICIiIlRoZSBkZWZhdWx0IHByZWZpeCBmb3IgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzLiIiIgogICAgIHJldHVybiB0ZW1wbGF0ZQogCitkZWYgZ2V0dGVtcHByZWZpeGIoKToKKyAgICAiIiJUaGUgZGVmYXVsdCBwcmVmaXggZm9yIHRlbXBvcmFyeSBkaXJlY3RvcmllcyBhcyBieXRlcy4iIiIKKyAgICByZXR1cm4gX29zLmZzZW5jb2RlKGdldHRlbXBwcmVmaXgoKSkKKwogdGVtcGRpciA9IE5vbmUKIAogZGVmIGdldHRlbXBkaXIoKToKQEAgLTI0MSw3ICsyOTgsMTEgQEAKICAgICAgICAgICAgIF9vbmNlX2xvY2sucmVsZWFzZSgpCiAgICAgcmV0dXJuIHRlbXBkaXIKIAotZGVmIG1rc3RlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lLCB0ZXh0PUZhbHNlKToKK2RlZiBnZXR0ZW1wZGlyYigpOgorICAgICIiIkEgYnl0ZXMgdmVyc2lvbiBvZiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuIiIiCisgICAgcmV0dXJuIF9vcy5mc2VuY29kZShnZXR0ZW1wZGlyKCkpCisKK2RlZiBta3N0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUsIHRleHQ9RmFsc2UpOgogICAgICIiIlVzZXItY2FsbGFibGUgZnVuY3Rpb24gdG8gY3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5CiAgICAgZmlsZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIChmZCwgbmFtZSkgd2hlcmUgZmQgaXMgdGhlCiAgICAgZmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IG9zLm9wZW4sIGFuZCBuYW1lIGlzIHRoZSBmaWxlbmFtZS4KQEAgLTI1OSw2ICszMjAsMTAgQEAKICAgICBtb2RlLiAgRWxzZSAodGhlIGRlZmF1bHQpIHRoZSBmaWxlIGlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gIE9uCiAgICAgc29tZSBvcGVyYXRpbmcgc3lzdGVtcywgdGhpcyBtYWtlcyBubyBkaWZmZXJlbmNlLgogCisgICAgc3VmZml4LCBwcmVmaXggYW5kIGRpciBtdXN0IGFsbCBjb250YWluIHRoZSBzYW1lIHR5cGUgaWYgc3BlY2lmaWVkLgorICAgIElmIHRoZXkgYXJlIGJ5dGVzLCB0aGUgcmV0dXJuZWQgbmFtZSB3aWxsIGJlIGJ5dGVzOyBzdHIgb3RoZXJ3aXNlLgorICAgIEEgdmFsdWUgb2YgTm9uZSB3aWxsIGNhdXNlIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgdG8gYmUgdXNlZC4KKwogICAgIFRoZSBmaWxlIGlzIHJlYWRhYmxlIGFuZCB3cml0YWJsZSBvbmx5IGJ5IHRoZSBjcmVhdGluZyB1c2VyIElELgogICAgIElmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHVzZXMgcGVybWlzc2lvbiBiaXRzIHRvIGluZGljYXRlIHdoZXRoZXIgYQogICAgIGZpbGUgaXMgZXhlY3V0YWJsZSwgdGhlIGZpbGUgaXMgZXhlY3V0YWJsZSBieSBubyBvbmUuIFRoZSBmaWxlCkBAIC0yNjcsMTggKzMzMiwxNyBAQAogICAgIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZGVsZXRpbmcgdGhlIGZpbGUgd2hlbiBkb25lIHdpdGggaXQuCiAgICAgIiIiCiAKLSAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgZGlyID0gZ2V0dGVtcGRpcigpCisgICAgcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUgPSBfc2FuaXRpemVfcGFyYW1zKHByZWZpeCwgc3VmZml4LCBkaXIpCiAKICAgICBpZiB0ZXh0OgogICAgICAgICBmbGFncyA9IF90ZXh0X29wZW5mbGFncwogICAgIGVsc2U6CiAgICAgICAgIGZsYWdzID0gX2Jpbl9vcGVuZmxhZ3MKIAotICAgIHJldHVybiBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncykKKyAgICByZXR1cm4gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MsIG91dHB1dF90eXBlKQogCiAKLWRlZiBta2R0ZW1wKHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLCBkaXI9Tm9uZSk6CitkZWYgbWtkdGVtcChzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lKToKICAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbmQgcmV0dXJuIGEgdW5pcXVlIHRlbXBvcmFyeQogICAgIGRpcmVjdG9yeS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBkaXJlY3RvcnkuCiAKQEAgLTI5MSwxNyArMzU1LDE3IEBACiAgICAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgZGlyZWN0b3J5IHdoZW4gZG9uZSB3aXRoIGl0LgogICAgICIiIgogCi0gICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQogCiAgICAgbmFtZXMgPSBfZ2V0X2NhbmRpZGF0ZV9uYW1lcygpCisgICAgaWYgb3V0cHV0X3R5cGUgaXMgYnl0ZXM6CisgICAgICAgIG5hbWVzID0gbWFwKF9vcy5mc2VuY29kZSwgbmFtZXMpCiAKICAgICBmb3Igc2VxIGluIHJhbmdlKFRNUF9NQVgpOgogICAgICAgICBuYW1lID0gbmV4dChuYW1lcykKICAgICAgICAgZmlsZSA9IF9vcy5wYXRoLmpvaW4oZGlyLCBwcmVmaXggKyBuYW1lICsgc3VmZml4KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MubWtkaXIoZmlsZSwgMG83MDApCi0gICAgICAgICAgICByZXR1cm4gZmlsZQogICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKQEAgLTMxMiw2ICszNzYsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiBmaWxlCiAKICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoX2Vycm5vLkVFWElTVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5hbWUgZm91bmQiKQpAQCAtMzIzLDggKzM4OCw4IEBACiAgICAgQXJndW1lbnRzIGFyZSBhcyBmb3IgbWtzdGVtcCwgZXhjZXB0IHRoYXQgdGhlICd0ZXh0JyBhcmd1bWVudCBpcwogICAgIG5vdCBhY2NlcHRlZC4KIAotICAgIFRoaXMgZnVuY3Rpb24gaXMgdW5zYWZlIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuICBUaGUgZmlsZSBuYW1lCi0gICAgcmVmZXJzIHRvIGEgZmlsZSB0aGF0IGRpZCBub3QgZXhpc3QgYXQgc29tZSBwb2ludCwgYnV0IGJ5IHRoZSB0aW1lCisgICAgVEhJUyBGVU5DVElPTiBJUyBVTlNBRkUgQU5EIFNIT1VMRCBOT1QgQkUgVVNFRC4gIFRoZSBmaWxlIG5hbWUgbWF5CisgICAgcmVmZXIgdG8gYSBmaWxlIHRoYXQgZGlkIG5vdCBleGlzdCBhdCBzb21lIHBvaW50LCBidXQgYnkgdGhlIHRpbWUKICAgICB5b3UgZ2V0IGFyb3VuZCB0byBjcmVhdGluZyBpdCwgc29tZW9uZSBlbHNlIG1heSBoYXZlIGJlYXRlbiB5b3UgdG8KICAgICB0aGUgcHVuY2guCiAgICAgIiIiCkBAIC00NTQsNyArNTE5LDcgQEAKIAogCiBkZWYgTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1Ob25lLCBzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1Ob25lLCBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1Ob25lLCBkZWxldGU9VHJ1ZSk6CiAgICAgIiIiQ3JlYXRlIGFuZCByZXR1cm4gYSB0ZW1wb3JhcnkgZmlsZS4KICAgICBBcmd1bWVudHM6CkBAIC00NzEsOCArNTM2LDcgQEAKICAgICB3aGVuIGl0IGlzIGNsb3NlZCB1bmxlc3MgdGhlICdkZWxldGUnIGFyZ3VtZW50IGlzIHNldCB0byBGYWxzZS4KICAgICAiIiIKIAotICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICBkaXIgPSBnZXR0ZW1wZGlyKCkKKyAgICBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZSA9IF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcikKIAogICAgIGZsYWdzID0gX2Jpbl9vcGVuZmxhZ3MKIApAQCAtNDgxLDcgKzU0NSw3IEBACiAgICAgaWYgX29zLm5hbWUgPT0gJ250JyBhbmQgZGVsZXRlOgogICAgICAgICBmbGFncyB8PSBfb3MuT19URU1QT1JBUlkKIAotICAgIChmZCwgbmFtZSkgPSBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncykKKyAgICAoZmQsIG5hbWUpID0gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MsIG91dHB1dF90eXBlKQogICAgIHRyeToKICAgICAgICAgZmlsZSA9IF9pby5vcGVuKGZkLCBtb2RlLCBidWZmZXJpbmc9YnVmZmVyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1uZXdsaW5lLCBlbmNvZGluZz1lbmNvZGluZykKQEAgLTQ5Nyw4ICs1NjEsMTMgQEAKICAgICBUZW1wb3JhcnlGaWxlID0gTmFtZWRUZW1wb3JhcnlGaWxlCiAKIGVsc2U6CisgICAgIyBJcyB0aGUgT19UTVBGSUxFIGZsYWcgYXZhaWxhYmxlIGFuZCBkb2VzIGl0IHdvcms/CisgICAgIyBUaGUgZmxhZyBpcyBzZXQgdG8gRmFsc2UgaWYgb3Mub3BlbihkaXIsIG9zLk9fVE1QRklMRSkgcmFpc2VzIGFuCisgICAgIyBJc0FEaXJlY3RvcnlFcnJvciBleGNlcHRpb24KKyAgICBfT19UTVBGSUxFX1dPUktTID0gaGFzYXR0cihfb3MsICdPX1RNUEZJTEUnKQorCiAgICAgZGVmIFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9Tm9uZSwgc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsCisgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1Ob25lLCBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgZGlyPU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBhIHRlbXBvcmFyeSBmaWxlLgogICAgICAgICBBcmd1bWVudHM6CkBAIC01MTIsMTMgKzU4MSwzMyBAQAogICAgICAgICBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgZmlsZS1saWtlIGludGVyZmFjZS4gIFRoZSBmaWxlIGhhcyBubwogICAgICAgICBuYW1lLCBhbmQgd2lsbCBjZWFzZSB0byBleGlzdCB3aGVuIGl0IGlzIGNsb3NlZC4KICAgICAgICAgIiIiCisgICAgICAgIGdsb2JhbCBfT19UTVBGSUxFX1dPUktTCiAKLSAgICAgICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBkaXIgPSBnZXR0ZW1wZGlyKCkKKyAgICAgICAgcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUgPSBfc2FuaXRpemVfcGFyYW1zKHByZWZpeCwgc3VmZml4LCBkaXIpCiAKICAgICAgICAgZmxhZ3MgPSBfYmluX29wZW5mbGFncworICAgICAgICBpZiBfT19UTVBGSUxFX1dPUktTOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZsYWdzMiA9IChmbGFncyB8IF9vcy5PX1RNUEZJTEUpICYgfl9vcy5PX0NSRUFUCisgICAgICAgICAgICAgICAgZmQgPSBfb3Mub3BlbihkaXIsIGZsYWdzMiwgMG82MDApCisgICAgICAgICAgICBleGNlcHQgSXNBRGlyZWN0b3J5RXJyb3I6CisgICAgICAgICAgICAgICAgIyBMaW51eCBrZXJuZWwgb2xkZXIgdGhhbiAzLjExIGlnbm9yZXMgT19UTVBGSUxFIGZsYWcuCisgICAgICAgICAgICAgICAgIyBTZXQgZmxhZyB0byBGYWxzZSB0byBub3QgdHJ5IGFnYWluLgorICAgICAgICAgICAgICAgIF9PX1RNUEZJTEVfV09SS1MgPSBGYWxzZQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBUaGUgZmlsZXN5c3RlbSBvZiB0aGUgZGlyZWN0b3J5IGRvZXMgbm90IHN1cHBvcnQgT19UTVBGSUxFLgorICAgICAgICAgICAgICAgICMgRm9yIGV4YW1wbGUsIE9TRXJyb3IoOTUsICdPcGVyYXRpb24gbm90IHN1cHBvcnRlZCcpLgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2lvLm9wZW4oZmQsIG1vZGUsIGJ1ZmZlcmluZz1idWZmZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPW5ld2xpbmUsIGVuY29kaW5nPWVuY29kaW5nKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgX29zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBfbWtzdGVtcF9pbm5lcigpLgogCi0gICAgICAgIChmZCwgbmFtZSkgPSBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncykKKyAgICAgICAgKGZkLCBuYW1lKSA9IF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzLCBvdXRwdXRfdHlwZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX29zLnVubGluayhuYW1lKQogICAgICAgICAgICAgcmV0dXJuIF9pby5vcGVuKGZkLCBtb2RlLCBidWZmZXJpbmc9YnVmZmVyaW5nLApAQCAtNTM2LDcgKzYyNSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3NpemU9MCwgbW9kZT0ndytiJywgYnVmZmVyaW5nPS0xLAogICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBuZXdsaW5lPU5vbmUsCi0gICAgICAgICAgICAgICAgIHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLCBkaXI9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpOgogICAgICAgICBpZiAnYicgaW4gbW9kZToKICAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBfaW8uQnl0ZXNJTygpCiAgICAgICAgIGVsc2U6CkBAIC02ODcsNyArNzc2LDcgQEAKICAgICBpbiBpdCBhcmUgcmVtb3ZlZC4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwgZGlyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lKToKICAgICAgICAgc2VsZi5uYW1lID0gbWtkdGVtcChzdWZmaXgsIHByZWZpeCwgZGlyKQogICAgICAgICBzZWxmLl9maW5hbGl6ZXIgPSBfd2Vha3JlZi5maW5hbGl6ZSgKICAgICAgICAgICAgIHNlbGYsIHNlbGYuX2NsZWFudXAsIHNlbGYubmFtZSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQppbmRleCAyMDRkODk0Li5lOTEyMGFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKKysrIGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC0xOSw3ICsxOSw3IEBACiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB0ZXN0LnN1cHBvcnQKLWltcG9ydCB0ZXN0LnNjcmlwdF9oZWxwZXIKK2ltcG9ydCB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlcgogCiAKICMgU2tpcCB0ZXN0cyBpZiBfbXVsdGlwcm9jZXNzaW5nIHdhc24ndCBidWlsdC4KQEAgLTI2MjQsNyArMjYyNCw3IEBACiAKICAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBsLmJpbmQoKHRlc3Quc3VwcG9ydC5IT1NULCAwKSkKLSAgICAgICAgbC5saXN0ZW4oMSkKKyAgICAgICAgbC5saXN0ZW4oKQogICAgICAgICBjb25uLnNlbmQobC5nZXRzb2NrbmFtZSgpKQogICAgICAgICBuZXdfY29ubiwgYWRkciA9IGwuYWNjZXB0KCkKICAgICAgICAgY29ubi5zZW5kKG5ld19jb25uKQpAQCAtMzI3MSw3ICszMjcxLDcgQEAKICAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIGwuYmluZCgodGVzdC5zdXBwb3J0LkhPU1QsIDApKQotICAgICAgICBsLmxpc3Rlbig0KQorICAgICAgICBsLmxpc3RlbigpCiAgICAgICAgIGFkZHIgPSBsLmdldHNvY2tuYW1lKCkKICAgICAgICAgcmVhZGVycyA9IFtdCiAgICAgICAgIHByb2NzID0gW10KQEAgLTM0ODMsMTEgKzM0ODMsMTEgQEAKICAgICAgICAgc20gPSBtdWx0aXByb2Nlc3NpbmcuZ2V0X3N0YXJ0X21ldGhvZCgpCiAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ21wX2ZvcmtfYm9tYi5weScpCiAgICAgICAgIGlmIHNtICE9ICdmb3JrJzoKLSAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IHRlc3Quc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUobmFtZSwgc20pCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUobmFtZSwgc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYicnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1J1bnRpbWVFcnJvcicsIGVycikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IHRlc3Quc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKG5hbWUsIHNtKQorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayhuYW1lLCBzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnJzdHJpcCgpLCBiJzEyMycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjg1ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI4NWUyOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZTFiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzNiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIGF3YWl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDE5YWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiBmb28oKToKKyAgICBhd2FpdCBzb21ldGhpbmcoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IwYTIzZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgeWllbGQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTRiZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIHlpZWxkIGZyb20gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjM2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbygpOgorICAgIGF3YWl0IGF3YWl0IGZ1dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCAzZDUwZmMxLi42M2MzYWU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtMyw2ICszLDcgQEAKIFNlZSBodHRwOi8vd3d3LnpvcGUub3JnL01lbWJlcnMvZmRyYWtlL0RhdGVUaW1lV2lraS9UZXN0Q2FzZXMKICIiIgogCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IHN5cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQpAQCAtNTAsNiArNTEsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZS5NSU5ZRUFSLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lLk1BWFlFQVIsIDk5OTkpCiAKKyAgICBkZWYgdGVzdF9uYW1lX2NsZWFudXAoc2VsZik6CisgICAgICAgIGlmICdfRmFzdCcgbm90IGluIHN0cihzZWxmKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkYXRldGltZSA9IGRhdGV0aW1lX21vZHVsZQorICAgICAgICBuYW1lcyA9IHNldChuYW1lIGZvciBuYW1lIGluIGRpcihkYXRldGltZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoJ19fJykpCisgICAgICAgIGFsbG93ZWQgPSBzZXQoWydNQVhZRUFSJywgJ01JTllFQVInLCAnZGF0ZScsICdkYXRldGltZScsCisgICAgICAgICAgICAgICAgICAgICAgICdkYXRldGltZV9DQVBJJywgJ3RpbWUnLCAndGltZWRlbHRhJywgJ3RpbWV6b25lJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ3R6aW5mbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVzIC0gYWxsb3dlZCwgc2V0KFtdKSkKKwogICAgIGRlZiB0ZXN0X2RpdmlkZV9hbmRfcm91bmQoc2VsZik6CiAgICAgICAgIGlmICdfRmFzdCcgaW4gc3RyKHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0xMTk2LDExICsxMjA4LDEzIEBACiAgICAgICAgICNjaGVjayB0aGF0IHRoaXMgc3RhbmRhcmQgZXh0ZW5zaW9uIHdvcmtzCiAgICAgICAgIHQuc3RyZnRpbWUoIiVmIikKIAotCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3MoMjAwNywgOSwgMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuX19mb3JtYXRfXygnJyksIHN0cihkdCkpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15tdXN0IGJlIHN0ciwgbm90IGludCQnKToKKyAgICAgICAgICAgIGR0Ll9fZm9ybWF0X18oMTIzKQorCiAgICAgICAgICMgY2hlY2sgdGhhdCBhIGRlcml2ZWQgY2xhc3MncyBfX3N0cl9fKCkgZ2V0cyBjYWxsZWQKICAgICAgICAgY2xhc3MgQShzZWxmLnRoZWNsYXNzKToKICAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtMTM1Miw4ICsxMzY2LDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvdGhlciwgTGFyZ2VyVGhhbkFueXRoaW5nKQogICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob3RoZXIsIExhcmdlclRoYW5Bbnl0aGluZykKLSAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAgICAgICAgIHJldHVybiBub3QgaXNpbnN0YW5jZShvdGhlciwgTGFyZ2VyVGhhbkFueXRoaW5nKQogICAgICAgICAgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKG90aGVyLCBMYXJnZXJUaGFuQW55dGhpbmcpCiAgICAgICAgICAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKQEAgLTE0NTYsOSArMTQ2OCwxMCBAQAogICAgICAgICBmb3IgbW9udGhfYnl0ZSBpbiBiJzknLCBiJ1wwJywgYidccicsIGInXHhmZic6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VbOjJdICsgbW9udGhfYnl0ZSArIGJhc2VbMzpdKQotICAgICAgICAjIEdvb2QgYnl0ZXMsIGJ1dCBiYWQgdHppbmZvOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzKFsxXSAqIGxlbihiYXNlKSksICdFU1QnKQorICAgICAgICBpZiBpc3N1YmNsYXNzKHNlbGYudGhlY2xhc3MsIGRhdGV0aW1lKToKKyAgICAgICAgICAgICMgR29vZCBieXRlcywgYnV0IGJhZCB0emluZm86CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXmJhZCB0emluZm8gc3RhdGUgYXJnJCcpOgorICAgICAgICAgICAgICAgIHNlbGYudGhlY2xhc3MoYnl0ZXMoWzFdICogbGVuKGJhc2UpKSwgJ0VTVCcpCiAKICAgICAgICAgZm9yIG9yZF9ieXRlIGluIHJhbmdlKDEsIDEzKToKICAgICAgICAgICAgICMgVGhpcyBzaG91bGRuJ3QgYmxvdyB1cCBiZWNhdXNlIG9mIHRoZSBtb250aCBieXRlIGFsb25lLiAgSWYKQEAgLTE1MzQsNiArMTU0Nyw5IEBACiAgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDA3LCA5LCAxMCwgNCwgNSwgMSwgMTIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0Ll9fZm9ybWF0X18oJycpLCBzdHIoZHQpKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdebXVzdCBiZSBzdHIsIG5vdCBpbnQkJyk6CisgICAgICAgICAgICBkdC5fX2Zvcm1hdF9fKDEyMykKKwogICAgICAgICAjIGNoZWNrIHRoYXQgYSBkZXJpdmVkIGNsYXNzJ3MgX19zdHJfXygpIGdldHMgY2FsbGVkCiAgICAgICAgIGNsYXNzIEEoc2VsZi50aGVjbGFzcyk6CiAgICAgICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTE5MTMsNiArMTkyOSw3IEBACiAgICAgICAgIGZvciBpbnNhbmUgaW4gLTFlMjAwLCAxZTIwMDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2FuZSkKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXNuJ3QgYWNjZXB0IG5lZ2F0aXZlIHRpbWVzdGFtcHMiKQogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2Zsb2F0X2Zyb210aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICMgVGhlIHJlc3VsdCBpcyB0ei1kZXBlbmRlbnQ7IGF0IGxlYXN0IHRlc3QgdGhhdCB0aGlzIGRvZXNuJ3QKQEAgLTIyOTIsNiArMjMwOSw5IEBACiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX2Zvcm1hdF9fKCcnKSwgc3RyKHQpKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdebXVzdCBiZSBzdHIsIG5vdCBpbnQkJyk6CisgICAgICAgICAgICB0Ll9fZm9ybWF0X18oMTIzKQorCiAgICAgICAgICMgY2hlY2sgdGhhdCBhIGRlcml2ZWQgY2xhc3MncyBfX3N0cl9fKCkgZ2V0cyBjYWxsZWQKICAgICAgICAgY2xhc3MgQShzZWxmLnRoZWNsYXNzKToKICAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtMjM1NSwxMyArMjM3NSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBkZXJpdmVkKQogCiAgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgIyB0aW1lIGlzIGFsd2F5cyBUcnVlLgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMCwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMCwgMCwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMCwgMCwgMCwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xzKDApKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNscygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xzKDApKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2xzKCkpCiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCkBAIC0yNDIwLDYgKzI0NDEsOSBAQAogICAgICAgICBmb3IgaG91cl9ieXRlIGluICcgJywgJzknLCBjaHIoMjQpLCAnXHhmZic6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJfYnl0ZSArIGJhc2VbMTpdKQorICAgICAgICAjIEdvb2QgYnl0ZXMsIGJ1dCBiYWQgdHppbmZvOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXmJhZCB0emluZm8gc3RhdGUgYXJnJCcpOgorICAgICAgICAgICAgc2VsZi50aGVjbGFzcyhieXRlcyhbMV0gKiBsZW4oYmFzZSkpLCAnRVNUJykKIAogIyBBIG1peGluIGZvciBjbGFzc2VzIHdpdGggYSB0emluZm89IGFyZ3VtZW50LiAgU3ViY2xhc3NlcyBtdXN0IGRlZmluZQogIyB0aGVjbGFzcyBhcyBhIGNsYXNzIGF0cmlidXRlLCBhbmQgdGhlY2xhc3MoMSwgMSwgMSwgdHppbmZvPXdoYXRldmVyKQpAQCAtMjY3OSw3ICsyNzAzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0LnN0cmZ0aW1lLCAiJVoiKQogCiAgICAgICAgICMgSXNzdWUgIzY2OTc6Ci0gICAgICAgIGlmICdfRmFzdCcgaW4gc3RyKHR5cGUoc2VsZikpOgorICAgICAgICBpZiAnX0Zhc3QnIGluIHN0cihzZWxmKToKICAgICAgICAgICAgIEJhZHR6bmFtZS50eiA9ICdcdWQ4MDAnCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnN0cmZ0aW1lLCAiJVoiKQogCkBAIC0yNzE0LDcgKzI3MzgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXJpdmVkLnR6bmFtZSgpLCAnY29va2llJykKIAogICAgIGRlZiB0ZXN0X21vcmVfYm9vbChzZWxmKToKLSAgICAgICAgIyBUZXN0IGNhc2VzIHdpdGggbm9uLU5vbmUgdHppbmZvLgorICAgICAgICAjIHRpbWUgaXMgYWx3YXlzIFRydWUuCiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKIAogICAgICAgICB0ID0gY2xzKDAsIHR6aW5mbz1GaXhlZE9mZnNldCgtMzAwLCAiIikpCkBAIC0yNzI0LDIyICsyNzQ4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0KQogCiAgICAgICAgIHQgPSBjbHMoNSwgdHppbmZvPUZpeGVkT2Zmc2V0KDMwMCwgIiIpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQpCi0KLSAgICAgICAgdCA9IGNscygyMywgNTksIHR6aW5mbz1GaXhlZE9mZnNldCgyMyo2MCArIDU5LCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodCkKLQotICAgICAgICAjIE1vc3RseSBlbnN1cmluZyB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cgaW50ZXJuYWxseS4KLSAgICAgICAgdCA9IGNscygwLCB0emluZm89Rml4ZWRPZmZzZXQoMjMqNjAgKyA1OSwgIiIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodCkKIAotICAgICAgICAjIEJ1dCB0aGlzIHNob3VsZCB5aWVsZCBhIHZhbHVlIGVycm9yIC0tIHRoZSB1dGNvZmZzZXQgaXMgYm9ndXMuCi0gICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KDI0KjYwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogYm9vbCh0KSkKLQotICAgICAgICAjIExpa2V3aXNlLgotICAgICAgICB0ID0gY2xzKDAsIHR6aW5mbz1GaXhlZE9mZnNldCgtMjQqNjAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBib29sKHQpKQorICAgICAgICB0ID0gY2xzKDIzLCA1OSwgdHppbmZvPUZpeGVkT2Zmc2V0KDIzKjYwICsgNTksICIiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQpCiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCkBAIC0zODUzLDggKzM4NjUsNTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc19kYXRldGltZSwgZGF0ZXRpbWVfc2MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0ZXRpbWVfc2MsIGFzX2RhdGV0aW1lKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisgICAgZGVmIHRlc3RfZXh0cmFfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgZm9yIHggaW4gW2RhdGUudG9kYXkoKSwKKyAgICAgICAgICAgICAgICAgIHRpbWUoKSwKKyAgICAgICAgICAgICAgICAgIGRhdGV0aW1lLnV0Y25vdygpLAorICAgICAgICAgICAgICAgICAgdGltZWRlbHRhKCksCisgICAgICAgICAgICAgICAgICB0emluZm8oKSwKKyAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgpKV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICB4LmFiYyA9IDEKKworICAgIGRlZiB0ZXN0X2NoZWNrX2FyZ190eXBlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTnVtYmVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKyAgICAgICAgZm9yIHh4IGluIFtkZWNpbWFsLkRlY2ltYWwoMTApLAorICAgICAgICAgICAgICAgICAgIGRlY2ltYWwuRGVjaW1hbCgnMTAuOScpLAorICAgICAgICAgICAgICAgICAgIE51bWJlcigxMCldOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lKHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgsIHh4KSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXmFuIGludGVnZXIgaXMgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXChnb3QgdHlwZSBzdHJcKSQnKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgJzEwJykKKworICAgICAgICBmMTAgPSBOdW1iZXIoMTAuOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15fX2ludF9fIHJldHVybmVkIG5vbi1pbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCh0eXBlIGZsb2F0XCkkJyk6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIGYxMCkKKworICAgICAgICBjbGFzcyBGbG9hdChmbG9hdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHMxMCA9IEZsb2F0KDEwLjkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ290IGZsb2F0JCcpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCBzMTApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAuLCAxMCwgMTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMC4sIDEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5IGIvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWUwZDkxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQpAQCAtMCwwICsxLDQ2OSBAQAorIiIiCitUaGlzIHRlc3Qgc3VpdGUgZXhlcmNpc2VzIHNvbWUgc3lzdGVtIGNhbGxzIHN1YmplY3QgdG8gaW50ZXJydXB0aW9uIHdpdGggRUlOVFIsCit0byBjaGVjayB0aGF0IGl0IGlzIGFjdHVhbGx5IGhhbmRsZWQgdHJhbnNwYXJlbnRseS4KK0l0IGlzIGludGVuZGVkIHRvIGJlIHJ1biBieSB0aGUgbWFpbiB0ZXN0IHN1aXRlIHdpdGhpbiBhIGNoaWxkIHByb2Nlc3MsIHRvCitlbnN1cmUgdGhlcmUgaXMgbm8gYmFja2dyb3VuZCB0aHJlYWQgcnVubmluZyAoc28gdGhhdCBzaWduYWxzIGFyZSBkZWxpdmVyZWQgdG8KK3RoZSBjb3JyZWN0IHRocmVhZCkuCitTaWduYWxzIGFyZSBnZW5lcmF0ZWQgaW4tcHJvY2VzcyB1c2luZyBzZXRpdGltZXIoSVRJTUVSX1JFQUwpLCB3aGljaCBhbGxvd3MKK3N1Yi1zZWNvbmQgcGVyaW9kaWNpdHkgKGNvbnRyYXJpbHkgdG8gc2lnbmFsKCkpLgorIiIiCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KK2ltcG9ydCBvcworaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYga2lsbF9vbl9lcnJvcihwcm9jKToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIga2lsbGluZyB0aGUgc3VicHJvY2VzcyBpZiBhIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLiIiIgorICAgIHdpdGggcHJvYzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQgcHJvYworICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jLmtpbGwoKQorICAgICAgICAgICAgcmFpc2UKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgRUlOVFJCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIEJhc2UgY2xhc3MgZm9yIEVJTlRSIHRlc3RzLiAiIiIKKworICAgICMgZGVsYXkgZm9yIGluaXRpYWwgc2lnbmFsIGRlbGl2ZXJ5CisgICAgc2lnbmFsX2RlbGF5ID0gMC4xCisgICAgIyBzaWduYWwgZGVsaXZlcnkgcGVyaW9kaWNpdHkKKyAgICBzaWduYWxfcGVyaW9kID0gMC4xCisgICAgIyBkZWZhdWx0IHNsZWVwIHRpbWUgZm9yIHRlc3RzIC0gc2hvdWxkIG9idmlvdXNseSBoYXZlOgorICAgICMgc2xlZXBfdGltZSA+IHNpZ25hbF9wZXJpb2QKKyAgICBzbGVlcF90aW1lID0gMC4yCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMub3JpZ19oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgbGFtYmRhICphcmdzOiBOb25lKQorICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgY2xzLnNpZ25hbF9kZWxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2lnbmFsX3BlcmlvZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzdG9wX2FsYXJtKGNscyk6CisgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCAwLCAwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnN0b3BfYWxhcm0oKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBjbHMub3JpZ19oYW5kbGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zbGVlcChjbHMpOgorICAgICAgICAjIGRlZmF1bHQgc2xlZXAgdGltZQorICAgICAgICB0aW1lLnNsZWVwKGNscy5zbGVlcF90aW1lKQorCisgICAgZGVmIHN1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBjbWRfYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1jJykgKyBhcmdzCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKGNtZF9hcmdzLCAqKmt3KQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksICJyZXF1aXJlcyBzZXRpdGltZXIoKSIpCitjbGFzcyBPU0VJTlRSVGVzdChFSU5UUkJhc2VUZXN0KToKKyAgICAiIiIgRUlOVFIgdGVzdHMgZm9yIHRoZSBvcyBtb2R1bGUuICIiIgorCisgICAgZGVmIG5ld19zbGVlcF9wcm9jZXNzKHNlbGYpOgorICAgICAgICBjb2RlID0gJ2ltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKCVyKScgJSBzZWxmLnNsZWVwX3RpbWUKKyAgICAgICAgcmV0dXJuIHNlbGYuc3VicHJvY2Vzcyhjb2RlKQorCisgICAgZGVmIF90ZXN0X3dhaXRfbXVsdGlwbGUoc2VsZiwgd2FpdF9mdW5jKToKKyAgICAgICAgbnVtID0gMworICAgICAgICBwcm9jZXNzZXMgPSBbc2VsZi5uZXdfc2xlZXBfcHJvY2VzcygpIGZvciBfIGluIHJhbmdlKG51bSldCisgICAgICAgIGZvciBfIGluIHJhbmdlKG51bSk6CisgICAgICAgICAgICB3YWl0X2Z1bmMoKQorCisgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93YWl0X211bHRpcGxlKG9zLndhaXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnd2FpdDMnKSwgJ3JlcXVpcmVzIHdhaXQzKCknKQorICAgIGRlZiB0ZXN0X3dhaXQzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dhaXRfbXVsdGlwbGUobGFtYmRhOiBvcy53YWl0MygwKSkKKworICAgIGRlZiBfdGVzdF93YWl0X3NpbmdsZShzZWxmLCB3YWl0X2Z1bmMpOgorICAgICAgICBwcm9jID0gc2VsZi5uZXdfc2xlZXBfcHJvY2VzcygpCisgICAgICAgIHdhaXRfZnVuYyhwcm9jLnBpZCkKKworICAgIGRlZiB0ZXN0X3dhaXRwaWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2FpdF9zaW5nbGUobGFtYmRhIHBpZDogb3Mud2FpdHBpZChwaWQsIDApKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3dhaXQ0JyksICdyZXF1aXJlcyB3YWl0NCgpJykKKyAgICBkZWYgdGVzdF93YWl0NChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0NChwaWQsIDApKQorCisgICAgZGVmIHRlc3RfcmVhZChzZWxmKToKKyAgICAgICAgcmQsIHdyID0gb3MucGlwZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcmQpCisgICAgICAgICMgd3IgY2xvc2VkIGV4cGxpY2l0bHkgYnkgcGFyZW50CisKKyAgICAgICAgIyB0aGUgcGF5bG9hZCBiZWxvdyBhcmUgc21hbGxlciB0aGFuIFBJUEVfQlVGLCBoZW5jZSB0aGUgd3JpdGVzIHdpbGwgYmUKKyAgICAgICAgIyBhdG9taWMKKyAgICAgICAgZGF0YXMgPSBbYiJoZWxsbyIsIGIid29ybGQiLCBiInNwYW0iXQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBvcywgc3lzLCB0aW1lJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3dyID0gaW50KHN5cy5hcmd2WzFdKScsCisgICAgICAgICAgICAnZGF0YXMgPSAlcicgJSBkYXRhcywKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9yIGRhdGEgaW4gZGF0YXM6JywKKyAgICAgICAgICAgICcgICAgIyBsZXQgdGhlIHBhcmVudCBibG9jayBvbiByZWFkKCknLAorICAgICAgICAgICAgJyAgICB0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICcgICAgb3Mud3JpdGUod3IsIGRhdGEpJywKKyAgICAgICAgKSkKKworICAgICAgICBwcm9jID0gc2VsZi5zdWJwcm9jZXNzKGNvZGUsIHN0cih3ciksIHBhc3NfZmRzPVt3cl0pCisgICAgICAgIHdpdGgga2lsbF9vbl9lcnJvcihwcm9jKToKKyAgICAgICAgICAgIG9zLmNsb3NlKHdyKQorICAgICAgICAgICAgZm9yIGRhdGEgaW4gZGF0YXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBvcy5yZWFkKHJkLCBsZW4oZGF0YSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLndhaXQoKSwgMCkKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICByZCwgd3IgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3cikKKyAgICAgICAgIyByZCBjbG9zZWQgZXhwbGljaXRseSBieSBwYXJlbnQKKworICAgICAgICAjIHdlIG11c3Qgd3JpdGUgZW5vdWdoIGRhdGEgZm9yIHRoZSB3cml0ZSgpIHRvIGJsb2NrCisgICAgICAgIGRhdGEgPSBiIngiICogc3VwcG9ydC5QSVBFX01BWF9TSVpFCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IGlvLCBvcywgc3lzLCB0aW1lJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3JkID0gaW50KHN5cy5hcmd2WzFdKScsCisgICAgICAgICAgICAnc2xlZXBfdGltZSA9ICVyJyAlIHNlbGYuc2xlZXBfdGltZSwKKyAgICAgICAgICAgICdkYXRhID0gYiJ4IiAqICVzJyAlIHN1cHBvcnQuUElQRV9NQVhfU0laRSwKKyAgICAgICAgICAgICdkYXRhX2xlbiA9IGxlbihkYXRhKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHdyaXRlKCknLAorICAgICAgICAgICAgJ3RpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAncmVhZF9kYXRhID0gaW8uQnl0ZXNJTygpJywKKyAgICAgICAgICAgICd3aGlsZSBsZW4ocmVhZF9kYXRhLmdldHZhbHVlKCkpIDwgZGF0YV9sZW46JywKKyAgICAgICAgICAgICcgICAgY2h1bmsgPSBvcy5yZWFkKHJkLCAyICogZGF0YV9sZW4pJywKKyAgICAgICAgICAgICcgICAgcmVhZF9kYXRhLndyaXRlKGNodW5rKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICd2YWx1ZSA9IHJlYWRfZGF0YS5nZXR2YWx1ZSgpJywKKyAgICAgICAgICAgICdpZiB2YWx1ZSAhPSBkYXRhOicsCisgICAgICAgICAgICAnICAgIHJhaXNlIEV4Y2VwdGlvbigicmVhZCBlcnJvcjogJXMgdnMgJXMgYnl0ZXMiJywKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICUgKGxlbih2YWx1ZSksIGRhdGFfbGVuKSknLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSwgc3RyKHJkKSwgcGFzc19mZHM9W3JkXSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgb3MuY2xvc2UocmQpCisgICAgICAgICAgICB3cml0dGVuID0gMAorICAgICAgICAgICAgd2hpbGUgd3JpdHRlbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICB3cml0dGVuICs9IG9zLndyaXRlKHdyLCBtZW1vcnl2aWV3KGRhdGEpW3dyaXR0ZW46XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIFNvY2tldEVJTlRSVGVzdChFSU5UUkJhc2VUZXN0KToKKyAgICAiIiIgRUlOVFIgdGVzdHMgZm9yIHRoZSBzb2NrZXQgbW9kdWxlLiAiIiIKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc29ja2V0cGFpcicpLCAnbmVlZHMgc29ja2V0cGFpcigpJykKKyAgICBkZWYgX3Rlc3RfcmVjdihzZWxmLCByZWN2X2Z1bmMpOgorICAgICAgICByZCwgd3IgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZC5jbG9zZSkKKyAgICAgICAgIyB3ciBjbG9zZWQgZXhwbGljaXRseSBieSBwYXJlbnQKKworICAgICAgICAjIHNpbmdsZS1ieXRlIHBheWxvYWQgZ3VhcmQgdXMgYWdhaW5zdCBwYXJ0aWFsIHJlY3YKKyAgICAgICAgZGF0YXMgPSBbYiJ4IiwgYiJ5IiwgYiJ6Il0KKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKCgKKyAgICAgICAgICAgICdpbXBvcnQgb3MsIHNvY2tldCwgc3lzLCB0aW1lJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2ZkID0gaW50KHN5cy5hcmd2WzFdKScsCisgICAgICAgICAgICAnZmFtaWx5ID0gJXMnICUgaW50KHdyLmZhbWlseSksCisgICAgICAgICAgICAnc29ja190eXBlID0gJXMnICUgaW50KHdyLnR5cGUpLAorICAgICAgICAgICAgJ2RhdGFzID0gJXInICUgZGF0YXMsCisgICAgICAgICAgICAnc2xlZXBfdGltZSA9ICVyJyAlIHNlbGYuc2xlZXBfdGltZSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3dyID0gc29ja2V0LmZyb21mZChmZCwgZmFtaWx5LCBzb2NrX3R5cGUpJywKKyAgICAgICAgICAgICdvcy5jbG9zZShmZCknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd2l0aCB3cjonLAorICAgICAgICAgICAgJyAgICBmb3IgZGF0YSBpbiBkYXRhczonLAorICAgICAgICAgICAgJyAgICAgICAgIyBsZXQgdGhlIHBhcmVudCBibG9jayBvbiByZWN2KCknLAorICAgICAgICAgICAgJyAgICAgICAgdGltZS5zbGVlcChzbGVlcF90aW1lKScsCisgICAgICAgICAgICAnICAgICAgICB3ci5zZW5kYWxsKGRhdGEpJywKKyAgICAgICAgKSkKKworICAgICAgICBmZCA9IHdyLmZpbGVubygpCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSwgc3RyKGZkKSwgcGFzc19mZHM9W2ZkXSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgd3IuY2xvc2UoKQorICAgICAgICAgICAgZm9yIGRhdGEgaW4gZGF0YXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCByZWN2X2Z1bmMocmQsIGxlbihkYXRhKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgZGVmIHRlc3RfcmVjdihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9yZWN2KHNvY2tldC5zb2NrZXQucmVjdikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LnNvY2tldCwgJ3JlY3Ztc2cnKSwgJ25lZWRzIHJlY3Ztc2coKScpCisgICAgZGVmIHRlc3RfcmVjdm1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9yZWN2KGxhbWJkYSBzb2NrLCBkYXRhOiBzb2NrLnJlY3Ztc2coZGF0YSlbMF0pCisKKyAgICBkZWYgX3Rlc3Rfc2VuZChzZWxmLCBzZW5kX2Z1bmMpOgorICAgICAgICByZCwgd3IgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh3ci5jbG9zZSkKKyAgICAgICAgIyByZCBjbG9zZWQgZXhwbGljaXRseSBieSBwYXJlbnQKKworICAgICAgICAjIHdlIG11c3Qgc2VuZCBlbm91Z2ggZGF0YSBmb3IgdGhlIHNlbmQoKSB0byBibG9jaworICAgICAgICBkYXRhID0gYiJ4eXoiICogKHN1cHBvcnQuU09DS19NQVhfU0laRSAvLyAzKQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBvcywgc29ja2V0LCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZmQgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdmYW1pbHkgPSAlcycgJSBpbnQocmQuZmFtaWx5KSwKKyAgICAgICAgICAgICdzb2NrX3R5cGUgPSAlcycgJSBpbnQocmQudHlwZSksCisgICAgICAgICAgICAnc2xlZXBfdGltZSA9ICVyJyAlIHNlbGYuc2xlZXBfdGltZSwKKyAgICAgICAgICAgICdkYXRhID0gYiJ4eXoiICogJXMnICUgKHN1cHBvcnQuU09DS19NQVhfU0laRSAvLyAzKSwKKyAgICAgICAgICAgICdkYXRhX2xlbiA9IGxlbihkYXRhKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdyZCA9IHNvY2tldC5mcm9tZmQoZmQsIGZhbWlseSwgc29ja190eXBlKScsCisgICAgICAgICAgICAnb3MuY2xvc2UoZmQpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3dpdGggcmQ6JywKKyAgICAgICAgICAgICcgICAgIyBsZXQgdGhlIHBhcmVudCBibG9jayBvbiBzZW5kKCknLAorICAgICAgICAgICAgJyAgICB0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJyAgICByZWNlaXZlZF9kYXRhID0gYnl0ZWFycmF5KGRhdGFfbGVuKScsCisgICAgICAgICAgICAnICAgIG4gPSAwJywKKyAgICAgICAgICAgICcgICAgd2hpbGUgbiA8IGRhdGFfbGVuOicsCisgICAgICAgICAgICAnICAgICAgICBuICs9IHJkLnJlY3ZfaW50byhtZW1vcnl2aWV3KHJlY2VpdmVkX2RhdGEpW246XSknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnaWYgcmVjZWl2ZWRfZGF0YSAhPSBkYXRhOicsCisgICAgICAgICAgICAnICAgIHJhaXNlIEV4Y2VwdGlvbigicmVjdiBlcnJvcjogJXMgdnMgJXMgYnl0ZXMiJywKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICUgKGxlbihyZWNlaXZlZF9kYXRhKSwgZGF0YV9sZW4pKScsCisgICAgICAgICkpCisKKyAgICAgICAgZmQgPSByZC5maWxlbm8oKQorICAgICAgICBwcm9jID0gc2VsZi5zdWJwcm9jZXNzKGNvZGUsIHN0cihmZCksIHBhc3NfZmRzPVtmZF0pCisgICAgICAgIHdpdGgga2lsbF9vbl9lcnJvcihwcm9jKToKKyAgICAgICAgICAgIHJkLmNsb3NlKCkKKyAgICAgICAgICAgIHdyaXR0ZW4gPSAwCisgICAgICAgICAgICB3aGlsZSB3cml0dGVuIDwgbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIHNlbnQgPSBzZW5kX2Z1bmMod3IsIG1lbW9yeXZpZXcoZGF0YSlbd3JpdHRlbjpdKQorICAgICAgICAgICAgICAgICMgc2VuZGFsbCgpIHJldHVybnMgTm9uZQorICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gbGVuKGRhdGEpIGlmIHNlbnQgaXMgTm9uZSBlbHNlIHNlbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NlbmQoc29ja2V0LnNvY2tldC5zZW5kKQorCisgICAgZGVmIHRlc3Rfc2VuZGFsbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9zZW5kKHNvY2tldC5zb2NrZXQuc2VuZGFsbCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LnNvY2tldCwgJ3NlbmRtc2cnKSwgJ25lZWRzIHNlbmRtc2coKScpCisgICAgZGVmIHRlc3Rfc2VuZG1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9zZW5kKGxhbWJkYSBzb2NrLCBkYXRhOiBzb2NrLnNlbmRtc2coW2RhdGFdKSkKKworICAgIGRlZiB0ZXN0X2FjY2VwdChzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisKKyAgICAgICAgc29jay5iaW5kKChzdXBwb3J0LkhPU1QsIDApKQorICAgICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCisgICAgICAgIHNvY2subGlzdGVuKCkKKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKCgKKyAgICAgICAgICAgICdpbXBvcnQgc29ja2V0LCB0aW1lJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2hvc3QgPSAlcicgJSBzdXBwb3J0LkhPU1QsCisgICAgICAgICAgICAncG9ydCA9ICVzJyAlIHBvcnQsCisgICAgICAgICAgICAnc2xlZXBfdGltZSA9ICVyJyAlIHNlbGYuc2xlZXBfdGltZSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJyMgbGV0IHBhcmVudCBibG9jayBvbiBhY2NlcHQoKScsCisgICAgICAgICAgICAndGltZS5zbGVlcChzbGVlcF90aW1lKScsCisgICAgICAgICAgICAnd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpKTonLAorICAgICAgICAgICAgJyAgICB0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgKSkKKworICAgICAgICBwcm9jID0gc2VsZi5zdWJwcm9jZXNzKGNvZGUpCisgICAgICAgIHdpdGgga2lsbF9vbl9lcnJvcihwcm9jKToKKyAgICAgICAgICAgIGNsaWVudF9zb2NrLCBfID0gc29jay5hY2NlcHQoKQorICAgICAgICAgICAgY2xpZW50X3NvY2suY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLndhaXQoKSwgMCkKKworICAgICMgSXNzdWUgIzI1MTIyOiBUaGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBGcmVlQlNEIGtlcm5lbCBvbgorICAgICMgaGFuZGxpbmcgc2lnbmFscyBpbiB0aGUgRklGTyBkZXZpY2UuIFNraXAgdGhlIHRlc3QgdW50aWwgdGhlIGJ1ZyBpcworICAgICMgZml4ZWQgaW4gdGhlIGtlcm5lbC4KKyAgICAjIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTYyCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDEwLCAzKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ25lZWRzIG1rZmlmbygpJykKKyAgICBkZWYgX3Rlc3Rfb3BlbihzZWxmLCBkb19vcGVuX2Nsb3NlX3JlYWRlciwgZG9fb3Blbl9jbG9zZV93cml0ZXIpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisKKyAgICAgICAgIyBVc2UgYSBmaWZvOiB1bnRpbCB0aGUgY2hpbGQgb3BlbnMgaXQgZm9yIHJlYWRpbmcsIHRoZSBwYXJlbnQgd2lsbAorICAgICAgICAjIGJsb2NrIHdoZW4gdHJ5aW5nIHRvIG9wZW4gaXQgZm9yIHdyaXRpbmcuCisgICAgICAgIHN1cHBvcnQudW5saW5rKGZpbGVuYW1lKQorICAgICAgICBvcy5ta2ZpZm8oZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCB0aW1lJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3BhdGggPSAlYScgJSBmaWxlbmFtZSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnIyBsZXQgdGhlIHBhcmVudCBibG9jaycsCisgICAgICAgICAgICAndGltZS5zbGVlcChzbGVlcF90aW1lKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIGRvX29wZW5fY2xvc2VfcmVhZGVyLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgZG9fb3Blbl9jbG9zZV93cml0ZXIoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgZGVmIHB5dGhvbl9vcGVuKHNlbGYsIHBhdGgpOgorICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICAgICBmcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X29wZW4oImZwID0gb3BlbihwYXRoLCAncicpXG5mcC5jbG9zZSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHl0aG9uX29wZW4pCisKKyAgICBkZWYgb3Nfb3BlbihzZWxmLCBwYXRoKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fV1JPTkxZKQorICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIGRlZiB0ZXN0X29zX29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfb3BlbigiZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fUkRPTkxZKVxub3MuY2xvc2UoZmQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3Nfb3BlbikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgVGltZUVJTlRSVGVzdChFSU5UUkJhc2VUZXN0KToKKyAgICAiIiIgRUlOVFIgdGVzdHMgZm9yIHRoZSB0aW1lIG1vZHVsZS4gIiIiCisKKyAgICBkZWYgdGVzdF9zbGVlcChzZWxmKToKKyAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5zbGVlcF90aW1lKQorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksICJyZXF1aXJlcyBzZXRpdGltZXIoKSIpCitjbGFzcyBTaWduYWxFSU5UUlRlc3QoRUlOVFJCYXNlVGVzdCk6CisgICAgIiIiIEVJTlRSIHRlc3RzIGZvciB0aGUgc2lnbmFsIG1vZHVsZS4gIiIiCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0KHNlbGYpOgorICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbmFsLlNJR1VTUjFdLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvKHNlbGYpOgorICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWdudW0sIGxhbWJkYSAqYXJnczogTm9uZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ251bSwgb2xkX2hhbmRsZXIpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCB0aW1lJywKKyAgICAgICAgICAgICdwaWQgPSAlcycgJSBvcy5nZXRwaWQoKSwKKyAgICAgICAgICAgICdzaWdudW0gPSAlcycgJSBpbnQoc2lnbnVtKSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ3RpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJ29zLmtpbGwocGlkLCBzaWdudW0pJywKKyAgICAgICAgKSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICAjIHBhcmVudAorICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWdudW1dKQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU2VsZWN0RUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNlbGVjdCBtb2R1bGUuICIiIgorCisgICAgZGVmIHRlc3Rfc2VsZWN0KHNlbGYpOgorICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW10sIFtdLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ25lZWQgc2VsZWN0LnBvbGwnKQorICAgIGRlZiB0ZXN0X3BvbGwoc2VsZik6CisgICAgICAgIHBvbGxlciA9IHNlbGVjdC5wb2xsKCkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lICogMWUzKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdlcG9sbCcpLCAnbmVlZCBzZWxlY3QuZXBvbGwnKQorICAgIGRlZiB0ZXN0X2Vwb2xsKHNlbGYpOgorICAgICAgICBwb2xsZXIgPSBzZWxlY3QuZXBvbGwoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocG9sbGVyLmNsb3NlKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBwb2xsZXIucG9sbChzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ2txdWV1ZScpLCAnbmVlZCBzZWxlY3Qua3F1ZXVlJykKKyAgICBkZWYgdGVzdF9rcXVldWUoc2VsZik6CisgICAgICAgIGtxdWV1ZSA9IHNlbGVjdC5rcXVldWUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoa3F1ZXVlLmNsb3NlKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBrcXVldWUuY29udHJvbChOb25lLCAxLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ2RldnBvbGwnKSwgJ25lZWQgc2VsZWN0LmRldnBvbGwnKQorICAgIGRlZiB0ZXN0X2RldnBvbGwoc2VsZik6CisgICAgICAgIHBvbGxlciA9IHNlbGVjdC5kZXZwb2xsKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBvbGxlci5jbG9zZSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lICogMWUzKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgT1NFSU5UUlRlc3QsCisgICAgICAgIFNvY2tldEVJTlRSVGVzdCwKKyAgICAgICAgVGltZUVJTlRSVGVzdCwKKyAgICAgICAgU2lnbmFsRUlOVFJUZXN0LAorICAgICAgICBTZWxlY3RFSU5UUlRlc3QpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAppbmRleCAxYzFmNjlmLi4wNTEzNzY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAorKysgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dApAQCAtNCw2ICs0LDcgQEAKICArLS0gR2VuZXJhdG9yRXhpdAogICstLSBFeGNlcHRpb24KICAgICAgICstLSBTdG9wSXRlcmF0aW9uCisgICAgICArLS0gU3RvcEFzeW5jSXRlcmF0aW9uCiAgICAgICArLS0gQXJpdGhtZXRpY0Vycm9yCiAgICAgICB8ICAgICstLSBGbG9hdGluZ1BvaW50RXJyb3IKICAgICAgIHwgICAgKy0tIE92ZXJmbG93RXJyb3IKQEAgLTM4LDYgKzM5LDcgQEAKICAgICAgICstLSBSZWZlcmVuY2VFcnJvcgogICAgICAgKy0tIFJ1bnRpbWVFcnJvcgogICAgICAgfCAgICArLS0gTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgfCAgICArLS0gUmVjdXJzaW9uRXJyb3IKICAgICAgICstLSBTeW50YXhFcnJvcgogICAgICAgfCAgICArLS0gSW5kZW50YXRpb25FcnJvcgogICAgICAgfCAgICAgICAgICstLSBUYWJFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZm9ya193YWl0LnB5IGIvTGliL3Rlc3QvZm9ya193YWl0LnB5CmluZGV4IDE5YjU0ZWMuLjcxMzAzOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQorKysgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKQEAgLTQ4LDcgKzQ4LDEyIEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKICAgICAgICAgICAgIF90aHJlYWQuc3RhcnRfbmV3KHNlbGYuZiwgKGksKSkKIAotICAgICAgICB0aW1lLnNsZWVwKExPTkdTTEVFUCkKKyAgICAgICAgIyBidXN5LWxvb3AgdG8gd2FpdCBmb3IgdGhyZWFkcworICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIGxlbihzZWxmLmFsaXZlKSA8IE5VTV9USFJFQURTOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICBpZiBkZWFkbGluZSA8IHRpbWUubW9ub3RvbmljKCk6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBhID0gc29ydGVkKHNlbGYuYWxpdmUua2V5cygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGxpc3QocmFuZ2UoTlVNX1RIUkVBRFMpKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLmV4ciBiL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLmV4cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzNjODFlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvaW1naGRyZGF0YS9weXRob24uZXhyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLndlYnAgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi53ZWJwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MjRlYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi53ZWJwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltcF9kdW1teS5weSBiL0xpYi90ZXN0L2ltcF9kdW1teS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTRkZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvaW1wX2R1bW15LnB5CkBAIC0wLDAgKzEsMyBAQAorIyBGb2RkZXIgZm9yIHRlc3Qgb2YgaXNzdWUyNDc0OCBpbiB0ZXN0X2ltcAorCitkdW1teV9uYW1lID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQppbmRleCAwYzFkODEwLi4wNjhkODI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQorKysgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQpAQCAtNDUsOSArNDUsMTYgQEAKICAgICAgICAgICAgIHNlbGYuZXggPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgc2VsZi50ciA9IGluc3BlY3QudHJhY2UoKQogCisgICAgZGVmIGNvbnRyYWRpY3Rpb24oc2VsZik6CisgICAgICAgICdUaGUgYXV0b21hdGljIGdhaW5zYXlpbmcuJworICAgICAgICBwYXNzCisKICMgbGluZSA0OAogY2xhc3MgTWFsb2Rvcm91c1BlcnZlcnQoU3R1cGlkR2l0KToKLSAgICBwYXNzCisgICAgZGVmIGFidXNlKHNlbGYsIGEsIGIsIGMpOgorICAgICAgICBwYXNzCisgICAgZGVmIGNvbnRyYWRpY3Rpb24oc2VsZik6CisgICAgICAgIHBhc3MKIAogVGl0ID0gTWFsb2Rvcm91c1BlcnZlcnQKIApAQCAtNTUsNCArNjIsMTAgQEAKICAgICBwYXNzCiAKIGNsYXNzIEZlc3RlcmluZ0dvYihNYWxvZG9yb3VzUGVydmVydCwgUGFycm90RHJvcHBpbmdzKToKKyAgICBkZWYgYWJ1c2Uoc2VsZiwgYSwgYiwgYyk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgY29udHJhZGljdGlvbihzZWxmKToKKyAgICAgICAgcGFzcworCithc3luYyBkZWYgbG9iYmVzdChncmVuYWRlKToKICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkKaW5kZXggYmQ3MTA2Zi4uYzY5ODdlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIyLnB5CisrKyBiL0xpYi90ZXN0L2luc3BlY3RfZm9kZGVyMi5weQpAQCAtMTA5LDMgKzEwOSwzMSBAQAogI2xpbmUgMTA5CiBkZWYga2V5d29yZF9vbmx5X2FyZygqLCBhcmcpOgogICAgIHBhc3MKKworQHdyYXAobGFtYmRhOiBOb25lKQorZGVmIGZ1bmMxMTQoKToKKyAgICByZXR1cm4gMTE1CisKK2NsYXNzIENsYXNzV2l0aE1ldGhvZDoKKyAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgICAgICBwYXNzCisKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCitkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgIEB3cmFwcyhmdW5jKQorICAgIGRlZiBmYWtlKCk6CisgICAgICAgIHJldHVybiA0MgorICAgIHJldHVybiBmYWtlCisKKyNsaW5lIDEyOQorQGRlY29yYXRvcgorZGVmIHJlYWwoKToKKyAgICByZXR1cm4gMjAKKworI2xpbmUgMTM0CitjbGFzcyBjbHMxMzU6CisgICAgZGVmIGZ1bmMxMzYoKToKKyAgICAgICAgZGVmIGZ1bmMxMzcoKToKKyAgICAgICAgICAgIG5ldmVyX3JlYWNoZWQxCisgICAgICAgICAgICBuZXZlcl9yZWFjaGVkMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggNDJlMTE4Yi4uMWFkZmM3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0zMCw2ICszMCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGEpLCBpZChiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9lcnJvcihzZWxmKToKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGEgPSBbXQorICAgICAgICAgICAgYVsnYSddID0gInB5dGhvbiIKKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGwwID0gW10KICAgICAgICAgbDIgPSBbMCwgMSwgMl0KQEAgLTUwLDcgKzU2LDcgQEAKICAgICAgICAgbDAgPSBbXQogICAgICAgICBmb3IgaSBpbiByYW5nZShzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSArIDEwMCk6CiAgICAgICAgICAgICBsMCA9IFtsMF0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZXByLCBsMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIHJlcHIsIGwwKQogCiAgICAgZGVmIHRlc3RfcHJpbnQoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLnR5cGUydGVzdChyYW5nZSgyMDApKQpAQCAtMTIwLDYgKzEyNiwxMCBAQAogICAgICAgICBhWy0xXSA9IDkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBzZWxmLnR5cGUydGVzdChbNSw2LDcsOCw5XSkpCiAKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGFbJ2EnXSA9ICJweXRob24iCisKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzAsIDFdKQogICAgICAgICBkZWwgYVsxXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggNDJhN2Q4Mi4uYjMyNWJjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC04Niw3ICs4NiwxMyBAQAogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQotICAgICAgICByZXByKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihsb2NrKSwgIjx1bmxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQorICAgICAgICBkZWwgbG9jaworCisgICAgZGVmIHRlc3RfbG9ja2VkX3JlcHIoc2VsZik6CisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGxvY2spLCAiPGxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQogICAgICAgICBkZWwgbG9jawogCiAgICAgZGVmIHRlc3RfYWNxdWlyZV9kZXN0cm95KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCBlMzY3MjRmLi5iMjhjNDczIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMzUsOCArMzUsOSBAQAogY2xhc3MgTW9ja1NvY2tldDoKICAgICAiIiJNb2NrIHNvY2tldCBvYmplY3QgdXNlZCBieSBzbXRwZCBhbmQgc210cGxpYiB0ZXN0cy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseT1Ob25lKToKICAgICAgICAgZ2xvYmFsIF9yZXBseV9kYXRhCisgICAgICAgIHNlbGYuZmFtaWx5ID0gZmFtaWx5CiAgICAgICAgIHNlbGYub3V0cHV0ID0gW10KICAgICAgICAgc2VsZi5saW5lcyA9IFtdCiAgICAgICAgIGlmIF9yZXBseV9kYXRhOgpAQCAtMTAxLDE1ICsxMDIsMTQgQEAKICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQogCiAgICAgZGVmIGdldHBlZXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ3BlZXInCisgICAgICAgIHJldHVybiAoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBwYXNzCiAKIAogZGVmIHNvY2tldChmYW1pbHk9Tm9uZSwgdHlwZT1Ob25lLCBwcm90bz1Ob25lKToKLSAgICByZXR1cm4gTW9ja1NvY2tldCgpCi0KKyAgICByZXR1cm4gTW9ja1NvY2tldChmYW1pbHkpCiAKIGRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CkBAIC0xNDQsMTMgKzE0NCwxNiBAQAogZGVmIGdldGhvc3RieW5hbWUobmFtZSk6CiAgICAgcmV0dXJuICIiCiAKK2RlZiBnZXRhZGRyaW5mbygqYXJncywgKiprdyk6CisgICAgcmV0dXJuIHNvY2tldF9tb2R1bGUuZ2V0YWRkcmluZm8oKmFyZ3MsICoqa3cpCiAKIGdhaWVycm9yID0gc29ja2V0X21vZHVsZS5nYWllcnJvcgogZXJyb3IgPSBzb2NrZXRfbW9kdWxlLmVycm9yCiAKIAogIyBDb25zdGFudHMKLUFGX0lORVQgPSBOb25lCi1TT0NLX1NUUkVBTSA9IE5vbmUKK0FGX0lORVQgPSBzb2NrZXRfbW9kdWxlLkFGX0lORVQKK0FGX0lORVQ2ID0gc29ja2V0X21vZHVsZS5BRl9JTkVUNgorU09DS19TVFJFQU0gPSBzb2NrZXRfbW9kdWxlLlNPQ0tfU1RSRUFNCiBTT0xfU09DS0VUID0gTm9uZQogU09fUkVVU0VBRERSID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IGM2ZjRmNmMuLjJlZjQ4ZTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTE1NDAsMTYgKzE1NDAsNjIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW1fYWRkaXRlbXMsIDIpCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfbmV3b2JqKHNlbGYpOgotICAgICAgICB4ID0gb2JqZWN0Ll9fbmV3X18oU2ltcGxlTmV3T2JqKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4ID0gU2ltcGxlTmV3T2JqLl9fbmV3X18oU2ltcGxlTmV3T2JqLCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCiAgICAgICAgIHguYWJjID0gNjY2CiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6Ci0gICAgICAgICAgICBzID0gc2VsZi5kdW1wcyh4LCBwcm90bykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKLCBzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90byA8IDQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvID49IDQpCi0gICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9pc19jb3B5KHgsIHkpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCisgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ01ceGNlXHhmYScsIHMpICAjIEJJTklOVDIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDw9IHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSkKKyAgICAgICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRfaXNfY29weSh4LCB5KQorCisgICAgZGVmIHRlc3RfY29tcGxleF9uZXdvYmooc2VsZik6CisgICAgICAgIHggPSBDb21wbGV4TmV3T2JqLl9fbmV3X18oQ29tcGxleE5ld09iaiwgMHhmYWNlKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4LmFiYyA9IDY2NgorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCA0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInWFx4MDRceDAwXHgwMFx4MDBGQUNFJywgcykgICMgQklOVU5JQ09ERQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcykpCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmV3b2JqX2V4KHNlbGYpOgorICAgICAgICB4ID0gQ29tcGxleE5ld09iakV4Ll9fbmV3X18oQ29tcGxleE5ld09iakV4LCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCisgICAgICAgIHguYWJjID0gNjY2CisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm90byA+PSA0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgPD0gcHJvdG8pCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKIAogICAgIGRlZiB0ZXN0X25ld29ial9saXN0X3Nsb3RzKHNlbGYpOgogICAgICAgICB4ID0gU2xvdExpc3QoWzEsIDIsIDNdKQpAQCAtMTgxMywxMyArMTg1OSwyNCBAQAogICAgICAgICAgICAgICAgIGNsYXNzIEI6CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDQsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZm9yIG9iaiBpbiBbTmVzdGVkLkEsIE5lc3RlZC5BLkIsIE5lc3RlZC5BLkIuQ106CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG9iaj1vYmopOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMob2JqLCBwcm90bykpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqLCB1bnBpY2tsZWQpCiAKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfbmVzdGVkX25hbWVzKHNlbGYpOgorICAgICAgICBnbG9iYWwgUmVjdXJzaXZlCisgICAgICAgIGNsYXNzIFJlY3Vyc2l2ZToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgUmVjdXJzaXZlLm1vZCA9IHN5cy5tb2R1bGVzW1JlY3Vyc2l2ZS5fX21vZHVsZV9fXQorICAgICAgICBSZWN1cnNpdmUuX19xdWFsbmFtZV9fID0gJ1JlY3Vyc2l2ZS5tb2QuUmVjdXJzaXZlJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMoUmVjdXJzaXZlLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh1bnBpY2tsZWQsIFJlY3Vyc2l2ZSkKKyAgICAgICAgZGVsIFJlY3Vyc2l2ZS5tb2QgIyBicmVhayByZWZlcmVuY2UgbG9vcAorCiAgICAgZGVmIHRlc3RfcHlfbWV0aG9kcyhzZWxmKToKICAgICAgICAgZ2xvYmFsIFB5TWV0aG9kc1Rlc3QKICAgICAgICAgY2xhc3MgUHlNZXRob2RzVGVzdDoKQEAgLTE4NTgsNyArMTkxNSw3IEBACiAgICAgICAgICAgICAoUHlNZXRob2RzVGVzdC5iaXNjdWl0cywgUHlNZXRob2RzVGVzdCksCiAgICAgICAgICAgICAoUHlNZXRob2RzVGVzdC5OZXN0ZWQucGllLCBQeU1ldGhvZHNUZXN0Lk5lc3RlZCkKICAgICAgICAgKQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3IgbWV0aG9kIGluIHB5X21ldGhvZHM6CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG1ldGhvZD1tZXRob2QpOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMobWV0aG9kLCBwcm90bykpCkBAIC0xODk4LDcgKzE5NTUsNyBAQAogICAgICAgICAgICAgKFN1YmNsYXNzLk5lc3RlZCgic3dlZXQiKS5jb3VudCwgKCJlIiwpKSwKICAgICAgICAgICAgIChTdWJjbGFzcy5OZXN0ZWQuY291bnQsIChTdWJjbGFzcy5OZXN0ZWQoInN3ZWV0IiksICJlIikpLAogICAgICAgICApCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSg0LCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciBtZXRob2QsIGFyZ3MgaW4gY19tZXRob2RzOgogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvLCBtZXRob2Q9bWV0aG9kKToKICAgICAgICAgICAgICAgICAgICAgdW5waWNrbGVkID0gc2VsZi5sb2FkcyhzZWxmLmR1bXBzKG1ldGhvZCwgcHJvdG8pKQpAQCAtMTkyMiw2ICsxOTc5LDI3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdjJXNcbiVzJyAlIChtb2QsIG5hbWUpKS5lbmNvZGUoKSwgcGlja2xlZCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHNlbGYubG9hZHMocGlja2xlZCkpLCB0eXBlKHZhbCkpCiAKKyAgICBkZWYgdGVzdF9sb2NhbF9sb29rdXBfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdoaWNobW9kdWxlKCkgZXJyb3JzIG91dCBjbGVhbmx5IHdoZW4gbG9va2luZyB1cAorICAgICAgICAjIGFuIGFzc3VtZWQgZ2xvYmFsbHktcmVhY2hhYmxlIG9iamVjdCBmYWlscy4KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBTaW5jZSB0aGUgZnVuY3Rpb24gaXMgbG9jYWwsIGxvb2t1cCB3aWxsIGZhaWwKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDAsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpKToKKyAgICAgICAgICAgICAgICBwaWNrbGV0b29scy5kaXMoc2VsZi5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICMgU2FtZSB3aXRob3V0IGEgX19tb2R1bGVfXyBhdHRyaWJ1dGUgKGV4ZXJjaXNlcyBhIGRpZmZlcmVudCBwYXRoCisgICAgICAgICMgaW4gX3BpY2tsZS5jKS4KKyAgICAgICAgZGVsIGYuX19tb2R1bGVfXworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoMCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBwaWNrbGUuUGlja2xpbmdFcnJvcikpOgorICAgICAgICAgICAgICAgIHBpY2tsZXRvb2xzLmRpcyhzZWxmLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgIyBZZXQgYSBkaWZmZXJlbnQgcGF0aC4KKyAgICAgICAgZi5fX25hbWVfXyA9IGYuX19xdWFsbmFtZV9fCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoQXR0cmlidXRlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSk6CisgICAgICAgICAgICAgICAgcGlja2xldG9vbHMuZGlzKHNlbGYuZHVtcHMoZiwgcHJvdG8pKQorCiAKIGNsYXNzIEJpZ21lbVBpY2tsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjE1NiwxMiArMjIzNCwyMCBAQAogY2xhc3MgU2xvdExpc3QoTXlMaXN0KToKICAgICBfX3Nsb3RzX18gPSBbImZvbyJdCiAKLWNsYXNzIFNpbXBsZU5ld09iaihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhLCBiLCBjKToKK2NsYXNzIFNpbXBsZU5ld09iaihpbnQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAjIHJhaXNlIGFuIGVycm9yLCB0byBtYWtlIHN1cmUgdGhpcyBpc24ndCBjYWxsZWQKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJTaW1wbGVOZXdPYmouX19pbml0X18oKSBkaWRuJ3QgZXhwZWN0IHRvIGdldCBjYWxsZWQiKQogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXworICAgICAgICByZXR1cm4gaW50KHNlbGYpID09IGludChvdGhlcikgYW5kIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18KKworY2xhc3MgQ29tcGxleE5ld09iaihTaW1wbGVOZXdPYmopOgorICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgnJVgnICUgc2VsZiwgMTYpCisKK2NsYXNzIENvbXBsZXhOZXdPYmpFeChTaW1wbGVOZXdPYmopOgorICAgIGRlZiBfX2dldG5ld2FyZ3NfZXhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgnJVgnICUgc2VsZiwpLCB7J2Jhc2UnOiAxNn0KIAogY2xhc3MgQmFkR2V0YXR0cjoKICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwga2V5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3B5c3RvbmUucHkgYi9MaWIvdGVzdC9weXN0b25lLnB5CmluZGV4IGE0MWYxZTUuLjFmNjdlNjYgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3B5c3RvbmUucHkKKysrIGIvTGliL3Rlc3QvcHlzdG9uZS5weQpAQCAtNDEsNyArNDEsNyBAQAogCiBMT09QUyA9IDUwMDAwCiAKLWZyb20gdGltZSBpbXBvcnQgY2xvY2sKK2Zyb20gdGltZSBpbXBvcnQgdGltZQogCiBfX3ZlcnNpb25fXyA9ICIxLjIiCiAKQEAgLTkzLDEwICs5MywxMCBAQAogICAgIGdsb2JhbCBQdHJHbGIKICAgICBnbG9iYWwgUHRyR2xiTmV4dAogCi0gICAgc3RhcnR0aW1lID0gY2xvY2soKQorICAgIHN0YXJ0dGltZSA9IHRpbWUoKQogICAgIGZvciBpIGluIHJhbmdlKGxvb3BzKToKICAgICAgICAgcGFzcwotICAgIG51bGx0aW1lID0gY2xvY2soKSAtIHN0YXJ0dGltZQorICAgIG51bGx0aW1lID0gdGltZSgpIC0gc3RhcnR0aW1lCiAKICAgICBQdHJHbGJOZXh0ID0gUmVjb3JkKCkKICAgICBQdHJHbGIgPSBSZWNvcmQoKQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgU3RyaW5nMUxvYyA9ICJESFJZU1RPTkUgUFJPR1JBTSwgMSdTVCBTVFJJTkciCiAgICAgQXJyYXkyR2xvYls4XVs3XSA9IDEwCiAKLSAgICBzdGFydHRpbWUgPSBjbG9jaygpCisgICAgc3RhcnR0aW1lID0gdGltZSgpCiAKICAgICBmb3IgaSBpbiByYW5nZShsb29wcyk6CiAgICAgICAgIFByb2M1KCkKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICBJbnRMb2MyID0gNyAqIChJbnRMb2MzIC0gSW50TG9jMikgLSBJbnRMb2MxCiAgICAgICAgIEludExvYzEgPSBQcm9jMihJbnRMb2MxKQogCi0gICAgYmVuY2h0aW1lID0gY2xvY2soKSAtIHN0YXJ0dGltZSAtIG51bGx0aW1lCisgICAgYmVuY2h0aW1lID0gdGltZSgpIC0gc3RhcnR0aW1lIC0gbnVsbHRpbWUKICAgICBpZiBiZW5jaHRpbWUgPT0gMC4wOgogICAgICAgICBsb29wc1BlckJlbmNodGltZSA9IDAuMAogICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZV90ZXN0cy5weSBiL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CmluZGV4IDdmODA3NWUuLjhjMTU4ZjggMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgKHInW1xhXVtcYl1bXGZdW1xuXVtccl1bXHRdW1x2XScsICdcYVxiXGZcblxyXHRcdicsIFNVQ0NFRUQsICdmb3VuZCcsICdcYVxiXGZcblxyXHRcdicpLAogICAgICMgTk9URTogbm90IGFuIGVycm9yIHVuZGVyIFBDUkUvUFJFOgogICAgIChyJ1x1JywgJycsIFNZTlRBWF9FUlJPUiksICAgICMgQSBQZXJsIGVzY2FwZQotICAgIChyJ1xjXGVcZ1xoXGlcalxrXG1cb1xwXHFceVx6JywgJ2NlZ2hpamttb3BxeXonLCBTVUNDRUVELCAnZm91bmQnLCAnY2VnaGlqa21vcHF5eicpLAorICAgICMgKHInXGNcZVxnXGhcaVxqXGtcbVxvXHBccVx5XHonLCAnY2VnaGlqa21vcHF5eicsIFNVQ0NFRUQsICdmb3VuZCcsICdjZWdoaWprbW9wcXl6JyksCiAgICAgKHInXHhmZicsICdcMzc3JywgU1VDQ0VFRCwgJ2ZvdW5kJywgY2hyKDI1NSkpLAogICAgICMgbmV3IFx4IHNlbWFudGljcwogICAgIChyJ1x4MDBmZmZmZmZmZmZmZmZmZicsICdcMzc3JywgRkFJTCwgJ2ZvdW5kJywgY2hyKDI1NSkpLApAQCAtNjA3LDggKzYwNyw4IEBACiAgICAgIyBuZXcgXHggc2VtYW50aWNzCiAgICAgKHInXHgwMGZmJywgJ1wzNzcnLCBGQUlMKSwKICAgICAjIChyJ1x4MDBmZicsICdcMzc3JywgU1VDQ0VFRCwgJ2ZvdW5kJywgY2hyKDI1NSkpLAotICAgIChyJ1x0XG5cdlxyXGZcYVxnJywgJ1x0XG5cdlxyXGZcYWcnLCBTVUNDRUVELCAnZm91bmQnLCAnXHRcblx2XHJcZlxhZycpLAotICAgICgnXHRcblx2XHJcZlxhXGcnLCAnXHRcblx2XHJcZlxhZycsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGFnJyksCisgICAgKHInXHRcblx2XHJcZlxhJywgJ1x0XG5cdlxyXGZcYScsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGEnKSwKKyAgICAoJ1x0XG5cdlxyXGZcYScsICdcdFxuXHZcclxmXGEnLCBTVUNDRUVELCAnZm91bmQnLCAnXHRcblx2XHJcZlxhJyksCiAgICAgKHInXHRcblx2XHJcZlxhJywgJ1x0XG5cdlxyXGZcYScsIFNVQ0NFRUQsICdmb3VuZCcsIGNocig5KStjaHIoMTApK2NocigxMSkrY2hyKDEzKStjaHIoMTIpK2Nocig3KSksCiAgICAgKHInW1x0XVtcbl1bXHZdW1xyXVtcZl1bXGJdJywgJ1x0XG5cdlxyXGZcYicsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGInKSwKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcmVncnRlc3QucHkgYi9MaWIvdGVzdC9yZWdydGVzdC5weQppbmRleCA2NzA4ODc2Li5iNDllNjZiIDEwMDc1NQotLS0gYS9MaWIvdGVzdC9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC9yZWdydGVzdC5weQpAQCAtNzY1LDggKzc2NSw2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBpZiBucy5maW5kbGVha3M6CiAgICAgICAgICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgICAgICAgICAgaWYgZ2MuZ2FyYmFnZToKQEAgLTEyNzUsNiArMTI3MywxMCBAQAogICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bm5lcigpOgogICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKICAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQorICAgICAgICAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVycm9yLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIGlmIGxvYWRlci5lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9ycyB3aGlsZSBsb2FkaW5nIHRlc3RzIikKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCiAgICAgICAgICAgICB0ZXN0X3J1bm5lcigpCiAgICAgICAgICAgICBpZiBodW50cmxlYWtzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3NsX3NlcnZlcnMucHkgYi9MaWIvdGVzdC9zc2xfc2VydmVycy5weQppbmRleCA3NTliM2Y0Li5mOWQzMGNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zc2xfc2VydmVycy5weQorKysgYi9MaWIvdGVzdC9zc2xfc2VydmVycy5weQpAQCAtMTUwLDcgKzE1MCw3IEBACiBkZWYgbWFrZV9odHRwc19zZXJ2ZXIoY2FzZSwgKiwgY29udGV4dD1Ob25lLCBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICBob3N0PUhPU1QsIGhhbmRsZXJfY2xhc3M9Tm9uZSk6CiAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICMgV2UgYXNzdW1lIHRoZSBjZXJ0ZmlsZSBjb250YWlucyBib3RoIHByaXZhdGUga2V5IGFuZCBjZXJ0aWZpY2F0ZQogICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlKQogICAgIHNlcnZlciA9IEhUVFBTU2VydmVyVGhyZWFkKGNvbnRleHQsIGhvc3QsIGhhbmRsZXJfY2xhc3MpCkBAIC0xODIsNiArMTgyLDggQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWN1cnZlLW5hbWUnLCBkZXN0PSdjdXJ2ZV9uYW1lJywgdHlwZT1zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2N1cnZlIG5hbWUgZm9yIEVDLWJhc2VkIERpZmZpZS1IZWxsbWFuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNpcGhlcnMnLCBkZXN0PSdjaXBoZXJzJywgdHlwZT1zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhbGxvd2VkIGNpcGhlciBsaXN0JykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRoJywgZGVzdD0nZGhfZmlsZScsIHR5cGU9c3RyLCBhY3Rpb249J3N0b3JlJywKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1BFTSBmaWxlIGNvbnRhaW5pbmcgREggcGFyYW1ldGVycycpCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKQEAgLTE5MiwxMiArMTk0LDE0IEBACiAgICAgZWxzZToKICAgICAgICAgaGFuZGxlcl9jbGFzcyA9IFJvb3RlZEhUVFBSZXF1ZXN0SGFuZGxlcgogICAgICAgICBoYW5kbGVyX2NsYXNzLnJvb3QgPSBvcy5nZXRjd2QoKQotICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQogICAgIGlmIGFyZ3MuY3VydmVfbmFtZToKICAgICAgICAgY29udGV4dC5zZXRfZWNkaF9jdXJ2ZShhcmdzLmN1cnZlX25hbWUpCiAgICAgaWYgYXJncy5kaF9maWxlOgogICAgICAgICBjb250ZXh0LmxvYWRfZGhfcGFyYW1zKGFyZ3MuZGhfZmlsZSkKKyAgICBpZiBhcmdzLmNpcGhlcnM6CisgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoYXJncy5jaXBoZXJzKQogCiAgICAgc2VydmVyID0gSFRUUFNTZXJ2ZXIoKCIiLCBhcmdzLnBvcnQpLCBoYW5kbGVyX2NsYXNzLCBjb250ZXh0KQogICAgIGlmIGFyZ3MudmVyYm9zZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weSBiL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQppbmRleCAyNDJhOTMxLi5lMDg2OTk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKKysrIGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CkBAIC05NzYsNiArOTc2LDkgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsb3dvcmxkJywgJ3N0YXJ0c3dpdGgnLCAnbG93bycsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnaGVsbG93b3JsZCcsICdzdGFydHN3aXRoJywgJ2xvd28nLCAzLCA3KQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICdoZWxsb3dvcmxkJywgJ3N0YXJ0c3dpdGgnLCAnbG93bycsIDMsIDYpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnJywgJ3N0YXJ0c3dpdGgnLCAnJywgMCwgMSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnc3RhcnRzd2l0aCcsICcnLCAwLCAwKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICcnLCAnc3RhcnRzd2l0aCcsICcnLCAxLCAwKQogCiAgICAgICAgICMgdGVzdCBuZWdhdGl2ZSBpbmRpY2VzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnaGVsbG8nLCAnc3RhcnRzd2l0aCcsICdoZScsIDAsIC0xKQpAQCAtMTAyMiw2ICsxMDI1LDkgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnaGVsbG93b3JsZCcsICdlbmRzd2l0aCcsICdsb3dvJywgMywgOCkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnYWInLCAnZW5kc3dpdGgnLCAnYWInLCAwLCAxKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICdhYicsICdlbmRzd2l0aCcsICdhYicsIDAsIDApCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnJywgJ2VuZHN3aXRoJywgJycsIDAsIDEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnJywgJ2VuZHN3aXRoJywgJycsIDAsIDApCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJycsICdlbmRzd2l0aCcsICcnLCAxLCAwKQogCiAgICAgICAgICMgdGVzdCBuZWdhdGl2ZSBpbmRpY2VzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChUcnVlLCAnaGVsbG8nLCAnZW5kc3dpdGgnLCAnbG8nLCAtMikKQEAgLTExNzYsOCArMTE4Miw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnYWJjJywgJ19fbW9kX18nKQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyUoZm9vKXMnLCAnX19tb2RfXycsIDQyKQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyVzJXMnLCAnX19tb2RfXycsICg0MiwpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJWMnLCAnX19tb2RfXycsIChOb25lLCkpCisgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJWMnLCAnX19tb2RfXycsIChOb25lLCkpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUoZm9vJywgJ19fbW9kX18nLCB7fSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclKGZvbylzICUoYmFyKXMnLCAnX19tb2RfXycsICgnZm9vJywgNDIpKQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyVkJywgJ19fbW9kX18nLCAiNDIiKSAjIG5vdCBudW1lcmljCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQppbmRleCAwMWNhMmY4Li44YjE4MGI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKQEAgLTg4LDcgKzg4LDcgQEAKICAgICAic2tpcF91bmxlc3Nfc3ltbGluayIsICJyZXF1aXJlc19nemlwIiwgInJlcXVpcmVzX2J6MiIsICJyZXF1aXJlc19sem1hIiwKICAgICAiYmlnbWVtdGVzdCIsICJiaWdhZGRyc3BhY2V0ZXN0IiwgImNweXRob25fb25seSIsICJnZXRfYXR0cmlidXRlIiwKICAgICAicmVxdWlyZXNfSUVFRV83NTQiLCAic2tpcF91bmxlc3NfeGF0dHIiLCAicmVxdWlyZXNfemxpYiIsCi0gICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLAorICAgICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAibG9hZF9wYWNrYWdlX3Rlc3RzIiwgImRldGVjdF9hcGlfbWlzbWF0Y2giLAogICAgICMgc3lzCiAgICAgImlzX2p5dGhvbiIsICJjaGVja19pbXBsX2RldGFpbCIsCiAgICAgIyBuZXR3b3JrCkBAIC0zNzYsMzYgKzM3NiwzMiBAQAogICAgICAgICBwYXNzCiAKIGRlZiBtYWtlX2xlZ2FjeV9weWMoc291cmNlKToKLSAgICAiIiJNb3ZlIGEgUEVQIDMxNDcgcHljL3B5byBmaWxlIHRvIGl0cyBsZWdhY3kgcHljL3B5byBsb2NhdGlvbi4KLQotICAgIFRoZSBjaG9pY2Ugb2YgLnB5YyBvciAucHlvIGV4dGVuc2lvbiBpcyBkb25lIGJhc2VkIG9uIHRoZSBfX2RlYnVnX18gZmxhZwotICAgIHZhbHVlLgorICAgICIiIk1vdmUgYSBQRVAgMzE0Ny80ODggcHljIGZpbGUgdG8gaXRzIGxlZ2FjeSBweWMgbG9jYXRpb24uCiAKICAgICA6cGFyYW0gc291cmNlOiBUaGUgZmlsZSBzeXN0ZW0gcGF0aCB0byB0aGUgc291cmNlIGZpbGUuICBUaGUgc291cmNlIGZpbGUKLSAgICAgICAgZG9lcyBub3QgbmVlZCB0byBleGlzdCwgaG93ZXZlciB0aGUgUEVQIDMxNDcgcHljIGZpbGUgbXVzdCBleGlzdC4KKyAgICAgICAgZG9lcyBub3QgbmVlZCB0byBleGlzdCwgaG93ZXZlciB0aGUgUEVQIDMxNDcvNDg4IHB5YyBmaWxlIG11c3QgZXhpc3QuCiAgICAgOnJldHVybjogVGhlIGZpbGUgc3lzdGVtIHBhdGggdG8gdGhlIGxlZ2FjeSBweWMgZmlsZS4KICAgICAiIiIKICAgICBweWNfZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSkKICAgICB1cF9vbmUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHNvdXJjZSkpCi0gICAgbGVnYWN5X3B5YyA9IG9zLnBhdGguam9pbih1cF9vbmUsIHNvdXJjZSArICgnYycgaWYgX19kZWJ1Z19fIGVsc2UgJ28nKSkKKyAgICBsZWdhY3lfcHljID0gb3MucGF0aC5qb2luKHVwX29uZSwgc291cmNlICsgJ2MnKQogICAgIG9zLnJlbmFtZShweWNfZmlsZSwgbGVnYWN5X3B5YykKICAgICByZXR1cm4gbGVnYWN5X3B5YwogCiBkZWYgZm9yZ2V0KG1vZG5hbWUpOgogICAgICIiIidGb3JnZXQnIGEgbW9kdWxlIHdhcyBldmVyIGltcG9ydGVkLgogCi0gICAgVGhpcyByZW1vdmVzIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyBhbmQgZGVsZXRlcyBhbnkgUEVQIDMxNDcgb3IKLSAgICBsZWdhY3kgLnB5YyBhbmQgLnB5byBmaWxlcy4KKyAgICBUaGlzIHJlbW92ZXMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIGFuZCBkZWxldGVzIGFueSBQRVAgMzE0Ny80ODggb3IKKyAgICBsZWdhY3kgLnB5YyBmaWxlcy4KICAgICAiIiIKICAgICB1bmxvYWQobW9kbmFtZSkKICAgICBmb3IgZGlybmFtZSBpbiBzeXMucGF0aDoKICAgICAgICAgc291cmNlID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIG1vZG5hbWUgKyAnLnB5JykKICAgICAgICAgIyBJdCBkb2Vzbid0IG1hdHRlciBpZiB0aGV5IGV4aXN0IG9yIG5vdCwgdW5saW5rIGFsbCBwb3NzaWJsZQotICAgICAgICAjIGNvbWJpbmF0aW9ucyBvZiBQRVAgMzE0NyBhbmQgbGVnYWN5IHB5YyBhbmQgcHlvIGZpbGVzLgorICAgICAgICAjIGNvbWJpbmF0aW9ucyBvZiBQRVAgMzE0Ny80ODggYW5kIGxlZ2FjeSBweWMgZmlsZXMuCiAgICAgICAgIHVubGluayhzb3VyY2UgKyAnYycpCi0gICAgICAgIHVubGluayhzb3VyY2UgKyAnbycpCi0gICAgICAgIHVubGluayhpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UsIGRlYnVnX292ZXJyaWRlPVRydWUpKQotICAgICAgICB1bmxpbmsoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlLCBkZWJ1Z19vdmVycmlkZT1GYWxzZSkpCisgICAgICAgIGZvciBvcHQgaW4gKCcnLCAxLCAyKToKKyAgICAgICAgICAgIHVubGluayhpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UsIG9wdGltaXphdGlvbj1vcHQpKQogCiAjIENoZWNrIHdoZXRoZXIgYSBndWkgaXMgYWN0dWFsbHkgYXZhaWxhYmxlCiBkZWYgX2lzX2d1aV9hdmFpbGFibGUoKToKQEAgLTEwNDIsNyArMTAzOCw4IEBACiAgICAgIyBWZXJpZnkgdGhlIHJlcXVpcmVtZW50IGJlZm9yZSBkb3dubG9hZGluZyB0aGUgZmlsZQogICAgIHJlcXVpcmVzKCd1cmxmZXRjaCcpCiAKLSAgICBwcmludCgnXHRmZXRjaGluZyAlcyAuLi4nICUgdXJsLCBmaWxlPWdldF9vcmlnaW5hbF9zdGRvdXQoKSkKKyAgICBpZiB2ZXJib3NlOgorICAgICAgICBwcmludCgnXHRmZXRjaGluZyAlcyAuLi4nICUgdXJsLCBmaWxlPWdldF9vcmlnaW5hbF9zdGRvdXQoKSkKICAgICBvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoKQogICAgIGlmIGd6aXA6CiAgICAgICAgIG9wZW5lci5hZGRoZWFkZXJzLmFwcGVuZCgoJ0FjY2VwdC1FbmNvZGluZycsICdnemlwJykpCkBAIC0yMTg3LDYgKzIxODQsMjEgQEAKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAKK2RlZiBkZXRlY3RfYXBpX21pc21hdGNoKHJlZl9hcGksIG90aGVyX2FwaSwgKiwgaWdub3JlPSgpKToKKyAgICAiIiJSZXR1cm5zIHRoZSBzZXQgb2YgaXRlbXMgaW4gcmVmX2FwaSBub3QgaW4gb3RoZXJfYXBpLCBleGNlcHQgZm9yIGEKKyAgICBkZWZpbmVkIGxpc3Qgb2YgaXRlbXMgdG8gYmUgaWdub3JlZCBpbiB0aGlzIGNoZWNrLgorCisgICAgQnkgZGVmYXVsdCB0aGlzIHNraXBzIHByaXZhdGUgYXR0cmlidXRlcyBiZWdpbm5pbmcgd2l0aCAnXycgYnV0CisgICAgaW5jbHVkZXMgYWxsIG1hZ2ljIG1ldGhvZHMsIGkuZS4gdGhvc2Ugc3RhcnRpbmcgYW5kIGVuZGluZyBpbiAnX18nLgorICAgICIiIgorICAgIG1pc3NpbmdfaXRlbXMgPSBzZXQoZGlyKHJlZl9hcGkpKSAtIHNldChkaXIob3RoZXJfYXBpKSkKKyAgICBpZiBpZ25vcmU6CisgICAgICAgIG1pc3NpbmdfaXRlbXMgLT0gc2V0KGlnbm9yZSkKKyAgICBtaXNzaW5nX2l0ZW1zID0gc2V0KG0gZm9yIG0gaW4gbWlzc2luZ19pdGVtcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG0uc3RhcnRzd2l0aCgnXycpIG9yIG0uZW5kc3dpdGgoJ19fJykpCisgICAgcmV0dXJuIG1pc3NpbmdfaXRlbXMKKworCiBjbGFzcyBTdXBwcmVzc0NyYXNoUmVwb3J0OgogICAgICIiIlRyeSB0byBwcmV2ZW50IGEgY3Jhc2ggcmVwb3J0IGZyb20gcG9wcGluZyB1cC4KIApAQCAtMjE5NCw2ICsyMjA2LDcgQEAKICAgICBkaXNhYmxlIHRoZSBjcmVhdGlvbiBvZiBjb3JlZHVtcCBmaWxlLgogICAgICIiIgogICAgIG9sZF92YWx1ZSA9IE5vbmUKKyAgICBvbGRfbW9kZXMgPSBOb25lCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICAiIiJPbiBXaW5kb3dzLCBkaXNhYmxlIFdpbmRvd3MgRXJyb3IgUmVwb3J0aW5nIGRpYWxvZ3MgdXNpbmcKQEAgLTIyMTEsNiArMjIyNCwyNiBAQAogICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YID0gMHgwMgogICAgICAgICAgICAgc2VsZi5vbGRfdmFsdWUgPSBzZWxmLl9rMzIuU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCkKICAgICAgICAgICAgIHNlbGYuX2szMi5TZXRFcnJvck1vZGUoc2VsZi5vbGRfdmFsdWUgfCBTRU1fTk9HUEZBVUxURVJST1JCT1gpCisKKyAgICAgICAgICAgICMgU3VwcHJlc3MgYXNzZXJ0IGRpYWxvZ3MgaW4gZGVidWcgYnVpbGRzCisgICAgICAgICAgICAjIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMzE0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICMgbm8gbXN2Y3J0IG9yIGEgcmVsZWFzZSBidWlsZAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vbGRfbW9kZXMgPSB7fQorICAgICAgICAgICAgICAgIGZvciByZXBvcnRfdHlwZSBpbiBbbXN2Y3J0LkNSVF9XQVJOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNSVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICAgICAgb2xkX21vZGUgPSBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShyZXBvcnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUREJHX01PREVfRklMRSkKKyAgICAgICAgICAgICAgICAgICAgb2xkX2ZpbGUgPSBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShyZXBvcnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQorICAgICAgICAgICAgICAgICAgICBzZWxmLm9sZF9tb2Rlc1tyZXBvcnRfdHlwZV0gPSBvbGRfbW9kZSwgb2xkX2ZpbGUKKwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMjI0Miw2ICsyMjc1LDEyIEBACiAKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgogICAgICAgICAgICAgc2VsZi5fazMyLlNldEVycm9yTW9kZShzZWxmLm9sZF92YWx1ZSkKKworICAgICAgICAgICAgaWYgc2VsZi5vbGRfbW9kZXM6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIGZvciByZXBvcnRfdHlwZSwgKG9sZF9tb2RlLCBvbGRfZmlsZSkgaW4gc2VsZi5vbGRfbW9kZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUocmVwb3J0X3R5cGUsIG9sZF9tb2RlKQorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShyZXBvcnRfdHlwZSwgb2xkX2ZpbGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiByZXNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIExpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3N1cHBvcnQvc2NyaXB0X2hlbHBlci5weQppbmRleCBiMjkzOTJmLi41ODRiMGU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQvc2NyaXB0X2hlbHBlci5weQpAQCAtMTQsMTMgKzE0LDEzIEBACiBpbXBvcnQgemlwZmlsZQogCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBzb3VyY2VfZnJvbV9jYWNoZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5Yywgc3RyaXBfcHl0aG9uX3N0ZGVyciwgdGVtcF9kaXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBtYWtlX2xlZ2FjeV9weWMsIHN0cmlwX3B5dGhvbl9zdGRlcnIKIAogCiAjIENhY2hlZCByZXN1bHQgb2YgdGhlIGV4cGVuc2l2ZSB0ZXN0IHBlcmZvcm1lZCBpbiB0aGUgZnVuY3Rpb24gYmVsb3cuCiBfX2NhY2hlZF9pbnRlcnBfcmVxdWlyZXNfZW52aXJvbm1lbnQgPSBOb25lCiAKLWRlZiBfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKToKK2RlZiBpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBvdXIgc3lzLmV4ZWN1dGFibGUgaW50ZXJwcmV0ZXIgcmVxdWlyZXMgZW52aXJvbm1lbnQKICAgICB2YXJpYWJsZXMgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBydW4gYXQgYWxsLgpAQCAtNTcsNyArNTcsNyBAQAogCiAjIEV4ZWN1dGluZyB0aGUgaW50ZXJwcmV0ZXIgaW4gYSBzdWJwcm9jZXNzCiBkZWYgcnVuX3B5dGhvbl91bnRpbF9lbmQoKmFyZ3MsICoqZW52X3ZhcnMpOgotICAgIGVudl9yZXF1aXJlZCA9IF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCisgICAgZW52X3JlcXVpcmVkID0gaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQogICAgIGlmICdfX2lzb2xhdGVkJyBpbiBlbnZfdmFyczoKICAgICAgICAgaXNvbGF0ZWQgPSBlbnZfdmFycy5wb3AoJ19faXNvbGF0ZWQnKQogICAgIGVsc2U6CkBAIC05NSwxMCArOTUsMzAgQEAKIGRlZiBfYXNzZXJ0X3B5dGhvbihleHBlY3RlZF9zdWNjZXNzLCAqYXJncywgKiplbnZfdmFycyk6CiAgICAgcmVzLCBjbWRfbGluZSA9IHJ1bl9weXRob25fdW50aWxfZW5kKCphcmdzLCAqKmVudl92YXJzKQogICAgIGlmIChyZXMucmMgYW5kIGV4cGVjdGVkX3N1Y2Nlc3MpIG9yIChub3QgcmVzLnJjIGFuZCBub3QgZXhwZWN0ZWRfc3VjY2Vzcyk6Ci0gICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAotICAgICAgICAgICAgIlByb2Nlc3MgcmV0dXJuIGNvZGUgaXMgJWQsIGNvbW1hbmQgbGluZSB3YXM6ICVyLCAiCi0gICAgICAgICAgICAic3RkZXJyIGZvbGxvd3M6XG4lcyIgJSAocmVzLnJjLCBjbWRfbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZXJyLmRlY29kZSgnYXNjaWknLCAnaWdub3JlJykpKQorICAgICAgICAjIExpbWl0IHRvIDgwIGxpbmVzIHRvIEFTQ0lJIGNoYXJhY3RlcnMKKyAgICAgICAgbWF4bGVuID0gODAgKiAxMDAKKyAgICAgICAgb3V0LCBlcnIgPSByZXMub3V0LCByZXMuZXJyCisgICAgICAgIGlmIGxlbihvdXQpID4gbWF4bGVuOgorICAgICAgICAgICAgb3V0ID0gYicoLi4uIHRydW5jYXRlZCBzdGRvdXQgLi4uKScgKyBvdXRbLW1heGxlbjpdCisgICAgICAgIGlmIGxlbihlcnIpID4gbWF4bGVuOgorICAgICAgICAgICAgZXJyID0gYicoLi4uIHRydW5jYXRlZCBzdGRlcnIgLi4uKScgKyBlcnJbLW1heGxlbjpdCisgICAgICAgIG91dCA9IG91dC5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKS5yc3RyaXAoKQorICAgICAgICBlcnIgPSBlcnIuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykucnN0cmlwKCkKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlByb2Nlc3MgcmV0dXJuIGNvZGUgaXMgJWRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQgbGluZTogJXJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Rkb3V0OlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZGVycjpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tLSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocmVzLnJjLCBjbWRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIpKQogICAgIHJldHVybiByZXMKIAogZGVmIGFzc2VydF9weXRob25fb2soKmFyZ3MsICoqZW52X3ZhcnMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fX2Z1dHVyZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9fX2Z1dHVyZV9fLnB5CmluZGV4IDZmNzNjN2YuLjU1OWExODcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX19mdXR1cmVfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IF9fZnV0dXJlX18KIAogR09PRF9TRVJJQUxTID0gKCJhbHBoYSIsICJiZXRhIiwgImNhbmRpZGF0ZSIsICJmaW5hbCIpCkBAIC01OCw4ICs1Nyw1IEBACiAgICAgICAgICAgICAgICAgICAgIi5jb21waWxlcl9mbGFnIGlzbid0IGludCIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZ1dHVyZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX29wY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfX29wY29kZS5weQppbmRleCAwMTUyZTlkLi4xMDc1ZGVjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19vcGNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IGRpcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIGltcG9ydCB1bml0dGVzdAogCiBfb3Bjb2RlID0gaW1wb3J0X21vZHVsZSgiX29wY29kZSIpCkBAIC0xNiw4ICsxNiw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9vcGNvZGUuc3RhY2tfZWZmZWN0LCBkaXMub3BtYXBbJ0JVSUxEX1NMSUNFJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9vcGNvZGUuc3RhY2tfZWZmZWN0LCBkaXMub3BtYXBbJ1BPUF9UT1AnXSwgMCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChPcGNvZGVUZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQppbmRleCA1ZGNhZGY3Li5hYzYzMjVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpAQCAtMjczLDkgKzI3Myw1IEBACiAgICAgICAgIHJlc3VsdCA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KGNvbmZpZ192YXJzLCAnICcsICcgJywgJyAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbWFjb3N4JywgJzEwLjYnLCAnZmF0JyksIHJlc3VsdCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0X09TWFN1cHBvcnQpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IGVjYzU1MDcuLjI3YmZhZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtMjAsMTUgKzIwLDYgQEAKIAogY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIGFzc2VydEVxdWFsKHNlbGYsIG9iajEsIG9iajIpOgotICAgICAgICBpZiBvYmoxICE9IG9iajI6Ci0gICAgICAgICAgICBwcmludCgnJykKLSAgICAgICAgICAgIHByaW50KHJlcHIob2JqMSkpCi0gICAgICAgICAgICBwcmludChyZXByKG9iajIpKQotICAgICAgICAgICAgcHJpbnQob2JqMSkKLSAgICAgICAgICAgIHByaW50KG9iajIpCi0gICAgICAgIHN1cGVyKFRlc3RDYXNlLCBzZWxmKS5hc3NlcnRFcXVhbChvYmoxLCBvYmoyKQotCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICAjIFRoZSB0ZXN0cyBhc3N1bWUgdGhhdCBsaW5lIHdyYXBwaW5nIG9jY3VycyBhdCA4MCBjb2x1bW5zLCBidXQgdGhpcwogICAgICAgICAjIGJlaGF2aW91ciBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBDT0xVTU5TIGVudmlyb25tZW50CkBAIC03OCw5ICs2OSw2IEBACiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiB2YXJzKHNlbGYpID09IHZhcnMob3RoZXIpCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIG5vdCAoc2VsZiA9PSBvdGhlcikKLQogCiBjbGFzcyBBcmd1bWVudFBhcnNlckVycm9yKEV4Y2VwdGlvbik6CiAKQEAgLTc2NSw2ICs3NTMsMzkgQEAKICAgICBdCiAKIAorY2xhc3MgVGVzdE9wdGlvbmFsc0FsbG93TG9uZ0FiYnJldmlhdGlvbihQYXJzZXJUZXN0Q2FzZSk6CisgICAgIiIiQWxsb3cgbG9uZyBvcHRpb25zIHRvIGJlIGFiYnJldmlhdGVkIHVuYW1iaWd1b3VzbHkiIiIKKworICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLS1mb28nKSwKKyAgICAgICAgU2lnKCctLWZvb2JheicpLAorICAgICAgICBTaWcoJy0tZm9vYmxlJywgYWN0aW9uPSdzdG9yZV90cnVlJyksCisgICAgXQorICAgIGZhaWx1cmVzID0gWyctLWZvb2IgNScsICctLWZvb2InXQorICAgIHN1Y2Nlc3NlcyA9IFsKKyAgICAgICAgKCcnLCBOUyhmb289Tm9uZSwgZm9vYmF6PU5vbmUsIGZvb2JsZT1GYWxzZSkpLAorICAgICAgICAoJy0tZm9vIDcnLCBOUyhmb289JzcnLCBmb29iYXo9Tm9uZSwgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb29iYSBhJywgTlMoZm9vPU5vbmUsIGZvb2Jhej0nYScsIGZvb2JsZT1GYWxzZSkpLAorICAgICAgICAoJy0tZm9vYmwgLS1mb28gZycsIE5TKGZvbz0nZycsIGZvb2Jhej1Ob25lLCBmb29ibGU9VHJ1ZSkpLAorICAgIF0KKworCitjbGFzcyBUZXN0T3B0aW9uYWxzRGlzYWxsb3dMb25nQWJicmV2aWF0aW9uKFBhcnNlclRlc3RDYXNlKToKKyAgICAiIiJEbyBub3QgYWxsb3cgYWJicmV2aWF0aW9ucyBvZiBsb25nIG9wdGlvbnMgYXQgYWxsIiIiCisKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKGFsbG93X2FiYnJldj1GYWxzZSkKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy0tZm9vJyksCisgICAgICAgIFNpZygnLS1mb29kbGUnLCBhY3Rpb249J3N0b3JlX3RydWUnKSwKKyAgICAgICAgU2lnKCctLWZvb25seScpLAorICAgIF0KKyAgICBmYWlsdXJlcyA9IFsnLWZvb24gMycsICctLWZvb24gMycsICctLWZvb2QnLCAnLS1mb29kIC0tZm9vIDInXQorICAgIHN1Y2Nlc3NlcyA9IFsKKyAgICAgICAgKCcnLCBOUyhmb289Tm9uZSwgZm9vZGxlPUZhbHNlLCBmb29ubHk9Tm9uZSkpLAorICAgICAgICAoJy0tZm9vIDMnLCBOUyhmb289JzMnLCBmb29kbGU9RmFsc2UsIGZvb25seT1Ob25lKSksCisgICAgICAgICgnLS1mb29ubHkgNyAtLWZvb2RsZSAtLWZvbyAyJywgTlMoZm9vPScyJywgZm9vZGxlPVRydWUsIGZvb25seT0nNycpKSwKKyAgICBdCisKICMgPT09PT09PT09PT09PT09PQogIyBQb3NpdGlvbmFsIHRlc3RzCiAjID09PT09PT09PT09PT09PT0KQEAgLTE5OTMsMTQgKzIwMTQsOSBAQAogICAgICAgICAgICAgJycnKSkKIAogICAgIGRlZiBfdGVzdF9zdWJwYXJzZXJfaGVscChzZWxmLCBhcmdzX3N0ciwgZXhwZWN0ZWRfaGVscCk6Ci0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYucGFyc2VyLnBhcnNlX2FyZ3MoYXJnc19zdHIuc3BsaXQoKSkKLSAgICAgICAgZXhjZXB0IEFyZ3VtZW50UGFyc2VyRXJyb3I6Ci0gICAgICAgICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgaWYgZXJyLnN0ZG91dCAhPSBleHBlY3RlZF9oZWxwOgotICAgICAgICAgICAgICAgIHByaW50KHJlcHIoZXhwZWN0ZWRfaGVscCkpCi0gICAgICAgICAgICAgICAgcHJpbnQocmVwcihlcnIuc3Rkb3V0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnN0ZG91dCwgZXhwZWN0ZWRfaGVscCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9oZWxwLCBjbS5leGNlcHRpb24uc3Rkb3V0KQogCiAgICAgZGVmIHRlc3Rfc3VicGFyc2VyMV9oZWxwKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3N1YnBhcnNlcl9oZWxwKCc1LjAgMSAtaCcsIHRleHR3cmFwLmRlZGVudCgnJydcCkBAIC0yODQ2LDE1ICsyODYyLDE1IEBACiAKICAgICBkZWYgdGVzdF9nZXRfZGVmYXVsdChzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHBhcnNlci5nZXRfZGVmYXVsdCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcGFyc2VyLmdldF9kZWZhdWx0KCJiYXIiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmdldF9kZWZhdWx0KCJiYXIiKSkKIAogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tYmFyIiwgdHlwZT1pbnQsIGRlZmF1bHQ9NDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiwgcGFyc2VyLmdldF9kZWZhdWx0KCJiYXIiKSkKIAogICAgICAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGZvbz0iYmFkZ2VyIikKQEAgLTI4NjksMTggKzI4ODUsMTYgQEAKIAogICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgogICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIG5vdCBpbiBucywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneCcgaW4gbnMsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneCcsIG5zKQogCiAgICAgZGVmIHRlc3Rfbm9uX2VtcHR5KHNlbGYpOgogICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh4PTEsIHk9MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneCcgaW4gbnMsIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3gnIG5vdCBpbiBucywgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3knIGluIG5zLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGluIG5zLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneHgnIGluIG5zLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneicgaW4gbnMsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigneCcsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEluKCd5JywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3h4JywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3onLCBucykKIAogIyA9PT09PT09PT09PT09PT09PT09PT0KICMgSGVscCBmb3JtYXR0aW5nIHRlc3RzCkBAIC0yOTM2LDEzICsyOTUwLDYgQEAKICAgICAgICAgICAgIGRlZiBfdGVzdChzZWxmLCB0ZXN0ZXIsIHBhcnNlcl90ZXh0KToKICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gZ2V0YXR0cih0ZXN0ZXIsIHNlbGYuZnVuY19zdWZmaXgpCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IHRleHR3cmFwLmRlZGVudChleHBlY3RlZF90ZXh0KQotICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX3RleHQgIT0gcGFyc2VyX3RleHQ6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHJlcHIoZXhwZWN0ZWRfdGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KHJlcHIocGFyc2VyX3RleHQpKQotICAgICAgICAgICAgICAgICAgICBmb3IgY2hhcjEsIGNoYXIyIGluIHppcChleHBlY3RlZF90ZXh0LCBwYXJzZXJfdGV4dCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyMSAhPSBjaGFyMjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlyc3QgZGlmZjogJXIgJXInICUgKGNoYXIxLCBjaGFyMikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICB0ZXN0ZXIuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcGFyc2VyX3RleHQpCiAKICAgICAgICAgICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmLCB0ZXN0ZXIpOgpAQCAtNDIyMSwyNCArNDIyOCwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydFZhbHVlRXJyb3IoJ2ZvbycsIGFjdGlvbj0nYmF6JykKICAgICAgICAgc2VsZi5hc3NlcnRWYWx1ZUVycm9yKCctLWZvbycsIGFjdGlvbj0oJ3N0b3JlJywgJ2FwcGVuZCcpKQogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZm9vIiwgYWN0aW9uPSJzdG9yZS10cnVlIikKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAgICAgIGV4cGVjdGVkID0gJ3Vua25vd24gYWN0aW9uJwotICAgICAgICAgICAgbXNnID0gJ2V4cGVjdGVkICVyLCBmb3VuZCAlcicgJSAoZXhwZWN0ZWQsIGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0ZWQgaW4gc3RyKGUpLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Vua25vd24gYWN0aW9uJywgc3RyKGNtLmV4Y2VwdGlvbikpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9kZXN0KHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoZGVzdD0nZm9vJykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnYmFyJywgZGVzdD0nYmF6JykKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAgICAgIGV4cGVjdGVkID0gJ2Rlc3Qgc3VwcGxpZWQgdHdpY2UgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQnCi0gICAgICAgICAgICBtc2cgPSAnZXhwZWN0ZWQgJXIsIGZvdW5kICVyJyAlIChleHBlY3RlZCwgZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZCBpbiBzdHIoZSksIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZGVzdCBzdXBwbGllZCB0d2ljZSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbikpCiAKICAgICBkZWYgdGVzdF9ub19hcmd1bWVudF9hY3Rpb25zKHNlbGYpOgogICAgICAgICBmb3IgYWN0aW9uIGluIFsnc3RvcmVfY29uc3QnLCAnc3RvcmVfdHJ1ZScsICdzdG9yZV9mYWxzZScsCkBAIC00Mzk1LDE4ICs0Mzk1LDEwIEBACiBjbGFzcyBUZXN0T3B0aW9uYWxzSGVscFZlcnNpb25BY3Rpb25zKFRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBoZWxwIGFuZCB2ZXJzaW9uIGFjdGlvbnMiIiIKIAotICAgIGRlZiBfZ2V0X2Vycm9yKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgQXJndW1lbnRQYXJzZXJFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvciwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKQotCiAgICAgZGVmIGFzc2VydFByaW50SGVscEV4aXQoc2VsZiwgcGFyc2VyLCBhcmdzX3N0cik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBwYXJzZXIuZm9ybWF0X2hlbHAoKSwKLSAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3Rkb3V0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoYXJnc19zdHIuc3BsaXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuZm9ybWF0X2hlbHAoKSwgY20uZXhjZXB0aW9uLnN0ZG91dCkKIAogICAgIGRlZiBhc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHNlbGYsIHBhcnNlciwgKmFyZ3MpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yLCBwYXJzZXIucGFyc2VfYXJncywgYXJncykKQEAgLTQ0MjEsOCArNDQxMyw5IEBACiAgICAgZGVmIHRlc3RfdmVyc2lvbl9mb3JtYXQoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BQUCcpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JyUocHJvZylzIDMuNScpCi0gICAgICAgIG1zZyA9IHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgWyctdiddKS5zdGRvdXQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUFBQIDMuNVxuJywgbXNnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWyctdiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBjbS5leGNlcHRpb24uc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ub19oZWxwKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSkKQEAgLTQ0MzQsOCArNDQyNyw5IEBACiAgICAgZGVmIHRlc3RfdmVyc2lvbl9hY3Rpb24oc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1hYWCcpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1WJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy43JykKLSAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy1WJ10pLnN0ZG91dAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYWFggMy43XG4nLCBtc2cpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJy1WJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hYWCAzLjdcbicsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9ub19oZWxwKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSkKQEAgLTQ2MDUsMTQgKzQ1OTksMTAgQEAKIAogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgYWRkX2hlbHA9RmFsc2UpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3gnLCB0eXBlPXNwYW0pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnWFhYJ10pCi0gICAgICAgIGV4Y2VwdCBBcmd1bWVudFBhcnNlckVycm9yOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSAndXNhZ2U6IFBST0cgeFxuUFJPRzogZXJyb3I6IGFyZ3VtZW50IHg6IHNwYW0hXG4nCi0gICAgICAgICAgICBtc2cgPSBzeXMuZXhjX2luZm8oKVsxXS5zdGRlcnIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIG1zZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3VzYWdlOiBQUk9HIHhcblBST0c6IGVycm9yOiBhcmd1bWVudCB4OiBzcGFtIVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbS5leGNlcHRpb24uc3RkZXJyKQogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT0KICMgTWVzc2FnZUNvbnRlbnRFcnJvciB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKaW5kZXggMDdjOWJmOS4uMTBkOTk0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CkBAIC0zOTQsNyArMzk0LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCiAgICAgZGVmIHRlc3RfdG9mcm9tc3RyaW5nKHNlbGYpOgotICAgICAgICBuYl93YXJuaW5ncyA9IDQKKyAgICAgICAgIyBXYXJuaW5ncyBub3QgcmFpc2VkIHdoZW4gYXJndW1lbnRzIGFyZSBpbmNvcnJlY3QgYXMgQXJndW1lbnQgQ2xpbmljCisgICAgICAgICMgaGFuZGxlcyB0aGF0IGJlZm9yZSB0aGUgd2FybmluZyBjYW4gYmUgcmFpc2VkLgorICAgICAgICBuYl93YXJuaW5ncyA9IDIKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgcjoKICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1yIih0b3xmcm9tKXN0cmluZ1woXCkgaXMgZGVwcmVjYXRlZCIsCkBAIC0xMDM5LDYgKzEwNDEsMTEgQEAKICAgICAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCAiZm9vIikKICAgICAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBhcnJheS5hcnJheSgndScsICdmb28nKSkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X29ic29sZXRlX3dyaXRlX2xvY2soc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdCJywgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBhKQogCiBjbGFzcyBTdHJpbmdUZXN0KEJhc2VUZXN0KToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfYXNkbF9wYXJzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E2NDI2YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfYXNkbF9wYXJzZXIucHkKQEAgLTAsMCArMSwxMjIgQEAKKyIiIlRlc3RzIGZvciB0aGUgYXNkbCBwYXJzZXIgaW4gUGFyc2VyL2FzZGwucHkiIiIKKworaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBvcworZnJvbSBvcy5wYXRoIGltcG9ydCBkaXJuYW1lCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdW5pdHRlc3QKKworCisjIFRoaXMgdGVzdCBpcyBvbmx5IHJlbGV2YW50IGZvciBmcm9tLXNvdXJjZSBidWlsZHMgb2YgUHl0aG9uLgoraWYgbm90IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCBpcnJlbGV2YW50IGZvciBhbiBpbnN0YWxsZWQgUHl0aG9uJykKKworc3JjX2Jhc2UgPSBkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX2ZpbGVfXykpKQorcGFyc2VyX2RpciA9IG9zLnBhdGguam9pbihzcmNfYmFzZSwgJ1BhcnNlcicpCisKKworY2xhc3MgVGVzdEFzZGxQYXJzZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgICMgTG9hZHMgdGhlIGFzZGwgbW9kdWxlIGR5bmFtaWNhbGx5LCBzaW5jZSBpdCdzIG5vdCBpbiBhIHJlYWwgaW1wb3J0YWJsZQorICAgICAgICAjIHBhY2thZ2UuCisgICAgICAgICMgUGFyc2VzIFB5dGhvbi5hc2RsIGludG8gYSBhc3QuTW9kdWxlIGFuZCBydW4gdGhlIGNoZWNrIG9uIGl0LgorICAgICAgICAjIFRoZXJlJ3Mgbm8gbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIHRlc3QgbWV0aG9kLCBoZW5jZSBzZXRVcENsYXNzLgorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgcGFyc2VyX2RpcikKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKAorICAgICAgICAgICAgICAgICdhc2RsJywgb3MucGF0aC5qb2luKHBhcnNlcl9kaXIsICdhc2RsLnB5JykpCisgICAgICAgIGNscy5hc2RsID0gbG9hZGVyLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgY2xzLm1vZCA9IGNscy5hc2RsLnBhcnNlKG9zLnBhdGguam9pbihwYXJzZXJfZGlyLCAnUHl0aG9uLmFzZGwnKSkKKyAgICAgICAgY2xzLmFzc2VydFRydWUoY2xzLmFzZGwuY2hlY2soY2xzLm1vZCksICdNb2R1bGUgdmFsaWRhdGlvbiBmYWlsZWQnKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgYWxpYXMgc3R1ZmYgZnJvbSB0aGUgY2xhc3MsIGZvciBjb252ZW5pZW5jZQorICAgICAgICBzZWxmLmFzZGwgPSBUZXN0QXNkbFBhcnNlci5hc2RsCisgICAgICAgIHNlbGYubW9kID0gVGVzdEFzZGxQYXJzZXIubW9kCisgICAgICAgIHNlbGYudHlwZXMgPSBzZWxmLm1vZC50eXBlcworCisgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubW9kLm5hbWUsICdQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzdG10Jywgc2VsZi50eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZXhwcicsIHNlbGYudHlwZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ21vZCcsIHNlbGYudHlwZXMpCisKKyAgICBkZWYgdGVzdF9kZWZpbml0aW9ucyhzZWxmKToKKyAgICAgICAgZGVmcyA9IHNlbGYubW9kLmRmbnMKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZnNbMF0sIHNlbGYuYXNkbC5UeXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmc1swXS52YWx1ZSwgc2VsZi5hc2RsLlN1bSkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi50eXBlc1snd2l0aGl0ZW0nXSwgc2VsZi5hc2RsLlByb2R1Y3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnR5cGVzWydhbGlhcyddLCBzZWxmLmFzZGwuUHJvZHVjdCkKKworICAgIGRlZiB0ZXN0X3Byb2R1Y3Qoc2VsZik6CisgICAgICAgIGFsaWFzID0gc2VsZi50eXBlc1snYWxpYXMnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKGFsaWFzKSwKKyAgICAgICAgICAgICdQcm9kdWN0KFtGaWVsZChpZGVudGlmaWVyLCBuYW1lKSwgRmllbGQoaWRlbnRpZmllciwgYXNuYW1lLCBvcHQ9VHJ1ZSldKScpCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBzdG10ID0gc2VsZi50eXBlc1snc3RtdCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN0bXQuYXR0cmlidXRlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0bXQuYXR0cmlidXRlc1swXSksICdGaWVsZChpbnQsIGxpbmVubyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzdG10LmF0dHJpYnV0ZXNbMV0pLCAnRmllbGQoaW50LCBjb2xfb2Zmc2V0KScpCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9maWVsZHMoc2VsZik6CisgICAgICAgIGVoYW5kbGVyID0gc2VsZi50eXBlc1snZXhjZXB0aGFuZGxlciddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVoYW5kbGVyLnR5cGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWhhbmRsZXIuYXR0cmlidXRlcyksIDIpCisKKyAgICAgICAgY29ucyA9IGVoYW5kbGVyLnR5cGVzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjb25zLCBzZWxmLmFzZGwuQ29uc3RydWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnMuZmllbGRzKSwgMykKKworICAgICAgICBmMCA9IGNvbnMuZmllbGRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjAudHlwZSwgJ2V4cHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYwLm5hbWUsICd0eXBlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYwLm9wdCkKKworICAgICAgICBmMSA9IGNvbnMuZmllbGRzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjEudHlwZSwgJ2lkZW50aWZpZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYxLm5hbWUsICduYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxLm9wdCkKKworICAgICAgICBmMiA9IGNvbnMuZmllbGRzWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIudHlwZSwgJ3N0bXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyLm5hbWUsICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmMi5vcHQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMi5zZXEpCisKKyAgICBkZWYgdGVzdF92aXNpdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBDdXN0b21WaXNpdG9yKHNlbGYuYXNkbC5WaXNpdG9yQmFzZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lc193aXRoX3NlcSA9IFtdCisKKyAgICAgICAgICAgIGRlZiB2aXNpdE1vZHVsZShzZWxmLCBtb2QpOgorICAgICAgICAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmlzaXQoZGZuKQorCisgICAgICAgICAgICBkZWYgdmlzaXRUeXBlKHNlbGYsIHR5cGUpOgorICAgICAgICAgICAgICAgIHNlbGYudmlzaXQodHlwZS52YWx1ZSkKKworICAgICAgICAgICAgZGVmIHZpc2l0U3VtKHNlbGYsIHN1bSk6CisgICAgICAgICAgICAgICAgZm9yIHQgaW4gc3VtLnR5cGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnZpc2l0KHQpCisKKyAgICAgICAgICAgIGRlZiB2aXNpdENvbnN0cnVjdG9yKHNlbGYsIGNvbnMpOgorICAgICAgICAgICAgICAgIGZvciBmIGluIGNvbnMuZmllbGRzOgorICAgICAgICAgICAgICAgICAgICBpZiBmLnNlcToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZXNfd2l0aF9zZXEuYXBwZW5kKGNvbnMubmFtZSkKKworICAgICAgICB2ID0gQ3VzdG9tVmlzaXRvcigpCisgICAgICAgIHYudmlzaXQoc2VsZi50eXBlc1snbW9kJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5uYW1lc193aXRoX3NlcSwgWydNb2R1bGUnLCAnSW50ZXJhY3RpdmUnLCAnU3VpdGUnXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3QucHkgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQppbmRleCBhNTMzZjg2Li5kM2U2ZDM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQpAQCAtNzgsOSArNzgsOSBAQAogICAgICMgUGFzcywKICAgICAicGFzcyIsCiAgICAgIyBCcmVhawotICAgICJicmVhayIsCisgICAgImZvciB2IGluIHY6YnJlYWsiLAogICAgICMgQ29udGludWUKLSAgICAiY29udGludWUiLAorICAgICJmb3IgdiBpbiB2OmNvbnRpbnVlIiwKICAgICAjIGZvciBzdGF0ZW1lbnRzIHdpdGggbmFrZWQgdHVwbGVzIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTY3MDQpCiAgICAgImZvciBhLGIgaW4gYzogcGFzcyIsCiAgICAgIlsoYSxiKSBmb3IgYSxiIGluIGNdIiwKQEAgLTEwNiw2ICsxMDYsMTUgQEAKICAgICAie3IgZm9yIGwgaW4geCBpZiBnfSIsCiAgICAgIyBzZXRjb21wIHdpdGggbmFrZWQgdHVwbGUKICAgICAie3IgZm9yIGwsbSBpbiB4fSIsCisgICAgIyBBc3luY0Z1bmN0aW9uRGVmCisgICAgImFzeW5jIGRlZiBmKCk6XG4gYXdhaXQgc29tZXRoaW5nKCkiLAorICAgICMgQXN5bmNGb3IKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyBmb3IgZSBpbiBpOiAxXG4gZWxzZTogMiIsCisgICAgIyBBc3luY1dpdGgKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyB3aXRoIGEgYXMgYjogMSIsCisgICAgIyBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKyAgICAieyoqezE6Mn0sIDI6M30iLAorICAgICJ7KnsxLCAyfSwgM30iLAogXQogCiAjIFRoZXNlIGFyZSBjb21waWxlZCB0aHJvdWdoICJzaW5nbGUiCkBAIC0yMjUsOSArMjM0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2luZ2xlX3Rlc3RzLCBzaW5nbGVfcmVzdWx0cywgInNpbmdsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWxfdGVzdHMsIGV2YWxfcmVzdWx0cywgImV2YWwiKSk6CiAgICAgICAgICAgICBmb3IgaSwgbyBpbiB6aXAoaW5wdXQsIG91dHB1dCk6Ci0gICAgICAgICAgICAgICAgYXN0X3RyZWUgPSBjb21waWxlKGksICI/Iiwga2luZCwgYXN0LlB5Q0ZfT05MWV9BU1QpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b190dXBsZShhc3RfdHJlZSksIG8pCi0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGFzdF90cmVlLCAoMCwgMCkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJwYXJzaW5nIiwgaW5wdXQ9aSk6CisgICAgICAgICAgICAgICAgICAgIGFzdF90cmVlID0gY29tcGlsZShpLCAiPyIsIGtpbmQsIGFzdC5QeUNGX09OTFlfQVNUKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvX3R1cGxlKGFzdF90cmVlKSwgbykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGFzdF90cmVlLCAoMCwgMCkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJjb21waWxpbmciLCBpbnB1dD1pKToKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZShhc3RfdHJlZSwgIj8iLCBraW5kKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CiAgICAgICAgIHNsYyA9IGFzdC5wYXJzZSgieFs6Ol0iKS5ib2R5WzBdLnZhbHVlLnNsaWNlCkBAIC00MjcsMTcgKzQzOSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUpLAogICAgICAgICAgICAgIk1vZHVsZShib2R5PVtFeHByKHZhbHVlPUNhbGwoZnVuYz1OYW1lKGlkPSdzcGFtJywgY3R4PUxvYWQoKSksICIKICAgICAgICAgICAgICJhcmdzPVtOYW1lKGlkPSdlZ2dzJywgY3R4PUxvYWQoKSksIFN0cihzPSdhbmQgY2hlZXNlJyldLCAiCi0gICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lKSldKSIKKyAgICAgICAgICAgICJrZXl3b3Jkcz1bXSkpXSkiCiAgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChub2RlLCBhbm5vdGF0ZV9maWVsZHM9RmFsc2UpLAogICAgICAgICAgICAgIk1vZHVsZShbRXhwcihDYWxsKE5hbWUoJ3NwYW0nLCBMb2FkKCkpLCBbTmFtZSgnZWdncycsIExvYWQoKSksICIKLSAgICAgICAgICAgICJTdHIoJ2FuZCBjaGVlc2UnKV0sIFtdLCBOb25lLCBOb25lKSldKSIKKyAgICAgICAgICAgICJTdHIoJ2FuZCBjaGVlc2UnKV0sIFtdKSldKSIKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUsIGluY2x1ZGVfYXR0cmlidXRlcz1UcnVlKSwKICAgICAgICAgICAgICJNb2R1bGUoYm9keT1bRXhwcih2YWx1ZT1DYWxsKGZ1bmM9TmFtZShpZD0nc3BhbScsIGN0eD1Mb2FkKCksICIKICAgICAgICAgICAgICJsaW5lbm89MSwgY29sX29mZnNldD0wKSwgYXJncz1bTmFtZShpZD0nZWdncycsIGN0eD1Mb2FkKCksICIKICAgICAgICAgICAgICJsaW5lbm89MSwgY29sX29mZnNldD01KSwgU3RyKHM9J2FuZCBjaGVlc2UnLCBsaW5lbm89MSwgIgotICAgICAgICAgICAgImNvbF9vZmZzZXQ9MTEpXSwga2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCAiCisgICAgICAgICAgICAiY29sX29mZnNldD0xMSldLCBrZXl3b3Jkcz1bXSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKV0pIgogICAgICAgICApCiAKQEAgLTQ1MywxNiArNDY1LDE2IEBACiAgICAgZGVmIHRlc3RfZml4X21pc3NpbmdfbG9jYXRpb25zKHNlbGYpOgogICAgICAgICBzcmMgPSBhc3QucGFyc2UoJ3dyaXRlKCJzcGFtIiknKQogICAgICAgICBzcmMuYm9keS5hcHBlbmQoYXN0LkV4cHIoYXN0LkNhbGwoYXN0Lk5hbWUoJ3NwYW0nLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthc3QuU3RyKCdlZ2dzJyldLCBbXSwgTm9uZSwgTm9uZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FzdC5TdHIoJ2VnZ3MnKV0sIFtdKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjLCBhc3QuZml4X21pc3NpbmdfbG9jYXRpb25zKHNyYykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAoc3JjLCBpbmNsdWRlX2F0dHJpYnV0ZXM9VHJ1ZSksCiAgICAgICAgICAgICAiTW9kdWxlKGJvZHk9W0V4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3dyaXRlJywgY3R4PUxvYWQoKSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBhcmdzPVtTdHIocz0nc3BhbScsIGxpbmVubz0xLCAiCi0gICAgICAgICAgICAiY29sX29mZnNldD02KV0sIGtleXdvcmRzPVtdLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwgIgorICAgICAgICAgICAgImNvbF9vZmZzZXQ9NildLCBrZXl3b3Jkcz1bXSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBsaW5lbm89MSwgY29sX29mZnNldD0wKSwgIgogICAgICAgICAgICAgIkV4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3NwYW0nLCBjdHg9TG9hZCgpLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGFyZ3M9W1N0cihzPSdlZ2dzJywgbGluZW5vPTEsIGNvbF9vZmZzZXQ9MCldLCAiCi0gICAgICAgICAgICAia2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCBsaW5lbm89MSwgIgorICAgICAgICAgICAgImtleXdvcmRzPVtdLCBsaW5lbm89MSwgIgogICAgICAgICAgICAgImNvbF9vZmZzZXQ9MCksIGxpbmVubz0xLCBjb2xfb2Zmc2V0PTApXSkiCiAgICAgICAgICkKIApAQCAtNDg3LDggKzQ5OSw3IEBACiAgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ2ZvbygpJywgbW9kZT0nZXZhbCcpCiAgICAgICAgIGQgPSBkaWN0KGFzdC5pdGVyX2ZpZWxkcyhub2RlLmJvZHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQucG9wKCdmdW5jJykuaWQsICdmb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsna2V5d29yZHMnOiBbXSwgJ2t3YXJncyc6IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmdzJzogW10sICdzdGFyYXJncyc6IE5vbmV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsna2V5d29yZHMnOiBbXSwgJ2FyZ3MnOiBbXX0pCiAKICAgICBkZWYgdGVzdF9pdGVyX2NoaWxkX25vZGVzKHNlbGYpOgogICAgICAgICBub2RlID0gYXN0LnBhcnNlKCJzcGFtKDIzLCA0MiwgZWdncz0nbGVlaycpIiwgbW9kZT0nZXZhbCcpCkBAIC01MDYsNiArNTE3LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyhub2RlLmJvZHlbMF0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5lIG9uZVxubGluZSB0d28nKQogCisgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoJ2FzeW5jIGRlZiBmb28oKTpcbiAgIiIic3BhbVxuICBoYW0iIiInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKG5vZGUuYm9keVswXSksICdzcGFtXG5oYW0nKQorCiAgICAgZGVmIHRlc3RfbGl0ZXJhbF9ldmFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoJ1sxLCAyLCAzXScpLCBbMSwgMiwgM10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgneyJmb28iOiA0Mn0nKSwgeyJmb28iOiA0Mn0pCkBAIC02MDQsOCArNjE4LDcgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5zdG10KQogCiAgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6Ci0gICAgICAgIGRlZiBjbHMoYmFzZXM9Tm9uZSwga2V5d29yZHM9Tm9uZSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsCi0gICAgICAgICAgICAgICAgYm9keT1Ob25lLCBkZWNvcmF0b3JfbGlzdD1Ob25lKToKKyAgICAgICAgZGVmIGNscyhiYXNlcz1Ob25lLCBrZXl3b3Jkcz1Ob25lLCBib2R5PU5vbmUsIGRlY29yYXRvcl9saXN0PU5vbmUpOgogICAgICAgICAgICAgaWYgYmFzZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICBiYXNlcyA9IFtdCiAgICAgICAgICAgICBpZiBrZXl3b3JkcyBpcyBOb25lOgpAQCAtNjE0LDE2ICs2MjcsMTIgQEAKICAgICAgICAgICAgICAgICBib2R5ID0gW2FzdC5QYXNzKCldCiAgICAgICAgICAgICBpZiBkZWNvcmF0b3JfbGlzdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gW10KLSAgICAgICAgICAgIHJldHVybiBhc3QuQ2xhc3NEZWYoIm15Y2xhc3MiLCBiYXNlcywga2V5d29yZHMsIHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsIGJvZHksIGRlY29yYXRvcl9saXN0KQorICAgICAgICAgICAgcmV0dXJuIGFzdC5DbGFzc0RlZigibXljbGFzcyIsIGJhc2VzLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoYmFzZXM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoa2V5d29yZHM9W2FzdC5rZXl3b3JkKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIHNlbGYuc3RtdChjbHMoc3RhcmFyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAotICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBzZWxmLnN0bXQoY2xzKGt3YXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCi0gICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bXSksICJlbXB0eSBib2R5IG9uIENsYXNzRGVmIikKICAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQogICAgICAgICBzZWxmLnN0bXQoY2xzKGRlY29yYXRvcl9saXN0PVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLApAQCAtNzc3LDggKzc4Niw2IEBACiAgICAgZGVmIHRlc3RfZGljdChzZWxmKToKICAgICAgICAgZCA9IGFzdC5EaWN0KFtdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCiAgICAgICAgIHNlbGYuZXhwcihkLCAic2FtZSBudW1iZXIgb2Yga2V5cyBhcyB2YWx1ZXMiKQotICAgICAgICBkID0gYXN0LkRpY3QoW05vbmVdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCi0gICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKICAgICAgICAgZCA9IGFzdC5EaWN0KFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSwgW05vbmVdKQogICAgICAgICBzZWxmLmV4cHIoZCwgIk5vbmUgZGlzYWxsb3dlZCIpCiAKQEAgLTg1NCwyMCArODYxLDEyIEBACiAgICAgICAgIGZ1bmMgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCiAgICAgICAgIGFyZ3MgPSBbYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKV0KICAgICAgICAga2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5Mb2FkKCkpKV0KLSAgICAgICAgc3RhcmFyZyA9IGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSkKLSAgICAgICAga3dhcmcgPSBhc3QuTmFtZSgicSIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIGNhbGwgPSBhc3QuQ2FsbChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBrd2FyZykKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhcmdzLCBrZXl3b3JkcykKICAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIFtOb25lXSwga2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgW05vbmVdLCBrZXl3b3JkcykKICAgICAgICAgc2VsZi5leHByKGNhbGwsICJOb25lIGRpc2FsbG93ZWQiKQogICAgICAgICBiYWRfa2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5TdG9yZSgpKSldCi0gICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBiYWRfa2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQotICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpLCBrd2FyZykKLSAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInciLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBiYWRfa2V5d29yZHMpCiAgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAKICAgICBkZWYgdGVzdF9udW0oc2VsZik6CkBAIC05NTcsOCArOTU2LDggQEAKICgnTW9kdWxlJywgWygnRnVuY3Rpb25EZWYnLCAoMSwgMCksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgKCdhcmcnLCAoMSwgNyksICdhcmdzJywgTm9uZSksIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdQYXNzJywgKDEsIDE0KSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnRnVuY3Rpb25EZWYnLCAoMSwgMCksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCAoJ2FyZycsICgxLCA4KSwgJ2t3YXJncycsIE5vbmUpLCBbXSksIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFsoJ2FyZycsICgxLCA2KSwgJ2EnLCBOb25lKSwgKCdhcmcnLCAoMSwgOSksICdiJywgTm9uZSksICgnYXJnJywgKDEsIDE0KSwgJ2MnLCBOb25lKSwgKCdhcmcnLCAoMSwgMjIpLCAnZCcsIE5vbmUpLCAoJ2FyZycsICgxLCAyOCksICdlJywgTm9uZSldLCAoJ2FyZycsICgxLCAzNSksICdhcmdzJywgTm9uZSksIFsoJ2FyZycsICgxLCA0MSksICdmJywgTm9uZSldLCBbKCdOdW0nLCAoMSwgNDMpLCA0MildLCAoJ2FyZycsICgxLCA0OSksICdrd2FyZ3MnLCBOb25lKSwgWygnTnVtJywgKDEsIDExKSwgMSksICgnTmFtZUNvbnN0YW50JywgKDEsIDE2KSwgTm9uZSksICgnTGlzdCcsICgxLCAyNCksIFtdLCAoJ0xvYWQnLCkpLCAoJ0RpY3QnLCAoMSwgMzApLCBbXSwgW10pXSksIFsoJ1Bhc3MnLCAoMSwgNTgpKV0sIFtdLCBOb25lKV0pLAotKCdNb2R1bGUnLCBbKCdDbGFzc0RlZicsICgxLCAwKSwgJ0MnLCBbXSwgW10sIE5vbmUsIE5vbmUsIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFsoJ05hbWUnLCAoMSwgOCksICdvYmplY3QnLCAoJ0xvYWQnLCkpXSwgW10sIE5vbmUsIE5vbmUsIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdKV0pLAorKCdNb2R1bGUnLCBbKCdDbGFzc0RlZicsICgxLCAwKSwgJ0MnLCBbXSwgW10sIFsoJ1Bhc3MnLCAoMSwgOCkpXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFsoJ05hbWUnLCAoMSwgOCksICdvYmplY3QnLCAoJ0xvYWQnLCkpXSwgW10sIFsoJ1Bhc3MnLCAoMSwgMTcpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnUmV0dXJuJywgKDEsIDgpLCAoJ051bScsICgxLCAxNSksIDEpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdEZWxldGUnLCAoMSwgMCksIFsoJ05hbWUnLCAoMSwgNCksICd2JywgKCdEZWwnLCkpXSldKSwKICgnTW9kdWxlJywgWygnQXNzaWduJywgKDEsIDApLCBbKCdOYW1lJywgKDEsIDApLCAndicsICgnU3RvcmUnLCkpXSwgKCdOdW0nLCAoMSwgNCksIDEpKV0pLApAQCAtOTY4LDcgKzk2Nyw3IEBACiAoJ01vZHVsZScsIFsoJ0lmJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMyksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCA1KSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDEzKSldKV0pLAogKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKSwgKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCAxMyksICd6JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3EnLCAoJ1N0b3JlJywpKSldLCBbKCdQYXNzJywgKDEsIDIxKSldKV0pLAotKCdNb2R1bGUnLCBbKCdSYWlzZScsICgxLCAwKSwgKCdDYWxsJywgKDEsIDYpLCAoJ05hbWUnLCAoMSwgNiksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBbKCdTdHInLCAoMSwgMTYpLCAnc3RyaW5nJyldLCBbXSwgTm9uZSwgTm9uZSksIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ1JhaXNlJywgKDEsIDApLCAoJ0NhbGwnLCAoMSwgNiksICgnTmFtZScsICgxLCA2KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIFsoJ1N0cicsICgxLCAxNiksICdzdHJpbmcnKV0sIFtdKSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ0V4Y2VwdEhhbmRsZXInLCAoMywgMCksICgnTmFtZScsICgzLCA3KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIE5vbmUsIFsoJ1Bhc3MnLCAoNCwgMikpXSldLCBbXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ1RyeScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbXSwgW10sIFsoJ1Bhc3MnLCAoNCwgMikpXSldKSwKICgnTW9kdWxlJywgWygnQXNzZXJ0JywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNyksICd2JywgKCdMb2FkJywpKSwgTm9uZSldKSwKQEAgLTk3NywxNyArOTc2LDIyIEBACiAoJ01vZHVsZScsIFsoJ0dsb2JhbCcsICgxLCAwKSwgWyd2J10pXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSldKSwKICgnTW9kdWxlJywgWygnUGFzcycsICgxLCAwKSldKSwKLSgnTW9kdWxlJywgWygnQnJlYWsnLCAoMSwgMCkpXSksCi0oJ01vZHVsZScsIFsoJ0NvbnRpbnVlJywgKDEsIDApKV0pLAorKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0JyZWFrJywgKDEsIDExKSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdDb250aW51ZScsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdUdXBsZScsICgxLCA0KSwgWygnTmFtZScsICgxLCA0KSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDYpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMSksICdjJywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnQXdhaXQnLCAoMiwgMSksICgnQ2FsbCcsICgyLCA3KSwgKCdOYW1lJywgKDIsIDcpLCAnc29tZXRoaW5nJywgKCdMb2FkJywpKSwgW10sIFtdKSkpXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jRm9yJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgMTEpLCAnZScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTYpLCAnaScsICgnTG9hZCcsKSksIFsoJ0V4cHInLCAoMiwgMTkpLCAoJ051bScsICgyLCAxOSksIDEpKV0sIFsoJ0V4cHInLCAoMywgNyksICgnTnVtJywgKDMsIDcpLCAyKSldKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY1dpdGgnLCAoMiwgNyksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDIsIDEyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMiwgMTcpLCAnYicsICgnU3RvcmUnLCkpKV0sIFsoJ0V4cHInLCAoMiwgMjApLCAoJ051bScsICgyLCAyMCksIDEpKV0pXSwgW10sIE5vbmUpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdCcsICgxLCAwKSwgW05vbmUsICgnTnVtJywgKDEsIDEwKSwgMildLCBbKCdEaWN0JywgKDEsIDMpLCBbKCdOdW0nLCAoMSwgNCksIDEpXSwgWygnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ051bScsICgxLCAxMiksIDMpXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0JywgKDEsIDApLCBbKCdTdGFycmVkJywgKDEsIDEpLCAoJ1NldCcsICgxLCAyKSwgWygnTnVtJywgKDEsIDMpLCAxKSwgKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTG9hZCcsKSksICgnTnVtJywgKDEsIDEwKSwgMyldKSldKSwKIF0KIHNpbmdsZV9yZXN1bHRzID0gWwogKCdJbnRlcmFjdGl2ZScsIFsoJ0V4cHInLCAoMSwgMCksICgnQmluT3AnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDIpLCAyKSkpXSksCkBAIC0xMDA1LDcgKzEwMDksNyBAQAogKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAogKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSldLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSkpLAorKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpLCAoJ1N0YXJyZWQnLCAoMSwgMTApLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTG9hZCcsKSldLCBbKCdrZXl3b3JkJywgJ2MnLCAoJ051bScsICgxLCA4KSwgMykpLCAoJ2tleXdvcmQnLCBOb25lLCAoJ05hbWUnLCAoMSwgMTUpLCAnZScsICgnTG9hZCcsKSkpXSkpLAogKCdFeHByZXNzaW9uJywgKCdOdW0nLCAoMSwgMCksIDEwKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1N0cicsICgxLCAwKSwgJ3N0cmluZycpKSwKICgnRXhwcmVzc2lvbicsICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpKSwKQEAgLTEwMTYsNiArMTAyMCw2IEBACiAoJ0V4cHJlc3Npb24nLCAoJ1R1cGxlJywgKDEsIDApLCBbKCdOdW0nLCAoMSwgMCksIDEpLCAoJ051bScsICgxLCAyKSwgMiksICgnTnVtJywgKDEsIDQpLCAzKV0sICgnTG9hZCcsKSkpLAogKCdFeHByZXNzaW9uJywgKCdUdXBsZScsICgxLCAxKSwgWygnTnVtJywgKDEsIDEpLCAxKSwgKCdOdW0nLCAoMSwgMyksIDIpLCAoJ051bScsICgxLCA1KSwgMyldLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnVHVwbGUnLCAoMSwgMCksIFtdLCAoJ0xvYWQnLCkpKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICdiJywgKCdMb2FkJywpKSwgJ2MnLCAoJ0xvYWQnLCkpLCAnZCcsICgnTG9hZCcsKSksIFsoJ1N1YnNjcmlwdCcsICgxLCA4KSwgKCdBdHRyaWJ1dGUnLCAoMSwgOCksICgnTmFtZScsICgxLCA4KSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICgnU2xpY2UnLCAoJ051bScsICgxLCAxMiksIDEpLCAoJ051bScsICgxLCAxNCksIDIpLCBOb25lKSwgKCdMb2FkJywpKV0sIFtdLCBOb25lLCBOb25lKSksCisoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICdjJywgKCdMb2FkJywpKSwgJ2QnLCAoJ0xvYWQnLCkpLCBbKCdTdWJzY3JpcHQnLCAoMSwgOCksICgnQXR0cmlidXRlJywgKDEsIDgpLCAoJ05hbWUnLCAoMSwgOCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAoJ1NsaWNlJywgKCdOdW0nLCAoMSwgMTIpLCAxKSwgKCdOdW0nLCAoMSwgMTQpLCAyKSwgTm9uZSksICgnTG9hZCcsKSldLCBbXSkpLAogXQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQppbmRleCAyZGM5ZDBjLi4zYTMzZmM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0zOCw3ICszOSw3IEBACiAgICAgICAgICAgICBzZWxmLnN0YXJ0X3Jlc2VuZF9ldmVudCA9IE5vbmUKIAogICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigxKQorICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLmV2ZW50LnNldCgpCiAgICAgICAgICAgICBjb25uLCBjbGllbnQgPSBzZWxmLnNvY2suYWNjZXB0KCkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCkBAIC0yOTgsNyArMjk5LDEwIEBACiAKIGNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQogICAgICAgICBmLnB1c2goNykKICAgICAgICAgZi5wdXNoKGInYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAyKQpAQCAtMzEzLDcgKzMxNywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X2dpdmVuX2xpc3Qoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oW2IneCcsIDE3LCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYid4JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDE3KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3BlcDQ5Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3BlcDQ5Mi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWUxYjhhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfcGVwNDkyLnB5CkBAIC0wLDAgKzEsMjA4IEBACisiIiJUZXN0cyBzdXBwb3J0IGZvciBuZXcgc3ludGF4IGludHJvZHVjZWQgYnkgUEVQIDQ5Mi4iIiIKKworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKK2ltcG9ydCBhc3luY2lvCitmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKKworCitjbGFzcyBCYXNlVGVzdCh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5CYXNlRXZlbnRMb29wKCkKKyAgICAgICAgc2VsZi5sb29wLl9wcm9jZXNzX2V2ZW50cyA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYubG9vcC5fc2VsZWN0b3IgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLmxvb3AuX3NlbGVjdG9yLnNlbGVjdC5yZXR1cm5fdmFsdWUgPSAoKQorICAgICAgICBzZWxmLnNldF9ldmVudF9sb29wKHNlbGYubG9vcCkKKworCitjbGFzcyBMb2NrVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2FzeW5jX3dpdGgoc2VsZik6CisgICAgICAgIHByaW1pdGl2ZXMgPSBbCisgICAgICAgICAgICBhc3luY2lvLkxvY2sobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Db25kaXRpb24obG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5TZW1hcGhvcmUobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Cb3VuZGVkU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgXQorCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KGxvY2spOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbG9jayBhcyBfbG9jazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKF9sb2NrLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisKKyAgICAgICAgZm9yIHByaW1pdGl2ZSBpbiBwcmltaXRpdmVzOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0ZXN0KHByaW1pdGl2ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByaW1pdGl2ZS5sb2NrZWQoKSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl93aXRoX2F3YWl0KHNlbGYpOgorICAgICAgICBwcmltaXRpdmVzID0gWworICAgICAgICAgICAgYXN5bmNpby5Mb2NrKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uQ29uZGl0aW9uKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uQm91bmRlZFNlbWFwaG9yZShsb29wPXNlbGYubG9vcCksCisgICAgICAgIF0KKworICAgICAgICBhc3luYyBkZWYgdGVzdChsb2NrKToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICB3aXRoIGF3YWl0IGxvY2sgYXMgX2xvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhfbG9jaywgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrLmxvY2tlZCgpKQorCisgICAgICAgIGZvciBwcmltaXRpdmUgaW4gcHJpbWl0aXZlczoKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGVzdChwcmltaXRpdmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcmltaXRpdmUubG9ja2VkKCkpCisKKworY2xhc3MgU3RyZWFtUmVhZGVyVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIERBVEEgPSBiJ2xpbmUxXG5saW5lMlxubGluZTMnCisKKyAgICAgICAgc3RyZWFtID0gYXN5bmNpby5TdHJlYW1SZWFkZXIobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHN0cmVhbS5mZWVkX2RhdGEoREFUQSkKKyAgICAgICAgc3RyZWFtLmZlZWRfZW9mKCkKKworICAgICAgICBhc3luYyBkZWYgcmVhZGVyKCk6CisgICAgICAgICAgICBkYXRhID0gW10KKyAgICAgICAgICAgIGFzeW5jIGZvciBsaW5lIGluIHN0cmVhbToKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShyZWFkZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBbYidsaW5lMVxuJywgYidsaW5lMlxuJywgYidsaW5lMyddKQorCisKK2NsYXNzIENvcm91dGluZVRlc3RzKEJhc2VUZXN0KToKKworICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICBmID0gZm9vKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uaXNjb3JvdXRpbmUoZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkgIyBzaWxlbmNlIHdhcm5pbmcKKworICAgICAgICAjIFRlc3QgdGhhdCBhc3luY2lvLmlzY29yb3V0aW5lKCkgdXNlcyBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lCisgICAgICAgIGNsYXNzIEZha2VDb3JvOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKTogeWllbGQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Nvcm91dGluZShGYWtlQ29ybygpKSkKKworICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lZnVuY3Rpb24oc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uKGZvbykpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9yZXR1cm5pbmdfYXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoJ3NwYW0nLCkKKworICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIHJldHVybiBBd2FpdGFibGUoKQorCisgICAgICAgIGNvcm8gPSBmdW5jKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3JvLnNlbmQoTm9uZSksICdzcGFtJykKKyAgICAgICAgY29yby5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9hc3luY19kZWZfY29yb3V0aW5lcyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgYmFyKCkKKworICAgICAgICAjIHByb2R1Y3Rpb24gbW9kZQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAnc3BhbScpCisKKyAgICAgICAgIyBkZWJ1ZyBtb2RlCisgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoVHJ1ZSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoZm9vKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgJ3NwYW0nKQorCisgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uY29yb3V0aW5lcy5sb2dnZXInKQorICAgIGRlZiB0ZXN0X2FzeW5jX2RlZl93cmFwcGVkKHNlbGYsIG1fbG9nKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBhc3luYyBkZWYgc3RhcnQoKToKKyAgICAgICAgICAgIGZvb19jb3JvID0gZm9vKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCisgICAgICAgICAgICAgICAgcmVwcihmb29fY29ybyksCisgICAgICAgICAgICAgICAgcic8Q29yb1dyYXBwZXIgLipcLmZvb1woXCkgcnVubmluZyBhdCAuKnBlcDQ5Mi4qPicpCisKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygocicuKmZvby4qd2FzIG5ldmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBmb29fY29ybyA9IE5vbmUKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtX2xvZy5lcnJvci5jYWxsZWQpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1fbG9nLmVycm9yLmNhbGxfYXJnc1swXVswXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInQ29yb1dyYXBwZXIuKmZvby4qd2FzIG5ldmVyJykKKworICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc3RhcnQoKSkKKworICAgICAgICBhc3luYyBkZWYgc3RhcnQoKToKKyAgICAgICAgICAgIGZvb19jb3JvID0gZm9vKCkKKyAgICAgICAgICAgIHRhc2sgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoZm9vX2Nvcm8sIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKHRhc2spLCByJ1Rhc2suKmZvby4qcnVubmluZycpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydCgpKQorCisKKyAgICBkZWYgdGVzdF90eXBlc19jb3JvdXRpbmUoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gKCkKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICByZXR1cm4gZ2VuKCkKKworICAgICAgICBhc3luYyBkZWYgY29ybygpOgorICAgICAgICAgICAgd3JhcHBlciA9IGZ1bmMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIHR5cGVzLl9HZW5lcmF0b3JXcmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHdyYXBwZXIKKworICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgJ3NwYW0nKQorCisgICAgZGVmIHRlc3RfdGFza19wcmludF9zdGFjayhzZWxmKToKKyAgICAgICAgVCA9IE5vbmUKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBmID0gVC5nZXRfc3RhY2sobGltaXQ9MSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZbMF0uZl9jb2RlLmNvX25hbWUsICdmb28nKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmID0gTm9uZQorCisgICAgICAgIGFzeW5jIGRlZiBydW5uZXIoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIFQKKyAgICAgICAgICAgIFQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoZm9vKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgYXdhaXQgVAorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVubmVyKCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IGQ0NDcyNmQuLjM4NTc5MTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9ydCBzdHJ1Y3QKLWltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KQEAgLTY1LDcgKzY0LDcgQEAKICMgdXNlZCB3aGVuIHRlc3Rpbmcgc2VuZGVyczsganVzdCBjb2xsZWN0cyB3aGF0IGl0IGdldHMgdW50aWwgbmV3bGluZSBpcyBzZW50CiBkZWYgY2FwdHVyZV9zZXJ2ZXIoZXZ0LCBidWYsIHNlcnYpOgogICAgIHRyeToKLSAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQogICAgIGV4Y2VwdCBzb2NrZXQudGltZW91dDoKICAgICAgICAgcGFzcwpAQCAtMjk4LDIzICsyOTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAnd2FybmluZzogdW5oYW5kbGVkIGNvbm5lY3QgZXZlbnQnXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBleHBlY3RlZCkKIAotICAgIGRlZiB0ZXN0X2lzc3VlXzg1OTQoc2VsZik6Ci0gICAgICAgICMgWFhYIC0gdGhpcyB0ZXN0IGlzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciBQeXRob24KLSAgICAgICAgIyB2ZXJzaW9uCi0gICAgICAgIGQgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoKSkKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGVycm9yIG1lc3NhZ2Ugbm8gbG9uZ2VyIHJlZmVycyB0byB0aGUgc29ja2V0Ci0gICAgICAgICMgb2JqZWN0IGJ1dCB0aGUgZGlzcGF0Y2hlciBpbnN0YW5jZSBpbnN0ZWFkCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdkaXNwYXRjaGVyIGluc3RhbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyLCBkLCAnZm9vJykKLSAgICAgICAgIyBjaGVhcCBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpcyBzdXBwb3NlZAotICAgICAgICAjIHRvIHN0aWxsIHdvcmsgYnV0IGEgRGVwcmVjYXRpb25XYXJuaW5nIGlzIGV4cGVjdGVkCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCi0gICAgICAgICAgICBmYW1pbHkgPSBkLmZhbWlseQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYW1pbHksIHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotCiAgICAgZGVmIHRlc3Rfc3RyZXJyb3Ioc2VsZik6CiAgICAgICAgICMgcmVmZXJzIHRvIGJ1ZyAjODU3MwogICAgICAgICBlcnIgPSBhc3luY29yZS5fc3RyZXJyb3IoZXJybm8uRVBFUk0pCkBAIC0zMzEsOSArMzEzLDggQEAKICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgIHBhc3MKIAotY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHVzZXBvbGwgPSBGYWxzZQogCitjbGFzcyBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTM4MywxMCArMzY0LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImpvaW4oKSB0aW1lZCBvdXQiKQogCiAKLQotY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbChEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cyk6Ci0gICAgdXNlcG9sbCA9IFRydWUKLQogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihhc3luY29yZSwgJ2ZpbGVfd3JhcHBlcicpLAogICAgICAgICAgICAgICAgICAgICAgJ2FzeW5jb3JlLmZpbGVfd3JhcHBlciByZXF1aXJlZCcpCiBjbGFzcyBGaWxlV3JhcHBlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdGV4aXQucHkgYi9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQppbmRleCA3MGQyZjFjLi4xNzJiZDI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQpAQCAtMTc3LDkgKzE3Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRleGl0Ll9uY2FsbGJhY2tzKCksIG4pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5IGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKaW5kZXggMGU3NWM2Yi4uNTA5M2U5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKQEAgLTEsNiArMSw1IEBACiAjIEF1Z21lbnRlZCBhc3NpZ25tZW50IHRlc3QuCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTEzNiw2ICsxMzUsMTQgQEAKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJfX2ltdWxfXyBjYWxsZWQiKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICAgICAgICAgIGRlZiBfX21hdG11bF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19tYXRtdWxfXyBjYWxsZWQiKQorICAgICAgICAgICAgZGVmIF9fcm1hdG11bF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19ybWF0bXVsX18gY2FsbGVkIikKKyAgICAgICAgICAgIGRlZiBfX2ltYXRtdWxfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9faW1hdG11bF9fIGNhbGxlZCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgICAgICAgICAgZGVmIF9fZmxvb3JkaXZfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9fZmxvb3JkaXZfXyBjYWxsZWQiKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCkBAIC0yMjUsNiArMjMyLDEwIEBACiAgICAgICAgIDEgKiB4CiAgICAgICAgIHggKj0gMQogCisgICAgICAgIHggQCAxCisgICAgICAgIDEgQCB4CisgICAgICAgIHggQD0gMQorCiAgICAgICAgIHggLyAxCiAgICAgICAgIDEgLyB4CiAgICAgICAgIHggLz0gMQpAQCAtMjcxLDYgKzI4Miw5IEBACiBfX211bF9fIGNhbGxlZAogX19ybXVsX18gY2FsbGVkCiBfX2ltdWxfXyBjYWxsZWQKK19fbWF0bXVsX18gY2FsbGVkCitfX3JtYXRtdWxfXyBjYWxsZWQKK19faW1hdG11bF9fIGNhbGxlZAogX190cnVlZGl2X18gY2FsbGVkCiBfX3J0cnVlZGl2X18gY2FsbGVkCiBfX2l0cnVlZGl2X18gY2FsbGVkCkBAIC0zMDAsOCArMzE0LDUgQEAKIF9faWxzaGlmdF9fIGNhbGxlZAogJycnLnNwbGl0bGluZXMoKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChBdWdBc3NpZ25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weSBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CmluZGV4IGI5NzM4ZGQuLmEwZjU0OGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CkBAIC0zLDEwICszLDggQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBiaW5hc2NpaQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN0cnVjdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIAogY2xhc3MgTGVnYWN5QmFzZTY0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjIyLDE1ICs2MjAsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYmluYXNjaWkuRXJyb3IsIFZhbHVlRXJyb3IpKQogCiAKLQogY2xhc3MgVGVzdE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3VwcG9ydC5URVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgKmFyZ3MsICoqb3B0aW9ucyk6Ci0gICAgICAgIGFyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctbScsICdiYXNlNjQnKSArIGFyZ3MKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsICoqb3B0aW9ucykKKyAgICBkZWYgZ2V0X291dHB1dChzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soJy1tJywgJ2Jhc2U2NCcsICphcmdzKS5vdXQKIAogICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNvZGUoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLXQnKQpAQCAtNjQzLDEzICs2MzksMTQgQEAKICAgICBkZWYgdGVzdF9lbmNvZGVfZmlsZShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmcDoKICAgICAgICAgICAgIGZwLndyaXRlKGInYVx4ZmZiXG4nKQotCiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLWUnLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCksIGInWWY5aUNnPT0nKQogCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmdldF9vdXRwdXQoJy1lJywgc3RkaW49ZnApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLCBiJ1lmOWlDZz09JykKKyAgICBkZWYgdGVzdF9lbmNvZGVfZnJvbV9zdGRpbihzZWxmKToKKyAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLW0nLCAnYmFzZTY0JywgJy1lJykgYXMgcHJvYzoKKyAgICAgICAgICAgIG91dCwgZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiJ2FceGZmYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQucnN0cmlwKCksIGInWWY5aUNnPT0nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlcnIpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZnA6CkBAIC02NTcsMTAgKzY1NCw1IEBACiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLWQnLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCksIGInYVx4ZmZiJykKIAotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMzg5ZGFhMC4uODM2N2FmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGUgYmluYXNjaWkgQyBtb2R1bGUuIiIiCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBhcnJheQpAQCAtMjc3LDExICsyNzYsNSBAQAogICAgIHR5cGUydGVzdCA9IG1lbW9yeXZpZXcKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVhcnJheUJpbkFTQ0lJVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnl2aWV3QmluQVNDSUlUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCA5NjNhYTAxLi44MjM3NDBjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTM4OSw5ICszODksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBWKSwgWydCLl9fbGVfXycsICdWLl9fZ2VfXyddKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChSYXRUZXN0Q2FzZSwgT3BlcmF0aW9uT3JkZXJUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CmluZGV4IGFhMTUzNzcuLmE2NTMzOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0xMSw2ICsxMSw3IEBACiAjIG1lbW9yeXZpZXcgdGVzdHMgaXMgbm93IGluIHRoaXMgbW9kdWxlLgogIwogCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKQEAgLTIxNiw3ICsyMTcsNyBAQAogICAgIGZvciB0IGluIGl0ZXJfbW9kZShuaXRlbXMsIHRlc3RvYmopOgogICAgICAgICB5aWVsZCB0CiAgICAgaWYgdGVzdG9iaiAhPSAnbmRhcnJheSc6Ci0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgcmV0dXJuCiAgICAgeWllbGQgc3RydWN0X2l0ZW1zKG5pdGVtcywgdGVzdG9iaikKIAogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQAogICAgICAgICAjIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQKICAgICAgICAgc3RydWN0dXJlID0gKAogICAgICAgICAgICAgKFtdLCBbXSwgMCksCisgICAgICAgICAgICAoWzEsMywxXSwgW10sIDApLAogICAgICAgICAgICAgKFsxMl0sIFtdLCAwKSwKICAgICAgICAgICAgIChbMTJdLCBbLTFdLCAxMSksCiAgICAgICAgICAgICAoWzZdLCBbMl0sIDApLApAQCAtMTA3OCw2ICsxMDgwLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0FOWV9DT05USUdVT1VTKQogICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjI0NDU6IE5ldyBwcmVjaXNlIGNvbnRpZ3VpdHkgZGVmaW5pdGlvbi4KKyAgICAgICAgZm9yIHNoYXBlIGluIFsxLDEyLDFdLCBbNywwLDddOgorICAgICAgICAgICAgZm9yIG9yZGVyIGluIDAsIE5EX0ZPUlRSQU46CisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZmxhZ3M9b3JkZXJ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NvbnRpZ3VvdXMoZXgsICdGJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NvbnRpZ3VvdXMoZXgsICdDJykpCisKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhuZCwgJ0YnKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NvbnRpZ3VvdXMobmQsICdDJykpCisKICAgICBkZWYgdGVzdF9uZGFycmF5X2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSkKICAgICAgICAgbmRtID0gbmRhcnJheShbOV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQpAQCAtMjQ1NCw3ICsyNDY4LDcgQEAKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NpemVvZihzZWxmKToKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogICAgICAgICB2c2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplCi0gICAgICAgIGJhc2Vfc3RydWN0ID0gJ1BuaW4gMlAybjJpNVAgM2NQJworICAgICAgICBiYXNlX3N0cnVjdCA9ICdQbmluIDJQMm4yaTVQIFAnCiAgICAgICAgIHBlcl9kaW0gPSAnM24nCiAKICAgICAgICAgaXRlbXMgPSBsaXN0KHJhbmdlKDgpKQpAQCAtMjU0NSw4ICsyNTU5LDcgQEAKICAgICAgICAgICAgIGV4ID0gbmRhcnJheShzaXRlbXMsIHNoYXBlPVsxXSwgZm9ybWF0PXNmbXQpCiAgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKICAgICAgICAgICAgIGZvciBkZm10LCBfLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgotICAgICAgICAgICAgICAgIGlmIChub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoc2ZtdCkgb3IKLSAgICAgICAgICAgICAgICAgICAgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGRmbXQpKToKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZGZtdCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMyLy9kc2l6ZV0pCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTI3NTksNiArMjc3MiwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKIAorICAgICAgICBpZiBjdHlwZXM6CisgICAgICAgICAgICAjIGZvcm1hdDogIlR7Pmw6eDo+ZDp5On0iCisgICAgICAgICAgICBjbGFzcyBCRVBvaW50KGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGN0eXBlcy5jX2xvbmcpLCAoInkiLCBjdHlwZXMuY19kb3VibGUpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwLjEpCisgICAgICAgICAgICBtMSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBtMiA9IG0xLmNhc3QoJ0InKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5vYmosIHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5pdGVtc2l6ZSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIucmVhZG9ubHksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLm5kaW0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnNoYXBlLCAobTIubmJ5dGVzLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN0cmlkZXMsICgxLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN1Ym9mZnNldHMsICgpKQorCisgICAgICAgICAgICB4ID0gY3R5cGVzLmNfZG91YmxlKDEuMikKKyAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgbTIgPSBtMS5jYXN0KCdjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIub2JqLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5pdGVtc2l6ZSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIucmVhZG9ubHksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLm5kaW0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnNoYXBlLCAobTIubmJ5dGVzLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN0cmlkZXMsICgxLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN1Ym9mZnNldHMsICgpKQorCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2xpc3Qoc2VsZik6CiAKICAgICAgICAgIyBNb3N0IHRvbGlzdCgpIHRlc3RzIGFyZSBpbiBzZWxmLnZlcmlmeSgpIGV0Yy4KQEAgLTI4MTIsNiArMjg1MSwxMyBAQAogICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiOS4wIGluIG0iLCBsb2NhbHMoKSkKIAorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKHNlbGYsIGRpbSk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcikgYXMgY206CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIG9uIGRpbWVuc2lvbiAlZCIgJSAoZGltLCkpCisKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2luZGV4KHNlbGYpOgogCiAgICAgICAgICMgbmRpbSA9IDAKQEAgLTI4MzgsMTIgKzI4ODQsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgLTgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDgpCiAKLSAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwKICAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQogICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMCwgMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyLCAwXSwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzIsIDNdLCAxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy0xLCAtMV0sIDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTMsIC00XSwgMCkKKworICAgICAgICAjIG91dCBvZiBib3VuZHMKKyAgICAgICAgZm9yIGluZGV4IGluICgzLCAtNCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0X291dF9vZl9ib3VuZHNfZXJyb3IoZGltPTEpOgorICAgICAgICAgICAgICAgIG1baW5kZXgsIDBdCisgICAgICAgIGZvciBpbmRleCBpbiAoNCwgLTUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKGRpbT0yKToKKyAgICAgICAgICAgICAgICBtWzAsIGluZGV4XQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoMioqNjQsIDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoMCwgMioqNjQpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKDAsIDAsIDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sICgwLjAsIDAuMCkpCisKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sICgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQogCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19hc3NpZ24oc2VsZik6CkBAIC0yOTMyLDEwICsyOTk3LDI3IEBACiAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQogCi0gICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsCiAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9XUklUQUJMRSkKICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bMCwxXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhbMF1bMV0sIDQyKQorICAgICAgICBtWy0xLC0xXSA9IDQzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhbMl1bM10sIDQzKQorICAgICAgICAjIGVycm9ycworICAgICAgICBmb3IgaW5kZXggaW4gKDMsIC00KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRfb3V0X29mX2JvdW5kc19lcnJvcihkaW09MSk6CisgICAgICAgICAgICAgICAgbVtpbmRleCwgMF0gPSAwCisgICAgICAgIGZvciBpbmRleCBpbiAoNCwgLTUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKGRpbT0yKToKKyAgICAgICAgICAgICAgICBtWzAsIGluZGV4XSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgKDIqKjY0LCAwKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgKDAsIDIqKjY0KSwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sICgwLCAwLCAwKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAoMC4wLCAwLjApLCAwKQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCBbMiwgM10pCiAKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NsaWNlKHNlbGYpOgpAQCAtMjk0OCw4ICszMDMwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQogCi0gICAgICAgICMgaW52YWxpZCBzbGljZSBrZXkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKKyAgICAgICAgIyAwLWRpbSBzbGljaW5nIChpZGVudGl0eSBmdW5jdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCiAKICAgICAgICAgIyBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcwogICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCAxNDM2NmM2Li5jZGJiMmNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC0xNiw3ICsxNiw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gb3BlcmF0b3IgaW1wb3J0IG5lZwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCAgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncwotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIHRyeToKICAgICBpbXBvcnQgcHR5LCBzaWduYWwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTMxMiwxMSArMzEyLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGlsZSwgJ3ByaW50KDQyKVxuJywgJzxzdHJpbmc+JywgJ2JhZG1vZGUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCAncHJpbnQoNDIpXG4nLCAnPHN0cmluZz4nLCAnc2luZ2xlJywgMHhmZikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUsICdwYXNzJywgJz8nLCAnZXhlYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9J2V2YWwnLCBzb3VyY2U9JzAnLCBmaWxlbmFtZT0ndG1wJykKICAgICAgICAgY29tcGlsZSgncHJpbnQoIlx4ZTUiKVxuJywgJycsICdleGVjJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCBzdHIoJ2EgPSAxJyksICdmJywgJ2JhZCcpCiAKICAgICAgICAgIyB0ZXN0IHRoZSBvcHRpbWl6ZSBhcmd1bWVudApAQCAtMTA5NCw3ICsxMDk0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChwb3coLTEsIDAuNSksIDFqKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHBvdygtMSwgMS8zKSwgMC41ICsgMC44NjYwMjU0MDM3ODQ0Mzg2aikKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvdywgLTEsIC0yLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3csIC0xLCAtMiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG93LCAxLCAyLCAwKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggYjAwNTczZi4uNTNhODBmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0zMDEsNiArMzAxLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICdceDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJzEyICAgXHgwMCAgIDM0JykKIAorICAgIGRlZiB0ZXN0X2hleChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiIikuaGV4KCksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVhcnJheShbMHgxYSwgMHgyYiwgMHgzMF0pLmhleCgpLCAnMWEyYjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIlx4MWFceDJiXHgzMCIpLmhleCgpLCAnMWEyYjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KGIiXHgxYVx4MmJceDMwIikuaGV4KCksICcxYTJiMzAnKQorCiAgICAgZGVmIHRlc3Rfam9pbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIiIpLmpvaW4oW10pLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYiIiKS5qb2luKFtiIiJdKSwgYiIiKQpAQCAtNDYxLDYgKzQ2OSwyOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDMsIDkpLCA3KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgdywgMSwgMykKIAorICAgIGRlZiB0ZXN0X21vZChzZWxmKToKKyAgICAgICAgYiA9IGInaGVsbG8sICViIScKKyAgICAgICAgb3JpZyA9IGIKKyAgICAgICAgYiA9IGIgJSBiJ3dvcmxkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8sIHdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgYidoZWxsbywgJWIhJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBiJyVzIC8gMTAwID0gJWQlJScKKyAgICAgICAgYSA9IGIgJSAoYidzZXZlbnR5LW5pbmUnLCA3OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpCisKKyAgICBkZWYgdGVzdF9pbW9kKHNlbGYpOgorICAgICAgICBiID0gYidoZWxsbywgJWIhJworICAgICAgICBvcmlnID0gYgorICAgICAgICBiICU9IGInd29ybGQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbywgd29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBiJ2hlbGxvLCAlYiEnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIgaXMgb3JpZykKKyAgICAgICAgYiA9IGInJXMgLyAxMDAgPSAlZCUlJworICAgICAgICBiICU9IChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInc2V2ZW50eS1uaW5lIC8gMTAwID0gNzklJykKKwogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJlcGxhY2UoYidpJywgYidhJyksIGInbWFzc2Fzc2FwcGEnKQpAQCAtNzIyLDYgKzc1MiwxMSBAQAogY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwogCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9lcnJvcihzZWxmKToKKyAgICAgICAgbXNnID0gImJ5dGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGIncHl0aG9uJ1snYSddCisKICAgICBkZWYgdGVzdF9idWZmZXJfaXNfcmVhZG9ubHkoc2VsZik6CiAgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCiAgICAgICAgIHdpdGggb3BlbihmZCwgInJiIiwgYnVmZmVyaW5nPTApIGFzIGY6CkBAIC03NzYsNiArODExLDE3IEBACiBjbGFzcyBCeXRlQXJyYXlUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKIAorICAgIGRlZiB0ZXN0X2dldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGJ5dGVhcnJheShiJ3B5dGhvbicpWydhJ10KKworICAgIGRlZiB0ZXN0X3NldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkoYidweXRob24nKQorICAgICAgICAgICAgYlsnYSddID0gInB5dGhvbiIKKwogICAgIGRlZiB0ZXN0X25vaGFzaChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoYXNoLCBieXRlYXJyYXkoKSkKIApAQCAtOTkwLDYgKzEwMzYsMjggQEAKICAgICAgICAgYls4Ol0gPSBiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYnl0ZWFycmF5KGxpc3QocmFuZ2UoOCkpICsgbGlzdChyYW5nZSgyNTYpKSkpCiAKKyAgICBkZWYgdGVzdF9tb2Qoc2VsZik6CisgICAgICAgIGIgPSBieXRlYXJyYXkoYidoZWxsbywgJWIhJykKKyAgICAgICAgb3JpZyA9IGIKKyAgICAgICAgYiA9IGIgJSBiJ3dvcmxkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8sIHdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgYnl0ZWFycmF5KGInaGVsbG8sICViIScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIgaXMgb3JpZykKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJyVzIC8gMTAwID0gJWQlJScpCisgICAgICAgIGEgPSBiICUgKGInc2V2ZW50eS1uaW5lJywgNzkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYnl0ZWFycmF5KGInc2V2ZW50eS1uaW5lIC8gMTAwID0gNzklJykpCisKKyAgICBkZWYgdGVzdF9pbW9kKHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGInaGVsbG8sICViIScpCisgICAgICAgIG9yaWcgPSBiCisgICAgICAgIGIgJT0gYid3b3JsZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvLCB3b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGJ5dGVhcnJheShiJ2hlbGxvLCAlYiEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBieXRlYXJyYXkoYiclcyAvIDEwMCA9ICVkJSUnKQorICAgICAgICBiICU9IChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGJ5dGVhcnJheShiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpKQorCiAgICAgZGVmIHRlc3RfaWNvbmNhdChzZWxmKToKICAgICAgICAgYiA9IGJ5dGVhcnJheShiImFiYyIpCiAgICAgICAgIGIxID0gYgpAQCAtMTE5Nyw2ICsxMjY1LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBkZWxzbGljZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBvcmlnKQogCisgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9vYnNvbGV0ZV93cml0ZV9sb2NrKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGJ5dGVhcnJheSgpKQogCiBjbGFzcyBBc3NvcnRlZEJ5dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIwpAQCAtMTMwNywyMCArMTM3OSwzNSBAQAogICAgICAgICBiID0gYnl0ZWFycmF5KCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiLnJlcGxhY2UoYicnLCBiJycpIGlzIGIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZmxhZ3MuYnl0ZXNfd2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQnl0ZXNXYXJuaW5nIGlzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0OiB1c2UgLWJiIG9wdGlvbiIpCiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKLSAgICAgICAgaWYgc3lzLmZsYWdzLmJ5dGVzX3dhcm5pbmc6Ci0gICAgICAgICAgICBkZWYgYnl0ZXNfd2FybmluZygpOgotICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBCeXRlc1dhcm5pbmcpKQotICAgICAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgYicnID09ICcnCi0gICAgICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICBiJycgIT0gJycKLSAgICAgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgotICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJycpID09ICcnCi0gICAgICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICBieXRlYXJyYXkoYicnKSAhPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQnl0ZXNXYXJuaW5nIGlzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0OiB1c2UgLWJiIG9wdGlvbiIpCisgICAgICAgIGRlZiBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICByZXR1cm4gdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgQnl0ZXNXYXJuaW5nKSkKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBiJycgPT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyA9PSBiJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBiJycgIT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyAhPSBiJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBieXRlYXJyYXkoYicnKSA9PSAnJworICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgICcnID09IGJ5dGVhcnJheShiJycpCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYnl0ZWFycmF5KGInJykgIT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyAhPSBieXRlYXJyYXkoYicnKQorICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGInXDAnID09IDAKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAwID09IGInXDAnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYidcMCcgIT0gMAorICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIDAgIT0gYidcMCcKIAogICAgICMgT3B0aW1pemF0aW9uczoKICAgICAjIF9faXRlcl9fPyAob3B0aW1pemF0aW9uKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCBiZWVmMjc1Li5hMWU0YjhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtMiwxMyArMiwxNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF80RwogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIERFRkFVTFRfQlVGRkVSX1NJWkUKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQoraW1wb3J0IGdsb2IKIGltcG9ydCByYW5kb20KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5saW5rCitpbXBvcnQgX2NvbXByZXNzaW9uCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC01MSw2ICs1MywxOSBAQAogICAgIEVNUFRZX0RBVEEgPSBiJ0JaaDlceDE3ckU4UFx4OTBceDAwXHgwMFx4MDBceDAwJwogICAgIEJBRF9EQVRBID0gYid0aGlzIGlzIG5vdCBhIHZhbGlkIGJ6aXAyIGZpbGUnCiAKKyAgICAjIFNvbWUgdGVzdHMgbmVlZCBtb3JlIHRoYW4gb25lIGJsb2NrIG9mIHVuY29tcHJlc3NlZCBkYXRhLiBTaW5jZSBvbmUgYmxvY2sKKyAgICAjIGlzIGF0IGxlYXN0IDEwMCBrQiwgd2UgZ2F0aGVyIHNvbWUgZGF0YSBkeW5hbWljYWxseSBhbmQgY29tcHJlc3MgaXQuCisgICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgY29tcHJlc3Npb24gd29ya3MgY29ycmVjdGx5LCBzbyB3ZSBjYW5ub3QKKyAgICAjIHNpbXBseSB1c2UgdGhlIGJpZ2dlciB0ZXN0IGRhdGEgZm9yIGFsbCB0ZXN0cy4KKyAgICB0ZXN0X3NpemUgPSAwCisgICAgQklHX1RFWFQgPSBieXRlYXJyYXkoMTI4KjEwMjQpCisgICAgZm9yIGZuYW1lIGluIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJyoucHknKSk6CisgICAgICAgIHdpdGggb3BlbihmbmFtZSwgJ3JiJykgYXMgZmg6CisgICAgICAgICAgICB0ZXN0X3NpemUgKz0gZmgucmVhZGludG8obWVtb3J5dmlldyhCSUdfVEVYVClbdGVzdF9zaXplOl0pCisgICAgICAgIGlmIHRlc3Rfc2l6ZSA+IDEyOCoxMDI0OgorICAgICAgICAgICAgYnJlYWsKKyAgICBCSUdfREFUQSA9IGJ6Mi5jb21wcmVzcyhCSUdfVEVYVCwgY29tcHJlc3NsZXZlbD0xKQorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIApAQCAtOTYsNyArMTExLDcgQEAKICAgICBkZWYgdGVzdFJlYWQoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdFJlYWRCYWRGaWxlKHNlbGYpOgpAQCAtMTA3LDIxICsxMjIsMjEgQEAKICAgICBkZWYgdGVzdFJlYWRNdWx0aVN0cmVhbShzZWxmKToKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgZmxvYXQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCiAKICAgICBkZWYgdGVzdFJlYWRNb25rZXlNdWx0aVN0cmVhbShzZWxmKToKICAgICAgICAgIyBUZXN0IEJaMkZpbGUucmVhZCgpIG9uIGEgbXVsdGktc3RyZWFtIGFyY2hpdmUgd2hlcmUgYSBzdHJlYW0KICAgICAgICAgIyBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kIG9mIHRoZSByYXcgcmVhZCBidWZmZXIuCi0gICAgICAgIGJ1ZmZlcl9zaXplID0gYnoyLl9CVUZGRVJfU0laRQotICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKKyAgICAgICAgYnVmZmVyX3NpemUgPSBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUKKyAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCiAgICAgICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgZmxvYXQoKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGJ1ZmZlcl9zaXplCisgICAgICAgICAgICBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUgPSBidWZmZXJfc2l6ZQogCiAgICAgZGVmIHRlc3RSZWFkVHJhaWxpbmdKdW5rKHNlbGYpOgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN1ZmZpeD1zZWxmLkJBRF9EQVRBKQpAQCAtMTM2LDcgKzE1MSw3IEBACiAgICAgZGVmIHRlc3RSZWFkMChzZWxmKToKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgZmxvYXQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKDApLCBiIiIpCiAKICAgICBkZWYgdGVzdFJlYWRDaHVuazEwKHNlbGYpOgpAQCAtNTQ1LDEzICs1NjAsMjQgQEAKICAgICAgICAgd2l0aCBCWjJGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKIAorICAgIGRlZiB0ZXN0RGVjb21wcmVzc0xpbWl0ZWQoc2VsZik6CisgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgorICAgICAgICBib21iID0gYnoyLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCisKKyAgICAgICAgZGVjb21wID0gQloyRmlsZShCeXRlc0lPKGJvbWIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCisgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQorCiAKICAgICAjIFRlc3RzIGZvciBhIEJaMkZpbGUgd3JhcHBpbmcgYW5vdGhlciBmaWxlIG9iamVjdDoKIAogICAgIGRlZiB0ZXN0UmVhZEJ5dGVzSU8oc2VsZik6CiAgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKICAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQogCkBAIC03MDUsNiArNzMxLDk1IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKEJaMkRlY29tcHJlc3NvcigpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0RGVjb21wcmVzc29yQ2h1bmtzTWF4c2l6ZShzZWxmKToKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgbWF4X2xlbmd0aCA9IDEwMAorICAgICAgICBvdXQgPSBbXQorCisgICAgICAgICMgRmVlZCBzb21lIGlucHV0CisgICAgICAgIGxlbl8gPSBsZW4oc2VsZi5CSUdfREFUQSkgLSA2NAorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuQklHX0RBVEFbOmxlbl9dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnpkLm5lZWRzX2lucHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIG1vcmUgZGF0YSB3aXRob3V0IHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3MoYicnLCBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2hpbGUgcHJvdmlkaW5nIG1vcmUgaW5wdXQKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkJJR19EQVRBW2xlbl86XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEKKyAgICAgICAgd2hpbGUgbm90IGJ6ZC5lb2Y6CisgICAgICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICBvdXQgPSBiIiIuam9pbihvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBzZWxmLkJJR19URVhUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6ZC51bnVzZWRfZGF0YSwgYiIiKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2lucHV0YnVmXzEoc2VsZik6CisgICAgICAgICMgVGVzdCByZXVzaW5nIGlucHV0IGJ1ZmZlciBhZnRlciBtb3ZpbmcgZXhpc3RpbmcKKyAgICAgICAgIyBjb250ZW50cyB0byBiZWdpbm5pbmcKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbOjEwMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aD0wKSwgYicnKQorCisgICAgICAgICMgUmV0cmlldmUgc29tZSByZXN1bHRzLCBmcmVlaW5nIGNhcGFjaXR5IGF0IGJlZ2lubmluZworICAgICAgICAjIG9mIGlucHV0IGJ1ZmZlcgorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKGInJywgMikpCisKKyAgICAgICAgIyBBZGQgbW9yZSBkYXRhIHRoYXQgZml0cyBpbnRvIGlucHV0IGJ1ZmZlciBhZnRlcgorICAgICAgICAjIG1vdmluZyBleGlzdGluZyBkYXRhIHRvIGJlZ2lubmluZworICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVsxMDA6MTA1XSwgMTUpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMTA1Ol0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8yKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYnkgYXBwZW5kaW5nIGRhdGEgYXQgdGhlCisgICAgICAgICMgZW5kIHJpZ2h0IGF3YXkKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGVtcHR5IGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzoyMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhiJycpKQorCisgICAgICAgICMgRmlsbCBidWZmZXIgd2l0aCBuZXcgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVsyMDA6MjgwXSwgMikpCisKKyAgICAgICAgIyBBcHBlbmQgc29tZSBtb3JlIGRhdGEsIG5vdCBlbm91Z2ggdG8gcmVxdWlyZSByZXNpemUKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMjgwOjMwMF0sIDIpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMzAwOl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgZXh0ZW5kaW5nIGl0CisKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBhbG1vc3QgZnVsbCBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbOjIwMF0sIDUpKQorCisgICAgICAgICMgQWRkIGV2ZW4gbW9yZSBkYXRhIHRvIGl0LCByZXF1aXJpbmcgcmVzaXplCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzIwMDozMDBdLCA1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBzZWxmLlRFWFQpCiAKIGNsYXNzIENvbXByZXNzRGVjb21wcmVzc1Rlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5IGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQppbmRleCA5MTkzODU3Li44MGVkNjMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCB0aW1lCiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGwucHkKaW5kZXggYzAwY2NiYS4uZTJiOGUwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FsbC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKICMgVGhlIHRlc3QgY2FzZXMgaGVyZSBjb3ZlciBzZXZlcmFsIHBhdGhzIHRocm91Z2ggdGhlIGZ1bmN0aW9uIGNhbGxpbmcKICMgY29kZS4gIFRoZXkgZGVwZW5kIG9uIHRoZSBNRVRIX1hYWCBmbGFnIHRoYXQgaXMgdXNlZCB0byBkZWZpbmUgYSBDCkBAIC0xMjMsOSArMTIyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBbXS5jb3VudCwgeD0yLCB5PTIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENGdW5jdGlvbkNhbGxzKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQppbmRleCAzNmM2MjM3Ni4uZWFlM2FkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNiwxMCArNiwxMiBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgTUlTU0lOR19DX0RPQ1NUUklOR1MKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogdHJ5OgogICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMSw2ICsyMyw5IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGVzdGNhcGkgbW9kdWxlIGlzbid0IGF2YWlsYWJsZS4KIF90ZXN0Y2FwaSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKIAorIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKKwogCiBkZWYgdGVzdGZ1bmN0aW9uKHNlbGYpOgogICAgICIiInNvbWUgZG9jIiIiCkBAIC0xMTgsNyArMTIzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkubm9fZG9jc3RyaW5nLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLm5vX2RvY3N0cmluZy5fX3RleHRfc2lnbmF0dXJlX18sIE5vbmUpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fZG9jX18sICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfZW1wdHkuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fdGV4dF9zaWduYXR1cmVfXywgTm9uZSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfbm9fc2lnbmF0dXJlLl9fZG9jX18sCkBAIC0xNDUsMTEgKzE1MCw5MiBAQAogICAgICAgICAgICAgIlRoaXMgZG9jc3RyaW5nIGhhcyBhIHZhbGlkIHNpZ25hdHVyZS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmUuX190ZXh0X3NpZ25hdHVyZV9fLCAiKCRtb2R1bGUsIC8sIHNpZykiKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLl9fZG9jX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLl9fdGV4dF9zaWduYXR1cmVfXywKKyAgICAgICAgICAgICIoJG1vZHVsZSwgLywgc2lnKSIpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcy5fX2RvY19fLAogICAgICAgICAgICAgIlxuVGhpcyBkb2NzdHJpbmcgaGFzIGEgdmFsaWQgc2lnbmF0dXJlIGFuZCBzb21lIGV4dHJhIG5ld2xpbmVzLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9hbmRfZXh0cmFfbmV3bGluZXMuX190ZXh0X3NpZ25hdHVyZV9fLAogICAgICAgICAgICAgIigkbW9kdWxlLCAvLCBwYXJhbWV0ZXIpIikKIAorICAgIGRlZiB0ZXN0X2NfdHlwZV93aXRoX21hdHJpeF9tdWx0aXBsaWNhdGlvbihzZWxmKToKKyAgICAgICAgTSA9IF90ZXN0Y2FwaS5tYXRtdWxUeXBlCisgICAgICAgIG0xID0gTSgpCisgICAgICAgIG0yID0gTSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEgQCBtMiwgKCJtYXRtdWwiLCBtMSwgbTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xIEAgNDIsICgibWF0bXVsIiwgbTEsIDQyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiBAIG0xLCAoIm1hdG11bCIsIDQyLCBtMSkpCisgICAgICAgIG8gPSBtMQorICAgICAgICBvIEA9IG0yCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobywgKCJpbWF0bXVsIiwgbTEsIG0yKSkKKyAgICAgICAgbyA9IG0xCisgICAgICAgIG8gQD0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLCAoImltYXRtdWwiLCBtMSwgNDIpKQorICAgICAgICBvID0gNDIKKyAgICAgICAgbyBAPSBtMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sICgibWF0bXVsIiwgNDIsIG0xKSkKKworICAgIGRlZiB0ZXN0X3JldHVybl9udWxsX3dpdGhvdXRfZXJyb3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzNTcxOiBBIGZ1bmN0aW9uIG11c3Qgbm90IHJldHVybiBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbgorICAgICAgICAjIGVycm9yCisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX251bGxfd2l0aG91dF9lcnJvcigpCisgICAgICAgICAgICAiIiIpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLnJlcGxhY2UoYidccicsIGInJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0ZhdGFsIFB5dGhvbiBlcnJvcjogYSBmdW5jdGlvbiByZXR1cm5lZCBOVUxMICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1N5c3RlbUVycm9yOiA8YnVpbHQtaW4gZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnIncmV0dXJuX251bGxfd2l0aG91dF9lcnJvcj4gcmV0dXJuZWQgTlVMTCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicid3aXRob3V0IHNldHRpbmcgYW4gZXJyb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0N1cnJlbnQgdGhyZWFkLio6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyAgRmlsZSAuKiIsIGxpbmUgNiBpbiA8bW9kdWxlPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX251bGxfd2l0aG91dF9lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuX251bGxfd2l0aG91dF9lcnJvci4qICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yJykKKworICAgIGRlZiB0ZXN0X3JldHVybl9yZXN1bHRfd2l0aF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjM1NzE6IEEgZnVuY3Rpb24gbXVzdCBub3QgcmV0dXJuIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0CisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKCkKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIucmVwbGFjZShiJ1xyJywgYicnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRmF0YWwgUHl0aG9uIGVycm9yOiBhIGZ1bmN0aW9uIHJldHVybmVkIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidyZXN1bHQgd2l0aCBhbiBlcnJvciBzZXRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVmFsdWVFcnJvclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidTeXN0ZW1FcnJvcjogPGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInZnVuY3Rpb24gcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yPiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3JldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidDdXJyZW50IHRocmVhZC4qOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicicgIEZpbGUgLiosIGxpbmUgNiBpbiA8bW9kdWxlPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3IuKiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCcpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFRlc3RQZW5kaW5nQ2FsbHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjY0LDcgKzM1MCw3IEBACiAgICAgICAgICAgICBleGVuYW1lICs9IGV4dAogICAgICAgICAgICAgZXhlcGF0aCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICJNb2R1bGVzIikKKyAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICJQcm9ncmFtcyIpCiAgICAgICAgIHNlbGYudGVzdF9leGUgPSBleGUgPSBvcy5wYXRoLmpvaW4oZXhlcGF0aCwgZXhlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGV4ZSk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlciBkb2Vzbid0IGV4aXN0IiAlIGV4ZSkKQEAgLTI4MywxMiArMzY5LDEzIEBACiAgICAgICAgIGNtZC5leHRlbmQoYXJncykKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJldHVybmNvZGUgJWQsIHN0ZGVyciBpcyAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChwLnJldHVybmNvZGUsIGVycikpCi0gICAgICAgIHJldHVybiBvdXQuZGVjb2RlKCJsYXRpbjEiKSwgZXJyLmRlY29kZSgibGF0aW4xIikKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyCiAKICAgICBkZWYgdGVzdF9zdWJpbnRlcnBzKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMganVzdCBhICJkb24ndCBjcmFzaCIgdGVzdApAQCAtMzE1LDM0ICs0MDIsMzggQEAKICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgIHByaW50KGVycikKKyAgICAgICAgZXhwZWN0ZWRfZXJyb3JzID0gc3lzLl9fc3Rkb3V0X18uZXJyb3JzCiAgICAgICAgIGV4cGVjdGVkX3N0ZGluX2VuY29kaW5nID0gc3lzLl9fc3RkaW5fXy5lbmNvZGluZwogICAgICAgICBleHBlY3RlZF9waXBlX2VuY29kaW5nID0gc2VsZi5fZ2V0X2RlZmF1bHRfcGlwZV9lbmNvZGluZygpCi0gICAgICAgIGV4cGVjdGVkX291dHB1dCA9IG9zLmxpbmVzZXAuam9pbihbCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9ICdcbicuam9pbihbCiAgICAgICAgICItLS0gVXNlIGRlZmF1bHRzIC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogZGVmYXVsdCIsCiAgICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IGRlZmF1bHQiLAotICAgICAgICAic3RkaW46IHswfTpzdHJpY3QiLAotICAgICAgICAic3Rkb3V0OiB7MX06c3RyaWN0IiwKLSAgICAgICAgInN0ZGVycjogezF9OmJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAic3RkaW46IHtpbl9lbmNvZGluZ306e2Vycm9yc30iLAorICAgICAgICAic3Rkb3V0OiB7b3V0X2VuY29kaW5nfTp7ZXJyb3JzfSIsCisgICAgICAgICJzdGRlcnI6IHtvdXRfZW5jb2Rpbmd9OmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlcnJvcnMgb25seSAtLS0iLAogICAgICAgICAiRXhwZWN0ZWQgZW5jb2Rpbmc6IGRlZmF1bHQiLAotICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3RkaW46IHswfTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3Rkb3V0OiB7MX06c3Vycm9nYXRlZXNjYXBlIiwKLSAgICAgICAgInN0ZGVycjogezF9OmJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBpZ25vcmUiLAorICAgICAgICAic3RkaW46IHtpbl9lbmNvZGluZ306aWdub3JlIiwKKyAgICAgICAgInN0ZG91dDoge291dF9lbmNvZGluZ306aWdub3JlIiwKKyAgICAgICAgInN0ZGVycjoge291dF9lbmNvZGluZ306YmFja3NsYXNocmVwbGFjZSIsCiAgICAgICAgICItLS0gU2V0IGVuY29kaW5nIG9ubHkgLS0tIiwKICAgICAgICAgIkV4cGVjdGVkIGVuY29kaW5nOiBsYXRpbi0xIiwKICAgICAgICAgIkV4cGVjdGVkIGVycm9yczogZGVmYXVsdCIsCi0gICAgICAgICJzdGRpbjogbGF0aW4tMTpzdHJpY3QiLAotICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOnN0cmljdCIsCisgICAgICAgICJzdGRpbjogbGF0aW4tMTp7ZXJyb3JzfSIsCisgICAgICAgICJzdGRvdXQ6IGxhdGluLTE6e2Vycm9yc30iLAogICAgICAgICAic3RkZXJyOiBsYXRpbi0xOmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlbmNvZGluZyBhbmQgZXJyb3JzIC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogbGF0aW4tMSIsCi0gICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IHN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRpbjogbGF0aW4tMTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOnN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRlcnI6IGxhdGluLTE6YmFja3NsYXNocmVwbGFjZSJdKS5mb3JtYXQoZXhwZWN0ZWRfc3RkaW5fZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGlwZV9lbmNvZGluZykKKyAgICAgICAgIkV4cGVjdGVkIGVycm9yczogcmVwbGFjZSIsCisgICAgICAgICJzdGRpbjogbGF0aW4tMTpyZXBsYWNlIiwKKyAgICAgICAgInN0ZG91dDogbGF0aW4tMTpyZXBsYWNlIiwKKyAgICAgICAgInN0ZGVycjogbGF0aW4tMTpiYWNrc2xhc2hyZXBsYWNlIl0pCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9IGV4cGVjdGVkX291dHB1dC5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2VuY29kaW5nPWV4cGVjdGVkX3N0ZGluX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZW5jb2Rpbmc9ZXhwZWN0ZWRfcGlwZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPWV4cGVjdGVkX2Vycm9ycykKICAgICAgICAgIyBUaGlzIGlzIHVzZWZ1bCBpZiB3ZSBldmVyIHRyaXAgb3ZlciBvZGQgcGxhdGZvcm0gYmVoYXZpb3VyCiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWRfb3V0cHV0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCA2YjI4MTA2Li5hYjlmNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKIGltcG9ydCBjZ2kKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMzQ0LDYgKzM0NCwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZzLmxpc3RbMF0ubmFtZSwgJ3N1Ym1pdC1uYW1lJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcy5saXN0WzBdLnZhbHVlLCAnTGFycnknKQogCisgICAgZGVmIHRlc3RfZmllbGRzdG9yYWdlX2FzX2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgZnAgPSBCeXRlc0lPKGIneCcgKiAxMCkKKyAgICAgICAgZW52ID0geydSRVFVRVNUX01FVEhPRCc6ICdQVVQnfQorICAgICAgICB3aXRoIGNnaS5GaWVsZFN0b3JhZ2UoZnA9ZnAsIGVudmlyb249ZW52KSBhcyBmczoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmcy5maWxlLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcy5maWxlLmNsb3NlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmZpbGUuY2xvc2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnQsICd4JyAqIDEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0kvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUnKToKKyAgICAgICAgICAgIGZzLmZpbGUucmVhZCgpCiAKICAgICBfcXNfcmVzdWx0ID0gewogICAgICAgICAna2V5MSc6ICd2YWx1ZTEnLApAQCAtNTE5LDkgKzUyOSw1IEBACiAtLUFhQjAzeC0tCiAiIiIKIAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KENnaVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weQppbmRleCAyZTA3MmE5Li5hODdhNDIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHRlbXBfZGlyCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGNnaXRiCkBAIC02Myw4ICs2Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJzwvcD4nLCBvdXQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0Q2dpdGIpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKaW5kZXggNjIyNjU4Ny4uNDA2NGFlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKQEAgLTQ5LDggKzQ5LDUgQEAKICAgICBkZWYgdGVzdF9tYXB0b3VuZGVmaW5lZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCBzdHIsIGInYWJjXDAwMScsIGNvZGVjbmFtZSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ2hhcm1hcENvZGVjVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weSBiL0xpYi90ZXN0L3Rlc3RfY2xhc3MucHkKaW5kZXggZTM4ODNkNi4uNGQ1NTRhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NsYXNzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIHRlc3RtZXRocyA9IFsKIApAQCAtMTMsNiArMTIsOCBAQAogICAgICJyc3ViIiwKICAgICAibXVsIiwKICAgICAicm11bCIsCisgICAgIm1hdG11bCIsCisgICAgInJtYXRtdWwiLAogICAgICJ0cnVlZGl2IiwKICAgICAicnRydWVkaXYiLAogICAgICJmbG9vcmRpdiIsCkBAIC0xNzcsNiArMTc4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q2FsbFN0YWNrKFsoIl9fcm11bF9fIiwgKHRlc3RtZSwgMSkpXSkKIAogICAgICAgICBjYWxsTHN0WzpdID0gW10KKyAgICAgICAgdGVzdG1lIEAgMQorICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX21hdG11bF9fIiwgKHRlc3RtZSwgMSkpXSkKKworICAgICAgICBjYWxsTHN0WzpdID0gW10KKyAgICAgICAgMSBAIHRlc3RtZQorICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX3JtYXRtdWxfXyIsICh0ZXN0bWUsIDEpKV0pCisKKyAgICAgICAgY2FsbExzdFs6XSA9IFtdCiAgICAgICAgIHRlc3RtZSAvIDEKICAgICAgICAgc2VsZi5hc3NlcnRDYWxsU3RhY2soWygiX190cnVlZGl2X18iLCAodGVzdG1lLCAxKSldKQogCkBAIC00OTEsMTAgKzUwMCwxMCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGEoKSAjIFRoaXMgc2hvdWxkIG5vdCBzZWdmYXVsdAotICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBSdW50aW1lRXJyb3IiKQorICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgUmVjdXJzaW9uRXJyb3IiKQogCiAgICAgZGVmIHRlc3RGb3JFeGNlcHRpb25zUmFpc2VkSW5JbnN0YW5jZUdldGF0dHIyKHNlbGYpOgogICAgICAgICAjIFRlc3RzIGZvciBleGNlcHRpb25zIHJhaXNlZCBpbiBpbnN0YW5jZV9nZXRhdHRyMigpLgpAQCAtNTU5LDggKzU2OCw1IEBACiAgICAgICAgIGEgPSBBKGhhc2goQS5mKV4oLTEpKQogICAgICAgICBoYXNoKGEuZikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENsYXNzVGVzdHMpCi0KLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKaW5kZXggNjhiZjE2ZS4uMWY4ODRlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CkBAIC0xLDUgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfSUVFRV83NTQsIGNweXRob25fb25seQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzX0lFRUVfNzU0LCBjcHl0aG9uX29ubHkKIGZyb20gdGVzdC50ZXN0X21hdGggaW1wb3J0IHBhcnNlX3Rlc3RmaWxlLCB0ZXN0X2ZpbGUKK2ltcG9ydCB0ZXN0LnRlc3RfbWF0aCBhcyB0ZXN0X21hdGgKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNtYXRoLCBtYXRoCiBmcm9tIGNtYXRoIGltcG9ydCBwaGFzZSwgcG9sYXIsIHJlY3QsIHBpCkBAIC01NjAsOCArNTYxLDQ2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydENvbXBsZXhJZGVudGljYWwoY21hdGguYXRhbmgoeiksIHopCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChDTWF0aFRlc3RzKQorY2xhc3MgSXNDbG9zZVRlc3RzKHRlc3RfbWF0aC5Jc0Nsb3NlVGVzdHMpOgorICAgIGlzY2xvc2UgPSBjbWF0aC5pc2Nsb3NlCisKKyAgICBkZWYgdGVzdF9yZWplY3RfY29tcGxleF90b2xlcmFuY2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlzY2xvc2UoMWosIDFqLCByZWxfdG9sPTFqKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaXNjbG9zZSgxaiwgMWosIGFic190b2w9MWopCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5pc2Nsb3NlKDFqLCAxaiwgcmVsX3RvbD0xaiwgYWJzX3RvbD0xaikKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfdmFsdWVzKHNlbGYpOgorICAgICAgICAjIHRlc3QgY29tcGxleCB2YWx1ZXMgdGhhdCBhcmUgY2xvc2UgdG8gd2l0aGluIDEyIGRlY2ltYWwgcGxhY2VzCisgICAgICAgIGNvbXBsZXhfZXhhbXBsZXMgPSBbKDEuMCsxLjBqLCAxLjAwMDAwMDAwMDAwMSsxLjBqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wKzEuMGosIDEuMCsxLjAwMDAwMDAwMDAwMWopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMS4wKzEuMGosIC0xLjAwMDAwMDAwMDAwMSsxLjBqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wLTEuMGosIDEuMC0wLjk5OTk5OTk5OTk5OWopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGNvbXBsZXhfZXhhbXBsZXMsIHJlbF90b2w9MWUtMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoY29tcGxleF9leGFtcGxlcywgcmVsX3RvbD0xZS0xMykKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmVhcl96ZXJvKHNlbGYpOgorICAgICAgICAjIHRlc3QgdmFsdWVzIG5lYXIgemVybyB0aGF0IGFyZSBuZWFyIHRvIHdpdGhpbiB0aHJlZSBkZWNpbWFsIHBsYWNlcworICAgICAgICBuZWFyX3plcm9fZXhhbXBsZXMgPSBbKDAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMDAxKzAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTAuMDAxKzAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEtMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMC4wMDEtMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKG5lYXJfemVyb19leGFtcGxlcywgYWJzX3RvbD0xLjVlLTAzKQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKG5lYXJfemVyb19leGFtcGxlcywgYWJzX3RvbD0wLjVlLTAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZSgwLjAwMS0wLjAwMWosIDAuMDAxKzAuMDAxaiwgYWJzX3RvbD0yZS0wMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdENsb3NlKDAuMDAxLTAuMDAxaiwgMC4wMDErMC4wMDFqLCBhYnNfdG9sPTFlLTAzKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CmluZGV4IGNiOWJiZGQuLjBmZWI2M2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQpAQCAtOCw4ICs4LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgIGFzc2VydF9weXRob25fZmFpbHVyZSkKIAogCkBAIC01OSw3ICs1OSw3IEBACiAKICAgICBkZWYgdGVzdF94b3B0aW9ucyhzZWxmKToKICAgICAgICAgZGVmIGdldF94b3B0aW9ucygqYXJncyk6Ci0gICAgICAgICAgICAjIHVzZSBzdWJwcm9jZXNzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIHRlc3Quc2NyaXB0X2hlbHBlciBhZGRzCisgICAgICAgICAgICAjIHVzZSBzdWJwcm9jZXNzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGFkZHMKICAgICAgICAgICAgICMgIi1YIGZhdWx0aGFuZGxlciIgdG8gdGhlIGNvbW1hbmQgbGluZQogICAgICAgICAgICAgYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1FJykgKyBhcmdzCiAgICAgICAgICAgICBhcmdzICs9ICgnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknKQpAQCAtMzQ0LDcgKzM0NCw4IEBACiAgICAgICAgICMgSXNzdWUgIzUzMTk6IGlmIHN0ZG91dC5mbHVzaCgpIGZhaWxzIGF0IHNodXRkb3duLCBhbiBlcnJvciBzaG91bGQKICAgICAgICAgIyBiZSBwcmludGVkIG91dC4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgb3MsIHN5cworICAgICAgICAgICAgaW1wb3J0IG9zLCBzeXMsIHRlc3Quc3VwcG9ydAorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKS5fX2VudGVyX18oKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgneCcpCiAgICAgICAgICAgICBvcy5jbG9zZShzeXMuc3Rkb3V0LmZpbGVubygpKSIiIgogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCkBAIC00NDQsNyArNDQ1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuc3BsaXRsaW5lcygpLmNvdW50KGInVW5rbm93biBvcHRpb246IC1hJyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBvdXQpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCisgICAgQHVuaXR0ZXN0LnNraXBJZihzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHJ1biAtSSB0ZXN0cyB3aGVuIFBZVEhPTiBlbnYgdmFycyBhcmUgcmVxdWlyZWQuJykKICAgICBkZWYgdGVzdF9pc29sYXRlZG1vZGUoc2VsZik6CiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1JJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKaW5kZXggNzM1MDE2NC4uZmRhM2U2MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKQEAgLTEzLDEwICsxMyw5IEBACiAKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKLSAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogdmVyYm9zZSA9IHN1cHBvcnQudmVyYm9zZQogCkBAIC0yMjMsMTQgKzIyMiwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrX3JlcGxfc3RkZXJyX2ZsdXNoKFRydWUpCiAKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3Rfc2NyaXB0X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcpCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKQEAgLTI0MCwxNCArMjM5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQpAQCAtMjU3LDE5ICsyNTYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBmaW5kICdfX21haW5fXycgbW9kdWxlIGluICVyIiAlIHNjcmlwdF9kaXIKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ltcG9ydF9lcnJvcihzY3JpcHRfZGlyLCBtc2cpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKQEAgLTI3NywxNCArMjc2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdub3RfbWFpbicpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBtc2cgPSAiY2FuJ3QgZmluZCAnX19tYWluX18nIG1vZHVsZSBpbiAlciIgJSB6aXBfbmFtZQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHppcF9uYW1lLCBtc2cpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnc2NyaXB0JykKQEAgLTI5NCwxNCArMjkzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcF9uYW1lLCAndGVzdF9wa2cnLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fc3VicGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JywgZGVwdGg9MikKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnRlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCkBAIC0zMDksNyArMzA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycpCkBAIC0zMTksNyArMzE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycpCkBAIC0zMzIsNyArMzMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgbXNnID0gKCIndGVzdF9wa2cnIGlzIGEgcGFja2FnZSBhbmQgY2Fubm90ICIKQEAgLTM0MSw3ICszNDAsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKGxhdW5jaF9uYW1lLCBtc2cpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX3JlY3Vyc2lvbihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgbWFpbl9kaXIgPSBvcy5wYXRoLmpvaW4ocGtnX2RpciwgJ19fbWFpbl9fJykKQEAgLTM1NSw3ICszNTQsNyBAQAogICAgIGRlZiB0ZXN0X2lzc3VlODIwMihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgcGFja2FnZSBfX2luaXRfXyBtb2R1bGVzIHNlZSAiLW0iIGluIHN5cy5hcmd2MCB3aGlsZQogICAgICAgICAjIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZSB0byBleGVjdXRlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpciwgImltcG9ydCBzeXM7IHByaW50KCdpbml0X2FyZ3YwPT0lcicgJSBzeXMuYXJndlswXSkiKQpAQCAtMzcyLDcgKzM3MSw3IEBACiAgICAgZGVmIHRlc3RfaXNzdWU4MjAyX2Rhc2hfY19maWxlX2lnbm9yZWQoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgIi1jIiBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQogICAgICAgICAjIGRvZXMgbm90IGFsdGVyIHRoZSB2YWx1ZSBvZiBzeXMucGF0aFswXQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCItYyIsICJ3IikgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCkBAIC0zODcsNyArMzg2LDcgQEAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9tX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLW0iIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgZG9lcyBub3QgYWx0ZXIgdGhlIHZhbHVlIG9mIHN5cy5wYXRoWzBdCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnb3RoZXInKQogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oIi1tIiwgInciKSBhcyBmOgpAQCAtNDAyLDcgKzQwMSw3IEBACiAgICAgICAgICMgSWYgYSBtb2R1bGUgaXMgaW52b2tlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgZmxhZwogICAgICAgICAjIGFuZCByZXN1bHRzIGluIGFuIGVycm9yIHRoYXQgdGhlIHJldHVybiBjb2RlIHRvIHRoZQogICAgICAgICAjIHNoZWxsIGlzICcxJwotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6CiAgICAgICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCkBAIC00MjIsNyArNDIxLDcgQEAKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCiAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQogICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKQEAgLTQ2Niw3ICs0NjUsNyBAQAogICAgICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoZXJyb3IpCiAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQogICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CmluZGV4IDdhODBhODAuLjMzOTRiMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtMSw2ICsxLDcgQEAKICJUZXN0IEludGVyYWN0aXZlQ29uc29sZSBhbmQgSW50ZXJhY3RpdmVJbnRlcnByZXRlciBmcm9tIGNvZGUgbW9kdWxlIgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTc4LDkgKzc5LDQwIEBACiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDEpCiAKKyAgICBkZWYgdGVzdF9jYXVzZV90YihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIGZyb20gQXR0cmlidXRlRXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIG91dHB1dCA9ICcnLmpvaW4oJycuam9pbihjYWxsWzFdKSBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpCisgICAgICAgIGV4cGVjdGVkID0gZGVkZW50KCIiIgorICAgICAgICBBdHRyaWJ1dGVFcnJvcgogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEludGVyYWN0aXZlQ29uc29sZSkKKyAgICAgICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKworICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgRmlsZSAiPGNvbnNvbGU+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICBWYWx1ZUVycm9yCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfY29udGV4dF90YihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInRyeTogaGFtXG5leGNlcHQ6IGVnZ3NcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgb3V0cHV0ID0gJycuam9pbignJy5qb2luKGNhbGxbMV0pIGZvciBjYWxsIGluIHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscykKKyAgICAgICAgZXhwZWN0ZWQgPSBkZWRlbnQoIiIiCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICBGaWxlICI8Y29uc29sZT4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgIE5hbWVFcnJvcjogbmFtZSAnaGFtJyBpcyBub3QgZGVmaW5lZAorCisgICAgICAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKKworICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgRmlsZSAiPGNvbnNvbGU+IiwgbGluZSAyLCBpbiA8bW9kdWxlPgorICAgICAgICBOYW1lRXJyb3I6IG5hbWUgJ2VnZ3MnIGlzIG5vdCBkZWZpbmVkCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0cHV0KQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCAxMzI3ZjExLi5lZTFlMjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTE1MCw2ICsxNTAsMjIgQEAKICAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKKyAgICBkZWYgdGVzdF9uYW1lZXNjYXBlKHNlbGYpOgorICAgICAgICAjIERvZXMgdGhlIHNhbWUgYXMgYmFja3NsYXNoZXNjYXBlLCBidXQgcHJlZmVycyBgYFxOey4uLn1gYCBlc2NhcGUKKyAgICAgICAgIyBzZXF1ZW5jZXMuCisgICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMFxVMDAxMGZmZmYiCisgICAgICAgIHNvdXQgPSAoYidhXFxOe05PVCBTSUdOfVxcTntFVEhJT1BJQyBTWUxMQUJMRSBTRUV9XFxOe0VVUk8gU0lHTn0nCisgICAgICAgICAgICAgICAgYidcXE57Q0pLIFVOSUZJRUQgSURFT0dSQVBILTgwMDB9XFxVMDAxMGZmZmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpbi5lbmNvZGUoImFzY2lpIiwgIm5hbWVyZXBsYWNlIiksIHNvdXQpCisKKyAgICAgICAgc291dCA9IChiJ2FceGFjXFxOe0VUSElPUElDIFNZTExBQkxFIFNFRX1cXE57RVVSTyBTSUdOfScKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJuYW1lcmVwbGFjZSIpLCBzb3V0KQorCisgICAgICAgIHNvdXQgPSAoYidhXHhhY1xcTntFVEhJT1BJQyBTWUxMQUJMRSBTRUV9XHhhNCcKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiaXNvLTg4NTktMTUiLCAibmFtZXJlcGxhY2UiKSwgc291dCkKKwogICAgIGRlZiB0ZXN0X2RlY29kaW5nX2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIGEgdGVzdCBmb3IgYSBkZWNvZGluZyBjYWxsYmFjayBoYW5kbGVyCiAgICAgICAgICMgdGhhdCBhbGxvd3MgdGhlIGRlY29kaW5nIG9mIHRoZSBpbnZhbGlkIHNlcXVlbmNlCkBAIC0yMjAsNiArMjM2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCiAgICAgICAgICAgICAgICAgKQogCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFxceDAwIgorICAgICAgICAgICAgICAgICkKKwogICAgICAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKIAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0yODcsNyArMzA4LDcgQEAKICAgICBkZWYgdGVzdF9sb25nc3RyaW5ncyhzZWxmKToKICAgICAgICAgIyB0ZXN0IGxvbmcgc3RyaW5ncyB0byBjaGVjayBmb3IgbWVtb3J5IG92ZXJmbG93IHByb2JsZW1zCiAgICAgICAgIGVycm9ycyA9IFsgInN0cmljdCIsICJpZ25vcmUiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsCi0gICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiXQorICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIiwgIm5hbWVyZXBsYWNlIl0KICAgICAgICAgIyByZWdpc3RlciB0aGUgaGFuZGxlcnMgdW5kZXIgZGlmZmVyZW50IG5hbWVzLAogICAgICAgICAjIHRvIHByZXZlbnQgdGhlIGNvZGVjIGZyb20gcmVjb2duaXppbmcgdGhlIG5hbWUKICAgICAgICAgZm9yIGVyciBpbiBlcnJvcnM6CkBAIC01NTAsMTcgKzU3MSw2IEBACiAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgVW5pY29kZUVycm9yKCJvdWNoIikKICAgICAgICAgKQotICAgICAgICAjICJiYWNrc2xhc2hyZXBsYWNlIiBjYW4gb25seSBiZSB1c2VkIGZvciBlbmNvZGluZwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKLSAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJceGZmIiksIDAsIDEsICJvdWNoIikKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKLSAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiXHUzMDQyIiwgMCwgMSwgIm91Y2giKQotICAgICAgICApCiAgICAgICAgICMgVXNlIHRoZSBjb3JyZWN0IGV4Y2VwdGlvbgogICAgICAgICB0ZXN0cyA9IFsKICAgICAgICAgICAgICgiXHUzMDQyIiwgIlxcdTMwNDIiKSwKQEAgLTU4NSw2ICs1OTUsNzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxICsgbGVuKHMpLCAib3VjaCIpKSwKICAgICAgICAgICAgICAgICAgICAgKHIsIDEgKyBsZW4ocykpCiAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiYSIgKyBzICsgImIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGIiYSIsICJcXHg2MSIpLAorICAgICAgICAgICAgKGIiXG4iLCAiXFx4MGEiKSwKKyAgICAgICAgICAgIChiIlx4MDAiLCAiXFx4MDAiKSwKKyAgICAgICAgICAgIChiIlx4ZmYiLCAiXFx4ZmYiKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgYiwgciBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ5dGVzPWIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJhIiArIGIgKyBiImIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAgICAgKHIsIDIpCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmFkYW5kZ29vZG5hbWVyZXBsYWNlZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNvbXBsYWlucyBhYm91dCBhIG5vbi1leGNlcHRpb24gcGFzc2VkIGluCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgIDQyCisgICAgICAgICkKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNvbXBsYWlucyBhYm91dCB0aGUgd3JvbmcgZXhjZXB0aW9uIHR5cGVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgIFVuaWNvZGVFcnJvcigib3VjaCIpCisgICAgICAgICkKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGVuY29kaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJceGZmIiksIDAsIDEsICJvdWNoIikKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICBVbmljb2RlVHJhbnNsYXRlRXJyb3IoIlx1MzA0MiIsIDAsIDEsICJvdWNoIikKKyAgICAgICAgKQorICAgICAgICAjIFVzZSB0aGUgY29ycmVjdCBleGNlcHRpb24KKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAoIlx1MzA0MiIsICJcXE57SElSQUdBTkEgTEVUVEVSIEF9IiksCisgICAgICAgICAgICAoIlx4MDAiLCAiXFx4MDAiKSwKKyAgICAgICAgICAgICgiXHVmYmY5IiwgIlxcTntBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggIgorICAgICAgICAgICAgICAgICAgICAgICAiSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STX0iKSwKKyAgICAgICAgICAgICgiXFUwMDBlMDA3ZiIsICJcXE57Q0FOQ0VMIFRBR30iKSwKKyAgICAgICAgICAgICgiXFUwMDEwZmZmZiIsICJcXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMKKyAgICAgICAgICAgICgiXHVkODAwIiwgIlxcdWQ4MDAiKSwKKyAgICAgICAgICAgICgiXHVkZmZmIiwgIlxcdWRmZmYiKSwKKyAgICAgICAgICAgICgiXHVkODAwXHVkZmZmIiwgIlxcdWQ4MDBcXHVkZmZmIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIHMsIHIgaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiYSIgKyBzICsgImIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9iYWRhbmRnb29kc3Vycm9nYXRlZXNjYXBlZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgc3Vycm9nYXRlZXNjYXBlX2Vycm9ycyA9IGNvZGVjcy5sb29rdXBfZXJyb3IoJ3N1cnJvZ2F0ZWVzY2FwZScpCkBAIC02NjMsMjAgKzczOSwyNCBAQAogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKGVuYywgImEiLmVuY29kZShlbmMpLCAwLCAxLCAib3VjaCIpCiAgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgcyBpbiAoIlx1ZDgwMCIsICJcdWRmZmYiLCAiXHVkODAwXHVkZmZmIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlcGFzc19lcnJvcnMsCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCBzLCAwLCBsZW4ocyksICJvdWNoIikKKyAgICAgICAgICAgICAgICApCiAgICAgICAgIHRlc3RzID0gWwotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWQ4MDAiLCBiJ1x4ZWRceGEwXHg4MCcsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWQ4MDAiLCBiJ1x4ZWRceGEwXHg4MCcsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWQ4MDAiLCBiJ1x4MDBceGQ4JywgMiksCiAgICAgICAgICAgICAoInV0Zi0xNmJlIiwgIlx1ZDgwMCIsIGInXHhkOFx4MDAnLCAyKSwKICAgICAgICAgICAgICgidXRmLTMybGUiLCAiXHVkODAwIiwgYidceDAwXHhkOFx4MDBceDAwJywgNCksCiAgICAgICAgICAgICAoInV0Zi0zMmJlIiwgIlx1ZDgwMCIsIGInXHgwMFx4MDBceGQ4XHgwMCcsIDQpLAotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWRmZmYiLCBiJ1x4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWRmZmYiLCBiJ1x4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWRmZmYiLCBiJ1x4ZmZceGRmJywgMiksCiAgICAgICAgICAgICAoInV0Zi0xNmJlIiwgIlx1ZGZmZiIsIGInXHhkZlx4ZmYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTMybGUiLCAiXHVkZmZmIiwgYidceGZmXHhkZlx4MDBceDAwJywgNCksCiAgICAgICAgICAgICAoInV0Zi0zMmJlIiwgIlx1ZGZmZiIsIGInXHgwMFx4MDBceGRmXHhmZicsIDQpLAotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZWRceGEwXHg4MFx4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZWRceGEwXHg4MFx4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4MDBceGQ4XHhmZlx4ZGYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTE2YmUiLCAiXHVkODAwXHVkZmZmIiwgYidceGQ4XHgwMFx4ZGZceGZmJywgMiksCkBAIC02OTQsNyArNzc0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycygKICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcihlbmMsIGJ5dGVhcnJheShiImEiICsgYls6bl0gKyBiImIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBuLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxICsgbiwgIm91Y2giKSksCiAgICAgICAgICAgICAgICAgICAgIChzWzoxXSwgMSArIG4pCiAgICAgICAgICAgICAgICAgKQogCkBAIC03MzgsNiArODE4LDEwIEBACiAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwX2Vycm9yKCJiYWNrc2xhc2hyZXBsYWNlIikKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoIm5hbWVyZXBsYWNlIikKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfdW5lbmNvZGFibGVyZXBsYWNlbWVudChzZWxmKToKICAgICAgICAgZGVmIHVuZW5jcmVwbChleGMpOgpAQCAtODkwLDcgKzk3NCw4IEBACiAgICAgICAgIGNsYXNzIEQoZGljdCk6CiAgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgIGZvciBlcnIgaW4gKCJzdHJpY3QiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsICJiYWNrc2xhc2hyZXBsYWNlIiwgInRlc3QucG9zcmV0dXJuIik6CisgICAgICAgIGZvciBlcnIgaW4gKCJzdHJpY3QiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIiwgIm5hbWVyZXBsYWNlIiwgInRlc3QucG9zcmV0dXJuIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgIlx4ZmYiLCBlcnIsIHsweGZmOiBOb25lfSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgIlx4ZmYiLCBlcnIsIEQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCAiXHhmZiIsIGVyciwgezB4ZmY6IDMwMH0pCkBAIC05MDUsNyArOTkwLDcgQEAKICAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgI3NlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIEQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiXHhmZiIudHJhbnNsYXRlLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIHsweGZmOiBzeXMubWF4dW5pY29kZSsxfSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiXHhmZiIudHJhbnNsYXRlLCB7MHhmZjogKCl9KQogCiAgICAgZGVmIHRlc3RfYnVnODI4NzM3KHNlbGYpOgpAQCAtOTY3LDYgKzEwNTIsNyBAQAogICAgICAgICAgICAgY29kZWNzLmlnbm9yZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MucmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICBjb2RlY3MubmFtZXJlcGxhY2VfZXJyb3JzLAogICAgICAgICAgICAgY29kZWNzLnhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoJ3N1cnJvZ2F0ZWVzY2FwZScpLAogICAgICAgICAgICAgY29kZWNzLmxvb2t1cF9lcnJvcignc3Vycm9nYXRlcGFzcycpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggNjBlNjllYi4uZDBlM2ExNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC04Myw4ICs4Myw1IEBACiAgICAgICAgIChiImFifntceDc5XHg3OVx4NDFceDQ0fn1jZCIsICJyZXBsYWNlIiwgImFiXHVmZmZkXHVmZmZkXHU4MDRhY2QiKSwKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggMjVjMDViNi4uYmI5YmUxMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC0xOSw4ICsxOSw1IEBACiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CmluZGV4IDg3NzY4NjQuLjhhM2NhNzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKQEAgLTM4LDggKzM4LDUgQEAKICAgICBkZWYgdGVzdF9jaHVua2NvZGluZyhzZWxmKToKICAgICAgICAgcGFzcwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IDQwOTE5NDguLjQ0YjYzYTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtMTIzLDggKzEyMyw1IEBACiAgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCiAgICAgKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGNkNzY5NmEuLmI2YTc0ZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtNjYsOCArNjYsNSBAQAogICAgICAgICAoYiJceDhDQnh5IiwgInJlcGxhY2UiLCAgIlx1RkZGREJ4eSIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQppbmRleCBlYTZlMWMxLi45MTc0Mjk2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKQEAgLTE5LDggKzE5LDUgQEAKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1OGIxMCIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IDhiNzhjMjQuLmE0YTZmOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC0zNDksNiArMzQ5LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsIHNlbGYuZW5jb2RpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiW1xcdWRjODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgIm5hbWVyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltcXHVkYzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbJiM1NjQ0ODtdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImlnbm9yZSIpLApAQCAtMzc2LDYgKzM3OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBhZnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgc2VsZi5pbGxfZm9ybWVkX3NlcXVlbmNlX3JlcGxhY2UgKyBhZnRlcikKKyAgICAgICAgICAgIGJhY2tzbGFzaHJlcGxhY2UgPSAnJy5qb2luKCdcXHglMDJ4JyAlIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIHNlbGYuaWxsX2Zvcm1lZF9zZXF1ZW5jZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgYmFja3NsYXNocmVwbGFjZSArIGFmdGVyKQogCiBjbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiCkBAIC04MDgsNiArODE0LDcgQEAKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAogICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKICAgICAgICAgICAgICkpCiAgICAgICAgIGVsc2U6CkBAIC04NjksNiArODc2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAiYmFja3NsYXNocmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJuYW1lcmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInWyYjNTY0NDg7XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlZXNjYXBlIiksCkBAIC04OTAsMTAgKzg5OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogCi0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2tpcFRlc3QoImlzc3VlICMyMDU3MTogY29kZSBwYWdlIDY1MDAxIGNvZGVjIGRvZXMgbm90ICIKLSAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCBwYXJ0aWFsIGRlY29kZXIgeWV0IikKLQogCiBjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi03IgpAQCAtMTA4MSw2ICsxMDg2LDcgQEAKIGNsYXNzIEVzY2FwZURlY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGIiIiksIChiIiIsIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGJ5dGVhcnJheSgpKSwgKGIiIiwgMCkpCiAKICAgICBkZWYgdGVzdF9yYXcoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy5lc2NhcGVfZGVjb2RlCkBAIC0xMjk5LDE0ICsxMzA1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiKQogICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgogICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MDBceDExXHgwMCIKKyAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSA9IHIiXHgwMFx4MDBceDExXHgwMCIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGludmFsaWQgPSBiIlx4MDBceDExXHgwMFx4MDAiCisgICAgICAgICAgICBpbnZhbGlkX2JhY2tzbGFzaHJlcGxhY2UgPSByIlx4MDBceDExXHgwMFx4MDAiCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZC5kZWNvZGUsICJ1bmljb2RlX2ludGVybmFsIikKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludmFsaWQuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIiwgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1ZmZmZCcpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnZhbGlkLmRlY29kZSgidW5pY29kZV9pbnRlcm5hbCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6CkBAIC0xNjEyLDYgKzE2MjMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZGVjb2RlKGInYWJjJyksICdhYmMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5kZWNvZGUsIGInXHhmZicsICdhc2NpaScpCiAKKyAgICAgICAgIyB0ZXN0IGtleXdvcmRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmRlY29kZShvYmo9YidceGU0XHhmNlx4ZmMnLCBlbmNvZGluZz0nbGF0aW4tMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdceGU0XHhmNlx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5kZWNvZGUoYidbXHhmZl0nLCAnYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdbXScpCisKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVuY29kZSgnXHhlNFx4ZjZceGZjJywgJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZTRceGY2XHhmYycpCkBAIC0xNjIwLDYgKzE2MzcsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdhYmMnKSwgYidhYmMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIGNvZGVjcy5lbmNvZGUsICdceGZmZmYnLCAnYXNjaWknKQogCisgICAgICAgICMgdGVzdCBrZXl3b3JkcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lbmNvZGUob2JqPSdceGU0XHhmNlx4ZmMnLCBlbmNvZGluZz0nbGF0aW4tMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlNFx4ZjZceGZjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdbXHhmZl0nLCAnYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW10nKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLnJlZ2lzdGVyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5yZWdpc3RlciwgNDIpCkBAIC0xNjY4LDYgKzE2OTEsNyBAQAogICAgICAgICAgICAgInJlZ2lzdGVyX2Vycm9yIiwgImxvb2t1cF9lcnJvciIsCiAgICAgICAgICAgICAic3RyaWN0X2Vycm9ycyIsICJyZXBsYWNlX2Vycm9ycyIsICJpZ25vcmVfZXJyb3JzIiwKICAgICAgICAgICAgICJ4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMiLCAiYmFja3NsYXNocmVwbGFjZV9lcnJvcnMiLAorICAgICAgICAgICAgIm5hbWVyZXBsYWNlX2Vycm9ycyIsCiAgICAgICAgICAgICAib3BlbiIsICJFbmNvZGVkRmlsZSIsCiAgICAgICAgICAgICAiaXRlcmVuY29kZSIsICJpdGVyZGVjb2RlIiwKICAgICAgICAgICAgICJCT00iLCAiQk9NX0JFIiwgIkJPTV9MRSIsCkBAIC0xNzk4LDcgKzE4MjIsOSBAQAogICAgICJpc284ODU5XzkiLAogICAgICJqb2hhYiIsCiAgICAgImtvaThfciIsCisgICAgImtvaThfdCIsCiAgICAgImtvaThfdSIsCisgICAgImt6MTA0OCIsCiAgICAgImxhdGluXzEiLAogICAgICJtYWNfY3lyaWxsaWMiLAogICAgICJtYWNfZ3JlZWsiLApAQCAtMjAyOSw2ICsyMDU1LDE2IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAiYWIiKSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAiYWJcdWZmZmUiKSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImlnbm9yZSIsICJhYiIpLAogICAgICAgICAgICAgKCJhYiIsIDMpCiAgICAgICAgICkKQEAgLTIxMDUsNiArMjE0MSwyNSBAQAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYid9KSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAnYScsIDE6ICdiJywgMjogTm9uZX0pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgICMgSXNzdWUgIzE0ODUwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6ICdhJywgMTogJ2InLCAyOiAnXHVmZmZlJ30pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiaWdub3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYid9KSwKICAgICAgICAgICAgICgiYWIiLCAzKQpAQCAtMjE4MSw2ICsyMjM2LDE4IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBifSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogYSwgMTogYiwgMjogMHhGRkZFfSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJpZ25vcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBifSksCiAgICAgICAgICAgICAoImFiIiwgMykKQEAgLTIyMzksOSArMjMwNiwxMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZSwgYnIiXFUwMDExMDAwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKHIiXHg1Y1x4NTVceDMwXHgzMFx4MzFceDMxXHgzMFx4MzBceDMwXHgzMCIsIDEwKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAiYmFja3NsYXNocmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIChyIlx4NWNceDU1XHgzMFx4MzBceDMxXHgzMVx4MzBceDMwXHgzMFx4MzAiLCAxMCkpCiAKIAogY2xhc3MgVW5pY29kZUVzY2FwZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjgyNiwxNSArMjg5NywxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVFbmNvZGVFcnJvciwgJ2NwOTMyJywKICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA5MzIsICdceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdjcDkzMicsCi0gICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgOTMyLCBiJ1x4ODFceDAwJykKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA5MzIsIGInXHg4MVx4MDAnLCAnc3RyaWN0JywgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdDUF9VVEY4JywKLSAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCBzZWxmLkNQX1VURjgsIGInXHhmZicpCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnLCAnc3RyaWN0JywgVHJ1ZSkKIAogICAgIGRlZiBjaGVja19kZWNvZGUoc2VsZiwgY3AsIHRlc3RzKToKICAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycywgVHJ1ZSkKICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZGVjb2RlICVhIGZyb20gImNwJXMiIHdpdGggJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHJhdywgY3AsIGVycm9ycywgZXJyKSkKQEAgLTI4NDYsNyArMjkxNyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycywgVHJ1ZSkKIAogICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKICAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CkBAIC0yODc0LDcgKzI5NDUsMTIgQEAKICAgICAgICAgICAgICgnW1x4ZmZdJywgJ3JlcGxhY2UnLCBiJ1t5XScpLAogICAgICAgICAgICAgKCdbXHUyMGFjXScsICdyZXBsYWNlJywgYidbP10nKSwKICAgICAgICAgICAgICgnW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1tcXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ25hbWVyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXE57TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVN9XScpLAogICAgICAgICAgICAgKCdbXHhmZl0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzI1NTtdJyksCisgICAgICAgICAgICAoJ1x1ZGNmZicsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnW1x1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x1ZGNmZl0nLCAnc3Vycm9nYXRlcGFzcycsIE5vbmUpLAogICAgICAgICApKQogICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSg5MzIsICgKICAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCkBAIC0yODgzLDEwICsyOTU5LDEzIEBACiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3RyaWN0JywgTm9uZSksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceGZmXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZXBhc3MnLCBOb25lKSwKICAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3N0cmljdCcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnaWdub3JlJywgJ1x4MDBhYmMnKSwKICAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHgwMGFiYycpLAorICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MVx4MDBhYmMnKSwKICAgICAgICAgKSkKIAogICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKQEAgLTI4OTQsOSArMjk3MywxMiBAQAogICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKICAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAogICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCiAgICAgICAgICAgICAoJ1x1MDE0MScsICdzdHJpY3QnLCBOb25lKSwKICAgICAgICAgICAgICgnXHUwMTQxJywgJ2lnbm9yZScsIGInJyksCiAgICAgICAgICAgICAoJ1x1MDE0MScsICdyZXBsYWNlJywgYidMJyksCisgICAgICAgICAgICAoJ1x1ZGM5OCcsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1x4OTgnKSwKKyAgICAgICAgICAgICgnXHVkYzk4JywgJ3N1cnJvZ2F0ZXBhc3MnLCBOb25lKSwKICAgICAgICAgKSkKICAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoMTI1MiwgKAogICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKaW5kZXggYjY1NDIzYi4uNTA5YmY1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKQEAgLTMsNyArMyw3IEBACiAgICBOaWNrIE1hdGhld3NvbgogIiIiCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGlzX2p5dGhvbgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX2p5dGhvbgogCiBmcm9tIGNvZGVvcCBpbXBvcnQgY29tcGlsZV9jb21tYW5kLCBQeUNGX0RPTlRfSU1QTFlfREVERU5UCiBpbXBvcnQgaW8KQEAgLTI5Niw5ICsyOTYsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUoImEgPSAxXG4iLCAiZGVmIiwgJ3NpbmdsZScpLmNvX2ZpbGVuYW1lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQ29kZW9wVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKaW5kZXggNjZkYjkwZi4uNDEyNGY5MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CkBAIC0xLDcgKzEsOCBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgY29sbGVjdGlvbnMucHkuIiIiCiAKIGltcG9ydCB1bml0dGVzdCwgZG9jdGVzdCwgb3BlcmF0b3IKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGZvcmdldCwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmb3JnZXQsIHVubGluaywgaW1wb3J0X2ZyZXNoX21vZHVsZQoraW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBpbnNwZWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIENvdW50ZXIsIE9yZGVyZWREaWN0LCBfY291bnRfZWxlbWVudHMKQEAgLTExLDkgKzEyLDEyIEBACiBpbXBvcnQga2V5d29yZAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyRGljdAoraW1wb3J0IHR5cGVzCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyRGljdCwgVXNlclN0cmluZywgVXNlckxpc3QKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBd2FpdGFibGUsIENvcm91dGluZSwgQXN5bmNJdGVyYXRvciwgQXN5bmNJdGVyYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvcgogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0CiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKQEAgLTIxLDYgKzI1LDI2IEBACiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCiAKK2NsYXNzIFRlc3RVc2VyT2JqZWN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9zdXBlcnNldF90ZXN0KHNlbGYsIGEsIGIpOgorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCgKKyAgICAgICAgICAgIHNldChkaXIoYSkpLAorICAgICAgICAgICAgc2V0KGRpcihiKSksCisgICAgICAgICAgICAne2F9IHNob3VsZCBoYXZlIGFsbCB0aGUgbWV0aG9kcyBvZiB7Yn0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBhPWEuX19uYW1lX18sCisgICAgICAgICAgICAgICAgYj1iLl9fbmFtZV9fLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgIGRlZiB0ZXN0X3N0cl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fc3VwZXJzZXRfdGVzdChVc2VyU3RyaW5nLCBzdHIpCisKKyAgICBkZWYgdGVzdF9saXN0X3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9zdXBlcnNldF90ZXN0KFVzZXJMaXN0LCBsaXN0KQorCisgICAgZGVmIHRlc3RfZGljdF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fc3VwZXJzZXRfdGVzdChVc2VyRGljdCwgZGljdCkKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIENoYWluTWFwIChoZWxwZXIgY2xhc3MgZm9yIGNvbmZpZ3BhcnNlciBhbmQgdGhlIHN0cmluZyBtb2R1bGUpCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTk2LDYgKzIyMCwxNCBAQAogICAgICAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19kb2NfXywgJ1BvaW50KHgsIHkpJykKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X2RvY193cml0YWJsZShzZWxmKToKKyAgICAgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50LnguX19kb2NfXywgJ0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMCcpCisgICAgICAgIFBvaW50LnguX19kb2NfXyA9ICdkb2NzdHJpbmcgZm9yIFBvaW50LngnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQueC5fX2RvY19fLCAnZG9jc3RyaW5nIGZvciBQb2ludC54JykKKwogICAgIGRlZiB0ZXN0X25hbWVfZml4ZXIoc2VsZik6CiAgICAgICAgIGZvciBzcGVjLCByZW5hbWVkIGluIFsKICAgICAgICAgICAgIFsoJ2VmZycsICdnJWhpJyksICAoJ2VmZycsICdfMScpXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZpZWxkIHdpdGggbm9uLWFscGhhIGNoYXIKQEAgLTQ1NSw2ICs0ODcsMTIxIEBACiAKIGNsYXNzIFRlc3RPbmVUcmlja1BvbnlBQkNzKEFCQ1Rlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X0F3YWl0YWJsZShzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBjb3JvKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGFzeW5jIGRlZiBuZXdfY29ybygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJhcjoKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgICAgICBjbGFzcyBNaW5pbWFsQ29ybyhDb3JvdXRpbmUpOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkudGhyb3codHlwLCB2YWwsIHRiKQorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIGludCgpLCBnZW4oKSwgb2JqZWN0KCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIEF3YWl0YWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBBd2FpdGFibGUpLCByZXByKHR5cGUoeCkpKQorCisgICAgICAgIHNhbXBsZXMgPSBbQmFyKCksIE1pbmltYWxDb3JvKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQXdhaXRhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXdhaXRhYmxlKSkKKworICAgICAgICBjID0gY29ybygpCisgICAgICAgICMgSXRlcmFibGUgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyB3aXRoIENPX0lURVJBQkxFX0NPUk9VVElORQorICAgICAgICAjIGZsYWcgZG9uJ3QgaGF2ZSAnX19hd2FpdF9fJyBtZXRob2QsIGhlbmNlIGNhbid0IGJlIGluc3RhbmNlcworICAgICAgICAjIG9mIEF3YWl0YWJsZS4gVXNlIGluc3BlY3QuaXNhd2FpdGFibGUgdG8gZGV0ZWN0IHRoZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjLCBBd2FpdGFibGUpCisKKyAgICAgICAgYyA9IG5ld19jb3JvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEF3YWl0YWJsZSkKKyAgICAgICAgYy5jbG9zZSgpICMgYXdvaWQgUnVudGltZVdhcm5pbmcgdGhhdCBjb3JvKCkgd2FzIG5vdCBhd2FpdGVkCisKKyAgICAgICAgY2xhc3MgQ29yb0xpa2U6IHBhc3MKKyAgICAgICAgQ29yb3V0aW5lLnJlZ2lzdGVyKENvcm9MaWtlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShDb3JvTGlrZSgpLCBBd2FpdGFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDb3JvTGlrZSwgQXdhaXRhYmxlKSkKKyAgICAgICAgQ29yb0xpa2UgPSBOb25lCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpICMgS2lsbCBDb3JvTGlrZSB0byBjbGVhbi11cCBBQkNNZXRhIGNhY2hlCisKKyAgICBkZWYgdGVzdF9Db3JvdXRpbmUoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgY29ybygpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBhc3luYyBkZWYgbmV3X2Nvcm8oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCYXI6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgY2xhc3MgTWluaW1hbENvcm8oQ29yb3V0aW5lKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLnRocm93KHR5cCwgdmFsLCB0YikKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCBpbnQoKSwgZ2VuKCksIG9iamVjdCgpLCBCYXIoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29yb3V0aW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvcm91dGluZSksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgc2FtcGxlcyA9IFtNaW5pbWFsQ29ybygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEF3YWl0YWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIEF3YWl0YWJsZSkpCisKKyAgICAgICAgYyA9IGNvcm8oKQorICAgICAgICAjIEl0ZXJhYmxlIGNvcm91dGluZXMgKGdlbmVyYXRvcnMgd2l0aCBDT19JVEVSQUJMRV9DT1JPVVRJTkUKKyAgICAgICAgIyBmbGFnIGRvbid0IGhhdmUgJ19fYXdhaXRfXycgbWV0aG9kLCBoZW5jZSBjYW4ndCBiZSBpbnN0YW5jZXMKKyAgICAgICAgIyBvZiBDb3JvdXRpbmUuIFVzZSBpbnNwZWN0LmlzYXdhaXRhYmxlIHRvIGRldGVjdCB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoYywgQ29yb3V0aW5lKQorCisgICAgICAgIGMgPSBuZXdfY29ybygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBDb3JvdXRpbmUpCisgICAgICAgIGMuY2xvc2UoKSAjIGF3b2lkIFJ1bnRpbWVXYXJuaW5nIHRoYXQgY29ybygpIHdhcyBub3QgYXdhaXRlZAorCisgICAgICAgIGNsYXNzIENvcm9MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKENvcm9MaWtlKCksIENvcm91dGluZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENvcm9MaWtlLCBDb3JvdXRpbmUpKQorCisgICAgICAgIGNsYXNzIENvcm9MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvcm9MaWtlKCksIENvcm91dGluZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb3JvTGlrZSwgQ29yb3V0aW5lKSkKKwogICAgIGRlZiB0ZXN0X0hhc2hhYmxlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWhhc2hhYmxlcwogICAgICAgICBub25fc2FtcGxlcyA9IFtieXRlYXJyYXkoKSwgbGlzdCgpLCBzZXQoKSwgZGljdCgpXQpAQCAtNDgxLDYgKzYyOCw0MCBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoSGFzaGFibGUsICdfX2hhc2hfXycpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShIYXNoYWJsZSwgJ19faGFzaF9fJykKIAorICAgIGRlZiB0ZXN0X0FzeW5jSXRlcmFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIEFJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShBSSgpLCBBc3luY0l0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQUksIEFzeW5jSXRlcmFibGUpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWl0ZXJhYmxlcworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCBvYmplY3QsIFtdXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBBc3luY0l0ZXJhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIEFzeW5jSXRlcmFibGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQXN5bmNJdGVyYWJsZSwgJ19fYWl0ZXJfXycpCisgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShBc3luY0l0ZXJhYmxlLCAnX19haXRlcl9fJykKKworICAgIGRlZiB0ZXN0X0FzeW5jSXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIEFJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoQUkoKSwgQXN5bmNJdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEFJLCBBc3luY0l0ZXJhdG9yKSkKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgb2JqZWN0LCBbXV0KKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1pdGVyYWJsZXMKKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQXN5bmNJdGVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBBc3luY0l0ZXJhdG9yKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBTaW1pbGFybHkgdG8gcmVndWxhciBpdGVyYXRvcnMgKHNlZSBpc3N1ZSAxMDU2NSkKKyAgICAgICAgY2xhc3MgQW5leHRPbmx5OgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKEFuZXh0T25seSgpLCBBc3luY0l0ZXJhdG9yKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQXN5bmNJdGVyYXRvciwgJ19fYW5leHRfXycsICdfX2FpdGVyX18nKQorCiAgICAgZGVmIHRlc3RfSXRlcmFibGUoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgc29tZSBub24taXRlcmFibGVzCiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxal0KQEAgLTUyOCw5ICs3MDksODAgQEAKICAgICAgICAgY2xhc3MgTmV4dE9ubHk6CiAgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgeWllbGQgMQotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKE5leHRPbmx5KCksIEl0ZXJhdG9yKQogCisgICAgZGVmIHRlc3RfR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBOb25HZW4xOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKworICAgICAgICBjbGFzcyBOb25HZW4yOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorCisgICAgICAgIGNsYXNzIE5vbkdlbjM6CisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKworICAgICAgICBub25fc2FtcGxlcyA9IFsKKyAgICAgICAgICAgIE5vbmUsIDQyLCAzLjE0LCAxaiwgYiIiLCAiIiwgKCksIFtdLCB7fSwgc2V0KCksCisgICAgICAgICAgICBpdGVyKCgpKSwgaXRlcihbXSksIE5vbkdlbjEoKSwgTm9uR2VuMigpLCBOb25HZW4zKCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIEdlbmVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBHZW5lcmF0b3IpLCByZXByKHR5cGUoeCkpKQorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKTogcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworCisgICAgICAgIGNsYXNzIE1pbmltYWxHZW4oR2VuZXJhdG9yKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLnRocm93KHR5cCwgdmFsLCB0YikKKworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxCisKKyAgICAgICAgc2FtcGxlcyA9IFtnZW4oKSwgKGxhbWJkYTogKHlpZWxkKSkoKSwgR2VuKCksIE1pbmltYWxHZW4oKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBJdGVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBHZW5lcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBHZW5lcmF0b3IpLCByZXByKHR5cGUoeCkpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoR2VuZXJhdG9yLCAnc2VuZCcsICd0aHJvdycpCisKKyAgICAgICAgIyBtaXhpbiB0ZXN0cworICAgICAgICBtZ2VuID0gTWluaW1hbEdlbigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWdlbiwgaXRlcihtZ2VuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZ2VuLnNlbmQoTm9uZSksIG5leHQobWdlbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbWdlbi5zZW5kKDIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtZ2VuLmNsb3NlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1nZW4udGhyb3csIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIl5odWh1JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWdlbi50aHJvdywgVmFsdWVFcnJvciwgVmFsdWVFcnJvcigiaHVodSIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtZ2VuLnRocm93LCBTdG9wSXRlcmF0aW9uKCkpCisKKyAgICAgICAgY2xhc3MgRmFpbE9uQ2xvc2UoR2VuZXJhdG9yKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgKmFyZ3MpOiByYWlzZSBWYWx1ZUVycm9yCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRmFpbE9uQ2xvc2UoKS5jbG9zZSkKKworICAgICAgICBjbGFzcyBJZ25vcmVHZW5lcmF0b3JFeGl0KEdlbmVyYXRvcik6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsICphcmdzKTogcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgSWdub3JlR2VuZXJhdG9yRXhpdCgpLmNsb3NlKQorCiAgICAgZGVmIHRlc3RfU2l6ZWQoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKQEAgLTY1Nyw2ICs5MDksNTkgQEAKICAgICAgICAgYSwgYiA9IE9uZVR3b1RocmVlU2V0KCksIE9uZVR3b1RocmVlU2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2goYSkgPT0gaGFzaChiKSkKIAorICAgIGRlZiB0ZXN0X2lzZGlzam9pbnRfU2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNeVNldChTZXQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0cik6CisgICAgICAgICAgICAgICAgc2VsZi5jb250ZW50cyA9IGl0cgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCBpbiBzZWxmLmNvbnRlbnRzCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oW3ggZm9yIHggaW4gc2VsZi5jb250ZW50c10pCisgICAgICAgIHMxID0gTXlTZXQoKDEsIDIsIDMpKQorICAgICAgICBzMiA9IE15U2V0KCg0LCA1LCA2KSkKKyAgICAgICAgczMgPSBNeVNldCgoMSwgNSwgNikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzMS5pc2Rpc2pvaW50KHMyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMS5pc2Rpc2pvaW50KHMzKSkKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5X1NldChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTZXQoU2V0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdHIpOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGVudHMgPSBpdHIKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggaW4gc2VsZi5jb250ZW50cworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuY29udGVudHMpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKFt4IGZvciB4IGluIHNlbGYuY29udGVudHNdKQorICAgICAgICBzMSA9IE15U2V0KCgxLCkpCisgICAgICAgIHMyID0gTXlTZXQoKDEsIDIpKQorICAgICAgICBzMyA9IE15U2V0KCgzLCA0KSkKKyAgICAgICAgczQgPSBNeVNldCgoMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzMiA+IHMxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoczEgPCBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMiA8PSBzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMiA8PSBzMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMSA+PSBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMywgczQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoczIsIHMzKQorCisgICAgZGVmIHRlc3RfYXJpdGhtZXRpY19TZXQoc2VsZik6CisgICAgICAgIGNsYXNzIE15U2V0KFNldCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRyKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRlbnRzID0gaXRyCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4IGluIHNlbGYuY29udGVudHMKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLmNvbnRlbnRzKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbihbeCBmb3IgeCBpbiBzZWxmLmNvbnRlbnRzXSkKKyAgICAgICAgczEgPSBNeVNldCgoMSwgMiwgMykpCisgICAgICAgIHMyID0gTXlTZXQoKDMsIDQsIDUpKQorICAgICAgICBzMyA9IHMxICYgczIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMywgTXlTZXQoKDMsKSkpCisKICAgICBkZWYgdGVzdF9NdXRhYmxlU2V0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2V0KCksIE11dGFibGVTZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNldCwgTXV0YWJsZVNldCkpCkBAIC05NTcsNiArMTI2Miw0MSBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoU2VxdWVuY2UsICdfX2NvbnRhaW5zX18nLCAnX19pdGVyX18nLCAnX19sZW5fXycsCiAgICAgICAgICAgICAnX19nZXRpdGVtX18nKQogCisgICAgZGVmIHRlc3RfU2VxdWVuY2VfbWl4aW5zKHNlbGYpOgorICAgICAgICBjbGFzcyBTZXF1ZW5jZVN1YmNsYXNzKFNlcXVlbmNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXE9KCkpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VxID0gc2VxCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2VxW2luZGV4XQorCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuc2VxKQorCisgICAgICAgICMgQ29tcGFyZSBTZXF1ZW5jZS5pbmRleCgpIGJlaGF2aW9yIHRvIChsaXN0fHN0cikuaW5kZXgoKSBiZWhhdmlvcgorICAgICAgICBkZWYgYXNzZXJ0X2luZGV4X3NhbWUoc2VxMSwgc2VxMiwgaW5kZXhfYXJncyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZXExLmluZGV4KCppbmRleF9hcmdzKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VxMi5pbmRleCgqaW5kZXhfYXJncykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYWN0dWFsID0gc2VxMi5pbmRleCgqaW5kZXhfYXJncykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBhY3R1YWwsIGV4cGVjdGVkLCAnJXIuaW5kZXglcycgJSAoc2VxMSwgaW5kZXhfYXJncykpCisKKyAgICAgICAgZm9yIHR5IGluIGxpc3QsIHN0cjoKKyAgICAgICAgICAgIG5hdGl2ZXNlcSA9IHR5KCdhYnJhY2FkYWJyYScpCisgICAgICAgICAgICBpbmRleGVzID0gWy0xMDAwMCwgLTk5OTldICsgbGlzdChyYW5nZSgtMywgbGVuKG5hdGl2ZXNlcSkgKyAzKSkKKyAgICAgICAgICAgIHNlcXNlcSA9IFNlcXVlbmNlU3ViY2xhc3MobmF0aXZlc2VxKQorICAgICAgICAgICAgZm9yIGxldHRlciBpbiBzZXQobmF0aXZlc2VxKSB8IHsneid9OgorICAgICAgICAgICAgICAgIGFzc2VydF9pbmRleF9zYW1lKG5hdGl2ZXNlcSwgc2Vxc2VxLCAobGV0dGVyLCkpCisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKC0zLCBsZW4obmF0aXZlc2VxKSArIDMpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfaW5kZXhfc2FtZShuYXRpdmVzZXEsIHNlcXNlcSwgKGxldHRlciwgc3RhcnQpKQorICAgICAgICAgICAgICAgICAgICBmb3Igc3RvcCBpbiByYW5nZSgtMywgbGVuKG5hdGl2ZXNlcSkgKyAzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9pbmRleF9zYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNlcSwgc2Vxc2VxLCAobGV0dGVyLCBzdGFydCwgc3RvcCkpCisKICAgICBkZWYgdGVzdF9CeXRlU3RyaW5nKHNlbGYpOgogICAgICAgICBmb3Igc2FtcGxlIGluIFtieXRlcywgYnl0ZWFycmF5XToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzYW1wbGUoKSwgQnl0ZVN0cmluZykKQEAgLTk3MSw3ICsxMzExLDcgQEAKICAgICAgICAgZm9yIHNhbXBsZSBpbiBbdHVwbGUsIHN0ciwgYnl0ZXNdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNhbXBsZSgpLCBNdXRhYmxlU2VxdWVuY2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2FtcGxlLCBNdXRhYmxlU2VxdWVuY2UpKQotICAgICAgICBmb3Igc2FtcGxlIGluIFtsaXN0LCBieXRlYXJyYXldOgorICAgICAgICBmb3Igc2FtcGxlIGluIFtsaXN0LCBieXRlYXJyYXksIGRlcXVlXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzYW1wbGUoKSwgTXV0YWJsZVNlcXVlbmNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc2FtcGxlLCBNdXRhYmxlU2VxdWVuY2UpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc3RyLCBNdXRhYmxlU2VxdWVuY2UpKQpAQCAtMTI4NCw5ICsxNjI0LDI0IEBACiAjIyMgT3JkZXJlZERpY3QKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWNsYXNzIFRlc3RPcmRlcmVkRGljdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitweV9jb2xsID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnY29sbGVjdGlvbnMnLCBibG9ja2VkPVsnX2NvbGxlY3Rpb25zJ10pCitjX2NvbGwgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdjb2xsZWN0aW9ucycsIGZyZXNoPVsnX2NvbGxlY3Rpb25zJ10pCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiByZXBsYWNlZF9tb2R1bGUobmFtZSwgcmVwbGFjZW1lbnQpOgorICAgIG9yaWdpbmFsX21vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSByZXBsYWNlbWVudAorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9yaWdpbmFsX21vZHVsZQorCisKK2NsYXNzIE9yZGVyZWREaWN0VGVzdHM6CiAKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2EnLCAxKSwgKCdiJywgMildLCBOb25lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIG1hbnkgYXJncwogICAgICAgICBwYWlycyA9IFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSldCkBAIC0xMzEwLDYgKzE2NjUsNyBAQAogICAgICAgICAgICAgWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNiksICgnZycsIDcpXSkKIAogICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLnVwZGF0ZShbKCdhJywgMSksICgnYicsIDIpXSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgcGFpcnMgPSBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCksICgnZScsIDUpXQpAQCAtMTM1MCwxMSArMTcwNiwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsIDQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQorCisgICAgZGVmIHRlc3RfZnJvbWtleXMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGMsIE5vbmUpIGZvciBjIGluICdhYmMnXSkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJywgdmFsdWU9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGMsIE5vbmUpIGZvciBjIGluICdhYmMnXSkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJywgdmFsdWU9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGMsIDApIGZvciBjIGluICdhYmMnXSkKKwogICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoT3JkZXJlZERpY3QoKSwgTXV0YWJsZU1hcHBpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE9yZGVyZWREaWN0LCBNdXRhYmxlTWFwcGluZykpCiAKICAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTM2Myw2ICsxNzM0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob2QpLCAwKQogCiAgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQogICAgICAgICBkZWwgb2RbJ2EnXQpAQCAtMTM3Miw2ICsxNzQ0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBwYWlyc1s6Ml0gKyBwYWlyc1szOl0pCiAKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoWygnZCcsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnYScsIDQpLCAoJ2UnLCA1KV0pCiAgICAgICAgIG9kWydjJ10gPSAxMCAgICAgICAgICAgIyBleGlzdGluZyBlbGVtZW50CiAgICAgICAgIG9kWydmJ10gPSAyMCAgICAgICAgICAgIyBuZXcgZWxlbWVudApAQCAtMTM3OSw2ICsxNzUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkJywgMSksICgnYicsIDIpLCAoJ2MnLCAxMCksICgnYScsIDQpLCAoJ2UnLCA1KSwgKCdmJywgMjApXSkKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTM4OCw4ICsxNzYyLDUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgcGFpcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFt0WzBdIGZvciB0IGluIHJldmVyc2VkKHBhaXJzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZC5rZXlzKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbdFswXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QudmFsdWVzKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbdFsxXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QuaXRlbXMoKSkpLCBsaXN0KHJldmVyc2VkKHBhaXJzKSkpCisKKyAgICBkZWYgdGVzdF9kZXRlY3RfZGVsZXRpb25fZHVyaW5nX2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmMnKQorICAgICAgICBpdCA9IGl0ZXIob2QpCisgICAgICAgIGtleSA9IG5leHQoaXQpCisgICAgICAgIGRlbCBvZFtrZXldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgTm90ZSwgdGhlIGV4YWN0IGV4Y2VwdGlvbiByYWlzZWQgaXMgbm90IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICMgVGhlIG9ubHkgZ3VhcmFudGVlIHRoYXQgdGhlIG5leHQoKSB3aWxsIG5vdCBzdWNjZWVkCisgICAgICAgICAgICBuZXh0KGl0KQorCisgICAgZGVmIHRlc3Rfc29ydGVkX2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdhJywgMSksICgnYicsIDIpXSwgTm9uZSkKKyAgICAgICAgcGFpcnMgPSBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCksICgnZScsIDUpXQorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvZCksIFt0WzBdIGZvciB0IGluIHBhaXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob2Qua2V5cygpKSwgW3RbMF0gZm9yIHQgaW4gcGFpcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvZC52YWx1ZXMoKSksIFt0WzFdIGZvciB0IGluIHBhaXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob2QuaXRlbXMoKSksIHBhaXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyZXZlcnNlZChvZCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbdFswXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKSkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yc19lbXB0eShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZW1wdHkgPSBbXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLmtleXMoKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QudmFsdWVzKCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2Qua2V5cygpKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QudmFsdWVzKCkpKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZC5pdGVtcygpKSksIGVtcHR5KQogCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTM5OSw3ICsxODE2LDE5IEBACiAgICAgICAgICAgICBvZC5wb3BpdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob2QpLCAwKQogCisgICAgZGVmIHRlc3RfcG9waXRlbV9sYXN0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CisgICAgICAgIHBhaXJzID0gWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzMCldCisKKyAgICAgICAgb2JqID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgb2JqLnBvcGl0ZW0oVHJ1ZSkKKyAgICAgICAgb2JqLnBvcGl0ZW0oVHJ1ZSkKKyAgICAgICAgb2JqLnBvcGl0ZW0obGFzdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvYmopLCAyMCkKKwogICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTQyMCwxMCArMTg0OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdiJywgNSksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5wb3AoJ2EnLCA2KSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnBvcCgnYScsIDYpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdhJywgZGVmYXVsdD02KSwgNikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CiAgICAgICAgICAgICBtLnBvcCgnYScpCiAKICAgICBkZWYgdGVzdF9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZDEgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTE0MzksNiArMTg3MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob2QxLCBPcmRlcmVkRGljdChwYWlyc1s6LTFdKSkKIAogICAgIGRlZiB0ZXN0X2NvcHlpbmcoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBDaGVjayB0aGF0IG9yZGVyZWQgZGljdHMgYXJlIGNvcHlhYmxlLCBkZWVwY29weWFibGUsIHBpY2tsYWJsZSwKICAgICAgICAgIyBhbmQgaGF2ZSBhIHJlcHIvZXZhbCByb3VuZC10cmlwCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCkBAIC0xNDQ3LDEyICsxODc5LDE3IEBACiAgICAgICAgICAgICBtc2cgPSAiXG5jb3B5OiAlc1xub2Q6ICVzIiAlIChkdXAsIG9kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkdXAsIG9kLCBtc2cpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR1cCwgb2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHVwLml0ZW1zKCkpLCBsaXN0KG9kLml0ZW1zKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZHVwKSwgbGVuKG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkdXApLCB0eXBlKG9kKSkKICAgICAgICAgY2hlY2sob2QuY29weSgpKQogICAgICAgICBjaGVjayhjb3B5LmNvcHkob2QpKQogICAgICAgICBjaGVjayhjb3B5LmRlZXBjb3B5KG9kKSkKLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6Ci0gICAgICAgICAgICAgICAgY2hlY2socGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgcHJvdG8pKSkKKyAgICAgICAgIyBwaWNrbGUgZGlyZWN0bHkgcHVsbHMgdGhlIG1vZHVsZSwgc28gd2UgaGF2ZSB0byBmYWtlIGl0CisgICAgICAgIHdpdGggcmVwbGFjZWRfbW9kdWxlKCdjb2xsZWN0aW9ucycsIHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2socGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgcHJvdG8pKSkKICAgICAgICAgY2hlY2soZXZhbChyZXByKG9kKSkpCiAgICAgICAgIHVwZGF0ZV90ZXN0ID0gT3JkZXJlZERpY3QoKQogICAgICAgICB1cGRhdGVfdGVzdC51cGRhdGUob2QpCkBAIC0xNDYwLDYgKzE4OTcsNyBAQAogICAgICAgICBjaGVjayhPcmRlcmVkRGljdChvZCkpCiAKICAgICBkZWYgdGVzdF95YW1sX2xpbmthZ2Uoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBWZXJpZnkgdGhhdCBfX3JlZHVjZV9fIGlzIHNldHVwIGluIGEgd2F5IHRoYXQgc3VwcG9ydHMgUHlZQU1MJ3MgZHVtcCgpIGZlYXR1cmUuCiAgICAgICAgICMgSW4geWFtbCwgbGlzdHMgYXJlIG5hdGl2ZSBidXQgdHVwbGVzIGFyZSBub3QuCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCkBAIC0xNDY5LDYgKzE5MDcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHR5cGUocGFpcik9PWxpc3QgZm9yIHBhaXIgaW4gb2QuX19yZWR1Y2VfXygpWzFdKSkKIAogICAgIGRlZiB0ZXN0X3JlZHVjZV9ub3RfdG9vX2ZhdChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICAjIGRvIG5vdCBzYXZlIGluc3RhbmNlIGRpY3Rpb25hcnkgaWYgbm90IG5lZWRlZAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTQ3NywxNSArMTkxNiwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCiAKICAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQogICAgICAgICBvZFsxXSA9IG9kCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSgtMSwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZHVwLCBvZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkdXAua2V5cygpKSwgWzFdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKKworICAgICAgICAjIHBpY2tsZSBkaXJlY3RseSBwdWxscyB0aGUgbW9kdWxlLCBzbyB3ZSBoYXZlIHRvIGZha2UgaXQKKyAgICAgICAgd2l0aCByZXBsYWNlZF9tb2R1bGUoJ2NvbGxlY3Rpb25zJywgc2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKC0xLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGR1cCwgb2QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGR1cC5rZXlzKCkpLCBbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKIAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihvZCksCiAgICAgICAgICAgICAiT3JkZXJlZERpY3QoWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildKSIpCkBAIC0xNDkzLDYgKzE5MzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3JkZXJlZERpY3QoKSksICJPcmRlcmVkRGljdCgpIikKIAogICAgIGRlZiB0ZXN0X3JlcHJfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgU2VlIGlzc3VlICM5ODI2CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCiAgICAgICAgIG9kWyd4J10gPSBvZApAQCAtMTUwMCw2ICsxOTQ1LDcgQEAKICAgICAgICAgICAgICJPcmRlcmVkRGljdChbKCdhJywgTm9uZSksICgnYicsIE5vbmUpLCAoJ2MnLCBOb25lKSwgKCd4JywgLi4uKV0pIikKIAogICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTE1MTAsNiArMTk1Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Quc2V0ZGVmYXVsdCgneCcsIDEwKSwgMTApCiAgICAgICAgICMgbWFrZSBzdXJlICd4JyBpcyBhZGRlZCB0byB0aGUgZW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKVstMV0sICgneCcsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5zZXRkZWZhdWx0KCdnJywgZGVmYXVsdD05KSwgOSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBzZXRkZWZhdWx0IHN0aWxsIHdvcmtzIHdoZW4gX19taXNzaW5nX18gaXMgZGVmaW5lZAogICAgICAgICBjbGFzcyBNaXNzaW5nKE9yZGVyZWREaWN0KToKQEAgLTE1MTgsMTYgKzE5NjUsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNaXNzaW5nKCkuc2V0ZGVmYXVsdCg1LCA5KSwgOSkKIAogICAgIGRlZiB0ZXN0X3JlaW5zZXJ0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgR2l2ZW4gaW5zZXJ0IGEsIGluc2VydCBiLCBkZWxldGUgYSwgcmUtaW5zZXJ0IGEsCiAgICAgICAgICMgdmVyaWZ5IHRoYXQgYSBpcyBub3cgbGF0ZXIgdGhhbiBiLgogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgb2RbJ2EnXSA9IDEKICAgICAgICAgb2RbJ2InXSA9IDIKICAgICAgICAgZGVsIG9kWydhJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKCdiJywgMildKQogICAgICAgICBvZFsnYSddID0gMQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSksIFsoJ2InLCAyKSwgKCdhJywgMSldKQogCiAgICAgZGVmIHRlc3RfbW92ZV90b19lbmQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjZGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdhYmNkZScpKQogICAgICAgICBvZC5tb3ZlX3RvX2VuZCgnYycpCkBAIC0xNTM4LDE2ICsxOTg4LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2NhYmRlJykpCiAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCdlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnY2FiZGUnKSkKKyAgICAgICAgb2QubW92ZV90b19lbmQoJ2InLCBsYXN0PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdiY2FkZScpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCd4JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBvZC5tb3ZlX3RvX2VuZCgneCcsIDApCiAKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBXaW1weSB0ZXN0OiBKdXN0IHZlcmlmeSB0aGUgcmVwb3J0ZWQgc2l6ZSBpcyBsYXJnZXIgdGhhbiBhIHJlZ3VsYXIgZGljdAogICAgICAgICBkID0gZGljdChhPTEpCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB1cGRhdGUoKSB3aXRob3V0IGJyZWFraW5nIF9faW5pdF9fKCkKICAgICAgICAgY2xhc3MgTXlPRChPcmRlcmVkRGljdCk6CiAgICAgICAgICAgICBkZWYgdXBkYXRlKHNlbGYsICphcmdzLCAqKmt3ZHMpOgpAQCAtMTU1NSwxOCArMjAxMSwxNzEgQEAKICAgICAgICAgaXRlbXMgPSBbKCdhJywgMSksICgnYycsIDMpLCAoJ2InLCAyKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KE15T0QoaXRlbXMpLml0ZW1zKCkpLCBpdGVtcykKIAotY2xhc3MgR2VuZXJhbE1hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6Ci0gICAgdHlwZTJ0ZXN0ID0gT3JkZXJlZERpY3QKKworY2xhc3MgUHVyZVB5dGhvbk9yZGVyZWREaWN0VGVzdHMoT3JkZXJlZERpY3RUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlID0gcHlfY29sbAorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCitjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cyhPcmRlcmVkRGljdFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBtb2R1bGUgPSBjX2NvbGwKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW1faGFzaF9jb2xsaXNpb24oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKworICAgICAgICBjbGFzcyBLZXk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFzaCk6CisgICAgICAgICAgICAgICAgc2VsZi5faGFzaCA9IGhhc2gKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gc3RyKGlkKHNlbGYpKQorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCisgICAgICAgIGRlZiBibG9ja2luZ19oYXNoKGhhc2gpOgorICAgICAgICAgICAgIyBTZWUgdGhlIGNvbGxpc2lvbi1oYW5kbGluZyBpbiBsb29rZGljdCAoaW4gT2JqZWN0cy9kaWN0b2JqZWN0LmMpLgorICAgICAgICAgICAgTUlOU0laRSA9IDgKKyAgICAgICAgICAgIGkgPSAoaGFzaCAmIE1JTlNJWkUtMSkKKyAgICAgICAgICAgIHJldHVybiAoaSA8PCAyKSArIGkgKyBoYXNoICsgMQorCisgICAgICAgIENPTExJRElORyA9IDEKKworICAgICAgICBrZXkgPSBLZXkoQ09MTElESU5HKQorICAgICAgICBjb2xsaWRpbmcgPSBLZXkoQ09MTElESU5HKQorICAgICAgICBibG9ja2luZyA9IEtleShibG9ja2luZ19oYXNoKENPTExJRElORykpCisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIG9kW2tleV0gPSAuLi4KKyAgICAgICAgb2RbYmxvY2tpbmddID0gLi4uCisgICAgICAgIG9kW2NvbGxpZGluZ10gPSAuLi4KKyAgICAgICAgb2RbJ2FmdGVyJ10gPSAuLi4KKworICAgICAgICBkZWwgb2RbYmxvY2tpbmddCisgICAgICAgIGRlbCBvZFtjb2xsaWRpbmddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhrZXksIC4uLiksICgnYWZ0ZXInLCAuLi4pXSkKKworICAgIGRlZiB0ZXN0X2tleV9jaGFuZ2VfZHVyaW5nX2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnYWJjZGUnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgZm9yIGksIGsgaW4gZW51bWVyYXRlKG9kKToKKyAgICAgICAgICAgICAgICBvZC5tb3ZlX3RvX2VuZChrKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhpLCA1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBmb3IgayBpbiBvZDoKKyAgICAgICAgICAgICAgICBvZFsnZiddID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBmb3IgayBpbiBvZDoKKyAgICAgICAgICAgICAgICBkZWwgb2RbJ2MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdiZGVhZicpKQorCisgICAgZGVmIHRlc3RfaXNzdWUyNDM0NyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorCisgICAgICAgIGNsYXNzIEtleToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmFuZHJhbmdlKDEwMDAwMCkKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgICAgIGtleSA9IEtleSgpCisgICAgICAgICAgICBvZFtrZXldID0gaQorCisgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICByZXByKG9kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIG9kLmNvcHkoKQorCisgICAgZGVmIHRlc3RfaXNzdWUyNDM0OChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorCisgICAgICAgIGNsYXNzIEtleToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBvZFtLZXkoKV0gPSAwCisgICAgICAgICMgVGhpcyBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICBvZC5wb3BpdGVtKCkKKworICAgIGRlZiB0ZXN0X2lzc3VlMjQ2Njcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBkaWN0IHJlc2l6ZXMgYWZ0ZXIgYSBjZXJ0YWluIG51bWJlciBvZiBpbnNlcnRpb24gb3BlcmF0aW9ucywKKyAgICAgICAgd2hldGhlciBvciBub3QgdGhlcmUgd2VyZSBkZWxldGlvbnMgdGhhdCBmcmVlZCB1cCBzbG90cyBpbiB0aGUKKyAgICAgICAgaGFzaCB0YWJsZS4gIER1cmluZyBmYXN0IG5vZGUgbG9va3VwLCBPcmRlcmVkRGljdCBtdXN0IGNvcnJlY3RseQorICAgICAgICByZXNwb25kIHRvIGFsbCByZXNpemVzLCBldmVuIGlmIHRoZSBjdXJyZW50ICJzaXplIiBpcyB0aGUgc2FtZQorICAgICAgICBhcyB0aGUgb2xkIG9uZS4gIFdlIHZlcmlmeSB0aGF0IGhlcmUgYnkgZm9yY2luZyBhIGRpY3QgcmVzaXplCisgICAgICAgIG9uIGEgc3BhcnNlIG9kaWN0IGFuZCB0aGVuIHBlcmZvcm0gYW4gb3BlcmF0aW9uIHRoYXQgc2hvdWxkCisgICAgICAgIHRyaWdnZXIgYW4gb2RpY3QgcmVzaXplIChlLmcuIHBvcGl0ZW0pLiAgT25lIGtleSBhc3BlY3QgaGVyZSBpcworICAgICAgICB0aGF0IHdlIHdpbGwga2VlcCB0aGUgc2l6ZSBvZiB0aGUgb2RpY3QgdGhlIHNhbWUgYXQgZWFjaCBwb3BpdGVtCisgICAgICAgIGNhbGwuICBUaGlzIHZlcmlmaWVzIHRoYXQgd2UgaGFuZGxlZCB0aGUgZGljdCByZXNpemUgcHJvcGVybHkuCisgICAgICAgICIiIgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGZvciBjMCBpbiAnMDEyMzQ1Njc4OUFCQ0RFRic6CisgICAgICAgICAgICBmb3IgYzEgaW4gJzAxMjM0NTY3ODlBQkNERUYnOgorICAgICAgICAgICAgICAgIGlmIGxlbihvZCkgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBub3QgcmFpc2UgYSBLZXlFcnJvci4KKyAgICAgICAgICAgICAgICAgICAgb2QucG9waXRlbShsYXN0PUZhbHNlKQorICAgICAgICAgICAgICAgIGtleSA9IGMwICsgYzEKKyAgICAgICAgICAgICAgICBvZFtrZXldID0ga2V5CisKKworY2xhc3MgUHVyZVB5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IHB5X2NvbGwuT3JkZXJlZERpY3QKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKIAotY2xhc3MgTXlPcmRlcmVkRGljdChPcmRlcmVkRGljdCk6Ci0gICAgcGFzcwogCi1jbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6Ci0gICAgdHlwZTJ0ZXN0ID0gTXlPcmRlcmVkRGljdAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19jb2xsLCAncmVxdWlyZXMgdGhlIEMgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlJykKK2NsYXNzIENQeXRob25HZW5lcmFsTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy50eXBlMnRlc3QgPSBjX2NvbGwuT3JkZXJlZERpY3QKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKKworCitjbGFzcyBQdXJlUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xhc3MgTXlPcmRlcmVkRGljdChweV9jb2xsLk9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IE15T3JkZXJlZERpY3QKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQorY2xhc3MgQ1B5dGhvblN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNsYXNzIE15T3JkZXJlZERpY3QoY19jb2xsLk9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IE15T3JkZXJlZERpY3QKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKQEAgLTE1ODMsNyArMjE5MiwxMSBAQAogICAgIE5hbWVkVHVwbGVEb2NzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUobW9kdWxlPWNvbGxlY3Rpb25zKQogICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0TmFtZWRUdXBsZSwgTmFtZWRUdXBsZURvY3MsIFRlc3RPbmVUcmlja1BvbnlBQkNzLAogICAgICAgICAgICAgICAgICAgICBUZXN0Q29sbGVjdGlvbkFCQ3MsIFRlc3RDb3VudGVyLCBUZXN0Q2hhaW5NYXAsCi0gICAgICAgICAgICAgICAgICAgIFRlc3RPcmRlcmVkRGljdCwgR2VuZXJhbE1hcHBpbmdUZXN0cywgU3ViY2xhc3NNYXBwaW5nVGVzdHNdCisgICAgICAgICAgICAgICAgICAgIFB1cmVQeXRob25PcmRlcmVkRGljdFRlc3RzLCBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgUHVyZVB5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMsIENQeXRob25HZW5lcmFsTWFwcGluZ1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICBQdXJlUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMsIENQeXRob25TdWJjbGFzc01hcHBpbmdUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgVGVzdFVzZXJPYmplY3RzLAorICAgICAgICAgICAgICAgICAgICBdCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGNvbGxlY3Rpb25zLCB2ZXJib3NlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkKaW5kZXggYTY2MzgzMi4uNDcxYzhkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wYXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGFyZS5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIEVtcHR5OgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTEyMSw4ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFueXRoaW5nKCksIHkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvbXBhcmlzb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggY2ZmM2M5ZS4uZGI4MjFiZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNSw3ICs1LDggQEAKIGltcG9ydCBfYXN0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0eXBlcwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MjcsNyArNDI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbXBpbGVfYXN0KHNlbGYpOgogICAgICAgICBmbmFtZSA9IF9fZmlsZV9fCi0gICAgICAgIGlmIGZuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCdweWMnLCAncHlvJykpOgorICAgICAgICBpZiBmbmFtZS5sb3dlcigpLmVuZHN3aXRoKCdweWMnKToKICAgICAgICAgICAgIGZuYW1lID0gZm5hbWVbOi0xXQogICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICdyJykgYXMgZjoKICAgICAgICAgICAgIGZjb250ZW50cyA9IGYucmVhZCgpCkBAIC00NjAsNiArNDYxLDE3IEBACiAgICAgICAgIGFzdC5ib2R5ID0gW19hc3QuQm9vbE9wKCldCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgYXN0LCAnPGFzdD4nLCAnZXhlYycpCiAKKyAgICBkZWYgdGVzdF9kaWN0X2V2YWx1YXRpb25fb3JkZXIoc2VsZik6CisgICAgICAgIGkgPSAwCisKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGkKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBkID0ge2YoKTogZigpLCBmKCk6IGYoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCisKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CiAgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCkBAIC01MjIsNyArNTM0LDcgQEAKICAgICAgICAgICAgIGJyb2tlbiA9IHByZWZpeCArIHJlcGVhdGVkICogZmFpbF9kZXB0aAogICAgICAgICAgICAgZGV0YWlscyA9ICJDb21waWxpbmcgKHshcn0gKyB7IXJ9ICoge30pIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCByZXBlYXRlZCwgZmFpbF9kZXB0aCkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBtc2c9ZGV0YWlscyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBtc2c9ZGV0YWlscyk6CiAgICAgICAgICAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZShicm9rZW4pCiAKICAgICAgICAgY2hlY2tfbGltaXQoImEiLCAiKCkiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CmluZGV4IDJhNDIyMzguLjk0Nzk3NzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKQEAgLTEwLDcgKzEwLDE1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2ssIHNraXBVbmxlc3MKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorICAgIF9oYXZlX211bHRpcHJvY2Vzc2luZyA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfaGF2ZV9tdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIENvbXBpbGVhbGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTk0LDE4ICsxMDIsNDUgQEAKICAgICBkZWYgdGVzdF9vcHRpbWl6ZShzZWxmKToKICAgICAgICAgIyBtYWtlIHN1cmUgY29tcGlsaW5nIHdpdGggZGlmZmVyZW50IG9wdGltaXphdGlvbiBzZXR0aW5ncyB0aGFuIHRoZQogICAgICAgICAjIGludGVycHJldGVyJ3MgY3JlYXRlcyB0aGUgY29ycmVjdCBmaWxlIG5hbWVzCi0gICAgICAgIG9wdGltaXplID0gMSBpZiBfX2RlYnVnX18gZWxzZSAwCisgICAgICAgIG9wdGltaXplLCBvcHQgPSAoMSwgMSkgaWYgX19kZWJ1Z19fIGVsc2UgKDAsICcnKQogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCBvcHRpbWl6ZT1vcHRpbWl6ZSkKICAgICAgICAgY2FjaGVkID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkKSkKICAgICAgICAgY2FjaGVkMiA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPW9wdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNhY2hlZDIpKQogICAgICAgICBjYWNoZWQzID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMykpCiAKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJykKKyAgICBkZWYgdGVzdF9jb21waWxlX3Bvb2xfY2FsbGVkKHNlbGYsIHBvb2xfbW9jayk6CisgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUsIHdvcmtlcnM9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvb2xfbW9jay5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3dvcmtlcnNfbm9uX3Bvc2l0aXZlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwIik6CisgICAgICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCB3b3JrZXJzPS0xKQorCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCisgICAgZGVmIHRlc3RfY29tcGlsZV93b3JrZXJzX2NwdV9jb3VudChzZWxmLCBwb29sX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9vbF9tb2NrLmNhbGxfYXJnc1sxXVsnbWF4X3dvcmtlcnMnXSwgTm9uZSkKKworICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQorICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLmNvbXBpbGVfZmlsZScpCisgICAgZGVmIHRlc3RfY29tcGlsZV9vbmVfd29ya2VyKHNlbGYsIGNvbXBpbGVfZmlsZV9tb2NrLCBwb29sX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvb2xfbW9jay5jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2ZpbGVfbW9jay5jYWxsZWQpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJywgbmV3PU5vbmUpCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuY29tcGlsZV9maWxlJykKKyAgICBkZWYgdGVzdF9jb21waWxlX21pc3NpbmdfbXVsdGlwcm9jZXNzaW5nKHNlbGYsIGNvbXBpbGVfZmlsZV9tb2NrKToKKyAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZV9maWxlX21vY2suY2FsbGVkKQogCiBjbGFzcyBFbmNvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIklzc3VlIDY3MTY6IGNvbXBpbGVhbGwgc2hvdWxkIGVzY2FwZSBzb3VyY2UgY29kZSB3aGVuIHByaW50aW5nIGVycm9ycwpAQCAtMjAzLDExICsyMzgsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ0xpc3RpbmcgJywgcXVpZXQpCiAKICAgICAjIEVuc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNvbXBpbGVhbGwncyBDTEkgaXMgdG8gY3JlYXRlCi0gICAgIyBQRVAgMzE0NyBweWMvcHlvIGZpbGVzLgorICAgICMgUEVQIDMxNDcvUEVQIDQ4OCBweWMgZmlsZXMuCiAgICAgZm9yIG5hbWUsIGV4dCwgc3dpdGNoIGluIFsKICAgICAgICAgKCdub3JtYWwnLCAncHljJywgW10pLAotICAgICAgICAoJ29wdGltaXplJywgJ3B5bycsIFsnLU8nXSksCi0gICAgICAgICgnZG91Ymxlb3B0aW1pemUnLCAncHlvJywgWyctT08nXSksCisgICAgICAgICgnb3B0aW1pemUnLCAnb3B0LTEucHljJywgWyctTyddKSwKKyAgICAgICAgKCdkb3VibGVvcHRpbWl6ZScsICdvcHQtMi5weWMnLCBbJy1PTyddKSwKICAgICBdOgogICAgICAgICBkZWYgZihzZWxmLCBleHQ9ZXh0LCBzd2l0Y2g9c3dpdGNoKToKICAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygqKHN3aXRjaCArCkBAIC0yMjQsMTMgKzI1OSwxMiBAQAogCiAgICAgZGVmIHRlc3RfbGVnYWN5X3BhdGhzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IHdpdGggdGhlIHByb3BlciBzd2l0Y2gsIGNvbXBpbGVhbGwgbGVhdmVzIGxlZ2FjeQotICAgICAgICAjIHB5Yy9weW8gZmlsZXMsIGFuZCBubyBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkuCisgICAgICAgICMgcHljIGZpbGVzLCBhbmQgbm8gX19weWNhY2hlX18gZGlyZWN0b3J5LgogICAgICAgICBzZWxmLmFzc2VydFJ1bk9LKCctYicsICctcScsIHNlbGYucGtnZGlyKQogICAgICAgICAjIFZlcmlmeSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGNvbnRlbnRzLgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYucGtnZGlyX2NhY2hlZGlyKSkKLSAgICAgICAgb3B0ID0gJ2MnIGlmIF9fZGVidWdfXyBlbHNlICdvJwotICAgICAgICBleHBlY3RlZCA9IHNvcnRlZChbJ19faW5pdF9fLnB5JywgJ19faW5pdF9fLnB5JyArIG9wdCwgJ2Jhci5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyLnB5JyArIG9wdF0pCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKFsnX19pbml0X18ucHknLCAnX19pbml0X18ucHljJywgJ2Jhci5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyLnB5YyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvcy5saXN0ZGlyKHNlbGYucGtnZGlyKSksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfcnVucyhzZWxmKToKQEAgLTI3MywxMiArMzA3LDUzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3ViaW5pdGZuKQogICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGhhbWZuKQogCisgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBzdWJwYWNrYWdlID0gb3MucGF0aC5qb2luKHNlbGYucGtnZGlyLCAnc3BhbScpCisgICAgICAgIHN1YnBhY2thZ2UyID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UsICdoYW0nKQorICAgICAgICBzdWJwYWNrYWdlMyA9IG9zLnBhdGguam9pbihzdWJwYWNrYWdlMiwgJ2VnZ3MnKQorICAgICAgICBmb3IgcGtnIGluIChzdWJwYWNrYWdlLCBzdWJwYWNrYWdlMiwgc3VicGFja2FnZTMpOgorICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5tYWtlX3BrZyhwa2cpCisKKyAgICAgICAgc3ViaW5pdGZuID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UsICdfX2luaXRfXy5weScpCisgICAgICAgIGhhbWZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlLCAnaGFtJywgJycpCisgICAgICAgIHNwYW1mbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQoc3VicGFja2FnZTIsICdzcGFtJywgJycpCisgICAgICAgIGVnZ2ZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlMywgJ2VnZycsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDAnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc3VicGFja2FnZSwgJ19fcHljYWNoZV9fJykpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDEnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoc3BhbWZuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDInLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3BhbWZuKQorICAgICAgICBzZWxmLmFzc2VydE5vdENvbXBpbGVkKGVnZ2ZuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDUnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3BhbWZuKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGVnZ2ZuKQorCiAgICAgZGVmIHRlc3RfcXVpZXQoc2VsZik6CiAgICAgICAgIG5vaXN5ID0gc2VsZi5hc3NlcnRSdW5PSyhzZWxmLnBrZ2RpcikKICAgICAgICAgcXVpZXQgPSBzZWxmLmFzc2VydFJ1bk9LKCctcScsIHNlbGYucGtnZGlyKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGInJywgbm9pc3kpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBxdWlldCkKIAorICAgIGRlZiB0ZXN0X3NpbGVudChzZWxmKToKKyAgICAgICAgc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzZWxmLnBrZ2RpciwgJ2NydW5jaHlmcm9nJywgJ2JhZChzeW50YXgnKQorICAgICAgICBfLCBxdWlldCwgXyA9IHNlbGYuYXNzZXJ0UnVuTm90T0soJy1xJywgc2VsZi5wa2dkaXIpCisgICAgICAgIF8sIHNpbGVudCwgXyA9IHNlbGYuYXNzZXJ0UnVuTm90T0soJy1xcScsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGInJywgcXVpZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzaWxlbnQpCisKICAgICBkZWYgdGVzdF9yZWdleHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy14JywgcidiYVteXFwvXSokJywgc2VsZi5wa2dkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoc2VsZi5iYXJmbikKQEAgLTM3OSw2ICs0NTQsMjkgQEAKICAgICAgICAgb3V0ID0gc2VsZi5hc3NlcnRSdW5PSygnYmFkZmlsZW5hbWUnKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgYiJDYW4ndCBsaXN0ICdiYWRmaWxlbmFtZSciKQogCisgICAgQHNraXBVbmxlc3MoX2hhdmVfbXVsdGlwcm9jZXNzaW5nLCAicmVxdWlyZXMgbXVsdGlwcm9jZXNzaW5nIikKKyAgICBkZWYgdGVzdF93b3JrZXJzKHNlbGYpOgorICAgICAgICBiYXIyZm4gPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHNlbGYuZGlyZWN0b3J5LCAnYmFyMicsICcnKQorICAgICAgICBmaWxlcyA9IFtdCisgICAgICAgIGZvciBzdWZmaXggaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdmb297fScuZm9ybWF0KHN1ZmZpeCkpCisgICAgICAgICAgICBvcy5ta2Rpcihwa2dkaXIpCisgICAgICAgICAgICBmbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQocGtnZGlyLCAnX19pbml0X18nLCAnJykKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHBrZ2RpciwgJ2JhcjInLCAnJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSyhzZWxmLmRpcmVjdG9yeSwgJy1qJywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGJhcjJmbikKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGZpbGUpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5jb21waWxlX2RpcicpCisgICAgZGVmIHRlc3Rfd29ya2Vyc19hdmFpbGFibGVfY29yZXMoc2VsZiwgY29tcGlsZV9kaXIpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goInN5cy5hcmd2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldz1bc3lzLmV4ZWN1dGFibGUsIHNlbGYuZGlyZWN0b3J5LCAiLWowIl0pOgorICAgICAgICAgICAgY29tcGlsZWFsbC5tYWluKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2Rpci5jYWxsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVfZGlyLmNhbGxfYXJnc1stMV1bJ3dvcmtlcnMnXSwgTm9uZSkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCBjNzRiMmNhLi5iOTk3NDBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtOSw4ICs5LDkgQEAKICMgd2l0aG91dCB0aHJlYWQgc3VwcG9ydC4KIHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCkBAIC00MjUsNiArNDI2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhbGUgcmVmZXJlbmNlIG5vdCBjb2xsZWN0ZWQgd2l0aGluIHRpbWVvdXQuIikKIAorICAgIGRlZiB0ZXN0X21heF93b3JrZXJzX25lZ2F0aXZlKHNlbGYpOgorICAgICAgICBmb3IgbnVtYmVyIGluICgwLCAtMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4X3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbiAwIik6CisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRvcl90eXBlKG1heF93b3JrZXJzPW51bWJlcikKKwogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3JUZXN0KFRocmVhZFBvb2xNaXhpbiwgRXhlY3V0b3JUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWFwX3N1Ym1pdHNfd2l0aG91dF9pdGVyYXRpb24oc2VsZik6CkBAIC00MzcsNiArNDQ1LDExIEBACiAgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24od2FpdD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmluaXNoZWQsIHJhbmdlKDEwKSkKIAorICAgIGRlZiB0ZXN0X2RlZmF1bHRfd29ya2VycyhzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBzZWxmLmV4ZWN1dG9yX3R5cGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4ZWN1dG9yLl9tYXhfd29ya2VycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAob3MuY3B1X2NvdW50KCkgb3IgMSkgKiA1KQorCiAKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3JUZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2tpbGxlZF9jaGlsZChzZWxmKToKQEAgLTQ1MSw2ICs0NjQsNDggQEAKICAgICAgICAgIyBTdWJtaXR0aW5nIG90aGVyIGpvYnMgZmFpbHMgYXMgd2VsbC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIHNlbGYuZXhlY3V0b3Iuc3VibWl0LCBwb3csIDIsIDgpCiAKKyAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgorICAgICAgICBkZWYgYmFkX21hcCgpOgorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9LTEpKQorCisgICAgICAgIHJlZiA9IGxpc3QobWFwKHBvdywgcmFuZ2UoNDApLCByYW5nZSg0MCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NikpLAorICAgICAgICAgICAgcmVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NTApKSwKKyAgICAgICAgICAgIHJlZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3Qoc2VsZi5leGVjdXRvci5tYXAocG93LCByYW5nZSg0MCksIHJhbmdlKDQwKSwgY2h1bmtzaXplPTQwKSksCisgICAgICAgICAgICByZWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJhZF9tYXApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfdHJhY2ViYWNrKGNscyk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigxMjMpICMgc29tZSBjb21tZW50CisKKyAgICBkZWYgdGVzdF90cmFjZWJhY2soc2VsZik6CisgICAgICAgICMgV2Ugd2FudCBlbnN1cmUgdGhhdCB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MgaXMKKyAgICAgICAgIyBjb250YWluZWQgaW4gdGhlIHRyYWNlYmFjayByYWlzZWQgaW4gdGhlIG1haW4gcHJvY2Vzcy4KKyAgICAgICAgZnV0dXJlID0gc2VsZi5leGVjdXRvci5zdWJtaXQoc2VsZi5fdGVzdF90cmFjZWJhY2spCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIGZ1dHVyZS5yZXN1bHQoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZXhjKSwgUnVudGltZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5hcmdzLCAoMTIzLCkpCisgICAgICAgIGNhdXNlID0gZXhjLl9fY2F1c2VfXworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoY2F1c2UpLCBmdXR1cmVzLnByb2Nlc3MuX1JlbW90ZVRyYWNlYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgUnVudGltZUVycm9yKDEyMykgIyBzb21lIGNvbW1lbnQnLCBjYXVzZS50YikKKworICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBmMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBleGMKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdyYWlzZSBSdW50aW1lRXJyb3IoMTIzKSAjIHNvbWUgY29tbWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgZjEuZ2V0dmFsdWUoKSkKKwogCiBjbGFzcyBGdXR1cmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9uZV9jYWxsYmFja193aXRoX3Jlc3VsdChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggM2IwMzUwMC4uNzFhOGYzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgZXhjZXB0aW9uIHR5cGUgJXMuJXMiCi0gICAgICAgICAgICAgICAgICAgICAgJSAoZXhjLl9fbW9kdWxlX18sIGV4Yy5fX25hbWVfXykpCisgICAgICAgICAgICAgICAgICAgICAgJSAoZXhjLl9fbW9kdWxlX18sIGV4Yy5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3RfYm9vbGVhbihzZWxmKToKICAgICAgICAgY2YgPSBzZWxmLmZyb21zdHJpbmcoCkBAIC0xNTg1LDYgKzE1ODUsMzQgQEAKICAgICAgICAgIiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIocGFyc2VyWydzZWN0aW9uJ10pLCAnPFNlY3Rpb246IHNlY3Rpb24+JykKIAorICAgIGRlZiB0ZXN0X2luY29uc2lzdGVudF9jb252ZXJ0ZXJzX3N0YXRlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgaW1wb3J0IGRlY2ltYWwKKyAgICAgICAgcGFyc2VyLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXSA9IGRlY2ltYWwuRGVjaW1hbAorICAgICAgICBwYXJzZXIucmVhZF9zdHJpbmcoIiIiCisgICAgICAgICAgICBbczFdCisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgICAgICBbczJdCisgICAgICAgICAgICB0d28gPSAyCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5nZXRkZWNpbWFsKCdzMScsICdvbmUnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuZ2V0ZGVjaW1hbCgnczInLCAndHdvJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyWydzMSddLmdldGRlY2ltYWwoJ29uZScpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlclsnczInXS5nZXRkZWNpbWFsKCd0d28nKSwgMikKKyAgICAgICAgZGVsIHBhcnNlci5nZXRkZWNpbWFsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldGRlY2ltYWwoJ3MxJywgJ29uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RlY2ltYWwnLCBwYXJzZXIuY29udmVydGVycykKKyAgICAgICAgZGVsIHBhcnNlci5jb252ZXJ0ZXJzWydkZWNpbWFsJ10KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRkZWNpbWFsKCdzMScsICdvbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlclsnczEnXS5nZXRkZWNpbWFsKCdvbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlclsnczInXS5nZXRkZWNpbWFsKCd0d28nKQorCiAKIGNsYXNzIEV4Y2VwdGlvblBpY2tsaW5nVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciBpc3N1ZSAjMTM3NjA6IENvbmZpZ1BhcnNlciBleGNlcHRpb25zIGFyZSBub3QgcGlja2xhYmxlLiIiIgpAQCAtMTc3Nyw1ICsxODA1LDI1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzJykKIAogCitjbGFzcyBFeGNlcHRpb25Db250ZXh0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIiBUZXN0IHRoYXQgaW1wbGVtZW50YXRpb24gZGV0YWlscyBkb2Vzbid0IGxlYWsKKyAgICB0aHJvdWdoIHJhaXNpbmcgZXhjZXB0aW9ucy4gIiIiCisKKyAgICBkZWYgdGVzdF9nZXRfYmFzaWNfaW50ZXJwb2xhdGlvbihzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgIG15X2RpcjogJShob21lX2RpcjEpcy9sdW1iZXJqYWNrCisgICAgICAgIG15X3BpY3R1cmVzOiAlKG15X2RpcilzL1BpY3R1cmVzCisgICAgICAgICIiIikKKyAgICAgICAgY20gPSBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcikKKyAgICAgICAgd2l0aCBjbToKKyAgICAgICAgICAgIHBhcnNlci5nZXQoJ1BhdGhzJywgJ215X2RpcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfZ2V0X2V4dGVuZGVkX2ludGVycG9sYXRpb24oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoCisgICAgICAgICAgaW50ZXJwb2xhdGlvbj1jb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgIG15X2RpcjogJHtob21lX2RpcjF9L2x1bWJlcmphY2sKKyAgICAgICAgbXlfcGljdHVyZXM6ICR7bXlfZGlyfS9QaWN0dXJlcworICAgICAgICAiIiIpCisgICAgICAgIGNtID0gc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IpCisgICAgICAgIHdpdGggY206CisgICAgICAgICAgICBwYXJzZXIuZ2V0KCdQYXRocycsICdteV9kaXInKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuTm9TZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLm9wdGlvbnMoJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfc2VjdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vU2VjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbmZpZy5zZXQoJ1NlY3Rpb24xJywgJ2FuX2ludCcsICcxNScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX29wdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vU2VjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbmZpZy5yZW1vdmVfb3B0aW9uKCdTZWN0aW9uMScsICdhbl9pbnQnKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworCitjbGFzcyBDb252ZXJ0ZXJzVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkludHJvZHVjZWQgaW4gMy41LCBpc3N1ZSAjMTgxNTkuIiIiCisKKyAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCisKKyAgICBkZWYgbmV3Y29uZmlnKHNlbGYsIGRlZmF1bHRzPU5vbmUpOgorICAgICAgICBpbnN0YW5jZSA9IHN1cGVyKCkubmV3Y29uZmlnKGRlZmF1bHRzPWRlZmF1bHRzKQorICAgICAgICBpbnN0YW5jZS5jb252ZXJ0ZXJzWydsaXN0J10gPSBsYW1iZGEgdjogW2Uuc3RyaXAoKSBmb3IgZSBpbiB2LnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLnN0cmlwKCldCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisgICAgZGVmIHRlc3RfY29udmVydGVycyhzZWxmKToKKyAgICAgICAgY2ZnID0gc2VsZi5uZXdjb25maWcoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdib29sZWFuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpc3QnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2ludCddKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snZmxvYXQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2xpc3QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmNvbnZlcnRlcnNbJyddID0gbGFtYmRhIHY6IHYKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNmZy5jb252ZXJ0ZXJzW05vbmVdID0gbGFtYmRhIHY6IHYKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbc10KKyAgICAgICAgc3RyID0gc3RyaW5nCisgICAgICAgIGludCA9IDEKKyAgICAgICAgZmxvYXQgPSAwLjUKKyAgICAgICAgbGlzdCA9IGEgYiBjIGQgZSBmIGcKKyAgICAgICAgYm9vbCA9IHllcworICAgICAgICAiIiIpCisgICAgICAgIHMgPSBjZmdbJ3MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ3N0ciddLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydpbnQnXSwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2Zsb2F0J10sICcwLjUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2xpc3QnXSwgJ2EgYiBjIGQgZSBmIGcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2Jvb2wnXSwgJ3llcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdzdHInKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdpbnQnKSwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXQoJ3MnLCAnZmxvYXQnKSwgJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdsaXN0JyksICdhIGIgYyBkIGUgZiBnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ2Jvb2wnKSwgJ3llcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdzdHInKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGludCgncycsICdpbnQnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0ZmxvYXQoJ3MnLCAnZmxvYXQnKSwgMC41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsaXN0KCdzJywgJ2xpc3QnKSwgWydhJywgJ2InLCAnYycsICdkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZScsICdmJywgJ2cnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0Ym9vbGVhbigncycsICdib29sJyksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXQoJ3N0cicpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldGludCgnaW50JyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRmbG9hdCgnZmxvYXQnKSwgMC41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0bGlzdCgnbGlzdCcpLCBbJ2EnLCAnYicsICdjJywgJ2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2UnLCAnZicsICdnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRib29sZWFuKCdib29sJyksIFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmdldGRlY2ltYWwoJ3MnLCAnZmxvYXQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHMuZ2V0ZGVjaW1hbCgnZmxvYXQnKQorICAgICAgICBpbXBvcnQgZGVjaW1hbAorICAgICAgICBjZmcuY29udmVydGVyc1snZGVjaW1hbCddID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RlY2ltYWwnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA1KQorICAgICAgICBkZWMwXzUgPSBkZWNpbWFsLkRlY2ltYWwoJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGRlY2ltYWwoJ3MnLCAnZmxvYXQnKSwgZGVjMF81KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0ZGVjaW1hbCgnZmxvYXQnKSwgZGVjMF81KQorICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdkZWNpbWFsJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNmZy5jb252ZXJ0ZXJzKSwgNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBjZmcuZ2V0ZGVjaW1hbCgncycsICdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcy5nZXRkZWNpbWFsKCdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGNmZy5jb252ZXJ0ZXJzWydkZWNpbWFsJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJyddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGNmZy5jb252ZXJ0ZXJzW05vbmVdCisKKworY2xhc3MgQmxhdGFudE92ZXJyaWRlQ29udmVydGVyc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGF0IGlmIHNvbWVib2R5IG92ZXJyb2RlIGEgZ2V0Ym9vbGVhbigpPyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGluCisgICAgdGhpcyBjYXNlIHRoZSBhdXRvbWF0aWMgY29udmVydGVycyBkbyBub3Qga2ljayBpbi4iIiIKKworICAgIGNvbmZpZyA9ICIiIgorICAgICAgICBbb25lXQorICAgICAgICBvbmUgPSBmYWxzZQorICAgICAgICB0d28gPSBmYWxzZQorICAgICAgICB0aHJlZSA9IGxvbmcgc3Rvcnkgc2hvcnQKKworICAgICAgICBbdHdvXQorICAgICAgICBvbmUgPSBmYWxzZQorICAgICAgICB0d28gPSBmYWxzZQorICAgICAgICB0aHJlZSA9IGZvdXIKKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRlcnNfYXRfaW5pdChzZWxmKToKKyAgICAgICAgY2ZnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcihjb252ZXJ0ZXJzPXsnbGVuJzogbGVufSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLl90ZXN0X2xlbihjZmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNmZy5jb252ZXJ0ZXJzWydsZW4nXSkKKworICAgIGRlZiB0ZXN0X2luaGVyaXRhbmNlKHNlbGYpOgorICAgICAgICBjbGFzcyBTdHJhbmdlQ29uZmlnUGFyc2VyKGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIpOgorICAgICAgICAgICAgZ2V0dHlzYnVyZyA9ICdhIGhpc3RvcmljIGJvcm91Z2ggaW4gc291dGggY2VudHJhbCBQZW5uc3lsdmFuaWEnCisKKyAgICAgICAgICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1jb25maWdwYXJzZXIuX1VOU0VUKToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uID09IG9wdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRib29sZWFuKHNlY3Rpb24sIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCisgICAgICAgICAgICBkZWYgZ2V0bGVuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWNvbmZpZ3BhcnNlci5fVU5TRVQpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGxlbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKKworICAgICAgICBjZmcgPSBTdHJhbmdlQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLl90ZXN0X2xlbihjZmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydsZW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAnb25lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICdvbmUnKSkKKyAgICAgICAgY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSA9IGNmZy5fY29udmVydF90b19ib29sZWFuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICdvbmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICdvbmUnKSkKKworICAgIGRlZiBfdGVzdF9sZW4oc2VsZiwgY2ZnKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdib29sZWFuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xlbicsIGNmZy5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd0eXNidXJnJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydpbnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Zsb2F0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndGhyZWUnKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndGhyZWUnKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAnZm91cicsIGZhbGxiYWNrPTApLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvbmZpZ3BhcnNlci5Ob09wdGlvbkVycm9yKToKKyAgICAgICAgICAgIGNmZy5nZXRsZW4oJ3R3bycsICdmb3VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWydvbmUnXS5nZXRsZW4oJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1snb25lJ10uZ2V0bGVuKCd0aHJlZScpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCd0aHJlZScpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdmb3VyJywgMCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ2ZvdXInKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQorICAgICAgICBjZmcuZ2V0Ym9vbGVhbiA9IGxhbWJkYSBzZWN0aW9uLCBvcHRpb246IFRydWUKKyAgICAgICAgY2ZnLmdldGxlbiA9IGxhbWJkYSBzZWN0aW9uLCBvcHRpb246IGxlbihjZmdbc2VjdGlvbl1bb3B0aW9uXSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjZmcuY29udmVydGVycyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Jvb2xlYW4nLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGVuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydpbnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Zsb2F0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBjZmcuY29udmVydGVyc1snYm9vbGVhbiddID0gY2ZnLl9jb252ZXJ0X3RvX2Jvb2xlYW4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCd0d28nLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ3RocmVlJyksIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ3RocmVlJyksIDQpCisgICAgICAgICMgSWYgYSBnZXR0ZXIgaW1wbCBpcyBhc3NpZ25lZCBzdHJhaWdodCB0byB0aGUgaW5zdGFuY2UsIGl0IHdvbid0CisgICAgICAgICMgYmUgYXZhaWxhYmxlIG9uIHRoZSBzZWN0aW9uIHByb3hpZXMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CmluZGV4IGE2NjdhMTYuLjNjNmJkZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogCkBAIC04Niw4ICs4NSw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGFpbmVyID09IGNvbnRhaW5lcikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RDb250YWlucykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDhmODQ5YWUuLjc4NzQxZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTgzLDYgKzgzLDQyIEBACiAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcig5OTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUsIFsxLCA0MiwgOTk5XSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX2V4Y2VwdF9zdG9waXRlcihzZWxmKToKKyAgICAgICAgc3RvcF9leGMgPSBTdG9wSXRlcmF0aW9uKCdzcGFtJykKKyAgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgIGRlZiB3b29ob28oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgICAgIHdpdGggd29vaG9vKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN0b3BfZXhjCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4LCBzdG9wX2V4YykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgc3VwcHJlc3NlZCcpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0bWFuYWdlcl9leGNlcHRfcGVwNDc5KHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiXAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3Jfc3RvcAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRtYW5hZ2VyCitkZWYgd29vaG9vKCk6CisgICAgeWllbGQKKyIiIgorICAgICAgICBsb2NhbHMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIGxvY2FscywgbG9jYWxzKQorICAgICAgICB3b29ob28gPSBsb2NhbHNbJ3dvb2hvbyddCisKKyAgICAgICAgc3RvcF9leGMgPSBTdG9wSXRlcmF0aW9uKCdzcGFtJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCB3b29ob28oKToKKyAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleCwgc3RvcF9leGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIHN1cHByZXNzZWQnKQorCiAgICAgZGVmIF9jcmVhdGVfY29udGV4dG1hbmFnZXJfYXR0cmlicyhzZWxmKToKICAgICAgICAgZGVmIGF0dHJpYnMoKiprdyk6CiAgICAgICAgICAgICBkZWYgZGVjb3JhdGUoZnVuYyk6CkBAIC03MjYsNjAgKzc2Miw3NiBAQAogICAgICAgICBzdGFjay5wdXNoKGNtKQogICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIGNtKQogCi1jbGFzcyBUZXN0UmVkaXJlY3RTdGRvdXQodW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBUZXN0UmVkaXJlY3RTdHJlYW06CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSBOb25lCisgICAgb3JpZ19zdHJlYW0gPSBOb25lCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19kb2NzdHJpbmdzCiAgICAgZGVmIHRlc3RfaW5zdGFuY2VfZG9jcyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxOTMzMDogZW5zdXJlIGNvbnRleHQgbWFuYWdlciBpbnN0YW5jZXMgaGF2ZSBnb29kIGRvY3N0cmluZ3MKLSAgICAgICAgY21fZG9jc3RyaW5nID0gcmVkaXJlY3Rfc3Rkb3V0Ll9fZG9jX18KLSAgICAgICAgb2JqID0gcmVkaXJlY3Rfc3Rkb3V0KE5vbmUpCisgICAgICAgIGNtX2RvY3N0cmluZyA9IHNlbGYucmVkaXJlY3Rfc3RyZWFtLl9fZG9jX18KKyAgICAgICAgb2JqID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0oTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19kb2NfXywgY21fZG9jc3RyaW5nKQogCiAgICAgZGVmIHRlc3Rfbm9fcmVkaXJlY3RfaW5faW5pdChzZWxmKToKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0Ci0gICAgICAgIHJlZGlyZWN0X3N0ZG91dChOb25lKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQorICAgICAgICBzZWxmLnJlZGlyZWN0X3N0cmVhbShOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9yZWRpcmVjdF90b19zdHJpbmdfaW8oc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIG1zZyA9ICJDb25zaWRlciBhbiBBUEkgbGlrZSBoZWxwKCksIHdoaWNoIHByaW50cyBkaXJlY3RseSB0byBzdGRvdXQiCi0gICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChmKToKLSAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMuc3Rkb3V0LCBvcmlnX3N0ZG91dCkKKyAgICAgICAgb3JpZ19zdGRvdXQgPSBnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkKKyAgICAgICAgd2l0aCBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKToKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pLCBvcmlnX3N0ZG91dCkKICAgICAgICAgcyA9IGYuZ2V0dmFsdWUoKS5zdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgbXNnKQogCiAgICAgZGVmIHRlc3RfZW50ZXJfcmVzdWx0X2lzX3RhcmdldChzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgd2l0aCByZWRpcmVjdF9zdGRvdXQoZikgYXMgZW50ZXJfcmVzdWx0OgorICAgICAgICB3aXRoIHNlbGYucmVkaXJlY3Rfc3RyZWFtKGYpIGFzIGVudGVyX3Jlc3VsdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZW50ZXJfcmVzdWx0LCBmKQogCiAgICAgZGVmIHRlc3RfY21faXNfcmV1c2FibGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHdyaXRlX3RvX2YgPSByZWRpcmVjdF9zdGRvdXQoZikKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgIHdyaXRlX3RvX2YgPSBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQogICAgICAgICB3aXRoIHdyaXRlX3RvX2Y6Ci0gICAgICAgICAgICBwcmludCgiSGVsbG8iLCBlbmQ9IiAiKQorICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIiwgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCiAgICAgICAgIHdpdGggd3JpdGVfdG9fZjoKLSAgICAgICAgICAgIHByaW50KCJXb3JsZCEiKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICAgICAgcHJpbnQoIldvcmxkISIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAgICAgICAgIHMgPSBmLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAiSGVsbG8gV29ybGQhXG4iKQogCiAgICAgZGVmIHRlc3RfY21faXNfcmVlbnRyYW50KHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3cml0ZV90b19mID0gcmVkaXJlY3Rfc3Rkb3V0KGYpCi0gICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICB3cml0ZV90b19mID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0oZikKKyAgICAgICAgb3JpZ19zdGRvdXQgPSBnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkKICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIikKKyAgICAgICAgICAgIHByaW50KCJIZWxsbyIsIGVuZD0iICIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQogICAgICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgICAgIHByaW50KCJXb3JsZCEiKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICAgICAgICAgIHByaW50KCJXb3JsZCEiLCBmaWxlPWdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSksIG9yaWdfc3Rkb3V0KQogICAgICAgICBzID0gZi5nZXR2YWx1ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIkhlbGxvIFdvcmxkIVxuIikKIAogCitjbGFzcyBUZXN0UmVkaXJlY3RTdGRvdXQoVGVzdFJlZGlyZWN0U3RyZWFtLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSByZWRpcmVjdF9zdGRvdXQKKyAgICBvcmlnX3N0cmVhbSA9ICJzdGRvdXQiCisKKworY2xhc3MgVGVzdFJlZGlyZWN0U3RkZXJyKFRlc3RSZWRpcmVjdFN0cmVhbSwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcmVkaXJlY3Rfc3RyZWFtID0gcmVkaXJlY3Rfc3RkZXJyCisgICAgb3JpZ19zdHJlYW0gPSAic3RkZXJyIgorCisKIGNsYXNzIFRlc3RTdXBwcmVzcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19kb2NzdHJpbmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKaW5kZXggZWI4ZDE4Yy4uYjllYWRkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQpAQCAtNyw3ICs3LDYgQEAKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGxlLCBsdCwgZ2UsIGd0LCBlcSwgbmUKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogb3JkZXJfY29tcGFyaXNvbnMgPSBsZSwgbHQsIGdlLCBndAogZXF1YWxpdHlfY29tcGFyaXNvbnMgPSBlcSwgbmUKQEAgLTE0Niw2ICsxNDUsNDAgQEAKICAgICAgICAgeCA9IEMoNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weS5jb3B5KHgpLCB4KQogCisgICAgZGVmIHRlc3RfY29weV9pbnN0X2dldG5ld2FyZ3Moc2VsZik6CisgICAgICAgIGNsYXNzIEMoaW50KToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmID0gaW50Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgICAgIHNlbGYuZm9vID0gZm9vCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mb28sCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mb28gPT0gb3RoZXIuZm9vCisgICAgICAgIHggPSBDKDQyKQorICAgICAgICB5ID0gY29weS5jb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisKKyAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPTQyKQorICAgICAgICB5ID0gY29weS5jb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisKICAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vKToKQEAgLTI5NCw3ICszMjcsNyBAQAogICAgICAgICB4LmFwcGVuZCh4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBmb3Igb3AgaW4gY29tcGFyaXNvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXSwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oeSksIDEpCkBAIC0zMjEsNyArMzU0LDcgQEAKICAgICAgICAgeFswXS5hcHBlbmQoeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcCwgeSwgeCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXVswXSwgeSkKQEAgLTM0MCw3ICszNzMsNyBAQAogICAgICAgICBmb3Igb3AgaW4gb3JkZXJfY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBmb3Igb3AgaW4gZXF1YWxpdHlfY29tcGFyaXNvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVsnZm9vJ10sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQpAQCAtNDA1LDYgKzQzOCw0MiBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBDKGludCk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IGludC5fX25ld19fKGNscykKKyAgICAgICAgICAgICAgICBzZWxmLmZvbyA9IGZvbworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vLAorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vID09IG90aGVyLmZvbworICAgICAgICB4ID0gQyhbNDJdKQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeSwgQykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5mb28sIHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPVs0Ml0pCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28pOgpAQCAtNzUyLDggKzgyMSw1IEBACiAKIGRlZiBnbG9iYWxfZm9vKHgsIHkpOiByZXR1cm4geCt5CiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q29weSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5CmluZGV4IGFiZTA3NDguLjUyZTg4N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weXJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHlyZWcucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgY29weXJlZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgRXh0ZW5zaW9uU2F2ZXIKIAogY2xhc3MgQzoKQEAgLTExMyw5ICsxMTIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvcHlSZWdUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBkZTg1NgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtMCwwICsxLDE0NzEgQEAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworY2xhc3MgQXN5bmNZaWVsZEZyb206CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYub2JqID0gb2JqCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHNlbGYub2JqCisKKworY2xhc3MgQXN5bmNZaWVsZDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgIHlpZWxkIHNlbGYudmFsdWUKKworCitkZWYgcnVuX2FzeW5jKGNvcm8pOgorICAgIGFzc2VydCBjb3JvLl9fY2xhc3NfXyBpbiB7dHlwZXMuR2VuZXJhdG9yVHlwZSwgdHlwZXMuQ29yb3V0aW5lVHlwZX0KKworICAgIGJ1ZmZlciA9IFtdCisgICAgcmVzdWx0ID0gTm9uZQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY29yby5zZW5kKE5vbmUpKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJlc3VsdCA9IGV4LmFyZ3NbMF0gaWYgZXguYXJncyBlbHNlIE5vbmUKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGJ1ZmZlciwgcmVzdWx0CisKKworZGVmIHJ1bl9hc3luY19fYXdhaXRfXyhjb3JvKToKKyAgICBhc3NlcnQgY29yby5fX2NsYXNzX18gaXMgdHlwZXMuQ29yb3V0aW5lVHlwZQorICAgIGF3ID0gY29yby5fX2F3YWl0X18oKQorICAgIGJ1ZmZlciA9IFtdCisgICAgcmVzdWx0ID0gTm9uZQorICAgIGkgPSAwCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgaSAlIDI6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChuZXh0KGF3KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChhdy5zZW5kKE5vbmUpKQorICAgICAgICAgICAgaSArPSAxCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmVzdWx0ID0gZXguYXJnc1swXSBpZiBleC5hcmdzIGVsc2UgTm9uZQorICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gYnVmZmVyLCByZXN1bHQKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHNpbGVuY2VfY29yb19nYygpOgorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICB5aWVsZAorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisKK2NsYXNzIEFzeW5jQmFkU3ludGF4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAiJ2F3YWl0JyBvdXRzaWRlIik6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMxCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAiJ2F3YWl0JyBvdXRzaWRlIik6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMyCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzMKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF80KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNAorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM1CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgorCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM2CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQgZnJvbScgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6CisKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzcKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF84KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jOAorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4Xzkoc2VsZik6CisgICAgICAgIG5zID0ge30KKyAgICAgICAgZm9yIGNvbXAgaW4geycoYXdhaXQgYSBmb3IgYSBpbiBiKScsCisgICAgICAgICAgICAgICAgICAgICAnW2F3YWl0IGEgZm9yIGEgaW4gYl0nLAorICAgICAgICAgICAgICAgICAgICAgJ3thd2FpdCBhIGZvciBhIGluIGJ9JywKKyAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYTogYyBmb3IgYSBpbiBifSd9OgorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdhd2FpdC4qaW4gY29tcHJlaGVuJyk6CisgICAgICAgICAgICAgICAgZXhlYygnYXN5bmMgZGVmIGYoKTpcblx0e30nLmZvcm1hdChjb21wKSwgbnMsIG5zKQorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEwKHNlbGYpOgorICAgICAgICAjIFRlc3RzIGZvciBpc3N1ZSAyNDYxOQorCisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKworICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgaWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBpZiAxOgorICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICAjIDQ1NgorICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworICAgICAgICAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMgorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKworICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKworICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworCisgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAyCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYXN5bmMoKTogcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGF3YWl0KCk6IHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIHJldHVybiBsYW1iZGEgYXN5bmM6IGF3YWl0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFtYmRhIGE6IGF3YWl0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImF3YWl0IGEoKSIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhPWF3YWl0IGIpOgorICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhOmF3YWl0IGIpOgorICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJheigpOgorICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oYT1hd2FpdCBiKToKKyAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGFzeW5jKToKKyAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MgorCisgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXG5hd2FpdCBmb28oKQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJheigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NcbmF3YWl0IGZvbygpCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorCisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisKKyAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXG5hd2FpdCBhCisgICAgICAgICAgICAiIiJdCisKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCisKKyAgICBkZWYgdGVzdF9nb29kc3ludGF4XzEoc2VsZik6CisgICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5CisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDEwKSwgMTEpCisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorCisgICAgICAgIGRlZiBmb28oYXdhaXQpOgorCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKworICAgICAgICBkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICIiInNwYW0iIiIKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogXAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICMgNDU2CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCisgICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDQyKSwgNDIpCisKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBnKCk6IHBhc3MKKyAgICAgICAgICAgIGF3YWl0IHoKKyAgICAgICAgYXdhaXQgPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZikpCisKKworY2xhc3MgVG9rZW5pemVyUmVnclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb25lbGluZV9kZWZzKHNlbGYpOgorICAgICAgICBidWYgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1MDApOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgnZGVmIGl7aX0oKTogcmV0dXJuIHtpfScuZm9ybWF0KGk9aSkpCisgICAgICAgIGJ1ZiA9ICdcbicuam9pbihidWYpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgNTAwIGNvbnNlcXVlbnQsIG9uZS1saW5lIGRlZnMgaXMgT0sKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGJ1ZiwgbnMsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydpNDk5J10oKSwgNDk5KQorCisgICAgICAgICMgVGVzdCB0aGF0IDUwMCBjb25zZXF1ZW50LCBvbmUtbGluZSBkZWZzICphbmQqCisgICAgICAgICMgb25lICdhc3luYyBkZWYnIGZvbGxvd2luZyB0aGVtIGlzIE9LCisgICAgICAgIGJ1ZiArPSAnXG5hc3luYyBkZWYgZm9vKCk6XG4gICAgcmV0dXJuJworICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoYnVmLCBucywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ2k0OTknXSgpLCA0OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24obnNbJ2ZvbyddKSkKKworCitjbGFzcyBDb3JvdXRpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2dlbl8xKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihnZW4sICdfX2F3YWl0X18nKSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIDEwCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLCB0eXBlcy5Db3JvdXRpbmVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChmb28uX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChmb28uX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0dFTkVSQVRPUikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKGYuY3JfY29kZS5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShib29sKGYuY3JfY29kZS5jb19mbGFncyAmIGluc3BlY3QuQ09fR0VORVJBVE9SKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZiksIChbXSwgMTApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jX19hd2FpdF9fKGZvbygpKSwgKFtdLCAxMCkpCisKKyAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChiYXIuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLCAiY29yb3V0aW5lIHJhaXNlZCBTdG9wSXRlcmF0aW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZm9vKCkpLCAnXjxjb3JvdXRpbmUgb2JqZWN0LiogYXQgMHguKj4kJykKKworICAgIGRlZiB0ZXN0X2Z1bmNfNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIGNoZWNrID0gbGFtYmRhOiBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiJ2Nvcm91dGluZScgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIpCisKKyAgICAgICAgd2l0aCBjaGVjaygpOgorICAgICAgICAgICAgbGlzdChmb28oKSkKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICB0dXBsZShmb28oKSkKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICBzdW0oZm9vKCkpCisKKyAgICAgICAgd2l0aCBjaGVjaygpOgorICAgICAgICAgICAgaXRlcihmb28oKSkKKworICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBjaGVjaygpOgorICAgICAgICAgICAgZm9yIGkgaW4gZm9vKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCksIGNoZWNrKCk6CisgICAgICAgICAgICBbaSBmb3IgaSBpbiBmb28oKV0KKworICAgIGRlZiB0ZXN0X2Z1bmNfNShzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICB5aWVsZCAxCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgYmFyKCkKKworICAgICAgICBjaGVjayA9IGxhbWJkYTogc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIidjb3JvdXRpbmUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIGZvciBlbCBpbiBmb28oKTogcGFzcworCisgICAgICAgICMgdGhlIGZvbGxvd2luZyBzaG91bGQgcGFzcyB3aXRob3V0IGFuIGVycm9yCisgICAgICAgIGZvciBlbCBpbiBiYXIoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWwsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2VsIGZvciBlbCBpbiBiYXIoKV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShiYXIoKSksICgxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGJhcigpKSksIDEpCisKKyAgICBkZWYgdGVzdF9mdW5jXzYoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGJhcigpCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZW5kKE5vbmUpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VuZChOb25lKSwgMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIGYuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfZnVuY183KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gMTAKKworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGJhcigpCisKKyAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgJ3lpZWxkIGZyb20nIGEgY29yb3V0aW5lIG9iamVjdCBpbiBhIG5vbi1jb3JvdXRpbmUgZ2VuZXJhdG9yIik6CisKKyAgICAgICAgICAgIGxpc3QoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzgoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuICh5aWVsZCBmcm9tIGZvbygpKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhiYXIoKSksIChbXSwgJ3NwYW0nKSApCisKKyAgICBkZWYgdGVzdF9mdW5jXzkoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KAorICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsICJjb3JvdXRpbmUgJy4qdGVzdF9mdW5jXzkuKmZvbycgd2FzIG5ldmVyIGF3YWl0ZWQiKToKKworICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9mdW5jXzEwKHNlbGYpOgorICAgICAgICBOID0gMAorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgTgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGEgPSB5aWVsZAorICAgICAgICAgICAgICAgIHlpZWxkIChhICoqIDIpCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgTiArPSAxMDAKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBOICs9IDEKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBnZW4oKQorCisgICAgICAgIGNvcm8gPSBmb28oKQorICAgICAgICBhdyA9IGNvcm8uX19hd2FpdF9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhhdywgaXRlcihhdykpCisgICAgICAgIG5leHQoYXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXcuc2VuZCgxMCksIDEwMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIDApCisgICAgICAgIGF3LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCAxKQorCisgICAgICAgIGNvcm8gPSBmb28oKQorICAgICAgICBhdyA9IGNvcm8uX19hd2FpdF9fKCkKKyAgICAgICAgbmV4dChhdykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBhdy50aHJvdyhaZXJvRGl2aXNpb25FcnJvciwgTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCAxMDIpCisKKyAgICBkZWYgdGVzdF9mdW5jXzExKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZnVuYygpOiBwYXNzCisgICAgICAgIGNvcm8gPSBmdW5jKCkKKyAgICAgICAgIyBUZXN0IHRoYXQgUHlDb3JvX1R5cGUgYW5kIF9QeUNvcm9XcmFwcGVyX1R5cGUgdHlwZXMgd2VyZSBwcm9wZXJseQorICAgICAgICAjIGluaXRpYWxpemVkCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19fYXdhaXRfXycsIGRpcihjb3JvKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pdGVyX18nLCBkaXIoY29yby5fX2F3YWl0X18oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Nvcm91dGluZV93cmFwcGVyJywgcmVwcihjb3JvLl9fYXdhaXRfXygpKSkKKyAgICAgICAgY29yby5jbG9zZSgpICMgYXZvaWQgUnVudGltZVdhcm5pbmcKKworICAgIGRlZiB0ZXN0X2Z1bmNfMTIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnKCk6CisgICAgICAgICAgICBpID0gbWUuc2VuZChOb25lKQorICAgICAgICAgICAgYXdhaXQgZm9vCisgICAgICAgIG1lID0gZygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcm91dGluZSBhbHJlYWR5IGV4ZWN1dGluZyIpOgorICAgICAgICAgICAgbWUuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfZnVuY18xMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGcoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSBqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIik6CisKKyAgICAgICAgICAgIGcoKS5zZW5kKCdzcGFtJykKKworICAgIGRlZiB0ZXN0X2Z1bmNfMTQoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgYXN5bmMgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBnZW4oKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgYXdhaXQgZ2VuKCkKKyAgICAgICAgYyA9IGNvcm8oKQorICAgICAgICBjLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik6CisgICAgICAgICAgICBjLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NyX2F3YWl0KHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBhKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoY29yb19iKSwgaW5zcGVjdC5DT1JPX1JVTk5JTkcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb3JvX2IuY3JfYXdhaXQpCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNvcm91dGluZXN0YXRlKGNvcm9fYiksIGluc3BlY3QuQ09ST19SVU5OSU5HKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorCisgICAgICAgIGFzeW5jIGRlZiBjKCk6CisgICAgICAgICAgICBhd2FpdCBhKCkKKworICAgICAgICBhc3luYyBkZWYgYigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorICAgICAgICAgICAgYXdhaXQgYygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb3JvX2IuY3JfYXdhaXQpCisKKyAgICAgICAgY29yb19iID0gYigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fQ1JFQVRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorCisgICAgICAgIGNvcm9fYi5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fU1VTUEVOREVEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcm9fYi5jcl9hd2FpdC5jcl9hd2FpdC5naV9jb2RlLmNvX25hbWUsICdhJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgY29yb19iLnNlbmQoTm9uZSkgICMgY29tcGxldGUgY29yb3V0aW5lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fQ0xPU0VEKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb3JvX2IuY3JfYXdhaXQpCisKKyAgICBkZWYgdGVzdF9jb3JvdHlwZV8xKHNlbGYpOgorICAgICAgICBjdCA9IHR5cGVzLkNvcm91dGluZVR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW50byBjb3JvdXRpbmUnLCBjdC5zZW5kLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2luc2lkZSBjb3JvdXRpbmUnLCBjdC5jbG9zZS5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEluKCdpbiBjb3JvdXRpbmUnLCBjdC50aHJvdy5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEluKCdvZiB0aGUgY29yb3V0aW5lJywgY3QuX19kaWN0X19bJ19fbmFtZV9fJ10uX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignb2YgdGhlIGNvcm91dGluZScsIGN0Ll9fZGljdF9fWydfX3F1YWxuYW1lX18nXS5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0Ll9fbmFtZV9fLCAnY29yb3V0aW5lJykKKworICAgICAgICBhc3luYyBkZWYgZigpOiBwYXNzCisgICAgICAgIGMgPSBmKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29yb3V0aW5lIG9iamVjdCcsIHJlcHIoYykpCisgICAgICAgIGMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMShzZWxmKToKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCAxCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJvYmplY3QgaW50IGNhbi50Liphd2FpdCIpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgW10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIm9iamVjdCBsaXN0IGNhbi50Liphd2FpdCIpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWzEsIDIsIDNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFsxLCAyLCAzXSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jX19hd2FpdF9fKGZvbygpKSwgKFsxLCAyLCAzXSwgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF80KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgYmFyKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbXSwgNDIpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfNShzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IEF3YWl0YWJsZSgpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfXy4qcmV0dXJuZWQgbm9uLWl0ZXJhdG9yIG9mIHR5cGUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfNihzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihbNTJdKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgQXdhaXRhYmxlKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoWzUyXSwgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF83KHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgICAgICAgICAgcmV0dXJuIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgQXdhaXRhYmxlKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoWzQyXSwgMTAwKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0Xzgoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIm9iamVjdCBBd2FpdGFibGUgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24iKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfOShzZWxmKToKKyAgICAgICAgZGVmIHdyYXAoKToKKyAgICAgICAgICAgIHJldHVybiBiYXIKKworICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBiID0gYmFyKCkKKworICAgICAgICAgICAgZGIgPSB7J2InOiAgbGFtYmRhOiB3cmFwfQorCisgICAgICAgICAgICBjbGFzcyBEQjoKKyAgICAgICAgICAgICAgICBiID0gd3JhcAorCisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGJhcigpICsgYXdhaXQgd3JhcCgpKCkgKyBhd2FpdCBkYlsnYiddKCkoKSgpICsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgYmFyKCkgKiAxMDAwICsgYXdhaXQgREIuYigpKCkpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbzIoKToKKyAgICAgICAgICAgIHJldHVybiAtYXdhaXQgYmFyKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbXSwgNDIxNjgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28yKCkpLCAoW10sIC00MikpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGJheigpOgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuIGJheigpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IChhd2FpdCBiYXIoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbXSwgNDIpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTEoc2VsZik6CisgICAgICAgIGRlZiBpZGVudCh2YWwpOgorICAgICAgICAgICAgcmV0dXJuIHZhbAorCisgICAgICAgIGFzeW5jIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gaWRlbnQodmFsPWF3YWl0IGJhcigpKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28yKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgYmFyKCksICdoYW0nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vMigpKSwgKFtdLCAoJ3NwYW0nLCAnaGFtJykpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBjb3JvKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29ybygpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IEF3YWl0YWJsZSgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fXChcKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xMyhzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfXy4qcmV0dXJuZWQgbm9uLWl0ZXJhdG9yIG9mIHR5cGUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTQoc2VsZik6CisgICAgICAgIGNsYXNzIFdyYXBwZXI6CisgICAgICAgICAgICAjIEZvcmNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gdXNlIENvcm91dGluZVR5cGUuX19hd2FpdF9fCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ybyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvcm8uX19jbGFzc19fIGlzIHR5cGVzLkNvcm91dGluZVR5cGUKKyAgICAgICAgICAgICAgICBzZWxmLmNvcm8gPSBjb3JvCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcm8uX19hd2FpdF9fKCkKKworICAgICAgICBjbGFzcyBGdXR1cmVMaWtlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKHlpZWxkKQorCisgICAgICAgIGNsYXNzIE1hcmtlcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBjb3JvMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBGdXR1cmVMaWtlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBNYXJrZXIKKyAgICAgICAgYXN5bmMgZGVmIGNvcm8yKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgV3JhcHBlcihjb3JvMSgpKQorCisgICAgICAgIGMgPSBjb3JvMigpCisgICAgICAgIGMuc2VuZChOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3RvcEl0ZXJhdGlvbiwgJ3NwYW0nKToKKyAgICAgICAgICAgIGMuc2VuZCgnc3BhbScpCisKKyAgICAgICAgYyA9IGNvcm8yKCkKKyAgICAgICAgYy5zZW5kKE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTWFya2VyKToKKyAgICAgICAgICAgIGMudGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoXzEoc2VsZik6CisgICAgICAgIGNsYXNzIE1hbmFnZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbJ2VudGVyLTEtJyArIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudGVyLTItJyArIHNlbGYubmFtZV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWydleGl0LTEtJyArIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXQtMi0nICsgc2VsZi5uYW1lXSkKKworICAgICAgICAgICAgICAgIGlmIHNlbGYubmFtZSA9PSAnQic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoIkEiKSBhcyBhLCBNYW5hZ2VyKCJCIikgYXMgYjoKKyAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbKCdtYW5hZ2VycycsIGEubmFtZSwgYi5uYW1lKV0pCisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHJlc3VsdCwgXyA9IHJ1bl9hc3luYyhmKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXN1bHQsIFsnZW50ZXItMS1BJywgJ2VudGVyLTItQScsICdlbnRlci0xLUInLCAnZW50ZXItMi1CJywKKyAgICAgICAgICAgICAgICAgICAgICgnbWFuYWdlcnMnLCAnQScsICdCJyksCisgICAgICAgICAgICAgICAgICAgICAnZXhpdC0xLUInLCAnZXhpdC0yLUInLCAnZXhpdC0xLUEnLCAnZXhpdC0yLUEnXQorICAgICAgICApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBNYW5hZ2VyKCJBIikgYXMgYSwgTWFuYWdlcigiQyIpIGFzIGM6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWygnbWFuYWdlcnMnLCBhLm5hbWUsIGMubmFtZSldKQorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8yKHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ19fYWV4aXRfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8zKHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19hZW50ZXJfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF80KHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19hZXhpdF9fJyk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzUoc2VsZik6CisgICAgICAgICMgV2hpbGUgdGhpcyB0ZXN0IGRvZXNuJ3QgbWFrZSBhIGxvdCBvZiBzZW5zZSwKKyAgICAgICAgIyBpdCdzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhbiBlYXJseSBidWcgd2l0aCBvcGNvZGVzCisgICAgICAgICMgZ2VuZXJhdGlvbgorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgKDEsICkgPT0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZ1bmMoKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfNihzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMTIzCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NTYKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIm9iamVjdCBpbnQgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24iKToKKyAgICAgICAgICAgICMgaXQncyBpbXBvcnRhbnQgdGhhdCBfX2FleGl0X18gd2Fzbid0IGNhbGxlZAorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF83KHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NDQKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCisgICAgICAgICAgICAgICAgZXhjLmFyZ3NbMF0sICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19jb250ZXh0X18gaXMgbm90IE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShleGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnaW52YWxpZCBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyIGRpZCBub3QgZmFpbCcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfOChzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQ1NgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIENOVCArPSAxCisKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworCisgICAgZGVmIHRlc3Rfd2l0aF85KHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ05ULCAxKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMChzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgQ05UCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fY29udGV4dF9fIGlzIG5vdCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdleGNlcHRpb24gZnJvbSBfX2FleGl0X18gZGlkIG5vdCBwcm9wYWdhdGUnKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMShzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19jb250ZXh0X18gaXMgTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnZXhjZXB0aW9uIGZyb20gX19hZW50ZXJfXyBkaWQgbm90IHByb3BhZ2F0ZScpCisKKyAgICBkZWYgdGVzdF93aXRoXzEyKHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uX19jbGFzc19fLCBDTSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzEzKHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIENOVCArPSAxCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgQ05UICs9IDEwMDAKKyAgICAgICAgICAgIENOVCArPSAxMDAwMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworICAgIGRlZiB0ZXN0X2Zvcl8xKHNlbGYpOgorICAgICAgICBhaXRlcl9jYWxscyA9IDAKKworICAgICAgICBjbGFzcyBBc3luY0l0ZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIGFpdGVyX2NhbGxzCisgICAgICAgICAgICAgICAgYWl0ZXJfY2FsbHMgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCAoc2VsZi5pICUgMTApOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkKHNlbGYuaSAqIDEwKQorCisgICAgICAgICAgICAgICAgaWYgc2VsZi5pID4gMTAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmksIHNlbGYuaQorCisKKyAgICAgICAgYnVmZmVyID0gW10KKyAgICAgICAgYXN5bmMgZGVmIHRlc3QxKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaTEsIGkyIGluIEFzeW5jSXRlcigpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaTEgKyBpMikKKworICAgICAgICB5aWVsZGVkLCBfID0gcnVuX2FzeW5jKHRlc3QxKCkpCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgX19haXRlcl9fIHdhcyBjYWxsZWQgb25seSBvbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWl0ZXJfY2FsbHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeWllbGRlZCwgW2kgKiAxMDAgZm9yIGkgaW4gcmFuZ2UoMSwgMTEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZmZXIsIFtpKjIgZm9yIGkgaW4gcmFuZ2UoMSwgMTAxKV0pCisKKworICAgICAgICBidWZmZXIgPSBbXQorICAgICAgICBhc3luYyBkZWYgdGVzdDIoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJ1ZmZlcgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQXN5bmNJdGVyKCk6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgICAgIGlmIGlbMF0gPT0gMjA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ3doYXQ/JykKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ2VuZCcpCisKKyAgICAgICAgeWllbGRlZCwgXyA9IHJ1bl9hc3luYyh0ZXN0MigpKQorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IF9fYWl0ZXJfXyB3YXMgY2FsbGVkIG9ubHkgb25jZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpdGVyX2NhbGxzLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlpZWxkZWQsIFsxMDAsIDIwMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbaSBmb3IgaSBpbiByYW5nZSgxLCAyMSldICsgWydlbmQnXSkKKworCisgICAgICAgIGJ1ZmZlciA9IFtdCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0MygpOgorICAgICAgICAgICAgbm9ubG9jYWwgYnVmZmVyCisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBc3luY0l0ZXIoKToKKyAgICAgICAgICAgICAgICBpZiBpWzBdID4gMjA6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCd3aGF0PycpCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdlbmQnKQorCisgICAgICAgIHlpZWxkZWQsIF8gPSBydW5fYXN5bmModGVzdDMoKSkKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBfX2FpdGVyX18gd2FzIGNhbGxlZCBvbmx5IG9uY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaXRlcl9jYWxscywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5aWVsZGVkLCBbaSAqIDEwMCBmb3IgaSBpbiByYW5nZSgxLCAxMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmZlciwgW2kgZm9yIGkgaW4gcmFuZ2UoMSwgMjEpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3doYXQ/JywgJ2VuZCddKQorCisgICAgZGVmIHRlc3RfZm9yXzIoc2VsZik6CisgICAgICAgIHR1cCA9ICgxLCAyLCAzKQorICAgICAgICByZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudCh0dXApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gdHVwOgorICAgICAgICAgICAgICAgIHByaW50KCduZXZlciBnb2luZyB0byBoYXBwZW4nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICJhc3luYyBmb3InIHJlcXVpcmVzIGFuIG9iamVjdC4qX19haXRlcl9fLip0dXBsZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQodHVwKSwgcmVmc19iZWZvcmUpCisKKyAgICBkZWYgdGVzdF9mb3JfMyhzZWxmKToKKyAgICAgICAgY2xhc3MgSToKKyAgICAgICAgICAgIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBhaXRlciA9IEkoKQorICAgICAgICByZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudChhaXRlcikKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBhaXRlcjoKKyAgICAgICAgICAgICAgICBwcmludCgnbmV2ZXIgZ29pbmcgdG8gaGFwcGVuJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChhaXRlciksIHJlZnNfYmVmb3JlKQorCisgICAgZGVmIHRlc3RfZm9yXzQoc2VsZik6CisgICAgICAgIGNsYXNzIEk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisKKyAgICAgICAgYWl0ZXIgPSBJKCkKKyAgICAgICAgcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQoYWl0ZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gYWl0ZXI6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19hbmV4dF9fLip0dXBsZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoYWl0ZXIpLCByZWZzX2JlZm9yZSkKKworICAgIGRlZiB0ZXN0X2Zvcl81KHNlbGYpOgorICAgICAgICBjbGFzcyBJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMjMKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19hbmV4dC4qaW50Iik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2Zvcl82KHNlbGYpOgorICAgICAgICBJID0gMAorCisgICAgICAgIGNsYXNzIE1hbmFnZXI6CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBJCisgICAgICAgICAgICAgICAgSSArPSAxMDAwMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBJCisgICAgICAgICAgICAgICAgSSArPSAxMDAwMDAKKworICAgICAgICBjbGFzcyBJdGVyYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgPSAwCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmkgPiAxMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcigpCisgICAgICAgIGl0ZXJhYmxlID0gSXRlcmFibGUoKQorICAgICAgICBtcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQobWFuYWdlcikKKyAgICAgICAgaXJlZnNfYmVmb3JlID0gc3lzLmdldHJlZmNvdW50KGl0ZXJhYmxlKQorCisgICAgICAgIGFzeW5jIGRlZiBtYWluKCk6CisgICAgICAgICAgICBub25sb2NhbCBJCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcjoKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgICAgSSArPSAxCisgICAgICAgICAgICBJICs9IDEwMDAKKworICAgICAgICBydW5fYXN5bmMobWFpbigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEksIDExMTAxMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChtYW5hZ2VyKSwgbXJlZnNfYmVmb3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChpdGVyYWJsZSksIGlyZWZzX2JlZm9yZSkKKworICAgICAgICAjIyMjIyMjIyMjIyMjIworCisgICAgICAgIGFzeW5jIGRlZiBtYWluKCk6CisgICAgICAgICAgICBub25sb2NhbCBJCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigpOgorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigpOgorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgcnVuX2FzeW5jKG1haW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChJLCAzMzMwMzMpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBhc3luYyBkZWYgbWFpbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgSQorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBJICs9IDEwMAorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwMDAKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBJICs9IDEwMAorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwMDAKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgIHJ1bl9hc3luYyhtYWluKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSSwgMjA1NTUyNTUpCisKKyAgICBkZWYgdGVzdF9mb3JfNyhzZWxmKToKKyAgICAgICAgQ05UID0gMAorICAgICAgICBjbGFzcyBBSToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUkoKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorICAgICAgICAgICAgQ05UICs9IDEwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMCkKKworCitjbGFzcyBDb3JvQXN5bmNJT0NvbXBhdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXN5bmNpb18xKHNlbGYpOgorICAgICAgICBpbXBvcnQgYXN5bmNpbworCisgICAgICAgIGNsYXNzIE15RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYnVmZmVyID0gW10KKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoMSkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgyKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxKQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZXhjX3R5cGUuX19uYW1lX18pCisKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKSBhcyBjOgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSkKKyAgICAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbgorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgndW5yZWFjaGFibGUnKQorCisgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKKyAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChsb29wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmKCkpCisgICAgICAgIGV4Y2VwdCBNeUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvb3AuY2xvc2UoKQorICAgICAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbMSwgMiwgJ015RXhjZXB0aW9uJ10pCisKKworY2xhc3MgU3lzU2V0Q29yb1dyYXBwZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NldF93cmFwcGVyXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICB3cmFwcGVkID0gTm9uZQorICAgICAgICBkZWYgd3JhcChnZW4pOgorICAgICAgICAgICAgbm9ubG9jYWwgd3JhcHBlZAorICAgICAgICAgICAgd3JhcHBlZCA9IGdlbgorICAgICAgICAgICAgcmV0dXJuIGdlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpLCB3cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gZm9vKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cmFwcGVkKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmKSwgKFtdLCAnc3BhbScpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgICAgICB3cmFwcGVkID0gTm9uZQorICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpOgorICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3cmFwcGVkKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiY2FsbGFibGUgZXhwZWN0ZWQsIGdvdCBpbnQiKToKKyAgICAgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIGRlZiB3cmFwcGVyKGNvcm8pOgorICAgICAgICAgICAgYXN5bmMgZGVmIHdyYXAoY29ybyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNvcm8KKyAgICAgICAgICAgIHJldHVybiB3cmFwKGNvcm8pCisKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICAicmVjdXJzaXZlbHkgd3JhcCAuKiB3cmFwIC4qIik6CisKKyAgICAgICAgICAgICAgICBmb28oKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfNChzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgd3JhcHBlZCA9IE5vbmUKKyAgICAgICAgZGVmIHdyYXAoZ2VuKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHdyYXBwZWQKKyAgICAgICAgICAgIHdyYXBwZWQgPSBnZW4KKyAgICAgICAgICAgIHJldHVybiBnZW4KKworICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvbygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKAorICAgICAgICAgICAgICAgIHdyYXBwZWQsIE5vbmUsCisgICAgICAgICAgICAgICAgImdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmUgd2FzIHdyYXBwZWQgdmlhICIKKyAgICAgICAgICAgICAgICAic3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlciIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKE5vbmUpCisKKworY2xhc3MgQ0FQSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdHBfYXdhaXRfMShzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGF3YWl0VHlwZSBhcyBhdAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGZ1dHVyZSA9IGF0KGl0ZXIoWzFdKSkKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgZnV0dXJlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKCkuc2VuZChOb25lKSwgMSkKKworICAgIGRlZiB0ZXN0X3RwX2F3YWl0XzIoc2VsZik6CisgICAgICAgICMgVGVzdCB0cF9hd2FpdCB0byBfX2F3YWl0X18gbWFwcGluZworICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgYXdhaXRUeXBlIGFzIGF0CisgICAgICAgIGZ1dHVyZSA9IGF0KGl0ZXIoWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGZ1dHVyZS5fX2F3YWl0X18oKSksIDEpCisKKyAgICBkZWYgdGVzdF90cF9hd2FpdF8zKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgYXdhaXRUeXBlIGFzIGF0CisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgZnV0dXJlID0gYXQoMSkKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgZnV0dXJlKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X18uKnJldHVybmVkIG5vbi1pdGVyYXRvciBvZiB0eXBlICdpbnQnIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLnNlbmQoTm9uZSksIDEpCisKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBjZTVkMjdlLi5mMTg5ODNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTExLDcgKzExLDcgQEAKIGNsYXNzIENQcm9maWxlVGVzdChQcm9maWxlVGVzdCk6CiAgICAgcHJvZmlsZXJjbGFzcyA9IGNQcm9maWxlLlByb2ZpbGUKICAgICBwcm9maWxlcm1vZHVsZSA9IGNQcm9maWxlCi0gICAgZXhwZWN0ZWRfbWF4X291dHB1dCA9ICJ7YnVpbHQtaW4gbWV0aG9kIG1heH0iCisgICAgZXhwZWN0ZWRfbWF4X291dHB1dCA9ICJ7YnVpbHQtaW4gbWV0aG9kIGJ1aWx0aW5zLm1heH0iCiAKICAgICBkZWYgZ2V0X2V4cGVjdGVkX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIF9Qcm9maWxlT3V0cHV0CkBAIC03Miw5ICs3Miw5IEBACiBwcm9maWxlZS5weTo4OChoZWxwZXIyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDYgICAgMC4yMzQgICAgMC4zMDAgIHByb2ZpbGVlLnB5OjU1KGhlbHBlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAwLjA3OCAgICAwLjEwMCAgcHJvZmlsZWUucHk6ODQoaGVscGVyMl9pbmRpcmVjdCkKIHByb2ZpbGVlLnB5Ojk4KHN1YmhlbHBlcikgICAgICAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgOCAgICAwLjA2NCAgICAwLjA4MCAgcHJvZmlsZWUucHk6ODgoaGVscGVyMikKLXtidWlsdC1pbiBtZXRob2QgZXhjX2luZm99ICAgICAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwMCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKLXtidWlsdC1pbiBtZXRob2QgaGFzYXR0cn0gICAgICAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwNCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKK3tidWlsdC1pbiBtZXRob2QgYnVpbHRpbnMuaGFzYXR0cn0gICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwNCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCAgICAwLjAwMCAgICAwLjAwOCAgcHJvZmlsZWUucHk6ODgoaGVscGVyMikKK3tidWlsdC1pbiBtZXRob2Qgc3lzLmV4Y19pbmZvfSAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwMCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKIHttZXRob2QgJ2FwcGVuZCcgb2YgJ2xpc3QnIG9iamVjdHN9ICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwMCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkiIiIKIF9Qcm9maWxlT3V0cHV0WydwcmludF9jYWxsZWVzJ10gPSAiIiJcCiA8c3RyaW5nPjoxKDxtb2R1bGU+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDEgICAgMC4yNzAgICAgMS4wMDAgIHByb2ZpbGVlLnB5OjI1KHRlc3RmdW5jKQpAQCAtODcsMTIgKzg3LDEyIEBACiBwcm9maWxlZS5weTo1NShoZWxwZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDQgICAgMC4xMTYgICAgMC4xMjAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgICAgMC4wMDAgICAgMC4xNDAgIHByb2ZpbGVlLnB5Ojg0KGhlbHBlcjJfaW5kaXJlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgICAgMC4yMzQgICAgMC4zMDAgIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpCi1wcm9maWxlZS5weTo3MyhoZWxwZXIxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHtidWlsdC1pbiBtZXRob2QgZXhjX2luZm99Citwcm9maWxlZS5weTo3MyhoZWxwZXIxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDQgIHtidWlsdC1pbiBtZXRob2QgYnVpbHRpbnMuaGFzYXR0cn0KIHByb2ZpbGVlLnB5Ojg0KGhlbHBlcjJfaW5kaXJlY3QpICAgICAgICAgICAgICAgICAgLT4gICAgICAgMiAgICAwLjAwNiAgICAwLjA0MCAgcHJvZmlsZWUucHk6MzUoZmFjdG9yaWFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgIDAuMDc4ICAgIDAuMTAwICBwcm9maWxlZS5weTo4OChoZWxwZXIyKQogcHJvZmlsZWUucHk6ODgoaGVscGVyMikgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA4ICAgIDAuMDY0ICAgIDAuMDgwICBwcm9maWxlZS5weTo5OChzdWJoZWxwZXIpCiBwcm9maWxlZS5weTo5OChzdWJoZWxwZXIpICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgMTYgICAgMC4wMTYgICAgMC4wMTYgIHByb2ZpbGVlLnB5OjExMChfX2dldGF0dHJfXykKLXtidWlsdC1pbiBtZXRob2QgaGFzYXR0cn0gICAgICAgICAgICAgICAgICAgICAgICAgLT4gICAgICAxMiAgICAwLjAxMiAgICAwLjAxMiAgcHJvZmlsZWUucHk6MTEwKF9fZ2V0YXR0cl9fKSIiIgore2J1aWx0LWluIG1ldGhvZCBidWlsdGlucy5oYXNhdHRyfSAgICAgICAgICAgICAgICAtPiAgICAgIDEyICAgIDAuMDEyICAgIDAuMDEyICBwcm9maWxlZS5weToxMTAoX19nZXRhdHRyX18pIiIiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQppbmRleCAzMzZjY2JlLi41OGRmZDAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkKQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB0ZXN0LnN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogCiBDUkFTSEVSX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiY3Jhc2hlcnMiKQogQ1JBU0hFUl9GSUxFUyA9IG9zLnBhdGguam9pbihDUkFTSEVSX0RJUiwgIioucHkiKQpAQCAtMzAsOSArMzAsOCBAQAogICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKGZuYW1lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENyYXNoZXJUZXN0KQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nzdi5weSBiL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CmluZGV4IDY1NDQ5YWUuLjhlOWMyYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CkBAIC0xODYsNiArMTg2LDE0IEBACiAgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoWydhJywxLCdwLHEnXSwgJ2EsMSxwXFwscScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlY2hhcj0nXFwnLCBxdW90aW5nID0gY3N2LlFVT1RFX05PTkUpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFsnYScsIDEsICdwLHEnXSksICdhLDEsInAscSInKQorICAgICAgICBzZWxmLl93cml0ZV90ZXN0KGl0ZXIoWydhJywgMSwgTm9uZV0pLCAnYSwxLCcpCisgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoaXRlcihbXSksICcnKQorICAgICAgICBzZWxmLl93cml0ZV90ZXN0KGl0ZXIoW05vbmVdKSwgJyIiJykKKyAgICAgICAgc2VsZi5fd3JpdGVfZXJyb3JfdGVzdChjc3YuRXJyb3IsIGl0ZXIoW05vbmVdKSwgcXVvdGluZz1jc3YuUVVPVEVfTk9ORSkKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFtOb25lLCBOb25lXSksICcsJykKKwogICAgIGRlZiB0ZXN0X3dyaXRlcm93cyhzZWxmKToKICAgICAgICAgY2xhc3MgQnJva2VuRmlsZToKICAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBidWYpOgpAQCAtNTc4LDYgKzU4NiwxNiBAQAogICAgICAgICAgICAgZmlsZW9iai5yZWFkbGluZSgpICMgaGVhZGVyCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmoucmVhZCgpLCAiMTAsLGFiY1xyXG4iKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfbXVsdGlwbGVfZGljdF9yb3dzKHNlbGYpOgorICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBjc3YuRGljdFdyaXRlcihmaWxlb2JqLCBmaWVsZG5hbWVzPVsiZjEiLCAiZjIiLCAiZjMiXSkKKyAgICAgICAgd3JpdGVyLndyaXRlaGVhZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLmdldHZhbHVlKCksICJmMSxmMixmM1xyXG4iKQorICAgICAgICB3cml0ZXIud3JpdGVyb3dzKFt7ImYxIjogMSwgImYyIjogImFiYyIsICJmMyI6ICJmIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiZjEiOiAyLCAiZjIiOiA1LCAiZjMiOiAieHl6In1dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmouZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZjEsZjIsZjNcclxuMSxhYmMsZlxyXG4yLDUseHl6XHJcbiIpCisKICAgICBkZWYgdGVzdF93cml0ZV9ub19maWVsZHMoc2VsZik6CiAgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LkRpY3RXcml0ZXIsIGZpbGVvYmopCkBAIC03NzYsNyArNzk0LDcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbXlkaWFsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnInF1b3RlY2hhciIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICcicXVvdGVjaGFyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nJykKIAogICAgICAgICBteWRpYWxlY3QucXVvdGVjaGFyID0gNAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CkBAIC03OTksMTMgKzgxNywxMyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CiAgICAgICAgICAgICBteWRpYWxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJkZWxpbWl0ZXIiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmcnKQogCiAgICAgICAgIG15ZGlhbGVjdC5kZWxpbWl0ZXIgPSAiIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CiAgICAgICAgICAgICBteWRpYWxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJkZWxpbWl0ZXIiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmcnKQogCiAgICAgICAgIG15ZGlhbGVjdC5kZWxpbWl0ZXIgPSBiIiwiCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY3N2LkVycm9yKSBhcyBjbToKQEAgLTEwNjYsMTEgKzEwODQsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgZXhwZWN0ZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIG1vZCA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICAqW2dldGF0dHIobW9kLCBuYW1lKSBmb3IgbmFtZSBpbiBkaXIobW9kKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1Rlc3QnKV0KLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKaW5kZXggYmQ3ZDRmYy4uMjc0NzA0MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKQEAgLTM3MCw2ICszNzAsMTMgQEAKICAgICAgICAgb2Zmc2V0ID0gaHVtYW5fcmVhZGFibGVfc2lnbmF0dXJlLmZpbmQoIlt5LCB4LF0iKQogICAgICAgICBhc3NlcnQgb2Zmc2V0ID49IDAsICIiCiAKKyAgICBkZWYgdGVzdF91cGRhdGVfbGluZXNfY29scyhzZWxmKToKKyAgICAgICAgIyB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IExJTkVTIGFuZCBDT0xTIGFyZSB1cGRhdGVkLAorICAgICAgICAjIGJlY2F1c2Ugd2UgY2FuJ3QgYXV0b21hdGUgY2hhbmdpbmcgdGhlbS4gU2VlIElzc3VlICM0MjU0IGZvcgorICAgICAgICAjIGEgbWFudWFsIHRlc3Qgc2NyaXB0LiBXZSBjYW4gb25seSB0ZXN0IHRoYXQgdGhlIGZ1bmN0aW9uCisgICAgICAgICMgY2FuIGJlIGNhbGxlZC4KKyAgICAgICAgY3Vyc2VzLnVwZGF0ZV9saW5lc19jb2xzKCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKaW5kZXggZDlkZGIzMi4uMmQ0ZWI1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CkBAIC0xLDIwICsxLDIwIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKKwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUsIHJ1bl91bml0dGVzdAogCiBURVNUUyA9ICd0ZXN0LmRhdGV0aW1ldGVzdGVyJwogCi0jIFhYWDogaW1wb3J0X2ZyZXNoX21vZHVsZSgpIGlzIHN1cHBvc2VkIHRvIGxlYXZlIHN5cy5tb2R1bGUgY2FjaGUgdW50b3VjaGVkLAotIyBYWFg6IGJ1dCBpdCBkb2VzIG5vdCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlIGl0IG91cnNlbHZlcy4KLXNhdmVfc3lzX21vZHVsZXMgPSBzeXMubW9kdWxlcy5jb3B5KCkKIHRyeToKICAgICBwdXJlX3Rlc3RzID0gaW1wb3J0X2ZyZXNoX21vZHVsZShURVNUUywgZnJlc2g9WydkYXRldGltZScsICdfc3RycHRpbWUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsnX2RhdGV0aW1lJ10pCiAgICAgZmFzdF90ZXN0cyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoVEVTVFMsIGZyZXNoPVsnZGF0ZXRpbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYXRldGltZScsICdfc3RycHRpbWUnXSkKIGZpbmFsbHk6Ci0gICAgc3lzLm1vZHVsZXMuY2xlYXIoKQotICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShzYXZlX3N5c19tb2R1bGVzKQorICAgICMgWFhYOiBpbXBvcnRfZnJlc2hfbW9kdWxlKCkgaXMgc3VwcG9zZWQgdG8gbGVhdmUgc3lzLm1vZHVsZSBjYWNoZSB1bnRvdWNoZWQsCisgICAgIyBYWFg6IGJ1dCBpdCBkb2VzIG5vdCwgc28gd2UgaGF2ZSB0byBjbGVhbnVwIG91cnNlbHZlcy4KKyAgICBmb3IgbW9kbmFtZSBpbiBbJ2RhdGV0aW1lJywgJ19kYXRldGltZScsICdfc3RycHRpbWUnXToKKyAgICAgICAgc3lzLm1vZHVsZXMucG9wKG1vZG5hbWUsIE5vbmUpCiB0ZXN0X21vZHVsZXMgPSBbcHVyZV90ZXN0cywgZmFzdF90ZXN0c10KIHRlc3Rfc3VmZml4ZXMgPSBbIl9QdXJlIiwgIl9GYXN0Il0KICMgWFhYKGdiKSBGaXJzdCBydW4gYWxsIHRoZSBfUHVyZSB0ZXN0cywgdGhlbiBhbGwgdGhlIF9GYXN0IHRlc3RzLiAgWW91IG1pZ2h0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQppbmRleCBkYzg4Y2E2Li5mZjYzYzg4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKQEAgLTIxNyw2ICsyMTcsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEQk0gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkIikKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9uZXcoc2VsZik6CisgICAgICAgIHdpdGggZHVtYmRibS5vcGVuKF9mbmFtZSwgJ24nKSBhcyBmOgorICAgICAgICAgICAgZm9yIGsgaW4gc2VsZi5fZGljdDoKKyAgICAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQorCisgICAgICAgIHdpdGggZHVtYmRibS5vcGVuKF9mbmFtZSwgJ24nKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmtleXMoKSwgW10pCisKICAgICBkZWYgdGVzdF9ldmFsKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oX2ZuYW1lICsgJy5kaXInLCAndycpIGFzIHN0cmVhbToKICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgic3RyKHByaW50KCdIYWNrZWQhJykpLCAwXG4iKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IGExNzhmNmYuLjEzN2FhYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTMzLDEyICszMywxMyBAQAogaW1wb3J0IG51bWJlcnMKIGltcG9ydCBsb2NhbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBydW5fZG9jdGVzdCwgaXNfcmVzb3VyY2VfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfSUVFRV83NTQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX0lFRUVfNzU0LCByZXF1aXJlc19kb2NzdHJpbmdzKQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjaGVja193YXJuaW5ncywgaW1wb3J0X2ZyZXNoX21vZHVsZSwgVGVzdEZhaWxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3dpdGhfbG9jYWxlLCBjcHl0aG9uX29ubHkpCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdGltZQogaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgaW5zcGVjdAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQxNzQsOSArNDE3NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX3ZlcnNpb25fXywgUC5fX3ZlcnNpb25fXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbGlibXBkZWNfdmVyc2lvbl9fLCBQLl9fbGlibXBkZWNfdmVyc2lvbl9fKQogCi0gICAgICAgIHggPSBkaXIoQykKLSAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKEMpLCBkaXIoUCkpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X2F0dHJpYnV0ZXMoc2VsZik6CiAKQEAgLTQ0NTUsMTggKzQ0NTQsNiBAQAogY2xhc3MgUHlGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIGRlY2ltYWwucHkiIiIKIAotICAgIGRlZiB0ZXN0X3B5X3F1YW50aXplX3dhdGNoZXhwKHNlbGYpOgotICAgICAgICAjIHdhdGNoZXhwIGZ1bmN0aW9uYWxpdHkKLSAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAotICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAotCi0gICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKLSAgICAgICAgICAgIGMucHJlYyA9IDEKLSAgICAgICAgICAgIGMuRW1heCA9IDEKLSAgICAgICAgICAgIGMuRW1pbiA9IC0xCi0gICAgICAgICAgICB4ID0gRGVjaW1hbCg5OTk5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUzIiksIHdhdGNoZXhwPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxLjAwRSs1JykpCi0KICAgICBkZWYgdGVzdF9weV9hbHRlcm5hdGVfZm9ybWF0dGluZyhzZWxmKToKICAgICAgICAgIyB0cmlwbGVzIGdpdmluZyBhIGZvcm1hdCwgYSBEZWNpbWFsLCBhbmQgdGhlIGV4cGVjdGVkIHJlc3VsdAogICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCkBAIC01NDA5LDYgKzUzOTYsMTQzIEBACiAgICAgICAgICAgICB5ID0gRGVjaW1hbCgxMCoqKDkqMjUpKS5fX3NpemVvZl9fKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCs0KQogCitAcmVxdWlyZXNfZG9jc3RyaW5ncworQHVuaXR0ZXN0LnNraXBVbmxlc3MoQywgInRlc3QgcmVxdWlyZXMgQyB2ZXJzaW9uIikKK2NsYXNzIFNpZ25hdHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkZ1bmN0aW9uIHNpZ25hdHVyZXMiIiIKKworICAgIGRlZiB0ZXN0X2luc3BlY3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoUCk6CisgICAgICAgICAgICBpZiBhdHRyLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcF9mdW5jID0gZ2V0YXR0cihQLCBhdHRyKQorICAgICAgICAgICAgY19mdW5jID0gZ2V0YXR0cihDLCBhdHRyKQorICAgICAgICAgICAgaWYgKGF0dHIgPT0gJ0RlY2ltYWwnIG9yIGF0dHIgPT0gJ0NvbnRleHQnIG9yCisgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Z1bmN0aW9uKHBfZnVuYykpOgorICAgICAgICAgICAgICAgIHBfc2lnID0gaW5zcGVjdC5zaWduYXR1cmUocF9mdW5jKQorICAgICAgICAgICAgICAgIGNfc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoY19mdW5jKQorCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIgbmFtZXM6CisgICAgICAgICAgICAgICAgY19uYW1lcyA9IGxpc3QoY19zaWcucGFyYW1ldGVycy5rZXlzKCkpCisgICAgICAgICAgICAgICAgcF9uYW1lcyA9IFt4IGZvciB4IGluIHBfc2lnLnBhcmFtZXRlcnMua2V5cygpIGlmIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5zdGFydHN3aXRoKCdfJyldCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfbmFtZXMsIHBfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9InBhcmFtZXRlciBuYW1lIG1pc21hdGNoIGluICVzIiAlIHBfZnVuYykKKworICAgICAgICAgICAgICAgIGNfa2luZCA9IFt4LmtpbmQgZm9yIHggaW4gY19zaWcucGFyYW1ldGVycy52YWx1ZXMoKV0KKyAgICAgICAgICAgICAgICBwX2tpbmQgPSBbeFsxXS5raW5kIGZvciB4IGluIHBfc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSBpZiBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeFswXS5zdGFydHN3aXRoKCdfJyldCisKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgaWYgYXR0ciAhPSAnc2V0Y29udGV4dCc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY19raW5kLCBwX2tpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIga2luZCBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICBkZWYgdGVzdF9pbnNwZWN0X3R5cGVzKHNlbGYpOgorCisgICAgICAgIFBPUyA9IGluc3BlY3QuX1BhcmFtZXRlcktpbmQuUE9TSVRJT05BTF9PTkxZCisgICAgICAgIFBPU19LV0QgPSBpbnNwZWN0Ll9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT1JfS0VZV09SRAorCisgICAgICAgICMgVHlwZSBoZXVyaXN0aWMgKHR5cGUgYW5ub3RhdGlvbnMgd291bGQgaGVscCEpOgorICAgICAgICBwZGljdCA9IHtDOiB7J290aGVyJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ3gnOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAneSc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd6JzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2EnOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYic6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdjJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2V4cCc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdtb2R1bG8nOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnbnVtJzogIjEiLAorICAgICAgICAgICAgICAgICAgICAgJ2YnOiAxLjAsCisgICAgICAgICAgICAgICAgICAgICAncm91bmRpbmcnOiBDLlJPVU5EX0hBTEZfVVAsCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCc6IEMuZ2V0Y29udGV4dCgpfSwKKyAgICAgICAgICAgICAgICAgUDogeydvdGhlcic6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd0aGlyZCc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdhJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2InOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYyc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdleHAnOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnbW9kdWxvJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ251bSc6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgICdmJzogMS4wLAorICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kaW5nJzogUC5ST1VORF9IQUxGX1VQLAorICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQnOiBQLmdldGNvbnRleHQoKX19CisKKyAgICAgICAgZGVmIG1rYXJncyhtb2R1bGUsIHNpZyk6CisgICAgICAgICAgICBhcmdzID0gW10KKyAgICAgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgICAgICBmb3IgbmFtZSwgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdzZWxmJzogY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IFBPUzoKKyAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQocGRpY3RbbW9kdWxlXVtuYW1lXSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtLmtpbmQgPT0gUE9TX0tXRDoKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW25hbWVdID0gcGRpY3RbbW9kdWxlXVtuYW1lXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoInVuZXhwZWN0ZWQgcGFyYW1ldGVyIGtpbmQiKQorICAgICAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncworCisgICAgICAgIGRlZiB0cihzKToKKyAgICAgICAgICAgICIiIlRoZSBDIENvbnRleHQgZG9jc3RyaW5ncyB1c2UgJ3gnIGluIG9yZGVyIHRvIHByZXZlbnQgY29uZnVzaW9uCisgICAgICAgICAgICAgICB3aXRoIHRoZSBhcnRpY2xlICdhJyBpbiB0aGUgZGVzY3JpcHRpb25zLiIiIgorICAgICAgICAgICAgaWYgcyA9PSAneCc6IHJldHVybiAnYScKKyAgICAgICAgICAgIGlmIHMgPT0gJ3knOiByZXR1cm4gJ2InCisgICAgICAgICAgICBpZiBzID09ICd6JzogcmV0dXJuICdjJworICAgICAgICAgICAgcmV0dXJuIHMKKworICAgICAgICBkZWYgZG9pdCh0eSk6CisgICAgICAgICAgICBwX3R5cGUgPSBnZXRhdHRyKFAsIHR5KQorICAgICAgICAgICAgY190eXBlID0gZ2V0YXR0cihDLCB0eSkKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihwX3R5cGUpOgorICAgICAgICAgICAgICAgIGlmIGF0dHIuc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHBfZnVuYyA9IGdldGF0dHIocF90eXBlLCBhdHRyKQorICAgICAgICAgICAgICAgIGNfZnVuYyA9IGdldGF0dHIoY190eXBlLCBhdHRyKQorICAgICAgICAgICAgICAgIGlmIGluc3BlY3QuaXNmdW5jdGlvbihwX2Z1bmMpOgorICAgICAgICAgICAgICAgICAgICBwX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHBfZnVuYykKKyAgICAgICAgICAgICAgICAgICAgY19zaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShjX2Z1bmMpCisKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIgbmFtZXM6CisgICAgICAgICAgICAgICAgICAgIHBfbmFtZXMgPSBsaXN0KHBfc2lnLnBhcmFtZXRlcnMua2V5cygpKQorICAgICAgICAgICAgICAgICAgICBjX25hbWVzID0gW3RyKHgpIGZvciB4IGluIGNfc2lnLnBhcmFtZXRlcnMua2V5cygpXQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY19uYW1lcywgcF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9InBhcmFtZXRlciBuYW1lIG1pc21hdGNoIGluICVzIiAlIHBfZnVuYykKKworICAgICAgICAgICAgICAgICAgICBwX2tpbmQgPSBbeC5raW5kIGZvciB4IGluIHBfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCldCisgICAgICAgICAgICAgICAgICAgIGNfa2luZCA9IFt4LmtpbmQgZm9yIHggaW4gY19zaWcucGFyYW1ldGVycy52YWx1ZXMoKV0KKworICAgICAgICAgICAgICAgICAgICAjICdzZWxmJyBwYXJhbWV0ZXI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocF9raW5kWzBdLCBQT1NfS1dEKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNfa2luZFswXSwgUE9TKQorCisgICAgICAgICAgICAgICAgICAgICMgcmVtYWluaW5nIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHR5ID09ICdEZWNpbWFsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY19raW5kWzE6XSwgcF9raW5kWzE6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIga2luZCBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICMgQ29udGV4dCBtZXRob2RzIGFyZSBwb3NpdGlvbmFsIG9ubHkgaW4gdGhlIEMgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNfa2luZCksIGxlbihwX2tpbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9InBhcmFtZXRlciBraW5kIG1pc21hdGNoIGluICVzIiAlIHBfZnVuYykKKworICAgICAgICAgICAgICAgICAgICAjIFJ1biB0aGUgZnVuY3Rpb246CisgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3ZHMgPSBta2FyZ3MoQywgY19zaWcpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoY190eXBlKDkpLCBhdHRyKSgqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoImludmFsaWQgc2lnbmF0dXJlIGZvciAlczogJXMgJXMiICUgKGNfZnVuYywgYXJncywga3dkcykpCisKKyAgICAgICAgICAgICAgICAgICAgYXJncywga3dkcyA9IG1rYXJncyhQLCBwX3NpZykKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihwX3R5cGUoOSksIGF0dHIpKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiaW52YWxpZCBzaWduYXR1cmUgZm9yICVzOiAlcyAlcyIgJSAocF9mdW5jLCBhcmdzLCBrd2RzKSkKKworICAgICAgICBkb2l0KCdEZWNpbWFsJykKKyAgICAgICAgZG9pdCgnQ29udGV4dCcpCisKKwogYWxsX3Rlc3RzID0gWwogICBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0LCBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKICAgQ0ltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCkBAIC01NDM0LDYgKzU1NTgsNyBAQAogICAgIGFsbF90ZXN0cyA9IGFsbF90ZXN0c1sxOjoyXQogZWxzZToKICAgICBhbGxfdGVzdHMuaW5zZXJ0KDAsIENoZWNrQXR0cmlidXRlcykKKyAgICBhbGxfdGVzdHMuaW5zZXJ0KDEsIFNpZ25hdHVyZVRlc3QpCiAKIAogZGVmIHRlc3RfbWFpbihhcml0aD1Ob25lLCB2ZXJib3NlPU5vbmUsIHRvZG9fdGVzdHM9Tm9uZSwgZGVidWc9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY29yYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2RlY29yYXRvcnMucHkKaW5kZXggNTNjOTQ2OS4uZDBhMmVjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNvcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjb3JhdG9ycy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGRlZiBmdW5jYXR0cnMoKiprd2RzKToKICAgICBkZWYgZGVjb3JhdGUoZnVuYyk6CkBAIC0zMDEsOSArMzAwLDUgQEAKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5leHRyYSwgJ3NlY29uZCcpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0RGVjb3JhdG9ycykKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q2xhc3NEZWNvcmF0b3JzKQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVmYXVsdGRpY3QucHkgYi9MaWIvdGVzdC90ZXN0X2RlZmF1bHRkaWN0LnB5CmluZGV4IDUzMmQ1MzUuLmE5MGJjMmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVmYXVsdGRpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZWZhdWx0ZGljdC5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIApAQCAtMTU3LDggKzE1Niw5IEBACiAgICAgICAgICAgICBkZWYgX2ZhY3Rvcnkoc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgIGQgPSBzdWIoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihkKS5zdGFydHN3aXRoKAotICAgICAgICAgICAgImRlZmF1bHRkaWN0KDxib3VuZCBtZXRob2Qgc3ViLl9mYWN0b3J5IG9mIGRlZmF1bHRkaWN0KC4uLiIpKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZCksCisgICAgICAgICAgICByImRlZmF1bHRkaWN0XCg8Ym91bmQgbWV0aG9kIC4qc3ViXC5fZmFjdG9yeSAiCisgICAgICAgICAgICByIm9mIGRlZmF1bHRkaWN0XChcLlwuXC4sIFx7XH1cKT4sIFx7XH1cKSIpCiAKICAgICAgICAgIyBOT1RFOiBwcmludGluZyBhIHN1YmNsYXNzIG9mIGEgYnVpbHRpbiB0eXBlIGRvZXMgbm90IGNhbGwgaXRzCiAgICAgICAgICMgdHBfcHJpbnQgc2xvdC4gU28gdGhpcyBwYXJ0IGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIHRlc3QgYXMgYWJvdmUuCkBAIC0xODMsOCArMTgzLDUgQEAKICAgICAgICAgICAgIG8gPSBwaWNrbGUubG9hZHMocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgbykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3REZWZhdWx0RGljdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggNWVjYmM3My4uODcxODcxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0xNjQsNiArMTY0LDI2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4ID4gIHksIGxpc3QoeCkgPiAgbGlzdCh5KSwgKHgseSkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4ID49IHksIGxpc3QoeCkgPj0gbGlzdCh5KSwgKHgseSkpCiAKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgbiA9IDIwMAorCisgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaSBpbiBkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoKG4rMSkgbm90IGluIGQpCisKKyAgICAgICAgIyBUZXN0IGRldGVjdGlvbiBvZiBtdXRhdGlvbiBkdXJpbmcgaXRlcmF0aW9uCisgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgZFtuLy8yXSA9IE11dGF0ZUNtcChkLCBGYWxzZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgbiBpbiBkCisKKyAgICAgICAgIyBUZXN0IGRldGVjdGlvbiBvZiBjb21wYXJpc29uIGV4Y2VwdGlvbnMKKyAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICBkW24vLzJdID0gQmFkQ21wKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgbiBpbiBkCisKICAgICBkZWYgdGVzdF9leHRlbmQoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZC5leHRlbmQsIDEpCkBAIC0xNzIsNiArMTkyLDI2IEBACiAgICAgICAgIGQuZXh0ZW5kKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdCgnYWJjZGFiY2QnKSkKIAorICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKKyAgICAgICAgZCA9IGRlcXVlKCkKKyAgICAgICAgZSA9IGRlcXVlKCdhYmMnKQorICAgICAgICBmID0gZGVxdWUoJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCArIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSArIGYsIGRlcXVlKCdhYmNkZWYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlICsgZSwgZGVxdWUoJ2FiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUgKyBkLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCArIGUsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkICsgZCwgZGVxdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChlICsgZCwgZGVxdWUoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGQgKyBlLCBkZXF1ZSgnYWJjJykpCisKKyAgICAgICAgZyA9IGRlcXVlKCdhYmNkZWYnLCBtYXhsZW49NCkKKyAgICAgICAgaCA9IGRlcXVlKCdnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyArIGgsIGRlcXVlKCdlZmdoJykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGVxdWUoJ2FiYycpICsgJ2RlZicKKwogICAgIGRlZiB0ZXN0X2lhZGQoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnYScpCiAgICAgICAgIGQgKz0gJ2JjZCcKQEAgLTIxMSw2ICsyNTEsMTE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGQuX19nZXRpdGVtX18sIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGQuX19nZXRpdGVtX18sIC0xKQogCisgICAgZGVmIHRlc3RfaW5kZXgoc2VsZik6CisgICAgICAgIGZvciBuIGluIDEsIDIsIDMwLCA0MCwgMjAwOgorCisgICAgICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaW5kZXgoaSksIGkpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgZC5pbmRleChuKzEpCisKKyAgICAgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvbgorICAgICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICAgICAgZFtuLy8yXSA9IE11dGF0ZUNtcChkLCBGYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICBkLmluZGV4KG4pCisKKyAgICAgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgY29tcGFyaXNvbiBleGNlcHRpb25zCisgICAgICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgICAgICBkW24vLzJdID0gQmFkQ21wKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICBkLmluZGV4KG4pCisKKyAgICAgICAgIyBUZXN0IHN0YXJ0IGFuZCBzdG9wIGFyZ3VtZW50cyBiZWhhdmlvciBtYXRjaGVzIGxpc3QuaW5kZXgoKQorICAgICAgICBlbGVtZW50cyA9ICdBQkNERUZHSEknCisgICAgICAgIG5vbmVsZW1lbnQgPSAnWicKKyAgICAgICAgZCA9IGRlcXVlKGVsZW1lbnRzICogMikKKyAgICAgICAgcyA9IGxpc3QoZWxlbWVudHMgKiAyKQorICAgICAgICBmb3Igc3RhcnQgaW4gcmFuZ2UoLTUgLSBsZW4ocykqMiwgNSArIGxlbihzKSAqIDIpOgorICAgICAgICAgICAgZm9yIHN0b3AgaW4gcmFuZ2UoLTUgLSBsZW4ocykqMiwgNSArIGxlbihzKSAqIDIpOgorICAgICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1lbnRzICsgJ1onOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBzLmluZGV4KGVsZW1lbnQsIHN0YXJ0LCBzdG9wKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKKworICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgICAgIGQgPSBkZXF1ZSgnQScgKiAzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaSA9IGQuaW5kZXgoIkhlbGxvIHdvcmxkIiwgMCwgNCkKKworICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRvIG1ha2Ugc3VyZSBpbnNlcnQgYmVoYXZlcyBsaWtlIGxpc3RzCisgICAgICAgIGVsZW1lbnRzID0gJ0FCQ0RFRkdISScKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUgLSBsZW4oZWxlbWVudHMpKjIsIDUgKyBsZW4oZWxlbWVudHMpICogMik6CisgICAgICAgICAgICBkID0gZGVxdWUoJ0FCQ0RFRkdISScpCisgICAgICAgICAgICBzID0gbGlzdCgnQUJDREVGR0hJJykKKyAgICAgICAgICAgIGQuaW5zZXJ0KGksICdaJykKKyAgICAgICAgICAgIHMuaW5zZXJ0KGksICdaJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgcykKKworICAgIGRlZiB0ZXN0X2ltdWwoc2VsZik6CisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoKQorICAgICAgICAgICAgZCAqPSBuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRlcXVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLm1heGxlbikKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhJykKKyAgICAgICAgICAgIGQgKj0gbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkZXF1ZSgnYScgKiBuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQubWF4bGVuKQorCisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgNDk5LCA1MDAsIDUwMSwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoJ2EnLCA1MDApCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoJ2EnICogbWluKG4sIDUwMCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLm1heGxlbiwgNTAwKQorCisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoJ2FiY2RlZicpCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoJ2FiY2RlZicgKiBuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQubWF4bGVuKQorCisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgNDk5LCA1MDAsIDUwMSwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoJ2FiY2RlZicsIDUwMCkKKyAgICAgICAgICAgIGQgKj0gbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkZXF1ZSgoJ2FiY2RlZicgKiBuKVstNTAwOl0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLm1heGxlbiwgNTAwKQorCisgICAgZGVmIHRlc3RfbXVsKHNlbGYpOgorICAgICAgICBkID0gZGVxdWUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIC01LCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAwLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAxLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDIsIGRlcXVlKCdhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMywgZGVxdWUoJ2FiY2FiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGQgKiAxLCBkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVxdWUoKSAqIDAsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVxdWUoKSAqIDEsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVxdWUoKSAqIDUsIGRlcXVlKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtNSAqIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCAqIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSAqIGQsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICogZCwgZGVxdWUoJ2FiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMgKiBkLCBkZXF1ZSgnYWJjYWJjYWJjJykpCisKKyAgICAgICAgZCA9IGRlcXVlKCdhYmMnLCBtYXhsZW49NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogLTUsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDAsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDEsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMiwgZGVxdWUoJ2JjYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDMwLCBkZXF1ZSgnYmNhYmMnKSkKKwogICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CiAgICAgICAgIG4gPSAyMDAKICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQpAQCAtNTA0LDEwICs2NTQsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAorICAgIGRlZiB0ZXN0X2NvcHlfbWV0aG9kKHNlbGYpOgorICAgICAgICBtdXQgPSBbMTBdCisgICAgICAgIGQgPSBkZXF1ZShbbXV0XSkKKyAgICAgICAgZSA9IGQuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKKyAgICAgICAgbXV0WzBdID0gMTEKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKKwogICAgIGRlZiB0ZXN0X3JldmVyc2VkKHNlbGYpOgogICAgICAgICBmb3IgcyBpbiAoJ2FiY2QnLCByYW5nZSgyMDAwKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQoZGVxdWUocykpKSwgbGlzdChyZXZlcnNlZChzKSkpCiAKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9uZXcoc2VsZik6CisgICAgICAgIGtsYXNzID0gdHlwZShyZXZlcnNlZChkZXF1ZSgpKSkKKyAgICAgICAgZm9yIHMgaW4gKCdhYmNkJywgcmFuZ2UoMjAwMCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtsYXNzKGRlcXVlKHMpKSksIGxpc3QocmV2ZXJzZWQocykpKQorCiAgICAgZGVmIHRlc3RfZ2NfZG9lc250X2Jsb3d1cChzZWxmKToKICAgICAgICAgaW1wb3J0IGdjCiAgICAgICAgICMgVGhpcyB1c2VkIHRvIGFzc2VydC1mYWlsIGluIGRlcXVlX3RyYXZlcnNlKCkgdW5kZXIgYSBkZWJ1ZwpAQCAtNTM3LDcgKzcwMSw3IEBACiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6Ci0gICAgICAgIEJMT0NLTEVOID0gNjIKKyAgICAgICAgQkxPQ0tMRU4gPSA2NAogICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJQNG5sUCcpCiAgICAgICAgIGJsb2Nrc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnMlAlZFAnICUgQkxPQ0tMRU4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oZGVxdWUoKSksIGJhc2VzaXplKQpAQCAtNjg0LDYgKzg0OCwyMSBAQAogICAgICAgICAjIFNGIGJ1ZyAjMTQ4NjY2MyAtLSB0aGlzIHVzZWQgdG8gZXJyb25lb3VzbHkgcmFpc2UgYSBUeXBlRXJyb3IKICAgICAgICAgU3ViY2xhc3NXaXRoS3dhcmdzKG5ld2FyZz0xKQogCitjbGFzcyBUZXN0U2VxdWVuY2Uoc2VxX3Rlc3RzLkNvbW1vblRlc3QpOgorICAgIHR5cGUydGVzdCA9IGRlcXVlCisKKyAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgorICAgICAgICAjIEZvciBub3csIGJ5cGFzcyB0ZXN0cyB0aGF0IHJlcXVpcmUgc2xpY2luZworICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZShzZWxmKToKKyAgICAgICAgIyBGb3Igbm93LCBieXBhc3MgdGVzdHMgdGhhdCByZXF1aXJlIHNsaWNpbmcKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfc3Vic2NyaXB0KHNlbGYpOgorICAgICAgICAjIEZvciBub3csIGJ5cGFzcyB0ZXN0cyB0aGF0IHJlcXVpcmUgc2xpY2luZworICAgICAgICBwYXNzCisKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogbGlicmVmdGVzdCA9ICIiIgpAQCAtNzk4LDYgKzk3Nyw3IEBACiAgICAgICAgIFRlc3RWYXJpb3VzSXRlcmF0b3JBcmdzLAogICAgICAgICBUZXN0U3ViY2xhc3MsCiAgICAgICAgIFRlc3RTdWJjbGFzc1dpdGhLd2FyZ3MsCisgICAgICAgIFRlc3RTZXF1ZW5jZSwKICAgICApCiAKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggOWE2MGExMi4uYzc0ZWJhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC0yMSw2ICsyMSw3IEBACiAgICAgICAgICAgICAnYWRkJzogJysnLAogICAgICAgICAgICAgJ3N1Yic6ICctJywKICAgICAgICAgICAgICdtdWwnOiAnKicsCisgICAgICAgICAgICAnbWF0bXVsJzogJ0AnLAogICAgICAgICAgICAgJ3RydWVkaXYnOiAnLycsCiAgICAgICAgICAgICAnZmxvb3JkaXYnOiAnLy8nLAogICAgICAgICAgICAgJ2Rpdm1vZCc6ICdkaXZtb2QnLApAQCAtMTAxOSw2ICsxMDIwLDY3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeydmb28nOiAxfSkKIAorICAgIGRlZiB0ZXN0X29iamVjdF9jbGFzc19hc3NpZ25tZW50X2JldHdlZW5faGVhcHR5cGVzX2FuZF9ub25oZWFwdHlwZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YlR5cGUodHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBhID0gMQorCisgICAgICAgIG0gPSB0eXBlcy5Nb2R1bGVUeXBlKCJtIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uX19jbGFzc19fIGlzIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtLCAiYSIpKQorCisgICAgICAgIG0uX19jbGFzc19fID0gU3ViVHlwZQorICAgICAgICBzZWxmLmFzc2VydFRydWUobS5fX2NsYXNzX18gaXMgU3ViVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobSwgImEiKSkKKworICAgICAgICBtLl9fY2xhc3NfXyA9IHR5cGVzLk1vZHVsZVR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uX19jbGFzc19fIGlzIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtLCAiYSIpKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgYnVpbHRpbiBpbW11dGFibGUgb2JqZWN0cyBkb24ndCBzdXBwb3J0IF9fY2xhc3NfXworICAgICAgICAjIGFzc2lnbm1lbnQsIGJlY2F1c2UgdGhlIG9iamVjdCBpbnN0YW5jZXMgbWF5IGJlIGludGVybmVkLgorICAgICAgICAjIFdlIHNldCBfX3Nsb3RzX18gPSAoKSB0byBlbnN1cmUgdGhhdCB0aGUgc3ViY2xhc3NlcyBhcmUKKyAgICAgICAgIyBtZW1vcnktbGF5b3V0IGNvbXBhdGlibGUsIGFuZCB0aHVzIG90aGVyd2lzZSByZWFzb25hYmxlIGNhbmRpZGF0ZXMKKyAgICAgICAgIyBmb3IgX19jbGFzc19fIGFzc2lnbm1lbnQuCisKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIHR5cGVzIGhhdmUgaW1tdXRhYmxlIGluc3RhbmNlcywgYnV0IGFyZSBub3QKKyAgICAgICAgIyBzdWJjbGFzc2FibGUgYW5kIHRodXMgZG9uJ3QgbmVlZCB0byBiZSBjaGVja2VkOgorICAgICAgICAjICAgTm9uZVR5cGUsIGJvb2wKKworICAgICAgICBjbGFzcyBNeUludChpbnQpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgKDEpLl9fY2xhc3NfXyA9IE15SW50CisKKyAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAoMS4wKS5fX2NsYXNzX18gPSBNeUZsb2F0CisKKyAgICAgICAgY2xhc3MgTXlDb21wbGV4KGNvbXBsZXgpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgKDEgKyAyaikuX19jbGFzc19fID0gTXlDb21wbGV4CisKKyAgICAgICAgY2xhc3MgTXlTdHIoc3RyKToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICJhIi5fX2NsYXNzX18gPSBNeVN0cgorCisgICAgICAgIGNsYXNzIE15Qnl0ZXMoYnl0ZXMpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYiJhIi5fX2NsYXNzX18gPSBNeUJ5dGVzCisKKyAgICAgICAgY2xhc3MgTXlUdXBsZSh0dXBsZSk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAoKS5fX2NsYXNzX18gPSBNeVR1cGxlCisKKyAgICAgICAgY2xhc3MgTXlGcm96ZW5TZXQoZnJvemVuc2V0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGZyb3plbnNldCgpLl9fY2xhc3NfXyA9IE15RnJvemVuU2V0CisKICAgICBkZWYgdGVzdF9zbG90cyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIF9fc2xvdHNfXy4uLgogICAgICAgICBjbGFzcyBDMChvYmplY3QpOgpAQCAtMjAwNSw3ICsyMDY3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhyYXcuZnNldCwgQy5fX2RpY3RfX1snc2V0eCddKQogICAgICAgICBzZWxmLmFzc2VydElzKHJhdy5mZGVsLCBDLl9fZGljdF9fWydkZWx4J10pCiAKLSAgICAgICAgZm9yIGF0dHIgaW4gIl9fZG9jX18iLCAiZmdldCIsICJmc2V0IiwgImZkZWwiOgorICAgICAgICBmb3IgYXR0ciBpbiAiZmdldCIsICJmc2V0IiwgImZkZWwiOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNldGF0dHIocmF3LCBhdHRyLCA0MikKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBtc2c6CkBAIC0yMDE2LDYgKzIwNzgsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgQXR0cmlidXRlRXJyb3IgZnJvbSB0cnlpbmcgdG8gc2V0IHJlYWRvbmx5ICVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHIgb24gYSBwcm9wZXJ0eSIgJSBhdHRyKQogCisgICAgICAgIHJhdy5fX2RvY19fID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXcuX19kb2NfXywgNDIpCisKICAgICAgICAgY2xhc3MgRChvYmplY3QpOgogICAgICAgICAgICAgX19nZXRpdGVtX18gPSBwcm9wZXJ0eShsYW1iZGEgczogMS8wKQogCkBAIC0zMDAzLDggKzMwNjgsNiBAQAogICAgICAgICBjYW50KG9iamVjdCgpLCBsaXN0KQogICAgICAgICBjYW50KGxpc3QoKSwgb2JqZWN0KQogICAgICAgICBjbGFzcyBJbnQoaW50KTogX19zbG90c19fID0gW10KLSAgICAgICAgY2FudCgyLCBJbnQpCi0gICAgICAgIGNhbnQoSW50KCksIGludCkKICAgICAgICAgY2FudChUcnVlLCBpbnQpCiAgICAgICAgIGNhbnQoMiwgYm9vbCkKICAgICAgICAgbyA9IG9iamVjdCgpCkBAIC0zMzI0LDcgKzMzODcsNyBAQAogICAgICAgICBBLl9fY2FsbF9fID0gQSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIEEoKSgpCi0gICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVjdXJzaW9uIGxpbWl0IHNob3VsZCBoYXZlIGJlZW4gcmVhY2hlZCBmb3IgX19jYWxsX18oKSIpCkBAIC00MTUzLDYgKzQyMTYsNyBAQAogICAgICAgICAgICAgICAgICgnX19hZGRfXycsICAgICAgJ3ggKyB5JywgICAgICAgICAgICAgICAgICAgJ3ggKz0geScpLAogICAgICAgICAgICAgICAgICgnX19zdWJfXycsICAgICAgJ3ggLSB5JywgICAgICAgICAgICAgICAgICAgJ3ggLT0geScpLAogICAgICAgICAgICAgICAgICgnX19tdWxfXycsICAgICAgJ3ggKiB5JywgICAgICAgICAgICAgICAgICAgJ3ggKj0geScpLAorICAgICAgICAgICAgICAgICgnX19tYXRtdWxfXycsICAgJ3ggQCB5JywgICAgICAgICAgICAgICAgICAgJ3ggQD0geScpLAogICAgICAgICAgICAgICAgICgnX190cnVlZGl2X18nLCAgJ3ggLyB5JywgICAgICAgICAgICAgICAgICAgJ3ggLz0geScpLAogICAgICAgICAgICAgICAgICgnX19mbG9vcmRpdl9fJywgJ3ggLy8geScsICAgICAgICAgICAgICAgICAgJ3ggLy89IHknKSwKICAgICAgICAgICAgICAgICAoJ19fbW9kX18nLCAgICAgICd4ICUgeScsICAgICAgICAgICAgICAgICAgICd4ICU9IHknKSwKQEAgLTQyOTgsOCArNDM2Miw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIEZvby5fX3JlcHJfXyA9IEZvby5fX3N0cl9fCiAgICAgICAgIGZvbyA9IEZvbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc3RyLCBmb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVwciwgZm9vKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgc3RyLCBmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCByZXByLCBmb28pCiAKICAgICBkZWYgdGVzdF9taXhpbmdfc2xvdF93cmFwcGVycyhzZWxmKToKICAgICAgICAgY2xhc3MgWChkaWN0KToKQEAgLTQ0MTQsNiArNDQ3OCw2MSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCJfX2RpY3RfXyIsIEJhc2UuX19kaWN0X18pCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIl9fZGljdF9fIiwgU3ViLl9fZGljdF9fKQogCisgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kX3JlcHIoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoRm9vKCkubWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkZvb1wubWV0aG9kIG9mIDwuKkZvbyBvYmplY3QgYXQgLio+PiIpCisKKworICAgICAgICBjbGFzcyBCYXNlOgorICAgICAgICAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIERlcml2ZWQxKEJhc2UpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBEZXJpdmVkMihCYXNlKToKKyAgICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBiYXNlID0gQmFzZSgpCisgICAgICAgIGRlcml2ZWQxID0gRGVyaXZlZDEoKQorICAgICAgICBkZXJpdmVkMiA9IERlcml2ZWQyKCkKKyAgICAgICAgc3VwZXJfZDIgPSBzdXBlcihEZXJpdmVkMiwgZGVyaXZlZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihiYXNlLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipCYXNlXC5tZXRob2Qgb2YgPC4qQmFzZSBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihkZXJpdmVkMS5tZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qQmFzZVwubWV0aG9kIG9mIDwuKkRlcml2ZWQxIG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGRlcml2ZWQyLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipEZXJpdmVkMlwubWV0aG9kIG9mIDwuKkRlcml2ZWQyIG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKHN1cGVyX2QyLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipCYXNlXC5tZXRob2Qgb2YgPC4qRGVyaXZlZDIgb2JqZWN0IGF0IC4qPj4iKQorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIG1ldGhvZChjbHMpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGZvby5tZXRob2QpLCAjIGFjY2VzcyB2aWEgaW5zdGFuY2UKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkZvb1wubWV0aG9kIG9mIDxjbGFzcyAnLipGb28nPj4iKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoRm9vLm1ldGhvZCksICMgYWNjZXNzIHZpYSB0aGUgY2xhc3MKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkZvb1wubWV0aG9kIG9mIDxjbGFzcyAnLipGb28nPj4iKQorCisKKyAgICAgICAgY2xhc3MgTXlDYWxsYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZnVuYyA9IE15Q2FsbGFibGUoKSAjIGZ1bmMgaGFzIG5vIF9fbmFtZV9fIG9yIF9fcXVhbG5hbWVfXyBhdHRyaWJ1dGVzCisgICAgICAgIGluc3RhbmNlID0gb2JqZWN0KCkKKyAgICAgICAgbWV0aG9kID0gdHlwZXMuTWV0aG9kVHlwZShmdW5jLCBpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKG1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgXD8gb2YgPG9iamVjdCBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIGZ1bmMuX19uYW1lX18gPSAibmFtZSIKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKG1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgbmFtZSBvZiA8b2JqZWN0IG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgZnVuYy5fX3F1YWxuYW1lX18gPSAicXVhbG5hbWUiCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihtZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIHF1YWxuYW1lIG9mIDxvYmplY3Qgb2JqZWN0IGF0IC4qPj4iKQorCiAKIGNsYXNzIERpY3RQcm94eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00NTI4LDI2ICs0NjQ3LDE1IEBACiAKICAgICBkZWYgX2NoZWNrX3JlZHVjZShzZWxmLCBwcm90bywgb2JqLCBhcmdzPSgpLCBrd2FyZ3M9e30sIHN0YXRlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdGl0ZW1zPU5vbmUsIGRpY3RpdGVtcz1Ob25lKToKLSAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgaWYgcHJvdG8gPj0gMjoKICAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IG9iai5fX3JlZHVjZV9leF9fKHByb3RvKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29weXJlZy5fX25ld29ial9leF9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUob2JqKSwgYXJncywga3dhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlKSkKLSAgICAgICAgICAgIGlmIGxpc3RpdGVtcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KHJlZHVjZV92YWx1ZVszXSksIGxpc3RpdGVtcykKKyAgICAgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVswXSwgY29weXJlZy5fX25ld29ial9leF9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzFdLCAodHlwZShvYmopLCBhcmdzLCBrd2FyZ3MpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWR1Y2VfdmFsdWVbM10pCi0gICAgICAgICAgICBpZiBkaWN0aXRlbXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoZGljdChyZWR1Y2VfdmFsdWVbNF0pLCBkaWN0aXRlbXMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZHVjZV92YWx1ZVs0XSkKLSAgICAgICAgZWxpZiBwcm90byA+PSAyOgotICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gb2JqLl9fcmVkdWNlX2V4X18ocHJvdG8pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVs6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5cmVnLl9fbmV3b2JqX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShvYmopLCkgKyBhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzBdLCBjb3B5cmVnLl9fbmV3b2JqX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbMV0sICh0eXBlKG9iaiksKSArIGFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVsyXSwgc3RhdGUpCiAgICAgICAgICAgICBpZiBsaXN0aXRlbXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChyZWR1Y2VfdmFsdWVbM10pLCBsaXN0aXRlbXMpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IGJkNzk3MjguLjI0ODhiNjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTk2MywxMiArOTYzLDUgQEAKIGNsYXNzIFN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKICAgICB0eXBlMnRlc3QgPSBEaWN0CiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgRGljdFRlc3QsCi0gICAgICAgIEdlbmVyYWxNYXBwaW5nVGVzdHMsCi0gICAgICAgIFN1YmNsYXNzTWFwcGluZ1Rlc3RzLAotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCA3YjAyZWE5Li44ZDMzODAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIERpY3RTZXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTk2LDExICsxOTUsOCBAQAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgogICAgICAgICBkID0ge30KICAgICAgICAgZFs0Ml0gPSBkLnZhbHVlcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVwciwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIHJlcHIsIGQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KERpY3RTZXRUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKaW5kZXggMGJhOGYwZS4uYWI5ZGViZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQpAQCAtMTA3LDYgKzEwNywyMCBAQAogICAgNS4gRmxhdCBpcyBiZXR0ZXIgdGhhbiBuZXN0ZWQuCiAiIiIKIAorcGF0Y2g5MTQ1NzVfbm9uYXNjaWlfZnJvbTEgPSAiIiIKKyAgIDEuIEJlYXV0aWZ1bCBpcyBiZVRUZXIgdGhhbiB1Z2x5LgorICAgMi4gRXhwbGljaXQgaXMgYmV0dGVyIHRoYW4gxLFtcGzEsWPEsXQuCisgICAzLiBTaW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KKyAgIDQuIENvbXBsZXggaXMgYmV0dGVyIHRoYW4gY29tcGxpY2F0ZWQuCisiIiIKKworcGF0Y2g5MTQ1NzVfbm9uYXNjaWlfdG8xID0gIiIiCisgICAxLiBCZWF1dGlmdWwgaXMgYmV0dGVyIHRoYW4gw7xnbHkuCisgICAzLiAgIFPEsW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KKyAgIDQuIENvbXBsaWNhdGVkIGlzIGJldHRlciB0aGFuIGPDtm1wbGV4LgorICAgNS4gRmxhdCBpcyBiZXR0ZXIgdGhhbiBuZXN0ZWQuCisiIiIKKwogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKIFx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCiAgIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCkBAIC0yMjMsNiArMjM3LDI3IEBACiAgICAgICAgIG5ldyA9IFsoaSUyIGFuZCAiSzolZCIgb3IgIlY6QjolZCIpICUgaSBmb3IgaSBpbiByYW5nZShsaW1pdCoyKV0KICAgICAgICAgZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIoTm9uZSwgb2xkLCBuZXcpLmdldF9vcGNvZGVzKCkKIAorICAgIGRlZiB0ZXN0X21ha2VfZmlsZV9kZWZhdWx0X2NoYXJzZXQoc2VsZik6CisgICAgICAgIGh0bWxfZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKQorICAgICAgICBvdXRwdXQgPSBodG1sX2RpZmYubWFrZV9maWxlKHBhdGNoOTE0NTc1X2Zyb20xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaDkxNDU3NV90bzEuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiJywgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfbWFrZV9maWxlX2lzbzg4NTkxX2NoYXJzZXQoc2VsZik6CisgICAgICAgIGh0bWxfZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKQorICAgICAgICBvdXRwdXQgPSBodG1sX2RpZmYubWFrZV9maWxlKHBhdGNoOTE0NTc1X2Zyb20xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaDkxNDU3NV90bzEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9J2lzby04ODU5LTEnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSInLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9tYWtlX2ZpbGVfdXNhc2NpaV9jaGFyc2V0X3dpdGhfbm9uYXNjaWlfaW5wdXQoc2VsZik6CisgICAgICAgIGh0bWxfZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKQorICAgICAgICBvdXRwdXQgPSBodG1sX2RpZmYubWFrZV9maWxlKHBhdGNoOTE0NTc1X25vbmFzY2lpX2Zyb20xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaDkxNDU3NV9ub25hc2NpaV90bzEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9J3VzLWFzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIicsIG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignJiMzMDU7bXBsJiMzMDU7YyYjMzA1O3QnLCBvdXRwdXQpCisKIAogY2xhc3MgVGVzdE91dHB1dEZvcm1hdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdGFiX2RlbGltaXRlcihzZWxmKToKQEAgLTI4NywxMiArMzIyLDE1NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdCgwLDApLCAnMCcpCiAKIAorY2xhc3MgVGVzdEJ5dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IHRoZSBjb250ZW50IG9mIHRoZSBvdXRwdXQsIGp1c3QgdGhlIGZhY3QKKyAgICAjIHRoYXQgaXQncyBieXRlcyBhbmQgd2UgZG9uJ3QgY3Jhc2gKKyAgICBkZWYgY2hlY2soc2VsZiwgZGlmZik6CisgICAgICAgIGRpZmYgPSBsaXN0KGRpZmYpICAgIyB0cmlnZ2VyIGV4Y2VwdGlvbnMgZmlyc3QKKyAgICAgICAgZm9yIGxpbmUgaW4gZGlmZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSgKKyAgICAgICAgICAgICAgICBsaW5lLCBieXRlcywKKyAgICAgICAgICAgICAgICAiYWxsIGxpbmVzIG9mIGRpZmYgc2hvdWxkIGJlIGJ5dGVzLCBidXQgZ290OiAlciIgJSBsaW5lKQorCisgICAgZGVmIHRlc3RfYnl0ZV9jb250ZW50KHNlbGYpOgorICAgICAgICAjIGlmIHdlIHJlY2VpdmUgYnl0ZSBzdHJpbmdzLCB3ZSByZXR1cm4gYnl0ZSBzdHJpbmdzCisgICAgICAgIGEgPSBbYidoZWxsbycsIGInYW5kclx4ZTknXSAgICAgIyBpc28tODg1OS0xIGJ5dGVzCisgICAgICAgIGIgPSBbYidoZWxsbycsIGInYW5kclx4YzNceGE5J10gIyB1dGYtOCBieXRlcworCisgICAgICAgIHVuaWZpZWQgPSBkaWZmbGliLnVuaWZpZWRfZGlmZgorICAgICAgICBjb250ZXh0ID0gZGlmZmxpYi5jb250ZXh0X2RpZmYKKworICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2sKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGEpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYikpCisKKyAgICAgICAgIyBub3cgd2l0aCBmaWxlbmFtZXMgKGNvbnRlbnQgYW5kIGZpbGVuYW1lcyBhcmUgYWxsIGJ5dGVzISkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGEsIGInYScsIGInYScpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgYidhJywgYidiJykpCisKKyAgICAgICAgIyBhbmQgd2l0aCBmaWxlbmFtZXMgYW5kIGRhdGVzCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBhLCBiJ2EnLCBiJ2EnLCBiJzIwMDUnLCBiJzIwMTMnKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGInYScsIGInYicsIGInMjAwNScsIGInMjAxMycpKQorCisgICAgICAgICMgc2FtZSBhbGwgb3ZlciBhZ2Fpbiwgd2l0aCBjb250ZXh0IGRpZmYKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGEpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYikpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBhLCBiJ2EnLCBiJ2EnKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGIsIGInYScsIGInYicpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYSwgYidhJywgYidhJywgYicyMDA1JywgYicyMDEzJykpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBiJ2EnLCBiJ2InLCBiJzIwMDUnLCBiJzIwMTMnKSkKKworICAgIGRlZiB0ZXN0X2J5dGVfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICAjIHNvbWVib2R5IHJlbmFtZWQgYSBmaWxlIGZyb20gSVNPLTg4NTktMiB0byBVVEYtOAorICAgICAgICBmbmEgPSBiJ1x4YjNvZHoudHh0JyAgICAjICLFgm9kei50eHQiCisgICAgICAgIGZuYiA9IGInXHhjNVx4ODJvZHoudHh0JworCisgICAgICAgICMgdGhleSB0cmFuc2NvZGVkIHRoZSBjb250ZW50IGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgYSA9IFtiJ1x4YTNvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nXQorICAgICAgICBiID0gW2InXHhjNVx4ODFvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nXQorCisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVjaworICAgICAgICB1bmlmaWVkID0gZGlmZmxpYi51bmlmaWVkX2RpZmYKKyAgICAgICAgY29udGV4dCA9IGRpZmZsaWIuY29udGV4dF9kaWZmCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBmbmEsIGZuYikpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBmbmEsIGZuYikpCisKKyAgICAgICAgZGVmIGFzc2VydERpZmYoZXhwZWN0LCBhY3R1YWwpOgorICAgICAgICAgICAgIyBkbyBub3QgY29tcGFyZSBleHBlY3QgYW5kIGVxdWFsIGFzIGxpc3RzLCBiZWNhdXNlIHVuaXR0ZXN0CisgICAgICAgICAgICAjIHVzZXMgZGlmZmxpYiB0byByZXBvcnQgZGlmZmVyZW5jZSBiZXR3ZWVuIGxpc3RzCisgICAgICAgICAgICBhY3R1YWwgPSBsaXN0KGFjdHVhbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdCksIGxlbihhY3R1YWwpKQorICAgICAgICAgICAgZm9yIGUsIGEgaW4gemlwKGV4cGVjdCwgYWN0dWFsKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGEpCisKKyAgICAgICAgZXhwZWN0ID0gWworICAgICAgICAgICAgYictLS0gXHhiM29kei50eHQnLAorICAgICAgICAgICAgYicrKysgXHhjNVx4ODJvZHoudHh0JywKKyAgICAgICAgICAgIGInQEAgLTEgKzEgQEAnLAorICAgICAgICAgICAgYictXHhhM29keiBpcyBhIGNpdHkgaW4gUG9sYW5kLicsCisgICAgICAgICAgICBiJytceGM1XHg4MW9keiBpcyBhIGNpdHkgaW4gUG9sYW5kLicsCisgICAgICAgIF0KKyAgICAgICAgYWN0dWFsID0gZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGZuYSwgZm5iLCBsaW5ldGVybT1iJycpCisgICAgICAgIGFzc2VydERpZmYoZXhwZWN0LCBhY3R1YWwpCisKKyAgICAgICAgIyB3aXRoIGRhdGVzIChwbGFpbiBBU0NJSSkKKyAgICAgICAgZGF0ZWEgPSBiJzIwMDUtMDMtMTgnCisgICAgICAgIGRhdGViID0gYicyMDA1LTAzLTE5JworICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgZm5hLCBmbmIsIGRhdGVhLCBkYXRlYikpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBmbmEsIGZuYiwgZGF0ZWEsIGRhdGViKSkKKworICAgICAgICBleHBlY3QgPSBbCisgICAgICAgICAgICAjIG5vdGUgdGhlIG1peGVkIGVuY29kaW5ncyBoZXJlOiB0aGlzIGlzIGRlZXBseSB3cm9uZyBieSBldmVyeQorICAgICAgICAgICAgIyB0ZW5ldCBvZiBVbmljb2RlLCBidXQgaXQgZG9lc24ndCBjcmFzaCwgaXQncyBwYXJzZWFibGUgYnkKKyAgICAgICAgICAgICMgcGF0Y2gsIGFuZCBpdCdzIGhvdyBVTklYKHRtKSBkaWZmIGJlaGF2ZXMKKyAgICAgICAgICAgIGInLS0tIFx4YjNvZHoudHh0XHQyMDA1LTAzLTE4JywKKyAgICAgICAgICAgIGInKysrIFx4YzVceDgyb2R6LnR4dFx0MjAwNS0wMy0xOScsCisgICAgICAgICAgICBiJ0BAIC0xICsxIEBAJywKKyAgICAgICAgICAgIGInLVx4YTNvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nLAorICAgICAgICAgICAgYicrXHhjNVx4ODFvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nLAorICAgICAgICBdCisgICAgICAgIGFjdHVhbCA9IGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBmbmEsIGZuYiwgZGF0ZWEsIGRhdGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXRlcm09YicnKQorICAgICAgICBhc3NlcnREaWZmKGV4cGVjdCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZXNfY29udGVudChzZWxmKToKKyAgICAgICAgIyB0eXBlIG9mIGlucHV0IGNvbnRlbnQgbXVzdCBiZSBjb25zaXN0ZW50OiBhbGwgc3RyIG9yIGFsbCBieXRlcworICAgICAgICBhID0gW2InaGVsbG8nXQorICAgICAgICBiID0gWydoZWxsbyddCisKKyAgICAgICAgdW5pZmllZCA9IGRpZmZsaWIudW5pZmllZF9kaWZmCisgICAgICAgIGNvbnRleHQgPSBkaWZmbGliLmNvbnRleHRfZGlmZgorCisgICAgICAgIGV4cGVjdCA9ICJsaW5lcyB0byBjb21wYXJlIG11c3QgYmUgc3RyLCBub3QgYnl0ZXMgKGInaGVsbG8nKSIKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCB1bmlmaWVkLCBhLCBiKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIHVuaWZpZWQsIGIsIGEpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgY29udGV4dCwgYSwgYikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBjb250ZXh0LCBiLCBhKQorCisgICAgICAgIGV4cGVjdCA9ICJhbGwgYXJndW1lbnRzIG11c3QgYmUgYnl0ZXMsIG5vdCBzdHIgKCdoZWxsbycpIgorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGRpZmZsaWIuZGlmZl9ieXRlcywgdW5pZmllZCwgYSwgYikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBkaWZmbGliLmRpZmZfYnl0ZXMsIHVuaWZpZWQsIGIsIGEpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgZGlmZmxpYi5kaWZmX2J5dGVzLCBjb250ZXh0LCBhLCBiKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGRpZmZsaWIuZGlmZl9ieXRlcywgY29udGV4dCwgYiwgYSkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVzX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgIyBjYW5ub3QgcGFzcyBmaWxlbmFtZXMgYXMgYnl0ZXMgaWYgY29udGVudCBpcyBzdHIgKHRoaXMgbWF5IG5vdCBiZQorICAgICAgICAjIHRoZSByaWdodCBiZWhhdmlvdXIsIGJ1dCBhdCBsZWFzdCB0aGUgdGVzdCBkZW1vbnN0cmF0ZXMgaG93CisgICAgICAgICMgdGhpbmdzIHdvcmspCisgICAgICAgIGEgPSBbJ2hlbGxvXG4nXQorICAgICAgICBiID0gWydvaGVsbFxuJ10KKyAgICAgICAgZm5hID0gYidvbFx4ZTkudHh0JyAgICAgIyBmaWxlbmFtZSB0cmFuc2NvZGVkIGZyb20gSVNPLTg4NTktMQorICAgICAgICBmbmIgPSBiJ29sXHhjM2E5LnR4dCcgICAjIHRvIFVURi04CisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKAorICAgICAgICAgICAgImFsbCBhcmd1bWVudHMgbXVzdCBiZSBzdHIsIG5vdDogYidvbFxceGU5LnR4dCciLAorICAgICAgICAgICAgZGlmZmxpYi51bmlmaWVkX2RpZmYsIGEsIGIsIGZuYSwgZm5iKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZXNfZGF0ZXMoc2VsZik6CisgICAgICAgICMgdHlwZSBvZiBkYXRlcyBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCB0eXBlIG9mIGNvbnRlbnRzCisgICAgICAgIGEgPSBbYidmb29cbiddCisgICAgICAgIGIgPSBbYidiYXJcbiddCisgICAgICAgIGRhdGVhID0gJzEgZsOpdicKKyAgICAgICAgZGF0ZWIgPSAnMyBmw6l2JworICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcigKKyAgICAgICAgICAgICJhbGwgYXJndW1lbnRzIG11c3QgYmUgYnl0ZXMsIG5vdCBzdHIgKCcxIGbDqXYnKSIsCisgICAgICAgICAgICBkaWZmbGliLmRpZmZfYnl0ZXMsIGRpZmZsaWIudW5pZmllZF9kaWZmLAorICAgICAgICAgICAgYSwgYiwgYidhJywgYidiJywgZGF0ZWEsIGRhdGViKQorCisgICAgICAgICMgaWYgaW5wdXQgaXMgc3RyLCBub24tQVNDSUkgZGF0ZXMgYXJlIGZpbmUKKyAgICAgICAgYSA9IFsnZm9vXG4nXQorICAgICAgICBiID0gWydiYXJcbiddCisgICAgICAgIGxpc3QoZGlmZmxpYi51bmlmaWVkX2RpZmYoYSwgYiwgJ2EnLCAnYicsIGRhdGVhLCBkYXRlYikpCisKKyAgICBkZWYgX2Fzc2VydF90eXBlX2Vycm9yKHNlbGYsIG1zZywgZ2VuZXJhdG9yLCAqYXJncyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjdHg6CisgICAgICAgICAgICBsaXN0KGdlbmVyYXRvcigqYXJncykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBzdHIoY3R4LmV4Y2VwdGlvbikpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGRpZmZsaWIuSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4ID0gMAogICAgIERvY3Rlc3RzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoZGlmZmxpYikKICAgICBydW5fdW5pdHRlc3QoCiAgICAgICAgIFRlc3RXaXRoQXNjaWksIFRlc3RBdXRvanVuaywgVGVzdFNGcGF0Y2hlcywgVGVzdFNGYnVncywKLSAgICAgICAgVGVzdE91dHB1dEZvcm1hdCwgRG9jdGVzdHMpCisgICAgICAgIFRlc3RPdXRwdXRGb3JtYXQsIFRlc3RCeXRlcywgRG9jdGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbCBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAppbmRleCA3MWI2ZDdhLi5lYTdhMjRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCkBAIC02LDcgKzYsNyBAQAogCiA8aGVhZD4KICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiCi0gICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CisgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgogICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgIHRhYmxlLmRpZmYge2ZvbnQtZmFtaWx5OkNvdXJpZXI7IGJvcmRlcjptZWRpdW07fQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCBiOGRhZmY3Li40MjFiYmFkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSw2ICsxLDYgQEAKICMgTWluaW1hbCB0ZXN0cyBmb3IgZGlzIG1vZHVsZQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gdGVzdC5ieXRlY29kZV9oZWxwZXIgaW1wb3J0IEJ5dGVjb2RlVGVzdENhc2UKIGltcG9ydCBkaWZmbGliCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTIzMCw2ICsyMzAsOSBAQAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNCwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDUpCiAKK2RlZiBfZyh4KToKKyAgICB5aWVsZCB4CisKIGNsYXNzIERpc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CkBAIC0zMTUsNiArMzE4LDExIEBACiAgICAgICAgIG1ldGhvZF9ieXRlY29kZSA9IF9DKDEpLl9faW5pdF9fLl9fY29kZV9fLmNvX2NvZGUKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KG1ldGhvZF9ieXRlY29kZSwgZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBnZW5fZnVuY19kaXNhcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KF9nKSAgIyBEaXNhc3NlbWJsZSBnZW5lcmF0b3IgZnVuY3Rpb24KKyAgICAgICAgZ2VuX2Rpc2FzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoX2coMSkpICAjIERpc2Fzc2VtYmxlIGdlbmVyYXRvciBpdHNlbGYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5fZGlzYXMsIGdlbl9mdW5jX2Rpc2FzKQorCiAgICAgZGVmIHRlc3RfZGlzX25vbmUoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRlbCBzeXMubGFzdF90cmFjZWJhY2sKQEAgLTQ3Miw2ICs0ODAsMjQgQEAKIE5hbWVzOgogICAgMDogeCIiIgogCisKK2FzeW5jIGRlZiBhc3luY19kZWYoKToKKyAgICBhd2FpdCAxCisgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcworICAgIGFzeW5jIHdpdGggYyBhcyBkOiBwYXNzCisKK2NvZGVfaW5mb19hc3luY19kZWYgPSAiIiJcCitOYW1lOiAgICAgICAgICAgICAgYXN5bmNfZGVmCitGaWxlbmFtZTogICAgICAgICAgKC4qKQorQXJndW1lbnQgY291bnQ6ICAgIDAKK0t3LW9ubHkgYXJndW1lbnRzOiAwCitOdW1iZXIgb2YgbG9jYWxzOiAgMgorU3RhY2sgc2l6ZTogICAgICAgIDE3CitGbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIEdFTkVSQVRPUiwgTk9GUkVFLCBDT1JPVVRJTkUKK0NvbnN0YW50czoKKyAgIDA6IE5vbmUKKyAgIDE6IDEiIiIKKwogY2xhc3MgQ29kZUluZm9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGVzdF9wYWlycyA9IFsKICAgICAgIChkaXMuY29kZV9pbmZvLCBjb2RlX2luZm9fY29kZV9pbmZvKSwKQEAgLTQ4MCw2ICs1MDYsNyBAQAogICAgICAgKGV4cHJfc3RyLCBjb2RlX2luZm9fZXhwcl9zdHIpLAogICAgICAgKHNpbXBsZV9zdG10X3N0ciwgY29kZV9pbmZvX3NpbXBsZV9zdG10X3N0ciksCiAgICAgICAoY29tcG91bmRfc3RtdF9zdHIsIGNvZGVfaW5mb19jb21wb3VuZF9zdG10X3N0ciksCisgICAgICAoYXN5bmNfZGVmLCBjb2RlX2luZm9fYXN5bmNfZGVmKQogICAgIF0KIAogICAgIGRlZiB0ZXN0X2NvZGVfaW5mbyhzZWxmKToKQEAgLTU2MSwxMCArNTg4LDEwIEBACiAjX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyLCBmaXJzdF9saW5lPWV4cGVjdGVkX291dGVyX2xpbmUpCiAjcHJpbnQoJ2V4cGVjdGVkX29waW5mb19vdXRlciA9IFtcbiAgJywKICAgICAgICMnLFxuICAnLmpvaW4obWFwKHN0ciwgX2luc3RydWN0aW9ucykpLCAnLFxuXScsIHNlcD0nJykKLSNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIoKSwgZmlyc3RfbGluZT1leHBlY3RlZF9vdXRlcl9saW5lKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpLCBmaXJzdF9saW5lPWV4cGVjdGVkX2ZfbGluZSkKICNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX2YgPSBbXG4gICcsCiAgICAgICAjJyxcbiAgJy5qb2luKG1hcChzdHIsIF9pbnN0cnVjdGlvbnMpKSwgJyxcbl0nLCBzZXA9JycpCi0jX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyKCkoKSwgZmlyc3RfbGluZT1leHBlY3RlZF9vdXRlcl9saW5lKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpKCksIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfaW5uZXJfbGluZSkKICNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX2lubmVyID0gW1xuICAnLAogICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQogI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhqdW1weSwgZmlyc3RfbGluZT1leHBlY3RlZF9qdW1weV9saW5lKQpAQCAtNjM1LDEyICs2NjIsMTIgQEAKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2p1bXB5ID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NzQsIGFyZ3ZhbD03NywgYXJncmVwcj0ndG8gNzcnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD03MSwgYXJncmVwcj0ndG8gNzEnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTUwLCBhcmd2YWw9NjYsIGFyZ3JlcHI9J3RvIDY2Jywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTQ0LCBhcmd2YWw9NjAsIGFyZ3JlcHI9J3RvIDYwJywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTksIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLApAQCAtNjQ5LDkyICs2NzYsODkgQEAKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yOSwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NywgYXJndmFsPTQ3LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NCwgYXJndmFsPTQ0LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD00MSwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0wLCBhcmd2YWw9NDcsIGFyZ3JlcHI9J3RvIDQ3Jywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NDcsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9NTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01OSwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NjMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjcsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTczLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NzQsIGFyZ3ZhbD0xNTQsIGFyZ3JlcHI9J3RvIDE1NCcsIG9mZnNldD03Nywgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xNDMsIGFyZ3ZhbD0xNDMsIGFyZ3JlcHI9JycsIG9mZnNldD04Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9OTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD05OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0xMDksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTI0LCBhcmd2YWw9MTI0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0wLCBhcmd2YWw9MTI0LCBhcmdyZXByPSd0byAxMjQnLCBvZmZzZXQ9MTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0xMjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9ODAsIGFyZ3ZhbD04MCwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNiwgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE0NCwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xNDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE1MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MiwgYXJndmFsPTIyOSwgYXJncmVwcj0ndG8gMjI5Jywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTE3MiwgYXJncmVwcj0ndG8gMTcyJywgb2Zmc2V0PTE1Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTYzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MjAwLCBhcmdyZXByPSd0byAyMDAnLCBvZmZzZXQ9MTY5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTczLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTk5LCBhcmd2YWw9MTk5LCBhcmdyZXByPScnLCBvZmZzZXQ9MTc5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYxLCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD02Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9MTQyLCBhcmdyZXByPSd0byAxNDInLCBvZmZzZXQ9NzEsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMxLCBhcmd2YWw9MTMxLCBhcmdyZXByPScnLCBvZmZzZXQ9NzcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD04OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTkwLCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9OTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEwMCwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTEwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMTUsIGFyZ3ZhbD0xMTUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTE1LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNywgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzMiwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MywgYXJndmFsPTIxOCwgYXJncmVwcj0ndG8gMjE4Jywgb2Zmc2V0PTE0Miwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTE2MCwgYXJncmVwcj0ndG8gMTYwJywgb2Zmc2V0PTE0NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTQ4LCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTg4LCBhcmdyZXByPSd0byAxODgnLCBvZmZzZXQ9MTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTYxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTg3LCBhcmd2YWw9MTg3LCBhcmdyZXByPScnLCBvZmZzZXQ9MTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE3Mywgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE3OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xODUsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNiwgYXJndmFsPTIyNSwgYXJncmVwcj0ndG8gMjI1Jywgb2Zmc2V0PTE5Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMjMsIGFyZ3JlcHI9J3RvIDIyMycsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjA5LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTI0MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjQzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI3LCBhcmd2YWw9MjE0LCBhcmdyZXByPSd0byAyMTQnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNywgYXJndmFsPTIxMSwgYXJncmVwcj0ndG8gMjExJywgb2Zmc2V0PTE5MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOTcsIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MjAwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfU1RBUlQnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX0ZJTklTSCcsIG9wY29kZT04MiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIxNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0yMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogIyBPbmUgbGFzdCBwaWVjZSBvZiBpbnNwZWN0IGZvZGRlciB0byBjaGVjayB0aGUgZGVmYXVsdCBsaW5lIG51bWJlciBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CmluZGV4IDkyOTJkOTIuLjczYjQ0NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKQEAgLTQsNiArNCw3IEBACiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGRvY3Rlc3QKK2ltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCkBAIC00MzQsNyArNDM1LDcgQEAKICAgICA+Pj4gdGVzdHMgPSBmaW5kZXIuZmluZChzYW1wbGVfZnVuYykKIAogICAgID4+PiBwcmludCh0ZXN0cykgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgWzxEb2NUZXN0IHNhbXBsZV9mdW5jIGZyb20gLi4uOjE4ICgxIGV4YW1wbGUpPl0KKyAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTkgKDEgZXhhbXBsZSk+XQogCiBUaGUgZXhhY3QgbmFtZSBkZXBlbmRzIG9uIGhvdyB0ZXN0X2RvY3Rlc3Qgd2FzIGludm9rZWQsIHNvIGFsbG93IGZvcgogbGVhZGluZyBwYXRoIGNvbXBvbmVudHMuCkBAIC02NTgsNyArNjU5LDcgQEAKIAogICAgID4+PiBpbXBvcnQgYnVpbHRpbnMKICAgICA+Pj4gdGVzdHMgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoKS5maW5kKGJ1aWx0aW5zKQotICAgID4+PiA3OTAgPCBsZW4odGVzdHMpIDwgODAwICMgYXBwcm94aW1hdGUgbnVtYmVyIG9mIG9iamVjdHMgd2l0aCBkb2NzdHJpbmdzCisgICAgPj4+IDc5MCA8IGxlbih0ZXN0cykgPCA4MTAgIyBhcHByb3hpbWF0ZSBudW1iZXIgb2Ygb2JqZWN0cyB3aXRoIGRvY3N0cmluZ3MKICAgICBUcnVlCiAgICAgPj4+IHJlYWxfdGVzdHMgPSBbdCBmb3IgdCBpbiB0ZXN0cyBpZiBsZW4odC5leGFtcGxlcykgPiAwXQogICAgID4+PiBsZW4ocmVhbF90ZXN0cykgIyBvYmplY3RzIHRoYXQgYWN0dWFsbHkgaGF2ZSBkb2N0ZXN0cwpAQCAtMjA5NiwyMiArMjA5Nyw5IEBACiAgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKICAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49MCBlcnJvcnM9MCBmYWlsdXJlcz0wPgogCi0gICAgICAgSG93ZXZlciwgaWYgRG9jVGVzdFN1aXRlIGZpbmRzIG5vIGRvY3N0cmluZ3MsIGl0IHJhaXNlcyBhbiBlcnJvcjoKKyAgICAgICBUaGUgbW9kdWxlIG5lZWQgbm90IGNvbnRhaW4gYW55IGRvY3N0cmluZ3MgZWl0aGVyOgogCi0gICAgICAgICA+Pj4gdHJ5OgotICAgICAgICAgLi4uICAgICBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdF9ub19kb2NzdHJpbmdzJykKLSAgICAgICAgIC4uLiBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgLi4uICAgICBlcnJvciA9IGUKLQotICAgICAgICAgPj4+IHByaW50KGVycm9yLmFyZ3NbMV0pCi0gICAgICAgICBoYXMgbm8gZG9jc3RyaW5ncwotCi0gICAgICAgWW91IGNhbiBwcmV2ZW50IHRoaXMgZXJyb3IgYnkgcGFzc2luZyBhIERvY1Rlc3RGaW5kZXIgaW5zdGFuY2Ugd2l0aAotICAgICAgIHRoZSBgZXhjbHVkZV9lbXB0eWAga2V5d29yZCBhcmd1bWVudCBzZXQgdG8gRmFsc2U6Ci0KLSAgICAgICAgID4+PiBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoZXhjbHVkZV9lbXB0eT1GYWxzZSkKLSAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0X25vX2RvY3N0cmluZ3MnLAotICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9maW5kZXI9ZmluZGVyKQorICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoJ3Rlc3Quc2FtcGxlX2RvY3Rlc3Rfbm9fZG9jc3RyaW5ncycpCiAgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKICAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49MCBlcnJvcnM9MCBmYWlsdXJlcz0wPgogCkBAIC0yMTIxLDYgKzIxMDksMjIgQEAKICAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQogICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj05IGVycm9ycz0wIGZhaWx1cmVzPTQ+CiAKKyAgICAgICBXZSBjYW4gYWxzbyBwcm92aWRlIGEgRG9jVGVzdEZpbmRlcjoKKworICAgICAgICAgPj4+IGZpbmRlciA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcigpCisgICAgICAgICA+Pj4gc3VpdGUgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdCcsCisgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZmluZGVyPWZpbmRlcikKKyAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQorICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj05IGVycm9ycz0wIGZhaWx1cmVzPTQ+CisKKyAgICAgICBUaGUgRG9jVGVzdEZpbmRlciBuZWVkIG5vdCByZXR1cm4gYW55IHRlc3RzOgorCisgICAgICAgICA+Pj4gZmluZGVyID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKCkKKyAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0X25vX2RvY3N0cmluZ3MnLAorICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZpbmRlcj1maW5kZXIpCisgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKKyAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49MCBlcnJvcnM9MCBmYWlsdXJlcz0wPgorCiAgICAgICAgV2UgY2FuIHN1cHBseSBnbG9iYWwgdmFyaWFibGVzLiAgSWYgd2UgcGFzcyBnbG9icywgdGhleSB3aWxsIGJlCiAgICAgICAgdXNlZCBpbnN0ZWFkIG9mIHRoZSBtb2R1bGUgZ2xvYmFscy4gIEhlcmUgd2UnbGwgcGFzcyBhbiBlbXB0eQogICAgICAgIGdsb2JhbHMsIHRyaWdnZXJpbmcgYW4gZXh0cmEgZXJyb3I6CkBAIC0yMTY4LDcgKzIxNzIsNyBAQAogICAgICAgICAgPj4+IHRlc3QudGVzdF9kb2N0ZXN0LnNpbGx5U2V0dXAKICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgIC4uLgotICAgICAgICAgQXR0cmlidXRlRXJyb3I6ICdtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzaWxseVNldHVwJworICAgICAgICAgQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAndGVzdC50ZXN0X2RvY3Rlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ3NpbGx5U2V0dXAnCiAKICAgICAgICBUaGUgc2V0VXAgYW5kIHRlYXJEb3duIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRlc3Qgb2JqZWN0cy4gSGVyZQogICAgICAgIHdlJ2xsIHVzZSB0aGUgc2V0VXAgZnVuY3Rpb24gdG8gc3VwcGx5IHRoZSBtaXNzaW5nIHZhcmlhYmxlIHk6CkBAIC0yMzE0LDcgKzIzMTgsNyBAQAogICAgICAgICAgPj4+IHRlc3QudGVzdF9kb2N0ZXN0LnNpbGx5U2V0dXAKICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgIC4uLgotICAgICAgICAgQXR0cmlidXRlRXJyb3I6ICdtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzaWxseVNldHVwJworICAgICAgICAgQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAndGVzdC50ZXN0X2RvY3Rlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ3NpbGx5U2V0dXAnCiAKICAgICAgICBUaGUgc2V0VXAgYW5kIHRlYXJEb3duIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRlc3Qgb2JqZWN0cy4KICAgICAgICBIZXJlLCB3ZSdsbCB1c2UgYSBzZXRVcCBmdW5jdGlvbiB0byBzZXQgdGhlIGZhdm9yaXRlIGNvbG9yIGluCkBAIC0yMzYxLDYgKzIzNjUsMjIgQEAKICAgICAgIGZvbyBcbgogICAgICIiIgogCitjbGFzcyBXcmFwcGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYworICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIoc2VsZiwgZnVuYykKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorCitAV3JhcHBlcgorZGVmIHRlc3RfbG9va19pbl91bndyYXBwZWQoKToKKyAgICAiIiIKKyAgICBEb2NzdHJpbmdzIGluIHdyYXBwZWQgZnVuY3Rpb25zIG11c3QgYmUgZGV0ZWN0ZWQgYXMgd2VsbC4KKworICAgID4+PiAnb25lIG90aGVyIHRlc3QnCisgICAgJ29uZSBvdGhlciB0ZXN0JworICAgICIiIgogCiBkZWYgdGVzdF91bml0dGVzdF9yZXBvcnRmbGFncygpOgogICAgICIiIkRlZmF1bHQgdW5pdHRlc3QgcmVwb3J0aW5nIGZsYWdzIGNhbiBiZSBzZXQgdG8gY29udHJvbCByZXBvcnRpbmcKQEAgLTI3MDksOCArMjcyOSw4IEBACiBzaW1wbGUgdGVzdHMgYW5kIG5vIGVycm9ycy4gIFdlJ2xsIHJ1biBib3RoIHRoZSB1bmFkb3JuZWQgZG9jdGVzdCBjb21tYW5kLCBhbmQKIHRoZSB2ZXJib3NlIHZlcnNpb24sIGFuZCB0aGVuIGNoZWNrIHRoZSBvdXRwdXQ6CiAKLSAgICA+Pj4gZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCi0gICAgPj4+IHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRtcGRpcjoKKyAgICA+Pj4gZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIsIHRlbXBfZGlyCisgICAgPj4+IHdpdGggdGVtcF9kaXIoKSBhcyB0bXBkaXI6CiAgICAgLi4uICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdteWZpbGUuZG9jJykKICAgICAuLi4gICAgIHdpdGggb3BlbihmbiwgJ3cnKSBhcyBmOgogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCdUaGlzIGlzIGEgdmVyeSBzaW1wbGUgdGVzdCBmaWxlLlxuJykKQEAgLTI3NjAsOCArMjc4MCw4IEBACiBmaWxlIGVuZHMgaW4gJy5weScsIGl0cyBoYW5kbGluZyBvZiBweXRob24gbW9kdWxlIGZpbGVzIChhcyBvcHBvc2VkIHRvIHN0cmFpZ2h0CiB0ZXh0IGZpbGVzKS4KIAotICAgID4+PiBmcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKLSAgICA+Pj4gd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdG1wZGlyOgorICAgID4+PiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlciwgdGVtcF9kaXIKKyAgICA+Pj4gd2l0aCB0ZW1wX2RpcigpIGFzIHRtcGRpcjoKICAgICAuLi4gICAgIGZuID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ215ZmlsZS5kb2MnKQogICAgIC4uLiAgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJ1RoaXMgaXMgYW5vdGhlciBzaW1wbGUgdGVzdCBmaWxlLlxuJykKQEAgLTI5MjcsNyArMjk0Nyw3IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGluIGRvY3Rlc3QgaXRzZWxmOgotICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QoZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCisgICAgcmV0ID0gc3VwcG9ydC5ydW5fZG9jdGVzdChkb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGRlZmluZWQgaGVyZToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZG9jdGVzdAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9kb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKaW5kZXggMDYxNjFmMi4uZTZjYTk2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKQEAgLTg3LDEwICs4NywxMSBAQAogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIsIGFyZ3M9KHNlbGYuZXZ0LCAxKSkuc3RhcnQoKQogCiAgICAgICAgICMgd2FpdCBmb3IgcG9ydCB0byBiZSBhc3NpZ25lZAotICAgICAgICBuID0gMTAwMAotICAgICAgICB3aGlsZSBuID4gMCBhbmQgUE9SVCBpcyBOb25lOgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKLSAgICAgICAgICAgIG4gLT0gMQorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIFBPUlQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMTApCisgICAgICAgICAgICBpZiB0aW1lLm1vbm90b25pYygpID4gZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBzZWxmLmNsaWVudCA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKCJsb2NhbGhvc3Q6JWQiICUgUE9SVCkKIApAQCAtMjEyLDggKzIxMyw1IEBACiAgICAgICAgICAgICByZXNwb25zZS5yZWFkKCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KERvY1hNTFJQQ0hUVFBHRVRTZXJ2ZXIpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKaW5kZXggNmVjNWRhMy4uYTBjMjk3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKQEAgLTU2LDkgKzU2LDUgQEAKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ2FsbCB0YXNrcyBkb25lJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KER1bW15VGhyZWFkaW5nVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5IGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CmluZGV4IGJlYjdiMWMuLjUwODBlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHN3YXBfaXRlbSwgc3dhcF9hdHRyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc3dhcF9pdGVtLCBzd2FwX2F0dHIKIAogCiBjbGFzcyBSZWJpbmRCdWlsdGluc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEzNSw5ICsxMzUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLCA3KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUmViaW5kQnVpbHRpbnNUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWNjbGFzc2F0dHJpYnV0ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CmluZGV4IGJjNmEzOWIuLjlmNjk0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IGFiYwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBmcm9tIHR5cGVzIGltcG9ydCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKIAogY2xhc3MgUHJvcGVydHlCYXNlKEV4Y2VwdGlvbik6CkBAIC0yOTcsOCArMjk2LDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHJvcGVydHlUZXN0cywgUHJvcGVydHlTdWJjbGFzc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWJhZDgzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIm9ubHkgc3VwcG9ydGVkIG9uIFVuaXgiKQorY2xhc3MgRUlOVFJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgorICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCisKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQorICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6CisgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCA2MWUyM2ZjLi5kN2UzZGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC01OTAsNiArNTkwLDE3IEBACiAgICAgICAgIGVxKG1zZy52YWx1ZXMoKSwgWydPbmUgSHVuZHJlZCcsICdUd2VudHknLCAnVGhyZWUnLCAnRWxldmVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtc2cucmVwbGFjZV9oZWFkZXIsICdGb3VydGgnLCAnTWlzc2luZycpCiAKKyAgICBkZWYgdGVzdF9nZXRfY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgbXNnID0gTWVzc2FnZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpKQorICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9J3JhbmRvbS5hdmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnYXR0YWNobWVudCcpCisgICAgICAgIG1zZy5yZXBsYWNlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdpbmxpbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnaW5saW5lJykKKyAgICAgICAgbXNnLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0lubGluRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCksICdpbmxpbmUnKQorCiAgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwpAQCAtMTY0MCw2ICsxNjUxLDEwIEBACiAgICAgICAgIG1zZyA9IE1JTUVUZXh0KCdoZWxsbyB0aGVyZScsIF9jaGFyc2V0PSd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZy5nZXRfY2hhcnNldCgpLmlucHV0X2NoYXJzZXQsICd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZ1snY29udGVudC10eXBlJ10sICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKQorICAgICAgICAjIEFsc28gYWNjZXB0IGEgQ2hhcnNldCBpbnN0YW5jZQorICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gdGhlcmUnLCBfY2hhcnNldD1DaGFyc2V0KCd1dGYtOCcpKQorICAgICAgICBlcShtc2cuZ2V0X2NoYXJzZXQoKS5pbnB1dF9jaGFyc2V0LCAndXRmLTgnKQorICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHlwZSddLCAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiJykKIAogICAgIGRlZiB0ZXN0XzdiaXRfaW5wdXQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKaW5kZXggODkxNzQwOC4uYjFjYmNlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIEJ5dGVzR2VuZXJhdG9yCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKQEAgLTEzOSw2ICsxNDAsMjggQEAKICAgICAgICAgZy5mbGF0dGVuKG1zZywgbGluZXNlcD0nXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQogCisgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKKyAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisKKyAgICAgICAgICAgIEZyb20gdGltZSB0byB0aW1lIEkgd3JpdGUgYSByaHltZS4KKyAgICAgICAgICAgICIiIikKKyAgICAgICAgdmFyaWFudHMgPSAoCisgICAgICAgICAgICAoTm9uZSwgVHJ1ZSksCisgICAgICAgICAgICAocG9saWN5LmNvbXBhdDMyLCBUcnVlKSwKKyAgICAgICAgICAgIChwb2xpY3kuZGVmYXVsdCwgRmFsc2UpLAorICAgICAgICAgICAgKHBvbGljeS5kZWZhdWx0LmNsb25lKG1hbmdsZV9mcm9tXz1UcnVlKSwgVHJ1ZSksCisgICAgICAgICAgICApCisgICAgICAgIGZvciBwLCBtYW5nbGUgaW4gdmFyaWFudHM6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNvdXJjZS5yZXBsYWNlKCdGcm9tICcsICc+RnJvbSAnKSBpZiBtYW5nbGUgZWxzZSBzb3VyY2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wLCBtYW5nbGVfZnJvbV89bWFuZ2xlKToKKyAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNvdXJjZSkpCisgICAgICAgICAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgICAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXApCisgICAgICAgICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQorCiAKIGNsYXNzIFRlc3RHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgogCkBAIC0xOTQsNiArMjE3LDI3IEBACiAgICAgICAgIGcuZmxhdHRlbihtc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3NtdHB1dGY4X3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgIG1zZy5zZXRfY29udGVudCgib2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8iKQorICAgICAgICBleHBlY3RlZCA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBQw6FvbG8gPGbFkW9AYmFyLmNvbT4KKyAgICAgICAgICAgIFRvOiBEaW5zZGFsZQorICAgICAgICAgICAgU3ViamVjdDogTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsgXHUxRjYwOQorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisKKyAgICAgICAgICAgIG9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgndXRmLTgnKS5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9cG9saWN5LlNNVFBVVEY4KQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKaW5kZXggNTBlMWE2My4uZDc4MDQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKQEAgLTcyMywyNCArNzIzLDE0IEBACiAgICAgZGVmIHRlc3RfaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgbSA9IHNlbGYuX21ha2VfbWVzc2FnZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG1bJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9ICdpbmxpbmUnCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG0ucmVwbGFjZV9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogICAgICAgICBtLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0F0VGFjaE1lbnQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uaXNfYXR0YWNobWVudCkKICAgICAgICAgbS5zZXRfcGFyYW0oJ2ZpbGVuYW1lJywgJ2FiYy5wbmcnLCAnQ29udGVudC1EaXNwb3NpdGlvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogCiAKIGNsYXNzIFRlc3RFbWFpbE1lc3NhZ2UoVGVzdEVtYWlsTWVzc2FnZUJhc2UsIFRlc3RFbWFpbEJhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKaW5kZXggZTc5N2YzNi4uOWJiMzJmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CkBAIC0yMiwxNSArMjIsMTggQEAKICAgICAgICAgJ2xpbmVzZXAnOiAgICAgICAgICAgICAgICAgICdcbicsCiAgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCiAgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIFRydWUsCiAgICAgICAgIH0KICAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCiAgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCiAgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCiAgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICd1dGY4JzogICAgICAgICAgICAgICAgICAgICBGYWxzZSwKICAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAogICAgICAgICAnaGVhZGVyX2ZhY3RvcnknOiAgICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5LAogICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAogICAgICAgICAnY29udGVudF9tYW5hZ2VyJzogICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmNvbnRlbnRfbWFuYWdlciwKKyAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIEZhbHNlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNDIsNiArNDUsOSBAQAogICAgICAgICBlbWFpbC5wb2xpY3kuZGVmYXVsdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsIHt9KSwKICAgICAgICAgZW1haWwucG9saWN5LlNNVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbid9KSwKKyAgICAgICAgZW1haWwucG9saWN5LlNNVFBVVEY4OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXRmOCc6IFRydWV9KSwKICAgICAgICAgZW1haWwucG9saWN5LkhUVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogTm9uZX0pLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQppbmRleCA2ZGM3NjRiLi5hNzhjYTE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQpAQCAtMzU3LDQgKzM1Nyw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CmluZGV4IDVkYjQwNDAuLjRiNWQwZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKQEAgLTY2LDE4ICs2NiwxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbjoKICAgICBwYXNzCiAKLWRlZiB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoYXNzZXJ0aW9uLCBzb3VyY2UsIHRhcmdldD1Ob25lLAotICAgICAgICAqLCBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpOgotICAgIHN0YXJ0LCBzdG9wID0gcHJvdG9jb2wKK2RlZiB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoYXNzZXJ0aW9uLCBzb3VyY2UsIHRhcmdldD1Ob25lKToKICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgdGFyZ2V0ID0gc291cmNlCi0gICAgZm9yIHByb3RvY29sIGluIHJhbmdlKHN0YXJ0LCBzdG9wKzEpOgorICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgIGFzc2VydGlvbihsb2FkcyhkdW1wcyhzb3VyY2UsIHByb3RvY29sPXByb3RvY29sKSksIHRhcmdldCkKIAotZGVmIHRlc3RfcGlja2xlX2V4Y2VwdGlvbihhc3NlcnRpb24sIGV4Y2VwdGlvbiwgb2JqLAotICAgICAgICAqLCBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpOgotICAgIHN0YXJ0LCBzdG9wID0gcHJvdG9jb2wKLSAgICBmb3IgcHJvdG9jb2wgaW4gcmFuZ2Uoc3RhcnQsIHN0b3ArMSk6CitkZWYgdGVzdF9waWNrbGVfZXhjZXB0aW9uKGFzc2VydGlvbiwgZXhjZXB0aW9uLCBvYmopOgorICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgIHdpdGggYXNzZXJ0aW9uKGV4Y2VwdGlvbik6CiAgICAgICAgICAgICBkdW1wcyhvYmosIHByb3RvY29sPXByb3RvY29sKQogCkBAIC01NzUsMTEgKzU3MSw3IEBACiAKICAgICAgICAgc2VsZi5fX2NsYXNzX18uTmVzdGVkRW51bSA9IE5lc3RlZEVudW0KICAgICAgICAgc2VsZi5OZXN0ZWRFbnVtLl9fcXVhbG5hbWVfXyA9ICclcy5OZXN0ZWRFbnVtJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCi0gICAgICAgIHRlc3RfcGlja2xlX2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcywgUGlja2xpbmdFcnJvciwgc2VsZi5OZXN0ZWRFbnVtLnR3aWdzLAotICAgICAgICAgICAgICAgIHByb3RvY29sPSgwLCAzKSkKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIHNlbGYuTmVzdGVkRW51bS50d2lncywKLSAgICAgICAgICAgICAgICBwcm90b2NvbD0oNCwgSElHSEVTVF9QUk9UT0NPTCkpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBzZWxmLk5lc3RlZEVudW0udHdpZ3MpCiAKICAgICBkZWYgdGVzdF9waWNrbGVfYnlfbmFtZShzZWxmKToKICAgICAgICAgY2xhc3MgUmVwbGFjZUdsb2JhbEludChJbnRFbnVtKToKQEAgLTY1NCw2ICs2NDYsMjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQogCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHN0YXJ0PTEwKQorICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oU3VtbWVyTW9udGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTdW1tZXJNb250aCksIDMsIFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtTdW1tZXJNb250aC5qdW5lLCBTdW1tZXJNb250aC5qdWx5LCBTdW1tZXJNb250aC5hdWd1c3RdLAorICAgICAgICAgICAgICAgIGxzdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBpLCBtb250aCBpbiBlbnVtZXJhdGUoJ2p1bmUganVseSBhdWd1c3QnLnNwbGl0KCksIDEwKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKwogICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgogICAgICAgICBTdW1tZXJNb250aCA9IEVudW0oJ1N1bW1lck1vbnRoJywgWydqdW5lJywgJ2p1bHknLCAnYXVndXN0J10pCiAgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCkBAIC02NzEsNiArNjgwLDIzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKIAorICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0X3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCBbJ2p1bmUnLCAnanVseScsICdhdWd1c3QnXSwgc3RhcnQ9MjApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgMjApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChlLnZhbHVlKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CiAgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgKICAgICAgICAgICAgICAgICAnU3VtbWVyTW9udGgnLApAQCAtNzI3LDYgKzc1MywyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHR5cGU9aW50LCBzdGFydD0zMCkKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAzMCk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fdHlwZV9mcm9tX3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBTdW1tZXJNb250aCA9IEludEVudW0oJ1N1bW1lck1vbnRoJywgJ2p1bmUganVseSBhdWd1c3QnKQogICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQpAQCAtNzQzLDYgKzc4NSwyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX2Zyb21fc3ViY2xhc3Nfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBJbnRFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0Jywgc3RhcnQ9NDApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgNDApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKwogICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgogICAgICAgICBpZiBpc2luc3RhbmNlKE5hbWUsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByYWlzZSBOYW1lCkBAIC0xMDMwLDkgKzEwODgsOSBAQAogICAgICAgICBnbG9iYWxzKClbJ05FSSddID0gTkVJCiAgICAgICAgIE5JNSA9IE5hbWVkSW50KCd0ZXN0JywgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOSTUsIDUpCi0gICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydEVxdWFsLCBOSTUsIDUsIHByb3RvY29sPSg0LCA0KSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0RXF1YWwsIE5JNSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChORUkueS52YWx1ZSwgMikKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSS55LCBwcm90b2NvbD0oNCwgNCkpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBORUkueSkKICAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXNfd2l0aF9yZWR1Y2Uoc2VsZik6CkBAIC0xNDk4LDEwICsxNTU2LDEyIEBACiAgICAgICAgICAgICAgICAgdHVya2V5ID0gMwogCiAKLWV4cGVjdGVkX2hlbHBfb3V0cHV0ID0gIiIiCitleHBlY3RlZF9oZWxwX291dHB1dF93aXRoX2RvY3MgPSAiIiJcCiBIZWxwIG9uIGNsYXNzIENvbG9yIGluIG1vZHVsZSAlczoKIAogY2xhc3MgQ29sb3IoZW51bS5FbnVtKQorIHwgIEFuIGVudW1lcmF0aW9uLgorIHxceDIwXHgyMAogIHwgIE1ldGhvZCByZXNvbHV0aW9uIG9yZGVyOgogIHwgICAgICBDb2xvcgogIHwgICAgICBlbnVtLkVudW0KQEAgLTE1MzEsMTEgKzE1OTEsNDEgQEAKICB8ICAgICAgUmV0dXJucyBhIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUtPnZhbHVlLgogIHxceDIwXHgyMFx4MjBceDIwXHgyMFx4MjAKICB8ICAgICAgVGhpcyBtYXBwaW5nIGxpc3RzIGFsbCBlbnVtIG1lbWJlcnMsIGluY2x1ZGluZyBhbGlhc2VzLiBOb3RlIHRoYXQgdGhpcwotIHwgICAgICBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBpbnRlcm5hbCBtYXBwaW5nLgotIiIiLnN0cmlwKCkKKyB8ICAgICAgaXMgYSByZWFkLW9ubHkgdmlldyBvZiB0aGUgaW50ZXJuYWwgbWFwcGluZy4iIiIKKworZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aG91dF9kb2NzID0gIiIiXAorSGVscCBvbiBjbGFzcyBDb2xvciBpbiBtb2R1bGUgJXM6CisKK2NsYXNzIENvbG9yKGVudW0uRW51bSkKKyB8ICBNZXRob2QgcmVzb2x1dGlvbiBvcmRlcjoKKyB8ICAgICAgQ29sb3IKKyB8ICAgICAgZW51bS5FbnVtCisgfCAgICAgIGJ1aWx0aW5zLm9iamVjdAorIHxceDIwXHgyMAorIHwgIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOgorIHxceDIwXHgyMAorIHwgIGJsdWUgPSA8Q29sb3IuYmx1ZTogMz4KKyB8XHgyMFx4MjAKKyB8ICBncmVlbiA9IDxDb2xvci5ncmVlbjogMj4KKyB8XHgyMFx4MjAKKyB8ICByZWQgPSA8Q29sb3IucmVkOiAxPgorIHxceDIwXHgyMAorIHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB8ICBEYXRhIGRlc2NyaXB0b3JzIGluaGVyaXRlZCBmcm9tIGVudW0uRW51bToKKyB8XHgyMFx4MjAKKyB8ICBuYW1lCisgfFx4MjBceDIwCisgfCAgdmFsdWUKKyB8XHgyMFx4MjAKKyB8ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgfCAgRGF0YSBkZXNjcmlwdG9ycyBpbmhlcml0ZWQgZnJvbSBlbnVtLkVudW1NZXRhOgorIHxceDIwXHgyMAorIHwgIF9fbWVtYmVyc19fIiIiCiAKIGNsYXNzIFRlc3RTdGRMaWIodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgbWF4RGlmZiA9IE5vbmUKKwogICAgIGNsYXNzIENvbG9yKEVudW0pOgogICAgICAgICByZWQgPSAxCiAgICAgICAgIGdyZWVuID0gMgpAQCAtMTU0Myw3ICsxNjMzLDEwIEBACiAKICAgICBkZWYgdGVzdF9weWRvYyhzZWxmKToKICAgICAgICAgIyBpbmRpcmVjdGx5IHRlc3QgX19vYmpjbGFzc19fCi0gICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF9oZWxwX291dHB1dCAlIF9fbmFtZV9fCisgICAgICAgIGlmIFN0ckVudW0uX19kb2NfXyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX2hlbHBfb3V0cHV0X3dpdGhvdXRfZG9jcyAlIF9fbmFtZV9fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aF9kb2NzICUgX19uYW1lX18KICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQogICAgICAgICBoZWxwZXIgPSBweWRvYy5IZWxwZXIob3V0cHV0PW91dHB1dCkKICAgICAgICAgaGVscGVyKHNlbGYuQ29sb3IpCkBAIC0xNTUzLDcgKzE2NDYsNyBAQAogICAgIGRlZiB0ZXN0X2luc3BlY3RfZ2V0bWVtYmVycyhzZWxmKToKICAgICAgICAgdmFsdWVzID0gZGljdCgoCiAgICAgICAgICAgICAgICAgKCdfX2NsYXNzX18nLCBFbnVtTWV0YSksCi0gICAgICAgICAgICAgICAgKCdfX2RvY19fJywgTm9uZSksCisgICAgICAgICAgICAgICAgKCdfX2RvY19fJywgJ0FuIGVudW1lcmF0aW9uLicpLAogICAgICAgICAgICAgICAgICgnX19tZW1iZXJzX18nLCBzZWxmLkNvbG9yLl9fbWVtYmVyc19fKSwKICAgICAgICAgICAgICAgICAoJ19fbW9kdWxlX18nLCBfX25hbWVfXyksCiAgICAgICAgICAgICAgICAgKCdibHVlJywgc2VsZi5Db2xvci5ibHVlKSwKQEAgLTE1ODEsNyArMTY3NCw3IEBACiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fY2xhc3NfXycsIGtpbmQ9J2RhdGEnLAogICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1vYmplY3QsIG9iamVjdD1FbnVtTWV0YSksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fZG9jX18nLCBraW5kPSdkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmdfY2xhc3M9c2VsZi5Db2xvciwgb2JqZWN0PU5vbmUpLAorICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1zZWxmLkNvbG9yLCBvYmplY3Q9J0FuIGVudW1lcmF0aW9uLicpLAogICAgICAgICAgICAgICAgIEF0dHJpYnV0ZShuYW1lPSdfX21lbWJlcnNfXycsIGtpbmQ9J3Byb3BlcnR5JywKICAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmdfY2xhc3M9RW51bU1ldGEsIG9iamVjdD1FbnVtTWV0YS5fX21lbWJlcnNfXyksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fbW9kdWxlX18nLCBraW5kPSdkYXRhJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggZTg1MjU0Yy4uMjYzMGNmMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTI1OCwxNiArMjU4LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgKHN5cy5tYXhzaXplKzMsJ2MnKV0KIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VvZi5weSBiL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CmluZGV4IDUyZTc5MzIuLjdiYWE3YWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CkBAIC0yNCw4ICsyNCw1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEVPRlRlc3RDYXNlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCBiMzdmMDMzLi5hNzM1OWU5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyU29ja2V0ID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuc2VydmVyU29ja2V0LmJpbmQoKCcxMjcuMC4wLjEnLCAwKSkKLSAgICAgICAgc2VsZi5zZXJ2ZXJTb2NrZXQubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2VydmVyU29ja2V0Lmxpc3RlbigpCiAgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSBbc2VsZi5zZXJ2ZXJTb2NrZXRdCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0yNTIsOCArMjUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoZXBvbGwuZmlsZW5vKCkpLCBGYWxzZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEVQb2xsKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5IGIvTGliL3Rlc3QvdGVzdF9lcnJuby5weQppbmRleCAwNThkY2I5Li41YzQzN2U5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXJybm8ucHkKQEAgLTMsNyArMyw2IEBACiAiIiIKIAogaW1wb3J0IGVycm5vCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBzdGRfY19lcnJvcnMgPSBmcm96ZW5zZXQoWydFRE9NJywgJ0VSQU5HRSddKQpAQCAtMzIsOSArMzEsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vICVzIGF0dHIgaW4gZXJybm8uZXJyb3Jjb2RlJyAlIGF0dHJpYnV0ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRXJybm9BdHRyaWJ1dGVUZXN0cywgRXJyb3Jjb2RlVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX3ZhcmlhdGlvbnMucHkKaW5kZXggMTFmNWU1Yy4uZDg3NGIwZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl92YXJpYXRpb25zLnB5CkBAIC0xLDUgKzEsNCBAQAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgRXhjZXB0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTczLDggKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoaXRfZmluYWxseSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhpdF9leGNlcHQpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQppbmRleCA4MGQ0ZjFhLi4zMmE2NmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CkBAIC04NCw2ICs4NCw3IEBACiAgICAgICAgICAgICB4ICs9IHggICMgdGhpcyBzaW1wbHkgc2hvdWxkbid0IGJsb3cgdXAKIAogICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKFJ1bnRpbWVFcnJvciwgIlJ1bnRpbWVFcnJvciIpCisgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goUmVjdXJzaW9uRXJyb3IsICJSZWN1cnNpb25FcnJvciIpCiAKICAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChTeW50YXhFcnJvciwgIlN5bnRheEVycm9yIikKICAgICAgICAgdHJ5OiBleGVjKCcvXG4nKQpAQCAtMTE3LDYgKzExOCw4IEBACiAgICAgICAgIHRyeTogeCA9IDEvMAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6IHBhc3MKIAorICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKFN0b3BBc3luY0l0ZXJhdGlvbiwgIlN0b3BBc3luY0l0ZXJhdGlvbiIpCisKICAgICBkZWYgdGVzdFN5bnRheEVycm9yTWVzc2FnZShzZWxmKToKICAgICAgICAgIyBtYWtlIHN1cmUgdGhlIHJpZ2h0IGV4Y2VwdGlvbiBtZXNzYWdlIGlzIHJhaXNlZCBmb3IgZWFjaCBvZgogICAgICAgICAjIHRoZXNlIGNvZGUgZnJhZ21lbnRzCkBAIC00NzQsMTQgKzQ3NywxNCBAQAogICAgIGRlZiB0ZXN0SW5maW5pdGVSZWN1cnNpb24oc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gZigpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGYpCiAKICAgICAgICAgZGVmIGcoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gZygpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgZykKIAogICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYm90aCBpbnN0YW5jZXMgYW5kIGNsYXNzZXMgaGF2ZSBhIHN0ciByZXByZXNlbnRhdGlvbi4KQEAgLTg4NywxMCArODkwLDEwIEBACiAgICAgICAgIGRlZiBnKCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGcoKQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgZSwgdiwgdGIgPSBnKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodiwgUnVudGltZUVycm9yKSwgdHlwZSh2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodiwgUmVjdXJzaW9uRXJyb3IpLCB0eXBlKHYpKQogICAgICAgICBzZWxmLmFzc2VydEluKCJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIsIHN0cih2KSkKIAogCkBAIC05ODksMTAgKzk5MiwxMCBAQAogICAgICAgICAjIFdlIGNhbm5vdCB1c2UgYXNzZXJ0UmFpc2VzIHNpbmNlIGl0IG1hbnVhbGx5IGRlbGV0ZXMgdGhlIHRyYWNlYmFjawogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbm5lcigpCi0gICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyKCksIE5vbmUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlJ1bnRpbWVFcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVjdXJzaW9uRXJyb3Igbm90IHJhaXNlZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2Vycm5vX0VOT1RESVIoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKaW5kZXggNmI2YzEyZC4uNjU0MjU4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQpAQCAtMzQsMTcgKzM0LDM3IEBACiAgICAgKDEsIDIsIDMsIDQsIDUpIHt9CiAgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSkKICAgICAoMSwgMiwgMywgNCwgNSkge30KKyAgICA+Pj4gZigqWzEsIDIsIDNdLCA0LCA1KQorICAgICgxLCAyLCAzLCA0LCA1KSB7fQogICAgID4+PiBmKDEsIDIsIDMsICpVc2VyTGlzdChbNCwgNV0pKQogICAgICgxLCAyLCAzLCA0LCA1KSB7fQorICAgID4+PiBmKDEsIDIsIDMsICpbNCwgNV0sICpbNiwgN10pCisgICAgKDEsIDIsIDMsIDQsIDUsIDYsIDcpIHt9CisgICAgPj4+IGYoMSwgKlsyLCAzXSwgNCwgKls1LCA2XSwgNykKKyAgICAoMSwgMiwgMywgNCwgNSwgNiwgNykge30KKyAgICA+Pj4gZigqVXNlckxpc3QoWzEsIDJdKSwgKlVzZXJMaXN0KFszLCA0XSksIDUsICpVc2VyTGlzdChbNiwgN10pKQorICAgICgxLCAyLCAzLCA0LCA1LCA2LCA3KSB7fQogCiBIZXJlIHdlIGFkZCBrZXl3b3JkIGFyZ3VtZW50cwogCiAgICAgPj4+IGYoMSwgMiwgMywgKip7J2EnOjQsICdiJzo1fSkKICAgICAoMSwgMiwgMykgeydhJzogNCwgJ2InOiA1fQorICAgID4+PiBmKDEsIDIsICoqeydhJzogLTEsICdiJzogNX0sICoqeydhJzogNCwgJ2MnOiA2fSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ2EnCisgICAgPj4+IGYoMSwgMiwgKip7J2EnOiAtMSwgJ2InOiA1fSwgYT00LCBjPTYpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICdhJwogICAgID4+PiBmKDEsIDIsIDMsICpbNCwgNV0sICoqeydhJzo2LCAnYic6N30pCiAgICAgKDEsIDIsIDMsIDQsIDUpIHsnYSc6IDYsICdiJzogN30KICAgICA+Pj4gZigxLCAyLCAzLCB4PTQsIHk9NSwgKig2LCA3KSwgKip7J2EnOjgsICdiJzogOX0pCiAgICAgKDEsIDIsIDMsIDYsIDcpIHsnYSc6IDgsICdiJzogOSwgJ3gnOiA0LCAneSc6IDV9CisgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSwgKip7J2MnOiA4fSwgKip7J2EnOjYsICdiJzo3fSkKKyAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogNiwgJ2InOiA3LCAnYyc6IDh9CisgICAgPj4+IGYoMSwgMiwgMywgKig0LCA1KSwgeD02LCB5PTcsICoqeydhJzo4LCAnYic6IDl9KQorICAgICgxLCAyLCAzLCA0LCA1KSB7J2EnOiA4LCAnYic6IDksICd4JzogNiwgJ3knOiA3fQogCiAgICAgPj4+IGYoMSwgMiwgMywgKipVc2VyRGljdChhPTQsIGI9NSkpCiAgICAgKDEsIDIsIDMpIHsnYSc6IDQsICdiJzogNX0KQEAgLTUyLDYgKzcyLDggQEAKICAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogNiwgJ2InOiA3fQogICAgID4+PiBmKDEsIDIsIDMsIHg9NCwgeT01LCAqKDYsIDcpLCAqKlVzZXJEaWN0KGE9OCwgYj05KSkKICAgICAoMSwgMiwgMywgNiwgNykgeydhJzogOCwgJ2InOiA5LCAneCc6IDQsICd5JzogNX0KKyAgICA+Pj4gZigxLCAyLCAzLCAqKDQsIDUpLCB4PTYsIHk9NywgKipVc2VyRGljdChhPTgsIGI9OSkpCisgICAgKDEsIDIsIDMsIDQsIDUpIHsnYSc6IDgsICdiJzogOSwgJ3gnOiA2LCAneSc6IDd9CiAKIEV4YW1wbGVzIHdpdGggaW52YWxpZCBhcmd1bWVudHMgKFR5cGVFcnJvcnMpLiBXZSdyZSBhbHNvIHRlc3RpbmcgdGhlIGZ1bmN0aW9uCiBuYW1lcyBpbiB0aGUgZXhjZXB0aW9uIG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQppbmRleCBlNjhhMDllLi4wZDg2Y2I1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtNiw4ICs2LDggQEAKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CkBAIC0xNyw2ICsxNywxMCBAQAogICAgIEhBVkVfVEhSRUFEUyA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBIQVZFX1RIUkVBRFMgPSBGYWxzZQordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCiAKIFRJTUVPVVQgPSAwLjUKIApAQCAtMzgsNyArNDIsNyBAQAogICAgICAgICBzdXBwb3J0LnVubGluayhmaWxlbmFtZSkKIAogY2xhc3MgRmF1bHRIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUpOgorICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUsIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgY29kZSBpbiBQeXRob24gKGluIGEgbmV3IGNoaWxkIHByb2Nlc3MpIGFuZCByZWFkIHRoZQogICAgICAgICBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQgZXJyb3Igb3IgZnJvbSBhIGZpbGUgKGlmIGZpbGVuYW1lIGlzIHNldCkuCkBAIC00OSw4ICs1MywxMSBAQAogICAgICAgICB0aHJlYWQgWFhYIi4KICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBkZWRlbnQoY29kZSkuc3RyaXAoKQorICAgICAgICBwYXNzX2ZkcyA9IFtdCisgICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFzc19mZHMuYXBwZW5kKGZkKQogICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgotICAgICAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUpCisgICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgcGFzc19mZHM9cGFzc19mZHMpCiAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCiAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5zdHJpcF9weXRob25fc3RkZXJyKHN0ZG91dCkKQEAgLTYwLDEzICs2NywyMCBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICBlbGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIG9zLlNFRUtfU0VULCAwKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBjbG9zZWZkPUZhbHNlKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKICAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKIAogICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQogICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCkBAIC04OSw3ICsxMDMsNyBAQAogICAgICAgICAgICAgaGVhZGVyPXJlLmVzY2FwZShoZWFkZXIpKSkuc3RyaXAoKQogICAgICAgICBpZiBvdGhlcl9yZWdleDoKICAgICAgICAgICAgIHJlZ2V4ICs9ICd8JyArIG90aGVyX3JlZ2V4Ci0gICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWU9ZmlsZW5hbWUsIGZkPWZkKQogICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCkBAIC0xMzUsMjYgKzE0OSwzMiBAQAogICAgICAgICAgICAgMywKICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBleGNlcHRpb24nKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnYnVzJyksCi0gICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2J1cygpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHQlVTJyksICduZWVkIHNpZ25hbC5TSUdCVVMnKQogICAgIGRlZiB0ZXN0X3NpZ2J1cyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKwogICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3NpZ2J1cygpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdCVVMpCiAgICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAorICAgICAgICAgICAgNiwKICAgICAgICAgICAgICdCdXMgZXJyb3InKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnaWxsJyksCi0gICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHSUxMJyksICduZWVkIHNpZ25hbC5TSUdJTEwnKQogICAgIGRlZiB0ZXN0X3NpZ2lsbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKwogICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdJTEwpCiAgICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAorICAgICAgICAgICAgNiwKICAgICAgICAgICAgICdJbGxlZ2FsIGluc3RydWN0aW9uJykKIAogICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yKHNlbGYpOgpAQCAtMjAxLDYgKzIyMSwyMSBAQAogICAgICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnLAogICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICJzdWJwcm9jZXNzIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzX2ZkcyBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9lbmFibGVfZmQoc2VsZik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgnd2IrJykgYXMgZnA6CisgICAgICAgICAgICBmZCA9IGZwLmZpbGVubygpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSglcykKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3NpZ3NlZ3YoKQorICAgICAgICAgICAgICAgICIiIiAlIGZkLAorICAgICAgICAgICAgICAgIDQsCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcsCisgICAgICAgICAgICAgICAgZmQ9ZmQpCisKICAgICBkZWYgdGVzdF9lbmFibGVfc2luZ2xlX3RocmVhZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTI4Nyw3ICszMjIsNyBAQAogICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChhcmdzLCBlbnY9ZW52KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5yc3RyaXAoKSwgYiJUcnVlIikKIAotICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFjayhzZWxmLCBmaWxlbmFtZSk6CisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrKHNlbGYsICosIGZpbGVuYW1lPU5vbmUsIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgRXhwbGljaXRseSBjYWxsIGR1bXBfdHJhY2ViYWNrKCkgZnVuY3Rpb24gYW5kIGNoZWNrIGl0cyBvdXRwdXQuCiAgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgpAQCAtMjk1LDEwICszMzAsMTYgQEAKICAgICAgICAgY29kZSA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgogCisgICAgICAgICAgICBmaWxlbmFtZSA9IHtmaWxlbmFtZSFyfQorICAgICAgICAgICAgZmQgPSB7ZmR9CisKICAgICAgICAgICAgIGRlZiBmdW5jQigpOgotICAgICAgICAgICAgICAgIGlmIHtoYXNfZmlsZW5hbWV9OgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6CiAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPUZhbHNlKQorICAgICAgICAgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbF90aHJlYWRzPUZhbHNlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKIApAQCAtMzA4LDI5ICszNDksMzcgQEAKICAgICAgICAgICAgIGZ1bmNBKCkKICAgICAgICAgICAgICIiIgogICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCi0gICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKLSAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAorICAgICAgICAgICAgZmQ9ZmQsCiAgICAgICAgICkKICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBsaW5lbm8gPSA2CisgICAgICAgICAgICBsaW5lbm8gPSA5CisgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsaW5lbm8gPSAxMgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGluZW5vID0gOAorICAgICAgICAgICAgbGluZW5vID0gMTQKICAgICAgICAgZXhwZWN0ZWQgPSBbCiAgICAgICAgICAgICAnU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCiAgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gZnVuY0InICUgbGluZW5vLAotICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDExIGluIGZ1bmNBJywKLSAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMyBpbiA8bW9kdWxlPicKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxNyBpbiBmdW5jQScsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTkgaW4gPG1vZHVsZT4nCiAgICAgICAgIF0KLSAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUsIGZkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKIAogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKE5vbmUpCisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soKQogCiAgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKGZpbGVuYW1lPWZpbGVuYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICJzdWJwcm9jZXNzIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzX2ZkcyBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19mZChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmQ9ZnAuZmlsZW5vKCkpCiAKICAgICBkZWYgdGVzdF90cnVuY2F0ZShzZWxmKToKICAgICAgICAgbWF4bGVuID0gNTAwCkBAIC00MjMsNyArNDcyLDEwIEBACiAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoZmlsZW5hbWUpCiAKLSAgICBkZWYgX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdCwgY2FuY2VsLCBmaWxlbmFtZSwgbG9vcHMpOgorICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpJykKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0PUZhbHNlLCBjYW5jZWw9RmFsc2UsIGxvb3BzPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICosIGZpbGVuYW1lPU5vbmUsIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgaG93IG1hbnkgdGltZXMgdGhlIHRyYWNlYmFjayBpcyB3cml0dGVuIGluIHRpbWVvdXQgeCAyLjUgc2Vjb25kcywKICAgICAgICAgb3IgdGltZW91dCB4IDMuNSBzZWNvbmRzIGlmIGNhbmNlbCBpcyBUcnVlOiAxLCAyIG9yIDMgdGltZXMgZGVwZW5kaW5nCkBAIC00MzUsNiArNDg3LDE0IEBACiAgICAgICAgIGNvZGUgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKICAgICAgICAgICAgIGltcG9ydCB0aW1lCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIHRpbWVvdXQgPSB7dGltZW91dH0KKyAgICAgICAgICAgIHJlcGVhdCA9IHtyZXBlYXR9CisgICAgICAgICAgICBjYW5jZWwgPSB7Y2FuY2VsfQorICAgICAgICAgICAgbG9vcHMgPSB7bG9vcHN9CisgICAgICAgICAgICBmaWxlbmFtZSA9IHtmaWxlbmFtZSFyfQorICAgICAgICAgICAgZmQgPSB7ZmR9CiAKICAgICAgICAgICAgIGRlZiBmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcyk6CiAgICAgICAgICAgICAgICAgZm9yIGxvb3AgaW4gcmFuZ2UobG9vcHMpOgpAQCAtNDQ0LDE2ICs1MDQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0ICogNSkKICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCiAKLSAgICAgICAgICAgIHRpbWVvdXQgPSB7dGltZW91dH0KLSAgICAgICAgICAgIHJlcGVhdCA9IHtyZXBlYXR9Ci0gICAgICAgICAgICBjYW5jZWwgPSB7Y2FuY2VsfQotICAgICAgICAgICAgbG9vcHMgPSB7bG9vcHN9Ci0gICAgICAgICAgICBpZiB7aGFzX2ZpbGVuYW1lfToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCisgICAgICAgICAgICBlbGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyLmZpbGVubygpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZpbGUgPSBOb25lCiAgICAgICAgICAgICBmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcykKLSAgICAgICAgICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICAgICAgICIiIgogICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCkBAIC00NjEsOCArNTE5LDggQEAKICAgICAgICAgICAgIHJlcGVhdD1yZXBlYXQsCiAgICAgICAgICAgICBjYW5jZWw9Y2FuY2VsLAogICAgICAgICAgICAgbG9vcHM9bG9vcHMsCi0gICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCi0gICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAorICAgICAgICAgICAgZmQ9ZmQsCiAgICAgICAgICkKICAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQogICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKQEAgLTQ3MiwyNyArNTMwLDEyIEBACiAgICAgICAgICAgICBpZiByZXBlYXQ6CiAgICAgICAgICAgICAgICAgY291bnQgKj0gMgogICAgICAgICAgICAgaGVhZGVyID0gcidUaW1lb3V0IFwoJXNcKSFcblRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicgJSB0aW1lb3V0X3N0cgotICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soOSwgMjAsIGhlYWRlciwgbWluX2NvdW50PWNvdW50KQorICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTcsIDI2LCBoZWFkZXIsIG1pbl9jb3VudD1jb3VudCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCi0gICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKScpCi0gICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdD1GYWxzZSwgY2FuY2VsPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1GYWxzZSwgdHdpY2U9RmFsc2UpOgotICAgICAgICBpZiB0d2ljZToKLSAgICAgICAgICAgIGxvb3BzID0gMgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9vcHMgPSAxCi0gICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbG9vcHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQsIGNhbmNlbCwgTm9uZSwgbG9vcHMpCi0KICAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcigpCiAKQEAgLTUwMywxNSArNTQ2LDIyIEBACiAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoY2FuY2VsPVRydWUpCiAKICAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9maWxlKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZpbGU9VHJ1ZSkKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX2ZkKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihmZD1mcC5maWxlbm8oKSkKIAogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX3R3aWNlKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHR3aWNlPVRydWUpCisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIobG9vcHM9MikKIAogICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAicmVnaXN0ZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5yZWdpc3RlciIpCiAgICAgZGVmIGNoZWNrX3JlZ2lzdGVyKHNlbGYsIGZpbGVuYW1lPUZhbHNlLCBhbGxfdGhyZWFkcz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcj1GYWxzZSwgY2hhaW49RmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyPUZhbHNlLCBjaGFpbj1GYWxzZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZWdpc3RlciBhIGhhbmRsZXIgZGlzcGxheWluZyB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwuIFJhaXNlIHRoZQogICAgICAgICBzaWduYWwgYW5kIGNoZWNrIHRoZSB3cml0dGVuIHRyYWNlYmFjay4KQEAgLTUyNyw2ICs1NzcsMTMgQEAKICAgICAgICAgICAgIGltcG9ydCBzaWduYWwKICAgICAgICAgICAgIGltcG9ydCBzeXMKIAorICAgICAgICAgICAgYWxsX3RocmVhZHMgPSB7YWxsX3RocmVhZHN9CisgICAgICAgICAgICBzaWdudW0gPSB7c2lnbnVtfQorICAgICAgICAgICAgdW5yZWdpc3RlciA9IHt1bnJlZ2lzdGVyfQorICAgICAgICAgICAgY2hhaW4gPSB7Y2hhaW59CisgICAgICAgICAgICBmaWxlbmFtZSA9IHtmaWxlbmFtZSFyfQorICAgICAgICAgICAgZmQgPSB7ZmR9CisKICAgICAgICAgICAgIGRlZiBmdW5jKHNpZ251bSk6CiAgICAgICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQogCkBAIC01MzQsMTkgKzU5MSwxNiBAQAogICAgICAgICAgICAgICAgIGhhbmRsZXIuY2FsbGVkID0gVHJ1ZQogICAgICAgICAgICAgaGFuZGxlci5jYWxsZWQgPSBGYWxzZQogCi0gICAgICAgICAgICBleGl0Y29kZSA9IDAKLSAgICAgICAgICAgIHNpZ251bSA9IHtzaWdudW19Ci0gICAgICAgICAgICB1bnJlZ2lzdGVyID0ge3VucmVnaXN0ZXJ9Ci0gICAgICAgICAgICBjaGFpbiA9IHtjaGFpbn0KLQotICAgICAgICAgICAgaWYge2hhc19maWxlbmFtZX06Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oe2ZpbGVuYW1lfSwgIndiIikKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAid2IiKQorICAgICAgICAgICAgZWxpZiBmZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlID0gc3lzLnN0ZGVyci5maWxlbm8oKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmaWxlID0gTm9uZQogICAgICAgICAgICAgaWYgY2hhaW46CiAgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCiAgICAgICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBmaWxlPWZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9e2FsbF90aHJlYWRzfSwgY2hhaW49e2NoYWlufSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywgY2hhaW49e2NoYWlufSkKICAgICAgICAgICAgIGlmIHVucmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoc2lnbnVtKQogICAgICAgICAgICAgZnVuYyhzaWdudW0pCkBAIC01NTcsMTcgKzYxMSwxOSBAQAogICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzeXMuc3RkZXJyCiAgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yOiBzaWduYWwgaGFuZGxlciBub3QgY2FsbGVkISIsIGZpbGU9b3V0cHV0KQogICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gMQotICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSAwCisgICAgICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKLSAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAotICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAogICAgICAgICAgICAgYWxsX3RocmVhZHM9YWxsX3RocmVhZHMsCiAgICAgICAgICAgICBzaWdudW09c2lnbnVtLAogICAgICAgICAgICAgdW5yZWdpc3Rlcj11bnJlZ2lzdGVyLAogICAgICAgICAgICAgY2hhaW49Y2hhaW4sCisgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSwKKyAgICAgICAgICAgIGZkPWZkLAogICAgICAgICApCiAgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKICAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCkBAIC01NzYsNyArNjMyLDcgQEAKICAgICAgICAgICAgICAgICByZWdleCA9ICdDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwotICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soNywgMjgsIHJlZ2V4KQorICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTQsIDMyLCByZWdleCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCkBAIC01OTUsNiArNjUxLDEyIEBACiAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGZpbGVuYW1lPWZpbGVuYW1lKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICJzdWJwcm9jZXNzIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzX2ZkcyBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9mZChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoZmQ9ZnAuZmlsZW5vKCkpCisKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl90aHJlYWRzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGFsbF90aHJlYWRzPVRydWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZV9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZV9laW50ci5weQppbmRleCBiNGUxOGNlLi5mMWVmZDI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVfZWludHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlX2VpbnRyLnB5CkBAIC0xMywxNiArMTMsMTYgQEAKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKICMgVGVzdCBpbXBvcnQgYWxsIG9mIHRoZSB0aGluZ3Mgd2UncmUgYWJvdXQgdG8gdHJ5IHRlc3RpbmcgdXAgZnJvbnQuCi1mcm9tIF9pbyBpbXBvcnQgRmlsZUlPCitpbXBvcnQgX2lvCitpbXBvcnQgX3B5aW8KIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICd0ZXN0cyByZXF1aXJlcyBhIHBvc2l4IHN5c3RlbS4nKQotY2xhc3MgVGVzdEZpbGVJT1NpZ25hbEludGVycnVwdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0OgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKIApAQCAtMzgsOCArMzgsOSBAQAogCiAgICAgICAgIHN1YmNsYXNzZXNlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyB0byB0ZXN0IGRpZmZlcmVudCBJTyBvYmplY3RzLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICgnaW1wb3J0IF9pbyA7JwotICAgICAgICAgICAgICAgICdpbmZpbGUgPSBfaW8uRmlsZUlPKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIiknKQorICAgICAgICByZXR1cm4gKCdpbXBvcnQgJXMgYXMgaW8gOycKKyAgICAgICAgICAgICAgICAnaW5maWxlID0gaW8uRmlsZUlPKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIiknICUKKyAgICAgICAgICAgICAgICBzZWxmLm1vZG5hbWUpCiAKICAgICBkZWYgZmFpbF93aXRoX3Byb2Nlc3NfaW5mbyhzZWxmLCB3aHksIHN0ZG91dD1iJycsIHN0ZGVycj1iJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGU9VHJ1ZSk6CkBAIC0xNzksMTEgKzE4MCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9YidoZWxsb1xud29ybGQhXG4nKSkKIAogCitjbGFzcyBDVGVzdEZpbGVJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfaW8nCisKK2NsYXNzIFB5VGVzdEZpbGVJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfcHlpbycKKworCiBjbGFzcyBUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KToKICAgICBkZWYgX2dlbmVyYXRlX2luZmlsZV9zZXR1cF9jb2RlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBpbmZpbGUgPSAuLi4gbGluZSBvZiBjb2RlIHRvIG1ha2UgYSBCdWZmZXJlZFJlYWRlci4iIiIKLSAgICAgICAgcmV0dXJuICgnaW5maWxlID0gb3BlbihzeXMuc3RkaW4uZmlsZW5vKCksICJyYiIpIDsnCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBfaW8gO2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgX2lvLkJ1ZmZlcmVkUmVhZGVyKScpCisgICAgICAgIHJldHVybiAoJ2ltcG9ydCAlcyBhcyBpbyA7aW5maWxlID0gaW8ub3BlbihzeXMuc3RkaW4uZmlsZW5vKCksICJyYiIpIDsnCisgICAgICAgICAgICAgICAgJ2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgaW8uQnVmZmVyZWRSZWFkZXIpJyAlCisgICAgICAgICAgICAgICAgc2VsZi5tb2RuYW1lKQogCiAgICAgZGVmIHRlc3RfcmVhZGFsbChzZWxmKToKICAgICAgICAgIiIiQnVmZmVyZWRSZWFkZXIucmVhZCgpIG11c3QgaGFuZGxlIHNpZ25hbHMgYW5kIG5vdCBsb3NlIGRhdGEuIiIiCkBAIC0xOTMsMTIgKzIwMiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9tZXRob2RfbmFtZT0ncmVhZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1iJ2hlbGxvXG53b3JsZCFcbicpKQogCitjbGFzcyBDVGVzdEJ1ZmZlcmVkSU9TaWduYWxJbnRlcnJ1cHQoVGVzdEJ1ZmZlcmVkSU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19pbycKKworY2xhc3MgUHlUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdChUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX3B5aW8nCisKIAogY2xhc3MgVGVzdFRleHRJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KToKICAgICBkZWYgX2dlbmVyYXRlX2luZmlsZV9zZXR1cF9jb2RlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBpbmZpbGUgPSAuLi4gbGluZSBvZiBjb2RlIHRvIG1ha2UgYSBUZXh0SU9XcmFwcGVyLiIiIgotICAgICAgICByZXR1cm4gKCdpbmZpbGUgPSBvcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJ0IiwgbmV3bGluZT1Ob25lKSA7JwotICAgICAgICAgICAgICAgICdpbXBvcnQgX2lvIDthc3NlcnQgaXNpbnN0YW5jZShpbmZpbGUsIF9pby5UZXh0SU9XcmFwcGVyKScpCisgICAgICAgIHJldHVybiAoJ2ltcG9ydCAlcyBhcyBpbyA7JworICAgICAgICAgICAgICAgICdpbmZpbGUgPSBpby5vcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJ0IiwgbmV3bGluZT1Ob25lKSA7JworICAgICAgICAgICAgICAgICdhc3NlcnQgaXNpbnN0YW5jZShpbmZpbGUsIGlvLlRleHRJT1dyYXBwZXIpJyAlCisgICAgICAgICAgICAgICAgc2VsZi5tb2RuYW1lKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CiAgICAgICAgICIiInJlYWRsaW5lKCkgbXVzdCBoYW5kbGUgc2lnbmFscyBhbmQgbm90IGxvc2UgZGF0YS4iIiIKQEAgLTIyNCwxMyArMjQxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX21ldGhvZF9uYW1lPSdyZWFkJywKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPSJoZWxsb1xud29ybGQhXG4iKSkKIAorY2xhc3MgQ1Rlc3RUZXh0SU9TaWduYWxJbnRlcnJ1cHQoVGVzdFRleHRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX2lvJwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdF9jYXNlcyA9IFsKLSAgICAgICAgICAgIHRjIGZvciB0YyBpbiBnbG9iYWxzKCkudmFsdWVzKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGMsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKHRjLCB1bml0dGVzdC5UZXN0Q2FzZSldCi0gICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2Nhc2VzKQorY2xhc3MgUHlUZXN0VGV4dElPU2lnbmFsSW50ZXJydXB0KFRlc3RUZXh0SU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19weWlvJwogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKaW5kZXggYTRmZDIwZC4uNTljYzM4ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKQEAgLTEyLDEzICsxMiwxNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIHJ1bl91bml0dGVzdCwgbWFrZV9iYWRfZmQsIGNweXRob25fb25seQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKIAotZnJvbSBfaW8gaW1wb3J0IEZpbGVJTyBhcyBfRmlsZUlPCitpbXBvcnQgX2lvICAjIEMgaW1wbGVtZW50YXRpb24gb2YgaW8KK2ltcG9ydCBfcHlpbyAjIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbwogCi1jbGFzcyBBdXRvRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworY2xhc3MgQXV0b0ZpbGVUZXN0czoKICAgICAjIGZpbGUgdGVzdHMgZm9yIHdoaWNoIGEgdGVzdCBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHVwCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZiA9IF9GaWxlSU8oVEVTVEZOLCAndycpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3cnKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmY6CkBAIC02MCwyMCArNjIsNjkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIsIGYsIGF0dHIsICdvb3BzJykKIAotICAgIGRlZiB0ZXN0UmVhZGludG8oc2VsZik6Ci0gICAgICAgICMgdmVyaWZ5IHJlYWRpbnRvCi0gICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMl0pKQorICAgIGRlZiB0ZXN0Qmxrc2l6ZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IHByaXZhdGUgX2Jsa3NpemUgYXR0cmlidXRlCisgICAgICAgIGJsa3NpemUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgICMgdHJ5IHRvIGdldCBwcmVmZXJyZWQgYmxrc2l6ZSBmcm9tIHN0YXQuc3RfYmxrc2l6ZSwgaWYgYXZhaWxhYmxlCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdmc3RhdCcpOgorICAgICAgICAgICAgZnN0ID0gb3MuZnN0YXQoc2VsZi5mLmZpbGVubygpKQorICAgICAgICAgICAgYmxrc2l6ZSA9IGdldGF0dHIoZnN0LCAnc3RfYmxrc2l6ZScsIGJsa3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mLl9ibGtzaXplLCBibGtzaXplKQorCisgICAgIyB2ZXJpZnkgcmVhZGludG8KKyAgICBkZWYgdGVzdFJlYWRpbnRvQnl0ZUFycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmYud3JpdGUoYnl0ZXMoWzEsIDIsIDAsIDI1NV0pKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBhID0gYXJyYXkoJ2InLCBiJ3gnKjEwKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQotICAgICAgICBuID0gc2VsZi5mLnJlYWRpbnRvKGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJyYXkoJ2InLCBbMSwgMl0pLCBhWzpuXSkKKworICAgICAgICBiYSA9IGJ5dGVhcnJheShiJ2FiY2RlZmdoJykKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKGJhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiJ1x4MDFceDAyXHgwMFx4ZmZlZmdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCA0KQorCisgICAgZGVmIF90ZXN0UmVhZGludG9NZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBzZWxmLmYud3JpdGUoYnl0ZXMoWzEsIDIsIDAsIDI1NV0pKQorICAgICAgICBzZWxmLmYuY2xvc2UoKQorCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVhcnJheShiJ2FiY2RlZmdoJykpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZWFycmF5KGInYWJjZGVmZ2gnKSkuY2FzdCgnSCcsIHNoYXBlPVsyLCAyXSkKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMobSksIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICBkZWYgX3Rlc3RSZWFkaW50b0FycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmYud3JpdGUoYnl0ZXMoWzEsIDIsIDAsIDI1NV0pKQorICAgICAgICBzZWxmLmYuY2xvc2UoKQorCisgICAgICAgIGEgPSBhcnJheSgnQicsIGInYWJjZGVmZ2gnKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8oYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBhcnJheSgnQicsIFsxLCAyLCAwLCAyNTUsIDEwMSwgMTAyLCAxMDMsIDEwNF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICAgICAgYSA9IGFycmF5KCdiJywgYidhYmNkZWZnaCcpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGFycmF5KCdiJywgWzEsIDIsIDAsIC0xLCAxMDEsIDEwMiwgMTAzLCAxMDRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCA0KQorCisgICAgICAgIGEgPSBhcnJheSgnSScsIGInYWJjZGVmZ2gnKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8oYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBhcnJheSgnSScsIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCA0KQogCiAgICAgZGVmIHRlc3RXcml0ZWxpbmVzTGlzdChzZWxmKToKICAgICAgICAgbCA9IFtiJzEyMycsIGInNDU2J10KICAgICAgICAgc2VsZi5mLndyaXRlbGluZXMobCkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3JiJykKICAgICAgICAgYnVmID0gc2VsZi5mLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYicxMjM0NTYnKQogCkBAIC04MSw3ICsxMzIsNyBAQAogICAgICAgICBsID0gVXNlckxpc3QoW2InMTIzJywgYic0NTYnXSkKICAgICAgICAgc2VsZi5mLndyaXRlbGluZXMobCkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3JiJykKICAgICAgICAgYnVmID0gc2VsZi5mLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYicxMjM0NTYnKQogCkBAIC05Myw3ICsxNDQsNyBAQAogICAgIGRlZiB0ZXN0X25vbmVfYXJncyhzZWxmKToKICAgICAgICAgc2VsZi5mLndyaXRlKGIiaGlcbmJ5ZVxuYWJjIikKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mLnJlYWQoTm9uZSksIGIiaGlcbmJ5ZVxuYWJjIikKICAgICAgICAgc2VsZi5mLnNlZWsoMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmYucmVhZGxpbmUoTm9uZSksIGIiaGlcbiIpCkBAIC0xMDMsMTMgKzE1NCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi53cml0ZSwgIkhlbGxvISIpCiAKICAgICBkZWYgdGVzdFJlcHIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLCAiPF9pby5GaWxlSU8gbmFtZT0lciBtb2RlPSVyPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmYubmFtZSwgc2VsZi5mLm1vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPCVzLkZpbGVJTyBuYW1lPSVyIG1vZGU9JXIgY2xvc2VmZD1UcnVlPiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm1vZHVsZW5hbWUsIHNlbGYuZi5uYW1lLCBzZWxmLmYubW9kZSkpCiAgICAgICAgIGRlbCBzZWxmLmYubmFtZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwgIjxfaW8uRmlsZUlPIGZkPSVyIG1vZGU9JXI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuZi5maWxlbm8oKSwgc2VsZi5mLm1vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPCVzLkZpbGVJTyBmZD0lciBtb2RlPSVyIGNsb3NlZmQ9VHJ1ZT4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb2R1bGVuYW1lLCBzZWxmLmYuZmlsZW5vKCksIHNlbGYuZi5tb2RlKSkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuZiksICI8X2lvLkZpbGVJTyBbY2xvc2VkXT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPCVzLkZpbGVJTyBbY2xvc2VkXT4iICUgKHNlbGYubW9kdWxlbmFtZSwpKQorCisgICAgZGVmIHRlc3RSZXByTm9DbG9zZUZEKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhmZCwgJ3InLCBjbG9zZWZkPUZhbHNlKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIG5hbWU9JXIgbW9kZT0lciBjbG9zZWZkPUZhbHNlPiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubW9kdWxlbmFtZSwgZi5uYW1lLCBmLm1vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCiAKICAgICBkZWYgdGVzdEVycm9ycyhzZWxmKToKICAgICAgICAgZiA9IHNlbGYuZgpAQCAtMTE5LDcgKzE4Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCwgMTApICMgT3BlbiBmb3IgcmVhZGluZwogICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2xvc2VkKQotICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICdyJykKKyAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZGludG8sICIiKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQogICAgICAgICBmLmNsb3NlKCkKQEAgLTEzOCwxMSArMjAyLDExIEBACiAgICAgICAgICAgICAjIHNob3VsZCByYWlzZSBvbiBjbG9zZWQgZmlsZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi5yZWFkaW50bykgIyBYWFggc2hvdWxkIGJlIFR5cGVFcnJvcj8KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmYucmVhZGludG8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi5yZWFkaW50bywgYnl0ZWFycmF5KDEpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmYuc2VlaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmYuc2VlaykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLnNlZWssIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi53cml0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmYud3JpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi53cml0ZSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi53cml0ZWxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmYud3JpdGVsaW5lcywgYicnKQpAQCAtMTUwLDkgKzIxNCw5IEBACiAgICAgZGVmIHRlc3RPcGVuZGlyKHNlbGYpOgogICAgICAgICAjIElzc3VlIDM3MDM6IG9wZW5pbmcgYSBkaXJlY3Rvcnkgc2hvdWxkIGZpbGwgdGhlIGVycm5vCiAgICAgICAgICMgV2luZG93cyBhbHdheXMgcmV0dXJucyAiW0Vycm5vIDEzXTogUGVybWlzc2lvbiBkZW5pZWQKLSAgICAgICAgIyBVbml4IGNhbGxzIGRpcmNoZWNrKCkgYW5kIHJldHVybnMgIltFcnJubyAyMV06IElzIGEgZGlyZWN0b3J5IgorICAgICAgICAjIFVuaXggdXNlcyBmc3RhdCBhbmQgcmV0dXJucyAiW0Vycm5vIDIxXTogSXMgYSBkaXJlY3RvcnkiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIF9GaWxlSU8oJy4nLCAncicpCisgICAgICAgICAgICBzZWxmLkZpbGVJTygnLicsICdyJykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZS5lcnJubywgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maWxlbmFtZSwgIi4iKQpAQCAtMTYzLDcgKzIyNyw3IEBACiAgICAgZGVmIHRlc3RPcGVuRGlyRkQoc2VsZik6CiAgICAgICAgIGZkID0gb3Mub3BlbignLicsIG9zLk9fUkRPTkxZKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgX0ZpbGVJTyhmZCwgJ3InKQorICAgICAgICAgICAgc2VsZi5GaWxlSU8oZmQsICdyJykKICAgICAgICAgb3MuY2xvc2UoZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSVNESVIpCiAKQEAgLTI0OCw3ICszMTIsNyBAQAogICAgICAgICAgICAgc2VsZi5mLmNsb3NlKCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuZiA9IF9GaWxlSU8oVEVTVEZOLCAncicpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKQogICAgICAgICBvcy5jbG9zZShzZWxmLmYuZmlsZW5vKCkpCiAgICAgICAgIHJldHVybiBzZWxmLmYKIApAQCAtMjY4LDIzICszMzIsMzIgQEAKICAgICAgICAgYSA9IGFycmF5KCdiJywgYid4JyoxMCkKICAgICAgICAgZi5yZWFkaW50byhhKQogCi1jbGFzcyBPdGhlckZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBDQXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX2lvLkZpbGVJTworICAgIG1vZHVsZW5hbWUgPSAnX2lvJworCitjbGFzcyBQeUF1dG9GaWxlVGVzdHMoQXV0b0ZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEZpbGVJTyA9IF9weWlvLkZpbGVJTworICAgIG1vZHVsZW5hbWUgPSAnX3B5aW8nCisKKworY2xhc3MgT3RoZXJGaWxlVGVzdHM6CiAKICAgICBkZWYgdGVzdEFibGVzKHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICJ3IikKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICJ3IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkYWJsZSgpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0YWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWthYmxlKCksIFRydWUpCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAotICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCAiciIpCisgICAgICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAiciIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGFibGUoKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0YWJsZSgpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrYWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgImErIikKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICJhKyIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGFibGUoKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0YWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWthYmxlKCksIFRydWUpCkBAIC0yOTMsNyArMzY2LDcgQEAKIAogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJ3aW4zMiI6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmID0gX0ZpbGVJTygiL2Rldi90dHkiLCAiYSIpCisgICAgICAgICAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTygiL2Rldi90dHkiLCAiYSIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBydW4gaW4gYSBjcm9uIGpvYiB0aGVyZSBqdXN0IGFyZW4ndCBhbnkKICAgICAgICAgICAgICAgICAgICAgIyB0dHlzLCBzbyBza2lwIHRoZSB0ZXN0LiAgVGhpcyBhbHNvIGhhbmRsZXMgb3RoZXIKQEAgLTMxNiw3ICszODksNyBAQAogICAgICAgICAjIGNoZWNrIGludmFsaWQgbW9kZSBzdHJpbmdzCiAgICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIsICJydyIsICJydCIpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgbW9kZSkKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCBtb2RlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKQEAgLTMzMiw3ICs0MDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FiKycsICdhYisnKSwgKCdhK2InLCAnYWIrJyksICgncicsICdyYicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3JiJywgJ3JiJyksICgncmIrJywgJ3JiKycpLCAoJ3IrYicsICdyYisnKV06CiAgICAgICAgICAgICAgICAgIyByZWFkIG1vZGVzIGFyZSBsYXN0IHNvIHRoYXQgVEVTVEZOIHdpbGwgZXhpc3QgZmlyc3QKLSAgICAgICAgICAgICAgICB3aXRoIF9GaWxlSU8oVEVTVEZOLCBtb2Rlc1swXSkgYXMgZjoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgbW9kZXNbMF0pIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5tb2RlLCBtb2Rlc1sxXSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFRFU1RGTik6CkBAIC0zNDAsNyArNDEzLDcgQEAKIAogICAgIGRlZiB0ZXN0VW5pY29kZU9wZW4oc2VsZik6CiAgICAgICAgICMgdmVyaWZ5IHJlcHIgd29ya3MgZm9yIHVuaWNvZGUgdG9vCi0gICAgICAgIGYgPSBfRmlsZUlPKHN0cihURVNURk4pLCAidyIpCisgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhzdHIoVEVTVEZOKSwgInciKQogICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKIApAQCAtMzUwLDcgKzQyMyw3IEBACiAgICAgICAgICAgICBmbiA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvdWxkIG5vdCBlbmNvZGUgJXIgdG8gYXNjaWknICUgVEVTVEZOKQotICAgICAgICBmID0gX0ZpbGVJTyhmbiwgInciKQorICAgICAgICBmID0gc2VsZi5GaWxlSU8oZm4sICJ3IikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZi53cml0ZShiImFiYyIpCiAgICAgICAgICAgICBmLmNsb3NlKCkKQEAgLTM2MSwyOCArNDM0LDIxIEBACiAKICAgICBkZWYgdGVzdENvbnN0cnVjdG9ySGFuZGxlc05VTENoYXJzKHNlbGYpOgogICAgICAgICBmbl93aXRoX05VTCA9ICdmb29cMGJhcicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBmbl93aXRoX05VTCwgJ3cnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLkZpbGVJTywgZm5fd2l0aF9OVUwsICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5GaWxlSU8sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQogCiAgICAgZGVmIHRlc3RJbnZhbGlkRmQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9GaWxlSU8sIC0xMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgX0ZpbGVJTywgbWFrZV9iYWRfZmQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5GaWxlSU8sIC0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5GaWxlSU8sIG1ha2VfYmFkX2ZkKCkpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgaW1wb3J0IG1zdmNydAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbXN2Y3J0LmdldF9vc2ZoYW5kbGUsIG1ha2VfYmFkX2ZkKCkpCiAKLSAgICBAY3B5dGhvbl9vbmx5Ci0gICAgZGVmIHRlc3RJbnZhbGlkRmRfb3ZlcmZsb3coc2VsZik6Ci0gICAgICAgICMgSXNzdWUgMTU5ODkKLSAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBfdGVzdGNhcGkuSU5UX01JTiAtIDEpCi0KICAgICBkZWYgdGVzdEJhZE1vZGVBcmd1bWVudChzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgdGhhdCB3ZSBnZXQgYSBzZW5zaWJsZSBlcnJvciBtZXNzYWdlIGZvciBiYWQgbW9kZSBhcmd1bWVudAogICAgICAgICBiYWRfbW9kZSA9ICJxd2VydHkiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgYmFkX21vZGUpCisgICAgICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCBiYWRfbW9kZSkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgaWYgbXNnLmFyZ3NbMF0gIT0gMDoKICAgICAgICAgICAgICAgICBzID0gc3RyKG1zZykKQEAgLTM5NSw3ICs0NjEsNyBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBlcnJvciBmb3IgaW52YWxpZCBtb2RlOiAlcyIgJSBiYWRfbW9kZSkKIAogICAgIGRlZiB0ZXN0VHJ1bmNhdGUoc2VsZik6Ci0gICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgJ3cnKQorICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAndycpCiAgICAgICAgIGYud3JpdGUoYnl0ZXMoYnl0ZWFycmF5KHJhbmdlKDEwKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAxMCkKICAgICAgICAgZi50cnVuY2F0ZSg1KQpAQCAtNDEwLDExICs0NzYsMTEgQEAKICAgICAgICAgZGVmIGJ1ZzgwMTYzMSgpOgogICAgICAgICAgICAgIyBTRiBidWcgPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9zZi84MDE2MzE+CiAgICAgICAgICAgICAjICJmaWxlLnRydW5jYXRlIGZhdWx0IG9uIHdpbmRvd3MiCi0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICd3JykKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICd3JykKICAgICAgICAgICAgIGYud3JpdGUoYnl0ZXMocmFuZ2UoMTEpKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCi0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sJ3IrJykKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sJ3IrJykKICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoNSkKICAgICAgICAgICAgIGlmIGRhdGEgIT0gYnl0ZXMocmFuZ2UoNSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVhZCBvbiBmaWxlIG9wZW5lZCBmb3IgdXBkYXRlIGZhaWxlZCAlciIgJSBkYXRhKQpAQCAtNDU0LDE5ICs1MjAsMTkgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdEludmFsaWRJbml0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sICIxIiwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkZpbGVJTywgIjEiLCAwLCAwKQogCiAgICAgZGVmIHRlc3RXYXJuaW5ncyhzZWxmKToKICAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncyhxdWlldD1UcnVlKSBhcyB3OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuRmlsZUlPLCBbXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53YXJuaW5ncywgW10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfRmlsZUlPLCAiL3NvbWUvaW52YWxpZC9uYW1lIiwgInJ0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuRmlsZUlPLCAiL3NvbWUvaW52YWxpZC9uYW1lIiwgInJ0IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53YXJuaW5ncywgW10pCiAKICAgICBkZWYgdGVzdFVuY2xvc2VkRkRPbkV4Y2VwdGlvbihzZWxmKToKICAgICAgICAgY2xhc3MgTXlFeGNlcHRpb24oRXhjZXB0aW9uKTogcGFzcwotICAgICAgICBjbGFzcyBNeUZpbGVJTyhfRmlsZUlPKToKKyAgICAgICAgY2xhc3MgTXlGaWxlSU8oc2VsZi5GaWxlSU8pOgogICAgICAgICAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAgICAgICAgICBpZiBuYW1lID09ICJuYW1lIjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgTXlFeGNlcHRpb24oImJsb2NrZWQgc2V0dGluZyBuYW1lIikKQEAgLTQ3NSwxMiArNTQxLDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXhjZXB0aW9uLCBNeUZpbGVJTywgZmQpCiAgICAgICAgIG9zLmNsb3NlKGZkKSAgIyBzaG91bGQgbm90IHJhaXNlIE9TRXJyb3IoRUJBREYpCiAKK2NsYXNzIENPdGhlckZpbGVUZXN0cyhPdGhlckZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEZpbGVJTyA9IF9pby5GaWxlSU8KKyAgICBtb2R1bGVuYW1lID0gJ19pbycKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdEludmFsaWRGZF9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNTk4OQorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkZpbGVJTywgX3Rlc3RjYXBpLklOVF9NSU4gLSAxKQorCitjbGFzcyBQeU90aGVyRmlsZVRlc3RzKE90aGVyRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX3B5aW8uRmlsZUlPCisgICAgbW9kdWxlbmFtZSA9ICdfcHlpbycKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBIaXN0b3JpY2FsbHksIHRoZXNlIHRlc3RzIGhhdmUgYmVlbiBzbG9wcHkgYWJvdXQgcmVtb3ZpbmcgVEVTVEZOLgogICAgICMgU28gZ2V0IHJpZCBvZiBpdCBubyBtYXR0ZXIgd2hhdC4KICAgICB0cnk6Ci0gICAgICAgIHJ1bl91bml0dGVzdChBdXRvRmlsZVRlc3RzLCBPdGhlckZpbGVUZXN0cykKKyAgICAgICAgcnVuX3VuaXR0ZXN0KENBdXRvRmlsZVRlc3RzLCBQeUF1dG9GaWxlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICBDT3RoZXJGaWxlVGVzdHMsIFB5T3RoZXJGaWxlVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKICAgICAgICAgICAgIG9zLnVubGluayhURVNURk4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbmFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5CmluZGV4IDAzYWMxYWEuLjM1ZDc5MTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5CkBAIC01MTUsOCArNTE1LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggZTg3YWFiMC4uNDI1MTA5MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC03NzMsNiArNzczLDE0IEBACiAgICAgICAgICAgICB0ZXN0KHNmbXQsIE5BTiwgJyBuYW4nKQogICAgICAgICAgICAgdGVzdChzZm10LCAtTkFOLCAnIG5hbicpCiAKKyAgICBkZWYgdGVzdF9Ob25lX25kaWdpdHMoc2VsZik6CisgICAgICAgIGZvciB4IGluIHJvdW5kKDEuMjMpLCByb3VuZCgxLjIzLCBOb25lKSwgcm91bmQoMS4yMywgbmRpZ2l0cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBpbnQpCisgICAgICAgIGZvciB4IGluIHJvdW5kKDEuNzgpLCByb3VuZCgxLjc4LCBOb25lKSwgcm91bmQoMS43OCwgbmRpZ2l0cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBpbnQpCisKIAogIyBCZWdpbm5pbmcgd2l0aCBQeXRob24gMi42IGZsb2F0IGhhcyBjcm9zcyBwbGF0Zm9ybSBjb21wYXRpYmxlCiAjIHdheXMgdG8gY3JlYXRlIGFuZCByZXByZXNlbnQgaW5mIGFuZCBuYW4KQEAgLTEyOTksMTggKzEzMDcsNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuaWRlbnRpY2FsKHgsIGZyb21IZXgodG9IZXgoeCkpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgR2VuZXJhbEZsb2F0Q2FzZXMsCi0gICAgICAgIEZvcm1hdEZ1bmN0aW9uc1Rlc3RDYXNlLAotICAgICAgICBVbmtub3duRm9ybWF0VGVzdENhc2UsCi0gICAgICAgIElFRUVGb3JtYXRUZXN0Q2FzZSwKLSAgICAgICAgRm9ybWF0VGVzdENhc2UsCi0gICAgICAgIFJlcHJUZXN0Q2FzZSwKLSAgICAgICAgUm91bmRUZXN0Q2FzZSwKLSAgICAgICAgSW5mTmFuVGVzdCwKLSAgICAgICAgSGV4RmxvYXRUZXN0Q2FzZSwKLSAgICAgICAgKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZsdWZsLnB5IGIvTGliL3Rlc3QvdGVzdF9mbHVmbC5weQppbmRleCA1YTcwOWJjLi45OGI1YmQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZsdWZsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmx1ZmwucHkKQEAgLTE4LDEwICsxOCw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGTFVGTCB0ZXN0PicsICdleGVjJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChGTFVGTFRlc3RzKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weSBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQppbmRleCA0ODI4MzVkLi5mYTM3ZjkwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBjYXNlcyBmb3IgdGhlIGZubWF0Y2ggbW9kdWxlLiIiIgogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gsIGZubWF0Y2hjYXNlLCB0cmFuc2xhdGUsIGZpbHRlcgpAQCAtNzksMTEgKzc4LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWydhJywgJ2InXSwgJ2EnKSwgWydhJ10pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZubWF0Y2hUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5IGIvTGliL3Rlc3QvdGVzdF9mb3JrMS5weQppbmRleCBlMDYyNmRmLi5lZWJhMzA2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkKQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgdGltZQogCiBmcm9tIHRlc3QuZm9ya193YWl0IGltcG9ydCBGb3JrV2FpdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUsCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydF9tb2R1bGUsIHZlcmJvc2UpCiAKIHRocmVhZGluZyA9IGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCkBAIC0xOCwxMyArMTgsMTQgQEAKIAogY2xhc3MgRm9ya1Rlc3QoRm9ya1dhaXQpOgogICAgIGRlZiB3YWl0X2ltcGwoc2VsZiwgY3BpZCk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgMTAuMAorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDw9IGRlYWRsaW5lOgogICAgICAgICAgICAgIyB3YWl0cGlkKCkgc2hvdWxkbid0IGhhbmcsIGJ1dCBzb21lIG9mIHRoZSBidWlsZGJvdHMgc2VlbSB0byBoYW5nCiAgICAgICAgICAgICAjIGluIHRoZSBmb3JraW5nIHRlc3RzLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbS4KICAgICAgICAgICAgIHNwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoY3BpZCwgb3MuV05PSEFORykKICAgICAgICAgICAgIGlmIHNwaWQgPT0gY3BpZDoKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKQEAgLTEwMyw5ICsxMDQsOCBAQAogICAgICAgICAgICAgZm9ya193aXRoX2ltcG9ydF9sb2NrKGxldmVsKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRm9ya1Rlc3QpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKICAgICByZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQppbmRleCBmYzcxZTQ4Li45YjEzNjMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQpAQCAtOSw3ICs5LDcgQEAKICMgdGVzdCBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRvciAoSSBhbSBub3Qgc3VyZSBpZiB0aGlzIGlzIGJlaW5nIHRlc3RlZAogIyBlbHNld2hlcmUgYnV0LCBzdXJlbHksIHNvbWUgb2YgdGhlIGdpdmVuIGNhc2VzIGFyZSAqbm90KiB0ZXN0ZWQgYmVjYXVzZQogIyB0aGV5IGNyYXNoIHB5dGhvbikKLSMgdGVzdCBvbiB1bmljb2RlIHN0cmluZ3MgYXMgd2VsbAorIyB0ZXN0IG9uIGJ5dGVzIG9iamVjdCBhcyB3ZWxsCiAKIGRlZiB0ZXN0Zm9ybWF0KGZvcm1hdHN0ciwgYXJncywgb3V0cHV0PU5vbmUsIGxpbWl0PU5vbmUsIG92ZXJmbG93b2s9RmFsc2UpOgogICAgIGlmIHZlcmJvc2U6CkBAIC00NiwxOTEgKzQ2LDIwOSBAQAogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgneWVzJykKIAorZGVmIHRlc3Rjb21tb24oZm9ybWF0c3RyLCBhcmdzLCBvdXRwdXQ9Tm9uZSwgbGltaXQ9Tm9uZSwgb3ZlcmZsb3dvaz1GYWxzZSk6CisgICAgIyBpZiBmb3JtYXRzdHIgaXMgYSBzdHIsIHRlc3Qgc3RyLCBieXRlcywgYW5kIGJ5dGVhcnJheTsKKyAgICAjIG90aGVyd2lzZSwgdGVzdCBieXRlcyBhbmQgYnl0ZWFycnkKKyAgICBpZiBpc2luc3RhbmNlKGZvcm1hdHN0ciwgc3RyKToKKyAgICAgICAgdGVzdGZvcm1hdChmb3JtYXRzdHIsIGFyZ3MsIG91dHB1dCwgbGltaXQsIG92ZXJmbG93b2spCisgICAgICAgIGJfZm9ybWF0ID0gZm9ybWF0c3RyLmVuY29kZSgnYXNjaWknKQorICAgIGVsc2U6CisgICAgICAgIGJfZm9ybWF0ID0gZm9ybWF0c3RyCisgICAgYmFfZm9ybWF0ID0gYnl0ZWFycmF5KGJfZm9ybWF0KQorICAgIGJfYXJncyA9IFtdCisgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpOgorICAgICAgICBhcmdzID0gKGFyZ3MsICkKKyAgICBiX2FyZ3MgPSB0dXBsZShhcmdzKQorICAgIGlmIG91dHB1dCBpcyBOb25lOgorICAgICAgICBiX291dHB1dCA9IGJhX291dHB1dCA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICBpZiBpc2luc3RhbmNlKG91dHB1dCwgc3RyKToKKyAgICAgICAgICAgIGJfb3V0cHV0ID0gb3V0cHV0LmVuY29kZSgnYXNjaWknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYl9vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgYmFfb3V0cHV0ID0gYnl0ZWFycmF5KGJfb3V0cHV0KQorICAgIHRlc3Rmb3JtYXQoYl9mb3JtYXQsIGJfYXJncywgYl9vdXRwdXQsIGxpbWl0LCBvdmVyZmxvd29rKQorICAgIHRlc3Rmb3JtYXQoYmFfZm9ybWF0LCBiX2FyZ3MsIGJhX291dHB1dCwgbGltaXQsIG92ZXJmbG93b2spCisKIAogY2xhc3MgRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjFkIiwgKDEsKSwgIjEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLipkIiwgKHN5cy5tYXhzaXplLDEpLCBvdmVyZmxvd29rPVRydWUpICAjIGV4cGVjdCBvdmVyZmxvdwotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjEwMGQiLCAoMSwpLCAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCisKKyAgICBkZWYgdGVzdF9jb21tb25fZm9ybWF0KHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCBpZGVudGlmaWVycyB0aGF0IHdvcmsgdGhlIHNhbWUgYWNyb3NzCisgICAgICAgICMgc3RyLCBieXRlcywgYW5kIGJ5dGVhcnJheXMgKGludGVnZXIsIGZsb2F0LCBvY3QsIGhleCkKKyAgICAgICAgdGVzdGNvbW1vbigiJS4xZCIsICgxLCksICIxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4qZCIsIChzeXMubWF4c2l6ZSwxKSwgb3ZlcmZsb3dvaz1UcnVlKSAgIyBleHBlY3Qgb3ZlcmZsb3cKKyAgICAgICAgdGVzdGNvbW1vbigiJS4xMDBkIiwgKDEsKSwgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDEnLCBvdmVyZmxvd29rPVRydWUpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLjExN3giLCAoMSwpLCAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMTE3eCIsICgxLCksICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCiAgICAgICAgICAgICAgICAgIG92ZXJmbG93b2s9VHJ1ZSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMTE4eCIsICgxLCksICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJworICAgICAgICB0ZXN0Y29tbW9uKCIlIy4xMTh4IiwgKDEsKSwgJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCiAgICAgICAgICAgICAgICAgIG92ZXJmbG93b2s9VHJ1ZSkKIAotICAgICAgICB0ZXN0Zm9ybWF0KCIlZiIsICgxLjAsKSwgIjEuMDAwMDAwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWYiLCAoMS4wLCksICIxLjAwMDAwMCIpCiAgICAgICAgICMgdGhlc2UgYXJlIHRyeWluZyB0byB0ZXN0IHRoZSBsaW1pdHMgb2YgdGhlIGludGVybmFsIG1hZ2ljLW51bWJlci1sZW5ndGgKICAgICAgICAgIyBmb3JtYXR0aW5nIGJ1ZmZlciwgaWYgdGhhdCBudW1iZXIgY2hhbmdlcyB0aGVuIHRoZXNlIHRlc3RzIGFyZSBsZXNzCiAgICAgICAgICMgZWZmZWN0aXZlCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipnIiwgKDEwOSwgLTEuZSs0OS8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipnIiwgKDExMCwgLTEuZSs0OS8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipnIiwgKDExMCwgLTEuZSsxMDAvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZyIsICgxMDksIC0xLmUrNDkvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZyIsICgxMTAsIC0xLmUrNDkvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZyIsICgxMTAsIC0xLmUrMTAwLzMuKSkKICAgICAgICAgIyB0ZXN0IHNvbWUgcmlkaWN1bG91c2x5IGxhcmdlIHByZWNpc2lvbiwgZXhwZWN0IG92ZXJmbG93Ci0gICAgICAgIHRlc3Rmb3JtYXQoJyUxMi4qZicsICgxMjM0NTYsIDEuMCkpCisgICAgICAgIHRlc3Rjb21tb24oJyUxMi4qZicsICgxMjM0NTYsIDEuMCkpCiAKICAgICAgICAgIyBjaGVjayBmb3IgaW50ZXJuYWwgb3ZlcmZsb3cgdmFsaWRhdGlvbiBvbiBsZW5ndGggb2YgcHJlY2lzaW9uCiAgICAgICAgICMgdGhlc2UgdGVzdHMgc2hvdWxkIG5vIGxvbmdlciBjYXVzZSBvdmVyZmxvdyBpbiBQeXRob24KICAgICAgICAgIyAyLjcvMy4xIGFuZCBsYXRlci4KLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTEwLCAtMS5lKzEwMC8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipHIiwgKDExMCwgLTEuZSsxMDAvMy4pKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4qZiIsICgxMTAsIC0xLmUrMTAwLzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKkYiLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDExMCwgLTEuZSsxMDAvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qRyIsICgxMTAsIC0xLmUrMTAwLzMuKSkKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuKmYiLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipGIiwgKDExMCwgLTEuZSsxMDAvMy4pKQogICAgICAgICAjIEZvcm1hdHRpbmcgb2YgaW50ZWdlcnMuIE92ZXJmbG93IGlzIG5vdCBvawotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIDEwLCAiYSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMTAwMDAwMDAwMDAwLCAiMTc0ODc2ZTgwMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgMTAsICIxMiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgMTAwMDAwMDAwMDAwLCAiMTM1MTAzNTU2NDAwMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMTAsICIxMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMTAwMDAwMDAwMDAwLCAiMTAwMDAwMDAwMDAwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAxMCwgImEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDEwMDAwMDAwMDAwMCwgIjE3NDg3NmU4MDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDEwLCAiMTIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDEwMDAwMDAwMDAwMCwgIjEzNTEwMzU1NjQwMDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDEwLCAiMTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDEwMDAwMDAwMDAwMCwgIjEwMDAwMDAwMDAwMCIpCiAgICAgICAgIGJpZyA9IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MAotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlNWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzMWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzMmQiLCAtYmlnLCAiIC0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTMyZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzJkIiwgLWJpZywgIi0wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0wMzJkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzNGQiLCAtYmlnLCAiLTAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzRkIiwgYmlnLCAiMDAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwKzM0ZCIsIGJpZywgIiswMDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlKzM0ZCIsIGJpZywgIiAgICsxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMzRkIiwgYmlnLCAiICAgIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMmQiLCBiaWcsICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjMwZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzFkIiwgYmlnLCAiMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzMi4zMWQiLCBiaWcsICIgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgZmxvYXQoYmlnKSwgIjEyMzQ1Nl9fX19fX19fX19fX19fX19fX19fX19fXyIsIDYpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiU1ZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMxZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMyZCIsIC1iaWcsICIgLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMzJkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzMmQiLCAtYmlnLCAiLTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTAzMmQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM0ZCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNGQiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTArMzRkIiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUrMzRkIiwgYmlnLCAiICAgKzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNGQiLCBiaWcsICIgICAgMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4yZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMzBkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zMWQiLCBiaWcsICIwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMyLjMxZCIsIGJpZywgIiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCBmbG9hdChiaWcpLCAiMTIzNDU2X19fX19fX19fX19fX19fX19fX19fX19fIiwgNikKICAgICAgICAgYmlnID0gMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUgICMgMjEgaGV4IGRpZ2l0cwotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlNXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyMngiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyM3giLCAtYmlnLCAiIC0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTIzeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMjN4IiwgLWJpZywgIi0wMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0wMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAyNXgiLCAtYmlnLCAiLTAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMjV4IiwgYmlnLCAiMDAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwKzI1eCIsIGJpZywgIiswMDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlKzI1eCIsIGJpZywgIiAgICsxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMjV4IiwgYmlnLCAiICAgIDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMngiLCBiaWcsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjIxeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyMy4yMngiLCBiaWcsICIgMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMjMuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlWCIsIGJpZywgIjEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjWCIsIGJpZywgIjBYMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgYmlnLCAiMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCAtYmlnLCAiLTB4MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMjN4IiwgLWJpZywgIi0weDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrLjIzeCIsIGJpZywgIisweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMgLjIzeCIsIGJpZywgIiAweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSsyNi4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSsyNy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysyNy4yM1giLCBiaWcsICIgKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlNXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyMngiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyM3giLCAtYmlnLCAiIC0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTIzeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMjN4IiwgLWJpZywgIi0wMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0wMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAyNXgiLCAtYmlnLCAiLTAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMjV4IiwgYmlnLCAiMDAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwKzI1eCIsIGJpZywgIiswMDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlKzI1eCIsIGJpZywgIiAgICsxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMjV4IiwgYmlnLCAiICAgIDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMngiLCBiaWcsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjIxeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyMy4yMngiLCBiaWcsICIgMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMjMuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlWCIsIGJpZywgIjEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIGJpZywgIjBYMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSN4IiwgYmlnLCAiMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAtYmlnLCAiLTB4MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMjN4IiwgLWJpZywgIi0weDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrLjIzeCIsIGJpZywgIisweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMgLjIzeCIsIGJpZywgIiAweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMtKy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSsyNi4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSsyNy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysyNy4yM1giLCBiaWcsICIgKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQogICAgICAgICAjIG5leHQgb25lIGdldHMgdHdvIGxlYWRpbmcgemVyb2VzIGZyb20gcHJlY2lzaW9uLCBhbmQgYW5vdGhlciBmcm9tIHRoZQogICAgICAgICAjIDAgZmxhZyBhbmQgdGhlIHdpZHRoCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKzAyNy4yM1giLCBiaWcsICIrMFgwMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIyswMjcuMjNYIiwgYmlnLCAiKzBYMDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKICAgICAgICAgIyBzYW1lLCBleGNlcHQgbm8gMCBmbGFnCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKzI3LjIzWCIsIGJpZywgIiArMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCBmbG9hdChiaWcpLCAiMTIzNDU2X19fX19fX19fX19fX19fIiwgNikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrMjcuMjNYIiwgYmlnLCAiICswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKICAgICAgICAgYmlnID0gMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAgIyAzMiBvY3RhbCBkaWdpdHMKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiU1byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMzNvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzNG8iLCAtYmlnLCAiIC0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM0byIsIC1iaWcsICItMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0wMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM2byIsIC1iaWcsICItMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM2byIsIGJpZywgIjAwMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwKzM2byIsIGJpZywgIiswMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUrMzZvIiwgYmlnLCAiICAgKzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTM2byIsIGJpZywgIiAgICAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMm8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzJvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzNC4zM28iLCBiaWcsICIgMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0zNC4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIGJpZywgIjBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI28iLCAtYmlnLCAiLTBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4zNG8iLCAtYmlnLCAiLTBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMgLjM0byIsIGJpZywgIiAwbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSsuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSszNy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrMzcuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlNW8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMzbyIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzRvIiwgLWJpZywgIiAtMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTM0byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNG8iLCAtYmlnLCAiLTAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMDM0byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNm8iLCAtYmlnLCAiLTAwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNm8iLCBiaWcsICIwMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMCszNm8iLCBiaWcsICIrMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlKzM2byIsIGJpZywgIiAgICsxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNm8iLCBiaWcsICIgICAgMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjJvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjMybyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzQuMzNvIiwgYmlnLCAiIDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMzQuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCBiaWcsICIwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgLWJpZywgIi0wbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMzRvIiwgLWJpZywgIi0wbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjIC4zNG8iLCBiaWcsICIgMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrLjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy0rLjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy0rMzcuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKzM3LjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQogICAgICAgICAjIG5leHQgb25lIGdldHMgb25lIGxlYWRpbmcgemVybyBmcm9tIHByZWNpc2lvbgotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBiYXNlIG1hcmtlciBzaG91bGRuJ3QgY2hhbmdlIHRoYXQsIHNpbmNlICIwIiBpcyByZWR1bmRhbnQKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMzNvIiwgYmlnLCAiMG8wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4zM28iLCBiaWcsICIwbzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgYnV0IHJlZHVjZSBwcmVjaXNpb24sIGFuZCBiYXNlIG1hcmtlciBzaG91bGQgYWRkIGEgemVybwotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4zMm8iLCBiaWcsICIwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMzJvIiwgYmlnLCAiMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgb25lIGxlYWRpbmcgemVybyBmcm9tIHByZWNpc2lvbiwgYW5kIGFub3RoZXIgZnJvbSAiMCIgZmxhZyAmIHdpZHRoCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzQuMzNvIiwgYmlnLCAiMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMzQuMzNvIiwgYmlnLCAiMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgYmFzZSBtYXJrZXIgc2hvdWxkbid0IGNoYW5nZSB0aGF0Ci0gICAgICAgIHRlc3Rmb3JtYXQoIiUwIzM0LjMzbyIsIGJpZywgIjBvMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGZsb2F0KGJpZyksICIxMjM0NTZfX19fX19fX19fX19fX19fX19fX19fX19fXyIsIDYpCisgICAgICAgIHRlc3Rjb21tb24oIiUwIzM0LjMzbyIsIGJpZywgIjBvMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBTb21lIHNtYWxsIGludHMsIGluIGJvdGggUHl0aG9uIGludCBhbmQgZmxhdm9ycykuCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgNDIsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgLTQyLCAiLTQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCA0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAtNDIsICItNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIDQyLjAsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDEsICIweDEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCAxLCAiMHgxIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgMSwgIjBYMSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjWCIsIDEsICIwWDEiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDEuMCwgIjB4MSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIDEsICIwbzEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI28iLCAxLCAiMG8xIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgMCwgIjBvMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIDAsICIwbzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDAsICIwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAwLCAiMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMCwgIjAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIDAsICIwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMCwgIjB4MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDAsICIweDAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI1giLCAwLCAiMFgwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgMCwgIjBYMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMHg0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAtMHg0MiwgIi00MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMHg0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAtMHg0MiwgIi00MiIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCBmbG9hdCgweDQyKSwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAwbzQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIC0wbzQyLCAiLTQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAwbzQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIC0wbzQyLCAiLTQyIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGZsb2F0KDBvNDIpLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIC00MiwgIi00MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgLTQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCA0Mi4wLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAxLCAiMHgxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSN4IiwgMSwgIjB4MSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDEsICIwWDEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI1giLCAxLCAiMFgxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgMSwgIjBvMSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjbyIsIDEsICIwbzEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAwLCAiMG8wIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgMCwgIjBvMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMCwgIjAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDAsICIwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAwLCAiMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgMCwgIjAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAwLCAiMHgwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSN4IiwgMCwgIjB4MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDAsICIwWDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI1giLCAwLCAiMFgwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAweDQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIC0weDQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAweDQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIC0weDQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCAwbzQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIC0wbzQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCAwbzQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIC0wbzQyLCAiLTQyIikKKyAgICAgICAgIyBhbHRlcm5hdGUgZmxvYXQgZm9ybWF0dGluZworICAgICAgICB0ZXN0Y29tbW9uKCclZycsIDEuMSwgJzEuMScpCisgICAgICAgIHRlc3Rjb21tb24oJyUjZycsIDEuMSwgJzEuMTAwMDAnKQorCisgICAgZGVmIHRlc3Rfc3RyX2Zvcm1hdChzZWxmKToKICAgICAgICAgdGVzdGZvcm1hdCgiJXIiLCAiXHUwMzc4IiwgIidcXHUwMzc4JyIpICAjIG5vbiBwcmludGFibGUKICAgICAgICAgdGVzdGZvcm1hdCgiJWEiLCAiXHUwMzc4IiwgIidcXHUwMzc4JyIpICAjIG5vbiBwcmludGFibGUKICAgICAgICAgdGVzdGZvcm1hdCgiJXIiLCAiXHUwMzc0IiwgIidcdTAzNzQnIikgICAjIHByaW50YWJsZQogICAgICAgICB0ZXN0Zm9ybWF0KCIlYSIsICJcdTAzNzQiLCAiJ1xcdTAzNzQnIikgICMgcHJpbnRhYmxlCiAKLSAgICAgICAgIyBhbHRlcm5hdGUgZmxvYXQgZm9ybWF0dGluZwotICAgICAgICB0ZXN0Zm9ybWF0KCclZycsIDEuMSwgJzEuMScpCi0gICAgICAgIHRlc3Rmb3JtYXQoJyUjZycsIDEuMSwgJzEuMTAwMDAnKQotCi0gICAgICAgICMgVGVzdCBleGNlcHRpb24gZm9yIHVua25vd24gZm9ybWF0IGNoYXJhY3RlcnMKKyAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbiBmb3IgdW5rbm93biBmb3JtYXQgY2hhcmFjdGVycywgZXRjLgogICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgZXhjZXB0aW9ucycpCiAgICAgICAgIGRlZiB0ZXN0X2V4Yyhmb3JtYXRzdHIsIGFyZ3MsIGV4Y2VwdGlvbiwgZXhjbXNnKToKQEAgLTI1NCwxMSArMjcyLDEwOCBAQAogICAgICAgICAjdGVzdF9leGModW5pY29kZSgnYWJjICVcdTMwMDAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMSwgVmFsdWVFcnJvciwKICAgICAgICAgIyAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICc/JyAoMHgzMDAwKSBhdCBpbmRleCA1IikKICAgICAgICAgdGVzdF9leGMoJyVkJywgJzEnLCBUeXBlRXJyb3IsICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKKyAgICAgICAgdGVzdF9leGMoJyV4JywgJzEnLCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YygnJXgnLCAzLjE0LCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCiAgICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpCiAgICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQotICAgICAgICB0ZXN0X2V4Yygnbm8gZm9ybWF0JywgJzEnLCBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgLTEsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCisgICAgICAgIHRlc3RfZXhjKCclYycsIHN5cy5tYXh1bmljb2RlKzEsIE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCisgICAgICAgICN0ZXN0X2V4YygnJWMnLCAyKioxMjgsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCisgICAgICAgIHRlc3RfZXhjKCclYycsIDMuMTQsIFR5cGVFcnJvciwgIiVjIHJlcXVpcmVzIGludCBvciBjaGFyIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgJ2FiJywgVHlwZUVycm9yLCAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKQorICAgICAgICB0ZXN0X2V4YygnJWMnLCBiJ3gnLCBUeXBlRXJyb3IsICIlYyByZXF1aXJlcyBpbnQgb3IgY2hhciIpCisKKyAgICAgICAgaWYgbWF4c2l6ZSA9PSAyKiozMS0xOgorICAgICAgICAgICAgIyBjcmFzaGVzIDIuMi4xIGFuZCBlYXJsaWVyOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICIlKmQiJShtYXhzaXplLCAtMTI3KQorICAgICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgnIiUqZCIlKG1heHNpemUsIC0xMjcpIHNob3VsZCBmYWlsJykKKworICAgIGRlZiB0ZXN0X2J5dGVzX2FuZF9ieXRlYXJyYXlfZm9ybWF0KHNlbGYpOgorICAgICAgICAjICVjIHdpbGwgaW5zZXJ0IGEgc2luZ2xlIGJ5dGUsIGVpdGhlciBmcm9tIGFuIGludCBpbiByYW5nZSgyNTYpLCBvcgorICAgICAgICAjIGZyb20gYSBieXRlcyBhcmd1bWVudCBvZiBsZW5ndGggMSwgbm90IGZyb20gYSBzdHIuCisgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIDcsIGIiXHgwNyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGIiWiIsIGIiWiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGJ5dGVhcnJheShiIloiKSwgYiJaIikKKyAgICAgICAgIyAlYiB3aWxsIGluc2VydCBhIHNlcmllcyBvZiBieXRlcywgZWl0aGVyIGZyb20gYSB0eXBlIHRoYXQgc3VwcG9ydHMKKyAgICAgICAgIyB0aGUgUHlfYnVmZmVyIHByb3RvY29sLCBvciBzb21ldGhpbmcgdGhhdCBoYXMgYSBfX2J5dGVzX18gbWV0aG9kCisgICAgICAgIGNsYXNzIEZha2VCeXRlcyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicxMjMnCisgICAgICAgIGZiID0gRmFrZUJ5dGVzKCkKKyAgICAgICAgdGVzdGNvbW1vbihiIiViIiwgYiJhYmMiLCBiImFiYyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYiIsIGJ5dGVhcnJheShiImRlZiIpLCBiImRlZiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYiIsIGZiLCBiIjEyMyIpCisgICAgICAgICMgIyAlcyBpcyBhbiBhbGlhcyBmb3IgJWIgLS0gc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgUHkyLzMgY29kZQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXMiLCBiImFiYyIsIGIiYWJjIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVzIiwgYnl0ZWFycmF5KGIiZGVmIiksIGIiZGVmIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVzIiwgZmIsIGIiMTIzIikKKyAgICAgICAgIyAlYSB3aWxsIGdpdmUgdGhlIGVxdWl2YWxlbnQgb2YKKyAgICAgICAgIyByZXByKHNvbWVfb2JqKS5lbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCAzLjE0LCBiIjMuMTQiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCBiImdoaSIsIGIiYidnaGknIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVhIiwgImprbCIsIGIiJ2prbCciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCAiXHUwNTQ0IiwgYiInXFx1MDU0NCciKQorICAgICAgICAjICVyIGlzIGFuIGFsaWFzIGZvciAlYQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCAzLjE0LCBiIjMuMTQiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCBiImdoaSIsIGIiYidnaGknIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVyIiwgImprbCIsIGIiJ2prbCciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCAiXHUwNTQ0IiwgYiInXFx1MDU0NCciKQorCisgICAgICAgICMgVGVzdCBleGNlcHRpb24gZm9yIHVua25vd24gZm9ybWF0IGNoYXJhY3RlcnMsIGV0Yy4KKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCdUZXN0aW5nIGV4Y2VwdGlvbnMnKQorICAgICAgICBkZWYgdGVzdF9leGMoZm9ybWF0c3RyLCBhcmdzLCBleGNlcHRpb24sIGV4Y21zZyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdGZvcm1hdChmb3JtYXRzdHIsIGFyZ3MpCisgICAgICAgICAgICBleGNlcHQgZXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBpZiBzdHIoZXhjKSA9PSBleGNtc2c6CisgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgieWVzIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgnbm8nKQorICAgICAgICAgICAgICAgICAgICBwcmludCgnVW5leHBlY3RlZCAnLCBleGNlcHRpb24sICc6JywgcmVwcihzdHIoZXhjKSkpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoJ25vJykKKyAgICAgICAgICAgICAgICBwcmludCgnVW5leHBlY3RlZCBleGNlcHRpb24nKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoJ2RpZCBub3QgZ2V0IGV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZXhjbXNnKQorICAgICAgICB0ZXN0X2V4YyhiJyVkJywgJzEnLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YyhiJyVkJywgYicxJywgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3QgYnl0ZXMiKQorICAgICAgICB0ZXN0X2V4YyhiJyV4JywgMy4xNCwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCisgICAgICAgIHRlc3RfZXhjKGInJWcnLCAnMScsIFR5cGVFcnJvciwgImZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCBub3Qgc3RyIikKKyAgICAgICAgdGVzdF9leGMoYiclZycsIGInMScsIFR5cGVFcnJvciwgImZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCBub3QgYnl0ZXMiKQorICAgICAgICB0ZXN0X2V4YyhiJ25vIGZvcm1hdCcsIDcsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpCisgICAgICAgIHRlc3RfZXhjKGInbm8gZm9ybWF0JywgYicxJywgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoYidubyBmb3JtYXQnLCBieXRlYXJyYXkoYicxJyksIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpCisgICAgICAgIHRlc3RfZXhjKGIiJWMiLCAtMSwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIDI1NiwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIDIqKjEyOCwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIGIiWmEiLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsICJZIiwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlYyByZXF1aXJlcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDI1Nikgb3IgYSBzaW5nbGUgYnl0ZSIpCisgICAgICAgIHRlc3RfZXhjKGIiJWMiLCAzLjE0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIikKKyAgICAgICAgdGVzdF9leGMoYiIlYiIsICJYYyIsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWIgcmVxdWlyZXMgYnl0ZXMsIG9yIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgX19ieXRlc19fLCBub3QgJ3N0ciciKQorICAgICAgICB0ZXN0X2V4YyhiIiVzIiwgIldkIiwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnc3RyJyIpCiAKICAgICAgICAgaWYgbWF4c2l6ZSA9PSAyKiozMS0xOgogICAgICAgICAgICAgIyBjcmFzaGVzIDIuMi4xIGFuZCBlYXJsaWVyOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCAzMzM2NTMyLi4xNjk5ODUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtMSwxMyArMSwxNCBAQAogIiIiVGVzdHMgZm9yIExpYi9mcmFjdGlvbnMucHkuIiIiCiAKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfSUVFRV83NTQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlc19JRUVFXzc1NAogaW1wb3J0IG1hdGgKIGltcG9ydCBudW1iZXJzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBmcmFjdGlvbnMKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIGNvcHkgaW1wb3J0IGNvcHksIGRlZXBjb3B5CiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCiBGID0gZnJhY3Rpb25zLkZyYWN0aW9uCkBAIC00OSw3ICs1MCw3IEBACiAgICAgIiIiVGVzdCBjb21wYXJpc29uIG9mIEZyYWN0aW9uIHdpdGggYSBuYWl2ZSByYXRpb25hbCBpbXBsZW1lbnRhdGlvbi4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW0sIGRlbik6Ci0gICAgICAgIGcgPSBnY2QobnVtLCBkZW4pCisgICAgICAgIGcgPSBtYXRoLmdjZChudW0sIGRlbikKICAgICAgICAgc2VsZi5udW0gPSBudW0gLy8gZwogICAgICAgICBzZWxmLmRlbiA9IGRlbiAvLyBnCiAKQEAgLTgzLDE2ICs4NCwyNiBAQAogY2xhc3MgR2NkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdE1pc2Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2NkKDAsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdjZCgxLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKC0xLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoMCwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIGdjZCgwLCAtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDcsIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoNywgLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdjZCgtMjMsIDE1KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiwgZ2NkKDEyMCwgODQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiwgZ2NkKDg0LCAtMTIwKSkKKyAgICAgICAgIyBmcmFjdGlvbnMuZ2NkKCkgaXMgZGVwcmVjYXRlZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsIHInZnJhY3Rpb25zXC5nY2QnKToKKyAgICAgICAgICAgIGdjZCgxLCAxKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgcidmcmFjdGlvbnNcLmdjZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdjZCgwLCAwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDEsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKC0xLCAwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDAsIDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKDAsIC0xKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDcsIDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKDcsIC0xKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKC0yMywgMTUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiwgZ2NkKDEyMCwgODQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIsIGdjZCg4NCwgLTEyMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjAuMCwgODQpLCAxMi4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMTIwLCA4NC4wKSwgMTIuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKEYoMTIwKSwgRig4NCkpLCBGKDEyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKEYoMTIwLCA3NyksIEYoODQsIDU1KSksIEYoMTIsIDM4NSkpCiAKIAogZGVmIF9jb21wb25lbnRzKHIpOgpAQCAtMzMwLDcgKzM0MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoRigtMiwgMTApLCByb3VuZChGKC0xNSwgMTAwKSwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoRigtMiwgMTApLCByb3VuZChGKC0yNSwgMTAwKSwgMSkpCiAKLQogICAgIGRlZiB0ZXN0QXJpdGhtZXRpYyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKDEsIDIpLCBGKDEsIDEwKSArIEYoMiwgNSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRigtMywgMTApLCBGKDEsIDEwKSAtIEYoMiwgNSkpCkBAIC00MDIsNiArNDEyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscygyLjAgLCA0ICoqIEYoMSwgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoMC4yNSwgMi4wICoqIEYoLTIsIDEpKQogICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWxzKDEuMCArIDBqLCAoMS4wICsgMGopICoqIEYoMSwgMTApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgb3BlcmF0b3IucG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGKDAsIDEpLCAtMikKIAogICAgIGRlZiB0ZXN0TWl4aW5nV2l0aERlY2ltYWwoc2VsZik6CiAgICAgICAgICMgRGVjaW1hbCByZWZ1c2VzIG1peGVkIGFyaXRobWV0aWMgKGJ1dCBub3QgbWl4ZWQgY29tcGFyaXNvbnMpCkBAIC02MDUsOCArNjE3LDUgQEAKICAgICAgICAgciA9IEYoMTMsIDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCByLCAnYScsIDEwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEZyYWN0aW9uVGVzdCwgR2NkVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFtZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhbWUucHkKaW5kZXggYzQwMmVjMy4uMTg5ZmNhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcmFtZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5CkBAIC0xNjEsOCArMTYxLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbm5lci5mX2xvY2Fscywge30pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IGQzYmU3ZDYuLmFlZjY2ZGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC03Myw3ICs3Myw3IEBACiAgICAgICAgIHN1cGVyKER1bW15RFRQSGFuZGxlciwgc2VsZikucHVzaCh3aGF0LmVuY29kZSgnYXNjaWknKSkKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgogCiAKIGNsYXNzIER1bW15RlRQSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTAgY29tbWFuZCAiJXMiIG5vdCB1bmRlcnN0b29kLicgJWNtZCkKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgogCiAgICAgZGVmIHB1c2goc2VsZiwgZGF0YSk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQucHVzaChzZWxmLCBkYXRhLmVuY29kZSgnYXNjaWknKSArIGInXHJcbicpCkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICBkZWYgY21kX3Bhc3Yoc2VsZiwgYXJnKToKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgIHNvY2suYmluZCgoc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVswXSwgMCkpCi0gICAgICAgICAgICBzb2NrLmxpc3Rlbig1KQorICAgICAgICAgICAgc29jay5saXN0ZW4oKQogICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KFRJTUVPVVQpCiAgICAgICAgICAgICBpcCwgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVs6Ml0KICAgICAgICAgICAgIGlwID0gaXAucmVwbGFjZSgnLicsICcsJyk7IHAxID0gcG9ydCAvIDI1NjsgcDIgPSBwb3J0ICUgMjU2CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICBkZWYgY21kX2Vwc3Yoc2VsZiwgYXJnKToKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNikgYXMgc29jazoKICAgICAgICAgICAgIHNvY2suYmluZCgoc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVswXSwgMCkpCi0gICAgICAgICAgICBzb2NrLmxpc3Rlbig1KQorICAgICAgICAgICAgc29jay5saXN0ZW4oKQogICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KFRJTUVPVVQpCiAgICAgICAgICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgICAgICBzZWxmLnB1c2goJzIyOSBlbnRlcmluZyBleHRlbmRlZCBwYXNzaXZlIG1vZGUgKHx8fCVkfCknICVwb3J0KQpAQCAtMjk2LDcgKzI5Niw3IEBACiAgICAgICAgIHJldHVybiAwCiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgotICAgICAgICByYWlzZQorICAgICAgICByYWlzZSBFeGNlcHRpb24KIAogCiBpZiBzc2wgaXMgbm90IE5vbmU6CkBAIC0zOTQsNyArMzk0LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCiAKICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2Uoc2VsZi5zb2NrZXQsIHNzbC5TU0xTb2NrZXQpIGFuZApAQCAtNjcwLDcgKzY3MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHNlbGYuY2xpZW50Lm1sc2QoKSkKICAgICAgICAgc2V0X2RhdGEoJycpCiAgICAgICAgIGZvciB4IGluIHNlbGYuY2xpZW50Lm1sc2QoKToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIGRhdGEpCisgICAgICAgICAgICBzZWxmLmZhaWwoInVuZXhwZWN0ZWQgZGF0YSAlcyIgJSB4KQogCiAgICAgZGVmIHRlc3RfbWFrZXBvcnQoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5jbGllbnQubWFrZXBvcnQoKToKQEAgLTk3OSw3ICs5NzksNyBAQAogICAgICAgICAjICAxKSB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIGJlIGFjY2VwdGVkLgogICAgICAgICAjICAyKSB3aGVuIGl0IGlzIHNhZmUgZm9yIHRoZSBjYWxsZXIgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24KICAgICAgICAgIyAgMykgd2hlbiB3ZSBoYXZlIGNsb3NlZCB0aGUgc29ja2V0Ci0gICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgICMgKDEpIFNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgd2UgYXJlIHJlYWR5IHRvIGFjY2VwdCB0aGUgY29ubmVjdGlvbi4KICAgICAgICAgc2VsZi5ldnQuc2V0KCkKICAgICAgICAgdHJ5OgpAQCAtMTA0OSwxOSArMTA0OSw4IEBACiAgICAgICAgIGZ0cC5jbG9zZSgpCiAKIAotY2xhc3MgVGVzdE5ldHJjRGVwcmVjYXRpb24oVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpLCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6Ci0gICAgICAgICAgICBlbnZbJ0hPTUUnXSA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBvcGVuKCcubmV0cmMnLCAndycpLmNsb3NlKCkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgIGZ0cGxpYi5OZXRyYygpCi0KLQotCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsIFRlc3ROZXRyY0RlcHJlY2F0aW9uLAorICAgIHRlc3RzID0gW1Rlc3RGVFBDbGFzcywgVGVzdFRpbWVvdXRzLAogICAgICAgICAgICAgIFRlc3RJUHY2RW52aXJvbm1lbnQsCiAgICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzXQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CmluZGV4IDUwOTRmN2IuLjhmNDgxYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCkBAIC0zNzQsMTIgKzM3Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydmb28nOiAnYmFyJ30ucG9wLl9fcXVhbG5hbWVfXywgJ2RpY3QucG9wJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCwgSW5zdGFuY2VtZXRob2RBdHRyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyYml0cmFyeUZ1bmN0aW9uQXR0clRlc3QsIEZ1bmN0aW9uRGljdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Eb2NzdHJpbmdUZXN0LCBDZWxsVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01ldGhvZEF0dHJzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0aW5GdW5jdGlvblByb3BlcnRpZXNUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IGMwZDI0ZDhjLi43ZWNmODc3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQpAQCAtNyw2ICs3LDEwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIGltcG9ydCBmdW5jdG9vbHMKIApAQCAtMTMzLDYgKzEzNywyNSBAQAogICAgICAgICBqb2luID0gc2VsZi5wYXJ0aWFsKCcnLmpvaW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbihkYXRhKSwgJzAxMjM0NTY3ODknKQogCisgICAgZGVmIHRlc3RfbmVzdGVkX29wdGltaXphdGlvbihzZWxmKToKKyAgICAgICAgcGFydGlhbCA9IHNlbGYucGFydGlhbAorICAgICAgICBpbm5lciA9IHBhcnRpYWwoc2lnbmF0dXJlLCAnYXNkZicpCisgICAgICAgIG5lc3RlZCA9IHBhcnRpYWwoaW5uZXIsIGJhcj1UcnVlKQorICAgICAgICBmbGF0ID0gcGFydGlhbChzaWduYXR1cmUsICdhc2RmJywgYmFyPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKG5lc3RlZCksIHNpZ25hdHVyZShmbGF0KSkKKworICAgIGRlZiB0ZXN0X25lc3RlZF9wYXJ0aWFsX3dpdGhfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICAjIHNlZSBpc3N1ZSAyNTEzNworICAgICAgICBwYXJ0aWFsID0gc2VsZi5wYXJ0aWFsCisKKyAgICAgICAgZGVmIGZvbyhiYXIpOgorICAgICAgICAgICAgcmV0dXJuIGJhcgorCisgICAgICAgIHAgPSBwYXJ0aWFsKGZvbywgJ2ZpcnN0JykKKyAgICAgICAgcDIgPSBwYXJ0aWFsKHAsICdzZWNvbmQnKQorICAgICAgICBwMi5uZXdfYXR0ciA9ICdzcGFtJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5ld19hdHRyLCAnc3BhbScpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIyNCw2ICsyNDcsOSBAQAogICAgIGlmIGNfZnVuY3Rvb2xzOgogICAgICAgICBwYXJ0aWFsID0gUGFydGlhbFN1YmNsYXNzCiAKKyAgICAjIHBhcnRpYWwgc3ViY2xhc3NlcyBhcmUgbm90IG9wdGltaXplZCBmb3IgbmVzdGVkIGNhbGxzCisgICAgdGVzdF9uZXN0ZWRfb3B0aW1pemF0aW9uID0gTm9uZQorCiAKIGNsYXNzIFRlc3RQYXJ0aWFsTWV0aG9kKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODg0LDEyICs5MTAsMzAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgICAgICBhIDw9IGIKIAotY2xhc3MgVGVzdExSVSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluICdfX2x0X18nLCAnX19ndF9fJywgJ19fbGVfXycsICdfX2dlX18nOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZD1uYW1lLCBwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoT3JkZXJhYmxlX0xULCBuYW1lKQorICAgICAgICAgICAgICAgICAgICBtZXRob2RfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobWV0aG9kLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobWV0aG9kX2NvcHksIG1ldGhvZCkKKworQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZworY2xhc3MgT3JkZXJhYmxlX0xUOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA8IG90aGVyLnZhbHVlCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisKKworY2xhc3MgVGVzdExSVToKIAogICAgIGRlZiB0ZXN0X2xydShzZWxmKToKICAgICAgICAgZGVmIG9yaWcoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4gMyAqIHggKyB5Ci0gICAgICAgIGYgPSBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjApKG9yaWcpCisgICAgICAgIGYgPSBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0yMCkob3JpZykKICAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4c2l6ZSwgMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCkBAIC05MjcsNyArOTcxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMSkKIAogICAgICAgICAjIHRlc3Qgc2l6ZSB6ZXJvICh3aGljaCBtZWFucyAibmV2ZXItY2FjaGUiKQotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgwKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKDApCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBub25sb2NhbCBmX2NudAogICAgICAgICAgICAgZl9jbnQgKz0gMQpAQCAtOTQzLDcgKzk4Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCiAKICAgICAgICAgIyB0ZXN0IHNpemUgb25lCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKDEpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMSkKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIG5vbmxvY2FsIGZfY250CiAgICAgICAgICAgICBmX2NudCArPSAxCkBAIC05NTksNyArMTAwMyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDEpCiAKICAgICAgICAgIyB0ZXN0IHNpemUgdHdvCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKDIpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMikKICAgICAgICAgZGVmIGYoeCk6CiAgICAgICAgICAgICBub25sb2NhbCBmX2NudAogICAgICAgICAgICAgZl9jbnQgKz0gMQpAQCAtOTc2LDcgKzEwMjAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJzaXplLCAyKQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfbWF4c2l6ZV9ub25lKHNlbGYpOgotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1Ob25lKQogICAgICAgICBkZWYgZmliKG4pOgogICAgICAgICAgICAgaWYgbiA8IDI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4KQEAgLTk4NCwxNyArMTAyOCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtmaWIobikgZm9yIG4gaW4gcmFuZ2UoMTYpXSwKICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0LCA1NSwgODksIDE0NCwgMjMzLCAzNzcsIDYxMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0xNikpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0xNikpCiAgICAgICAgIGZpYi5jYWNoZV9jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCisKKyAgICBkZWYgdGVzdF9scnVfd2l0aF9tYXhzaXplX25lZ2F0aXZlKHNlbGYpOgorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9LTEwKQorICAgICAgICBkZWYgZXEobik6CisgICAgICAgICAgICByZXR1cm4gbgorICAgICAgICBmb3IgaSBpbiAoMCwgMSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtlcShuKSBmb3IgbiBpbiByYW5nZSgxNTApXSwgbGlzdChyYW5nZSgxNTApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcS5jYWNoZV9pbmZvKCksCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTMwMCwgbWF4c2l6ZT0tMTAsIGN1cnJzaXplPTEpKQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgIyBWZXJpZnkgdGhhdCB1c2VyX2Z1bmN0aW9uIGV4Y2VwdGlvbnMgZ2V0IHBhc3NlZCB0aHJvdWdoIHdpdGhvdXQKICAgICAgICAgIyBjcmVhdGluZyBhIGhhcmQtdG8tcmVhZCBjaGFpbmVkIGV4Y2VwdGlvbi4KICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTMxNzcKICAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEyOCk6Ci0gICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplKQorICAgICAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplKQogICAgICAgICAgICAgZGVmIGZ1bmMoaSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuICdhYmMnW2ldCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoMCksICdhJykKQEAgLTEwMDcsNyArMTA2MCw3IEBACiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF90eXBlcyhzZWxmKToKICAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEyOCk6Ci0gICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCisgICAgICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9bWF4c2l6ZSwgdHlwZWQ9VHJ1ZSkKICAgICAgICAgICAgIGRlZiBzcXVhcmUoeCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHggKiB4CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSgzKSwgOSkKQEAgLTEwMjIsNyArMTA3NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZS5jYWNoZV9pbmZvKCkubWlzc2VzLCA0KQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfa2V5d29yZF9hcmdzKHNlbGYpOgotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoKQogICAgICAgICBkZWYgZmliKG4pOgogICAgICAgICAgICAgaWYgbiA8IDI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4KQEAgLTEwMzIsMTMgKzEwODUsMTMgQEAKICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0LCA1NSwgODksIDE0NCwgMjMzLCAzNzcsIDYxMF0KICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9MTI4LCBjdXJyc2l6ZT0xNikpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT0xMjgsIGN1cnJzaXplPTE2KSkKICAgICAgICAgZmliLmNhY2hlX2NsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT0xMjgsIGN1cnJzaXplPTApKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPTEyOCwgY3VycnNpemU9MCkpCiAKICAgICBkZWYgdGVzdF9scnVfd2l0aF9rZXl3b3JkX2FyZ3NfbWF4c2l6ZV9ub25lKHNlbGYpOgotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPU5vbmUpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1Ob25lKQogICAgICAgICBkZWYgZmliKG4pOgogICAgICAgICAgICAgaWYgbiA8IDI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG4KQEAgLTEwNDYsMTUgKzEwOTksMTAwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2ZpYihuPW51bWJlcikgZm9yIG51bWJlciBpbiByYW5nZSgxNildLAogICAgICAgICAgICAgWzAsIDEsIDEsIDIsIDMsIDUsIDgsIDEzLCAyMSwgMzQsIDU1LCA4OSwgMTQ0LCAyMzMsIDM3NywgNjEwXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTE2KSkKICAgICAgICAgZmliLmNhY2hlX2NsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0wKSkKKworICAgIGRlZiB0ZXN0X2xydV9jYWNoZV9kZWNvcmF0aW9uKHNlbGYpOgorICAgICAgICBkZWYgZih6b21nOiAnem9tZ19hbm5vdGF0aW9uJyk6CisgICAgICAgICAgICAiIiJmIGRvYyBzdHJpbmciIiIKKyAgICAgICAgICAgIHJldHVybiA0MgorICAgICAgICBnID0gc2VsZi5tb2R1bGUubHJ1X2NhY2hlKCkoZikKKyAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5tb2R1bGUuV1JBUFBFUl9BU1NJR05NRU5UUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihnLCBhdHRyKSwgZ2V0YXR0cihmLCBhdHRyKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RoaXMgdGVzdCByZXF1aXJlcyB0aHJlYWRpbmcuJykKKyAgICBkZWYgdGVzdF9scnVfY2FjaGVfdGhyZWFkZWQoc2VsZik6CisgICAgICAgIG4sIG0gPSA1LCAxMQorICAgICAgICBkZWYgb3JpZyh4LCB5KToKKyAgICAgICAgICAgIHJldHVybiAzICogeCArIHkKKyAgICAgICAgZiA9IHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPW4qbSkob3JpZykKKyAgICAgICAgaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSA9IGYuY2FjaGVfaW5mbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIDApCisKKyAgICAgICAgc3RhcnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBkZWYgZnVsbChrKToKKyAgICAgICAgICAgIHN0YXJ0LndhaXQoMTApCisgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShtKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoaywgMCksIG9yaWcoaywgMCkpCisKKyAgICAgICAgZGVmIGNsZWFyKCk6CisgICAgICAgICAgICBzdGFydC53YWl0KDEwKQorICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMiptKToKKyAgICAgICAgICAgICAgICBmLmNhY2hlX2NsZWFyKCkKKworICAgICAgICBvcmlnX3NpID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDFlLTYpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgY3JlYXRlIG4gdGhyZWFkcyBpbiBvcmRlciB0byBmaWxsIGNhY2hlCisgICAgICAgICAgICB0aHJlYWRzID0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PWZ1bGwsIGFyZ3M9W2tdKQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShuKV0KKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5zdGFydF90aHJlYWRzKHRocmVhZHMpOgorICAgICAgICAgICAgICAgIHN0YXJ0LnNldCgpCisKKyAgICAgICAgICAgIGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUgPSBmLmNhY2hlX2luZm8oKQorICAgICAgICAgICAgaWYgc2VsZi5tb2R1bGUgaXMgcHlfZnVuY3Rvb2xzOgorICAgICAgICAgICAgICAgICMgWFhYOiBXaHkgY2FuIGJlIG5vdCBlcXVhbD8KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChtaXNzZXMsIG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoaGl0cywgbSpuIC0gbWlzc2VzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pc3NlcywgbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhpdHMsIG0qbiAtIG1pc3NlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycnNpemUsIG4pCisKKyAgICAgICAgICAgICMgY3JlYXRlIG4gdGhyZWFkcyBpbiBvcmRlciB0byBmaWxsIGNhY2hlIGFuZCAxIHRvIGNsZWFyIGl0CisgICAgICAgICAgICB0aHJlYWRzID0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PWNsZWFyKV0KKyAgICAgICAgICAgIHRocmVhZHMgKz0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PWZ1bGwsIGFyZ3M9W2tdKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobildCisgICAgICAgICAgICBzdGFydC5jbGVhcigpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuc3RhcnRfdGhyZWFkcyh0aHJlYWRzKToKKyAgICAgICAgICAgICAgICBzdGFydC5zZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKG9yaWdfc2kpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaGlzIHRlc3QgcmVxdWlyZXMgdGhyZWFkaW5nLicpCisgICAgZGVmIHRlc3RfbHJ1X2NhY2hlX3RocmVhZGVkMihzZWxmKToKKyAgICAgICAgIyBTaW11bHRhbmVvdXMgY2FsbCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cworICAgICAgICBuLCBtID0gNSwgNworICAgICAgICBzdGFydCA9IHRocmVhZGluZy5CYXJyaWVyKG4rMSkKKyAgICAgICAgcGF1c2UgPSB0aHJlYWRpbmcuQmFycmllcihuKzEpCisgICAgICAgIHN0b3AgPSB0aHJlYWRpbmcuQmFycmllcihuKzEpCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1tKm4pCisgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgcGF1c2Uud2FpdCgxMCkKKyAgICAgICAgICAgIHJldHVybiAzICogeAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuY2FjaGVfaW5mbygpLCAoMCwgMCwgbSpuLCAwKSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG0pOgorICAgICAgICAgICAgICAgIHN0YXJ0LndhaXQoMTApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKGkpLCAzICogaSkKKyAgICAgICAgICAgICAgICBzdG9wLndhaXQoMTApCisgICAgICAgIHRocmVhZHMgPSBbdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGVzdCkgZm9yIGsgaW4gcmFuZ2UobildCisgICAgICAgIHdpdGggc3VwcG9ydC5zdGFydF90aHJlYWRzKHRocmVhZHMpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobSk6CisgICAgICAgICAgICAgICAgc3RhcnQud2FpdCgxMCkKKyAgICAgICAgICAgICAgICBzdG9wLnJlc2V0KCkKKyAgICAgICAgICAgICAgICBwYXVzZS53YWl0KDEwKQorICAgICAgICAgICAgICAgIHN0YXJ0LnJlc2V0KCkKKyAgICAgICAgICAgICAgICBzdG9wLndhaXQoMTApCisgICAgICAgICAgICAgICAgcGF1c2UucmVzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5jYWNoZV9pbmZvKCksICgwLCAoaSsxKSpuLCBtKm4sIGkrMSkpCiAKICAgICBkZWYgdGVzdF9uZWVkX2Zvcl9ybG9jayhzZWxmKToKICAgICAgICAgIyBUaGlzIHdpbGwgZGVhZGxvY2sgb24gYW4gTFJVIGNhY2hlIHRoYXQgdXNlcyBhIHJlZ3VsYXIgbG9jawogCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MTApCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT0xMCkKICAgICAgICAgZGVmIHRlc3RfZnVuYyh4KToKICAgICAgICAgICAgICdVc2VkIHRvIGRlbW9uc3RyYXRlIGEgcmVlbnRyYW50IGxydV9jYWNoZSBjYWxsIHdpdGhpbiBhIHNpbmdsZSB0aHJlYWQnCiAgICAgICAgICAgICByZXR1cm4geApAQCAtMTA4Miw2ICsxMjIwLDQzIEBACiAgICAgICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB0ZXN0X2xydV9tZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFgoaW50KToKKyAgICAgICAgICAgIGZfY250ID0gMAorICAgICAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZSgyKQorICAgICAgICAgICAgZGVmIGYoc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi5mX2NudCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHgqMTArc2VsZgorICAgICAgICBhID0gWCg1KQorICAgICAgICBiID0gWCg1KQorICAgICAgICBjID0gWCg3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguZi5jYWNoZV9pbmZvKCksICgwLCAwLCAyLCAwKSkKKworICAgICAgICBmb3IgeCBpbiAxLCAyLCAyLCAzLCAxLCAxLCAxLCAyLCAzLCAzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmYoeCksIHgqMTAgKyA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLmZfY250LCBiLmZfY250LCBjLmZfY250KSwgKDYsIDAsIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguZi5jYWNoZV9pbmZvKCksICg0LCA2LCAyLCAyKSkKKworICAgICAgICBmb3IgeCBpbiAxLCAyLCAxLCAxLCAxLCAxLCAzLCAyLCAyLCAyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmYoeCksIHgqMTAgKyA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLmZfY250LCBiLmZfY250LCBjLmZfY250KSwgKDYsIDQsIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguZi5jYWNoZV9pbmZvKCksICgxMCwgMTAsIDIsIDIpKQorCisgICAgICAgIGZvciB4IGluIDIsIDEsIDEsIDEsIDEsIDIsIDEsIDMsIDIsIDE6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZih4KSwgeCoxMCArIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGEuZl9jbnQsIGIuZl9jbnQsIGMuZl9jbnQpLCAoNiwgNCwgNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5mLmNhY2hlX2luZm8oKSwgKDE1LCAxNSwgMiwgMikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmYuY2FjaGVfaW5mbygpLCBYLmYuY2FjaGVfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZi5jYWNoZV9pbmZvKCksIFguZi5jYWNoZV9pbmZvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mLmNhY2hlX2luZm8oKSwgWC5mLmNhY2hlX2luZm8oKSkKKworY2xhc3MgVGVzdExSVUMoVGVzdExSVSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IGNfZnVuY3Rvb2xzCisKK2NsYXNzIFRlc3RMUlVQeShUZXN0TFJVLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gcHlfZnVuY3Rvb2xzCisKIAogY2xhc3MgVGVzdFNpbmdsZURpc3BhdGNoKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaW1wbGVfb3ZlcmxvYWRzKHNlbGYpOgpAQCAtMTU3NiwzMiArMTc1MSw1IEBACiAgICAgICAgIGZ1bmN0b29scy5XZWFrS2V5RGljdGlvbmFyeSA9IF9vcmlnX3drZAogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICB0ZXN0X2NsYXNzZXMgPSAoCi0gICAgICAgIFRlc3RQYXJ0aWFsQywKLSAgICAgICAgVGVzdFBhcnRpYWxQeSwKLSAgICAgICAgVGVzdFBhcnRpYWxDU3ViY2xhc3MsCi0gICAgICAgIFRlc3RQYXJ0aWFsTWV0aG9kLAotICAgICAgICBUZXN0VXBkYXRlV3JhcHBlciwKLSAgICAgICAgVGVzdFRvdGFsT3JkZXJpbmcsCi0gICAgICAgIFRlc3RDbXBUb0tleUMsCi0gICAgICAgIFRlc3RDbXBUb0tleVB5LAotICAgICAgICBUZXN0V3JhcHMsCi0gICAgICAgIFRlc3RSZWR1Y2UsCi0gICAgICAgIFRlc3RMUlUsCi0gICAgICAgIFRlc3RTaW5nbGVEaXNwYXRjaCwKLSAgICApCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggMmFjMWQ0Yi4uMWYwODY3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC0xLDcgKzEsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHZlcmJvc2UsIHJlZmNvdW50X3Rlc3QsIHJ1bl91bml0dGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9weXRob25fc3RkZXJyLCBjcHl0aG9uX29ubHksIHN0YXJ0X3RocmVhZHMpCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgbWFrZV9zY3JpcHQsIHRlbXBfZGlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBfcHl0aG9uX3N0ZGVyciwgY3B5dGhvbl9vbmx5LCBzdGFydF90aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBfZGlyKQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgbWFrZV9zY3JpcHQKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKQEAgLTU0NiwxMSArNTQ3LDMxIEBACiAKICAgICAgICAgY2xhc3MgVXNlckNsYXNzOgogICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIFVzZXJJbnQoaW50KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIEJhc2UgY2xhc3MgaXMgb2JqZWN0OyBubyBleHRyYSBmaWVsZHMuCisgICAgICAgIGNsYXNzIFVzZXJDbGFzc1Nsb3RzOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKworICAgICAgICAjIEJhc2UgY2xhc3MgaXMgZml4ZWQgc2l6ZSBsYXJnZXIgdGhhbiBvYmplY3Q7IG5vIGV4dHJhIGZpZWxkcy4KKyAgICAgICAgY2xhc3MgVXNlckZsb2F0U2xvdHMoZmxvYXQpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKworICAgICAgICAjIEJhc2UgY2xhc3MgaXMgdmFyaWFibGUgc2l6ZTsgbm8gZXh0cmEgZmllbGRzLgorICAgICAgICBjbGFzcyBVc2VySW50U2xvdHMoaW50KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoZ2MpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChVc2VyQ2xhc3MpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChVc2VyQ2xhc3MoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKFVzZXJJbnQoKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKFtdKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoc2V0KCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdjLmlzX3RyYWNrZWQoVXNlckNsYXNzU2xvdHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2MuaXNfdHJhY2tlZChVc2VyRmxvYXRTbG90cygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnYy5pc190cmFja2VkKFVzZXJJbnRTbG90cygpKSkKIAogICAgIGRlZiB0ZXN0X2J1ZzEwNTU4MjBiKHNlbGYpOgogICAgICAgICAjIENvcnJlc3BvbmRzIHRvIHRlbXAyYi5weSBpbiB0aGUgYnVnIHJlcG9ydC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5IGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKaW5kZXggYjUwMTdiOS4uNmM0YTM0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKQEAgLTgyMCwyNSArODIwLDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCiAgICAgZGVmIHRlc3RfcHljZnVuY3Rpb24oc2VsZik6CiAgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGRpc3BsYXlzIGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlcycKLSAgICAgICAgY21kID0gKCdmcm9tIHRpbWUgaW1wb3J0IHNsZWVwXG4nCisgICAgICAgICMgVGVzdGVkIGZ1bmN0aW9uIG11c3Qgbm90IGJlIGRlZmluZWQgd2l0aCBNRVRIX05PQVJHUyBvciBNRVRIX08sCisgICAgICAgICMgb3RoZXJ3aXNlIGNhbGxfZnVuY3Rpb24oKSBkb2Vzbid0IGNhbGwgUHlDRnVuY3Rpb25fQ2FsbCgpCisgICAgICAgIGNtZCA9ICgnZnJvbSB0aW1lIGltcG9ydCBnbXRpbWVcbicKICAgICAgICAgICAgICAgICdkZWYgZm9vKCk6XG4nCi0gICAgICAgICAgICAgICAnICAgIHNsZWVwKDEpXG4nCisgICAgICAgICAgICAgICAnICAgIGdtdGltZSgxKVxuJwogICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKICAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKICAgICAgICAgICAgICAgICdiYXIoKVxuJykKICAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgogICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX2dtdGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydidCcsICdweS1idCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEluKCc8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignPGJ1aWx0LWluIG1ldGhvZCBnbXRpbWUnLCBnZGJfb3V0cHV0KQogCiAgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0LWZ1bGwiOgogICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX2dtdGltZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1idC1mdWxsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyMwIDxidWlsdC1pbiBtZXRob2Qgc2xlZXAnLCBnZGJfb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gbWV0aG9kIGdtdGltZScsIGdkYl9vdXRwdXQpCiAKIAogY2xhc3MgUHlQcmludFRlc3RzKERlYnVnZ2VyVGVzdHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CmluZGV4IDVjNDU1Y2QuLjI1Y2M2MjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKQEAgLTEsNyArMSwxMCBAQAogaW1wb3J0IGdjCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHdlYWtyZWYKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgdHlwZXMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTcwLDYgKzczLDQ1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi52YWx1ZSwgMikKIAogCitjbGFzcyBHZW5lcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICB5aWVsZCAxCisKKyAgICAgICAgIyBjaGVjayBnZW5lcmF0b3IgbmFtZXMKKyAgICAgICAgZ2VuID0gZnVuYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLCAiZnVuYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiR2VuZXJhdG9yVGVzdC50ZXN0X25hbWUuPGxvY2Fscz4uZnVuYyIpCisKKyAgICAgICAgIyBtb2RpZnkgZ2VuZXJhdG9yIG5hbWVzCisgICAgICAgIGdlbi5fX25hbWVfXyA9ICJuYW1lIgorICAgICAgICBnZW4uX19xdWFsbmFtZV9fID0gInF1YWxuYW1lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX3F1YWxuYW1lX18sICJxdWFsbmFtZSIpCisKKyAgICAgICAgIyBnZW5lcmF0b3IgbmFtZXMgbXVzdCBiZSBhIHN0cmluZyBhbmQgY2Fubm90IGJlIGRlbGV0ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBnZW4sICdfX25hbWVfXycsIDEyMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBnZW4sICdfX3F1YWxuYW1lX18nLCAxMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGVsYXR0ciwgZ2VuLCAnX19uYW1lX18nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRlbGF0dHIsIGdlbiwgJ19fcXVhbG5hbWVfXycpCisKKyAgICAgICAgIyBtb2RpZnkgbmFtZXMgb2YgdGhlIGZ1bmN0aW9uIGNyZWF0aW5nIHRoZSBnZW5lcmF0b3IKKyAgICAgICAgZnVuYy5fX3F1YWxuYW1lX18gPSAiZnVuY19xdWFsbmFtZSIKKyAgICAgICAgZnVuYy5fX25hbWVfXyA9ICJmdW5jX25hbWUiCisgICAgICAgIGdlbiA9IGZ1bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywgImZ1bmNfbmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fcXVhbG5hbWVfXywgImZ1bmNfcXVhbG5hbWUiKQorCisgICAgICAgICMgdW5uYW1lZCBnZW5lcmF0b3IKKyAgICAgICAgZ2VuID0gKHggZm9yIHggaW4gcmFuZ2UoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPGdlbmV4cHI+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICJHZW5lcmF0b3JUZXN0LnRlc3RfbmFtZS48bG9jYWxzPi48Z2VuZXhwcj4iKQorCisKIGNsYXNzIEV4Y2VwdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHRoZSBpc3N1ZSAjMjMzNTM6IGNoZWNrIHRoYXQgdGhlIGN1cnJlbnRseSBoYW5kbGVkIGV4Y2VwdGlvbgogICAgICMgaXMgY29ycmVjdGx5IHNhdmVkL3Jlc3RvcmVkIGluIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgpAQCAtMTc4LDYgKzIyMCw3OSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksICJkb25lIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZXhjX2luZm8oKSwgKE5vbmUsIE5vbmUsIE5vbmUpKQogCisgICAgZGVmIHRlc3Rfc3RvcGl0ZXJhdGlvbl93YXJuaW5nKHNlbGYpOgorICAgICAgICAjIFNlZSBhbHNvIFBFUCA0NzkuCisKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisKKyAgICAgICAgICAgIG5leHQoZ2VuKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIC4qIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiksIFwKKyAgICAgICAgICAgICB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorCisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJykKKyAgICAgICAgICAgIG5leHQoZ2VuKCkpCisKKworICAgIGRlZiB0ZXN0X3R1dG9yaWFsX3N0b3BpdGVyYXRpb24oc2VsZik6CisgICAgICAgICMgUmFpc2UgU3RvcEl0ZXJhdGlvbiIgc3RvcHMgdGhlIGdlbmVyYXRvciB0b286CisKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIHlpZWxkIDIgIyBuZXZlciByZWFjaGVkCisKKyAgICAgICAgZyA9IGYoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgbmV4dChnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICAjIFRoaXMgdGltZSBTdG9wSXRlcmF0aW9uIGlzbid0IHJhaXNlZCBmcm9tIHRoZSBnZW5lcmF0b3IncyBib2R5LAorICAgICAgICAgICAgIyBoZW5jZSBubyB3YXJuaW5nLgorICAgICAgICAgICAgbmV4dChnKQorCisKK2NsYXNzIFlpZWxkRnJvbVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JfZ2lfeWllbGRmcm9tKHNlbGYpOgorICAgICAgICBkZWYgYSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fUlVOTklORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9yc3RhdGUoZ2VuX2IpLCBpbnNwZWN0LkdFTl9SVU5OSU5HKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorCisgICAgICAgIGRlZiBiKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisgICAgICAgICAgICB5aWVsZCBmcm9tIGEoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKworICAgICAgICBnZW5fYiA9IGIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9yc3RhdGUoZ2VuX2IpLCBpbnNwZWN0LkdFTl9DUkVBVEVEKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisKKyAgICAgICAgZ2VuX2Iuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9yc3RhdGUoZ2VuX2IpLCBpbnNwZWN0LkdFTl9TVVNQRU5ERUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuX2IuZ2lfeWllbGRmcm9tLmdpX2NvZGUuY29fbmFtZSwgJ2EnKQorCisgICAgICAgIGdlbl9iLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fU1VTUEVOREVEKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisKKyAgICAgICAgW10gPSBnZW5fYiAgIyBFeGhhdXN0IGdlbmVyYXRvcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9yc3RhdGUoZ2VuX2IpLCBpbnNwZWN0LkdFTl9DTE9TRUQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKwogCiB0dXRvcmlhbF90ZXN0cyA9ICIiIgogTGV0J3MgdHJ5IGEgc2ltcGxlIGdlbmVyYXRvcjoKQEAgLTIyNCwyNiArMzM5LDcgQEAKICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KICAgICBTdG9wSXRlcmF0aW9uCiAKLSJyYWlzZSBTdG9wSXRlcmF0aW9uIiBzdG9wcyB0aGUgZ2VuZXJhdG9yIHRvbzoKLQotICAgID4+PiBkZWYgZigpOgotICAgIC4uLiAgICAgeWllbGQgMQotICAgIC4uLiAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgIC4uLiAgICAgeWllbGQgMiAjIG5ldmVyIHJlYWNoZWQKLSAgICAuLi4KLSAgICA+Pj4gZyA9IGYoKQotICAgID4+PiBuZXh0KGcpCi0gICAgMQotICAgID4+PiBuZXh0KGcpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwotICAgIFN0b3BJdGVyYXRpb24KLSAgICA+Pj4gbmV4dChnKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgICBTdG9wSXRlcmF0aW9uCi0KLUhvd2V2ZXIsIHRoZXkgYXJlIG5vdCBleGFjdGx5IGVxdWl2YWxlbnQ6CitIb3dldmVyLCAicmV0dXJuIiBhbmQgU3RvcEl0ZXJhdGlvbiBhcmUgbm90IGV4YWN0bHkgZXF1aXZhbGVudDoKIAogICAgID4+PiBkZWYgZzEoKToKICAgICAuLi4gICAgIHRyeToKQEAgLTU2Myw3ICs2NTksNyBAQAogPj4+IHR5cGUoaSkKIDxjbGFzcyAnZ2VuZXJhdG9yJz4KID4+PiBbcyBmb3IgcyBpbiBkaXIoaSkgaWYgbm90IHMuc3RhcnRzd2l0aCgnXycpXQotWydjbG9zZScsICdnaV9jb2RlJywgJ2dpX2ZyYW1lJywgJ2dpX3J1bm5pbmcnLCAnc2VuZCcsICd0aHJvdyddCitbJ2Nsb3NlJywgJ2dpX2NvZGUnLCAnZ2lfZnJhbWUnLCAnZ2lfcnVubmluZycsICdnaV95aWVsZGZyb20nLCAnc2VuZCcsICd0aHJvdyddCiA+Pj4gZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEhBVkVfRE9DU1RSSU5HUwogPj4+IHByaW50KGkuX19uZXh0X18uX19kb2NfXyBpZiBIQVZFX0RPQ1NUUklOR1MgZWxzZSAnSW1wbGVtZW50IG5leHQoc2VsZikuJykKIEltcGxlbWVudCBuZXh0KHNlbGYpLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKaW5kZXggZTU5ZWQ0ZC4uNmJhNTVkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CkBAIC00MzQsNiArNDM0LDQ0IEBACiAgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZSk6CiAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2Fic3BhdGgoKQogCisgICAgZGVmIHRlc3Rfam9pbl9lcnJvcnMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgam9pbigpIHJhaXNlcyBmcmllbmRseSBUeXBlRXJyb3JzLgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBCeXRlc1dhcm5pbmcpLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIGVycm1zZyA9ICJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCBjb21wb25lbnRzIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihiJ2J5dGVzJywgJ3N0cicpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCBiJ2J5dGVzJykKKyAgICAgICAgICAgICMgcmVncmVzc2lvbiwgc2VlICMxNTM3NworICAgICAgICAgICAgZXJybXNnID0gcidqb2luXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyLCAnc3RyJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgNDIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnbGlzdCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKFtdKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2J5dGVhcnJheScpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKGJ5dGVhcnJheShiJ2ZvbycpLCBieXRlYXJyYXkoYidiYXInKSkKKworICAgIGRlZiB0ZXN0X3JlbHBhdGhfZXJyb3JzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHJlbHBhdGgoKSByYWlzZXMgZnJpZW5kbHkgVHlwZUVycm9ycy4KKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgKEJ5dGVzV2FybmluZywgRGVwcmVjYXRpb25XYXJuaW5nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIGVycm1zZyA9ICJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCBjb21wb25lbnRzIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChiJ2J5dGVzJywgJ3N0cicpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCBiJ2J5dGVzJykKKyAgICAgICAgICAgIGVycm1zZyA9IHIncmVscGF0aFwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCg0MiwgJ3N0cicpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoJ3N0cicsIDQyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2J5dGVhcnJheScpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKGJ5dGVhcnJheShiJ2ZvbycpLCBieXRlYXJyYXkoYidiYXInKSkKKwogCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IDE4NTNhMmQuLjcxNDcyY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtMzQsOCArMzQsOCBAQAogIyA+ICoqIENoYW5nZWQgZnJvbSBwcmV2aW91cyAicmFuZ2UtYW5kLWEtaGFsZiIgdG8gIm5vbmUiOyB0aGUKICMgPiByYW5nZS1hbmQtYS1oYWxmIGNoZWNraW5nIHdhc24ndCBwYXJ0aWN1bGFybHkgdXNlZnVsLgogIwotIyBQbHVzIGEgQyBBUEkgb3IgdHdvLCBlLmcuIFB5SW50X0FzTG9uZ01hc2soKSAtPgotIyB1bnNpZ25lZCBsb25nIGFuZCBQeUludF9Bc0xvbmdMb25nTWFzaygpIC0+IHVuc2lnbmVkCisjIFBsdXMgYSBDIEFQSSBvciB0d28sIGUuZy4gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIC0+CisjIHVuc2lnbmVkIGxvbmcgYW5kIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKCkgLT4gdW5zaWduZWQKICMgbG9uZyBsb25nIChpZiB0aGF0IGV4aXN0cykuCiAKIExBUkdFID0gMHg3RkZGRkZGRgpAQCAtNDgyLDcgKzQ4Miw3IEBACiAgICAgZGVmIHRlc3RfcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfcygnYWJjXHhlOScpLCBiJ2FiY1x4YzNceGE5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3MsICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3MsICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfcywgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19zLCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3MsIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCkBAIC01MDksNyArNTA5LDcgQEAKICAgICBkZWYgdGVzdF96KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc196CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc196KCdhYmNceGU5JyksIGInYWJjXHhjM1x4YTknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeiwgJ251bDpcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfeiwgJ251bDpcMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc196LCBiJ2J5dGVzJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3osIGJ5dGVhcnJheShiJ2J5dGVhcnJheScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeiwgbWVtb3J5dmlldyhiJ21lbW9yeXZpZXcnKSkKQEAgLTUzNyw3ICs1MzcsNyBAQAogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc195CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc195LCAnYWJjXHhlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc195KGInYnl0ZXMnKSwgYidieXRlcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc195LCBiJ251bDpcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfeSwgYidudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgYnl0ZWFycmF5KGInYnl0ZWFycmF5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc195LCBtZW1vcnl2aWV3KGInbWVtb3J5dmlldycpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgTm9uZSkKQEAgLTU3Nyw3ICs1NzcsNyBAQAogICAgIGRlZiB0ZXN0X3Uoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3UKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3UoJ2FiY1x4ZTknKSwgJ2FiY1x4ZTknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfdSwgJ251bDpcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfdSwgJ251bDpcMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc191LCBiJ2J5dGVzJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3UsIGJ5dGVhcnJheShiJ2J5dGVhcnJheScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfdSwgbWVtb3J5dmlldyhiJ21lbW9yeXZpZXcnKSkKQEAgLTU5NSw3ICs1OTUsNyBAQAogICAgIGRlZiB0ZXN0X1ooc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX1oKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX1ooJ2FiY1x4ZTknKSwgJ2FiY1x4ZTknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfWiwgJ251bDpcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfWiwgJ251bDpcMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19aLCBiJ2J5dGVzJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX1osIGJ5dGVhcnJheShiJ2J5dGVhcnJheScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfWiwgbWVtb3J5dmlldyhiJ21lbW9yeXZpZXcnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRvcHQucHkKaW5kZXggZmE1NzAxZi4uOTI3NWRjNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXRvcHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRvcHQucHkKQEAgLTEsNyArMSw3IEBACiAjIHRlc3RfZ2V0b3B0LnB5CiAjIERhdmlkIEdvb2RnZXIgPGRnb29kZ2VyQGJpZ2Zvb3QuY29tPiAyMDAwLTA4LTE5CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fZG9jdGVzdCwgcnVuX3VuaXR0ZXN0LCBFbnZpcm9ubWVudFZhckd1YXJkCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX2RvY3Rlc3QsIEVudmlyb25tZW50VmFyR3VhcmQKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgZ2V0b3B0CkBAIC0xODAsOCArMTgwLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb25nb3B0cywgWygnLS1oZWxwJywgJ3gnKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGdldG9wdC5HZXRvcHRFcnJvciwgZ2V0b3B0LmdldG9wdCwgWyctLWhlbHA9J10sICcnLCBbJ2hlbHAnXSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChHZXRvcHRUZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5IGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CmluZGV4IDI3MzdlODEuLmRlNjEwYzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKQEAgLTMzLDYgKzMzLDU1IEBACiBjaUJVUVVnS2RISm5aM0pyWnlCNmNtWm1iblJ5SUhCdVoyNTVZblFnZVhadlpXNWxiQzRBWW1GamIyNEFkMmx1YXlCM2FXNXJBQT09CiAnJycKIAorIyBUaGlzIGRhdGEgY29udGFpbnMgYW4gaW52YWxpZCBtYWpvciB2ZXJzaW9uIG51bWJlciAoNSkKKyMgQW4gdW5leHBlY3RlZCBtYWpvciB2ZXJzaW9uIG51bWJlciBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJvciB3aGVuCisjIHBhcnNpbmcgYSAubW8gZmlsZQorCitHTlVfTU9fREFUQV9CQURfTUFKT1JfVkVSU0lPTiA9IGInJydcCiszaElFbFFBQUJRQUdBQUFBSEFBQUFFd0FBQUFMQUFBQWZBQUFBQUFBQUFDb0FBQUFGUUFBQUtrQUFBQWpBQUFBdndBQUFLRUFBQURqCitBQUFBQndBQUFJVUJBQUFMQUFBQWpRRUFBRVVCQUFDWkFRQUFGZ0FBQU44Q0FBQWVBQUFBOWdJQUFLRUFBQUFWQXdBQUJRQUFBTGNECitBQUFKQUFBQXZRTUFBQUVBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUJRQUFBQVlBQUFBQ0FBQUFBRkpoCitlVzF2Ym1RZ1RIVjRkWEo1SUZsaFkyZ3RkQUJVYUdWeVpTQnBjeUFsY3lCbWFXeGxBRlJvWlhKbElHRnlaU0FsY3lCbWFXeGxjd0JVCithR2x6SUcxdlpIVnNaU0J3Y205MmFXUmxjeUJwYm5SbGNtNWhkR2x2Ym1Gc2FYcGhkR2x2YmlCaGJtUWdiRzlqWVd4cGVtRjBhVzl1CitDbk4xY0hCdmNuUWdabTl5SUhsdmRYSWdVSGwwYUc5dUlIQnliMmR5WVcxeklHSjVJSEJ5YjNacFpHbHVaeUJoYmlCcGJuUmxjbVpoCitZMlVnZEc4Z2RHaGxJRWRPVlFwblpYUjBaWGgwSUcxbGMzTmhaMlVnWTJGMFlXeHZaeUJzYVdKeVlYSjVMZ0J0ZFd4c2RYTnJBRzUxCitaR2RsSUc1MVpHZGxBRkJ5YjJwbFkzUXRTV1F0Vm1WeWMybHZiam9nTWk0d0NsQlBMVkpsZG1semFXOXVMVVJoZEdVNklESXdNREF0CitNRGd0TWprZ01USTZNVGt0TURRNk1EQUtUR0Z6ZEMxVWNtRnVjMnhoZEc5eU9pQktMaUJFWVhacFpDQkpZc09odzdGbGVpQThhaTFrCitZWFpwWkVCdWIyOXpMbVp5UGdwTVlXNW5kV0ZuWlMxVVpXRnRPaUJZV0NBOGNIbDBhRzl1TFdSbGRrQndlWFJvYjI0dWIzSm5QZ3BOCitTVTFGTFZabGNuTnBiMjQ2SURFdU1BcERiMjUwWlc1MExWUjVjR1U2SUhSbGVIUXZjR3hoYVc0N0lHTm9ZWEp6WlhROWFYTnZMVGc0CitOVGt0TVFwRGIyNTBaVzUwTFZSeVlXNXpabVZ5TFVWdVkyOWthVzVuT2lCdWIyNWxDa2RsYm1WeVlYUmxaQzFDZVRvZ2NIbG5aWFIwCitaWGgwTG5CNUlERXVNUXBRYkhWeVlXd3RSbTl5YlhNNklHNXdiSFZ5WVd4elBUSTdJSEJzZFhKaGJEMXVJVDB4T3dvQVZHaHliMkYwCitkMjlpWW14bGNpQk5ZVzVuY205MlpRQklZWGtnSlhNZ1ptbGphR1Z5YndCSVlYa2dKWE1nWm1samFHVnliM01BUjNWMlppQjZZbkZvCitlWElnWTJWaWFYWnhjbVlnZG1GbmNtVmhibWQyWW1GdWVYWnRibWQyWW1FZ2JtRnhJSGxpY0c1NWRtMXVaM1ppWVFwbWFHTmpZbVZuCitJSE5pWlNCc1ltaGxJRU5zWjNWaVlTQmpaV0owWlc1NlppQnZiQ0JqWldKcGRuRjJZWFFnYm1FZ2RtRm5jbVZ6Ym5CeUlHZGlJR2QxCitjaUJVUVVnS2RISm5aM0pyWnlCNmNtWm1iblJ5SUhCdVoyNTVZblFnZVhadlpXNWxiQzRBWW1GamIyNEFkMmx1YXlCM2FXNXJBQT09CisnJycKKworIyBUaGlzIGRhdGEgY29udGFpbnMgYW4gaW52YWxpZCBtaW5vciB2ZXJzaW9uIG51bWJlciAoNykKKyMgQW4gdW5leHBlY3RlZCBtaW5vciB2ZXJzaW9uIG51bWJlciBvbmx5IGluZGljYXRlcyB0aGF0IHNvbWUgb2YgdGhlIGZpbGUncworIyBjb250ZW50cyBtYXkgbm90IGJlIGFibGUgdG8gYmUgcmVhZC4gSXQgZG9lcyBub3QgaW5kaWNhdGUgYW4gZXJyb3IuCisKK0dOVV9NT19EQVRBX0JBRF9NSU5PUl9WRVJTSU9OID0gYicnJ1wKKzNoSUVsUWNBQUFBR0FBQUFIQUFBQUV3QUFBQUxBQUFBZkFBQUFBQUFBQUNvQUFBQUZRQUFBS2tBQUFBakFBQUF2d0FBQUtFQUFBRGoKK0FBQUFCd0FBQUlVQkFBQUxBQUFBalFFQUFFVUJBQUNaQVFBQUZnQUFBTjhDQUFBZUFBQUE5Z0lBQUtFQUFBQVZBd0FBQlFBQUFMY0QKK0FBQUpBQUFBdlFNQUFBRUFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQlFBQUFBWUFBQUFDQUFBQUFGSmgKK2VXMXZibVFnVEhWNGRYSjVJRmxoWTJndGRBQlVhR1Z5WlNCcGN5QWxjeUJtYVd4bEFGUm9aWEpsSUdGeVpTQWxjeUJtYVd4bGN3QlUKK2FHbHpJRzF2WkhWc1pTQndjbTkyYVdSbGN5QnBiblJsY201aGRHbHZibUZzYVhwaGRHbHZiaUJoYm1RZ2JHOWpZV3hwZW1GMGFXOXUKK0NuTjFjSEJ2Y25RZ1ptOXlJSGx2ZFhJZ1VIbDBhRzl1SUhCeWIyZHlZVzF6SUdKNUlIQnliM1pwWkdsdVp5QmhiaUJwYm5SbGNtWmgKK1kyVWdkRzhnZEdobElFZE9WUXBuWlhSMFpYaDBJRzFsYzNOaFoyVWdZMkYwWVd4dlp5QnNhV0p5WVhKNUxnQnRkV3hzZFhOckFHNTEKK1pHZGxJRzUxWkdkbEFGQnliMnBsWTNRdFNXUXRWbVZ5YzJsdmJqb2dNaTR3Q2xCUExWSmxkbWx6YVc5dUxVUmhkR1U2SURJd01EQXQKK01EZ3RNamtnTVRJNk1Ua3RNRFE2TURBS1RHRnpkQzFVY21GdWMyeGhkRzl5T2lCS0xpQkVZWFpwWkNCSllzT2h3N0ZsZWlBOGFpMWsKK1lYWnBaRUJ1YjI5ekxtWnlQZ3BNWVc1bmRXRm5aUzFVWldGdE9pQllXQ0E4Y0hsMGFHOXVMV1JsZGtCd2VYUm9iMjR1YjNKblBncE4KK1NVMUZMVlpsY25OcGIyNDZJREV1TUFwRGIyNTBaVzUwTFZSNWNHVTZJSFJsZUhRdmNHeGhhVzQ3SUdOb1lYSnpaWFE5YVhOdkxUZzQKK05Ua3RNUXBEYjI1MFpXNTBMVlJ5WVc1elptVnlMVVZ1WTI5a2FXNW5PaUJ1YjI1bENrZGxibVZ5WVhSbFpDMUNlVG9nY0hsblpYUjAKK1pYaDBMbkI1SURFdU1RcFFiSFZ5WVd3dFJtOXliWE02SUc1d2JIVnlZV3h6UFRJN0lIQnNkWEpoYkQxdUlUMHhPd29BVkdoeWIyRjAKK2QyOWlZbXhsY2lCTllXNW5jbTkyWlFCSVlYa2dKWE1nWm1samFHVnlid0JJWVhrZ0pYTWdabWxqYUdWeWIzTUFSM1YyWmlCNlluRm8KK2VYSWdZMlZpYVhaeGNtWWdkbUZuY21WaGJtZDJZbUZ1ZVhadGJtZDJZbUVnYm1GeElIbGljRzU1ZG0xdVozWmlZUXBtYUdOalltVm4KK0lITmlaU0JzWW1obElFTnNaM1ZpWVNCalpXSjBaVzU2WmlCdmJDQmpaV0pwZG5GMllYUWdibUVnZG1GbmNtVnpibkJ5SUdkaUlHZDEKK2NpQlVRVWdLZEhKblozSnJaeUI2Y21abWJuUnlJSEJ1WjI1NVluUWdlWFp2Wlc1bGJDNEFZbUZqYjI0QWQybHVheUIzYVc1ckFBPT0KKycnJworCisKIFVNT19EQVRBID0gYicnJ1wKIDNoSUVsUUFBQUFBQ0FBQUFIQUFBQUN3QUFBQUZBQUFBUEFBQUFBQUFBQUJRQUFBQUJBQUFBRkVBQUFBUEFRQUFWZ0FBQUFRQUFBQm0KIEFRQUFBUUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBWVdMRG5nQlFjbTlxWldOMExVbGtMVlpsY25OcGIyNDZJREl1TUFwUVR5MVMKQEAgLTU2LDYgKzEwNSw4IEBACiAKIExPQ0FMRURJUiA9IG9zLnBhdGguam9pbigneHgnLCAnTENfTUVTU0FHRVMnKQogTU9GSUxFID0gb3MucGF0aC5qb2luKExPQ0FMRURJUiwgJ2dldHRleHQubW8nKQorTU9GSUxFX0JBRF9NQUpPUl9WRVJTSU9OID0gb3MucGF0aC5qb2luKExPQ0FMRURJUiwgJ2dldHRleHRfYmFkX21ham9yX3ZlcnNpb24ubW8nKQorTU9GSUxFX0JBRF9NSU5PUl9WRVJTSU9OID0gb3MucGF0aC5qb2luKExPQ0FMRURJUiwgJ2dldHRleHRfYmFkX21pbm9yX3ZlcnNpb24ubW8nKQogVU1PRklMRSA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICd1Z2V0dGV4dC5tbycpCiBNTU9GSUxFID0gb3MucGF0aC5qb2luKExPQ0FMRURJUiwgJ21ldGFkYXRhLm1vJykKIApAQCAtNjYsNiArMTE3LDEwIEBACiAgICAgICAgICAgICBvcy5tYWtlZGlycyhMT0NBTEVESVIpCiAgICAgICAgIHdpdGggb3BlbihNT0ZJTEUsICd3YicpIGFzIGZwOgogICAgICAgICAgICAgZnAud3JpdGUoYmFzZTY0LmRlY29kZWJ5dGVzKEdOVV9NT19EQVRBKSkKKyAgICAgICAgd2l0aCBvcGVuKE1PRklMRV9CQURfTUFKT1JfVkVSU0lPTiwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiYXNlNjQuZGVjb2RlYnl0ZXMoR05VX01PX0RBVEFfQkFEX01BSk9SX1ZFUlNJT04pKQorICAgICAgICB3aXRoIG9wZW4oTU9GSUxFX0JBRF9NSU5PUl9WRVJTSU9OLCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGJhc2U2NC5kZWNvZGVieXRlcyhHTlVfTU9fREFUQV9CQURfTUlOT1JfVkVSU0lPTikpCiAgICAgICAgIHdpdGggb3BlbihVTU9GSUxFLCAnd2InKSBhcyBmcDoKICAgICAgICAgICAgIGZwLndyaXRlKGJhc2U2NC5kZWNvZGVieXRlcyhVTU9fREFUQSkpCiAgICAgICAgIHdpdGggb3BlbihNTU9GSUxFLCAnd2InKSBhcyBmcDoKQEAgLTE3Miw2ICsyMjcsMjEgQEAKICAgICBkZWYgdGVzdF90ZXh0ZG9tYWluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHRleHQudGV4dGRvbWFpbigpLCAnZ2V0dGV4dCcpCiAKKyAgICBkZWYgdGVzdF9iYWRfbWFqb3JfdmVyc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKE1PRklMRV9CQURfTUFKT1JfVkVSU0lPTiwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGdldHRleHQuR05VVHJhbnNsYXRpb25zKGZwKQorCisgICAgICAgICAgICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjZXB0aW9uLmVycm5vLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNlcHRpb24uc3RyZXJyb3IsICJCYWQgdmVyc2lvbiBudW1iZXIgNSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y2VwdGlvbi5maWxlbmFtZSwgTU9GSUxFX0JBRF9NQUpPUl9WRVJTSU9OKQorCisgICAgZGVmIHRlc3RfYmFkX21pbm9yX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihNT0ZJTEVfQkFEX01JTk9SX1ZFUlNJT04sICdyYicpIGFzIGZwOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IG5vIGVycm9yIGlzIHRocm93biB3aXRoIGEgYmFkIG1pbm9yIHZlcnNpb24gbnVtYmVyCisgICAgICAgICAgICBnZXR0ZXh0LkdOVVRyYW5zbGF0aW9ucyhmcCkKKwogICAgIGRlZiB0ZXN0X3NvbWVfdHJhbnNsYXRpb25zKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyB0ZXN0IHNvbWUgdHJhbnNsYXRpb25zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dsb2IucHkgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKaW5kZXggYTVhYjhkNi4uOTI2NTg4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQpAQCAtNCw4ICs0LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgVEVTVEZOLCBza2lwX3VubGVzc19zeW1saW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgY3JlYXRlX2VtcHR5X2ZpbGUpCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmssIGNyZWF0ZV9lbXB0eV9maWxlLCBjaGFuZ2VfY3dkKQogCiAKIGNsYXNzIEdsb2JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMyw2ICsxMyw5IEBACiAgICAgZGVmIG5vcm0oc2VsZiwgKnBhcnRzKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgKnBhcnRzKSkKIAorICAgIGRlZiBqb2lucyhzZWxmLCAqdHVwbGVzKToKKyAgICAgICAgcmV0dXJuIFtvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAqcGFydHMpIGZvciBwYXJ0cyBpbiB0dXBsZXNdCisKICAgICBkZWYgbWt0ZW1wKHNlbGYsICpwYXJ0cyk6CiAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5ub3JtKCpwYXJ0cykKICAgICAgICAgYmFzZSwgZmlsZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpCkBAIC0zOCwxNyArNDEsMTcgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50ZW1wZGlyKQogCi0gICAgZGVmIGdsb2Ioc2VsZiwgKnBhcnRzKToKKyAgICBkZWYgZ2xvYihzZWxmLCAqcGFydHMsICoqa3dhcmdzKToKICAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAxOgogICAgICAgICAgICAgcGF0dGVybiA9IHBhcnRzWzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXR0ZXJuID0gb3MucGF0aC5qb2luKCpwYXJ0cykKICAgICAgICAgcCA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsIHBhdHRlcm4pCi0gICAgICAgIHJlcyA9IGdsb2IuZ2xvYihwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZ2xvYi5pZ2xvYihwKSksIHJlcykKKyAgICAgICAgcmVzID0gZ2xvYi5nbG9iKHAsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZ2xvYi5pZ2xvYihwLCAqKmt3YXJncykpLCByZXMpCiAgICAgICAgIGJyZXMgPSBbb3MuZnNlbmNvZGUoeCkgZm9yIHggaW4gcmVzXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2IuZ2xvYihvcy5mc2VuY29kZShwKSksIGJyZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKG9zLmZzZW5jb2RlKHApKSksIGJyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYi5nbG9iKG9zLmZzZW5jb2RlKHApLCAqKmt3YXJncyksIGJyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKG9zLmZzZW5jb2RlKHApLCAqKmt3YXJncykpLCBicmVzKQogICAgICAgICByZXR1cm4gcmVzCiAKICAgICBkZWYgYXNzZXJ0U2VxdWVuY2VzRXF1YWxfbm9vcmRlcihzZWxmLCBsMSwgbDIpOgpAQCAtMTkyLDkgKzE5NSwxMTQgQEAKICAgICAgICAgY2hlY2soJy8vPy9jOi8/JywgJy8vPy9jOi9bP10nKQogICAgICAgICBjaGVjaygnLy8qLyovKicsICcvLyovKi9bKl0nKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEdsb2JUZXN0cykKKyAgICBkZWYgcmdsb2Ioc2VsZiwgKnBhcnRzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLmdsb2IoKnBhcnRzLCByZWN1cnNpdmU9VHJ1ZSwgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfZ2xvYihzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydFNlcXVlbmNlc0VxdWFsX25vb3JkZXIKKyAgICAgICAgZnVsbCA9IFsoJ1paWicsKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCksICgnYScsICdEJyksCisgICAgICAgICAgICAgICAgKCdhJywgJ2JjZCcpLAorICAgICAgICAgICAgICAgICgnYScsICdiY2QnLCAnRUYnKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ2VmZycpLAorICAgICAgICAgICAgICAgICgnYScsICdiY2QnLCAnZWZnJywgJ2hhJyksCisgICAgICAgICAgICAgICAgKCdhYWEnLCksICgnYWFhJywgJ3p6ekYnKSwKKyAgICAgICAgICAgICAgICAoJ2FhYicsKSwgKCdhYWInLCAnRicpLAorICAgICAgICAgICAgICAgXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZnVsbCArPSBbKCdzeW0xJywpLCAoJ3N5bTInLCksCisgICAgICAgICAgICAgICAgICAgICAoJ3N5bTMnLCksCisgICAgICAgICAgICAgICAgICAgICAoJ3N5bTMnLCAnRUYnKSwKKyAgICAgICAgICAgICAgICAgICAgICgnc3ltMycsICdlZmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICgnc3ltMycsICdlZmcnLCAnaGEnKSwKKyAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicpLCBzZWxmLmpvaW5zKCgnJywpLCAqZnVsbCkpCisgICAgICAgIGVxKHNlbGYucmdsb2IoJy4nLCAnKionKSwgc2VsZi5qb2lucygoJy4nLCcnKSwKKyAgICAgICAgICAgICooKCcuJywpICsgaSBmb3IgaSBpbiBmdWxsKSkpCisgICAgICAgIGRpcnMgPSBbKCdhJywgJycpLCAoJ2EnLCAnYmNkJywgJycpLCAoJ2EnLCAnYmNkJywgJ2VmZycsICcnKSwKKyAgICAgICAgICAgICAgICAoJ2FhYScsICcnKSwgKCdhYWInLCAnJyldCisgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBkaXJzICs9IFsoJ3N5bTMnLCAnJyksICgnc3ltMycsICdlZmcnLCAnJyldCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJywgJycpLCBzZWxmLmpvaW5zKCgnJywpLCAqZGlycykpCisKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignYScsICcqKicpLCBzZWxmLmpvaW5zKAorICAgICAgICAgICAgKCdhJywgJycpLCAoJ2EnLCAnRCcpLCAoJ2EnLCAnYmNkJyksICgnYScsICdiY2QnLCAnRUYnKSwKKyAgICAgICAgICAgICgnYScsICdiY2QnLCAnZWZnJyksICgnYScsICdiY2QnLCAnZWZnJywgJ2hhJykpKQorICAgICAgICBlcShzZWxmLnJnbG9iKCdhKionKSwgc2VsZi5qb2lucygoJ2EnLCksICgnYWFhJywpLCAoJ2FhYicsKSkpCisgICAgICAgIGV4cGVjdCA9IFsoJ2EnLCAnYmNkJywgJ0VGJyldCisgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBleHBlY3QgKz0gWygnc3ltMycsICdFRicpXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICdFRicpLCBzZWxmLmpvaW5zKCpleHBlY3QpKQorICAgICAgICBleHBlY3QgPSBbKCdhJywgJ2JjZCcsICdFRicpLCAoJ2FhYScsICd6enpGJyksICgnYWFiJywgJ0YnKV0KKyAgICAgICAgaWYgY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIGV4cGVjdCArPSBbKCdzeW0zJywgJ0VGJyldCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJywgJypGJyksIHNlbGYuam9pbnMoKmV4cGVjdCkpCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJywgJypGJywgJycpLCBbXSkKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionLCAnYmNkJywgJyonKSwgc2VsZi5qb2lucygKKyAgICAgICAgICAgICgnYScsICdiY2QnLCAnRUYnKSwgKCdhJywgJ2JjZCcsICdlZmcnKSkpCisgICAgICAgIGVxKHNlbGYucmdsb2IoJ2EnLCAnKionLCAnYmNkJyksIHNlbGYuam9pbnMoKCdhJywgJ2JjZCcpKSkKKworICAgICAgICB3aXRoIGNoYW5nZV9jd2Qoc2VsZi50ZW1wZGlyKToKKyAgICAgICAgICAgIGpvaW4gPSBvcy5wYXRoLmpvaW4KKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYignKionLCByZWN1cnNpdmU9VHJ1ZSksIFtqb2luKCppKSBmb3IgaSBpbiBmdWxsXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKCcqKicsICcnKSwgcmVjdXJzaXZlPVRydWUpLAorICAgICAgICAgICAgICAgIFtqb2luKCppKSBmb3IgaSBpbiBkaXJzXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKCcqKicsJ3p6KkYnKSwgcmVjdXJzaXZlPVRydWUpLAorICAgICAgICAgICAgICAgIFtqb2luKCdhYWEnLCAnenp6RicpXSkKKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYignKip6eipGJywgcmVjdXJzaXZlPVRydWUpLCBbXSkKKyAgICAgICAgICAgIGV4cGVjdCA9IFtqb2luKCdhJywgJ2JjZCcsICdFRicpXQorICAgICAgICAgICAgaWYgY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgICAgICBleHBlY3QgKz0gW2pvaW4oJ3N5bTMnLCAnRUYnKV0KKyAgICAgICAgICAgIGVxKGdsb2IuZ2xvYihqb2luKCcqKicsICdFRicpLCByZWN1cnNpdmU9VHJ1ZSksIGV4cGVjdCkKKworCitAc2tpcF91bmxlc3Nfc3ltbGluaworY2xhc3MgU3ltbGlua0xvb3BHbG9iVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2VsZmxpbmsoc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSBURVNURk4gKyAiX2RpciIKKyAgICAgICAgb3MubWFrZWRpcnModGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIHRlbXBkaXIpCisgICAgICAgIHdpdGggY2hhbmdlX2N3ZCh0ZW1wZGlyKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKCdkaXInKQorICAgICAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKCdkaXInLCAnZmlsZScpKQorICAgICAgICAgICAgb3Muc3ltbGluayhvcy5jdXJkaXIsIG9zLnBhdGguam9pbignZGlyJywgJ2xpbmsnKSkKKworICAgICAgICAgICAgcmVzdWx0cyA9IGdsb2IuZ2xvYignKionLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBsZW4oc2V0KHJlc3VsdHMpKSkKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZXQocmVzdWx0cykKKyAgICAgICAgICAgIGRlcHRoID0gMAorICAgICAgICAgICAgd2hpbGUgcmVzdWx0czoKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCooWydkaXInXSArIFsnbGluayddICogZGVwdGgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKworICAgICAgICAgICAgcmVzdWx0cyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oJyoqJywgJ2ZpbGUnKSwgcmVjdXJzaXZlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgbGVuKHNldChyZXN1bHRzKSkpCisgICAgICAgICAgICByZXN1bHRzID0gc2V0KHJlc3VsdHMpCisgICAgICAgICAgICBkZXB0aCA9IDAKKyAgICAgICAgICAgIHdoaWxlIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqKFsnZGlyJ10gKyBbJ2xpbmsnXSAqIGRlcHRoICsgWydmaWxlJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgcmVzdWx0cykKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShwYXRoKQorICAgICAgICAgICAgICAgIGRlcHRoICs9IDEKKworICAgICAgICAgICAgcmVzdWx0cyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oJyoqJywgJycpLCByZWN1cnNpdmU9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBsZW4oc2V0KHJlc3VsdHMpKSkKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZXQocmVzdWx0cykKKyAgICAgICAgICAgIGRlcHRoID0gMAorICAgICAgICAgICAgd2hpbGUgcmVzdWx0czoKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCooWydkaXInXSArIFsnbGluayddICogZGVwdGggKyBbJyddKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHJlc3VsdHMpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUocGF0aCkKKyAgICAgICAgICAgICAgICBkZXB0aCArPSAxCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5IGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CmluZGV4IDI1MDQ1MjMuLmVjM2Q3ODMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKQEAgLTEsNyArMSw4IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDEsIGdyYW1tYXIuCiAjIFRoaXMganVzdCB0ZXN0cyB3aGV0aGVyIHRoZSBwYXJzZXIgYWNjZXB0cyB0aGVtIGFsbC4KIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY2hlY2tfc3ludGF4X2Vycm9yCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yCitpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiAjIHRlc3RpbmcgaW1wb3J0ICoKQEAgLTIwNSw2ICsyMDYsNyBAQAogICAgICAgICBkMDEoMSkKICAgICAgICAgZDAxKCooMSwpKQogICAgICAgICBkMDEoKltdIG9yIFsyXSkKKyAgICAgICAgZDAxKCooKSBvciAoKSwgKnt9IGFuZCAoKSwgKiooKSBvciB7fSkKICAgICAgICAgZDAxKCoqeydhJzoyfSkKICAgICAgICAgZDAxKCoqeydhJzoyfSBvciB7fSkKICAgICAgICAgZGVmIGQxMShhLCBiPTEpOiBwYXNzCkBAIC0yOTgsOCArMzAwLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigxLCB4PTIsICpbMywgNF0sIHk9NSksICgoMSwgMywgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyd4JzoyLCAneSc6NX0pKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImYoMSwgKigyLDMpLCA0KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigxLCAqKDIsMyksIDQpLCAoKDEsIDIsIDMsIDQpLCB7fSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZigxLCB4PTIsICooMyw0KSwgeD01KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigqKnsnZWdncyc6J3NjcmFtYmxlZCcsICdzcGFtJzonZnJpZWQnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgpLCB7J2VnZ3MnOidzY3JhbWJsZWQnLCAnc3BhbSc6J2ZyaWVkJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoc3BhbT0nZnJpZWQnLCAqKnsnZWdncyc6J3NjcmFtYmxlZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCksIHsnZWdncyc6J3NjcmFtYmxlZCcsICdzcGFtJzonZnJpZWQnfSkpCiAKICAgICAgICAgIyBhcmd1bWVudCBhbm5vdGF0aW9uIHRlc3RzCiAgICAgICAgIGRlZiBmKHgpIC0+IGxpc3Q6IHBhc3MKQEAgLTUzMCw3ICs1MzYsOCBAQAogICAgICAgICAjIE5vdCBhbGxvd2VkIGF0IGNsYXNzIHNjb3BlCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIDEiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzp5aWVsZCBmcm9tICgpIikKLQorICAgICAgICAjIENoZWNrIGFubm90YXRpb24gcmVmbGVhayBvbiBTeW50YXhFcnJvcgorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKGE6KHlpZWxkKSk6IHBhc3MiKQogCiAgICAgZGVmIHRlc3RfcmFpc2Uoc2VsZik6CiAgICAgICAgICMgJ3JhaXNlJyB0ZXN0IFsnLCcgdGVzdF0KQEAgLTEwMTgsOSArMTAyNSwxMDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoRmFsc2UgaXMgMikgaXMgMykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShGYWxzZSBpcyAyIGlzIDMpCiAKKyAgICBkZWYgdGVzdF9tYXRyaXhfbXVsKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgbm90IGludGVuZGVkIHRvIGJlIGEgY29tcHJlaGVuc2l2ZSB0ZXN0LCByYXRoZXIganVzdCB0byBiZSBmZXcKKyAgICAgICAgIyBzYW1wbGVzIG9mIHRoZSBAIG9wZXJhdG9yIGluIHRlc3RfZ3JhbW1hci5weS4KKyAgICAgICAgY2xhc3MgTToKKyAgICAgICAgICAgIGRlZiBfX21hdG11bF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiA0CisgICAgICAgICAgICBkZWYgX19pbWF0bXVsX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgc2VsZi5vdGhlciA9IG8KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBtID0gTSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSBAIG0sIDQpCisgICAgICAgIG0gQD0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm90aGVyLCA0MikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUb2tlblRlc3RzLCBHcmFtbWFyVGVzdHMpCisgICAgZGVmIHRlc3RfYXN5bmNfYXdhaXQoc2VsZik6CisgICAgICAgIGFzeW5jID0gMQorICAgICAgICBhd2FpdCA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luYywgMSkKKworICAgICAgICBkZWYgYXN5bmMoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGF3YWl0CisgICAgICAgICAgICBhd2FpdCA9IDEwCisgICAgICAgIGFzeW5jKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCwgMTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShib29sKGFzeW5jLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQorCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBkZWYgc3VtKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYgMToKKyAgICAgICAgICAgICAgICBhd2FpdCBzb21lb2JqKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QuX19uYW1lX18sICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wodGVzdC5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKKworICAgICAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICAgICAgc2V0YXR0cihmdW5jLCAnX21hcmtlZCcsIFRydWUpCisgICAgICAgICAgICByZXR1cm4gZnVuYworCisgICAgICAgIEBkZWNvcmF0b3IKKyAgICAgICAgYXN5bmMgZGVmIHRlc3QyKCk6CisgICAgICAgICAgICByZXR1cm4gMjIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QyLl9tYXJrZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdDIuX19uYW1lX18sICd0ZXN0MicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKHRlc3QyLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBEb25lKEV4Y2VwdGlvbik6IHBhc3MKKworICAgICAgICBjbGFzcyBBSXRlcjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUl0ZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyBmb3IgaSwgaiBpbiBBSXRlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFJdGVyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByYWlzZSBEb25lCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEb25lKToKKyAgICAgICAgICAgIGZvbygpLnNlbmQoTm9uZSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX3dpdGgoc2VsZik6CisgICAgICAgIGNsYXNzIERvbmUoRXhjZXB0aW9uKTogcGFzcworCisgICAgICAgIGNsYXNzIG1hbmFnZXI6CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKDEsIDIpCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICpleGMpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcigpIGFzIHg6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCkgYXMgKHgsIHkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcigpLCBtYW5hZ2VyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCkgYXMgeCwgbWFuYWdlcigpIGFzIHk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgd2l0aCBtYW5hZ2VyKCkgYXMgeCwgbWFuYWdlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHJhaXNlIERvbmUKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERvbmUpOgorICAgICAgICAgICAgZm9vKCkuc2VuZChOb25lKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5IGIvTGliL3Rlc3QvdGVzdF9ncnAucHkKaW5kZXggNzQ5MDQxYy4uMjcyYjA4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncnAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncnAucHkKQEAgLTkyLDggKzkyLDUgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgZ3JwLmdldGdyZ2lkLCBmYWtlZ2lkKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoR3JvdXBEYXRhYmFzZVRlc3RDYXNlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggYjQxNzA0NC4uZDg0MDhlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IGlvCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgYXJyYXkKIGd6aXAgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2d6aXAnKQogCiBkYXRhMSA9IGIiIiIgIGludCBsZW5ndGg9REVGQVVMVEFMTE9DLCBlcnIgPSBaX09LOwpAQCAtNzcsMTUgKzc4LDE4IEBACiAgICAgZGVmIHRlc3Rfd3JpdGVfYnl0ZWFycmF5KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2FuZF9yZWFkX2JhY2soYnl0ZWFycmF5KGRhdGExICogNTApKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfYXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfYW5kX3JlYWRfYmFjayhhcnJheS5hcnJheSgnSScsIGRhdGExICogNDApKQorCiAgICAgZGVmIHRlc3Rfd3JpdGVfaW5jb21wYXRpYmxlX3R5cGUoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IG5vbi1ieXRlcy1saWtlIHR5cGVzIHJhaXNlIFR5cGVFcnJvci4KICAgICAgICAgIyBJc3N1ZSAjMjE1NjA6IGF0dGVtcHRzIHRvIHdyaXRlIGluY29tcGF0aWJsZSB0eXBlcwogICAgICAgICAjIHNob3VsZCBub3QgYWZmZWN0IHRoZSBzdGF0ZSBvZiB0aGUgZmlsZW9iamVjdAogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBmLndyaXRlKCdhJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCcnKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgICAgIGYud3JpdGUoWzFdKQorICAgICAgICAgICAgICAgIGYud3JpdGUoW10pCiAgICAgICAgICAgICBmLndyaXRlKGRhdGExKQogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGRhdGExKQpAQCAtMTE5LDcgKzEyMywxMCBAQAogICAgICAgICAjIFdyaXRlIHRvIGEgZmlsZSwgb3BlbiBpdCBmb3IgcmVhZGluZywgdGhlbiBjbG9zZSBpdC4KICAgICAgICAgc2VsZi50ZXN0X3dyaXRlKCkKICAgICAgICAgZiA9IGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3InKQorICAgICAgICBmaWxlb2JqID0gZi5maWxlb2JqCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmlsZW9iai5jbG9zZWQpCiAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZW9iai5jbG9zZWQpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBmLnJlYWQoMSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKQEAgLTEyOCw3ICsxMzUsMTAgQEAKICAgICAgICAgICAgIGYudGVsbCgpCiAgICAgICAgICMgT3BlbiB0aGUgZmlsZSBmb3Igd3JpdGluZywgdGhlbiBjbG9zZSBpdC4KICAgICAgICAgZiA9IGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3cnKQorICAgICAgICBmaWxlb2JqID0gZi5maWxlb2JqCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmlsZW9iai5jbG9zZWQpCiAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZW9iai5jbG9zZWQpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBmLndyaXRlKGInJykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKQEAgLTI2Nyw5ICsyNzcsMTAgQEAKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICd3JywgbXRpbWUgPSBtdGltZSkgYXMgZldyaXRlOgogICAgICAgICAgICAgZldyaXRlLndyaXRlKGRhdGExKQogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSkgYXMgZlJlYWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihmUmVhZCwgJ210aW1lJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmUmVhZC5tdGltZSkKICAgICAgICAgICAgIGRhdGFSZWFkID0gZlJlYWQucmVhZCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGFSZWFkLCBkYXRhMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGZSZWFkLCAnbXRpbWUnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZlJlYWQubXRpbWUsIG10aW1lKQogCiAgICAgZGVmIHRlc3RfbWV0YWRhdGEoc2VsZik6CkBAIC00MTIsNiArNDIzLDE4IEBACiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhMSAqIDUwKQogCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgorICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKKyAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpCisKKyAgICAgICAgYm9tYiA9IGlvLkJ5dGVzSU8oYm9tYikKKyAgICAgICAgZGVjb21wID0gZ3ppcC5HemlwRmlsZShmaWxlb2JqPWJvbWIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBtYXhfZGVjb21wID0gMSArIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKKyAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCisKICAgICAjIFRlc3RpbmcgY29tcHJlc3MvZGVjb21wcmVzcyBzaG9ydGN1dCBmdW5jdGlvbnMKIAogICAgIGRlZiB0ZXN0X2NvbXByZXNzKHNlbGYpOgpAQCAtNDU5LDcgKzQ4Miw3IEBACiAgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGRhdGExKQogICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgotICAgICAgICAgICAgZi5maWxlb2JqLnByZXBlbmQoKQorICAgICAgICAgICAgZi5fYnVmZmVyLnJhdy5fZnAucHJlcGVuZCgpCiAKIGNsYXNzIFRlc3RPcGVuKEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9iaW5hcnlfbW9kZXMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKaW5kZXggZjY0N2M2Zi4uYWE0ZWZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgSGFzaGFibGUKIAogSVNfNjRCSVQgPSBzeXMubWF4c2l6ZSA+IDIqKjMyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5IGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQppbmRleCBiNWEyZmQ4Li5iN2U4MjU5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKQEAgLTYsMTQgKzYsMTUgQEAKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgc2tpcFVubGVzcworZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogCiBweV9oZWFwcSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnaGVhcHEnLCBibG9ja2VkPVsnX2hlYXBxJ10pCiBjX2hlYXBxID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdoZWFwcScsIGZyZXNoPVsnX2hlYXBxJ10pCiAKICMgX2hlYXBxLm5sYXJnZXN0L25zbWFsbGVzdCBhcmUgc2F2ZWQgaW4gaGVhcHEuX25sYXJnZXN0L19zbWFsbGVzdCB3aGVuCiAjIF9oZWFwcSBpcyBpbXBvcnRlZCwgc28gY2hlY2sgdGhlbSB0aGVyZQotZnVuY19uYW1lcyA9IFsnaGVhcGlmeScsICdoZWFwcG9wJywgJ2hlYXBwdXNoJywgJ2hlYXBwdXNocG9wJywKLSAgICAgICAgICAgICAgJ2hlYXByZXBsYWNlJywgJ19ubGFyZ2VzdCcsICdfbnNtYWxsZXN0J10KK2Z1bmNfbmFtZXMgPSBbJ2hlYXBpZnknLCAnaGVhcHBvcCcsICdoZWFwcHVzaCcsICdoZWFwcHVzaHBvcCcsICdoZWFwcmVwbGFjZScsCisgICAgICAgICAgICAgICdfaGVhcHBvcF9tYXgnLCAnX2hlYXByZXBsYWNlX21heCcsICdfaGVhcGlmeV9tYXgnXQogCiBjbGFzcyBUZXN0TW9kdWxlcyhUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcHlfZnVuY3Rpb25zKHNlbGYpOgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoZWFwW3BhcmVudHBvc10gPD0gaXRlbSkKIAogICAgIGRlZiB0ZXN0X2hlYXBpZnkoc2VsZik6Ci0gICAgICAgIGZvciBzaXplIGluIHJhbmdlKDMwKToKKyAgICAgICAgZm9yIHNpemUgaW4gbGlzdChyYW5nZSgzMCkpICsgWzIwMDAwXToKICAgICAgICAgICAgIGhlYXAgPSBbcmFuZG9tLnJhbmRvbSgpIGZvciBkdW1teSBpbiByYW5nZShzaXplKV0KICAgICAgICAgICAgIHNlbGYubW9kdWxlLmhlYXBpZnkoaGVhcCkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfaW52YXJpYW50KGhlYXApCkBAIC0xNTIsMTEgKzE1MywyMSBAQAogCiAgICAgZGVmIHRlc3RfbWVyZ2Uoc2VsZik6CiAgICAgICAgIGlucHV0cyA9IFtdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKHJhbmRvbS5yYW5kcmFuZ2UoNSkpOgotICAgICAgICAgICAgcm93ID0gc29ydGVkKHJhbmRvbS5yYW5kcmFuZ2UoMTAwMCkgZm9yIGogaW4gcmFuZ2UocmFuZG9tLnJhbmRyYW5nZSgxMCkpKQorICAgICAgICBmb3IgaSBpbiByYW5nZShyYW5kb20ucmFuZHJhbmdlKDI1KSk6CisgICAgICAgICAgICByb3cgPSBbXQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UocmFuZG9tLnJhbmRyYW5nZSgxMDApKToKKyAgICAgICAgICAgICAgICB0dXAgPSByYW5kb20uY2hvaWNlKCdBQkMnKSwgcmFuZG9tLnJhbmRyYW5nZSgtNTAwLCA1MDApCisgICAgICAgICAgICAgICAgcm93LmFwcGVuZCh0dXApCiAgICAgICAgICAgICBpbnB1dHMuYXBwZW5kKHJvdykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoY2hhaW4oKmlucHV0cykpLCBsaXN0KHNlbGYubW9kdWxlLm1lcmdlKCppbnB1dHMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYubW9kdWxlLm1lcmdlKCkpLCBbXSkKKworICAgICAgICBmb3Iga2V5IGluIFtOb25lLCBpdGVtZ2V0dGVyKDApLCBpdGVtZ2V0dGVyKDEpLCBpdGVtZ2V0dGVyKDEsIDApXToKKyAgICAgICAgICAgIGZvciByZXZlcnNlIGluIFtGYWxzZSwgVHJ1ZV06CisgICAgICAgICAgICAgICAgc2VxcyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIHNlcSBpbiBpbnB1dHM6CisgICAgICAgICAgICAgICAgICAgIHNlcXMuYXBwZW5kKHNvcnRlZChzZXEsIGtleT1rZXksIHJldmVyc2U9cmV2ZXJzZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoY2hhaW4oKmlucHV0cyksIGtleT1rZXksIHJldmVyc2U9cmV2ZXJzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHNlbGYubW9kdWxlLm1lcmdlKCpzZXFzLCBrZXk9a2V5LCByZXZlcnNlPXJldmVyc2UpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5tb2R1bGUubWVyZ2UoKSksIFtdKQogCiAgICAgZGVmIHRlc3RfbWVyZ2VfZG9lc19ub3Rfc3VwcHJlc3NfaW5kZXhfZXJyb3Ioc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTkwMTg6IEhlYXBxLm1lcmdlIHN1cHByZXNzZXMgSW5kZXhFcnJvciBmcm9tIHVzZXIgZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2htYWMucHkgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKaW5kZXggY2RlNTZmZC4uOTg4MjZiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQpAQCAtNDkzLDE0ICs0OTMsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBUZXN0VmVjdG9yc1Rlc3RDYXNlLAotICAgICAgICBDb25zdHJ1Y3RvclRlc3RDYXNlLAotICAgICAgICBTYW5pdHlUZXN0Q2FzZSwKLSAgICAgICAgQ29weVRlc3RDYXNlLAotICAgICAgICBDb21wYXJlRGlnZXN0VGVzdENhc2UKLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfaHRtbC5weQppbmRleCBkNmYwYWU4Li44MzllMGE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0bWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odG1sLnB5CkBAIC00LDcgKzQsNiBAQAogCiBpbXBvcnQgaHRtbAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIAogY2xhc3MgSHRtbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCAxNDRmODIwLi4xMTQyMGIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CkBAIC04Miw3ICs4Miw3IEBACiBjbGFzcyBUZXN0Q2FzZUJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCiAKICAgICBkZWYgX3J1bl9jaGVjayhzZWxmLCBzb3VyY2UsIGV4cGVjdGVkX2V2ZW50cywgY29sbGVjdG9yPU5vbmUpOgogICAgICAgICBpZiBjb2xsZWN0b3IgaXMgTm9uZToKQEAgLTEwMiwyMSArMTAyLDggQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKHNvdXJjZSwgZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRDb2xsZWN0b3JFeHRyYShjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKSkKIAotICAgIGRlZiBfcGFyc2VfZXJyb3Ioc2VsZiwgc291cmNlKToKLSAgICAgICAgZGVmIHBhcnNlKHNvdXJjZT1zb3VyY2UpOgotICAgICAgICAgICAgcGFyc2VyID0gc2VsZi5nZXRfY29sbGVjdG9yKCkKLSAgICAgICAgICAgIHBhcnNlci5mZWVkKHNvdXJjZSkKLSAgICAgICAgICAgIHBhcnNlci5jbG9zZSgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoaHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3IpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgcGFyc2UoKQogCi0KLWNsYXNzIEhUTUxQYXJzZXJTdHJpY3RUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgotCi0gICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aXRlPUZhbHNlKToKLSAgICAgICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSwgY29udmVydF9jaGFycmVmcz1GYWxzZSkKK2NsYXNzIEhUTUxQYXJzZXJUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIjw/cHJvY2Vzc2luZyBpbnN0cnVjdGlvbj4iLCBbCkBAIC0xOTgsOSArMTg1LDYgQEAKICAgICAgICAgICAgICgiZGF0YSIsICJ0aGlzIDwgdGV4dCA+IGNvbnRhaW5zIDwgYmFyZT5wb2ludHk8IGJyYWNrZXRzIiksCiAgICAgICAgICAgICBdKQogCi0gICAgZGVmIHRlc3RfaWxsZWdhbF9kZWNsYXJhdGlvbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCc8IXNwYWNlciB0eXBlPSJibG9jayIgaGVpZ2h0PSIyNSI+JykKLQogICAgIGRlZiB0ZXN0X3N0YXJ0dGFnX2VuZF9ib3VuZGFyeShzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCIiIjxhIGI9JzwnPiIiIiwgWygic3RhcnR0YWciLCAiYSIsIFsoImIiLCAiPCIpXSldKQogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIiIiPGEgYj0nPic+IiIiLCBbKCJzdGFydHRhZyIsICJhIiwgWygiYiIsICI+IildKV0pCkBAIC0yMzUsMjUgKzIxOSw2IEBACiAgICAgICAgIHNlbGYuX3J1bl9jaGVjayhbIjwhLS1hYmMtLSIsICI+Il0sIG91dHB1dCkKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKFsiPCEtLWFiYy0tPiIsICIiXSwgb3V0cHV0KQogCi0gICAgZGVmIHRlc3Rfc3RhcnR0YWdfanVua19jaGFycyhzZWxmKToKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8LyQ+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwvYSIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YTxhPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8L2E8YT4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPCEiKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEiKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEgZm9vPSdiYXInIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhIGZvbz0nYmFyIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhIGZvbz0nPiciKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEgZm9vPSc+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhJD4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkYj4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkYi8+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhJGIgID4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGEkYiAgLz4iKQotCiAgICAgZGVmIHRlc3RfdmFsaWRfZG9jdHlwZXMoc2VsZik6CiAgICAgICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9RQS8yMDAyLzA0L3ZhbGlkLWR0ZC1saXN0Lmh0bWwKICAgICAgICAgZHRkcyA9IFsnSFRNTCcsICAjIEhUTUw1IGRvY3R5cGUKQEAgLTI3OCw5ICsyNDMsNiBAQAogICAgICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCI8IURPQ1RZUEUgJXM+IiAlIGR0ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkZWNsJywgJ0RPQ1RZUEUgJyArIGR0ZCldKQogCi0gICAgZGVmIHRlc3RfZGVjbGFyYXRpb25fanVua19jaGFycyhzZWxmKToKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwhRE9DVFlQRSBmb28gJCA+IikKLQogICAgIGRlZiB0ZXN0X3N0YXJ0ZW5kdGFnKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIjxwLz4iLCBbCiAgICAgICAgICAgICAoInN0YXJ0ZW5kdGFnIiwgInAiLCBbXSksCkBAIC0zODEsNyArMzQzLDggQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKGh0bWwsIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfY29udmVydF9jaGFycmVmcyhzZWxmKToKLSAgICAgICAgY29sbGVjdG9yID0gbGFtYmRhOiBFdmVudENvbGxlY3RvckNoYXJyZWZzKGNvbnZlcnRfY2hhcnJlZnM9VHJ1ZSkKKyAgICAgICAgIyBkZWZhdWx0IHZhbHVlIGZvciBjb252ZXJ0X2NoYXJyZWZzIGlzIG5vdyBUcnVlCisgICAgICAgIGNvbGxlY3RvciA9IGxhbWJkYTogRXZlbnRDb2xsZWN0b3JDaGFycmVmcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0b3IoKS5jb252ZXJ0X2NoYXJyZWZzKQogICAgICAgICBjaGFycmVmcyA9IFsnJnF1b3Q7JywgJyYjMzQ7JywgJyYjeDIyOycsICcmcXVvdCcsICcmIzM0JywgJyYjeDIyJ10KICAgICAgICAgIyBjaGVjayBjaGFycmVmcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSB0ZXh0L2F0dHJpYnV0ZXMKQEAgLTQxOCwyMyArMzgxLDggQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCdubyBjaGFycmVmcyBoZXJlJywgWygnZGF0YScsICdubyBjaGFycmVmcyBoZXJlJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdG9yPWNvbGxlY3RvcigpKQogCi0KLWNsYXNzIEhUTUxQYXJzZXJUb2xlcmFudFRlc3RDYXNlKEhUTUxQYXJzZXJTdHJpY3RUZXN0Q2FzZSk6Ci0KLSAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGlvbl93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBFdmVudENvbGxlY3RvcigpICAjIGNvbnZlcnRfY2hhcnJlZnMgbm90IHBhc3NlZCBleHBsaWNpdGx5Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PUZhbHNlKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgIEV2ZW50Q29sbGVjdG9yKCkuZXJyb3IoJ3Rlc3QnKQotCisgICAgIyB0aGUgcmVtYWluaW5nIHRlc3RzIHdlcmUgZm9yIHRoZSAidG9sZXJhbnQiIHBhcnNlciAod2hpY2ggaXMgbm93CisgICAgIyB0aGUgZGVmYXVsdCksIGFuZCBjaGVjayB2YXJpb3VzIGtpbmQgb2YgYnJva2VuIG1hcmt1cAogICAgIGRlZiB0ZXN0X3RvbGVyYW50X3BhcnNpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygnPGh0bWwgPGh0bWw+dGU+Pnh0JmE8PGJjPC9hPjwvaHRtbD5cbicKICAgICAgICAgICAgICAgICAgICAgICAgICc8aW1nIHNyYz0iVVJMPjwvL2ltZz48L2h0bWw8L2h0bWw+JywgWwpAQCAtNjk1LDExICs2NDMsNyBAQAogICAgICAgICApCiAKIAotY2xhc3MgQXR0cmlidXRlc1N0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6Ci0KLSAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgotICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlLCBjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQorY2xhc3MgQXR0cmlidXRlc1Rlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgdGVzdF9hdHRyX3N5bnRheChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gWwpAQCAtNzU2LDEyICs3MDAsNiBAQAogICAgICAgICAgICAgWygic3RhcnR0YWciLCAiaHRtbCIsIFsoImZvbyIsICJcdTIwQUMmYWEmdW5zdXBwb3J0ZWQ7IildKV0pCiAKIAotCi1jbGFzcyBBdHRyaWJ1dGVzVG9sZXJhbnRUZXN0Q2FzZShBdHRyaWJ1dGVzU3RyaWN0VGVzdENhc2UpOgotCi0gICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBFdmVudENvbGxlY3Rvcihjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQotCiAgICAgZGVmIHRlc3RfYXR0cl9mdW5reV9uYW1lczIoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygKICAgICAgICAgICAgICI8YSAkPjxiICQ9JT48YyBcPS8+IiwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkKaW5kZXggYzdiNjgwYi4uZDNlMDZhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkKQEAgLTEsNSArMSw2IEBACiAjIFNpbXBsZSB0ZXN0IHN1aXRlIGZvciBodHRwL2Nvb2tpZXMucHkKIAoraW1wb3J0IGNvcHkKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHJ1bl9kb2N0ZXN0LCBjaGVja193YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGh0dHAgaW1wb3J0IGNvb2tpZXMKQEAgLTE1NCwxMyArMTU1LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDWydlZ2dzJ11bJ2h0dHBvbmx5J10sICdmb28nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENbJ2VnZ3MnXVsnc2VjdXJlJ10sICdiYXInKQogCi0gICAgZGVmIHRlc3RfYmFkX2F0dHJzKHNlbGYpOgotICAgICAgICAjIGlzc3VlIDE2NjExOiBtYWtlIHN1cmUgd2UgZG9uJ3QgYnJlYWsgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLSAgICAgICAgQyA9IGNvb2tpZXMuU2ltcGxlQ29va2llKCkKLSAgICAgICAgQy5sb2FkKCdjb29raWU9d2l0aDsgaW52YWxpZDsgdmVyc2lvbjsgc2Vjb25kPWNvb2tpZTsnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMub3V0cHV0KCksCi0gICAgICAgICAgICAnU2V0LUNvb2tpZTogY29va2llPXdpdGhcclxuU2V0LUNvb2tpZTogc2Vjb25kPWNvb2tpZScpCi0KICAgICBkZWYgdGVzdF9leHRyYV9zcGFjZXMoc2VsZik6CiAgICAgICAgIEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCiAgICAgICAgIEMubG9hZCgnZWdncyAgPSAgc2NyYW1ibGVkICA7ICBzZWN1cmUgIDsgIHBhdGggID0gIGJhciAgIDsgZm9vPWZvbyAgICcpCkBAIC0xOTUsNyArMTg5LDEwIEBACiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb29raWVzKHNlbGYpOgogICAgICAgICAjIEFjY2VwdGluZyB0aGVzZSBjb3VsZCBiZSBhIHNlY3VyaXR5IGlzc3VlCiAgICAgICAgIEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCi0gICAgICAgIGZvciBzIGluICgnXWZvbz14JywgJ1tmb289eCcsICdibGFoXWZvbz14JywgJ2JsYWhbZm9vPXgnKToKKyAgICAgICAgZm9yIHMgaW4gKCddZm9vPXgnLCAnW2Zvbz14JywgJ2JsYWhdZm9vPXgnLCAnYmxhaFtmb289eCcsCisgICAgICAgICAgICAgICAgICAnU2V0LUNvb2tpZTogZm9vPWJhcicsICdTZXQtQ29va2llOiBmb28nLAorICAgICAgICAgICAgICAgICAgJ2Zvbz1iYXI7IGJheicsICdiYXo7IGZvbz1iYXInLAorICAgICAgICAgICAgICAgICAgJ3NlY3VyZTtmb289YmFyJywgJ1ZlcnNpb249MTtmb289YmFyJyk6CiAgICAgICAgICAgICBDLmxvYWQocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChDKSwge30pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMub3V0cHV0KCksICcnKQpAQCAtMjE3LDYgKzIxNCwxNSBAQAogY2xhc3MgTW9yc2VsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciB0aGUgTW9yc2VsIG9iamVjdC4iIiIKIAorICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vcnNlbC5rZXkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vcnNlbC52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9yc2VsLmNvZGVkX3ZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbC5rZXlzKCksIGNvb2tpZXMuTW9yc2VsLl9yZXNlcnZlZC5rZXlzKCkpCisgICAgICAgIGZvciBrZXksIHZhbCBpbiBtb3JzZWwuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsLCAnJywga2V5KQorCiAgICAgZGVmIHRlc3RfcmVzZXJ2ZWRfa2V5cyhzZWxmKToKICAgICAgICAgTSA9IGNvb2tpZXMuTW9yc2VsKCkKICAgICAgICAgIyB0ZXN0cyB2YWxpZCBhbmQgaW52YWxpZCByZXNlcnZlZCBrZXlzIGZvciBNb3JzZWxzCkBAIC0yNjAsNiArMjY2LDE5NyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoY29va2llcy5Db29raWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE0uc2V0LCBpLCAnJXNfdmFsdWUnICUgaSwgJyVzX3ZhbHVlJyAlIGkpCiAKKyAgICBkZWYgdGVzdF9kZXByZWNhdGlvbihzZWxmKToKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsIHInXGJrZXlcYicpOgorICAgICAgICAgICAgbW9yc2VsLmtleSA9ICcnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidcYnZhbHVlXGInKToKKyAgICAgICAgICAgIG1vcnNlbC52YWx1ZSA9ICcnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidcYmNvZGVkX3ZhbHVlXGInKToKKyAgICAgICAgICAgIG1vcnNlbC5jb2RlZF92YWx1ZSA9ICcnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgcidcYkxlZ2FsQ2hhcnNcYicpOgorICAgICAgICAgICAgbW9yc2VsLnNldCgna2V5JywgJ3ZhbHVlJywgJ2NvZGVkX3ZhbHVlJywgTGVnYWxDaGFycz0nLionKQorCisgICAgZGVmIHRlc3RfZXEoc2VsZik6CisgICAgICAgIGJhc2VfY2FzZSA9ICgna2V5JywgJ3ZhbHVlJywgJyJ2YWx1ZSInKQorICAgICAgICBhdHRyaWJzID0geworICAgICAgICAgICAgJ3BhdGgnOiAnLycsCisgICAgICAgICAgICAnY29tbWVudCc6ICdmb28nLAorICAgICAgICAgICAgJ2RvbWFpbic6ICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAndmVyc2lvbic6IDIsCisgICAgICAgIH0KKyAgICAgICAgbW9yc2VsX2EgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbF9hLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICBtb3JzZWxfYS5zZXQoKmJhc2VfY2FzZSkKKyAgICAgICAgbW9yc2VsX2IgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbF9iLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICBtb3JzZWxfYi5zZXQoKmJhc2VfY2FzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vcnNlbF9hID09IG1vcnNlbF9iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vcnNlbF9hICE9IG1vcnNlbF9iKQorICAgICAgICBjYXNlcyA9ICgKKyAgICAgICAgICAgICgna2V5JywgJ3ZhbHVlJywgJ21pc21hdGNoJyksCisgICAgICAgICAgICAoJ2tleScsICdtaXNtYXRjaCcsICcidmFsdWUiJyksCisgICAgICAgICAgICAoJ21pc21hdGNoJywgJ3ZhbHVlJywgJyJ2YWx1ZSInKSwKKyAgICAgICAgKQorICAgICAgICBmb3IgY2FzZV9iIGluIGNhc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2FzZV9iKToKKyAgICAgICAgICAgICAgICBtb3JzZWxfYiA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgICAgICAgICBtb3JzZWxfYi51cGRhdGUoYXR0cmlicykKKyAgICAgICAgICAgICAgICBtb3JzZWxfYi5zZXQoKmNhc2VfYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vcnNlbF9hID09IG1vcnNlbF9iKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb3JzZWxfYSAhPSBtb3JzZWxfYikKKworICAgICAgICBtb3JzZWxfYiA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2IudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIG1vcnNlbF9iLnNldCgqYmFzZV9jYXNlKQorICAgICAgICBtb3JzZWxfYlsnY29tbWVudCddID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb3JzZWxfYSA9PSBtb3JzZWxfYikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vcnNlbF9hICE9IG1vcnNlbF9iKQorCisgICAgICAgICMgdGVzdCBtaXNtYXRjaGVkIHR5cGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29va2llcy5Nb3JzZWwoKSA9PSAxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29va2llcy5Nb3JzZWwoKSAhPSAxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvb2tpZXMuTW9yc2VsKCkgPT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb29raWVzLk1vcnNlbCgpICE9ICcnKQorICAgICAgICBpdGVtcyA9IGxpc3QoY29va2llcy5Nb3JzZWwoKS5pdGVtcygpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvb2tpZXMuTW9yc2VsKCkgPT0gaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb29raWVzLk1vcnNlbCgpICE9IGl0ZW1zKQorCisgICAgICAgICMgbW9yc2VsL2RpY3QKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwuc2V0KCpiYXNlX2Nhc2UpCisgICAgICAgIG1vcnNlbC51cGRhdGUoYXR0cmlicykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vcnNlbCA9PSBkaWN0KG1vcnNlbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9yc2VsICE9IGRpY3QobW9yc2VsKSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIG1vcnNlbF9hID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYS5zZXQoJ2ZvbycsICdiYXInLCAnYmF6JykKKyAgICAgICAgbW9yc2VsX2EudXBkYXRlKHsKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMiwKKyAgICAgICAgICAgICdjb21tZW50JzogJ2ZvbycsCisgICAgICAgIH0pCisgICAgICAgIG1vcnNlbF9iID0gbW9yc2VsX2EuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb3JzZWxfYiwgY29va2llcy5Nb3JzZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9yc2VsX2EsIG1vcnNlbF9iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbF9hLCBtb3JzZWxfYikKKworICAgICAgICBtb3JzZWxfYiA9IGNvcHkuY29weShtb3JzZWxfYSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vcnNlbF9iLCBjb29raWVzLk1vcnNlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb3JzZWxfYSwgbW9yc2VsX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsX2EsIG1vcnNlbF9iKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxbJ2V4cGlyZXMnXSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2V4cGlyZXMnXSwgMCkKKyAgICAgICAgbW9yc2VsWydWZXJzaW9uJ10gPSAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIG1vcnNlbFsnRE9NQUlOJ10gPSAnZXhhbXBsZS5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvb2tpZXMuQ29va2llRXJyb3IpOgorICAgICAgICAgICAgbW9yc2VsWydpbnZhbGlkJ10gPSAndmFsdWUnCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ludmFsaWQnLCBtb3JzZWwpCisKKyAgICBkZWYgdGVzdF9zZXRkZWZhdWx0KHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC51cGRhdGUoeworICAgICAgICAgICAgJ2RvbWFpbic6ICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAndmVyc2lvbic6IDIsCisgICAgICAgIH0pCisgICAgICAgICMgdGhpcyBzaG91bGRuJ3Qgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWwuc2V0ZGVmYXVsdCgnZXhwaXJlcycsICd2YWx1ZScpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2V4cGlyZXMnXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsLnNldGRlZmF1bHQoJ1ZlcnNpb24nLCAxKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ3ZlcnNpb24nXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWwuc2V0ZGVmYXVsdCgnRE9NQUlOJywgJ3ZhbHVlJyksICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvb2tpZXMuQ29va2llRXJyb3IpOgorICAgICAgICAgICAgbW9yc2VsLnNldGRlZmF1bHQoJ2ludmFsaWQnLCAndmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdpbnZhbGlkJywgbW9yc2VsKQorCisgICAgZGVmIHRlc3RfdXBkYXRlKHNlbGYpOgorICAgICAgICBhdHRyaWJzID0geydleHBpcmVzJzogMSwgJ1ZlcnNpb24nOiAyLCAnRE9NQUlOJzogJ2V4YW1wbGUuY29tJ30KKyAgICAgICAgIyB0ZXN0IGRpY3QgdXBkYXRlCisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZG9tYWluJ10sICdleGFtcGxlLmNvbScpCisgICAgICAgICMgdGVzdCBpdGVyYWJsZSB1cGRhdGUKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwudXBkYXRlKGxpc3QoYXR0cmlicy5pdGVtcygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2V4cGlyZXMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ3ZlcnNpb24nXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorICAgICAgICAjIHRlc3QgaXRlcmF0b3IgdXBkYXRlCisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZSgoaywgdikgZm9yIGssIHYgaW4gYXR0cmlicy5pdGVtcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZXhwaXJlcyddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZG9tYWluJ10sICdleGFtcGxlLmNvbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb29raWVzLkNvb2tpZUVycm9yKToKKyAgICAgICAgICAgIG1vcnNlbC51cGRhdGUoeydpbnZhbGlkJzogJ3ZhbHVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ludmFsaWQnLCBtb3JzZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9yc2VsLnVwZGF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb3JzZWwudXBkYXRlLCAwKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBtb3JzZWxfYSA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2Euc2V0KCdmb28nLCAnYmFyJywgJ2JheicpCisgICAgICAgIG1vcnNlbF9hLnVwZGF0ZSh7CisgICAgICAgICAgICAndmVyc2lvbic6IDIsCisgICAgICAgICAgICAnY29tbWVudCc6ICdmb28nLAorICAgICAgICB9KQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBtb3JzZWxfYiA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobW9yc2VsX2EsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9yc2VsX2IsIGNvb2tpZXMuTW9yc2VsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsX2IsIG1vcnNlbF9hKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vcnNlbF9iKSwgc3RyKG1vcnNlbF9hKSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vcnNlbCksICc8TW9yc2VsOiBOb25lPU5vbmU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsKSwgJ1NldC1Db29raWU6IE5vbmU9Tm9uZScpCisgICAgICAgIG1vcnNlbC5zZXQoJ2tleScsICd2YWwnLCAnY29kZWRfdmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vcnNlbCksICc8TW9yc2VsOiBrZXk9Y29kZWRfdmFsPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vcnNlbCksICdTZXQtQ29va2llOiBrZXk9Y29kZWRfdmFsJykKKyAgICAgICAgbW9yc2VsLnVwZGF0ZSh7CisgICAgICAgICAgICAncGF0aCc6ICcvJywKKyAgICAgICAgICAgICdjb21tZW50JzogJ2ZvbycsCisgICAgICAgICAgICAnZG9tYWluJzogJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdtYXgtYWdlJzogMCwKKyAgICAgICAgICAgICdzZWN1cmUnOiAwLAorICAgICAgICAgICAgJ3ZlcnNpb24nOiAxLAorICAgICAgICB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICAnPE1vcnNlbDoga2V5PWNvZGVkX3ZhbDsgQ29tbWVudD1mb287IERvbWFpbj1leGFtcGxlLmNvbTsgJworICAgICAgICAgICAgICAgICdNYXgtQWdlPTA7IFBhdGg9LzsgVmVyc2lvbj0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vcnNlbCksCisgICAgICAgICAgICAgICAgJ1NldC1Db29raWU6IGtleT1jb2RlZF92YWw7IENvbW1lbnQ9Zm9vOyBEb21haW49ZXhhbXBsZS5jb207ICcKKyAgICAgICAgICAgICAgICAnTWF4LUFnZT0wOyBQYXRoPS87IFZlcnNpb249MScpCisgICAgICAgIG1vcnNlbFsnc2VjdXJlJ10gPSBUcnVlCisgICAgICAgIG1vcnNlbFsnaHR0cG9ubHknXSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vcnNlbCksCisgICAgICAgICAgICAgICAgJzxNb3JzZWw6IGtleT1jb2RlZF92YWw7IENvbW1lbnQ9Zm9vOyBEb21haW49ZXhhbXBsZS5jb207ICcKKyAgICAgICAgICAgICAgICAnSHR0cE9ubHk7IE1heC1BZ2U9MDsgUGF0aD0vOyBTZWN1cmU7IFZlcnNpb249MT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb3JzZWwpLAorICAgICAgICAgICAgICAgICdTZXQtQ29va2llOiBrZXk9Y29kZWRfdmFsOyBDb21tZW50PWZvbzsgRG9tYWluPWV4YW1wbGUuY29tOyAnCisgICAgICAgICAgICAgICAgJ0h0dHBPbmx5OyBNYXgtQWdlPTA7IFBhdGg9LzsgU2VjdXJlOyBWZXJzaW9uPTEnKQorCisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnNldCgna2V5JywgJ3ZhbCcsICdjb2RlZF92YWwnKQorICAgICAgICBtb3JzZWxbJ2V4cGlyZXMnXSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKG1vcnNlbCksCisgICAgICAgICAgICAgICAgcic8TW9yc2VsOiBrZXk9Y29kZWRfdmFsOyAnCisgICAgICAgICAgICAgICAgcidleHBpcmVzPVx3KywgXGQrIFx3KyBcZCsgXGQrOlxkKzpcZCsgXHcrPicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKG1vcnNlbCksCisgICAgICAgICAgICAgICAgcidTZXQtQ29va2llOiBrZXk9Y29kZWRfdmFsOyAnCisgICAgICAgICAgICAgICAgcidleHBpcmVzPVx3KywgXGQrIFx3KyBcZCsgXGQrOlxkKzpcZCsgXHcrJykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChDb29raWVUZXN0cywgTW9yc2VsVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKaW5kZXggZGY5YTllMy4uZDgwOTQxNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQpAQCAtMTksNiArMTksMjYgQEAKICMgU2VsZi1zaWduZWQgY2VydCBmaWxlIGZvciBzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldAogQ0VSVF9zZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NlbGZzaWduZWRfcHl0aG9udGVzdGRvdG5ldC5wZW0nKQogCisjIGNvbnN0YW50cyBmb3IgdGVzdGluZyBjaHVua2VkIGVuY29kaW5nCitjaHVua2VkX3N0YXJ0ID0gKAorICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICdhXHJcbicKKyAgICAnaGVsbG8gd29ybFxyXG4nCisgICAgJzNcclxuJworICAgICdkISBcclxuJworICAgICc4XHJcbicKKyAgICAnYW5kIG5vdyBcclxuJworICAgICcyMlxyXG4nCisgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJworKQorY2h1bmtlZF9leHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKK2NodW5rX2V4dGVuc2lvbiA9ICI7Zm9vPWJhciIKK2xhc3RfY2h1bmsgPSAiMFxyXG4iCitsYXN0X2NodW5rX2V4dGVuZGVkID0gIjAiICsgY2h1bmtfZXh0ZW5zaW9uICsgIlxyXG4iCit0cmFpbGVycyA9ICJYLUR1bW15OiBmb29cclxuWC1EdW1tMjogYmFyXHJcbiIKK2NodW5rZWRfZW5kID0gIlxyXG4iCisKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIAogY2xhc3MgRmFrZVNvY2tldDoKQEAgLTUxLDYgKzcxLDkgQEAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKIAorICAgIGRlZiBzZXRzb2Nrb3B0KHNlbGYsIGxldmVsLCBvcHRuYW1lLCB2YWx1ZSk6CisgICAgICAgIHBhc3MKKwogY2xhc3MgRVBpcGVTb2NrZXQoRmFrZVNvY2tldCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCwgcGlwZV90cmlnZ2VyKToKQEAgLTg0LDYgKzEwNywyMyBAQAogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ2NhbGxlciB0cmllZCB0byByZWFkIHBhc3QgRU9GJykKICAgICAgICAgcmV0dXJuIGRhdGEKIAorY2xhc3MgRmFrZVNvY2tldEhUVFBDb25uZWN0aW9uKGNsaWVudC5IVFRQQ29ubmVjdGlvbik6CisgICAgIiIiSFRUUENvbm5lY3Rpb24gc3ViY2xhc3MgdXNpbmcgRmFrZVNvY2tldDsgY291bnRzIGNvbm5lY3QoKSBjYWxscyIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5jb25uZWN0aW9ucyA9IDAKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmZha2Vfc29ja2V0X2FyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuX2NyZWF0ZV9jb25uZWN0aW9uID0gc2VsZi5jcmVhdGVfY29ubmVjdGlvbgorCisgICAgZGVmIGNvbm5lY3Qoc2VsZik6CisgICAgICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgY29ubmVjdCgpIGlzIGludm9rZWQiIiIKKyAgICAgICAgc2VsZi5jb25uZWN0aW9ucyArPSAxCisgICAgICAgIHJldHVybiBzdXBlcigpLmNvbm5lY3QoKQorCisgICAgZGVmIGNyZWF0ZV9jb25uZWN0aW9uKHNlbGYsICpwb3MsICoqa3cpOgorICAgICAgICByZXR1cm4gRmFrZVNvY2tldCgqc2VsZi5mYWtlX3NvY2tldF9hcmdzKQorCiBjbGFzcyBIZWFkZXJUZXN0cyhUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYXV0b19oZWFkZXJzKHNlbGYpOgogICAgICAgICAjIFNvbWUgaGVhZGVycyBhcmUgYWRkZWQgYXV0b21hdGljYWxseSwgYnV0IHNob3VsZCBub3QgYmUgYWRkZWQgYnkKQEAgLTU0OCwyMCArNTg4LDggQEAKICAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICd0ZXN0JywgY29ubikKIAogICAgIGRlZiB0ZXN0X2NodW5rZWQoc2VsZik6Ci0gICAgICAgIGNodW5rZWRfc3RhcnQgPSAoCi0gICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKLSAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJwotICAgICAgICAgICAgJ2FcclxuJwotICAgICAgICAgICAgJ2hlbGxvIHdvcmxcclxuJwotICAgICAgICAgICAgJzNcclxuJwotICAgICAgICAgICAgJ2QhIFxyXG4nCi0gICAgICAgICAgICAnOFxyXG4nCi0gICAgICAgICAgICAnYW5kIG5vdyBcclxuJwotICAgICAgICAgICAgJzIyXHJcbicKLSAgICAgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKLSAgICAgICAgKQotICAgICAgICBleHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIGV4cGVjdGVkID0gY2h1bmtlZF9leHBlY3RlZAorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgIHJlc3AuYmVnaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKQEAgLTU2OSw3ICs1OTcsNyBAQAogCiAgICAgICAgICMgVmFyaW91cyByZWFkIHNpemVzCiAgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDEyKToKLSAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgICAgIHJlc3AuYmVnaW4oKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQobikgKyByZXNwLnJlYWQobikgKyByZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCkBAIC01OTIsMjMgKzYyMCwxMiBAQAogICAgICAgICAgICAgICAgIHJlc3AuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfcmVhZGludG9fY2h1bmtlZChzZWxmKToKLSAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJwotICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCi0gICAgICAgICAgICAnYVxyXG4nCi0gICAgICAgICAgICAnaGVsbG8gd29ybFxyXG4nCi0gICAgICAgICAgICAnM1xyXG4nCi0gICAgICAgICAgICAnZCEgXHJcbicKLSAgICAgICAgICAgICc4XHJcbicKLSAgICAgICAgICAgICdhbmQgbm93IFxyXG4nCi0gICAgICAgICAgICAnMjJcclxuJwotICAgICAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJwotICAgICAgICApCi0gICAgICAgIGV4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JworCisgICAgICAgIGV4cGVjdGVkID0gY2h1bmtlZF9leHBlY3RlZAogICAgICAgICBuZXhwZWN0ZWQgPSBsZW4oZXhwZWN0ZWQpCiAgICAgICAgIGIgPSBieXRlYXJyYXkoMTI4KQogCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgIHJlc3AuYmVnaW4oKQogICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQpAQCAtNjE4LDcgKzYzNSw3IEBACiAKICAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKICAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgotICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQogICAgICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhiKQpAQCAtNjU0LDcgKzY3MSw3IEBACiAgICAgICAgICAgICAnMVxyXG4nCiAgICAgICAgICAgICAnZFxyXG4nCiAgICAgICAgICkKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iSEVBRCIpCiAgICAgICAgIHJlc3AuYmVnaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBiJycpCkBAIC02NzQsNyArNjkxLDcgQEAKICAgICAgICAgICAgICcxXHJcbicKICAgICAgICAgICAgICdkXHJcbicKICAgICAgICAgKQotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKICAgICAgICAgcmVzcC5iZWdpbigpCiAgICAgICAgIGIgPSBieXRlYXJyYXkoNSkKQEAgLTc0OSw2ICs3NjYsNyBAQAogICAgICAgICAgICAgKyAnMCcgKiA2NTUzNiArICdhXHJcbicKICAgICAgICAgICAgICdoZWxsbyB3b3JsZFxyXG4nCiAgICAgICAgICAgICAnMFxyXG4nCisgICAgICAgICAgICAnXHJcbicKICAgICAgICAgKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShGYWtlU29ja2V0KGJvZHkpKQogICAgICAgICByZXNwLmJlZ2luKCkKQEAgLTc2NiwyOCArNzg0LDYgQEAKICAgICAgICAgcmVzcC5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmNsb3NlZCkKIAotICAgIGRlZiB0ZXN0X2RlbGF5ZWRfYWNrX29wdChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgTmFnbGUvZGVsYXllZF9hY2sgb3B0aW1pc3RhaW9uIHdvcmtzIGNvcnJlY3RseS4KLQotICAgICAgICAjIEZvciBzbWFsbCBwYXlsb2FkcywgaXQgc2hvdWxkIGNvYWxlc2NlIHRoZSBib2R5IHdpdGgKLSAgICAgICAgIyBoZWFkZXJzLCByZXN1bHRpbmcgaW4gYSBzaW5nbGUgc2VuZGFsbCgpIGNhbGwKLSAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChOb25lKQotICAgICAgICBjb25uLnNvY2sgPSBzb2NrCi0gICAgICAgIGJvZHkgPSBiJ3gnICogKGNvbm4ubXNzIC0gMSkKLSAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy8nLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2suc2VuZGFsbF9jYWxscywgMSkKLQotICAgICAgICAjIEZvciBsYXJnZSBwYXlsb2FkcywgaXQgc2hvdWxkIHNlbmQgdGhlIGhlYWRlcnMgYW5kCi0gICAgICAgICMgdGhlbiB0aGUgYm9keSwgcmVzdWx0aW5nIGluIG1vcmUgdGhhbiBvbmUgc2VuZGFsbCgpCi0gICAgICAgICMgY2FsbAotICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KE5vbmUpCi0gICAgICAgIGNvbm4uc29jayA9IHNvY2sKLSAgICAgICAgYm9keSA9IGIneCcgKiBjb25uLm1zcwotICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsIGJvZHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzb2NrLnNlbmRhbGxfY2FsbHMsIDEpCi0KICAgICBkZWYgdGVzdF9lcnJvcl9sZWFrKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB0aGUgc29ja2V0IGlzIG5vdCBsZWFrZWQgaWYgZ2V0cmVzcG9uc2UoKSBmYWlscwogICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCkBAIC03OTgsMTIgKzc5NCwyNDUgQEAKICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYgICMgQXZvaWQgZ2FyYmFnZSBjb2xsZWN0b3IgY2xvc2luZyB0aGUgc29ja2V0CiAgICAgICAgICAgICAgICAgY2xpZW50LkhUVFBSZXNwb25zZS5fX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KQogICAgICAgICBjb25uLnJlc3BvbnNlX2NsYXNzID0gUmVzcG9uc2UKLSAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldCgnJykgICMgRW11bGF0ZSBzZXJ2ZXIgZHJvcHBpbmcgY29ubmVjdGlvbgorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KCdJbnZhbGlkIHN0YXR1cyBsaW5lJykKICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGNsaWVudC5CYWRTdGF0dXNMaW5lLCBjb25uLmdldHJlc3BvbnNlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2UuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29ubi5zb2NrLmZpbGVfY2xvc2VkKQogCisgICAgZGVmIHRlc3RfY2h1bmtlZF9leHRlbnNpb24oc2VsZik6CisgICAgICAgIGV4dHJhID0gJzM7Zm9vPWJhclxyXG4nICsgJ2FiY1xyXG4nCisgICAgICAgIGV4cGVjdGVkID0gY2h1bmtlZF9leHBlY3RlZCArIGInYWJjJworCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBleHRyYSArIGxhc3RfY2h1bmtfZXh0ZW5kZWQgKyBjaHVua2VkX2VuZCkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2h1bmtlZF9taXNzaW5nX2VuZChzZWxmKToKKyAgICAgICAgIiIic29tZSBzZXJ2ZXJzIG1heSBzZXJ2ZSB1cCBhIHNob3J0IGNodW5rZWQgZW5jb2Rpbmcgc3RyZWFtIiIiCisgICAgICAgIGV4cGVjdGVkID0gY2h1bmtlZF9leHBlY3RlZAorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuaykgICNubyB0ZXJtaW5hdGluZyBjcmxmCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NodW5rZWRfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICIiIlNlZSB0aGF0IHRyYWlsZXJzIGFyZSByZWFkIGFuZCBpZ25vcmVkIiIiCisgICAgICAgIGV4cGVjdGVkID0gY2h1bmtlZF9leHBlY3RlZAorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIHRyYWlsZXJzICsgY2h1bmtlZF9lbmQpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICAjIHdlIHNob3VsZCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZmlsZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2suZmlsZS5yZWFkKDEwMCksIGIiIikgI3dlIHJlYWQgdG8gdGhlIGVuZAorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NodW5rZWRfc3luYyhzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCB3ZSBkb24ndCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgY2h1bmtlZC1lbmNvZGluZyBzdHJlYW0iIiIKKyAgICAgICAgZXhwZWN0ZWQgPSBjaHVua2VkX2V4cGVjdGVkCisgICAgICAgIGV4dHJhZGF0YSA9ICJleHRyYWRhdGEiCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgdHJhaWxlcnMgKyBjaHVua2VkX2VuZCArIGV4dHJhZGF0YSkKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgICMgdGhlIGZpbGUgc2hvdWxkIG5vdyBoYXZlIG91ciBleHRyYWRhdGEgcmVhZHkgdG8gYmUgcmVhZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2suZmlsZS5yZWFkKDEwMCksIGV4dHJhZGF0YS5lbmNvZGUoImFzY2lpIikpICN3ZSByZWFkIHRvIHRoZSBlbmQKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jb250ZW50X2xlbmd0aF9zeW5jKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGF0IHdlIGRvbid0IHJlYWQgcGFzdCB0aGUgZW5kIG9mIHRoZSBDb250ZW50LUxlbmd0aCBzdHJlYW0iIiIKKyAgICAgICAgZXh0cmFkYXRhID0gImV4dHJhZGF0YSIKKyAgICAgICAgZXhwZWN0ZWQgPSBiIkhlbGxvMTIzXHJcbiIKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoJ0hUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogMTBcclxuXHJcbkhlbGxvMTIzXHJcbicgKyBleHRyYWRhdGEpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICAjIHRoZSBmaWxlIHNob3VsZCBub3cgaGF2ZSBvdXIgZXh0cmFkYXRhIHJlYWR5IHRvIGJlIHJlYWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmZpbGUucmVhZCgxMDApLCBleHRyYWRhdGEuZW5jb2RlKCJhc2NpaSIpKSAjd2UgcmVhZCB0byB0aGUgZW5kCisgICAgICAgIHJlc3AuY2xvc2UoKQorCitjbGFzcyBFeHRlbmRlZFJlYWRUZXN0KFRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHBlZWsoKSwgcmVhZDEoKSwgcmVhZGxpbmUoKQorICAgICIiIgorICAgIGxpbmVzID0gKAorICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgJ1xyXG4nCisgICAgICAgICdoZWxsbyB3b3JsZCFcbicKKyAgICAgICAgJ2FuZCBub3cgXG4nCisgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XG4nCisgICAgICAgICdmb28nCisgICAgICAgICkKKyAgICBsaW5lc19leHBlY3RlZCA9IGxpbmVzW2xpbmVzLmZpbmQoJ2hlbGxvJyk6XS5lbmNvZGUoImFzY2lpIikKKyAgICBsaW5lc19jaHVua2VkID0gKAorICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICdhXHJcbicKKyAgICAgICAgJ2hlbGxvIHdvcmxcclxuJworICAgICAgICAnM1xyXG4nCisgICAgICAgICdkIVxuXHJcbicKKyAgICAgICAgJzlcclxuJworICAgICAgICAnYW5kIG5vdyBcblxyXG4nCisgICAgICAgICcyM1xyXG4nCisgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XG5cclxuJworICAgICAgICAnM1xyXG4nCisgICAgICAgICdmb29cclxuJworICAgICAgICAnMFxyXG4nICMgdGVybWluYXRpbmcgY2h1bmsKKyAgICAgICAgJ1xyXG4nICAjIGVuZCBvZiB0cmFpbGVycworICAgICkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoc2VsZi5saW5lcykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgcmVzcC5mcCA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJlc3AuZnApCisgICAgICAgIHNlbGYucmVzcCA9IHJlc3AKKworCisKKyAgICBkZWYgdGVzdF9wZWVrKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgICMgcGF0Y2ggdXAgdGhlIGJ1ZmZlcmVkIHBlZWsgc28gdGhhdCBpdCByZXR1cm5zIG5vdCB0b28gbXVjaCBzdHVmZgorICAgICAgICBvbGRwZWVrID0gcmVzcC5mcC5wZWVrCisgICAgICAgIGRlZiBteXBlZWsobj0tMSk6CisgICAgICAgICAgICBwID0gb2xkcGVlayhuKQorICAgICAgICAgICAgaWYgbiA+PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBwWzpuXQorICAgICAgICAgICAgcmV0dXJuIHBbOjEwXQorICAgICAgICByZXNwLmZwLnBlZWsgPSBteXBlZWsKKworICAgICAgICBhbGwgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyB0cnkgYSBzaG9ydCBwZWVrCisgICAgICAgICAgICBwID0gcmVzcC5wZWVrKDMpCisgICAgICAgICAgICBpZiBwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocCksIDApCisgICAgICAgICAgICAgICAgIyB0aGVuIHVuYm91bmRlZCBwZWVrCisgICAgICAgICAgICAgICAgcDIgPSByZXNwLnBlZWsoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihwMiksIGxlbihwKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocDIuc3RhcnRzd2l0aChwKSkKKyAgICAgICAgICAgICAgICBuZXh0ID0gcmVzcC5yZWFkKGxlbihwMikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0LCBwMikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV4dCA9IHJlc3AucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXh0KQorICAgICAgICAgICAgYWxsLmFwcGVuZChuZXh0KQorICAgICAgICAgICAgaWYgbm90IG5leHQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihhbGwpLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLnJlc3AKKyAgICAgICAgc2VsZi5fdmVyaWZ5X3JlYWRsaW5lKHNlbGYucmVzcC5yZWFkbGluZSwgc2VsZi5saW5lc19leHBlY3RlZCkKKworICAgIGRlZiBfdmVyaWZ5X3JlYWRsaW5lKHNlbGYsIHJlYWRsaW5lLCBleHBlY3RlZCk6CisgICAgICAgIGFsbCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIHNob3J0IHJlYWRsaW5lcworICAgICAgICAgICAgbGluZSA9IHJlYWRsaW5lKDUpCisgICAgICAgICAgICBpZiBsaW5lIGFuZCBsaW5lICE9IGIiZm9vIjoKKyAgICAgICAgICAgICAgICBpZiBsZW4obGluZSkgPCA1OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZS5lbmRzd2l0aChiIlxuIikpCisgICAgICAgICAgICBhbGwuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGFsbCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVhZDEoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLnJlc3AKKyAgICAgICAgZGVmIHIoKToKKyAgICAgICAgICAgIHJlcyA9IHJlc3AucmVhZDEoNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihyZXMpLCA0KQorICAgICAgICAgICAgcmV0dXJuIHJlcworICAgICAgICByZWFkbGluZXIgPSBSZWFkbGluZXIocikKKyAgICAgICAgc2VsZi5fdmVyaWZ5X3JlYWRsaW5lKHJlYWRsaW5lci5yZWFkbGluZSwgc2VsZi5saW5lc19leHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlYWQxX3VuYm91bmRlZChzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICBhbGwgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSA9IHJlc3AucmVhZDEoKQorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGFsbC5hcHBlbmQoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihhbGwpLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVhZDFfYm91bmRlZChzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICBhbGwgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YSA9IHJlc3AucmVhZDEoMTApCisgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGRhdGEpLCAxMCkKKyAgICAgICAgICAgIGFsbC5hcHBlbmQoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihhbGwpLCBzZWxmLmxpbmVzX2V4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVhZDFfMChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJlc3AucmVhZDEoMCksIGIiIikKKworICAgIGRlZiB0ZXN0X3BlZWtfMChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYucmVzcC5wZWVrKDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDAsIGxlbihwKSkKKworY2xhc3MgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQoRXh0ZW5kZWRSZWFkVGVzdCk6CisgICAgIiIiCisgICAgVGVzdCBwZWVrKCksIHJlYWQxKCksIHJlYWRsaW5lKCkgaW4gY2h1bmtlZCBtb2RlCisgICAgIiIiCisgICAgbGluZXMgPSAoCisgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgJ2FcclxuJworICAgICAgICAnaGVsbG8gd29ybFxyXG4nCisgICAgICAgICczXHJcbicKKyAgICAgICAgJ2QhXG5cclxuJworICAgICAgICAnOVxyXG4nCisgICAgICAgICdhbmQgbm93IFxuXHJcbicKKyAgICAgICAgJzIzXHJcbicKKyAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcblxyXG4nCisgICAgICAgICczXHJcbicKKyAgICAgICAgJ2Zvb1xyXG4nCisgICAgICAgICcwXHJcbicgIyB0ZXJtaW5hdGluZyBjaHVuaworICAgICAgICAnXHJcbicgICMgZW5kIG9mIHRyYWlsZXJzCisgICAgKQorCisKK2NsYXNzIFJlYWRsaW5lcjoKKyAgICAiIiIKKyAgICBhIHNpbXBsZSByZWFkbGluZSBjbGFzcyB0aGF0IHVzZXMgYW4gYXJiaXRyYXJ5IHJlYWQgZnVuY3Rpb24gYW5kIGJ1ZmZlcmluZworICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZnVuYyk6CisgICAgICAgIHNlbGYucmVhZGZ1bmMgPSByZWFkZnVuYworICAgICAgICBzZWxmLnJlbWFpbmRlciA9IGIiIgorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIGxpbWl0KToKKyAgICAgICAgZGF0YSA9IFtdCisgICAgICAgIGRhdGFsZW4gPSAwCisgICAgICAgIHJlYWQgPSBzZWxmLnJlbWFpbmRlcgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGlkeCA9IHJlYWQuZmluZChiJ1xuJykKKyAgICAgICAgICAgICAgICBpZiBpZHggIT0gLTE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgZGF0YWxlbiArIGxlbihyZWFkKSA+PSBsaW1pdDoKKyAgICAgICAgICAgICAgICAgICAgaWR4ID0gbGltaXQgLSBkYXRhbGVuIC0gMQorICAgICAgICAgICAgICAgICMgcmVhZCBtb3JlIGRhdGEKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChyZWFkKQorICAgICAgICAgICAgICAgIHJlYWQgPSBzZWxmLnJlYWRmdW5jKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKKyAgICAgICAgICAgICAgICAgICAgaWR4ID0gMCAjZW9mIGNvbmRpdGlvbgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWR4ICs9IDEKKyAgICAgICAgICAgIGRhdGEuYXBwZW5kKHJlYWRbOmlkeF0pCisgICAgICAgICAgICBzZWxmLnJlbWFpbmRlciA9IHJlYWRbaWR4Ol0KKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihkYXRhKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLnJlbWFpbmRlciA9IGIiIi5qb2luKGRhdGEpCisgICAgICAgICAgICByYWlzZQorCiAKIGNsYXNzIE9mZmxpbmVUZXN0KFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9hbGwoc2VsZik6CkBAIC04MjMsMTMgKzEwNTIsNzQgQEAKICAgICBkZWYgdGVzdF9yZXNwb25zZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50LnJlc3BvbnNlc1tjbGllbnQuTk9UX0ZPVU5EXSwgIk5vdCBGb3VuZCIpCiAKKyAgICBkZWYgdGVzdF9jbGllbnRfY29uc3RhbnRzKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggMy40CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgJ0NPTlRJTlVFJywKKyAgICAgICAgICAgICdTV0lUQ0hJTkdfUFJPVE9DT0xTJywKKyAgICAgICAgICAgICdQUk9DRVNTSU5HJywKKyAgICAgICAgICAgICdPSycsCisgICAgICAgICAgICAnQ1JFQVRFRCcsCisgICAgICAgICAgICAnQUNDRVBURUQnLAorICAgICAgICAgICAgJ05PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OJywKKyAgICAgICAgICAgICdOT19DT05URU5UJywKKyAgICAgICAgICAgICdSRVNFVF9DT05URU5UJywKKyAgICAgICAgICAgICdQQVJUSUFMX0NPTlRFTlQnLAorICAgICAgICAgICAgJ01VTFRJX1NUQVRVUycsCisgICAgICAgICAgICAnSU1fVVNFRCcsCisgICAgICAgICAgICAnTVVMVElQTEVfQ0hPSUNFUycsCisgICAgICAgICAgICAnTU9WRURfUEVSTUFORU5UTFknLAorICAgICAgICAgICAgJ0ZPVU5EJywKKyAgICAgICAgICAgICdTRUVfT1RIRVInLAorICAgICAgICAgICAgJ05PVF9NT0RJRklFRCcsCisgICAgICAgICAgICAnVVNFX1BST1hZJywKKyAgICAgICAgICAgICdURU1QT1JBUllfUkVESVJFQ1QnLAorICAgICAgICAgICAgJ0JBRF9SRVFVRVNUJywKKyAgICAgICAgICAgICdVTkFVVEhPUklaRUQnLAorICAgICAgICAgICAgJ1BBWU1FTlRfUkVRVUlSRUQnLAorICAgICAgICAgICAgJ0ZPUkJJRERFTicsCisgICAgICAgICAgICAnTk9UX0ZPVU5EJywKKyAgICAgICAgICAgICdNRVRIT0RfTk9UX0FMTE9XRUQnLAorICAgICAgICAgICAgJ05PVF9BQ0NFUFRBQkxFJywKKyAgICAgICAgICAgICdQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCcsCisgICAgICAgICAgICAnUkVRVUVTVF9USU1FT1VUJywKKyAgICAgICAgICAgICdDT05GTElDVCcsCisgICAgICAgICAgICAnR09ORScsCisgICAgICAgICAgICAnTEVOR1RIX1JFUVVJUkVEJywKKyAgICAgICAgICAgICdQUkVDT05ESVRJT05fRkFJTEVEJywKKyAgICAgICAgICAgICdSRVFVRVNUX0VOVElUWV9UT09fTEFSR0UnLAorICAgICAgICAgICAgJ1JFUVVFU1RfVVJJX1RPT19MT05HJywKKyAgICAgICAgICAgICdVTlNVUFBPUlRFRF9NRURJQV9UWVBFJywKKyAgICAgICAgICAgICdSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFJywKKyAgICAgICAgICAgICdFWFBFQ1RBVElPTl9GQUlMRUQnLAorICAgICAgICAgICAgJ1VOUFJPQ0VTU0FCTEVfRU5USVRZJywKKyAgICAgICAgICAgICdMT0NLRUQnLAorICAgICAgICAgICAgJ0ZBSUxFRF9ERVBFTkRFTkNZJywKKyAgICAgICAgICAgICdVUEdSQURFX1JFUVVJUkVEJywKKyAgICAgICAgICAgICdQUkVDT05ESVRJT05fUkVRVUlSRUQnLAorICAgICAgICAgICAgJ1RPT19NQU5ZX1JFUVVFU1RTJywKKyAgICAgICAgICAgICdSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFJywKKyAgICAgICAgICAgICdJTlRFUk5BTF9TRVJWRVJfRVJST1InLAorICAgICAgICAgICAgJ05PVF9JTVBMRU1FTlRFRCcsCisgICAgICAgICAgICAnQkFEX0dBVEVXQVknLAorICAgICAgICAgICAgJ1NFUlZJQ0VfVU5BVkFJTEFCTEUnLAorICAgICAgICAgICAgJ0dBVEVXQVlfVElNRU9VVCcsCisgICAgICAgICAgICAnSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQnLAorICAgICAgICAgICAgJ0lOU1VGRklDSUVOVF9TVE9SQUdFJywKKyAgICAgICAgICAgICdOT1RfRVhURU5ERUQnLAorICAgICAgICAgICAgJ05FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQnLAorICAgICAgICBdCisgICAgICAgIGZvciBjb25zdCBpbiBleHBlY3RlZDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvbnN0YW50PWNvbnN0KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihjbGllbnQsIGNvbnN0KSkKKwogCiBjbGFzcyBTb3VyY2VBZGRyZXNzVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc2VydikKICAgICAgICAgc2VsZi5zb3VyY2VfcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCi0gICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigpCiAgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTg2MSw3ICsxMTUxLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgVGltZW91dFRlc3QuUE9SVCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc2VydikKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKQEAgLTkwMSw2ICsxMTkxLDc4IEBACiAgICAgICAgIGh0dHBDb25uLmNsb3NlKCkKIAogCitjbGFzcyBQZXJzaXN0ZW5jZVRlc3QoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcmV1c2VfcmVjb25uZWN0KHNlbGYpOgorICAgICAgICAjIFNob3VsZCByZXVzZSBvciByZWNvbm5lY3QgZGVwZW5kaW5nIG9uIGhlYWRlciBmcm9tIHNlcnZlcgorICAgICAgICB0ZXN0cyA9ICgKKyAgICAgICAgICAgICgnMS4wJywgJycsIEZhbHNlKSwKKyAgICAgICAgICAgICgnMS4wJywgJ0Nvbm5lY3Rpb246IGtlZXAtYWxpdmVcclxuJywgVHJ1ZSksCisgICAgICAgICAgICAoJzEuMScsICcnLCBUcnVlKSwKKyAgICAgICAgICAgICgnMS4xJywgJ0Nvbm5lY3Rpb246IGNsb3NlXHJcbicsIEZhbHNlKSwKKyAgICAgICAgICAgICgnMS4wJywgJ0Nvbm5lY3Rpb246IGtlZXAtQUxJVkVcclxuJywgVHJ1ZSksCisgICAgICAgICAgICAoJzEuMScsICdDb25uZWN0aW9uOiBjbG9TRVxyXG4nLCBGYWxzZSksCisgICAgICAgICkKKyAgICAgICAgZm9yIHZlcnNpb24sIGhlYWRlciwgcmV1c2UgaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh2ZXJzaW9uPXZlcnNpb24sIGhlYWRlcj1oZWFkZXIpOgorICAgICAgICAgICAgICAgIG1zZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgJ0hUVFAve30gMjAwIE9LXHJcbicKKyAgICAgICAgICAgICAgICAgICAgJ3t9JworICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDEyXHJcbicKKyAgICAgICAgICAgICAgICAgICAgJ1xyXG4nCisgICAgICAgICAgICAgICAgICAgICdEdW1teSBib2R5XHJcbicKKyAgICAgICAgICAgICAgICApLmZvcm1hdCh2ZXJzaW9uLCBoZWFkZXIpCisgICAgICAgICAgICAgICAgY29ubiA9IEZha2VTb2NrZXRIVFRQQ29ubmVjdGlvbihtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29ubi5zb2NrKQorICAgICAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy9vcGVuLWNvbm5lY3Rpb24nKQorICAgICAgICAgICAgICAgIHdpdGggY29ubi5nZXRyZXNwb25zZSgpIGFzIHJlc3BvbnNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uc29jayBpcyBOb25lLCBub3QgcmV1c2UpCisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnJlYWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5zb2NrIGlzIE5vbmUsIG5vdCByZXVzZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uY29ubmVjdGlvbnMsIDEpCisgICAgICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCdHRVQnLCAnL3N1YnNlcXVlbnQtcmVxdWVzdCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLmNvbm5lY3Rpb25zLCAxIGlmIHJldXNlIGVsc2UgMikKKworICAgIGRlZiB0ZXN0X2Rpc2Nvbm5lY3RlZChzZWxmKToKKworICAgICAgICBkZWYgbWFrZV9yZXNldF9yZWFkZXIodGV4dCk6CisgICAgICAgICAgICAiIiJSZXR1cm4gQnVmZmVyZWRSZWFkZXIgdGhhdCByYWlzZXMgRUNPTk5SRVNFVCBhdCBFT0YiIiIKKyAgICAgICAgICAgIHN0cmVhbSA9IGlvLkJ5dGVzSU8odGV4dCkKKyAgICAgICAgICAgIGRlZiByZWFkaW50byhidWZmZXIpOgorICAgICAgICAgICAgICAgIHNpemUgPSBpby5CeXRlc0lPLnJlYWRpbnRvKHN0cmVhbSwgYnVmZmVyKQorICAgICAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblJlc2V0RXJyb3IoKQorICAgICAgICAgICAgICAgIHJldHVybiBzaXplCisgICAgICAgICAgICBzdHJlYW0ucmVhZGludG8gPSByZWFkaW50bworICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkUmVhZGVyKHN0cmVhbSkKKworICAgICAgICB0ZXN0cyA9ICgKKyAgICAgICAgICAgIChpby5CeXRlc0lPLCBjbGllbnQuUmVtb3RlRGlzY29ubmVjdGVkKSwKKyAgICAgICAgICAgIChtYWtlX3Jlc2V0X3JlYWRlciwgQ29ubmVjdGlvblJlc2V0RXJyb3IpLAorICAgICAgICApCisgICAgICAgIGZvciBzdHJlYW1fZmFjdG9yeSwgZXhjZXB0aW9uIGluIHRlc3RzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZXhjZXB0aW9uPWV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgY29ubiA9IEZha2VTb2NrZXRIVFRQQ29ubmVjdGlvbihiJycsIHN0cmVhbV9mYWN0b3J5KQorICAgICAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy9lb2YtcmVzcG9uc2UnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgY29ubi5nZXRyZXNwb25zZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb25uLnNvY2spCisgICAgICAgICAgICAgICAgIyBIVFRQQ29ubmVjdGlvbi5jb25uZWN0KCkgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgaW52b2tlZAorICAgICAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy9yZWNvbm5lY3QnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5jb25uZWN0aW9ucywgMikKKworICAgIGRlZiB0ZXN0XzEwMF9jbG9zZShzZWxmKToKKyAgICAgICAgY29ubiA9IEZha2VTb2NrZXRIVFRQQ29ubmVjdGlvbigKKyAgICAgICAgICAgIGInSFRUUC8xLjEgMTAwIENvbnRpbnVlXHJcbicKKyAgICAgICAgICAgIGInXHJcbicKKyAgICAgICAgICAgICMgTWlzc2luZyBmaW5hbCByZXNwb25zZQorICAgICAgICApCisgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy8nLCBoZWFkZXJzPXsnRXhwZWN0JzogJzEwMC1jb250aW51ZSd9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhjbGllbnQuUmVtb3RlRGlzY29ubmVjdGVkLCBjb25uLmdldHJlc3BvbnNlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb25uLnNvY2spCisgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy9yZWNvbm5lY3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uY29ubmVjdGlvbnMsIDIpCisKKwogY2xhc3MgSFRUUFNUZXN0KFRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTExNzEsMTcgKzE1MzMsMTggQEAKICAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJyAjIFJlcGx5IHRvIEhFQUQKICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogNDJcclxuXHJcbicKICAgICAgICAgKQotCi0gICAgICAgIGRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgotICAgICAgICAgICAgcmV0dXJuIEZha2VTb2NrZXQocmVzcG9uc2VfdGV4dCwgaG9zdD1hZGRyZXNzWzBdLCBwb3J0PWFkZHJlc3NbMV0pCi0KICAgICAgICAgc2VsZi5ob3N0ID0gJ3Byb3h5LmNvbScKICAgICAgICAgc2VsZi5jb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKHNlbGYuaG9zdCkKLSAgICAgICAgc2VsZi5jb25uLl9jcmVhdGVfY29ubmVjdGlvbiA9IGNyZWF0ZV9jb25uZWN0aW9uCisgICAgICAgIHNlbGYuY29ubi5fY3JlYXRlX2Nvbm5lY3Rpb24gPSBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbihyZXNwb25zZV90ZXh0KQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLmNvbm4uY2xvc2UoKQogCisgICAgZGVmIF9jcmVhdGVfY29ubmVjdGlvbihzZWxmLCByZXNwb25zZV90ZXh0KToKKyAgICAgICAgZGVmIGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CisgICAgICAgICAgICByZXR1cm4gRmFrZVNvY2tldChyZXNwb25zZV90ZXh0LCBob3N0PWFkZHJlc3NbMF0sIHBvcnQ9YWRkcmVzc1sxXSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZV9jb25uZWN0aW9uCisKICAgICBkZWYgdGVzdF9zZXRfdHVubmVsX2hvc3RfcG9ydF9oZWFkZXJzKHNlbGYpOgogICAgICAgICB0dW5uZWxfaG9zdCA9ICdkZXN0aW5hdGlvbi5jb20nCiAgICAgICAgIHR1bm5lbF9wb3J0ID0gODg4OApAQCAtMTIyMiwxMyArMTU4NSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKGInQ09OTkVDVCBkZXN0aW5hdGlvbi5jb20nLCBzZWxmLmNvbm4uc29jay5kYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKGInSG9zdDogZGVzdGluYXRpb24uY29tJywgc2VsZi5jb25uLnNvY2suZGF0YSkKIAorICAgIGRlZiB0ZXN0X3R1bm5lbF9kZWJ1Z2xvZyhzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfaGVhZGVyID0gJ1gtRHVtbXk6IDEnCisgICAgICAgIHJlc3BvbnNlX3RleHQgPSAnSFRUUC8xLjAgMjAwIE9LXHJcbnt9XHJcblxyXG4nLmZvcm1hdChleHBlY3RlZF9oZWFkZXIpCisKKyAgICAgICAgc2VsZi5jb25uLnNldF9kZWJ1Z2xldmVsKDEpCisgICAgICAgIHNlbGYuY29ubi5fY3JlYXRlX2Nvbm5lY3Rpb24gPSBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbihyZXNwb25zZV90ZXh0KQorICAgICAgICBzZWxmLmNvbm4uc2V0X3R1bm5lbCgnZGVzdGluYXRpb24uY29tJykKKworICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgc2VsZi5jb25uLnJlcXVlc3QoJ1BVVCcsICcvJywgJycpCisgICAgICAgIGxpbmVzID0gb3V0cHV0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2hlYWRlcjoge30nLmZvcm1hdChleHBlY3RlZF9oZWFkZXIpLCBsaW5lcykKIAogCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChIZWFkZXJUZXN0cywgT2ZmbGluZVRlc3QsIEJhc2ljVGVzdCwgVGltZW91dFRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgUGVyc2lzdGVuY2VUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBTVGVzdCwgUmVxdWVzdEJvZHlUZXN0LCBTb3VyY2VBZGRyZXNzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQUmVzcG9uc2VUZXN0LCBUdW5uZWxUZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQUmVzcG9uc2VUZXN0LCBFeHRlbmRlZFJlYWRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkUmVhZFRlc3RDaHVua2VkLCBUdW5uZWxUZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKaW5kZXggNzRlMDcxNC4uNTE4ZTM4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CkBAIC02LDcgKzYsNyBAQAogCiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyLCBcCiAgICAgIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciwgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyCi1mcm9tIGh0dHAgaW1wb3J0IHNlcnZlcgorZnJvbSBodHRwIGltcG9ydCBzZXJ2ZXIsIEhUVFBTdGF0dXMKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCkBAIC03OSwxMyArNzksMTMgQEAKICAgICAgICAgZGVmYXVsdF9yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCiAKICAgICAgICAgZGVmIGRvX1RFU1Qoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjA0KQorICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuTk9fQ09OVEVOVCkKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpCiAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKIAogICAgICAgICBkZWYgZG9fS0VFUChzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDQpCisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5OT19DT05URU5UKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQogICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoOTk5KQogCiAgICAgICAgIGRlZiBkb19OT1RGT1VORChzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDQpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAKICAgICAgICAgZGVmIGRvX0VYUExBSU5FUlJPUihzZWxmKToKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig5OTksICJTaG9ydCBNZXNzYWdlIiwKQEAgLTEyMiwzNSArMTIyLDM1IEBACiAgICAgZGVmIHRlc3RfY29tbWFuZChzZWxmKToKICAgICAgICAgc2VsZi5jb24ucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfcmVxdWVzdF9saW5lX3RyaW1taW5nKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJ0hUVFAvMS4xXG4nCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ1hZWkJPR1VTJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fYm9ndXMoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnRlVCQVInCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCkKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fZGlnaXRzKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJ0hUVFAvOS45LjknCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCkKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fbm9uZV9nZXQoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnJwogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ub25lKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBhIHZhbGlkIG1ldGhvZCBpcyByZWplY3RlZCB3aGVuIG5vdCBIVFRQLzEueApAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0NVU1RPTScsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCkKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25faW52YWxpZChzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuID0gOTkKQEAgLTE2NiwyMSArMTY2LDIxIEBACiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5IVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCkKIAogICAgIGRlZiB0ZXN0X3NlbmRfYmxhbmsoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnJwogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCcnLCAnJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5CQURfUkVRVUVTVCkKIAogICAgIGRlZiB0ZXN0X2hlYWRlcl9jbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5wdXRoZWFkZXIoJ0Nvbm5lY3Rpb24nLCAnY2xvc2UnKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogICAgIGRlZiB0ZXN0X2hlYWRfa2VlcF9hbGl2ZShzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdIVFRQLzEuMScKQEAgLTE4OCwxMiArMTg4LDEyIEBACiAgICAgICAgIHNlbGYuY29uLnB1dGhlYWRlcignQ29ubmVjdGlvbicsICdrZWVwLWFsaXZlJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVyKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdURVNUJywgJy8nKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMjA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9fQ09OVEVOVCkKIAogICAgIGRlZiB0ZXN0X3JldHVybl9oZWFkZXJfa2VlcF9hbGl2ZShzZWxmKToKICAgICAgICAgc2VsZi5jb24ucmVxdWVzdCgnS0VFUCcsICcvJykKQEAgLTIzMCwxMSArMjMwLDQ4IEBACiAgICAgICAgICMgSXNzdWUgIzE2MDg4OiBzdGFuZGFyZCBlcnJvciByZXNwb25zZXMgc2hvdWxkIGhhdmUgYSBjb250ZW50LWxlbmd0aAogICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdOT1RGT1VORCcsICcvJykKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKKwogICAgICAgICBkYXRhID0gcmVzLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChyZXMuZ2V0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcpKSwgbGVuKGRhdGEpKQogCiAKK2NsYXNzIFJlcXVlc3RIYW5kbGVyTG9nZ2luZ1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgY2xhc3MgcmVxdWVzdF9oYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICBwcm90b2NvbF92ZXJzaW9uID0gJ0hUVFAvMS4xJworICAgICAgICBkZWZhdWx0X3JlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKworICAgICAgICBkZWYgZG9fR0VUKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0spCisgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKKworICAgICAgICBkZWYgZG9fRVJST1Ioc2VsZik6CisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoSFRUUFN0YXR1cy5OT1RfRk9VTkQsICdGaWxlIG5vdCBmb3VuZCcpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHNlbGYuY29uID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oc2VsZi5IT1NULCBzZWxmLlBPUlQpCisgICAgICAgIHNlbGYuY29uLmNvbm5lY3QoKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLmNvbi5yZXF1ZXN0KCdHRVQnLCAnLycpCisgICAgICAgICAgICBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgZXJyLmdldHZhbHVlKCkuZW5kc3dpdGgoJyJHRVQgLyBIVFRQLzEuMSIgMjAwIC1cbicpKQorCisgICAgZGVmIHRlc3RfZXJyKHNlbGYpOgorICAgICAgICBzZWxmLmNvbiA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKHNlbGYuSE9TVCwgc2VsZi5QT1JUKQorICAgICAgICBzZWxmLmNvbi5jb25uZWN0KCkKKworICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5jb24ucmVxdWVzdCgnRVJST1InLCAnLycpCisgICAgICAgICAgICBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCisKKyAgICAgICAgbGluZXMgPSBlcnIuZ2V0dmFsdWUoKS5zcGxpdCgnXG4nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMF0uZW5kc3dpdGgoJ2NvZGUgNDA0LCBtZXNzYWdlIEZpbGUgbm90IGZvdW5kJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1sxXS5lbmRzd2l0aCgnIkVSUk9SIC8gSFRUUC8xLjEiIDQwNCAtJykpCisKKwogY2xhc3MgU2ltcGxlSFRUUFNlcnZlclRlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CiAgICAgY2xhc3MgcmVxdWVzdF9oYW5kbGVyKE5vTG9nUmVxdWVzdEhhbmRsZXIsIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgIHBhc3MKQEAgLTI2MSwxMiArMjk4LDI4IEBACiAgICAgICAgICAgICBCYXNlVGVzdENhc2UudGVhckRvd24oc2VsZikKIAogICAgIGRlZiBjaGVja19zdGF0dXNfYW5kX3JlYXNvbihzZWxmLCByZXNwb25zZSwgc3RhdHVzLCBkYXRhPU5vbmUpOgorICAgICAgICBkZWYgY2xvc2VfY29ubigpOgorICAgICAgICAgICAgIiIiRG9uJ3QgY2xvc2UgcmVhZGVyIHlldCBzbyB3ZSBjYW4gY2hlY2sgaWYgdGhlcmUgd2FzIGxlZnRvdmVyCisgICAgICAgICAgICBidWZmZXJlZCBpbnB1dCIiIgorICAgICAgICAgICAgbm9ubG9jYWwgcmVhZGVyCisgICAgICAgICAgICByZWFkZXIgPSByZXNwb25zZS5mcAorICAgICAgICAgICAgcmVzcG9uc2UuZnAgPSBOb25lCisgICAgICAgIHJlYWRlciA9IE5vbmUKKyAgICAgICAgcmVzcG9uc2UuX2Nsb3NlX2Nvbm4gPSBjbG9zZV9jb25uCisKICAgICAgICAgYm9keSA9IHJlc3BvbnNlLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzLCBzdGF0dXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlc3BvbnNlLnJlYXNvbikKICAgICAgICAgaWYgZGF0YToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYm9keSkKKyAgICAgICAgIyBFbnN1cmUgdGhlIHNlcnZlciBoYXMgbm90IHNldCB1cCBhIHBlcnNpc3RlbnQgY29ubmVjdGlvbiwgYW5kIGhhcworICAgICAgICAjIG5vdCBzZW50IGFueSBleHRyYSBkYXRhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UudmVyc2lvbiwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UubXNnLmdldCgiQ29ubmVjdGlvbiIsICJjbG9zZSIpLCAiY2xvc2UiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRlci5yZWFkKDMwKSwgYicnLCAnQ29ubmVjdGlvbiBzaG91bGQgYmUgY2xvc2VkJykKKworICAgICAgICByZWFkZXIuY2xvc2UoKQogICAgICAgICByZXR1cm4gYm9keQogCiAgICAgQHN1cHBvcnQucmVxdWlyZXNfbWFjX3ZlcigxMCwgNSkKQEAgLTI4NSw1MiArMzM4LDU4IEBACiAgICAgICAgICAgICAgICAgaWYgbmFtZSAhPSAndGVzdCc6ICMgSWdub3JlIGEgZmlsZW5hbWUgY3JlYXRlZCBpbiBzZXRVcCgpLgogICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG5hbWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgYm9keSA9IHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCkKKyAgICAgICAgYm9keSA9IHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHF1b3RlZG5hbWUgPSB1cmxsaWIucGFyc2UucXVvdGUoZmlsZW5hbWUsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdocmVmPSIlcyInICUgcXVvdGVkbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQogICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnLycgKyBxdW90ZWRuYW1lKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDAsCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1zdXBwb3J0LlRFU1RGTl9VTkRFQ09EQUJMRSkKIAogICAgIGRlZiB0ZXN0X2dldChzZWxmKToKICAgICAgICAgI2NvbnN0cnVjdHMgdGhlIHBhdGggcmVsYXRpdmUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBIVFRQU2VydmVyCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJy90ZXN0JykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwLCBkYXRhPXNlbGYuZGF0YSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSywgZGF0YT1zZWxmLmRhdGEpCiAgICAgICAgICMgY2hlY2sgZm9yIHRyYWlsaW5nICIvIiB3aGljaCBzaG91bGQgcmV0dXJuIDQwNC4gU2VlIElzc3VlMTczMjQKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnL3Rlc3QvJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNDA0KQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnLycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDMwMSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5NT1ZFRF9QRVJNQU5FTlRMWSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnLz9oaT0yJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICc/aGk9MScpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDMwMSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5NT1ZFRF9QRVJNQU5FTlRMWSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5nZXRoZWFkZXIoIkxvY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZW1wZGlyX25hbWUgKyAiLz9oaT0xIikKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy9UaGlzRG9lc05vdEV4aXN0JykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNDA0KQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nICsgJ1RoaXNEb2VzTm90RXhpc3QnICsgJy8nKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA0MDQpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyX25hbWUsICdpbmRleC5odG1sJyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJyArIHNlbGYudGVtcGRpcl9uYW1lICsgJy8nKQotICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwKQotICAgICAgICAgICAgIyBjaG1vZCgpIGRvZXNuJ3Qgd29yayBhcyBleHBlY3RlZCBvbiBXaW5kb3dzLCBhbmQgZmlsZXN5c3RlbQotICAgICAgICAgICAgIyBwZXJtaXNzaW9ucyBhcmUgaWdub3JlZCBieSByb290IG9uIFVuaXguCi0gICAgICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLmdldGV1aWQoKSAhPSAwOgotICAgICAgICAgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcGRpciwgMCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCisKKyAgICAgICAgZGF0YSA9IGIiRHVtbXkgaW5kZXggZmlsZVxyXG4iCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyX25hbWUsICdpbmRleC5odG1sJyksICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGEpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJyArIHNlbGYudGVtcGRpcl9uYW1lICsgJy8nKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LLCBkYXRhKQorCisgICAgICAgICMgY2htb2QoKSBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgb24gV2luZG93cywgYW5kIGZpbGVzeXN0ZW0KKyAgICAgICAgIyBwZXJtaXNzaW9ucyBhcmUgaWdub3JlZCBieSByb290IG9uIFVuaXguCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JyBhbmQgb3MuZ2V0ZXVpZCgpICE9IDA6CisgICAgICAgICAgICBvcy5jaG1vZChzZWxmLnRlbXBkaXIsIDApCisgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnLycpCi0gICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNDA0KQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQorICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBvcy5jaG1vZChzZWxmLnRlbXBkaXIsIDBvNzU1KQogCiAgICAgZGVmIHRlc3RfaGVhZChzZWxmKToKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoCiAgICAgICAgICAgICBzZWxmLnRlbXBkaXJfbmFtZSArICcvdGVzdCcsIG1ldGhvZD0nSEVBRCcpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5nZXRoZWFkZXIoJ2NvbnRlbnQtbGVuZ3RoJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGxlbihzZWxmLmRhdGEpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5nZXRoZWFkZXIoJ2NvbnRlbnQtdHlwZScpLApAQCAtMzM4LDEyICszOTcsMTIgQEAKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfcmVxdWVzdHMoc2VsZik6CiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJywgbWV0aG9kPSdGT08nKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA1MDEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogICAgICAgICAjIHJlcXVlc3RzIG11c3QgYmUgY2FzZSBzZW5zaXRpdmUsc28gdGhpcyBzaG91bGQgZmFpbCB0b28KICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3QoJy8nLCBtZXRob2Q9J2N1c3RvbScpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDUwMSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJywgbWV0aG9kPSdHRVRzJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNTAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogCiBjZ2lfZmlsZTEgPSAiIiJcCkBAIC00OTAsMTIgKzU0OSwxMyBAQAogCiAgICAgZGVmIHRlc3RfaGVhZGVyc19hbmRfY29udGVudChzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9maWxlMS5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKLSAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpLAorICAgICAgICAgICAgKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSykpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTE5NDM1KHNlbGYpOgogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy8vLy8vLy8vLy8vbm9jZ2kucHkvLi4vY2dpLWJpbi9ub3RoZXJlLnNoJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAKICAgICBkZWYgdGVzdF9wb3N0KHNlbGYpOgogICAgICAgICBwYXJhbXMgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKApAQCAtNTA4LDM4ICs1NjgsNDMgQEAKICAgICBkZWYgdGVzdF9pbnZhbGlkdXJpKHNlbGYpOgogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2ludmFsaWQnKQogICAgICAgICByZXMucmVhZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogCiAgICAgZGVmIHRlc3RfYXV0aG9yaXphdGlvbihzZWxmKToKICAgICAgICAgaGVhZGVycyA9IHtiJ0F1dGhvcml6YXRpb24nIDogYidCYXNpYyAnICsKICAgICAgICAgICAgICAgICAgICBiYXNlNjQuYjY0ZW5jb2RlKGIndXNlcm5hbWU6cGFzcycpfQogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2ZpbGUxLnB5JywgJ0dFVCcsIGhlYWRlcnM9aGVhZGVycykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAKICAgICBkZWYgdGVzdF9ub19sZWFkaW5nX3NsYXNoKHNlbGYpOgogICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMjU0CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnY2dpLWJpbi9maWxlMS5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKLSAgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSyksCisgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQogCiAgICAgZGVmIHRlc3Rfb3NfZW52aXJvbl9pc19ub3RfYWx0ZXJlZChzZWxmKToKICAgICAgICAgc2lnbmF0dXJlID0gIlRlc3QgQ0dJIFNlcnZlciIKICAgICAgICAgb3MuZW52aXJvblsnU0VSVkVSX1NPRlRXQVJFJ10gPSBzaWduYXR1cmUKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9maWxlMS5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKLSAgICAgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSyksCisgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmVudmlyb25bJ1NFUlZFUl9TT0ZUV0FSRSddLCBzaWduYXR1cmUpCiAKICAgICBkZWYgdGVzdF91cmxxdW90ZV9kZWNvZGluZ19pbl9jZ2lfY2hlY2soc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4lMmZmaWxlMS5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKLSAgICAgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSyksCisgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQogCiAgICAgZGVmIHRlc3RfbmVzdGVkX2NnaV9wYXRoX2lzc3VlMjEzMjMoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vY2hpbGQtZGlyL2ZpbGUzLnB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCAyMDApLAotICAgICAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAoYidIZWxsbyBXb3JsZCcgKyBzZWxmLmxpbmVzZXAsICd0ZXh0L2h0bWwnLCBIVFRQU3RhdHVzLk9LKSwKKyAgICAgICAgICAgIChyZXMucmVhZCgpLCByZXMuZ2V0aGVhZGVyKCdDb250ZW50LXR5cGUnKSwgcmVzLnN0YXR1cykpCiAKIAogY2xhc3MgU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC01NDksNyArNjE0LDcgQEAKIAogICAgIGRlZiBkb19HRVQoc2VsZik6CiAgICAgICAgIHNlbGYuZ2V0X2NhbGxlZCA9IFRydWUKLSAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCkKKyAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKQogICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShiJzxodG1sPjxib2R5PkRhdGE8L2JvZHk+PC9odG1sPlxyXG4nKQpAQCAtNTU5LDcgKzYyNCw3IEBACiAKIGNsYXNzIFJlamVjdGluZ1NvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcihTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIpOgogICAgIGRlZiBoYW5kbGVfZXhwZWN0XzEwMChzZWxmKToKLSAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQxNykKKyAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuRVhQRUNUQVRJT05fRkFJTEVEKQogICAgICAgICByZXR1cm4gRmFsc2UKIAogCkBAIC04MTYsNiArODgxLDcgQEAKICAgICBjd2QgPSBvcy5nZXRjd2QoKQogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgICAgICBSZXF1ZXN0SGFuZGxlckxvZ2dpbmdUZXN0Q2FzZSwKICAgICAgICAgICAgIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSwKICAgICAgICAgICAgIEJhc2VIVFRQU2VydmVyVGVzdENhc2UsCiAgICAgICAgICAgICBTaW1wbGVIVFRQU2VydmVyVGVzdENhc2UsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggOTZiNGYzMi4uODI0ODY1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtMTEsNyArMTEsOCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBjYWxlbmRhcgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF90aHJlYWRzLCB2ZXJib3NlLCB0cmFuc2llbnRfaW50ZXJuZXQsIHJ1bl93aXRoX3R6LCBydW5fd2l0aF9sb2NhbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocmVhcF90aHJlYWRzLCB2ZXJib3NlLCB0cmFuc2llbnRfaW50ZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl93aXRoX3R6LCBydW5fd2l0aF9sb2NhbGUpCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCiB0cnk6CkBAIC0xOSw4ICsyMCw4IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgc3NsID0gTm9uZQogCi1DRVJURklMRSA9IE5vbmUKLUNBRklMRSA9IE5vbmUKK0NFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLCAia2V5Y2VydDMucGVtIikKK0NBRklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpciwgInB5Y2FjZXJ0LnBlbSIpCiAKIAogY2xhc3MgVGVzdEltYXBsaWIodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDEsMTcgKzQyLDE1IEBACiAgICAgZGVmIHRlc3RfSW50ZXJuYWxkYXRlMnR1cGxlX2lzc3VlMTA5NDEoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCiAgICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAyOjMwOjAwICswMDAwIiknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSgKLSAgICAgICAgICAgIGInMjUgKElOVEVSTkFMREFURSAiMDItQXByLTIwMDAgMDM6MzA6MDAgKzAwMDAiKScpKQotCi0KKyAgICAgICAgICAgIGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlKAorICAgICAgICAgICAgICAgIGInMjUgKElOVEVSTkFMREFURSAiMDItQXByLTIwMDAgMDM6MzA6MDAgKzAwMDAiKScpKQogCiAgICAgZGVmIHRpbWV2YWx1ZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBbMjAwMDAwMDAwMCwgMjAwMDAwMDAwMC4wLCB0aW1lLmxvY2FsdGltZSgyMDAwMDAwMDAwKSwKICAgICAgICAgICAgICAgICAoMjAzMywgNSwgMTgsIDUsIDMzLCAyMCwgLTEsIC0xLCAtMSksCiAgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgMSksCiAgICAgICAgICAgICAgICAgZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgyMDAwMDAwMDAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKDAsIDIqNjAqNjApKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZSh0aW1lZGVsdGEoMCwgMiAqIDYwICogNjApKSksCiAgICAgICAgICAgICAgICAgJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInXQogCiAgICAgQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJ2RlX0RFJywgJ2ZyX0ZSJykKQEAgLTcyLDcgKzcxLDYgQEAKIAogCiBpZiBzc2w6Ci0KICAgICBjbGFzcyBTZWN1cmVUQ1BTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CiAKICAgICAgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgpAQCAtOTMsMTMgKzkxLDE3IEBACiAKIAogY2xhc3MgU2ltcGxlSU1BUEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKLQogICAgIHRpbWVvdXQgPSAxCiAgICAgY29udGludWF0aW9uID0gTm9uZQogICAgIGNhcGFiaWxpdGllcyA9ICcnCiAKKyAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0dXAoKQorICAgICAgICBzZWxmLnNlcnZlci5sb2dnZWQgPSBOb25lCisKICAgICBkZWYgX3NlbmQoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJTRU5UOiAlciIgJSBtZXNzYWdlLnN0cmlwKCkpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiU0VOVDogJXIiICUgbWVzc2FnZS5zdHJpcCgpKQogICAgICAgICBzZWxmLndmaWxlLndyaXRlKG1lc3NhZ2UpCiAKICAgICBkZWYgX3NlbmRfbGluZShzZWxmLCBtZXNzYWdlKToKQEAgLTEzMiw3ICsxMzQsOCBAQAogICAgICAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoYidcclxuJyk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCdHT1Q6ICVyJyAlIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0dPVDogJXInICUgbGluZS5zdHJpcCgpKQogICAgICAgICAgICAgaWYgc2VsZi5jb250aW51YXRpb246CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRpbnVhdGlvbi5zZW5kKGxpbmUpCkBAIC0xNDQsOCArMTQ3LDggQEAKICAgICAgICAgICAgIGNtZCA9IHNwbGl0bGluZVsxXQogICAgICAgICAgICAgYXJncyA9IHNwbGl0bGluZVsyOl0KIAotICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnY21kXycrY21kKToKLSAgICAgICAgICAgICAgICBjb250aW51YXRpb24gPSBnZXRhdHRyKHNlbGYsICdjbWRfJytjbWQpKHRhZywgYXJncykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2NtZF8nICsgY21kKToKKyAgICAgICAgICAgICAgICBjb250aW51YXRpb24gPSBnZXRhdHRyKHNlbGYsICdjbWRfJyArIGNtZCkodGFnLCBhcmdzKQogICAgICAgICAgICAgICAgIGlmIGNvbnRpbnVhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250aW51YXRpb24gPSBjb250aW51YXRpb24KICAgICAgICAgICAgICAgICAgICAgbmV4dChjb250aW51YXRpb24pCkBAIC0xNTMsMTYgKzE1NiwyNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ0JBRCcsIGNtZCArICcgdW5rbm93bicpCiAKICAgICBkZWYgY21kX0NBUEFCSUxJVFkoc2VsZiwgdGFnLCBhcmdzKToKLSAgICAgICAgY2FwcyA9ICdJTUFQNHJldjEgJyArIHNlbGYuY2FwYWJpbGl0aWVzIGlmIHNlbGYuY2FwYWJpbGl0aWVzIGVsc2UgJ0lNQVA0cmV2MScKKyAgICAgICAgY2FwcyA9ICgnSU1BUDRyZXYxICcgKyBzZWxmLmNhcGFiaWxpdGllcworICAgICAgICAgICAgICAgIGlmIHNlbGYuY2FwYWJpbGl0aWVzCisgICAgICAgICAgICAgICAgZWxzZSAnSU1BUDRyZXYxJykKICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKiBDQVBBQklMSVRZICcgKyBjYXBzKQogICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdDQVBBQklMSVRZIGNvbXBsZXRlZCcpCiAKICAgICBkZWYgY21kX0xPR09VVChzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICBzZWxmLnNlcnZlci5sb2dnZWQgPSBOb25lCiAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJyogQllFIElNQVA0cmVmMSBTZXJ2ZXIgbG9nZ2luZyBvdXQnKQogICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdMT0dPVVQgY29tcGxldGVkJykKIAorICAgIGRlZiBjbWRfTE9HSU4oc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIubG9nZ2VkID0gYXJnc1swXQorICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdMT0dJTiBjb21wbGV0ZWQnKQogCi1jbGFzcyBCYXNlVGhyZWFkZWROZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKK2NsYXNzIFRocmVhZGVkTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHNlcnZlcl9jbGFzcyA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIKKyAgICBpbWFwX2NsYXNzID0gaW1hcGxpYi5JTUFQNAogCiAgICAgZGVmIG1ha2Vfc2VydmVyKHNlbGYsIGFkZHIsIGhkbHIpOgogCkBAIC0xNzIsNyArMTg0LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgiY3JlYXRpbmcgc2VydmVyIikKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJjcmVhdGluZyBzZXJ2ZXIiKQogICAgICAgICBzZXJ2ZXIgPSBNeVNlcnZlcihhZGRyLCBoZGxyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZXJ2ZXJfYWRkcmVzcywgc2VydmVyLnNvY2tldC5nZXRzb2NrbmFtZSgpKQogCkBAIC0xODgsMTggKzIwMSwyMSBAQAogICAgICAgICAgICAgIyBTaG9ydCBwb2xsIGludGVydmFsIHRvIG1ha2UgdGhlIHRlc3QgZmluaXNoIHF1aWNrbHkuCiAgICAgICAgICAgICAjIFRpbWUgYmV0d2VlbiByZXF1ZXN0cyBpcyBzaG9ydCBlbm91Z2ggdGhhdCB3ZSB3b24ndCB3YWtlCiAgICAgICAgICAgICAjIHVwIHNwdXJpb3VzbHkgdG9vIG1hbnkgdGltZXMuCi0gICAgICAgICAgICBrd2FyZ3M9eydwb2xsX2ludGVydmFsJzowLjAxfSkKKyAgICAgICAgICAgIGt3YXJncz17J3BvbGxfaW50ZXJ2YWwnOiAwLjAxfSkKICAgICAgICAgdC5kYWVtb24gPSBUcnVlICAjIEluIGNhc2UgdGhpcyBmdW5jdGlvbiByYWlzZXMuCiAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgic2VydmVyIHJ1bm5pbmciKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoInNlcnZlciBydW5uaW5nIikKICAgICAgICAgcmV0dXJuIHNlcnZlciwgdAogCiAgICAgZGVmIHJlYXBfc2VydmVyKHNlbGYsIHNlcnZlciwgdGhyZWFkKToKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoIndhaXRpbmcgZm9yIHNlcnZlciIpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgid2FpdGluZyBmb3Igc2VydmVyIikKICAgICAgICAgc2VydmVyLnNodXRkb3duKCkKICAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgIHRocmVhZC5qb2luKCkKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoImRvbmUiKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoImRvbmUiKQogCiAgICAgQGNvbnRleHRtYW5hZ2VyCiAgICAgZGVmIHJlYXBlZF9zZXJ2ZXIoc2VsZiwgaGRscik6CkBAIC0yNDksNiArMjY1LDg0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmFib3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbWFwX2NsYXNzLCAqc2VydmVyLnNlcnZlcl9hZGRyZXNzKQogCisgICAgY2xhc3MgVVRGOFNlcnZlcihTaW1wbGVJTUFQSGFuZGxlcik6CisgICAgICAgIGNhcGFiaWxpdGllcyA9ICdBVVRIIEVOQUJMRSBVVEY4PUFDQ0VQVCcKKworICAgICAgICBkZWYgY21kX0VOQUJMRShzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRU5BQkxFIHN1Y2Nlc3NmdWwnKQorCisgICAgICAgIGRlZiBjbWRfQVVUSEVOVElDQVRFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlc3BvbnNlID0geWllbGQKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0ZBS0VBVVRIIHN1Y2Nlc3NmdWwnKQorCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2VuYWJsZV9yYWlzZXNfZXJyb3JfaWZfbm90X0FVVEgoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihzZWxmLlVURjhTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC51dGY4X2VuYWJsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yLCBjbGllbnQuZW5hYmxlLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xpZW50LnV0ZjhfZW5hYmxlZCkKKworICAgICMgWFhYIEFsc28gbmVlZCBhIHRlc3QgdGhhdCBlbmFibGUgYWZ0ZXIgU0VMRUNUIHJhaXNlcyBhbiBlcnJvci4KKworICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9lbmFibGVfcmFpc2VzX2Vycm9yX2lmX25vX2NhcGFiaWxpdHkoc2VsZik6CisgICAgICAgIGNsYXNzIE5vRW5hYmxlU2VydmVyKHNlbGYuVVRGOFNlcnZlcik6CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMgPSAnQVVUSCcKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKE5vRW5hYmxlU2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvciwgY2xpZW50LmVuYWJsZSwgJ2ZvbycpCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RfZW5hYmxlX1VURjhfcmFpc2VzX2Vycm9yX2lmX25vdF9zdXBwb3J0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIE5vblVURjhTZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKE5vblVURjhTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICAgICAgdHlwLCBkYXRhID0gY2xpZW50LmxvZ2luKCd1c2VyJywgJ3Bhc3MnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwLCAnT0snKQorICAgICAgICAgICAgICAgIGNsaWVudC5lbmFibGUoJ1VURjg9QUNDRVBUJykKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RfZW5hYmxlX1VURjhfVHJ1ZV9hcHBlbmQoc2VsZik6CisKKyAgICAgICAgY2xhc3MgVVRGOEFwcGVuZFNlcnZlcihzZWxmLlVURjhTZXJ2ZXIpOgorICAgICAgICAgICAgZGVmIGNtZF9BUFBFTkQoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnb2theScpCisKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKFVURjhBcHBlbmRTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fZW5jb2RpbmcsICdhc2NpaScpCisgICAgICAgICAgICBjb2RlLCBfID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAgIyBiNjQgZW5jb2RlZCAnZmFrZScKKyAgICAgICAgICAgIGNvZGUsIF8gPSBjbGllbnQuZW5hYmxlKCdVVEY4PUFDQ0VQVCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5fZW5jb2RpbmcsICd1dGYtOCcpCisgICAgICAgICAgICBtc2dfc3RyaW5nID0gJ1N1YmplY3Q6IMO8w7HDrcKpw7bDsMOpJworICAgICAgICAgICAgdHlwLCBkYXRhID0gY2xpZW50LmFwcGVuZCgKKyAgICAgICAgICAgICAgICBOb25lLCBOb25lLCBOb25lLCBtc2dfc3RyaW5nLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZXJ2ZXIucmVzcG9uc2UsCisgICAgICAgICAgICAgICAgKCdVVEY4ICglcylcclxuJyAlIG1zZ19zdHJpbmcpLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgKQorCisgICAgIyBYWFggYWxzbyBuZWVkIGEgdGVzdCB0aGF0IG1ha2VzIHN1cmUgdGhhdCB0aGUgTGl0ZXJhbCBhbmQgVW50YWdnZWRfc3RhdHVzCisgICAgIyByZWdleGVzIHVzZXMgdW5pY29kZSBpbiBVVEY4IG1vZGUgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBBU0NJSS4KKworICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9zZWFyY2hfZGlzYWxsb3dzX2NoYXJzZXRfaW5fdXRmOF9tb2RlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoc2VsZi5VVEY4U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgdHlwLCBfID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgIHR5cCwgXyA9IGNsaWVudC5lbmFibGUoJ1VURjg9QUNDRVBUJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNsaWVudC51dGY4X2VuYWJsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yLCBjbGllbnQuc2VhcmNoLCAnZm9vJywgJ2JhcicpCisKICAgICBAcmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfYmFkX2F1dGhfbmFtZShzZWxmKToKIApAQCAtMjU2LDcgKzM1MCw3IEBACiAKICAgICAgICAgICAgIGRlZiBjbWRfQVVUSEVOVElDQVRFKHNlbGYsIHRhZywgYXJncyk6CiAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnTk8nLCAndW5yZWNvZ25pemVkIGF1dGhlbnRpY2F0aW9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlIHt9Jy5mb3JtYXQoYXJnc1swXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUge30nLmZvcm1hdChhcmdzWzBdKSkKIAogICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoTXlTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IpOgpAQCAtMjkwLDEzICszODQsMTMgQEAKICAgICAgICAgICAgIGNvZGUsIGRhdGEgPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogYidmYWtlJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgJ09LJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1ptRnJaUT09XHJcbicpICNiNjQgZW5jb2RlZCAnZmFrZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAgIyBiNjQgZW5jb2RlZCAnZmFrZScKIAogICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoTXlTZXJ2ZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CiAgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6ICdmYWtlJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgJ09LJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1ptRnJaUT09XHJcbicpICNiNjQgZW5jb2RlZCAnZmFrZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAgIyBiNjQgZW5jb2RlZCAnZmFrZScKIAogICAgIEByZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9sb2dpbl9jcmFtX21kNShzZWxmKToKQEAgLTMwNyw5ICs0MDEsMTAgQEAKIAogICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrIFBERTRPVFl1TmprM01UY3dPVFV5UUhCdmMzUnZabVpwWTJVdWNtJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Z6ZEc5dUxtMWphUzV1WlhRPScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVnpkRzl1TG0xamFTNXVaWFE9JykKICAgICAgICAgICAgICAgICByID0geWllbGQKLSAgICAgICAgICAgICAgICBpZiByID09ICBiJ2RHbHRJR1l4WTJFMlltVTBOalJpT1dWbVlURmpZMkUyWm1aa05tTm1NbVE1WmpNeVxyXG4nOgorICAgICAgICAgICAgICAgIGlmIChyID09IGInZEdsdElHWXhZMkUyWW1VME5qUmlPV1ZtWVQnCisgICAgICAgICAgICAgICAgICAgICAgICAgYidGalkyRTJabVprTm1ObU1tUTVaak15XHJcbicpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdDUkFNLU1ENSBzdWNjZXNzZnVsJykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdOTycsICdObyBhY2Nlc3MnKQpAQCAtMzI1LDcgKzQyMCw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgIk9LIikKIAogCi0KICAgICBAcmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfYWJvcnRlZF9hdXRoZW50aWNhdGlvbihzZWxmKToKIApAQCAtMzQ0LDI2ICs0MzgsNDYgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvcik6CiAgICAgICAgICAgICAgICAgY29kZSwgZGF0YSA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBOb25lKQogCisKICAgICBkZWYgdGVzdF9saW5ldG9vbG9uZyhzZWxmKToKICAgICAgICAgY2xhc3MgVG9vTG9uZ0hhbmRsZXIoU2ltcGxlSU1BUEhhbmRsZXIpOgogICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKICAgICAgICAgICAgICAgICAjIFNlbmQgYSB2ZXJ5IGxvbmcgcmVzcG9uc2UgbGluZQotICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYicqIE9LICcgKyBpbWFwbGliLl9NQVhMSU5FKmIneCcgKyBiJ1xyXG4nKQorICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYicqIE9LICcgKyBpbWFwbGliLl9NQVhMSU5FICogYid4JyArIGInXHJcbicpCiAKICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoVG9vTG9uZ0hhbmRsZXIpIGFzIHNlcnZlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmltYXBfY2xhc3MsICpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCiAKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3Rfc2ltcGxlX3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICAjIHNpbXBsZXN0IGNhbGwKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHdpdGggc2VsZi5pbWFwX2NsYXNzKCpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHBhc3MKIAotY2xhc3MgVGhyZWFkZWROZXR3b3JrZWRUZXN0cyhCYXNlVGhyZWFkZWROZXR3b3JrZWRUZXN0cyk6CisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3NlcnZlcihTaW1wbGVJTUFQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAgd2l0aCBzZWxmLmltYXBfY2xhc3MoKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcykgYXMgaW1hcDoKKyAgICAgICAgICAgICAgICBpbWFwLmxvZ2luKCd1c2VyJywgJ3Bhc3MnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLmxvZ2dlZCwgJ3VzZXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLmxvZ2dlZCkKIAotICAgIHNlcnZlcl9jbGFzcyA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIKLSAgICBpbWFwX2NsYXNzID0gaW1hcGxpYi5JTUFQNAorICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9sb2dvdXQoc2VsZik6CisgICAgICAgICMgd2hhdCBoYXBwZW5zIGlmIGFscmVhZHkgbG9nb3V0IGluIHRoZSBibG9jaz8KKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHdpdGggc2VsZi5pbWFwX2NsYXNzKCpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpIGFzIGltYXA6CisgICAgICAgICAgICAgICAgaW1hcC5sb2dpbigndXNlcicsICdwYXNzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5sb2dnZWQsICd1c2VyJykKKyAgICAgICAgICAgICAgICBpbWFwLmxvZ291dCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VydmVyLmxvZ2dlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5sb2dnZWQpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAiU1NMIG5vdCBhdmFpbGFibGUiKQotY2xhc3MgVGhyZWFkZWROZXR3b3JrZWRUZXN0c1NTTChCYXNlVGhyZWFkZWROZXR3b3JrZWRUZXN0cyk6Ci0KK2NsYXNzIFRocmVhZGVkTmV0d29ya2VkVGVzdHNTU0woVGhyZWFkZWROZXR3b3JrZWRUZXN0cyk6CiAgICAgc2VydmVyX2NsYXNzID0gU2VjdXJlVENQU2VydmVyCiAgICAgaW1hcF9jbGFzcyA9IElNQVA0X1NTTAogCkBAIC0zNzQsOCArNDg4LDkgQEAKICAgICAgICAgc3NsX2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgICAgIHNzbF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDQUZJTEUpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5DZXJ0aWZpY2F0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lICcxMjcuMC4wLjEnIGRvZXNuJ3QgbWF0Y2ggJ2xvY2FsaG9zdCciKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIHNzbC5DZXJ0aWZpY2F0ZUVycm9yLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAnMTI3LjAuMC4xJyBkb2Vzbid0IG1hdGNoICdsb2NhbGhvc3QnIik6CiAgICAgICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3NlcnZlcihTaW1wbGVJTUFQSGFuZGxlcikgYXMgc2VydmVyOgogICAgICAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuaW1hcF9jbGFzcygqc2VydmVyLnNlcnZlcl9hZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfY29udGV4dD1zc2xfY29udGV4dCkKQEAgLTM4Nyw2ICs1MDIsOCBAQAogICAgICAgICAgICAgY2xpZW50LnNodXRkb3duKCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKSwgJ25ldHdvcmsgcmVzb3VyY2UgZGlzYWJsZWQnKQogY2xhc3MgUmVtb3RlSU1BUFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGhvc3QgPSAnY3lydXMuYW5kcmV3LmNtdS5lZHUnCiAgICAgcG9ydCA9IDE0MwpAQCAtNDIwLDYgKzUzNyw4IEBACiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAiU1NMIG5vdCBhdmFpbGFibGUiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyksICduZXR3b3JrIHJlc291cmNlIGRpc2FibGVkJykKIGNsYXNzIFJlbW90ZUlNQVBfU1RBUlRUTFNUZXN0KFJlbW90ZUlNQVBUZXN0KToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQ3Myw3ICs1OTIsOCBAQAogCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X3NzbF9jb250ZXh0KHNlbGYpOgogICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgotICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3MoCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQogCiAgICAgZGVmIHRlc3RfbG9nb3V0KHNlbGYpOgpAQCAtNDg0LDM1ICs2MDQsMTUgQEAKIAogICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2NlcnRmaWxlX2V4Y2x1c2l2ZShzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCiAKICAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9rZXlmaWxlX2V4Y2x1c2l2ZShzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQotCi0KLWRlZiBsb2FkX3Rlc3RzKCphcmdzKToKLSAgICB0ZXN0cyA9IFtUZXN0SW1hcGxpYl0KLQotICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgotICAgICAgICBpZiBzc2w6Ci0gICAgICAgICAgICBnbG9iYWwgQ0VSVEZJTEUsIENBRklMRQotICAgICAgICAgICAgQ0VSVEZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5Y2VydDMucGVtIikKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhDRVJURklMRSk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIGNlcnRpZmljYXRlIGZpbGVzISIpCi0gICAgICAgICAgICBDQUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHljYWNlcnQucGVtIikKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhDQUZJTEUpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBDQSBmaWxlISIpCi0gICAgICAgIHRlc3RzLmV4dGVuZChbCi0gICAgICAgICAgICBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzLCBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzU1NMLAotICAgICAgICAgICAgUmVtb3RlSU1BUFRlc3QsIFJlbW90ZUlNQVBfU1NMVGVzdCwgUmVtb3RlSU1BUF9TVEFSVFRMU1Rlc3QsCi0gICAgICAgIF0pCi0KLSAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKFt1bml0dGVzdC5tYWtlU3VpdGUodGVzdCkgZm9yIHRlc3QgaW4gdGVzdHNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICBrZXlmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5CmluZGV4IDBhZDQzNDMuLmI1NGRhZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5CkBAIC0xNiw3ICsxNiw5IEBACiAgICAgKCdweXRob24ucmFzJywgJ3Jhc3QnKSwKICAgICAoJ3B5dGhvbi5zZ2knLCAncmdiJyksCiAgICAgKCdweXRob24udGlmZicsICd0aWZmJyksCi0gICAgKCdweXRob24ueGJtJywgJ3hibScpCisgICAgKCdweXRob24ueGJtJywgJ3hibScpLAorICAgICgncHl0aG9uLndlYnAnLCAnd2VicCcpLAorICAgICgncHl0aG9uLmV4cicsICdleHInKSwKICkKIAogY2xhc3MgVW5zZWVrYWJsZUlPKGlvLkZpbGVJTyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CmluZGV4IDgwYjllYzMuLmVlOWVlMWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CkBAIC0zLDYgKzMsNyBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIF90aHJlYWQgPSBOb25lCiBpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKQEAgLTExMSw3ICsxMTIsNiBAQAogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayh0ZW1wX21vZF9uYW1lICsgJy5weScpCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayh0ZW1wX21vZF9uYW1lICsgJy5weWMnKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArICcucHlvJykKIAogICAgIGRlZiB0ZXN0X2lzc3VlNTYwNChzZWxmKToKICAgICAgICAgIyBUZXN0IGNhbm5vdCBjb3ZlciBpbXAubG9hZF9jb21waWxlZCBmdW5jdGlvbi4KQEAgLTE5NCw3ICsxOTQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrYWdlLmIsIDIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgICAgIGZvciBleHQgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CisgICAgICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnKToKICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayh0ZW1wX21vZF9uYW1lICsgZXh0KQogICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGluaXRfZmlsZV9uYW1lICsgZXh0KQogICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUodGVzdF9wYWNrYWdlX25hbWUpCkBAIC0yNzYsNiArMjc2LDI5IEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJmb3VuZCBtb2R1bGUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSBDIGV4dGVuc2lvbiIpCiAgICAgICAgIGltcC5sb2FkX21vZHVsZShuYW1lLCBOb25lLCAqZm91bmRbMTpdKQogCisgICAgQHJlcXVpcmVzX2xvYWRfZHluYW1pYworICAgIGRlZiB0ZXN0X2lzc3VlMjQ3NDhfbG9hZF9tb2R1bGVfc2tpcHNfc3lzX21vZHVsZXNfY2hlY2soc2VsZik6CisgICAgICAgIG5hbWUgPSAndGVzdC5pbXBfZHVtbXknCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKCdfdGVzdG11bHRpcGhhc2UnKQorICAgICAgICAgICAgbW9kdWxlID0gaW1wLmxvYWRfZHluYW1pYyhuYW1lLCBzcGVjLm9yaWdpbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19zcGVjX18ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fc3BlY19fLm9yaWdpbiwgc3BlYy5vcmlnaW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9kdWxlLCAnZHVtbXlfbmFtZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5pbnRfY29uc3QsIDE5NjkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZG9udF93cml0ZV9ieXRlY29kZSwKICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZW4gd3JpdGluZyBieXRlY29kZSIpCiAgICAgZGVmIHRlc3RfYnVnNzczMihzZWxmKToKQEAgLTM0Niw1NiArMzY5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQogCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fY2FjaGVfdGFnKHNlbGYpOgotICAgICAgICAjIE5vbiBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnLCBOb25lKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6Ci0gICAgICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCd3aGF0ZXZlci5weScpCi0KLSAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9ub19kb3Qoc2VsZik6Ci0gICAgICAgICMgRGlyZWN0b3J5IHdpdGggYSBkb3QsIGZpbGVuYW1lIHdpdGhvdXQgZG90LgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ2ZpbGUnKQotICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV7fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCi0KLSAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6ZWQoc2VsZik6Ci0gICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwotICAgICAgICAjIGRlZmluZWQgLnB5byBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLCBleHBlY3QpCi0KLSAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6Ci0gICAgICAgIHBhdGggPSAnZm9vLnB5JwotICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCi0KLSAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vdmVycmlkZShzZWxmKToKLSAgICAgICAgIyBXaGVuIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCBpdCBjYW4gYmUgYW55IHRydWUtaXNoIG9yIGZhbHNlLWlzaAotICAgICAgICAjIHZhbHVlLgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2Jhei5weScpCi0gICAgICAgIHBhcnRpYWxfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhei57fS5weScuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgW10pLCBwYXJ0aWFsX2V4cGVjdCArICdvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCi0gICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KLSAgICAgICAgIyBwcm9wYWdhdGVzLgotICAgICAgICBjbGFzcyBCZWFyaXNoOgotICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCi0KLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zZXAgPT0gJ1xcJyBhbmQgb3MuYWx0c2VwID09ICcvJywKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCi0gICAgZGVmIHRlc3Rfc2VwX2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgc2VwIGlzIHJpZ2h0IG9mIGFsdHNlcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6L3F1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQpAQCAtNDA3LDY4ICszODAsNiBAQAogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCBleHBlY3QpCiAKLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub19jYWNoZV90YWcoc2VsZik6Ci0gICAgICAgICMgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lLCByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdibGFoJywgJ19fcHljYWNoZV9fJywgJ3doYXRldmVyLnB5YycpCi0gICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgotICAgICAgICAgICAgICAgIGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfYmFkX3BhdGgoc2VsZik6Ci0gICAgICAgICMgV2hlbiB0aGUgcGF0aCB0byBhIHB5YyBmaWxlIGlzIG5vdCBpbiBQRVAgMzE0NyBmb3JtYXQsIGEgVmFsdWVFcnJvcgotICAgICAgICAjIGlzIHJhaXNlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCBpbXAuc291cmNlX2Zyb21fY2FjaGUsICcvZm9vL2Jhci9iYXpxdXgucHljJykKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX25vX3NsYXNoKHNlbGYpOgotICAgICAgICAjIE5vIHNsYXNoZXMgYXQgYWxsIGluIHBhdGggLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwgJ2Zvby5jcHl0aG9uLTMyLnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV90b29fZmV3X2RvdHMoc2VsZik6Ci0gICAgICAgICMgVG9vIGZldyBkb3RzIGluIGZpbmFsIHBhdGggY29tcG9uZW50IC0+IFZhbHVlRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCBpbXAuc291cmNlX2Zyb21fY2FjaGUsICdfX3B5Y2FjaGVfXy9mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3Rvb19tYW55X2RvdHMoc2VsZik6Ci0gICAgICAgICMgVG9vIG1hbnkgZG90cyBpbiBmaW5hbCBwYXRoIGNvbXBvbmVudCAtPiBWYWx1ZUVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLAotICAgICAgICAgICAgJ19fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTMyLmZvby5weWMnKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fX3B5Y2FjaGVfXyhzZWxmKToKLSAgICAgICAgIyBBbm90aGVyIHByb2JsZW0gd2l0aCB0aGUgcGF0aCAtPiBWYWx1ZUVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLAotICAgICAgICAgICAgJy9mb28vYmFyL2Zvby5jcHl0aG9uLTMyLmZvby5weWMnKQotCi0gICAgZGVmIHRlc3RfcGFja2FnZV9fX2ZpbGVfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoInBlcDMxNDcgbW9kdWxlIGFscmVhZHkgZXhpc3RzOiAlciIgJSAobSwpKQotICAgICAgICAjIFRlc3QgdGhhdCBhIHBhY2thZ2UncyBfX2ZpbGVfXyBwb2ludHMgdG8gdGhlIHJpZ2h0IHNvdXJjZSBkaXJlY3RvcnkuCi0gICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKLSAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKLSAgICAgICAgZGVmIGNsZWFudXAoKToKLSAgICAgICAgICAgIGlmIHN5cy5wYXRoWzBdID09IG9zLmN1cmRpcjoKLSAgICAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cCkKLSAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkgZmlsZS4KLSAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZSgncGVwMzE0Ny9fX2luaXRfXy5weScpCi0gICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCi0gICAgICAgIGV4cGVjdGVkX19fZmlsZV9fID0gb3Muc2VwLmpvaW4oKCcuJywgJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkKLSAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sIGV4cGVjdGVkX19fZmlsZV9fLCAobS5fX2ZpbGVfXywgbS5fX3BhdGhfXywgc3lzLnBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKSkKLSAgICAgICAgIyBFbnN1cmUgd2UgbG9hZCB0aGUgcHljIGZpbGUuCi0gICAgICAgIHN1cHBvcnQudW5sb2FkKCdwZXAzMTQ3JykKLSAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQotICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQotCiAKIGNsYXNzIE51bGxJbXBvcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcElmKHN1cHBvcnQuVEVTVEZOX1VORU5DT0RBQkxFIGlzIE5vbmUsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQppbmRleCBiNDg0MmM1Li4xNGE2ODhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpAQCAtMSw3ICsxLDcgQEAKICMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIudXRpbAotZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgX2dldF9zb3VyY2VmaWxlCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBfZ2V0X3NvdXJjZWZpbGUKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IG1hcnNoYWwKIGltcG9ydCBvcwpAQCAtMjEsOCArMjEsOSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKICAgICBFbnZpcm9ubWVudFZhckd1YXJkLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBmb3JnZXQsIGlzX2p5dGhvbiwKICAgICBtYWtlX2xlZ2FjeV9weWMsIHJtdHJlZSwgcnVuX3VuaXR0ZXN0LCBzd2FwX2F0dHIsIHN3YXBfaXRlbSwgdGVtcF91bWFzaywKLSAgICB1bmxpbmssIHVubG9hZCwgY3JlYXRlX2VtcHR5X2ZpbGUsIGNweXRob25fb25seSwgVEVTVEZOX1VORU5DT0RBQkxFKQotZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCisgICAgdW5saW5rLCB1bmxvYWQsIGNyZWF0ZV9lbXB0eV9maWxlLCBjcHl0aG9uX29ubHksIFRFU1RGTl9VTkVOQ09EQUJMRSwKKyAgICB0ZW1wX2RpcikKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIAogc2tpcF9pZl9kb250X3dyaXRlX2J5dGVjb2RlID0gdW5pdHRlc3Quc2tpcElmKApAQCAtMzIsNyArMzMsNiBAQAogZGVmIHJlbW92ZV9maWxlcyhuYW1lKToKICAgICBmb3IgZiBpbiAobmFtZSArICIucHkiLAogICAgICAgICAgICAgICBuYW1lICsgIi5weWMiLAotICAgICAgICAgICAgICBuYW1lICsgIi5weW8iLAogICAgICAgICAgICAgICBuYW1lICsgIi5weXciLAogICAgICAgICAgICAgICBuYW1lICsgIiRweS5jbGFzcyIpOgogICAgICAgICB1bmxpbmsoZikKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAjIHRlbXBvcmFyaWx5IGNsZWFycyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgKGlmIGFueSkKICAgICAjIHJldmVydHMgb3IgcmVtb3ZlcyB0aGUgbW9kdWxlIHdoZW4gY2xlYW5pbmcgdXAKICAgICBuYW1lID0gbmFtZSBvciAic3BhbSIKLSAgICB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB0ZW1wZGlyOgorICAgIHdpdGggdGVtcF9kaXIoKSBhcyB0ZW1wZGlyOgogICAgICAgICBwYXRoID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdCh0ZW1wZGlyLCBuYW1lLCBzb3VyY2UpCiAgICAgICAgIG9sZF9tb2R1bGUgPSBzeXMubW9kdWxlcy5wb3AobmFtZSwgTm9uZSkKICAgICAgICAgdHJ5OgpAQCAtODQsNyArODQsNiBAQAogICAgICAgICBkZWYgdGVzdF93aXRoX2V4dGVuc2lvbihleHQpOgogICAgICAgICAgICAgIyBUaGUgZXh0ZW5zaW9uIGlzIG5vcm1hbGx5ICIucHkiLCBwZXJoYXBzICIucHl3Ii4KICAgICAgICAgICAgIHNvdXJjZSA9IFRFU1RGTiArIGV4dAotICAgICAgICAgICAgcHlvID0gVEVTVEZOICsgIi5weW8iCiAgICAgICAgICAgICBpZiBpc19qeXRob246CiAgICAgICAgICAgICAgICAgcHljID0gVEVTVEZOICsgIiRweS5jbGFzcyIKICAgICAgICAgICAgIGVsc2U6CkBAIC0xMTUsNyArMTE0LDYgQEAKICAgICAgICAgICAgICAgICBmb3JnZXQoVEVTVEZOKQogICAgICAgICAgICAgICAgIHVubGluayhzb3VyY2UpCiAgICAgICAgICAgICAgICAgdW5saW5rKHB5YykKLSAgICAgICAgICAgICAgICB1bmxpbmsocHlvKQogCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCiAgICAgICAgIHRyeToKQEAgLTEzOCw3ICsxMzYsNyBAQAogICAgICAgICAgICAgZi53cml0ZSgnXScpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBDb21waWxlICYgcmVtb3ZlIC5weSBmaWxlOyB3ZSBvbmx5IG5lZWQgLnB5YyAob3IgLnB5bykuCisgICAgICAgICAgICAjIENvbXBpbGUgJiByZW1vdmUgLnB5IGZpbGU7IHdlIG9ubHkgbmVlZCAucHljLgogICAgICAgICAgICAgIyBCeXRlY29kZSBtdXN0IGJlIHJlbG9jYXRlZCBmcm9tIHRoZSBQRVAgMzE0NyBieXRlY29kZS1vbmx5IGxvY2F0aW9uLgogICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKGZpbGVuYW1lKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjUyLDcgKzI1MCw3IEBACiAgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG1vZC5fX2ZpbGVfXykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXh0LCAoJy5weWMnLCAnLnB5bycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHQsICcucHljJykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKQEAgLTI5NCw3ICsyOTIsOCBAQAogICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHNldCBtb2RpZmljYXRpb24gdGltZSB0byBsYXJnZSBpbnRlZ2VyIikKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBnZXRhdHRyKGVycm5vLCAnRU9WRVJGTE9XJywgTm9uZSk6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBub3QgaW4gKGdldGF0dHIoZXJybm8sICdFT1ZFUkZMT1cnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihlcnJubywgJ0VJTlZBTCcsIE5vbmUpKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3Qgc2V0IG1vZGlmaWNhdGlvbiB0aW1lIHRvIGxhcmdlIGludGVnZXIgKHt9KSIuZm9ybWF0KGUpKQogICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCkBAIC0zMjUsMTAgKzMyNCwyMyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW1wb3J0RXJyb3IsICJeY2Fubm90IGltcG9ydCBuYW1lICdib2d1cyciKToKICAgICAgICAgICAgIGZyb20gcmUgaW1wb3J0IGJvZ3VzCiAKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9BdHRyaWJ1dGVFcnJvcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjQ0OTI6IHRyeWluZyB0byBpbXBvcnQgYW4gYXR0cmlidXRlIHRoYXQgcmFpc2VzIGFuCisgICAgICAgICMgQXR0cmlidXRlRXJyb3Igc2hvdWxkIGxlYWQgdG8gYW4gSW1wb3J0RXJyb3IuCisgICAgICAgIGNsYXNzIEFsd2F5c0F0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIF8pOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yCisKKyAgICAgICAgbW9kdWxlX25hbWUgPSAndGVzdF9mcm9tX2ltcG9ydF9BdHRyaWJ1dGVFcnJvcicKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubG9hZCwgbW9kdWxlX25hbWUpCisgICAgICAgIHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSA9IEFsd2F5c0F0dHJpYnV0ZUVycm9yKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBmcm9tIHRlc3RfZnJvbV9pbXBvcnRfQXR0cmlidXRlRXJyb3IgaW1wb3J0IGRvZXNfbm90X2V4aXN0CisKIAogQHNraXBfaWZfZG9udF93cml0ZV9ieXRlY29kZQogY2xhc3MgRmlsZVBlcm1pc3Npb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljLy5weW8gZmlsZXMKKyAgICAjIHRlc3RzIGZvciBmaWxlIG1vZGUgb24gY2FjaGVkIC5weWMgZmlsZXMKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCkBAIC0zMzksNyArMzUxLDcgQEAKICAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImEgLnB5YyBmaWxlIikKICAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCiAKICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSB1bWFzayBpcyByZXNwZWN0ZWQsIGFuZCB0aGUgZXhlY3V0YWJsZSBiaXRzCkBAIC0zNTgsNyArMzcwLDcgQEAKICAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImEgLnB5YyBmaWxlIikKICAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvY3Qoc3RhdC5TX0lNT0RFKHN0YXRfaW5mby5zdF9tb2RlKSksIG9jdChtb2RlKSkKQEAgLTM3Myw3ICszODUsNyBAQAogICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNhY2hlZF9wYXRoKToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9faW1wb3J0X18gZGlkIG5vdCByZXN1bHQgaW4gY3JlYXRpb24gb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIGEgLnB5YyBvciAucHlvIGZpbGUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAiYSAucHljIGZpbGUiKQogICAgICAgICAgICAgc3RhdF9pbmZvID0gb3Muc3RhdChjYWNoZWRfcGF0aCkKIAogICAgICAgICBleHBlY3RlZCA9IG1vZGUgfCAwbzIwMCAjIEFjY291bnQgZm9yIGZpeCBmb3IgaXNzdWUgIzYwNzQKQEAgLTQwNCwxMCArNDE2LDcgQEAKICAgICAgICAgICAgIHVubGluayhwYXRoKQogICAgICAgICAgICAgdW5sb2FkKG5hbWUpCiAgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgImMiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgIm8iCisgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJjIgogICAgICAgICAgICAgb3MucmVuYW1lKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpLCBieXRlY29kZV9vbmx5KQogICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCAncmV3cml0dGVuJykKQEAgLTU2OCw3ICs1NzcsNyBAQAogCiAgICAgZGVmIHRlc3RfcmVsaW1wb3J0X3N0YXIoc2VsZik6CiAgICAgICAgICMgVGhpcyB3aWxsIGltcG9ydCAqIGZyb20gLnRlc3RfaW1wb3J0LgotICAgICAgICBmcm9tIC4gaW1wb3J0IHJlbGltcG9ydAorICAgICAgICBmcm9tIC4uIGltcG9ydCByZWxpbXBvcnQKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIocmVsaW1wb3J0LCAiUmVsYXRpdmVJbXBvcnRUZXN0cyIpKQogCiAgICAgZGVmIHRlc3RfaXNzdWUzMjIxKHNlbGYpOgpAQCAtNjMxLDkgKzY0MCw3IEBACiAKIAogY2xhc3MgUHljYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRlc3QgdGhlIHZhcmlvdXMgUEVQIDMxNDcgcmVsYXRlZCBiZWhhdmlvcnMuCi0KLSAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCisgICAgIyBUZXN0IHRoZSB2YXJpb3VzIFBFUCAzMTQ3LzQ4OC1yZWxhdGVkIGJlaGF2aW9ycy4KIAogICAgIGRlZiBfY2xlYW4oc2VsZik6CiAgICAgICAgIGZvcmdldChURVNURk4pCkBAIC02NTgsOSArNjY1LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoJ19fcHljYWNoZV9fJykpCiAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAnX19weWNhY2hlX18nLCAne30ue30ucHl7fScuZm9ybWF0KAotICAgICAgICAgICAgVEVTVEZOLCBzZWxmLnRhZywgJ2MnIGlmIF9fZGVidWdfXyBlbHNlICdvJykpKSkKKyAgICAgICAgcHljX3BhdGggPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLnNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHB5Y19wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdieXRlY29kZSBmaWxlIHshcn0gZm9yIHshcn0gZG9lcyBub3QgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0Jy5mb3JtYXQocHljX3BhdGgsIFRFU1RGTikpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQpAQCAtNjczLDggKzY4MSwxMCBAQAogICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8yMjIpOgogICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cygnX19weWNhY2hlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAnX19weWNhY2hlX18nLCAne30ue30ucHljJy5mb3JtYXQoVEVTVEZOLCBzZWxmLnRhZykpKSkKKyAgICAgICAgcHljX3BhdGggPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzZWxmLnNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhweWNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZWNvZGUgZmlsZSB7IXJ9IGZvciB7IXJ9ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMnLmZvcm1hdChweWNfcGF0aCwgVEVTVEZOKSkKIAogICAgIEBza2lwX2lmX2RvbnRfd3JpdGVfYnl0ZWNvZGUKICAgICBkZWYgdGVzdF9taXNzaW5nX3NvdXJjZShzZWxmKToKQEAgLTg0OSwxOSArODU5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fcGFja2FnZV9fLCAnaW1wb3J0bGliJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZC5fX2ZpbGVfXy5lbmRzd2l0aCgnX2Jvb3RzdHJhcC5weScpLCBtb2QuX19maWxlX18pCiAKKyAgICBkZWYgdGVzdF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsX2lzX2Jvb3RzdHJhcF9leHRlcm5hbChzZWxmKToKKyAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2QsIF9ib290c3RyYXBfZXh0ZXJuYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fbmFtZV9fLCAnaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX3BhY2thZ2VfXywgJ2ltcG9ydGxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uZW5kc3dpdGgoJ19ib290c3RyYXBfZXh0ZXJuYWwucHknKSwgbW9kLl9fZmlsZV9fKQorCiAgICAgZGVmIHRlc3RfdGhlcmVfY2FuX2JlX29ubHlfb25lKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNTM4NiByZXZlYWxlZCBhIHRyaWNreSBsb29waG9sZSBpbiB0aGUgYm9vdHN0cmFwcGluZwogICAgICAgICAjIFRoaXMgdGVzdCBpcyB0ZWNobmljYWxseSByZWR1bmRhbnQsIHNpbmNlIHRoZSBidWcgY2F1c2VkIGltcG9ydGluZwogICAgICAgICAjIHRoaXMgdGVzdCBtb2R1bGUgdG8gY3Jhc2ggY29tcGxldGVseSwgYnV0IGl0IGhlbHBzIHByb3ZlIHRoZSBwb2ludAogICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiAgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobWFjaGluZXJ5LkZpbGVGaW5kZXIsIG1vZC5GaWxlRmluZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKG1hY2hpbmVyeS5Nb2R1bGVTcGVjLCBtb2QuTW9kdWxlU3BlYykKIAogCiBAY3B5dGhvbl9vbmx5CiBjbGFzcyBHZXRTb3VyY2VmaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgIiIiVGVzdCBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fZ2V0X3NvdXJjZWZpbGUoKSBhcyB1c2VkIGJ5IHRoZSBDIEFQSS4KKyAgICAiIiJUZXN0IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9nZXRfc291cmNlZmlsZSgpIGFzIHVzZWQgYnkgdGhlIEMgQVBJLgogCiAgICAgQmVjYXVzZSBvZiB0aGUgcGVjdWxpYXJpdGllcyBvZiB0aGUgbmVlZCBvZiB0aGlzIGZ1bmN0aW9uLCB0aGUgdGVzdHMgYXJlCiAgICAga25vd2luZ2x5IHdoaXRlYm94IHRlc3RzLgpAQCAtODcxLDcgKzg4OSw3IEBACiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZWZpbGUoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gYSB2YWxpZCBieXRlY29kZSBwYXRoLCByZXR1cm4gdGhlIHBhdGggdG8gdGhlIGNvcnJlc3BvbmRpbmcKICAgICAgICAgIyBzb3VyY2UgZmlsZSBpZiBpdCBleGlzdHMuCi0gICAgICAgIHdpdGggbW9jay5wYXRjaCgnaW1wb3J0bGliLl9ib290c3RyYXAuX3BhdGhfaXNmaWxlJykgYXMgX3BhdGhfaXNmaWxlOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9wYXRoX2lzZmlsZScpIGFzIF9wYXRoX2lzZmlsZToKICAgICAgICAgICAgIF9wYXRoX2lzZmlsZS5yZXR1cm5fdmFsdWUgPSBUcnVlOwogICAgICAgICAgICAgcGF0aCA9IFRFU1RGTiArICcucHljJwogICAgICAgICAgICAgZXhwZWN0ID0gVEVTVEZOICsgJy5weScKQEAgLTg4MCw3ICs4OTgsNyBAQAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2VmaWxlX25vX3NvdXJjZShzZWxmKToKICAgICAgICAgIyBHaXZlbiBhIHZhbGlkIGJ5dGVjb2RlIHBhdGggd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgc291cmNlIHBhdGgsCiAgICAgICAgICMgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlY29kZSBwYXRoLgotICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ2ltcG9ydGxpYi5fYm9vdHN0cmFwLl9wYXRoX2lzZmlsZScpIGFzIF9wYXRoX2lzZmlsZToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CiAgICAgICAgICAgICBfcGF0aF9pc2ZpbGUucmV0dXJuX3ZhbHVlID0gRmFsc2U7CiAgICAgICAgICAgICBwYXRoID0gVEVTVEZOICsgJy5weWMnCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9nZXRfc291cmNlZmlsZShwYXRoKSwgcGF0aCkKQEAgLTEwMzUsNyArMTA1Myw3IEBACiAgICAgICAgICMgV2Ugc2ltdWxhdGUgYSBidWcgaW4gaW1wb3J0bGliIGFuZCBjaGVjayB0aGF0IGl0J3Mgbm90IHN0cmlwcGVkCiAgICAgICAgICMgYXdheSBmcm9tIHRoZSB0cmFjZWJhY2suCiAgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgIiIpCi0gICAgICAgIGltcG9ydGxpYiA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIGltcG9ydGxpYiA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCddCiAgICAgICAgIGlmICdsb2FkX21vZHVsZScgaW4gdmFycyhpbXBvcnRsaWIuU291cmNlTG9hZGVyKToKICAgICAgICAgICAgIG9sZF9leGVjX21vZHVsZSA9IGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIuZXhlY19tb2R1bGUKICAgICAgICAgZWxzZToKQEAgLTEwNjgsNiArMTA4Niw0NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pc29sYXRlZD1GYWxzZSkKIAogCitjbGFzcyBDaXJjdWxhckltcG9ydFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlNlZSB0aGUgZG9jc3RyaW5ncyBvZiB0aGUgbW9kdWxlcyBiZWluZyBpbXBvcnRlZCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhlCisgICAgdGVzdC4iIiIKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiTWFrZSBzdXJlIG5vIG1vZHVsZXMgcHJlLWV4aXN0IGluIHN5cy5tb2R1bGVzIHdoaWNoIGFyZSBiZWluZyB1c2VkIHRvCisgICAgICAgIHRlc3QuIiIiCisgICAgICAgIGZvciBrZXkgaW4gbGlzdChzeXMubW9kdWxlcy5rZXlzKCkpOgorICAgICAgICAgICAgaWYga2V5LnN0YXJ0c3dpdGgoJ3Rlc3QudGVzdF9pbXBvcnQuZGF0YS5jaXJjdWxhcl9pbXBvcnRzJyk6CisgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2tleV0KKworICAgIGRlZiB0ZXN0X2RpcmVjdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRlc3QudGVzdF9pbXBvcnQuZGF0YS5jaXJjdWxhcl9pbXBvcnRzLmJhc2ljCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnY2lyY3VsYXIgaW1wb3J0IHRocm91Z2ggcmVsYXRpdmUgaW1wb3J0cyBmYWlsZWQnKQorCisgICAgZGVmIHRlc3RfaW5kaXJlY3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cy5pbmRpcmVjdAorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3JlbGF0aXZlIGltcG9ydCBpbiBtb2R1bGUgY29udHJpYnV0aW5nIHRvIGNpcmN1bGFyICcKKyAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IGZhaWxlZCcpCisKKyAgICBkZWYgdGVzdF9zdWJwYWNrYWdlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuc3VicGFja2FnZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCBpbnZvbHZpbmcgYSBzdWJwYWNrYWdlIGZhaWxlZCcpCisKKyAgICBkZWYgdGVzdF9yZWJpbmRpbmcoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cy5yZWJpbmRpbmcgYXMgcmViaW5kaW5nCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnY2lyY3VsYXIgaW1wb3J0IHdpdGggcmViaW5kaW5nIG9mIG1vZHVsZSBhdHRyaWJ1dGUgZmFpbGVkJykKKyAgICAgICAgZnJvbSB0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cy5zdWJwa2cgaW1wb3J0IHV0aWwKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh1dGlsLnV0aWwsIHJlYmluZGluZy51dGlsKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgIyBUZXN0IG5lZWRzIHRvIGJlIGEgcGFja2FnZSwgc28gd2UgY2FuIGRvIHJlbGF0aXZlIGltcG9ydHMuCiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZjAyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX21haW5fXy5weQpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCB1bml0dGVzdAorCit1bml0dGVzdC5tYWluKCd0ZXN0LnRlc3RfaW1wb3J0JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTQxZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2Jhc2ljLnB5CkBAIC0wLDAgKzEsMiBAQAorIiIiQ2lyY3VsYXIgaW1wb3J0cyB0aHJvdWdoIGRpcmVjdCwgcmVsYXRpdmUgaW1wb3J0cy4iIiIKK2Zyb20gLiBpbXBvcnQgYmFzaWMyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2Jhc2ljMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGJkMmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2Jhc2ljMi5weQpAQCAtMCwwICsxIEBACitmcm9tIC4gaW1wb3J0IGJhc2ljCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvaW5kaXJlY3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvaW5kaXJlY3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkyNTc4OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9pbmRpcmVjdC5weQpAQCAtMCwwICsxIEBACitmcm9tIC4gaW1wb3J0IGJhc2ljLCBiYXNpYzIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9yZWJpbmRpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNzczNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nLnB5CkBAIC0wLDAgKzEsMyBAQAorIiIiVGVzdCB0aGUgYmluZGluZyBvZiBuYW1lcyB3aGVuIGEgY2lyY3VsYXIgaW1wb3J0IHNoYXJlcyB0aGUgc2FtZSBuYW1lIGFzIGFuCithdHRyaWJ1dGUuIiIiCitmcm9tIC5yZWJpbmRpbmcyIGltcG9ydCB1dGlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nMi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9yZWJpbmRpbmcyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YTllNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nMi5weQpAQCAtMCwwICsxLDMgQEAKK2Zyb20gLnN1YnBrZyBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCByZWJpbmRpbmcKK3V0aWwgPSB1dGlsLnV0aWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwYWNrYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBhY2thZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0MTJmNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwYWNrYWdlLnB5CkBAIC0wLDAgKzEsMiBAQAorIiIiQ2lyY3VsYXIgaW1wb3J0IGludm9sdmluZyBhIHN1Yi1wYWNrYWdlLiIiIgorZnJvbSAuc3VicGtnIGltcG9ydCBzdWJwYWNrYWdlMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZy9zdWJwYWNrYWdlMi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvc3VicGFja2FnZTIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiODkzYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvc3VicGFja2FnZTIucHkKQEAgLTAsMCArMSwyIEBACisjZnJvbSAudXRpbCBpbXBvcnQgdXRpbAorZnJvbSAuLiBpbXBvcnQgc3VicGFja2FnZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZy91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZy91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0M2JkODQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3V0aWwucHkKQEAgLTAsMCArMSwyIEBACitkZWYgdXRpbCgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQzYmQ4NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy91dGlsLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHV0aWwoKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQppbmRleCA5MzQ1NjJmLi5hMmU2ZTFlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKQEAgLTEsMjEgKzEsMjEgQEAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGJ1aWx0aW5fdXRpbAogCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKK0B1bml0dGVzdC5za2lwSWYodXRpbC5CVUlMVElOUy5nb29kX25hbWUgaXMgTm9uZSwgJ25vIHJlYXNvbmFibGUgYnVpbHRpbiBtb2R1bGUnKQogY2xhc3MgRmluZFNwZWNUZXN0cyhhYmMuRmluZGVyVGVzdHMpOgogCiAgICAgIiIiVGVzdCBmaW5kX3NwZWMoKSBmb3IgYnVpbHQtaW4gbW9kdWxlcy4iIiIKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgIyBDb21tb24gY2FzZS4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKGJ1aWx0aW5fdXRpbC5OQU1FKQorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSk6CisgICAgICAgICAgICBmb3VuZCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWModXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLm9yaWdpbiwgJ2J1aWx0LWluJykKIApAQCAtMzksMjMgKzM5LDI2IEBACiAKICAgICBkZWYgdGVzdF9pZ25vcmVfcGF0aChzZWxmKToKICAgICAgICAgIyBUaGUgdmFsdWUgZm9yICdwYXRoJyBzaG91bGQgYWx3YXlzIHRyaWdnZXIgYSBmYWlsZWQgaW1wb3J0LgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfc3BlYyhidWlsdGluX3V0aWwuTkFNRSwKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWModXRpbC5CVUlMVElOUy5nb29kX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3BrZyddKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3BlYykKIAotRnJvemVuX0ZpbmRTcGVjVGVzdHMsIFNvdXJjZV9GaW5kU3BlY1Rlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywKLSAgICAgICAgbWFjaGluZXJ5PVtmcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5XSkKKworKEZyb3plbl9GaW5kU3BlY1Rlc3RzLAorIFNvdXJjZV9GaW5kU3BlY1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRTcGVjVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAorQHVuaXR0ZXN0LnNraXBJZih1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSBpcyBOb25lLCAnbm8gcmVhc29uYWJsZSBidWlsdGluIG1vZHVsZScpCiBjbGFzcyBGaW5kZXJUZXN0cyhhYmMuRmluZGVyVGVzdHMpOgogCiAgICAgIiIiVGVzdCBmaW5kX21vZHVsZSgpIGZvciBidWlsdC1pbiBtb2R1bGVzLiIiIgogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICAjIENvbW1vbiBjYXNlLgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBmb3VuZCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihmb3VuZCwgJ2xvYWRfbW9kdWxlJykpCiAKQEAgLTcyLDEzICs3NSwxNSBAQAogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FLAorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSk6CisgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3BrZyddKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCi1Gcm96ZW5fRmluZGVyVGVzdHMsIFNvdXJjZV9GaW5kZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLAotICAgICAgICBtYWNoaW5lcnk9W2Zyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnldKQorCisoRnJvemVuX0ZpbmRlclRlc3RzLAorIFNvdXJjZV9GaW5kZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKaW5kZXggMWY4MzU3NC4uYjEzNDllYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDE0ICsxLDEzIEBACiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBidWlsdGluX3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCi0KK0B1bml0dGVzdC5za2lwSWYodXRpbC5CVUlMVElOUy5nb29kX25hbWUgaXMgTm9uZSwgJ25vIHJlYXNvbmFibGUgYnVpbHRpbiBtb2R1bGUnKQogY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKIAogICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgYnVpbHQtaW4gbW9kdWxlcy4iIiIKQEAgLTI5LDggKzI4LDggQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgIyBDb21tb24gY2FzZS4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSkKIAogICAgICMgQnVpbHQtaW4gbW9kdWxlcyBjYW5ub3QgYmUgYSBwYWNrYWdlLgpAQCAtNDEsOSArNDAsOSBAQAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCB0aGUgc2FtZSBtb2R1bGUgaXMgdXNlZCBpbiBhIHJlbG9hZC4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlMSA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgbW9kdWxlMSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCisgICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKIAogICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CkBAIC02Niw0MCArNjUsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbW9kdWxlX25hbWUpCiAKIAotRnJvemVuX0xvYWRlclRlc3RzLCBTb3VyY2VfTG9hZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywKLSAgICAgICAgbWFjaGluZXJ5PVtmcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5XSkKKyhGcm96ZW5fTG9hZGVyVGVzdHMsCisgU291cmNlX0xvYWRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKK0B1bml0dGVzdC5za2lwSWYodXRpbC5CVUlMVElOUy5nb29kX25hbWUgaXMgTm9uZSwgJ25vIHJlYXNvbmFibGUgYnVpbHRpbiBtb2R1bGUnKQogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzOgogCiAgICAgIiIiVGVzdHMgZm9yIEluc3BlY3RMb2FkZXIgbWV0aG9kcyBmb3IgQnVpbHRpbkltcG9ydGVyLiIiIgogCiAgICAgZGVmIHRlc3RfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgICMgVGhlcmUgaXMgbm8gY29kZSBvYmplY3QuCi0gICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfY29kZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9jb2RlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIHNvdXJjZS4KLSAgICAgICAgcmVzdWx0ID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9zb3VyY2UoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfc291cmNlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKICAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgogICAgICAgICAjIENhbm5vdCBiZSBhIHBhY2thZ2UuCi0gICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5pc19wYWNrYWdlKGJ1aWx0aW5fdXRpbC5OQU1FKQorICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuaXNfcGFja2FnZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHQpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuYmFkX25hbWUgaXMgTm9uZSwgJ2FsbCBtb2R1bGVzIGFyZSBidWlsdCBpbicpCiAgICAgZGVmIHRlc3Rfbm90X2J1aWx0aW4oc2VsZik6CiAgICAgICAgICMgTW9kdWxlcyBub3QgYnVpbHQtaW4gc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgogICAgICAgICBmb3IgbWV0aF9uYW1lIGluICgnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsICdpc19wYWNrYWdlJyk6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWV0aF9uYW1lKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIG1ldGhvZChidWlsdGluX3V0aWwuQkFEX05BTUUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJ1aWx0aW5fdXRpbC5CQURfTkFNRSkKKyAgICAgICAgICAgIG1ldGhvZCh1dGlsLkJVSUxUSU5TLmJhZF9uYW1lKQogCi1Gcm96ZW5fSW5zcGVjdExvYWRlclRlc3RzLCBTb3VyY2VfSW5zcGVjdExvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEluc3BlY3RMb2FkZXJUZXN0cywKLSAgICAgICAgbWFjaGluZXJ5PVtmcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5XSkKKworKEZyb3plbl9JbnNwZWN0TG9hZGVyVGVzdHMsCisgU291cmNlX0luc3BlY3RMb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcwNDY5OS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWltcG9ydCBzeXMKLQotYXNzZXJ0ICdlcnJubycgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCi1OQU1FID0gJ2Vycm5vJwotCi1hc3NlcnQgJ2ltcG9ydGxpYicgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotQkFEX05BTUUgPSAnaW1wb3J0bGliJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggYmIyNTI4ZS4uNzA2YzNlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDI1ICsxLDI0IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAogCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIAogIyBYWFggZmluZF9zcGVjIHRlc3RzCiAKLUB1bml0dGVzdC5za2lwSWYoZXh0X3V0aWwuRklMRU5BTUUgaXMgTm9uZSwgJ190ZXN0Y2FwaSBub3QgYXZhaWxhYmxlJykKK0B1bml0dGVzdC5za2lwSWYodXRpbC5FWFRFTlNJT05TLmZpbGVuYW1lIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCiBAdXRpbC5jYXNlX2luc2Vuc2l0aXZlX3Rlc3RzCiBjbGFzcyBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0OgogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYpOgotICAgICAgICBnb29kX25hbWUgPSBleHRfdXRpbC5OQU1FCisgICAgICAgIGdvb2RfbmFtZSA9IHV0aWwuRVhURU5TSU9OUy5uYW1lCiAgICAgICAgIGJhZF9uYW1lID0gZ29vZF9uYW1lLnVwcGVyKCkKICAgICAgICAgYXNzZXJ0IGdvb2RfbmFtZSAhPSBiYWRfbmFtZQotICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCisgICAgICAgIGZpbmRlciA9IHNlbGYubWFjaGluZXJ5LkZpbGVGaW5kZXIodXRpbC5FWFRFTlNJT05TLnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKGJhZF9uYW1lKQpAQCAtMjcsNyArMjYsNyBAQAogICAgIGRlZiB0ZXN0X2Nhc2Vfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi51bnNldCgnUFlUSE9OQ0FTRU9LJykKLSAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXBfZXh0ZXJuYWwuX29zLmVudmlyb246CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQpAQCAtMzYsMTUgKzM1LDE2IEBACiAgICAgZGVmIHRlc3RfY2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKLSAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gX2Jvb3RzdHJhcF9leHRlcm5hbC5fb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kX21vZHVsZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCi1Gcm96ZW5fRXh0ZW5zaW9uQ2FzZVNlbnNpdGl2aXR5LCBTb3VyY2VfRXh0ZW5zaW9uQ2FzZVNlbnNpdGl2aXR5ID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEV4dGVuc2lvbk1vZHVsZUNhc2VTZW5zaXRpdml0eVRlc3QsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fRXh0ZW5zaW9uQ2FzZVNlbnNpdGl2aXR5LAorIFNvdXJjZV9FeHRlbnNpb25DYXNlU2Vuc2l0aXZpdHkKKyApID0gdXRpbC50ZXN0X2JvdGgoRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CmluZGV4IDk5MGYyOWMuLjcxYmY2N2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKQEAgLTEsOCArMSw3IEBACiBmcm9tIC4uIGltcG9ydCBhYmMKLWZyb20gLi4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwKK2Zyb20gLi4gaW1wb3J0IHV0aWwKIAotbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTE0LDcgKzEzLDcgQEAKICAgICAiIiJUZXN0IHRoZSBmaW5kZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgaW1wb3J0ZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKHV0aWwuUEFUSCwKKyAgICAgICAgaW1wb3J0ZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKHV0aWwuRVhURU5TSU9OUy5wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKQEAgLTIyLDcgKzIxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUodXRpbC5OQU1FKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUodXRpbC5FWFRFTlNJT05TLm5hbWUpKQogCiAgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIGFuIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KICAgICB0ZXN0X3BhY2thZ2UgPSB0ZXN0X3BhY2thZ2VfaW5fcGFja2FnZSA9IE5vbmUKQEAgLTM2LDggKzM1LDEwIEBACiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kX21vZHVsZSgnYXNkZmprbDsnKSkKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9GaW5kZXJUZXN0cywKKyBTb3VyY2VfRmluZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQppbmRleCBmZDlhYmYyLi4xNTRhNzkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKIApAQCAtOCw2ICs3LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIAogCiBjbGFzcyBMb2FkZXJUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgpAQCAtMTUsOCArMTYsOCBAQAogICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisgICAgICAgIHNlbGYubG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcih1dGlsLkVYVEVOU0lPTlMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuRVhURU5TSU9OUy5maWxlX3BhdGgpCiAKICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCkBAIC0yOSwyMyArMzAsMjMgQEAKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ1hYWCcpCiAKICAgICBkZWYgdGVzdF9lcXVhbGl0eShzZWxmKToKLSAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKKyAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKHV0aWwuRVhURU5TSU9OUy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5FWFRFTlNJT05TLmZpbGVfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRlciwgb3RoZXIpCiAKICAgICBkZWYgdGVzdF9pbmVxdWFsaXR5KHNlbGYpOgotICAgICAgICBvdGhlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoJ18nICsgZXh0X3V0aWwuTkFNRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF91dGlsLkZJTEVQQVRIKQorICAgICAgICBvdGhlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoJ18nICsgdXRpbC5FWFRFTlNJT05TLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlbGYubG9hZGVyLCBvdGhlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5FWFRFTlNJT05TLm5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSh1dGlsLkVYVEVOU0lPTlMubmFtZSkKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBbKCdfX25hbWVfXycsIHV0aWwuRVhURU5TSU9OUy5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIHV0aWwuRVhURU5TSU9OUy5maWxlX3BhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fcGFja2FnZV9fJywgJycpXToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4dF91dGlsLk5BTUUsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbih1dGlsLkVYVEVOU0lPTlMubmFtZSwgc3lzLm1vZHVsZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLl9fbG9hZGVyX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKIApAQCAtNTYsOSArNTcsOSBAQAogICAgIHRlc3RfbGFja2luZ19wYXJlbnQgPSBOb25lCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlMSA9IHNlbGYubG9hZF9tb2R1bGUoZXh0X3V0aWwuTkFNRSkKLSAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuRVhURU5TSU9OUy5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKQorICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5FWFRFTlNJT05TLm5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCiAKICAgICAjIE5vIGVhc3kgd2F5IHRvIHRyaWdnZXIgYSBmYWlsdXJlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbXBvcnQuCkBAIC03MSwxNSArNzIsMTk2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCiAKICAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2UoZXh0X3V0aWwuTkFNRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZSh1dGlsLkVYVEVOU0lPTlMubmFtZSkpCiAgICAgICAgIGZvciBzdWZmaXggaW4gc2VsZi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgogICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignc29tZScsICdwYXRoJywgJ3BrZycsICdfX2luaXRfXycgKyBzdWZmaXgpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdwa2cnLCBwYXRoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlci5pc19wYWNrYWdlKCdwa2cnKSkKIAotRnJvemVuX0xvYWRlclRlc3RzLCBTb3VyY2VfTG9hZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAorY2xhc3MgTXVsdGlQaGFzZUV4dGVuc2lvbk1vZHVsZVRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6CisgICAgIiIiVGVzdCBsb2FkaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24gKFBFUCA0ODkpCisgICAgIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubmFtZSA9ICdfdGVzdG11bHRpcGhhc2UnCisgICAgICAgIGZpbmRlciA9IHNlbGYubWFjaGluZXJ5LkZpbGVGaW5kZXIoTm9uZSkKKyAgICAgICAgc2VsZi5zcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKHNlbGYubmFtZSkKKyAgICAgICAgYXNzZXJ0IHNlbGYuc3BlYworICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoCisgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYuc3BlYy5vcmlnaW4pCisKKyAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgYXMgX19pbml0X18gYXZhaWxhYmxlIGZvciB0ZXN0aW5nLgorICAgIHRlc3RfcGFja2FnZSA9IE5vbmUKKworICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBpbiBhIHBhY2thZ2UgYXZhaWxhYmxlIGZvciB0ZXN0aW5nLgorICAgIHRlc3RfbGFja2luZ19wYXJlbnQgPSBOb25lCisKKyAgICAjIEhhbmRsaW5nIGZhaWx1cmUgb24gcmVsb2FkIGlzIHRoZSB1cCB0byB0aGUgbW9kdWxlLgorICAgIHRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZSA9IE5vbmUKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCBsb2FkaW5nIGFuIGV4dGVuc2lvbiBtb2R1bGUnJycKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUoKQorICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgc2VsZi5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIHNlbGYuc3BlYy5vcmlnaW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fcGFja2FnZV9fJywgJycpXToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tzZWxmLm5hbWVdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZS5fX2xvYWRlcl9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbmFsaXR5KHNlbGYpOgorICAgICAgICAnJydUZXN0IGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2Ygc3R1ZmYgZGVmaW5lZCBpbiBhbiBleHRlbnNpb24gbW9kdWxlJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgICAgICBleCA9IG1vZHVsZS5FeGFtcGxlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguZGVtbygnYWJjZCcpLCAnYWJjZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmRlbW8oKSwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIGV4LmFiYworICAgICAgICAgICAgZXguYWJjID0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hYmMsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5mb28oOSwgOSksIDE4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZS5TdHIoKSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuU3RyKDEpICsgJzIzJywgJzEyMycpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG1vZHVsZS5lcnJvcik6CisgICAgICAgICAgICAgICAgcmFpc2UgbW9kdWxlLmVycm9yKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmludF9jb25zdCwgMTk2OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLnN0cl9jb25zdCwgJ3NvbWV0aGluZyBkaWZmZXJlbnQnKQorCisgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgorICAgICAgICAnJydUZXN0IHRoYXQgcmVsb2FkIGRpZG4ndCByZS1zZXQgdGhlIG1vZHVsZSdzIGF0dHJpYnV0ZXMnJycKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUoKQorICAgICAgICAgICAgZXhfY2xhc3MgPSBtb2R1bGUuRXhhbXBsZQorICAgICAgICAgICAgaW1wb3J0bGliLnJlbG9hZChtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4X2NsYXNzLCBtb2R1bGUuRXhhbXBsZSkKKworICAgIGRlZiB0ZXN0X3RyeV9yZWdpc3RyYXRpb24oc2VsZik6CisgICAgICAgICcnJ0Fzc2VydCB0aGF0IHRoZSBQeVN0YXRlX3tGaW5kLEFkZCxSZW1vdmV9TW9kdWxlIEMgQVBJIGRvZXNuJ3Qgd29yaycnJworICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ1B5U3RhdGVfRmluZE1vZHVsZScpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYygwKSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ1B5U3RhdGVfQWRkTW9kdWxlJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYygxKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnUHlTdGF0ZV9SZW1vdmVNb2R1bGUnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IpOgorICAgICAgICAgICAgICAgIG1vZHVsZS5jYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jKDIpCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZik6CisgICAgICAgICcnJ0xvYWQgdGhlIG1vZHVsZSBmcm9tIHRoZSB0ZXN0IGV4dGVuc2lvbicnJworICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQorCisgICAgZGVmIGxvYWRfbW9kdWxlX2J5X25hbWUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAnJydMb2FkIGEgbW9kdWxlIGZyb20gdGhlIHRlc3QgZXh0ZW5zaW9uIGJ5IG5hbWUnJycKKyAgICAgICAgb3JpZ2luID0gc2VsZi5zcGVjLm9yaWdpbgorICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKGZ1bGxuYW1lLCBvcmlnaW4pCisgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBsb2FkZXIpCisgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgbG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgZGVmIHRlc3RfbG9hZF9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgbG9hZGluZyBhIHNpbXVsYXRlZCBzdWJtb2R1bGUnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKCdwa2cuJyArIHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cuJyArIHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuc3RyX2NvbnN0LCAnc29tZXRoaW5nIGRpZmZlcmVudCcpCisKKyAgICBkZWYgdGVzdF9sb2FkX3Nob3J0X25hbWUoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgbG9hZGluZyBtb2R1bGUgd2l0aCBhIG9uZS1jaGFyYWN0ZXIgbmFtZScnJworICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUoJ3gnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5zdHJfY29uc3QsICdzb21ldGhpbmcgZGlmZmVyZW50JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneCcsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfbG9hZF90d2ljZShzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IDIgbG9hZHMgcmVzdWx0IGluIDIgbW9kdWxlIG9iamVjdHMnJycKKyAgICAgICAgbW9kdWxlMSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShzZWxmLm5hbWUpCisgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUoc2VsZi5uYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vZHVsZTEsIG1vZHVsZTIpCisKKyAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgorICAgICAgICAnJydUZXN0IG5vbmV4aXN0ZW50IG1vZHVsZScnJworICAgICAgICBuYW1lID0gJ2FzZGZqa2w7JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorCisgICAgZGVmIHRlc3RfdW5sb2FkYWJsZV9ub25hc2NpaShzZWxmKToKKyAgICAgICAgJycnVGVzdCBiZWhhdmlvciB3aXRoIG5vbmV4aXN0ZW50IG1vZHVsZSB3aXRoIG5vbi1BU0NJSSBuYW1lJycnCisgICAgICAgIG5hbWUgPSAnZm9ceGYzJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQorCisgICAgZGVmIHRlc3Rfbm9ubW9kdWxlKHNlbGYpOgorICAgICAgICAnJydUZXN0IHJldHVybmluZyBhIG5vbi1tb2R1bGUgb2JqZWN0IGZyb20gY3JlYXRlIHdvcmtzJycnCisgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKyAnX25vbm1vZHVsZScKKyAgICAgICAgbW9kID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodHlwZShtb2QpLCB0eXBlKHVuaXR0ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QudGhyZWUsIDMpCisKKyAgICBkZWYgdGVzdF9udWxsX3Nsb3RzKHNlbGYpOgorICAgICAgICAnJydUZXN0IHRoYXQgTlVMTCBzbG90cyBhcmVuJ3QgYSBwcm9ibGVtJycnCisgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKyAnX251bGxfc2xvdHMnCisgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKworICAgIGRlZiB0ZXN0X2JhZF9tb2R1bGVzKHNlbGYpOgorICAgICAgICAnJydUZXN0IFN5c3RlbUVycm9yIGlzIHJhaXNlZCBmb3IgbWlzYmVoYXZpbmcgZXh0ZW5zaW9ucycnJworICAgICAgICBmb3IgbmFtZV9iYXNlIGluIFsKKyAgICAgICAgICAgICAgICAnYmFkX3Nsb3RfbGFyZ2UnLAorICAgICAgICAgICAgICAgICdiYWRfc2xvdF9uZWdhdGl2ZScsCisgICAgICAgICAgICAgICAgJ2NyZWF0ZV9pbnRfd2l0aF9zdGF0ZScsCisgICAgICAgICAgICAgICAgJ25lZ2F0aXZlX3NpemUnLAorICAgICAgICAgICAgICAgICdleHBvcnRfbnVsbCcsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF91bmluaXRpYWxpemVkJywKKyAgICAgICAgICAgICAgICAnZXhwb3J0X3JhaXNlJywKKyAgICAgICAgICAgICAgICAnZXhwb3J0X3VucmVwb3J0ZWRfZXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX251bGwnLAorICAgICAgICAgICAgICAgICdjcmVhdGVfcmFpc2UnLAorICAgICAgICAgICAgICAgICdjcmVhdGVfdW5yZXBvcnRlZF9leGNlcHRpb24nLAorICAgICAgICAgICAgICAgICdub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzJywKKyAgICAgICAgICAgICAgICAnZXhlY19lcnInLAorICAgICAgICAgICAgICAgICdleGVjX3JhaXNlJywKKyAgICAgICAgICAgICAgICAnZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWVfYmFzZSk6CisgICAgICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZSArICdfJyArIG5hbWVfYmFzZQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKworICAgIGRlZiB0ZXN0X25vbmFzY2lpKHNlbGYpOgorICAgICAgICAnJydUZXN0IHRoYXQgbW9kdWxlcyB3aXRoIG5vbi1BU0NJSSBuYW1lcyBjYW4gYmUgbG9hZGVkJycnCisgICAgICAgICMgcHVueWNvZGUgYmVoYXZlcyBzbGlnaHRseSBkaWZmZXJlbnRseSBpbiBzb21lLUFTQ0lJIGFuZCBuby1BU0NJSQorICAgICAgICAjIGNhc2VzLCBzbyB0ZXN0IGJvdGgKKyAgICAgICAgY2FzZXMgPSBbCisgICAgICAgICAgICAoc2VsZi5uYW1lICsgJ196a291XHUwMTYxa2FfbmFcdTAxMGR0ZW5ceGVkJywgJ0N6ZWNoJyksCisgICAgICAgICAgICAoJ1x1ZmYzZlx1MzBhNFx1MzBmM1x1MzBkZFx1MzBmY1x1MzBjOFx1MzBjNlx1MzBiOVx1MzBjOCcsCisgICAgICAgICAgICAgJ0phcGFuZXNlJyksCisgICAgICAgICAgICBdCisgICAgICAgIGZvciBuYW1lLCBsYW5nIGluIGNhc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFtZSk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19kb2NfXywgIk1vZHVsZSBuYW1lZCBpbiAlcyIgJSBsYW5nKQorCisKKyhGcm96ZW5fTXVsdGlQaGFzZUV4dGVuc2lvbk1vZHVsZVRlc3RzLAorIFNvdXJjZV9NdWx0aVBoYXNlRXh0ZW5zaW9uTW9kdWxlVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoTXVsdGlQaGFzZUV4dGVuc2lvbk1vZHVsZVRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggNDlkNjczNC4uOGY0YjhiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpAQCAtMSw3ICsxLDYgQEAKLWZyb20gLi4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwKK2Zyb20gLi4gaW1wb3J0IHV0aWwKIAotbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgc3lzCkBAIC0yMiwxMCArMjEsMTIgQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjIFBhdGggaG9vayBzaG91bGQgaGFuZGxlIGEgZGlyZWN0b3J5IHdoZXJlIGEga25vd24gZXh0ZW5zaW9uIG1vZHVsZQogICAgICAgICAjIGV4aXN0cy4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5ob29rKHV0aWwuUEFUSCksICdmaW5kX21vZHVsZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLmhvb2sodXRpbC5FWFRFTlNJT05TLnBhdGgpLCAnZmluZF9tb2R1bGUnKSkKIAotRnJvemVuX1BhdGhIb29rc1Rlc3RzLCBTb3VyY2VfUGF0aEhvb2tzVGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBQYXRoSG9va1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX1BhdGhIb29rc1Rlc3RzLAorIFNvdXJjZV9QYXRoSG9va3NUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChQYXRoSG9va1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDA4OWYwLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLVBBVEggPSBOb25lCi1FWFQgPSBOb25lCi1GSUxFTkFNRSA9IE5vbmUKLU5BTUUgPSAnX3Rlc3RjYXBpJwotdHJ5OgotICAgIGZvciBQQVRIIGluIHN5cy5wYXRoOgotICAgICAgICBmb3IgRVhUIGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVM6Ci0gICAgICAgICAgICBGSUxFTkFNRSA9IE5BTUUgKyBFWFQKLSAgICAgICAgICAgIEZJTEVQQVRIID0gb3MucGF0aC5qb2luKFBBVEgsIEZJTEVOQU1FKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKFBBVEgsIEZJTEVOQU1FKSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgIGVsc2U6Ci0gICAgICAgIFBBVEggPSBFWFQgPSBGSUxFTkFNRSA9IEZJTEVQQVRIID0gTm9uZQotZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CmluZGV4IGY5Zjk3ZjMuLjUxOWFhMDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKQEAgLTM3LDggKzM3LDEwIEBACiAgICAgICAgIHNwZWMgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcGVjKQogCi1Gcm96ZW5fRmluZFNwZWNUZXN0cywgU291cmNlX0ZpbmRTcGVjVGVzdHMgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9GaW5kU3BlY1Rlc3RzLAorIFNvdXJjZV9GaW5kU3BlY1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRTcGVjVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKQEAgLTcyLDggKzc0LDEwIEBACiAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZCgnPG5vdCByZWFsPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9GaW5kZXJUZXN0cywKKyBTb3VyY2VfRmluZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCA3YzAxNDY0Li42MDNjN2Q3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC04NSw4ICs4NSwxMCBAQAogICAgICAgICAgICAgc2VsZi5leGVjX21vZHVsZSgnX25vdF9yZWFsJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ19ub3RfcmVhbCcpCiAKLUZyb3plbl9FeGVjTW9kdWxlVGVzdHMsIFNvdXJjZV9FeGVjTW9kdWxlVGVzdHMgPSB1dGlsLnRlc3RfYm90aChFeGVjTW9kdWxlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRXhlY01vZHVsZVRlc3RzLAorIFNvdXJjZV9FeGVjTW9kdWxlVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRXhlY01vZHVsZVRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6CkBAIC0xNzUsOCArMTc3LDEwIEBACiAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX25vdF9yZWFsJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ19ub3RfcmVhbCcpCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fTG9hZGVyVGVzdHMsCisgU291cmNlX0xvYWRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXJUZXN0czoKQEAgLTIxNCw4ICsyMTgsOSBAQAogICAgICAgICAgICAgICAgIG1ldGhvZCgnaW1wb3J0bGliJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdpbXBvcnRsaWInKQogCi1Gcm96ZW5fSUxUZXN0cywgU291cmNlX0lMVGVzdHMgPSB1dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorKEZyb3plbl9JTFRlc3RzLAorIFNvdXJjZV9JTFRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19sb2FkZXJfXy5weQppbmRleCA2ZGY4MDEwLi40YjE4MDkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19sb2FkZXJfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19sb2FkZXJfXy5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIAogCiBjbGFzcyBTcGVjTG9hZGVyTW9jazoKQEAgLTEyLDYgKzExLDkgQEAKICAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKICAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBzZWxmKQogCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAgcGFzcwogCkBAIC0yNCw4ICsyNiwxMCBAQAogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCdibGFoJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZXIsIG1vZHVsZS5fX2xvYWRlcl9fKQogCi1Gcm96ZW5fU3BlY1Rlc3RzLCBTb3VyY2VfU3BlY1Rlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNwZWNMb2FkZXJBdHRyaWJ1dGVUZXN0cywgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1NwZWNUZXN0cywKKyBTb3VyY2VfU3BlY1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFNwZWNMb2FkZXJBdHRyaWJ1dGVUZXN0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgTG9hZGVyTW9jazoKQEAgLTYyLDggKzY2LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZXIsIG1vZHVsZS5fX2xvYWRlcl9fKQogCiAKLUZyb3plbl9UZXN0cywgU291cmNlX1Rlc3RzID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyQXR0cmlidXRlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKyhGcm96ZW5fVGVzdHMsCisgU291cmNlX1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKExvYWRlckF0dHJpYnV0ZVRlc3RzLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CmluZGV4IDJlMTk3MjUuLmM3ZDNhMmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKQEAgLTYsNyArNiw2IEBACiAiIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIAogY2xhc3MgVXNpbmdfX3BhY2thZ2VfXzoKQEAgLTcwLDE3ICs2OSwyMyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJycsIGdsb2JhbHMsIHt9LCBbJ3JlbGltcG9ydCddLCAxKQogCisKIGNsYXNzIFVzaW5nX19wYWNrYWdlX19QRVAzMDIoVXNpbmdfX3BhY2thZ2VfXyk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKIAotRnJvemVuX1VzaW5nUGFja2FnZVBFUDMwMiwgU291cmNlX1VzaW5nUGFja2FnZVBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBVc2luZ19fcGFja2FnZV9fUEVQMzAyLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCiAKLWNsYXNzIFVzaW5nX19wYWNrYWdlX19QRVAzMDIoVXNpbmdfX3BhY2thZ2VfXyk6CisoRnJvemVuX1VzaW5nUGFja2FnZVBFUDMwMiwKKyBTb3VyY2VfVXNpbmdQYWNrYWdlUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKFVzaW5nX19wYWNrYWdlX19QRVAzMDIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQorCisKK2NsYXNzIFVzaW5nX19wYWNrYWdlX19QRVA0NTEoVXNpbmdfX3BhY2thZ2VfXyk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX3NwZWMKIAotRnJvemVuX1VzaW5nUGFja2FnZVBFUDQ1MSwgU291cmNlX1VzaW5nUGFja2FnZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBVc2luZ19fcGFja2FnZV9fUEVQMzAyLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fVXNpbmdQYWNrYWdlUEVQNDUxLAorIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoVXNpbmdfX3BhY2thZ2VfX1BFUDQ1MSwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgU2V0dGluZ19fcGFja2FnZV9fOgpAQCAtOTUsNyArMTAwLDcgQEAKIAogICAgICIiIgogCi0gICAgX19pbXBvcnRfXyA9IGltcG9ydF91dGlsLl9faW1wb3J0X19bMV0KKyAgICBfX2ltcG9ydF9fID0gdXRpbC5fX2ltcG9ydF9fWydTb3VyY2UnXQogCiAgICAgIyBbdG9wLWxldmVsXQogICAgIGRlZiB0ZXN0X3RvcF9sZXZlbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CmluZGV4IDQzOWMxMDUuLjcwNjlkOWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgc3lzCkBAIC0xOCw2ICsxNywxMCBAQAogICAgICAgICAgICAgcmV0dXJuIHNwZWMKIAogICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzcGVjKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgZXhlY19tb2R1bGUobW9kdWxlKToKICAgICAgICAgaWYgbW9kdWxlLl9fbmFtZV9fID09IFNVQk1PRF9OQU1FOgogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ0kgY2Fubm90IGJlIGxvYWRlZCEnKQpAQCAtNzksMTUgKzgyLDE5IEBACiBjbGFzcyBPbGRBUElUZXN0cyhBUElUZXN0KToKICAgICBiYWRfZmluZGVyX2xvYWRlciA9IEJhZExvYWRlckZpbmRlcgogCi1Gcm96ZW5fT2xkQVBJVGVzdHMsIFNvdXJjZV9PbGRBUElUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBPbGRBUElUZXN0cywgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX09sZEFQSVRlc3RzLAorIFNvdXJjZV9PbGRBUElUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChPbGRBUElUZXN0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgU3BlY0FQSVRlc3RzKEFQSVRlc3QpOgogICAgIGJhZF9maW5kZXJfbG9hZGVyID0gQmFkU3BlY0ZpbmRlckxvYWRlcgogCi1Gcm96ZW5fU3BlY0FQSVRlc3RzLCBTb3VyY2VfU3BlY0FQSVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNwZWNBUElUZXN0cywgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1NwZWNBUElUZXN0cywKKyBTb3VyY2VfU3BlY0FQSVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFNwZWNBUElUZXN0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKaW5kZXggYzI5MmVlNC4uODA3OWFkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHRoYXQgc3lzLm1vZHVsZXMgaXMgdXNlZCBwcm9wZXJseSBieSBpbXBvcnQuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIGltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKIGltcG9ydCB1bml0dGVzdApAQCAtMzksMTUgKzM4LDE3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCi1Gcm96ZW5fVXNlQ2FjaGUsIFNvdXJjZV9Vc2VDYWNoZSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBVc2VDYWNoZSwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1VzZUNhY2hlLAorIFNvdXJjZV9Vc2VDYWNoZQorICkgPSB1dGlsLnRlc3RfYm90aChVc2VDYWNoZSwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgSW1wb3J0bGliVXNlQ2FjaGUoVXNlQ2FjaGUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgUGVydGluZW50IG9ubHkgdG8gUEVQIDMwMjsgZXhlY19tb2R1bGUoKSBkb2Vzbid0IHJldHVybiBhIG1vZHVsZS4KIAotICAgIF9faW1wb3J0X18gPSBpbXBvcnRfdXRpbC5fX2ltcG9ydF9fWzFdCisgICAgX19pbXBvcnRfXyA9IHV0aWwuX19pbXBvcnRfX1snU291cmNlJ10KIAogICAgIGRlZiBjcmVhdGVfbW9jayhzZWxmLCAqbmFtZXMsIHJldHVybl89Tm9uZSk6CiAgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygqbmFtZXMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKaW5kZXggYTc1NWI3NS4uODA0NTQ2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3QgdGhhdCB0aGUgc2VtYW50aWNzIHJlbGF0aW5nIHRvIHRoZSAnZnJvbWxpc3QnIGFyZ3VtZW50IGFyZSBjb3JyZWN0LiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgdW5pdHRlc3QKIAogCkBAIC0yOSw4ICsyOCwxMCBAQAogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygncGtnLm1vZHVsZScsIGZyb21saXN0PVsnYXR0ciddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnLm1vZHVsZScpCiAKLUZyb3plbl9SZXR1cm5WYWx1ZSwgU291cmNlX1JldHVyblZhbHVlID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFJldHVyblZhbHVlLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fUmV0dXJuVmFsdWUsCisgU291cmNlX1JldHVyblZhbHVlCisgKSA9IHV0aWwudGVzdF9ib3RoKFJldHVyblZhbHVlLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBjbGFzcyBIYW5kbGluZ0Zyb21saXN0OgpAQCAtMTIxLDggKzEyMiwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZTEuX19uYW1lX18sICdwa2cubW9kdWxlMScpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUubW9kdWxlMi5fX25hbWVfXywgJ3BrZy5tb2R1bGUyJykKIAotRnJvemVuX0Zyb21MaXN0LCBTb3VyY2VfRnJvbUxpc3QgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgSGFuZGxpbmdGcm9tbGlzdCwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX0Zyb21MaXN0LAorIFNvdXJjZV9Gcm9tTGlzdAorICkgPSB1dGlsLnRlc3RfYm90aChIYW5kbGluZ0Zyb21saXN0LCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKaW5kZXggNWVlYjE0NS4uYzQ1MmNkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKIGltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKQEAgLTQ2LDggKzQ1LDEwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQogCi1Gcm96ZW5fQ2FsbGluZ09yZGVyLCBTb3VyY2VfQ2FsbGluZ09yZGVyID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIENhbGxpbmdPcmRlciwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX0NhbGxpbmdPcmRlciwKKyBTb3VyY2VfQ2FsbGluZ09yZGVyCisgKSA9IHV0aWwudGVzdF9ib3RoKENhbGxpbmdPcmRlciwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgQ2FsbFNpZ25hdHVyZToKQEAgLTEwMCwxOSArMTAxLDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCBtb2RfbmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIHBhdGgpCiAKKwogY2xhc3MgQ2FsbFNpZ25hdHVyZVBFUDMwMihDYWxsU2lnbmF0dXJlKToKICAgICBtb2NrX21vZHVsZXMgPSB1dGlsLm1vY2tfbW9kdWxlcwogICAgIGZpbmRlcl9uYW1lID0gJ2ZpbmRfbW9kdWxlJwogCi1Gcm96ZW5fQ2FsbFNpZ25hdHVyZVBFUDMwMiwgU291cmNlX0NhbGxTaWduYXR1cmVQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgQ2FsbFNpZ25hdHVyZVBFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX0NhbGxTaWduYXR1cmVQRVAzMDIsCisgU291cmNlX0NhbGxTaWduYXR1cmVQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoQ2FsbFNpZ25hdHVyZVBFUDMwMiwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCisKIAogY2xhc3MgQ2FsbFNpZ25hdHVyZVBFUDQ1MShDYWxsU2lnbmF0dXJlKToKICAgICBtb2NrX21vZHVsZXMgPSB1dGlsLm1vY2tfc3BlYwogICAgIGZpbmRlcl9uYW1lID0gJ2ZpbmRfc3BlYycKIAotRnJvemVuX0NhbGxTaWduYXR1cmVQRVA0NTEsIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIENhbGxTaWduYXR1cmVQRVA0NTEsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsU2lnbmF0dXJlUEVQNDUxLAorIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKENhbGxTaWduYXR1cmVQRVA0NTEsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKaW5kZXggNTVhNWQxNC4uMzc1NWI4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCkBAIC0xMDIsOCArMTAxLDEwIEBACiAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxvYWQoc3VibmFtZSkKIAotRnJvemVuX1BhcmVudFRlc3RzLCBTb3VyY2VfUGFyZW50VGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgUGFyZW50TW9kdWxlVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9QYXJlbnRUZXN0cywKKyBTb3VyY2VfUGFyZW50VGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUGFyZW50TW9kdWxlVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CmluZGV4IDEyNzRmOGMuLjQzNTlkZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0xLDExICsxLDEyIEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIAogaW1wb3J0bGliID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAoraW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTU4LDcgKzU5LDcgQEAKICAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCiAgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaG9va3M9W2hvb2tdKToKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCkBAIC04Myw3ICs4NCw3IEBACiAgICAgICAgIHBhdGggPSAnJwogICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCi0gICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5nZXRjd2QoKSwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKG9zLmdldGN3ZCgpLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtwYXRoXSwgcGF0aF9ob29rcz1baG9va10pOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCkBAIC05OCw3ICs5OSw3IEBACiAgICAgICAgIG5ld19wYXRoX2ltcG9ydGVyX2NhY2hlLnBvcChOb25lLCBOb25lKQogICAgICAgICBuZXdfcGF0aF9ob29rcyA9IFt6aXBpbXBvcnQuemlwaW1wb3J0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuaW1wb3J0bGliLl9ib290c3RyYXAuX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCkpXQogICAgICAgICBtaXNzaW5nID0gb2JqZWN0KCkKICAgICAgICAgZW1haWwgPSBzeXMubW9kdWxlcy5wb3AoJ2VtYWlsJywgbWlzc2luZykKICAgICAgICAgdHJ5OgpAQCAtMTEyLDggKzExMyw3NCBAQAogICAgICAgICAgICAgaWYgZW1haWwgaXMgbm90IG1pc3Npbmc6CiAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2VtYWlsJ10gPSBlbWFpbAogCi1Gcm96ZW5fRmluZGVyVGVzdHMsIFNvdXJjZV9GaW5kZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBGaW5kZXJUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyAgICBkZWYgdGVzdF9maW5kZXJfd2l0aF9maW5kX21vZHVsZShzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdEZpbmRlcjoKKyAgICAgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudG9fcmV0dXJuCisgICAgICAgIGZhaWxpbmdfZmluZGVyID0gVGVzdEZpbmRlcigpCisgICAgICAgIGZhaWxpbmdfZmluZGVyLnRvX3JldHVybiA9IE5vbmUKKyAgICAgICAgcGF0aCA9ICd0ZXN0aW5nIHBhdGgnCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogZmFpbGluZ19maW5kZXJ9KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pKQorICAgICAgICBzdWNjZXNzX2ZpbmRlciA9IFRlc3RGaW5kZXIoKQorICAgICAgICBzdWNjZXNzX2ZpbmRlci50b19yZXR1cm4gPSBfX2xvYWRlcl9fCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogc3VjY2Vzc19maW5kZXJ9KToKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5sb2FkZXIsIF9fbG9hZGVyX18pCisKKyAgICBkZWYgdGVzdF9maW5kZXJfd2l0aF9maW5kX2xvYWRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdEZpbmRlcjoKKyAgICAgICAgICAgIGxvYWRlciA9IE5vbmUKKyAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLCBzZWxmLnBvcnRpb25zCisgICAgICAgIHBhdGggPSAndGVzdGluZyBwYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IFRlc3RGaW5kZXIoKX0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoCisgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicsIFtwYXRoXSkpCisgICAgICAgIHN1Y2Nlc3NfZmluZGVyID0gVGVzdEZpbmRlcigpCisgICAgICAgIHN1Y2Nlc3NfZmluZGVyLmxvYWRlciA9IF9fbG9hZGVyX18KKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBzdWNjZXNzX2ZpbmRlcn0pOgorICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicsIFtwYXRoXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLmxvYWRlciwgX19sb2FkZXJfXykKKworICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZpbmRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdEZpbmRlcjoKKyAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgICAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3BlYworICAgICAgICBwYXRoID0gJ3Rlc3RpbmcgcGF0aCcKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBUZXN0RmluZGVyKCl9KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pKQorICAgICAgICBzdWNjZXNzX2ZpbmRlciA9IFRlc3RGaW5kZXIoKQorICAgICAgICBzdWNjZXNzX2ZpbmRlci5zcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygnd2hhdGV2ZXInLCBfX2xvYWRlcl9fKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IHN1Y2Nlc3NfZmluZGVyfSk6CisgICAgICAgICAgICBnb3QgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LCBzdWNjZXNzX2ZpbmRlci5zcGVjKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgImN3ZCBjYW4ndCBub3QgZXhpc3Qgb24gV2luZG93cyIpCisgICAgZGVmIHRlc3RfZGVsZXRlZF9jd2Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIyODM0CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaGRpciwgb3MuZ2V0Y3dkKCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgcGF0aDoKKyAgICAgICAgICAgICAgICBvcy5jaGRpcihwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUlOVkFMOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInBsYXRmb3JtIGRvZXMgbm90IGFsbG93IHRoZSBkZWxldGlvbiBvZiB0aGUgY3dkIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bJyddKToKKyAgICAgICAgICAgICMgRG8gbm90IHdhbnQgRmlsZU5vdEZvdW5kRXJyb3IgcmFpc2VkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJykpCisKKworCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlclRlc3RzOgpAQCAtMTM2LDggKzIwMywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgogICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCiAKLUZyb3plbl9QRUZUZXN0cywgU291cmNlX1BFRlRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhdGhFbnRyeUZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX1BFRlRlc3RzLAorIFNvdXJjZV9QRUZUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQppbmRleCBiMjE2ZTljLi4yOGJiNmY3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3QgcmVsYXRpdmUgaW1wb3J0cyAoUEVQIDMyOCkuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCkBAIC0yMDgsOCArMjA3LDEwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQogCi1Gcm96ZW5fUmVsYXRpdmVJbXBvcnRzLCBTb3VyY2VfUmVsYXRpdmVJbXBvcnRzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFJlbGF0aXZlSW1wb3J0cywgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1JlbGF0aXZlSW1wb3J0cywKKyBTb3VyY2VfUmVsYXRpdmVJbXBvcnRzCisgKSA9IHV0aWwudGVzdF9ib3RoKFJlbGF0aXZlSW1wb3J0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNiNDkwZi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1mcm9tIC4uIGltcG9ydCB1dGlsCi0KLWZyb3plbl9pbXBvcnRsaWIsIHNvdXJjZV9pbXBvcnRsaWIgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi0KLWltcG9ydCBidWlsdGlucwotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotX19pbXBvcnRfXyA9IHN0YXRpY21ldGhvZChidWlsdGlucy5fX2ltcG9ydF9fKSwgc3RhdGljbWV0aG9kKHNvdXJjZV9pbXBvcnRsaWIuX19pbXBvcnRfXykKLQotCi1kZWYgbW9ja19wYXRoX2hvb2soKmVudHJpZXMsIGltcG9ydGVyKToKLSAgICAiIiJBIG1vY2sgc3lzLnBhdGhfaG9va3MgZW50cnkuIiIiCi0gICAgZGVmIGhvb2soZW50cnkpOgotICAgICAgICBpZiBlbnRyeSBub3QgaW4gZW50cmllczoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCi0gICAgICAgIHJldHVybiBpbXBvcnRlcgotICAgIHJldHVybiBob29rCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCBlZmQzMTQ2Li5jMjc0YjM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IGNhc2Utc2Vuc2l0aXZpdHkgKFBFUCAyMzUpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCkBAIC0zMiw3ICszMSw3IEBACiAgICAgICAgICIiIkxvb2sgZm9yIGEgbW9kdWxlIHdpdGggbWF0Y2hpbmcgYW5kIG5vbi1tYXRjaGluZyBzZW5zaXRpdml0eS4iIiIKICAgICAgICAgc2Vuc2l0aXZlX3BrZyA9ICdzZW5zaXRpdmUuezB9Jy5mb3JtYXQoc2VsZi5uYW1lKQogICAgICAgICBpbnNlbnNpdGl2ZV9wa2cgPSAnaW5zZW5zaXRpdmUuezB9Jy5mb3JtYXQoc2VsZi5uYW1lLmxvd2VyKCkpCi0gICAgICAgIGNvbnRleHQgPSBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhpbnNlbnNpdGl2ZV9wa2csIHNlbnNpdGl2ZV9wa2cpCisgICAgICAgIGNvbnRleHQgPSB1dGlsLmNyZWF0ZV9tb2R1bGVzKGluc2Vuc2l0aXZlX3BrZywgc2Vuc2l0aXZlX3BrZykKICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBzZW5zaXRpdmVfcGF0aCA9IG9zLnBhdGguam9pbihtYXBwaW5nWycucm9vdCddLCAnc2Vuc2l0aXZlJykKICAgICAgICAgICAgIGluc2Vuc2l0aXZlX3BhdGggPSBvcy5wYXRoLmpvaW4obWFwcGluZ1snLnJvb3QnXSwgJ2luc2Vuc2l0aXZlJykKQEAgLTQzLDcgKzQyLDcgQEAKICAgICBkZWYgdGVzdF9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYudW5zZXQoJ1BZVEhPTkNBU0VPSycpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBzZWxmLmltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9vcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKQEAgLTU0LDcgKzUzLDcgQEAKICAgICBkZWYgdGVzdF9pbnNlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKLSAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgc2Vuc2l0aXZlLCBpbnNlbnNpdGl2ZSA9IHNlbGYuc2Vuc2l0aXZpdHlfdGVzdCgpCkBAIC02MywyMCArNjIsMjggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGluc2Vuc2l0aXZlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm5hbWUsIGluc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQogCisKIGNsYXNzIENhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIoQ2FzZVNlbnNpdGl2aXR5VGVzdCk6CiAgICAgZGVmIGZpbmQoc2VsZiwgZmluZGVyKToKICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShzZWxmLm5hbWUpCiAKLUZyb3plbl9DYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyLCBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgIENhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiwKKyBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCiAKIGNsYXNzIENhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEoQ2FzZVNlbnNpdGl2aXR5VGVzdCk6CiAgICAgZGVmIGZpbmQoc2VsZiwgZmluZGVyKToKICAgICAgICAgZm91bmQgPSBmaW5kZXIuZmluZF9zcGVjKHNlbGYubmFtZSkKICAgICAgICAgcmV0dXJuIGZvdW5kLmxvYWRlciBpZiBmb3VuZCBpcyBub3QgTm9uZSBlbHNlIGZvdW5kCiAKLUZyb3plbl9DYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxLCBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgIENhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSwKKyBTb3VyY2VfQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IDJkNDE1ZjkuLjczZjRjNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CkBAIC0xLDYgKzEsNSBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAogaW1wb3J0bGliID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQogaW1wb3J0bGliX2FiYyA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLmFiYycpCkBAIC03MSw3ICs3MCw3IEBACiAKICAgICAjIFtiYXNpY10KICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCkBAIC04Myw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC05OCw3ICs5Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfcGtnLl9faW5pdF9fJywgJ19wa2cubW9kJylhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nLCAnX3BrZy5tb2QnKWFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1snX3BrZy5tb2QnXSkKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKQEAgLTExNSw3ICsxMTQsNyBAQAogICAgICAgICByZXR1cm4gbGFtYmRhIG5hbWU6IGZ4bihuYW1lKSArIDEKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKQEAgLTEzOSw3ICsxMzgsNyBAQAogICAgICAgICBhdHRyaWJ1dGVzID0gKCdfX2ZpbGVfXycsICdfX3BhdGhfXycsICdfX3BhY2thZ2VfXycpCiAgICAgICAgIHZhbHVlID0gJzx0ZXN0PicKICAgICAgICAgbmFtZSA9ICdfdGVtcCcKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIG9yaWdfbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgZm9yIGF0dHIgaW4gYXR0cmlidXRlczoKICAgICAgICAgICAgICAgICBzZXRhdHRyKG9yaWdfbW9kdWxlLCBhdHRyLCB2YWx1ZSkKQEAgLTE1OSw3ICsxNTgsNyBAQAogCiAgICAgIyBbc3ludGF4IGVycm9yXQogICAgIGRlZiB0ZXN0X2JhZF9zeW50YXgoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJz0nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQpAQCAtMTkwLDExICsxODksMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHB5Y2FjaGUpOgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocHljYWNoZSkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF90aW1lc3RhbXBfb3ZlcmZsb3coc2VsZik6CiAgICAgICAgICMgV2hlbiBhIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXAgaXMgbGFyZ2VyIHRoYW4gMioqMzIsIGl0IHNob3VsZCBiZQogICAgICAgICAjIHRydW5jYXRlZCByYXRoZXIgdGhhbiByYWlzZSBhbiBPdmVyZmxvd0Vycm9yLgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc291cmNlID0gbWFwcGluZ1snX3RlbXAnXQogICAgICAgICAgICAgY29tcGlsZWQgPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlKQogICAgICAgICAgICAgd2l0aCBvcGVuKHNvdXJjZSwgJ3cnKSBhcyBmOgpAQCAtMjM2LDkgKzIzNSwxMSBAQAogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZSgnYmFkIG5hbWUnKQogCi1Gcm96ZW5fU2ltcGxlVGVzdCwgU291cmNlX1NpbXBsZVRlc3QgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU2ltcGxlVGVzdCwgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsCi0gICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKKyhGcm96ZW5fU2ltcGxlVGVzdCwKKyBTb3VyY2VfU2ltcGxlVGVzdAorICkgPSB1dGlsLnRlc3RfYm90aChTaW1wbGVUZXN0LCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5LAorICAgICAgICAgICAgICAgICAgICBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBCYWRCeXRlY29kZVRlc3Q6CkBAIC0yNzUsNDUgKzI3Niw0NSBAQAogICAgICAgICByZXR1cm4gYnl0ZWNvZGVfcGF0aAogCiAgICAgZGVmIF90ZXN0X2VtcHR5X2ZpbGUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGInJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgX3Rlc3RfcGFydGlhbF9tYWdpYyhzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKICAgICAgICAgIyBXaGVuIHRoZWlyIGFyZSBsZXNzIHRoYW4gNCBieXRlcyB0byBhIC5weWMsIHJlZ2VuZXJhdGUgaXQgaWYKICAgICAgICAgIyBwb3NzaWJsZSwgZWxzZSByYWlzZSBJbXBvcnRFcnJvci4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCiAgICAgZGVmIF90ZXN0X21hZ2ljX29ubHkoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcChzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCiAgICAgZGVmIF90ZXN0X3BhcnRpYWxfc2l6ZShzZWxmLCB0ZXN0LCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjExXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9ub19tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQpAQCAtMzIyLDcgKzMyMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGZpbGVfcGF0aCwgJ190ZW1wJykKIAogICAgIGRlZiBfdGVzdF9ub25fY29kZV9tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKQEAgLTMzMyw3ICszMzQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucGF0aCwgYnl0ZWNvZGVfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9iYWRfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIGInPHRlc3Q+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKQEAgLTM0MiwxMSArMzQzLDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGZpbGVfcGF0aCwgJ190ZW1wJykKIAogICAgIGRlZiBfdGVzdF9iYWRfbWFnaWMoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGInXHgwMFx4MDBceDAwXHgwMCcgKyBiY1s0Ol0pCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKKwogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKEJhZEJ5dGVjb2RlVGVzdCk6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6CkBAIC0zNTUsNiArMzU3LDcgQEAKICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc2VsZi51dGlsLnNwZWNfZnJvbV9sb2FkZXIobW9kdWxlX25hbWUsIGxvYWRlcikKICAgICAgICAgbG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKIAorCiBjbGFzcyBCYWRCeXRlY29kZVRlc3RQRVAzMDIoQmFkQnl0ZWNvZGVUZXN0KToKIAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKQEAgLTM3MSw3ICszNzQsNyBAQAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5sb2FkZXIgPSBjbHMubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgogICAgICAgICAjIFdoZW4gYSAucHljIGlzIGVtcHR5LCByZWdlbmVyYXRlIGl0IGlmIHBvc3NpYmxlLCBlbHNlIHJhaXNlCiAgICAgICAgICMgSW1wb3J0RXJyb3IuCkBAIC0zOTAsNyArMzkzLDcgQEAKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9tYWdpY19vbmx5KHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlcmUgaXMgb25seSB0aGUgbWFnaWMgbnVtYmVyLCByZWdlbmVyYXRlIHRoZSAucHljIGlmIHBvc3NpYmxlLAogICAgICAgICAjIGVsc2UgcmFpc2UgRU9GRXJyb3IuCkBAIC00MDEsNyArNDA0LDcgQEAKIAogICAgICAgICBzZWxmLl90ZXN0X21hZ2ljX29ubHkodGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9iYWRfbWFnaWMoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgbWFnaWMgbnVtYmVyIGlzIGRpZmZlcmVudCwgdGhlIGJ5dGVjb2RlIHNob3VsZCBiZQogICAgICAgICAjIHJlZ2VuZXJhdGVkLgpAQCAtNDEzLDcgKzQxNiw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFnaWModGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSB0aW1lc3RhbXAgaXMgcGFydGlhbCwgcmVnZW5lcmF0ZSB0aGUgLnB5YywgZWxzZQogICAgICAgICAjIHJhaXNlIEVPRkVycm9yLgpAQCAtNDI0LDcgKzQyNyw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0KQogCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSBzaXplIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKICAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KQEAgLTQzNSwyOSArNDM4LDI5IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3NpemUodGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9ub19tYXJzaGFsKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlcmUgaXMgb25seSB0aGUgbWFnaWMgbnVtYmVyIGFuZCB0aW1lc3RhbXAsIHJhaXNlIEVPRkVycm9yLgogICAgICAgICBzZWxmLl90ZXN0X25vX21hcnNoYWwoKQogCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbCgpCiAgICAgICAgICMgWFhYIEltcG9ydEVycm9yIHdoZW4gc291cmNlbGVzcwogCiAgICAgIyBbYmFkIG1hcnNoYWxdCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X2JhZF9tYXJzaGFsKHNlbGYpOgogICAgICAgICAjIEJhZCBtYXJzaGFsIGRhdGEgc2hvdWxkIHJhaXNlIGEgVmFsdWVFcnJvci4KICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFyc2hhbCgpCiAKICAgICAjIFtiYWQgdGltZXN0YW1wXQotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9vbGRfdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIHRpbWVzdGFtcCBpcyBvbGRlciB0aGFuIHRoZSBzb3VyY2UsIGJ5dGVjb2RlIHNob3VsZCBiZQogICAgICAgICAjIHJlZ2VuZXJhdGVkLgogICAgICAgICB6ZXJvcyA9IGInXHgwMFx4MDBceDAwXHgwMCcKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyK2InKSBhcyBieXRlY29kZV9maWxlOgpAQCAtNDcxLDEwICs0NzQsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVjb2RlX2ZpbGUucmVhZCg0KSwgc291cmNlX3RpbWVzdGFtcCkKIAogICAgICMgW2J5dGVjb2RlIHJlYWQtb25seV0KLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfcmVhZF9vbmx5X2J5dGVjb2RlKHNlbGYpOgogICAgICAgICAjIFdoZW4gYnl0ZWNvZGUgaXMgcmVhZC1vbmx5IGJ1dCBzaG91bGQgYmUgcmV3cml0dGVuLCBmYWlsIHNpbGVudGx5LgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgIyBDcmVhdGUgYnl0ZWNvZGUgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmUtY3JlYXRlZC4KICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nWydfdGVtcCddKQpAQCAtNDkxLDIxICs0OTQsMjkgQEAKICAgICAgICAgICAgICAgICAjIE1ha2Ugd3JpdGFibGUgZm9yIGV2ZW50dWFsIGNsZWFuLXVwLgogICAgICAgICAgICAgICAgIG9zLmNobW9kKGJ5dGVjb2RlX3BhdGgsIHN0YXQuU19JV1VTUikKIAorCiBjbGFzcyBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEoCiAgICAgICAgIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdCwgQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKToKICAgICBwYXNzCiAKLUZyb3plbl9Tb3VyY2VCYWRCeXRlY29kZVBFUDQ1MSwgU291cmNlX1NvdXJjZUJhZEJ5dGVjb2RlUEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSwKLSAgICAgICAgYWJjPWltcG9ydGxpYl9hYmMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKKyhGcm96ZW5fU291cmNlQmFkQnl0ZWNvZGVQRVA0NTEsCisgU291cmNlX1NvdXJjZUJhZEJ5dGVjb2RlUEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsCisgICAgICAgICAgICAgICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKIAogY2xhc3MgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyKAogICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3QsIEJhZEJ5dGVjb2RlVGVzdFBFUDMwMik6CiAgICAgcGFzcwogCi1Gcm96ZW5fU291cmNlQmFkQnl0ZWNvZGVQRVAzMDIsIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnksCi0gICAgICAgIGFiYz1pbXBvcnRsaWJfYWJjLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NvdXJjZUJhZEJ5dGVjb2RlUEVQMzAyLAorIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAorICAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3Q6CkBAIC01NjcsMjEgKzU3OCwyOSBAQAogICAgIGRlZiB0ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbChkZWxfc291cmNlPVRydWUpCiAKKwogY2xhc3MgU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MShTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0LAogICAgICAgICBCYWRCeXRlY29kZVRlc3RQRVA0NTEpOgogICAgIHBhc3MKIAotRnJvemVuX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDQ1MSwgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLAotICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworKEZyb3plbl9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEsCisgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywKKyAgICAgICAgICAgICAgICAgICAgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKwogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyKFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3QsCiAgICAgICAgIEJhZEJ5dGVjb2RlVGVzdFBFUDMwMik6CiAgICAgcGFzcwogCi1Gcm96ZW5fU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQMzAyLCBTb3VyY2VfU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQMzAyID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsCi0gICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMiwKKyBTb3VyY2VfU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVAzMDIsIGltcG9ydGxpYj1pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAorICAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKaW5kZXggNDczMjk3Yi4uZjM3MmI4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKQEAgLTYwLDcgKzU5LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGNyZWF0ZSBpcyBOb25lOgogICAgICAgICAgICAgY3JlYXRlID0ge3Rlc3R9Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoKmNyZWF0ZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCpjcmVhdGUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBpZiBjb21waWxlXzoKICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBjb21waWxlXzoKICAgICAgICAgICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCkBAIC0xMDAsMTQgKzk5LDE0IEBACiAKICAgICAjIFtzdWIgbW9kdWxlXQogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1YicpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWInKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguZGlybmFtZShtYXBwaW5nWydwa2cuX19pbml0X18nXSkKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCiAgICAgIyBbc3ViIHBhY2thZ2VdCiAgICAgZGVmIHRlc3RfcGFja2FnZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICBjb250ZXh0ID0gc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViLl9faW5pdF9fJykKKyAgICAgICAgY29udGV4dCA9IHV0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViLl9faW5pdF9fJykKICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ3BrZy5fX2luaXRfXyddKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKQEAgLTEyMCw3ICsxMTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdfX2luaXRfXycsIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkpCiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdibGFoJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdibGFoJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIG5vdGhpbmcgPSBzZWxmLmltcG9ydF8obWFwcGluZ1snLnJvb3QnXSwgJ3NkZnNhZHNhZGYnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobm90aGluZykKIApAQCAtMTQ3LDcgKzE0Niw3IEBACiAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNDg0NgogICAgIGRlZiB0ZXN0X2Rpcl9yZW1vdmFsX2hhbmRsaW5nKHNlbGYpOgogICAgICAgICBtb2QgPSAnbW9kJwotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZCkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZCkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGZpbmRlciA9IHNlbGYuZ2V0X2ZpbmRlcihtYXBwaW5nWycucm9vdCddKQogICAgICAgICAgICAgZm91bmQgPSBzZWxmLl9maW5kKGZpbmRlciwgJ21vZCcsIGxvYWRlcl9vbmx5PVRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmb3VuZCkKQEAgLTE5Niw4ICsxOTUsMTAgQEAKICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMobmFtZSkKICAgICAgICAgcmV0dXJuIHNwZWMubG9hZGVyIGlmIHNwZWMgaXMgbm90IE5vbmUgZWxzZSBzcGVjCiAKLUZyb3plbl9GaW5kZXJUZXN0c1BFUDQ1MSwgU291cmNlX0ZpbmRlclRlc3RzUEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEZpbmRlclRlc3RzUEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0ZpbmRlclRlc3RzUEVQNDUxLAorIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0c1BFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBGaW5kZXJUZXN0c1BFUDQyMChGaW5kZXJUZXN0cyk6CkBAIC0yMTAsOCArMjExLDEwIEBACiAgICAgICAgICAgICBsb2FkZXJfcG9ydGlvbnMgPSBmaW5kZXIuZmluZF9sb2FkZXIobmFtZSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXJfcG9ydGlvbnNbMF0gaWYgbG9hZGVyX29ubHkgZWxzZSBsb2FkZXJfcG9ydGlvbnMKIAotRnJvemVuX0ZpbmRlclRlc3RzUEVQNDIwLCBTb3VyY2VfRmluZGVyVGVzdHNQRVA0MjAgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHNQRVA0MjAsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHNQRVA0MjAsCisgU291cmNlX0ZpbmRlclRlc3RzUEVQNDIwCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzUEVQNDIwLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZpbmRlclRlc3RzUEVQMzAyKEZpbmRlclRlc3RzKToKQEAgLTIyMyw5ICsyMjYsMTAgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShuYW1lKQogCi1Gcm96ZW5fRmluZGVyVGVzdHNQRVAzMDIsIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBGaW5kZXJUZXN0c1BFUDMwMiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAorKEZyb3plbl9GaW5kZXJUZXN0c1BFUDMwMiwKKyBTb3VyY2VfRmluZGVyVGVzdHNQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHNQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCA5MmRhNzcyLi5lNmEyNDE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKQEAgLTE1LDcgKzE0LDcgQEAKICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCiAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQogCkBAIC0yMyw3ICsyMiwxMCBAQAogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCiAKLUZyb3plbl9QYXRoSG9va1Rlc3QsIFNvdXJjZV9QYXRoSG9va3Rlc3QgPSB1dGlsLnRlc3RfYm90aChQYXRoSG9va1Rlc3QsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fUGF0aEhvb2tUZXN0LAorIFNvdXJjZV9QYXRoSG9va3Rlc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0LCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggYzYyZGZhMS4uYjYwNGFmYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCkBAIC0zNyw3ICszNiw3IEBACiAgICAgbW9kdWxlX25hbWUgPSAnX3RlbXAnCiAKICAgICBkZWYgcnVuX3Rlc3Qoc2VsZiwgc291cmNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhzZWxmLm1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW3NlbGYubW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihzZWxmLm1vZHVsZV9uYW1lLApAQCAtODksNiArODgsNyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3Qoc291cmNlKQogCisKIGNsYXNzIEVuY29kaW5nVGVzdFBFUDQ1MShFbmNvZGluZ1Rlc3QpOgogCiAgICAgZGVmIGxvYWQoc2VsZiwgbG9hZGVyKToKQEAgLTk3LDggKzk3LDExIEBACiAgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAotRnJvemVuX0VuY29kaW5nVGVzdFBFUDQ1MSwgU291cmNlX0VuY29kaW5nVGVzdFBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFbmNvZGluZ1Rlc3RQRVA0NTEsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRW5jb2RpbmdUZXN0UEVQNDUxLAorIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoRW5jb2RpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCiAKIGNsYXNzIEVuY29kaW5nVGVzdFBFUDMwMihFbmNvZGluZ1Rlc3QpOgogCkBAIC0xMDcsOCArMTEwLDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKIAotRnJvemVuX0VuY29kaW5nVGVzdFBFUDMwMiwgU291cmNlX0VuY29kaW5nVGVzdFBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFbmNvZGluZ1Rlc3RQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRW5jb2RpbmdUZXN0UEVQMzAyLAorIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoRW5jb2RpbmdUZXN0UEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIExpbmVFbmRpbmdUZXN0OgpAQCAtMTIwLDcgKzEyNSw3IEBACiAgICAgICAgIG1vZHVsZV9uYW1lID0gJ190ZW1wJwogICAgICAgICBzb3VyY2VfbGluZXMgPSBbYiJhID0gNDIiLCBiImIgPSAtMTMiLCBiJyddCiAgICAgICAgIHNvdXJjZSA9IGxpbmVfZW5kaW5nLmpvaW4oc291cmNlX2xpbmVzKQotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMobW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1ttb2R1bGVfbmFtZV0sICd3YicpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKG1vZHVsZV9uYW1lLApAQCAtMTM5LDYgKzE0NCw3IEBACiAgICAgZGVmIHRlc3RfbGYoc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoYidcbicpCiAKKwogY2xhc3MgTGluZUVuZGluZ1Rlc3RQRVA0NTEoTGluZUVuZGluZ1Rlc3QpOgogCiAgICAgZGVmIGxvYWQoc2VsZiwgbG9hZGVyLCBtb2R1bGVfbmFtZSk6CkBAIC0xNDcsOCArMTUzLDExIEBACiAgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAotRnJvemVuX0xpbmVFbmRpbmdUZXN0UEVQNDUxLCBTb3VyY2VfTGluZUVuZGluZ1Rlc3RQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTGluZUVuZGluZ1Rlc3RQRVA0NTEsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fTGluZUVuZGluZ1Rlc3RQRVA0NTEsCisgU291cmNlX0xpbmVFbmRpbmdUZXN0UEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKExpbmVFbmRpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCiAKIGNsYXNzIExpbmVFbmRpbmdUZXN0UEVQMzAyKExpbmVFbmRpbmdUZXN0KToKIApAQCAtMTU3LDggKzE2NiwxMCBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQogCi1Gcm96ZW5fTGluZUVuZGluZ1Rlc3RQRVAzMDIsIFNvdXJjZV9MaW5lRW5kaW5nVGVzdFBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBMaW5lRW5kaW5nVGVzdFBFUDMwMiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9MaW5lRW5kaW5nVGVzdFBFUDMwMiwKKyBTb3VyY2VfTGluZUVuZGluZ1Rlc3RQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoTGluZUVuZGluZ1Rlc3RQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzY2QyNWEuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1mcm9tIC4uIGltcG9ydCB1dGlsCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGVycm5vCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi0KLWRlZiB3cml0ZXNfYnl0ZWNvZGVfZmlsZXMoZnhuKToKLSAgICAiIiJEZWNvcmF0b3IgdG8gcHJvdGVjdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBmcm9tIG11dGF0aW9uIGFuZCB0byBza2lwCi0gICAgdGVzdHMgdGhhdCByZXF1aXJlIGl0IHRvIGJlIHNldCB0byBGYWxzZS4iIiIKLSAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKLSAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE5vbmUKLSAgICBAZnVuY3Rvb2xzLndyYXBzKGZ4bikKLSAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBvcmlnaW5hbCA9IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdG9fcmV0dXJuID0gZnhuKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb3JpZ2luYWwKLSAgICAgICAgcmV0dXJuIHRvX3JldHVybgotICAgIHJldHVybiB3cmFwcGVyCi0KLQotZGVmIGVuc3VyZV9ieXRlY29kZV9wYXRoKGJ5dGVjb2RlX3BhdGgpOgotICAgICIiIkVuc3VyZSB0aGF0IHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkgZm9yIFBFUCAzMTQ3IHB5YyBmaWxlIGV4aXN0cy4KLQotICAgIDpwYXJhbSBieXRlY29kZV9wYXRoOiBGaWxlIHN5c3RlbSBwYXRoIHRvIFBFUCAzMTQ3IHB5YyBmaWxlLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgb3MubWtkaXIob3MucGF0aC5kaXJuYW1lKGJ5dGVjb2RlX3BhdGgpKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgotICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICByYWlzZQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgY3JlYXRlX21vZHVsZXMoKm5hbWVzKToKLSAgICAiIiJUZW1wb3JhcmlseSBjcmVhdGUgZWFjaCBuYW1lZCBtb2R1bGUgd2l0aCBhbiBhdHRyaWJ1dGUgKG5hbWVkICdhdHRyJykKLSAgICB0aGF0IGNvbnRhaW5zIHRoZSBuYW1lIHBhc3NlZCBpbnRvIHRoZSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjYXVzZWQgdGhlCi0gICAgY3JlYXRpb24gb2YgdGhlIG1vZHVsZS4KLQotICAgIEFsbCBmaWxlcyBhcmUgY3JlYXRlZCBpbiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgcmV0dXJuZWQgYnkKLSAgICB0ZW1wZmlsZS5ta2R0ZW1wKCkuIFRoaXMgZGlyZWN0b3J5IGlzIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YKLSAgICBzeXMucGF0aC4gV2hlbiB0aGUgY29udGV4dCBtYW5hZ2VyIGV4aXRzIGFsbCBjcmVhdGVkIGZpbGVzIChzb3VyY2UgYW5kCi0gICAgYnl0ZWNvZGUpIGFyZSBleHBsaWNpdGx5IGRlbGV0ZWQuCi0KLSAgICBObyBtYWdpYyBpcyBwZXJmb3JtZWQgd2hlbiBjcmVhdGluZyBwYWNrYWdlcyEgVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBjcmVhdGUKLSAgICBhIG1vZHVsZSB3aXRoaW4gYSBwYWNrYWdlIHlvdSBtdXN0IGFsc28gY3JlYXRlIHRoZSBwYWNrYWdlJ3MgX19pbml0X18gYXMKLSAgICB3ZWxsLgotCi0gICAgIiIiCi0gICAgc291cmNlID0gJ2F0dHIgPSB7MCFyfScKLSAgICBjcmVhdGVkX3BhdGhzID0gW10KLSAgICBtYXBwaW5nID0ge30KLSAgICBzdGF0ZV9tYW5hZ2VyID0gTm9uZQotICAgIHVuY2FjaGVfbWFuYWdlciA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIHRlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIG1hcHBpbmdbJy5yb290J10gPSB0ZW1wX2RpcgotICAgICAgICBpbXBvcnRfbmFtZXMgPSBzZXQoKQotICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCdfX2luaXRfXycpOgotICAgICAgICAgICAgICAgIGltcG9ydF9uYW1lID0gbmFtZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXQotICAgICAgICAgICAgaW1wb3J0X25hbWVzLmFkZChpbXBvcnRfbmFtZSkKLSAgICAgICAgICAgIGlmIGltcG9ydF9uYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tpbXBvcnRfbmFtZV0KLSAgICAgICAgICAgIG5hbWVfcGFydHMgPSBuYW1lLnNwbGl0KCcuJykKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHRlbXBfZGlyCi0gICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG5hbWVfcGFydHNbOi0xXToKLSAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZmlsZV9wYXRoLCBkaXJlY3RvcnkpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLm1rZGlyKGZpbGVfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQotICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgbmFtZV9wYXJ0c1stMV0gKyAnLnB5JykKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICd3JykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZS5mb3JtYXQobmFtZSkpCi0gICAgICAgICAgICBjcmVhdGVkX3BhdGhzLmFwcGVuZChmaWxlX3BhdGgpCi0gICAgICAgICAgICBtYXBwaW5nW25hbWVdID0gZmlsZV9wYXRoCi0gICAgICAgIHVuY2FjaGVfbWFuYWdlciA9IHV0aWwudW5jYWNoZSgqaW1wb3J0X25hbWVzKQotICAgICAgICB1bmNhY2hlX21hbmFnZXIuX19lbnRlcl9fKCkKLSAgICAgICAgc3RhdGVfbWFuYWdlciA9IHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3RlbXBfZGlyXSkKLSAgICAgICAgc3RhdGVfbWFuYWdlci5fX2VudGVyX18oKQotICAgICAgICB5aWVsZCBtYXBwaW5nCi0gICAgZmluYWxseToKLSAgICAgICAgaWYgc3RhdGVfbWFuYWdlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN0YXRlX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKLSAgICAgICAgaWYgdW5jYWNoZV9tYW5hZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIHN1cHBvcnQucm10cmVlKHRlbXBfZGlyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCBhMWY4ZTc2Li5kNGJmOTE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMTAsMTIgKzEwLDEzIEBACiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgd2FybmluZ3MKIAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCiAKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl9hYmMsIHNvdXJjZV9hYmMgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5hYmMnKQotbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKLWZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQoraW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQorYWJjID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5hYmMnKQorbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQordXRpbCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCisKIAogIyMjIyMgSW5oZXJpdGFuY2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGNsYXNzIEluaGVyaXRhbmNlVGVzdHM6CkBAIC0yNiw4ICsyNyw3IEBACiAgICAgc3ViY2xhc3NlcyA9IFtdCiAgICAgc3VwZXJjbGFzc2VzID0gW10KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc3VwZXJjbGFzc2VzID0gW2dldGF0dHIoc2VsZi5hYmMsIGNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc19uYW1lIGluIHNlbGYuc3VwZXJjbGFzc19uYW1lc10KICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnc3ViY2xhc3NfbmFtZXMnKToKQEAgLTM2LDExICszNiwxMSBAQAogICAgICAgICAgICAgIyBjaGVja2luZyBhY3Jvc3MgbW9kdWxlIGJvdW5kYXJpZXMgKGkuZS4gdGhlIF9ib290c3RyYXAgaW4gYWJjIGlzCiAgICAgICAgICAgICAjIG5vdCB0aGUgc2FtZSBhcyB0aGUgb25lIGluIG1hY2hpbmVyeSkuIFRoYXQgbWVhbnMgc3RlYWxpbmcgb25lIG9mCiAgICAgICAgICAgICAjIHRoZSBtb2R1bGVzIGZyb20gdGhlIG90aGVyIHRvIG1ha2Ugc3VyZSB0aGUgc2FtZSBpbnN0YW5jZSBpcyB1c2VkLgotICAgICAgICAgICAgc2VsZi5zdWJjbGFzc2VzID0gW2dldGF0dHIoc2VsZi5hYmMubWFjaGluZXJ5LCBjbGFzc19uYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2xhc3NfbmFtZSBpbiBzZWxmLnN1YmNsYXNzX25hbWVzXQorICAgICAgICAgICAgbWFjaGluZXJ5ID0gc2VsZi5hYmMubWFjaGluZXJ5CisgICAgICAgICAgICBzZWxmLnN1YmNsYXNzZXMgPSBbZ2V0YXR0cihtYWNoaW5lcnksIGNsYXNzX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzX25hbWUgaW4gc2VsZi5zdWJjbGFzc19uYW1lc10KICAgICAgICAgYXNzZXJ0IHNlbGYuc3ViY2xhc3NlcyBvciBzZWxmLnN1cGVyY2xhc3Nlcywgc2VsZi5fX2NsYXNzX18KLSAgICAgICAgdGVzdGluZyA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLnBhcnRpdGlvbignXycpWzJdCi0gICAgICAgIHNlbGYuX190ZXN0ID0gZ2V0YXR0cihzZWxmLmFiYywgdGVzdGluZykKKyAgICAgICAgc2VsZi5fX3Rlc3QgPSBnZXRhdHRyKHNlbGYuYWJjLCBzZWxmLl9OQU1FKQogCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3NlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIGV4cGVjdGVkIHN1YmNsYXNzZXMgaW5oZXJpdC4KQEAgLTU0LDk0ICs1NCw5NyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc2VsZi5fX3Rlc3QsIHN1cGVyY2xhc3MpLAogICAgICAgICAgICAgICAgInswfSBpcyBub3QgYSBzdXBlcmNsYXNzIG9mIHsxfSIuZm9ybWF0KHN1cGVyY2xhc3MsIHNlbGYuX190ZXN0KSkKIAotZGVmIGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhiYXNlX2NsYXNzKToKLSAgICBkZWYgc2V0X2Zyb3plbihucyk6Ci0gICAgICAgIG5zWydhYmMnXSA9IGZyb3plbl9hYmMKLSAgICBkZWYgc2V0X3NvdXJjZShucyk6Ci0gICAgICAgIG5zWydhYmMnXSA9IHNvdXJjZV9hYmMKLQotICAgIGNsYXNzZXMgPSBbXQotICAgIGZvciBwcmVmaXgsIG5zX3NldCBpbiBbKCdGcm96ZW4nLCBzZXRfZnJvemVuKSwgKCdTb3VyY2UnLCBzZXRfc291cmNlKV06Ci0gICAgICAgIGNsYXNzZXMuYXBwZW5kKHR5cGVzLm5ld19jbGFzcygnXycuam9pbihbcHJlZml4LCBiYXNlX2NsYXNzLl9fbmFtZV9fXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV9jbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY19ib2R5PW5zX3NldCkpCi0gICAgcmV0dXJuIGNsYXNzZXMKLQogCiBjbGFzcyBNZXRhUGF0aEZpbmRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydGaW5kZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydCdWlsdGluSW1wb3J0ZXInLCAnRnJvemVuSW1wb3J0ZXInLCAnUGF0aEZpbmRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgJ1dpbmRvd3NSZWdpc3RyeUZpbmRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKE1ldGFQYXRoRmluZGVyKQotRnJvemVuX01ldGFQYXRoRmluZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX01ldGFQYXRoRmluZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fTWV0YVBhdGhGaW5kZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9NZXRhUGF0aEZpbmRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNZXRhUGF0aEZpbmRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnRmluZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnRmlsZUZpbmRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKFBhdGhFbnRyeUZpbmRlcikKLUZyb3plbl9QYXRoRW50cnlGaW5kZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFBhdGhFbnRyeUZpbmRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydMb2FkZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhSZXNvdXJjZUxvYWRlcikKLUZyb3plbl9SZXNvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9SZXNvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX1Jlc291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfUmVzb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoUmVzb3VyY2VMb2FkZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydMb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydCdWlsdGluSW1wb3J0ZXInLCAnRnJvemVuSW1wb3J0ZXInLCAnRXh0ZW5zaW9uRmlsZUxvYWRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKEluc3BlY3RMb2FkZXIpCi1Gcm96ZW5fSW5zcGVjdExvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9JbnNwZWN0TG9hZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fSW5zcGVjdExvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX0luc3BlY3RMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnSW5zcGVjdExvYWRlciddCiAgICAgc3ViY2xhc3NfbmFtZXMgPSBbJ0V4dGVuc2lvbkZpbGVMb2FkZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhFeGVjdXRpb25Mb2FkZXIpCi1Gcm96ZW5fRXhlY3V0aW9uTG9hZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChFeGVjdXRpb25Mb2FkZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgRmlsZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydSZXNvdXJjZUxvYWRlcicsICdFeGVjdXRpb25Mb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydTb3VyY2VGaWxlTG9hZGVyJywgJ1NvdXJjZWxlc3NGaWxlTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoRmlsZUxvYWRlcikKLUZyb3plbl9GaWxlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX0ZpbGVMb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9GaWxlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfRmlsZUxvYWRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaWxlTG9hZGVyLCBhYmM9YWJjKQogCiAKIGNsYXNzIFNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzKToKICAgICBzdXBlcmNsYXNzX25hbWVzID0gWydSZXNvdXJjZUxvYWRlcicsICdFeGVjdXRpb25Mb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydTb3VyY2VGaWxlTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoU291cmNlTG9hZGVyKQotRnJvemVuX1NvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoU291cmNlTG9hZGVyLCBhYmM9YWJjKQorCiAKICMjIyMjIERlZmF1bHQgcmV0dXJuIHZhbHVlcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1kZWYgbWFrZV9hYmNfc3ViY2xhc3NlcyhiYXNlX2NsYXNzKToKLSAgICBjbGFzc2VzID0gW10KLSAgICBmb3Iga2luZCwgYWJjIGluIFsoJ0Zyb3plbicsIGZyb3plbl9hYmMpLCAoJ1NvdXJjZScsIHNvdXJjZV9hYmMpXToKLSAgICAgICAgbmFtZSA9ICdfJy5qb2luKFtraW5kLCBiYXNlX2NsYXNzLl9fbmFtZV9fXSkKLSAgICAgICAgYmFzZV9jbGFzc2VzID0gYmFzZV9jbGFzcywgZ2V0YXR0cihhYmMsIGJhc2VfY2xhc3MuX19uYW1lX18pCi0gICAgICAgIGNsYXNzZXMuYXBwZW5kKHR5cGVzLm5ld19jbGFzcyhuYW1lLCBiYXNlX2NsYXNzZXMpKQotICAgIHJldHVybiBjbGFzc2VzCiAKLWRlZiBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhiYXNlX2NsYXNzLCB0ZXN0X2NsYXNzKToKLSAgICBmcm96ZW5fY2xhc3MsIHNvdXJjZV9jbGFzcyA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoYmFzZV9jbGFzcykKLSAgICB0ZXN0cyA9IFtdCi0gICAgZm9yIHByZWZpeCwgY2xhc3NfaW5fdGVzdCBpbiBbKCdGcm96ZW4nLCBmcm96ZW5fY2xhc3MpLCAoJ1NvdXJjZScsIHNvdXJjZV9jbGFzcyldOgotICAgICAgICBkZWYgc2V0X25zKG5zKToKLSAgICAgICAgICAgIG5zWydpbnMnXSA9IGNsYXNzX2luX3Rlc3QoKQotICAgICAgICB0ZXN0cy5hcHBlbmQodHlwZXMubmV3X2NsYXNzKCdfJy5qb2luKFtwcmVmaXgsIHRlc3RfY2xhc3MuX19uYW1lX19dKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfYm9keT1zZXRfbnMpKQotICAgIHJldHVybiB0ZXN0cworZGVmIG1ha2VfYWJjX3N1YmNsYXNzZXMoYmFzZV9jbGFzcywgbmFtZT1Ob25lLCBpbnN0PUZhbHNlLCAqKmt3YXJncyk6CisgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICBuYW1lID0gYmFzZV9jbGFzcy5fX25hbWVfXworICAgIGJhc2UgPSB7a2luZDogZ2V0YXR0cihzcGxpdGFiYywgbmFtZSkKKyAgICAgICAgICAgIGZvciBraW5kLCBzcGxpdGFiYyBpbiBhYmMuaXRlbXMoKX0KKyAgICByZXR1cm4ge2Nscy5fS0lORDogY2xzKCkgaWYgaW5zdCBlbHNlIGNscworICAgICAgICAgICAgZm9yIGNscyBpbiB0ZXN0X3V0aWwuc3BsaXRfZnJvemVuKGJhc2VfY2xhc3MsIGJhc2UsICoqa3dhcmdzKX0KKworCitjbGFzcyBBQkNUZXN0SGFybmVzczoKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbnMoc2VsZik6CisgICAgICAgICMgTGF6aWx5IHNldCBpbnMgb24gdGhlIGNsYXNzLgorICAgICAgICBjbHMgPSBzZWxmLlNQTElUW3NlbGYuX0tJTkRdCisgICAgICAgIGlucyA9IGNscygpCisgICAgICAgIHNlbGYuX19jbGFzc19fLmlucyA9IGlucworICAgICAgICByZXR1cm4gaW5zCiAKIAogY2xhc3MgTWV0YVBhdGhGaW5kZXI6CkBAIC0xNDksMTAgKzE1MiwxMCBAQAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzdXBlcigpLmZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQogCi1Gcm96ZW5fTVBGLCBTb3VyY2VfTVBGID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhNZXRhUGF0aEZpbmRlcikKIAorY2xhc3MgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKIAotY2xhc3MgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzOgorICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhNZXRhUGF0aEZpbmRlcikKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbW9kdWxlKHNlbGYpOgogICAgICAgICAjIERlZmF1bHQgc2hvdWxkIHJldHVybiBOb25lLgpAQCAtMTYzLDggKzE2Niw5IEBACiAgICAgICAgIHNlbGYuaW5zLmludmFsaWRhdGVfY2FjaGVzKCkKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKE1ldGFQYXRoRmluZGVyLCBNZXRhUGF0aEZpbmRlckRlZmF1bHRzVGVzdHMpCi1Gcm96ZW5fTVBGRGVmYXVsdFRlc3RzLCBTb3VyY2VfTVBGRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fTVBGRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9NUEZEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNZXRhUGF0aEZpbmRlckRlZmF1bHRzVGVzdHMpCiAKIAogY2xhc3MgUGF0aEVudHJ5RmluZGVyOgpAQCAtMTcyLDEwICsxNzYsMTAgQEAKICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc3VwZXIoKS5maW5kX2xvYWRlcihmdWxsbmFtZSkKIAotRnJvemVuX1BFRiwgU291cmNlX1BFRiA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUGF0aEVudHJ5RmluZGVyKQogCitjbGFzcyBQYXRoRW50cnlGaW5kZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKIAotY2xhc3MgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0czoKKyAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUGF0aEVudHJ5RmluZGVyKQogCiAgICAgZGVmIHRlc3RfZmluZF9sb2FkZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKE5vbmUsIFtdKSwgc2VsZi5pbnMuZmluZF9sb2FkZXIoJ3NvbWV0aGluZycpKQpAQCAtMTg4LDggKzE5Miw5IEBACiAgICAgICAgIHNlbGYuaW5zLmludmFsaWRhdGVfY2FjaGVzKCkKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKFBhdGhFbnRyeUZpbmRlciwgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9QRUZEZWZhdWx0VGVzdHMsIFNvdXJjZV9QRUZEZWZhdWx0VGVzdHMgPSB0ZXN0cworKEZyb3plbl9QRUZEZWZhdWx0VGVzdHMsCisgU291cmNlX1BFRkRlZmF1bHRUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFBhdGhFbnRyeUZpbmRlckRlZmF1bHRzVGVzdHMpCiAKIAogY2xhc3MgTG9hZGVyOgpAQCAtMTk4LDEwICsyMDMsOSBAQAogICAgICAgICByZXR1cm4gc3VwZXIoKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKIAogCi1Gcm96ZW5fTCwgU291cmNlX0wgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKK2NsYXNzIExvYWRlckRlZmF1bHRzVGVzdHMoQUJDVGVzdEhhcm5lc3MpOgogCi0KLWNsYXNzIExvYWRlckRlZmF1bHRzVGVzdHM6CisgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKIAogICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKQEAgLTIxNyw4ICsyMjEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihtb2QpKQogCiAKLXRlc3RzID0gbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoTG9hZGVyLCBMb2FkZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX0xEZWZhdWx0VGVzdHMsIFNvdXJjZUxEZWZhdWx0VGVzdHMgPSB0ZXN0cworKEZyb3plbl9MRGVmYXVsdFRlc3RzLAorIFNvdXJjZUxEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChMb2FkZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIFJlc291cmNlTG9hZGVyKExvYWRlcik6CkBAIC0yMjcsMTggKzIzMiwxOCBAQAogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZGF0YShwYXRoKQogCiAKLUZyb3plbl9STCwgU291cmNlX1JMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhSZXNvdXJjZUxvYWRlcikKK2NsYXNzIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CiAKLQotY2xhc3MgUmVzb3VyY2VMb2FkZXJEZWZhdWx0c1Rlc3RzOgorICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhSZXNvdXJjZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2dldF9kYXRhKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5pbnMuZ2V0X2RhdGEoJy9zb21lL3BhdGgnKQogCiAKLXRlc3RzID0gbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoUmVzb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9STERlZmF1bHRUZXN0cywgU291cmNlX1JMRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fUkxEZWZhdWx0VGVzdHMsCisgU291cmNlX1JMRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoUmVzb3VyY2VMb2FkZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXIoTG9hZGVyKToKQEAgLTI1MCwxMCArMjU1LDEyIEBACiAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9zb3VyY2UoZnVsbG5hbWUpCiAKIAotRnJvemVuX0lMLCBTb3VyY2VfSUwgPSBtYWtlX2FiY19zdWJjbGFzc2VzKEluc3BlY3RMb2FkZXIpCitTUExJVF9JTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoSW5zcGVjdExvYWRlcikKIAogCi1jbGFzcyBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0czoKK2NsYXNzIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKKworICAgIFNQTElUID0gU1BMSVRfSUwKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgpAQCAtMjY0LDggKzI3MSw5IEBACiAgICAgICAgICAgICBzZWxmLmlucy5nZXRfc291cmNlKCdibGFoJykKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKEluc3BlY3RMb2FkZXIsIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX0lMRGVmYXVsdFRlc3RzLCBTb3VyY2VfSUxEZWZhdWx0VGVzdHMgPSB0ZXN0cworKEZyb3plbl9JTERlZmF1bHRUZXN0cywKKyBTb3VyY2VfSUxEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5zcGVjdExvYWRlcik6CkBAIC0yNzMsMjEgKzI4MSwyNSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAKLUZyb3plbl9FTCwgU291cmNlX0VMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhFeGVjdXRpb25Mb2FkZXIpCisKK1NQTElUX0VMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhFeGVjdXRpb25Mb2FkZXIpCiAKIAotY2xhc3MgRXhlY3V0aW9uTG9hZGVyRGVmYXVsdHNUZXN0czoKK2NsYXNzIEV4ZWN1dGlvbkxvYWRlckRlZmF1bHRzVGVzdHMoQUJDVGVzdEhhcm5lc3MpOgorCisgICAgU1BMSVQgPSBTUExJVF9FTAogCiAgICAgZGVmIHRlc3RfZ2V0X2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmdldF9maWxlbmFtZSgnYmxhaCcpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhFeGVjdXRpb25Mb2FkZXIsIEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX0VMRGVmYXVsdFRlc3RzLCBTb3VyY2VfRUxEZWZhdWx0c1Rlc3RzID0gdGVzdHMKKyhGcm96ZW5fRUxEZWZhdWx0VGVzdHMsCisgU291cmNlX0VMRGVmYXVsdHNUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJEZWZhdWx0c1Rlc3RzKQorCiAKICMjIyMjIE1ldGFQYXRoRmluZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KIGNsYXNzIE1ldGFQYXRoRmluZGVyRmluZE1vZHVsZVRlc3RzOgogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0zMTcsMTMgKzMyOSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGZvdW5kLCBzcGVjLmxvYWRlcikKIAogCi1Gcm96ZW5fTVBGRmluZE1vZHVsZVRlc3RzLCBTb3VyY2VfTVBGRmluZE1vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIE1ldGFQYXRoRmluZGVyRmluZE1vZHVsZVRlc3RzLAotICAgICAgICBhYmM9KGZyb3plbl9hYmMsIHNvdXJjZV9hYmMpLAotICAgICAgICB1dGlsPShmcm96ZW5fdXRpbCwgc291cmNlX3V0aWwpKQorKEZyb3plbl9NUEZGaW5kTW9kdWxlVGVzdHMsCisgU291cmNlX01QRkZpbmRNb2R1bGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKE1ldGFQYXRoRmluZGVyRmluZE1vZHVsZVRlc3RzLCBhYmM9YWJjLCB1dGlsPXV0aWwpCisKIAogIyMjIyMgUGF0aEVudHJ5RmluZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQogY2xhc3MgUGF0aEVudHJ5RmluZGVyRmluZExvYWRlclRlc3RzOgogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0zNjEsMTEgKzM3MiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGhzLCBmb3VuZFsxXSkKIAogCi1Gcm96ZW5fUEVGRmluZExvYWRlclRlc3RzLCBTb3VyY2VfUEVGRmluZExvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhdGhFbnRyeUZpbmRlckZpbmRMb2FkZXJUZXN0cywKLSAgICAgICAgYWJjPShmcm96ZW5fYWJjLCBzb3VyY2VfYWJjKSwKLSAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwKLSAgICAgICAgdXRpbD0oZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsKSkKKyhGcm96ZW5fUEVGRmluZExvYWRlclRlc3RzLAorIFNvdXJjZV9QRUZGaW5kTG9hZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXJGaW5kTG9hZGVyVGVzdHMsIGFiYz1hYmMsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKICMjIyMjIExvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zODYsNyArMzk2LDcgQEAKICAgICBkZWYgdGVzdF9mcmVzaChzZWxmKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIoKQogICAgICAgICBuYW1lID0gJ2JsYWgnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIuZm91bmQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKQEAgLTQwNCw3ICs0MTQsNyBAQAogICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIGxvYWRlcikKICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBsb2FkZXIKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBmb3VuZCA9IGxvYWRlci5mb3VuZApAQCAtNDEyLDEwICs0MjIsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQogCiAKLUZyb3plbl9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMsIFNvdXJjZV9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTG9hZGVyTG9hZE1vZHVsZVRlc3RzLAotICAgICAgICBhYmM9KGZyb3plbl9hYmMsIHNvdXJjZV9hYmMpLAotICAgICAgICB1dGlsPShmcm96ZW5fdXRpbCwgc291cmNlX3V0aWwpKQorKEZyb3plbl9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMsCisgU291cmNlX0xvYWRlckxvYWRNb2R1bGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKExvYWRlckxvYWRNb2R1bGVUZXN0cywgYWJjPWFiYywgdXRpbD11dGlsKQogCiAKICMjIyMjIEluc3BlY3RMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00NjEsMTEgKzQ3MCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3RyaW5nPicpCiAKIAotY2xhc3MgRnJvemVuX0lMU291cmNlVG9Db2RlVGVzdHMoSW5zcGVjdExvYWRlclNvdXJjZVRvQ29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gRnJvemVuX0lMCi0KLWNsYXNzIFNvdXJjZV9JTFNvdXJjZVRvQ29kZVRlc3RzKEluc3BlY3RMb2FkZXJTb3VyY2VUb0NvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcyA9IFNvdXJjZV9JTAorKEZyb3plbl9JTFNvdXJjZVRvQ29kZVRlc3RzLAorIFNvdXJjZV9JTFNvdXJjZVRvQ29kZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclNvdXJjZVRvQ29kZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCkKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzOgpAQCAtNDk1LDExICs1MDMsMTAgQEAKICAgICAgICAgICAgIGxvYWRlci5nZXRfY29kZSgnYmxhaCcpCiAKIAotY2xhc3MgRnJvemVuX0lMR2V0Q29kZVRlc3RzKEluc3BlY3RMb2FkZXJHZXRDb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBGcm96ZW5fSUwKLQotY2xhc3MgU291cmNlX0lMR2V0Q29kZVRlc3RzKEluc3BlY3RMb2FkZXJHZXRDb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfSUwKKyhGcm96ZW5fSUxHZXRDb2RlVGVzdHMsCisgU291cmNlX0lMR2V0Q29kZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckdldENvZGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0czoKQEAgLTU0MywxMSArNTUwLDEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZSwgc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVfbmFtZV0pCiAKIAotY2xhc3MgRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBGcm96ZW5fSUwKLQotY2xhc3MgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfSUwKKyhGcm96ZW5fSUxMb2FkTW9kdWxlVGVzdHMsCisgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCiAKIAogIyMjIyMgRXhlY3V0aW9uTG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTYwOCwxNSArNjE0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmF0dHIsIDQyKQogCiAKLWNsYXNzIEZyb3plbl9FTEdldENvZGVUZXN0cyhFeGVjdXRpb25Mb2FkZXJHZXRDb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcyA9IEZyb3plbl9FTAotCi1jbGFzcyBTb3VyY2VfRUxHZXRDb2RlVGVzdHMoRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfRUwKKyhGcm96ZW5fRUxHZXRDb2RlVGVzdHMsCisgU291cmNlX0VMR2V0Q29kZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzPVNQTElUX0VMKQogCiAKICMjIyMjIFNvdXJjZUxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1jbGFzcyBTb3VyY2VMb2FkZXI6CitjbGFzcyBTb3VyY2VPbmx5TG9hZGVyOgogCiAgICAgIyBHbG9iYWxzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgZm9yIGFsbCBtb2R1bGVzLgogICAgIHNvdXJjZSA9IChiIl8gPSAnOjonLmpvaW4oW19fbmFtZV9fLCBfX2ZpbGVfXywgX19jYWNoZWRfXywgX19wYWNrYWdlX18sICIKQEAgLTYzNywxMCArNjQyLDEwIEBACiAgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCiAKIAotRnJvemVuX1NvdXJjZU9ubHlMLCBTb3VyY2VfU291cmNlT25seUwgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFNvdXJjZUxvYWRlcikKK1NQTElUX1NPTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoU291cmNlT25seUxvYWRlciwgJ1NvdXJjZUxvYWRlcicpCiAKIAotY2xhc3MgU291cmNlTG9hZGVyKFNvdXJjZUxvYWRlcik6CitjbGFzcyBTb3VyY2VMb2FkZXIoU291cmNlT25seUxvYWRlcik6CiAKICAgICBzb3VyY2VfbXRpbWUgPSAxCiAKQEAgLTY3NywxMSArNjgyLDcgQEAKICAgICAgICAgcmV0dXJuIHBhdGggPT0gc2VsZi5ieXRlY29kZV9wYXRoCiAKIAotRnJvemVuX1NMLCBTb3VyY2VfU0wgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFNvdXJjZUxvYWRlcikKLUZyb3plbl9TTC51dGlsID0gZnJvemVuX3V0aWwKLVNvdXJjZV9TTC51dGlsID0gc291cmNlX3V0aWwKLUZyb3plbl9TTC5pbml0ID0gZnJvemVuX2luaXQKLVNvdXJjZV9TTC5pbml0ID0gc291cmNlX2luaXQKK1NQTElUX1NMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhTb3VyY2VMb2FkZXIsIHV0aWw9dXRpbCwgaW5pdD1pbml0KQogCiAKIGNsYXNzIFNvdXJjZUxvYWRlclRlc3RIYXJuZXNzOgpAQCAtNzY1LDcgKzc2Niw3IEBACiAgICAgICAgICMgTG9hZGluZyBhIG1vZHVsZSBzaG91bGQgc2V0IF9fbmFtZV9fLCBfX2xvYWRlcl9fLCBfX3BhY2thZ2VfXywKICAgICAgICAgIyBfX3BhdGhfXyAoZm9yIHBhY2thZ2VzKSwgX19maWxlX18sIGFuZCBfX2NhY2hlZF9fLgogICAgICAgICAjIFRoZSBtb2R1bGUgc2hvdWxkIGFsc28gYmUgcHV0IGludG8gc3lzLm1vZHVsZXMuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShzZWxmLm5hbWUpCkBAIC03NzgsNyArNzc5LDcgQEAKICAgICAgICAgIyBpcyBhIHBhY2thZ2UuCiAgICAgICAgICMgVGVzdGluZyB0aGUgdmFsdWVzIGZvciBhIHBhY2thZ2UgYXJlIGNvdmVyZWQgYnkgdGVzdF9sb2FkX21vZHVsZS4KICAgICAgICAgc2VsZi5zZXRVcChpc19wYWNrYWdlPUZhbHNlKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQpAQCAtNzk4LDEzICs3OTksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR1cm5lZF9zb3VyY2UsIHNvdXJjZSkKIAogCi1jbGFzcyBGcm96ZW5fU291cmNlT25seUxUZXN0cyhTb3VyY2VPbmx5TG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsb2FkZXJfbW9jayA9IEZyb3plbl9Tb3VyY2VPbmx5TAotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotCi1jbGFzcyBTb3VyY2VfU291cmNlT25seUxUZXN0cyhTb3VyY2VPbmx5TG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsb2FkZXJfbW9jayA9IFNvdXJjZV9Tb3VyY2VPbmx5TAotICAgIHV0aWwgPSBzb3VyY2VfdXRpbAorKEZyb3plbl9Tb3VyY2VPbmx5TG9hZGVyVGVzdHMsCisgU291cmNlX1NvdXJjZU9ubHlMb2FkZXJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFNvdXJjZU9ubHlMb2FkZXJUZXN0cywgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcl9tb2NrPVNQTElUX1NPTCkKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5kb250X3dyaXRlX2J5dGVjb2RlLCAic3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgdHJ1ZSIpCkBAIC04OTYsMTUgKzg5NCwxMCBAQAogICAgICAgICBzZWxmLnZlcmlmeV9jb2RlKGNvZGVfb2JqZWN0KQogCiAKLWNsYXNzIEZyb3plbl9TTEJ5dGVjb2RlVGVzdHMoU291cmNlTG9hZGVyQnl0ZWNvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGxvYWRlcl9tb2NrID0gRnJvemVuX1NMCi0gICAgaW5pdCA9IGZyb3plbl9pbml0Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLWNsYXNzIFNvdXJjZVNMQnl0ZWNvZGVUZXN0cyhTb3VyY2VMb2FkZXJCeXRlY29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbG9hZGVyX21vY2sgPSBTb3VyY2VfU0wKLSAgICBpbml0ID0gc291cmNlX2luaXQKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fU0xCeXRlY29kZVRlc3RzLAorIFNvdXJjZVNMQnl0ZWNvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFNvdXJjZUxvYWRlckJ5dGVjb2RlVGVzdHMsIGluaXQ9aW5pdCwgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcl9tb2NrPVNQTElUX1NMKQogCiAKIGNsYXNzIFNvdXJjZUxvYWRlckdldFNvdXJjZVRlc3RzOgpAQCAtOTQwLDExICs5MzMsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmdldF9zb3VyY2UobmFtZSksIGV4cGVjdCkKIAogCi1jbGFzcyBGcm96ZW5fU291cmNlT25seUxHZXRTb3VyY2VUZXN0cyhTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIFNvdXJjZU9ubHlMb2FkZXJNb2NrID0gRnJvemVuX1NvdXJjZU9ubHlMCi0KLWNsYXNzIFNvdXJjZV9Tb3VyY2VPbmx5TEdldFNvdXJjZVRlc3RzKFNvdXJjZUxvYWRlckdldFNvdXJjZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgU291cmNlT25seUxvYWRlck1vY2sgPSBTb3VyY2VfU291cmNlT25seUwKKyhGcm96ZW5fU291cmNlT25seUxvYWRlckdldFNvdXJjZVRlc3RzLAorIFNvdXJjZV9Tb3VyY2VPbmx5TG9hZGVyR2V0U291cmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VPbmx5TG9hZGVyTW9jaz1TUExJVF9TT0wpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKaW5kZXggMmEyZDQyYi4uNmJjM2M1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTEsOCArMSw4IEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKIAotZnJvemVuX2luaXQsIHNvdXJjZV9pbml0ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKK3V0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQorbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwpAQCAtMTgsOCArMTgsOCBAQAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKICAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQogCkBAIC0yOCw4ICsyOCw4IEBACiAgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKICAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKICAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCiAKQEAgLTQwLDE2ICs0MCwxNiBAQAogICAgICAgICBtb2R1bGVfbmFtZSA9ICdtb2QnCiAgICAgICAgIGFic29sdXRlX25hbWUgPSAnezB9LnsxfScuZm9ybWF0KHBrZ19uYW1lLCBtb2R1bGVfbmFtZSkKICAgICAgICAgcmVsYXRpdmVfbmFtZSA9ICcuezB9Jy5mb3JtYXQobW9kdWxlX25hbWUpCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgYWJzb2x1dGVfbmFtZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQogCiAgICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKICAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZSgnYScpCiAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ2EuYicpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJy4uYycsICdhLmInKQpAQCAtNjEsOCArNjEsOCBAQAogICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCiAgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCiAgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKQEAgLTg2LDE2ICs4NiwxNSBAQAogICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKICAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KICAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCdhLmInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKIAotY2xhc3MgRnJvemVuX0ltcG9ydE1vZHVsZVRlc3RzKEltcG9ydE1vZHVsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0CiAKLWNsYXNzIFNvdXJjZV9JbXBvcnRNb2R1bGVUZXN0cyhJbXBvcnRNb2R1bGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAorKEZyb3plbl9JbXBvcnRNb2R1bGVUZXN0cywKKyBTb3VyY2VfSW1wb3J0TW9kdWxlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbXBvcnRNb2R1bGVUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIEZpbmRMb2FkZXJUZXN0czoKQEAgLTEwNyw3ICsxMDYsNyBAQAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgogICAgICAgICAjIElmIGEgbW9kdWxlIHdpdGggX19sb2FkZXJfXyBpcyBpbiBzeXMubW9kdWxlcywgdGhlbiByZXR1cm4gaXQuCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbG9hZGVyID0gJ2EgbG9hZGVyIScKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCkBAIC0xMjAsNyArMTE5LDcgQEAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19sb2FkZXJfaXNfTm9uZShzZWxmKToKICAgICAgICAgIyBJZiBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fIGlzIE5vbmUsIHJhaXNlIFZhbHVlRXJyb3IuCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBOb25lCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQpAQCAtMTMzLDcgKzEzMiw3IEBACiAgICAgICAgICMgU2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgIyBJc3N1ZSAjMTcwOTkKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZGVsIG1vZHVsZS5fX2xvYWRlcl9fCkBAIC0xNDgsOCArMTQ3LDggQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjIFJldHVybiB0aGUgbG9hZGVyIGZvdW5kIG9uIHN5cy5tZXRhX3BhdGguCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKICAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBOb25lKSwgc2VsZi5pbml0LmZpbmRfbG9hZGVyKG5hbWUpKQpAQCAtMTU4LDggKzE1Nyw4IEBACiAgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKICAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKICAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoKSwKQEAgLTE3MSwxMSArMTcwLDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5pdC5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKIAotY2xhc3MgRnJvemVuX0ZpbmRMb2FkZXJUZXN0cyhGaW5kTG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gZnJvemVuX2luaXQKIAotY2xhc3MgU291cmNlX0ZpbmRMb2FkZXJUZXN0cyhGaW5kTG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKKyhGcm96ZW5fRmluZExvYWRlclRlc3RzLAorIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBSZWxvYWRUZXN0czoKQEAgLTE5NSwxMCArMTkzLDEwIEBACiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoJ3RvcF9sZXZlbCcpCiAgICAgICAgICAgICBtb2R1bGUuc3BhbSA9IDMKICAgICAgICAgICAgIHN5cy5tb2R1bGVzWyd0b3BfbGV2ZWwnXSA9IG1vZHVsZQotICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3RvcF9sZXZlbCc6IGNvZGV9KQorICAgICAgICBtb2NrID0gdGVzdF91dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eyd0b3BfbGV2ZWwnOiBjb2RlfSkKICAgICAgICAgd2l0aCBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZSgndG9wX2xldmVsJykKICAgICAgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuaW5pdC5yZWxvYWQobW9kdWxlKQogICAgICAgICAgICAgICAgIGFjdHVhbCA9IHN5cy5tb2R1bGVzWyd0b3BfbGV2ZWwnXQpAQCAtMjMwLDcgKzIyOCw3IEBACiAgICAgZGVmIHRlc3RfcmVsb2FkX2xvY2F0aW9uX2NoYW5nZWQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKLSAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdzcGFtJyk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKCdzcGFtJyk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LkRpcnNPblN5c1BhdGgoY3dkKToKICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBhcyBhIHBsYWluIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmludmFsaWRhdGVfY2FjaGVzKCkKQEAgLTI4MSw3ICsyNzksNyBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9uYW1lc3BhY2VfY2hhbmdlZChzZWxmKToKICAgICAgICAgbmFtZSA9ICdzcGFtJwogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoTm9uZSkgYXMgY3dkOgotICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ3NwYW0nKToKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoJ3NwYW0nKToKICAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aChjd2QpOgogICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IGFzIGEgbmFtZXNwYWNlIHBhY2thZ2UuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbnZhbGlkYXRlX2NhY2hlcygpCkBAIC0zMzgsMjAgKzMzNiwxNiBAQAogICAgICAgICAjIFNlZSAjMTk4NTEuCiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHRlc3RfdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKICAgICAgICAgICAgIGhhbSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKGZ1bGxuYW1lKQogICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmluaXQucmVsb2FkKGhhbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVsb2FkZWQsIGhhbSkKIAogCi1jbGFzcyBGcm96ZW5fUmVsb2FkVGVzdHMoUmVsb2FkVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gZnJvemVuX2luaXQKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotY2xhc3MgU291cmNlX1JlbG9hZFRlc3RzKFJlbG9hZFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IHNvdXJjZV9pbml0Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX1JlbG9hZFRlc3RzLAorIFNvdXJjZV9SZWxvYWRUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFJlbG9hZFRlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCkKIAogCiBjbGFzcyBJbnZhbGlkYXRlQ2FjaGVUZXN0czoKQEAgLTM4NCwxMSArMzc4LDEwIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLl9fZGVsaXRlbV9fKGtleSkpCiAgICAgICAgIHNlbGYuaW5pdC5pbnZhbGlkYXRlX2NhY2hlcygpICAjIFNob3VsZG4ndCB0cmlnZ2VyIGFuIGV4Y2VwdGlvbi4KIAotY2xhc3MgRnJvemVuX0ludmFsaWRhdGVDYWNoZVRlc3RzKEludmFsaWRhdGVDYWNoZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0CiAKLWNsYXNzIFNvdXJjZV9JbnZhbGlkYXRlQ2FjaGVUZXN0cyhJbnZhbGlkYXRlQ2FjaGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAorKEZyb3plbl9JbnZhbGlkYXRlQ2FjaGVUZXN0cywKKyBTb3VyY2VfSW52YWxpZGF0ZUNhY2hlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnZhbGlkYXRlQ2FjaGVUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIEZyb3plbkltcG9ydGxpYlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTM5OCw2ICszOTEsNyBAQAogICAgICAgICAjIENhbid0IGRvIGFuIGlzaW5zdGFuY2UoKSBjaGVjayBzaW5jZSBzZXBhcmF0ZSBjb3BpZXMgb2YgaW1wb3J0bGliCiAgICAgICAgICMgbWF5IGhhdmUgYmVlbiB1c2VkIGZvciBpbXBvcnQsIHNvIGp1c3QgY2hlY2sgdGhlIG5hbWUgaXMgbm90IGZvciB0aGUKICAgICAgICAgIyBmcm96ZW4gbG9hZGVyLgorICAgICAgICBzb3VyY2VfaW5pdCA9IGluaXRbJ1NvdXJjZSddCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc291cmNlX2luaXQuX19sb2FkZXJfXy5fX2NsYXNzX18uX19uYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zyb3plbkltcG9ydGVyJykKIApAQCAtNDI2LDExICs0MjAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLm1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5maW5kX21vZHVsZShuYW1lKToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9kdWxlLl9fc3BlY19fLCBOb25lKQogCi1jbGFzcyBGcm96ZW5fU3RhcnR1cFRlc3RzKFN0YXJ0dXBUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKIAotY2xhc3MgU291cmNlX1N0YXJ0dXBUZXN0cyhTdGFydHVwVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5CisoRnJvemVuX1N0YXJ0dXBUZXN0cywKKyBTb3VyY2VfU3RhcnR1cFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoU3RhcnR1cFRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUxOTFiYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQpAQCAtMCwwICsxLDEzMiBAQAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGFiYworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCisKKworY2xhc3MgQ29sbGVjdEluaXQ6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncworCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiBzZWxmCisKKworY2xhc3MgTGF6eUxvYWRlckZhY3RvcnlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gdXRpbC5MYXp5TG9hZGVyLmZhY3RvcnkoQ29sbGVjdEluaXQpCisgICAgICAgICMgRS5nLiB3aGF0IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciBpbnN0YW50aWF0ZXMgbG9hZGVycyB3aXRoCisgICAgICAgICMgcGx1cyBrZXl3b3JkIGFyZ3VtZW50cy4KKyAgICAgICAgbGF6eV9sb2FkZXIgPSBmYWN0b3J5KCdtb2R1bGUgbmFtZScsICdtb2R1bGUgcGF0aCcsIGt3PSdrdycpCisgICAgICAgIGxvYWRlciA9IGxhenlfbG9hZGVyLmxvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbW9kdWxlIG5hbWUnLCAnbW9kdWxlIHBhdGgnKSwgbG9hZGVyLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydrdyc6ICdrdyd9LCBsb2FkZXIua3dhcmdzKQorCisgICAgZGVmIHRlc3RfdmFsaWRhdGlvbihzZWxmKToKKyAgICAgICAgIyBObyBleGVjX21vZHVsZSgpLCBubyBsYXp5IGxvYWRpbmcuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KG9iamVjdCkKKworCitjbGFzcyBUZXN0aW5nSW1wb3J0ZXIoYWJjLk1ldGFQYXRoRmluZGVyLCBhYmMuTG9hZGVyKToKKworICAgIG1vZHVsZV9uYW1lID0gJ2xhenlfbG9hZGVyX3Rlc3QnCisgICAgbXV0YXRlZF9uYW1lID0gJ2NoYW5nZWQnCisgICAgbG9hZGVkID0gTm9uZQorICAgIHNvdXJjZV9jb2RlID0gJ2F0dHIgPSA0MjsgX19uYW1lX18gPSB7IXJ9Jy5mb3JtYXQobXV0YXRlZF9uYW1lKQorCisgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgIGlmIG5hbWUgIT0gc2VsZi5tb2R1bGVfbmFtZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiB1dGlsLnNwZWNfZnJvbV9sb2FkZXIobmFtZSwgdXRpbC5MYXp5TG9hZGVyKHNlbGYpKQorCisgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIGV4ZWMoc2VsZi5zb3VyY2VfY29kZSwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICBzZWxmLmxvYWRlZCA9IG1vZHVsZQorCisKK2NsYXNzIExhenlMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIob2JqZWN0KQorCisgICAgZGVmIG5ld19tb2R1bGUoc2VsZiwgc291cmNlX2NvZGU9Tm9uZSk6CisgICAgICAgIGxvYWRlciA9IFRlc3RpbmdJbXBvcnRlcigpCisgICAgICAgIGlmIHNvdXJjZV9jb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9hZGVyLnNvdXJjZV9jb2RlID0gc291cmNlX2NvZGUKKyAgICAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2xvYWRlcihUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKGxvYWRlcikpCisgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYworICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCisgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgICAgIyBNb2R1bGUgaXMgbm93IGxhenkuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlci5sb2FkZWQpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiB0ZXN0X2UyZShzZWxmKToKKyAgICAgICAgIyBFbmQtdG8tZW5kIHRlc3QgdG8gdmVyaWZ5IHRoZSBsb2FkIGlzIGluIGZhY3QgbGF6eS4KKyAgICAgICAgaW1wb3J0ZXIgPSBUZXN0aW5nSW1wb3J0ZXIoKQorICAgICAgICBhc3NlcnQgaW1wb3J0ZXIubG9hZGVkIGlzIE5vbmUKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShpbXBvcnRlci5tb2R1bGVfbmFtZSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGltcG9ydGVyLm1vZHVsZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpbXBvcnRlci5sb2FkZWQpCisgICAgICAgICMgVHJpZ2dlciBsb2FkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2xvYWRlcl9fLCBpbXBvcnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaW1wb3J0ZXIubG9hZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZSwgaW1wb3J0ZXIubG9hZGVkKQorCisgICAgZGVmIHRlc3RfYXR0cl91bmNoYW5nZWQoc2VsZik6CisgICAgICAgICMgQW4gYXR0cmlidXRlIG9ubHkgbXV0YXRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIGltcG9ydCBzaG91bGQgbm90IGJlCisgICAgICAgICMgY2hhbmdlZCBuZWVkbGVzc2x5LgorICAgICAgICBtb2R1bGUgPSBzZWxmLm5ld19tb2R1bGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRlc3RpbmdJbXBvcnRlci5tdXRhdGVkX25hbWUsIG1vZHVsZS5fX25hbWVfXykKKworICAgIGRlZiB0ZXN0X25ld19hdHRyKHNlbGYpOgorICAgICAgICAjIEEgbmV3IGF0dHJpYnV0ZSBzaG91bGQgcGVyc2lzdC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgbW9kdWxlLm5ld19hdHRyID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiwgbW9kdWxlLm5ld19hdHRyKQorCisgICAgZGVmIHRlc3RfbXV0YXRlZF9wcmVleGlzdGluZ19hdHRyKHNlbGYpOgorICAgICAgICAjIENoYW5naW5nIGFuIGF0dHJpYnV0ZSB0aGF0IGFscmVhZHkgZXhpc3RlZCBvbiB0aGUgbW9kdWxlIC0tCisgICAgICAgICMgZS5nLiBfX25hbWVfXyAtLSBzaG91bGQgcGVyc2lzdC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgbW9kdWxlLl9fbmFtZV9fID0gJ2JvZ3VzJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdib2d1cycsIG1vZHVsZS5fX25hbWVfXykKKworICAgIGRlZiB0ZXN0X211dGF0ZWRfYXR0cihzZWxmKToKKyAgICAgICAgIyBDaGFuZ2luZyBhbiBhdHRyaWJ1dGUgdGhhdCBjb21lcyBpbnRvIGV4aXN0ZW5jZSBhZnRlciBhbiBpbXBvcnQKKyAgICAgICAgIyBzaG91bGQgcGVyc2lzdC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgbW9kdWxlLmF0dHIgPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbW9kdWxlLmF0dHIpCisKKyAgICBkZWYgdGVzdF9kZWxldGVfZXZlbnR1YWxfYXR0cihzZWxmKToKKyAgICAgICAgIyBEZWxldGluZyBhbiBhdHRyaWJ1dGUgc2hvdWxkIHN0YXkgZGVsZXRlZC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgZGVsIG1vZHVsZS5hdHRyCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdhdHRyJykpCisKKyAgICBkZWYgdGVzdF9kZWxldGVfcHJlZXhpc3RpbmdfYXR0cihzZWxmKToKKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgZGVsIG1vZHVsZS5fX25hbWVfXworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19uYW1lX18nKSkKKworICAgIGRlZiB0ZXN0X21vZHVsZV9zdWJzdGl0dXRpb25fZXJyb3Ioc2VsZik6CisgICAgICAgIHNvdXJjZV9jb2RlID0gJ2ltcG9ydCBzeXM7IHN5cy5tb2R1bGVzW19fbmFtZV9fXSA9IDQyJworICAgICAgICBtb2R1bGUgPSBzZWxmLm5ld19tb2R1bGUoc291cmNlX2NvZGUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fbmFtZV9fCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CmluZGV4IGRjOTdiYTEuLmRmMGFmMTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMSw3ICsxLDYgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotZnJvemVuX2luaXQsIHNvdXJjZV9pbml0ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotZnJvemVuX2Jvb3RzdHJhcCA9IGZyb3plbl9pbml0Ll9ib290c3RyYXAKLXNvdXJjZV9ib290c3RyYXAgPSBzb3VyY2VfaW5pdC5fYm9vdHN0cmFwCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCisKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKQEAgLTMyLDE0ICszMSwyMCBAQAogICAgICAgICB0ZXN0X3RpbWVvdXQgPSBOb25lCiAgICAgICAgICMgX3JlbGVhc2Vfc2F2ZSgpIHVuc3VwcG9ydGVkCiAgICAgICAgIHRlc3RfcmVsZWFzZV9zYXZlX3VuYWNxdWlyZWQgPSBOb25lCisgICAgICAgICMgbG9jayBzdGF0dXMgaW4gcmVwciB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3JlcHIgPSBOb25lCisgICAgICAgIHRlc3RfbG9ja2VkX3JlcHIgPSBOb25lCiAKLSAgICBjbGFzcyBGcm96ZW5fTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyhNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLCBsb2NrX3Rlc3RzLlJMb2NrVGVzdHMpOgotICAgICAgICBMb2NrVHlwZSA9IGZyb3plbl9ib290c3RyYXAuX01vZHVsZUxvY2sKKyAgICBMT0NLX1RZUEVTID0ge2tpbmQ6IHNwbGl0aW5pdC5fYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCisgICAgICAgICAgICAgICAgICBmb3Iga2luZCwgc3BsaXRpbml0IGluIGluaXQuaXRlbXMoKX0KIAotICAgIGNsYXNzIFNvdXJjZV9Nb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKE1vZHVsZUxvY2tBc1JMb2NrVGVzdHMsIGxvY2tfdGVzdHMuUkxvY2tUZXN0cyk6Ci0gICAgICAgIExvY2tUeXBlID0gc291cmNlX2Jvb3RzdHJhcC5fTW9kdWxlTG9jawotCisgICAgKEZyb3plbl9Nb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLAorICAgICBTb3VyY2VfTW9kdWxlTG9ja0FzUkxvY2tUZXN0cworICAgICApID0gdGVzdF91dGlsLnRlc3RfYm90aChNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLCBsb2NrX3Rlc3RzLlJMb2NrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tUeXBlPUxPQ0tfVFlQRVMpCiBlbHNlOgorICAgIExPQ0tfVFlQRVMgPSB7fQorCiAgICAgY2xhc3MgRnJvemVuX01vZHVsZUxvY2tBc1JMb2NrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwYXNzCiAKQEAgLTQ3LDc4ICs1Miw5NCBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0czoKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBEZWFkbG9ja0F2b2lkYW5jZVRlc3RzOgogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCi0gICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMC4wMDAwMDEpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCkKLQotICAgIGRlZiBydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3Qoc2VsZiwgY3JlYXRlX2RlYWRsb2NrKToKLSAgICAgICAgTkxPQ0tTID0gMTAKLSAgICAgICAgbG9ja3MgPSBbc2VsZi5Mb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCi0gICAgICAgIHBhaXJzID0gWyhsb2Nrc1tpXSwgbG9ja3NbKGkrMSklTkxPQ0tTXSkgZm9yIGkgaW4gcmFuZ2UoTkxPQ0tTKV0KLSAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgotICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQotICAgICAgICBiYXJyaWVyID0gdGhyZWFkaW5nLkJhcnJpZXIoTlRIUkVBRFMpCi0gICAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgICBkZWYgX2FjcXVpcmUobG9jayk6Ci0gICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywgRmFsc2Ugb24gZGVhZGxvY2suIiIiCisgICAgICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsb2NrLmFjcXVpcmUoKQotICAgICAgICAgICAgZXhjZXB0IHNlbGYuRGVhZGxvY2tFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDAuMDAwMDAxKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorCisgICAgICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgICAgIGlmIHNlbGYub2xkX3N3aXRjaGludGVydmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCkKKworICAgICAgICBkZWYgcnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KHNlbGYsIGNyZWF0ZV9kZWFkbG9jayk6CisgICAgICAgICAgICBOTE9DS1MgPSAxMAorICAgICAgICAgICAgbG9ja3MgPSBbc2VsZi5Mb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgICAgICBpZiBjcmVhdGVfZGVhZGxvY2s6CisgICAgICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZGVmIGYoKToKLSAgICAgICAgICAgIGEsIGIgPSBwYWlycy5wb3AoKQotICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQotICAgICAgICAgICAgYmFycmllci53YWl0KCkKLSAgICAgICAgICAgIHJiID0gX2FjcXVpcmUoYikKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQotICAgICAgICAgICAgaWYgcmI6Ci0gICAgICAgICAgICAgICAgYi5yZWxlYXNlKCkKLSAgICAgICAgICAgIGlmIHJhOgotICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCi0gICAgICAgIGxvY2tfdGVzdHMuQnVuY2goZiwgTlRIUkVBRFMpLndhaXRfZm9yX2ZpbmlzaGVkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQotICAgICAgICByZXR1cm4gcmVzdWx0cworICAgICAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQorICAgICAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQorICAgICAgICAgICAgcmVzdWx0cyA9IFtdCiAKLSAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKLSAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KFRydWUpCi0gICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cwotICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCi0gICAgICAgICMgZGVhZGxvY2sgYXZvaWRhbmNlIG1lY2hhbmlzbSBpcyBjb25zZXJ2YXRpdmUuCi0gICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpIC0gbmJfZGVhZGxvY2tzKQorICAgICAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgorICAgICAgICAgICAgICAgICIiIlRyeSB0byBhY3F1aXJlIHRoZSBsb2NrLiBSZXR1cm4gVHJ1ZSBvbiBzdWNjZXNzLAorICAgICAgICAgICAgICAgIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5EZWFkbG9ja0Vycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBhLCBiID0gcGFpcnMucG9wKCkKKyAgICAgICAgICAgICAgICByYSA9IF9hY3F1aXJlKGEpCisgICAgICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgICAgICByYiA9IF9hY3F1aXJlKGIpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHJhLCByYikpCisgICAgICAgICAgICAgICAgaWYgcmI6CisgICAgICAgICAgICAgICAgICAgIGIucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgaWYgcmE6CisgICAgICAgICAgICAgICAgICAgIGEucmVsZWFzZSgpCisgICAgICAgICAgICBsb2NrX3Rlc3RzLkJ1bmNoKGYsIE5USFJFQURTKS53YWl0X2Zvcl9maW5pc2hlZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgTlRIUkVBRFMpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cwogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICJ0aHJlYWRzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKLWNsYXNzIEZyb3plbl9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzKERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBMb2NrVHlwZSA9IGZyb3plbl9ib290c3RyYXAuX01vZHVsZUxvY2sKLSAgICBEZWFkbG9ja0Vycm9yID0gZnJvemVuX2Jvb3RzdHJhcC5fRGVhZGxvY2tFcnJvcgorICAgICAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQorICAgICAgICAgICAgIyBBdCBsZWFzdCBvbmUgb2YgdGhlIHRocmVhZHMgZGV0ZWN0ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgb24gaXRzCisgICAgICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAjIGRlYWRsb2NrIGF2b2lkYW5jZSBtZWNoYW5pc20gaXMgY29uc2VydmF0aXZlLgorICAgICAgICAgICAgbmJfZGVhZGxvY2tzID0gcmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIG5iX2RlYWRsb2NrcykKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAidGhyZWFkcyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi1jbGFzcyBTb3VyY2VfRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyhEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgTG9ja1R5cGUgPSBzb3VyY2VfYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCi0gICAgRGVhZGxvY2tFcnJvciA9IHNvdXJjZV9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKyAgICAgICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6CisgICAgICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorCisKKyAgICBERUFETE9DS19FUlJPUlMgPSB7a2luZDogc3BsaXRpbml0Ll9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGtpbmQsIHNwbGl0aW5pdCBpbiBpbml0Lml0ZW1zKCl9CisKKyAgICAoRnJvemVuX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgIFNvdXJjZV9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzCisgICAgICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tUeXBlPUxPQ0tfVFlQRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYWRsb2NrRXJyb3I9REVBRExPQ0tfRVJST1JTKQorZWxzZToKKyAgICBERUFETE9DS19FUlJPUlMgPSB7fQorCisgICAgY2xhc3MgRnJvemVuX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBTb3VyY2VfRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIHBhc3MKIAogCiBjbGFzcyBMaWZldGltZVRlc3RzOgogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJvb3RzdHJhcChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwCisKICAgICBkZWYgdGVzdF9sb2NrX2xpZmV0aW1lKHNlbGYpOgogICAgICAgICBuYW1lID0gInh5enp5IgogICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHNlbGYuYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCkBAIC0xMzUsMTEgKzE1NiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihzZWxmLmJvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQogCi1jbGFzcyBGcm96ZW5fTGlmZXRpbWVUZXN0cyhMaWZldGltZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gZnJvemVuX2Jvb3RzdHJhcAogCi1jbGFzcyBTb3VyY2VfTGlmZXRpbWVUZXN0cyhMaWZldGltZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gc291cmNlX2Jvb3RzdHJhcAorKEZyb3plbl9MaWZldGltZVRlc3RzLAorIFNvdXJjZV9MaWZldGltZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTGlmZXRpbWVUZXN0cywgaW5pdD1pbml0KQogCiAKIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CmluZGV4IDcxNTQxZjYuLjhiMzMzZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKQEAgLTEsMTAgKzEsOCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCiAKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl9ib290c3RyYXAgPSBmcm96ZW5faW5pdC5fYm9vdHN0cmFwCi1zb3VyY2VfYm9vdHN0cmFwID0gc291cmNlX2luaXQuX2Jvb3RzdHJhcAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCi1mcm96ZW5fdXRpbCwgc291cmNlX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK3V0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IENsZWFuSW1wb3J0CkBAIC0zNiw2ICszNCw5IEBACiAgICAgZGVmIF9pc19wYWNrYWdlKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5wYWNrYWdlCiAKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogCiBjbGFzcyBOZXdMb2FkZXIoVGVzdExvYWRlcik6CiAKQEAgLTUyLDYgKzUzLDggQEAKICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogCisgICAgICAgIGZyb3plbl91dGlsID0gdXRpbFsnRnJvemVuJ10KKwogICAgICAgICBAZnJvemVuX3V0aWwubW9kdWxlX2Zvcl9sb2FkZXIKICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICBtb2R1bGUuaGFtID0gc2VsZi5IQU0KQEAgLTIyMSwxOCArMjI0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2Nfc3BlYy5jYWNoZWQsICdzcGFtLnB5YycpCiAKIAotY2xhc3MgRnJvemVuX01vZHVsZVNwZWNUZXN0cyhNb2R1bGVTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5Ci0KLQotY2xhc3MgU291cmNlX01vZHVsZVNwZWNUZXN0cyhNb2R1bGVTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICB1dGlsID0gc291cmNlX3V0aWwKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5CisoRnJvemVuX01vZHVsZVNwZWNUZXN0cywKKyBTb3VyY2VfTW9kdWxlU3BlY1Rlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTW9kdWxlU3BlY1Rlc3RzLCB1dGlsPXV0aWwsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgTW9kdWxlU3BlY01ldGhvZHNUZXN0czoKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBib290c3RyYXAoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcAorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLm5hbWUgPSAnc3BhbScKICAgICAgICAgc2VsZi5wYXRoID0gJ3NwYW0ucHknCkBAIC0yNDMsMTUyICsyNDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luPXNlbGYucGF0aCkKICAgICAgICAgc2VsZi5sb2Nfc3BlYy5fc2V0X2ZpbGVhdHRyID0gVHJ1ZQogCi0gICAgIyBpbml0X21vZHVsZV9hdHRycwotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnMoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKHNlbGYubmFtZSwgc2VsZi5sb2FkZXIpCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19zcGVjX18sIHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKHNlbGYubmFtZSwgc2VsZi5sb2FkZXIpCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbJ3NwYW0nLCAnaGFtJ10KLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBzcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIHNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX3NwZWNfXywgc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19wYXRoX18sIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19jYWNoZWRfXycpKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfbG9jYXRpb24oc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIHNwZWMgPSBzZWxmLmxvY19zcGVjCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19zcGVjX18sIHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2ZpbGVfXywgc3BlYy5vcmlnaW4pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fY2FjaGVkX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNwZWMub3JpZ2luKSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2RpZmZlcmVudF9uYW1lKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoJ2VnZ3MnKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0KLSAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRyc19kaWZmZXJlbnRfc3BlYyhzZWxmKToKLSAgICAgICAgbW9kdWxlID0gdHlwZShzeXMpKHNlbGYubmFtZSkKLSAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygnZWdncycsIG9iamVjdCgpKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIHNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fc3BlY19fLCBzcGVjKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfYWxyZWFkeV9zZXQoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKSgnaGFtLmVnZ3MnKQotICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IG9iamVjdCgpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9ICdoYW0nCi0gICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFsnZWdncyddCi0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9ICdoYW0vZWdncy9fX2luaXRfXy5weScKLSAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKQotICAgICAgICBvcmlnaW5hbCA9IHZhcnMobW9kdWxlKS5jb3B5KCkKLSAgICAgICAgc3BlYyA9IHNlbGYubG9jX3NwZWMKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFsnJ10KLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBvcmlnaW5hbFsnX19sb2FkZXJfXyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgb3JpZ2luYWxbJ19fcGFja2FnZV9fJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fcGF0aF9fLCBvcmlnaW5hbFsnX19wYXRoX18nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIG9yaWdpbmFsWydfX2ZpbGVfXyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLCBvcmlnaW5hbFsnX19jYWNoZWRfXyddKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfaW1tdXRhYmxlKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSBvYmplY3QoKQotICAgICAgICBzcGVjID0gc2VsZi5sb2Nfc3BlYwotICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gWycnXQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX25hbWVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fc3BlY19fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nKSkKLQotICAgICMgY3JlYXRlKCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZShzZWxmKToKLSAgICAgICAgY3JlYXRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmNyZWF0ZSgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fbmFtZV9fLCBzZWxmLnNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX3BhY2thZ2VfXywgc2VsZi5zcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fc3BlY19fLCBzZWxmLnNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2ZpbGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2xvYWRlcihzZWxmKToKLSAgICAgICAgbW9kdWxlID0gdHlwZShzeXMuaW1wbGVtZW50YXRpb24pKCkKLSAgICAgICAgY2xhc3MgQ3JlYXRpbmdMb2FkZXIoVGVzdExvYWRlcik6Ci0gICAgICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBDcmVhdGluZ0xvYWRlcigpCi0gICAgICAgIGNyZWF0ZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZCwgbW9kdWxlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19uYW1lX18sIHNlbGYuc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19sb2FkZXJfXywgc2VsZi5zcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fcGFja2FnZV9fLCBzZWxmLnNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19zcGVjX18sIHNlbGYuc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19jYWNoZWRfXycpKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fbG9hZGVyX25vdF9oYW5kbGVkKHNlbGYpOgotICAgICAgICBjbGFzcyBDcmVhdGluZ0xvYWRlcihUZXN0TG9hZGVyKToKLSAgICAgICAgICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBDcmVhdGluZ0xvYWRlcigpCi0gICAgICAgIGNyZWF0ZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX25hbWVfXywgc2VsZi5zcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX2xvYWRlcl9fLCBzZWxmLnNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19wYWNrYWdlX18sIHNlbGYuc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX3NwZWNfXywgc2VsZi5zcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fcGF0aF9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2NhY2hlZF9fJykpCi0KICAgICAjIGV4ZWMoKQogCiAgICAgZGVmIHRlc3RfZXhlYyhzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCi0gICAgICAgIG1vZHVsZSA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmNyZWF0ZSgpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNlbGYuc3BlYykKICAgICAgICAgc3lzLm1vZHVsZXNbc2VsZi5uYW1lXSA9IG1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnZWdncycpKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKG1vZHVsZSkKKyAgICAgICAgc2VsZi5ib290c3RyYXAuX2V4ZWMoc2VsZi5zcGVjLCBtb2R1bGUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuZWdncywgMSkKIApAQCAtMzk3LDcgKzI2MSw3IEBACiAgICAgZGVmIHRlc3RfbG9hZChzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBpbnN0YWxsZWQgPSBzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5lZ2dzLCAxKQpAQCAtNDEwLDcgKzI3NCw3IEBACiAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fXSA9IHJlcGxhY2VtZW50CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBSZXBsYWNpbmdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWQsIHJlcGxhY2VtZW50KQpAQCAtNDIzLDcgKzI4Nyw3IEBACiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBGYWlsZWRMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKHNlbGYuc3BlYy5uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X2xvYWRfZmFpbGVkX3JlbW92ZWQoc2VsZik6CkBAIC00MzQsMjAgKzI5OCwyMCBAQAogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gRmFpbGVkTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihzZWxmLnNwZWMubmFtZSwgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9sb2FkX2xlZ2FjeShzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IExlZ2FjeUxvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuaGFtLCAtMSkKIAogICAgIGRlZiB0ZXN0X2xvYWRfbGVnYWN5X2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBMZWdhY3lMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLl9fcGFja2FnZV9fLCBzZWxmLnNwZWMucGFyZW50KQpAQCAtNDYxLDcgKzMyNSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gSW1tdXRhYmxlTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0sIG1vZHVsZSkKIApAQCAtNDcwLDggKzMzNCw4IEBACiAgICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTmV3TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuZWdncywgMSkKQEAgLTQ4MSw5ICszNDUsOSBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9tb2RpZmllZChzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBsb2FkZWQuZWdncyA9IDIKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLmVnZ3MsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVsb2FkZWQsIGxvYWRlZCkKQEAgLTQ5MSw5ICszNTUsOSBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9leHRyYV9hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTmV3TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKICAgICAgICAgICAgIGxvYWRlZC5hdmFpbGFibGUgPSBGYWxzZQotICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKGxvYWRlZCkKKyAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2V4ZWMoc2VsZi5zcGVjLCBsb2FkZWQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2FkZWQuYXZhaWxhYmxlKQogICAgICAgICBzZWxmLmFzc2VydElzKHJlbG9hZGVkLCBsb2FkZWQpCkBAIC01MDEsMTIgKzM2NSwxMiBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9pbml0X21vZHVsZV9hdHRycyhzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBsb2FkZWQuX19uYW1lX18gPSAnaGFtJwogICAgICAgICAgICAgZGVsIGxvYWRlZC5fX2xvYWRlcl9fCiAgICAgICAgICAgICBkZWwgbG9hZGVkLl9fcGFja2FnZV9fCiAgICAgICAgICAgICBkZWwgbG9hZGVkLl9fc3BlY19fCi0gICAgICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKGxvYWRlZCkKKyAgICAgICAgICAgIHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLl9fbmFtZV9fLCBzZWxmLnNwZWMubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWQuX19sb2FkZXJfXywgc2VsZi5zcGVjLmxvYWRlcikKQEAgLTUxOSw4ICszODMsOCBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9sZWdhY3koc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBMZWdhY3lMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQotICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5leGVjKGxvYWRlZCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKKyAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2V4ZWMoc2VsZi5zcGVjLCBsb2FkZWQpCiAgICAgICAgICAgICBpbnN0YWxsZWQgPSBzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5oYW0sIC0xKQpAQCAtNTI4LDIwICszOTIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnN0YWxsZWQsIGxvYWRlZCkKIAogCi1jbGFzcyBGcm96ZW5fTW9kdWxlU3BlY01ldGhvZHNUZXN0cyhNb2R1bGVTcGVjTWV0aG9kc1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gZnJvemVuX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotCi1jbGFzcyBTb3VyY2VfTW9kdWxlU3BlY01ldGhvZHNUZXN0cyhNb2R1bGVTcGVjTWV0aG9kc1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gc291cmNlX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fTW9kdWxlU3BlY01ldGhvZHNUZXN0cywKKyBTb3VyY2VfTW9kdWxlU3BlY01ldGhvZHNUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKE1vZHVsZVNwZWNNZXRob2RzVGVzdHMsIGluaXQ9aW5pdCwgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgTW9kdWxlUmVwclRlc3RzOgogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJvb3RzdHJhcChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubW9kdWxlID0gdHlwZShvcykoJ3NwYW0nKQogICAgICAgICBzZWxmLnNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCdzcGFtJywgVGVzdExvYWRlcigpKQpAQCAtNjI1LDE2ICs0ODcsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RyZXByLCAnPG1vZHVsZSB7IXJ9PicuZm9ybWF0KCdzcGFtJykpCiAKIAotY2xhc3MgRnJvemVuX01vZHVsZVJlcHJUZXN0cyhNb2R1bGVSZXByVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBib290c3RyYXAgPSBmcm96ZW5fYm9vdHN0cmFwCi0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotCi0KLWNsYXNzIFNvdXJjZV9Nb2R1bGVSZXByVGVzdHMoTW9kdWxlUmVwclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gc291cmNlX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fTW9kdWxlUmVwclRlc3RzLAorIFNvdXJjZV9Nb2R1bGVSZXByVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNb2R1bGVSZXByVGVzdHMsIGluaXQ9aW5pdCwgdXRpbD11dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgRmFjdG9yeVRlc3RzOgpAQCAtNzg3LDEzICs2NDMsMTQgQEAKICAgICAjIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKCkKIAogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubWFjaGluZXJ5IGlzIHNvdXJjZV9tYWNoaW5lcnk6Ci0gICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnbm90IHN1cmUgd2h5IHRoaXMgaXMgYnJlYWtpbmcuLi4nKQogICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwgc2VsZi5wYXRoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5uYW1lLCBzZWxmLm5hbWUpCisgICAgICAgICMgTmVlZCB0byB1c2UgYSBjaXJjdWl0b3VzIHJvdXRlIHRvIGdldCBhdCBpbXBvcnRsaWIubWFjaGluZXJ5IHRvIG1ha2UKKyAgICAgICAgIyBzdXJlIHRoZSBzYW1lIGNsYXNzIG9iamVjdCBpcyB1c2VkIGluIHRoZSBpc2luc3RhbmNlKCkgY2hlY2sgYXMKKyAgICAgICAgIyB3b3VsZCBoYXZlIGJlZW4gdXNlZCB0byBjcmVhdGUgdGhlIGxvYWRlci4KICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNwZWMubG9hZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5hYmMubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5sb2FkZXIubmFtZSwgc2VsZi5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLnBhdGgsIHNlbGYucGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLm9yaWdpbiwgc2VsZi5wYXRoKQpAQCAtOTQ3LDExICs4MDQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNwZWMuaGFzX2xvY2F0aW9uKQogCiAKLWNsYXNzIEZyb3plbl9GYWN0b3J5VGVzdHMoRmFjdG9yeVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQorKEZyb3plbl9GYWN0b3J5VGVzdHMsCisgU291cmNlX0ZhY3RvcnlUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZhY3RvcnlUZXN0cywgdXRpbD11dGlsLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKLWNsYXNzIFNvdXJjZV9GYWN0b3J5VGVzdHMoRmFjdG9yeVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCi0gICAgbWFjaGluZXJ5ID0gc291cmNlX21hY2hpbmVyeQoraWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCBiMjgyM2M2Li42OTQ2NmIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC0xLDEwICsxLDExIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvemVuX2luaXQsIHNvdXJjZV9pbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQotZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK2Zyb20gLiBpbXBvcnQgdXRpbAorYWJjID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIuYWJjJykKK2luaXQgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQoraW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB0eXBlcwpAQCAtMzIsOCArMzMsOTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdcbicuam9pbihbc2VsZi5zb3VyY2UsIHNlbGYuc291cmNlXSkpCiAKLUZyb3plbl9EZWNvZGVTb3VyY2VCeXRlc1Rlc3RzLCBTb3VyY2VfRGVjb2RlU291cmNlQnl0ZXNUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIERlY29kZVNvdXJjZUJ5dGVzVGVzdHMsIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fRGVjb2RlU291cmNlQnl0ZXNUZXN0cywKKyBTb3VyY2VfRGVjb2RlU291cmNlQnl0ZXNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChEZWNvZGVTb3VyY2VCeXRlc1Rlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisKK2NsYXNzIE1vZHVsZUZyb21TcGVjVGVzdHM6CisKKyAgICBkZWYgdGVzdF9ub19jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBjbGFzcyBMb2FkZXI6CisgICAgICAgICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY3JlYXRlX21vZHVsZScsIHN0cih3WzBdLm1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX21vZHVsZV9yZXR1cm5zX05vbmUoc2VsZik6CisgICAgICAgIGNsYXNzIExvYWRlcihzZWxmLmFiYy5Mb2FkZXIpOgorICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBMb2FkZXIoKSkKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnYWxyZWFkeSBzZXQnCisgICAgICAgIGNsYXNzIEN1c3RvbU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CisgICAgICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBDdXN0b21Nb2R1bGUoc3BlYy5uYW1lKQorICAgICAgICAgICAgICAgIG1vZHVsZS5fX25hbWVfXyA9IG5hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIEN1c3RvbU1vZHVsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9fX25hbWVfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBvYmplY3QoKSkKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKKworICAgIGRlZiB0ZXN0X19fc3BlY19fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3NwZWNfXywgc3BlYykKKworICAgIGRlZiB0ZXN0X19fbG9hZGVyX18oc2VsZik6CisgICAgICAgIGxvYWRlciA9IG9iamVjdCgpCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgbG9hZGVyKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisKKyAgICBkZWYgdGVzdF9fX3BhY2thZ2VfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QucGtnJywgb2JqZWN0KCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKKworICAgIGRlZiB0ZXN0X19fcGF0aF9fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpLCBpc19wYWNrYWdlPVRydWUpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zKQorCisgICAgZGVmIHRlc3RfX19maWxlX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0Jywgb2JqZWN0KCksIG9yaWdpbj0nc29tZS9wYXRoJykKKyAgICAgICAgc3BlYy5oYXNfbG9jYXRpb24gPSBUcnVlCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBzcGVjLm9yaWdpbikKKworICAgIGRlZiB0ZXN0X19fY2FjaGVkX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0Jywgb2JqZWN0KCkpCisgICAgICAgIHNwZWMuY2FjaGVkID0gJ3NvbWUvcGF0aCcKKyAgICAgICAgc3BlYy5oYXNfbG9jYXRpb24gPSBUcnVlCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fY2FjaGVkX18sIHNwZWMuY2FjaGVkKQorCisoRnJvemVuX01vZHVsZUZyb21TcGVjVGVzdHMsCisgU291cmNlX01vZHVsZUZyb21TcGVjVGVzdHMKKykgPSB1dGlsLnRlc3RfYm90aChNb2R1bGVGcm9tU3BlY1Rlc3RzLCBhYmM9YWJjLCBtYWNoaW5lcnk9bWFjaGluZXJ5LAorICAgICAgICAgICAgICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHM6CkBAIC03MCw3ICsxNTcsNyBAQAogICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCiAgICAgICAgICMgY3JlYXRlZC4KICAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShtb2R1bGVfbmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobW9kdWxlX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKQEAgLTg4LDcgKzE3NSw3IEBACiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoJ2EuYi5jJykKICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSA0MgogICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSA0MgotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAgICAgICAgICAgICBsb2FkZXIgPSBGYWtlTG9hZGVyKCkKICAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQpAQCAtMTAwLDcgKzE4Nyw3IEBACiAgICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcyBpZiBhZGRlZCBidXQgYW4KICAgICAgICAgIyBleGNlcHRpb24gaXMgcmFpc2VkLgogICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQogCkBAIC0xMDgsNyArMTk1LDcgQEAKICAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KICAgICAgICAgbmFtZSA9ICdhLmIuYycKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCiAgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQpAQCAtMTI3LDcgKzIxNCw3IEBACiAKICAgICAgICAgbmFtZSA9ICdtb2QnCiAgICAgICAgIG1vZHVsZSA9IEZhbHNlTW9kdWxlKG5hbWUpCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGUpCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgZ2l2ZW4gPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKQEAgLTE0Niw3ICsyMzMsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKIAogICAgICAgICBuYW1lID0gJ3BrZy5tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihGYWxzZSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCkBAIC0xNTQsMTUgKzI0MSwxNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sICdwa2cnKQogCiAgICAgICAgIG5hbWUgPSAncGtnLnN1YicKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBsb2FkZXIgPSBGYWtlTG9hZGVyKFRydWUpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIG5hbWUpCiAKLUZyb3plbl9Nb2R1bGVGb3JMb2FkZXJUZXN0cywgU291cmNlX01vZHVsZUZvckxvYWRlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTW9kdWxlRm9yTG9hZGVyVGVzdHMsIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fTW9kdWxlRm9yTG9hZGVyVGVzdHMsCisgU291cmNlX01vZHVsZUZvckxvYWRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE1vZHVsZUZvckxvYWRlclRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFNldFBhY2thZ2VUZXN0czoKQEAgLTIyMiwxOCArMzExLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQogCi1Gcm96ZW5fU2V0UGFja2FnZVRlc3RzLCBTb3VyY2VfU2V0UGFja2FnZVRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU2V0UGFja2FnZVRlc3RzLCB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX1NldFBhY2thZ2VUZXN0cywKKyBTb3VyY2VfU2V0UGFja2FnZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFNldFBhY2thZ2VUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBTZXRMb2FkZXJUZXN0czoKIAogICAgICIiIlRlc3RzIGltcG9ydGxpYi51dGlsLnNldF9sb2FkZXIoKS4iIiIKIAotICAgIGNsYXNzIER1bW15TG9hZGVyOgotICAgICAgICBAdXRpbC5zZXRfbG9hZGVyCi0gICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlCisgICAgQHByb3BlcnR5CisgICAgZGVmIER1bW15TG9hZGVyKHNlbGYpOgorICAgICAgICAjIFNldCBEdW1teUxvYWRlciBvbiB0aGUgY2xhc3MgbGF6aWx5LgorICAgICAgICBjbGFzcyBEdW1teUxvYWRlcjoKKyAgICAgICAgICAgIEBzZWxmLnV0aWwuc2V0X2xvYWRlcgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlCisgICAgICAgIHNlbGYuX19jbGFzc19fLkR1bW15TG9hZGVyID0gRHVtbXlMb2FkZXIKKyAgICAgICAgcmV0dXJuIER1bW15TG9hZGVyCiAKICAgICBkZWYgdGVzdF9ub19hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHNlbGYuRHVtbXlMb2FkZXIoKQpAQCAtMjYyLDE3ICszNTgsMTAgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiwgbG9hZGVyLmxvYWRfbW9kdWxlKCdibGFoJykuX19sb2FkZXJfXykKIAotY2xhc3MgRnJvemVuX1NldExvYWRlclRlc3RzKFNldExvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY2xhc3MgRHVtbXlMb2FkZXI6Ci0gICAgICAgIEBmcm96ZW5fdXRpbC5zZXRfbG9hZGVyCi0gICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlCiAKLWNsYXNzIFNvdXJjZV9TZXRMb2FkZXJUZXN0cyhTZXRMb2FkZXJUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNsYXNzIER1bW15TG9hZGVyOgotICAgICAgICBAc291cmNlX3V0aWwuc2V0X2xvYWRlcgotICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorKEZyb3plbl9TZXRMb2FkZXJUZXN0cywKKyBTb3VyY2VfU2V0TG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoU2V0TG9hZGVyVGVzdHMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgUmVzb2x2ZU5hbWVUZXN0czoKQEAgLTMwNyw5ICszOTYsMTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudXRpbC5yZXNvbHZlX25hbWUoJy4uYmFjb24nLCAnc3BhbScpCiAKLUZyb3plbl9SZXNvbHZlTmFtZVRlc3RzLCBTb3VyY2VfUmVzb2x2ZU5hbWVUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFJlc29sdmVOYW1lVGVzdHMsCi0gICAgICAgIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fUmVzb2x2ZU5hbWVUZXN0cywKKyBTb3VyY2VfUmVzb2x2ZU5hbWVUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChSZXNvbHZlTmFtZVRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIEZpbmRTcGVjVGVzdHM6CkBAIC0zMjAsNyArNDEwLDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCiAgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhuYW1lLCBsb2FkZXIpCkBAIC0zMzIsNyArNDIyLDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX3dpdGhvdXRfX19sb2FkZXJfXyhzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBkZWwgbW9kdWxlLl9fbG9hZGVyX18KICAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCkBAIC0zNDQsNyArNDM0LDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX3NwZWNfaXNfTm9uZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBOb25lCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQpAQCAtMzUzLDcgKzQ0Myw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19sb2FkZXJfaXNfTm9uZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhuYW1lLCBOb25lKQogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwpAQCAtMzYzLDcgKzQ1Myw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19zcGVjX2lzX25vdF9zZXQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGRlbCBtb2R1bGUuX19zcGVjX18KQEAgLTM3NSwyMCArNDY1LDExIEBACiAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgTm9uZSwgTm9uZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuZmluZF9zcGVjKG5hbWUpKQogCi0jICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfcGF0aChzZWxmKToKLSMgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KLSMgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0jICAgICAgICBwYXRoID0gJ3BhdGggdG8gc29tZSBwbGFjZScKLSMgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6Ci0jICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgotIyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoLCBOb25lKSwKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuZmluZF9zcGVjKG5hbWUsIHBhdGgpKQotCiAgICAgZGVmIHRlc3Rfbm90aGluZyhzZWxmKToKICAgICAgICAgIyBOb25lIGlzIHJldHVybmVkIHVwb24gZmFpbHVyZSB0byBmaW5kIGEgbG9hZGVyLgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLnV0aWwuZmluZF9zcGVjKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQpAQCAtMzk2LDggKzQ3Nyw4IEBACiAgICAgZGVmIHRlc3RfZmluZF9zdWJtb2R1bGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgotICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgIHdpdGggdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKKyAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKICAgICAgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuZmluZF9zcGVjKGZ1bGxuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzcGVjLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzb3J0ZWQoc3lzLm1vZHVsZXMpKQpAQCAtNDA5LDkgKzQ5MCw5IEBACiAgICAgZGVmIHRlc3RfZmluZF9zdWJtb2R1bGVfcGFyZW50X2FscmVhZHlfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CiAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShuYW1lKQotICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICBzcGVjID0gc2VsZi51dGlsLmZpbmRfc3BlYyhmdWxsbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3BlYywgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc29ydGVkKHN5cy5tb2R1bGVzKSkKQEAgLTQyMyw4ICs1MDQsOCBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfcmVsYXRpdmVfbW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdGVzdF91dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQorICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICByZWxuYW1lID0gJy4nICsgc3VibmFtZQogICAgICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5maW5kX3NwZWMocmVsbmFtZSwgbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3BlYywgTm9uZSkKQEAgLTQzNyw4ICs1MTgsOCBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfcmVsYXRpdmVfbW9kdWxlX21pc3NpbmdfcGFja2FnZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzcGFtJwogICAgICAgICBzdWJuYW1lID0gJ2hhbScKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6Ci0gICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHRlc3RfdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKKyAgICAgICAgd2l0aCB1dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB1dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQogICAgICAgICAgICAgcmVsbmFtZSA9ICcuJyArIHN1Ym5hbWUKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmZpbmRfc3BlYyhyZWxuYW1lKQpAQCAtNDQ2LDE1ICs1MjcsMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oZnVsbG5hbWUsIHNvcnRlZChzeXMubW9kdWxlcykpCiAKIAotY2xhc3MgRnJvemVuX0ZpbmRTcGVjVGVzdHMoRmluZFNwZWNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBmcm96ZW5faW5pdAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotY2xhc3MgU291cmNlX0ZpbmRTcGVjVGVzdHMoRmluZFNwZWNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBpbml0PWluaXQsIHV0aWw9aW1wb3J0bGliX3V0aWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBNYWdpY051bWJlclRlc3RzOgpAQCAtNDY3LDggKzU0MywxMCBAQAogICAgICAgICAjIFRoZSBtYWdpYyBudW1iZXIgdXNlcyBcclxuIHRvIGNvbWUgb3V0IHdyb25nIHdoZW4gc3BsaXR0aW5nIG9uIGxpbmVzLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi51dGlsLk1BR0lDX05VTUJFUi5lbmRzd2l0aChiJ1xyXG4nKSkKIAotRnJvemVuX01hZ2ljTnVtYmVyVGVzdHMsIFNvdXJjZV9NYWdpY051bWJlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTWFnaWNOdW1iZXJUZXN0cywgdXRpbD1bZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsXSkKKworKEZyb3plbl9NYWdpY051bWJlclRlc3RzLAorIFNvdXJjZV9NYWdpY051bWJlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE1hZ2ljTnVtYmVyVGVzdHMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgUEVQMzE0N1Rlc3RzOgpAQCAtNDg1LDcgKzU2Myw4IEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCiAgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fY2FjaGVfdGFnKHNlbGYpOgogICAgICAgICAjIE5vIGNhY2hlIHRhZyBtZWFucyBOb3RJbXBsZW1lbnRlZEVycm9yLgpAQCAtNDk4LDQzICs1NzcsMTAzIEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnZmlsZScpCiAgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdfX3B5Y2FjaGVfXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCiAKLSAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6ZWQoc2VsZik6Ci0gICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwotICAgICAgICAjIGRlZmluZWQgLnB5byBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9kZWJ1Z19vdmVycmlkZShzZWxmKToKKyAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3L1BFUCA0ODgKKyAgICAgICAgIyBkZWZpbmVkIC5weWMgZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCi0gICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIEZhbHNlKSwgZXhwZWN0KQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249MSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJykpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX2N3ZChzZWxmKToKICAgICAgICAgcGF0aCA9ICdmb28ucHknCiAgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vdmVycmlkZShzZWxmKToKICAgICAgICAgIyBXaGVuIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCBpdCBjYW4gYmUgYW55IHRydWUtaXNoIG9yIGZhbHNlLWlzaAogICAgICAgICAjIHZhbHVlLgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2Jhei5weScpCi0gICAgICAgIHBhcnRpYWxfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhei57fS5weScuZm9ybWF0KHNlbGYudGFnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgW10pLCBwYXJ0aWFsX2V4cGVjdCArICdvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCiAgICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KICAgICAgICAgIyBwcm9wYWdhdGVzLgogICAgICAgICBjbGFzcyBCZWFyaXNoOgogICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0xKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIEJlYXJpc2goKSkKKworCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemF0aW9uX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBTZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvICcnIGxlYWRzIHRvIG5vIG9wdGltaXphdGlvbiB0YWcgKFBFUCA0ODgpLgorICAgICAgICBwYXRoID0gJ2Zvby5weScKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXphdGlvbl9Ob25lKHNlbGYpOgorICAgICAgICAjIFNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gTm9uZSB1c2VzIHRoZSBpbnRlcnByZXRlcidzIG9wdGltaXphdGlvbi4KKyAgICAgICAgIyAoUEVQIDQ4OCkKKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIG9wdGltaXphdGlvbl9sZXZlbCA9IHN5cy5mbGFncy5vcHRpbWl6ZQorICAgICAgICBhbG1vc3RfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30nLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGlmIG9wdGltaXphdGlvbl9sZXZlbCA9PSAwOgorICAgICAgICAgICAgZXhwZWN0ID0gYWxtb3N0X2V4cGVjdCArICcucHljJworICAgICAgICBlbGlmIG9wdGltaXphdGlvbl9sZXZlbCA8PSAyOgorICAgICAgICAgICAgZXhwZWN0ID0gYWxtb3N0X2V4cGVjdCArICcub3B0LXt9LnB5YycuZm9ybWF0KG9wdGltaXphdGlvbl9sZXZlbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICd7IXJ9IGlzIGEgbm9uLXN0YW5kYXJkIG9wdGltaXphdGlvbiBsZXZlbCcuZm9ybWF0KG9wdGltaXphdGlvbl9sZXZlbCkKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249Tm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemF0aW9uX3NldChzZWxmKToKKyAgICAgICAgIyBUaGUgJ29wdGltaXphdGlvbicgcGFyYW1ldGVyIGFjY2VwdHMgYW55dGhpbmcgdGhhdCBoYXMgYSBzdHJpbmcgcmVwcgorICAgICAgICAjIHRoYXQgcGFzc2VzIHN0ci5hbG51bSgpLgorICAgICAgICBwYXRoID0gJ2Zvby5weScKKyAgICAgICAgdmFsaWRfY2hhcmFjdGVycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgICAgICBhbG1vc3RfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30nLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGdvdCA9IHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249dmFsaWRfY2hhcmFjdGVycykKKyAgICAgICAgIyBUZXN0IGFsbCB2YWxpZCBjaGFyYWN0ZXJzIGFyZSBhY2NlcHRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWxtb3N0X2V4cGVjdCArICcub3B0LXt9LnB5YycuZm9ybWF0KHZhbGlkX2NoYXJhY3RlcnMpKQorICAgICAgICAjIHN0cigpIHNob3VsZCBiZSBjYWxsZWQgb24gYXJndW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj00MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWxtb3N0X2V4cGVjdCArICcub3B0LTQyLnB5YycpCisgICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXJzIHJhaXNlIFZhbHVlRXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPSdwYXRoL2lzL2JhZCcpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9kZWJ1Z19vdmVycmlkZV9vcHRpbWl6YXRpb25fYm90aF9zZXQoc2VsZik6CisgICAgICAgICMgQ2FuIG9ubHkgc2V0IG9uZSBvZiB0aGUgb3B0aW1pemF0aW9uLXJlbGF0ZWQgcGFyYW1ldGVycy4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywgRmFsc2UsIG9wdGltaXphdGlvbj0nJykKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnNlcCA9PSAnXFwnIGFuZCBvcy5hbHRzZXAgPT0gJy8nLAogICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZXJlIG9zLmFsdHNlcCBpcyBkZWZpbmVkJykKICAgICBkZWYgdGVzdF9zZXBfYWx0c2VwX2FuZF9zZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0NyB3aGVyZSBzZXAgaXMgcmlnaHQgb2YgYWx0c2VwLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXovcXV4LnB5JywgVHJ1ZSksCisgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBvcHRpbWl6YXRpb249JycpLAogICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLApAQCAtNTcyLDcgKzcxMSwxMiBAQAogICAgICAgICAgICAgVmFsdWVFcnJvciwgc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlLCAnX19weWNhY2hlX18vZm9vLnB5YycpCiAKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV90b29fbWFueV9kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBtYW55IGRvdHMgaW4gZmluYWwgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKAorICAgICAgICAgICAgICAgICAgICAnX19weWNhY2hlX18vZm9vLmNweXRob24tMzIub3B0LTEuZm9vLnB5YycpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub3Rfb3B0KHNlbGYpOgorICAgICAgICAjIE5vbi1gb3B0LWAgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwKICAgICAgICAgICAgICdfX3B5Y2FjaGVfXy9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKQEAgLTU4Myw5ICs3MjcsMjEgQEAKICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwKICAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKIAotRnJvemVuX1BFUDMxNDdUZXN0cywgU291cmNlX1BFUDMxNDdUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBFUDMxNDdUZXN0cywKLSAgICAgICAgdXRpbD1bZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsXSkKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9vcHRpbWl6ZWRfYnl0ZWNvZGUoc2VsZik6CisgICAgICAgICMgT3B0aW1pemVkIGJ5dGVjb2RlIGlzIG5vdCBhbiBpc3N1ZS4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9Lm9wdC0xLnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksICdmb28ucHknKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbWlzc2luZ19vcHRpbWl6YXRpb24oc2VsZik6CisgICAgICAgICMgQW4gZW1wdHkgb3B0aW1pemF0aW9uIGxldmVsIGlzIGEgbm8tbm8uCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5vcHQtLnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQorCisKKyhGcm96ZW5fUEVQMzE0N1Rlc3RzLAorIFNvdXJjZV9QRVAzMTQ3VGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUEVQMzE0N1Rlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggOTZiNGFkYy4uYzg5M2JjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtMSwxNCArMSw2NCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCi1mcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAoraW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKK2Zyb20gLnV0aWwgaW1wb3J0IHRlbXBfbW9kdWxlCisKK3N1cHBvcnQuaW1wb3J0X21vZHVsZSgnd2lucmVnJywgcmVxdWlyZWRfb249Wyd3aW4nXSkKK2Zyb20gd2lucmVnIGltcG9ydCAoCisgICAgQ3JlYXRlS2V5LCBIS0VZX0NVUlJFTlRfVVNFUiwKKyAgICBTZXRWYWx1ZSwgUkVHX1NaLCBLRVlfQUxMX0FDQ0VTUywKKyAgICBFbnVtS2V5LCBDbG9zZUtleSwgRGVsZXRlS2V5LCBPcGVuS2V5CispCisKK2RlZiBkZWxldGVfcmVnaXN0cnlfdHJlZShyb290LCBzdWJrZXkpOgorICAgIHRyeToKKyAgICAgICAgaGtleSA9IE9wZW5LZXkocm9vdCwgc3Via2V5LCBhY2Nlc3M9S0VZX0FMTF9BQ0NFU1MpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICMgc3Via2V5IGRvZXMgbm90IGV4aXN0CisgICAgICAgIHJldHVybgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnN1YmtleSA9IEVudW1LZXkoaGtleSwgMCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIG5vIG1vcmUgc3Via2V5cworICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZGVsZXRlX3JlZ2lzdHJ5X3RyZWUoaGtleSwgc3Vic3Via2V5KQorICAgIENsb3NlS2V5KGhrZXkpCisgICAgRGVsZXRlS2V5KHJvb3QsIHN1YmtleSkKKworQGNvbnRleHRtYW5hZ2VyCitkZWYgc2V0dXBfbW9kdWxlKG1hY2hpbmVyeSwgbmFtZSwgcGF0aD1Ob25lKToKKyAgICBpZiBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEOgorICAgICAgICByb290ID0gbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5SRUdJU1RSWV9LRVlfREVCVUcKKyAgICBlbHNlOgorICAgICAgICByb290ID0gbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5SRUdJU1RSWV9LRVkKKyAgICBrZXkgPSByb290LmZvcm1hdChmdWxsbmFtZT1uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICB0cnk6CisgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CisgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwYXRoID0gbG9jYXRpb24gKyAiLnB5IgorICAgICAgICAgICAgU2V0VmFsdWUoc3Via2V5LCAiIiwgUkVHX1NaLCBwYXRoKQorICAgICAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEOgorICAgICAgICAgICAga2V5ID0gb3MucGF0aC5kaXJuYW1lKGtleSkKKyAgICAgICAgZGVsZXRlX3JlZ2lzdHJ5X3RyZWUoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICdyZXF1aXJlcyBXaW5kb3dzJykKIGNsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzOgotCi0gICAgIyBYWFggTmVlZCBhIHRlc3QgdGhhdCBmaW5kcyB0aGUgc3BlYyB2aWEgdGhlIHJlZ2lzdHJ5LgorICAgICMgVGhlIG1vZHVsZSBuYW1lIGlzIHByb2Nlc3Mtc3BlY2lmaWMsIGFsbG93aW5nIGZvcgorICAgICMgc2ltdWx0YW5lb3VzIHJ1bnMgb2YgdGhlIHNhbWUgdGVzdCBvbiBhIHNpbmdsZSBtYWNoaW5lLgorICAgIHRlc3RfbW9kdWxlID0gInNwYW1oYW17fSIuZm9ybWF0KG9zLmdldHBpZCgpKQogCiAgICAgZGVmIHRlc3RfZmluZF9zcGVjX21pc3Npbmcoc2VsZik6CiAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9zcGVjKCdzcGFtJykKQEAgLTE4LDEyICs2OCw0MiBAQAogICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9tb2R1bGUoJ3NwYW0nKQogICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9mb3VuZChzZWxmKToKKyAgICAgICAgd2l0aCBzZXR1cF9tb2R1bGUoc2VsZi5tYWNoaW5lcnksIHNlbGYudGVzdF9tb2R1bGUpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfbW9kdWxlKHNlbGYudGVzdF9tb2R1bGUpCisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfc3BlYyhzZWxmLnRlc3RfbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChsb2FkZXIsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHNwZWMsIE5vbmUpCiAKLWNsYXNzIEZyb3plbl9XaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cyhXaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQorICAgIGRlZiB0ZXN0X21vZHVsZV9ub3RfZm91bmQoc2VsZik6CisgICAgICAgIHdpdGggc2V0dXBfbW9kdWxlKHNlbGYubWFjaGluZXJ5LCBzZWxmLnRlc3RfbW9kdWxlLCBwYXRoPSIuIik6CisgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9tb2R1bGUoc2VsZi50ZXN0X21vZHVsZSkKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuZmluZF9zcGVjKHNlbGYudGVzdF9tb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcGVjKQogCisoRnJvemVuX1dpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzLAorIFNvdXJjZV9XaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFdpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCi1jbGFzcyBTb3VyY2VfV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMoV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSwgJ3JlcXVpcmVzIFdpbmRvd3MnKQorY2xhc3MgV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzOgorICAgIGRlZiB0ZXN0X3RhZ2dlZF9zdWZmaXgoc2VsZik6CisgICAgICAgIHN1ZmZpeGVzID0gc2VsZi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTCisgICAgICAgIGV4cGVjdGVkX3RhZyA9ICIuY3B7MC5tYWpvcn17MC5taW5vcn0tezF9LnB5ZCIuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8sCisgICAgICAgICAgICByZS5zdWIoJ1teYS16QS1aMC05XScsICdfJywgZ2V0X3BsYXRmb3JtKCkpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB1bnRhZ2dlZF9pID0gc3VmZml4ZXMuaW5kZXgoIi5weWQiKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHVudGFnZ2VkX2kgPSBzdWZmaXhlcy5pbmRleCgiX2QucHlkIikKKyAgICAgICAgICAgIGV4cGVjdGVkX3RhZyA9ICJfZCIgKyBleHBlY3RlZF90YWcKKworICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkX3RhZywgc3VmZml4ZXMpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIHRhZ3MgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyCisgICAgICAgIHRhZ2dlZF9pID0gc3VmZml4ZXMuaW5kZXgoZXhwZWN0ZWRfdGFnKQorICAgICAgICBzZWxmLmFzc2VydExlc3ModGFnZ2VkX2ksIHVudGFnZ2VkX2kpCisKKyhGcm96ZW5fV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzLAorIFNvdXJjZV9XaW5kb3dzRXh0ZW5zaW9uU3VmZml4VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChXaW5kb3dzRXh0ZW5zaW9uU3VmZml4VGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQppbmRleCA4ODVjZWMzLi5jZTIwMzc3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKQEAgLTEsMzEgKzEsODUgQEAKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKLWZyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsLCBpbnZhbGlkYXRlX2NhY2hlcworaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGVycm5vCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgaW1wb3J0bGliCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5LCB1dGlsLCBpbnZhbGlkYXRlX2NhY2hlcworaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHR5cGVzCiAKIAorQlVJTFRJTlMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorQlVJTFRJTlMuZ29vZF9uYW1lID0gTm9uZQorQlVJTFRJTlMuYmFkX25hbWUgPSBOb25lCitpZiAnZXJybm8nIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKKyAgICBCVUlMVElOUy5nb29kX25hbWUgPSAnZXJybm8nCitpZiAnaW1wb3J0bGliJyBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgorICAgIEJVSUxUSU5TLmJhZF9uYW1lID0gJ2ltcG9ydGxpYicKKworRVhURU5TSU9OUyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCitFWFRFTlNJT05TLnBhdGggPSBOb25lCitFWFRFTlNJT05TLmV4dCA9IE5vbmUKK0VYVEVOU0lPTlMuZmlsZW5hbWUgPSBOb25lCitFWFRFTlNJT05TLmZpbGVfcGF0aCA9IE5vbmUKK0VYVEVOU0lPTlMubmFtZSA9ICdfdGVzdGNhcGknCisKK2RlZiBfZXh0ZW5zaW9uX2RldGFpbHMoKToKKyAgICBnbG9iYWwgRVhURU5TSU9OUworICAgIGZvciBwYXRoIGluIHN5cy5wYXRoOgorICAgICAgICBmb3IgZXh0IGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBmaWxlbmFtZSA9IEVYVEVOU0lPTlMubmFtZSArIGV4dAorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKHBhdGgsIGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICBFWFRFTlNJT05TLnBhdGggPSBwYXRoCisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5leHQgPSBleHQKKyAgICAgICAgICAgICAgICBFWFRFTlNJT05TLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBFWFRFTlNJT05TLmZpbGVfcGF0aCA9IGZpbGVfcGF0aAorICAgICAgICAgICAgICAgIHJldHVybgorCitfZXh0ZW5zaW9uX2RldGFpbHMoKQorCisKIGRlZiBpbXBvcnRfaW1wb3J0bGliKG1vZHVsZV9uYW1lKToKICAgICAiIiJJbXBvcnQgYSBtb2R1bGUgZnJvbSBpbXBvcnRsaWIgYm90aCB3LyBhbmQgdy9vIF9mcm96ZW5faW1wb3J0bGliLiIiIgogICAgIGZyZXNoID0gKCdpbXBvcnRsaWInLCkgaWYgJy4nIGluIG1vZHVsZV9uYW1lIGVsc2UgKCkKICAgICBmcm96ZW4gPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUobW9kdWxlX25hbWUpCiAgICAgc291cmNlID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKG1vZHVsZV9uYW1lLCBmcmVzaD1mcmVzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD0oJ19mcm96ZW5faW1wb3J0bGliJywpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPSgnX2Zyb3plbl9pbXBvcnRsaWInLCAnX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnKSkKKyAgICByZXR1cm4geydGcm96ZW4nOiBmcm96ZW4sICdTb3VyY2UnOiBzb3VyY2V9CisKKworZGVmIHNwZWNpYWxpemVfY2xhc3MoY2xzLCBraW5kLCBiYXNlPU5vbmUsICoqa3dhcmdzKToKKyAgICAjIFhYWCBTdXBwb3J0IHBhc3NpbmcgaW4gc3VibW9kdWxlIG5hbWVzLS1sb2FkIChhbmQgY2FjaGUpIHRoZW0/CisgICAgIyBUaGF0IHdvdWxkIGNsZWFuIHVwIHRoZSB0ZXN0IG1vZHVsZXMgYSBiaXQgbW9yZS4KKyAgICBpZiBiYXNlIGlzIE5vbmU6CisgICAgICAgIGJhc2UgPSB1bml0dGVzdC5UZXN0Q2FzZQorICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoYmFzZSwgdHlwZSk6CisgICAgICAgIGJhc2UgPSBiYXNlW2tpbmRdCisgICAgbmFtZSA9ICd7fV97fScuZm9ybWF0KGtpbmQsIGNscy5fX25hbWVfXykKKyAgICBiYXNlcyA9IChjbHMsIGJhc2UpCisgICAgc3BlY2lhbGl6ZWQgPSB0eXBlcy5uZXdfY2xhc3MobmFtZSwgYmFzZXMpCisgICAgc3BlY2lhbGl6ZWQuX19tb2R1bGVfXyA9IGNscy5fX21vZHVsZV9fCisgICAgc3BlY2lhbGl6ZWQuX05BTUUgPSBjbHMuX19uYW1lX18KKyAgICBzcGVjaWFsaXplZC5fS0lORCA9IGtpbmQKKyAgICBmb3IgYXR0ciwgdmFsdWVzIGluIGt3YXJncy5pdGVtcygpOgorICAgICAgICB2YWx1ZSA9IHZhbHVlc1traW5kXQorICAgICAgICBzZXRhdHRyKHNwZWNpYWxpemVkLCBhdHRyLCB2YWx1ZSkKKyAgICByZXR1cm4gc3BlY2lhbGl6ZWQKKworCitkZWYgc3BsaXRfZnJvemVuKGNscywgYmFzZT1Ob25lLCAqKmt3YXJncyk6CisgICAgZnJvemVuID0gc3BlY2lhbGl6ZV9jbGFzcyhjbHMsICdGcm96ZW4nLCBiYXNlLCAqKmt3YXJncykKKyAgICBzb3VyY2UgPSBzcGVjaWFsaXplX2NsYXNzKGNscywgJ1NvdXJjZScsIGJhc2UsICoqa3dhcmdzKQogICAgIHJldHVybiBmcm96ZW4sIHNvdXJjZQogCiAKLWRlZiB0ZXN0X2JvdGgodGVzdF9jbGFzcywgKiprd2FyZ3MpOgotICAgIGZyb3plbl90ZXN0cyA9IHR5cGVzLm5ld19jbGFzcygnRnJvemVuXycrdGVzdF9jbGFzcy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKSkKLSAgICBzb3VyY2VfdGVzdHMgPSB0eXBlcy5uZXdfY2xhc3MoJ1NvdXJjZV8nK3Rlc3RfY2xhc3MuX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X2NsYXNzLCB1bml0dGVzdC5UZXN0Q2FzZSkpCi0gICAgZnJvemVuX3Rlc3RzLl9fbW9kdWxlX18gPSBzb3VyY2VfdGVzdHMuX19tb2R1bGVfXyA9IHRlc3RfY2xhc3MuX19tb2R1bGVfXwotICAgIGZvciBhdHRyLCAoZnJvemVuX3ZhbHVlLCBzb3VyY2VfdmFsdWUpIGluIGt3YXJncy5pdGVtcygpOgotICAgICAgICBzZXRhdHRyKGZyb3plbl90ZXN0cywgYXR0ciwgZnJvemVuX3ZhbHVlKQotICAgICAgICBzZXRhdHRyKHNvdXJjZV90ZXN0cywgYXR0ciwgc291cmNlX3ZhbHVlKQotICAgIHJldHVybiBmcm96ZW5fdGVzdHMsIHNvdXJjZV90ZXN0cworZGVmIHRlc3RfYm90aCh0ZXN0X2NsYXNzLCBiYXNlPU5vbmUsICoqa3dhcmdzKToKKyAgICByZXR1cm4gc3BsaXRfZnJvemVuKHRlc3RfY2xhc3MsIGJhc2UsICoqa3dhcmdzKQogCiAKIENBU0VfSU5TRU5TSVRJVkVfRlMgPSBUcnVlCkBAIC0zOCw2ICs5MiwxMCBAQAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjaGFuZ2VkX25hbWUpOgogICAgICAgICBDQVNFX0lOU0VOU0lUSVZFX0ZTID0gRmFsc2UKIAorc291cmNlX2ltcG9ydGxpYiA9IGltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpWydTb3VyY2UnXQorX19pbXBvcnRfXyA9IHsnRnJvemVuJzogc3RhdGljbWV0aG9kKGJ1aWx0aW5zLl9faW1wb3J0X18pLAorICAgICAgICAgICAgICAnU291cmNlJzogc3RhdGljbWV0aG9kKHNvdXJjZV9pbXBvcnRsaWIuX19pbXBvcnRfXyl9CisKIAogZGVmIGNhc2VfaW5zZW5zaXRpdmVfdGVzdHModGVzdCk6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIHRoYXQgbnVsbGlmaWVzIHRlc3RzIHJlcXVpcmluZyBhIGNhc2UtaW5zZW5zaXRpdmUKQEAgLTUzLDcgKzExMSw3IEBACiAgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KHBhcmVudCwgbmFtZSksIHBhdGgKIAogCi1AY29udGV4dG1hbmFnZXIKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgdW5jYWNoZSgqbmFtZXMpOgogICAgICIiIlVuY2FjaGUgYSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcy4KIApAQCAtNzksNyArMTM3LDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAKIAotQGNvbnRleHRtYW5hZ2VyCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHRlbXBfbW9kdWxlKG5hbWUsIGNvbnRlbnQ9JycsICosIHBrZz1GYWxzZSk6CiAgICAgY29uZmxpY3RzID0gW24gZm9yIG4gaW4gc3lzLm1vZHVsZXMgaWYgbi5wYXJ0aXRpb24oJy4nKVswXSA9PSBuYW1lXQogICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChOb25lKSBhcyBjd2Q6CkBAIC0xMDMsNyArMTYxLDcgQEAKICAgICAgICAgICAgICAgICB5aWVsZCBsb2NhdGlvbgogCiAKLUBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBpbXBvcnRfc3RhdGUoKiprd2FyZ3MpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBtYW5hZ2UgdGhlIHZhcmlvdXMgaW1wb3J0ZXJzIGFuZCBzdG9yZWQgc3RhdGUgaW4gdGhlCiAgICAgc3lzIG1vZHVsZS4KQEAgLTE5OCw2ICsyNTYsNyBAQAogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgcmV0dXJuIHNlbGYubW9kdWxlc1tmdWxsbmFtZV0KIAorCiBjbGFzcyBtb2NrX3NwZWMoX0ltcG9ydGVyTW9jayk6CiAKICAgICAiIiJJbXBvcnRlciBtb2NrIHVzaW5nIFBFUCA0NTEgQVBJcy4iIiIKQEAgLTIyMywzICsyODIsOTkgQEAKICAgICAgICAgICAgIHNlbGYubW9kdWxlX2NvZGVbbW9kdWxlLl9fc3BlY19fLm5hbWVdKCkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcGFzcworCisKK2RlZiB3cml0ZXNfYnl0ZWNvZGVfZmlsZXMoZnhuKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gcHJvdGVjdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBmcm9tIG11dGF0aW9uIGFuZCB0byBza2lwCisgICAgdGVzdHMgdGhhdCByZXF1aXJlIGl0IHRvIGJlIHNldCB0byBGYWxzZS4iIiIKKyAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKKyAgICAgICAgcmV0dXJuIGxhbWJkYSAqYXJncywgKiprd2FyZ3M6IE5vbmUKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGZ4bikKKyAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBvcmlnaW5hbCA9IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9fcmV0dXJuID0gZnhuKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb3JpZ2luYWwKKyAgICAgICAgcmV0dXJuIHRvX3JldHVybgorICAgIHJldHVybiB3cmFwcGVyCisKKworZGVmIGVuc3VyZV9ieXRlY29kZV9wYXRoKGJ5dGVjb2RlX3BhdGgpOgorICAgICIiIkVuc3VyZSB0aGF0IHRoZSBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkgZm9yIFBFUCAzMTQ3IHB5YyBmaWxlIGV4aXN0cy4KKworICAgIDpwYXJhbSBieXRlY29kZV9wYXRoOiBGaWxlIHN5c3RlbSBwYXRoIHRvIFBFUCAzMTQ3IHB5YyBmaWxlLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgb3MubWtkaXIob3MucGF0aC5kaXJuYW1lKGJ5dGVjb2RlX3BhdGgpKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICByYWlzZQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgY3JlYXRlX21vZHVsZXMoKm5hbWVzKToKKyAgICAiIiJUZW1wb3JhcmlseSBjcmVhdGUgZWFjaCBuYW1lZCBtb2R1bGUgd2l0aCBhbiBhdHRyaWJ1dGUgKG5hbWVkICdhdHRyJykKKyAgICB0aGF0IGNvbnRhaW5zIHRoZSBuYW1lIHBhc3NlZCBpbnRvIHRoZSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjYXVzZWQgdGhlCisgICAgY3JlYXRpb24gb2YgdGhlIG1vZHVsZS4KKworICAgIEFsbCBmaWxlcyBhcmUgY3JlYXRlZCBpbiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgcmV0dXJuZWQgYnkKKyAgICB0ZW1wZmlsZS5ta2R0ZW1wKCkuIFRoaXMgZGlyZWN0b3J5IGlzIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICBzeXMucGF0aC4gV2hlbiB0aGUgY29udGV4dCBtYW5hZ2VyIGV4aXRzIGFsbCBjcmVhdGVkIGZpbGVzIChzb3VyY2UgYW5kCisgICAgYnl0ZWNvZGUpIGFyZSBleHBsaWNpdGx5IGRlbGV0ZWQuCisKKyAgICBObyBtYWdpYyBpcyBwZXJmb3JtZWQgd2hlbiBjcmVhdGluZyBwYWNrYWdlcyEgVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBjcmVhdGUKKyAgICBhIG1vZHVsZSB3aXRoaW4gYSBwYWNrYWdlIHlvdSBtdXN0IGFsc28gY3JlYXRlIHRoZSBwYWNrYWdlJ3MgX19pbml0X18gYXMKKyAgICB3ZWxsLgorCisgICAgIiIiCisgICAgc291cmNlID0gJ2F0dHIgPSB7MCFyfScKKyAgICBjcmVhdGVkX3BhdGhzID0gW10KKyAgICBtYXBwaW5nID0ge30KKyAgICBzdGF0ZV9tYW5hZ2VyID0gTm9uZQorICAgIHVuY2FjaGVfbWFuYWdlciA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIHRlbXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIG1hcHBpbmdbJy5yb290J10gPSB0ZW1wX2RpcgorICAgICAgICBpbXBvcnRfbmFtZXMgPSBzZXQoKQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lLmVuZHN3aXRoKCdfX2luaXRfXycpOgorICAgICAgICAgICAgICAgIGltcG9ydF9uYW1lID0gbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXQorICAgICAgICAgICAgaW1wb3J0X25hbWVzLmFkZChpbXBvcnRfbmFtZSkKKyAgICAgICAgICAgIGlmIGltcG9ydF9uYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tpbXBvcnRfbmFtZV0KKyAgICAgICAgICAgIG5hbWVfcGFydHMgPSBuYW1lLnNwbGl0KCcuJykKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IHRlbXBfZGlyCisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG5hbWVfcGFydHNbOi0xXToKKyAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZmlsZV9wYXRoLCBkaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIG9zLm1rZGlyKGZpbGVfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgbmFtZV9wYXJ0c1stMV0gKyAnLnB5JykKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZS5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICBjcmVhdGVkX3BhdGhzLmFwcGVuZChmaWxlX3BhdGgpCisgICAgICAgICAgICBtYXBwaW5nW25hbWVdID0gZmlsZV9wYXRoCisgICAgICAgIHVuY2FjaGVfbWFuYWdlciA9IHVuY2FjaGUoKmltcG9ydF9uYW1lcykKKyAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZW50ZXJfXygpCisgICAgICAgIHN0YXRlX21hbmFnZXIgPSBpbXBvcnRfc3RhdGUocGF0aD1bdGVtcF9kaXJdKQorICAgICAgICBzdGF0ZV9tYW5hZ2VyLl9fZW50ZXJfXygpCisgICAgICAgIHlpZWxkIG1hcHBpbmcKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBzdGF0ZV9tYW5hZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RhdGVfbWFuYWdlci5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorICAgICAgICBpZiB1bmNhY2hlX21hbmFnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB1bmNhY2hlX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUodGVtcF9kaXIpCisKKworZGVmIG1vY2tfcGF0aF9ob29rKCplbnRyaWVzLCBpbXBvcnRlcik6CisgICAgIiIiQSBtb2NrIHN5cy5wYXRoX2hvb2tzIGVudHJ5LiIiIgorICAgIGRlZiBob29rKGVudHJ5KToKKyAgICAgICAgaWYgZW50cnkgbm90IGluIGVudHJpZXM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorICAgICAgICByZXR1cm4gaW1wb3J0ZXIKKyAgICByZXR1cm4gaG9vawpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CmluZGV4IDFhMTI0YjUuLjk1NWIyYWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgZnVuY3Rvb2xzCkBAIC04LDYgKzksNyBAQAogaW1wb3J0IG9zCiBmcm9tIG9zLnBhdGggaW1wb3J0IG5vcm1jYXNlCiBpbXBvcnQgX3BpY2tsZQoraW1wb3J0IHBpY2tsZQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCkBAIC0xNiw2ICsxOCw3IEBACiBpbXBvcnQgdW5pY29kZWRhdGEKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2ltcG9ydCB3YXJuaW5ncwogCiB0cnk6CiAgICAgZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMgaW1wb3J0IFRocmVhZFBvb2xFeGVjdXRvcgpAQCAtMjMsOCArMjYsOCBAQAogICAgIFRocmVhZFBvb2xFeGVjdXRvciA9IE5vbmUKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCBEaXJzT25TeXNQYXRoLCBjcHl0aG9uX29ubHkKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBNSVNTSU5HX0NfRE9DU1RSSU5HUwotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IE1JU1NJTkdfQ19ET0NTVFJJTkdTLCBjcHl0aG9uX29ubHkKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogZnJvbSB0ZXN0IGltcG9ydCBpbnNwZWN0X2ZvZGRlciBhcyBtb2QKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIyIGFzIG1vZDIKIApAQCAtNjAsMTQgKzYzLDE2IEBACiAgICAgcHJlZGljYXRlcyA9IHNldChbaW5zcGVjdC5pc2J1aWx0aW4sIGluc3BlY3QuaXNjbGFzcywgaW5zcGVjdC5pc2NvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2ZyYW1lLCBpbnNwZWN0LmlzZnVuY3Rpb24sIGluc3BlY3QuaXNtZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc21vZHVsZSwgaW5zcGVjdC5pc3RyYWNlYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZ2VuZXJhdG9yLCBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb25dKQorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNnZW5lcmF0b3IsIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lLCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocHJlZGljYXRlKG9iaiksICclcyglcyknICUgKHByZWRpY2F0ZS5fX25hbWVfXywgZXhwKSkKIAogICAgICAgICBmb3Igb3RoZXIgaW4gc2VsZi5wcmVkaWNhdGVzIC0gc2V0KFtwcmVkaWNhdGVdKToKLSAgICAgICAgICAgIGlmIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gYW5kXAorICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbikgYW5kIFwKICAgICAgICAgICAgICAgIG90aGVyID09IGluc3BlY3QuaXNmdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdGhlcihvYmopLCAnbm90ICVzKCVzKScgJSAob3RoZXIuX19uYW1lX18sIGV4cCkpCkBAIC03NiwxOSArODEsMTkgQEAKICAgICBmb3IgaSBpbiByYW5nZSgyKToKICAgICAgICAgeWllbGQgaQogCithc3luYyBkZWYgY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoc2VsZik6CisgICAgcmV0dXJuICdzcGFtJworCitAdHlwZXMuY29yb3V0aW5lCitkZWYgZ2VuX2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIHlpZWxkCisgICAgcmV0dXJuICdzcGFtJworCiBjbGFzcyBFcXVhbHNUb0FsbDoKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIFRydWUKIAogY2xhc3MgVGVzdFByZWRpY2F0ZXMoSXNUZXN0QmFzZSk6Ci0gICAgZGVmIHRlc3Rfc2l4dGVlbihzZWxmKToKLSAgICAgICAgY291bnQgPSBsZW4oW3ggZm9yIHggaW4gZGlyKGluc3BlY3QpIGlmIHguc3RhcnRzd2l0aCgnaXMnKV0pCi0gICAgICAgICMgVGhpcyB0ZXN0IGlzIGhlcmUgZm9yIHJlbWVtYmVyIHlvdSB0byB1cGRhdGUgRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKLSAgICAgICAgIyB3aGljaCBjbGFpbXMgdGhlcmUgYXJlIDE2IHN1Y2ggZnVuY3Rpb25zCi0gICAgICAgIGV4cGVjdGVkID0gMTYKLSAgICAgICAgZXJyX21zZyA9ICJUaGVyZSBhcmUgJWQgKG5vdCAlZCkgaXMqIGZ1bmN0aW9ucyIgJSAoY291bnQsIGV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCBleHBlY3RlZCwgZXJyX21zZykKLQogCiAgICAgZGVmIHRlc3RfZXhjbHVkaW5nX3ByZWRpY2F0ZXMoc2VsZik6CiAgICAgICAgIGdsb2JhbCB0YgpAQCAtMTE2LDExICsxMjEsNjIgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzY29yb3V0aW5lLCAnY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLCAnY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUnKQorCiAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdNZW1iZXJEZXNjcmlwdG9yVHlwZScpOgogICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3IsICdkYXRldGltZS50aW1lZGVsdGEuZGF5cycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNtZW1iZXJkZXNjcmlwdG9yKGRhdGV0aW1lLnRpbWVkZWx0YS5kYXlzKSkKIAorICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lKHNlbGYpOgorICAgICAgICBnZW5fY29ybyA9IGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSgxKQorICAgICAgICBjb3JvID0gY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoMSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2Nvcm91dGluZShnZW5fY29ybykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzZ2VuZXJhdG9yKGdlbl9jb3JvKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZShjb3JvKSkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2VuZXJhdG9yKGNvcm8pKQorCisgICAgICAgIGNvcm8uY2xvc2UoKTsgZ2VuX2Nvcm8uY2xvc2UoKSAjIHNpbGVuY2Ugd2FybmluZ3MKKworICAgIGRlZiB0ZXN0X2lzYXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShnZW4oKSkpCisKKyAgICAgICAgY29ybyA9IGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisgICAgICAgIGdlbl9jb3JvID0gZ2VuX2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNhd2FpdGFibGUoY29ybykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzYXdhaXRhYmxlKGdlbl9jb3JvKSkKKworICAgICAgICBjbGFzcyBGdXR1cmU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShGdXR1cmUoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShGdXR1cmUpKQorCisgICAgICAgIGNsYXNzIE5vdEZ1dHVyZTogcGFzcworICAgICAgICBub3RfZnV0ID0gTm90RnV0dXJlKCkKKyAgICAgICAgbm90X2Z1dC5fX2F3YWl0X18gPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzYXdhaXRhYmxlKG5vdF9mdXQpKQorCisgICAgICAgIGNvcm8uY2xvc2UoKTsgZ2VuX2Nvcm8uY2xvc2UoKSAjIHNpbGVuY2Ugd2FybmluZ3MKKwogICAgIGRlZiB0ZXN0X2lzcm91dGluZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNyb3V0aW5lKG1vZC5zcGFtKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNyb3V0aW5lKFtdLmNvdW50KSkKQEAgLTE4Niw2ICsyNDIsMTQgQEAKICAgICAgICAgICAgICAobW9kZmlsZSwgNDMsICdhcmd1ZScsIFsnICAgICAgICAgICAgc3BhbShhLCBiLCBjKVxuJ10sIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmlzZSgqbW9kLnN0WzNdWzE6XSksCiAgICAgICAgICAgICAgKG1vZGZpbGUsIDM5LCAnYWJ1c2UnLCBbJyAgICAgICAgc2VsZi5hcmd1ZShhLCBiLCBjKVxuJ10sIDApKQorICAgICAgICAjIFRlc3QgbmFtZWQgdHVwbGUgZmllbGRzCisgICAgICAgIHJlY29yZCA9IG1vZC5zdFswXQorICAgICAgICBzZWxmLmFzc2VydElzKHJlY29yZC5mcmFtZSwgbW9kLmZyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5saW5lbm8sIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5maWxlbmFtZSwgbW9kLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5mdW5jdGlvbiwgJ2VnZ3MnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdpbnNwZWN0LnN0YWNrKCknLCByZWNvcmQuY29kZV9jb250ZXh0WzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5pbmRleCwgMCkKIAogICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnaXQudHIpLCAzKQpAQCAtMjE3LDkgKzI4MSw3IEBACiAgICAgIyBTdWJjbGFzc2VzIG11c3Qgb3ZlcnJpZGUuCiAgICAgZm9kZGVyTW9kdWxlID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQorICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKGluc3BlY3QuZ2V0c291cmNlZmlsZShzZWxmLmZvZGRlck1vZHVsZSkpIGFzIGZwOgogICAgICAgICAgICAgc2VsZi5zb3VyY2UgPSBmcC5yZWFkKCkKIApAQCAtMjc0LDYgKzMzNiw3IEBACiAgICAgZGVmIHRlc3RfZ2V0ZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBmdW5jdGlvbnMgPSBpbnNwZWN0LmdldG1lbWJlcnMobW9kLCBpbnNwZWN0LmlzZnVuY3Rpb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuY3Rpb25zLCBbKCdlZ2dzJywgbW9kLmVnZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnbG9iYmVzdCcsIG1vZC5sb2JiZXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NwYW0nLCBtb2Quc3BhbSldKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKQEAgLTI4NSw2ICszNDgsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhnaXQuYWJ1c2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfZ2V0ZG9jX2luaGVyaXRlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhtb2QuRmVzdGVyaW5nR29iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQSBsb25nZXIsXG5cbmluZGVudGVkXG5cbmRvY3N0cmluZy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IuYWJ1c2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IoKS5hYnVzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0Fub3RoZXJcblxuZG9jc3RyaW5nXG5cbmNvbnRhaW5pbmdcblxudGFicycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRkb2MobW9kLkZlc3RlcmluZ0dvYi5jb250cmFkaWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGF1dG9tYXRpYyBnYWluc2F5aW5nLicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKE1JU1NJTkdfQ19ET0NTVFJJTkdTLCAidGVzdCByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9maW5kZG9jKHNlbGYpOgorICAgICAgICBmaW5kZG9jID0gaW5zcGVjdC5fZmluZGRvYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRkb2MoaW50KSwgaW50Ll9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQudG9fYnl0ZXMpLCBpbnQudG9fYnl0ZXMuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kZG9jKGludCgpLnRvX2J5dGVzKSwgaW50LnRvX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQuZnJvbV9ieXRlcyksIGludC5mcm9tX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQucmVhbCksIGludC5yZWFsLl9fZG9jX18pCisKICAgICBkZWYgdGVzdF9jbGVhbmRvYyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmNsZWFuZG9jKCdBblxuICAgIGluZGVudGVkXG4gICAgZG9jc3RyaW5nLicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdBblxuaW5kZW50ZWRcbmRvY3N0cmluZy4nKQpAQCAtMzA5LDcgKzM5Myw4IEBACiAKICAgICBkZWYgdGVzdF9nZXRzb3VyY2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwoZ2l0LmFidXNlLCAyOSwgMzkpCi0gICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLlN0dXBpZEdpdCwgMjEsIDQ2KQorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZC5TdHVwaWRHaXQsIDIxLCA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QubG9iYmVzdCwgNzAsIDcxKQogCiAgICAgZGVmIHRlc3RfZ2V0c291cmNlZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKQEAgLTM2NCw2ICs0NDksOSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gZ2V0bGluZXMKIAorICAgIGRlZiB0ZXN0X2dldHNvdXJjZV9vbl9jb2RlX29iamVjdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QuZWdncy5fX2NvZGVfXywgMTIsIDE4KQorCiBjbGFzcyBUZXN0RGVjb3JhdG9ycyhHZXRTb3VyY2VCYXNlKToKICAgICBmb2RkZXJNb2R1bGUgPSBtb2QyCiAKQEAgLTM3Myw2ICs0NjEsMTIgQEAKICAgICBkZWYgdGVzdF9yZXBsYWNpbmdfZGVjb3JhdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIuZ29uZSwgOSwgMTApCiAKKyAgICBkZWYgdGVzdF9nZXRzb3VyY2VfdW53cmFwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIucmVhbCwgMTMwLCAxMzIpCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3Jfd2l0aF9sYW1iZGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kMi5mdW5jMTE0LCAxMTMsIDExNSkKKwogY2xhc3MgVGVzdE9uZWxpbmVycyhHZXRTb3VyY2VCYXNlKToKICAgICBmb2RkZXJNb2R1bGUgPSBtb2QyCiAgICAgZGVmIHRlc3Rfb25lbGluZV9sYW1iZGEoc2VsZik6CkBAIC00NjYsOCArNTYwLDE1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBpbnNwZWN0LmZpbmRzb3VyY2UsIGNvKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIGNvKQogCisgICAgZGVmIHRlc3RfZ2V0c291cmNlX29uX21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QyLkNsYXNzV2l0aE1ldGhvZC5tZXRob2QsIDExOCwgMTE5KQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2Z1bmMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kMi5jbHMxMzUuZnVuYzEzNiwgMTM2LCAxMzkpCisKKwogY2xhc3MgVGVzdE5vRU9MKEdldFNvdXJjZUJhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi50ZW1wZGlyID0gVEVTVEZOICsgJ19kaXInCiAgICAgICAgIG9zLm1rZGlyKHNlbGYudGVtcGRpcikKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsCkBAIC00NzYsNyArNTc3LDcgQEAKICAgICAgICAgd2l0aCBEaXJzT25TeXNQYXRoKHNlbGYudGVtcGRpcik6CiAgICAgICAgICAgICBpbXBvcnQgaW5zcGVjdF9mb2RkZXIzIGFzIG1vZDMKICAgICAgICAgc2VsZi5mb2RkZXJNb2R1bGUgPSBtb2QzCi0gICAgICAgIEdldFNvdXJjZUJhc2UuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRlbXBkaXIpCkBAIC01MjksNyArNjMwLDggQEAKIAogICAgIGRlZiBhc3NlcnRBcmdTcGVjRXF1YWxzKHNlbGYsIHJvdXRpbmUsIGFyZ3NfZSwgdmFyYXJnc19lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFya3dfZT1Ob25lLCBkZWZhdWx0c19lPU5vbmUsIGZvcm1hdHRlZD1Ob25lKToKLSAgICAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJvdXRpbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzID0gaW5zcGVjdC5nZXRhcmdzcGVjKHJvdXRpbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgYXJnc19lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcmFyZ3MsIHZhcmFyZ3NfZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJrdywgdmFya3dfZSkKQEAgLTE2MzQsMTAgKzE3MzYsODYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgKDIsMykpCiAKIAorY2xhc3MgVGVzdEdldENvcm91dGluZVN0YXRlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgbnVtYmVyX2Nvcm91dGluZSgpOgorICAgICAgICAgICAgZm9yIG51bWJlciBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICB5aWVsZCBudW1iZXIKKyAgICAgICAgYXN5bmMgZGVmIGNvcm91dGluZSgpOgorICAgICAgICAgICAgYXdhaXQgbnVtYmVyX2Nvcm91dGluZSgpCisgICAgICAgIHNlbGYuY29yb3V0aW5lID0gY29yb3V0aW5lKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jb3JvdXRpbmUuY2xvc2UoKQorCisgICAgZGVmIF9jb3JvdXRpbmVzdGF0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoc2VsZi5jb3JvdXRpbmUpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2Nvcm91dGluZXN0YXRlKCksIGluc3BlY3QuQ09ST19DUkVBVEVEKQorCisgICAgZGVmIHRlc3Rfc3VzcGVuZGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNvcm91dGluZS5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fY29yb3V0aW5lc3RhdGUoKSwgaW5zcGVjdC5DT1JPX1NVU1BFTkRFRCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZF9hZnRlcl9leGhhdXN0aW9uKHNlbGYpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuY29yb3V0aW5lLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb3JvdXRpbmVzdGF0ZSgpLCBpbnNwZWN0LkNPUk9fQ0xPU0VEKQorCisgICAgZGVmIHRlc3RfY2xvc2VkX2FmdGVyX2ltbWVkaWF0ZV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuY29yb3V0aW5lLnRocm93KFJ1bnRpbWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb3JvdXRpbmVzdGF0ZSgpLCBpbnNwZWN0LkNPUk9fQ0xPU0VEKQorCisgICAgZGVmIHRlc3RfZWFzeV9kZWJ1Z2dpbmcoc2VsZik6CisgICAgICAgICMgcmVwcigpIGFuZCBzdHIoKSBvZiBhIGNvcm91dGluZSBzdGF0ZSBzaG91bGQgY29udGFpbiB0aGUgc3RhdGUgbmFtZQorICAgICAgICBuYW1lcyA9ICdDT1JPX0NSRUFURUQgQ09ST19SVU5OSU5HIENPUk9fU1VTUEVOREVEIENPUk9fQ0xPU0VEJy5zcGxpdCgpCisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgc3RhdGUgPSBnZXRhdHRyKGluc3BlY3QsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHJlcHIoc3RhdGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzdHIoc3RhdGUpKQorCisgICAgZGVmIHRlc3RfZ2V0Y29yb3V0aW5lbG9jYWxzKHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBnZW5jb3JvKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGdlbmNvcm8gPSBnZW5jb3JvKCkKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoYT1Ob25lKToKKyAgICAgICAgICAgIGIgPSAnc3BhbScKKyAgICAgICAgICAgIGF3YWl0IGdlbmNvcm8KKworICAgICAgICBjb3JvID0gZnVuYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVsb2NhbHMoY29ybyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2dlbmNvcm8nOiBnZW5jb3JvfSkKKyAgICAgICAgY29yby5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVsb2NhbHMoY29ybyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2dlbmNvcm8nOiBnZW5jb3JvLCAnYic6ICdzcGFtJ30pCisKKworY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOgorICAgICMgVG9wLWxldmVsIHRvIG1ha2UgaXQgcGlja2xhYmxlOworICAgICMgdXNlZCBpbiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlCisgICAgcGFzcworCitjbGFzcyBNeVBhcmFtZXRlcihpbnNwZWN0LlBhcmFtZXRlcik6CisgICAgIyBUb3AtbGV2ZWwgdG8gbWFrZSBpdCBwaWNrbGFibGU7CisgICAgIyB1c2VkIGluIHRlc3Rfc2lnbmF0dXJlX29iamVjdF9waWNrbGUKKyAgICBwYXNzCisKKworCiBjbGFzcyBUZXN0U2lnbmF0dXJlT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIHNpZ25hdHVyZShmdW5jKToKLSAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICBkZWYgc2lnbmF0dXJlKGZ1bmMsICoqa3cpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jLCAqKmt3KQogICAgICAgICByZXR1cm4gKHR1cGxlKChwYXJhbS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmRlZmF1bHQgaXMgcGFyYW0uZW1wdHkgZWxzZSBwYXJhbS5kZWZhdWx0KSwKICAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5hbm5vdGF0aW9uIGlzIHBhcmFtLmVtcHR5CkBAIC0xNjkxLDYgKzE4NjksMzcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdmb2xsb3dzIGRlZmF1bHQgYXJndW1lbnQnKToKICAgICAgICAgICAgIFMoKHBrZCwgcGspKQogCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKHNpZykuc3RhcnRzd2l0aCgnPFNpZ25hdHVyZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJyhwbywgcGsnIGluIHJlcHIoc2lnKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBmb29fcGFydGlhbCA9IGZ1bmN0b29scy5wYXJ0aWFsKGZvbywgYT0xKQorCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvb19wYXJ0aWFsKQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyLCBzdWJjbGFzcz1GYWxzZSk6CisgICAgICAgICAgICAgICAgc2lnX3BpY2tsZWQgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHNpZywgdmVyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZywgc2lnX3BpY2tsZWQpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgYmFzaWMgc3ViLWNsYXNzaW5nIHdvcmtzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgbXlwYXJhbSA9IE15UGFyYW1ldGVyKG5hbWU9J3onLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgbXlwYXJhbXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdChzaWcucGFyYW1ldGVycywgYT1teXBhcmFtKQorICAgICAgICBteXNpZyA9IE15U2lnbmF0dXJlKCkucmVwbGFjZShwYXJhbWV0ZXJzPW15cGFyYW1zLnZhbHVlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1zaWcucmV0dXJuX2Fubm90YXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG15c2lnLCBNeVNpZ25hdHVyZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG15c2lnLnBhcmFtZXRlcnNbJ3onXSwgTXlQYXJhbWV0ZXIpKQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyLCBzdWJjbGFzcz1UcnVlKToKKyAgICAgICAgICAgICAgICBzaWdfcGlja2xlZCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMobXlzaWcsIHZlcikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteXNpZywgc2lnX3BpY2tsZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2lnX3BpY2tsZWQsIE15U2lnbmF0dXJlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzaWdfcGlja2xlZC5wYXJhbWV0ZXJzWyd6J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXlQYXJhbWV0ZXIpKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2ltbXV0YWJpbGl0eShzZWxmKToKICAgICAgICAgZGVmIHRlc3QoYSk6CiAgICAgICAgICAgICBwYXNzCkBAIC0xODA1LDYgKzIwMTQsOCBAQAogICAgICAgICB0ZXN0X3VuYm91bmRfbWV0aG9kKGRpY3QuX19kZWxpdGVtX18pCiAgICAgICAgIHRlc3RfdW5ib3VuZF9tZXRob2QocHJvcGVydHkuX19kZWxldGVfXykKIAorICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgIzIwNTg2CisgICAgICAgIHRlc3RfY2FsbGFibGUoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jKQogCiAgICAgQGNweXRob25fb25seQogICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCkBAIC0xODI0LDIzICsyMDM1LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoZGVjb3JhdGVkX2Z1bmMpKQogCisgICAgICAgIGRlZiB3cmFwcGVyX2xpa2UoKmFyZ3MsICoqa3dhcmdzKSAtPiBpbnQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShkZWNvcmF0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlZD1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUod3JhcHBlcl9saWtlKSkKKwogICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fYnVpbHRpbnNfbm9fc2lnbmF0dXJlKHNlbGYpOgogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbicpOgogICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoX3Rlc3RjYXBpLmRvY3N0cmluZ19ub19zaWduYXR1cmUpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluJyk6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShzdHIpCisKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9uX2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgY2FsbGFibGUgb2JqZWN0Jyk6CiAgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZSg0MikKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJyk6Ci0gICAgICAgICAgICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKDQyKQotCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbl9lcnJvcnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gYnVpbHRpbicpOgotICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9idWlsdGluKDQyKQotCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb25saWtlX29iamVjdChzZWxmKToKICAgICAgICAgZGVmIGZ1bmMoYSxiLCAqYXJncywga3dvbmx5PVRydWUsIGt3b25seXJlcSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgcGFzcwpAQCAtMTg2MSw5ICsyMDc1LDkgQEAKICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoKmFyZ3MsICoqa3dhcmdzKQogCi0gICAgICAgIHNpZ19mdW5jID0gaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbihmdW5jKQorICAgICAgICBzaWdfZnVuYyA9IGluc3BlY3QuU2lnbmF0dXJlLmZyb21fY2FsbGFibGUoZnVuYykKIAotICAgICAgICBzaWdfZnVuY2xpa2UgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKGZ1bmNsaWtlKGZ1bmMpKQorICAgICAgICBzaWdfZnVuY2xpa2UgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKGZ1bmNsaWtlKGZ1bmMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ19mdW5jbGlrZSwgc2lnX2Z1bmMpCiAKICAgICAgICAgc2lnX2Z1bmNsaWtlID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuY2xpa2UoZnVuYykpCkBAIC0xOTExLDkgKzIxMjUsNiBAQAogICAgICAgICAgICAgX19kZWZhdWx0c19fID0gZnVuYy5fX2RlZmF1bHRzX18KICAgICAgICAgICAgIF9fa3dkZWZhdWx0c19fID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nKToKLSAgICAgICAgICAgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oZnVuY2xpa2UpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZnVuY2xpa2UpKSwgJyhtYXJrZXIpJykKIAogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9tZXRob2Qoc2VsZik6CkBAIC0yMjY1LDYgKzI0NzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vLmJhciwgZm9sbG93X3dyYXBwZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKSAjIGZ1bmN0b29scy53cmFwcyB3aWxsIGNvcHkgX19hbm5vdGF0aW9uc19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJvbSAiZnVuYyIgdG8gIndyYXBwZXIiLCBoZW5jZSBubworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybl9hbm5vdGF0aW9uCisKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgaGFuZGxlIG1ldGhvZCB3cmFwcGVycyBjb3JyZWN0bHkKICAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKICAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKQEAgLTI0NzEsNjAgKzI2ODksMTAyIEBACiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBpbnQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50PTQyKSAtPiBmbG9hdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCAqLCBjKSAtPiBmbG9hdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogICAgICAgICBkZWYgc3BhbShiOmludCwgYSkgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShzcGFtKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoc3BhbSkgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoc3BhbSkpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28oKiwgYSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhKTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbygqLCBhPTEsIGIsIGMpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYT0xKTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbyhwb3MsICosIGE9MSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhLCBiLCBjKTogcGFzcwogICAgICAgICBkZWYgYmFyKHBvcywgKiwgYywgYiwgYT0xKTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGZvbyhwb3MsICphcmdzLCBhPTQyLCBiLCBjLCAqKmt3YXJnczppbnQpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIocG9zLCAqYXJncywgYywgYiwgYT00MiwgKiprd2FyZ3M6aW50KTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKLSAgICBkZWYgdGVzdF9zaWduYXR1cmVfdW5oYXNoYWJsZShzZWxmKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfaGFzaGFibGUoc2VsZik6CisgICAgICAgIFMgPSBpbnNwZWN0LlNpZ25hdHVyZQorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKwogICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCi0gICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgZm9vX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKworICAgICAgICBtYW51YWxfc2lnID0gUyhwYXJhbWV0ZXJzPVtQKCdhJywgUC5QT1NJVElPTkFMX09SX0tFWVdPUkQpXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZm9vX3NpZyksIGhhc2gobWFudWFsX3NpZykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb29fc2lnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKG1hbnVhbF9zaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj0nc3BhbScpKSkKKworICAgICAgICBkZWYgYmFyKGEpIC0+IDE6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoYXNoKGZvb19zaWcpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQorCisgICAgICAgIGRlZiBmb28oYT17fSk6IHBhc3MKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgotICAgICAgICAgICAgaGFzaChzaWcpCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpCisKKyAgICAgICAgZGVmIGZvbyhhKSAtPiB7fTogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6CisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfc3RyKHNlbGYpOgogICAgICAgICBkZWYgZm9vKGE6aW50PTEsICosIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyOgpAQCAtMjU5OCw2ICsyODU4LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoU3BhbS5mb28pLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmF0dXJlKEhhbS5mb28pKQogCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGVfcHl0aG9uX29iaihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOiBwYXNzCisgICAgICAgIGRlZiBmb28oYSwgKiwgYjoxKTogcGFzcworICAgICAgICBmb29fc2lnID0gTXlTaWduYXR1cmUuZnJvbV9jYWxsYWJsZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGZvb19zaWcsIE15U2lnbmF0dXJlKSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCisgICAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlIGluZm9ybWF0aW9uIGZvciBidWlsdGlucyByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZV9idWlsdGluX29iaihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTaWduYXR1cmUoaW5zcGVjdC5TaWduYXR1cmUpOiBwYXNzCisgICAgICAgIHNpZyA9IE15U2lnbmF0dXJlLmZyb21fY2FsbGFibGUoX3BpY2tsZS5QaWNrbGVyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzaWcsIE15U2lnbmF0dXJlKSkKKwogCiBjbGFzcyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2tpbmRzKHNlbGYpOgpAQCAtMjY0Myw2ICsyOTE2LDE2IEBACiAgICAgICAgICAgICBwLnJlcGxhY2Uoa2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihwKS5zdGFydHN3aXRoKCc8UGFyYW1ldGVyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnImE9NDIiJyBpbiByZXByKHApKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9oYXNoYWJsZShzZWxmKToKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisgICAgICAgIGZvbyA9IFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChmb28pLCBoYXNoKFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoYXNoKGZvbyksIGhhc2goUCgnZm9vJywga2luZD1QLlBPU0lUSU9OQUxfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTQyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goZm9vLnJlcGxhY2Uoa2luZD1QLlZBUl9QT1NJVElPTkFMKSkpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2VxdWFsaXR5KHNlbGYpOgogICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKQEAgLTI2NjAsMTMgKzI5NDMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAgIT0gUCgnZm9vJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpKQogCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl91bmhhc2hhYmxlKHNlbGYpOgotICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9NDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKLQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJyk6Ci0gICAgICAgICAgICBoYXNoKHApCi0KICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQpAQCAtMjczNSw3ICszMDExLDkgQEAKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBzcGFtPTEwKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnc3BhbSciKToKKwogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09MSkKIAogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcihzZWxmKToKQEAgLTI3NjAsMTAgKzMwMzgsMTIgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgMywgNCkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2InIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdiJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidhJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYSciKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0KQogCiAgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MTApOgpAQCAtMjgzNiw3ICszMTE2LDcgQEAKICAgICAgICAgZGVmIHRlc3QoYSwgKiwgZm9vPTEsIGJhcik6CiAgICAgICAgICAgICByZXR1cm4gZm9vCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYmFyJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAKICAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIpOgpAQCAtMjg0NCw4ICszMTI0LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIpLCAoMSwgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGJhcj0yLCBmb289MSksICgxLCAyKSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICdzcGFtJyIpOgorCiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgYmFyPTIsIGZvbz0xLCBzcGFtPTEwKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCkBAIC0yODU2LDEyICszMTM3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgYmFyPTIpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnc3BhbSciKToKKwogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBzcGFtPSdoYW0nKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiYXInIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYmFyJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCiAKICAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIsICoqYmluKToKQEAgLTI4NzMsNyArMzE1NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGZvbz0xLCBiYXI9MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidmb28nIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6ICdmb28nIik6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgc3BhbT0naGFtJywgYmFyPTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yLCBiaW49MSwgc3BhbT0xMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnYmluJzogMSwgJ3NwYW0nOiAxMH0pKQpAQCAtMjkzOCw3ICszMjIwLDkgQEAKICAgICAgICAgICAgIHJldHVybiBhLCBhcmdzCiAgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInRvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgImdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ2FyZ3MnIik6CisKICAgICAgICAgICAgIHNpZy5iaW5kKGE9MCwgYXJncz0xKQogCiAgICAgICAgIGRlZiB0ZXN0KCphcmdzLCAqKmt3YXJncyk6CkBAIC0yOTgyLDYgKzMyNjYsNjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiYSA9PSBiYTQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYSAhPSBiYTQpCiAKKyAgICAgICAgZGVmIGZvbygqLCBhLCBiKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhMSA9IHNpZy5iaW5kKGE9MSwgYj0yKQorICAgICAgICBiYTIgPSBzaWcuYmluZChiPTIsIGE9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhMSA9PSBiYTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmExICE9IGJhMikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfcGlja2xlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmQoMjAsIDMwLCB6PXt9KQorCisgICAgICAgIGZvciB2ZXIgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBpY2tsZV92ZXI9dmVyKToKKyAgICAgICAgICAgICAgICBiYV9waWNrbGVkID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhiYSwgdmVyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiYV9waWNrbGVkKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c19yZXByKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGIsICosIGM6MT17fSwgKiprdykgLT4gezQyOidoYW0nfTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmQoMjAsIDMwLCB6PXt9KQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoYmEpLCByJzxCb3VuZEFyZ3VtZW50cyBcKGE9MjAsLipcfVx9XCk+JykKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfYXBwbHlfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgYj0xLCAqYXJncywgYzoxPXt9LCAqKmt3KTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisKKyAgICAgICAgYmEgPSBzaWcuYmluZCgyMCkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMjApLCAoJ2InLCAxKSwgKCdhcmdzJywgKCkpLCAoJ2MnLCB7fSksICgna3cnLCB7fSldKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd2UgcHJlc2VydmUgdGhlIG9yZGVyOgorICAgICAgICAjIGkuZS4gJ2MnIHNob3VsZCBiZSAqYmVmb3JlKiAna3cnLgorICAgICAgICBiYSA9IHNpZy5iaW5kKDEwLCAyMCwgMzAsIGQ9MSkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMTApLCAoJ2InLCAyMCksICgnYXJncycsICgzMCwpKSwgKCdjJywge30pLCAoJ2t3JywgeydkJzoxfSldKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgQm91bmRBcmd1bWVudHMgcHJvZHVjZWQgYnkgYmluZF9wYXJ0aWFsKCkKKyAgICAgICAgIyBhcmUgc3VwcG9ydGVkLgorICAgICAgICBkZWYgZm9vKGEsIGIpOiBwYXNzCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykKKyAgICAgICAgYmEgPSBzaWcuYmluZF9wYXJ0aWFsKDIwKQorICAgICAgICBiYS5hcHBseV9kZWZhdWx0cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBsaXN0KGJhLmFyZ3VtZW50cy5pdGVtcygpKSwKKyAgICAgICAgICAgIFsoJ2EnLCAyMCldKQorCisgICAgICAgICMgVGVzdCBubyBhcmdzCisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmQoKQorICAgICAgICBiYS5hcHBseV9kZWZhdWx0cygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksIFtdKQorCiAKIGNsYXNzIFRlc3RTaWduYXR1cmVQcml2YXRlSGVscGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2dldF9ib3VuZF9wYXJhbShzZWxmKToKQEAgLTMwNDYsNiArMzM4OCw2MSBAQAogICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgIE5vbmUpCiAKK2NsYXNzIFRlc3RTaWduYXR1cmVEZWZpbml0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUaGlzIHRlc3QgY2FzZSBwcm92aWRlcyBhIGhvbWUgZm9yIGNoZWNraW5nIHRoYXQgcGFydGljdWxhciBBUElzCisgICAgIyBoYXZlIHNpZ25hdHVyZXMgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgQHVuaXR0ZXN0LnNraXBJZihNSVNTSU5HX0NfRE9DU1RSSU5HUywKKyAgICAgICAgICAgICAgICAgICAgICJTaWduYXR1cmUgaW5mb3JtYXRpb24gZm9yIGJ1aWx0aW5zIHJlcXVpcmVzIGRvY3N0cmluZ3MiKQorICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2hhdmVfc2lnbmF0dXJlcyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGNoZWNrcyBhbGwgYnVpbHRpbiBjYWxsYWJsZXMgaW4gQ1B5dGhvbiBoYXZlIHNpZ25hdHVyZXMKKyAgICAgICAgIyBBIGZldyBoYXZlIHNpZ25hdHVyZXMgU2lnbmF0dXJlIGNhbid0IHlldCBoYW5kbGUsIHNvIHdlIHNraXAgdGhvc2UKKyAgICAgICAgIyBzaW5jZSB0aGV5IHdpbGwgaGF2ZSB0byB3YWl0IHVudGlsIFBFUCA0NTcgYWRkcyB0aGUgcmVxdWlyZWQKKyAgICAgICAgIyBpbnRyb3NwZWN0aW9uIHN1cHBvcnQgdG8gdGhlIGluc3BlY3QgbW9kdWxlCisgICAgICAgICMgU29tZSBvdGhlcnMgYWxzbyBoYXZlbid0IGJlZW4gY29udmVydGVkIHlldCBmb3IgdmFyaW91cyBvdGhlcgorICAgICAgICAjIHJlYXNvbnMsIHNvIHdlIGFsc28gc2tpcCB0aG9zZSBmb3IgdGhlIHRpbWUgYmVpbmcsIGJ1dCBkZXNpZ24KKyAgICAgICAgIyB0aGUgdGVzdCB0byBmYWlsIGluIG9yZGVyIHRvIGluZGljYXRlIHdoZW4gaXQgbmVlZHMgdG8gYmUKKyAgICAgICAgIyB1cGRhdGVkLgorICAgICAgICBub19zaWduYXR1cmUgPSBzZXQoKQorICAgICAgICAjIFRoZXNlIG5lZWQgUEVQIDQ1NyBncm91cHMKKyAgICAgICAgbmVlZHNfZ3JvdXBzID0geyJyYW5nZSIsICJzbGljZSIsICJkaXIiLCAiZ2V0YXR0ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibmV4dCIsICJpdGVyIiwgInZhcnMifQorICAgICAgICBub19zaWduYXR1cmUgfD0gbmVlZHNfZ3JvdXBzCisgICAgICAgICMgVGhlc2UgbmVlZCBQRVAgNDU3IGdyb3VwcyBvciBhIHNpZ25hdHVyZSBjaGFuZ2UgdG8gYWNjZXB0IE5vbmUKKyAgICAgICAgbmVlZHNfc2VtYW50aWNfdXBkYXRlID0geyJyb3VuZCJ9CisgICAgICAgIG5vX3NpZ25hdHVyZSB8PSBuZWVkc19zZW1hbnRpY191cGRhdGUKKyAgICAgICAgIyBUaGVzZSBuZWVkICphcmdzIHN1cHBvcnQgaW4gQXJndW1lbnQgQ2xpbmljCisgICAgICAgIG5lZWRzX3ZhcmFyZ3MgPSB7Im1pbiIsICJtYXgiLCAicHJpbnQiLCAiX19idWlsZF9jbGFzc19fIn0KKyAgICAgICAgbm9fc2lnbmF0dXJlIHw9IG5lZWRzX3ZhcmFyZ3MKKyAgICAgICAgIyBUaGVzZSBzaW1wbHkgd2VyZW4ndCBjb3ZlcmVkIGluIHRoZSBpbml0aWFsIEFDIGNvbnZlcnNpb24KKyAgICAgICAgIyBmb3IgYnVpbHRpbiBjYWxsYWJsZXMKKyAgICAgICAgbm90X2NvbnZlcnRlZF95ZXQgPSB7Im9wZW4iLCAiX19pbXBvcnRfXyJ9CisgICAgICAgIG5vX3NpZ25hdHVyZSB8PSBub3RfY29udmVydGVkX3lldAorICAgICAgICAjIFRoZXNlIGJ1aWx0aW4gdHlwZXMgYXJlIGV4cGVjdGVkIHRvIHByb3ZpZGUgaW50cm9zcGVjdGlvbiBpbmZvCisgICAgICAgIHR5cGVzX3dpdGhfc2lnbmF0dXJlcyA9IHNldCgpCisgICAgICAgICMgQ2hlY2sgdGhlIHNpZ25hdHVyZXMgd2UgZXhwZWN0IHRvIGJlIHRoZXJlCisgICAgICAgIG5zID0gdmFycyhidWlsdGlucykKKyAgICAgICAgZm9yIG5hbWUsIG9iaiBpbiBzb3J0ZWQobnMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBUaGUgYnVpbHRpbiB0eXBlcyBoYXZlbid0IGJlZW4gY29udmVydGVkIHRvIEFDIHlldAorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpIGFuZCAobmFtZSBub3QgaW4gdHlwZXNfd2l0aF9zaWduYXR1cmVzKToKKyAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGFsc28gc2tpcHMgYWxsIHRoZSBleGNlcHRpb24gdHlwZXMKKyAgICAgICAgICAgICAgICBub19zaWduYXR1cmUuYWRkKG5hbWUpCisgICAgICAgICAgICBpZiAobmFtZSBpbiBub19zaWduYXR1cmUpOgorICAgICAgICAgICAgICAgICMgTm90IHlldCBjb252ZXJ0ZWQKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYnVpbHRpbj1uYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShpbnNwZWN0LnNpZ25hdHVyZShvYmopKQorICAgICAgICAjIENoZWNrIGNhbGxhYmxlcyB0aGF0IGhhdmVuJ3QgYmVlbiBjb252ZXJ0ZWQgZG9uJ3QgY2xhaW0gYSBzaWduYXR1cmUKKyAgICAgICAgIyBUaGlzIGVuc3VyZXMgdGhpcyB0ZXN0IHdpbGwgc3RhcnQgZmFpbGluZyBhcyBtb3JlIHNpZ25hdHVyZXMgYXJlCisgICAgICAgICMgYWRkZWQsIHNvIHRoZSBhZmZlY3RlZCBpdGVtcyBjYW4gYmUgbW92ZWQgaW50byB0aGUgc2NvcGUgb2YgdGhlCisgICAgICAgICMgcmVncmVzc2lvbiB0ZXN0IGFib3ZlCisgICAgICAgIGZvciBuYW1lIGluIG5vX3NpZ25hdHVyZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ1aWx0aW49bmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2JqLl9fdGV4dF9zaWduYXR1cmVfXykKKwogCiBjbGFzcyBUZXN0VW53cmFwKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMzE4Nyw4ICszNTg0LDEwIEBACiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCiAgICAgICAgIFRlc3ROb0VPTCwgVGVzdFNpZ25hdHVyZU9iamVjdCwgVGVzdFNpZ25hdHVyZUJpbmQsIFRlc3RQYXJhbWV0ZXJPYmplY3QsCi0gICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdFNpZ25hdHVyZVByaXZhdGVIZWxwZXJzLCBUZXN0R2V0Q2xvc3VyZVZhcnMsCi0gICAgICAgIFRlc3RVbndyYXAsIFRlc3RNYWluLCBUZXN0UmVsb2FkCisgICAgICAgIFRlc3RCb3VuZEFyZ3VtZW50cywgVGVzdFNpZ25hdHVyZVByaXZhdGVIZWxwZXJzLAorICAgICAgICBUZXN0U2lnbmF0dXJlRGVmaW5pdGlvbnMsCisgICAgICAgIFRlc3RHZXRDbG9zdXJlVmFycywgVGVzdFVud3JhcCwgVGVzdE1haW4sIFRlc3RSZWxvYWQsCisgICAgICAgIFRlc3RHZXRDb3JvdXRpbmVTdGF0ZQogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggZTk0NjAyZS4uY2I1N2YxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTQ1MSw4ICs0NTEsNSBAQAogICAgICAgICBjaGVjaygnMTIzXHVkODAwJykKICAgICAgICAgY2hlY2soJzEyM1x1ZDgwMCcsIDEwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoSW50VGVzdENhc2VzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludF9saXRlcmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbnRfbGl0ZXJhbC5weQppbmRleCAxZDU3OGE3Li5iZjcyNTcxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ludF9saXRlcmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50X2xpdGVyYWwucHkKQEAgLTQsNyArNCw2IEBACiAiIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgVGVzdEhleE9jdEJpbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE0MCw4ICsxMzksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0wYjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAsIC05MjIzMzcyMDM2ODU0Nzc1ODA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0wYjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEsIC0xODQ0Njc0NDA3MzcwOTU1MTYxNSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RIZXhPY3RCaW4pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IGY2NTQ0MDYuLjQ2NWQ0NWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMzUsNyArMzUsNyBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUsIFVzZXJMaXN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBydW5fcHl0aG9uX3VudGlsX2VuZAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgcnVuX3B5dGhvbl91bnRpbF9lbmQKIAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGlvICAjIEMgaW1wbGVtZW50YXRpb24gb2YgaW8KQEAgLTQ0LDEwICs0NCw2IEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKLXRyeToKLSAgICBpbXBvcnQgZmNudGwKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmY250bCA9IE5vbmUKIAogZGVmIF9kZWZhdWx0X2NodW5rX3NpemUoKToKICAgICAiIiJHZXQgdGhlIGRlZmF1bHQgVGV4dElPV3JhcHBlciBjaHVuayBzaXplIiIiCkBAIC0zNjcsOCArMzYzLDggQEAKIAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYub3BlbiwgZm5fd2l0aF9OVUwsICd3JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtNzIzLDYgKzcxOSwyMSBAQAogICAgIHBhc3MKIAogCitAc3VwcG9ydC5jcHl0aG9uX29ubHkKK2NsYXNzIEFQSU1pc21hdGNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9SYXdJT0Jhc2VfaW9faW5fcHlpb19tYXRjaChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHB5aW8gUmF3SU9CYXNlIGNsYXNzIGhhcyBhbGwgYyBSYXdJT0Jhc2UgbWV0aG9kcyIiIgorICAgICAgICBtaXNtYXRjaCA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaChweWlvLlJhd0lPQmFzZSwgaW8uUmF3SU9CYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9KCdfX3dlYWtyZWZfXycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaXNtYXRjaCwgc2V0KCksIG1zZz0nUHl0aG9uIFJhd0lPQmFzZSBkb2VzIG5vdCBoYXZlIGFsbCBDIFJhd0lPQmFzZSBtZXRob2RzJykKKworICAgIGRlZiB0ZXN0X1Jhd0lPQmFzZV9weWlvX2luX2lvX21hdGNoKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYyBSYXdJT0Jhc2UgY2xhc3MgaGFzIGFsbCBweWlvIFJhd0lPQmFzZSBtZXRob2RzIiIiCisgICAgICAgIG1pc21hdGNoID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKGlvLlJhd0lPQmFzZSwgcHlpby5SYXdJT0Jhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzbWF0Y2gsIHNldCgpLCBtc2c9J0MgUmF3SU9CYXNlIGRvZXMgbm90IGhhdmUgYWxsIFB5dGhvbiBSYXdJT0Jhc2UgbWV0aG9kcycpCisKKwogY2xhc3MgQ29tbW9uQnVmZmVyZWRUZXN0czoKICAgICAjIFRlc3RzIGNvbW1vbiB0byBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tCiAKQEAgLTgxMSw3ICs4MjIsNyBAQAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIHJhdyA9IHNlbGYuTW9ja1Jhd0lPKCkKICAgICAgICAgYiA9IHNlbGYudHAocmF3KQotICAgICAgICBjbHNuYW1lID0gIiVzLiVzIiAlIChzZWxmLnRwLl9fbW9kdWxlX18sIHNlbGYudHAuX19uYW1lX18pCisgICAgICAgIGNsc25hbWUgPSAiJXMuJXMiICUgKHNlbGYudHAuX19tb2R1bGVfXywgc2VsZi50cC5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihiKSwgIjwlcz4iICUgY2xzbmFtZSkKICAgICAgICAgcmF3Lm5hbWUgPSAiZHVtbXkiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihiKSwgIjwlcyBuYW1lPSdkdW1teSc+IiAlIGNsc25hbWUpCkBAIC05ODUsNiArOTk2LDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJjYiIpCiAKKyAgICBkZWYgdGVzdF9yZWFkaW50bzEoc2VsZik6CisgICAgICAgIGJ1ZmZlcl9zaXplID0gMTAKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoYiJhYmMiLCBiImRlIiwgYiJmZ2giLCBiImprbCIpKQorICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8sIGJ1ZmZlcl9zaXplPWJ1ZmZlcl9zaXplKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucGVlaygzKSwgYidhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50bzEoYiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJhYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvMShiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzoxXSwgYiJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8xKGIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiZGUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgMikKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKmJ1ZmZlcl9zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnBlZWsoMyksIGInZmdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8xKGIpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOjZdLCBiImZnaGprbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCA0KQorCisgICAgZGVmIHRlc3RfcmVhZGludG9fYXJyYXkoc2VsZik6CisgICAgICAgIGJ1ZmZlcl9zaXplID0gNjAKKyAgICAgICAgZGF0YSA9IGIiYSIgKiAyNgorICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChkYXRhLCkpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbywgYnVmZmVyX3NpemU9YnVmZmVyX3NpemUpCisKKyAgICAgICAgIyBDcmVhdGUgYW4gYXJyYXkgd2l0aCBlbGVtZW50IHNpemUgPiAxIGJ5dGUKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdpJywgYid4JyAqIDMyKQorICAgICAgICBhc3NlcnQgbGVuKGIpICE9IDE2CisKKyAgICAgICAgIyBSZWFkIGludG8gaXQuIFdlIHNob3VsZCBnZXQgYXMgbWFueSAqYnl0ZXMqIGFzIHdlIGNhbiBmaXQgaW50byBiCisgICAgICAgICMgKHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzKQorICAgICAgICBuID0gYnVmaW8ucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG4sIGxlbihiKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgb2xkIGNvbnRlbnRzIG9mIGIgYXJlIHByZXNlcnZlZAorICAgICAgICBibSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhuLCBsZW4oYm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtWzpuXSwgZGF0YVs6bl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm1bbjpdLCBiJ3gnICogKGxlbihibVtuOl0pKSkKKworICAgIGRlZiB0ZXN0X3JlYWRpbnRvMV9hcnJheShzZWxmKToKKyAgICAgICAgYnVmZmVyX3NpemUgPSA2MAorICAgICAgICBkYXRhID0gYiJhIiAqIDI2CisgICAgICAgIHJhd2lvID0gc2VsZi5Nb2NrUmF3SU8oKGRhdGEsKSkKKyAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvLCBidWZmZXJfc2l6ZT1idWZmZXJfc2l6ZSkKKworICAgICAgICAjIENyZWF0ZSBhbiBhcnJheSB3aXRoIGVsZW1lbnQgc2l6ZSA+IDEgYnl0ZQorICAgICAgICBiID0gYXJyYXkuYXJyYXkoJ2knLCBiJ3gnICogMzIpCisgICAgICAgIGFzc2VydCBsZW4oYikgIT0gMTYKKworICAgICAgICAjIFJlYWQgaW50byBpdC4gV2Ugc2hvdWxkIGdldCBhcyBtYW55ICpieXRlcyogYXMgd2UgY2FuIGZpdCBpbnRvIGIKKyAgICAgICAgIyAod2hpY2ggaXMgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMpCisgICAgICAgIG4gPSBidWZpby5yZWFkaW50bzEoYikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG4sIGxlbihiKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgb2xkIGNvbnRlbnRzIG9mIGIgYXJlIHByZXNlcnZlZAorICAgICAgICBibSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhuLCBsZW4oYm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtWzpuXSwgZGF0YVs6bl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm1bbjpdLCBiJ3gnICogKGxlbihibVtuOl0pKSkKKwogICAgIGRlZiB0ZXN0X3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgZGVmIGJ1ZmlvKCk6CiAgICAgICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChiImFiY1xuIiwgYiJkXG4iLCBiImVmIikpCkBAIC0yOTEzLDYgKzI5ODksMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIm9rIiwgb3V0LmRlY29kZSgpLnN0cmlwKCkpCiAKKyAgICBkZWYgdGVzdF9yZWFkX2J5dGVzbGlrZShzZWxmKToKKyAgICAgICAgciA9IE1lbXZpZXdCeXRlc0lPKGInSnVzdCBzb21lIHJhbmRvbSBzdHJpbmdcbicpCisgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIociwgJ3V0Zi04JykKKworICAgICAgICAjIFRleHRJT3dyYXBwZXIgd2lsbCBub3QgcmVhZCB0aGUgZnVsbCBzdHJpbmcsIGJlY2F1c2UKKyAgICAgICAgIyB3ZSB0cnVuY2F0ZSBpdCB0byBhIG11bHRpcGxlIG9mIHRoZSBuYXRpdmUgaW50IHNpemUKKyAgICAgICAgIyBzbyB0aGF0IHdlIGNhbiBjb25zdHJ1Y3QgYSBtb3JlIGNvbXBsZXggbWVtb3J5dmlldy4KKyAgICAgICAgYnl0ZXNfdmFsID0gIF90b19tZW1vcnl2aWV3KHIuZ2V0dmFsdWUoKSkudG9ieXRlcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlYWQoMjAwKSwgYnl0ZXNfdmFsLmRlY29kZSgndXRmLTgnKSkKKwogICAgIGRlZiB0ZXN0X2lzc3VlMjI4NDkoc2VsZik6CiAgICAgICAgIGNsYXNzIEYob2JqZWN0KToKICAgICAgICAgICAgIGRlZiByZWFkYWJsZShzZWxmKTogcmV0dXJuIFRydWUKQEAgLTI5MjksNiArMzAxNiwyNSBAQAogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKEYoKSwgZW5jb2Rpbmc9J3V0Zi04JykKIAogCitjbGFzcyBNZW12aWV3Qnl0ZXNJTyhpby5CeXRlc0lPKToKKyAgICAnJydBIEJ5dGVzSU8gb2JqZWN0IHdob3NlIHJlYWQgbWV0aG9kIHJldHVybnMgbWVtb3J5dmlld3MKKyAgICAgICByYXRoZXIgdGhhbiBieXRlcycnJworCisgICAgZGVmIHJlYWQxKHNlbGYsIGxlbl8pOgorICAgICAgICByZXR1cm4gX3RvX21lbW9yeXZpZXcoc3VwZXIoKS5yZWFkMShsZW5fKSkKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbl8pOgorICAgICAgICByZXR1cm4gX3RvX21lbW9yeXZpZXcoc3VwZXIoKS5yZWFkKGxlbl8pKQorCitkZWYgX3RvX21lbW9yeXZpZXcoYnVmKToKKyAgICAnJydDb252ZXJ0IGJ5dGVzLW9iamVjdCAqYnVmKiB0byBhIG5vbi10cml2aWFsIG1lbW9yeXZpZXcnJycKKworICAgIGFyciA9IGFycmF5LmFycmF5KCdpJykKKyAgICBpZHggPSBsZW4oYnVmKSAtIGxlbihidWYpICUgYXJyLml0ZW1zaXplCisgICAgYXJyLmZyb21ieXRlcyhidWZbOmlkeF0pCisgICAgcmV0dXJuIG1lbW9yeXZpZXcoYXJyKQorCisKIGNsYXNzIENUZXh0SU9XcmFwcGVyVGVzdChUZXh0SU9XcmFwcGVyVGVzdCk6CiAgICAgaW8gPSBpbwogICAgIHNodXRkb3duX2Vycm9yID0gIlJ1bnRpbWVFcnJvcjogY291bGQgbm90IGZpbmQgaW8gbW9kdWxlIHN0YXRlIgpAQCAtMjkzNyw4ICszMDQzLDYgQEAKICAgICAgICAgciA9IHNlbGYuQnl0ZXNJTyhiIlx4YzNceGE5XG5cbiIpCiAgICAgICAgIGIgPSBzZWxmLkJ1ZmZlcmVkUmVhZGVyKHIsIDEwMDApCiAgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Ll9faW5pdF9fLCBiLCBuZXdsaW5lPTQyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnJlYWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuX19pbml0X18sIGIsIG5ld2xpbmU9J3h5enp5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5yZWFkKQogCkBAIC0zMTc1LDYgKzMyNzksOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGFsbCkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgInJlYWRpbnRvIik6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkaW50bywgYnl0ZWFycmF5KDEwMjQpKQorICAgICAgICAgICAgaWYgaGFzYXR0cihmLCAicmVhZGludG8xIik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkaW50bzEsIGJ5dGVhcnJheSgxMDI0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKQEAgLTMyODgsMjYgKzMzOTQsMjAgQEAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgKiprd2FyZ3MpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBmLCBwcm90b2NvbCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAnZmNudGwgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIHRlc3Rfbm9uYmxvY2tfcGlwZV93cml0ZV9iaWdidWYoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9uYmxvY2tfcGlwZV93cml0ZSgxNioxMDI0KQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmNudGwsICdmY250bCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKICAgICBkZWYgdGVzdF9ub25ibG9ja19waXBlX3dyaXRlX3NtYWxsYnVmKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGUoMTAyNCkKIAotICAgIGRlZiBfc2V0X25vbl9ibG9ja2luZyhzZWxmLCBmZCk6Ci0gICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZmxhZ3MsIC0xKQotICAgICAgICByZXMgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmxhZ3MgfCBvcy5PX05PTkJMT0NLKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMCkKLQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdzZXRfYmxvY2tpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnb3Muc2V0X2Jsb2NraW5nKCkgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIF90ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGUoc2VsZiwgYnVmc2l6ZSk6CiAgICAgICAgIHNlbnQgPSBbXQogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKLSAgICAgICAgc2VsZi5fc2V0X25vbl9ibG9ja2luZyhyKQotICAgICAgICBzZWxmLl9zZXRfbm9uX2Jsb2NraW5nKHcpCisgICAgICAgIG9zLnNldF9ibG9ja2luZyhyLCBGYWxzZSkKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHcsIEZhbHNlKQogCiAgICAgICAgICMgVG8gZXhlcmNpc2UgYWxsIGNvZGUgcGF0aHMgaW4gdGhlIEMgaW1wbGVtZW50YXRpb24gd2UgbmVlZAogICAgICAgICAjIHRvIHBsYXkgd2l0aCBidWZmZXIgc2l6ZXMuICBGb3IgaW5zdGFuY2UsIGlmIHdlIGNob29zZSBhCkBAIC0zNDU2LDYgKzM1NTYsNyBAQAogICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogICAgICAgICBmZG9wZW5fa3dhcmdzWyJjbG9zZWZkIl0gPSBGYWxzZQorICAgICAgICBsYXJnZV9kYXRhID0gaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pICsgMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2lvID0gc2VsZi5pby5vcGVuKHcsICoqZmRvcGVuX2t3YXJncykKICAgICAgICAgICAgIHQuc3RhcnQoKQpAQCAtMzQ2Nyw4ICszNTY4LDcgQEAKICAgICAgICAgICAgICMgaGFuZGxlcnMsIHdoaWNoIGluIHRoaXMgY2FzZSB3aWxsIGludm9rZSBhbGFybV9pbnRlcnJ1cHQoKS4KICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUoaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pICsgMSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHdpby53cml0ZSwgbGFyZ2VfZGF0YSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCiAgICAgICAgICAgICAgICAgdC5qb2luKCkKQEAgLTM1NjksMTEgKzM2NjksMTMgQEAKICAgICAgICAgcmV0dXJuaW5nIGEgcGFydGlhbCByZXN1bHQgb3IgRUlOVFIpLCBwcm9wZXJseSBpbnZva2VzIHRoZSBzaWduYWwKICAgICAgICAgaGFuZGxlciBhbmQgcmV0cmllcyBpZiB0aGUgbGF0dGVyIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4iIiIKICAgICAgICAgc2VsZWN0ID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzZWxlY3QiKQorCiAgICAgICAgICMgQSBxdWFudGl0eSB0aGF0IGV4Y2VlZHMgdGhlIGJ1ZmZlciBzaXplIG9mIGFuIGFub255bW91cyBwaXBlJ3MKICAgICAgICAgIyB3cml0ZSBlbmQuCiAgICAgICAgIE4gPSBzdXBwb3J0LlBJUEVfTUFYX1NJWkUKICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQogICAgICAgICBmZG9wZW5fa3dhcmdzWyJjbG9zZWZkIl0gPSBGYWxzZQorCiAgICAgICAgICMgV2UgbmVlZCBhIHNlcGFyYXRlIHRocmVhZCB0byByZWFkIGZyb20gdGhlIHBpcGUgYW5kIGFsbG93IHRoZQogICAgICAgICAjIHdyaXRlKCkgdG8gZmluaXNoLiAgVGhpcyB0aHJlYWQgaXMgc3RhcnRlZCBhZnRlciB0aGUgU0lHQUxSTSBpcwogICAgICAgICAjIHJlY2VpdmVkIChmb3JjaW5nIGEgZmlyc3QgRUlOVFIgaW4gd3JpdGUoKSkuCkBAIC0zNTk2LDYgKzM2OTgsOCBAQAogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCiAgICAgICAgIGRlZiBhbGFybTIoc2lnLCBmcmFtZSk6CiAgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBsYXJnZV9kYXRhID0gaXRlbSAqIE4KICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgYWxhcm0xKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aW8gPSBzZWxmLmlvLm9wZW4odywgKipmZG9wZW5fa3dhcmdzKQpAQCAtMzYwNSw3ICszNzA5LDkgQEAKICAgICAgICAgICAgICMgICBhbmQgdGhlIGZpcnN0IGFsYXJtKQogICAgICAgICAgICAgIyAtIHNlY29uZCByYXcgd3JpdGUoKSByZXR1cm5zIEVJTlRSIChiZWNhdXNlIG9mIHRoZSBzZWNvbmQgYWxhcm0pCiAgICAgICAgICAgICAjIC0gc3Vic2VxdWVudCB3cml0ZSgpcyBhcmUgc3VjY2Vzc2Z1bCAoZWl0aGVyIHBhcnRpYWwgb3IgY29tcGxldGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIHdpby53cml0ZShpdGVtICogTikpCisgICAgICAgICAgICB3cml0dGVuID0gd2lvLndyaXRlKGxhcmdlX2RhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIHdyaXR0ZW4pCisKICAgICAgICAgICAgIHdpby5mbHVzaCgpCiAgICAgICAgICAgICB3cml0ZV9maW5pc2hlZCA9IFRydWUKICAgICAgICAgICAgIHQuam9pbigpCkBAIC0zNjQ1LDcgKzM3NTEsNyBAQAogCiAKIGRlZiBsb2FkX3Rlc3RzKCphcmdzKToKLSAgICB0ZXN0cyA9IChDSU9UZXN0LCBQeUlPVGVzdCwKKyAgICB0ZXN0cyA9IChDSU9UZXN0LCBQeUlPVGVzdCwgQVBJTWlzbWF0Y2hUZXN0LAogICAgICAgICAgICAgIENCdWZmZXJlZFJlYWRlclRlc3QsIFB5QnVmZmVyZWRSZWFkZXJUZXN0LAogICAgICAgICAgICAgIENCdWZmZXJlZFdyaXRlclRlc3QsIFB5QnVmZmVyZWRXcml0ZXJUZXN0LAogICAgICAgICAgICAgIENCdWZmZXJlZFJXUGFpclRlc3QsIFB5QnVmZmVyZWRSV1BhaXJUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pb2N0bC5weSBiL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkKaW5kZXggZWZlOWY1MS4uYjgyYjY1MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pb2N0bC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lvY3RsLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IGFycmF5CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGltcG9ydF9tb2R1bGUsIGdldF9hdHRyaWJ1dGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlLCBnZXRfYXR0cmlidXRlCiBpbXBvcnQgb3MsIHN0cnVjdAogZmNudGwgPSBpbXBvcnRfbW9kdWxlKCdmY250bCcpCiB0ZXJtaW9zID0gaW1wb3J0X21vZHVsZSgndGVybWlvcycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CmluZGV4IGJmYjU2OTkuLmMyMTdkMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CkBAIC05LDcgKzksOSBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBvcGVyYXRvcgoraW1wb3J0IHBpY2tsZQogaW1wb3J0IGlwYWRkcmVzcworaW1wb3J0IHdlYWtyZWYKIAogCiBjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtODMsNiArODUsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoZXgsIHNlbGYuZmFjdG9yeSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgc2VsZi5mYWN0b3J5KDEpKQogCisgICAgZGVmIHBpY2tsZV90ZXN0KHNlbGYsIGFkZHIpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICB4ID0gc2VsZi5mYWN0b3J5KGFkZHIpCisgICAgICAgICAgICAgICAgeSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoeCwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKwogCiBjbGFzcyBDb21tb25UZXN0TWl4aW5fdjQoQ29tbW9uVGVzdE1peGluKToKIApAQCAtMjQ4LDYgKzI1NywxMiBAQAogICAgICAgICBhc3NlcnRCYWRPY3RldCgiMjU3LjAuMC4wIiwgMjU3KQogICAgICAgICBhc3NlcnRCYWRPY3RldCgiMTkyLjE2OC4wLjk5OSIsIDk5OSkKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMTkyLjAuMi4xJykKKworICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CisgICAgICAgIHdlYWtyZWYucmVmKHNlbGYuZmFjdG9yeSgnMTkyLjAuMi4xJykpCisKIAogY2xhc3MgQWRkcmVzc1Rlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgQ29tbW9uVGVzdE1peGluX3Y2KToKICAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzCkBAIC0zODAsNiArMzk1LDEyIEBACiAgICAgICAgIGFzc2VydEJhZFBhcnQoIjAyMDAxOmRiODo6IiwgIjAyMDAxIikKICAgICAgICAgYXNzZXJ0QmFkUGFydCgnMjAwMTo4ODg4ODg6OjEnLCAiODg4ODg4IikKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OicpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICB3ZWFrcmVmLnJlZihzZWxmLmZhY3RvcnkoJzIwMDE6ZGI4OjonKSkKKwogCiBjbGFzcyBOZXRtYXNrVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbl92NCk6CiAgICAgIiIiSW5wdXQgdmFsaWRhdGlvbiBvbiBpbnRlcmZhY2VzIGFuZCBuZXR3b3JrcyBpcyB2ZXJ5IHNpbWlsYXIiIiIKQEAgLTQ0Myw2ICs0NjQsMTEgQEAKICAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICJwdWRkaW5nIikKICAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICI6OiIpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMC8yNycpCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMC8zMScpICAjIElQVjRMRU5HVEggLSAxCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMCcpICAgICAjIElQVjRMRU5HVEgKKwogCiBjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgogICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZQpAQCAtNTAxLDYgKzUyNywxMSBAQAogICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAicHVkZGluZyIpCiAgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6IiwgIjo6IikKIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OjEwMDAvMTI0JykKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OjEwMDAvMTI3JykgICMgSVBWNkxFTkdUSCAtIDEKKyAgICAgICAgc2VsZi5waWNrbGVfdGVzdCgnMjAwMTpkYjg6OjEwMDAnKSAgICAgICMgSVBWNkxFTkdUSAorCiAKIGNsYXNzIEludGVyZmFjZVRlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92Nik6CiAgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlCkBAIC02NzAsNiArNzAxLDExOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY2SW50ZXJmYWNlKCc6OjEvMTI4JykiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MScpKSkKIAorICAgICMgaXNzdWUgIzE2NTMxOiBjb25zdHJ1Y3RpbmcgSVB2NE5ldHdvcmsgZnJvbSBhIChhZGRyZXNzLCBtYXNrKSB0dXBsZQorICAgIGRlZiB0ZXN0SVB2NFR1cGxlKHNlbGYpOgorICAgICAgICAjIC8zMgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsIDMyKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLCAzMikpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgzMjIxMjI1OTg1LCAzMikpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4yNTUnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjI1NScpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4yNTUnKSksIG5ldCkKKyAgICAgICAgIyBzdHJpY3Q9VHJ1ZSBhbmQgaG9zdCBiaXRzIHNldAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywgMjQpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwgMjQpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCgzMjIxMjI1OTg1LCAyNCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjEnLCAnMjU1LjI1NS4yNTUuMCcpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwgJzI1NS4yNTUuMjU1LjAnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgJzI1NS4yNTUuMjU1LjAnKSkKKyAgICAgICAgIyBzdHJpY3Q9RmFsc2UgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsIDI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsIDI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgMjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKworICAgICAgICAjIC8yNAorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJykpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4wJywgMjQpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsIDI0KSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODQsIDI0KSksIG5ldCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCgnMTkyLjAuMi4xJywgMjQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoKDMyMjEyMjU5ODUsIDI0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpKQorCisgICAgIyBpc3N1ZSAjMTY1MzE6IGNvbnN0cnVjdGluZyBJUHY2TmV0d29yayBmcm9tIGEgKGFkZHJlc3MsIG1hc2spIHR1cGxlCisgICAgZGVmIHRlc3RJUHY2VHVwbGUoc2VsZik6CisgICAgICAgICMgLzEyOAorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8xMjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygoJzIwMDE6ZGI4OjonLCAnMTI4JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoCisgICAgICAgICAgICAgICAgKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwLCAxMjgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgJzEyOCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6JywgJzk2JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoCisgICAgICAgICAgICAgICAgKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwLCA5NikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKGlwLCAnOTYnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorCisgICAgICAgICMgc3RyaWN0PVRydWUgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygoJzIwMDE6ZGI4OjoxJywgOTYpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCgKKyAgICAgICAgICAgICAgICA0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MSwgOTYpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgOTYpKQorICAgICAgICAjIHN0cmljdD1GYWxzZSBhbmQgaG9zdCBiaXRzIHNldAorICAgICAgICBuZXQgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygoJzIwMDE6ZGI4OjoxJywgOTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MSwgOTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKGlwLCA5NiksIHN0cmljdD1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorCisgICAgICAgICMgLzk2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoKCcyMDAxOmRiODo6MScsICc5NicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEsICc5NicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKSkKKwogICAgICMgaXNzdWU1NwogICAgIGRlZiB0ZXN0QWRkcmVzc0ludE1hdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykgKyAyNTUsCkBAIC02OTAsMjAgKzgzNCwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAyICoqIGlwYWRkcmVzcy5JUFY2TEVOR1RIKQogCiAgICAgZGVmIHRlc3RJbnRlcm5hbHMoc2VsZik6Ci0gICAgICAgIGZpcnN0LCBsYXN0ID0gaXBhZGRyZXNzLl9maW5kX2FkZHJlc3NfcmFuZ2UoWwotICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMCcpLAotICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMicpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXJzdCwgbGFzdCkKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTEnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFtpcDFdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhpcDEsIGlwMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLl9maW5kX2FkZHJlc3NfcmFuZ2UoW2lwMSwgaXAzXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoaXAxLCBpcDEpLCAoaXAzLCBpcDMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFtpcDEsIGlwMiwgaXAzXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoaXAxLCBpcDMpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMjgsIGlwYWRkcmVzcy5fY291bnRfcmlnaHRoYW5kX3plcm9fYml0cygwLCAxMjgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY0TmV0d29yaygnMS4yLjMuMC8yNCcpIiwgcmVwcihzZWxmLmlwdjRfbmV0d29yaykpCiAKLSAgICBkZWYgdGVzdE1pc3NpbmdBZGRyZXNzVmVyc2lvbihzZWxmKToKLSAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZUFkZHJlc3MpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLip2ZXJzaW9uIik6Ci0gICAgICAgICAgICBicm9rZW4udmVyc2lvbgotCiAgICAgZGVmIHRlc3RNaXNzaW5nTmV0d29ya1ZlcnNpb24oc2VsZik6CiAgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VOZXR3b3JrKToKICAgICAgICAgICAgIHBhc3MKQEAgLTE2MzUsNiArMTc3NywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIzLmV4cGxvZGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTIuMTY4LjE3OC4xJywgYWRkcjQuZXhwbG9kZWQpCiAKKyAgICBkZWYgdGVzdFJldmVyc2VQb2ludGVyKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4wLjAuMTI3LmluLWFkZHIuYXJwYScsIGFkZHIxLnJldmVyc2VfcG9pbnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuOC4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYi5kLjAuMS4wLjAuMi5pcDYuYXJwYScsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjIucmV2ZXJzZV9wb2ludGVyKQorCiAgICAgZGVmIHRlc3RJbnRSZXByZXNlbnRhdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxNjkwOTA2MCwgaW50KHNlbGYuaXB2NF9hZGRyZXNzKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MjU0MDYxNjgyOTE4MjQ2OTQzMzU0Nzc2MjQ4MjA5Nzk0NjYyNSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXNpbnN0YW5jZS5weSBiL0xpYi90ZXN0L3Rlc3RfaXNpbnN0YW5jZS5weQppbmRleCA3YTY3MzBlLi5lNjNkNTliIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pc2luc3RhbmNlLnB5CkBAIC0zLDcgKzMsNiBAQAogIyB0ZXN0aW5nIG9mIGVycm9yIGNvbmRpdGlvbnMgdW5jb3ZlcmVkIHdoZW4gdXNpbmcgZXh0ZW5zaW9uIHR5cGVzLgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN5cwogCiAKQEAgLTI1OSwzMSArMjU4LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXNzdWJjbGFzcyhzdHIsIChzdHIsIChDaGlsZCwgTmV3Q2hpbGQsIHN0cikpKSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzX3JlY3Vyc2lvbl9saW1pdChzZWxmKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCBpc3N1YmNsYXNzIHJhaXNlcyBSdW50aW1lRXJyb3IgYmVmb3JlIHRoZSBDIHN0YWNrIGlzCisgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgaXNzdWJjbGFzcyByYWlzZXMgUmVjdXJzaW9uRXJyb3IgYmVmb3JlIHRoZSBDIHN0YWNrIGlzCiAgICAgICAgICMgYmxvd24KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBibG93c3RhY2ssIGlzc3ViY2xhc3MsIHN0ciwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgYmxvd3N0YWNrLCBpc3N1YmNsYXNzLCBzdHIsIHN0cikKIAogICAgIGRlZiB0ZXN0X2lzaW5zdGFuY2VfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgotICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IGlzc3ViY2xhc3MgcmFpc2VzIFJ1bnRpbWVFcnJvciBiZWZvcmUgdGhlIEMgc3RhY2sgaXMKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCBpc3N1YmNsYXNzIHJhaXNlcyBSZWN1cnNpb25FcnJvciBiZWZvcmUgdGhlIEMgc3RhY2sgaXMKICAgICAgICAgIyBibG93bgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGJsb3dzdGFjaywgaXNpbnN0YW5jZSwgJycsIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGJsb3dzdGFjaywgaXNpbnN0YW5jZSwgJycsIHN0cikKIAogZGVmIGJsb3dzdGFjayhmeG4sIGFyZywgY29tcGFyZV90byk6CiAgICAgIyBNYWtlIHN1cmUgdGhhdCBjYWxsaW5nIGlzaW5zdGFuY2Ugd2l0aCBhIGRlZXBseSBuZXN0ZWQgdHVwbGUgZm9yIGl0cwotICAgICMgYXJndW1lbnQgd2lsbCByYWlzZSBSdW50aW1lRXJyb3IgZXZlbnR1YWxseS4KKyAgICAjIGFyZ3VtZW50IHdpbGwgcmFpc2UgUmVjdXJzaW9uRXJyb3IgZXZlbnR1YWxseS4KICAgICB0dXBsZV9hcmcgPSAoY29tcGFyZV90bywpCiAgICAgZm9yIGNudCBpbiByYW5nZShzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSs1KToKICAgICAgICAgdHVwbGVfYXJnID0gKHR1cGxlX2FyZywpCiAgICAgICAgIGZ4bihhcmcsIHR1cGxlX2FyZykKIAogDAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBUZXN0SXNJbnN0YW5jZUV4Y2VwdGlvbnMsCi0gICAgICAgIFRlc3RJc1N1YmNsYXNzRXhjZXB0aW9ucywKLSAgICAgICAgVGVzdElzSW5zdGFuY2VJc1N1YmNsYXNzCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggOTkzNDM4Yy4uNWIzYmE3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTE4NzAsOCArMTg3MCw2IEBACiAgICAgICAgICAgICBoaXN0LmFwcGVuZCgzKQogICAgICAgICAgICAgeWllbGQgMgogICAgICAgICAgICAgaGlzdC5hcHBlbmQoNCkKLSAgICAgICAgICAgIGlmIHg6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogCiAgICAgICAgIGhpc3QgPSBbXQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbGlzdCwgY2hhaW4oZ2VuMSgpLCBnZW4yKEZhbHNlKSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKaW5kZXggMmNmMTAzMi4uMDgwN2U2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQpAQCAtOSwxMiArOSwxNSBAQAogIyBpbXBvcnQganNvbiB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMKIGNqc29uID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdqc29uJywgZnJlc2g9WydfanNvbiddKQogcHlqc29uID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdqc29uJywgYmxvY2tlZD1bJ19qc29uJ10pCisjIEpTT05EZWNvZGVFcnJvciBpcyBjYWNoZWQgaW5zaWRlIHRoZSBfanNvbiBtb2R1bGUKK2Nqc29uLkpTT05EZWNvZGVFcnJvciA9IGNqc29uLmRlY29kZXIuSlNPTkRlY29kZUVycm9yID0ganNvbi5KU09ORGVjb2RlRXJyb3IKIAogIyBjcmVhdGUgdHdvIGJhc2UgY2xhc3NlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgb3RoZXIgdGVzdHMKIGNsYXNzIFB5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAganNvbiA9IHB5anNvbgogICAgIGxvYWRzID0gc3RhdGljbWV0aG9kKHB5anNvbi5sb2FkcykKICAgICBkdW1wcyA9IHN0YXRpY21ldGhvZChweWpzb24uZHVtcHMpCisgICAgSlNPTkRlY29kZUVycm9yID0gc3RhdGljbWV0aG9kKHB5anNvbi5KU09ORGVjb2RlRXJyb3IpCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNqc29uLCAncmVxdWlyZXMgX2pzb24nKQogY2xhc3MgQ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjIsNiArMjUsNyBAQAogICAgICAgICBqc29uID0gY2pzb24KICAgICAgICAgbG9hZHMgPSBzdGF0aWNtZXRob2QoY2pzb24ubG9hZHMpCiAgICAgICAgIGR1bXBzID0gc3RhdGljbWV0aG9kKGNqc29uLmR1bXBzKQorICAgICAgICBKU09ORGVjb2RlRXJyb3IgPSBzdGF0aWNtZXRob2QoY2pzb24uSlNPTkRlY29kZUVycm9yKQogCiAjIHRlc3QgUHlUZXN0IGFuZCBDVGVzdCBjaGVja2luZyBpZiB0aGUgZnVuY3Rpb25zIGNvbWUgZnJvbSB0aGUgcmlnaHQgbW9kdWxlCiBjbGFzcyBUZXN0UHlUZXN0KFB5VGVzdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKaW5kZXggNTkxYjJlMi4uY2M4M2I0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQpAQCAtNjMsMTIgKzYzLDEyIEBACiAgICAgZGVmIHRlc3RfZXh0cmFfZGF0YShzZWxmKToKICAgICAgICAgcyA9ICdbMSwgMiwgM101JwogICAgICAgICBtc2cgPSAnRXh0cmEgZGF0YScKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5KU09ORGVjb2RlRXJyb3IsIG1zZywgc2VsZi5sb2FkcywgcykKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfZXNjYXBlKHNlbGYpOgogICAgICAgICBzID0gJ1siYWJjXFx5Il0nCiAgICAgICAgIG1zZyA9ICdlc2NhcGUnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuSlNPTkRlY29kZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHMpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2lucHV0X3R5cGUoc2VsZik6CiAgICAgICAgIG1zZyA9ICd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHInCkBAIC04MCwxMCArODAsMTAgQEAKICAgICBkZWYgdGVzdF9zdHJpbmdfd2l0aF91dGY4X2JvbShzZWxmKToKICAgICAgICAgIyBzZWUgIzE4OTU4CiAgICAgICAgIGJvbV9qc29uID0gIlsxLDIsM10iLmVuY29kZSgndXRmLTgtc2lnJykuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2Fkcyhib21fanNvbikKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk9NJywgc3RyKGNtLmV4Y2VwdGlvbikpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5qc29uLmxvYWQoU3RyaW5nSU8oYm9tX2pzb24pKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCT00nLCBzdHIoY20uZXhjZXB0aW9uKSkKICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgQk9NIGlzIG5vdCBkZXRlY3RlZCBpbiB0aGUgbWlkZGxlIG9mIGEgc3RyaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLnB5CmluZGV4IDIxMjJkYTEuLjRiYmM2YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpLnB5CkBAIC0xMiw5ICsxMiw2IEBACiAgICAgKCcgcyBwIGEgYyBlIGQgJywgJyIgcyBwIGEgYyBlIGQgIicpLAogICAgICgnXFUwMDAxZDEyMCcsICciXFx1ZDgzNFxcdWRkMjAiJyksCiAgICAgKCdcdTAzYjFcdTAzYTknLCAnIlxcdTAzYjFcXHUwM2E5IicpLAotICAgICgnXHUwM2IxXHUwM2E5JywgJyJcXHUwM2IxXFx1MDNhOSInKSwKLSAgICAoJ1x1MDNiMVx1MDNhOScsICciXFx1MDNiMVxcdTAzYTkiJyksCi0gICAgKCdcdTAzYjFcdTAzYTknLCAnIlxcdTAzYjFcXHUwM2E5IicpLAogICAgICgiYDF+IUAjJCVeJiooKV8rLT17JzpbLF19fDsuPC8+PyIsICciYDF+IUAjJCVeJiooKV8rLT17XCc6WyxdfXw7LjwvPj8iJyksCiAgICAgKCdceDA4XHgwY1xuXHJcdCcsICciXFxiXFxmXFxuXFxyXFx0IicpLAogICAgICgnXHUwMTIzXHU0NTY3XHU4OWFiXHVjZGVmXHVhYmNkXHVlZjRhJywgJyJcXHUwMTIzXFx1NDU2N1xcdTg5YWJcXHVjZGVmXFx1YWJjZFxcdWVmNGEiJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQppbmRleCA3Y2FhZmRiLi45NWZmNWI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZG9jKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc2VsZi5KU09ORGVjb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIGZhaWx1cmUgZm9yIGZhaWx7MH0uanNvbjogezEhcn0iLmZvcm1hdChpZHgsIGRvYykpCkBAIC0xMjQsMTAgKzEyNCwxNiBAQAogICAgICAgICAgICAgKCcic3BhbScsICdVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0JywgMCksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSBcKGNoYXIgezJ9XCknLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGlkeCksCi0gICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZGF0YSkKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBtc2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIGlkeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCBpZHggKyAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzOiBsaW5lIDEgY29sdW1uICVkIChjaGFyICVkKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLCBpZHggKyAxLCBpZHgpKQogCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9kYXRhKHNlbGYpOgogICAgICAgICB0ZXN0X2Nhc2VzID0gWwpAQCAtMTU0LDEwICsxNjAsMTYgQEAKICAgICAgICAgICAgICgneyJzcGFtIjo0Mix9JywgJ0V4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMnLCAxMSksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSBcKGNoYXIgezJ9XCknLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGlkeCksCi0gICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZGF0YSkKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBtc2cpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIGlkeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmNvbG5vLCBpZHggKyAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVzOiBsaW5lIDEgY29sdW1uICVkIChjaGFyICVkKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobXNnLCBpZHggKyAxLCBpZHgpKQogCiAgICAgZGVmIHRlc3RfZXh0cmFfZGF0YShzZWxmKToKICAgICAgICAgdGVzdF9jYXNlcyA9IFsKQEAgLTE3MSwxMSArMTgzLDE2IEBACiAgICAgICAgICAgICAoJyJzcGFtIiw0MicsICdFeHRyYSBkYXRhJywgNiksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIG1zZywgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideezB9OiBsaW5lIDEgY29sdW1uIHsxfSAtIGxpbmUgMSBjb2x1bW4gezJ9JwotICAgICAgICAgICAgICAgIHInIFwoY2hhciB7M30gLSB7NH1cKScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICByZS5lc2NhcGUobXNnKSwgaWR4ICsgMSwgbGVuKGRhdGEpICsgMSwgaWR4LCBsZW4oZGF0YSkpLAotICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRhdGEpCisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgaWR4ICsgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclczogbGluZSAxIGNvbHVtbiAlZCAoY2hhciAlZCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zZywgaWR4ICsgMSwgaWR4KSkKIAogICAgIGRlZiB0ZXN0X2xpbmVjb2woc2VsZik6CiAgICAgICAgIHRlc3RfY2FzZXMgPSBbCkBAIC0xODUsMTAgKzIwMiwxNiBAQAogICAgICAgICAgICAgKCdcbiAgXG5cbiAgICAgIScsIDQsIDYsIDEwKSwKICAgICAgICAgXQogICAgICAgICBmb3IgZGF0YSwgbGluZSwgY29sLCBpZHggaW4gdGVzdF9jYXNlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICByJ15FeHBlY3RpbmcgdmFsdWU6IGxpbmUgezB9IGNvbHVtbiB7MX0nCi0gICAgICAgICAgICAgICAgcicgXChjaGFyIHsyfVwpJCcuZm9ybWF0KGxpbmUsIGNvbCwgaWR4KSwKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRzLCBkYXRhKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLkpTT05EZWNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5sb2FkcyhkYXRhKQorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csICdFeHBlY3RpbmcgdmFsdWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIGxpbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgY29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGluZyB2YWx1ZTogbGluZSAlcyBjb2x1bW4gJWQgKGNoYXIgJWQpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLCBjb2wsIGlkeCkpCiAKIGNsYXNzIFRlc3RQeUZhaWwoVGVzdEZhaWwsIFB5VGVzdCk6IHBhc3MKIGNsYXNzIFRlc3RDRmFpbChUZXN0RmFpbCwgQ1Rlc3QpOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9yZWN1cnNpb24ucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9yZWN1cnNpb24ucHkKaW5kZXggMWE3NjI1NC4uODc3ZGM0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfcmVjdXJzaW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3JlY3Vyc2lvbi5weQpAQCAtNjgsMTEgKzY4LDExIEBACiAgICAgZGVmIHRlc3RfaGlnaGx5X25lc3RlZF9vYmplY3RzX2RlY29kaW5nKHNlbGYpOgogICAgICAgICAjIHRlc3QgdGhhdCBsb2FkaW5nIGhpZ2hseS1uZXN0ZWQgb2JqZWN0cyBkb2Vzbid0IHNlZ2ZhdWx0IHdoZW4gQwogICAgICAgICAjIGFjY2VsZXJhdGlvbnMgYXJlIHVzZWQuIFNlZSAjMTIwMTcKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIHNlbGYubG9hZHMoJ3siYSI6JyAqIDEwMDAwMCArICcxJyArICd9JyAqIDEwMDAwMCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIHNlbGYubG9hZHMoJ3siYSI6JyAqIDEwMDAwMCArICdbMV0nICsgJ30nICogMTAwMDAwKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5sb2FkcygnWycgKiAxMDAwMDAgKyAnMScgKyAnXScgKiAxMDAwMDApCiAKICAgICBkZWYgdGVzdF9oaWdobHlfbmVzdGVkX29iamVjdHNfZW5jb2Rpbmcoc2VsZik6CkBAIC04MCw5ICs4MCw5IEBACiAgICAgICAgIGwsIGQgPSBbXSwge30KICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMTAwMDAwKToKICAgICAgICAgICAgIGwsIGQgPSBbbF0sIHsnayc6ZH0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIHNlbGYuZHVtcHMobCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIHNlbGYuZHVtcHMoZCkKIAogICAgIGRlZiB0ZXN0X2VuZGxlc3NfcmVjdXJzaW9uKHNlbGYpOgpAQCAtOTIsNyArOTIsNyBAQAogICAgICAgICAgICAgICAgICIiIklmIGNoZWNrX2NpcmN1bGFyIGlzIEZhbHNlLCB0aGlzIHdpbGwga2VlcCBhZGRpbmcgYW5vdGhlciBsaXN0LiIiIgogICAgICAgICAgICAgICAgIHJldHVybiBbb10KIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgogICAgICAgICAgICAgRW5kbGVzc0pTT05FbmNvZGVyKGNoZWNrX2NpcmN1bGFyPUZhbHNlKS5lbmNvZGUoNWopCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3Rfc2NhbnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3NjYW5zdHJpbmcucHkKaW5kZXggMDdmNDM1OC4uMmQzZWU4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3Rfc2NhbnN0cmluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9zY2Fuc3RyaW5nLnB5CkBAIC0xMjksNyArMTI5LDcgQEAKICAgICAgICAgICAgICciXFx1ZDgzNFxcdTBYMjAiJywKICAgICAgICAgXQogICAgICAgICBmb3IgcyBpbiBiYWRfZXNjYXBlczoKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXNnPXMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLkpTT05EZWNvZGVFcnJvciwgbXNnPXMpOgogICAgICAgICAgICAgICAgIHNjYW5zdHJpbmcocywgMSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X292ZXJmbG93KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdG9vbC5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3Rvb2wucHkKaW5kZXggMGMzOWU1Ni4uMTVmMzczNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdG9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF90b29sLnB5CkBAIC00LDcgKzQsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworCiAKIGNsYXNzIFRlc3RUb29sKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkYXRhID0gIiIiCkBAIC0xNSw3ICsxNiw3IEBACiAgICAgICAgICAgICA6InllcyJ9ICBdCiAgICAgICAgICAgICIiIgogCi0gICAgZXhwZWN0ID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICBleHBlY3Rfd2l0aG91dF9zb3J0X2tleXMgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAogICAgIFsKICAgICAgICAgWwogICAgICAgICAgICAgImJsb3JwaWUiCkBAIC0zNyw2ICszOCwyOCBAQAogICAgIF0KICAgICAiIiIpCiAKKyAgICBleHBlY3QgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgIFsKKyAgICAgICAgWworICAgICAgICAgICAgImJsb3JwaWUiCisgICAgICAgIF0sCisgICAgICAgIFsKKyAgICAgICAgICAgICJ3aG9vcHMiCisgICAgICAgIF0sCisgICAgICAgIFtdLAorICAgICAgICAiZC1zaHRhZW91IiwKKyAgICAgICAgImQtbnRoaW91aCIsCisgICAgICAgICJpLXZoYmpraG50aCIsCisgICAgICAgIHsKKyAgICAgICAgICAgICJuaWZ0eSI6IDg3CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJtb3JlZmllbGQiOiBmYWxzZSwKKyAgICAgICAgICAgICJmaWVsZCI6ICJ5ZXMiCisgICAgICAgIH0KKyAgICBdCisgICAgIiIiKQorCiAgICAgZGVmIHRlc3Rfc3RkaW5fc3Rkb3V0KHNlbGYpOgogICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oCiAgICAgICAgICAgICAgICAgKHN5cy5leGVjdXRhYmxlLCAnLW0nLCAnanNvbi50b29sJyksCkBAIC01NSw2ICs3OCw3IEBACiAgICAgZGVmIHRlc3RfaW5maWxlX3N0ZG91dChzZWxmKToKICAgICAgICAgaW5maWxlID0gc2VsZi5fY3JlYXRlX2luZmlsZSgpCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ2pzb24udG9vbCcsIGluZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3BsaXRsaW5lcygpLCBzZWxmLmV4cGVjdC5lbmNvZGUoKS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCiAKQEAgLTY1LDUgKzg5LDIwIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIG91dGZpbGUpCiAgICAgICAgIHdpdGggb3BlbihvdXRmaWxlLCAiciIpIGFzIGZwOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5yZWFkKCksIHNlbGYuZXhwZWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYicnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQorCisgICAgZGVmIHRlc3RfaGVscF9mbGFnKHNlbGYpOgorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdqc29uLnRvb2wnLCAnLWgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0LnN0YXJ0c3dpdGgoYid1c2FnZTogJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCisKKyAgICBkZWYgdGVzdF9zb3J0X2tleXNfZmxhZyhzZWxmKToKKyAgICAgICAgaW5maWxlID0gc2VsZi5fY3JlYXRlX2luZmlsZSgpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ2pzb24udG9vbCcsICctLXNvcnQta2V5cycsIGluZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0X3dpdGhvdXRfc29ydF9rZXlzLmVuY29kZSgpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CmluZGV4IDdmMzE1ZDQuLmQ4MmUzM2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQpAQCAtNCw3ICs0LDYgQEAKIF9fZW1haWxfXyA9ICJzZW9qaXdvbiBhdCBnbWFpbCBkb3QgY29tIgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogZGVmIHBvc29ubHlfc3VtKHBvc19hcmcxLCAqYXJnLCAqKmt3YXJnKToKICAgICByZXR1cm4gcG9zX2FyZzEgKyBzdW0oYXJnKSArIHN1bShrd2FyZy52YWx1ZXMoKSkKQEAgLTE4Niw4ICsxODUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnIuZXhjZXB0aW9uKSwgIm5hbWUgJ2InIGlzIG5vdCBkZWZpbmVkIikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEtleXdvcmRPbmx5QXJnVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkKaW5kZXggZjc5YmQ4OS4uZjgyMjAyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkKQEAgLTksNyArOSw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAia3F1ZXVlIik6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3Qgd29ya3Mgb25seSBvbiBCU0QiKQogCkBAIC0xMTQsNyArMTEzLDcgQEAKICAgICBkZWYgdGVzdF9xdWV1ZV9ldmVudChzZWxmKToKICAgICAgICAgc2VydmVyU29ja2V0ID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlcnZlclNvY2tldC5iaW5kKCgnMTI3LjAuMC4xJywgMCkpCi0gICAgICAgIHNlcnZlclNvY2tldC5saXN0ZW4oMSkKKyAgICAgICAgc2VydmVyU29ja2V0Lmxpc3RlbigpCiAgICAgICAgIGNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBjbGllbnQuc2V0YmxvY2tpbmcoRmFsc2UpCiAgICAgICAgIHRyeToKQEAgLTIzNyw4ICsyMzYsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShrcXVldWUuZmlsZW5vKCkpLCBGYWxzZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEtRdWV1ZSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkgYi9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weQppbmRleCA3OTE1N2RlLi4yMWVmNzM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weQpAQCAtNyw2ICs3LDcgQEAKIAogCiBGSUxFTkFNRSA9IGxpbmVjYWNoZS5fX2ZpbGVfXworTk9ORVhJU1RFTlRfRklMRU5BTUUgPSBGSUxFTkFNRSArICcubWlzc2luZycKIElOVkFMSURfTkFNRSA9ICchQCQpKCFAI18xJwogRU1QVFkgPSAnJwogVEVTVFMgPSAnaW5zcGVjdF9mb2RkZXIgaW5zcGVjdF9mb2RkZXIyIG1hcHBpbmdfdGVzdHMnCkBAIC0xMjYsNiArMTI3LDQ4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBnZXRsaW5lKHNvdXJjZV9uYW1lLCBpbmRleCArIDEpKQogICAgICAgICAgICAgICAgIHNvdXJjZV9saXN0LmFwcGVuZChsaW5lKQogCisgICAgZGVmIHRlc3RfbGF6eWNhY2hlX25vX2dsb2JhbHMoc2VsZik6CisgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKEZJTEVOQU1FKQorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGxpbmVjYWNoZS5sYXp5Y2FjaGUoRklMRU5BTUUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBsaW5lY2FjaGUuZ2V0bGluZXMoRklMRU5BTUUpKQorCisgICAgZGVmIHRlc3RfbGF6eWNhY2hlX3Ntb2tlKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBUcnVlLCBsaW5lY2FjaGUubGF6eWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihsaW5lY2FjaGUuY2FjaGVbTk9ORVhJU1RFTlRfRklMRU5BTUVdKSkKKyAgICAgICAgIyBOb3RlIGhlcmUgdGhhdCB3ZSdyZSBsb29raW5nIHVwIGEgbm9uIGV4aXN0YW50IGZpbGVuYW1lIHdpdGggbm8KKyAgICAgICAgIyBnbG9iYWxzOiB0aGlzIHdvdWxkIGVycm9yIGlmIHRoZSBsYXp5IHZhbHVlIHdhc24ndCByZXNvbHZlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FKSkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9wcm92aWRlX2FmdGVyX2ZhaWxlZF9sb29rdXAoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMoTk9ORVhJU1RFTlRfRklMRU5BTUUpCisgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FKSkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9jaGVjayhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKCkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9iYWRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgbGluZWNhY2hlLmxhenljYWNoZSgnJywgZ2xvYmFscygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgbGluZWNhY2hlLmxhenljYWNoZSgnPGZvbz4nLCBnbG9iYWxzKCkpKQorCisgICAgZGVmIHRlc3RfbGF6eWNhY2hlX2FscmVhZHlfY2FjaGVkKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGxpbmVjYWNoZS5jYWNoZVtOT05FWElTVEVOVF9GSUxFTkFNRV0pKQorCiAgICAgZGVmIHRlc3RfbWVtb3J5ZXJyb3Ioc2VsZik6CiAgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKEZJTEVOQU1FKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggM2I5NDcwMC4uYWUxYmU2ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMTA4LDIwICsxMDgsNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICAoMywpICsgTChbMSwyXSkKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KExpc3RUZXN0KQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaW1wb3J0IHN5cwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChMaXN0VGVzdCkKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQppbmRleCA5MzY5YTI1Li5mYWUyYzNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQpAQCAtNTI0LDUgKzUyNCw1OSBAQAogICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCAoYidub3QnLCBiJ3ZhbGlkJykpCiAKIAorY2xhc3MgQmFzZURlbG9jYWxpemVUZXN0KEJhc2VMb2NhbGl6ZWRUZXN0KToKKworICAgIGRlZiBfdGVzdF9kZWxvY2FsaXplKHNlbGYsIHZhbHVlLCBvdXQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsZS5kZWxvY2FsaXplKHZhbHVlKSwgb3V0KQorCisgICAgZGVmIF90ZXN0X2F0b2Yoc2VsZiwgdmFsdWUsIG91dCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxlLmF0b2YodmFsdWUpLCBvdXQpCisKKyAgICBkZWYgX3Rlc3RfYXRvaShzZWxmLCB2YWx1ZSwgb3V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbGUuYXRvaSh2YWx1ZSksIG91dCkKKworCitjbGFzcyBUZXN0RW5VU0RlbG9jYWxpemUoRW5VU0Nvb2tlZFRlc3QsIEJhc2VEZWxvY2FsaXplVGVzdCk6CisKKyAgICBkZWYgdGVzdF9kZWxvY2FsaXplKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwMDAwLjAwJywgJzUwMDAwLjAwJykKKyAgICAgICAgc2VsZi5fdGVzdF9kZWxvY2FsaXplKCc1MCwwMDAuMDAnLCAnNTAwMDAuMDAnKQorCisgICAgZGVmIHRlc3RfYXRvZihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9mKCc1MDAwMC4wMCcsIDUwMDAwLikKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9mKCc1MCwwMDAuMDAnLCA1MDAwMC4pCisKKyAgICBkZWYgdGVzdF9hdG9pKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwMDAwJywgNTAwMDApCisgICAgICAgIHNlbGYuX3Rlc3RfYXRvaSgnNTAsMDAwJywgNTAwMDApCisKKworY2xhc3MgVGVzdENEZWxvY2FsaXplVGVzdChDQ29va2VkVGVzdCwgQmFzZURlbG9jYWxpemVUZXN0KToKKworICAgIGRlZiB0ZXN0X2RlbG9jYWxpemUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAwMDAuMDAnLCAnNTAwMDAuMDAnKQorCisgICAgZGVmIHRlc3RfYXRvZihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9mKCc1MDAwMC4wMCcsIDUwMDAwLikKKworICAgIGRlZiB0ZXN0X2F0b2koc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvaSgnNTAwMDAnLCA1MDAwMCkKKworCitjbGFzcyBUZXN0ZnJGUkRlbG9jYWxpemVUZXN0KEZyRlJDb29rZWRUZXN0LCBCYXNlRGVsb2NhbGl6ZVRlc3QpOgorCisgICAgZGVmIHRlc3RfZGVsb2NhbGl6ZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9kZWxvY2FsaXplKCc1MDAwMCwwMCcsICc1MDAwMC4wMCcpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAgMDAwLDAwJywgJzUwMDAwLjAwJykKKworICAgIGRlZiB0ZXN0X2F0b2Yoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAwMDAsMDAnLCA1MDAwMC4pCisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAgMDAwLDAwJywgNTAwMDAuKQorCisgICAgZGVmIHRlc3RfYXRvaShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MDAwMCcsIDUwMDAwKQorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwIDAwMCcsIDUwMDAwKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKaW5kZXggZGRhYjJlMC4uYjZlNjRjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IDIwMDEtMjAxMyBieSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgQ29weXJpZ2h0IDIwMDEtMjAxNCBieSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICMKICMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCiAjIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwKQEAgLTE2LDcgKzE2LDcgQEAKIAogIiIiVGVzdCBoYXJuZXNzIGZvciB0aGUgbG9nZ2luZyBtb2R1bGUuIFJ1biBhbGwgdGVzdHMuCiAKLUNvcHlyaWdodCAoQykgMjAwMS0yMDEzIFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDAxLTIwMTQgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAiIiIKIAogaW1wb3J0IGxvZ2dpbmcKQEAgLTM0LDE1ICszNCwxMiBAQAogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKLWltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gsIHJlcXVpcmVzX3psaWIsIFRlc3RIYW5kbGVyLCBNYXRjaGVyLCBIT1NULAotICAgICAgICAgICAgICAgICAgICAgICAgICBzd2FwX2F0dHIpCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtNTIsMTYgKzQ5LDEyIEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogICAgICMgVGhlIGZvbGxvd2luZyBpbXBvcnRzIGFyZSBuZWVkZWQgb25seSBmb3IgdGVzdHMgd2hpY2gKICAgICAjIHJlcXVpcmUgdGhyZWFkaW5nCi0gICAgaW1wb3J0IGFzeW5jaGF0CiAgICAgaW1wb3J0IGFzeW5jb3JlCi0gICAgaW1wb3J0IGVycm5vCiAgICAgZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgSFRUUFNlcnZlciwgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcgogICAgIGltcG9ydCBzbXRwZAogICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgcGFyc2VfcXMKICAgICBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgKFRocmVhZGluZ1VEUFNlcnZlciwgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVW5peERhdGFncmFtU2VydmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcikKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiB0cnk6CkBAIC02NDYsMjIgKzYzOSwyMyBAQAogICAgICAgICBoID0gVGVzdFN0cmVhbUhhbmRsZXIoQmFkU3RyZWFtKCkpCiAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCiAgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCi0gICAgICAgIG9sZF9zdGRlcnIgPSBzeXMuc3RkZXJyCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaC5oYW5kbGUocikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5lcnJvcl9yZWNvcmQsIHIpCisKICAgICAgICAgICAgIGggPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoQmFkU3RyZWFtKCkpCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgaC5oYW5kbGUocikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuUnVudGltZUVycm9yOiBkZWxpYmVyYXRlIG1pc3Rha2VcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgIG1zZyA9ICdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtc2csIHN0ZGVyci5nZXR2YWx1ZSgpKQorCiAgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgaC5oYW5kbGUocikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHN0ZGVyci5nZXR2YWx1ZSgpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBvbGRfcmFpc2UKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvbGRfc3RkZXJyCiAKICMgLS0gVGhlIGZvbGxvd2luZyBzZWN0aW9uIGNvdWxkIGJlIG1vdmVkIGludG8gYSBzZXJ2ZXJfaGVscGVyLnB5IG1vZHVsZQogIyAtLSBpZiBpdCBwcm92ZXMgdG8gYmUgb2Ygd2lkZXIgdXRpbGl0eSB0aGFuIGp1c3QgdGVzdF9sb2dnaW5nCkBAIC02ODksNyArNjgzLDggQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwsIHNvY2ttYXApOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCBOb25lLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgTm9uZSwgbWFwPXNvY2ttYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgogICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQpAQCAtOTMxLDEwICs5MjYsMTAgQEAKICAgICBUSU1FT1VUID0gOC4wCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNvY2ttYXAgPSB7fQotICAgICAgICBzZXJ2ZXIgPSBUZXN0U01UUFNlcnZlcigoSE9TVCwgMCksIHNlbGYucHJvY2Vzc19tZXNzYWdlLCAwLjAwMSwKKyAgICAgICAgc2VydmVyID0gVGVzdFNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIHNlbGYucHJvY2Vzc19tZXNzYWdlLCAwLjAwMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja21hcCkKICAgICAgICAgc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgYWRkciA9IChzdXBwb3J0LkhPU1QsIHNlcnZlci5wb3J0KQogICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcihhZGRyLCAnbWUnLCAneW91JywgJ0xvZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5USU1FT1VUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudG9hZGRycywgWyd5b3UnXSkKQEAgLTEyNTAsNyArMTI0NSw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWcwX29rKHNlbGYpOgogICAgICAgICAjIEEgc2ltcGxlIGNvbmZpZyBmaWxlIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzApCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAgICAgICAgICAgICAjIFdvbid0IG91dHB1dCBhbnl0aGluZwpAQCAtMTI2NSw3ICsxMjYwLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzBfdXNpbmdfY3Bfb2soc2VsZik6CiAgICAgICAgICMgQSBzaW1wbGUgY29uZmlnIGZpbGUgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHNldHRpbmdzLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTyh0ZXh0d3JhcC5kZWRlbnQoc2VsZi5jb25maWcwKSkKICAgICAgICAgICAgIGNwID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAgICAgICAgICAgICBjcC5yZWFkX2ZpbGUoZmlsZSkKQEAgLTEyODMsNyArMTI3OCw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWcxX29rKHNlbGYsIGNvbmZpZz1jb25maWcxKToKICAgICAgICAgIyBBIGNvbmZpZyBmaWxlIGRlZmluaW5nIGEgc3ViLXBhcnNlciBhcyB3ZWxsLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKGNvbmZpZykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMTMwNiw3ICsxMzAxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzRfb2soc2VsZik6CiAgICAgICAgICMgQSBjb25maWcgZmlsZSBzcGVjaWZ5aW5nIGEgY3VzdG9tIGZvcm1hdHRlciBjbGFzcy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzQpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAgICAgICAgICAgICB0cnk6CkBAIC0xMzI2LDcgKzEzMjEsNyBAQAogICAgICAgICBzZWxmLnRlc3RfY29uZmlnMV9vayhjb25maWc9c2VsZi5jb25maWc2KQogCiAgICAgZGVmIHRlc3RfY29uZmlnN19vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzFhKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTE0MjQuIGNvbXBpbGVyLWh5cGhlbmF0ZWQgc29ydHMKQEAgLTEzNDYsNyArMTM0MSw3IEBACiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnNykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2dnZXIuZGlzYWJsZWQpCkBAIC0yNDkzLDcgKzI0ODgsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMF9vayhzZWxmKToKICAgICAgICAgIyBBIHNpbXBsZSBjb25maWcgd2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHNldHRpbmdzLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMCkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICAgICAgICAgICMgV29uJ3Qgb3V0cHV0IGFueXRoaW5nCkBAIC0yNTA4LDcgKzI1MDMsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMV9vayhzZWxmLCBjb25maWc9Y29uZmlnMSk6CiAgICAgICAgICMgQSBjb25maWcgZGVmaW5pbmcgYSBzdWItcGFyc2VyIGFzIHdlbGwuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoY29uZmlnKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yNTM5LDcgKzI1MzQsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnNF9vayhzZWxmKToKICAgICAgICAgIyBBIGNvbmZpZyBzcGVjaWZ5aW5nIGEgY3VzdG9tIGZvcm1hdHRlciBjbGFzcy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzQpCiAgICAgICAgICAgICAjbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMjU1NCw3ICsyNTQ5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzRhX29rKHNlbGYpOgogICAgICAgICAjIEEgY29uZmlnIHNwZWNpZnlpbmcgYSBjdXN0b20gZm9ybWF0dGVyIGNsYXNzLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnNGEpCiAgICAgICAgICAgICAjbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMjU3NCw3ICsyNTY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBzZWxmLmFwcGx5X2NvbmZpZywgc2VsZi5jb25maWc2KQogCiAgICAgZGVmIHRlc3RfY29uZmlnN19vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzEpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI1ODYsNyArMjU4MSw3IEBACiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnNykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvZ2dlci5kaXNhYmxlZCkKQEAgLTI2MDMsNyArMjU5OCw3IEBACiAKICAgICAjU2FtZSBhcyB0ZXN0X2NvbmZpZ183X29rIGJ1dCBkb24ndCBkaXNhYmxlIG9sZCBsb2dnZXJzLgogICAgIGRlZiB0ZXN0X2NvbmZpZ184X29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBBbGwgd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yNjE1LDcgKzI2MTAsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzgpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9nZ2VyLmRpc2FibGVkKQpAQCAtMjYzNiw3ICsyNjMxLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ184YV9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzFhKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTE0MjQuIGNvbXBpbGVyLWh5cGhlbmF0ZWQgc29ydHMKQEAgLTI2NTYsNyArMjY1MSw3IEBACiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnOGEpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9nZ2VyLmRpc2FibGVkKQpAQCAtMjY3OSw3ICsyNjc0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ185X29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnOSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgI05vdGhpbmcgd2lsbCBiZSBvdXRwdXQgc2luY2UgYm90aCBoYW5kbGVyIGFuZCBsb2dnZXIgYXJlIHNldCB0byBXQVJOSU5HCkBAIC0yNjk3LDcgKzI2OTIsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKIAogICAgIGRlZiB0ZXN0X2NvbmZpZ18xMF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzEwKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzZWxmLm5leHRfbWVzc2FnZSgpKQpAQCAtMjcyNSw3ICsyNzIwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBzZWxmLmFwcGx5X2NvbmZpZywgc2VsZi5jb25maWcxMykKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzE0X29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKHNlbGYuY29uZmlnMTQpCiAgICAgICAgICAgICBoID0gbG9nZ2luZy5faGFuZGxlcnNbJ2hhbmQxJ10KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb28sICdiYXInKQpAQCAtMjc2NCw3ICsyNzU5LDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfbGlzdGVuX2NvbmZpZ18xMF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcihqc29uLmR1bXBzKHNlbGYuY29uZmlnMTApKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzZWxmLm5leHRfbWVzc2FnZSgpKQpAQCAtMjc4NCw3ICsyNzc5LDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfbGlzdGVuX2NvbmZpZ18xX29rKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRleHR3cmFwLmRlZGVudChDb25maWdGaWxlVGVzdC5jb25maWcxKSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMjgxMSw3ICsyODA2LDcgQEAKICAgICAgICAgIyBGaXJzdCwgc3BlY2lmeSBhIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiB0aGF0IHdpbGwgZmFpbC4KICAgICAgICAgIyBXZSBleHBlY3QgdG8gc2VlIG5vIG91dHB1dCwgc2luY2Ugb3VyIGNvbmZpZ3VyYXRpb24KICAgICAgICAgIyBuZXZlciB0b29rIGVmZmVjdC4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcih0b19zZW5kLCB2ZXJpZnlfZmFpbCkKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCkBAIC0yODI2LDcgKzI4MjEsNyBAQAogICAgICAgICAjIE5vdywgcGVyZm9ybSBubyB2ZXJpZmljYXRpb24uIE91ciBjb25maWd1cmF0aW9uCiAgICAgICAgICMgc2hvdWxkIHRha2UgZWZmZWN0LgogCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZCkgICAgIyBubyB2ZXJpZnkgY2FsbGFibGUgc3BlY2lmaWVkCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI4NDQsNyArMjgzOSw3IEBACiAKICAgICAgICAgIyBOb3csIHBlcmZvcm0gdmVyaWZpY2F0aW9uIHdoaWNoIHRyYW5zZm9ybXMgdGhlIGJ5dGVzLgogCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZFs6Oi0xXSwgdmVyaWZ5X3JldmVyc2UpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI5OTksNyArMjk5NCw3IEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihsb2dnaW5nLmhhbmRsZXJzLCAnUXVldWVMaXN0ZW5lcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIHRlc3RfcXVldWVfbGlzdGVuZXIoc2VsZik6Ci0gICAgICAgIGhhbmRsZXIgPSBUZXN0SGFuZGxlcihNYXRjaGVyKCkpCisgICAgICAgIGhhbmRsZXIgPSBzdXBwb3J0LlRlc3RIYW5kbGVyKHN1cHBvcnQuTWF0Y2hlcigpKQogICAgICAgICBsaXN0ZW5lciA9IGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lcihzZWxmLnF1ZXVlLCBoYW5kbGVyKQogICAgICAgICBsaXN0ZW5lci5zdGFydCgpCiAgICAgICAgIHRyeToKQEAgLTMwMTEsNiArMzAwNiwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5XQVJOSU5HLCBtZXNzYWdlPScxJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPScyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSczJykpCisgICAgICAgIGhhbmRsZXIuY2xvc2UoKQorCisgICAgICAgICMgTm93IHRlc3Qgd2l0aCByZXNwZWN0X2hhbmRsZXJfbGV2ZWwgc2V0CisKKyAgICAgICAgaGFuZGxlciA9IHN1cHBvcnQuVGVzdEhhbmRsZXIoc3VwcG9ydC5NYXRjaGVyKCkpCisgICAgICAgIGhhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5DUklUSUNBTCkKKyAgICAgICAgbGlzdGVuZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIoc2VsZi5xdWV1ZSwgaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcGVjdF9oYW5kbGVyX2xldmVsPVRydWUpCisgICAgICAgIGxpc3RlbmVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5xdWVfbG9nZ2VyLndhcm5pbmcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgICAgIHNlbGYucXVlX2xvZ2dlci5lcnJvcihzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICAgICAgc2VsZi5xdWVfbG9nZ2VyLmNyaXRpY2FsKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsaXN0ZW5lci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLldBUk5JTkcsIG1lc3NhZ2U9JzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPSc1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSc2JykpCisKIAogWkVSTyA9IGRhdGV0aW1lLnRpbWVkZWx0YSgwKQogCkBAIC0zMTY3LDMyICszMTgxLDM1IEBACiAgICAgICAgICMgVGVzdCB0aGUgbGFzdCByZXNvcnQgaGFuZGxlcgogICAgICAgICByb290ID0gc2VsZi5yb290X2xvZ2dlcgogICAgICAgICByb290LnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2hkbHIpCi0gICAgICAgIG9sZF9zdGRlcnIgPSBzeXMuc3RkZXJyCiAgICAgICAgIG9sZF9sYXN0cmVzb3J0ID0gbG9nZ2luZy5sYXN0UmVzb3J0CiAgICAgICAgIG9sZF9yYWlzZV9leGNlcHRpb25zID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgcm9vdC5kZWJ1ZygnVGhpcyBzaG91bGQgbm90IGFwcGVhcicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnJykKLSAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhXG4nKQotICAgICAgICAgICAgI05vIGhhbmRsZXJzIGFuZCBubyBsYXN0IHJlc29ydCwgc28gJ05vIGhhbmRsZXJzJyBtZXNzYWdlCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3QuZGVidWcoJ1RoaXMgc2hvdWxkIG5vdCBhcHBlYXInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ0ZpbmFsIGNoYW5jZSFcbicpCisKKyAgICAgICAgICAgICMgTm8gaGFuZGxlcnMgYW5kIG5vIGxhc3QgcmVzb3J0LCBzbyAnTm8gaGFuZGxlcnMnIG1lc3NhZ2UKICAgICAgICAgICAgIGxvZ2dpbmcubGFzdFJlc29ydCA9IE5vbmUKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICByb290Lndhcm5pbmcoJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICdObyBoYW5kbGVycyBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyICJyb290IlxuJykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdGaW5hbCBjaGFuY2UhJykKKyAgICAgICAgICAgICAgICBtc2cgPSAnTm8gaGFuZGxlcnMgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciAicm9vdCJcbicKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCBtc2cpCisKICAgICAgICAgICAgICMgJ05vIGhhbmRsZXJzJyBtZXNzYWdlIG9ubHkgcHJpbnRlZCBvbmNlCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdGaW5hbCBjaGFuY2UhJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKworICAgICAgICAgICAgIyBJZiByYWlzZUV4Y2VwdGlvbnMgaXMgRmFsc2UsIG5vIG1lc3NhZ2UgaXMgcHJpbnRlZAogICAgICAgICAgICAgcm9vdC5tYW5hZ2VyLmVtaXR0ZWROb0hhbmRsZXJXYXJuaW5nID0gRmFsc2UKLSAgICAgICAgICAgICNJZiByYWlzZUV4Y2VwdGlvbnMgaXMgRmFsc2UsIG5vIG1lc3NhZ2UgaXMgcHJpbnRlZAogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJycpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyID0gb2xkX3N0ZGVycgogICAgICAgICAgICAgcm9vdC5hZGRIYW5kbGVyKHNlbGYucm9vdF9oZGxyKQogICAgICAgICAgICAgbG9nZ2luZy5sYXN0UmVzb3J0ID0gb2xkX2xhc3RyZXNvcnQKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gb2xkX3JhaXNlX2V4Y2VwdGlvbnMKQEAgLTMzMjMsOCArMzM0MCw4IEBACiAKICAgICBkZWYgX3Rlc3RfbG9nKHNlbGYsIG1ldGhvZCwgbGV2ZWw9Tm9uZSk6CiAgICAgICAgIGNhbGxlZCA9IFtdCi0gICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsCi0gICAgICAgICAgICAgIGxhbWJkYSAqYSwgKiprdzogY2FsbGVkLmFwcGVuZCgoYSwga3cpKSkKKyAgICAgICAgc3VwcG9ydC5wYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLAorICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSAqYSwgKiprdzogY2FsbGVkLmFwcGVuZCgoYSwga3cpKSkKIAogICAgICAgICByZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKICAgICAgICAgbG9nZ2luZy5yb290LmFkZEhhbmRsZXIocmVjb3JkaW5nKQpAQCAtMzQ5NSw3ICszNTEyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIHNlbGYub3JpZ2luYWxfbG9nZ2luZ19sZXZlbCkKIAogICAgIGRlZiB0ZXN0X3N0cmZvcm1hdHN0eWxlKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN5cy5zdGRvdXQsIHN0eWxlPSJ7IikKICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkxvZyBhbiBlcnJvciIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LnNlZWsoMCkKQEAgLTM1MDMsNyArMzUyMCw3IEBACiAgICAgICAgICAgICAgICAgIkVSUk9SOnJvb3Q6TG9nIGFuIGVycm9yIikKIAogICAgIGRlZiB0ZXN0X3N0cmluZ3RlbXBsYXRlc3R5bGUoc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhzdHJlYW09c3lzLnN0ZG91dCwgc3R5bGU9IiQiKQogICAgICAgICAgICAgbG9nZ2luZy5lcnJvcigiTG9nIGFuIGVycm9yIikKICAgICAgICAgICAgIHN5cy5zdGRvdXQuc2VlaygwKQpAQCAtMzYyNCw3ICszNjQxLDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnJvb3Quc2V0TGV2ZWwsIG9sZF9sZXZlbCkKICAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkKIAotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLCBteV9iYXNpY19jb25maWcpCisgICAgICAgIHN1cHBvcnQucGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywgbXlfYmFzaWNfY29uZmlnKQogCiAgICAgICAgIGxvZ19tZXRob2QgPSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZCkKICAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CkBAIC0zNjkwLDYgKzM3MDcsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQogCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2V4Y2luZm8oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorCisgICAgICAgIHNlbGYuYWRhcHRlci5leGNlcHRpb24oJ2V4Y19pbmZvIHRlc3QnLCBleGNfaW5mbz1leGMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQorCiAgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CiAgICAgICAgIG1zZyA9ICdjcml0aWNhbCB0ZXN0ISAlcicKICAgICAgICAgc2VsZi5hZGFwdGVyLmNyaXRpY2FsKG1zZywgc2VsZi5yZWNvcmRpbmcpCkBAIC0zNzQ5LDE3ICszNzc5LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQogCiAgICAgZGVmIHRlc3RfbG9nX2ludmFsaWRfbGV2ZWxfd2l0aF9yYWlzZShzZWxmKToKLSAgICAgICAgd2l0aCBzd2FwX2F0dHIobG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIFRydWUpOgorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKGxvZ2dpbmcsICdyYWlzZUV4Y2VwdGlvbnMnLCBUcnVlKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2dnZXIubG9nLCAnMTAnLCAndGVzdCBtZXNzYWdlJykKIAogICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX25vX3JhaXNlKHNlbGYpOgotICAgICAgICB3aXRoIHN3YXBfYXR0cihsb2dnaW5nLCAncmFpc2VFeGNlcHRpb25zJywgRmFsc2UpOgorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKGxvZ2dpbmcsICdyYWlzZUV4Y2VwdGlvbnMnLCBGYWxzZSk6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5sb2coJzEwJywgJ3Rlc3QgbWVzc2FnZScpICAjIG5vIGV4Y2VwdGlvbiBoYXBwZW5zCiAKICAgICBkZWYgdGVzdF9maW5kX2NhbGxlcl93aXRoX3N0YWNrX2luZm8oc2VsZik6CiAgICAgICAgIGNhbGxlZCA9IFtdCi0gICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcudHJhY2ViYWNrLCAncHJpbnRfc3RhY2snLAotICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQorICAgICAgICBzdXBwb3J0LnBhdGNoKHNlbGYsIGxvZ2dpbmcudHJhY2ViYWNrLCAncHJpbnRfc3RhY2snLAorICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBmLCBmaWxlOiBjYWxsZWQuYXBwZW5kKGZpbGUuZ2V0dmFsdWUoKSkpCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZmluZENhbGxlcihzdGFja19pbmZvPVRydWUpCiAKQEAgLTM4OTYsNyArMzkyNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZXIoc2VsZi5mbiArICIuMyIpKSkKICAgICAgICAgcmguY2xvc2UoKQogCi0gICAgQHJlcXVpcmVzX3psaWIKKyAgICBAc3VwcG9ydC5yZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3Rfcm90YXRvcihzZWxmKToKICAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgogICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLmd6IgpAQCAtNDEyOSwyMiArNDE1OSwyMCBAQAogIyBTZXQgdGhlIGxvY2FsZSB0byB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGRlZmF1bHQuICBJIGhhdmUgbm8gaWRlYQogIyB3aHkgdGhlIHRlc3QgZG9lcyB0aGlzLCBidXQgaW4gYW55IGNhc2Ugd2Ugc2F2ZSB0aGUgY3VycmVudCBsb2NhbGUKICMgZmlyc3QgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZC4KLUBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICcnKQorQHN1cHBvcnQucnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQnVpbHRpbkxldmVsc1Rlc3QsIEJhc2ljRmlsdGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgQ3VzdG9tTGV2ZWxzQW5kRmlsdGVyc1Rlc3QsIEhhbmRsZXJUZXN0LCBNZW1vcnlIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgQ29uZmlnRmlsZVRlc3QsIFNvY2tldEhhbmRsZXJUZXN0LCBEYXRhZ3JhbUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBNZW1vcnlUZXN0LCBFbmNvZGluZ1Rlc3QsIFdhcm5pbmdzVGVzdCwgQ29uZmlnRGljdFRlc3QsCi0gICAgICAgICAgICAgICAgIE1hbmFnZXJUZXN0LCBGb3JtYXR0ZXJUZXN0LCBCdWZmZXJpbmdGb3JtYXR0ZXJUZXN0LAotICAgICAgICAgICAgICAgICBTdHJlYW1IYW5kbGVyVGVzdCwgTG9nUmVjb3JkRmFjdG9yeVRlc3QsIENoaWxkTG9nZ2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgUXVldWVIYW5kbGVyVGVzdCwgU2h1dGRvd25UZXN0LCBNb2R1bGVMZXZlbE1pc2NUZXN0LAotICAgICAgICAgICAgICAgICBCYXNpY0NvbmZpZ1Rlc3QsIExvZ2dlckFkYXB0ZXJUZXN0LCBMb2dnZXJUZXN0LAotICAgICAgICAgICAgICAgICBTTVRQSGFuZGxlclRlc3QsIEZpbGVIYW5kbGVyVGVzdCwgUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIExhc3RSZXNvcnRUZXN0LCBMb2dSZWNvcmRUZXN0LCBFeGNlcHRpb25UZXN0LAotICAgICAgICAgICAgICAgICBTeXNMb2dIYW5kbGVyVGVzdCwgSFRUUEhhbmRsZXJUZXN0LCBOVEV2ZW50TG9nSGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsIFVuaXhTb2NrZXRIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgVW5peERhdGFncmFtSGFuZGxlclRlc3QsIFVuaXhTeXNMb2dIYW5kbGVyVGVzdAotICAgICAgICAgICAgICAgICkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgQnVpbHRpbkxldmVsc1Rlc3QsIEJhc2ljRmlsdGVyVGVzdCwgQ3VzdG9tTGV2ZWxzQW5kRmlsdGVyc1Rlc3QsCisgICAgICAgIEhhbmRsZXJUZXN0LCBNZW1vcnlIYW5kbGVyVGVzdCwgQ29uZmlnRmlsZVRlc3QsIFNvY2tldEhhbmRsZXJUZXN0LAorICAgICAgICBEYXRhZ3JhbUhhbmRsZXJUZXN0LCBNZW1vcnlUZXN0LCBFbmNvZGluZ1Rlc3QsIFdhcm5pbmdzVGVzdCwKKyAgICAgICAgQ29uZmlnRGljdFRlc3QsIE1hbmFnZXJUZXN0LCBGb3JtYXR0ZXJUZXN0LCBCdWZmZXJpbmdGb3JtYXR0ZXJUZXN0LAorICAgICAgICBTdHJlYW1IYW5kbGVyVGVzdCwgTG9nUmVjb3JkRmFjdG9yeVRlc3QsIENoaWxkTG9nZ2VyVGVzdCwKKyAgICAgICAgUXVldWVIYW5kbGVyVGVzdCwgU2h1dGRvd25UZXN0LCBNb2R1bGVMZXZlbE1pc2NUZXN0LCBCYXNpY0NvbmZpZ1Rlc3QsCisgICAgICAgIExvZ2dlckFkYXB0ZXJUZXN0LCBMb2dnZXJUZXN0LCBTTVRQSGFuZGxlclRlc3QsIEZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsICBMYXN0UmVzb3J0VGVzdCwgTG9nUmVjb3JkVGVzdCwKKyAgICAgICAgRXhjZXB0aW9uVGVzdCwgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwKKyAgICAgICAgTlRFdmVudExvZ0hhbmRsZXJUZXN0LCBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAorICAgICAgICBVbml4U29ja2V0SGFuZGxlclRlc3QsIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCA1YjllMzdhLi42MmU2OWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC01ODIsOCArNTgyLDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKICAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXBfXyhvdGhlcikgPT0gMAotICAgICAgICAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcF9fKG90aGVyKSAhPSAwCiAgICAgICAgICAgICBkZWYgX19nZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wX18ob3RoZXIpID49IDAKICAgICAgICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgpAQCAtMTIyNyw4ICsxMjI1LDUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodmFsdWUgPj4gc2hpZnQpLCBpbnQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KExvbmdUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmdleHAucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmdleHAucHkKaW5kZXggMWI0MGQwMi4uZjRjNDYzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZ2V4cC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIExvbmdFeHBUZXh0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9sb25nZXhwKHNlbGYpOgpAQCAtNyw4ICs2LDUgQEAKICAgICAgICAgbCA9IGV2YWwoIlsiICsgIjIsIiAqIFJFUFMgKyAiXSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGwpLCBSRVBTKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTG9uZ0V4cFRleHQpCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sem1hLnB5IGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CmluZGV4IDA3ZmFkYmQuLjJkMzkwOTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKQEAgLTEsNCArMSw1IEBACi1mcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBVbnN1cHBvcnRlZE9wZXJhdGlvbgoraW1wb3J0IF9jb21wcmVzc2lvbgorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24sIERFRkFVTFRfQlVGRkVSX1NJWkUKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQpAQCAtMTM1LDYgKzEzNiw5NyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUobHpkLmVvZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQudW51c2VkX2RhdGEsIGIiIikKIAorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9jaHVua3NfbWF4c2l6ZShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIG1heF9sZW5ndGggPSAxMDAKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIEZlZWQgZmlyc3QgaGFsZiB0aGUgaW5wdXQKKyAgICAgICAgbGVuXyA9IGxlbihDT01QUkVTU0VEX1haKSAvLyAyCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6bGVuX10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsemQubmVlZHNfaW5wdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG91dFstMV0pLCBtYXhfbGVuZ3RoKQorCisgICAgICAgICMgUmV0cmlldmUgbW9yZSBkYXRhIHdpdGhvdXQgcHJvdmlkaW5nIG1vcmUgaW5wdXQKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhiJycsIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHpkLm5lZWRzX2lucHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIG1vcmUgZGF0YSB3aGlsZSBwcm92aWRpbmcgbW9yZSBpbnB1dAorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbbGVuXzpdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIHJlbWFpbmluZyB1bmNvbXByZXNzZWQgZGF0YQorICAgICAgICB3aGlsZSBub3QgbHpkLmVvZjoKKyAgICAgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnLCBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKG91dFstMV0pLCBtYXhfbGVuZ3RoKQorCisgICAgICAgIG91dCA9IGIiIi5qb2luKG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIElOUFVUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6ZC5jaGVjaywgbHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQudW51c2VkX2RhdGEsIGIiIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8xKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgbW92aW5nIGV4aXN0aW5nCisgICAgICAgICMgY29udGVudHMgdG8gYmVnaW5uaW5nCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBvdXQgPSBbXQorCisgICAgICAgICMgQ3JlYXRlIGlucHV0IGJ1ZmZlciBhbmQgZmlsbCBpdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbOjEwMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aD0wKSwgYicnKQorCisgICAgICAgICMgUmV0cmlldmUgc29tZSByZXN1bHRzLCBmcmVlaW5nIGNhcGFjaXR5IGF0IGJlZ2lubmluZworICAgICAgICAjIG9mIGlucHV0IGJ1ZmZlcgorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKGInJywgMikpCisKKyAgICAgICAgIyBBZGQgbW9yZSBkYXRhIHRoYXQgZml0cyBpbnRvIGlucHV0IGJ1ZmZlciBhZnRlcgorICAgICAgICAjIG1vdmluZyBleGlzdGluZyBkYXRhIHRvIGJlZ2lubmluZworICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMTAwOjEwNV0sIDE1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWlsxMDU6XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4ob3V0KSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMihzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGJ5IGFwcGVuZGluZyBkYXRhIGF0IHRoZQorICAgICAgICAjIGVuZCByaWdodCBhd2F5CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBvdXQgPSBbXQorCisgICAgICAgICMgQ3JlYXRlIGlucHV0IGJ1ZmZlciBhbmQgZW1wdHkgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzoyMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhiJycpKQorCisgICAgICAgICMgRmlsbCBidWZmZXIgd2l0aCBuZXcgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMjAwOjI4MF0sIDIpKQorCisgICAgICAgICMgQXBwZW5kIHNvbWUgbW9yZSBkYXRhLCBub3QgZW5vdWdoIHRvIHJlcXVpcmUgcmVzaXplCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWlsyODA6MzAwXSwgMikpCisKKyAgICAgICAgIyBEZWNvbXByZXNzIHJlc3Qgb2YgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMzAwOl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2lucHV0YnVmXzMoc2VsZik6CisgICAgICAgICMgVGVzdCByZXVzaW5nIGlucHV0IGJ1ZmZlciBhZnRlciBleHRlbmRpbmcgaXQKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBhbG1vc3QgZnVsbCBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzoyMDBdLCA1KSkKKworICAgICAgICAjIEFkZCBldmVuIG1vcmUgZGF0YSB0byBpdCwgcmVxdWlyaW5nIHJlc2l6ZQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMjAwOjMwMF0sIDUpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBJTlBVVCkKKwogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl91bnVzZWRfZGF0YShzZWxmKToKICAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCiAgICAgICAgIGV4dHJhID0gYiJmb29ibGliYXIiCkBAIC02ODEsMTMgKzc3MywxMyBAQAogICAgIGRlZiB0ZXN0X3JlYWRfbXVsdGlzdHJlYW1fYnVmZmVyX3NpemVfYWxpZ25lZChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBjYXNlIHdoZXJlIGEgc3RyZWFtIGJvdW5kYXJ5IGNvaW5jaWRlcyB3aXRoIHRoZSBlbmQKICAgICAgICAgIyBvZiB0aGUgcmF3IHJlYWQgYnVmZmVyLgotICAgICAgICBzYXZlZF9idWZmZXJfc2l6ZSA9IGx6bWEuX0JVRkZFUl9TSVpFCi0gICAgICAgIGx6bWEuX0JVRkZFUl9TSVpFID0gbGVuKENPTVBSRVNTRURfWFopCisgICAgICAgIHNhdmVkX2J1ZmZlcl9zaXplID0gX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFCisgICAgICAgIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqICA1KSkgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDUpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IHNhdmVkX2J1ZmZlcl9zaXplCisgICAgICAgICAgICBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUgPSBzYXZlZF9idWZmZXJfc2l6ZQogCiAgICAgZGVmIHRlc3RfcmVhZF90cmFpbGluZ19qdW5rKHNlbGYpOgogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiArIENPTVBSRVNTRURfQk9HVVMpKSBhcyBmOgpAQCAtNzM4LDcgKzgzMCw3IEBACiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQpCiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQsIGZsb2F0KCkpCiAKICAgICBkZWYgdGVzdF9yZWFkX2JhZF9kYXRhKHNlbGYpOgogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9CT0dVUykpIGFzIGY6CkBAIC04MzQsNiArOTI2LDE3IEBACiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGYucmVhZGxpbmVzKCksIGxpbmVzKQogCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgorICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKKyAgICAgICAgYm9tYiA9IGx6bWEuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBwcmVzZXQ9NikKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQorCisgICAgICAgIGRlY29tcCA9IExaTUFGaWxlKEJ5dGVzSU8oYm9tYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBtYXhfZGVjb21wID0gMSArIERFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKKyAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCisKICAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKICAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgogICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IikgYXMgZjoKQEAgLTk5OSw3ICsxMTAyLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwLCAzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCA5LCAoKSkKKyAgICAgICAgICAgICMgaW8uQnVmZmVyZWRSZWFkZXIgcmFpc2VzIFR5cGVFcnJvciBpbnN0ZWFkIG9mIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpLCBmLnNlZWssIDksICgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuc2VlaywgYiJkZXJwIikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CmluZGV4IDIyZjg0OTEuLjgwYmVjN2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKQEAgLTE0Miw2ICsxNDIsOCBAQAogY2xhc3MgTWFjQ29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXRobW9kdWxlID0gbWFjcGF0aAogCisgICAgdGVzdF9yZWxwYXRoX2Vycm9ycyA9IE5vbmUKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CmluZGV4IGE0Y2QwOWMuLjIyYjJmY2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTIxMyw5ICsyMTMsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsY2FwLmZpbmRtYXRjaCgqY1swXSwgKipjWzFdKSwgY1syXSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChIZWxwZXJGdW5jdGlvblRlc3QsIEdldGNhcHNUZXN0LCBGaW5kbWF0Y2hUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQppbmRleCA5MDNlMTJjLi5jN2RlZjlhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CkBAIC0xOTMsNyArMTkzLDcgQEAKICAgICAgICAgaGVhZCA9IGxhc3QgPSBbXQogICAgICAgICAjIFRoZSBtYXggc3RhY2sgZGVwdGggc2hvdWxkIG1hdGNoIHRoZSB2YWx1ZSBpbiBQeXRob24vbWFyc2hhbC5jLgogICAgICAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgotICAgICAgICAgICAgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggPSAxNTAwCisgICAgICAgICAgICBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCA9IDEwMDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIID0gMjAwMAogICAgICAgICBmb3IgaSBpbiByYW5nZShNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCAtIDIpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CmluZGV4IDQ4Zjg0YmEuLjZjN2I5OWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKQEAgLTE3NSw2ICsxNzUsMTQgQEAKICAgICAgICAgICAgICAgICAgICBmbGFncwogICAgICAgICAgICAgICAgICAgKQogCisjIENsYXNzIHByb3ZpZGluZyBhbiBfX2luZGV4X18gbWV0aG9kLgorY2xhc3MgTXlJbmRleGFibGUob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKIGNsYXNzIE1hdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgdmFsdWUsIGV4cGVjdGVkKToKQEAgLTQyMiw5ICs0MzAsMTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5mYWN0b3JpYWwoaSksIHB5X2ZhY3RvcmlhbChpKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmZhY3RvcmlhbCwgLTEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xMCoqMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmZhY3RvcmlhbCwgLTFlMTAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmZhY3RvcmlhbCwgbWF0aC5waSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5mYWN0b3JpYWwsIHN5cy5tYXhzaXplKzEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguZmFjdG9yaWFsLCAxMGUxMDApCisKKyAgICAjIE90aGVyIGltcGxlbWVudGF0aW9ucyBtYXkgcGxhY2UgZGlmZmVyZW50IHVwcGVyIGJvdW5kcy4KKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdEZhY3RvcmlhbEh1Z2VJbnB1dHMoc2VsZik6CisgICAgICAgICMgQ3VycmVudGx5IHJhaXNlcyBWYWx1ZUVycm9yIGZvciBpbnB1dHMgdGhhdCBhcmUgdG9vIGxhcmdlCisgICAgICAgICMgdG8gZml0IGludG8gYSBDIGxvbmcuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguZmFjdG9yaWFsLCAxMCoqMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMWUxMDApCiAKICAgICBkZWYgdGVzdEZsb29yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGguZmxvb3IpCkBAIC01ODcsNiArNjAzLDQ5IEBACiAgICAgICAgICAgICBzID0gbXN1bSh2YWxzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc3VtKHZhbHMpLCBtYXRoLmZzdW0odmFscykpCiAKKyAgICBkZWYgdGVzdEdjZChzZWxmKToKKyAgICAgICAgZ2NkID0gbWF0aC5nY2QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMCwgMCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDEsIDApLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtMSwgMCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDAsIDEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgwLCAtMSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDcsIDEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg3LCAtMSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC0yMywgMTUpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjAsIDg0KSwgMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDg0LCAtMTIwKSwgMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDEyMTYzNDI2ODM1NTc2MDE1MzU1MDYzMTE3MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzNjUyMjY4MTg0OTExMDEyNDYxNjQ1ODc4NCksIDMyKQorICAgICAgICBjID0gNjUyNTYwCisgICAgICAgIHggPSA0MzQ2MTA0NTY1NzAzOTk5MDIzNzg4ODA2NzkyMzMwOTg4MTkwMTk4NTMyMjk0NzAyODY5OTQzNjc4MzY2MDA1NjYKKyAgICAgICAgeSA9IDEwNjQ1MDIyNDU4MjUxMTUzMjc3NTQ4NDcyNDQ5MTQ5MjE1NTM5NzcKKyAgICAgICAgYSA9IHggKiBjCisgICAgICAgIGIgPSB5ICogYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgLWEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCBhKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWEsIC1iKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWIsIC1hKSwgYykKKyAgICAgICAgYyA9IDU3NjU1OTIzMDg3MTY1NDk1OTgxNjEzMDU1MTg4NDg1NjkxMjAwMzE0MTQ0Njc4MTY0NjYwMjc5MDIxNjQwNjg3NAorICAgICAgICBhID0geCAqIGMKKyAgICAgICAgYiA9IHkgKiBjCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGEsIGIpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChiLCBhKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWEsIGIpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChiLCAtYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGEsIC1iKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWIsIGEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYSwgLWIpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYiwgLWEpLCBjKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2NkLCAxMjAuMCwgODQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2NkLCAxMjAsIDg0LjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKE15SW5kZXhhYmxlKDEyMCksIE15SW5kZXhhYmxlKDg0KSksIDEyKQorCiAgICAgZGVmIHRlc3RIeXBvdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmh5cG90KQogICAgICAgICBzZWxmLmZ0ZXN0KCdoeXBvdCgwLDApJywgbWF0aC5oeXBvdCgwLDApLCAwKQpAQCAtOTc1LDYgKzEwMzQsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzaW5mKDAuKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzaW5mKDEuKSkKIAorICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X25hbl9jb25zdGFudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5uYW4pKQorCisgICAgQHJlcXVpcmVzX0lFRUVfNzU0CisgICAgZGVmIHRlc3RfaW5mX2NvbnN0YW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc2luZihtYXRoLmluZikpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihtYXRoLmluZiwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaW5mLCBmbG9hdCgiaW5mIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLW1hdGguaW5mLCBmbG9hdCgiLWluZiIpKQorCiAgICAgIyBSRURfRkxBRyAxNi1PY3QtMjAwMCBUaW0KICAgICAjIFdoaWxlIDIuMCBpcyBtb3JlIGNvbnNpc3RlbnQgYWJvdXQgZXhjZXB0aW9ucyB0aGFuIHByZXZpb3VzIHJlbGVhc2VzLCBpdAogICAgICMgc3RpbGwgZmFpbHMgdGhpcyBwYXJ0IG9mIHRoZSB0ZXN0IG9uIHNvbWUgcGxhdGZvcm1zLiAgRm9yIG5vdywgd2Ugb25seQpAQCAtMTA5NiwxMCArMTE2NiwxMzEgQEAKICAgICAgICAgICAgICAgICAgICAgICAnXG4gICcuam9pbihmYWlsdXJlcykpCiAKIAorY2xhc3MgSXNDbG9zZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBpc2Nsb3NlID0gbWF0aC5pc2Nsb3NlICMgc3VibGNhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcworCisgICAgZGVmIGFzc2VydElzQ2xvc2Uoc2VsZiwgYSwgYiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXNjbG9zZShhLCBiLCAqYXJncywgKiprd2FyZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSIlcyBhbmQgJXMgc2hvdWxkIGJlIGNsb3NlISIgJSAoYSwgYikpCisKKyAgICBkZWYgYXNzZXJ0SXNOb3RDbG9zZShzZWxmLCBhLCBiLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXNjbG9zZShhLCBiLCAqYXJncywgKiprd2FyZ3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iJXMgYW5kICVzIHNob3VsZCBub3QgYmUgY2xvc2UhIiAlIChhLCBiKSkKKworICAgIGRlZiBhc3NlcnRBbGxDbG9zZShzZWxmLCBleGFtcGxlcywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgZm9yIGEsIGIgaW4gZXhhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGFzc2VydEFsbE5vdENsb3NlKHNlbGYsIGV4YW1wbGVzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBmb3IgYSwgYiBpbiBleGFtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3RDbG9zZShhLCBiLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV90b2xlcmFuY2VzKHNlbGYpOgorICAgICAgICAjIFZhbHVlRXJyb3Igc2hvdWxkIGJlIHJhaXNlZCBpZiBlaXRoZXIgdG9sZXJhbmNlIGlzIGxlc3MgdGhhbiB6ZXJvCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoMSwgMSwgcmVsX3RvbD0tMWUtMTAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKDEsIDEsIHJlbF90b2w9MWUtMTAwLCBhYnNfdG9sPS0xZTEwKQorCisgICAgZGVmIHRlc3RfaWRlbnRpY2FsKHNlbGYpOgorICAgICAgICAjIGlkZW50aWNhbCB2YWx1ZXMgbXVzdCB0ZXN0IGFzIGNsb3NlCisgICAgICAgIGlkZW50aWNhbF9leGFtcGxlcyA9IFsoMi4wLCAyLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMWUyMDAsIDAuMWUyMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMTIzZS0zMDAsIDEuMTIzZS0zMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEyMzQ1LCAxMjM0NS4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjAsIC0wLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM0NTY3OCwgMzQ1Njc4KV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShpZGVudGljYWxfZXhhbXBsZXMsIHJlbF90b2w9MC4wLCBhYnNfdG9sPTAuMCkKKworICAgIGRlZiB0ZXN0X2VpZ2h0X2RlY2ltYWxfcGxhY2VzKHNlbGYpOgorICAgICAgICAjIGV4YW1wbGVzIHRoYXQgYXJlIGNsb3NlIHRvIDFlLTgsIGJ1dCBub3QgMWUtOQorICAgICAgICBlaWdodF9kZWNpbWFsX3BsYWNlc19leGFtcGxlcyA9IFsoMWU4LCAxZTggKyAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xZS04LCAtMS4wMDAwMDAwMDllLTgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4xMjM0NTY3OCwgMS4xMjM0NTY3OSldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShlaWdodF9kZWNpbWFsX3BsYWNlc19leGFtcGxlcywgcmVsX3RvbD0xZS05KQorCisgICAgZGVmIHRlc3RfbmVhcl96ZXJvKHNlbGYpOgorICAgICAgICAjIHZhbHVlcyBjbG9zZSB0byB6ZXJvCisgICAgICAgIG5lYXJfemVyb19leGFtcGxlcyA9IFsoMWUtOSwgMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtOSwgMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtMTUwLCAwLjApXQorICAgICAgICAjIHRoZXNlIHNob3VsZCBub3QgYmUgY2xvc2UgdG8gYW55IHJlbF90b2wKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShuZWFyX3plcm9fZXhhbXBsZXMsIHJlbF90b2w9MC45KQorICAgICAgICAjIHRoZXNlIHNob3VsZCBiZSBjbG9zZSB0byBhYnNfdG9sPTFlLTgKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShuZWFyX3plcm9fZXhhbXBsZXMsIGFic190b2w9MWUtOCkKKworICAgIGRlZiB0ZXN0X2lkZW50aWNhbF9pbmZpbml0ZShzZWxmKToKKyAgICAgICAgIyB0aGVzZSBhcmUgY2xvc2UgcmVnYXJkbGVzcyBvZiB0b2xlcmFuY2UgLS0gaS5lLiB0aGV5IGFyZSBlcXVhbAorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoSU5GLCBJTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZShJTkYsIElORiwgYWJzX3RvbD0wLjApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZShOSU5GLCBOSU5GKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoTklORiwgTklORiwgYWJzX3RvbD0wLjApCisKKyAgICBkZWYgdGVzdF9pbmZfbmluZl9uYW4oc2VsZik6CisgICAgICAgICMgdGhlc2Ugc2hvdWxkIG5ldmVyIGJlIGNsb3NlIChmb2xsb3dpbmcgSUVFRSA3NTQgcnVsZXMgZm9yIGVxdWFsaXR5KQorICAgICAgICBub3RfY2xvc2VfZXhhbXBsZXMgPSBbKE5BTiwgTkFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOQU4sIDFlLTEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMWUtMTAwLCBOQU4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElORiwgTkFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOQU4sIElORiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5GLCBOSU5GKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIDEuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wLCBJTkYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElORiwgMWUzMDgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFlMzA4LCBJTkYpXQorICAgICAgICAjIHVzZSBsYXJnZXN0IHJlYXNvbmFibGUgdG9sZXJhbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2Uobm90X2Nsb3NlX2V4YW1wbGVzLCBhYnNfdG9sPTAuOTk5OTk5OTk5OTk5OTk5KQorCisgICAgZGVmIHRlc3RfemVyb190b2xlcmFuY2Uoc2VsZik6CisgICAgICAgICMgdGVzdCB3aXRoIHplcm8gdG9sZXJhbmNlCisgICAgICAgIHplcm9fdG9sZXJhbmNlX2Nsb3NlX2V4YW1wbGVzID0gWygxLjAsIDEuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMy40LCAtMy40KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xZS0zMDAsIC0xZS0zMDApXQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKHplcm9fdG9sZXJhbmNlX2Nsb3NlX2V4YW1wbGVzLCByZWxfdG9sPTAuMCkKKworICAgICAgICB6ZXJvX3RvbGVyYW5jZV9ub3RfY2xvc2VfZXhhbXBsZXMgPSBbKDEuMCwgMS4wMDAwMDAwMDAwMDAwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuOTk5OTk5OTk5OTk5OTksIDEuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wZTIwMCwgLjk5OTk5OTk5OTk5OTk5OWUyMDApXQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKHplcm9fdG9sZXJhbmNlX25vdF9jbG9zZV9leGFtcGxlcywgcmVsX3RvbD0wLjApCisKKyAgICBkZWYgdGVzdF9hc3N5bWV0cnkoc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgYXNzeW1ldHJ5IGV4YW1wbGUgZnJvbSBQRVAgNDg1CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoWyg5LCAxMCksICgxMCwgOSldLCByZWxfdG9sPTAuMSkKKworICAgIGRlZiB0ZXN0X2ludGVnZXJzKHNlbGYpOgorICAgICAgICAjIHRlc3Qgd2l0aCBpbnRlZ2VyIHZhbHVlcworICAgICAgICBpbnRlZ2VyX2V4YW1wbGVzID0gWygxMDAwMDAwMDEsIDEwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEyMzQ1Njc4OSwgMTIzNDU2Nzg4KV0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGludGVnZXJfZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShpbnRlZ2VyX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFscyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggRGVjaW1hbCB2YWx1ZXMKKyAgICAgICAgZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCisKKyAgICAgICAgZGVjaW1hbF9leGFtcGxlcyA9IFsoRGVjaW1hbCgnMS4wMDAwMDAwMScpLCBEZWNpbWFsKCcxLjAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTIwJyksIERlY2ltYWwoJzEuMGUtMjAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTEwMCcpLCBEZWNpbWFsKCcxLjBlLTEwMCcpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShkZWNpbWFsX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS05KQorCisgICAgZGVmIHRlc3RfZnJhY3Rpb25zKHNlbGYpOgorICAgICAgICAjIHRlc3Qgd2l0aCBGcmFjdGlvbiB2YWx1ZXMKKyAgICAgICAgZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCisKKyAgICAgICAgIyBjb3VsZCB1c2Ugc29tZSBtb3JlIGV4YW1wbGVzIGhlcmUhCisgICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWyhGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpXQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZnJhY3Rpb25fZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgZnJvbSBkb2N0ZXN0IGltcG9ydCBEb2NGaWxlU3VpdGUKICAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCiAgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoTWF0aFRlc3RzKSkKKyAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZShJc0Nsb3NlVGVzdHMpKQogICAgIHN1aXRlLmFkZFRlc3QoRG9jRmlsZVN1aXRlKCJpZWVlNzU0LnR4dCIpKQogICAgIHJ1bl91bml0dGVzdChzdWl0ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKaW5kZXggN2NlOTViOS4uNDRkNjZjMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgX3B5aW8gYXMgcHlpbwogaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogCiBjbGFzcyBNZW1vcnlTZWVrVGVzdE1peGluOgogCkBAIC0xNjUsNiArMTY2LDEwIEBACiAgICAgICAgIG1lbWlvLnNlZWsoMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkKE5vbmUpLCBidWYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtaW8ucmVhZCwgJycpCisgICAgICAgIG1lbWlvLnNlZWsobGVuKGJ1ZikgKyAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbWlvLnJlYWQoMSksIHNlbGYuRU9GKQorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkKCksIHNlbGYuRU9GKQogICAgICAgICBtZW1pby5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1lbWlvLnJlYWQpCiAKQEAgLTE4NCw2ICsxODksOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbWlvLnJlYWRsaW5lKC0xKSwgYnVmKQogICAgICAgICBtZW1pby5zZWVrKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZGxpbmUoMCksIHNlbGYuRU9GKQorICAgICAgICAjIElzc3VlICMyNDk4OTogQnVmZmVyIG92ZXJyZWFkCisgICAgICAgIG1lbWlvLnNlZWsobGVuKGJ1ZikgKiAyICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkbGluZSgpLCBzZWxmLkVPRikKIAogICAgICAgICBidWYgPSBzZWxmLmJ1ZnR5cGUoIjEyMzQ1Njc4OTBcbiIpCiAgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKChidWYgKiAzKVs6LTFdKQpAQCAtMjE2LDYgKzIyNCw5IEBACiAgICAgICAgIG1lbWlvLnNlZWsoMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkbGluZXMoTm9uZSksIFtidWZdICogMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtaW8ucmVhZGxpbmVzLCAnJykKKyAgICAgICAgIyBJc3N1ZSAjMjQ5ODk6IEJ1ZmZlciBvdmVycmVhZAorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICogMTAgKyAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbWlvLnJlYWRsaW5lcygpLCBbXSkKICAgICAgICAgbWVtaW8uY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1pby5yZWFkbGluZXMpCiAKQEAgLTIzNyw2ICsyNDgsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBidWYpCiAgICAgICAgICAgICBpICs9IDEKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLCAxMCkKKyAgICAgICAgIyBJc3N1ZSAjMjQ5ODk6IEJ1ZmZlciBvdmVycmVhZAorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICogMTAgKyAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWVtaW8pLCBbXSkKICAgICAgICAgbWVtaW8gPSBzZWxmLmlvY2xhc3MoYnVmICogMikKICAgICAgICAgbWVtaW8uY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1pby5fX25leHRfXykKQEAgLTcxOCwxMiArNzMyLDU2IEBACiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6Ci0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnUDJuTjJQbicpCisgICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnUDJuMlBuJykKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGlvLkJ5dGVzSU8oKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayhpby5CeXRlc0lPKCksIGJhc2VzaXplICkKLSAgICAgICAgY2hlY2soaW8uQnl0ZXNJTyhiJ2EnKSwgYmFzZXNpemUgKyAxICsgMSApCi0gICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oYidhJyAqIDEwMDApLCBiYXNlc2l6ZSArIDEwMDAgKyAxICkKKyAgICAgICAgY2hlY2soaW8uQnl0ZXNJTyhiJ2EnICogMTAwMCksIGJhc2VzaXplICsgc3lzLmdldHNpemVvZihiJ2EnICogMTAwMCkpCisKKyAgICAjIFZhcmlvdXMgdGVzdHMgb2YgY29weS1vbi13cml0ZSBiZWhhdmlvdXIgZm9yIEJ5dGVzSU8uCisKKyAgICBkZWYgX3Rlc3RfY293X211dGF0aW9uKHNlbGYsIG11dGF0aW9uKToKKyAgICAgICAgIyBDb21tb24gY29kZSBmb3IgYWxsIEJ5dGVzSU8gY29weS1vbi13cml0ZSBtdXRhdGlvbiB0ZXN0cy4KKyAgICAgICAgaW1tID0gYicgJyAqIDEwMjQKKyAgICAgICAgb2xkX3JjID0gc3lzLmdldHJlZmNvdW50KGltbSkKKyAgICAgICAgbWVtaW8gPSBzZWxmLmlvY2xhc3MoaW1tKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChpbW0pLCBvbGRfcmMgKyAxKQorICAgICAgICBtdXRhdGlvbihtZW1pbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoaW1tKSwgb2xkX3JjKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY293X3RydW5jYXRlKHNlbGYpOgorICAgICAgICAjIEVuc3VyZSB0cnVuY2F0ZSBjYXVzZXMgYSBjb3B5LgorICAgICAgICBkZWYgbXV0YXRpb24obWVtaW8pOgorICAgICAgICAgICAgbWVtaW8udHJ1bmNhdGUoMSkKKyAgICAgICAgc2VsZi5fdGVzdF9jb3dfbXV0YXRpb24obXV0YXRpb24pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb3dfd3JpdGUoc2VsZik6CisgICAgICAgICMgRW5zdXJlIHdyaXRlIHRoYXQgd291bGQgbm90IGNhdXNlIGEgcmVzaXplIHN0aWxsIHJlc3VsdHMgaW4gYSBjb3B5LgorICAgICAgICBkZWYgbXV0YXRpb24obWVtaW8pOgorICAgICAgICAgICAgbWVtaW8uc2VlaygwKQorICAgICAgICAgICAgbWVtaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLl90ZXN0X2Nvd19tdXRhdGlvbihtdXRhdGlvbikKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2Nvd19zZXRzdGF0ZShzZWxmKToKKyAgICAgICAgIyBfX3NldHN0YXRlX18gc2hvdWxkIGNhdXNlIGJ1ZmZlciB0byBiZSByZWxlYXNlZC4KKyAgICAgICAgbWVtaW8gPSBzZWxmLmlvY2xhc3MoYidmb29vb29vJykKKyAgICAgICAgc3RhdGUgPSBtZW1pby5fX2dldHN0YXRlX18oKQorICAgICAgICBkZWYgbXV0YXRpb24obWVtaW8pOgorICAgICAgICAgICAgbWVtaW8uX19zZXRzdGF0ZV9fKHN0YXRlKQorICAgICAgICBzZWxmLl90ZXN0X2Nvd19tdXRhdGlvbihtdXRhdGlvbikKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2Nvd19tdXRhYmxlKHNlbGYpOgorICAgICAgICAjIEJ5dGVzSU8gc2hvdWxkIGFjY2VwdCBvbmx5IEJ5dGVzIGZvciBjb3B5LW9uLXdyaXRlIHNoYXJpbmcsIHNpbmNlCisgICAgICAgICMgYXJiaXRyYXJ5IGJ1ZmZlci1leHBvcnRpbmcgb2JqZWN0cyBsaWtlIGJ5dGVhcnJheSgpIGFyZW4ndCBndWFyYW50ZWVkCisgICAgICAgICMgdG8gYmUgaW1tdXRhYmxlLgorICAgICAgICBiYSA9IGJ5dGVhcnJheSgxMDI0KQorICAgICAgICBvbGRfcmMgPSBzeXMuZ2V0cmVmY291bnQoYmEpCisgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGJhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChiYSksIG9sZF9yYykKIAogY2xhc3MgQ1N0cmluZ0lPVGVzdChQeVN0cmluZ0lPVGVzdCk6CiAgICAgaW9jbGFzcyA9IGlvLlN0cmluZ0lPCkBAIC03ODMsMTAgKzg0MSw1IEBACiAgICAgICAgICAgICBwYXNzCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3RzID0gW1B5Qnl0ZXNJT1Rlc3QsIFB5U3RyaW5nSU9UZXN0LCBDQnl0ZXNJT1Rlc3QsIENTdHJpbmdJT1Rlc3QsCi0gICAgICAgICAgICAgUHlTdHJpbmdJT1BpY2tsZVRlc3QsIENTdHJpbmdJT1BpY2tsZVRlc3RdCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKaW5kZXggNGJjMzEzMy4uZGEwMWE4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQpAQCAtMzY5LDEyICszNjksMTIgQEAKICAgICAgICAgZCA9IG1lbW9yeXZpZXcoYikKIAogICAgICAgICBkZWwgYgotIAorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY1swXSwgMjU2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbMF0sIDI1NikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZvcm1hdCwgIkgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZm9ybWF0LCAiSCIpCi0gCisKICAgICAgICAgXyA9IG0uY2FzdCgnSScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY1swXSwgMjU2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbMF0sIDI1NikKQEAgLTQ5Miw4ICs0OTIsMjYgQEAKICAgICBwYXNzCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCitjbGFzcyBPdGhlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2N0eXBlc19jYXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlIDE1OTQ0OiBBbGxvdyBhbGwgc291cmNlIGZvcm1hdHMgd2hlbiBjYXN0aW5nIHRvIGJ5dGVzLgorICAgICAgICBjdHlwZXMgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgiY3R5cGVzIikKKyAgICAgICAgcDYgPSBieXRlcyhjdHlwZXMuY19kb3VibGUoMC42KSkKKworICAgICAgICBkID0gY3R5cGVzLmNfZG91YmxlKCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZCkuY2FzdCgiQiIpCisgICAgICAgIG1bOjJdID0gcDZbOjJdCisgICAgICAgIG1bMjpdID0gcDZbMjpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC52YWx1ZSwgMC42KQorCisgICAgICAgIGZvciBmb3JtYXQgaW4gIkJiYyI6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmb3JtYXQpOgorICAgICAgICAgICAgICAgIGQgPSBjdHlwZXMuY19kb3VibGUoKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGQpLmNhc3QoZm9ybWF0KQorICAgICAgICAgICAgICAgIG1bOjJdID0gbWVtb3J5dmlldyhwNikuY2FzdChmb3JtYXQpWzoyXQorICAgICAgICAgICAgICAgIG1bMjpdID0gbWVtb3J5dmlldyhwNikuY2FzdChmb3JtYXQpWzI6XQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC52YWx1ZSwgMC42KQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKaW5kZXggMGI1MzAzMi4uNjg1NjU5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKQEAgLTEwMSwxMSArMTAxLDUgQEAKICAgICAgICAgZXEoc2VsZi5kYi5ndWVzc190eXBlKCJpbWFnZS5qcGciKSwgKCJpbWFnZS9qcGVnIiwgTm9uZSkpCiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UucG5nIiksICgiaW1hZ2UvcG5nIiwgTm9uZSkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNaW1lVHlwZXNUZXN0Q2FzZSwKLSAgICAgICAgV2luMzJNaW1lVHlwZXNUZXN0Q2FzZQotICAgICAgICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CmluZGV4IDA1ZGY2ZTkuLmU4Y2E0OTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKQEAgLTEsNyArMSw3IEBACiAjIHRlc3QgZm9yIHhtbC5kb20ubWluaWRvbQogCiBpbXBvcnQgcGlja2xlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IHhtbC5kb20ubWluaWRvbQpAQCAtNDksNiArNDksMjEgQEAKICAgICAgICAgdCA9IG5vZGUud2hvbGVUZXh0CiAgICAgICAgIHNlbGYuY29uZmlybSh0ID09IHMsICJsb29raW5nIGZvciAlciwgZm91bmQgJXIiICUgKHMsIHQpKQogCisgICAgZGVmIHRlc3REb2N1bWVudEFzeW5jQXR0cihzZWxmKToKKyAgICAgICAgZG9jID0gRG9jdW1lbnQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRvYy5hc3luY18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGRvYywgJ2FzeW5jJywgVHJ1ZSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2V0YXR0cihkb2MsICdhc3luYycsIFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdldGF0dHIoZG9jLCAnYXN5bmMnLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkb2MuYXN5bmNfKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRG9jdW1lbnQuYXN5bmNfKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihEb2N1bWVudCwgJ2FzeW5jJywgVHJ1ZSkpCisKICAgICBkZWYgdGVzdFBhcnNlRnJvbUJpbmFyeUZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggb3Blbih0c3RmaWxlLCAncmInKSBhcyBmaWxlOgogICAgICAgICAgICAgZG9tID0gcGFyc2UoZmlsZSkKQEAgLTE1NDUsOCArMTU2MCw1IEBACiAgICAgICAgIHBpID0gZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigieSIsICJ6IikKICAgICAgICAgcGkubm9kZVZhbHVlID0gImNyYXNoIgogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE1pbmlkb21UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21tYXAucHkgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKaW5kZXggYWQ5M2E1OS4uMGYyNTc0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQpAQCAtMjgyLDYgKzI4Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5maW5kKGInb25lJywgMSksIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5maW5kKGInb25lJywgMSwgLTEpLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChiJ29uZScsIDEsIC0yKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5maW5kKGJ5dGVhcnJheShiJ29uZScpKSwgMCkKIAogCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CkBAIC0zMDAsNiArMzAxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJmaW5kKGInb25lJywgMCwgLTIpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmZpbmQoYidvbmUnLCAxLCAtMSksIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZmluZChiJ29uZScsIDEsIC0yKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZmluZChieXRlYXJyYXkoYidvbmUnKSksIDgpCiAKIAogICAgIGRlZiB0ZXN0X2RvdWJsZV9jbG9zZShzZWxmKToKQEAgLTYwMSw4ICs2MDMsMTAgQEAKICAgICAgICAgbS53cml0ZShiImJhciIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50ZWxsKCksIDYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs6XSwgYiIwMTJiYXI2Nzg5IikKLSAgICAgICAgbS5zZWVrKDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0ud3JpdGUsIGIiYmFyIikKKyAgICAgICAgbS53cml0ZShieXRlYXJyYXkoYiJiYXoiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRlbGwoKSwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzpdLCBiIjAxMmJhcmJhejkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLndyaXRlLCBiImJhIikKIAogICAgIGRlZiB0ZXN0X25vbl9hc2NpaV9ieXRlKHNlbGYpOgogICAgICAgICBmb3IgYiBpbiAoMTI5LCAyMDAsIDI1NSk6ICMgPiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKaW5kZXggMTIzMDI5My4uNDhhYjBiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKQEAgLTEsOCArMSw4IEBACiAjIFRlc3QgdGhlIG1vZHVsZSB0eXBlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3ZWFrcmVmCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBnY19jb2xsZWN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGdjX2NvbGxlY3QKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogaW1wb3J0IHN5cwogTW9kdWxlVHlwZSA9IHR5cGUoc3lzKQpAQCAtMzAsNiArMzAsMjIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uX19kb2NfXywgTW9kdWxlVHlwZS5fX2RvY19fKQogCisgICAgZGVmIHRlc3RfdW5pbnRpYWxpemVkX21pc3NpbmdfZ2V0YXR0cihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSA4Mjk3CisgICAgICAgICMgdGVzdCB0aGUgdGV4dCBpbiB0aGUgQXR0cmlidXRlRXJyb3Igb2YgYW4gdW5pbml0aWFsaXplZCBtb2R1bGUKKyAgICAgICAgZm9vID0gTW9kdWxlVHlwZS5fX25ld19fKE1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsICJtb2R1bGUgaGFzIG5vIGF0dHJpYnV0ZSAnbm90X2hlcmUnIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBmb28sICJub3RfaGVyZSIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2dldGF0dHIoc2VsZik6CisgICAgICAgICMgSXNzdWUgODI5NworICAgICAgICAjIHRlc3QgdGhlIHRleHQgaW4gdGhlIEF0dHJpYnV0ZUVycm9yCisgICAgICAgIGZvbyA9IE1vZHVsZVR5cGUoImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsICJtb2R1bGUgJ2ZvbycgaGFzIG5vIGF0dHJpYnV0ZSAnbm90X2hlcmUnIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBmb28sICJub3RfaGVyZSIpCisKICAgICBkZWYgdGVzdF9ub19kb2NzdHJpbmcoc2VsZik6CiAgICAgICAgICMgUmVndWxhcmx5IGluaXRpYWxpemVkIG1vZHVsZSwgbm8gZG9jc3RyaW5nCiAgICAgICAgIGZvbyA9IE1vZHVsZVR5cGUoImZvbyIpCkBAIC0yMTEsMTIgKzIyNywxNiBAQAogICAgICAgICAgICAgYiJsZW4gPSBsZW4iLAogICAgICAgICAgICAgYiJzaHV0aWwucm10cmVlID0gcm10cmVlIn0pCiAKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9yX2Vycm9yc19wcm9wb2dhdGUoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyOgorICAgICAgICAgICAgZGVmIF9fZ2V0X18oc2VsZiwgbywgdCk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgIGNsYXNzIE0oTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBtZWxvbiA9IERlc2NyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBnZXRhdHRyLCBNKCJteW1vZCIpLCAibWVsb24iKQorCiAgICAgIyBmcm96ZW4gYW5kIG5hbWVzcGFjZSBtb2R1bGUgcmVwcnMgYXJlIHRlc3RlZCBpbiBpbXBvcnRsaWIuCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChNb2R1bGVUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CmluZGV4IGNjZGFlYzcuLjhlZjMzNGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiIFRlc3Qgc3VpdGUgZm9yIHRoZSBjb2RlIGluIG1zaWxpYiAiIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogbXNpbGliID0gaW1wb3J0X21vZHVsZSgnbXNpbGliJykKIAogY2xhc3MgVGVzdF9tYWtlX2lkKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTM5LDggKzM5LDUgQEAKICAgICAgICAgICAgIG1zaWxpYi5tYWtlX2lkKCIuc1x4ODJvPyorcnQiKSwgIl8uc19vX19fcnQiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CmluZGV4IGRlNWY3ODIuLjUyMjczZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQpAQCAtMTMsMTAgKzEzLDkgQEAKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgcHlfY29tcGlsZQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKLSAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogIyBMb29rIHVwIHdoaWNoIHN0YXJ0IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSB0byB0ZXN0CiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCkBAIC0xNTcsMTIgKzE1NiwxMiBAQAogICAgICAgICBzZWxmLl9jaGVja19vdXRwdXQoc2NyaXB0X25hbWUsIHJjLCBvdXQsIGVycikKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lKQogCiAgICAgZGVmIHRlc3RfYmFzaWNfc2NyaXB0X25vX3N1ZmZpeChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdzY3JpcHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWl0X3N1ZmZpeD1UcnVlKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9uYW1lKQpAQCAtMTczLDcgKzE3Miw3IEBACiAgICAgICAgICMgYSB3b3JrYXJvdW5kIGZvciB0aGF0IGNhc2UKICAgICAgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2lweXRob24vaXB5dGhvbi9pc3N1ZXMvNDY5OAogICAgICAgICBzb3VyY2UgPSB0ZXN0X3NvdXJjZV9tYWluX3NraXBwZWRfaW5fY2hpbGRyZW4KLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdpcHl0aG9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNvdXJjZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSkKQEAgLTE4Myw3ICsxODIsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9ub19zdWZmaXgpCiAKICAgICBkZWYgdGVzdF9zY3JpcHRfY29tcGlsZWQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQpAQCAtMTkyLDE0ICsxOTEsMTQgQEAKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgc291cmNlID0gc2VsZi5tYWluX2luX2NoaWxkcmVuX3NvdXJjZQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNvdXJjZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfZGlyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c291cmNlKQogICAgICAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCkBAIC0yMDksNyArMjA4LDcgQEAKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGUoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgc2NyaXB0X25hbWUpCkBAIC0yMTcsNyArMjE2LDcgQEAKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfY29tcGlsZWQoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCkBAIC0yMjUsNyArMjI0LDcgQEAKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdjaGVja19zaWJsaW5nJykKQEAgLTIzNCwyMCArMjMzLDIwIEBACiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3N1YnBhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcsIGRlcHRoPTIpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy50ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnX19tYWluX18nLApAQCAtMjU3LDcgKzI1Niw3IEBACiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5IGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKaW5kZXggYTNhM2MyNi4uMzg3YTRlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKQEAgLTM2LDggKzM2LDUgQEAKICAgICAgICAgICAgIGlmIGRvbmU6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE5pc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKaW5kZXggNWRhYzVkYi4uMzBmYTYxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIG9wZW5fdXJscmVzb3VyY2UKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBvcGVuX3VybHJlc291cmNlCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgpAQCAtOTcsOCArOTcsNSBAQAogICAgICAgICBub3JtYWxpemUoJ05GQycsICdcdWQ1NWNcdWFlMDAnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoTm9ybWFsaXphdGlvblRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKaW5kZXggZGFjZGRkZS4uNTgwZjIwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKQEAgLTMzMCw2ICszMzAsNzUgQEAKICAgICAgICAgdGVzdGVyKCdudHBhdGgucmVscGF0aCgiL2EvYiIsICIvYS9iIiknLCAnLicpCiAgICAgICAgIHRlc3RlcignbnRwYXRoLnJlbHBhdGgoImM6L2ZvbyIsICJDOi9GT08iKScsICcuJykKIAorICAgIGRlZiB0ZXN0X2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGRlZiBjaGVjayhwYXRocywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgdGVzdGVyKCgnbnRwYXRoLmNvbW1vbnBhdGgoJXIpJyAlIHBhdGhzKS5yZXBsYWNlKCdcXFxcJywgJ1xcJyksCisgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisgICAgICAgIGRlZiBjaGVja19lcnJvcihleGMsIHBhdGhzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgbnRwYXRoLmNvbW1vbnBhdGgsIHBhdGhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5mc2VuY29kZShwKSBmb3IgcCBpbiBwYXRoc10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsIFtdKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ1Byb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlByb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydcXFByb2dyYW0gRmlsZXMnLCAnUHJvZ3JhbSBGaWxlcyddKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ1Byb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcyddLCAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzJ10sICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXNcXCcsICdDOlxcUHJvZ3JhbSBGaWxlcyddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFwnLCAnQzpcXFByb2dyYW0gRmlsZXNcXCddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxcXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXNcXFxcJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXC5cXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXNcXC4nXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcJywgJ0M6XFxiaW4nXSwgJ0M6XFwnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxiaW4nXSwgJ0M6XFwnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxCYXInXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxCYXInXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvamVjdHMnXSwgJ0M6XFwnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFwnLCAnQzpcXFByb2plY3RzJ10sICdDOlxcJykKKworICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nLCAnQzovUHJvZ3JhbSBGaWxlcy9CYXInXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJywgJ2M6L3Byb2dyYW0gZmlsZXMvYmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnYzovcHJvZ3JhbSBmaWxlcy9iYXInLCAnQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddLAorICAgICAgICAgICAgICAnYzpcXHByb2dyYW0gZmlsZXMnKQorCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnQzpcXFByb2dyYW0gRmlsZXMnLCAnRDpcXFByb2dyYW0gRmlsZXMnXSkKKworICAgICAgICBjaGVjayhbJ3NwYW0nXSwgJ3NwYW0nKQorICAgICAgICBjaGVjayhbJ3NwYW0nLCAnc3BhbSddLCAnc3BhbScpCisgICAgICAgIGNoZWNrKFsnc3BhbScsICdhbG90J10sICcnKQorICAgICAgICBjaGVjayhbJ2FuZFxcamFtJywgJ2FuZFxcc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmRcXFxcamFtJywgJ2FuZFxcc3BhbVxcXFwnXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kXFwuXFxqYW0nLCAnLlxcYW5kXFxzcGFtJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZFxcamFtJywgJ2FuZFxcc3BhbScsICdhbG90J10sICcnKQorICAgICAgICBjaGVjayhbJ2FuZFxcamFtJywgJ2FuZFxcc3BhbScsICdhbmQnXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnQzphbmRcXGphbScsICdDOmFuZFxcc3BhbSddLCAnQzphbmQnKQorCisgICAgICAgIGNoZWNrKFsnJ10sICcnKQorICAgICAgICBjaGVjayhbJycsICdzcGFtXFxhbG90J10sICcnKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJycsICdcXHNwYW1cXGFsb3QnXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYidDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ1Byb2dyYW0gRmlsZXNcXEZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYidQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydDOlxcUHJvZ3JhbSBGaWxlcycsIGInQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0M6XFxQcm9ncmFtIEZpbGVzJywgYidQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydQcm9ncmFtIEZpbGVzJywgYidDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisKICAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgpIGFzIHRmMSwgVGVtcG9yYXJ5RmlsZSgpIGFzIHRmMjoKICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoZSBzYW1lIGZpbGUgaXMgcmVhbGx5IHRoZSBzYW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKaW5kZXggMzQyM2Q0ZS4uYzU0ZGVkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBtYXRoCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsIGFzIEQKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbiBhcyBGCkBAIC0xOTksOCArMTk4LDUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCB2LCB6KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoSGFzaFRlc3QsIENvbXBhcmlzb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKaW5kZXggZjUxMGJhYy4uNmVmOTNkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQpAQCAtMSw2ICsxLDUgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMiwgb3Bjb2RlcwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgT3Bjb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMDUsOCArMTA0LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeVN0cmluZygpICUgMywgNDIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChPcGNvZGVUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkgYi9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkKaW5kZXggNDc4NTEwNy4uM2Y0NmE2MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3BlbnB0eS5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGVzdCB0byBzZWUgaWYgb3BlbnB0eSB3b3Jrcy4gKEJ1dCBkb24ndCB3b3JyeSBpZiBpdCBpc24ndCBhdmFpbGFibGUuKQogCiBpbXBvcnQgb3MsIHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGlmIG5vdCBoYXNhdHRyKG9zLCAib3BlbnB0eSIpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvcy5vcGVucHR5KCkgbm90IGF2YWlsYWJsZS4iKQpAQCAtMTgsOCArMTcsNSBAQAogICAgICAgICBvcy53cml0ZShzbGF2ZSwgYidQaW5nIScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChtYXN0ZXIsIDEwMjQpLCBiJ1BpbmchJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChPcGVucHR5VGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKaW5kZXggYWI1OGE5OC4uZGE5YzhlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CkBAIC0xLDQgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcGlja2xlCitpbXBvcnQgc3lzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0yMDMsNiArMjA1LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQogCisgICAgZGVmIHRlc3RfbWF0bXVsKHNlbGYpOgorICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubWF0bXVsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1hdG11bCwgNDIsIDQyKQorICAgICAgICBjbGFzcyBNOgorICAgICAgICAgICAgZGVmIF9fbWF0bXVsX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciAtIDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNKCkgQCA0MiwgNDEpCisKICAgICBkZWYgdGVzdF9uZWcoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5uZWcpCkBAIC0zODcsNiArMzk4LDcgQEAKICAgICBkZWYgdGVzdF9tZXRob2RjYWxsZXIoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tZXRob2RjYWxsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubWV0aG9kY2FsbGVyLCAxMikKICAgICAgICAgY2xhc3MgQToKICAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbMF0gKyBhcmdzWzFdCkBAIC00MTYsNiArNDI4LDcgQEAKICAgICAgICAgICAgIGRlZiBfX2lsc2hpZnRfXyAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpbHNoaWZ0IgogICAgICAgICAgICAgZGVmIF9faW1vZF9fICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImltb2QiCiAgICAgICAgICAgICBkZWYgX19pbXVsX18gICAgIChzZWxmLCBvdGhlcik6IHJldHVybiAiaW11bCIKKyAgICAgICAgICAgIGRlZiBfX2ltYXRtdWxfXyAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpbWF0bXVsIgogICAgICAgICAgICAgZGVmIF9faW9yX18gICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImlvciIKICAgICAgICAgICAgIGRlZiBfX2lwb3dfXyAgICAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpcG93IgogICAgICAgICAgICAgZGVmIF9faXJzaGlmdF9fICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImlyc2hpZnQiCkBAIC00MzAsNiArNDQzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbHNoaWZ0ICAoYywgNSksICJpbHNoaWZ0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbW9kICAgICAoYywgNSksICJpbW9kIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbXVsICAgICAoYywgNSksICJpbXVsIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbWF0bXVsICAoYywgNSksICJpbWF0bXVsIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pb3IgICAgICAoYywgNSksICJpb3IiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmlwb3cgICAgIChjLCA1KSwgImlwb3ciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmlyc2hpZnQgIChjLCA1KSwgImlyc2hpZnQiKQpAQCAtNDgwLDUgKzQ5NCwxMDcgQEAKIGNsYXNzIENPcGVyYXRvclRlc3RDYXNlKE9wZXJhdG9yVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX29wZXJhdG9yCiAKKworY2xhc3MgT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZToKKyAgICBkZWYgY29weShzZWxmLCBvYmosIHByb3RvKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShzeXMubW9kdWxlcywgJ29wZXJhdG9yJywgc2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgcGlja2xlZCA9IHBpY2tsZS5kdW1wcyhvYmosIHByb3RvKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9pdGVtKHN5cy5tb2R1bGVzLCAnb3BlcmF0b3InLCBzZWxmLm1vZHVsZTIpOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhwaWNrbGVkKQorCisgICAgZGVmIHRlc3RfYXR0cmdldHRlcihzZWxmKToKKyAgICAgICAgYXR0cmdldHRlciA9IHNlbGYubW9kdWxlLmF0dHJnZXR0ZXIKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYSA9IEEoKQorICAgICAgICBhLnggPSAnWCcKKyAgICAgICAgYS55ID0gJ1knCisgICAgICAgIGEueiA9ICdaJworICAgICAgICBhLnQgPSBBKCkKKyAgICAgICAgYS50LnUgPSBBKCkKKyAgICAgICAgYS50LnUudiA9ICdWJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBmID0gYXR0cmdldHRlcigneCcpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgZ2V0cworICAgICAgICAgICAgICAgIGYgPSBhdHRyZ2V0dGVyKCd4JywgJ3knLCAneicpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgcmVjdXJzaXZlIGdldHMKKyAgICAgICAgICAgICAgICBmID0gYXR0cmdldHRlcigndC51LnYnKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKworICAgIGRlZiB0ZXN0X2l0ZW1nZXR0ZXIoc2VsZik6CisgICAgICAgIGl0ZW1nZXR0ZXIgPSBzZWxmLm1vZHVsZS5pdGVtZ2V0dGVyCisgICAgICAgIGEgPSAnQUJDREUnCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIGYgPSBpdGVtZ2V0dGVyKDIpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgbXVsdGlwbGUgZ2V0cworICAgICAgICAgICAgICAgIGYgPSBpdGVtZ2V0dGVyKDIsIDAsIDQpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorCisgICAgZGVmIHRlc3RfbWV0aG9kY2FsbGVyKHNlbGYpOgorICAgICAgICBtZXRob2RjYWxsZXIgPSBzZWxmLm1vZHVsZS5tZXRob2RjYWxsZXIKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3NbMF0gKyBhcmdzWzFdCisgICAgICAgICAgICBkZWYgYmFyKHNlbGYsIGY9NDIpOgorICAgICAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgICAgICBkZWYgYmF6KCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBrd2RzWyduYW1lJ10sIGt3ZHNbJ3NlbGYnXQorICAgICAgICBhID0gQSgpCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIGYgPSBtZXRob2RjYWxsZXIoJ2JhcicpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMgcG9zaXRpb25hbCBhcmdzCisgICAgICAgICAgICAgICAgZiA9IG1ldGhvZGNhbGxlcignZm9vJywgMSwgMikKKyAgICAgICAgICAgICAgICBmMiA9IHNlbGYuY29weShmLCBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZjIpLCByZXByKGYpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIoYSksIGYoYSkpCisgICAgICAgICAgICAgICAgIyBrZXl3b3JkIGFyZ3MKKyAgICAgICAgICAgICAgICBmID0gbWV0aG9kY2FsbGVyKCdiYXInLCBmPTUpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgIGYgPSBtZXRob2RjYWxsZXIoJ2JheicsIHNlbGY9J2VnZ3MnLCBuYW1lPSdzcGFtJykKKyAgICAgICAgICAgICAgICBmMiA9IHNlbGYuY29weShmLCBwcm90bykKKyAgICAgICAgICAgICAgICAjIENhbid0IHRlc3QgcmVwciBjb25zaXN0ZW50bHkgd2l0aCBtdWx0aXBsZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorCitjbGFzcyBQeVB5T3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gcHlfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gcHlfb3BlcmF0b3IKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19vcGVyYXRvciwgJ3JlcXVpcmVzIF9vcGVyYXRvcicpCitjbGFzcyBQeUNPcGVyYXRvclBpY2tsZVRlc3RDYXNlKE9wZXJhdG9yUGlja2xlVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBweV9vcGVyYXRvcgorICAgIG1vZHVsZTIgPSBjX29wZXJhdG9yCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfb3BlcmF0b3IsICdyZXF1aXJlcyBfb3BlcmF0b3InKQorY2xhc3MgQ1B5T3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19vcGVyYXRvcgorICAgIG1vZHVsZTIgPSBweV9vcGVyYXRvcgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX29wZXJhdG9yLCAncmVxdWlyZXMgX29wZXJhdG9yJykKK2NsYXNzIENDT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gY19vcGVyYXRvcgorICAgIG1vZHVsZTIgPSBjX29wZXJhdG9yCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDU0ZGQ5ZGEyLi5iYjcxN2NjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVycm5vCiBpbXBvcnQgZnJhY3Rpb25zCitpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxvY2FsZQogaW1wb3J0IG1tYXAKQEAgLTQwLDggKzQxLDM0IEBACiAgICAgaW1wb3J0IGZjbnRsCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF93aW5hcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfd2luYXBpID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBncnAKKyAgICBncm91cHMgPSBbZy5ncl9naWQgZm9yIGcgaW4gZ3JwLmdldGdyYWxsKCkgaWYgZ2V0cGFzcy5nZXR1c2VyKCkgaW4gZy5ncl9tZW1dCisgICAgaWYgaGFzYXR0cihvcywgJ2dldGdpZCcpOgorICAgICAgICBwcm9jZXNzX2dpZCA9IG9zLmdldGdpZCgpCisgICAgICAgIGlmIHByb2Nlc3NfZ2lkIG5vdCBpbiBncm91cHM6CisgICAgICAgICAgICBncm91cHMuYXBwZW5kKHByb2Nlc3NfZ2lkKQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdyb3VwcyA9IFtdCit0cnk6CisgICAgaW1wb3J0IHB3ZAorICAgIGFsbF91c2VycyA9IFt1LnB3X3VpZCBmb3IgdSBpbiBwd2QuZ2V0cHdhbGwoKV0KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBhbGxfdXNlcnMgPSBbXQordHJ5OgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBJTlRfTUFYLCBQWV9TU0laRV9UX01BWAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIElOVF9NQVggPSBQWV9TU0laRV9UX01BWCA9IHN5cy5tYXhzaXplCiAKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCisKK3Jvb3RfaW5fcG9zaXggPSBGYWxzZQoraWYgaGFzYXR0cihvcywgJ2dldGV1aWQnKToKKyAgICByb290X2luX3Bvc2l4ID0gKG9zLmdldGV1aWQoKSA9PSAwKQogCiAjIERldGVjdCB3aGV0aGVyIHdlJ3JlIG9uIGEgTGludXggc3lzdGVtIHRoYXQgdXNlcyB0aGUgKG5vdyBvdXRkYXRlZAogIyBhbmQgdW5tYWludGFpbmVkKSBsaW51eHRocmVhZHMgdGhyZWFkaW5nIGxpYnJhcnkuICBUaGVyZSdzIGFuIGlzc3VlCkBAIC0xMDYsNiArMTMzLDI2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUocyksIGJ5dGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBiInNwYW0iKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIDMyLWJpdCBwbGF0Zm9ybXM6IHRoZSBudW1iZXIgb2YgYnl0ZXMgbXVzdCBmaXQgaW4gYQorICAgICMgUHlfc3NpemVfdCB0eXBlCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkcyBJTlRfTUFYIDwgUFlfU1NJWkVfVF9NQVgiKQorICAgIEBzdXBwb3J0LmJpZ21lbXRlc3Qoc2l6ZT1JTlRfTUFYICsgMTAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQorICAgIGRlZiB0ZXN0X2xhcmdlX3JlYWQoc2VsZiwgc2l6ZSk6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiJ3Rlc3QnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgICMgSXNzdWUgIzIxOTMyOiBNYWtlIHN1cmUgdGhhdCBvcy5yZWFkKCkgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yIGZvciBzaXplIGxhcmdlciB0aGFuIElOVF9NQVgKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKGZwLmZpbGVubygpLCBzaXplKQorCisgICAgICAgICMgVGhlIHRlc3QgZG9lcyBub3QgdHJ5IHRvIHJlYWQgbW9yZSB0aGFuIDIgR0IgYXQgb25jZSBiZWNhdXNlIHRoZQorICAgICAgICAjIG9wZXJhdGluZyBzeXN0ZW0gaXMgZnJlZSB0byByZXR1cm4gbGVzcyBieXRlcyB0aGFuIHJlcXVlc3RlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiJ3Rlc3QnKQorCiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgICMgb3Mud3JpdGUoKSBhY2NlcHRzIGJ5dGVzLSBhbmQgYnVmZmVyLWxpa2Ugb2JqZWN0cyBidXQgbm90IHN0cmluZ3MKICAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX0NSRUFUIHwgb3MuT19XUk9OTFkpCkBAIC0zNjMsNiArNDEwLDI4IEBACiAgICAgICAgICAgICBvcy5zdGF0KHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCiAKKyAgICBkZWYgY2hlY2tfZmlsZV9hdHRyaWJ1dGVzKHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHJlc3VsdCwgJ3N0X2ZpbGVfYXR0cmlidXRlcycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShyZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzLCBpbnQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMCA8PSByZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzIDw9IDB4RkZGRkZGRkYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3RfZmlsZV9hdHRyaWJ1dGVzIGlzIFdpbjMyIHNwZWNpZmljIikKKyAgICBkZWYgdGVzdF9maWxlX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgdGVzdCBmaWxlIHN0X2ZpbGVfYXR0cmlidXRlcyAoRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZIG5vdCBzZXQpCisgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoc2VsZi5mbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19maWxlX2F0dHJpYnV0ZXMocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyAmIHN0YXQuRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZLAorICAgICAgICAgICAgMCkKKworICAgICAgICAjIHRlc3QgZGlyZWN0b3J5IHN0X2ZpbGVfYXR0cmlidXRlcyAoRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZIHNldCkKKyAgICAgICAgcmVzdWx0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5jaGVja19maWxlX2F0dHJpYnV0ZXMocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyAmIHN0YXQuRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZLAorICAgICAgICAgICAgc3RhdC5GSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCisKIAogY2xhc3MgVXRpbWVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtOTcxLDE3ICsxMDQwLDYgQEAKICAgICAgICAgb3MubWFrZWRpcnMocGF0aCwgbW9kZT1tb2RlLCBleGlzdF9vaz1UcnVlKQogICAgICAgICBvcy51bWFzayhvbGRfbWFzaykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAndGVzdCBuZWVkcyBvcy5jaG93bicpCi0gICAgZGVmIHRlc3RfY2hvd25fdWlkX2dpZF9hcmd1bWVudHNfbXVzdF9iZV9pbmRleChzZWxmKToKLSAgICAgICAgc3RhdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHVpZCA9IHN0YXQuc3RfdWlkCi0gICAgICAgIGdpZCA9IHN0YXQuc3RfZ2lkCi0gICAgICAgIGZvciB2YWx1ZSBpbiAoLTEuMCwgLTFqLCBkZWNpbWFsLkRlY2ltYWwoLTEpLCBmcmFjdGlvbnMuRnJhY3Rpb24oLTIsIDIpKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MuY2hvd24sIHN1cHBvcnQuVEVTVEZOLCB2YWx1ZSwgZ2lkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHVpZCwgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWQsIGdpZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCAtMSwgLTEpKQotCiAgICAgZGVmIHRlc3RfZXhpc3Rfb2tfc19pc2dpZF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKICAgICAgICAgU19JU0dJRCA9IHN0YXQuU19JU0dJRApAQCAtMTAzMiw2ICsxMDkwLDYwIEBACiAgICAgICAgIG9zLnJlbW92ZWRpcnMocGF0aCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hvd24nKSwgIlRlc3QgbmVlZHMgY2hvd24iKQorY2xhc3MgQ2hvd25GaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgdGVzdF9jaG93bl91aWRfZ2lkX2FyZ3VtZW50c19tdXN0X2JlX2luZGV4KHNlbGYpOgorICAgICAgICBzdGF0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgdWlkID0gc3RhdC5zdF91aWQKKyAgICAgICAgZ2lkID0gc3RhdC5zdF9naWQKKyAgICAgICAgZm9yIHZhbHVlIGluICgtMS4wLCAtMWosIGRlY2ltYWwuRGVjaW1hbCgtMSksIGZyYWN0aW9ucy5GcmFjdGlvbigtMiwgMikpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHZhbHVlLCBnaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLmNob3duLCBzdXBwb3J0LlRFU1RGTiwgdWlkLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuY2hvd24oc3VwcG9ydC5URVNURk4sIC0xLCAtMSkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsZW4oZ3JvdXBzKSA+IDEsICJ0ZXN0IG5lZWRzIG1vcmUgdGhhbiBvbmUgZ3JvdXAiKQorICAgIGRlZiB0ZXN0X2Nob3duKHNlbGYpOgorICAgICAgICBnaWRfMSwgZ2lkXzIgPSBncm91cHNbOjJdCisgICAgICAgIHVpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X3VpZAorICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkLCBnaWRfMSkKKyAgICAgICAgZ2lkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfZ2lkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2lkLCBnaWRfMSkKKyAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkXzIpCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpZCwgZ2lkXzIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhyb290X2luX3Bvc2l4IGFuZCBsZW4oYWxsX3VzZXJzKSA+IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgcm9vdCBwcml2aWxlZ2UgYW5kIG1vcmUgdGhhbiBvbmUgdXNlciIpCisgICAgZGVmIHRlc3RfY2hvd25fd2l0aF9yb290KHNlbGYpOgorICAgICAgICB1aWRfMSwgdWlkXzIgPSBhbGxfdXNlcnNbOjJdCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkXzEsIGdpZCkKKyAgICAgICAgdWlkID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfdWlkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodWlkLCB1aWRfMSkKKyAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZF8yLCBnaWQpCisgICAgICAgIHVpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X3VpZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVpZCwgdWlkXzIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhub3Qgcm9vdF9pbl9wb3NpeCBhbmQgbGVuKGFsbF91c2VycykgPiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIG5vbi1yb290IGFjY291bnQgYW5kIG1vcmUgdGhhbiBvbmUgdXNlciIpCisgICAgZGVmIHRlc3RfY2hvd25fd2l0aG91dF9wZXJtaXNzaW9uKHNlbGYpOgorICAgICAgICB1aWRfMSwgdWlkXzIgPSBhbGxfdXNlcnNbOjJdCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcik6CisgICAgICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkXzEsIGdpZCkKKyAgICAgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWRfMiwgZ2lkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCisKKwogY2xhc3MgUmVtb3ZlRGlyc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIG9zLm1ha2VkaXJzKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTExNSw5ICsxMjI3LDEyIEBACiAKIAogSEFWRV9HRVRFTlRST1BZID0gKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HRVRFTlRST1BZJykgPT0gMSkKK0hBVkVfR0VUUkFORE9NID0gKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCcpID09IDEpCiAKIEB1bml0dGVzdC5za2lwSWYoSEFWRV9HRVRFTlRST1BZLAogICAgICAgICAgICAgICAgICAiZ2V0ZW50cm9weSgpIGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvciIpCitAdW5pdHRlc3Quc2tpcElmKEhBVkVfR0VUUkFORE9NLAorICAgICAgICAgICAgICAgICAiZ2V0cmFuZG9tKCkgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIikKIGNsYXNzIFVSYW5kb21GRFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhyZXNvdXJjZSwgInRlc3QgcmVxdWlyZXMgdGhlIHJlc291cmNlIG1vZHVsZSIpCiAgICAgZGVmIHRlc3RfdXJhbmRvbV9mYWlsdXJlKHNlbGYpOgpAQCAtMTE0OCw4ICsxMjYzLDEwIEBACiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0CiAgICAgICAgICAgICBvcy51cmFuZG9tKDQpCi0gICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKG9zLnVyYW5kb20oNCkpCiAgICAgICAgICAgICAiIiIKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLVNjJywgY29kZSkKQEAgLTExNjMsMTYgKzEyODAsMTggQEAKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnN1cHBvcnQKICAgICAgICAgICAgIG9zLnVyYW5kb20oNCkKLSAgICAgICAgICAgIGZvciBmZCBpbiByYW5nZSgzLCAyNTYpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIEZvdW5kIHRoZSB1cmFuZG9tIGZkIChYWFggaG9wZWZ1bGx5KQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgICAgICAgICAgICAgZm9yIGZkIGluIHJhbmdlKDMsIDI1Nik6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRm91bmQgdGhlIHVyYW5kb20gZmQgKFhYWCBob3BlZnVsbHkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG9zLmNsb3NlcmFuZ2UoMywgMjU2KQogICAgICAgICAgICAgd2l0aCBvcGVuKHtURVNURk4hcn0sICdyYicpIGFzIGY6CiAgICAgICAgICAgICAgICAgb3MuZHVwMihmLmZpbGVubygpLCBmZCkKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShvcy51cmFuZG9tKDQpKQpAQCAtMTM5OCw2ICsxNTE3LDE2IEBACiAgICAgZGVmIHRlc3Rfd3JpdGV2KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrKG9zLndyaXRldiwgW2InYWJjJ10pCiAKKyAgICBkZWYgdGVzdF9pbmhlcml0YWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjayhvcy5nZXRfaW5oZXJpdGFibGUpCisgICAgICAgIHNlbGYuY2hlY2sob3Muc2V0X2luaGVyaXRhYmxlLCBUcnVlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldF9ibG9ja2luZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQorICAgIGRlZiB0ZXN0X2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKG9zLmdldF9ibG9ja2luZykKKyAgICAgICAgc2VsZi5jaGVjayhvcy5zZXRfYmxvY2tpbmcsIFRydWUpCisKIAogY2xhc3MgTGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xODQ1LDYgKzE5NzQsMzcgQEAKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUobGV2ZWwxKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQorY2xhc3MgV2luMzJKdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBqdW5jdGlvbiA9ICdqdW5jdGlvbnRlc3QnCisgICAganVuY3Rpb25fdGFyZ2V0ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uX3RhcmdldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKToKKyAgICAgICAgICAgICMgb3Mucm1kaXIgZGVsZWdhdGVzIHRvIFdpbmRvd3MnIFJlbW92ZURpcmVjdG9yeVcsCisgICAgICAgICAgICAjIHdoaWNoIHJlbW92ZXMganVuY3Rpb24gcG9pbnRzIHNhZmVseS4KKyAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuanVuY3Rpb24pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfanVuY3Rpb24oc2VsZik6CisgICAgICAgIF93aW5hcGkuQ3JlYXRlSnVuY3Rpb24oc2VsZi5qdW5jdGlvbl90YXJnZXQsIHNlbGYuanVuY3Rpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoc2VsZi5qdW5jdGlvbikpCisKKyAgICAgICAgIyBKdW5jdGlvbnMgYXJlIG5vdCByZWNvZ25pemVkIGFzIGxpbmtzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKHNlbGYuanVuY3Rpb24pKQorCisgICAgZGVmIHRlc3RfdW5saW5rX3JlbW92ZXNfanVuY3Rpb24oc2VsZik6CisgICAgICAgIF93aW5hcGkuQ3JlYXRlSnVuY3Rpb24oc2VsZi5qdW5jdGlvbl90YXJnZXQsIHNlbGYuanVuY3Rpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKSkKKworICAgICAgICBvcy51bmxpbmsoc2VsZi5qdW5jdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLmp1bmN0aW9uKSkKKworCiBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiBjbGFzcyBOb25Mb2NhbFN5bWxpbmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE5MTgsNiArMjA3OCwxMiBAQAogICAgICAgICAjIFdlIGFyZSB0aGUgcGFyZW50IG9mIG91ciBzdWJwcm9jZXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHN0ZG91dCksIG9zLmdldHBpZCgpKQogCisgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ3Bhc3MnXQorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHN0YXR1cyA9IG9zLndhaXRwaWQocGlkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgKHBpZCwgMCkpCisKIAogIyBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgVGVzdENhc2UgY2F1c2VkIGF0IGxlYXN0IHR3byBkaWZmZXJlbnQgZXJyb3JzIG9uCiAjICpuaXggYnVpbGRib3RzLiBUZW1wb3JhcmlseSBza2lwIHRoaXMgdG8gbGV0IHRoZSBidWlsZGJvdHMgbW92ZSBhbG9uZy4KQEAgLTIwNTEsMTEgKzIyMTcsMTMgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5rZXkgPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoY2xzLkRBVEEpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzdXBwb3J0LnRocmVhZGluZ19jbGVhbnVwKCpjbHMua2V5KQogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTI1OTAsNDMgKzI3NTgsMjUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2luaGVyaXRhYmxlKHNsYXZlX2ZkKSwgRmFsc2UpCiAKIAotQHN1cHBvcnQucmVhcF90aHJlYWRzCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIEZpbGVUZXN0cywKLSAgICAgICAgU3RhdEF0dHJpYnV0ZVRlc3RzLAotICAgICAgICBVdGltZVRlc3RzLAotICAgICAgICBFbnZpcm9uVGVzdHMsCi0gICAgICAgIFdhbGtUZXN0cywKLSAgICAgICAgRndhbGtUZXN0cywKLSAgICAgICAgTWFrZWRpclRlc3RzLAotICAgICAgICBEZXZOdWxsVGVzdHMsCi0gICAgICAgIFVSYW5kb21UZXN0cywKLSAgICAgICAgVVJhbmRvbUZEVGVzdHMsCi0gICAgICAgIEV4ZWNUZXN0cywKLSAgICAgICAgV2luMzJFcnJvclRlc3RzLAotICAgICAgICBUZXN0SW52YWxpZEZELAotICAgICAgICBQb3NpeFVpZEdpZFRlc3RzLAotICAgICAgICBQZXAzODNUZXN0cywKLSAgICAgICAgV2luMzJLaWxsVGVzdHMsCi0gICAgICAgIFdpbjMyTGlzdGRpclRlc3RzLAotICAgICAgICBXaW4zMlN5bWxpbmtUZXN0cywKLSAgICAgICAgTm9uTG9jYWxTeW1saW5rVGVzdHMsCi0gICAgICAgIEZTRW5jb2RpbmdUZXN0cywKLSAgICAgICAgRGV2aWNlRW5jb2RpbmdUZXN0cywKLSAgICAgICAgUGlkVGVzdHMsCi0gICAgICAgIExvZ2luVGVzdHMsCi0gICAgICAgIExpbmtUZXN0cywKLSAgICAgICAgVGVzdFNlbmRmaWxlLAotICAgICAgICBQcm9ncmFtUHJpb3JpdHlUZXN0cywKLSAgICAgICAgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cywKLSAgICAgICAgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEksCi0gICAgICAgIFRlcm1zaXplVGVzdHMsCi0gICAgICAgIE9TRXJyb3JUZXN0cywKLSAgICAgICAgUmVtb3ZlRGlyc1Rlc3RzLAotICAgICAgICBDUFVDb3VudFRlc3RzLAotICAgICAgICBGREluaGVyaXRhbmNlVGVzdHMsCi0gICAgKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldF9ibG9ja2luZycpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWRzIG9zLmdldF9ibG9ja2luZygpIGFuZCBvcy5zZXRfYmxvY2tpbmcoKScpCitjbGFzcyBCbG9ja2luZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfYmxvY2tpbmcoZmQpLCBUcnVlKQorCisgICAgICAgIG9zLnNldF9ibG9ja2luZyhmZCwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2Jsb2NraW5nKGZkKSwgRmFsc2UpCisKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9ibG9ja2luZyhmZCksIFRydWUpCisKKworCitjbGFzcyBFeHBvcnRzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X29zX2FsbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbignb3BlbicsIG9zLl9fYWxsX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dhbGsnLCBvcy5fX2FsbF9fKQorCisKK2NsYXNzIFRlc3RTY2FuZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi5wYXRoKQorICAgICAgICBvcy5ta2RpcihzZWxmLnBhdGgpCisKKyAgICBkZWYgY3JlYXRlX2ZpbGUoc2VsZiwgbmFtZT0iZmlsZS50eHQiKToKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYidweXRob24nKQorICAgICAgICByZXR1cm4gZmlsZW5hbWUKKworICAgIGRlZiBnZXRfZW50cmllcyhzZWxmLCBuYW1lcyk6CisgICAgICAgIGVudHJpZXMgPSBkaWN0KChlbnRyeS5uYW1lLCBlbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZW50cmllcy5rZXlzKCkpLCBuYW1lcykKKyAgICAgICAgcmV0dXJuIGVudHJpZXMKKworICAgIGRlZiBhc3NlcnRfc3RhdF9lcXVhbChzZWxmLCBzdGF0MSwgc3RhdDIsIHNraXBfZmllbGRzKToKKyAgICAgICAgaWYgc2tpcF9maWVsZHM6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIoc3RhdDEpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBhdHRyLnN0YXJ0c3dpdGgoInN0XyIpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGF0dHIgaW4gKCJzdF9kZXYiLCAic3RfaW5vIiwgInN0X25saW5rIik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHN0YXQxLCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoc3RhdDIsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXQxLCBzdGF0MiwgYXR0cikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQxLCBzdGF0MikKKworICAgIGRlZiBjaGVja19lbnRyeShzZWxmLCBlbnRyeSwgbmFtZSwgaXNfZGlyLCBpc19maWxlLCBpc19zeW1saW5rKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LnBhdGgsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lmlub2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChlbnRyeS5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lubykKKworICAgICAgICBlbnRyeV9zdGF0ID0gb3Muc3RhdChlbnRyeS5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX2RpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JU0RJUihlbnRyeV9zdGF0LnN0X21vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX2ZpbGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVNSRUcoZW50cnlfc3RhdC5zdF9tb2RlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19zeW1saW5rKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5pc2xpbmsoZW50cnkucGF0aCkpCisKKyAgICAgICAgZW50cnlfbHN0YXQgPSBvcy5zdGF0KGVudHJ5LnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19kaXIoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVNESVIoZW50cnlfbHN0YXQuc3RfbW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaXNfZmlsZShmb2xsb3dfc3ltbGlua3M9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JU1JFRyhlbnRyeV9sc3RhdC5zdF9tb2RlKSkKKworICAgICAgICBzZWxmLmFzc2VydF9zdGF0X2VxdWFsKGVudHJ5LnN0YXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeV9zdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLm5hbWUgPT0gJ250JyBhbmQgbm90IGlzX3N5bWxpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0X3N0YXRfZXF1YWwoZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5X2xzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLm5hbWUgPT0gJ250JykKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGxpbmsgPSBoYXNhdHRyKG9zLCAnbGluaycpCisgICAgICAgIHN5bWxpbmsgPSBzdXBwb3J0LmNhbl9zeW1saW5rKCkKKworICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgImRpciIpCisgICAgICAgIG9zLm1rZGlyKGRpcm5hbWUpCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBpZiBsaW5rOgorICAgICAgICAgICAgb3MubGluayhmaWxlbmFtZSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgImxpbmtfZmlsZS50eHQiKSkKKyAgICAgICAgaWYgc3ltbGluazoKKyAgICAgICAgICAgIG9zLnN5bWxpbmsoZGlybmFtZSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgInN5bWxpbmtfZGlyIiksCisgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgICAgIG9zLnN5bWxpbmsoZmlsZW5hbWUsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICJzeW1saW5rX2ZpbGUudHh0IikpCisKKyAgICAgICAgbmFtZXMgPSBbJ2RpcicsICdmaWxlLnR4dCddCisgICAgICAgIGlmIGxpbms6CisgICAgICAgICAgICBuYW1lcy5hcHBlbmQoJ2xpbmtfZmlsZS50eHQnKQorICAgICAgICBpZiBzeW1saW5rOgorICAgICAgICAgICAgbmFtZXMuZXh0ZW5kKCgnc3ltbGlua19kaXInLCAnc3ltbGlua19maWxlLnR4dCcpKQorICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfZW50cmllcyhuYW1lcykKKworICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ2RpciddCisgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdkaXInLCBUcnVlLCBGYWxzZSwgRmFsc2UpCisKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWydmaWxlLnR4dCddCisgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdmaWxlLnR4dCcsIEZhbHNlLCBUcnVlLCBGYWxzZSkKKworICAgICAgICBpZiBsaW5rOgorICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzWydsaW5rX2ZpbGUudHh0J10KKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdsaW5rX2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIEZhbHNlKQorCisgICAgICAgIGlmIHN5bWxpbms6CisgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ3N5bWxpbmtfZGlyJ10KKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdzeW1saW5rX2RpcicsIFRydWUsIEZhbHNlLCBUcnVlKQorCisgICAgICAgICAgICBlbnRyeSA9IGVudHJpZXNbJ3N5bWxpbmtfZmlsZS50eHQnXQorICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgVHJ1ZSkKKworICAgIGRlZiBnZXRfZW50cnkoc2VsZiwgbmFtZSk6CisgICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEpCisKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKKyAgICAgICAgcmV0dXJuIGVudHJ5CisKKyAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9lbnRyeShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKKworICAgIGRlZiB0ZXN0X2N1cnJlbnRfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUoKQorICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoc2VsZi5wYXRoKQorCisgICAgICAgICAgICAjIGNhbGwgc2NhbmRpcigpIHdpdGhvdXQgcGFyYW1ldGVyOiBpdCBtdXN0IGxpc3QgdGhlIGNvbnRlbnQKKyAgICAgICAgICAgICMgb2YgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisgICAgICAgICAgICBlbnRyaWVzID0gZGljdCgoZW50cnkubmFtZSwgZW50cnkpIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChlbnRyaWVzLmtleXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKV0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihvbGRfZGlyKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVudHJ5KSwgIjxEaXJFbnRyeSAnZmlsZS50eHQnPiIpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVkX2RpcihzZWxmKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdkaXInKQorCisgICAgICAgIG9zLm1rZGlyKHBhdGgpCisgICAgICAgIGVudHJ5ID0gc2VsZi5nZXRfZW50cnkoJ2RpcicpCisgICAgICAgIG9zLnJtZGlyKHBhdGgpCisKKyAgICAgICAgIyBPbiBQT1NJWCwgaXNfZGlyKCkgcmVzdWx0IGRlcGVuZHMgaWYgc2NhbmRpcigpIGZpbGxlZCBkX3R5cGUgb3Igbm90CisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfc3ltbGluaygpKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuaW5vZGUpCisgICAgICAgICAgICAjIGRvbid0IGZhaWwKKyAgICAgICAgICAgIGVudHJ5LnN0YXQoKQorICAgICAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZW50cnkuaW5vZGUoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X3JlbW92ZWRfZmlsZShzZWxmKToKKyAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKKyAgICAgICAgb3MudW5saW5rKGVudHJ5LnBhdGgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19kaXIoKSkKKyAgICAgICAgIyBPbiBQT1NJWCwgaXNfZGlyKCkgcmVzdWx0IGRlcGVuZHMgaWYgc2NhbmRpcigpIGZpbGxlZCBkX3R5cGUgb3Igbm90CisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5pc19maWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfc3ltbGluaygpKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuaW5vZGUpCisgICAgICAgICAgICAjIGRvbid0IGZhaWwKKyAgICAgICAgICAgIGVudHJ5LnN0YXQoKQorICAgICAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZW50cnkuaW5vZGUoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5LnN0YXQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9zeW1saW5rKHNlbGYpOgorICAgICAgICBpZiBub3Qgc3VwcG9ydC5jYW5fc3ltbGluaygpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2tpcFRlc3QoJ2Nhbm5vdCBjcmVhdGUgc3ltYm9saWMgbGluaycpCisKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIG9zLnN5bWxpbmsoZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgInN5bWxpbmsudHh0IikpCisgICAgICAgIGVudHJpZXMgPSBzZWxmLmdldF9lbnRyaWVzKFsnZmlsZS50eHQnLCAnc3ltbGluay50eHQnXSkKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWydzeW1saW5rLnR4dCddCisgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZW50cnkuaW5vZGUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19maWxlKCkpICAjIGJyb2tlbiBzeW1saW5rIHJldHVybnMgRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19kaXIoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnRyeS5pc19maWxlKGZvbGxvd19zeW1saW5rcz1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlbnRyeS5pc19zeW1saW5rKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0KQorICAgICAgICAjIGRvbid0IGZhaWwKKyAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9ieXRlcyhzZWxmKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgorICAgICAgICAgICAgIyBPbiBXaW5kb3dzLCBvcy5zY2FuZGlyKGJ5dGVzKSBtdXN0IHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zY2FuZGlyLCBiJy4nKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorCisgICAgICAgIHBhdGhfYnl0ZXMgPSBvcy5mc2VuY29kZShzZWxmLnBhdGgpCisgICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIocGF0aF9ieXRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMpLCAxLCBlbnRyaWVzKQorICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIGInZmlsZS50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZnNlbmNvZGUob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2ZpbGUudHh0JykpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnNjYW5kaXIsICcnKQorCisgICAgZGVmIHRlc3RfY29uc3VtZV9pdGVyYXRvcl90d2ljZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorCisgICAgICAgIGVudHJpZXMgPSBsaXN0KGl0ZXJhdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSwgZW50cmllcykKKworICAgICAgICAjIGNoZWNrIHRoYW4gY29uc3VtaW5nIHRoZSBpdGVyYXRvciB0d2ljZSBkb2Vzbid0IHJhaXNlIGV4Y2VwdGlvbgorICAgICAgICBlbnRyaWVzMiA9IGxpc3QoaXRlcmF0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMyKSwgMCwgZW50cmllczIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGF0aF90eXBlKHNlbGYpOgorICAgICAgICBmb3Igb2JqIGluIFsxMjM0LCAxLjIzNCwge30sIFtdXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgb2JqKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weSBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQppbmRleCBkOGViOTgxLi44YTNiYzVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CkBAIC0yLDcgKzIsNyBAQAogVGVzdCBzdWl0ZSBmb3IgT1MgWCBpbnRlcnByZXRlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAiIiIKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IGU3OTY4Y2MuLjNkMzAxYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC00LDcgKzQsNyBAQAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogCiAjCiAjICBGaXJzdCwgd2UgdGVzdCB0aGF0IHdlIGNhbiBnZW5lcmF0ZSB0cmVlcyBmcm9tIHZhbGlkIHNvdXJjZSBmcmFnbWVudHMsCkBAIC02Myw2ICs2MywyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKHlpZWxkKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICB5aWVsZCB4XG4iKQogCisgICAgZGVmIHRlc3RfYXdhaXRfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGF3YWl0IHNtdGgoKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gZm9vID0gYXdhaXQgc210aCgpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBmb28sIGJhciA9IGF3YWl0IHNtdGgoKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gKGF3YWl0IHNtdGgoKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGZvbygoYXdhaXQgc210aCgpKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGF3YWl0IGZvbygpOyByZXR1cm4gNDIiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgd2l0aCAxOiBwYXNzIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyB3aXRoIGEgYXMgYiwgYyBhcyBkOiBwYXNzIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX2Zvcl9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgZm9yIGkgaW4gKCk6IHBhc3MiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGFzeW5jIGZvciBpLCBiIGluICgpOiBwYXNzIikKKwogICAgIGRlZiB0ZXN0X25vbmxvY2FsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHggPSAwXG4iCkBAIC0zMTMsNyArMzI5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdCBFeGNlcHRpb24gYXMgZTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJhaXNlIFZhbHVlRXJyb3IgZnJvbSBlXG4iKQogCisgICAgZGVmIHRlc3RfbGlzdF9kaXNwbGF5cyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdbXScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcignWyp7Mn0sIDMsICpbNF1dJykKKwogICAgIGRlZiB0ZXN0X3NldF9kaXNwbGF5cyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19leHByKCd7KnsyfSwgMywgKls0XX0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3syfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcignezIsfScpCiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcignezIsIDN9JykKQEAgLTMyNSw2ICszNDYsMTUgQEAKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7YTpiLH0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3thOmIsIGM6ZH0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3thOmIsIGM6ZCx9JykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCd7Kip7fX0nKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3sqKnt9LCAzOjQsICoqezU6NiwgNzo4fX0nKQorCisgICAgZGVmIHRlc3RfYXJndW1lbnRfdW5wYWNraW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoImYoKmEsICoqYikiKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ2YoYSwgKmIsICpjLCAqZCknKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ2YoKiphLCAqKmIpJykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdmKDIsICphLCAqYiwgKipiLCAqKmMsICoqZCknKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoImYoKmIsICooKSBvciAoKSBhbmQgKCksICoqe30gYW5kIHt9LCAqKigpIG9yIHt9KSIpCiAKICAgICBkZWYgdGVzdF9zZXRfY29tcHJlaGVuc2lvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcigne3ggZm9yIHggaW4gc2VxfScpCkBAIC03MzAsMTYgKzc2MCw1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHBhcnNlci5leHByKCJhIiwgImIiKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFJvdW5kdHJpcExlZ2FsU3ludGF4VGVzdENhc2UsCi0gICAgICAgIElsbGVnYWxTeW50YXhUZXN0Q2FzZSwKLSAgICAgICAgQ29tcGlsZVRlc3RDYXNlLAotICAgICAgICBQYXJzZXJTdGFja0xpbWl0VGVzdENhc2UsCi0gICAgICAgIFNUT2JqZWN0VGVzdENhc2UsCi0gICAgICAgIE90aGVyUGFyc2VyQ2FzZSwKLSAgICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CmluZGV4IDExNDIwZTIuLjFjNTNhYjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKQEAgLTQsMTMgKzQsMTAgQEAKIGltcG9ydCBlcnJubwogaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBwaWNrbGUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzdGF0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAotZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIFRFU1RGTiA9IHN1cHBvcnQuVEVTVEZOCkBAIC03NDcsNyArNzQ0LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKCcvL1NvbWUvU0hBUkUvYS9CJyksIFAoJy8vc29tRS9zaGFyZS9BL2InKSkKIAogICAgIGRlZiB0ZXN0X2FzX3VyaShzZWxmKToKLSAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHF1b3RlX2Zyb21fYnl0ZXMKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBQKCcvYS9iJykuYXNfdXJpKCkKQEAgLTEyNjksMTEgKzEyNjUsNTUgQEAKICAgICAgICAgcCA9IHNlbGYuY2xzLmN3ZCgpCiAgICAgICAgIHNlbGYuX3Rlc3RfY3dkKHApCiAKKyAgICBkZWYgX3Rlc3RfaG9tZShzZWxmLCBwKToKKyAgICAgICAgcSA9IHNlbGYuY2xzKG9zLnBhdGguZXhwYW5kdXNlcignficpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHApLCBzdHIocSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShwKSwgdHlwZShxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuaXNfYWJzb2x1dGUoKSkKKworICAgIGRlZiB0ZXN0X2hvbWUoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscy5ob21lKCkKKyAgICAgICAgc2VsZi5fdGVzdF9ob21lKHApCisKKyAgICBkZWYgdGVzdF9zYW1lZmlsZShzZWxmKToKKyAgICAgICAgZmlsZUFfcGF0aCA9IG9zLnBhdGguam9pbihCQVNFLCAnZmlsZUEnKQorICAgICAgICBmaWxlQl9wYXRoID0gb3MucGF0aC5qb2luKEJBU0UsICdkaXJCJywgJ2ZpbGVCJykKKyAgICAgICAgcCA9IHNlbGYuY2xzKGZpbGVBX3BhdGgpCisgICAgICAgIHBwID0gc2VsZi5jbHMoZmlsZUFfcGF0aCkKKyAgICAgICAgcSA9IHNlbGYuY2xzKGZpbGVCX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLnNhbWVmaWxlKGZpbGVBX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5zYW1lZmlsZShwcCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5zYW1lZmlsZShmaWxlQl9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLnNhbWVmaWxlKHEpKQorICAgICAgICAjIFRlc3QgdGhlIG5vbi1leGlzdGVudCBmaWxlIGNhc2UKKyAgICAgICAgbm9uX2V4aXN0ZW50ID0gb3MucGF0aC5qb2luKEJBU0UsICdmb28nKQorICAgICAgICByID0gc2VsZi5jbHMobm9uX2V4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgcC5zYW1lZmlsZSwgcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHAuc2FtZWZpbGUsIG5vbl9leGlzdGVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIuc2FtZWZpbGUsIHApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCByLnNhbWVmaWxlLCBub25fZXhpc3RlbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCByLnNhbWVmaWxlLCByKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgci5zYW1lZmlsZSwgbm9uX2V4aXN0ZW50KQorCiAgICAgZGVmIHRlc3RfZW1wdHlfcGF0aChzZWxmKToKICAgICAgICAgIyBUaGUgZW1wdHkgcGF0aCBwb2ludHMgdG8gJy4nCiAgICAgICAgIHAgPSBzZWxmLmNscygnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKSwgb3Muc3RhdCgnLicpKQogCisgICAgZGVmIHRlc3RfZXhwYW5kdXNlcl9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnficpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIFAob3MucGF0aC5leHBhbmR1c2VyKCd+JykpKQorICAgICAgICBwID0gUCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAgICAgcCA9IFAoJy9+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAgICAgcCA9IFAoJy4uL34nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBwKQorICAgICAgICBwID0gUChQKCcnKS5hYnNvbHV0ZSgpLmFuY2hvcikgLyAnficKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKwogICAgIGRlZiB0ZXN0X2V4aXN0cyhzZWxmKToKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHAgPSBQKEJBU0UpCkBAIC0xMzAxLDYgKzEzNDEsMjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLCBpby5SYXdJT0Jhc2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLnN0cmlwKCksIGIidGhpcyBpcyBmaWxlIEEiKQogCisgICAgZGVmIHRlc3RfcmVhZF93cml0ZV9ieXRlcyhzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCisgICAgICAgIChwIC8gJ2ZpbGVBJykud3JpdGVfYnl0ZXMoYidhYmNkZWZnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRfYnl0ZXMoKSwgYidhYmNkZWZnJykKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyeWluZyB0byB3cml0ZSBzdHIgZG9lcyBub3QgdHJ1bmNhdGUgdGhlIGZpbGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAocCAvICdmaWxlQScpLndyaXRlX2J5dGVzLCAnc29tZXN0cicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEnKS5yZWFkX2J5dGVzKCksIGInYWJjZGVmZycpCisKKyAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX3RleHQoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICAocCAvICdmaWxlQScpLndyaXRlX3RleHQoJ8OkYmNkZWZnJywgZW5jb2Rpbmc9J2xhdGluLTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF90ZXh0KAorICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdpZ25vcmUnKSwgJ2JjZGVmZycpCisgICAgICAgICMgY2hlY2sgdGhhdCB0cnlpbmcgdG8gd3JpdGUgYnl0ZXMgZG9lcyBub3QgdHJ1bmNhdGUgdGhlIGZpbGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAocCAvICdmaWxlQScpLndyaXRlX3RleHQsIGInc29tZWJ5dGVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRfdGV4dChlbmNvZGluZz0nbGF0aW4tMScpLCAnw6RiY2RlZmcnKQorCiAgICAgZGVmIHRlc3RfaXRlcmRpcihzZWxmKToKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHAgPSBQKEJBU0UpCkBAIC0xNjA0LDYgKzE2NjEsNTkgQEAKICAgICAgICAgIyB0aGUgcGFyZW50J3MgcGVybWlzc2lvbnMgZm9sbG93IHRoZSBkZWZhdWx0IHByb2Nlc3Mgc2V0dGluZ3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUocC5wYXJlbnQuc3RhdCgpLnN0X21vZGUpLCBtb2RlKQogCisgICAgZGVmIHRlc3RfbWtkaXJfZXhpc3Rfb2soc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQicpCisgICAgICAgIHN0X2N0aW1lX2ZpcnN0ID0gcC5zdGF0KCkuc3RfY3RpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmlzX2RpcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgcC5ta2RpcihleGlzdF9vaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKS5zdF9jdGltZSwgc3RfY3RpbWVfZmlyc3QpCisKKyAgICBkZWYgdGVzdF9ta2Rpcl9leGlzdF9va193aXRoX3BhcmVudChzZWxmKToKKyAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UsICdkaXJDJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICBwID0gcCAvICduZXdkaXJDJworICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgc3RfY3RpbWVfZmlyc3QgPSBwLnN0YXQoKS5zdF9jdGltZQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0YXQoKS5zdF9jdGltZSwgc3RfY3RpbWVfZmlyc3QpCisKKyAgICBkZWYgdGVzdF9ta2Rpcl93aXRoX2NoaWxkX2ZpbGUoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQicsICdmaWxlQicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiB0aGUgbGFzdCBwYXRoIGNvbXBvbmVudCBpcyBhbiBleGlzdGluZworICAgICAgICAjIHJlZ3VsYXIgZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGV4aXN0X29rIGlzIHRydWUgb3Igbm90LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisKKyAgICBkZWYgdGVzdF9ta2Rpcl9ub19wYXJlbnRzX2ZpbGUoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZmlsZUEnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgIyBBbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgaXMgYW4gZXhpc3RpbmcKKyAgICAgICAgIyByZWd1bGFyIGZpbGUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBleGlzdF9vayBpcyB0cnVlIG9yIG5vdC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKwogICAgIEB3aXRoX3N5bWxpbmtzCiAgICAgZGVmIHRlc3Rfc3ltbGlua190byhzZWxmKToKICAgICAgICAgUCA9IHNlbGYuY2xzKEJBU0UpCkBAIC0xODQ2LDcgKzE5NTYsNiBAQAogICAgIEB3aXRoX3N5bWxpbmtzCiAgICAgZGVmIHRlc3RfcmVzb2x2ZV9sb29wKHNlbGYpOgogICAgICAgICAjIExvb3AgZGV0ZWN0aW9uIGZvciBicm9rZW4gc3ltbGlua3MgdW5kZXIgUE9TSVgKLSAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgICMgTG9vcHMgd2l0aCByZWxhdGl2ZSBzeW1saW5rcwogICAgICAgICBvcy5zeW1saW5rKCdsaW5rWC9pbnNpZGUnLCBqb2luKCdsaW5rWCcpKQogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtYJykKQEAgLTE4NzgsNiArMTk4Nyw0OCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpdmVuLCBleHBlY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAucmdsb2IoIkZJTEVkKiIpKSwgc2V0KCkpCiAKKyAgICBkZWYgdGVzdF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdwd2QnKQorICAgICAgICBpbXBvcnQgcHdkCisgICAgICAgIHB3ZGVudCA9IHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkKKyAgICAgICAgdXNlcm5hbWUgPSBwd2RlbnQucHdfbmFtZQorICAgICAgICB1c2VyaG9tZSA9IHB3ZGVudC5wd19kaXIucnN0cmlwKCcvJykKKyAgICAgICAgIyBmaW5kIGFyYml0cmFyeSBkaWZmZXJlbnQgdXNlciAoaWYgZXhpc3RzKQorICAgICAgICBmb3IgcHdkZW50IGluIHB3ZC5nZXRwd2FsbCgpOgorICAgICAgICAgICAgb3RoZXJuYW1lID0gcHdkZW50LnB3X25hbWUKKyAgICAgICAgICAgIG90aGVyaG9tZSA9IHB3ZGVudC5wd19kaXIucnN0cmlwKCcvJykKKyAgICAgICAgICAgIGlmIG90aGVybmFtZSAhPSB1c2VybmFtZSBhbmQgb3RoZXJob21lOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcDEgPSBQKCd+L0RvY3VtZW50cycpCisgICAgICAgIHAyID0gUCgnficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDMgPSBQKCd+JyArIG90aGVybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDQgPSBQKCcuLi9+JyArIHVzZXJuYW1lICsgJy9Eb2N1bWVudHMnKQorICAgICAgICBwNSA9IFAoJy9+JyArIHVzZXJuYW1lICsgJy9Eb2N1bWVudHMnKQorICAgICAgICBwNiA9IFAoJycpCisgICAgICAgIHA3ID0gUCgnfmZha2V1c2VyL0RvY3VtZW50cycpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnYucG9wKCdIT01FJywgTm9uZSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMS5leHBhbmR1c2VyKCksIFAodXNlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmV4cGFuZHVzZXIoKSwgUCh1c2VyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDMuZXhwYW5kdXNlcigpLCBQKG90aGVyaG9tZSkgLyAnRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBwNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDcuZXhwYW5kdXNlcikKKworICAgICAgICAgICAgZW52WydIT01FJ10gPSAnL3RtcCcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhwYW5kdXNlcigpLCBQKCcvdG1wL0RvY3VtZW50cycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5leHBhbmR1c2VyKCksIFAodXNlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAzLmV4cGFuZHVzZXIoKSwgUChvdGhlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA0LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFuZHVzZXIoKSwgcDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIoKSwgcDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHA3LmV4cGFuZHVzZXIpCisKIAogQG9ubHlfbnQKIGNsYXNzIFdpbmRvd3NQYXRoVGVzdChfQmFzZVBhdGhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xODkzLDYgKzIwNDQsNjEgQEAKICAgICAgICAgcCA9IFAoQkFTRSwgImRpckMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLnJnbG9iKCJGSUxFZCIpKSwgeyBQKEJBU0UsICJkaXJDL2RpckQvZmlsZUQiKSB9KQogCisgICAgZGVmIHRlc3RfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52LnBvcCgnSE9NRScsIE5vbmUpCisgICAgICAgICAgICBlbnYucG9wKCdVU0VSUFJPRklMRScsIE5vbmUpCisgICAgICAgICAgICBlbnYucG9wKCdIT01FUEFUSCcsIE5vbmUpCisgICAgICAgICAgICBlbnYucG9wKCdIT01FRFJJVkUnLCBOb25lKQorICAgICAgICAgICAgZW52WydVU0VSTkFNRSddID0gJ2FsaWNlJworCisgICAgICAgICAgICAjIHRlc3QgdGhhdCB0aGUgcGF0aCByZXR1cm5zIHVuY2hhbmdlZAorICAgICAgICAgICAgcDEgPSBQKCd+L015IERvY3VtZW50cycpCisgICAgICAgICAgICBwMiA9IFAoJ35hbGljZS9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDMgPSBQKCd+Ym9iL015IERvY3VtZW50cycpCisgICAgICAgICAgICBwNCA9IFAoJy9+L015IERvY3VtZW50cycpCisgICAgICAgICAgICBwNSA9IFAoJ2Q6fi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDYgPSBQKCcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwMS5leHBhbmR1c2VyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwMi5leHBhbmR1c2VyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwMy5leHBhbmR1c2VyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQorCisgICAgICAgICAgICBkZWYgY2hlY2soKToKKyAgICAgICAgICAgICAgICBlbnYucG9wKCdVU0VSTkFNRScsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMS5leHBhbmR1c2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQKCdDOi9Vc2Vycy9hbGljZS9NeSBEb2N1bWVudHMnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcDIuZXhwYW5kdXNlcikKKyAgICAgICAgICAgICAgICBlbnZbJ1VTRVJOQU1FJ10gPSAnYWxpY2UnCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5leHBhbmR1c2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQKCdDOi9Vc2Vycy9hbGljZS9NeSBEb2N1bWVudHMnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAzLmV4cGFuZHVzZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAoJ0M6L1VzZXJzL2JvYi9NeSBEb2N1bWVudHMnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA0LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBwNikKKworICAgICAgICAgICAgIyB0ZXN0IHRoZSBmaXJzdCBsb29rdXAga2V5IGluIHRoZSBlbnYgdmFycworICAgICAgICAgICAgZW52WydIT01FJ10gPSAnQzpcXFVzZXJzXFxhbGljZScKKyAgICAgICAgICAgIGNoZWNrKCkKKworICAgICAgICAgICAgIyB0ZXN0IHRoYXQgSE9NRVBBVEggaXMgYXZhaWxhYmxlIGluc3RlYWQKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUUnLCBOb25lKQorICAgICAgICAgICAgZW52WydIT01FUEFUSCddID0gJ0M6XFxVc2Vyc1xcYWxpY2UnCisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgIGVudlsnSE9NRURSSVZFJ10gPSAnQzpcXCcKKyAgICAgICAgICAgIGVudlsnSE9NRVBBVEgnXSA9ICdVc2Vyc1xcYWxpY2UnCisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUVEUklWRScsIE5vbmUpCisgICAgICAgICAgICBlbnYucG9wKCdIT01FUEFUSCcsIE5vbmUpCisgICAgICAgICAgICBlbnZbJ1VTRVJQUk9GSUxFJ10gPSAnQzpcXFVzZXJzXFxhbGljZScKKyAgICAgICAgICAgIGNoZWNrKCkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCA1MDI1NzkyLi40MWU1MDkxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMzE5LDIxICszMTksNSBAQAogICAgICAgICAgICAgZigpCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIGltcG9ydCBzeXMKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLSAgICB0ZXN0X2NsYXNzZXMgPSAoVGVzdFRyYW5mb3JtcywgVGVzdEJ1Z2xldHMpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQppbmRleCBiODVhMjZhLi5hYjVmNDE4OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgaG1hYwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNSwgc2hhMSwgc2hhMjI0LCBzaGEyNTYsIHNoYTM4NCwgc2hhNTEyCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgUGVwMjQ3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYzLDggKzYyLDUgQEAKICAgICBkZWYgdGVzdF9obWFjKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX21vZHVsZShobWFjLCBrZXk9YidhYmMnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUGVwMjQ3VGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weQppbmRleCBmZDUyNTZjLi4xZTVlMjI3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weQpAQCAtMjQ0LDExICsyNDQsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICd0aW0gbGlrZXMgdG8gZWF0IGEgYmFnIG9mIGhhbSB3b3J0aCAkMTAwJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RUZW1wbGF0ZSxdCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkKaW5kZXggNWI2Mzk5OC4uOTdkY2VkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGhpcyBmaWxlIGlzIG1hcmtlZCBhcyBiaW5hcnkgaW4gdGhlIENWUywgdG8gcHJldmVudCBNYWNDVlMgZnJvbSByZWNvZGluZyBpdC4KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgUEVQMzEyMFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MCw4ICszOSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ8OHJywgbnNbJ3UnXSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUEVQMzEyMFRlc3QsIEJ1aWx0aW5Db21waWxlVGVzdHMpCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CmluZGV4IDJlNmI5MGEuLjA2Nzk4NDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBQRVAzMTMxVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI4LDggKzI3LDUgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgZXhjZXB0aW9uIGRpZG4ndCBvY2N1ciIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQRVAzMTMxVGVzdCkKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKaW5kZXggN2Q0YTVkOC4uOGQ1NjBjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCBlcnJubwogZnJvbSBlcnJubyBpbXBvcnQgRUVYSVNUCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBTdWJPU0Vycm9yKE9TRXJyb3IpOgogICAgIHBhc3MKQEAgLTIwMiw4ICsyMDEsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJycpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKaW5kZXggNjkxOTRkZi4uMjNmZmJlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKQEAgLTEwMTMsMTEgKzEwMTMsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsICgxLCAyLCAzLCA0KSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RQRVAzODBPcGVyYXRpb25dCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMjM1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weQpAQCAtMCwwICsxLDM0IEBACitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGdlbmVyYXRvcl9zdG9wCisKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFRlc3RQRVA0NzkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3N0b3BpdGVyYXRpb25fd3JhcHBpbmcoc2VsZik6CisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgIG5leHQoZygpKQorCisgICAgZGVmIHRlc3Rfc3RvcGl0ZXJhdGlvbl93cmFwcGluZ19jb250ZXh0KHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZigpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChnKCkpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGV4Yy5fX2NhdXNlX18pLCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGV4Yy5fX2NvbnRleHRfXyksIFN0b3BJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdfX2NhdXNlX18sIF9fY29udGV4dF9fLCBvciBfX3N1cHByZXNzX2NvbnRleHRfXyAnCisgICAgICAgICAgICAgICAgICAgICAgJ3dlcmUgbm90IHByb3Blcmx5IHNldCcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKaW5kZXggM2Q3NWQ2NS4uYWI2ZDkyYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKQEAgLTM2Niw3ICszNjYsMTAgQEAKIAogICAgICAgICBmb3IgbmFtZSwgZXhjIGluIGdldF9leGNlcHRpb25zKGJ1aWx0aW5zKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWUpOgotICAgICAgICAgICAgICAgIGlmIGV4YyBpbiAoQmxvY2tpbmdJT0Vycm9yLCBSZXNvdXJjZVdhcm5pbmcpOgorICAgICAgICAgICAgICAgIGlmIGV4YyBpbiAoQmxvY2tpbmdJT0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcEFzeW5jSXRlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdXJzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgT1NFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKaW5kZXggOTg4MzAwMC4uNTMyZThmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKQEAgLTI5MSw5ICsyOTEsNSBAQAogICAgICAgICBpbXBvcnQgdDgKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0OC5fX2RvY19fLCAiZG9jIGZvciB0OCIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CmluZGV4IDM3MGIyYWEuLjVkOWE0NTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gaW1wb3J0bGliLnV0aWwgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNyZWF0ZV9lbXB0eV9maWxlCiAKIGNsYXNzIFRlc3RJbXBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC03Niw5ICs3Niw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIHZhciksIDEpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0SW1wb3J0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCBlMGM4NjM1ZGUuLjU3ZWJmMWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTEwNCw2ICsxMDQsOSBAQAogY2xhc3MgUGtndXRpbFBFUDMwMlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGNsYXNzIE15VGVzdExvYWRlcihvYmplY3QpOgorICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZCk6CiAgICAgICAgICAgICAjIENvdW50IGhvdyBtYW55IHRpbWVzIHRoZSBtb2R1bGUgaXMgcmVsb2FkZWQKICAgICAgICAgICAgIG1vZC5fX2RpY3RfX1snbG9hZHMnXSA9IG1vZC5fX2RpY3RfXy5nZXQoJ2xvYWRzJywgMCkgKyAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCBiM2RlNDNiLi4zZWE3MWYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTIzNiw3ICsyMzYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RzLCAwKQogCiAgICAgZGVmIHRlc3RfZGlzdChzZWxmKToKLSAgICAgICAgcmVzID0gcGxhdGZvcm0uZGlzdCgpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAorICAgICAgICAgICAgICAgICdpZ25vcmUnLAorICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCisgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJlcyA9IHBsYXRmb3JtLmRpc3QoKQogCiAgICAgZGVmIHRlc3RfbGliY192ZXIoc2VsZik6CiAgICAgICAgIGltcG9ydCBvcwpAQCAtMzA1LDE2ICszMTIsMzcgQEAKICAgICAgICAgICAgICAgICBmLndyaXRlKCdGZWRvcmEgcmVsZWFzZSAxOSAoU2Noclx4ZjZkaW5nZXJcdTIwMTlzIENhdClcbicpCiAKICAgICAgICAgICAgIHdpdGggbW9jay5wYXRjaCgncGxhdGZvcm0uX1VOSVhDT05GRElSJywgdGVtcGRpcik6Ci0gICAgICAgICAgICAgICAgZGlzdG5hbWUsIHZlcnNpb24sIGRpc3RpZCA9IHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAorICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBkaXN0bmFtZSwgdmVyc2lvbiwgZGlzdGlkID0gcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXN0bmFtZSwgJ0ZlZG9yYScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXN0bmFtZSwgJ0ZlZG9yYScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb24sICcxOScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3RpZCwgJ1NjaHJceGY2ZGluZ2VyXHUyMDE5cyBDYXQnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFBsYXRmb3JtVGVzdAotICAgICkKKworY2xhc3MgRGVwcmVjYXRpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Rpc3RfZGVwcmVjYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgIHBsYXRmb3JtLmRpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdCgpIGFuZCBsaW51eF9kaXN0cmlidXRpb24oKSBmdW5jdGlvbnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBpbiBQeXRob24gMy41IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24gMy43JykKKworICAgIGRlZiB0ZXN0X2xpbnV4X2Rpc3RyaWJ1dGlvbl9kZXByZWNhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNSBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIDMuNycpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9wZW4ucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGVuLnB5CmluZGV4IDExNmIzZGQuLmRhMDFhODcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wZW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3Blbi5weQpAQCAtNjEsOCArNjEsNSBAQAogICAgICAgICB3aXRoIG9zLnBvcGVuKGNtZD0iZXhpdCAwIiwgbW9kZT0idyIsIGJ1ZmZlcmluZz0tMSk6CiAgICAgICAgICAgICBwYXNzCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQb3BlblRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKaW5kZXggOGEzYzlmNC4uYmNlZWI5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKQEAgLTQ0LDYgKzQ0LDcgQEAKIGNsYXNzIER1bW15UE9QM0hhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CiAKICAgICBDQVBBUyA9IHsnVUlETCc6IFtdLCAnSU1QTEVNRU5UQVRJT04nOiBbJ3B5dGhvbi10ZXN0bGliLXBvcC1zZXJ2ZXInXX0KKyAgICBlbmFibGVfVVRGOCA9IEZhbHNlCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKQEAgLTE0Miw2ICsxNDMsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJyAnLmpvaW4oX2xuKSkKICAgICAgICAgc2VsZi5wdXNoKCcuJykKIAorICAgIGRlZiBjbWRfdXRmOChzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJytPSyBJIGtub3cgUkZDNjg1NicKKyAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZW5hYmxlX1VURjgKKyAgICAgICAgICAgICAgICAgIGVsc2UgJy1FUlIgV2hhdCBpcyBVVEY4PyEnKQorCiAgICAgaWYgU1VQUE9SVFNfU1NMOgogCiAgICAgICAgIGRlZiBjbWRfc3RscyhzZWxmLCBhcmcpOgpAQCAtMzA5LDYgKzMxNSwxNiBAQAogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCkKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgnZm9vJykKIAorICAgIGRlZiB0ZXN0X3V0ZjhfcmFpc2VzX2lmX3Vuc3VwcG9ydGVkKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyLmVuYWJsZV9VVEY4ID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocG9wbGliLmVycm9yX3Byb3RvLCBzZWxmLmNsaWVudC51dGY4KQorCisgICAgZGVmIHRlc3RfdXRmOChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlci5lbmFibGVfVVRGOCA9IFRydWUKKyAgICAgICAgZXhwZWN0ZWQgPSBiJytPSyBJIGtub3cgUkZDNjg1NicKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5jbGllbnQudXRmOCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X2NhcGEoc2VsZik6CiAgICAgICAgIGNhcGEgPSBzZWxmLmNsaWVudC5jYXBhKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdJTVBMRU1FTlRBVElPTicgaW4gY2FwYS5rZXlzKCkpCkBAIC0zNDUsMjMgKzM2MSwxOCBAQAogCiAKIGlmIFNVUFBPUlRTX1NTTDoKKyAgICBmcm9tIHRlc3QudGVzdF9mdHBsaWIgaW1wb3J0IFNTTENvbm5lY3Rpb24KIAotICAgIGNsYXNzIER1bW15UE9QM19TU0xIYW5kbGVyKER1bW15UE9QM0hhbmRsZXIpOgorICAgIGNsYXNzIER1bW15UE9QM19TU0xIYW5kbGVyKFNTTENvbm5lY3Rpb24sIER1bW15UE9QM0hhbmRsZXIpOgogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKICAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKLSAgICAgICAgICAgIHNzbF9zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIGNlcnRmaWxlPUNFUlRGSUxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCi0gICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc3NsX3NvY2tldCkKLSAgICAgICAgICAgICMgTXVzdCB0cnkgaGFuZHNoYWtlIGJlZm9yZSBjYWxsaW5nIHB1c2goKQotICAgICAgICAgICAgc2VsZi50bHNfYWN0aXZlID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi50bHNfc3RhcnRpbmcgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9kb190bHNfaGFuZHNoYWtlKCkKKyAgICAgICAgICAgIHNlbGYuc2VjdXJlX2Nvbm5lY3Rpb24oKQogICAgICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiIlxyXG4iKQogICAgICAgICAgICAgc2VsZi5pbl9idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5wdXNoKCcrT0sgZHVtbXkgcG9wMyBzZXJ2ZXIgcmVhZHkuIDx0aW1lc3RhbXA+JykKKyAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYudGxzX3N0YXJ0aW5nID0gRmFsc2UKIAogCiBAcmVxdWlyZXNfc3NsCkBAIC00NTIsNyArNDYzLDcgQEAKICAgICAgICAgZGVsIHNlbGYudGhyZWFkICAjIENsZWFyIG91dCBhbnkgZGFuZ2xpbmcgVGhyZWFkIG9iamVjdHMuCiAKICAgICBkZWYgc2VydmVyKHNlbGYsIGV2dCwgc2Vydik6Ci0gICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgIHNlcnYubGlzdGVuKCkKICAgICAgICAgZXZ0LnNldCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQppbmRleCBkNzY3OTg5Li4yYTU5YzM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKQEAgLTksNyArOSw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IG9zCi1pbXBvcnQgZmNudGwKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAogaW1wb3J0IHNodXRpbApAQCAtMzU1LDcgKzM1NCw3IEBACiAgICAgZGVmIHRlc3Rfb3NjbG9leGVjKHNlbGYpOgogICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZfG9zLk9fQ0xPRVhFQykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MuZ2V0X2luaGVyaXRhYmxlKGZkKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdPX0VYTE9DSycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG5lZWRzIHBvc2l4Lk9fRVhMT0NLJykKQEAgLTY0Myw4ICs2NDIsOCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MuZ2V0X2luaGVyaXRhYmxlKHIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9pbmhlcml0YWJsZSh3KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKHIsIGZjbnRsLkZfR0VURkwpICYgb3MuT19OT05CTE9DSykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKHcsIGZjbnRsLkZfR0VURkwpICYgb3MuT19OT05CTE9DSykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5nZXRfYmxvY2tpbmcocikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MuZ2V0X2Jsb2NraW5nKHcpKQogICAgICAgICAjIHRyeSByZWFkaW5nIGZyb20gYW4gZW1wdHkgcGlwZTogdGhpcyBzaG91bGQgZmFpbCwgbm90IGJsb2NrCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlYWQsIHIsIDEpCiAgICAgICAgICMgdHJ5IGEgd3JpdGUgYmlnIGVub3VnaCB0byBmaWxsLXVwIHRoZSBwaXBlOiB0aGlzIHNob3VsZCBlaXRoZXIKQEAgLTExODQsMTYgKzExODMsMTYgQEAKICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCiAgICAgICAgIGZkID0gTm9uZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIGZkID0gb3Mub3Blbihmbl93aXRoX05VTCwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUKSAjIHJhaXNlcwogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgaWYgZmQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZm4pKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLm1rZGlyLCBmbl93aXRoX05VTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MubWtkaXIsIGZuX3dpdGhfTlVMKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZuKSkKICAgICAgICAgb3BlbihmbiwgJ3diJykuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnN0YXQsIGZuX3dpdGhfTlVMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zdGF0LCBmbl93aXRoX05VTCkKIAogICAgIGRlZiB0ZXN0X3BhdGhfd2l0aF9udWxsX2J5dGUoc2VsZik6CiAgICAgICAgIGZuID0gb3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDFkNDU5NmUuLjlkMjA0NzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC01NywxOCArNTcsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5qb2luKGIiL2Zvby8iLCBiImJhci8iLCBiImJhei8iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiIi9mb28vYmFyL2Jhei8iKQogCi0gICAgZGVmIHRlc3Rfam9pbl9lcnJvcnMoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcG9zaXhwYXRoLmpvaW4gcmFpc2VzIGZyaWVuZGx5IFR5cGVFcnJvcnMuCi0gICAgICAgIGVycm1zZyA9ICJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCBjb21wb25lbnRzIgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgotICAgICAgICAgICAgcG9zaXhwYXRoLmpvaW4oYidieXRlcycsICdzdHInKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgotICAgICAgICAgICAgcG9zaXhwYXRoLmpvaW4oJ3N0cicsIGInYnl0ZXMnKQotICAgICAgICAjIHJlZ3Jlc3Npb24sIHNlZSAjMTUzNzcKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgcG9zaXhwYXRoLmpvaW4oTm9uZSwgJ3N0cicpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3NbMF0sIGVycm1zZykKLQogICAgIGRlZiB0ZXN0X3NwbGl0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5zcGxpdCgiL2Zvby9iYXIiKSwgKCIvZm9vIiwgImJhciIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5zcGxpdCgiLyIpLCAoIi8iLCAiIikpCkBAIC01MjMsNiArNTExLDYwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5nZXRjd2RiID0gcmVhbF9nZXRjd2RiCiAKKyAgICBkZWYgdGVzdF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBkZWYgY2hlY2socGF0aHMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXhwYXRoLmNvbW1vbnBhdGgocGF0aHMpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXhwYXRoLmNvbW1vbnBhdGgoW29zLmZzZW5jb2RlKHApIGZvciBwIGluIHBhdGhzXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmZzZW5jb2RlKGV4cGVjdGVkKSkKKyAgICAgICAgZGVmIGNoZWNrX2Vycm9yKGV4YywgcGF0aHMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBwb3NpeHBhdGguY29tbW9ucGF0aCwgcGF0aHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29zLmZzZW5jb2RlKHApIGZvciBwIGluIHBhdGhzXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwgW10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnL3VzcicsICd1c3InXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWyd1c3InLCAnL3VzciddKQorCisgICAgICAgIGNoZWNrKFsnL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci9sb2NhbCcsICcvdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xvY2FsLycsICcvdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xvY2FsLycsICcvdXNyL2xvY2FsLyddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci8vbG9jYWwnLCAnLy91c3IvbG9jYWwnXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvLi9sb2NhbCcsICcvLi91c3IvbG9jYWwnXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy8nLCAnL2RldiddLCAnLycpCisgICAgICAgIGNoZWNrKFsnL3VzcicsICcvZGV2J10sICcvJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xpYi8nLCAnL3Vzci9saWIvcHl0aG9uMyddLCAnL3Vzci9saWInKQorICAgICAgICBjaGVjayhbJy91c3IvbGliLycsICcvdXNyL2xpYjY0LyddLCAnL3VzcicpCisKKyAgICAgICAgY2hlY2soWycvdXNyL2xpYicsICcvdXNyL2xpYjY0J10sICcvdXNyJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xpYi8nLCAnL3Vzci9saWI2NCddLCAnL3VzcicpCisKKyAgICAgICAgY2hlY2soWydzcGFtJ10sICdzcGFtJykKKyAgICAgICAgY2hlY2soWydzcGFtJywgJ3NwYW0nXSwgJ3NwYW0nKQorICAgICAgICBjaGVjayhbJ3NwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmQvamFtJywgJ2FuZC9zcGFtJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZC8vamFtJywgJ2FuZC9zcGFtLy8nXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kLy4vamFtJywgJy4vYW5kL3NwYW0nXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kL2phbScsICdhbmQvc3BhbScsICdhbG90J10sICcnKQorICAgICAgICBjaGVjayhbJ2FuZC9qYW0nLCAnYW5kL3NwYW0nLCAnYW5kJ10sICdhbmQnKQorCisgICAgICAgIGNoZWNrKFsnJ10sICcnKQorICAgICAgICBjaGVjayhbJycsICdzcGFtL2Fsb3QnXSwgJycpCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnJywgJy9zcGFtL2Fsb3QnXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYicvdXNyL2xpYi8nLCAnL3Vzci9saWIvcHl0aG9uMyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYicvdXNyL2xpYi8nLCAndXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJ3Vzci9saWIvJywgJy91c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWycvdXNyL2xpYi8nLCBiJy91c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWycvdXNyL2xpYi8nLCBiJ3Vzci9saWIvcHl0aG9uMyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Vzci9saWIvJywgYicvdXNyL2xpYi9weXRob24zJ10pCisKIAogY2xhc3MgUG9zaXhDb21tb25UZXN0KHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHBhdGhtb2R1bGUgPSBwb3NpeHBhdGgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3cucHkKaW5kZXggMjBiMTA2Ni4uNmZlYWM0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3cucHkKQEAgLTEyMiw4ICsxMjIsNSBAQAogICAgICAgICAgICAgZXEocG93KGEsIC1maXZldG8pLCBleHBlY3RlZCkKICAgICAgICAgZXEoZXhwZWN0ZWQsIDEuMCkgICAjIGVsc2Ugd2UgZGlkbid0IHB1c2ggZml2ZXRvIHRvIGV2ZW5uZXNzCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvd1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKaW5kZXggMTgwZGRiMC4uMzU3YzVjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkKQEAgLTEsMTIgKzEsMTQgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCiAKLWltcG9ydCBwcHJpbnQKLWltcG9ydCB0ZXN0LnN1cHBvcnQKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlc3QudGVzdF9zZXQKLWltcG9ydCByYW5kb20KIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGlvCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgcHByaW50CitpbXBvcnQgcmFuZG9tCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdGVzdC50ZXN0X3NldAoraW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKIAogIyBsaXN0LCB0dXBsZSBhbmQgZGljdCBzdWJjbGFzc2VzIHRoYXQgZG8gb3IgZG9uJ3Qgb3ZlcndyaXRlIF9fcmVwcl9fCiBjbGFzcyBsaXN0MihsaXN0KToKQEAgLTQ4LDYgKzUwLDI1IEBACiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc3RyKGlkKHNlbGYpKQogCisjIENsYXNzIE9yZGVyYWJsZSBpcyBvcmRlcmFibGUgd2l0aCBhbnkgdHlwZQorY2xhc3MgT3JkZXJhYmxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYXNoKToKKyAgICAgICAgc2VsZi5faGFzaCA9IGhhc2gKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmICE9IG90aGVyCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmID09IG90aGVyCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmIGlzIG90aGVyCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmIGlzIG5vdCBvdGhlcgorICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2gKKwogY2xhc3MgUXVlcnlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC01NSw2ICs3NiwxOCBAQAogICAgICAgICBzZWxmLmIgPSBsaXN0KHJhbmdlKDIwMCkpCiAgICAgICAgIHNlbGYuYVstMTJdID0gc2VsZi5iCiAKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKCkKKyAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcihpbmRlbnQ9NCwgd2lkdGg9NDAsIGRlcHRoPTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPWlvLlN0cmluZ0lPKCksIGNvbXBhY3Q9VHJ1ZSkKKyAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcig0LCA0MCwgNSwgaW8uU3RyaW5nSU8oKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcig0LCA0MCwgNSwgaW8uU3RyaW5nSU8oKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcHByaW50LlByZXR0eVByaW50ZXIsIGluZGVudD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcHByaW50LlByZXR0eVByaW50ZXIsIGRlcHRoPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCBkZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcHByaW50LlByZXR0eVByaW50ZXIsIHdpZHRoPTApCisKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAgICAgIyBWZXJpZnkgLmlzcmVjdXJzaXZlKCkgYW5kIC5pc3JlYWRhYmxlKCkgdy9vIHJlY3Vyc2lvbgogICAgICAgICBwcCA9IHBwcmludC5QcmV0dHlQcmludGVyKCkKQEAgLTE5NSwxMCArMjI4LDUyIEBACiAgICAgICAgIG8gPSBbbzEsIG8yXQogICAgICAgICBleHBlY3RlZCA9ICIiIlwKIFsgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0sCisgICAgeydmaXJzdCc6IDEsICdzZWNvbmQnOiAyLCAndGhpcmQnOiAzfV0iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCBpbmRlbnQ9NCwgd2lkdGg9NDIpLCBleHBlY3RlZCkKKyAgICAgICAgZXhwZWN0ZWQgPSAiIiJcCitbICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLAogICAgIHsgICAnZmlyc3QnOiAxLAogICAgICAgICAnc2Vjb25kJzogMiwKICAgICAgICAgJ3RoaXJkJzogM31dIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgaW5kZW50PTQsIHdpZHRoPTQyKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgaW5kZW50PTQsIHdpZHRoPTQxKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF93aWR0aChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSAiIiJcCitbW1tbW1sxLCAyLCAzXSwKKyAgICAgJzEgMiddXV1dLAorIHsxOiBbMSwgMiwgM10sCisgIDI6IFsxMiwgMzRdfSwKKyAnYWJjIGRlZiBnaGknLAorICgnYWIgY2QgZWYnLCksCisgc2V0Mih7MSwgMjN9KSwKKyBbW1tbWzEsIDIsIDNdLAorICAgICAnMSAyJ11dXV1dIiIiCisgICAgICAgIG8gPSBldmFsKGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTE1KSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9MTYpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD0yNSksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTE0KSwgIiIiXAorW1tbW1tbMSwKKyAgICAgIDIsCisgICAgICAzXSwKKyAgICAgJzEgJworICAgICAnMiddXV1dLAorIHsxOiBbMSwKKyAgICAgIDIsCisgICAgICAzXSwKKyAgMjogWzEyLAorICAgICAgMzRdfSwKKyAnYWJjIGRlZiAnCisgJ2doaScsCisgKCdhYiBjZCAnCisgICdlZicsKSwKKyBzZXQyKHsxLAorICAgICAgIDIzfSksCisgW1tbW1sxLAorICAgICAgMiwKKyAgICAgIDNdLAorICAgICAnMSAnCisgICAgICcyJ11dXV1dIiIiKQogCiAgICAgZGVmIHRlc3Rfc29ydGVkX2RpY3Qoc2VsZik6CiAgICAgICAgICMgU3RhcnRpbmcgaW4gUHl0aG9uIDIuNSwgcHByaW50IHNvcnRzIGRpY3QgZGlzcGxheXMgYnkga2V5IHJlZ2FyZGxlc3MKQEAgLTIxOSwxOSArMjk0LDUxIEBACiAgICAgICAgICAgICByIns1OiBbW11dLCAneHlcdGFiXG4nOiAoMywpLCAoKToge319IikKIAogICAgIGRlZiB0ZXN0X29yZGVyZWRfZGljdChzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgJ09yZGVyZWREaWN0KCknKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICdPcmRlcmVkRGljdCgpJykKICAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCiAgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKICIiIlwKLXsndGhlJzogMCwKLSAncXVpY2snOiAxLAotICdicm93bic6IDIsCi0gJ2ZveCc6IDMsCi0gJ2p1bXBlZCc6IDQsCi0gJ292ZXInOiA1LAotICdhJzogNiwKLSAnbGF6eSc6IDcsCi0gJ2RvZyc6IDh9IiIiKQorT3JkZXJlZERpY3QoWygndGhlJywgMCksCisgICAgICAgICAgICAgKCdxdWljaycsIDEpLAorICAgICAgICAgICAgICgnYnJvd24nLCAyKSwKKyAgICAgICAgICAgICAoJ2ZveCcsIDMpLAorICAgICAgICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgICAgICAgKCdvdmVyJywgNSksCisgICAgICAgICAgICAgKCdhJywgNiksCisgICAgICAgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgICAgICAgKCdkb2cnLCA4KV0pIiIiKQorCisgICAgZGVmIHRlc3RfbWFwcGluZ19wcm94eShzZWxmKToKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBkaWN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBtID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZShkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG0pLCAiIiJcCittYXBwaW5ncHJveHkoeydhJzogNiwKKyAgICAgICAgICAgICAgJ2Jyb3duJzogMiwKKyAgICAgICAgICAgICAgJ2RvZyc6IDgsCisgICAgICAgICAgICAgICdmb3gnOiAzLAorICAgICAgICAgICAgICAnanVtcGVkJzogNCwKKyAgICAgICAgICAgICAgJ2xhenknOiA3LAorICAgICAgICAgICAgICAnb3Zlcic6IDUsCisgICAgICAgICAgICAgICdxdWljayc6IDEsCisgICAgICAgICAgICAgICd0aGUnOiAwfSkiIiIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgbSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChtKSwgIiIiXAorbWFwcGluZ3Byb3h5KE9yZGVyZWREaWN0KFsoJ3RoZScsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3F1aWNrJywgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnYnJvd24nLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdmb3gnLCAzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdvdmVyJywgNSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsIDYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2cnLCA4KV0pKSIiIikKKwogICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgogICAgICAgICBvID0geyduYW1lcyB3aXRoIHNwYWNlcyc6ICdzaG91bGQgYmUgcHJlc2VudGVkIHVzaW5nIHJlcHIoKScsCiAgICAgICAgICAgICAgJ290aGVycy5zaG91bGQubm90LmJlJzogJ2xpa2UudGhpcyd9CkBAIC01MzUsMTYgKzY0MiwzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGRpY3QuZnJvbWtleXMoa2V5cywgMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd7JXI6IDAsICVyOiAwfScgJSB0dXBsZShzb3J0ZWQoa2V5cywga2V5PWlkKSkpCiAKKyAgICBkZWYgdGVzdF9zb3J0X29yZGVyYWJsZV9hbmRfdW5vcmRlcmFibGVfdmFsdWVzKHNlbGYpOgorICAgICAgICAjIElzc3VlIDIyNzIxOiAgc29ydGVkIHBwcmludHMgaXMgbm90IHN0YWJsZQorICAgICAgICBhID0gVW5vcmRlcmFibGUoKQorICAgICAgICBiID0gT3JkZXJhYmxlKGhhc2goYSkpICAjIHNob3VsZCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUKKyAgICAgICAgIyBzZWxmLXRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzdHIodHlwZShiKSksIHN0cih0eXBlKGEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoW2IsIGFdKSwgW2EsIGJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChbYSwgYl0pLCBbYSwgYl0pCisgICAgICAgICMgc2V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KFtiLCBhXSksIHdpZHRoPTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd7JXIsXG4gJXJ9JyAlIChhLCBiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQoW2EsIGJdKSwgd2lkdGg9MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3slcixcbiAlcn0nICUgKGEsIGIpKQorICAgICAgICAjIGRpY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkaWN0LmZyb21rZXlzKFtiLCBhXSksIHdpZHRoPTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd7JXI6IE5vbmUsXG4gJXI6IE5vbmV9JyAlIChhLCBiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkaWN0LmZyb21rZXlzKFthLCBiXSksIHdpZHRoPTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd7JXI6IE5vbmUsXG4gJXI6IE5vbmV9JyAlIChhLCBiKSkKKwogICAgIGRlZiB0ZXN0X3N0cl93cmFwKHNlbGYpOgogICAgICAgICAjIHBwcmludCB0cmllcyB0byB3cmFwIHN0cmluZ3MgaW50ZWxsaWdlbnRseQogICAgICAgICBmb3ggPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZveCwgd2lkdGg9MjApLCAiIiJcCi0oJ3RoZSBxdWljayAnCi0gJ2Jyb3duIGZveCAnCi0gJ2p1bXBlZCBvdmVyIGEgJwotICdsYXp5IGRvZycpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZveCwgd2lkdGg9MTkpLCAiIiJcCisoJ3RoZSBxdWljayBicm93biAnCisgJ2ZveCBqdW1wZWQgb3ZlciAnCisgJ2EgbGF6eSBkb2cnKSIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh7J2EnOiAxLCAnYic6IGZveCwgJ2MnOiAyfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0yNiksICIiIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0yNSksICIiIlwKIHsnYSc6IDEsCiAgJ2InOiAndGhlIHF1aWNrIGJyb3duICcKICAgICAgICdmb3gganVtcGVkIG92ZXIgJwpAQCAtNTU2LDEyICs2ODIsMzQgQEAKICAgICAgICAgIyAtIG5vbi1BU0NJSSBpcyBhbGxvd2VkCiAgICAgICAgICMgLSBhbiBhcG9zdHJvcGhlIGRvZXNuJ3QgZGlzcnVwdCB0aGUgcHByaW50CiAgICAgICAgIHNwZWNpYWwgPSAiUG9ydG9ucyBkaXggYm9ucyBcIndoaXNreXNcIlxuw6AgbCdhdm9jYXQgZ291amF0XHQgcXVpIGZ1bWFpdCBhdSB6b28iCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MjEpLCAiIiJcCi0oJ1BvcnRvbnMgZGl4ICcKLSAnYm9ucyAid2hpc2t5cyJcXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NjgpLCByZXByKHNwZWNpYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTMxKSwgIiIiXAorKCdQb3J0b25zIGRpeCBib25zICJ3aGlza3lzIlxcbicKKyAiw6AgbCdhdm9jYXQgZ291amF0XFx0IHF1aSAiCisgJ2Z1bWFpdCBhdSB6b28nKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0yMCksICIiIlwKKygnUG9ydG9ucyBkaXggYm9ucyAnCisgJyJ3aGlza3lzIlxcbicKICAiw6AgbCdhdm9jYXQgIgogICdnb3VqYXRcXHQgcXVpICcKICAnZnVtYWl0IGF1IHpvbycpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbc3BlY2lhbF1dXV1dLCB3aWR0aD0zNSksICIiIlwKK1tbW1tbJ1BvcnRvbnMgZGl4IGJvbnMgIndoaXNreXMiXFxuJworICAgICAiw6AgbCdhdm9jYXQgZ291amF0XFx0IHF1aSAiCisgICAgICdmdW1haXQgYXUgem9vJ11dXV1dIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbc3BlY2lhbF1dXV1dLCB3aWR0aD0yNSksICIiIlwKK1tbW1tbJ1BvcnRvbnMgZGl4IGJvbnMgJworICAgICAnIndoaXNreXMiXFxuJworICAgICAiw6AgbCdhdm9jYXQgIgorICAgICAnZ291amF0XFx0IHF1aSAnCisgICAgICdmdW1haXQgYXUgem9vJ11dXV1dIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbc3BlY2lhbF1dXV1dLCB3aWR0aD0yMyksICIiIlwKK1tbW1tbJ1BvcnRvbnMgZGl4ICcKKyAgICAgJ2JvbnMgIndoaXNreXMiXFxuJworICAgICAiw6AgbCdhdm9jYXQgIgorICAgICAnZ291amF0XFx0IHF1aSAnCisgICAgICdmdW1haXQgYXUgJworICAgICAnem9vJ11dXV1dIiIiKQogICAgICAgICAjIEFuIHVud3JhcHBhYmxlIHN0cmluZyBpcyBmb3JtYXR0ZWQgYXMgaXRzIHJlcHIKICAgICAgICAgdW53cmFwcGFibGUgPSAieCIgKiAxMDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh1bndyYXBwYWJsZSwgd2lkdGg9ODApLCByZXByKHVud3JhcHBhYmxlKSkKQEAgLTU4NCw3ICs3MzIsMjY3IEBACiAgIDE0LCAxNV0sCiAgW10sIFswXSwgWzAsIDFdLCBbMCwgMSwgMl0sIFswLCAxLCAyLCAzXSwKICBbMCwgMSwgMiwgMywgNF1dIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9NDgsIGNvbXBhY3Q9VHJ1ZSksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTQ3LCBjb21wYWN0PVRydWUpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2NvbXBhY3Rfd2lkdGgoc2VsZik6CisgICAgICAgIGxldmVscyA9IDIwCisgICAgICAgIG51bWJlciA9IDEwCisgICAgICAgIG8gPSBbMF0gKiBudW1iZXIKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGV2ZWxzIC0gMSk6CisgICAgICAgICAgICBvID0gW29dCisgICAgICAgIGZvciB3IGluIHJhbmdlKGxldmVscyAqIDIgKyAxLCBsZXZlbHMgKyAzICogbnVtYmVyIC0gMSk6CisgICAgICAgICAgICBsaW5lcyA9IHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPXcsIGNvbXBhY3Q9VHJ1ZSkuc3BsaXRsaW5lcygpCisgICAgICAgICAgICBtYXh3aWR0aCA9IG1heChtYXAobGVuLCBsaW5lcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChtYXh3aWR0aCwgdykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihtYXh3aWR0aCwgdyAtIDMpCisKKyAgICBkZWYgdGVzdF9ieXRlc193cmFwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGInJywgd2lkdGg9MSksICJiJyciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGInYWJjZCcsIHdpZHRoPTEpLCAiYidhYmNkJyIpCisgICAgICAgIGxldHRlcnMgPSBiJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTI5KSwgcmVwcihsZXR0ZXJzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0xOSksICIiIlwKKyhiJ2FiY2RlZmdoaWprbCcKKyBiJ21ub3BxcnN0dXZ3eHl6JykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MTgpLCAiIiJcCisoYidhYmNkZWZnaGlqa2wnCisgYidtbm9wcXJzdHV2d3gnCisgYid5eicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTE2KSwgIiIiXAorKGInYWJjZGVmZ2hpamtsJworIGInbW5vcHFyc3R1dnd4JworIGIneXonKSIiIikKKyAgICAgICAgc3BlY2lhbCA9IGJ5dGVzKHJhbmdlKDE2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD02MSksIHJlcHIoc3BlY2lhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NDgpLCAiIiJcCisoYidcXHgwMFxceDAxXFx4MDJcXHgwM1xceDA0XFx4MDVcXHgwNlxceDA3XFx4MDhcXHRcXG5cXHgwYicKKyBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTMyKSwgIiIiXAorKGInXFx4MDBcXHgwMVxceDAyXFx4MDMnCisgYidcXHgwNFxceDA1XFx4MDZcXHgwN1xceDA4XFx0XFxuXFx4MGInCisgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0xKSwgIiIiXAorKGInXFx4MDBcXHgwMVxceDAyXFx4MDMnCisgYidcXHgwNFxceDA1XFx4MDZcXHgwNycKKyBiJ1xceDA4XFx0XFxuXFx4MGInCisgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdCh7J2EnOiAxLCAnYic6IGxldHRlcnMsICdjJzogMn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjEpLCAiIiJcCit7J2EnOiAxLAorICdiJzogYidhYmNkZWZnaGlqa2wnCisgICAgICBiJ21ub3BxcnN0dXZ3eCcKKyAgICAgIGIneXonLAorICdjJzogMn0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBsZXR0ZXJzLCAnYyc6IDJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTIwKSwgIiIiXAoreydhJzogMSwKKyAnYic6IGInYWJjZGVmZ2gnCisgICAgICBiJ2lqa2xtbm9wJworICAgICAgYidxcnN0dXZ3eHl6JywKKyAnYyc6IDJ9IiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbW2xldHRlcnNdXV1dXV0sIHdpZHRoPTI1KSwgIiIiXAorW1tbW1tbYidhYmNkZWZnaGlqa2xtbm9wJworICAgICAgYidxcnN0dXZ3eHl6J11dXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW1tzcGVjaWFsXV1dXV1dLCB3aWR0aD00MSksICIiIlwKK1tbW1tbW2InXFx4MDBcXHgwMVxceDAyXFx4MDNcXHgwNFxceDA1XFx4MDZcXHgwNycKKyAgICAgIGInXFx4MDhcXHRcXG5cXHgwYlxceDBjXFxyXFx4MGVcXHgwZiddXV1dXV0iIiIpCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgcHByaW50IGlzIGEgdXNhYmxlIHJlcHIKKyAgICAgICAgZm9yIHdpZHRoIGluIHJhbmdlKDEsIDY0KToKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9IHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPXdpZHRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGZvcm1hdHRlZCksIHNwZWNpYWwpCisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBwcHJpbnQucGZvcm1hdChbc3BlY2lhbF0gKiAyLCB3aWR0aD13aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChmb3JtYXR0ZWQpLCBbc3BlY2lhbF0gKiAyKQorCisgICAgZGVmIHRlc3RfYnl0ZWFycmF5X3dyYXAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoYnl0ZWFycmF5KCksIHdpZHRoPTEpLCAiYnl0ZWFycmF5KGInJykiKQorICAgICAgICBsZXR0ZXJzID0gYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTQwKSwgcmVwcihsZXR0ZXJzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0yOCksICIiIlwKK2J5dGVhcnJheShiJ2FiY2RlZmdoaWprbCcKKyAgICAgICAgICBiJ21ub3BxcnN0dXZ3eHl6JykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MjcpLCAiIiJcCitieXRlYXJyYXkoYidhYmNkZWZnaGlqa2wnCisgICAgICAgICAgYidtbm9wcXJzdHV2d3gnCisgICAgICAgICAgYid5eicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTI1KSwgIiIiXAorYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsJworICAgICAgICAgIGInbW5vcHFyc3R1dnd4JworICAgICAgICAgIGIneXonKSIiIikKKyAgICAgICAgc3BlY2lhbCA9IGJ5dGVhcnJheShyYW5nZSgxNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NzIpLCByZXByKHNwZWNpYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTU3KSwgIiIiXAorYnl0ZWFycmF5KGInXFx4MDBcXHgwMVxceDAyXFx4MDNcXHgwNFxceDA1XFx4MDZcXHgwN1xceDA4XFx0XFxuXFx4MGInCisgICAgICAgICAgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD00MSksICIiIlwKK2J5dGVhcnJheShiJ1xceDAwXFx4MDFcXHgwMlxceDAzJworICAgICAgICAgIGInXFx4MDRcXHgwNVxceDA2XFx4MDdcXHgwOFxcdFxcblxceDBiJworICAgICAgICAgIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MSksICIiIlwKK2J5dGVhcnJheShiJ1xceDAwXFx4MDFcXHgwMlxceDAzJworICAgICAgICAgIGInXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgICAgICAgICAgYidcXHgwOFxcdFxcblxceDBiJworICAgICAgICAgIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBsZXR0ZXJzLCAnYyc6IDJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTMxKSwgIiIiXAoreydhJzogMSwKKyAnYic6IGJ5dGVhcnJheShiJ2FiY2RlZmdoaWprbCcKKyAgICAgICAgICAgICAgICBiJ21ub3BxcnN0dXZ3eCcKKyAgICAgICAgICAgICAgICBiJ3l6JyksCisgJ2MnOiAyfSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW2xldHRlcnNdXV1dXSwgd2lkdGg9MzcpLCAiIiJcCitbW1tbW2J5dGVhcnJheShiJ2FiY2RlZmdoaWprbG1ub3AnCisgICAgICAgICAgICAgICBiJ3Fyc3R1dnd4eXonKV1dXV1dIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KFtbW1tbc3BlY2lhbF1dXV1dLCB3aWR0aD01MCksICIiIlwKK1tbW1tbYnl0ZWFycmF5KGInXFx4MDBcXHgwMVxceDAyXFx4MDNcXHgwNFxceDA1XFx4MDZcXHgwNycKKyAgICAgICAgICAgICAgIGInXFx4MDhcXHRcXG5cXHgwYlxceDBjXFxyXFx4MGVcXHgwZicpXV1dXV0iIiIpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJkZWZhdWx0ZGljdCg8Y2xhc3MgJ2ludCc+LCB7fSkiKQorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGludCwgemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitkZWZhdWx0ZGljdCg8Y2xhc3MgJ2ludCc+LAorICAgICAgICAgICAgeydhJzogNiwKKyAgICAgICAgICAgICAnYnJvd24nOiAyLAorICAgICAgICAgICAgICdkb2cnOiA4LAorICAgICAgICAgICAgICdmb3gnOiAzLAorICAgICAgICAgICAgICdqdW1wZWQnOiA0LAorICAgICAgICAgICAgICdsYXp5JzogNywKKyAgICAgICAgICAgICAnb3Zlcic6IDUsCisgICAgICAgICAgICAgJ3F1aWNrJzogMSwKKyAgICAgICAgICAgICAndGhlJzogMH0pIiIiKQorCisgICAgZGVmIHRlc3RfY291bnRlcihzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiQ291bnRlcigpIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLkNvdW50ZXIoJ3NlbnNlbGVzc25lc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTQwKSwKKyIiIlwKK0NvdW50ZXIoeydzJzogNiwKKyAgICAgICAgICdlJzogNCwKKyAgICAgICAgICduJzogMiwKKyAgICAgICAgICdsJzogMX0pIiIiKQorCisgICAgZGVmIHRlc3RfY2hhaW5tYXAoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJDaGFpbk1hcCh7fSkiKQorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgaXRlbXMgPSBsaXN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoZGljdChpdGVtcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitDaGFpbk1hcCh7J2EnOiA2LAorICAgICAgICAgICdicm93bic6IDIsCisgICAgICAgICAgJ2RvZyc6IDgsCisgICAgICAgICAgJ2ZveCc6IDMsCisgICAgICAgICAgJ2p1bXBlZCc6IDQsCisgICAgICAgICAgJ2xhenknOiA3LAorICAgICAgICAgICdvdmVyJzogNSwKKyAgICAgICAgICAncXVpY2snOiAxLAorICAgICAgICAgICd0aGUnOiAwfSkiIiIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcChkaWN0KGl0ZW1zKSwgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoaXRlbXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorQ2hhaW5NYXAoeydhJzogNiwKKyAgICAgICAgICAnYnJvd24nOiAyLAorICAgICAgICAgICdkb2cnOiA4LAorICAgICAgICAgICdmb3gnOiAzLAorICAgICAgICAgICdqdW1wZWQnOiA0LAorICAgICAgICAgICdsYXp5JzogNywKKyAgICAgICAgICAnb3Zlcic6IDUsCisgICAgICAgICAgJ3F1aWNrJzogMSwKKyAgICAgICAgICAndGhlJzogMH0sCisgICAgICAgICBPcmRlcmVkRGljdChbKCd0aGUnLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ3F1aWNrJywgMSksCisgICAgICAgICAgICAgICAgICAgICAgKCdicm93bicsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICgnZm94JywgMyksCisgICAgICAgICAgICAgICAgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2RvZycsIDgpXSkpIiIiKQorCisgICAgZGVmIHRlc3RfZGVxdWUoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJkZXF1ZShbXSkiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVxdWUobWF4bGVuPTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJkZXF1ZShbXSwgbWF4bGVuPTcpIikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZXF1ZSh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK2RlcXVlKFsoJ3RoZScsIDApLAorICAgICAgICgncXVpY2snLCAxKSwKKyAgICAgICAoJ2Jyb3duJywgMiksCisgICAgICAgKCdmb3gnLCAzKSwKKyAgICAgICAoJ2p1bXBlZCcsIDQpLAorICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICgnYScsIDYpLAorICAgICAgICgnbGF6eScsIDcpLAorICAgICAgICgnZG9nJywgOCldKSIiIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlcXVlKHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpLCBtYXhsZW49NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK2RlcXVlKFsoJ2Jyb3duJywgMiksCisgICAgICAgKCdmb3gnLCAzKSwKKyAgICAgICAoJ2p1bXBlZCcsIDQpLAorICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICgnYScsIDYpLAorICAgICAgICgnbGF6eScsIDcpLAorICAgICAgICgnZG9nJywgOCldLAorICAgICAgbWF4bGVuPTcpIiIiKQorCisgICAgZGVmIHRlc3RfdXNlcl9kaWN0KHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlckRpY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAie30iKQorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJEaWN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAoreydhJzogNiwKKyAnYnJvd24nOiAyLAorICdkb2cnOiA4LAorICdmb3gnOiAzLAorICdqdW1wZWQnOiA0LAorICdsYXp5JzogNywKKyAnb3Zlcic6IDUsCisgJ3F1aWNrJzogMSwKKyAndGhlJzogMH0iIiIpCisKKyAgICBkZWYgdGVzdF91c2VyX2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyTGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICJbXSIpCisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlckxpc3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitbKCd0aGUnLCAwKSwKKyAoJ3F1aWNrJywgMSksCisgKCdicm93bicsIDIpLAorICgnZm94JywgMyksCisgKCdqdW1wZWQnLCA0KSwKKyAoJ292ZXInLCA1KSwKKyAoJ2EnLCA2KSwKKyAoJ2xhenknLCA3KSwKKyAoJ2RvZycsIDgpXSIiIikKKworICAgIGRlZiB0ZXN0X3VzZXJfc3RyaW5nKHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlclN0cmluZygnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgIicnIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJTdHJpbmcoJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MjApLAorIiIiXAorKCd0aGUgcXVpY2sgYnJvd24gJworICdmb3gganVtcGVkIG92ZXIgJworICdhIGxhenkgZG9nJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoezE6IGR9LCB3aWR0aD0yMCksCisiIiJcCit7MTogJ3RoZSBxdWljayAnCisgICAgJ2Jyb3duIGZveCAnCisgICAgJ2p1bXBlZCBvdmVyIGEgJworICAgICdsYXp5IGRvZyd9IiIiKQogCiAKIGNsYXNzIERvdHRlZFByZXR0eVByaW50ZXIocHByaW50LlByZXR0eVByaW50ZXIpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKaW5kZXggY2VlNzIwMy4uNWFkZGQzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CkBAIC0zLDcgKzMsNiBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogY2xhc3MgUHJvcGVydHlCYXNlKEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzcsNiArNzYsMTMgQEAKICAgICAgICAgIiIibmV3IGRvY3N0cmluZyIiIgogICAgICAgICByZXR1cm4gOAogCitjbGFzcyBQcm9wZXJ0eVdyaXRhYmxlRG9jKG9iamVjdCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3BhbShzZWxmKToKKyAgICAgICAgIiIiRWdncyIiIgorICAgICAgICByZXR1cm4gImVnZ3MiCisKIGNsYXNzIFByb3BlcnR5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Byb3BlcnR5X2RlY29yYXRvcl9iYXNlY2xhc3Moc2VsZik6CiAgICAgICAgICMgc2VlICMxNjIwCkBAIC0xNTEsNiArMTU3LDIxIEBACiAgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQogICAgICAgICAgICAgQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18KIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X2J1aWx0aW5fZG9jX3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBwID0gcHJvcGVydHkoZG9jPSdiYXNpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5fX2RvY19fLCAnYmFzaWMnKQorICAgICAgICBwLl9fZG9jX18gPSAnZXh0ZW5kZWQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5fX2RvY19fLCAnZXh0ZW5kZWQnKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKKyAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgZGVmIHRlc3RfcHJvcGVydHlfZGVjb3JhdG9yX2RvY193cml0YWJsZShzZWxmKToKKyAgICAgICAgc3ViID0gUHJvcGVydHlXcml0YWJsZURvYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICdFZ2dzJykKKyAgICAgICAgc3ViLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18gPSAnU3BhbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWIuX19jbGFzc19fLnNwYW0uX19kb2NfXywgJ1NwYW0nKQogCiAjIElzc3VlIDU4OTA6IHN1YmNsYXNzZXMgb2YgcHJvcGVydHkgZG8gbm90IHByZXNlcnZlIG1ldGhvZCBfX2RvY19fIHN0cmluZ3MKIGNsYXNzIFByb3BlcnR5U3ViKHByb3BlcnR5KToKQEAgLTI0Nyw4ICsyNjgsNSBAQAogCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQcm9wZXJ0eVRlc3RzLCBQcm9wZXJ0eVN1YmNsYXNzVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5IGIvTGliL3Rlc3QvdGVzdF9wc3RhdHMucHkKaW5kZXggOWViZWViYi4uNTY2YjNlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wc3RhdHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wc3RhdHMucHkKQEAgLTM0LDEyICszNCw1IEBACiAgICAgICAgIHN0YXRzLmFkZChzZWxmLnN0YXRzLCBzZWxmLnN0YXRzKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgQWRkQ2FsbGVyc1Rlc3RDYXNlLAotICAgICAgICBTdGF0c1Rlc3RDYXNlLAotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CmluZGV4IDg5MTY4NjEuLmVmNWU5OWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CkBAIC0xLDcgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZSwgcmVhcF9jaGlsZHJlbgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJlYXBfY2hpbGRyZW4KIAotI1NraXAgdGhlc2UgdGVzdHMgaWYgZWl0aGVyIGZjbnRsIG9yIHRlcm1pb3MgaXMgbm90IGF2YWlsYWJsZQotZmNudGwgPSBpbXBvcnRfbW9kdWxlKCdmY250bCcpCisjIFNraXAgdGhlc2UgdGVzdHMgaWYgdGVybWlvcyBpcyBub3QgYXZhaWxhYmxlCiBpbXBvcnRfbW9kdWxlKCd0ZXJtaW9zJykKIAogaW1wb3J0IGVycm5vCkBAIC04NCwxNiArODMsMTggQEAKICAgICAgICAgIyBpbiBtYXN0ZXJfb3BlbigpLCB3ZSBuZWVkIHRvIHJlYWQgdGhlIEVPRi4KIAogICAgICAgICAjIEVuc3VyZSB0aGUgZmQgaXMgbm9uLWJsb2NraW5nIGluIGNhc2UgdGhlcmUncyBub3RoaW5nIHRvIHJlYWQuCi0gICAgICAgIG9yaWdfZmxhZ3MgPSBmY250bC5mY250bChtYXN0ZXJfZmQsIGZjbnRsLkZfR0VURkwpCi0gICAgICAgIGZjbnRsLmZjbnRsKG1hc3Rlcl9mZCwgZmNudGwuRl9TRVRGTCwgb3JpZ19mbGFncyB8IG9zLk9fTk9OQkxPQ0spCisgICAgICAgIGJsb2NraW5nID0gb3MuZ2V0X2Jsb2NraW5nKG1hc3Rlcl9mZCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgczEgPSBvcy5yZWFkKG1hc3Rlcl9mZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzMSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUFHQUlOOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICMgUmVzdG9yZSB0aGUgb3JpZ2luYWwgZmxhZ3MuCi0gICAgICAgIGZjbnRsLmZjbnRsKG1hc3Rlcl9mZCwgZmNudGwuRl9TRVRGTCwgb3JpZ19mbGFncykKKyAgICAgICAgICAgIG9zLnNldF9ibG9ja2luZyhtYXN0ZXJfZmQsIEZhbHNlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHMxID0gb3MucmVhZChtYXN0ZXJfZmQsIDEwMjQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHMxKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVBR0FJTjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgUmVzdG9yZSB0aGUgb3JpZ2luYWwgZmxhZ3MuCisgICAgICAgICAgICBvcy5zZXRfYmxvY2tpbmcobWFzdGVyX2ZkLCBibG9ja2luZykKIAogICAgICAgICBkZWJ1ZygiV3JpdGluZyB0byBzbGF2ZV9mZCIpCiAgICAgICAgIG9zLndyaXRlKHNsYXZlX2ZkLCBURVNUX1NUUklOR18xKQpAQCAtMjkyLDExICsyOTMsOCBAQAogICAgICAgICAgICAgcHR5Ll9jb3B5KG1hc3RlcnNbMF0pCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHRyeToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KFNtYWxsUHR5VGVzdHMsIFB0eVRlc3QpCi0gICAgZmluYWxseToKLSAgICAgICAgcmVhcF9jaGlsZHJlbigpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICByZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CmluZGV4IGI4MWE1OTUuLjE5MzJjNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTYsNyArNiw3IEBACiBmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbAogZnJvbSB4bWwuZG9tIGltcG9ydCBwdWxsZG9tCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUKIAogCiB0c3RmaWxlID0gZmluZGZpbGUoInRlc3QueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCkBAIC0zMzksOSArMzM5LDUgQEAKICAgICAgICAgZG9jLnVubGluaygpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQdWxsRE9NVGVzdENhc2UsIFRob3JvdWdoVGVzdENhc2UsIFNBWDJET01UZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B3ZC5weSBiL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CmluZGV4IDM3YTFiY2IuLmI3YjFhNGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CkBAIC0xMDcsOCArMTA3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgMioqMTI4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcHdkLmdldHB3dWlkLCAtMioqMTI4KQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUHdkVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CmluZGV4IGMxZmQ0ZjYuLjRhNmNhYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKQEAgLTk4LDYgKzk4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cygKICAgICAgICAgICAgIGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGJhZF9jb2RpbmcpKSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID4gMCwgJ3Rlc3QgZG9lcyBub3Qgd29yayB3aXRoIC1PJykKICAgICBkZWYgdGVzdF9kb3VibGVfZG90X25vX2Nsb2JiZXIoc2VsZik6CiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyOTY2CiAgICAgICAgICMgcHlfY29tcGlsZSBmb28uYmFyLnB5IC0+IF9fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTM0LnB5YwpAQCAtMTE3LDYgKzExOCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoY2FjaGVfcGF0aCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocHljX3BhdGgpKQogCisgICAgZGVmIHRlc3Rfb3B0aW1pemF0aW9uX3BhdGgoc2VsZik6CisgICAgICAgICMgU3BlY2lmeWluZyBvcHRpbWl6ZWQgYnl0ZWNvZGUgc2hvdWxkIGxlYWQgdG8gYSBwYXRoIHJlZmxlY3RpbmcgdGhhdC4KKyAgICAgICAgc2VsZi5hc3NlcnRJbignb3B0LTInLCBweV9jb21waWxlLmNvbXBpbGUoc2VsZi5zb3VyY2VfcGF0aCwgb3B0aW1pemU9MikpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggMzllYjY1Zi4uY2FiNDMwYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTIsNyArMiw2IEBACiAgICBUZXN0IGNhc2VzIGZvciBweWNsYnIucHkKICAgIE5pY2sgTWF0aGV3c29uCiAnJycKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IEZ1bmN0aW9uVHlwZSwgTWV0aG9kVHlwZSwgQnVpbHRpbkZ1bmN0aW9uVHlwZQogaW1wb3J0IHB5Y2xicgpAQCAtMTczLDkgKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBweWNsYnIucmVhZG1vZHVsZV9leCwgJ2FzeW5jb3JlLmZvbycpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChQeWNsYnJUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IDBlOTkwYjYuLmVjNWMzMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBkaWZmbGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcHlkb2MKQEAgLTIyLDcgKzIxLDcgQEAKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAogICAgIFRFU1RGTiwgcm10cmVlLAogICAgIHJlYXBfY2hpbGRyZW4sIHJlYXBfdGhyZWFkcywgY2FwdHVyZWRfb3V0cHV0LCBjYXB0dXJlZF9zdGRvdXQsCkBAIC0yNTcsNyArMjU2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGV4cGVjdGVkX2RhdGFfZG9jc3RyaW5ncykKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbWlzc2luZyBtb2R1bGUKLW1pc3NpbmdfcGF0dGVybiA9ICJubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJyVzJyIKK21pc3NpbmdfcGF0dGVybiA9ICcnJ1wKK05vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlci4KK1VzZSBoZWxwKCkgdG8gZ2V0IHRoZSBpbnRlcmFjdGl2ZSBoZWxwIHV0aWxpdHkuCitVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnLnJlcGxhY2UoJ1xuJywgb3MubGluZXNlcCkKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKIGJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgpAQCAtMzY0LDE1ICszNjYsNiBAQAogICAgIG91dHB1dCA9IHBhdHQuc3ViKCcnLCBvdXRwdXQpCiAgICAgcmV0dXJuIG91dHB1dC5zdHJpcCgpLCBsb2MKIAotZGVmIHByaW50X2RpZmZzKHRleHQxLCB0ZXh0Mik6Ci0gICAgIlByaW50cyB1bmlmaWVkIGRpZmZzIGZvciB0d28gdGV4dHMiCi0gICAgIyBYWFggbm93IG9ic29sZXRlLCB1c2UgdW5pdHRlc3QgYnVpbHQtaW4gc3VwcG9ydAotICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKLSAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCi0gICAgZGlmZnMgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihsaW5lczEsIGxpbmVzMiwgbj0wLCBmcm9tZmlsZT0nZXhwZWN0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9maWxlPSdnb3QnKQotICAgIHByaW50KCdcbicgKyAnJy5qb2luKGRpZmZzKSkKLQogZGVmIGdldF9odG1sX3RpdGxlKHRleHQpOgogICAgICMgQml0IG9mIGhhY2ssIGJ1dCBnb29kIGVub3VnaCBmb3IgdGVzdCBwdXJwb3NlcwogICAgIGhlYWRlciwgXywgXyA9IHRleHQucGFydGl0aW9uKCI8L2hlYWQ+IikKQEAgLTQxOCw5ICs0MTEsNyBAQAogICAgICAgICBleHBlY3RlZF9odG1sID0gZXhwZWN0ZWRfaHRtbF9wYXR0ZXJuICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgKG1vZF91cmwsIG1vZF9maWxlLCBkb2NfbG9jKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9odG1sX2RhdGFfZG9jc3RyaW5ncykKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX2h0bWw6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF9odG1sLCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRfaHRtbCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQpAQCAtNDMzLDkgKzQyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jX2xvYywpICsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHRfZGF0YV9kb2NzdHJpbmdzICsKICAgICAgICAgICAgICAgICAgICAgICAgIChpbnNwZWN0LmdldGFic2ZpbGUocHlkb2NfbW9kKSwpKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3RfdGV4dF9lbnVtX21lbWJlcl93aXRoX3ZhbHVlX3plcm8oc2VsZik6CiAgICAgICAgICMgVGVzdCBpc3N1ZSAjMjA2NTQgdG8gZW5zdXJlIGVudW0gbWVtYmVyIHdpdGggdmFsdWUgMCBjYW4gYmUKQEAgLTkzMSw5ICs5MjAsNyBAQAogICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfZHluYW1pY2F0dHJpYnV0ZV9wYXR0ZXJuICUgKAogICAgICAgICAgICAgICAgIChfX25hbWVfXywpICsgZXhwZWN0ZWRfdGV4dF9kYXRhX2RvY3N0cmluZ3NbOjJdKQogICAgICAgICByZXN1bHQgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF90ZXh0OgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCByZXN1bHQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKQEAgLTk1NCw5ICs5NDEsNyBAQAogICAgICAgICBoZWxwZXIoQ2xhc3MpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF92aXJ0dWFsYXR0cmlidXRlX3BhdHRlcm4xICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0ID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCkBAIC05OTYsMTkgKzk4MSwxMyBAQAogICAgICAgICBoZWxwZXIoQ2xhc3MxKQogICAgICAgICBleHBlY3RlZF90ZXh0MSA9IGV4cGVjdGVkX3ZpcnR1YWxhdHRyaWJ1dGVfcGF0dGVybjIgJSBfX25hbWVfXwogICAgICAgICByZXN1bHQxID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQxICE9IGV4cGVjdGVkX3RleHQxOgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dDEsIHJlc3VsdDEpCi0gICAgICAgICAgICBmYWlsMSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0MSwgcmVzdWx0MSkKICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQogICAgICAgICBoZWxwZXIgPSBweWRvYy5IZWxwZXIob3V0cHV0PW91dHB1dCkKICAgICAgICAgaGVscGVyKENsYXNzMikKICAgICAgICAgZXhwZWN0ZWRfdGV4dDIgPSBleHBlY3RlZF92aXJ0dWFsYXR0cmlidXRlX3BhdHRlcm4zICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0MiA9IG91dHB1dC5nZXR2YWx1ZSgpLnN0cmlwKCkKLSAgICAgICAgaWYgcmVzdWx0MiAhPSBleHBlY3RlZF90ZXh0MjoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQyLCByZXN1bHQyKQotICAgICAgICAgICAgZmFpbDIgPSBUcnVlCi0gICAgICAgIGlmIGZhaWwxIG9yIGZhaWwyOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0MiwgcmVzdWx0MikKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQpAQCAtMTAyNSw5ICsxMDA0LDcgQEAKICAgICAgICAgaGVscGVyKEMpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF9taXNzaW5nYXR0cmlidXRlX3BhdHRlcm4gJSBfX25hbWVfXwogICAgICAgICByZXN1bHQgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF90ZXh0OgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCByZXN1bHQpCiAKICAgICBkZWYgdGVzdF9yZXNvbHZlX2ZhbHNlKHNlbGYpOgogICAgICAgICAjIElzc3VlICMyMzAwODogcHlkb2MgZW51bS57LEludH1FbnVtIGZhaWxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWV4cGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9weWV4cGF0LnB5CmluZGV4IDIxNmE0NmIuLjU1MGFlYmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkKQEAgLTExLDcgKzExLDcgQEAKIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiBmcm9tIHhtbC5wYXJzZXJzLmV4cGF0IGltcG9ydCBlcnJvcnMKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNvcnRkaWN0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzb3J0ZGljdAogCiAKIGNsYXNzIFNldEF0dHJpYnV0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzM3LDE5ICs3MzcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXJfY2FsbF9hcmdzLCBbKCJiYXIiLCAiYmF6IildKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoU2V0QXR0cmlidXRlVGVzdCwKLSAgICAgICAgICAgICAgICAgUGFyc2VUZXN0LAotICAgICAgICAgICAgICAgICBOYW1lc3BhY2VTZXBhcmF0b3JUZXN0LAotICAgICAgICAgICAgICAgICBJbnRlcm5pbmdUZXN0LAotICAgICAgICAgICAgICAgICBCdWZmZXJUZXh0VGVzdCwKLSAgICAgICAgICAgICAgICAgSGFuZGxlckV4Y2VwdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgIFBvc2l0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgc2YxMjk2NDMzVGVzdCwKLSAgICAgICAgICAgICAgICAgQ2hhcmRhdGFCdWZmZXJUZXN0LAotICAgICAgICAgICAgICAgICBNYWxmb3JtZWRJbnB1dFRlc3QsCi0gICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZVRlc3QsCi0gICAgICAgICAgICAgICAgIEZvcmVpZ25EVERUZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9xdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfcXVldWUucHkKaW5kZXggMmNkZmVlNC4uNGNjYWEzOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3F1ZXVlLnB5CkBAIC0zNTQsMTAgKzM1NCw1IEBACiAgICAgICAgIHNlbGYuZmFpbGluZ19xdWV1ZV90ZXN0KHEpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFF1ZXVlVGVzdCwgTGlmb1F1ZXVlVGVzdCwgUHJpb3JpdHlRdWV1ZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWlsaW5nUXVldWVUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5IGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKaW5kZXggOTI1MTFmYS4uN2NhYzAxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgc3lzLCBvcywgaW8sIHN1YnByb2Nlc3MKQEAgLTIwNyw5ICsyMDYsNSBAQAogICAgICAgICBwID0gcC5kZWNvZGUoJ2xhdGluLTEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdXQuc3BsaXRsaW5lcygpLCBwLnNwbGl0bGluZXMoKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFF1b3ByaVRlc3RDYXNlKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CmluZGV4IGJlNWMxYzYuLmE0MWIzNTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQpAQCAtNDE1LDggKzQxNSw1IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIGV4Y2VwdGlvbiByYWlzZWQiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CmluZGV4IDJkYmNlYmMuLjEwNmM3MzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQpAQCAtNjQ3LDggKzY0Nyw1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgogICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0ZXAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoUmFuZ2VUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCA3MzQ4YWYzLi43YTc0MTQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTM4LDYgKzM4LDI0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGFjdHVhbCksIHR5cGUoZXhwZWN0KSwgbXNnKQogICAgICAgICByZWN1cnNlKGFjdHVhbCwgZXhwZWN0KQogCisgICAgZGVmIGNoZWNrUGF0dGVybkVycm9yKHNlbGYsIHBhdHRlcm4sIGVycm1zZywgcG9zPU5vbmUpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUocGF0dGVybikKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGF0dGVybj1wYXR0ZXJuKToKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBlcnJtc2cpCisgICAgICAgICAgICBpZiBwb3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBwb3MpCisKKyAgICBkZWYgY2hlY2tUZW1wbGF0ZUVycm9yKHNlbGYsIHBhdHRlcm4sIHJlcGwsIHN0cmluZywgZXJybXNnLCBwb3M9Tm9uZSk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuc3ViKHBhdHRlcm4sIHJlcGwsIHN0cmluZykKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGF0dGVybj1wYXR0ZXJuLCByZXBsPXJlcGwpOgorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csIGVycm1zZykKKyAgICAgICAgICAgIGlmIHBvcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIHBvcykKKwogICAgIGRlZiB0ZXN0X2tlZXBfYnVmZmVyKHNlbGYpOgogICAgICAgICAjIFNlZSBidWcgMTQyMTIKICAgICAgICAgYiA9IGJ5dGVhcnJheShiJ3gnKQpAQCAtODQsNyArMTAyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAneCB4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocidcZCsnLCBzZWxmLmJ1bXBfbnVtLCAnMDguMiAtMiAyM3g5OXknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnOS4zIC0zIDI0eDEwMHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ1xkKycsIHNlbGYuYnVtcF9udW0sICcwOC4yIC0yIDIzeDk5eScsIDMpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ1xkKycsIHNlbGYuYnVtcF9udW0sICcwOC4yIC0yIDIzeDk5eScsIGNvdW50PTMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc5LjMgLTMgMjN4OTl5JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignLicsIGxhbWJkYSBtOiByIlxuIiwgJ3gnKSwgJ1xcbicpCkBAIC0xMDAsMTEgKzExOCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJyxyJ1x0XG5cdlxyXGZcYVxiXEJcWlxhXEFcd1xXXHNcU1xkXEQnLCdhJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1x0XG5cdlxyXGZcYVxiXFxCXFxaXGFcXEFcXHdcXFdcXHNcXFNcXGRcXEQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGEnLCAnYScpLCAnXHRcblx2XHJcZlxhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhJywgJ2EnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCByJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGFcYicsICdhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNocig5KStjaHIoMTApK2NocigxMSkrY2hyKDEzKStjaHIoMTIpK2Nocig3KStjaHIoOCkpKQorICAgICAgICBmb3IgYyBpbiAnY2RlaGlqa2xtb3Bxc3V3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1xcJyArIGMsICdhJyksICdcXCcgKyBjKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdeXHMqJywgJ1gnLCAndGVzdCcpLCAnWHRlc3QnKQogCkBAIC0xNDUsNiArMTY2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wwMDknLCAneCcpLCAnXDAnICsgJzknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDExMScsICd4JyksICdcMTExJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wxMTcnLCAneCcpLCAnXDExNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMzc3JywgJ3gnKSwgJ1wzNzcnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMTExMScsICd4JyksICdcMTExMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMTExMScsICd4JyksICdcMTExJyArICcxJykKQEAgLTE1NSwyMSArMTc3LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMDknLCAneCcpLCAnXDAnICsgJzknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDBhJywgJ3gnKSwgJ1wwJyArICdhJykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDQwMCcsICd4JyksICdcMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcNzc3JywgJ3gnKSwgJ1wzNzcnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDQwMCcsICd4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDQwMCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w3NzcnLCAneCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw3Nzcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDgnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcOScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxMScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxOCcsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxYScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w5MCcsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w5OScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxMTgnLCAneCcpICMgcidcMTEnICsgJzgnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMTFhJywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDE4MScsICd4JykgIyByJ1wxOCcgKyAnMScKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w4MDAnLCAneCcpICMgcidcODAnICsgJzAnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOTknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDExJyArICc4JworICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxODEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcMTgnICsgJzEnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcODAwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDgwJyArICcwJwogCiAgICAgICAgICMgaW4gcHl0aG9uMi4zIChldGMpLCB0aGVzZSBsb29wIGVuZGxlc3NseSBpbiBzcmVfcGFyc2VyLnB5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoKCgoKCgoKCgoKHgpKSkpKSkpKSkpKScsIHInXDExJywgJ3gnKSwgJ3gnKQpAQCAtMTgwLDcgKzIwNiw3IEBACiAKICAgICBkZWYgdGVzdF9xdWFsaWZpZWRfcmVfc3ViKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdiJywgJ2FhYWFhJyksICdiYmJiYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ2InLCAnYWFhYWEnLCAxKSwgJ2JhYWFhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnYicsICdhYWFhYScsIGNvdW50PTEpLCAnYmFhYWEnKQogCiAgICAgZGVmIHRlc3RfYnVnXzExNDY2MChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocicoXFMpXHMrKFxTKScsIHInXDEgXDInLCAnaGVsbG8gIHRoZXJlJyksCkBAIC0xOTQsNzUgKzIyMCwxMDUgQEAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19ncm91cHMoc2VsZik6CiAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCiAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPGE+KSg/UDxhPiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UHgpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPTEpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9YSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD1hMSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD1hLiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDwpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8PiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDwxPiknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDxhLj4pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPygpKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD8oYSkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPygxYSkpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoPyhhLikpJykKKyAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpXDEoPygxKXkpJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UDxhPiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgZ3JvdXAgbmFtZSAnYScgYXMgZ3JvdXAgMjsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZ3JvdXAgMSIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPig/UD1hKSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsIDEwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8KScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPD4pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8MT4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGEuPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygpKScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oYSkpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oLTEpKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJy0xJyIsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygxYSkpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMWEnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KGEuKSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDzCtT54KSg/UD3CtSkoPyjCtSl5KScpCiAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDzwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiPngpKD9QPfCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIpKD8o8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoil5KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPMKpPngpJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPMKpPngpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnwqknIiwgNCkKKyAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KKyAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQorICAgICAgICBwYXQgPSAnKD86JXMpKD8oMjAwKXp8dCknICUgcGF0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocGF0LCAneGM4eXonKS5zcGFuKCksICgwLCA1KSkKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX3JlZnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzxhJywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPCcsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZycsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzxhIGE+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPD4nLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8MWExPicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KXwoP1A8Yj55KScsICdcZzxiPicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KXwoP1A8Yj55KScsICdcXDInLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8LTE+JywgJ3h4JykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEnLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwnLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhIGE+JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYSBhJyIsIDMpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzw+JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwxYTE+JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMWExJyIsIDMpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8Mj4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1wyJywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2FiJyIpOgorICAgICAgICAgICAgcmUuc3ViKCcoP1A8YT54KScsICdcZzxhYj4nLCAneHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1xnPGI+JywgJ3h4JyksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1wyJywgJ3h4JyksICcnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8LTE+JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnLTEnIiwgMykKICAgICAgICAgIyBOZXcgdmFsaWQvaW52YWxpZCBpZGVudGlmaWVycyBpbiBQeXRob24gMwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPMK1PngpJywgcidcZzzCtT4nLCAneHgnKSwgJ3h4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDzwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiPngpJywgcidcZzzwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiPicsICd4eCcpLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCByJ1xnPMKpPicsICd4eCcpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzzCqT4nLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICfCqSciLCAzKQorICAgICAgICAjIFN1cHBvcnQgPiAxMDAgZ3JvdXBzLgorICAgICAgICBwYXQgPSAnfCcuam9pbigneCg/UDxhJWQ+JXgpeScgJSAoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMSwgMjAwICsgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHBhdCwgJ1xnPDIwMD4nLCAneGM4eXp4Yzh5JyksICdjOHpjOCcpCiAKICAgICBkZWYgdGVzdF9yZV9zdWJuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAoJ3ggeCcsIDIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIrIiwgIngiLCAiYmJiYiBCQkJCIiksICgneCBCQkJCJywgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiYisiLCAieCIsICJ4eXoiKSwgKCd4eXonLCAwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKiIsICJ4IiwgInh5eiIpLCAoJ3h4eHl4engnLCA0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKiIsICJ4IiwgInh5eiIsIDIpLCAoJ3h4eHl6JywgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiYioiLCAieCIsICJ4eXoiLCBjb3VudD0yKSwgKCd4eHh5eicsIDIpKQogCiAgICAgZGVmIHRlc3RfcmVfc3BsaXQoc2VsZik6CiAgICAgICAgIGZvciBzdHJpbmcgaW4gIjphOmI6OmMiLCBTKCI6YTpiOjpjIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIjoiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJ2EnLCAnYicsICcnLCAnYyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KCI6KiIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIjorIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICdhJywgJ2InLCAnYyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KCIoOiopIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiKDorKSIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6OicsICdjJ10pCiAgICAgICAgIGZvciBzdHJpbmcgaW4gKGIiOmE6Yjo6YyIsIEIoYiI6YTpiOjpjIiksIGJ5dGVhcnJheShiIjphOmI6OmMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyhiIjphOmI6OmMiKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiI6Iiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYicnLCBiJ2EnLCBiJ2InLCBiJycsIGInYyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KGIiOioiLCBzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KGIiOisiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiJycsIGInYScsIGInYicsIGInYyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KGIiKDoqKSIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoYiIoOispIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYicnLCBiJzonLCBiJ2EnLCBiJzonLCBiJ2InLCBiJzo6JywgYidjJ10pCiAgICAgICAgIGZvciBhLCBiLCBjIGluICgiXHhlMFx4ZGZceGU3IiwgIlx1MDQzMFx1MDQzMVx1MDQzMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxZDQ5Y1xVMDAwMWQ0OWVcVTAwMDFkNGI1Iik6CiAgICAgICAgICAgICBzdHJpbmcgPSAiOiVzOiVzOjolcyIgJSAoYSwgYiwgYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoiLCBzdHJpbmcpLCBbJycsIGEsIGIsICcnLCBjXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoqIiwgc3RyaW5nKSwgWycnLCBhLCBiLCBjXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KikiLCBzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOisiLCBzdHJpbmcpLCBbJycsIGEsIGIsIGNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDorKSIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCBhLCAnOicsIGIsICc6OicsIGNdKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig/OjoqKSIsICI6YTpiOjpjIiksIFsnJywgJ2EnLCAnYicsICdjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KSoiLCAiOmE6Yjo6YyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoPzo6KykiLCAiOmE6Yjo6YyIpLCBbJycsICdhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikrIiwgIjphOmI6OmMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiJywgJzonLCAnYyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoW2I6XSspIiwgIjphOmI6OmMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOmI6OicsICdjJ10pCkBAIC0yNzIsMTMgKzMyOCwzNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoPzpiKXwoPzo6KykiLCAiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJ2EnLCAnJywgJycsICdjJ10pCiAKKyAgICAgICAgZm9yIHNlcCwgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCc6KicsIFsnJywgJ2EnLCAnYicsICdjJ10pLAorICAgICAgICAgICAgKCcoPzo6KiknLCBbJycsICdhJywgJ2InLCAnYyddKSwKKyAgICAgICAgICAgICgnKDoqKScsIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOjonLCAnYyddKSwKKyAgICAgICAgICAgICgnKDopKicsIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOicsICdjJ10pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2VwPXNlcCksIHNlbGYuYXNzZXJ0V2FybnMoRnV0dXJlV2FybmluZyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KHNlcCwgJzphOmI6OmMnKSwgZXhwZWN0ZWQpCisKKyAgICAgICAgZm9yIHNlcCwgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCcnLCBbJzphOmI6OmMnXSksCisgICAgICAgICAgICAocidcYicsIFsnOmE6Yjo6YyddKSwKKyAgICAgICAgICAgIChyJyg/PTopJywgWyc6YTpiOjpjJ10pLAorICAgICAgICAgICAgKHInKD88PTopJywgWyc6YTpiOjpjJ10pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2VwPXNlcCksIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChzZXAsICc6YTpiOjpjJyksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfcXVhbGlmaWVkX3JlX3NwbGl0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6IiwgIjphOmI6OmMiLCAyKSwgWycnLCAnYScsICdiOjpjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoJzonLCAnYTpiOmM6ZCcsIDIpLCBbJ2EnLCAnYicsICdjOmQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDopIiwgIjphOmI6OmMiLCAyKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOiIsICI6YTpiOjpjIiwgbWF4c3BsaXQ9MiksIFsnJywgJ2EnLCAnYjo6YyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCc6JywgJ2E6YjpjOmQnLCBtYXhzcGxpdD0yKSwgWydhJywgJ2InLCAnYzpkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KSIsICI6YTpiOjpjIiwgbWF4c3BsaXQ9MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzonLCAnYjo6YyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOiopIiwgIjphOmI6OmMiLCAyKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDorKSIsICI6YTpiOjpjIiwgbWF4c3BsaXQ9MiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzonLCAnYjo6YyddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRnV0dXJlV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOiopIiwgIjphOmI6OmMiLCBtYXhzcGxpdD0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzonLCAnYjo6YyddKQogCiAgICAgZGVmIHRlc3RfcmVfZmluZGFsbChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKCI6KyIsICJhYmMiKSwgW10pCkBAIC00MDUsNiArNDgyLDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHAubWF0Y2goJ2FiZCcpKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwLm1hdGNoKCdhYycpKQogCisgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCisgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKKyAgICAgICAgcGF0ID0gJyg/OiVzKSg/KDIwMCl6KScgJSBwYXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChwYXQsICd4Yzh5eicpLnNwYW4oKSwgKDAsIDUpKQorCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oMCkpJywgJ2JhZCBncm91cCBudW1iZXInLCAxMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJygpKD8oMSlhfGInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJygpKD8oMSlhfGJ8YyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25hbCBiYWNrcmVmIHdpdGggbW9yZSB0aGFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHdvIGJyYW5jaGVzJywgMTApCisKKyAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgJ1xnPCVzPicgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPyglZCkpJyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDEwKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWYoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKFx8KT8oW14oKV0rKVwxJCcsICd8YXwnKS5ncm91cHMoKSwKQEAgLTQxOCw2ICs1MTIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKShcMSk/JCcsICdjJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpKQogCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoYWJjXDEpJywgJ2Nhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwJywgNCkKKwogICAgIGRlZiB0ZXN0X2dyb3VwZGljdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnKD9QPGZpcnN0PmZpcnN0KSAoP1A8c2Vjb25kPnNlY29uZCknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnKS5ncm91cGRpY3QoKSwKQEAgLTQyOCw2ICs1MjQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlyc3Qgc2Vjb25kIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXhwYW5kKHIiXDIgXDEgXGc8c2Vjb25kPiBcZzxmaXJzdD4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vjb25kIGZpcnN0IHNlY29uZCBmaXJzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIig/UDxmaXJzdD5maXJzdCl8KD9QPHNlY29uZD5zZWNvbmQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlyc3QiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5leHBhbmQociJcMiBcZzxzZWNvbmQ+IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKQogCiAgICAgZGVmIHRlc3RfcmVwZWF0X21pbm1heChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9JCIsICJhYmMiKSkKQEAgLTQ1MSw2ICs1NTEsNyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7M30kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsM30kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0kIiwgInh4eCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsNH0/JCIsICJ4eHgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfT8kIiwgInh4eCIpKQpAQCAtNDYxLDYgKzU2Miw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHt9JCIsICJ4eHgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHt9JCIsICJ4e30iKSkKIAorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIneHsyLDF9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWluIHJlcGVhdCBncmVhdGVyIHRoYW4gbWF4IHJlcGVhdCcsIDIpCisKICAgICBkZWYgdGVzdF9nZXRhdHRyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmNvbXBpbGUoIig/aSkoYSkoYikiKS5wYXR0ZXJuLCAiKD9pKShhKShiKSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuY29tcGlsZSgiKD9pKShhKShiKSIpLmZsYWdzLCByZS5JIHwgcmUuVSkKQEAgLTQ3NSw2ICs1NzksMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEpIiwgImEiKS5yZWdzLCAoKDAsIDEpLCAoMCwgMSkpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIihhKSIsICJhIikucmUpCiAKKyAgICAgICAgIyBJc3N1ZSAxNDI2MC4gZ3JvdXBpbmRleCBzaG91bGQgYmUgbm9uLW1vZGlmaWFibGUgbWFwcGluZy4KKyAgICAgICAgcCA9IHJlLmNvbXBpbGUocicoP2kpKD9QPGZpcnN0PmEpKD9QPG90aGVyPmIpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQocC5ncm91cGluZGV4KSwgWydmaXJzdCcsICdvdGhlciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZ3JvdXBpbmRleFsnb3RoZXInXSwgMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcC5ncm91cGluZGV4WydvdGhlciddID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZ3JvdXBpbmRleFsnb3RoZXInXSwgMikKKwogICAgIGRlZiB0ZXN0X3NwZWNpYWxfZXNjYXBlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcYihiLilcYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNkIGFiYyBiY2QgYngiKS5ncm91cCgxKSwgImJ4IikKQEAgLTQ4NCwxMCArNTk2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY2QgYWJjIGJjZCBieCIsIHJlLkFTQ0lJKS5ncm91cCgxKSwgImJ4IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcQihiLilcQiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMgYmNkIGJjIGFieGQiLCByZS5BU0NJSSkuZ3JvdXAoMSksICJieCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXGIoYi4pXGIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjZCBhYmMgYmNkIGJ4IiwgcmUuTE9DQUxFKS5ncm91cCgxKSwgImJ4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcQihiLilcQiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmMgYmNkIGJjIGFieGQiLCByZS5MT0NBTEUpLmdyb3VwKDEpLCAiYngiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIl5hYmMkIiwgIlxuYWJjXG4iLCByZS5NKS5ncm91cCgwKSwgImFiYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXlxBYWJjXFokIiwgImFiYyIsIHJlLk0pLmdyb3VwKDApLCAiYWJjIikKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUuc2VhcmNoKHIiXlxBYWJjXFokIiwgIlxuYWJjXG4iLCByZS5NKSkKQEAgLTUwOCwxMSArNjE2LDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiMWFhISBhIikuZ3JvdXAoMCksIGIiMWFhISBhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcZFxEXHdcV1xzXFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWFhISBhIiwgcmUuQVNDSUkpLmdyb3VwKDApLCAiMWFhISBhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcZFxEXHdcV1xzXFMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWFhISBhIiwgcmUuTE9DQUxFKS5ncm91cCgwKSwgIjFhYSEgYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKGJyIlxkXERcd1xXXHNcUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiMWFhISBhIiwgcmUuTE9DQUxFKS5ncm91cCgwKSwgYiIxYWEhIGEiKQogCisgICAgZGVmIHRlc3Rfb3RoZXJfZXNjYXBlcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcigiXFwiLCAnYmFkIGVzY2FwZSAoZW5kIG9mIHBhdHRlcm4pJywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIlwoIiwgJygnKS5ncm91cCgpLCAnKCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXCgiLCAnKScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXFwiLCAnXFwnKS5ncm91cCgpLCAnXFwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiW1xdXSIsICddJykuZ3JvdXAoKSwgJ10nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIltcXV0iLCAnWycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiW2FcLWNdIiwgJy0nKS5ncm91cCgpLCAnLScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiW2FcLWNdIiwgJ2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIltcXmFdKyIsICdhXicpLmdyb3VwKCksICdhXicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiW1xeYV0rIiwgJ2InKSkKKyAgICAgICAgcmUucHVyZ2UoKSAgIyBmb3Igd2FybmluZ3MKKyAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6Q0VGR0hJSktMTU5PUFFSVFZYWSc6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1xcJWMnICUgYywgYykuZ3JvdXAoKSwgYykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1xcJWMnICUgYywgJ2EnKSkKKyAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6QUJDRUZHSElKS0xNTk9QUVJUVlhZWic6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1tcXCVjXScgJSBjLCBjKS5ncm91cCgpLCBjKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnW1xcJWNdJyAlIGMsICdhJykpCisKICAgICBkZWYgdGVzdF9zdHJpbmdfYm91bmRhcmllcyhzZWxmKToKICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwNzEzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXGIoYWJjKVxiIiwgImFiYyIpLmdyb3VwKDEpLApAQCAtNTc0LDkgKzcwMyw2IEBACiAgICAgICAgICMgR3JvdXAgcmVmZXJlbmNlLgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoYSliKD89XDEpYScsICdhYmEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSliKD89XDEpYycsICdhYmFjJykpCi0gICAgICAgICMgTmFtZWQgZ3JvdXAgcmVmZXJlbmNlLgotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP1A8Zz5hKWIoPz0oP1A9ZykpYScsICdhYmEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP1A8Zz5hKWIoPz0oP1A9ZykpYycsICdhYmFjJykpCiAgICAgICAgICMgQ29uZGl0aW9uYWwgZ3JvdXAgcmVmZXJlbmNlLgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPz0oPygyKXh8YykpYycsICdhYmMnKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPz0oPygyKWN8eCkpYycsICdhYmMnKSkKQEAgLTU5NCwxMyArNzIwLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInYWIoPzwhYiljJywgJ2FiYycpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocidhYig/PCFjKWMnLCAnYWJjJykpCiAgICAgICAgICMgR3JvdXAgcmVmZXJlbmNlLgotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCByZS5jb21waWxlLCByJyhhKWEoPzw9XDEpYycpCi0gICAgICAgICMgTmFtZWQgZ3JvdXAgcmVmZXJlbmNlLgotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCByZS5jb21waWxlLCByJyg/UDxnPmEpYSg/PD0oP1A9ZykpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyhhKWEoPzw9XDEpYycsICdhYWMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSliKD88PVwxKWEnLCAnYWJhYScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKWEoPzwhXDEpYycsICdhYWMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKGEpYig/PCFcMSlhJywgJ2FiYWEnKSkKICAgICAgICAgIyBDb25kaXRpb25hbCBncm91cCByZWZlcmVuY2UuCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oPygxKWJ8eCkpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDIpeHxjKSljJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PD0oPygyKWJ8eCkpYycsICdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDIpeHxiKSljJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PD0oPygxKWN8eCkpYycsICdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD88PSg/KDEpYnx4KSljJywgJ2FiYycpKQogICAgICAgICAjIEdyb3VwIHVzZWQgYmVmb3JlIGRlZmluZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oPygyKWJ8eCkpKGMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oPygyKWJ8eCkpKGMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSliKD88PSg/KDEpY3x4KSkoYyknLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyhhKWIoPzw9KD8oMSlifHgpKShjKScsICdhYmMnKSkKKyAgICAgICAgIyBHcm91cCBkZWZpbmVkIGluIHRoZSBzYW1lIGxvb2tiZWhpbmQgcGF0dGVybgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PSguKVwyKShjKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCByJyhhKWIoPzw9KD9QPGE+LikoP1A9YSkpKGMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oYSkoPygyKWJ8eCkpKGMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oLikoPzw9XDIpKShjKScpCiAKICAgICBkZWYgdGVzdF9pZ25vcmVfY2FzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiYWJjIiwgIkFCQyIsIHJlLkkpLmdyb3VwKDApLCAiQUJDIikKQEAgLTY5Miw5ICs4MzAsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfc3JlLmdldGxvd2VyKG9yZCgnQScpLCAwKSwgb3JkKCdhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3NyZS5nZXRsb3dlcihvcmQoJ0EnKSwgcmUuTE9DQUxFKSwgb3JkKCdhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3NyZS5nZXRsb3dlcihvcmQoJ0EnKSwgcmUuVU5JQ09ERSksIG9yZCgnYScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zcmUuZ2V0bG93ZXIob3JkKCdBJyksIHJlLkFTQ0lJKSwgb3JkKCdhJykpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiYWJjIiwgIkFCQyIsIHJlLkkpLmdyb3VwKDApLCAiQUJDIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChiImFiYyIsIGIiQUJDIiwgcmUuSSkuZ3JvdXAoMCksIGIiQUJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiYWJjIiwgIkFCQyIsIHJlLkl8cmUuQSkuZ3JvdXAoMCksICJBQkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKGIiYWJjIiwgYiJBQkMiLCByZS5JfHJlLkwpLmdyb3VwKDApLCBiIkFCQyIpCiAKICAgICBkZWYgdGVzdF9ub3RfbGl0ZXJhbChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKFteYV0pIiwgIiBiIikuZ3JvdXAoMSksICJiIikKQEAgLTc3OSw4ICs5MjAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5YLCByZS5WRVJCT1NFKQogCiAgICAgZGVmIHRlc3RfZmxhZ3Moc2VsZik6Ci0gICAgICAgIGZvciBmbGFnIGluIFtyZS5JLCByZS5NLCByZS5YLCByZS5TLCByZS5MXToKKyAgICAgICAgZm9yIGZsYWcgaW4gW3JlLkksIHJlLk0sIHJlLlgsIHJlLlMsIHJlLkEsIHJlLlVdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLmNvbXBpbGUoJ15wYXR0ZXJuJCcsIGZsYWcpKQorICAgICAgICBmb3IgZmxhZyBpbiBbcmUuSSwgcmUuTSwgcmUuWCwgcmUuUywgcmUuQSwgcmUuTF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuY29tcGlsZShiJ15wYXR0ZXJuJCcsIGZsYWcpKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CkBAIC04MDIsMTUgKzk0NSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJcMDgiLCAiXDAwMDgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXDAxIiwgIlwwMDEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXDAxOCIsICJcMDAxOCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJcNTY3IiwgY2hyKDBvMTY3KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcOTExIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJceDEiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MXoiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcdTEyM3oiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAwMTIzNCIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0eiIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDExMDAwMCIsICIiKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDU2NyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJceDEiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJceDF6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHUxMjMiLCByJ2luY29tcGxldGUgZXNjYXBlIFx1MTIzJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx1MTIzeiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXFUwMDAxMjM0IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcVTAwMDEyMzQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXFUwMDAxMjM0eiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXFUwMDAxMjM0JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlxVMDAxMTAwMDAiLCByJ2JhZCBlc2NhcGUgXFUwMDExMDAwMCcsIDApCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2NsYXNzX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKQEAgLTgzMCwxMiArOTc1LDE1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJbXFUlMDh4XSIgJSBpLCBjaHIoaSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiW1xVJTA4eDBdIiAlIGksIGNocihpKSsiMCIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiW1xVJTA4eHpdIiAlIGksIGNocihpKSsieiIpKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1w1NjddIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXDkxMV0iLCByJ2JhZCBlc2NhcGUgXDknLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1x4MXpdIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1x1MTIzel0iLCByJ2luY29tcGxldGUgZXNjYXBlIFx1MTIzJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcVTAwMDEyMzR6XSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXFUwMDAxMjM0JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcVTAwMTEwMDAwXSIsIHInYmFkIGVzY2FwZSBcVTAwMTEwMDAwJywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiW1xVMDAwMWQ0OWMtXFUwMDAxZDRiNV0iLCAiXFUwMDAxZDQ5ZSIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1w5MTFdIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXHgxel0iLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcdTEyM3pdIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXFUwMDAxMjM0el0iLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMTEwMDAwXSIsICIiKQogCiAgICAgZGVmIHRlc3Rfc3JlX2J5dGVfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKQEAgLTg0NSwxNiArOTkzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngwIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeHoiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiJ6IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcdSIsIGIndScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXFUiLCBiJ1UnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXHUxMjM0IiwgYid1MTIzNCcpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVTAwMDEyMzQ1IiwgYidVMDAwMTIzNDUnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwMTgiLCBiIlwwMDE4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcNTY3IiwgYnl0ZXMoWzBvMTY3XSkpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlw5MTEiLCBiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxIiwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlx4MXoiLCBiIiIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDU2NyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJceDF6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogCiAgICAgZGVmIHRlc3Rfc3JlX2J5dGVfY2xhc3NfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1XToKQEAgLTg2NiwxMCArMTAxOCwyNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4MF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnh6XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXHVdIiwgYid1JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXFVdIiwgYidVJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1w5MTFdIiwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIltceDF6XSIsIGIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1x1MTIzNF0iLCBiJ3UnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1xVMDAwMTIzNDVdIiwgYidVJykpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiW1w1NjddIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiW1w5MTFdIiwgcidiYWQgZXNjYXBlIFw5JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXHgxel0iLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDEpCisKKyAgICBkZWYgdGVzdF9jaGFyYWN0ZXJfc2V0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ1snLCAndW50ZXJtaW5hdGVkIGNoYXJhY3RlciBzZXQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInW14nLCAndW50ZXJtaW5hdGVkIGNoYXJhY3RlciBzZXQnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInW2EnLCAndW50ZXJtaW5hdGVkIGNoYXJhY3RlciBzZXQnLCAwKQorICAgICAgICAjIGJ1ZyA1NDU4NTUgLS0gVGhpcyBwYXR0ZXJuIGZhaWxlZCB0byBjYXVzZSBhIGNvbXBpbGUgZXJyb3IgYXMgaXQKKyAgICAgICAgIyBzaG91bGQsIGluc3RlYWQgcHJvdm9raW5nIGEgVHlwZUVycm9yLgorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW2EtIiwgJ3VudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcdy1iXSIsIHInYmFkIGNoYXJhY3RlciByYW5nZSBcdy1iJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlthLVx3XSIsIHInYmFkIGNoYXJhY3RlciByYW5nZSBhLVx3JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltiLWFdIiwgJ2JhZCBjaGFyYWN0ZXIgcmFuZ2UgYi1hJywgMSkKIAogICAgIGRlZiB0ZXN0X2J1Z18xMTMyNTQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoYSl8KGIpJywgJ2InKS5zdGFydCgxKSwgLTEpCkBAIC04ODQsMTEgKzEwNTIsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoP1A8YT5hKGIpKSIsICJhYiIpLmxhc3Rncm91cCwgJ2EnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoKGEpKSIsICJhIikubGFzdGluZGV4LCAxKQogCi0gICAgZGVmIHRlc3RfYnVnXzU0NTg1NShzZWxmKToKLSAgICAgICAgIyBidWcgNTQ1ODU1IC0tIFRoaXMgcGF0dGVybiBmYWlsZWQgdG8gY2F1c2UgYSBjb21waWxlIGVycm9yIGFzIGl0Ci0gICAgICAgICMgc2hvdWxkLCBpbnN0ZWFkIHByb3Zva2luZyBhIFR5cGVFcnJvci4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdmb29bYS0nKQotCiAgICAgZGVmIHRlc3RfYnVnXzQxODYyNihzZWxmKToKICAgICAgICAgIyBidWdzIDQxODYyNiBhdCBhbC4gLS0gVGVzdGluZyBHcmVnIENoYXBtYW4ncyBhZGRpdGlvbiBvZiBvcCBjb2RlCiAgICAgICAgICMgU1JFX09QX01JTl9SRVBFQVRfT05FIGZvciBlbGltaW5hdGluZyByZWN1cnNpb24gb24gc2ltcGxlIHVzZXMgb2YKQEAgLTkxMiw2ICsxMDc1LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJyh4KSp5JywgNTAwMDAqJ3gnKyd5JykuZ3JvdXAoMSksICd4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnKHgpKj95JywgNTAwMDAqJ3gnKyd5JykuZ3JvdXAoMSksICd4JykKIAorICAgIGRlZiB0ZXN0X25vdGhpbmdfdG9fcmVwZWF0KHNlbGYpOgorICAgICAgICBmb3IgcmVwcyBpbiAnKicsICcrJywgJz8nLCAnezEsMn0nOgorICAgICAgICAgICAgZm9yIG1vZCBpbiAnJywgJz8nOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyVzJXMnICUgKHJlcHMsIG1vZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90aGluZyB0byByZXBlYXQnLCAwKQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/OiVzJXMpJyAlIChyZXBzLCBtb2QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdGhpbmcgdG8gcmVwZWF0JywgMykKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX3JlcGVhdChzZWxmKToKKyAgICAgICAgZm9yIG91dGVyX3JlcHMgaW4gJyonLCAnKycsICd7MSwyfSc6CisgICAgICAgICAgICBmb3Igb3V0ZXJfbW9kIGluICcnLCAnPyc6CisgICAgICAgICAgICAgICAgb3V0ZXJfb3AgPSBvdXRlcl9yZXBzICsgb3V0ZXJfbW9kCisgICAgICAgICAgICAgICAgZm9yIGlubmVyX3JlcHMgaW4gJyonLCAnKycsICc/JywgJ3sxLDJ9JzoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGlubmVyX21vZCBpbiAnJywgJz8nOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfb3AgPSBpbm5lcl9yZXBzICsgaW5uZXJfbW9kCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIneCVzJXMnICUgKGlubmVyX29wLCBvdXRlcl9vcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXBsZSByZXBlYXQnLCAxICsgbGVuKGlubmVyX29wKSkKKwogICAgIGRlZiB0ZXN0X3VubGltaXRlZF96ZXJvX3dpZHRoX3JlcGVhdChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjOTY2OQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/OmE/KSp5JywgJ3onKSkKQEAgLTEwNjIsOCArMTI0Myw4IEBACiAKICAgICBkZWYgdGVzdF9pbmxpbmVfZmxhZ3Moc2VsZik6CiAgICAgICAgICMgQnVnICMxNzAwCi0gICAgICAgIHVwcGVyX2NoYXIgPSBjaHIoMHgxZWEwKSAjIExhdGluIENhcGl0YWwgTGV0dGVyIEEgd2l0aCBEb3QgQmVsbG93Ci0gICAgICAgIGxvd2VyX2NoYXIgPSBjaHIoMHgxZWExKSAjIExhdGluIFNtYWxsIExldHRlciBBIHdpdGggRG90IEJlbGxvdworICAgICAgICB1cHBlcl9jaGFyID0gJ1x1MWVhMCcgIyBMYXRpbiBDYXBpdGFsIExldHRlciBBIHdpdGggRG90IEJlbG93CisgICAgICAgIGxvd2VyX2NoYXIgPSAnXHUxZWExJyAjIExhdGluIFNtYWxsIExldHRlciBBIHdpdGggRG90IEJlbG93CiAKICAgICAgICAgcCA9IHJlLmNvbXBpbGUodXBwZXJfY2hhciwgcmUuSSB8IHJlLlUpCiAgICAgICAgIHEgPSBwLm1hdGNoKGxvd2VyX2NoYXIpCkBAIC0xMTQzLDYgKzEzMjQsNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YSlcdycsIHJlLlVOSUNPREUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2F1KVx3JykKIAorICAgIGRlZiB0ZXN0X2xvY2FsZV9mbGFnKHNlbGYpOgorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIF8sIGVuYyA9IGxvY2FsZS5nZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKQorICAgICAgICAjIFNlYXJjaCBub24tQVNDSUkgbGV0dGVyCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyOCwgMjU2KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjID0gYnl0ZXMoW2ldKS5kZWNvZGUoZW5jKQorICAgICAgICAgICAgICAgIHNsZXR0ZXIgPSBjLmxvd2VyKCkKKyAgICAgICAgICAgICAgICBpZiBzbGV0dGVyID09IGM6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYmxldHRlciA9IHNsZXR0ZXIuZW5jb2RlKGVuYykKKyAgICAgICAgICAgICAgICBpZiBsZW4oYmxldHRlcikgIT0gMTogY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBibGV0dGVyLmRlY29kZShlbmMpICE9IHNsZXR0ZXI6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYnBhdCA9IHJlLmVzY2FwZShieXRlcyhbaV0pKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgKFVuaWNvZGVFcnJvciwgVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBibGV0dGVyID0gTm9uZQorICAgICAgICAgICAgYnBhdCA9IGInQScKKyAgICAgICAgIyBCeXRlcyBwYXR0ZXJucworICAgICAgICBwYXQgPSByZS5jb21waWxlKGJwYXQsIHJlLkxPQ0FMRSB8IHJlLklHTk9SRUNBU0UpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGInKD9MKScgKyBicGF0LCByZS5JR05PUkVDQVNFKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicGF0LCByZS5JR05PUkVDQVNFKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnLCByZS5MT0NBTEUpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGInKD9MKVx3JykKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnKD9MKScpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YSknLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YUwpJykKKwogICAgIGRlZiB0ZXN0X2J1Z182NTA5KHNlbGYpOgogICAgICAgICAjIFJlcGxhY2VtZW50IHN0cmluZ3Mgb2YgYm90aCB0eXBlcyBtdXN0IHBhcnNlIHByb3Blcmx5LgogICAgICAgICAjIGFsbCBzdHJpbmdzCkBAIC0xMTcwLDggKzEzOTcsMTAgQEAKICAgICAgICAgIyBhIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQgaW5zdGVhZCBvZiBPdmVyZmxvd0Vycm9yLgogICAgICAgICBsb25nX292ZXJmbG93ID0gMioqMTI4CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmUuZmluZGl0ZXIsICJhIiwge30pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIF9zcmUuY29tcGlsZSwgImFiYyIsIDAsIFtsb25nX292ZXJmbG93XSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc3JlLmNvbXBpbGUsIHt9LCAwLCBbXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIF9zcmUuY29tcGlsZSgiYWJjIiwgMCwgW2xvbmdfb3ZlcmZsb3ddLCAwLCBbXSwgW10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIF9zcmUuY29tcGlsZSh7fSwgMCwgW10sIDAsIFtdLCBbXSkKIAogICAgIGRlZiB0ZXN0X3NlYXJjaF9kb3RfdW5pY29kZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM2FiYy0nKSkKQEAgLTExOTMsOCArMTQyMiw5IEBACiAgICAgZGVmIHRlc3RfYnVnXzEzODk5KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMzg5OTogcmUgcGF0dGVybiByIltcQV0iIHNob3VsZCB3b3JrIGxpa2UgIkEiIGJ1dCBtYXRjaGVzCiAgICAgICAgICMgbm90aGluZy4gRGl0dG8gQiBhbmQgWi4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnQScsICdCJywgJ1xiJywgJ0MnLCAnWiddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbChyJ1tcQVxCXGJcQ1xaXScsICdBQlxiQ1onKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTEpCiAgICAgZGVmIHRlc3RfbGFyZ2Vfc2VhcmNoKHNlbGYsIHNpemUpOgpAQCAtMTI1MywxMyArMTQ4MywxMyBAQAogCiAgICAgZGVmIHRlc3RfYmFja3JlZl9ncm91cF9uYW1lX2luX2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNzM0MTogUG9vciBlcnJvciBtZXNzYWdlIHdoZW4gY29tcGlsaW5nIGludmFsaWQgcmVnZXgKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNyZV9jb25zdGFudHMuZXJyb3IsICc8Zm9vPicpOgotICAgICAgICAgICAgcmUuY29tcGlsZSgnKD9QPTxmb28+KScpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD08Zm9vPiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzxmb28+JyIsIDQpCiAKICAgICBkZWYgdGVzdF9ncm91cF9uYW1lX2luX2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNzM0MTogUG9vciBlcnJvciBtZXNzYWdlIHdoZW4gY29tcGlsaW5nIGludmFsaWQgcmVnZXgKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNyZV9jb25zdGFudHMuZXJyb3IsICdcP2ZvbycpOgotICAgICAgICAgICAgcmUuY29tcGlsZSgnKD9QPD9mb28+KScpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDw/Zm9vPiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJz9mb28nIiwgNCkKIAogICAgIGRlZiB0ZXN0X2lzc3VlMTc5OTgoc2VsZik6CiAgICAgICAgIGZvciByZXBzIGluICcqJywgJysnLCAnPycsICd7MX0nOgpAQCAtMTMwOSwyMiArMTUzOSwyMiBAQAogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dDoKICAgICAgICAgICAgIHJlLmNvbXBpbGUocGF0LCByZS5ERUJVRykKICAgICAgICAgZHVtcCA9ICcnJ1wKLXN1YnBhdHRlcm4gMQotICBsaXRlcmFsIDQ2Ci1zdWJwYXR0ZXJuIE5vbmUKLSAgYnJhbmNoCi0gICAgaW4KLSAgICAgIGxpdGVyYWwgOTkKLSAgICAgIGxpdGVyYWwgMTA0Ci0gIG9yCi0gICAgbGl0ZXJhbCAxMTIKLSAgICBsaXRlcmFsIDEyMQotc3VicGF0dGVybiBOb25lCi0gIGdyb3VwcmVmX2V4aXN0cyAxCi0gICAgYXQgYXRfZW5kCi0gIGVsc2UKLSAgICBsaXRlcmFsIDU4Ci0gICAgbGl0ZXJhbCAzMgorU1VCUEFUVEVSTiAxCisgIExJVEVSQUwgNDYKK1NVQlBBVFRFUk4gTm9uZQorICBCUkFOQ0gKKyAgICBJTgorICAgICAgTElURVJBTCA5OQorICAgICAgTElURVJBTCAxMDQKKyAgT1IKKyAgICBMSVRFUkFMIDExMgorICAgIExJVEVSQUwgMTIxCitTVUJQQVRURVJOIE5vbmUKKyAgR1JPVVBSRUZfRVhJU1RTIDEKKyAgICBBVCBBVF9FTkQKKyAgRUxTRQorICAgIExJVEVSQUwgNTgKKyAgICBMSVRFUkFMIDMyCiAnJycKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuZ2V0dmFsdWUoKSwgZHVtcCkKICAgICAgICAgIyBEZWJ1ZyBvdXRwdXQgaXMgb3V0cHV0IGFnYWluIGV2ZW4gYSBzZWNvbmQgdGltZSAoYnlwYXNzaW5nCkBAIC0xMzkyLDYgKzE2MjIsNTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goYicoP0xpKVx4YzUnLCBiJ1x4ZTUnKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goYicoP0xpKVx4ZTUnLCBiJ1x4YzUnKSkKIAorICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoJyhcdTIwYWMpKScpCisgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyLnBhdHRlcm4sIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucGF0dGVybiwgJyhcdTIwYWMpKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubGluZW5vLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIubXNnLCBzdHIoZXJyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIGF0IHBvc2l0aW9uIDMnLCBzdHIoZXJyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignIGF0IHBvc2l0aW9uIDMnLCBlcnIubXNnKQorICAgICAgICAjIEJ5dGVzIHBhdHRlcm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvcikgYXMgY206CisgICAgICAgICAgICByZS5jb21waWxlKGInKFx4YTQpKScpCisgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyLnBhdHRlcm4sIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wYXR0ZXJuLCBiJyhceGE0KSknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIDMpCisgICAgICAgICMgTXVsdGlsaW5lIHBhdHRlcm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvcikgYXMgY206CisgICAgICAgICAgICByZS5jb21waWxlKCIiIgorICAgICAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgYWJjCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgIiIiLCByZS5WRVJCT1NFKQorICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCA3NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubGluZW5vLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgMTcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLm1zZywgc3RyKGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyBhdCBwb3NpdGlvbiA3NycsIHN0cihlcnIpKQorICAgICAgICBzZWxmLmFzc2VydEluKCcobGluZSA1LCBjb2x1bW4gMTcpJywgc3RyKGVycikpCisKKyAgICBkZWYgdGVzdF9taXNjX2Vycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJygnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybicsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoKGF8YiknLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybicsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoYXxiKSknLCAndW5iYWxhbmNlZCBwYXJlbnRoZXNpcycsIDUpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1AnLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP3opJywgJ3Vua25vd24gZXh0ZW5zaW9uID96JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aXopJywgJ3Vua25vd24gZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/I2FiYycsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBjb21tZW50JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/PCcsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/PD4pJywgJ3Vua25vd24gZXh0ZW5zaW9uID88PicsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPycsICd1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuJywgMikKKwogCiBjbGFzcyBQYXR0ZXJuUmVwclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY2hlY2soc2VsZiwgcGF0dGVybiwgZXhwZWN0ZWQpOgpAQCAtMTQzNiw2ICsxNzE1LDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tfZmxhZ3MoYidieXRlcyBwYXR0ZXJuJywgcmUuQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAicmUuY29tcGlsZShiJ2J5dGVzIHBhdHRlcm4nLCByZS5BU0NJSSkiKQogCisgICAgZGVmIHRlc3RfbG9jYWxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZsYWdzKGInYnl0ZXMgcGF0dGVybicsIHJlLkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlLmNvbXBpbGUoYidieXRlcyBwYXR0ZXJuJywgcmUuTE9DQUxFKSIpCisKICAgICBkZWYgdGVzdF9xdW90ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2soJ3JhbmRvbSAiZG91YmxlIHF1b3RlZCIgcGF0dGVybicsCiAgICAgICAgICAgICAnJydyZS5jb21waWxlKCdyYW5kb20gImRvdWJsZSBxdW90ZWQiIHBhdHRlcm4nKScnJykKQEAgLTE1NDksOCArMTgzMiwxNiBAQAogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ2J5dGVzIHBhdHRlcm4gbWF0Y2gnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJwYXQgPSByZS5jb21waWxlKGJwYXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnBhdC5zZWFyY2goYnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gcmUuY29tcGlsZShicGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9iai5zZWFyY2goYnMpKQorCisgICAgICAgICAgICAgICAgICAgICMgVHJ5IHRoZSBtYXRjaCB3aXRoIExPQ0FMRSBlbmFibGVkLCBhbmQgY2hlY2sgdGhhdCBpdAorICAgICAgICAgICAgICAgICAgICAjIHN0aWxsIHN1Y2NlZWRzLgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgnbG9jYWxlLXNlbnNpdGl2ZSBtYXRjaCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gcmUuY29tcGlsZShicGF0LCByZS5MT0NBTEUpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBvYmouc2VhcmNoKGJzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJz09PSBGYWlscyBvbiBsb2NhbGUtc2Vuc2l0aXZlIG1hdGNoJywgdCkKIAogICAgICAgICAgICAgICAgICMgVHJ5IHRoZSBtYXRjaCB3aXRoIHRoZSBzZWFyY2ggYXJlYSBsaW1pdGVkIHRvIHRoZSBleHRlbnQKICAgICAgICAgICAgICAgICAjIG9mIHRoZSBtYXRjaCBhbmQgc2VlIGlmIGl0IHN0aWxsIHN1Y2NlZWRzLiAgXEIgd2lsbApAQCAtMTU2OCwxMyArMTg1OSw2IEBACiAgICAgICAgICAgICAgICAgICAgIG9iaiA9IHJlLmNvbXBpbGUocGF0dGVybiwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9iai5zZWFyY2gocykpCiAKLSAgICAgICAgICAgICAgICAjIFRyeSB0aGUgbWF0Y2ggd2l0aCBMT0NBTEUgZW5hYmxlZCwgYW5kIGNoZWNrIHRoYXQgaXQKLSAgICAgICAgICAgICAgICAjIHN0aWxsIHN1Y2NlZWRzLgotICAgICAgICAgICAgICAgIGlmICcoP3UpJyBub3QgaW4gcGF0dGVybjoKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ2xvY2FsZS1zZW5zaXRpdmUgbWF0Y2gnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IHJlLmNvbXBpbGUocGF0dGVybiwgcmUuTE9DQUxFKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9iai5zZWFyY2gocykpCi0KICAgICAgICAgICAgICAgICAjIFRyeSB0aGUgbWF0Y2ggd2l0aCBVTklDT0RFIGxvY2FsZSBlbmFibGVkLCBhbmQgY2hlY2sKICAgICAgICAgICAgICAgICAjIHRoYXQgaXQgc3RpbGwgc3VjY2VlZHMuCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ3VuaWNvZGUtc2Vuc2l0aXZlIG1hdGNoJyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQppbmRleCAwYjJiMGE1Li4zNTMzMGFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKQEAgLTIsOSArMiwxMCBAQAogVmVyeSBtaW5pbWFsIHVuaXR0ZXN0cyBmb3IgcGFydHMgb2YgdGhlIHJlYWRsaW5lIG1vZHVsZS4KICIiIgogaW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZQotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlLCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogIyBTa2lwIHRlc3RzIGlmIHRoZXJlIGlzIG5vIHJlYWRsaW5lIG1vZHVsZQogcmVhZGxpbmUgPSBpbXBvcnRfbW9kdWxlKCdyZWFkbGluZScpCkBAIC00Miw2ICs0Myw0NSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSwgMSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocmVhZGxpbmUsICJhcHBlbmRfaGlzdG9yeV9maWxlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGVuZF9oaXN0b3J5IG5vdCBhdmFpbGFibGUiKQorICAgIGRlZiB0ZXN0X3dyaXRlX3JlYWRfYXBwZW5kKHNlbGYpOgorICAgICAgICBoZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpCisgICAgICAgIGhmaWxlLmNsb3NlKCkKKyAgICAgICAgaGZpbGVuYW1lID0gaGZpbGUubmFtZQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBoZmlsZW5hbWUpCisKKyAgICAgICAgIyB0ZXN0IHdyaXRlLWNsZWFyLXJlYWQgPT0gbm9wCisgICAgICAgIHJlYWRsaW5lLmNsZWFyX2hpc3RvcnkoKQorICAgICAgICByZWFkbGluZS5hZGRfaGlzdG9yeSgiZmlyc3QgbGluZSIpCisgICAgICAgIHJlYWRsaW5lLmFkZF9oaXN0b3J5KCJzZWNvbmQgbGluZSIpCisgICAgICAgIHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZShoZmlsZW5hbWUpCisKKyAgICAgICAgcmVhZGxpbmUuY2xlYXJfaGlzdG9yeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSwgMCkKKworICAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDEpLCAiZmlyc3QgbGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2hpc3RvcnlfaXRlbSgyKSwgInNlY29uZCBsaW5lIikKKworICAgICAgICAjIHRlc3QgYXBwZW5kCisgICAgICAgIHJlYWRsaW5lLmFwcGVuZF9oaXN0b3J5X2ZpbGUoMSwgaGZpbGVuYW1lKQorICAgICAgICByZWFkbGluZS5jbGVhcl9oaXN0b3J5KCkKKyAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoKCksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2hpc3RvcnlfaXRlbSgxKSwgImZpcnN0IGxpbmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9oaXN0b3J5X2l0ZW0oMiksICJzZWNvbmQgbGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2hpc3RvcnlfaXRlbSgzKSwgInNlY29uZCBsaW5lIikKKworICAgICAgICAjIHRlc3QgJ25vIHN1Y2ggZmlsZScgYmVoYXZpb3VyCisgICAgICAgIG9zLnVubGluayhoZmlsZW5hbWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgcmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZSgxLCBoZmlsZW5hbWUpCisKKyAgICAgICAgIyB3cml0ZV9oaXN0b3J5X2ZpbGUgY2FuIGNyZWF0ZSB0aGUgdGFyZ2V0CisgICAgICAgIHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZShoZmlsZW5hbWUpCisKIAogY2xhc3MgVGVzdFJlYWRsaW5lKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTcsOCArOTcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYicnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEhpc3RvcnlNYW5pcHVsYXRpb24sIFRlc3RSZWFkbGluZSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5IGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CmluZGV4IGFlNjdmMDYuLmE1MWM0ZDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKQEAgLTEwLDcgKzEwLDcgQEAKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNyZWF0ZV9lbXB0eV9maWxlLCB2ZXJib3NlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY3JlYXRlX2VtcHR5X2ZpbGUsIHZlcmJvc2UKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVwciBhcyByICMgRG9uJ3Qgc2hhZG93IGJ1aWx0aW4gcmVwcgogZnJvbSByZXBybGliIGltcG9ydCBSZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IHJlY3Vyc2l2ZV9yZXByCkBAIC03MCwxOCArNzAsMTggQEAKICAgICAgICAgZXEocihbMSwgMiwgMywgNCwgNSwgNiwgN10pLCAiWzEsIDIsIDMsIDQsIDUsIDYsIC4uLl0iKQogCiAgICAgICAgICMgU2V0cyBnaXZlIHVwIGFmdGVyIDYgYXMgd2VsbAotICAgICAgICBlcShyKHNldChbXSkpLCAic2V0KFtdKSIpCi0gICAgICAgIGVxKHIoc2V0KFsxXSkpLCAic2V0KFsxXSkiKQotICAgICAgICBlcShyKHNldChbMSwgMiwgM10pKSwgInNldChbMSwgMiwgM10pIikKLSAgICAgICAgZXEocihzZXQoWzEsIDIsIDMsIDQsIDUsIDZdKSksICJzZXQoWzEsIDIsIDMsIDQsIDUsIDZdKSIpCi0gICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkpLCAic2V0KFsxLCAyLCAzLCA0LCA1LCA2LCAuLi5dKSIpCisgICAgICAgIGVxKHIoc2V0KFtdKSksICJzZXQoKSIpCisgICAgICAgIGVxKHIoc2V0KFsxXSkpLCAiezF9IikKKyAgICAgICAgZXEocihzZXQoWzEsIDIsIDNdKSksICJ7MSwgMiwgM30iKQorICAgICAgICBlcShyKHNldChbMSwgMiwgMywgNCwgNSwgNl0pKSwgInsxLCAyLCAzLCA0LCA1LCA2fSIpCisgICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkpLCAiezEsIDIsIDMsIDQsIDUsIDYsIC4uLn0iKQogCiAgICAgICAgICMgRnJvemVuc2V0cyBnaXZlIHVwIGFmdGVyIDYgYXMgd2VsbAotICAgICAgICBlcShyKGZyb3plbnNldChbXSkpLCAiZnJvemVuc2V0KFtdKSIpCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFsxXSkpLCAiZnJvemVuc2V0KFsxXSkiKQotICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgM10pKSwgImZyb3plbnNldChbMSwgMiwgM10pIikKLSAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDZdKSksICJmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDZdKSIpCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkpLCAiZnJvemVuc2V0KFsxLCAyLCAzLCA0LCA1LCA2LCAuLi5dKSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KFtdKSksICJmcm96ZW5zZXQoKSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KFsxXSkpLCAiZnJvemVuc2V0KHsxfSkiKQorICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgM10pKSwgImZyb3plbnNldCh7MSwgMiwgM30pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDMsIDQsIDUsIDZdKSksICJmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDZ9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzLCA0LCA1LCA2LCAuLi59KSIpCiAKICAgICAgICAgIyBjb2xsZWN0aW9ucy5kZXF1ZSBhZnRlciA2CiAgICAgICAgIGVxKHIoZGVxdWUoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSksICJkZXF1ZShbMSwgMiwgMywgNCwgNSwgNiwgLi4uXSkiKQpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICBlcShyKGQpLCAieydhbGljZSc6IDEsICdhcnRodXInOiAxLCAnYm9iJzogMiwgJ2NoYXJsZXMnOiAzLCAuLi59IikKIAogICAgICAgICAjIGFycmF5LmFycmF5IGFmdGVyIDUuCi0gICAgICAgIGVxKHIoYXJyYXkoJ2knKSksICJhcnJheSgnaScsIFtdKSIpCisgICAgICAgIGVxKHIoYXJyYXkoJ2knKSksICJhcnJheSgnaScpIikKICAgICAgICAgZXEocihhcnJheSgnaScsIFsxXSkpLCAiYXJyYXkoJ2knLCBbMV0pIikKICAgICAgICAgZXEocihhcnJheSgnaScsIFsxLCAyXSkpLCAiYXJyYXkoJ2knLCBbMSwgMl0pIikKICAgICAgICAgZXEocihhcnJheSgnaScsIFsxLCAyLCAzXSkpLCAiYXJyYXkoJ2knLCBbMSwgMiwgM10pIikKQEAgLTEwMyw2ICsxMDMsMjAgQEAKICAgICAgICAgZXEocihhcnJheSgnaScsIFsxLCAyLCAzLCA0LCA1LCA2XSkpLAogICAgICAgICAgICAgICAgICAgICJhcnJheSgnaScsIFsxLCAyLCAzLCA0LCA1LCAuLi5dKSIpCiAKKyAgICBkZWYgdGVzdF9zZXRfbGl0ZXJhbChzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGVxKHIoezF9KSwgInsxfSIpCisgICAgICAgIGVxKHIoezEsIDIsIDN9KSwgInsxLCAyLCAzfSIpCisgICAgICAgIGVxKHIoezEsIDIsIDMsIDQsIDUsIDZ9KSwgInsxLCAyLCAzLCA0LCA1LCA2fSIpCisgICAgICAgIGVxKHIoezEsIDIsIDMsIDQsIDUsIDYsIDd9KSwgInsxLCAyLCAzLCA0LCA1LCA2LCAuLi59IikKKworICAgIGRlZiB0ZXN0X2Zyb3plbnNldChzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGVxKHIoZnJvemVuc2V0KHsxfSkpLCAiZnJvemVuc2V0KHsxfSkiKQorICAgICAgICBlcShyKGZyb3plbnNldCh7MSwgMiwgM30pKSwgImZyb3plbnNldCh7MSwgMiwgM30pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDZ9KSksICJmcm96ZW5zZXQoezEsIDIsIDMsIDQsIDUsIDZ9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KHsxLCAyLCAzLCA0LCA1LCA2LCA3fSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzLCA0LCA1LCA2LCAuLi59KSIpCisKICAgICBkZWYgdGVzdF9udW1iZXJzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgZXEocigxMjMpLCByZXByKDEyMykpCkBAIC0xMjMsNyArMTM3LDcgQEAKICAgICAgICAgZXEocihpMiksIGV4cGVjdGVkKQogCiAgICAgICAgIGkzID0gQ2xhc3NXaXRoRmFpbGluZ1JlcHIoKQotICAgICAgICBlcShyKGkzKSwgKCI8Q2xhc3NXaXRoRmFpbGluZ1JlcHIgaW5zdGFuY2UgYXQgJXg+IiVpZChpMykpKQorICAgICAgICBlcShyKGkzKSwgKCI8Q2xhc3NXaXRoRmFpbGluZ1JlcHIgaW5zdGFuY2UgYXQgJSN4PiIlaWQoaTMpKSkKIAogICAgICAgICBzID0gcihDbGFzc1dpdGhGYWlsaW5nUmVwcikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgiPGNsYXNzICIpKQpAQCAtMzczLDExICszODcsNSBAQAogICAgICAgICBtLmFwcGVuZChtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICc8YSwgYiwgYywgZCwgZSwgKysrLCB4LCArKys+JykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChSZXByVGVzdHMpCi0gICAgcnVuX3VuaXR0ZXN0KExvbmdSZXByVGVzdCkKLSAgICBydW5fdW5pdHRlc3QoVGVzdFJlY3Vyc2l2ZVJlcHIpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IDBiNjI5ZGMuLjE1ODJjYWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTIyOCwyNSArMjI4LDI1IEBACiAgICAgICAgIGIgPSBVc2VyTGlzdCgpCiAgICAgICAgIGEuYXBwZW5kKGIpCiAgICAgICAgIGIuYXBwZW5kKGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IuZXEsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IubmUsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IubHQsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IubGUsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IuZ3QsIGEsIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3BlcmF0b3IuZ2UsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5lcSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLm5lLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IubHQsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5sZSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmd0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IuZ2UsIGEsIGIpCiAKICAgICAgICAgYi5hcHBlbmQoMTcpCiAgICAgICAgICMgRXZlbiByZWN1cnNpdmUgbGlzdHMgb2YgZGlmZmVyZW50IGxlbmd0aHMgYXJlIGRpZmZlcmVudCwKICAgICAgICAgIyBidXQgdGhleSBjYW5ub3QgYmUgb3JkZXJlZAogICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IChhID09IGIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSAhPSBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmx0LCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmxlLCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmd0LCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmdlLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IubHQsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5sZSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmd0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IuZ2UsIGEsIGIpCiAgICAgICAgIGEuYXBwZW5kKDE3KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmVxLCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLm5lLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IuZXEsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5uZSwgYSwgYikKICAgICAgICAgYS5pbnNlcnQoMCwgMTEpCiAgICAgICAgIGIuaW5zZXJ0KDAsIDEyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IChhID09IGIpKQpAQCAtMzI2LDggKzMyNiw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9wKHgsIHkpLCBUcnVlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChWZWN0b3JUZXN0LCBOdW1iZXJUZXN0LCBNaXNjVGVzdCwgRGljdFRlc3QsIExpc3RUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQppbmRleCAyZGE3ZmNlLi5kMzdiNjIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKQEAgLTcyLDYgKzcyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FzJywgMiksICdhc3NlcnQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYW4nLCAwKSwgJ2FuZCcpCiAKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CmluZGV4IDc4NmI4MTMuLjRiYWU5NDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQpAQCAtOCwxMCArOCwxMCBAQAogaW1wb3J0IGltcG9ydGxpYiwgaW1wb3J0bGliLm1hY2hpbmVyeSwgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBweV9jb21waWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAotICAgIGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCBydW5fdW5pdHRlc3QsIHVubG9hZCwgdmVyYm9zZSwgbm9fdHJhY2luZywKLSAgICBjcmVhdGVfZW1wdHlfZmlsZSkKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCi0gICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwgdGVtcF9kaXIpCisgICAgZm9yZ2V0LCBtYWtlX2xlZ2FjeV9weWMsIHVubG9hZCwgdmVyYm9zZSwgbm9fdHJhY2luZywKKyAgICBjcmVhdGVfZW1wdHlfZmlsZSwgdGVtcF9kaXIpCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCisgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCkKIAogCiBpbXBvcnQgcnVucHkKQEAgLTI2OSw3ICsyNjksNyBAQAogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KGV4KSAjIFBlcnNpc3Qgd2l0aCBjbGVhbmluZyB1cAogCiAgICAgZGVmIF9maXhfbnNfZm9yX2xlZ2FjeV9weWMoc2VsZiwgbnMsIGFsdGVyX3N5cyk6Ci0gICAgICAgIGNoYXJfdG9fYWRkID0gImMiIGlmIF9fZGVidWdfXyBlbHNlICJvIgorICAgICAgICBjaGFyX3RvX2FkZCA9ICJjIgogICAgICAgICBuc1siX19maWxlX18iXSArPSBjaGFyX3RvX2FkZAogICAgICAgICBuc1siX19jYWNoZWRfXyJdID0gbnNbIl9fZmlsZV9fIl0KICAgICAgICAgc3BlYyA9IG5zWyJfX3NwZWNfXyJdCkBAIC02NzMsNyArNjczLDcgQEAKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gc2VsZi5fbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCBtb2RfbmFtZSwgc291cmNlKQogICAgICAgICAgICAgemlwX25hbWUsIGZuYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgbXNnID0gInJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLCBtc2csIHJ1bl9wYXRoLCB6aXBfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUmVjdXJzaW9uRXJyb3IsIG1zZywgcnVuX3BhdGgsIHppcF9uYW1lKQogCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zYXgucHkgYi9MaWIvdGVzdC90ZXN0X3NheC5weQppbmRleCA5MGYzMDE2Li4yNDExODk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NheC5weQpAQCAtMjAwLDYgKzIwMCwxMyBAQAogICAgICAgICBwYXJzZVN0cmluZyhzLCBYTUxHZW5lcmF0b3IocmVzdWx0LCAndXRmLTgnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZ2V0dmFsdWUoKSwgeG1sX3N0cihzZWxmLmRhdGEsICd1dGYtOCcpKQogCisgICAgZGVmIHRlc3RfcGFyc2VTdHJpbmdfdGV4dChzZWxmKToKKyAgICAgICAgZW5jb2RpbmdzID0gKCd1cy1hc2NpaScsICdpc28tODg1OS0xJywgJ3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICd1dGYtMTYnLCAndXRmLTE2bGUnLCAndXRmLTE2YmUnKQorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gZW5jb2RpbmdzOgorICAgICAgICAgICAgc2VsZi5jaGVja19wYXJzZVN0cmluZyh4bWxfc3RyKHNlbGYuZGF0YSwgZW5jb2RpbmcpKQorICAgICAgICBzZWxmLmNoZWNrX3BhcnNlU3RyaW5nKHNlbGYuZGF0YSkKKwogICAgIGRlZiB0ZXN0X3BhcnNlU3RyaW5nX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFVURi04IGlzIGRlZmF1bHQgZW5jb2RpbmcsIFVTLUFTQ0lJIGlzIGNvbXBhdGlibGUgd2l0aCBVVEYtOCwKICAgICAgICAgIyBVVEYtMTYgaXMgYXV0b2RldGVjdGVkCkBAIC0zMDYsMTIgKzMxMywyNCBAQAogICAgIGRlZiBtYWtlX2J5dGVfc3RyZWFtKHNlbGYpOgogICAgICAgICByZXR1cm4gQnl0ZXNJTyhiIlRoaXMgaXMgYSBieXRlIHN0cmVhbS4iKQogCisgICAgZGVmIG1ha2VfY2hhcmFjdGVyX3N0cmVhbShzZWxmKToKKyAgICAgICAgcmV0dXJuIFN0cmluZ0lPKCJUaGlzIGlzIGEgY2hhcmFjdGVyIHN0cmVhbS4iKQorCiAgICAgZGVmIGNoZWNrQ29udGVudChzZWxmLCBzdHJlYW0sIGNvbnRlbnQpOgogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzdHJlYW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLnJlYWQoKSwgY29udGVudCkKICAgICAgICAgc3RyZWFtLmNsb3NlKCkKIAogCisgICAgZGVmIHRlc3RfY2hhcmFjdGVyX3N0cmVhbShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGFuIElucHV0U291cmNlIHdpdGggYSBjaGFyYWN0ZXIgc3RyZWFtLCB1c2UgaXQuCisgICAgICAgIHNyYyA9IElucHV0U291cmNlKHNlbGYuZmlsZSkKKyAgICAgICAgc3JjLnNldENoYXJhY3RlclN0cmVhbShzZWxmLm1ha2VfY2hhcmFjdGVyX3N0cmVhbSgpKQorICAgICAgICBwcmVwID0gcHJlcGFyZV9pbnB1dF9zb3VyY2Uoc3JjKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcmVwLmdldEJ5dGVTdHJlYW0oKSkKKyAgICAgICAgc2VsZi5jaGVja0NvbnRlbnQocHJlcC5nZXRDaGFyYWN0ZXJTdHJlYW0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSBjaGFyYWN0ZXIgc3RyZWFtLiIpCisKICAgICBkZWYgdGVzdF9ieXRlX3N0cmVhbShzZWxmKToKICAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGFuIElucHV0U291cmNlIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGNoYXJhY3RlcgogICAgICAgICAjIHN0cmVhbSBidXQgZG9lcyBoYXZlIGEgYnl0ZSBzdHJlYW0sIHVzZSB0aGUgYnl0ZSBzdHJlYW0uCkBAIC0zNDYsNiArMzY1LDE0IEBACiAgICAgICAgIHNlbGYuY2hlY2tDb250ZW50KHByZXAuZ2V0Qnl0ZVN0cmVhbSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBiIlRoaXMgaXMgYSBieXRlIHN0cmVhbS4iKQogCisgICAgZGVmIHRlc3RfdGV4dF9maWxlKHNlbGYpOgorICAgICAgICAjIElmIHRoZSBzb3VyY2UgaXMgYSB0ZXh0IGZpbGUtbGlrZSBvYmplY3QsIHVzZSBpdCBhcyBhIGNoYXJhY3RlcgorICAgICAgICAjIHN0cmVhbS4KKyAgICAgICAgcHJlcCA9IHByZXBhcmVfaW5wdXRfc291cmNlKHNlbGYubWFrZV9jaGFyYWN0ZXJfc3RyZWFtKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByZXAuZ2V0Qnl0ZVN0cmVhbSgpKQorICAgICAgICBzZWxmLmNoZWNrQ29udGVudChwcmVwLmdldENoYXJhY3RlclN0cmVhbSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyBhIGNoYXJhY3RlciBzdHJlYW0uIikKKwogCiAjID09PT09IFhNTEdlbmVyYXRvcgogCkBAIC0xMDI1LDYgKzEwNTIsMTkgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5nZXR2YWx1ZSgpLCB4bWxfdGVzdF9vdXQpCiAKKyAgICBkZWYgdGVzdF9leHBhdF9pbnBzb3VyY2VfY2hhcmFjdGVyX3N0cmVhbShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY3JlYXRlX3BhcnNlcigpCisgICAgICAgIHJlc3VsdCA9IEJ5dGVzSU8oKQorICAgICAgICB4bWxnZW4gPSBYTUxHZW5lcmF0b3IocmVzdWx0KQorCisgICAgICAgIHBhcnNlci5zZXRDb250ZW50SGFuZGxlcih4bWxnZW4pCisgICAgICAgIGlucHNyYyA9IElucHV0U291cmNlKCkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RfWE1MRklMRSwgJ3J0JywgZW5jb2Rpbmc9J2lzby04ODU5LTEnKSBhcyBmOgorICAgICAgICAgICAgaW5wc3JjLnNldENoYXJhY3RlclN0cmVhbShmKQorICAgICAgICAgICAgcGFyc2VyLnBhcnNlKGlucHNyYykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5nZXR2YWx1ZSgpLCB4bWxfdGVzdF9vdXQpCisKICAgICAjID09PT09IEluY3JlbWVudGFsUGFyc2VyIHN1cHBvcnQKIAogICAgIGRlZiB0ZXN0X2V4cGF0X2luY3JlbWVudGFsKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKaW5kZXggYjMyNTU0NS4uNDIzOWIyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBjcHl0aG9uX29ubHksIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgY3B5dGhvbl9vbmx5CiAKIAogY2xhc3MgU2NvcGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03NTcsOCArNzU3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVmKCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChTY29wZVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAzNzJkNmE3Li5hNzY4MGY4Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NyaXB0X2hlbHBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkKQEAgLTEsOCArMSw4IEBACi0iIiJVbml0dGVzdHMgZm9yIHRlc3Quc2NyaXB0X2hlbHBlci4gIFdobyB0ZXN0cyB0aGUgdGVzdCBoZWxwZXI/IiIiCisiIiJVbml0dGVzdHMgZm9yIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyLiAgV2hvIHRlc3RzIHRoZSB0ZXN0IGhlbHBlcj8iIiIKIAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCkBAIC0yMywyMSArMjMsMjEgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcikgYXMgZXJyb3JfY29udGV4dDoKICAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCAnc3lzLmV4aXQoMCknKQogICAgICAgICBlcnJvcl9tc2cgPSBzdHIoZXJyb3JfY29udGV4dC5leGNlcHRpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbW1hbmQgbGluZSB3YXM6JywgZXJyb3JfbXNnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb21tYW5kIGxpbmU6JywgZXJyb3JfbXNnKQogICAgICAgICBzZWxmLmFzc2VydEluKCdzeXMuZXhpdCgwKScsIGVycm9yX21zZywgbXNnPSd1bmV4cGVjdGVkIGNvbW1hbmQgbGluZScpCiAKICAgICBkZWYgdGVzdF9hc3NlcnRfcHl0aG9uX2ZhaWx1cmVfcmFpc2VzKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKSBhcyBlcnJvcl9jb250ZXh0OgogICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDApJykKICAgICAgICAgZXJyb3JfbXNnID0gc3RyKGVycm9yX2NvbnRleHQuZXhjZXB0aW9uKQotICAgICAgICBzZWxmLmFzc2VydEluKCdQcm9jZXNzIHJldHVybiBjb2RlIGlzIDAsJywgZXJyb3JfbXNnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdQcm9jZXNzIHJldHVybiBjb2RlIGlzIDBcbicsIGVycm9yX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbignaW1wb3J0IHN5czsgc3lzLmV4aXQoMCknLCBlcnJvcl9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgbXNnPSd1bmV4cGVjdGVkIGNvbW1hbmQgbGluZS4nKQogCiAgICAgQG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuUG9wZW4nKQogICAgIGRlZiB0ZXN0X2Fzc2VydF9weXRob25faXNvbGF0ZWRfd2hlbl9lbnZfbm90X3JlcXVpcmVkKHNlbGYsIG1vY2tfcG9wZW4pOgogICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNjcmlwdF9oZWxwZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9RmFsc2UpIGFzIG1vY2tfaXJlX2Z1bmM6CiAgICAgICAgICAgICBtb2NrX3BvcGVuLnNpZGVfZWZmZWN0ID0gUnVudGltZUVycm9yKCdiYWlsIG91dCBvZiB1bml0dGVzdCcpCiAgICAgICAgICAgICB0cnk6CkBAIC01Niw3ICs1Niw3IEBACiAgICAgZGVmIHRlc3RfYXNzZXJ0X3B5dGhvbl9ub3RfaXNvbGF0ZWRfd2hlbl9lbnZfaXNfcmVxdWlyZWQoc2VsZiwgbW9ja19wb3Blbik6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IC1JIGlzIG5vdCBwYXNzZWQgd2hlbiB0aGUgZW52aXJvbm1lbnQgaXMgcmVxdWlyZWQuIiIiCiAgICAgICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3Qoc2NyaXB0X2hlbHBlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlKSBhcyBtb2NrX2lyZV9mdW5jOgogICAgICAgICAgICAgbW9ja19wb3Blbi5zaWRlX2VmZmVjdCA9IFJ1bnRpbWVFcnJvcignYmFpbCBvdXQgb2YgdW5pdHRlc3QnKQogICAgICAgICAgICAgdHJ5OgpAQCAtNjksNyArNjksNyBAQAogCiAKIGNsYXNzIFRlc3RTY3JpcHRIZWxwZXJFbnZpcm9ubWVudCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQ29kZSBjb3ZlcmFnZSBmb3IgX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkuIiIiCisgICAgIiIiQ29kZSBjb3ZlcmFnZSBmb3IgaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKS4iIiIKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKApAQCAtODQsMjIgKzg0LDIyIEBACiAgICAgQG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfY2FsbCcpCiAgICAgZGVmIHRlc3RfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnRfdHJ1ZShzZWxmLCBtb2NrX2NoZWNrX2NhbGwpOgogICAgICAgICBtb2NrX2NoZWNrX2NhbGwuc2lkZV9lZmZlY3QgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcignJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBtb2NrX2NoZWNrX2NhbGwuY2FsbF9jb3VudCkKIAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnKQogICAgIGRlZiB0ZXN0X2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50X2ZhbHNlKHNlbGYsIG1vY2tfY2hlY2tfY2FsbCk6CiAgICAgICAgICMgVGhlIG1vY2tlZCBzdWJwcm9jZXNzLmNoZWNrX2NhbGwgZmFrZXMgYSBuby1lcnJvciBwcm9jZXNzLgotICAgICAgICBzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKKyAgICAgICAgc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIG1vY2tfY2hlY2tfY2FsbC5jYWxsX2NvdW50KQogCiAgICAgQG1vY2sucGF0Y2goJ3N1YnByb2Nlc3MuY2hlY2tfY2FsbCcpCiAgICAgZGVmIHRlc3RfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnRfZGV0YWlscyhzZWxmLCBtb2NrX2NoZWNrX2NhbGwpOgotICAgICAgICBzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY3JpcHRfaGVscGVyLl9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQorICAgICAgICBzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIG1vY2tfY2hlY2tfY2FsbC5jYWxsX2NvdW50KQogICAgICAgICBjaGVja19jYWxsX2NvbW1hbmQgPSBtb2NrX2NoZWNrX2NhbGwuY2FsbF9hcmdzWzBdWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmV4ZWN1dGFibGUsIGNoZWNrX2NhbGxfY29tbWFuZFswXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKaW5kZXggOGY5YTFjOS4uYTk3M2YzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKQEAgLTc1LDkgKzc1LDggQEAKICAgICAgICAgYVs6XSA9IFtGKCldICogMTAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxlY3Quc2VsZWN0KFtdLCBhLCBbXSksIChbXSwgYVs6NV0sIFtdKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNlbGVjdFRlc3RDYXNlKQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkgYi9MaWIvdGVzdC90ZXN0X3NlbGVjdG9ycy5weQppbmRleCA5NTJmZGE2Li40NTRjMTdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NlbGVjdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NlbGVjdG9ycy5weQpAQCAtOSwxMCArOSw3IEBACiBmcm9tIHRpbWUgaW1wb3J0IHNsZWVwCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdC5tb2NrCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyB0aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCiB0cnk6CiAgICAgaW1wb3J0IHJlc291cmNlCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yNSw3ICsyMiw3IEBACiAgICAgZGVmIHNvY2tldHBhaXIoZmFtaWx5PXNvY2tldC5BRl9JTkVULCB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSwgcHJvdG89MCk6CiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKSBhcyBsOgogICAgICAgICAgICAgbC5iaW5kKChzdXBwb3J0LkhPU1QsIDApKQotICAgICAgICAgICAgbC5saXN0ZW4oMykKKyAgICAgICAgICAgIGwubGlzdGVuKCkKICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYy5jb25uZWN0KGwuZ2V0c29ja25hbWUoKSkKQEAgLTE4OCw4ICsxODUsOCBAQAogICAgICAgICBzLnJlZ2lzdGVyKHdyLCBzZWxlY3RvcnMuRVZFTlRfV1JJVEUpCiAKICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzLmdldF9rZXksIHJkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcy5nZXRfa2V5LCB3cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzLmdldF9rZXksIHJkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHMuZ2V0X2tleSwgd3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtYXBwaW5nLl9fZ2V0aXRlbV9fLCByZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1hcHBpbmcuX19nZXRpdGVtX18sIHdyKQogCkBAIC0yNTgsOCArMjU1LDggQEAKICAgICAgICAgICAgIHNlbC5yZWdpc3RlcihyZCwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCiAgICAgICAgICAgICBzZWwucmVnaXN0ZXIod3IsIHNlbGVjdG9ycy5FVkVOVF9XUklURSkKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcy5nZXRfa2V5LCByZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHMuZ2V0X2tleSwgd3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcy5nZXRfa2V5LCByZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzLmdldF9rZXksIHdyKQogCiAgICAgZGVmIHRlc3RfZmlsZW5vKHNlbGYpOgogICAgICAgICBzID0gc2VsZi5TRUxFQ1RPUigpCkBAIC0zNjAsNyArMzU3LDM1IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbC5hbGFybSgpIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QiKQotICAgIGRlZiB0ZXN0X3NlbGVjdF9pbnRlcnJ1cHQoc2VsZik6CisgICAgZGVmIHRlc3Rfc2VsZWN0X2ludGVycnVwdF9leGMoc2VsZik6CisgICAgICAgIHMgPSBzZWxmLlNFTEVDVE9SKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisKKyAgICAgICAgcmQsIHdyID0gc2VsZi5tYWtlX3NvY2tldHBhaXIoKQorCisgICAgICAgIGNsYXNzIEludGVycnVwdFNlbGVjdChFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBoYW5kbGVyKCphcmdzKToKKyAgICAgICAgICAgIHJhaXNlIEludGVycnVwdFNlbGVjdAorCisgICAgICAgIG9yaWdfYWxybV9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdBTFJNLCBvcmlnX2Fscm1faGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5hbGFybSwgMCkKKworICAgICAgICBzaWduYWwuYWxhcm0oMSkKKworICAgICAgICBzLnJlZ2lzdGVyKHJkLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKKyAgICAgICAgdCA9IHRpbWUoKQorICAgICAgICAjIHNlbGVjdCgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIHdoaWNoIHJhaXNlcyBhbiBleGNlcHRpb24KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnRlcnJ1cHRTZWxlY3QpOgorICAgICAgICAgICAgcy5zZWxlY3QoMzApCisgICAgICAgICMgc2VsZWN0KCkgd2FzIGludGVycnVwdGVkIGJlZm9yZSB0aGUgdGltZW91dCBvZiAzMCBzZWNvbmRzCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh0aW1lKCkgLSB0LCA1LjApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbC5hbGFybSgpIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QiKQorICAgIGRlZiB0ZXN0X3NlbGVjdF9pbnRlcnJ1cHRfbm9yYWlzZShzZWxmKToKICAgICAgICAgcyA9IHNlbGYuU0VMRUNUT1IoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKIApAQCAtMzc0LDggKzM5OSwxMSBAQAogCiAgICAgICAgIHMucmVnaXN0ZXIocmQsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICB0ID0gdGltZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zZWxlY3QoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh0aW1lKCkgLSB0LCAyLjUpCisgICAgICAgICMgc2VsZWN0KCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGJ1dCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lc24ndAorICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiwgc28gc2VsZWN0KCkgc2hvdWxkIGJ5IHJldHJpZXMgd2l0aCBhIHJlY29tcHV0ZWQKKyAgICAgICAgIyB0aW1lb3V0CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zZWxlY3QoMS41KSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodGltZSgpIC0gdCwgMS4wKQogCiAKIGNsYXNzIFNjYWxhYmxlU2VsZWN0b3JNaXhJbjoKQEAgLTQ1NSwxMCArNDgzLDE4IEBACiAgICAgU0VMRUNUT1IgPSBnZXRhdHRyKHNlbGVjdG9ycywgJ0txdWV1ZVNlbGVjdG9yJywgTm9uZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdG9ycywgJ0RldnBvbGxTZWxlY3RvcicpLAorICAgICAgICAgICAgICAgICAgICAgIlRlc3QgbmVlZHMgc2VsZWN0b3JzLkRldnBvbGxTZWxlY3RvciIpCitjbGFzcyBEZXZwb2xsU2VsZWN0b3JUZXN0Q2FzZShCYXNlU2VsZWN0b3JUZXN0Q2FzZSwgU2NhbGFibGVTZWxlY3Rvck1peEluKToKKworICAgIFNFTEVDVE9SID0gZ2V0YXR0cihzZWxlY3RvcnMsICdEZXZwb2xsU2VsZWN0b3InLCBOb25lKQorCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0RlZmF1bHRTZWxlY3RvclRlc3RDYXNlLCBTZWxlY3RTZWxlY3RvclRlc3RDYXNlLAogICAgICAgICAgICAgIFBvbGxTZWxlY3RvclRlc3RDYXNlLCBFcG9sbFNlbGVjdG9yVGVzdENhc2UsCi0gICAgICAgICAgICAgS3F1ZXVlU2VsZWN0b3JUZXN0Q2FzZV0KKyAgICAgICAgICAgICBLcXVldWVTZWxlY3RvclRlc3RDYXNlLCBEZXZwb2xsU2VsZWN0b3JUZXN0Q2FzZV0KICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCBmMDg0ZWJlLi41NGRlNTA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtOTMxLDcgKzkzMSw3IEBACiAKIGNsYXNzIFRlc3RCYXNpY09wc0J5dGVzKFRlc3RCYXNpY09wcywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5jYXNlICAgPSAic3RyaW5nIHNldCIKKyAgICAgICAgc2VsZi5jYXNlICAgPSAiYnl0ZXMgc2V0IgogICAgICAgICBzZWxmLnZhbHVlcyA9IFtiImEiLCBiImIiLCBiImMiXQogICAgICAgICBzZWxmLnNldCAgICA9IHNldChzZWxmLnZhbHVlcykKICAgICAgICAgc2VsZi5kdXAgICAgPSBzZXQoc2VsZi52YWx1ZXMpCkBAIC0xNzQyLDYgKzE3NDIsMTkgQEAKICAgICAgICAgcy51cGRhdGUocmFuZ2UoMTAwKSkKICAgICAgICAgbGlzdChzaSkKIAorICAgIGRlZiB0ZXN0X21lcmdlX2FuZF9tdXRhdGUoc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goMCkKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgbyk6CisgICAgICAgICAgICAgICAgb3RoZXIuY2xlYXIoKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG90aGVyID0gc2V0KCkKKyAgICAgICAgb3RoZXIgPSB7WCgpIGZvciBpIGluIHJhbmdlKDEwKX0KKyAgICAgICAgcyA9IHswfQorICAgICAgICBzLnVwZGF0ZShvdGhlcikKKwogIyBBcHBsaWNhdGlvbiB0ZXN0cyAoYmFzZWQgb24gRGF2aWQgRXBwc3RlaW4ncyBncmFwaCByZWNpcGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBkZWYgcG93ZXJzZXQoVSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCBkMjgwOWFlLi40ZmFmZGQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogIyBUaGUgb3JpZ2luYWwgdGVzdCBkYXRhIHNldCB3YXMgZnJvbSBzaGVsbHdvcmRzLCBieSBIYXJ0bXV0IEdvZWJlbC4KQEAgLTE5NSw4ICsxOTQsNSBAQAogICAgICAgICBpZiBtZXRobmFtZS5zdGFydHN3aXRoKCJ0ZXN0IikgYW5kIG1ldGhuYW1lICE9ICJ0ZXN0Q29tcGF0IjoKICAgICAgICAgICAgIGRlbGF0dHIoU2hsZXhUZXN0LCBtZXRobmFtZSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNobGV4VGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCA1YjRlN2U3Li41MjI5NTlhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtMzIsNiArMzIsMTIgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBCWjJfU1VQUE9SVEVEID0gRmFsc2UKIAordHJ5OgorICAgIGltcG9ydCBsem1hCisgICAgTFpNQV9TVVBQT1JURUQgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgTFpNQV9TVVBQT1JURUQgPSBGYWxzZQorCiBURVNURk4yID0gVEVTVEZOICsgIjIiCiAKIHRyeToKQEAgLTEyMDgsNiArMTIxNCw4IEBACiAgICAgICAgIGZvcm1hdHMgPSBbJ3RhcicsICdnenRhcicsICd6aXAnXQogICAgICAgICBpZiBCWjJfU1VQUE9SVEVEOgogICAgICAgICAgICAgZm9ybWF0cy5hcHBlbmQoJ2J6dGFyJykKKyAgICAgICAgaWYgTFpNQV9TVVBQT1JURUQ6CisgICAgICAgICAgICBmb3JtYXRzLmFwcGVuZCgneHp0YXInKQogCiAgICAgICAgIHJvb3RfZGlyLCBiYXNlX2RpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCiAgICAgICAgIGV4cGVjdGVkID0gcmxpc3RkaXIocm9vdF9kaXIpCkBAIC0xNjQ0LDYgKzE2NTIsMjQgQEAKICAgICAgICAgcnYgPSBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdiYXInKSkKIAorICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZmlsZV9zcGVjaWFsX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBtb3ZlZCA9IFtdCisgICAgICAgIGRlZiBfY29weShzcmMsIGRzdCk6CisgICAgICAgICAgICBtb3ZlZC5hcHBlbmQoKHNyYywgZHN0KSkKKyAgICAgICAgc2h1dGlsLm1vdmUoc2VsZi5zcmNfZmlsZSwgc2VsZi5kc3RfZGlyLCBjb3B5X2Z1bmN0aW9uPV9jb3B5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb3ZlZCksIDEpCisKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2Rpcl9zcGVjaWFsX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBtb3ZlZCA9IFtdCisgICAgICAgIGRlZiBfY29weShzcmMsIGRzdCk6CisgICAgICAgICAgICBtb3ZlZC5hcHBlbmQoKHNyYywgZHN0KSkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnY2hpbGQnKSkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnY2hpbGQxJykpCisgICAgICAgIHNodXRpbC5tb3ZlKHNlbGYuc3JjX2Rpciwgc2VsZi5kc3RfZGlyLCBjb3B5X2Z1bmN0aW9uPV9jb3B5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb3ZlZCksIDMpCisKIAogY2xhc3MgVGVzdENvcHlGaWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQppbmRleCA3NGY3NGFmLi4xYjgwZmYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQpAQCAtMSwxOSArMSwyNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZworaW1wb3J0IGVudW0KIGltcG9ydCBnYwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAoraW1wb3J0IHNvY2tldAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBzeXMsIG9zLCB0aW1lLCBlcnJubwotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHNwYXduX3B5dGhvbgorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgc3Bhd25fcHl0aG9uCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgX3Rlc3RjYXBpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3Rlc3RjYXBpID0gTm9uZQogCiAKIGNsYXNzIEhhbmRsZXJCQ2FsbGVkKEV4Y2VwdGlvbik6CkBAIC0zOSw2ICs0NSwyMyBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAKK2NsYXNzIEdlbmVyaWNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHRocmVhZGluZyBpcyBOb25lLCAidGVzdCBuZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKKyAgICBkZWYgdGVzdF9lbnVtcyhzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyKHNpZ25hbCk6CisgICAgICAgICAgICBzaWcgPSBnZXRhdHRyKHNpZ25hbCwgbmFtZSkKKyAgICAgICAgICAgIGlmIG5hbWUgaW4geydTSUdfREZMJywgJ1NJR19JR04nfToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lnLCBzaWduYWwuSGFuZGxlcnMpCisgICAgICAgICAgICBlbGlmIG5hbWUgaW4geydTSUdfQkxPQ0snLCAnU0lHX1VOQkxPQ0snLCAnU0lHX1NFVE1BU0snfToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lnLCBzaWduYWwuU2lnbWFza3MpCisgICAgICAgICAgICBlbGlmIG5hbWUuc3RhcnRzd2l0aCgnU0lHJykgYW5kIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ1NJR18nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lnLCBzaWduYWwuU2lnbmFscykKKyAgICAgICAgICAgIGVsaWYgbmFtZS5zdGFydHN3aXRoKCdDVFJMXycpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWcsIHNpZ25hbC5TaWduYWxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLnBsYXRmb3JtLCAid2luMzIiKQorCisKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBJbnRlclByb2Nlc3NTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgTUFYX0RVUkFUSU9OID0gMjAgICAjIEVudGlyZSB0ZXN0IHNob3VsZCBsYXN0IGF0IG1vc3QgMjAgc2VjLgpAQCAtMTk1LDYgKzIxOCw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRzaWduYWwoc2VsZik6CiAgICAgICAgIGh1cCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi50cml2aWFsX3NpZ25hbF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaHVwLCBzaWduYWwuSGFuZGxlcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLmdldHNpZ25hbChzaWduYWwuU0lHSFVQKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRyaXZpYWxfc2lnbmFsX2hhbmRsZXIpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgaHVwKQpAQCAtMjI5LDE1ICsyNTMsNzcgQEAKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfZmQoc2VsZik6CiAgICAgICAgIGZkID0gc3VwcG9ydC5tYWtlX2JhZF9mZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNpZ25hbC5zZXRfd2FrZXVwX2ZkLCBmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE9TRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCwgZmQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3NvY2tldChzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBmZCA9IHNvY2suZmlsZW5vKCkKKyAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPU0Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQsIGZkKQorCisgICAgZGVmIHRlc3Rfc2V0X3dha2V1cF9mZF9yZXN1bHQoc2VsZik6CisgICAgICAgIHIxLCB3MSA9IG9zLnBpcGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHIxKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHcxKQorICAgICAgICByMiwgdzIgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByMikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3MikKKworICAgICAgICBpZiBoYXNhdHRyKG9zLCAnc2V0X2Jsb2NraW5nJyk6CisgICAgICAgICAgICBvcy5zZXRfYmxvY2tpbmcodzEsIEZhbHNlKQorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHcyLCBGYWxzZSkKKworICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZCh3MiksIHcxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgdzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQoLTEpLCAtMSkKKworICAgIGRlZiB0ZXN0X3NldF93YWtldXBfZmRfc29ja2V0X3Jlc3VsdChzZWxmKToKKyAgICAgICAgc29jazEgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2sxLmNsb3NlKQorICAgICAgICBzb2NrMS5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgZmQxID0gc29jazEuZmlsZW5vKCkKKworICAgICAgICBzb2NrMiA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jazIuY2xvc2UpCisgICAgICAgIHNvY2syLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBmZDIgPSBzb2NrMi5maWxlbm8oKQorCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKGZkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZChmZDIpLCBmZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQoLTEpLCBmZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQoLTEpLCAtMSkKKworICAgICMgT24gV2luZG93cywgZmlsZXMgYXJlIGFsd2F5cyBibG9ja2luZyBhbmQgV2luZG93cyBkb2VzIG5vdCBwcm92aWRlIGEKKyAgICAjIGZ1bmN0aW9uIHRvIHRlc3QgaWYgYSBzb2NrZXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUuCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgInRlc3RzIHNwZWNpZmljIHRvIFBPU0lYIikKKyAgICBkZWYgdGVzdF9zZXRfd2FrZXVwX2ZkX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICByZmQsIHdmZCA9IG9zLnBpcGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHJmZCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3ZmQpCisKKyAgICAgICAgIyBmZCBtdXN0IGJlIG5vbi1ibG9ja2luZworICAgICAgICBvcy5zZXRfYmxvY2tpbmcod2ZkLCBUcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod2ZkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmQgJXMgbXVzdCBiZSBpbiBub24tYmxvY2tpbmcgbW9kZSIgJSB3ZmQpCisKKyAgICAgICAgIyBub24tYmxvY2tpbmcgaXMgb2sKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHdmZCwgRmFsc2UpCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdmZCkKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQoLTEpCiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFdha2V1cFNpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQogICAgIGRlZiBjaGVja193YWtldXAoc2VsZiwgdGVzdF9ib2R5LCAqc2lnbmFscywgb3JkZXJlZD1UcnVlKToKICAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgotICAgICAgICBpbXBvcnQgZmNudGwKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgaW1wb3J0IHNpZ25hbAogICAgICAgICBpbXBvcnQgc3RydWN0CkBAIC0yNjAsMTAgKzM0Niw3IEBACiAKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAgICAgcmVhZCwgd3JpdGUgPSBvcy5waXBlKCkKLSAgICAgICAgZm9yIGZkIGluIChyZWFkLCB3cml0ZSk6Ci0gICAgICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZMLCAwKQotICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyB8IG9zLk9fTk9OQkxPQ0sKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZMLCBmbGFncykKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHdyaXRlLCBGYWxzZSkKICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod3JpdGUpCiAKICAgICAgICAgdGVzdCgpCkBAIC0yNzEsMjEgKzM1NCwyMSBAQAogCiAgICAgICAgIG9zLmNsb3NlKHJlYWQpCiAgICAgICAgIG9zLmNsb3NlKHdyaXRlKQotICAgICAgICAiIiIuZm9ybWF0KHNpZ25hbHMsIG9yZGVyZWQsIHRlc3RfYm9keSkKKyAgICAgICAgIiIiLmZvcm1hdCh0dXBsZShtYXAoaW50LCBzaWduYWxzKSksIG9yZGVyZWQsIHRlc3RfYm9keSkKIAogICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQogICAgIGRlZiB0ZXN0X3dha2V1cF93cml0ZV9lcnJvcihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTYxMDU6IHdyaXRlKCkgZXJyb3JzIGluIHRoZSBDIHNpZ25hbCBoYW5kbGVyIHNob3VsZCBub3QKICAgICAgICAgIyBwYXNzIHNpbGVudGx5LgogICAgICAgICAjIFVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQuCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCiAgICAgICAgIGltcG9ydCBlcnJubwotICAgICAgICBpbXBvcnQgZmNudGwKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGltcG9ydCBzaWduYWwKICAgICAgICAgaW1wb3J0IHN5cwotICAgICAgICBpbXBvcnQgdGltZQogICAgICAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCiAKICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CkBAIC0yOTMsMTUgKzM3NiwxMyBAQAogCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKLSAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bChyLCBmY250bC5GX0dFVEZMLCAwKQotICAgICAgICBmY250bC5mY250bChyLCBmY250bC5GX1NFVEZMLCBmbGFncyB8IG9zLk9fTk9OQkxPQ0spCisgICAgICAgIG9zLnNldF9ibG9ja2luZyhyLCBGYWxzZSkKIAogICAgICAgICAjIFNldCB3YWtldXBfZmQgYSByZWFkLW9ubHkgZmlsZSBkZXNjcmlwdG9yIHRvIHRyaWdnZXIgdGhlIGVycm9yCiAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyOgotICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoNS4wKQorICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0FMUk0pCiAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKICAgICAgICAgICAgICMgQW4gaWdub3JlZCBleGNlcHRpb24gc2hvdWxkIGhhdmUgYmVlbiBwcmludGVkIG91dCBvbiBzdGRlcnIKICAgICAgICAgICAgIGVyciA9IGVyci5nZXR2YWx1ZSgpCkBAIC0zMTIsNiArMzkzLDkgQEAKICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihlcnIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisKKyAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgb3MuY2xvc2UodykKICAgICAgICAgIiIiCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKICAgICAgICAgdHJ5OgpAQCAtMzM0LDE4ICs0MTgsMjggQEAKICAgICAgICAgICAgIFRJTUVPVVRfRlVMTCA9IDEwCiAgICAgICAgICAgICBUSU1FT1VUX0hBTEYgPSA1CiAKKyAgICAgICAgICAgIGNsYXNzIEludGVycnVwdFNlbGVjdChFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJydXB0U2VsZWN0CisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQorCiAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgIGJlZm9yZV90aW1lID0gdGltZS50aW1lKCkKKwogICAgICAgICAgICAgIyBXZSBhdHRlbXB0IHRvIGdldCBhIHNpZ25hbCBkdXJpbmcgdGhlIHNsZWVwLAogICAgICAgICAgICAgIyBiZWZvcmUgc2VsZWN0IGlzIGNhbGxlZAotICAgICAgICAgICAgdGltZS5zbGVlcChUSU1FT1VUX0ZVTEwpCi0gICAgICAgICAgICBtaWRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBkdCA9IG1pZF90aW1lIC0gYmVmb3JlX3RpbWUKLSAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbXSwgW10sIFRJTUVPVVRfRlVMTCkKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRTZWxlY3Q6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInNlbGVjdCgpIHdhcyBub3QgaW50ZXJydXB0ZWQiKQorCisgICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3JlYWRdLCBbXSwgW10sIFRJTUVPVVRfRlVMTCkKLSAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gbWlkX3RpbWUKKyAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBiZWZvcmVfdGltZQogICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQogICAgICAgICAiIiIsIHNpZ25hbC5TSUdBTFJNKQpAQCAtMzU4LDE2ICs0NTIsMjMgQEAKICAgICAgICAgICAgIFRJTUVPVVRfRlVMTCA9IDEwCiAgICAgICAgICAgICBUSU1FT1VUX0hBTEYgPSA1CiAKKyAgICAgICAgICAgIGNsYXNzIEludGVycnVwdFNlbGVjdChFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJydXB0U2VsZWN0CisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQorCiAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgIGJlZm9yZV90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIGJlZm9yZV90aW1lID0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgIyBXZSBhdHRlbXB0IHRvIGdldCBhIHNpZ25hbCBkdXJpbmcgdGhlIHNlbGVjdCBjYWxsCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbcmVhZF0sIFtdLCBbXSwgVElNRU9VVF9GVUxMKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0U2VsZWN0OgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJPU0Vycm9yIG5vdCByYWlzZWQiKQotICAgICAgICAgICAgYWZ0ZXJfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJzZWxlY3QoKSB3YXMgbm90IGludGVycnVwdGVkIikKKyAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICBkdCA9IGFmdGVyX3RpbWUgLSBiZWZvcmVfdGltZQogICAgICAgICAgICAgaWYgZHQgPj0gVElNRU9VVF9IQUxGOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgPj0gJXMiICUgKGR0LCBUSU1FT1VUX0hBTEYpKQpAQCAtMzc1LDkgKzQ3NiwxMCBAQAogCiAgICAgZGVmIHRlc3Rfc2lnbnVtKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgorICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKLSAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdVU1IxKQotICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR0FMUk0pCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWduYWwuU0lHQUxSTSkKICAgICAgICAgIiIiLCBzaWduYWwuU0lHVVNSMSwgc2lnbmFsLlNJR0FMUk0pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLApAQCAtMzkxLDEzICs0OTMsOTcgQEAKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtMiwgaGFuZGxlcikKIAogICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCAoc2lnbnVtMSwgc2lnbnVtMikpCi0gICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0xKQotICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMikKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbnVtMSkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbnVtMikKICAgICAgICAgICAgICMgVW5ibG9ja2luZyB0aGUgMiBzaWduYWxzIGNhbGxzIHRoZSBDIHNpZ25hbCBoYW5kbGVyIHR3aWNlCiAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQogICAgICAgICAiIiIsICBzaWduYWwuU0lHVVNSMSwgc2lnbmFsLlNJR1VTUjIsIG9yZGVyZWQ9RmFsc2UpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzb2NrZXRwYWlyJyksICduZWVkIHNvY2tldC5zb2NrZXRwYWlyJykKK2NsYXNzIFdha2V1cFNvY2tldFNpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCisgICAgZGVmIHRlc3Rfc29ja2V0KHNlbGYpOgorICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHNvY2tldAorICAgICAgICBpbXBvcnQgc3RydWN0CisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHSU5UCisgICAgICAgIHNpZ25hbHMgPSAoc2lnbnVtLCkKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICByZWFkLCB3cml0ZSA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgcmVhZC5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgd3JpdGUuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdyaXRlLmZpbGVubygpKQorCisgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbnVtKQorCisgICAgICAgIGRhdGEgPSByZWFkLnJlY3YoMSkKKyAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIm5vIHNpZ251bSB3cml0dGVuIikKKyAgICAgICAgcmFpc2VkID0gc3RydWN0LnVucGFjaygnQicsIGRhdGEpCisgICAgICAgIGlmIHJhaXNlZCAhPSBzaWduYWxzOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlciAhPSAlciIgJSAocmFpc2VkLCBzaWduYWxzKSkKKworICAgICAgICByZWFkLmNsb3NlKCkKKyAgICAgICAgd3JpdGUuY2xvc2UoKQorICAgICAgICAiIiIKKworICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIGRlZiB0ZXN0X3NlbmRfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZC4KKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgYWN0aW9uID0gJ3NlbmQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhY3Rpb24gPSAnd3JpdGUnCisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICBpbXBvcnQgZXJybm8KKyAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgc29ja2V0CisgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgICAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCisKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0lOVAorCisgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorCisgICAgICAgIHJlYWQsIHdyaXRlID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICByZWFkLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICB3cml0ZS5zZXRibG9ja2luZyhGYWxzZSkKKworICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3cml0ZS5maWxlbm8oKSkKKworICAgICAgICAjIENsb3NlIHNvY2tldHM6IHNlbmQoKSB3aWxsIGZhaWwKKyAgICAgICAgcmVhZC5jbG9zZSgpCisgICAgICAgIHdyaXRlLmNsb3NlKCkKKworICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycjoKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbnVtKQorCisgICAgICAgIGVyciA9IGVyci5nZXR2YWx1ZSgpCisgICAgICAgIGlmICgnRXhjZXB0aW9uIGlnbm9yZWQgd2hlbiB0cnlpbmcgdG8ge2FjdGlvbn0gdG8gdGhlIHNpZ25hbCB3YWtldXAgZmQnCisgICAgICAgICAgICBub3QgaW4gZXJyKToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKGVycikKKyAgICAgICAgIiIiLmZvcm1hdChhY3Rpb249YWN0aW9uKQorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisKKwogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFNpZ2ludGVycnVwdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MTgsNyArNjA0LDcgQEAKICAgICAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKIAogICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIDEgLyAwCiAKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCiAgICAgICAgICAgICBpZiBpbnRlcnJ1cHQgaXMgbm90IE5vbmU6CkBAIC00MjgsMTggKzYxNCwyMSBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKICAgICAgICAgICAgICMgcnVuIHRoZSB0ZXN0IHR3aWNlCi0gICAgICAgICAgICBmb3IgbG9vcCBpbiByYW5nZSgyKToKLSAgICAgICAgICAgICAgICAjIHNlbmQgYSBTSUdBTFJNIGluIGEgc2Vjb25kIChkdXJpbmcgdGhlIHJlYWQpCi0gICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIGJsb2NraW5nIGNhbGw6IHJlYWQgZnJvbSBhIHBpcGUgd2l0aG91dCBkYXRhCi0gICAgICAgICAgICAgICAgICAgIG9zLnJlYWQociwgMSkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMikKLSAgICAgICAgICAgIHN5cy5leGl0KDMpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIGxvb3AgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICAgICAgICAgICMgc2VuZCBhIFNJR0FMUk0gaW4gYSBzZWNvbmQgKGR1cmluZyB0aGUgcmVhZCkKKyAgICAgICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYmxvY2tpbmcgY2FsbDogcmVhZCBmcm9tIGEgcGlwZSB3aXRob3V0IGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJlYWQociwgMSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMikKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgzKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHcpCiAgICAgICAgICIiIiAlIChpbnRlcnJ1cHQsKQogICAgICAgICB3aXRoIHNwYXduX3B5dGhvbignLWMnLCBjb2RlKSBhcyBwcm9jZXNzOgogICAgICAgICAgICAgdHJ5OgpAQCAtNTM3LDggKzcyNiw4IEBACiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1ZUQUxSTSwgc2VsZi5zaWdfdnRhbHJtKQogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNlbGYuaXRpbWVyLCAwLjMsIDAuMikKIAotICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgLSBzdGFydF90aW1lIDwgNjAuMDoKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUgPCA2MC4wOgogICAgICAgICAgICAgIyB1c2UgdXAgc29tZSB2aXJ0dWFsIHRpbWUgYnkgZG9pbmcgcmVhbCB3b3JrCiAgICAgICAgICAgICBfID0gcG93KDEyMzQ1LCA2Nzg5MCwgMTAwMDAwMTkpCiAgICAgICAgICAgICBpZiBzaWduYWwuZ2V0aXRpbWVyKHNlbGYuaXRpbWVyKSA9PSAoMC4wLCAwLjApOgpAQCAtNTYwLDggKzc0OSw4IEBACiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1BST0YsIHNlbGYuc2lnX3Byb2YpCiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2VsZi5pdGltZXIsIDAuMiwgMC4yKQogCi0gICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICB3aGlsZSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUgPCA2MC4wOgorICAgICAgICBzdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRfdGltZSA8IDYwLjA6CiAgICAgICAgICAgICAjIGRvIHNvbWUgd29yawogICAgICAgICAgICAgXyA9IHBvdygxMjM0NSwgNjc4OTAsIDEwMDAwMDE5KQogICAgICAgICAgICAgaWYgc2lnbmFsLmdldGl0aW1lcihzZWxmLml0aW1lcikgPT0gKDAuMCwgMC4wKToKQEAgLTYwNCw2ICs3OTMsOCBAQAogICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKICAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKICAgICAgICAgICAgIHBlbmRpbmcgPSBzaWduYWwuc2lncGVuZGluZygpCisgICAgICAgICAgICBmb3Igc2lnIGluIHBlbmRpbmc6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2lnLCBzaWduYWwuU2lnbmFscyksIHJlcHIocGVuZGluZykKICAgICAgICAgICAgIGlmIHBlbmRpbmcgIT0ge3NpZ251bX06CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCclcyAhPSB7JXN9JyAlIChwZW5kaW5nLCBzaWdudW0pKQogICAgICAgICAgICAgdHJ5OgpAQCAtNjYwLDYgKzg1MSw3IEBACiAgICAgICAgIGNvZGUgPSAnJydpZiAxOgogICAgICAgICBpbXBvcnQgc2lnbmFsCiAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgZnJvbSBzaWduYWwgaW1wb3J0IFNpZ25hbHMKIAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIDEvMApAQCAtNzAyLDYgKzg5NCw3IEBACiAgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CiAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKICAgICAgICAgICAgIHJlY2VpdmVkID0gc2lnbmFsLnNpZ3dhaXQoW3NpZ251bV0pCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShyZWNlaXZlZCwgc2lnbmFsLlNpZ25hbHMpLCByZWNlaXZlZAogICAgICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gc2lnbnVtOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigncmVjZWl2ZWQgJXMsIG5vdCAlcycgJSAocmVjZWl2ZWQsIHNpZ251bSkpCiAgICAgICAgICcnJykKQEAgLTc1NywzNSArOTUwLDYgQEAKICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0FMUk0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2lnbmFsLnNpZ3RpbWVkd2FpdCwgW3NpZ251bV0sIC0xLjApCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQotICAgICMgSXNzdWUgIzE4MjM4OiBzaWd3YWl0aW5mbygpIGNhbiBiZSBpbnRlcnJ1cHRlZCBvbiBMaW51eCAocmFpc2VzCi0gICAgIyBJbnRlcnJ1cHRlZEVycm9yKSwgYnV0IG5vdCBvbiBBSVgKLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJhaXgiKSwKLSAgICAgICAgICAgICAgICAgICAgICdzaWduYWwuc2lnd2FpdGluZm8oKSBjYW5ub3QgYmUgaW50ZXJydXB0ZWQgb24gQUlYJykKLSAgICBkZWYgdGVzdF9zaWd3YWl0aW5mb19pbnRlcnJ1cHRlZChzZWxmKToKLSAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHVVNSMSwgJycnCi0gICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6Ci0gICAgICAgICAgICBpbXBvcnQgZXJybm8KLQotICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBUcnVlCi0gICAgICAgICAgICBkZWYgYWxhcm1faGFuZGxlcihzaWdudW0sIGZyYW1lKToKLSAgICAgICAgICAgICAgICBobmRsX2NhbGxlZCA9IEZhbHNlCi0KLSAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGFsYXJtX2hhbmRsZXIpCi0gICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzaWduYWwuc2lnd2FpdGluZm8oW3NpZ25hbC5TSUdVU1IxXSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhuZGxfY2FsbGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJTSUdBTFJNIGhhbmRsZXIgbm90IGNhbGxlZCIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIEVJTlRSIHRvIGJlIHJhaXNlZCBieSBzaWd3YWl0aW5mbyIpCi0gICAgICAgICcnJykKLQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0KCknKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCkBAIC04NDIsOCArMTAwNiwxNCBAQAogICAgICAgICBkZWYga2lsbChzaWdudW0pOgogICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQogCisgICAgICAgIGRlZiBjaGVja19tYXNrKG1hc2spOgorICAgICAgICAgICAgZm9yIHNpZyBpbiBtYXNrOgorICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ25hbHMpLCByZXByKHNpZykKKwogICAgICAgICBkZWYgcmVhZF9zaWdtYXNrKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSkKKyAgICAgICAgICAgIHNpZ21hc2sgPSBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtdKQorICAgICAgICAgICAgY2hlY2tfbWFzayhzaWdtYXNrKQorICAgICAgICAgICAgcmV0dXJuIHNpZ21hc2sKIAogICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQogCkBAIC04NTIsNiArMTAyMiw3IEBACiAKICAgICAgICAgIyBVbmJsb2NrIFNJR1VTUjEgKGFuZCBjb3B5IHRoZSBvbGQgbWFzaykgdG8gdGVzdCBvdXIgc2lnbmFsIGhhbmRsZXIKICAgICAgICAgb2xkX21hc2sgPSBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgIGNoZWNrX21hc2sob2xkX21hc2spCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGtpbGwoc2lnbnVtKQogICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CkBAIC04NjEsMTEgKzEwMzIsMTMgQEAKIAogICAgICAgICAjIEJsb2NrIGFuZCB0aGVuIHJhaXNlIFNJR1VTUjEuIFRoZSBzaWduYWwgaXMgYmxvY2tlZDogdGhlIHNpZ25hbAogICAgICAgICAjIGhhbmRsZXIgaXMgbm90IGNhbGxlZCwgYW5kIHRoZSBzaWduYWwgaXMgbm93IHBlbmRpbmcKLSAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgbWFzayA9IHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgIGNoZWNrX21hc2sobWFzaykKICAgICAgICAga2lsbChzaWdudW0pCiAKICAgICAgICAgIyBDaGVjayB0aGUgbmV3IG1hc2sKICAgICAgICAgYmxvY2tlZCA9IHJlYWRfc2lnbWFzaygpCisgICAgICAgIGNoZWNrX21hc2soYmxvY2tlZCkKICAgICAgICAgaWYgc2lnbnVtIG5vdCBpbiBibG9ja2VkOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBub3QgaW4gJXMiICUgKHNpZ251bSwgYmxvY2tlZCkpCiAgICAgICAgIGlmIG9sZF9tYXNrIF4gYmxvY2tlZCAhPSB7c2lnbnVtfToKQEAgLTkyNiwxNSArMTA5OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleGl0Y29kZSwgc3Rkb3V0KSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdHJ5OgotICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChQb3NpeFRlc3RzLCBJbnRlclByb2Nlc3NTaWduYWxUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FrZXVwRkRUZXN0cywgV2FrZXVwU2lnbmFsVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ2ludGVycnVwdFRlc3QsIEl0aW1lclRlc3QsIFdpbmRvd3NTaWduYWxUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ1NpZ25hbHNUZXN0cykKLSAgICBmaW5hbGx5OgotICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQotCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKaW5kZXggZjcxY2Y3My4uNjYxNTA4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAgICAgICAgICAgICByZS5lc2NhcGUob3MucGF0aC5qb2luKHB0aF9kaXIsIHB0aF9mbikpKQogICAgICAgICAjIFhYWDogZGl0dG8gcHJldmlvdXMgWFhYIGNvbW1lbnQuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnVHJhY2ViYWNrJykKLSAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUeXBlRXJyb3InKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ1ZhbHVlRXJyb3InKQogCiAgICAgZGVmIHRlc3RfYWRkc2l0ZWRpcihzZWxmKToKICAgICAgICAgIyBTYW1lIHRlc3RzIGZvciB0ZXN0X2FkZHBhY2thZ2Ugc2luY2UgYWRkc2l0ZWRpcigpIGVzc2VudGlhbGx5IGp1c3QKQEAgLTIzNSwyMCArMjM1LDE4IEBACiAgICAgICAgICAgICAjIE9TIFggZnJhbWV3b3JrIGJ1aWxkcwogICAgICAgICAgICAgc2l0ZS5QUkVGSVhFUyA9IFsnUHl0aG9uLmZyYW1ld29yayddCiAgICAgICAgICAgICBkaXJzID0gc2l0ZS5nZXRzaXRlcGFja2FnZXMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKICAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbignL0xpYnJhcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiUFlUSE9ORlJBTUVXT1JLIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1syXSwgd2FudGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDEpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywgJ3B5dGhvbicgKyBzeXMudmVyc2lvbls6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzBdLCB3YW50ZWQpCi0gICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywgJ3NpdGUtcHl0aG9uJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1sxXSwgd2FudGVkKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBvdGhlciBwbGF0Zm9ybXMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQpAQCAtMzU3LDggKzM1NSwxMiBAQAogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2MucmV0dXJuY29kZSwgMCkKICAgICAgICAgb3NfX2ZpbGVfXywgb3NfX2NhY2hlZF9fID0gc3Rkb3V0LnNwbGl0bGluZXMoKVs6Ml0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMob3NfX2ZpbGVfXykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKG9zX19jYWNoZWRfXykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKG9zX19maWxlX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFic29sdXRlIHBhdGgsIGdvdCB7fSIKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQob3NfX2ZpbGVfXy5kZWNvZGUoJ2FzY2lpJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Ficyhvc19fY2FjaGVkX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFic29sdXRlIHBhdGgsIGdvdCB7fSIKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQob3NfX2NhY2hlZF9fLmRlY29kZSgnYXNjaWknKSkpCiAKICAgICBkZWYgdGVzdF9ub19kdXBsaWNhdGVfcGF0aHMoc2VsZik6CiAgICAgICAgICMgTm8gZHVwbGljYXRlIHBhdGhzIHNob3VsZCBleGlzdCBpbiBzeXMucGF0aApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbGljZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkKaW5kZXggMWVkNzFmOS4uOGM0ZTY3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbGljZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NsaWNlLnB5CkBAIC0xLDcgKzEsNiBAQAogIyB0ZXN0cyBmb3Igc2xpY2Ugb2JqZWN0czsgaW4gcGFydGljdWxhciB0aGUgaW5kaWNlcyBtZXRob2QuCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCiAKIGltcG9ydCBpdGVydG9vbHMKQEAgLTI0MSw4ICsyNDAsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmluZGljZXMoMTUpLCB0LmluZGljZXMoMTUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChzKSwgaWQodCkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbGljZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CmluZGV4IDkzZjE0YzQuLjFhYTU1ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRleHR3cmFwCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1vY2tfc29ja2V0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgaW8KQEAgLTcsMTQgKzgsMjAgQEAKIAogCiBjbGFzcyBEdW1teVNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyKToKLSAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLm1lc3NhZ2VzID0gW10KKyAgICAgICAgaWYgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICBzZWxmLnJldHVybl9zdGF0dXMgPSAncmV0dXJuIHN0YXR1cycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucmV0dXJuX3N0YXR1cyA9IGIncmV0dXJuIHN0YXR1cycKIAotICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgorICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3cpOgogICAgICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZCgocGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpKQotICAgICAgICBpZiBkYXRhID09ICdyZXR1cm4gc3RhdHVzJzoKKyAgICAgICAgaWYgZGF0YSA9PSBzZWxmLnJldHVybl9zdGF0dXM6CiAgICAgICAgICAgICByZXR1cm4gJzI1MCBPa2lzaCcKKyAgICAgICAgaWYgJ21haWxfb3B0aW9ucycgaW4ga3cgYW5kICdTTVRQVVRGOCcgaW4ga3dbJ21haWxfb3B0aW9ucyddOgorICAgICAgICAgICAgcmV0dXJuICcyNTAgU01UUFVURjggbWVzc2FnZSBva2lzaCcKIAogCiBjbGFzcyBEdW1teURpc3BhdGNoZXJCcm9rZW4oRXhjZXB0aW9uKToKQEAgLTMxLDkgKzM4LDEwIEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAKICAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2VfdW5pbXBsZW1lbnRlZChzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcignYScsICdiJykKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQotICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICAgICAgIGRlZiB3cml0ZV9saW5lKGxpbmUpOgogICAgICAgICAgICAgY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQpAQCAtNDUsMTkgKzUzLDI1MSBAQAogICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHdyaXRlX2xpbmUsIGInc3BhbVxyXG4uXHJcbicpCiAKKyAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5zKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfYW5kX2VuYWJsZV9TTVRQVVRGOF9yYWlzZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwKKyAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIsCisgICAgICAgICAgICAoc3VwcG9ydC5IT1NULCAwKSwKKyAgICAgICAgICAgICgnYicsIDApLAorICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUsCisgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQogICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKIAogCitjbGFzcyBEZWJ1Z2dpbmdTZXJ2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKworICAgIGRlZiBzZW5kX2RhdGEoc2VsZiwgY2hhbm5lbCwgZGF0YSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlKToKKyAgICAgICAgZGVmIHdyaXRlX2xpbmUobGluZSk6CisgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKKyAgICAgICAgd3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIHdyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlIEJPRFk9OEJJVE1JTUUgU01UUFVURjgnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICB3cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHdyaXRlX2xpbmUoZGF0YSkKKyAgICAgICAgd3JpdGVfbGluZShiJy4nKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3dpdGhfZGVjb2RlX2RhdGFfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaGVsbG9cbicpCisgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tCisgICAgICAgICAgICAgRnJvbTogdGVzdAorICAgICAgICAgICAgIFgtUGVlcjogcGVlci1hZGRyZXNzCisKKyAgICAgICAgICAgICBoZWxsbworICAgICAgICAgICAgIC0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3dpdGhfZGVjb2RlX2RhdGFfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaFx4YzNceGE5bGxvXHhmZlxuJykKKyAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgIC0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICBiJ0Zyb206IHRlc3QnCisgICAgICAgICAgICAgYidYLVBlZXI6IHBlZXItYWRkcmVzcycKKyAgICAgICAgICAgICBiJycKKyAgICAgICAgICAgICBiJ2hcXHhjM1xceGE5bGxvXFx4ZmYnCisgICAgICAgICAgICAgLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9lbmFibGVfU01UUFVURjhfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQorICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLQorICAgICAgICAgICAgIGInRnJvbTogdGVzdCcKKyAgICAgICAgICAgICBiJ1gtUGVlcjogcGVlci1hZGRyZXNzJworICAgICAgICAgICAgIGInJworICAgICAgICAgICAgIGInaFxceGMzXFx4YTlsbG9cXHhmZicKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfU01UUFVURjhfbWVzc2FnZV93aXRoX2VuYWJsZV9TTVRQVVRGOF90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhceGMzXHhhOWxsb1x4ZmZcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgIC0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICBtYWlsIG9wdGlvbnM6IFsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddCisgICAgICAgICAgICAgYidGcm9tOiB0ZXN0JworICAgICAgICAgICAgIGInWC1QZWVyOiBwZWVyLWFkZHJlc3MnCisgICAgICAgICAgICAgYicnCisgICAgICAgICAgICAgYidoXFx4YzNcXHhhOWxsb1xceGZmJworICAgICAgICAgICAgIC0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKworCitjbGFzcyBUZXN0RmFtaWx5RGV0ZWN0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICJJUHY2IG5vdCBlbmFibGVkIikKKyAgICBkZWYgdGVzdF9zb2NrZXRfdXNlc19JUHY2KHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksIChzdXBwb3J0LkhPU1QsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVDYpCisKKyAgICBkZWYgdGVzdF9zb2NrZXRfdXNlc19JUHY0KHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoc3VwcG9ydC5IT1NUdjYsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVCkKKworCitjbGFzcyBUZXN0UmNwdE9wdGlvblBhcnNpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGVycm9yX3Jlc3BvbnNlID0gKGInNTU1IFJDUFQgVE8gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgJworICAgICAgICAgICAgICAgICAgICAgIGInaW1wbGVtZW50ZWRcclxuJykKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBjaGFubmVsLCBsaW5lKToKKyAgICAgICAgY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X3BhcmFtc19yZWplY3RlZChzZWxmKToKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInUkNQVCB0bzogPGZvb0BleGFtcGxlLmNvbT4gZm9vPWJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgc2VsZi5lcnJvcl9yZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X25vdGhpbmdfYWNjZXB0ZWQoc2VsZik6CisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisKK2NsYXNzIFRlc3RNYWlsT3B0aW9uUGFyc2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZXJyb3JfcmVzcG9uc2UgPSAoYic1NTUgTUFJTCBGUk9NIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICBiJ2ltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgY2hhbm5lbCwgbGluZSk6CisgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBmb3IgbGluZSBpbiBbCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCcsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCBCT0RZPThCSVRNSU1FJywKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIEJPRFk9VU5LTk9XTicsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBib2R5PThiaXRtaW1lJywKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBsaW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBzZWxmLmVycm9yX3Jlc3BvbnNlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBmb3IgbGluZSBpbiBbCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCcsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCBCT0RZPThCSVRNSU1FJywKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBsaW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBzZWxmLmVycm9yX3Jlc3BvbnNlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICBjaGFubmVsLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjggQk9EWT1VTktOT1dOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMSBFcnJvcjogQk9EWSBjYW4gb25seSBiZSBvbmUgb2YgN0JJVCwgOEJJVE1JTUVcclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgYm9keT04Yml0bWltZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X3dpdGhfZW5hYmxlX3NtdHB1dGY4X3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgIGNoYW5uZWwsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBib2R5PThiaXRtaW1lIHNtdHB1dGY4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisKIGNsYXNzIFNNVFBEQ2hhbm5lbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKICAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkcikKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC02OSw3ICszMDksOSBAQAogICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfYnJva2VuX2Nvbm5lY3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKER1bW15RGlzcGF0Y2hlckJyb2tlbiwgQnJva2VuRHVtbXlTZXJ2ZXIsICdhJywgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIER1bW15RGlzcGF0Y2hlckJyb2tlbiwgQnJva2VuRHVtbXlTZXJ2ZXIsCisgICAgICAgICAgICAoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPVRydWUpCiAKICAgICBkZWYgdGVzdF9zZXJ2ZXJfYWNjZXB0KHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVfYWNjZXB0KCkKQEAgLTIxNCw2ICs0NTYsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmdcclxuJykKIAorICAgIGRlZiB0ZXN0X01BSUxfY29tbWFuZF9yZWplY3RzX1NNVFBVVEY4X2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8bmFpdmVAZXhhbXBsZS5jb20+IEJPRFk9OEJJVE1JTUUgU01UUFVURjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjFdLCBiJzUnKQorCiAgICAgZGVmIHRlc3RfZGF0YV9sb25nZXJfdGhhbl9kZWZhdWx0X2RhdGFfc2l6ZV9saW1pdChzZWxmKToKICAgICAgICAgIyBIYWNrIHRoZSBkZWZhdWx0IHNvIHdlIGRvbid0IGhhdmUgdG8gZ2VuZXJhdGUgc28gbXVjaCBkYXRhLgogICAgICAgICBzZWxmLmNoYW5uZWwuZGF0YV9zaXplX2xpbWl0ID0gMTA0OApAQCAtMzg3LDcgKzYzNSwxMCBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAotICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZSddLCAnZGF0YVxubW9yZScpXSkKKyAgICAgICAgICAgIFsoKCdwZWVyLWFkZHJlc3MnLCAncGVlci1wb3J0JyksCisgICAgICAgICAgICAgICdlZ2dzQGV4YW1wbGUnLAorICAgICAgICAgICAgICBbJ3NwYW1AZXhhbXBsZSddLAorICAgICAgICAgICAgICAnZGF0YVxubW9yZScpXSkKIAogICAgIGRlZiB0ZXN0X0RBVEFfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQpAQCAtNDE3LDcgKzY2OCwxMCBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG4uJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKLSAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnLCdoYW1AZXhhbXBsZSddLCAnZGF0YScpXSkKKyAgICAgICAgICAgIFsoKCdwZWVyLWFkZHJlc3MnLCAncGVlci1wb3J0JyksCisgICAgICAgICAgICAgICdlZ2dzQGV4YW1wbGUnLAorICAgICAgICAgICAgICBbJ3NwYW1AZXhhbXBsZScsJ2hhbUBleGFtcGxlJ10sCisgICAgICAgICAgICAgICdkYXRhJyldKQogCiAgICAgZGVmIHRlc3RfbWFudWFsX3N0YXR1cyhzZWxmKToKICAgICAgICAgIyBjaGVja3MgdGhhdCB0aGUgQ2hhbm5lbCBpcyBhYmxlIHRvIHJldHVybiBhIGN1c3RvbSBzdGF0dXMgbWVzc2FnZQpAQCAtNDM5LDcgKzY5MywxMCBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG4uJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKLSAgICAgICAgICAgIFsoJ3BlZXInLCAnZm9vQGV4YW1wbGUnLCBbJ2VnZ3NAZXhhbXBsZSddLCAnZGF0YScpXSkKKyAgICAgICAgICAgIFsoKCdwZWVyLWFkZHJlc3MnLCAncGVlci1wb3J0JyksCisgICAgICAgICAgICAgICAnZm9vQGV4YW1wbGUnLAorICAgICAgICAgICAgICAgWydlZ2dzQGV4YW1wbGUnXSwKKyAgICAgICAgICAgICAgICdkYXRhJyldKQogCiAgICAgZGVmIHRlc3RfSEVMT19SU0VUKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQpAQCAtNTAyLDYgKzc1OSwyNCBAQAogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIgPSAnc3BhbScKIAorICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybmluZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICJJUHY2IG5vdCBlbmFibGVkIikKK2NsYXNzIFNNVFBEQ2hhbm5lbElQdjZUZXN0KFNNVFBEQ2hhbm5lbFRlc3QpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogCiBjbGFzcyBTTVRQRENoYW5uZWxXaXRoRGF0YVNpemVMaW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01MDksMTAgKzc4NCwxMiBAQAogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCiAgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcignYScsICdiJykKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCiAgICAgICAgICMgU2V0IERBVEEgc2l6ZSBsaW1pdCB0byAzMiBieXRlcyBmb3IgZWFzeSB0ZXN0aW5nCi0gICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLCAzMikKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsIDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQpAQCAtNTM2LDcgKzgxMywxMCBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAotICAgICAgICAgICAgWygncGVlcicsICdlZ2dzQGV4YW1wbGUnLCBbJ3NwYW1AZXhhbXBsZSddLCAnZGF0YVxubW9yZScpXSkKKyAgICAgICAgICAgIFsoKCdwZWVyLWFkZHJlc3MnLCAncGVlci1wb3J0JyksCisgICAgICAgICAgICAgICdlZ2dzQGV4YW1wbGUnLAorICAgICAgICAgICAgICBbJ3NwYW1AZXhhbXBsZSddLAorICAgICAgICAgICAgICAnZGF0YVxubW9yZScpXSkKIAogICAgIGRlZiB0ZXN0X2RhdGFfbGltaXRfZGlhbG9nX3Rvb19tdWNoX2RhdGEoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCkBAIC01NTMsNSArODMzLDE4MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTUyIEVycm9yOiBUb28gbXVjaCBtYWlsIGRhdGFcclxuJykKIAogCitjbGFzcyBTTVRQRENoYW5uZWxXaXRoRGVjb2RlRGF0YUZhbHNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgIyBTZXQgZGVjb2RlX2RhdGEgdG8gRmFsc2UKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9hc2NpaV9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGIncGxhaW4gYXNjaWkgdGV4dCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLCBiJ3BsYWluIGFzY2lpIHRleHQnKQorCisgICAgZGVmIHRlc3RfdXRmOF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODcnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidhbmQgc29tZSBwbGFpbiBhc2NpaScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsCisgICAgICAgICAgICBiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3XG4nCisgICAgICAgICAgICAgICAgYidhbmQgc29tZSBwbGFpbiBhc2NpaScpCisKKworY2xhc3MgU01UUERDaGFubmVsV2l0aERlY29kZURhdGFUcnVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBUcnVlCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9hc2NpaV9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGIncGxhaW4gYXNjaWkgdGV4dCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLCAncGxhaW4gYXNjaWkgdGV4dCcpCisKKyAgICBkZWYgdGVzdF91dGY4X2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYid1dGY4IGVucmljaGVkIHRleHQ6IFx4YzVceGJjXHhjNVx4YmFceGM0XHg4NycpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2FuZCBzb21lIHBsYWluIGFzY2lpJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwKKyAgICAgICAgICAgICd1dGY4IGVucmljaGVkIHRleHQ6IMW8xbrEh1xuYW5kIHNvbWUgcGxhaW4gYXNjaWknKQorCisKK2NsYXNzIFNNVFBEQ2hhbm5lbFRlc3RXaXRoRW5hYmxlU01UUFVURjhUcnVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGxpbmUpOgorICAgICAgICBzZWxmLmNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKKworICAgIGRlZiB0ZXN0X01BSUxfY29tbWFuZF9hY2NlcHRzX1NNVFBVVEY4X3doZW5fYW5ub3VuY2VkKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICAnTUFJTCBmcm9tOiA8bmFpzIh2ZUBleGFtcGxlLmNvbT4gQk9EWT04QklUTUlNRSBTTVRQVVRGOCcuZW5jb2RlKAorICAgICAgICAgICAgICAgICd1dGYtOCcpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX3NtdHB1dGY4X21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIGZvciBtYWlsX3BhcmFtZXRlcnMgaW4gW2InJywgYidCT0RZPThCSVRNSU1FIFNNVFBVVEY4J106CisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206IDxhQGV4YW1wbGU+ICcgKyBtYWlsX3BhcmFtZXRlcnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidyY3B0IHRvOjxiQGV4YW1wbGUuY29tPicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMzU0JykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2NcclxuLicpCisgICAgICAgICAgICBpZiBtYWlsX3BhcmFtZXRlcnMgPT0gYicnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFNNVFBVVEY4IG1lc3NhZ2Ugb2tpc2hcclxuJykKKworICAgIGRlZiB0ZXN0X3V0ZjhfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgJ01BSUwgRnJvbTogbmFpzIh2ZUBleGFtcGzDqSBCT0RZPThCSVRNSU1FIFNNVFBVVEY4Jy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKCdSQ1BUIFRvOnNww6RtQGV4YW1wbMOpJy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMzU0JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODcnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLAorICAgICAgICAgICAgYid1dGY4IGVucmljaGVkIHRleHQ6IFx4YzVceGJjXHhjNVx4YmFceGM0XHg4NycpCisKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfbGltaXRfZXh0ZW5kZWRfd2l0aF9TSVpFX2FuZF9TTVRQVVRGOChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZWhsbyBleGFtcGxlJykKKyAgICAgICAgZmlsbF9sZW4gPSAoNTEyICsgMjYgKyAxMCkgLSBsZW4oJ21haWwgZnJvbTo8QGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiAoZmlsbF9sZW4gKyAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ0BleGFtcGxlPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogZmlsbF9sZW4gKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX2VtYWlsc193aXRoX2V4dGVuZGVkX2NvbW1hbmRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidlaGxvIGV4YW1wbGUnKQorICAgICAgICBmaWxsX2xlbiA9ICg1MTIgKyAyNiArIDEwKSAtIGxlbignbWFpbCBmcm9tOjxAZXhhbXBsZT4nKQorICAgICAgICBmb3IgY2hhciBpbiBbYidhJywgYidiJywgYidjJ106CisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKyBjaGFyICogZmlsbF9sZW4gKyBiJ2FAZXhhbXBsZT4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYic1MDAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsgY2hhciAqIGZpbGxfbGVuICsgYidAZXhhbXBsZT4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIncmNwdCB0bzo8aGFuc0BleGFtcGxlLmNvbT4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzM1NCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYid0ZXN0XHJcbi4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CmluZGV4IDk1YTlkYmUuLjhlMzYyNDE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CkBAIC0xLDUgKzEsNyBAQAogaW1wb3J0IGFzeW5jb3JlCiBpbXBvcnQgZW1haWwubWltZS50ZXh0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQorZnJvbSBlbWFpbC5iYXNlNjRtaW1lIGltcG9ydCBib2R5X2VuY29kZSBhcyBlbmNvZGVfYmFzZTY0CiBpbXBvcnQgZW1haWwudXRpbHMKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzbXRwZApAQCAtMTAsNiArMTIsNyBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBlcnJubworaW1wb3J0IHRleHR3cmFwCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldApAQCAtMzAsNyArMzMsNyBAQAogCiAKIGRlZiBzZXJ2ZXIoZXZ0LCBidWYsIHNlcnYpOgotICAgIHNlcnYubGlzdGVuKDUpCisgICAgc2Vydi5saXN0ZW4oKQogICAgIGV2dC5zZXQoKQogICAgIHRyeToKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKQEAgLTEyMyw2ICsxMjYsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNvY2suZ2V0dGltZW91dCgpLCAzMCkKICAgICAgICAgc210cC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9kZWJ1Z2xldmVsKHNlbGYpOgorICAgICAgICBtb2NrX3NvY2tldC5yZXBseV93aXRoKGIiMjIwIEhlbGxvIHdvcmxkIikKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgpCisgICAgICAgIHNtdHAuc2V0X2RlYnVnbGV2ZWwoMSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIHNtdHAuY29ubmVjdChIT1NULCBzZWxmLnBvcnQpCisgICAgICAgIHNtdHAuY2xvc2UoKQorICAgICAgICBleHBlY3RlZCA9IHJlLmNvbXBpbGUociJeY29ubmVjdDoiLCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RkZXJyLmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZGVidWdsZXZlbF8yKHNlbGYpOgorICAgICAgICBtb2NrX3NvY2tldC5yZXBseV93aXRoKGIiMjIwIEhlbGxvIHdvcmxkIikKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgpCisgICAgICAgIHNtdHAuc2V0X2RlYnVnbGV2ZWwoMikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIHNtdHAuY29ubmVjdChIT1NULCBzZWxmLnBvcnQpCisgICAgICAgIHNtdHAuY2xvc2UoKQorICAgICAgICBleHBlY3RlZCA9IHJlLmNvbXBpbGUociJeXGR7Mn06XGR7Mn06XGR7Mn1cLlxkezZ9IGNvbm5lY3Q6ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RkZXJyLmdldHZhbHVlKCksIGV4cGVjdGVkKQorCiAKICMgVGVzdCBzZXJ2ZXIgdGhyZWFkIHVzaW5nIHRoZSBzcGVjaWZpZWQgU01UUCBzZXJ2ZXIgY2xhc3MKIGRlZiBkZWJ1Z2dpbmdfc2VydmVyKHNlcnYsIHNlcnZfZXZ0LCBjbGllbnRfZXZ0KToKQEAgLTE4NCw3ICsyMDgsOCBAQAogICAgICAgICBzZWxmLm9sZF9ERUJVR1NUUkVBTSA9IHNtdHBkLkRFQlVHU1RSRUFNCiAgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQogICAgICAgICAjIFBpY2sgYSByYW5kb20gdW51c2VkIHBvcnQgYnkgcGFzc2luZyAwIGZvciB0aGUgcG9ydCBudW1iZXIKLSAgICAgICAgc2VsZi5zZXJ2ID0gc210cGQuRGVidWdnaW5nU2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpKQorICAgICAgICBzZWxmLnNlcnYgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICAjIEtlZXAgYSBub3RlIG9mIHdoYXQgcG9ydCB3YXMgYXNzaWduZWQKICAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2LnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgIHNlcnZfYXJncyA9IChzZWxmLnNlcnYsIHNlbGYuc2Vydl9ldnQsIHNlbGYuY2xpZW50X2V2dCkKQEAgLTYwNCw3ICs2MjksOCBAQAogICAgICdjcmFtLW1kNSc6ICgnVFhJVVFVQlpCMjFMRDJITENNVVVZMjlUSURHNE9XUTBNSicKICAgICAgICAgICAgICAgICAgJ0tXWkdRNE9ETk1OREE0TlRHWE1EUkxaV01ZWkpETU9ERzEnKSwKICAgICB9Ci1zaW1fYXV0aF9sb2dpbl9wYXNzd29yZCA9ICdDMjlUWlhCSEMzTjNCM0pLJworc2ltX2F1dGhfbG9naW5fdXNlciA9ICdUWElVUVVCWkIyMUxEMkhMQ01VVVkyOVQnCitzaW1fYXV0aF9wbGFpbiA9ICdBRTFZTEtGQUMyOVRaWERPWlhKTExNTlZCUUJaQjIxTENHRlpDM0RWQ01RPScKIAogc2ltX2xpc3RzID0geydsaXN0LTEnOlsnTXIuQUBzb21ld2hlcmUuY29tJywnTXJzLkNAc29tZXdoZXJlZXNsZS5jb20nXSwKICAgICAgICAgICAgICAnbGlzdC0yJzpbJ01zLkJAeG4tLWZvLWZrYS5jb20nLF0sCkBAIC02NTgsMTggKzY4NCwxNiBAQAogICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTAgTm8gYWNjZXNzIGZvciB5b3UhJykKIAogICAgIGRlZiBzbXRwX0FVVEgoc2VsZiwgYXJnKToKLSAgICAgICAgaWYgYXJnLnN0cmlwKCkubG93ZXIoKT09J2NyYW0tbWQ1JzoKKyAgICAgICAgbWVjaCA9IGFyZy5zdHJpcCgpLmxvd2VyKCkKKyAgICAgICAgaWYgbWVjaD09J2NyYW0tbWQ1JzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0IHt9Jy5mb3JtYXQoc2ltX2NyYW1fbWQ1X2NoYWxsZW5nZSkpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgbWVjaCwgYXV0aCA9IGFyZy5zcGxpdCgpCi0gICAgICAgIG1lY2ggPSBtZWNoLmxvd2VyKCkKLSAgICAgICAgaWYgbWVjaCBub3QgaW4gc2ltX2F1dGhfY3JlZGVudGlhbHM6CisgICAgICAgIGVsaWYgbWVjaCBub3QgaW4gc2ltX2F1dGhfY3JlZGVudGlhbHM6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwNCBhdXRoIHR5cGUgdW5pbXBsZW1lbnRlZCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbWVjaCA9PSAncGxhaW4nIGFuZCBhdXRoPT1zaW1fYXV0aF9jcmVkZW50aWFsc1sncGxhaW4nXToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjM1IHBsYWluIGF1dGggb2snKQotICAgICAgICBlbGlmIG1lY2g9PSdsb2dpbicgYW5kIGF1dGg9PXNpbV9hdXRoX2NyZWRlbnRpYWxzWydsb2dpbiddOgotICAgICAgICAgICAgc2VsZi5wdXNoKCczMzQgUGFzc3dvcmQ6JykKKyAgICAgICAgZWxpZiBtZWNoPT0ncGxhaW4nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCczMzQgJykKKyAgICAgICAgZWxpZiBtZWNoPT0nbG9naW4nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCczMzQgJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUwIE5vIGFjY2VzcyBmb3IgeW91IScpCiAKQEAgLTcxOSw3ICs3NDMsOCBAQAogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKICAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3MoCi0gICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgICAgIHNlbGYuX2V4dHJhX2ZlYXR1cmVzLCBzZWxmLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgZGVjb2RlX2RhdGE9c2VsZi5fZGVjb2RlX2RhdGEpCiAKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgcGFzcwpAQCAtNzQyLDcgKzc2Nyw3IEBACiAgICAgICAgIHNlbGYuc2Vydl9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLmNsaWVudF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAjIFBpY2sgYSByYW5kb20gdW51c2VkIHBvcnQgYnkgcGFzc2luZyAwIGZvciB0aGUgcG9ydCBudW1iZXIKLSAgICAgICAgc2VsZi5zZXJ2ID0gU2ltU01UUFNlcnZlcigoSE9TVCwgMCksICgnbm93aGVyZScsIC0xKSkKKyAgICAgICAgc2VsZi5zZXJ2ID0gU2ltU01UUFNlcnZlcigoSE9TVCwgMCksICgnbm93aGVyZScsIC0xKSwgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCiAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCkBAIC03OTAsMTEgKzgxNSwxMSBAQAogICAgIGRlZiB0ZXN0VlJGWShzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQogCi0gICAgICAgIGZvciBlbWFpbCwgbmFtZSBpbiBzaW1fdXNlcnMuaXRlbXMoKToKKyAgICAgICAgZm9yIGFkZHJfc3BlYywgbmFtZSBpbiBzaW1fdXNlcnMuaXRlbXMoKToKICAgICAgICAgICAgIGV4cGVjdGVkX2tub3duID0gKDI1MCwgYnl0ZXMoJyVzICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBzbXRwbGliLnF1b3RlYWRkcihlbWFpbCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgc210cGxpYi5xdW90ZWFkZHIoYWRkcl9zcGVjKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZyZnkoZW1haWwpLCBleHBlY3RlZF9rbm93bikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC52cmZ5KGFkZHJfc3BlYyksIGV4cGVjdGVkX2tub3duKQogCiAgICAgICAgIHUgPSAnbm9ib2R5QG5vd2hlcmUuY29tJwogICAgICAgICBleHBlY3RlZF91bmtub3duID0gKDU1MCwgKCdObyBzdWNoIHVzZXI6ICVzJyAlIHUpLmVuY29kZSgnYXNjaWknKSkKQEAgLTgxNiwyOCArODQxLDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5leHBuKHUpLCBleHBlY3RlZF91bmtub3duKQogICAgICAgICBzbXRwLnF1aXQoKQogCi0gICAgZGVmIHRlc3RBVVRIX1BMQUlOKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoIkFVVEggUExBSU4iKQotICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCi0KLSAgICAgICAgZXhwZWN0ZWRfYXV0aF9vayA9ICgyMzUsIGIncGxhaW4gYXV0aCBvaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pLCBleHBlY3RlZF9hdXRoX29rKQotICAgICAgICBzbXRwLmNsb3NlKCkKLQotICAgICMgU2ltU01UUENoYW5uZWwgZG9lc24ndCBmdWxseSBzdXBwb3J0IExPR0lOIG9yIENSQU0tTUQ1IGF1dGggYmVjYXVzZSB0aGV5Ci0gICAgIyByZXF1aXJlIGEgc3luY2hyb25vdXMgcmVhZCB0byBvYnRhaW4gdGhlIGNyZWRlbnRpYWxzLi4uc28gaW5zdGVhZCBzbXRwZAorICAgICMgU2ltU01UUENoYW5uZWwgZG9lc24ndCBmdWxseSBzdXBwb3J0IEFVVEggYmVjYXVzZSBpdCByZXF1aXJlcyBhCisgICAgIyBzeW5jaHJvbm91cyByZWFkIHRvIG9idGFpbiB0aGUgY3JlZGVudGlhbHMuLi5zbyBpbnN0ZWFkIHNtdHBkCiAgICAgIyBzZWVzIHRoZSBjcmVkZW50aWFsIHNlbnQgYnkgc210cGxpYidzIGxvZ2luIG1ldGhvZCBhcyBhbiB1bmtub3duIGNvbW1hbmQsCiAgICAgIyB3aGljaCByZXN1bHRzIGluIHNtdHBsaWIgcmFpc2luZyBhbiBhdXRoIGVycm9yLiAgRm9ydHVuYXRlbHkgdGhlIGVycm9yCiAgICAgIyBtZXNzYWdlIGNvbnRhaW5zIHRoZSBlbmNvZGVkIGNyZWRlbnRpYWwsIHNvIHdlIGNhbiBwYXJ0aWFsbHkgY2hlY2sgdGhhdCBpdAogICAgICMgd2FzIGdlbmVyYXRlZCBjb3JyZWN0bHkgKHBhcnRpYWxseSwgYmVjYXVzZSB0aGUgJ3dvcmQnIGlzIHVwcGVyY2FzZWQgaW4KICAgICAjIHRoZSBlcnJvciBtZXNzYWdlKS4KIAorICAgIGRlZiB0ZXN0QVVUSF9QTEFJTihzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCJBVVRIIFBMQUlOIikKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQorICAgICAgICB0cnk6IHNtdHAubG9naW4oc2ltX2F1dGhbMF0sIHNpbV9hdXRoWzFdLCBpbml0aWFsX3Jlc3BvbnNlX29rPUZhbHNlKQorICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQQXV0aGVudGljYXRpb25FcnJvciBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX3BsYWluLCBzdHIoZXJyKSkKKyAgICAgICAgc210cC5jbG9zZSgpCisKICAgICBkZWYgdGVzdEFVVEhfTE9HSU4oc2VsZik6CiAgICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgiQVVUSCBMT0dJTiIpCiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKICAgICAgICAgdHJ5OiBzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSkKICAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9sb2dpbl9wYXNzd29yZCwgc3RyKGVycikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX2xvZ2luX3VzZXIsIHN0cihlcnIpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0QVVUSF9DUkFNX01ENShzZWxmKToKQEAgLTg1NSw3ICs4ODAsMjMgQEAKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQogICAgICAgICB0cnk6IHNtdHAubG9naW4oc2ltX2F1dGhbMF0sIHNpbV9hdXRoWzFdKQogICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQQXV0aGVudGljYXRpb25FcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX2xvZ2luX3Bhc3N3b3JkLCBzdHIoZXJyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfbG9naW5fdXNlciwgc3RyKGVycikpCisgICAgICAgIHNtdHAuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYXV0aF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCisgICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgiQVVUSCBDUkFNLU1ENSIpCisgICAgICAgIHNtdHAudXNlciwgc210cC5wYXNzd29yZCA9IHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXQorICAgICAgICBzdXBwb3J0ZWQgPSB7J0NSQU0tTUQ1Jzogc210cC5hdXRoX2NyYW1fbWQ1LAorICAgICAgICAgICAgICAgICAgICAgJ1BMQUlOJzogc210cC5hdXRoX3BsYWluLAorICAgICAgICAgICAgICAgICAgICAgJ0xPR0lOJzogc210cC5hdXRoX2xvZ2luLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBtZWNoYW5pc20sIG1ldGhvZCBpbiBzdXBwb3J0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeTogc210cC5hdXRoKG1lY2hhbmlzbSwgbWV0aG9kLCBpbml0aWFsX3Jlc3BvbnNlX29rPUZhbHNlKQorICAgICAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfY3JlZGVudGlhbHNbbWVjaGFuaXNtLmxvd2VyKCldLnVwcGVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZXJyKSkKICAgICAgICAgc210cC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9xdWl0X3Jlc2V0c19ncmVldGluZyhzZWxmKToKQEAgLTkzOCwxMyArOTc5LDI0OSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzbXRwLnNvY2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Ll9TTVRQY2hhbm5lbC5yY3B0X2NvdW50LCAwKQogCisgICAgZGVmIHRlc3Rfc210cHV0ZjhfTm90U3VwcG9ydGVkRXJyb3JfaWZfbm9fc2VydmVyX3N1cHBvcnQoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzbXRwLmVobG8oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc210cC5kb2VzX2VzbXRwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNtdHAuaGFzX2V4dG4oJ3NtdHB1dGY4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgc210cGxpYi5TTVRQTm90U3VwcG9ydGVkRXJyb3IsCisgICAgICAgICAgICBzbXRwLnNlbmRtYWlsLAorICAgICAgICAgICAgJ0pvaG4nLCAnU2FsbHknLCAnJywgbWFpbF9vcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIHNtdHBsaWIuU01UUE5vdFN1cHBvcnRlZEVycm9yLAorICAgICAgICAgICAgc210cC5tYWlsLCAnSm9obicsIG9wdGlvbnM9WydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10pCisKKyAgICBkZWYgdGVzdF9zZW5kX3VuaWNvZGVfd2l0aG91dF9TTVRQVVRGOChzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc210cC5zZW5kbWFpbCwgJ0FsaWNlJywgJ0LDtmInLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzbXRwLm1haWwsICfDhGxpY2UnKQorCisKK2NsYXNzIFNpbVNNVFBVVEY4U2VydmVyKFNpbVNNVFBTZXJ2ZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgIyBUaGUgYmFzZSBTTVRQIHNlcnZlciB0dXJucyB0aGVzZSBvbiBhdXRvbWF0aWNhbGx5LCBidXQgb3VyIHRlc3QKKyAgICAgICAgIyBzZXJ2ZXIgaXMgc2V0IHVwIHRvIG11bmdlIHRoZSBFSExPIHJlc3BvbnNlLCBzbyB3ZSBuZWVkIHRvIHByb3ZpZGUKKyAgICAgICAgIyB0aGVtIGFzIHdlbGwuICBBbmQgeWVzLCB0aGUgY2FsbCBpcyB0byBTTVRQU2VydmVyIG5vdCBTaW1TTVRQU2VydmVyLgorICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcyA9IFsnU01UUFVURjgnLCAnOEJJVE1JTUUnXQorICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQorCisgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3MoCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkciwKKyAgICAgICAgICAgIGRlY29kZV9kYXRhPXNlbGYuX2RlY29kZV9kYXRhLAorICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PXNlbGYuZW5hYmxlX1NNVFBVVEY4LAorICAgICAgICApCisKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCBtYWlsX29wdGlvbnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY3B0X29wdGlvbnM9Tm9uZSk6CisgICAgICAgIHNlbGYubGFzdF9wZWVyID0gcGVlcgorICAgICAgICBzZWxmLmxhc3RfbWFpbGZyb20gPSBtYWlsZnJvbQorICAgICAgICBzZWxmLmxhc3RfcmNwdHRvcyA9IHJjcHR0b3MKKyAgICAgICAgc2VsZi5sYXN0X21lc3NhZ2UgPSBkYXRhCisgICAgICAgIHNlbGYubGFzdF9tYWlsX29wdGlvbnMgPSBtYWlsX29wdGlvbnMKKyAgICAgICAgc2VsZi5sYXN0X3JjcHRfb3B0aW9ucyA9IHJjcHRfb3B0aW9ucworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTTVRQVVRGOFNpbVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIG1heERpZmYgPSBOb25lCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucmVhbF9nZXRmcWRuID0gc29ja2V0LmdldGZxZG4KKyAgICAgICAgc29ja2V0LmdldGZxZG4gPSBtb2NrX3NvY2tldC5nZXRmcWRuCisgICAgICAgIHNlbGYuc2Vydl9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBzZWxmLmNsaWVudF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICAjIFBpY2sgYSByYW5kb20gdW51c2VkIHBvcnQgYnkgcGFzc2luZyAwIGZvciB0aGUgcG9ydCBudW1iZXIKKyAgICAgICAgc2VsZi5zZXJ2ID0gU2ltU01UUFVURjhTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCisgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQorICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCisgICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZGVidWdnaW5nX3NlcnZlciwgYXJncz1zZXJ2X2FyZ3MpCisgICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKKworICAgICAgICAjIHdhaXQgdW50aWwgc2VydmVyIHRocmVhZCBoYXMgYXNzaWduZWQgYSBwb3J0IG51bWJlcgorICAgICAgICBzZWxmLnNlcnZfZXZ0LndhaXQoKQorICAgICAgICBzZWxmLnNlcnZfZXZ0LmNsZWFyKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc29ja2V0LmdldGZxZG4gPSBzZWxmLnJlYWxfZ2V0ZnFkbgorICAgICAgICAjIGluZGljYXRlIHRoYXQgdGhlIGNsaWVudCBpcyBmaW5pc2hlZAorICAgICAgICBzZWxmLmNsaWVudF9ldnQuc2V0KCkKKyAgICAgICAgIyB3YWl0IGZvciB0aGUgc2VydmVyIHRocmVhZCB0byB0ZXJtaW5hdGUKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC53YWl0KCkKKyAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisKKyAgICBkZWYgdGVzdF90ZXN0X3NlcnZlcl9zdXBwb3J0c19leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc210cC5laGxvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtdHAuZG9lc19lc210cCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtdHAuaGFzX2V4dG4oJ3NtdHB1dGY4JykpCisKKyAgICBkZWYgdGVzdF9zZW5kX3VuaWNvZGVfd2l0aF9TTVRQVVRGOF92aWFfc2VuZG1haWwoc2VsZik6CisgICAgICAgIG0gPSAnwqFhIHRlc3QgbWVzc2FnZSBjb250YWluaW5nIHVuaWNvZGUhJy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNtdHAuc2VuZG1haWwoJ0rFkWhuJywgJ1PDoWxseScsIG0sCisgICAgICAgICAgICAgICAgICAgICAgbWFpbF9vcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21haWxmcm9tLCAnSsWRaG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHR0b3MsIFsnU8OhbGx5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWVzc2FnZSwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk9EWT04QklUTUlNRScsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignU01UUFVURjgnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdF9vcHRpb25zLCBbXSkKKworICAgIGRlZiB0ZXN0X3NlbmRfdW5pY29kZV93aXRoX1NNVFBVVEY4X3ZpYV9sb3dfbGV2ZWxfQVBJKHNlbGYpOgorICAgICAgICBtID0gJ8KhYSB0ZXN0IG1lc3NhZ2UgY29udGFpbmluZyB1bmljb2RlIScuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzbXRwLmVobG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc210cC5tYWlsKCdKxZEnLCBvcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKSwKKyAgICAgICAgICAgICgyNTAsIGInT0snKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnJjcHQoJ0rDoW5vcycpLCAoMjUwLCBiJ09LJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5kYXRhKG0pLCAoMjUwLCBiJ09LJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWFpbGZyb20sICdKxZEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHR0b3MsIFsnSsOhbm9zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWVzc2FnZSwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk9EWT04QklUTUlNRScsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignU01UUFVURjgnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdF9vcHRpb25zLCBbXSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV91c2VzX3NtdHB1dGY4X2lmX2FkZHJzX25vbl9hc2NpaShzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgICMgWFhYIEkgZG9uJ3Qga25vdyB3aHkgSSBuZWVkIHR3byBcbidzIGhlcmUsIGJ1dCB0aGlzIGlzIGFuIGV4aXN0aW5nCisgICAgICAgICMgYnVnIChpZiBpdCBpcyBvbmUpIGFuZCBub3QgYSBwcm9ibGVtIHdpdGggdGhlIG5ldyBmdW5jdGlvbmFsaXR5LgorICAgICAgICBtc2cuc2V0X2NvbnRlbnQoIm9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/XG5cbiIpCisgICAgICAgICMgWFhYIHNtdHBkIGNvbnZlcnRzIHJlY2VpdmVkIC9yL24gdG8gL24sIHNvIHdlIGNhbid0IGVhc2lseSB0ZXN0IHRoYXQKKyAgICAgICAgIyB3ZSBhcmUgc3VjY2Vzc2Z1bGx5IHNlbmRpbmcgL3IvbiA6KC4KKyAgICAgICAgZXhwZWN0ZWQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogUMOhb2xvIDxmxZFvQGJhci5jb20+CisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDkKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorCisgICAgICAgICAgICBvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNlbmRfbWVzc2FnZShtc2cpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9tYWlsZnJvbSwgJ2bFkW9AYmFyLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdHRvcywgWydEaW5zZGFsZSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21lc3NhZ2UuZGVjb2RlKCksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEluKCdCT0RZPThCSVRNSU1FJywgc2VsZi5zZXJ2Lmxhc3RfbWFpbF9vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEluKCdTTVRQVVRGOCcsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9yY3B0X29wdGlvbnMsIFtdKQorCisgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2Vycm9yX29uX25vbl9hc2NpaV9hZGRyc19pZl9ub19zbXRwdXRmOChzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBOb3RTdXBwb3J0ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc210cC5zZW5kX21lc3NhZ2UobXNnKSkKKworCitFWFBFQ1RFRF9SRVNQT05TRSA9IGVuY29kZV9iYXNlNjQoYidcMHBzdVwwZG9lc25vdGV4aXN0JywgZW9sPScnKQorCitjbGFzcyBTaW1TTVRQQVVUSEluaXRpYWxSZXNwb25zZUNoYW5uZWwoU2ltU01UUENoYW5uZWwpOgorICAgIGRlZiBzbXRwX0FVVEgoc2VsZiwgYXJnKToKKyAgICAgICAgIyBSRkMgNDk1NCdzIEFVVEggY29tbWFuZCBhbGxvd3MgZm9yIGFuIG9wdGlvbmFsIGluaXRpYWwtcmVzcG9uc2UuCisgICAgICAgICMgTm90IGFsbCBBVVRIIG1ldGhvZHMgc3VwcG9ydCB0aGlzOyBzb21lIHJlcXVpcmUgYSBjaGFsbGVuZ2UuICBBVVRICisgICAgICAgICMgUExBSU4gZG9lcyB0aG9zZSwgc28gdGVzdCB0aGF0IGhlcmUuICBTZWUgaXNzdWUgIzE1MDE0LgorICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCkKKyAgICAgICAgaWYgYXJnc1swXS5sb3dlcigpID09ICdwbGFpbic6CisgICAgICAgICAgICBpZiBsZW4oYXJncykgPT0gMjoKKyAgICAgICAgICAgICAgICAjIEFVVEggUExBSU4gPGluaXRpYWwtcmVzcG9uc2U+IHdpdGggdGhlIHJlc3BvbnNlIGJhc2UgNjQKKyAgICAgICAgICAgICAgICAjIGVuY29kZWQuICBIYXJkIGNvZGUgdGhlIGV4cGVjdGVkIHJlc3BvbnNlIGZvciB0aGUgdGVzdC4KKyAgICAgICAgICAgICAgICBpZiBhcmdzWzFdID09IEVYUEVDVEVEX1JFU1BPTlNFOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzIzNSBPaycpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLnB1c2goJzU3MSBCYWQgYXV0aGVudGljYXRpb24nKQorCitjbGFzcyBTaW1TTVRQQVVUSEluaXRpYWxSZXNwb25zZVNlcnZlcihTaW1TTVRQU2VydmVyKToKKyAgICBjaGFubmVsX2NsYXNzID0gU2ltU01UUEFVVEhJbml0aWFsUmVzcG9uc2VDaGFubmVsCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNNVFBBVVRISW5pdGlhbFJlc3BvbnNlU2ltVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZWFsX2dldGZxZG4gPSBzb2NrZXQuZ2V0ZnFkbgorICAgICAgICBzb2NrZXQuZ2V0ZnFkbiA9IG1vY2tfc29ja2V0LmdldGZxZG4KKyAgICAgICAgc2VsZi5zZXJ2X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHNlbGYuY2xpZW50X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgICMgUGljayBhIHJhbmRvbSB1bnVzZWQgcG9ydCBieSBwYXNzaW5nIDAgZm9yIHRoZSBwb3J0IG51bWJlcgorICAgICAgICBzZWxmLnNlcnYgPSBTaW1TTVRQQVVUSEluaXRpYWxSZXNwb25zZVNlcnZlcigKKyAgICAgICAgICAgIChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAjIEtlZXAgYSBub3RlIG9mIHdoYXQgcG9ydCB3YXMgYXNzaWduZWQKKyAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zZXJ2LnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCisgICAgICAgIHNlcnZfYXJncyA9IChzZWxmLnNlcnYsIHNlbGYuc2Vydl9ldnQsIHNlbGYuY2xpZW50X2V2dCkKKyAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1kZWJ1Z2dpbmdfc2VydmVyLCBhcmdzPXNlcnZfYXJncykKKyAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQorCisgICAgICAgICMgd2FpdCB1bnRpbCBzZXJ2ZXIgdGhyZWFkIGhhcyBhc3NpZ25lZCBhIHBvcnQgbnVtYmVyCisgICAgICAgIHNlbGYuc2Vydl9ldnQud2FpdCgpCisgICAgICAgIHNlbGYuc2Vydl9ldnQuY2xlYXIoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzb2NrZXQuZ2V0ZnFkbiA9IHNlbGYucmVhbF9nZXRmcWRuCisgICAgICAgICMgaW5kaWNhdGUgdGhhdCB0aGUgY2xpZW50IGlzIGZpbmlzaGVkCisgICAgICAgIHNlbGYuY2xpZW50X2V2dC5zZXQoKQorICAgICAgICAjIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZQorICAgICAgICBzZWxmLnNlcnZfZXZ0LndhaXQoKQorICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKworICAgIGRlZiB0ZXN0QVVUSF9QTEFJTl9pbml0aWFsX3Jlc3BvbnNlX2xvZ2luKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoJ0FVVEggUExBSU4nKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKKyAgICAgICAgc210cC5sb2dpbigncHN1JywgJ2RvZXNub3RleGlzdCcpCisgICAgICAgIHNtdHAuY2xvc2UoKQorCisgICAgZGVmIHRlc3RBVVRIX1BMQUlOX2luaXRpYWxfcmVzcG9uc2VfYXV0aChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCdBVVRIIFBMQUlOJykKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCisgICAgICAgIHNtdHAudXNlciA9ICdwc3UnCisgICAgICAgIHNtdHAucGFzc3dvcmQgPSAnZG9lc25vdGV4aXN0JworICAgICAgICBjb2RlLCByZXNwb25zZSA9IHNtdHAuYXV0aCgncGxhaW4nLCBzbXRwLmF1dGhfcGxhaW4pCisgICAgICAgIHNtdHAuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsIDIzNSkKKwogCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChHZW5lcmFsVGVzdHMsIERlYnVnZ2luZ1NlcnZlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uQ29ubmVjdGluZ1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFkSEVMT1NlcnZlclRlc3RzLCBTTVRQU2ltVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb29Mb25nTGluZVRlc3RzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAorICAgICAgICBCYWRIRUxPU2VydmVyVGVzdHMsCisgICAgICAgIERlYnVnZ2luZ1NlcnZlclRlc3RzLAorICAgICAgICBHZW5lcmFsVGVzdHMsCisgICAgICAgIE5vbkNvbm5lY3RpbmdUZXN0cywKKyAgICAgICAgU01UUEFVVEhJbml0aWFsUmVzcG9uc2VTaW1UZXN0cywKKyAgICAgICAgU01UUFNpbVRlc3RzLAorICAgICAgICBUb29Mb25nTGluZVRlc3RzLAorICAgICAgICApCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CmluZGV4IDE1NjU0ZjIuLmNjOWJhYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKQEAgLTc5LDggKzc5LDUgQEAKICAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU210cFRlc3QsIFNtdHBTU0xUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NuZGhkci5weSBiL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5CmluZGV4IDVlMGFiZTAuLjQyNjQxN2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc25kaGRyLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHNuZGhkcgoraW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUKIApAQCAtMTgsNiArMTksMTkgQEAKICAgICAgICAgICAgIHdoYXQgPSBzbmRoZHIud2hhdChmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod2hhdCwgTm9uZSwgZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwod2hhdCwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQuZmlsZXR5cGUsIGV4cGVjdGVkWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aGF0LmZyYW1lcmF0ZSwgZXhwZWN0ZWRbMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQubmNoYW5uZWxzLCBleHBlY3RlZFsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5uZnJhbWVzLCBleHBlY3RlZFszXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5zYW1wd2lkdGgsIGV4cGVjdGVkWzRdKQorCisgICAgZGVmIHRlc3RfcGlja2xlYWJsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBmaW5kZmlsZSgnc25kaGRyLmFpZmMnLCBzdWJkaXI9InNuZGhkcmRhdGEiKQorICAgICAgICB3aGF0ID0gc25kaGRyLndoYXQoZmlsZW5hbWUpCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZHVtcCA9IHBpY2tsZS5kdW1wcyh3aGF0LCBwcm90bykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlja2xlLmxvYWRzKGR1bXApLCB3aGF0KQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGQzMTkxMTIuLjE3ODE5ZjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0yMCw2ICsyMCw4IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cmluZwogdHJ5OgogICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTc2LDcgKzc4LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgc2VsZi5wb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zZXJ2KQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQpAQCAtNDQ1LDcgKzQ0Nyw3IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogCiAKIGNsYXNzIFRocmVhZGVkU29ja2V0VGVzdE1peGluKFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UsIFNvY2tldFRlc3RCYXNlLApAQCAtNzE2LDExICs3MTgsMTEgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oJ1x1MjYyMCcsIHNvY2tuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICInc3RyJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdzdHInIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oNWosIHNvY2tuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICInY29tcGxleCcgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgImEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnY29tcGxleCciKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0byhiJ2ZvbycsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBOb25lVHlwZScsc3RyKGNtLmV4Y2VwdGlvbikpCkBAIC03MjgsMTEgKzczMCwxMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0bygnXHUyNjIwJywgMCwgc29ja25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIidzdHInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJ3N0ciciKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0byg1aiwgMCwgc29ja25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIidjb21wbGV4JyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdjb21wbGV4JyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKGInZm9vJywgMCwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IE5vbmVUeXBlJywgc3RyKGNtLmV4Y2VwdGlvbikpCkBAIC0xMDcyLDYgKzEwNzQsNyBAQAogICAgICAgICBhc3NlcnRJbnZhbGlkKGYsIGInXHgwMCcgKiAzKQogICAgICAgICBhc3NlcnRJbnZhbGlkKGYsIGInXHgwMCcgKiA1KQogICAgICAgICBhc3NlcnRJbnZhbGlkKGYsIGInXHgwMCcgKiAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcwLjg1LjE3MC44NScsIGYoYnl0ZWFycmF5KGInXHhhYVx4NTVceGFhXHg1NScpKSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjAuMS4wJywgZyhiJ1x4MDFceDAwXHgwMVx4MDAnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcwLjg1LjE3MC44NScsIGcoYidceGFhXHg1NVx4YWFceDU1JykpCkBAIC0xMDc5LDYgKzEwODIsNyBAQAogICAgICAgICBhc3NlcnRJbnZhbGlkKGcsIGInXHgwMCcgKiAzKQogICAgICAgICBhc3NlcnRJbnZhbGlkKGcsIGInXHgwMCcgKiA1KQogICAgICAgICBhc3NlcnRJbnZhbGlkKGcsIGInXHgwMCcgKiAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcwLjg1LjE3MC44NScsIGcoYnl0ZWFycmF5KGInXHhhYVx4NTVceGFhXHg1NScpKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnaW5ldF9udG9wJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbmVlZHMgc29ja2V0LmluZXRfbnRvcCgpJykKQEAgLTExMDgsNiArMTExMiw3IEBACiAgICAgICAgICAgICAnYWVmOmIwMTo1MDY6MTAwMTpmZmZmOjk5OTc6NTU6MTcwJywKICAgICAgICAgICAgIGYoYidceDBhXHhlZlx4MGJceDAxXHgwNVx4MDZceDEwXHgwMVx4ZmZceGZmXHg5OVx4OTdceDAwXHg1NVx4MDFceDcwJykKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc6OjEnLCBmKGJ5dGVhcnJheShiJ1x4MDAnICogMTUgKyBiJ1x4MDEnKSkpCiAKICAgICAgICAgYXNzZXJ0SW52YWxpZChiJ1x4MTInICogMTUpCiAgICAgICAgIGFzc2VydEludmFsaWQoYidceDEyJyAqIDE3KQpAQCAtMTM4MiwxMCArMTM4NywxMyBAQAogCiAgICAgZGVmIHRlc3RfbGlzdGVuX2JhY2tsb2coc2VsZik6CiAgICAgICAgIGZvciBiYWNrbG9nIGluIDAsIC0xOgotICAgICAgICAgICAgc3J2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNydjoKKyAgICAgICAgICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICAgICAgc3J2Lmxpc3RlbihiYWNrbG9nKQorCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzcnY6CiAgICAgICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCi0gICAgICAgICAgICBzcnYubGlzdGVuKGJhY2tsb2cpCi0gICAgICAgICAgICBzcnYuY2xvc2UoKQorICAgICAgICAgICAgc3J2Lmxpc3RlbigpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9saXN0ZW5fYmFja2xvZ19vdmVyZmxvdyhzZWxmKToKQEAgLTE0OTEsNiArMTQ5OSw3IEBACiAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGNhbl9maWx0ZXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9maWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgOCkpCisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGJ5dGVhcnJheShjYW5fZmlsdGVyKSkKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQpAQCAtMzU5Myw3ICszNjAyLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2lnbnVtLCBmcmFtZTogTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzaWdudW0sIGZyYW1lOiAxIC8gMCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdBTFJNLCBvcmlnX2Fscm1faGFuZGxlcikKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2V0QWxhcm0sIDApCiAKQEAgLTM2MzAsMTMgKzM2MzksMTEgQEAKICAgICAgICAgc2VsZi5zZXJ2LnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQogCiAgICAgZGVmIGNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICMgQ2hlY2sgdGhhdCBmdW5jKCphcmdzLCAqKmt3YXJncykgcmFpc2VzIE9TRXJyb3Igd2l0aCBhbgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpIHJhaXNlcwogICAgICAgICAjIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuCiAgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSBhcyBjbToKICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoY20uZXhjZXB0aW9uLCBzb2NrZXQudGltZW91dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJTlRSKQogCiAgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3ZUaW1lb3V0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2LCAxMDI0KQpAQCAtMzY5MiwxMiArMzY5OSwxMCBAQAogICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpLCBydW4gaW4gYSBsb29wLCByYWlzZXMKICAgICAgICAgIyBPU0Vycm9yIHdpdGggYW4gZXJybm8gb2YgRUlOVFIgd2hlbiBpbnRlcnJ1cHRlZCBieSBhCiAgICAgICAgICMgc2lnbmFsLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXRBbGFybShzZWxmLmFsYXJtX3RpbWUpCiAgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCiAKICAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0cyBoYXZlIHByb2JsZW1zIG9uIE9TIFggcHJpb3IgdG8gMTAuNwogICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDcpCkBAIC0zNzM5LDggKzM3NDQsNiBAQAogICAgICAgICBzZWxmLmNsaS5jb25uZWN0KChIT1NULCBzZWxmLnBvcnQpKQogICAgICAgICB0aW1lLnNsZWVwKDEuMCkKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzb2NrZXRwYWlyJyksCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBuZWVkcyBzb2NrZXQuc29ja2V0cGFpcigpJykKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBCYXNpY1NvY2tldFBhaXJUZXN0KFNvY2tldFBhaXJUZXN0KToKIApAQCAtMzgyMSw3ICszODI0LDcgQEAKICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNPQ0tfTk9OQkxPQ0spCiAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc2VydikKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigxKQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKICAgICAgICAgIyBhY3R1YWwgdGVzdGluZwogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCiAgICAgICAgIHRyeToKQEAgLTQwNjcsMTE3ICs0MDcwLDYgQEAKICAgICAgICAgcGFzcwogCiAKLWNsYXNzIEZpbGVPYmplY3RJbnRlcnJ1cHRlZFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0IHRoYXQgdGhlIGZpbGUgb2JqZWN0IGNvcnJlY3RseSBoYW5kbGVzIEVJTlRSIGludGVybmFsbHkuIiIiCi0KLSAgICBjbGFzcyBNb2NrU29ja2V0KG9iamVjdCk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWN2X2Z1bmNzPSgpKToKLSAgICAgICAgICAgICMgQSBnZW5lcmF0b3IgdGhhdCByZXR1cm5zIGNhbGxhYmxlcyB0aGF0IHdlJ2xsIGNhbGwgZm9yIGVhY2gKLSAgICAgICAgICAgICMgY2FsbCB0byByZWN2KCkuCi0gICAgICAgICAgICBzZWxmLl9yZWN2X3N0ZXAgPSBpdGVyKHJlY3ZfZnVuY3MpCi0KLSAgICAgICAgZGVmIHJlY3ZfaW50byhzZWxmLCBidWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IG5leHQoc2VsZi5fcmVjdl9zdGVwKSgpCi0gICAgICAgICAgICBhc3NlcnQgbGVuKGJ1ZmZlcikgPj0gbGVuKGRhdGEpCi0gICAgICAgICAgICBidWZmZXJbOmxlbihkYXRhKV0gPSBkYXRhCi0gICAgICAgICAgICByZXR1cm4gbGVuKGRhdGEpCi0KLSAgICAgICAgZGVmIF9kZWNyZWZfc29ja2V0aW9zKHNlbGYpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGRlZiBfdGV4dGlvd3JhcF9mb3JfdGVzdChzZWxmLCBidWZmZXJpbmc9LTEpOgotICAgICAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKHNlbGYsICJyIikKLSAgICAgICAgICAgIGlmIGJ1ZmZlcmluZyA8IDA6Ci0gICAgICAgICAgICAgICAgYnVmZmVyaW5nID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRQotICAgICAgICAgICAgaWYgYnVmZmVyaW5nID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJhdwotICAgICAgICAgICAgYnVmZmVyID0gaW8uQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJpbmcpCi0gICAgICAgICAgICB0ZXh0ID0gaW8uVGV4dElPV3JhcHBlcihidWZmZXIsIE5vbmUsIE5vbmUpCi0gICAgICAgICAgICB0ZXh0Lm1vZGUgPSAicmIiCi0gICAgICAgICAgICByZXR1cm4gdGV4dAotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfcmFpc2VfZWludHIoKToKLSAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgImludGVycnVwdGVkIikKLQotICAgIGRlZiBfdGV4dGlvd3JhcF9tb2NrX3NvY2tldChzZWxmLCBtb2NrLCBidWZmZXJpbmc9LTEpOgotICAgICAgICByYXcgPSBzb2NrZXQuU29ja2V0SU8obW9jaywgInIiKQotICAgICAgICBpZiBidWZmZXJpbmcgPCAwOgotICAgICAgICAgICAgYnVmZmVyaW5nID0gaW8uREVGQVVMVF9CVUZGRVJfU0laRQotICAgICAgICBpZiBidWZmZXJpbmcgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiByYXcKLSAgICAgICAgYnVmZmVyID0gaW8uQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJpbmcpCi0gICAgICAgIHRleHQgPSBpby5UZXh0SU9XcmFwcGVyKGJ1ZmZlciwgTm9uZSwgTm9uZSkKLSAgICAgICAgdGV4dC5tb2RlID0gInJiIgotICAgICAgICByZXR1cm4gdGV4dAotCi0gICAgZGVmIF90ZXN0X3JlYWRsaW5lKHNlbGYsIHNpemU9LTEsIGJ1ZmZlcmluZz0tMSk6Ci0gICAgICAgIG1vY2tfc29jayA9IHNlbGYuTW9ja1NvY2tldChyZWN2X2Z1bmNzPVsKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbkFuZCB0aGUgc2VjIiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZV9laW50ciwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIm9uZCBsaW5lIGlzIGhlcmVcbiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiIiLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwgICMgWFhYKGdwcyk6IGlvIGxpYnJhcnkgZG9lcyBhbiBleHRyYSBFT0YgcmVhZAotICAgICAgICAgICAgXSkKLSAgICAgICAgZm8gPSBtb2NrX3NvY2suX3RleHRpb3dyYXBfZm9yX3Rlc3QoYnVmZmVyaW5nPWJ1ZmZlcmluZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmby5yZWFkbGluZShzaXplKSwgIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm8ucmVhZGxpbmUoc2l6ZSksICJBbmQgdGhlIHNlY29uZCBsaW5lIGlzIGhlcmVcbiIpCi0KLSAgICBkZWYgX3Rlc3RfcmVhZChzZWxmLCBzaXplPS0xLCBidWZmZXJpbmc9LTEpOgotICAgICAgICBtb2NrX3NvY2sgPSBzZWxmLk1vY2tTb2NrZXQocmVjdl9mdW5jcz1bCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJUaGlzIGlzIHRoZSBmaXJzdCBsaW5lXG5BbmQgdGhlIHNlYyIsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VfZWludHIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJvbmQgbGluZSBpcyBoZXJlXG4iLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsICAjIFhYWChncHMpOiBpbyBsaWJyYXJ5IGRvZXMgYW4gZXh0cmEgRU9GIHJlYWQKLSAgICAgICAgICAgIF0pCi0gICAgICAgIGV4cGVjdGluZyA9IChiIlRoaXMgaXMgdGhlIGZpcnN0IGxpbmVcbiIKLSAgICAgICAgICAgICAgICAgICAgIGIiQW5kIHRoZSBzZWNvbmQgbGluZSBpcyBoZXJlXG4iKQotICAgICAgICBmbyA9IG1vY2tfc29jay5fdGV4dGlvd3JhcF9mb3JfdGVzdChidWZmZXJpbmc9YnVmZmVyaW5nKQotICAgICAgICBpZiBidWZmZXJpbmcgPT0gMDoKLSAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhdGEgPSAnJwotICAgICAgICAgICAgZXhwZWN0aW5nID0gZXhwZWN0aW5nLmRlY29kZSgndXRmLTgnKQotICAgICAgICB3aGlsZSBsZW4oZGF0YSkgIT0gbGVuKGV4cGVjdGluZyk6Ci0gICAgICAgICAgICBwYXJ0ID0gZm8ucmVhZChzaXplKQotICAgICAgICAgICAgaWYgbm90IHBhcnQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGRhdGEgKz0gcGFydAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGV4cGVjdGluZykKLQotICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmUoKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lKHNpemU9MTAwKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoc2l6ZT0xMDApCi0KLSAgICBkZWYgdGVzdF93aXRoXzFrX2J1ZmZlcihzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZShidWZmZXJpbmc9MTAyNCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZShzaXplPTEwMCwgYnVmZmVyaW5nPTEwMjQpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChidWZmZXJpbmc9MTAyNCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKHNpemU9MTAwLCBidWZmZXJpbmc9MTAyNCkKLQotICAgIGRlZiBfdGVzdF9yZWFkbGluZV9ub19idWZmZXIoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIG1vY2tfc29jayA9IHNlbGYuTW9ja1NvY2tldChyZWN2X2Z1bmNzPVsKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiImEiLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiXG4iLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiQiIsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VfZWludHIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJiIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsCi0gICAgICAgICAgICBdKQotICAgICAgICBmbyA9IG1vY2tfc29jay5fdGV4dGlvd3JhcF9mb3JfdGVzdChidWZmZXJpbmc9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmby5yZWFkbGluZShzaXplKSwgYiJhXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvLnJlYWRsaW5lKHNpemUpLCBiIkJiIikKLQotICAgIGRlZiB0ZXN0X25vX2J1ZmZlcihzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZV9ub19idWZmZXIoKQotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lX25vX2J1ZmZlcihzaXplPTQpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChidWZmZXJpbmc9MCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKHNpemU9MTAwLCBidWZmZXJpbmc9MCkKLQotCiBjbGFzcyBVbmJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UoRmlsZU9iamVjdENsYXNzVGVzdENhc2UpOgogCiAgICAgIiIiUmVwZWF0IHRoZSB0ZXN0cyBmcm9tIEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlIHdpdGggYnVmc2l6ZT09MC4KQEAgLTQ1OTYsNyArNDQ4OCw3IEBACiAgICAgICAgIGFkZHJlc3MgPSBiIlx4MDBweXRob24tdGVzdC1oZWxsb1x4MDBceGZmIgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczE6CiAgICAgICAgICAgICBzMS5iaW5kKGFkZHJlc3MpCi0gICAgICAgICAgICBzMS5saXN0ZW4oMSkKKyAgICAgICAgICAgIHMxLmxpc3RlbigpCiAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczI6CiAgICAgICAgICAgICAgICAgczIuY29ubmVjdChzMS5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgICAgIHdpdGggczEuYWNjZXB0KClbMF0gYXMgczM6CkBAIC00NjIzLDYgKzQ1MTUsMTIgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHMuY2xvc2UoKQogCisgICAgZGVmIHRlc3RCeXRlYXJyYXlOYW1lKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgYW4gYWJzdHJhY3QgbmFtZSBjYW4gYmUgcGFzc2VkIGFzIGEgYnl0ZWFycmF5LgorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIHMuYmluZChieXRlYXJyYXkoYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0c29ja25hbWUoKSwgYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdBRl9VTklYJyksICd0ZXN0IG5lZWRzIHNvY2tldC5BRl9VTklYJykKIGNsYXNzIFRlc3RVbml4RG9tYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDgyOCw3ICs0NzI2LDcgQEAKICAgICAgICAgc3J2YWRkciA9IChzb2NrZXQuVElQQ19BRERSX05BTUVTRVEsIFRJUENfU1RZUEUsCiAgICAgICAgICAgICAgICAgVElQQ19MT1dFUiwgVElQQ19VUFBFUikKICAgICAgICAgc2VsZi5zcnYuYmluZChzcnZhZGRyKQotICAgICAgICBzZWxmLnNydi5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zcnYubGlzdGVuKCkKICAgICAgICAgc2VsZi5zZXJ2ZXJFeHBsaWNpdFJlYWR5KCkKICAgICAgICAgc2VsZi5jb25uLCBzZWxmLmNvbm5hZGRyID0gc2VsZi5zcnYuYWNjZXB0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY29ubi5jbG9zZSkKQEAgLTUxMTcsNiArNTAxNSwyNzUgQEAKICAgICAgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZGZpbGVVc2luZ1NlbmRUZXN0KFRocmVhZGVkVENQU29ja2V0VGVzdCk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgc2VuZCgpIGltcGxlbWVudGF0aW9uIG9mIHNvY2tldC5zZW5kZmlsZSgpLgorICAgICIiIgorCisgICAgRklMRVNJWkUgPSAoMTAgKiAxMDI0ICogMTAyNCkgICMgMTBNQgorICAgIEJVRlNJWkUgPSA4MTkyCisgICAgRklMRURBVEEgPSBiIiIKKyAgICBUSU1FT1VUID0gMgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgZGVmIGNodW5rcyh0b3RhbCwgc3RlcCk6CisgICAgICAgICAgICBhc3NlcnQgdG90YWwgPj0gc3RlcAorICAgICAgICAgICAgd2hpbGUgdG90YWwgPiBzdGVwOgorICAgICAgICAgICAgICAgIHlpZWxkIHN0ZXAKKyAgICAgICAgICAgICAgICB0b3RhbCAtPSBzdGVwCisgICAgICAgICAgICBpZiB0b3RhbDoKKyAgICAgICAgICAgICAgICB5aWVsZCB0b3RhbAorCisgICAgICAgIGNodW5rID0gYiIiLmpvaW4oW3JhbmRvbS5jaG9pY2Uoc3RyaW5nLmFzY2lpX2xldHRlcnMpLmVuY29kZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGNscy5CVUZTSVpFKV0pCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBjc2l6ZSBpbiBjaHVua3MoY2xzLkZJTEVTSVpFLCBjbHMuQlVGU0laRSk6CisgICAgICAgICAgICAgICAgZi53cml0ZShjaHVuaykKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgY2xzLkZJTEVEQVRBID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGFzc2VydCBsZW4oY2xzLkZJTEVEQVRBKSA9PSBjbHMuRklMRVNJWkUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIGFjY2VwdF9jb25uKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYuc2V0dGltZW91dChzZWxmLlRJTUVPVVQpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgY29ubi5zZXR0aW1lb3V0KHNlbGYuVElNRU9VVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNvbm4uY2xvc2UpCisgICAgICAgIHJldHVybiBjb25uCisKKyAgICBkZWYgcmVjdl9kYXRhKHNlbGYsIGNvbm4pOgorICAgICAgICByZWNlaXZlZCA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdihzZWxmLkJVRlNJWkUpCisgICAgICAgICAgICBpZiBub3QgY2h1bms6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChjaHVuaykKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKHJlY2VpdmVkKQorCisgICAgZGVmIG1ldGhfZnJvbV9zb2NrKHNlbGYsIHNvY2spOgorICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgbWl4aW4gY2xhc3MgYmVpbmcgcnVuIHJldHVybiBlaXRoZXIgc2VuZCgpCisgICAgICAgICMgb3Igc2VuZGZpbGUoKSBtZXRob2QgaW1wbGVtZW50YXRpb24uCisgICAgICAgIHJldHVybiBnZXRhdHRyKHNvY2ssICJfc2VuZGZpbGVfdXNlX3NlbmQiKQorCisgICAgIyByZWd1bGFyIGZpbGUKKworICAgIGRlZiBfdGVzdFJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBzZWxmLkZJTEVTSVpFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgc2VsZi5GSUxFU0laRSkKKworICAgIGRlZiB0ZXN0UmVndWxhckZpbGUoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzZWxmLkZJTEVTSVpFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEEpCisKKyAgICAjIG5vbiByZWd1bGFyIGZpbGUKKworICAgIGRlZiBfdGVzdE5vblJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IGlvLkJ5dGVzSU8oc2VsZi5GSUxFREFUQSkKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgc2VudCA9IHNvY2suc2VuZGZpbGUoZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIHNlbGYuRklMRVNJWkUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuX0dpdmV1cE9uU2VuZGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUsIGZpbGUpCisKKyAgICBkZWYgdGVzdE5vblJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBKQorCisgICAgIyBlbXB0eSBmaWxlCisKKyAgICBkZWYgX3Rlc3RFbXB0eUZpbGVTZW5kKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgMCkKKworICAgIGRlZiB0ZXN0RW1wdHlGaWxlU2VuZChzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIiIpCisKKyAgICAjIG9mZnNldAorCisgICAgZGVmIF90ZXN0T2Zmc2V0KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlLCBvZmZzZXQ9NTAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgc2VsZi5GSUxFU0laRSAtIDUwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBzZWxmLkZJTEVTSVpFKQorCisgICAgZGVmIHRlc3RPZmZzZXQoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzZWxmLkZJTEVTSVpFIC0gNTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBWzUwMDA6XSkKKworICAgICMgY291bnQKKworICAgIGRlZiBfdGVzdENvdW50KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MikgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgY291bnQgPSA1MDAwMDA3CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSwgY291bnQ9Y291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIGNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgY291bnQpCisKKyAgICBkZWYgdGVzdENvdW50KHNlbGYpOgorICAgICAgICBjb3VudCA9IDUwMDAwMDcKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGNvdW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEFbOmNvdW50XSkKKworICAgICMgY291bnQgc21hbGwKKworICAgIGRlZiBfdGVzdENvdW50U21hbGwoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0yKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBjb3VudCA9IDEKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlLCBjb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgY291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBjb3VudCkKKworICAgIGRlZiB0ZXN0Q291bnRTbWFsbChzZWxmKToKKyAgICAgICAgY291bnQgPSAxCisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBjb3VudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBWzpjb3VudF0pCisKKyAgICAjIGNvdW50ICsgb2Zmc2V0CisKKyAgICBkZWYgX3Rlc3RDb3VudFdpdGhPZmZzZXQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0yKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBjb3VudCA9IDEwMDAwNworICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUsIG9mZnNldD0yMDA3LCBjb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgY291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBjb3VudCArIDIwMDcpCisKKyAgICBkZWYgdGVzdENvdW50V2l0aE9mZnNldChzZWxmKToKKyAgICAgICAgY291bnQgPSAxMDAwMDcKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGNvdW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEFbMjAwNzpjb3VudCsyMDA3XSkKKworICAgICMgbm9uIGJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3NlZCB0byB3b3JrCisKKyAgICBkZWYgX3Rlc3ROb25CbG9ja2luZyhzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBzb2NrLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGgsIGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrLnNlbmRmaWxlLCBmaWxlKQorCisgICAgZGVmIHRlc3ROb25CbG9ja2luZyhzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBpZiBjb25uLnJlY3YoODE5Mik6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3dhcyBub3Qgc3VwcG9zZWQgdG8gcmVjZWl2ZSBhbnkgZGF0YScpCisKKyAgICAjIHRpbWVvdXQgKG5vbi10cmlnZ2VyZWQpCisKKyAgICBkZWYgX3Rlc3RXaXRoVGltZW91dChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PTIpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBzZWxmLkZJTEVTSVpFKQorCisgICAgZGVmIHRlc3RXaXRoVGltZW91dChzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNlbGYuRklMRVNJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQSkKKworICAgICMgdGltZW91dCAodHJpZ2dlcmVkKQorCisgICAgZGVmIF90ZXN0V2l0aFRpbWVvdXRUcmlnZ2VyZWRTZW5kKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MC4wMSkgYXMgc29jaywgXAorICAgICAgICAgICAgICAgIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQudGltZW91dCwgbWV0aCwgZmlsZSkKKworICAgIGRlZiB0ZXN0V2l0aFRpbWVvdXRUcmlnZ2VyZWRTZW5kKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGNvbm4ucmVjdig4ODE5MikKKworICAgICMgZXJyb3JzCisKKyAgICBkZWYgX3Rlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCh0eXBlPXNvY2tldC5TT0NLX0RHUkFNKSBhcyBzOgorICAgICAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgIlNPQ0tfU1RSRUFNIiwgbWV0aCwgZmlsZSkKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncnQnKSBhcyBmaWxlOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKKyAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsICJiaW5hcnkgbW9kZSIsIG1ldGgsIGZpbGUpCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CisgICAgICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2socykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBvc2l0aXZlIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aCwgZmlsZSwgY291bnQ9JzInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicG9zaXRpdmUgaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLCBmaWxlLCBjb3VudD0wLjEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAicG9zaXRpdmUgaW50ZWdlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoLCBmaWxlLCBjb3VudD0wKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInBvc2l0aXZlIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aCwgZmlsZSwgY291bnQ9LTEpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJzZW5kZmlsZSIpLAorICAgICAgICAgICAgICAgICAgICAgJ29zLnNlbmRmaWxlKCkgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZGZpbGVVc2luZ1NlbmRmaWxlVGVzdChTZW5kZmlsZVVzaW5nU2VuZFRlc3QpOgorICAgICIiIgorICAgIFRlc3QgdGhlIHNlbmRmaWxlKCkgaW1wbGVtZW50YXRpb24gb2Ygc29ja2V0LnNlbmRmaWxlKCkuCisgICAgIiIiCisgICAgZGVmIG1ldGhfZnJvbV9zb2NrKHNlbGYsIHNvY2spOgorICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0dlbmVyYWxNb2R1bGVUZXN0cywgQmFzaWNUQ1BUZXN0LCBUQ1BDbG9zZXJUZXN0LCBUQ1BUaW1lb3V0VGVzdCwKICAgICAgICAgICAgICBUZXN0RXhjZXB0aW9ucywgQnVmZmVySU9UZXN0LCBCYXNpY1RDUFRlc3QyLCBCYXNpY1VEUFRlc3QsIFVEUFRpbWVvdXRUZXN0IF0KQEAgLTUxMjQsNyArNTI5MSw2IEBACiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgTm9uQmxvY2tpbmdUQ1BUZXN0cywKICAgICAgICAgRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCi0gICAgICAgIEZpbGVPYmplY3RJbnRlcnJ1cHRlZFRlc3RDYXNlLAogICAgICAgICBVbmJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCiAgICAgICAgIExpbmVCdWZmZXJlZEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlLAogICAgICAgICBTbWFsbEJ1ZmZlcmVkRmlsZU9iamVjdENsYXNzVGVzdENhc2UsCkBAIC01MTY5LDYgKzUzMzUsOCBAQAogICAgICAgICBJbnRlcnJ1cHRlZFJlY3ZUaW1lb3V0VGVzdCwKICAgICAgICAgSW50ZXJydXB0ZWRTZW5kVGltZW91dFRlc3QsCiAgICAgICAgIFRlc3RTb2NrZXRTaGFyaW5nLAorICAgICAgICBTZW5kZmlsZVVzaW5nU2VuZFRlc3QsCisgICAgICAgIFNlbmRmaWxlVXNpbmdTZW5kZmlsZVRlc3QsCiAgICAgXSkKIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAzMjVkNDg1Li4xZWE2NmE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMjIyLDM4ICsyMjIsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5EYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGdyYW1fZXhhbWluZSkKIAotICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi0gICAgZGVmIG1vY2tlZF9zZWxlY3RfbW9kdWxlKHNlbGYpOgotICAgICAgICAiIiJNb2NrcyB0aGUgc2VsZWN0LnNlbGVjdCgpIGNhbGwgdG8gcmFpc2UgRUlOVFIgZm9yIGZpcnN0IGNhbGwiIiIKLSAgICAgICAgb2xkX3NlbGVjdCA9IHNlbGVjdC5zZWxlY3QKLQotICAgICAgICBjbGFzcyBNb2NrU2VsZWN0OgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gMAotCi0gICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgotICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkICs9IDEKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNhbGxlZCA9PSAxOgotICAgICAgICAgICAgICAgICAgICAjIHJhaXNlIHRoZSBleGNlcHRpb24gb24gZmlyc3QgY2FsbAotICAgICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVJTlRSLCBvcy5zdHJlcnJvcihlcnJuby5FSU5UUikpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBSZXR1cm4gcmVhbCBzZWxlY3QgdmFsdWUgZm9yIGNvbnNlY3V0aXZlIGNhbGxzCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvbGRfc2VsZWN0KCphcmdzKQotCi0gICAgICAgIHNlbGVjdC5zZWxlY3QgPSBNb2NrU2VsZWN0KCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeWllbGQgc2VsZWN0LnNlbGVjdAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZWN0LnNlbGVjdCA9IG9sZF9zZWxlY3QKLQotICAgIGRlZiB0ZXN0X0ludGVycnVwdFNlcnZlclNlbGVjdENhbGwoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5tb2NrZWRfc2VsZWN0X21vZHVsZSgpIGFzIG1vY2tfc2VsZWN0OgotICAgICAgICAgICAgcGlkID0gc2VsZi5ydW5fc2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtX2V4YW1pbmUpCi0gICAgICAgICAgICAjIE1ha2Ugc3VyZSBzZWxlY3Qgd2FzIGNhbGxlZCBhZ2FpbjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihtb2NrX3NlbGVjdC5jYWxsZWQsIDEpCi0KICAgICAjIEFsYXMsIG9uIExpbnV4IChhdCBsZWFzdCkgcmVjdmZyb20oKSBkb2Vzbid0IHJldHVybiBhIG1lYW5pbmdmdWwKICAgICAjIGNsaWVudCBhZGRyZXNzIHNvIHRoaXMgY2Fubm90IHdvcms6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQppbmRleCA4ZjZhZjY0Li5hNWQwZWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CkBAIC0yNjIsMjQgKzI2Miw1IEBACiAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHRlc3RfY2xhc3NlcyA9ICgKLSAgICAgICAgVGVzdEJhc2UsCi0gICAgICAgIFRlc3REZWNvcmF0ZVNvcnRVbmRlY29yYXRlLAotICAgICAgICBUZXN0QnVncywKLSAgICApCi0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotCi0gICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCi0gICAgaWYgdmVyYm9zZSBhbmQgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBjb3VudHMgPSBbTm9uZV0gKiA1Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihjb3VudHMpKToKLSAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CmluZGV4IGNkZjNhZWQuLmYzMTRmZjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CkBAIC04NSw2ICs4NSwxMiBAQAogICAgICMgMC45Ljggb3IgaGlnaGVyCiAgICAgcmV0dXJuIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMCwgOSwgOCwgMCwgMTUpCiAKK2RlZiB1dGNfb2Zmc2V0KCk6ICNOT1RFOiBpZ25vcmUgaXNzdWVzIGxpa2UgIzE2NDc2NTQKKyAgICAjIGxvY2FsIHRpbWUgPSB1dGMgdGltZSArIHV0YyBvZmZzZXQKKyAgICBpZiB0aW1lLmRheWxpZ2h0IGFuZCB0aW1lLmxvY2FsdGltZSgpLnRtX2lzZHN0ID4gMDoKKyAgICAgICAgcmV0dXJuIC10aW1lLmFsdHpvbmUgICMgc2Vjb25kcworICAgIHJldHVybiAtdGltZS50aW1lem9uZQorCiBkZWYgYXNuMXRpbWUoY2VydF90aW1lKToKICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgT3BlblNTTCBpZ25vcmUgc2Vjb25kcywgc2VlICMxODIwNwogICAgICMgMC45LjguaQpAQCAtMTMzLDYgKzEzOSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHNzbC5IQVNfU05JLCB7VHJ1ZSwgRmFsc2V9KQogICAgICAgICBzZWxmLmFzc2VydEluKHNzbC5IQVNfRUNESCwge1RydWUsIEZhbHNlfSkKIAorICAgIGRlZiB0ZXN0X3N0cl9mb3JfZW51bXMoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIFBST1RPQ09MXyogY29uc3RhbnRzIGhhdmUgZW51bS1saWtlIHN0cmluZworICAgICAgICAjIHJlcHJzLgorICAgICAgICBwcm90byA9IHNzbC5QUk9UT0NPTF9TU0x2MjMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocHJvdG8pLCAnX1NTTE1ldGhvZC5QUk9UT0NPTF9TU0x2MjMnKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChwcm90bykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjdHgucHJvdG9jb2wsIHByb3RvKQorCiAgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgogICAgICAgICB2ID0gc3NsLlJBTkRfc3RhdHVzKCkKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMTU3LDYgKzE3MSw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNzbC5SQU5EX2VnZCwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlJBTkRfZWdkLCAnZm9vJywgMSkKICAgICAgICAgc3NsLlJBTkRfYWRkKCJ0aGlzIGlzIGEgcmFuZG9tIHN0cmluZyIsIDc1LjApCisgICAgICAgIHNzbC5SQU5EX2FkZChiInRoaXMgaXMgYSByYW5kb20gYnl0ZXMgb2JqZWN0IiwgNzUuMCkKKyAgICAgICAgc3NsLlJBTkRfYWRkKGJ5dGVhcnJheShiInRoaXMgaXMgYSByYW5kb20gYnl0ZWFycmF5IG9iamVjdCIpLCA3NS4wKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgcG9zaXgnKQogICAgIGRlZiB0ZXN0X3JhbmRvbV9mb3JrKHNlbGYpOgpAQCAtMjk3LDEwICszMTMsMTAgQEAKICAgICAgICAgIyBWZXJzaW9uIHN0cmluZyBhcyByZXR1cm5lZCBieSB7T3BlbixMaWJyZX1TU0wsIHRoZSBmb3JtYXQgbWlnaHQgY2hhbmdlCiAgICAgICAgIGlmICJMaWJyZVNTTCIgaW4gczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIkxpYnJlU1NMIHs6ZH0uezpkfSIuZm9ybWF0KG1ham9yLCBtaW5vcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocywgdCwgaGV4KG4pKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIk9wZW5TU0wgezpkfS57OmR9Lns6ZH0iLmZvcm1hdChtYWpvciwgbWlub3IsIGZpeCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocywgdCwgaGV4KG4pKSkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3JlZmN5Y2xlKHNlbGYpOgpAQCAtMzY4LDYgKzM4NCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5tYXRjaF9ob3N0bmFtZSwgY2VydCwgaG9zdG5hbWUpCiAKKyAgICAgICAgIyAtLSBIb3N0bmFtZSBtYXRjaGluZyAtLQorCiAgICAgICAgIGNlcnQgPSB7J3N1YmplY3QnOiAoKCgnY29tbW9uTmFtZScsICdleGFtcGxlLmNvbScpLCksKX0KICAgICAgICAgb2soY2VydCwgJ2V4YW1wbGUuY29tJykKICAgICAgICAgb2soY2VydCwgJ0V4QW1wbGUuY09tJykKQEAgLTQ1Myw2ICs0NzEsMjggQEAKICAgICAgICAgIyBPbmx5IGNvbW1vbk5hbWUgaXMgY29uc2lkZXJlZAogICAgICAgICBmYWlsKGNlcnQsICdDYWxpZm9ybmlhJykKIAorICAgICAgICAjIC0tIElQdjQgbWF0Y2hpbmcgLS0KKyAgICAgICAgY2VydCA9IHsnc3ViamVjdCc6ICgoKCdjb21tb25OYW1lJywgJ2V4YW1wbGUuY29tJyksKSwpLAorICAgICAgICAgICAgICAgICdzdWJqZWN0QWx0TmFtZSc6ICgoJ0ROUycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0lQIEFkZHJlc3MnLCAnMTAuMTEuMTIuMTMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdJUCBBZGRyZXNzJywgJzE0LjE1LjE2LjE3JykpfQorICAgICAgICBvayhjZXJ0LCAnMTAuMTEuMTIuMTMnKQorICAgICAgICBvayhjZXJ0LCAnMTQuMTUuMTYuMTcnKQorICAgICAgICBmYWlsKGNlcnQsICcxNC4xNS4xNi4xOCcpCisgICAgICAgIGZhaWwoY2VydCwgJ2V4YW1wbGUubmV0JykKKworICAgICAgICAjIC0tIElQdjYgbWF0Y2hpbmcgLS0KKyAgICAgICAgY2VydCA9IHsnc3ViamVjdCc6ICgoKCdjb21tb25OYW1lJywgJ2V4YW1wbGUuY29tJyksKSwpLAorICAgICAgICAgICAgICAgICdzdWJqZWN0QWx0TmFtZSc6ICgoJ0ROUycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0lQIEFkZHJlc3MnLCAnMjAwMTowOjA6MDowOjA6MDpDQUZFXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdJUCBBZGRyZXNzJywgJzIwMDM6MDowOjA6MDowOjA6QkFCQVxuJykpfQorICAgICAgICBvayhjZXJ0LCAnMjAwMTo6Y2FmZScpCisgICAgICAgIG9rKGNlcnQsICcyMDAzOjpiYWJhJykKKyAgICAgICAgZmFpbChjZXJ0LCAnMjAwMzo6YmViZScpCisgICAgICAgIGZhaWwoY2VydCwgJ2V4YW1wbGUubmV0JykKKworICAgICAgICAjIC0tIE1pc2NlbGxhbmVvdXMgLS0KKwogICAgICAgICAjIE5laXRoZXIgY29tbW9uTmFtZSBub3Igc3ViamVjdEFsdE5hbWUKICAgICAgICAgY2VydCA9IHsnbm90QWZ0ZXInOiAnRGVjIDE4IDIzOjU5OjU5IDIwMTEgR01UJywKICAgICAgICAgICAgICAgICAnc3ViamVjdCc6ICgoKCdjb3VudHJ5TmFtZScsICdVUycpLCksCkBAIC01MDQsOSArNTQ0LDE0IEBACiAgICAgZGVmIHRlc3RfdW5rbm93bl9jaGFubmVsX2JpbmRpbmcoc2VsZik6CiAgICAgICAgICMgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIHVua25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHMuYmluZCgoJzEyNy4wLjAuMScsIDApKQorICAgICAgICBzLmxpc3RlbigpCisgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBjLmNvbm5lY3Qocy5nZXRzb2NrbmFtZSgpKQorICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChjLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgc3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCisgICAgICAgIHMuY2xvc2UoKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoInRscy11bmlxdWUiIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIid0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgbm90IGF2YWlsYWJsZSIpCkBAIC02NDcsNiArNjkyLDcxIEBACiAgICAgICAgICAgICBjdHgud3JhcF9zb2NrZXQocykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY3guZXhjZXB0aW9uKSwgIm9ubHkgc3RyZWFtIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCiAKKyAgICBkZWYgY2VydF90aW1lX29rKHNlbGYsIHRpbWVzdHJpbmcsIHRpbWVzdGFtcCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKHRpbWVzdHJpbmcpLCB0aW1lc3RhbXApCisKKyAgICBkZWYgY2VydF90aW1lX2ZhaWwoc2VsZiwgdGltZXN0cmluZyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzc2wuY2VydF90aW1lX3RvX3NlY29uZHModGltZXN0cmluZykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHV0Y19vZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWwgdGltZSBuZWVkcyB0byBiZSBkaWZmZXJlbnQgZnJvbSBVVEMnKQorICAgIGRlZiB0ZXN0X2NlcnRfdGltZV90b19zZWNvbmRzX3RpbWV6b25lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxOTk0MDogc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCkgcmV0dXJucyB3cm9uZworICAgICAgICAjICAgICAgICAgICAgICAgcmVzdWx0cyBpZiBsb2NhbCB0aW1lem9uZSBpcyBub3QgVVRDCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJNYXkgIDkgMDA6MDA6MDAgMjAwNyBHTVQiLCAxMTc4NjY4ODAwLjApCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiLCAxNTE1MTQ0ODgzLjApCisKKyAgICBkZWYgdGVzdF9jZXJ0X3RpbWVfdG9fc2Vjb25kcyhzZWxmKToKKyAgICAgICAgdGltZXN0cmluZyA9ICJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiCisgICAgICAgIHRzID0gMTUxNTE0NDg4My4wCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKHRpbWVzdHJpbmcsIHRzKQorICAgICAgICAjIGFjY2VwdCBrZXl3b3JkIHBhcmFtZXRlciwgYXNzZXJ0IGl0cyBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKGNlcnRfdGltZT10aW1lc3RyaW5nKSwgdHMpCisgICAgICAgICMgYWNjZXB0IGJvdGggJWUgYW5kICVkIChzcGFjZSBvciB6ZXJvIGdlbmVyYXRlZCBieSBzdHJmdGltZSkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAwNSAwOTozNDo0MyAyMDE4IEdNVCIsIHRzKQorICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphTiAgNSAwOTozNDo0MyAyMDE4IEdtVCIsIHRzKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6MzQgMjAxOCBHTVQiKSAgICAgIyBubyBzZWNvbmRzCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTozNDo0MyAyMDE4IikgICAgICAjIG5vIEdNVAorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCBVVEMiKSAgIyBub3QgR01UIHRpbWV6b25lCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAzNSAwOTozNDo0MyAyMDE4IEdNVCIpICAjIGludmFsaWQgZGF5CisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkpvbiAgNSAwOTozNDo0MyAyMDE4IEdNVCIpICAjIGludmFsaWQgbW9udGgKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDI0OjAwOjAwIDIwMTggR01UIikgICMgaW52YWxpZCBob3VyCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTo2MDo0MyAyMDE4IEdNVCIpICAjIGludmFsaWQgbWludXRlCisKKyAgICAgICAgbmV3eWVhcl90cyA9IDEyMzA3NjgwMDAuMAorICAgICAgICAjIGxlYXAgc2Vjb25kcworICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRGVjIDMxIDIzOjU5OjYwIDIwMDggR01UIiwgbmV3eWVhcl90cykKKyAgICAgICAgIyBzYW1lIHRpbWVzdGFtcAorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICAxIDAwOjAwOjAwIDIwMDkgR01UIiwgbmV3eWVhcl90cykKKworICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICA1IDA5OjM0OjU5IDIwMTggR01UIiwgMTUxNTE0NDg5OSkKKyAgICAgICAgIyAgYWxsb3cgNjB0aCBzZWNvbmQgKGV2ZW4gaWYgaXQgaXMgbm90IGEgbGVhcCBzZWNvbmQpCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDUgMDk6MzQ6NjAgMjAxOCBHTVQiLCAxNTE1MTQ0OTAwKQorICAgICAgICAjICBhbGxvdyAybmQgbGVhcCBzZWNvbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aW1lLnN0cnB0aW1lKCkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAgNSAwOTozNDo2MSAyMDE4IEdNVCIsIDE1MTUxNDQ5MDEpCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAwOTozNDo2MiAyMDE4IEdNVCIpICAjIGludmFsaWQgc2Vjb25kcworCisgICAgICAgICMgbm8gc3BlY2lhbCB0cmVhdGVtZW50IGZvciB0aGUgc3BlY2lhbCB2YWx1ZToKKyAgICAgICAgIyAgIDk5OTkxMjMxMjM1OTU5WiAocmZjIDUyODApCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJEZWMgMzEgMjM6NTk6NTkgOTk5OSBHTVQiLCAyNTM0MDIzMDA3OTkuMCkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCisgICAgZGVmIHRlc3RfY2VydF90aW1lX3RvX3NlY29uZHNfbG9jYWxlKHNlbGYpOgorICAgICAgICAjIGBjZXJ0X3RpbWVfdG9fc2Vjb25kcygpYCBzaG91bGQgYmUgbG9jYWxlIGluZGVwZW5kZW50CisKKyAgICAgICAgZGVmIGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKToKKyAgICAgICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclYicsICgxLCAyLCAzLCA0LCA1LCA2LCAwLCAwLCAwKSkKKworICAgICAgICBpZiBsb2NhbF9mZWJydWFyeV9uYW1lKCkubG93ZXIoKSA9PSAnZmViJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImxvY2FsZS1zcGVjaWZpYyBtb250aCBuYW1lIG5lZWRzIHRvIGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBmcm9tIEMgbG9jYWxlIikKKworICAgICAgICAjIGxvY2FsZS1pbmRlcGVuZGVudAorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTExNTYsNyArMTI2Niw3IEBACiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgczoKICAgICAgICAgICAgIHMuYmluZCgoIjEyNy4wLjAuMSIsIDApKQotICAgICAgICAgICAgcy5saXN0ZW4oNSkKKyAgICAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICBjLnNldGJsb2NraW5nKEZhbHNlKQpAQCAtMTE2OSw2ICsxMjc5LDY5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEKQogCiAKK2NsYXNzIE1lbW9yeUJJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGUoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIGJpby53cml0ZShiJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYidmb29iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInJykKKyAgICAgICAgYmlvLndyaXRlKGInYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgyKSwgYidiYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMSksIGIneicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMSksIGInJykKKworICAgIGRlZiB0ZXN0X2VvZihzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgYmlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBiaW8ud3JpdGVfZW9mKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDIpLCBiJ2ZvJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uZW9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDEpLCBiJ28nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYmlvLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiaW8uZW9mKQorCisgICAgZGVmIHRlc3RfcGVuZGluZyhzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDApCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgYmlvLnJlYWQoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDMtaS0xKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIGJpby53cml0ZShiJ3gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucGVuZGluZywgaSsxKQorICAgICAgICBiaW8ucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIDApCisKKyAgICBkZWYgdGVzdF9idWZmZXJfdHlwZXMoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInZm9vJykKKyAgICAgICAgYmlvLndyaXRlKGJ5dGVhcnJheShiJ2JhcicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInYmFyJykKKyAgICAgICAgYmlvLndyaXRlKG1lbW9yeXZpZXcoYidiYXonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJ2JheicpCisKKyAgICBkZWYgdGVzdF9lcnJvcl90eXBlcyhzZWxmKToKKyAgICAgICAgYmlvID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW8ud3JpdGUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgMSkKKworCiBjbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgpAQCAtMTM5NiwxNCArMTU2OSwxMiBAQAogICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZik6CiAgICAgICAgIGRlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CiAgICAgICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGhvc3QpOgotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQogCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5QUk9UT0NPTF9TU0x2MjMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCkBAIC0xNDEzLDcgKzE1ODQsNiBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKIAogICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuUFJPVE9DT0xfU1NMdjIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPWNlcnQpCiAgICAgICAgICAgICAgICAgaWYgbm90IHBlbToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKQEAgLTE0OTksNiArMTY2OSw5MyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MikKIAorCitjbGFzcyBOZXR3b3JrZWRCSU9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc3NsX2lvX2xvb3Aoc2VsZiwgc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEEgc2ltcGxlIElPIGxvb3AuIENhbGwgZnVuYygqYXJncykgZGVwZW5kaW5nIG9uIHRoZSBlcnJvciB3ZSBnZXQKKyAgICAgICAgIyAoV0FOVF9SRUFEIG9yIFdBTlRfV1JJVEUpIG1vdmUgZGF0YSBiZXR3ZWVuIHRoZSBzb2NrZXQgYW5kIHRoZSBCSU9zLgorICAgICAgICB0aW1lb3V0ID0ga3dhcmdzLmdldCgndGltZW91dCcsIDEwKQorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGVycm5vID0gTm9uZQorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldCA9IGZ1bmMoKmFyZ3MpCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgd2UgZ2V0IGEgc3B1cmlvdXMgLTEvU1NMX0VSUk9SX1NZU0NBTEwgZm9yCisgICAgICAgICAgICAgICAgIyBub24tYmxvY2tpbmcgSU8uIFRoZSBTU0xfc2h1dGRvd24gbWFucGFnZSBoaW50cyBhdCB0aGlzLgorICAgICAgICAgICAgICAgICMgSXQgKnNob3VsZCogYmUgc2FmZSB0byBqdXN0IGlnbm9yZSBTWVNfRVJST1JfU1lTQ0FMTCBiZWNhdXNlCisgICAgICAgICAgICAgICAgIyB3aXRoIGEgTWVtb3J5IEJJTyB0aGVyZSdzIG5vIHN5c2NhbGxzIChmb3IgSU8gYXQgbGVhc3QpLgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlNTTF9FUlJPUl9XQU5UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1NZU0NBTEwpOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGVycm5vID0gZS5lcnJubworICAgICAgICAgICAgIyBHZXQgYW55IGRhdGEgZnJvbSB0aGUgb3V0Z29pbmcgQklPIGlycmVzcGVjdGl2ZSBvZiBhbnkgZXJyb3IsIGFuZAorICAgICAgICAgICAgIyBzZW5kIGl0IHRvIHRoZSBzb2NrZXQuCisgICAgICAgICAgICBidWYgPSBvdXRnb2luZy5yZWFkKCkKKyAgICAgICAgICAgIHNvY2suc2VuZGFsbChidWYpCisgICAgICAgICAgICAjIElmIHRoZXJlJ3Mgbm8gZXJyb3IsIHdlJ3JlIGRvbmUuIEZvciBXQU5UX1JFQUQsIHdlIG5lZWQgdG8gZ2V0CisgICAgICAgICAgICAjIGRhdGEgZnJvbSB0aGUgc29ja2V0IGFuZCBwdXQgaXQgaW4gdGhlIGluY29taW5nIEJJTy4KKyAgICAgICAgICAgIGlmIGVycm5vIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgZXJybm8gPT0gc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQ6CisgICAgICAgICAgICAgICAgYnVmID0gc29jay5yZWN2KDMyNzY4KQorICAgICAgICAgICAgICAgIGlmIGJ1ZjoKKyAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcud3JpdGUoYnVmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGluY29taW5nLndyaXRlX2VvZigpCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIk5lZWRlZCAlZCBjYWxscyB0byBjb21wbGV0ZSAlcygpLlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic3ZuLnB5dGhvbi5vcmciKToKKyAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICAgICAgc29jay5jb25uZWN0KCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpKQorICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQorICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsICdzdm4ucHl0aG9uLm9yZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzbG9iai5fc3Nsb2JqLm93bmVyLCBzc2xvYmopCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNzbG9iai5nZXRwZWVyY2VydCkKKyAgICAgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0cGVlcmNlcnQoKSkKKyAgICAgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQorICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoInN2bi5weXRob24ub3JnIik6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgICAgIHNvY2suY29ubmVjdCgoInN2bi5weXRob24ub3JnIiwgNDQzKSkKKyAgICAgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX05PTkUKKyAgICAgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgICAgICByZXEgPSBiJ0dFVCAvIEhUVFAvMS4wXHJcblxyXG4nCisgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLndyaXRlLCByZXEpCisgICAgICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zls6NV0sIGInSFRUUC8nKQorICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCisgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKworCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMTUzMCw3ICsxNzg3LDggQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3NsY29ubiA9IHNlbGYuc2VydmVyLmNvbnRleHQud3JhcF9zb2NrZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbGVjdGVkX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZWxlY3RlZF9ucG5fcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbGVjdGVkX2FscG5fcHJvdG9jb2xzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpKQogICAgICAgICAgICAgICAgIGV4Y2VwdCAoc3NsLlNTTEVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvcikgYXMgZToKICAgICAgICAgICAgICAgICAgICAgIyBXZSB0cmVhdCBDb25uZWN0aW9uUmVzZXRFcnJvciBhcyB0aG91Z2ggaXQgd2VyZSBhbgogICAgICAgICAgICAgICAgICAgICAjIFNTTEVycm9yIC0gT3BlblNTTCBvbiBVYnVudHUgYWJydXB0bHkgY2xvc2VzIHRoZQpAQCAtMTU0Nyw2ICsxODA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNoYXJlZF9jaXBoZXJzLmFwcGVuZChzZWxmLnNzbGNvbm4uc2hhcmVkX2NpcGhlcnMoKSkKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIuY29udGV4dC52ZXJpZnlfbW9kZSA9PSBzc2wuQ0VSVF9SRVFVSVJFRDoKICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQgPSBzZWxmLnNzbGNvbm4uZ2V0cGVlcmNlcnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jaGF0dHk6CkBAIC0xNjM3LDcgKzE4OTYsOCBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2VydGlmaWNhdGU9Tm9uZSwgc3NsX3ZlcnNpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNlcnRyZXFzPU5vbmUsIGNhY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzdGFydHRsc19zZXJ2ZXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBucG5fcHJvdG9jb2xzPU5vbmUsIGNpcGhlcnM9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgIG5wbl9wcm90b2NvbHM9Tm9uZSwgYWxwbl9wcm90b2NvbHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgICAgIGlmIGNvbnRleHQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICAgZWxzZToKQEAgLTE2NTIsNiArMTkxMiw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGlmaWNhdGUpCiAgICAgICAgICAgICAgICAgaWYgbnBuX3Byb3RvY29sczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKG5wbl9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgaWYgYWxwbl9wcm90b2NvbHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoYWxwbl9wcm90b2NvbHMpCiAgICAgICAgICAgICAgICAgaWYgY2lwaGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9jaXBoZXJzKGNpcGhlcnMpCiAgICAgICAgICAgICBzZWxmLmNoYXR0eSA9IGNoYXR0eQpAQCAtMTY2MSw3ICsxOTIzLDkgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc29jaykKICAgICAgICAgICAgIHNlbGYuZmxhZyA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuYWN0aXZlID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfcHJvdG9jb2xzID0gW10KKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWRfbnBuX3Byb3RvY29scyA9IFtdCisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkX2FscG5fcHJvdG9jb2xzID0gW10KKyAgICAgICAgICAgIHNlbGYuc2hhcmVkX2NpcGhlcnMgPSBbXQogICAgICAgICAgICAgc2VsZi5jb25uX2Vycm9ycyA9IFtdCiAgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCiAgICAgICAgICAgICBzZWxmLmRhZW1vbiA9IFRydWUKQEAgLTE2ODEsNyArMTk0NSw3IEBACiAKICAgICAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgICAgIHNlbGYuc29jay5zZXR0aW1lb3V0KDAuMDUpCi0gICAgICAgICAgICBzZWxmLnNvY2subGlzdGVuKDUpCisgICAgICAgICAgICBzZWxmLnNvY2subGlzdGVuKCkKICAgICAgICAgICAgIHNlbGYuYWN0aXZlID0gVHJ1ZQogICAgICAgICAgICAgaWYgc2VsZi5mbGFnOgogICAgICAgICAgICAgICAgICMgc2lnbmFsIGFuIGV2ZW50CkBAIC0xODg3LDE0ICsyMTUxLDI1IEBACiAgICAgICAgICAgICAgICAgICAgICdjb21wcmVzc2lvbic6IHMuY29tcHJlc3Npb24oKSwKICAgICAgICAgICAgICAgICAgICAgJ2NpcGhlcic6IHMuY2lwaGVyKCksCiAgICAgICAgICAgICAgICAgICAgICdwZWVyY2VydCc6IHMuZ2V0cGVlcmNlcnQoKSwKLSAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ucG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisgICAgICAgICAgICAgICAgICAgICdjbGllbnRfYWxwbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpLAorICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCksCisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogcy52ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX3Byb3RvY29scworICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9hbHBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX2FscG5fcHJvdG9jb2xzCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9ucG5fcHJvdG9jb2xzCisgICAgICAgICAgICBzdGF0c1snc2VydmVyX3NoYXJlZF9jaXBoZXJzJ10gPSBzZXJ2ZXIuc2hhcmVkX2NpcGhlcnMKICAgICAgICAgcmV0dXJuIHN0YXRzCiAKICAgICBkZWYgdHJ5X3Byb3RvY29sX2NvbWJvKHNlcnZlcl9wcm90b2NvbCwgY2xpZW50X3Byb3RvY29sLCBleHBlY3Rfc3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRzcmVxcz1Ob25lLCBzZXJ2ZXJfb3B0aW9ucz0wLCBjbGllbnRfb3B0aW9ucz0wKToKKyAgICAgICAgIiIiCisgICAgICAgIFRyeSB0byBTU0wtY29ubmVjdCB1c2luZyAqY2xpZW50X3Byb3RvY29sKiB0byAqc2VydmVyX3Byb3RvY29sKi4KKyAgICAgICAgSWYgKmV4cGVjdF9zdWNjZXNzKiBpcyB0cnVlLCBhc3NlcnQgdGhhdCB0aGUgY29ubmVjdGlvbiBzdWNjZWVkcywKKyAgICAgICAgaWYgaXQncyBmYWxzZSwgYXNzZXJ0IHRoYXQgdGhlIGNvbm5lY3Rpb24gZmFpbHMuCisgICAgICAgIEFsc28sIGlmICpleHBlY3Rfc3VjY2VzcyogaXMgYSBzdHJpbmcsIGFzc2VydCB0aGF0IGl0IGlzIHRoZSBwcm90b2NvbAorICAgICAgICB2ZXJzaW9uIGFjdHVhbGx5IHVzZWQgYnkgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICIiIgogICAgICAgICBpZiBjZXJ0c3JlcXMgaXMgTm9uZToKICAgICAgICAgICAgIGNlcnRzcmVxcyA9IHNzbC5DRVJUX05PTkUKICAgICAgICAgY2VydHR5cGUgPSB7CkBAIC0xOTI0LDggKzIxOTksOCBAQAogICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAjIFByb3RvY29sIG1pc21hdGNoIGNhbiByZXN1bHQgaW4gZWl0aGVyIGFuIFNTTEVycm9yLCBvciBhCiAgICAgICAgICMgIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciIgZXJyb3IuCiAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3I6CkBAIC0xOTQwLDYgKzIyMTUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIkNsaWVudCBwcm90b2NvbCAlcyBzdWNjZWVkZWQgd2l0aCBzZXJ2ZXIgcHJvdG9jb2wgJXMhIgogICAgICAgICAgICAgICAgICAgICAlIChzc2wuZ2V0X3Byb3RvY29sX25hbWUoY2xpZW50X3Byb3RvY29sKSwKICAgICAgICAgICAgICAgICAgICAgICAgc3NsLmdldF9wcm90b2NvbF9uYW1lKHNlcnZlcl9wcm90b2NvbCkpKQorICAgICAgICAgICAgZWxpZiAoZXhwZWN0X3N1Y2Nlc3MgaXMgbm90IFRydWUKKyAgICAgICAgICAgICAgICAgIGFuZCBleHBlY3Rfc3VjY2VzcyAhPSBzdGF0c1sndmVyc2lvbiddKToKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidmVyc2lvbiBtaXNtYXRjaDogZXhwZWN0ZWQgJXIsIGdvdCAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChleHBlY3Rfc3VjY2Vzcywgc3RhdHNbJ3ZlcnNpb24nXSkpCiAKIAogICAgIGNsYXNzIFRocmVhZGVkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjEwNyw3ICsyMzg2LDcgQEAKICAgICAgICAgICAgICMgYW5kIHNldHMgRXZlbnQgYGxpc3RlbmVyX2dvbmVgIHRvIGxldCB0aGUgbWFpbiB0aHJlYWQga25vdwogICAgICAgICAgICAgIyB0aGUgc29ja2V0IGlzIGdvbmUuCiAgICAgICAgICAgICBkZWYgbGlzdGVuZXIoKToKLSAgICAgICAgICAgICAgICBzLmxpc3Rlbig1KQorICAgICAgICAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgICAgICAgICBsaXN0ZW5lcl9yZWFkeS5zZXQoKQogICAgICAgICAgICAgICAgIG5ld3NvY2ssIGFkZHIgPSBzLmFjY2VwdCgpCiAgICAgICAgICAgICAgICAgbmV3c29jay5jbG9zZSgpCkBAIC0yMTcyLDE5ICsyNDUxLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBTU0wyIGNsaWVudCB0byBTU0wyMyBzZXJ2ZXIgdGVzdCB1bmV4cGVjdGVkbHkgZmFpbGVkOlxuICVzXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzdHIoeCkpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6Ci0gICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSkKKyAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIFRydWUpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgJ1RMU3YxJykKIAogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgotICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUsIHNzbC5DRVJUX09QVElPTkFMKQorICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjMsICdTU0x2MycsIHNzbC5DRVJUX09QVElPTkFMKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIFRydWUsIHNzbC5DRVJUX09QVElPTkFMKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnLCBzc2wuQ0VSVF9PUFRJT05BTCkKIAogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgotICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjMsICdTU0x2MycsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnLCBzc2wuQ0VSVF9SRVFVSVJFRCkKIAogICAgICAgICAgICAgIyBTZXJ2ZXIgd2l0aCBzcGVjaWZpYyBTU0wgb3B0aW9ucwogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgpAQCAtMjIwNCw5ICsyNDgzLDkgQEAKICAgICAgICAgICAgICIiIkNvbm5lY3RpbmcgdG8gYW4gU1NMdjMgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucyIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnLCBzc2wuQ0VSVF9PUFRJT05BTCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJywgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6CiAgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYyLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIEZhbHNlLApAQCAtMjIxNCw3ICsyNDkzLDcgQEAKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgRmFsc2UpCiAgICAgICAgICAgICBpZiBub19zc2x2Ml9pbXBsaWVzX3NzbHYzX2hlbGxvKCk6CiAgICAgICAgICAgICAgICAgIyBObyBTU0x2MiA9PiBjbGllbnQgd2lsbCB1c2UgYW4gU1NMdjMgaGVsbG8gb24gcmVjZW50IE9wZW5TU0xzCi0gICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYyMywgVHJ1ZSwKKyAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCAnU1NMdjMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fU1NMdjIpCiAKICAgICAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKQEAgLTIyMjIsOSArMjUwMSw5IEBACiAgICAgICAgICAgICAiIiJDb25uZWN0aW5nIHRvIGEgVExTdjEgc2VydmVyIHdpdGggdmFyaW91cyBjbGllbnQgb3B0aW9ucyIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSwgc3NsLkNFUlRfT1BUSU9OQUwpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCAnVExTdjEnLCBzc2wuQ0VSVF9PUFRJT05BTCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgJ1RMU3YxJywgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6CiAgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1NTTHYyLCBGYWxzZSkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKQEAgLTIyNDAsNyArMjUxOSw3IEBACiAgICAgICAgICAgICAgICBUZXN0aW5nIGFnYWluc3Qgb2xkZXIgVExTIHZlcnNpb25zLiIiIgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMSwgc3NsLlBST1RPQ09MX1RMU3YxXzEsIFRydWUpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCAnVExTdjEuMScpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6CiAgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfU1NMdjIsIEZhbHNlKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgpAQCAtMjI0OCw3ICsyNTI3LDcgQEAKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMSwgc3NsLlBST1RPQ09MX1NTTHYyMywgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9c3NsLk9QX05PX1RMU3YxXzEpCiAKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgVHJ1ZSkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgJ1RMU3YxLjEnKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfVExTdjEsIEZhbHNlKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxXzEsIEZhbHNlKQogCkBAIC0yMjYxLDcgKzI1NDAsNyBAQAogICAgICAgICAgICAgICAgVGVzdGluZyBhZ2FpbnN0IG9sZGVyIFRMUyB2ZXJzaW9ucy4iIiIKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBUcnVlLAorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfVExTdjFfMiwgJ1RMU3YxLjInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9vcHRpb25zPXNzbC5PUF9OT19TU0x2M3xzc2wuT1BfTk9fU1NMdjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9c3NsLk9QX05PX1NTTHYzfHNzbC5PUF9OT19TU0x2MiwpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYyJyk6CkBAIC0yMjcxLDcgKzI1NTAsNyBAQAogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfb3B0aW9ucz1zc2wuT1BfTk9fVExTdjFfMikKIAotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBUcnVlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MV8yLCAnVExTdjEuMicpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9UTFN2MSwgRmFsc2UpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjFfMiwgRmFsc2UpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzIsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBGYWxzZSkKQEAgLTI1MDcsNiArMjc4NiwzNiBAQAogICAgICAgICAgICAgICAgIHMud3JpdGUoYiJvdmVyXG4iKQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogCisgICAgICAgIGRlZiB0ZXN0X25vbmJsb2NraW5nX3NlbmQoc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBrZWVwIHNlbmRpbmcgZGF0YSwgYXQgc29tZSBwb2ludCB0aGUgYnVmZmVycworICAgICAgICAgICAgICAgICMgd2lsbCBiZSBmdWxsIGFuZCB0aGUgY2FsbCB3aWxsIGJsb2NrCisgICAgICAgICAgICAgICAgYnVmID0gYnl0ZWFycmF5KDgxOTIpCisgICAgICAgICAgICAgICAgZGVmIGZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmQoYnVmKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChzc2wuU1NMV2FudFdyaXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xXYW50UmVhZEVycm9yKSwgZmlsbF9idWZmZXIpCisKKyAgICAgICAgICAgICAgICAjIE5vdyByZWFkIGFsbCB0aGUgb3V0cHV0IGFuZCBkaXNjYXJkIGl0CisgICAgICAgICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCiAgICAgICAgIGRlZiB0ZXN0X2hhbmRzaGFrZV90aW1lb3V0KHNlbGYpOgogICAgICAgICAgICAgIyBJc3N1ZSAjNTEwMzogU1NMIGhhbmRzaGFrZSBtdXN0IHJlc3BlY3QgdGhlIHNvY2tldCB0aW1lb3V0CiAgICAgICAgICAgICBzZXJ2ZXIgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQpAQCAtMjUxNiw3ICsyODI1LDcgQEAKICAgICAgICAgICAgIGZpbmlzaCA9IEZhbHNlCiAKICAgICAgICAgICAgIGRlZiBzZXJ2ZSgpOgotICAgICAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oNSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKCkKICAgICAgICAgICAgICAgICBzdGFydGVkLnNldCgpCiAgICAgICAgICAgICAgICAgY29ubnMgPSBbXQogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBmaW5pc2g6CkBAIC0yNTczLDcgKzI4ODIsNyBAQAogICAgICAgICAgICAgcGVlciA9IE5vbmUKICAgICAgICAgICAgIGRlZiBzZXJ2ZSgpOgogICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlbW90ZSwgcGVlcgotICAgICAgICAgICAgICAgIHNlcnZlci5saXN0ZW4oNSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKCkKICAgICAgICAgICAgICAgICAjIEJsb2NrIG9uIHRoZSBhY2NlcHQgYW5kIHdhaXQgb24gdGhlIGNvbm5lY3Rpb24gdG8gY2xvc2UuCiAgICAgICAgICAgICAgICAgZXZ0LnNldCgpCiAgICAgICAgICAgICAgICAgcmVtb3RlLCBwZWVyID0gc2VydmVyLmFjY2VwdCgpCkBAIC0yNjIzLDYgKzI5MzIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibm8gc2hhcmVkIGNpcGhlciIsIHN0cihzZXJ2ZXIuY29ubl9lcnJvcnNbMF0pKQogCisgICAgICAgIGRlZiB0ZXN0X3ZlcnNpb25fYmFzaWMoc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIEJhc2ljIHRlc3RzIGZvciBTU0xTb2NrZXQudmVyc2lvbigpLgorICAgICAgICAgICAgTW9yZSB0ZXN0cyBhcmUgZG9uZSBpbiB0aGUgdGVzdF9wcm90b2NvbF8qKCkgbWV0aG9kcy4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzLnZlcnNpb24oKSwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy52ZXJzaW9uKCksICJUTFN2MSIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzLnZlcnNpb24oKSwgTm9uZSkKKwogICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX0VDREgsICJ0ZXN0IHJlcXVpcmVzIEVDREgtZW5hYmxlZCBPcGVuU1NMIikKICAgICAgICAgZGVmIHRlc3RfZGVmYXVsdF9lY2RoX2N1cnZlKHNlbGYpOgogICAgICAgICAgICAgIyBJc3N1ZSAjMjEwMTU6IGVsbGlwdGljIGN1cnZlLWJhc2VkIERpZmZpZSBIZWxsbWFuIGtleSBleGNoYW5nZQpAQCAtMjczMiw2ICszMDU2LDU1IEBACiAgICAgICAgICAgICBpZiAiQURIIiBub3QgaW4gcGFydHMgYW5kICJFREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkRIRSIgbm90IGluIHBhcnRzOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm9uLURIIGNpcGhlcjogIiArIGNpcGhlclswXSkKIAorICAgICAgICBkZWYgdGVzdF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sKHNlbGYpOgorICAgICAgICAgICAgIyBzZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkgaXMgTm9uZSB1bmxlc3MgQUxQTiBpcyB1c2VkLgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YXRzWydjbGllbnRfYWxwbl9wcm90b2NvbCddLCBOb25lKQorCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfQUxQTiwgIkFMUE4gc3VwcG9ydCByZXF1aXJlZCIpCisgICAgICAgIGRlZiB0ZXN0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfaWZfc2VydmVyX3VzZXNfYWxwbihzZWxmKToKKyAgICAgICAgICAgICMgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpIGlzIE5vbmUgdW5sZXNzIEFMUE4gaXMgdXNlZCBieSB0aGUgY2xpZW50LgorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhbJ2ZvbycsICdiYXInXSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YXRzWydjbGllbnRfYWxwbl9wcm90b2NvbCddLCBOb25lKQorCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfQUxQTiwgIkFMUE4gc3VwcG9ydCBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgIGRlZiB0ZXN0X2FscG5fcHJvdG9jb2xzKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scyA9IFsnZm9vJywgJ2JhcicsICdtaWxrc2hha2UnXQorICAgICAgICAgICAgcHJvdG9jb2xfdGVzdHMgPSBbCisgICAgICAgICAgICAgICAgKFsnZm9vJywgJ2JhciddLCAnZm9vJyksCisgICAgICAgICAgICAgICAgKFsnYmFyJywgJ2ZvbyddLCAnZm9vJyksCisgICAgICAgICAgICAgICAgKFsnbWlsa3NoYWtlJ10sICdtaWxrc2hha2UnKSwKKyAgICAgICAgICAgICAgICAoWydodHRwLzMuMCcsICdodHRwLzQuMCddLCBOb25lKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgZm9yIGNsaWVudF9wcm90b2NvbHMsIGV4cGVjdGVkIGluIHByb3RvY29sX3Rlc3RzOgorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoc2VydmVyX3Byb3RvY29scykKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKGNsaWVudF9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisKKyAgICAgICAgICAgICAgICBtc2cgPSAiZmFpbGVkIHRyeWluZyAlcyAocykgYW5kICVzIChjKS5cbiIgXAorICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZXhwZWN0aW5nICVzLCBidXQgZ290ICUlcyBmcm9tIHRoZSAlJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3RyKHNlcnZlcl9wcm90b2NvbHMpLCBzdHIoY2xpZW50X3Byb3RvY29scyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgY2xpZW50X3Jlc3VsdCA9IHN0YXRzWydjbGllbnRfYWxwbl9wcm90b2NvbCddCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKGNsaWVudF9yZXN1bHQsICJjbGllbnQiKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfcmVzdWx0ID0gc3RhdHNbJ3NlcnZlcl9hbHBuX3Byb3RvY29scyddWy0xXSBcCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10pIGVsc2UgJ25vdGhpbmcnCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXJfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKHNlcnZlcl9yZXN1bHQsICJzZXJ2ZXIiKSkKKwogICAgICAgICBkZWYgdGVzdF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CiAgICAgICAgICAgICAjIHNlbGVjdGVkX25wbl9wcm90b2NvbCgpIGlzIE5vbmUgdW5sZXNzIE5QTiBpcyB1c2VkCiAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQpAQCAtMjg3Miw2ICszMjQ1LDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5yZWFzb24sICdUTFNWMV9BTEVSVF9JTlRFUk5BTF9FUlJPUicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJUeXBlRXJyb3IiLCBzdGRlcnIuZ2V0dmFsdWUoKSkKIAorICAgICAgICBkZWYgdGVzdF9zaGFyZWRfY2lwaGVycyhzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfY2lwaGVycygiUkM0IikKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVM6UkM0IikKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIGNpcGhlcnMgPSBzdGF0c1snc2VydmVyX3NoYXJlZF9jaXBoZXJzJ11bMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oY2lwaGVycyksIDApCisgICAgICAgICAgICBmb3IgbmFtZSwgdGxzX3ZlcnNpb24sIGJpdHMgaW4gY2lwaGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJSQzQiLCBuYW1lLnNwbGl0KCItIikpCisKICAgICAgICAgZGVmIHRlc3RfcmVhZF93cml0ZV9hZnRlcl9jbG9zZV9yYWlzZXNfdmFsdWVycm9yKHNlbGYpOgogICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKQEAgLTI4ODcsMjEgKzMyNzQsNDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLnJlYWQsIDEwMjQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy53cml0ZSwgYidoZWxsbycpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2VuZGZpbGUoc2VsZik6CisgICAgICAgICAgICBURVNUX0RBVEEgPSBiIngiICogNTEyCisgICAgICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShURVNUX0RBVEEpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoY29udGV4dD1jb250ZXh0LCBjaGF0dHk9RmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZW5kZmlsZShmaWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnJlY3YoMTAyNCksIFRFU1RfREFUQSkKKwogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgogICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIHBsYXRzID0gewogICAgICAgICAgICAgJ0xpbnV4JzogcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uLAogICAgICAgICAgICAgJ01hYyc6IHBsYXRmb3JtLm1hY192ZXIsCiAgICAgICAgICAgICAnV2luZG93cyc6IHBsYXRmb3JtLndpbjMyX3ZlciwKICAgICAgICAgfQotICAgICAgICBmb3IgbmFtZSwgZnVuYyBpbiBwbGF0cy5pdGVtcygpOgotICAgICAgICAgICAgcGxhdCA9IGZ1bmMoKQotICAgICAgICAgICAgaWYgcGxhdCBhbmQgcGxhdFswXToKLSAgICAgICAgICAgICAgICBwbGF0ID0gJyVzICVyJyAlIChuYW1lLCBwbGF0KQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwbGF0ID0gcmVwcihwbGF0Zm9ybS5wbGF0Zm9ybSgpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKKyAgICAgICAgICAgICAgICAnaWdub3JlJywKKyAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAorICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICApCisgICAgICAgICAgICBmb3IgbmFtZSwgZnVuYyBpbiBwbGF0cy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHBsYXQgPSBmdW5jKCkKKyAgICAgICAgICAgICAgICBpZiBwbGF0IGFuZCBwbGF0WzBdOgorICAgICAgICAgICAgICAgICAgICBwbGF0ID0gJyVzICVyJyAlIChuYW1lLCBwbGF0KQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwbGF0ID0gcmVwcihwbGF0Zm9ybS5wbGF0Zm9ybSgpKQogICAgICAgICBwcmludCgidGVzdF9zc2w6IHRlc3Rpbmcgd2l0aCAlciAlciIgJQogICAgICAgICAgICAgKHNzbC5PUEVOU1NMX1ZFUlNJT04sIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTykpCiAgICAgICAgIHByaW50KCIgICAgICAgICAgdW5kZXIgJXMiICUgcGxhdCkKQEAgLTI5MjAsMTAgKzMzMzIsMTEgQEAKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzXQorICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHNdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKICAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZFRlc3RzKQorICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkQklPVGVzdHMpCiAKICAgICBpZiBfaGF2ZV90aHJlYWRzOgogICAgICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkKaW5kZXggNDNhYmY5Yi4uZjU5MjUyZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkKQEAgLTMwLDggKzMwLDUgQEAKICAgICAgICAgICAgIHN0YXJ0ZmlsZShlbXB0eSkKICAgICAgICAgICAgIHN0YXJ0ZmlsZShlbXB0eSwgIm9wZW4iKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdENhc2UpCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CmluZGV4IGFmNmNlZDQuLmYxYTU5MzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgaW1wb3J0X2ZyZXNoX21vZHVsZQogCiBjX3N0YXQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdzdGF0JywgZnJlc2g9Wydfc3RhdCddKQpAQCAtNTIsNiArNTMsMjYgQEAKICAgICAgICAgJ1NfSVdPVEgnOiAwbzAwMiwKICAgICAgICAgJ1NfSVhPVEgnOiAwbzAwMX0KIAorICAgICMgZGVmaW5lZCBieSB0aGUgV2luZG93cyBBUEkgZG9jdW1lbnRhdGlvbgorICAgIGZpbGVfYXR0cmlidXRlcyA9IHsKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0FSQ0hJVkUnOiAzMiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQnOiAyMDQ4LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfREVWSUNFJzogNjQsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlknOiAxNiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0VOQ1JZUFRFRCc6IDE2Mzg0LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfSElEREVOJzogMiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0nOiAzMjc2OCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX05PUk1BTCc6IDEyOCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX05PVF9DT05URU5UX0lOREVYRUQnOiA4MTkyLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQSc6IDEzMTA3MiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX09GRkxJTkUnOiA0MDk2LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfUkVBRE9OTFknOiAxLAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCc6IDEwMjQsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9TUEFSU0VfRklMRSc6IDUxMiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1NZU1RFTSc6IDQsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9URU1QT1JBUlknOiAyNTYsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9WSVJUVUFMJzogNjU1MzZ9CisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnJlbW92ZShURVNURk4pCkBAIC0xODUsNiArMjA2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbGFibGUoZnVuYykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoMCksIDApCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRklMRV9BVFRSSUJVVEVfKiBjb25zdGFudHMgYXJlIFdpbjMyIHNwZWNpZmljIikKKyAgICBkZWYgdGVzdF9maWxlX2F0dHJpYnV0ZV9jb25zdGFudHMoc2VsZik6CisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNvcnRlZChzZWxmLmZpbGVfYXR0cmlidXRlcy5pdGVtcygpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYuc3RhdG1vZCwga2V5KSwga2V5KQorICAgICAgICAgICAgbW9kdmFsdWUgPSBnZXRhdHRyKHNlbGYuc3RhdG1vZCwga2V5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgbW9kdmFsdWUsIGtleSkKKwogCiBjbGFzcyBUZXN0RmlsZW1vZGVDU3RhdChUZXN0RmlsZW1vZGUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzdGF0bW9kID0gY19zdGF0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CmluZGV4IDU3OTYzYmYuLjBjZDJiODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CkBAIC0xLDE5ICsxLDIyIEBACiBpbXBvcnQgdW5pdHRlc3QsIHN0cmluZwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9hdHRycyhzZWxmKToKLSAgICAgICAgc3RyaW5nLndoaXRlc3BhY2UKLSAgICAgICAgc3RyaW5nLmFzY2lpX2xvd2VyY2FzZQotICAgICAgICBzdHJpbmcuYXNjaWlfdXBwZXJjYXNlCi0gICAgICAgIHN0cmluZy5hc2NpaV9sZXR0ZXJzCi0gICAgICAgIHN0cmluZy5kaWdpdHMKLSAgICAgICAgc3RyaW5nLmhleGRpZ2l0cwotICAgICAgICBzdHJpbmcub2N0ZGlnaXRzCi0gICAgICAgIHN0cmluZy5wdW5jdHVhdGlvbgotICAgICAgICBzdHJpbmcucHJpbnRhYmxlCisgICAgICAgICMgV2hpbGUgdGhlIGV4YWN0IG9yZGVyIG9mIHRoZSBpdGVtcyBpbiB0aGVzZSBhdHRyaWJ1dGVzIGlzIG5vdAorICAgICAgICAjIHRlY2huaWNhbGx5IHBhcnQgb2YgdGhlICJsYW5ndWFnZSBzcGVjIiwgaW4gcHJhY3RpY2UgdGhlcmUgaXMgYWxtb3N0CisgICAgICAgICMgY2VydGFpbmx5IHVzZXIgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIG9yZGVyLCBzbyBkZS1mYWN0byBpdCAqaXMqCisgICAgICAgICMgcGFydCBvZiB0aGUgc3BlYy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcud2hpdGVzcGFjZSwgJyBcdFxuXHJceDBiXHgwYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmFzY2lpX2xvd2VyY2FzZSwgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuYXNjaWlfdXBwZXJjYXNlLCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5hc2NpaV9sZXR0ZXJzLCBzdHJpbmcuYXNjaWlfbG93ZXJjYXNlICsgc3RyaW5nLmFzY2lpX3VwcGVyY2FzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuZGlnaXRzLCAnMDEyMzQ1Njc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmhleGRpZ2l0cywgc3RyaW5nLmRpZ2l0cyArICdhYmNkZWZBQkNERUYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5vY3RkaWdpdHMsICcwMTIzNDU2NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLnB1bmN0dWF0aW9uLCAnISIjJCUmXCcoKSorLC0uLzo7PD0+P0BbXFxdXl9ge3x9ficpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLnByaW50YWJsZSwgc3RyaW5nLmRpZ2l0cyArIHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHJpbmcuYXNjaWlfdXBwZXJjYXNlICsgc3RyaW5nLnB1bmN0dWF0aW9uICsgc3RyaW5nLndoaXRlc3BhY2UpCiAKICAgICBkZWYgdGVzdF9jYXB3b3JkcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuY2Fwd29yZHMoJ2FiYyBkZWYgZ2hpJyksICdBYmMgRGVmIEdoaScpCkBAIC00Myw4ICs0Niw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiLXtmb3JtYXRfc3RyaW5nfS0iLCBmb3JtYXRfc3RyaW5nPSd0ZXN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy10ZXN0LScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBmbXQuZm9ybWF0LCAiLXtmb3JtYXRfc3RyaW5nfS0iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoYXJnPSd0ZXN0JywgZm9ybWF0X3N0cmluZz0iLXthcmd9LSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICctdGVzdC0nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJmb3JtYXRfc3RyaW5nIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoYXJnPSd0ZXN0JywgZm9ybWF0X3N0cmluZz0iLXthcmd9LSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLXRlc3QtJykKIAogICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyaW5nKHNlbGYpOgogICAgICAgICBmbXQgPSBzdHJpbmcuRm9ybWF0dGVyKCkKQEAgLTE4Myw4ICsxODcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCJyZWN1cnNpb24iLCBzdHIoZXJyLmV4Y2VwdGlvbikpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5ncHJlcC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5ncHJlcC5weQppbmRleCBlNzYzNjM1Li5kNGI0YTEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmluZ3ByZXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJpbmdwcmVwLnB5CkBAIC0yLDcgKzIsNiBAQAogIyBTaW5jZSB3ZSBkb24ndCBoYXZlIHRoZW0sIHRoaXMgdGVzdCBjaGVja3Mgb25seSBhIGZldyBjb2RlIHBvaW50cy4KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSBzdHJpbmdwcmVwIGltcG9ydCAqCiAKQEAgLTg5LDggKzg4LDUgQEAKICAgICAgICAgIyAgICAgaC51cGRhdGUoZGF0YSkKICAgICAgICAgIyAgICAgcHJpbnQgcCwgaC5oZXhkaWdlc3QoKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3RyaW5ncHJlcFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CmluZGV4IGQwMTMyMmYuLjg3Y2ZmZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CkBAIC0zMiw3ICszMiw2IEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlc3Quc3VwcG9ydAogCiAKIFRFTVBMQVRFID0gciIiIiMgY29kaW5nOiAlcwpAQCAtMTk5LDggKzE5OCw1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoImxhdGluOSIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CmluZGV4IDJhNmYzZjguLjM0NmUyYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQpAQCAtNTc4LDE4ICs1NzgsNSBAQAogICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfVElNRSwgbG9jYWxlX2luZm8pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBnZXRsYW5nX1Rlc3RzLAotICAgICAgICBMb2NhbGVUaW1lX1Rlc3RzLAotICAgICAgICBUaW1lUkVUZXN0cywKLSAgICAgICAgU3RycHRpbWVUZXN0cywKLSAgICAgICAgU3RycHRpbWUxMkFNUE1UZXN0cywKLSAgICAgICAgSnVsaWFuVGVzdHMsCi0gICAgICAgIENhbGN1bGF0aW9uVGVzdHMsCi0gICAgICAgIENhY2hlVGVzdHMKLSAgICApCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnRvZC5weQppbmRleCA0MWI2ZTVmLi4yNzI3NTE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnRvZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnRvZC5weQpAQCAtNDI5LDggKzQyOSw1IEBACiAgICAgICAgIGZvciBzIGluIHRlc3Rfc3RyaW5nczoKICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RydG9kKHMpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFN0cnRvZFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IDAxMDdlZWIuLmVmYmRiZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC02NjAsOCArNjYwLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdG1lbWJlcnMucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdG1lbWJlcnMucHkKaW5kZXggMWM5MzFhZS4uNTdlYzQ1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RtZW1iZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0bWVtYmVycy5weQpAQCAtMTQwLDggKzE0MCw1IEBACiAgICAgICAgICAgICB0cy5UX1VTSE9SVCA9IFVTSFJUX01BWCsxCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CmluZGV4IDM1M2QwZWEuLjNlY2IyN2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBTdHJ1Y3RTZXFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyMyw4ICsxMjIsNSBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodFtzdGFydDpzdG9wOnN0ZXBdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMW3N0YXJ0OnN0b3A6c3RlcF0pCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTdHJ1Y3RTZXFUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggMmNlNTk1MS4uNWZkNjUyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwpAQCAtMzgxLDcgKzM4MSw3IEBACiAgICAgICAgIHB5dGhvbl9kaXIsIHB5dGhvbl9iYXNlID0gc2VsZi5fc3BsaXRfcHl0aG9uX3BhdGgoKQogICAgICAgICBhYnNfcHl0aG9uID0gb3MucGF0aC5qb2luKHB5dGhvbl9kaXIsIHB5dGhvbl9iYXNlKQogICAgICAgICByZWxfcHl0aG9uID0gb3MucGF0aC5qb2luKG9zLmN1cmRpciwgcHl0aG9uX2Jhc2UpCi0gICAgICAgIHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHdyb25nX2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIGFuIGFic29sdXRlIHBhdGgsIGNvbmZpcm0gdGhhdCB1c2luZyBhCiAgICAgICAgICAgICAjIHJlbGF0aXZlIHBhdGggZmFpbHMuCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKQEAgLTEyMTksNiArMTIxOSwxMDIgQEAKICAgICAgICAgZmRzX2FmdGVyX2V4Y2VwdGlvbiA9IG9zLmxpc3RkaXIoZmRfZGlyZWN0b3J5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZkc19iZWZvcmVfcG9wZW4sIGZkc19hZnRlcl9leGNlcHRpb24pCiAKKworY2xhc3MgUnVuRnVuY1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgZGVmIHJ1bl9weXRob24oc2VsZiwgY29kZSwgKiprd2FyZ3MpOgorICAgICAgICAiIiJSdW4gUHl0aG9uIGNvZGUgaW4gYSBzdWJwcm9jZXNzIHVzaW5nIHN1YnByb2Nlc3MucnVuIiIiCisgICAgICAgIGFyZ3YgPSBbc3lzLmV4ZWN1dGFibGUsICItYyIsIGNvZGVdCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLnJ1bihhcmd2LCAqKmt3YXJncykKKworICAgIGRlZiB0ZXN0X3JldHVybmNvZGUoc2VsZik6CisgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc2VxdWVuY2UgYXJndW1lbnQKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3AucmV0dXJuY29kZSwgNDcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICAgICAgY3AuY2hlY2tfcmV0dXJuY29kZSgpCisKKyAgICBkZWYgdGVzdF9jaGVjayhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcikgYXMgYzoKKyAgICAgICAgICAgIHNlbGYucnVuX3B5dGhvbigiaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpIiwgY2hlY2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4Y2VwdGlvbi5yZXR1cm5jb2RlLCA0NykKKworICAgIGRlZiB0ZXN0X2NoZWNrX3plcm8oc2VsZik6CisgICAgICAgICMgY2hlY2tfcmV0dXJuY29kZSBzaG91bGRuJ3QgcmFpc2Ugd2hlbiByZXR1cm5jb2RlIGlzIHplcm8KKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oImltcG9ydCBzeXM7IHN5cy5leGl0KDApIiwgY2hlY2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcC5yZXR1cm5jb2RlLCAwKQorCisgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKKyAgICAgICAgIyBydW4oKSBmdW5jdGlvbiB3aXRoIHRpbWVvdXQgYXJndW1lbnQ7IHdlIHdhbnQgdG8gdGVzdCB0aGF0IHRoZSBjaGlsZAorICAgICAgICAjIHByb2Nlc3MgZ2V0cyBraWxsZWQgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLiAgSWYgdGhlIGNoaWxkIGlzbid0CisgICAgICAgICMga2lsbGVkLCB0aGlzIGNhbGwgd2lsbCBkZWFkbG9jayBzaW5jZSBzdWJwcm9jZXNzLnJ1biB3YWl0cyBmb3IgdGhlCisgICAgICAgICMgY2hpbGQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCk6CisgICAgICAgICAgICBzZWxmLnJ1bl9weXRob24oIndoaWxlIFRydWU6IHBhc3MiLCB0aW1lb3V0PTAuMDAwMSkKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVfc3Rkb3V0KHNlbGYpOgorICAgICAgICAjIGNhcHR1cmUgc3Rkb3V0IHdpdGggemVybyByZXR1cm4gY29kZQorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigicHJpbnQoJ0JERkwnKSIsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidCREZMJywgY3Auc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfY2FwdHVyZV9zdGRlcnIoc2VsZik6CisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCJpbXBvcnQgc3lzOyBzeXMuc3RkZXJyLndyaXRlKCdCREZMJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEluKGInQkRGTCcsIGNwLnN0ZGVycikKKworICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF9zdGRpbl9hcmcoc2VsZik6CisgICAgICAgICMgcnVuKCkgY2FuIGJlIGNhbGxlZCB3aXRoIHN0ZGluIHNldCB0byBhIGZpbGUKKyAgICAgICAgdGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRmLmNsb3NlKQorICAgICAgICB0Zi53cml0ZShiJ3BlYXInKQorICAgICAgICB0Zi5zZWVrKDApCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKAorICAgICAgICAgICAgICAgICAiaW1wb3J0IHN5czsgc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpLnVwcGVyKCkpIiwKKyAgICAgICAgICAgICAgICBzdGRpbj10Ziwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1BFQVInLCBjcC5zdGRvdXQpCisKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfaW5wdXRfYXJnKHNlbGYpOgorICAgICAgICAjIGNoZWNrX291dHB1dCgpIGNhbiBiZSBjYWxsZWQgd2l0aCBpbnB1dCBzZXQgdG8gYSBzdHJpbmcKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oCisgICAgICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoc3lzLnN0ZGluLnJlYWQoKS51cHBlcigpKSIsCisgICAgICAgICAgICAgICAgaW5wdXQ9YidwZWFyJywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1BFQVInLCBjcC5zdGRvdXQpCisKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfc3RkaW5fd2l0aF9pbnB1dF9hcmcoc2VsZik6CisgICAgICAgICMgcnVuKCkgcmVmdXNlcyB0byBhY2NlcHQgJ3N0ZGluJyB3aXRoICdpbnB1dCcKKyAgICAgICAgdGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRmLmNsb3NlKQorICAgICAgICB0Zi53cml0ZShiJ3BlYXInKQorICAgICAgICB0Zi5zZWVrKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgbXNnPSJFeHBlY3RlZCBWYWx1ZUVycm9yIHdoZW4gc3RkaW4gYW5kIGlucHV0IGFyZ3Mgc3VwcGxpZWQuIikgYXMgYzoKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3B5dGhvbigicHJpbnQoJ3dpbGwgbm90IGJlIHJ1bicpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj10ZiwgaW5wdXQ9YidoYXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc3RkaW4nLCBjLmV4Y2VwdGlvbi5hcmdzWzBdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdpbnB1dCcsIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCisKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfdGltZW91dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oKAorICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzeXMsIHRpbWVcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LndyaXRlKCdCREZMJylcbiIKKyAgICAgICAgICAgICAgICAgICAgICJzeXMuc3Rkb3V0LmZsdXNoKClcbiIKKyAgICAgICAgICAgICAgICAgICAgICJ0aW1lLnNsZWVwKDM2MDApIiksCisgICAgICAgICAgICAgICAgICAgICMgU29tZSBoZWF2aWx5IGxvYWRlZCBidWlsZGJvdHMgKHNwYXJjIERlYmlhbiAzLngpIHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG11Y2ggdGltZSB0byBzdGFydCBhbmQgcHJpbnQuCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9Mywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmV4Y2VwdGlvbi5vdXRwdXQsIGInQkRGTCcpCisgICAgICAgICMgb3V0cHV0IGlzIGFsaWFzZWQgdG8gc3Rkb3V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24uc3Rkb3V0LCBiJ0JERkwnKQorCisgICAgZGVmIHRlc3RfcnVuX2t3YXJncyhzZWxmKToKKyAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gImJhbmFuYSIKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oKCdpbXBvcnQgc3lzLCBvczsnCisgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5leGl0KDMzIGlmIG9zLmdldGVudigiRlJVSVQiKT09ImJhbmFuYSIgZWxzZSAzMSknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcC5yZXR1cm5jb2RlLCAzMykKKworCiBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgIlBPU0lYIHNwZWNpZmljIHRlc3RzIikKIGNsYXNzIFBPU0lYUHJvY2Vzc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CiAKQEAgLTI0MDcsMjQgKzI1MDMsMjAgQEAKICAgICAgICAgc3VicHJvY2Vzcy5fUG9wZW5TZWxlY3RvciA9IHNlbGYub3JpZ19zZWxlY3RvcgogICAgICAgICBQcm9jZXNzVGVzdENhc2UudGVhckRvd24oc2VsZikKIAorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIHRoYXQgX19hbGxfXyBpcyBwb3B1bGF0ZWQgcHJvcGVybHkuIiIiCisgICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSBzZXQoKCJsaXN0MmNtZGxpbmUiLCkpCisgICAgICAgIGV4cG9ydGVkID0gc2V0KHN1YnByb2Nlc3MuX19hbGxfXykKKyAgICAgICAgcG9zc2libGVfZXhwb3J0cyA9IHNldCgpCisgICAgICAgIGltcG9ydCB0eXBlcworICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc3VicHJvY2Vzcy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsICh0eXBlcy5Nb2R1bGVUeXBlLCkpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBwb3NzaWJsZV9leHBvcnRzLmFkZChuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cG9ydGVkLCBwb3NzaWJsZV9leHBvcnRzIC0gaW50ZW50aW9uYWxseV9leGNsdWRlZCkKIAotY2xhc3MgSGVscGVyRnVuY3Rpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJlcnJubyBhbmQgRUlOVFIgbWFrZSBubyBzZW5zZSBvbiB3aW5kb3dzIikKLSAgICBkZWYgdGVzdF9laW50cl9yZXRyeV9jYWxsKHNlbGYpOgotICAgICAgICByZWNvcmRfY2FsbHMgPSBbXQotICAgICAgICBkZWYgZmFrZV9vc19mdW5jKCphcmdzKToKLSAgICAgICAgICAgIHJlY29yZF9jYWxscy5hcHBlbmQoYXJncykKLSAgICAgICAgICAgIGlmIGxlbihyZWNvcmRfY2FsbHMpID09IDI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgImZha2UgaW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwiKQotICAgICAgICAgICAgcmV0dXJuIHR1cGxlKHJldmVyc2VkKGFyZ3MpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDk5OSwgMjU2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLl9laW50cl9yZXRyeV9jYWxsKGZha2Vfb3NfZnVuYywgMjU2LCA5OTkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoMjU2LCA5OTkpXSwgcmVjb3JkX2NhbGxzKQotICAgICAgICAjIFRoaXMgdGltZSB0aGVyZSB3aWxsIGJlIGFuIEVJTlRSIHNvIGl0IHdpbGwgbG9vcCBvbmNlLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCg2NjYsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLl9laW50cl9yZXRyeV9jYWxsKGZha2Vfb3NfZnVuYywgNjY2KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKDI1NiwgOTk5KSwgKDY2NiwpLCAoNjY2LCldLCByZWNvcmRfY2FsbHMpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MobXN3aW5kb3dzLCAiV2luZG93cy1zcGVjaWZpYyB0ZXN0cyIpCkBAIC0yNTMxLDkgKzI2MjMsOSBAQAogICAgICAgICAgICAgICAgICAgV2luMzJQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBDb21tYW5kVGVzdHMsCiAgICAgICAgICAgICAgICAgICBQcm9jZXNzVGVzdENhc2VOb1BvbGwsCi0gICAgICAgICAgICAgICAgICBIZWxwZXJGdW5jdGlvblRlc3RzLAogICAgICAgICAgICAgICAgICAgQ29tbWFuZHNXaXRoU3BhY2VzLAogICAgICAgICAgICAgICAgICAgQ29udGV4dE1hbmFnZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgIFJ1bkZ1bmNUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICkKIAogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp1bml0X3Rlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkgYi9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weQppbmRleCBlOTljYTllLi4xZmI5OTY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weQpAQCAtMjIsOCArMjIsNiBAQAogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5jY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmZpbGVsaXN0Ci0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5tc3ZjY29tcGlsZXIKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMudGV4dF9maWxlCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggMzdmYzJkOS4uZGMzYTE1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIEE6CkBAIC0xNzMsOSArMTcyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBYLm1ldGgsIGMpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTdXBlcikKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CmluZGV4IDAzY2U5ZDEuLjJjMDA0MTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKQEAgLTg1LDcgKzg1LDcgQEAKICAgICBkZWYgdGVzdF9iaW5kX3BvcnQoc2VsZik6CiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQocykKLSAgICAgICAgcy5saXN0ZW4oMSkKKyAgICAgICAgcy5saXN0ZW4oKQogICAgICAgICBzLmNsb3NlKCkKIAogICAgICMgVGVzdHMgZm9yIHRlbXBfZGlyKCkKQEAgLTI4MCw2ICsyODAsMzggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbIml0ZW0iXSwgMSkKIAorICAgIGNsYXNzIFJlZkNsYXNzOgorICAgICAgICBhdHRyaWJ1dGUxID0gTm9uZQorICAgICAgICBhdHRyaWJ1dGUyID0gTm9uZQorICAgICAgICBfaGlkZGVuX2F0dHJpYnV0ZTEgPSBOb25lCisgICAgICAgIF9fbWFnaWNfMV9fID0gTm9uZQorCisgICAgY2xhc3MgT3RoZXJDbGFzczoKKyAgICAgICAgYXR0cmlidXRlMiA9IE5vbmUKKyAgICAgICAgYXR0cmlidXRlMyA9IE5vbmUKKyAgICAgICAgX19tYWdpY18xX18gPSBOb25lCisgICAgICAgIF9fbWFnaWNfMl9fID0gTm9uZQorCisgICAgZGVmIHRlc3RfZGV0ZWN0X2FwaV9taXNtYXRjaChzZWxmKToKKyAgICAgICAgbWlzc2luZ19pdGVtcyA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaChzZWxmLlJlZkNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuT3RoZXJDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2F0dHJpYnV0ZTEnfSwgbWlzc2luZ19pdGVtcykKKworICAgICAgICBtaXNzaW5nX2l0ZW1zID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKHNlbGYuT3RoZXJDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLlJlZkNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsnYXR0cmlidXRlMycsICdfX21hZ2ljXzJfXyd9LCBtaXNzaW5nX2l0ZW1zKQorCisgICAgZGVmIHRlc3RfZGV0ZWN0X2FwaV9taXNtYXRjaF9faWdub3JlKHNlbGYpOgorICAgICAgICBpZ25vcmUgPSBbJ2F0dHJpYnV0ZTEnLCAnYXR0cmlidXRlMycsICdfX21hZ2ljXzJfXycsICdub3RfaW5fZWl0aGVyJ10KKworICAgICAgICBtaXNzaW5nX2l0ZW1zID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKAorICAgICAgICAgICAgICAgIHNlbGYuUmVmQ2xhc3MsIHNlbGYuT3RoZXJDbGFzcywgaWdub3JlPWlnbm9yZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgbWlzc2luZ19pdGVtcykKKworICAgICAgICBtaXNzaW5nX2l0ZW1zID0gc3VwcG9ydC5kZXRlY3RfYXBpX21pc21hdGNoKAorICAgICAgICAgICAgICAgIHNlbGYuT3RoZXJDbGFzcywgc2VsZi5SZWZDbGFzcywgaWdub3JlPWlnbm9yZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgbWlzc2luZ19pdGVtcykKKwogICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKICAgICAjIG1ha2VfbGVnYWN5X3B5YwogICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKaW5kZXggMzM1YjRkYy4uZTVlN2I4MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IHN5bXRhYmxlCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogVEVTVF9DT0RFID0gIiIiCkBAIC0xNjksOCArMTY4LDUgQEAKICAgICAgICAgc3ltYm9scyA9IHN5bXRhYmxlLnN5bXRhYmxlKCJkZWYgZih4KTogcmV0dXJuIHgiLCAiPyIsICJleGVjIikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3ltdGFibGVUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5CmluZGV4IGE5ZDM2MjguLmEyMmNlYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5CkBAIC0xNDEsNiArMTQxLDkgQEAKID4+PiBmKHggZm9yIHggaW4gTCwgMSkKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgaWYgbm90IHNvbGUgYXJndW1lbnQKKz4+PiBmKHggZm9yIHggaW4gTCwgeSBmb3IgeSBpbiBMKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorU3ludGF4RXJyb3I6IEdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCBpZiBub3Qgc29sZSBhcmd1bWVudAogPj4+IGYoKHggZm9yIHggaW4gTCksIDEpCiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KIApAQCAtNTgyLDcgKzU4NSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJjbGFzcz1JbmRlbnRhdGlvbkVycm9yKQogCiAgICAgZGVmIHRlc3Rfa3dhcmdzX2xhc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJpbnQoYmFzZT0xMCwgJzInKSIsICJub24ta2V5d29yZCBhcmciKQorICAgICAgICBzZWxmLl9jaGVja19lcnJvcigiaW50KGJhc2U9MTAsICcyJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzIGtleXdvcmQgYXJndW1lbnQiKQorCisgICAgZGVmIHRlc3Rfa3dhcmdzX2xhc3QyKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19lcnJvcigiaW50KCoqe2Jhc2U6IDEwfSwgJzInKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIGFyZ3VtZW50IGZvbGxvd3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmciKQorCisgICAgZGVmIHRlc3Rfa3dhcmdzX2xhc3QzKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19lcnJvcigiaW50KCoqe2Jhc2U6IDEwfSwgKlsnMiddKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmcgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZyIpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTeW50YXhUZXN0Q2FzZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggYTZkOTI2Zi4uODM1NDliYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QsIHRlc3Quc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBpbXBvcnQgc3lzLCBpbywgb3MKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC0yMTEsOCArMjExLDggQEAKICAgICAgICAgICAgIGZvciBpIGluICg1MCwgMTAwMCk6CiAgICAgICAgICAgICAgICAgIyBJc3N1ZSAjNTM5Mjogc3RhY2sgb3ZlcmZsb3cgYWZ0ZXIgaGl0dGluZyByZWN1cnNpb24gbGltaXQgdHdpY2UKICAgICAgICAgICAgICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQoaSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGYpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBmKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBmKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLnNldHJlY3Vyc2lvbmxpbWl0KG9sZGxpbWl0KQogCkBAIC0yMjUsNyArMjI1LDcgQEAKICAgICAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgICAgICAgICAgZigpCiAKICAgICAgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdCglZCkKQEAgLTYzNiw2ICs2MzYsNTMgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gTm9uZQogICAgICAgICBzZWxmLmNoZWNrX2ZzZW5jb2RpbmcoZnNfZW5jb2RpbmcsIGV4cGVjdGVkKQogCisgICAgZGVmIGNfbG9jYWxlX2dldF9lcnJvcl9oYW5kbGVyKHNlbGYsIGlzb2xhdGVkPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgIyBGb3JjZSB0aGUgUE9TSVggbG9jYWxlCisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGVudlsiTENfQUxMIl0gPSAiQyIKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IHN5cycsCisgICAgICAgICAgICAnZGVmIGR1bXAobmFtZSk6JywKKyAgICAgICAgICAgICcgICAgc3RkID0gZ2V0YXR0cihzeXMsIG5hbWUpJywKKyAgICAgICAgICAgICcgICAgcHJpbnQoIiVzOiAlcyIgJSAobmFtZSwgc3RkLmVycm9ycykpJywKKyAgICAgICAgICAgICdkdW1wKCJzdGRpbiIpJywKKyAgICAgICAgICAgICdkdW1wKCJzdGRvdXQiKScsCisgICAgICAgICAgICAnZHVtcCgic3RkZXJyIiknLAorICAgICAgICApKQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjb2RlXQorICAgICAgICBpZiBpc29sYXRlZDoKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItSSIpCisgICAgICAgIGVsaWYgZW5jb2Rpbmc6CisgICAgICAgICAgICBlbnZbJ1BZVEhPTklPRU5DT0RJTkcnXSA9IGVuY29kaW5nCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gc3Rkb3V0CisKKyAgICBkZWYgdGVzdF9jX2xvY2FsZV9zdXJyb2dhdGVlc2NhcGUoc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY19sb2NhbGVfZ2V0X2Vycm9yX2hhbmRsZXIoaXNvbGF0ZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluOiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3Rkb3V0OiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkZXJyOiBiYWNrc2xhc2hyZXBsYWNlXG4nKQorCisgICAgICAgICMgcmVwbGFjZSB0aGUgZGVmYXVsdCBlcnJvciBoYW5kbGVyCisgICAgICAgIG91dCA9IHNlbGYuY19sb2NhbGVfZ2V0X2Vycm9yX2hhbmRsZXIoZW5jb2Rpbmc9JzpzdHJpY3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkaW46IHN0cmljdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRvdXQ6IHN0cmljdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRlcnI6IGJhY2tzbGFzaHJlcGxhY2VcbicpCisKKyAgICAgICAgIyBmb3JjZSB0aGUgZW5jb2RpbmcKKyAgICAgICAgb3V0ID0gc2VsZi5jX2xvY2FsZV9nZXRfZXJyb3JfaGFuZGxlcihlbmNvZGluZz0naXNvODg1OS0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluOiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3Rkb3V0OiBzdXJyb2dhdGVlc2NhcGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkZXJyOiBiYWNrc2xhc2hyZXBsYWNlXG4nKQorCiAgICAgZGVmIHRlc3RfaW1wbGVtZW50YXRpb24oc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGFwcGxpZXMgdG8gYWxsIGltcGxlbWVudGF0aW9ucyBlcXVhbGx5LgogCkBAIC02NjEsNyArNzA4LDcgQEAKICAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X2RlYnVnbWFsbG9jc3RhdHMoc2VsZik6CiAgICAgICAgICMgVGVzdCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKQotICAgICAgICBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworICAgICAgICBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAgICAgICAgIGFyZ3MgPSBbJy1jJywgJ2ltcG9ydCBzeXM7IHN5cy5fZGVidWdtYWxsb2NzdGF0cygpJ10KICAgICAgICAgcmV0LCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmcmVlIFB5RGljdE9iamVjdHMiLCBlcnIpCkBAIC02OTgsNiArNzQ1LDI3IEBACiAgICAgICAgIGMgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihjLCByYW5nZShiIC0gNTAsIGIgKyA1MCkpCiAKKyAgICBkZWYgdGVzdF9pc19maW5hbGl6aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5pc19maW5hbGl6aW5nKCksIEZhbHNlKQorICAgICAgICAjIERvbid0IHVzZSB0aGUgYXRleGl0IG1vZHVsZSBiZWNhdXNlIF9QeV9GaW5hbGl6aW5nIGlzIG9ubHkgc2V0CisgICAgICAgICMgYWZ0ZXIgY2FsbGluZyBhdGV4aXQgY2FsbGJhY2tzCisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHN5cworCisgICAgICAgICAgICBjbGFzcyBBdEV4aXQ6CisgICAgICAgICAgICAgICAgaXNfZmluYWxpemluZyA9IHN5cy5pc19maW5hbGl6aW5nCisgICAgICAgICAgICAgICAgcHJpbnQgPSBwcmludAorCisgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHJpbnQoc2VsZi5pc19maW5hbGl6aW5nKCksIGZsdXNoPVRydWUpCisKKyAgICAgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSBpbiB0aGUgX19tYWluX18gbW9kdWxlIG5hbWVzcGFjZSwgc28gdGhlCisgICAgICAgICAgICAjIEF0RXhpdCBkZXN0cnVjdG9yIHdpbGwgYmUgY2FsbGVkIGF0IFB5dGhvbiBleGl0CisgICAgICAgICAgICByZWYgPSBBdEV4aXQoKQorICAgICAgICAiIiIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5yc3RyaXAoKSwgYidUcnVlJykKKwogCiBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQogY2xhc3MgU2l6ZW9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03NzAsNyArODM4LDcgQEAKICAgICAgICAgIyBidWZmZXIKICAgICAgICAgIyBYWFgKICAgICAgICAgIyBidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZAotICAgICAgICBjaGVjayhsZW4sIHNpemUoJzNQJykpICMgWFhYIGNoZWNrIGxheW91dAorICAgICAgICBjaGVjayhsZW4sIHNpemUoJzRQJykpICMgWFhYIGNoZWNrIGxheW91dAogICAgICAgICAjIGJ5dGVhcnJheQogICAgICAgICBzYW1wbGVzID0gW2InJywgYid1JyoxMDAwMDBdCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKQEAgLTg3NCw3ICs5NDIsNyBAQAogICAgICAgICAgICAgY2hlY2soYmFyLCBzaXplKCdQUCcpKQogICAgICAgICAjIGdlbmVyYXRvcgogICAgICAgICBkZWYgZ2V0X2dlbigpOiB5aWVsZCAxCi0gICAgICAgIGNoZWNrKGdldF9nZW4oKSwgc2l6ZSgnUGIyUCcpKQorICAgICAgICBjaGVjayhnZXRfZ2VuKCksIHNpemUoJ1BiMlBQUCcpKQogICAgICAgICAjIGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoJ2FiYycpLCBzaXplKCdsUCcpKQogICAgICAgICAjIGNhbGxhYmxlLWl0ZXJhdG9yCkBAIC05MjgsNyArOTk2LDcgQEAKICAgICAgICAgIyBmcm96ZW5zZXQKICAgICAgICAgUHlTZXRfTUlOU0laRSA9IDgKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgcmFuZ2UoMTApLCByYW5nZSg1MCldCi0gICAgICAgIHMgPSBzaXplKCczbjJQJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICduUCcpCisgICAgICAgIHMgPSBzaXplKCczblAnICsgUHlTZXRfTUlOU0laRSonblAnICsgJzJuUCcpCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIG1pbnVzZWQgPSBsZW4oc2FtcGxlKQogICAgICAgICAgICAgaWYgbWludXNlZCA9PSAwOiB0bXAgPSAxCkBAIC05NTcsOSArMTAyNSw5IEBACiAgICAgICAgICMgc3RhdGljIHR5cGU6IFB5VHlwZU9iamVjdAogICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJUCcpCiAgICAgICAgIGNoZWNrKGludCwgcykKLSAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCisgICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5QXN5bmNNZXRob2RzICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCiAgICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcyArIDRQKQotICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJUCcpICsgc3RydWN0LmNhbGNzaXplKCczNFAgM1AgMTBQIDJQIDRQJykKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xN1BsNFBuOVBuMTFQSVAnKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDNQIDEwUCAyUCA0UCcpCiAgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKICAgICAgICAgcyArPSBzdHJ1Y3QuY2FsY3NpemUoIjJuUG4iKSArIDQqc3RydWN0LmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXRwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0cHJvZmlsZS5weQppbmRleCA5ODE2ZTNlLi5iYjcxYWNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c19zZXRwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHByb2ZpbGUucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RHZXRQcm9maWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0yNjAsNyArMjU5LDYgQEAKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgogICAgICAgICAgICAgICAgIHlpZWxkIGkKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgZGVmIGcocCk6CiAgICAgICAgICAgICBmb3IgaSBpbiBmKCk6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtMzc0LDEzICszNzIsNSBAQAogICAgIHBwcmludC5wcHJpbnQoY2FwdHVyZV9ldmVudHMoY2FsbGFibGUpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVGVzdEdldFByb2ZpbGUsCi0gICAgICAgIFByb2ZpbGVIb29rVGVzdENhc2UsCi0gICAgICAgIFByb2ZpbGVTaW11bGF0b3JUZXN0Q2FzZQotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IDhlZDcyOWEuLjA5MTdjM2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zODUsNiArMzg1LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHZhcnNbJ1NPJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyc1snU08nXSwgdmFyc1snRVhUX1NVRkZJWCddKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcsICdMaW51eC1zcGVjaWZpYyB0ZXN0JykKKyAgICBkZWYgdGVzdF90cmlwbGV0X2luX2V4dF9zdWZmaXgoc2VsZik6CisgICAgICAgIGltcG9ydCBjdHlwZXMsIHBsYXRmb3JtLCByZQorICAgICAgICBtYWNoaW5lID0gcGxhdGZvcm0ubWFjaGluZSgpCisgICAgICAgIHN1ZmZpeCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCisgICAgICAgIGlmIHJlLm1hdGNoKCcoYWFyY2g2NHxhcm18bWlwc3xwcGN8cG93ZXJwY3xzMzkwfHNwYXJjKScsIG1hY2hpbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsaW51eCcgaW4gc3VmZml4LCBzdWZmaXgpCisgICAgICAgIGlmIHJlLm1hdGNoKCcoaVszLTZdODZ8eDg2XzY0KSQnLCBtYWNoaW5lKToKKyAgICAgICAgICAgIGlmIGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfY2hhcl9wKCkpID09IDQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgnaTM4Ni1saW51eC1nbnUuc28nKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudXgzMi5zbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgpCisgICAgICAgICAgICBlbHNlOiAjIDggYnl0ZSBwb2ludGVyIHNpemUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251LnNvJyksIHN1ZmZpeCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ09TIFgtc3BlY2lmaWMgdGVzdCcpCisgICAgZGVmIHRlc3Rfb3N4X2V4dF9zdWZmaXgoc2VsZik6CisgICAgICAgIHN1ZmZpeCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJy1kYXJ3aW4uc28nKSwgc3VmZml4KQogCiBjbGFzcyBNYWtlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNsb2cucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weQppbmRleCBiN2ZkMmJkLi42ZjkwMmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2xvZy5weQpAQCAtMzYsOCArMzYsNSBAQAogICAgICAgICBzeXNsb2cub3BlbmxvZygpCiAgICAgICAgIHN5c2xvZy5zeXNsb2coJ3Rlc3QgbWVzc2FnZSBmcm9tIHB5dGhvbiB0ZXN0X3N5c2xvZycpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IDMwOTFjZTcuLjE0MTJjYWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIsMTEgKzIsMTQgQEAKIGltcG9ydCBvcwogaW1wb3J0IGlvCiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrCiBpbXBvcnQgdGFyZmlsZQogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIAogIyBDaGVjayBmb3Igb3VyIGNvbXByZXNzaW9uIG1vZHVsZXMuCiB0cnk6CkBAIC0yODUsNiArMjg4LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidwYXgnICsgKGInLzEyMycgKiAxMjUpICsgYicvbG9uZ2xpbmsgbGluayB0byBwYXgnICsKICAgICAgICAgICAgICAgICAgICAgICAoYicvMTIzJyAqIDEyNSkgKyBiJy9sb25nbmFtZScsIG91dCkKIAorICAgIGRlZiB0ZXN0X2xpc3RfbWVtYmVycyhzZWxmKToKKyAgICAgICAgdGlvID0gaW8uVGV4dElPV3JhcHBlcihpby5CeXRlc0lPKCksICdhc2NpaScsIG5ld2xpbmU9J1xuJykKKyAgICAgICAgZGVmIG1lbWJlcnModGFyKToKKyAgICAgICAgICAgIGZvciB0YXJpbmZvIGluIHRhci5nZXRtZW1iZXJzKCk6CisgICAgICAgICAgICAgICAgaWYgJ3JlZycgaW4gdGFyaW5mby5uYW1lOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCB0YXJpbmZvCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAnc3Rkb3V0JywgdGlvKToKKyAgICAgICAgICAgIHNlbGYudGFyLmxpc3QodmVyYm9zZT1GYWxzZSwgbWVtYmVycz1tZW1iZXJzKHNlbGYudGFyKSkKKyAgICAgICAgb3V0ID0gdGlvLmRldGFjaCgpLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzdGFyL3JlZ3R5cGUnLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYid1c3Rhci9jb250dHlwZScsIG91dCkKKwogCiBjbGFzcyBHemlwTGlzdFRlc3QoR3ppcFRlc3QsIExpc3RUZXN0KToKICAgICBwYXNzCkBAIC05OTAsNiArMTAwNSwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZvYmouY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGZvYmouZ2V0dmFsdWUoKSkKIAorICAgIGRlZiB0ZXN0X2VvZl9tYXJrZXIoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIGFuIGVuZCBvZiBhcmNoaXZlIG1hcmtlciBpcyB3cml0dGVuICh0d28gemVybyBibG9ja3MpLgorICAgICAgICAjIHRhcmZpbGUgaW5zaXN0cyBvbiBhbGlnbmluZyBhcmNoaXZlcyB0byBhIDIwICogNTEyIGJ5dGUgcmVjb3Jkc2l6ZS4KKyAgICAgICAgIyBTbywgd2UgY3JlYXRlIGFuIGFyY2hpdmUgdGhhdCBoYXMgZXhhY3RseSAxMDI0MCBieXRlcyB3aXRob3V0IHRoZQorICAgICAgICAjIG1hcmtlciwgYW5kIGhhcyAyMDQ4MCBieXRlcyBvbmNlIHRoZSBtYXJrZXIgaXMgd3JpdHRlbi4KKyAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odG1wbmFtZSwgc2VsZi5tb2RlKSBhcyB0YXI6CisgICAgICAgICAgICB0ID0gdGFyZmlsZS5UYXJJbmZvKCJmb28iKQorICAgICAgICAgICAgdC5zaXplID0gdGFyZmlsZS5SRUNPUkRTSVpFIC0gdGFyZmlsZS5CTE9DS1NJWkUKKyAgICAgICAgICAgIHRhci5hZGRmaWxlKHQsIGlvLkJ5dGVzSU8oYiJhIiAqIHQuc2l6ZSkpCisKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4odG1wbmFtZSwgInJiIikgYXMgZm9iajoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvYmoucmVhZCgpKSwgdGFyZmlsZS5SRUNPUkRTSVpFICogMikKKwogCiBjbGFzcyBXcml0ZVRlc3QoV3JpdGVUZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNDMzLDYgKzE0NjEsODggQEAKICAgICAgICAgICAgICAgICAgICAoImxvbmdsbmsvIiAqIDEyNykgKyAibG9uZ2xpbmtfIikKIAogCitjbGFzcyBDcmVhdGVUZXN0KFdyaXRlVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHByZWZpeCA9ICJ4OiIKKworICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihURU1QRElSLCAic3BhbWVnZ3M0MiIpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHRtcG5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICB3aXRoIG9wZW4oY2xzLmZpbGVfcGF0aCwgIndiIikgYXMgZm9iajoKKyAgICAgICAgICAgIGZvYmoud3JpdGUoYiJhYWEiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoY2xzLmZpbGVfcGF0aCkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZShzZWxmKToKKyAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odG1wbmFtZSwgc2VsZi5tb2RlKSBhcyB0b2JqOgorICAgICAgICAgICAgdG9iai5hZGQoc2VsZi5maWxlX3BhdGgpCisKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSkgYXMgdG9iajoKKyAgICAgICAgICAgIG5hbWVzID0gdG9iai5nZXRuYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc3BhbWVnZ3M0MicsIG5hbWVzWzBdKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2V4aXN0aW5nKHNlbGYpOgorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0bXBuYW1lLCBzZWxmLm1vZGUpIGFzIHRvYmo6CisgICAgICAgICAgICB0b2JqLmFkZChzZWxmLmZpbGVfcGF0aCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcik6CisgICAgICAgICAgICB0b2JqID0gdGFyZmlsZS5vcGVuKHRtcG5hbWUsIHNlbGYubW9kZSkKKworICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lKSBhcyB0b2JqOgorICAgICAgICAgICAgbmFtZXMgPSB0b2JqLmdldG5hbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtZWdnczQyJywgbmFtZXNbMF0pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfdGFyb3BlbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSwgIngiKSBhcyB0b2JqOgorICAgICAgICAgICAgdG9iai5hZGQoc2VsZi5maWxlX3BhdGgpCisKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSkgYXMgdG9iajoKKyAgICAgICAgICAgIG5hbWVzID0gdG9iai5nZXRuYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc3BhbWVnZ3M0MicsIG5hbWVzWzBdKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2V4aXN0aW5nX3Rhcm9wZW4oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUsICJ4IikgYXMgdG9iajoKKyAgICAgICAgICAgIHRvYmouYWRkKHNlbGYuZmlsZV9wYXRoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUsICJ4Iik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUpIGFzIHRvYmo6CisgICAgICAgICAgICBuYW1lcyA9IHRvYmouZ2V0bmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNwYW1lZ2dzNDIiLCBuYW1lc1swXSkKKworCitjbGFzcyBHemlwQ3JlYXRlVGVzdChHemlwVGVzdCwgQ3JlYXRlVGVzdCk6CisgICAgcGFzcworCisKK2NsYXNzIEJ6MkNyZWF0ZVRlc3QoQnoyVGVzdCwgQ3JlYXRlVGVzdCk6CisgICAgcGFzcworCisKK2NsYXNzIEx6bWFDcmVhdGVUZXN0KEx6bWFUZXN0LCBDcmVhdGVUZXN0KToKKyAgICBwYXNzCisKKworY2xhc3MgQ3JlYXRlV2l0aFhNb2RlVGVzdChDcmVhdGVUZXN0KToKKworICAgIHByZWZpeCA9ICJ4IgorCisgICAgdGVzdF9jcmVhdGVfdGFyb3BlbiA9IE5vbmUKKyAgICB0ZXN0X2NyZWF0ZV9leGlzdGluZ190YXJvcGVuID0gTm9uZQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJsaW5rIiksICJNaXNzaW5nIGhhcmRsaW5rIGltcGxlbWVudGF0aW9uIikKIGNsYXNzIEhhcmRsaW5rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUZXN0IHRoZSBjcmVhdGlvbiBvZiBMTktUWVBFIChoYXJkbGluaykgbWVtYmVycyBpbiBhbiBhcmNoaXZlLgpAQCAtMjE5MSw2ICsyMzAxLDEzOCBAQAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfaW5wdXQoInI6YnoyIikKIAogCitkZWYgcm9vdF9pc191aWRfZ2lkXzAoKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBwd2QsIGdycAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgcHdkLmdldHB3dWlkKDApWzBdICE9ICdyb290JzoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgZ3JwLmdldGdyZ2lkKDApWzBdICE9ICdyb290JzoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hvd24nKSwgIm1pc3Npbmcgb3MuY2hvd24iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGV1aWQnKSwgIm1pc3Npbmcgb3MuZ2V0ZXVpZCIpCitjbGFzcyBOdW1lcmljT3duZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG1vY2sgdGhlIGZvbGxvd2luZzoKKyAgICAjICBvcy5jaG93bjogc28gd2UgY2FuIHRlc3Qgd2hhdCdzIGJlaW5nIGNhbGxlZAorICAgICMgIG9zLmNobW9kOiBzbyB0aGUgbW9kZXMgYXJlIG5vdCBhY3R1YWxseSBjaGFuZ2VkLiBpZiB0aGV5IGFyZSwgd2UgY2FuJ3QKKyAgICAjICAgICAgICAgICAgIGRlbGV0ZSB0aGUgZmlsZXMvZGlyZWN0b3JpZXMKKyAgICAjICBvcy5nZXRldWlkOiBzbyB3ZSBjYW4gbGllIGFuZCBzYXkgd2UncmUgcm9vdCAodWlkID0gMCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX21ha2VfdGVzdF9hcmNoaXZlKGZpbGVuYW1lXzEsIGRpcm5hbWVfMSwgZmlsZW5hbWVfMik6CisgICAgICAgICMgdGhlIGZpbGUgY29udGVudHMgdG8gd3JpdGUKKyAgICAgICAgZm9iaiA9IGlvLkJ5dGVzSU8oYiJjb250ZW50IikKKworICAgICAgICAjIGNyZWF0ZSBhIHRhciBmaWxlIHdpdGggYSBmaWxlLCBhIGRpcmVjdG9yeSwgYW5kIGEgZmlsZSB3aXRoaW4gdGhhdAorICAgICAgICAjICBkaXJlY3RvcnkuIEFzc2lnbiB2YXJpb3VzIC51aWQvLmdpZCB2YWx1ZXMgdG8gdGhlbQorICAgICAgICBpdGVtcyA9IFsoZmlsZW5hbWVfMSwgOTksIDk4LCB0YXJmaWxlLlJFR1RZUEUsIGZvYmopLAorICAgICAgICAgICAgICAgICAoZGlybmFtZV8xLCAgNzcsIDc2LCB0YXJmaWxlLkRJUlRZUEUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAoZmlsZW5hbWVfMiwgODgsIDg3LCB0YXJmaWxlLlJFR1RZUEUsIGZvYmopLAorICAgICAgICAgICAgICAgICBdCisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRtcG5hbWUsICd3JykgYXMgdGFyZmw6CisgICAgICAgICAgICBmb3IgbmFtZSwgdWlkLCBnaWQsIHR5cCwgY29udGVudHMgaW4gaXRlbXM6CisgICAgICAgICAgICAgICAgdCA9IHRhcmZpbGUuVGFySW5mbyhuYW1lKQorICAgICAgICAgICAgICAgIHQudWlkID0gdWlkCisgICAgICAgICAgICAgICAgdC5naWQgPSBnaWQKKyAgICAgICAgICAgICAgICB0LnVuYW1lID0gJ3Jvb3QnCisgICAgICAgICAgICAgICAgdC5nbmFtZSA9ICdyb290JworICAgICAgICAgICAgICAgIHQudHlwZSA9IHR5cAorICAgICAgICAgICAgICAgIHRhcmZsLmFkZGZpbGUodCwgY29udGVudHMpCisKKyAgICAgICAgIyByZXR1cm4gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gdGhlIHRhciBmaWxlCisgICAgICAgIHJldHVybiB0bXBuYW1lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCk6CisgICAgICAgIG1vY2tfZ2V0ZXVpZC5yZXR1cm5fdmFsdWUgPSAwICAjIGxpZSBhbmQgc2F5IHdlJ3JlIHJvb3QKKyAgICAgICAgZm5hbWUgPSAnbnVtZXJpYy1vd25lci10ZXN0ZmlsZScKKyAgICAgICAgZGlybmFtZSA9ICdkaXInCisKKyAgICAgICAgIyB0aGUgbmFtZXMgd2Ugd2FudCBzdG9yZWQgaW4gdGhlIHRhcmZpbGUKKyAgICAgICAgZmlsZW5hbWVfMSA9IGZuYW1lCisgICAgICAgIGRpcm5hbWVfMSA9IGRpcm5hbWUKKyAgICAgICAgZmlsZW5hbWVfMiA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBmbmFtZSkKKworICAgICAgICAjIGNyZWF0ZSB0aGUgdGFyZmlsZSB3aXRoIHRoZSBjb250ZW50cyB3ZSdyZSBhZnRlcgorICAgICAgICB0YXJfZmlsZW5hbWUgPSBOdW1lcmljT3duZXJUZXN0Ll9tYWtlX3Rlc3RfYXJjaGl2ZShmaWxlbmFtZV8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJuYW1lXzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lXzIpCisKKyAgICAgICAgIyBvcGVuIHRoZSB0YXJmaWxlIGZvciByZWFkaW5nLiB5aWVsZCBpdCBhbmQgdGhlIG5hbWVzIG9mIHRoZSBpdGVtcworICAgICAgICAjICB3ZSBzdG9yZWQgaW50byB0aGUgZmlsZQorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJfZmlsZW5hbWUpIGFzIHRhcmZsOgorICAgICAgICAgICAgeWllbGQgdGFyZmwsIGZpbGVuYW1lXzEsIGRpcm5hbWVfMSwgZmlsZW5hbWVfMgorCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNob3duJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2htb2QnKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5nZXRldWlkJykKKyAgICBkZWYgdGVzdF9leHRyYWN0X3dpdGhfbnVtZXJpY19vd25lcihzZWxmLCBtb2NrX2dldGV1aWQsIG1vY2tfY2htb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja19jaG93bik6CisgICAgICAgIHdpdGggc2VsZi5fc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpIGFzICh0YXJmbCwgZmlsZW5hbWVfMSwgXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lXzIpOgorICAgICAgICAgICAgdGFyZmwuZXh0cmFjdChmaWxlbmFtZV8xLCBURU1QRElSLCBudW1lcmljX293bmVyPVRydWUpCisgICAgICAgICAgICB0YXJmbC5leHRyYWN0KGZpbGVuYW1lXzIgLCBURU1QRElSLCBudW1lcmljX293bmVyPVRydWUpCisKKyAgICAgICAgIyBjb252ZXJ0IHRvIGZpbGVzeXN0ZW0gcGF0aHMKKyAgICAgICAgZl9maWxlbmFtZV8xID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzEpCisgICAgICAgIGZfZmlsZW5hbWVfMiA9IG9zLnBhdGguam9pbihURU1QRElSLCBmaWxlbmFtZV8yKQorCisgICAgICAgIG1vY2tfY2hvd24uYXNzZXJ0X2hhc19jYWxscyhbdW5pdHRlc3QubW9jay5jYWxsKGZfZmlsZW5hbWVfMSwgOTksIDk4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLmNhbGwoZl9maWxlbmFtZV8yLCA4OCwgODcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnlfb3JkZXI9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG93bicpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNobW9kJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuZ2V0ZXVpZCcpCisgICAgZGVmIHRlc3RfZXh0cmFjdGFsbF93aXRoX251bWVyaWNfb3duZXIoc2VsZiwgbW9ja19nZXRldWlkLCBtb2NrX2NobW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tfY2hvd24pOgorICAgICAgICB3aXRoIHNlbGYuX3NldHVwX3Rlc3QobW9ja19nZXRldWlkKSBhcyAodGFyZmwsIGZpbGVuYW1lXzEsIGRpcm5hbWVfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lXzIpOgorICAgICAgICAgICAgdGFyZmwuZXh0cmFjdGFsbChURU1QRElSLCBudW1lcmljX293bmVyPVRydWUpCisKKyAgICAgICAgIyBjb252ZXJ0IHRvIGZpbGVzeXN0ZW0gcGF0aHMKKyAgICAgICAgZl9maWxlbmFtZV8xID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzEpCisgICAgICAgIGZfZGlybmFtZV8xICA9IG9zLnBhdGguam9pbihURU1QRElSLCBkaXJuYW1lXzEpCisgICAgICAgIGZfZmlsZW5hbWVfMiA9IG9zLnBhdGguam9pbihURU1QRElSLCBmaWxlbmFtZV8yKQorCisgICAgICAgIG1vY2tfY2hvd24uYXNzZXJ0X2hhc19jYWxscyhbdW5pdHRlc3QubW9jay5jYWxsKGZfZmlsZW5hbWVfMSwgOTksIDk4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLmNhbGwoZl9kaXJuYW1lXzEsIDc3LCA3NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QubW9jay5jYWxsKGZfZmlsZW5hbWVfMiwgODgsIDg3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55X29yZGVyPVRydWUpCisKKyAgICAjIHRoaXMgdGVzdCByZXF1aXJlcyB0aGF0IHVpZD0wIGFuZCBnaWQ9MCByZWFsbHkgYmUgbmFtZWQgJ3Jvb3QnLiB0aGF0J3MKKyAgICAjICBiZWNhdXNlIHRoZSB1bmFtZSBhbmQgZ25hbWUgaW4gdGhlIHRlc3QgZmlsZSBhcmUgJ3Jvb3QnLCBhbmQgZXh0cmFjdCgpCisgICAgIyAgd2lsbCBsb29rIHRoZW0gdXAgdXNpbmcgcHdkIGFuZCBncnAgdG8gZmluZCB0aGVpciB1aWQgYW5kIGdpZCwgd2hpY2ggd2UKKyAgICAjICB0ZXN0IGhlcmUgdG8gYmUgMC4KKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhyb290X2lzX3VpZF9naWRfMCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd1aWQ9MCxnaWQ9MCBtdXN0IGJlIG5hbWVkICJyb290IicpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNob3duJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2htb2QnKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5nZXRldWlkJykKKyAgICBkZWYgdGVzdF9leHRyYWN0X3dpdGhvdXRfbnVtZXJpY19vd25lcihzZWxmLCBtb2NrX2dldGV1aWQsIG1vY2tfY2htb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9ja19jaG93bik6CisgICAgICAgIHdpdGggc2VsZi5fc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpIGFzICh0YXJmbCwgZmlsZW5hbWVfMSwgXywgXyk6CisgICAgICAgICAgICB0YXJmbC5leHRyYWN0KGZpbGVuYW1lXzEsIFRFTVBESVIsIG51bWVyaWNfb3duZXI9RmFsc2UpCisKKyAgICAgICAgIyBjb252ZXJ0IHRvIGZpbGVzeXN0ZW0gcGF0aHMKKyAgICAgICAgZl9maWxlbmFtZV8xID0gb3MucGF0aC5qb2luKFRFTVBESVIsIGZpbGVuYW1lXzEpCisKKyAgICAgICAgbW9ja19jaG93bi5hc3NlcnRfY2FsbGVkX3dpdGgoZl9maWxlbmFtZV8xLCAwLCAwKQorCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmdldGV1aWQnKQorICAgIGRlZiB0ZXN0X2tleXdvcmRfb25seShzZWxmLCBtb2NrX2dldGV1aWQpOgorICAgICAgICB3aXRoIHNlbGYuX3NldHVwX3Rlc3QobW9ja19nZXRldWlkKSBhcyAodGFyZmwsIGZpbGVuYW1lXzEsIF8sIF8pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmwuZXh0cmFjdCwgZmlsZW5hbWVfMSwgVEVNUERJUiwgRmFsc2UsIFRydWUpCisKKwogZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgc3VwcG9ydC51bmxpbmsoVEVNUERJUikKICAgICBvcy5tYWtlZGlycyhURU1QRElSKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90Y2wucHkgYi9MaWIvdGVzdC90ZXN0X3RjbC5weQppbmRleCA2NmU5ZDQ5Li41YmU2NDVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RjbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RjbC5weQpAQCAtNyw5ICs3LDcgQEAKICMgU2tpcCB0aGlzIHRlc3QgaWYgdGhlIF90a2ludGVyIG1vZHVsZSB3YXNuJ3QgYnVpbHQuCiBfdGtpbnRlciA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQogCi0jIE1ha2Ugc3VyZSB0a2ludGVyLl9maXggcnVucyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50Ci10a2ludGVyID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCd0a2ludGVyJykKLQoraW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgVGNsCiBmcm9tIF90a2ludGVyIGltcG9ydCBUY2xFcnJvcgogCkBAIC0xMzAsOSArMTI4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsdGNsLnVuc2V0dmFyLCdhJykKIAogICAgIGRlZiBnZXRfaW50ZWdlcnMoc2VsZik6Ci0gICAgICAgIGludGVnZXJzID0gKDAsIDEsIC0xLCAyKiozMS0xLCAtMioqMzEpCi0gICAgICAgIGlmIHRjbF92ZXJzaW9uID49ICg4LCA0KTogICMgd2lkZUludCB3YXMgYWRkZWQgaW4gVGNsIDguNAotICAgICAgICAgICAgaW50ZWdlcnMgKz0gKDIqKjMxLCAtMioqMzEtMSwgMioqNjMtMSwgLTIqKjYzKQorICAgICAgICBpbnRlZ2VycyA9ICgwLCAxLCAtMSwgMioqMzEtMSwgLTIqKjMxLCAyKiozMSwgLTIqKjMxLTEsIDIqKjYzLTEsIC0yKio2MykKICAgICAgICAgIyBiaWdudW0gd2FzIGFkZGVkIGluIFRjbCA4LjUsIGJ1dCBpdHMgc3VwcG9ydCBpcyBhYmxlIG9ubHkgc2luY2UgOC41LjgKICAgICAgICAgaWYgKGdldF90a19wYXRjaGxldmVsKCkgPj0gKDgsIDYsIDAsICdmaW5hbCcpIG9yCiAgICAgICAgICAgICAoOCwgNSwgOCkgPD0gZ2V0X3RrX3BhdGNobGV2ZWwoKSA8ICg4LCA2KSk6CkBAIC0xNjUsMTAgKzE2MSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRjbC5nZXRkb3VibGUoJyA0MiAnKSwgNDIuMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Y2wuZ2V0ZG91YmxlKCcgNDIuNSAnKSwgNDIuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Y2wuZ2V0ZG91YmxlKDQyLjUpLCA0Mi41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRjbC5nZXRkb3VibGUoNDIpLCA0Mi4wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRjbC5nZXRkb3VibGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGNsLmdldGRvdWJsZSwgJzQyLjUnLCAnMTAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRjbC5nZXRkb3VibGUsIGInNDIuNScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGNsLmdldGRvdWJsZSwgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCB0Y2wuZ2V0ZG91YmxlLCAnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIFRjbEVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNsLmdldGRvdWJsZSwgJzQyLjVcMCcpCkBAIC00NjQsNiArNDYwLDggQEAKICAgICAgICAgICAgICMgWFhYIE5hTiByZXByZXNlbnRhdGlvbiBjYW4gYmUgbm90IHBhcnNhYmxlIGJ5IGZsb2F0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXNzVmFsdWUoKDEsICcyJywgKDMuNCwpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEsICcyJywgKDMuNCwpKSBpZiBzZWxmLndhbnRvYmplY3RzIGVsc2UgJzEgMiAzLjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhc3NWYWx1ZShbJ2EnLCBbJ2InLCAnYyddXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgKCdiJywgJ2MnKSkgaWYgc2VsZi53YW50b2JqZWN0cyBlbHNlICdhIHtiIGN9JykKIAogICAgIGRlZiB0ZXN0X3VzZXJfY29tbWFuZChzZWxmKToKICAgICAgICAgcmVzdWx0ID0gTm9uZQpAQCAtNTE3LDYgKzUxNSw3IEBACiAgICAgICAgICMgWFhYIE5hTiByZXByZXNlbnRhdGlvbiBjYW4gYmUgbm90IHBhcnNhYmxlIGJ5IGZsb2F0KCkKICAgICAgICAgY2hlY2soKCksICcnKQogICAgICAgICBjaGVjaygoMSwgKDIsKSwgKDMsIDQpLCAnNSA2JywgKCkpLCAnMSAyIHszIDR9IHs1IDZ9IHt9JykKKyAgICAgICAgY2hlY2soWzEsIFsyLF0sIFszLCA0XSwgJzUgNicsIFtdXSwgJzEgMiB7MyA0fSB7NSA2fSB7fScpCiAKICAgICBkZWYgdGVzdF9zcGxpdGxpc3Qoc2VsZik6CiAgICAgICAgIHNwbGl0bGlzdCA9IHNlbGYuaW50ZXJwLnRrLnNwbGl0bGlzdApAQCAtNTQyLDEyICs1NDEsMTUgQEAKICAgICAgICAgICAgICgnYSAzLjQnLCAoJ2EnLCAnMy40JykpLAogICAgICAgICAgICAgKCgnYScsIDMuNCksICgnYScsIDMuNCkpLAogICAgICAgICAgICAgKCgpLCAoKSksCisgICAgICAgICAgICAoW10sICgpKSwKKyAgICAgICAgICAgIChbJ2EnLCBbJ2InLCAnYyddXSwgKCdhJywgWydiJywgJ2MnXSkpLAogICAgICAgICAgICAgKGNhbGwoJ2xpc3QnLCAxLCAnMicsICgzLjQsKSksCiAgICAgICAgICAgICAgICAgKDEsICcyJywgKDMuNCwpKSBpZiBzZWxmLndhbnRvYmplY3RzIGVsc2UKICAgICAgICAgICAgICAgICAoJzEnLCAnMicsICczLjQnKSksCiAgICAgICAgIF0KKyAgICAgICAgdGtfcGF0Y2hsZXZlbCA9IGdldF90a19wYXRjaGxldmVsKCkKICAgICAgICAgaWYgdGNsX3ZlcnNpb24gPj0gKDgsIDUpOgotICAgICAgICAgICAgaWYgbm90IHNlbGYud2FudG9iamVjdHMgb3IgZ2V0X3RrX3BhdGNobGV2ZWwoKSA8ICg4LCA1LCA1KToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLndhbnRvYmplY3RzIG9yIHRrX3BhdGNobGV2ZWwgPCAoOCwgNSwgNSk6CiAgICAgICAgICAgICAgICAgIyBCZWZvcmUgOC41LjUgZGljdHMgd2VyZSBjb252ZXJ0ZWQgdG8gbGlzdHMgdGhyb3VnaCBzdHJpbmcKICAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICgnMTInLCAnXHUyMGFjJywgJ1x4ZTJceDgyXHhhYycsICczLjQnKQogICAgICAgICAgICAgZWxzZToKQEAgLTU1Niw4ICs1NTgsMTEgQEAKICAgICAgICAgICAgICAgICAoY2FsbCgnZGljdCcsICdjcmVhdGUnLCAxMiwgJ1x1MjBhYycsIGInXHhlMlx4ODJceGFjJywgKDMuNCwpKSwKICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpLAogICAgICAgICAgICAgXQorICAgICAgICBkYmdfaW5mbyA9ICgnd2FudCBvYmplY3RzPyAlcywgVGNsIHZlcnNpb246ICVzLCBUayBwYXRjaGxldmVsOiAlcycKKyAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi53YW50b2JqZWN0cywgdGNsX3ZlcnNpb24sIHRrX3BhdGNobGV2ZWwpKQogICAgICAgICBmb3IgYXJnLCByZXMgaW4gdGVzdGNhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdGxpc3QoYXJnKSwgcmVzLCBtc2c9YXJnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdGxpc3QoYXJnKSwgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJnPSVhLCAlcycgJSAoYXJnLCBkYmdfaW5mbykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzcGxpdGxpc3QsICd7JykKIAogICAgIGRlZiB0ZXN0X3NwbGl0KHNlbGYpOgpAQCAtNTg5LDYgKzU5NCw5IEBACiAgICAgICAgICAgICAoKCdhJywgMy40KSwgKCdhJywgMy40KSksCiAgICAgICAgICAgICAoKCdhJywgKDIsIDMuNCkpLCAoJ2EnLCAoMiwgMy40KSkpLAogICAgICAgICAgICAgKCgpLCAoKSksCisgICAgICAgICAgICAoW10sICgpKSwKKyAgICAgICAgICAgIChbJ2EnLCAnYiBjJ10sICgnYScsICgnYicsICdjJykpKSwKKyAgICAgICAgICAgIChbJ2EnLCBbJ2InLCAnYyddXSwgKCdhJywgKCdiJywgJ2MnKSkpLAogICAgICAgICAgICAgKGNhbGwoJ2xpc3QnLCAxLCAnMicsICgzLjQsKSksCiAgICAgICAgICAgICAgICAgKDEsICcyJywgKDMuNCwpKSBpZiBzZWxmLndhbnRvYmplY3RzIGVsc2UKICAgICAgICAgICAgICAgICAoJzEnLCAnMicsICczLjQnKSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IGVlMWMzNTcuLjUyNGJiYTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBIT1NUID0gc3VwcG9ydC5IT1NUCiAKIGRlZiBzZXJ2ZXIoZXZ0LCBzZXJ2KToKLSAgICBzZXJ2Lmxpc3Rlbig1KQorICAgIHNlcnYubGlzdGVuKCkKICAgICBldnQuc2V0KCkKICAgICB0cnk6CiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCkBAIC0zOTMsOSArMzkzLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiJycuam9pbih3YW50WzotMV0pKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChHZW5lcmFsVGVzdHMsIFJlYWRUZXN0cywgV3JpdGVUZXN0cywgT3B0aW9uVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXhwZWN0VGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CmluZGV4IDY2NDEyOTguLjRhMDc3Y2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQpAQCAtMTIsNyArMTIsOCBAQAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKIGlmIGhhc2F0dHIob3MsICdzdGF0Jyk6CkBAIC0zNSwxMCArMzYsMzggQEAKICMgaW4gb3JkZXIgb2YgdGhlaXIgYXBwZWFyYW5jZSBpbiB0aGUgZmlsZS4gIFRlc3Rpbmcgd2hpY2ggcmVxdWlyZXMKICMgdGhyZWFkcyBpcyBub3QgZG9uZSBoZXJlLgogCitjbGFzcyBUZXN0TG93TGV2ZWxJbnRlcm5hbHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2luZmVyX3JldHVybl90eXBlX3NpbmdsZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ5dGVzLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lKSkKKworICAgIGRlZiB0ZXN0X2luZmVyX3JldHVybl90eXBlX211bHRpcGxlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZSgnJywgJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ5dGVzLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoYicnLCBiJycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycsIGInJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgJycpCisKKyAgICBkZWYgdGVzdF9pbmZlcl9yZXR1cm5fdHlwZV9tdWx0aXBsZXNfYW5kX25vbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoTm9uZSwgJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKCcnLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhieXRlcywgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnl0ZXMsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShOb25lLCBiJycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycsIE5vbmUsIGInJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgTm9uZSwgJycpCisKKwogIyBDb21tb24gZnVuY3Rpb25hbGl0eS4KKwogY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIHN0cl9jaGVjayA9IHJlLmNvbXBpbGUociJeW2EtejAtOV8tXXs4fSQiKQorICAgIGJfY2hlY2sgPSByZS5jb21waWxlKGJyIl5bYS16MC05Xy1dezh9JCIpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuX3dhcm5pbmdzX21hbmFnZXIgPSBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCkKQEAgLTU1LDE4ICs4NCwzMSBAQAogICAgICAgICBucHJlICA9IG5iYXNlWzpsZW4ocHJlKV0KICAgICAgICAgbnN1ZiAgPSBuYmFzZVtsZW4obmJhc2UpLWxlbihzdWYpOl0KIAorICAgICAgICBpZiBkaXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmFtZSksIHN0ciBpZiB0eXBlKGRpcikgaXMgc3RyIGVsc2UgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHJldHVybiB0eXBlIikKKyAgICAgICAgaWYgcHJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5hbWUpLCBzdHIgaWYgdHlwZShwcmUpIGlzIHN0ciBlbHNlIGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCByZXR1cm4gdHlwZSIpCisgICAgICAgIGlmIHN1ZiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuYW1lKSwgc3RyIGlmIHR5cGUoc3VmKSBpcyBzdHIgZWxzZSBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcmV0dXJuIHR5cGUiKQorICAgICAgICBpZiAoZGlyLCBwcmUsIHN1ZikgPT0gKE5vbmUsIE5vbmUsIE5vbmUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5hbWUpLCBzdHIsICJkZWZhdWx0IHJldHVybiB0eXBlIG11c3QgYmUgc3RyIikKKwogICAgICAgICAjIGNoZWNrIGZvciBlcXVhbGl0eSBvZiB0aGUgYWJzb2x1dGUgcGF0aHMhCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKG5kaXIpLCBvcy5wYXRoLmFic3BhdGgoZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAnJXMnIG5vdCBpbiBkaXJlY3RvcnkgJyVzJyIgJSAobmFtZSwgZGlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAlciBub3QgaW4gZGlyZWN0b3J5ICVyIiAlIChuYW1lLCBkaXIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5wcmUsIHByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAnJXMnIGRvZXMgbm90IGJlZ2luIHdpdGggJyVzJyIgJSAobmJhc2UsIHByZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJXIgZG9lcyBub3QgYmVnaW4gd2l0aCAlciIgJSAobmJhc2UsIHByZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnN1Ziwgc3VmLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICclcycgZG9lcyBub3QgZW5kIHdpdGggJyVzJyIgJSAobmJhc2UsIHN1ZikpCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJXIgZG9lcyBub3QgZW5kIHdpdGggJXIiICUgKG5iYXNlLCBzdWYpKQogCiAgICAgICAgIG5iYXNlID0gbmJhc2VbbGVuKHByZSk6bGVuKG5iYXNlKS1sZW4oc3VmKV0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuc3RyX2NoZWNrLm1hdGNoKG5iYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICJyYW5kb20gc3RyaW5nICclcycgZG9lcyBub3QgbWF0Y2ggXlthLXowLTlfLV17OH0kIgotICAgICAgICAgICAgICAgICAgICAgJSBuYmFzZSkKKyAgICAgICAgY2hlY2sgPSBzZWxmLnN0cl9jaGVjayBpZiBpc2luc3RhbmNlKG5iYXNlLCBzdHIpIGVsc2Ugc2VsZi5iX2NoZWNrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjaGVjay5tYXRjaChuYmFzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAicmFuZG9tIGNoYXJhY3RlcnMgJXIgZG8gbm90IG1hdGNoICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAobmJhc2UsIGNoZWNrLnBhdHRlcm4pKQogCiAKIGNsYXNzIFRlc3RFeHBvcnRzKEJhc2VUZXN0Q2FzZSk6CkBAIC04Miw3ICsxMjQsOSBAQAogICAgICAgICAgICAgIm1rdGVtcCIgOiAxLAogICAgICAgICAgICAgIlRNUF9NQVgiIDogMSwKICAgICAgICAgICAgICJnZXR0ZW1wcHJlZml4IiA6IDEsCisgICAgICAgICAgICAiZ2V0dGVtcHByZWZpeGIiIDogMSwKICAgICAgICAgICAgICJnZXR0ZW1wZGlyIiA6IDEsCisgICAgICAgICAgICAiZ2V0dGVtcGRpcmIiIDogMSwKICAgICAgICAgICAgICJ0ZW1wZGlyIiA6IDEsCiAgICAgICAgICAgICAidGVtcGxhdGUiIDogMSwKICAgICAgICAgICAgICJTcG9vbGVkVGVtcG9yYXJ5RmlsZSIgOiAxLApAQCAtMzE5LDcgKzM2Myw4IEBACiAgICAgICAgICAgICBpZiBiaW46IGZsYWdzID0gc2VsZi5fYmZsYWdzCiAgICAgICAgICAgICBlbHNlOiAgIGZsYWdzID0gc2VsZi5fdGZsYWdzCiAKLSAgICAgICAgICAgIChzZWxmLmZkLCBzZWxmLm5hbWUpID0gdGVtcGZpbGUuX21rc3RlbXBfaW5uZXIoZGlyLCBwcmUsIHN1ZiwgZmxhZ3MpCisgICAgICAgICAgICBvdXRwdXRfdHlwZSA9IHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShkaXIsIHByZSwgc3VmKQorICAgICAgICAgICAgKHNlbGYuZmQsIHNlbGYubmFtZSkgPSB0ZW1wZmlsZS5fbWtzdGVtcF9pbm5lcihkaXIsIHByZSwgc3VmLCBmbGFncywgb3V0cHV0X3R5cGUpCiAKICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CiAgICAgICAgICAgICBvcy53cml0ZShzZWxmLmZkLCBzdHIpCkBAIC0zMjgsOSArMzczLDE3IEBACiAgICAgICAgICAgICBzZWxmLl9jbG9zZShzZWxmLmZkKQogICAgICAgICAgICAgc2VsZi5fdW5saW5rKHNlbGYubmFtZSkKIAotICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCBiaW49MSk6CisgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPU5vbmUsIHN1Zj1Ob25lLCBiaW49MSk6CisgICAgICAgIG91dHB1dF90eXBlID0gdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGRpciwgcHJlLCBzdWYpCiAgICAgICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgaWYgcHJlIGlzIE5vbmU6CisgICAgICAgICAgICBwcmUgPSBvdXRwdXRfdHlwZSgpCisgICAgICAgIGlmIHN1ZiBpcyBOb25lOgorICAgICAgICAgICAgc3VmID0gb3V0cHV0X3R5cGUoKQogICAgICAgICBmaWxlID0gc2VsZi5ta3N0ZW1wZWQoZGlyLCBwcmUsIHN1ZiwgYmluKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKQEAgLTM0NCw2ICszOTcsMjMgQEAKICAgICAgICAgc2VsZi5kb19jcmVhdGUocHJlPSJhIiwgc3VmPSJiIikud3JpdGUoYiJibGF0IikKICAgICAgICAgc2VsZi5kb19jcmVhdGUocHJlPSJhYSIsIHN1Zj0iLnR4dCIpLndyaXRlKGIiYmxhdCIpCiAKKyAgICBkZWYgdGVzdF9iYXNpY193aXRoX2J5dGVzX25hbWVzKHNlbGYpOgorICAgICAgICAjIF9ta3N0ZW1wX2lubmVyIGNhbiBjcmVhdGUgZmlsZXMgd2hlbiBnaXZlbiBuYW1lIHBhcnRzIGFsbAorICAgICAgICAjIHNwZWNpZmllZCBhcyBieXRlcy4KKyAgICAgICAgZGlyX2IgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgc3VmPWIiIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9YiJhIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBzdWY9YiJiIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9YiJhIiwgc3VmPWIiYiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPWIiYWEiLCBzdWY9YiIudHh0Iikud3JpdGUoYiJibGF0IikKKyAgICAgICAgIyBDYW4ndCBtaXggc3RyICYgYmluYXJ5IHR5cGVzIGluIHRoZSBhcmdzLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9IiIsIHN1Zj1iIiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPSIiKS53cml0ZShiImJsYXQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHByZT1iIiIsIHN1Zj0iIikud3JpdGUoYiJibGF0IikKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX21hbnkoc2VsZik6CiAgICAgICAgICMgX21rc3RlbXBfaW5uZXIgY2FuIGNyZWF0ZSBtYW55IGZpbGVzIChzdG9jaGFzdGljKQogICAgICAgICBleHRhbnQgPSBsaXN0KHJhbmdlKFRFU1RfRklMRVMpKQpAQCAtNDIzLDkgKzQ5MywxMCBAQAogCiAgICAgZGVmIG1ha2VfdGVtcChzZWxmKToKICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLl9ta3N0ZW1wX2lubmVyKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLnRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcHByZWZpeCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5fYmluX29wZW5mbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLl9iaW5fb3BlbmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKQogCiAgICAgZGVmIHRlc3RfY29sbGlzaW9uX3dpdGhfZXhpc3RpbmdfZmlsZShzZWxmKToKICAgICAgICAgIyBfbWtzdGVtcF9pbm5lciB0cmllcyBhbm90aGVyIG5hbWUgd2hlbiBhIGZpbGUgd2l0aApAQCAtNDYxLDcgKzUzMiwxMiBAQAogICAgICAgICBwID0gdGVtcGZpbGUuZ2V0dGVtcHByZWZpeCgpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIHN0cikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihwKSA+IDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocCksIDApCisKKyAgICAgICAgcGIgPSB0ZW1wZmlsZS5nZXR0ZW1wcHJlZml4YigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHBiLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihwYiksIDApCiAKICAgICBkZWYgdGVzdF91c2FibGVfdGVtcGxhdGUoc2VsZik6CiAgICAgICAgICMgZ2V0dGVtcHByZWZpeCByZXR1cm5zIGEgdXNhYmxlIHByZWZpeCBzdHJpbmcKQEAgLTQ4NiwxMSArNTYyLDExIEBACiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2V4aXN0cyhzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIHJldHVybnMgYSBkaXJlY3Rvcnkgd2hpY2ggZXhpc3RzCiAKLSAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKGRpcikgb3IgZGlyID09IG9zLmN1cmRpciwKLSAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCIgJSBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGRpciksCi0gICAgICAgICAgICAgICAgICAgICAiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGRpcikKKyAgICAgICAgZm9yIGQgaW4gKHRlbXBmaWxlLmdldHRlbXBkaXIoKSwgdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2FicyhkKSBvciBkID09IG9zLmN1cmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIgaXMgbm90IGFuIGFic29sdXRlIHBhdGgiICUgZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlciBpcyBub3QgYSBkaXJlY3RvcnkiICUgZCkKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV93cml0YWJsZShzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIHJldHVybnMgYSBkaXJlY3Rvcnkgd3JpdGFibGUgYnkgdGhlIHVzZXIKQEAgLTUwNiw4ICs1ODIsMTEgQEAKICAgICAgICAgIyBnZXR0ZW1wZGlyIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdAogICAgICAgICBhID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCiAgICAgICAgIGIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgYyA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR5cGUoYSksIHR5cGUoYykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgb3MuZnNkZWNvZGUoYykpCiAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIHNob3VsZCBub3QgZmxhdHRlbiBpdHMgY2FzZQpAQCAtNTI3LDkgKzYwNiwxNyBAQAogY2xhc3MgVGVzdE1rc3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rc3RlbXAoKS4iIiIKIAotICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKKyAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9Tm9uZSwgc3VmPU5vbmUpOgorICAgICAgICBvdXRwdXRfdHlwZSA9IHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShkaXIsIHByZSwgc3VmKQogICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgaWYgb3V0cHV0X3R5cGUgaXMgc3RyOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIGlmIHByZSBpcyBOb25lOgorICAgICAgICAgICAgcHJlID0gb3V0cHV0X3R5cGUoKQorICAgICAgICBpZiBzdWYgaXMgTm9uZToKKyAgICAgICAgICAgIHN1ZiA9IG91dHB1dF90eXBlKCkKICAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKICAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKICAgICAgICAgYWRpciA9IG9zLnBhdGguYWJzcGF0aChkaXIpCkBAIC01NTEsNiArNjM4LDI0IEBACiAgICAgICAgIHNlbGYuZG9fY3JlYXRlKHByZT0iYWEiLCBzdWY9Ii50eHQiKQogICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9Ii4iKQogCisgICAgZGVmIHRlc3RfYmFzaWNfd2l0aF9ieXRlc19uYW1lcyhzZWxmKToKKyAgICAgICAgIyBta3N0ZW1wIGNhbiBjcmVhdGUgZmlsZXMgd2hlbiBnaXZlbiBuYW1lIHBhcnRzIGFsbAorICAgICAgICAjIHNwZWNpZmllZCBhcyBieXRlcy4KKyAgICAgICAgZCA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHN1Zj1iIiIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHN1Zj1iImIiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYSIsIHN1Zj1iImIiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYWEiLCBzdWY9YiIudHh0IikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWIiLiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj0iLiIsIHByZT1iImFhIiwgc3VmPWIiLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1iIi4iLCBwcmU9ImFhIiwgc3VmPWIiLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1iIi4iLCBwcmU9YiJhYSIsIHN1Zj0iLnR4dCIpCisKKwogICAgIGRlZiB0ZXN0X2Nob29zZV9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgICMgbWtzdGVtcCBjYW4gY3JlYXRlIGRpcmVjdG9yaWVzIGluIGEgdXNlci1zZWxlY3RlZCBkaXJlY3RvcnkKICAgICAgICAgZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCkBAIC01NjYsOSArNjcxLDE3IEBACiAgICAgZGVmIG1ha2VfdGVtcChzZWxmKToKICAgICAgICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQogCi0gICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgorICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT1Ob25lLCBzdWY9Tm9uZSk6CisgICAgICAgIG91dHB1dF90eXBlID0gdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGRpciwgcHJlLCBzdWYpCiAgICAgICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBpZiBvdXRwdXRfdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgaWYgcHJlIGlzIE5vbmU6CisgICAgICAgICAgICBwcmUgPSBvdXRwdXRfdHlwZSgpCisgICAgICAgIGlmIHN1ZiBpcyBOb25lOgorICAgICAgICAgICAgc3VmID0gb3V0cHV0X3R5cGUoKQogICAgICAgICBuYW1lID0gdGVtcGZpbGUubWtkdGVtcChkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQogCiAgICAgICAgIHRyeToKQEAgLTU4Niw2ICs2OTksMjEgQEAKICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUocHJlPSJhIiwgc3VmPSJiIikpCiAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKHByZT0iYWEiLCBzdWY9Ii50eHQiKSkKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX3dpdGhfYnl0ZXNfbmFtZXMoc2VsZik6CisgICAgICAgICMgbWtkdGVtcCBjYW4gY3JlYXRlIGRpcmVjdG9yaWVzIHdoZW4gZ2l2ZW4gYWxsIGJpbmFyeSBwYXJ0cworICAgICAgICBkID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCkpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIikpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBzdWY9YiJiIikpCisgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9YiJhIiwgc3VmPWIiYiIpKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYWEiLCBzdWY9YiIudHh0IikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBwcmU9ImFhIiwgc3VmPWIiLnR4dCIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYWEiLCBzdWY9Ii50eHQiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPSIiLCBwcmU9YiJhYSIsIHN1Zj1iIi50eHQiKSkKKwogICAgIGRlZiB0ZXN0X2Jhc2ljX21hbnkoc2VsZik6CiAgICAgICAgICMgbWtkdGVtcCBjYW4gY3JlYXRlIG1hbnkgZGlyZWN0b3JpZXMgKHN0b2NoYXN0aWMpCiAgICAgICAgIGV4dGFudCA9IGxpc3QocmFuZ2UoVEVTVF9GSUxFUykpCkBAIC0xMzEzLDggKzE0NDEsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWUpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weSBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKaW5kZXggMWJiYTc3ZS4uNzA3YWFhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CkBAIC0xODQsNiArMTg0LDE2IEBACiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIFsidGhpcy1pcy1hLXVzZWZ1bC1mZWF0dXJlLWZvci1yZWZvcm1hdHRpbmctIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zdHMtZnJvbS10aW0tcGV0ZXJzJ2x5Il0pCisgICAgICAgICMgVGhlIHRlc3QgdGVzdHMgY3VycmVudCBiZWhhdmlvciBidXQgaXMgbm90IHRlc3RpbmcgcGFydHMgb2YgdGhlIEFQSS4KKyAgICAgICAgZXhwZWN0ID0gKCJ0aGlzLXxpcy18YS18dXNlZnVsLXxmZWF0dXJlLXxmb3ItfCIKKyAgICAgICAgICAgICAgICAgICJyZWZvcm1hdHRpbmctfHBvc3RzLXxmcm9tLXx0aW0tfHBldGVycydseSIpLnNwbGl0KCd8JykKKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDEsIGV4cGVjdCwgYnJlYWtfbG9uZ193b3Jkcz1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCh0ZXh0LCBleHBlY3QpCisKKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCgnZS1tYWlsJywgWydlLW1haWwnXSkKKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCgnSmVsbHktTycsIFsnSmVsbHktTyddKQorICAgICAgICAjIFRoZSB0ZXN0IHRlc3RzIGN1cnJlbnQgYmVoYXZpb3IgYnV0IGlzIG5vdCB0ZXN0aW5nIHBhcnRzIG9mIHRoZSBBUEkuCisgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoJ2hhbGYtYS1jcm93bicsICdoYWxmLXxhLXxjcm93bicuc3BsaXQoJ3wnKSkKIAogICAgIGRlZiB0ZXN0X2h5cGhlbmF0ZWRfbnVtYmVycyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgaHlwaGVuYXRlZCBudW1iZXJzIChlZy4gZGF0ZXMpIGFyZSBub3QgYnJva2VuIGxpa2Ugd29yZHMuCkBAIC0xOTUsNiArMjA1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGVhc2VkIG9uIDE5OTQtMDItMTUuJ10pCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA0MCwgWydQeXRob24gMS4wLjAgd2FzIHJlbGVhc2VkIG9uIDE5OTQtMDEtMjYuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAxLjAuMSB3YXMgcmVsZWFzZWQgb24gMTk5NC0wMi0xNS4nXSkKKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDEsIHRleHQuc3BsaXQoKSwgYnJlYWtfbG9uZ193b3Jkcz1GYWxzZSkKIAogICAgICAgICB0ZXh0ID0gIkkgZG8gYWxsIG15IHNob3BwaW5nIGF0IDctMTEuIgogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMjUsIFsiSSBkbyBhbGwgbXkgc2hvcHBpbmcgYXQiLApAQCAtMjAyLDYgKzIxMyw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAyNywgWyJJIGRvIGFsbCBteSBzaG9wcGluZyBhdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3LTExLiJdKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMjksIFsiSSBkbyBhbGwgbXkgc2hvcHBpbmcgYXQgNy0xMS4iXSkKKyAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDEsIHRleHQuc3BsaXQoKSwgYnJlYWtfbG9uZ193b3Jkcz1GYWxzZSkKIAogICAgIGRlZiB0ZXN0X2VtX2Rhc2goc2VsZik6CiAgICAgICAgICMgVGVzdCB0ZXh0IHdpdGggZW0tZGFzaGVzCkBAIC0zMjYsNiArMzM4LDEwIEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoInRoZSBbJ3dpYmJsZS13b2JibGUnXSB3aWRnZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsndGhlJywgJyAnLCAiWyd3aWJibGUtIiwgIndvYmJsZSddIiwgJyAnLCAnd2lkZ2V0J10pCiAKKyAgICAgICAgIyBUaGUgdGVzdCB0ZXN0cyBjdXJyZW50IGJlaGF2aW9yIGJ1dCBpcyBub3QgdGVzdGluZyBwYXJ0cyBvZiB0aGUgQVBJLgorICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KCJ3aGF0LWQneW91LWNhbGwtaXQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAid2hhdC1kJ3lvdS18Y2FsbC18aXQuIi5zcGxpdCgnfCcpKQorCiAgICAgZGVmIHRlc3RfZnVua3lfcGFyZW5zIChzZWxmKToKICAgICAgICAgIyBTZWNvbmQgcGFydCBvZiBTRiBidWcgIzU5NjQzNDogbG9uZyBvcHRpb24gc3RyaW5ncyBpbnNpZGUKICAgICAgICAgIyBwYXJlbnRoZXNlcy4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKaW5kZXggNjE0NDkwMS4uZWYzMDU5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKQEAgLTI1Miw5ICsyNTIsNSBAQAogICAgICAgICAgICAgcGFzcwogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUaHJlYWRSdW5uaW5nVGVzdHMsIEJhcnJpZXJUZXN0LCBMb2NrVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVGVzdEZvcmtJblRocmVhZCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQppbmRleCA0YmU2MTVhLi45YjJkOWE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQpAQCAtMTE1LDEyICsxMTUsMTggQEAKICAgICAgICAgICAgIGVycm9ycyA9IFtdCiAgICAgICAgICAgICBkb25lX3Rhc2tzID0gW10KICAgICAgICAgICAgIGRvbmUuY2xlYXIoKQorICAgICAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICB3aXRoIHN0YXJ0X3RocmVhZHModGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KE4sIGRvbmUsIGRvbmVfdGFza3MsIGVycm9ycywpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKE4pKToKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9uZS53YWl0KDYwKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyb3JzKQorICAgICAgICAgICAgY29tcGxldGVkID0gZG9uZS53YWl0KDEwICogNjApCisgICAgICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiJS4xZiBtcyIgJSAoZHQqMWUzKSwgZmx1c2g9VHJ1ZSwgZW5kPSIgIikKKyAgICAgICAgICAgIGRiZ19pbmZvID0gJ2RvbmU6ICVzLyVzJyAlIChsZW4oZG9uZV90YXNrcyksIE4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVycm9ycywgZGJnX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGxldGVkLCBkYmdfaW5mbykKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoIk9LLiIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKaW5kZXggNGI3NWVhNi4uM2IxMWJmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKQEAgLTQsNyArNCw3IEBACiAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBzdHJpcF9weXRob25fc3RkZXJyLCBpbXBvcnRfbW9kdWxlLCBjcHl0aG9uX29ubHkKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKQEAgLTk0NSw3ICs5NDUsNyBAQAogICAgICAgICAgICAgZGVmIG91dGVyKCk6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZWN1cnNlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICAgICB3ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9b3V0ZXIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKaW5kZXggYmU3ZGRjYy4uZGUwY2JjNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQpAQCAtMSwyMSArMSwzNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZW51bQoraW1wb3J0IGxvY2FsZQoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgbG9jYWxlCi1pbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgc3lzCi1pbXBvcnQgcGxhdGZvcm0KIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCisKIAogIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCiBTSVpFT0ZfSU5UID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCi1fUHlUaW1lX1JPVU5EX0RPV04gPSAwCi1fUHlUaW1lX1JPVU5EX1VQID0gMQorCitVU19UT19OUyA9IDEwICoqIDMKK01TX1RPX05TID0gMTAgKiogNgorU0VDX1RPX05TID0gMTAgKiogOQorCitjbGFzcyBfUHlUaW1lKGVudW0uSW50RW51bSk6CisgICAgIyBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKQorICAgIFJPVU5EX0ZMT09SID0gMAorICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKKyAgICBST1VORF9DRUlMSU5HID0gMQorCitBTExfUk9VTkRJTkdfTUVUSE9EUyA9IChfUHlUaW1lLlJPVU5EX0ZMT09SLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpCiAKIAogY2xhc3MgVGltZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk4LDEzICsxMTQsNiBAQAogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdjb252ZXJzaW9uIHNwZWNpZmllcjogJXIgZmFpbGVkLicgJSBmb3JtYXQpCiAKLSAgICAgICAgIyBJc3N1ZSAjMTA3NjI6IEd1YXJkIGFnYWluc3QgaW52YWxpZC9ub24tc3VwcG9ydGVkIGZvcm1hdCBzdHJpbmcKLSAgICAgICAgIyBzbyB0aGF0IFB5dGhvbiBkb24ndCBjcmFzaCAoV2luZG93cyBjcmFzaGVzIHdoZW4gdGhlIGZvcm1hdCBzdHJpbmcKLSAgICAgICAgIyBpbnB1dCB0byBbd11zdHJmdGltZSBpcyBub3Qga29zaGVyLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVmJykKLQogICAgIGRlZiBfYm91bmRzX2NoZWNraW5nKHNlbGYsIGZ1bmMpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHN0cmZ0aW1lKCkgY2hlY2tzIHRoZSBib3VuZHMgb2YgdGhlIHZhcmlvdXMgcGFydHMKICAgICAgICAgIyBvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KQEAgLTE2NSw2ICsxNzQsMTkgQEAKICAgICBkZWYgdGVzdF9zdHJmdGltZV9ib3VuZGluZ19jaGVjayhzZWxmKToKICAgICAgICAgc2VsZi5fYm91bmRzX2NoZWNraW5nKGxhbWJkYSB0dXA6IHRpbWUuc3RyZnRpbWUoJycsIHR1cCkpCiAKKyAgICBkZWYgdGVzdF9zdHJmdGltZV9mb3JtYXRfY2hlY2soc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN0cmZ0aW1lIGRvZXMgbm90IGNyYXNoIG9uIGludmFsaWQgZm9ybWF0IHN0cmluZ3MKKyAgICAgICAgIyB0aGF0IG1heSB0cmlnZ2VyIGEgYnVmZmVyIG92ZXJyZWFkLiBXaGVuIG5vdCB0cmlnZ2VyZWQsCisgICAgICAgICMgc3RyZnRpbWUgbWF5IHN1Y2NlZWQgb3IgcmFpc2UgVmFsdWVFcnJvciBkZXBlbmRpbmcgb24KKyAgICAgICAgIyB0aGUgcGxhdGZvcm0uCisgICAgICAgIGZvciB4IGluIFsgJycsICdBJywgJyVBJywgJyVBQScgXToKKyAgICAgICAgICAgIGZvciB5IGluIHJhbmdlKDB4MCwgMHgxMCk6CisgICAgICAgICAgICAgICAgZm9yIHogaW4gWyAnJScsICdBJScsICdBQSUnLCAnJUElJywgJ0ElQSUnLCAnJSMnIF06CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoeCAqIHkgKyB6KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdmFsdWVzX2Zvcl96ZXJvKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHVzaW5nIGFsbCB6ZXJvcyB1c2VzIHRoZSBwcm9wZXIgZGVmYXVsdAogICAgICAgICAjIHZhbHVlcy4gIE5vIHRlc3QgZm9yIGRheWxpZ2h0IHNhdmluZ3Mgc2luY2Ugc3RyZnRpbWUoKSBkb2VzCkBAIC01OTUsMTEyICs2MTcsNjUgQEAKICAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAogICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgemVybwotICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAjIFJvdW5kIGF3YXkgZnJvbSB6ZXJvCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lX1JPVU5EX1VQKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMSwgLTEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS45LCAtMiwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoMS4wLCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQorICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjksIDIsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCiAgICAgICAgICk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZV90KG9iaiwgcm5kKSwgdGltZV90KQogCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgorICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCiAgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwKLSAgICAgICAgZm9yIG9iaiwgdGltZXZhbCwgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyB6ZXJvCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtNiwgKDAsIDEpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDFlLTcsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtNiwgKC0xLCA5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xZS03LCAoLTEsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDAuOTk5OTk5OSwgKDAsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMC4wMDAwMDQxLCAoMCwgNCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTYwLCAoMSwgMTIzNDU2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjEyMzQ1NjksICgxLCAxMjM0NTYpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0wLjAwMDAwNDAsICgtMSwgOTk5OTk2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMC4wMDAwMDQxLCAoLTEsIDk5OTk5NSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2MCwgKC0yLCA4NzY1NDQpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICMgUm91bmQgYXdheSBmcm9tIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxZS02LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTcsICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTYsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTcsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTksICgxLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC4wMDAwMDQxLCAoMCwgNSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2MCwgKDEsIDEyMzQ1NyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2OSwgKDEsIDEyMzQ1NyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0wLjAwMDAwNDAsICgtMSwgOTk5OTk2KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTAuMDAwMDA0MSwgKC0xLCA5OTk5OTUpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTYwLCAoLTIsIDg3NjU0NCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjEsICgtMiwgODc2NTQzKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWV2YWw9dGltZXZhbCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwob2JqLCBybmQpLCB0aW1ldmFsKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgotICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgaW52YWxpZCwgcm5kKQotCi0gICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCiAgICAgICAgIGZvciBvYmosIHRpbWVzcGVjLCBybmQgaW4gKAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgwLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2Nzg5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgIyBSb3VuZCBhd2F5IGZyb20gemVybwotICAgICAgICAgICAgKDAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTksICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTFlLTEwLCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lX1JPVU5EX1VQKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKKyAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKICAgICAgICAgKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQogCi0gICAgICAgIHJuZCA9IF9QeVRpbWVfUk9VTkRfRE9XTgorICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCiAgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgaW52YWxpZCwgcm5kKQpAQCAtNzU5LDUgKzczNCwyNjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV96b25lLCBOb25lKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKF90ZXN0Y2FwaSBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIFRlc3RQeVRpbWVfdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfRnJvbVNlY29uZHMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfRnJvbVNlY29uZHMKKyAgICAgICAgZm9yIHNlY29uZHMgaW4gKDAsIDMsIC00NTYsIF90ZXN0Y2FwaS5JTlRfTUFYLCBfdGVzdGNhcGkuSU5UX01JTik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzKHNlY29uZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyAqIFNFQ19UT19OUykKKworICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CisKKyAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCisgICAgICAgICAgICAgICAgIyBpbnRlZ2VycworICAgICAgICAgICAgICAgICgwLCAwKSwKKyAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKworICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKKyAgICAgICAgICAgICAgICAoMC4wLCAwKSwKKyAgICAgICAgICAgICAgICAoMWUtOSwgMSksCisgICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAorICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKKworICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKKworICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAorICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCisgICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAorICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKKworICAgICAgICAgICAgICAgICMgc3RhcnQgbG9vc2luZyBwcmVjaXNpb24gZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIqKjIzICsgMWUtOSwgIDgzODg2MDgwMDAwMDAwMDIpLAorCisgICAgICAgICAgICAgICAgIyBuYW5vc2Vjb25kcyBhcmUgbG9zdCBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMioqMjQgLSAxZS05LCAxNjc3NzIxNTk5OTk5OTk5OCksCisgICAgICAgICAgICAgICAgKDIqKjI0LCAgICAgICAgMTY3NzcyMTYwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyKioyNCArIDFlLTksIDE2Nzc3MjE2MDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjUgLSAxZS05LCAzMzU1NDQzMjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIqKjI1ICAgICAgICwgMzM1NTQ0MzIwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyKioyNSArIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKKworICAgICAgICAgICAgICAgICMgY2xvc2UgdG8gMl42MyBuYW5vc2Vjb25kcyAoX1B5VGltZV90IGxpbWl0KQorICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LCA5MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoOTIyMzM3MjAzNi4wLCA5MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTkyMjMzNzIwMzYsIC05MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAoLTkyMjMzNzIwMzYuMCwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KG9iaiwgcm5kKSwgdHMpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KDkyMjMzNzIwMzcsIHJuZCkKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KDkyMjMzNzIwMzcuMCwgcm5kKQorICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcsIHJuZCkKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KC05MjIzMzcyMDM3LjAsIHJuZCkKKworICAgICAgICAjIENvbnZlcnNpb24gZ2l2aW5nIGRpZmZlcmVudCByZXN1bHRzIGRlcGVuZGluZyBvbiB0aGUgcm91bmRpbmcgbWV0aG9kCisgICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgorICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCisgICAgICAgIGZvciBvYmosIHRzLCBybmQgaW4gKAorICAgICAgICAgICAgIyBjbG9zZSB0byB6ZXJvCisgICAgICAgICAgICAoIDFlLTEwLCAgMCwgRkxPT1IpLAorICAgICAgICAgICAgKCAxZS0xMCwgIDEsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xZS0xMCwgLTEsIEZMT09SKSwKKyAgICAgICAgICAgICgtMWUtMTAsICAwLCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyB0ZXN0IHJvdW5kaW5nIG9mIHRoZSBsYXN0IG5hbm9zZWNvbmQKKyAgICAgICAgICAgICggMS4xMjM0NTY3ODk5LCAgMTEyMzQ1Njc4OSwgRkxPT1IpLAorICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2NzkwLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODk5LCAtMTEyMzQ1Njc5MCwgRkxPT1IpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2Nzg5LCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyBjbG9zZSB0byAxIHNlY29uZAorICAgICAgICAgICAgKCAwLjk5OTk5OTk5OTksICAgOTk5OTk5OTk5LCBGTE9PUiksCisgICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgIDEwMDAwMDAwMDAsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0wLjk5OTk5OTk5OTksIC0xMDAwMDAwMDAwLCBGTE9PUiksCisgICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgIC05OTk5OTk5OTksIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1lc3RhbXA9dHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KG9iaiwgcm5kKSwgdHMpCisKKyAgICBkZWYgdGVzdF9Bc1NlY29uZHNEb3VibGUoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNTZWNvbmRzRG91YmxlCisKKyAgICAgICAgZm9yIG5hbm9zZWNvbmRzLCBzZWNvbmRzIGluICgKKyAgICAgICAgICAgICMgbmVhciAxIG5hbm9zZWNvbmQKKyAgICAgICAgICAgICggMCwgIDAuMCksCisgICAgICAgICAgICAoIDEsICAxZS05KSwKKyAgICAgICAgICAgICgtMSwgLTFlLTkpLAorCisgICAgICAgICAgICAjIG5lYXIgMSBzZWNvbmQKKyAgICAgICAgICAgIChTRUNfVE9fTlMgKyAxLCAxLjAgKyAxZS05KSwKKyAgICAgICAgICAgIChTRUNfVE9fTlMsICAgICAxLjApLAorICAgICAgICAgICAgKFNFQ19UT19OUyAtIDEsIDEuMCAtIDFlLTkpLAorCisgICAgICAgICAgICAjIGEgZmV3IHNlY29uZHMKKyAgICAgICAgICAgICgxMjMgKiBTRUNfVE9fTlMsIDEyMy4wKSwKKyAgICAgICAgICAgICgtNTY3ICogU0VDX1RPX05TLCAtNTY3LjApLAorCisgICAgICAgICAgICAjIG5hbm9zZWNvbmQgYXJlIGtlcHQgZm9yIHZhbHVlIDw9IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgKDQxOTQzMDM5OTk5OTk5OTksIDIqKjIyIC0gMWUtOSksCisgICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMCwgMioqMjIpLAorICAgICAgICAgICAgKDQxOTQzMDQwMDAwMDAwMDEsIDIqKjIyICsgMWUtOSksCisKKyAgICAgICAgICAgICMgc3RhcnQgbG9vc2luZyBwcmVjaXNpb24gZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAoODM4ODYwODAwMDAwMDAwMiwgMioqMjMgKyAxZS05KSwKKworICAgICAgICAgICAgIyBuYW5vc2Vjb25kcyBhcmUgbG9zdCBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKKyAgICAgICAgICAgICgxNjc3NzIxNTk5OTk5OTk5OCwgMioqMjQgLSAxZS05KSwKKyAgICAgICAgICAgICgxNjc3NzIxNTk5OTk5OTk5OSwgMioqMjQgLSAxZS05KSwKKyAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMCwgMioqMjQgICAgICAgKSwKKyAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMSwgMioqMjQgICAgICAgKSwKKyAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMiwgMioqMjQgKyAyZS05KSwKKworICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDAwLCAyKioyNSAgICAgICApLAorICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDAyLCAyKioyNSAgICAgICApLAorICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDA0LCAyKioyNSArIDRlLTkpLAorCisgICAgICAgICAgICAjIGNsb3NlIHRvIDJeNjMgbmFub3NlY29uZHMgKF9QeVRpbWVfdCBsaW1pdCkKKyAgICAgICAgICAgICg5MjIzMzcyMDM2ICogU0VDX1RPX05TLCA5MjIzMzcyMDM2LjApLAorICAgICAgICAgICAgKC05MjIzMzcyMDM2ICogU0VDX1RPX05TLCAtOTIyMzM3MjAzNi4wKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5hbm9zZWNvbmRzLCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShuYW5vc2Vjb25kcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzKQorCisgICAgZGVmIHRlc3RfdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1RpbWV2YWwKKyAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKKyAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAorICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgKDAsICgwLCAwKSksCisgICAgICAgICAgICAgICAgKDEwMDAsICgwLCAxKSksCisgICAgICAgICAgICAgICAgKC0xMDAwLCAoLTEsIDk5OTk5OSkpLAorCisgICAgICAgICAgICAgICAgIyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsICgyLCAwKSksCisgICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKKyAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKKyAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxMjM0NTY3MDAxLCAoMSwgMjM0NTY3KSwgRkxPT1IpLAorICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjgpLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzIpLCBGTE9PUiksCisgICAgICAgICAgICAoLTEyMzQ1NjcwMDEsICgtMiwgNzY1NDMzKSwgQ0VJTElORyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWV2YWwobnMsIHJuZCksIHR2KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihfdGVzdGNhcGksICdQeVRpbWVfQXNUaW1lc3BlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIF90ZXN0Y2FwaS5QeVRpbWVfQXNUaW1lc3BlYycpCisgICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNUaW1lc3BlYworICAgICAgICBmb3IgbnMsIHRzIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgKDEsICgwLCAxKSksCisgICAgICAgICAgICAoLTEsICgtMSwgOTk5OTk5OTk5KSksCisKKyAgICAgICAgICAgICMgc2Vjb25kcworICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsICgyLCAwKSksCisgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAorCisgICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEyMzQ1Njc4OTAsICgxLCAyMzQ1Njc4OTApKSwKKyAgICAgICAgICAgICgtMTIzNDU2Nzg5MCwgKC0yLCA3NjU0MzIxMTApKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1lc3BlYz10cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1lc3BlYyhucyksIHRzKQorCisgICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKKyAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcworICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAorICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCisKKyAgICAgICAgICAgICAgICAjIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCisgICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCisgICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCisgICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAorCisgICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKKyAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKKyAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCisKKyAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKKyAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKKyAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAorICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCisgICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKKworICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCisgICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKworICAgICAgICAgICAgICAgICMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKKworICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKKyAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORworICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAorICAgICAgICAgICAgIyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKKyAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKKyAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCisKKyAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAorICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAorICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQppbmRleCA5MThhMjk0Li4yZGIzYzFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCB0aW1lCiBmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgogCkBAIC04OSw4ICs4OCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCB0aW1laXQuVGltZXIsIHNldHVwPSdjb250aW51ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCB0aW1laXQuVGltZXIsIHNldHVwPSdmcm9tIHRpbWVpdCBpbXBvcnQgKicpCiAKLSAgICBmYWtlX3NldHVwID0gImltcG9ydCB0aW1laXQ7IHRpbWVpdC5fZmFrZV90aW1lci5zZXR1cCgpIgotICAgIGZha2Vfc3RtdCA9ICJpbXBvcnQgdGltZWl0OyB0aW1laXQuX2Zha2VfdGltZXIuaW5jKCkiCisgICAgZmFrZV9zZXR1cCA9ICJpbXBvcnQgdGltZWl0XG50aW1laXQuX2Zha2VfdGltZXIuc2V0dXAoKSIKKyAgICBmYWtlX3N0bXQgPSAiaW1wb3J0IHRpbWVpdFxudGltZWl0Ll9mYWtlX3RpbWVyLmluYygpIgogCiAgICAgZGVmIGZha2VfY2FsbGFibGVfc2V0dXAoc2VsZik6CiAgICAgICAgIHNlbGYuZmFrZV90aW1lci5zZXR1cCgpCkBAIC05OCw5ICs5NywxMCBAQAogICAgIGRlZiBmYWtlX2NhbGxhYmxlX3N0bXQoc2VsZik6CiAgICAgICAgIHNlbGYuZmFrZV90aW1lci5pbmMoKQogCi0gICAgZGVmIHRpbWVpdChzZWxmLCBzdG10LCBzZXR1cCwgbnVtYmVyPU5vbmUpOgorICAgIGRlZiB0aW1laXQoc2VsZiwgc3RtdCwgc2V0dXAsIG51bWJlcj1Ob25lLCBnbG9iYWxzPU5vbmUpOgogICAgICAgICBzZWxmLmZha2VfdGltZXIgPSBGYWtlVGltZXIoKQotICAgICAgICB0ID0gdGltZWl0LlRpbWVyKHN0bXQ9c3RtdCwgc2V0dXA9c2V0dXAsIHRpbWVyPXNlbGYuZmFrZV90aW1lcikKKyAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXN0bXQsIHNldHVwPXNldHVwLCB0aW1lcj1zZWxmLmZha2VfdGltZXIsCisgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKQogICAgICAgICBrd2FyZ3MgPSB7fQogICAgICAgICBpZiBudW1iZXIgaXMgTm9uZToKICAgICAgICAgICAgIG51bWJlciA9IERFRkFVTFRfTlVNQkVSCkBAIC0xNDIsNiArMTQyLDE3IEBACiAgICAgICAgICAgICAgICAgdGltZXI9RmFrZVRpbWVyKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVsdGFfdGltZSwgMCkKIAorICAgIGRlZiB0ZXN0X3RpbWVpdF9nbG9iYWxzX2FyZ3Moc2VsZik6CisgICAgICAgIGdsb2JhbCBfZ2xvYmFsX3RpbWVyCisgICAgICAgIF9nbG9iYWxfdGltZXIgPSBGYWtlVGltZXIoKQorICAgICAgICB0ID0gdGltZWl0LlRpbWVyKHN0bXQ9J19nbG9iYWxfdGltZXIuaW5jKCknLCB0aW1lcj1fZ2xvYmFsX3RpbWVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIHQudGltZWl0LCBudW1iZXI9MykKKyAgICAgICAgdGltZWl0LnRpbWVpdChzdG10PSdfZ2xvYmFsX3RpbWVyLmluYygpJywgdGltZXI9X2dsb2JhbF90aW1lciwKKyAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMoKSwgbnVtYmVyPTMpCisgICAgICAgIGxvY2FsX3RpbWVyID0gRmFrZVRpbWVyKCkKKyAgICAgICAgdGltZWl0LnRpbWVpdChzdG10PSdsb2NhbF90aW1lci5pbmMoKScsIHRpbWVyPWxvY2FsX3RpbWVyLAorICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9bG9jYWxzKCksIG51bWJlcj0zKQorCiAgICAgZGVmIHJlcGVhdChzZWxmLCBzdG10LCBzZXR1cCwgcmVwZWF0PU5vbmUsIG51bWJlcj1Ob25lKToKICAgICAgICAgc2VsZi5mYWtlX3RpbWVyID0gRmFrZVRpbWVyKCkKICAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXN0bXQsIHNldHVwPXNldHVwLCB0aW1lcj1zZWxmLmZha2VfdGltZXIpCkBAIC0yNjEsNiArMjcyLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIkN1c3RvbVNldHVwXG4iICogMyArCiAgICAgICAgICAgICAgICAgIjM1IGxvb3BzLCBiZXN0IG9mIDM6IDIgc2VjIHBlciBsb29wXG4iKQogCisgICAgZGVmIHRlc3RfbWFpbl9tdWx0aXBsZV9zZXR1cHMoc2VsZik6CisgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0yLjAsCisgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctbjM1JywgJy1zJywgJ2EgPSAiQ3VzdG9tU2V0dXAiJywgJy1zJywgJ3ByaW50KGEpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIkN1c3RvbVNldHVwXG4iICogMyArCisgICAgICAgICAgICAgICAgIjM1IGxvb3BzLCBiZXN0IG9mIDM6IDIgc2VjIHBlciBsb29wXG4iKQorCiAgICAgZGVmIHRlc3RfbWFpbl9maXhlZF9yZXBzKHNlbGYpOgogICAgICAgICBzID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9NjAuMCwgc3dpdGNoZXM9WyctcjknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAiMTAgbG9vcHMsIGJlc3Qgb2YgOTogNjAgc2VjIHBlciBsb29wXG4iKQpAQCAtMzA3LDYgKzMyNCwyNiBAQAogICAgICAgICAgICAgICAgIDEwMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDUwIHVzZWMgcGVyIGxvb3AKICAgICAgICAgICAgICIiIikpCiAKKyAgICBkZWYgdGVzdF9tYWluX3dpdGhfdGltZV91bml0KHNlbGYpOgorICAgICAgICB1bml0X3NlYyA9IHNlbGYucnVuX21haW4oc2Vjb25kc19wZXJfaW5jcmVtZW50PTAuMDAyLAorICAgICAgICAgICAgICAgIHN3aXRjaGVzPVsnLXUnLCAnc2VjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pdF9zZWMsCisgICAgICAgICAgICAgICAgIjEwMDAgbG9vcHMsIGJlc3Qgb2YgMzogMC4wMDIgc2VjIHBlciBsb29wXG4iKQorICAgICAgICB1bml0X21zZWMgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMiwKKyAgICAgICAgICAgICAgICBzd2l0Y2hlcz1bJy11JywgJ21zZWMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bml0X21zZWMsCisgICAgICAgICAgICAgICAgIjEwMDAgbG9vcHMsIGJlc3Qgb2YgMzogMiBtc2VjIHBlciBsb29wXG4iKQorICAgICAgICB1bml0X3VzZWMgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMiwKKyAgICAgICAgICAgICAgICBzd2l0Y2hlcz1bJy11JywgJ3VzZWMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bml0X3VzZWMsCisgICAgICAgICAgICAgICAgIjEwMDAgbG9vcHMsIGJlc3Qgb2YgMzogMmUrMDMgdXNlYyBwZXIgbG9vcFxuIikKKyAgICAgICAgIyBUZXN0IGludmFsaWQgdW5pdCBpbnB1dAorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycm9yX3N0cmluZ2lvOgorICAgICAgICAgICAgaW52YWxpZCA9IHNlbGYucnVuX21haW4oc2Vjb25kc19wZXJfaW5jcmVtZW50PTAuMDAyLAorICAgICAgICAgICAgICAgICAgICBzd2l0Y2hlcz1bJy11JywgJ3BhcnNlYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgdW5pdC4gUGxlYXNlIHNlbGVjdCB1c2VjLCBtc2VjLCBvciBzZWMuXG4iKQorCiAgICAgZGVmIHRlc3RfbWFpbl9leGNlcHRpb24oc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyb3Jfc3RyaW5naW86CiAgICAgICAgICAgICBzID0gc2VsZi5ydW5fbWFpbihzd2l0Y2hlcz1bJzEvMCddKQpAQCAtMzE4LDggKzM1NSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4Y19zdHJpbmcoZXJyb3Jfc3RyaW5naW8uZ2V0dmFsdWUoKSwgJ1plcm9EaXZpc2lvbkVycm9yJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RUaW1laXQpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZW91dC5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZW91dC5weQppbmRleCA3MDNjNDNhLi4zYzc1ZGNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lb3V0LnB5CkBAIC0yNDMsMTQgKzI0MywxNCBAQAogICAgIGRlZiB0ZXN0QWNjZXB0VGltZW91dChzZWxmKToKICAgICAgICAgIyBUZXN0IGFjY2VwdCgpIHRpbWVvdXQKICAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc2VsZi5zb2NrLCBzZWxmLmxvY2FsaG9zdCkKLSAgICAgICAgc2VsZi5zb2NrLmxpc3Rlbig1KQorICAgICAgICBzZWxmLnNvY2subGlzdGVuKCkKICAgICAgICAgc2VsZi5fc29ja19vcGVyYXRpb24oMSwgMS41LCAnYWNjZXB0JykKIAogICAgIGRlZiB0ZXN0U2VuZChzZWxmKToKICAgICAgICAgIyBUZXN0IHNlbmQoKSB0aW1lb3V0CiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzZXJ2OgogICAgICAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc2Vydiwgc2VsZi5sb2NhbGhvc3QpCi0gICAgICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3Qoc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgIyBTZW5kIGEgbG90IG9mIGRhdGEgaW4gb3JkZXIgdG8gYnlwYXNzIGJ1ZmZlcmluZyBpbiB0aGUgVENQIHN0YWNrLgogICAgICAgICAgICAgc2VsZi5fc29ja19vcGVyYXRpb24oMTAwLCAxLjUsICdzZW5kJywgYiJYIiAqIDIwMDAwMCkKQEAgLTI1OSw3ICsyNTksNyBAQAogICAgICAgICAjIFRlc3Qgc2VuZHRvKCkgdGltZW91dAogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgc2VydjoKICAgICAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNlcnYsIHNlbGYubG9jYWxob3N0KQotICAgICAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlcnYubGlzdGVuKCkKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KHNlcnYuZ2V0c29ja25hbWUoKSkKICAgICAgICAgICAgICMgVGhlIGFkZHJlc3MgYXJndW1lbnQgaXMgaWdub3JlZCBzaW5jZSB3ZSBhbHJlYWR5IGNvbm5lY3RlZC4KICAgICAgICAgICAgIHNlbGYuX3NvY2tfb3BlcmF0aW9uKDEwMCwgMS41LCAnc2VuZHRvJywgYiJYIiAqIDIwMDAwMCwKQEAgLTI2OSw3ICsyNjksNyBAQAogICAgICAgICAjIFRlc3Qgc2VuZGFsbCgpIHRpbWVvdXQKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNlcnY6CiAgICAgICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzZXJ2LCBzZWxmLmxvY2FsaG9zdCkKLSAgICAgICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgICAgICBzZXJ2Lmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChzZXJ2LmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICAjIFNlbmQgYSBsb3Qgb2YgZGF0YSBpbiBvcmRlciB0byBieXBhc3MgYnVmZmVyaW5nIGluIHRoZSBUQ1Agc3RhY2suCiAgICAgICAgICAgICBzZWxmLl9zb2NrX29wZXJhdGlvbigxMDAsIDEuNSwgJ3NlbmRhbGwnLCBiIlgiICogMjAwMDAwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aXgucHkgYi9MaWIvdGVzdC90ZXN0X3RpeC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmVhM2QwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF90aXgucHkKQEAgLTAsMCArMSwzMiBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBzeXMKKworIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3RraW50ZXIgbW9kdWxlIHdhc24ndCBidWlsdC4KK190a2ludGVyID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCisKKyMgU2tpcCB0ZXN0IGlmIHRrIGNhbm5vdCBiZSBpbml0aWFsaXplZC4KK3N1cHBvcnQucmVxdWlyZXMoJ2d1aScpCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgdGl4LCBUY2xFcnJvcgorCisKK2NsYXNzIFRlc3RUaXgodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnJvb3QgPSB0aXguVGsoKQorICAgICAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdUaXggc2hvdWxkIGFsd2F5cyBiZSBhdmFpbGFibGUgb24gV2luZG93cycpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaXggbm90IGF2YWlsYWJsZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5yb290LmRlc3Ryb3kpCisKKyAgICBkZWYgdGVzdF90aXhfYXZhaWxhYmxlKHNlbGYpOgorICAgICAgICAjIHRoaXMgdGVzdCBpcyBqdXN0IGhlcmUgdG8gbWFrZSBzZXRVcCBydW4KKyAgICAgICAgcGFzcworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RrLnB5IGIvTGliL3Rlc3QvdGVzdF90ay5weQppbmRleCA2MjcyOWYwLi40OGNlZmQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGsucHkKQEAgLTIsOSArMiw2IEBACiAjIFNraXAgdGVzdCBpZiBfdGtpbnRlciB3YXNuJ3QgYnVpbHQuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190a2ludGVyJykKIAotIyBNYWtlIHN1cmUgdGtpbnRlci5fZml4IHJ1bnMgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudAotc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCd0a2ludGVyJykKLQogIyBTa2lwIHRlc3QgaWYgdGsgY2Fubm90IGJlIGluaXRpYWxpemVkLgogc3VwcG9ydC5yZXF1aXJlcygnZ3VpJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKaW5kZXggNjUwNmI2Ny4uYjdjYTA4OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CkBAIC00NjYsNyArNDY2LDcgQEAKIAogTXVsdGlwbGljYXRpdmUKIAotICAgID4+PiBkdW1wX3Rva2VucygieCA9IDEvLzEqMS81KjEyJTB4MTIiKQorICAgID4+PiBkdW1wX3Rva2VucygieCA9IDEvLzEqMS81KjEyJTB4MTJANDIiKQogICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQpAQCAtNDgxLDYgKzQ4MSw4IEBACiAgICAgTlVNQkVSICAgICAnMTInICAgICAgICAgICgxLCAxMykgKDEsIDE1KQogICAgIE9QICAgICAgICAgJyUnICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKICAgICBOVU1CRVIgICAgICcweDEyJyAgICAgICAgKDEsIDE2KSAoMSwgMjApCisgICAgT1AgICAgICAgICAnQCcgICAgICAgICAgICgxLCAyMCkgKDEsIDIxKQorICAgIE5VTUJFUiAgICAgJzQyJyAgICAgICAgICAoMSwgMjEpICgxLCAyMykKIAogVW5hcnkKIApAQCAtNjQxLDYgKzY0MywyNzYgQEAKICAgICBOQU1FICAgICAgICdncsO8bicgICAgICAgICgyLCAwKSAoMiwgNCkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDIsIDUpICgyLCA2KQogICAgIFNUUklORyAgICAgIlUnZ3JlZW4nIiAgICAoMiwgNykgKDIsIDE1KQorCitBc3luYy9hd2FpdCBleHRlbnNpb246CisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jID0gMSIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgNikgKDEsIDcpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYSA9IChhc3luYyA9IDEpIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2EnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNSkgKDEsIDEwKQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMTEpICgxLCAxMikKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYygpIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJjbGFzcyBhc3luYyhCYXIpOnBhc3MiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnY2xhc3MnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDYpICgxLCAxMSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgTkFNRSAgICAgICAnQmFyJyAgICAgICAgICgxLCAxMikgKDEsIDE1KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgxLCAxNykgKDEsIDIxKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJjbGFzcyBhc3luYzpwYXNzIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2NsYXNzJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA2KSAoMSwgMTEpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxMSkgKDEsIDEyKQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTIpICgxLCAxNikKKworICAgID4+PiBkdW1wX3Rva2VucygiYXdhaXQgPSAxIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2F3YWl0JyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJmb28uYXN5bmMiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAwKSAoMSwgMykKKyAgICBPUCAgICAgICAgICcuJyAgICAgICAgICAgKDEsIDMpICgxLCA0KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNCkgKDEsIDkpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jIGZvciBhIGluIGI6IHBhc3MiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdmb3InICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2EnICAgICAgICAgICAoMSwgMTApICgxLCAxMSkKKyAgICBOQU1FICAgICAgICdpbicgICAgICAgICAgKDEsIDEyKSAoMSwgMTQpCisgICAgTkFNRSAgICAgICAnYicgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTYpICgxLCAxNykKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDE4KSAoMSwgMjIpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jIHdpdGggYSBhcyBiOiBwYXNzIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnd2l0aCcgICAgICAgICgxLCA2KSAoMSwgMTApCisgICAgTkFNRSAgICAgICAnYScgICAgICAgICAgICgxLCAxMSkgKDEsIDEyKQorICAgIE5BTUUgICAgICAgJ2FzJyAgICAgICAgICAoMSwgMTMpICgxLCAxNSkKKyAgICBOQU1FICAgICAgICdiJyAgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNykgKDEsIDE4KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTkpICgxLCAyMykKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMuZm9vIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnLicgICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDYpICgxLCA5KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luY1xcbiNjb21tZW50XFxuYXdhaXQiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBDT01NRU5UICAgICcjY29tbWVudCcgICAgKDIsIDApICgyLCA4KQorICAgIE5MICAgICAgICAgJ1xcbicgICAgICAgICAgKDIsIDgpICgyLCA5KQorICAgIE5BTUUgICAgICAgJ2F3YWl0JyAgICAgICAoMywgMCkgKDMsIDUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jXFxuLi4uXFxuYXdhaXQiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBPUCAgICAgICAgICcuLi4nICAgICAgICAgKDIsIDApICgyLCAzKQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDIsIDMpICgyLCA0KQorICAgIE5BTUUgICAgICAgJ2F3YWl0JyAgICAgICAoMywgMCkgKDMsIDUpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jXFxuYXdhaXQiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDIsIDApICgyLCA1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJmb28uYXN5bmMgKyAxIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMCkgKDEsIDMpCisgICAgT1AgICAgICAgICAnLicgICAgICAgICAgICgxLCAzKSAoMSwgNCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDQpICgxLCA5KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTApICgxLCAxMSkKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDEsIDEyKSAoMSwgMTMpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jIGRlZiBmb28oKTogcGFzcyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMSwgNikgKDEsIDkpCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAxMCkgKDEsIDEzKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDE0KSAoMSwgMTUpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTcpICgxLCAyMSkKKworICAgID4+PiBkdW1wX3Rva2VucygnJydhc3luYyBkZWYgZm9vKCk6CisgICAgLi4uICAgZGVmIGZvbyhhd2FpdCk6CisgICAgLi4uICAgICBhd2FpdCA9IDEKKyAgICAuLi4gICBpZiAxOgorICAgIC4uLiAgICAgYXdhaXQKKyAgICAuLi4gYXN5bmMgKz0gMQorICAgIC4uLiAnJycpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMSwgNikgKDEsIDkpCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAxMCkgKDEsIDEzKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDE0KSAoMSwgMTUpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgSU5ERU5UICAgICAnICAnICAgICAgICAgICgyLCAwKSAoMiwgMikKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDIsIDIpICgyLCA1KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMiwgNikgKDIsIDkpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgyLCA5KSAoMiwgMTApCisgICAgQVdBSVQgICAgICAnYXdhaXQnICAgICAgICgyLCAxMCkgKDIsIDE1KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMiwgMTUpICgyLCAxNikKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDIsIDE2KSAoMiwgMTcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMiwgMTcpICgyLCAxOCkKKyAgICBJTkRFTlQgICAgICcgICAgJyAgICAgICAgKDMsIDApICgzLCA0KQorICAgIEFXQUlUICAgICAgJ2F3YWl0JyAgICAgICAoMywgNCkgKDMsIDkpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgzLCAxMCkgKDMsIDExKQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMywgMTIpICgzLCAxMykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgzLCAxMykgKDMsIDE0KQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNCwgMikgKDQsIDIpCisgICAgTkFNRSAgICAgICAnaWYnICAgICAgICAgICg0LCAyKSAoNCwgNCkKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDQsIDUpICg0LCA2KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoNCwgNikgKDQsIDcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoNCwgNykgKDQsIDgpCisgICAgSU5ERU5UICAgICAnICAgICcgICAgICAgICg1LCAwKSAoNSwgNCkKKyAgICBBV0FJVCAgICAgICdhd2FpdCcgICAgICAgKDUsIDQpICg1LCA5KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDUsIDkpICg1LCAxMCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDYsIDApICg2LCAwKQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNiwgMCkgKDYsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICg2LCAwKSAoNiwgNSkKKyAgICBPUCAgICAgICAgICcrPScgICAgICAgICAgKDYsIDYpICg2LCA4KQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoNiwgOSkgKDYsIDEwKQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDYsIDEwKSAoNiwgMTEpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoJycnYXN5bmMgZGVmIGZvbygpOgorICAgIC4uLiAgIGFzeW5jIGZvciBpIGluIDE6IHBhc3MnJycpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMSwgNikgKDEsIDkpCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAxMCkgKDEsIDEzKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDE0KSAoMSwgMTUpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNSkgKDEsIDE2KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgSU5ERU5UICAgICAnICAnICAgICAgICAgICgyLCAwKSAoMiwgMikKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDIsIDIpICgyLCA3KQorICAgIE5BTUUgICAgICAgJ2ZvcicgICAgICAgICAoMiwgOCkgKDIsIDExKQorICAgIE5BTUUgICAgICAgJ2knICAgICAgICAgICAoMiwgMTIpICgyLCAxMykKKyAgICBOQU1FICAgICAgICdpbicgICAgICAgICAgKDIsIDE0KSAoMiwgMTYpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgyLCAxNykgKDIsIDE4KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMiwgMTgpICgyLCAxOSkKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDIsIDIwKSAoMiwgMjQpCisgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICgzLCAwKSAoMywgMCkKKworICAgID4+PiBkdW1wX3Rva2VucygnJydhc3luYyBkZWYgZm9vKGFzeW5jKTogYXdhaXQnJycpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMSwgNikgKDEsIDkpCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCAxMCkgKDEsIDEzKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDEsIDE0KSAoMSwgMTkpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxOSkgKDEsIDIwKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMjApICgxLCAyMSkKKyAgICBBV0FJVCAgICAgICdhd2FpdCcgICAgICAgKDEsIDIyKSAoMSwgMjcpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoJycnZGVmIGYoKToKKyAgICAuLi4KKyAgICAuLi4gICBkZWYgYmF6KCk6IHBhc3MKKyAgICAuLi4gICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAuLi4KKyAgICAuLi4gICBhd2FpdCA9IDInJycpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDApICgxLCAzKQorICAgIE5BTUUgICAgICAgJ2YnICAgICAgICAgICAoMSwgNCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCA1KSAoMSwgNikKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoMiwgMCkgKDIsIDEpCisgICAgSU5ERU5UICAgICAnICAnICAgICAgICAgICgzLCAwKSAoMywgMikKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDMsIDIpICgzLCA1KQorICAgIE5BTUUgICAgICAgJ2JheicgICAgICAgICAoMywgNikgKDMsIDkpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgzLCA5KSAoMywgMTApCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgzLCAxMCkgKDMsIDExKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMywgMTEpICgzLCAxMikKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDMsIDEzKSAoMywgMTcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMywgMTcpICgzLCAxOCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDQsIDIpICg0LCA3KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoNCwgOCkgKDQsIDExKQorICAgIE5BTUUgICAgICAgJ2JhcicgICAgICAgICAoNCwgMTIpICg0LCAxNSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDQsIDE1KSAoNCwgMTYpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICg0LCAxNikgKDQsIDE3KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoNCwgMTcpICg0LCAxOCkKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDQsIDE5KSAoNCwgMjMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoNCwgMjMpICg0LCAyNCkKKyAgICBOTCAgICAgICAgICdcXG4nICAgICAgICAgICg1LCAwKSAoNSwgMSkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDYsIDIpICg2LCA3KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoNiwgOCkgKDYsIDkpCisgICAgTlVNQkVSICAgICAnMicgICAgICAgICAgICg2LCAxMCkgKDYsIDExKQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNywgMCkgKDcsIDApCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoJycnYXN5bmMgZGVmIGYoKToKKyAgICAuLi4KKyAgICAuLi4gICBkZWYgYmF6KCk6IHBhc3MKKyAgICAuLi4gICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAuLi4KKyAgICAuLi4gICBhd2FpdCA9IDInJycpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMSwgNikgKDEsIDkpCisgICAgTkFNRSAgICAgICAnZicgICAgICAgICAgICgxLCAxMCkgKDEsIDExKQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgMTEpICgxLCAxMikKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDEyKSAoMSwgMTMpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDE0KSAoMSwgMTUpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoMiwgMCkgKDIsIDEpCisgICAgSU5ERU5UICAgICAnICAnICAgICAgICAgICgzLCAwKSAoMywgMikKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDMsIDIpICgzLCA1KQorICAgIE5BTUUgICAgICAgJ2JheicgICAgICAgICAoMywgNikgKDMsIDkpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgzLCA5KSAoMywgMTApCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgzLCAxMCkgKDMsIDExKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMywgMTEpICgzLCAxMikKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDMsIDEzKSAoMywgMTcpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMywgMTcpICgzLCAxOCkKKyAgICBBU1lOQyAgICAgICdhc3luYycgICAgICAgKDQsIDIpICg0LCA3KQorICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoNCwgOCkgKDQsIDExKQorICAgIE5BTUUgICAgICAgJ2JhcicgICAgICAgICAoNCwgMTIpICg0LCAxNSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDQsIDE1KSAoNCwgMTYpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICg0LCAxNikgKDQsIDE3KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoNCwgMTcpICg0LCAxOCkKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDQsIDE5KSAoNCwgMjMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoNCwgMjMpICg0LCAyNCkKKyAgICBOTCAgICAgICAgICdcXG4nICAgICAgICAgICg1LCAwKSAoNSwgMSkKKyAgICBBV0FJVCAgICAgICdhd2FpdCcgICAgICAgKDYsIDIpICg2LCA3KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoNiwgOCkgKDYsIDkpCisgICAgTlVNQkVSICAgICAnMicgICAgICAgICAgICg2LCAxMCkgKDYsIDExKQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoNywgMCkgKDcsIDApCiAiIiIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMTExLDYgKzEzODMsMTcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jb2RpbmdfdXNlZCwgZW5jb2RpbmcpCiAKKyAgICBkZWYgdGVzdF9vbmVsaW5lX2RlZnMoc2VsZik6CisgICAgICAgIGJ1ZiA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDUwMCk6CisgICAgICAgICAgICBidWYuYXBwZW5kKCdkZWYgaXtpfSgpOiByZXR1cm4ge2l9Jy5mb3JtYXQoaT1pKSkKKyAgICAgICAgYnVmLmFwcGVuZCgnT0snKQorICAgICAgICBidWYgPSAnXG4nLmpvaW4oYnVmKQorCisgICAgICAgICMgVGVzdCB0aGF0IDUwMCBjb25zZXF1ZW50LCBvbmUtbGluZSBkZWZzIGlzIE9LCisgICAgICAgIHRva3MgPSBsaXN0KHRva2VuaXplKEJ5dGVzSU8oYnVmLmVuY29kZSgndXRmLTgnKSkucmVhZGxpbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva3NbLTJdLnN0cmluZywgJ09LJykgIyBbLTFdIGlzIGFsd2F5cyBFTkRNQVJLRVIKKwogICAgIGRlZiBhc3NlcnRFeGFjdFR5cGVFcXVhbChzZWxmLCBvcHN0ciwgKm9wdHlwZXMpOgogICAgICAgICB0b2tlbnMgPSBsaXN0KHRva2VuaXplKEJ5dGVzSU8ob3BzdHIuZW5jb2RlKCd1dGYtOCcpKS5yZWFkbGluZSkpCiAgICAgICAgIG51bV9vcHR5cGVzID0gbGVuKG9wdHlwZXMpCkBAIC0xMTY1LDYgKzE0NDgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvLycsIHRva2VuLkRPVUJMRVNMQVNIKQogICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvLz0nLCB0b2tlbi5ET1VCTEVTTEFTSEVRVUFMKQogICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdAJywgdG9rZW4uQVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ0A9JywgdG9rZW4uQVRFUVVBTCkKIAogICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdhKioyK2IqKjI9PWMqKjInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUUsIHRva2VuLkRPVUJMRVNUQVIsIE5VTUJFUiwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9pMThuLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X2kxOG4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVhYThkZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9pMThuLnB5CkBAIC0wLDAgKzEsNjggQEAKKyIiIlRlc3RzIHRvIGNvdmVyIHRoZSBUb29scy9pMThuIHBhY2thZ2UiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHRvb2xzZGlyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdGVtcF9jd2QKKworY2xhc3MgVGVzdF9weWdldHRleHQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciB0aGUgcHlnZXR0ZXh0LnB5IHRvb2wiIiIKKworICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbih0b29sc2RpciwnaTE4bicsICdweWdldHRleHQucHknKQorCisgICAgZGVmIGdldF9oZWFkZXIoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIiB1dGlsaXR5OiByZXR1cm4gdGhlIGhlYWRlciBvZiBhIC5wbyBmaWxlIGFzIGEgZGljdGlvbmFyeSAiIiIKKyAgICAgICAgaGVhZGVycyA9IHt9CisgICAgICAgIGZvciBsaW5lIGluIGRhdGEuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBpZiBub3QgbGluZSBvciBsaW5lLnN0YXJ0c3dpdGgoKCcjJywgJ21zZ2lkJywnbXNnc3RyJykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgnIicpCisgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmUuc3BsaXQoJzonLDEpCisgICAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWwuc3RyaXAoKQorICAgICAgICByZXR1cm4gaGVhZGVycworCisgICAgZGVmIHRlc3RfaGVhZGVyKHNlbGYpOgorICAgICAgICAiIiJNYWtlIHN1cmUgdGhlIHJlcXVpcmVkIGZpZWxkcyBhcmUgaW4gdGhlIGhlYWRlciwgYWNjb3JkaW5nIHRvOgorICAgICAgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2V0dGV4dC9tYW51YWwvZ2V0dGV4dC5odG1sI0hlYWRlci1FbnRyeQorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCB0ZW1wX2N3ZChOb25lKSBhcyBjd2Q6CisgICAgICAgICAgICBhc3NlcnRfcHl0aG9uX29rKHNlbGYuc2NyaXB0KQorICAgICAgICAgICAgd2l0aCBvcGVuKCdtZXNzYWdlcy5wb3QnKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCisgICAgICAgICAgICBoZWFkZXIgPSBzZWxmLmdldF9oZWFkZXIoZGF0YSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiUHJvamVjdC1JZC1WZXJzaW9uIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiUE9ULUNyZWF0aW9uLURhdGUiLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJQTy1SZXZpc2lvbi1EYXRlIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiTGFzdC1UcmFuc2xhdG9yIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiTGFuZ3VhZ2UtVGVhbSIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIk1JTUUtVmVyc2lvbiIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkNvbnRlbnQtVHlwZSIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkNvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmciLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJHZW5lcmF0ZWQtQnkiLCBoZWFkZXIpCisKKyAgICAgICAgICAgICMgbm90IGNsZWFyIGlmIHRoZXNlIHNob3VsZCBiZSByZXF1aXJlZCBpbiBQT1QgKHRlbXBsYXRlKSBmaWxlcworICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SW4oIlJlcG9ydC1Nc2dpZC1CdWdzLVRvIiwgaGVhZGVyKQorICAgICAgICAgICAgI3NlbGYuYXNzZXJ0SW4oIkxhbmd1YWdlIiwgaGVhZGVyKQorCisgICAgICAgICAgICAjIlBsdXJhbC1Gb3JtcyIgaXMgb3B0aW9uYWwKKworCisgICAgZGVmIHRlc3RfUE9UX0NyZWF0aW9uX0RhdGUoc2VsZik6CisgICAgICAgICIiIiBNYXRjaCB0aGUgZGF0ZSBmb3JtYXQgZnJvbSB4Z2V0dGV4dCBmb3IgUE9ULUNyZWF0aW9uLURhdGUgIiIiCisgICAgICAgIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisgICAgICAgIHdpdGggdGVtcF9jd2QoTm9uZSkgYXMgY3dkOgorICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzZWxmLnNjcmlwdCkKKyAgICAgICAgICAgIHdpdGggb3BlbignbWVzc2FnZXMucG90JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgaGVhZGVyID0gc2VsZi5nZXRfaGVhZGVyKGRhdGEpCisgICAgICAgICAgICBjcmVhdGlvbkRhdGUgPSBoZWFkZXJbJ1BPVC1DcmVhdGlvbi1EYXRlJ10KKworICAgICAgICAgICAgIyBwZWVsIG9mZiB0aGUgZXNjYXBlZCBuZXdsaW5lIGF0IHRoZSBlbmQgb2Ygc3RyaW5nCisgICAgICAgICAgICBpZiBjcmVhdGlvbkRhdGUuZW5kc3dpdGgoJ1xcbicpOgorICAgICAgICAgICAgICAgIGNyZWF0aW9uRGF0ZSA9IGNyZWF0aW9uRGF0ZVs6LWxlbignXFxuJyldCisKKyAgICAgICAgICAgICMgVGhpcyB3aWxsIHJhaXNlIGlmIHRoZSBkYXRlIGZvcm1hdCBkb2VzIG5vdCBleGFjdGx5IG1hdGNoLgorICAgICAgICAgICAgZGF0ZXRpbWUuc3RycHRpbWUoY3JlYXRpb25EYXRlLCAnJVktJW0tJWQgJUg6JU0leicpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQppbmRleCA1OWVhMTQ5Li4xMzA1Mjk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBpbXBvcnRfdG9vbCwgc2tpcF9pZl9taXNzaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BpbmRlbnQucHkKaW5kZXggMTRhMGFhMi4uZTI5M2JjOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BpbmRlbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BpbmRlbnQucHkKQEAgLTYsNyArNiw3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRleHR3cmFwCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAKIGZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3JlaW5kZW50LnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3JlaW5kZW50LnB5CmluZGV4IDQ1Y2ViZjcuLmQ3YzIwZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcmVpbmRlbnQucHkKQEAgLTYsNyArNiw3IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IGVlMzM5ODYuLjAzZGZmODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtOSwxMiArOSwxMSBAQAogCiBmcm9tIHRlc3QudHJhY2VkbW9kdWxlcyBpbXBvcnQgdGVzdG1vZAogCi0KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKIAogZGVmIGZpeF9leHRfcHkoZmlsZW5hbWUpOgotICAgICIiIkdpdmVuIGEgLnB5Yy8ucHlvIGZpbGVuYW1lIGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSAucHkiIiIKLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoJy5weWMnLCAnLnB5bycpKToKKyAgICAiIiJHaXZlbiBhIC5weWMgZmlsZW5hbWUgY29udmVydHMgaXQgdG8gdGhlIGFwcHJvcHJpYXRlIC5weSIiIgorICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcucHljJyk6CiAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgIHJldHVybiBmaWxlbmFtZQogCkBAIC0yMjMsNiArMjIyLDExIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTAsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MSkKICAgICAgICAgc2VsZi5maWxlbW9kID0gbXlfZmlsZV9hbmRfbW9kbmFtZSgpCisgICAgICAgIHNlbGYuX3NhdmVkX3RyYWNlZnVuYyA9IHN5cy5nZXR0cmFjZSgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3NhdmVkX3RyYWNlZnVuYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLl9zYXZlZF90cmFjZWZ1bmMpCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfY2FsbGVyKHNlbGYpOgogICAgICAgICBzZWxmLnRyYWNlci5ydW5mdW5jKHRyYWNlZF9mdW5jX3NpbXBsZV9jYWxsZXIsIDEpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5CmluZGV4IGQ2YzlkZjIuLjAzNjI1MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5CkBAIC0xLDE1ICsxLDI0IEBACiAiIiJUZXN0IGNhc2VzIGZvciB0cmFjZWJhY2sgbW9kdWxlIiIiCiAKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCByZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgRXJyb3IsIGNhcHR1cmVkX291dHB1dAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCBjcHl0aG9uX29ubHkKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgRXJyb3IsIGNhcHR1cmVkX291dHB1dCwgdW5saW5rLCBjcHl0aG9uX29ubHkKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2ltcG9ydCB0ZXh0d3JhcAogCiBpbXBvcnQgdHJhY2ViYWNrCiAKIAordGVzdF9jb2RlID0gbmFtZWR0dXBsZSgnY29kZScsIFsnY29fZmlsZW5hbWUnLCAnY29fbmFtZSddKQordGVzdF9mcmFtZSA9IG5hbWVkdHVwbGUoJ2ZyYW1lJywgWydmX2NvZGUnLCAnZl9nbG9iYWxzJywgJ2ZfbG9jYWxzJ10pCit0ZXN0X3RiID0gbmFtZWR0dXBsZSgndGInLCBbJ3RiX2ZyYW1lJywgJ3RiX2xpbmVubycsICd0Yl9uZXh0J10pCisKKwogY2xhc3MgU3ludGF4VHJhY2ViYWNrQ2FzZXModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgRm9yIG5vdywgYSB2ZXJ5IG1pbmltYWwgc2V0IG9mIHRlc3RzLiAgSSB3YW50IHRvIGJlIHN1cmUgdGhhdAogICAgICMgZm9ybWF0dGluZyBvZiBTeW50YXhFcnJvcnMgd29ya3MgYmFzZWQgb24gY2hhbmdlcyBmb3IgMi4xLgpAQCAtOTIsOSArMTAxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXJyKSwgMSkKICAgICAgICAgc3RyX3ZhbHVlID0gJzx1bnByaW50YWJsZSAlcyBvYmplY3Q+JyAlIFguX19uYW1lX18KICAgICAgICAgaWYgWC5fX21vZHVsZV9fIGluICgnX19tYWluX18nLCAnYnVpbHRpbnMnKToKLSAgICAgICAgICAgIHN0cl9uYW1lID0gWC5fX25hbWVfXworICAgICAgICAgICAgc3RyX25hbWUgPSBYLl9fcXVhbG5hbWVfXwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RyX25hbWUgPSAnLicuam9pbihbWC5fX21vZHVsZV9fLCBYLl9fbmFtZV9fXSkKKyAgICAgICAgICAgIHN0cl9uYW1lID0gJy4nLmpvaW4oW1guX19tb2R1bGVfXywgWC5fX3F1YWxuYW1lX19dKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyclswXSwgIiVzOiAlc1xuIiAlIChzdHJfbmFtZSwgc3RyX3ZhbHVlKSkKIAogICAgIGRlZiB0ZXN0X3dpdGhvdXRfZXhjZXB0aW9uKHNlbGYpOgpAQCAtMTY5LDYgKzE3OCw0NCBAQAogICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKICAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKIAorICAgIGRlZiB0ZXN0X3ByaW50X3RyYWNlYmFja19hdF9leGl0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMjU5OTogRW5zdXJlIHRoYXQgaXQgaXMgcG9zc2libGUgdG8gdXNlIHRoZSB0cmFjZWJhY2sgbW9kdWxlCisgICAgICAgICMgdG8gZGlzcGxheSBhbiBleGNlcHRpb24gYXQgUHl0aG9uIGV4aXQKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKworICAgICAgICAgICAgY2xhc3MgUHJpbnRFeGNlcHRpb25BdEV4aXQob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSAxIC8gMAorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICAgICAgICAgICAgICAjIHNlbGYuZXhjX2luZm9bMV0gKHRyYWNlYmFjaykgY29udGFpbnMgZnJhbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBleHBsaWNpdGx5IGNsZWFyIHRoZSByZWZlcmVuY2UgdG8gc2VsZiBpbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgIyBmcmFtZSB0byBicmVhayBhIHJlZmVyZW5jZSBjeWNsZQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiA9IE5vbmUKKworICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKCpzZWxmLmV4Y19pbmZvKQorCisgICAgICAgICAgICAjIEtlZXAgYSByZWZlcmVuY2UgaW4gdGhlIG1vZHVsZSBuYW1lc3BhY2UgdG8gY2FsbCB0aGUgZGVzdHJ1Y3RvcgorICAgICAgICAgICAgIyB3aGVuIHRoZSBtb2R1bGUgaXMgdW5sb2FkZWQKKyAgICAgICAgICAgIG9iaiA9IFByaW50RXhjZXB0aW9uQXRFeGl0KCkKKyAgICAgICAgIiIiKQorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisgICAgICAgIGV4cGVjdGVkID0gW2InVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicsCisgICAgICAgICAgICAgICAgICAgIGInICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgOCwgaW4gX19pbml0X18nLAorICAgICAgICAgICAgICAgICAgICBiJ1plcm9EaXZpc2lvbkVycm9yOiBkaXZpc2lvbiBieSB6ZXJvJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuc3BsaXRsaW5lcygpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3ByaW50X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKAorICAgICAgICAgICAgRXhjZXB0aW9uLCBFeGNlcHRpb24oInByb2plY3RvciIpLCBOb25lLCBmaWxlPW91dHB1dAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LmdldHZhbHVlKCksICJFeGNlcHRpb246IHByb2plY3RvclxuIikKKwogCiBjbGFzcyBUcmFjZWJhY2tGb3JtYXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTQzOSw2ICs0ODYsMTI2IEBACiAgICAgICAgIHJldHVybiBzLmdldHZhbHVlKCkKIAogCitjbGFzcyBMaW1pdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICcnJyBUZXN0cyBmb3IgbGltaXQgYXJndW1lbnQuCisgICAgICAgIEl0J3MgZW5vdWdoIHRvIHRlc3QgZXh0YWN0X3RiLCBleHRyYWN0X3N0YWNrIGFuZCBmb3JtYXRfZXhjZXB0aW9uICcnJworCisgICAgZGVmIGxhc3RfcmFpc2VzMShzZWxmKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdMYXN0IHJhaXNlZCcpCisKKyAgICBkZWYgbGFzdF9yYWlzZXMyKHNlbGYpOgorICAgICAgICBzZWxmLmxhc3RfcmFpc2VzMSgpCisKKyAgICBkZWYgbGFzdF9yYWlzZXMzKHNlbGYpOgorICAgICAgICBzZWxmLmxhc3RfcmFpc2VzMigpCisKKyAgICBkZWYgbGFzdF9yYWlzZXM0KHNlbGYpOgorICAgICAgICBzZWxmLmxhc3RfcmFpc2VzMygpCisKKyAgICBkZWYgbGFzdF9yYWlzZXM1KHNlbGYpOgorICAgICAgICBzZWxmLmxhc3RfcmFpc2VzNCgpCisKKyAgICBkZWYgbGFzdF9yZXR1cm5zX2ZyYW1lMShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5fZ2V0ZnJhbWUoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfcmV0dXJuc19mcmFtZTEoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfcmV0dXJuc19mcmFtZTIoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfcmV0dXJuc19mcmFtZTMoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmxhc3RfcmV0dXJuc19mcmFtZTQoKQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF9zdGFjayhzZWxmKToKKyAgICAgICAgZnJhbWUgPSBzZWxmLmxhc3RfcmV0dXJuc19mcmFtZTUoKQorICAgICAgICBkZWYgZXh0cmFjdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soZnJhbWUsICoqa3dhcmdzKQorICAgICAgICBkZWYgYXNzZXJ0RXF1YWxFeGNlcHQoYWN0dWFsLCBleHBlY3RlZCwgaWdub3JlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzppZ25vcmVdLCBleHBlY3RlZFs6aWdub3JlXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsW2lnbm9yZSsxOl0sIGV4cGVjdGVkW2lnbm9yZSsxOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWwpLCBsZW4oZXhwZWN0ZWQpKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCAxMDAwKToKKyAgICAgICAgICAgIG5vbGltID0gZXh0cmFjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKG5vbGltKSwgNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0yKSwgbm9saW1bLTI6XSkKKyAgICAgICAgICAgIGFzc2VydEVxdWFsRXhjZXB0KGV4dHJhY3QobGltaXQ9MTAwKSwgbm9saW1bLTEwMDpdLCAtNS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0yKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgYXNzZXJ0RXF1YWxFeGNlcHQoZXh0cmFjdChsaW1pdD0tMTAwKSwgbm9saW1bOjEwMF0sIGxlbihub2xpbSktNS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTApLCBbXSkKKyAgICAgICAgICAgIGRlbCBzeXMudHJhY2ViYWNrbGltaXQKKyAgICAgICAgICAgIGFzc2VydEVxdWFsRXhjZXB0KGV4dHJhY3QoKSwgbm9saW0sIC01LTEpCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW1bLTI6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0zKSwgbm9saW1bLTM6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMyksIG5vbGltWzozXSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBbXSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IC0xCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3RiKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmxhc3RfcmFpc2VzNSgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgIGRlZiBleHRyYWN0KCoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiB0cmFjZWJhY2suZXh0cmFjdF90Yih0YiwgKiprd2FyZ3MpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMsICd0cmFjZWJhY2tsaW1pdCcsIDEwMDApOgorICAgICAgICAgICAgbm9saW0gPSBleHRyYWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5vbGltKSwgNSsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTIpLCBub2xpbVs6Ml0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MTApLCBub2xpbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMiksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTEwKSwgbm9saW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MCksIFtdKQorICAgICAgICAgICAgZGVsIHN5cy50cmFjZWJhY2tsaW1pdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIG5vbGltKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0zKSwgbm9saW1bOjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0zKSwgbm9saW1bLTM6XSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBbXSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IC0xCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmxhc3RfcmFpc2VzNSgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICMgWzE6LTFdIHRvIGV4Y2x1ZGUgIlRyYWNlYmFjayAoLi4uKSIgaGVhZGVyIGFuZAorICAgICAgICAjIGV4Y2VwdGlvbiB0eXBlIGFuZCB2YWx1ZQorICAgICAgICBkZWYgZXh0cmFjdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIsICoqa3dhcmdzKVsxOi0xXQorCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCAxMDAwKToKKyAgICAgICAgICAgIG5vbGltID0gZXh0cmFjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihub2xpbSksIDUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0yKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTEwKSwgbm9saW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTIpLCBub2xpbVstMjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTApLCBbXSkKKyAgICAgICAgICAgIGRlbCBzeXMudHJhY2ViYWNrbGltaXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbVs6Ml0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWzozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisKIGNsYXNzIE1pc2NUcmFjZWJhY2tDYXNlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIwogICAgICMgQ2hlY2sgbm9uLXByaW50aW5nIGZ1bmN0aW9ucyBpbiB0cmFjZWJhY2sgbW9kdWxlCkBAIC00NzMsMTQgKzY0MCwyNzYgQEAKICAgICAgICAgICAgIHJldHVybiB0cmFjZWJhY2suZXh0cmFjdF9zdGFjaygpCiAgICAgICAgIHJlc3VsdCA9IGV4dHJhY3QoKQogICAgICAgICBsaW5lbm8gPSBleHRyYWN0Ll9fY29kZV9fLmNvX2ZpcnN0bGluZW5vCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Wy0yOl0sIFsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbdHVwbGUoeCkgZm9yIHggaW4gcmVzdWx0Wy0yOl1dLCBbCiAgICAgICAgICAgICAoX19maWxlX18sIGxpbmVubysyLCAndGVzdF9leHRyYWN0X3N0YWNrJywgJ3Jlc3VsdCA9IGV4dHJhY3QoKScpLAogICAgICAgICAgICAgKF9fZmlsZV9fLCBsaW5lbm8rMSwgJ2V4dHJhY3QnLCAncmV0dXJuIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKCknKSwKLSAgICAgICAgXSkKKyAgICAgICAgICAgIF0pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChfX25hbWVfXykKK2NsYXNzIFRlc3RGcmFtZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZSgiZiIsIGdsb2JhbHMoKSkKKyAgICAgICAgZiA9IHRyYWNlYmFjay5GcmFtZVN1bW1hcnkoImYiLCAxLCAiZHVtbXkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKCJmIiwgMSwgImR1bW15IiwgJyIiIlRlc3QgY2FzZXMgZm9yIHRyYWNlYmFjayBtb2R1bGUiIiInKSwKKyAgICAgICAgICAgIHR1cGxlKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGYubG9jYWxzKQorCisgICAgZGVmIHRlc3RfbGF6eV9saW5lcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBmID0gdHJhY2ViYWNrLkZyYW1lU3VtbWFyeSgiZiIsIDEsICJkdW1teSIsIGxvb2t1cF9saW5lPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGYuX2xpbmUpCisgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoImYiLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAnIiIiVGVzdCBjYXNlcyBmb3IgdHJhY2ViYWNrIG1vZHVsZSIiIicsCisgICAgICAgICAgICBmLmxpbmUpCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9saW5lKHNlbGYpOgorICAgICAgICBmID0gdHJhY2ViYWNrLkZyYW1lU3VtbWFyeSgiZiIsIDEsICJkdW1teSIsIGxpbmU9ImxpbmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJsaW5lIiwgZi5saW5lKQorCisKK2NsYXNzIFRlc3RTdGFjayh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF93YWxrX3N0YWNrKHNlbGYpOgorICAgICAgICBzID0gbGlzdCh0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihzKSwgMTApCisKKyAgICBkZWYgdGVzdF93YWxrX3RiKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIF8sIF8sIHRiID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgcyA9IGxpc3QodHJhY2ViYWNrLndhbGtfdGIodGIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2soc2VsZik6CisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QodHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzLCB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5KQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF9zdGFja19saW1pdChzZWxmKToKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCh0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSwgbGltaXQ9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDUpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3N0YWNrX2xvb2t1cF9saW5lcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgTm9uZSwgTm9uZSkKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdChpdGVyKFsoZiwgNildKSwgbG9va3VwX2xpbmVzPVRydWUpCisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdLmxpbmUsICJpbXBvcnQgc3lzIikKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2t1cF9kZWZlcnJlZF9sb29rdXBfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBOb25lLCBOb25lKQorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KGl0ZXIoWyhmLCA2KV0pLCBsb29rdXBfbGluZXM9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIGxpbmVjYWNoZS5jYWNoZSkKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0ubGluZSwgImltcG9ydCBzeXMiKQorCisgICAgZGVmIHRlc3RfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoWygnZm9vLnB5JywgMSwgJ2ZyZWQnLCAnbGluZScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsnICBGaWxlICJmb28ucHkiLCBsaW5lIDEsIGluIGZyZWRcbiAgICBsaW5lXG4nXSwKKyAgICAgICAgICAgIHMuZm9ybWF0KCkpCisKKyAgICBkZWYgdGVzdF9mcm9tX2xpc3RfZWRpdGVkX3N0YWNrKHNlbGYpOgorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoWygnZm9vLnB5JywgMSwgJ2ZyZWQnLCAnbGluZScpXSkKKyAgICAgICAgc1swXSA9ICgnZm9vLnB5JywgMiwgJ2ZyZWQnLCAnbGluZScpCisgICAgICAgIHMyID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mcm9tX2xpc3QocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsnICBGaWxlICJmb28ucHkiLCBsaW5lIDIsIGluIGZyZWRcbiAgICBsaW5lXG4nXSwKKyAgICAgICAgICAgIHMyLmZvcm1hdCgpKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X3Ntb2tlKHNlbGYpOgorICAgICAgICAjIEZvciBkZXRhaWxlZCB0ZXN0cyBzZWUgdGhlIGZvcm1hdF9saXN0IHRlc3RzLCB3aGljaCBjb25zdW1lIHRoZSBzYW1lCisgICAgICAgICMgY29kZS4KKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KFsoJ2Zvby5weScsIDEsICdmcmVkJywgJ2xpbmUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiZm9vLnB5IiwgbGluZSAxLCBpbiBmcmVkXG4gICAgbGluZVxuJ10sCisgICAgICAgICAgICBzLmZvcm1hdCgpKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgZ2xvYmFscygpLCB7J3NvbWV0aGluZyc6IDF9KQorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KGl0ZXIoWyhmLCA2KV0pLCBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0ubG9jYWxzLCB7J3NvbWV0aGluZyc6ICcxJ30pCisKKyAgICBkZWYgdGVzdF9ub19sb2NhbHMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBnbG9iYWxzKCksIHsnc29tZXRoaW5nJzogMX0pCisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoaXRlcihbKGYsIDYpXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXS5sb2NhbHMsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfbG9jYWxzKHNlbGYpOgorICAgICAgICBkZWYgc29tZV9pbm5lcihrLCB2KToKKyAgICAgICAgICAgIGEgPSAxCisgICAgICAgICAgICBiID0gMgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSwgbGltaXQ9MSkKKyAgICAgICAgcyA9IHNvbWVfaW5uZXIoMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsnICBGaWxlICIlcyIsIGxpbmUgJWQsIGluIHNvbWVfaW5uZXJcbicKKyAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay53YWxrX3N0YWNrKE5vbmUpLCBjYXB0dXJlX2xvY2Fscz1UcnVlLCBsaW1pdD0xKVxuJworICAgICAgICAgICAgICcgICAgYSA9IDFcbicKKyAgICAgICAgICAgICAnICAgIGIgPSAyXG4nCisgICAgICAgICAgICAgJyAgICBrID0gM1xuJworICAgICAgICAgICAgICcgICAgdiA9IDRcbicgJSAoX19maWxlX18sIHNvbWVfaW5uZXIuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyA0KQorICAgICAgICAgICAgXSwgcy5mb3JtYXQoKSkKKworY2xhc3MgVGVzdFRyYWNlYmFja0V4Y2VwdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zbW9rZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKCpleGNfaW5mbykKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2luZm9bMF0sIGV4Yy5leGNfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjX2luZm9bMV0pLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2Zyb21fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAjIENoZWNrIGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgYWNjZXB0ZWQuCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIDEvMAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb28oKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSwgbGltaXQ9MSwgbG9va3VwX2xpbmVzPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPVRydWUpCisgICAgICAgICAgICBzZWxmLmV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24uZnJvbV9leGNlcHRpb24oCisgICAgICAgICAgICAgICAgZSwgbGltaXQ9MSwgbG9va3VwX2xpbmVzPUZhbHNlLCBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICBleHBlY3RlZF9zdGFjayA9IHNlbGYuZXhwZWN0ZWRfc3RhY2sKKyAgICAgICAgZXhjID0gc2VsZi5leGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2luZm9bMF0sIGV4Yy5leGNfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjX2luZm9bMV0pLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2NhdXNlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGV4Y19pbmZvX2NvbnRleHQgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgIGV4Y19jb250ZXh0ID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm9fY29udGV4dCkKKyAgICAgICAgICAgICAgICBjYXVzZSA9IEV4Y2VwdGlvbigiY2F1c2UiKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidWggb2giKSBmcm9tIGNhdXNlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKCpleGNfaW5mbykKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSkKKyAgICAgICAgZXhjX2NhdXNlID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbihFeGNlcHRpb24sIGNhdXNlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19jYXVzZSwgZXhjLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfY29udGV4dCwgZXhjLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGV4Y19pbmZvX2NvbnRleHQgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgIGV4Y19jb250ZXh0ID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm9fY29udGV4dCkKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInVoIG9oIikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvKQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhY2sgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLndhbGtfdGIoZXhjX2luZm9bMl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGV4Yy5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2NvbnRleHQsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2luZm9bMF0sIGV4Yy5leGNfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXhjX2luZm9bMV0pLCBzdHIoZXhjKSkKKworICAgIGRlZiB0ZXN0X2xpbWl0KHNlbGYpOgorICAgICAgICBkZWYgcmVjdXJzZShuKToKKyAgICAgICAgICAgIGlmIG46CisgICAgICAgICAgICAgICAgcmVjdXJzZShuLTEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWN1cnNlKDEwKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm8sIGxpbWl0PTUpCisgICAgICAgICAgICBleHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSksIGxpbWl0PTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhY2ssIGV4Yy5zdGFjaykKKworICAgIGRlZiB0ZXN0X2xvb2t1cF9saW5lcyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBlID0gRXhjZXB0aW9uKCJ1aCBvaCIpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgTm9uZSwgTm9uZSkKKyAgICAgICAgdGIgPSB0ZXN0X3RiKGYsIDYsIE5vbmUpCisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBlLCB0YiwgbG9va3VwX2xpbmVzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBsaW5lY2FjaGUuY2FjaGUpCisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuc3RhY2tbMF0ubGluZSwgImltcG9ydCBzeXMiKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGUgPSBFeGNlcHRpb24oInVoIG9oIikKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBnbG9iYWxzKCksIHsnc29tZXRoaW5nJzogMSwgJ290aGVyJzogJ3N0cmluZyd9KQorICAgICAgICB0YiA9IHRlc3RfdGIoZiwgNiwgTm9uZSkKKyAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIEV4Y2VwdGlvbiwgZSwgdGIsIGNhcHR1cmVfbG9jYWxzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBleGMuc3RhY2tbMF0ubG9jYWxzLCB7J3NvbWV0aGluZyc6ICcxJywgJ290aGVyJzogIidzdHJpbmcnIn0pCisKKyAgICBkZWYgdGVzdF9ub19sb2NhbHMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgZSA9IEV4Y2VwdGlvbigidWggb2giKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIGdsb2JhbHMoKSwgeydzb21ldGhpbmcnOiAxfSkKKyAgICAgICAgdGIgPSB0ZXN0X3RiKGYsIDYsIE5vbmUpCisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBlLCB0YikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuc3RhY2tbMF0ubG9jYWxzLCBOb25lKQorCisgICAgZGVmIHRlc3RfdHJhY2ViYWNrX2hlYWRlcihzZWxmKToKKyAgICAgICAgIyBkbyBub3QgcHJpbnQgYSB0cmFjZWJhY2sgaGVhZGVyIGlmIGV4Y190cmFjZWJhY2sgaXMgTm9uZQorICAgICAgICAjIHNlZSBpc3N1ZSAjMjQ2OTUKKyAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbihFeGNlcHRpb24sIEV4Y2VwdGlvbigiaGF2ZW4iKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGV4Yy5mb3JtYXQoKSksIFsiRXhjZXB0aW9uOiBoYXZlblxuIl0pCisKKworY2xhc3MgTWlzY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IHNldCgpCisgICAgICAgIGJsYWNrbGlzdCA9IHsncHJpbnRfbGlzdCd9CisgICAgICAgIGZvciBuYW1lIGluIGRpcih0cmFjZWJhY2spOgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgb3IgbmFtZSBpbiBibGFja2xpc3Q6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG1vZHVsZV9vYmplY3QgPSBnZXRhdHRyKHRyYWNlYmFjaywgbmFtZSkKKyAgICAgICAgICAgIGlmIGdldGF0dHIobW9kdWxlX29iamVjdCwgJ19fbW9kdWxlX18nLCBOb25lKSA9PSAndHJhY2ViYWNrJzoKKyAgICAgICAgICAgICAgICBleHBlY3RlZC5hZGQobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKHRyYWNlYmFjay5fX2FsbF9fLCBleHBlY3RlZCkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQppbmRleCA0OGNjYWIyLi5mNjVlMzYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKQEAgLTQsOCArNCw5IEBACiBpbXBvcnQgdHJhY2VtYWxsb2MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQotZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyLCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KQorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNjYwLDExICs2NjEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2FiY2RkJywgJ2EqYyplJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYWJjYmRlZmVmJywgJ2EqYmQqZWcnKSkKIAotICAgICAgICAjIHJlcGxhY2UgLnB5YyBhbmQgLnB5byBzdWZmaXggd2l0aCAucHkKKyAgICAgICAgIyByZXBsYWNlIC5weWMgc3VmZml4IHdpdGggLnB5CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5YycsICdhLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5bycsICdhLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5JywgJ2EucHljJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5JywgJ2EucHlvJykpCiAKICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgIyBjYXNlIGluc2Vuc2l0aXZlCkBAIC02NzIsMTggKzY3MSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2FCY0RlJywgJ0FiKmRFJykpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5YycsICdhLlBZJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5QWU8nLCAnYS5weScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EucHknLCAnYS5QWUMnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLlBZJywgJ2EucHlvJykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGNhc2Ugc2Vuc2l0aXZlCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2FCQycsICdBQmMnKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYUJjRGUnLCAnQWIqZEUnKSkKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLnB5YycsICdhLlBZJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EuUFlPJywgJ2EucHknKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYS5weScsICdhLlBZQycpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLlBZJywgJ2EucHlvJykpCiAKICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgIyBub3JtYWxpemUgYWx0ZXJuYXRlIHNlcGFyYXRvciAiLyIgdG8gdGhlIHN0YW5kYXJkIHNlcGFyYXRvciAiXCIKQEAgLTY5OCw2ICs2OTMsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKHInYS9iXGMnLCByJ2FcYi9jJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2gocidhL2IvYycsIHInYVxiXGMnKSkKIAorICAgICAgICAjIGFzIG9mIDMuNSwgLnB5byBpcyBubyBsb25nZXIgbXVuZ2VkIHRvIC5weQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EucHlvJywgJ2EucHknKSkKKwogICAgIGRlZiB0ZXN0X2ZpbHRlcl9tYXRjaF90cmFjZShzZWxmKToKICAgICAgICAgdDEgPSAoKCJhLnB5IiwgMiksICgiYi5weSIsIDMpKQogICAgICAgICB0MiA9ICgoImIucHkiLCA0KSwgKCJiLnB5IiwgNSkpCkBAIC03NTUsNyArNzUzLDcgQEAKICAgICAgICAgc3Rkb3V0ID0gc3Rkb3V0LnJzdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiJ0ZhbHNlJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSwKKyAgICBAdW5pdHRlc3Quc2tpcElmKGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHJ1biAtRSB0ZXN0cyB3aGVuIFBZVEhPTiBlbnYgdmFycyBhcmUgcmVxdWlyZWQuJykKICAgICBkZWYgdGVzdF9lbnZfdmFyX2lnbm9yZWRfd2l0aF9FKHNlbGYpOgogICAgICAgICAiIiJQWVRIT04qIGVudmlyb25tZW50IHZhcmlhYmxlcyBtdXN0IGJlIGlnbm9yZWQgd2hlbiAtRSBpcyBwcmVzZW50LiIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weSBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKaW5kZXggZmNkZWRhYy4uNDkwZTcyMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CkBAIC01LDEyICs1LDEwIEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIF90a2ludGVyIHdhc24ndCBidWlsdC4KIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQogCi0jIE1ha2Ugc3VyZSB0a2ludGVyLl9maXggcnVucyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50Ci10a2ludGVyID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCd0a2ludGVyJykKLQogIyBTa2lwIHRlc3QgaWYgdGsgY2Fubm90IGJlIGluaXRpYWxpemVkLgogc3VwcG9ydC5yZXF1aXJlcygnZ3VpJykKIAoraW1wb3J0IHRraW50ZXIKIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiBmcm9tIHRraW50ZXIgaW1wb3J0IHR0awogZnJvbSB0a2ludGVyLnRlc3QgaW1wb3J0IHJ1bnRrdGVzdHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggMWNmZWIxNS4uNTY2ZmM5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKQEAgLTQsOSArNCw2IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIF90a2ludGVyIGRvZXMgbm90IGV4aXN0Lgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgndGtpbnRlcicpCi0KIGZyb20gdGtpbnRlci50ZXN0IGltcG9ydCBydW50a3Rlc3RzCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkgYi9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CmluZGV4IDUxODc1YTEuLmZiMTEzYWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQpAQCAtNiw2ICs2LDExIEBACiBjbGFzcyBUdXBsZVRlc3Qoc2VxX3Rlc3RzLkNvbW1vblRlc3QpOgogICAgIHR5cGUydGVzdCA9IHR1cGxlCiAKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2Vycm9yKHNlbGYpOgorICAgICAgICBtc2cgPSAidHVwbGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgICgpWydhJ10KKwogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9ycyhzZWxmKToKICAgICAgICAgc3VwZXIoKS50ZXN0X2NvbnN0cnVjdG9ycygpCiAgICAgICAgICMgY2FsbGluZyBidWlsdC1pbiB0eXBlcyB3aXRob3V0IGFyZ3VtZW50IG11c3QgcmV0dXJuIGVtcHR5CkBAIC0yMDMsOCArMjA4LDEzIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIFszLF0gKyBUKCgxLDIpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVHVwbGVUZXN0KQorICAgIGRlZiB0ZXN0X2xleGljb2dyYXBoaWNfb3JkZXJpbmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgMjExMDAKKyAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAyXSkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAyLCAwXSkKKyAgICAgICAgYyA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhiLCBjKQogCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZWNoZWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZWNoZWNrcy5weQppbmRleCAxN2NkNWQzLi5hMGU2MTdiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R5cGVjaGVja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlY2hlY2tzLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgX19pbnN0YW5jZWNoZWNrX18gYW5kIF9fc3ViY2xhc3NjaGVja19fLiIiIgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIEFCQyh0eXBlKToKQEAgLTY4LDkgKzY3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpc2luc3RhbmNlKDQyLCAoU3ViSW50LCkpLCBGYWxzZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVHlwZUNoZWNrc1Rlc3QpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDg0OWNiYTkuLjVlNzQxMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtMSwxMiArMSwxNCBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCA2LCBidWlsdC1pbiB0eXBlcwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBydW5fd2l0aF9sb2NhbGUKLWltcG9ydCBjb2xsZWN0aW9ucworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl93aXRoX2xvY2FsZQoraW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IGluc3BlY3QKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwotaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QubW9jaworaW1wb3J0IHdlYWtyZWYKIAogY2xhc3MgVHlwZXNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTM0Myw2ICszNDUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCAzIC5fX2Zvcm1hdF9fLCAiLG4iKQogICAgICAgICAjIGNhbid0IGhhdmUgJywnIHdpdGggJ2MnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIDMgLl9fZm9ybWF0X18sICIsYyIpCisgICAgICAgICMgY2FuJ3QgaGF2ZSAnIycgd2l0aCAnYycKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgMyAuX19mb3JtYXRfXywgIiNjIikKIAogICAgICAgICAjIGVuc3VyZSB0aGF0IG9ubHkgaW50IGFuZCBmbG9hdCB0eXBlIHNwZWNpZmllcnMgd29yawogICAgICAgICBmb3IgZm9ybWF0X3NwZWMgaW4gKFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdhJyksIG9yZCgneicpKzEpXSArCkBAIC0xMTg2LDkgKzExOTAsMzE4IEBACiAgICAgICAgICAgICB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKSA+PSBGYWtlU2ltcGxlTmFtZXNwYWNlKCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFR5cGVzVGVzdHMsIE1hcHBpbmdQcm94eVRlc3RzLCBDbGFzc0NyZWF0aW9uVGVzdHMsCi0gICAgICAgICAgICAgICAgIFNpbXBsZU5hbWVzcGFjZVRlc3RzKQorY2xhc3MgQ29yb3V0aW5lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3dyb25nX2FyZ3Moc2VsZik6CisgICAgICAgIHNhbXBsZXMgPSBbTm9uZSwgMSwgb2JqZWN0KCldCisgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLmNvcm91dGluZS4qZXhwZWN0cyBhIGNhbGxhYmxlJyk6CisgICAgICAgICAgICAgICAgdHlwZXMuY29yb3V0aW5lKHNhbXBsZSkKKworICAgIGRlZiB0ZXN0X25vbl9nZW5fdmFsdWVzKHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oKSwgJ3NwYW0nKQorCisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisgICAgICAgIGF3ID0gQXdhaXRhYmxlKCkKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXcKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhhdywgZm9vKCkpCisKKyAgICAgICAgIyBkZWNvcmF0ZSBmb28gc2Vjb25kIHRpbWUKKyAgICAgICAgZm9vID0gdHlwZXMuY29yb3V0aW5lKGZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhhdywgZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19kZWYoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHR5cGVzLmNvcm91dGluZSBwYXNzZXMgJ2FzeW5jIGRlZicgY29yb3V0aW5lcworICAgICAgICAjIHdpdGhvdXQgbW9kaWZpY2F0aW9uCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgIGZvb19jb2RlID0gZm9vLl9fY29kZV9fCisgICAgICAgIGZvb19mbGFncyA9IGZvby5fX2NvZGVfXy5jb19mbGFncworICAgICAgICBkZWNvcmF0ZWRfZm9vID0gdHlwZXMuY29yb3V0aW5lKGZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28sIGRlY29yYXRlZF9mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fY29kZV9fLmNvX2ZsYWdzLCBmb29fZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGVjb3JhdGVkX2Zvby5fX2NvZGVfXywgZm9vX2NvZGUpCisKKyAgICAgICAgZm9vX2Nvcm8gPSBmb28oKQorICAgICAgICBkZWYgYmFyKCk6IHJldHVybiBmb29fY29ybworICAgICAgICBmb3IgXyBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIGJhciA9IHR5cGVzLmNvcm91dGluZShiYXIpCisgICAgICAgICAgICBjb3JvID0gYmFyKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vX2Nvcm8sIGNvcm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcm8uY3JfY29kZS5jb19mbGFncywgZm9vX2ZsYWdzKQorICAgICAgICAgICAgY29yby5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9kdWNrX2Nvcm8oc2VsZik6CisgICAgICAgIGNsYXNzIENvcm9MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOiByZXR1cm4gc2VsZgorCisgICAgICAgIGNvcm8gPSBDb3JvTGlrZSgpCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGNvcm8KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKSwgY29ybykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKS5fX2F3YWl0X18oKSwgY29ybykKKworICAgIGRlZiB0ZXN0X2R1Y2tfY29yb2dlbihzZWxmKToKKyAgICAgICAgY2xhc3MgQ29yb0dlbkxpa2U6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHRocm93KHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6IHBhc3MKKworICAgICAgICBjb3JvID0gQ29yb0dlbkxpa2UoKQorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBjb3JvCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCksIGNvcm8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCkuX19hd2FpdF9fKCksIGNvcm8pCisKKyAgICBkZWYgdGVzdF9kdWNrX2dlbihzZWxmKToKKyAgICAgICAgY2xhc3MgR2VuTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6IHBhc3MKKworICAgICAgICAjIFNldHVwIGdlbmVyYXRvciBtb2NrIG9iamVjdAorICAgICAgICBnZW4gPSB1bml0dGVzdC5tb2NrLk1hZ2ljTW9jayhHZW5MaWtlKQorICAgICAgICBnZW4uX19pdGVyX18gPSBsYW1iZGEgZ2VuOiBnZW4KKyAgICAgICAgZ2VuLl9fbmFtZV9fID0gJ2dlbicKKyAgICAgICAgZ2VuLl9fcXVhbG5hbWVfXyA9ICd0ZXN0LmdlbicKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGdlbiwgY29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnZW4sIGl0ZXIoZ2VuKSkKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIGdlbgorCisgICAgICAgIHdyYXBwZXIgPSBmb28oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod3JhcHBlciwgdHlwZXMuX0dlbmVyYXRvcldyYXBwZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX2F3YWl0X18oKSwgd3JhcHBlcikKKyAgICAgICAgIyBXcmFwcGVyIHByb3hpZXMgZHVjayBnZW5lcmF0b3JzIGNvbXBsZXRlbHk6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaXRlcih3cmFwcGVyKSwgd3JhcHBlcikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod3JhcHBlciwgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIGNvbGxlY3Rpb25zLmFiYy5Bd2FpdGFibGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZ2VuLl9fcXVhbG5hbWVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fbmFtZV9fLCBnZW4uX19uYW1lX18pCisKKyAgICAgICAgIyBUZXN0IEF0dHJpYnV0ZUVycm9ycworICAgICAgICBmb3IgbmFtZSBpbiB7J2dpX3J1bm5pbmcnLCAnZ2lfZnJhbWUnLCAnZ2lfY29kZScsICdnaV95aWVsZGZyb20nLAorICAgICAgICAgICAgICAgICAgICAgJ2NyX3J1bm5pbmcnLCAnY3JfZnJhbWUnLCAnY3JfY29kZScsICdjcl9hd2FpdCd9OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgZ2V0YXR0cih3cmFwcGVyLCBuYW1lKQorCisgICAgICAgICMgVGVzdCBhdHRyaWJ1dGVzIHBhc3MtdGhyb3VnaAorICAgICAgICBnZW4uZ2lfcnVubmluZyA9IG9iamVjdCgpCisgICAgICAgIGdlbi5naV9mcmFtZSA9IG9iamVjdCgpCisgICAgICAgIGdlbi5naV9jb2RlID0gb2JqZWN0KCkKKyAgICAgICAgZ2VuLmdpX3lpZWxkZnJvbSA9IG9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5naV9ydW5uaW5nLCBnZW4uZ2lfcnVubmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmdpX2ZyYW1lLCBnZW4uZ2lfZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5naV9jb2RlLCBnZW4uZ2lfY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmdpX3lpZWxkZnJvbSwgZ2VuLmdpX3lpZWxkZnJvbSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmNyX3J1bm5pbmcsIGdlbi5naV9ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuY3JfZnJhbWUsIGdlbi5naV9mcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmNyX2NvZGUsIGdlbi5naV9jb2RlKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuY3JfYXdhaXQsIGdlbi5naV95aWVsZGZyb20pCisKKyAgICAgICAgd3JhcHBlci5jbG9zZSgpCisgICAgICAgIGdlbi5jbG9zZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgd3JhcHBlci5zZW5kKDEpCisgICAgICAgIGdlbi5zZW5kLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEpCisgICAgICAgIGdlbi5yZXNldF9tb2NrKCkKKworICAgICAgICBuZXh0KHdyYXBwZXIpCisgICAgICAgIGdlbi5fX25leHRfXy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIGdlbi5yZXNldF9tb2NrKCkKKworICAgICAgICB3cmFwcGVyLnRocm93KDEsIDIsIDMpCisgICAgICAgIGdlbi50aHJvdy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBnZW4ucmVzZXRfbW9jaygpCisKKyAgICAgICAgd3JhcHBlci50aHJvdygxLCAyKQorICAgICAgICBnZW4udGhyb3cuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMikKKyAgICAgICAgZ2VuLnJlc2V0X21vY2soKQorCisgICAgICAgIHdyYXBwZXIudGhyb3coMSkKKyAgICAgICAgZ2VuLnRocm93LmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEpCisgICAgICAgIGdlbi5yZXNldF9tb2NrKCkKKworICAgICAgICAjIFRlc3QgZXhjZXB0aW9ucyBwcm9wYWdhdGlvbgorICAgICAgICBlcnJvciA9IEV4Y2VwdGlvbigpCisgICAgICAgIGdlbi50aHJvdy5zaWRlX2VmZmVjdCA9IGVycm9yCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdyYXBwZXIudGhyb3coMSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXgsIGVycm9yKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCd3cmFwcGVyIGRpZCBub3QgcHJvcGFnYXRlIGFuIGV4Y2VwdGlvbicpCisKKyAgICAgICAgIyBUZXN0IGludmFsaWQgYXJncworICAgICAgICBnZW4ucmVzZXRfbW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHdyYXBwZXIudGhyb3coKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdlbi50aHJvdy5jYWxsZWQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHdyYXBwZXIuY2xvc2UoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZW4uY2xvc2UuY2FsbGVkKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3cmFwcGVyLnNlbmQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdlbi5zZW5kLmNhbGxlZCkKKworICAgICAgICAjIFRlc3QgdGhhdCB3ZSBkbyBub3QgZG91YmxlIHdyYXAKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgYmFyKCk6IHJldHVybiB3cmFwcGVyCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlciwgYmFyKCkpCisKKyAgICAgICAgIyBUZXN0IHdlYWtyZWZzIHN1cHBvcnQKKyAgICAgICAgcmVmID0gd2Vha3JlZi5yZWYod3JhcHBlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZWYoKSwgd3JhcHBlcikKKworICAgIGRlZiB0ZXN0X2R1Y2tfZnVuY3Rpb25hbF9nZW4oc2VsZik6CisgICAgICAgIGNsYXNzIEdlbmVyYXRvcjoKKyAgICAgICAgICAgICIiIkVtdWxhdGVzIHRoZSBmb2xsb3dpbmcgZ2VuZXJhdG9yICh2ZXJ5IGNsdW1zeSk6CisKKyAgICAgICAgICAgICAgZGVmIGdlbihmdXQpOgorICAgICAgICAgICAgICAgICAgcmVzdWx0ID0geWllbGQgZnV0CisgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICogMgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZnV0KToKKyAgICAgICAgICAgICAgICBzZWxmLl9pID0gMAorICAgICAgICAgICAgICAgIHNlbGYuX2Z1dCA9IGZ1dAorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZChOb25lKQorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdik6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgdiBpcyBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZnV0CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2kgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24odiAqIDIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2kgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2kgKz0gMQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHRwLCAqZXhjKToKKyAgICAgICAgICAgICAgICBzZWxmLl9pID0gMTAwCisgICAgICAgICAgICAgICAgaWYgdHAgaXMgbm90IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHRwCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi50aHJvdyhHZW5lcmF0b3JFeGl0KQorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gR2VuZXJhdG9yKCdzcGFtJykKKworICAgICAgICB3cmFwcGVyID0gZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIHR5cGVzLl9HZW5lcmF0b3JXcmFwcGVyKQorCisgICAgICAgIGFzeW5jIGRlZiBjb3JvZnVuYygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZvbygpICsgMTAwCisgICAgICAgIGNvcm8gPSBjb3JvZnVuYygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3JvLnNlbmQoTm9uZSksICdzcGFtJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29yby5zZW5kKDIwKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTQwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBleHBlY3RlZCcpCisKKyAgICBkZWYgdGVzdF9nZW4oc2VsZik6CisgICAgICAgIGRlZiBnZW5fZnVuYygpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgcmV0dXJuICh5aWVsZCAyKQorICAgICAgICBnZW4gPSBnZW5fZnVuYygpCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gZ2VuCisgICAgICAgIHdyYXBwZXIgPSBmb28oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod3JhcHBlciwgdHlwZXMuX0dlbmVyYXRvcldyYXBwZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX2F3YWl0X18oKSwgZ2VuKQorCisgICAgICAgIGZvciBuYW1lIGluICgnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ2dpX2NvZGUnLAorICAgICAgICAgICAgICAgICAgICAgJ2dpX3J1bm5pbmcnLCAnZ2lfZnJhbWUnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihmb28oKSwgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZ2VuLCBuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKS5jcl9jb2RlLCBnZW4uZ2lfY29kZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQod3JhcHBlciksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5zZW5kKE5vbmUpLCAyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3RvcEl0ZXJhdGlvbiwgJ3NwYW0nKToKKyAgICAgICAgICAgIHdyYXBwZXIuc2VuZCgnc3BhbScpCisKKyAgICAgICAgZ2VuID0gZ2VuX2Z1bmMoKQorICAgICAgICB3cmFwcGVyID0gZm9vKCkKKyAgICAgICAgd3JhcHBlci5zZW5kKE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICdoYW0nKToKKyAgICAgICAgICAgIHdyYXBwZXIudGhyb3coRXhjZXB0aW9uLCBFeGNlcHRpb24oJ2hhbScpKQorCisgICAgICAgICMgZGVjb3JhdGUgZm9vIHNlY29uZCB0aW1lCisgICAgICAgIGZvbyA9IHR5cGVzLmNvcm91dGluZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCkuX19hd2FpdF9fKCksIGdlbikKKworICAgIGRlZiB0ZXN0X3JldHVybmluZ19pdGVyY29ybyhzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGdlbmNvcm8gPSBnZW4oKQorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGdlbmNvcm8KKworICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLCBnZW5jb3JvKQorCisgICAgICAgICMgZGVjb3JhdGUgZm9vIHNlY29uZCB0aW1lCisgICAgICAgIGZvbyA9IHR5cGVzLmNvcm91dGluZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCksIGdlbmNvcm8pCisKKyAgICBkZWYgdGVzdF9nZW5mdW5jKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZXMuY29yb3V0aW5lKGdlbiksIGdlbikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlcy5jb3JvdXRpbmUodHlwZXMuY29yb3V0aW5lKGdlbikpLCBnZW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdlbi5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fSVRFUkFCTEVfQ09ST1VUSU5FKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdlbi5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKQorCisgICAgICAgIGcgPSBnZW4oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZy5naV9jb2RlLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19JVEVSQUJMRV9DT1JPVVRJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5naV9jb2RlLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlcy5jb3JvdXRpbmUoZ2VuKSwgZ2VuKQorCisgICAgZGVmIHRlc3Rfd3JhcHBlcl9vYmplY3Qoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHJldHVybiBnZW4oKQorCisgICAgICAgIHdyYXBwZXIgPSBjb3JvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2VuZXJhdG9yV3JhcHBlcicsIHJlcHIod3JhcHBlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih3cmFwcGVyKSwgc3RyKHdyYXBwZXIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGRpcih3cmFwcGVyKSkuaXNzdXBlcnNldCh7CisgICAgICAgICAgICAnX19hd2FpdF9fJywgJ19faXRlcl9fJywgJ19fbmV4dF9fJywgJ2NyX2NvZGUnLCAnY3JfcnVubmluZycsCisgICAgICAgICAgICAnY3JfZnJhbWUnLCAnZ2lfY29kZScsICdnaV9mcmFtZScsICdnaV9ydW5uaW5nJywgJ3NlbmQnLAorICAgICAgICAgICAgJ2Nsb3NlJywgJ3Rocm93J30pKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ2MWNmYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwaW5nLnB5CkBAIC0wLDAgKzEsMTI1NyBAQAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbWFpbgordHJ5OgorICAgIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgbW9jayAgIyAzcmQgcGFydHkgaW5zdGFsbCwgZm9yIFBZMy4yLgorCitmcm9tIHR5cGluZyBpbXBvcnQgQW55Citmcm9tIHR5cGluZyBpbXBvcnQgVHlwZVZhciwgQW55U3RyCitmcm9tIHR5cGluZyBpbXBvcnQgVCwgS1QsIFZUICAjIE5vdCBpbiBfX2FsbF9fLgorZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uLCBPcHRpb25hbAorZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKK2Zyb20gdHlwaW5nIGltcG9ydCBHZW5lcmljCitmcm9tIHR5cGluZyBpbXBvcnQgY2FzdAorZnJvbSB0eXBpbmcgaW1wb3J0IGdldF90eXBlX2hpbnRzCitmcm9tIHR5cGluZyBpbXBvcnQgbm9fdHlwZV9jaGVjaywgbm9fdHlwZV9jaGVja19kZWNvcmF0b3IKK2Zyb20gdHlwaW5nIGltcG9ydCBOYW1lZFR1cGxlCitmcm9tIHR5cGluZyBpbXBvcnQgSU8sIFRleHRJTywgQmluYXJ5SU8KK2Zyb20gdHlwaW5nIGltcG9ydCBQYXR0ZXJuLCBNYXRjaAoraW1wb3J0IHR5cGluZworCisKK2NsYXNzIEVtcGxveWVlOgorICAgIHBhc3MKKworCitjbGFzcyBNYW5hZ2VyKEVtcGxveWVlKToKKyAgICBwYXNzCisKKworY2xhc3MgRm91bmRlcihFbXBsb3llZSk6CisgICAgcGFzcworCisKK2NsYXNzIE1hbmFnaW5nRm91bmRlcihNYW5hZ2VyLCBGb3VuZGVyKToKKyAgICBwYXNzCisKKworY2xhc3MgQW55VGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55X2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIEFueSkKKworICAgIGRlZiB0ZXN0X2FueV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRW1wbG95ZWUsIEFueSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGludCwgQW55KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShOb25lKSwgQW55KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mob2JqZWN0LCBBbnkpKQorCisgICAgZGVmIHRlc3Rfb3RoZXJzX2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEFueSwgRW1wbG95ZWUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQW55LCBpbnQpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQW55LCB0eXBlKE5vbmUpKSkKKyAgICAgICAgIyBIb3dldmVyLCBBbnkgaXMgYSBzdWJjbGFzcyBvZiBvYmplY3QgKHRoaXMgY2FuJ3QgYmUgaGVscGVkKS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQW55LCBvYmplY3QpKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFueSksICd0eXBpbmcuQW55JykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNzdWJjbGFzcyg0MiwgQW55KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBbnlbaW50XSAgIyBBbnkgaXMgbm90IGEgZ2VuZXJpYyB0eXBlLgorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBKEFueSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBbnkoKQorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQW55W2ludF0KKworICAgIGRlZiB0ZXN0X2FueV9pc19zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBBbnkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBzdWJjbGFzcyBvZiBldmVyeXRoaW5nLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEFueSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdFtpbnRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5MaXN0W1RdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXBwaW5nKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXBwaW5nW3N0ciwgaW50XSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWFwcGluZ1tLVCwgVlRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEdlbmVyaWMpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgR2VuZXJpY1tUXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBHZW5lcmljW0tULCBWVF0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgQW55U3RyKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIFVuaW9uKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIFVuaW9uW2ludCwgc3RyXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWF0Y2gpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLk1hdGNoW3N0cl0pCisgICAgICAgICMgVGhlc2UgZXhwcmVzc2lvbnMgbXVzdCBzaW1wbHkgbm90IGZhaWwuCisgICAgICAgIHR5cGluZy5NYXRjaFtBbnldCisgICAgICAgIHR5cGluZy5QYXR0ZXJuW0FueV0KKyAgICAgICAgdHlwaW5nLklPW0FueV0KKworCitjbGFzcyBUeXBlVmFyVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNfcGxhaW4oc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgIyBFdmVyeSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIFQuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgVCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Moc3RyLCBUKQorICAgICAgICAjIFQgZXF1YWxzIGl0c2VsZi4KKyAgICAgICAgYXNzZXJ0IFQgPT0gVAorICAgICAgICAjIFQgaXMgYSBzdWJjbGFzcyBvZiBpdHNlbGYuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFQsIFQpCisgICAgICAgICMgVCBpcyBhbiBpbnN0YW5jZSBvZiBUeXBlVmFyCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFQsIFR5cGVWYXIpCisKKyAgICBkZWYgdGVzdF90eXBldmFyX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSg0MiwgVCkKKworICAgIGRlZiB0ZXN0X2Jhc2ljX2NvbnN0cmFpbmVkKHNlbGYpOgorICAgICAgICBBID0gVHlwZVZhcignQScsIHN0ciwgYnl0ZXMpCisgICAgICAgICMgT25seSBzdHIgYW5kIGJ5dGVzIGFyZSBzdWJjbGFzc2VzIG9mIEEuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHN0ciwgQSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoYnl0ZXMsIEEpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIEEpCisgICAgICAgICMgQSBlcXVhbHMgaXRzZWxmLgorICAgICAgICBhc3NlcnQgQSA9PSBBCisgICAgICAgICMgQSBpcyBhIHN1YmNsYXNzIG9mIGl0c2VsZi4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQSwgQSkKKworICAgIGRlZiB0ZXN0X2NvbnN0cmFpbmVkX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYID0gVHlwZVZhcignWCcsIGludCkKKworICAgIGRlZiB0ZXN0X3VuaW9uX3VuaXF1ZShzZWxmKToKKyAgICAgICAgWCA9IFR5cGVWYXIoJ1gnKQorICAgICAgICBZID0gVHlwZVZhcignWScpCisgICAgICAgIGFzc2VydCBYICE9IFkKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1hdID09IFgKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1hdICE9IFVuaW9uW1gsIFldCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBYXSA9PSBYCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdICE9IFVuaW9uW1hdCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdICE9IFVuaW9uW2ludF0KKyAgICAgICAgYXNzZXJ0IFVuaW9uW1gsIGludF0uX191bmlvbl9wYXJhbXNfXyA9PSAoWCwgaW50KQorICAgICAgICBhc3NlcnQgVW5pb25bWCwgaW50XS5fX3VuaW9uX3NldF9wYXJhbXNfXyA9PSB7WCwgaW50fQorCisgICAgZGVmIHRlc3RfdW5pb25fY29uc3RyYWluZWQoc2VsZik6CisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykKKyAgICAgICAgYXNzZXJ0IFVuaW9uW0EsIHN0cl0gIT0gVW5pb25bQV0KKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUKSwgJ35UJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEtUKSwgJ35LVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihWVCksICd+VlQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQW55U3RyKSwgJ35BbnlTdHInKQorICAgICAgICBUX2NvID0gVHlwZVZhcignVF9jbycsIGNvdmFyaWFudD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVF9jbyksICcrVF9jbycpCisgICAgICAgIFRfY29udHJhID0gVHlwZVZhcignVF9jb250cmEnLCBjb250cmF2YXJpYW50PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUX2NvbnRyYSksICctVF9jb250cmEnKQorCisgICAgZGVmIHRlc3Rfbm9fcmVkZWZpbml0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFR5cGVWYXIoJ1QnKSwgVHlwZVZhcignVCcpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFR5cGVWYXIoJ1QnLCBpbnQsIHN0ciksIFR5cGVWYXIoJ1QnLCBpbnQsIHN0cikpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19hc191bmlvbnMoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGVzZSBhcmUgdHJ1ZSAtLSBlYWNoIHR5cGUgdmFyIGlzIGl0cyBvd24gd29ybGQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIGludCwgc3RyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBmbG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlVmFyKCdUJywgaW50LCBmbG9hdCwgc3RyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUeXBlVmFyKCdUJywgaW50LCBzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIHN0ciwgaW50KSkpCisgICAgICAgIEEgPSBUeXBlVmFyKCdBJywgaW50LCBzdHIpCisgICAgICAgIEIgPSBUeXBlVmFyKCdCJywgaW50LCBzdHIsIGZsb2F0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQSwgQikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhCLCBBKSkKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzc192YXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBWKFR5cGVWYXIoJ1QnKSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzX3Zhcl9pdHNlbGYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIFYoVHlwZVZhcik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlX3ZhcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ0EnKSgpCisKKyAgICBkZWYgdGVzdF9ib3VuZChzZWxmKToKKyAgICAgICAgWCA9IFR5cGVWYXIoJ1gnLCBib3VuZD1FbXBsb3llZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoRW1wbG95ZWUsIFgpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKE1hbmFnZXIsIFgpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIFgpCisKKyAgICBkZWYgdGVzdF9ib3VuZF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ1gnLCBib3VuZD00MikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHlwZVZhcignWCcsIHN0ciwgZmxvYXQsIGJvdW5kPUVtcGxveWVlKQorCisKK2NsYXNzIFVuaW9uVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25baW50LCBmbG9hdF0KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh1LCBVbmlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoaW50LCB1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZmxvYXQsIHUpKQorCisgICAgZGVmIHRlc3RfdW5pb25fYW55KHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW0FueSwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKworICAgIGRlZiB0ZXN0X3VuaW9uX29iamVjdChzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW29iamVjdF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisgICAgICAgIHUgPSBVbmlvbltpbnQsIG9iamVjdF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisgICAgICAgIHUgPSBVbmlvbltvYmplY3QsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBvYmplY3QpCisKKyAgICBkZWYgdGVzdF91bmlvbl9hbnlfb2JqZWN0KHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bb2JqZWN0LCBBbnldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgQW55KQorICAgICAgICB1ID0gVW5pb25bQW55LCBvYmplY3RdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgQW55KQorCisgICAgZGVmIHRlc3RfdW5vcmRlcmVkKHNlbGYpOgorICAgICAgICB1MSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHUyID0gVW5pb25bZmxvYXQsIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1MSwgdTIpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hbmFnZXIsIHUpKQorCisgICAgZGVmIHRlc3Rfc2VsZl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5pb25bS1QsIFZUXSwgVW5pb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVW5pb24sIFVuaW9uW0tULCBWVF0pKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2luZ0ZvdW5kZXIsIHUpKQorCisgICAgZGVmIHRlc3Rfc2luZ2xlX2NsYXNzX2Rpc2FwcGVhcnMoc2VsZik6CisgICAgICAgIHQgPSBVbmlvbltFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0LCBFbXBsb3llZSkKKworICAgIGRlZiB0ZXN0X2Jhc2VfY2xhc3NfZGlzYXBwZWFycyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW0VtcGxveWVlLCBNYW5hZ2VyLCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgVW5pb25baW50LCBFbXBsb3llZV0pCisgICAgICAgIHUgPSBVbmlvbltNYW5hZ2VyLCBpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFVuaW9uW2ludCwgRW1wbG95ZWVdKQorICAgICAgICB1ID0gVW5pb25bRW1wbG95ZWUsIE1hbmFnZXJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXModSwgRW1wbG95ZWUpCisKKyAgICBkZWYgdGVzdF93ZWlyZF9zdWJjbGFzc2VzKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25bRW1wbG95ZWUsIGludCwgZmxvYXRdCisgICAgICAgIHYgPSBVbmlvbltpbnQsIGZsb2F0XQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh2LCB1KSkKKyAgICAgICAgdyA9IFVuaW9uW2ludCwgTWFuYWdlcl0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModywgdSkpCisKKyAgICBkZWYgdGVzdF91bmlvbl91bmlvbihzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHYgPSBVbmlvblt1LCBFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBVbmlvbltpbnQsIGZsb2F0LCBFbXBsb3llZV0pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVW5pb24pLCAndHlwaW5nLlVuaW9uJykKKyAgICAgICAgdSA9IFVuaW9uW0VtcGxveWVlLCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih1KSwgJ3R5cGluZy5Vbmlvblslcy5FbXBsb3llZSwgaW50XScgJSBfX25hbWVfXykKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih1KSwgJ3R5cGluZy5VbmlvbltpbnQsICVzLkVtcGxveWVlXScgJSBfX25hbWVfXykKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQyhVbmlvbik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDKFVuaW9uW2ludCwgc3RyXSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2Fubm90X2luc3RhbnRpYXRlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBVbmlvbigpCisgICAgICAgIHUgPSBVbmlvbltpbnQsIGZsb2F0XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1KCkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsKHNlbGYpOgorICAgICAgICBvID0gT3B0aW9uYWxbaW50XQorICAgICAgICB1ID0gVW5pb25baW50LCBOb25lXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sIHUpCisKKyAgICBkZWYgdGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVW5pb25bKCldCisKKyAgICBkZWYgdGVzdF9pc3N1YmNsYXNzX3VuaW9uKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhVbmlvbltpbnQsIHN0cl0sIFVuaW9uKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoaW50LCBVbmlvbikKKworICAgIGRlZiB0ZXN0X3VuaW9uX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIFVuaW9uW2ludCwgc3RyXSkKKworCitjbGFzcyBUeXBlVmFyVW5pb25UZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zaW1wbGVyKHNlbGYpOgorICAgICAgICBBID0gVHlwZVZhcignQScsIGludCwgc3RyLCBmbG9hdCkKKyAgICAgICAgQiA9IFR5cGVWYXIoJ0InLCBpbnQsIHN0cikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQSwgQSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQiwgQikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKEIsIEEpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEEsIFVuaW9uW2ludCwgc3RyLCBmbG9hdF0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhVbmlvbltpbnQsIHN0ciwgZmxvYXRdLCBBKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVW5pb25baW50LCBzdHJdLCBCKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhCLCBVbmlvbltpbnQsIHN0cl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhBLCBCKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVW5pb25baW50LCBzdHIsIGZsb2F0XSwgQikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKEEsIFVuaW9uW2ludCwgc3RyXSkKKworICAgIGRlZiB0ZXN0X3Zhcl91bmlvbl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVCwgVW5pb25baW50LCBUXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEtULCBVbmlvbltLVCwgVlRdKSkKKworICAgIGRlZiB0ZXN0X3Zhcl91bmlvbihzZWxmKToKKyAgICAgICAgVFUgPSBUeXBlVmFyKCdUVScsIFVuaW9uW2ludCwgZmxvYXRdLCBOb25lKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhpbnQsIFRVKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmbG9hdCwgVFUpCisKKworY2xhc3MgVHVwbGVUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFR1cGxlW2ludCwgc3RyXSwgVHVwbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhUdXBsZVtpbnQsIHN0cl0sIFR1cGxlW2ludCwgc3RyXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhpbnQsIFR1cGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFR1cGxlW2Zsb2F0LCBzdHJdLCBUdXBsZVtpbnQsIHN0cl0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHVwbGVbaW50LCBzdHIsIGludF0sIFR1cGxlW2ludCwgc3RyXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUdXBsZVtpbnQsIHN0cl0sIFR1cGxlW2ludCwgc3RyLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHVwbGUsIFR1cGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFR1cGxlLCB0dXBsZSkpICAjIENhbid0IGhhdmUgaXQgYm90aCB3YXlzLgorCisgICAgZGVmIHRlc3RfdHVwbGVfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE15VHVwbGUodHVwbGUpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNeVR1cGxlLCBUdXBsZSkpCisKKyAgICBkZWYgdGVzdF90dXBsZV9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc2luc3RhbmNlKCgwLCAwKSwgVHVwbGVbaW50LCBpbnRdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc2luc3RhbmNlKCgwLCAwKSwgVHVwbGUpCisKKyAgICBkZWYgdGVzdF90dXBsZV9lbGxpcHNpc19zdWJjbGFzcyhzZWxmKToKKworICAgICAgICBjbGFzcyBCOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEMoQik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0JdLCBUdXBsZVtCLCAuLi5dKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhUdXBsZVtDLCAuLi5dLCBUdXBsZVtCLCAuLi5dKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVHVwbGVbQywgLi4uXSwgVHVwbGVbQl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtDXSwgVHVwbGVbQiwgLi4uXSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUdXBsZSksICd0eXBpbmcuVHVwbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVHVwbGVbKCldKSwgJ3R5cGluZy5UdXBsZVtdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFR1cGxlW2ludCwgZmxvYXRdKSwgJ3R5cGluZy5UdXBsZVtpbnQsIGZsb2F0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUdXBsZVtpbnQsIC4uLl0pLCAndHlwaW5nLlR1cGxlW2ludCwgLi4uXScpCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzc3ViY2xhc3MoNDIsIFR1cGxlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc3N1YmNsYXNzKDQyLCBUdXBsZVtpbnRdKQorCisKK2NsYXNzIENhbGxhYmxlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2VsZl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlLCBDYWxsYWJsZVtbaW50XSwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbaW50XSwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDYWxsYWJsZVtbRW1wbG95ZWVdLCBpbnRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW01hbmFnZXJdLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlW1tNYW5hZ2VyXSwgaW50XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxhYmxlW1tFbXBsb3llZV0sIGludF0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW2ludF0sIEVtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxhYmxlW1tpbnRdLCBNYW5hZ2VyXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDYWxsYWJsZVtbaW50XSwgTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsYWJsZVtbaW50XSwgRW1wbG95ZWVdKSkKKworICAgIGRlZiB0ZXN0X2VxX2hhc2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tpbnRdLCBpbnRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih7Q2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tpbnRdLCBpbnRdfSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tpbnRdLCBzdHJdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbc3RyXSwgaW50XSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludCwgaW50XSwgaW50XSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW10sIGludF0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlKQorCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisKKyAgICAgICAgICAgIGNsYXNzIEMoQ2FsbGFibGUpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisKKyAgICAgICAgICAgIGNsYXNzIEMoQ2FsbGFibGVbW2ludF0sIGludF0pOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9pbnN0YW50aWF0ZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQ2FsbGFibGUoKQorICAgICAgICBjID0gQ2FsbGFibGVbW2ludF0sIHN0cl0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYygpCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV9pbnN0YW5jZV93b3JrcyhzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZiwgQ2FsbGFibGUpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShOb25lLCBDYWxsYWJsZSkKKworICAgIGRlZiB0ZXN0X2NhbGxhYmxlX2luc3RhbmNlX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGYsIENhbGxhYmxlW1tdLCBOb25lXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZiwgQ2FsbGFibGVbW10sIEFueV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShOb25lLCBDYWxsYWJsZVtbXSwgTm9uZV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShOb25lLCBDYWxsYWJsZVtbXSwgQW55XSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIGN0MCA9IENhbGxhYmxlW1tdLCBib29sXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY3QwKSwgJ3R5cGluZy5DYWxsYWJsZVtbXSwgYm9vbF0nKQorICAgICAgICBjdDIgPSBDYWxsYWJsZVtbc3RyLCBmbG9hdF0sIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGN0MiksICd0eXBpbmcuQ2FsbGFibGVbW3N0ciwgZmxvYXRdLCBpbnRdJykKKyAgICAgICAgY3R2ID0gQ2FsbGFibGVbLi4uLCBzdHJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjdHYpLCAndHlwaW5nLkNhbGxhYmxlWy4uLiwgc3RyXScpCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV93aXRoX2VsbGlwc2lzKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogQ2FsbGFibGVbLi4uLCBUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdHlwZV9oaW50cyhmb28sIGdsb2JhbHMoKSwgbG9jYWxzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IENhbGxhYmxlWy4uLiwgVF19KQorCisKK1hLID0gVHlwZVZhcignWEsnLCBzdHIsIGJ5dGVzKQorWFYgPSBUeXBlVmFyKCdYVicpCisKKworY2xhc3MgU2ltcGxlTWFwcGluZyhHZW5lcmljW1hLLCBYVl0pOgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogWEspIC0+IFhWOgorICAgICAgICAuLi4KKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXk6IFhLLCB2YWx1ZTogWFYpOgorICAgICAgICAuLi4KKworICAgIGRlZiBnZXQoc2VsZiwga2V5OiBYSywgZGVmYXVsdDogWFYgPSBOb25lKSAtPiBYVjoKKyAgICAgICAgLi4uCisKKworY2xhc3MgTXlTaW1wbGVNYXBwaW5nKFNpbXBsZU1hcHBpbmcpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnN0b3JlID0ge30KKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IHN0cik6CisgICAgICAgIHJldHVybiBzZWxmLnN0b3JlW2tleV0KKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXk6IHN0ciwgdmFsdWUpOgorICAgICAgICBzZWxmLnN0b3JlW2tleV0gPSB2YWx1ZQorCisgICAgZGVmIGdldChzZWxmLCBrZXk6IHN0ciwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RvcmVba2V5XQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisKK2NsYXNzIFByb3RvY29sVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfaW50KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhpbnQsIHR5cGluZy5TdXBwb3J0c0ludCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHN0ciwgdHlwaW5nLlN1cHBvcnRzSW50KQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfZmxvYXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGZsb2F0LCB0eXBpbmcuU3VwcG9ydHNGbG9hdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHN0ciwgdHlwaW5nLlN1cHBvcnRzRmxvYXQpCisKKyAgICBkZWYgdGVzdF9zdXBwb3J0c19jb21wbGV4KHNlbGYpOgorCisgICAgICAgICMgTm90ZTogY29tcGxleCBpdHNlbGYgZG9lc24ndCBoYXZlIF9fY29tcGxleF9fLgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIF9fY29tcGxleF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwagorCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEMsIHR5cGluZy5TdXBwb3J0c0NvbXBsZXgpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0NvbXBsZXgpCisKKyAgICBkZWYgdGVzdF9zdXBwb3J0c19ieXRlcyhzZWxmKToKKworICAgICAgICAjIE5vdGU6IGJ5dGVzIGl0c2VsZiBkb2Vzbid0IGhhdmUgX19ieXRlc19fLgorICAgICAgICBjbGFzcyBCOgorICAgICAgICAgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQiwgdHlwaW5nLlN1cHBvcnRzQnl0ZXMpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0J5dGVzKQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfYWJzKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmbG9hdCwgdHlwaW5nLlN1cHBvcnRzQWJzKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhpbnQsIHR5cGluZy5TdXBwb3J0c0FicykKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHN0ciwgdHlwaW5nLlN1cHBvcnRzQWJzKQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfcm91bmQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGZsb2F0LCB0eXBpbmcuU3VwcG9ydHNSb3VuZCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCB0eXBpbmcuU3VwcG9ydHNSb3VuZCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHN0ciwgdHlwaW5nLlN1cHBvcnRzUm91bmQpCisKKyAgICBkZWYgdGVzdF9yZXZlcnNpYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhsaXN0LCB0eXBpbmcuUmV2ZXJzaWJsZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKGludCwgdHlwaW5nLlJldmVyc2libGUpCisKKyAgICBkZWYgdGVzdF9wcm90b2NvbF9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc2luc3RhbmNlKFtdLCB0eXBpbmcuUmV2ZXJzaWJsZSkKKworCitjbGFzcyBHZW5lcmljVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBYID0gU2ltcGxlTWFwcGluZ1tzdHIsIEFueV0KKyAgICAgICAgWSA9IFNpbXBsZU1hcHBpbmdbWEssIHN0cl0KKyAgICAgICAgWFtzdHIsIHN0cl0KKyAgICAgICAgWVtzdHIsIHN0cl0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgWFtpbnQsIHN0cl0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgWVtzdHIsIGJ5dGVzXQorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgVCA9IFR5cGVWYXIoJ1QnKQorICAgICAgICBTID0gVHlwZVZhcignUycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEdlbmVyaWNbVCwgVF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgR2VuZXJpY1tULCBTLCBUXQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFNpbXBsZU1hcHBpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmFtZV9fICsgJy4nICsgJ1NpbXBsZU1hcHBpbmdbflhLLCB+WFZdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE15U2ltcGxlTWFwcGluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgX19uYW1lX18gKyAnLicgKyAnTXlTaW1wbGVNYXBwaW5nW35YSywgflhWXScpCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEIgPSBTaW1wbGVNYXBwaW5nW1hLLCBBbnldCisKKyAgICAgICAgICAgIGNsYXNzIEMoR2VuZXJpY1tCXSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfcmVwcl8yKHNlbGYpOgorICAgICAgICBQWTMyID0gc3lzLnZlcnNpb25faW5mb1s6Ml0gPCAoMywgMykKKworICAgICAgICBjbGFzcyBDKEdlbmVyaWNbVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBDLl9fbW9kdWxlX18gPT0gX19uYW1lX18KKyAgICAgICAgaWYgbm90IFBZMzI6CisgICAgICAgICAgICBhc3NlcnQgQy5fX3F1YWxuYW1lX18gPT0gJ0dlbmVyaWNUZXN0cy50ZXN0X3JlcHJfMi48bG9jYWxzPi5DJworICAgICAgICBhc3NlcnQgcmVwcihDKS5zcGxpdCgnLicpWy0xXSA9PSAnQ1t+VF0nCisgICAgICAgIFggPSBDW2ludF0KKyAgICAgICAgYXNzZXJ0IFguX19tb2R1bGVfXyA9PSBfX25hbWVfXworICAgICAgICBpZiBub3QgUFkzMjoKKyAgICAgICAgICAgIGFzc2VydCBYLl9fcXVhbG5hbWVfXyA9PSAnQycKKyAgICAgICAgYXNzZXJ0IHJlcHIoWCkuc3BsaXQoJy4nKVstMV0gPT0gJ0NbaW50XScKKworICAgICAgICBjbGFzcyBZKENbaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IFkuX19tb2R1bGVfXyA9PSBfX25hbWVfXworICAgICAgICBpZiBub3QgUFkzMjoKKyAgICAgICAgICAgIGFzc2VydCBZLl9fcXVhbG5hbWVfXyA9PSAnR2VuZXJpY1Rlc3RzLnRlc3RfcmVwcl8yLjxsb2NhbHM+LlknCisgICAgICAgIGFzc2VydCByZXByKFkpLnNwbGl0KCcuJylbLTFdID09ICdZW2ludF0nCisKKyAgICBkZWYgdGVzdF9lcV8xKHNlbGYpOgorICAgICAgICBhc3NlcnQgR2VuZXJpYyA9PSBHZW5lcmljCisgICAgICAgIGFzc2VydCBHZW5lcmljW1RdID09IEdlbmVyaWNbVF0KKyAgICAgICAgYXNzZXJ0IEdlbmVyaWNbS1RdICE9IEdlbmVyaWNbVlRdCisKKyAgICBkZWYgdGVzdF9lcV8yKHNlbGYpOgorCisgICAgICAgIGNsYXNzIEEoR2VuZXJpY1tUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQihHZW5lcmljW1RdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgQSA9PSBBCisgICAgICAgIGFzc2VydCBBICE9IEIKKyAgICAgICAgYXNzZXJ0IEFbVF0gPT0gQVtUXQorICAgICAgICBhc3NlcnQgQVtUXSAhPSBCW1RdCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9pbmhlcml0YW5jZShzZWxmKToKKworICAgICAgICBjbGFzcyBBKEdlbmVyaWNbVCwgVlRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCKEdlbmVyaWNbS1QsIFRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBDKEEsIEdlbmVyaWNbS1QsIFZUXSwgQik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IEMuX19wYXJhbWV0ZXJzX18gPT0gKFQsIFZULCBLVCkKKworICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKKworICAgICAgICBjbGFzcyBHKEdlbmVyaWMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIFZpc2l0b3IoR1tUXSk6CisKKyAgICAgICAgICAgIGEgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBzZXQoc2VsZiwgYTogVCk6CisgICAgICAgICAgICAgICAgc2VsZi5hID0gYQorCisgICAgICAgICAgICBkZWYgZ2V0KHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmEKKworICAgICAgICAgICAgZGVmIHZpc2l0KHNlbGYpIC0+IFQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYQorCisgICAgICAgIFYgPSBWaXNpdG9yW3R5cGluZy5MaXN0W2ludF1dCisKKyAgICAgICAgY2xhc3MgSW50TGlzdFZpc2l0b3IoVik6CisKKyAgICAgICAgICAgIGRlZiBhcHBlbmQoc2VsZiwgeDogaW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmEuYXBwZW5kKHgpCisKKyAgICAgICAgYSA9IEludExpc3RWaXNpdG9yKCkKKyAgICAgICAgYS5zZXQoW10pCisgICAgICAgIGEuYXBwZW5kKDEpCisgICAgICAgIGEuYXBwZW5kKDQyKQorICAgICAgICBhc3NlcnQgYS5nZXQoKSA9PSBbMSwgNDJdCisKKyAgICBkZWYgdGVzdF90eXBlX2VyYXN1cmUoc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgICAgICBjbGFzcyBOb2RlKEdlbmVyaWNbVF0pOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxhYmVsOiBULAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6ICdOb2RlW1RdJyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6ICdOb2RlW1RdJyA9IE5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYubGFiZWwgPSBsYWJlbCAgIyB0eXBlOiBUCisgICAgICAgICAgICAgICAgc2VsZi5sZWZ0ID0gbGVmdCAgIyB0eXBlOiBPcHRpb25hbFtOb2RlW1RdXQorICAgICAgICAgICAgICAgIHNlbGYucmlnaHQgPSByaWdodCAgIyB0eXBlOiBPcHRpb25hbFtOb2RlW1RdXQorCisgICAgICAgIGRlZiBmb28oeDogVCk6CisgICAgICAgICAgICBhID0gTm9kZSh4KQorICAgICAgICAgICAgYiA9IE5vZGVbVF0oeCkKKyAgICAgICAgICAgIGMgPSBOb2RlW0FueV0oeCkKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGEpIGlzIE5vZGUKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGIpIGlzIE5vZGUKKyAgICAgICAgICAgIGFzc2VydCB0eXBlKGMpIGlzIE5vZGUKKworICAgICAgICBmb28oNDIpCisKKworY2xhc3MgVmFyaWFuY2VUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhcmlhbmNlKHNlbGYpOgorICAgICAgICAjIEJlY2F1c2Ugb2YgaW52YXJpYW5jZSwgTGlzdFtzdWJjbGFzcyBvZiBYXSBpcyBub3QgYSBzdWJjbGFzcworICAgICAgICAjIG9mIExpc3RbWF0sIGFuZCBkaXR0byBmb3IgTXV0YWJsZVNlcXVlbmNlLgorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLkxpc3RbTWFuYWdlcl0sIHR5cGluZy5MaXN0W0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5NdXRhYmxlU2VxdWVuY2VbTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW0VtcGxveWVlXSkKKyAgICAgICAgIyBJdCdzIHN0aWxsIHJlZmxleGl2ZS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLkxpc3RbRW1wbG95ZWVdLCB0eXBpbmcuTGlzdFtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5NdXRhYmxlU2VxdWVuY2VbRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW0VtcGxveWVlXSkKKworICAgIGRlZiB0ZXN0X2NvdmFyaWFuY2VfdHVwbGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgY292YXJpYWNlIGZvciBUdXBsZSAod2hpY2ggYXJlIHJlYWxseSBzcGVjaWFsIGNhc2VzKS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbTWFuYWdlcl0sIFR1cGxlW0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0VtcGxveWVlXSwgVHVwbGVbTWFuYWdlcl0pCisgICAgICAgICMgQW5kIHBhaXJ3aXNlLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhUdXBsZVtNYW5hZ2VyLCBNYW5hZ2VyXSwgVHVwbGVbRW1wbG95ZWUsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0VtcGxveWVlLCBFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUdXBsZVtNYW5hZ2VyLCBFbXBsb3llZV0pCisgICAgICAgICMgQW5kIHVzaW5nIGVsbGlwc2lzLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhUdXBsZVtNYW5hZ2VyLCAuLi5dLCBUdXBsZVtFbXBsb3llZSwgLi4uXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0VtcGxveWVlLCAuLi5dLCBUdXBsZVtNYW5hZ2VyLCAuLi5dKQorCisgICAgZGVmIHRlc3RfY292YXJpYW5jZV9zZXF1ZW5jZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBjb3ZhcmlhbmNlIGZvciBTZXF1ZW5jZSAod2hpY2ggaXMganVzdCBhIGdlbmVyaWMgY2xhc3MKKyAgICAgICAgIyBmb3IgdGhpcyBwdXJwb3NlLCBidXQgdXNpbmcgYSBjb3ZhcmlhbnQgdHlwZSB2YXJpYWJsZSkuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5TZXF1ZW5jZVtNYW5hZ2VyXSwgdHlwaW5nLlNlcXVlbmNlW0VtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5TZXF1ZW5jZVtFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuU2VxdWVuY2VbTWFuYWdlcl0pCisKKyAgICBkZWYgdGVzdF9jb3ZhcmlhbmNlX21hcHBpbmcoc2VsZik6CisgICAgICAgICMgRGl0dG8gZm9yIE1hcHBpbmcgKGNvdmFyaWFudCBpbiB0aGUgdmFsdWUsIGludmFyaWFudCBpbiB0aGUga2V5KS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIE1hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTWFwcGluZ1tFbXBsb3llZSwgRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5NYXBwaW5nW0VtcGxveWVlLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5NYXBwaW5nW01hbmFnZXIsIE1hbmFnZXJdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbTWFuYWdlciwgTWFuYWdlcl0pCisKKworY2xhc3MgQ2FzdFRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGNhc3QoaW50LCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QoZmxvYXQsIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgdHlwZShjYXN0KGZsb2F0LCA0MikpIGlzIGludAorICAgICAgICBhc3NlcnQgY2FzdChBbnksIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChsaXN0LCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QoVW5pb25bc3RyLCBmbG9hdF0sIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChBbnlTdHIsIDQyKSA9PSA0MgorICAgICAgICBhc3NlcnQgY2FzdChOb25lLCA0MikgPT0gNDIKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBCb2d1cyBjYWxscyBhcmUgbm90IGV4cGVjdGVkIHRvIGZhaWwuCisgICAgICAgIGNhc3QoNDIsIDQyKQorICAgICAgICBjYXN0KCdoZWxsbycsIDQyKQorCisKK2NsYXNzIEZvcndhcmRSZWZUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisKKyAgICAgICAgY2xhc3MgTm9kZShHZW5lcmljW1RdKToKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxhYmVsOiBUKToKKyAgICAgICAgICAgICAgICBzZWxmLmxhYmVsID0gbGFiZWwKKyAgICAgICAgICAgICAgICBzZWxmLmxlZnQgPSBzZWxmLnJpZ2h0ID0gTm9uZQorCisgICAgICAgICAgICBkZWYgYWRkX2JvdGgoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnT3B0aW9uYWxbTm9kZVtUXV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAnTm9kZVtUXScgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0dWZmOiBpbnQgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWg9Tm9uZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sZWZ0ID0gbGVmdAorICAgICAgICAgICAgICAgIHNlbGYucmlnaHQgPSByaWdodAorCisgICAgICAgICAgICBkZWYgYWRkX2xlZnQoc2VsZiwgbm9kZTogT3B0aW9uYWxbJ05vZGVbVF0nXSk6CisgICAgICAgICAgICAgICAgc2VsZi5hZGRfYm90aChub2RlLCBOb25lKQorCisgICAgICAgICAgICBkZWYgYWRkX3JpZ2h0KHNlbGYsIG5vZGU6ICdOb2RlW1RdJyA9IE5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkX2JvdGgoTm9uZSwgbm9kZSkKKworICAgICAgICB0ID0gTm9kZVtpbnRdCisgICAgICAgIGJvdGhfaGludHMgPSBnZXRfdHlwZV9oaW50cyh0LmFkZF9ib3RoLCBnbG9iYWxzKCksIGxvY2FscygpKQorICAgICAgICBhc3NlcnQgYm90aF9oaW50c1snbGVmdCddID09IGJvdGhfaGludHNbJ3JpZ2h0J10gPT0gT3B0aW9uYWxbTm9kZVtUXV0KKyAgICAgICAgYXNzZXJ0IGJvdGhfaGludHNbJ3N0dWZmJ10gPT0gT3B0aW9uYWxbaW50XQorICAgICAgICBhc3NlcnQgJ2JsYWgnIG5vdCBpbiBib3RoX2hpbnRzCisKKyAgICAgICAgbGVmdF9oaW50cyA9IGdldF90eXBlX2hpbnRzKHQuYWRkX2xlZnQsIGdsb2JhbHMoKSwgbG9jYWxzKCkpCisgICAgICAgIGFzc2VydCBsZWZ0X2hpbnRzWydub2RlJ10gPT0gT3B0aW9uYWxbTm9kZVtUXV0KKworICAgICAgICByaWdodF9oaW50cyA9IGdldF90eXBlX2hpbnRzKHQuYWRkX3JpZ2h0LCBnbG9iYWxzKCksIGxvY2FscygpKQorICAgICAgICBhc3NlcnQgcmlnaHRfaGludHNbJ25vZGUnXSA9PSBPcHRpb25hbFtOb2RlW1RdXQorCisgICAgZGVmIHRlc3RfZm9yd2FyZHJlZl9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICBmciA9IHR5cGluZy5fRm9yd2FyZFJlZignaW50JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSg0MiwgZnIpCisKKyAgICBkZWYgdGVzdF91bmlvbl9mb3J3YXJkKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogVW5pb25bJ1QnXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdHlwZV9oaW50cyhmb28sIGdsb2JhbHMoKSwgbG9jYWxzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IFVuaW9uW1RdfSkKKworICAgIGRlZiB0ZXN0X3R1cGxlX2ZvcndhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBUdXBsZVsnVCddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogVHVwbGVbVF19KQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfZm9yd2FyZChzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IENhbGxhYmxlW1snVCddLCAnVCddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogQ2FsbGFibGVbW1RdLCBUXX0pCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV93aXRoX2VsbGlwc2lzX2ZvcndhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiAnQ2FsbGFibGVbLi4uLCBUXScpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3R5cGVfaGludHMoZm9vLCBnbG9iYWxzKCksIGxvY2FscygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBDYWxsYWJsZVsuLi4sIFRdfSkKKworICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIEdlbmVyaWNbJy9UJ10KKworICAgIGRlZiB0ZXN0X2RlbGF5ZWRfc3ludGF4X2Vycm9yKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogJ05vZGVbVCcpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZ2V0X3R5cGVfaGludHMoZm9vKQorCisgICAgZGVmIHRlc3RfdHlwZV9lcnJvcihzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IFR1cGxlWyc0MiddKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBnZXRfdHlwZV9oaW50cyhmb28pCisKKyAgICBkZWYgdGVzdF9uYW1lX2Vycm9yKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogJ05vb2RlW1RdJyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ2V0X3R5cGVfaGludHMoZm9vLCBsb2NhbHMoKSkKKworICAgIGRlZiB0ZXN0X25vX3R5cGVfY2hlY2soc2VsZik6CisKKyAgICAgICAgQG5vX3R5cGVfY2hlY2sKKyAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdGggPSBnZXRfdHlwZV9oaW50cyhmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGgsIHt9KQorCisgICAgZGVmIHRlc3Rfbm9fdHlwZV9jaGVja19jbGFzcyhzZWxmKToKKworICAgICAgICBAbm9fdHlwZV9jaGVjaworICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGN0aCA9IGdldF90eXBlX2hpbnRzKEMuZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0aCwge30pCisgICAgICAgIGl0aCA9IGdldF90eXBlX2hpbnRzKEMoKS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRoLCB7fSkKKworICAgIGRlZiB0ZXN0X21ldGFfbm9fdHlwZV9jaGVjayhzZWxmKToKKworICAgICAgICBAbm9fdHlwZV9jaGVja19kZWNvcmF0b3IKKyAgICAgICAgZGVmIG1hZ2ljX2RlY29yYXRvcihkZWNvKToKKyAgICAgICAgICAgIHJldHVybiBkZWNvCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWdpY19kZWNvcmF0b3IuX19uYW1lX18sICdtYWdpY19kZWNvcmF0b3InKQorCisgICAgICAgIEBtYWdpY19kZWNvcmF0b3IKKyAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQG1hZ2ljX2RlY29yYXRvcgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGZvbyhhOiAnd2hhdGV2ZXJzJykgLT4ge306CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fbmFtZV9fLCAnZm9vJykKKyAgICAgICAgdGggPSBnZXRfdHlwZV9oaW50cyhmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGgsIHt9KQorICAgICAgICBjdGggPSBnZXRfdHlwZV9oaW50cyhDLmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdGgsIHt9KQorICAgICAgICBpdGggPSBnZXRfdHlwZV9oaW50cyhDKCkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0aCwge30pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2dsb2JhbHMoc2VsZik6CisgICAgICAgIGNvZGUgPSAoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgIiAgICBkZWYgZm9vKHNlbGYsIGE6ICdDJykgLT4gJ0QnOiBwYXNzXG4iCisgICAgICAgICAgICAgICAgImNsYXNzIEQ6XG4iCisgICAgICAgICAgICAgICAgIiAgICBkZWYgYmFyKHNlbGYsIGI6ICdEJykgLT4gQzogcGFzc1xuIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICBoaW50cyA9IGdldF90eXBlX2hpbnRzKG5zWydDJ10uZm9vKQorICAgICAgICBhc3NlcnQgaGludHMgPT0geydhJzogbnNbJ0MnXSwgJ3JldHVybic6IG5zWydEJ119CisKKworY2xhc3MgT3ZlcmxvYWRUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9vdmVybG9hZF9leGlzdHMoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBvdmVybG9hZAorCisgICAgZGVmIHRlc3Rfb3ZlcmxvYWRfZmFpbHMoc2VsZik6CisgICAgICAgIGZyb20gdHlwaW5nIGltcG9ydCBvdmVybG9hZAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIEBvdmVybG9hZAorICAgICAgICAgICAgZGVmIGJsYWgoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKworY2xhc3MgQ29sbGVjdGlvbnNBYmNUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9oYXNoYWJsZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5IYXNoYWJsZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSGFzaGFibGUpCisKKyAgICBkZWYgdGVzdF9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5JdGVyYWJsZSkKKyAgICAgICAgIyBEdWUgdG8gQUJDIGNhY2hpbmcsIHRoZSBzZWNvbmQgdGltZSB0YWtlcyBhIHNlcGFyYXRlIGNvZGUKKyAgICAgICAgIyBwYXRoIGFuZCBjb3VsZCBmYWlsLiAgU28gY2FsbCB0aGlzIGEgZmV3IHRpbWVzLgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkl0ZXJhYmxlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkl0ZXJhYmxlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkl0ZXJhYmxlW2ludF0pCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkl0ZXJhYmxlKQorICAgICAgICAjIEp1c3QgaW4gY2FzZSwgYWxzbyB0ZXN0IGlzc3ViY2xhc3MoKSBhIGZldyB0aW1lcy4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobGlzdCwgdHlwaW5nLkl0ZXJhYmxlKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhsaXN0LCB0eXBpbmcuSXRlcmFibGUpCisKKyAgICBkZWYgdGVzdF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgaXQgPSBpdGVyKFtdKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgdHlwaW5nLkl0ZXJhdG9yKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgdHlwaW5nLkl0ZXJhdG9yW2ludF0pCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkl0ZXJhdG9yKQorCisgICAgZGVmIHRlc3Rfc2l6ZWQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuU2l6ZWQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLlNpemVkKQorCisgICAgZGVmIHRlc3RfY29udGFpbmVyKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkNvbnRhaW5lcikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuQ29udGFpbmVyKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RzZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNldCgpLCB0eXBpbmcuQWJzdHJhY3RTZXQpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkFic3RyYWN0U2V0KQorCisgICAgZGVmIHRlc3RfbXV0YWJsZXNldChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc2V0KCksIHR5cGluZy5NdXRhYmxlU2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoZnJvemVuc2V0KCksIHR5cGluZy5NdXRhYmxlU2V0KQorCisgICAgZGVmIHRlc3RfbWFwcGluZyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoe30sIHR5cGluZy5NYXBwaW5nKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5NYXBwaW5nKQorCisgICAgZGVmIHRlc3RfbXV0YWJsZW1hcHBpbmcoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LCB0eXBpbmcuTXV0YWJsZU1hcHBpbmcpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLk11dGFibGVNYXBwaW5nKQorCisgICAgZGVmIHRlc3Rfc2VxdWVuY2Uoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuU2VxdWVuY2UpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLlNlcXVlbmNlKQorCisgICAgZGVmIHRlc3RfbXV0YWJsZXNlcXVlbmNlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLk11dGFibGVTZXF1ZW5jZSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKCgpLCB0eXBpbmcuTXV0YWJsZVNlcXVlbmNlKQorCisgICAgZGVmIHRlc3RfYnl0ZXN0cmluZyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYicnLCB0eXBpbmcuQnl0ZVN0cmluZykKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYnl0ZWFycmF5KGInJyksIHR5cGluZy5CeXRlU3RyaW5nKQorCisgICAgZGVmIHRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobGlzdCwgdHlwaW5nLkxpc3QpCisKKyAgICBkZWYgdGVzdF9zZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHNldCwgdHlwaW5nLlNldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKGZyb3plbnNldCwgdHlwaW5nLlNldCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbnNldChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZnJvemVuc2V0LCB0eXBpbmcuRnJvemVuU2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc2V0LCB0eXBpbmcuRnJvemVuU2V0KQorCisgICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZGljdCwgdHlwaW5nLkRpY3QpCisKKyAgICBkZWYgdGVzdF9ub19saXN0X2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5MaXN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkxpc3RbVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuTGlzdFtpbnRdKCkKKworICAgIGRlZiB0ZXN0X2xpc3Rfc3ViY2xhc3NfaW5zdGFudGlhdGlvbihzZWxmKToKKworICAgICAgICBjbGFzcyBNeUxpc3QodHlwaW5nLkxpc3RbaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYSA9IE15TGlzdCgpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGEsIE15TGlzdCkKKworICAgIGRlZiB0ZXN0X25vX2RpY3RfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkRpY3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRGljdFtLVCwgVlRdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkRpY3Rbc3RyLCBpbnRdKCkKKworICAgIGRlZiB0ZXN0X2RpY3Rfc3ViY2xhc3NfaW5zdGFudGlhdGlvbihzZWxmKToKKworICAgICAgICBjbGFzcyBNeURpY3QodHlwaW5nLkRpY3Rbc3RyLCBpbnRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkID0gTXlEaWN0KCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgTXlEaWN0KQorCisgICAgZGVmIHRlc3Rfbm9fc2V0X2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5TZXQoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuU2V0W1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLlNldFtpbnRdKCkKKworICAgIGRlZiB0ZXN0X3NldF9zdWJjbGFzc19pbnN0YW50aWF0aW9uKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE15U2V0KHR5cGluZy5TZXRbaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZCA9IE15U2V0KCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgTXlTZXQpCisKKyAgICBkZWYgdGVzdF9ub19mcm96ZW5zZXRfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkZyb3plblNldCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5Gcm96ZW5TZXRbVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRnJvemVuU2V0W2ludF0oKQorCisgICAgZGVmIHRlc3RfZnJvemVuc2V0X3N1YmNsYXNzX2luc3RhbnRpYXRpb24oc2VsZik6CisKKyAgICAgICAgY2xhc3MgTXlGcm96ZW5TZXQodHlwaW5nLkZyb3plblNldFtpbnRdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkID0gTXlGcm96ZW5TZXQoKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkLCBNeUZyb3plblNldCkKKworICAgIGRlZiB0ZXN0X25vX3R1cGxlX2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR1cGxlKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHVwbGVbVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBUdXBsZVtpbnRdKCkKKworICAgIGRlZiB0ZXN0X2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgNDIKKyAgICAgICAgZyA9IGZvbygpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUoZyksIHR5cGluZy5HZW5lcmF0b3IpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5HZW5lcmF0b3JbTWFuYWdlciwgRW1wbG95ZWUsIE1hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuR2VuZXJhdG9yW0VtcGxveWVlLCBNYW5hZ2VyLCBFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuR2VuZXJhdG9yW01hbmFnZXIsIE1hbmFnZXIsIE1hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcltFbXBsb3llZSwgRW1wbG95ZWUsIEVtcGxveWVlXSkKKworICAgIGRlZiB0ZXN0X25vX2dlbmVyYXRvcl9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuR2VuZXJhdG9yKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcltULCBULCBUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3JbaW50LCBpbnQsIGludF0oKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CisKKyAgICAgICAgY2xhc3MgTU1BKHR5cGluZy5NdXRhYmxlTWFwcGluZyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiAgIyBJdCdzIGFic3RyYWN0CisgICAgICAgICAgICBNTUEoKQorCisgICAgICAgIGNsYXNzIE1NQyhNTUEpOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBhc3NlcnQgbGVuKE1NQygpKSA9PSAwCisKKyAgICAgICAgY2xhc3MgTU1CKHR5cGluZy5NdXRhYmxlTWFwcGluZ1tLVCwgVlRdKToKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgYXNzZXJ0IGxlbihNTUIoKSkgPT0gMAorICAgICAgICBhc3NlcnQgbGVuKE1NQltzdHIsIHN0cl0oKSkgPT0gMAorICAgICAgICBhc3NlcnQgbGVuKE1NQltLVCwgVlRdKCkpID09IDAKKworCitjbGFzcyBOYW1lZFR1cGxlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBFbXAgPSBOYW1lZFR1cGxlKCdFbXAnLCBbKCduYW1lJywgc3RyKSwgKCdpZCcsIGludCldKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhFbXAsIHR1cGxlKQorICAgICAgICBqb2UgPSBFbXAoJ0pvZScsIDQyKQorICAgICAgICBqaW0gPSBFbXAobmFtZT0nSmltJywgaWQ9MSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoam9lLCBFbXApCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGpvZSwgdHVwbGUpCisgICAgICAgIGFzc2VydCBqb2UubmFtZSA9PSAnSm9lJworICAgICAgICBhc3NlcnQgam9lLmlkID09IDQyCisgICAgICAgIGFzc2VydCBqaW0ubmFtZSA9PSAnSmltJworICAgICAgICBhc3NlcnQgamltLmlkID09IDEKKyAgICAgICAgYXNzZXJ0IEVtcC5fX25hbWVfXyA9PSAnRW1wJworICAgICAgICBhc3NlcnQgRW1wLl9maWVsZHMgPT0gKCduYW1lJywgJ2lkJykKKyAgICAgICAgYXNzZXJ0IEVtcC5fZmllbGRfdHlwZXMgPT0gZGljdChuYW1lPXN0ciwgaWQ9aW50KQorCisKK2NsYXNzIElPVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW8oc2VsZik6CisKKyAgICAgICAgZGVmIHN0dWZmKGE6IElPKSAtPiBBbnlTdHI6CisgICAgICAgICAgICByZXR1cm4gYS5yZWFkbGluZSgpCisKKyAgICAgICAgYSA9IHN0dWZmLl9fYW5ub3RhdGlvbnNfX1snYSddCisgICAgICAgIGFzc2VydCBhLl9fcGFyYW1ldGVyc19fID09IChBbnlTdHIsKQorCisgICAgZGVmIHRlc3RfdGV4dGlvKHNlbGYpOgorCisgICAgICAgIGRlZiBzdHVmZihhOiBUZXh0SU8pIC0+IHN0cjoKKyAgICAgICAgICAgIHJldHVybiBhLnJlYWRsaW5lKCkKKworICAgICAgICBhID0gc3R1ZmYuX19hbm5vdGF0aW9uc19fWydhJ10KKyAgICAgICAgYXNzZXJ0IGEuX19wYXJhbWV0ZXJzX18gPT0gKHN0ciwpCisKKyAgICBkZWYgdGVzdF9iaW5hcnlpbyhzZWxmKToKKworICAgICAgICBkZWYgc3R1ZmYoYTogQmluYXJ5SU8pIC0+IGJ5dGVzOgorICAgICAgICAgICAgcmV0dXJuIGEucmVhZGxpbmUoKQorCisgICAgICAgIGEgPSBzdHVmZi5fX2Fubm90YXRpb25zX19bJ2EnXQorICAgICAgICBhc3NlcnQgYS5fX3BhcmFtZXRlcnNfXyA9PSAoYnl0ZXMsKQorCisgICAgZGVmIHRlc3RfaW9fc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZy5pbyBpbXBvcnQgSU8sIFRleHRJTywgQmluYXJ5SU8sIF9fYWxsX18sIF9fbmFtZV9fCisgICAgICAgIGFzc2VydCBJTyBpcyB0eXBpbmcuSU8KKyAgICAgICAgYXNzZXJ0IFRleHRJTyBpcyB0eXBpbmcuVGV4dElPCisgICAgICAgIGFzc2VydCBCaW5hcnlJTyBpcyB0eXBpbmcuQmluYXJ5SU8KKyAgICAgICAgYXNzZXJ0IHNldChfX2FsbF9fKSA9PSBzZXQoWydJTycsICdUZXh0SU8nLCAnQmluYXJ5SU8nXSkKKyAgICAgICAgYXNzZXJ0IF9fbmFtZV9fID09ICd0eXBpbmcuaW8nCisKKworY2xhc3MgUkVUZXN0cyhUZXN0Q2FzZSk6CisgICAgIyBNdWNoIG9mIHRoaXMgaXMgcmVhbGx5IHRlc3RpbmcgX1R5cGVBbGlhcy4KKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnW2Etel0rJywgcmUuSSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MocGF0Ll9fY2xhc3NfXywgUGF0dGVybikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShwYXQpLCBQYXR0ZXJuKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKHBhdCksIFBhdHRlcm5bc3RyXSkKKworICAgICAgICBtYXQgPSBwYXQuc2VhcmNoKCcxMjM0NWFiY2RlLi4uLi4nKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhtYXQuX19jbGFzc19fLCBNYXRjaCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobWF0Ll9fY2xhc3NfXywgTWF0Y2hbc3RyXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobWF0Ll9fY2xhc3NfXywgTWF0Y2hbYnl0ZXNdKSAgIyBTYWQgYnV0IHRydWUuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUobWF0KSwgTWF0Y2gpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUobWF0KSwgTWF0Y2hbc3RyXSkKKworICAgICAgICBwID0gUGF0dGVybltVbmlvbltzdHIsIGJ5dGVzXV0KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoUGF0dGVybltzdHJdLCBQYXR0ZXJuKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhQYXR0ZXJuW3N0cl0sIHApCisKKyAgICAgICAgbSA9IE1hdGNoW1VuaW9uW2J5dGVzLCBzdHJdXQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhNYXRjaFtieXRlc10sIE1hdGNoKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhNYXRjaFtieXRlc10sIG0pCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgRG9lc24ndCBmaXQgQW55U3RyLgorICAgICAgICAgICAgUGF0dGVybltpbnRdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgQ2FuJ3QgY2hhbmdlIHR5cGUgdmFycz8KKyAgICAgICAgICAgIE1hdGNoW1RdCisgICAgICAgIG0gPSBNYXRjaFtVbmlvbltzdHIsIGJ5dGVzXV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgIyBUb28gY29tcGxpY2F0ZWQ/CisgICAgICAgICAgICBtW3N0cl0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgIyBXZSBkb24ndCBzdXBwb3J0IGlzaW5zdGFuY2UoKS4KKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIFBhdHRlcm4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgV2UgZG9uJ3Qgc3VwcG9ydCBpc2luc3RhbmNlKCkuCisgICAgICAgICAgICBpc2luc3RhbmNlKDQyLCBQYXR0ZXJuW3N0cl0pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBhc3NlcnQgcmVwcihQYXR0ZXJuKSA9PSAnUGF0dGVyblt+QW55U3RyXScKKyAgICAgICAgYXNzZXJ0IHJlcHIoUGF0dGVybltzdHJdKSA9PSAnUGF0dGVybltzdHJdJworICAgICAgICBhc3NlcnQgcmVwcihQYXR0ZXJuW2J5dGVzXSkgPT0gJ1BhdHRlcm5bYnl0ZXNdJworICAgICAgICBhc3NlcnQgcmVwcihNYXRjaCkgPT0gJ01hdGNoW35BbnlTdHJdJworICAgICAgICBhc3NlcnQgcmVwcihNYXRjaFtzdHJdKSA9PSAnTWF0Y2hbc3RyXScKKyAgICAgICAgYXNzZXJ0IHJlcHIoTWF0Y2hbYnl0ZXNdKSA9PSAnTWF0Y2hbYnl0ZXNdJworCisgICAgZGVmIHRlc3RfcmVfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZy5yZSBpbXBvcnQgTWF0Y2gsIFBhdHRlcm4sIF9fYWxsX18sIF9fbmFtZV9fCisgICAgICAgIGFzc2VydCBNYXRjaCBpcyB0eXBpbmcuTWF0Y2gKKyAgICAgICAgYXNzZXJ0IFBhdHRlcm4gaXMgdHlwaW5nLlBhdHRlcm4KKyAgICAgICAgYXNzZXJ0IHNldChfX2FsbF9fKSA9PSBzZXQoWydNYXRjaCcsICdQYXR0ZXJuJ10pCisgICAgICAgIGFzc2VydCBfX25hbWVfXyA9PSAndHlwaW5nLnJlJworCisgICAgZGVmIHRlc3RfY2Fubm90X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZXg6CisKKyAgICAgICAgICAgIGNsYXNzIEEodHlwaW5nLk1hdGNoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IHN0cihleC5leGNlcHRpb24pID09ICJBIHR5cGUgYWxpYXMgY2Fubm90IGJlIHN1YmNsYXNzZWQiCisKKworY2xhc3MgQWxsVGVzdHMoVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciBfX2FsbF9fLiIiIgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgX19hbGxfXyBhcyBhCisgICAgICAgICMgSnVzdCBzcG90LWNoZWNrIHRoZSBmaXJzdCBhbmQgbGFzdCBvZiBldmVyeSBjYXRlZ29yeS4KKyAgICAgICAgYXNzZXJ0ICdBYnN0cmFjdFNldCcgaW4gYQorICAgICAgICBhc3NlcnQgJ1ZhbHVlc1ZpZXcnIGluIGEKKyAgICAgICAgYXNzZXJ0ICdjYXN0JyBpbiBhCisgICAgICAgIGFzc2VydCAnb3ZlcmxvYWQnIGluIGEKKyAgICAgICAgYXNzZXJ0ICdpbycgaW4gYQorICAgICAgICBhc3NlcnQgJ3JlJyBpbiBhCisgICAgICAgICMgU3BvdC1jaGVjayB0aGF0IHN0ZGxpYiBtb2R1bGVzIGFyZW4ndCBleHBvcnRlZC4KKyAgICAgICAgYXNzZXJ0ICdvcycgbm90IGluIGEKKyAgICAgICAgYXNzZXJ0ICdzeXMnIG5vdCBpbiBhCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdWNuLnB5IGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKaW5kZXggMWUwN2Y2Ni4uOGZlYmYwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91Y24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKQEAgLTIzMyw4ICsyMzMsNSBAQAogICAgICAgICApCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFVuaWNvZGVOYW1lc1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5hcnkucHkgYi9MaWIvdGVzdC90ZXN0X3VuYXJ5LnB5CmluZGV4IGI4MzU1NjQuLmMzYzE3Y2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5hcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmFyeS5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3QgY29tcGlsZXIgY2hhbmdlcyBmb3IgdW5hcnkgb3BzICgrLCAtLCB+KSBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjIiIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGNsYXNzIFVuYXJ5T3BUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTUwLDkgKzQ5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAifjIuMCIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChVbmFyeU9wVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDVlZmJlM2UuLjNmY2I1OTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgX3N0cmluZwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTMxNSw2ICszMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3JkKCdhJyk6IE5vbmUsIG9yZCgnYicpOiAnJ30pCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCd4eXl4JywgJ3h6eCcsICd0cmFuc2xhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3JkKCd6Jyk6ICd5eSd9KQorCiAgICAgICAgICMgdGhpcyBuZWVkcyBtYWtldHJhbnMoKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgnYWJhYmFiYycsICdhYmFiYWJjJywgJ3RyYW5zbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnYic6ICc8aT4nfSkKQEAgLTMyNCw2ICszMjYsMzMgQEAKICAgICAgICAgdGJsID0gc2VsZi50eXBlMnRlc3QubWFrZXRyYW5zKCdhYmMnLCAneHl6JywgJ2QnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgneHl6enknLCAnYWJkY2RjYmRkZGQnLCAndHJhbnNsYXRlJywgdGJsKQogCisgICAgICAgICMgdmFyaW91cyB0ZXN0cyBzd2l0Y2hpbmcgZnJvbSBBU0NJSSB0byBsYXRpbjEgb3IgdGhlIG9wcG9zaXRlOworICAgICAgICAjIHNhbWUgbGVuZ3RoLCByZW1vdmUgYSBsZXR0ZXIsIG9yIHJlcGxhY2Ugd2l0aCBhIGxvbmdlciBzdHJpbmcuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoJ2EnLCAnWCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW1hdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiAnWCd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltYXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogTm9uZX0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW10iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnYSc6ICdYWFgnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbWFhYXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogJ1x4ZTknfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbXHhlOV0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnYSc6ICc8XHhlOT4nfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbPFx4ZTk+XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltceGU5XSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydceGU5JzogJ2EnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbYV0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHhlOV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnXHhlOSc6IE5vbmV9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltdIikKKworICAgICAgICAjIGludmFsaWQgVW5pY29kZSBjaGFyYWN0ZXJzCisgICAgICAgIGludmFsaWRfY2hhciA9IDB4MTBmZmZmKzEKKyAgICAgICAgZm9yIGJlZm9yZSBpbiAiYVx4ZTlcdTIwYWNcVTAwMTBmZmZmIjoKKyAgICAgICAgICAgIG1hcHBpbmcgPSBzdHIubWFrZXRyYW5zKHtiZWZvcmU6IGludmFsaWRfY2hhcn0pCisgICAgICAgICAgICB0ZXh0ID0gIlslc10iICUgYmVmb3JlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0ZXh0LnRyYW5zbGF0ZSwgbWFwcGluZykKKworICAgICAgICAjIGVycm9ycwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0Lm1ha2V0cmFucykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QubWFrZXRyYW5zLCAnYWJjJywgJ2RlZmcnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0Lm1ha2V0cmFucywgMiwgJ2RlZicpCkBAIC0xMzA2LDIwICsxMzM1LDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyUuMnMnICUgImFceGU5XHUyMGFjIiwgJ2FceGU5JykKIAogICAgICAgICAjaXNzdWUgMTk5OTUKLSAgICAgICAgY2xhc3MgUHN1ZWRvSW50OgorICAgICAgICBjbGFzcyBQc2V1ZG9JbnQ6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgogICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBpbnQodmFsdWUpCiAgICAgICAgICAgICBkZWYgX19pbnRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQogICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQotICAgICAgICBjbGFzcyBQc3VlZG9GbG9hdDoKKyAgICAgICAgY2xhc3MgUHNldWRvRmxvYXQ6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgogICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBmbG9hdCh2YWx1ZSkKICAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnQoc2VsZi52YWx1ZSkKLSAgICAgICAgcGkgPSBQc3VlZG9GbG9hdCgzLjE0MTUpCi0gICAgICAgIGxldHRlcl9tID0gUHN1ZWRvSW50KDEwOSkKKyAgICAgICAgcGkgPSBQc2V1ZG9GbG9hdCgzLjE0MTUpCisgICAgICAgIGxldHRlcl9tID0gUHNldWRvSW50KDEwOSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJXgnICUgNDIsICcyYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVYJyAlIDE1LCAnRicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVvJyAlIDksICcxMScpCkBAIC0xMzI4LDExICsxMzU3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVYJyAlIGxldHRlcl9tLCAnNkQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclbycgJSBsZXR0ZXJfbSwgJzE1NScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVjJyAlIGxldHRlcl9tLCAnbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCAnJXgnLl9fbW9kX18sIHBpKSwKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICcleCcuX19tb2RfXywgMy4xNCksCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCAnJVgnLl9fbW9kX18sIDIuMTEpLAotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyVvJy5fX21vZF9fLCAxLjc5KSwKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICclYycuX19tb2RfXywgcGkpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJyV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0Jywgb3BlcmF0b3IubW9kLCAnJXgnLCAzLjE0KSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICclWCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCcsIG9wZXJhdG9yLm1vZCwgJyVYJywgMi4xMSksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnJW8gZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQnLCBvcGVyYXRvci5tb2QsICclbycsIDEuNzkpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJyV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IFBzZXVkb0Zsb2F0Jywgb3BlcmF0b3IubW9kLCAnJXgnLCBwaSksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubW9kLCAnJWMnLCBwaSksCiAKICAgICBkZWYgdGVzdF9mb3JtYXR0aW5nX3dpdGhfZW51bShzZWxmKToKICAgICAgICAgIyBpc3N1ZTE4NzgwCkBAIC0yMDUyLDcgKzIwODEsOCBAQAogICAgICAgICAgICAgJ2NwODYzJywgJ2NwODY1JywgJ2NwODY2JywgJ2NwMTEyNScsCiAgICAgICAgICAgICAnaXNvODg1OV8xMCcsICdpc284ODU5XzEzJywgJ2lzbzg4NTlfMTQnLCAnaXNvODg1OV8xNScsCiAgICAgICAgICAgICAnaXNvODg1OV8yJywgJ2lzbzg4NTlfMycsICdpc284ODU5XzQnLCAnaXNvODg1OV81JywgJ2lzbzg4NTlfNicsCi0gICAgICAgICAgICAnaXNvODg1OV83JywgJ2lzbzg4NTlfOScsICdrb2k4X3InLCAnbGF0aW5fMScsCisgICAgICAgICAgICAnaXNvODg1OV83JywgJ2lzbzg4NTlfOScsCisgICAgICAgICAgICAna29pOF9yJywgJ2tvaThfdCcsICdrb2k4X3UnLCAna3oxMDQ4JywgJ2xhdGluXzEnLAogICAgICAgICAgICAgJ21hY19jeXJpbGxpYycsICdtYWNfbGF0aW4yJywKIAogICAgICAgICAgICAgJ2NwMTI1MCcsICdjcDEyNTEnLCAnY3AxMjUyJywgJ2NwMTI1MycsICdjcDEyNTQnLCAnY3AxMjU1JywKQEAgLTIwODAsMTQgKzIxMTAsMTQgQEAKICAgICAgICAgICAgICdjcDg2MycsICdjcDg2NScsICdjcDg2NicsICdjcDExMjUnLAogICAgICAgICAgICAgJ2lzbzg4NTlfMTAnLCAnaXNvODg1OV8xMycsICdpc284ODU5XzE0JywgJ2lzbzg4NTlfMTUnLAogICAgICAgICAgICAgJ2lzbzg4NTlfMicsICdpc284ODU5XzQnLCAnaXNvODg1OV81JywKLSAgICAgICAgICAgICdpc284ODU5XzknLCAna29pOF9yJywgJ2xhdGluXzEnLAorICAgICAgICAgICAgJ2lzbzg4NTlfOScsICdrb2k4X3InLCAna29pOF91JywgJ2xhdGluXzEnLAogICAgICAgICAgICAgJ21hY19jeXJpbGxpYycsICdtYWNfbGF0aW4yJywKIAogICAgICAgICAgICAgIyMjIFRoZXNlIGhhdmUgdW5kZWZpbmVkIG1hcHBpbmdzOgogICAgICAgICAgICAgIydjcDEyNTAnLCAnY3AxMjUxJywgJ2NwMTI1MicsICdjcDEyNTMnLCAnY3AxMjU0JywgJ2NwMTI1NScsCiAgICAgICAgICAgICAjJ2NwMTI1NicsICdjcDEyNTcnLCAnY3AxMjU4JywKICAgICAgICAgICAgICMnY3A0MjQnLCAnY3A4NTYnLCAnY3A4NTcnLCAnY3A4NjQnLCAnY3A4NjknLCAnY3A4NzQnLAotICAgICAgICAgICAgIydpc284ODU5XzMnLCAnaXNvODg1OV82JywgJ2lzbzg4NTlfNycsCisgICAgICAgICAgICAjJ2lzbzg4NTlfMycsICdpc284ODU5XzYnLCAnaXNvODg1OV83JywgJ2tvaThfdCcsICdrejEwNDgnLAogICAgICAgICAgICAgIydtYWNfZ3JlZWsnLCAnbWFjX2ljZWxhbmQnLCdtYWNfcm9tYW4nLCAnbWFjX3R1cmtpc2gnLAogCiAgICAgICAgICAgICAjIyMgVGhlc2UgZmFpbCB0aGUgcm91bmQtdHJpcDoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CmluZGV4IDcwN2IzMGUuLjBmMzNkMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQpAQCAtMjEsNyArMjEsNyBAQAogY2xhc3MgVW5pY29kZU1ldGhvZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdlNzRlODc4ZGU3MWI2ZTc4MGZmYWMyNzE3ODVjM2NiNThmNjI1MWYzJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNTk3MTc2MDg3MmIyZjk4YmI5YzcwMWU2YzBkYjMyNzNkNzU2YjNlYycKIAogICAgIGRlZiB0ZXN0X21ldGhvZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC03OSw4ICs3OSw5IEBACiAKIGNsYXNzIFVuaWNvZGVGdW5jdGlvbnNUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCi0gICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2YwYjc0ZDI2Nzc2MzMxY2M3YmRjM2E0Njk4ZjAzN2Q3M2YyY2VlMmInCisgICAgIyBVcGRhdGUgdGhpcyBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcy4gTWFrZSBzdXJlIHRvIGRvIGEgZnVsbCByZWJ1aWxkCisgICAgIyAoZS5nLiAnbWFrZSBkaXN0Y2xlYW4gJiYgbWFrZScpIHRvIGdldCB0aGUgY29ycmVjdCBjaGVja3N1bS4KKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJzVlNzQ4MjdjZDA3ZjllNTQ2YTMwZjM0YjdiY2Y2Y2MyZWFjMzhjOGMnCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTMxMiwxMiArMzEzLDUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlx1JS40eCBzaG91bGQgbm90IGJlIGEgbGluZWJyZWFrIiAlIGkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBVbmljb2RlTWlzY1Rlc3QsCi0gICAgICAgIFVuaWNvZGVNZXRob2RzVGVzdCwKLSAgICAgICAgVW5pY29kZUZ1bmN0aW9uc1Rlc3QKLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKaW5kZXggYjFjNDgzZC4uZDFjY2IzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKQEAgLTc2LDcgKzc2LDcgQEAKICAgICA+Pj4gYSwgYiwgYywgZCA9IFNlcSgpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVmFsdWVFcnJvcjogbmVlZCBtb3JlIHRoYW4gMyB2YWx1ZXMgdG8gdW5wYWNrCisgICAgVmFsdWVFcnJvcjogbm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCA0LCBnb3QgMykKIAogVW5wYWNraW5nIHNlcXVlbmNlIHRvbyBsb25nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKaW5kZXggYWUyZGNiZC4uZDI3ZWVmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKQEAgLTcxLDggKzcxLDE4OCBAQAogICAgID4+PiBhID09IDAgYW5kIGIgPT0gWzEsIDIsIDNdIGFuZCBjID09IDQgYW5kIGQgPT0gWzAsIDEsIDIsIDNdIGFuZCBlID09IDQKICAgICBUcnVlCiAKK0Fzc2lnbm1lbnQgdW5wYWNraW5nCisKKyAgICA+Pj4gYSwgYiwgKmMgPSByYW5nZSg1KQorICAgID4+PiBhLCBiLCBjCisgICAgKDAsIDEsIFsyLCAzLCA0XSkKKyAgICA+Pj4gKmEsIGIsIGMgPSBhLCBiLCAqYworICAgID4+PiBhLCBiLCBjCisgICAgKFswLCAxLCAyXSwgMywgNCkKKworU2V0IGRpc3BsYXkgZWxlbWVudCB1bnBhY2tpbmcKKworICAgID4+PiBhID0gWzEsIDIsIDNdCisgICAgPj4+IHNvcnRlZCh7MSwgKmEsIDAsIDR9KQorICAgIFswLCAxLCAyLCAzLCA0XQorCisgICAgPj4+IHsxLCAqMSwgMCwgNH0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdpbnQnIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworRGljdCBkaXNwbGF5IGVsZW1lbnQgdW5wYWNraW5nCisKKyAgICA+Pj4ga3dkcyA9IHsneic6IDAsICd3JzogMTJ9CisgICAgPj4+IHNvcnRlZCh7J3gnOiAxLCAneSc6IDIsICoqa3dkc30uaXRlbXMoKSkKKyAgICBbKCd3JywgMTIpLCAoJ3gnLCAxKSwgKCd5JywgMiksICgneicsIDApXQorCisgICAgPj4+IHNvcnRlZCh7Kip7J3gnOiAxfSwgJ3knOiAyLCAqKnsneic6IDN9fS5pdGVtcygpKQorICAgIFsoJ3gnLCAxKSwgKCd5JywgMiksICgneicsIDMpXQorCisgICAgPj4+IHNvcnRlZCh7Kip7J3gnOiAxfSwgJ3knOiAyLCAqKnsneCc6IDN9fS5pdGVtcygpKQorICAgIFsoJ3gnLCAzKSwgKCd5JywgMildCisKKyAgICA+Pj4gc29ydGVkKHsqKnsneCc6IDF9LCAqKnsneCc6IDN9LCAneCc6IDR9Lml0ZW1zKCkpCisgICAgWygneCcsIDQpXQorCisgICAgPj4+IHsqKnt9fQorICAgIHt9CisKKyAgICA+Pj4gYSA9IHt9CisgICAgPj4+IHsqKmF9WzBdID0gMQorICAgID4+PiBhCisgICAge30KKworICAgID4+PiB7KioxfQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdpbnQnIG9iamVjdCBpcyBub3QgYSBtYXBwaW5nCisKKyAgICA+Pj4geyoqW119CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ2xpc3QnIG9iamVjdCBpcyBub3QgYSBtYXBwaW5nCisKKyAgICA+Pj4gbGVuKGV2YWwoInsiICsgIiwgIi5qb2luKCIqKnt7e306IHt9fX0iLmZvcm1hdChpLCBpKQorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCkpICsgIn0iKSkKKyAgICAxMDAwCisKKyAgICA+Pj4gezA6MSwgKip7MDoyfSwgMDozLCAwOjR9CisgICAgezA6IDR9CisKK0xpc3QgY29tcHJlaGVuc2lvbiBlbGVtZW50IHVucGFja2luZworCisgICAgPj4+IGEsIGIsIGMgPSBbMCwgMSwgMl0sIDMsIDQKKyAgICA+Pj4gWyphLCBiLCBjXQorICAgIFswLCAxLCAyLCAzLCA0XQorCisgICAgPj4+IGwgPSBbYSwgKDMsIDQpLCB7NX0sIHs2OiBOb25lfSwgKGkgZm9yIGkgaW4gcmFuZ2UoNywgMTApKV0KKyAgICA+Pj4gWyppdGVtIGZvciBpdGVtIGluIGxdCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFN5bnRheEVycm9yOiBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgorCisgICAgPj4+IFsqWzAsIDFdIGZvciBpIGluIHJhbmdlKDEwKV0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgU3ludGF4RXJyb3I6IGl0ZXJhYmxlIHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBjb21wcmVoZW5zaW9uCisKKyAgICA+Pj4gWyonYScgZm9yIGkgaW4gcmFuZ2UoMTApXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBTeW50YXhFcnJvcjogaXRlcmFibGUgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbXByZWhlbnNpb24KKworICAgID4+PiBbKltdIGZvciBpIGluIHJhbmdlKDEwKV0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgU3ludGF4RXJyb3I6IGl0ZXJhYmxlIHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBjb21wcmVoZW5zaW9uCisKK0dlbmVyYXRvciBleHByZXNzaW9uIGluIGZ1bmN0aW9uIGFyZ3VtZW50cworCisgICAgPj4+IGxpc3QoKnggZm9yIHggaW4gKHJhbmdlKDUpIGZvciBpIGluIHJhbmdlKDMpKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgICAgIGxpc3QoKnggZm9yIHggaW4gKHJhbmdlKDUpIGZvciBpIGluIHJhbmdlKDMpKSkKKyAgICAgICAgICAgICAgICAgIF4KKyAgICBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgKKworICAgID4+PiBkaWN0KCoqeCBmb3IgeCBpbiBbezE6Mn1dKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICAgICAgZGljdCgqKnggZm9yIHggaW4gW3sxOjJ9XSkKKyAgICAgICAgICAgICAgICAgICBeCisgICAgU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4CisKK0l0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZworCisgICAgPj4+IHByaW50KCpbMV0sICpbMl0sIDMpCisgICAgMSAyIDMKKworTWFrZSBzdXJlIHRoYXQgdGhleSBkb24ndCBjb3JydXB0IHRoZSBwYXNzZWQtaW4gZGljdHMuCisKKyAgICA+Pj4gZGVmIGYoeCwgeSk6CisgICAgLi4uICAgICBwcmludCh4LCB5KQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbF9kaWN0ID0geyd4JzogMX0KKyAgICA+Pj4gZigqKm9yaWdpbmFsX2RpY3QsIHk9MikKKyAgICAxIDIKKyAgICA+Pj4gb3JpZ2luYWxfZGljdAorICAgIHsneCc6IDF9CisKIE5vdyBmb3Igc29tZSBmYWlsdXJlcwogCitNYWtlIHN1cmUgdGhlIHJhaXNlZCBlcnJvcnMgYXJlIHJpZ2h0IGZvciBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZ3MKKworICAgID4+PiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKKyAgICA+Pj4gY2xhc3MgQ3JhenlEaWN0KE11dGFibGVNYXBwaW5nKToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmQgPSB7fQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIGZvciB4IGluIHNlbGYuZC5fX2l0ZXJfXygpOgorICAgIC4uLiAgICAgICAgICAgICBpZiB4ID09ICdjJzoKKyAgICAuLi4gICAgICAgICAgICAgICAgIHNlbGYuZFsneiddID0gMTAKKyAgICAuLi4gICAgICAgICAgICAgeWllbGQgeAorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGspOgorICAgIC4uLiAgICAgICAgIHJldHVybiBzZWxmLmRba10KKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5kKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGssIHYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuZFtrXSA9IHYKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrKToKKyAgICAuLi4gICAgICAgICBkZWwgc2VsZi5kW2tdCisgICAgLi4uCisgICAgPj4+IGQgPSBDcmF6eURpY3QoKQorICAgID4+PiBkLmQgPSB7Y2hyKG9yZCgnYScpICsgeCk6IHggZm9yIHggaW4gcmFuZ2UoNSl9CisgICAgPj4+IGUgPSB7KipkfQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBSdW50aW1lRXJyb3I6IGRpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24KKworICAgID4+PiBkLmQgPSB7Y2hyKG9yZCgnYScpICsgeCk6IHggZm9yIHggaW4gcmFuZ2UoNSl9CisgICAgPj4+IGRlZiBmKCoqa3dhcmdzKTogcHJpbnQoa3dhcmdzKQorICAgID4+PiBmKCoqZCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgUnVudGltZUVycm9yOiBkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uCisKK092ZXJyaWRkZW4gcGFyYW1ldGVycworCisgICAgPj4+IGYoeD01LCAqKnsneCc6IDN9LCB5PTIpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAneCcKKworICAgID4+PiBmKCoqeyd4JzogM30sIHg9NSwgeT0yKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisKKyAgICA+Pj4gZigqKnsneCc6IDN9LCAqKnsneCc6IDV9LCB5PTIpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAneCcKKworICAgID4+PiBmKCoqezE6IDN9LCAqKnsxOiA1fSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MKKwogVW5wYWNraW5nIG5vbi1zZXF1ZW5jZQogCiAgICAgPj4+IGEsICpiID0gNwpAQCAtODUsNyArMjY1LDE0IEBACiAgICAgPj4+IGEsICpiLCBjLCBkLCBlID0gU2VxKCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBWYWx1ZUVycm9yOiBuZWVkIG1vcmUgdGhhbiAzIHZhbHVlcyB0byB1bnBhY2sKKyAgICBWYWx1ZUVycm9yOiBub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0IDQsIGdvdCAzKQorCitVbnBhY2tpbmcgc2VxdWVuY2UgdG9vIHNob3J0IGFuZCB0YXJnZXQgYXBwZWFycyBsYXN0CisKKyAgICA+Pj4gYSwgYiwgYywgZCwgKmUgPSBTZXEoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFZhbHVlRXJyb3I6IG5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgYXQgbGVhc3QgNCwgZ290IDMpCiAKIFVucGFja2luZyBhIHNlcXVlbmNlIHdoZXJlIHRoZSB0ZXN0IGZvciB0b28gbG9uZyByYWlzZXMgYSBkaWZmZXJlbnQga2luZCBvZgogZXJyb3IKQEAgLTEzMSwxNyArMzE4LDE3IEBACiAgICAgPj4+ICphICMgZG9jdGVzdDorRUxMSVBTSVMKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBTeW50YXhFcnJvcjogY2FuIHVzZSBzdGFycmVkIGV4cHJlc3Npb24gb25seSBhcyBhc3NpZ25tZW50IHRhcmdldAorICAgIFN5bnRheEVycm9yOiBjYW4ndCB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIGhlcmUKIAogICAgID4+PiAqMSAjIGRvY3Rlc3Q6K0VMTElQU0lTCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgU3ludGF4RXJyb3I6IGNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQKKyAgICBTeW50YXhFcnJvcjogY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlCiAKICAgICA+Pj4geCA9ICphICMgZG9jdGVzdDorRUxMSVBTSVMKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBTeW50YXhFcnJvcjogY2FuIHVzZSBzdGFycmVkIGV4cHJlc3Npb24gb25seSBhcyBhc3NpZ25tZW50IHRhcmdldAorICAgIFN5bnRheEVycm9yOiBjYW4ndCB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIGhlcmUKIAogU29tZSBzaXplIGNvbnN0cmFpbnRzIChhbGwgZmFpbC4pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggMTYyMzZlZi4uNThjYTJhNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTEwLDcgKzEwLDEwIEBACiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBvcwotaW1wb3J0IHNzbAordHJ5OgorICAgIGltcG9ydCBzc2wKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBzc2wgPSBOb25lCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gbnR1cmwycGF0aCBpbXBvcnQgdXJsMnBhdGhuYW1lLCBwYXRobmFtZTJ1cmwKQEAgLTM4MCw2ICszODMsNyBAQAogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QuVVJMb3BlbmVyKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgInNzbCBtb2R1bGUgcmVxdWlyZWQiKQogICAgIGRlZiB0ZXN0X2NhZmlsZV9hbmRfY29udGV4dChzZWxmKToKICAgICAgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKQEAgLTEzMzEsNyArMTMzNSw3IEBACiAjICAgICBzZXJ2LnNldHRpbWVvdXQoMykKICMgICAgIHNlcnYuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKICMgICAgIHNlcnYuYmluZCgoIiIsIDkwOTMpKQotIyAgICAgc2Vydi5saXN0ZW4oNSkKKyMgICAgIHNlcnYubGlzdGVuKCkKICMgICAgIHRyeToKICMgICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQogIyAgICAgICAgIGNvbm4uc2VuZCgiMSBIb2xhIG11bmRvXG4iKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IDdkNDFlYTEuLmE1MjgxZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTExLDcgKzExLDkgQEAKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogIyBUaGUgcHJveHkgYnlwYXNzIG1ldGhvZCBpbXBvcnRlZCBiZWxvdyBoYXMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIE9TWAogIyBwcm94eSBjb25maWcgZGF0YSBzdHJ1Y3R1cmUgYnV0IGlzIHRlc3RhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuCi1mcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCBSZXF1ZXN0LCBPcGVuZXJEaXJlY3RvciwgX3BhcnNlX3Byb3h5LCBfcHJveHlfYnlwYXNzX21hY29zeF9zeXNjb25mCitmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCAoUmVxdWVzdCwgT3BlbmVyRGlyZWN0b3IsIEhUVFBCYXNpY0F1dGhIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgsIF9wYXJzZV9wcm94eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcHJveHlfYnlwYXNzX21hY29zeF9zeXNjb25mKQogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXJsbGliLmVycm9yCiBpbXBvcnQgaHR0cC5jbGllbnQKQEAgLTIxLDYgKzIzLDcgQEAKICMgQ2FjaGVGVFBIYW5kbGVyIChoYXJkIHRvIHdyaXRlKQogIyBwYXJzZV9rZXF2X2xpc3QsIHBhcnNlX2h0dHBfbGlzdCwgSFRUUERpZ2VzdEF1dGhIYW5kbGVyCiAKKwogY2xhc3MgVHJpdmlhbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X19fYWxsX18oc2VsZik6CkBAIC03MSw2ICs3NCw3IEBACiAgICAgICAgIGVyciA9IHVybGxpYi5lcnJvci5VUkxFcnJvcigncmVhc29uJykKICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIucmVhc29uLCBzdHIoZXJyKSkKIAorCiBjbGFzcyBSZXF1ZXN0SGRyc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3JlcXVlc3RfaGVhZGVyc19kaWN0KHNlbGYpOgpAQCAtMTMwLDcgKzEzNCw2IEBACiAgICAgICAgIHJlcS5yZW1vdmVfaGVhZGVyKCJVbnJlZGlyZWN0ZWQtc3BhbSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLmhhc19oZWFkZXIoIlVucmVkaXJlY3RlZC1zcGFtIikpCiAKLQogICAgIGRlZiB0ZXN0X3Bhc3N3b3JkX21hbmFnZXIoc2VsZik6CiAgICAgICAgIG1nciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBQYXNzd29yZE1ncigpCiAgICAgICAgIGFkZCA9IG1nci5hZGRfcGFzc3dvcmQKQEAgLTIzNCw0MyArMjM3LDYwIEBACiAKIGNsYXNzIE1vY2tPcGVuZXI6CiAgICAgYWRkaGVhZGVycyA9IFtdCisKICAgICBkZWYgb3BlbihzZWxmLCByZXEsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgogICAgICAgICBzZWxmLnJlcSwgc2VsZi5kYXRhLCBzZWxmLnRpbWVvdXQgPSByZXEsIGRhdGEsIHRpbWVvdXQKKwogICAgIGRlZiBlcnJvcihzZWxmLCBwcm90bywgKmFyZ3MpOgogICAgICAgICBzZWxmLnByb3RvLCBzZWxmLmFyZ3MgPSBwcm90bywgYXJncwogCisKIGNsYXNzIE1vY2tGaWxlOgotICAgIGRlZiByZWFkKHNlbGYsIGNvdW50PU5vbmUpOiBwYXNzCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIGNvdW50PU5vbmUpOiBwYXNzCi0gICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgZGVmIHJlYWQoc2VsZiwgY291bnQ9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBjb3VudD1Ob25lKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBwYXNzCisKIAogY2xhc3MgTW9ja0hlYWRlcnMoZGljdCk6CiAgICAgZGVmIGdldGhlYWRlcnMoc2VsZiwgbmFtZSk6CiAgICAgICAgIHJldHVybiBsaXN0KHNlbGYudmFsdWVzKCkpCiAKKwogY2xhc3MgTW9ja1Jlc3BvbnNlKGlvLlN0cmluZ0lPKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgY29kZSwgbXNnLCBoZWFkZXJzLCBkYXRhLCB1cmw9Tm9uZSk6CiAgICAgICAgIGlvLlN0cmluZ0lPLl9faW5pdF9fKHNlbGYsIGRhdGEpCiAgICAgICAgIHNlbGYuY29kZSwgc2VsZi5tc2csIHNlbGYuaGVhZGVycywgc2VsZi51cmwgPSBjb2RlLCBtc2csIGhlYWRlcnMsIHVybAorCiAgICAgZGVmIGluZm8oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcnMKKwogICAgIGRlZiBnZXR1cmwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnVybAogCisKIGNsYXNzIE1vY2tDb29raWVKYXI6CiAgICAgZGVmIGFkZF9jb29raWVfaGVhZGVyKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBzZWxmLmFjaF9yZXEgPSByZXF1ZXN0CisKICAgICBkZWYgZXh0cmFjdF9jb29raWVzKHNlbGYsIHJlc3BvbnNlLCByZXF1ZXN0KToKICAgICAgICAgc2VsZi5lY19yZXEsIHNlbGYuZWNfciA9IHJlcXVlc3QsIHJlc3BvbnNlCiAKKwogY2xhc3MgRmFrZU1ldGhvZDoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aF9uYW1lLCBhY3Rpb24sIGhhbmRsZSk6CiAgICAgICAgIHNlbGYubWV0aF9uYW1lID0gbWV0aF9uYW1lCiAgICAgICAgIHNlbGYuaGFuZGxlID0gaGFuZGxlCiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uCisKICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgogICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGUoc2VsZi5tZXRoX25hbWUsIHNlbGYuYWN0aW9uLCAqYXJncykKIAorCiBjbGFzcyBNb2NrSFRUUFJlc3BvbnNlKGlvLklPQmFzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwLCBtc2csIHN0YXR1cywgcmVhc29uKToKICAgICAgICAgc2VsZi5mcCA9IGZwCkBAIC0zMjQsMjQgKzM0NCwzMSBAQAogICAgICAgICAgICAgc2VsZi5kYXRhID0gYm9keQogICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2VuZGhlYWRlcnM6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKKwogICAgIGRlZiBnZXRyZXNwb25zZShzZWxmKToKICAgICAgICAgcmV0dXJuIE1vY2tIVFRQUmVzcG9uc2UoTW9ja0ZpbGUoKSwge30sIDIwMCwgIk9LIikKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgcGFzcwogCisKIGNsYXNzIE1vY2tIYW5kbGVyOgogICAgICMgdXNlZnVsIGZvciB0ZXN0aW5nIGhhbmRsZXIgbWFjaGluZXJ5CiAgICAgIyBzZWUgYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycygpIGRvY3N0cmluZwogICAgIGhhbmRsZXJfb3JkZXIgPSA1MDAKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2RzKToKICAgICAgICAgc2VsZi5fZGVmaW5lX21ldGhvZHMobWV0aG9kcykKKwogICAgIGRlZiBfZGVmaW5lX21ldGhvZHMoc2VsZiwgbWV0aG9kcyk6CiAgICAgICAgIGZvciBzcGVjIGluIG1ldGhvZHM6Ci0gICAgICAgICAgICBpZiBsZW4oc3BlYykgPT0gMjogbmFtZSwgYWN0aW9uID0gc3BlYwotICAgICAgICAgICAgZWxzZTogbmFtZSwgYWN0aW9uID0gc3BlYywgTm9uZQorICAgICAgICAgICAgaWYgbGVuKHNwZWMpID09IDI6CisgICAgICAgICAgICAgICAgbmFtZSwgYWN0aW9uID0gc3BlYworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lLCBhY3Rpb24gPSBzcGVjLCBOb25lCiAgICAgICAgICAgICBtZXRoID0gRmFrZU1ldGhvZChuYW1lLCBhY3Rpb24sIHNlbGYuaGFuZGxlKQogICAgICAgICAgICAgc2V0YXR0cihzZWxmLl9fY2xhc3NfXywgbmFtZSwgbWV0aCkKKwogICAgIGRlZiBoYW5kbGUoc2VsZiwgZm5fbmFtZSwgYWN0aW9uLCAqYXJncywgKiprd2RzKToKICAgICAgICAgc2VsZi5wYXJlbnQuY2FsbHMuYXBwZW5kKChzZWxmLCBmbl9uYW1lLCBhcmdzLCBrd2RzKSkKICAgICAgICAgaWYgYWN0aW9uIGlzIE5vbmU6CkBAIC0zNjQsMTYgKzM5MSwyMSBAQAogICAgICAgICBlbGlmIGFjdGlvbiA9PSAicmFpc2UiOgogICAgICAgICAgICAgcmFpc2UgdXJsbGliLmVycm9yLlVSTEVycm9yKCJibGFoIikKICAgICAgICAgYXNzZXJ0IEZhbHNlCi0gICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHBhc3MKKwogICAgIGRlZiBhZGRfcGFyZW50KHNlbGYsIHBhcmVudCk6CiAgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAgICAgICAgIHNlbGYucGFyZW50LmNhbGxzID0gW10KKwogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihvdGhlciwgImhhbmRsZXJfb3JkZXIiKToKICAgICAgICAgICAgICMgTm8gaGFuZGxlcl9vcmRlciwgbGVhdmUgaW4gb3JpZ2luYWwgb3JkZXIuICBZdWNrLgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlcl9vcmRlciA8IG90aGVyLmhhbmRsZXJfb3JkZXIKIAorCiBkZWYgYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycyhvcGVuZXIsIG1ldGhfc3BlYyk6CiAgICAgIiIiQ3JlYXRlIE1vY2tIYW5kbGVycyBhbmQgYWRkIHRoZW0gdG8gYW4gT3BlbmVyRGlyZWN0b3IuCiAKQEAgLTM5Niw3ICs0MjgsOSBAQAogICAgIGhhbmRsZXJzID0gW10KICAgICBjb3VudCA9IDAKICAgICBmb3IgbWV0aHMgaW4gbWV0aF9zcGVjOgotICAgICAgICBjbGFzcyBNb2NrSGFuZGxlclN1YmNsYXNzKE1vY2tIYW5kbGVyKTogcGFzcworICAgICAgICBjbGFzcyBNb2NrSGFuZGxlclN1YmNsYXNzKE1vY2tIYW5kbGVyKToKKyAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBoID0gTW9ja0hhbmRsZXJTdWJjbGFzcyhtZXRocykKICAgICAgICAgaC5oYW5kbGVyX29yZGVyICs9IGNvdW50CiAgICAgICAgIGguYWRkX3BhcmVudChvcGVuZXIpCkBAIC00MDUsMTIgKzQzOSwxNCBAQAogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaCkKICAgICByZXR1cm4gaGFuZGxlcnMKIAorCiBkZWYgYnVpbGRfdGVzdF9vcGVuZXIoKmhhbmRsZXJfaW5zdGFuY2VzKToKICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCiAgICAgZm9yIGggaW4gaGFuZGxlcl9pbnN0YW5jZXM6CiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihoKQogICAgIHJldHVybiBvcGVuZXIKIAorCiBjbGFzcyBNb2NrSFRUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuQmFzZUhhbmRsZXIpOgogICAgICMgdXNlZnVsIGZvciB0ZXN0aW5nIHJlZGlyZWN0aW9ucyBhbmQgYXV0aAogICAgICMgc2VuZHMgc3VwcGxpZWQgaGVhZGVycyBhbmQgY29kZSBhcyBmaXJzdCByZXNwb25zZQpAQCAtNDE5LDkgKzQ1NSwxMSBAQAogICAgICAgICBzZWxmLmNvZGUgPSBjb2RlCiAgICAgICAgIHNlbGYuaGVhZGVycyA9IGhlYWRlcnMKICAgICAgICAgc2VsZi5yZXNldCgpCisKICAgICBkZWYgcmVzZXQoc2VsZik6CiAgICAgICAgIHNlbGYuX2NvdW50ID0gMAogICAgICAgICBzZWxmLnJlcXVlc3RzID0gW10KKwogICAgIGRlZiBodHRwX29wZW4oc2VsZiwgcmVxKToKICAgICAgICAgaW1wb3J0IGVtYWlsLCBodHRwLmNsaWVudCwgY29weQogICAgICAgICBzZWxmLnJlcXVlc3RzLmFwcGVuZChjb3B5LmRlZXBjb3B5KHJlcSkpCkBAIC00MzYsNiArNDc0LDcgQEAKICAgICAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlxyXG5cclxuIikKICAgICAgICAgICAgIHJldHVybiBNb2NrUmVzcG9uc2UoMjAwLCAiT0siLCBtc2csICIiLCByZXEuZ2V0X2Z1bGxfdXJsKCkpCiAKKwogY2xhc3MgTW9ja0hUVFBTSGFuZGxlcih1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKToKICAgICAjIFVzZWZ1bCBmb3IgdGVzdGluZyB0aGUgUHJveHktQXV0aG9yaXphdGlvbiByZXF1ZXN0IGJ5IHZlcmlmeWluZyB0aGUKICAgICAjIHByb3BlcnRpZXMgb2YgaHR0cGNvbgpAQCAtNDQ3LDEyICs0ODYsMzMgQEAKICAgICBkZWYgaHR0cHNfb3BlbihzZWxmLCByZXEpOgogICAgICAgICByZXR1cm4gc2VsZi5kb19vcGVuKHNlbGYuaHR0cGNvbm4sIHJlcSkKIAorCitjbGFzcyBNb2NrSFRUUEhhbmRsZXJDaGVja0F1dGgodXJsbGliLnJlcXVlc3QuQmFzZUhhbmRsZXIpOgorICAgICMgdXNlZnVsIGZvciB0ZXN0aW5nIGF1dGgKKyAgICAjIHNlbmRzIHN1cHBsaWVkIGNvZGUgcmVzcG9uc2UKKyAgICAjIGNoZWNrcyBpZiBhdXRoIGhlYWRlciBpcyBzcGVjaWZpZWQgaW4gcmVxdWVzdAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2RlKToKKyAgICAgICAgc2VsZi5jb2RlID0gY29kZQorICAgICAgICBzZWxmLmhhc19hdXRoX2hlYWRlciA9IEZhbHNlCisKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHNlbGYuaGFzX2F1dGhfaGVhZGVyID0gRmFsc2UKKworICAgIGRlZiBodHRwX29wZW4oc2VsZiwgcmVxKToKKyAgICAgICAgaWYgcmVxLmhhc19oZWFkZXIoJ0F1dGhvcml6YXRpb24nKToKKyAgICAgICAgICAgIHNlbGYuaGFzX2F1dGhfaGVhZGVyID0gVHJ1ZQorICAgICAgICBuYW1lID0gaHR0cC5jbGllbnQucmVzcG9uc2VzW3NlbGYuY29kZV0KKyAgICAgICAgcmV0dXJuIE1vY2tSZXNwb25zZShzZWxmLmNvZGUsIG5hbWUsIE1vY2tGaWxlKCksICIiLCByZXEuZ2V0X2Z1bGxfdXJsKCkpCisKKworCiBjbGFzcyBNb2NrUGFzc3dvcmRNYW5hZ2VyOgogICAgIGRlZiBhZGRfcGFzc3dvcmQoc2VsZiwgcmVhbG0sIHVyaSwgdXNlciwgcGFzc3dvcmQpOgogICAgICAgICBzZWxmLnJlYWxtID0gcmVhbG0KICAgICAgICAgc2VsZi51cmwgPSB1cmkKICAgICAgICAgc2VsZi51c2VyID0gdXNlcgogICAgICAgICBzZWxmLnBhc3N3b3JkID0gcGFzc3dvcmQKKwogICAgIGRlZiBmaW5kX3VzZXJfcGFzc3dvcmQoc2VsZiwgcmVhbG0sIGF1dGh1cmkpOgogICAgICAgICBzZWxmLnRhcmdldF9yZWFsbSA9IHJlYWxtCiAgICAgICAgIHNlbGYudGFyZ2V0X3VybCA9IGF1dGh1cmkKQEAgLTUxNywxMSArNTc3LDExIEBACiAgICAgZGVmIHRlc3RfaGFuZGxlcl9vcmRlcihzZWxmKToKICAgICAgICAgbyA9IE9wZW5lckRpcmVjdG9yKCkKICAgICAgICAgaGFuZGxlcnMgPSBbXQotICAgICAgICBmb3IgbWV0aHMsIGhhbmRsZXJfb3JkZXIgaW4gWwotICAgICAgICAgICAgKFsoImh0dHBfb3BlbiIsICJyZXR1cm4gc2VsZiIpXSwgNTAwKSwKLSAgICAgICAgICAgIChbImh0dHBfb3BlbiJdLCAwKSwKLSAgICAgICAgICAgIF06Ci0gICAgICAgICAgICBjbGFzcyBNb2NrSGFuZGxlclN1YmNsYXNzKE1vY2tIYW5kbGVyKTogcGFzcworICAgICAgICBmb3IgbWV0aHMsIGhhbmRsZXJfb3JkZXIgaW4gWyhbKCJodHRwX29wZW4iLCAicmV0dXJuIHNlbGYiKV0sIDUwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFsiaHR0cF9vcGVuIl0sIDApXToKKyAgICAgICAgICAgIGNsYXNzIE1vY2tIYW5kbGVyU3ViY2xhc3MoTW9ja0hhbmRsZXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICAgICAgaCA9IE1vY2tIYW5kbGVyU3ViY2xhc3MobWV0aHMpCiAgICAgICAgICAgICBoLmhhbmRsZXJfb3JkZXIgPSBoYW5kbGVyX29yZGVyCiAgICAgICAgICAgICBoYW5kbGVycy5hcHBlbmQoaCkKQEAgLTU1OSw3ICs2MTksOCBAQAogICAgICAgICBoYW5kbGVycyA9IGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMobywgbWV0aF9zcGVjKQogCiAgICAgICAgIGNsYXNzIFVua25vd246Ci0gICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKTogcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIpCiAgICAgICAgIG8ub3BlbihyZXEpCkBAIC01NzIsNyArNjMzLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGhhbmRsZXIsIG1ldGhvZF9uYW1lKSwgZ290WzoyXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgZ290WzJdKQogCi0KICAgICBkZWYgdGVzdF9wcm9jZXNzb3JzKHNlbGYpOgogICAgICAgICAjICpfcmVxdWVzdCAvICpfcmVzcG9uc2UgbWV0aG9kcyBnZXQgY2FsbGVkIGFwcHJvcHJpYXRlbHkKICAgICAgICAgbyA9IE9wZW5lckRpcmVjdG9yKCkKQEAgLTYwOCw2ICs2NjgsNyBAQAogICAgICAgICAgICAgICAgIGlmIGFyZ3NbMV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhcmdzWzFdLCBNb2NrUmVzcG9uc2UpCiAKKwogZGVmIHNhbmVwYXRobmFtZTJ1cmwocGF0aCk6CiAgICAgdHJ5OgogICAgICAgICBwYXRoLmVuY29kZSgidXRmLTgiKQpAQCAtNjE5LDE4ICs2ODAsMjUgQEAKICAgICAjIFhYWCBkb24ndCBhc2sgbWUgYWJvdXQgdGhlIG1hYy4uLgogICAgIHJldHVybiB1cmxwYXRoCiAKKwogY2xhc3MgSGFuZGxlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Z0cChzZWxmKToKICAgICAgICAgY2xhc3MgTW9ja0ZUUFdyYXBwZXI6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6IHNlbGYuZGF0YSA9IGRhdGEKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisKICAgICAgICAgICAgIGRlZiByZXRyZmlsZShzZWxmLCBmaWxlbmFtZSwgZmlsZXR5cGUpOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUsIHNlbGYuZmlsZXR5cGUgPSBmaWxlbmFtZSwgZmlsZXR5cGUKICAgICAgICAgICAgICAgICByZXR1cm4gaW8uU3RyaW5nSU8oc2VsZi5kYXRhKSwgbGVuKHNlbGYuZGF0YSkKLSAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGNsYXNzIE51bGxGVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkZUUEhhbmRsZXIpOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOiBzZWxmLmRhdGEgPSBkYXRhCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CisgICAgICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCiAgICAgICAgICAgICBkZWYgY29ubmVjdF9mdHAoc2VsZiwgdXNlciwgcGFzc3dkLCBob3N0LCBwb3J0LCBkaXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKICAgICAgICAgICAgICAgICBzZWxmLnVzZXIsIHNlbGYucGFzc3dkID0gdXNlciwgcGFzc3dkCkBAIC04NjgsNyArOTM2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwzMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQogCiAgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKIApAQCAtOTAxLDEyICs5NjksMTIgQEAKIAogICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGhvc3QgaXMgZGV0ZXJtaW5lZCBjb3JyZWN0bHkgaWYgdGhlcmUgaXMgbm8gcHJveHkKICAgICAgICAgICAgIG5wX2RzX3JlcSA9IGguZG9fcmVxdWVzdF8oZHNfcmVxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucF9kc19yZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwiZXhhbXBsZS5jb20iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucF9kc19yZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwgImV4YW1wbGUuY29tIikKIAogICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGhvc3QgaXMgZGV0ZXJtaW5lZCBjb3JyZWN0bHkgaWYgdGhlcmUgaXMgYSBwcm94eQotICAgICAgICAgICAgZHNfcmVxLnNldF9wcm94eSgic29tZXByb3h5OjMxMjgiLE5vbmUpCisgICAgICAgICAgICBkc19yZXEuc2V0X3Byb3h5KCJzb21lcHJveHk6MzEyOCIsIE5vbmUpCiAgICAgICAgICAgICBwX2RzX3JlcSA9IGguZG9fcmVxdWVzdF8oZHNfcmVxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RzX3JlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCJleGFtcGxlLmNvbSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sICJleGFtcGxlLmNvbSIpCiAKICAgICBkZWYgdGVzdF9mdWxsX3VybF9zZXR0ZXIoc2VsZik6CiAgICAgICAgICMgQ2hlY2tzIHRvIGVuc3VyZSB0aGF0IGNvbXBvbmVudHMgYXJlIHNldCBjb3JyZWN0bHkgYWZ0ZXIgc2V0dGluZyB0aGUKQEAgLTk0OCwxNSArMTAxNiwxNCBAQAogICAgICAgICB3ZWlyZF91cmwgPSAnaHR0cDovL3d3dy5weXRob24ub3JnP2dldHNwYW0nCiAgICAgICAgIHJlcSA9IFJlcXVlc3Qod2VpcmRfdXJsKQogICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuaG9zdCwnd3d3LnB5dGhvbi5vcmcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5zZWxlY3RvciwnLz9nZXRzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuaG9zdCwgJ3d3dy5weXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuc2VsZWN0b3IsICcvP2dldHNwYW0nKQogCiAgICAgICAgIHVybF93aXRob3V0X3BhdGggPSAnaHR0cDovL3d3dy5weXRob24ub3JnJwogICAgICAgICByZXEgPSBSZXF1ZXN0KHVybF93aXRob3V0X3BhdGgpCiAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5ob3N0LCd3d3cucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLnNlbGVjdG9yLCcnKQotCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmhvc3QsICd3d3cucHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLnNlbGVjdG9yLCAnJykKIAogICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKICAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkhUVFBFcnJvclByb2Nlc3NvcigpCkBAIC0xMDQzLDYgKzExMTAsNyBAQAogICAgICAgICAjIGxvb3AgZGV0ZWN0aW9uCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoZnJvbV91cmwpCiAgICAgICAgIHJlcS50aW1lb3V0ID0gc29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUCisKICAgICAgICAgZGVmIHJlZGlyZWN0KGgsIHJlcSwgdXJsPXRvX3VybCk6CiAgICAgICAgICAgICBoLmh0dHBfZXJyb3JfMzAyKHJlcSwgTW9ja0ZpbGUoKSwgMzAyLCAiQmxhaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vY2tIZWFkZXJzKHsibG9jYXRpb24iOiB1cmx9KSkKQEAgLTEwNzMsNyArMTE0MSw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC5IVFRQUmVkaXJlY3RIYW5kbGVyLm1heF9yZWRpcmVjdGlvbnMpCiAKLQogICAgIGRlZiB0ZXN0X2ludmFsaWRfcmVkaXJlY3Qoc2VsZik6CiAgICAgICAgIGZyb21fdXJsID0gImh0dHA6Ly9leGFtcGxlLmNvbS9hLmh0bWwiCiAgICAgICAgIHZhbGlkX3NjaGVtZXMgPSBbJ2h0dHAnLCdodHRwcycsJ2Z0cCddCkBAIC0xMTc2LDcgKzEyNDMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICBkZWwgb3MuZW52aXJvblsnbm9fcHJveHknXQogCi0KICAgICBkZWYgdGVzdF9wcm94eV9odHRwcyhzZWxmKToKICAgICAgICAgbyA9IE9wZW5lckRpcmVjdG9yKCkKICAgICAgICAgcGggPSB1cmxsaWIucmVxdWVzdC5Qcm94eUhhbmRsZXIoZGljdChodHRwcz0icHJveHkuZXhhbXBsZS5jb206MzEyOCIpKQpAQCAtMTIwMCwyMSArMTI2NiwyMSBAQAogICAgICAgICBodHRwc19oYW5kbGVyID0gTW9ja0hUVFBTSGFuZGxlcigpCiAgICAgICAgIG8uYWRkX2hhbmRsZXIoaHR0cHNfaGFuZGxlcikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vIikKLSAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlByb3h5LUF1dGhvcml6YXRpb24iLCJGb29CYXIiKQotICAgICAgICByZXEuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsIkdyYWlsIikKKyAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlByb3h5LUF1dGhvcml6YXRpb24iLCAiRm9vQmFyIikKKyAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlVzZXItQWdlbnQiLCAiR3JhaWwiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LmV4YW1wbGUuY29tIikKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVxLl90dW5uZWxfaG9zdCkKICAgICAgICAgby5vcGVuKHJlcSkKICAgICAgICAgIyBWZXJpZnkgUHJveHktQXV0aG9yaXphdGlvbiBnZXRzIHR1bm5lbGVkIHRvIHJlcXVlc3QuCiAgICAgICAgICMgaHR0cHNjb25uIHJlcV9oZWFkZXJzIGRvIG5vdCBoYXZlIHRoZSBQcm94eS1BdXRob3JpemF0aW9uIGhlYWRlciBidXQKICAgICAgICAgIyB0aGUgcmVxIHdpbGwgaGF2ZS4KLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigoIlByb3h5LUF1dGhvcml6YXRpb24iLCJGb29CYXIiKSwKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigoIlByb3h5LUF1dGhvcml6YXRpb24iLCAiRm9vQmFyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHNfaGFuZGxlci5odHRwY29ubi5yZXFfaGVhZGVycykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigoIlVzZXItQWdlbnQiLCJHcmFpbCIpLAorICAgICAgICBzZWxmLmFzc2VydEluKCgiVXNlci1BZ2VudCIsICJHcmFpbCIpLAogICAgICAgICAgICAgICAgICAgICAgIGh0dHBzX2hhbmRsZXIuaHR0cGNvbm4ucmVxX2hlYWRlcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlcS5fdHVubmVsX2hvc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiUHJveHktYXV0aG9yaXphdGlvbiIpLCJGb29CYXIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJQcm94eS1hdXRob3JpemF0aW9uIiksICJGb29CYXIiKQogCiAgICAgIyBUT0RPOiBUaGlzIHNob3VsZCBiZSBvbmx5IGZvciBPU1gKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICJvbmx5IHJlbGV2YW50IGZvciBPU1giKQpAQCAtMTI0Niw3ICsxMzEyLDcgQEAKICAgICAgICAgcmVhbG0gPSAiQUNNRSBXaWRnZXQgU3RvcmUiCiAgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKICAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSVzJXMlc1xyXG5cclxuJyAlCi0gICAgICAgICAgICAocXVvdGVfY2hhciwgcmVhbG0sIHF1b3RlX2NoYXIpICkKKyAgICAgICAgICAgIChxdW90ZV9jaGFyLCByZWFsbSwgcXVvdGVfY2hhcikpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX2hhbmRsZXIpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCiAgICAgICAgIHNlbGYuX3Rlc3RfYmFzaWNfYXV0aChvcGVuZXIsIGF1dGhfaGFuZGxlciwgIkF1dGhvcml6YXRpb24iLApAQCAtMTMwNCwxMyArMTM3MCwxNiBAQAogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIE9wZW5lckRpcmVjdG9yLl9faW5pdF9fKHNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5yZWNvcmRlZCA9IFtdCisKICAgICAgICAgICAgIGRlZiByZWNvcmQoc2VsZiwgaW5mbyk6CiAgICAgICAgICAgICAgICAgc2VsZi5yZWNvcmRlZC5hcHBlbmQoaW5mbykKKwogICAgICAgICBjbGFzcyBUZXN0RGlnZXN0QXV0aEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUERpZ2VzdEF1dGhIYW5kbGVyKToKICAgICAgICAgICAgIGRlZiBodHRwX2Vycm9yXzQwMShzZWxmLCAqYXJncywgKiprd2RzKToKICAgICAgICAgICAgICAgICBzZWxmLnBhcmVudC5yZWNvcmQoImRpZ2VzdCIpCiAgICAgICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QuSFRUUERpZ2VzdEF1dGhIYW5kbGVyLmh0dHBfZXJyb3JfNDAxKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MsICoqa3dkcykKKwogICAgICAgICBjbGFzcyBUZXN0QmFzaWNBdXRoSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcik6CiAgICAgICAgICAgICBkZWYgaHR0cF9lcnJvcl80MDEoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXJlbnQucmVjb3JkKCJiYXNpYyIpCkBAIC0xMzQ2LDcgKzE0MTUsNyBAQAogICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogS2VyYmVyb3NcclxuXHJcbicpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihkaWdlc3RfYXV0aF9oYW5kbGVyKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLG9wZW5lci5vcGVuLCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlbmVyLm9wZW4sICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKIAogICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2F1dGhfYmFzaWNfaGFuZGxlcihzZWxmKToKICAgICAgICAgIyBXaGlsZSB1c2luZyBCYXNpY0F1dGhIYW5kbGVyCkBAIC0xMzU2LDcgKzE0MjUsNyBAQAogICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogTlRMTVxyXG5cclxuJykKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGJhc2ljX2F1dGhfaGFuZGxlcikKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZW5lci5vcGVuLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCiAKICAgICBkZWYgX3Rlc3RfYmFzaWNfYXV0aChzZWxmLCBvcGVuZXIsIGF1dGhfaGFuZGxlciwgYXV0aF9oZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKQEAgLTEzOTUsNiArMTQ2NCw3MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihodHRwX2hhbmRsZXIucmVxdWVzdHMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0dHBfaGFuZGxlci5yZXF1ZXN0c1swXS5oYXNfaGVhZGVyKGF1dGhfaGVhZGVyKSkKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX3ByaW9yX2F1dGhfYXV0b19zZW5kKHNlbGYpOgorICAgICAgICAjIEFzc3VtZSBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQgaWYgaXNfYXV0aGVudGljYXRlZD1UcnVlCisgICAgICAgICMgZm9yIEFQSXMgbGlrZSBHaXRodWIgdGhhdCBkb24ndCByZXR1cm4gNDAxCisKKyAgICAgICAgdXNlciwgcGFzc3dvcmQgPSAid2lsZSIsICJjb3lvdGUiCisgICAgICAgIHJlcXVlc3RfdXJsID0gImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIKKworICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXJDaGVja0F1dGgoMjAwKQorCisgICAgICAgIHB3ZF9tYW5hZ2VyID0gSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCgpCisgICAgICAgIGF1dGhfcHJpb3JfaGFuZGxlciA9IEhUVFBCYXNpY0F1dGhIYW5kbGVyKHB3ZF9tYW5hZ2VyKQorICAgICAgICBhdXRoX3ByaW9yX2hhbmRsZXIuYWRkX3Bhc3N3b3JkKAorICAgICAgICAgICAgTm9uZSwgcmVxdWVzdF91cmwsIHVzZXIsIHBhc3N3b3JkLCBpc19hdXRoZW50aWNhdGVkPVRydWUpCisKKyAgICAgICAgaXNfYXV0aCA9IHB3ZF9tYW5hZ2VyLmlzX2F1dGhlbnRpY2F0ZWQocmVxdWVzdF91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19hdXRoKQorCisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfcHJpb3JfaGFuZGxlcikKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKworICAgICAgICBvcGVuZXIub3BlbihyZXF1ZXN0X3VybCkKKworICAgICAgICAjIGV4cGVjdCByZXF1ZXN0IHRvIGJlIHNlbnQgd2l0aCBhdXRoIGhlYWRlcgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaHR0cF9oYW5kbGVyLmhhc19hdXRoX2hlYWRlcikKKworICAgIGRlZiB0ZXN0X2Jhc2ljX3ByaW9yX2F1dGhfc2VuZF9hZnRlcl9maXJzdF9zdWNjZXNzKHNlbGYpOgorICAgICAgICAjIEF1dG8gc2VuZCBhdXRoIGhlYWRlciBhZnRlciBhdXRoZW50aWNhdGlvbiBpcyBzdWNjZXNzZnVsIG9uY2UKKworICAgICAgICB1c2VyLCBwYXNzd29yZCA9ICd3aWxlJywgJ2NveW90ZScKKyAgICAgICAgcmVxdWVzdF91cmwgPSAnaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkJworICAgICAgICByZWFsbSA9ICdBQ01FJworCisgICAgICAgIHB3ZF9tYW5hZ2VyID0gSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCgpCisgICAgICAgIGF1dGhfcHJpb3JfaGFuZGxlciA9IEhUVFBCYXNpY0F1dGhIYW5kbGVyKHB3ZF9tYW5hZ2VyKQorICAgICAgICBhdXRoX3ByaW9yX2hhbmRsZXIuYWRkX3Bhc3N3b3JkKHJlYWxtLCByZXF1ZXN0X3VybCwgdXNlciwgcGFzc3dvcmQpCisKKyAgICAgICAgaXNfYXV0aCA9IHB3ZF9tYW5hZ2VyLmlzX2F1dGhlbnRpY2F0ZWQocmVxdWVzdF91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfYXV0aCkKKworICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX3ByaW9yX2hhbmRsZXIpCisKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09IiVzIlxyXG5cclxuJyAlIE5vbmUpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisKKyAgICAgICAgb3BlbmVyLm9wZW4ocmVxdWVzdF91cmwpCisKKyAgICAgICAgaXNfYXV0aCA9IHB3ZF9tYW5hZ2VyLmlzX2F1dGhlbnRpY2F0ZWQocmVxdWVzdF91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19hdXRoKQorCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlckNoZWNrQXV0aCgyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaHR0cF9oYW5kbGVyLmhhc19hdXRoX2hlYWRlcikKKworICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX3ByaW9yX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisKKyAgICAgICAgIyBBZnRlciBnZXR0aW5nIDIwMCBmcm9tIE1vY2tIVFRQSGFuZGxlcgorICAgICAgICAjIE5leHQgcmVxdWVzdCBzZW5kcyBoZWFkZXIgaW4gdGhlIGZpcnN0IHJlcXVlc3QKKyAgICAgICAgb3BlbmVyLm9wZW4ocmVxdWVzdF91cmwpCisKKyAgICAgICAgIyBleHBlY3QgcmVxdWVzdCB0byBiZSBzZW50IHdpdGggYXV0aCBoZWFkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGh0dHBfaGFuZGxlci5oYXNfYXV0aF9oZWFkZXIpCisKICAgICBkZWYgdGVzdF9odHRwX2Nsb3NlZChzZWxmKToKICAgICAgICAgIiIiVGVzdCB0aGUgY29ubmVjdGlvbiBpcyBjbGVhbmVkIHVwIHdoZW4gdGhlIHJlc3BvbnNlIGlzIGNsb3NlZCIiIgogICAgICAgICBmb3IgKHRyYW5zZmVyLCBkYXRhKSBpbiAoCkBAIC0xNDIzLDYgKzE1NTgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29ubi5mYWtlc29jay5jbG9zZWQsICJDb25uZWN0aW9uIG5vdCBjbG9zZWQiKQogCiAKKwogY2xhc3MgTWlzY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBvcGVuZXJfaGFzX2hhbmRsZXIoc2VsZiwgb3BlbmVyLCBoYW5kbGVyX2NsYXNzKToKQEAgLTE0MzAsMTEgKzE1NjYsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaCBpbiBvcGVuZXIuaGFuZGxlcnMpKQogCiAgICAgZGVmIHRlc3RfYnVpbGRfb3BlbmVyKHNlbGYpOgotICAgICAgICBjbGFzcyBNeUhUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKTogcGFzcworICAgICAgICBjbGFzcyBNeUhUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKToKKyAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBjbGFzcyBGb29IYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkJhc2VIYW5kbGVyKToKLSAgICAgICAgICAgIGRlZiBmb29fb3BlbihzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGZvb19vcGVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBjbGFzcyBCYXJIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkJhc2VIYW5kbGVyKToKLSAgICAgICAgICAgIGRlZiBiYXJfb3BlbihzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGJhcl9vcGVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBidWlsZF9vcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIKIApAQCAtMTQ2MSw3ICsxNjAyLDkgQEAKICAgICAgICAgc2VsZi5vcGVuZXJfaGFzX2hhbmRsZXIobywgdXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIpCiAKICAgICAgICAgIyBJc3N1ZTI2NzA6IG11bHRpcGxlIGhhbmRsZXJzIHNoYXJpbmcgdGhlIHNhbWUgYmFzZSBjbGFzcwotICAgICAgICBjbGFzcyBNeU90aGVySFRUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIpOiBwYXNzCisgICAgICAgIGNsYXNzIE15T3RoZXJIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcik6CisgICAgICAgICAgICBwYXNzCisKICAgICAgICAgbyA9IGJ1aWxkX29wZW5lcihNeUhUVFBIYW5kbGVyLCBNeU90aGVySFRUUEhhbmRsZXIpCiAgICAgICAgIHNlbGYub3BlbmVyX2hhc19oYW5kbGVyKG8sIE15SFRUUEhhbmRsZXIpCiAgICAgICAgIHNlbGYub3BlbmVyX2hhc19oYW5kbGVyKG8sIE15T3RoZXJIVFRQSGFuZGxlcikKQEAgLTE0OTcsNiArMTY0MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmhlYWRlcnMsICdDb250ZW50LUxlbmd0aDogNDInKQogICAgICAgICBleHBlY3RlZF9lcnJtc2cgPSAnSFRUUCBFcnJvciAlczogJXMnICUgKGVyci5jb2RlLCBlcnIubXNnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnIpLCBleHBlY3RlZF9lcnJtc2cpCisgICAgICAgIGV4cGVjdGVkX2Vycm1zZyA9ICc8SFRUUEVycm9yICVzOiAlcj4nICUgKGVyci5jb2RlLCBlcnIubXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZXJyKSwgZXhwZWN0ZWRfZXJybXNnKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfcHJveHkoc2VsZik6CiAgICAgICAgIHBhcnNlX3Byb3h5X3Rlc3RfY2FzZXMgPSBbCkBAIC0xNTM1LDkgKzE2ODAsMTAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfcGFyc2VfcHJveHksICdmaWxlOi9mdHAuZXhhbXBsZS5jb20nKSwKIAorCiBjbGFzcyBSZXF1ZXN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNsYXNzIFB1dFJlcXVlc3QoUmVxdWVzdCk6Ci0gICAgICAgIG1ldGhvZD0nUFVUJworICAgICAgICBtZXRob2QgPSAnUFVUJwogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmdldCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy9+amVyZW15LyIpCkBAIC0xNjI2LDcgKzE3NzIsNyBAQAogICAgIGRlZiB0ZXN0X3VybF9mdWxsdXJsX2dldF9mdWxsX3VybChzZWxmKToKICAgICAgICAgdXJscyA9IFsnaHR0cDovL2RvY3MucHl0aG9uLm9yZycsCiAgICAgICAgICAgICAgICAgJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvbGlicmFyeS91cmxsaWIyLmh0bWwjT0snLAotICAgICAgICAgICAgICAgICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvP3FzPXF1ZXJ5I2ZyYWdtZW50PXRydWUnIF0KKyAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnLz9xcz1xdWVyeSNmcmFnbWVudD10cnVlJ10KICAgICAgICAgZm9yIHVybCBpbiB1cmxzOgogICAgICAgICAgICAgcmVxID0gUmVxdWVzdCh1cmwpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfZnVsbF91cmwoKSwgcmVxLmZ1bGxfdXJsKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CmluZGV4IDE3ZjlkMWIuLmNhZDgzZmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKQEAgLTIwLDggKzIwLDYgQEAKICAgICAgICAgZXhjZXB0IGV4YyBhcyBlOgogICAgICAgICAgICAgbGFzdF9leGMgPSBlCiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByYWlzZQogICAgIHJhaXNlIGxhc3RfZXhjCiAKIGRlZiBfd3JhcF93aXRoX3JldHJ5X3RocmljZShmdW5jLCBleGMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKaW5kZXggMTc3NWVmMy4uMDU1MmY5MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CkBAIC0yMTAsMTAgKzIxMCw2IEBACiAKICAgICAgICAgIyAiYWJub3JtYWwiIGNhc2VzIGZyb20gUkZDIDE4MDg6CiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJycsICdodHRwOi8vYS9iL2MvZDtwP3EjZicpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy4uLy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vLi4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy8uL2cnLCAnaHR0cDovL2EvLi9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJ2cuJywgJ2h0dHA6Ly9hL2IvYy9nLicpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy5nJywgJ2h0dHA6Ly9hL2IvYy8uZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJ2cuLicsICdodHRwOi8vYS9iL2MvZy4uJykKQEAgLTIyOCw2ICsyMjQsMTMgQEAKICAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJ2h0dHA6ZycsICdodHRwOmcnKQogICAgICAgICAjc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnaHR0cDonLCAnaHR0cDonKQogCisgICAgICAgICMgWFhYOiBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBubyBsb25nZXIgY29tcGF0aWJsZSB3aXRoIFJGQzM5ODYKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy4uLy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vLi4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLy4vZycsICdodHRwOi8vYS8uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQorCisKICAgICBkZWYgdGVzdF9SRkMyMzY4KHNlbGYpOgogICAgICAgICAjIElzc3VlIDExNDY3OiBwYXRoIHRoYXQgc3RhcnRzIHdpdGggYSBudW1iZXIgaXMgbm90IHBhcnNlZCBjb3JyZWN0bHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmxsaWIucGFyc2UudXJscGFyc2UoJ21haWx0bzoxMzM3QGV4YW1wbGUub3JnJyksCkBAIC0yNTgsMTAgKzI2MSw2IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy4uLy4uLycsICdodHRwOi8vYS8nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi9nJywgJ2h0dHA6Ly9hL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcnLCBSRkMyMzk2X0JBU0UpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy4uLy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vLi4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy8uL2cnLCAnaHR0cDovL2EvLi9nJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLy4uL2cnLCAnaHR0cDovL2EvLi4vZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJ2cuJywgJ2h0dHA6Ly9hL2IvYy9nLicpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy5nJywgJ2h0dHA6Ly9hL2IvYy8uZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJ2cuLicsICdodHRwOi8vYS9iL2MvZy4uJykKQEAgLTI3NywxMCArMjc2LDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJ2cjcy8uL3gnLCAnaHR0cDovL2EvYi9jL2cjcy8uL3gnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnI3MvLi4veCcsICdodHRwOi8vYS9iL2MvZyNzLy4uL3gnKQogCisgICAgICAgICMgWFhYOiBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBubyBsb25nZXIgY29tcGF0aWJsZSB3aXRoIFJGQzM5ODYKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy4uLy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvLi4vLi4vZycpCisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLy4vZycsICdodHRwOi8vYS8uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQorCisKICAgICBkZWYgdGVzdF9SRkMzOTg2KHNlbGYpOgogICAgICAgICAjIFRlc3QgY2FzZXMgZnJvbSBSRkMzOTg2CiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJz95JywnaHR0cDovL2EvYi9jL2Q7cD95JykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnO3gnLCAnaHR0cDovL2EvYi9jLzt4JykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnO3gnLCAnaHR0cDovL2EvYi9jLzt4JykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnZzpoJywnZzpoJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnZycsJ2h0dHA6Ly9hL2IvYy9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi9nJywnaHR0cDovL2EvYi9jL2cnKQpAQCAtMzA0LDE3ICszMTAsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4nLCdodHRwOi8vYS8nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8nLCdodHRwOi8vYS8nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi9nJywnaHR0cDovL2EvZycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLy4uL2cnLCAnaHR0cDovL2EvZycpCiAKICAgICAgICAgI0Fibm9ybWFsIEV4YW1wbGVzCiAKICAgICAgICAgIyBUaGUgJ2Fibm9ybWFsIHNjZW5hcmlvcycgYXJlIGluY29tcGF0aWJsZSB3aXRoIFJGQzI5ODYgcGFyc2luZwogICAgICAgICAjIFRlc3RzIGFyZSBoZXJlIGZvciByZWZlcmVuY2UuCiAKLSAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS9nJykKLSAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLy4uLy4uL2cnLCdodHRwOi8vYS9nJykKLSAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy8uL2cnLCdodHRwOi8vYS9nJykKLSAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy8uLi9nJywnaHR0cDovL2EvZycpCi0KKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywnaHR0cDovL2EvZycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy8uL2cnLCdodHRwOi8vYS9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLy4uL2cnLCdodHRwOi8vYS9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnZy4nLCdodHRwOi8vYS9iL2MvZy4nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuZycsJ2h0dHA6Ly9hL2IvYy8uZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2cuLicsJ2h0dHA6Ly9hL2IvYy9nLi4nKQpAQCAtMzU0LDEwICszNjAsOCBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uL2cnLCdodHRwOi8vYS9iL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uLy4uJywnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi8uLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi4vLi4vLi4vZycsJ2h0dHA6Ly9hLy4uL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4vLi4vZycsJ2h0dHA6Ly9hL2IvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi9nLy4nLCdodHRwOi8vYS9iL2MvZy8nKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy8uL2cnLCdodHRwOi8vYS8uL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJ2cvLi9oJywnaHR0cDovL2EvYi9jL2cvaCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnZy8uLi9oJywnaHR0cDovL2EvYi9jL2gnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJ2h0dHA6ZycsJ2h0dHA6Ly9hL2IvYy9nJykKQEAgLTM3MSw2ICszNzUsMjUgQEAKICAgICAgICAgc2VsZi5jaGVja0pvaW4oJ3N2bjovL3BhdGh0b3JlcG8vZGlyMScsICdkaXIyJywgJ3N2bjovL3BhdGh0b3JlcG8vZGlyMicpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKCdzdm4rc3NoOi8vcGF0aHRvcmVwby9kaXIxJywgJ2RpcjInLCAnc3ZuK3NzaDovL3BhdGh0b3JlcG8vZGlyMicpCiAKKyAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG5vIGxvbmdlciBjb21wYXRpYmxlIHdpdGggUkZDMzk4NgorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi4vLi4vLi4vZycsJ2h0dHA6Ly9hLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLy4vZycsJ2h0dHA6Ly9hLy4vZycpCisKKyAgICAgICAgIyB0ZXN0IGZvciBpc3N1ZTIyMTE4IGR1cGxpY2F0ZSBzbGFzaGVzCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFICsgJy8nLCAnZm9vJywgU0lNUExFX0JBU0UgKyAnL2ZvbycpCisKKyAgICAgICAgIyBOb24tUkZDLWRlZmluZWQgdGVzdHMsIGNvdmVyaW5nIHZhcmlhdGlvbnMgb2YgYmFzZSBhbmQgdHJhaWxpbmcKKyAgICAgICAgIyBzbGFzaGVzCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iL2MvZC9lLycsICcuLi8uLi9mL2cvJywgJ2h0dHA6Ly9hL2IvYy9mL2cvJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UnLCAnLi4vLi4vZi9nLycsICdodHRwOi8vYS9iL2YvZy8nKQorICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZS8nLCAnLy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvZi9nLycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iL2MvZC9lJywgJy8uLi8uLi9mL2cvJywgJ2h0dHA6Ly9hL2YvZy8nKQorICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZS8nLCAnLi4vLi4vZi9nJywgJ2h0dHA6Ly9hL2IvYy9mL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi8nLCAnLi4vLi4vZi9nLycsICdodHRwOi8vYS9mL2cvJykKKworICAgICAgICAjIGlzc3VlIDIzNzAzOiBkb24ndCBkdXBsaWNhdGUgZmlsZW5hbWUKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2EnLCAnYicsICdiJykKKwogICAgIGRlZiB0ZXN0X1JGQzI3MzIoc2VsZik6CiAgICAgICAgIHN0cl9jYXNlcyA9IFsKICAgICAgICAgICAgICgnaHR0cDovL1Rlc3QucHl0aG9uLm9yZzo1NDMyL2Zvby8nLCAndGVzdC5weXRob24ub3JnJywgNTQzMiksCkBAIC04MDMsNiArODI2LDE2IEBACiAgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoeydhJzogVHJpdmlhbCgpfSwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICdhPXRyaXZpYWwnKQogCisgICAgZGVmIHRlc3RfdXJsZW5jb2RlX3F1b3RlX3ZpYShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gdXJsbGliLnBhcnNlLnVybGVuY29kZSh7J2EnOiAnc29tZSB2YWx1ZSd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgImE9c29tZSt2YWx1ZSIpCisgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoeydhJzogJ3NvbWUgdmFsdWUvYW5vdGhlcid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX3ZpYT11cmxsaWIucGFyc2UucXVvdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAiYT1zb21lJTIwdmFsdWUlMkZhbm90aGVyIikKKyAgICAgICAgcmVzdWx0ID0gdXJsbGliLnBhcnNlLnVybGVuY29kZSh7J2EnOiAnc29tZSB2YWx1ZS9hbm90aGVyJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZT0nLycsIHF1b3RlX3ZpYT11cmxsaWIucGFyc2UucXVvdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAiYT1zb21lJTIwdmFsdWUvYW5vdGhlciIpCisKICAgICBkZWYgdGVzdF9xdW90ZV9mcm9tX2J5dGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVybGxpYi5wYXJzZS5xdW90ZV9mcm9tX2J5dGVzLCAnZm9vJykKICAgICAgICAgcmVzdWx0ID0gdXJsbGliLnBhcnNlLnF1b3RlX2Zyb21fYnl0ZXMoYidhcmNoYWVvbG9naWNhbCBhcmNhbmEnKQpAQCAtODYxLDYgKzg5NCwyMiBAQAogICAgICAgICBxdW90ZXIgPSB1cmxsaWIucGFyc2UuUXVvdGVyKHVybGxpYi5wYXJzZS5fQUxXQVlTX1NBRkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1F1b3RlcicsIHJlcHIocXVvdGVyKSkKIAorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBbXQorICAgICAgICB1bmRvY3VtZW50ZWQgPSB7CisgICAgICAgICAgICAnc3BsaXRhdHRyJywgJ3NwbGl0aG9zdCcsICdzcGxpdG5wb3J0JywgJ3NwbGl0cGFzc3dkJywKKyAgICAgICAgICAgICdzcGxpdHBvcnQnLCAnc3BsaXRxdWVyeScsICdzcGxpdHRhZycsICdzcGxpdHR5cGUnLCAnc3BsaXR1c2VyJywKKyAgICAgICAgICAgICdzcGxpdHZhbHVlJywKKyAgICAgICAgICAgICdRdW90ZXInLCAnUmVzdWx0QmFzZScsICdjbGVhcl9jYWNoZScsICd0b19ieXRlcycsICd1bndyYXAnLAorICAgICAgICB9CisgICAgICAgIGZvciBuYW1lIGluIGRpcih1cmxsaWIucGFyc2UpOgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgb3IgbmFtZSBpbiB1bmRvY3VtZW50ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG9iamVjdCA9IGdldGF0dHIodXJsbGliLnBhcnNlLCBuYW1lKQorICAgICAgICAgICAgaWYgZ2V0YXR0cihvYmplY3QsICdfX21vZHVsZV9fJywgTm9uZSkgPT0gJ3VybGxpYi5wYXJzZSc6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQuYXBwZW5kKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbCh1cmxsaWIucGFyc2UuX19hbGxfXywgZXhwZWN0ZWQpCisKIAogY2xhc3MgVXRpbGl0eV9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdGNhc2UgdG8gdGVzdCB0aGUgdmFyaW91cyB1dGlsaXR5IGZ1bmN0aW9ucyBpbiB0aGUgdXJsbGliLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKaW5kZXggMmNhOTkyOS4uYzgzY2M1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CkBAIC0xOTAsMTAgKzE5MCw1IEBACiAKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFVzZXJEaWN0VGVzdCwKLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IDYzODEwNzAuLjRhMzA0ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtNTgsOCArNTgsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIHYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh1KSwgdHlwZSh2KSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFVzZXJMaXN0VGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5IGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CmluZGV4IDFlOGNiYTMuLmZjYjg0NTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKQEAgLTEsOSArMSwxMCBAQAotaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QubW9jawogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHV1aWQKIAogZGVmIGltcG9ydGFibGUobmFtZSk6CkBAIC00MTIsMjggKzQxMywyNyBAQAogY2xhc3MgVGVzdEludGVybmFscyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQogICAgIGRlZiB0ZXN0X2ZpbmRfbWFjKHNlbGYpOgotICAgICAgICBkYXRhID0gJycnXAotCisgICAgICAgIGRhdGEgPSAnJycKIGZha2UgaHdhZGRyCiBjc2NvdHVuMCAgTGluayBlbmNhcDpVTlNQRUMgIEhXYWRkciAwMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMC0wMAogZXRoMCAgICAgIExpbmsgZW5jYXA6RXRoZXJuZXQgIEhXYWRkciAxMjozNDo1Njo3ODo5MDphYgogJycnCi0gICAgICAgIGRlZiBtb2NrX3BvcGVuKGNtZCk6Ci0gICAgICAgICAgICByZXR1cm4gaW8uU3RyaW5nSU8oZGF0YSkKIAotICAgICAgICBpZiBzaHV0aWwud2hpY2goJ2lmY29uZmlnJykgaXMgTm9uZToKLSAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoc2VwLmpvaW4oKCcvc2JpbicsICcvdXNyL3NiaW4nKSkKLSAgICAgICAgICAgIGlmIHNodXRpbC53aGljaCgnaWZjb25maWcnLCBwYXRoPXBhdGgpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncmVxdWlyZXMgaWZjb25maWcnKQorICAgICAgICBwb3BlbiA9IHVuaXR0ZXN0Lm1vY2suTWFnaWNNb2NrKCkKKyAgICAgICAgcG9wZW4uc3Rkb3V0ID0gaW8uQnl0ZXNJTyhkYXRhLmVuY29kZSgpKQogCi0gICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIob3MsICdwb3BlbicsIG1vY2tfcG9wZW4pOgotICAgICAgICAgICAgbWFjID0gdXVpZC5fZmluZF9tYWMoCi0gICAgICAgICAgICAgICAgY29tbWFuZD0naWZjb25maWcnLAotICAgICAgICAgICAgICAgIGFyZ3M9JycsCi0gICAgICAgICAgICAgICAgaHdfaWRlbnRpZmllcnM9Wydod2FkZHInXSwKLSAgICAgICAgICAgICAgICBnZXRfaW5kZXg9bGFtYmRhIHg6IHggKyAxLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWMsIDB4MTIzNDU2Nzg5MGFiKQorICAgICAgICB3aXRoIHVuaXR0ZXN0Lm1vY2sucGF0Y2gub2JqZWN0KHNodXRpbCwgJ3doaWNoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9Jy9zYmluL2lmY29uZmlnJyk6CisgICAgICAgICAgICB3aXRoIHVuaXR0ZXN0Lm1vY2sucGF0Y2gub2JqZWN0KHN1YnByb2Nlc3MsICdQb3BlbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT1wb3Blbik6CisgICAgICAgICAgICAgICAgbWFjID0gdXVpZC5fZmluZF9tYWMoCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9J2lmY29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgYXJncz0nJywKKyAgICAgICAgICAgICAgICAgICAgaHdfaWRlbnRpZmllcnM9W2InaHdhZGRyJ10sCisgICAgICAgICAgICAgICAgICAgIGdldF9pbmRleD1sYW1iZGEgeDogeCArIDEsCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFjLCAweDEyMzQ1Njc4OTBhYikKIAogICAgIGRlZiBjaGVja19ub2RlKHNlbGYsIG5vZGUsIHJlcXVpcmVzPU5vbmUsIG5ldHdvcms9RmFsc2UpOgogICAgICAgICBpZiByZXF1aXJlcyBhbmQgbm9kZSBpcyBOb25lOgpAQCAtNDU0LDYgKzQ1NCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2lmY29uZmlnJywgVHJ1ZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIFBvc2l4JykKKyAgICBkZWYgdGVzdF9pcF9nZXRub2RlKHNlbGYpOgorICAgICAgICBub2RlID0gdXVpZC5faXBfZ2V0bm9kZSgpCisgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnaXAnLCBUcnVlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQogICAgIGRlZiB0ZXN0X2FycF9nZXRub2RlKHNlbGYpOgogICAgICAgICBub2RlID0gdXVpZC5fYXJwX2dldG5vZGUoKQogICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2FycCcsIFRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKaW5kZXggYjQ2MjU4OC4uOTIwN2E2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpAQCAtMTIsNyArMTIsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjYXB0dXJlZF9zdGRvdXQsIGNhcHR1cmVkX3N0ZGVyciwgcnVuX3VuaXR0ZXN0LAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjYXB0dXJlZF9zdGRvdXQsIGNhcHR1cmVkX3N0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmssIEVudmlyb25tZW50VmFyR3VhcmQsIHJtdHJlZSkKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zOTgsOCArMzk4LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRfcGlwX25vdF9pbnN0YWxsZWQoKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQmFzaWNUZXN0LCBFbnN1cmVQaXBUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5IGIvTGliL3Rlc3QvdGVzdF93YWl0My5weQppbmRleCBmNmEwNjVkLi5lYjUxYjJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKQEAgLTUsNyArNSw3IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QuZm9ya193YWl0IGltcG9ydCBGb3JrV2FpdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVhcF9jaGlsZHJlbgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlYXBfY2hpbGRyZW4KIAogaWYgbm90IGhhc2F0dHIob3MsICdmb3JrJyk6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm9zLmZvcmsgbm90IGRlZmluZWQiKQpAQCAtMTgsNyArMTgsOCBAQAogICAgICAgICAjIFRoaXMgbWFueSBpdGVyYXRpb25zIGNhbiBiZSByZXF1aXJlZCwgc2luY2Ugc29tZSBwcmV2aW91c2x5IHJ1bgogICAgICAgICAjIHRlc3RzIChlLmcuIHRlc3RfY3R5cGVzKSBjb3VsZCBoYXZlIHNwYXduZWQgYSBsb3Qgb2YgY2hpbGRyZW4KICAgICAgICAgIyB2ZXJ5IHF1aWNrbHkuCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDMwKToKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgMTAuMAorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDw9IGRlYWRsaW5lOgogICAgICAgICAgICAgIyB3YWl0MygpIHNob3VsZG4ndCBoYW5nLCBidXQgc29tZSBvZiB0aGUgYnVpbGRib3RzIHNlZW0gdG8gaGFuZwogICAgICAgICAgICAgIyBpbiB0aGUgZm9ya2luZyB0ZXN0cy4gIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXggdGhlIHByb2JsZW0uCiAgICAgICAgICAgICBzcGlkLCBzdGF0dXMsIHJ1c2FnZSA9IG9zLndhaXQzKG9zLldOT0hBTkcpCkBAIC0zMCw5ICszMSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJ1c2FnZSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChXYWl0M1Rlc3QpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKICAgICByZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YWl0NC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDQucHkKaW5kZXggMzUyYzExYS4uNDM4NjliZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YWl0NC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhaXQ0LnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBzeXMKIGZyb20gdGVzdC5mb3JrX3dhaXQgaW1wb3J0IEZvcmtXYWl0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCByZWFwX2NoaWxkcmVuLCBnZXRfYXR0cmlidXRlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF9jaGlsZHJlbiwgZ2V0X2F0dHJpYnV0ZQogCiAjIElmIGVpdGhlciBvZiB0aGVzZSBkbyBub3QgZXhpc3QsIHNraXAgdGhpcyB0ZXN0LgogZ2V0X2F0dHJpYnV0ZShvcywgJ2ZvcmsnKQpAQCAtMTksMjAgKzE5LDIwIEBACiAgICAgICAgICAgICAjIElzc3VlICMxMTE4NTogd2FpdDQgaXMgYnJva2VuIG9uIEFJWCBhbmQgd2lsbCBhbHdheXMgcmV0dXJuIDAKICAgICAgICAgICAgICMgd2l0aCBXTk9IQU5HLgogICAgICAgICAgICAgb3B0aW9uID0gMAotICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIDEwLjAKKyAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8PSBkZWFkbGluZToKICAgICAgICAgICAgICMgd2FpdDQoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzLCBydXNhZ2UgPSBvcy53YWl0NChjcGlkLCBvcHRpb24pCiAgICAgICAgICAgICBpZiBzcGlkID09IGNwaWQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BpZCwgY3BpZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocnVzYWdlKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFdhaXQ0VGVzdCkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CmluZGV4IGI1MTlmMGEuLmNlYTljNTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQpAQCAtNSw5ICs1LDkgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKLWZyb20gdGVzdCBpbXBvcnQgd2FybmluZ190ZXN0cworZnJvbSB0ZXN0LnRlc3Rfd2FybmluZ3MuZGF0YSBpbXBvcnQgc3RhY2tsZXZlbCBhcyB3YXJuaW5nX3Rlc3RzCiAKIGltcG9ydCB3YXJuaW5ncyBhcyBvcmlnaW5hbF93YXJuaW5ncwogCkBAIC0xOTQsMTEgKzE5NCwxMSBAQAogICAgICAgICAgICAgc2VsZi5tb2R1bGUucmVzZXR3YXJuaW5ncygpCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygib25jZSIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQogICAgICAgICAgICAgbWVzc2FnZSA9IFVzZXJXYXJuaW5nKCJGaWx0ZXJUZXN0cy50ZXN0X29uY2UiKQotICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybl9leHBsaWNpdChtZXNzYWdlLCBVc2VyV2FybmluZywgInRlc3Rfd2FybmluZ3MucHkiLAorICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybl9leHBsaWNpdChtZXNzYWdlLCBVc2VyV2FybmluZywgIl9faW5pdF9fLnB5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wy0xXS5tZXNzYWdlLCBtZXNzYWdlKQogICAgICAgICAgICAgZGVsIHdbOl0KLSAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm5fZXhwbGljaXQobWVzc2FnZSwgVXNlcldhcm5pbmcsICJ0ZXN0X3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm5fZXhwbGljaXQobWVzc2FnZSwgVXNlcldhcm5pbmcsICJfX2luaXRfXy5weSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAwKQogICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybl9leHBsaWNpdChtZXNzYWdlLCBVc2VyV2FybmluZywgInRlc3Rfd2FybmluZ3MyLnB5IiwKQEAgLTMwNCwxMCArMzA0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZT1zZWxmLm1vZHVsZSkgYXMgdzoKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLmlubmVyKCJzcGFtMSIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nX3Rlc3RzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFja2xldmVsLnB5IikKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLm91dGVyKCJzcGFtMiIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nX3Rlc3RzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFja2xldmVsLnB5IikKIAogICAgIGRlZiB0ZXN0X3N0YWNrbGV2ZWwoc2VsZik6CiAgICAgICAgICMgVGVzdCBzdGFja2xldmVsIGFyZ3VtZW50CkBAIC0zMTcsMjUgKzMxNywzNiBAQAogICAgICAgICAgICAgICAgICAgICBtb2R1bGU9c2VsZi5tb2R1bGUpIGFzIHc6CiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5pbm5lcigic3BhbTMiLCBzdGFja2xldmVsPTEpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nX3Rlc3RzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFja2xldmVsLnB5IikKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLm91dGVyKCJzcGFtNCIsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdfdGVzdHMucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrbGV2ZWwucHkiKQogCiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5pbm5lcigic3BhbTUiLCBzdGFja2xldmVsPTIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3dhcm5pbmdzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2luaXRfXy5weSIpCiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5vdXRlcigic3BhbTYiLCBzdGFja2xldmVsPTIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nX3Rlc3RzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFja2xldmVsLnB5IikKICAgICAgICAgICAgICAgICB3YXJuaW5nX3Rlc3RzLm91dGVyKCJzcGFtNi41Iiwgc3RhY2tsZXZlbD0zKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF93YXJuaW5ncy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbml0X18ucHkiKQogCiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5pbm5lcigic3BhbTciLCBzdGFja2xldmVsPTk5OTkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMiKQogCisgICAgZGVmIHRlc3Rfc3RhY2tsZXZlbF9pbXBvcnQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI0MzA1OiBXaXRoIHN0YWNrbGV2ZWw9MiwgbW9kdWxlLWxldmVsIHdhcm5pbmdzIHNob3VsZCB3b3JrLgorICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdC50ZXN0X3dhcm5pbmdzLmRhdGEuaW1wb3J0X3dhcm5pbmcnKQorICAgICAgICB3aXRoIHdhcm5pbmdzX3N0YXRlKHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUsCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZT1zZWxmLm1vZHVsZSkgYXMgdzoKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgaW1wb3J0IHRlc3QudGVzdF93YXJuaW5ncy5kYXRhLmltcG9ydF93YXJuaW5nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3WzBdLmZpbGVuYW1lLCBfX2ZpbGVfXykKKwogICAgIGRlZiB0ZXN0X21pc3NpbmdfZmlsZW5hbWVfbm90X21haW4oc2VsZik6CiAgICAgICAgICMgSWYgX19maWxlX18gaXMgbm90IHNwZWNpZmllZCBhbmQgX19tYWluX18gaXMgbm90IHRoZSBtb2R1bGUgbmFtZSwKICAgICAgICAgIyB0aGVuIF9fZmlsZV9fIHNob3VsZCBiZSBzZXQgdG8gdGhlIG1vZHVsZSBuYW1lLgpAQCAtNDUwLDYgKzQ2MSw0NCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybihCYWRTdHJXYXJuaW5nKCkpCiAKKyAgICBkZWYgdGVzdF93YXJuaW5nX2NsYXNzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIE15V2FybmluZ0NsYXNzKFdhcm5pbmcpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIE5vbldhcm5pbmdTdWJjbGFzczoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIHBhc3NpbmcgYSBub24tc3ViY2xhc3Mgb2YgV2FybmluZyBzaG91bGQgcmFpc2UgYSBUeXBlRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignYmFkIHdhcm5pbmcgY2F0ZWdvcnknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MsIG5vdCAnLAorICAgICAgICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ2JhZCB3YXJuaW5nIGNhdGVnb3J5JywgTm9uV2FybmluZ1N1YmNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICcsCisgICAgICAgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICAgICAgIyBjaGVjayB0aGF0IHdhcm5pbmcgaW5zdGFuY2VzIGFsc28gcmFpc2UgYSBUeXBlRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignYmFkIHdhcm5pbmcgY2F0ZWdvcnknLCBNeVdhcm5pbmdDbGFzcygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICcsCisgICAgICAgICAgICAgICAgICAgICAgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUucmVzZXR3YXJuaW5ncygpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygnZGVmYXVsdCcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoTXlXYXJuaW5nQ2xhc3MpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ2dvb2Qgd2FybmluZyBjYXRlZ29yeScsIE15V2FybmluZ0NsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZ29vZCB3YXJuaW5nIGNhdGVnb3J5Jywgc3RyKGNtLndhcm5pbmcpKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ2dvb2Qgd2FybmluZyBjYXRlZ29yeScsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBzdHIoY20ud2FybmluZykpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhNeVdhcm5pbmdDbGFzcykgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignZ29vZCB3YXJuaW5nIGNhdGVnb3J5JywgTXlXYXJuaW5nQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY20ud2FybmluZywgV2FybmluZykKIAogY2xhc3MgQ1dhcm5UZXN0cyhXYXJuVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCkBAIC04MzksNyArODg4LDE5IEBACiAgICAgICAgICAgICAiaW1wb3J0IHN5czsgc3lzLnN0ZG91dC53cml0ZShzdHIoc3lzLndhcm5vcHRpb25zKSkiLAogICAgICAgICAgICAgUFlUSE9OV0FSTklOR1M9Imlnbm9yZTo6RGVwcmVjYXRpb25XYXJuaW5nIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsCi0gICAgICAgICAgICBiIlsnaWdub3JlOjpVbmljb2RlV2FybmluZycsICdpZ25vcmU6OkRlcHJlY2F0aW9uV2FybmluZyddIikKKyAgICAgICAgICAgIGIiWydpZ25vcmU6OkRlcHJlY2F0aW9uV2FybmluZycsICdpZ25vcmU6OlVuaWNvZGVXYXJuaW5nJ10iKQorCisgICAgZGVmIHRlc3RfY29uZmxpY3RpbmdfZW52dmFyX2FuZF9jb21tYW5kX2xpbmUoc2VsZik6CisgICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgiLVdlcnJvcjo6RGVwcmVjYXRpb25XYXJuaW5nIiwgIi1jIiwKKyAgICAgICAgICAgICJpbXBvcnQgc3lzLCB3YXJuaW5nczsgc3lzLnN0ZG91dC53cml0ZShzdHIoc3lzLndhcm5vcHRpb25zKSk7ICIKKyAgICAgICAgICAgICJ3YXJuaW5ncy53YXJuKCdNZXNzYWdlJywgRGVwcmVjYXRpb25XYXJuaW5nKSIsCisgICAgICAgICAgICBQWVRIT05XQVJOSU5HUz0iZGVmYXVsdDo6RGVwcmVjYXRpb25XYXJuaW5nIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsCisgICAgICAgICAgICBiIlsnZGVmYXVsdDo6RGVwcmVjYXRpb25XYXJuaW5nJywgJ2Vycm9yOjpEZXByZWNhdGlvbldhcm5pbmcnXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgIFtiIlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToiLAorICAgICAgICAgICAgIGIiICBGaWxlIFwiPHN0cmluZz5cIiwgbGluZSAxLCBpbiA8bW9kdWxlPiIsCisgICAgICAgICAgICAgYiJEZXByZWNhdGlvbldhcm5pbmc6IE1lc3NhZ2UiXSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAhPSAnYXNjaWknLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBub24tYXNjaWkgZmlsZXN5c3RlbWVuY29kaW5nJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19tYWluX18ucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZTUyZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsMyBAQAoraW1wb3J0IHVuaXR0ZXN0CisKK3VuaXR0ZXN0Lm1haW4oJ3Rlc3QudGVzdF93YXJuaW5ncycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL2RhdGEvaW1wb3J0X3dhcm5pbmcucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL2RhdGEvaW1wb3J0X3dhcm5pbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZlYTJjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvZGF0YS9pbXBvcnRfd2FybmluZy5weQpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCB3YXJuaW5ncworCit3YXJuaW5ncy53YXJuKCdtb2R1bGUtbGV2ZWwgd2FybmluZycsIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3dhcm5pbmdfdGVzdHMucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL2RhdGEvc3RhY2tsZXZlbC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3Qvd2FybmluZ190ZXN0cy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9kYXRhL3N0YWNrbGV2ZWwucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQppbmRleCAzZTczNDdjLi5hZmQwYjYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CkBAIC03LDcgKzcsOCBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBjb3B5CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAjIFVzZWQgaW4gUmVmZXJlbmNlc1Rlc3RDYXNlLnRlc3RfcmVmX2NyZWF0ZWRfZHVyaW5nX2RlbCgpIC4KIHJlZl9mcm9tX2RlbCA9IE5vbmUKQEAgLTkyLDYgKzkzLDE4IEBACiAgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfY2FsbGJhY2soY3JlYXRlX2Z1bmN0aW9uKQogICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2NhbGxiYWNrKGNyZWF0ZV9ib3VuZF9tZXRob2QpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jZnVuY3Rpb24oc2VsZik6CisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgY3JlYXRlX2NmdW5jdGlvbiA9IF90ZXN0Y2FwaS5jcmVhdGVfY2Z1bmN0aW9uCisgICAgICAgIGYgPSBjcmVhdGVfY2Z1bmN0aW9uKCkKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihmKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIGYpCisgICAgICAgIGRlbCBmCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyKCkpCisgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfcmVmKGNyZWF0ZV9jZnVuY3Rpb24pCisgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfY2FsbGJhY2soY3JlYXRlX2NmdW5jdGlvbikKKwogICAgIGRlZiB0ZXN0X211bHRpcGxlX2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgbyA9IEMoKQogICAgICAgICByZWYxID0gd2Vha3JlZi5yZWYobywgc2VsZi5jYWxsYmFjaykKQEAgLTE1NzQsNiArMTU4NywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgMikKIAorICAgIGRlZiB0ZXN0X21ha2Vfd2Vha192YWx1ZWRfZGljdF9yZXByKHNlbGYpOgorICAgICAgICBkaWN0ID0gd2Vha3JlZi5XZWFrVmFsdWVEaWN0aW9uYXJ5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGRpY3QpLCAnPFdlYWtWYWx1ZURpY3Rpb25hcnkgYXQgMHguKj4nKQorCisgICAgZGVmIHRlc3RfbWFrZV93ZWFrX2tleWVkX2RpY3RfcmVwcihzZWxmKToKKyAgICAgICAgZGljdCA9IHdlYWtyZWYuV2Vha0tleURpY3Rpb25hcnkoKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZGljdCksICc8V2Vha0tleURpY3Rpb25hcnkgYXQgMHguKj4nKQorCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIAogY2xhc3MgV2Vha1ZhbHVlRGljdGlvbmFyeVRlc3RDYXNlKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQppbmRleCBmYjIyODc5Li45Y2U2NzJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHksIHJlZiwgV2Vha1NldAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgY29weQpAQCAtNDQzLDggKzQ0Miw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChuMiwgbjEpCiAKIAotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RXZWFrU2V0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQppbmRleCA4MzYxOGI2Li43YWZiMjRiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKQEAgLTI0Niw4ICsyNDYsNSBAQAogICAgIHJldHVybiBfX2hhdmVfc291bmRjYXJkX2NhY2hlCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEJlZXBUZXN0LCBNZXNzYWdlQmVlcFRlc3QsIFBsYXlTb3VuZFRlc3QpCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5IGIvTGliL3Rlc3QvdGVzdF93aXRoLnB5CmluZGV4IGNiYWFmY2YuLmU4ZDc4OWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKQEAgLTgsNyArOCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlciwgY29udGV4dG1hbmFnZXIKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogCiBjbGFzcyBNb2NrQ29udGV4dE1hbmFnZXIoX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKToKQEAgLTQ1NSw3ICs0NTQsOCBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oImZyb20gd2l0aCIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKIAogICAgIGRlZiB0ZXN0UmFpc2VkU3RvcEl0ZXJhdGlvbjIoc2VsZik6CiAgICAgICAgICMgRnJvbSBidWcgMTQ2MjQ4NQpAQCAtNDgyLDcgKzQ4Miw4IEBACiAgICAgICAgICAgICB3aXRoIGNtKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgbmV4dChpdGVyKFtdKSkKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRHZW5lcmF0b3JFeGl0MShzZWxmKToKICAgICAgICAgIyBGcm9tIGJ1ZyAxNDYyNDg1CkBAIC03MzcsMTQgKzczOCw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEwLCBiMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAsIGIyKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEZhaWx1cmVUZXN0Q2FzZSwgTm9uZXhjZXB0aW9uYWxUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgTmVzdGVkTm9uZXhjZXB0aW9uYWxUZXN0Q2FzZSwgRXhjZXB0aW9uYWxUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgTm9uTG9jYWxGbG93Q29udHJvbFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBBc3NpZ25tZW50VGFyZ2V0VGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIEV4aXRTd2FsbG93c0V4Y2VwdGlvblRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBOZXN0ZWRXaXRoKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQppbmRleCA0MDc2YjY4Li44Y2NhNTk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CkBAIC0xNSw4ICsxNSw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KIAogY2xhc3MgTW9ja1NlcnZlcihXU0dJU2VydmVyKToKICAgICAiIiJOb24tc29ja2V0IEhUVFAgc2VydmVyIiIiCkBAIC0zNjksNiArMzY3LDcgQEAKIAogICAgIGRlZiB0ZXN0TWFwcGluZ0ludGVyZmFjZShzZWxmKToKICAgICAgICAgdGVzdCA9IFsoJ3gnLCd5JyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEhlYWRlcnMoKSksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKEhlYWRlcnMoW10pKSwwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihIZWFkZXJzKHRlc3RbOl0pKSwxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhlYWRlcnModGVzdFs6XSkua2V5cygpLCBbJ3gnXSkKQEAgLTM3Niw3ICszNzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhlYWRlcnModGVzdFs6XSkuaXRlbXMoKSwgdGVzdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChIZWFkZXJzKHRlc3QpLml0ZW1zKCksIHRlc3QpICAjIG11c3QgYmUgY29weSEKIAotICAgICAgICBoPUhlYWRlcnMoW10pCisgICAgICAgIGggPSBIZWFkZXJzKCkKICAgICAgICAgZGVsIGhbJ2ZvbyddICAgIyBzaG91bGQgbm90IHJhaXNlIGFuIGVycm9yCiAKICAgICAgICAgaFsnRm9vJ10gPSAnYmFyJwpAQCAtNDAxLDkgKzQwMCw4IEBACiAgICAgZGVmIHRlc3RSZXF1aXJlTGlzdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBIZWFkZXJzLCAiZm9vIikKIAotCiAgICAgZGVmIHRlc3RFeHRyYXMoc2VsZik6Ci0gICAgICAgIGggPSBIZWFkZXJzKFtdKQorICAgICAgICBoID0gSGVhZGVycygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGgpLCdcclxuJykKIAogICAgICAgICBoLmFkZF9oZWFkZXIoJ2ZvbycsJ2JhcicsYmF6PSJzcGFtIikKQEAgLTY1OSw4ICs2NTcsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZGVfZWZmZWN0c1snY2xvc2VfY2FsbGVkJ10sIFRydWUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3hkcmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfeGRybGliLnB5CmluZGV4IDcwNDk2ZDYuLjNkZjVmMjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeGRybGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeGRybGliLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IHhkcmxpYgpAQCAtNzQsOSArNzMsNSBAQAogICAgIGRlZiB0ZXN0X3VoeXBlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNDb252ZXJzaW9uKHNlbGYucGFja2VyLnBhY2tfdWh5cGVyLCAnc3RyaW5nJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFhEUlRlc3QpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ29udmVyc2lvbkVycm9yVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCBiODdiMDk4Li5jYThjZGY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtNzA1LDcgKzcwNSw3IEBACiAgICAgICAgICAgICAnbWFjLXJvbWFuJywgJ21hYy10dXJraXNoJywKICAgICAgICAgICAgICdpc28yMDIyLWpwJywgJ2lzbzIwMjItanAtMScsICdpc28yMDIyLWpwLTInLCAnaXNvMjAyMi1qcC0yMDA0JywKICAgICAgICAgICAgICdpc28yMDIyLWpwLTMnLCAnaXNvMjAyMi1qcC1leHQnLAotICAgICAgICAgICAgJ2tvaTgtcicsICdrb2k4LXUnLAorICAgICAgICAgICAgJ2tvaTgtcicsICdrb2k4LXQnLCAna29pOC11JywgJ2t6MTA0OCcsCiAgICAgICAgICAgICAnaHonLCAncHRjcDE1NCcsCiAgICAgICAgIF0KICAgICAgICAgZm9yIGVuY29kaW5nIGluIHN1cHBvcnRlZF9lbmNvZGluZ3M6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQppbmRleCA4MTZhYTg2Li5kMGRmMzhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKQEAgLTU1LDcgKzU1LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZWxlbWVudHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCiAgICAgICAgICMgZXh0cmEKLSAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUGlpUDRQJykKKyAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUG5uUDRQJykKIAogICAgIGNoZWNrX3NpemVvZiA9IHN1cHBvcnQuY2hlY2tfc2l6ZW9mCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggN2FlMGRjZS4uOTg4MGY0YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTI4Nyw3ICsyODcsNyBAQAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGQgPSBkYXRldGltZS5kYXRldGltZSgyMDA3LDEsMiwzLDQsNSkKICAgICAgICAgdCA9IHhtbHJwY2xpYi5EYXRlVGltZShkKQotICAgICAgICB2YWwgPSI8RGF0ZVRpbWUgJzIwMDcwMTAyVDAzOjA0OjA1JyBhdCAleD4iICUgaWQodCkKKyAgICAgICAgdmFsID0iPERhdGVUaW1lICcyMDA3MDEwMlQwMzowNDowNScgYXQgJSN4PiIgJSBpZCh0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodCksIHZhbCkKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKQEAgLTcxMyw2ICs3MTMsMjMgQEAKICAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy9SUEMyIEhUVFAvMS4wXHJcbkNvbnRlbnQtTGVuZ3RoOiAxMDBcclxuXHJcbmJ5ZScpCiAgICAgICAgIGNvbm4uY2xvc2UoKQogCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICB3aXRoIHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShVUkwpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHNlcnZlci5hZGQoMiwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2VydmVyKCd0cmFuc3BvcnQnKS5fY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcigndHJhbnNwb3J0JykuX2Nvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX21ldGhvZF9lcnJvcihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgc2VydmVyLmFkZCgyLCAiYSIpCisgICAgICAgIGV4Y2VwdCB4bWxycGNsaWIuRmF1bHQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyKCd0cmFuc3BvcnQnKS5fY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgTm9uZSkpCisKIAogY2xhc3MgTXVsdGlQYXRoU2VydmVyVGVzdENhc2UoQmFzZVNlcnZlclRlc3RDYXNlKToKICAgICB0aHJlYWRGdW5jID0gc3RhdGljbWV0aG9kKGh0dHBfbXVsdGlfc2VydmVyKQpAQCAtOTE5LDYgKzkzNiw3IEBACiAgICAgICAgIHAgPSB4bWxycGNsaWIuU2VydmVyUHJveHkoc2VsZi51cmwsIHRyYW5zcG9ydD10KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAoJ3RyYW5zcG9ydCcpLCB0KQogCisKICMgVGhpcyBpcyBhIGNvbnRyaXZlZCB3YXkgdG8gbWFrZSBhIGZhaWx1cmUgb2NjdXIgb24gdGhlIHNlcnZlciBzaWRlCiAjIGluIG9yZGVyIHRvIHRlc3QgdGhlIF9zZW5kX3RyYWNlYmFja19oZWFkZXIgZmxhZyBvbiB0aGUgc2VydmVyCiBjbGFzcyBGYWlsaW5nTWVzc2FnZUNsYXNzKGh0dHAuY2xpZW50LkhUVFBNZXNzYWdlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwYXBwLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBhcHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczNDM4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwYXBwLnB5CkBAIC0wLDAgKzEsMzQ5IEBACisiIiJUZXN0IGhhcm5lc3MgZm9yIHRoZSB6aXBhcHAgbW9kdWxlLiIiIgorCitpbXBvcnQgaW8KK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB6aXBhcHAKK2ltcG9ydCB6aXBmaWxlCisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworY2xhc3MgWmlwQXBwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHppcGFwcCBtb2R1bGUgZnVuY3Rpb25hbGl0eS4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRtcGRpci5jbGVhbnVwKQorICAgICAgICBzZWxmLnRtcGRpciA9IHBhdGhsaWIuUGF0aCh0bXBkaXIubmFtZSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hcmNoaXZlKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFja2luZyBhIGRpcmVjdG9yeS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hcmNoaXZlX3dpdGhfcGF0aGxpYihzZWxmKToKKyAgICAgICAgIyBUZXN0IHBhY2tpbmcgYSBkaXJlY3RvcnkgdXNpbmcgUGF0aCBvYmplY3RzIGZvciBzb3VyY2UgYW5kIHRhcmdldC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuaXNfZmlsZSgpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2FyY2hpdmVfd2l0aF9zdWJkaXJzKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFja2luZyBhIGRpcmVjdG9yeSBpbmNsdWRlcyBlbnRyaWVzIGZvciBzdWJkaXJlY3Rvcmllcy4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICAoc291cmNlIC8gJ2ZvbycpLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdiYXInKS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnZm9vJyAvICdfX2luaXRfXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgdGFyZ2V0KQorICAgICAgICB0YXJnZXQuc2VlaygwKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh0YXJnZXQsICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Zvby8nLCB6Lm5hbWVsaXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdiYXIvJywgei5uYW1lbGlzdCgpKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2FyY2hpdmVfZGVmYXVsdF90YXJnZXQoc2VsZik6CisgICAgICAgICMgVGVzdCBwYWNraW5nIGEgZGlyZWN0b3J5IHRvIHRoZSBkZWZhdWx0IG5hbWUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpKQorICAgICAgICBleHBlY3RlZF90YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0ZWRfdGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X25vX21haW4oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHBhY2tpbmcgYSBkaXJlY3Rvcnkgd2l0aCBubyBfX21haW5fXy5weSBmYWlscy4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ2Zvby5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh6aXBhcHAuWmlwQXBwRXJyb3IpOgorICAgICAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSkKKworICAgIGRlZiB0ZXN0X21haW5fYW5kX21haW5fcHkoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN1cHBseWluZyBhIG1haW4gYXJndW1lbnQgd2l0aCBfX21haW5fXy5weSBmYWlscy4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGFwcC5aaXBBcHBFcnJvcik6CisgICAgICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPSdwa2cubW9kOmZuJykKKworICAgIGRlZiB0ZXN0X21haW5fd3JpdHRlbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdGhlIF9fbWFpbl9fLnB5IGlzIHdyaXR0ZW4gY29ycmVjdGx5LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnZm9vLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPSdwa2cubW9kOmZuJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoc3RyKHRhcmdldCksICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19fbWFpbl9fLnB5Jywgei5uYW1lbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3BrZy5tb2QuZm4oKScsIHoucmVhZCgnX19tYWluX18ucHknKSkKKworICAgIGRlZiB0ZXN0X21haW5fb25seV93cml0dGVuX29uY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGRvbid0IHdyaXRlIG11bHRpcGxlIF9fbWFpbl9fLnB5IGZpbGVzLgorICAgICAgICAjIFRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uIGhhZCB0aGlzIGJ1ZzsgemlwIGZpbGVzIGFsbG93CisgICAgICAgICMgbXVsdGlwbGUgZW50cmllcyB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAjIFdyaXRlIDIgZmlsZXMsIGFzIHRoZSBvcmlnaW5hbCBidWcgd3JvdGUgX19tYWluX18ucHkKKyAgICAgICAgIyBvbmNlIGZvciBlYWNoIGZpbGUgd3JpdHRlbiA6LSgKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9yZXZpZXcvMjM0OTEvZGlmZi8xMzk4Mi9MaWIvemlwYXBwLnB5I25ld2NvZGU2N0xpYi96aXBhcHAucHk6NjcKKyAgICAgICAgIyAobGluZSA2NykKKyAgICAgICAgKHNvdXJjZSAvICdmb28ucHknKS50b3VjaCgpCisgICAgICAgIChzb3VyY2UgLyAnYmFyLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBtYWluPSdwa2cubW9kOmZuJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoc3RyKHRhcmdldCksICdyJykgYXMgejoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgei5uYW1lbGlzdCgpLmNvdW50KCdfX21haW5fXy5weScpKQorCisgICAgZGVmIHRlc3RfbWFpbl92YWxpZGF0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBpbnZhbGlkIHZhbHVlcyBmb3IgbWFpbiBhcmUgcmVqZWN0ZWQuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgcHJvYmxlbXMgPSBbCisgICAgICAgICAgICAnJywgJ2ZvbycsICdmb286JywgJzpiYXInLCAnMTI6YmFyJywgJ2EuYi5jLjpkJywKKyAgICAgICAgICAgICcuYTpiJywgJ2E6Yi4nLCAnYTouYicsICdhOnNpbGx5IG5hbWUnCisgICAgICAgIF0KKyAgICAgICAgZm9yIG1haW4gaW4gcHJvYmxlbXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChtYWluPW1haW4pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoemlwYXBwLlppcEFwcEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgbWFpbj1tYWluKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9ub19zaGViYW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBubyBzaGViYW5nIGxpbmUgaXMgd3JpdHRlbiB0byB0aGUgdGFyZ2V0IGJ5IGRlZmF1bHQuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSkKKyAgICAgICAgd2l0aCB0YXJnZXQub3BlbigncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChmLnJlYWQoMiksIGInIyEnKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2ludGVycHJldGVyKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIHNoZWJhbmcgbGluZSB3aXRoIGEgY3VzdG9tIGludGVycHJldGVyIGlzIHdyaXR0ZW4KKyAgICAgICAgIyBjb3JyZWN0bHkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHdpdGggdGFyZ2V0Lm9wZW4oJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDIpLCBiJyMhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidweXRob25cbicsIGYucmVhZGxpbmUoKSkKKworICAgIGRlZiB0ZXN0X3BhY2tfdG9fZmlsZW9iaihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIHBhY2sgdG8gYSBmaWxlIG9iamVjdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCB0YXJnZXQsIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmdldHZhbHVlKCkuc3RhcnRzd2l0aChiJyMhcHl0aG9uXG4nKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIHJlYWQgdGhlIHNoZWJhbmcgbGluZSBjb3JyZWN0bHkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIodGFyZ2V0KSksICdweXRob24nKQorCisgICAgZGVmIHRlc3RfcmVhZF9taXNzaW5nX3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgdGhlIHNoZWJhbmcgbGluZSBvZiBhIGZpbGUgd2l0aG91dCBvbmUgcmV0dXJucyBOb25lLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIodGFyZ2V0KSksIE5vbmUpCisKKyAgICBkZWYgdGVzdF9tb2RpZnlfc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIGNoYW5nZSB0aGUgc2hlYmFuZyBvZiBhIGZpbGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBzZWxmLnRtcGRpciAvICdjaGFuZ2VkLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cih0YXJnZXQpLCBzdHIobmV3X3RhcmdldCksIGludGVycHJldGVyPSdweXRob24yLjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGFwcC5nZXRfaW50ZXJwcmV0ZXIoc3RyKG5ld190YXJnZXQpKSwgJ3B5dGhvbjIuNycpCisKKyAgICBkZWYgdGVzdF93cml0ZV9zaGViYW5nX3RvX2ZpbGVvYmooc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBjaGFuZ2UgdGhlIHNoZWJhbmcgb2YgYSBmaWxlLCB3cml0aW5nIHRoZSByZXN1bHQgdG8gYQorICAgICAgICAjIGZpbGUgb2JqZWN0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIodGFyZ2V0KSwgbmV3X3RhcmdldCwgaW50ZXJwcmV0ZXI9J3B5dGhvbjIuNycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdfdGFyZ2V0LmdldHZhbHVlKCkuc3RhcnRzd2l0aChiJyMhcHl0aG9uMi43XG4nKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9wYXRob2JqKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gY29weSBhbiBhcmNoaXZlIHVzaW5nIGFuIHBhdGhsaWIuUGF0aCBvYmplY3QKKyAgICAgICAgIyBmb3IgdGhlIHNvdXJjZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQxID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0MS5weXonCisgICAgICAgIHRhcmdldDIgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQyLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0MSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZSh0YXJnZXQxLCB0YXJnZXQyLCBpbnRlcnByZXRlcj0ncHl0aG9uMi43JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBhcHAuZ2V0X2ludGVycHJldGVyKHRhcmdldDIpLCAncHl0aG9uMi43JykKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9maWxlb2JqKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gY29weSBhbiBhcmNoaXZlIHVzaW5nIGFuIG9wZW4gZmlsZSBvYmplY3QuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgdGVtcF9hcmNoaXZlID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgdGVtcF9hcmNoaXZlLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgbmV3X3RhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB0ZW1wX2FyY2hpdmUuc2VlaygwKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUodGVtcF9hcmNoaXZlLCBuZXdfdGFyZ2V0LCBpbnRlcnByZXRlcj0ncHl0aG9uMi43JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld190YXJnZXQuZ2V0dmFsdWUoKS5zdGFydHN3aXRoKGInIyFweXRob24yLjdcbicpKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiByZW1vdmUgdGhlIHNoZWJhbmcgZnJvbSBhIGZpbGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBzZWxmLnRtcGRpciAvICdjaGFuZ2VkLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cih0YXJnZXQpLCBzdHIobmV3X3RhcmdldCksIGludGVycHJldGVyPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcihzdHIobmV3X3RhcmdldCkpLCBOb25lKQorCisgICAgZGVmIHRlc3RfY29udGVudF9vZl9jb3BpZWRfYXJjaGl2ZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29weWluZyBhbiBhcmNoaXZlIGRvZXNuJ3QgY29ycnVwdCBpdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCB0YXJnZXQsIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHRhcmdldC5zZWVrKDApCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZSh0YXJnZXQsIG5ld190YXJnZXQsIGludGVycHJldGVyPU5vbmUpCisgICAgICAgIG5ld190YXJnZXQuc2VlaygwKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShuZXdfdGFyZ2V0LCAncicpIGFzIHo6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh6Lm5hbWVsaXN0KCkpLCB7J19fbWFpbl9fLnB5J30pCisKKyAgICAjIChVbml4IG9ubHkpIHRlc3RzIHRoYXQgYXJjaGl2ZXMgd2l0aCBzaGViYW5nIGxpbmVzIGFyZSBtYWRlIGV4ZWN1dGFibGUKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ1dpbmRvd3MgZG9lcyBub3Qgc3VwcG9ydCBhbiBleGVjdXRhYmxlIGJpdCcpCisgICAgZGVmIHRlc3Rfc2hlYmFuZ19pc19leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhbiBhcmNoaXZlIHdpdGggYSBzaGViYW5nIGxpbmUgaXMgbWFkZSBleGVjdXRhYmxlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LnN0YXQoKS5zdF9tb2RlICYgc3RhdC5TX0lFWEVDKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICdXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgYW4gZXhlY3V0YWJsZSBiaXQnKQorICAgIGRlZiB0ZXN0X25vX3NoZWJhbmdfaXNfbm90X2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFuIGFyY2hpdmUgd2l0aCBubyBzaGViYW5nIGxpbmUgaXMgbm90IG1hZGUgZXhlY3V0YWJsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRhcmdldC5zdGF0KCkuc3RfbW9kZSAmIHN0YXQuU19JRVhFQykKKworCitjbGFzcyBaaXBBcHBDbWRsaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHppcGFwcCBtb2R1bGUgY29tbWFuZCBsaW5lIEFQSS4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRtcGRpci5jbGVhbnVwKQorICAgICAgICBzZWxmLnRtcGRpciA9IHBhdGhsaWIuUGF0aCh0bXBkaXIubmFtZSkKKworICAgIGRlZiBtYWtlX2FyY2hpdmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGFuIGFyY2hpdmUgd2l0aCBubyBzaGViYW5nIGxpbmUgaXMgbm90IG1hZGUgZXhlY3V0YWJsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc291cmNlLCB0YXJnZXQpCisgICAgICAgIHJldHVybiB0YXJnZXQKKworICAgIGRlZiB0ZXN0X2NtZGxpbmVfY3JlYXRlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGJhc2ljIGNvbW1hbmQgbGluZSBBUEkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgYXJncyA9IFtzdHIoc291cmNlKV0KKyAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgdGFyZ2V0ID0gc291cmNlLndpdGhfc3VmZml4KCcucHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9jbWRsaW5lX2NvcHkoc2VsZik6CisgICAgICAgICMgVGVzdCBjb3B5aW5nIGFuIGFyY2hpdmUuCisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQucHl6JworICAgICAgICBhcmdzID0gW3N0cihvcmlnaW5hbCksICctbycsIHN0cih0YXJnZXQpXQorICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2NtZGxpbmVfY29weV9pbnBsYWNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29weWluZyBhbiBhcmNoaXZlIGluIHBsYWNlIGZhaWxzLgorICAgICAgICBvcmlnaW5hbCA9IHNlbGYubWFrZV9hcmNoaXZlKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0LnB5eicKKyAgICAgICAgYXJncyA9IFtzdHIob3JpZ2luYWwpLCAnLW8nLCBzdHIob3JpZ2luYWwpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpIGFzIGNtOgorICAgICAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgIyBQcm9ncmFtIHNob3VsZCBleGl0IHdpdGggYSBub24temVybyByZXR1cm0gY29kZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtLmV4Y2VwdGlvbi5jb2RlKQorCisgICAgZGVmIHRlc3RfY21kbGluZV9jb3B5X2NoYW5nZV9tYWluKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29weWluZyBhbiBhcmNoaXZlIGRvZXNuJ3QgYWxsb3cgY2hhbmdpbmcgX19tYWluX18ucHkuCisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICd0YXJnZXQucHl6JworICAgICAgICBhcmdzID0gW3N0cihvcmlnaW5hbCksICctbycsIHN0cih0YXJnZXQpLCAnLW0nLCAnZm9vOmJhciddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCkgYXMgY206CisgICAgICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICAjIFByb2dyYW0gc2hvdWxkIGV4aXQgd2l0aCBhIG5vbi16ZXJvIHJldHVybSBjb2RlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY20uZXhjZXB0aW9uLmNvZGUpCisKKyAgICBAcGF0Y2goJ3N5cy5zdGRvdXQnLCBuZXdfY2FsbGFibGU9aW8uU3RyaW5nSU8pCisgICAgZGVmIHRlc3RfaW5mb19jb21tYW5kKHNlbGYsIG1vY2tfc3Rkb3V0KToKKyAgICAgICAgIyBUZXN0IHRoZSBvdXRwdXQgb2YgdGhlIGluZm8gY29tbWFuZC4KKyAgICAgICAgdGFyZ2V0ID0gc2VsZi5tYWtlX2FyY2hpdmUoKQorICAgICAgICBhcmdzID0gW3N0cih0YXJnZXQpLCAnLS1pbmZvJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBjbToKKyAgICAgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgICMgUHJvZ3JhbSBzaG91bGQgZXhpdCB3aXRoIGEgemVybyByZXR1cm0gY29kZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uY29kZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrX3N0ZG91dC5nZXR2YWx1ZSgpLCAiSW50ZXJwcmV0ZXI6IDxub25lPlxuIikKKworICAgIGRlZiB0ZXN0X2luZm9fZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgaW5mbyBjb21tYW5kIGZhaWxzIHdoZW4gdGhlIGFyY2hpdmUgZG9lcyBub3QgZXhpc3QuCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ2R1bW15LnB5eicKKyAgICAgICAgYXJncyA9IFtzdHIodGFyZ2V0KSwgJy0taW5mbyddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCkgYXMgY206CisgICAgICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICAjIFByb2dyYW0gc2hvdWxkIGV4aXQgd2l0aCBhIG5vbi16ZXJvIHJldHVybSBjb2RlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY20uZXhjZXB0aW9uLmNvZGUpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQppbmRleCA0YmRmN2Q0Li4yYzEwODIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CkBAIC0zMzAsNiArMzMwLDM3IEBACiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHppcG9wZW4ucmVhZDEoMTAwKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIGZuYW1lID0gJ2ZpbGUubmFtZScKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCBzZWxmLmNvbXByZXNzaW9uKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sIGZuYW1lKQorICAgICAgICAgICAgICAgIHIgPSByZXByKHppcGZwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZGU9J3cnIiwgcikKKworICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICByID0gcmVwcih6aXBmcCkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGYsIHN0cik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGVuYW1lPSVyJyAlIGYsIHIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZT0lcicgJSBmLCByKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZGU9J3InIiwgcikKKyAgICAgICAgICAgICAgICByID0gcmVwcih6aXBmcC5nZXRpbmZvKGZuYW1lKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlbmFtZT0lcicgJSBmbmFtZSwgcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlbW9kZT0nLCByKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGVfc2l6ZT0nLCByKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tcHJlc3Npb24gIT0gemlwZmlsZS5aSVBfU1RPUkVEOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjb21wcmVzc190eXBlPScsIHIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvbXByZXNzX3NpemU9JywgcikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oZm5hbWUpIGFzIHppcG9wZW46CisgICAgICAgICAgICAgICAgICAgIHIgPSByZXByKHppcG9wZW4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25hbWU9JXInICUgZm5hbWUsIHIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZGU9J3InIiwgcikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21wcmVzc2lvbiAhPSB6aXBmaWxlLlpJUF9TVE9SRUQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjb21wcmVzc190eXBlPScsIHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignW2Nsb3NlZF0nLCByZXByKHppcG9wZW4pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignW2Nsb3NlZF0nLCByZXByKHppcGZwKSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC02NjUsNyArNjk2LDcgQEAKICAgICAgICAgc2VsZi5yZXF1aXJlc1dyaXRlQWNjZXNzKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgpIGFzIHQsIHppcGZpbGUuUHlaaXBGaWxlKHQsICJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICBmbiA9IF9fZmlsZV9fCi0gICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnB5YycpIG9yIGZuLmVuZHN3aXRoKCcucHlvJyk6CisgICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICAgICAgICAgIHBhdGhfc3BsaXQgPSBmbi5zcGxpdChvcy5zZXApCiAgICAgICAgICAgICAgICAgaWYgb3MuYWx0c2VwIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBwYXRoX3NwbGl0LmV4dGVuZChmbi5zcGxpdChvcy5hbHRzZXApKQpAQCAtNjgyLDcgKzcxMyw3IEBACiAKICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCkgYXMgdCwgemlwZmlsZS5QeVppcEZpbGUodCwgInciKSBhcyB6aXBmcDoKICAgICAgICAgICAgIGZuID0gX19maWxlX18KLSAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCgnLnB5YycsICcucHlvJykpOgorICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoJy5weWMnKToKICAgICAgICAgICAgICAgICBmbiA9IGZuWzotMV0KIAogICAgICAgICAgICAgemlwZnAud3JpdGVweShmbiwgInRlc3RwYWNrYWdlIikKQEAgLTczOSwxMCArNzcwLDggQEAKICAgICAgICAgaW1wb3J0IGVtYWlsCiAgICAgICAgIHBhY2thZ2VkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZW1haWwuX19maWxlX18pCiAgICAgICAgIHNlbGYucmVxdWlyZXNXcml0ZUFjY2VzcyhwYWNrYWdlZGlyKQotICAgICAgICAjIHVzZSAucHljIGlmIHJ1bm5pbmcgdGVzdCBpbiBvcHRpbWl6YXRpb24gbW9kZSwKLSAgICAgICAgIyB1c2UgLnB5byBpZiBydW5uaW5nIHRlc3QgaW4gZGVidWcgbW9kZQogICAgICAgICBvcHRsZXZlbCA9IDEgaWYgX19kZWJ1Z19fIGVsc2UgMAotICAgICAgICBleHQgPSAnLnB5bycgaWYgb3B0bGV2ZWwgPT0gMSBlbHNlICcucHljJworICAgICAgICBleHQgPSAnLnB5YycKIAogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoKSBhcyB0LCBcCiAgICAgICAgICAgICAgemlwZmlsZS5QeVppcEZpbGUodCwgInciLCBvcHRpbWl6ZT1vcHRsZXZlbCkgYXMgemlwZnA6CkBAIC04MTYsMTEgKzg0NSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlN5bnRheEVycm9yIiwgcy5nZXR2YWx1ZSgpKQogCiAgICAgICAgICAgICAgICAgIyBhcyBpdCB3aWxsIG5vdCBoYXZlIGNvbXBpbGVkIHRoZSBweXRob24gZmlsZSwgaXQgd2lsbAotICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgLnB5IGZpbGUgbm90IC5weWMgb3IgLnB5bworICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgLnB5IGZpbGUgbm90IC5weWMKICAgICAgICAgICAgICAgICBuYW1lcyA9IHppcGZwLm5hbWVsaXN0KCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdtb2QxLnB5JywgbmFtZXMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbW9kMS5weWMnLCBuYW1lcykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtb2QxLnB5bycsIG5hbWVzKQogCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBybXRyZWUoVEVTVEZOMikKQEAgLTEwODEsNiArMTEwOSwxOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6Zi5maWxlbGlzdFswXS5maWxlbmFtZSwgImZvby50eHQiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6Zi5maWxlbGlzdFsxXS5maWxlbmFtZSwgIlx4ZjYudHh0IikKIAorICAgIGRlZiB0ZXN0X2V4Y2x1c2l2ZV9jcmVhdGVfemlwX2ZpbGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgZXhjbHVzaXZlIGNyZWF0aW5nIGEgbmV3IHppcGZpbGUuIiIiCisgICAgICAgIHVubGluayhURVNURk4yKQorICAgICAgICBmaWxlbmFtZSA9ICd0ZXN0ZmlsZS50eHQnCisgICAgICAgIGNvbnRlbnQgPSBiJ2hlbGxvLCB3b3JsZC4gdGhpcyBpcyBzb21lIGNvbnRlbnQuJworICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAieCIsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CisgICAgICAgICAgICB6aXBmcC53cml0ZXN0cihmaWxlbmFtZSwgY29udGVudCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpOgorICAgICAgICAgICAgemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ4IiwgemlwZmlsZS5aSVBfU1RPUkVEKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIpIGFzIHppcGZwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmcC5uYW1lbGlzdCgpLCBbZmlsZW5hbWVdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmcC5yZWFkKGZpbGVuYW1lKSwgY29udGVudCkKKwogICAgIGRlZiB0ZXN0X2NyZWF0ZV9ub25fZXhpc3RlbnRfZmlsZV9mb3JfYXBwZW5kKHNlbGYpOgogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKQEAgLTE2NTUsNiArMTY5Niw3MiBAQAogICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfTFpNQQogCiAKKyMgUHJpdmlkZSB0aGUgdGVsbCgpIG1ldGhvZCBidXQgbm90IHNlZWsoKQorY2xhc3MgVGVsbGFibGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKKyAgICAgICAgc2VsZi5mcCA9IGZwCisgICAgICAgIHNlbGYub2Zmc2V0ID0gMAorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBuID0gc2VsZi5mcC53cml0ZShkYXRhKQorICAgICAgICBzZWxmLm9mZnNldCArPSBuCisgICAgICAgIHJldHVybiBuCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub2Zmc2V0CisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuZnAuZmx1c2goKQorCitjbGFzcyBVbnNlZWthYmxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHNlbGYuZnAgPSBmcAorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICByZXR1cm4gc2VsZi5mcC53cml0ZShkYXRhKQorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKworY2xhc3MgVW5zZWVrYWJsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF93cml0ZXN0cihzZWxmKToKKyAgICAgICAgZm9yIHdyYXBwZXIgaW4gKGxhbWJkYSBmOiBmKSwgVGVsbGFibGUsIFVuc2Vla2FibGU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3cmFwcGVyPXdyYXBwZXIpOgorICAgICAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKGInYWJjJykKKyAgICAgICAgICAgICAgICBiZiA9IGlvLkJ1ZmZlcmVkV3JpdGVyKGYpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUod3JhcHBlcihiZiksICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ29uZXMnLCBiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCd0d29zJywgYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0ncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMjIyJykKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGYyOgorICAgICAgICAgICAgICAgICAgICAgICAgZjIud3JpdGUoYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICdvbmVzJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjI6CisgICAgICAgICAgICAgICAgICAgICAgICBmMi53cml0ZShiJzIyMicpCisgICAgICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgJ3R3b3MnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0ncicpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMjIyJykKKworCiBAcmVxdWlyZXNfemxpYgogY2xhc3MgVGVzdHNXaXRoTXVsdGlwbGVPcGVucyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCkBAIC0xNjcxLDM1ICsxNzc4LDUyIEBACiAgICAgZGVmIHRlc3Rfc2FtZV9maWxlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGF0ICh3aGVuIHRoZSBaaXBGaWxlIGlzIGluIGNvbnRyb2wgb2YgY3JlYXRpbmcgZmlsZSBvYmplY3RzKQogICAgICAgICAjIG11bHRpcGxlIG9wZW4oKSBjYWxscyBjYW4gYmUgbWFkZSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggZWFjaCBvdGhlci4KLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShURVNURk4yKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZjoKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjI6Ci0gICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQotICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIGRhdGEyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0iciIpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBkYXRhMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQogCiAgICAgZGVmIHRlc3RfZGlmZmVyZW50X2ZpbGUoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgKHdoZW4gdGhlIFppcEZpbGUgaXMgaW4gY29udHJvbCBvZiBjcmVhdGluZyBmaWxlIG9iamVjdHMpCiAgICAgICAgICMgbXVsdGlwbGUgb3BlbigpIGNhbGxzIGNhbiBiZSBtYWRlIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBlYWNoIG90aGVyLgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKFRFU1RGTjIpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKLSAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCi0gICAgICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZikKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsIG1vZGU9InIiKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjI6CisgICAgICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQogCiAgICAgZGVmIHRlc3RfaW50ZXJsZWF2ZWQoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgKHdoZW4gdGhlIFppcEZpbGUgaXMgaW4gY29udHJvbCBvZiBjcmVhdGluZyBmaWxlIG9iamVjdHMpCiAgICAgICAgICMgbXVsdGlwbGUgb3BlbigpIGNhbGxzIGNhbiBiZSBtYWRlIHdpdGhvdXQgaW50ZXJmZXJpbmcgd2l0aCBlYWNoIG90aGVyLgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKFRFU1RGTjIpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgbW9kZT0iciIpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjEsIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuMjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCisgICAgICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2FmdGVyX2Nsb3NlKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYpCisgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICB6b3BlbjEgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3Blbignb25lcycpKQorICAgICAgICAgICAgICAgICAgICB6b3BlbjIgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3BlbigndHdvcycpKQogICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQogICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQogICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKQEAgLTE3MDcsNDMgKzE4MzEsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQogCi0gICAgZGVmIHRlc3RfcmVhZF9hZnRlcl9jbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShURVNURk4yKQotICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6Ci0gICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAncicpIGFzIHppcGY6Ci0gICAgICAgICAgICAgICAgem9wZW4xID0gc3RhY2suZW50ZXJfY29udGV4dCh6aXBmLm9wZW4oJ29uZXMnKSkKLSAgICAgICAgICAgICAgICB6b3BlbjIgPSBzdGFjay5lbnRlcl9jb250ZXh0KHppcGYub3BlbigndHdvcycpKQotICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKLSAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKLSAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKLQogICAgIGRlZiB0ZXN0X3JlYWRfYWZ0ZXJfd3JpdGUoc2VsZik6Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6Ci0gICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKLSAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3R3b3MnLCBzZWxmLmRhdGEyKQotICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjE6Ci0gICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTFbOjUwMF0pCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZjoKLSAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKLSAgICAgICAgICAgIGRhdGEyID0gemlwZi5yZWFkKCd0d29zJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCd0d29zJywgc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMToKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExWzo1MDBdKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKKyAgICAgICAgICAgICAgICBkYXRhMiA9IHppcGYucmVhZCgndHdvcycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKIAogICAgIGRlZiB0ZXN0X3dyaXRlX2FmdGVyX3JlYWQoc2VsZik6Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6Ci0gICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xOgotICAgICAgICAgICAgICAgIHpvcGVuMS5yZWFkKDUwMCkKLSAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCd0d29zJywgc2VsZi5kYXRhMikKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgotICAgICAgICAgICAgZGF0YTEgPSB6aXBmLnJlYWQoJ29uZXMnKQotICAgICAgICAgICAgZGF0YTIgPSB6aXBmLnJlYWQoJ3R3b3MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ29uZXMnLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xOgorICAgICAgICAgICAgICAgICAgICB6b3BlbjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3R3b3MnLCBzZWxmLmRhdGEyKQorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKKyAgICAgICAgICAgICAgICBkYXRhMiA9IHppcGYucmVhZCgndHdvcycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKIAogICAgIGRlZiB0ZXN0X21hbnlfb3BlbnMoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgcmVhZCgpIGFuZCBvcGVuKCkgcHJvbXB0bHkgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKaW5kZXggMWUzNTFjOC4uYTk3YTc3OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKQEAgLTUxLDcgKzUxLDcgQEAKIFRFTVBfWklQID0gb3MucGF0aC5hYnNwYXRoKCJqdW5rOTUxNDIuemlwIikKIAogcHljX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShURVNUTU9EICsgJy5weScpCi1weWNfZXh0ID0gKCcucHljJyBpZiBfX2RlYnVnX18gZWxzZSAnLnB5bycpCitweWNfZXh0ID0gJy5weWMnCiAKIAogY2xhc3MgSW1wb3J0SG9va3NCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDUwLDcgKzQ1MCw5IEBACiAgICAgICAgIGZkID0gb3Mub3BlbihURVNUTU9ELCBvcy5PX0NSRUFULCAwMDApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRaaXBGYWlsdXJlKFRFU1RNT0QpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoemlwaW1wb3J0LlppcEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoVEVTVE1PRCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICMgSWYgd2UgbGVhdmUgInRoZSByZWFkLW9ubHkgYml0IiBzZXQgb24gV2luZG93cywgbm90aGluZyBjYW4KICAgICAgICAgICAgICMgZGVsZXRlIFRFU1RNT0QsIGFuZCBsYXRlciB0ZXN0cyBzdWZmZXIgYm9ndXMgZmFpbHVyZXMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQppbmRleCA2NmMzNTU3Li41OTEzNjIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKQEAgLTE0LDggKzE0LDggQEAKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBwZGIKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RpciwgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3NjcmlwdCkKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCiAKIHZlcmJvc2UgPSB0ZXN0LnN1cHBvcnQudmVyYm9zZQogCkBAIC0zOSw3ICszOSw3IEBACiAgICAgIyBVc2UgdGhlIG9iamVjdCdzIGZ1bGx5IHF1YWxpZmllZCBuYW1lIGlmIGl0IGhhcyBvbmUKICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBtb2R1bGUncyBuYW1lCiAgICAgdHJ5OgotICAgICAgICBuYW1lID0gIiVzLiVzIiAlIChvYmouX19tb2R1bGVfXywgb2JqLl9fbmFtZV9fKQorICAgICAgICBuYW1lID0gIiVzLiVzIiAlIChvYmouX19tb2R1bGVfXywgb2JqLl9fcXVhbG5hbWVfXykKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KICAgICBmb3IgZXhhbXBsZSBpbiBmaW5kZXIuZmluZChvYmosIG5hbWUsIG1vZHVsZSk6CkBAIC03OCw3ICs3OCw3IEBACiAKICAgICBkZWYgdGVzdF9pbnNwZWN0X2dldHNvdXJjZV9pc3N1ZTQyMjMoc2VsZik6CiAgICAgICAgIHRlc3Rfc3JjID0gImRlZiBmb28oKTogcGFzc1xuIgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgZDoKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgogICAgICAgICAgICAgaW5pdF9uYW1lID0gbWFrZV9zY3JpcHQoZCwgJ19faW5pdF9fJywgdGVzdF9zcmMpCiAgICAgICAgICAgICBuYW1lX2luX3ppcCA9IG9zLnBhdGguam9pbignemlwX3BrZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGluaXRfbmFtZSkpCkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICAgICAgICAgIG1vZF9uYW1lID0gbW9kX25hbWUucmVwbGFjZSgic2FtcGxlXyIsICJzYW1wbGVfemlwcGVkXyIpCiAgICAgICAgICAgICBzYW1wbGVfc291cmNlc1ttb2RfbmFtZV0gPSBzcmMKIAotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgZDoKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBtYWtlX3NjcmlwdChkLCAndGVzdF96aXBwZWRfZG9jdGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfc3JjKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KGQsICd0ZXN0X3ppcCcsCkBAIC0xOTUsNyArMTk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZG9jdGVzdC50ZXN0bW9kKCkKICAgICAgICAgICAgICAgICAgICAgIiIiKQogICAgICAgICBwYXR0ZXJuID0gJ0ZpbGUgIiVzIiwgbGluZSAyLCBpbiAlcycKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIGQ6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfZGlyKCkgYXMgZDoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gbWFrZV9zY3JpcHQoZCwgJ3NjcmlwdCcsIHRlc3Rfc3JjKQogICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vayhzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIGV4cGVjdGVkID0gcGF0dGVybiAlIChzY3JpcHRfbmFtZSwgIl9fbWFpbl9fLlRlc3QiKQpAQCAtMjIyLDcgKzIyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBwZGIKICAgICAgICAgICAgICAgICAgICAgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5ydW5jYWxsKGYpCiAgICAgICAgICAgICAgICAgICAgICIiIikKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIGQ6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfZGlyKCkgYXMgZDoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gbWFrZV9zY3JpcHQoZCwgJ3NjcmlwdCcsIHRlc3Rfc3JjKQogICAgICAgICAgICAgcCA9IHNwYXduX3B5dGhvbihzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoYidsXG4nKQpAQCAtMjM4LDkgKzIzOCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGgubm9ybWNhc2UocnVuX25hbWUuZW5jb2RlKCd1dGYtOCcpKSwgZGF0YSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChaaXBTdXBwb3J0VGVzdHMpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKICAgICB0ZXN0LnN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQppbmRleCA1M2JiMmFkLi43Y2QxZDdjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3psaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CkBAIC03MTQsMTYgKzcxNCw1IEBACiAiIiIKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFZlcnNpb25UZXN0Q2FzZSwKLSAgICAgICAgQ2hlY2tzdW1UZXN0Q2FzZSwKLSAgICAgICAgQ2hlY2tzdW1CaWdCdWZmZXJUZXN0Q2FzZSwKLSAgICAgICAgRXhjZXB0aW9uVGVzdENhc2UsCi0gICAgICAgIENvbXByZXNzVGVzdENhc2UsCi0gICAgICAgIENvbXByZXNzT2JqZWN0VGVzdENhc2UKLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdW5pdHRlc3QubWFpbigpICMgWFhYCi0gICAgIyMjdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3RmX2luaGVyaXRfY2hlY2sucHkgYi9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5CmluZGV4IGFmZTUwZDIuLjEzOGYyNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3RmX2luaGVyaXRfY2hlY2sucHkKKysrIGIvTGliL3Rlc3QvdGZfaW5oZXJpdF9jaGVjay5weQpAQCAtNCwyMiArNCwyNCBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBTdXBwcmVzc0NyYXNoUmVwb3J0CiAKLXZlcmJvc2UgPSAoc3lzLmFyZ3ZbMV0gPT0gJ3YnKQotdHJ5OgotICAgIGZkID0gaW50KHN5cy5hcmd2WzJdKQotCit3aXRoIFN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICB2ZXJib3NlID0gKHN5cy5hcmd2WzFdID09ICd2JykKICAgICB0cnk6Ci0gICAgICAgIG9zLndyaXRlKGZkLCBiImJsYXQiKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAjIFN1Y2Nlc3MgLS0gY291bGQgbm90IHdyaXRlIHRvIGZkLgotICAgICAgICBzeXMuZXhpdCgwKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJmZCAlZCBpcyBvcGVuIGluIGNoaWxkIiAlIGZkKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICBmZCA9IGludChzeXMuYXJndlsyXSkKIAotZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICByYWlzZQotICAgIHN5cy5leGl0KDEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiImJsYXQiKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICMgU3VjY2VzcyAtLSBjb3VsZCBub3Qgd3JpdGUgdG8gZmQuCisgICAgICAgICAgICBzeXMuZXhpdCgwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJmZCAlZCBpcyBvcGVuIGluIGNoaWxkIiAlIGZkKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICByYWlzZQorICAgICAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEvTGliL3RleHR3cmFwLnB5IGIvTGliL3RleHR3cmFwLnB5CmluZGV4IDU4ODY3ZjkuLjNhZDNlMTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXh0d3JhcC5weQorKysgYi9MaWIvdGV4dHdyYXAucHkKQEAgLTc5LDEwICs3OSwyNSBAQAogICAgICMgc3BsaXRzIGludG8KICAgICAjICAgSGVsbG8vIC90aGVyZS8gLy0tLyAveW91LyAvZ29vZi0vYmFsbCwvIC91c2UvIC90aGUvIC8tYi8gL29wdGlvbiEKICAgICAjIChhZnRlciBzdHJpcHBpbmcgb3V0IGVtcHR5IHN0cmluZ3MpLgotICAgIHdvcmRzZXBfcmUgPSByZS5jb21waWxlKAotICAgICAgICByJyhccyt8JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFueSB3aGl0ZXNwYWNlCi0gICAgICAgIHInW15cc1x3XSpcdytbXjAtOVxXXS0oPz1cdytbXjAtOVxXXSl8JyAgICMgaHlwaGVuYXRlZCB3b3JkcwotICAgICAgICByJyg/PD1bXHdcIVwiXCdcJlwuXCxcP10pLXsyLH0oPz1cdykpJykgICAjIGVtLWRhc2gKKyAgICB3b3JkX3B1bmN0ID0gcidbXHchIlwnJi4sP10nCisgICAgbGV0dGVyID0gcidbXlxkXFddJworICAgIHdvcmRzZXBfcmUgPSByZS5jb21waWxlKHInJycKKyAgICAgICAgKCAjIGFueSB3aGl0ZXNwYWNlCisgICAgICAgICAgXHMrCisgICAgICAgIHwgIyBlbS1kYXNoIGJldHdlZW4gd29yZHMKKyAgICAgICAgICAoPzw9JSh3cClzKSAtezIsfSAoPz1cdykKKyAgICAgICAgfCAjIHdvcmQsIHBvc3NpYmx5IGh5cGhlbmF0ZWQKKyAgICAgICAgICBcUys/ICg/OgorICAgICAgICAgICAgIyBoeXBoZW5hdGVkIHdvcmQKKyAgICAgICAgICAgICAgLSg/OiAoPzw9JShsdClzezJ9LSkgfCAoPzw9JShsdClzLSUobHQpcy0pKQorICAgICAgICAgICAgICAoPz0gJShsdClzIC0/ICUobHQpcykKKyAgICAgICAgICAgIHwgIyBlbmQgb2Ygd29yZAorICAgICAgICAgICAgICAoPz1cc3xcWikKKyAgICAgICAgICAgIHwgIyBlbS1kYXNoCisgICAgICAgICAgICAgICg/PD0lKHdwKXMpICg/PS17Mix9XHcpCisgICAgICAgICAgICApCisgICAgICAgICknJycgJSB7J3dwJzogd29yZF9wdW5jdCwgJ2x0JzogbGV0dGVyfSwgcmUuVkVSQk9TRSkKKyAgICBkZWwgd29yZF9wdW5jdCwgbGV0dGVyCiAKICAgICAjIFRoaXMgbGVzcyBmdW5reSBsaXR0bGUgcmVnZXgganVzdCBzcGxpdCBvbiByZWNvZ25pemVkIHNwYWNlcy4gRS5nLgogICAgICMgICAiSGVsbG8gdGhlcmUgLS0geW91IGdvb2YtYmFsbCwgdXNlIHRoZSAtYiBvcHRpb24hIgpkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggMzdhYTNiOC4uMjRjYzkxMSAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0zLDEwICszLDcgQEAKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IF90aHJlYWQKIAotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMgYXMgX2Zvcm1hdF9leGMKIGZyb20gX3dlYWtyZWZzZXQgaW1wb3J0IFdlYWtTZXQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UgYXMgX2lzbGljZSwgY291bnQgYXMgX2NvdW50CkBAIC0xMDYsOCArMTAzLDE0IEBACiAgICAgICAgICAgICBvd25lciA9IF9hY3RpdmVbb3duZXJdLm5hbWUKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gIjwlcyBvd25lcj0lciBjb3VudD0lZD4iICUgKAotICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBvd25lciwgc2VsZi5fY291bnQpCisgICAgICAgIHJldHVybiAiPCVzICVzLiVzIG9iamVjdCBvd25lcj0lciBjb3VudD0lZCBhdCAlcz4iICUgKAorICAgICAgICAgICAgImxvY2tlZCIgaWYgc2VsZi5fYmxvY2subG9ja2VkKCkgZWxzZSAidW5sb2NrZWQiLAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgIG93bmVyLAorICAgICAgICAgICAgc2VsZi5fY291bnQsCisgICAgICAgICAgICBoZXgoaWQoc2VsZikpCisgICAgICAgICkKIAogICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpOgogICAgICAgICAiIiJBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgpkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKaW5kZXggMGIxYzYwMS4uMmRlODhmNyAxMDA3NTUKLS0tIGEvTGliL3RpbWVpdC5weQorKysgYi9MaWIvdGltZWl0LnB5CkBAIC0yMCw2ICsyMCw3IEBACiAgIC10Ly0tdGltZTogdXNlIHRpbWUudGltZSgpIChkZXByZWNhdGVkKQogICAtYy8tLWNsb2NrOiB1c2UgdGltZS5jbG9jaygpIChkZXByZWNhdGVkKQogICAtdi8tLXZlcmJvc2U6IHByaW50IHJhdyB0aW1pbmcgcmVzdWx0czsgcmVwZWF0IGZvciBtb3JlIGRpZ2l0cyBwcmVjaXNpb24KKyAgLXUvLS11bml0OiBzZXQgdGhlIG91dHB1dCB0aW1lIHVuaXQgKHVzZWMsIG1zZWMsIG9yIHNlYykKICAgLWgvLS1oZWxwOiBwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQKICAgLS06IHNlcGFyYXRlIG9wdGlvbnMgZnJvbSBzdGF0ZW1lbnQsIHVzZSB3aGVuIHN0YXRlbWVudCBzdGFydHMgd2l0aCAtCiAgIHN0YXRlbWVudDogc3RhdGVtZW50IHRvIGJlIHRpbWVkIChkZWZhdWx0ICdwYXNzJykKQEAgLTYxLDYgKzYyLDggQEAKIGRlZmF1bHRfcmVwZWF0ID0gMwogZGVmYXVsdF90aW1lciA9IHRpbWUucGVyZl9jb3VudGVyCiAKK19nbG9iYWxzID0gZ2xvYmFscworCiAjIERvbid0IGNoYW5nZSB0aGUgaW5kZW50YXRpb24gb2YgdGhlIHRlbXBsYXRlOyB0aGUgcmVpbmRlbnQoKSBjYWxscwogIyBpbiBUaW1lci5fX2luaXRfXygpIGRlcGVuZCBvbiBzZXR1cCBiZWluZyBpbmRlbnRlZCA0IHNwYWNlcyBhbmQgc3RtdAogIyBiZWluZyBpbmRlbnRlZCA4IHNwYWNlcy4KQEAgLTc4LDI0ICs4MSwxNSBAQAogICAgICIiIkhlbHBlciB0byByZWluZGVudCBhIG11bHRpLWxpbmUgc3RhdGVtZW50LiIiIgogICAgIHJldHVybiBzcmMucmVwbGFjZSgiXG4iLCAiXG4iICsgIiAiKmluZGVudCkKIAotZGVmIF90ZW1wbGF0ZV9mdW5jKHNldHVwLCBmdW5jKToKLSAgICAiIiJDcmVhdGUgYSB0aW1lciBmdW5jdGlvbi4gVXNlZCBpZiB0aGUgInN0YXRlbWVudCIgaXMgYSBjYWxsYWJsZS4iIiIKLSAgICBkZWYgaW5uZXIoX2l0LCBfdGltZXIsIF9mdW5jPWZ1bmMpOgotICAgICAgICBzZXR1cCgpCi0gICAgICAgIF90MCA9IF90aW1lcigpCi0gICAgICAgIGZvciBfaSBpbiBfaXQ6Ci0gICAgICAgICAgICBfZnVuYygpCi0gICAgICAgIF90MSA9IF90aW1lcigpCi0gICAgICAgIHJldHVybiBfdDEgLSBfdDAKLSAgICByZXR1cm4gaW5uZXIKLQogY2xhc3MgVGltZXI6CiAgICAgIiIiQ2xhc3MgZm9yIHRpbWluZyBleGVjdXRpb24gc3BlZWQgb2Ygc21hbGwgY29kZSBzbmlwcGV0cy4KIAogICAgIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIHN0YXRlbWVudCB0byBiZSB0aW1lZCwgYW4gYWRkaXRpb25hbAogICAgIHN0YXRlbWVudCB1c2VkIGZvciBzZXR1cCwgYW5kIGEgdGltZXIgZnVuY3Rpb24uICBCb3RoIHN0YXRlbWVudHMKICAgICBkZWZhdWx0IHRvICdwYXNzJzsgdGhlIHRpbWVyIGZ1bmN0aW9uIGlzIHBsYXRmb3JtLWRlcGVuZGVudCAoc2VlCi0gICAgbW9kdWxlIGRvYyBzdHJpbmcpLgorICAgIG1vZHVsZSBkb2Mgc3RyaW5nKS4gIElmICdnbG9iYWxzJyBpcyBzcGVjaWZpZWQsIHRoZSBjb2RlIHdpbGwgYmUKKyAgICBleGVjdXRlZCB3aXRoaW4gdGhhdCBuYW1lc3BhY2UgKGFzIG9wcG9zZWQgdG8gaW5zaWRlIHRpbWVpdCdzCisgICAgbmFtZXNwYWNlKS4KIAogICAgIFRvIG1lYXN1cmUgdGhlIGV4ZWN1dGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBzdGF0ZW1lbnQsIHVzZSB0aGUKICAgICB0aW1laXQoKSBtZXRob2QuICBUaGUgcmVwZWF0KCkgbWV0aG9kIGlzIGEgY29udmVuaWVuY2UgdG8gY2FsbApAQCAtMTA1LDQyICs5OSw0MCBAQAogICAgIG11bHRpLWxpbmUgc3RyaW5nIGxpdGVyYWxzLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0bXQ9InBhc3MiLCBzZXR1cD0icGFzcyIsIHRpbWVyPWRlZmF1bHRfdGltZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAorICAgICAgICAgICAgICAgICBnbG9iYWxzPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4gIFNlZSBjbGFzcyBkb2Mgc3RyaW5nLiIiIgogICAgICAgICBzZWxmLnRpbWVyID0gdGltZXIKLSAgICAgICAgbnMgPSB7fQorICAgICAgICBsb2NhbF9ucyA9IHt9CisgICAgICAgIGdsb2JhbF9ucyA9IF9nbG9iYWxzKCkgaWYgZ2xvYmFscyBpcyBOb25lIGVsc2UgZ2xvYmFscworICAgICAgICBpbml0ID0gJycKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZXR1cCwgc3RyKToKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY29kZSBjYW4gYmUgY29tcGlsZWQgb3V0c2lkZSBhIGZ1bmN0aW9uCisgICAgICAgICAgICBjb21waWxlKHNldHVwLCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQorICAgICAgICAgICAgc3RtdHByZWZpeCA9IHNldHVwICsgJ1xuJworICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKKyAgICAgICAgZWxpZiBjYWxsYWJsZShzZXR1cCk6CisgICAgICAgICAgICBsb2NhbF9uc1snX3NldHVwJ10gPSBzZXR1cAorICAgICAgICAgICAgaW5pdCArPSAnLCBfc2V0dXA9X3NldHVwJworICAgICAgICAgICAgc3RtdHByZWZpeCA9ICcnCisgICAgICAgICAgICBzZXR1cCA9ICdfc2V0dXAoKScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdG10LCBzdHIpOgogICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjb2RlIGNhbiBiZSBjb21waWxlZCBvdXRzaWRlIGEgZnVuY3Rpb24KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6Ci0gICAgICAgICAgICAgICAgY29tcGlsZShzZXR1cCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKLSAgICAgICAgICAgICAgICBjb21waWxlKHNldHVwICsgJ1xuJyArIHN0bXQsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbXBpbGUoc3RtdCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKKyAgICAgICAgICAgIGNvbXBpbGUoc3RtdHByZWZpeCArIHN0bXQsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCiAgICAgICAgICAgICBzdG10ID0gcmVpbmRlbnQoc3RtdCwgOCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6Ci0gICAgICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgaW5pdD0nJykKLSAgICAgICAgICAgIGVsaWYgY2FsbGFibGUoc2V0dXApOgotICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPSdfc2V0dXAoKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ9JywgX3NldHVwPV9zZXR1cCcpCi0gICAgICAgICAgICAgICAgbnNbJ19zZXR1cCddID0gc2V0dXAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQotICAgICAgICAgICAgc2VsZi5zcmMgPSBzcmMgIyBTYXZlIGZvciB0cmFjZWJhY2sgZGlzcGxheQotICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoc3JjLCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQotICAgICAgICAgICAgZXhlYyhjb2RlLCBnbG9iYWxzKCksIG5zKQotICAgICAgICAgICAgc2VsZi5pbm5lciA9IG5zWyJpbm5lciJdCiAgICAgICAgIGVsaWYgY2FsbGFibGUoc3RtdCk6Ci0gICAgICAgICAgICBzZWxmLnNyYyA9IE5vbmUKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6Ci0gICAgICAgICAgICAgICAgX3NldHVwID0gc2V0dXAKLSAgICAgICAgICAgICAgICBkZWYgc2V0dXAoKToKLSAgICAgICAgICAgICAgICAgICAgZXhlYyhfc2V0dXAsIGdsb2JhbHMoKSwgbnMpCi0gICAgICAgICAgICBlbGlmIG5vdCBjYWxsYWJsZShzZXR1cCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQotICAgICAgICAgICAgc2VsZi5pbm5lciA9IF90ZW1wbGF0ZV9mdW5jKHNldHVwLCBzdG10KQorICAgICAgICAgICAgbG9jYWxfbnNbJ19zdG10J10gPSBzdG10CisgICAgICAgICAgICBpbml0ICs9ICcsIF9zdG10PV9zdG10JworICAgICAgICAgICAgc3RtdCA9ICdfc3RtdCgpJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RtdCBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBjYWxsYWJsZSIpCisgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPXNldHVwLCBpbml0PWluaXQpCisgICAgICAgIHNlbGYuc3JjID0gc3JjICAjIFNhdmUgZm9yIHRyYWNlYmFjayBkaXNwbGF5CisgICAgICAgIGNvZGUgPSBjb21waWxlKHNyYywgZHVtbXlfc3JjX25hbWUsICJleGVjIikKKyAgICAgICAgZXhlYyhjb2RlLCBnbG9iYWxfbnMsIGxvY2FsX25zKQorICAgICAgICBzZWxmLmlubmVyID0gbG9jYWxfbnNbImlubmVyIl0KIAogICAgIGRlZiBwcmludF9leGMoc2VsZiwgZmlsZT1Ob25lKToKICAgICAgICAgIiIiSGVscGVyIHRvIHByaW50IGEgdHJhY2ViYWNrIGZyb20gdGhlIHRpbWVkIGNvZGUuCkBAIC0yMTYsMTQgKzIwOCwxNCBAQAogICAgICAgICByZXR1cm4gcgogCiBkZWYgdGltZWl0KHN0bXQ9InBhc3MiLCBzZXR1cD0icGFzcyIsIHRpbWVyPWRlZmF1bHRfdGltZXIsCi0gICAgICAgICAgIG51bWJlcj1kZWZhdWx0X251bWJlcik6CisgICAgICAgICAgIG51bWJlcj1kZWZhdWx0X251bWJlciwgZ2xvYmFscz1Ob25lKToKICAgICAiIiJDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgVGltZXIgb2JqZWN0IGFuZCBjYWxsIHRpbWVpdCBtZXRob2QuIiIiCi0gICAgcmV0dXJuIFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikudGltZWl0KG51bWJlcikKKyAgICByZXR1cm4gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyLCBnbG9iYWxzKS50aW1laXQobnVtYmVyKQogCiBkZWYgcmVwZWF0KHN0bXQ9InBhc3MiLCBzZXR1cD0icGFzcyIsIHRpbWVyPWRlZmF1bHRfdGltZXIsCi0gICAgICAgICAgIHJlcGVhdD1kZWZhdWx0X3JlcGVhdCwgbnVtYmVyPWRlZmF1bHRfbnVtYmVyKToKKyAgICAgICAgICAgcmVwZWF0PWRlZmF1bHRfcmVwZWF0LCBudW1iZXI9ZGVmYXVsdF9udW1iZXIsIGdsb2JhbHM9Tm9uZSk6CiAgICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIFRpbWVyIG9iamVjdCBhbmQgY2FsbCByZXBlYXQgbWV0aG9kLiIiIgotICAgIHJldHVybiBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIpLnJlcGVhdChyZXBlYXQsIG51bWJlcikKKyAgICByZXR1cm4gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyLCBnbG9iYWxzKS5yZXBlYXQocmVwZWF0LCBudW1iZXIpCiAKIGRlZiBtYWluKGFyZ3M9Tm9uZSwgKiwgX3dyYXBfdGltZXI9Tm9uZSk6CiAgICAgIiIiTWFpbiBwcm9ncmFtLCB1c2VkIHdoZW4gcnVuIGFzIGEgc2NyaXB0LgpAQCAtMjQ2LDEwICsyMzgsMTAgQEAKICAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQogICAgIGltcG9ydCBnZXRvcHQKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICJuOnM6cjp0Y3B2aCIsCisgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICJuOnU6czpyOnRjcHZoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJudW1iZXI9IiwgInNldHVwPSIsICJyZXBlYXQ9IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwgImNsb2NrIiwgInByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlcmJvc2UiLCAiaGVscCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlcmJvc2UiLCAidW5pdD0iLCAiaGVscCJdKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgZXJyOgogICAgICAgICBwcmludChlcnIpCiAgICAgICAgIHByaW50KCJ1c2UgLWgvLS1oZWxwIGZvciBjb21tYW5kIGxpbmUgaGVscCIpCkBAIC0yNjAsMTIgKzI1MiwyMSBAQAogICAgIHNldHVwID0gW10KICAgICByZXBlYXQgPSBkZWZhdWx0X3JlcGVhdAogICAgIHZlcmJvc2UgPSAwCisgICAgdGltZV91bml0ID0gTm9uZQorICAgIHVuaXRzID0geyJ1c2VjIjogMSwgIm1zZWMiOiAxZTMsICJzZWMiOiAxZTZ9CiAgICAgcHJlY2lzaW9uID0gMwogICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgIGlmIG8gaW4gKCItbiIsICItLW51bWJlciIpOgogICAgICAgICAgICAgbnVtYmVyID0gaW50KGEpCiAgICAgICAgIGlmIG8gaW4gKCItcyIsICItLXNldHVwIik6CiAgICAgICAgICAgICBzZXR1cC5hcHBlbmQoYSkKKyAgICAgICAgaWYgbyBpbiAoIi11IiwgIi0tdW5pdCIpOgorICAgICAgICAgICAgaWYgYSBpbiB1bml0czoKKyAgICAgICAgICAgICAgICB0aW1lX3VuaXQgPSBhCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJVbnJlY29nbml6ZWQgdW5pdC4gUGxlYXNlIHNlbGVjdCB1c2VjLCBtc2VjLCBvciBzZWMuIiwKKyAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgIGlmIG8gaW4gKCItciIsICItLXJlcGVhdCIpOgogICAgICAgICAgICAgcmVwZWF0ID0gaW50KGEpCiAgICAgICAgICAgICBpZiByZXBlYXQgPD0gMDoKQEAgLTMxNSwxNSArMzE2LDIxIEBACiAgICAgICAgIHByaW50KCJyYXcgdGltZXM6IiwgIiAiLmpvaW4oWyIlLipnIiAlIChwcmVjaXNpb24sIHgpIGZvciB4IGluIHJdKSkKICAgICBwcmludCgiJWQgbG9vcHMsIiAlIG51bWJlciwgZW5kPScgJykKICAgICB1c2VjID0gYmVzdCAqIDFlNiAvIG51bWJlcgotICAgIGlmIHVzZWMgPCAxMDAwOgotICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyB1c2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgdXNlYykpCisgICAgaWYgdGltZV91bml0IGlzIG5vdCBOb25lOgorICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3VuaXRzW3RpbWVfdW5pdF0sIHRpbWVfdW5pdCkpCiAgICAgZWxzZToKLSAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCi0gICAgICAgIGlmIG1zZWMgPCAxMDAwOgotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgbXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIG1zZWMpKQorICAgICAgICBpZiB1c2VjIDwgMTAwMDoKKyAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHVzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLCB1c2VjKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlYyA9IG1zZWMgLyAxMDAwCi0gICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLCBzZWMpKQorICAgICAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCisgICAgICAgICAgICBpZiBtc2VjIDwgMTAwMDoKKyAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBtc2VjKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKKyAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgc2VjKSkKICAgICByZXR1cm4gTm9uZQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCAyMWE1NjBiLi5lYTc0N2FjIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzEsOSArMzEsNiBAQAogIiIiCiAKIGltcG9ydCBzeXMKLWlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICMgQXR0ZW1wdCB0byBjb25maWd1cmUgVGNsL1RrIHdpdGhvdXQgcmVxdWlyaW5nIFBBVEgKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IF9maXgKIAogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiBUY2xFcnJvciA9IF90a2ludGVyLlRjbEVycm9yCkBAIC0zNTUsNyArMzUyLDcgQEAKIAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGFzIGFuIGludGVnZXIuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0aW50KHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKIAogY2xhc3MgRG91YmxlVmFyKFZhcmlhYmxlKToKICAgICAiIiJWYWx1ZSBob2xkZXIgZm9yIGZsb2F0IHZhcmlhYmxlcy4iIiIKQEAgLTM3NCw3ICszNzEsNyBAQAogCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYSBmbG9hdC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCisgICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRkb3VibGUoc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQogCiBjbGFzcyBCb29sZWFuVmFyKFZhcmlhYmxlKToKICAgICAiIiJWYWx1ZSBob2xkZXIgZm9yIGJvb2xlYW4gdmFyaWFibGVzLiIiIgpAQCAtNTA1LDE0ICs1MDIsMjYgQEAKICAgICBkZWYgZ2V0dmFyKHNlbGYsIG5hbWU9J1BZX1ZBUicpOgogICAgICAgICAiIiJSZXR1cm4gdmFsdWUgb2YgVGNsIHZhcmlhYmxlIE5BTUUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldHZhcihuYW1lKQotICAgIGdldGludCA9IGludAotICAgIGdldGRvdWJsZSA9IGZsb2F0CisKKyAgICBkZWYgZ2V0aW50KHNlbGYsIHMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQocykKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Ioc3RyKGV4YykpCisKKyAgICBkZWYgZ2V0ZG91YmxlKHNlbGYsIHMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUocykKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Ioc3RyKGV4YykpCisKICAgICBkZWYgZ2V0Ym9vbGVhbihzZWxmLCBzKToKICAgICAgICAgIiIiUmV0dXJuIGEgYm9vbGVhbiB2YWx1ZSBmb3IgVGNsIGJvb2xlYW4gdmFsdWVzIHRydWUgYW5kIGZhbHNlIGdpdmVuIGFzIHBhcmFtZXRlci4iIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0Ym9vbGVhbihzKQogICAgICAgICBleGNlcHQgVGNsRXJyb3I6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCisKICAgICBkZWYgZm9jdXNfc2V0KHNlbGYpOgogICAgICAgICAiIiJEaXJlY3QgaW5wdXQgZm9jdXMgdG8gdGhpcyB3aWRnZXQuCiAKQEAgLTc3NSwxMyArNzg0LDEwIEBACiAgICAgICAgICIiIlJhaXNlIHRoaXMgd2lkZ2V0IGluIHRoZSBzdGFja2luZyBvcmRlci4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKCdyYWlzZScsIHNlbGYuX3csIGFib3ZlVGhpcykKICAgICBsaWZ0ID0gdGtyYWlzZQotICAgIGRlZiBjb2xvcm1vZGVsKHNlbGYsIHZhbHVlPU5vbmUpOgotICAgICAgICAiIiJVc2VsZXNzLiBOb3QgaW1wbGVtZW50ZWQgaW4gVGsuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3RrJywgJ2NvbG9ybW9kZWwnLCBzZWxmLl93LCB2YWx1ZSkKICAgICBkZWYgd2luZm9fYXRvbShzZWxmLCBuYW1lLCBkaXNwbGF5b2Y9MCk6CiAgICAgICAgICIiIlJldHVybiBpbnRlZ2VyIHdoaWNoIHJlcHJlc2VudHMgYXRvbSBOQU1FLiIiIgogICAgICAgICBhcmdzID0gKCd3aW5mbycsICdhdG9tJykgKyBzZWxmLl9kaXNwbGF5b2YoZGlzcGxheW9mKSArIChuYW1lLCkKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoYXJncykpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoYXJncykpCiAgICAgZGVmIHdpbmZvX2F0b21uYW1lKHNlbGYsIGlkLCBkaXNwbGF5b2Y9MCk6CiAgICAgICAgICIiIlJldHVybiBuYW1lIG9mIGF0b20gd2l0aCBpZGVudGlmaWVyIElELiIiIgogICAgICAgICBhcmdzID0gKCd3aW5mbycsICdhdG9tbmFtZScpIFwKQEAgLTc4OSw3ICs3OTUsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKGFyZ3MpCiAgICAgZGVmIHdpbmZvX2NlbGxzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gbnVtYmVyIG9mIGNlbGxzIGluIHRoZSBjb2xvcm1hcCBmb3IgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnY2VsbHMnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fY2hpbGRyZW4oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHdpZGdldHMgd2hpY2ggYXJlIGNoaWxkcmVuIG9mIHRoaXMgd2lkZ2V0LiIiIgpAQCAtODIwLDIyICs4MjYsMjIgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWV0b3dpZGdldChuYW1lKQogICAgIGRlZiB3aW5mb19kZXB0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdkZXB0aCcsIHNlbGYuX3cpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdkZXB0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19leGlzdHMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoaXMgd2lkZ2V0IGV4aXN0cy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdleGlzdHMnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fZnBpeGVscyhzZWxmLCBudW1iZXIpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgZm9yIHRoZSBnaXZlbiBkaXN0YW5jZSBOVU1CRVIKICAgICAgICAgKGUuZy4gIjNjIikgYXMgZmxvYXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgJ3dpbmZvJywgJ2ZwaXhlbHMnLCBzZWxmLl93LCBudW1iZXIpKQogICAgIGRlZiB3aW5mb19nZW9tZXRyeShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGdlb21ldHJ5IHN0cmluZyBmb3IgdGhpcyB3aWRnZXQgaW4gdGhlIGZvcm0gIndpZHRoeGhlaWdodCtYK1kiLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3aW5mbycsICdnZW9tZXRyeScsIHNlbGYuX3cpCiAgICAgZGVmIHdpbmZvX2hlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGhlaWdodCBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdoZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9faWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpZGVudGlmaWVyIElEIGZvciB0aGlzIHdpZGdldC4iIiIKQEAgLTg0Nyw3ICs4NTMsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKGFyZ3MpKQogICAgIGRlZiB3aW5mb19pc21hcHBlZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhpcyB3aWRnZXQgaXMgbWFwcGVkLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lzbWFwcGVkJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX21hbmFnZXIoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgd2luZG93IG1hbmFuZ2VyIG5hbWUgZm9yIHRoaXMgd2lkZ2V0LiIiIgpAQCAtODY1LDExICs4NzEsMTEgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChhcmdzKQogICAgIGRlZiB3aW5mb19waXhlbHMoc2VsZiwgbnVtYmVyKToKICAgICAgICAgIiIiUm91bmRlZCBpbnRlZ2VyIHZhbHVlIG9mIHdpbmZvX2ZwaXhlbHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncGl4ZWxzJywgc2VsZi5fdywgbnVtYmVyKSkKICAgICBkZWYgd2luZm9fcG9pbnRlcngoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeCBjb29yZGluYXRlIG9mIHRoZSBwb2ludGVyIG9uIHRoZSByb290IHdpbmRvdy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdwb2ludGVyeCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19wb2ludGVyeHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIHggYW5kIHkgY29vcmRpbmF0ZXMgb2YgdGhlIHBvaW50ZXIgb24gdGhlIHJvb3Qgd2luZG93LiIiIgpAQCAtODc3LDE1ICs4ODMsMTUgQEAKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncG9pbnRlcnh5Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3BvaW50ZXJ5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnRlciBvbiB0aGUgcm9vdCB3aW5kb3cuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncG9pbnRlcnknLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcmVxaGVpZ2h0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gcmVxdWVzdGVkIGhlaWdodCBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdyZXFoZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcmVxd2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiByZXF1ZXN0ZWQgd2lkdGggb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncmVxd2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcmdiKHNlbGYsIGNvbG9yKToKICAgICAgICAgIiIiUmV0dXJuIHR1cGxlIG9mIGRlY2ltYWwgdmFsdWVzIGZvciByZWQsIGdyZWVuLCBibHVlIGZvcgpAQCAtODk1LDEyICs5MDEsMTIgQEAKICAgICBkZWYgd2luZm9fcm9vdHgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB4IGNvb3JkaW5hdGUgb2YgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhpcyB3aWRnZXQgb24gdGhlCiAgICAgICAgIHJvb3Qgd2luZG93LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Jvb3R4Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3Jvb3R5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4geSBjb29yZGluYXRlIG9mIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoaXMgd2lkZ2V0IG9uIHRoZQogICAgICAgICByb290IHdpbmRvdy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdyb290eScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zY3JlZW4oc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgc2NyZWVuIG5hbWUgb2YgdGhpcyB3aWRnZXQuIiIiCkBAIC05MDgsMjcgKzkxNCwyNyBAQAogICAgIGRlZiB3aW5mb19zY3JlZW5jZWxscyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlIGNlbGxzIGluIHRoZSBjb2xvcm1hcCBvZiB0aGUgc2NyZWVuCiAgICAgICAgIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbmNlbGxzJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbmRlcHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBvZiB0aGUgcm9vdCB3aW5kb3cgb2YgdGhlCiAgICAgICAgIHNjcmVlbiBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW5kZXB0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zY3JlZW5oZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBzY3JlZW4gb2YgdGhpcyB3aWRnZXQKICAgICAgICAgaW4gcGl4ZWwuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVuaGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbm1taGVpZ2h0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhlIGhlaWdodCBvZiB0aGUgc2NyZWVuIG9mCiAgICAgICAgIHRoaXMgd2lkZ2V0IGluIG1tLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbm1taGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbm1td2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBvZiB0aGUgd2lkdGggb2YgdGhlIHNjcmVlbiBvZgogICAgICAgICB0aGlzIHdpZGdldCBpbiBtbS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW5tbXdpZHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NjcmVlbnZpc3VhbChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIG9uZSBvZiB0aGUgc3RyaW5ncyBkaXJlY3Rjb2xvciwgZ3JheXNjYWxlLCBwc2V1ZG9jb2xvciwKQEAgLTkzOCw3ICs5NDQsNyBAQAogICAgIGRlZiB3aW5mb19zY3JlZW53aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIHRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuIG9mCiAgICAgICAgIHRoaXMgd2lkZ2V0IGluIHBpeGVsLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbndpZHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3NlcnZlcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGluZm9ybWF0aW9uIG9mIHRoZSBYLVNlcnZlciBvZiB0aGUgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0IGluCkBAIC05NTAsNyArOTU2LDcgQEAKICAgICAgICAgICAgICd3aW5mbycsICd0b3BsZXZlbCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb192aWV3YWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIHdpZGdldCBhbmQgYWxsIGl0cyBoaWdoZXIgYW5jZXN0b3JzIGFyZSBtYXBwZWQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlld2FibGUnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdmlzdWFsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gb25lIG9mIHRoZSBzdHJpbmdzIGRpcmVjdGNvbG9yLCBncmF5c2NhbGUsIHBzZXVkb2NvbG9yLApAQCAtOTgyLDM3ICs5ODgsMzcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIHZpcnR1YWwgcm9vdCB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIHRoaXMKICAgICAgICAgd2lkZ2V0IGluIHBpeGVscy4gSWYgdGhlcmUgaXMgbm8gdmlydHVhbCByb290IHdpbmRvdyByZXR1cm4gdGhlCiAgICAgICAgIGhlaWdodCBvZiB0aGUgc2NyZWVuLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zyb290aGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3Zyb290d2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgd2lkdGggb2YgdGhlIHZpcnR1YWwgcm9vdCB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIHRoaXMKICAgICAgICAgd2lkZ2V0IGluIHBpeGVsLiBJZiB0aGVyZSBpcyBubyB2aXJ0dWFsIHJvb3Qgd2luZG93IHJldHVybiB0aGUKICAgICAgICAgd2lkdGggb2YgdGhlIHNjcmVlbi4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2cm9vdHdpZHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3Zyb290eChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB4IG9mZnNldCBvZiB0aGUgdmlydHVhbCByb290IHJlbGF0aXZlIHRvIHRoZSByb290CiAgICAgICAgIHdpbmRvdyBvZiB0aGUgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zyb290eCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb192cm9vdHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeSBvZmZzZXQgb2YgdGhlIHZpcnR1YWwgcm9vdCByZWxhdGl2ZSB0byB0aGUgcm9vdAogICAgICAgICB3aW5kb3cgb2YgdGhlIHNjcmVlbiBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2cm9vdHknLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fd2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgd2lkdGggb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnd2lkdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9feChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoaXMgd2lkZ2V0CiAgICAgICAgIGluIHRoZSBwYXJlbnQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAneCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb195KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhpcyB3aWRnZXQKICAgICAgICAgaW4gdGhlIHBhcmVudC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd5Jywgc2VsZi5fdykpCiAgICAgZGVmIHVwZGF0ZShzZWxmKToKICAgICAgICAgIiIiRW50ZXIgZXZlbnQgbG9vcCB1bnRpbCBhbGwgcGVuZGluZyBldmVudHMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBieSBUY2wuIiIiCkBAIC0xMTI5LDExICsxMTM1LDExIEBACiAgICAgZGVmIF9nZXRpbnRzKHNlbGYsIHN0cmluZyk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgogICAgICAgICBpZiBzdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gdHVwbGUobWFwKGdldGludCwgc2VsZi50ay5zcGxpdGxpc3Qoc3RyaW5nKSkpCisgICAgICAgICAgICByZXR1cm4gdHVwbGUobWFwKHNlbGYudGsuZ2V0aW50LCBzZWxmLnRrLnNwbGl0bGlzdChzdHJpbmcpKSkKICAgICBkZWYgX2dldGRvdWJsZXMoc2VsZiwgc3RyaW5nKToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCiAgICAgICAgIGlmIHN0cmluZzoKLSAgICAgICAgICAgIHJldHVybiB0dXBsZShtYXAoZ2V0ZG91YmxlLCBzZWxmLnRrLnNwbGl0bGlzdChzdHJpbmcpKSkKKyAgICAgICAgICAgIHJldHVybiB0dXBsZShtYXAoc2VsZi50ay5nZXRkb3VibGUsIHNlbGYudGsuc3BsaXRsaXN0KHN0cmluZykpKQogICAgIGRlZiBfZ2V0Ym9vbGVhbihzZWxmLCBzdHJpbmcpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgaWYgc3RyaW5nOgpAQCAtMTIzMiwxMiArMTIzOCwxMiBAQAogICAgICAgICBpZiBsZW4oYXJncykgIT0gbGVuKHNlbGYuX3N1YnN0X2Zvcm1hdCk6IHJldHVybiBhcmdzCiAgICAgICAgIGdldGJvb2xlYW4gPSBzZWxmLnRrLmdldGJvb2xlYW4KIAotICAgICAgICBnZXRpbnQgPSBpbnQKKyAgICAgICAgZ2V0aW50ID0gc2VsZi50ay5nZXRpbnQKICAgICAgICAgZGVmIGdldGludF9ldmVudChzKToKICAgICAgICAgICAgICIiIlRrIGNoYW5nZWQgYmVoYXZpb3IgaW4gOC40LjIsIHJldHVybmluZyAiPz8iIHJhdGhlciBtb3JlIG9mdGVuLiIiIgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBnZXRpbnQocykKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVGNsRXJyb3IpOgogICAgICAgICAgICAgICAgIHJldHVybiBzCiAKICAgICAgICAgbnNpZ24sIGIsIGYsIGgsIGssIHMsIHQsIHcsIHgsIHksIEEsIEUsIEssIE4sIFcsIFQsIFgsIFksIEQgPSBhcmdzCkBAIC0xMjgxLDcgKzEyODcsNyBAQAogICAgICAgICBlLnlfcm9vdCA9IGdldGludF9ldmVudChZKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlLmRlbHRhID0gZ2V0aW50KEQpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFRjbEVycm9yKToKICAgICAgICAgICAgIGUuZGVsdGEgPSAwCiAgICAgICAgIHJldHVybiAoZSwpCiAgICAgZGVmIF9yZXBvcnRfZXhjZXB0aW9uKHNlbGYpOgpAQCAtMTMzNiw2ICsxMzQyLDExIEBACiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgd2luZG93IHBhdGggbmFtZSBvZiB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3cKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXMuJXMgb2JqZWN0ICVzPicgJSAoCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sIHNlbGYuX3cpCisKICAgICAjIFBhY2sgbWV0aG9kcyB0aGF0IGFwcGx5IHRvIHRoZSBtYXN0ZXIKICAgICBfbm9hcmdfID0gWydfbm9hcmdfJ10KICAgICBkZWYgcGFja19wcm9wYWdhdGUoc2VsZiwgZmxhZz1fbm9hcmdfKToKQEAgLTE0MDEsMTAgKzE0MTIsMTAgQEAKICAgICAgICAgICAgICAgICBpZiBub3Qgc3ZhbHVlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIGVsaWYgJy4nIGluIHN2YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzdmFsdWUpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGludChzdmFsdWUpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHN2YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVGNsRXJyb3IpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIHZhbHVlCiAKQEAgLTE4NTAsNyArMTg2MSw3IEBACiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGJhc2VOYW1lID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkKICAgICAgICAgICAgIGJhc2VOYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2VOYW1lKQotICAgICAgICAgICAgaWYgZXh0IG5vdCBpbiAoJy5weScsICcucHljJywgJy5weW8nKToKKyAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcucHknLCAnLnB5YycpOgogICAgICAgICAgICAgICAgIGJhc2VOYW1lID0gYmFzZU5hbWUgKyBleHQKICAgICAgICAgaW50ZXJhY3RpdmUgPSAwCiAgICAgICAgIHNlbGYudGsgPSBfdGtpbnRlci5jcmVhdGUoc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB1c2VUaywgc3luYywgdXNlKQpAQCAtMjE5NiwyMSArMjIwNyw2IEBACiAgICAgICAgICIiIgogICAgICAgICBXaWRnZXQuX19pbml0X18oc2VsZiwgbWFzdGVyLCAnYnV0dG9uJywgY25mLCBrdykKIAotICAgIGRlZiB0a0J1dHRvbkVudGVyKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25FbnRlcicsIHNlbGYuX3cpCi0KLSAgICBkZWYgdGtCdXR0b25MZWF2ZShzZWxmLCAqZHVtbXkpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrQnV0dG9uTGVhdmUnLCBzZWxmLl93KQotCi0gICAgZGVmIHRrQnV0dG9uRG93bihzZWxmLCAqZHVtbXkpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrQnV0dG9uRG93bicsIHNlbGYuX3cpCi0KLSAgICBkZWYgdGtCdXR0b25VcChzZWxmLCAqZHVtbXkpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrQnV0dG9uVXAnLCBzZWxmLl93KQotCi0gICAgZGVmIHRrQnV0dG9uSW52b2tlKHNlbGYsICpkdW1teSk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtCdXR0b25JbnZva2UnLCBzZWxmLl93KQotCiAgICAgZGVmIGZsYXNoKHNlbGYpOgogICAgICAgICAiIiJGbGFzaCB0aGUgYnV0dG9uLgogCkBAIC0yMjk3LDE3ICsyMjkzLDE3IEBACiAgICAgZGVmIGNhbnZhc3goc2VsZiwgc2NyZWVueCwgZ3JpZHNwYWNpbmc9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY2FudmFzIHggY29vcmRpbmF0ZSBvZiBwaXhlbCBwb3NpdGlvbiBTQ1JFRU5YIHJvdW5kZWQKICAgICAgICAgdG8gbmVhcmVzdCBtdWx0aXBsZSBvZiBHUklEU1BBQ0lORyB1bml0cy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnY2FudmFzeCcsIHNjcmVlbngsIGdyaWRzcGFjaW5nKSkKICAgICBkZWYgY2FudmFzeShzZWxmLCBzY3JlZW55LCBncmlkc3BhY2luZz1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjYW52YXMgeSBjb29yZGluYXRlIG9mIHBpeGVsIHBvc2l0aW9uIFNDUkVFTlkgcm91bmRlZAogICAgICAgICB0byBuZWFyZXN0IG11bHRpcGxlIG9mIEdSSURTUEFDSU5HIHVuaXRzLiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICdjYW52YXN5Jywgc2NyZWVueSwgZ3JpZHNwYWNpbmcpKQogICAgIGRlZiBjb29yZHMoc2VsZiwgKmFyZ3MpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvb3JkaW5hdGVzIGZvciB0aGUgaXRlbSBnaXZlbiBpbiBBUkdTLiIiIgogICAgICAgICAjIFhYWCBTaG91bGQgdXNlIF9mbGF0dGVuIG9uIGFyZ3MKLSAgICAgICAgcmV0dXJuIFtnZXRkb3VibGUoeCkgZm9yIHggaW4KKyAgICAgICAgcmV0dXJuIFtzZWxmLnRrLmdldGRvdWJsZSh4KSBmb3IgeCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ay5zcGxpdGxpc3QoCiAgICAgICAgICAgICAgICAgICAgc2VsZi50ay5jYWxsKChzZWxmLl93LCAnY29vcmRzJykgKyBhcmdzKSldCiAgICAgZGVmIF9jcmVhdGUoc2VsZiwgaXRlbVR5cGUsIGFyZ3MsIGt3KTogIyBBcmdzOiAodmFsLCB2YWwsIC4uLiwgY25mPXt9KQpAQCAtMjMxOCw3ICsyMzE0LDcgQEAKICAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzotMV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNuZiA9IHt9Ci0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NyZWF0ZScsIGl0ZW1UeXBlLAogICAgICAgICAgICAgKihhcmdzICsgc2VsZi5fb3B0aW9ucyhjbmYsIGt3KSkpKQogICAgIGRlZiBjcmVhdGVfYXJjKHNlbGYsICphcmdzLCAqKmt3KToKQEAgLTI0MDIsNyArMjM5OCw3IEBACiAgICAgICAgIHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ2ljdXJzb3InKSArIGFyZ3MpCiAgICAgZGVmIGluZGV4KHNlbGYsICphcmdzKToKICAgICAgICAgIiIiUmV0dXJuIHBvc2l0aW9uIG9mIGN1cnNvciBhcyBpbnRlZ2VyIGluIGl0ZW0gc3BlY2lmaWVkIGluIEFSR1MuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKChzZWxmLl93LCAnaW5kZXgnKSArIGFyZ3MpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKChzZWxmLl93LCAnaW5kZXgnKSArIGFyZ3MpKQogICAgIGRlZiBpbnNlcnQoc2VsZiwgKmFyZ3MpOgogICAgICAgICAiIiJJbnNlcnQgVEVYVCBpbiBpdGVtIFRBR09SSUQgYXQgcG9zaXRpb24gUE9TLiBBUkdTIG11c3QKICAgICAgICAgYmUgVEFHT1JJRCBQT1MgVEVYVC4iIiIKQEAgLTI1MjgsNyArMjUyNCw3IEBACiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnaWN1cnNvcicsIGluZGV4KQogICAgIGRlZiBpbmRleChzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIlJldHVybiBwb3NpdGlvbiBvZiBjdXJzb3IuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2luZGV4JywgaW5kZXgpKQogICAgIGRlZiBpbnNlcnQoc2VsZiwgaW5kZXgsIHN0cmluZyk6CiAgICAgICAgICIiIkluc2VydCBTVFJJTkcgYXQgSU5ERVguIiIiCkBAIC0yNjQzLDEzICsyNjM5LDEzIEBACiAgICAgICAgICIiIlJldHVybiBpbmRleCBvZiBpdGVtIGlkZW50aWZpZWQgd2l0aCBJTkRFWC4iIiIKICAgICAgICAgaSA9IHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW5kZXgnLCBpbmRleCkKICAgICAgICAgaWYgaSA9PSAnbm9uZSc6IHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBnZXRpbnQoaSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KGkpCiAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgKmVsZW1lbnRzKToKICAgICAgICAgIiIiSW5zZXJ0IEVMRU1FTlRTIGF0IElOREVYLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdpbnNlcnQnLCBpbmRleCkgKyBlbGVtZW50cykKICAgICBkZWYgbmVhcmVzdChzZWxmLCB5KToKICAgICAgICAgIiIiR2V0IGluZGV4IG9mIGl0ZW0gd2hpY2ggaXMgbmVhcmVzdCB0byB5IGNvb3JkaW5hdGUgWS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnbmVhcmVzdCcsIHkpKQogICAgIGRlZiBzY2FuX21hcmsoc2VsZiwgeCwgeSk6CiAgICAgICAgICIiIlJlbWVtYmVyIHRoZSBjdXJyZW50IFgsIFkgY29vcmRpbmF0ZXMuIiIiCkBAIC0yNjgzLDcgKzI2NzksNyBAQAogICAgIHNlbGVjdF9zZXQgPSBzZWxlY3Rpb25fc2V0CiAgICAgZGVmIHNpemUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBsaXN0Ym94LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2l6ZScpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdzaXplJykpCiAgICAgZGVmIGl0ZW1jZ2V0KHNlbGYsIGluZGV4LCBvcHRpb24pOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHJlc291cmNlIHZhbHVlIGZvciBhbiBJVEVNIGFuZCBhbiBPUFRJT04uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoCkBAIC0yNzA5LDM1ICsyNzA1LDE1IEBACiAgICAgICAgIGRpc2FibGVkZm9yZWdyb3VuZCwgZmcsIGZvbnQsIGZvcmVncm91bmQsIHBvc3Rjb21tYW5kLCByZWxpZWYsCiAgICAgICAgIHNlbGVjdGNvbG9yLCB0YWtlZm9jdXMsIHRlYXJvZmYsIHRlYXJvZmZjb21tYW5kLCB0aXRsZSwgdHlwZS4iIiIKICAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ21lbnUnLCBjbmYsIGt3KQorICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6CisgICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKICAgICBkZWYgdGtfYmluZEZvclRyYXZlcnNhbChzZWxmKToKICAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX2JpbmRGb3JUcmF2ZXJzYWwoKSBkb2VzIG5vdGhpbmcgYW5kICcKICAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCiAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgZGVmIHRrX21iUG9zdChzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19tYlBvc3QnLCBzZWxmLl93KQotICAgIGRlZiB0a19tYlVucG9zdChzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19tYlVucG9zdCcpCi0gICAgZGVmIHRrX3RyYXZlcnNlVG9NZW51KHNlbGYsIGNoYXIpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RyYXZlcnNlVG9NZW51Jywgc2VsZi5fdywgY2hhcikKLSAgICBkZWYgdGtfdHJhdmVyc2VXaXRoaW5NZW51KHNlbGYsIGNoYXIpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RyYXZlcnNlV2l0aGluTWVudScsIHNlbGYuX3csIGNoYXIpCi0gICAgZGVmIHRrX2dldE1lbnVCdXR0b25zKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd0a19nZXRNZW51QnV0dG9ucycsIHNlbGYuX3cpCi0gICAgZGVmIHRrX25leHRNZW51KHNlbGYsIGNvdW50KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19uZXh0TWVudScsIGNvdW50KQotICAgIGRlZiB0a19uZXh0TWVudUVudHJ5KHNlbGYsIGNvdW50KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19uZXh0TWVudUVudHJ5JywgY291bnQpCi0gICAgZGVmIHRrX2ludm9rZU1lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfaW52b2tlTWVudScsIHNlbGYuX3cpCi0gICAgZGVmIHRrX2ZpcnN0TWVudShzZWxmKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19maXJzdE1lbnUnLCBzZWxmLl93KQotICAgIGRlZiB0a19tYkJ1dHRvbkRvd24oc2VsZik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfbWJCdXR0b25Eb3duJywgc2VsZi5fdykKLSAgICBkZWYgdGtfcG9wdXAoc2VsZiwgeCwgeSwgZW50cnk9IiIpOgotICAgICAgICAiIiJQb3N0IHRoZSBtZW51IGF0IHBvc2l0aW9uIFgsWSB3aXRoIGVudHJ5IEVOVFJZLiIiIgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3BvcHVwJywgc2VsZi5fdywgeCwgeSwgZW50cnkpCiAgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiQWN0aXZhdGUgZW50cnkgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKQEAgLTI4MDUsNyArMjc4MSw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgaW5kZXggb2YgYSBtZW51IGl0ZW0gaWRlbnRpZmllZCBieSBJTkRFWC4iIiIKICAgICAgICAgaSA9IHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW5kZXgnLCBpbmRleCkKICAgICAgICAgaWYgaSA9PSAnbm9uZSc6IHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBnZXRpbnQoaSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KGkpCiAgICAgZGVmIGludm9rZShzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIkludm9rZSBhIG1lbnUgaXRlbSBpZGVudGlmaWVkIGJ5IElOREVYIGFuZCBleGVjdXRlCiAgICAgICAgIHRoZSBhc3NvY2lhdGVkIGNvbW1hbmQuIiIiCkBAIC0yODIyLDEwICsyNzk4LDEwIEBACiAgICAgZGVmIHhwb3NpdGlvbihzZWxmLCBpbmRleCk6ICMgbmV3IGluIFRrIDguNQogICAgICAgICAiIiJSZXR1cm4gdGhlIHgtcG9zaXRpb24gb2YgdGhlIGxlZnRtb3N0IHBpeGVsIG9mIHRoZSBtZW51IGl0ZW0KICAgICAgICAgYXQgSU5ERVguIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKHNlbGYuX3csICd4cG9zaXRpb24nLCBpbmRleCkpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3hwb3NpdGlvbicsIGluZGV4KSkKICAgICBkZWYgeXBvc2l0aW9uKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB5LXBvc2l0aW9uIG9mIHRoZSB0b3Btb3N0IHBpeGVsIG9mIHRoZSBtZW51IGl0ZW0gYXQgSU5ERVguIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ3lwb3NpdGlvbicsIGluZGV4KSkKIAogY2xhc3MgTWVudWJ1dHRvbihXaWRnZXQpOgpAQCAtMjg4MSw5ICsyODU3LDkgQEAKICAgICAgICAgIiIiR2V0IHRoZSBjdXJyZW50IHZhbHVlIGFzIGludGVnZXIgb3IgZmxvYXQuIiIiCiAgICAgICAgIHZhbHVlID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdnZXQnKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0aW50KHZhbHVlKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBnZXRkb3VibGUodmFsdWUpCisgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQodmFsdWUpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgVGNsRXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHZhbHVlKQogICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgogICAgICAgICAiIiJTZXQgdGhlIHZhbHVlIHRvIFZBTFVFLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NldCcsIHZhbHVlKQpAQCAtMjkxMCwxOSArMjg4NiwyMyBAQAogICAgICAgICByZWxpZWYsIHJlcGVhdGRlbGF5LCByZXBlYXRpbnRlcnZhbCwgdGFrZWZvY3VzLAogICAgICAgICB0cm91Z2hjb2xvciwgd2lkdGguIiIiCiAgICAgICAgIFdpZGdldC5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICdzY3JvbGxiYXInLCBjbmYsIGt3KQotICAgIGRlZiBhY3RpdmF0ZShzZWxmLCBpbmRleCk6Ci0gICAgICAgICIiIkRpc3BsYXkgdGhlIGVsZW1lbnQgYXQgSU5ERVggd2l0aCBhY3RpdmViYWNrZ3JvdW5kIGFuZCBhY3RpdmVyZWxpZWYuCi0gICAgICAgIElOREVYIGNhbiBiZSAiYXJyb3cxIiwic2xpZGVyIiBvciAiYXJyb3cyIi4iIiIKLSAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KQorICAgIGRlZiBhY3RpdmF0ZShzZWxmLCBpbmRleD1Ob25lKToKKyAgICAgICAgIiIiTWFya3MgdGhlIGVsZW1lbnQgaW5kaWNhdGVkIGJ5IGluZGV4IGFzIGFjdGl2ZS4KKyAgICAgICAgVGhlIG9ubHkgaW5kZXggdmFsdWVzIHVuZGVyc3Rvb2QgYnkgdGhpcyBtZXRob2QgYXJlICJhcnJvdzEiLAorICAgICAgICAic2xpZGVyIiwgb3IgImFycm93MiIuICBJZiBhbnkgb3RoZXIgdmFsdWUgaXMgc3BlY2lmaWVkIHRoZW4gbm8KKyAgICAgICAgZWxlbWVudCBvZiB0aGUgc2Nyb2xsYmFyIHdpbGwgYmUgYWN0aXZlLiAgSWYgaW5kZXggaXMgbm90IHNwZWNpZmllZCwKKyAgICAgICAgdGhlIG1ldGhvZCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBlbGVtZW50IHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZSwKKyAgICAgICAgb3IgTm9uZSBpZiBubyBlbGVtZW50IGlzIGFjdGl2ZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkgb3IgTm9uZQogICAgIGRlZiBkZWx0YShzZWxmLCBkZWx0YXgsIGRlbHRheSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZnJhY3Rpb25hbCBjaGFuZ2Ugb2YgdGhlIHNjcm9sbGJhciBzZXR0aW5nIGlmIGl0CiAgICAgICAgIHdvdWxkIGJlIG1vdmVkIGJ5IERFTFRBWCBvciBERUxUQVkgcGl4ZWxzLiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2RlbHRhJywgZGVsdGF4LCBkZWx0YXkpKQogICAgIGRlZiBmcmFjdGlvbihzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmcmFjdGlvbmFsIHZhbHVlIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgc2xpZGVyCiAgICAgICAgIHBvc2l0aW9uIG9mIFgsWS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2ZyYWN0aW9uJywgeCwgeSkpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2ZyYWN0aW9uJywgeCwgeSkpCiAgICAgZGVmIGlkZW50aWZ5KHNlbGYsIHgsIHkpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGVsZW1lbnQgdW5kZXIgcG9zaXRpb24gWCxZIGFzIG9uZSBvZgogICAgICAgICAiYXJyb3cxIiwic2xpZGVyIiwiYXJyb3cyIiBvciAiIi4iIiIKQEAgLTI5MzEsMTAgKzI5MTEsMTAgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZyYWN0aW9uYWwgdmFsdWVzICh1cHBlciBhbmQgbG93ZXIgZW5kKQogICAgICAgICBvZiB0aGUgc2xpZGVyIHBvc2l0aW9uLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0ZG91YmxlcyhzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldCcpKQotICAgIGRlZiBzZXQoc2VsZiwgKmFyZ3MpOgorICAgIGRlZiBzZXQoc2VsZiwgZmlyc3QsIGxhc3QpOgogICAgICAgICAiIiJTZXQgdGhlIGZyYWN0aW9uYWwgdmFsdWVzIG9mIHRoZSBzbGlkZXIgcG9zaXRpb24gKHVwcGVyIGFuZAogICAgICAgICBsb3dlciBlbmRzIGFzIHZhbHVlIGJldHdlZW4gMCBhbmQgMSkuIiIiCi0gICAgICAgIHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ3NldCcpICsgYXJncykKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdzZXQnLCBmaXJzdCwgbGFzdCkKIAogCiAKQEAgLTI5NjksMTQgKzI5NDksNiBAQAogICAgICAgICBib3ggb2YgdGhlIHZpc2libGUgcGFydCBvZiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBpbmRleC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2dldGludHMoCiAgICAgICAgICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdiYm94JywgaW5kZXgpKSBvciBOb25lCi0gICAgZGVmIHRrX3RleHRTZWxlY3RUbyhzZWxmLCBpbmRleCk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdGV4dFNlbGVjdFRvJywgc2VsZi5fdywgaW5kZXgpCi0gICAgZGVmIHRrX3RleHRCYWNrc3BhY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdGV4dEJhY2tzcGFjZScsIHNlbGYuX3cpCi0gICAgZGVmIHRrX3RleHRJbmRleENsb3NlcihzZWxmLCBhLCBiLCBjKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190ZXh0SW5kZXhDbG9zZXInLCBzZWxmLl93LCBhLCBiLCBjKQotICAgIGRlZiB0a190ZXh0UmVzZXRBbmNob3Ioc2VsZiwgaW5kZXgpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RleHRSZXNldEFuY2hvcicsIHNlbGYuX3csIGluZGV4KQogICAgIGRlZiBjb21wYXJlKHNlbGYsIGluZGV4MSwgb3AsIGluZGV4Mik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIGJldHdlZW4gaW5kZXggSU5ERVgxIGFuZCBpbmRleCBJTkRFWDIgdGhlCiAgICAgICAgIHJlbGF0aW9uIE9QIGlzIHNhdGlzZmllZC4gT1AgaXMgb25lIG9mIDwsIDw9LCA9PSwgPj0sID4sIG9yICE9LiIiIgpAQCAtMzQwMSwxNCArMzM3MywxNCBAQAogICAgIGNvbmZpZyA9IGNvbmZpZ3VyZQogICAgIGRlZiBoZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCdpbWFnZScsICdoZWlnaHQnLCBzZWxmLm5hbWUpKQogICAgIGRlZiB0eXBlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIGltZ2FnZSwgZS5nLiAicGhvdG8iIG9yICJiaXRtYXAiLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCdpbWFnZScsICd0eXBlJywgc2VsZi5uYW1lKQogICAgIGRlZiB3aWR0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgaW1hZ2UuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnaW1hZ2UnLCAnd2lkdGgnLCBzZWxmLm5hbWUpKQogCiBjbGFzcyBQaG90b0ltYWdlKEltYWdlKToKQEAgLTM4NTQsMzUgKzM4MjYsMTIgQEAKICAgICAgICAgIiIiUmV0dXJucyBhbiBvcmRlcmVkIGxpc3Qgb2YgdGhlIGNoaWxkIHBhbmVzLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYW5lcycpKQogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEV4dGVuc2lvbnM6Ci0KLWNsYXNzIFN0dWRidXR0b24oQnV0dG9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsIGNuZj17fSwgKiprdyk6Ci0gICAgICAgIFdpZGdldC5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICdzdHVkYnV0dG9uJywgY25mLCBrdykKLSAgICAgICAgc2VsZi5iaW5kKCc8QW55LUVudGVyPicsICAgICAgIHNlbGYudGtCdXR0b25FbnRlcikKLSAgICAgICAgc2VsZi5iaW5kKCc8QW55LUxlYXZlPicsICAgICAgIHNlbGYudGtCdXR0b25MZWF2ZSkKLSAgICAgICAgc2VsZi5iaW5kKCc8MT4nLCAgICAgICAgICAgICAgIHNlbGYudGtCdXR0b25Eb3duKQotICAgICAgICBzZWxmLmJpbmQoJzxCdXR0b25SZWxlYXNlLTE+Jywgc2VsZi50a0J1dHRvblVwKQotCi1jbGFzcyBUcmlidXR0b24oQnV0dG9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsIGNuZj17fSwgKiprdyk6Ci0gICAgICAgIFdpZGdldC5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICd0cmlidXR0b24nLCBjbmYsIGt3KQotICAgICAgICBzZWxmLmJpbmQoJzxBbnktRW50ZXI+JywgICAgICAgc2VsZi50a0J1dHRvbkVudGVyKQotICAgICAgICBzZWxmLmJpbmQoJzxBbnktTGVhdmU+JywgICAgICAgc2VsZi50a0J1dHRvbkxlYXZlKQotICAgICAgICBzZWxmLmJpbmQoJzwxPicsICAgICAgICAgICAgICAgc2VsZi50a0J1dHRvbkRvd24pCi0gICAgICAgIHNlbGYuYmluZCgnPEJ1dHRvblJlbGVhc2UtMT4nLCBzZWxmLnRrQnV0dG9uVXApCi0gICAgICAgIHNlbGZbJ2ZnJ10gICAgICAgICAgICAgICA9IHNlbGZbJ2JnJ10KLSAgICAgICAgc2VsZlsnYWN0aXZlYmFja2dyb3VuZCddID0gc2VsZlsnYmcnXQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3Q6CiAKIGRlZiBfdGVzdCgpOgogICAgIHJvb3QgPSBUaygpCiAgICAgdGV4dCA9ICJUaGlzIGlzIFRjbC9UayB2ZXJzaW9uICVzIiAlIFRjbFZlcnNpb24KLSAgICBpZiBUY2xWZXJzaW9uID49IDguMToKLSAgICAgICAgdGV4dCArPSAiXG5UaGlzIHNob3VsZCBiZSBhIGNlZGlsbGE6IFx4ZTciCisgICAgdGV4dCArPSAiXG5UaGlzIHNob3VsZCBiZSBhIGNlZGlsbGE6IFx4ZTciCiAgICAgbGFiZWwgPSBMYWJlbChyb290LCB0ZXh0PXRleHQpCiAgICAgbGFiZWwucGFjaygpCiAgICAgdGVzdCA9IEJ1dHRvbihyb290LCB0ZXh0PSJDbGljayBtZSEiLApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX2ZpeC5weSBiL0xpYi90a2ludGVyL19maXgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhODg3MzQuLjAwMDAwMDAKLS0tIGEvTGliL3RraW50ZXIvX2ZpeC5weQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLWltcG9ydCBzeXMsIG9zCi0KLSMgRGVsYXkgaW1wb3J0IF90a2ludGVyIHVudGlsIHdlIGhhdmUgc2V0IFRDTF9MSUJSQVJZLAotIyBzbyB0aGF0IFRjbF9GaW5kRXhlY3V0YWJsZSBoYXMgYSBjaGFuY2UgdG8gbG9jYXRlIGl0cwotIyBlbmNvZGluZyBkaXJlY3RvcnkuCi0KLSMgVW5mb3J0dW5hdGVseSwgd2UgY2Fubm90IGtub3cgdGhlIFRDTF9MSUJSQVJZIGRpcmVjdG9yeQotIyBpZiB3ZSBkb24ndCBrbm93IHRoZSB0Y2wgdmVyc2lvbiwgd2hpY2ggd2UgY2Fubm90IGZpbmQgb3V0Ci0jIHdpdGhvdXQgaW1wb3J0IFRjbC4gRm9ydHVuYXRlbHksIFRjbCB3aWxsIGl0c2VsZiBsb29rIGluCi0jIDxUQ0xfTElCUkFSWT5cLi5cdGNsPFRDTF9WRVJTSU9OPiwgc28gYW55dGhpbmcgY2xvc2UgdG8KLSMgdGhlIHJlYWwgVGNsIGxpYnJhcnkgd2lsbCBkby4KLQotIyBFeHBhbmQgc3ltYm9saWMgbGlua3Mgb24gVmlzdGEKLXRyeToKLSAgICBpbXBvcnQgY3R5cGVzCi0gICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXCi1leGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6Ci0gICAgZGVmIGNvbnZlcnRfcGF0aChzKToKLSAgICAgICAgcmV0dXJuIHMKLWVsc2U6Ci0gICAgZGVmIGNvbnZlcnRfcGF0aChzKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6Ci0gICAgICAgICAgICBzID0gcy5kZWNvZGUoIm1iY3MiKQotICAgICAgICBoZGlyID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5cCi0gICAgICAgICAgICBDcmVhdGVGaWxlVyhzLCAweDgwLCAgICAjIEZJTEVfUkVBRF9BVFRSSUJVVEVTCi0gICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAjIEZJTEVfU0hBUkVfUkVBRAotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgMywgICAgIyBPUEVOX0VYSVNUSU5HCi0gICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwLCAjIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTCi0gICAgICAgICAgICAgICAgICAgICAgICBOb25lKQotICAgICAgICBpZiBoZGlyID09IC0xOgotICAgICAgICAgICAgIyBDYW5ub3Qgb3BlbiBkaXJlY3RvcnksIGdpdmUgdXAKLSAgICAgICAgICAgIHJldHVybiBzCi0gICAgICAgIGJ1ZiA9IGN0eXBlcy5jcmVhdGVfdW5pY29kZV9idWZmZXIoIiIsIDMyNzY4KQotICAgICAgICByZXMgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyLlwKLSAgICAgICAgICAgIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVcoaGRpciwgYnVmLCBsZW4oYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCkgIyBWT0xVTUVfTkFNRV9ET1MKLSAgICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5DbG9zZUhhbmRsZShoZGlyKQotICAgICAgICBpZiByZXMgPT0gMDoKLSAgICAgICAgICAgICMgQ29udmVyc2lvbiBmYWlsZWQgKGUuZy4gbmV0d29yayBsb2NhdGlvbikKLSAgICAgICAgICAgIHJldHVybiBzCi0gICAgICAgIHMgPSBidWZbOnJlc10KLSAgICAgICAgIyBJZ25vcmUgbGVhZGluZyBcXD9cCi0gICAgICAgIGlmIHMuc3RhcnRzd2l0aCgiXFxcXD9cXCIpOgotICAgICAgICAgICAgcyA9IHNbNDpdCi0gICAgICAgIGlmIHMuc3RhcnRzd2l0aCgiVU5DIik6Ci0gICAgICAgICAgICBzID0gIlxcIiArIHNbMzpdCi0gICAgICAgIHJldHVybiBzCi0KLXByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsInRjbCIpCi1pZiBub3Qgb3MucGF0aC5leGlzdHMocHJlZml4KToKLSAgICAjIGRldmRpci9leHRlcm5hbHMvdGNsdGsvbGliCi0gICAgcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgImV4dGVybmFscyIsICJ0Y2x0ayIsICJsaWIiKQotICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChwcmVmaXgpCi0jIGlmIHRoaXMgZG9lcyBub3QgZXhpc3QsIG5vIGZ1cnRoZXIgc2VhcmNoIGlzIG5lZWRlZAotaWYgb3MucGF0aC5leGlzdHMocHJlZml4KToKLSAgICBwcmVmaXggPSBjb252ZXJ0X3BhdGgocHJlZml4KQotICAgIGlmICJUQ0xfTElCUkFSWSIgbm90IGluIG9zLmVudmlyb246Ci0gICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIocHJlZml4KToKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgidGNsIik6Ci0gICAgICAgICAgICAgICAgdGNsZGlyID0gb3MucGF0aC5qb2luKHByZWZpeCxuYW1lKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodGNsZGlyKToKLSAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsiVENMX0xJQlJBUlkiXSA9IHRjbGRpcgotICAgICMgQ29tcHV0ZSBUS19MSUJSQVJZLCBrbm93aW5nIHRoYXQgaXQgaGFzIHRoZSBzYW1lIHZlcnNpb24KLSAgICAjIGFzIFRjbAotICAgIGltcG9ydCBfdGtpbnRlcgotICAgIHZlciA9IHN0cihfdGtpbnRlci5UQ0xfVkVSU0lPTikKLSAgICBpZiAiVEtfTElCUkFSWSIgbm90IGluIG9zLmVudmlyb246Ci0gICAgICAgIHYgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCAndGsnK3ZlcikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHYsICJ0Y2xJbmRleCIpKToKLSAgICAgICAgICAgIG9zLmVudmlyb25bJ1RLX0xJQlJBUlknXSA9IHYKLSAgICAjIFdlIGRvbid0IGtub3cgdGhlIFRpeCB2ZXJzaW9uLCBzbyB3ZSBtdXN0IHNlYXJjaCB0aGUgZW50aXJlCi0gICAgIyBkaXJlY3RvcnkKLSAgICBpZiAiVElYX0xJQlJBUlkiIG5vdCBpbiBvcy5lbnZpcm9uOgotICAgICAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHByZWZpeCk6Ci0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoInRpeCIpOgotICAgICAgICAgICAgICAgIHRpeGRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHRpeGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlRJWF9MSUJSQVJZIl0gPSB0aXhkaXIKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2ZvbnQucHkgYi9MaWIvdGtpbnRlci9mb250LnB5CmluZGV4IGI5NjY3MzIuLjEzNjQyNTcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2ZvbnQucHkKKysrIGIvTGliL3RraW50ZXIvZm9udC5weQpAQCAtMTEyLDggKzExMiw2IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYuZGVsZXRlX2ZvbnQ6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbCgiZm9udCIsICJkZWxldGUiLCBzZWxmLm5hbWUpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHBhc3MKIApAQCAtMTUzLDcgKzE1MSw3IEBACiAgICAgICAgIGFyZ3MgPSAodGV4dCwpCiAgICAgICAgIGlmIGRpc3BsYXlvZjoKICAgICAgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YsIHRleHQpCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fY2FsbCgiZm9udCIsICJtZWFzdXJlIiwgc2VsZi5uYW1lLCAqYXJncykpCisgICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRpbnQoc2VsZi5fY2FsbCgiZm9udCIsICJtZWFzdXJlIiwgc2VsZi5uYW1lLCAqYXJncykpCiAKICAgICBkZWYgbWV0cmljcyhzZWxmLCAqb3B0aW9ucywgKiprdyk6CiAgICAgICAgICIiIlJldHVybiBmb250IG1ldHJpY3MuCkBAIC0xNjYsMTMgKzE2NCwxMyBAQAogICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZikKICAgICAgICAgaWYgb3B0aW9uczoKICAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgc2VsZi5fZ2V0KG9wdGlvbnMpCi0gICAgICAgICAgICByZXR1cm4gaW50KAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGludCgKICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlcyA9IHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgKmFyZ3MpKQogICAgICAgICAgICAgb3B0aW9ucyA9IHt9CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocmVzKSwgMik6Ci0gICAgICAgICAgICAgICAgb3B0aW9uc1tyZXNbaV1bMTpdXSA9IGludChyZXNbaSsxXSkKKyAgICAgICAgICAgICAgICBvcHRpb25zW3Jlc1tpXVsxOl1dID0gc2VsZi5fdGsuZ2V0aW50KHJlc1tpKzFdKQogICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9zaW1wbGVkaWFsb2cucHkgYi9MaWIvdGtpbnRlci9zaW1wbGVkaWFsb2cucHkKaW5kZXggNDUzMDJiNC4uYTk1ZjU1MSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvc2ltcGxlZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL3NpbXBsZWRpYWxvZy5weQpAQCAtMzI1LDcgKzMyNSw3IEBACiBjbGFzcyBfUXVlcnlJbnRlZ2VyKF9RdWVyeURpYWxvZyk6CiAgICAgZXJyb3JtZXNzYWdlID0gIk5vdCBhbiBpbnRlZ2VyLiIKICAgICBkZWYgZ2V0cmVzdWx0KHNlbGYpOgotICAgICAgICByZXR1cm4gaW50KHNlbGYuZW50cnkuZ2V0KCkpCisgICAgICAgIHJldHVybiBzZWxmLmdldGludChzZWxmLmVudHJ5LmdldCgpKQogCiBkZWYgYXNraW50ZWdlcih0aXRsZSwgcHJvbXB0LCAqKmt3KToKICAgICAnJydnZXQgYW4gaW50ZWdlciBmcm9tIHRoZSB1c2VyCkBAIC0zNDQsNyArMzQ0LDcgQEAKIGNsYXNzIF9RdWVyeUZsb2F0KF9RdWVyeURpYWxvZyk6CiAgICAgZXJyb3JtZXNzYWdlID0gIk5vdCBhIGZsb2F0aW5nIHBvaW50IHZhbHVlLiIKICAgICBkZWYgZ2V0cmVzdWx0KHNlbGYpOgotICAgICAgICByZXR1cm4gZmxvYXQoc2VsZi5lbnRyeS5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0ZG91YmxlKHNlbGYuZW50cnkuZ2V0KCkpCiAKIGRlZiBhc2tmbG9hdCh0aXRsZSwgcHJvbXB0LCAqKmt3KToKICAgICAnJydnZXQgYSBmbG9hdCBmcm9tIHRoZSB1c2VyCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKaW5kZXggY2NiMzc1NS4uZGJlNWU4OCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQpAQCAtMTYsNyArMTYsNyBAQAogCiBkZWYgaXNfcGFja2FnZShwYXRoKToKICAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHBhdGgpOgotICAgICAgICBpZiBuYW1lIGluICgnX19pbml0X18ucHknLCAnX19pbml0X18ucHljJywgJ19faW5pdC5weW8nKToKKyAgICAgICAgaWYgbmFtZSBpbiAoJ19faW5pdF9fLnB5JywgJ19faW5pdF9fLnB5YycpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CmluZGV4IGQ4ZGU5NDkuLjg1ZWUyYzcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKQEAgLTcsNiArNywxMSBAQAogCiBjbGFzcyBNaXNjVGVzdChBYnN0cmFjdFRrVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgdCA9IHRraW50ZXIuVG9wbGV2ZWwoc2VsZi5yb290LCBuYW1lPSd0b3AnKQorICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0LCBuYW1lPSdjaGlsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJzx0a2ludGVyLkZyYW1lIG9iamVjdCAudG9wLmNoaWxkPicpCisKICAgICBkZWYgdGVzdF90a19zZXRQYWxldHRlKHNlbGYpOgogICAgICAgICByb290ID0gc2VsZi5yb290CiAgICAgICAgIHJvb3QudGtfc2V0UGFsZXR0ZSgnYmxhY2snKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQppbmRleCA0YjcyOTQzLi5hYmRjZTk2IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtMTIyLDEwICsxMjIsMTAgQEAKICAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlKHNlbGYpOgogICAgICAgICB2ID0gSW50VmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCiAgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBUY2xFcnJvcikpOgogICAgICAgICAgICAgdi5nZXQoKQogICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjM0NS4wIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgVGNsRXJyb3IpKToKICAgICAgICAgICAgIHYuZ2V0KCkKIAogCkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlKHNlbGYpOgogICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCiAgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBUY2xFcnJvcikpOgogICAgICAgICAgICAgdi5nZXQoKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQppbmRleCA4YmUwMzcxLi43MTcxNjY3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CkBAIC05MjAsOCArOTIwLDkgQEAKICAgICAgICAgc2IgPSBzZWxmLmNyZWF0ZSgpCiAgICAgICAgIGZvciBlIGluICgnYXJyb3cxJywgJ3NsaWRlcicsICdhcnJvdzInKToKICAgICAgICAgICAgIHNiLmFjdGl2YXRlKGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNiLmFjdGl2YXRlKCksIGUpCiAgICAgICAgIHNiLmFjdGl2YXRlKCcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNiLmFjdGl2YXRlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzYi5hY3RpdmF0ZSgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNiLmFjdGl2YXRlLCAnYXJyb3cxJywgJ2Fycm93MicpCiAKICAgICBkZWYgdGVzdF9zZXQoc2VsZik6CkBAIC05MzEsOCArOTMyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNiLnNldCwgJ2FiYycsICdkZWYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAwLjYsICdkZWYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAwLjYsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsIDAuNikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNiLnNldCwgMC42LCAwLjcsIDAuOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzYi5zZXQsIDAuNikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzYi5zZXQsIDAuNiwgMC43LCAwLjgpCiAKIAogQGFkZF9zdGFuZGFyZF9vcHRpb25zKFN0YW5kYXJkT3B0aW9uc1Rlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2V4dGVuc2lvbnMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weQppbmRleCBjM2FmMDZjLi5mMzM5NDVjIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weQpAQCAtNzAsMTcgKzcwLDE1IEBACiAgICAgICAgICMgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24vcGFzc2luZwogICAgICAgICBwYXNzZWRfZXhwZWN0ZWQgPSAoKCcwJywgMCksICgwLCAwKSwgKDEwLCAxMCksCiAgICAgICAgICAgICAoLTEsIC0xKSwgKHN5cy5tYXhzaXplICsgMSwgc3lzLm1heHNpemUgKyAxKSkKLSAgICAgICAgaWYgc2VsZi53YW50b2JqZWN0czoKLSAgICAgICAgICAgIHBhc3NlZF9leHBlY3RlZCArPSAoKDIuNSwgMiksKQogICAgICAgICBmb3IgcGFpciBpbiBwYXNzZWRfZXhwZWN0ZWQ6CiAgICAgICAgICAgICB4ID0gdHRrLkxhYmVsZWRTY2FsZShzZWxmLnJvb3QsIGZyb21fPXBhaXJbMF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsdWUsIHBhaXJbMV0pCiAgICAgICAgICAgICB4LmRlc3Ryb3koKQogICAgICAgICB4ID0gdHRrLkxhYmVsZWRTY2FsZShzZWxmLnJvb3QsIGZyb21fPScyLjUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4Ll92YXJpYWJsZS5nZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCB0a2ludGVyLlRjbEVycm9yKSwgeC5fdmFyaWFibGUuZ2V0KQogICAgICAgICB4LmRlc3Ryb3koKQogICAgICAgICB4ID0gdHRrLkxhYmVsZWRTY2FsZShzZWxmLnJvb3QsIGZyb21fPU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHguX3ZhcmlhYmxlLmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIHRraW50ZXIuVGNsRXJyb3IpLCB4Ll92YXJpYWJsZS5nZXQpCiAgICAgICAgIHguZGVzdHJveSgpCiAgICAgICAgICMgdmFyaWFibGUgc2hvdWxkIGhhdmUgaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBmcm9tXyB2YWx1ZQogICAgICAgICBteXZhciA9IHRraW50ZXIuRG91YmxlVmFyKHNlbGYucm9vdCwgdmFsdWU9MjApCmRpZmYgLS1naXQgYS9MaWIvdG9rZW4ucHkgYi9MaWIvdG9rZW4ucHkKaW5kZXggNzQ3MGM4Yy4uNWZkYjIyMiAxMDA2NDQKLS0tIGEvTGliL3Rva2VuLnB5CisrKyBiL0xpYi90b2tlbi5weQpAQCAtNjAsMTEgKzYwLDE0IEBACiBET1VCTEVTTEFTSCA9IDQ3CiBET1VCTEVTTEFTSEVRVUFMID0gNDgKIEFUID0gNDkKLVJBUlJPVyA9IDUwCi1FTExJUFNJUyA9IDUxCi1PUCA9IDUyCi1FUlJPUlRPS0VOID0gNTMKLU5fVE9LRU5TID0gNTQKK0FURVFVQUwgPSA1MAorUkFSUk9XID0gNTEKK0VMTElQU0lTID0gNTIKK09QID0gNTMKK0FXQUlUID0gNTQKK0FTWU5DID0gNTUKK0VSUk9SVE9LRU4gPSA1NgorTl9UT0tFTlMgPSA1NwogTlRfT0ZGU0VUID0gMjU2CiAjLS1lbmQgY29uc3RhbnRzLS0KIApAQCAtOTYsOCArOTksOCBAQAogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCgxKQotICAgIGxpbmVzID0gZnAucmVhZCgpLnNwbGl0KCJcbiIpCi0gICAgZnAuY2xvc2UoKQorICAgIHdpdGggZnA6CisgICAgICAgIGxpbmVzID0gZnAucmVhZCgpLnNwbGl0KCJcbiIpCiAgICAgcHJvZyA9IHJlLmNvbXBpbGUoCiAgICAgICAgICIjZGVmaW5lWyBcdF1bIFx0XSooW0EtWjAtOV1bQS1aMC05X10qKVsgXHRdWyBcdF0qKFswLTldWzAtOV0qKSIsCiAgICAgICAgIHJlLklHTk9SRUNBU0UpCkBAIC0xMTUsOCArMTE4LDggQEAKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkkvTyBlcnJvcjogJXNcbiIgJSBzdHIoZXJyKSkKICAgICAgICAgc3lzLmV4aXQoMikKLSAgICBmb3JtYXQgPSBmcC5yZWFkKCkuc3BsaXQoIlxuIikKLSAgICBmcC5jbG9zZSgpCisgICAgd2l0aCBmcDoKKyAgICAgICAgZm9ybWF0ID0gZnAucmVhZCgpLnNwbGl0KCJcbiIpCiAgICAgdHJ5OgogICAgICAgICBzdGFydCA9IGZvcm1hdC5pbmRleCgiIy0tc3RhcnQgY29uc3RhbnRzLS0iKSArIDEKICAgICAgICAgZW5kID0gZm9ybWF0LmluZGV4KCIjLS1lbmQgY29uc3RhbnRzLS0iKQpAQCAtMTMyLDggKzEzNSw4IEBACiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJJL08gZXJyb3I6ICVzXG4iICUgc3RyKGVycikpCiAgICAgICAgIHN5cy5leGl0KDQpCi0gICAgZnAud3JpdGUoIlxuIi5qb2luKGZvcm1hdCkpCi0gICAgZnAuY2xvc2UoKQorICAgIHdpdGggZnA6CisgICAgICAgIGZwLndyaXRlKCJcbiIuam9pbihmb3JtYXQpKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdG9rZW5pemUucHkgYi9MaWIvdG9rZW5pemUucHkKaW5kZXggNGQ5M2E4My4uNjVkMDZlNSAxMDA2NDQKLS0tIGEvTGliL3Rva2VuaXplLnB5CisrKyBiL0xpYi90b2tlbml6ZS5weQpAQCAtOTEsNyArOTEsOCBAQAogICAgICcqKj0nOiBET1VCTEVTVEFSRVFVQUwsCiAgICAgJy8vJzogIERPVUJMRVNMQVNILAogICAgICcvLz0nOiBET1VCTEVTTEFTSEVRVUFMLAotICAgICdAJzogICBBVAorICAgICdAJzogICBBVCwKKyAgICAnQD0nOiAgQVRFUVVBTCwKIH0KIAogY2xhc3MgVG9rZW5JbmZvKGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ1Rva2VuSW5mbycsICd0eXBlIHN0cmluZyBzdGFydCBlbmQgbGluZScpKToKQEAgLTE1MCw3ICsxNTEsNyBAQAogIyByZWNvZ25pemVkIGFzIHR3byBpbnN0YW5jZXMgb2YgPSkuCiBPcGVyYXRvciA9IGdyb3VwKHIiXCpcKj0/IiwgciI+Pj0/IiwgciI8PD0/IiwgciIhPSIsCiAgICAgICAgICAgICAgICAgIHIiLy89PyIsIHIiLT4iLAotICAgICAgICAgICAgICAgICByIlsrXC0qLyUmfF49PD5dPT8iLAorICAgICAgICAgICAgICAgICByIlsrXC0qLyUmQHxePTw+XT0/IiwKICAgICAgICAgICAgICAgICAgciJ+IikKIAogQnJhY2tldCA9ICdbXVsoKXt9XScKQEAgLTE4Niw3ICsxODcsNiBAQAogICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAogICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAogICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCiAgICAgICAgICAgICJVJycnIjogU2luZ2xlMywgJ1UiIiInOiBEb3VibGUzLAogICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmUsCiAgICAgICAgICAgICd1JzogTm9uZSwgJ1UnOiBOb25lfQpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5lbmNvZGluZyA9IHRva3ZhbAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSKToKKyAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSLCBBU1lOQywgQVdBSVQpOgogICAgICAgICAgICAgICAgIHRva3ZhbCArPSAnICcKIAogICAgICAgICAgICAgIyBJbnNlcnQgYSBzcGFjZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBzdHJpbmdzCkBAIC00OTgsNiArNDk4LDEyIEBACiAgICAgY29udGxpbmUgPSBOb25lCiAgICAgaW5kZW50cyA9IFswXQogCisgICAgIyAnc3Rhc2hlZCcgYW5kICdhc3luY18qJyBhcmUgdXNlZCBmb3IgYXN5bmMvYXdhaXQgcGFyc2luZworICAgIHN0YXNoZWQgPSBOb25lCisgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICBhc3luY19kZWZfaW5kZW50ID0gMAorICAgIGFzeW5jX2RlZl9ubCA9IEZhbHNlCisKICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgaWYgZW5jb2RpbmcgPT0gInV0Zi04LXNpZyI6CiAgICAgICAgICAgICAjIEJPTSB3aWxsIGFscmVhZHkgaGF2ZSBiZWVuIHN0cmlwcGVkLgpAQCAtNTczLDggKzU3OSwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaW5kZW50IGRvZXMgbm90IG1hdGNoIGFueSBvdXRlciBpbmRlbnRhdGlvbiBsZXZlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAoIjx0b2tlbml6ZT4iLCBsbnVtLCBwb3MsIGxpbmUpKQogICAgICAgICAgICAgICAgIGluZGVudHMgPSBpbmRlbnRzWzotMV0KKworICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZiBhbmQgYXN5bmNfZGVmX2luZGVudCA+PSBpbmRlbnRzWy0xXToKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmX2luZGVudCA9IDAKKwogICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhERURFTlQsICcnLCAobG51bSwgcG9zKSwgKGxudW0sIHBvcyksIGxpbmUpCiAKKyAgICAgICAgICAgIGlmIGFzeW5jX2RlZiBhbmQgYXN5bmNfZGVmX25sIGFuZCBhc3luY19kZWZfaW5kZW50ID49IGluZGVudHNbLTFdOgorICAgICAgICAgICAgICAgIGFzeW5jX2RlZiA9IEZhbHNlCisgICAgICAgICAgICAgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKyAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gMAorCiAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0YXRlbWVudAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVG9rZW5FcnJvcigiRU9GIGluIG11bHRpLWxpbmUgc3RhdGVtZW50IiwgKGxudW0sIDApKQpAQCAtNTkzLDEwICs2MTAsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgKGluaXRpYWwgPT0gJy4nIGFuZCB0b2tlbiAhPSAnLicgYW5kIHRva2VuICE9ICcuLi4nKSk6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOVU1CRVIsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnXHJcbic6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOTCBpZiBwYXJlbmxldiA+IDAgZWxzZSBORVdMSU5FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBpZiBwYXJlbmxldiA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTkwsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5FV0xJTkUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9ubCA9IFRydWUKKwogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG9rZW4uZW5kc3dpdGgoIlxuIikKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW3Rva2VuXSkKQEAgLTYyNCw3ICs2NTIsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbC5pc2lkZW50aWZpZXIoKTogICAgICAgICAgICAgICAjIG9yZGluYXJ5IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ2FzeW5jJywgJ2F3YWl0Jyk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhc3luY19kZWY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1lOQyBpZiB0b2tlbiA9PSAnYXN5bmMnIGVsc2UgQVdBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gVG9rZW5JbmZvKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAnYXN5bmMnIGFuZCBub3Qgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSB0b2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2RlZic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZC50eXBlID09IE5BTUUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXNoZWQuc3RyaW5nID09ICdhc3luYycpOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSBpbmRlbnRzWy0xXQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKEFTWU5DLCBzdGFzaGVkLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZC5zdGFydCwgc3Rhc2hlZC5lbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQubGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRvawogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnXFwnOiAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdG10CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlZCA9IDEKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNjMyLDEyICs2ODksMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVubGV2ICs9IDEKICAgICAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluICcpXX0nOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW5sZXYgLT0gMQorICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE9QLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKEVSUk9SVE9LRU4sIGxpbmVbcG9zXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsbnVtLCBwb3MpLCAobG51bSwgcG9zKzEpLCBsaW5lKQogICAgICAgICAgICAgICAgIHBvcyArPSAxCiAKKyAgICBpZiBzdGFzaGVkOgorICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgIHN0YXNoZWQgPSBOb25lCisKICAgICBmb3IgaW5kZW50IGluIGluZGVudHNbMTpdOiAgICAgICAgICAgICAgICAgIyBwb3AgcmVtYWluaW5nIGluZGVudCBsZXZlbHMKICAgICAgICAgeWllbGQgVG9rZW5JbmZvKERFREVOVCwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKICAgICB5aWVsZCBUb2tlbkluZm8oRU5ETUFSS0VSLCAnJywgKGxudW0sIDApLCAobG51bSwgMCksICcnKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlLnB5IGIvTGliL3RyYWNlLnB5CmluZGV4IDA5ZmU5ZWUuLmYxMDgyNjYgMTAwNzU1Ci0tLSBhL0xpYi90cmFjZS5weQorKysgYi9MaWIvdHJhY2UucHkKQEAgLTU5LDEwICs1OSw3IEBACiBpbXBvcnQgZGlzCiBpbXBvcnQgcGlja2xlCiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yMzUsOCArMjMyLDggQEAKICAgICAgICAgaWYgc2VsZi5pbmZpbGU6CiAgICAgICAgICAgICAjIFRyeSB0byBtZXJnZSBleGlzdGluZyBjb3VudHMgZmlsZS4KICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzID0gXAotICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmxvYWQob3BlbihzZWxmLmluZmlsZSwgJ3JiJykpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuaW5maWxlLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzID0gcGlja2xlLmxvYWQoZikKICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZShzZWxmLl9fY2xhc3NfXyhjb3VudHMsIGNhbGxlZGZ1bmNzLCBjYWxsZXJzKSkKICAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRU9GRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGVycjoKICAgICAgICAgICAgICAgICBwcmludCgoIlNraXBwaW5nIGNvdW50cyBmaWxlICVyOiAlcyIKQEAgLTMwOCw3ICszMDUsNyBAQAogICAgICAgICAgICAgaWYgc2VsZi5pc19pZ25vcmVkX2ZpbGVuYW1lKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCIucHljIik6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAKICAgICAgICAgICAgIGlmIGNvdmVyZGlyIGlzIE5vbmU6CkBAIC0zMjYsMTYgKzMyMywxNyBAQAogICAgICAgICAgICAgICAgIGxub3RhYiA9IF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbG5vdGFiID0ge30KKyAgICAgICAgICAgIGlmIGxub3RhYjoKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgY292ZXJwYXRoID0gb3MucGF0aC5qb2luKGRpciwgbW9kdWxlbmFtZSArICIuY292ZXIiKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBfID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZwLnJlYWRsaW5lKQorICAgICAgICAgICAgICAgIG5faGl0cywgbl9saW5lcyA9IHNlbGYud3JpdGVfcmVzdWx0c19maWxlKGNvdmVycGF0aCwgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxub3RhYiwgY291bnQsIGVuY29kaW5nKQorICAgICAgICAgICAgICAgIGlmIHN1bW1hcnkgYW5kIG5fbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBpbnQoMTAwICogbl9oaXRzIC8gbl9saW5lcykKKyAgICAgICAgICAgICAgICAgICAgc3Vtc1ttb2R1bGVuYW1lXSA9IG5fbGluZXMsIHBlcmNlbnQsIG1vZHVsZW5hbWUsIGZpbGVuYW1lCiAKLSAgICAgICAgICAgIHNvdXJjZSA9IGxpbmVjYWNoZS5nZXRsaW5lcyhmaWxlbmFtZSkKLSAgICAgICAgICAgIGNvdmVycGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG1vZHVsZW5hbWUgKyAiLmNvdmVyIikKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZW5jb2RpbmcsIF8gPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoZnAucmVhZGxpbmUpCi0gICAgICAgICAgICBuX2hpdHMsIG5fbGluZXMgPSBzZWxmLndyaXRlX3Jlc3VsdHNfZmlsZShjb3ZlcnBhdGgsIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxub3RhYiwgY291bnQsIGVuY29kaW5nKQotICAgICAgICAgICAgaWYgc3VtbWFyeSBhbmQgbl9saW5lczoKLSAgICAgICAgICAgICAgICBwZXJjZW50ID0gaW50KDEwMCAqIG5faGl0cyAvIG5fbGluZXMpCi0gICAgICAgICAgICAgICAgc3Vtc1ttb2R1bGVuYW1lXSA9IG5fbGluZXMsIHBlcmNlbnQsIG1vZHVsZW5hbWUsIGZpbGVuYW1lCiAKICAgICAgICAgaWYgc3VtbWFyeSBhbmQgc3VtczoKICAgICAgICAgICAgIHByaW50KCJsaW5lcyAgIGNvdiUgICBtb2R1bGUgICAocGF0aCkiKQpAQCAtMzYzLDI2ICszNjEsMjYgQEAKIAogICAgICAgICBuX2xpbmVzID0gMAogICAgICAgICBuX2hpdHMgPSAwCi0gICAgICAgIGZvciBsaW5lbm8sIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzLCAxKToKLSAgICAgICAgICAgICMgZG8gdGhlIGJsYW5rL2NvbW1lbnQgbWF0Y2ggdG8gdHJ5IHRvIG1hcmsgbW9yZSBsaW5lcwotICAgICAgICAgICAgIyAoaGVscCB0aGUgcmVhZGVyIGZpbmQgc3R1ZmYgdGhhdCBoYXNuJ3QgYmVlbiBjb3ZlcmVkKQotICAgICAgICAgICAgaWYgbGluZW5vIGluIGxpbmVzX2hpdDoKLSAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIlNWQ6ICIgJSBsaW5lc19oaXRbbGluZW5vXSkKLSAgICAgICAgICAgICAgICBuX2hpdHMgKz0gMQotICAgICAgICAgICAgICAgIG5fbGluZXMgKz0gMQotICAgICAgICAgICAgZWxpZiByeF9ibGFuay5tYXRjaChsaW5lKToKLSAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIgICAgICAgIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBsaW5lcyBwcmVjZWRlZCBieSBubyBtYXJrcyB3ZXJlbid0IGhpdAotICAgICAgICAgICAgICAgICMgSGlnaGxpZ2h0IHRoZW0gaWYgc28gaW5kaWNhdGVkLCB1bmxlc3MgdGhlIGxpbmUgY29udGFpbnMKLSAgICAgICAgICAgICAgICAjICNwcmFnbWE6IE5PIENPVkVSCi0gICAgICAgICAgICAgICAgaWYgbGluZW5vIGluIGxub3RhYiBhbmQgbm90IFBSQUdNQV9OT0NPVkVSIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIj4+Pj4+PiAiKQorICAgICAgICB3aXRoIG91dGZpbGU6CisgICAgICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcywgMSk6CisgICAgICAgICAgICAgICAgIyBkbyB0aGUgYmxhbmsvY29tbWVudCBtYXRjaCB0byB0cnkgdG8gbWFyayBtb3JlIGxpbmVzCisgICAgICAgICAgICAgICAgIyAoaGVscCB0aGUgcmVhZGVyIGZpbmQgc3R1ZmYgdGhhdCBoYXNuJ3QgYmVlbiBjb3ZlcmVkKQorICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsaW5lc19oaXQ6CisgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiU1ZDogIiAlIGxpbmVzX2hpdFtsaW5lbm9dKQorICAgICAgICAgICAgICAgICAgICBuX2hpdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICBuX2xpbmVzICs9IDEKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVsaWYgcnhfYmxhbmsubWF0Y2gobGluZSk6CiAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiAgICAgICAiKQotICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShsaW5lLmV4cGFuZHRhYnMoOCkpCi0gICAgICAgIG91dGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgbGluZXMgcHJlY2VkZWQgYnkgbm8gbWFya3Mgd2VyZW4ndCBoaXQKKyAgICAgICAgICAgICAgICAgICAgIyBIaWdobGlnaHQgdGhlbSBpZiBzbyBpbmRpY2F0ZWQsIHVubGVzcyB0aGUgbGluZSBjb250YWlucworICAgICAgICAgICAgICAgICAgICAjICNwcmFnbWE6IE5PIENPVkVSCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsbm90YWIgYW5kIG5vdCBQUkFHTUFfTk9DT1ZFUiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiPj4+Pj4+ICIpCisgICAgICAgICAgICAgICAgICAgICAgICBuX2xpbmVzICs9IDEKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIiAgICAgICAiKQorICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUobGluZS5leHBhbmR0YWJzKDgpKQogCiAgICAgICAgIHJldHVybiBuX2hpdHMsIG5fbGluZXMKIApkaWZmIC0tZ2l0IGEvTGliL3RyYWNlYmFjay5weSBiL0xpYi90cmFjZWJhY2sucHkKaW5kZXggZmFmNTkzYS4uMTEyZTliYSAxMDA2NDQKLS0tIGEvTGliL3RyYWNlYmFjay5weQorKysgYi9MaWIvdHJhY2ViYWNrLnB5CkBAIC0xLDMyICsxLDI3IEBACiAiIiJFeHRyYWN0LCBmb3JtYXQgYW5kIHByaW50IGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbiBzdGFjayB0cmFjZXMuIiIiCiAKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHN5cwotaW1wb3J0IG9wZXJhdG9yCiAKIF9fYWxsX18gPSBbJ2V4dHJhY3Rfc3RhY2snLCAnZXh0cmFjdF90YicsICdmb3JtYXRfZXhjZXB0aW9uJywKICAgICAgICAgICAgJ2Zvcm1hdF9leGNlcHRpb25fb25seScsICdmb3JtYXRfbGlzdCcsICdmb3JtYXRfc3RhY2snLAogICAgICAgICAgICAnZm9ybWF0X3RiJywgJ3ByaW50X2V4YycsICdmb3JtYXRfZXhjJywgJ3ByaW50X2V4Y2VwdGlvbicsCi0gICAgICAgICAgICdwcmludF9sYXN0JywgJ3ByaW50X3N0YWNrJywgJ3ByaW50X3RiJywKLSAgICAgICAgICAgJ2NsZWFyX2ZyYW1lcyddCisgICAgICAgICAgICdwcmludF9sYXN0JywgJ3ByaW50X3N0YWNrJywgJ3ByaW50X3RiJywgJ2NsZWFyX2ZyYW1lcycsCisgICAgICAgICAgICdGcmFtZVN1bW1hcnknLCAnU3RhY2tTdW1tYXJ5JywgJ1RyYWNlYmFja0V4Y2VwdGlvbicsCisgICAgICAgICAgICd3YWxrX3N0YWNrJywgJ3dhbGtfdGInXQogCiAjCiAjIEZvcm1hdHRpbmcgYW5kIHByaW50aW5nIGxpc3RzIG9mIHRyYWNlYmFjayBsaW5lcy4KICMKIAotZGVmIF9mb3JtYXRfbGlzdF9pdGVyKGV4dHJhY3RlZF9saXN0KToKLSAgICBmb3IgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSBpbiBleHRyYWN0ZWRfbGlzdDoKLSAgICAgICAgaXRlbSA9ICcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUpCi0gICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAgICBpdGVtID0gaXRlbSArICcgICAge31cbicuZm9ybWF0KGxpbmUuc3RyaXAoKSkKLSAgICAgICAgeWllbGQgaXRlbQotCiBkZWYgcHJpbnRfbGlzdChleHRyYWN0ZWRfbGlzdCwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCB0aGUgbGlzdCBvZiB0dXBsZXMgYXMgcmV0dXJuZWQgYnkgZXh0cmFjdF90YigpIG9yCiAgICAgZXh0cmFjdF9zdGFjaygpIGFzIGEgZm9ybWF0dGVkIHN0YWNrIHRyYWNlIHRvIHRoZSBnaXZlbiBmaWxlLiIiIgogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICBmb3IgaXRlbSBpbiBfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCk6CisgICAgZm9yIGl0ZW0gaW4gU3RhY2tTdW1tYXJ5LmZyb21fbGlzdChleHRyYWN0ZWRfbGlzdCkuZm9ybWF0KCk6CiAgICAgICAgIHByaW50KGl0ZW0sIGZpbGU9ZmlsZSwgZW5kPSIiKQogCiBkZWYgZm9ybWF0X2xpc3QoZXh0cmFjdGVkX2xpc3QpOgpAQCAtMzksNDUgKzM0LDEyIEBACiAgICAgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zCiAgICAgd2hvc2Ugc291cmNlIHRleHQgbGluZSBpcyBub3QgTm9uZS4KICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCkpCisgICAgcmV0dXJuIFN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoZXh0cmFjdGVkX2xpc3QpLmZvcm1hdCgpCiAKICMKICMgUHJpbnRpbmcgYW5kIEV4dHJhY3RpbmcgVHJhY2ViYWNrcy4KICMKIAotIyBleHRyYWN0b3IgdGFrZXMgY3VyciBhbmQgbmVlZHMgdG8gcmV0dXJuIGEgdHVwbGUgb2Y6Ci0jIC0gRnJhbWUgb2JqZWN0Ci0jIC0gTGluZSBudW1iZXIKLSMgLSBOZXh0IGl0ZW0gKHNhbWUgdHlwZSBhcyBjdXJyKQotIyBJbiBwcmFjdGljZSwgY3VyciBpcyBlaXRoZXIgYSB0cmFjZWJhY2sgb3IgYSBmcmFtZS4KLWRlZiBfZXh0cmFjdF90Yl9vcl9zdGFja19pdGVyKGN1cnIsIGxpbWl0LCBleHRyYWN0b3IpOgotICAgIGlmIGxpbWl0IGlzIE5vbmU6Ci0gICAgICAgIGxpbWl0ID0gZ2V0YXR0cihzeXMsICd0cmFjZWJhY2tsaW1pdCcsIE5vbmUpCi0KLSAgICBuID0gMAotICAgIHdoaWxlIGN1cnIgaXMgbm90IE5vbmUgYW5kIChsaW1pdCBpcyBOb25lIG9yIG4gPCBsaW1pdCk6Ci0gICAgICAgIGYsIGxpbmVubywgbmV4dF9pdGVtID0gZXh0cmFjdG9yKGN1cnIpCi0gICAgICAgIGNvID0gZi5mX2NvZGUKLSAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQotICAgICAgICBuYW1lID0gY28uY29fbmFtZQotCi0gICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQotICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCi0KLSAgICAgICAgaWYgbGluZToKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmUgPSBOb25lCi0KLSAgICAgICAgeWllbGQgKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUpCi0gICAgICAgIGN1cnIgPSBuZXh0X2l0ZW0KLSAgICAgICAgbiArPSAxCi0KLWRlZiBfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdCk6Ci0gICAgcmV0dXJuIF9leHRyYWN0X3RiX29yX3N0YWNrX2l0ZXIoCi0gICAgICAgICAgICAgICAgdGIsIGxpbWl0LAotICAgICAgICAgICAgICAgIG9wZXJhdG9yLmF0dHJnZXR0ZXIoInRiX2ZyYW1lIiwgInRiX2xpbmVubyIsICJ0Yl9uZXh0IikpCi0KIGRlZiBwcmludF90Yih0YiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSB0aGUgdHJhY2ViYWNrICd0YicuCiAKQEAgLTkwLDcgKzUyLDcgQEAKIAogZGVmIGZvcm1hdF90Yih0YiwgbGltaXQ9Tm9uZSk6CiAgICAgIiIiQSBzaG9ydGhhbmQgZm9yICdmb3JtYXRfbGlzdChleHRyYWN0X3RiKHRiLCBsaW1pdCkpJy4iIiIKLSAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF90Yih0YiwgbGltaXQ9bGltaXQpKQorICAgIHJldHVybiBleHRyYWN0X3RiKHRiLCBsaW1pdD1saW1pdCkuZm9ybWF0KCkKIAogZGVmIGV4dHJhY3RfdGIodGIsIGxpbWl0PU5vbmUpOgogICAgICIiIlJldHVybiBsaXN0IG9mIHVwIHRvIGxpbWl0IHByZS1wcm9jZXNzZWQgZW50cmllcyBmcm9tIHRyYWNlYmFjay4KQEAgLTEwMyw3ICs2NSw3IEBACiAgICAgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBzdHJpcHBlZDsgaWYgdGhlIHNvdXJjZSBpcyBub3QKICAgICBhdmFpbGFibGUgaXQgaXMgTm9uZS4KICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdD1saW1pdCkpCisgICAgcmV0dXJuIFN0YWNrU3VtbWFyeS5leHRyYWN0KHdhbGtfdGIodGIpLCBsaW1pdD1saW1pdCkKIAogIwogIyBFeGNlcHRpb24gZm9ybWF0dGluZyBhbmQgb3V0cHV0LgpAQCAtMTExLDQ3ICs3MywxMiBAQAogCiBfY2F1c2VfbWVzc2FnZSA9ICgKICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKLSAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG4iKQorICAgICJvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuIikKIAogX2NvbnRleHRfbWVzc2FnZSA9ICgKICAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgotICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcbiIpCisgICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iKQogCi1kZWYgX2l0ZXJfY2hhaW4oZXhjLCBjdXN0b21fdGI9Tm9uZSwgc2Vlbj1Ob25lKToKLSAgICBpZiBzZWVuIGlzIE5vbmU6Ci0gICAgICAgIHNlZW4gPSBzZXQoKQotICAgIHNlZW4uYWRkKGV4YykKLSAgICBpdHMgPSBbXQotICAgIGNvbnRleHQgPSBleGMuX19jb250ZXh0X18KLSAgICBjYXVzZSA9IGV4Yy5fX2NhdXNlX18KLSAgICBpZiBjYXVzZSBpcyBub3QgTm9uZSBhbmQgY2F1c2Ugbm90IGluIHNlZW46Ci0gICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY2F1c2UsIEZhbHNlLCBzZWVuKSkKLSAgICAgICAgaXRzLmFwcGVuZChbKF9jYXVzZV9tZXNzYWdlLCBOb25lKV0pCi0gICAgZWxpZiAoY29udGV4dCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICBub3QgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fIGFuZAotICAgICAgICAgIGNvbnRleHQgbm90IGluIHNlZW4pOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQotICAgICAgICBpdHMuYXBwZW5kKFsoX2NvbnRleHRfbWVzc2FnZSwgTm9uZSldKQotICAgIGl0cy5hcHBlbmQoWyhleGMsIGN1c3RvbV90YiBvciBleGMuX190cmFjZWJhY2tfXyldKQotICAgICMgaXRlcnRvb2xzLmNoYWluIGlzIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUgYW5kIG1heSBiZSB1bmF2YWlsYWJsZQotICAgIGZvciBpdCBpbiBpdHM6Ci0gICAgICAgIHlpZWxkIGZyb20gaXQKLQotZGVmIF9mb3JtYXRfZXhjZXB0aW9uX2l0ZXIoZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGNoYWluKToKLSAgICBpZiBjaGFpbjoKLSAgICAgICAgdmFsdWVzID0gX2l0ZXJfY2hhaW4odmFsdWUsIHRiKQotICAgIGVsc2U6Ci0gICAgICAgIHZhbHVlcyA9IFsodmFsdWUsIHRiKV0KLQotICAgIGZvciB2YWx1ZSwgdGIgaW4gdmFsdWVzOgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2F1c2UvY29udGV4dCBtZXNzYWdlIGxpbmUKLSAgICAgICAgICAgIHlpZWxkIHZhbHVlICsgJ1xuJwotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgdGI6Ci0gICAgICAgICAgICB5aWVsZCAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJwotICAgICAgICAgICAgeWllbGQgZnJvbSBfZm9ybWF0X2xpc3RfaXRlcihfZXh0cmFjdF90Yl9pdGVyKHRiLCBsaW1pdD1saW1pdCkpCi0gICAgICAgIHlpZWxkIGZyb20gX2Zvcm1hdF9leGNlcHRpb25fb25seV9pdGVyKHR5cGUodmFsdWUpLCB2YWx1ZSkKIAogZGVmIHByaW50X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIlByaW50IGV4Y2VwdGlvbiB1cCB0byAnbGltaXQnIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAndGInIHRvICdmaWxlJy4KQEAgLTE2NCwxMSArOTEsMTYgQEAKICAgICBvY2N1cnJlZCB3aXRoIGEgY2FyZXQgb24gdGhlIG5leHQgbGluZSBpbmRpY2F0aW5nIHRoZSBhcHByb3hpbWF0ZQogICAgIHBvc2l0aW9uIG9mIHRoZSBlcnJvci4KICAgICAiIiIKKyAgICAjIGZvcm1hdF9leGNlcHRpb24gaGFzIGlnbm9yZWQgZXR5cGUgZm9yIHNvbWUgdGltZSwgYW5kIGNvZGUgc3VjaCBhcyBjZ2l0YgorICAgICMgcGFzc2VzIGluIGJvZ3VzIHZhbHVlcyBhcyBhIHJlc3VsdC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdWNoIGNvZGUgd2UKKyAgICAjIGlnbm9yZSBpdCBoZXJlIChyYXRoZXIgdGhhbiBpbiB0aGUgbmV3IFRyYWNlYmFja0V4Y2VwdGlvbiBBUEkpLgogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICBmb3IgbGluZSBpbiBfZm9ybWF0X2V4Y2VwdGlvbl9pdGVyKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbik6CisgICAgZm9yIGxpbmUgaW4gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgdHlwZSh2YWx1ZSksIHZhbHVlLCB0YiwgbGltaXQ9bGltaXQpLmZvcm1hdChjaGFpbj1jaGFpbik6CiAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZmlsZSwgZW5kPSIiKQogCisKIGRlZiBmb3JtYXRfZXhjZXB0aW9uKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0PU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIkZvcm1hdCBhIHN0YWNrIHRyYWNlIGFuZCB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogCkBAIC0xNzgsNyArMTEwLDEyIEBACiAgICAgdGhlc2UgbGluZXMgYXJlIGNvbmNhdGVuYXRlZCBhbmQgcHJpbnRlZCwgZXhhY3RseSB0aGUgc2FtZSB0ZXh0IGlzCiAgICAgcHJpbnRlZCBhcyBkb2VzIHByaW50X2V4Y2VwdGlvbigpLgogICAgICIiIgotICAgIHJldHVybiBsaXN0KF9mb3JtYXRfZXhjZXB0aW9uX2l0ZXIoZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQsIGNoYWluKSkKKyAgICAjIGZvcm1hdF9leGNlcHRpb24gaGFzIGlnbm9yZWQgZXR5cGUgZm9yIHNvbWUgdGltZSwgYW5kIGNvZGUgc3VjaCBhcyBjZ2l0YgorICAgICMgcGFzc2VzIGluIGJvZ3VzIHZhbHVlcyBhcyBhIHJlc3VsdC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdWNoIGNvZGUgd2UKKyAgICAjIGlnbm9yZSBpdCBoZXJlIChyYXRoZXIgdGhhbiBpbiB0aGUgbmV3IFRyYWNlYmFja0V4Y2VwdGlvbiBBUEkpLgorICAgIHJldHVybiBsaXN0KFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgdHlwZSh2YWx1ZSksIHZhbHVlLCB0YiwgbGltaXQ9bGltaXQpLmZvcm1hdChjaGFpbj1jaGFpbikpCisKIAogZGVmIGZvcm1hdF9leGNlcHRpb25fb25seShldHlwZSwgdmFsdWUpOgogICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgYSB0cmFjZWJhY2suCkBAIC0xOTYsNDYgKzEzMywxNCBAQAogICAgIHN0cmluZyBpbiB0aGUgbGlzdC4KIAogICAgICIiIgotICAgIHJldHVybiBsaXN0KF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcihldHlwZSwgdmFsdWUpKQorICAgIHJldHVybiBsaXN0KFRyYWNlYmFja0V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIE5vbmUpLmZvcm1hdF9leGNlcHRpb25fb25seSgpKQogCi1kZWYgX2Zvcm1hdF9leGNlcHRpb25fb25seV9pdGVyKGV0eXBlLCB2YWx1ZSk6Ci0gICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSAodGhlIHdheSBQeXRob24gMi40IGFuZCBlYXJsaWVyIGRpZCkgdGhlIGNhc2Ugb2YKLSAgICAjIGJlaW5nIGNhbGxlZCB3aXRoIChOb25lLCBOb25lKS4KLSAgICBpZiBldHlwZSBpcyBOb25lOgotICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuCiAKLSAgICBzdHlwZSA9IGV0eXBlLl9fbmFtZV9fCi0gICAgc21vZCA9IGV0eXBlLl9fbW9kdWxlX18KLSAgICBpZiBzbW9kIG5vdCBpbiAoIl9fbWFpbl9fIiwgImJ1aWx0aW5zIik6Ci0gICAgICAgIHN0eXBlID0gc21vZCArICcuJyArIHN0eXBlCi0KLSAgICBpZiBub3QgaXNzdWJjbGFzcyhldHlwZSwgU3ludGF4RXJyb3IpOgotICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIEl0IHdhcyBhIHN5bnRheCBlcnJvcjsgc2hvdyBleGFjdGx5IHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZC4KLSAgICBmaWxlbmFtZSA9IHZhbHVlLmZpbGVuYW1lIG9yICI8c3RyaW5nPiIKLSAgICBsaW5lbm8gPSBzdHIodmFsdWUubGluZW5vKSBvciAnPycKLSAgICB5aWVsZCAnICBGaWxlICJ7fSIsIGxpbmUge31cbicuZm9ybWF0KGZpbGVuYW1lLCBsaW5lbm8pCi0KLSAgICBiYWRsaW5lID0gdmFsdWUudGV4dAotICAgIG9mZnNldCA9IHZhbHVlLm9mZnNldAotICAgIGlmIGJhZGxpbmUgaXMgbm90IE5vbmU6Ci0gICAgICAgIHlpZWxkICcgICAge31cbicuZm9ybWF0KGJhZGxpbmUuc3RyaXAoKSkKLSAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGJhZGxpbmUucnN0cmlwKCdcbicpCi0gICAgICAgICAgICBvZmZzZXQgPSBtaW4obGVuKGNhcmV0c3BhY2UpLCBvZmZzZXQpIC0gMQotICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGNhcmV0c3BhY2VbOm9mZnNldF0ubHN0cmlwKCkKLSAgICAgICAgICAgICMgbm9uLXNwYWNlIHdoaXRlc3BhY2UgKGxpa2VzIHRhYnMpIG11c3QgYmUga2VwdCBmb3IgYWxpZ25tZW50Ci0gICAgICAgICAgICBjYXJldHNwYWNlID0gKChjLmlzc3BhY2UoKSBhbmQgYyBvciAnICcpIGZvciBjIGluIGNhcmV0c3BhY2UpCi0gICAgICAgICAgICB5aWVsZCAnICAgIHt9XlxuJy5mb3JtYXQoJycuam9pbihjYXJldHNwYWNlKSkKLSAgICBtc2cgPSB2YWx1ZS5tc2cgb3IgIjxubyBkZXRhaWwgYXZhaWxhYmxlPiIKLSAgICB5aWVsZCAie306IHt9XG4iLmZvcm1hdChzdHlwZSwgbXNnKQorIyAtLSBub3Qgb2ZmaWNhbCBBUEkgYnV0IGZvbGsgcHJvYmFibHkgdXNlIHRoZXNlIHR3byBmdW5jdGlvbnMuCiAKIGRlZiBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSk6CiAgICAgdmFsdWVzdHIgPSBfc29tZV9zdHIodmFsdWUpCi0gICAgaWYgdmFsdWUgaXMgTm9uZSBvciBub3QgdmFsdWVzdHI6CisgICAgaWYgdmFsdWUgPT0gJ05vbmUnIG9yIHZhbHVlIGlzIE5vbmUgb3Igbm90IHZhbHVlc3RyOgogICAgICAgICBsaW5lID0gIiVzXG4iICUgZXR5cGUKICAgICBlbHNlOgogICAgICAgICBsaW5lID0gIiVzOiAlc1xuIiAlIChldHlwZSwgdmFsdWVzdHIpCkBAIC0yNDcsNiArMTUyLDggQEAKICAgICBleGNlcHQ6CiAgICAgICAgIHJldHVybiAnPHVucHJpbnRhYmxlICVzIG9iamVjdD4nICUgdHlwZSh2YWx1ZSkuX19uYW1lX18KIAorIyAtLQorCiBkZWYgcHJpbnRfZXhjKGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSk6CiAgICAgIiIiU2hvcnRoYW5kIGZvciAncHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSwgbGltaXQsIGZpbGUpJy4iIiIKICAgICBwcmludF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpLCBsaW1pdD1saW1pdCwgZmlsZT1maWxlLCBjaGFpbj1jaGFpbikKQEAgLTI2NywxNSArMTc0LDYgQEAKICMgUHJpbnRpbmcgYW5kIEV4dHJhY3RpbmcgU3RhY2tzLgogIwogCi1kZWYgX2V4dHJhY3Rfc3RhY2tfaXRlcihmLCBsaW1pdD1Ob25lKToKLSAgICByZXR1cm4gX2V4dHJhY3RfdGJfb3Jfc3RhY2tfaXRlcigKLSAgICAgICAgICAgICAgICBmLCBsaW1pdCwgbGFtYmRhIGY6IChmLCBmLmZfbGluZW5vLCBmLmZfYmFjaykpCi0KLWRlZiBfZ2V0X3N0YWNrKGYpOgotICAgIGlmIGYgaXMgTm9uZToKLSAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2suZl9iYWNrCi0gICAgcmV0dXJuIGYKLQogZGVmIHByaW50X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAiIiJQcmludCBhIHN0YWNrIHRyYWNlIGZyb20gaXRzIGludm9jYXRpb24gcG9pbnQuCiAKQEAgLTI4MywxMSArMTgxLDE3IEBACiAgICAgc3RhY2sgZnJhbWUgYXQgd2hpY2ggdG8gc3RhcnQuIFRoZSBvcHRpb25hbCAnbGltaXQnIGFuZCAnZmlsZScKICAgICBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBwcmludF9leGNlcHRpb24oKS4KICAgICAiIiIKLSAgICBwcmludF9saXN0KGV4dHJhY3Rfc3RhY2soX2dldF9zdGFjayhmKSwgbGltaXQ9bGltaXQpLCBmaWxlPWZpbGUpCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjaworICAgIHByaW50X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdD1saW1pdCksIGZpbGU9ZmlsZSkKKwogCiBkZWYgZm9ybWF0X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSk6CiAgICAgIiIiU2hvcnRoYW5kIGZvciAnZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdCkpJy4iIiIKLSAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhfZ2V0X3N0YWNrKGYpLCBsaW1pdD1saW1pdCkpCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjaworICAgIHJldHVybiBmb3JtYXRfbGlzdChleHRyYWN0X3N0YWNrKGYsIGxpbWl0PWxpbWl0KSkKKwogCiBkZWYgZXh0cmFjdF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUpOgogICAgICIiIkV4dHJhY3QgdGhlIHJhdyB0cmFjZWJhY2sgZnJvbSB0aGUgY3VycmVudCBzdGFjayBmcmFtZS4KQEAgLTI5OCwxMCArMjAyLDEzIEBACiAgICAgbGluZSBudW1iZXIsIGZ1bmN0aW9uIG5hbWUsIHRleHQpLCBhbmQgdGhlIGVudHJpZXMgYXJlIGluIG9yZGVyCiAgICAgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0IHN0YWNrIGZyYW1lLgogICAgICIiIgotICAgIHN0YWNrID0gbGlzdChfZXh0cmFjdF9zdGFja19pdGVyKF9nZXRfc3RhY2soZiksIGxpbWl0PWxpbWl0KSkKKyAgICBpZiBmIGlzIE5vbmU6CisgICAgICAgIGYgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrCisgICAgc3RhY2sgPSBTdGFja1N1bW1hcnkuZXh0cmFjdCh3YWxrX3N0YWNrKGYpLCBsaW1pdD1saW1pdCkKICAgICBzdGFjay5yZXZlcnNlKCkKICAgICByZXR1cm4gc3RhY2sKIAorCiBkZWYgY2xlYXJfZnJhbWVzKHRiKToKICAgICAiQ2xlYXIgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGluIHRoZSBmcmFtZXMgb2YgYSB0cmFjZWJhY2suIgogICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgpAQCAtMzExLDMgKzIxOCwzNTcgQEAKICAgICAgICAgICAgICMgSWdub3JlIHRoZSBleGNlcHRpb24gcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBzdGlsbCBleGVjdXRpbmcuCiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHRiID0gdGIudGJfbmV4dAorCisKK2NsYXNzIEZyYW1lU3VtbWFyeToKKyAgICAiIiJBIHNpbmdsZSBmcmFtZSBmcm9tIGEgdHJhY2ViYWNrLgorCisgICAgLSA6YXR0cjpgZmlsZW5hbWVgIFRoZSBmaWxlbmFtZSBmb3IgdGhlIGZyYW1lLgorICAgIC0gOmF0dHI6YGxpbmVub2AgVGhlIGxpbmUgd2l0aGluIGZpbGVuYW1lIGZvciB0aGUgZnJhbWUgdGhhdCB3YXMKKyAgICAgIGFjdGl2ZSB3aGVuIHRoZSBmcmFtZSB3YXMgY2FwdHVyZWQuCisgICAgLSA6YXR0cjpgbmFtZWAgVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHdhcyBleGVjdXRpbmcKKyAgICAgIHdoZW4gdGhlIGZyYW1lIHdhcyBjYXB0dXJlZC4KKyAgICAtIDphdHRyOmBsaW5lYCBUaGUgdGV4dCBmcm9tIHRoZSBsaW5lY2FjaGUgbW9kdWxlIGZvciB0aGUKKyAgICAgIG9mIGNvZGUgdGhhdCB3YXMgcnVubmluZyB3aGVuIHRoZSBmcmFtZSB3YXMgY2FwdHVyZWQuCisgICAgLSA6YXR0cjpgbG9jYWxzYCBFaXRoZXIgTm9uZSBpZiBsb2NhbHMgd2VyZSBub3Qgc3VwcGxpZWQsIG9yIGEgZGljdAorICAgICAgbWFwcGluZyB0aGUgbmFtZSB0byB0aGUgcmVwcigpIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgnZmlsZW5hbWUnLCAnbGluZW5vJywgJ25hbWUnLCAnX2xpbmUnLCAnbG9jYWxzJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCAqLCBsb29rdXBfbGluZT1UcnVlLAorICAgICAgICAgICAgbG9jYWxzPU5vbmUsIGxpbmU9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhIEZyYW1lU3VtbWFyeS4KKworICAgICAgICA6cGFyYW0gbG9va3VwX2xpbmU6IElmIFRydWUsIGBsaW5lY2FjaGVgIGlzIGNvbnN1bHRlZCBmb3IgdGhlIHNvdXJjZQorICAgICAgICAgICAgY29kZSBsaW5lLiBPdGhlcndpc2UsIHRoZSBsaW5lIHdpbGwgYmUgbG9va2VkIHVwIHdoZW4gZmlyc3QgbmVlZGVkLgorICAgICAgICA6cGFyYW0gbG9jYWxzOiBJZiBzdXBwbGllZCB0aGUgZnJhbWUgbG9jYWxzLCB3aGljaCB3aWxsIGJlIGNhcHR1cmVkIGFzCisgICAgICAgICAgICBvYmplY3QgcmVwcmVzZW50YXRpb25zLgorICAgICAgICA6cGFyYW0gbGluZTogSWYgcHJvdmlkZWQsIHVzZSB0aGlzIGluc3RlYWQgb2YgbG9va2luZyB1cCB0aGUgbGluZSBpbgorICAgICAgICAgICAgdGhlIGxpbmVjYWNoZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubworICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX2xpbmUgPSBsaW5lCisgICAgICAgIGlmIGxvb2t1cF9saW5lOgorICAgICAgICAgICAgc2VsZi5saW5lCisgICAgICAgIHNlbGYubG9jYWxzID0gXAorICAgICAgICAgICAgZGljdCgoaywgcmVwcih2KSkgZm9yIGssIHYgaW4gbG9jYWxzLml0ZW1zKCkpIGlmIGxvY2FscyBlbHNlIE5vbmUKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKHNlbGYuZmlsZW5hbWUgPT0gb3RoZXIuZmlsZW5hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPT0gb3RoZXIubGluZW5vIGFuZAorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9PSBvdGhlci5uYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYubG9jYWxzID09IG90aGVyLmxvY2FscykKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwb3MpOgorICAgICAgICByZXR1cm4gKHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm5hbWUsIHNlbGYubGluZSlbcG9zXQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihbc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8sIHNlbGYubmFtZSwgc2VsZi5saW5lXSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICI8RnJhbWVTdW1tYXJ5IGZpbGUge2ZpbGVuYW1lfSwgbGluZSB7bGluZW5vfSBpbiB7bmFtZX0+Ii5mb3JtYXQoCisgICAgICAgICAgICBmaWxlbmFtZT1zZWxmLmZpbGVuYW1lLCBsaW5lbm89c2VsZi5saW5lbm8sIG5hbWU9c2VsZi5uYW1lKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxpbmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2xpbmUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2xpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubykuc3RyaXAoKQorICAgICAgICByZXR1cm4gc2VsZi5fbGluZQorCisKK2RlZiB3YWxrX3N0YWNrKGYpOgorICAgICIiIldhbGsgYSBzdGFjayB5aWVsZGluZyB0aGUgZnJhbWUgYW5kIGxpbmUgbnVtYmVyIGZvciBlYWNoIGZyYW1lLgorCisgICAgVGhpcyB3aWxsIGZvbGxvdyBmLmZfYmFjayBmcm9tIHRoZSBnaXZlbiBmcmFtZS4gSWYgbm8gZnJhbWUgaXMgZ2l2ZW4sIHRoZQorICAgIGN1cnJlbnQgc3RhY2sgaXMgdXNlZC4gVXN1YWxseSB1c2VkIHdpdGggU3RhY2tTdW1tYXJ5LmV4dHJhY3QuCisgICAgIiIiCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjay5mX2JhY2sKKyAgICB3aGlsZSBmIGlzIG5vdCBOb25lOgorICAgICAgICB5aWVsZCBmLCBmLmZfbGluZW5vCisgICAgICAgIGYgPSBmLmZfYmFjaworCisKK2RlZiB3YWxrX3RiKHRiKToKKyAgICAiIiJXYWxrIGEgdHJhY2ViYWNrIHlpZWxkaW5nIHRoZSBmcmFtZSBhbmQgbGluZSBudW1iZXIgZm9yIGVhY2ggZnJhbWUuCisKKyAgICBUaGlzIHdpbGwgZm9sbG93IHRiLnRiX25leHQgKGFuZCB0aHVzIGlzIGluIHRoZSBvcHBvc2l0ZSBvcmRlciB0bworICAgIHdhbGtfc3RhY2spLiBVc3VhbGx5IHVzZWQgd2l0aCBTdGFja1N1bW1hcnkuZXh0cmFjdC4KKyAgICAiIiIKKyAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgeWllbGQgdGIudGJfZnJhbWUsIHRiLnRiX2xpbmVubworICAgICAgICB0YiA9IHRiLnRiX25leHQKKworCitjbGFzcyBTdGFja1N1bW1hcnkobGlzdCk6CisgICAgIiIiQSBzdGFjayBvZiBmcmFtZXMuIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZXh0cmFjdChrbGFzcywgZnJhbWVfZ2VuLCAqLCBsaW1pdD1Ob25lLCBsb29rdXBfbGluZXM9VHJ1ZSwKKyAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPUZhbHNlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgU3RhY2tTdW1tYXJ5IGZyb20gYSB0cmFjZWJhY2sgb3Igc3RhY2sgb2JqZWN0LgorCisgICAgICAgIDpwYXJhbSBmcmFtZV9nZW46IEEgZ2VuZXJhdG9yIHRoYXQgeWllbGRzIChmcmFtZSwgbGluZW5vKSB0dXBsZXMgdG8KKyAgICAgICAgICAgIGluY2x1ZGUgaW4gdGhlIHN0YWNrLgorICAgICAgICA6cGFyYW0gbGltaXQ6IE5vbmUgdG8gaW5jbHVkZSBhbGwgZnJhbWVzIG9yIHRoZSBudW1iZXIgb2YgZnJhbWVzIHRvCisgICAgICAgICAgICBpbmNsdWRlLgorICAgICAgICA6cGFyYW0gbG9va3VwX2xpbmVzOiBJZiBUcnVlLCBsb29rdXAgbGluZXMgZm9yIGVhY2ggZnJhbWUgaW1tZWRpYXRlbHksCisgICAgICAgICAgICBvdGhlcndpc2UgbG9va3VwIGlzIGRlZmVycmVkIHVudGlsIHRoZSBmcmFtZSBpcyByZW5kZXJlZC4KKyAgICAgICAgOnBhcmFtIGNhcHR1cmVfbG9jYWxzOiBJZiBUcnVlLCB0aGUgbG9jYWwgdmFyaWFibGVzIGZyb20gZWFjaCBmcmFtZSB3aWxsCisgICAgICAgICAgICBiZSBjYXB0dXJlZCBhcyBvYmplY3QgcmVwcmVzZW50YXRpb25zIGludG8gdGhlIEZyYW1lU3VtbWFyeS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGxpbWl0IGlzIE5vbmU6CisgICAgICAgICAgICBsaW1pdCA9IGdldGF0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCBOb25lKQorICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmUgYW5kIGxpbWl0IDwgMDoKKyAgICAgICAgICAgICAgICBsaW1pdCA9IDAKKyAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsaW1pdCA+PSAwOgorICAgICAgICAgICAgICAgIGZyYW1lX2dlbiA9IGl0ZXJ0b29scy5pc2xpY2UoZnJhbWVfZ2VuLCBsaW1pdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnJhbWVfZ2VuID0gY29sbGVjdGlvbnMuZGVxdWUoZnJhbWVfZ2VuLCBtYXhsZW49LWxpbWl0KQorCisgICAgICAgIHJlc3VsdCA9IGtsYXNzKCkKKyAgICAgICAgZm5hbWVzID0gc2V0KCkKKyAgICAgICAgZm9yIGYsIGxpbmVubyBpbiBmcmFtZV9nZW46CisgICAgICAgICAgICBjbyA9IGYuZl9jb2RlCisgICAgICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBuYW1lID0gY28uY29fbmFtZQorCisgICAgICAgICAgICBmbmFtZXMuYWRkKGZpbGVuYW1lKQorICAgICAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZShmaWxlbmFtZSwgZi5mX2dsb2JhbHMpCisgICAgICAgICAgICAjIE11c3QgZGVmZXIgbGluZSBsb29rdXBzIHVudGlsIHdlIGhhdmUgY2FsbGVkIGNoZWNrY2FjaGUuCisgICAgICAgICAgICBpZiBjYXB0dXJlX2xvY2FsczoKKyAgICAgICAgICAgICAgICBmX2xvY2FscyA9IGYuZl9sb2NhbHMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZl9sb2NhbHMgPSBOb25lCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEZyYW1lU3VtbWFyeSgKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsb29rdXBfbGluZT1GYWxzZSwgbG9jYWxzPWZfbG9jYWxzKSkKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZuYW1lczoKKyAgICAgICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQorICAgICAgICAjIElmIGltbWVkaWF0ZSBsb29rdXAgd2FzIGRlc2lyZWQsIHRyaWdnZXIgbG9va3VwcyBub3cuCisgICAgICAgIGlmIGxvb2t1cF9saW5lczoKKyAgICAgICAgICAgIGZvciBmIGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICBmLmxpbmUKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fbGlzdChrbGFzcywgYV9saXN0KToKKyAgICAgICAgIiIiQ3JlYXRlIGEgU3RhY2tTdW1tYXJ5IGZyb20gYSBzaW1wbGUgbGlzdCBvZiB0dXBsZXMuCisKKyAgICAgICAgVGhpcyBtZXRob2Qgc3VwcG9ydHMgdGhlIG9sZGVyIFB5dGhvbiBBUEkuIEVhY2ggdHVwbGUgc2hvdWxkIGJlIGEKKyAgICAgICAgNC10dXBsZSB3aXRoIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKSBlbGVtZW50cy4KKyAgICAgICAgIiIiCisgICAgICAgICMgV2hpbGUgZG9pbmcgYSBmYXN0LXBhdGggY2hlY2sgZm9yIGlzaW5zdGFuY2UoYV9saXN0LCBTdGFja1N1bW1hcnkpIGlzCisgICAgICAgICMgYXBwZWFsaW5nLCBpZGxlbGliLnJ1bi5jbGVhbnVwX3RyYWNlYmFjayBhbmQgb3RoZXIgc2ltaWxhciBjb2RlIG1heQorICAgICAgICAjIGJyZWFrIHRoaXMgYnkgbWFraW5nIGFyYml0cmFyeSBmcmFtZXMgcGxhaW4gdHVwbGVzLCBzbyB3ZSBuZWVkIHRvCisgICAgICAgICMgY2hlY2sgb24gYSBmcmFtZSBieSBmcmFtZSBiYXNpcy4KKyAgICAgICAgcmVzdWx0ID0gU3RhY2tTdW1tYXJ5KCkKKyAgICAgICAgZm9yIGZyYW1lIGluIGFfbGlzdDoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZnJhbWUsIEZyYW1lU3VtbWFyeSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmcmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSA9IGZyYW1lCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGcmFtZVN1bW1hcnkoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZT1saW5lKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGZvcm1hdChzZWxmKToKKyAgICAgICAgIiIiRm9ybWF0IHRoZSBzdGFjayByZWFkeSBmb3IgcHJpbnRpbmcuCisKKyAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2Ygc3RyaW5ncyByZWFkeSBmb3IgcHJpbnRpbmcuICBFYWNoIHN0cmluZyBpbiB0aGUKKyAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCisgICAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGZvciBmcmFtZSBpbiBzZWxmOgorICAgICAgICAgICAgcm93ID0gW10KKyAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgRmlsZSAie30iLCBsaW5lIHt9LCBpbiB7fVxuJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubywgZnJhbWUubmFtZSkpCisgICAgICAgICAgICBpZiBmcmFtZS5saW5lOgorICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7fVxuJy5mb3JtYXQoZnJhbWUubGluZS5zdHJpcCgpKSkKKyAgICAgICAgICAgIGlmIGZyYW1lLmxvY2FsczoKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc29ydGVkKGZyYW1lLmxvY2Fscy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnICAgIHtuYW1lfSA9IHt2YWx1ZX1cbicuZm9ybWF0KG5hbWU9bmFtZSwgdmFsdWU9dmFsdWUpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJy5qb2luKHJvdykpCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitjbGFzcyBUcmFjZWJhY2tFeGNlcHRpb246CisgICAgIiIiQW4gZXhjZXB0aW9uIHJlYWR5IGZvciByZW5kZXJpbmcuCisKKyAgICBUaGUgdHJhY2ViYWNrIG1vZHVsZSBjYXB0dXJlcyBlbm91Z2ggYXR0cmlidXRlcyBmcm9tIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KKyAgICB0byB0aGlzIGludGVybWVkaWFyeSBmb3JtIHRvIGVuc3VyZSB0aGF0IG5vIHJlZmVyZW5jZXMgYXJlIGhlbGQsIHdoaWxlCisgICAgc3RpbGwgYmVpbmcgYWJsZSB0byBmdWxseSBwcmludCBvciBmb3JtYXQgaXQuCisKKyAgICBVc2UgYGZyb21fZXhjZXB0aW9uYCB0byBjcmVhdGUgVHJhY2ViYWNrRXhjZXB0aW9uIGluc3RhbmNlcyBmcm9tIGV4Y2VwdGlvbgorICAgIG9iamVjdHMsIG9yIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgVHJhY2ViYWNrRXhjZXB0aW9uIGluc3RhbmNlcyBmcm9tCisgICAgaW5kaXZpZHVhbCBjb21wb25lbnRzLgorCisgICAgLSA6YXR0cjpgX19jYXVzZV9fYCBBIFRyYWNlYmFja0V4Y2VwdGlvbiBvZiB0aGUgb3JpZ2luYWwgKl9fY2F1c2VfXyouCisgICAgLSA6YXR0cjpgX19jb250ZXh0X19gIEEgVHJhY2ViYWNrRXhjZXB0aW9uIG9mIHRoZSBvcmlnaW5hbCAqX19jb250ZXh0X18qLgorICAgIC0gOmF0dHI6YF9fc3VwcHJlc3NfY29udGV4dF9fYCBUaGUgKl9fc3VwcHJlc3NfY29udGV4dF9fKiB2YWx1ZSBmcm9tIHRoZQorICAgICAgb3JpZ2luYWwgZXhjZXB0aW9uLgorICAgIC0gOmF0dHI6YHN0YWNrYCBBIGBTdGFja1N1bW1hcnlgIHJlcHJlc2VudGluZyB0aGUgdHJhY2ViYWNrLgorICAgIC0gOmF0dHI6YGV4Y190eXBlYCBUaGUgY2xhc3Mgb2YgdGhlIG9yaWdpbmFsIHRyYWNlYmFjay4KKyAgICAtIDphdHRyOmBmaWxlbmFtZWAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgZmlsZW5hbWUgd2hlcmUgdGhlIGVycm9yCisgICAgICBvY2N1cmVkLgorICAgIC0gOmF0dHI6YGxpbmVub2AgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgbGluZW51bWJlciB3aGVyZSB0aGUgZXJyb3IKKyAgICAgIG9jY3VyZWQuCisgICAgLSA6YXR0cjpgdGV4dGAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgdGV4dCB3aGVyZSB0aGUgZXJyb3IKKyAgICAgIG9jY3VyZWQuCisgICAgLSA6YXR0cjpgb2Zmc2V0YCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSB0aGUKKyAgICAgIGVycm9yIG9jY3VyZWQuCisgICAgLSA6YXR0cjpgbXNnYCBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2ssICosIGxpbWl0PU5vbmUsCisgICAgICAgICAgICBsb29rdXBfbGluZXM9VHJ1ZSwgY2FwdHVyZV9sb2NhbHM9RmFsc2UsIF9zZWVuPU5vbmUpOgorICAgICAgICAjIE5COiB3ZSBuZWVkIHRvIGFjY2VwdCBleGNfdHJhY2ViYWNrLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2sgdG8KKyAgICAgICAgIyBwZXJtaXQgYmFja3dhcmRzIGNvbXBhdCB3aXRoIHRoZSBleGlzdGluZyBBUEksIG90aGVyd2lzZSB3ZQorICAgICAgICAjIG5lZWQgc3R1YiB0aHVuayBvYmplY3RzIGp1c3QgdG8gZ2x1ZSBpdCB0b2dldGhlci4KKyAgICAgICAgIyBIYW5kbGUgbG9vcHMgaW4gX19jYXVzZV9fIG9yIF9fY29udGV4dF9fLgorICAgICAgICBpZiBfc2VlbiBpcyBOb25lOgorICAgICAgICAgICAgX3NlZW4gPSBzZXQoKQorICAgICAgICBfc2Vlbi5hZGQoZXhjX3ZhbHVlKQorICAgICAgICAjIEdyYWNlZnVsbHkgaGFuZGxlICh0aGUgd2F5IFB5dGhvbiAyLjQgYW5kIGVhcmxpZXIgZGlkKSB0aGUgY2FzZSBvZgorICAgICAgICAjIGJlaW5nIGNhbGxlZCB3aXRoIG5vIHR5cGUgb3IgdmFsdWUgKE5vbmUsIE5vbmUsIE5vbmUpLgorICAgICAgICBpZiAoZXhjX3ZhbHVlIGFuZCBleGNfdmFsdWUuX19jYXVzZV9fIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgZXhjX3ZhbHVlLl9fY2F1c2VfXyBub3QgaW4gX3NlZW4pOgorICAgICAgICAgICAgY2F1c2UgPSBUcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgdHlwZShleGNfdmFsdWUuX19jYXVzZV9fKSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUuX19jYXVzZV9fLAorICAgICAgICAgICAgICAgIGV4Y192YWx1ZS5fX2NhdXNlX18uX190cmFjZWJhY2tfXywKKyAgICAgICAgICAgICAgICBsaW1pdD1saW1pdCwKKyAgICAgICAgICAgICAgICBsb29rdXBfbGluZXM9RmFsc2UsCisgICAgICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9Y2FwdHVyZV9sb2NhbHMsCisgICAgICAgICAgICAgICAgX3NlZW49X3NlZW4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYXVzZSA9IE5vbmUKKyAgICAgICAgaWYgKGV4Y192YWx1ZSBhbmQgZXhjX3ZhbHVlLl9fY29udGV4dF9fIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgZXhjX3ZhbHVlLl9fY29udGV4dF9fIG5vdCBpbiBfc2Vlbik6CisgICAgICAgICAgICBjb250ZXh0ID0gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIHR5cGUoZXhjX3ZhbHVlLl9fY29udGV4dF9fKSwKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUuX19jb250ZXh0X18sCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVlLl9fY29udGV4dF9fLl9fdHJhY2ViYWNrX18sCisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgbG9va3VwX2xpbmVzPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPWNhcHR1cmVfbG9jYWxzLAorICAgICAgICAgICAgICAgIF9zZWVuPV9zZWVuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGV4dCA9IE5vbmUKKyAgICAgICAgc2VsZi5leGNfdHJhY2ViYWNrID0gZXhjX3RyYWNlYmFjaworICAgICAgICBzZWxmLl9fY2F1c2VfXyA9IGNhdXNlCisgICAgICAgIHNlbGYuX19jb250ZXh0X18gPSBjb250ZXh0CisgICAgICAgIHNlbGYuX19zdXBwcmVzc19jb250ZXh0X18gPSBcCisgICAgICAgICAgICBleGNfdmFsdWUuX19zdXBwcmVzc19jb250ZXh0X18gaWYgZXhjX3ZhbHVlIGVsc2UgRmFsc2UKKyAgICAgICAgIyBUT0RPOiBsb2NhbHMuCisgICAgICAgIHNlbGYuc3RhY2sgPSBTdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgIHdhbGtfdGIoZXhjX3RyYWNlYmFjayksIGxpbWl0PWxpbWl0LCBsb29rdXBfbGluZXM9bG9va3VwX2xpbmVzLAorICAgICAgICAgICAgY2FwdHVyZV9sb2NhbHM9Y2FwdHVyZV9sb2NhbHMpCisgICAgICAgIHNlbGYuZXhjX3R5cGUgPSBleGNfdHlwZQorICAgICAgICAjIENhcHR1cmUgbm93IHRvIHBlcm1pdCBmcmVlaW5nIHJlc291cmNlczogb25seSBjb21wbGljYXRpb24gaXMgaW4gdGhlCisgICAgICAgICMgdW5vZmZpY2lhbCBBUEkgX2Zvcm1hdF9maW5hbF9leGNfbGluZQorICAgICAgICBzZWxmLl9zdHIgPSBfc29tZV9zdHIoZXhjX3ZhbHVlKQorICAgICAgICBpZiBleGNfdHlwZSBhbmQgaXNzdWJjbGFzcyhleGNfdHlwZSwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgIyBIYW5kbGUgU3ludGF4RXJyb3IncyBzcGVjaWFsbHkKKyAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBleGNfdmFsdWUuZmlsZW5hbWUKKyAgICAgICAgICAgIHNlbGYubGluZW5vID0gc3RyKGV4Y192YWx1ZS5saW5lbm8pCisgICAgICAgICAgICBzZWxmLnRleHQgPSBleGNfdmFsdWUudGV4dAorICAgICAgICAgICAgc2VsZi5vZmZzZXQgPSBleGNfdmFsdWUub2Zmc2V0CisgICAgICAgICAgICBzZWxmLm1zZyA9IGV4Y192YWx1ZS5tc2cKKyAgICAgICAgaWYgbG9va3VwX2xpbmVzOgorICAgICAgICAgICAgc2VsZi5fbG9hZF9saW5lcygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9leGNlcHRpb24oc2VsZiwgZXhjLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJDcmVhdGUgYSBUcmFjZWJhY2tFeGNlcHRpb24gZnJvbSBhbiBleGNlcHRpb24uIiIiCisgICAgICAgIHJldHVybiBUcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICB0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKKyAgICAgICAgIiIiUHJpdmF0ZSBBUEkuIGZvcmNlIGFsbCBsaW5lcyBpbiB0aGUgc3RhY2sgdG8gYmUgbG9hZGVkLiIiIgorICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZi5zdGFjazoKKyAgICAgICAgICAgIGZyYW1lLmxpbmUKKyAgICAgICAgaWYgc2VsZi5fX2NvbnRleHRfXzoKKyAgICAgICAgICAgIHNlbGYuX19jb250ZXh0X18uX2xvYWRfbGluZXMoKQorICAgICAgICBpZiBzZWxmLl9fY2F1c2VfXzoKKyAgICAgICAgICAgIHNlbGYuX19jYXVzZV9fLl9sb2FkX2xpbmVzKCkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zdHIKKworICAgIGRlZiBmb3JtYXRfZXhjZXB0aW9uX29ubHkoc2VsZik6CisgICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uIHBhcnQgb2YgdGhlIHRyYWNlYmFjay4KKworICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZS4KKworICAgICAgICBOb3JtYWxseSwgdGhlIGdlbmVyYXRvciBlbWl0cyBhIHNpbmdsZSBzdHJpbmc7IGhvd2V2ZXIsIGZvcgorICAgICAgICBTeW50YXhFcnJvciBleGNlcHRpb25zLCBpdCBlbWl0ZXMgc2V2ZXJhbCBsaW5lcyB0aGF0ICh3aGVuCisgICAgICAgIHByaW50ZWQpIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIHN5bnRheAorICAgICAgICBlcnJvciBvY2N1cnJlZC4KKworICAgICAgICBUaGUgbWVzc2FnZSBpbmRpY2F0aW5nIHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxhc3QKKyAgICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmV4Y190eXBlIGlzIE5vbmU6CisgICAgICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKE5vbmUsIHNlbGYuX3N0cikKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHN0eXBlID0gc2VsZi5leGNfdHlwZS5fX3F1YWxuYW1lX18KKyAgICAgICAgc21vZCA9IHNlbGYuZXhjX3R5cGUuX19tb2R1bGVfXworICAgICAgICBpZiBzbW9kIG5vdCBpbiAoIl9fbWFpbl9fIiwgImJ1aWx0aW5zIik6CisgICAgICAgICAgICBzdHlwZSA9IHNtb2QgKyAnLicgKyBzdHlwZQorCisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHNlbGYuZXhjX3R5cGUsIFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIHlpZWxkIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUoc3R5cGUsIHNlbGYuX3N0cikKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgSXQgd2FzIGEgc3ludGF4IGVycm9yOyBzaG93IGV4YWN0bHkgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZvdW5kLgorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZmlsZW5hbWUgb3IgIjxzdHJpbmc+IgorICAgICAgICBsaW5lbm8gPSBzdHIoc2VsZi5saW5lbm8pIG9yICc/JworICAgICAgICB5aWVsZCAnICBGaWxlICJ7fSIsIGxpbmUge31cbicuZm9ybWF0KGZpbGVuYW1lLCBsaW5lbm8pCisKKyAgICAgICAgYmFkbGluZSA9IHNlbGYudGV4dAorICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldAorICAgICAgICBpZiBiYWRsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgeWllbGQgJyAgICB7fVxuJy5mb3JtYXQoYmFkbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBiYWRsaW5lLnJzdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgIG9mZnNldCA9IG1pbihsZW4oY2FyZXRzcGFjZSksIG9mZnNldCkgLSAxCisgICAgICAgICAgICAgICAgY2FyZXRzcGFjZSA9IGNhcmV0c3BhY2VbOm9mZnNldF0ubHN0cmlwKCkKKyAgICAgICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAorICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSAoKGMuaXNzcGFjZSgpIGFuZCBjIG9yICcgJykgZm9yIGMgaW4gY2FyZXRzcGFjZSkKKyAgICAgICAgICAgICAgICB5aWVsZCAnICAgIHt9XlxuJy5mb3JtYXQoJycuam9pbihjYXJldHNwYWNlKSkKKyAgICAgICAgbXNnID0gc2VsZi5tc2cgb3IgIjxubyBkZXRhaWwgYXZhaWxhYmxlPiIKKyAgICAgICAgeWllbGQgInt9OiB7fVxuIi5mb3JtYXQoc3R5cGUsIG1zZykKKworICAgIGRlZiBmb3JtYXQoc2VsZiwgKiwgY2hhaW49VHJ1ZSk6CisgICAgICAgICIiIkZvcm1hdCB0aGUgZXhjZXB0aW9uLgorCisgICAgICAgIElmIGNoYWluIGlzIG5vdCAqVHJ1ZSosICpfX2NhdXNlX18qIGFuZCAqX19jb250ZXh0X18qIHdpbGwgbm90IGJlIGZvcm1hdHRlZC4KKworICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZSBhbmQKKyAgICAgICAgc29tZSBjb250YWluaW5nIGludGVybmFsIG5ld2xpbmVzLiBgcHJpbnRfZXhjZXB0aW9uYCBpcyBhIHdyYXBwZXIgYXJvdW5kCisgICAgICAgIHRoaXMgbWV0aG9kIHdoaWNoIGp1c3QgcHJpbnRzIHRoZSBsaW5lcyB0byBhIGZpbGUuCisKKyAgICAgICAgVGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlzIHRoZSBsYXN0CisgICAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY2hhaW46CisgICAgICAgICAgICBpZiBzZWxmLl9fY2F1c2VfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX19jYXVzZV9fLmZvcm1hdChjaGFpbj1jaGFpbikKKyAgICAgICAgICAgICAgICB5aWVsZCBfY2F1c2VfbWVzc2FnZQorICAgICAgICAgICAgZWxpZiAoc2VsZi5fX2NvbnRleHRfXyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICBub3Qgc2VsZi5fX3N1cHByZXNzX2NvbnRleHRfXyk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9fY29udGV4dF9fLmZvcm1hdChjaGFpbj1jaGFpbikKKyAgICAgICAgICAgICAgICB5aWVsZCBfY29udGV4dF9tZXNzYWdlCisgICAgICAgIGlmIHNlbGYuZXhjX3RyYWNlYmFjayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHlpZWxkICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgIHlpZWxkIGZyb20gc2VsZi5zdGFjay5mb3JtYXQoKQorICAgICAgICB5aWVsZCBmcm9tIHNlbGYuZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCkKZGlmZiAtLWdpdCBhL0xpYi90cmFjZW1hbGxvYy5weSBiL0xpYi90cmFjZW1hbGxvYy5weQppbmRleCBhZGVkZmM1Li42Mjg4ZGE4IDEwMDY0NAotLS0gYS9MaWIvdHJhY2VtYWxsb2MucHkKKysrIGIvTGliL3RyYWNlbWFsbG9jLnB5CkBAIC0yOTcsNyArMjk3LDcgQEAKIAogZGVmIF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWUpOgogICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtY2FzZShmaWxlbmFtZSkKLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgoJy5weWMnLCAnLnB5bycpKToKKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICByZXR1cm4gZmlsZW5hbWUKIApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9zb3J0aW5nX2FuaW1hdGUucHkgYi9MaWIvdHVydGxlZGVtby9zb3J0aW5nX2FuaW1hdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI1YTBhYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90dXJ0bGVkZW1vL3NvcnRpbmdfYW5pbWF0ZS5weQpAQCAtMCwwICsxLDIwNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIiIiCisKKyAgICAgICAgIHNvcnRpbmdfYW5pbWF0aW9uLnB5CisKK0EgbWluaW1hbCBzb3J0aW5nIGFsZ29yaXRobSBhbmltYXRpb246CitTb3J0cyBhIHNoZWxmIG9mIDEwIGJsb2NrcyB1c2luZyBpbnNlcnRpb24KK3NvcnQsIHNlbGVjdGlvbiBzb3J0IGFuZCBxdWlja3NvcnQuCisKK1NoZWxmcyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYnVpbHRpbiBsaXN0cy4KKworQmxvY2tzIGFyZSB0dXJ0bGVzIHdpdGggc2hhcGUgInNxdWFyZSIsIGJ1dAorc3RyZXRjaGVkIHRvIHJlY3RhbmdsZXMgYnkgc2hhcGVzaXplKCkKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICBUbyBleGl0IHByZXNzIHNwYWNlIGJ1dHRvbgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiIiCitmcm9tIHR1cnRsZSBpbXBvcnQgKgoraW1wb3J0IHJhbmRvbQorCisKK2NsYXNzIEJsb2NrKFR1cnRsZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKKyAgICAgICAgVHVydGxlLl9faW5pdF9fKHNlbGYsIHNoYXBlPSJzcXVhcmUiLCB2aXNpYmxlPUZhbHNlKQorICAgICAgICBzZWxmLnB1KCkKKyAgICAgICAgc2VsZi5zaGFwZXNpemUoc2l6ZSAqIDEuNSwgMS41LCAyKSAjIHNxdWFyZS0tPnJlY3RhbmdsZQorICAgICAgICBzZWxmLmZpbGxjb2xvcigiYmxhY2siKQorICAgICAgICBzZWxmLnN0KCkKKworICAgIGRlZiBnbG93KHNlbGYpOgorICAgICAgICBzZWxmLmZpbGxjb2xvcigicmVkIikKKworICAgIGRlZiB1bmdsb3coc2VsZik6CisgICAgICAgIHNlbGYuZmlsbGNvbG9yKCJibGFjayIpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiQmxvY2sgc2l6ZTogezB9Ii5mb3JtYXQoc2VsZi5zaXplKQorCisKK2NsYXNzIFNoZWxmKGxpc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHkpOgorICAgICAgICAiY3JlYXRlIGEgc2hlbGYuIHkgaXMgeS1wb3NpdGlvbiBvZiBmaXJzdCBibG9jayIKKyAgICAgICAgc2VsZi55ID0geQorICAgICAgICBzZWxmLnggPSAtMTUwCisKKyAgICBkZWYgcHVzaChzZWxmLCBkKToKKyAgICAgICAgd2lkdGgsIF8sIF8gPSBkLnNoYXBlc2l6ZSgpCisgICAgICAgICMgYWxpZ24gYmxvY2tzIGJ5IHRoZSBib3R0b20gZWRnZQorICAgICAgICB5X29mZnNldCA9IHdpZHRoIC8gMiAqIDIwCisgICAgICAgIGQuc2V0eShzZWxmLnkgKyB5X29mZnNldCkKKyAgICAgICAgZC5zZXR4KHNlbGYueCArIDM0ICogbGVuKHNlbGYpKQorICAgICAgICBzZWxmLmFwcGVuZChkKQorCisgICAgZGVmIF9jbG9zZV9nYXBfZnJvbV9pKHNlbGYsIGkpOgorICAgICAgICBmb3IgYiBpbiBzZWxmW2k6XToKKyAgICAgICAgICAgIHhwb3MsIF8gPSBiLnBvcygpCisgICAgICAgICAgICBiLnNldHgoeHBvcyAtIDM0KQorCisgICAgZGVmIF9vcGVuX2dhcF9mcm9tX2koc2VsZiwgaSk6CisgICAgICAgIGZvciBiIGluIHNlbGZbaTpdOgorICAgICAgICAgICAgeHBvcywgXyA9IGIucG9zKCkKKyAgICAgICAgICAgIGIuc2V0eCh4cG9zICsgMzQpCisKKyAgICBkZWYgcG9wKHNlbGYsIGtleSk6CisgICAgICAgIGIgPSBsaXN0LnBvcChzZWxmLCBrZXkpCisgICAgICAgIGIuZ2xvdygpCisgICAgICAgIGIuc2V0eSgyMDApCisgICAgICAgIHNlbGYuX2Nsb3NlX2dhcF9mcm9tX2koa2V5KQorICAgICAgICByZXR1cm4gYgorCisgICAgZGVmIGluc2VydChzZWxmLCBrZXksIGIpOgorICAgICAgICBzZWxmLl9vcGVuX2dhcF9mcm9tX2koa2V5KQorICAgICAgICBsaXN0Lmluc2VydChzZWxmLCBrZXksIGIpCisgICAgICAgIGIuc2V0eChzZWxmLnggKyAzNCAqIGtleSkKKyAgICAgICAgd2lkdGgsIF8sIF8gPSBiLnNoYXBlc2l6ZSgpCisgICAgICAgICMgYWxpZ24gYmxvY2tzIGJ5IHRoZSBib3R0b20gZWRnZQorICAgICAgICB5X29mZnNldCA9IHdpZHRoIC8gMiAqIDIwCisgICAgICAgIGIuc2V0eShzZWxmLnkgKyB5X29mZnNldCkKKyAgICAgICAgYi51bmdsb3coKQorCitkZWYgaXNvcnQoc2hlbGYpOgorICAgIGxlbmd0aCA9IGxlbihzaGVsZikKKyAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW5ndGgpOgorICAgICAgICBob2xlID0gaQorICAgICAgICB3aGlsZSBob2xlID4gMCBhbmQgc2hlbGZbaV0uc2l6ZSA8IHNoZWxmW2hvbGUgLSAxXS5zaXplOgorICAgICAgICAgICAgaG9sZSA9IGhvbGUgLSAxCisgICAgICAgIHNoZWxmLmluc2VydChob2xlLCBzaGVsZi5wb3AoaSkpCisgICAgcmV0dXJuCisKK2RlZiBzc29ydChzaGVsZik6CisgICAgbGVuZ3RoID0gbGVuKHNoZWxmKQorICAgIGZvciBqIGluIHJhbmdlKDAsIGxlbmd0aCAtIDEpOgorICAgICAgICBpbWluID0gagorICAgICAgICBmb3IgaSBpbiByYW5nZShqICsgMSwgbGVuZ3RoKToKKyAgICAgICAgICAgIGlmIHNoZWxmW2ldLnNpemUgPCBzaGVsZltpbWluXS5zaXplOgorICAgICAgICAgICAgICAgIGltaW4gPSBpCisgICAgICAgIGlmIGltaW4gIT0gajoKKyAgICAgICAgICAgIHNoZWxmLmluc2VydChqLCBzaGVsZi5wb3AoaW1pbikpCisKK2RlZiBwYXJ0aXRpb24oc2hlbGYsIGxlZnQsIHJpZ2h0LCBwaXZvdF9pbmRleCk6CisgICAgcGl2b3QgPSBzaGVsZltwaXZvdF9pbmRleF0KKyAgICBzaGVsZi5pbnNlcnQocmlnaHQsIHNoZWxmLnBvcChwaXZvdF9pbmRleCkpCisgICAgc3RvcmVfaW5kZXggPSBsZWZ0CisgICAgZm9yIGkgaW4gcmFuZ2UobGVmdCwgcmlnaHQpOiAjIHJhbmdlIGlzIG5vbi1pbmNsdXNpdmUgb2YgZW5kaW5nIHZhbHVlCisgICAgICAgIGlmIHNoZWxmW2ldLnNpemUgPCBwaXZvdC5zaXplOgorICAgICAgICAgICAgc2hlbGYuaW5zZXJ0KHN0b3JlX2luZGV4LCBzaGVsZi5wb3AoaSkpCisgICAgICAgICAgICBzdG9yZV9pbmRleCA9IHN0b3JlX2luZGV4ICsgMQorICAgIHNoZWxmLmluc2VydChzdG9yZV9pbmRleCwgc2hlbGYucG9wKHJpZ2h0KSkgIyBtb3ZlIHBpdm90IHRvIGNvcnJlY3QgcG9zaXRpb24KKyAgICByZXR1cm4gc3RvcmVfaW5kZXgKKworZGVmIHFzb3J0KHNoZWxmLCBsZWZ0LCByaWdodCk6CisgICAgaWYgbGVmdCA8IHJpZ2h0OgorICAgICAgICBwaXZvdF9pbmRleCA9IGxlZnQKKyAgICAgICAgcGl2b3RfbmV3X2luZGV4ID0gcGFydGl0aW9uKHNoZWxmLCBsZWZ0LCByaWdodCwgcGl2b3RfaW5kZXgpCisgICAgICAgIHFzb3J0KHNoZWxmLCBsZWZ0LCBwaXZvdF9uZXdfaW5kZXggLSAxKQorICAgICAgICBxc29ydChzaGVsZiwgcGl2b3RfbmV3X2luZGV4ICsgMSwgcmlnaHQpCisKK2RlZiByYW5kb21pemUoKToKKyAgICBkaXNhYmxlX2tleXMoKQorICAgIGNsZWFyKCkKKyAgICB0YXJnZXQgPSBsaXN0KHJhbmdlKDEwKSkKKyAgICByYW5kb20uc2h1ZmZsZSh0YXJnZXQpCisgICAgZm9yIGksIHQgaW4gZW51bWVyYXRlKHRhcmdldCk6CisgICAgICAgIGZvciBqIGluIHJhbmdlKGksIGxlbihzKSk6CisgICAgICAgICAgICBpZiBzW2pdLnNpemUgPT0gdCArIDE6CisgICAgICAgICAgICAgICAgcy5pbnNlcnQoaSwgcy5wb3AoaikpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisKK2RlZiBzaG93X3RleHQodGV4dCwgbGluZT0wKToKKyAgICBsaW5lID0gMjAgKiBsaW5lCisgICAgZ290bygwLC0yNTAgLSBsaW5lKQorICAgIHdyaXRlKHRleHQsIGFsaWduPSJjZW50ZXIiLCBmb250PSgiQ291cmllciIsIDE2LCAiYm9sZCIpKQorCitkZWYgc3RhcnRfc3NvcnQoKToKKyAgICBkaXNhYmxlX2tleXMoKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoIlNlbGVjdGlvbiBTb3J0IikKKyAgICBzc29ydChzKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKworZGVmIHN0YXJ0X2lzb3J0KCk6CisgICAgZGlzYWJsZV9rZXlzKCkKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KCJJbnNlcnRpb24gU29ydCIpCisgICAgaXNvcnQocykKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisKK2RlZiBzdGFydF9xc29ydCgpOgorICAgIGRpc2FibGVfa2V5cygpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dCgiUXVpY2tzb3J0IikKKyAgICBxc29ydChzLCAwLCBsZW4ocykgLSAxKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKworZGVmIGluaXRfc2hlbGYoKToKKyAgICBnbG9iYWwgcworICAgIHMgPSBTaGVsZigtMjAwKQorICAgIHZhbHMgPSAoNCwgMiwgOCwgOSwgMSwgNSwgMTAsIDMsIDcsIDYpCisgICAgZm9yIGkgaW4gdmFsczoKKyAgICAgICAgcy5wdXNoKEJsb2NrKGkpKQorCitkZWYgZGlzYWJsZV9rZXlzKCk6CisgICAgb25rZXkoTm9uZSwgInMiKQorICAgIG9ua2V5KE5vbmUsICJpIikKKyAgICBvbmtleShOb25lLCAicSIpCisgICAgb25rZXkoTm9uZSwgInIiKQorCitkZWYgZW5hYmxlX2tleXMoKToKKyAgICBvbmtleShzdGFydF9pc29ydCwgImkiKQorICAgIG9ua2V5KHN0YXJ0X3Nzb3J0LCAicyIpCisgICAgb25rZXkoc3RhcnRfcXNvcnQsICJxIikKKyAgICBvbmtleShyYW5kb21pemUsICJyIikKKyAgICBvbmtleShieWUsICJzcGFjZSIpCisKK2RlZiBtYWluKCk6CisgICAgZ2V0c2NyZWVuKCkuY2xlYXJzY3JlZW4oKQorICAgIGh0KCk7IHBlbnVwKCkKKyAgICBpbml0X3NoZWxmKCkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMSkKKyAgICBzaG93X3RleHQoaW5zdHJ1Y3Rpb25zMiwgbGluZT0xKQorICAgIGVuYWJsZV9rZXlzKCkKKyAgICBsaXN0ZW4oKQorICAgIHJldHVybiAiRVZFTlRMT09QIgorCitpbnN0cnVjdGlvbnMxID0gInByZXNzIGkgZm9yIGluc2VydGlvbiBzb3J0LCBzIGZvciBzZWxlY3Rpb24gc29ydCwgcSBmb3IgcXVpY2tzb3J0IgoraW5zdHJ1Y3Rpb25zMiA9ICJzcGFjZWJhciB0byBxdWl0LCByIHRvIHJhbmRvbWl6ZSIKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgbXNnID0gbWFpbigpCisgICAgbWFpbmxvb3AoKQpkaWZmIC0tZ2l0IGEvTGliL3R5cGVzLnB5IGIvTGliL3R5cGVzLnB5CmluZGV4IDRmYjJkZWYuLjQ4ODkxY2QgMTAwNjQ0Ci0tLSBhL0xpYi90eXBlcy5weQorKysgYi9MaWIvdHlwZXMucHkKQEAgLTE5LDYgKzE5LDExIEBACiAgICAgeWllbGQgMQogR2VuZXJhdG9yVHlwZSA9IHR5cGUoX2coKSkKIAorYXN5bmMgZGVmIF9jKCk6IHBhc3MKK19jID0gX2MoKQorQ29yb3V0aW5lVHlwZSA9IHR5cGUoX2MpCitfYy5jbG9zZSgpICAjIFByZXZlbnQgUmVzb3VyY2VXYXJuaW5nCisKIGNsYXNzIF9DOgogICAgIGRlZiBfbShzZWxmKTogcGFzcwogTWV0aG9kVHlwZSA9IHR5cGUoX0MoKS5fbSkKQEAgLTQwLDcgKzQ1LDcgQEAKIEdldFNldERlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19jb2RlX18pCiBNZW1iZXJEZXNjcmlwdG9yVHlwZSA9IHR5cGUoRnVuY3Rpb25UeXBlLl9fZ2xvYmFsc19fKQogCi1kZWwgc3lzLCBfZiwgX2csIF9DLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGZvciBleHBvcnQKK2RlbCBzeXMsIF9mLCBfZywgX0MsIF9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGZvciBleHBvcnQKIAogCiAjIFByb3ZpZGUgYSBQRVAgMzExNSBjb21wbGlhbnQgbWVjaGFuaXNtIGZvciBjbGFzcyBjcmVhdGlvbgpAQCAtMTU4LDQgKzE2Myw5OSBAQAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAoraW1wb3J0IGZ1bmN0b29scyBhcyBfZnVuY3Rvb2xzCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjIGFzIF9jb2xsZWN0aW9uc19hYmMKKworY2xhc3MgX0dlbmVyYXRvcldyYXBwZXI6CisgICAgIyBUT0RPOiBJbXBsZW1lbnQgdGhpcyBpbiBDLgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBnZW4pOgorICAgICAgICBzZWxmLl9fd3JhcHBlZCA9IGdlbgorICAgICAgICBzZWxmLl9faXNnZW4gPSBnZW4uX19jbGFzc19fIGlzIEdlbmVyYXRvclR5cGUKKyAgICAgICAgc2VsZi5fX25hbWVfXyA9IGdldGF0dHIoZ2VuLCAnX19uYW1lX18nLCBOb25lKQorICAgICAgICBzZWxmLl9fcXVhbG5hbWVfXyA9IGdldGF0dHIoZ2VuLCAnX19xdWFsbmFtZV9fJywgTm9uZSkKKyAgICBkZWYgc2VuZChzZWxmLCB2YWwpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuc2VuZCh2YWwpCisgICAgZGVmIHRocm93KHNlbGYsIHRwLCAqcmVzdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC50aHJvdyh0cCwgKnJlc3QpCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuY2xvc2UoKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnaV9jb2RlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuZ2lfY29kZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnaV9mcmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmdpX2ZyYW1lCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdpX3J1bm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC5naV9ydW5uaW5nCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdpX3lpZWxkZnJvbShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmdpX3lpZWxkZnJvbQorICAgIGNyX2NvZGUgPSBnaV9jb2RlCisgICAgY3JfZnJhbWUgPSBnaV9mcmFtZQorICAgIGNyX3J1bm5pbmcgPSBnaV9ydW5uaW5nCisgICAgY3JfYXdhaXQgPSBnaV95aWVsZGZyb20KKyAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgIHJldHVybiBuZXh0KHNlbGYuX193cmFwcGVkKQorICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2lzZ2VuOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkCisgICAgICAgIHJldHVybiBzZWxmCisgICAgX19hd2FpdF9fID0gX19pdGVyX18KKworZGVmIGNvcm91dGluZShmdW5jKToKKyAgICAiIiJDb252ZXJ0IHJlZ3VsYXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRvIGEgY29yb3V0aW5lLiIiIgorCisgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3R5cGVzLmNvcm91dGluZSgpIGV4cGVjdHMgYSBjYWxsYWJsZScpCisKKyAgICBpZiAoZnVuYy5fX2NsYXNzX18gaXMgRnVuY3Rpb25UeXBlIGFuZAorICAgICAgICBnZXRhdHRyKGZ1bmMsICdfX2NvZGVfXycsIE5vbmUpLl9fY2xhc3NfXyBpcyBDb2RlVHlwZSk6CisKKyAgICAgICAgY29fZmxhZ3MgPSBmdW5jLl9fY29kZV9fLmNvX2ZsYWdzCisKKyAgICAgICAgIyBDaGVjayBpZiAnZnVuYycgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCisgICAgICAgICMgKDB4MTgwID09IENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkKKyAgICAgICAgaWYgY29fZmxhZ3MgJiAweDE4MDoKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAgICAgIyBDaGVjayBpZiAnZnVuYycgaXMgYSBnZW5lcmF0b3IgZnVuY3Rpb24uCisgICAgICAgICMgKDB4MjAgPT0gQ09fR0VORVJBVE9SKQorICAgICAgICBpZiBjb19mbGFncyAmIDB4MjA6CisgICAgICAgICAgICAjIFRPRE86IEltcGxlbWVudCB0aGlzIGluIEMuCisgICAgICAgICAgICBjbyA9IGZ1bmMuX19jb2RlX18KKyAgICAgICAgICAgIGZ1bmMuX19jb2RlX18gPSBDb2RlVHlwZSgKKyAgICAgICAgICAgICAgICBjby5jb19hcmdjb3VudCwgY28uY29fa3dvbmx5YXJnY291bnQsIGNvLmNvX25sb2NhbHMsCisgICAgICAgICAgICAgICAgY28uY29fc3RhY2tzaXplLAorICAgICAgICAgICAgICAgIGNvLmNvX2ZsYWdzIHwgMHgxMDAsICAjIDB4MTAwID09IENPX0lURVJBQkxFX0NPUk9VVElORQorICAgICAgICAgICAgICAgIGNvLmNvX2NvZGUsCisgICAgICAgICAgICAgICAgY28uY29fY29uc3RzLCBjby5jb19uYW1lcywgY28uY29fdmFybmFtZXMsIGNvLmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIGNvLmNvX25hbWUsIGNvLmNvX2ZpcnN0bGluZW5vLCBjby5jb19sbm90YWIsIGNvLmNvX2ZyZWV2YXJzLAorICAgICAgICAgICAgICAgIGNvLmNvX2NlbGx2YXJzKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgICMgVGhlIGZvbGxvd2luZyBjb2RlIGlzIHByaW1hcmlseSB0byBzdXBwb3J0IGZ1bmN0aW9ucyB0aGF0CisgICAgIyByZXR1cm4gZ2VuZXJhdG9yLWxpa2Ugb2JqZWN0cyAoZm9yIGluc3RhbmNlIGdlbmVyYXRvcnMKKyAgICAjIGNvbXBpbGVkIHdpdGggQ3l0aG9uKS4KKworICAgIEBfZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgZGVmIHdyYXBwZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgY29ybyA9IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiAoY29yby5fX2NsYXNzX18gaXMgQ29yb3V0aW5lVHlwZSBvcgorICAgICAgICAgICAgY29yby5fX2NsYXNzX18gaXMgR2VuZXJhdG9yVHlwZSBhbmQgY29yby5naV9jb2RlLmNvX2ZsYWdzICYgMHgxMDApOgorICAgICAgICAgICAgIyAnY29ybycgaXMgYSBuYXRpdmUgY29yb3V0aW5lIG9iamVjdCBvciBhbiBpdGVyYWJsZSBjb3JvdXRpbmUKKyAgICAgICAgICAgIHJldHVybiBjb3JvCisgICAgICAgIGlmIChpc2luc3RhbmNlKGNvcm8sIF9jb2xsZWN0aW9uc19hYmMuR2VuZXJhdG9yKSBhbmQKKyAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKGNvcm8sIF9jb2xsZWN0aW9uc19hYmMuQ29yb3V0aW5lKSk6CisgICAgICAgICAgICAjICdjb3JvJyBpcyBlaXRoZXIgYSBwdXJlIFB5dGhvbiBnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIGl0CisgICAgICAgICAgICAjIGltcGxlbWVudHMgY29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvciAoYW5kIGRvZXMgbm90IGltcGxlbWVudAorICAgICAgICAgICAgIyBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lKS4KKyAgICAgICAgICAgIHJldHVybiBfR2VuZXJhdG9yV3JhcHBlcihjb3JvKQorICAgICAgICAjICdjb3JvJyBpcyBlaXRoZXIgYW4gaW5zdGFuY2Ugb2YgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSBvcgorICAgICAgICAjIHNvbWUgb3RoZXIgb2JqZWN0IC0tIHBhc3MgaXQgdGhyb3VnaC4KKyAgICAgICAgcmV0dXJuIGNvcm8KKworICAgIHJldHVybiB3cmFwcGVkCisKKwogX19hbGxfXyA9IFtuIGZvciBuIGluIGdsb2JhbHMoKSBpZiBuWzoxXSAhPSAnXyddCmRpZmYgLS1naXQgYS9MaWIvdHlwaW5nLnB5IGIvTGliL3R5cGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTQ5ODJlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3R5cGluZy5weQpAQCAtMCwwICsxLDE2NDggQEAKKyMgVE9ETyBuaXRzOgorIyBHZXQgcmlkIG9mIGFzc2VydHMgdGhhdCBhcmUgdGhlIGNhbGxlcidzIGZhdWx0LgorIyBEb2NzdHJpbmdzIChlLmcuIEFCQ3MpLgorCitpbXBvcnQgYWJjCitmcm9tIGFiYyBpbXBvcnQgYWJzdHJhY3RtZXRob2QsIGFic3RyYWN0cHJvcGVydHkKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IHJlIGFzIHN0ZGxpYl9yZSAgIyBBdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgcmUgd2UgZXhwb3J0LgoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCit0cnk6CisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYyBhcyBjb2xsZWN0aW9uc19hYmMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMgYXMgY29sbGVjdGlvbnNfYWJjICAjIEZhbGxiYWNrIGZvciBQWTMuMi4KKworCisjIFBsZWFzZSBrZWVwIF9fYWxsX18gYWxwaGFiZXRpemVkIHdpdGhpbiBlYWNoIGNhdGVnb3J5LgorX19hbGxfXyA9IFsKKyAgICAjIFN1cGVyLXNwZWNpYWwgdHlwaW5nIHByaW1pdGl2ZXMuCisgICAgJ0FueScsCisgICAgJ0NhbGxhYmxlJywKKyAgICAnR2VuZXJpYycsCisgICAgJ09wdGlvbmFsJywKKyAgICAnVHlwZVZhcicsCisgICAgJ1VuaW9uJywKKyAgICAnVHVwbGUnLAorCisgICAgIyBBQkNzIChmcm9tIGNvbGxlY3Rpb25zLmFiYykuCisgICAgJ0Fic3RyYWN0U2V0JywgICMgY29sbGVjdGlvbnMuYWJjLlNldC4KKyAgICAnQnl0ZVN0cmluZycsCisgICAgJ0NvbnRhaW5lcicsCisgICAgJ0hhc2hhYmxlJywKKyAgICAnSXRlbXNWaWV3JywKKyAgICAnSXRlcmFibGUnLAorICAgICdJdGVyYXRvcicsCisgICAgJ0tleXNWaWV3JywKKyAgICAnTWFwcGluZycsCisgICAgJ01hcHBpbmdWaWV3JywKKyAgICAnTXV0YWJsZU1hcHBpbmcnLAorICAgICdNdXRhYmxlU2VxdWVuY2UnLAorICAgICdNdXRhYmxlU2V0JywKKyAgICAnU2VxdWVuY2UnLAorICAgICdTaXplZCcsCisgICAgJ1ZhbHVlc1ZpZXcnLAorCisgICAgIyBTdHJ1Y3R1cmFsIGNoZWNrcywgYS5rLmEuIHByb3RvY29scy4KKyAgICAnUmV2ZXJzaWJsZScsCisgICAgJ1N1cHBvcnRzQWJzJywKKyAgICAnU3VwcG9ydHNGbG9hdCcsCisgICAgJ1N1cHBvcnRzSW50JywKKyAgICAnU3VwcG9ydHNSb3VuZCcsCisKKyAgICAjIENvbmNyZXRlIGNvbGxlY3Rpb24gdHlwZXMuCisgICAgJ0RpY3QnLAorICAgICdMaXN0JywKKyAgICAnU2V0JywKKyAgICAnTmFtZWRUdXBsZScsICAjIE5vdCByZWFsbHkgYSB0eXBlLgorICAgICdHZW5lcmF0b3InLAorCisgICAgIyBPbmUtb2ZmIHRoaW5ncy4KKyAgICAnQW55U3RyJywKKyAgICAnY2FzdCcsCisgICAgJ2dldF90eXBlX2hpbnRzJywKKyAgICAnbm9fdHlwZV9jaGVjaycsCisgICAgJ25vX3R5cGVfY2hlY2tfZGVjb3JhdG9yJywKKyAgICAnb3ZlcmxvYWQnLAorCisgICAgIyBTdWJtb2R1bGVzLgorICAgICdpbycsCisgICAgJ3JlJywKK10KKworCitkZWYgX3F1YWxuYW1lKHgpOgorICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCAzKToKKyAgICAgICAgcmV0dXJuIHguX19xdWFsbmFtZV9fCisgICAgZWxzZToKKyAgICAgICAgIyBGYWxsIGJhY2sgdG8ganVzdCBuYW1lLgorICAgICAgICByZXR1cm4geC5fX25hbWVfXworCisKK2NsYXNzIFR5cGluZ01ldGEodHlwZSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBldmVyeSB0eXBlIGRlZmluZWQgYmVsb3cuCisKKyAgICBUaGlzIG92ZXJyaWRlcyBfX25ld19fKCkgdG8gcmVxdWlyZSBhbiBleHRyYSBrZXl3b3JkIHBhcmFtZXRlcgorICAgICdfcm9vdCcsIHdoaWNoIHNlcnZlcyBhcyBhIGd1YXJkIGFnYWluc3QgbmFpdmUgc3ViY2xhc3Npbmcgb2YgdGhlCisgICAgdHlwaW5nIGNsYXNzZXMuICBBbnkgbGVnaXRpbWF0ZSBjbGFzcyBkZWZpbmVkIHVzaW5nIGEgbWV0YWNsYXNzCisgICAgZGVyaXZlZCBmcm9tIFR5cGluZ01ldGEgKGluY2x1ZGluZyBpbnRlcm5hbCBzdWJjbGFzc2VzIGNyZWF0ZWQgYnkKKyAgICBlLmcuICBVbmlvbltYLCBZXSkgbXVzdCBwYXNzIF9yb290PVRydWUuCisKKyAgICBUaGlzIGFsc28gZGVmaW5lcyBhIGR1bW15IGNvbnN0cnVjdG9yIChhbGwgdGhlIHdvcmsgaXMgZG9uZSBpbgorICAgIF9fbmV3X18pIGFuZCBhIG5pY2VyIHJlcHIoKS4KKyAgICAiIiIKKworICAgIF9pc19wcm90b2NvbCA9IEZhbHNlCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICosIF9yb290PUZhbHNlKToKKyAgICAgICAgaWYgbm90IF9yb290OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3Qgc3ViY2xhc3MgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJywgJy5qb2luKG1hcChfdHlwZV9yZXByLCBiYXNlcykpIG9yICcoKScpKQorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIF9ldmFsX3R5cGUoc2VsZiwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgICAgICAiIiJPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8gaW50ZXJwcmV0IGZvcndhcmQgcmVmZXJlbmNlcy4KKworICAgICAgICBGb3IgZXhhbXBsZSwgVW5pb25bJ0MnXSBpcyBpbnRlcm5hbGx5IHN0b3JlZCBhcworICAgICAgICBVbmlvbltfRm9yd2FyZFJlZignQycpXSwgd2hpY2ggc2hvdWxkIGV2YWx1YXRlIHRvIF9VbmlvbltDXSwKKyAgICAgICAgd2hlcmUgQyBpcyBhbiBvYmplY3QgZm91bmQgaW4gZ2xvYmFsbnMgb3IgbG9jYWxucyAoc2VhcmNoaW5nCisgICAgICAgIGxvY2FsbnMgZmlyc3QsIG9mIGNvdXJzZSkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9oYXNfdHlwZV92YXIoc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLiVzJyAlIChzZWxmLl9fbW9kdWxlX18sIF9xdWFsbmFtZShzZWxmKSkKKworCitjbGFzcyBGaW5hbDoKKyAgICAiIiJNaXgtaW4gY2xhc3MgdG8gcHJldmVudCBpbnN0YW50aWF0aW9uLiIiIgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIGRlZiBfX25ld19fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBpbnN0YW50aWF0ZSAlciIgJSBzZWxmLl9fY2xhc3NfXykKKworCitjbGFzcyBfRm9yd2FyZFJlZihUeXBpbmdNZXRhKToKKyAgICAiIiJXcmFwcGVyIHRvIGhvbGQgYSBmb3J3YXJkIHJlZmVyZW5jZS4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgYXJnKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnLCBzdHIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdGb3J3YXJkUmVmIG11c3QgYmUgYSBzdHJpbmcgLS0gZ290ICVyJyAlIChhcmcsKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoYXJnLCAnPHN0cmluZz4nLCAnZXZhbCcpCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdGb3J3YXJkUmVmIG11c3QgYmUgYW4gZXhwcmVzc2lvbiAtLSBnb3QgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmcsKSkKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIGFyZywgKCksIHt9LCBfcm9vdD1UcnVlKQorICAgICAgICBzZWxmLl9fZm9yd2FyZF9hcmdfXyA9IGFyZworICAgICAgICBzZWxmLl9fZm9yd2FyZF9jb2RlX18gPSBjb2RlCisgICAgICAgIHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fID0gRmFsc2UKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfdmFsdWVfXyA9IE5vbmUKKyAgICAgICAgdHlwaW5nX2dsb2JhbHMgPSBnbG9iYWxzKCkKKyAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCisgICAgICAgIHdoaWxlIGZyYW1lIGlzIG5vdCBOb25lIGFuZCBmcmFtZS5mX2dsb2JhbHMgaXMgdHlwaW5nX2dsb2JhbHM6CisgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLmZfYmFjaworICAgICAgICBhc3NlcnQgZnJhbWUgaXMgbm90IE5vbmUKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfZnJhbWVfXyA9IGZyYW1lCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGxvY2FsbnMsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdGb3J3YXJkUmVmIGxvY2FsbnMgbXVzdCBiZSBhIGRpY3QgLS0gZ290ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsbnMsKSkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZ2xvYmFsbnMsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdGb3J3YXJkUmVmIGdsb2JhbG5zIG11c3QgYmUgYSBkaWN0IC0tIGdvdCAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnbG9iYWxucywpKQorICAgICAgICBpZiBub3Qgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX186CisgICAgICAgICAgICBpZiBnbG9iYWxucyBpcyBOb25lIGFuZCBsb2NhbG5zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZ2xvYmFsbnMgPSBsb2NhbG5zID0ge30KKyAgICAgICAgICAgIGVsaWYgZ2xvYmFsbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBnbG9iYWxucyA9IGxvY2FsbnMKKyAgICAgICAgICAgIGVsaWYgbG9jYWxucyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucworICAgICAgICAgICAgc2VsZi5fX2ZvcndhcmRfdmFsdWVfXyA9IF90eXBlX2NoZWNrKAorICAgICAgICAgICAgICAgIGV2YWwoc2VsZi5fX2ZvcndhcmRfY29kZV9fLCBnbG9iYWxucywgbG9jYWxucyksCisgICAgICAgICAgICAgICAgIkZvcndhcmQgcmVmZXJlbmNlcyBtdXN0IGV2YWx1YXRlIHRvIHR5cGVzLiIpCisgICAgICAgICAgICBzZWxmLl9fZm9yd2FyZF9ldmFsdWF0ZWRfXyA9IFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18KKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkZvcndhcmQgcmVmZXJlbmNlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIGlzaW5zdGFuY2UoKS4iKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9fZm9yd2FyZF9ldmFsdWF0ZWRfXzoKKyAgICAgICAgICAgIGdsb2JhbG5zID0gc2VsZi5fX2ZvcndhcmRfZnJhbWVfXy5mX2dsb2JhbHMKKyAgICAgICAgICAgIGxvY2FsbnMgPSBzZWxmLl9fZm9yd2FyZF9mcmFtZV9fLmZfbG9jYWxzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fZXZhbF90eXBlKGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UgICMgVG9vIGVhcmx5LgorICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhjbHMsIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18pCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnX0ZvcndhcmRSZWYoJXIpJyAlIChzZWxmLl9fZm9yd2FyZF9hcmdfXywpCisKKworY2xhc3MgX1R5cGVBbGlhczoKKyAgICAiIiJJbnRlcm5hbCBoZWxwZXIgY2xhc3MgZm9yIGRlZmluaW5nIGdlbmVyaWMgdmFyaWFudHMgb2YgY29uY3JldGUgdHlwZXMuCisKKyAgICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSB0eXBlOyBsZXQncyBjYWxsIGl0IGEgcHNldWRvLXR5cGUuICBJdCBjYW4KKyAgICBiZSB1c2VkIGluIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3MsIGUuZy4gaXNpbnN0YW5jZShtLCBNYXRjaCkKKyAgICBvciBpc3N1YmNsYXNzKHR5cGUobSksIE1hdGNoKS4gIEhvd2V2ZXIsIGl0IGNhbm5vdCBiZSBpdHNlbGYgdGhlCisgICAgdGFyZ2V0IG9mIGFuIGlzc3ViY2xhc3MoKSBjYWxsOyBlLmcuIGlzc3ViY2xhc3MoTWF0Y2gsIEMpIChmb3IKKyAgICBzb21lIGFyYml0cmFyeSBjbGFzcyBDKSByYWlzZXMgVHlwZUVycm9yIHJhdGhlciB0aGFuIHJldHVybmluZworICAgIEZhbHNlLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCduYW1lJywgJ3R5cGVfdmFyJywgJ2ltcGxfdHlwZScsICd0eXBlX2NoZWNrZXInKQorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgIiIiQ29uc3RydWN0b3IuCisKKyAgICAgICAgVGhpcyBvbmx5IGV4aXN0cyB0byBnaXZlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UgaW4gY2FzZQorICAgICAgICBzb21lb25lIHRyaWVzIHRvIHN1YmNsYXNzIGEgdHlwZSBhbGlhcyAobm90IGEgZ29vZCBpZGVhKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIChsZW4oYXJncykgPT0gMyBhbmQKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoYXJnc1swXSwgc3RyKSBhbmQKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoYXJnc1sxXSwgdHVwbGUpKToKKyAgICAgICAgICAgICMgQ2xvc2UgZW5vdWdoLgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJBIHR5cGUgYWxpYXMgY2Fubm90IGJlIHN1YmNsYXNzZWQiKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHR5cGVfdmFyLCBpbXBsX3R5cGUsIHR5cGVfY2hlY2tlcik6CisgICAgICAgICIiIkluaXRpYWxpemVyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBuYW1lOiBUaGUgbmFtZSwgZS5nLiAnUGF0dGVybicuCisgICAgICAgICAgICB0eXBlX3ZhcjogVGhlIHR5cGUgcGFyYW1ldGVyLCBlLmcuIEFueVN0ciwgb3IgdGhlCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgdHlwZSwgZS5nLiBzdHIuCisgICAgICAgICAgICBpbXBsX3R5cGU6IFRoZSBpbXBsZW1lbnRhdGlvbiB0eXBlLgorICAgICAgICAgICAgdHlwZV9jaGVja2VyOiBGdW5jdGlvbiB0aGF0IHRha2VzIGFuIGltcGxfdHlwZSBpbnN0YW5jZS4KKyAgICAgICAgICAgICAgICBhbmQgcmV0dXJucyBhIHZhbHVlIHRoYXQgc2hvdWxkIGJlIGEgdHlwZV92YXIgaW5zdGFuY2UuCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuYW1lLCBzdHIpLCByZXByKG5hbWUpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHR5cGVfdmFyLCB0eXBlKSwgcmVwcih0eXBlX3ZhcikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaW1wbF90eXBlLCB0eXBlKSwgcmVwcihpbXBsX3R5cGUpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShpbXBsX3R5cGUsIFR5cGluZ01ldGEpLCByZXByKGltcGxfdHlwZSkKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnR5cGVfdmFyID0gdHlwZV92YXIKKyAgICAgICAgc2VsZi5pbXBsX3R5cGUgPSBpbXBsX3R5cGUKKyAgICAgICAgc2VsZi50eXBlX2NoZWNrZXIgPSB0eXBlX2NoZWNrZXIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIlc1slc10iICUgKHNlbGYubmFtZSwgX3R5cGVfcmVwcihzZWxmLnR5cGVfdmFyKSkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbWV0ZXIpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXJhbWV0ZXIsIHR5cGUpLCByZXByKHBhcmFtZXRlcikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi50eXBlX3ZhciwgVHlwZVZhcik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGNhbm5vdCBiZSBmdXJ0aGVyIHBhcmFtZXRlcml6ZWQuIiAlIHNlbGYpCisgICAgICAgIGlmIHNlbGYudHlwZV92YXIuX19jb25zdHJhaW50c19fOgorICAgICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MocGFyYW1ldGVyLCBVbmlvbltzZWxmLnR5cGVfdmFyLl9fY29uc3RyYWludHNfX10pOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc3Vic3RpdHV0aW9uIGZvciAlcy4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFtZXRlciwgc2VsZi50eXBlX3ZhcikpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLm5hbWUsIHBhcmFtZXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW1wbF90eXBlLCBzZWxmLnR5cGVfY2hlY2tlcikKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgYWxpYXNlcyBjYW5ub3QgYmUgdXNlZCB3aXRoIGlzaW5zdGFuY2UoKS4iKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKGNscywgX1R5cGVBbGlhcyk6CisgICAgICAgICAgICAjIENvdmFyaWFuY2UuICBGb3Igbm93LCB3ZSBjb21wYXJlIGJ5IG5hbWUuCisgICAgICAgICAgICByZXR1cm4gKGNscy5uYW1lID09IHNlbGYubmFtZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhjbHMudHlwZV92YXIsIHNlbGYudHlwZV92YXIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBpcyB0b28gbGVuaWVudCwgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgICMgaW1wbGVtZW50YXRpb24gdHlwZSBkb2Vzbid0IGNhcnJ5IGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgICAgICAjIHdoZXRoZXIgaXQgaXMgYWJvdXQgYnl0ZXMgb3Igc3RyIChmb3IgZXhhbXBsZSkuCisgICAgICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhjbHMsIHNlbGYuaW1wbF90eXBlKQorCisKK2RlZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgIHJldHVybiB0IGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKHQsIFR5cGluZ01ldGEpIGFuZCB0Ll9oYXNfdHlwZV92YXIoKQorCisKK2RlZiBfZXZhbF90eXBlKHQsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICBpZiBpc2luc3RhbmNlKHQsIFR5cGluZ01ldGEpOgorICAgICAgICByZXR1cm4gdC5fZXZhbF90eXBlKGdsb2JhbG5zLCBsb2NhbG5zKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiB0CisKKworZGVmIF90eXBlX2NoZWNrKGFyZywgbXNnKToKKyAgICAiIiJDaGVjayB0aGF0IHRoZSBhcmd1bWVudCBpcyBhIHR5cGUsIGFuZCByZXR1cm4gaXQuCisKKyAgICBBcyBhIHNwZWNpYWwgY2FzZSwgYWNjZXB0IE5vbmUgYW5kIHJldHVybiB0eXBlKE5vbmUpIGluc3RlYWQuCisgICAgQWxzbywgX1R5cGVBbGlhcyBpbnN0YW5jZXMgKGUuZy4gTWF0Y2gsIFBhdHRlcm4pIGFyZSBhY2NlcHRhYmxlLgorCisgICAgVGhlIG1zZyBhcmd1bWVudCBpcyBhIGh1bWFuLXJlYWRhYmxlIGVycm9yIG1lc3NhZ2UsIGUuZy4KKworICAgICAgICAiVW5pb25bYXJnLCAuLi5dOiBhcmcgc2hvdWxkIGJlIGEgdHlwZS4iCisKKyAgICBXZSBhcHBlbmQgdGhlIHJlcHIoKSBvZiB0aGUgYWN0dWFsIHZhbHVlICh0cnVuY2F0ZWQgdG8gMTAwIGNoYXJzKS4KKyAgICAiIiIKKyAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIHR5cGUoTm9uZSkKKyAgICBpZiBpc2luc3RhbmNlKGFyZywgc3RyKToKKyAgICAgICAgYXJnID0gX0ZvcndhcmRSZWYoYXJnKQorICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgKHR5cGUsIF9UeXBlQWxpYXMpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZyArICIgR290ICUuMTAwci4iICUgKGFyZywpKQorICAgIHJldHVybiBhcmcKKworCitkZWYgX3R5cGVfcmVwcihvYmopOgorICAgICIiIlJldHVybiB0aGUgcmVwcigpIG9mIGFuIG9iamVjdCwgc3BlY2lhbC1jYXNpbmcgdHlwZXMuCisKKyAgICBJZiBvYmogaXMgYSB0eXBlLCB3ZSByZXR1cm4gYSBzaG9ydGVyIHZlcnNpb24gdGhhbiB0aGUgZGVmYXVsdAorICAgIHR5cGUuX19yZXByX18sIGJhc2VkIG9uIHRoZSBtb2R1bGUgYW5kIHF1YWxpZmllZCBuYW1lLCB3aGljaCBpcworICAgIHR5cGljYWxseSBlbm91Z2ggdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSB0eXBlLiAgRm9yIGV2ZXJ5dGhpbmcKKyAgICBlbHNlLCB3ZSBmYWxsIGJhY2sgb24gcmVwcihvYmopLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBhbmQgbm90IGlzaW5zdGFuY2Uob2JqLCBUeXBpbmdNZXRhKToKKyAgICAgICAgaWYgb2JqLl9fbW9kdWxlX18gPT0gJ2J1aWx0aW5zJzoKKyAgICAgICAgICAgIHJldHVybiBfcXVhbG5hbWUob2JqKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAob2JqLl9fbW9kdWxlX18sIF9xdWFsbmFtZShvYmopKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiByZXByKG9iaikKKworCitjbGFzcyBBbnlNZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgQW55LiIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkFueSBjYW5ub3QgYmUgdXNlZCB3aXRoIGlzaW5zdGFuY2UoKS4iKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpICAjIFRvIFR5cGVFcnJvci4KKyAgICAgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBBbnkoRmluYWwsIG1ldGFjbGFzcz1BbnlNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJTcGVjaWFsIHR5cGUgaW5kaWNhdGluZyBhbiB1bmNvbnN0cmFpbmVkIHR5cGUuCisKKyAgICAtIEFueSBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgQW55LgorICAgIC0gQW55IGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgQW55LgorICAgIC0gQXMgYSBzcGVjaWFsIGNhc2UsIEFueSBhbmQgb2JqZWN0IGFyZSBzdWJjbGFzc2VzIG9mIGVhY2ggb3RoZXIuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2NsYXNzIFR5cGVWYXIoVHlwaW5nTWV0YSwgbWV0YWNsYXNzPVR5cGluZ01ldGEsIF9yb290PVRydWUpOgorICAgICIiIlR5cGUgdmFyaWFibGUuCisKKyAgICBVc2FnZTo6CisKKyAgICAgIFQgPSBUeXBlVmFyKCdUJykgICMgQ2FuIGJlIGFueXRoaW5nCisgICAgICBBID0gVHlwZVZhcignQScsIHN0ciwgYnl0ZXMpICAjIE11c3QgYmUgc3RyIG9yIGJ5dGVzCisKKyAgICBUeXBlIHZhcmlhYmxlcyBleGlzdCBwcmltYXJpbHkgZm9yIHRoZSBiZW5lZml0IG9mIHN0YXRpYyB0eXBlCisgICAgY2hlY2tlcnMuICBUaGV5IHNlcnZlIGFzIHRoZSBwYXJhbWV0ZXJzIGZvciBnZW5lcmljIHR5cGVzIGFzIHdlbGwKKyAgICBhcyBmb3IgZ2VuZXJpYyBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFNlZSBjbGFzcyBHZW5lcmljIGZvciBtb3JlCisgICAgaW5mb3JtYXRpb24gb24gZ2VuZXJpYyB0eXBlcy4gIEdlbmVyaWMgZnVuY3Rpb25zIHdvcmsgYXMgZm9sbG93czoKKworICAgICAgZGVmIHJlcGVhdCh4OiBULCBuOiBpbnQpIC0+IFNlcXVlbmNlW1RdOgorICAgICAgICAgICcnJ1JldHVybiBhIGxpc3QgY29udGFpbmluZyBuIHJlZmVyZW5jZXMgdG8geC4nJycKKyAgICAgICAgICByZXR1cm4gW3hdKm4KKworICAgICAgZGVmIGxvbmdlc3QoeDogQSwgeTogQSkgLT4gQToKKyAgICAgICAgICAnJydSZXR1cm4gdGhlIGxvbmdlc3Qgb2YgdHdvIHN0cmluZ3MuJycnCisgICAgICAgICAgcmV0dXJuIHggaWYgbGVuKHgpID49IGxlbih5KSBlbHNlIHkKKworICAgIFRoZSBsYXR0ZXIgZXhhbXBsZSdzIHNpZ25hdHVyZSBpcyBlc3NlbnRpYWxseSB0aGUgb3ZlcmxvYWRpbmcKKyAgICBvZiAoc3RyLCBzdHIpIC0+IHN0ciBhbmQgKGJ5dGVzLCBieXRlcykgLT4gYnl0ZXMuICBBbHNvIG5vdGUKKyAgICB0aGF0IGlmIHRoZSBhcmd1bWVudHMgYXJlIGluc3RhbmNlcyBvZiBzb21lIHN1YmNsYXNzIG9mIHN0ciwKKyAgICB0aGUgcmV0dXJuIHR5cGUgaXMgc3RpbGwgcGxhaW4gc3RyLgorCisgICAgQXQgcnVudGltZSwgaXNpbnN0YW5jZSh4LCBUKSB3aWxsIHJhaXNlIFR5cGVFcnJvci4gIEhvd2V2ZXIsCisgICAgaXNzdWJjbGFzcyhDLCBUKSBpcyB0cnVlIGZvciBhbnkgY2xhc3MgQywgYW5kIGlzc3ViY2xhc3Moc3RyLCBBKQorICAgIGFuZCBpc3N1YmNsYXNzKGJ5dGVzLCBBKSBhcmUgdHJ1ZSwgYW5kIGlzc3ViY2xhc3MoaW50LCBBKSBpcworICAgIGZhbHNlLgorCisgICAgVHlwZSB2YXJpYWJsZXMgbWF5IGJlIG1hcmtlZCBjb3ZhcmlhbnQgb3IgY29udHJhdmFyaWFudCBieSBwYXNzaW5nCisgICAgY292YXJpYW50PVRydWUgb3IgY29udHJhdmFyaWFudD1UcnVlLiAgU2VlIFBFUCA0ODQgZm9yIG1vcmUKKyAgICBkZXRhaWxzLiAgQnkgZGVmYXVsdCB0eXBlIHZhcmlhYmxlcyBhcmUgaW52YXJpYW50LgorCisgICAgVHlwZSB2YXJpYWJsZXMgY2FuIGJlIGludHJvc3BlY3RlZC4gZS5nLjoKKworICAgICAgVC5fX25hbWVfXyA9PSAnVCcKKyAgICAgIFQuX19jb25zdHJhaW50c19fID09ICgpCisgICAgICBULl9fY292YXJpYW50X18gPT0gRmFsc2UKKyAgICAgIFQuX19jb250cmF2YXJpYW50X18gPSBGYWxzZQorICAgICAgQS5fX2NvbnN0cmFpbnRzX18gPT0gKHN0ciwgYnl0ZXMpCisgICAgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsICpjb25zdHJhaW50cywgYm91bmQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBjb3ZhcmlhbnQ9RmFsc2UsIGNvbnRyYXZhcmlhbnQ9RmFsc2UpOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgKEZpbmFsLCksIHt9LCBfcm9vdD1UcnVlKQorICAgICAgICBpZiBjb3ZhcmlhbnQgYW5kIGNvbnRyYXZhcmlhbnQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCaXZhcmlhbnQgdHlwZSB2YXJpYWJsZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIikKKyAgICAgICAgc2VsZi5fX2NvdmFyaWFudF9fID0gYm9vbChjb3ZhcmlhbnQpCisgICAgICAgIHNlbGYuX19jb250cmF2YXJpYW50X18gPSBib29sKGNvbnRyYXZhcmlhbnQpCisgICAgICAgIGlmIGNvbnN0cmFpbnRzIGFuZCBib3VuZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ29uc3RyYWludHMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggYm91bmQ9Li4uIikKKyAgICAgICAgaWYgY29uc3RyYWludHMgYW5kIGxlbihjb25zdHJhaW50cykgPT0gMToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQSBzaW5nbGUgY29uc3RyYWludCBpcyBub3QgYWxsb3dlZCIpCisgICAgICAgIG1zZyA9ICJUeXBlVmFyKG5hbWUsIGNvbnN0cmFpbnQsIC4uLik6IGNvbnN0cmFpbnRzIG11c3QgYmUgdHlwZXMuIgorICAgICAgICBzZWxmLl9fY29uc3RyYWludHNfXyA9IHR1cGxlKF90eXBlX2NoZWNrKHQsIG1zZykgZm9yIHQgaW4gY29uc3RyYWludHMpCisgICAgICAgIGlmIGJvdW5kOgorICAgICAgICAgICAgc2VsZi5fX2JvdW5kX18gPSBfdHlwZV9jaGVjayhib3VuZCwgIkJvdW5kIG11c3QgYmUgYSB0eXBlLiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9fYm91bmRfXyA9IE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fY292YXJpYW50X186CisgICAgICAgICAgICBwcmVmaXggPSAnKycKKyAgICAgICAgZWxpZiBzZWxmLl9fY29udHJhdmFyaWFudF9fOgorICAgICAgICAgICAgcHJlZml4ID0gJy0nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSAnficKKyAgICAgICAgcmV0dXJuIHByZWZpeCArIHNlbGYuX19uYW1lX18KKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSB2YXJpYWJsZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICAjIFRPRE86IE1ha2UgdGhpcyByYWlzZSBUeXBlRXJyb3IgdG9vPworICAgICAgICBpZiBjbHMgaXMgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLl9fYm91bmRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5fX2JvdW5kX18pCisgICAgICAgIGlmIHNlbGYuX19jb25zdHJhaW50c19fOgorICAgICAgICAgICAgcmV0dXJuIGFueShpc3N1YmNsYXNzKGNscywgYykgZm9yIGMgaW4gc2VsZi5fX2NvbnN0cmFpbnRzX18pCisgICAgICAgIHJldHVybiBUcnVlCisKKworIyBTb21lIHVuY29uc3RyYWluZWQgdHlwZSB2YXJpYWJsZXMuICBUaGVzZSBhcmUgdXNlZCBieSB0aGUgY29udGFpbmVyIHR5cGVzLgorVCA9IFR5cGVWYXIoJ1QnKSAgIyBBbnkgdHlwZS4KK0tUID0gVHlwZVZhcignS1QnKSAgIyBLZXkgdHlwZS4KK1ZUID0gVHlwZVZhcignVlQnKSAgIyBWYWx1ZSB0eXBlLgorVF9jbyA9IFR5cGVWYXIoJ1RfY28nLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgQW55IHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuCitWX2NvID0gVHlwZVZhcignVl9jbycsIGNvdmFyaWFudD1UcnVlKSAgIyBBbnkgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KK1ZUX2NvID0gVHlwZVZhcignVlRfY28nLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgVmFsdWUgdHlwZSBjb3ZhcmlhbnQgY29udGFpbmVycy4KK1RfY29udHJhID0gVHlwZVZhcignVF9jb250cmEnLCBjb250cmF2YXJpYW50PVRydWUpICAjIERpdHRvIGNvbnRyYXZhcmlhbnQuCisKKyMgQSB1c2VmdWwgdHlwZSB2YXJpYWJsZSB3aXRoIGNvbnN0cmFpbnRzLiAgVGhpcyByZXByZXNlbnRzIHN0cmluZyB0eXBlcy4KKyMgVE9ETzogV2hhdCBhYm91dCBieXRlYXJyYXksIG1lbW9yeXZpZXc/CitBbnlTdHIgPSBUeXBlVmFyKCdBbnlTdHInLCBieXRlcywgc3RyKQorCisKK2NsYXNzIFVuaW9uTWV0YShUeXBpbmdNZXRhKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIFVuaW9uLiIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBwYXJhbWV0ZXJzPU5vbmUsIF9yb290PUZhbHNlKToKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzLCB0dXBsZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkV4cGVjdGVkIHBhcmFtZXRlcnM9PHR1cGxlPiIpCisgICAgICAgICMgRmxhdHRlbiBvdXQgVW5pb25bVW5pb25bLi4uXSwgLi4uXSBhbmQgdHlwZS1jaGVjayBub24tVW5pb24gYXJncy4KKyAgICAgICAgcGFyYW1zID0gW10KKyAgICAgICAgbXNnID0gIlVuaW9uW2FyZywgLi4uXTogZWFjaCBhcmcgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwLCBVbmlvbk1ldGEpOgorICAgICAgICAgICAgICAgIHBhcmFtcy5leHRlbmQocC5fX3VuaW9uX3BhcmFtc19fKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKF90eXBlX2NoZWNrKHAsIG1zZykpCisgICAgICAgICMgV2VlZCBvdXQgc3RyaWN0IGR1cGxpY2F0ZXMsIHByZXNlcnZpbmcgdGhlIGZpcnN0IG9mIGVhY2ggb2NjdXJyZW5jZS4KKyAgICAgICAgYWxsX3BhcmFtcyA9IHNldChwYXJhbXMpCisgICAgICAgIGlmIGxlbihhbGxfcGFyYW1zKSA8IGxlbihwYXJhbXMpOgorICAgICAgICAgICAgbmV3X3BhcmFtcyA9IFtdCisgICAgICAgICAgICBmb3IgdCBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgaWYgdCBpbiBhbGxfcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICBuZXdfcGFyYW1zLmFwcGVuZCh0KQorICAgICAgICAgICAgICAgICAgICBhbGxfcGFyYW1zLnJlbW92ZSh0KQorICAgICAgICAgICAgcGFyYW1zID0gbmV3X3BhcmFtcworICAgICAgICAgICAgYXNzZXJ0IG5vdCBhbGxfcGFyYW1zLCBhbGxfcGFyYW1zCisgICAgICAgICMgV2VlZCBvdXQgc3ViY2xhc3Nlcy4KKyAgICAgICAgIyBFLmcuIFVuaW9uW2ludCwgRW1wbG95ZWUsIE1hbmFnZXJdID09IFVuaW9uW2ludCwgRW1wbG95ZWVdLgorICAgICAgICAjIElmIEFueSBvciBvYmplY3QgaXMgcHJlc2VudCBpdCB3aWxsIGJlIHRoZSBzb2xlIHN1cnZpdm9yLgorICAgICAgICAjIElmIGJvdGggQW55IGFuZCBvYmplY3QgYXJlIHByZXNlbnQsIEFueSB3aW5zLgorICAgICAgICAjIE5ldmVyIGRpc2NhcmQgdHlwZSB2YXJpYWJsZXMsIGV4Y2VwdCBhZ2FpbnN0IEFueS4KKyAgICAgICAgIyAoSW4gcGFydGljdWxhciwgVW5pb25bc3RyLCBBbnlTdHJdICE9IEFueVN0ci4pCisgICAgICAgIGFsbF9wYXJhbXMgPSBzZXQocGFyYW1zKQorICAgICAgICBmb3IgdDEgaW4gcGFyYW1zOgorICAgICAgICAgICAgaWYgdDEgaXMgQW55OgorICAgICAgICAgICAgICAgIHJldHVybiBBbnkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodDEsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBhbnkoaXNzdWJjbGFzcyh0MSwgdDIpCisgICAgICAgICAgICAgICAgICAgZm9yIHQyIGluIGFsbF9wYXJhbXMgLSB7dDF9IGlmIG5vdCBpc2luc3RhbmNlKHQyLCBUeXBlVmFyKSk6CisgICAgICAgICAgICAgICAgYWxsX3BhcmFtcy5yZW1vdmUodDEpCisgICAgICAgICMgSXQncyBub3QgYSB1bmlvbiBpZiB0aGVyZSdzIG9ubHkgb25lIHR5cGUgbGVmdC4KKyAgICAgICAgaWYgbGVuKGFsbF9wYXJhbXMpID09IDE6CisgICAgICAgICAgICByZXR1cm4gYWxsX3BhcmFtcy5wb3AoKQorICAgICAgICAjIENyZWF0ZSBhIG5ldyBjbGFzcyB3aXRoIHRoZXNlIHBhcmFtcy4KKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCB7fSwgX3Jvb3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5fX3VuaW9uX3BhcmFtc19fID0gdHVwbGUodCBmb3IgdCBpbiBwYXJhbXMgaWYgdCBpbiBhbGxfcGFyYW1zKQorICAgICAgICBzZWxmLl9fdW5pb25fc2V0X3BhcmFtc19fID0gZnJvemVuc2V0KHNlbGYuX191bmlvbl9wYXJhbXNfXykKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfZXZhbF90eXBlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICAgICAgcCA9IHR1cGxlKF9ldmFsX3R5cGUodCwgZ2xvYmFsbnMsIGxvY2FsbnMpCisgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX18pCisgICAgICAgIGlmIHAgPT0gc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fdW5pb25fcGFyYW1zX186CisgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHIgPSBzdXBlcigpLl9fcmVwcl9fKCkKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoJywgJy5qb2luKF90eXBlX3JlcHIodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX18pKQorICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtZXRlcnMpOgorICAgICAgICBpZiBzZWxmLl9fdW5pb25fcGFyYW1zX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbm5vdCBzdWJzY3JpcHQgYW4gZXhpc3RpbmcgVW5pb24uIFVzZSBVbmlvblt1LCB0XSBpbnN0ZWFkLiIpCisgICAgICAgIGlmIHBhcmFtZXRlcnMgPT0gKCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCB0YWtlIGEgVW5pb24gb2Ygbm8gdHlwZXMuIikKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IChwYXJhbWV0ZXJzLCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChzZWxmLl9fZGljdF9fKSwgcGFyYW1ldGVycywgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVW5pb25NZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXyA9PSBvdGhlci5fX3VuaW9uX3NldF9wYXJhbXNfXworCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9fdW5pb25fc2V0X3BhcmFtc19fKQorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5pb25zIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX191bmlvbl9wYXJhbXNfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2UoY2xzLCBVbmlvbk1ldGEpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjbHMsIFVuaW9uTWV0YSk6CisgICAgICAgICAgICBpZiBjbHMuX191bmlvbl9wYXJhbXNfXyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIGFsbChpc3N1YmNsYXNzKGMsIHNlbGYpIGZvciBjIGluIChjbHMuX191bmlvbl9wYXJhbXNfXykpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjbHMsIFR5cGVWYXIpOgorICAgICAgICAgICAgaWYgY2xzIGluIHNlbGYuX191bmlvbl9wYXJhbXNfXzoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgY2xzLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhVbmlvbltjbHMuX19jb25zdHJhaW50c19fXSwgc2VsZikKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGFueShpc3N1YmNsYXNzKGNscywgdCkgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKQorCisKK2NsYXNzIFVuaW9uKEZpbmFsLCBtZXRhY2xhc3M9VW5pb25NZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJVbmlvbiB0eXBlOyBVbmlvbltYLCBZXSBtZWFucyBlaXRoZXIgWCBvciBZLgorCisgICAgVG8gZGVmaW5lIGEgdW5pb24sIHVzZSBlLmcuIFVuaW9uW2ludCwgc3RyXS4gIERldGFpbHM6CisKKyAgICAtIFRoZSBhcmd1bWVudHMgbXVzdCBiZSB0eXBlcyBhbmQgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUuCisKKyAgICAtIE5vbmUgYXMgYW4gYXJndW1lbnQgaXMgYSBzcGVjaWFsIGNhc2UgYW5kIGlzIHJlcGxhY2VkIGJ5CisgICAgICB0eXBlKE5vbmUpLgorCisgICAgLSBVbmlvbnMgb2YgdW5pb25zIGFyZSBmbGF0dGVuZWQsIGUuZy46OgorCisgICAgICAgIFVuaW9uW1VuaW9uW2ludCwgc3RyXSwgZmxvYXRdID09IFVuaW9uW2ludCwgc3RyLCBmbG9hdF0KKworICAgIC0gVW5pb25zIG9mIGEgc2luZ2xlIGFyZ3VtZW50IHZhbmlzaCwgZS5nLjo6CisKKyAgICAgICAgVW5pb25baW50XSA9PSBpbnQgICMgVGhlIGNvbnN0cnVjdG9yIGFjdHVhbGx5IHJldHVybnMgaW50CisKKyAgICAtIFJlZHVuZGFudCBhcmd1bWVudHMgYXJlIHNraXBwZWQsIGUuZy46OgorCisgICAgICAgIFVuaW9uW2ludCwgc3RyLCBpbnRdID09IFVuaW9uW2ludCwgc3RyXQorCisgICAgLSBXaGVuIGNvbXBhcmluZyB1bmlvbnMsIHRoZSBhcmd1bWVudCBvcmRlciBpcyBpZ25vcmVkLCBlLmcuOjoKKworICAgICAgICBVbmlvbltpbnQsIHN0cl0gPT0gVW5pb25bc3RyLCBpbnRdCisKKyAgICAtIFdoZW4gdHdvIGFyZ3VtZW50cyBoYXZlIGEgc3ViY2xhc3MgcmVsYXRpb25zaGlwLCB0aGUgbGVhc3QKKyAgICAgIGRlcml2ZWQgYXJndW1lbnQgaXMga2VwdCwgZS5nLjo6CisKKyAgICAgICAgY2xhc3MgRW1wbG95ZWU6IHBhc3MKKyAgICAgICAgY2xhc3MgTWFuYWdlcihFbXBsb3llZSk6IHBhc3MKKyAgICAgICAgVW5pb25baW50LCBFbXBsb3llZSwgTWFuYWdlcl0gPT0gVW5pb25baW50LCBFbXBsb3llZV0KKyAgICAgICAgVW5pb25bTWFuYWdlciwgaW50LCBFbXBsb3llZV0gPT0gVW5pb25baW50LCBFbXBsb3llZV0KKyAgICAgICAgVW5pb25bRW1wbG95ZWUsIE1hbmFnZXJdID09IEVtcGxveWVlCisKKyAgICAtIENvcm9sbGFyeTogaWYgQW55IGlzIHByZXNlbnQgaXQgaXMgdGhlIHNvbGUgc3Vydml2b3IsIGUuZy46OgorCisgICAgICAgIFVuaW9uW2ludCwgQW55XSA9PSBBbnkKKworICAgIC0gU2ltaWxhciBmb3Igb2JqZWN0OjoKKworICAgICAgICBVbmlvbltpbnQsIG9iamVjdF0gPT0gb2JqZWN0CisKKyAgICAtIFRvIGN1dCBhIHRpZTogVW5pb25bb2JqZWN0LCBBbnldID09IFVuaW9uW0FueSwgb2JqZWN0XSA9PSBBbnkuCisKKyAgICAtIFlvdSBjYW5ub3Qgc3ViY2xhc3Mgb3IgaW5zdGFudGlhdGUgYSB1bmlvbi4KKworICAgIC0gWW91IGNhbm5vdCB3cml0ZSBVbmlvbltYXVtZXSAod2hhdCB3b3VsZCBpdCBtZWFuPykuCisKKyAgICAtIFlvdSBjYW4gdXNlIE9wdGlvbmFsW1hdIGFzIGEgc2hvcnRoYW5kIGZvciBVbmlvbltYLCBOb25lXS4KKyAgICAiIiIKKworICAgICMgVW5zdWJzY3JpcHRlZCBVbmlvbiB0eXBlIGhhcyBwYXJhbXMgc2V0IHRvIE5vbmUuCisgICAgX191bmlvbl9wYXJhbXNfXyA9IE5vbmUKKyAgICBfX3VuaW9uX3NldF9wYXJhbXNfXyA9IE5vbmUKKworCitjbGFzcyBPcHRpb25hbE1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBPcHRpb25hbC4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9RmFsc2UpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9X3Jvb3QpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgYXJnKToKKyAgICAgICAgYXJnID0gX3R5cGVfY2hlY2soYXJnLCAiT3B0aW9uYWxbdF0gcmVxdWlyZXMgYSBzaW5nbGUgdHlwZS4iKQorICAgICAgICByZXR1cm4gVW5pb25bYXJnLCB0eXBlKE5vbmUpXQorCisKK2NsYXNzIE9wdGlvbmFsKEZpbmFsLCBtZXRhY2xhc3M9T3B0aW9uYWxNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJPcHRpb25hbCB0eXBlLgorCisgICAgT3B0aW9uYWxbWF0gaXMgZXF1aXZhbGVudCB0byBVbmlvbltYLCB0eXBlKE5vbmUpXS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgVHVwbGVNZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgVHVwbGUuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIHBhcmFtZXRlcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICB1c2VfZWxsaXBzaXM9RmFsc2UsIF9yb290PUZhbHNlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICBzZWxmLl9fdHVwbGVfcGFyYW1zX18gPSBwYXJhbWV0ZXJzCisgICAgICAgIHNlbGYuX190dXBsZV91c2VfZWxsaXBzaXNfXyA9IHVzZV9lbGxpcHNpcworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9oYXNfdHlwZV92YXIoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXzoKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX190dXBsZV9wYXJhbXNfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfZXZhbF90eXBlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICAgICAgdHAgPSBzZWxmLl9fdHVwbGVfcGFyYW1zX18KKyAgICAgICAgaWYgdHAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIHAgPSB0dXBsZShfZXZhbF90eXBlKHQsIGdsb2JhbG5zLCBsb2NhbG5zKSBmb3IgdCBpbiB0cCkKKyAgICAgICAgaWYgcCA9PSBzZWxmLl9fdHVwbGVfcGFyYW1zX186CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBfcm9vdD1UcnVlKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByID0gc3VwZXIoKS5fX3JlcHJfXygpCisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBhcmFtcyA9IFtfdHlwZV9yZXByKHApIGZvciBwIGluIHNlbGYuX190dXBsZV9wYXJhbXNfX10KKyAgICAgICAgICAgIGlmIHNlbGYuX190dXBsZV91c2VfZWxsaXBzaXNfXzoKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCcuLi4nKQorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKHBhcmFtcykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1ldGVycyk6CisgICAgICAgIGlmIHNlbGYuX190dXBsZV9wYXJhbXNfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHJlLXBhcmFtZXRlcml6ZSAlciIgJSAoc2VsZiwpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzLCB0dXBsZSk6CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gKHBhcmFtZXRlcnMsKQorICAgICAgICBpZiBsZW4ocGFyYW1ldGVycykgPT0gMiBhbmQgcGFyYW1ldGVyc1sxXSA9PSBFbGxpcHNpczoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzWzoxXQorICAgICAgICAgICAgdXNlX2VsbGlwc2lzID0gVHJ1ZQorICAgICAgICAgICAgbXNnID0gIlR1cGxlW3QsIC4uLl06IHQgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdXNlX2VsbGlwc2lzID0gRmFsc2UKKyAgICAgICAgICAgIG1zZyA9ICJUdXBsZVt0MCwgdDEsIC4uLl06IGVhY2ggdCBtdXN0IGJlIGEgdHlwZS4iCisgICAgICAgIHBhcmFtZXRlcnMgPSB0dXBsZShfdHlwZV9jaGVjayhwLCBtc2cpIGZvciBwIGluIHBhcmFtZXRlcnMpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksIHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfZWxsaXBzaXM9dXNlX2VsbGlwc2lzLCBfcm9vdD1UcnVlKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBUdXBsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gPT0gb3RoZXIuX190dXBsZV9wYXJhbXNfXworCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9fdHVwbGVfcGFyYW1zX18pCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUdXBsZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCB0eXBlKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykgICMgVG8gVHlwZUVycm9yLgorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdHVwbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUgICMgU3BlY2lhbCBjYXNlLgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIFR1cGxlTWV0YSk6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpICAjIEZhbHNlLgorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIGNscy5fX3R1cGxlX3BhcmFtc19fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UgICMgPz8/CisgICAgICAgIGlmIGNscy5fX3R1cGxlX3VzZV9lbGxpcHNpc19fICE9IHNlbGYuX190dXBsZV91c2VfZWxsaXBzaXNfXzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIENvdmFyaWFuY2UuCisgICAgICAgIHJldHVybiAobGVuKHNlbGYuX190dXBsZV9wYXJhbXNfXykgPT0gbGVuKGNscy5fX3R1cGxlX3BhcmFtc19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbGwoaXNzdWJjbGFzcyh4LCBwKQorICAgICAgICAgICAgICAgICAgICBmb3IgeCwgcCBpbiB6aXAoY2xzLl9fdHVwbGVfcGFyYW1zX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fdHVwbGVfcGFyYW1zX18pKSkKKworCitjbGFzcyBUdXBsZShGaW5hbCwgbWV0YWNsYXNzPVR1cGxlTWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiVHVwbGUgdHlwZTsgVHVwbGVbWCwgWV0gaXMgdGhlIGNyb3NzLXByb2R1Y3QgdHlwZSBvZiBYIGFuZCBZLgorCisgICAgRXhhbXBsZTogVHVwbGVbVDEsIFQyXSBpcyBhIHR1cGxlIG9mIHR3byBlbGVtZW50cyBjb3JyZXNwb25kaW5nCisgICAgdG8gdHlwZSB2YXJpYWJsZXMgVDEgYW5kIFQyLiAgVHVwbGVbaW50LCBmbG9hdCwgc3RyXSBpcyBhIHR1cGxlCisgICAgb2YgYW4gaW50LCBhIGZsb2F0IGFuZCBhIHN0cmluZy4KKworICAgIFRvIHNwZWNpZnkgYSB2YXJpYWJsZS1sZW5ndGggdHVwbGUgb2YgaG9tb2dlbmVvdXMgdHlwZSwgdXNlIFNlcXVlbmNlW1RdLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBDYWxsYWJsZU1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBDYWxsYWJsZS4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9RmFsc2UsCisgICAgICAgICAgICAgICAgYXJncz1Ob25lLCByZXN1bHQ9Tm9uZSk6CisgICAgICAgIGlmIGFyZ3MgaXMgTm9uZSBhbmQgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgICAgICBwYXNzICAjIE11c3QgYmUgJ2NsYXNzIENhbGxhYmxlJy4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGFyZ3MgaXMgbm90IEVsbGlwc2lzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3MsIGxpc3QpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbGxhYmxlW2FyZ3MsIHJlc3VsdF06ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmdzIG11c3QgYmUgYSBsaXN0LiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgR290ICUuMTAwci4iICUgKGFyZ3MsKSkKKyAgICAgICAgICAgICAgICBtc2cgPSAiQ2FsbGFibGVbW2FyZywgLi4uXSwgcmVzdWx0XTogZWFjaCBhcmcgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICAgICAgICAgIGFyZ3MgPSB0dXBsZShfdHlwZV9jaGVjayhhcmcsIG1zZykgZm9yIGFyZyBpbiBhcmdzKQorICAgICAgICAgICAgbXNnID0gIkNhbGxhYmxlW2FyZ3MsIHJlc3VsdF06IHJlc3VsdCBtdXN0IGJlIGEgdHlwZS4iCisgICAgICAgICAgICByZXN1bHQgPSBfdHlwZV9jaGVjayhyZXN1bHQsIG1zZykKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorICAgICAgICBzZWxmLl9fYXJnc19fID0gYXJncworICAgICAgICBzZWxmLl9fcmVzdWx0X18gPSByZXN1bHQKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX2FyZ3NfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gX2hhc190eXBlX3ZhcihzZWxmLl9fcmVzdWx0X18pCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIGlmIHNlbGYuX19hcmdzX18gaXMgTm9uZSBhbmQgc2VsZi5fX3Jlc3VsdF9fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIEVsbGlwc2lzOgorICAgICAgICAgICAgYXJncyA9IHNlbGYuX19hcmdzX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZ3MgPSBbX2V2YWxfdHlwZSh0LCBnbG9iYWxucywgbG9jYWxucykgZm9yIHQgaW4gc2VsZi5fX2FyZ3NfX10KKyAgICAgICAgcmVzdWx0ID0gX2V2YWxfdHlwZShzZWxmLl9fcmVzdWx0X18sIGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICBpZiBhcmdzID09IHNlbGYuX19hcmdzX18gYW5kIHJlc3VsdCA9PSBzZWxmLl9fcmVzdWx0X186CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPWFyZ3MsIHJlc3VsdD1yZXN1bHQsIF9yb290PVRydWUpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHIgPSBzdXBlcigpLl9fcmVwcl9fKCkKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBub3QgTm9uZSBvciBzZWxmLl9fcmVzdWx0X18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIEVsbGlwc2lzOgorICAgICAgICAgICAgICAgIGFyZ3NfciA9ICcuLi4nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3NfciA9ICdbJXNdJyAlICcsICcuam9pbihfdHlwZV9yZXByKHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX19hcmdzX18pCisgICAgICAgICAgICByICs9ICdbJXMsICVzXScgJSAoYXJnc19yLCBfdHlwZV9yZXByKHNlbGYuX19yZXN1bHRfXykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1ldGVycyk6CisgICAgICAgIGlmIHNlbGYuX19hcmdzX18gaXMgbm90IE5vbmUgb3Igc2VsZi5fX3Jlc3VsdF9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUaGlzIENhbGxhYmxlIHR5cGUgaXMgYWxyZWFkeSBwYXJhbWV0ZXJpemVkLiIpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtZXRlcnMsIHR1cGxlKSBvciBsZW4ocGFyYW1ldGVycykgIT0gMjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAiQ2FsbGFibGUgbXVzdCBiZSB1c2VkIGFzIENhbGxhYmxlW1thcmcsIC4uLl0sIHJlc3VsdF0uIikKKyAgICAgICAgYXJncywgcmVzdWx0ID0gcGFyYW1ldGVycworICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KHNlbGYuX19kaWN0X18pLCBfcm9vdD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLCByZXN1bHQ9cmVzdWx0KQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBDYWxsYWJsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiAoc2VsZi5fX2FyZ3NfXyA9PSBvdGhlci5fX2FyZ3NfXyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fcmVzdWx0X18gPT0gb3RoZXIuX19yZXN1bHRfXykKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX2FyZ3NfXykgXiBoYXNoKHNlbGYuX19yZXN1bHRfXykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICAjIEZvciB1bnBhcmFtZXRyaXplZCBDYWxsYWJsZSB3ZSBhbGxvdyB0aGlzLCBiZWNhdXNlCisgICAgICAgICMgdHlwaW5nLkNhbGxhYmxlIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvCisgICAgICAgICMgY29sbGVjdGlvbnMuYWJjLkNhbGxhYmxlLgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9uc19hYmMuQ2FsbGFibGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbGxhYmxlW10gY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCBDYWxsYWJsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKQorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBXZSdyZSBub3QgZG9pbmcgY292YXJpYW5jZSBvciBjb250cmF2YXJpYW5jZSAtLSB0aGlzIGlzICppbnZhcmlhbmNlKi4KKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gY2xzCisKKworY2xhc3MgQ2FsbGFibGUoRmluYWwsIG1ldGFjbGFzcz1DYWxsYWJsZU1ldGEsIF9yb290PVRydWUpOgorICAgICIiIkNhbGxhYmxlIHR5cGU7IENhbGxhYmxlW1tpbnRdLCBzdHJdIGlzIGEgZnVuY3Rpb24gb2YgKGludCkgLT4gc3RyLgorCisgICAgVGhlIHN1YnNjcmlwdGlvbiBzeW50YXggbXVzdCBhbHdheXMgYmUgdXNlZCB3aXRoIGV4YWN0bHkgdHdvCisgICAgdmFsdWVzOiB0aGUgYXJndW1lbnQgbGlzdCBhbmQgdGhlIHJldHVybiB0eXBlLiAgVGhlIGFyZ3VtZW50IGxpc3QKKyAgICBtdXN0IGJlIGEgbGlzdCBvZiB0eXBlczsgdGhlIHJldHVybiB0eXBlIG11c3QgYmUgYSBzaW5nbGUgdHlwZS4KKworICAgIFRoZXJlIGlzIG5vIHN5bnRheCB0byBpbmRpY2F0ZSBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cywKKyAgICBzdWNoIGZ1bmN0aW9uIHR5cGVzIGFyZSByYXJlbHkgdXNlZCBhcyBjYWxsYmFjayB0eXBlcy4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworZGVmIF9nb3JnKGEpOgorICAgICIiIlJldHVybiB0aGUgZmFydGhlc3Qgb3JpZ2luIG9mIGEgZ2VuZXJpYyBjbGFzcy4iIiIKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBHZW5lcmljTWV0YSkKKyAgICB3aGlsZSBhLl9fb3JpZ2luX18gaXMgbm90IE5vbmU6CisgICAgICAgIGEgPSBhLl9fb3JpZ2luX18KKyAgICByZXR1cm4gYQorCisKK2RlZiBfZ2VxdihhLCBiKToKKyAgICAiIiJSZXR1cm4gd2hldGhlciB0d28gZ2VuZXJpYyBjbGFzc2VzIGFyZSBlcXVpdmFsZW50LgorCisgICAgVGhlIGludGVudGlvbiBpcyB0byBjb25zaWRlciBnZW5lcmljIGNsYXNzIFggYW5kIGFueSBvZiBpdHMKKyAgICBwYXJhbWV0ZXJpemVkIGZvcm1zIChYW1RdLCBYW2ludF0sIGV0Yy4pICBhcyBlcXVpdmFsZW50LgorCisgICAgSG93ZXZlciwgWCBpcyBub3QgZXF1aXZhbGVudCB0byBhIHN1YmNsYXNzIG9mIFguCisKKyAgICBUaGUgcmVsYXRpb24gaXMgcmVmbGV4aXZlLCBzeW1tZXRyaWMgYW5kIHRyYW5zaXRpdmUuCisgICAgIiIiCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgR2VuZXJpY01ldGEpIGFuZCBpc2luc3RhbmNlKGIsIEdlbmVyaWNNZXRhKQorICAgICMgUmVkdWNlIGVhY2ggdG8gaXRzIG9yaWdpbi4KKyAgICByZXR1cm4gX2dvcmcoYSkgaXMgX2dvcmcoYikKKworCitjbGFzcyBHZW5lcmljTWV0YShUeXBpbmdNZXRhLCBhYmMuQUJDTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBnZW5lcmljIHR5cGVzLiIiIgorCisgICAgIyBUT0RPOiBDb25zdHJhaW4gbW9yZSBob3cgR2VuZXJpYyBpcyB1c2VkOyBvbmx5IGEgZmV3CisgICAgIyBzdGFuZGFyZCBwYXR0ZXJucyBzaG91bGQgYmUgYWxsb3dlZC4KKworICAgICMgVE9ETzogVXNlIGEgbW9yZSBwcmVjaXNlIHJ1bGUgdGhhbiBtYXRjaGluZyBfX25hbWVfXyB0byBkZWNpZGUKKyAgICAjIHdoZXRoZXIgdHdvIGNsYXNzZXMgYXJlIHRoZSBzYW1lLiAgQWxzbywgc2F2ZSB0aGUgZm9ybWFsCisgICAgIyBwYXJhbWV0ZXJzLiAgKFRoZXNlIHRoaW5ncyBhcmUgcmVsYXRlZCEgIEEgc29sdXRpb24gbGllcyBpbgorICAgICMgdXNpbmcgb3JpZ2luLikKKworICAgIF9fZXh0cmFfXyA9IE5vbmUKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPU5vbmUsIG9yaWdpbj1Ob25lLCBleHRyYT1Ob25lKToKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgIyBFeHRyYWN0IHBhcmFtZXRlcnMgZnJvbSBkaXJlY3QgYmFzZSBjbGFzc2VzLiAgT25seQorICAgICAgICAgICAgIyBkaXJlY3QgYmFzZXMgYXJlIGNvbnNpZGVyZWQgYW5kIG9ubHkgdGhvc2UgdGhhdCBhcmUKKyAgICAgICAgICAgICMgdGhlbXNlbHZlcyBnZW5lcmljLCBhbmQgcGFyYW1ldGVyaXplZCB3aXRoIHR5cGUKKyAgICAgICAgICAgICMgdmFyaWFibGVzLiAgRG9uJ3QgdXNlIGJhc2VzIGxpa2UgQW55LCBVbmlvbiwgVHVwbGUsCisgICAgICAgICAgICAjIENhbGxhYmxlIG9yIHR5cGUgdmFyaWFibGVzLgorICAgICAgICAgICAgcGFyYW1zID0gTm9uZQorICAgICAgICAgICAgZm9yIGJhc2UgaW4gYmFzZXM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShiYXNlLCBUeXBpbmdNZXRhKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYmFzZSwgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2Fubm90IGluaGVyaXQgZnJvbSBtYWdpYyBjbGFzcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoYmFzZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIGJhc2UuX19wYXJhbWV0ZXJzX18gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIFRoZSBiYXNlIGlzIHVucGFyYW1ldGVyaXplZC4KKyAgICAgICAgICAgICAgICAgICAgZm9yIGJwIGluIGJhc2UuX19wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKGJwKSBhbmQgbm90IGlzaW5zdGFuY2UoYnAsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBpbmhlcml0IGZyb20gYSBnZW5lcmljIGNsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcml6ZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tdHlwZS12YXJpYWJsZSAlcyIgJSBicCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBicCBub3QgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoYnApCisgICAgICAgICAgICBpZiBwYXJhbXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9IHR1cGxlKHBhcmFtcykKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PVRydWUpCisgICAgICAgIHNlbGYuX19wYXJhbWV0ZXJzX18gPSBwYXJhbWV0ZXJzCisgICAgICAgIGlmIGV4dHJhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fX2V4dHJhX18gPSBleHRyYQorICAgICAgICAjIEVsc2UgX19leHRyYV9fIGlzIGluaGVyaXRlZCwgZXZlbnR1YWxseSBmcm9tIHRoZQorICAgICAgICAjIChtZXRhLSljbGFzcyBkZWZhdWx0IGFib3ZlLgorICAgICAgICBzZWxmLl9fb3JpZ2luX18gPSBvcmlnaW4KKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fcGFyYW1ldGVyc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3BhcmFtZXRlcnNfXzoKKyAgICAgICAgICAgICAgICBpZiBfaGFzX3R5cGVfdmFyKHQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgciA9IHN1cGVyKCkuX19yZXByX18oKQorICAgICAgICBpZiBzZWxmLl9fcGFyYW1ldGVyc19fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgciArPSAnWyVzXScgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKF90eXBlX3JlcHIocCkgZm9yIHAgaW4gc2VsZi5fX3BhcmFtZXRlcnNfXykpCisgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKF9nZXF2KHNlbGYsIG90aGVyKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9fcGFyYW1ldGVyc19fID09IG90aGVyLl9fcGFyYW1ldGVyc19fKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5fX25hbWVfXywgc2VsZi5fX3BhcmFtZXRlcnNfXykpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1zKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1zLCB0dXBsZSk6CisgICAgICAgICAgICBwYXJhbXMgPSAocGFyYW1zLCkKKyAgICAgICAgaWYgbm90IHBhcmFtczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGhhdmUgZW1wdHkgcGFyYW1ldGVyIGxpc3QiKQorICAgICAgICBtc2cgPSAiUGFyYW1ldGVycyB0byBnZW5lcmljIHR5cGVzIG11c3QgYmUgdHlwZXMuIgorICAgICAgICBwYXJhbXMgPSB0dXBsZShfdHlwZV9jaGVjayhwLCBtc2cpIGZvciBwIGluIHBhcmFtcykKKyAgICAgICAgaWYgc2VsZi5fX3BhcmFtZXRlcnNfXyBpcyBOb25lOgorICAgICAgICAgICAgZm9yIHAgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHAsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkluaXRpYWwgcGFyYW1ldGVycyBtdXN0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIHZhcmlhYmxlczsgZ290ICVzIiAlIHApCisgICAgICAgICAgICBpZiBsZW4oc2V0KHBhcmFtcykpICE9IGxlbihwYXJhbXMpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkFsbCB0eXBlIHZhcmlhYmxlcyBpbiBHZW5lcmljWy4uLl0gbXVzdCBiZSBkaXN0aW5jdC4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbGVuKHBhcmFtcykgIT0gbGVuKHNlbGYuX19wYXJhbWV0ZXJzX18pOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IGNoYW5nZSBwYXJhbWV0ZXIgY291bnQgZnJvbSAlZCB0byAlZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGVuKHNlbGYuX19wYXJhbWV0ZXJzX18pLCBsZW4ocGFyYW1zKSkpCisgICAgICAgICAgICBmb3IgbmV3LCBvbGQgaW4gemlwKHBhcmFtcywgc2VsZi5fX3BhcmFtZXRlcnNfXyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvbGQsIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb2xkLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3Vic3RpdHV0aW5nIGZvciBhbiB1bmNvbnN0cmFpbmVkIFR5cGVWYXIgaXMgT0suCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKG5ldywgVW5pb25bb2xkLl9fY29uc3RyYWludHNfX10pOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFsaXppbmcgYSBjb25zdHJhaW5lZCB0eXBlIHZhcmlhYmxlIGlzIE9LLgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhuZXcsIG9sZCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3Vic3RpdHV0ZSAlcyBmb3IgJXMgaW4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChfdHlwZV9yZXByKG5ldyksIF90eXBlX3JlcHIob2xkKSwgc2VsZikpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChzZWxmLl9fZGljdF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnM9cGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1zZWxmLl9fZXh0cmFfXykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSk6CisgICAgICAgICMgU2luY2Ugd2UgZXh0ZW5kIEFCQy5fX3N1YmNsYXNzY2hlY2tfXyBhbmQKKyAgICAgICAgIyBBQkMuX19pbnN0YW5jZWNoZWNrX18gaW5saW5lcyB0aGUgY2FjaGUgY2hlY2tpbmcgZG9uZSBieSB0aGUKKyAgICAgICAgIyBsYXR0ZXIsIHdlIG11c3QgZXh0ZW5kIF9faW5zdGFuY2VjaGVja19fIHRvby4gRm9yIHNpbXBsaWNpdHkKKyAgICAgICAgIyB3ZSBqdXN0IHNraXAgdGhlIGNhY2hlIGNoZWNrIC0tIGluc3RhbmNlIGNoZWNrcyBmb3IgZ2VuZXJpYworICAgICAgICAjIGNsYXNzZXMgYXJlIHN1cHBvc2VkIHRvIGJlIHJhcmUgYW55d2F5cy4KKyAgICAgICAgcmV0dXJuIHNlbGYuX19zdWJjbGFzc2NoZWNrX18oaW5zdGFuY2UuX19jbGFzc19fKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKGNscywgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgIyBGb3IgYSBjbGFzcyBDKEdlbmVyaWNbVF0pIHdoZXJlIFQgaXMgY28tdmFyaWFudCwKKyAgICAgICAgICAgICMgQ1tYXSBpcyBhIHN1YmNsYXNzIG9mIENbWV0gaWZmIFggaXMgYSBzdWJjbGFzcyBvZiBZLgorICAgICAgICAgICAgb3JpZ2luID0gc2VsZi5fX29yaWdpbl9fCisgICAgICAgICAgICBpZiBvcmlnaW4gaXMgbm90IE5vbmUgYW5kIG9yaWdpbiBpcyBjbHMuX19vcmlnaW5fXzoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKHNlbGYuX19wYXJhbWV0ZXJzX18pID09IGxlbihvcmlnaW4uX19wYXJhbWV0ZXJzX18pCisgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihjbHMuX19wYXJhbWV0ZXJzX18pID09IGxlbihvcmlnaW4uX19wYXJhbWV0ZXJzX18pCisgICAgICAgICAgICAgICAgZm9yIHBfc2VsZiwgcF9jbHMsIHBfb3JpZ2luIGluIHppcChzZWxmLl9fcGFyYW1ldGVyc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLl9fcGFyYW1ldGVyc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLl9fcGFyYW1ldGVyc19fKToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwX29yaWdpbiwgVHlwZVZhcik6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwX29yaWdpbi5fX2NvdmFyaWFudF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ292YXJpYW50IC0tIHBfY2xzIG11c3QgYmUgYSBzdWJjbGFzcyBvZiBwX3NlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MocF9jbHMsIHBfc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBfb3JpZ2luLl9fY29udHJhdmFyaWFudF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ29udHJhdmFyaWFudC4gIEkgdGhpbmsgaXQncyB0aGUgb3Bwb3NpdGUuIDotKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHBfc2VsZiwgcF9jbHMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEludmFyaWFudCAtLSBwX2NscyBhbmQgcF9zZWxmIG11c3QgZXF1YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcF9zZWxmICE9IHBfY2xzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGUgb3JpZ2luJ3MgcGFyYW1ldGVyIGlzIG5vdCBhIHR5cGV2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluc2lzdCBvbiBpbnZhcmlhbmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcF9zZWxmICE9IHBfY2xzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICAjIElmIHdlIGJyZWFrIG91dCBvZiB0aGUgbG9vcCwgdGhlIHN1cGVyY2xhc3MgZ2V0cyBhIGNoYW5jZS4KKyAgICAgICAgaWYgc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fX2V4dHJhX18gaXMgTm9uZSBvciBpc2luc3RhbmNlKGNscywgR2VuZXJpY01ldGEpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBpc3N1YmNsYXNzKGNscywgc2VsZi5fX2V4dHJhX18pCisKKworY2xhc3MgR2VuZXJpYyhtZXRhY2xhc3M9R2VuZXJpY01ldGEpOgorICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGdlbmVyaWMgdHlwZXMuCisKKyAgICBBIGdlbmVyaWMgdHlwZSBpcyB0eXBpY2FsbHkgZGVjbGFyZWQgYnkgaW5oZXJpdGluZyBmcm9tIGFuCisgICAgaW5zdGFudGlhdGlvbiBvZiB0aGlzIGNsYXNzIHdpdGggb25lIG9yIG1vcmUgdHlwZSB2YXJpYWJsZXMuCisgICAgRm9yIGV4YW1wbGUsIGEgZ2VuZXJpYyBtYXBwaW5nIHR5cGUgbWlnaHQgYmUgZGVmaW5lZCBhczo6CisKKyAgICAgIGNsYXNzIE1hcHBpbmcoR2VuZXJpY1tLVCwgVlRdKToKKyAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBLVCkgLT4gVlQ6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICMgRXRjLgorCisgICAgVGhpcyBjbGFzcyBjYW4gdGhlbiBiZSB1c2VkIGFzIGZvbGxvd3M6OgorCisgICAgICBkZWYgbG9va3VwX25hbWUobWFwcGluZzogTWFwcGluZywga2V5OiBLVCwgZGVmYXVsdDogVlQpIC0+IFZUOgorICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmdba2V5XQorICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKworICAgIEZvciBjbGFyaXR5IHRoZSB0eXBlIHZhcmlhYmxlcyBtYXkgYmUgcmVkZWZpbmVkLCBlLmcuOjoKKworICAgICAgWCA9IFR5cGVWYXIoJ1gnKQorICAgICAgWSA9IFR5cGVWYXIoJ1knKQorICAgICAgZGVmIGxvb2t1cF9uYW1lKG1hcHBpbmc6IE1hcHBpbmdbWCwgWV0sIGtleTogWCwgZGVmYXVsdDogWSkgLT4gWToKKyAgICAgICAgICAjIFNhbWUgYm9keSBhcyBhYm92ZS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBuZXh0X2luX21ybyA9IG9iamVjdAorICAgICAgICAjIExvb2sgZm9yIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgR2VuZXJpYyBvciBHZW5lcmljWy4uLl0uCisgICAgICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShjbHMuX19tcm9fX1s6LTFdKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYywgR2VuZXJpY01ldGEpIGFuZCBfZ29yZyhjKSBpcyBHZW5lcmljOgorICAgICAgICAgICAgICAgIG5leHRfaW5fbXJvID0gY2xzLl9fbXJvX19baSsxXQorICAgICAgICByZXR1cm4gbmV4dF9pbl9tcm8uX19uZXdfXyhfZ29yZyhjbHMpKQorCisKK2RlZiBjYXN0KHR5cCwgdmFsKToKKyAgICAiIiJDYXN0IGEgdmFsdWUgdG8gYSB0eXBlLgorCisgICAgVGhpcyByZXR1cm5zIHRoZSB2YWx1ZSB1bmNoYW5nZWQuICBUbyB0aGUgdHlwZSBjaGVja2VyIHRoaXMKKyAgICBzaWduYWxzIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBoYXMgdGhlIGRlc2lnbmF0ZWQgdHlwZSwgYnV0IGF0CisgICAgcnVudGltZSB3ZSBpbnRlbnRpb25hbGx5IGRvbid0IGNoZWNrIGFueXRoaW5nICh3ZSB3YW50IHRoaXMKKyAgICB0byBiZSBhcyBmYXN0IGFzIHBvc3NpYmxlKS4KKyAgICAiIiIKKyAgICByZXR1cm4gdmFsCisKKworZGVmIF9nZXRfZGVmYXVsdHMoZnVuYyk6CisgICAgIiIiSW50ZXJuYWwgaGVscGVyIHRvIGV4dHJhY3QgdGhlIGRlZmF1bHQgYXJndW1lbnRzLCBieSBuYW1lLiIiIgorICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgcG9zX2NvdW50ID0gY29kZS5jb19hcmdjb3VudAorICAgIGt3X2NvdW50ID0gY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgIGFyZ19uYW1lcyA9IGNvZGUuY29fdmFybmFtZXMKKyAgICBrd2FyZ19uYW1lcyA9IGFyZ19uYW1lc1twb3NfY291bnQ6cG9zX2NvdW50ICsga3dfY291bnRdCisgICAgYXJnX25hbWVzID0gYXJnX25hbWVzWzpwb3NfY291bnRdCisgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXyBvciAoKQorICAgIGt3ZGVmYXVsdHMgPSBmdW5jLl9fa3dkZWZhdWx0c19fCisgICAgcmVzID0gZGljdChrd2RlZmF1bHRzKSBpZiBrd2RlZmF1bHRzIGVsc2Uge30KKyAgICBwb3Nfb2Zmc2V0ID0gcG9zX2NvdW50IC0gbGVuKGRlZmF1bHRzKQorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoYXJnX25hbWVzW3Bvc19vZmZzZXQ6XSwgZGVmYXVsdHMpOgorICAgICAgICBhc3NlcnQgbmFtZSBub3QgaW4gcmVzCisgICAgICAgIHJlc1tuYW1lXSA9IHZhbHVlCisgICAgcmV0dXJuIHJlcworCisKK2RlZiBnZXRfdHlwZV9oaW50cyhvYmosIGdsb2JhbG5zPU5vbmUsIGxvY2FsbnM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKworICAgIFRoaXMgaXMgb2Z0ZW4gdGhlIHNhbWUgYXMgb2JqLl9fYW5ub3RhdGlvbnNfXywgYnV0IGl0IGhhbmRsZXMKKyAgICBmb3J3YXJkIHJlZmVyZW5jZXMgZW5jb2RlZCBhcyBzdHJpbmcgbGl0ZXJhbHMsIGFuZCBpZiBuZWNlc3NhcnkKKyAgICBhZGRzIE9wdGlvbmFsW3RdIGlmIGEgZGVmYXVsdCB2YWx1ZSBlcXVhbCB0byBOb25lIGlzIHNldC4KKworICAgIEJFV0FSRSAtLSB0aGUgYmVoYXZpb3Igb2YgZ2xvYmFsbnMgYW5kIGxvY2FsbnMgaXMgY291bnRlcmludHVpdGl2ZQorICAgICh1bmxlc3MgeW91IGFyZSBmYW1pbGlhciB3aXRoIGhvdyBldmFsKCkgYW5kIGV4ZWMoKSB3b3JrKS4gIFRoZQorICAgIHNlYXJjaCBvcmRlciBpcyBsb2NhbHMgZmlyc3QsIHRoZW4gZ2xvYmFscy4KKworICAgIC0gSWYgbm8gZGljdCBhcmd1bWVudHMgYXJlIHBhc3NlZCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSB0aGUKKyAgICAgIGdsb2JhbHMgZnJvbSBvYmosIGFuZCB0aGVzZSBhcmUgYWxzbyB1c2VkIGFzIHRoZSBsb2NhbHMuICBJZiB0aGUKKyAgICAgIG9iamVjdCBkb2VzIG5vdCBhcHBlYXIgdG8gaGF2ZSBnbG9iYWxzLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgLSBJZiBvbmUgZGljdCBhcmd1bWVudCBpcyBwYXNzZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGggZ2xvYmFscyBhbmQKKyAgICAgIGxvY2Fscy4KKworICAgIC0gSWYgdHdvIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgc3BlY2lmeSBnbG9iYWxzIGFuZAorICAgICAgbG9jYWxzLCByZXNwZWN0aXZlbHkuCisgICAgIiIiCisgICAgaWYgZ2V0YXR0cihvYmosICdfX25vX3R5cGVfY2hlY2tfXycsIE5vbmUpOgorICAgICAgICByZXR1cm4ge30KKyAgICBpZiBnbG9iYWxucyBpcyBOb25lOgorICAgICAgICBnbG9iYWxucyA9IGdldGF0dHIob2JqLCAnX19nbG9iYWxzX18nLCB7fSkKKyAgICAgICAgaWYgbG9jYWxucyBpcyBOb25lOgorICAgICAgICAgICAgbG9jYWxucyA9IGdsb2JhbG5zCisgICAgZWxpZiBsb2NhbG5zIGlzIE5vbmU6CisgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucworICAgIGRlZmF1bHRzID0gX2dldF9kZWZhdWx0cyhvYmopCisgICAgaGludHMgPSBkaWN0KG9iai5fX2Fubm90YXRpb25zX18pCisgICAgZm9yIG5hbWUsIHZhbHVlIGluIGhpbnRzLml0ZW1zKCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICB2YWx1ZSA9IF9Gb3J3YXJkUmVmKHZhbHVlKQorICAgICAgICB2YWx1ZSA9IF9ldmFsX3R5cGUodmFsdWUsIGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICBpZiBuYW1lIGluIGRlZmF1bHRzIGFuZCBkZWZhdWx0c1tuYW1lXSBpcyBOb25lOgorICAgICAgICAgICAgdmFsdWUgPSBPcHRpb25hbFt2YWx1ZV0KKyAgICAgICAgaGludHNbbmFtZV0gPSB2YWx1ZQorICAgIHJldHVybiBoaW50cworCisKKyMgVE9ETzogQWxzbyBzdXBwb3J0IHRoaXMgYXMgYSBjbGFzcyBkZWNvcmF0b3IuCitkZWYgbm9fdHlwZV9jaGVjayhhcmcpOgorICAgICIiIkRlY29yYXRvciB0byBpbmRpY2F0ZSB0aGF0IGFubm90YXRpb25zIGFyZSBub3QgdHlwZSBoaW50cy4KKworICAgIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgY2xhc3Mgb3IgZnVuY3Rpb247IGlmIGl0IGlzIGEgY2xhc3MsIGl0CisgICAgYXBwbGllcyByZWN1cnNpdmVseSB0byBhbGwgbWV0aG9kcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MgKGJ1dCBub3QKKyAgICB0byBtZXRob2RzIGRlZmluZWQgaW4gaXRzIHN1cGVyY2xhc3NlcyBvciBzdWJjbGFzc2VzKS4KKworICAgIFRoaXMgbXV0YXRlcyB0aGUgZnVuY3Rpb24ocykgaW4gcGxhY2UuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShhcmcsIHR5cGUpOgorICAgICAgICBmb3Igb2JqIGluIGFyZy5fX2RpY3RfXy52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5GdW5jdGlvblR5cGUpOgorICAgICAgICAgICAgICAgIG9iai5fX25vX3R5cGVfY2hlY2tfXyA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICBhcmcuX19ub190eXBlX2NoZWNrX18gPSBUcnVlCisgICAgcmV0dXJuIGFyZworCisKK2RlZiBub190eXBlX2NoZWNrX2RlY29yYXRvcihkZWNvcmF0b3IpOgorICAgICIiIkRlY29yYXRvciB0byBnaXZlIGFub3RoZXIgZGVjb3JhdG9yIHRoZSBAbm9fdHlwZV9jaGVjayBlZmZlY3QuCisKKyAgICBUaGlzIHdyYXBzIHRoZSBkZWNvcmF0b3Igd2l0aCBzb21ldGhpbmcgdGhhdCB3cmFwcyB0aGUgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gaW4gQG5vX3R5cGVfY2hlY2suCisgICAgIiIiCisKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGRlY29yYXRvcikKKyAgICBkZWYgd3JhcHBlZF9kZWNvcmF0b3IoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGZ1bmMgPSBkZWNvcmF0b3IoKmFyZ3MsICoqa3dkcykKKyAgICAgICAgZnVuYyA9IG5vX3R5cGVfY2hlY2soZnVuYykKKyAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgIHJldHVybiB3cmFwcGVkX2RlY29yYXRvcgorCisKK2RlZiBvdmVybG9hZChmdW5jKToKKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIk92ZXJsb2FkaW5nIGlzIG9ubHkgc3VwcG9ydGVkIGluIGxpYnJhcnkgc3R1YnMiKQorCisKK2NsYXNzIF9Qcm90b2NvbE1ldGEoR2VuZXJpY01ldGEpOgorICAgICIiIkludGVybmFsIG1ldGFjbGFzcyBmb3IgX1Byb3RvY29sLgorCisgICAgVGhpcyBleGlzdHMgc28gX1Byb3RvY29sIGNsYXNzZXMgY2FuIGJlIGdlbmVyaWMgd2l0aG91dCBkZXJpdmluZworICAgIGZyb20gR2VuZXJpYy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlByb3RvY29scyBjYW5ub3QgYmUgdXNlZCB3aXRoIGlzaW5zdGFuY2UoKS4iKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9pc19wcm90b2NvbDoKKyAgICAgICAgICAgICMgTm8gc3RydWN0dXJhbCBjaGVja3Mgc2luY2UgdGhpcyBpc24ndCBhIHByb3RvY29sLgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgaWYgc2VsZiBpcyBfUHJvdG9jb2w6CisgICAgICAgICAgICAjIEV2ZXJ5IGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGVtcHR5IHByb3RvY29sLgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAjIEZpbmQgYWxsIGF0dHJpYnV0ZXMgZGVmaW5lZCBpbiB0aGUgcHJvdG9jb2wuCisgICAgICAgIGF0dHJzID0gc2VsZi5fZ2V0X3Byb3RvY29sX2F0dHJzKCkKKworICAgICAgICBmb3IgYXR0ciBpbiBhdHRyczoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoYXR0ciBpbiBkLl9fZGljdF9fIGZvciBkIGluIGNscy5fX21yb19fKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfZ2V0X3Byb3RvY29sX2F0dHJzKHNlbGYpOgorICAgICAgICAjIEdldCBhbGwgUHJvdG9jb2wgYmFzZSBjbGFzc2VzLgorICAgICAgICBwcm90b2NvbF9iYXNlcyA9IFtdCisgICAgICAgIGZvciBjIGluIHNlbGYuX19tcm9fXzoKKyAgICAgICAgICAgIGlmIGdldGF0dHIoYywgJ19pc19wcm90b2NvbCcsIEZhbHNlKSBhbmQgYy5fX25hbWVfXyAhPSAnX1Byb3RvY29sJzoKKyAgICAgICAgICAgICAgICBwcm90b2NvbF9iYXNlcy5hcHBlbmQoYykKKworICAgICAgICAjIEdldCBhdHRyaWJ1dGVzIGluY2x1ZGVkIGluIHByb3RvY29sLgorICAgICAgICBhdHRycyA9IHNldCgpCisgICAgICAgIGZvciBiYXNlIGluIHByb3RvY29sX2Jhc2VzOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gYmFzZS5fX2RpY3RfXy5rZXlzKCk6CisgICAgICAgICAgICAgICAgIyBJbmNsdWRlIGF0dHJpYnV0ZXMgbm90IGRlZmluZWQgaW4gYW55IG5vbi1wcm90b2NvbCBiYXNlcy4KKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBzZWxmLl9fbXJvX186CisgICAgICAgICAgICAgICAgICAgIGlmIChjIGlzIG5vdCBiYXNlIGFuZCBhdHRyIGluIGMuX19kaWN0X18gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGdldGF0dHIoYywgJ19pc19wcm90b2NvbCcsIEZhbHNlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIChub3QgYXR0ci5zdGFydHN3aXRoKCdfYWJjXycpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19hYnN0cmFjdG1ldGhvZHNfXycgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyICE9ICdfaXNfcHJvdG9jb2wnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19kaWN0X18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19zbG90c19fJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19nZXRfcHJvdG9jb2xfYXR0cnMnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19wYXJhbWV0ZXJzX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19vcmlnaW5fXycgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyICE9ICdfX21vZHVsZV9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5hZGQoYXR0cikKKworICAgICAgICByZXR1cm4gYXR0cnMKKworCitjbGFzcyBfUHJvdG9jb2wobWV0YWNsYXNzPV9Qcm90b2NvbE1ldGEpOgorICAgICIiIkludGVybmFsIGJhc2UgY2xhc3MgZm9yIHByb3RvY29sIGNsYXNzZXMuCisKKyAgICBUaGlzIGltcGxlbWVudHMgYSBzaW1wbGUtbWluZGVkIHN0cnVjdHVyYWwgaXNpbnN0YW5jZSBjaGVjaworICAgIChzaW1pbGFyIGJ1dCBtb3JlIGdlbmVyYWwgdGhhbiB0aGUgb25lLW9mZnMgaW4gY29sbGVjdGlvbnMuYWJjCisgICAgc3VjaCBhcyBIYXNoYWJsZSkuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgX2lzX3Byb3RvY29sID0gVHJ1ZQorCisKKyMgVmFyaW91cyBBQkNzIG1pbWlja2luZyB0aG9zZSBpbiBjb2xsZWN0aW9ucy5hYmMuCisjIEEgZmV3IGFyZSBzaW1wbHkgcmUtZXhwb3J0ZWQgZm9yIGNvbXBsZXRlbmVzcy4KKworSGFzaGFibGUgPSBjb2xsZWN0aW9uc19hYmMuSGFzaGFibGUgICMgTm90IGdlbmVyaWMuCisKKworY2xhc3MgSXRlcmFibGUoR2VuZXJpY1tUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkl0ZXJhYmxlKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2NsYXNzIEl0ZXJhdG9yKEl0ZXJhYmxlW1RfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuSXRlcmF0b3IpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgU3VwcG9ydHNJbnQoX1Byb3RvY29sKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9faW50X18oc2VsZikgLT4gaW50OgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNGbG9hdChfUHJvdG9jb2wpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19mbG9hdF9fKHNlbGYpIC0+IGZsb2F0OgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNDb21wbGV4KF9Qcm90b2NvbCk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKSAtPiBjb21wbGV4OgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNCeXRlcyhfUHJvdG9jb2wpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19ieXRlc19fKHNlbGYpIC0+IGJ5dGVzOgorICAgICAgICBwYXNzCisKKworY2xhc3MgU3VwcG9ydHNBYnMoX1Byb3RvY29sW1RfY29dKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fYWJzX18oc2VsZikgLT4gVF9jbzoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzUm91bmQoX1Byb3RvY29sW1RfY29dKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcm91bmRfXyhzZWxmLCBuZGlnaXRzOiBpbnQgPSAwKSAtPiBUX2NvOgorICAgICAgICBwYXNzCisKKworY2xhc3MgUmV2ZXJzaWJsZShfUHJvdG9jb2xbVF9jb10pOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpIC0+ICdJdGVyYXRvcltUX2NvXSc6CisgICAgICAgIHBhc3MKKworCitTaXplZCA9IGNvbGxlY3Rpb25zX2FiYy5TaXplZCAgIyBOb3QgZ2VuZXJpYy4KKworCitjbGFzcyBDb250YWluZXIoR2VuZXJpY1tUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkNvbnRhaW5lcik6CisgICAgX19zbG90c19fID0gKCkKKworCisjIENhbGxhYmxlIHdhcyBkZWZpbmVkIGVhcmxpZXIuCisKKworY2xhc3MgQWJzdHJhY3RTZXQoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10sCisgICAgICAgICAgICAgICAgICBleHRyYT1jb2xsZWN0aW9uc19hYmMuU2V0KToKKyAgICBwYXNzCisKKworY2xhc3MgTXV0YWJsZVNldChBYnN0cmFjdFNldFtUXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk11dGFibGVTZXQpOgorICAgIHBhc3MKKworCisjIE5PVEU6IE9ubHkgdGhlIHZhbHVlIHR5cGUgaXMgY292YXJpYW50LgorY2xhc3MgTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSwKKyAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk1hcHBpbmcpOgorICAgIHBhc3MKKworCitjbGFzcyBNdXRhYmxlTWFwcGluZyhNYXBwaW5nW0tULCBWVF0sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NdXRhYmxlTWFwcGluZyk6CisgICAgcGFzcworCisKK2NsYXNzIFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dLAorICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLlNlcXVlbmNlKToKKyAgICBwYXNzCisKKworY2xhc3MgTXV0YWJsZVNlcXVlbmNlKFNlcXVlbmNlW1RdLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuTXV0YWJsZVNlcXVlbmNlKToKKyAgICBwYXNzCisKKworY2xhc3MgQnl0ZVN0cmluZyhTZXF1ZW5jZVtpbnRdLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuQnl0ZVN0cmluZyk6CisgICAgcGFzcworCisKK0J5dGVTdHJpbmcucmVnaXN0ZXIodHlwZShtZW1vcnl2aWV3KGInJykpKQorCisKK2NsYXNzIExpc3QobGlzdCwgTXV0YWJsZVNlcXVlbmNlW1RdKToKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgTGlzdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgTGlzdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBsaXN0KCkgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBsaXN0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorCisKK2NsYXNzIFNldChzZXQsIE11dGFibGVTZXRbVF0pOgorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBTZXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIFNldCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBzZXQoKSBpbnN0ZWFkIikKKyAgICAgICAgcmV0dXJuIHNldC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCitjbGFzcyBfRnJvemVuU2V0TWV0YShHZW5lcmljTWV0YSk6CisgICAgIiIiVGhpcyBtZXRhY2xhc3MgZW5zdXJlcyBzZXQgaXMgbm90IGEgc3ViY2xhc3Mgb2YgRnJvemVuU2V0LgorCisgICAgV2l0aG91dCB0aGlzIG1ldGFjbGFzcywgc2V0IHdvdWxkIGJlIGNvbnNpZGVyZWQgYSBzdWJjbGFzcyBvZgorICAgIEZyb3plblNldCwgYmVjYXVzZSBGcm96ZW5TZXQuX19leHRyYV9fIGlzIGNvbGxlY3Rpb25zLmFiYy5TZXQsIGFuZAorICAgIHNldCBpcyBhIHN1YmNsYXNzIG9mIHRoYXQuCisgICAgIiIiCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIFNldCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKQorCisKK2NsYXNzIEZyb3plblNldChmcm96ZW5zZXQsIEFic3RyYWN0U2V0W1RfY29dLCBtZXRhY2xhc3M9X0Zyb3plblNldE1ldGEpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBfZ2VxdihjbHMsIEZyb3plblNldCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgRnJvemVuU2V0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIGZyb3plbnNldCgpIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gZnJvemVuc2V0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorCisKK2NsYXNzIE1hcHBpbmdWaWV3KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk1hcHBpbmdWaWV3KToKKyAgICBwYXNzCisKKworY2xhc3MgS2V5c1ZpZXcoTWFwcGluZ1ZpZXdbS1RdLCBBYnN0cmFjdFNldFtLVF0sCisgICAgICAgICAgICAgICBleHRyYT1jb2xsZWN0aW9uc19hYmMuS2V5c1ZpZXcpOgorICAgIHBhc3MKKworCisjIFRPRE86IEVuYWJsZSBTZXRbVHVwbGVbS1QsIFZUX2NvXV0gaW5zdGVhZCBvZiBHZW5lcmljW0tULCBWVF9jb10uCitjbGFzcyBJdGVtc1ZpZXcoTWFwcGluZ1ZpZXcsIEdlbmVyaWNbS1QsIFZUX2NvXSwKKyAgICAgICAgICAgICAgICBleHRyYT1jb2xsZWN0aW9uc19hYmMuSXRlbXNWaWV3KToKKyAgICBwYXNzCisKKworY2xhc3MgVmFsdWVzVmlldyhNYXBwaW5nVmlld1tWVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5WYWx1ZXNWaWV3KToKKyAgICBwYXNzCisKKworY2xhc3MgRGljdChkaWN0LCBNdXRhYmxlTWFwcGluZ1tLVCwgVlRdKToKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgRGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgRGljdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBkaWN0KCkgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBkaWN0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorCisKKyMgRGV0ZXJtaW5lIHdoYXQgYmFzZSBjbGFzcyB0byB1c2UgZm9yIEdlbmVyYXRvci4KK2lmIGhhc2F0dHIoY29sbGVjdGlvbnNfYWJjLCAnR2VuZXJhdG9yJyk6CisgICAgIyBTdWZmaWNpZW50bHkgcmVjZW50IHZlcnNpb25zIG9mIDMuNSBoYXZlIGEgR2VuZXJhdG9yIEFCQy4KKyAgICBfR19iYXNlID0gY29sbGVjdGlvbnNfYWJjLkdlbmVyYXRvcgorZWxzZToKKyAgICAjIEZhbGwgYmFjayBvbiB0aGUgZXhhY3QgdHlwZS4KKyAgICBfR19iYXNlID0gdHlwZXMuR2VuZXJhdG9yVHlwZQorCisKK2NsYXNzIEdlbmVyYXRvcihJdGVyYXRvcltUX2NvXSwgR2VuZXJpY1tUX2NvLCBUX2NvbnRyYSwgVl9jb10sCisgICAgICAgICAgICAgICAgZXh0cmE9X0dfYmFzZSk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgR2VuZXJhdG9yKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBHZW5lcmF0b3IgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGUgYSBzdWJjbGFzcyBpbnN0ZWFkIikKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisKKworZGVmIE5hbWVkVHVwbGUodHlwZW5hbWUsIGZpZWxkcyk6CisgICAgIiIiVHlwZWQgdmVyc2lvbiBvZiBuYW1lZHR1cGxlLgorCisgICAgVXNhZ2U6OgorCisgICAgICAgIEVtcGxveWVlID0gdHlwaW5nLk5hbWVkVHVwbGUoJ0VtcGxveWVlJywgWygnbmFtZScsIHN0ciksICdpZCcsIGludCldKQorCisgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgICBFbXBsb3llZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ0VtcGxveWVlJywgWyduYW1lJywgJ2lkJ10pCisKKyAgICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBfZmllbGRfdHlwZXMsCisgICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcworICAgIGFyZSBpbiB0aGUgX2ZpZWxkcyBhdHRyaWJ1dGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIG5hbWVkdHVwbGUKKyAgICBBUEkuKQorICAgICIiIgorICAgIGZpZWxkcyA9IFsobiwgdCkgZm9yIG4sIHQgaW4gZmllbGRzXQorICAgIGNscyA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUodHlwZW5hbWUsIFtuIGZvciBuLCB0IGluIGZpZWxkc10pCisgICAgY2xzLl9maWVsZF90eXBlcyA9IGRpY3QoZmllbGRzKQorICAgIHJldHVybiBjbHMKKworCitjbGFzcyBJTyhHZW5lcmljW0FueVN0cl0pOgorICAgICIiIkdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgVGV4dElPIGFuZCBCaW5hcnlJTy4KKworICAgIFRoaXMgaXMgYW4gYWJzdHJhY3QsIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIG9mIG9wZW4oKS4KKworICAgIE5PVEU6IFRoaXMgZG9lcyBub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgZGlmZmVyZW50IHBvc3NpYmxlCisgICAgY2xhc3NlcyAodGV4dCB2cy4gYmluYXJ5LCByZWFkIHZzLiB3cml0ZSB2cy4gcmVhZC93cml0ZSwKKyAgICBhcHBlbmQtb25seSwgdW5idWZmZXJlZCkuICBUaGUgVGV4dElPIGFuZCBCaW5hcnlJTyBzdWJjbGFzc2VzCisgICAgYmVsb3cgY2FwdHVyZSB0aGUgZGlzdGluY3Rpb25zIGJldHdlZW4gdGV4dCB2cy4gYmluYXJ5LCB3aGljaCBpcworICAgIHBlcnZhc2l2ZSBpbiB0aGUgaW50ZXJmYWNlOyBob3dldmVyIHdlIGN1cnJlbnRseSBkbyBub3Qgb2ZmZXIgYQorICAgIHdheSB0byB0cmFjayB0aGUgb3RoZXIgZGlzdGluY3Rpb25zIGluIHRoZSB0eXBlIHN5c3RlbS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBtb2RlKHNlbGYpIC0+IHN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKSAtPiBzdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBjbG9zZShzZWxmKSAtPiBOb25lOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgY2xvc2VkKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaWxlbm8oc2VsZikgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmx1c2goc2VsZikgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGlzYXR0eShzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgcmVhZChzZWxmLCBuOiBpbnQgPSAtMSkgLT4gQW55U3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgcmVhZGFibGUoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIGxpbWl0OiBpbnQgPSAtMSkgLT4gQW55U3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgcmVhZGxpbmVzKHNlbGYsIGhpbnQ6IGludCA9IC0xKSAtPiBMaXN0W0FueVN0cl06CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldDogaW50LCB3aGVuY2U6IGludCA9IDApIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHNlZWthYmxlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0ZWxsKHNlbGYpIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHRydW5jYXRlKHNlbGYsIHNpemU6IGludCA9IE5vbmUpIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0ZShzZWxmLCBzOiBBbnlTdHIpIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgbGluZXM6IExpc3RbQW55U3RyXSkgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKSAtPiAnSU9bQW55U3RyXSc6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKSAtPiBOb25lOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQmluYXJ5SU8oSU9bYnl0ZXNdKToKKyAgICAiIiJUeXBlZCB2ZXJzaW9uIG9mIHRoZSByZXR1cm4gb2Ygb3BlbigpIGluIGJpbmFyeSBtb2RlLiIiIgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0ZShzZWxmLCBzOiBVbmlvbltieXRlcywgYnl0ZWFycmF5XSkgLT4gaW50OgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpIC0+ICdCaW5hcnlJTyc6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBUZXh0SU8oSU9bc3RyXSk6CisgICAgIiIiVHlwZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIG9mIG9wZW4oKSBpbiB0ZXh0IG1vZGUuIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgYnVmZmVyKHNlbGYpIC0+IEJpbmFyeUlPOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGluZyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIGVycm9ycyhzZWxmKSAtPiBzdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIGxpbmVfYnVmZmVyaW5nKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIG5ld2xpbmVzKHNlbGYpIC0+IEFueToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKSAtPiAnVGV4dElPJzoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIGlvOgorICAgICIiIldyYXBwZXIgbmFtZXNwYWNlIGZvciBJTyBnZW5lcmljIGNsYXNzZXMuIiIiCisKKyAgICBfX2FsbF9fID0gWydJTycsICdUZXh0SU8nLCAnQmluYXJ5SU8nXQorICAgIElPID0gSU8KKyAgICBUZXh0SU8gPSBUZXh0SU8KKyAgICBCaW5hcnlJTyA9IEJpbmFyeUlPCisKK2lvLl9fbmFtZV9fID0gX19uYW1lX18gKyAnLmlvJworc3lzLm1vZHVsZXNbaW8uX19uYW1lX19dID0gaW8KKworCitQYXR0ZXJuID0gX1R5cGVBbGlhcygnUGF0dGVybicsIEFueVN0ciwgdHlwZShzdGRsaWJfcmUuY29tcGlsZSgnJykpLAorICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHA6IHAucGF0dGVybikKK01hdGNoID0gX1R5cGVBbGlhcygnTWF0Y2gnLCBBbnlTdHIsIHR5cGUoc3RkbGliX3JlLm1hdGNoKCcnLCAnJykpLAorICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtOiBtLnJlLnBhdHRlcm4pCisKKworY2xhc3MgcmU6CisgICAgIiIiV3JhcHBlciBuYW1lc3BhY2UgZm9yIHJlIHR5cGUgYWxpYXNlcy4iIiIKKworICAgIF9fYWxsX18gPSBbJ1BhdHRlcm4nLCAnTWF0Y2gnXQorICAgIFBhdHRlcm4gPSBQYXR0ZXJuCisgICAgTWF0Y2ggPSBNYXRjaAorCityZS5fX25hbWVfXyA9IF9fbmFtZV9fICsgJy5yZScKK3N5cy5tb2R1bGVzW3JlLl9fbmFtZV9fXSA9IHJlCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvX19pbml0X18ucHkgYi9MaWIvdW5pdHRlc3QvX19pbml0X18ucHkKaW5kZXggYTVkNTBhZi4uZjZkN2FlMiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L19faW5pdF9fLnB5CisrKyBiL0xpYi91bml0dGVzdC9fX2luaXRfXy5weQpAQCAtNjcsMyArNjcsMTIgQEAKIAogIyBkZXByZWNhdGVkCiBfVGV4dFRlc3RSZXN1bHQgPSBUZXh0VGVzdFJlc3VsdAorCisjIFRoZXJlIGFyZSBubyB0ZXN0cyBoZXJlLCBzbyBkb24ndCB0cnkgdG8gcnVuIGFueXRoaW5nIGRpc2NvdmVyZWQgZnJvbQorIyBpbnRyb3NwZWN0aW5nIHRoZSBzeW1ib2xzIChlLmcuIEZ1bmN0aW9uVGVzdENhc2UpLiBJbnN0ZWFkLCBhbGwgb3VyCisjIHRlc3RzIGNvbWUgZnJvbSB3aXRoaW4gdW5pdHRlc3QudGVzdC4KK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgIGltcG9ydCBvcy5wYXRoCisgICAgIyB0b3AgbGV2ZWwgZGlyZWN0b3J5IGNhY2hlZCBvbiBsb2FkZXIgaW5zdGFuY2UKKyAgICB0aGlzX2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICByZXR1cm4gbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2Rpcj10aGlzX2RpciwgcGF0dGVybj1wYXR0ZXJuKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkgYi9MaWIvdW5pdHRlc3QvY2FzZS5weQppbmRleCA4YTlmMWMwLi5hYzhkNjdkIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvY2FzZS5weQpAQCAtMTE5LDYgKzExOSwxMCBAQAogICAgIHRlc3RfaXRlbS5fX3VuaXR0ZXN0X2V4cGVjdGluZ19mYWlsdXJlX18gPSBUcnVlCiAgICAgcmV0dXJuIHRlc3RfaXRlbQogCitkZWYgX2lzX3N1YnR5cGUoZXhwZWN0ZWQsIGJhc2V0eXBlKToKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCB0dXBsZSk6CisgICAgICAgIHJldHVybiBhbGwoX2lzX3N1YnR5cGUoZSwgYmFzZXR5cGUpIGZvciBlIGluIGV4cGVjdGVkKQorICAgIHJldHVybiBpc2luc3RhbmNlKGV4cGVjdGVkLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhleHBlY3RlZCwgYmFzZXR5cGUpCiAKIGNsYXNzIF9CYXNlVGVzdENhc2VDb250ZXh0OgogCkBAIC0xMjksMzUgKzEzMyw0NSBAQAogICAgICAgICBtc2cgPSBzZWxmLnRlc3RfY2FzZS5fZm9ybWF0TWVzc2FnZShzZWxmLm1zZywgc3RhbmRhcmRNc2cpCiAgICAgICAgIHJhaXNlIHNlbGYudGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24obXNnKQogCi0KIGNsYXNzIF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dChfQmFzZVRlc3RDYXNlQ29udGV4dCk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHRlc3RfY2FzZSwgY2FsbGFibGVfb2JqPU5vbmUsCi0gICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RlZCwgdGVzdF9jYXNlLCBleHBlY3RlZF9yZWdleD1Ob25lKToKICAgICAgICAgX0Jhc2VUZXN0Q2FzZUNvbnRleHQuX19pbml0X18oc2VsZiwgdGVzdF9jYXNlKQogICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKICAgICAgICAgc2VsZi50ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2UKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBjYWxsYWJsZV9vYmouX19uYW1lX18KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gc3RyKGNhbGxhYmxlX29iaikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBOb25lCiAgICAgICAgIGlmIGV4cGVjdGVkX3JlZ2V4IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByZS5jb21waWxlKGV4cGVjdGVkX3JlZ2V4KQogICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4ID0gZXhwZWN0ZWRfcmVnZXgKKyAgICAgICAgc2VsZi5vYmpfbmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5tc2cgPSBOb25lCiAKLSAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKToKKyAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIGFyZ3MsIGt3YXJncyk6CiAgICAgICAgICIiIgotICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgTm9uZSwgYXNzZXJ0UmFpc2VzL1dhcm5zIGlzIGJlaW5nIHVzZWQgYXMgYQorICAgICAgICBJZiBhcmdzIGlzIGVtcHR5LCBhc3NlcnRSYWlzZXMvV2FybnMgaXMgYmVpbmcgdXNlZCBhcyBhCiAgICAgICAgIGNvbnRleHQgbWFuYWdlciwgc28gY2hlY2sgZm9yIGEgJ21zZycga3dhcmcgYW5kIHJldHVybiBzZWxmLgotICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmUsIGNhbGwgaXQgcGFzc2luZyBhcmdzIGFuZCBrd2FyZ3MuCisgICAgICAgIElmIGFyZ3MgaXMgbm90IGVtcHR5LCBjYWxsIGEgY2FsbGFibGUgcGFzc2luZyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCisgICAgICAgIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgorICAgICAgICBpZiBub3QgX2lzX3N1YnR5cGUoc2VsZi5leHBlY3RlZCwgc2VsZi5fYmFzZV90eXBlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSBhcmcgMSBtdXN0IGJlICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHNlbGYuX2Jhc2VfdHlwZV9zdHIpKQorICAgICAgICBpZiBhcmdzIGFuZCBhcmdzWzBdIGlzIE5vbmU6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJjYWxsYWJsZSBpcyBOb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGlmIG5vdCBhcmdzOgogICAgICAgICAgICAgc2VsZi5tc2cgPSBrd2FyZ3MucG9wKCdtc2cnLCBOb25lKQorICAgICAgICAgICAgaWYga3dhcmdzOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJyVyIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgZnVuY3Rpb24nICUgbmV4dChpdGVyKGt3YXJncykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjYWxsYWJsZV9vYmosICphcmdzID0gYXJncworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gY2FsbGFibGVfb2JqLl9fbmFtZV9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBzdHIoY2FsbGFibGVfb2JqKQogICAgICAgICB3aXRoIHNlbGY6CiAgICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQogCkBAIC0xNjUsNiArMTc5LDkgQEAKIGNsYXNzIF9Bc3NlcnRSYWlzZXNDb250ZXh0KF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dCk6CiAgICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgdXNlZCB0byBpbXBsZW1lbnQgVGVzdENhc2UuYXNzZXJ0UmFpc2VzKiBtZXRob2RzLiIiIgogCisgICAgX2Jhc2VfdHlwZSA9IEJhc2VFeGNlcHRpb24KKyAgICBfYmFzZV90eXBlX3N0ciA9ICdhbiBleGNlcHRpb24gdHlwZSBvciB0dXBsZSBvZiBleGNlcHRpb24gdHlwZXMnCisKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC0xOTksNiArMjE2LDkgQEAKIGNsYXNzIF9Bc3NlcnRXYXJuc0NvbnRleHQoX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KToKICAgICAiIiJBIGNvbnRleHQgbWFuYWdlciB1c2VkIHRvIGltcGxlbWVudCBUZXN0Q2FzZS5hc3NlcnRXYXJucyogbWV0aG9kcy4iIiIKIAorICAgIF9iYXNlX3R5cGUgPSBXYXJuaW5nCisgICAgX2Jhc2VfdHlwZV9zdHIgPSAnYSB3YXJuaW5nIHR5cGUgb3IgdHVwbGUgb2Ygd2FybmluZyB0eXBlcycKKwogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICMgVGhlIF9fd2FybmluZ3JlZ2lzdHJ5X18ncyBuZWVkIHRvIGJlIGluIGEgcHJpc3RpbmUgc3RhdGUgZm9yIHRlc3RzCiAgICAgICAgICMgdG8gd29yayBwcm9wZXJseS4KQEAgLTY3NywxNSArNjk3LDE1IEBACiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gICclcyA6ICVzJyAlIChzYWZlX3JlcHIoc3RhbmRhcmRNc2cpLCBzYWZlX3JlcHIobXNnKSkKIAotICAgIGRlZiBhc3NlcnRSYWlzZXMoc2VsZiwgZXhjQ2xhc3MsIGNhbGxhYmxlT2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIkZhaWwgdW5sZXNzIGFuIGV4Y2VwdGlvbiBvZiBjbGFzcyBleGNDbGFzcyBpcyByYWlzZWQKLSAgICAgICAgICAgYnkgY2FsbGFibGVPYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKLSAgICAgICAgICAgYXJndW1lbnRzIGt3YXJncy4gSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiBleGNlcHRpb24gaXMKKyAgICBkZWYgYXNzZXJ0UmFpc2VzKHNlbGYsIGV4cGVjdGVkX2V4Y2VwdGlvbiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiRmFpbCB1bmxlc3MgYW4gZXhjZXB0aW9uIG9mIGNsYXNzIGV4cGVjdGVkX2V4Y2VwdGlvbiBpcyByYWlzZWQKKyAgICAgICAgICAgYnkgdGhlIGNhbGxhYmxlIHdoZW4gaW52b2tlZCB3aXRoIHNwZWNpZmllZCBwb3NpdGlvbmFsIGFuZAorICAgICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiBleGNlcHRpb24gaXMKICAgICAgICAgICAgcmFpc2VkLCBpdCB3aWxsIG5vdCBiZSBjYXVnaHQsIGFuZCB0aGUgdGVzdCBjYXNlIHdpbGwgYmUKICAgICAgICAgICAgZGVlbWVkIHRvIGhhdmUgc3VmZmVyZWQgYW4gZXJyb3IsIGV4YWN0bHkgYXMgZm9yIGFuCiAgICAgICAgICAgIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLgogCi0gICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlT2JqIG9taXR0ZWQgb3IgTm9uZSwgd2lsbCByZXR1cm4gYQorICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCB0aGUgY2FsbGFibGUgYW5kIGFyZ3VtZW50cyBvbWl0dGVkLCB3aWxsIHJldHVybiBhCiAgICAgICAgICAgIGNvbnRleHQgb2JqZWN0IHVzZWQgbGlrZSB0aGlzOjoKIAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CkBAIC03MDMsMTggKzcyMywxOCBAQAogICAgICAgICAgICAgICAgdGhlX2V4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgogICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfZXhjZXB0aW9uLmVycm9yX2NvZGUsIDMpCiAgICAgICAgICIiIgotICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhjQ2xhc3MsIHNlbGYsIGNhbGxhYmxlT2JqKQotICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlcycsIGNhbGxhYmxlT2JqLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIHNlbGYpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzJywgYXJncywga3dhcmdzKQogCi0gICAgZGVmIGFzc2VydFdhcm5zKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBhc3NlcnRXYXJucyhzZWxmLCBleHBlY3RlZF93YXJuaW5nLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhIHdhcm5pbmcgb2YgY2xhc3Mgd2FybkNsYXNzIGlzIHRyaWdnZXJlZAotICAgICAgICAgICBieSBjYWxsYWJsZV9vYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKLSAgICAgICAgICAgYXJndW1lbnRzIGt3YXJncy4gIElmIGEgZGlmZmVyZW50IHR5cGUgb2Ygd2FybmluZyBpcworICAgICAgICAgICBieSB0aGUgY2FsbGFibGUgd2hlbiBpbnZva2VkIHdpdGggc3BlY2lmaWVkIHBvc2l0aW9uYWwgYW5kCisgICAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgYSBkaWZmZXJlbnQgdHlwZSBvZiB3YXJuaW5nIGlzCiAgICAgICAgICAgIHRyaWdnZXJlZCwgaXQgd2lsbCBub3QgYmUgaGFuZGxlZDogZGVwZW5kaW5nIG9uIHRoZSBvdGhlcgogICAgICAgICAgICB3YXJuaW5nIGZpbHRlcmluZyBydWxlcyBpbiBlZmZlY3QsIGl0IG1pZ2h0IGJlIHNpbGVuY2VkLCBwcmludGVkCiAgICAgICAgICAgIG91dCwgb3IgcmFpc2VkIGFzIGFuIGV4Y2VwdGlvbi4KIAotICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCBjYWxsYWJsZV9vYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCisgICAgICAgICAgIElmIGNhbGxlZCB3aXRoIHRoZSBjYWxsYWJsZSBhbmQgYXJndW1lbnRzIG9taXR0ZWQsIHdpbGwgcmV0dXJuIGEKICAgICAgICAgICAgY29udGV4dCBvYmplY3QgdXNlZCBsaWtlIHRoaXM6OgogCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKQEAgLTczNCw4ICs3NTQsOCBAQAogICAgICAgICAgICAgICAgdGhlX3dhcm5pbmcgPSBjbS53YXJuaW5nCiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV93YXJuaW5nLnNvbWVfYXR0cmlidXRlLCAxNDcpCiAgICAgICAgICIiIgotICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmopCi0gICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnMnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKKyAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZikKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJucycsIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRMb2dzKHNlbGYsIGxvZ2dlcj1Ob25lLCBsZXZlbD1Ob25lKToKICAgICAgICAgIiIiRmFpbCB1bmxlc3MgYSBsb2cgbWVzc2FnZSBvZiBsZXZlbCAqbGV2ZWwqIG9yIGhpZ2hlciBpcyBlbWl0dGVkCkBAIC0xMjIyLDI2ICsxMjQyLDIzIEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoc2VsZi5fZm9ybWF0TWVzc2FnZShtc2csIHN0YW5kYXJkTXNnKSkKIAogICAgIGRlZiBhc3NlcnRSYWlzZXNSZWdleChzZWxmLCBleHBlY3RlZF9leGNlcHRpb24sIGV4cGVjdGVkX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiQXNzZXJ0cyB0aGF0IHRoZSBtZXNzYWdlIGluIGEgcmFpc2VkIGV4Y2VwdGlvbiBtYXRjaGVzIGEgcmVnZXguCiAKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIGV4cGVjdGVkX2V4Y2VwdGlvbjogRXhjZXB0aW9uIGNsYXNzIGV4cGVjdGVkIHRvIGJlIHJhaXNlZC4KICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgotICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBhcmdzOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQgYW5kIGV4dHJhIHBvc2l0aW9uYWwgYXJncy4KKyAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAgICAgbXNnOiBPcHRpb25hbCBtZXNzYWdlIHVzZWQgaW4gY2FzZSBvZiBmYWlsdXJlLiBDYW4gb25seSBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIHdoZW4gYXNzZXJ0UmFpc2VzUmVnZXggaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KLSAgICAgICAgICAgIGFyZ3M6IEV4dHJhIGFyZ3MuCi0gICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgIiIiCi0gICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIHNlbGYsIGNhbGxhYmxlX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4KQotCi0gICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKKyAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZiwgZXhwZWN0ZWRfcmVnZXgpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0V2FybnNSZWdleChzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBleHBlY3RlZF9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJBc3NlcnRzIHRoYXQgdGhlIG1lc3NhZ2UgaW4gYSB0cmlnZ2VyZWQgd2FybmluZyBtYXRjaGVzIGEgcmVnZXhwLgogICAgICAgICBCYXNpYyBmdW5jdGlvbmluZyBpcyBzaW1pbGFyIHRvIGFzc2VydFdhcm5zKCkgd2l0aCB0aGUgYWRkaXRpb24KICAgICAgICAgdGhhdCBvbmx5IHdhcm5pbmdzIHdob3NlIG1lc3NhZ2VzIGFsc28gbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgpAQCAtMTI1MSwxNSArMTI2OCwxMyBAQAogICAgICAgICAgICAgZXhwZWN0ZWRfd2FybmluZzogV2FybmluZyBjbGFzcyBleHBlY3RlZCB0byBiZSB0cmlnZ2VyZWQuCiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleDogUmVnZXggKHJlIHBhdHRlcm4gb2JqZWN0IG9yIHN0cmluZykgZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZm91bmQgaW4gZXJyb3IgbWVzc2FnZS4KLSAgICAgICAgICAgIGNhbGxhYmxlX29iajogRnVuY3Rpb24gdG8gYmUgY2FsbGVkLgorICAgICAgICAgICAgYXJnczogRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFuZCBleHRyYSBwb3NpdGlvbmFsIGFyZ3MuCisgICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB1c2VkIGluIGNhc2Ugb2YgZmFpbHVyZS4gQ2FuIG9ubHkgYmUgdXNlZAogICAgICAgICAgICAgICAgICAgICB3aGVuIGFzc2VydFdhcm5zUmVnZXggaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KLSAgICAgICAgICAgIGFyZ3M6IEV4dHJhIGFyZ3MuCi0gICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgIiIiCi0gICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGNhbGxhYmxlX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQorICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBleHBlY3RlZF9yZWdleCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJuc1JlZ2V4JywgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFJlZ2V4KHNlbGYsIHRleHQsIGV4cGVjdGVkX3JlZ2V4LCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkZhaWwgdGhlIHRlc3QgdW5sZXNzIHRoZSB0ZXh0IG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKQEAgLTEyNjcsOCArMTI4MiwxMCBAQAogICAgICAgICAgICAgYXNzZXJ0IGV4cGVjdGVkX3JlZ2V4LCAiZXhwZWN0ZWRfcmVnZXggbXVzdCBub3QgYmUgZW1wdHkuIgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByZS5jb21waWxlKGV4cGVjdGVkX3JlZ2V4KQogICAgICAgICBpZiBub3QgZXhwZWN0ZWRfcmVnZXguc2VhcmNoKHRleHQpOgotICAgICAgICAgICAgbXNnID0gbXNnIG9yICJSZWdleCBkaWRuJ3QgbWF0Y2giCi0gICAgICAgICAgICBtc2cgPSAnJXM6ICVyIG5vdCBmb3VuZCBpbiAlcicgJSAobXNnLCBleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCB0ZXh0KQorICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAiUmVnZXggZGlkbid0IG1hdGNoOiAlciBub3QgZm91bmQgaW4gJXIiICUgKAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHRleHQpCisgICAgICAgICAgICAjIF9mb3JtYXRNZXNzYWdlIGVuc3VyZXMgdGhlIGxvbmdNZXNzYWdlIG9wdGlvbiBpcyByZXNwZWN0ZWQKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykKICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCiAKICAgICBkZWYgYXNzZXJ0Tm90UmVnZXgoc2VsZiwgdGV4dCwgdW5leHBlY3RlZF9yZWdleCwgbXNnPU5vbmUpOgpAQCAtMTI3NywxMSArMTI5NCwxMiBAQAogICAgICAgICAgICAgdW5leHBlY3RlZF9yZWdleCA9IHJlLmNvbXBpbGUodW5leHBlY3RlZF9yZWdleCkKICAgICAgICAgbWF0Y2ggPSB1bmV4cGVjdGVkX3JlZ2V4LnNlYXJjaCh0ZXh0KQogICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIG1zZyA9IG1zZyBvciAiUmVnZXggbWF0Y2hlZCIKLSAgICAgICAgICAgIG1zZyA9ICclczogJXIgbWF0Y2hlcyAlciBpbiAlcicgJSAobXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0W21hdGNoLnN0YXJ0KCk6bWF0Y2guZW5kKCldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQpCisgICAgICAgICAgICBzdGFuZGFyZE1zZyA9ICdSZWdleCBtYXRjaGVkOiAlciBtYXRjaGVzICVyIGluICVyJyAlICgKKyAgICAgICAgICAgICAgICB0ZXh0W21hdGNoLnN0YXJ0KCkgOiBtYXRjaC5lbmQoKV0sCisgICAgICAgICAgICAgICAgdW5leHBlY3RlZF9yZWdleC5wYXR0ZXJuLAorICAgICAgICAgICAgICAgIHRleHQpCisgICAgICAgICAgICAjIF9mb3JtYXRNZXNzYWdlIGVuc3VyZXMgdGhlIGxvbmdNZXNzYWdlIG9wdGlvbiBpcyByZXNwZWN0ZWQKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykKICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCiAKIApAQCAtMTMwMyw2ICsxMzIxLDcgQEAKICAgICBmYWlsSWYgPSBfZGVwcmVjYXRlKGFzc2VydEZhbHNlKQogICAgIGFzc2VydFJhaXNlc1JlZ2V4cCA9IF9kZXByZWNhdGUoYXNzZXJ0UmFpc2VzUmVnZXgpCiAgICAgYXNzZXJ0UmVnZXhwTWF0Y2hlcyA9IF9kZXByZWNhdGUoYXNzZXJ0UmVnZXgpCisgICAgYXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcyA9IF9kZXByZWNhdGUoYXNzZXJ0Tm90UmVnZXgpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L2xvYWRlci5weQppbmRleCBhZjM5MjE2Li5jNzc2ZjE2IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC9sb2FkZXIucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdHlwZXMKIGltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCB3YXJuaW5ncwogCiBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKIApAQCAtMTMsOSArMTQsOSBAQAogCiBfX3VuaXR0ZXN0ID0gVHJ1ZQogCi0jIHdoYXQgYWJvdXQgLnB5YyBvciAucHlvIChldGMpCisjIHdoYXQgYWJvdXQgLnB5YyAoZXRjKQogIyB3ZSB3b3VsZCBuZWVkIHRvIGF2b2lkIGxvYWRpbmcgdGhlIHNhbWUgdGVzdHMgbXVsdGlwbGUgdGltZXMKLSMgZnJvbSAnLnB5JywgJy5weWMnICphbmQqICcucHlvJworIyBmcm9tICcucHknLCAqYW5kKiAnLnB5YycKIFZBTElEX01PRFVMRV9OQU1FID0gcmUuY29tcGlsZShyJ1tfYS16XVx3KlwucHkkJywgcmUuSUdOT1JFQ0FTRSkKIAogCkBAIC0zNSwxNSArMzYsMTggQEAKIAogCiBkZWYgX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KG5hbWUsIHN1aXRlQ2xhc3MpOgotICAgIG1lc3NhZ2UgPSAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogJXNcbiVzJyAlIChuYW1lLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotICAgIHJldHVybiBfbWFrZV9mYWlsZWRfdGVzdChuYW1lLCBJbXBvcnRFcnJvcihtZXNzYWdlKSwgc3VpdGVDbGFzcykKKyAgICBtZXNzYWdlID0gJ0ZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6ICVzXG4lcycgJSAoCisgICAgICAgIG5hbWUsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisgICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KG5hbWUsIEltcG9ydEVycm9yKG1lc3NhZ2UpLCBzdWl0ZUNsYXNzLCBtZXNzYWdlKQogCiBkZWYgX21ha2VfZmFpbGVkX2xvYWRfdGVzdHMobmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKToKLSAgICByZXR1cm4gX21ha2VfZmFpbGVkX3Rlc3QobmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKQorICAgIG1lc3NhZ2UgPSAnRmFpbGVkIHRvIGNhbGwgbG9hZF90ZXN0czpcbiVzJyAlICh0cmFjZWJhY2suZm9ybWF0X2V4YygpLCkKKyAgICByZXR1cm4gX21ha2VfZmFpbGVkX3Rlc3QoCisgICAgICAgIG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcywgbWVzc2FnZSkKIAotZGVmIF9tYWtlX2ZhaWxlZF90ZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcyk6CitkZWYgX21ha2VfZmFpbGVkX3Rlc3QobWV0aG9kbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzLCBtZXNzYWdlKToKICAgICB0ZXN0ID0gX0ZhaWxlZFRlc3QobWV0aG9kbmFtZSwgZXhjZXB0aW9uKQotICAgIHJldHVybiBzdWl0ZUNsYXNzKCh0ZXN0LCkpCisgICAgcmV0dXJuIHN1aXRlQ2xhc3MoKHRlc3QsKSksIG1lc3NhZ2UKIAogZGVmIF9tYWtlX3NraXBwZWRfdGVzdChtZXRob2RuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpOgogICAgIEBjYXNlLnNraXAoc3RyKGV4Y2VwdGlvbikpCkBAIC02OSw2ICs3MywxMyBAQAogICAgIHN1aXRlQ2xhc3MgPSBzdWl0ZS5UZXN0U3VpdGUKICAgICBfdG9wX2xldmVsX2RpciA9IE5vbmUKIAorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoVGVzdExvYWRlciwgc2VsZikuX19pbml0X18oKQorICAgICAgICBzZWxmLmVycm9ycyA9IFtdCisgICAgICAgICMgVHJhY2tzIHBhY2thZ2VzIHdoaWNoIHdlIGhhdmUgY2FsbGVkIGludG8gdmlhIGxvYWRfdGVzdHMsIHRvCisgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmUtZW50cmFuY3kuCisgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMgPSBzZXQoKQorCiAgICAgZGVmIGxvYWRUZXN0c0Zyb21UZXN0Q2FzZShzZWxmLCB0ZXN0Q2FzZUNsYXNzKToKICAgICAgICAgIiIiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiB0ZXN0Q2FzZUNsYXNzIiIiCiAgICAgICAgIGlmIGlzc3ViY2xhc3ModGVzdENhc2VDbGFzcywgc3VpdGUuVGVzdFN1aXRlKToKQEAgLTgxLDggKzkyLDMwIEBACiAgICAgICAgIGxvYWRlZF9zdWl0ZSA9IHNlbGYuc3VpdGVDbGFzcyhtYXAodGVzdENhc2VDbGFzcywgdGVzdENhc2VOYW1lcykpCiAgICAgICAgIHJldHVybiBsb2FkZWRfc3VpdGUKIAotICAgIGRlZiBsb2FkVGVzdHNGcm9tTW9kdWxlKHNlbGYsIG1vZHVsZSwgdXNlX2xvYWRfdGVzdHM9VHJ1ZSk6CisgICAgIyBYWFggQWZ0ZXIgUHl0aG9uIDMuNSwgcmVtb3ZlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaGFja3MgZm9yCisgICAgIyB1c2VfbG9hZF90ZXN0cyBkZXByZWNhdGlvbiB2aWEgKmFyZ3MgYW5kICoqa3dzLiAgU2VlIGlzc3VlIDE2NjYyLgorICAgIGRlZiBsb2FkVGVzdHNGcm9tTW9kdWxlKHNlbGYsIG1vZHVsZSwgKmFyZ3MsIHBhdHRlcm49Tm9uZSwgKiprd3MpOgogICAgICAgICAiIiJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiBtb2R1bGUiIiIKKyAgICAgICAgIyBUaGlzIG1ldGhvZCB1c2VkIHRvIHRha2UgYW4gdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsCisgICAgICAgICMgdXNlX2xvYWRfdGVzdHMgYXJndW1lbnQuICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2Ugc3RpbGwKKyAgICAgICAgIyBhY2NlcHQgdGhlIGFyZ3VtZW50ICh3aGljaCBjYW4gYWxzbyBiZSB0aGUgZmlyc3QgcG9zaXRpb24pIGJ1dCB3ZQorICAgICAgICAjIGlnbm9yZSBpdCBhbmQgaXNzdWUgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGlmIGl0J3MgcHJlc2VudC4KKyAgICAgICAgaWYgbGVuKGFyZ3MpID4gMCBvciAndXNlX2xvYWRfdGVzdHMnIGluIGt3czoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBrd3MucG9wKCd1c2VfbG9hZF90ZXN0cycsIE5vbmUpCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDE6CisgICAgICAgICAgICAjIENvbXBsYWluIGFib3V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLCBidXQgZG9uJ3QgZm9yZ2V0IHRoZQorICAgICAgICAgICAgIyByZXF1aXJlZCBgbW9kdWxlYCBhcmd1bWVudC4KKyAgICAgICAgICAgIGNvbXBsYWludCA9IGxlbihhcmdzKSArIDEKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbG9hZFRlc3RzRnJvbU1vZHVsZSgpIHRha2VzIDEgcG9zaXRpb25hbCBhcmd1bWVudCBidXQge30gd2VyZSBnaXZlbicuZm9ybWF0KGNvbXBsYWludCkpCisgICAgICAgIGlmIGxlbihrd3MpICE9IDA6CisgICAgICAgICAgICAjIFNpbmNlIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgdW5zb3J0ZWQgKHNlZSBQRVAgNDY4KSwganVzdAorICAgICAgICAgICAgIyBwaWNrIHRoZSBhbHBoYWJldGljYWxseSBzb3J0ZWQgZmlyc3QgYXJndW1lbnQgdG8gY29tcGxhaW4gYWJvdXQsCisgICAgICAgICAgICAjIGlmIG11bHRpcGxlIHdlcmUgZ2l2ZW4uICBBdCBsZWFzdCB0aGUgZXJyb3IgbWVzc2FnZSB3aWxsIGJlCisgICAgICAgICAgICAjIHByZWRpY3RhYmxlLgorICAgICAgICAgICAgY29tcGxhaW50ID0gc29ydGVkKGt3cylbMF0KKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibG9hZFRlc3RzRnJvbU1vZHVsZSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3t9JyIuZm9ybWF0KGNvbXBsYWludCkpCiAgICAgICAgIHRlc3RzID0gW10KICAgICAgICAgZm9yIG5hbWUgaW4gZGlyKG1vZHVsZSk6CiAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG1vZHVsZSwgbmFtZSkKQEAgLTkxLDEyICsxMjQsMTQgQEAKIAogICAgICAgICBsb2FkX3Rlc3RzID0gZ2V0YXR0cihtb2R1bGUsICdsb2FkX3Rlc3RzJywgTm9uZSkKICAgICAgICAgdGVzdHMgPSBzZWxmLnN1aXRlQ2xhc3ModGVzdHMpCi0gICAgICAgIGlmIHVzZV9sb2FkX3Rlc3RzIGFuZCBsb2FkX3Rlc3RzIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBsb2FkX3Rlc3RzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBsb2FkX3Rlc3RzKHNlbGYsIHRlc3RzLCBOb25lKQorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkX3Rlc3RzKHNlbGYsIHRlc3RzLCBwYXR0ZXJuKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHJldHVybiBfbWFrZV9mYWlsZWRfbG9hZF90ZXN0cyhtb2R1bGUuX19uYW1lX18sIGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3VpdGVDbGFzcykKKyAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX2xvYWRfdGVzdHMoCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX25hbWVfXywgZSwgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlCiAgICAgICAgIHJldHVybiB0ZXN0cwogCiAgICAgZGVmIGxvYWRUZXN0c0Zyb21OYW1lKHNlbGYsIG5hbWUsIG1vZHVsZT1Ob25lKToKQEAgLTEwOSwyMCArMTQ0LDQ3IEBACiAgICAgICAgIFRoZSBtZXRob2Qgb3B0aW9uYWxseSByZXNvbHZlcyB0aGUgbmFtZXMgcmVsYXRpdmUgdG8gYSBnaXZlbiBtb2R1bGUuCiAgICAgICAgICIiIgogICAgICAgICBwYXJ0cyA9IG5hbWUuc3BsaXQoJy4nKQorICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gTm9uZSwgTm9uZQogICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgIHBhcnRzX2NvcHkgPSBwYXJ0c1s6XQogICAgICAgICAgICAgd2hpbGUgcGFydHNfY29weToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18oJy4nLmpvaW4ocGFydHNfY29weSkpCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gJy4nLmpvaW4ocGFydHNfY29weSkKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXyhtb2R1bGVfbmFtZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBwYXJ0c19jb3B5Wy0xXQorICAgICAgICAgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSA9IHBhcnRzX2NvcHkucG9wKCkKKyAgICAgICAgICAgICAgICAgICAgIyBMYXN0IGVycm9yIHNvIHdlIGNhbiBnaXZlIGl0IHRvIHRoZSB1c2VyIGlmIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYXR0cmlidXRlLCBzZWxmLnN1aXRlQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJ0c19jb3B5OgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRXZlbiB0aGUgdG9wIGxldmVsIGltcG9ydCBmYWlsZWQ6IHJlcG9ydCB0aGF0IGVycm9yLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZQogICAgICAgICAgICAgcGFydHMgPSBwYXJ0c1sxOl0KICAgICAgICAgb2JqID0gbW9kdWxlCiAgICAgICAgIGZvciBwYXJ0IGluIHBhcnRzOgotICAgICAgICAgICAgcGFyZW50LCBvYmogPSBvYmosIGdldGF0dHIob2JqLCBwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHBhcmVudCwgb2JqID0gb2JqLCBnZXRhdHRyKG9iaiwgcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgV2UgY2FuJ3QgdHJhdmVyc2Ugc29tZSBwYXJ0IG9mIHRoZSBuYW1lLgorICAgICAgICAgICAgICAgIGlmIChnZXRhdHRyKG9iaiwgJ19fcGF0aF9fJywgTm9uZSkgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYW5kIGVycm9yX2Nhc2UgaXMgbm90IE5vbmUpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBwYWNrYWdlIChubyBfX3BhdGhfXyBwZXIgaW1wb3J0bGliIGRvY3MpLCBhbmQgd2UKKyAgICAgICAgICAgICAgICAgICAgIyBlbmNvdW50ZXJlZCBhbiBlcnJvciBpbXBvcnRpbmcgc29tZXRoaW5nLiBXZSBjYW5ub3QgdGVsbAorICAgICAgICAgICAgICAgICAgICAjIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcGFja2FnZS5Xcm9uZ05hbWVUZXN0Q2xhc3MgYW5kCisgICAgICAgICAgICAgICAgICAgICMgcGFja2FnZS53cm9uZ19tb2R1bGVfbmFtZSBzbyB3ZSBqdXN0IHJlcG9ydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBJbXBvcnRFcnJvciAtIGl0IGlzIG1vcmUgaW5mb3JtYXRpdmUuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBzaWduYWwgdGhhdCBhbiBBdHRyaWJ1dGVFcnJvciBoYXMgb2NjdXJyZWQuCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBfbWFrZV9mYWlsZWRfdGVzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnQsIGUsIHNlbGYuc3VpdGVDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gYWNjZXNzIGF0dHJpYnV0ZTpcbiVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpLCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Nb2R1bGVUeXBlKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUob2JqKQpAQCAtMTgxLDkgKzI0MywxMyBAQAogCiAgICAgICAgIElmIGEgdGVzdCBwYWNrYWdlIG5hbWUgKGRpcmVjdG9yeSB3aXRoICdfX2luaXRfXy5weScpIG1hdGNoZXMgdGhlCiAgICAgICAgIHBhdHRlcm4gdGhlbiB0aGUgcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZm9yIGEgJ2xvYWRfdGVzdHMnIGZ1bmN0aW9uLiBJZgotICAgICAgICB0aGlzIGV4aXN0cyB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggbG9hZGVyLCB0ZXN0cywgcGF0dGVybi4KKyAgICAgICAgdGhpcyBleGlzdHMgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSB1bmxlc3MKKyAgICAgICAgdGhlIHBhY2thZ2UgaGFzIGFscmVhZHkgaGFkIGxvYWRfdGVzdHMgY2FsbGVkIGZyb20gdGhlIHNhbWUgZGlzY292ZXJ5CisgICAgICAgIGludm9jYXRpb24sIGluIHdoaWNoIGNhc2UgdGhlIHBhY2thZ2UgbW9kdWxlIG9iamVjdCBpcyBub3Qgc2Nhbm5lZCBmb3IKKyAgICAgICAgdGVzdHMgLSB0aGlzIGVuc3VyZXMgdGhhdCB3aGVuIGEgcGFja2FnZSB1c2VzIGRpc2NvdmVyIHRvIGZ1cnRoZXIKKyAgICAgICAgZGlzY292ZXIgY2hpbGQgdGVzdHMgdGhhdCBpbmZpbml0ZSByZWN1cnNpb24gZG9lcyBub3QgaGFwcGVuLgogCi0gICAgICAgIElmIGxvYWRfdGVzdHMgZXhpc3RzIHRoZW4gZGlzY292ZXJ5IGRvZXMgICpub3QqIHJlY3Vyc2UgaW50byB0aGUgcGFja2FnZSwKKyAgICAgICAgSWYgbG9hZF90ZXN0cyBleGlzdHMgdGhlbiBkaXNjb3ZlcnkgZG9lcyAqbm90KiByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UsCiAgICAgICAgIGxvYWRfdGVzdHMgaXMgcmVzcG9uc2libGUgZm9yIGxvYWRpbmcgYWxsIHRlc3RzIGluIHRoZSBwYWNrYWdlLgogCiAgICAgICAgIFRoZSBwYXR0ZXJuIGlzIGRlbGliZXJhdGVseSBub3Qgc3RvcmVkIGFzIGEgbG9hZGVyIGF0dHJpYnV0ZSBzbyB0aGF0CkBAIC0yODgsNiArMzU0LDggQEAKICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKQogCiAgICAgZGVmIF9nZXRfbmFtZV9mcm9tX3BhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGggPT0gc2VsZi5fdG9wX2xldmVsX2RpcjoKKyAgICAgICAgICAgIHJldHVybiAnLicKICAgICAgICAgcGF0aCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQob3MucGF0aC5ub3JtcGF0aChwYXRoKSkKIAogICAgICAgICBfcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aChwYXRoLCBzZWxmLl90b3BfbGV2ZWxfZGlyKQpAQCAtMzA3LDYzICszNzUsMTExIEBACiAKICAgICBkZWYgX2ZpbmRfdGVzdHMoc2VsZiwgc3RhcnRfZGlyLCBwYXR0ZXJuLCBuYW1lc3BhY2U9RmFsc2UpOgogICAgICAgICAiIiJVc2VkIGJ5IGRpc2NvdmVyeS4gWWllbGRzIHRlc3Qgc3VpdGVzIGl0IGxvYWRzLiIiIgorICAgICAgICAjIEhhbmRsZSB0aGUgX19pbml0X18gaW4gdGhpcyBwYWNrYWdlCisgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoc3RhcnRfZGlyKQorICAgICAgICAjIG5hbWUgaXMgJy4nIHdoZW4gc3RhcnRfZGlyID09IHRvcF9sZXZlbF9kaXIgKGFuZCB0b3BfbGV2ZWxfZGlyIGlzIGJ5CisgICAgICAgICMgZGVmaW5pdGlvbiBub3QgYSBwYWNrYWdlKS4KKyAgICAgICAgaWYgbmFtZSAhPSAnLicgYW5kIG5hbWUgbm90IGluIHNlbGYuX2xvYWRpbmdfcGFja2FnZXM6CisgICAgICAgICAgICAjIG5hbWUgaXMgaW4gc2VsZi5fbG9hZGluZ19wYWNrYWdlcyB3aGlsZSB3ZSBoYXZlIGNhbGxlZCBpbnRvCisgICAgICAgICAgICAjIGxvYWRUZXN0c0Zyb21Nb2R1bGUgd2l0aCBuYW1lLgorICAgICAgICAgICAgdGVzdHMsIHNob3VsZF9yZWN1cnNlID0gc2VsZi5fZmluZF90ZXN0X3BhdGgoCisgICAgICAgICAgICAgICAgc3RhcnRfZGlyLCBwYXR0ZXJuLCBuYW1lc3BhY2UpCisgICAgICAgICAgICBpZiB0ZXN0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0cworICAgICAgICAgICAgaWYgbm90IHNob3VsZF9yZWN1cnNlOgorICAgICAgICAgICAgICAgICMgRWl0aGVyIGFuIGVycm9yIG9jY3VyZWQsIG9yIGxvYWRfdGVzdHMgd2FzIHVzZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgIyBwYWNrYWdlLgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIEhhbmRsZSB0aGUgY29udGVudHMuCiAgICAgICAgIHBhdGhzID0gc29ydGVkKG9zLmxpc3RkaXIoc3RhcnRfZGlyKSkKLQogICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9pbihzdGFydF9kaXIsIHBhdGgpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBWQUxJRF9NT0RVTEVfTkFNRS5tYXRjaChwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgIyB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMgb25seQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9tYXRjaF9wYXRoKHBhdGgsIGZ1bGxfcGF0aCwgcGF0dGVybik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBpZiB0aGUgdGVzdCBmaWxlIG1hdGNoZXMsIGxvYWQgaXQKKyAgICAgICAgICAgIHRlc3RzLCBzaG91bGRfcmVjdXJzZSA9IHNlbGYuX2ZpbmRfdGVzdF9wYXRoKAorICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCwgcGF0dGVybiwgbmFtZXNwYWNlKQorICAgICAgICAgICAgaWYgdGVzdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgeWllbGQgdGVzdHMKKyAgICAgICAgICAgIGlmIHNob3VsZF9yZWN1cnNlOgorICAgICAgICAgICAgICAgICMgd2UgZm91bmQgYSBwYWNrYWdlIHRoYXQgZGlkbid0IHVzZSBsb2FkX3Rlc3RzLgogICAgICAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoZnVsbF9wYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMuYWRkKG5hbWUpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9nZXRfbW9kdWxlX2Zyb21fbmFtZShuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBjYXNlLlNraXBUZXN0IGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIF9tYWtlX3NraXBwZWRfdGVzdChuYW1lLCBlLCBzZWxmLnN1aXRlQ2xhc3MpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc2VsZi5zdWl0ZUNsYXNzKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1vZF9maWxlID0gb3MucGF0aC5hYnNwYXRoKGdldGF0dHIobW9kdWxlLCAnX19maWxlX18nLCBmdWxsX3BhdGgpKQotICAgICAgICAgICAgICAgICAgICByZWFscGF0aCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQob3MucGF0aC5yZWFscGF0aChtb2RfZmlsZSkpCi0gICAgICAgICAgICAgICAgICAgIGZ1bGxwYXRoX25vZXh0ID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dChvcy5wYXRoLnJlYWxwYXRoKGZ1bGxfcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlYWxwYXRoLmxvd2VyKCkgIT0gZnVsbHBhdGhfbm9leHQubG93ZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocmVhbHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2RfbmFtZSA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICgiJXIgbW9kdWxlIGluY29ycmVjdGx5IGltcG9ydGVkIGZyb20gJXIuIEV4cGVjdGVkICVyLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklzIHRoaXMgbW9kdWxlIGdsb2JhbGx5IGluc3RhbGxlZD8iKQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnICUgKG1vZF9uYW1lLCBtb2R1bGVfZGlyLCBleHBlY3RlZF9kaXIpKQotICAgICAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0aCk6Ci0gICAgICAgICAgICAgICAgaWYgKG5vdCBuYW1lc3BhY2UgYW5kCi0gICAgICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZnVsbF9wYXRoLCAnX19pbml0X18ucHknKSkpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX2ZpbmRfdGVzdHMoZnVsbF9wYXRoLCBwYXR0ZXJuLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGluZ19wYWNrYWdlcy5kaXNjYXJkKG5hbWUpCiAKLSAgICAgICAgICAgICAgICBsb2FkX3Rlc3RzID0gTm9uZQotICAgICAgICAgICAgICAgIHRlc3RzID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIGZubWF0Y2gocGF0aCwgcGF0dGVybik6Ci0gICAgICAgICAgICAgICAgICAgICMgb25seSBjaGVjayBsb2FkX3Rlc3RzIGlmIHRoZSBwYWNrYWdlIGRpcmVjdG9yeSBpdHNlbGYgbWF0Y2hlcyB0aGUgZmlsdGVyCi0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9nZXRfbmFtZV9mcm9tX3BhdGgoZnVsbF9wYXRoKQotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgbG9hZF90ZXN0cyA9IGdldGF0dHIocGFja2FnZSwgJ2xvYWRfdGVzdHMnLCBOb25lKQotICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IHNlbGYubG9hZFRlc3RzRnJvbU1vZHVsZShwYWNrYWdlLCB1c2VfbG9hZF90ZXN0cz1GYWxzZSkKKyAgICBkZWYgX2ZpbmRfdGVzdF9wYXRoKHNlbGYsIGZ1bGxfcGF0aCwgcGF0dGVybiwgbmFtZXNwYWNlPUZhbHNlKToKKyAgICAgICAgIiIiVXNlZCBieSBkaXNjb3ZlcnkuCiAKLSAgICAgICAgICAgICAgICBpZiBsb2FkX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3RzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0cyBsb2FkZWQgZnJvbSBwYWNrYWdlIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RzCi0gICAgICAgICAgICAgICAgICAgICMgcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fZmluZF90ZXN0cyhmdWxsX3BhdGgsIHBhdHRlcm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U9bmFtZXNwYWNlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxvYWRfdGVzdHMoc2VsZiwgdGVzdHMsIHBhdHRlcm4pCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIF9tYWtlX2ZhaWxlZF9sb2FkX3Rlc3RzKHBhY2thZ2UuX19uYW1lX18sIGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgIExvYWRzIHRlc3RzIGZyb20gYSBzaW5nbGUgZmlsZSwgb3IgYSBkaXJlY3RvcmllcycgX19pbml0X18ucHkgd2hlbgorICAgICAgICBwYXNzZWQgdGhlIGRpcmVjdG9yeS4KKworICAgICAgICBSZXR1cm5zIGEgdHVwbGUgKE5vbmVfb3JfdGVzdHNfZnJvbV9maWxlLCBzaG91bGRfcmVjdXJzZSkuCisgICAgICAgICIiIgorICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgaWYgbm90IFZBTElEX01PRFVMRV9OQU1FLm1hdGNoKGJhc2VuYW1lKToKKyAgICAgICAgICAgICAgICAjIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycyBvbmx5CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIEZhbHNlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2hfcGF0aChiYXNlbmFtZSwgZnVsbF9wYXRoLCBwYXR0ZXJuKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgRmFsc2UKKyAgICAgICAgICAgICMgaWYgdGhlIHRlc3QgZmlsZSBtYXRjaGVzLCBsb2FkIGl0CisgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9nZXRfbW9kdWxlX2Zyb21fbmFtZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IGNhc2UuU2tpcFRlc3QgYXMgZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX21ha2Vfc2tpcHBlZF90ZXN0KG5hbWUsIGUsIHNlbGYuc3VpdGVDbGFzcyksIEZhbHNlCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IFwKKyAgICAgICAgICAgICAgICAgICAgX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KG5hbWUsIHNlbGYuc3VpdGVDbGFzcykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZSwgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbW9kX2ZpbGUgPSBvcy5wYXRoLmFic3BhdGgoCisgICAgICAgICAgICAgICAgICAgIGdldGF0dHIobW9kdWxlLCAnX19maWxlX18nLCBmdWxsX3BhdGgpKQorICAgICAgICAgICAgICAgIHJlYWxwYXRoID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5yZWFscGF0aChtb2RfZmlsZSkpCisgICAgICAgICAgICAgICAgZnVsbHBhdGhfbm9leHQgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKGZ1bGxfcGF0aCkpCisgICAgICAgICAgICAgICAgaWYgcmVhbHBhdGgubG93ZXIoKSAhPSBmdWxscGF0aF9ub2V4dC5sb3dlcigpOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlYWxwYXRoKQorICAgICAgICAgICAgICAgICAgICBtb2RfbmFtZSA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2RpciA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICgiJXIgbW9kdWxlIGluY29ycmVjdGx5IGltcG9ydGVkIGZyb20gJXIuIEV4cGVjdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIlci4gSXMgdGhpcyBtb2R1bGUgZ2xvYmFsbHkgaW5zdGFsbGVkPyIpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnICUgKG1vZF9uYW1lLCBtb2R1bGVfZGlyLCBleHBlY3RlZF9kaXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPXBhdHRlcm4pLCBGYWxzZQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZnVsbF9wYXRoKToKKyAgICAgICAgICAgIGlmIChub3QgbmFtZXNwYWNlIGFuZAorICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZnVsbF9wYXRoLCAnX19pbml0X18ucHknKSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQorCisgICAgICAgICAgICBsb2FkX3Rlc3RzID0gTm9uZQorICAgICAgICAgICAgdGVzdHMgPSBOb25lCisgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYWNrYWdlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBjYXNlLlNraXBUZXN0IGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9tYWtlX3NraXBwZWRfdGVzdChuYW1lLCBlLCBzZWxmLnN1aXRlQ2xhc3MpLCBGYWxzZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBcCisgICAgICAgICAgICAgICAgICAgIF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdChuYW1lLCBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UsIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvYWRfdGVzdHMgPSBnZXRhdHRyKHBhY2thZ2UsICdsb2FkX3Rlc3RzJywgTm9uZSkKKyAgICAgICAgICAgICAgICAjIE1hcmsgdGhpcyBwYWNrYWdlIGFzIGJlaW5nIGluIGxvYWRfdGVzdHMgKHBvc3NpYmx5IDspKQorICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMuYWRkKG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IHNlbGYubG9hZFRlc3RzRnJvbU1vZHVsZShwYWNrYWdlLCBwYXR0ZXJuPXBhdHRlcm4pCisgICAgICAgICAgICAgICAgICAgIGlmIGxvYWRfdGVzdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGxvYWRUZXN0c0Zyb21Nb2R1bGUocGFja2FnZSkgaGFzIGxvYWRlZCB0ZXN0cyBmb3IgdXMuCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdHMsIEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0cywgVHJ1ZQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMuZGlzY2FyZChuYW1lKQorCiAKIGRlZmF1bHRUZXN0TG9hZGVyID0gVGVzdExvYWRlcigpCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tYWluLnB5IGIvTGliL3VuaXR0ZXN0L21haW4ucHkKaW5kZXggZTc1MGNhNS4uMDlmZWZlMSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21haW4ucHkKKysrIGIvTGliL3VuaXR0ZXN0L21haW4ucHkKQEAgLTU4LDcgKzU4LDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kdWxlPSdfX21haW5fXycsIGRlZmF1bHRUZXN0PU5vbmUsIGFyZ3Y9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lcj1Ob25lLCB0ZXN0TG9hZGVyPWxvYWRlci5kZWZhdWx0VGVzdExvYWRlciwKICAgICAgICAgICAgICAgICAgICAgZXhpdD1UcnVlLCB2ZXJib3NpdHk9MSwgZmFpbGZhc3Q9Tm9uZSwgY2F0Y2hicmVhaz1Ob25lLAotICAgICAgICAgICAgICAgICAgICBidWZmZXI9Tm9uZSwgd2FybmluZ3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1Ob25lLCB3YXJuaW5ncz1Ob25lLCAqLCB0Yl9sb2NhbHM9RmFsc2UpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG1vZHVsZSwgc3RyKToKICAgICAgICAgICAgIHNlbGYubW9kdWxlID0gX19pbXBvcnRfXyhtb2R1bGUpCiAgICAgICAgICAgICBmb3IgcGFydCBpbiBtb2R1bGUuc3BsaXQoJy4nKVsxOl06CkBAIC03Myw4ICs3Myw5IEBACiAgICAgICAgIHNlbGYuY2F0Y2hicmVhayA9IGNhdGNoYnJlYWsKICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAgICAgc2VsZi5idWZmZXIgPSBidWZmZXIKKyAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSB0Yl9sb2NhbHMKICAgICAgICAgaWYgd2FybmluZ3MgaXMgTm9uZSBhbmQgbm90IHN5cy53YXJub3B0aW9uczoKLSAgICAgICAgICAgICMgZXZlbiBpZiBEcmVwcmVjYXRpb25XYXJuaW5ncyBhcmUgaWdub3JlZCBieSBkZWZhdWx0CisgICAgICAgICAgICAjIGV2ZW4gaWYgRGVwcmVjYXRpb25XYXJuaW5ncyBhcmUgaWdub3JlZCBieSBkZWZhdWx0CiAgICAgICAgICAgICAjIHByaW50IHRoZW0gYW55d2F5IHVubGVzcyBvdGhlciB3YXJuaW5ncyBzZXR0aW5ncyBhcmUKICAgICAgICAgICAgICMgc3BlY2lmaWVkIGJ5IHRoZSB3YXJuaW5ncyBhcmcgb3IgdGhlIC1XIHB5dGhvbiBmbGFnCiAgICAgICAgICAgICBzZWxmLndhcm5pbmdzID0gJ2RlZmF1bHQnCkBAIC0xNTksNyArMTYwLDkgQEAKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3ZlcmJvc2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUXVpZXQgb3V0cHV0JykKLQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWxvY2FscycsIGRlc3Q9J3RiX2xvY2FscycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTaG93IGxvY2FsIHZhcmlhYmxlcyBpbiB0cmFjZWJhY2tzJykKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mYWlsZmFzdCcsIGRlc3Q9J2ZhaWxmYXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKQEAgLTIzMSwxMCArMjM0LDE4IEBACiAgICAgICAgICAgICBzZWxmLnRlc3RSdW5uZXIgPSBydW5uZXIuVGV4dFRlc3RSdW5uZXIKICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnRlc3RSdW5uZXIsIHR5cGUpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIgPSBzZWxmLnRlc3RSdW5uZXIodmVyYm9zaXR5PXNlbGYudmVyYm9zaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9c2VsZi5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1zZWxmLmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzPXNlbGYud2FybmluZ3MpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKHZlcmJvc2l0eT1zZWxmLnZlcmJvc2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1zZWxmLmZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1zZWxmLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncz1zZWxmLndhcm5pbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiX2xvY2Fscz1zZWxmLnRiX2xvY2FscykKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAjIGRpZG4ndCBhY2NlcHQgdGhlIHRiX2xvY2FscyBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKHZlcmJvc2l0eT1zZWxmLnZlcmJvc2l0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1zZWxmLmZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1zZWxmLmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncz1zZWxmLndhcm5pbmdzKQogICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICAjIGRpZG4ndCBhY2NlcHQgdGhlIHZlcmJvc2l0eSwgYnVmZmVyIG9yIGZhaWxmYXN0IGFyZ3VtZW50cwogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIgPSBzZWxmLnRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21vY2sucHkgYi9MaWIvdW5pdHRlc3QvbW9jay5weQppbmRleCA1NzNjNzk5Li45OWNlMWUyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtMjcsOSArMjcsMTMgQEAKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcHByaW50CiBpbXBvcnQgc3lzCitpbXBvcnQgYnVpbHRpbnMKK2Zyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcywgcGFydGlhbAogCiAKK19idWlsdGlucyA9IHtuYW1lIGZvciBuYW1lIGluIGRpcihidWlsdGlucykgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpfQorCiBCYXNlRXhjZXB0aW9ucyA9IChCYXNlRXhjZXB0aW9uLCkKIGlmICdqYXZhJyBpbiBzeXMucGxhdGZvcm06CiAgICAgIyBqeXRob24KQEAgLTI3MSwxMyArMjc1LDExIEBACiAgICAgcmV0dXJuIHZhbHVlCiAKIAotX2FsbG93ZWRfbmFtZXMgPSBzZXQoCi0gICAgWwotICAgICAgICAncmV0dXJuX3ZhbHVlJywgJ19tb2NrX3JldHVybl92YWx1ZScsICdzaWRlX2VmZmVjdCcsCi0gICAgICAgICdfbW9ja19zaWRlX2VmZmVjdCcsICdfbW9ja19wYXJlbnQnLCAnX21vY2tfbmV3X3BhcmVudCcsCi0gICAgICAgICdfbW9ja19uYW1lJywgJ19tb2NrX25ld19uYW1lJwotICAgIF0KLSkKK19hbGxvd2VkX25hbWVzID0geworICAgICdyZXR1cm5fdmFsdWUnLCAnX21vY2tfcmV0dXJuX3ZhbHVlJywgJ3NpZGVfZWZmZWN0JywKKyAgICAnX21vY2tfc2lkZV9lZmZlY3QnLCAnX21vY2tfcGFyZW50JywgJ19tb2NrX25ld19wYXJlbnQnLAorICAgICdfbW9ja19uYW1lJywgJ19tb2NrX25ld19uYW1lJworfQogCiAKIGRlZiBfZGVsZWdhdGluZ19wcm9wZXJ0eShuYW1lKToKQEAgLTM3NSw3ICszNzcsNyBAQAogICAgIGRlZiBfX2luaXRfXygKICAgICAgICAgICAgIHNlbGYsIHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLAogICAgICAgICAgICAgcGFyZW50PU5vbmUsIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwKLSAgICAgICAgICAgIF9zcGVjX2FzX2luc3RhbmNlPUZhbHNlLCBfZWF0X3NlbGY9Tm9uZSwgKiprd2FyZ3MKKyAgICAgICAgICAgIF9zcGVjX2FzX2luc3RhbmNlPUZhbHNlLCBfZWF0X3NlbGY9Tm9uZSwgdW5zYWZlPUZhbHNlLCAqKmt3YXJncwogICAgICAgICApOgogICAgICAgICBpZiBfbmV3X3BhcmVudCBpcyBOb25lOgogICAgICAgICAgICAgX25ld19wYXJlbnQgPSBwYXJlbnQKQEAgLTQwNSw2ICs0MDcsNyBAQAogICAgICAgICBfX2RpY3RfX1snX21vY2tfbW9ja19jYWxscyddID0gX0NhbGxMaXN0KCkKIAogICAgICAgICBfX2RpY3RfX1snbWV0aG9kX2NhbGxzJ10gPSBfQ2FsbExpc3QoKQorICAgICAgICBfX2RpY3RfX1snX21vY2tfdW5zYWZlJ10gPSB1bnNhZmUKIAogICAgICAgICBpZiBrd2FyZ3M6CiAgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQpAQCAtNTAzLDcgKzUwNiw4IEBACiAgICAgICAgIGlmIGRlbGVnYXRlZCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QKICAgICAgICAgc2YgPSBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QKLSAgICAgICAgaWYgc2YgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShzZikgYW5kIG5vdCBpc2luc3RhbmNlKHNmLCBfTW9ja0l0ZXIpOgorICAgICAgICBpZiAoc2YgaXMgbm90IE5vbmUgYW5kIG5vdCBjYWxsYWJsZShzZikKKyAgICAgICAgICAgICAgICBhbmQgbm90IGlzaW5zdGFuY2Uoc2YsIF9Nb2NrSXRlcikgYW5kIG5vdCBfaXNfZXhjZXB0aW9uKHNmKSk6CiAgICAgICAgICAgICBzZiA9IF9Nb2NrSXRlcihzZikKICAgICAgICAgICAgIGRlbGVnYXRlZC5zaWRlX2VmZmVjdCA9IHNmCiAgICAgICAgIHJldHVybiBzZgpAQCAtNTY3LDEzICs1NzEsMTYgQEAKIAogCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lID09ICdfbW9ja19tZXRob2RzJzoKKyAgICAgICAgaWYgbmFtZSBpbiB7J19tb2NrX21ldGhvZHMnLCAnX21vY2tfdW5zYWZlJ306CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQogICAgICAgICBlbGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyBvciBuYW1lIGluIF9hbGxfbWFnaWNzOgogICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICVyIiAlIG5hbWUpCiAgICAgICAgIGVsaWYgX2lzX21hZ2ljKG5hbWUpOgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgaWYgbm90IHNlbGYuX21vY2tfdW5zYWZlOgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCgnYXNzZXJ0JywgJ2Fzc3JldCcpKToKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQogCiAgICAgICAgIHJlc3VsdCA9IHNlbGYuX21vY2tfY2hpbGRyZW4uZ2V0KG5hbWUpCiAgICAgICAgIGlmIHJlc3VsdCBpcyBfZGVsZXRlZDoKQEAgLTc1Niw2ICs3NjMsMTQgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBfY2FsbAogCisgICAgZGVmIGFzc2VydF9ub3RfY2FsbGVkKF9tb2NrX3NlbGYpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgbmV2ZXIgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgc2VsZi5jYWxsX2NvdW50ICE9IDA6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gbm90IGhhdmUgYmVlbiBjYWxsZWQuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKIAogICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgpAQCAtMTE3Miw2ICsxMTg3LDkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvY2FsID0gVHJ1ZQogCisgICAgICAgIGlmIG5hbWUgaW4gX2J1aWx0aW5zIGFuZCBpc2luc3RhbmNlKHRhcmdldCwgTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBzZWxmLmNyZWF0ZSA9IFRydWUKKwogICAgICAgICBpZiBub3Qgc2VsZi5jcmVhdGUgYW5kIG9yaWdpbmFsIGlzIERFRkFVTFQ6CiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKICAgICAgICAgICAgICAgICAiJXMgZG9lcyBub3QgaGF2ZSB0aGUgYXR0cmlidXRlICVyIiAlICh0YXJnZXQsIG5hbWUpCkBAIC0xNjU5LDcgKzE2NzcsNyBAQAogKQogCiBudW1lcmljcyA9ICgKLSAgICAiYWRkIHN1YiBtdWwgZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93IHRydWVkaXYiCisgICAgImFkZCBzdWIgbXVsIG1hdG11bCBkaXYgZmxvb3JkaXYgbW9kIGxzaGlmdCByc2hpZnQgYW5kIHhvciBvciBwb3cgdHJ1ZWRpdiIKICkKIGlucGxhY2UgPSAnICcuam9pbignaSVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKIHJpZ2h0ID0gJyAnLmpvaW4oJ3IlcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCkBAIC0xNjY4LDExICsxNjg2LDEyIEBACiAjIChhcyB0aGV5IGFyZSBtZXRhY2xhc3MgbWV0aG9kcykKICMgX19kZWxfXyBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBhcyBpdCBjYXVzZXMgcHJvYmxlbXMgaWYgaXQgZXhpc3RzCiAKLV9ub25fZGVmYXVsdHMgPSBzZXQoJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbiBbCi0gICAgJ2dldCcsICdzZXQnLCAnZGVsZXRlJywgJ3JldmVyc2VkJywgJ21pc3NpbmcnLCAncmVkdWNlJywgJ3JlZHVjZV9leCcsCi0gICAgJ2dldGluaXRhcmdzJywgJ2dldG5ld2FyZ3MnLCAnZ2V0c3RhdGUnLCAnc2V0c3RhdGUnLCAnZ2V0Zm9ybWF0JywKLSAgICAnc2V0Zm9ybWF0JywgJ3JlcHInLCAnZGlyJywgJ3N1YmNsYXNzZXMnLCAnZm9ybWF0JywKLV0pCitfbm9uX2RlZmF1bHRzID0geworICAgICdfX2dldF9fJywgJ19fc2V0X18nLCAnX19kZWxldGVfXycsICdfX3JldmVyc2VkX18nLCAnX19taXNzaW5nX18nLAorICAgICdfX3JlZHVjZV9fJywgJ19fcmVkdWNlX2V4X18nLCAnX19nZXRpbml0YXJnc19fJywgJ19fZ2V0bmV3YXJnc19fJywKKyAgICAnX19nZXRzdGF0ZV9fJywgJ19fc2V0c3RhdGVfXycsICdfX2dldGZvcm1hdF9fJywgJ19fc2V0Zm9ybWF0X18nLAorICAgICdfX3JlcHJfXycsICdfX2Rpcl9fJywgJ19fc3ViY2xhc3Nlc19fJywgJ19fZm9ybWF0X18nLAorfQogCiAKIGRlZiBfZ2V0X21ldGhvZChuYW1lLCBmdW5jKToKQEAgLTE2ODMsMTkgKzE3MDIsMTkgQEAKICAgICByZXR1cm4gbWV0aG9kCiAKIAotX21hZ2ljcyA9IHNldCgKK19tYWdpY3MgPSB7CiAgICAgJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbgogICAgICcgJy5qb2luKFttYWdpY19tZXRob2RzLCBudW1lcmljcywgaW5wbGFjZSwgcmlnaHRdKS5zcGxpdCgpCi0pCit9CiAKIF9hbGxfbWFnaWNzID0gX21hZ2ljcyB8IF9ub25fZGVmYXVsdHMKIAotX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHNldChbCitfdW5zdXBwb3J0ZWRfbWFnaWNzID0gewogICAgICdfX2dldGF0dHJfXycsICdfX3NldGF0dHJfXycsCiAgICAgJ19faW5pdF9fJywgJ19fbmV3X18nLCAnX19wcmVwYXJlX18nCiAgICAgJ19faW5zdGFuY2VjaGVja19fJywgJ19fc3ViY2xhc3NjaGVja19fJywKICAgICAnX19kZWxfXycKLV0pCit9CiAKIF9jYWxjdWxhdGVfcmV0dXJuX3ZhbHVlID0gewogICAgICdfX2hhc2hfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19oYXNoX18oc2VsZiksCkBAIC0xODg0LDcgKzE5MDMsNyBAQAogICAgIGZvcm1hdHRlZF9hcmdzID0gJycKICAgICBhcmdzX3N0cmluZyA9ICcsICcuam9pbihbcmVwcihhcmcpIGZvciBhcmcgaW4gYXJnc10pCiAgICAga3dhcmdzX3N0cmluZyA9ICcsICcuam9pbihbCi0gICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICAgICAgJyVzPSVyJyAlIChrZXksIHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBzb3J0ZWQoa3dhcmdzLml0ZW1zKCkpCiAgICAgXSkKICAgICBpZiBhcmdzX3N0cmluZzoKICAgICAgICAgZm9ybWF0dGVkX2FyZ3MgPSBhcmdzX3N0cmluZwpAQCAtMjAwNywxMCArMjAyNiw2IEBACiAgICAgICAgIHJldHVybiAob3RoZXJfYXJncywgb3RoZXJfa3dhcmdzKSA9PSAoc2VsZl9hcmdzLCBzZWxmX2t3YXJncykKIAogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCi0KLQogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncyksIG5hbWU9JygpJykKQEAgLTIwMjYsNiArMjA0MSwxMiBAQAogICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1uYW1lLCBwYXJlbnQ9c2VsZiwgZnJvbV9rYWxsPUZhbHNlKQogCiAKKyAgICBkZWYgY291bnQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRhdHRyX18oJ2NvdW50JykoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGluZGV4KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9fZ2V0YXR0cl9fKCdpbmRleCcpKCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuZnJvbV9rYWxsOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZSBvciAnY2FsbCcKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CmluZGV4IDhlMGE2NDMuLmExOGYxMWIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQpAQCAtNDUsNiArNDUsNyBAQAogICAgICAgICBzZWxmLnVuZXhwZWN0ZWRTdWNjZXNzZXMgPSBbXQogICAgICAgICBzZWxmLnNob3VsZFN0b3AgPSBGYWxzZQogICAgICAgICBzZWxmLmJ1ZmZlciA9IEZhbHNlCisgICAgICAgIHNlbGYudGJfbG9jYWxzID0gRmFsc2UKICAgICAgICAgc2VsZi5fc3Rkb3V0X2J1ZmZlciA9IE5vbmUKICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmZlciA9IE5vbmUKICAgICAgICAgc2VsZi5fb3JpZ2luYWxfc3Rkb3V0ID0gc3lzLnN0ZG91dApAQCAtMTc5LDkgKzE4MCwxMSBAQAogICAgICAgICBpZiBleGN0eXBlIGlzIHRlc3QuZmFpbHVyZUV4Y2VwdGlvbjoKICAgICAgICAgICAgICMgU2tpcCBhc3NlcnQqKCkgdHJhY2ViYWNrIGxldmVscwogICAgICAgICAgICAgbGVuZ3RoID0gc2VsZi5fY291bnRfcmVsZXZhbnRfdGJfbGV2ZWxzKHRiKQotICAgICAgICAgICAgbXNnTGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbihleGN0eXBlLCB2YWx1ZSwgdGIsIGxlbmd0aCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZ0xpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZXhjdHlwZSwgdmFsdWUsIHRiKQorICAgICAgICAgICAgbGVuZ3RoID0gTm9uZQorICAgICAgICB0Yl9lID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIGV4Y3R5cGUsIHZhbHVlLCB0YiwgbGltaXQ9bGVuZ3RoLCBjYXB0dXJlX2xvY2Fscz1zZWxmLnRiX2xvY2FscykKKyAgICAgICAgbXNnTGluZXMgPSBsaXN0KHRiX2UuZm9ybWF0KCkpCiAKICAgICAgICAgaWYgc2VsZi5idWZmZXI6CiAgICAgICAgICAgICBvdXRwdXQgPSBzeXMuc3Rkb3V0LmdldHZhbHVlKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CmluZGV4IDI4Yjg4NjUuLjIxMTIyNjIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQpAQCAtMTI2LDcgKzEyNiwxMyBAQAogICAgIHJlc3VsdGNsYXNzID0gVGV4dFRlc3RSZXN1bHQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW09Tm9uZSwgZGVzY3JpcHRpb25zPVRydWUsIHZlcmJvc2l0eT0xLAotICAgICAgICAgICAgICAgICBmYWlsZmFzdD1GYWxzZSwgYnVmZmVyPUZhbHNlLCByZXN1bHRjbGFzcz1Ob25lLCB3YXJuaW5ncz1Ob25lKToKKyAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9RmFsc2UsIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICAgKiwgdGJfbG9jYWxzPUZhbHNlKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgVGV4dFRlc3RSdW5uZXIuCisKKyAgICAgICAgU3ViY2xhc3NlcyBzaG91bGQgYWNjZXB0ICoqa3dhcmdzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IGFzIHRoZQorICAgICAgICBpbnRlcmZhY2UgY2hhbmdlcy4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHN0cmVhbSBpcyBOb25lOgogICAgICAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgogICAgICAgICBzZWxmLnN0cmVhbSA9IF9Xcml0ZWxuRGVjb3JhdG9yKHN0cmVhbSkKQEAgLTEzNCw2ICsxNDAsNyBAQAogICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogICAgICAgICBzZWxmLmZhaWxmYXN0ID0gZmFpbGZhc3QKICAgICAgICAgc2VsZi5idWZmZXIgPSBidWZmZXIKKyAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSB0Yl9sb2NhbHMKICAgICAgICAgc2VsZi53YXJuaW5ncyA9IHdhcm5pbmdzCiAgICAgICAgIGlmIHJlc3VsdGNsYXNzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5yZXN1bHRjbGFzcyA9IHJlc3VsdGNsYXNzCkBAIC0xNDcsNiArMTU0LDcgQEAKICAgICAgICAgcmVnaXN0ZXJSZXN1bHQocmVzdWx0KQogICAgICAgICByZXN1bHQuZmFpbGZhc3QgPSBzZWxmLmZhaWxmYXN0CiAgICAgICAgIHJlc3VsdC5idWZmZXIgPSBzZWxmLmJ1ZmZlcgorICAgICAgICByZXN1bHQudGJfbG9jYWxzID0gc2VsZi50Yl9sb2NhbHMKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgaWYgc2VsZi53YXJuaW5nczoKICAgICAgICAgICAgICAgICAjIGlmIHNlbGYud2FybmluZ3MgaXMgc2V0LCB1c2UgaXQgdG8gZmlsdGVyIGFsbCB0aGUgd2FybmluZ3MKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5CmluZGV4IDAyZThmM2EuLjUyOTI2NTMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3Qvc3VwcG9ydC5weQpAQCAtMjUsOCArMjUsNiBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNoKG9ial8xKSA9PSBoYXNoKG9ial8yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlciBhbmQgJXIgZG8gbm90IGhhc2ggZXF1YWwiICUgKG9ial8xLCBvYmpfMikpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlByb2JsZW0gaGFzaGluZyAlciBhbmQgJXI6ICVzIiAlIChvYmpfMSwgb2JqXzIsIGUpKQogCkBAIC0zNSw4ICszMyw2IEBACiAgICAgICAgICAgICAgICAgaWYgaGFzaChvYmpfMSkgPT0gaGFzaChvYmpfMik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgYW5kICVzIGhhc2ggZXF1YWwsIGJ1dCBzaG91bGRuJ3QiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpfMSwgb2JqXzIpKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJQcm9ibGVtIGhhc2hpbmcgJXMgYW5kICVzOiAlcyIgJSAob2JqXzEsIG9ial8yLCBlKSkKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGMzNDlhOTUuLmU2ZTJiYzIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTEzMyw3ICsxMzMsNiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdFJlZ2V4KCdBbGEgbWEga290YScsIHInay50JywgJ01lc3NhZ2UnKQogICAgICAgICBleGNlcHQgc2VsZi5mYWlsdXJlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCIna290JyIsIGUuYXJnc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01lc3NhZ2UnLCBlLmFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ2Fzc2VydE5vdFJlZ2V4IHNob3VsZCBoYXZlIGZhaWxlZC4nKQpAQCAtMzI5LDYgKzMyOCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lIDogb29wcyQiXSkKIAorICAgIGRlZiB0ZXN0QXNzZXJ0UmVnZXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydFJlZ2V4JywgKCdmb28nLCAnYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJeUmVnZXggZGlkbid0IG1hdGNoOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IGRpZG4ndCBtYXRjaDoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IGRpZG4ndCBtYXRjaDogKC4qKSA6IG9vcHMkIl0pCisKKyAgICBkZWYgdGVzdEFzc2VydE5vdFJlZ2V4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnROb3RSZWdleCcsICgnZm9vJywgJ2ZvbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXlJlZ2V4IG1hdGNoZWQ6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeUmVnZXggbWF0Y2hlZDoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IG1hdGNoZWQ6ICguKikgOiBvb3BzJCJdKQorCiAKICAgICBkZWYgYXNzZXJ0TWVzc2FnZXNDTShzZWxmLCBtZXRob2ROYW1lLCBhcmdzLCBmdW5jLCBlcnJvcnMpOgogICAgICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2JyZWFrLnB5CmluZGV4IDBiZjFhMjIuLjJjNzUwMTkgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9icmVhay5weQpAQCAtMjExLDYgKzIxMSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAgICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gZmFpbGZhc3QKICAgICAgICAgICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBjYXRjaGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi50Yl9sb2NhbHMgPSBGYWxzZQogICAgICAgICAgICAgICAgIHNlbGYudGVzdFJ1bm5lciA9IEZha2VSdW5uZXIKICAgICAgICAgICAgICAgICBzZWxmLnRlc3QgPSB0ZXN0CiAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCkBAIC0yMjEsNiArMjIyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLmluaXRBcmdzLCBbKCgpLCB7J2J1ZmZlcic6IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NpdHknOiB2ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IGZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5ydW5BcmdzLCBbdGVzdF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXN1bHQsIHJlc3VsdCkKQEAgLTIzNSw2ICsyMzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIFsoKCksIHsnYnVmZmVyJzogTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2l0eSc6IHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWxmYXN0JzogZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0Yl9sb2NhbHMnOiBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzJzogTm9uZX0pXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnJ1bkFyZ3MsIFt0ZXN0XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJlc3VsdCwgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CmluZGV4IDMyMWQ2N2EuLmFkYTczM2IgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKQEAgLTExMDMsMTIgKzExMDMsOSBAQAogICAgICAgICBleGNlcHQgc2VsZi5mYWlsdXJlRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAjIG5lZWQgdG8gcmVtb3ZlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBlcnJvciBtZXNzYWdlCiAgICAgICAgICAgICBlcnJvciA9IHN0cihlKS5zcGxpdCgnXG4nLCAxKVsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzYW1wbGVfdGV4dF9lcnJvciwgZXJyb3IpCiAKLSAgICAgICAgICAgICMgbm8gZmFpciB0ZXN0aW5nIG91cnNlbGYgd2l0aCBvdXJzZWxmLCBhbmQgYXNzZXJ0RXF1YWwgaXMgdXNlZCBmb3Igc3RyaW5ncwotICAgICAgICAgICAgIyBzbyBjYW4ndCB1c2UgYXNzZXJ0RXF1YWwgZWl0aGVyLiBKdXN0IHVzZSBhc3NlcnRUcnVlLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNhbXBsZV90ZXh0X2Vycm9yID09IGVycm9yKQotCi0gICAgZGVmIHRlc3RBc2VydEVxdWFsU2luZ2xlTGluZShzZWxmKToKKyAgICBkZWYgdGVzdEFzc2VydEVxdWFsU2luZ2xlTGluZShzZWxmKToKICAgICAgICAgc2FtcGxlX3RleHQgPSAibGFkZW4gc3dhbGxvd3MgZmx5IHNsb3dseSIKICAgICAgICAgcmV2aXNlZF9zYW1wbGVfdGV4dCA9ICJ1bmxhZGVuIHN3YWxsb3dzIGZseSBxdWlja2x5IgogICAgICAgICBzYW1wbGVfdGV4dF9lcnJvciA9ICIiIlwKQEAgLTExMjAsOCArMTExNyw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FtcGxlX3RleHQsIHJldmlzZWRfc2FtcGxlX3RleHQpCiAgICAgICAgIGV4Y2VwdCBzZWxmLmZhaWx1cmVFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICMgbmVlZCB0byByZW1vdmUgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGVycm9yIG1lc3NhZ2UKICAgICAgICAgICAgIGVycm9yID0gc3RyKGUpLnNwbGl0KCdcbicsIDEpWzFdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2FtcGxlX3RleHRfZXJyb3IgPT0gZXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZV90ZXh0X2Vycm9yLCBlcnJvcikKIAogICAgIGRlZiB0ZXN0QXNzZXJ0SXNOb25lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShOb25lKQpAQCAtMTE0Nyw2ICsxMTQ1LDkgQEAKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gbm8gZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb25Nb2NrLCBsYW1iZGE6IDApCisgICAgICAgICMgRmFpbHVyZSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciBleGNlcHRpb24gaXMgcmFpc2VkCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jayk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBTdHViKQpAQCAtMTE3MSwxMCArMTE3MiwzMSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2ssIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgZm9vYmFyPTQyKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgU3R1YikKIAorICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzTm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9iamVjdCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIDEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgb2JqZWN0KSkKKwogICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzUmVnZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEV4Y2VwdGlvbk1vY2soRXhjZXB0aW9uKToKICAgICAgICAgICAgIHBhc3MKQEAgLTExODQsNiArMTIwNiw4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb25Nb2NrLCByZS5jb21waWxlKCdleHBlY3QkJyksIFN0dWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgJ2V4cGVjdCQnLCBTdHViKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgJ2V4cGVjdCQnLCBOb25lKQogCiAgICAgZGVmIHRlc3RBc3NlcnROb3RSYWlzZXNSZWdleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKQEAgLTExOTQsNiArMTIxOCwxNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ15FeGNlcHRpb24gbm90IHJhaXNlZCBieSA8bGFtYmRhPiQnLAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgsIEV4Y2VwdGlvbiwgJ3gnLAogICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSkKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAnZXhwZWN0JywgbXNnPSdmb29iYXInKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ2Zvb2JhcicpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2V4cGVjdCcsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXNSZWdleEludmFsaWRSZWdleChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAyMDE0NS4KQEAgLTEyMzcsNiArMTI3MCwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgRXhjZXB0aW9uTW9jaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIHYpCiAKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4Tm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KDEsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KG9iamVjdCwgJ2V4cGVjdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoKFZhbHVlRXJyb3IsIDEpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgoVmFsdWVFcnJvciwgb2JqZWN0KSwgJ2V4cGVjdCcpCisKICAgICBkZWYgdGVzdEFzc2VydFdhcm5zQ2FsbGFibGUoc2VsZik6CiAgICAgICAgIGRlZiBfcnVudGltZV93YXJuKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJmb28iLCBSdW50aW1lV2FybmluZykKQEAgLTEyNTEsNiArMTI5OCw5IEBACiAgICAgICAgICMgRmFpbHVyZSB3aGVuIG5vIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5mYWlsdXJlRXhjZXB0aW9uKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIGxhbWJkYTogMCkKKyAgICAgICAgIyBGYWlsdXJlIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCBOb25lKQogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEyODksNiArMTMzOSwxNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcpOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgZm9vYmFyPTQyKToKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgd2FybmluZyBpcyB0cmlnZ2VyZWQKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgIyBGb3JjZSBkZWZhdWx0IGZpbHRlciAoaW4gY2FzZSB0ZXN0cyBhcmUgcnVuIHdpdGggLVdlKQpAQCAtMTMwMyw2ICsxMzYyLDIwIEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIF9ydW50aW1lX3dhcm4oKQogCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc05vRXhjZXB0aW9uVHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhvYmplY3QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCAxKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucygoVXNlcldhcm5pbmcsIG9iamVjdCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCBFeGNlcHRpb24pKQorCiAgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4Q2FsbGFibGUoc2VsZik6CiAgICAgICAgIGRlZiBfcnVudGltZV93YXJuKG1zZyk6CiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgUnVudGltZVdhcm5pbmcpCkBAIC0xMzEyLDYgKzEzODUsOSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiAwKQorICAgICAgICAjIEZhaWx1cmUgd2hlbiB0aGUgZnVuY3Rpb24gaXMgTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgIm8rIiwgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciB3YXJuaW5nIGlzIHRyaWdnZXJlZAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAjIEZvcmNlIGRlZmF1bHQgZmlsdGVyIChpbiBjYXNlIHRlc3RzIGFyZSBydW4gd2l0aCAtV2UpCkBAIC0xMzQ4LDYgKzE0MjQsMTUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIpOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBDdXN0b20gbWVzc2FnZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5mYWlsdXJlRXhjZXB0aW9uLCAnZm9vYmFyJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgJ28rJywgbXNnPSdmb29iYXInKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgSW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ2Zvb2JhcicpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICdvKycsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEzNjksNiArMTQ1NCwyMiBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFJ1bnRpbWVXYXJuaW5nLCAibysiKToKICAgICAgICAgICAgICAgICAgICAgX3J1bnRpbWVfd2FybigiYmFyeiIpCiAKKyAgICBkZWYgdGVzdEFzc2VydFdhcm5zUmVnZXhOb0V4Y2VwdGlvblR5cGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChVc2VyV2FybmluZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KDEsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgob2JqZWN0LCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgMSksICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoKFVzZXJXYXJuaW5nLCBvYmplY3QpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgRXhjZXB0aW9uKSwgJ2V4cGVjdCcpCisKICAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogICAgIGRlZiBhc3NlcnROb1N0ZGVycihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBidWY6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Rpc2NvdmVyeS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CmluZGV4IGYxMmU4OTguLjg5OTFmMzggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfZGlzY292ZXJ5LnB5CkBAIC0xLDQgKzEsNSBAQAotaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtNjksNyArNzAsMTMgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfaXNmaWxlKQogCiAgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBsYW1iZGEgcGF0aDogcGF0aCArICcgbW9kdWxlJwotICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxhbWJkYSBtb2R1bGU6IG1vZHVsZSArICcgdGVzdHMnCisgICAgICAgIG9yaWdfbG9hZF90ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGRlZiBsb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1Ob25lKToKKyAgICAgICAgICAgICMgVGhpcyBpcyB3aGVyZSBsb2FkX3Rlc3RzIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIGJhc2UgPSBvcmlnX2xvYWRfdGVzdHMobW9kdWxlLCBwYXR0ZXJuPXBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm4gYmFzZSArIFttb2R1bGUgKyAnIHRlc3RzJ10KKyAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUgPSBsb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGxvYWRlci5zdWl0ZUNsYXNzID0gbGFtYmRhIHRoaW5nOiB0aGluZwogCiAgICAgICAgIHRvcF9sZXZlbCA9IG9zLnBhdGguYWJzcGF0aCgnL2ZvbycpCiAgICAgICAgIGxvYWRlci5fdG9wX2xldmVsX2RpciA9IHRvcF9sZXZlbApAQCAtNzcsOSArODQsOSBAQAogCiAgICAgICAgICMgVGhlIHRlc3Qgc3VpdGVzIGZvdW5kIHNob3VsZCBiZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgZm9yIHJlbGlhYmxlCiAgICAgICAgICMgZXhlY3V0aW9uIG9yZGVyLgotICAgICAgICBleHBlY3RlZCA9IFtuYW1lICsgJyBtb2R1bGUgdGVzdHMnIGZvciBuYW1lIGluCi0gICAgICAgICAgICAgICAgICAgICgndGVzdDEnLCAndGVzdDInKV0KLSAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKFsoJ3Rlc3RfZGlyLiVzJyAlIG5hbWUpICsgJyBtb2R1bGUgdGVzdHMnIGZvciBuYW1lIGluCisgICAgICAgIGV4cGVjdGVkID0gW1tuYW1lICsgJyBtb2R1bGUgdGVzdHMnXSBmb3IgbmFtZSBpbgorICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QxJywgJ3Rlc3QyJywgJ3Rlc3RfZGlyJyldCisgICAgICAgIGV4cGVjdGVkLmV4dGVuZChbWygndGVzdF9kaXIuJXMnICUgbmFtZSkgKyAnIG1vZHVsZSB0ZXN0cyddIGZvciBuYW1lIGluCiAgICAgICAgICAgICAgICAgICAgICgndGVzdDMnLCAndGVzdDQnKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsIGV4cGVjdGVkKQogCkBAIC0xMTcsMzQgKzEyNCwyMDQgQEAKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICd0ZXN0X2RpcmVjdG9yeSc6CiAgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnbG9hZF90ZXN0cycKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cwogCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKIAogICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIG5hbWU6IE1vZHVsZShuYW1lKQotICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHVzZV9sb2FkX3Rlc3RzKToKLSAgICAgICAgICAgIGlmIHVzZV9sb2FkX3Rlc3RzOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigndXNlX2xvYWRfdGVzdHMgc2hvdWxkIGJlIEZhbHNlIGZvciBwYWNrYWdlcycpCi0gICAgICAgICAgICByZXR1cm4gbW9kdWxlLnBhdGggKyAnIG1vZHVsZSB0ZXN0cycKKyAgICAgICAgb3JpZ19sb2FkX3Rlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPU5vbmUpOgorICAgICAgICAgICAgIyBUaGlzIGlzIHdoZXJlIGxvYWRfdGVzdHMgaXMgY2FsbGVkLgorICAgICAgICAgICAgYmFzZSA9IG9yaWdfbG9hZF90ZXN0cyhtb2R1bGUsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgIHJldHVybiBiYXNlICsgW21vZHVsZS5wYXRoICsgJyBtb2R1bGUgdGVzdHMnXQogICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCiAKICAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gJy9mb28nCiAgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCiAgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKICAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cygnL2ZvbycsICd0ZXN0KicpKQogCi0gICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIHRlc3RfZGlyZWN0b3J5IHBhY2thZ2UgYnkgY2FsbGluZyBsb2FkX3Rlc3RzCi0gICAgICAgICMgYW5kIGRpcmVjdGx5IGZyb20gdGhlIHRlc3RfZGlyZWN0b3J5MiBwYWNrYWdlCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIGFfZGlyZWN0b3J5IGFuZCB0ZXN0X2RpcmVjdG9yeTIKKyAgICAgICAgIyBkaXJlY3RseSBhbmQgdmlhIGxvYWRfdGVzdHMgZm9yIHRoZSB0ZXN0X2RpcmVjdG9yeSBwYWNrYWdlLCB3aGljaAorICAgICAgICAjIHN0aWxsIGNhbGxzIHRoZSBiYXNlbGluZSBtb2R1bGUgbG9hZGVyLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnbG9hZF90ZXN0cycsICd0ZXN0X2RpcmVjdG9yeTInICsgJyBtb2R1bGUgdGVzdHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbWydhX2RpcmVjdG9yeSBtb2R1bGUgdGVzdHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2RpcmVjdG9yeSBsb2FkX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2RpcmVjdG9yeSBtb2R1bGUgdGVzdHMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2RpcmVjdG9yeTIgbW9kdWxlIHRlc3RzJ11dKQorCisKICAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLCBbJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5wYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorCisgICAgICAgICMgbG9hZF90ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgorICAgICAgICAjIChidXQgdGhlcmUgYXJlIG5vIHRlc3RzIGluIG91ciBzdHViIG1vZHVsZSBpdHNlbGYsIHNvIHRoYXRzIFtdIGF0IHRoZQorICAgICAgICAjIHRpbWUgb2YgY2FsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCBbXSwgJ3Rlc3QqJyldKQorCisgICAgZGVmIHRlc3RfZmluZF90ZXN0c19kZWZhdWx0X2NhbGxzX3BhY2thZ2VfbG9hZF90ZXN0cyhzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgb3JpZ2luYWxfbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfbGlzdGRpcigpOgorICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdpbmFsX2xpc3RkaXIKKyAgICAgICAgb3JpZ2luYWxfaXNmaWxlID0gb3MucGF0aC5pc2ZpbGUKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNmaWxlKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IG9yaWdpbmFsX2lzZmlsZQorICAgICAgICBvcmlnaW5hbF9pc2RpciA9IG9zLnBhdGguaXNkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNkaXIoKToKKyAgICAgICAgICAgIG9zLnBhdGguaXNkaXIgPSBvcmlnaW5hbF9pc2RpcgorCisgICAgICAgIGRpcmVjdG9yaWVzID0gWydhX2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeTInXQorICAgICAgICBwYXRoX2xpc3RzID0gW2RpcmVjdG9yaWVzLCBbXSwgW10sIFtdXQorICAgICAgICBvcy5saXN0ZGlyID0gbGFtYmRhIHBhdGg6IHBhdGhfbGlzdHMucG9wKDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2xpc3RkaXIpCisKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBUcnVlCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZGlyKQorCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IG9zLnBhdGguYmFzZW5hbWUocGF0aCkgbm90IGluIGRpcmVjdG9yaWVzCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZmlsZSkKKworICAgICAgICBjbGFzcyBNb2R1bGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhdGhzID0gW10KKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5wYXRocy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpID09ICd0ZXN0X2RpcmVjdG9yeSc6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIG5hbWU6IE1vZHVsZShuYW1lKQorICAgICAgICBvcmlnX2xvYWRfdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49Tm9uZSk6CisgICAgICAgICAgICAjIFRoaXMgaXMgd2hlcmUgbG9hZF90ZXN0cyBpcyBjYWxsZWQuCisgICAgICAgICAgICBiYXNlID0gb3JpZ19sb2FkX3Rlc3RzKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKQorICAgICAgICAgICAgcmV0dXJuIGJhc2UgKyBbbW9kdWxlLnBhdGggKyAnIG1vZHVsZSB0ZXN0cyddCisgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlID0gbG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBsb2FkZXIuc3VpdGVDbGFzcyA9IGxhbWJkYSB0aGluZzogdGhpbmcKKworICAgICAgICBsb2FkZXIuX3RvcF9sZXZlbF9kaXIgPSAnL2ZvbycKKyAgICAgICAgIyB0aGlzIHRpbWUgbm8gJy5weScgb24gdGhlIHBhdHRlcm4gc28gdGhhdCBpdCBjYW4gbWF0Y2gKKyAgICAgICAgIyBhIHRlc3QgcGFja2FnZQorICAgICAgICBzdWl0ZSA9IGxpc3QobG9hZGVyLl9maW5kX3Rlc3RzKCcvZm9vJywgJ3Rlc3QqLnB5JykpCisKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSBsb2FkZWQgdGVzdHMgZnJvbSB0aGUgYV9kaXJlY3RvcnkgYW5kIHRlc3RfZGlyZWN0b3J5MgorICAgICAgICAjIGRpcmVjdGx5IGFuZCB2aWEgbG9hZF90ZXN0cyBmb3IgdGhlIHRlc3RfZGlyZWN0b3J5IHBhY2thZ2UsIHdoaWNoCisgICAgICAgICMgc3RpbGwgY2FsbHMgdGhlIGJhc2VsaW5lIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snYV9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkgbG9hZF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkyIG1vZHVsZSB0ZXN0cyddXSkKKyAgICAgICAgIyBUaGUgdGVzdCBtb2R1bGUgcGF0aHMgc2hvdWxkIGJlIHNvcnRlZCBmb3IgcmVsaWFibGUgZXhlY3V0aW9uIG9yZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnYV9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnkyJ10pCisKIAogICAgICAgICAjIGxvYWRfdGVzdHMgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSB3aXRoIGxvYWRlciwgdGVzdHMgYW5kIHBhdHRlcm4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCAndGVzdF9kaXJlY3RvcnknICsgJyBtb2R1bGUgdGVzdHMnLCAndGVzdConKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkZXIsIFtdLCAndGVzdCoucHknKV0pCisKKyAgICBkZWYgdGVzdF9maW5kX3Rlc3RzX2N1c3RvbWlzZV92aWFfcGFja2FnZV9wYXR0ZXJuKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCB1c2VzIHRoZSBleGFtcGxlICdkby1ub3RoaW5nJyBsb2FkX3Rlc3RzIGZyb20KKyAgICAgICAgIyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvdW5pdHRlc3QuaHRtbCNsb2FkLXRlc3RzLXByb3RvY29sCisgICAgICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhhdCBhY3R1YWxseSB3b3Jrcy4KKyAgICAgICAgIyBIb3VzZWtlZXBpbmcKKyAgICAgICAgb3JpZ2luYWxfbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfbGlzdGRpcigpOgorICAgICAgICAgICAgb3MubGlzdGRpciA9IG9yaWdpbmFsX2xpc3RkaXIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfbGlzdGRpcikKKyAgICAgICAgb3JpZ2luYWxfaXNmaWxlID0gb3MucGF0aC5pc2ZpbGUKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNmaWxlKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IG9yaWdpbmFsX2lzZmlsZQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9pc2ZpbGUpCisgICAgICAgIG9yaWdpbmFsX2lzZGlyID0gb3MucGF0aC5pc2RpcgorICAgICAgICBkZWYgcmVzdG9yZV9pc2RpcigpOgorICAgICAgICAgICAgb3MucGF0aC5pc2RpciA9IG9yaWdpbmFsX2lzZGlyCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGgucmVtb3ZlLCBhYnNwYXRoKCcvZm9vJykpCisKKyAgICAgICAgIyBUZXN0IGRhdGE6IHdlIGV4cGVjdCB0aGUgZm9sbG93aW5nOgorICAgICAgICAjIGEgbGlzdGRpciB0byBmaW5kIG91ciBwYWNrYWdlLCBhbmQgYSBpc2ZpbGUgYW5kIGlzZGlyIGNoZWNrIG9uIGl0LgorICAgICAgICAjIGEgbW9kdWxlLWZyb20tbmFtZSBjYWxsIHRvIHR1cm4gdGhhdCBpbnRvIGEgbW9kdWxlCisgICAgICAgICMgZm9sbG93ZWQgYnkgbG9hZF90ZXN0cy4KKyAgICAgICAgIyB0aGVuIG91ciBsb2FkX3Rlc3RzIHdpbGwgY2FsbCBkaXNjb3ZlcigpIHdoaWNoIGlzIG1lc3N5CisgICAgICAgICMgYnV0IHRoYXQgZmluYWxseSBjaGFpbnMgaW50byBmaW5kX3Rlc3RzIGFnYWluIGZvciB0aGUgY2hpbGQgZGlyIC0KKyAgICAgICAgIyB3aGljaCBpcyB3aHkgd2UgZG9uJ3QgaGF2ZSBhIGluZmluaXRlIGxvb3AuCisgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZToKKyAgICAgICAgIyB0aGUgbW9kdWxlIGxvYWQgdGVzdHMgZm9yIGJvdGggcGFja2FnZSBhbmQgcGxhaW4gbW9kdWxlIGNhbGxlZCwKKyAgICAgICAgIyBhbmQgdGhlIHBsYWluIG1vZHVsZSByZXN1bHQgbmVzdGVkIGJ5IHRoZSBwYWNrYWdlIG1vZHVsZSBsb2FkX3Rlc3RzCisgICAgICAgICMgaW5kaWNhdGluZyB0aGF0IGl0IHdhcyBwcm9jZXNzZWQgYW5kIGNvdWxkIGhhdmUgYmVlbiBtdXRhdGVkLgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL2ZvbycpOiBbJ215X3BhY2thZ2UnXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy9mb28vbXlfcGFja2FnZScpOiBbJ19faW5pdF9fLnB5JywgJ3Rlc3RfbW9kdWxlLnB5J119CisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgb3MubGlzdGRpciA9IGxpc3RfZGlyCisgICAgICAgIG9zLnBhdGguaXNkaXIgPSBsYW1iZGEgcGF0aDogbm90IHBhdGguZW5kc3dpdGgoJy5weScpCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IHBhdGguZW5kc3dpdGgoJy5weScpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICAgICAgICAgIHNlbGYucGF0aHMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgndGVzdF9tb2R1bGUnKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRfdGVzdHNfYXJncy5hcHBlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnBhdGggKyAnIGxvYWRfdGVzdHMnXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdG9wIGxldmVsIGRpcmVjdG9yeSBjYWNoZWQgb24gbG9hZGVyIGluc3RhbmNlCisgICAgICAgICAgICAgICAgICAgICAgICBfX2ZpbGVfXyA9ICcvZm9vL215X3BhY2thZ2UvX19pbml0X18ucHknCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ190ZXN0cyA9IGxvYWRlci5kaXNjb3ZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9kaXI9dGhpc19kaXIsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJywgdGVzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICsgcGtnX3Rlc3RzCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gYWJzcGF0aCgnL2ZvbycpCisgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCisgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cyhhYnNwYXRoKCcvZm9vJyksICd0ZXN0Ki5weScpKQorCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gYm90aCBteV9wYWNrYWdlIGFuZAorICAgICAgICAjIG15X3BhY2FrZ2UudGVzdF9tb2R1bGUsIGFuZCBhbHNvIHJ1biB0aGUgbG9hZF90ZXN0cyBob29rIGluIGJvdGguCisgICAgICAgICMgKG5vcm1hbGx5IHRoaXMgd291bGQgYmUgbmVzdGVkIFRlc3RTdWl0ZXMuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtbJ215X3BhY2thZ2UgbG9hZF90ZXN0cycsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ215X3BhY2thZ2UudGVzdF9tb2R1bGUgbG9hZF90ZXN0cyddXV0pCisgICAgICAgICMgUGFyZW50cyBiZWZvcmUgY2hpbGRyZW4uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnbXlfcGFja2FnZScsICdteV9wYWNrYWdlLnRlc3RfbW9kdWxlJ10pCisKKyAgICAgICAgIyBsb2FkX3Rlc3RzIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHR3aWNlIHdpdGggbG9hZGVyLCB0ZXN0cyBhbmQgcGF0dGVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5sb2FkX3Rlc3RzX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2FkZXIsIFtdLCAndGVzdCoucHknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWRlciwgW10sICd0ZXN0Ki5weScpXSkKIAogICAgIGRlZiB0ZXN0X2Rpc2NvdmVyKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKQEAgLTE5Miw2ICszNjksNTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZmluZF90ZXN0c19hcmdzLCBbKHN0YXJ0X2RpciwgJ3BhdHRlcm4nKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4odG9wX2xldmVsX2Rpciwgc3lzLnBhdGgpCiAKKyAgICBkZWYgdGVzdF9kaXNjb3Zlcl9zdGFydF9kaXJfaXNfcGFja2FnZV9jYWxsc19wYWNrYWdlX2xvYWRfdGVzdHMoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgdGhlIHBhY2thZ2UgbG9hZF90ZXN0cyBpbiBhIHBhY2thZ2UgaXMgaW5kZWVkCisgICAgICAgICMgaW52b2tlZCB3aGVuIHRoZSBzdGFydF9kaXIgaXMgYSBwYWNrYWdlIChhbmQgbm90IHRoZSB0b3AgbGV2ZWwpLgorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMjQ1NworCisgICAgICAgICMgVGVzdCBkYXRhOiB3ZSBleHBlY3QgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgIyBhbiBpc2ZpbGUgdG8gdmVyaWZ5IHRoZSBwYWNrYWdlLCB0aGVuIGltcG9ydGluZyBhbmQgc2Nhbm5pbmcKKyAgICAgICAgIyBhcyBwZXIgX2ZpbmRfdGVzdHMnIG5vcm1hbCBiZWhhdmlvdXIuCisgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZSBvdXIgbG9hZF90ZXN0cyBob29rIGNhbGxlZCBvbmNlLgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL3RvcGxldmVsJyk6IFsnc3RhcnRkaXInXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy90b3BsZXZlbC9zdGFydGRpcicpOiBbJ19faW5pdF9fLnB5J119CisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLCAnbGlzdGRpcicsIG9zLmxpc3RkaXIpCisgICAgICAgIG9zLmxpc3RkaXIgPSBsaXN0X2RpcgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZmlsZScsIG9zLnBhdGguaXNmaWxlKQorICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IGxhbWJkYSBwYXRoOiBwYXRoLmVuZHN3aXRoKCcucHknKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZGlyJywgb3MucGF0aC5pc2RpcikKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBub3QgcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLnJlbW92ZSwgYWJzcGF0aCgnL3RvcGxldmVsJykpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgICAgICAgICBkZWYgbG9hZF90ZXN0cyhzZWxmLCBsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgICAgICByZXR1cm4gWydsb2FkX3Rlc3RzIGNhbGxlZCAnICsgc2VsZi5wYXRoXQorCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09IG90aGVyLnBhdGgKKworICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy90b3BsZXZlbC9zdGFydGRpcicsIHRvcF9sZXZlbF9kaXI9Jy90b3BsZXZlbCcpCisKKyAgICAgICAgIyBXZSBzaG91bGQgaGF2ZSBsb2FkZWQgdGVzdHMgZnJvbSB0aGUgcGFja2FnZSBfX2luaXRfXy4KKyAgICAgICAgIyAobm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBuZXN0ZWQgVGVzdFN1aXRlcy4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snbG9hZF90ZXN0cyBjYWxsZWQgc3RhcnRkaXInXV0pCisKICAgICBkZWYgc2V0dXBfaW1wb3J0X2lzc3VlX3Rlc3RzKHNlbGYsIGZha2VmaWxlKToKICAgICAgICAgbGlzdGRpciA9IG9zLmxpc3RkaXIKICAgICAgICAgb3MubGlzdGRpciA9IGxhbWJkYSBfOiBbZmFrZWZpbGVdCkBAIC0yMDQsNiArNDI2LDE3IEBACiAgICAgICAgICAgICBzeXMucGF0aFs6XSA9IG9yaWdfc3lzX3BhdGgKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmUpCiAKKyAgICBkZWYgc2V0dXBfaW1wb3J0X2lzc3VlX3BhY2thZ2VfdGVzdHMoc2VsZiwgdmZzKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLCAnbGlzdGRpcicsIG9zLmxpc3RkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcy5wYXRoLCAnaXNmaWxlJywgb3MucGF0aC5pc2ZpbGUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcy5wYXRoLCAnaXNkaXInLCBvcy5wYXRoLmlzZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnBhdGguX19zZXRpdGVtX18sIHNsaWNlKE5vbmUpLCBsaXN0KHN5cy5wYXRoKSkKKyAgICAgICAgZGVmIGxpc3RfZGlyKHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGxpc3QodmZzW3BhdGhdKQorICAgICAgICBvcy5saXN0ZGlyID0gbGlzdF9kaXIKKyAgICAgICAgb3MucGF0aC5pc2RpciA9IGxhbWJkYSBwYXRoOiBub3QgcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgb3MucGF0aC5pc2ZpbGUgPSBsYW1iZGEgcGF0aDogcGF0aC5lbmRzd2l0aCgnLnB5JykKKwogICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfbW9kdWxlc190aGF0X2ZhaWxfdG9faW1wb3J0KHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIApAQCAtMjEyLDExICs0NDUsNDQgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoJy4nKQogICAgICAgICBzZWxmLmFzc2VydEluKG9zLmdldGN3ZCgpLCBzeXMucGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogdGVzdF90aGlzX2RvZXNfbm90X2V4aXN0JyBpbiBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKICAgICAgICAgdGVzdCA9IGxpc3QobGlzdChzdWl0ZSlbMF0pWzBdICMgZXh0cmFjdCB0ZXN0IGZyb20gc3VpdGUKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHRlc3QudGVzdF90aGlzX2RvZXNfbm90X2V4aXN0KCkKIAorICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfaW5pdF9tb2R1bGVzX3RoYXRfZmFpbF90b19pbXBvcnQoc2VsZik6CisgICAgICAgIHZmcyA9IHthYnNwYXRoKCcvZm9vJyk6IFsnbXlfcGFja2FnZSddLAorICAgICAgICAgICAgICAgYWJzcGF0aCgnL2Zvby9teV9wYWNrYWdlJyk6IFsnX19pbml0X18ucHknLCAndGVzdF9tb2R1bGUucHknXX0KKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfcGFja2FnZV90ZXN0cyh2ZnMpCisgICAgICAgIGltcG9ydF9jYWxscyA9IFtdCisgICAgICAgIGRlZiBfZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSk6CisgICAgICAgICAgICBpbXBvcnRfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiQ2Fubm90IGltcG9ydCBOYW1lIikKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBfZ2V0X21vZHVsZV9mcm9tX25hbWUKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYWJzcGF0aCgnL2ZvbycpLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAnRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogbXlfcGFja2FnZScgaW4gZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHRlc3QgPSBsaXN0KGxpc3Qoc3VpdGUpWzBdKVswXSAjIGV4dHJhY3QgdGVzdCBmcm9tIHN1aXRlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgdGVzdC5teV9wYWNrYWdlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfY2FsbHMsIFsnbXlfcGFja2FnZSddKQorCiAgICAgICAgICMgQ2hlY2sgcGlja2xhYmlsaXR5CiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh0ZXN0LCBwcm90bykpCkBAIC0yNDEsNiArNTA3LDMwIEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzdWl0ZSwgcHJvdG8pKQogCisgICAgZGVmIHRlc3RfZGlzY292ZXJfd2l0aF9pbml0X21vZHVsZV90aGF0X3JhaXNlc19Ta2lwVGVzdF9vbl9pbXBvcnQoc2VsZik6CisgICAgICAgIHZmcyA9IHthYnNwYXRoKCcvZm9vJyk6IFsnbXlfcGFja2FnZSddLAorICAgICAgICAgICAgICAgYWJzcGF0aCgnL2Zvby9teV9wYWNrYWdlJyk6IFsnX19pbml0X18ucHknLCAndGVzdF9tb2R1bGUucHknXX0KKyAgICAgICAgc2VsZi5zZXR1cF9pbXBvcnRfaXNzdWVfcGFja2FnZV90ZXN0cyh2ZnMpCisgICAgICAgIGltcG9ydF9jYWxscyA9IFtdCisgICAgICAgIGRlZiBfZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSk6CisgICAgICAgICAgICBpbXBvcnRfY2FsbHMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnc2tpcHBlcm9vJykKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBfZ2V0X21vZHVsZV9mcm9tX25hbWUKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIuZGlzY292ZXIoYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYWJzcGF0aCgnL2ZvbycpLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgc3VpdGUucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LnNraXBwZWQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50ZXN0c1J1biwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfY2FsbHMsIFsnbXlfcGFja2FnZSddKQorCisgICAgICAgICMgQ2hlY2sgcGlja2xhYmlsaXR5CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzdWl0ZSwgcHJvdG8pKQorCiAgICAgZGVmIHRlc3RfY29tbWFuZF9saW5lX2hhbmRsaW5nX3BhcnNlQXJncyhzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IFRlc3RhYmxlVGVzdFByb2dyYW0oKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IGI2MmExYjUuLjY4ZjEwMzYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0xLDEyICsxLDM2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKLQoraW1wb3J0IHdhcm5pbmdzCiAKIGltcG9ydCB1bml0dGVzdAogCisjIERlY29yYXRvciB1c2VkIGluIHRoZSBkZXByZWNhdGlvbiB0ZXN0cyB0byByZXNldCB0aGUgd2FybmluZyByZWdpc3RyeSBmb3IKKyMgdGVzdCBpc29sYXRpb24gYW5kIHJlcHJvZHVjaWJpbGl0eS4KK2RlZiB3YXJuaW5ncmVnaXN0cnkoZnVuYyk6CisgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dzKToKKyAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCisgICAgICAgIHNhdmVkID0gZ2V0YXR0cih3YXJuaW5ncywgJ19fd2FybmluZ3JlZ2lzdHJ5X18nLCBtaXNzaW5nKS5jb3B5KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2F2ZWQgaXMgbWlzc2luZzoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRlbCB3YXJuaW5ncy5fX3dhcm5pbmdyZWdpc3RyeV9fCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLl9fd2FybmluZ3JlZ2lzdHJ5X18gPSBzYXZlZAorCiAKIGNsYXNzIFRlc3RfVGVzdExvYWRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICAjIyMgQmFzaWMgb2JqZWN0IHRlc3RzCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisgICAgZGVmIHRlc3RfX19pbml0X18oc2VsZik6CisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsb2FkZXIuZXJyb3JzKQorCiAgICAgIyMjIFRlc3RzIGZvciBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZQogICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtMTUwLDYgKzE3NCw3IEBACiAKICAgICAjIENoZWNrIHRoYXQgbG9hZFRlc3RzRnJvbU1vZHVsZSBob25vcnMgKG9yIG5vdCkgYSBtb2R1bGUKICAgICAjIHdpdGggYSBsb2FkX3Rlc3RzIGZ1bmN0aW9uLgorICAgIEB3YXJuaW5ncmVnaXN0cnkKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX19sb2FkX3Rlc3RzKHNlbGYpOgogICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCiAgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTY4LDEwICsxOTMsMTQ0IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgTm9uZV0pCisgICAgICAgICMgV2l0aCBQeXRob24gMy41LCB0aGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsIHVzZV9sb2FkX3Rlc3RzIGlzCisgICAgICAgICMgaWdub3JlZCAoYW5kIGRlcHJlY2F0ZWQpLgorICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1GYWxzZSk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ25ldmVyJykKKyAgICAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX2RlcHJlY2F0ZWRfcG9zaXRpb25hbChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQogCiAgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCi0gICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbXSkKKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgIyBUaGUgbWV0aG9kIHN0aWxsIHdvcmtzLgorICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgIyB1c2VfbG9hZF90ZXN0cz1UcnVlIGFzIGEgcG9zaXRpb25hbCBhcmd1bWVudC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgICMgbG9hZF90ZXN0cyB3YXMgc3RpbGwgY2FsbGVkIGJlY2F1c2UgdXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZAorICAgICAgICAgICAgIyBhbmQgaWdub3JlZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgTm9uZV0pCisgICAgICAgICMgV2UgZ290IGEgd2FybmluZy4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3Wy0xXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX2RlcHJlY2F0ZWRfa2V5d29yZChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisgICAgICAgICMgVGhlIG1ldGhvZCBzdGlsbCB3b3Jrcy4KKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIHVzZV9sb2FkX3Rlc3RzPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICAjIGxvYWRfdGVzdHMgd2FzIHN0aWxsIGNhbGxlZCBiZWNhdXNlIHVzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICMgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorICAgICAgICAgICAgIyBXZSBnb3QgYSB3YXJuaW5nLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcpCisKKyAgICBAd2FybmluZ3JlZ2lzdHJ5CisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fdG9vX21hbnlfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCisKKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbSwgXAorICAgICAgICAgICAgIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmcocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtLCBGYWxzZSwgJ3Rlc3RtZS4qJykKKyAgICAgICAgICAgICMgV2Ugc3RpbGwgZ290IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3Wy0xXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlX2xvYWRfdGVzdHMgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCcpCisgICAgICAgICAgICAjIFdlIGFsc28gZ290IGEgVHlwZUVycm9yIGZvciB0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbS5leGNlcHRpb24pLCBUeXBlRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICdsb2FkVGVzdHNGcm9tTW9kdWxlKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCAzIHdlcmUgZ2l2ZW4nKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3VzZV9sb2FkX3Rlc3RzX290aGVyX2JhZF9rZXl3b3JkKHNlbGYpOgorICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCisgICAgICAgIGNsYXNzIE15VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCisKKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgZGVmIGxvYWRfdGVzdHMobG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGVzdHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgICAgIGxvYWRfdGVzdHNfYXJncy5leHRlbmQoKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RzCisgICAgICAgIG0ubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignbmV2ZXInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKAorICAgICAgICAgICAgICAgICAgICBtLCB1c2VfbG9hZF90ZXN0cz1GYWxzZSwgdmVyeV9iYWQ9VHJ1ZSwgd29yc2U9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjbS5leGNlcHRpb24pLCBUeXBlRXJyb3IpCisgICAgICAgICMgVGhlIGVycm9yIG1lc3NhZ2UgbmFtZXMgdGhlIGZpcnN0IGJhZCBhcmd1bWVudCBhbHBoYWJldGljYWxseSwKKyAgICAgICAgIyBob3dldmVyIHVzZV9sb2FkX3Rlc3RzICh3aGljaCBzb3J0cyBmaXJzdCkgaXMgaWdub3JlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgImxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICd2ZXJ5X2JhZCciKQorCisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fcGF0dGVybihzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgcGF0dGVybj0ndGVzdG1lLionKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkX3Rlc3RzX2FyZ3MsIFtsb2FkZXIsIHN1aXRlLCAndGVzdG1lLionXSkKIAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX2ZhdWx0eV9sb2FkX3Rlc3RzKHNlbGYpOgogICAgICAgICBtID0gdHlwZXMuTW9kdWxlVHlwZSgnbScpCkBAIC0xODQsNiArMzQzLDEzIEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgIyBFcnJvcnMgbG9hZGluZyB0aGUgc3VpdGUgYXJlIGFsc28gY2FwdHVyZWQgZm9yIGludHJvc3BlY3Rpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoW10sIGxvYWRlci5lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxvYWRlci5lcnJvcnMpKQorICAgICAgICBlcnJvciA9IGxvYWRlci5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJ0ZhaWxlZCB0byBjYWxsIGxvYWRfdGVzdHM6JyBpbiBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKICAgICAgICAgdGVzdCA9IGxpc3Qoc3VpdGUpWzBdCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJzb21lIGZhaWx1cmUiLCB0ZXN0Lm0pCkBAIC0yMTksMTUgKzM4NSwxNSBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX19tYWxmb3JtZWRfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgVmFsdWVFcnJvciBvciBJbXBvcnRFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgSW1wb3J0RXJyb3IsIGV4cGVjdGVkX3JlZ2V4LCBnZXRhdHRyKHRlc3QsICdhYmMgKCkgLy8nKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIC4uLiB0byBhCiAgICAgIyBtb2R1bGUiCkBAIC0yMzYsMjggKzQwMiw0NyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX21vZHVsZV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnKQorICAgICAgICBleHBlY3RlZCA9ICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKICAgICAjIHdpdGhpbiBhIHRlc3QgY2FzZSBjbGFzcywgb3IgYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhCiAgICAgIyBUZXN0Q2FzZSBvciBUZXN0U3VpdGUgaW5zdGFuY2UuIgogICAgICMKLSAgICAjIFdoYXQgaGFwcGVucyB3aGVuIHRoZSBtb2R1bGUgaXMgZm91bmQsIGJ1dCB0aGUgYXR0cmlidXRlIGNhbid0PwotICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX2F0dHJfbmFtZShzZWxmKToKKyAgICAjIFdoYXQgaGFwcGVucyB3aGVuIHRoZSBtb2R1bGUgaXMgZm91bmQsIGJ1dCB0aGUgYXR0cmlidXRlIGlzbid0PworICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lX191bmtub3duX2F0dHJfbmFtZV9vbl9tb2R1bGUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJykKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3QubG9hZGVyLnNkYXNmYXNmYXNkZicpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QubG9hZGVyJyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQorCisgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCisgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCisgICAgIyB3aXRoaW4gYSB0ZXN0IGNhc2UgY2xhc3MsIG9yIGEgY2FsbGFibGUgb2JqZWN0IHdoaWNoIHJldHVybnMgYQorICAgICMgVGVzdENhc2Ugb3IgVGVzdFN1aXRlIGluc3RhbmNlLiIKKyAgICAjCisgICAgIyBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGZvdW5kLCBidXQgdGhlIGF0dHJpYnV0ZSBpc24ndD8KKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fdW5rbm93bl9hdHRyX25hbWVfb25fcGFja2FnZShzZWxmKToKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LnNkYXNmYXNmYXNkZicpCisgICAgICAgIGV4cGVjdGVkID0gIk5vIG1vZHVsZSBuYW1lZCAndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW1wb3J0RXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMjY5LDEyICs0NTQsMTMgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fcmVsYXRpdmVfdW5rbm93bl9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicsIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiJ21vZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lIGZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnLCB1bml0dGVzdCkKKyAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMjkwLDEyICs0NzYsMTMgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fcmVsYXRpdmVfZW1wdHlfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCcnLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCcnLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIGV4cGVjdGVkID0gImhhcyBubyBhdHRyaWJ1dGUgJyciCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCBnZXRhdHRyKHRlc3QsICcnKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtMzEwLDE0ICs0OTcsMTUgQEAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgQXR0cmlidXRlRXJyb3Igb3IgVmFsdWVFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgbmFtZSByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbW9kdWxlIgogICAgICMKQEAgLTQyMywxMiArNjExLDEzIEBACiAgICAgICAgIG0udGVzdGNhc2VfMSA9IE15VGVzdENhc2UKIAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCd0ZXN0Y2FzZV8xLnRlc3Rmb28nLCBtKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAidHlwZSBvYmplY3QgJ015VGVzdENhc2UnIGhhcyBubyBhdHRyaWJ1dGUgJ3Rlc3Rmb28nIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiRmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3Rlc3RjYXNlXzEudGVzdGZvbycsIG0pCisgICAgICAgIGV4cGVjdGVkID0gInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnRlc3Rmb28pCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSAuLi4gdG8KICAgICAjIC4uLiBhIGNhbGxhYmxlIG9iamVjdCB3aGljaCByZXR1cm5zIGEgLi4uIFRlc3RTdWl0ZSBpbnN0YW5jZSIKQEAgLTU0Niw2ICs3MzUsMjMgQEAKICAgICAjIyMgVGVzdHMgZm9yIFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKCkKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKKyAgICBkZWYgY2hlY2tfZGVmZXJyZWRfZXJyb3Ioc2VsZiwgbG9hZGVyLCBzdWl0ZSk6CisgICAgICAgICIiIkhlbHBlciBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgdGhhdCBlcnJvcnMgaW4gbG9hZGluZyBhcmUgcmVwb3J0ZWQuCisKKyAgICAgICAgOnBhcmFtIGxvYWRlcjogQSBsb2FkZXIgd2l0aCBzb21lIGVycm9ycy4KKyAgICAgICAgOnBhcmFtIHN1aXRlOiBBIHN1aXRlIHRoYXQgc2hvdWxkIGhhdmUgYSBsYXRlIGJvdW5kIGVycm9yLgorICAgICAgICA6cmV0dXJuOiBUaGUgZmlyc3QgZXJyb3IgbWVzc2FnZSBmcm9tIHRoZSBsb2FkZXIgYW5kIHRoZSB0ZXN0IG9iamVjdAorICAgICAgICAgICAgZnJvbSB0aGUgc3VpdGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3VpdGUsIHVuaXR0ZXN0LlRlc3RTdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZS5jb3VudFRlc3RDYXNlcygpLCAxKQorICAgICAgICAjIEVycm9ycyBsb2FkaW5nIHRoZSBzdWl0ZSBhcmUgYWxzbyBjYXB0dXJlZCBmb3IgaW50cm9zcGVjdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obG9hZGVyLmVycm9ycykpCisgICAgICAgIGVycm9yID0gbG9hZGVyLmVycm9yc1swXQorICAgICAgICB0ZXN0ID0gbGlzdChzdWl0ZSlbMF0KKyAgICAgICAgcmV0dXJuIGVycm9yLCB0ZXN0CisKICAgICAjICJTaW1pbGFyIHRvIGxvYWRUZXN0c0Zyb21OYW1lKCksIGJ1dCB0YWtlcyBhIHNlcXVlbmNlIG9mIG5hbWVzIHJhdGhlcgogICAgICMgdGhhbiBhIHNpbmdsZSBuYW1lLiIKICAgICAjCkBAIC01OTgsMTQgKzgwNCwxNSBAQAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAogICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByYWlzZSBWYWx1ZUVycm9yIG9yIEltcG9ydEVycm9yPwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsICBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEltcG9ydEVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTYxNiwxMiArODIzLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX21vZHVsZV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnc2Rhc2Zhc2Zhc2RmJ10pCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IHNkYXNmYXNmYXNkZiIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbXBvcnRFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02MzIsMTIgKzg0MCwxNCBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fdW5rbm93bl9hdHRyX25hbWUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd1bml0dGVzdC5zZGFzZmFzZmFzZGYnLCAndW5pdHRlc3QnXSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMgZmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICAgICAgWyd1bml0dGVzdC5sb2FkZXIuc2Rhc2Zhc2Zhc2RmJywgJ3VuaXR0ZXN0LnRlc3QuZHVtbXknXSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QubG9hZGVyJyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY1MSwxMiArODYxLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX25hbWVfcmVsYXRpdmVfMShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY3MCwxMiArODgxLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX191bmtub3duX25hbWVfcmVsYXRpdmVfMihzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ1Rlc3RDYXNlJywgJ3NkYXNmYXNmYXNkZiddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydUZXN0Q2FzZScsICdzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzFdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTY5MSwxMiArOTAzLDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVzX19yZWxhdGl2ZV9lbXB0eV9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnJ10sIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnJ10sIHVuaXR0ZXN0KQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAiaGFzIG5vIGF0dHJpYnV0ZSAnJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIGdldGF0dHIodGVzdCwgJycpKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC03MTAsMTQgKzkyMywxNSBAQAogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAogICAgICAgICAjIFhYWCBTaG91bGQgdGhpcyByYWlzZSBBdHRyaWJ1dGVFcnJvciBvciBWYWx1ZUVycm9yPwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10sIHVuaXR0ZXN0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgbmFtZSByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbW9kdWxlIgogICAgICMKQEAgLTgzNSwxMiArMTA0OSwxMyBAQAogICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCiAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd0ZXN0Y2FzZV8xLnRlc3Rmb28nXSwgbSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3Rlc3RjYXNlXzEudGVzdGZvbyddLCBtKQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAidHlwZSBvYmplY3QgJ015VGVzdENhc2UnIGhhcyBubyBhdHRyaWJ1dGUgJ3Rlc3Rmb28nIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC50ZXN0Zm9vKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgLi4uIHRvCiAgICAgIyAuLi4gYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhIC4uLiBUZXN0U3VpdGUgaW5zdGFuY2UiCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKaW5kZXggNzI1ZDY3Zi4uMWNmYzE3OSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQpAQCAtMTM0LDYgKzEzNCw3IEBACiAgICAgcmVzdWx0ID0gTm9uZQogICAgIHZlcmJvc2l0eSA9IDEKICAgICBkZWZhdWx0VGVzdCA9IE5vbmUKKyAgICB0Yl9sb2NhbHMgPSBGYWxzZQogICAgIHRlc3RSdW5uZXIgPSBOb25lCiAgICAgdGVzdExvYWRlciA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyCiAgICAgbW9kdWxlID0gJ19fbWFpbl9fJwpAQCAtMTQ3LDE4ICsxNDgsMTkgQEAKIGNsYXNzIEZha2VSdW5uZXIob2JqZWN0KToKICAgICBpbml0QXJncyA9IE5vbmUKICAgICB0ZXN0ID0gTm9uZQotICAgIHJhaXNlRXJyb3IgPSBGYWxzZQorICAgIHJhaXNlRXJyb3IgPSAwCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBGYWtlUnVubmVyLmluaXRBcmdzID0ga3dhcmdzCiAgICAgICAgIGlmIEZha2VSdW5uZXIucmFpc2VFcnJvcjoKLSAgICAgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IEZhbHNlCisgICAgICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgLT0gMQogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yCiAKICAgICBkZWYgcnVuKHNlbGYsIHRlc3QpOgogICAgICAgICBGYWtlUnVubmVyLnRlc3QgPSB0ZXN0CiAgICAgICAgIHJldHVybiBSRVNVTFQKIAorCiBjbGFzcyBUZXN0Q29tbWFuZExpbmVBcmdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2Niw3ICsxNjgsNyBAQAogICAgICAgICBzZWxmLnByb2dyYW0uY3JlYXRlVGVzdHMgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci5pbml0QXJncyA9IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci50ZXN0ID0gTm9uZQotICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSBGYWxzZQorICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSAwCiAKICAgICBkZWYgdGVzdFZlcmJvc2l0eShzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQpAQCAtMjU2LDYgKzI1OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5pbml0QXJncywgeyd2ZXJib3NpdHknOiAndmVyYm9zaXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6ICdmYWlsZmFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVmZmVyJzogJ2J1ZmZlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MnOiAnd2FybmluZ3MnfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnRlc3QsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcm9ncmFtLnJlc3VsdCwgUkVTVUxUKQpAQCAtMjc0LDEwICsyNzcsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLnRlc3QsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhwcm9ncmFtLnJlc3VsdCwgUkVTVUxUKQogCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCisKKyAgICAgICAgcHJvZ3JhbS50ZXN0UnVubmVyID0gRmFrZVJ1bm5lcgorICAgICAgICBwcm9ncmFtLnBhcnNlQXJncyhbTm9uZSwgJy0tbG9jYWxzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgcHJvZ3JhbS50Yl9sb2NhbHMpCisgICAgICAgIHByb2dyYW0ucnVuVGVzdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIHsnYnVmZmVyJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcmJvc2l0eSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KQorCiAgICAgZGVmIHRlc3RSdW5UZXN0c09sZFJ1bm5lckNsYXNzKHNlbGYpOgogICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCiAKLSAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gVHJ1ZQorICAgICAgICAjIFR3byBUeXBlRXJyb3JzIGFyZSBuZWVkZWQgdG8gZmFsbCBhbGwgdGhlIHdheSBiYWNrIHRvIG9sZC1zdHlsZQorICAgICAgICAjIHJ1bm5lcnMgLSBvbmUgdG8gZmFpbCB0Yl9sb2NhbHMsIG9uZSB0byBmYWlsIGJ1ZmZlciBldGMuCisgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IDIKICAgICAgICAgcHJvZ3JhbS50ZXN0UnVubmVyID0gRmFrZVJ1bm5lcgogICAgICAgICBwcm9ncmFtLnZlcmJvc2l0eSA9ICd2ZXJib3NpdHknCiAgICAgICAgIHByb2dyYW0uZmFpbGZhc3QgPSAnZmFpbGZhc3QnCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CmluZGV4IDQ4OWZlMTcuLmUzOWUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcmVzdWx0LnB5CkBAIC04LDYgKzgsMjAgQEAKIGltcG9ydCB1bml0dGVzdAogCiAKK2NsYXNzIE1vY2tUcmFjZWJhY2sob2JqZWN0KToKKyAgICBjbGFzcyBUcmFjZWJhY2tFeGNlcHRpb246CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYXB0dXJlX2xvY2FscyA9IGt3YXJncy5nZXQoJ2NhcHR1cmVfbG9jYWxzJywgRmFsc2UpCisgICAgICAgIGRlZiBmb3JtYXQoc2VsZik6CisgICAgICAgICAgICByZXN1bHQgPSBbJ0EgdHJhY2ViYWNrJ10KKyAgICAgICAgICAgIGlmIHNlbGYuY2FwdHVyZV9sb2NhbHM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnbG9jYWxzJykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworZGVmIHJlc3RvcmVfdHJhY2ViYWNrKCk6CisgICAgdW5pdHRlc3QucmVzdWx0LnRyYWNlYmFjayA9IHRyYWNlYmFjaworCisKIGNsYXNzIFRlc3RfVGVzdFJlc3VsdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBOb3RlOiB0aGVyZSBhcmUgbm90IHNlcGFyYXRlIHRlc3RzIGZvciBUZXN0UmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKSwKICAgICAjIFRlc3RSZXN1bHQuZXJyb3JzLCBUZXN0UmVzdWx0LmZhaWx1cmVzLCBUZXN0UmVzdWx0LnRlc3RzUnVuIG9yCkBAIC0yMjcsNiArMjQxLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jYXNlLCB0ZXN0KQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZm9ybWF0dGVkX2V4Yywgc3RyKQogCisgICAgZGVmIHRlc3RfYWRkRXJyb3JfbG9jYWxzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICB0ZXN0ID0gRm9vKCd0ZXN0XzEnKQorICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgcmVzdWx0LnRiX2xvY2FscyA9IFRydWUKKworICAgICAgICB1bml0dGVzdC5yZXN1bHQudHJhY2ViYWNrID0gTW9ja1RyYWNlYmFjaworICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV90cmFjZWJhY2spCisgICAgICAgIHJlc3VsdC5zdGFydFRlc3RSdW4oKQorICAgICAgICB0ZXN0LnJ1bihyZXN1bHQpCisgICAgICAgIHJlc3VsdC5zdG9wVGVzdFJ1bigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDEpCisgICAgICAgIHRlc3RfY2FzZSwgZm9ybWF0dGVkX2V4YyA9IHJlc3VsdC5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQSB0cmFjZWJhY2tsb2NhbHMnLCBmb3JtYXR0ZWRfZXhjKQorCiAgICAgZGVmIHRlc3RfYWRkU3ViVGVzdChzZWxmKToKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0XzEoc2VsZik6CkBAIC0zOTgsNiArNDMxLDcgQEAKICAgICBzZWxmLnRlc3RzUnVuID0gMAogICAgIHNlbGYuc2hvdWxkU3RvcCA9IEZhbHNlCiAgICAgc2VsZi5idWZmZXIgPSBGYWxzZQorICAgIHNlbGYudGJfbG9jYWxzID0gRmFsc2UKIAogY2xhc3NEaWN0WydfX2luaXRfXyddID0gX19pbml0X18KIE9sZFJlc3VsdCA9IHR5cGUoJ09sZFJlc3VsdCcsIChvYmplY3QsKSwgY2xhc3NEaWN0KQpAQCAtNDU0LDE1ICs0ODgsNiBAQAogICAgICAgICBydW5uZXIucnVuKFRlc3QoJ3Rlc3RGb28nKSkKIAogCi1jbGFzcyBNb2NrVHJhY2ViYWNrKG9iamVjdCk6Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBmb3JtYXRfZXhjZXB0aW9uKCpfKToKLSAgICAgICAgcmV0dXJuIFsnQSB0cmFjZWJhY2snXQotCi1kZWYgcmVzdG9yZV90cmFjZWJhY2soKToKLSAgICB1bml0dGVzdC5yZXN1bHQudHJhY2ViYWNrID0gdHJhY2ViYWNrCi0KLQogY2xhc3MgVGVzdE91dHB1dEJ1ZmZlcmluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CmluZGV4IDdjMGJkNTEuLjljYmMyNjAgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcnVubmVyLnB5CkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIud2FybmluZ3MsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydW5uZXIuZGVzY3JpcHRpb25zKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bm5lci5yZXN1bHRjbGFzcywgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShydW5uZXIudGJfbG9jYWxzKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEFSZXN1bHQodW5pdHRlc3QuVGVzdFJlc3VsdCk6CkBAIC0xNzIsMTQgKzE3MiwxMyBAQAogICAgICAgICAjIG9uIGFyZ3VtZW50cyBpbiBpdHMgX19pbml0X18gc3VwZXIgY2FsbAogICAgICAgICBBVGV4dFJlc3VsdChOb25lLCBOb25lLCAxKQogCi0KICAgICBkZWYgdGVzdEJ1ZmZlckFuZEZhaWxmYXN0KHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0Rm9vKHNlbGYpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCiAgICAgICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHN0cmVhbT1pby5TdHJpbmdJTygpLCBmYWlsZmFzdD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9VHJ1ZSkKICAgICAgICAgIyBVc2Ugb3VyIHJlc3VsdCBvYmplY3QKICAgICAgICAgcnVubmVyLl9tYWtlUmVzdWx0ID0gbGFtYmRhOiByZXN1bHQKICAgICAgICAgcnVubmVyLnJ1bihUZXN0KCd0ZXN0Rm9vJykpCkBAIC0xODcsNiArMTg2LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQuZmFpbGZhc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQuYnVmZmVyKQogCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihzdHJlYW09aW8uU3RyaW5nSU8oKSwgdGJfbG9jYWxzPVRydWUpCisgICAgICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4odW5pdHRlc3QuVGVzdFN1aXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgcmVzdWx0LnRiX2xvY2FscykKKwogICAgIGRlZiB0ZXN0UnVubmVyUmVnaXN0ZXJzUmVzdWx0KHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0Rm9vKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9zZXR1cHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQppbmRleCAzOTJmOTVlLi4yZGY3MDNlIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3NldHVwcy5weQpAQCAtMTExLDcgKzExMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5lcnJvcnMpLCAxKQogICAgICAgICBlcnJvciwgXyA9IHJlc3VsdC5lcnJvcnNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyb3IpLAotICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuQnJva2VuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgICAgICAgICAgICAgICdzZXRVcENsYXNzICglcy4lcyknICUgKF9fbmFtZV9fLCBCcm9rZW5UZXN0Ll9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9lcnJvcl9pbl90ZWFyZG93bl9jbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogICAgICAgICBlcnJvciwgXyA9IHJlc3VsdC5lcnJvcnNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyb3IpLAotICAgICAgICAgICAgICAgICAgICAndGVhckRvd25DbGFzcyAoJXMuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgICAgICAgICAgICAgICd0ZWFyRG93bkNsYXNzICglcy4lcyknICUgKF9fbmFtZV9fLCBUZXN0Ll9fcXVhbG5hbWVfXykpCiAKICAgICBkZWYgdGVzdF9jbGFzc19ub3RfdG9ybmRvd25fd2hlbl9zZXR1cF9mYWlscyhzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00MTQsNyArNDE0LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5za2lwcGVkKSwgMSkKICAgICAgICAgc2tpcHBlZCA9IHJlc3VsdC5za2lwcGVkWzBdWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNraXBwZWQpLCAnc2V0VXBDbGFzcyAoJXMuVGVzdCknICUgX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNraXBwZWQpLAorICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuJXMpJyAlIChfX25hbWVfXywgVGVzdC5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3Rfc2tpcHRlc3RfaW5fc2V0dXBtb2R1bGUoc2VsZik6CiAgICAgICAgIGNsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKaW5kZXggZTA1YzZlMC4uYmI5Yjk1NiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC00MjQsNiArNDI0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgW10pCiAKIAorICAgIGRlZiB0ZXN0X21hdG11bChzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtIEAgMSwgTWFnaWNNb2NrKQorICAgICAgICBtLl9fbWF0bXVsX18ucmV0dXJuX3ZhbHVlID0gNDIKKyAgICAgICAgbS5fX3JtYXRtdWxfXy5yZXR1cm5fdmFsdWUgPSA2NjYKKyAgICAgICAgbS5fX2ltYXRtdWxfXy5yZXR1cm5fdmFsdWUgPSAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0gQCAxLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxIEAgbSwgNjY2KQorICAgICAgICBtIEA9IDI0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgMjQpCisKICAgICBkZWYgdGVzdF9kaXZtb2RfYW5kX3JkaXZtb2Qoc2VsZik6CiAgICAgICAgIG0gPSBNYWdpY01vY2soKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGl2bW9kKDUsIG0pLCBNYWdpY01vY2spCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CmluZGV4IGNmMTY3M2MuLjJhNjA2OWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CkBAIC0xNzQsNiArMTc0LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMywgMiwgMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBzaWRlIGVmZmVjdCBub3QgdXNlZCBjb3JyZWN0bHkiKQogCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfc2lkZV9lZmZlY3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgZm9yIGlzc3VlIDIzNjYxCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gVmFsdWVFcnJvcignQmF6aW5nYSEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdCYXppbmdhIScsIG1vY2spCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygnamF2YScgaW4gc3lzLnBsYXRmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IG9ubHkgYXBwbGllcyB0byBKeXRob24nKQogICAgIGRlZiB0ZXN0X2phdmFfZXhjZXB0aW9uX3NpZGVfZWZmZWN0KHNlbGYpOgpAQCAtMTE5NCw2ICsxMjAzLDQyIEBACiAgICAgICAgIG0gPSBtb2NrLmNyZWF0ZV9hdXRvc3BlYyhvYmplY3QoKSwgbmFtZT0nc3dlZXRfZnVuYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N3ZWV0X2Z1bmMnLCByZXByKG0pKQogCisgICAgI0lzc3VlMjEyMzgKKyAgICBkZWYgdGVzdF9tb2NrX3Vuc2FmZShzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG0uYXNzZXJ0X2Zvb19jYWxsKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBtLmFzc3JldF9mb29fY2FsbCgpCisgICAgICAgIG0gPSBNb2NrKHVuc2FmZT1UcnVlKQorICAgICAgICBtLmFzc2VydF9mb29fY2FsbCgpCisgICAgICAgIG0uYXNzcmV0X2Zvb19jYWxsKCkKKworICAgICNJc3N1ZTIxMjYyCisgICAgZGVmIHRlc3RfYXNzZXJ0X25vdF9jYWxsZWQoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X25vdF9jYWxsZWQoKQorCisgICAgI0lzc3VlMjEyNTYgcHJpbnRvdXQgb2Yga2V5d29yZCBhcmdzIHNob3VsZCBiZSBpbiBkZXRlcm1pbmlzdGljIG9yZGVyCisgICAgZGVmIHRlc3Rfc29ydGVkX2NhbGxfc2lnbmF0dXJlKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIG0uaGVsbG8obmFtZT0naGVsbG8nLCBkYWRkeT0naGVybycpCisgICAgICAgIHRleHQgPSAiY2FsbChkYWRkeT0naGVybycsIG5hbWU9J2hlbGxvJykiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtLmhlbGxvLmNhbGxfYXJncyksIHRleHQpCisKKyAgICAjSXNzdWUyMTI3MCBvdmVycmlkZXMgdHVwbGUgbWV0aG9kcyBmb3IgbW9jay5jYWxsIG9iamVjdHMKKyAgICBkZWYgdGVzdF9vdmVycmlkZV90dXBsZV9tZXRob2RzKHNlbGYpOgorICAgICAgICBjID0gY2FsbC5jb3VudCgpCisgICAgICAgIGkgPSBjYWxsLmluZGV4KDEzMiwnaGVsbG8nKQorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIG0uY291bnQoKQorICAgICAgICBtLmluZGV4KDEzMiwiaGVsbG8iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzWzBdLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzWzFdLCBpKQorCiAgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlYyhzZWxmKToKICAgICAgICAgY2xhc3MgX09uZShvYmplY3QpOgogICAgICAgICAgICAgb25lID0gMQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CmluZGV4IGI1MTZmNDIuLjI4ZmU4NmIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTM3Nyw3ICszNzcsNyBAQAogCiAgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd29udF9jcmVhdGVfYnlfZGVmYXVsdChzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSkKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnb3JkJywgc2VudGluZWwuRnJvb2JsZSkKICAgICAgICAgICAgIGRlZiB0ZXN0KCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCiAKQEAgLTM4Niw3ICszODYsMjcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnb3JkJykpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2J1aWx0aW5zX3dpdGhvdXRfY3JlYXRlKHNlbGYpOgorICAgICAgICBAcGF0Y2goX19uYW1lX18rJy5vcmQnKQorICAgICAgICBkZWYgdGVzdF9vcmQobW9ja19vcmQpOgorICAgICAgICAgICAgbW9ja19vcmQucmV0dXJuX3ZhbHVlID0gMTAxCisgICAgICAgICAgICByZXR1cm4gb3JkKCdjJykKKworICAgICAgICBAcGF0Y2goX19uYW1lX18rJy5vcGVuJykKKyAgICAgICAgZGVmIHRlc3Rfb3Blbihtb2NrX29wZW4pOgorICAgICAgICAgICAgbSA9IG1vY2tfb3Blbi5yZXR1cm5fdmFsdWUKKyAgICAgICAgICAgIG0ucmVhZC5yZXR1cm5fdmFsdWUgPSAnYWJjZCcKKworICAgICAgICAgICAgZm9iaiA9IG9wZW4oJ2RvZXNub3RleGlzdHMudHh0JykKKyAgICAgICAgICAgIGRhdGEgPSBmb2JqLnJlYWQoKQorICAgICAgICAgICAgZm9iai5jbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9vcmQoKSwgMTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rfb3BlbigpLCAnYWJjZCcpCiAKIAogICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3RhdGljX21ldGhvZHMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdXRpbC5weSBiL0xpYi91bml0dGVzdC91dGlsLnB5CmluZGV4IGFlZTQ5OGYuLjQ1NDg1ZGMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC91dGlsLnB5CisrKyBiL0xpYi91bml0dGVzdC91dGlsLnB5CkBAIC01Miw3ICs1Miw3IEBACiAgICAgcmV0dXJuIHJlc3VsdFs6X01BWF9MRU5HVEhdICsgJyBbdHJ1bmNhdGVkXS4uLicKIAogZGVmIHN0cmNsYXNzKGNscyk6Ci0gICAgcmV0dXJuICIlcy4lcyIgJSAoY2xzLl9fbW9kdWxlX18sIGNscy5fX25hbWVfXykKKyAgICByZXR1cm4gIiVzLiVzIiAlIChjbHMuX19tb2R1bGVfXywgY2xzLl9fcXVhbG5hbWVfXykKIAogZGVmIHNvcnRlZF9saXN0X2RpZmZlcmVuY2UoZXhwZWN0ZWQsIGFjdHVhbCk6CiAgICAgIiIiRmluZHMgZWxlbWVudHMgaW4gb25seSBvbmUgb3IgdGhlIG90aGVyIG9mIHR3bywgc29ydGVkIGlucHV0IGxpc3RzLgpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9lcnJvci5weSBiL0xpYi91cmxsaWIvZXJyb3IucHkKaW5kZXggNDViNzE2OS4uYzViNjc1ZCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9lcnJvci5weQorKysgYi9MaWIvdXJsbGliL2Vycm9yLnB5CkBAIC0zNSw2ICszNSw3IEBACiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnPHVybG9wZW4gZXJyb3IgJXM+JyAlIHNlbGYucmVhc29uCiAKKwogY2xhc3MgSFRUUEVycm9yKFVSTEVycm9yLCB1cmxsaWIucmVzcG9uc2UuYWRkaW5mb3VybCk6CiAgICAgIiIiUmFpc2VkIHdoZW4gSFRUUCBlcnJvciBvY2N1cnMsIGJ1dCBhbHNvIGFjdHMgbGlrZSBub24tZXJyb3IgcmV0dXJuIiIiCiAgICAgX19zdXBlcl9pbml0ID0gdXJsbGliLnJlc3BvbnNlLmFkZGluZm91cmwuX19pbml0X18KQEAgLTU1LDYgKzU2LDkgQEAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICdIVFRQIEVycm9yICVzOiAlcycgJSAoc2VsZi5jb2RlLCBzZWxmLm1zZykKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8SFRUUEVycm9yICVzOiAlcj4nICUgKHNlbGYuY29kZSwgc2VsZi5tc2cpCisKICAgICAjIHNpbmNlIFVSTEVycm9yIHNwZWNpZmllcyBhIC5yZWFzb24gYXR0cmlidXRlLCBIVFRQRXJyb3Igc2hvdWxkIGFsc28KICAgICAjICBwcm92aWRlIHRoaXMgYXR0cmlidXRlLiBTZWUgaXNzdWUxMzIxMSBmb3IgZGlzY3Vzc2lvbi4KICAgICBAcHJvcGVydHkKQEAgLTY5LDggKzczLDkgQEAKICAgICBkZWYgaGVhZGVycyhzZWxmLCBoZWFkZXJzKToKICAgICAgICAgc2VsZi5oZHJzID0gaGVhZGVycwogCi0jIGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBkb3dubG9hZGVkIHNpemUgZG9lcyBub3QgbWF0Y2ggY29udGVudC1sZW5ndGgKKwogY2xhc3MgQ29udGVudFRvb1Nob3J0RXJyb3IoVVJMRXJyb3IpOgorICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBkb3dubG9hZGVkIHNpemUgZG9lcyBub3QgbWF0Y2ggY29udGVudC1sZW5ndGguIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGNvbnRlbnQpOgogICAgICAgICBVUkxFcnJvci5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQogICAgICAgICBzZWxmLmNvbnRlbnQgPSBjb250ZW50CmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3BhcnNlLnB5IGIvTGliL3VybGxpYi9wYXJzZS5weQppbmRleCBkMzY4MzMxLi4wMWM5ZTU4IDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3BhcnNlLnB5CisrKyBiL0xpYi91cmxsaWIvcGFyc2UucHkKQEAgLTM0LDcgKzM0LDkgQEAKIF9fYWxsX18gPSBbInVybHBhcnNlIiwgInVybHVucGFyc2UiLCAidXJsam9pbiIsICJ1cmxkZWZyYWciLAogICAgICAgICAgICAidXJsc3BsaXQiLCAidXJsdW5zcGxpdCIsICJ1cmxlbmNvZGUiLCAicGFyc2VfcXMiLAogICAgICAgICAgICAicGFyc2VfcXNsIiwgInF1b3RlIiwgInF1b3RlX3BsdXMiLCAicXVvdGVfZnJvbV9ieXRlcyIsCi0gICAgICAgICAgICJ1bnF1b3RlIiwgInVucXVvdGVfcGx1cyIsICJ1bnF1b3RlX3RvX2J5dGVzIl0KKyAgICAgICAgICAgInVucXVvdGUiLCAidW5xdW90ZV9wbHVzIiwgInVucXVvdGVfdG9fYnl0ZXMiLAorICAgICAgICAgICAiRGVmcmFnUmVzdWx0IiwgIlBhcnNlUmVzdWx0IiwgIlNwbGl0UmVzdWx0IiwKKyAgICAgICAgICAgIkRlZnJhZ1Jlc3VsdEJ5dGVzIiwgIlBhcnNlUmVzdWx0Qnl0ZXMiLCAiU3BsaXRSZXN1bHRCeXRlcyJdCiAKICMgQSBjbGFzc2lmaWNhdGlvbiBvZiBzY2hlbWVzICgnJyBtZWFucyBhcHBseSBieSBkZWZhdWx0KQogdXNlc19yZWxhdGl2ZSA9IFsnZnRwJywgJ2h0dHAnLCAnZ29waGVyJywgJ25udHAnLCAnaW1hcCcsCkBAIC00MDksMTEgKzQxMSwxMyBAQAogICAgICAgICByZXR1cm4gdXJsCiAgICAgaWYgbm90IHVybDoKICAgICAgICAgcmV0dXJuIGJhc2UKKwogICAgIGJhc2UsIHVybCwgX2NvZXJjZV9yZXN1bHQgPSBfY29lcmNlX2FyZ3MoYmFzZSwgdXJsKQogICAgIGJzY2hlbWUsIGJuZXRsb2MsIGJwYXRoLCBicGFyYW1zLCBicXVlcnksIGJmcmFnbWVudCA9IFwKICAgICAgICAgICAgIHVybHBhcnNlKGJhc2UsICcnLCBhbGxvd19mcmFnbWVudHMpCiAgICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50ID0gXAogICAgICAgICAgICAgdXJscGFyc2UodXJsLCBic2NoZW1lLCBhbGxvd19mcmFnbWVudHMpCisKICAgICBpZiBzY2hlbWUgIT0gYnNjaGVtZSBvciBzY2hlbWUgbm90IGluIHVzZXNfcmVsYXRpdmU6CiAgICAgICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmwpCiAgICAgaWYgc2NoZW1lIGluIHVzZXNfbmV0bG9jOgpAQCAtNDIxLDkgKzQyNSw3IEBACiAgICAgICAgICAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpKSkKICAgICAgICAgbmV0bG9jID0gYm5ldGxvYwotICAgIGlmIHBhdGhbOjFdID09ICcvJzoKLSAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpKSkKKwogICAgIGlmIG5vdCBwYXRoIGFuZCBub3QgcGFyYW1zOgogICAgICAgICBwYXRoID0gYnBhdGgKICAgICAgICAgcGFyYW1zID0gYnBhcmFtcwpAQCAtNDMxLDI5ICs0MzMsNDUgQEAKICAgICAgICAgICAgIHF1ZXJ5ID0gYnF1ZXJ5CiAgICAgICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCi0gICAgc2VnbWVudHMgPSBicGF0aC5zcGxpdCgnLycpWzotMV0gKyBwYXRoLnNwbGl0KCcvJykKLSAgICAjIFhYWCBUaGUgc3R1ZmYgYmVsb3cgaXMgYm9ndXMgaW4gdmFyaW91cyB3YXlzLi4uCi0gICAgaWYgc2VnbWVudHNbLTFdID09ICcuJzoKLSAgICAgICAgc2VnbWVudHNbLTFdID0gJycKLSAgICB3aGlsZSAnLicgaW4gc2VnbWVudHM6Ci0gICAgICAgIHNlZ21lbnRzLnJlbW92ZSgnLicpCi0gICAgd2hpbGUgMToKLSAgICAgICAgaSA9IDEKLSAgICAgICAgbiA9IGxlbihzZWdtZW50cykgLSAxCi0gICAgICAgIHdoaWxlIGkgPCBuOgotICAgICAgICAgICAgaWYgKHNlZ21lbnRzW2ldID09ICcuLicKLSAgICAgICAgICAgICAgICBhbmQgc2VnbWVudHNbaS0xXSBub3QgaW4gKCcnLCAnLi4nKSk6Ci0gICAgICAgICAgICAgICAgZGVsIHNlZ21lbnRzW2ktMTppKzFdCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGkgPSBpKzEKKworICAgIGJhc2VfcGFydHMgPSBicGF0aC5zcGxpdCgnLycpCisgICAgaWYgYmFzZV9wYXJ0c1stMV0gIT0gJyc6CisgICAgICAgICMgdGhlIGxhc3QgaXRlbSBpcyBub3QgYSBkaXJlY3RvcnksIHNvIHdpbGwgbm90IGJlIHRha2VuIGludG8gYWNjb3VudAorICAgICAgICAjIGluIHJlc29sdmluZyB0aGUgcmVsYXRpdmUgcGF0aAorICAgICAgICBkZWwgYmFzZV9wYXJ0c1stMV0KKworICAgICMgZm9yIHJmYzM5ODYsIGlnbm9yZSBhbGwgYmFzZSBwYXRoIHNob3VsZCB0aGUgZmlyc3QgY2hhcmFjdGVyIGJlIHJvb3QuCisgICAgaWYgcGF0aFs6MV0gPT0gJy8nOgorICAgICAgICBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKQorICAgIGVsc2U6CisgICAgICAgIHNlZ21lbnRzID0gYmFzZV9wYXJ0cyArIHBhdGguc3BsaXQoJy8nKQorICAgICAgICAjIGZpbHRlciBvdXQgZWxlbWVudHMgdGhhdCB3b3VsZCBjYXVzZSByZWR1bmRhbnQgc2xhc2hlcyBvbiByZS1qb2luaW5nCisgICAgICAgICMgdGhlIHJlc29sdmVkX3BhdGgKKyAgICAgICAgc2VnbWVudHNbMTotMV0gPSBmaWx0ZXIoTm9uZSwgc2VnbWVudHNbMTotMV0pCisKKyAgICByZXNvbHZlZF9wYXRoID0gW10KKworICAgIGZvciBzZWcgaW4gc2VnbWVudHM6CisgICAgICAgIGlmIHNlZyA9PSAnLi4nOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJlc29sdmVkX3BhdGgucG9wKCkKKyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgICMgaWdub3JlIGFueSAuLiBzZWdtZW50cyB0aGF0IHdvdWxkIG90aGVyd2lzZSBjYXVzZSBhbiBJbmRleEVycm9yCisgICAgICAgICAgICAgICAgIyB3aGVuIHBvcHBlZCBmcm9tIHJlc29sdmVkX3BhdGggaWYgcmVzb2x2aW5nIGZvciByZmMzOTg2CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmIHNlZyA9PSAnLic6CisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJlYWsKLSAgICBpZiBzZWdtZW50cyA9PSBbJycsICcuLiddOgotICAgICAgICBzZWdtZW50c1stMV0gPSAnJwotICAgIGVsaWYgbGVuKHNlZ21lbnRzKSA+PSAyIGFuZCBzZWdtZW50c1stMV0gPT0gJy4uJzoKLSAgICAgICAgc2VnbWVudHNbLTI6XSA9IFsnJ10KLSAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsICcvJy5qb2luKHNlZ21lbnRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBxdWVyeSwgZnJhZ21lbnQpKSkKKyAgICAgICAgICAgIHJlc29sdmVkX3BhdGguYXBwZW5kKHNlZykKKworICAgIGlmIHNlZ21lbnRzWy0xXSBpbiAoJy4nLCAnLi4nKToKKyAgICAgICAgIyBkbyBzb21lIHBvc3QtcHJvY2Vzc2luZyBoZXJlLiBpZiB0aGUgbGFzdCBzZWdtZW50IHdhcyBhIHJlbGF0aXZlIGRpciwKKyAgICAgICAgIyB0aGVuIHdlIG5lZWQgdG8gYXBwZW5kIHRoZSB0cmFpbGluZyAnLycKKyAgICAgICAgcmVzb2x2ZWRfcGF0aC5hcHBlbmQoJycpCisKKyAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsICcvJy5qb2luKAorICAgICAgICByZXNvbHZlZF9wYXRoKSBvciAnLycsIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCisKIAogZGVmIHVybGRlZnJhZyh1cmwpOgogICAgICIiIlJlbW92ZXMgYW55IGV4aXN0aW5nIGZyYWdtZW50IGZyb20gVVJMLgpAQCAtNjQxLDcgKzY1OSw3IEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICMgV2l0aG91dCB0aGlzLCB3aWxsIGp1c3QgZGlzcGxheSBhcyBhIGRlZmF1bHRkaWN0Ci0gICAgICAgIHJldHVybiAiPFF1b3RlciAlcj4iICUgZGljdChzZWxmKQorICAgICAgICByZXR1cm4gIjwlcyAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBkaWN0KHNlbGYpKQogCiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGIpOgogICAgICAgICAjIEhhbmRsZSBhIGNhY2hlIG1pc3MuIFN0b3JlIHF1b3RlZCBzdHJpbmcgaW4gY2FjaGUgYW5kIHJldHVybi4KQEAgLTczMiw3ICs3NTAsOCBAQAogICAgICAgICBfc2FmZV9xdW90ZXJzW3NhZmVdID0gcXVvdGVyID0gUXVvdGVyKHNhZmUpLl9fZ2V0aXRlbV9fCiAgICAgcmV0dXJuICcnLmpvaW4oW3F1b3RlcihjaGFyKSBmb3IgY2hhciBpbiBic10pCiAKLWRlZiB1cmxlbmNvZGUocXVlcnksIGRvc2VxPUZhbHNlLCBzYWZlPScnLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CitkZWYgdXJsZW5jb2RlKHF1ZXJ5LCBkb3NlcT1GYWxzZSwgc2FmZT0nJywgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsCisgICAgICAgICAgICAgIHF1b3RlX3ZpYT1xdW90ZV9wbHVzKToKICAgICAiIiJFbmNvZGUgYSBkaWN0IG9yIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcyBpbnRvIGEgVVJMIHF1ZXJ5IHN0cmluZy4KIAogICAgIElmIGFueSB2YWx1ZXMgaW4gdGhlIHF1ZXJ5IGFyZyBhcmUgc2VxdWVuY2VzIGFuZCBkb3NlcSBpcyB0cnVlLCBlYWNoCkBAIC03NDQsOCArNzYzLDggQEAKIAogICAgIFRoZSBjb21wb25lbnRzIG9mIGEgcXVlcnkgYXJnIG1heSBlYWNoIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGJ5dGVzIHR5cGUuCiAKLSAgICBUaGUgc2FmZSwgZW5jb2RpbmcsIGFuZCBlcnJvcnMgcGFyYW1ldGVycyBhcmUgcGFzc2VkIGRvd24gdG8gcXVvdGVfcGx1cygpCi0gICAgKGVuY29kaW5nIGFuZCBlcnJvcnMgb25seSBpZiBhIGNvbXBvbmVudCBpcyBhIHN0cikuCisgICAgVGhlIHNhZmUsIGVuY29kaW5nLCBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBkb3duIHRvIHRoZSBmdW5jdGlvbgorICAgIHNwZWNpZmllZCBieSBxdW90ZV92aWEgKGVuY29kaW5nIGFuZCBlcnJvcnMgb25seSBpZiBhIGNvbXBvbmVudCBpcyBhIHN0cikuCiAgICAgIiIiCiAKICAgICBpZiBoYXNhdHRyKHF1ZXJ5LCAiaXRlbXMiKToKQEAgLTc3MSwyNyArNzkwLDI3IEBACiAgICAgaWYgbm90IGRvc2VxOgogICAgICAgICBmb3IgaywgdiBpbiBxdWVyeToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaywgYnl0ZXMpOgotICAgICAgICAgICAgICAgIGsgPSBxdW90ZV9wbHVzKGssIHNhZmUpCisgICAgICAgICAgICAgICAgayA9IHF1b3RlX3ZpYShrLCBzYWZlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrID0gcXVvdGVfcGx1cyhzdHIoayksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgayA9IHF1b3RlX3ZpYShzdHIoayksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgYnl0ZXMpOgotICAgICAgICAgICAgICAgIHYgPSBxdW90ZV9wbHVzKHYsIHNhZmUpCisgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyhzdHIodiksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYShzdHIodiksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgdikKICAgICBlbHNlOgogICAgICAgICBmb3IgaywgdiBpbiBxdWVyeToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaywgYnl0ZXMpOgotICAgICAgICAgICAgICAgIGsgPSBxdW90ZV9wbHVzKGssIHNhZmUpCisgICAgICAgICAgICAgICAgayA9IHF1b3RlX3ZpYShrLCBzYWZlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrID0gcXVvdGVfcGx1cyhzdHIoayksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgayA9IHF1b3RlX3ZpYShzdHIoayksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgYnl0ZXMpOgotICAgICAgICAgICAgICAgIHYgPSBxdW90ZV9wbHVzKHYsIHNhZmUpCisgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlKQogICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHYsIHN0cik6Ci0gICAgICAgICAgICAgICAgdiA9IHF1b3RlX3BsdXModiwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKKyAgICAgICAgICAgICAgICB2ID0gcXVvdGVfdmlhKHYsIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTc5OSwxNSArODE4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIHggPSBsZW4odikKICAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAjIG5vdCBhIHNlcXVlbmNlCi0gICAgICAgICAgICAgICAgICAgIHYgPSBxdW90ZV9wbHVzKHN0cih2KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYShzdHIodiksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgbG9vcCBvdmVyIHRoZSBzZXF1ZW5jZQogICAgICAgICAgICAgICAgICAgICBmb3IgZWx0IGluIHY6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVsdCwgYnl0ZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCA9IHF1b3RlX3BsdXMoZWx0LCBzYWZlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCA9IHF1b3RlX3ZpYShlbHQsIHNhZmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCA9IHF1b3RlX3BsdXMoc3RyKGVsdCksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gcXVvdGVfdmlhKHN0cihlbHQpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIGVsdCkKICAgICByZXR1cm4gJyYnLmpvaW4obCkKIApAQCAtODUyLDEyICs4NzEsMTIgQEAKICAgICAiIiJzcGxpdHR5cGUoJ3R5cGU6b3BhcXVlc3RyaW5nJykgLS0+ICd0eXBlJywgJ29wYXF1ZXN0cmluZycuIiIiCiAgICAgZ2xvYmFsIF90eXBlcHJvZwogICAgIGlmIF90eXBlcHJvZyBpcyBOb25lOgotICAgICAgICBfdHlwZXByb2cgPSByZS5jb21waWxlKCdeKFteLzpdKyk6JykKKyAgICAgICAgX3R5cGVwcm9nID0gcmUuY29tcGlsZSgnKFteLzpdKyk6KC4qKScsIHJlLkRPVEFMTCkKIAogICAgIG1hdGNoID0gX3R5cGVwcm9nLm1hdGNoKHVybCkKICAgICBpZiBtYXRjaDoKLSAgICAgICAgc2NoZW1lID0gbWF0Y2guZ3JvdXAoMSkKLSAgICAgICAgcmV0dXJuIHNjaGVtZS5sb3dlcigpLCB1cmxbbGVuKHNjaGVtZSkgKyAxOl0KKyAgICAgICAgc2NoZW1lLCBkYXRhID0gbWF0Y2guZ3JvdXBzKCkKKyAgICAgICAgcmV0dXJuIHNjaGVtZS5sb3dlcigpLCBkYXRhCiAgICAgcmV0dXJuIE5vbmUsIHVybAogCiBfaG9zdHByb2cgPSBOb25lCkBAIC04NjUsMzggKzg4NCwyNSBAQAogICAgICIiInNwbGl0aG9zdCgnLy9ob3N0Wzpwb3J0XS9wYXRoJykgLS0+ICdob3N0Wzpwb3J0XScsICcvcGF0aCcuIiIiCiAgICAgZ2xvYmFsIF9ob3N0cHJvZwogICAgIGlmIF9ob3N0cHJvZyBpcyBOb25lOgotICAgICAgICBfaG9zdHByb2cgPSByZS5jb21waWxlKCdeLy8oW14vP10qKSguKikkJykKKyAgICAgICAgX2hvc3Rwcm9nID0gcmUuY29tcGlsZSgnLy8oW14vP10qKSguKiknLCByZS5ET1RBTEwpCiAKICAgICBtYXRjaCA9IF9ob3N0cHJvZy5tYXRjaCh1cmwpCiAgICAgaWYgbWF0Y2g6Ci0gICAgICAgIGhvc3RfcG9ydCA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHBhdGggPSBtYXRjaC5ncm91cCgyKQotICAgICAgICBpZiBwYXRoIGFuZCBub3QgcGF0aC5zdGFydHN3aXRoKCcvJyk6CisgICAgICAgIGhvc3RfcG9ydCwgcGF0aCA9IG1hdGNoLmdyb3VwcygpCisgICAgICAgIGlmIHBhdGggYW5kIHBhdGhbMF0gIT0gJy8nOgogICAgICAgICAgICAgcGF0aCA9ICcvJyArIHBhdGgKICAgICAgICAgcmV0dXJuIGhvc3RfcG9ydCwgcGF0aAogICAgIHJldHVybiBOb25lLCB1cmwKIAotX3VzZXJwcm9nID0gTm9uZQogZGVmIHNwbGl0dXNlcihob3N0KToKICAgICAiIiJzcGxpdHVzZXIoJ3VzZXJbOnBhc3N3ZF1AaG9zdFs6cG9ydF0nKSAtLT4gJ3VzZXJbOnBhc3N3ZF0nLCAnaG9zdFs6cG9ydF0nLiIiIgotICAgIGdsb2JhbCBfdXNlcnByb2cKLSAgICBpZiBfdXNlcnByb2cgaXMgTm9uZToKLSAgICAgICAgX3VzZXJwcm9nID0gcmUuY29tcGlsZSgnXiguKilAKC4qKSQnKQorICAgIHVzZXIsIGRlbGltLCBob3N0ID0gaG9zdC5ycGFydGl0aW9uKCdAJykKKyAgICByZXR1cm4gKHVzZXIgaWYgZGVsaW0gZWxzZSBOb25lKSwgaG9zdAogCi0gICAgbWF0Y2ggPSBfdXNlcnByb2cubWF0Y2goaG9zdCkKLSAgICBpZiBtYXRjaDogcmV0dXJuIG1hdGNoLmdyb3VwKDEsIDIpCi0gICAgcmV0dXJuIE5vbmUsIGhvc3QKLQotX3Bhc3N3ZHByb2cgPSBOb25lCiBkZWYgc3BsaXRwYXNzd2QodXNlcik6CiAgICAgIiIic3BsaXRwYXNzd2QoJ3VzZXI6cGFzc3dkJykgLT4gJ3VzZXInLCAncGFzc3dkJy4iIiIKLSAgICBnbG9iYWwgX3Bhc3N3ZHByb2cKLSAgICBpZiBfcGFzc3dkcHJvZyBpcyBOb25lOgotICAgICAgICBfcGFzc3dkcHJvZyA9IHJlLmNvbXBpbGUoJ14oW146XSopOiguKikkJyxyZS5TKQotCi0gICAgbWF0Y2ggPSBfcGFzc3dkcHJvZy5tYXRjaCh1c2VyKQotICAgIGlmIG1hdGNoOiByZXR1cm4gbWF0Y2guZ3JvdXAoMSwgMikKLSAgICByZXR1cm4gdXNlciwgTm9uZQorICAgIHVzZXIsIGRlbGltLCBwYXNzd2QgPSB1c2VyLnBhcnRpdGlvbignOicpCisgICAgcmV0dXJuIHVzZXIsIChwYXNzd2QgaWYgZGVsaW0gZWxzZSBOb25lKQogCiAjIHNwbGl0dGFnKCcvcGF0aCN0YWcnKSAtLT4gJy9wYXRoJywgJ3RhZycKIF9wb3J0cHJvZyA9IE5vbmUKQEAgLTkwNCw3ICs5MTAsNyBAQAogICAgICIiInNwbGl0cG9ydCgnaG9zdDpwb3J0JykgLS0+ICdob3N0JywgJ3BvcnQnLiIiIgogICAgIGdsb2JhbCBfcG9ydHByb2cKICAgICBpZiBfcG9ydHByb2cgaXMgTm9uZToKLSAgICAgICAgX3BvcnRwcm9nID0gcmUuY29tcGlsZSgnXiguKik6KFswLTldKikkJykKKyAgICAgICAgX3BvcnRwcm9nID0gcmUuY29tcGlsZSgnKC4qKTooWzAtOV0qKSQnLCByZS5ET1RBTEwpCiAKICAgICBtYXRjaCA9IF9wb3J0cHJvZy5tYXRjaChob3N0KQogICAgIGlmIG1hdGNoOgpAQCAtOTEzLDQ3ICs5MTksMzQgQEAKICAgICAgICAgICAgIHJldHVybiBob3N0LCBwb3J0CiAgICAgcmV0dXJuIGhvc3QsIE5vbmUKIAotX25wb3J0cHJvZyA9IE5vbmUKIGRlZiBzcGxpdG5wb3J0KGhvc3QsIGRlZnBvcnQ9LTEpOgogICAgICIiIlNwbGl0IGhvc3QgYW5kIHBvcnQsIHJldHVybmluZyBudW1lcmljIHBvcnQuCiAgICAgUmV0dXJuIGdpdmVuIGRlZmF1bHQgcG9ydCBpZiBubyAnOicgZm91bmQ7IGRlZmF1bHRzIHRvIC0xLgogICAgIFJldHVybiBudW1lcmljYWwgcG9ydCBpZiBhIHZhbGlkIG51bWJlciBhcmUgZm91bmQgYWZ0ZXIgJzonLgogICAgIFJldHVybiBOb25lIGlmICc6JyBidXQgbm90IGEgdmFsaWQgbnVtYmVyLiIiIgotICAgIGdsb2JhbCBfbnBvcnRwcm9nCi0gICAgaWYgX25wb3J0cHJvZyBpcyBOb25lOgotICAgICAgICBfbnBvcnRwcm9nID0gcmUuY29tcGlsZSgnXiguKik6KC4qKSQnKQotCi0gICAgbWF0Y2ggPSBfbnBvcnRwcm9nLm1hdGNoKGhvc3QpCi0gICAgaWYgbWF0Y2g6Ci0gICAgICAgIGhvc3QsIHBvcnQgPSBtYXRjaC5ncm91cCgxLCAyKQotICAgICAgICBpZiBwb3J0OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5wb3J0ID0gaW50KHBvcnQpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBucG9ydCA9IE5vbmUKLSAgICAgICAgICAgIHJldHVybiBob3N0LCBucG9ydAorICAgIGhvc3QsIGRlbGltLCBwb3J0ID0gaG9zdC5ycGFydGl0aW9uKCc6JykKKyAgICBpZiBub3QgZGVsaW06CisgICAgICAgIGhvc3QgPSBwb3J0CisgICAgZWxpZiBwb3J0OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBucG9ydCA9IGludChwb3J0KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIG5wb3J0ID0gTm9uZQorICAgICAgICByZXR1cm4gaG9zdCwgbnBvcnQKICAgICByZXR1cm4gaG9zdCwgZGVmcG9ydAogCi1fcXVlcnlwcm9nID0gTm9uZQogZGVmIHNwbGl0cXVlcnkodXJsKToKICAgICAiIiJzcGxpdHF1ZXJ5KCcvcGF0aD9xdWVyeScpIC0tPiAnL3BhdGgnLCAncXVlcnknLiIiIgotICAgIGdsb2JhbCBfcXVlcnlwcm9nCi0gICAgaWYgX3F1ZXJ5cHJvZyBpcyBOb25lOgotICAgICAgICBfcXVlcnlwcm9nID0gcmUuY29tcGlsZSgnXiguKilcPyhbXj9dKikkJykKLQotICAgIG1hdGNoID0gX3F1ZXJ5cHJvZy5tYXRjaCh1cmwpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQorICAgIHBhdGgsIGRlbGltLCBxdWVyeSA9IHVybC5ycGFydGl0aW9uKCc/JykKKyAgICBpZiBkZWxpbToKKyAgICAgICAgcmV0dXJuIHBhdGgsIHF1ZXJ5CiAgICAgcmV0dXJuIHVybCwgTm9uZQogCi1fdGFncHJvZyA9IE5vbmUKIGRlZiBzcGxpdHRhZyh1cmwpOgogICAgICIiInNwbGl0dGFnKCcvcGF0aCN0YWcnKSAtLT4gJy9wYXRoJywgJ3RhZycuIiIiCi0gICAgZ2xvYmFsIF90YWdwcm9nCi0gICAgaWYgX3RhZ3Byb2cgaXMgTm9uZToKLSAgICAgICAgX3RhZ3Byb2cgPSByZS5jb21waWxlKCdeKC4qKSMoW14jXSopJCcpCi0KLSAgICBtYXRjaCA9IF90YWdwcm9nLm1hdGNoKHVybCkKLSAgICBpZiBtYXRjaDogcmV0dXJuIG1hdGNoLmdyb3VwKDEsIDIpCisgICAgcGF0aCwgZGVsaW0sIHRhZyA9IHVybC5ycGFydGl0aW9uKCcjJykKKyAgICBpZiBkZWxpbToKKyAgICAgICAgcmV0dXJuIHBhdGgsIHRhZwogICAgIHJldHVybiB1cmwsIE5vbmUKIAogZGVmIHNwbGl0YXR0cih1cmwpOgpAQCAtOTYyLDEzICs5NTUsNyBAQAogICAgIHdvcmRzID0gdXJsLnNwbGl0KCc7JykKICAgICByZXR1cm4gd29yZHNbMF0sIHdvcmRzWzE6XQogCi1fdmFsdWVwcm9nID0gTm9uZQogZGVmIHNwbGl0dmFsdWUoYXR0cik6CiAgICAgIiIic3BsaXR2YWx1ZSgnYXR0cj12YWx1ZScpIC0tPiAnYXR0cicsICd2YWx1ZScuIiIiCi0gICAgZ2xvYmFsIF92YWx1ZXByb2cKLSAgICBpZiBfdmFsdWVwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF92YWx1ZXByb2cgPSByZS5jb21waWxlKCdeKFtePV0qKT0oLiopJCcpCi0KLSAgICBtYXRjaCA9IF92YWx1ZXByb2cubWF0Y2goYXR0cikKLSAgICBpZiBtYXRjaDogcmV0dXJuIG1hdGNoLmdyb3VwKDEsIDIpCi0gICAgcmV0dXJuIGF0dHIsIE5vbmUKKyAgICBhdHRyLCBkZWxpbSwgdmFsdWUgPSBhdHRyLnBhcnRpdGlvbignPScpCisgICAgcmV0dXJuIGF0dHIsICh2YWx1ZSBpZiBkZWxpbSBlbHNlIE5vbmUpCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKaW5kZXggMzc2YmJhNC4uYTdmZDAxNyAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5CisrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQpAQCAtMTIwLDkgKzEyMCwxMCBAQAogICAgICdSZXF1ZXN0JywgJ09wZW5lckRpcmVjdG9yJywgJ0Jhc2VIYW5kbGVyJywgJ0hUVFBEZWZhdWx0RXJyb3JIYW5kbGVyJywKICAgICAnSFRUUFJlZGlyZWN0SGFuZGxlcicsICdIVFRQQ29va2llUHJvY2Vzc29yJywgJ1Byb3h5SGFuZGxlcicsCiAgICAgJ0hUVFBQYXNzd29yZE1ncicsICdIVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtJywKLSAgICAnQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyJywgJ0hUVFBCYXNpY0F1dGhIYW5kbGVyJywgJ1Byb3h5QmFzaWNBdXRoSGFuZGxlcicsCi0gICAgJ0Fic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXInLCAnSFRUUERpZ2VzdEF1dGhIYW5kbGVyJywgJ1Byb3h5RGlnZXN0QXV0aEhhbmRsZXInLAotICAgICdIVFRQSGFuZGxlcicsICdGaWxlSGFuZGxlcicsICdGVFBIYW5kbGVyJywgJ0NhY2hlRlRQSGFuZGxlcicsICdEYXRhSGFuZGxlcicsCisgICAgJ0hUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgnLCAnQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyJywKKyAgICAnSFRUUEJhc2ljQXV0aEhhbmRsZXInLCAnUHJveHlCYXNpY0F1dGhIYW5kbGVyJywgJ0Fic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXInLAorICAgICdIVFRQRGlnZXN0QXV0aEhhbmRsZXInLCAnUHJveHlEaWdlc3RBdXRoSGFuZGxlcicsICdIVFRQSGFuZGxlcicsCisgICAgJ0ZpbGVIYW5kbGVyJywgJ0ZUUEhhbmRsZXInLCAnQ2FjaGVGVFBIYW5kbGVyJywgJ0RhdGFIYW5kbGVyJywKICAgICAnVW5rbm93bkhhbmRsZXInLCAnSFRUUEVycm9yUHJvY2Vzc29yJywKICAgICAjIEZ1bmN0aW9ucwogICAgICd1cmxvcGVuJywgJ2luc3RhbGxfb3BlbmVyJywgJ2J1aWxkX29wZW5lcicsCkBAIC04MzYsNiArODM3LDM3IEBACiAgICAgICAgIHJldHVybiBIVFRQUGFzc3dvcmRNZ3IuZmluZF91c2VyX3Bhc3N3b3JkKHNlbGYsIE5vbmUsIGF1dGh1cmkpCiAKIAorY2xhc3MgSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aChIVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSB7fQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhZGRfcGFzc3dvcmQoc2VsZiwgcmVhbG0sIHVyaSwgdXNlciwgcGFzc3dkLCBpc19hdXRoZW50aWNhdGVkPUZhbHNlKToKKyAgICAgICAgc2VsZi51cGRhdGVfYXV0aGVudGljYXRlZCh1cmksIGlzX2F1dGhlbnRpY2F0ZWQpCisgICAgICAgICMgQWRkIGEgZGVmYXVsdCBmb3IgcHJpb3IgYXV0aCByZXF1ZXN0cworICAgICAgICBpZiByZWFsbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN1cGVyKCkuYWRkX3Bhc3N3b3JkKE5vbmUsIHVyaSwgdXNlciwgcGFzc3dkKQorICAgICAgICBzdXBlcigpLmFkZF9wYXNzd29yZChyZWFsbSwgdXJpLCB1c2VyLCBwYXNzd2QpCisKKyAgICBkZWYgdXBkYXRlX2F1dGhlbnRpY2F0ZWQoc2VsZiwgdXJpLCBpc19hdXRoZW50aWNhdGVkPUZhbHNlKToKKyAgICAgICAgIyB1cmkgY291bGQgYmUgYSBzaW5nbGUgVVJJIG9yIGEgc2VxdWVuY2UKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh1cmksIHN0cik6CisgICAgICAgICAgICB1cmkgPSBbdXJpXQorCisgICAgICAgIGZvciBkZWZhdWx0X3BvcnQgaW4gVHJ1ZSwgRmFsc2U6CisgICAgICAgICAgICBmb3IgdSBpbiB1cmk6CisgICAgICAgICAgICAgICAgcmVkdWNlZF91cmkgPSBzZWxmLnJlZHVjZV91cmkodSwgZGVmYXVsdF9wb3J0KQorICAgICAgICAgICAgICAgIHNlbGYuYXV0aGVudGljYXRlZFtyZWR1Y2VkX3VyaV0gPSBpc19hdXRoZW50aWNhdGVkCisKKyAgICBkZWYgaXNfYXV0aGVudGljYXRlZChzZWxmLCBhdXRodXJpKToKKyAgICAgICAgZm9yIGRlZmF1bHRfcG9ydCBpbiBUcnVlLCBGYWxzZToKKyAgICAgICAgICAgIHJlZHVjZWRfYXV0aHVyaSA9IHNlbGYucmVkdWNlX3VyaShhdXRodXJpLCBkZWZhdWx0X3BvcnQpCisgICAgICAgICAgICBmb3IgdXJpIGluIHNlbGYuYXV0aGVudGljYXRlZDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmlzX3N1YnVyaSh1cmksIHJlZHVjZWRfYXV0aHVyaSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmF1dGhlbnRpY2F0ZWRbdXJpXQorCisKIGNsYXNzIEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcjoKIAogICAgICMgWFhYIHRoaXMgYWxsb3dzIGZvciBtdWx0aXBsZSBhdXRoLXNjaGVtZXMsIGJ1dCB3aWxsIHN0dXBpZGx5IHBpY2sKQEAgLTg5MCw2ICs5MjIsMzEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBkZWYgaHR0cF9yZXF1ZXN0KHNlbGYsIHJlcSk6CisgICAgICAgIGlmIChub3QgaGFzYXR0cihzZWxmLnBhc3N3ZCwgJ2lzX2F1dGhlbnRpY2F0ZWQnKSBvcgorICAgICAgICAgICBub3Qgc2VsZi5wYXNzd2QuaXNfYXV0aGVudGljYXRlZChyZXEuZnVsbF91cmwpKToKKyAgICAgICAgICAgIHJldHVybiByZXEKKworICAgICAgICBpZiBub3QgcmVxLmhhc19oZWFkZXIoJ0F1dGhvcml6YXRpb24nKToKKyAgICAgICAgICAgIHVzZXIsIHBhc3N3ZCA9IHNlbGYucGFzc3dkLmZpbmRfdXNlcl9wYXNzd29yZChOb25lLCByZXEuZnVsbF91cmwpCisgICAgICAgICAgICBjcmVkZW50aWFscyA9ICd7MH06ezF9Jy5mb3JtYXQodXNlciwgcGFzc3dkKS5lbmNvZGUoKQorICAgICAgICAgICAgYXV0aF9zdHIgPSBiYXNlNjQuc3RhbmRhcmRfYjY0ZW5jb2RlKGNyZWRlbnRpYWxzKS5kZWNvZGUoKQorICAgICAgICAgICAgcmVxLmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKCdBdXRob3JpemF0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmFzaWMge30nLmZvcm1hdChhdXRoX3N0ci5zdHJpcCgpKSkKKyAgICAgICAgcmV0dXJuIHJlcQorCisgICAgZGVmIGh0dHBfcmVzcG9uc2Uoc2VsZiwgcmVxLCByZXNwb25zZSk6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5wYXNzd2QsICdpc19hdXRoZW50aWNhdGVkJyk6CisgICAgICAgICAgICBpZiAyMDAgPD0gcmVzcG9uc2UuY29kZSA8IDMwMDoKKyAgICAgICAgICAgICAgICBzZWxmLnBhc3N3ZC51cGRhdGVfYXV0aGVudGljYXRlZChyZXEuZnVsbF91cmwsIFRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucGFzc3dkLnVwZGF0ZV9hdXRoZW50aWNhdGVkKHJlcS5mdWxsX3VybCwgRmFsc2UpCisgICAgICAgIHJldHVybiByZXNwb25zZQorCisgICAgaHR0cHNfcmVxdWVzdCA9IGh0dHBfcmVxdWVzdAorICAgIGh0dHBzX3Jlc3BvbnNlID0gaHR0cF9yZXNwb25zZQorCisKIAogY2xhc3MgSFRUUEJhc2ljQXV0aEhhbmRsZXIoQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLCBCYXNlSGFuZGxlcik6CiAKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CmluZGV4IDFkN2I3NTEuLjRmYmIwY2IgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQpAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnBhdGggPT0gIioiIG9yIGZpbGVuYW1lLnN0YXJ0c3dpdGgoc2VsZi5wYXRoKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5hbGxvd2FuY2UgYW5kICJBbGxvdyIgb3IgIkRpc2FsbG93IikgKyAiOiAiICsgc2VsZi5wYXRoCisgICAgICAgIHJldHVybiAoIkFsbG93IiBpZiBzZWxmLmFsbG93YW5jZSBlbHNlICJEaXNhbGxvdyIpICsgIjogIiArIHNlbGYucGF0aAogCiAKIGNsYXNzIEVudHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCAxMDYxYmZmLi5hNjY0M2VkIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtMTM5LDEwICsxMzksOCBAQAogICAgICAgICBpZiBieXRlc19sZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGxlbihieXRlc19sZSkgIT0gMTY6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYnl0ZXNfbGUgaXMgbm90IGEgMTYtY2hhciBzdHJpbmcnKQotICAgICAgICAgICAgYnl0ZXMgPSAoYnl0ZXNfKHJldmVyc2VkKGJ5dGVzX2xlWzA6NF0pKSArCi0gICAgICAgICAgICAgICAgICAgICBieXRlc18ocmV2ZXJzZWQoYnl0ZXNfbGVbNDo2XSkpICsKLSAgICAgICAgICAgICAgICAgICAgIGJ5dGVzXyhyZXZlcnNlZChieXRlc19sZVs2OjhdKSkgKwotICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfbGVbODpdKQorICAgICAgICAgICAgYnl0ZXMgPSAoYnl0ZXNfbGVbNC0xOjotMV0gKyBieXRlc19sZVs2LTE6NC0xOi0xXSArCisgICAgICAgICAgICAgICAgICAgICBieXRlc19sZVs4LTE6Ni0xOi0xXSArIGJ5dGVzX2xlWzg6XSkKICAgICAgICAgaWYgYnl0ZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBsZW4oYnl0ZXMpICE9IDE2OgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2J5dGVzIGlzIG5vdCBhIDE2LWNoYXIgc3RyaW5nJykKQEAgLTE4NywxMSArMTg1LDYgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLmludCA9PSBvdGhlci5pbnQKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVVVJRCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5pbnQgIT0gb3RoZXIuaW50Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotCiAgICAgIyBRLiBXaGF0J3MgdGhlIHZhbHVlIG9mIGJlaW5nIGFibGUgdG8gc29ydCBVVUlEcz8KICAgICAjIEEuIFVzZSB0aGVtIGFzIGtleXMgaW4gYSBCLVRyZWUgb3Igc2ltaWxhciBtYXBwaW5nLgogCkBAIC0yMjIsNyArMjE1LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuaW50CiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnVVVJRCglciknICUgc3RyKHNlbGYpCisgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQogCiAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVVUlEIG9iamVjdHMgYXJlIGltbXV0YWJsZScpCkBAIC0yMzQsMTcgKzIyNywxMiBAQAogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGJ5dGVzKHNlbGYpOgotICAgICAgICBieXRlcyA9IGJ5dGVhcnJheSgpCi0gICAgICAgIGZvciBzaGlmdCBpbiByYW5nZSgwLCAxMjgsIDgpOgotICAgICAgICAgICAgYnl0ZXMuaW5zZXJ0KDAsIChzZWxmLmludCA+PiBzaGlmdCkgJiAweGZmKQotICAgICAgICByZXR1cm4gYnl0ZXNfKGJ5dGVzKQorICAgICAgICByZXR1cm4gc2VsZi5pbnQudG9fYnl0ZXMoMTYsICdiaWcnKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGJ5dGVzX2xlKHNlbGYpOgogICAgICAgICBieXRlcyA9IHNlbGYuYnl0ZXMKLSAgICAgICAgcmV0dXJuIChieXRlc18ocmV2ZXJzZWQoYnl0ZXNbMDo0XSkpICsKLSAgICAgICAgICAgICAgICBieXRlc18ocmV2ZXJzZWQoYnl0ZXNbNDo2XSkpICsKLSAgICAgICAgICAgICAgICBieXRlc18ocmV2ZXJzZWQoYnl0ZXNbNjo4XSkpICsKKyAgICAgICAgcmV0dXJuIChieXRlc1s0LTE6Oi0xXSArIGJ5dGVzWzYtMTo0LTE6LTFdICsgYnl0ZXNbOC0xOjYtMTotMV0gKwogICAgICAgICAgICAgICAgIGJ5dGVzWzg6XSkKIAogICAgIEBwcm9wZXJ0eQpAQCAtMzExLDMzICsyOTksMzggQEAKICAgICAgICAgaWYgc2VsZi52YXJpYW50ID09IFJGQ180MTIyOgogICAgICAgICAgICAgcmV0dXJuIGludCgoc2VsZi5pbnQgPj4gNzYpICYgMHhmKQogCi1kZWYgX3BvcGVuKGNvbW1hbmQsIGFyZ3MpOgotICAgIGltcG9ydCBvcywgc2h1dGlsCitkZWYgX3BvcGVuKGNvbW1hbmQsICphcmdzKToKKyAgICBpbXBvcnQgb3MsIHNodXRpbCwgc3VicHJvY2VzcwogICAgIGV4ZWN1dGFibGUgPSBzaHV0aWwud2hpY2goY29tbWFuZCkKICAgICBpZiBleGVjdXRhYmxlIGlzIE5vbmU6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoc2VwLmpvaW4oKCcvc2JpbicsICcvdXNyL3NiaW4nKSkKICAgICAgICAgZXhlY3V0YWJsZSA9IHNodXRpbC53aGljaChjb21tYW5kLCBwYXRoPXBhdGgpCiAgICAgICAgIGlmIGV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgIyBMQ19BTEwgdG8gZW5zdXJlIEVuZ2xpc2ggb3V0cHV0LCAyPi9kZXYvbnVsbCB0byBwcmV2ZW50IG91dHB1dCBvbgotICAgICMgc3RkZXJyIChOb3RlOiB3ZSBkb24ndCBoYXZlIGFuIGV4YW1wbGUgd2hlcmUgdGhlIHdvcmRzIHdlIHNlYXJjaCBmb3IKLSAgICAjIGFyZSBhY3R1YWxseSBsb2NhbGl6ZWQsIGJ1dCBpbiB0aGVvcnkgc29tZSBzeXN0ZW0gY291bGQgZG8gc28uKQotICAgIGNtZCA9ICdMQ19BTEw9QyAlcyAlcyAyPi9kZXYvbnVsbCcgJSAoZXhlY3V0YWJsZSwgYXJncykKLSAgICByZXR1cm4gb3MucG9wZW4oY21kKQorICAgICMgTENfQUxMPUMgdG8gZW5zdXJlIEVuZ2xpc2ggb3V0cHV0LCBzdGRlcnI9REVWTlVMTCB0byBwcmV2ZW50IG91dHB1dAorICAgICMgb24gc3RkZXJyIChOb3RlOiB3ZSBkb24ndCBoYXZlIGFuIGV4YW1wbGUgd2hlcmUgdGhlIHdvcmRzIHdlIHNlYXJjaAorICAgICMgZm9yIGFyZSBhY3R1YWxseSBsb2NhbGl6ZWQsIGJ1dCBpbiB0aGVvcnkgc29tZSBzeXN0ZW0gY291bGQgZG8gc28uKQorICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICBlbnZbJ0xDX0FMTCddID0gJ0MnCisgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oKGV4ZWN1dGFibGUsKSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYpCisgICAgcmV0dXJuIHByb2MKIAogZGVmIF9maW5kX21hYyhjb21tYW5kLCBhcmdzLCBod19pZGVudGlmaWVycywgZ2V0X2luZGV4KToKICAgICB0cnk6Ci0gICAgICAgIHBpcGUgPSBfcG9wZW4oY29tbWFuZCwgYXJncykKLSAgICAgICAgaWYgbm90IHBpcGU6CisgICAgICAgIHByb2MgPSBfcG9wZW4oY29tbWFuZCwgKmFyZ3Muc3BsaXQoKSkKKyAgICAgICAgaWYgbm90IHByb2M6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgd2l0aCBwaXBlOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gcGlwZToKKyAgICAgICAgd2l0aCBwcm9jOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gcHJvYy5zdGRvdXQ6CiAgICAgICAgICAgICAgICAgd29yZHMgPSBsaW5lLmxvd2VyKCkucnN0cmlwKCkuc3BsaXQoKQogICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbih3b3JkcykpOgogICAgICAgICAgICAgICAgICAgICBpZiB3b3Jkc1tpXSBpbiBod19pZGVudGlmaWVyczoKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkID0gd29yZHNbZ2V0X2luZGV4KGkpXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hYyA9IGludCh3b3JkLnJlcGxhY2UoJzonLCAnJyksIDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hYyA9IGludCh3b3JkLnJlcGxhY2UoYic6JywgYicnKSwgMTYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWFjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFjCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOgpAQCAtMzU0LDEwICszNDcsMTcgQEAKICAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGlmY29uZmlnLiIiIgogICAgICMgVGhpcyB3b3JrcyBvbiBMaW51eCAoJycgb3IgJy1hJyksIFRydTY0ICgnLWF2JyksIGJ1dCBub3QgYWxsIFVuaXhlcy4KICAgICBmb3IgYXJncyBpbiAoJycsICctYScsICctYXYnKToKLSAgICAgICAgbWFjID0gX2ZpbmRfbWFjKCdpZmNvbmZpZycsIGFyZ3MsIFsnaHdhZGRyJywgJ2V0aGVyJ10sIGxhbWJkYSBpOiBpKzEpCisgICAgICAgIG1hYyA9IF9maW5kX21hYygnaWZjb25maWcnLCBhcmdzLCBbYidod2FkZHInLCBiJ2V0aGVyJ10sIGxhbWJkYSBpOiBpKzEpCiAgICAgICAgIGlmIG1hYzoKICAgICAgICAgICAgIHJldHVybiBtYWMKIAorZGVmIF9pcF9nZXRub2RlKCk6CisgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBpcC4iIiIKKyAgICAjIFRoaXMgd29ya3Mgb24gTGludXggd2l0aCBpcHJvdXRlMi4KKyAgICBtYWMgPSBfZmluZF9tYWMoJ2lwJywgJ2xpbmsgbGlzdCcsIFtiJ2xpbmsvZXRoZXInXSwgbGFtYmRhIGk6IGkrMSkKKyAgICBpZiBtYWM6CisgICAgICAgIHJldHVybiBtYWMKKwogZGVmIF9hcnBfZ2V0bm9kZSgpOgogICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgYXJwLiIiIgogICAgIGltcG9ydCBvcywgc29ja2V0CkBAIC0zNjcsMzIgKzM2NywzMiBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgIyBUcnkgZ2V0dGluZyB0aGUgTUFDIGFkZHIgZnJvbSBhcnAgYmFzZWQgb24gb3VyIElQIGFkZHJlc3MgKFNvbGFyaXMpLgotICAgIHJldHVybiBfZmluZF9tYWMoJ2FycCcsICctYW4nLCBbaXBfYWRkcl0sIGxhbWJkYSBpOiAtMSkKKyAgICByZXR1cm4gX2ZpbmRfbWFjKCdhcnAnLCAnLWFuJywgW29zLmZzZW5jb2RlKGlwX2FkZHIpXSwgbGFtYmRhIGk6IC0xKQogCiBkZWYgX2xhbnNjYW5fZ2V0bm9kZSgpOgogICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgbGFuc2Nhbi4iIiIKICAgICAjIFRoaXMgbWlnaHQgd29yayBvbiBIUC1VWC4KLSAgICByZXR1cm4gX2ZpbmRfbWFjKCdsYW5zY2FuJywgJy1haScsIFsnbGFuMCddLCBsYW1iZGEgaTogMCkKKyAgICByZXR1cm4gX2ZpbmRfbWFjKCdsYW5zY2FuJywgJy1haScsIFtiJ2xhbjAnXSwgbGFtYmRhIGk6IDApCiAKIGRlZiBfbmV0c3RhdF9nZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBuZXRzdGF0LiIiIgogICAgICMgVGhpcyBtaWdodCB3b3JrIG9uIEFJWCwgVHJ1NjQgVU5JWCBhbmQgcHJlc3VtYWJseSBvbiBJUklYLgogICAgIHRyeToKLSAgICAgICAgcGlwZSA9IF9wb3BlbignbmV0c3RhdCcsICctaWEnKQotICAgICAgICBpZiBub3QgcGlwZToKKyAgICAgICAgcHJvYyA9IF9wb3BlbignbmV0c3RhdCcsICctaWEnKQorICAgICAgICBpZiBub3QgcHJvYzoKICAgICAgICAgICAgIHJldHVybgotICAgICAgICB3aXRoIHBpcGU6Ci0gICAgICAgICAgICB3b3JkcyA9IHBpcGUucmVhZGxpbmUoKS5yc3RyaXAoKS5zcGxpdCgpCisgICAgICAgIHdpdGggcHJvYzoKKyAgICAgICAgICAgIHdvcmRzID0gcHJvYy5zdGRvdXQucmVhZGxpbmUoKS5yc3RyaXAoKS5zcGxpdCgpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaSA9IHdvcmRzLmluZGV4KCdBZGRyZXNzJykKKyAgICAgICAgICAgICAgICBpID0gd29yZHMuaW5kZXgoYidBZGRyZXNzJykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gcGlwZToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHByb2Muc3Rkb3V0OgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgd29yZHMgPSBsaW5lLnJzdHJpcCgpLnNwbGl0KCkKICAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmRzW2ldCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbih3b3JkKSA9PSAxNyBhbmQgd29yZC5jb3VudCgnOicpID09IDU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYWMgPSBpbnQod29yZC5yZXBsYWNlKCc6JywgJycpLCAxNikKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHdvcmQpID09IDE3IGFuZCB3b3JkLmNvdW50KGInOicpID09IDU6CisgICAgICAgICAgICAgICAgICAgICAgICBtYWMgPSBpbnQod29yZC5yZXBsYWNlKGInOicsIGInJyksIDE2KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWFjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWMKICAgICAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IpOgpAQCAtNDQ3LDkgKzQ0NywxMCBAQAogICAgICAgICBpZiB3aW4zMnduZXQuTmV0YmlvcyhuY2IpICE9IDA6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzdGF0dXMuX3VucGFjaygpCi0gICAgICAgIGJ5dGVzID0gc3RhdHVzLmFkYXB0ZXJfYWRkcmVzcwotICAgICAgICByZXR1cm4gKChieXRlc1swXTw8NDApICsgKGJ5dGVzWzFdPDwzMikgKyAoYnl0ZXNbMl08PDI0KSArCi0gICAgICAgICAgICAgICAgKGJ5dGVzWzNdPDwxNikgKyAoYnl0ZXNbNF08PDgpICsgYnl0ZXNbNV0pCisgICAgICAgIGJ5dGVzID0gc3RhdHVzLmFkYXB0ZXJfYWRkcmVzc1s6Nl0KKyAgICAgICAgaWYgbGVuKGJ5dGVzKSAhPSA2OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKGJ5dGVzLCAnYmlnJykKIAogIyBUaGFua3MgdG8gVGhvbWFzIEhlbGxlciBmb3IgY3R5cGVzIGFuZCBmb3IgaGlzIGhlbHAgd2l0aCBpdHMgdXNlIGhlcmUuCiAKQEAgLTQ1OCwxMyArNDU5LDE3IEBACiBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBfdXVpZF9nZW5lcmF0ZV90aW1lID0gX1V1aWRDcmVhdGUgPSBOb25lCiB0cnk6CiAgICAgaW1wb3J0IGN0eXBlcywgY3R5cGVzLnV0aWwKKyAgICBpbXBvcnQgc3lzCiAKICAgICAjIFRoZSB1dWlkX2dlbmVyYXRlXyogcm91dGluZXMgYXJlIHByb3ZpZGVkIGJ5IGxpYnV1aWQgb24gYXQgbGVhc3QKICAgICAjIExpbnV4IGFuZCBGcmVlQlNELCBhbmQgcHJvdmlkZWQgYnkgbGliYyBvbiBNYWMgT1MgWC4KLSAgICBmb3IgbGlibmFtZSBpbiBbJ3V1aWQnLCAnYyddOgorICAgIF9saWJuYW1lcyA9IFsndXVpZCddCisgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgX2xpYm5hbWVzLmFwcGVuZCgnYycpCisgICAgZm9yIGxpYm5hbWUgaW4gX2xpYm5hbWVzOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsaWIgPSBjdHlwZXMuQ0RMTChjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkobGlibmFtZSkpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGlmIGhhc2F0dHIobGliLCAndXVpZF9nZW5lcmF0ZV9yYW5kb20nKToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3JhbmRvbSA9IGxpYi51dWlkX2dlbmVyYXRlX3JhbmRvbQpAQCAtNDcyLDYgKzQ3Nyw3IEBACiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV90aW1lID0gbGliLnV1aWRfZ2VuZXJhdGVfdGltZQogICAgICAgICAgICAgaWYgX3V1aWRfZ2VuZXJhdGVfcmFuZG9tIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGJyZWFrICAjIGZvdW5kIGV2ZXJ5dGhpbmcgd2Ugd2VyZSBsb29raW5nIGZvcgorICAgIGRlbCBfbGlibmFtZXMKIAogICAgICMgVGhlIHV1aWRfZ2VuZXJhdGVfKiBmdW5jdGlvbnMgYXJlIGJyb2tlbiBvbiBNYWNPUyBYIDEwLjUsIGFzIG5vdGVkCiAgICAgIyBpbiBpc3N1ZSAjODYyMSB0aGUgZnVuY3Rpb24gZ2VuZXJhdGVzIHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcwpAQCAtNDgwLDcgKzQ4Niw2IEBACiAgICAgIwogICAgICMgQXNzdW1lIHRoYXQgdGhlIHV1aWRfZ2VuZXJhdGUgZnVuY3Rpb25zIGFyZSBicm9rZW4gZnJvbSAxMC41IG9ud2FyZCwKICAgICAjIHRoZSB0ZXN0IGNhbiBiZSBhZGp1c3RlZCB3aGVuIGEgbGF0ZXIgdmVyc2lvbiBpcyBmaXhlZC4KLSAgICBpbXBvcnQgc3lzCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgaWYgaW50KG9zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA+PSA5OgpAQCAtNTE4LDcgKzUyMyw3IEBACiBkZWYgX3JhbmRvbV9nZXRub2RlKCk6CiAgICAgIiIiR2V0IGEgcmFuZG9tIG5vZGUgSUQsIHdpdGggZWlnaHRoIGJpdCBzZXQgYXMgc3VnZ2VzdGVkIGJ5IFJGQyA0MTIyLiIiIgogICAgIGltcG9ydCByYW5kb20KLSAgICByZXR1cm4gcmFuZG9tLnJhbmRyYW5nZSgwLCAxPDw0OCkgfCAweDAxMDAwMDAwMDAwMAorICAgIHJldHVybiByYW5kb20uZ2V0cmFuZGJpdHMoNDgpIHwgMHgwMTAwMDAwMDAwMDAKIAogX25vZGUgPSBOb25lCiAKQEAgLTUzOSw4ICs1NDQsOCBAQAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBnZXR0ZXJzID0gW193aW5kbGxfZ2V0bm9kZSwgX25ldGJpb3NfZ2V0bm9kZSwgX2lwY29uZmlnX2dldG5vZGVdCiAgICAgZWxzZToKLSAgICAgICAgZ2V0dGVycyA9IFtfdW5peGRsbF9nZXRub2RlLCBfaWZjb25maWdfZ2V0bm9kZSwgX2FycF9nZXRub2RlLAotICAgICAgICAgICAgICAgICAgIF9sYW5zY2FuX2dldG5vZGUsIF9uZXRzdGF0X2dldG5vZGVdCisgICAgICAgIGdldHRlcnMgPSBbX3VuaXhkbGxfZ2V0bm9kZSwgX2lmY29uZmlnX2dldG5vZGUsIF9pcF9nZXRub2RlLAorICAgICAgICAgICAgICAgICAgIF9hcnBfZ2V0bm9kZSwgX2xhbnNjYW5fZ2V0bm9kZSwgX25ldHN0YXRfZ2V0bm9kZV0KIAogICAgIGZvciBnZXR0ZXIgaW4gZ2V0dGVycyArIFtfcmFuZG9tX2dldG5vZGVdOgogICAgICAgICB0cnk6CkBAIC01NzYsNyArNTgxLDcgQEAKICAgICBfbGFzdF90aW1lc3RhbXAgPSB0aW1lc3RhbXAKICAgICBpZiBjbG9ja19zZXEgaXMgTm9uZToKICAgICAgICAgaW1wb3J0IHJhbmRvbQotICAgICAgICBjbG9ja19zZXEgPSByYW5kb20ucmFuZHJhbmdlKDE8PDE0KSAjIGluc3RlYWQgb2Ygc3RhYmxlIHN0b3JhZ2UKKyAgICAgICAgY2xvY2tfc2VxID0gcmFuZG9tLmdldHJhbmRiaXRzKDE0KSAjIGluc3RlYWQgb2Ygc3RhYmxlIHN0b3JhZ2UKICAgICB0aW1lX2xvdyA9IHRpbWVzdGFtcCAmIDB4ZmZmZmZmZmYKICAgICB0aW1lX21pZCA9ICh0aW1lc3RhbXAgPj4gMzIpICYgMHhmZmZmCiAgICAgdGltZV9oaV92ZXJzaW9uID0gKHRpbWVzdGFtcCA+PiA0OCkgJiAweDBmZmYKQEAgLTYwNiwxMCArNjExLDkgQEAKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICByZXR1cm4gVVVJRChieXRlcz1vcy51cmFuZG9tKDE2KSwgdmVyc2lvbj00KQotICAgIGV4Y2VwdDoKKyAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICBpbXBvcnQgcmFuZG9tCi0gICAgICAgIGJ5dGVzID0gYnl0ZXNfKHJhbmRvbS5yYW5kcmFuZ2UoMjU2KSBmb3IgaSBpbiByYW5nZSgxNikpCi0gICAgICAgIHJldHVybiBVVUlEKGJ5dGVzPWJ5dGVzLCB2ZXJzaW9uPTQpCisgICAgICAgIHJldHVybiBVVUlEKGludD1yYW5kb20uZ2V0cmFuZGJpdHMoMTI4KSwgdmVyc2lvbj00KQogCiBkZWYgdXVpZDUobmFtZXNwYWNlLCBuYW1lKToKICAgICAiIiJHZW5lcmF0ZSBhIFVVSUQgZnJvbSB0aGUgU0hBLTEgaGFzaCBvZiBhIG5hbWVzcGFjZSBVVUlEIGFuZCBhIG5hbWUuIiIiCmRpZmYgLS1naXQgYS9MaWIvd2FybmluZ3MucHkgYi9MaWIvd2FybmluZ3MucHkKaW5kZXggNzBkMDg3ZS4uMWQ0ZmIyMCAxMDA2NDQKLS0tIGEvTGliL3dhcm5pbmdzLnB5CisrKyBiL0xpYi93YXJuaW5ncy5weQpAQCAtMTYwLDYgKzE2MCwyMCBAQAogICAgIHJldHVybiBjYXQKIAogCitkZWYgX2lzX2ludGVybmFsX2ZyYW1lKGZyYW1lKToKKyAgICAiIiJTaWduYWwgd2hldGhlciB0aGUgZnJhbWUgaXMgYW4gaW50ZXJuYWwgQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuIiIiCisgICAgZmlsZW5hbWUgPSBmcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKKyAgICByZXR1cm4gJ2ltcG9ydGxpYicgaW4gZmlsZW5hbWUgYW5kICdfYm9vdHN0cmFwJyBpbiBmaWxlbmFtZQorCisKK2RlZiBfbmV4dF9leHRlcm5hbF9mcmFtZShmcmFtZSk6CisgICAgIiIiRmluZCB0aGUgbmV4dCBmcmFtZSB0aGF0IGRvZXNuJ3QgaW52b2x2ZSBDUHl0aG9uIGludGVybmFscy4iIiIKKyAgICBmcmFtZSA9IGZyYW1lLmZfYmFjaworICAgIHdoaWxlIGZyYW1lIGlzIG5vdCBOb25lIGFuZCBfaXNfaW50ZXJuYWxfZnJhbWUoZnJhbWUpOgorICAgICAgICBmcmFtZSA9IGZyYW1lLmZfYmFjaworICAgIHJldHVybiBmcmFtZQorCisKICMgQ29kZSB0eXBpY2FsbHkgcmVwbGFjZWQgYnkgX3dhcm5pbmdzCiBkZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpOgogICAgICIiIklzc3VlIGEgd2FybmluZywgb3IgbWF5YmUgaWdub3JlIGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4iIiIKQEAgLTE2OSwxNiArMTgzLDI4IEBACiAgICAgIyBDaGVjayBjYXRlZ29yeSBhcmd1bWVudAogICAgIGlmIGNhdGVnb3J5IGlzIE5vbmU6CiAgICAgICAgIGNhdGVnb3J5ID0gVXNlcldhcm5pbmcKLSAgICBhc3NlcnQgaXNzdWJjbGFzcyhjYXRlZ29yeSwgV2FybmluZykKKyAgICBpZiBub3QgKGlzaW5zdGFuY2UoY2F0ZWdvcnksIHR5cGUpIGFuZCBpc3N1YmNsYXNzKGNhdGVnb3J5LCBXYXJuaW5nKSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJ3s6c30nIi5mb3JtYXQodHlwZShjYXRlZ29yeSkuX19uYW1lX18pKQogICAgICMgR2V0IGNvbnRleHQgaW5mb3JtYXRpb24KICAgICB0cnk6Ci0gICAgICAgIGNhbGxlciA9IHN5cy5fZ2V0ZnJhbWUoc3RhY2tsZXZlbCkKKyAgICAgICAgaWYgc3RhY2tsZXZlbCA8PSAxIG9yIF9pc19pbnRlcm5hbF9mcmFtZShzeXMuX2dldGZyYW1lKDEpKToKKyAgICAgICAgICAgICMgSWYgZnJhbWUgaXMgdG9vIHNtYWxsIHRvIGNhcmUgb3IgaWYgdGhlIHdhcm5pbmcgb3JpZ2luYXRlZCBpbgorICAgICAgICAgICAgIyBpbnRlcm5hbCBjb2RlLCB0aGVuIGRvIG5vdCB0cnkgdG8gaGlkZSBhbnkgZnJhbWVzLgorICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKHN0YWNrbGV2ZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKKyAgICAgICAgICAgICMgTG9vayBmb3Igb25lIGZyYW1lIGxlc3Mgc2luY2UgdGhlIGFib3ZlIGxpbmUgc3RhcnRzIHVzIG9mZi4KKyAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKHN0YWNrbGV2ZWwtMSk6CisgICAgICAgICAgICAgICAgZnJhbWUgPSBfbmV4dF9leHRlcm5hbF9mcmFtZShmcmFtZSkKKyAgICAgICAgICAgICAgICBpZiBmcmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIGdsb2JhbHMgPSBzeXMuX19kaWN0X18KICAgICAgICAgbGluZW5vID0gMQogICAgIGVsc2U6Ci0gICAgICAgIGdsb2JhbHMgPSBjYWxsZXIuZl9nbG9iYWxzCi0gICAgICAgIGxpbmVubyA9IGNhbGxlci5mX2xpbmVubworICAgICAgICBnbG9iYWxzID0gZnJhbWUuZl9nbG9iYWxzCisgICAgICAgIGxpbmVubyA9IGZyYW1lLmZfbGluZW5vCiAgICAgaWYgJ19fbmFtZV9fJyBpbiBnbG9iYWxzOgogICAgICAgICBtb2R1bGUgPSBnbG9iYWxzWydfX25hbWVfXyddCiAgICAgZWxzZToKQEAgLTE4Niw3ICsyMTIsNyBAQAogICAgIGZpbGVuYW1lID0gZ2xvYmFscy5nZXQoJ19fZmlsZV9fJykKICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgZm5sID0gZmlsZW5hbWUubG93ZXIoKQotICAgICAgICBpZiBmbmwuZW5kc3dpdGgoKCIucHljIiwgIi5weW8iKSk6CisgICAgICAgIGlmIGZubC5lbmRzd2l0aCgiLnB5YyIpOgogICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAgICAgZWxzZToKICAgICAgICAgaWYgbW9kdWxlID09ICJfX21haW5fXyI6CkBAIC0zNzIsNyArMzk4LDYgQEAKICAgICBkZWZhdWx0YWN0aW9uID0gX2RlZmF1bHRhY3Rpb24KICAgICBvbmNlcmVnaXN0cnkgPSBfb25jZXJlZ2lzdHJ5CiAgICAgX3dhcm5pbmdzX2RlZmF1bHRzID0gVHJ1ZQotCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmlsdGVycyA9IFtdCiAgICAgZGVmYXVsdGFjdGlvbiA9ICJkZWZhdWx0IgpkaWZmIC0tZ2l0IGEvTGliL3dlYWtyZWYucHkgYi9MaWIvd2Vha3JlZi5weQppbmRleCAxMmJmOTc1Li5hNGVjYWRjIDEwMDY0NAotLS0gYS9MaWIvd2Vha3JlZi5weQorKysgYi9MaWIvd2Vha3JlZi5weQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAgICAgICAgIHJldHVybiBvIGlzIG5vdCBOb25lCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFdlYWtWYWx1ZURpY3Rpb25hcnkgYXQgJXM+IiAlIGlkKHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgaWYgc2VsZi5fcGVuZGluZ19yZW1vdmFsczoKQEAgLTM1OSw3ICszNTksNyBAQAogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YSkgLSBsZW4oc2VsZi5fcGVuZGluZ19yZW1vdmFscykKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8V2Vha0tleURpY3Rpb25hcnkgYXQgJXM+IiAlIGlkKHNlbGYpCisgICAgICAgIHJldHVybiAiPCVzIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpZChzZWxmKSkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgc2VsZi5kYXRhW3JlZihrZXksIHNlbGYuX3JlbW92ZSldID0gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi93c2dpcmVmL2hlYWRlcnMucHkgYi9MaWIvd3NnaXJlZi9oZWFkZXJzLnB5CmluZGV4IGQ5Mzk2MjguLjdlNjcwYjMgMTAwNjQ0Ci0tLSBhL0xpYi93c2dpcmVmL2hlYWRlcnMucHkKKysrIGIvTGliL3dzZ2lyZWYvaGVhZGVycy5weQpAQCAtMjYsMTAgKzI2LDEwIEBACiAKIAogY2xhc3MgSGVhZGVyczoKLQogICAgICIiIk1hbmFnZSBhIGNvbGxlY3Rpb24gb2YgSFRUUCByZXNwb25zZSBoZWFkZXJzIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZixoZWFkZXJzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVycz1Ob25lKToKKyAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMgaWYgaGVhZGVycyBpcyBub3QgTm9uZSBlbHNlIFtdCiAgICAgICAgIGlmIHR5cGUoaGVhZGVycykgaXMgbm90IGxpc3Q6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkhlYWRlcnMgbXVzdCBiZSBhIGxpc3Qgb2YgbmFtZS92YWx1ZSB0dXBsZXMiKQogICAgICAgICBzZWxmLl9oZWFkZXJzID0gaGVhZGVycwpAQCAtMTMxLDcgKzEzMSw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9oZWFkZXJzWzpdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiSGVhZGVycyglcikiICUgc2VsZi5faGVhZGVycworICAgICAgICByZXR1cm4gIiVzKCVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX2hlYWRlcnMpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIic3RyKCkgcmV0dXJucyB0aGUgZm9ybWF0dGVkIGhlYWRlcnMsIGNvbXBsZXRlIHdpdGggZW5kIGxpbmUsCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5IGIvTGliL3htbC9kb20vbWluaWRvbS5weQppbmRleCBjMzc5YTMzLi5hNWQ4MTNmIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5CisrKyBiL0xpYi94bWwvZG9tL21pbmlkb20ucHkKQEAgLTU0NSw5ICs1NDUsNiBAQAogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCi0KICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgYXR0bmFtZV9vcl90dXBsZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXR0bmFtZV9vcl90dXBsZSwgdHVwbGUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzTlNbYXR0bmFtZV9vcl90dXBsZV0KQEAgLTY0OCw5ICs2NDUsMTAgQEAKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2U6Ci0gICAgICAgICAgICByZXR1cm4gIjxUeXBlSW5mbyAlciAoZnJvbSAlcik+IiAlIChzZWxmLm5hbWUsIHNlbGYubmFtZXNwYWNlKQorICAgICAgICAgICAgcmV0dXJuICI8JXMgJXIgKGZyb20gJXIpPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZXNwYWNlKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICI8VHlwZUluZm8gJXI+IiAlIHNlbGYubmFtZQorICAgICAgICAgICAgcmV0dXJuICI8JXMgJXI+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lKQogCiAgICAgZGVmIF9nZXRfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weSBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKaW5kZXggZDc5ODYyNC4uNDQ0ZjBiMiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiSW1wbGVtZW50YXRpb24gb2YgdGhlIERPTSBMZXZlbCAzICdMUy1Mb2FkJyBmZWF0dXJlLiIiIgogCiBpbXBvcnQgY29weQoraW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgeG1sLmRvbQogCiBmcm9tIHhtbC5kb20uTm9kZUZpbHRlciBpbXBvcnQgTm9kZUZpbHRlcgpAQCAtMzMxLDEzICszMzIsMzMgQEAKIGRlbCBOb2RlRmlsdGVyCiAKIAorY2xhc3MgX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5OgorICAgIGRlZiB3YXJuKHNlbGYsIGNscyk6CisgICAgICAgIGNsc25hbWUgPSBjbHMuX19uYW1lX18KKyAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICJ7Y2xzfS5hc3luYyBpcyBkZXByZWNhdGVkOyB1c2Uge2Nsc30uYXN5bmNfIi5mb3JtYXQoY2xzPWNsc25hbWUpLAorICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorCisgICAgZGVmIF9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIGNscyk6CisgICAgICAgIHNlbGYud2FybihjbHMpCisgICAgICAgIGlmIGluc3RhbmNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLmFzeW5jXworICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSk6CisgICAgICAgIHNlbGYud2Fybih0eXBlKGluc3RhbmNlKSkKKyAgICAgICAgc2V0YXR0cihpbnN0YW5jZSwgJ2FzeW5jXycsIHZhbHVlKQorCisKIGNsYXNzIERvY3VtZW50TFM6CiAgICAgIiIiTWl4aW4gdG8gY3JlYXRlIGRvY3VtZW50cyB0aGF0IGNvbmZvcm0gdG8gdGhlIGxvYWQvc2F2ZSBzcGVjLiIiIgogCi0gICAgYXN5bmMgPSBGYWxzZQorICAgIGFzeW5jID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkKKyAgICBhc3luY18gPSBGYWxzZQogCiAgICAgZGVmIF9nZXRfYXN5bmMoc2VsZik6CiAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIF9zZXRfYXN5bmMoc2VsZiwgYXN5bmMpOgogICAgICAgICBpZiBhc3luYzoKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKApAQCAtMzYzLDYgKzM4NCw5IEBACiAgICAgICAgIHJldHVybiBzbm9kZS50b3htbCgpCiAKIAorZGVsIF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eQorCisKIGNsYXNzIERPTUltcGxlbWVudGF0aW9uTFM6CiAgICAgTU9ERV9TWU5DSFJPTk9VUyA9IDEKICAgICBNT0RFX0FTWU5DSFJPTk9VUyA9IDIKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CmluZGV4IGQ5MTRkZGIuLjVkZTQyMzIgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQpAQCAtMTE0LDcgKzExNCwxMCBAQAogICAgIHJldHVybiBzZWxlY3QKIAogZGVmIHByZXBhcmVfZGVzY2VuZGFudChuZXh0LCB0b2tlbik6Ci0gICAgdG9rZW4gPSBuZXh0KCkKKyAgICB0cnk6CisgICAgICAgIHRva2VuID0gbmV4dCgpCisgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgIHJldHVybgogICAgIGlmIHRva2VuWzBdID09ICIqIjoKICAgICAgICAgdGFnID0gIioiCiAgICAgZWxpZiBub3QgdG9rZW5bMF06CkBAIC0xNDgsNyArMTUxLDEwIEBACiAgICAgc2lnbmF0dXJlID0gW10KICAgICBwcmVkaWNhdGUgPSBbXQogICAgIHdoaWxlIDE6Ci0gICAgICAgIHRva2VuID0gbmV4dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuID0gbmV4dCgpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHRva2VuWzBdID09ICJdIjoKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGlmIHRva2VuWzBdIGFuZCB0b2tlblswXVs6MV0gaW4gIidcIiI6CkBAIC0yNjEsNyArMjY3LDEwIEBACiAgICAgICAgIGlmIHBhdGhbOjFdID09ICIvIjoKICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJjYW5ub3QgdXNlIGFic29sdXRlIHBhdGggb24gZWxlbWVudCIpCiAgICAgICAgIG5leHQgPSBpdGVyKHhwYXRoX3Rva2VuaXplcihwYXRoLCBuYW1lc3BhY2VzKSkuX19uZXh0X18KLSAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4gPSBuZXh0KCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZWN0b3IgPSBbXQogICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgdHJ5OgpAQCAtMjg2LDEwICsyOTUsNyBAQAogIyBGaW5kIGZpcnN0IG1hdGNoaW5nIG9iamVjdC4KIAogZGVmIGZpbmQoZWxlbSwgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBuZXh0KGl0ZXJmaW5kKGVsZW0sIHBhdGgsIG5hbWVzcGFjZXMpKQotICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBuZXh0KGl0ZXJmaW5kKGVsZW0sIHBhdGgsIG5hbWVzcGFjZXMpLCBOb25lKQogCiAjIwogIyBGaW5kIGFsbCBtYXRjaGluZyBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggOTdlYmE4Yi4uYmIzMmE4ZiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICAgICAgc2VsZi5fY2hpbGRyZW4gPSBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxFbGVtZW50ICVzIGF0IDB4JXg+IiAlIChyZXByKHNlbGYudGFnKSwgaWQoc2VsZikpCisgICAgICAgIHJldHVybiAiPCVzICVyIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnRhZywgaWQoc2VsZikpCiAKICAgICBkZWYgbWFrZWVsZW1lbnQoc2VsZiwgdGFnLCBhdHRyaWIpOgogICAgICAgICAiIiJDcmVhdGUgYSBuZXcgZWxlbWVudCB3aXRoIHRoZSBzYW1lIHR5cGUuCkBAIC01MDksNyArNTA5LDcgQEAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGV4dAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8UU5hbWUgJXI+JyAlIChzZWxmLnRleHQsKQorICAgICAgICByZXR1cm4gJzwlcyAlcj4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnRleHQpCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaGFzaChzZWxmLnRleHQpCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CkBAIC01MzIsMTAgKzUzMiw2IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFFOYW1lKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnRleHQgPT0gb3RoZXIudGV4dAogICAgICAgICByZXR1cm4gc2VsZi50ZXh0ID09IG90aGVyCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFFOYW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnRleHQgIT0gb3RoZXIudGV4dAotICAgICAgICByZXR1cm4gc2VsZi50ZXh0ICE9IG90aGVyCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgvX19pbml0X18ucHkgYi9MaWIveG1sL3NheC9fX2luaXRfXy5weQppbmRleCBiMTYxYjFmLi5lZjY3YWU2IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC9fX2luaXRfXy5weQorKysgYi9MaWIveG1sL3NheC9fX2luaXRfXy5weQpAQCAtMzMsOCArMzMsNyBAQAogICAgIHBhcnNlci5wYXJzZShzb3VyY2UpCiAKIGRlZiBwYXJzZVN0cmluZyhzdHJpbmcsIGhhbmRsZXIsIGVycm9ySGFuZGxlcj1FcnJvckhhbmRsZXIoKSk6Ci0gICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwotCisgICAgaW1wb3J0IGlvCiAgICAgaWYgZXJyb3JIYW5kbGVyIGlzIE5vbmU6CiAgICAgICAgIGVycm9ySGFuZGxlciA9IEVycm9ySGFuZGxlcigpCiAgICAgcGFyc2VyID0gbWFrZV9wYXJzZXIoKQpAQCAtNDIsNyArNDEsMTAgQEAKICAgICBwYXJzZXIuc2V0RXJyb3JIYW5kbGVyKGVycm9ySGFuZGxlcikKIAogICAgIGlucHNyYyA9IElucHV0U291cmNlKCkKLSAgICBpbnBzcmMuc2V0Qnl0ZVN0cmVhbShCeXRlc0lPKHN0cmluZykpCisgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIHN0cik6CisgICAgICAgIGlucHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oaW8uU3RyaW5nSU8oc3RyaW5nKSkKKyAgICBlbHNlOgorICAgICAgICBpbnBzcmMuc2V0Qnl0ZVN0cmVhbShpby5CeXRlc0lPKHN0cmluZykpCiAgICAgcGFyc2VyLnBhcnNlKGlucHNyYykKIAogIyB0aGlzIGlzIHRoZSBwYXJzZXIgbGlzdCB1c2VkIGJ5IHRoZSBtYWtlX3BhcnNlciBmdW5jdGlvbiBpZiBubwpkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgvZXhwYXRyZWFkZXIucHkgYi9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weQppbmRleCAzYjYzNzM3Li45OGI1Y2E5IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weQorKysgYi9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weQpAQCAtMjMyLDkgKzIzMiwxNCBAQAogICAgICAgICAgICAgICAgIHBhcnNlci5FcnJvckNvbHVtbk51bWJlciA9IHNlbGYuX3BhcnNlci5FcnJvckNvbHVtbk51bWJlcgogICAgICAgICAgICAgICAgIHBhcnNlci5FcnJvckxpbmVOdW1iZXIgPSBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCiAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyID0gcGFyc2VyCi0gICAgICAgICAgICBicyA9IHNlbGYuX3NvdXJjZS5nZXRCeXRlU3RyZWFtKCkKLSAgICAgICAgICAgIGlmIGJzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGJzLmNsb3NlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlID0gc2VsZi5fc291cmNlLmdldENoYXJhY3RlclN0cmVhbSgpCisgICAgICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZpbGUgPSBzZWxmLl9zb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpCisgICAgICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCiAKICAgICBkZWYgX3Jlc2V0X2NvbnRfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5fcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBcCmRpZmYgLS1naXQgYS9MaWIveG1sL3NheC9zYXh1dGlscy5weSBiL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5CmluZGV4IDFkM2QwZWMuLmE2OWM3ZjcgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5CisrKyBiL0xpYi94bWwvc2F4L3NheHV0aWxzLnB5CkBAIC0zNDUsMTEgKzM0NSwxNCBAQAogICAgIGVsaWYgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgIGYgPSBzb3VyY2UKICAgICAgICAgc291cmNlID0geG1scmVhZGVyLklucHV0U291cmNlKCkKLSAgICAgICAgc291cmNlLnNldEJ5dGVTdHJlYW0oZikKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLnJlYWQoMCksIHN0cik6CisgICAgICAgICAgICBzb3VyY2Uuc2V0Q2hhcmFjdGVyU3RyZWFtKGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzb3VyY2Uuc2V0Qnl0ZVN0cmVhbShmKQogICAgICAgICBpZiBoYXNhdHRyKGYsICJuYW1lIikgYW5kIGlzaW5zdGFuY2UoZi5uYW1lLCBzdHIpOgogICAgICAgICAgICAgc291cmNlLnNldFN5c3RlbUlkKGYubmFtZSkKIAotICAgIGlmIHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkgaXMgTm9uZToKKyAgICBpZiBzb3VyY2UuZ2V0Q2hhcmFjdGVyU3RyZWFtKCkgaXMgTm9uZSBhbmQgc291cmNlLmdldEJ5dGVTdHJlYW0oKSBpcyBOb25lOgogICAgICAgICBzeXNpZCA9IHNvdXJjZS5nZXRTeXN0ZW1JZCgpCiAgICAgICAgIGJhc2VoZWFkID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgubm9ybXBhdGgoYmFzZSkpCiAgICAgICAgIHN5c2lkZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oYmFzZWhlYWQsIHN5c2lkKQpkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgveG1scmVhZGVyLnB5IGIvTGliL3htbC9zYXgveG1scmVhZGVyLnB5CmluZGV4IDdlZjQ5N2YuLjcxNmYyMjggMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L3htbHJlYWRlci5weQorKysgYi9MaWIveG1sL3NheC94bWxyZWFkZXIucHkKQEAgLTExNyw3ICsxMTcsOSBAQAogICAgICAgICBzb3VyY2UgPSBzYXh1dGlscy5wcmVwYXJlX2lucHV0X3NvdXJjZShzb3VyY2UpCiAKICAgICAgICAgc2VsZi5wcmVwYXJlUGFyc2VyKHNvdXJjZSkKLSAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkKKyAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKQorICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgICAgICBmaWxlID0gc291cmNlLmdldEJ5dGVTdHJlYW0oKQogICAgICAgICBidWZmZXIgPSBmaWxlLnJlYWQoc2VsZi5fYnVmc2l6ZSkKICAgICAgICAgd2hpbGUgYnVmZmVyOgogICAgICAgICAgICAgc2VsZi5mZWVkKGJ1ZmZlcikKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggNDUyMTMyNS4uYWNiODE0MiAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTIwOCw4ICsyMDgsOCBAQAogICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgIjxQcm90b2NvbEVycm9yIGZvciAlczogJXMgJXM+IiAlCi0gICAgICAgICAgICAoc2VsZi51cmwsIHNlbGYuZXJyY29kZSwgc2VsZi5lcnJtc2cpCisgICAgICAgICAgICAiPCVzIGZvciAlczogJXMgJXM+IiAlCisgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudXJsLCBzZWxmLmVycmNvZGUsIHNlbGYuZXJybXNnKQogICAgICAgICAgICAgKQogCiAjIwpAQCAtMjM3LDcgKzIzNyw4IEBACiAgICAgICAgIHNlbGYuZmF1bHRDb2RlID0gZmF1bHRDb2RlCiAgICAgICAgIHNlbGYuZmF1bHRTdHJpbmcgPSBmYXVsdFN0cmluZwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RmF1bHQgJXM6ICVyPiIgJSAoc2VsZi5mYXVsdENvZGUsIHNlbGYuZmF1bHRTdHJpbmcpCisgICAgICAgIHJldHVybiAiPCVzICVzOiAlcj4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhdWx0Q29kZSwgc2VsZi5mYXVsdFN0cmluZykKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBTcGVjaWFsIHZhbHVlcwpAQCAtMzM5LDEwICszNDAsNiBAQAogICAgICAgICBzLCBvID0gc2VsZi5tYWtlX2NvbXBhcmFibGUob3RoZXIpCiAgICAgICAgIHJldHVybiBzID09IG8KIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBzLCBvID0gc2VsZi5tYWtlX2NvbXBhcmFibGUob3RoZXIpCi0gICAgICAgIHJldHVybiBzICE9IG8KLQogICAgIGRlZiB0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgIHJldHVybiB0aW1lLnN0cnB0aW1lKHNlbGYudmFsdWUsICIlWSVtJWRUJUg6JU06JVMiKQogCkBAIC0zNTUsNyArMzUyLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RGF0ZVRpbWUgJXIgYXQgJXg+IiAlIChzZWxmLnZhbHVlLCBpZChzZWxmKSkKKyAgICAgICAgcmV0dXJuICI8JXMgJXIgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYudmFsdWUsIGlkKHNlbGYpKQogCiAgICAgZGVmIGRlY29kZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi52YWx1ZSA9IHN0cihkYXRhKS5zdHJpcCgpCkBAIC00MDYsMTEgKzQwMyw2IEBACiAgICAgICAgICAgICBvdGhlciA9IG90aGVyLmRhdGEKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBvdGhlcgogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIEJpbmFyeSk6Ci0gICAgICAgICAgICBvdGhlciA9IG90aGVyLmRhdGEKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSAhPSBvdGhlcgotCiAgICAgZGVmIGRlY29kZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5kYXRhID0gYmFzZTY0LmRlY29kZWJ5dGVzKGRhdGEpCiAKQEAgLTg1Miw3ICs4NDQsNyBAQAogICAgICAgICBzZWxmLl9fY2FsbF9saXN0ID0gW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8TXVsdGlDYWxsIGF0ICV4PiIgJSBpZChzZWxmKQorICAgICAgICByZXR1cm4gIjwlcyBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaWQoc2VsZikpCiAKICAgICBfX3N0cl9fID0gX19yZXByX18KIApAQCAtMTAyMywxMiArMTAxNSw5IEBACiAgICAgaWYgbm90IGd6aXA6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKICAgICBmID0gQnl0ZXNJTygpCi0gICAgZ3pmID0gZ3ppcC5HemlwRmlsZShtb2RlPSJ3YiIsIGZpbGVvYmo9ZiwgY29tcHJlc3NsZXZlbD0xKQotICAgIGd6Zi53cml0ZShkYXRhKQotICAgIGd6Zi5jbG9zZSgpCi0gICAgZW5jb2RlZCA9IGYuZ2V0dmFsdWUoKQotICAgIGYuY2xvc2UoKQotICAgIHJldHVybiBlbmNvZGVkCisgICAgd2l0aCBnemlwLkd6aXBGaWxlKG1vZGU9IndiIiwgZmlsZW9iaj1mLCBjb21wcmVzc2xldmVsPTEpIGFzIGd6ZjoKKyAgICAgICAgZ3pmLndyaXRlKGRhdGEpCisgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQogCiAjIwogIyBEZWNvZGUgYSBzdHJpbmcgdXNpbmcgdGhlIGd6aXAgY29udGVudCBlbmNvZGluZyBzdWNoIGFzIHNwZWNpZmllZCBieSB0aGUKQEAgLTEwNDksMTcgKzEwMzgsMTQgQEAKICAgICAiIiIKICAgICBpZiBub3QgZ3ppcDoKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotICAgIGYgPSBCeXRlc0lPKGRhdGEpCi0gICAgZ3pmID0gZ3ppcC5HemlwRmlsZShtb2RlPSJyYiIsIGZpbGVvYmo9ZikKLSAgICB0cnk6Ci0gICAgICAgIGlmIG1heF9kZWNvZGUgPCAwOiAjIG5vIGxpbWl0Ci0gICAgICAgICAgICBkZWNvZGVkID0gZ3pmLnJlYWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKG1heF9kZWNvZGUgKyAxKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGRhdGEiKQotICAgIGYuY2xvc2UoKQotICAgIGd6Zi5jbG9zZSgpCisgICAgd2l0aCBnemlwLkd6aXBGaWxlKG1vZGU9InJiIiwgZmlsZW9iaj1CeXRlc0lPKGRhdGEpKSBhcyBnemY6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG1heF9kZWNvZGUgPCAwOiAjIG5vIGxpbWl0CisgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKG1heF9kZWNvZGUgKyAxKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZGF0YSIpCiAgICAgaWYgbWF4X2RlY29kZSA+PSAwIGFuZCBsZW4oZGVjb2RlZCkgPiBtYXhfZGVjb2RlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXggZ3ppcHBlZCBwYXlsb2FkIGxlbmd0aCBleGNlZWRlZCIpCiAgICAgcmV0dXJuIGRlY29kZWQKQEAgLTExNDksNyArMTEzNSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaSBvciBlLmVycm5vIG5vdCBpbiAoZXJybm8uRUNPTk5SRVNFVCwgZXJybm8uRUNPTk5BQk9SVEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLkVQSVBFKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5CYWRTdGF0dXNMaW5lOiAjY2xvc2UgYWZ0ZXIgd2Ugc2VudCByZXF1ZXN0CisgICAgICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuUmVtb3RlRGlzY29ubmVjdGVkOgogICAgICAgICAgICAgICAgIGlmIGk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTE0NTIsOCArMTQzOCw4IEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAoCi0gICAgICAgICAgICAiPFNlcnZlclByb3h5IGZvciAlcyVzPiIgJQotICAgICAgICAgICAgKHNlbGYuX19ob3N0LCBzZWxmLl9faGFuZGxlcikKKyAgICAgICAgICAgICI8JXMgZm9yICVzJXM+IiAlCisgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuX19ob3N0LCBzZWxmLl9faGFuZGxlcikKICAgICAgICAgICAgICkKIAogICAgIF9fc3RyX18gPSBfX3JlcHJfXwpAQCAtMTQ3NSw2ICsxNDYxLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3RyYW5zcG9ydAogICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQXR0cmlidXRlICVyIG5vdCBmb3VuZCIgJSAoYXR0ciwpKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuX19jbG9zZSgpCisKICMgY29tcGF0aWJpbGl0eQogCiBTZXJ2ZXIgPSBTZXJ2ZXJQcm94eQpkaWZmIC0tZ2l0IGEvTGliL3ppcGFwcC5weSBiL0xpYi96aXBhcHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzODBiZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi96aXBhcHAucHkKQEAgLTAsMCArMSwyMDAgQEAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHppcGZpbGUKKworX19hbGxfXyA9IFsnWmlwQXBwRXJyb3InLCAnY3JlYXRlX2FyY2hpdmUnLCAnZ2V0X2ludGVycHJldGVyJ10KKworCisjIFRoZSBfX21haW5fXy5weSB1c2VkIGlmIHRoZSB1c2VycyBzcGVjaWZpZXMgIi1tIG1vZHVsZTpmbiIuCisjIE5vdGUgdGhhdCB0aGlzIHdpbGwgYWx3YXlzIGJlIHdyaXR0ZW4gYXMgVVRGLTggKG1vZHVsZSBhbmQKKyMgZnVuY3Rpb24gbmFtZXMgY2FuIGJlIG5vbi1BU0NJSSBpbiBQeXRob24gMykuCisjIFdlIGFkZCBhIGNvZGluZyBjb29raWUgZXZlbiB0aG91Z2ggVVRGLTggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKKyMgYmVjYXVzZSB0aGUgcmVzdWx0aW5nIGFyY2hpdmUgbWF5IGJlIGludGVuZGVkIHRvIGJlIHJ1biB1bmRlciBQeXRob24gMi4KK01BSU5fVEVNUExBVEUgPSAiIiJcCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQoraW1wb3J0IHttb2R1bGV9Cit7bW9kdWxlfS57Zm59KCkKKyIiIgorCisKKyMgVGhlIFdpbmRvd3MgbGF1bmNoZXIgZGVmYXVsdHMgdG8gVVRGLTggd2hlbiBwYXJzaW5nIHNoZWJhbmcgbGluZXMgaWYgdGhlCisjIGZpbGUgaGFzIG5vIEJPTS4gU28gdXNlIFVURi04IG9uIFdpbmRvd3MuCisjIE9uIFVuaXgsIHVzZSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KK2lmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICBzaGViYW5nX2VuY29kaW5nID0gJ3V0Zi04JworZWxzZToKKyAgICBzaGViYW5nX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCisKKworY2xhc3MgWmlwQXBwRXJyb3IoVmFsdWVFcnJvcik6CisgICAgcGFzcworCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgX21heWJlX29wZW4oYXJjaGl2ZSwgbW9kZSk6CisgICAgaWYgaXNpbnN0YW5jZShhcmNoaXZlLCBwYXRobGliLlBhdGgpOgorICAgICAgICBhcmNoaXZlID0gc3RyKGFyY2hpdmUpCisgICAgaWYgaXNpbnN0YW5jZShhcmNoaXZlLCBzdHIpOgorICAgICAgICB3aXRoIG9wZW4oYXJjaGl2ZSwgbW9kZSkgYXMgZjoKKyAgICAgICAgICAgIHlpZWxkIGYKKyAgICBlbHNlOgorICAgICAgICB5aWVsZCBhcmNoaXZlCisKKworZGVmIF93cml0ZV9maWxlX3ByZWZpeChmLCBpbnRlcnByZXRlcik6CisgICAgIiIiV3JpdGUgYSBzaGViYW5nIGxpbmUuIiIiCisgICAgaWYgaW50ZXJwcmV0ZXI6CisgICAgICAgIHNoZWJhbmcgPSBiJyMhJyArIGludGVycHJldGVyLmVuY29kZShzaGViYW5nX2VuY29kaW5nKSArIGInXG4nCisgICAgICAgIGYud3JpdGUoc2hlYmFuZykKKworCitkZWYgX2NvcHlfYXJjaGl2ZShhcmNoaXZlLCBuZXdfYXJjaGl2ZSwgaW50ZXJwcmV0ZXI9Tm9uZSk6CisgICAgIiIiQ29weSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlLCBtb2RpZnlpbmcgdGhlIHNoZWJhbmcgbGluZS4iIiIKKyAgICB3aXRoIF9tYXliZV9vcGVuKGFyY2hpdmUsICdyYicpIGFzIHNyYzoKKyAgICAgICAgIyBTa2lwIHRoZSBzaGViYW5nIGxpbmUgZnJvbSB0aGUgc291cmNlLgorICAgICAgICAjIFJlYWQgMiBieXRlcyBvZiB0aGUgc291cmNlIGFuZCBjaGVjayBpZiB0aGV5IGFyZSAjIS4KKyAgICAgICAgZmlyc3RfMiA9IHNyYy5yZWFkKDIpCisgICAgICAgIGlmIGZpcnN0XzIgPT0gYicjISc6CisgICAgICAgICAgICAjIERpc2NhcmQgdGhlIGluaXRpYWwgMiBieXRlcyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHNoZWJhbmcgbGluZS4KKyAgICAgICAgICAgIGZpcnN0XzIgPSBiJycKKyAgICAgICAgICAgIHNyYy5yZWFkbGluZSgpCisKKyAgICAgICAgd2l0aCBfbWF5YmVfb3BlbihuZXdfYXJjaGl2ZSwgJ3diJykgYXMgZHN0OgorICAgICAgICAgICAgX3dyaXRlX2ZpbGVfcHJlZml4KGRzdCwgaW50ZXJwcmV0ZXIpCisgICAgICAgICAgICAjIElmIHRoZXJlIHdhcyBubyBzaGViYW5nLCAiZmlyc3RfMiIgY29udGFpbnMgdGhlIGZpcnN0IDIgYnl0ZXMKKyAgICAgICAgICAgICMgb2YgdGhlIHNvdXJjZSBmaWxlLCBzbyB3cml0ZSB0aGVtIGJlZm9yZSBjb3B5aW5nIHRoZSByZXN0CisgICAgICAgICAgICAjIG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgZHN0LndyaXRlKGZpcnN0XzIpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkc3QpCisKKyAgICBpZiBpbnRlcnByZXRlciBhbmQgaXNpbnN0YW5jZShuZXdfYXJjaGl2ZSwgc3RyKToKKyAgICAgICAgb3MuY2htb2QobmV3X2FyY2hpdmUsIG9zLnN0YXQobmV3X2FyY2hpdmUpLnN0X21vZGUgfCBzdGF0LlNfSUVYRUMpCisKKworZGVmIGNyZWF0ZV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0PU5vbmUsIGludGVycHJldGVyPU5vbmUsIG1haW49Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUgZnJvbSBTT1VSQ0UuCisKKyAgICBUaGUgU09VUkNFIGNhbiBiZSB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSwgb3IgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZQorICAgIG9iamVjdCByZWZlcnJpbmcgdG8gYW4gZXhpc3RpbmcgYXJjaGl2ZS4KKworICAgIFRoZSBjb250ZW50IG9mIFNPVVJDRSBpcyBwYWNrZWQgaW50byBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGluIFRBUkdFVCwKKyAgICB3aGljaCBjYW4gYmUgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZSBvYmplY3QuICBJZiBTT1VSQ0UgaXMgYSBkaXJlY3RvcnksCisgICAgVEFSR0VUIGNhbiBiZSBvbWl0dGVkIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgU09VUkNFIHdpdGggLnB5egorICAgIGFwcGVuZGVkLgorCisgICAgVGhlIGNyZWF0ZWQgYXBwbGljYXRpb24gYXJjaGl2ZSB3aWxsIGhhdmUgYSBzaGViYW5nIGxpbmUgc3BlY2lmeWluZworICAgIHRoYXQgaXQgc2hvdWxkIHJ1biB3aXRoIElOVEVSUFJFVEVSICh0aGVyZSB3aWxsIGJlIG5vIHNoZWJhbmcgbGluZSBpZgorICAgIElOVEVSUFJFVEVSIGlzIE5vbmUpLCBhbmQgYSBfX21haW5fXy5weSB3aGljaCBydW5zIE1BSU4gKGlmIE1BSU4gaXMKKyAgICBub3Qgc3BlY2lmaWVkLCBhbiBleGlzdGluZyBfX21haW5fXy5weSB3aWxsIGJlIHVzZWQpLiBJdCBpcyBhbiB0byBzcGVjaWZ5CisgICAgTUFJTiBmb3IgYW55dGhpbmcgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeSBzb3VyY2Ugd2l0aCBubyBfX21haW5fXy5weSwgYW5kIGl0CisgICAgaXMgYW4gZXJyb3IgdG8gb21pdCBNQUlOIGlmIHRoZSBkaXJlY3RvcnkgaGFzIG5vIF9fbWFpbl9fLnB5LgorICAgICIiIgorICAgICMgQXJlIHdlIGNvcHlpbmcgYW4gZXhpc3RpbmcgYXJjaGl2ZT8KKyAgICBzb3VyY2VfaXNfZmlsZSA9IEZhbHNlCisgICAgaWYgaGFzYXR0cihzb3VyY2UsICdyZWFkJykgYW5kIGhhc2F0dHIoc291cmNlLCAncmVhZGxpbmUnKToKKyAgICAgICAgc291cmNlX2lzX2ZpbGUgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgc291cmNlID0gcGF0aGxpYi5QYXRoKHNvdXJjZSkKKyAgICAgICAgaWYgc291cmNlLmlzX2ZpbGUoKToKKyAgICAgICAgICAgIHNvdXJjZV9pc19maWxlID0gVHJ1ZQorCisgICAgaWYgc291cmNlX2lzX2ZpbGU6CisgICAgICAgIF9jb3B5X2FyY2hpdmUoc291cmNlLCB0YXJnZXQsIGludGVycHJldGVyKQorICAgICAgICByZXR1cm4KKworICAgICMgV2UgYXJlIGNyZWF0aW5nIGEgbmV3IGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeS4KKyAgICBpZiBub3Qgc291cmNlLmV4aXN0cygpOgorICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigiU291cmNlIGRvZXMgbm90IGV4aXN0IikKKyAgICBoYXNfbWFpbiA9IChzb3VyY2UgLyAnX19tYWluX18ucHknKS5pc19maWxlKCkKKyAgICBpZiBtYWluIGFuZCBoYXNfbWFpbjoKKyAgICAgICAgcmFpc2UgWmlwQXBwRXJyb3IoCisgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgZW50cnkgcG9pbnQgaWYgdGhlIHNvdXJjZSBoYXMgX19tYWluX18ucHkiKQorICAgIGlmIG5vdCAobWFpbiBvciBoYXNfbWFpbik6CisgICAgICAgIHJhaXNlIFppcEFwcEVycm9yKCJBcmNoaXZlIGhhcyBubyBlbnRyeSBwb2ludCIpCisKKyAgICBtYWluX3B5ID0gTm9uZQorICAgIGlmIG1haW46CisgICAgICAgICMgQ2hlY2sgdGhhdCBtYWluIGhhcyB0aGUgcmlnaHQgZm9ybWF0LgorICAgICAgICBtb2QsIHNlcCwgZm4gPSBtYWluLnBhcnRpdGlvbignOicpCisgICAgICAgIG1vZF9vayA9IGFsbChwYXJ0LmlzaWRlbnRpZmllcigpIGZvciBwYXJ0IGluIG1vZC5zcGxpdCgnLicpKQorICAgICAgICBmbl9vayA9IGFsbChwYXJ0LmlzaWRlbnRpZmllcigpIGZvciBwYXJ0IGluIGZuLnNwbGl0KCcuJykpCisgICAgICAgIGlmIG5vdCAoc2VwID09ICc6JyBhbmQgbW9kX29rIGFuZCBmbl9vayk6CisgICAgICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigiSW52YWxpZCBlbnRyeSBwb2ludDogIiArIG1haW4pCisgICAgICAgIG1haW5fcHkgPSBNQUlOX1RFTVBMQVRFLmZvcm1hdChtb2R1bGU9bW9kLCBmbj1mbikKKworICAgIGlmIHRhcmdldCBpcyBOb25lOgorICAgICAgICB0YXJnZXQgPSBzb3VyY2Uud2l0aF9zdWZmaXgoJy5weXonKQorICAgIGVsaWYgbm90IGhhc2F0dHIodGFyZ2V0LCAnd3JpdGUnKToKKyAgICAgICAgdGFyZ2V0ID0gcGF0aGxpYi5QYXRoKHRhcmdldCkKKworICAgIHdpdGggX21heWJlX29wZW4odGFyZ2V0LCAnd2InKSBhcyBmZDoKKyAgICAgICAgX3dyaXRlX2ZpbGVfcHJlZml4KGZkLCBpbnRlcnByZXRlcikKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZmQsICd3JykgYXMgejoKKyAgICAgICAgICAgIHJvb3QgPSBwYXRobGliLlBhdGgoc291cmNlKQorICAgICAgICAgICAgZm9yIGNoaWxkIGluIHJvb3Qucmdsb2IoJyonKToKKyAgICAgICAgICAgICAgICBhcmNuYW1lID0gc3RyKGNoaWxkLnJlbGF0aXZlX3RvKHJvb3QpKQorICAgICAgICAgICAgICAgIHoud3JpdGUoc3RyKGNoaWxkKSwgYXJjbmFtZSkKKyAgICAgICAgICAgIGlmIG1haW5fcHk6CisgICAgICAgICAgICAgICAgei53cml0ZXN0cignX19tYWluX18ucHknLCBtYWluX3B5LmVuY29kZSgndXRmLTgnKSkKKworICAgIGlmIGludGVycHJldGVyIGFuZCBub3QgaGFzYXR0cih0YXJnZXQsICd3cml0ZScpOgorICAgICAgICB0YXJnZXQuY2htb2QodGFyZ2V0LnN0YXQoKS5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQorCisKK2RlZiBnZXRfaW50ZXJwcmV0ZXIoYXJjaGl2ZSk6CisgICAgd2l0aCBfbWF5YmVfb3BlbihhcmNoaXZlLCAncmInKSBhcyBmOgorICAgICAgICBpZiBmLnJlYWQoMikgPT0gYicjISc6CisgICAgICAgICAgICByZXR1cm4gZi5yZWFkbGluZSgpLnN0cmlwKCkuZGVjb2RlKHNoZWJhbmdfZW5jb2RpbmcpCisKKworZGVmIG1haW4oYXJncz1Ob25lKToKKyAgICAiIiJSdW4gdGhlIHppcGFwcCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLgorCisgICAgVGhlIEFSR1MgcGFyYW1ldGVyIGxldHMgeW91IHNwZWNpZnkgdGhlIGFyZ3VtZW50IGxpc3QgZGlyZWN0bHkuCisgICAgT21pdHRpbmcgQVJHUyAob3Igc2V0dGluZyBpdCB0byBOb25lKSB3b3JrcyBhcyBmb3IgYXJncGFyc2UsIHVzaW5nCisgICAgc3lzLmFyZ3ZbMTpdIGFzIHRoZSBhcmd1bWVudCBsaXN0LgorICAgICIiIgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgJy1vJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlLiAiCisgICAgICAgICAgICAgICAgICJSZXF1aXJlZCBpZiBTT1VSQ0UgaXMgYW4gYXJjaGl2ZS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcHl0aG9uJywgJy1wJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0iVGhlIG5hbWUgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byB1c2UgIgorICAgICAgICAgICAgICAgICAiKGRlZmF1bHQ6IG5vIHNoZWJhbmcgbGluZSkuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1haW4nLCAnLW0nLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICBoZWxwPSJUaGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgYXBwbGljYXRpb24gIgorICAgICAgICAgICAgICAgICAiKGRlZmF1bHQ6IHVzZSBhbiBleGlzdGluZyBfX21haW5fXy5weSkuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWluZm8nLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0iRGlzcGxheSB0aGUgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgYXJjaGl2ZS4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZScsCisgICAgICAgICAgICBoZWxwPSJTb3VyY2UgZGlyZWN0b3J5IChvciBleGlzdGluZyBhcmNoaXZlKS4iKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisKKyAgICAjIEhhbmRsZSBgcHl0aG9uIC1tIHppcGFwcCBhcmNoaXZlLnB5eiAtLWluZm9gLgorICAgIGlmIGFyZ3MuaW5mbzoKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGFyZ3Muc291cmNlKToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoIkNhbiBvbmx5IGdldCBpbmZvIGZvciBhbiBhcmNoaXZlIGZpbGUiKQorICAgICAgICBpbnRlcnByZXRlciA9IGdldF9pbnRlcnByZXRlcihhcmdzLnNvdXJjZSkKKyAgICAgICAgcHJpbnQoIkludGVycHJldGVyOiB7fSIuZm9ybWF0KGludGVycHJldGVyIG9yICI8bm9uZT4iKSkKKyAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGlmIG9zLnBhdGguaXNmaWxlKGFyZ3Muc291cmNlKToKKyAgICAgICAgaWYgYXJncy5vdXRwdXQgaXMgTm9uZSBvciAob3MucGF0aC5leGlzdHMoYXJncy5vdXRwdXQpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnNhbWVmaWxlKGFyZ3Muc291cmNlLCBhcmdzLm91dHB1dCkpOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiSW4tcGxhY2UgZWRpdGluZyBvZiBhcmNoaXZlcyBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgaWYgYXJncy5tYWluOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdCgiQ2Fubm90IGNoYW5nZSB0aGUgbWFpbiBmdW5jdGlvbiB3aGVuIGNvcHlpbmciKQorCisgICAgY3JlYXRlX2FyY2hpdmUoYXJncy5zb3VyY2UsIGFyZ3Mub3V0cHV0LAorICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyPWFyZ3MucHl0aG9uLCBtYWluPWFyZ3MubWFpbikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3ppcGZpbGUucHkgYi9MaWIvemlwZmlsZS5weQppbmRleCBiZGE2MTM0Li44NWJkYWE5IDEwMDY0NAotLS0gYS9MaWIvemlwZmlsZS5weQorKysgYi9MaWIvemlwZmlsZS5weQpAQCAtMTMsNiArMTMsNyBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgdGhyZWFkaW5nCiAKIAogdHJ5OgpAQCAtMzU1LDYgKzM1NiwyOCBAQAogICAgICAgICAjIGNvbXByZXNzX3NpemUgICAgICAgICBTaXplIG9mIHRoZSBjb21wcmVzc2VkIGZpbGUKICAgICAgICAgIyBmaWxlX3NpemUgICAgICAgICAgICAgU2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGZpbGUKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gWyc8JXMgZmlsZW5hbWU9JXInICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmZpbGVuYW1lKV0KKyAgICAgICAgaWYgc2VsZi5jb21wcmVzc190eXBlICE9IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgY29tcHJlc3NfdHlwZT0lcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc29yX25hbWVzLmdldChzZWxmLmNvbXByZXNzX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tcHJlc3NfdHlwZSkpCisgICAgICAgIGhpID0gc2VsZi5leHRlcm5hbF9hdHRyID4+IDE2CisgICAgICAgIGxvID0gc2VsZi5leHRlcm5hbF9hdHRyICYgMHhGRkZGCisgICAgICAgIGlmIGhpOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVtb2RlPSVyJyAlIHN0YXQuZmlsZW1vZGUoaGkpKQorICAgICAgICBpZiBsbzoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBleHRlcm5hbF9hdHRyPSUjeCcgJSBsbykKKyAgICAgICAgaXNkaXIgPSBzZWxmLmZpbGVuYW1lWy0xOl0gPT0gJy8nCisgICAgICAgIGlmIG5vdCBpc2RpciBvciBzZWxmLmZpbGVfc2l6ZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlX3NpemU9JXInICUgc2VsZi5maWxlX3NpemUpCisgICAgICAgIGlmICgobm90IGlzZGlyIG9yIHNlbGYuY29tcHJlc3Nfc2l6ZSkgYW5kCisgICAgICAgICAgICAoc2VsZi5jb21wcmVzc190eXBlICE9IFpJUF9TVE9SRUQgb3IKKyAgICAgICAgICAgICBzZWxmLmZpbGVfc2l6ZSAhPSBzZWxmLmNvbXByZXNzX3NpemUpKToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBjb21wcmVzc19zaXplPSVyJyAlIHNlbGYuY29tcHJlc3Nfc2l6ZSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwogICAgIGRlZiBGaWxlSGVhZGVyKHNlbGYsIHppcDY0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHBlci1maWxlIGhlYWRlciBhcyBhIHN0cmluZy4iIiIKICAgICAgICAgZHQgPSBzZWxmLmRhdGVfdGltZQpAQCAtNjI0LDYgKzY0Nyw0NyBAQAogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCIgJSAoY29tcHJlc3NfdHlwZSwpKQogCiAKK2NsYXNzIF9TaGFyZWRGaWxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwb3MsIGNsb3NlLCBsb2NrKToKKyAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKKyAgICAgICAgc2VsZi5fcG9zID0gcG9zCisgICAgICAgIHNlbGYuX2Nsb3NlID0gY2xvc2UKKyAgICAgICAgc2VsZi5fbG9jayA9IGxvY2sKKworICAgIGRlZiByZWFkKHNlbGYsIG49LTEpOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fcG9zKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZChuKQorICAgICAgICAgICAgc2VsZi5fcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2ZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmaWxlb2JqID0gc2VsZi5fZmlsZQorICAgICAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlKGZpbGVvYmopCisKKyMgUHJvdmlkZSB0aGUgdGVsbCBtZXRob2QgZm9yIHVuc2Vla2FibGUgc3RyZWFtCitjbGFzcyBfVGVsbGFibGU6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKKyAgICAgICAgc2VsZi5mcCA9IGZwCisgICAgICAgIHNlbGYub2Zmc2V0ID0gMAorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBuID0gc2VsZi5mcC53cml0ZShkYXRhKQorICAgICAgICBzZWxmLm9mZnNldCArPSBuCisgICAgICAgIHJldHVybiBuCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYub2Zmc2V0CisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuZnAuZmx1c2goKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmZwLmNsb3NlKCkKKworCiBjbGFzcyBaaXBFeHRGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgICAiIiJGaWxlLWxpa2Ugb2JqZWN0IGZvciByZWFkaW5nIGFuIGFyY2hpdmUgbWVtYmVyLgogICAgICAgIElzIHJldHVybmVkIGJ5IFppcEZpbGUub3BlbigpLgpAQCAtNjcxLDYgKzczNSwyMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fZXhwZWN0ZWRfY3JjID0gTm9uZQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbJzwlcy4lcycgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXyldCisgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBuYW1lPSVyIG1vZGU9JXInICUgKHNlbGYubmFtZSwgc2VsZi5tb2RlKSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgIT0gWklQX1NUT1JFRDoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgY29tcHJlc3NfdHlwZT0lcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nvcl9uYW1lcy5nZXQoc2VsZi5fY29tcHJlc3NfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3R5cGUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIFtjbG9zZWRdJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwogICAgIGRlZiByZWFkbGluZShzZWxmLCBsaW1pdD0tMSk6CiAgICAgICAgICIiIlJlYWQgYW5kIHJldHVybiBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtLgogCkBAIC04ODQsNyArOTYyLDggQEAKIAogICAgIGZpbGU6IEVpdGhlciB0aGUgcGF0aCB0byB0aGUgZmlsZSwgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0LgogICAgICAgICAgIElmIGl0IGlzIGEgcGF0aCwgdGhlIGZpbGUgd2lsbCBiZSBvcGVuZWQgYW5kIGNsb3NlZCBieSBaaXBGaWxlLgotICAgIG1vZGU6IFRoZSBtb2RlIGNhbiBiZSBlaXRoZXIgcmVhZCAiciIsIHdyaXRlICJ3IiBvciBhcHBlbmQgImEiLgorICAgIG1vZGU6IFRoZSBtb2RlIGNhbiBiZSBlaXRoZXIgcmVhZCAncicsIHdyaXRlICd3JywgZXhjbHVzaXZlIGNyZWF0ZSAneCcsCisgICAgICAgICAgb3IgYXBwZW5kICdhJy4KICAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pLCBaSVBfREVGTEFURUQgKHJlcXVpcmVzIHpsaWIpLAogICAgICAgICAgICAgICAgICBaSVBfQlpJUDIgKHJlcXVpcmVzIGJ6Mikgb3IgWklQX0xaTUEgKHJlcXVpcmVzIGx6bWEpLgogICAgIGFsbG93WmlwNjQ6IGlmIFRydWUgWmlwRmlsZSB3aWxsIGNyZWF0ZSBmaWxlcyB3aXRoIFpJUDY0IGV4dGVuc2lvbnMgd2hlbgpAQCAtODk3LDkgKzk3NiwxMCBAQAogICAgIF93aW5kb3dzX2lsbGVnYWxfbmFtZV90cmFuc190YWJsZSA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBtb2RlPSJyIiwgY29tcHJlc3Npb249WklQX1NUT1JFRCwgYWxsb3daaXA2ND1UcnVlKToKLSAgICAgICAgIiIiT3BlbiB0aGUgWklQIGZpbGUgd2l0aCBtb2RlIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4iIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAiYSIpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdaaXBGaWxlKCkgcmVxdWlyZXMgbW9kZSAiciIsICJ3Iiwgb3IgImEiJykKKyAgICAgICAgIiIiT3BlbiB0aGUgWklQIGZpbGUgd2l0aCBtb2RlIHJlYWQgJ3InLCB3cml0ZSAndycsIGV4Y2x1c2l2ZSBjcmVhdGUgJ3gnLAorICAgICAgICBvciBhcHBlbmQgJ2EnLiIiIgorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoJ3InLCAndycsICd4JywgJ2EnKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiWmlwRmlsZSByZXF1aXJlcyBtb2RlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAKICAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQogCkBAIC05MDksNyArOTg5LDcgQEAKICAgICAgICAgc2VsZi5OYW1lVG9JbmZvID0ge30gICAgIyBGaW5kIGZpbGUgaW5mbyBnaXZlbiBuYW1lCiAgICAgICAgIHNlbGYuZmlsZWxpc3QgPSBbXSAgICAgICMgTGlzdCBvZiBaaXBJbmZvIGluc3RhbmNlcyBmb3IgYXJjaGl2ZQogICAgICAgICBzZWxmLmNvbXByZXNzaW9uID0gY29tcHJlc3Npb24gICMgTWV0aG9kIG9mIGNvbXByZXNzaW9uCi0gICAgICAgIHNlbGYubW9kZSA9IGtleSA9IG1vZGUucmVwbGFjZSgnYicsICcnKVswXQorICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYucHdkID0gTm9uZQogICAgICAgICBzZWxmLl9jb21tZW50ID0gYicnCiAKQEAgLTkxOCwzMyArOTk4LDUxIEBACiAgICAgICAgICAgICAjIE5vLCBpdCdzIGEgZmlsZW5hbWUKICAgICAgICAgICAgIHNlbGYuX2ZpbGVQYXNzZWQgPSAwCiAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZQotICAgICAgICAgICAgbW9kZURpY3QgPSB7J3InIDogJ3JiJywgJ3cnOiAnd2InLCAnYScgOiAncitiJ30KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmZwID0gaW8ub3BlbihmaWxlLCBtb2RlRGljdFttb2RlXSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gJ2EnOgotICAgICAgICAgICAgICAgICAgICBtb2RlID0ga2V5ID0gJ3cnCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAgPSBpby5vcGVuKGZpbGUsIG1vZGVEaWN0W21vZGVdKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtb2RlRGljdCA9IHsncicgOiAncmInLCAndyc6ICd3K2InLCAneCc6ICd4K2InLCAnYScgOiAncitiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdyK2InOiAndytiJywgJ3crYic6ICd3YicsICd4K2InOiAneGInfQorICAgICAgICAgICAgZmlsZW1vZGUgPSBtb2RlRGljdFttb2RlXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAgPSBpby5vcGVuKGZpbGUsIGZpbGVtb2RlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBpZiBmaWxlbW9kZSBpbiBtb2RlRGljdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVtb2RlID0gbW9kZURpY3RbZmlsZW1vZGVdCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9maWxlUGFzc2VkID0gMQogICAgICAgICAgICAgc2VsZi5mcCA9IGZpbGUKICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBnZXRhdHRyKGZpbGUsICduYW1lJywgTm9uZSkKKyAgICAgICAgc2VsZi5fZmlsZVJlZkNudCA9IDEKKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCisgICAgICAgIHNlbGYuX3NlZWthYmxlID0gVHJ1ZQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGtleSA9PSAncic6CisgICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKICAgICAgICAgICAgICAgICBzZWxmLl9SZWFsR2V0Q29udGVudHMoKQotICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ3cnOgorICAgICAgICAgICAgZWxpZiBtb2RlIGluICgndycsICd4Jyk6CiAgICAgICAgICAgICAgICAgIyBzZXQgdGhlIG1vZGlmaWVkIGZsYWcgc28gY2VudHJhbCBkaXJlY3RvcnkgZ2V0cyB3cml0dGVuCiAgICAgICAgICAgICAgICAgIyBldmVuIGlmIG5vIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUgYXJjaGl2ZQogICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKLSAgICAgICAgICAgIGVsaWYga2V5ID09ICdhJzoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcCA9IF9UZWxsYWJsZShzZWxmLmZwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IDAKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgU29tZSBmaWxlLWxpa2Ugb2JqZWN0cyBjYW4gcHJvdmlkZSB0ZWxsKCkgYnV0IG5vdCBzZWVrKCkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKKyAgICAgICAgICAgIGVsaWYgbW9kZSA9PSAnYSc6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAjIFNlZSBpZiBmaWxlIGlzIGEgemlwIGZpbGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fUmVhbEdldENvbnRlbnRzKCkKICAgICAgICAgICAgICAgICAgICAgIyBzZWVrIHRvIHN0YXJ0IG9mIGRpcmVjdG9yeSBhbmQgb3ZlcndyaXRlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpciwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBCYWRaaXBGaWxlOgogICAgICAgICAgICAgICAgICAgICAjIGZpbGUgaXMgbm90IGEgemlwIGZpbGUsIGp1c3QgYXBwZW5kCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlaygwLCAyKQpAQCAtOTUyLDEzICsxMDUwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICMgc2V0IHRoZSBtb2RpZmllZCBmbGFnIHNvIGNlbnRyYWwgZGlyZWN0b3J5IGdldHMgd3JpdHRlbgogICAgICAgICAgICAgICAgICAgICAjIGV2ZW4gaWYgbm8gZmlsZXMgYXJlIGFkZGVkIHRvIHRoZSBhcmNoaXZlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ01vZGUgbXVzdCBiZSAiciIsICJ3IiBvciAiYSInKQorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGZwID0gc2VsZi5mcAogICAgICAgICAgICAgc2VsZi5mcCA9IE5vbmUKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlUGFzc2VkOgotICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UoZnApCiAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTk2Nyw2ICsxMDY1LDIwIEBACiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgogICAgICAgICBzZWxmLmNsb3NlKCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gWyc8JXMuJXMnICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pXQorICAgICAgICBpZiBzZWxmLmZwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi5fZmlsZVBhc3NlZDoKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZT0lcicgJSBzZWxmLmZwKQorICAgICAgICAgICAgZWxpZiBzZWxmLmZpbGVuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbmFtZT0lcicgJSBzZWxmLmZpbGVuYW1lKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIG1vZGU9JXInICUgc2VsZi5tb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIFtjbG9zZWRdJykKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnPicpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKwogICAgIGRlZiBfUmVhbEdldENvbnRlbnRzKHNlbGYpOgogICAgICAgICAiIiJSZWFkIGluIHRoZSB0YWJsZSBvZiBjb250ZW50cyBmb3IgdGhlIFpJUCBmaWxlLiIiIgogICAgICAgICBmcCA9IHNlbGYuZnAKQEAgLTExMzEsMjMgKzEyNDMsMTcgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byByZWFkIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKIAotICAgICAgICAjIE9ubHkgb3BlbiBhIG5ldyBmaWxlIGZvciBpbnN0YW5jZXMgd2hlcmUgd2Ugd2VyZSBub3QKLSAgICAgICAgIyBnaXZlbiBhIGZpbGUgb2JqZWN0IGluIHRoZSBjb25zdHJ1Y3RvcgotICAgICAgICBpZiBzZWxmLl9maWxlUGFzc2VkOgotICAgICAgICAgICAgemVmX2ZpbGUgPSBzZWxmLmZwCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKKyAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCBaaXBJbmZvKToKKyAgICAgICAgICAgICMgJ25hbWUnIGlzIGFscmVhZHkgYW4gaW5mbyBvYmplY3QKKyAgICAgICAgICAgIHppbmZvID0gbmFtZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgemVmX2ZpbGUgPSBpby5vcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpCisgICAgICAgICAgICAjIEdldCBpbmZvIG9iamVjdCBmb3IgbmFtZQorICAgICAgICAgICAgemluZm8gPSBzZWxmLmdldGluZm8obmFtZSkKIAorICAgICAgICBzZWxmLl9maWxlUmVmQ250ICs9IDEKKyAgICAgICAgemVmX2ZpbGUgPSBfU2hhcmVkRmlsZShzZWxmLmZwLCB6aW5mby5oZWFkZXJfb2Zmc2V0LCBzZWxmLl9mcGNsb3NlLCBzZWxmLl9sb2NrKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluZm8gb2JqZWN0Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIFppcEluZm8pOgotICAgICAgICAgICAgICAgICMgJ25hbWUnIGlzIGFscmVhZHkgYW4gaW5mbyBvYmplY3QKLSAgICAgICAgICAgICAgICB6aW5mbyA9IG5hbWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBHZXQgaW5mbyBvYmplY3QgZm9yIG5hbWUKLSAgICAgICAgICAgICAgICB6aW5mbyA9IHNlbGYuZ2V0aW5mbyhuYW1lKQotICAgICAgICAgICAgemVmX2ZpbGUuc2Vlayh6aW5mby5oZWFkZXJfb2Zmc2V0LCAwKQotCiAgICAgICAgICAgICAjIFNraXAgdGhlIGZpbGUgaGVhZGVyOgogICAgICAgICAgICAgZmhlYWRlciA9IHplZl9maWxlLnJlYWQoc2l6ZUZpbGVIZWFkZXIpCiAgICAgICAgICAgICBpZiBsZW4oZmhlYWRlcikgIT0gc2l6ZUZpbGVIZWFkZXI6CkBAIC0xMjA2LDExICsxMzEyLDkgQEAKICAgICAgICAgICAgICAgICBpZiBoWzExXSAhPSBjaGVja19ieXRlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkJhZCBwYXNzd29yZCBmb3IgZmlsZSIsIG5hbWUpCiAKLSAgICAgICAgICAgIHJldHVybiBaaXBFeHRGaWxlKHplZl9maWxlLCBtb2RlLCB6aW5mbywgemQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9maWxlb2JqPW5vdCBzZWxmLl9maWxlUGFzc2VkKQorICAgICAgICAgICAgcmV0dXJuIFppcEV4dEZpbGUoemVmX2ZpbGUsIG1vZGUsIHppbmZvLCB6ZCwgVHJ1ZSkKICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICAgICAgemVmX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgemVmX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD1Ob25lLCBwd2Q9Tm9uZSk6CkBAIC0xMjk4LDggKzE0MDIsOCBAQAogICAgICAgICBpZiB6aW5mby5maWxlbmFtZSBpbiBzZWxmLk5hbWVUb0luZm86CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ0R1cGxpY2F0ZSBuYW1lOiAlcicgJSB6aW5mby5maWxlbmFtZSwgc3RhY2tsZXZlbD0zKQotICAgICAgICBpZiBzZWxmLm1vZGUgbm90IGluICgidyIsICJhIik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3dyaXRlKCkgcmVxdWlyZXMgbW9kZSAidyIgb3IgImEiJykKKyAgICAgICAgaWYgc2VsZi5tb2RlIG5vdCBpbiAoJ3cnLCAneCcsICdhJyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgaWYgbm90IHNlbGYuZnA6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQpAQCAtMTM0NCw2NiArMTQ0OCw3OSBAQAogCiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKICAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAotICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKLSAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKLSAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCi0gICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCi0gICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAKLSAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAotICAgICAgICAgICAgemluZm8uQ1JDID0gMAotICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZworICAgICAgICAgICAgaWYgaXNkaXI6CisgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCisgICAgICAgICAgICAgICAgemluZm8uQ1JDID0gMAorICAgICAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKKyAgICAgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgICMgTXVzdCBvdmVyd3JpdGUgQ1JDIGFuZCBzaXplcyB3aXRoIGNvcnJlY3QgZGF0YSBsYXRlcgorICAgICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKKyAgICAgICAgICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKKyAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAwCisgICAgICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGZpbGVfc2l6ZSArIGxlbihidWYpCisgICAgICAgICAgICAgICAgICAgIENSQyA9IGNyYzMyKGJ1ZiwgQ1JDKSAmIDB4ZmZmZmZmZmYKKyAgICAgICAgICAgICAgICAgICAgaWYgY21wcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuY29tcHJlc3MoYnVmKQorICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKKyAgICAgICAgICAgIGlmIGNtcHI6CisgICAgICAgICAgICAgICAgYnVmID0gY21wci5mbHVzaCgpCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQorICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBmaWxlX3NpemUKKyAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQworICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplCisgICAgICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDA4OgorICAgICAgICAgICAgICAgICMgV3JpdGUgQ1JDIGFuZCBmaWxlIHNpemVzIGFmdGVyIHRoZSBmaWxlIGRhdGEKKyAgICAgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgemlwNjQgZWxzZSAnPExMTCcKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgemluZm8uQ1JDLCB6aW5mby5jb21wcmVzc19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplKSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIG5vdCB6aXA2NCBhbmQgc2VsZi5fYWxsb3daaXA2NDoKKyAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZpbGUgc2l6ZSBoYXMgaW5jcmVhc2VkIGR1cmluZyBjb21wcmVzc2luZycpCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ29tcHJlc3NlZCBzaXplIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplJykKKyAgICAgICAgICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQorICAgICAgICAgICAgICAgICMgY29ycmVjdCBDUkMgYW5kIGZpbGUgc2l6ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKSAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2Vlayh6aW5mby5oZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCisgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQogICAgICAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCiAgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6Ci0gICAgICAgICAgICAjIE11c3Qgb3ZlcndyaXRlIENSQyBhbmQgc2l6ZXMgd2l0aCBjb3JyZWN0IGRhdGEgbGF0ZXIKLSAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAotICAgICAgICAgICAgIyBDb21wcmVzc2VkIHNpemUgY2FuIGJlIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplCi0gICAgICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKLSAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgICAgICBmaWxlX3NpemUgPSAwCi0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWQoMTAyNCAqIDgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSBmaWxlX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgICAgIENSQyA9IGNyYzMyKGJ1ZiwgQ1JDKSAmIDB4ZmZmZmZmZmYKLSAgICAgICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgICAgICBidWYgPSBjbXByLmNvbXByZXNzKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQotICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgYnVmID0gY21wci5mbHVzaCgpCi0gICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gZmlsZV9zaXplCi0gICAgICAgIHppbmZvLkNSQyA9IENSQwotICAgICAgICB6aW5mby5maWxlX3NpemUgPSBmaWxlX3NpemUKLSAgICAgICAgaWYgbm90IHppcDY0IGFuZCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgaWYgZmlsZV9zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgaGFzIGluY3JlYXNlZCBkdXJpbmcgY29tcHJlc3NpbmcnKQotICAgICAgICAgICAgaWYgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ29tcHJlc3NlZCBzaXplIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplJykKLSAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKLSAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKLSAgICAgICAgcG9zaXRpb24gPSBzZWxmLmZwLnRlbGwoKSAgICAgICAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQotICAgICAgICBzZWxmLmZwLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCwgMCkKLSAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgc2VsZi5mcC5zZWVrKHBvc2l0aW9uLCAwKQotICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCiAKICAgICBkZWYgd3JpdGVzdHIoc2VsZiwgemluZm9fb3JfYXJjbmFtZSwgZGF0YSwgY29tcHJlc3NfdHlwZT1Ob25lKToKICAgICAgICAgIiIiV3JpdGUgYSBmaWxlIGludG8gdGhlIGFyY2hpdmUuICBUaGUgY29udGVudHMgaXMgJ2RhdGEnLCB3aGljaApAQCAtMTQzMCwxNTQgKzE1NDcsMTcxIEBACiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgdG8gWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGxlbihkYXRhKSAgICAgICAgICAgICMgVW5jb21wcmVzc2VkIHNpemUKLSAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6Ci0gICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgotICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKKyAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCisgICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAotICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCi0gICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZiAgICAgICAjIENSQy0zMiBjaGVja3N1bQotICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICBpZiBjbzoKLSAgICAgICAgICAgIGRhdGEgPSBjby5jb21wcmVzcyhkYXRhKSArIGNvLmZsdXNoKCkKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSB6aW5mby5maWxlX3NpemUKLSAgICAgICAgemlwNjQgPSB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBcCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQKLSAgICAgICAgaWYgemlwNjQgYW5kIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQotICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICBzZWxmLmZwLndyaXRlKGRhdGEpCi0gICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgemlwNjQgZWxzZSAnPExMTCcKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgIHNlbGYuZnAuZmx1c2goKQotICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQorICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCisgICAgICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICAgICAgaWYgY286CisgICAgICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQorICAgICAgICAgICAgemlwNjQgPSB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBcCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCisgICAgICAgICAgICBpZiB6aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZGF0YSkKKyAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6CisgICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQorICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJworICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQorICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCisgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKKyAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIkNhbGwgdGhlICJjbG9zZSgpIiBtZXRob2QgaW4gY2FzZSB0aGUgdXNlciBmb3Jnb3QuIiIiCiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZSwgYW5kIGZvciBtb2RlICJ3IiBhbmQgImEiIHdyaXRlIHRoZSBlbmRpbmcKKyAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUsIGFuZCBmb3IgbW9kZSAndycsICd4JyBhbmQgJ2EnIHdyaXRlIHRoZSBlbmRpbmcKICAgICAgICAgcmVjb3Jkcy4iIiIKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgidyIsICJhIikgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcwotICAgICAgICAgICAgICAgIHBvczEgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgICAgIGZvciB6aW5mbyBpbiBzZWxmLmZpbGVsaXN0OiAgICAgICAgICMgd3JpdGUgY2VudHJhbCBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICAgICAgZHQgPSB6aW5mby5kYXRlX3RpbWUKLSAgICAgICAgICAgICAgICAgICAgZG9zZGF0ZSA9IChkdFswXSAtIDE5ODApIDw8IDkgfCBkdFsxXSA8PCA1IHwgZHRbMl0KLSAgICAgICAgICAgICAgICAgICAgZG9zdGltZSA9IGR0WzNdIDw8IDExIHwgZHRbNF0gPDwgNSB8IChkdFs1XSAvLyAyKQotICAgICAgICAgICAgICAgICAgICBleHRyYSA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIFwKLSAgICAgICAgICAgICAgICAgICAgICAgb3IgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmZpbGVfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5jb21wcmVzc19zaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmNvbXByZXNzX3NpemUKLQotICAgICAgICAgICAgICAgICAgICBpZiB6aW5mby5oZWFkZXJfb2Zmc2V0ID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSAweGZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gemluZm8uaGVhZGVyX29mZnNldAotCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSB6aW5mby5leHRyYQotICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IDAKLSAgICAgICAgICAgICAgICAgICAgaWYgZXh0cmE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEFwcGVuZCBhIFpJUDY0IGZpZWxkIHRvIHRoZSBleHRyYSdzCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhID0gc3RydWN0LnBhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxISCcgKyAnUScqbGVuKGV4dHJhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCA4KmxlbihleHRyYSksICpleHRyYSkgKyBleHRyYV9kYXRhCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gWklQNjRfVkVSU0lPTgotCi0gICAgICAgICAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgotICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KExaTUFfVkVSU0lPTiwgbWluX3ZlcnNpb24pCi0KLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5jcmVhdGVfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRkaXIgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RDZW50cmFsRGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0NlbnRyYWxEaXIsIGNyZWF0ZV92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ19iaXRzLCB6aW5mby5jb21wcmVzc190eXBlLCBkb3N0aW1lLCBkb3NkYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLkNSQywgY29tcHJlc3Nfc2l6ZSwgZmlsZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmaWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHppbmZvLmludGVybmFsX2F0dHIsIHppbmZvLmV4dGVybmFsX2F0dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IERlcHJlY2F0aW9uV2FybmluZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KChzdHJ1Y3RDZW50cmFsRGlyLCBzdHJpbmdDZW50cmFsRGlyLCBjcmVhdGVfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5jcmVhdGVfc3lzdGVtLCBleHRyYWN0X3ZlcnNpb24sIHppbmZvLnJlc2VydmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5DUkMsIGNvbXByZXNzX3NpemUsIGZpbGVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oemluZm8uZmlsZW5hbWUpLCBsZW4oZXh0cmFfZGF0YSksIGxlbih6aW5mby5jb21tZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQpLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGNlbnRkaXIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZXh0cmFfZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5jb21tZW50KQotCi0gICAgICAgICAgICAgICAgcG9zMiA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICAgICAgIyBXcml0ZSBlbmQtb2YtemlwLWFyY2hpdmUgcmVjb3JkCi0gICAgICAgICAgICAgICAgY2VudERpckNvdW50ID0gbGVuKHNlbGYuZmlsZWxpc3QpCi0gICAgICAgICAgICAgICAgY2VudERpclNpemUgPSBwb3MyIC0gcG9zMQotICAgICAgICAgICAgICAgIGNlbnREaXJPZmZzZXQgPSBwb3MxCi0gICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgY2VudERpckNvdW50ID4gWklQX0ZJTEVDT1VOVF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiRmlsZXMgY291bnQiCi0gICAgICAgICAgICAgICAgZWxpZiBjZW50RGlyT2Zmc2V0ID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IG9mZnNldCIKLSAgICAgICAgICAgICAgICBlbGlmIGNlbnREaXJTaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IHNpemUiCi0gICAgICAgICAgICAgICAgaWYgcmVxdWlyZXNfemlwNjQ6Ci0gICAgICAgICAgICAgICAgICAgICMgTmVlZCB0byB3cml0ZSB0aGUgWklQNjQgZW5kLW9mLWFyY2hpdmUgcmVjb3JkcwotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZShyZXF1aXJlc196aXA2NCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQotICAgICAgICAgICAgICAgICAgICB6aXA2NGVuZHJlYyA9IHN0cnVjdC5wYWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0RW5kQXJjaGl2ZTY0LCBzdHJpbmdFbmRBcmNoaXZlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICA0NCwgNDUsIDQ1LCAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNlbnREaXJTaXplLCBjZW50RGlyT2Zmc2V0KQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppcDY0ZW5kcmVjKQotCi0gICAgICAgICAgICAgICAgICAgIHppcDY0bG9jcmVjID0gc3RydWN0LnBhY2soCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RFbmRBcmNoaXZlNjRMb2NhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nRW5kQXJjaGl2ZTY0TG9jYXRvciwgMCwgcG9zMiwgMSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGxvY3JlYykKLSAgICAgICAgICAgICAgICAgICAgY2VudERpckNvdW50ID0gbWluKGNlbnREaXJDb3VudCwgMHhGRkZGKQotICAgICAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSA9IG1pbihjZW50RGlyU2l6ZSwgMHhGRkZGRkZGRikKLSAgICAgICAgICAgICAgICAgICAgY2VudERpck9mZnNldCA9IG1pbihjZW50RGlyT2Zmc2V0LCAweEZGRkZGRkZGKQotCi0gICAgICAgICAgICAgICAgZW5kcmVjID0gc3RydWN0LnBhY2soc3RydWN0RW5kQXJjaGl2ZSwgc3RyaW5nRW5kQXJjaGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSwgY2VudERpck9mZnNldCwgbGVuKHNlbGYuX2NvbW1lbnQpKQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZW5kcmVjKQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc2VsZi5fY29tbWVudCkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKyAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoJ3cnLCAneCcsICdhJykgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2VuZF9yZWNvcmQoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgICAgICBzZWxmLmZwID0gTm9uZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVQYXNzZWQ6Ci0gICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fZnBjbG9zZShmcCkKKworICAgIGRlZiBfd3JpdGVfZW5kX3JlY29yZChzZWxmKToKKyAgICAgICAgZm9yIHppbmZvIGluIHNlbGYuZmlsZWxpc3Q6ICAgICAgICAgIyB3cml0ZSBjZW50cmFsIGRpcmVjdG9yeQorICAgICAgICAgICAgZHQgPSB6aW5mby5kYXRlX3RpbWUKKyAgICAgICAgICAgIGRvc2RhdGUgPSAoZHRbMF0gLSAxOTgwKSA8PCA5IHwgZHRbMV0gPDwgNSB8IGR0WzJdCisgICAgICAgICAgICBkb3N0aW1lID0gZHRbM10gPDwgMTEgfCBkdFs0XSA8PCA1IHwgKGR0WzVdIC8vIDIpCisgICAgICAgICAgICBleHRyYSA9IFtdCisgICAgICAgICAgICBpZiB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBcCisgICAgICAgICAgICAgICBvciB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmZpbGVfc2l6ZSkKKyAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uY29tcHJlc3Nfc2l6ZSkKKyAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAweGZmZmZmZmZmCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gemluZm8uZmlsZV9zaXplCisgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmNvbXByZXNzX3NpemUKKworICAgICAgICAgICAgaWYgemluZm8uaGVhZGVyX29mZnNldCA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5oZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSAweGZmZmZmZmZmCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSB6aW5mby5oZWFkZXJfb2Zmc2V0CisKKyAgICAgICAgICAgIGV4dHJhX2RhdGEgPSB6aW5mby5leHRyYQorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCisgICAgICAgICAgICBpZiBleHRyYToKKyAgICAgICAgICAgICAgICAjIEFwcGVuZCBhIFpJUDY0IGZpZWxkIHRvIHRoZSBleHRyYSdzCisgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgICAgICAnPEhIJyArICdRJypsZW4oZXh0cmEpLAorICAgICAgICAgICAgICAgICAgICAxLCA4KmxlbihleHRyYSksICpleHRyYSkgKyBleHRyYV9kYXRhCisKKyAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IFpJUDY0X1ZFUlNJT04KKworICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgICAgICBlbGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uY3JlYXRlX3ZlcnNpb24pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKKyAgICAgICAgICAgICAgICBjZW50ZGlyID0gc3RydWN0LnBhY2soc3RydWN0Q2VudHJhbERpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihmaWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgZXhjZXB0IERlcHJlY2F0aW9uV2FybmluZzoKKyAgICAgICAgICAgICAgICBwcmludCgoc3RydWN0Q2VudHJhbERpciwgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmNyZWF0ZV9zeXN0ZW0sIGV4dHJhY3RfdmVyc2lvbiwgemluZm8ucmVzZXJ2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGxlbih6aW5mby5maWxlbmFtZSksIGxlbihleHRyYV9kYXRhKSwgbGVuKHppbmZvLmNvbW1lbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAorICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGNlbnRkaXIpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGZpbGVuYW1lKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZShleHRyYV9kYXRhKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5jb21tZW50KQorCisgICAgICAgIHBvczIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAjIFdyaXRlIGVuZC1vZi16aXAtYXJjaGl2ZSByZWNvcmQKKyAgICAgICAgY2VudERpckNvdW50ID0gbGVuKHNlbGYuZmlsZWxpc3QpCisgICAgICAgIGNlbnREaXJTaXplID0gcG9zMiAtIHNlbGYuc3RhcnRfZGlyCisgICAgICAgIGNlbnREaXJPZmZzZXQgPSBzZWxmLnN0YXJ0X2RpcgorICAgICAgICByZXF1aXJlc196aXA2NCA9IE5vbmUKKyAgICAgICAgaWYgY2VudERpckNvdW50ID4gWklQX0ZJTEVDT1VOVF9MSU1JVDoKKyAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkZpbGVzIGNvdW50IgorICAgICAgICBlbGlmIGNlbnREaXJPZmZzZXQgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IG9mZnNldCIKKyAgICAgICAgZWxpZiBjZW50RGlyU2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgcmVxdWlyZXNfemlwNjQgPSAiQ2VudHJhbCBkaXJlY3Rvcnkgc2l6ZSIKKyAgICAgICAgaWYgcmVxdWlyZXNfemlwNjQ6CisgICAgICAgICAgICAjIE5lZWQgdG8gd3JpdGUgdGhlIFpJUDY0IGVuZC1vZi1hcmNoaXZlIHJlY29yZHMKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgorICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZShyZXF1aXJlc196aXA2NCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKKyAgICAgICAgICAgIHppcDY0ZW5kcmVjID0gc3RydWN0LnBhY2soCisgICAgICAgICAgICAgICAgc3RydWN0RW5kQXJjaGl2ZTY0LCBzdHJpbmdFbmRBcmNoaXZlNjQsCisgICAgICAgICAgICAgICAgNDQsIDQ1LCA0NSwgMCwgMCwgY2VudERpckNvdW50LCBjZW50RGlyQ291bnQsCisgICAgICAgICAgICAgICAgY2VudERpclNpemUsIGNlbnREaXJPZmZzZXQpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppcDY0ZW5kcmVjKQorCisgICAgICAgICAgICB6aXA2NGxvY3JlYyA9IHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgIHN0cnVjdEVuZEFyY2hpdmU2NExvY2F0b3IsCisgICAgICAgICAgICAgICAgc3RyaW5nRW5kQXJjaGl2ZTY0TG9jYXRvciwgMCwgcG9zMiwgMSkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemlwNjRsb2NyZWMpCisgICAgICAgICAgICBjZW50RGlyQ291bnQgPSBtaW4oY2VudERpckNvdW50LCAweEZGRkYpCisgICAgICAgICAgICBjZW50RGlyU2l6ZSA9IG1pbihjZW50RGlyU2l6ZSwgMHhGRkZGRkZGRikKKyAgICAgICAgICAgIGNlbnREaXJPZmZzZXQgPSBtaW4oY2VudERpck9mZnNldCwgMHhGRkZGRkZGRikKKworICAgICAgICBlbmRyZWMgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RFbmRBcmNoaXZlLCBzdHJpbmdFbmRBcmNoaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBjZW50RGlyQ291bnQsIGNlbnREaXJDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudERpclNpemUsIGNlbnREaXJPZmZzZXQsIGxlbihzZWxmLl9jb21tZW50KSkKKyAgICAgICAgc2VsZi5mcC53cml0ZShlbmRyZWMpCisgICAgICAgIHNlbGYuZnAud3JpdGUoc2VsZi5fY29tbWVudCkKKyAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisKKyAgICBkZWYgX2ZwY2xvc2Uoc2VsZiwgZnApOgorICAgICAgICBhc3NlcnQgc2VsZi5fZmlsZVJlZkNudCA+IDAKKyAgICAgICAgc2VsZi5fZmlsZVJlZkNudCAtPSAxCisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlUmVmQ250IGFuZCBub3Qgc2VsZi5fZmlsZVBhc3NlZDoKKyAgICAgICAgICAgIGZwLmNsb3NlKCkKIAogCiBjbGFzcyBQeVppcEZpbGUoWmlwRmlsZSk6CkBAIC0xNTk3LDcgKzE3MzEsNyBAQAogICAgICAgICB0aGUgbW9kdWxlcyBpbnRvIHRoZSBhcmNoaXZlLiAgSWYgcGF0aG5hbWUgaXMgYSBwbGFpbgogICAgICAgICBkaXJlY3RvcnksIGxpc3RkaXIgKi5weSBhbmQgZW50ZXIgYWxsIG1vZHVsZXMuICBFbHNlLCBwYXRobmFtZQogICAgICAgICBtdXN0IGJlIGEgUHl0aG9uICoucHkgZmlsZSBhbmQgdGhlIG1vZHVsZSB3aWxsIGJlIHB1dCBpbnRvIHRoZQotICAgICAgICBhcmNoaXZlLiAgQWRkZWQgbW9kdWxlcyBhcmUgYWx3YXlzIG1vZHVsZS5weW8gb3IgbW9kdWxlLnB5Yy4KKyAgICAgICAgYXJjaGl2ZS4gIEFkZGVkIG1vZHVsZXMgYXJlIGFsd2F5cyBtb2R1bGUucHljLgogICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIGNvbXBpbGUgdGhlIG1vZHVsZS5weSBpbnRvIG1vZHVsZS5weWMgaWYKICAgICAgICAgbmVjZXNzYXJ5LgogICAgICAgICBJZiBmaWx0ZXJmdW5jKHBhdGhuYW1lKSBpcyBnaXZlbiwgaXQgaXMgY2FsbGVkIHdpdGggZXZlcnkgYXJndW1lbnQuCkBAIC0xNjkwLDQ2ICsxODI0LDU5IEBACiAKICAgICAgICAgZmlsZV9weSAgPSBwYXRobmFtZSArICIucHkiCiAgICAgICAgIGZpbGVfcHljID0gcGF0aG5hbWUgKyAiLnB5YyIKLSAgICAgICAgZmlsZV9weW8gPSBwYXRobmFtZSArICIucHlvIgotICAgICAgICBweWNhY2hlX3B5YyA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIFRydWUpCi0gICAgICAgIHB5Y2FjaGVfcHlvID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgRmFsc2UpCisgICAgICAgIHB5Y2FjaGVfb3B0MCA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIG9wdGltaXphdGlvbj0nJykKKyAgICAgICAgcHljYWNoZV9vcHQxID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9weSwgb3B0aW1pemF0aW9uPTEpCisgICAgICAgIHB5Y2FjaGVfb3B0MiA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIG9wdGltaXphdGlvbj0yKQogICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAtMToKICAgICAgICAgICAgICMgbGVnYWN5IG1vZGU6IHVzZSB3aGF0ZXZlciBmaWxlIGlzIHByZXNlbnQKLSAgICAgICAgICAgIGlmIChvcy5wYXRoLmlzZmlsZShmaWxlX3B5bykgYW5kCi0gICAgICAgICAgICAgICAgb3Muc3RhdChmaWxlX3B5bykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6Ci0gICAgICAgICAgICAgICAgIyBVc2UgLnB5byBmaWxlLgotICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmbmFtZSA9IGZpbGVfcHlvCi0gICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShmaWxlX3B5YykgYW5kCisgICAgICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUoZmlsZV9weWMpIGFuZAogICAgICAgICAgICAgICAgICAgb3Muc3RhdChmaWxlX3B5Yykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAgIyBVc2UgLnB5YyBmaWxlLgogICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmbmFtZSA9IGZpbGVfcHljCi0gICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX3B5YykgYW5kCi0gICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfcHljKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKKyAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfb3B0MCkgYW5kCisgICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfb3B0MCkuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHljIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5YwogICAgICAgICAgICAgICAgICMgZmlsZSBuYW1lIGluIHRoZSBhcmNoaXZlLgotICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9weWMKKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MAogICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwotICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9weW8pIGFuZAotICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX3B5bykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6Ci0gICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHlvIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5bworICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9vcHQxKSBhbmQKKyAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9vcHQxKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19weWNhY2hlX18vKi5weWMgZmlsZSwgYnV0IHdyaXRlIGl0IHRvIHRoZSBsZWdhY3kgcHljCiAgICAgICAgICAgICAgICAgIyBmaWxlIG5hbWUgaW4gdGhlIGFyY2hpdmUuCi0gICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX3B5bwotICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5bworICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCisgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCisgICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX29wdDIpIGFuZAorICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX29wdDIpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgorICAgICAgICAgICAgICAgICMgVXNlIHRoZSBfX3B5Y2FjaGVfXy8qLnB5YyBmaWxlLCBidXQgd3JpdGUgaXQgdG8gdGhlIGxlZ2FjeSBweWMKKyAgICAgICAgICAgICAgICAjIGZpbGUgbmFtZSBpbiB0aGUgYXJjaGl2ZS4KKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MgorICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIENvbXBpbGUgcHkgaW50byBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgICAgICAgICBpZiBfY29tcGlsZShmaWxlX3B5KToKLSAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSAocHljYWNoZV9weWMgaWYgX19kZWJ1Z19fIGVsc2UgcHljYWNoZV9weW8pCi0gICAgICAgICAgICAgICAgICAgIGFyY25hbWUgPSAoZmlsZV9weWMgaWYgX19kZWJ1Z19fIGVsc2UgZmlsZV9weW8pCisgICAgICAgICAgICAgICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDAKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBzeXMuZmxhZ3Mub3B0aW1pemUgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MgorICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IGFyY25hbWUgPSBmaWxlX3B5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIG5ldyBtb2RlOiB1c2UgZ2l2ZW4gb3B0aW1pemF0aW9uIGxldmVsCiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpbWl6ZSA9PSAwOgotICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9weWMKKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MAogICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfcHlvCi0gICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHlvCisgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemUgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDEKKyAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX29wdGltaXplID09IDI6CisgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQyCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gImludmFsaWQgdmFsdWUgZm9yICdvcHRpbWl6ZSc6IHshcn0iLmZvcm1hdChzZWxmLl9vcHRpbWl6ZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgKG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQKICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChmbmFtZSkuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CiAgICAgICAgICAgICAgICAgaWYgbm90IF9jb21waWxlKGZpbGVfcHksIG9wdGltaXplPXNlbGYuX29wdGltaXplKToKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0IGIvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQKaW5kZXggZGI2ODdiZS4uZjhiMjVmYSAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQKKysrIGIvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQKQEAgLTEsMjUgKzEsMTUgQEAKIEJ1aWxkaW5nIGEgUHl0aG9uIE1hYyBPUyBYIGRpc3RyaWJ1dGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBgYGJ1aWxkLWluc3RhbGxlci5weWBgIHNjcmlwdCBjcmVhdGVzIFB5dGhvbiBkaXN0cmlidXRpb25zLCBpbmNsdWRpbmcKLWNlcnRhaW4gdGhpcmQtcGFydHkgbGlicmFyaWVzIGFzIG5lY2Vzc2FyeS4gIEl0IGJ1aWxkcyBhIGNvbXBsZXRlIAotZnJhbWV3b3JrLWJhc2VkIFB5dGhvbiBvdXQtb2YtdHJlZSwgaW5zdGFsbHMgaXQgaW4gYSBmdW5ueSBwbGFjZSB3aXRoIAotJERFU1RST09ULCBtYXNzYWdlcyB0aGF0IGluc3RhbGxhdGlvbiB0byByZW1vdmUgLnB5YyBmaWxlcyBhbmQgc3VjaCwgY3JlYXRlcyAKLWFuIEluc3RhbGxlciBwYWNrYWdlIGZyb20gdGhlIGluc3RhbGxhdGlvbiBwbHVzIG90aGVyIGZpbGVzIGluIGBgcmVzb3VyY2VzYGAgCitUaGUgYGBidWlsZC1pbnN0YWxsLnB5YGAgc2NyaXB0IGNyZWF0ZXMgUHl0aG9uIGRpc3RyaWJ1dGlvbnMsIGluY2x1ZGluZworY2VydGFpbiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgYXMgbmVjZXNzYXJ5LiAgSXQgYnVpbGRzIGEgY29tcGxldGUKK2ZyYW1ld29yay1iYXNlZCBQeXRob24gb3V0LW9mLXRyZWUsIGluc3RhbGxzIGl0IGluIGEgZnVubnkgcGxhY2Ugd2l0aAorJERFU1RST09ULCBtYXNzYWdlcyB0aGF0IGluc3RhbGxhdGlvbiB0byByZW1vdmUgLnB5YyBmaWxlcyBhbmQgc3VjaCwgY3JlYXRlcworYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYAogYW5kIGBgc2NyaXB0c2BgIGFuZCBwbGFjZWQgdGhhdCBvbiBhIGBgLmRtZ2BgIGRpc2sgaW1hZ2UuCiAKLVRoaXMgaW5zdGFsbGVycyBidWlsdCBieSB0aGlzIHNjcmlwdCBhcmUgbGVnYWN5IGJ1bmRsZSBpbnN0YWxsZXJzIHRoYXQgaGF2ZQotYmVlbiBzdXBwb3J0ZWQgZnJvbSB0aGUgZWFybHkgZGF5cyBvZiBPUyBYLiAgSW4gcGFydGljdWxhciwgdGhleSBhcmUgc3VwcG9ydGVkCi1vbiBPUyBYIDEwLjMuOSwgdGhlIGVhcmxpZXN0IHN1cHBvcnRlZCByZWxlYXNlIGZvciBidWlsZHMgZnJvbSB0aGlzIHNjcmlwdC4KLQotQmVnaW5uaW5nIHdpdGggUHl0aG9uIDMuNC4yLCBQU0YgcHJhY3RpY2UgaXMgdG8gYnVpbGQgdHdvIGluc3RhbGxlciB2YXJpYW50cwotdXNpbmcgdGhlIG5ld2VyIGZsYXQgcGFja2FnZSBmb3JtYXQsIHN1cHBvcnRlZCBvbiAxMC41KywgYW5kIHNpZ25lZCB3aXRoIHRoZQotYnVpbGRlcidzIEFwcGxlIGRldmVsb3BlciBrZXksIGFsbG93aW5nIGRvd25sb2FkZWQgcGFja2FnZXMgdG8gc2F0aXNmeSBBcHBsZSdzCi1kZWZhdWx0IEdhdGVrZWVwZXIgcG9saWN5IChlLmcuIHN0YXJ0aW5nIHdpdGggMTAuOCwgQXBwbGUgc3RvcmUgZG93bmxvYWRzIGFuZAotQXBwbGUgZGV2ZWxvcGVyIElEIHNpZ25lZCBhcHBzIGFuZCBpbnN0YWxsZXIgcGFja2FnZXMpLiAgVGhlIHByb2Nlc3MgZm9yCi10cmFuc2Zvcm1pbmcgdGhlIG91dHB1dCBidWlsZCBhcnRpZmFjdHMgaW50byBzaWduZWQgZmxhdCBwYWNrYWdlcyBpcyBub3QKLXlldCBpbnRlZ3JhdGVkIGludG8gYGBidWlsZC1pbnN0YWxsZXIucHlgYC4gIFRoZSBzdGVwcyBwcmlvciB0byB0aGUgZmxhdAotcGFja2FnZSBjcmVhdGlvbiBhcmUgdGhlIHNhbWUgYXMgZm9yIDMuNC4xIGJlbG93LgorRm9yIFB5dGhvbiAzLjQuMCwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKK2ZvciBlYWNoIHJlbGVhc2UuCiAKIDEuICAzMi1iaXQtb25seSwgaTM4NiBhbmQgUFBDIHVuaXZlcnNhbCwgY2FwYWJsZSBvbiBydW5uaW5nIG9uIGFsbCBtYWNoaW5lcwogICAgIHN1cHBvcnRlZCBieSBNYWMgT1MgWCAxMC41IHRocm91Z2ggKGF0IGxlYXN0KSAxMC45OjoKQEAgLTMxLDcgKzIxLDYgQEAKIAogICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKLSAgICAgICAgKiBsaWJjcnlwdG8gYW5kIGxpYnNzbCBmcm9tIE9wZW5TU0wgMS4wLjEgKG5ldywgYXMgb2YgMy40LjMpCiAgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKICAgICAgICAgKiBTUUxpdGUgMy44LjExCiAgICAgICAgICogWFogNS4wLjUKQEAgLTczLDcgKzYyLDYgQEAKIAogICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKLSAgICAgICAgKiBsaWJjcnlwdG8gYW5kIGxpYnNzbCBmcm9tIEFwcGxlIE9wZW5TU0wgMC45LjgKICAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCiAKICAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuMTUuMSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKQEAgLTEwMiw2ICs5MCw0NyBAQAogICAgICAgICAgIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgogCiAKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCisgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAorICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMKKworICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiBCemlwMgorICAgICAgICAqIE5DdXJzZXMKKyAgICAgICAgKiBHTlUgUmVhZGxpbmUgKEdQTCkKKyAgICAgICAgKiBTUUxpdGUgMworICAgICAgICAqIFhaCisgICAgICAgICogWmxpYiAxLjIuMworICAgICAgICAqIE9yYWNsZSBTbGVlcHljYXQgREIgNC44IChQeXRob24gMi54IG9ubHkpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjIwKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAorICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKKyAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQorICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAorICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCisgICAgICAgICogc3lzdGVtIFB5dGhvbiAyLjUgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKKworICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKKworICAgICAgICAqIE1hYyBPUyBYIDEwLjYuOCB3aXRoIFhjb2RlIDMuMi42CisgICAgICAgICAgICAtIG5lZWQgdG8gY2hhbmdlIGBgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mve1RjbCxUa30uZnJhbWV3b3JrL1ZlcnNpb24vQ3VycmVudGBgIHRvIGBgOC40YGAKKworCisKIEdlbmVyYWwgUHJlcmVxdWlzaXRlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE0NSw3ICsxNzQsNyBAQAogQnVpbGRpbmcgb3RoZXIgdW5pdmVyc2FsIGluc3RhbGxlcnMKIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKLUl0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgYSA0LXdheSB1bml2ZXJzYWwgaW5zdGFsbGVyIHRoYXQgcnVucyBvbiAKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gYnVpbGQgYSA0LXdheSB1bml2ZXJzYWwgaW5zdGFsbGVyIHRoYXQgcnVucyBvbgogT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCiAgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXApAQCAtMTc5LDcgKzIwOCw3IEBACiAKICAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQogICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAotICAgIAorCiBDZXJ0YWluIHRlc3RzIHdpbGwgYmUgc2tpcHBlZCBhbmQgc29tZSBjYXVzZSB0aGUgaW50ZXJwcmV0ZXIgdG8gZmFpbAogd2hpY2ggd2lsbCBsaWtlbHkgZ2VuZXJhdGUgYGBQeXRob24gcXVpdCB1bmV4cGVjdGVkbHlgYCBhbGVydCBtZXNzYWdlcwogdG8gYmUgZ2VuZXJhdGVkIGF0IHNldmVyYWwgcG9pbnRzIGR1cmluZyBhIHRlc3QgcnVuLiAgVGhlc2UgYXJlIG5vcm1hbApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggZjM2M2ViZC4uZThhMTEyNiAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC01NzIsNyArNTcyLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcGVuKGNvbmZpZ2ZpbGUsICJyIikKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGZhdGFsKCJGcmFtZXdvcmsgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZDogJXMiICUgY29uZmlnZmlsZSkKIAogICAgIGZvciBsIGluIGY6CkBAIC04MTQsNyArODE0LDcgQEAKICAgICBleGNlcHQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAogZGVmIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuYW1lKToKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA1MmQ4YjgwLi42NWUzZjE0IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0xLDQgKzEsNCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQ3XGNvY29hc3VicnRmNTcwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDhcY29jb2FzdWJydGYxNzAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMzM4MFx2aWV3aDE0NjAwXHZpZXdraW5kMApAQCAtMjQsNyArMjQsNyBAQAogXGkwICB2YXJpYW50LiAgVW5sZXNzIHlvdSBhcmUgaW5zdGFsbGluZyB0byBhbiAxMC41IHN5c3RlbSBvciB5b3UgbmVlZCB0byBidWlsZCBhcHBsaWNhdGlvbnMgdGhhdCBjYW4gcnVuIG9uIDEwLjUgc3lzdGVtcywgdXNlIHRoZSAxMC42IHZhcmlhbnQgaWYgcG9zc2libGUuICBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIDEwLjYgYW5kIHlvdSBtYXkgc2VlIGJldHRlciBwZXJmb3JtYW5jZSB1c2luZyA2NC1iaXQgbW9kZS4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgQWxzbyBzZWUgCiBcaSBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0wKIFxpMCAgYmVsb3cuICBUaGUgUHl0aG9ucyBpbnN0YWxsZWQgYnkgdGhlc2UgaW5zdGFsbGVycyBhcmUgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIHZhcmllcyBieSBpbnN0YWxsZXIgdmFyaWFudCBhbmQgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KLVxiIFx1bCBcdWxjMCBcCitcYiBcdWwgXAogXAogVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCiBcYjAgXHVsbm9uZSBcCkBAIC0zNiw3NSArMzYsMTYgQEAKIFxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKIAogXGIgXHVsIFwKLUluc3RhbGxpbmcgb24gT1MgWCAxMC44IChNb3VudGFpbiBMaW9uKSBvciBsYXRlciBzeXN0ZW1zXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAzLjQuMl0KLVxiMCBcCi1cCi1BcyBvZiBQeXRob24gMy40LjIsIGluc3RhbGxlciBwYWNrYWdlcyBmcm9tIHB5dGhvbi5vcmcgYXJlIG5vdyBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZSBpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gICBEb3dubG9hZGVkIHBhY2thZ2VzIGNhbiBub3cgYmUgZGlyZWN0bHkgaW5zdGFsbGVkIGJ5IGRvdWJsZS1jbGlja2luZyB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBzZWN1cml0eSBzZXR0aW5ncy4gIFB5dGhvbi5vcmcgaW5zdGFsbGVyIHBhY2thZ2VzIGZvciBPUyBYIGFyZSBzaWduZWQgd2l0aCB0aGUgRGV2ZWxvcGVyIElEIG9mIHRoZSBidWlsZGVyLCBhcyBpZGVudGlmaWVkIG9uIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCB0aGUgZG93bmxvYWQgcGFnZX19IGZvciB0aGlzIHJlbGVhc2UuICBUbyBpbnNwZWN0IHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBvZiB0aGUgcGFja2FnZSwgY2xpY2sgb24gdGhlIGxvY2sgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRoZSAKLVxpIEluc3RhbGwgUHl0aG9uCi1caTAgIGluc3RhbGxlciB3aW5kb3cuICBSZWZlciB0byBBcHBsZVwnOTJzIHN1cHBvcnQgcGFnZXMgZm9yIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHA6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9odDUyOTAifX17XGZsZHJzbHQgbW9yZSBpbmZvcm1hdGlvbiBvbiBHYXRla2VlcGVyfX0uXAotXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCiAKLVxiIFxjZjAgXHVsIFNpbXBsaWZpZWQgd2ViLWJhc2VkIGluc3RhbGxzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDMuNC4yXQotXGIwIFwKLVwKLVdpdGggdGhlIGNoYW5nZSB0byB0aGUgbmV3ZXIgZmxhdCBmb3JtYXQgaW5zdGFsbGVyIHBhY2thZ2UsIHRoZSBkb3dubG9hZCBmaWxlIG5vdyBoYXMgYSAKLVxmMSAucGtnCi1cZjAgIGV4dGVuc2lvbiBhcyBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGVtYmVkIHRoZSBpbnN0YWxsZXIgd2l0aGluIGEgZGlzayBpbWFnZSAoCi1cZjEgLmRtZwotXGYwICkgY29udGFpbmVyLiAgIElmIHlvdSBkb3dubG9hZCB0aGUgUHl0aG9uIGluc3RhbGxlciB0aHJvdWdoIGEgd2ViIGJyb3dzZXIsIHRoZSBPUyBYIGluc3RhbGxlciBhcHBsaWNhdGlvbiBtYXkgb3BlbiBhdXRvbWF0aWNhbGx5IHRvIGFsbG93IHlvdSB0byBwZXJmb3JtIHRoZSBpbnN0YWxsLiAgSWYgeW91ciBicm93c2VyIHNldHRpbmdzIGRvIG5vdCBhbGxvdyBhdXRvbWF0aWMgb3BlbiwgZG91YmxlIGNsaWNrIG9uIHRoZSBkb3dubG9hZGVkIGluc3RhbGxlciBmaWxlLlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBOZXcgSW5zdGFsbGF0aW9uIE9wdGlvbnMgYW5kIERlZmF1bHRzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDMuNC4wXQotXGIwIFwKLVwKLVRoZSBQeXRob24gaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbiBvcHRpb24gdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG9yIHVwZ3JhZGUgCi1cZjEgcGlwCi1cZjAgLCBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcy4gIFRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBhbmQgbm8gSW50ZXJuZXQgYWNjZXNzIGlzIHJlcXVpcmVkLiAgSWYgeW91IGRvIG5vdCB3YW50IHRoZSBpbnN0YWxsZXIgdG8gZG8gdGhpcywgc2VsZWN0IHRoZSAKLVxpIEN1c3RvbWl6ZQotXGkwICBvcHRpb24gYXQgdGhlIAotXGkgSW5zdGFsbGF0aW9uIFR5cGUKLVxpMCAgc3RlcCBhbmQgdW5jaGVjayB0aGUgCi1caSBJbnN0YWxsIG9yIHVncHJhZGUgcGlwCi1caTAgIG9wdGlvbi5cCi1cCi1UbyBtYWtlIGl0IGVhc2llciB0byB1c2Ugc2NyaXB0cyBpbnN0YWxsZWQgYnkgdGhpcmQtcGFydHkgUHl0aG9uIHBhY2thZ2VzLCB3aXRoIAotXGYxIHBpcAotXGYwICBvciBieSBvdGhlciBtZWFucywgdGhlIAotXGkgU2hlbGwgcHJvZmlsZSB1cGRhdGVyCi1caTAgIG9wdGlvbiBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCBhcyBoYXMgYmVlbiB0aGUgY2FzZSB3aXRoIFB5dGhvbiAyLjcueCBpbnN0YWxsZXJzLiBZb3UgY2FuIGFsc28gdHVybiB0aGlzIG9wdGlvbiBvZmYgYnkgc2VsZWN0aW5nIAotXGkgQ3VzdG9taXplCi1caTAgIGFuZCB1bmNoZWNraW5nIHRoZSAKLVxpIFNoZWxsIHByb2ZpbGUgdXBkYXRlcgotXGkwICBvcHRpb24uIFlvdSBjYW4gYWxzbyB1cGRhdGUgeW91ciBzaGVsbCBwcm9maWxlIGxhdGVyIGJ5IGxhdW5jaGluZyB0aGUgCi1caSBVcGRhdGUgU2hlbGwgUHJvZmlsZQotXGkwICBjb21tYW5kIGZvdW5kIGluIHRoZSAKLVxmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAkVkVSU0lPTiAKLVxmMCBmb2xkZXIuICBZb3UgbWF5IG5lZWQgdG8gc3RhcnQgYSBuZXcgdGVybWluYWwgd2luZG93IGZvciB0aGUgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC5cCi1cCi1Gb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgUmVsZWFzZSBOb3RlcyBsaW5rIGZvciB0aGlzIHJlbGVhc2UgYXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzL319LlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotCi1cYiBcY2YwIFx1bCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKLVxjZjAgXHVsbm9uZSBbQ0hBTkdFRCBmb3IgUHl0aG9uIDMuNC4zXQotXGIwIFwKLVwKLVB5dGhvbiAzLjQuMyBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgaW5jbHVzaW9uIGluIFB5dGhvbiAzLjQgbWFpbnRlbmFuY2UgcmVsZWFzZXMuICB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDc2LyJ9fXtcZmxkcnNsdCBQRVAgNDc2fX0gY2hhbmdlcyBzZXZlcmFsIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlcywgbGlrZSAKK1xiMCBcdWxub25lIFwKK1B5dGhvbiAzLjUgaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCB3ZXJlIHJlbGVhc2VkIGluIFB5dGhvbiAzLjQuMyBhbmQgUHl0aG9uIDIuNy4xMC4gIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzYvIn19e1xmbGRyc2x0IFBFUCA0NzZ9fSBjaGFuZ2VzIHNldmVyYWwgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzLCBsaWtlIAogXGkgaHR0cGxpYgogXGkwICwgCiBcaSB1cmxsaWIKIFxpMCAsIGFuZCAKIFxpIHhtbHJwY2xpYgotXGkwICwgdG8gYnkgZGVmYXVsdCB2ZXJpZnkgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSBzZXJ2ZXJzIG92ZXIgc2VjdXJlIChUTFMpIGNvbm5lY3Rpb25zLiAgVGhlIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyaWVzIHRoYXQgUHl0aG9uIGlzIGxpbmtlZCB0by4gIFByaW9yIHRvIDMuNC4zLCB0aGUgcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKK1xpMCAsIHRvIGJ5IGRlZmF1bHQgdmVyaWZ5IGNlcnRpZmljYXRlcyBwcmVzZW50ZWQgYnkgc2VydmVycyBvdmVyIHNlY3VyZSAoVExTKSBjb25uZWN0aW9ucy4gIFRoZSB2ZXJpZmljYXRpb24gaXMgcGVyZm9ybWVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcmllcyB0aGF0IFB5dGhvbiBpcyBsaW5rZWQgdG8uICBQcmlvciB0byAzLjQuMywgYm90aCBweXRob24ub3JnIGluc3RhbGxlcnMgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUtc3VwcGxpZWQgT3BlblNTTCBsaWJyYXJpZXMgc2hpcHBlZCB3aXRoIE9TIFguICBPUyBYIHByb3ZpZGVzIGEgbXVsdGlwbGUgbGV2ZWwgc2VjdXJpdHkgZnJhbWV3b3JrIHRoYXQgc3RvcmVzIHRydXN0IGNlcnRpZmljYXRlcyBpbiBzeXN0ZW0gYW5kIHVzZXIga2V5Y2hhaW5zIG1hbmFnZWQgYnkgdGhlIAogXGkgS2V5Y2hhaW4gQWNjZXNzIAogXGkwIGFwcGxpY2F0aW9uIGFuZCB0aGUgCiBcaSBzZWN1cml0eQpAQCAtMTIyLDEwICs2MywxMCBAQAogXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCiBcZjAgLiAgVGhlc2UgZGlyZWN0b3JpZXMgYXJlIHR5cGljYWxseSBlbXB0eSBhbmQgbm90IG1hbmFnZWQgYnkgT1MgWDsgeW91IG11c3QgbWFuYWdlIHRoZW0geW91cnNlbGYgb3Igc3VwcGx5IHlvdXIgb3duIFNTTCBjb250ZXh0cy4gIE9wZW5TU0wgMC45LjcgaXMgb2Jzb2xldGUgYnkgY3VycmVudCBzZWN1cml0eSBzdGFuZGFyZHMsIGxhY2tpbmcgYSBudW1iZXIgb2YgaW1wb3J0YW50IGZlYXR1cmVzIGZvdW5kIGluIGxhdGVyIHZlcnNpb25zLiAgQW1vbmcgdGhlIHByb2JsZW1zIHRoaXMgY2F1c2VzIGlzIHRoZSBpbmFiaWxpdHkgdG8gdmVyaWZ5IGhpZ2hlci1zZWN1cml0eSBjZXJ0aWZpY2F0ZXMgbm93IHVzZWQgYnkgcHl0aG9uLm9yZyBzZXJ2aWNlcywgaW5jbHVkaW5nIAogXGkgdHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkifX17XGZsZHJzbHQgaGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsIFB5UEl9fQotXGkwIC4gIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgYXMgb2YgMy40LjMgdGhlIAorXGkwIC4gIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgdGhlIAogXGkgMTAuNSsgMzItYml0LW9ubHkgcHl0aG9uLm9yZyB2YXJpYW50CiBcaTAgIGlzIGxpbmtlZCB3aXRoIGEgcHJpdmF0ZSBjb3B5IG9mIAotXGkgT3BlblNTTCAxLjAKK1xpIE9wZW5TU0wgMS4wLjIKIFxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKIFxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAogXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKQEAgLTEzNyw3ICs3OCw3IEBACiBcaSAwLjkuOCBsaWJyYXJpZXMKIFxpMCAuICBBcHBsZSdzIDAuOS44IHZlcnNpb24gaW5jbHVkZXMgYW4gaW1wb3J0YW50IGFkZGl0aW9uYWwgZmVhdHVyZTogaWYgYSBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgdmVyaWZpZWQgdXNpbmcgdGhlIG1hbnVhbGx5IGFkbWluaXN0ZXJlZCBjZXJ0aWZpY2F0ZXMgaW4gCiBcZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAsIHRoZSBjZXJ0aWZpY2F0ZXMgbWFuYWdlZCBieSB0aGUgc3lzdGVtIHNlY3VyaXR5IGZyYW1ld29yayBJbiB0aGUgdXNlciBhbmQgc3lzdGVtIGtleWNoYWlucyBhcmUgYWxzbyBjb25zdWx0ZWQgKHVzaW5nIEFwcGxlIHByaXZhdGUgQVBJcykuICBGb3IgdGhpcyByZWFzb24sIGZvciAzLjQuMyB0aGUgCitcZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCiBcaSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAogXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKIFxpIFB5UEkKQEAgLTE0NSw3ICs4NiwxOCBAQAogXAogVGhlIGJ1bmRsZWQgCiBcZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggMy40LjMgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKK1xmMCAgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIDMuNSBpbnN0YWxsZXJzIGhhcyBpdHMgb3duIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZm9yIHZlcmlmeWluZyBkb3dubG9hZCBjb25uZWN0aW9ucy5cCitcCisKK1xiIFx1bCBPdGhlciBjaGFuZ2VzXAorCitcYjAgXHVsbm9uZSBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKK1xjZjAgRm9yIG90aGVyIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCBzZWUgdGhlIAorXGkgV2hhdCdzIG5ldworXGkwICBzZWN0aW9uIGluIHRoZSB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2RvYy8ifX17XGZsZHJzbHQgRG9jdW1lbnRhdGlvbiBTZXR9fSBmb3IgdGhpcyByZWxlYXNlIGFuZCBpdHMgCitcaSBSZWxlYXNlIE5vdGVzCitcaTAgIGxpbmsgYXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzL319LlwKIFxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAogCiBcYiBcY2YwIFx1bCBcCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgppbmRleCAyNTI3Nzg3Li5kZmI3NWQ4IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKQEAgLTEsNSArMSw1IEBACiB7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDNcY29jb2FzdWJydGYxNjAKLVxjb2NvYXNjcmVlbmZvbnRzMXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQorXGNvY29hc2NyZWVuZm9udHMxe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKIFxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKQEAgLTE3LDEyICsxNyw2IEBACiBcYjAgLlwKIFwKIAotXGIgTkVXIGZvciBQeXRob24gMy40LjM6IAotXGIwICAzLjQuMyBpbmNsdWRlcyBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBQeXRob24gYXBwbGljYXRpb25zLiAgU2VlIHRoZSAKLVxmMSBSZWFkTWUKLVxmMCAgZmlsZSBhbmQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy93aGF0c25ldy8zLjQuaHRtbCNjaGFuZ2VkLWluLTMtNC0zIn19e1xmbGRyc2x0IHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbn19IGZvciBtb3JlIGluZm9ybWF0aW9uLlwKLVwKLQogXGIgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZW5zdXJlcGlwIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5lbnN1cmVwaXAKaW5kZXggYmY4OTNkMS4uMzA3NGZhMyAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5lbnN1cmVwaXAKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5lbnN1cmVwaXAKQEAgLTEwLDE1ICsxMCwxNSBAQAogCiB1bWFzayAwMjIKIAotIiR7RldLfS9iaW4vcHl0aG9uJHtQWVZFUn0iIC1tIGVuc3VyZXBpcCAtLXVwZ3JhZGUKKyIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtRSAtcyAtbSBlbnN1cmVwaXAgLS11cGdyYWRlCiAKLSIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtV2kgXAotICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtRSAtcyAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggYmFkc3ludGF4IFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9zaXRlLXBhY2thZ2VzIgogCi0iJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLVdpIC1PIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLUUgLXMgLVdpIC1PIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14IGJhZHN5bnRheCBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yawppbmRleCBlYjA4Mjk3Li4wZjJlNTJjIDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yaworKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yawpAQCAtNiwyMyArNiwyMyBAQAogUFlWRVI9IkBQWVZFUkAiCiBGV0s9Ii9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9AUFlWRVJAIgogCi0iJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAotICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1FIC1zIC1XaSBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgLXEgLWowIFwKICAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAotIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtRSAtcyAtV2kgLU8gXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0iCiAKLSIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSBcCi0gICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLUUgLXMgLVdpIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14IGJhZHN5bnRheCBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKIAotIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtRSAtcyAtV2kgLU8gXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggYmFkc3ludGF4IFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9zaXRlLXBhY2thZ2VzIgogCmRpZmYgLS1naXQgYS9NYWMvTWFrZWZpbGUuaW4gYi9NYWMvTWFrZWZpbGUuaW4KaW5kZXggMDNlYzczOC4uMTI1NWIxMyAxMDA2NDQKLS0tIGEvTWFjL01ha2VmaWxlLmluCisrKyBiL01hYy9NYWtlZmlsZS5pbgpAQCAtMSw1ICsxLDUgQEAKLSMgVGhpcyBmaWxlIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIHZhcmlvdXMgZnJhbWV3b3JraW5zdGFsbC4uLiB0YXJnZXRzIGluIHRoZSAKLSMgbWFpbiBNYWtlZmlsZS4gVGhlIG5leHQgY291cGxlIG9mIHZhcmlhYmxlcyBhcmUgb3ZlcnJpZGRlbiBvbiB0aGUgCisjIFRoaXMgZmlsZSBjYW4gYmUgaW52b2tlZCBmcm9tIHRoZSB2YXJpb3VzIGZyYW1ld29ya2luc3RhbGwuLi4gdGFyZ2V0cyBpbiB0aGUKKyMgbWFpbiBNYWtlZmlsZS4gVGhlIG5leHQgY291cGxlIG9mIHZhcmlhYmxlcyBhcmUgb3ZlcnJpZGRlbiBvbiB0aGUKICMgY29tbWFuZGxpbmUgaW4gdGhhdCBjYXNlLgogCiBWRVJTSU9OPUBWRVJTSU9OQApAQCAtNTMsNyArNTMsNyBAQAogaW5zdGFsbGFwcHM6IGluc3RhbGxfUHl0aG9uIGluc3RhbGxfUHl0aG9uTGF1bmNoZXIgaW5zdGFsbF9JRExFCiAKICMKLSMgSW5zdGFsbCB1bml4IHRvb2xzIGluIC91c3IvbG9jYWwvYmluLiBUaGVzZSBhcmUganVzdCBhbGlhc2VzIGZvciB0aGUgCisjIEluc3RhbGwgdW5peCB0b29scyBpbiAvdXNyL2xvY2FsL2Jpbi4gVGhlc2UgYXJlIGp1c3QgYWxpYXNlcyBmb3IgdGhlCiAjIGFjdHVhbCBpbnN0YWxsYXRpb24gaW5zaWRlIHRoZSBmcmFtZXdvcmsuCiAjCiBpbnN0YWxsdW5peHRvb2xzOgpkaWZmIC0tZ2l0IGEvTWFjL1B5dGhvbkxhdW5jaGVyL0luZm8ucGxpc3QuaW4gYi9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgppbmRleCA0Mjg0NmVhLi5iNGFkZTFkIDEwMDY0NAotLS0gYS9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgorKysgYi9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgpAQCAtMSw1ICsxLDUgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZSBDb21wdXRlci8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KKzwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgogPHBsaXN0IHZlcnNpb249IjEuMCI+CiA8ZGljdD4KIAk8a2V5PkNGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb248L2tleT4KQEAgLTM4LDcgKzM4LDcgQEAKIAkJPC9kaWN0PgogCTwvYXJyYXk+CiAJPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8L2tleT4KLQk8c3RyaW5nPlB5dGhvbkxhdW5jaGVyPC9zdHJpbmc+CisJPHN0cmluZz5QeXRob24gTGF1bmNoZXI8L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlR2V0SW5mb1N0cmluZzwva2V5PgogCTxzdHJpbmc+JVZFUlNJT04lLCDCqSAyMDAxLTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KZGlmZiAtLWdpdCBhL01hYy9QeXRob25MYXVuY2hlci9NYWtlZmlsZS5pbiBiL01hYy9QeXRob25MYXVuY2hlci9NYWtlZmlsZS5pbgppbmRleCBmMDVlZmRmLi40YzA1ZjI2IDEwMDY0NAotLS0gYS9NYWMvUHl0aG9uTGF1bmNoZXIvTWFrZWZpbGUuaW4KKysrIGIvTWFjL1B5dGhvbkxhdW5jaGVyL01ha2VmaWxlLmluCkBAIC0xNSwxMiArMTUsMTAgQEAKIFBZVEhPTkZSQU1FV09SSz1AUFlUSE9ORlJBTUVXT1JLQAogCiAjIERlcGxveW1lbnQgdGFyZ2V0IHNlbGVjdGVkIGR1cmluZyBjb25maWd1cmUsIHRvIGJlIGNoZWNrZWQKLSMgYnkgZGlzdHV0aWxzICAKKyMgYnkgZGlzdHV0aWxzCiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9QENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRACiBARVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVEBleHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiAKLUJVTkRMRUJVTERFUj0kKHNyY2RpcikvLi4vVG9vbHMvYnVuZGxlYnVpbGRlci5weQotCiBQWVRIT05BUFBTRElSPUBGUkFNRVdPUktJTlNUQUxMQVBQU1BSRUZJWEAvJChQWVRIT05GUkFNRVdPUkspICQoVkVSU0lPTikKIE9CSkVDVFM9RmlsZVNldHRpbmdzLm8gTXlBcHBEZWxlZ2F0ZS5vIE15RG9jdW1lbnQubyBQcmVmZXJlbmNlc1dpbmRvd0NvbnRyb2xsZXIubyBkb3NjcmlwdC5vIG1haW4ubwogCkBAIC0zMCwxMCArMjgsMTAgQEAKIAkvYmluL2NwIC1yICJQeXRob24gTGF1bmNoZXIuYXBwIiAiJChERVNURElSKSQoUFlUSE9OQVBQU0RJUikiCiAJdG91Y2ggIiQoREVTVERJUikkKFBZVEhPTkFQUFNESVIpL1B5dGhvbiBMYXVuY2hlci5hcHAiCiAKLQogY2xlYW46CiAJcm0gLWYgKi5vICJQeXRob24gTGF1bmNoZXIiCiAJcm0gLXJmICJQeXRob24gTGF1bmNoZXIuYXBwIgorCXJtIC1mIEluZm8ucGxpc3QKIAogUHl0aG9uXCBMYXVuY2hlci5hcHA6ICBJbmZvLnBsaXN0IFwKIAkJUHl0aG9uXCBMYXVuY2hlciAkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uTGF1bmNoZXIuaWNucyBcCkBAIC00MSwxOCArMzksMTcgQEAKIAkJJChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkNvbXBpbGVkLmljbnMgXAogCQkkKHNyY2RpcikvZmFjdG9yeVNldHRpbmdzLnBsaXN0CiAJcm0gLWZyICJQeXRob24gTGF1bmNoZXIuYXBwIgotCSQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAkKEJVTkRMRUJVTERFUikgXAotCQktLWJ1aWxkZGlyPS4gXAotCQktLW5hbWU9IlB5dGhvbiBMYXVuY2hlciIgXAotCQktLWV4ZWN1dGFibGU9IlB5dGhvbiBMYXVuY2hlciIgXAotCQktLWljb25maWxlPSQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25MYXVuY2hlci5pY25zIFwKLQkJLS1idW5kbGUtaWQ9b3JnLnB5dGhvbi5QeXRob25MYXVuY2hlciBcCi0JCS0tcmVzb3VyY2U9JChzcmNkaXIpLy4uL0ljb25zL1B5dGhvblNvdXJjZS5pY25zIFwKLQkJLS1yZXNvdXJjZT0kKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uQ29tcGlsZWQuaWNucyBcCi0JCS0tcmVzb3VyY2U9JChzcmNkaXIpL0VuZ2xpc2gubHByb2ogXAotCQktLXJlc291cmNlPSQoc3JjZGlyKS9mYWN0b3J5U2V0dGluZ3MucGxpc3QgXAotCQktLXBsaXN0IEluZm8ucGxpc3QgXAotCQlidWlsZAorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwIgorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzIgorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL01hY09TIgorCW1rZGlyICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKKwljcCAiUHl0aG9uIExhdW5jaGVyIiAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9NYWNPUyIKKwljcCBJbmZvLnBsaXN0ICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cyIKKwljcCAkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uTGF1bmNoZXIuaWNucyAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwICQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Tb3VyY2UuaWNucyAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwICQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Db21waWxlZC5pY25zICAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCisJY3AgJChzcmNkaXIpL2ZhY3RvcnlTZXR0aW5ncy5wbGlzdCAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwIC1SICQoc3JjZGlyKS9FbmdsaXNoLmxwcm9qICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKIAogRmlsZVNldHRpbmdzLm86ICQoc3JjZGlyKS9GaWxlU2V0dGluZ3MubQogCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAtYyAkKHNyY2RpcikvRmlsZVNldHRpbmdzLm0KZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDBhMzEzZDEuLmQ5NjIyYTYgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMTksNyArMTksNyBAQAogCiAgIElmIHRoaXMgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBidWlsZCB3aWxsIGNyZWF0ZSBhIFB5dGhvbi5mcmFtZXdvcmsgcmF0aGVyCiAgIHRoYW4gYSB0cmFkaXRpb25hbCBVbml4IGluc3RhbGwuIFNlZSB0aGUgc2VjdGlvbgotICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAorICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlCiAgIGluZm9ybWF0aW9uIG9uIGZyYW1ld29ya3MuCiAKICAgSWYgdGhlIG9wdGlvbmFsIGRpcmVjdG9yeSBhcmd1bWVudCBpcyBzcGVjaWZpZWQgdGhlIGZyYW1ld29yayBpcyBpbnN0YWxsZWQKQEAgLTUzLDcgKzUzLDcgQEAKIAogKiBgYC0td2l0aC11bml2ZXJhbC1hcmNocz1WQUxVRWBgCiAKLSAgU3BlY2lmeSB0aGUga2luZCBvZiB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgc2hvdWxkIGJlIGNyZWF0ZWQuIFRoaXMgb3B0aW9uIGlzIAorICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMKICAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKICAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cwogICB0byBgYGludGVsYGAuCkBAIC0xNzQsMTQgKzE3NCwxNCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCi1leGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCitleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4KIGZyb20gYSBNYWMgT1MgWCBhcHBsaWNhdGlvbiBidW5kbGUgKCIuYXBwIikuCiAKIFdoaWxlIGl0IGlzIHRlY2huaWNhbGx5IHBvc3NpYmxlIHRvIGNyZWF0ZSBhIC5hcHAgd2l0aG91dCB1c2luZyBmcmFtZXdvcmtzIHlvdQogd2lsbCBoYXZlIHRvIGRvIHRoZSB3b3JrIHlvdXJzZWxmIGlmIHlvdSByZWFsbHkgd2FudCB0aGlzLgogCiBBIHNlY29uZCByZWFzb24gZm9yIHVzaW5nIGZyYW1ld29ya3MgaXMgdGhhdCB0aGV5IHB1dCBQeXRob24tcmVsYXRlZCBpdGVtcyBpbgotb25seSB0d28gcGxhY2VzOiAiL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmsiIGFuZCAKK29ubHkgdHdvIHBsYWNlczogIi9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrIiBhbmQKICIvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj4iIHdoZXJlIGBgPFZFUlNJT04+YGAgY2FuIGJlIGUuZy4gIjMuNCIsCiAiMi43IiwgZXRjLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcKIFB5dGhvbiBmcm9tIGEgYmluYXJ5IGRpc3RyaWJ1dGlvbiBpZiB0aGV5IHdhbnQgdG8gZ2V0IHJpZCBvZiBpdCBhZ2Fpbi4gTW9yZW92ZXIsCkBAIC0yMjgsMTEgKzIyOCwxMSBAQAogIDEuIC4vY29uZmlndXJlIC0tZW5hYmxlLWZyYW1ld29yawogCiAgMi4gbWFrZQotIAorCiAgMy4gbWFrZSBpbnN0YWxsCiAKIFRoaXMgc2VxdWVuY2Ugd2lsbCBwdXQgdGhlIGZyYW1ld29yayBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrYGAsCi10aGUgYXBwbGljYXRpb25zIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+YGAgYW5kIHRoZSB1bml4IHRvb2xzIGluIAordGhlIGFwcGxpY2F0aW9ucyBpbiBgYC9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPmBgIGFuZCB0aGUgdW5peCB0b29scyBpbgogYGAvdXNyL2xvY2FsL2JpbmBgLgogCiBJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQpAQCAtMzAwLDcgKzMwMCw3IEBACiB1c2UgeW91ciBub3JtYWwgYnVpbGQgZGlyZWN0b3J5IG5vciBkb2VzIGl0IGluc3RhbGwgaW50byAvLgogCiBCZWNhdXNlIG9mIHRoZSB3YXkgdGhlIHNjcmlwdCBsb2NhdGVzIHRoZSBmaWxlcyBpdCBuZWVkcyB5b3UgaGF2ZSB0byBydW4gaXQKLWZyb20gd2l0aGluIHRoZSBCdWlsZFNjcmlwdCBkaXJlY3RvcnkuIFRoZSBzY3JpcHQgYWNjZXB0cyBhIG51bWJlciBvZiAKK2Zyb20gd2l0aGluIHRoZSBCdWlsZFNjcmlwdCBkaXJlY3RvcnkuIFRoZSBzY3JpcHQgYWNjZXB0cyBhIG51bWJlciBvZgogY29tbWFuZC1saW5lIGFyZ3VtZW50cywgcnVuIGl0IHdpdGggLS1oZWxwIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiBDb25maWd1cmUgd2FybmluZ3MKZGlmZiAtLWdpdCBhL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5IGIvTWFjL1Rvb2xzL2J1bmRsZWJ1aWxkZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY1Njc5ZDMuLjAwMDAwMDAKLS0tIGEvTWFjL1Rvb2xzL2J1bmRsZWJ1aWxkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MzQgKzAsMCBAQAotIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotCi0iIiJcCi1idW5kbGVidWlsZGVyLnB5IC0tIFRvb2xzIHRvIGFzc2VtYmxlIE1hY09TIFggKGFwcGxpY2F0aW9uKSBidW5kbGVzLgotCi1UaGlzIG1vZHVsZSBjb250YWlucyB0d28gY2xhc3NlcyB0byBidWlsZCBzbyBjYWxsZWQgImJ1bmRsZXMiIGZvcgotTWFjT1MgWC4gQnVuZGxlQnVpbGRlciBpcyBhIGdlbmVyYWwgdG9vbCwgQXBwQnVpbGRlciBpcyBhIHN1YmNsYXNzCi1zcGVjaWFsaXplZCBpbiBidWlsZGluZyBhcHBsaWNhdGlvbiBidW5kbGVzLgotCi1bQnVuZGxlfEFwcF1CdWlsZGVyIG9iamVjdHMgYXJlIGluc3RhbnRpYXRlZCB3aXRoIGEgYnVuY2ggb2Yga2V5d29yZAotYXJndW1lbnRzLCBhbmQgaGF2ZSBhIGJ1aWxkKCkgbWV0aG9kIHRoYXQgd2lsbCBkbyBhbGwgdGhlIHdvcmsuIFNlZQotdGhlIGNsYXNzIGRvYyBzdHJpbmdzIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCi0KLVRoZSBtb2R1bGUgY29udGFpbnMgYSBtYWluIHByb2dyYW0gdGhhdCBjYW4gYmUgdXNlZCBpbiB0d28gd2F5czoKLQotICAlIHB5dGhvbiBidW5kbGVidWlsZGVyLnB5IFtvcHRpb25zXSBidWlsZAotICAlIHB5dGhvbiBidWlsZGFwcC5weSBbb3B0aW9uc10gYnVpbGQKLQotV2hlcmUgImJ1aWxkYXBwLnB5IiBpcyBhIHVzZXItc3VwcGxpZWQgc2V0dXAucHktbGlrZSBzY3JpcHQgZm9sbG93aW5nCi10aGlzIG1vZGVsOgotCi0gIGZyb20gYnVuZGxlYnVpbGRlciBpbXBvcnQgYnVpbGRhcHAKLSAgYnVpbGRhcHAoPGxvdHMtb2Yta2V5d29yZC1hcmdzPikKLQotIiIiCi0KLQotX19hbGxfXyA9IFsiQnVuZGxlQnVpbGRlciIsICJCdW5kbGVCdWlsZGVyRXJyb3IiLCAiQXBwQnVpbGRlciIsICJidWlsZGFwcCJdCi0KLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zLCBlcnJubywgc2h1dGlsCi1pbXBvcnQgaW1wLCBtYXJzaGFsCi1pbXBvcnQgcmUKLWZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKLWltcG9ydCBnZXRvcHQKLWZyb20gcGxpc3RsaWIgaW1wb3J0IFBsaXN0Ci1mcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUgYXMgZnVuY3Rpb24KLQotY2xhc3MgQnVuZGxlQnVpbGRlckVycm9yKEV4Y2VwdGlvbik6IHBhc3MKLQotCi1jbGFzcyBEZWZhdWx0czoKLQotICAgICIiIkNsYXNzIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmUgYW5kIGFyZQotICAgIG5vdCBmdW5jdGlvbnMgb3IgY2xhc3NtZXRob2RzIGFyZSAoZGVlcCljb3BpZWQgdG8gc2VsZi5fX2RpY3RfXy4KLSAgICBUaGlzIGFsbG93cyBmb3IgbXV0YWJsZSBkZWZhdWx0IHZhbHVlcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGRlZmF1bHRzID0gc2VsZi5fZ2V0RGVmYXVsdHMoKQotICAgICAgICBkZWZhdWx0cy51cGRhdGUoa3dhcmdzKQotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShkZWZhdWx0cykKLQotICAgIGRlZiBfZ2V0RGVmYXVsdHMoY2xzKToKLSAgICAgICAgZGVmYXVsdHMgPSB7fQotICAgICAgICBmb3IgYmFzZSBpbiBjbHMuX19iYXNlc19fOgotICAgICAgICAgICAgaWYgaGFzYXR0cihiYXNlLCAiX2dldERlZmF1bHRzIik6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdHMudXBkYXRlKGJhc2UuX2dldERlZmF1bHRzKCkpCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBsaXN0KGNscy5fX2RpY3RfXy5pdGVtcygpKToKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gIT0gIl8iIGFuZCBub3QgaXNpbnN0YW5jZSh2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uLCBjbGFzc21ldGhvZCkpOgotICAgICAgICAgICAgICAgIGRlZmF1bHRzW25hbWVdID0gZGVlcGNvcHkodmFsdWUpCi0gICAgICAgIHJldHVybiBkZWZhdWx0cwotICAgIF9nZXREZWZhdWx0cyA9IGNsYXNzbWV0aG9kKF9nZXREZWZhdWx0cykKLQotCi1jbGFzcyBCdW5kbGVCdWlsZGVyKERlZmF1bHRzKToKLQotICAgICIiIkJ1bmRsZUJ1aWxkZXIgaXMgYSBiYXJlYm9uZXMgY2xhc3MgZm9yIGFzc2VtYmxpbmcgYnVuZGxlcy4gSXQKLSAgICBrbm93cyBub3RoaW5nIGFib3V0IGV4ZWN1dGFibGVzIG9yIGljb25zLCBpdCBvbmx5IGNvcGllcyBmaWxlcwotICAgIGFuZCBjcmVhdGVzIHRoZSBQa2dJbmZvIGFuZCBJbmZvLnBsaXN0IGZpbGVzLgotICAgICIiIgotCi0gICAgIyAoTm90ZSB0aGF0IERlZmF1bHRzLl9faW5pdF9fIChkZWVwKWNvcGllcyB0aGVzZSB2YWx1ZXMgdG8KLSAgICAjIGluc3RhbmNlIHZhcmlhYmxlcy4gTXV0YWJsZSBkZWZhdWx0cyBhcmUgdGhlcmVmb3JlIHNhZmUuKQotCi0gICAgIyBOYW1lIG9mIHRoZSBidW5kbGUsIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uCi0gICAgbmFtZSA9IE5vbmUKLQotICAgICMgVGhlIHByb3BlcnR5IGxpc3QgKCJwbGlzdCIpCi0gICAgcGxpc3QgPSBQbGlzdChDRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uID0gIkVuZ2xpc2giLAotICAgICAgICAgICAgICAgICAgQ0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb24gPSAiNi4wIikKLQotICAgICMgVGhlIHR5cGUgb2YgdGhlIGJ1bmRsZS4KLSAgICB0eXBlID0gIkJOREwiCi0gICAgIyBUaGUgY3JlYXRvciBjb2RlIG9mIHRoZSBidW5kbGUuCi0gICAgY3JlYXRvciA9IE5vbmUKLQotICAgICMgdGhlIENGQnVuZGxlSWRlbnRpZmllciAodGhpcyBpcyB1c2VkIGZvciB0aGUgcHJlZmVyZW5jZXMgZmlsZSBuYW1lKQotICAgIGJ1bmRsZV9pZCA9IE5vbmUKLQotICAgICMgTGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgdG8gYmUgY29waWVkIHRvIDxidW5kbGU+L0NvbnRlbnRzL1Jlc291cmNlcy4KLSAgICByZXNvdXJjZXMgPSBbXQotCi0gICAgIyBMaXN0IG9mIChzcmMsIGRlc3QpIHR1cGxlczsgZGVzdCBzaG91bGQgYmUgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBidW5kbGUKLSAgICAjIChlZy4gIkNvbnRlbnRzL1Jlc291cmNlcy9NeVN0dWZmL1NvbWVGaWxlLmV4dCkuCi0gICAgZmlsZXMgPSBbXQotCi0gICAgIyBMaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMgKGR5bGlicywgRnJhbWV3b3JrcykgdG8gYnVuZGxlIHdpdGggdGhlIGFwcAotICAgICMgd2lsbCBiZSBwbGFjZWQgaW4gQ29udGVudHMvRnJhbWV3b3JrcwotICAgIGxpYnMgPSBbXQotCi0gICAgIyBEaXJlY3Rvcnkgd2hlcmUgdGhlIGJ1bmRsZSB3aWxsIGJlIGFzc2VtYmxlZC4KLSAgICBidWlsZGRpciA9ICJidWlsZCIKLQotICAgICMgTWFrZSBzeW1saW5rcyBpbnN0ZWFkIGNvcHlpbmcgZmlsZXMuIFRoaXMgaXMgaGFuZHkgZHVyaW5nIGRlYnVnZ2luZywgYnV0Ci0gICAgIyBtYWtlcyB0aGUgYnVuZGxlIG5vbi1kaXN0cmlidXRhYmxlLgotICAgIHN5bWxpbmsgPSAwCi0KLSAgICAjIFZlcmJvc2l0eSBsZXZlbC4KLSAgICB2ZXJib3NpdHkgPSAxCi0KLSAgICAjIERlc3RpbmF0aW9uIHJvb3QgZGlyZWN0b3J5Ci0gICAgZGVzdHJvb3QgPSAiIgotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICAjIFhYWCByZXRoaW5rIHNlbGYubmFtZSBtdW5naW5nLCB0aGlzIGlzIGJyaXR0bGUuCi0gICAgICAgIHNlbGYubmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLm5hbWUpCi0gICAgICAgIGlmIG5vdCBleHQ6Ci0gICAgICAgICAgICBleHQgPSAiLmJ1bmRsZSIKLSAgICAgICAgYnVuZGxlZXh0ZW5zaW9uID0gZXh0Ci0gICAgICAgICMgbWlzYyAoZGVyaXZlZCkgYXR0cmlidXRlcwotICAgICAgICBzZWxmLmJ1bmRsZXBhdGggPSBwYXRoam9pbihzZWxmLmJ1aWxkZGlyLCBzZWxmLm5hbWUgKyBidW5kbGVleHRlbnNpb24pCi0KLSAgICAgICAgcGxpc3QgPSBzZWxmLnBsaXN0Ci0gICAgICAgIHBsaXN0LkNGQnVuZGxlTmFtZSA9IHNlbGYubmFtZQotICAgICAgICBwbGlzdC5DRkJ1bmRsZVBhY2thZ2VUeXBlID0gc2VsZi50eXBlCi0gICAgICAgIGlmIHNlbGYuY3JlYXRvciBpcyBOb25lOgotICAgICAgICAgICAgaWYgaGFzYXR0cihwbGlzdCwgIkNGQnVuZGxlU2lnbmF0dXJlIik6Ci0gICAgICAgICAgICAgICAgc2VsZi5jcmVhdG9yID0gcGxpc3QuQ0ZCdW5kbGVTaWduYXR1cmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5jcmVhdG9yID0gIj8/Pz8iCi0gICAgICAgIHBsaXN0LkNGQnVuZGxlU2lnbmF0dXJlID0gc2VsZi5jcmVhdG9yCi0gICAgICAgIGlmIHNlbGYuYnVuZGxlX2lkOgotICAgICAgICAgICAgcGxpc3QuQ0ZCdW5kbGVJZGVudGlmaWVyID0gc2VsZi5idW5kbGVfaWQKLSAgICAgICAgZWxpZiBub3QgaGFzYXR0cihwbGlzdCwgIkNGQnVuZGxlSWRlbnRpZmllciIpOgotICAgICAgICAgICAgcGxpc3QuQ0ZCdW5kbGVJZGVudGlmaWVyID0gc2VsZi5uYW1lCi0KLSAgICBkZWYgYnVpbGQoc2VsZik6Ci0gICAgICAgICIiIkJ1aWxkIHRoZSBidW5kbGUuIiIiCi0gICAgICAgIGJ1aWxkZGlyID0gc2VsZi5idWlsZGRpcgotICAgICAgICBpZiBidWlsZGRpciBhbmQgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkZGlyKToKLSAgICAgICAgICAgIG9zLm1rZGlyKGJ1aWxkZGlyKQotICAgICAgICBzZWxmLm1lc3NhZ2UoIkJ1aWxkaW5nICVzIiAlIHJlcHIoc2VsZi5idW5kbGVwYXRoKSwgMSkKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5idW5kbGVwYXRoKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5idW5kbGVwYXRoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1bmRsZXBhdGggKyAnficpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1bmRsZXBhdGggKyAnficpCi0gICAgICAgIGJwID0gc2VsZi5idW5kbGVwYXRoCi0KLSAgICAgICAgIyBDcmVhdGUgdGhlIGFwcCBidW5kbGUgaW4gYSB0ZW1wb3JhcnkgbG9jYXRpb24gYW5kIHRoZW4KLSAgICAgICAgIyByZW5hbWUgdGhlIGNvbXBsZXRlZCBidW5kbGUuIFRoaXMgd2F5IHRoZSBGaW5kZXIgd2lsbAotICAgICAgICAjIG5ldmVyIHNlZSBhbiBpbmNvbXBsZXRlIGJ1bmRsZSAod2hlcmUgaXQgbWlnaHQgcGljayB1cAotICAgICAgICAjIGFuZCBjYWNoZSB0aGUgd3JvbmcgbWV0YSBkYXRhKQotICAgICAgICBzZWxmLmJ1bmRsZXBhdGggPSBicCArICd+JwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihzZWxmLmJ1bmRsZXBhdGgpCi0gICAgICAgICAgICBzZWxmLnByZVByb2Nlc3MoKQotICAgICAgICAgICAgc2VsZi5fY29weUZpbGVzKCkKLSAgICAgICAgICAgIHNlbGYuX2FkZE1ldGFGaWxlcygpCi0gICAgICAgICAgICBzZWxmLnBvc3RQcm9jZXNzKCkKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLmJ1bmRsZXBhdGgsIGJwKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5idW5kbGVwYXRoID0gYnAKLSAgICAgICAgc2VsZi5tZXNzYWdlKCJEb25lLiIsIDEpCi0KLSAgICBkZWYgcHJlUHJvY2VzcyhzZWxmKToKLSAgICAgICAgIiIiSG9vayBmb3Igc3ViY2xhc3Nlcy4iIiIKLSAgICAgICAgcGFzcwotICAgIGRlZiBwb3N0UHJvY2VzcyhzZWxmKToKLSAgICAgICAgIiIiSG9vayBmb3Igc3ViY2xhc3Nlcy4iIiIKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIF9hZGRNZXRhRmlsZXMoc2VsZik6Ci0gICAgICAgIGNvbnRlbnRzID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCAiQ29udGVudHMiKQotICAgICAgICBtYWtlZGlycyhjb250ZW50cykKLSAgICAgICAgIwotICAgICAgICAjIFdyaXRlIENvbnRlbnRzL1BrZ0luZm8KLSAgICAgICAgYXNzZXJ0IGxlbihzZWxmLnR5cGUpID09IGxlbihzZWxmLmNyZWF0b3IpID09IDQsIFwKLSAgICAgICAgICAgICAgICAidHlwZSBhbmQgY3JlYXRvciBtdXN0IGJlIDQtYnl0ZSBzdHJpbmdzLiIKLSAgICAgICAgcGtnaW5mbyA9IHBhdGhqb2luKGNvbnRlbnRzLCAiUGtnSW5mbyIpCi0gICAgICAgIGYgPSBvcGVuKHBrZ2luZm8sICJ3YiIpCi0gICAgICAgIGYud3JpdGUoKHNlbGYudHlwZSArIHNlbGYuY3JlYXRvcikuZW5jb2RlKCdsYXRpbjEnKSkKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICMKLSAgICAgICAgIyBXcml0ZSBDb250ZW50cy9JbmZvLnBsaXN0Ci0gICAgICAgIGluZm9wbGlzdCA9IHBhdGhqb2luKGNvbnRlbnRzLCAiSW5mby5wbGlzdCIpCi0gICAgICAgIHNlbGYucGxpc3Qud3JpdGUoaW5mb3BsaXN0KQotCi0gICAgZGVmIF9jb3B5RmlsZXMoc2VsZik6Ci0gICAgICAgIGZpbGVzID0gc2VsZi5maWxlc1s6XQotICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLnJlc291cmNlczoKLSAgICAgICAgICAgIGZpbGVzLmFwcGVuZCgocGF0aCwgcGF0aGpvaW4oIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsCi0gICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSkpKQotICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLmxpYnM6Ci0gICAgICAgICAgICBmaWxlcy5hcHBlbmQoKHBhdGgsIHBhdGhqb2luKCJDb250ZW50cyIsICJGcmFtZXdvcmtzIiwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpKSkpCi0gICAgICAgIGlmIHNlbGYuc3ltbGluazoKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiTWFraW5nIHN5bWJvbGljIGxpbmtzIiwgMSkKLSAgICAgICAgICAgIG1zZyA9ICJNYWtpbmcgc3ltbGluayBmcm9tIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJDb3B5aW5nIGZpbGVzIiwgMSkKLSAgICAgICAgICAgIG1zZyA9ICJDb3B5aW5nIgotICAgICAgICBmaWxlcy5zb3J0KCkKLSAgICAgICAgZm9yIHNyYywgZHN0IGluIGZpbGVzOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiJXMgJXMvIHRvICVzLyIgJSAobXNnLCBzcmMsIGRzdCksIDIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiJXMgJXMgdG8gJXMiICUgKG1zZywgc3JjLCBkc3QpLCAyKQotICAgICAgICAgICAgZHN0ID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBkc3QpCi0gICAgICAgICAgICBpZiBzZWxmLnN5bWxpbms6Ci0gICAgICAgICAgICAgICAgc3ltbGluayhzcmMsIGRzdCwgbWtkaXJzPTEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvcHkoc3JjLCBkc3QsIG1rZGlycz0xKQotCi0gICAgZGVmIG1lc3NhZ2Uoc2VsZiwgbXNnLCBsZXZlbD0wKToKLSAgICAgICAgaWYgbGV2ZWwgPD0gc2VsZi52ZXJib3NpdHk6Ci0gICAgICAgICAgICBpbmRlbnQgPSAiIgotICAgICAgICAgICAgaWYgbGV2ZWwgPiAxOgotICAgICAgICAgICAgICAgIGluZGVudCA9IChsZXZlbCAtIDEpICogIiAgIgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShpbmRlbnQgKyBtc2cgKyAiXG4iKQotCi0gICAgZGVmIHJlcG9ydChzZWxmKToKLSAgICAgICAgIyBYWFggc29tZXRoaW5nIGRlY2VudAotICAgICAgICBwYXNzCi0KLQotaWYgX19kZWJ1Z19fOgotICAgIFBZQ19FWFQgPSAiLnB5YyIKLWVsc2U6Ci0gICAgUFlDX0VYVCA9ICIucHlvIgotCi1NQUdJQyA9IGltcC5nZXRfbWFnaWMoKQotVVNFX1pJUElNUE9SVCA9ICJ6aXBpbXBvcnQiIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotCi0jIEZvciBzdGFuZGFsb25lIGFwcHMsIHdlIGhhdmUgb3VyIG93biBtaW5pbWFsIHNpdGUucHkuIFdlIGRvbid0IG5lZWQKLSMgYWxsIHRoZSBjcnVmdCBvZiB0aGUgcmVhbCBzaXRlLnB5LgotU0lURV9QWSA9ICIiIlwKLWltcG9ydCBzeXMKLWlmIG5vdCAlKHNlbWlfc3RhbmRhbG9uZSlzOgotICAgIGRlbCBzeXMucGF0aFsxOl0gICMgc3lzLnBhdGhbMF0gaXMgQ29udGVudHMvUmVzb3VyY2VzLwotIiIiCi0KLWlmIFVTRV9aSVBJTVBPUlQ6Ci0gICAgWklQX0FSQ0hJVkUgPSAiTW9kdWxlcy56aXAiCi0gICAgU0lURV9QWSArPSAic3lzLnBhdGguYXBwZW5kKHN5cy5wYXRoWzBdICsgJy8lcycpXG4iICUgWklQX0FSQ0hJVkUKLSAgICBkZWYgZ2V0UHljRGF0YShmdWxsbmFtZSwgY29kZSwgaXNwa2cpOgotICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgIGZ1bGxuYW1lICs9ICIuX19pbml0X18iCi0gICAgICAgIHBhdGggPSBmdWxsbmFtZS5yZXBsYWNlKCIuIiwgb3Muc2VwKSArIFBZQ19FWFQKLSAgICAgICAgcmV0dXJuIHBhdGgsIE1BR0lDICsgJ1wwXDBcMFwwJyArIG1hcnNoYWwuZHVtcHMoY29kZSkKLQotIwotIyBFeHRlbnNpb24gbW9kdWxlcyBjYW4ndCBiZSBpbiB0aGUgbW9kdWxlcyB6aXAgYXJjaGl2ZSwgc28gYSBwbGFjZWhvbGRlcgotIyBpcyBhZGRlZCBpbnN0ZWFkLCB0aGF0IGxvYWRzIHRoZSBleHRlbnNpb24gZnJvbSBhIHNwZWNpZmllZCBsb2NhdGlvbi4KLSMKLUVYVF9MT0FERVIgPSAiIiJcCi1kZWYgX19sb2FkKCk6Ci0gICAgaW1wb3J0IGltcCwgc3lzLCBvcwotICAgIGZvciBwIGluIHN5cy5wYXRoOgotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHAsICIlKGZpbGVuYW1lKXMiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgYXNzZXJ0IDAsICJmaWxlIG5vdCBmb3VuZDogJShmaWxlbmFtZSlzIgotICAgIG1vZCA9IGltcC5sb2FkX2R5bmFtaWMoIiUobmFtZSlzIiwgcGF0aCkKLQotX19sb2FkKCkKLWRlbCBfX2xvYWQKLSIiIgotCi1NQVlNSVNTX01PRFVMRVMgPSBbJ21hYycsICdudCcsICdudHBhdGgnLCAnZG9zJywgJ2Rvc3BhdGgnLAotICAgICd3aW4zMmFwaScsICdjZScsICdfd2lucmVnJywgJ250dXJsMnBhdGgnLCAnc2l0ZWN1c3RvbWl6ZScsCi0gICAgJ29yZy5weXRob24uY29yZScsICdyaXNjb3MnLCAncmlzY29zZW52aXJvbicsICdyaXNjb3NwYXRoJwotXQotCi1TVFJJUF9FWEVDID0gIi91c3IvYmluL3N0cmlwIgotCi0jCi0jIFdlJ3JlIHVzaW5nIGEgc3RvY2sgaW50ZXJwcmV0ZXIgdG8gcnVuIHRoZSBhcHAsIHlldCB3ZSBuZWVkCi0jIGEgd2F5IHRvIHBhc3MgdGhlIFB5dGhvbiBtYWluIHByb2dyYW0gdG8gdGhlIGludGVycHJldGVyLiBUaGUKLSMgYm9vdHN0cmFwcGluZyBzY3JpcHQgZmlyZXMgdXAgdGhlIGludGVycHJldGVyIHdpdGggdGhlIHJpZ2h0Ci0jIGFyZ3VtZW50cy4gb3MuZXhlY3ZlKCkgaXMgdXNlZCBhcyBPU1ggZG9lc24ndCBsaWtlIHVzIHRvCi0jIHN0YXJ0IGEgcmVhbCBuZXcgcHJvY2Vzcy4gQWxzbywgdGhlIGV4ZWN1dGFibGUgbmFtZSBtdXN0IG1hdGNoCi0jIHRoZSBDRkJ1bmRsZUV4ZWN1dGFibGUgdmFsdWUgaW4gdGhlIEluZm8ucGxpc3QsIHNvIHdlIGxpZQotIyBkZWxpYmVyYXRlbHkgd2l0aCBhcmd2WzBdLiBUaGUgYWN0dWFsIFB5dGhvbiBleGVjdXRhYmxlIGlzCi0jIHBhc3NlZCBpbiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyB3ZSBjYW4gInJlcGFpciIKLSMgc3lzLmV4ZWN1dGFibGUgbGF0ZXIuCi0jCi1CT09UU1RSQVBfU0NSSVBUID0gIiIiXAotIyElKGhhc2hiYW5nKXMKLQotaW1wb3J0IHN5cywgb3MKLWV4ZWNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pCi1leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKGV4ZWNkaXIsICIlKGV4ZWN1dGFibGUpcyIpCi1yZXNkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGV4ZWNkaXIpLCAiUmVzb3VyY2VzIikKLWxpYmRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZXhlY2RpciksICJGcmFtZXdvcmtzIikKLW1haW5wcm9ncmFtID0gb3MucGF0aC5qb2luKHJlc2RpciwgIiUobWFpbnByb2dyYW0pcyIpCi0KLXN5cy5hcmd2Lmluc2VydCgxLCBtYWlucHJvZ3JhbSkKLWlmICUoc3RhbmRhbG9uZSlzIG9yICUoc2VtaV9zdGFuZGFsb25lKXM6Ci0gICAgb3MuZW52aXJvblsiUFlUSE9OUEFUSCJdID0gcmVzZGlyCi0gICAgaWYgJShzdGFuZGFsb25lKXM6Ci0gICAgICAgIG9zLmVudmlyb25bIlBZVEhPTkhPTUUiXSA9IHJlc2RpcgotZWxzZToKLSAgICBweXBhdGggPSBvcy5nZXRlbnYoIlBZVEhPTlBBVEgiLCAiIikKLSAgICBpZiBweXBhdGg6Ci0gICAgICAgIHB5cGF0aCA9ICI6IiArIHB5cGF0aAotICAgIG9zLmVudmlyb25bIlBZVEhPTlBBVEgiXSA9IHJlc2RpciArIHB5cGF0aAotb3MuZW52aXJvblsiUFlUSE9ORVhFQ1VUQUJMRSJdID0gZXhlY3V0YWJsZQotb3MuZW52aXJvblsiRFlMRF9MSUJSQVJZX1BBVEgiXSA9IGxpYmRpcgotb3MuZW52aXJvblsiRFlMRF9GUkFNRVdPUktfUEFUSCJdID0gbGliZGlyCi1vcy5leGVjdmUoZXhlY3V0YWJsZSwgc3lzLmFyZ3YsIG9zLmVudmlyb24pCi0iIiIKLQotCi0jCi0jIE9wdGlvbmFsIHdyYXBwZXIgdGhhdCBjb252ZXJ0cyAiZHJvcHBlZCBmaWxlcyIgaW50byBzeXMuYXJndiB2YWx1ZXMuCi0jCi1BUkdWX0VNVUxBVE9SID0gIiIiXAotaW1wb3J0IGFyZ3ZlbXVsYXRvciwgb3MKLQotYXJndmVtdWxhdG9yLkFyZ3ZDb2xsZWN0b3IoKS5tYWlubG9vcCgpCi1leGVjZmlsZShvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICIlKHJlYWxtYWlucHJvZ3JhbSlzIikpCi0iIiIKLQotIwotIyBXaGVuIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSBhcHAgd2l0aCBQeXRob24uZnJhbWV3b3JrLCB3ZSBuZWVkIHRvIGNvcHkKLSMgYSBzdWJzZXQgZnJvbSBQeXRob24uZnJhbWV3b3JrIHRvIHRoZSBidW5kbGUuIFRoZSBmb2xsb3dpbmcgbGlzdAotIyBzcGVjaWZpZXMgZXhhY3RseSB3aGF0IGl0ZW1zIHdlJ2xsIGNvcHkuCi0jCi1QWVRIT05GUkFNRVdPUktHT09ESUVTID0gWwotICAgICJQeXRob24iLCAgIyB0aGUgUHl0aG9uIGNvcmUgbGlicmFyeQotICAgICJSZXNvdXJjZXMvRW5nbGlzaC5scHJvaiIsCi0gICAgIlJlc291cmNlcy9JbmZvLnBsaXN0IiwKLSAgICAiUmVzb3VyY2VzL3ZlcnNpb24ucGxpc3QiLAotXQotCi1kZWYgaXNGcmFtZXdvcmsoKToKLSAgICByZXR1cm4gc3lzLmV4ZWNfcHJlZml4LmZpbmQoIlB5dGhvbi5mcmFtZXdvcmsiKSA+IDAKLQotCi1MSUIgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKQotU0lURV9QQUNLQUdFUyA9IG9zLnBhdGguam9pbihMSUIsICJzaXRlLXBhY2thZ2VzIikKLQotCi1jbGFzcyBBcHBCdWlsZGVyKEJ1bmRsZUJ1aWxkZXIpOgotCi0gICAgIyBPdmVycmlkZSB0eXBlIG9mIHRoZSBidW5kbGUuCi0gICAgdHlwZSA9ICJBUFBMIgotCi0gICAgIyBwbGF0Zm9ybSwgbmFtZSBvZiB0aGUgc3ViZm9sZGVyIG9mIENvbnRlbnRzIHRoYXQgY29udGFpbnMgdGhlIGV4ZWN1dGFibGUuCi0gICAgcGxhdGZvcm0gPSAiTWFjT1MiCi0KLSAgICAjIEEgUHl0aG9uIG1haW4gcHJvZ3JhbS4gSWYgdGhpcyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIG1haW4KLSAgICAjIGV4ZWN1dGFibGUgaW4gdGhlIGJ1bmRsZSB3aWxsIGJlIGEgc21hbGwgd3JhcHBlciB0aGF0IGludm9rZXMKLSAgICAjIHRoZSBtYWluIHByb2dyYW0uIChYWFggRGlzY3VzcyB3aHkuKQotICAgIG1haW5wcm9ncmFtID0gTm9uZQotCi0gICAgIyBUaGUgbWFpbiBleGVjdXRhYmxlLiBJZiBhIFB5dGhvbiBtYWluIHByb2dyYW0gaXMgc3BlY2lmaWVkCi0gICAgIyB0aGUgZXhlY3V0YWJsZSB3aWxsIGJlIGNvcGllZCB0byBSZXNvdXJjZXMgYW5kIGJlIGludm9rZWQKLSAgICAjIGJ5IHRoZSB3cmFwcGVyIHByb2dyYW0gbWVudGlvbmVkIGFib3ZlLiBPdGhlcndpc2UgaXQgd2lsbAotICAgICMgc2ltcGx5IGJlIHVzZWQgYXMgdGhlIG1haW4gZXhlY3V0YWJsZS4KLSAgICBleGVjdXRhYmxlID0gTm9uZQotCi0gICAgIyBUaGUgbmFtZSBvZiB0aGUgbWFpbiBuaWIsIGZvciBDb2NvYSBhcHBzLiAqTXVzdCogYmUgc3BlY2lmaWVkCi0gICAgIyB3aGVuIGJ1aWxkaW5nIGEgQ29jb2EgYXBwLgotICAgIG5pYm5hbWUgPSBOb25lCi0KLSAgICAjIFRoZSBuYW1lIG9mIHRoZSBpY29uIGZpbGUgdG8gYmUgY29waWVkIHRvIFJlc291cmNlcyBhbmQgdXNlZCBmb3IKLSAgICAjIHRoZSBGaW5kZXIgaWNvbi4KLSAgICBpY29uZmlsZSA9IE5vbmUKLQotICAgICMgU3ltbGluayB0aGUgZXhlY3V0YWJsZSBpbnN0ZWFkIG9mIGNvcHlpbmcgaXQuCi0gICAgc3ltbGlua19leGVjID0gMAotCi0gICAgIyBJZiBUcnVlLCBidWlsZCBzdGFuZGFsb25lIGFwcC4KLSAgICBzdGFuZGFsb25lID0gMAotCi0gICAgIyBJZiBUcnVlLCBidWlsZCBzZW1pLXN0YW5kYWxvbmUgYXBwIChvbmx5IGluY2x1ZGVzIHRoaXJkLXBhcnR5IG1vZHVsZXMpLgotICAgIHNlbWlfc3RhbmRhbG9uZSA9IDAKLQotICAgICMgSWYgc2V0LCB1c2UgdGhpcyBmb3IgIyEgbGluZXMgaW4gc3RlYWQgb2Ygc3lzLmV4ZWN1dGFibGUKLSAgICBweXRob24gPSBOb25lCi0KLSAgICAjIElmIFRydWUsIGFkZCBhIHJlYWwgbWFpbiBwcm9ncmFtIHRoYXQgZW11bGF0ZXMgc3lzLmFyZ3YgYmVmb3JlIGNhbGxpbmcKLSAgICAjIG1haW5wcm9ncmFtCi0gICAgYXJndl9lbXVsYXRpb24gPSAwCi0KLSAgICAjIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgb25seSB1c2VkIHdoZW4gYnVpbGRpbmcgYSBzdGFuZGFsb25lIGFwcC4KLQotICAgICMgRXhjbHVkZSB0aGVzZSBtb2R1bGVzLgotICAgIGV4Y2x1ZGVNb2R1bGVzID0gW10KLQotICAgICMgSW5jbHVkZSB0aGVzZSBtb2R1bGVzLgotICAgIGluY2x1ZGVNb2R1bGVzID0gW10KLQotICAgICMgSW5jbHVkZSB0aGVzZSBwYWNrYWdlcy4KLSAgICBpbmNsdWRlUGFja2FnZXMgPSBbXQotCi0gICAgIyBTdHJpcCBiaW5hcmllcyBmcm9tIGRlYnVnIGluZm8uCi0gICAgc3RyaXAgPSAwCi0KLSAgICAjIEZvdW5kIFB5dGhvbiBtb2R1bGVzOiBbKG5hbWUsIGNvZGVvYmplY3QsIGlzcGtnKSwgLi4uXQotICAgIHB5bW9kdWxlcyA9IFtdCi0KLSAgICAjIE1vZHVsZXMgdGhhdCBtb2R1bGVmaW5kZXIgY291bGRuJ3QgZmluZDoKLSAgICBtaXNzaW5nTW9kdWxlcyA9IFtdCi0gICAgbWF5YmVNaXNzaW5nTW9kdWxlcyA9IFtdCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIGlmICgoc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lKQotICAgICAgICAgICAgYW5kIHNlbGYubWFpbnByb2dyYW0gaXMgTm9uZSk6Ci0gICAgICAgICAgICByYWlzZSBCdW5kbGVCdWlsZGVyRXJyb3IoIm11c3Qgc3BlY2lmeSAnbWFpbnByb2dyYW0nIHdoZW4gIgotICAgICAgICAgICAgICAgICAgICAiYnVpbGRpbmcgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLiIpCi0gICAgICAgIGlmIHNlbGYubWFpbnByb2dyYW0gaXMgTm9uZSBhbmQgc2VsZi5leGVjdXRhYmxlIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBCdW5kbGVCdWlsZGVyRXJyb3IoIm11c3Qgc3BlY2lmeSBlaXRoZXIgb3IgYm90aCBvZiAiCi0gICAgICAgICAgICAgICAgICAgICInZXhlY3V0YWJsZScgYW5kICdtYWlucHJvZ3JhbSciKQotCi0gICAgICAgIHNlbGYuZXhlY2RpciA9IHBhdGhqb2luKCJDb250ZW50cyIsIHNlbGYucGxhdGZvcm0pCi0KLSAgICAgICAgaWYgc2VsZi5uYW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbGlmIHNlbGYubWFpbnByb2dyYW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoc2VsZi5tYWlucHJvZ3JhbSkpWzBdCi0gICAgICAgIGVsaWYgZXhlY3V0YWJsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYubmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzZWxmLmV4ZWN1dGFibGUpKVswXQotICAgICAgICBpZiBzZWxmLm5hbWVbLTQ6XSAhPSAiLmFwcCI6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgKz0gIi5hcHAiCi0KLSAgICAgICAgaWYgc2VsZi5leGVjdXRhYmxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5zdGFuZGFsb25lIGFuZCBub3QgaXNGcmFtZXdvcmsoKToKLSAgICAgICAgICAgICAgICBzZWxmLnN5bWxpbmtfZXhlYyA9IDEKLSAgICAgICAgICAgIGlmIHNlbGYucHl0aG9uOgotICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IHNlbGYucHl0aG9uCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCi0KLSAgICAgICAgaWYgc2VsZi5uaWJuYW1lOgotICAgICAgICAgICAgc2VsZi5wbGlzdC5OU01haW5OaWJGaWxlID0gc2VsZi5uaWJuYW1lCi0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLnBsaXN0LCAiTlNQcmluY2lwYWxDbGFzcyIpOgotICAgICAgICAgICAgICAgIHNlbGYucGxpc3QuTlNQcmluY2lwYWxDbGFzcyA9ICJOU0FwcGxpY2F0aW9uIgotCi0gICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBhbmQgaXNGcmFtZXdvcmsoKToKLSAgICAgICAgICAgIHNlbGYuYWRkUHl0aG9uRnJhbWV3b3JrKCkKLQotICAgICAgICBCdW5kbGVCdWlsZGVyLnNldHVwKHNlbGYpCi0KLSAgICAgICAgc2VsZi5wbGlzdC5DRkJ1bmRsZUV4ZWN1dGFibGUgPSBzZWxmLm5hbWUKLQotICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICBzZWxmLmZpbmREZXBlbmRlbmNpZXMoKQotCi0gICAgZGVmIHByZVByb2Nlc3Moc2VsZik6Ci0gICAgICAgIHJlc2RpciA9ICJDb250ZW50cy9SZXNvdXJjZXMiCi0gICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYubWFpbnByb2dyYW0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBleGVjbmFtZSA9IHNlbGYubmFtZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleGVjbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5leGVjdXRhYmxlKQotICAgICAgICAgICAgZXhlY3BhdGggPSBwYXRoam9pbihzZWxmLmV4ZWNkaXIsIGV4ZWNuYW1lKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuc3ltbGlua19leGVjOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChzZWxmLmRlc3Ryb290ICsgc2VsZi5leGVjdXRhYmxlLCBleGVjcGF0aCkpCi0gICAgICAgICAgICBzZWxmLmV4ZWNwYXRoID0gZXhlY3BhdGgKLQotICAgICAgICBpZiBzZWxmLm1haW5wcm9ncmFtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgbWFpbnByb2dyYW0gPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYubWFpbnByb2dyYW0pCi0gICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoc2VsZi5tYWlucHJvZ3JhbSwgcGF0aGpvaW4ocmVzZGlyLCBtYWlucHJvZ3JhbSkpKQotICAgICAgICAgICAgaWYgc2VsZi5hcmd2X2VtdWxhdGlvbjoKLSAgICAgICAgICAgICAgICAjIENoYW5nZSB0aGUgbWFpbiBwcm9ncmFtLCBhbmQgY3JlYXRlIHRoZSBoZWxwZXIgbWFpbiBwcm9ncmFtICh3aGljaAotICAgICAgICAgICAgICAgICMgZG9lcyBhcmd2IGNvbGxlY3Rpb24gYW5kIHRoZW4gY2FsbHMgdGhlIHJlYWwgbWFpbikuCi0gICAgICAgICAgICAgICAgIyBBbHNvIHVwZGF0ZSB0aGUgaW5jbHVkZWQgbW9kdWxlcyAoaWYgd2UncmUgY3JlYXRpbmcgYSBzdGFuZGFsb25lCi0gICAgICAgICAgICAgICAgIyBwcm9ncmFtKSBhbmQgdGhlIHBsaXN0Ci0gICAgICAgICAgICAgICAgcmVhbG1haW5wcm9ncmFtID0gbWFpbnByb2dyYW0KLSAgICAgICAgICAgICAgICBtYWlucHJvZ3JhbSA9ICdfX2FyZ3ZlbXVsYXRvcl8nICsgbWFpbnByb2dyYW0KLSAgICAgICAgICAgICAgICByZXNkaXJwYXRoID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCByZXNkaXIpCi0gICAgICAgICAgICAgICAgbWFpbnByb2dyYW1wYXRoID0gcGF0aGpvaW4ocmVzZGlycGF0aCwgbWFpbnByb2dyYW0pCi0gICAgICAgICAgICAgICAgbWFrZWRpcnMocmVzZGlycGF0aCkKLSAgICAgICAgICAgICAgICBvcGVuKG1haW5wcm9ncmFtcGF0aCwgInciKS53cml0ZShBUkdWX0VNVUxBVE9SICUgbG9jYWxzKCkpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVNb2R1bGVzLmFwcGVuZCgiYXJndmVtdWxhdG9yIikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlTW9kdWxlcy5hcHBlbmQoIm9zIikKLSAgICAgICAgICAgICAgICBpZiAiQ0ZCdW5kbGVEb2N1bWVudFR5cGVzIiBub3QgaW4gc2VsZi5wbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGlzdFsiQ0ZCdW5kbGVEb2N1bWVudFR5cGVzIl0gPSBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7ICJDRkJ1bmRsZVR5cGVPU1R5cGVzIiA6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKioqKiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNrIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJDRkJ1bmRsZVR5cGVSb2xlIjogIlZpZXdlciJ9XQotICAgICAgICAgICAgIyBXcml0ZSBib290c3RyYXAgc2NyaXB0Ci0gICAgICAgICAgICBleGVjdXRhYmxlID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLmV4ZWN1dGFibGUpCi0gICAgICAgICAgICBleGVjZGlyID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBzZWxmLmV4ZWNkaXIpCi0gICAgICAgICAgICBib290c3RyYXBwYXRoID0gcGF0aGpvaW4oZXhlY2Rpciwgc2VsZi5uYW1lKQotICAgICAgICAgICAgbWFrZWRpcnMoZXhlY2RpcikKLSAgICAgICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgICAgICAjIFhYWCB3ZSdyZSBzY3Jld2VkIHdoZW4gdGhlIGVuZCB1c2VyIGhhcyBkZWxldGVkCi0gICAgICAgICAgICAgICAgIyAvdXNyL2Jpbi9weXRob24KLSAgICAgICAgICAgICAgICBoYXNoYmFuZyA9ICIvdXNyL2Jpbi9weXRob24iCi0gICAgICAgICAgICBlbGlmIHNlbGYucHl0aG9uOgotICAgICAgICAgICAgICAgIGhhc2hiYW5nID0gc2VsZi5weXRob24KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaGFzaGJhbmcgPSBvcy5wYXRoLnJlYWxwYXRoKHN5cy5leGVjdXRhYmxlKQotICAgICAgICAgICAgc3RhbmRhbG9uZSA9IHNlbGYuc3RhbmRhbG9uZQotICAgICAgICAgICAgc2VtaV9zdGFuZGFsb25lID0gc2VsZi5zZW1pX3N0YW5kYWxvbmUKLSAgICAgICAgICAgIG9wZW4oYm9vdHN0cmFwcGF0aCwgInciKS53cml0ZShCT09UU1RSQVBfU0NSSVBUICUgbG9jYWxzKCkpCi0gICAgICAgICAgICBvcy5jaG1vZChib290c3RyYXBwYXRoLCAwbzc3NSkKLQotICAgICAgICBpZiBzZWxmLmljb25maWxlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWNvbmJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuaWNvbmZpbGUpCi0gICAgICAgICAgICBzZWxmLnBsaXN0LkNGQnVuZGxlSWNvbkZpbGUgPSBpY29uYmFzZQotICAgICAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKHNlbGYuaWNvbmZpbGUsIHBhdGhqb2luKHJlc2RpciwgaWNvbmJhc2UpKSkKLQotICAgIGRlZiBwb3N0UHJvY2VzcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgc2VsZi5hZGRQeXRob25Nb2R1bGVzKCkKLSAgICAgICAgaWYgc2VsZi5zdHJpcCBhbmQgbm90IHNlbGYuc3ltbGluazoKLSAgICAgICAgICAgIHNlbGYuc3RyaXBCaW5hcmllcygpCi0KLSAgICAgICAgaWYgc2VsZi5zeW1saW5rX2V4ZWMgYW5kIHNlbGYuZXhlY3V0YWJsZToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiU3ltbGlua2luZyBleGVjdXRhYmxlICVzIHRvICVzIiAlIChzZWxmLmV4ZWN1dGFibGUsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXhlY3BhdGgpLCAyKQotICAgICAgICAgICAgZHN0ID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCBzZWxmLmV4ZWNwYXRoKQotICAgICAgICAgICAgbWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKGRzdCkpCi0gICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYWJzcGF0aChzZWxmLmV4ZWN1dGFibGUpLCBkc3QpCi0KLSAgICAgICAgaWYgc2VsZi5taXNzaW5nTW9kdWxlcyBvciBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXM6Ci0gICAgICAgICAgICBzZWxmLnJlcG9ydE1pc3NpbmcoKQotCi0gICAgZGVmIGFkZFB5dGhvbkZyYW1ld29yayhzZWxmKToKLSAgICAgICAgIyBJZiB3ZSdyZSBidWlsZGluZyBhIHN0YW5kYWxvbmUgYXBwIHdpdGggUHl0aG9uLmZyYW1ld29yaywKLSAgICAgICAgIyBpbmNsdWRlIGEgbWluaW1hbCBzdWJzZXQgb2YgUHl0aG9uLmZyYW1ld29yaywgKnVubGVzcyoKLSAgICAgICAgIyBQeXRob24uZnJhbWV3b3JrIHdhcyBzcGVjaWZpZWQgbWFudWFsbHkgaW4gc2VsZi5saWJzLgotICAgICAgICBmb3IgbGliIGluIHNlbGYubGliczoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUobGliKSA9PSAiUHl0aG9uLmZyYW1ld29yayI6Ci0gICAgICAgICAgICAgICAgIyBhIFB5dGhvbi5mcmFtZXdvcmsgd2FzIHNwZWNpZmllZCBhcyBhIGxpYnJhcnkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZXdvcmtwYXRoID0gc3lzLmV4ZWNfcHJlZml4WzpzeXMuZXhlY19wcmVmaXguZmluZCgKLSAgICAgICAgICAgICJQeXRob24uZnJhbWV3b3JrIikgKyBsZW4oIlB5dGhvbi5mcmFtZXdvcmsiKV0KLQotICAgICAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCi0gICAgICAgIGZyYW1ld29ya3BhdGggPSBwYXRoam9pbihmcmFtZXdvcmtwYXRoLCAiVmVyc2lvbnMiLCB2ZXJzaW9uKQotICAgICAgICBkZXN0YmFzZSA9IHBhdGhqb2luKCJDb250ZW50cyIsICJGcmFtZXdvcmtzIiwgIlB5dGhvbi5mcmFtZXdvcmsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWZXJzaW9ucyIsIHZlcnNpb24pCi0gICAgICAgIGZvciBpdGVtIGluIFBZVEhPTkZSQU1FV09SS0dPT0RJRVM6Ci0gICAgICAgICAgICBzcmMgPSBwYXRoam9pbihmcmFtZXdvcmtwYXRoLCBpdGVtKQotICAgICAgICAgICAgZHN0ID0gcGF0aGpvaW4oZGVzdGJhc2UsIGl0ZW0pCi0gICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoc3JjLCBkc3QpKQotCi0gICAgZGVmIF9nZXRTaXRlQ29kZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGNvbXBpbGUoU0lURV9QWSAlIHsic2VtaV9zdGFuZGFsb25lIjogc2VsZi5zZW1pX3N0YW5kYWxvbmV9LAotICAgICAgICAgICAgICAgICAgICAgIjwtYnVuZGxlYnVpbGRlci5weS0+IiwgImV4ZWMiKQotCi0gICAgZGVmIGFkZFB5dGhvbk1vZHVsZXMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZSgiQWRkaW5nIFB5dGhvbiBtb2R1bGVzIiwgMSkKLQotICAgICAgICBpZiBVU0VfWklQSU1QT1JUOgotICAgICAgICAgICAgIyBDcmVhdGUgYSB6aXAgZmlsZSBjb250YWluaW5nIGFsbCBtb2R1bGVzIGFzIHB5Yy4KLSAgICAgICAgICAgIGltcG9ydCB6aXBmaWxlCi0gICAgICAgICAgICByZWxwYXRoID0gcGF0aGpvaW4oIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsIFpJUF9BUkNISVZFKQotICAgICAgICAgICAgYWJzcGF0aCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgcmVscGF0aCkKLSAgICAgICAgICAgIHpmID0gemlwZmlsZS5aaXBGaWxlKGFic3BhdGgsICJ3IiwgemlwZmlsZS5aSVBfREVGTEFURUQpCi0gICAgICAgICAgICBmb3IgbmFtZSwgY29kZSwgaXNwa2cgaW4gc2VsZi5weW1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJBZGRpbmcgUHl0aG9uIG1vZHVsZSAlcyIgJSBuYW1lLCAyKQotICAgICAgICAgICAgICAgIHBhdGgsIHB5YyA9IGdldFB5Y0RhdGEobmFtZSwgY29kZSwgaXNwa2cpCi0gICAgICAgICAgICAgICAgemYud3JpdGVzdHIocGF0aCwgcHljKQotICAgICAgICAgICAgemYuY2xvc2UoKQotICAgICAgICAgICAgIyBhZGQgc2l0ZS5weWMKLSAgICAgICAgICAgIHNpdGVwYXRoID0gcGF0aGpvaW4oc2VsZi5idW5kbGVwYXRoLCAiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwKLSAgICAgICAgICAgICAgICAgICAgInNpdGUiICsgUFlDX0VYVCkKLSAgICAgICAgICAgIHdyaXRlUHljKHNlbGYuX2dldFNpdGVDb2RlKCksIHNpdGVwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBDcmVhdGUgaW5kaXZpZHVhbCAucHljIGZpbGVzLgotICAgICAgICAgICAgZm9yIG5hbWUsIGNvZGUsIGlzcGtnIGluIHNlbGYucHltb2R1bGVzOgotICAgICAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgICAgICBuYW1lICs9ICIuX19pbml0X18iCi0gICAgICAgICAgICAgICAgcGF0aCA9IG5hbWUuc3BsaXQoIi4iKQotICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoam9pbigiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwgKnBhdGgpICsgUFlDX0VYVAotCi0gICAgICAgICAgICAgICAgaWYgaXNwa2c6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiQWRkaW5nIFB5dGhvbiBwYWNrYWdlICVzIiAlIHBhdGgsIDIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJBZGRpbmcgUHl0aG9uIG1vZHVsZSAlcyIgJSBwYXRoLCAyKQotCi0gICAgICAgICAgICAgICAgYWJzcGF0aCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICBtYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoYWJzcGF0aCkpCi0gICAgICAgICAgICAgICAgd3JpdGVQeWMoY29kZSwgYWJzcGF0aCkKLQotICAgIGRlZiBzdHJpcEJpbmFyaWVzKHNlbGYpOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoU1RSSVBfRVhFQyk6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIkVycm9yOiBjYW4ndCBzdHJpcCBiaW5hcmllczogbm8gc3RyaXAgcHJvZ3JhbSBhdCAiCi0gICAgICAgICAgICAgICAgIiVzIiAlIFNUUklQX0VYRUMsIDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbXBvcnQgc3RhdAotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJTdHJpcHBpbmcgYmluYXJpZXMiLCAxKQotICAgICAgICAgICAgZGVmIHdhbGsodG9wKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHRvcCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoam9pbih0b3AsIG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhbGsocGF0aCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZCA9IG9zLnN0YXQocGF0aClbc3RhdC5TVF9NT0RFXQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IChtb2QgJiAwbzEwMCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbHBhdGggPSBwYXRoW2xlbihzZWxmLmJ1bmRsZXBhdGgpOl0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiU3RyaXBwaW5nICVzIiAlIHJlbHBhdGgsIDIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmYsIG91dGYgPSBvcy5wb3BlbjQoIiVzIC1TIFwiJXNcIiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTVFJJUF9FWEVDLCBwYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dGYucmVhZCgpLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVzdWFsbHkgbm90IGEgcmVhbCBwcm9ibGVtLCBsaWtlIHdoZW4gd2UncmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyeWluZyB0byBzdHJpcCBhIHNjcmlwdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiUHJvYmxlbSBzdHJpcHBpbmcgJXM6IiAlIHJlbHBhdGgsIDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKG91dHB1dCwgMykKLSAgICAgICAgICAgIHdhbGsoc2VsZi5idW5kbGVwYXRoKQotCi0gICAgZGVmIGZpbmREZXBlbmRlbmNpZXMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZSgiRmluZGluZyBtb2R1bGUgZGVwZW5kZW5jaWVzIiwgMSkKLSAgICAgICAgaW1wb3J0IG1vZHVsZWZpbmRlcgotICAgICAgICBtZiA9IG1vZHVsZWZpbmRlci5Nb2R1bGVGaW5kZXIoZXhjbHVkZXM9c2VsZi5leGNsdWRlTW9kdWxlcykKLSAgICAgICAgaWYgVVNFX1pJUElNUE9SVDoKLSAgICAgICAgICAgICMgemlwaW1wb3J0IGltcG9ydHMgemxpYiwgbXVzdCBhZGQgaXQgbWFudWFsbHkKLSAgICAgICAgICAgIG1mLmltcG9ydF9ob29rKCJ6bGliIikKLSAgICAgICAgIyBtYW51YWxseSBhZGQgb3VyIG93biBzaXRlLnB5Ci0gICAgICAgIHNpdGUgPSBtZi5hZGRfbW9kdWxlKCJzaXRlIikKLSAgICAgICAgc2l0ZS5fX2NvZGVfXyA9IHNlbGYuX2dldFNpdGVDb2RlKCkKLSAgICAgICAgbWYuc2Nhbl9jb2RlKHNpdGUuX19jb2RlX18sIHNpdGUpCi0KLSAgICAgICAgIyB3YXJuaW5ncy5weSBnZXRzIGltcG9ydGVkIGltcGxpY2l0bHkgZnJvbSBDCi0gICAgICAgIG1mLmltcG9ydF9ob29rKCJ3YXJuaW5ncyIpCi0KLSAgICAgICAgaW5jbHVkZU1vZHVsZXMgPSBzZWxmLmluY2x1ZGVNb2R1bGVzWzpdCi0gICAgICAgIGZvciBuYW1lIGluIHNlbGYuaW5jbHVkZVBhY2thZ2VzOgotICAgICAgICAgICAgaW5jbHVkZU1vZHVsZXMuZXh0ZW5kKGxpc3QoZmluZFBhY2thZ2VDb250ZW50cyhuYW1lKS5rZXlzKCkpKQotICAgICAgICBmb3IgbmFtZSBpbiBpbmNsdWRlTW9kdWxlczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtZi5pbXBvcnRfaG9vayhuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYubWlzc2luZ01vZHVsZXMuYXBwZW5kKG5hbWUpCi0KLSAgICAgICAgbWYucnVuX3NjcmlwdChzZWxmLm1haW5wcm9ncmFtKQotICAgICAgICBtb2R1bGVzID0gbGlzdChtZi5tb2R1bGVzLml0ZW1zKCkpCi0gICAgICAgIG1vZHVsZXMuc29ydCgpCi0gICAgICAgIGZvciBuYW1lLCBtb2QgaW4gbW9kdWxlczoKLSAgICAgICAgICAgIHBhdGggPSBtb2QuX19maWxlX18KLSAgICAgICAgICAgIGlmIHBhdGggYW5kIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgICAgICMgc2tpcCB0aGUgc3RhbmRhcmQgbGlicmFyeQotICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aChMSUIpIGFuZCBub3QgcGF0aC5zdGFydHN3aXRoKFNJVEVfUEFDS0FHRVMpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgcGF0aCBhbmQgbW9kLl9fY29kZV9fIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBDIGV4dGVuc2lvbgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgICAgICAgICAgICAgIHBhdGhpdGVtcyA9IG5hbWUuc3BsaXQoIi4iKVs6LTFdICsgW2ZpbGVuYW1lXQotICAgICAgICAgICAgICAgIGRzdHBhdGggPSBwYXRoam9pbigqcGF0aGl0ZW1zKQotICAgICAgICAgICAgICAgIGlmIFVTRV9aSVBJTVBPUlQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgIT0gInpsaWIiOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWF0bHkgcGFjayBhbGwgZXh0ZW5zaW9uIG1vZHVsZXMgaW4gYSBzdWJkaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGV4Y2VwdCB6bGliLCBzaW5jZSBpdCdzIG5lY2Vzc2FyeSBmb3IgYm9vdHN0cmFwcGluZy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdHBhdGggPSBwYXRoam9pbigiRXh0ZW5zaW9uTW9kdWxlcyIsIGRzdHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICMgUHl0aG9uIG1vZHVsZXMgYXJlIHN0b3JlZCBpbiBhIFppcCBhcmNoaXZlLCBidXQgcHV0Ci0gICAgICAgICAgICAgICAgICAgICMgZXh0ZW5zaW9ucyBpbiBDb250ZW50cy9SZXNvdXJjZXMvLiBBZGQgYSB0aW55ICJsb2FkZXIiCi0gICAgICAgICAgICAgICAgICAgICMgcHJvZ3JhbSBpbiB0aGUgWmlwIGFyY2hpdmUuIER1ZSB0byBUaG9tYXMgSGVsbGVyLgotICAgICAgICAgICAgICAgICAgICBzb3VyY2UgPSBFWFRfTE9BREVSICUgeyJuYW1lIjogbmFtZSwgImZpbGVuYW1lIjogZHN0cGF0aH0KLSAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoc291cmNlLCAiPGR5bmxvYWRlciBmb3IgJXM+IiAlIG5hbWUsICJleGVjIikKLSAgICAgICAgICAgICAgICAgICAgbW9kLl9fY29kZV9fID0gY29kZQotICAgICAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChwYXRoLCBwYXRoam9pbigiQ29udGVudHMiLCAiUmVzb3VyY2VzIiwgZHN0cGF0aCkpKQotICAgICAgICAgICAgaWYgbW9kLl9fY29kZV9fIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlzcGtnID0gbW9kLl9fcGF0aF9fIGlzIG5vdCBOb25lCi0gICAgICAgICAgICAgICAgaWYgbm90IFVTRV9aSVBJTVBPUlQgb3IgbmFtZSAhPSAic2l0ZSI6Ci0gICAgICAgICAgICAgICAgICAgICMgT3VyIHNpdGUucHkgaXMgZG9pbmcgdGhlIGJvb3RzdHJhcHBpbmcsIHNvIHdlIG11c3QKLSAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIGEgcmVhbCAucHljIGZpbGUgaWYgVVNFX1pJUElNUE9SVCBpcyBUcnVlLgotICAgICAgICAgICAgICAgICAgICBzZWxmLnB5bW9kdWxlcy5hcHBlbmQoKG5hbWUsIG1vZC5fX2NvZGVfXywgaXNwa2cpKQotCi0gICAgICAgIGlmIGhhc2F0dHIobWYsICJhbnlfbWlzc2luZ19tYXliZSIpOgotICAgICAgICAgICAgbWlzc2luZywgbWF5YmUgPSBtZi5hbnlfbWlzc2luZ19tYXliZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtaXNzaW5nID0gbWYuYW55X21pc3NpbmcoKQotICAgICAgICAgICAgbWF5YmUgPSBbXQotICAgICAgICBzZWxmLm1pc3NpbmdNb2R1bGVzLmV4dGVuZChtaXNzaW5nKQotICAgICAgICBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXMuZXh0ZW5kKG1heWJlKQotCi0gICAgZGVmIHJlcG9ydE1pc3Npbmcoc2VsZik6Ci0gICAgICAgIG1pc3NpbmcgPSBbbmFtZSBmb3IgbmFtZSBpbiBzZWxmLm1pc3NpbmdNb2R1bGVzCi0gICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gTUFZTUlTU19NT0RVTEVTXQotICAgICAgICBpZiBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXM6Ci0gICAgICAgICAgICBtYXliZSA9IHNlbGYubWF5YmVNaXNzaW5nTW9kdWxlcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWF5YmUgPSBbbmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nIGlmICIuIiBpbiBuYW1lXQotICAgICAgICAgICAgbWlzc2luZyA9IFtuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcgaWYgIi4iIG5vdCBpbiBuYW1lXQotICAgICAgICBtaXNzaW5nLnNvcnQoKQotICAgICAgICBtYXliZS5zb3J0KCkKLSAgICAgICAgaWYgbWF5YmU6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQgdGhlIGZvbGxvd2luZyBzdWJtb2R1bGVzOiIsIDEpCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgICAoTm90ZSB0aGF0IHRoZXNlIGNvdWxkIGJlIGZhbHNlIGFsYXJtcyAtLSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIml0J3Mgbm90IGFsd2F5cyIsIDEpCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgICBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFwiZnJvbSBwYWNrYWdlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IHN1Ym1vZHVsZVwiICIsIDEpCi0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgICBhbmQgXCJmcm9tIHBhY2thZ2UgaW1wb3J0IG5hbWVcIikiLCAxKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbWF5YmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIgID8gIiArIG5hbWUsIDEpCi0gICAgICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIldhcm5pbmc6IGNvdWxkbid0IGZpbmQgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiIsIDEpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBtaXNzaW5nOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiICA/ICIgKyBuYW1lLCAxKQotCi0gICAgZGVmIHJlcG9ydChzZWxmKToKLSAgICAgICAgIyBYWFggc29tZXRoaW5nIGRlY2VudAotICAgICAgICBpbXBvcnQgcHByaW50Ci0gICAgICAgIHBwcmludC5wcHJpbnQoc2VsZi5fX2RpY3RfXykKLSAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgc2VsZi5yZXBvcnRNaXNzaW5nKCkKLQotIwotIyBVdGlsaXRpZXMuCi0jCi0KLVNVRkZJWEVTID0gW19zdWYgZm9yIF9zdWYsIF9tb2RlLCBfdHAgaW4gaW1wLmdldF9zdWZmaXhlcygpXQotaWRlbnRpZmllclJFID0gcmUuY29tcGlsZShyIltfYS16QS16XVtfYS16QS1aMC05XSokIikKLQotZGVmIGZpbmRQYWNrYWdlQ29udGVudHMobmFtZSwgc2VhcmNocGF0aD1Ob25lKToKLSAgICBoZWFkID0gbmFtZS5zcGxpdCgiLiIpWy0xXQotICAgIGlmIGlkZW50aWZpZXJSRS5tYXRjaChoZWFkKSBpcyBOb25lOgotICAgICAgICByZXR1cm4ge30KLSAgICB0cnk6Ci0gICAgICAgIGZwLCBwYXRoLCAoZXh0LCBtb2RlLCB0cCkgPSBpbXAuZmluZF9tb2R1bGUoaGVhZCwgc2VhcmNocGF0aCkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHJldHVybiB7fQotICAgIG1vZHVsZXMgPSB7bmFtZTogTm9uZX0KLSAgICBpZiB0cCA9PSBpbXAuUEtHX0RJUkVDVE9SWSBhbmQgcGF0aDoKLSAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKHBhdGgpCi0gICAgICAgIGZvciBzdWIgaW4gZmlsZXM6Ci0gICAgICAgICAgICBzdWIsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoc3ViKQotICAgICAgICAgICAgZnVsbG5hbWUgPSBuYW1lICsgIi4iICsgc3ViCi0gICAgICAgICAgICBpZiBzdWIgIT0gIl9faW5pdF9fIiBhbmQgZnVsbG5hbWUgbm90IGluIG1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgbW9kdWxlcy51cGRhdGUoZmluZFBhY2thZ2VDb250ZW50cyhmdWxsbmFtZSwgW3BhdGhdKSkKLSAgICByZXR1cm4gbW9kdWxlcwotCi1kZWYgd3JpdGVQeWMoY29kZSwgcGF0aCk6Ci0gICAgZiA9IG9wZW4ocGF0aCwgIndiIikKLSAgICBmLndyaXRlKE1BR0lDKQotICAgIGYud3JpdGUoIlwwIiAqIDQpICAjIGRvbid0IGJvdGhlciBhYm91dCBhIHRpbWUgc3RhbXAKLSAgICBtYXJzaGFsLmR1bXAoY29kZSwgZikKLSAgICBmLmNsb3NlKCkKLQotZGVmIGNvcHkoc3JjLCBkc3QsIG1rZGlycz0wKToKLSAgICAiIiJDb3B5IGEgZmlsZSBvciBhIGRpcmVjdG9yeS4iIiIKLSAgICBpZiBta2RpcnM6Ci0gICAgICAgIG1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShkc3QpKQotICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKLSAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz0xKQotICAgIGVsc2U6Ci0gICAgICAgIHNodXRpbC5jb3B5MihzcmMsIGRzdCkKLQotZGVmIGNvcHl0b2RpcihzcmMsIGRzdGRpcik6Ci0gICAgIiIiQ29weSBhIGZpbGUgb3IgYSBkaXJlY3RvcnkgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiIiIgotICAgIGRzdCA9IHBhdGhqb2luKGRzdGRpciwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQotICAgIGNvcHkoc3JjLCBkc3QpCi0KLWRlZiBtYWtlZGlycyhkaXIpOgotICAgICIiIk1ha2UgYWxsIGRpcmVjdG9yaWVzIGxlYWRpbmcgdXAgdG8gJ2RpcicgaW5jbHVkaW5nIHRoZSBsZWFmCi0gICAgZGlyZWN0b3J5LiBEb24ndCBtb2FuIGlmIGFueSBwYXRoIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIiIiCi0gICAgdHJ5OgotICAgICAgICBvcy5tYWtlZGlycyhkaXIpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgotICAgICAgICBpZiB3aHkuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgcmFpc2UKLQotZGVmIHN5bWxpbmsoc3JjLCBkc3QsIG1rZGlycz0wKToKLSAgICAiIiJDb3B5IGEgZmlsZSBvciBhIGRpcmVjdG9yeS4iIiIKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3JjKToKLSAgICAgICAgcmFpc2UgSU9FcnJvcigiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJyVzJyIgJSBzcmMpCi0gICAgaWYgbWtkaXJzOgotICAgICAgICBtYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoZHN0KSkKLSAgICBvcy5zeW1saW5rKG9zLnBhdGguYWJzcGF0aChzcmMpLCBkc3QpCi0KLWRlZiBwYXRoam9pbigqYXJncyk6Ci0gICAgIiIiU2FmZSB3cmFwcGVyIGZvciBvcy5wYXRoLmpvaW46IGFzc2VydHMgdGhhdCBhbGwgYnV0IHRoZSBmaXJzdAotICAgIGFyZ3VtZW50IGFyZSByZWxhdGl2ZSBwYXRocy4iIiIKLSAgICBmb3Igc2VnIGluIGFyZ3NbMTpdOgotICAgICAgICBhc3NlcnQgc2VnWzBdICE9ICIvIgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmFyZ3MpCi0KLQotY21kbGluZV9kb2MgPSAiIiJcCi1Vc2FnZToKLSAgcHl0aG9uIGJ1bmRsZWJ1aWxkZXIucHkgW29wdGlvbnNdIGNvbW1hbmQKLSAgcHl0aG9uIG15YnVpbGRzY3JpcHQucHkgW29wdGlvbnNdIGNvbW1hbmQKLQotQ29tbWFuZHM6Ci0gIGJ1aWxkICAgICAgYnVpbGQgdGhlIGFwcGxpY2F0aW9uCi0gIHJlcG9ydCAgICAgcHJpbnQgYSByZXBvcnQKLQotT3B0aW9uczoKLSAgLWIsIC0tYnVpbGRkaXI9RElSICAgICB0aGUgYnVpbGQgZGlyZWN0b3J5OyBkZWZhdWx0cyB0byAiYnVpbGQiCi0gIC1uLCAtLW5hbWU9TkFNRSAgICAgICAgYXBwbGljYXRpb24gbmFtZQotICAtciwgLS1yZXNvdXJjZT1GSUxFICAgIGV4dHJhIGZpbGUgb3IgZm9sZGVyIHRvIGJlIGNvcGllZCB0byBSZXNvdXJjZXMKLSAgLWYsIC0tZmlsZT1TUkM6RFNUICAgICBleHRyYSBmaWxlIG9yIGZvbGRlciB0byBiZSBjb3BpZWQgaW50byB0aGUgYnVuZGxlOwotICAgICAgICAgICAgICAgICAgICAgICAgIERTVCBtdXN0IGJlIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVuZGxlIHJvb3QKLSAgLWUsIC0tZXhlY3V0YWJsZT1GSUxFICB0aGUgZXhlY3V0YWJsZSB0byBiZSB1c2VkCi0gIC1tLCAtLW1haW5wcm9ncmFtPUZJTEUgdGhlIFB5dGhvbiBtYWluIHByb2dyYW0KLSAgLWEsIC0tYXJndiAgICAgICAgICAgICBhZGQgYSB3cmFwcGVyIG1haW4gcHJvZ3JhbSB0byBjcmVhdGUgc3lzLmFyZ3YKLSAgLXAsIC0tcGxpc3Q9RklMRSAgICAgICAucGxpc3QgZmlsZSAoZGVmYXVsdDogZ2VuZXJhdGUgb25lKQotICAgICAgLS1uaWI9TkFNRSAgICAgICAgIG1haW4gbmliIG5hbWUKLSAgLWMsIC0tY3JlYXRvcj1DQ0NDICAgICA0LWNoYXIgY3JlYXRvciBjb2RlIChkZWZhdWx0OiAnPz8/PycpCi0gICAgICAtLWljb25maWxlPUZJTEUgICAgZmlsZW5hbWUgb2YgdGhlIGljb24gKGFuIC5pY25zIGZpbGUpIHRvIGJlIHVzZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgRmluZGVyIGljb24KLSAgICAgIC0tYnVuZGxlLWlkPUlEICAgICB0aGUgQ0ZCdW5kbGVJZGVudGlmaWVyLCBpbiByZXZlcnNlLWRucyBmb3JtYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZWcuIG9yZy5weXRob24uQnVpbGRBcHBsZXQ7IHRoaXMgaXMgdXNlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJlZmVyZW5jZXMgZmlsZSBuYW1lKQotICAtbCwgLS1saW5rICAgICAgICAgICAgIHN5bWxpbmsgZmlsZXMvZm9sZGVyIGluc3RlYWQgb2YgY29weWluZyB0aGVtCi0gICAgICAtLWxpbmstZXhlYyAgICAgICAgc3ltbGluayB0aGUgZXhlY3V0YWJsZSBpbnN0ZWFkIG9mIGNvcHlpbmcgaXQKLSAgICAgIC0tc3RhbmRhbG9uZSAgICAgICBidWlsZCBhIHN0YW5kYWxvbmUgYXBwbGljYXRpb24sIHdoaWNoIGlzIGZ1bGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXBlbmRlbnQgb2YgYSBQeXRob24gaW5zdGFsbGF0aW9uCi0gICAgICAtLXNlbWktc3RhbmRhbG9uZSAgYnVpbGQgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLCB3aGljaCBkZXBlbmRzIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFsbGVkIFB5dGhvbiwgeWV0IGluY2x1ZGVzIGFsbCB0aGlyZC1wYXJ0eQotICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMuCi0gICAgICAtLXB5dGhvbj1GSUxFICAgICAgUHl0aG9uIHRvIHVzZSBpbiAjISBsaW5lIGluIHN0ZWFkIG9mIGN1cnJlbnQgUHl0aG9uCi0gICAgICAtLWxpYj1GSUxFICAgICAgICAgc2hhcmVkIGxpYnJhcnkgb3IgZnJhbWV3b3JrIHRvIGJlIGNvcGllZCBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1bmRsZQotICAteCwgLS1leGNsdWRlPU1PRFVMRSAgIGV4Y2x1ZGUgbW9kdWxlICh3aXRoIC0tKHNlbWktKXN0YW5kYWxvbmUpCi0gIC1pLCAtLWluY2x1ZGU9TU9EVUxFICAgaW5jbHVkZSBtb2R1bGUgKHdpdGggLS0oc2VtaS0pc3RhbmRhbG9uZSkKLSAgICAgIC0tcGFja2FnZT1QQUNLQUdFICBpbmNsdWRlIGEgd2hvbGUgcGFja2FnZSAod2l0aCAtLShzZW1pLSlzdGFuZGFsb25lKQotICAgICAgLS1zdHJpcCAgICAgICAgICAgIHN0cmlwIGJpbmFyaWVzIChyZW1vdmUgZGVidWcgaW5mbykKLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICBpbmNyZWFzZSB2ZXJib3NpdHkgbGV2ZWwKLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICBkZWNyZWFzZSB2ZXJib3NpdHkgbGV2ZWwKLSAgLWgsIC0taGVscCAgICAgICAgICAgICBwcmludCB0aGlzIG1lc3NhZ2UKLSIiIgotCi1kZWYgdXNhZ2UobXNnPU5vbmUpOgotICAgIGlmIG1zZzoKLSAgICAgICAgcHJpbnQobXNnKQotICAgIHByaW50KGNtZGxpbmVfZG9jKQotICAgIHN5cy5leGl0KDEpCi0KLWRlZiBtYWluKGJ1aWxkZXI9Tm9uZSk6Ci0gICAgaWYgYnVpbGRlciBpcyBOb25lOgotICAgICAgICBidWlsZGVyID0gQXBwQnVpbGRlcih2ZXJib3NpdHk9MSkKLQotICAgIHNob3J0b3B0cyA9ICJiOm46cjpmOmU6bTpjOnA6bHg6aTpodnFhIgotICAgIGxvbmdvcHRzID0gKCJidWlsZGRpcj0iLCAibmFtZT0iLCAicmVzb3VyY2U9IiwgImZpbGU9IiwgImV4ZWN1dGFibGU9IiwKLSAgICAgICAgIm1haW5wcm9ncmFtPSIsICJjcmVhdG9yPSIsICJuaWI9IiwgInBsaXN0PSIsICJsaW5rIiwKLSAgICAgICAgImxpbmstZXhlYyIsICJoZWxwIiwgInZlcmJvc2UiLCAicXVpZXQiLCAiYXJndiIsICJzdGFuZGFsb25lIiwKLSAgICAgICAgImV4Y2x1ZGU9IiwgImluY2x1ZGU9IiwgInBhY2thZ2U9IiwgInN0cmlwIiwgImljb25maWxlPSIsCi0gICAgICAgICJsaWI9IiwgInB5dGhvbj0iLCAic2VtaS1zdGFuZGFsb25lIiwgImJ1bmRsZS1pZD0iLCAiZGVzdHJvb3Q9IikKLQotICAgIHRyeToKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCBzaG9ydG9wdHMsIGxvbmdvcHRzKQotICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3I6Ci0gICAgICAgIHVzYWdlKCkKLQotICAgIGZvciBvcHQsIGFyZyBpbiBvcHRpb25zOgotICAgICAgICBpZiBvcHQgaW4gKCctYicsICctLWJ1aWxkZGlyJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmJ1aWxkZGlyID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLW4nLCAnLS1uYW1lJyk6Ci0gICAgICAgICAgICBidWlsZGVyLm5hbWUgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctcicsICctLXJlc291cmNlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLnJlc291cmNlcy5hcHBlbmQob3MucGF0aC5ub3JtcGF0aChhcmcpKQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1mJywgJy0tZmlsZScpOgotICAgICAgICAgICAgc3JjZHN0ID0gYXJnLnNwbGl0KCc6JykKLSAgICAgICAgICAgIGlmIGxlbihzcmNkc3QpICE9IDI6Ci0gICAgICAgICAgICAgICAgdXNhZ2UoIi1mIG9yIC0tZmlsZSBhcmd1bWVudCBtdXN0IGJlIHR3byBwYXRocywgIgotICAgICAgICAgICAgICAgICAgICAgICJzZXBhcmF0ZWQgYnkgYSBjb2xvbiIpCi0gICAgICAgICAgICBidWlsZGVyLmZpbGVzLmFwcGVuZChzcmNkc3QpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWUnLCAnLS1leGVjdXRhYmxlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLmV4ZWN1dGFibGUgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctbScsICctLW1haW5wcm9ncmFtJyk6Ci0gICAgICAgICAgICBidWlsZGVyLm1haW5wcm9ncmFtID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWEnLCAnLS1hcmd2Jyk6Ci0gICAgICAgICAgICBidWlsZGVyLmFyZ3ZfZW11bGF0aW9uID0gMQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1jJywgJy0tY3JlYXRvcicpOgotICAgICAgICAgICAgYnVpbGRlci5jcmVhdG9yID0gYXJnCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWJ1bmRsZS1pZCc6Ci0gICAgICAgICAgICBidWlsZGVyLmJ1bmRsZV9pZCA9IGFyZwotICAgICAgICBlbGlmIG9wdCA9PSAnLS1pY29uZmlsZSc6Ci0gICAgICAgICAgICBidWlsZGVyLmljb25maWxlID0gYXJnCi0gICAgICAgIGVsaWYgb3B0ID09ICItLWxpYiI6Ci0gICAgICAgICAgICBidWlsZGVyLmxpYnMuYXBwZW5kKG9zLnBhdGgubm9ybXBhdGgoYXJnKSkKLSAgICAgICAgZWxpZiBvcHQgPT0gIi0tbmliIjoKLSAgICAgICAgICAgIGJ1aWxkZXIubmlibmFtZSA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy1wJywgJy0tcGxpc3QnKToKLSAgICAgICAgICAgIGJ1aWxkZXIucGxpc3QgPSBQbGlzdC5mcm9tRmlsZShhcmcpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWwnLCAnLS1saW5rJyk6Ci0gICAgICAgICAgICBidWlsZGVyLnN5bWxpbmsgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWxpbmstZXhlYyc6Ci0gICAgICAgICAgICBidWlsZGVyLnN5bWxpbmtfZXhlYyA9IDEKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctaCcsICctLWhlbHAnKToKLSAgICAgICAgICAgIHVzYWdlKCkKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctdicsICctLXZlcmJvc2UnKToKLSAgICAgICAgICAgIGJ1aWxkZXIudmVyYm9zaXR5ICs9IDEKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctcScsICctLXF1aWV0Jyk6Ci0gICAgICAgICAgICBidWlsZGVyLnZlcmJvc2l0eSAtPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXN0YW5kYWxvbmUnOgotICAgICAgICAgICAgYnVpbGRlci5zdGFuZGFsb25lID0gMQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1zZW1pLXN0YW5kYWxvbmUnOgotICAgICAgICAgICAgYnVpbGRlci5zZW1pX3N0YW5kYWxvbmUgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXB5dGhvbic6Ci0gICAgICAgICAgICBidWlsZGVyLnB5dGhvbiA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy14JywgJy0tZXhjbHVkZScpOgotICAgICAgICAgICAgYnVpbGRlci5leGNsdWRlTW9kdWxlcy5hcHBlbmQoYXJnKQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1pJywgJy0taW5jbHVkZScpOgotICAgICAgICAgICAgYnVpbGRlci5pbmNsdWRlTW9kdWxlcy5hcHBlbmQoYXJnKQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1wYWNrYWdlJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuaW5jbHVkZVBhY2thZ2VzLmFwcGVuZChhcmcpCi0gICAgICAgIGVsaWYgb3B0ID09ICctLXN0cmlwJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuc3RyaXAgPSAxCi0gICAgICAgIGVsaWYgb3B0ID09ICctLWRlc3Ryb290JzoKLSAgICAgICAgICAgIGJ1aWxkZXIuZGVzdHJvb3QgPSBhcmcKLQotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICB1c2FnZSgiTXVzdCBzcGVjaWZ5IG9uZSBjb21tYW5kICgnYnVpbGQnLCAncmVwb3J0JyBvciAnaGVscCcpIikKLSAgICBjb21tYW5kID0gYXJnc1swXQotCi0gICAgaWYgY29tbWFuZCA9PSAiYnVpbGQiOgotICAgICAgICBidWlsZGVyLnNldHVwKCkKLSAgICAgICAgYnVpbGRlci5idWlsZCgpCi0gICAgZWxpZiBjb21tYW5kID09ICJyZXBvcnQiOgotICAgICAgICBidWlsZGVyLnNldHVwKCkKLSAgICAgICAgYnVpbGRlci5yZXBvcnQoKQotICAgIGVsaWYgY29tbWFuZCA9PSAiaGVscCI6Ci0gICAgICAgIHVzYWdlKCkKLSAgICBlbHNlOgotICAgICAgICB1c2FnZSgiVW5rbm93biBjb21tYW5kICclcyciICUgY29tbWFuZCkKLQotCi1kZWYgYnVpbGRhcHAoKiprd2FyZ3MpOgotICAgIGJ1aWxkZXIgPSBBcHBCdWlsZGVyKCoqa3dhcmdzKQotICAgIG1haW4oYnVpbGRlcikKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGUxOWZjMDAuLjlhOGMxNTkgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQzLDYgKzQzLDExIEBACiBIR1ZFUlNJT049CUBIR1ZFUlNJT05ACiBIR1RBRz0JCUBIR1RBR0AKIEhHQlJBTkNIPQlASEdCUkFOQ0hACitQR09fUFJPRl9HRU5fRkxBRz1AUEdPX1BST0ZfR0VOX0ZMQUdACitQR09fUFJPRl9VU0VfRkxBRz1AUEdPX1BST0ZfVVNFX0ZMQUdACitMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAorTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAorTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTIyNiw4ICsyMzEsNyBAQAogVENMVEtfTElCUz0JQFRDTFRLX0xJQlNACiAKICMgVGhlIHRhc2sgdG8gcnVuIHdoaWxlIGluc3RydW1lbnQgd2hlbiBidWlsZGluZyB0aGUgcHJvZmlsZS1vcHQgdGFyZ2V0Ci1QUk9GSUxFX1RBU0s9CSQoc3JjZGlyKS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkgLW4gMiAtLXdpdGgtZ2MgLS13aXRoLXN5c2NoZWNrCi0jUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvTGliL3Rlc3QvcmVncnRlc3QucHkKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0ID4vZGV2L251bGwgMj4mMQogCiAjIHJlcG9ydCBmaWxlcyBmb3IgZ2NvdiAvIGxjb3YgY292ZXJhZ2UgcmVwb3J0CiBDT1ZFUkFHRV9JTkZPPQkkKGFic19idWlsZGRpcikvY292ZXJhZ2UuaW5mbwpAQCAtMzI4LDYgKzMzMiwxMyBAQAogUEdFTk9CSlM9CSQoUE9CSlMpICQoUEdPQkpTKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBvcGNvZGUuaCBnZW5lcmF0aW9uCitPUENPREVfSF9ESVI9IAkkKHNyY2RpcikvSW5jbHVkZQorT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQorT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAorT1BDT0RFX0hfR0VOPQlAT1BDT0RFSEdFTkAgICQoT1BDT0RFX0hfU0NSSVBUKSAkKHNyY2RpcikvTGliL29wY29kZS5weSAkKE9QQ09ERV9IKQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKIEFTVF9IPQkJJChBU1RfSF9ESVIpL1B5dGhvbi1hc3QuaApAQCAtMzgyLDYgKzM5Myw3IEBACiAJCVB5dGhvbi9weWN0eXBlLm8gXAogCQlQeXRob24vcHlmcGUubyBcCiAJCVB5dGhvbi9weWhhc2gubyBcCisJCVB5dGhvbi9weWxpZmVjeWNsZS5vIFwKIAkJUHl0aG9uL3B5bWF0aC5vIFwKIAkJUHl0aG9uL3B5c3RhdGUubyBcCiAJCVB5dGhvbi9weXRob25ydW4ubyBcCkBAIC0zOTQsNiArNDA2LDcgQEAKIAkJUHl0aG9uL2dldG9wdC5vIFwKIAkJUHl0aG9uL3B5c3RyY21wLm8gXAogCQlQeXRob24vcHlzdHJ0b2QubyBcCisJCVB5dGhvbi9weXN0cmhleC5vIFwKIAkJUHl0aG9uL2R0b2EubyBcCiAJCVB5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5vIFwKIAkJUHl0aG9uL2ZpbGV1dGlscy5vIFwKQEAgLTQyOCw2ICs0NDEsNyBAQAogCQlPYmplY3RzL2xpc3RvYmplY3QubyBcCiAJCU9iamVjdHMvbG9uZ29iamVjdC5vIFwKIAkJT2JqZWN0cy9kaWN0b2JqZWN0Lm8gXAorCQlPYmplY3RzL29kaWN0b2JqZWN0Lm8gXAogCQlPYmplY3RzL21lbW9yeW9iamVjdC5vIFwKIAkJT2JqZWN0cy9tZXRob2RvYmplY3QubyBcCiAJCU9iamVjdHMvbW9kdWxlb2JqZWN0Lm8gXApAQCAtNDY1LDI5ICs0NzksNDAgQEAKIAogIyBEZWZhdWx0IHRhcmdldAogYWxsOgkJYnVpbGRfYWxsCi1idWlsZF9hbGw6CSQoQlVJTERQWVRIT04pIG9sZHNoYXJlZG1vZHMgc2hhcmVkbW9kcyBnZGJob29rcyBNb2R1bGVzL190ZXN0ZW1iZWQgcHl0aG9uLWNvbmZpZworYnVpbGRfYWxsOgkkKEJVSUxEUFlUSE9OKSBvbGRzaGFyZWRtb2RzIHNoYXJlZG1vZHMgZ2RiaG9va3MgUHJvZ3JhbXMvX3Rlc3RlbWJlZCBweXRob24tY29uZmlnCiAKLSMgQ29tcGlsZSBhIGJpbmFyeSB3aXRoIGdjYyBwcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb24uCisjIENvbXBpbGUgYSBiaW5hcnkgd2l0aCBwcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb24uCiBwcm9maWxlLW9wdDoKKwlAaWYgWyAkKExMVk1fUFJPRl9FUlIpID09IHllcyBdOyB0aGVuIFwKKwkJZWNobyAiRXJyb3I6IENhbm5vdCBwZXJmb3JtIFBHTyBidWlsZCBiZWNhdXNlIGxsdm0tcHJvZmRhdGEgd2FzIG5vdCBmb3VuZCBpbiBQQVRIIiA7XAorCQllY2hvICJQbGVhc2UgYWRkIGl0IHRvIFBBVEggYW5kIHJ1biAuL2NvbmZpZ3VyZSBhZ2FpbiIgO1wKKwkJZXhpdCAxO1wKKwlmaQogCUBlY2hvICJCdWlsZGluZyB3aXRoIHN1cHBvcnQgZm9yIHByb2ZpbGUgZ2VuZXJhdGlvbjoiCiAJJChNQUtFKSBjbGVhbgotCSQoTUFLRSkgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGUKLQlAZWNobyAiUnVubmluZyBiZW5jaG1hcmsgdG8gZ2VuZXJhdGUgcHJvZmlsZSBkYXRhOiIKIAkkKE1BS0UpIHByb2ZpbGUtcmVtb3ZhbAorCSQoTUFLRSkgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGUKKwkkKE1BS0UpIHByb2ZpbGUtcmVtb3ZhbAorCUBlY2hvICJSdW5uaW5nIGNvZGUgdG8gZ2VuZXJhdGUgcHJvZmlsZSBkYXRhICh0aGlzIGNhbiB0YWtlIGEgd2hpbGUpOiIKIAkkKE1BS0UpIHJ1bl9wcm9maWxlX3Rhc2sKKwkkKE1BS0UpIGJ1aWxkX2FsbF9tZXJnZV9wcm9maWxlCiAJQGVjaG8gIlJlYnVpbGRpbmcgd2l0aCBwcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb25zOiIKIAkkKE1BS0UpIGNsZWFuCiAJJChNQUtFKSBidWlsZF9hbGxfdXNlX3Byb2ZpbGUKKwkkKE1BS0UpIHByb2ZpbGUtcmVtb3ZhbAogCiBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKLQkkKE1BS0UpIGFsbCBDRkxBR1NfTk9ESVNUPSIkKENGTEFHUykgLWZwcm9maWxlLWdlbmVyYXRlIiBMREZMQUdTPSItZnByb2ZpbGUtZ2VuZXJhdGUiIExJQlM9IiQoTElCUykgLWxnY292IgorCSQoTUFLRSkgYWxsIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSIgTERGTEFHUz0iJChMREZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSIgTElCUz0iJChMSUJTKSIKIAogcnVuX3Byb2ZpbGVfdGFzazoKIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAotCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKQorCSQoTExWTV9QUk9GX0ZJTEUpICQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCisKK2J1aWxkX2FsbF9tZXJnZV9wcm9maWxlOgorCSQoTExWTV9QUk9GX01FUkdFUikKIAogYnVpbGRfYWxsX3VzZV9wcm9maWxlOgotCSQoTUFLRSkgYWxsIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtdXNlIC1mcHJvZmlsZS1jb3JyZWN0aW9uIgorCSQoTUFLRSkgYWxsIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKFBHT19QUk9GX1VTRV9GTEFHKSIKIAogIyBDb21waWxlIGFuZCBydW4gd2l0aCBnY292CiAuUEhPTlk9Y292ZXJhZ2UgY292ZXJhZ2UtbGNvdiBjb3ZlcmFnZS1yZXBvcnQKQEAgLTUyNCw2ICs1NDksNyBAQAogCTogIyBmb3JjZSByZWJ1aWxkaW5nIG9mIHBhcnNlciBhbmQgaW1wb3J0bGliCiAJQHRvdWNoICQoR1JBTU1BUl9JTlBVVCkKIAlAdG91Y2ggJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQorCUB0b3VjaCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CiAJOiAjIGJ1aWxkIHdpdGggY292ZXJhZ2UgaW5mbwogCSQoTUFLRSkgY292ZXJhZ2UKIAk6ICMgcnVuIHRlc3RzLCBpZ25vcmUgZmFpbHVyZXMKQEAgLTUzOCw4ICs1NjQsOCBAQAogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC4vVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtLW1ha2UKIAogIyBCdWlsZCB0aGUgaW50ZXJwcmV0ZXIKLSQoQlVJTERQWVRIT04pOglNb2R1bGVzL3B5dGhvbi5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKLQkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIE1vZHVsZXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKKyQoQlVJTERQWVRIT04pOglQcm9ncmFtcy9weXRob24ubyAkKExJQlJBUlkpICQoTERMSUJSQVJZKSAkKFBZM0xJQlJBUlkpCisJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBQcm9ncmFtcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCiBwbGF0Zm9ybTogJChCVUlMRFBZVEhPTikgcHlidWlsZGRpci50eHQKIAkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQpAQCAtNjc0LDE4ICs3MDAsMjMgQEAKIAkJZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iOyBcCiAJZmkKIAotTW9kdWxlcy9fdGVzdGVtYmVkOiBNb2R1bGVzL190ZXN0ZW1iZWQubyAkKExJQlJBUlkpICQoTERMSUJSQVJZKSAkKFBZM0xJQlJBUlkpCi0JJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBNb2R1bGVzL190ZXN0ZW1iZWQubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorUHJvZ3JhbXMvX3Rlc3RlbWJlZDogUHJvZ3JhbXMvX3Rlc3RlbWJlZC5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKKwkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIFByb2dyYW1zL190ZXN0ZW1iZWQubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEltcG9ydGxpYgogCi1Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliOiBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCi0JJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm86IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgTWFrZWZpbGUKIAotUHl0aG9uL2ltcG9ydGxpYi5oOiAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwotCSQoTUFLRSkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgotCS4vTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYiBcCitQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYjogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKKwkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKKworUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oOiAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCisJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCisJCSQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgorCS4vUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAogCQkkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9pbXBvcnRsaWIuaAogCiAKQEAgLTcxMywxMSArNzQ0LDExIEBACiAJCS1EVlBBVEg9JyIkKFZQQVRIKSInIFwKIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCiAKLU1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCi0JJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCitQcm9ncmFtcy9weXRob24ubzogJChzcmNkaXIpL1Byb2dyYW1zL3B5dGhvbi5jCisJJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYwogCi1Nb2R1bGVzL190ZXN0ZW1iZWQubzogJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCi0JJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL190ZXN0ZW1iZWQuYworUHJvZ3JhbXMvX3Rlc3RlbWJlZC5vOiAkKHNyY2RpcikvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCisJJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKIAogTW9kdWxlcy9fc3JlLm86ICQoc3JjZGlyKS9Nb2R1bGVzL19zcmUuYyAkKHNyY2RpcikvTW9kdWxlcy9zcmUuaCAkKHNyY2RpcikvTW9kdWxlcy9zcmVfY29uc3RhbnRzLmggJChzcmNkaXIpL01vZHVsZXMvc3JlX2xpYi5oCiAKQEAgLTc0NiwxNSArNzc3LDEzIEBACiAKICQoSU9fT0JKUyk6ICQoSU9fSCkKIAotJChHUkFNTUFSX0gpOiAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTlNSQ1MpCiskKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQogCQlAJChNS0RJUl9QKSBJbmNsdWRlCi0JCSQoTUFLRSkgJChQR0VOKQogCQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotJChHUkFNTUFSX0MpOiAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQotCQkkKE1BS0UpICQoR1JBTU1BUl9IKQorJChHUkFNTUFSX0MpOiAkKEdSQU1NQVJfSCkKIAkJdG91Y2ggJChHUkFNTUFSX0MpCiAKLSQoUEdFTik6CSQoUEdFTk9CSlMpCiskKFBHRU4pOiAkKFBHRU5PQkpTKQogCQkkKENDKSAkKE9QVCkgJChQWV9MREZMQUdTKSAkKFBHRU5PQkpTKSAkKExJQlMpIC1vICQoUEdFTikKIAogUGFyc2VyL2dyYW1tYXIubzoJJChzcmNkaXIpL1BhcnNlci9ncmFtbWFyLmMgXApAQCAtNzc2LDYgKzgwNSw5IEBACiAJJChNS0RJUl9QKSAkKEFTVF9DX0RJUikKIAkkKEFTRExHRU4pIC1jICQoQVNUX0NfRElSKSAkKEFTVF9BU0RMKQogCiskKE9QQ09ERV9IKTogJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSF9TQ1JJUFQpCisJJChPUENPREVfSF9HRU4pCisKIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKIAogUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtODMwLDcgKzg2Miw3IEBACiAKIFB5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgJChzcmNkaXIpL1B5dGhvbi9jZXZhbF9naWwuaAogCi1QeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaAorUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmggUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKIE9iamVjdHMvdHlwZW9iamVjdC5vOiBPYmplY3RzL3R5cGVzbG90cy5pbmMKIE9iamVjdHMvdHlwZXNsb3RzLmluYzogJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5CkBAIC04ODcsNyArOTE5LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvbm9kZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb2JqZWN0LmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vYmppbXBsLmggXAotCQkkKHNyY2RpcikvSW5jbHVkZS9vcGNvZGUuaCBcCisJCSQoT1BDT0RFX0gpIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXApAQCAtOTAwLDYgKzkzMiw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZXJyb3JzLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWZwZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHloYXNoLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWxpZmVjeWNsZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHltYXRoLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWdldG9wdC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHltYWNyby5oIFwKQEAgLTkwOCw2ICs5NDEsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0YXRlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cmNtcC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJ0b2QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RyaGV4LmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXRob25ydW4uaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhyZWFkLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXRpbWUuaCBcCkBAIC05MjgsNyArOTYyLDcgQEAKIAkJJChQQVJTRVJfSEVBREVSUykgXAogCQkkKEFTVF9IKQogCi0kKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBNb2R1bGVzL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQorJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTEzMSw5ICsxMTY1LDE0IEBACiAJCXRlc3QvYXVkaW9kYXRhIFwKIAkJdGVzdC9jYXBhdGggdGVzdC9kYXRhIFwKIAkJdGVzdC9jamtlbmNvZGluZ3MgdGVzdC9kZWNpbWFsdGVzdGRhdGEgdGVzdC94bWx0ZXN0ZGF0YSBcCisJCXRlc3QvZWludHJkYXRhIFwKIAkJdGVzdC9pbWdoZHJkYXRhIFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgdGVzdC9zdXBwb3J0IFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKKwkJdGVzdC90ZXN0X2ltcG9ydCBcCisJCXRlc3QvdGVzdF9pbXBvcnQvZGF0YSBcCisJCXRlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzIFwKKwkJdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnIFwKIAkJdGVzdC90ZXN0X2ltcG9ydGxpYi9uYW1lc3BhY2VfcGtncyBcCiAJCXRlc3QvdGVzdF9pbXBvcnRsaWIvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucyBcCiAJCXRlc3QvdGVzdF9pbXBvcnRsaWIvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28gXApAQCAtMTI0Niw3ICsxMjg1LDEyIEBACiAJCS1kICQoTElCREVTVCkgLWYgXAogCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKIAkJJChERVNURElSKSQoTElCREVTVCkKLQktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtT08gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCS1kICQoTElCREVTVCkgLWYgXAorCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKKwkJJChERVNURElSKSQoTElCREVTVCkKKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKQEAgLTEyNTUsNiArMTI5OSwxMCBAQAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKKwkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CkBAIC0xMzM3LDcgKzEzODUsNyBAQAogCQlmaTsgXAogCWZpCiAJJChJTlNUQUxMX0RBVEEpIE1vZHVsZXMvY29uZmlnLmMgJChERVNURElSKSQoTElCUEwpL2NvbmZpZy5jCi0JJChJTlNUQUxMX0RBVEEpIE1vZHVsZXMvcHl0aG9uLm8gJChERVNURElSKSQoTElCUEwpL3B5dGhvbi5vCisJJChJTlNUQUxMX0RBVEEpIFByb2dyYW1zL3B5dGhvbi5vICQoREVTVERJUikkKExJQlBMKS9weXRob24ubwogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvTW9kdWxlcy9jb25maWcuYy5pbiAkKERFU1RESVIpJChMSUJQTCkvY29uZmlnLmMuaW4KIAkkKElOU1RBTExfREFUQSkgTWFrZWZpbGUgJChERVNURElSKSQoTElCUEwpL01ha2VmaWxlCiAJJChJTlNUQUxMX0RBVEEpIE1vZHVsZXMvU2V0dXAgJChERVNURElSKSQoTElCUEwpL1NldHVwCkBAIC0xMzQ4LDEwICsxMzk2LDEwIEBACiAJJChJTlNUQUxMX1NDUklQVCkgJChzcmNkaXIpL2luc3RhbGwtc2ggJChERVNURElSKSQoTElCUEwpL2luc3RhbGwtc2gKIAkkKElOU1RBTExfU0NSSVBUKSBweXRob24tY29uZmlnLnB5ICQoREVTVERJUikkKExJQlBMKS9weXRob24tY29uZmlnLnB5CiAJJChJTlNUQUxMX1NDUklQVCkgcHl0aG9uLWNvbmZpZyAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoTERWRVJTSU9OKS1jb25maWcKLQlAaWYgWyAtcyBNb2R1bGVzL3B5dGhvbi5leHAgLWEgXAorCUBpZiBbIC1zIFByb2dyYW1zL3B5dGhvbi5leHAgLWEgXAogCQkiYGVjaG8gJChNQUNIREVQKSB8IHNlZCAncy9eXCguLi5cKS4qL1wxLydgIiA9ICJhaXgiIF07IHRoZW4gXAogCQllY2hvOyBlY2hvICJJbnN0YWxsaW5nIHN1cHBvcnQgZmlsZXMgZm9yIGJ1aWxkaW5nIHNoYXJlZCBleHRlbnNpb24gbW9kdWxlcyBvbiBBSVg6IjsgXAotCQkkKElOU1RBTExfREFUQSkgTW9kdWxlcy9weXRob24uZXhwCQlcCisJCSQoSU5TVEFMTF9EQVRBKSBQcm9ncmFtcy9weXRob24uZXhwCQlcCiAJCQkJJChERVNURElSKSQoTElCUEwpL3B5dGhvbi5leHA7CQlcCiAJCWVjaG87IGVjaG8gIiQoTElCUEwpL3B5dGhvbi5leHAiOwkJXAogCQkkKElOU1RBTExfU0NSSVBUKSAkKHNyY2RpcikvTW9kdWxlcy9tYWtleHBfYWl4CVwKQEAgLTE1MzQsMTAgKzE1ODIsMTIgQEAKIAlmaW5kIGJ1aWxkIC1uYW1lICcqLnB5W2NvXScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKIAktcm0gLWYgcHlidWlsZGRpci50eHQKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQotCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgorCS1ybSAtZiBQcm9ncmFtcy9fdGVzdGVtYmVkIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCisJLXJtIC1yZiBidWlsZAogCiBwcm9maWxlLXJlbW92YWw6CiAJZmluZCAuIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JworCWZpbmQgLiAtbmFtZSAnKi5wcm9mY2xhbmc/JyAtZXhlYyBybSAtZiB7fSAnOycKIAlybSAtZiAkKENPVkVSQUdFX0lORk8pCiAJcm0gLXJmICQoQ09WRVJBR0VfUkVQT1JUKQogCkBAIC0xNTU4LDcgKzE2MDgsNyBAQAogCWRvbmUKIAktcm0gLWYgY29yZSBNYWtlZmlsZSBNYWtlZmlsZS5wcmUgY29uZmlnLnN0YXR1cyBcCiAJCU1vZHVsZXMvU2V0dXAgTW9kdWxlcy9TZXR1cC5sb2NhbCBNb2R1bGVzL1NldHVwLmNvbmZpZyBcCi0JCU1vZHVsZXMvbGRfc29fYWl4IE1vZHVsZXMvcHl0aG9uLmV4cCBNaXNjL3B5dGhvbi5wYworCQlNb2R1bGVzL2xkX3NvX2FpeCBQcm9ncmFtcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCiAJLXJtIC1mIHB5dGhvbiotZ2RiLnB5CiAJZmluZCAkKHNyY2RpcikvW2EtekEtWl0qICcoJyAtbmFtZSAnKi5mZGMnIC1vIC1uYW1lICcqficgXAogCQkJCSAgICAgLW8gLW5hbWUgJ1tALCNdKicgLW8gLW5hbWUgJyoub2xkJyBcCkBAIC0xNjA1LDcgKzE2NTUsNyBAQAogCQktbyAtcHJpbnQKIAogIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi1wYXRjaGNoZWNrOgorcGF0Y2hjaGVjazogYWxsCiAJJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQogCiAjIERlcGVuZGVuY2llcwpkaWZmIC0tZ2l0IGEvTWlzYy9BQ0tTIGIvTWlzYy9BQ0tTCmluZGV4IDZiNGFmNDQuLjY5OTljMDkgMTAwNjQ0Ci0tLSBhL01pc2MvQUNLUworKysgYi9NaXNjL0FDS1MKQEAgLTQ2LDYgKzQ2LDcgQEAKIEVyaWsgQW5kZXJzw6luCiBPbGl2ZXIgQW5kcmljaAogUm9zcyBBbmRydXMKK0ZhYnJpY2UgQW5lY2hlCiBKdWFuY2FybG8gQcOxZXoKIENocmlzIEFuZ2VsaWNvCiBKw6lyw6lteSBBbmdlcgpAQCAtNzEsNiArNzIsNyBAQAogU3RpZyBCYWtrZW4KIEdyZWcgQmFsbAogTHVpZ2kgQmFsbGFiaW8KK1Rob21hcyBCYWxsaW5nZXIKIEplZmYgQmFsb2doCiBNYW51ZWwgQmFsc2VyYQogTWF0dCBCYW5keQpAQCAtODksNiArOTEsNyBAQAogQ2VzYXIgRWR1YXJkbyBCYXJyb3MKIERlcyBCYXJyeQogVWxmIEJhcnRlbHQKK0NhbXBiZWxsIEJhcnRvbgogRG9uIEJhc2hmb3JkCiBQaW9yIEJhc3RpZGEKIE5pY2sgQmFzdGluCkBAIC0xMDEsNiArMTA0LDcgQEAKIERvbmFsZCBCZWF1ZHJ5CiBEYXZpZCBCZWF6bGV5CiBKb2huIEJlY2sKK0luZ29sZiBCZWNrZXIKIE5lYWwgQmVja2VyCiBSb2JpbiBCZWNrZXIKIFRvcnN0ZW4gQmVja2VyCkBAIC0xNTIsNiArMTU2LDcgQEAKIEdhd2FpbiBCb2x0b24KIEZvcmVzdCBCb25kCiBHcmVnb3J5IEJvbmQKK03DqWTDqXJpYyBCb3F1aWVuCiBNYXRpYXMgQm9yZGVzZQogSm9uYXMgQm9yZ3N0csO2bQogSnVyamVuIEJvcwpAQCAtMjMxLDEwICsyMzYsMTIgQEAKIEpvaG4gQ2hhbmRsZXIKIEh5ZS1TaGlrIENoYW5nCiBKZWZmcmV5IENoYW5nCitHYXZpbiBDaGFwcGVsbAogR29kZWZyb2lkIENoYXBlbGxlCiBCcmFkIENoYXBtYW4KIEdyZWcgQ2hhcG1hbgogTWl0Y2ggQ2hhcG1hbgorTWF0dCBDaGFwdXQKIFlvZ2VzaCBDaGF1ZGhhcmkKIERhdmlkIENoYXVtCiBOaWNvbGFzIENoYXV2YXQKQEAgLTQ3NSw2ICs0ODIsNyBAQAogWGF2aWVyIGRlIEdheWUKIEhhcnJ5IEhlbnJ5IEdlYmVsCiBNYXJpdXMgR2VkbWluYXMKK0phbi1QaGlsaXAgR2VocmNrZQogVGhvbWFzIEdlbGxla3VtCiBHYWJyaWVsIEdlbmVsbGluYQogQ2hyaXN0b3MgR2Vvcmdpb3UKQEAgLTQ4Nyw2ICs0OTUsNyBAQAogTWljaGFlbCBHaWxmaXgKIEp1bGlhbiBHaW5kaQogWWFubmljayBHaW5ncmFzCitOZWlsIEdpcmRoYXIKIE1hdHQgR2l1Y2EKIFdpbSBHbGVubgogTWljaGFlbCBHb2RlcmJhdWVyCkBAIC01MDEsNiArNTEwLDcgQEAKIERhdmlkIEdvb2RnZXIKIEhhbnMgZGUgR3JhYWZmCiBUaW0gR3JhaGFtCitLaW0gR3LDpHNtYW4KIE5hdGhhbmllbCBHcmF5CiBFZGR5IERlIEdyZWVmCiBHcmFudCBHcmlmZmluCkBAIC01NzUsNiArNTg1LDcgQEAKIFdvdXRlciB2YW4gSGV5c3QKIEtlbHNleSBIaWdodG93ZXIKIEphc29uIEhpbGRlYnJhbmQKK0Fhcm9uIEhpbGwKIFJpY2hpZSBIaW5kbGUKIEtvbnJhZCBIaW5zZW4KIERhdmlkIEhvYmxleQpAQCAtNjEyLDYgKzYyMyw3IEBACiBLZW4gSG93YXJkCiBCcmFkIEhvd2VzCiBNaWtlIEhveQorQmVuIEhveXQKIENoaXUtSHNpYW5nIEhzdQogQ2hpaC1IYW8gSHVhbmcKIENocmlzdGlhbiBIdWRvbgpAQCAtNjMyLDYgKzY0NCw3IEBACiBBYXJvbiBJbGVzCiBMYXJzIEltbWlzY2gKIEJvYmJ5IEltcG9sbG9uaWEKK05hb2tpIEluYWRhCiBNZWFkb3IgSW5nZQogUGV0ZXIgSW5nZWJyZXRzb24KIFRvbnkgSW5ncmFsZGkKQEAgLTY1NCwxMyArNjY3LDE2IEBACiBUaG9tYXMgSmFyb3NjaAogSnVoYW5hIEphdWhpYWluZW4KIFJhamFnb3BhbGFzYXJtYSBKYXlha3Jpc2huYW4KK0RldmluIEplYW5waWVycmUKIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsKIEp1bGllbiBKZWhhbm5ldAorTXVoYW1tYWQgSmVoYW56ZWIKIERyZXcgSmVua2lucwogRmxlbW1pbmcgS2rDpnIgSmVuc2VuCiBQaGlsaXAgSC4gSmVuc2VuCiBQaGlsaXAgSmVudmV5CiBNdW5TaWMgSmVvbmcKK0pvZSBKZXZuaWsKIENocmlzIEplcmRvbmVrCiBKaW0gSmV3ZXR0CiBQZWRybyBEaWF6IEppbWVuZXoKQEAgLTY3NSw2ICs2OTEsNyBAQAogTmljb2xhcyBKb2x5CiBCcmlhbiBLLiBKb25lcwogRXZhbiBKb25lcworR2xlbm4gSm9uZXMKIEplcmVteSBKb25lcwogUmljaGFyZCBKb25lcwogSXJtZW4gZGUgSm9uZwpAQCAtNjk3LDEyICs3MTQsMTUgQEAKIEphbiBLYW5pcwogUmFmZSBLYXBsYW4KIEphY29iIEthcGxhbi1Nb3NzCitBbGxpc29uIEthcHR1cgogSmFubmUgS2FyaWxhCiBQZXIgw5h5dmluZCBLYXJsc2VuCiBBbnRvbiBLYXN5YW5vdgogTG91IEthdGVzCiBNYWtvdG8gS2F0bwogSGlyb2FraSBLYXdhaQorRG1pdHJ5IEthemFrb3YKK0JyaWFuIEtlYXJucwogU2ViYXN0aWVuIEtlaW0KIFJ5YW4gS2VsbHkKIERhbiBLZW5pZ3NiZXJnCkBAIC03MTMsMTEgKzczMywxMyBAQAogTGF3cmVuY2UgS2VzdGVsb290CiBWaXZlayBLaGVyYQogRGhpcnUgS2hvbGlhCitBa3NoaXQgS2h1cmFuYQogTWFkcyBLaWlsZXJpY2gKIEphc29uIEtpbGxlbgogSmFuIEtpbQogVGFlayBKb28gS2ltCiBTYW0gS2ltYnJlbAorSmFtZXMgS2luZwogVy4gVHJldm9yIEtpbmcKIFBhdWwgS2lwcGVzCiBTdGV2ZSBLaXJzY2gKQEAgLTc2Niw2ICs3ODgsNyBAQAogRGF2ZSBLdWhsbWFuCiBKb24gS3VobgogVG9zaGlvIEt1cmF0b21pCitJbGlhIEt1cmVua292CiBWbGFkaW1pciBLdXNobmlyCiBFcm5vIEt1dXNlbGEKIFJvc3MgTGFnZXJ3YWxsCkBAIC03ODksNiArODEyLDcgQEAKIFNpbW9uIExhdwogSnVsaWEgTGF3YWxsCiBDaHJpcyBMYXdyZW5jZQorTWFyayBMYXdyZW5jZQogQnJpYW4gTGVhaXIKIE1hdGhpZXUgTGVkdWMtSGFtZWwKIEFtYW5kaW5lIExlZQpAQCAtODI4LDYgKzg1Miw3IEBACiBTaGF3biBMaWdvY2tpCiBNYXJ0aW4gTGlncgogR2VkaW1pbmFzIExpa3RhcmFzCitWaXRvciBkZSBMaW1hCiBHcmFudCBMaW1iZXJnCiBDaHJpc3RvcGhlciBMaW5kYmxhZAogVWxmIEEuIExpbmRncmVuCkBAIC04NDUsNiArODcwLDcgQEAKIEp1c3RpbiBMb3ZlCiBOZWQgSmFja3NvbiBMb3ZlbHkKIFBldGVyIExvdmV0dAorQ2hhbG1lciBMb3dlCiBKYXNvbiBMb3dlCiBUb255IExvd25kcwogUmF5IExveXphZ2EKQEAgLTkwMCw5ICs5MjYsMTEgQEAKIEFybmF1ZCBNYXppbgogUGFtIE1jQSdOdWx0eQogTWF0dCBNY0NsdXJlCitKYWNrIE1jQ3JhY2tlbgogUmViZWNjYSBNY0NyZWFyeQogS2lyayBNY0RvbmFsZAogQ2hyaXMgTWNEb25vdWdoCitNaWNoYWVsIE1jRmFkZGVuCiBHcmVnIE1jRmFybGFuZQogQWxhbiBNY0ludHlyZQogSmVzc2ljYSBNY0tlbGxhcgpAQCAtMTAwNyw2ICsxMDM1LDcgQEAKIEpvaG4gTydDb25ub3IKIEtldmluIE8nQ29ubm9yCiBUaW0gTydNYWxsZXkKK0RhbiBPJ1JlaWxseQogWm9va28gTydXaGllbGFjcm9ueAogQWFyb24gT2FrbGV5CiBKYW1lcyBPYWtsZXkKQEAgLTEwNDcsMTAgKzEwNzYsMTIgQEAKIEFsZXhhbmRyZSBQYXJlbnRlYXUKIERhbiBQYXJpc2llbgogV2lsbGlhbSBQYXJrCitDbGF1ZGUgUGFyb3oKIEhlaWtraSBQYXJ0YW5lbgogSGFycmkgUGFzYW5lbgogR2HDq2wgUGFzZ3JpbWF1ZAogQXNoaXNoIE5pdGluIFBhdGlsCitBbGVjc2FuZHJ1IFBhdHJhc2N1CiBSYW5keSBQYXVzY2gKIFNhbXVlbGUgUGVkcm9uaQogSnVzdGluIFBlZWwKQEAgLTExMjMsNiArMTE1NCw4IEBACiBSYW0gUmFjaHVtCiBKw6lyw7RtZSBSYWRpeAogQnVydG9uIFJhZG9ucworQWJoaWxhc2ggUmFqCitTaG9yeWEgUmFqCiBKZWZmIFJhbW5hbmkKIEJyb2RpZSBSYW8KIFNlbmtvIFJhc2ljCkBAIC0xMTY1LDYgKzExOTgsNyBAQAogRGF2aWRlIFJpenpvCiBBbnRob255IFJvYWNoCiBDYXJsIFJvYmJlbgorQmVuIFJvYmVydHMKIE1hcmsgUm9iZXJ0cwogQW5keSBSb2JpbnNvbgogSmltIFJvYmluc29uCkBAIC0xMTgxLDYgKzEyMTUsNyBAQAogVGltb3RoeSBSb3Njb2UKIEVyaWsgUm9zZQogTWFyayBSb3NlbWFuCitKb3NoIFJvc2VuYmVyZwogSmltIFJvc2tpbmQKIEJyaWFuIFJvc25lcgogR3VpZG8gdmFuIFJvc3N1bQpAQCAtMTE5OSw2ICsxMjM0LDcgQEAKIEF1ZHVuIFMuIFJ1bmRlCiBFcmFuIFJ1bmRzdGVpbgogUmF1bGkgUnVvaG9uZW4KK0xhdXJhIFJ1cHByZWNodAogSmVmZiBSdXNoCiBTYW0gUnVzaGluZwogTWFyayBSdXNzZWxsCkBAIC0xMjEyLDYgKzEyNDgsNyBAQAogU3VtYW4gU2FoYQogSGFqaW1lIFNhaXRvdQogR2VvcmdlIFNha2tpcworVmljdG9yIFNhbGdhZG8KIFJpY2ggU2FsegogS2V2aW4gU2FtYm9ybgogQWRyaWFuIFNhbXBzb24KQEAgLTEzMTcsNiArMTM1NCw3IEBACiBFdmdlbnkgU29sb2d1Ym92CiBDb2R5IFNvbWVydmlsbGUKIEVkb2FyZG8gU3BhZG9saW5pCitHZW9mZnJleSBTcGVhcgogQ2xheSBTcGVuY2UKIFN0ZWZhbiBTcGVybGluZwogTmljaG9sYXMgU3BpZXMKQEAgLTEzNjIsNiArMTQwMCw3IEBACiBQw6l0ZXIgU3phYsOzCiBKb2huIFN6YWttZWlzdGVyCiBBbWlyIFN6ZWtlbHkKK01hY2llaiBTenVsaWsKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogSW5kcmEgVGFsaXAKQEAgLTEzNzQsNiArMTQxMyw3IEBACiBBbXkgVGF5bG9yCiBNb250eSBUYXlsb3IKIEFuYXRvbHkgVGVjaHRvbmlrCitHdXN0YXZvIFRlbXBsZQogTWlraGFpbCBUZXJla2hvdgogVmljdG9yIFRlcnLDs24KIFJpY2hhcmQgTS4gVGV3CkBAIC0xNDA3LDYgKzE0NDcsNyBAQAogTmF0aGFuIFRyYXB1enphbm8KIExhdXJlbmNlIFRyYXR0CiBBbGJlcnRvIFRyZXZpbm8KK01heWFuayBUcmlwYXRoaQogTWF0dGhpYXMgVHJvZmZhZXMKIFRvbSBUcm9tZXkKIEpvaG4gVHJvbXAKQEAgLTE0MjksNiArMTQ3MCw3IEBACiBEYW5pZWwgVXJiYW4KIE1pY2hhZWwgVXJtYW4KIEhlY3RvciBVcnR1YmlhCitMdWthcyBWYWNlawogVmlsbGUgVmFpbmlvCiBBbmRpIFZhamRhCiBDYXNlIFZhbiBIb3JzZW4KQEAgLTE0NDQsNiArMTQ4Niw3IEBACiBKYWFwIFZlcm1ldWxlbgogTmlraXRhIFZldG9zaGtpbgogQWwgVmV6emEKK1BldHIgVmljdG9yaW4KIEphY3F1ZXMgQS4gVmlkcmluZQogSm9obiBWaWVnYQogRGlubyBWaWVobGFuZApAQCAtMTQ1MywxMCArMTQ5NiwxMyBAQAogUGF1bGkgVmlydGFuZW4KIEZyYW5rIFZpc3NlcgogSm9oYW5uZXMgVm9nZWwKK01pY2hhZWwgVm9ndAorUmFkdSBWb2ljaWxhcwogQWxleCBWb2xrb3YKIE1hcnRpam4gVnJpZXMKIFNqb2VyZCBkZSBWcmllcwogR3VpZG8gVnJhbmtlbgorRGFuaWVsIFdhZ25lci1IYWxsCiBOaWtpIFcuIFdhaWJlbAogV29qdGVrIFdhbGN6YWsKIENoYXJsZXMgV2FsZG1hbgpAQCAtMTQ3NSw2ICsxNTIxLDcgQEAKIERhdmlkIFdhdHNvbgogQWFyb24gV2F0dGVycwogSGVucmlrIFdlYmVyCitMZW9uIFdlYmVyCiBDb3JyYW4gV2Vic3RlcgogR2x5biBXZWJzdGVyCiBQaGlsIFdlYnN0ZXIKQEAgLTE1MDQsNiArMTU1MSw3IEBACiBDYXJvbCBXaWxsaW5nCiBTdGV2ZW4gV2lsbGlzCiBGcmFuayBXaWxsaXNvbgorRGF2aWQgV2lsc29uCiBHZW9mZiBXaWxzb24KIEdyZWcgVi4gV2lsc29uCiBKIERlcmVrIFdpbHNvbgpAQCAtMTUyOSwxMSArMTU3NywxMyBAQAogRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBEYW5pZWwgV296bmlhaworV2VpIFd1CiBIZWlrbyBXdW5kcmFtCiBEb3VnIFd5YXR0CiBSb2JlcnQgWGlhbwogRmxvcmVudCBYaWNsdW5hCiBIaXJva2F6dSBZYW1hbW90bworQXJub24gWWFhcmkKIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KIEV1bmdKdW4gWWkKQEAgLTE1NjAsNiArMTYxMCw3IEBACiBHZW5uYWRpeSBabG9iaW4KIERvdWcgWm9uZ2tlcgogUGV0ZXIgw4VzdHJhbmQKK0lnbmFjaW8gUm9zc2kKIExhdXJlbnQgRGUgQnV5c3QKIE5pY29sYSBQYWx1bWJvCiBldmlsemVybwpkaWZmIC0tZ2l0IGEvTWlzYy9ISVNUT1JZIGIvTWlzYy9ISVNUT1JZCmluZGV4IGY0ODM3NTkuLjA0NjJmNGUgMTAwNjQ0Ci0tLSBhL01pc2MvSElTVE9SWQorKysgYi9NaXNjL0hJU1RPUlkKQEAgLTE4LDEzICsxOCwxMyBAQAogCiAtIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KIAotLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBfX3RydW5jX18gcmV0dXJucyBhbiBvYmplY3QKLSAgd2hvc2UgX19pbnRfXyBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gYF9fdHJ1bmNfXygpYCByZXR1cm5zIGFuIG9iamVjdCB3aG9zZQorICBgX19pbnRfXygpYCBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKKy0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBgVXNlRm9yZWlnbkRURCgpYAogICBtZXRob2QgZG9lc24ndCByZXF1aXJlIGFuIGFyZ3VtZW50IGFnYWluLgogCiAKQEAgLTM2LDI2ICszNiwyNiBAQAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKS4KKy0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gYFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKClgLgogCiAtIElzc3VlICMxNTkyNjogRml4IGNyYXNoIGFmdGVyIG11bHRpcGxlIHJlaW5pdGlhbGl6YXRpb25zIG9mIHRoZSBpbnRlcnByZXRlci4KIAogLSBJc3N1ZSAjMTU4OTU6IEZpeCBGSUxFIHBvaW50ZXIgbGVhayBpbiBvbmUgZXJyb3IgYnJhbmNoIG9mCi0gIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKCkgd2hlbiBmaWxlbmFtZSBwb2ludHMgdG8gYSBweWMvcHlvIGZpbGUsIGNsb3NlaXQKLSAgaXMgZmFsc2UgYW4gYW5kIHNldF9tYWluX2xvYWRlcigpIGZhaWxzLgorICBgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoKWAgd2hlbiBmaWxlbmFtZSBwb2ludHMgdG8gYSBweWMvcHlvIGZpbGUsIGNsb3NlaXQgaXMKKyAgZmFsc2UgYW4gYW5kIHNldF9tYWluX2xvYWRlcigpIGZhaWxzLgogCiAtIEZpeGVzIGZvciBhIGZldyBjcmFzaCBhbmQgbWVtb3J5IGxlYWsgcmVncmVzc2lvbnMgZm91bmQgYnkgQ292ZXJpdHkuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTU4ODI6IENoYW5nZSBfZGVjaW1hbCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KLSAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKLSAgd2l0aCBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbAotICAoaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KKy0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KKyAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQorICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KIAotLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gZW1haWwudXRpbCB3aGVyZSB0aGUgcGFyc2VkYXRlKCkgYW5kCi0gIHBhcnNlZGF0ZV90eigpIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKKy0gSXNzdWUgIzE1OTI1OiBGaXggYSByZWdyZXNzaW9uIGluIGBlbWFpbC51dGlsYCB3aGVyZSB0aGUgYHBhcnNlZGF0ZSgpYCBhbmQKKyAgYHBhcnNlZGF0ZV90eigpYCBmdW5jdGlvbnMgZGlkIG5vdCByZXR1cm4gTm9uZSBhbnltb3JlIHdoZW4gdGhlIGFyZ3VtZW50IGNvdWxkCiAgIG5vdCBiZSBwYXJzZWQuCiAKIEV4dGVuc2lvbiBNb2R1bGVzCkBAIC02Nyw3ICs2Nyw3IEBACiAtIElzc3VlICMxNTk3NzogRml4IG1lbW9yeSBsZWFrIGluIE1vZHVsZXMvX3NzbC5jIHdoZW4gdGhlIGZ1bmN0aW9uCiAgIF9zZXRfbnBuX3Byb3RvY29scygpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgdGhhbmtzIHRvIERhbmllbCBTb21tZXJtYW5uLgogCi0tIElzc3VlICMxNTk2OTogZmF1bHRoYW5kbGVyIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCistIElzc3VlICMxNTk2OTogYGZhdWx0aGFuZGxlcmAgbW9kdWxlOiByZW5hbWUgZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KICAgZHVtcF90cmFjZWJhY2tfbGF0ZXIoKSBhbmQgY2FuY2VsX2R1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCiAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpLgogCkBAIC04MywzNSArODMsMzcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tCiAKIC0gSXNzdWUgIzEzOTkyOiBUaGUgdHJhc2hjYW4gbWVjaGFuaXNtIGlzIG5vdyB0aHJlYWQtc2FmZS4gIFRoaXMgZWxpbWluYXRlcwotICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvcgotICBjaGFpbnMgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIKLSAgdHlwZXMuCisgIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucworICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KIAotLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBPU0Vycm9yLl9fc3RyX18oKSB0byBiZXR0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbgotICBlcnJubyBlcnJvciBudW1iZXJzIGFuZCBXaW5kb3dzIGVycm9yIG51bWJlcnMuCistIElzc3VlICMxNTc4NDogTW9kaWZ5IGBPU0Vycm9yYC5fX3N0cl9fKCkgdG8gYmV0dGVyIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJybm8KKyAgZXJyb3IgbnVtYmVycyBhbmQgV2luZG93cyBlcnJvciBudW1iZXJzLgogCiAtIElzc3VlICMxNTc4MTogRml4IHR3byBzbWFsbCByYWNlIGNvbmRpdGlvbnMgaW4gaW1wb3J0J3MgbW9kdWxlIGxvY2tpbmcuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTU4NDc6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UsIHdoaWNoIGRpZCBub3QgYWNjZXB0IHR1cGxlcwotICBhcyBhcmd1bWVudCBsaXN0cyBhbnltb3JlLgorLSBJc3N1ZSAjMTcxNTg6IEFkZCAnc3ltYm9scycgdG8gaGVscCgpIHdlbGNvbWUgbWVzc2FnZTsgY2xhcmlmeQorICAnbW9kdWxlcyBzcGFtJyBtZXNzYWdlcy4KIAotLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGltcC5sb2FkX21vZHVsZSgpLgorLSBJc3N1ZSAjMTU4NDc6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYXJncGFyc2UsIHdoaWNoIGRpZCBub3QgYWNjZXB0IHR1cGxlcyBhcworICBhcmd1bWVudCBsaXN0cyBhbnltb3JlLgogCi0tIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIC9kZXYvdXJhbmRvbSBjYW5ub3QKLSAgYmUgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCiAKLS0gSXNzdWUgIzEwNjUwOiBEZXByZWNhdGUgdGhlIHdhdGNoZXhwIHBhcmFtZXRlciBvZiB0aGUgRGVjaW1hbC5xdWFudGl6ZSgpCistIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIGBgL2Rldi91cmFuZG9tYGAgY2Fubm90IGJlCisgIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KKworLSBJc3N1ZSAjMTA2NTA6IERlcHJlY2F0ZSB0aGUgd2F0Y2hleHAgcGFyYW1ldGVyIG9mIHRoZSBgRGVjaW1hbC5xdWFudGl6ZSgpYAogICBtZXRob2QuCiAKLS0gSXNzdWUgIzE1Nzg1OiBNb2RpZnkgd2luZG93LmdldF93Y2goKSBBUEkgb2YgdGhlIGN1cnNlcyBtb2R1bGU6IHJldHVybgotICBhIGNoYXJhY3RlciBmb3IgbW9zdCBrZXlzLCBhbmQgYW4gaW50ZWdlciBmb3Igc3BlY2lhbCBrZXlzLCBpbnN0ZWFkIG9mCi0gIGFsd2F5cyByZXR1cm5pbmcgYW4gaW50ZWdlci4gU28gaXQgaXMgbm93IHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIHNwZWNpYWwKLSAga2V5cyBsaWtlIGtleXBhZCBrZXlzLgorLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQorICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKKyAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQorICBrZXlwYWQga2V5cy4KIAotLSBJc3N1ZSAjMTQyMjM6IEZpeCB3aW5kb3cuYWRkY2goKSBvZiB0aGUgY3Vyc2VzIG1vZHVsZSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzCistIElzc3VlICMxNDIyMzogRml4IGB3aW5kb3cuYWRkY2goKWAgb2YgdGhlIGN1cnNlcyBtb2R1bGUgZm9yIHNwZWNpYWwgY2hhcmFjdGVycwogICBsaWtlIGN1cnNlcy5BQ1NfSExJTkU6IHRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goaW50KSBhbmQgYWRkY2goYnl0ZXMpIGlzIG5vdwogICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRjaCgpL212d2FkZGNoKCkgKGFzIGl0IHdhcyBkb25lIGluIFB5dGhvbiAzLjIpLAogICBpbnN0ZWFkIG9mIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpLiBUaGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKHN0cikgaXMgc3RpbGwKQEAgLTEyNywxMCArMTI5LDEwIEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZAotICB0aGUgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUKLSAgaXRlbSBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkKLSAgd2lsbCBiZSBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEKKy0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZCB0aGUKKyAgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUgaXRlbQorICBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkgd2lsbCBiZQorICBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEuCiAKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMT8KQEAgLTE0NCwxMzEgKzE0NiwxMjMgQEAKIC0gSXNzdWUgIzE1NTczOiBtZW1vcnl2aWV3IGNvbXBhcmlzb25zIGFyZSBub3cgcGVyZm9ybWVkIGJ5IHZhbHVlIHdpdGggZnVsbAogICBzdXBwb3J0IGZvciBhbnkgdmFsaWQgc3RydWN0IG1vZHVsZSBmb3JtYXQgZGVmaW5pdGlvbi4KIAotLSBJc3N1ZSAjMTUzMTY6IFdoZW4gYW4gaXRlbSBpbiB0aGUgZnJvbWxpc3QgZm9yIF9faW1wb3J0X18gZG9lc24ndCBleGlzdCwKKy0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAogICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KICAgbGV0IHRoYXQgcHJvcGFnYXRlLgogCi0tIElzc3VlICMxNTc3ODogZW5zdXJlIHRoYXQgc3RyKEltcG9ydEVycm9yKG1zZykpIHJldHVybnMgYSBzdHIKLSAgZXZlbiB3aGVuIG1zZyBpc24ndCBhIHN0ci4KKy0gSXNzdWUgIzE1Nzc4OiBFbnN1cmUgdGhhdCBgYHN0cihJbXBvcnRFcnJvcihtc2cpKWBgIHJldHVybnMgYSBzdHIgZXZlbiB3aGVuCisgIG1zZyBpc24ndCBhIHN0ci4KIAotLSBJc3N1ZSAjMjA1MTogU291cmNlIGZpbGUgcGVybWlzc2lvbiBiaXRzIGFyZSBvbmNlIGFnYWluIGNvcnJlY3RseQotICBjb3BpZWQgdG8gdGhlIGNhY2hlZCBieXRlY29kZSBmaWxlLiAoVGhlIG1pZ3JhdGlvbiB0byBpbXBvcnRsaWIKLSAgcmVpbnRyb2R1Y2VkIHRoaXMgcHJvYmxlbSBiZWNhdXNlIHRoZXNlIHdhcyBubyByZWdyZXNzaW9uIHRlc3QuIEEgdGVzdAotICBoYXMgYmVlbiBhZGRlZCBhcyBwYXJ0IG9mIHRoaXMgcGF0Y2gpCistIElzc3VlICMyMDUxOiBTb3VyY2UgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIG9uY2UgYWdhaW4gY29ycmVjdGx5IGNvcGllZCB0bworICB0aGUgY2FjaGVkIGJ5dGVjb2RlIGZpbGUuIChUaGUgbWlncmF0aW9uIHRvIGltcG9ydGxpYiByZWludHJvZHVjZWQgdGhpcworICBwcm9ibGVtIGJlY2F1c2UgdGhlc2Ugd2FzIG5vIHJlZ3Jlc3Npb24gdGVzdC4gQSB0ZXN0IGhhcyBiZWVuIGFkZGVkIGFzIHBhcnQgb2YKKyAgdGhpcyBwYXRjaCkKIAotLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIFBZVEhPTkVYRUNVVEFCTEUgaXMgc2V0IG9uIE1hYyBPUyBYLgorLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIGBgUFlUSE9ORVhFQ1VUQUJMRWBgIGlzIHNldCBvbiBNYWMgT1MgWC4KIAotLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4KLSAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4gIFBhdGNoIGJ5CisgIFJvYmluIFNjaHJlaWJlci4KIAotLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCistIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQogICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTQ4NDY6IGltcG9ydGxpYi5GaWxlRmluZGVyIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZQotICBkaXJlY3RvcnkgYmVpbmcgc2VhcmNoZWQgaXMgcmVtb3ZlZCBhZnRlciBhIHByZXZpb3VzIGltcG9ydCBhdHRlbXB0CistIElzc3VlICMxNDg0NjogYGltcG9ydGxpYi5GaWxlRmluZGVyYCBub3cgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUgZGlyZWN0b3J5CisgIGJlaW5nIHNlYXJjaGVkIGlzIHJlbW92ZWQgYWZ0ZXIgYSBwcmV2aW91cyBpbXBvcnQgYXR0ZW1wdC4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICMxMzM3MDogRW5zdXJlIHRoYXQgY3R5cGVzIHdvcmtzIG9uIE1hYyBPUyBYIHdoZW4gUHl0aG9uIGlzCi0gIGNvbXBpbGVkIHVzaW5nIHRoZSBjbGFuZyBjb21waWxlcgorLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAorICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCiAKLS0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZAotICB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KKy0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KIAogLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgogCi0tIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KKy0gSXNzdWUgIzE1Nzc2OiBBbGxvdyBweXZlbnYgdG8gd29yayBpbiBleGlzdGluZyBkaXJlY3Rvcnkgd2l0aCAtLWNsZWFuLgorCistIElzc3VlICMxNTI0OTogZW1haWwncyBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgogICByZXF1ZXN0ZWQpIGV2ZW4gaWYgdGhlIGJvZHkgY29udGFpbnMgdW5kZWNvZGFibGUgYnl0ZXMuCiAKIC0gSXNzdWUgIzE1Nzc3OiBGaXggYSByZWZsZWFrIGluIF9wb3NpeHN1YnByb2Nlc3MuCiAKLS0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBlbWFpbC51dGlscy5sb2NhbHRpbWUgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCistIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgYGVtYWlsLnV0aWxzLmxvY2FsdGltZWAgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCiAgIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KIAogLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KICAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgogCi0tIElzc3VlICMxMjY0MzogY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUgbm93IHJlc3BlY3RzIHN5cy5leGNlcHRob29rIHdoZW4KLSAgZGlzcGxheWluZyBleGNlcHRpb25zIChQYXRjaCBieSBBYXJvbiBJbGVzKQorLSBJc3N1ZSAjMTI2NDM6IGBjb2RlLkludGVyYWN0aXZlQ29uc29sZWAgbm93IHJlc3BlY3RzIGBzeXMuZXhjZXB0aG9va2Agd2hlbgorICBkaXNwbGF5aW5nIGV4Y2VwdGlvbnMuICBQYXRjaCBieSBBYXJvbiBJbGVzLgogCi0tIElzc3VlICMxMzU3OTogc3RyaW5nLkZvcm1hdHRlciBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KKy0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCiAKLS0gSXNzdWUgIzE1NzkzOiBTdGFjayBjb3JydXB0aW9uIGluIHNzbC5SQU5EX2VnZCgpLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTU5NTogRml4IHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCi0gIGZvciBjZXJ0YWluIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorLSBJc3N1ZSAjMTU1OTU6IEZpeCBgYHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpYGAgZm9yIGNlcnRhaW4KKyAgbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCiAKIC0gSXNzdWUgIzE1NDc3OiBJbiBjbWF0aCBhbmQgbWF0aCBtb2R1bGVzLCBhZGQgd29ya2Fyb3VuZCBmb3IgcGxhdGZvcm1zIHdob3NlCiAgIHN5c3RlbS1zdXBwbGllZCBsb2cxcCBmdW5jdGlvbiBkb2Vzbid0IHJlc3BlY3Qgc2lnbnMgb2YgemVyb3MuCiAKLS0gSXNzdWUgIzE1NzE1OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHdpbGwgc2lsZW5jZSBhbiBJbXBvcnRFcnJvciB3aGVuIHRoZSB1c2UKLSAgb2YgZnJvbWxpc3QgbGVhZHMgdG8gYSBmYWlsZWQgaW1wb3J0LgorLSBJc3N1ZSAjMTU3MTU6IGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYCB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUKKyAgdXNlIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KIAotLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWNPU1gKLSAgYnkgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgotICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjT1NYLgorLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWMgT1MgWCBieQorICBzZW5kaW5nL3JlY2VpdmluZyBhbiBhY2tub3dsZWRnbWVudCBhZnRlciBmaWxlIGRlc2NyaXB0b3IgdHJhbnNmZXIuCisgIFRlc3RQaWNrbGluZ0Nvbm5lY3Rpb24gaGFzIGJlZW4gcmVlbmFibGVkIGZvciBNYWMgT1MgWC4KIAogLSBJc3N1ZSAjMTEwNjI6IEZpeCBhZGRpbmcgYSBtZXNzYWdlIGZyb20gZmlsZSB0byBCYWJ5bCBtYWlsYm94LgogCi0tIElzc3VlICMxNTY0NjogUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcKLSAgbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyciCi0gIGlkaW9tLgorLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nIGBtdWx0aXByb2Nlc3NpbmdgCisgIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgYGBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nYGAgaWRpb20uCiAKLS0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZQotICAoMy4zLjBiMiByZWdyZXNzaW9uKS4KK0lETEUKKy0tLS0KIAotQyBBUEkKLS0tLS0tCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KKy0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZSAoMy4zLjBiMgorICByZWdyZXNzaW9uKS4KIAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUganNvbiBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgorLSBUb3VjaGVkIHVwIHRoZSBQeXRob24gMiB0byAzIHBvcnRpbmcgZ3VpZGUuCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBganNvbmAgbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KICAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgogCiAtIENyZWF0ZSBhICdDb25jdXJyZW50IEV4ZWN1dGlvbicgc2VjdGlvbiBpbiB0aGUgZG9jcywgYW5kIHNwbGl0IHVwIHRoZQogICAnT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcycgc2VjdGlvbiB0byB1c2UgYSBtb3JlIHVzZXItY2VudHJpYwotICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQKLSAgdGV4dCBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0b25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aAotICB0aGUgU3BoaW54IGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mCi0gIENvbnRlbnRzLgorICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQgdGV4dAorICBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0aW9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGggdGhlIFNwaGlueAorICBgYDpwbGF0Zm9ybTpgYCB0YWcsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBhcyBwYXJ0IG9mIHRoZSBUYWJsZSBvZiBDb250ZW50cy4KIAotLSBJc3N1ZSAjNDk2NjogQnJpbmcgdGhlIHNlcXVlbmNlIGRvY3MgdXAgdG8gZGF0ZSBmb3IgdGhlIFB5M2sgdHJhbnNpdGlvbgotICBhbmQgdGhlIG1hbnkgbGFuZ3VhZ2UgZW5oYW5jZW1lbnRzIHNpbmNlIHRoZXkgd2VyZSBvcmlnaW5hbCB3cml0dGVuCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAorICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCiAKIC0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCi0gIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbgotICB0aGUgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcworICBtb3JlLWF3a3dhcmQtYnV0LWF0LWxlYXN0LW5vdC13cm9uZyBzdWdnZXN0aW9uIG9mICJwYXRoIGJhc2VkIGZpbmRlciIgaW4gdGhlCisgIGltcG9ydCBzeXN0ZW0gcmVmZXJlbmNlIGRvY3MuCiAKLS0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBpbXBvcnRsaWIuYWJjLkZpbmRlciBhcyBkZXByZWNhdGVkLgorLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KIAotLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiBQYXRjaCBieQorLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKICAgRGFuaWVsIEVsbGlzLgogCiBUZXN0cwogLS0tLS0KIAogLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCi0gIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZAotICB0ZXN0cyBpbiB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCisgIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgorICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCiAKLS0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZwotICB0d28gZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZQotICBvZiB0ZXN0LgorLSBJc3N1ZSAjMTUyODU6IFJlZmFjdG9yIHRoZSBhcHByb2FjaCBmb3IgdGVzdGluZyBjb25uZWN0IHRpbWVvdXRzIHVzaW5nIHR3bworICBleHRlcm5hbCBob3N0cyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgdGhpcyB0eXBlIG9mIHRlc3QuCiAKLS0gSXNzdWUgIzE1NzQzOiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kIHVzYWdlIGluIHVybGxpYiB0ZXN0cy4gUGF0Y2ggYnkKKy0gSXNzdWUgIzE1NzQzOiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kIHVzYWdlIGluIGB1cmxsaWJgIHRlc3RzLiBQYXRjaCBieQogICBKZWZmIEtudXBwLgogCi0tIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQKLSAgaW5wdXQgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCistIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBganNvbmAgbW9kdWxlJ3MgaGFuZGxpbmcgb2YgaW52YWxpZCBpbnB1dAorICBkYXRhLiAgUGF0Y2ggYnkgS3VzaGFsIERhcy4KIAogQnVpbGQKIC0tLS0tCkBAIC0yNzcsMTEgKzI3MSwxMSBAQAogCiAtIFBpY2sgdXAgMzItYml0IGxhdW5jaGVyIGZyb20gUEdPIGRpcmVjdG9yeSBvbiA2NC1iaXQgUEdPIGJ1aWxkLgogCi0tIERyb3AgUENccHl0aG9uX250LmggYXMgaXQncyBub3QgdXNlZC4gQWRkIGlucHV0IGRlcGVuZGVuY3kgb24gY3VzdG9tCistIERyb3AgYGBQQ1xweXRob25fbnQuaGBgIGFzIGl0J3Mgbm90IHVzZWQuICBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KICAgYnVpbGQgc3RlcC4KIAotLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbAotICBhbWQ2NCBjb25maWd1cmF0aW9uLgorLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbCBhbWQ2NAorICBjb25maWd1cmF0aW9uLgogCiAtIEFkZCBtaXNzaW5nIFBHSS9QR08gY29uZmlndXJhdGlvbnMgZm9yIHB5d2xhdW5jaGVyLgogCkBAIC0yOTYsMTUgKzI5MCwxNSBAQAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiAieWllbGQgZnJvbSIgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCistIElzc3VlICMxNTU2ODogRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgYGB5aWVsZCBmcm9tYGAgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCiAgIHJhaXNlZCBieSBhIGN1c3RvbSBpdGVyYXRvci4KIAotLSBJc3N1ZSAjMTMxMTk6IHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgorLSBJc3N1ZSAjMTMxMTk6IGBzeXMuc3Rkb3V0YCBhbmQgYHN5cy5zdGRlcnJgIGFyZSBub3cgdXNpbmcgIlxyXG4iIG5ld2xpbmUgb24KICAgV2luZG93cywgYXMgUHl0aG9uIDIuCiAKIC0gSXNzdWUgIzE1NTM0OiBGaXggdGhlIGZhc3Qtc2VhcmNoIGZ1bmN0aW9uIGZvciBub24tQVNDSUkgVW5pY29kZSBzdHJpbmdzLgogCi0tIElzc3VlICMxNTUwODogRml4IHRoZSBkb2NzdHJpbmcgZm9yIF9faW1wb3J0X18gdG8gaGF2ZSB0aGUgcHJvcGVyIGRlZmF1bHQKKy0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgYF9faW1wb3J0X18oKWAgdG8gaGF2ZSB0aGUgcHJvcGVyIGRlZmF1bHQKICAgdmFsdWUgb2YgMCBmb3IgJ2xldmVsJyBhbmQgdG8gbm90IG1lbnRpb24gbmVnYXRpdmUgbGV2ZWxzIHNpbmNlIHRoZXkgYXJlIG5vdAogICBzdXBwb3J0ZWQuCiAKQEAgLTMxNywxNyArMzExLDE3IEBACiAgIGJ5dGUgY29kZSBmaWxlcykgZXF1YWwgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zLgogCiAtIElzc3VlICMxNjkyMzM1OiBNb3ZlIGluaXRpYWwgZXhjZXB0aW9uIGFyZ3MgYXNzaWdubWVudCB0bwotICAiQmFzZUV4Y2VwdGlvbi5fX25ld19fIiB0byBoZWxwIHBpY2tsaW5nIG9mIG5haXZlIHN1YmNsYXNzZXMuCisgIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgogCi0tIElzc3VlICMxMjgzNDogRml4IFB5QnVmZmVyX1RvQ29udGlndW91cygpIGZvciBub24tY29udGlndW91cyBhcnJheXMuCistIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KIAotLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIF9fc2l6ZW9mX18gYWZ0ZXIgIzEyMzk5IGNoYW5nZS4gIFBhdGNoIGJ5IFNlcmhpeQorLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKICAgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgogCi0tIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gUHlNb2R1bGVfQ3JlYXRlIHRoYXQgY2F1c2VkIHJlZmVyZW5jZXMgdG8gYmUgbGVha2VkCi0gIG9uIHNvbWUgZXJyb3IgcGF0aHMgaGFzIGJlZW4gZml4ZWQuICBQYXRjaCBieSBKdWxpYSBMYXdhbGwuCistIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCisgIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgogCiAtIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYwogICBoYXMgYmVlbiBmaXhlZC4KQEAgLTMzNSw3ICszMjksNyBAQAogLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCiAgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgogCi0tIElzc3VlICMxNTMxNDogX19tYWluX18uX19sb2FkZXJfXyBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKKy0gSXNzdWUgIzE1MzE0OiBgYF9fbWFpbl9fLl9fbG9hZGVyX19gYCBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKICAgc3RhcnR1cC4KIAogLSBJc3N1ZSAjMTUxMTE6IFdoZW4gYSBtb2R1bGUgaW1wb3J0ZWQgdXNpbmcgJ2Zyb20gaW1wb3J0JyBoYXMgYW4gSW1wb3J0RXJyb3IKQEAgLTM1MCw1NyArMzQ0LDYyIEBACiAtIElzc3VlICMxNTExMDogRml4IHRoZSB0cmFjZWJhY2tzIGdlbmVyYXRlZCBieSAiaW1wb3J0IHh4eCIgdG8gbm90IHNob3cgdGhlCiAgIGltcG9ydGxpYiBzdGFjayBmcmFtZXMuCiAKKy0gSXNzdWUgIzE2MzY5OiBHbG9iYWwgUHlUeXBlT2JqZWN0cyBub3QgaW5pdGlhbGl6ZWQgd2l0aCBQeVR5cGVfUmVhZHkoLi4uKS4KKwogLSBJc3N1ZSAjMTUwMjA6IFRoZSBwcm9ncmFtIG5hbWUgdXNlZCB0byBzZWFyY2ggZm9yIFB5dGhvbidzIHBhdGggaXMgbm93CiAgICJweXRob24zIiB1bmRlciBVbml4LCBub3QgInB5dGhvbiIuCiAKLS0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0aCwKKy0gSXNzdWUgIzE1ODk3OiB6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLgorICBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KKworLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRjaCwKICAgcmV0dXJuIHRoZSBwcm9wZXIgZmFpbHVyZSByZXR1cm4gdmFsdWUgKDEpLiBQYXRjaCBjb250cmlidXRlZCBieSBKZWZmIEtudXBwLgogCi0tIElzc3VlICMxNTIyOTogQW4gT1NFcnJvciBzdWJjbGFzcyB3aG9zZSBfX2luaXRfXyBkb2Vzbid0IGNhbGwgYmFjaworLSBJc3N1ZSAjMTUyMjk6IEFuIGBPU0Vycm9yYCBzdWJjbGFzcyB3aG9zZSBfX2luaXRfXyBkb2Vzbid0IGNhbGwgYmFjawogICBPU0Vycm9yLl9faW5pdF9fIGNvdWxkIHByb2R1Y2UgaW5jb21wbGV0ZSBpbnN0YW5jZXMsIGxlYWRpbmcgdG8gY3Jhc2hlcyB3aGVuCiAgIGNhbGxpbmcgc3RyKCkgb24gdGhlbS4KIAotLSBJc3N1ZSAxNTMwNzogVmlydHVhbCBlbnZpcm9ubWVudHMgbm93IHVzZSBzeW1saW5rcyB3aXRoIGZyYW1ld29yayBidWlsZHMgb24KKy0gSXNzdWUgIzE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgogICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQorLSBJc3N1ZSAjMTQ1OTA6IGNvbmZpZ3BhcnNlciBub3cgY29ycmVjdGx5IHN0cmlwcyBpbmxpbmUgY29tbWVudHMgd2hlbiBkZWxpbWl0ZXIKKyAgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuCisKKy0gSXNzdWUgIzE1NDI0OiBBZGQgYSBgX19zaXplb2ZfXygpYCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5CiAgIEx1ZHdpZyBIw6RobmUuCiAKIC0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgogCi0tIElzc3VlICMxNTUwMjogSGF2ZSBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSB3b3JrIG9uIHN5cy5tZXRhX3BhdGggaW5zdGVhZAotICBvZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKy0gSXNzdWUgIzE1NTAyOiBIYXZlIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgd29yayBvbiBgc3lzLm1ldGFfcGF0aGAKKyAgaW5zdGVhZCBvZiBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLgogCiAtIElzc3VlICMxNTE2MzogUHlkb2Mgc2hvdWxkbid0IGxpc3QgX19sb2FkZXJfXyBhcyBtb2R1bGUgZGF0YS4KIAogLSBJc3N1ZSAjMTU0NzE6IERvIG5vdCB1c2UgbXV0YWJsZSBvYmplY3RzIGFzIGRlZmF1bHRzIGZvcgotICBpbXBvcnRsaWIuX19pbXBvcnRfXygpLgorICBgaW1wb3J0bGliLl9faW1wb3J0X18oKWAuCiAKIC0gSXNzdWUgIzE1NTU5OiBUbyBhdm9pZCBhIHByb2JsZW1hdGljIGZhaWx1cmUgbW9kZSB3aGVuIHBhc3NlZCB0byB0aGUgYnl0ZXMKLSAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBfX2luZGV4X18KLSAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IF9faW50X18gYXMgYXBwcm9wcmlhdGUpCisgIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgYF9faW5kZXhfXygpYAorICAodGhleSBzdGlsbCBpbXBsZW1lbnQgYF9faW50X18oKWAgYXMgYXBwcm9wcmlhdGUpLgogCiAtIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgYW5kCiAgIHJlYWQxKCkgbWV0aG9kcyBvZiB0aGUgQloyRmlsZSwgR3ppcEZpbGUgYW5kIExaTUFGaWxlIGNsYXNzZXMuCiAKLS0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZwotICBlbmRlZCB3aXRoICdcJy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCistIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgYG9zLnNjaGVkX2dldGFmZmluaXR5KClgIGFuZAorICBgb3Muc2NoZWRfc2V0YWZmaW5pdHkoKWAgbm93IHVzZSByZWd1bGFyIHNldHMgb2YgaW50ZWdlcnMgdG8gcmVwcmVzZW50IHRoZQorICBDUFVzIGEgcHJvY2VzcyBpcyByZXN0cmljdGVkIHRvLgogCi0tIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgb3Muc2NoZWRfZ2V0YWZmaW5pdHkgYW5kCi0gIG9zLnNjaGVkX3NldGFmZmluaXR5IG5vdyB1c2UgcmVndWxhciBzZXRzIG9mIGludGVnZXJzIHRvIHJlcHJlc2VudCB0aGUgQ1BVcyBhCi0gIHByb2Nlc3MgaXMgcmVzdHJpY3RlZCB0by4KLQotLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkgZW11bGF0aW9uCi0gIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgYHNvY2tldC5nZXRuYW1laW5mbygpYCAvCisgIGBzb2NrZXQuZ2V0YWRkcmluZm8oKWAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgogCiAtIElzc3VlICMxNTUxOTogUHJvcGVybHkgZXhwb3NlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBpbiBpbXBvcnRsaWIgKGFuZCB1c2UgdGhlCi0gIGNvcnJlY3QgdGVybSBmb3IgaXQpLiBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCisgIGNvcnJlY3QgdGVybSBmb3IgaXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgogCiAtIElzc3VlICMxNTUwMjogQnJpbmcgdGhlIGltcG9ydGxpYiBBQkNzIGludG8gbGluZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQotICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKyAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgogCiAtIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KQEAgLTQwOCwzNyArNDA3LDM2IEBACiAtIElzc3VlICMxNTQ2MzogVGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgdHJ1bmNhdGVzIHN0cmluZ3MgdG8gNTAwIGNoYXJhY3RlcnMsCiAgIGluc3RlYWQgb2YgMTAwLCB0byBiZSBhYmxlIHRvIGRpc3BsYXkgbG9uZyBmaWxlIHBhdGhzLgogCi0tIElzc3VlICM2MDU2OiBNYWtlIG11bHRpcHJvY2Vzc2luZyB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKKy0gSXNzdWUgIzYwNTY6IE1ha2UgYG11bHRpcHJvY2Vzc2luZ2AgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0CiAgIHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KIAogLSBJc3N1ZSAjMTUzNjQ6IEZpeCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCiAKLS0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKy0gSXNzdWUgIzE1NDEzOiBgb3MudGltZXMoKWAgaGFkIGRpc2FwcGVhcmVkIHVuZGVyIFdpbmRvd3MuCiAKLS0gSXNzdWUgIzE1NDEzOiBvcy50aW1lcygpIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgc3lzLmdldHNpemVvZiB0bworLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIGBzeXMuZ2V0c2l6ZW9mKClgIHRvCiAgIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuICBJbml0aWFsCiAgIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGVtYWlsLkdlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMKLSAgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IgZXBpbG9ndWUuCistIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBgZW1haWwuR2VuZXJhdG9yYCBub3cgY29ycmVjdGx5CisgIG1hbmdsZXMgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IKKyAgZXBpbG9ndWUuCiAKIC0gSXNzdWUgIzE1MDk0OiBJbmNvcnJlY3RseSBwbGFjZWQgI2VuZGlmIGluIF90a2ludGVyLmMuICBQYXRjaCBieSBTZXJoaXkKICAgU3RvcmNoYWthLgogCi0tIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgorLSBJc3N1ZSAjMTM5MjI6IGBhcmdwYXJzZWAgbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgogICB0aGUgZmlyc3Qgb25lLgogCi0tIElzc3VlICMxMjM1MzogYXJncGFyc2Ugbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgorLSBJc3N1ZSAjMTIzNTM6IGBhcmdwYXJzZWAgbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgogCiAtIElzc3VlICMxMDAxNywgaXNzdWUgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAogICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgogCi0tIElzc3VlICMxNTM5NzogaW5zcGVjdC5nZXRtb2R1bGVuYW1lKCkgaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIGltcG9ydGxpYiB2aWEgYQotICBuZXcgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKSBBUEkuCistIElzc3VlICMxNTM5NzogYGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpYCBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gaW1wb3J0bGliIHZpYQorICBhIG5ldyBgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKWAgQVBJLgogCi0tIElzc3VlICMxNDYzNTogdGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCistIElzc3VlICMxNDYzNTogYHRlbG5ldGxpYmAgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KICAgYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KIAogLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzLgpAQCAtNDU1LDcgKzQ1Myw3IEBACiAtIElzc3VlICMxNTIzMzogUHl0aG9uIG5vdyBndWFyYW50ZWVzIHRoYXQgY2FsbGFibGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYXRleGl0CiAgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCiAKLS0gSXNzdWUgIzE1MjM4OiBzaHV0aWwuY29weXN0YXQgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCistIElzc3VlICMxNTIzODogYHNodXRpbC5jb3B5c3RhdCgpYCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KIAogLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQgaW4KICAgdGhlIGRvY3VtZW50YXRpb24uCkBAIC00NjUsNDIgKzQ2Myw0MiBAQAogLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCiAgIG5hbWVzcGFjZSBwYWNrYWdlcy4KIAotLSBJc3N1ZSAjMTUwNTY6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpIGFuZCBzb3VyY2VfZnJvbV9jYWNoZSgpIHJhaXNlCi0gIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIHNldCB0byBOb25lLgorLSBJc3N1ZSAjMTUwNTY6IGBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKWAgYW5kIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgcmFpc2UKKyAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBzZXQgdG8gTm9uZS4KIAotLSBJc3N1ZSAjMTUyNTY6IEdyYW1tYXRpY2FsIG1pc3Rha2UgaW4gZXhjZXB0aW9uIHJhaXNlZCBieSBpbXAuZmluZF9tb2R1bGUoKS4KKy0gSXNzdWUgIzE1MjU2OiBHcmFtbWF0aWNhbCBtaXN0YWtlIGluIGV4Y2VwdGlvbiByYWlzZWQgYnkgYGltcC5maW5kX21vZHVsZSgpYC4KIAotLSBJc3N1ZSAjNTkzMTogd3NnaXJlZiBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KKy0gSXNzdWUgIzU5MzE6IGB3c2dpcmVmYCBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KICAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlIENQeXRob24sIEp5dGhvbiBpbnN0ZWFkIG9mIGdlbmVyaWMgIlB5dGhvbiIuCiAKIC0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgIm1heF9idWZmZXJfc2l6ZSIgb2YgQnVmZmVyZWRXcml0ZXIgYW5kCiAgIEJ1ZmZlcmVkUldQYWlyLCBmcm9tIHRoZSBpbyBtb2R1bGUuCiAKLS0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgInZlcnNpb24iIG9mIGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyLgorLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYC4KIAogLSBJc3N1ZSAjMTQ4MTQ6IEltcGxlbWVudCBtb3JlIGNvbnNpc3RlbnQgb3JkZXJpbmcgYW5kIHNvcnRpbmcgYmVoYXZpb3VyIGZvcgogICBpcGFkZHJlc3Mgb2JqZWN0cy4KIAotLSBJc3N1ZSAjMTQ4MTQ6IGlwYWRkcmVzcyBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCistIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2AgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgogICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgogCiAtIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgogCi0tIElzc3VlICMxNDgxNDogaXBhZGRyZXNzIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyB3aGVuCiAgIGNvbnN0cnVjdGluZyBpbnN0YW5jZXMgZGlyZWN0bHkgKGNoYW5nZXMgcGVybWl0dGVkIGR1cmluZyBiZXRhIGR1ZSB0bwogICBwcm92aXNpb25hbCBBUEkgc3RhdHVzKS4KIAotLSBJc3N1ZSAjMTUyNDc6IEZpbGVJTyBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcKLSAgdG8gYSBkaXJlY3RvcnkuCistIElzc3VlICMxNTI0NzogYGlvLkZpbGVJT2Agbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yCisgIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5LgogCiAtIElzc3VlICMxNTI2MTogU3RvcCBvcy5zdGF0KGZkKSBjcmFzaGluZyBvbiBXaW5kb3dzIHdoZW4gZmQgbm90IG9wZW4uCiAKLS0gSXNzdWUgIzE1MTY2OiBJbXBsZW1lbnQgaW1wLmdldF90YWcoKSB1c2luZyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnLgorLSBJc3N1ZSAjMTUxNjY6IEltcGxlbWVudCBgaW1wLmdldF90YWcoKWAgdXNpbmcgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgLgogCi0tIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBpbXBvcnRsaWIuX19pbml0X18gY2FuJ3QgZmluZAorLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gYGltcG9ydGxpYi5fX2luaXRfXygpYCBjYW4ndCBmaW5kCiAgIF9mcm96ZW5faW1wb3J0bGliIGluIHN5cy5tb2R1bGVzLCBub3QgSW1wb3J0RXJyb3IuCiAKLS0gSXNzdWUgIzE1MDMwOiBpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCistIElzc3VlICMxNTAzMDogYGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXJgIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCiAgIGhlYWRlciBmaWVsZCBpbiAucHljIGZpbGVzLgogCiAtIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94IGZpbGVzIG9uCkBAIC01MTMsNyArNTExLDcgQEAKICAgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuIG1ib3gsIE1NREYgb3IgQmFieWwKICAgbWFpbGJveC4KIAotLSBJc3N1ZSAxMDkyNDogRml4ZWQgY3J5cHQubWtzYWx0KCkgdG8gdXNlIGEgUk5HIHRoYXQgaXMgc3VpdGFibGUgZm9yCistIElzc3VlICMxMDkyNDogRml4ZWQgYGNyeXB0Lm1rc2FsdCgpYCB0byB1c2UgYSBSTkcgdGhhdCBpcyBzdWl0YWJsZSBmb3IKICAgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlLgogCiAtIElzc3VlICMxNTE4NDogRW5zdXJlIGNvbnNpc3RlbnQgcmVzdWx0cyBvZiBPUyBYIGNvbmZpZ3VyYXRpb24gdGFpbG9yaW5nIGZvcgpAQCAtNTI0LDEwICs1MjIsMTAgQEAKIEMgQVBJCiAtLS0tLQogCi0tIElzc3VlICMxNTYxMDogUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKSBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgorLSBJc3N1ZSAjMTU2MTA6IGBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpYCBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgogCi0tIElzc3VlcyAjMTUxNjksICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCi0gIGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCistIElzc3VlICMxNTE2OSwgaXNzdWUgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCB1c2VkIGJ5IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGFuZAogICB1c2VkIHRoZSBQeXRob24gY29kZSBpbnN0ZWFkLiBMZWFkcyB0byBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdCgpIHRvIG5vdAogICB0cnkgdG8gaW5mZXIgdGhlIHNvdXJjZSBwYXRoIGZyb20gdGhlIGJ5dGVjb2RlIHBhdGggYXMKICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgZG9lcy4KQEAgLTUzNSwxNCArNTMzLDE3IEBACiBFeHRlbnNpb24gTW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgorLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcyBvZgorICB0eXBlIGBjdHlwZXMuY191aW50MzJgIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCiAKIC0gSXNzdWUgIzE1MTk0OiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuMTEgcmVsZWFzZS4KIAorSURMRQorLS0tLQorCistIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKKyAgZW5kZWQgd2l0aCBgYFxgYC4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIApAQCAtNTYyLDggKzU2MywxMCBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2gKLSAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoIGJ5CisgIFNlcmhpeSBTdG9yY2hha2EuCiAKIC0gSXNzdWUgIzE1Mjk1OiBSZW9yZ2FuaXplIGFuZCByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLgogCkBAIC01NzgsMjUgKzU4MSwyOSBAQAogICAiY2hhbmdlZCIgc2luY2UgdGhleSB3aWxsIG5vIGxvbmdlciB3b3JrIHdpdGggbW9kdWxlcyBkaXJlY3RseSBpbXBvcnRlZCBieQogICBpbXBvcnQgaXRzZWxmLgogCi0tIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBleGVjIG9yCi0gIGV4ZWNmaWxlKCkuCistIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBgZXhlYygpYCBvcgorICBgZXhlY2ZpbGUoKWAuCiAKLS0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGZpbGVjbXAuZGlyY21wIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKKy0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGBmaWxlY21wLmRpcmNtcCgpYCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgogCistIElzc3VlICMxNTQ0MjogRXhwb3NlIHRoZSBkZWZhdWx0IGxpc3Qgb2YgZGlyZWN0b3JpZXMgaWdub3JlZCBieQorICBgZmlsZWNtcC5kaXJjbXAoKWAgYXMgYSBtb2R1bGUgYXR0cmlidXRlLCBhbmQgZXhwYW5kIHRoZSBsaXN0IHRvIG1vcmUgbW9kZXJuCisgIHZhbHVlcy4KKwogVGVzdHMKIC0tLS0tCiAKLS0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIF9fc2l6ZW9mX18gdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaCBieQotICBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgYF9fc2l6ZW9mX18oKWAgdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgogCiAtIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCiAgIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KIAotLSBJc3N1ZSAjMTUxNjg6IE1vdmUgaW1wb3J0bGliLnRlc3QgdG8gdGVzdC50ZXN0X2ltcG9ydGxpYi4KKy0gSXNzdWUgIzE1MTY4OiBNb3ZlIGBpbXBvcnRsaWIudGVzdGAgdG8gYHRlc3QudGVzdF9pbXBvcnRsaWJgLgogCiAtIElzc3VlICMxNTA5MTogUmVhY3RpdmF0ZSBhIHRlc3Qgb24gVU5JWCB3aGljaCB3YXMgZmFpbGluZyB0aGFua3MgdG8gYQotICBmb3Jnb3R0ZW4gaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgY2FsbC4KKyAgZm9yZ290dGVuIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgY2FsbC4KIAogLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzLgogCkBAIC02MjksNiArNjM2LDggQEAKIAogLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCiAKKy0gSXNzdWUgIzE2MjU2OiBPUyBYIGluc3RhbGxlciBub3cgc2V0cyBjb3JyZWN0IHBlcm1pc3Npb25zIGZvciBkb2MgZGlyZWN0b3J5LgorCiAtIElzc3VlICMxNTQzMTogQWRkIF9mcmVlemVfaW1wb3J0bGliIHByb2plY3QgdG8gcmVnZW5lcmF0ZSBpbXBvcnRsaWIuaCBvbgogICBXaW5kb3dzLiBQYXRjaCBieSBLcmlzdGrDoW4gVmFsdXIgSsOzbnNzb24uCiAKQEAgLTY2NCwxNCArNjczLDkgQEAKIAogLSBJc3N1ZSAjMTE2MjY6IEFkZCBfU2l6ZVQgZnVuY3Rpb25zIHRvIHN0YWJsZSBBQkkuCiAKLS0gSXNzdWUgIzE1MTQ2OiBBZGQgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KIC0gSXNzdWUgIzE1MTQyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgaW5zdGFuY2VzIG9mIHR5cGVzCiAgIGNyZWF0ZWQgdXNpbmcgUHlUeXBlX0Zyb21TcGVjKCkuCiAKLS0gSXNzdWUgIzE1MDQyOiBBZGQgUHlTdGF0ZV9BZGRNb2R1bGUgYW5kIFB5U3RhdGVfUmVtb3ZlTW9kdWxlLiBBZGQgdmVyc2lvbgotICBndWFyZCBmb3IgUHlfTElNSVRFRF9BUEkgYWRkaXRpb25zLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KIC0gSXNzdWUgIzEwMDUzOiBEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24KICAgdGhlIHdvcmsgYnkgSGlyb2thenUgWWFtYW1vdG8uCiAKQEAgLTY5OSw5ICs3MDMsNiBAQAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMjI4ODogQ29uc2lkZXIgJzAnIGFuZCAnMC4wJyBhcyB2YWxpZCBpbml0aWFsdmFsdWUKICAgZm9yIHRraW50ZXIgU2ltcGxlRGlhbG9nLgogCkBAIC03MjAsMTQgKzcyMSw4IEBACiAtIElzc3VlICMxNTUxNDogQ29ycmVjdCBfX3NpemVvZl9fIHN1cHBvcnQgZm9yIGNwdV9zZXQuCiAgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKLSAgYmVoaW5kLgotCiAtIElzc3VlICMxNTE3NzogQWRkZWQgZGlyX2ZkIHBhcmFtZXRlciB0byBvcy5md2FsaygpLgogCi0tIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KLSAgb2Ygb3MubGlzdGRpcigpLgotCiAtIElzc3VlICMxNTA2MTogUmUtaW1wbGVtZW50ZWQgaG1hYy5jb21wYXJlX2RpZ2VzdCgpIGluIEMgdG8gcHJldmVudCBmdXJ0aGVyCiAgIHRpbWluZyBhbmFseXNpcyBhbmQgdG8gc3VwcG9ydCBhbGwgYnVmZmVyIHByb3RvY29sIGF3YXJlIG9iamVjdHMgYXMgd2VsbCBhcwogICBBU0NJSSBvbmx5IHN0ciBpbnN0YW5jZXMgc2FmZWx5LgpAQCAtODI3LDEwICs4MjIsNiBAQAogLSBJc3N1ZSAjMTUwMDY6IEFsbG93IGVxdWFsaXR5IGNvbXBhcmlzb24gYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUKICAgdGltZSBvciBkYXRldGltZSBvYmplY3RzLgogCi0tIElzc3VlICMxNDk4MjogRG9jdW1lbnQgdGhhdCBwa2d1dGlsJ3MgaXRlcmF0aW9uIGZ1bmN0aW9ucyByZXF1aXJlIHRoZQotICBub24tc3RhbmRhcmQgaXRlcl9tb2R1bGVzKCkgbWV0aG9kIHRvIGJlIGRlZmluZWQgYnkgYW4gaW1wb3J0ZXIgKHNvbWV0aGluZwotICB0aGUgaW1wb3J0bGliIGltcG9ydGVycyBkbyBub3QgZGVmaW5lKS4KLQogLSBJc3N1ZSAjMTUwMzY6IE1haWxib3ggbm8gbG9uZ2VyIHRocm93cyBhbiBlcnJvciBpZiBhIGZsdXNoIGlzIGRvbmUKICAgYmV0d2VlbiBvcGVyYXRpb25zIHdoZW4gcmVtb3Zpbmcgb3IgY2hhbmdpbmcgbXVsdGlwbGUgaXRlbXMgaW4gbWJveCwKICAgTU1ERiwgb3IgQmFieWwgbWFpbGJveGVzLgpAQCAtODk4LDkgKzg4OSw2IEBACiAKIC0gSXNzdWUgIzE0OTY5OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXhjZXB0aW9uIGNoYWluaW5nIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrCiAKLS0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZwotICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzE0OTYzOiBDb252ZXJ0IGNvbnRleHRsaWIuRXhpdFN0YWNrLl9fZXhpdF9fIHRvIHVzZSBhbiBpdGVyYXRpdmUKICAgYWxnb3JpdGhtIChQYXRjaCBieSBBbG9uIEhvcmV2KQogCkBAIC05MTMsNiArOTAxLDExIEBACiBDLUFQSQogLS0tLS0KIAorLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCisgIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKwogLSBJc3N1ZSAjMTM3ODM6IEluYWR2ZXJ0ZW50IGFkZGl0aW9ucyB0byB0aGUgcHVibGljIEMgQVBJIGluIHRoZSBQRVAgMzgwCiAgIGltcGxlbWVudGF0aW9uIGhhdmUgZWl0aGVyIGJlZW4gcmVtb3ZlZCBvciBtYXJrZWQgYXMgcHJpdmF0ZSBpbnRlcmZhY2VzLgogCkBAIC05MjEsOSArOTE0LDI1IEBACiAKIC0gSXNzdWUgIzE1MDAwOiBTdXBwb3J0IHRoZSAidW5pcXVlIiB4MzIgYXJjaGl0ZWN0dXJlIGluIF9wb3NpeHN1YnByb2Nlc3MuYy4KIAorSURMRQorLS0tLQorCistIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCisgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCistIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKKyAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE1MTc2OiBDbGFyaWZpZWQgYmVoYXZpb3IsIGRvY3VtZW50YXRpb24sIGFuZCBpbXBsZW1lbnRhdGlvbgorICBvZiBvcy5saXN0ZGlyKCkuCisKKy0gSXNzdWUgIzE0OTgyOiBEb2N1bWVudCB0aGF0IHBrZ3V0aWwncyBpdGVyYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgdGhlCisgIG5vbi1zdGFuZGFyZCBpdGVyX21vZHVsZXMoKSBtZXRob2QgdG8gYmUgZGVmaW5lZCBieSBhbiBpbXBvcnRlciAoc29tZXRoaW5nCisgIHRoZSBpbXBvcnRsaWIgaW1wb3J0ZXJzIGRvIG5vdCBkZWZpbmUpLgorCiAtIElzc3VlICMxNTA4MTogRG9jdW1lbnQgUHlTdGF0ZV9GaW5kTW9kdWxlLgogICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCiAKQEAgLTkzMiw2ICs5NDEsOSBAQAogVGVzdHMKIC0tLS0tCiAKKy0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKKyAgYmVoaW5kLgorCiAtIElzc3VlICMxNDc2OTogdGVzdF9jYXBpIG5vdyBoYXMgU2tpcGl0ZW1UZXN0LCB3aGljaCBjbGV2ZXJseSBjaGVja3MKICAgZm9yICJwYXJpdHkiIGJldHdlZW4gUHlBcmdfUGFyc2VUdXBsZSgpIGFuZCB0aGUgUHl0aG9uL2dldGFyZ3MuYyBzdGF0aWMKICAgZnVuY3Rpb24gc2tpcGl0ZW0oKSBmb3IgYWxsIHBvc3NpYmxlICJmb3JtYXQgdW5pdHMiLgpAQCAtMTAyMCwzNCArMTAzMiwxOCBAQAogLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcwogICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCiAKLS0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0Ci0gIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgotICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgotCiBMaWJyYXJ5CiAtLS0tLS0tCiAKIC0gSXNzdWUgIzE0NjkwOiBVc2UgbW9ub3RvbmljIGNsb2NrIGluc3RlYWQgb2Ygc3lzdGVtIGNsb2NrIGluIHRoZSBzY2hlZCwKICAgc3VicHJvY2VzcyBhbmQgdHJhY2UgbW9kdWxlcy4KIAotLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCi0gIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCi0KLS0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgotCiAtIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KICAgYmRpc3RfcnBtLiBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgogCi0tIElzc3VlICMxNDkyOTogU3RvcCBJZGxlIDMueCBmcm9tIGNsb3Npbmcgb24gVW5pY29kZSBkZWNvZGUgZXJyb3JzIHdoZW4KLSAgZ3JlcHBpbmcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMjUxNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCBpZiBpdCBnZXRzIHRvIEVPRiB3aGlsZSBwYXJzaW5nCiAgIGEgTUlNRSBwYXJ0IHdpdGhvdXQgc2VlaW5nIHRoZSBjbG9zaW5nIE1JTUUgYm91bmRhcnkuCiAKLS0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJZGxlLgotICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cwotICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTY3MjU2ODogZW1haWwgbm93IGFsd2F5cyBkZWNvZGVzIGJhc2U2NCBwYXlsb2FkcywgYWRkaW5nIHBhZGRpbmcgYW5kCiAgIGlnbm9yaW5nIG5vbi1iYXNlNjQtYWxwaGFiZXQgY2hhcmFjdGVycyBpZiBuZWVkZWQsIGFuZCByZWdpc3RlcmluZyBkZWZlY3RzCiAgIGZvciBhbnkgc3VjaCBwcm9ibGVtcy4KQEAgLTEwODEsOSArMTA3Nyw2IEBACiAtIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCiAgIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgogCi0tIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCi0gIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgotCiAtIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKICAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KIApAQCAtMTIxMCw2ICsxMjAzLDIxIEBACiAtIElzc3VlICMxNDEyNyBhbmQgIzEwMTQ4OiBzaHV0aWwuY29weXN0YXQgbm93IHByZXNlcnZlcyBleGFjdCBtdGltZSBhbmQgYXRpbWUKICAgb24gZmlsZXN5c3RlbXMgcHJvdmlkaW5nIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KIAorSURMRQorLS0tLQorCistIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQKKyAgYnl0ZSBsaXRlcmFscyBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuMy4KKworLSBJc3N1ZSAjMTA5OTc6IFByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCisKKy0gSXNzdWUgIzE0OTI5OiBTdG9wIElETEUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgorICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJRExFLgorICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cworICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTEyMjgsOSArMTIzNiwxOSBAQAogCiAtIElzc3VlICMxMzIxMDogV2luZG93cyBidWlsZCBub3cgdXNlcyBWUzIwMTAsIHBvcnRlZCBmcm9tIFZTMjAwOC4KIAorQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0CisgIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgorICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE0ODYzOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2Ygb3MuZmRvcGVuKCkgdG8gcmVmbGVjdCB0aGUKKyAgZmFjdCB0aGF0IGl0J3Mgb25seSBhIHRoaW4gd3JhcHBlciBhcm91bmQgb3BlbigpIGFueW1vcmUuCisKIC0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKICAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCiAKQEAgLTEyNzksOSArMTI5Nyw2IEBACiAtIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKICAgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KLSAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQogLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXwogICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KICAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdApAQCAtMTQzMSwxMiArMTQ0Niw2IEBACiAKIC0gRG9uJ3QgUHlfREVDUkVGIE5VTEwgdmFyaWFibGUgaW4gaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci4KIAotLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KLSAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KLQotLSBJc3N1ZSAjMTQ0OTY6IEZpeCB3cm9uZyBuYW1lIGluIGlkbGVsaWIvdGFiYmVkcGFnZXMucHkuCi0gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQogLSBJc3N1ZSAjMzAzMzogQWRkIGRpc3BsYXlvZiBwYXJhbWV0ZXIgdG8gdGtpbnRlciBmb250LiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KIAogLSBJc3N1ZSAjMTQ0ODI6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKQEAgLTE0NzIsNiArMTQ4MSwxNSBAQAogLSBJc3N1ZSAjMTQzNTU6IFJlZ3J0ZXN0IG5vdyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLCBhbmQKICAgd2lsbCB1c2UgaXQgaWYgYSB0ZXN0IGZpbGUgY29udGFpbnMgbm8gYHRlc3RfbWFpbmAgbWV0aG9kLgogCitJRExFCistLS0tCisKKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKKy0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgorICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCisKIFRvb2xzIC8gRGVtb3MKIC0tLS0tLS0tLS0tLS0KIApAQCAtMTQ4MSw2ICsxNDk5LDEyIEBACiAtIElzc3VlICMxMzE2NTogc3RyaW5nYmVuY2ggaXMgbm93IGF2YWlsYWJsZSBpbiB0aGUgVG9vbHMvc3RyaW5nYmVuY2ggZm9sZGVyLgogICBJdCB1c2VkIHRvIGxpdmUgaW4gaXRzIG93biBTVk4gcHJvamVjdC4KIAorQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzE0MDk4OiBOZXcgZnVuY3Rpb25zIFB5RXJyX0dldEV4Y0luZm8gYW5kIFB5RXJyX1NldEV4Y0luZm8uCisgIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMj8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTMyLDE2ICsxNTU2LDkgQEAKIAogLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCiAKLS0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93Ci0gIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKLSAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCi0gIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCi0KIC0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKICAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgogCi0tIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCi0KIC0gSXNzdWUgIzE0Mjk1OiBBZGQgdW5pdHRlc3QubW9jawogCiAtIElzc3VlICM3NjUyOiBBZGQgLS13aXRoLXN5c3RlbS1saWJtcGRlYyBvcHRpb24gdG8gY29uZmlndXJlIGZvciBsaW5raW5nCkBAIC0xNTY3LDkgKzE1ODQsNiBAQAogICB1cCB0aGUgZGVjaW1hbCBtb2R1bGUuIFBlcmZvcm1hbmNlIGdhaW5zIG9mIHRoZSBuZXcgQyBpbXBsZW1lbnRhdGlvbiBhcmUKICAgYmV0d2VlbiAxMHggYW5kIDEwMHgsIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCiAKLS0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKLSAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQotCiAtIElzc3VlICMxNDI2OTogU01UUEQgbm93IGNvbmZvcm1zIHRvIHRoZSBSRkMgYW5kIHJlcXVpcmVzIGEgSEVMTyBjb21tYW5kCiAgIGJlZm9yZSBNQUlMLCBSQ1BULCBvciBEQVRBLgogCkBAIC0xNjAxLDggKzE2MTUsNiBAQAogICBkZW5pYWwgb2Ygc2VydmljZSBkdWUgdG8gaGFzaCBjb2xsaXNpb25zLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSB3aXRoIHNvbWUKICAgbW9kaWZpY2F0aW9ucyBieSB0aGUgZXhwYXQgcHJvamVjdC4KIAotLSBJc3N1ZSAjMTQyMDA6IElkbGUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KLQogLSBJc3N1ZSAjMTI4MTg6IGZvcm1hdCBhZGRyZXNzIG5vIGxvbmdlciBuZWVkbGVzc2x5IFwgZXNjYXBlcyAoKXMgaW4gbmFtZXMgd2hlbgogICB0aGUgbmFtZSBlbmRzIHVwIGJlaW5nIHF1b3RlZC4KIApAQCAtMTYxOCw4ICsxNjMwLDYgQEAKIAogLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KIAotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQogLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCiAKIC0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCkBAIC0xODQ4LDEwICsxODU4LDYgQEAKICAgb24gUE9TSVggc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkgbWFwcGluZ3MuICBQYXRjaCBieQogICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCiAKLS0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycwotICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKLSAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KLQogLSBQRVAgMzE1NSAvIGlzc3VlICMxMzQ0ODogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KIAogLSBJc3N1ZSAjMTM0MzY6IEZpeCBhIGJvZ3VzIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBBU1Qgb2JqZWN0IHdhcyBwYXNzZWQKQEAgLTE5NDIsMTAgKzE5NDgsNiBAQAogCiAtIFBFUCAzMTUxIC8gaXNzdWUgIzEyNTU1OiByZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5LgogCi0tIElzc3VlICMxMzU2MDogQWRkIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoKSwgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKQotICBhbmQgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9ucyB0byB0aGUgQyBBUEkgdG8gZGVjb2RlL2VuY29kZSBmcm9tL3RvCi0gIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KLQogLSBBZGQgaW50ZXJuYWwgQVBJIGZvciBzdGF0aWMgc3RyaW5ncyAoX1B5X2lkZW50aWZpZXIgZXQgYWwuKS4KIAogLSBJc3N1ZSAjMTMwNjM6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX05PX0RBVEEgKG51bWJlcmVkIDIzMiBhbmQgZGVzY3JpYmVkCkBAIC0yMDI4LDcgKzIwMzAsNyBAQAogICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZwogICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCiAKLS0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKy0gSXNzdWUgIzk2MTEsIElzc3VlICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KIAogLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCiAgIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCkBAIC0yMTkxLDE3ICsyMTkzLDExIEBACiAgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAogICBOVUxMKS4KIAotLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KLQogLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQogICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgogCiAtIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCiAKLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCiAtIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoCiAgIGEgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KIApAQCAtMjIxMSw5ICsyMjA3LDYgQEAKIC0gSXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBub3cgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguCiAgIFBhdGNoIGJ5IFRvcnN0ZW4gQmVja2VyLgogCi0tIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCi0gIG5hcnJvdyBidWlsZC4KLQogLSBJc3N1ZSAjMTExNjg6IFJlbW92ZSBmaWxlbmFtZSBkZWJ1ZyB2YXJpYWJsZSBmcm9tIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgogICBJdCBlbmNvZGVkIHRoZSBVbmljb2RlIGZpbGVuYW1lIHRvIFVURi04LCBidXQgdGhlIGVuY29kaW5nIGZhaWxzIG9uCiAgIHVuZGVjb2RhYmxlIGZpbGVuYW1lIChvbiBzdXJyb2dhdGUgY2hhcmFjdGVycykgd2hpY2ggcmFpc2VzIGFuIHVuZXhwZWN0ZWQKQEAgLTIyNTUsMTUgKzIyNDgsOSBAQAogICBhcmUgZGVhZCBvciBkeWluZy4gIE1vcmVvdmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm93IE8oMSkgcmF0aGVyIHRoYW4KICAgTyhuKS4KIAotLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCi0gIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KLQogLSBJc3N1ZSAjMTE4NDE6IEZpeCBjb21wYXJpc29uIGJ1ZyB3aXRoICdyYycgdmVyc2lvbnMgaW4gcGFja2FnaW5nLnZlcnNpb24uCiAgIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCiAKLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KIC0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscwogICBvbiBXaW5kb3dzLiAgQWxzbyBmaXhlZCBpbiBwYWNrYWdpbmcuCiAKQEAgLTIzMTksOSArMjMwNiw2IEBACiAgIGF1dGhlbnRpY2F0aW5nIChzaW5jZSB0aGUgcmVzdWx0IG1heSBjaGFuZ2UsIGFjY29yZGluZyB0byBSRkMgNDY0MykuCiAgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIAotLSBJc3N1ZSAjMTM5ODk6IERvY3VtZW50IHRoYXQgR3ppcEZpbGUgZG9lcyBub3Qgc3VwcG9ydCB0ZXh0IG1vZGUsIGFuZCBnaXZlIGEKLSAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiBvcGVuZWQgd2l0aCBhbiBpbnZhbGlkIG1vZGUgc3RyaW5nLgotCiAtIElzc3VlICMxMzU5MDogT24gT1MgWCAxMC43IGFuZCAxMC42IHdpdGggWGNvZGUgNC4yLCBidWlsZGluZwogICBEaXN0dXRpbHMtYmFzZWQgcGFja2FnZXMgd2l0aCBDIGV4dGVuc2lvbiBtb2R1bGVzIG1heSBmYWlsIGJlY2F1c2UKICAgQXBwbGUgaGFzIHJlbW92ZWQgZ2NjLTQuMiwgdGhlIHZlcnNpb24gdXNlZCB0byBidWlsZCBweXRob24ub3JnCkBAIC0yMzM4LDEwICsyMzIyLDYgQEAKIC0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKLS0gSXNzdWUgIzEzOTIxOiBVbmRvY3VtZW50IGFuZCBjbGVhbiB1cCBzcWxpdGUzLk9wdGltaXplZFVuaWNvZGUsCi0gIHdoaWNoIGlzIG9ic29sZXRlIGluIFB5dGhvbiAzLnguIEl0J3Mgbm93IGFsaWFzZWQgdG8gc3RyIGZvcgotICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KLQogLSBXaGVuICcnIGlzIGEgcGF0aCAoZS5nLiBpbiBzeXMucGF0aCksIG1ha2Ugc3VyZSBfX2ZpbGVfXyB1c2VzIHRoZSBjdXJyZW50CiAgIHdvcmtpbmcgZGlyZWN0b3J5IGluc3RlYWQgb2YgJycgaW4gaW1wb3J0bGliLgogCkBAIC0yMzYzLDExICsyMzQzLDYgQEAKIC0gSXNzdWUgIzEwODExOiBGaXggcmVjdXJzaXZlIHVzYWdlIG9mIGN1cnNvcnMuIEluc3RlYWQgb2YgY3Jhc2hpbmcsCiAgIHJhaXNlIGEgUHJvZ3JhbW1pbmdFcnJvciBub3cuCiAKLS0gSXNzdWUgIzEwODgxOiBGaXggdGVzdF9zaXRlIGZhaWx1cmUgd2l0aCBPUyBYIGZyYW1ld29yayBidWlsZHMuCi0KLS0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KLSAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMzczNDogQWRkIG9zLmZ3YWxrKCksIGEgZGlyZWN0b3J5IHdhbGtpbmcgZnVuY3Rpb24geWllbGRpbmcgZmlsZQogICBkZXNjcmlwdG9ycy4KIApAQCAtMjM3NywxNiArMjM1Miw4IEBACiAKIC0gSXNzdWUgIzExODA1OiBwYWNrYWdlX2RhdGEgaW4gc2V0dXAuY2ZnIHNob3VsZCBhbGxvdyBtb3JlIHRoYW4gb25lIHZhbHVlLgogCi0tIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKLSAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCi0KLS0gSXNzdWUgIzEzOTAxOiBQcmV2ZW50IHRlc3RfZGlzdHV0aWxzIGZhaWx1cmVzIG9uIE9TIFggd2l0aCAtLWVuYWJsZS1zaGFyZWQuCi0KIC0gSXNzdWUgIzEzNjc2OiBIYW5kbGUgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHplcm9zIGNvcnJlY3RseSBpbiBzcWxpdGUzLgogCi0tIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgotICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICM4ODI4OiBBZGQgbmV3IGZ1bmN0aW9uIG9zLnJlcGxhY2UoKSwgZm9yIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nCiAgIHdpdGggb3ZlcndyaXRpbmcuCiAKQEAgLTI0MDcsMTIgKzIzNzQsNiBAQAogICBPU0Vycm9yIGlmIGxvY2FsdGltZSgpIGZhaWxlZC4gdGltZS5jbG9jaygpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCiAgIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkCiAKLS0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCi0gIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KLQotLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cwotICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KLQogLSBJc3N1ZSAjMTM3NzI6IEluIG9zLnN5bWxpbmsoKSB1bmRlciBXaW5kb3dzLCBkbyBub3QgdHJ5IHRvIGd1ZXNzIHRoZSBsaW5rCiAgIHRhcmdldCdzIHR5cGUgKGZpbGUgb3IgZGlyZWN0b3J5KS4gIFRoZSBkZXRlY3Rpb24gd2FzIGJ1Z2d5IGFuZCBtYWRlIHRoZQogICBjYWxsIG5vbi1hdG9taWMgKHRoZXJlZm9yZSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMpLgpAQCAtMjQzOSw5ICsyNDAwLDYgQEAKIC0gSXNzdWUgIzEzNjQyOiBVbnF1b3RlIGJlZm9yZSBiNjRlbmNvZGluZyB1c2VyOnBhc3N3b3JkIGR1cmluZyBCYXNpYwogICBBdXRoZW50aWNhdGlvbi4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSm9vbmFzIEt1b3JpbGVodG8uCiAKLS0gSXNzdWUgIzEzNzI2OiBGaXggdGhlIGFtYmlndW91cyAtUyBmbGFnIGluIHJlZ3J0ZXN0LiBJdCBpcyAtby8tLXNsb3cgZm9yIHNsb3cKLSAgdGVzdHMuCi0KIC0gSXNzdWUgIzEyMzY0OiBGaXggYSBoYW5nIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgogICBUaGUgaGFuZyB3b3VsZCBvY2N1ciB3aGVuIHJldHJpZXZpbmcgdGhlIHJlc3VsdCBvZiBhIHNjaGVkdWxlZCBmdXR1cmUgYWZ0ZXIKICAgdGhlIGV4ZWN1dG9yIGhhZCBiZWVuIHNodXQgZG93bi4KQEAgLTI1MjQsMTAgKzI0ODIsNiBAQAogLSBJc3N1ZSAjMTM1OTE6IEEgYnVnIGluIGltcG9ydGxpYiBoYXMgYmVlbiBmaXhlZCB0aGF0IGNhdXNlZCBpbXBvcnRfbW9kdWxlCiAgIHRvIGxvYWQgYSBtb2R1bGUgdHdpY2UuCiAKLS0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAotICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQotICBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTM0NDkgc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG1ldGhvZCBoYXMgYSBuZXcgImJsb2NraW5nIiBwYXJhbWV0ZXIgd2hpY2gKICAgd2hlbiBzZXQgdG8gRmFsc2UgbWFrZXMgcnVuKCkgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCiAgIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sw6AuCkBAIC0yNTQ0LDEyICsyNDk4LDkgQEAKICAgJ2ltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXInLCAnbm50cGxpYi5OTlRQLnhndGl0bGUnLCAnbm50cGxpYi5OTlRQLnhwYXRoJywKICAgYW5kIHByaXZhdGUgYXR0cmlidXRlcyBvZiAnc210cGQuU01UUENoYW5uZWwnLgogCi0tIElzc3VlICM1OTA1LCAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCistIElzc3VlICM1OTA1LCBJc3N1ZSAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCiAgIGVuY29kaW5nLCBpbnN0ZWFkIG9mIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgogCi0tIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KLSAgUGF0Y2ggYnkgVGFsIEVpbmF0LgotCiAtIElzc3VlICMxMzQ2NDogQWRkIGEgcmVhZGludG8oKSBtZXRob2QgdG8gaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLiAgUGF0Y2gKICAgYnkgSm9uIEt1aG4uCiAKQEAgLTI2NjEsOSArMjYxMiw2IEBACiAtIElzc3VlICMxMDgxNzogRml4IHVybHJldHJpZXZlIGZ1bmN0aW9uIHRvIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yIGV2ZW4KICAgd2hlbiByZXBvcnRob29rIGlzIE5vbmUuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCiAKLS0gSXNzdWUgIzEzMjk2OiBGaXggSURMRSB0byBjbGVhciBjb21waWxlIF9fZnV0dXJlX18gZmxhZ3Mgb24gc2hlbGwgcmVzdGFydC4KLSAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQotCiAtIEZpeCB0aGUgeG1scnBjLmNsaWVudCB1c2VyIGFnZW50IHRvIHJldHVybiBzb21ldGhpbmcgc2ltaWxhciB0bwogICB1cmxsaWIucmVxdWVzdCB1c2VyIGFnZW50OiAiUHl0aG9uLXhtbHJwYy8zLjMiLgogCkBAIC0yNzY2LDEwICsyNzE0LDYgQEAKIC0gSXNzdWUgIzEzMDM0OiBXaGVuIGRlY29kaW5nIHNvbWUgU1NMIGNlcnRpZmljYXRlcywgdGhlIHN1YmplY3RBbHROYW1lCiAgIGV4dGVuc2lvbiBjb3VsZCBiZSB1bnJlcG9ydGVkLgogCi0tIElzc3VlICM5ODcxOiBQcmV2ZW50IElETEUgMyBjcmFzaCB3aGVuIGdpdmVuIGJ5dGUgc3RpbmdzCi0gIHdpdGggaW52YWxpZCBoZXggZXNjYXBlIHNlcXVlbmNlcywgbGlrZSBiJ1x4MCcuCi0gIChPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuKQotCiAtIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCiAgIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KIApAQCAtMjc5OCw4ICsyNzQyLDYgQEAKIAogLSBJc3N1ZSAjMTI4Nzg6IEV4cG9zZSBhIF9fZGljdF9fIGF0dHJpYnV0ZSBvbiBpby5JT0Jhc2UgYW5kIGl0cyBzdWJjbGFzc2VzLgogCi0tIElzc3VlICMxMjYzNjogSURMRSByZWFkcyB0aGUgY29kaW5nIGNvb2tpZSB3aGVuIGV4ZWN1dGluZyBhIFB5dGhvbiBzY3JpcHQuCi0KIC0gSXNzdWUgIzEyNDk0OiBPbiBlcnJvciwgY2FsbCgpLCBjaGVja19jYWxsKCksIGNoZWNrX291dHB1dCgpIGFuZAogICBnZXRzdGF0dXNvdXRwdXQoKSBmdW5jdGlvbnMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBraWxsIHRoZSBwcm9jZXNzLAogICByZWFkIGl0cyBzdGF0dXMgKHRvIGF2b2lkIHpvbWJpcykgYW5kIGNsb3NlIHBpcGVzLgpAQCAtMjg2OSw5ICsyODExLDYgQEAKIAogLSBJc3N1ZSAjMTAwODc6IEZpeCB0aGUgaHRtbCBvdXRwdXQgZm9ybWF0IG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCiAKLS0gSXNzdWUgIzEyNTQwOiBQcmV2ZW50IHpvbWJpZSBJRExFIHByb2Nlc3NlcyBvbiBXaW5kb3dzIGR1ZSB0byBjaGFuZ2VzCi0gIGluIG9zLmtpbGwoKS4KLQogLSBJc3N1ZSAjMTMxMjE6IGFkZCBzdXBwb3J0IGZvciBpbnBsYWNlIG1hdGggb3BlcmF0b3JzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCiAKIC0gQWRkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMgYW5kIHVuYXJ5IG1pbnVzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCkBAIC0yOTAzLDcgKzI4NDIsNyBAQAogICBDb25kaXRpb24sIGV0Yy4pIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBoaWRkZW4KICAgY2xhc3NlcyAoX0V2ZW50LCBfQ29uZGl0aW9uLCBldGMuKSwgYmVjYXVzZSAoaWYgR3VpZG8gcmVjYWxscyBjb3JyZWN0bHkpIHRoaXMKICAgY29kZSBwcmUtZGF0ZXMgdGhlIGFiaWxpdHkgdG8gc3ViY2xhc3MgZXh0ZW5zaW9uIHR5cGVzLiAgSXQgaXMgbm93IHBvc3NpYmxlCi0gIHRvIGluaGVyaXQgZnJvbSB0aGVzZSBjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQorICB0byBpbmhlcml0IGZyb20gdGhlc2UgY2xhc3Nlcywgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCiAgIHVuZGVyc2NvcmVkIG5hbWVzIGxpa2UgbXVsdGlwcm9jZXNzaW5nIGRpZC4KIAogLSBJc3N1ZSAjOTcyMzogQWRkIHNobGV4LnF1b3RlIGZ1bmN0aW9ucywgdG8gZXNjYXBlIGZpbGVuYW1lcyBhbmQgY29tbWFuZApAQCAtMjkxNywxNCArMjg1Niw4IEBACiAtIElzc3VlICMxMjYwNzogSW4gc3VicHJvY2VzcywgZml4IGlzc3VlIHdoZXJlIGlmIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyIGlzCiAgIGdpdmVuIGFzIGEgbG93IGZkLCBpdCBnZXRzIG92ZXJ3cml0dGVuLgogCi0tIElzc3VlICMxMjU5MDogSURMRSBlZGl0b3Igd2luZG93IG5vdyBhbHdheXMgZGlzcGxheXMgdGhlIGZpcnN0IGxpbmUKLSAgd2hlbiBvcGVuaW5nIGEgbG9uZyBmaWxlLiAgV2l0aCBUayA4LjUsIHRoZSBmaXJzdCBsaW5lIHdhcyBoaWRkZW4uCi0KIC0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlcykKLSAgQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIuCi0KLS0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAotICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCisgIGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIuCiAKIC0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgogCkBAIC0zMTc5LDcgKzMxMTIsNyBAQAogLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yCiAgIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4KIAotLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peEluCistIElzc3VlICMxMTEwOTogTmV3IHNlcnZpY2VfYWN0aW9uIG1ldGhvZCBmb3IgQmFzZVNlcnZlciwgdXNlZCBieSBGb3JraW5nTWl4aW4KICAgY2xhc3MgZm9yIGNsZWFudXAuIEluaXRpYWwgUGF0Y2ggYnkgSnVzdGluIFdhcmtlbnRpbi4KIAogLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbgpAQCAtMzIyNCw5ICszMTU3LDYgQEAKICAgcGFzc2luZyBhIGBgY29udGV4dGBgIGFyZ3VtZW50IHBvaW50aW5nIHRvIGFuIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlLgogICBQYXRjaCBieSBLYXN1biBIZXJhdGguCiAKLS0gSXNzdWUgIzExMDg4OiBkb24ndCBjcmFzaCB3aGVuIHVzaW5nIEY1IHRvIHJ1biBhIHNjcmlwdCBpbiBJRExFIG9uIE1hY09TWAotICB3aXRoIFRrIDguNS4KLQogLSBJc3N1ZSAjOTUxNjogSXNzdWUgIzk1MTY6IGF2b2lkIGVycm9ycyBpbiBzeXNjb25maWcgd2hlbiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKICAgaXMgc2V0IGluIHNoZWxsLgogCkBAIC0zMjQ2LDEwICszMTc2LDYgQEAKIC0gSXNzdWUgIzk5NzE6IFdyaXRlIGFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bygpLgogICBQYXRjaCBieSBKb2huIE8nQ29ubm9yLgogCi0tIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCi0gIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKLSAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KLQogLSBJc3N1ZSAjMTE3OTk6IHVybGxpYi5yZXF1ZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXJzIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yCiAgIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gdW5zdXBwb3J0ZWQgQXV0aGVudGljYXRpb24gU2NoZW1lLiBQYXRjaCBjb250cmlidXRlZAogICBieSBZdXZhbCBHcmVlbmZpZWxkLgpAQCAtMzQ4NiwxMiArMzQxMiwxMiBAQAogCiAtIElzc3VlICM3NjM5OiBGaXggc2hvcnQgZmlsZSBuYW1lIGdlbmVyYXRpb24gaW4gYmRpc3RfbXNpCiAKLS0gSXNzdWUgIzExNjU5OiBGaXggUmVzb3VyY2VXYXJuaW5nIGluIHRlc3Rfc3VicHJvY2VzcyBpbnRyb2R1Y2VkIGJ5ICMxMTQ1OS4KLSAgUGF0Y2ggYnkgQmVuIEhheWRlbi4KLQogLSBJc3N1ZSAjMTE2MzU6IERvbid0IHVzZSBwb2xsaW5nIGluIHdvcmtlciB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgbGF1bmNoZWQgYnkKICAgY29uY3VycmVudC5mdXR1cmVzLgogCistIElzc3VlICM1ODQ1OiBBdXRvbWF0aWNhbGx5IHJlYWQgcmVhZGxpbmUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgY29tcGxldGlvbgorICBpbiBpbnRlcmFjdGl2ZSBtb2RlLgorCiAtIElzc3VlICM2ODExOiBBbGxvdyBpbXBvcnRsaWIgdG8gY2hhbmdlIGEgY29kZSBvYmplY3QncyBjb19maWxlbmFtZSBhdHRyaWJ1dGUKICAgdG8gbWF0Y2ggdGhlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGN1cnJlbnRseSBpcywgbm90IHdoZXJlIHRoZSBjb2RlCiAgIG9iamVjdCBvcmlnaW5hbGx5IGNhbWUgZnJvbS4KQEAgLTM1MjYsNyArMzQ1Miw3IEBACiAKIC0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgogCi0tIElzc3VlICMxMTU2MzogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKKy0gSXNzdWUgIzExNTYzOiBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyIGlzIHNlbnQgYnkgcmVxdWVzdHMgdXNpbmcgVVJMT3BlbmVyCiAgIGNsYXNzIHdoaWNoIGhlbHBzIGluIGNsb3Npbmcgb2Ygc29ja2V0cyBhZnRlciBjb25uZWN0aW9uIGlzIG92ZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGlvbnMgYnkgSmVmZiBNY05laWwgYW5kIE5hZGVlbSBWYXdkYS4KIApAQCAtMzU0MSw4ICszNDY3LDYgQEAKIC0gSXNzdWUgIzEwOTc5OiB1bml0dGVzdCBzdGRvdXQgYnVmZmVyaW5nIG5vdyB3b3JrcyB3aXRoIGNsYXNzIGFuZCBtb2R1bGUKICAgc2V0dXAgYW5kIHRlYXJkb3duLgogCi0tIElzc3VlICMxMTU3NzogZml4IFJlc291cmNlV2FybmluZyB0cmlnZ2VyZWQgYnkgaW1wcm92ZWQgYmluaGV4IHRlc3QgY292ZXJhZ2UKLQogLSBJc3N1ZSAjMTEyNDM6IGZpeCB0aGUgcGFyYW1ldGVyIHF1ZXJ5aW5nIG1ldGhvZHMgb2YgTWVzc2FnZSB0byB3b3JrIGlmCiAgIHRoZSBoZWFkZXJzIGNvbnRhaW4gdW4tZW5jb2RlZCBub24tQVNDSUkgZGF0YS4KIApAQCAtMzU3NSw5ICszNDk5LDYgQEAKIC0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0CiAgIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCiAKLS0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgotICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCi0KIC0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KICAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KIApAQCAtMzcwMCwxMSArMzYyMSw2IEBACiAKIC0gSXNzdWUgIzkzNDg6IFJhaXNlIGFuIGVhcmx5IGVycm9yIGlmIGFyZ3BhcnNlIG5hcmdzIGFuZCBtZXRhdmFyIGRvbid0IG1hdGNoLgogCi0tIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KLQotLSBJc3N1ZSAjOTM0MzogRG9jdW1lbnQgdGhhdCBhcmdwYXJzZSBwYXJlbnQgcGFyc2VycyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCi0gIHRoZWlyIGNoaWxkcmVuLgotCiAtIElzc3VlICM5MDI2OiBGaXggb3JkZXIgb2YgYXJncGFyc2Ugc3ViLWNvbW1hbmRzIGluIGhlbHAgbWVzc2FnZXMuCiAKIC0gSXNzdWUgIzkzNDc6IEZpeCBmb3JtYXR0aW5nIGZvciB0dXBsZXMgaW4gYXJncGFyc2UgdHlwZT0gZXJyb3IgbWVzc2FnZXMuCkBAIC0zNzU3LDEwICszNjczLDYxIEBACiAKIC0gSXNzdWUgIzExNDk1OiBPU0Ygc3VwcG9ydCBpcyBlbGltaW5hdGVkLiBJdCB3YXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yLgogCi0KIElETEUKIC0tLS0KIAorLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKKyAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAorICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KKyAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KKworLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgorCistIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCisgIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKKworLSBJc3N1ZSAjMTQyMDA6IElETEUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KKworLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KKworLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgorICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAorICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBJc3N1ZSAjMTM1MDY6IEFkZCAnJyB0byBwYXRoIGZvciBJRExFIFNoZWxsIHdoZW4gc3RhcnRlZCBhbmQgcmVzdGFydGVkIHdpdGggUmVzdGFydCBTaGVsbC4KKyAgT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCisgIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIFJvZ2VyIFNlcnd5LgorCistIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KKyAgUGF0Y2ggYnkgVGFsIEVpbmF0LgorCistIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCisgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBJc3N1ZSAjOTg3MTogUHJldmVudCBJRExFIDMgY3Jhc2ggd2hlbiBnaXZlbiBieXRlIHN0aW5ncworICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgorICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKKworLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgorCistIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcworICBpbiBvcy5raWxsKCkuCisKKy0gSXNzdWUgIzEyNTkwOiBJRExFIGVkaXRvciB3aW5kb3cgbm93IGFsd2F5cyBkaXNwbGF5cyB0aGUgZmlyc3QgbGluZQorICB3aGVuIG9wZW5pbmcgYSBsb25nIGZpbGUuICBXaXRoIFRrIDguNSwgdGhlIGZpcnN0IGxpbmUgd2FzIGhpZGRlbi4KKworLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCisgIHdpdGggVGsgOC41LgorCistIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCisgIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKKyAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KKwogLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKICAgZmlsZSBpbiBhIHBhY2thZ2UuCiAKQEAgLTM3OTAsNiArMzc1NywxMCBAQAogRXh0ZW5zaW9uIE1vZHVsZXMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE2ODQ3OiBGaXhlZCBpbXByb3BlciB1c2Ugb2YgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCkgaW4KKyAgbm9uLXB5ZGVidWcgYnVpbGRzLiBTZXZlcmFsIGV4dGVuc2lvbiBtb2R1bGVzIG5vdyBjb21waWxlIGNsZWFubHkgd2hlbgorICBhc3NlcnQoKXMgYXJlIGVuYWJsZWQgaW4gc3RhbmRhcmQgYnVpbGRzICgtRERFQlVHIGZsYWcpLgorCiAtIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCiAgIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KIApAQCAtMzg1Miw2ICszODIzLDMzIEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCisgIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KKworLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCisgIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTA4ODE6IEZpeCB0ZXN0X3NpdGUgZmFpbHVyZSB3aXRoIE9TIFggZnJhbWV3b3JrIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTM5MDE6IFByZXZlbnQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZXMgb24gT1MgWCB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KKworLSBJc3N1ZSAjMTM4NjI6IEZpeCBzcHVyaW91cyBmYWlsdXJlIGluIHRlc3RfemxpYiBkdWUgdG8gcnVudGltZS9jb21waWxlIHRpbWUKKyAgbWlub3IgdmVyc2lvbnMgbm90IG1hdGNoaW5nLgorCistIElzc3VlICMxMjgwNDogRml4IHRlc3Rfc29ja2V0IGFuZCB0ZXN0X3VybGxpYjJuZXQgZmFpbHVyZXMgd2hlbiBydW5uaW5nIHRlc3RzCisgIG9uIGEgc3lzdGVtIHdpdGhvdXQgaW50ZXJuZXQgYWNjZXNzLgorCistIElzc3VlICMxMzcyNjogRml4IHRoZSBhbWJpZ3VvdXMgLVMgZmxhZyBpbiByZWdydGVzdC4gSXQgaXMgLW8vLS1zbG93IGZvciBzbG93CisgIHRlc3RzLgorCistIElzc3VlICMxMTY1OTogRml4IFJlc291cmNlV2FybmluZyBpbiB0ZXN0X3N1YnByb2Nlc3MgaW50cm9kdWNlZCBieSAjMTE0NTkuCisgIFBhdGNoIGJ5IEJlbiBIYXlkZW4uCisKKy0gSXNzdWUgIzExNTc3OiBmaXggUmVzb3VyY2VXYXJuaW5nIHRyaWdnZXJlZCBieSBpbXByb3ZlZCBiaW5oZXggdGVzdCBjb3ZlcmFnZQorCistIElzc3VlICMxMTUwOTogU2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIGZpbGVpbnB1dC4KKyAgUGF0Y2ggYnkgRGVudmVyIENvbmV5YmVhcmUgYXQgUHlDb24gMjAxMSBTcHJpbnRzLgorCiAtIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKIAogLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KQEAgLTQwMzAsNyArNDAyOCw3IEBACiAtIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQogICBBcmxlbgogCi0tIElzc3VlICMxMTQ5MDogdGVzdF9zdWJwcm9jZXNzOnRlc3RfbGVha2luZ19mZHNfb25fZXJyb3Igbm8gbG9uZ2VyIGdpdmVzIGEKKy0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3MudGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQogICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgogCiAtIElzc3VlICMxMTIyMzogRml4IHRlc3RfdGhyZWFkc2lnbmFscyB0byBmYWlsLCBub3QgaGFuZywgd2hlbiB0aGUKQEAgLTQwNTQsNiArNDA1MiwyMyBAQAogQy1BUEkKIC0tLS0tCiAKKy0gSXNzdWUgIzEzNDUyOiBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCgpIGRvZXNuJ3Qgc3VwcG9ydCBlcnJvciBoYW5kbGVycworICBkaWZmZXJlbnQgdGhhbiAic3RyaWN0IiBhbnltb3JlLiBUaGUgY2FsbGVyIHdhcyB1bmFibGUgdG8gY29tcHV0ZSB0aGUKKyAgc2l6ZSBvZiB0aGUgb3V0cHV0IGJ1ZmZlcjogaXQgZGVwZW5kcyBvbiB0aGUgZXJyb3IgaGFuZGxlci4KKworLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKKyAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bworICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCisKKy0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCisgIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCisgIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgorCistIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCisgIG5hcnJvdyBidWlsZC4KKwogLSBBZGQgUHlPYmplY3RfR2VuZXJpY0dldERpY3QgYW5kIFB5T2JqZWN0X0dlbmVyaVNldERpY3QuIFRoZXkgYXJlIGdlbmVyaWMKICAgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZ2V0dGVyIGFuZCBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvciBvZiBDCiAgIHR5cGVzLgpAQCAtNDA3OSw2ICs0MDk0LDI0IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzEzOTg5OiBEb2N1bWVudCB0aGF0IEd6aXBGaWxlIGRvZXMgbm90IHN1cHBvcnQgdGV4dCBtb2RlLCBhbmQgZ2l2ZSBhCisgIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIHdoZW4gb3BlbmVkIHdpdGggYW4gaW52YWxpZCBtb2RlIHN0cmluZy4KKworLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKKyAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCisgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorCistIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKKyAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCistIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KKworLSBJc3N1ZSAjOTM0MzogRG9jdW1lbnQgdGhhdCBhcmdwYXJzZSBwYXJlbnQgcGFyc2VycyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCisgIHRoZWlyIGNoaWxkcmVuLgorCistIElzc3VlICMxMzQ5ODogQ2xhcmlmeSBkb2NzIG9mIG9zLm1ha2VkaXJzKCkncyBleGlzdF9vayBhcmd1bWVudC4gIERvbmUgd2l0aAorICBncmVhdCBuYXRpdmUtc3BlYWtlciBoZWxwIGZyb20gUi4gRGF2aWQgTXVycmF5LgorCiAtIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KICAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgogCkBAIC05NjUyLDcgKzk2ODUsNyBAQAogCiAtIElzc3VlICMxMjEwOiBGaXhlZCBpbWFwbGliIGFuZCBpdHMgZG9jdW1lbnRhdGlvbi4KIAotLSBJc3N1ZSAjNDIzMzogQ2hhbmdlZCBzZW1hbnRpYyBvZiBgYF9maWxlaW8uRmlsZUlPYGAncyBgYGNsb3NlKClgYCAKKy0gSXNzdWUgIzQyMzM6IENoYW5nZWQgc2VtYW50aWMgb2YgYGBfZmlsZWlvLkZpbGVJT2BgJ3MgYGBjbG9zZSgpYGAKICAgbWV0aG9kIG9uIGZpbGUgb2JqZWN0cyB3aXRoIGNsb3NlZmQ9RmFsc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgc3RpbGwKICAga2VwdCBvcGVuIGJ1dCB0aGUgZmlsZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgCiAgIG9iamVjdCBhbHNvIGdvdCBhIG5ldyByZWFkb25seSBhdHRyaWJ1dGUgYGBjbG9zZWZkYGAuCkBAIC05Nzk2LDEzICs5ODI5LDEzIEBACiAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3Rpb24uCiAKIC0gSXNzdWUgIzM2Njg6IEZpeCBhIG1lbW9yeSBsZWFrIHdpdGggdGhlICJzKiIgYXJndW1lbnQgcGFyc2VyIGluCi0gIFB5QXJnX1BhcnNlVHVwbGUgYW5kIGZyaWVuZHMsIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIGFyZ3VtZW50IGZvciAicyoiIAorICBQeUFyZ19QYXJzZVR1cGxlIGFuZCBmcmllbmRzLCB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBhcmd1bWVudCBmb3IgInMqIgogICB3YXMgY29ycmVjdGx5IHBhcnNlZCBidXQgcGFyc2luZyBvZiBzdWJzZXF1ZW50IGFyZ3VtZW50cyBmYWlsZWQuCiAKIC0gSXNzdWUgIzM2MTE6IEFuIGV4Y2VwdGlvbiBfX2NvbnRleHRfXyBjb3VsZCBiZSBjbGVhcmVkIGluIGEgY29tcGxleCBwYXR0ZXJuCiAgIGludm9sdmluZyBhIF9fZGVsX18gbWV0aG9kIHJlLXJhaXNpbmcgYW4gZXhjZXB0aW9uLgogCi0tIElzc3VlICMyNTM0OiBzcGVlZCB1cCBpc2luc3RhbmNlKCkgYW5kIGlzc3ViY2xhc3MoKSBieSA1MC03MCUsIHNvIGFzIHRvIAorLSBJc3N1ZSAjMjUzNDogc3BlZWQgdXAgaXNpbnN0YW5jZSgpIGFuZCBpc3N1YmNsYXNzKCkgYnkgNTAtNzAlLCBzbyBhcyB0bwogICBtYXRjaCBQeXRob24gMi41IHNwZWVkIGRlc3BpdGUgdGhlIF9faW5zdGFuY2VjaGVja19fIC8gX19zdWJjbGFzc2NoZWNrX18KICAgbWVjaGFuaXNtLiBJbiB0aGUgcHJvY2VzcywgZml4IGEgYnVnIHdoZXJlIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpLAogICB3aGVuIGdpdmVuIGEgdHVwbGUgb2YgY2xhc3NlcyBhcyBzZWNvbmQgYXJndW1lbnQsIHdlcmUgbG9va2luZyB1cApAQCAtOTg4MCw3ICs5OTEzLDcgQEAKIAogLSBUaGUgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIHRoZSBjYW1lbENhc2UgdGhyZWFkaW5nIEFQSSBuYW1lcyB3ZXJlIHJlbW92ZWQuCiAKLS0gSXNzdWUgIzMxMTA6IG11bHRpcHJvY2Vzc2luZyBmYWlscyB0byBjb21waWVsIG9uIHNvbGFyaXMgMTAgZHVlIHRvIG1pc3NpbmcgCistIElzc3VlICMzMTEwOiBtdWx0aXByb2Nlc3NpbmcgZmFpbHMgdG8gY29tcGllbCBvbiBzb2xhcmlzIDEwIGR1ZSB0byBtaXNzaW5nCiAgIFNFTV9WQUxVRV9NQVguCiAKIEV4dGVuc2lvbiBNb2R1bGVzCkBAIC0yMTUxMiw3ICsyMTU0NSw3IEBACiAJQm93IHRvIGZvbnQtbG9jayBhdCB0aGUgZW5kIG9mIHRoZSBkb2NzdHJpbmcsIHNpbmNlIGl0IHRocm93cyBzdHVmZgogCW9mZi4KIAotCU1ha2Ugc3VyZSB0aGUgcGF0aCBwYXJhbWV0ZXIgdG8gcmVhZG1vZHVsZSgpIGlzIGEgbGlzdCBiZWZvcmUgYWRkaW5nIGl0CisJTWFrZSBzdXJlIHRoZSBwYXRoIHBhcmFtdGVyIHRvIHJlYWRtb2R1bGUoKSBpcyBhIGxpc3QgYmVmb3JlIGFkZGluZyBpdAogCXdpdGggc3lzLnBhdGgsIG9yIHRoZSBhZGRpdGlvbiBjb3VsZCBmYWlsLgogCiAKQEAgLTIxNTkzLDcgKzIxNjI2LDcgQEAKIAogLSBJbXByb3ZlZCBCZU9TIHN1cHBvcnQuCiAKLS0gU3VwcG9ydCBkeW5hbWljIGxvYWRpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBOZXRCU0QgcGxhdGZvcm1zIHRoYXQgCistIFN1cHBvcnQgZHluYW1pYyBsb2FkaW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMgb24gTmV0QlNEIHBsYXRmb3JtcyB0aGF0CiB1c2UgRUxGIChpLmUuLCBNSVBTIGFuZCBBbHBoYSBzeXN0ZW1zKS4KIAogQ29uZmlndXJhdGlvbi9idWlsZCBjaGFuZ2VzCkBAIC0yMTgxMCw3ICsyMTg0Myw3IEBACiBoaWdoZXItbGV2ZWwgY2xhc3NlcyBpbiBjb2RlLnB5LgogCiAtIHR1cnRsZS5weSBpcyBhIG5ldyBtb2R1bGUgZm9yIHNpbXBsZSB0dXJ0bGUgZ3JhcGhpY3MuICBJJ20gc3RpbGwKLXdvcmtpbmcgb24gaXQ7IGxldCBtZSBrbm93IGlmIHlvdSB1c2UgdGhpcyB0byB0ZWFjaCBQeXRob24gdG8gY2hpbGRyZW4gCit3b3JraW5nIG9uIGl0OyBsZXQgbWUga25vdyBpZiB5b3UgdXNlIHRoaXMgdG8gdGVhY2ggUHl0aG9uIHRvIGNoaWxkcmVuCiBvciBvdGhlciBub3ZpY2VzIHdpdGhvdXQgcHJpb3IgcHJvZ3JhbW1pbmcgZXhwZXJpZW5jZS4KIAogT2Jzb2xldGVkIGxpYnJhcnkgbW9kdWxlcwpAQCAtMjE5NDIsNyArMjE5NzUsNyBAQAogQ2hhbmdlcyB0byB0b29scwogLS0tLS0tLS0tLS0tLS0tLQogCi0tIE5ldywgaW1wcm92ZWQgdmVyc2lvbiBvZiBCYXJyeSBXYXJzYXcncyBNaXNjL3B5dGhvbi1tb2RlLmVsIChlZGl0aW5nIAorLSBOZXcsIGltcHJvdmVkIHZlcnNpb24gb2YgQmFycnkgV2Fyc2F3J3MgTWlzYy9weXRob24tbW9kZS5lbCAoZWRpdGluZwogc3VwcG9ydCBmb3IgRW1hY3MpLgogCiAtIHRhYm5hbm55LnB5OiBhZGRlZCBhIC1xICgncXVpZXQnKSBvcHRpb24gdG8gdGFibmFubnksIHdoaWNoIGNhdXNlcwpAQCAtMjIyMTcsNyArMjIyNTAsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0KIAogLSBJbnN0YWxsIHpsaWIuZGxsIGluIHRoZSBETExzIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGluIHRoZSB3aW4zMgotc3lzdGVtIGRpcmVjdG9yeSwgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgaGF2ZSAKK3N5c3RlbSBkaXJlY3RvcnksIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIGFwcGxpY2F0aW9ucyB0aGF0IGhhdmUKIHRoZWlyIG93biB6bGliLmRsbC4KIAogVGVzdCBTdWl0ZQpAQCAtMjIyOTcsNyArMjIzMzAsNyBAQAogc28gdGhhdCBhIHN5bWxpbmsgdG8gYSBzeW1saW5rIGNhbiB3b3JrLgogCiAtIEFkZGVkIGEgaGFjayBzbyB0aGF0IHdoZW4geW91IHR5cGUgJ3F1aXQnIG9yICdleGl0JyBhdCB0aGUKLWludGVycHJldGVyLCB5b3UgZ2V0IGEgZnJpZW5kbHkgZXhwbGFuYXRpb24gb2YgaG93IHRvIHByZXNzIEN0cmwtRCAob3IgCitpbnRlcnByZXRlciwgeW91IGdldCBhIGZyaWVuZGx5IGV4cGxhbmF0aW9uIG9mIGhvdyB0byBwcmVzcyBDdHJsLUQgKG9yCiBDdHJsLVopIHRvIGV4aXQuCiAKIC0gTmV3IGFuZCBpbXByb3ZlZCBNaXNjL3B5dGhvbi1tb2RlLmVsIChQeXRob24gbW9kZSBmb3IgRW1hY3MpLgpAQCAtMjI0NzAsMTMgKzIyNTAzLDEzIEBACiByYW5nZS4gIEFsc28sIHJhbmRpbnQoYSwgYikgaXMgbm93IHJlZGVmaW5lZCBhcyByYW5kcmFuZ2UoYSwgYisxKSwKIGFkZGluZyBleHRyYSByYW5nZSBhbmQgdHlwZSBjaGVja2luZyB0byBpdHMgYXJndW1lbnRzIQogCi0tIEFkZCBzb21lIHNlbWktdGhyZWFkLXNhZmV0eSB0byByYW5kb20uZ2F1c3MoKSAoaXQgdXNlZCB0byBiZSBhYmxlIHRvIAorLSBBZGQgc29tZSBzZW1pLXRocmVhZC1zYWZldHkgdG8gcmFuZG9tLmdhdXNzKCkgKGl0IHVzZWQgdG8gYmUgYWJsZSB0bwogY3Jhc2ggd2hlbiBpbnZva2VkIGZyb20gc2VwYXJhdGUgdGhyZWFkczsgbm93IHRoZSB3b3JzdCBpdCBjYW4gZG8gaXMKIGdpdmUgYSBkdXBsaWNhdGUgcmVzdWx0IG9jY2FzaW9uYWxseSkuCiAKIC0gU29tZSByZXN0cnVjdHVyaW5nIGFuZCBnZW5lcmFsaXphdGlvbiBkb25lIHRvIGNtZC5weS4KIAotLSBNYWpvciB1cGdyYWRlIHRvIENvbmZpZ1BhcnNlci5weTsgY29udmVydGVkIHRvIHVzaW5nICdyZScsIGFkZGVkIG5ldyAKKy0gTWFqb3IgdXBncmFkZSB0byBDb25maWdQYXJzZXIucHk7IGNvbnZlcnRlZCB0byB1c2luZyAncmUnLCBhZGRlZCBuZXcKIGV4Y2VwdGlvbnMsIHN1cHBvcnQgdW5kZXJzY29yZSBpbiBzZWN0aW9uIGhlYWRlciBhbmQgb3B0aW9uIG5hbWUuICBObwogbG9uZ2VyIGFkZCAnbmFtZScgb3B0aW9uIHRvIGV2ZXJ5IHNlY3Rpb247IGluc3RlYWQsIGFkZCAnX19uYW1lX18nLgogCkBAIC0yMjY3Myw3ICsyMjcwNiw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLQogCiAtIFRoZSByZWdpc3RyeSBrZXkgdXNlZCBpcyBub3cgIjEuNSIgaW5zdGVhZCBvZiAiMS41LngiIC0tIHNvIGZ1dHVyZQotdmVyc2lvbnMgb2YgMS41IGFuZCBNYXJrIEhhbW1vbmQncyB3aW4zMmFsbCBpbnN0YWxsZXIgZG9uJ3QgbmVlZCB0byBiZSAKK3ZlcnNpb25zIG9mIDEuNSBhbmQgTWFyayBIYW1tb25kJ3Mgd2luMzJhbGwgaW5zdGFsbGVyIGRvbid0IG5lZWQgdG8gYmUKIHJlc3luY2hyb25pemVkLgogCiBXaW5kb3dzIFRvb2xzCkBAIC0yMjc0MCw3ICsyMjc3Myw3IEBACiBkeW5hbWljYWxseSBhZGQgb25lIG9yIG1hbnkgZW50cmllcyB0byB0aGUgdGFibGUgb2YgYnVpbHQtaW4gbW9kdWxlcy4KIAogLSBOZXcgbWFjcm8gUHlfSW5pdE1vZHVsZTMobmFtZSwgbWV0aG9kcywgZG9jKSB3aGljaCBjYWxscwotUHlfSW5pdE1vZHVsZTQoKSB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4gIChUaGUgLTQgdmFyaWFudCByZXF1aXJlcyAKK1B5X0luaXRNb2R1bGU0KCkgd2l0aCBhcHByb3ByaWF0ZSBhcmd1bWVudHMuICAoVGhlIC00IHZhcmlhbnQgcmVxdWlyZXMKIHlvdSB0byBwYXNzIGFuIG9ic2N1cmUgdmVyc2lvbiBudW1iZXIgY29uc3RhbnQgd2hpY2ggaXMgYWx3YXlzIHRoZSBzYW1lLikKIAogLSBOZXcgQVBJcyBQeVN5c19Xcml0ZVN0ZG91dCgpIGFuZCBQeVN5c19Xcml0ZVN0ZGVycigpIHRvIHdyaXRlIHRvCkBAIC0yMjgxMiw3ICsyMjg0NSw3IEBACiBTeW50YXggY2hhbmdlCiAtLS0tLS0tLS0tLS0tCiAKLS0gVGhlIHJhaXNlIHN0YXRlbWVudCBjYW4gbm93IGJlIHVzZWQgd2l0aG91dCBhcmd1bWVudHMsIHRvIHJlLXJhaXNlIAorLSBUaGUgcmFpc2Ugc3RhdGVtZW50IGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cywgdG8gcmUtcmFpc2UKIGEgcHJldmlvdXNseSBzZXQgZXhjZXB0aW9uLiAgVGhpcyBzaG91bGQgYmUgdXNlZCBhZnRlciBjYXRjaGluZyBhbgogZXhjZXB0aW9uIHdpdGggYW4gZXhjZXB0IGNsYXVzZSBvbmx5LCBlaXRoZXIgaW4gdGhlIGV4Y2VwdCBjbGF1c2Ugb3IKIGxhdGVyIGluIHRoZSBzYW1lIGZ1bmN0aW9uLgpAQCAtMjI4NzEsNyArMjI5MDQsNyBAQAogCiAJRGVtby90a2ludGVyL2d1aWRvL3BhaW50LnB5IC0tIERhdmUgTWl0Y2hlbGwKIAlEZW1vL3NvY2tldHMvdW5peHNlcnZlci5weSAtLSBQaWV0IHZhbiBPb3N0cnVtCi0JCisKIAogLSBNdWNoIGJldHRlciBmcmVlemUgc3VwcG9ydC4gIFRoZSBmcmVlemUgc2NyaXB0IGNhbiBub3cgZnJlZXplCiBoaWVyYXJjaGljYWwgbW9kdWxlIG5hbWVzICh3aXRoIGEgY29ycmVzcG9uZGluZyBjaGFuZ2UgdG8gaW1wb3J0LmMpLApAQCAtMjMwMTAsNyArMjMwNDMsNyBAQAogLSBOZXcgY29tbWFuZCBzdXBwb3J0ZWQgYnkgdGhlIGZ0cGxpYiBtb2R1bGU6IHJtZCgpOyBhbHNvIGZpeGVkIHNvbWUKIG1pbm9yIGJ1Z3MuCiAKLS0gVGhlIHByb2ZpbGUgbW9kdWxlIG5vdyB1c2VzIGEgZGlmZmVyZW50IHRpbWVyIGZ1bmN0aW9uIGJ5IGRlZmF1bHQgLS0gCistIFRoZSBwcm9maWxlIG1vZHVsZSBub3cgdXNlcyBhIGRpZmZlcmVudCB0aW1lciBmdW5jdGlvbiBieSBkZWZhdWx0IC0tCiB0aW1lLmNsb2NrKCkgaXMgZ2VuZXJhbGx5IGJldHRlciB0aGFuIG9zLnRpbWVzKCkuICBUaGlzIG1ha2VzIGl0IHdvcmsKIGJldHRlciBvbiBXaW5kb3dzIE5ULCB0b28uCiAKQEAgLTIzMDQ5LDE0ICsyMzA4MiwxNCBAQAogLSBJbiB0aGUgbXVsdGlmaWxlIG1vZHVsZSwgc3VwcG9ydCB0aGUgb3B0aW9uYWwgc2Vjb25kIHBhcmFtZXRlciB0bwogc2VlaygpIHdoZW4gcG9zc2libGUuCiAKLS0gU2V2ZXJhbCBmaXhlcyB0byB0aGUgZ29waGVybGliIG1vZHVsZSBieSBMYXJzIE1hcml1cyBHYXJzaG9sLiAgQWxzbywgCistIFNldmVyYWwgZml4ZXMgdG8gdGhlIGdvcGhlcmxpYiBtb2R1bGUgYnkgTGFycyBNYXJpdXMgR2Fyc2hvbC4gIEFsc28sCiB1cmxwYXJzZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgR29waGVyIFVSTHMgd2l0aCBxdWVyeSBzdHJpbmdzLgogCiAtIEZpeGVkIGEgdGlueSBidWcgaW4gZm9ybWF0X2V4Y2VwdGlvbigpIGluIHRoZSB0cmFjZWJhY2sgbW9kdWxlLgogQWxzbyByZXdyaXRlIHRiX2xpbmVubygpIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBKUHl0aG9uIChhbmQgbm90CiBkaXN0dXJiIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiEpOyBieSBKaW0gSHVndW5pbi4KIAotLSBUaGUgaHR0cGxpYiBtb2R1bGUgaXMgbW9yZSByb2J1c3Qgd2hlbiBzZXJ2ZXJzIHNlbmQgYSBzaG9ydCByZXNwb25zZSAKKy0gVGhlIGh0dHBsaWIgbW9kdWxlIGlzIG1vcmUgcm9idXN0IHdoZW4gc2VydmVycyBzZW5kIGEgc2hvcnQgcmVzcG9uc2UKIC0tIGNvdXJ0ZXN5IFRpbSBPJ01hbGxleS4KIAogVGtpbnRlciBhbmQgZnJpZW5kcwpAQCAtMjMwNzEsNyArMjMxMDQsNyBAQAogbm8gbG9uZ2VyIHVzZSB0aGUgZGVmYXVsdCByb290LgogCiAtIFRoZSBpbnRlcmZhY2VzIGZvciB0aGUgYmluZCooKSBhbmQgdW5iaW5kKCkgd2lkZ2V0IG1ldGhvZHMgaGF2ZSBiZWVuCi1yZWRlc2lnbmVkOyB0aGUgYmluZCooKSBtZXRob2RzIG5vdyByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIFRjbCBjb21tYW5kIAorcmVkZXNpZ25lZDsgdGhlIGJpbmQqKCkgbWV0aG9kcyBub3cgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBUY2wgY29tbWFuZAogY3JlYXRlZCBmb3IgdGhlIGNhbGxiYWNrLCBhbmQgdGhpcyBjYW4gYmUgcGFzc2VkIGFzIGEgb3B0aW9uYWwKIGFyZ3VtZW50IHRvIHVuYmluZCgpIGluIG9yZGVyIHRvIGRlbGV0ZSB0aGUgY29tbWFuZCAobm9ybWFsbHksIHN1Y2gKIGNvbW1hbmRzIGFyZSBhdXRvbWF0aWNhbGx5IHVuYm91bmQgd2hlbiB0aGUgd2lkZ2V0IGlzIGRlc3Ryb3llZCwgYnV0CkBAIC0yMzEwNyw3ICsyMzE0MCw3IEBACiBkaWN0aW9uYXJ5IHRvIGFsbG93IHJlY3Vyc2l2ZSBjb250YWluZXIgdHlwZXMgdG8gZGV0ZWN0IHJlY3Vyc2lvbiBpbgogdGhlaXIgcmVwcigpLCBzdHIoKSBhbmQgcHJpbnQgaW1wbGVtZW50YXRpb25zLgogCi0tIE5ldyBmdW5jdGlvbiBQeU9iamVjdF9Ob3QoeCkgY2FsY3VsYXRlcyAobm90IHgpIGFjY29yZGluZyB0byBQeXRob24ncyAKKy0gTmV3IGZ1bmN0aW9uIFB5T2JqZWN0X05vdCh4KSBjYWxjdWxhdGVzIChub3QgeCkgYWNjb3JkaW5nIHRvIFB5dGhvbidzCiBzdGFuZGFyZCBydWxlcyAoYmFzaWNhbGx5LCBpdCBuZWdhdGVzIHRoZSBvdXRjb21lIFB5T2JqZWN0X0lzVHJ1ZSh4KS4KIAogLSBOZXcgZnVuY3Rpb24gX1B5TW9kdWxlX0NsZWFyKCksIHdoaWNoIGNsZWFycyBhIG1vZHVsZSdzIGRpY3Rpb25hcnkKQEAgLTIzMjY4LDcgKzIzMzAxLDcgQEAKIGluc3RhbmNlcyB3aXRoIGNvcHkucHkuICBUaGUgY1BpY2tsZS5jIGNoYW5nZXMgYW5kIHNvbWUgcGlja2xlLnB5CiBjaGFuZ2VzIGFyZSBjb3VydGVzeSBKaW0gRnVsdG9uLgogCi0tIExvY2FsZSBzdXBwb3J0IGluIGhlICJyZSIgKFBlcmwgcmVndWxhciBleHByZXNzaW9ucykgbW9kdWxlLiAgVXNlIAorLSBMb2NhbGUgc3VwcG9ydCBpbiBoZSAicmUiIChQZXJsIHJlZ3VsYXIgZXhwcmVzc2lvbnMpIG1vZHVsZS4gIFVzZQogdGhlIGZsYWcgcmUuTCAob3IgcmUuTE9DQUxFKSB0byBlbmFibGUgbG9jYWxlLXNwZWNpZmljIG1hdGNoaW5nCiBydWxlcyBmb3IgXHcgYW5kIFxiLiAgVGhlIGluLWxpbmUgc3ludGF4IGZvciB0aGlzIGZsYWcgaXMgKD9MKS4KIApAQCAtMjMzMzQsNyArMjMzNjcsNyBAQAogCiAtIFNvbWUgaW1wcm92ZW1lbnRzIHRvIHRoZSBfdGtpbnRlciBidWlsZCBsaW5lIHN1Z2dlc3RlZCBieSBDYXNlIFJvb2xlLgogCi0tIEEgZnVsbCBzdWl0ZSBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcyBmb3IgTmV0QlNEIDEueCwgc3VibWl0dGVkIGJ5IAorLSBBIGZ1bGwgc3VpdGUgb2YgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMgZm9yIE5ldEJTRCAxLngsIHN1Ym1pdHRlZCBieQogQW5kZXJzIEFuZGVyc2VuLgogCiAtIE5ldyBTb2xhcmlzIHNwZWNpZmljIGhlYWRlciBTVFJPUFRTLnB5LgpAQCAtMjM0MDQsNyArMjM0MzcsNyBAQAogaWYgdGhlcmUgYXJlIGxvdHMgb2YgZHVwbGljYXRlcywgYW5kIG90aGVyd2lzZSBhdCBsZWFzdCBhcyBnb29kLgogCiAtIEFkZGVkICJ1dWUiIGFzIGFuIGFsaWFzIGZvciAidXVlbmNvZGUiIHRvIG1pbWV0b29scy5weS4gIChIbSwgdGhlCi11dWRlY29kZSBidWcgd2hlcmUgaXQgY29tcGxhaW50cyBhYm91dCB0cmFpbGluZyBnYXJiYWdlIGlzIHN0aWxsIHRoZXJlIAordXVkZWNvZGUgYnVnIHdoZXJlIGl0IGNvbXBsYWludHMgYWJvdXQgdHJhaWxpbmcgZ2FyYmFnZSBpcyBzdGlsbCB0aGVyZQogOi0oICkuCiAKIC0gcGlja2xlLnB5IHJlcXVpcmVzIGludGVnZXJzIGluIHRleHQgbW9kZSB0byBiZSBpbiBkZWNpbWFsIG5vdGF0aW9uCkBAIC0yMzU2NCw3ICsyMzU5Nyw3IEBACiAtIFRoZSB3YXJuaW5nIGFib3V0IGEgdGhyZWFkIHN0aWxsIGhhdmluZyBhIGZyYW1lIG5vdyBvbmx5IGhhcHBlbnMgaW4KIHZlcmJvc2UgbW9kZS4KIAotLSBDaGFuZ2UgdGhlIHNpZ25hbCBmaW5hbGl6YXRpb24gc28gdGhhdCBpdCBhbHNvIHJlc2V0cyB0aGUgc2lnbmFsCistIENoYW5nZSB0aGUgc2lnbmFsIGZpbmlhbGl6YXRpb24gc28gdGhhdCBpdCBhbHNvIHJlc2V0cyB0aGUgc2lnbmFsCiBoYW5kbGVycy4gIEFmdGVyIHRoaXMgaGFzIGJlZW4gY2FsbGVkLCBvdXIgc2lnbmFsIGhhbmRsZXJzIGFyZSBubwogbG9uZ2VyIGFjdGl2ZSEKIApAQCAtMjQxODAsNyArMjQyMTMsNyBAQAogVGhlIFB5dGhvbi9DIEFQSSBmb3IgZnJhbWVzIGlzIGNoYW5nZWQgKHlvdSBzaG91bGRuJ3QgYmUgdXNpbmcgdGhpcwogYW55d2F5KS4KIAotLSBTaWduaWZpY2FudCBzcGVlZHVwIGJ5IGlubGluaW5nIHNvbWUgY29tbW9uIG9wY29kZXMgZm9yIGNvbW1vbiBvcGVyYW5kIAorLSBTaWduaWZpY2FudCBzcGVlZHVwIGJ5IGlubGluaW5nIHNvbWUgY29tbW9uIG9wY29kZXMgZm9yIGNvbW1vbiBvcGVyYW5kCiB0eXBlcyAoZS5nLiAgaStpLCBpLWksIGFuZCBsaXN0W2ldKS4gIEZyZWRyaWsgTHVuZGguCiAKIC0gU21hbGwgc3BlZWR1cCBieSByZW9yZGVyaW5nIHRoZSBtZXRob2QgdGFibGVzIG9mIHNvbWUgY29tbW9uCkBAIC0yNDIwNiwzNCArMjQyMzksMzQgQEAKIHByaW50aW5nIHRoZSBkb2N1bWVudGF0aW9uIG5vdyBraWxscyBmZXdlciB0cmVlcyAtLSB0aGUgbWFyZ2lucyBoYXZlCiBiZWVuIHJlZHVjZWQuCiAKLS0gSSBoYXZlIHN0YXJ0ZWQgZG9jdW1lbnRpbmcgdGhlIFB5dGhvbi9DIEFQSS4gVW5mb3J0dW5hdGVseSB0aGlzIHByb2plY3QgCi1oYXNuJ3QgYmVlbiBjb21wbGV0ZWQgeWV0LiAgSXQgd2lsbCBiZSBjb21wbGV0ZSBiZWZvcmUgdGhlIGZpbmFsIHJlbGVhc2Ugb2YgCi1QeXRob24gMS41LCB0aG91Z2guICBBdCB0aGUgbW9tZW50LCBpdCdzIGJldHRlciB0byByZWFkIHRoZSBMYVRlWCBzb3VyY2UgCistIEkgaGF2ZSBzdGFydGVkIGRvY3VtZW50aW5nIHRoZSBQeXRob24vQyBBUEkuIFVuZm9ydHVuYXRlbHkgdGhpcyBwcm9qZWN0CitoYXNuJ3QgYmVlbiBjb21wbGV0ZWQgeWV0LiAgSXQgd2lsbCBiZSBjb21wbGV0ZSBiZWZvcmUgdGhlIGZpbmFsIHJlbGVhc2Ugb2YKK1B5dGhvbiAxLjUsIHRob3VnaC4gIEF0IHRoZSBtb21lbnQsIGl0J3MgYmV0dGVyIHRvIHJlYWQgdGhlIExhVGVYIHNvdXJjZQogdGhhbiB0byBhdHRlbXB0IHRvIHJ1biBpdCB0aHJvdWdoIExhVGVYIGFuZCBwcmludCB0aGUgcmVzdWx0aW5nIGR2aSBmaWxlLgogCi0tIFRoZSBwb3NpeCBtb2R1bGUgKGFuZCBoZW5jZSBvcy5weSkgbm93IGhhcyBkb2Mgc3RyaW5ncyEgIFRoYW5rcyB0byBOZWlsIAotU2NoZW1lbmF1ZXIuICBJIHJlY2VpdmVkIGEgZmV3IG90aGVyIGNvbnRyaWJ1dGlvbnMgb2YgZG9jIHN0cmluZ3MuICBJbiBtb3N0IAorLSBUaGUgcG9zaXggbW9kdWxlIChhbmQgaGVuY2Ugb3MucHkpIG5vdyBoYXMgZG9jIHN0cmluZ3MhICBUaGFua3MgdG8gTmVpbAorU2NoZW1lbmF1ZXIuICBJIHJlY2VpdmVkIGEgZmV3IG90aGVyIGNvbnRyaWJ1dGlvbnMgb2YgZG9jIHN0cmluZ3MuICBJbiBtb3N0CiBvdGhlciBwbGFjZXMsIGRvYyBzdHJpbmdzIGFyZSBzdGlsbCB3aXNoZnVsIHRoaW5raW5nLi4uCiAKIAogTGFuZ3VhZ2UgY2hhbmdlcwogLS0tLS0tLS0tLS0tLS0tLQogCi0tIFByaXZhdGUgdmFyaWFibGVzIHdpdGggbGVhZGluZyBkb3VibGUgdW5kZXJzY29yZSBhcmUgbm93IGEgcGVybWFuZW50IAotZmVhdHVyZSBvZiB0aGUgbGFuZ3VhZ2UuICAoVGhlc2Ugd2VyZSBleHBlcmltZW50YWwgaW4gcmVsZWFzZSAxLjQuICBJIGhhdmUgCi1mYXZvcmFibGUgZXhwZXJpZW5jZSB1c2luZyB0aGVtOyBJIGNhbid0IGxhYmVsIHRoZW0gImV4cGVyaW1lbnRhbCIgCistIFByaXZhdGUgdmFyaWFibGVzIHdpdGggbGVhZGluZyBkb3VibGUgdW5kZXJzY29yZSBhcmUgbm93IGEgcGVybWFuZW50CitmZWF0dXJlIG9mIHRoZSBsYW5ndWFnZS4gIChUaGVzZSB3ZXJlIGV4cGVyaW1lbnRhbCBpbiByZWxlYXNlIDEuNC4gIEkgaGF2ZQorZmF2b3JhYmxlIGV4cGVyaWVuY2UgdXNpbmcgdGhlbTsgSSBjYW4ndCBsYWJlbCB0aGVtICJleHBlcmltZW50YWwiCiBmb3JldmVyLikKIAotLSBUaGVyZSdzIG5ldyBzdHJpbmcgbGl0ZXJhbCBzeW50YXggZm9yICJyYXcgc3RyaW5ncyIuICBQcmVmaXhpbmcgYSBzdHJpbmcgCi1saXRlcmFsIHdpdGggdGhlIGxldHRlciByIChvciBSKSBkaXNhYmxlcyBhbGwgZXNjYXBlIHByb2Nlc3NpbmcgaW4gdGhlIAotc3RyaW5nOyBmb3IgZXhhbXBsZSwgcidcbicgaXMgYSB0d28tY2hhcmFjdGVyIHN0cmluZyBjb25zaXN0aW5nIG9mIGEgCi1iYWNrc2xhc2ggZm9sbG93ZWQgYnkgdGhlIGxldHRlciBuLiAgVGhpcyBjb21iaW5lcyB3aXRoIGFsbCBmb3JtcyBvZiBzdHJpbmcgCi1xdW90ZXM7IGl0IGlzIGFjdHVhbGx5IHVzZWZ1bCBmb3IgdHJpcGxlIHF1b3RlZCBkb2Mgc3RyaW5ncyB3aGljaCBtaWdodCAKLWNvbnRhaW4gcmVmZXJlbmNlcyB0byBcbiBvciBcdC4gIEFuIGVtYmVkZGVkIHF1b3RlIHByZWZpeGVkIHdpdGggYSAKLWJhY2tzbGFzaCBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlIHN0cmluZywgYnV0IHRoZSBiYWNrc2xhc2ggaXMgc3RpbGwgCi1pbmNsdWRlZCBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgcidcJycgaXMgYSB0d28tY2hhcmFjdGVyIHN0cmluZyAKLWNvbnNpc3Rpbmcgb2YgYSBiYWNrc2xhc2ggYW5kIGEgcXVvdGUuICAoUmF3IHN0cmluZ3MgYXJlIGFsc28gCi1hZmZlY3Rpb25hdGVseSBrbm93biBhcyBSb2JpbiBzdHJpbmdzLCBhZnRlciB0aGVpciBpbnZlbnRvciwgUm9iaW4gCistIFRoZXJlJ3MgbmV3IHN0cmluZyBsaXRlcmFsIHN5bnRheCBmb3IgInJhdyBzdHJpbmdzIi4gIFByZWZpeGluZyBhIHN0cmluZworbGl0ZXJhbCB3aXRoIHRoZSBsZXR0ZXIgciAob3IgUikgZGlzYWJsZXMgYWxsIGVzY2FwZSBwcm9jZXNzaW5nIGluIHRoZQorc3RyaW5nOyBmb3IgZXhhbXBsZSwgcidcbicgaXMgYSB0d28tY2hhcmFjdGVyIHN0cmluZyBjb25zaXN0aW5nIG9mIGEKK2JhY2tzbGFzaCBmb2xsb3dlZCBieSB0aGUgbGV0dGVyIG4uICBUaGlzIGNvbWJpbmVzIHdpdGggYWxsIGZvcm1zIG9mIHN0cmluZworcXVvdGVzOyBpdCBpcyBhY3R1YWxseSB1c2VmdWwgZm9yIHRyaXBsZSBxdW90ZWQgZG9jIHN0cmluZ3Mgd2hpY2ggbWlnaHQKK2NvbnRhaW4gcmVmZXJlbmNlcyB0byBcbiBvciBcdC4gIEFuIGVtYmVkZGVkIHF1b3RlIHByZWZpeGVkIHdpdGggYQorYmFja3NsYXNoIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgc3RyaW5nLCBidXQgdGhlIGJhY2tzbGFzaCBpcyBzdGlsbAoraW5jbHVkZWQgaW4gdGhlIHN0cmluZzsgZm9yIGV4YW1wbGUsIHInXCcnIGlzIGEgdHdvLWNoYXJhY3RlciBzdHJpbmcKK2NvbnNpc3Rpbmcgb2YgYSBiYWNrc2xhc2ggYW5kIGEgcXVvdGUuICAoUmF3IHN0cmluZ3MgYXJlIGFsc28KK2FmZmVjdGlvbmF0ZWx5IGtub3duIGFzIFJvYmluIHN0cmluZ3MsIGFmdGVyIHRoZWlyIGludmVudG9yLCBSb2JpbgogRnJpZWRyaWNoLikKIAogLSBUaGVyZSdzIGEgc2ltcGxlIGFzc2VydCBzdGF0ZW1lbnQsIGFuZCBhIG5ldyBleGNlcHRpb24KQEAgLTI0MjYyLDEwICsyNDI5NSwxMCBAQAogLSBUaGUgb2Jzb2xldGUgZXhjZXB0aW9uIENvbmZsaWN0RXJyb3IgKHByZXN1bWFibHkgdXNlZCBieSB0aGUgbG9uZwogb2Jzb2xldGUgYWNjZXNzIHN0YXRlbWVudCkgaGFzIGJlZW4gZGVsZXRlZC4KIAotLSBUaGVyZSdzIGEgbmV3IGZ1bmN0aW9uIHN5cy5leGNfaW5mbygpIHdoaWNoIHJldHVybnMgdGhlIHR1cGxlIAorLSBUaGVyZSdzIGEgbmV3IGZ1bmN0aW9uIHN5cy5leGNfaW5mbygpIHdoaWNoIHJldHVybnMgdGhlIHR1cGxlCiAoc3lzLmV4Y190eXBlLCBzeXMuZXhjX3ZhbHVlLCBzeXMuZXhjX3RyYWNlYmFjaykgaW4gYSB0aHJlYWQtc2FmZSB3YXkuCiAKLS0gVGhlcmUncyBhIG5ldyB2YXJpYWJsZSBzeXMuZXhlY3V0YWJsZSwgcG9pbnRpbmcgdG8gdGhlIGV4ZWN1dGFibGUgZmlsZSAKKy0gVGhlcmUncyBhIG5ldyB2YXJpYWJsZSBzeXMuZXhlY3V0YWJsZSwgcG9pbnRpbmcgdG8gdGhlIGV4ZWN1dGFibGUgZmlsZQogZm9yIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuCiAKIC0gVGhlIHNvcnQoKSBtZXRob2RzIGZvciBsaXN0cyBubyBsb25nZXIgdXNlcyB0aGUgQyBsaWJyYXJ5IHFzb3J0KCk7IEkKQEAgLTI0MjkxLDExICsyNDMyNCwxMSBAQAogcmV0dXJuaW5nIGZyb20gYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24uCiAKIC0gVGhlcmUncyBhIG5ldyAiYnVmZmVyIiBpbnRlcmZhY2UuICBDZXJ0YWluIG9iamVjdHMgKGUuZy4gc3RyaW5ncyBhbmQKLWFycmF5cykgbm93IHN1cHBvcnQgdGhlICJidWZmZXIiIHByb3RvY29sLiAgQnVmZmVyIG9iamVjdHMgYXJlIGFjY2VwdGFibGUgCi13aGVuZXZlciBmb3JtZXJseSBhIHN0cmluZyB3YXMgcmVxdWlyZWQgZm9yIGEgd3JpdGUgb3BlcmF0aW9uOyBtdXRhYmxlIAorYXJyYXlzKSBub3cgc3VwcG9ydCB0aGUgImJ1ZmZlciIgcHJvdG9jb2wuICBCdWZmZXIgb2JqZWN0cyBhcmUgYWNjZXB0YWJsZQord2hlbmV2ZXIgZm9ybWVybHkgYSBzdHJpbmcgd2FzIHJlcXVpcmVkIGZvciBhIHdyaXRlIG9wZXJhdGlvbjsgbXV0YWJsZQogYnVmZmVyIG9iamVjdHMgY2FuIGJlIHRoZSB0YXJnZXQgb2YgYSByZWFkIG9wZXJhdGlvbiB1c2luZyB0aGUgY2FsbAotZi5yZWFkaW50byhidWZmZXIpLiAgQSBjb29sIGZlYXR1cmUgaXMgdGhhdCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgbm93IAotYWxzbyB3b3JrIG9uIGFycmF5IG9iamVjdHMuICBDb250cmlidXRpb24gYnkgSmFjayBKYW5zZW4uICAoTmVlZHMgCitmLnJlYWRpbnRvKGJ1ZmZlcikuICBBIGNvb2wgZmVhdHVyZSBpcyB0aGF0IHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBub3cKK2Fsc28gd29yayBvbiBhcnJheSBvYmplY3RzLiAgQ29udHJpYnV0aW9uIGJ5IEphY2sgSmFuc2VuLiAgKE5lZWRzCiBkb2N1bWVudGF0aW9uLikKIAogLSBTdHJpbmcgaW50ZXJuaW5nOiBkaWN0aW9uYXJ5IGxvb2t1cHMgYXJlIGZhc3RlciB3aGVuIHRoZSBsb29rdXAKQEAgLTI0NTg3LDcgKzI0NjIwLDcgQEAKIG9mIG1lc3NhZ2Ugc2VxdWVuY2Ugc3BlY2lmaWVycyB3aXRob3V0IGludm9raW5nIGEgc3VicHJvY2Vzcy4gIEFsc28KIGFkZGVkIGEgY3JlYXRlbWVzc2FnZSgpIG1ldGhvZCBieSBMYXJzIFdpcnplbml1cy4KIAotLSBUaGUgU3RyaW5nSU8uU3RyaW5nSU8gY2xhc3Mgbm93IHN1cHBvcnRzIHJlYWRsaW5lKG5ieXRlcykuICAoTGFycyAKKy0gVGhlIFN0cmluZ0lPLlN0cmluZ0lPIGNsYXNzIG5vdyBzdXBwb3J0cyByZWFkbGluZShuYnl0ZXMpLiAgKExhcnMKIFdpcnplbml1cy4pICAoT2YgY291cnNlLCB5b3Ugc2hvdWxkIGJlIHVzaW5nIGNTdHJpbmdJTyBmb3IgcGVyZm9ybWFuY2UuKQogCiAtIFVzZXJEaWN0LnB5IHN1cHBvcnRzIHRoZSBuZXcgZGljdGlvbmFyeSBtZXRob2RzIGFzIHdlbGwuCkBAIC0yNDYzNSw4ICsyNDY2OCw4IEBACiAtIFZhcmlvdXMgc21hbGwgZml4ZXMgdG8gdGhlIG5udHBsaWIucHkgbW9kdWxlIHRoYXQgSSBjYW4ndCBib3RoZXIgdG8KIGRvY3VtZW50IGluIGRldGFpbC4KIAotLSBTam9lcmQgTXVsbGVuZGVyJ3MgbWltaWZ5LnB5IG1vZHVsZSBub3cgc3VwcG9ydHMgYmFzZTY0IGVuY29kaW5nIGFuZCAKLWluY2x1ZGVzIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGZ1bm55IGVuY29kaW5nIHlvdSBzb21ldGltZXMgc2VlIGluIG1haWwgCistIFNqb2VyZCBNdWxsZW5kZXIncyBtaW1pZnkucHkgbW9kdWxlIG5vdyBzdXBwb3J0cyBiYXNlNjQgZW5jb2RpbmcgYW5kCitpbmNsdWRlcyBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBmdW5ueSBlbmNvZGluZyB5b3Ugc29tZXRpbWVzIHNlZSBpbiBtYWlsCiBoZWFkZXJzLiAgSXQgaXMgbm93IGRvY3VtZW50ZWQuCiAKIC0gbWFpbGJveC5weTogQWRkZWQgQmFieWxNYWlsYm94LiAgSW1wcm92ZWQgdGhlIHdheSB0aGUgbWFpbGJveCBpcwpAQCAtMjQ5ODcsMjMgKzI1MDIwLDIzIEBACiBOVCAodGhlIG9sZCBWQysrIDQuMiBNYWtlZmlsZSBpcyBhbHNvIHN0aWxsIHN1cHBvcnRlZCwgYnV0IHdpbGwKIGV2ZW50dWFsbHkgYmUgd2l0aGRyYXduIGR1ZSB0byBpdHMgYnVsa2luZXNzKS4KIAotLSBTZWUgdGhlIG5vdGUgb24gdGhlIG5ldyBtb2R1bGUgc2VhcmNoIHBhdGggaW4gdGhlICJNaXNjZWxsYW5lb3VzIiBzZWN0aW9uIAorLSBTZWUgdGhlIG5vdGUgb24gdGhlIG5ldyBtb2R1bGUgc2VhcmNoIHBhdGggaW4gdGhlICJNaXNjZWxsYW5lb3VzIiBzZWN0aW9uCiBhYm92ZS4KIAogLSBTdXBwb3J0IGZvciBXaW4zMnMgKHRoZSAzMi1iaXQgV2luZG93cyBBUEkgdW5kZXIgV2luZG93cyAzLjEpIGlzCiBiYXNpY2FsbHkgd2l0aGRyYXduLiAgSWYgaXQgc3RpbGwgd29ya3MgZm9yIHlvdSwgeW91J3JlIGx1Y2t5LgogCi0tIFRoZXJlJ3MgYSBuZXcgZXh0ZW5zaW9uIG1vZHVsZSwgbXN2Y3J0LmMsIHdoaWNoIHByb3ZpZGVzIHZhcmlvdXMgCi1sb3ctbGV2ZWwgb3BlcmF0aW9ucyBkZWZpbmVkIGluIHRoZSBNaWNyb3NvZnQgVmlzdWFsIEMrKyBSdW50aW1lIExpYnJhcnkuICAKLVRoZXNlIGluY2x1ZGUgbG9ja2luZygpLCBzZXRtb2RlKCksIGdldF9vc2ZoYW5kbGUoKSwgc2V0X29zZmhhbmRsZSgpLCBhbmQgCistIFRoZXJlJ3MgYSBuZXcgZXh0ZW5zaW9uIG1vZHVsZSwgbXN2Y3J0LmMsIHdoaWNoIHByb3ZpZGVzIHZhcmlvdXMKK2xvdy1sZXZlbCBvcGVyYXRpb25zIGRlZmluZWQgaW4gdGhlIE1pY3Jvc29mdCBWaXN1YWwgQysrIFJ1bnRpbWUgTGlicmFyeS4KK1RoZXNlIGluY2x1ZGUgbG9ja2luZygpLCBzZXRtb2RlKCksIGdldF9vc2ZoYW5kbGUoKSwgc2V0X29zZmhhbmRsZSgpLCBhbmQKIGNvbnNvbGUgSS9PIGZ1bmN0aW9ucyBsaWtlIGtiaGl0KCksIGdldGNoKCkgYW5kIHB1dGNoKCkuCiAKIC0gVGhlIC11IG9wdGlvbiBub3Qgb25seSBzZXRzIHRoZSBzdGFuZGFyZCBJL08gc3RyZWFtcyB0byB1bmJ1ZmZlcmVkCiBzdGF0dXMsIGJ1dCBhbHNvIHNldHMgdGhlbSBpbiBiaW5hcnkgbW9kZS4gIChUaGlzIGNhbiBhbHNvIGJlIGRvbmUKIHVzaW5nIG1zdmNydC5zZXRtb2RlKCksIGJ5IHRoZSB3YXkuKQogCi0tIFRoZSwgc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IHZhcmlhYmxlcyBwb2ludCB0byB0aGUgZGlyZWN0b3J5IAotd2hlcmUgUHl0aG9uIGlzIGluc3RhbGxlZCwgb3IgdG8gdGhlIHRvcCBvZiB0aGUgc291cmNlIHRyZWUsIGlmIGl0IHdhcyBydW4gCistIFRoZSwgc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IHZhcmlhYmxlcyBwb2ludCB0byB0aGUgZGlyZWN0b3J5Cit3aGVyZSBQeXRob24gaXMgaW5zdGFsbGVkLCBvciB0byB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgdHJlZSwgaWYgaXQgd2FzIHJ1bgogZnJvbSB0aGVyZS4KIAogLSBUaGUgdmFyaW91cyBvcy5wYXRoIG1vZHVsZXMgKHBvc2l4cGF0aCwgbnRwYXRoLCBtYWNwYXRoKSBub3cgc3VwcG9ydApAQCAtMjUwMTEsNyArMjUwNDQsNyBAQAogb3MucGF0aC5qb2luKGEsIGIsIGMpIGlzIHRoZSBzYW1lIGFzIG9zLnBhdGguam9pbihhLCBvcy5wYXRoLmpvaW4oYiwKIGMpKS4KIAotLSBUaGUgbnRwYXRoIG1vZHVsZSAobm9ybWFsbHkgdXNlZCBhcyBvcy5wYXRoKSBzdXBwb3J0cyB+IHRvICRIT01FIAorLSBUaGUgbnRwYXRoIG1vZHVsZSAobm9ybWFsbHkgdXNlZCBhcyBvcy5wYXRoKSBzdXBwb3J0cyB+IHRvICRIT01FCiBleHBhbnNpb24gaW4gZXhwYW5kdXNlcigpLgogCiAtIFRoZSBmcmVlemUgdG9vbCBub3cgd29ya3Mgb24gV2luZG93cy4KQEAgLTI1MzA5LDQ3ICsyNTM0Miw0NyBAQAogCiAtIE5ldyBtb2R1bGUgd2hpY2hkYiByZWNvZ25pemVzIGRibSwgZ2RibSBhbmQgYnNkZGIvZGJoYXNoIGZpbGVzLgogCi0tIFRoZSBEb2MvTWFrZWZpbGUgdGFyZ2V0cyBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgc29tZXdoYXQgdG8gcmVtb3ZlIHRoZSAKKy0gVGhlIERvYy9NYWtlZmlsZSB0YXJnZXRzIGhhdmUgYmVlbiByZW9yZ2FuaXplZCBzb21ld2hhdCB0byByZW1vdmUgdGhlCiBpbnNpc3RlbmNlIG9uIGFsd2F5cyBnZW5lcmF0aW5nIFBvc3RTY3JpcHQuCiAKIC0gVGhlIHRleGluZm8gdG8gaHRtbCBmaWx0ZXIgKERvYy90ZXhpMmh0bWwucHkpIGhhcyBiZWVuIGltcHJvdmVkIHNvbWV3aGF0LgogCi0tICJlcnJvcnMuaCIgaGFzIGJlZW4gcmVuYW1lZCB0byAicHllcnJvcnMuaCIgdG8gcmVzb2x2ZSBhIGxvbmctc3RhbmRpbmcgCistICJlcnJvcnMuaCIgaGFzIGJlZW4gcmVuYW1lZCB0byAicHllcnJvcnMuaCIgdG8gcmVzb2x2ZSBhIGxvbmctc3RhbmRpbmcKIG5hbWUgY29uZmxpY3Qgb24gdGhlIE1hYy4KIAotLSBMaW5raW5nIGEgbW9kdWxlIGNvbXBpbGVkIHdpdGggYSBkaWZmZXJlbnQgc2V0dGluZyBmb3IgUHlfVFJBQ0VfUkVGUyBub3cgCistIExpbmtpbmcgYSBtb2R1bGUgY29tcGlsZWQgd2l0aCBhIGRpZmZlcmVudCBzZXR0aW5nIGZvciBQeV9UUkFDRV9SRUZTIG5vdwogZ2VuZXJhdGVzIGEgbGlua2VyIGVycm9yIHJhdGhlciB0aGFuIGEgY29yZSBkdW1wLgogCi0tIFRoZSBjZ2kgbW9kdWxlIGhhcyBhIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbiBwcmludF9leGNlcHRpb24oKSwgd2hpY2ggCi1mb3JtYXRzIGEgcHl0aG9uIGV4Y2VwdGlvbiB1c2luZyBIVE1MLiAgSXQgYWxzbyBmaXhlcyBhIGJ1ZyBpbiB0aGUgCi1jb21wYXRpYmlsaXR5IGNvZGUgYW5kIGFkZHMgYSBkdWJpb3VzIGZlYXR1cmUgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8gCistIFRoZSBjZ2kgbW9kdWxlIGhhcyBhIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbiBwcmludF9leGNlcHRpb24oKSwgd2hpY2gKK2Zvcm1hdHMgYSBweXRob24gZXhjZXB0aW9uIHVzaW5nIEhUTUwuICBJdCBhbHNvIGZpeGVzIGEgYnVnIGluIHRoZQorY29tcGF0aWJpbGl0eSBjb2RlIGFuZCBhZGRzIGEgZHViaW91cyBmZWF0dXJlIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvCiBoYXZlIHR3byBxdWVyeSBzdHJpbmdzLCBvbmUgaW4gdGhlIFVSTCBhbmQgb25lIGluIHRoZSBQT1NUIGRhdGEuCiAKLS0gQSBzdWJ0bGUgY2hhbmdlIGluIHRoZSB1bnBpY2tsaW5nIG9mIGNsYXNzIGluc3RhbmNlcyBtYWtlcyBpdCBwb3NzaWJsZSAKLXRvIHVucGlja2xlIGluIHJlc3RyaWN0ZWQgZXhlY3V0aW9uIG1vZGUsIHdoZXJlIHRoZSBfX2RpY3RfXyBhdHRyaWJ1dGUgaXMgCistIEEgc3VidGxlIGNoYW5nZSBpbiB0aGUgdW5waWNrbGluZyBvZiBjbGFzcyBpbnN0YW5jZXMgbWFrZXMgaXQgcG9zc2libGUKK3RvIHVucGlja2xlIGluIHJlc3RyaWN0ZWQgZXhlY3V0aW9uIG1vZGUsIHdoZXJlIHRoZSBfX2RpY3RfXyBhdHRyaWJ1dGUgaXMKIG5vdCBhdmFpbGFibGUgKGJ1dCBzZXRhdHRyKCkgaXMpLgogCi0tIERvY3VtZW50YXRpb24gZm9yIG9zLnBhdGguc3BsaXRleHQoKSAoPT0gcG9zaXhwYXRoLnNwbGl0ZXh0KCkpIGhhcyBiZWVuIAorLSBEb2N1bWVudGF0aW9uIGZvciBvcy5wYXRoLnNwbGl0ZXh0KCkgKD09IHBvc2l4cGF0aC5zcGxpdGV4dCgpKSBoYXMgYmVlbgogY2xlYXJlZCB1cC4gIEl0IHNwbGl0cyBhdCB0aGUgKmxhc3QqIGRvdC4KIAogLSBwb3NpeGZpbGUgbG9ja2luZyBpcyBub3cgYWxzbyBjb3JyZWN0bHkgc3VwcG9ydGVkIG9uIEFJWC4KIAotLSBUaGUgdGVtcGZpbGUgbW9kdWxlIG9uY2UgYWdhaW4gaG9ub3JzIGFuIGluaXRpYWwgc2V0dGluZyBvZiB0bXBkaXIuICBJdCAKKy0gVGhlIHRlbXBmaWxlIG1vZHVsZSBvbmNlIGFnYWluIGhvbm9ycyBhbiBpbml0aWFsIHNldHRpbmcgb2YgdG1wZGlyLiAgSXQKIG5vdyB3b3JrcyBvbiBXaW5kb3dzLCB0b28uCiAKLS0gVGhlIHRyYWNlYmFjayBtb2R1bGUgaGFzIHNvbWUgbmV3IGZ1bmN0aW9ucyB0byBleHRyYWN0LCBmb3JtYXQgYW5kIHByaW50IAorLSBUaGUgdHJhY2ViYWNrIG1vZHVsZSBoYXMgc29tZSBuZXcgZnVuY3Rpb25zIHRvIGV4dHJhY3QsIGZvcm1hdCBhbmQgcHJpbnQKIHRoZSBhY3RpdmUgc3RhY2suCiAKLS0gU29tZSB0cmFuc2xhdGlvbiBmdW5jdGlvbnMgaW4gdGhlIHVybGxpYiBtb2R1bGUgaGF2ZSBiZWVuIG1hZGUgYSBsaXR0bGUgCistIFNvbWUgdHJhbnNsYXRpb24gZnVuY3Rpb25zIGluIHRoZSB1cmxsaWIgbW9kdWxlIGhhdmUgYmVlbiBtYWRlIGEgbGl0dGxlCiBsZXNzIHNsdWdnaXNoLgogCi0tIFRoZSBhZGR0YWdfKiBtZXRob2RzIGZvciBDYW52YXMgd2lkZ2V0cyBpbiBUa2ludGVyIGFzIHdlbGwgYXMgaW4gdGhlIAotc2VwYXJhdGUgQ2FudmFzIGNsYXNzIGhhdmUgYmVlbiBmaXhlZCBzbyB0aGV5IGFjdHVhbGx5IGRvIHNvbWV0aGluZyAKKy0gVGhlIGFkZHRhZ18qIG1ldGhvZHMgZm9yIENhbnZhcyB3aWRnZXRzIGluIFRraW50ZXIgYXMgd2VsbCBhcyBpbiB0aGUKK3NlcGFyYXRlIENhbnZhcyBjbGFzcyBoYXZlIGJlZW4gZml4ZWQgc28gdGhleSBhY3R1YWxseSBkbyBzb21ldGhpbmcKIG1lYW5pbmdmdWwuCiAKIC0gQSB0aW55IF90ZXN0KCkgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgdG8gVGtpbnRlci5weS4KIAotLSBBIGdlbmVyaWMgTWFrZWZpbGUgZm9yIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzIGlzIHByb3ZpZGVkIGluIHRoZSBNaXNjIAorLSBBIGdlbmVyaWMgTWFrZWZpbGUgZm9yIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzIGlzIHByb3ZpZGVkIGluIHRoZSBNaXNjCiBzdWJkaXJlY3RvcnkgKE1pc2MvZ01ha2VmaWxlKS4KIAogLSBBIG5ldyB2ZXJzaW9uIG9mIHB5dGhvbi1tb2RlLmVsIGZvciBFbWFjcyBpcyBwcm92aWRlZC4gIFNlZQpAQCAtMjUzNTcsMjUgKzI1MzkwLDI1IEBACiBzZXBhcmF0ZSBmaWxlIHB5aW1lbnUuZWwgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgaW1lbnUgc3VwcG9ydCBpcyBmb2xkZWQKIGludG8gcHl0aG9uLW1vZGUuZWwuCiAKLS0gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgY2FuIGZpbmFsbHkgY29ycmVjdGx5IGZpbmQgdGhlIHJlYWRsaW5lIGxpYnJhcnkgaW4gYSAKLW5vbi1zdGFuZGFyZCBsb2NhdGlvbi4gIFRoZSBMREZMQUdTIHZhcmlhYmxlIGlzIHBhc3NlZCBvbiB0aGUgTWFrZWZpbGVzIAorLSBUaGUgY29uZmlndXJlIHNjcmlwdCBjYW4gZmluYWxseSBjb3JyZWN0bHkgZmluZCB0aGUgcmVhZGxpbmUgbGlicmFyeSBpbiBhCitub24tc3RhbmRhcmQgbG9jYXRpb24uICBUaGUgTERGTEFHUyB2YXJpYWJsZSBpcyBwYXNzZWQgb24gdGhlIE1ha2VmaWxlcwogZnJvbSB0aGUgY29uZmlndXJlIHNjcmlwdC4KIAotLSBTaGFyZWQgbGlicmFyaWVzIGFyZSBub3cgaW5zdGFsbGVkIGFzIHByb2dyYW1zIChpLmUuIHdpdGggZXhlY3V0YWJsZSAKKy0gU2hhcmVkIGxpYnJhcmllcyBhcmUgbm93IGluc3RhbGxlZCBhcyBwcm9ncmFtcyAoaS5lLiB3aXRoIGV4ZWN1dGFibGUKIHBlcm1pc3Npb24pLiAgVGhpcyBpcyByZXF1aXJlZCBvbiBIUC1VWCBhbmQgd29uJ3QgaHVydCBvbiBvdGhlciBzeXN0ZW1zLgogCi0tIFRoZSBvYmpjLmMgbW9kdWxlIGlzIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24uICBPYmplY3RpdmUtQyAKKy0gVGhlIG9iamMuYyBtb2R1bGUgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gIE9iamVjdGl2ZS1DCiBzdXBwb3J0IG1heSBiZWNvbWUgYXZhaWxhYmxlIGFzIGNvbnRyaWJ1dGVkIHNvZnR3YXJlIG9uIHRoZSBmdHAgc2l0ZS4KIAogLSBUaGUgc3liYXNlIG1vZHVsZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZGlzdHJpYnV0aW9uLiAgQSBtdWNoCiBpbXByb3ZlZCBzeWJhc2UgbW9kdWxlIGlzIGF2YWlsYWJsZSBhcyBjb250cmlidXRlZCBzb2Z0d2FyZSBmcm9tIHRoZQogZnRwIHNpdGUuCiAKLS0gX3RraW50ZXIgaXMgbm93IGNvbXBhdGlibGUgd2l0aCBUY2wgNy41IC8gVGsgNC4xIHBhdGNoMSBvbiBXaW5kb3dzIGFuZCAKLU1hYyAoZG9uJ3QgdXNlIHVucGF0Y2hlZCBUY2wvVGshKS4gIFRoZSBkZWZhdWx0IGxpbmUgaW4gdGhlIFNldHVwLmluIGZpbGUgCistIF90a2ludGVyIGlzIG5vdyBjb21wYXRpYmxlIHdpdGggVGNsIDcuNSAvIFRrIDQuMSBwYXRjaDEgb24gV2luZG93cyBhbmQKK01hYyAoZG9uJ3QgdXNlIHVucGF0Y2hlZCBUY2wvVGshKS4gIFRoZSBkZWZhdWx0IGxpbmUgaW4gdGhlIFNldHVwLmluIGZpbGUKIG5vdyBsaW5rcyB3aXRoIFRjbCA3LjUgLyBUayA0LjEgcmF0aGVyIHRoYW4gNy40LzQuMC4KIAotLSBJbiBTZXR1cCwgeW91IGNhbiBub3cgd3JpdGUgIipzaGFyZWQqIiBpbnN0ZWFkIG9mICIqbm9jb25maWcqIiwgYW5kIHlvdSAKKy0gSW4gU2V0dXAsIHlvdSBjYW4gbm93IHdyaXRlICIqc2hhcmVkKiIgaW5zdGVhZCBvZiAiKm5vY29uZmlnKiIsIGFuZCB5b3UKIGNhbiB1c2UgKi5zbyBhbmQgKi5zbCBhcyBzaGFyZWQgbGlicmFyaWVzLgogCiAtIFNvbWUgbW9yZSBmaWRnZXRpbmcgZm9yIEFJWCBzaGFyZWQgbGlicmFyaWVzLgpAQCAtMjUzODQsODEgKzI1NDE3LDgxIEBACiAoTm90ZSAtLSBhIGNvbXBsZXRlIHJlcGxhY2VtZW50IGJ5IE5pZWxzIE1vImxsZXIsIGNhbGxlZCBncG1vZHVsZSwgaXMKIGF2YWlsYWJsZSBmcm9tIHRoZSBjb250cmliIGRpcmVjdG9yeSBvbiB0aGUgZnRwIHNpdGUuKQogCi0tIEEgd2FybmluZyBpcyB3cml0dGVuIHRvIHN5cy5zdGRlcnIgd2hlbiBhIF9fZGVsX18gbWV0aG9kIHJhaXNlcyBhbiAKKy0gQSB3YXJuaW5nIGlzIHdyaXR0ZW4gdG8gc3lzLnN0ZGVyciB3aGVuIGEgX19kZWxfXyBtZXRob2QgcmFpc2VzIGFuCiBleGNlcHRpb24gKGZvcm1lcmx5LCBzdWNoIGV4Y2VwdGlvbnMgd2VyZSBjb21wbGV0ZWx5IGlnbm9yZWQpLgogCi0tIFRoZSBjb25maWd1cmUgc2NyaXB0IG5vdyBkZWZpbmVzIEhBVkVfT0xEX0NQUCBpZiB0aGUgQyBwcmVwcm9jZXNzb3IgaXMgCistIFRoZSBjb25maWd1cmUgc2NyaXB0IG5vdyBkZWZpbmVzIEhBVkVfT0xEX0NQUCBpZiB0aGUgQyBwcmVwcm9jZXNzb3IgaXMKIGluY2FwYWJsZSBvZiBBTlNJIHN0eWxlIHRva2VuIGNvbmNhdGVuYXRpb24gYW5kIHN0cmluZ2lmaWNhdGlvbi4KIAotLSBBbGwgc291cmNlIGZpbGVzIChleGNlcHQgYSBmZXcgcGxhdGZvcm0gc3BlY2lmaWMgbW9kdWxlcykgYXJlIG9uY2UgYWdhaW4gCistIEFsbCBzb3VyY2UgZmlsZXMgKGV4Y2VwdCBhIGZldyBwbGF0Zm9ybSBzcGVjaWZpYyBtb2R1bGVzKSBhcmUgb25jZSBhZ2FpbgogY29tcGF0aWJsZSB3aXRoIEsmUiBDIGNvbXBpbGVycyBhcyB3ZWxsIGFzIEFOU0kgY29tcGlsZXJzLiAgSW4gcGFydGljdWxhciwKLUFOU0ktaXNtcyBoYXZlIGJlZW4gcmVtb3ZlZCBvciBtYWRlIGNvbmRpdGlvbmFsIGluIGNvbXBsZXhvYmplY3QuYywgCitBTlNJLWlzbXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgbWFkZSBjb25kaXRpb25hbCBpbiBjb21wbGV4b2JqZWN0LmMsCiBnZXRhcmdzLmMgYW5kIG9wZXJhdG9yLmMuCiAKLS0gVGhlIGFic3RyYWN0IG9iamVjdCBBUEkgaGFzIHRocmVlIG5ldyBmdW5jdGlvbnMsIFB5T2JqZWN0X0RlbEl0ZW0sIAorLSBUaGUgYWJzdHJhY3Qgb2JqZWN0IEFQSSBoYXMgdGhyZWUgbmV3IGZ1bmN0aW9ucywgUHlPYmplY3RfRGVsSXRlbSwKIFB5U2VxdWVuY2VfRGVsSXRlbSwgYW5kIFB5U2VxdWVuY2VfRGVsU2xpY2UuCiAKLS0gVGhlIG9wZXJhdG9yIG1vZHVsZSBoYXMgbmV3IGZ1bmN0aW9ucyBkZWxpdGVtIGFuZCBkZWxzbGljZSwgYW5kIHRoZSAKLWZ1bmN0aW9ucyAib3IiIGFuZCAiYW5kIiBhcmUgcmVuYW1lZCB0byAib3JfIiBhbmQgImFuZF8iIChzaW5jZSAib3IiIGFuZCAKKy0gVGhlIG9wZXJhdG9yIG1vZHVsZSBoYXMgbmV3IGZ1bmN0aW9ucyBkZWxpdGVtIGFuZCBkZWxzbGljZSwgYW5kIHRoZQorZnVuY3Rpb25zICJvciIgYW5kICJhbmQiIGFyZSByZW5hbWVkIHRvICJvcl8iIGFuZCAiYW5kXyIgKHNpbmNlICJvciIgYW5kCiAiYW5kIiBhcmUgcmVzZXJ2ZWQgd29yZHMpLiAgKCJfX29yX18iIGFuZCAiX19hbmRfXyIgYXJlIHVuY2hhbmdlZC4pCiAKLS0gVGhlIGVudmlyb25tZW50IG1vZHVsZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkOyBwdXRlbnYoKSBpcyBub3cgYSBmdW5jdGlvbiAKKy0gVGhlIGVudmlyb25tZW50IG1vZHVsZSBpcyBubyBsb25nZXIgc3VwcG9ydGVkOyBwdXRlbnYoKSBpcyBub3cgYSBmdW5jdGlvbgogaW4gcG9zaXhtb2R1bGUgKGFsc28gdW5kZXIgTlQpLgogCiAtIEVycm9yIGluIGZpbHRlcig8ZnVuY3Rpb24+LCAiIikgaGFzIGJlZW4gZml4ZWQuCiAKIC0gVW5yZWNvZ25pemVkIGtleXdvcmQgYXJndW1lbnRzIHJhaXNlIFR5cGVFcnJvciwgbm90IEtleUVycm9yLgogCi0tIEJldHRlciBwb3J0YWJpbGl0eSwgZmV3ZXIgYnVncyBhbmQgbWVtb3J5IGxlYWtzLCBmZXdlciBjb21waWxlciB3YXJuaW5ncywgCistIEJldHRlciBwb3J0YWJpbGl0eSwgZmV3ZXIgYnVncyBhbmQgbWVtb3J5IGxlYWtzLCBmZXdlciBjb21waWxlciB3YXJuaW5ncywKIHNvbWUgbW9yZSBkb2N1bWVudGF0aW9uLgogCi0tIEJ1ZyBpbiBmbG9hdCBwb3dlciBib3VuZGFyeSBjYXNlICgwLjAgdG8gdGhlIG5lZ2F0aXZlIGludGVnZXIgcG93ZXIpIAorLSBCdWcgaW4gZmxvYXQgcG93ZXIgYm91bmRhcnkgY2FzZSAoMC4wIHRvIHRoZSBuZWdhdGl2ZSBpbnRlZ2VyIHBvd2VyKQogZml4ZWQuCiAKLS0gVGhlIHRlc3Qgb2YgbmVnYXRpdmUgbnVtYmVyIHRvIHRoZSBmbG9hdCBwb3dlciBoYXMgYmVlbiBtb3ZlZCBmcm9tIHRoZSAKKy0gVGhlIHRlc3Qgb2YgbmVnYXRpdmUgbnVtYmVyIHRvIHRoZSBmbG9hdCBwb3dlciBoYXMgYmVlbiBtb3ZlZCBmcm9tIHRoZQogYnVpbHQtaW4gcG93KCkgZnVuY3Rpb24gdG8gZmxvYXRvYmplY3QuYyAoc28gY29tcGxleCBudW1iZXJzIGNhbiB5aWVsZCB0aGUKIGNvcnJlY3QgcmVzdWx0KS4KIAotLSBUaGUgYnVnIGludHJvZHVjZWQgaW4gYmV0YTIgd2hlcmUgc2hhcmVkIGxpYnJhcmllcyBsb2FkZWQgKHVzaW5nIAorLSBUaGUgYnVnIGludHJvZHVjZWQgaW4gYmV0YTIgd2hlcmUgc2hhcmVkIGxpYnJhcmllcyBsb2FkZWQgKHVzaW5nCiBkbG9wZW4oKSkgZnJvbSB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd291bGQgZmFpbCwgaGFzIGJlZW4gZml4ZWQuCiAKLS0gTW9kdWxlcyBpbXBvcnRlZCBhcyBzaGFyZWQgbGlicmFyaWVzIG5vdyBhbHNvIGhhdmUgYSBfX2ZpbGVfXyBhdHRyaWJ1dGUsIAotZ2l2aW5nIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZXkgd2VyZSBsb2FkZWQuICBUaGUgb25seSBtb2R1bGVzIHdpdGhvdXQgCistIE1vZHVsZXMgaW1wb3J0ZWQgYXMgc2hhcmVkIGxpYnJhcmllcyBub3cgYWxzbyBoYXZlIGEgX19maWxlX18gYXR0cmlidXRlLAorZ2l2aW5nIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZXkgd2VyZSBsb2FkZWQuICBUaGUgb25seSBtb2R1bGVzIHdpdGhvdXQKIGEgX19maWxlX18gYXR0cmlidXRlIG5vdyBhcmUgYnVpbHQtaW4gbW9kdWxlcy4KIAotLSBPbiB0aGUgTWFjLCBkeW5hbWljYWxseSBsb2FkZWQgbW9kdWxlcyBjYW4gZW5kIGluIGVpdGhlciAiLnNsYiIgb3IgCi0iLjxwbGF0Zm9ybT4uc2xiIiB3aGVyZSA8cGxhdGZvcm0+IGlzIGVpdGhlciAiQ0ZNNjhLIiBvciAicHBjIi4gIFRoZSAiLnNsYiIgCistIE9uIHRoZSBNYWMsIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzIGNhbiBlbmQgaW4gZWl0aGVyICIuc2xiIiBvcgorIi48cGxhdGZvcm0+LnNsYiIgd2hlcmUgPHBsYXRmb3JtPiBpcyBlaXRoZXIgIkNGTTY4SyIgb3IgInBwYyIuICBUaGUgIi5zbGIiCiBleHRlbnNpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgImZhdCIgYmluYXJpZXMuCiAKLS0gQyBBUEkgYWRkaXRpb246IG1hcnNoYWwuYyBub3cgc3VwcG9ydHMgCistIEMgQVBJIGFkZGl0aW9uOiBtYXJzaGFsLmMgbm93IHN1cHBvcnRzCiBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyhvYmplY3QpLgogCiAtIEMgQVBJIGFkZGl0aW9uOiBnZXRhcmdzLmMgbm93IHN1cHBvcnRzCiBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCBmb3JtYXQsIGt3bmFtZXMsIC4uLikKIHRvIHBhcnNlIGtleXdvcmQgYXJndW1lbnRzLgogCi0tIFRoZSBQQyB2ZXJzaW9uaW5nIHNjaGVtZSAoc3lzLndpbnZlcikgaGFzIGNoYW5nZWQgb25jZSBhZ2Fpbi4gIHRoZSAKLXZlcnNpb24gbnVtYmVyIGlzIG5vdyAiPGRpZ2l0Pi48ZGlnaXQ+LjxkaWdpdD4uPGFwaXZlcnNpb24+Iiwgd2hlcmUgdGhlIAotZmlyc3QgdGhyZWUgPGRpZ2l0PnMgYXJlIHRoZSBQeXRob24gdmVyc2lvbiAoZS5nLiAiMS40LjAiIGZvciBQeXRob24gMS40LCAKLSIxLjQuMSIgZm9yIFB5dGhvbiAxLjQuMSAtLSB0aGUgYmV0YSBsZXZlbCBpcyBub3QgaW5jbHVkZWQpIGFuZCAKKy0gVGhlIFBDIHZlcnNpb25pbmcgc2NoZW1lIChzeXMud2ludmVyKSBoYXMgY2hhbmdlZCBvbmNlIGFnYWluLiAgdGhlCit2ZXJzaW9uIG51bWJlciBpcyBub3cgIjxkaWdpdD4uPGRpZ2l0Pi48ZGlnaXQ+LjxhcGl2ZXJzaW9uPiIsIHdoZXJlIHRoZQorZmlyc3QgdGhyZWUgPGRpZ2l0PnMgYXJlIHRoZSBQeXRob24gdmVyc2lvbiAoZS5nLiAiMS40LjAiIGZvciBQeXRob24gMS40LAorIjEuNC4xIiBmb3IgUHl0aG9uIDEuNC4xIC0tIHRoZSBiZXRhIGxldmVsIGlzIG5vdCBpbmNsdWRlZCkgYW5kCiA8YXBpdmVyc2lvbj4gaXMgdGhlIGZvdXItZGlnaXQgUFlUSE9OX0FQSV9WRVJTSU9OIChjdXJyZW50bHkgMTAwNSkuCiAKIC0gaDJweS5weSBhY2NlcHRzIHdoaXRlc3BhY2UgYmVmb3JlIHRoZSAjIGluIENQUCBkaXJlY3RpdmVzCiAKLS0gT24gU29sYXJpcyAyLjUsIGl0IHNob3VsZCBub3cgYmUgcG9zc2libGUgdG8gdXNlIGVpdGhlciBQb3NpeCB0aHJlYWRzIG9yIAotU29sYXJpcyB0aHJlYWRzIChYWFg6IGhvdyBkbyB5b3Ugc2VsZWN0IHdoaWNoIGlzIHVzZWQ/Pz8pLiAgKE5vdGU6IHRoZSAKLVB5dGhvbiBwdGhyZWFkcyBpbnRlcmZhY2UgZG9lc24ndCBmdWxseSBzdXBwb3J0IHNlbWFwaG9yZXMgeWV0IC0tIGFueW9uZSAKKy0gT24gU29sYXJpcyAyLjUsIGl0IHNob3VsZCBub3cgYmUgcG9zc2libGUgdG8gdXNlIGVpdGhlciBQb3NpeCB0aHJlYWRzIG9yCitTb2xhcmlzIHRocmVhZHMgKFhYWDogaG93IGRvIHlvdSBzZWxlY3Qgd2hpY2ggaXMgdXNlZD8/PykuICAoTm90ZTogdGhlCitQeXRob24gcHRocmVhZHMgaW50ZXJmYWNlIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBzZW1hcGhvcmVzIHlldCAtLSBhbnlvbmUKIGNhcmUgdG8gZml4IHRoaXM/KQogCi0tIFRocmVhZCBzdXBwb3J0IHNob3VsZCBub3cgd29yayBvbiBBSVgsIHVzaW5nIGVpdGhlciBEQ0UgdGhyZWFkcyBvciAKKy0gVGhyZWFkIHN1cHBvcnQgc2hvdWxkIG5vdyB3b3JrIG9uIEFJWCwgdXNpbmcgZWl0aGVyIERDRSB0aHJlYWRzIG9yCiBwdGhyZWFkcy4KIAogLSBOZXcgZmlsZSBEZW1vL3NvY2tldHMvdW5pY2FzdC5weQogCi0tIFdvcmtpbmcgTWFjIHBvcnQsIHdpdGggQ0ZNNjhLIHN1cHBvcnQsIHdpdGggVGsgNC4xIHN1cHBvcnQgKHRob3VnaCBub3QgCistIFdvcmtpbmcgTWFjIHBvcnQsIHdpdGggQ0ZNNjhLIHN1cHBvcnQsIHdpdGggVGsgNC4xIHN1cHBvcnQgKHRob3VnaCBub3QKIGJvdGgpIChYWFgpCiAKLS0gTmV3IHByb2plY3Qgc2V0dXAgZm9yIFBDIHBvcnQsIG5vdyBjb21wYXRpYmxlIHdpdGggUHl0aG9uV2luLCB3aXRoIAorLSBOZXcgcHJvamVjdCBzZXR1cCBmb3IgUEMgcG9ydCwgbm93IGNvbXBhdGlibGUgd2l0aCBQeXRob25XaW4sIHdpdGgKIF90a2ludGVyIGFuZCBOdW1QeSBzdXBwb3J0IChYWFgpCiAKIC0gTmV3IG1vZHVsZSBzaXRlLnB5IChYWFgpCkBAIC0yNTQ3NSw3ICsyNTUwOCw3IEBACiAKIC0gc3RyaW5nLmF0b2kgYy5zLiBub3cgcmFpc2UgYW4gZXhjZXB0aW9uIGZvciBhbiBlbXB0eSBpbnB1dCBzdHJpbmcuCiAKLS0gQXQgbGFzdCwgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBkZWZpbmUgSEFWRV9DT05GSUdfSCBpbiBvcmRlciB0byAKKy0gQXQgbGFzdCwgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBkZWZpbmUgSEFWRV9DT05GSUdfSCBpbiBvcmRlciB0bwogaGF2ZSBjb25maWcuaCBpbmNsdWRlZCBhdCB2YXJpb3VzIHBsYWNlcy4KIAogLSBVbnJlY29nbml6ZWQga2V5d29yZCBhcmd1bWVudHMgbm93IHJhaXNlIFR5cGVFcnJvciByYXRoZXIgdGhhbiBLZXlFcnJvci4KQEAgLTI1NDgzLDI1ICsyNTUxNiwyNSBAQAogLSBUaGUgbWFrZXNldHVwIHNjcmlwdCByZWNvZ25pemVzIGZpbGVzIHdpdGggZXh0ZW5zaW9uIC5zbyBvciAuc2wgYXMKIChzaGFyZWQpIGxpYnJhcmllcy4KIAotLSAnYWNjZXNzJyBpcyBubyBsb25nZXIgYSByZXNlcnZlZCB3b3JkLCBhbmQgYWxsIGNvZGUgcmVsYXRlZCB0byBpdHMgCi1pbXBsZW1lbnRhdGlvbiBpcyBnb25lIChvciBhdCBsZWFzdCAjaWZkZWYnZWQgb3V0KS4gIFRoaXMgc2hvdWxkIG1ha2UgCistICdhY2Nlc3MnIGlzIG5vIGxvbmdlciBhIHJlc2VydmVkIHdvcmQsIGFuZCBhbGwgY29kZSByZWxhdGVkIHRvIGl0cworaW1wbGVtZW50YXRpb24gaXMgZ29uZSAob3IgYXQgbGVhc3QgI2lmZGVmJ2VkIG91dCkuICBUaGlzIHNob3VsZCBtYWtlCiBQeXRob24gYSBsaXR0bGUgc3BlZWRpZXIgdG9vIQogCi0tIFBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBzdWdnZXN0ZWQgYnkgU2pvZXJkIE11bGxlbmRlci4gIFRoaXMgaW5jbHVkZXMgCi10aGUgaW50cm9kdWN0aW9uIG9mIHR3byBuZXcgb3B0aW9uYWwgZnVuY3Rpb24gcG9pbnRlcnMgaW4gdHlwZSBvYmplY3QsIAotZ2V0YXR0cm8gYW5kIHNldGF0dHJvLCB3aGljaCBhcmUgbGlrZSBnZXRhdHRyIGFuZCBzZXRhdHRyIGJ1dCB0YWtlIGEgCistIFBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBzdWdnZXN0ZWQgYnkgU2pvZXJkIE11bGxlbmRlci4gIFRoaXMgaW5jbHVkZXMKK3RoZSBpbnRyb2R1Y3Rpb24gb2YgdHdvIG5ldyBvcHRpb25hbCBmdW5jdGlvbiBwb2ludGVycyBpbiB0eXBlIG9iamVjdCwKK2dldGF0dHJvIGFuZCBzZXRhdHRybywgd2hpY2ggYXJlIGxpa2UgZ2V0YXR0ciBhbmQgc2V0YXR0ciBidXQgdGFrZSBhCiBzdHJpbmcgb2JqZWN0IGluc3RlYWQgb2YgYSBDIHN0cmluZyBwb2ludGVyLgogCi0tIE5ldyBvcGVyYXRpb25zIGluIHN0cmluZyBtb2R1bGU6IGxzdHJpcChzKSBhbmQgcnN0cmlwKHMpIHN0cmlwIHdoaXRlc3BhY2UgCi1vbmx5IG9uIHRoZSBsZWZ0IG9yIG9ubHkgb24gdGhlIHJpZ2h0LCBBIG5ldyBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCB0byAKLXNwbGl0KCkgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZXBhcmF0b3JzIGhvbm9yZWQgKHNvIAotc3BsaXRmaWVsZHMocywgc2VwLCBuKSByZXR1cm5zIGEgbGlzdCBvZiBhdCBtb3N0IG4rMSBlbGVtZW50cykuICAoU2luY2UgCistIE5ldyBvcGVyYXRpb25zIGluIHN0cmluZyBtb2R1bGU6IGxzdHJpcChzKSBhbmQgcnN0cmlwKHMpIHN0cmlwIHdoaXRlc3BhY2UKK29ubHkgb24gdGhlIGxlZnQgb3Igb25seSBvbiB0aGUgcmlnaHQsIEEgbmV3IG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IHRvCitzcGxpdCgpIHNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2VwYXJhdG9ycyBob25vcmVkIChzbworc3BsaXRmaWVsZHMocywgc2VwLCBuKSByZXR1cm5zIGEgbGlzdCBvZiBhdCBtb3N0IG4rMSBlbGVtZW50cykuICAoU2luY2UKIDEuMywgc3BsaXRmaWVsZHMocywgTm9uZSkgaXMgdG90YWxseSBlcXVpdmFsZW50IHRvIHNwbGl0KHMpLikKLXN0cmluZy5jYXB3b3JkcygpIGhhcyBhbiBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgc3BlY2lmeWluZyB0aGUgCitzdHJpbmcuY2Fwd29yZHMoKSBoYXMgYW4gb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZnlpbmcgdGhlCiBzZXBhcmF0b3IgKHdoaWNoIGlzIHBhc3NlZCB0byBzcGxpdCgpKS4KIAotLSByZWdzdWIuc3BsaXQoKSBoYXMgdGhlIHNhbWUgYWRkaXRpb24gYXMgc3RyaW5nLnNwbGl0KCkuICByZWdzdWIuc3BsaXR4KHMsIAotc2VwLCBtYXhzZXApIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCB3YXMgcmVnc3ViLnNwbGl0KHMsIDEpIGluIAorLSByZWdzdWIuc3BsaXQoKSBoYXMgdGhlIHNhbWUgYWRkaXRpb24gYXMgc3RyaW5nLnNwbGl0KCkuICByZWdzdWIuc3BsaXR4KHMsCitzZXAsIG1heHNlcCkgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IHdhcyByZWdzdWIuc3BsaXQocywgMSkgaW4KIDEuNGJldGEyIChyZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGRlbGltaXRlcnMgYXMgd2VsbCBhcyB0aGUgd29yZHMpLgogCiAtIEZpbmFsIHRvdWNoIGZvciBBSVggbG9hZGluZywgcmV3cml0dGVuIE1pc2MvQUlYLU5PVEVTLgpAQCAtMjU1NDUsMTEgKzI1NTc4LDExIEBACiBtZWFuaW5nZnVsIHZhbHVlIChhIGZldyB0aGluZ3Mgd2VyZSBib3RjaGVkIGluIGJldGEgMSkuICBMaWIvZG9zXzh4MwogaXMgbm93IGEgc3RhbmRhcmQgcGFydCBvZiB0aGUgZGlzdHJpYnV0aW9uIChhbGFzKS4KIAotLSBNb3JlIGltcHJvdmVtZW50cyB0byB0aGUgaW5zdGFsbGF0aW9uIHByb2NlZHVyZS4gIFR5cGluZyAibWFrZSBpbnN0YWxsIiAKLW5vdyBpbnNlcnRzIHRoZSB2ZXJzaW9uIG51bWJlciBpbiB0aGUgcGF0aG5hbWVzIG9mIGFsbW9zdCBldmVyeXRoaW5nIAotaW5zdGFsbGVkLCBhbmQgY3JlYXRlcyB0aGUgbWFjaGluZSBkZXBlbmRlbnQgbW9kdWxlcyAoRkNOVEwucHkgZXRjLikgaWYgbm90IAotc3VwcGxpZWQgYnkgdGhlIGRpc3RyaWJ1dGlvbi4gIChYWFggVGhlcmUncyBzdGlsbCBhIHByb2JsZW0gd2l0aCB0aGUgbGF0dGVyIAotYmVjYXVzZSB0aGUgInJlZ2VuIiBzY3JpcHQgcmVxdWlyZXMgdGhhdCBQeXRob24gaXMgaW5zdGFsbGVkLiAgU29tZSBtYW51YWwgCistIE1vcmUgaW1wcm92ZW1lbnRzIHRvIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VkdXJlLiAgVHlwaW5nICJtYWtlIGluc3RhbGwiCitub3cgaW5zZXJ0cyB0aGUgdmVyc2lvbiBudW1iZXIgaW4gdGhlIHBhdGhuYW1lcyBvZiBhbG1vc3QgZXZlcnl0aGluZworaW5zdGFsbGVkLCBhbmQgY3JlYXRlcyB0aGUgbWFjaGluZSBkZXBlbmRlbnQgbW9kdWxlcyAoRkNOVEwucHkgZXRjLikgaWYgbm90CitzdXBwbGllZCBieSB0aGUgZGlzdHJpYnV0aW9uLiAgKFhYWCBUaGVyZSdzIHN0aWxsIGEgcHJvYmxlbSB3aXRoIHRoZSBsYXR0ZXIKK2JlY2F1c2UgdGhlICJyZWdlbiIgc2NyaXB0IHJlcXVpcmVzIHRoYXQgUHl0aG9uIGlzIGluc3RhbGxlZC4gIFNvbWUgbWFudWFsCiBpbnRlcnZlbnRpb24gbWF5IHN0aWxsIGJlIHJlcXVpcmVkLikgKFRoaXMgaGFzIGJlZW4gZml4ZWQgaW4gMS40YmV0YTMuKQogCiAtIE5ldyBtb2R1bGVzOiBlcnJubywgb3BlcmF0b3IgKFhYWCkuCkBAIC0yNTYxMiw4ICsyNTY0NSw4IEBACiAKIC0gQWRkZWQgc3lzLnBsYXRmb3JtIGFuZCBzeXMuZXhlY19wbGF0Zm9ybSBmb3IgQmlsbCBKYW5zc2VuLgogCi0tIEluc3RhbGxhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWx5IG92ZXJoYXVsZWQuICAibWFrZSBpbnN0YWxsIiBub3cgaW5zdGFsbHMgCi1ldmVyeXRoaW5nLCBub3QganVzdCB0aGUgcHl0aG9uIGJpbmFyeS4gIEluc3RhbGxhdGlvbiB1c2VzIHRoZSBpbnN0YWxsLXNoIAorLSBJbnN0YWxsYXRpb24gaGFzIGJlZW4gY29tcGxldGVseSBvdmVyaGF1bGVkLiAgIm1ha2UgaW5zdGFsbCIgbm93IGluc3RhbGxzCitldmVyeXRoaW5nLCBub3QganVzdCB0aGUgcHl0aG9uIGJpbmFyeS4gIEluc3RhbGxhdGlvbiB1c2VzIHRoZSBpbnN0YWxsLXNoCiBzY3JpcHQgKGJvcnJvd2VkIGZyb20gWDExKSB0byBpbnN0YWxsIGVhY2ggZmlsZS4KIAogLSBOZXcgZnVuY3Rpb25zIGluIHRoZSBwb3NpeCBtb2R1bGU6IG1rZmlmbywgcGxvY2ssIHJlbW92ZSAoPT0gdW5saW5rKSwKQEAgLTI1NjIzLDU5ICsyNTY1Niw1OSBAQAogCiAtIFNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQgZm9yIEZyZWVCU0QuCiAKLS0gVGhlIC0td2l0aC1yZWFkbGluZSBvcHRpb24gY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgYSBESVJFQ1RPUlkgYXJndW1lbnQsIAotZm9yIHN5c3RlbXMgd2hlcmUgbGlicmVhZGxpbmUuKiBpcyBpbiBvbmUgb2YgdGhlIHN0YW5kYXJkIHBsYWNlcy4gIEl0IGlzIAorLSBUaGUgLS13aXRoLXJlYWRsaW5lIG9wdGlvbiBjYW4gbm93IGJlIHVzZWQgd2l0aG91dCBhIERJUkVDVE9SWSBhcmd1bWVudCwKK2ZvciBzeXN0ZW1zIHdoZXJlIGxpYnJlYWRsaW5lLiogaXMgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBwbGFjZXMuICBJdCBpcwogYWxzbyBwb3NzaWJsZSBmb3IgaXQgdG8gYmUgYSBzaGFyZWQgbGlicmFyeS4KIAotLSBUaGUgZXh0ZW5zaW9uIHRraW50ZXIgaGFzIGJlZW4gcmVuYW1lZCB0byBfdGtpbnRlciwgdG8gYXZvaWQgY29uZnVzaW9uIAotd2l0aCBUa2ludGVyLnB5IG9uY2FzZSBpbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuICBJdCBub3cgc3VwcG9ydHMgVGsgNC4xIGFzIAorLSBUaGUgZXh0ZW5zaW9uIHRraW50ZXIgaGFzIGJlZW4gcmVuYW1lZCB0byBfdGtpbnRlciwgdG8gYXZvaWQgY29uZnVzaW9uCit3aXRoIFRraW50ZXIucHkgb25jYXNlIGluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4gIEl0IG5vdyBzdXBwb3J0cyBUayA0LjEgYXMKIHdlbGwgYXMgNC4wLgogCi0tIEF1dGhvcidzIGNoYW5nZSBvZiBhZGRyZXNzIGZyb20gQ1dJIGluIEFtc3RlcmRhbSwgVGhlIE5ldGhlcmxhbmRzLCB0byAKKy0gQXV0aG9yJ3MgY2hhbmdlIG9mIGFkZHJlc3MgZnJvbSBDV0kgaW4gQW1zdGVyZGFtLCBUaGUgTmV0aGVybGFuZHMsIHRvCiBDTlJJIGluIFJlc3RvbiwgVkEsIFVTQS4KIAotLSBUaGUgbWF0aC5oeXBvdCgpIGZ1bmN0aW9uIGlzIG5vdyBhbHdheXMgYXZhaWxhYmxlIChpZiBpdCBpc24ndCBmb3VuZCBpbiAKKy0gVGhlIG1hdGguaHlwb3QoKSBmdW5jdGlvbiBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZSAoaWYgaXQgaXNuJ3QgZm91bmQgaW4KIHRoZSBDIG1hdGggbGlicmFyeSwgUHl0aG9uIHByb3ZpZGVzIGl0cyBvd24gaW1wbGVtZW50YXRpb24pLgogCi0tIFRoZSBsYXRleCBkb2N1bWVudGF0aW9uIGlzIG5vdyBjb21wYXRpYmxlIHdpdGggbGF0ZXgyZSwgdGhhbmtzIHRvIERhdmlkIAorLSBUaGUgbGF0ZXggZG9jdW1lbnRhdGlvbiBpcyBub3cgY29tcGF0aWJsZSB3aXRoIGxhdGV4MmUsIHRoYW5rcyB0byBEYXZpZAogQXNjaGVyLgogCiAtIFRoZSBleHByZXNzaW9uIHgqKnkgaXMgbm93IGVxdWl2YWxlbnQgdG8gcG93KHgsIHkpLgogCiAtIFRoZSBpbmRleGluZyBleHByZXNzaW9uIHhbYSwgYiwgY10gaXMgbm93IGVxdWl2YWxlbnQgdG8geFsoYSwgYiwgYyldLgogCi0tIENvbXBsZXggbnVtYmVycyBhcmUgbm93IHN1cHBvcnRlZC4gIEltYWdpbmFyeSBjb25zdGFudHMgYXJlIHdyaXR0ZW4gd2l0aCAKLWEgJ2onIG9yICdKJyBwcmVmaXgsIGdlbmVyYWwgY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCAKLXBhcnQgdG8gYW4gaW1hZ2luYXJ5IHBhcnQsIGxpa2UgMys0ai4gIENvbXBsZXggbnVtYmVycyBhcmUgYWx3YXlzIHN0b3JlZCBpbiAKLWZsb2F0aW5nIHBvaW50IGZvcm0sIHNvIHRoaXMgaXMgZXF1aXZhbGVudCB0byAzLjArNC4wai4gIEl0IGlzIGFsc28gCi1wb3NzaWJsZSB0byBjcmVhdGUgY29tcGxleCBudW1iZXJzIHdpdGggdGhlIG5ldyBidWlsdC1pbiBmdW5jdGlvbiAKLWNvbXBsZXgocmUsIFtpbV0pLiAgRm9yIHRoZSBmb290cHJpbnQtY29uc2Npb3VzLCBjb21wbGV4IG51bWJlciBzdXBwb3J0IGNhbiAKKy0gQ29tcGxleCBudW1iZXJzIGFyZSBub3cgc3VwcG9ydGVkLiAgSW1hZ2luYXJ5IGNvbnN0YW50cyBhcmUgd3JpdHRlbiB3aXRoCithICdqJyBvciAnSicgcHJlZml4LCBnZW5lcmFsIGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwKK3BhcnQgdG8gYW4gaW1hZ2luYXJ5IHBhcnQsIGxpa2UgMys0ai4gIENvbXBsZXggbnVtYmVycyBhcmUgYWx3YXlzIHN0b3JlZCBpbgorZmxvYXRpbmcgcG9pbnQgZm9ybSwgc28gdGhpcyBpcyBlcXVpdmFsZW50IHRvIDMuMCs0LjBqLiAgSXQgaXMgYWxzbworcG9zc2libGUgdG8gY3JlYXRlIGNvbXBsZXggbnVtYmVycyB3aXRoIHRoZSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24KK2NvbXBsZXgocmUsIFtpbV0pLiAgRm9yIHRoZSBmb290cHJpbnQtY29uc2Npb3VzLCBjb21wbGV4IG51bWJlciBzdXBwb3J0IGNhbgogYmUgZGlzYWJsZWQgYnkgZGVmaW5pbmcgdGhlIHN5bWJvbCBXSVRIT1VUX0NPTVBMRVguCiAKIC0gTmV3IGJ1aWx0LWluIGZ1bmN0aW9uIGxpc3QoKSBpcyB0aGUgbG9uZy1hd2FpdGVkIGNvdW50ZXJwYXJ0IG9mIHR1cGxlKCkuCiAKLS0gVGhlcmUncyBhIG5ldyAiY21hdGgiIG1vZHVsZSB3aGljaCBwcm92aWRlcyB0aGUgc2FtZSBmdW5jdGlvbnMgYXMgdGhlIAotIm1hdGgiIGxpYnJhcnkgYnV0IHdpdGggY29tcGxleCBhcmd1bWVudHMgYW5kIHJlc3VsdHMuICAoVGhlcmUgYXJlIHZlcnkgCi1nb29kIHJlYXNvbnMgd2h5IG1hdGguc3FydCgtMSkgc3RpbGwgcmFpc2VzIGFuIGV4Y2VwdGlvbiAtLSB5b3UgaGF2ZSB0byB1c2UgCistIFRoZXJlJ3MgYSBuZXcgImNtYXRoIiBtb2R1bGUgd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRoZQorIm1hdGgiIGxpYnJhcnkgYnV0IHdpdGggY29tcGxleCBhcmd1bWVudHMgYW5kIHJlc3VsdHMuICAoVGhlcmUgYXJlIHZlcnkKK2dvb2QgcmVhc29ucyB3aHkgbWF0aC5zcXJ0KC0xKSBzdGlsbCByYWlzZXMgYW4gZXhjZXB0aW9uIC0tIHlvdSBoYXZlIHRvIHVzZQogY21hdGguc3FydCgtMSkgdG8gZ2V0IDFqIGZvciBhbiBhbnN3ZXIuKQogCi0tIFRoZSBQeXRob24uaCBoZWFkZXIgZmlsZSAod2hpY2ggaXMgcmVhbGx5IHRoZSBzYW1lIGFzIGFsbG9iamVjdHMuaCBleGNlcHQgCi1pdCBkaXNhYmxlcyBzdXBwb3J0IGZvciBvbGQgc3R5bGUgbmFtZXMpIG5vdyBpbmNsdWRlcyBzZXZlcmFsIG1vcmUgZmlsZXMsIAorLSBUaGUgUHl0aG9uLmggaGVhZGVyIGZpbGUgKHdoaWNoIGlzIHJlYWxseSB0aGUgc2FtZSBhcyBhbGxvYmplY3RzLmggZXhjZXB0CitpdCBkaXNhYmxlcyBzdXBwb3J0IGZvciBvbGQgc3R5bGUgbmFtZXMpIG5vdyBpbmNsdWRlcyBzZXZlcmFsIG1vcmUgZmlsZXMsCiBzbyB5b3UgaGF2ZSB0byBoYXZlIGZld2VyICNpbmNsdWRlIHN0YXRlbWVudHMgaW4gdGhlIGF2ZXJhZ2UgZXh0ZW5zaW9uLgogCi0tIFRoZSBOREVCVUcgc3ltYm9sIGlzIG5vIGxvbmdlciB1c2VkLiAgQ29kZSB0aGF0IHVzZWQgdG8gYmUgZGVwZW5kZW50IG9uIAotdGhlIHByZXNlbmNlIG9mIE5ERUJVRyBpcyBub3cgcHJlc2VudCBvbiB0aGUgYWJzZW5jZSBvZiBERUJVRy4gIFRSQUNFX1JFRlMgCi1hbmQgUkVGX0RFQlVHIGhhdmUgYmVlbiByZW5hbWVkIHRvIFB5X1RSQUNFX1JFRlMgYW5kIFB5X1JFRl9ERUJVRywgCi1yZXNwZWN0aXZlbHkuICBBdCBsb25nIGxhc3QsIHRoZSBzb3VyY2UgYWN0dWFsbHkgY29tcGlsZXMgYW5kIGxpbmtzIHdpdGhvdXQgCistIFRoZSBOREVCVUcgc3ltYm9sIGlzIG5vIGxvbmdlciB1c2VkLiAgQ29kZSB0aGF0IHVzZWQgdG8gYmUgZGVwZW5kZW50IG9uCit0aGUgcHJlc2VuY2Ugb2YgTkRFQlVHIGlzIG5vdyBwcmVzZW50IG9uIHRoZSBhYnNlbmNlIG9mIERFQlVHLiAgVFJBQ0VfUkVGUworYW5kIFJFRl9ERUJVRyBoYXZlIGJlZW4gcmVuYW1lZCB0byBQeV9UUkFDRV9SRUZTIGFuZCBQeV9SRUZfREVCVUcsCityZXNwZWN0aXZlbHkuICBBdCBsb25nIGxhc3QsIHRoZSBzb3VyY2UgYWN0dWFsbHkgY29tcGlsZXMgYW5kIGxpbmtzIHdpdGhvdXQKIGVycm9ycyB3aGVuIHRoaXMgc3ltYm9sIGlzIGRlZmluZWQuCiAKLS0gU2V2ZXJhbCBzeW1ib2xzIHRoYXQgZGlkbid0IGZvbGxvdyB0aGUgbmV3IG5hbWluZyBzY2hlbWUgaGF2ZSBiZWVuIAotcmVuYW1lZCAodXN1YWxseSBieSBhZGRpbmcgdG8gcmVuYW1lMi5oKSB0byB1c2UgYSBQeSBvciBfUHkgcHJlZml4LiAgVGhlcmUgCi1hcmUgbm8gZXh0ZXJuYWwgc3ltYm9scyBsZWZ0IHdpdGhvdXQgYSBQeSBvciBfUHkgcHJlZml4LCBub3QgZXZlbiB0aG9zZSAKLWRlZmluZWQgYnkgc291cmNlcyB0aGF0IHdlcmUgaW5jb3Jwb3JhdGVkIGZyb20gZWxzZXdoZXJlIChyZWdleHByLmMsIAorLSBTZXZlcmFsIHN5bWJvbHMgdGhhdCBkaWRuJ3QgZm9sbG93IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBoYXZlIGJlZW4KK3JlbmFtZWQgKHVzdWFsbHkgYnkgYWRkaW5nIHRvIHJlbmFtZTIuaCkgdG8gdXNlIGEgUHkgb3IgX1B5IHByZWZpeC4gIFRoZXJlCithcmUgbm8gZXh0ZXJuYWwgc3ltYm9scyBsZWZ0IHdpdGhvdXQgYSBQeSBvciBfUHkgcHJlZml4LCBub3QgZXZlbiB0aG9zZQorZGVmaW5lZCBieSBzb3VyY2VzIHRoYXQgd2VyZSBpbmNvcnBvcmF0ZWQgZnJvbSBlbHNld2hlcmUgKHJlZ2V4cHIuYywKIG1kNWMuYykuICAoTWFjcm9zIGFyZSBhIGRpZmZlcmVudCBzdG9yeS4uLikKIAotLSBUaGVyZSBhcmUgbm93IHR5cGVkZWZzIGZvciB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIGNvbmZpZy5jIGFuZCAKKy0gVGhlcmUgYXJlIG5vdyB0eXBlZGVmcyBmb3IgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiBjb25maWcuYyBhbmQKIGZyb3plbi5jLgogCiAtIE5ldyBQWVRIT05fQVBJX1ZFUlNJT04gdmFsdWUgYW5kIC5weWMgZmlsZSBtYWdpYyBudW1iZXIuCkBAIC0yNTY4OSwxMjUgKzI1NzIyLDEyNSBAQAogLSBUaGUgYmluaGV4IGFuZCBiaW5hc2NpaSBtb2R1bGVzIG5vdyBhY3R1YWxseSB3b3JrLgogCiAtIFRoZSBjZ2kgbW9kdWxlIGhhcyBiZWVuIGFsbW9zdCB0b3RhbGx5IHJld3JpdHRlbiBhbmQgZG9jdW1lbnRlZC4KLUl0IG5vdyBzdXBwb3J0cyBmaWxlIHVwbG9hZCBhbmQgYSBuZXcgZGF0YSB0eXBlIHRvIGhhbmRsZSBmb3JtcyBtb3JlIAorSXQgbm93IHN1cHBvcnRzIGZpbGUgdXBsb2FkIGFuZCBhIG5ldyBkYXRhIHR5cGUgdG8gaGFuZGxlIGZvcm1zIG1vcmUKIGZsZXhpYmx5LgogCiAtIFRoZSBmb3JtYXR0ZXIgbW9kdWxlIChmb3IgdXNlIHdpdGggaHRtbGxpYikgaGFzIGJlZW4gb3ZlcmhhdWxlZCAoYWdhaW4pLgogCiAtIFRoZSBmdHBsaWIgbW9kdWxlIG5vdyBzdXBwb3J0cyBwYXNzaXZlIG1vZGUgYW5kIGhhcyBkb2Mgc3RyaW5ncy4KIAotLSBJbiAoaWRlYWxseSkgYWxsIHBsYWNlcyB3aGVyZSBiaW5hcnkgZmlsZXMgYXJlIHJlYWQgb3Igd3JpdHRlbiwgdGhlIGZpbGUgCi1pcyBub3cgY29ycmVjdGx5IG9wZW5lZCBpbiBiaW5hcnkgbW9kZSAoJ3JiJyBvciAnd2InKSBzbyB0aGUgY29kZSB3aWxsIHdvcmsgCistIEluIChpZGVhbGx5KSBhbGwgcGxhY2VzIHdoZXJlIGJpbmFyeSBmaWxlcyBhcmUgcmVhZCBvciB3cml0dGVuLCB0aGUgZmlsZQoraXMgbm93IGNvcnJlY3RseSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUgKCdyYicgb3IgJ3diJykgc28gdGhlIGNvZGUgd2lsbCB3b3JrCiBvbiBNYWMgb3IgUEMuCiAKLS0gRHVtbXkgdmVyc2lvbnMgb2Ygb3MucGF0aC5leHBhbmR2YXJzKCkgYW5kIGV4cGFuZHVzZXIoKSBhcmUgbm93IHByb3ZpZGVkIAorLSBEdW1teSB2ZXJzaW9ucyBvZiBvcy5wYXRoLmV4cGFuZHZhcnMoKSBhbmQgZXhwYW5kdXNlcigpIGFyZSBub3cgcHJvdmlkZWQKIG9uIG5vbi1Vbml4IHBsYXRmb3Jtcy4KIAotLSBNb2R1bGUgdXJsbGliIG5vdyBoYXMgdHdvIG5ldyBmdW5jdGlvbnMgdXJsMnBhdGhuYW1lIGFuZCBwYXRobmFtZTJ1cmwgCi13aGljaCB0dXJuIGxvY2FsIGZpbGVuYW1lcyBpbnRvICJmaWxlOi4uLiIgVVJMcyB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyAKLU5ldHNjYXBlICh3aHkgYmUgZGlmZmVyZW50KS4gIGl0IGFsc28gc3VwcG9ydHMgdXJscmV0cmlldmUoKSB3aXRoIGEgCi1wYXRobmFtZSBwYXJhbWV0ZXIsIGFuZCBob25vcnMgdGhlIHByb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyAoaHR0cF9wcm94eSAKKy0gTW9kdWxlIHVybGxpYiBub3cgaGFzIHR3byBuZXcgZnVuY3Rpb25zIHVybDJwYXRobmFtZSBhbmQgcGF0aG5hbWUydXJsCit3aGljaCB0dXJuIGxvY2FsIGZpbGVuYW1lcyBpbnRvICJmaWxlOi4uLiIgVVJMcyB1c2luZyB0aGUgc2FtZSBydWxlcyBhcworTmV0c2NhcGUgKHdoeSBiZSBkaWZmZXJlbnQpLiAgaXQgYWxzbyBzdXBwb3J0cyB1cmxyZXRyaWV2ZSgpIHdpdGggYQorcGF0aG5hbWUgcGFyYW1ldGVyLCBhbmQgaG9ub3JzIHRoZSBwcm94eSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGh0dHBfcHJveHkKIGV0Yy4pLiAgVGhlIFVSTCBwYXJzaW5nIGhhcyBiZWVuIGltcHJvdmVkIHNvbWV3aGF0LCB0b28uCiAKLS0gTWljcm8gaW1wcm92ZW1lbnRzIHRvIHVybHBhcnNlLiAgQWRkZWQgdXJscGFyc2UudXJsZGVmcmFnKCkgd2hpY2ggCistIE1pY3JvIGltcHJvdmVtZW50cyB0byB1cmxwYXJzZS4gIEFkZGVkIHVybHBhcnNlLnVybGRlZnJhZygpIHdoaWNoCiByZW1vdmVzIGEgdHJhaWxpbmcgYGAjZnJhZ21lbnQnJyBpZiBhbnkuCiAKIC0gVGhlIG1haWxib3ggbW9kdWxlIG5vdyBzdXBwb3J0cyBNSCBzdHlsZSBtZXNzYWdlIGRlbGltaXRlcnMgYXMgd2VsbC4KIAotLSBUaGUgbWhsaWIgbW9kdWxlIGNvbnRhaW5zIHNvbWUgbmV3IGZ1bmN0aW9uYWxpdHk6IHNldGNvbnRleHQoKSB0byBzZXQgdGhlIAotY3VycmVudCBmb2xkZXIgYW5kIHBhcnNlc2VxdWVuY2UoKSB0byBwYXJzZSBhIHNlcXVlbmNlIGFzIGNvbW1vbmx5IHBhc3NlZCAKKy0gVGhlIG1obGliIG1vZHVsZSBjb250YWlucyBzb21lIG5ldyBmdW5jdGlvbmFsaXR5OiBzZXRjb250ZXh0KCkgdG8gc2V0IHRoZQorY3VycmVudCBmb2xkZXIgYW5kIHBhcnNlc2VxdWVuY2UoKSB0byBwYXJzZSBhIHNlcXVlbmNlIGFzIGNvbW1vbmx5IHBhc3NlZAogdG8gTUggY29tbWFuZHMgKGUuZy4gMS0xMCBvciBsYXN0OjUpLgogCi0tIE5ldyBtb2R1bGUgbWltaWZ5IGZvciBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIE1JTUUgZm9ybWF0IG9mIGVtYWlsIAorLSBOZXcgbW9kdWxlIG1pbWlmeSBmb3IgY29udmVyc2lvbiB0byBhbmQgZnJvbSBNSU1FIGZvcm1hdCBvZiBlbWFpbAogbWVzc2FnZXMuCiAKLS0gTW9kdWxlIG5pIG5vdyBhdXRvbWF0aWNhbGx5IGluc3RhbGxzIGl0c2VsZiB3aGVuIGZpcnN0IGltcG9ydGVkIC0tIHRoaXMgCi1pcyBhZ2FpbnN0IHRoZSBub3JtYWwgcnVsZSB0aGF0IG1vZHVsZXMgc2hvdWxkIGRlZmluZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgCi1idXQgbm90IGludm9rZSB0aGVtLCBidXQgYXBwZWFycyBtb3JlIHVzZWZ1bCBpbiB0aGUgY2FzZSB0aGF0IHR3byAKKy0gTW9kdWxlIG5pIG5vdyBhdXRvbWF0aWNhbGx5IGluc3RhbGxzIGl0c2VsZiB3aGVuIGZpcnN0IGltcG9ydGVkIC0tIHRoaXMKK2lzIGFnYWluc3QgdGhlIG5vcm1hbCBydWxlIHRoYXQgbW9kdWxlcyBzaG91bGQgZGVmaW5lIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworYnV0IG5vdCBpbnZva2UgdGhlbSwgYnV0IGFwcGVhcnMgbW9yZSB1c2VmdWwgaW4gdGhlIGNhc2UgdGhhdCB0d28KIGRpZmZlcmVudCwgaW5kZXBlbmRlbnQgbW9kdWxlcyB3YW50IHRvIHVzZSBuaSdzIGZlYXR1cmVzLgogCiAtIFNvbWUgc21hbGwgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIGluIG1vZHVsZSBwaWNrbGUuCiAKLS0gU21hbGwgaW50ZXJmYWNlIGNoYW5nZSB0byB0aGUgcHJvZmlsZS5ydW4qKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyAtLSBtb3JlIAorLSBTbWFsbCBpbnRlcmZhY2UgY2hhbmdlIHRvIHRoZSBwcm9maWxlLnJ1biooKSBmYW1pbHkgb2YgZnVuY3Rpb25zIC0tIG1vcmUKIHNlbnNpYmxlIGhhbmRsaW5nIG9mIHJldHVybiB2YWx1ZXMuCiAKLS0gVGhlIG9mZmljaWFsbHkgcmVnaXN0ZXJlZCBNYWMgY3JlYXRvciBmb3IgUHl0aG9uIGZpbGVzIGlzICdQeXRoJy4gIFRoaXMgCistIFRoZSBvZmZpY2lhbGx5IHJlZ2lzdGVyZWQgTWFjIGNyZWF0b3IgZm9yIFB5dGhvbiBmaWxlcyBpcyAnUHl0aCcuICBUaGlzCiByZXBsYWNlcyAnUFlUSCcgd2hpY2ggd2FzIHVzZWQgYmVmb3JlIGJ1dCBuZXZlciByZWdpc3RlcmVkLgogCiAtIEFkZGVkIHJlZ3N1Yi5jYXB3b3JkcygpLiAgKFhYWCkKIAotLSBBZGRlZCBzdHJpbmcuY2Fwd29yZHMoKSwgc3RyaW5nLmNhcGl0YWxpemUoKSBhbmQgc3RyaW5nLnRyYW5zbGF0ZSgpLiAgCistIEFkZGVkIHN0cmluZy5jYXB3b3JkcygpLCBzdHJpbmcuY2FwaXRhbGl6ZSgpIGFuZCBzdHJpbmcudHJhbnNsYXRlKCkuCiAoWFhYKQogCi0tIEZpeGVkIGFuIGludGVyZmFjZSBidWcgaW4gdGhlIHJleGVjIG1vZHVsZTogaXQgd2FzIGltcG9zc2libGUgdG8gcGFzcyBhIAotaG9va3MgaW5zdGFuY2UgdG8gdGhlIFJFeGVjIGNsYXNzLiAgcmV4ZWMgbm93IGFsc28gc3VwcG9ydHMgdGhlIGR5bmFtaWMgCi1sb2FkaW5nIG9mIG1vZHVsZXMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLiAgU29tZSBvdGhlciBpbnRlcmZhY2VzIGhhdmUgYmVlbiAKKy0gRml4ZWQgYW4gaW50ZXJmYWNlIGJ1ZyBpbiB0aGUgcmV4ZWMgbW9kdWxlOiBpdCB3YXMgaW1wb3NzaWJsZSB0byBwYXNzIGEKK2hvb2tzIGluc3RhbmNlIHRvIHRoZSBSRXhlYyBjbGFzcy4gIHJleGVjIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBkeW5hbWljCitsb2FkaW5nIG9mIG1vZHVsZXMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLiAgU29tZSBvdGhlciBpbnRlcmZhY2VzIGhhdmUgYmVlbgogYWRkZWQgdG9vLgogCi0tIE1vZHVsZSByZmM4MjIgbm93IGNhY2hlcyB0aGUgaGVhZGVycyBpbiBhIGRpY3Rpb25hcnkgZm9yIG1vcmUgZWZmaWNpZW50IAorLSBNb2R1bGUgcmZjODIyIG5vdyBjYWNoZXMgdGhlIGhlYWRlcnMgaW4gYSBkaWN0aW9uYXJ5IGZvciBtb3JlIGVmZmljaWVudAogbG9va3VwLgogCi0tIFRoZSBzZ21sbGliIG1vZHVsZSBub3cgdW5kZXJzdGFuZHMgYSBsaW1pdGVkIG51bWJlciBvZiBTR01MICJzaG9ydGhhbmRzIiAKKy0gVGhlIHNnbWxsaWIgbW9kdWxlIG5vdyB1bmRlcnN0YW5kcyBhIGxpbWl0ZWQgbnVtYmVyIG9mIFNHTUwgInNob3J0aGFuZHMiCiBsaWtlIDxBLy4uLi8gZm9yIDxBPi4uLjwvQT4uICAoSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIHdhcyBhIGdvb2QgaWRlYS4uLikKIAotLSBUaGUgdGVtcGZpbGUgbW9kdWxlIGFjdHVhbGx5IHRyaWVzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBwbGFjZXMgdG8gZmluZCBhIAotdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkuICAoVGhpcyB3YXMgcHJvbXB0ZWQgYnkgY2VydGFpbiBMaW51eCAKLWluc3RhbGxhdGlvbnMgdGhhdCBhcHBlYXIgdG8gYmUgbWlzc2luZyBhIC91c3IvdG1wIGRpcmVjdG9yeS4pIFtBIGJ1ZyBpbiAKLXRoZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkIGlnbm9yZSBhIHByZS1leGlzdGluZyB0bXBkaXIgZ2xvYmFsIGhhcyBiZWVuIAorLSBUaGUgdGVtcGZpbGUgbW9kdWxlIGFjdHVhbGx5IHRyaWVzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBwbGFjZXMgdG8gZmluZCBhCit1c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIChUaGlzIHdhcyBwcm9tcHRlZCBieSBjZXJ0YWluIExpbnV4CitpbnN0YWxsYXRpb25zIHRoYXQgYXBwZWFyIHRvIGJlIG1pc3NpbmcgYSAvdXNyL3RtcCBkaXJlY3RvcnkuKSBbQSBidWcgaW4KK3RoZSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdvdWxkIGlnbm9yZSBhIHByZS1leGlzdGluZyB0bXBkaXIgZ2xvYmFsIGhhcyBiZWVuCiBmaXhlZCBpbiBiZXRhMy5dCiAKIC0gTXVjaCBpbXByb3ZlZCBhbmQgZW5oYW52ZWQgRmlsZURpYWxvZyBtb2R1bGUgZm9yIFRraW50ZXIuCiAKLS0gTWFueSBzbWFsbCBjaGFuZ2VzIHRvIFRraW50ZXIsIHRvIGJyaW5nIGl0IG1vcmUgaW4gbGluZSB3aXRoIFRrIDQuMCAoYXMgCistIE1hbnkgc21hbGwgY2hhbmdlcyB0byBUa2ludGVyLCB0byBicmluZyBpdCBtb3JlIGluIGxpbmUgd2l0aCBUayA0LjAgKGFzCiB3ZWxsIGFzIFRrIDQuMSkuCiAKLS0gTmV3IHNvY2tldCBpbnRlcmZhY2VzIGluY2x1ZGUgbnRvaHMoKSwgbnRvaGwoKSwgaHRvbnMoKSwgaHRvbmwoKSwgYW5kIAotcy5kdXAoKS4gIFNvY2tldHMgbm93IHdvcmsgY29ycmVjdGx5IG9uIFdpbmRvd3MuICBPbiBXaW5kb3dzLCB0aGUgYnVpbHQtaW4gCi1leHRlbnNpb24gaXMgY2FsbGVkIF9zb2NrZXQgYW5kIGEgd3JhcHBlciBtb2R1bGUgd2luL3NvY2tldC5weSBwcm92aWRlcyAKLSJtYWtlZmlsZSgpIiBhbmQgImR1cCgpIiBmdW5jdGlvbmFsaXR5LiAgT24gV2luZG93cywgdGhlIHNlbGVjdCBtb2R1bGUgCistIE5ldyBzb2NrZXQgaW50ZXJmYWNlcyBpbmNsdWRlIG50b2hzKCksIG50b2hsKCksIGh0b25zKCksIGh0b25sKCksIGFuZAorcy5kdXAoKS4gIFNvY2tldHMgbm93IHdvcmsgY29ycmVjdGx5IG9uIFdpbmRvd3MuICBPbiBXaW5kb3dzLCB0aGUgYnVpbHQtaW4KK2V4dGVuc2lvbiBpcyBjYWxsZWQgX3NvY2tldCBhbmQgYSB3cmFwcGVyIG1vZHVsZSB3aW4vc29ja2V0LnB5IHByb3ZpZGVzCisibWFrZWZpbGUoKSIgYW5kICJkdXAoKSIgZnVuY3Rpb25hbGl0eS4gIE9uIFdpbmRvd3MsIHRoZSBzZWxlY3QgbW9kdWxlCiB3b3JrcyBvbmx5IHdpdGggc29ja2V0IG9iamVjdHMuCiAKIC0gQnVncyBpbiBic2RkYiBtb2R1bGUgZml4ZWQgKGUuZy4gbWlzc2luZyBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcykuCiAKIC0gVGhlIGN1cnNlcyBleHRlbnNpb24gbm93IGluY2x1ZGVzIDxuY3Vyc2VzLmg+IHdoZW4gYXZhaWxhYmxlLgogCi0tIFRoZSBnZGJtIG1vZHVsZSBub3cgc3VwcG9ydHMgb3BlbmluZyBkYXRhYmFzZXMgaW4gImZhc3QiIG1vZGUgYnkgCistIFRoZSBnZGJtIG1vZHVsZSBub3cgc3VwcG9ydHMgb3BlbmluZyBkYXRhYmFzZXMgaW4gImZhc3QiIG1vZGUgYnkKIHNwZWNpZnlpbmcgJ2YnIGFzIHRoZSBzZWNvbmQgY2hhcmFjdGVyIG9yIHRoZSBtb2RlIHN0cmluZy4KIAotLSBuZXcgdmFyaWFibGVzIHN5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBwYXNzIGNvcnJlc3BvbmRpbmcgCistIG5ldyB2YXJpYWJsZXMgc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IHBhc3MgY29ycmVzcG9uZGluZwogY29uZmlndXJhdGlvbiBvcHRpb25zIC8gTWFrZWZpbGUgdmFyaWFibGVzIHRvIHRoZSBQeXRob24gcHJvZ3JhbW1lci4KIAotLSBUaGUgYGBuZXcnJyBtb2R1bGUgbm93IHN1cHBvcnRzIGNyZWF0aW5nIG5ldyB1c2VyLWRlZmluZWQgY2xhc3NlcyBhcyB3ZWxsIAorLSBUaGUgYGBuZXcnJyBtb2R1bGUgbm93IHN1cHBvcnRzIGNyZWF0aW5nIG5ldyB1c2VyLWRlZmluZWQgY2xhc3NlcyBhcyB3ZWxsCiBhcyBpbnN0YW5jZXMgdGhlcmVvZi4KIAotLSBUaGUgc291bmRleCBtb2R1bGUgbm93IHNwb3J0cyBnZXRfc291bmRleCgpIHRvIGdldCB0aGUgc291bmRleCB2YWx1ZSBmb3IgYW4gCi1hcmJpdHJhcnkgc3RyaW5nIChmb3JtZXJseSBpdCB3b3VsZCBvbmx5IGRvIHNvdW5kZXgtYmFzZWQgc3RyaW5nIAorLSBUaGUgc291bmRleCBtb2R1bGUgbm93IHNwb3J0cyBnZXRfc291bmRleCgpIHRvIGdldCB0aGUgc291bmRleCB2YWx1ZSBmb3IgYW4KK2FyYml0cmFyeSBzdHJpbmcgKGZvcm1lcmx5IGl0IHdvdWxkIG9ubHkgZG8gc291bmRleC1iYXNlZCBzdHJpbmcKIGNvbXBhcmlzb24pIGFzIHdlbGwgYXMgZG9jIHN0cmluZ3MuCiAKLS0gTmV3IG9iamVjdCB0eXBlICJjb2JqZWN0IiB0byBzYWZlbHkgd3JhcCB2b2lkIHBvaW50ZXJzIGZvciBwYXNzaW5nIHRoZW0gCistIE5ldyBvYmplY3QgdHlwZSAiY29iamVjdCIgdG8gc2FmZWx5IHdyYXAgdm9pZCBwb2ludGVycyBmb3IgcGFzc2luZyB0aGVtCiBiZXR3ZWVuIHZhcmlvdXMgZXh0ZW5zaW9uIG1vZHVsZXMuCiAKIC0gTW9yZSBlZmZpY2llbnQgY29tcHV0YXRpb24gb2YgZmxvYXQqKnNtYWxsaW50LgogCi0tIFRoZSBteXN0ZXJpb3VzIGJ1ZyB3aGVyZWJ5ICJ4LngiICh0d28gb2NjdXJyZW5jZXMgb2YgdGhlIHNhbWUgCi1vbmUtY2hhcmFjdGVyIG5hbWUpIHR5cGVkIGZyb20gdGhlIGNvbW1hbmRsaW5lIHdvdWxkIHNvbWV0aW1lcyBmYWlsIAorLSBUaGUgbXlzdGVyaW91cyBidWcgd2hlcmVieSAieC54IiAodHdvIG9jY3VycmVuY2VzIG9mIHRoZSBzYW1lCitvbmUtY2hhcmFjdGVyIG5hbWUpIHR5cGVkIGZyb20gdGhlIGNvbW1hbmRsaW5lIHdvdWxkIHNvbWV0aW1lcyBmYWlsCiBteXN0ZXJpb3VzbHkuCiAKLS0gVGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSByZWFkbGluZSBmdW5jdGlvbiBjYW4gbm93IGJlIGludm9rZWQgYnkgYSBDIAorLSBUaGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHJlYWRsaW5lIGZ1bmN0aW9uIGNhbiBub3cgYmUgaW52b2tlZCBieSBhIEMKIGV4dGVuc2lvbiB0aHJvdWdoIFB5T1NfUmVhZGxpbmVJbml0KCkuCiAKLS0gVGhlcmUncyBub3cgYW4gZXh0ZXJuYWxseSB2aXNpYmxlIHBvaW50ZXIgUHlJbXBvcnRfRnJvemVuTW9kdWxlcyB3aGljaCAKKy0gVGhlcmUncyBub3cgYW4gZXh0ZXJuYWxseSB2aXNpYmxlIHBvaW50ZXIgUHlJbXBvcnRfRnJvemVuTW9kdWxlcyB3aGljaAogY2FuIGJlIGNoYW5nZWQgYnkgYW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uLgogCi0tIFRoZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCBhIG5ldyBmb3JtYXQgY2hhcmFjdGVyICdEJyB0byAKKy0gVGhlIGFyZ3VtZW50IHBhcnNpbmcgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgbmV3IGZvcm1hdCBjaGFyYWN0ZXIgJ0QnIHRvCiBzcGVjaWZ5IGNvbXBsZXggbnVtYmVycy4KIAogLSBWYXJpb3VzIG1lbW9yeSBsZWFrcyBwbHVnZ2VkIGFuZCBidWdzIGZpeGVkLgogCi0tIEltcHJvdmVkIHN1cHBvcnQgZm9yIHBvc2l4IHRocmVhZHMgKG5vdyB0aGF0IHJlYWwgaW1wbGVtZW50YXRpb25zIGFyZSAKKy0gSW1wcm92ZWQgc3VwcG9ydCBmb3IgcG9zaXggdGhyZWFkcyAobm93IHRoYXQgcmVhbCBpbXBsZW1lbnRhdGlvbnMgYXJlCiBiZWdpbm5pbmcgdG8gYXBlcGFyKS4gIFN0aWxsIG5vIGZ1bGx5IGZ1bmN0aW9uaW5nIHNlbWFwaG9yZXMuCiAKLS0gU29tZSB2YXJpb3VzIGFuZCBzdW5kcnkgaW1wcm92ZW1lbnRzIGFuZCBuZXcgZW50cmllcyBpbiB0aGUgVG9vbHMgCistIFNvbWUgdmFyaW91cyBhbmQgc3VuZHJ5IGltcHJvdmVtZW50cyBhbmQgbmV3IGVudHJpZXMgaW4gdGhlIFRvb2xzCiBkaXJlY3RvcnkuCiAKIApAQCAtMjc0MTcsNyArMjc0NTAsNyBAQAogVGhlIGxpbWl0IG9uIHRoZSBzaXplIG9mIHRoZSAqcnVuLXRpbWUqIHN0YWNrIGhhcyBjb21wbGV0ZWx5IGJlZW4KIHJlbW92ZWQgLS0gdGhpcyBtZWFucyB0aGF0IHR1cGxlIG9yIGxpc3QgZGlzcGxheXMgY2FuIGNvbnRhaW4gYW55CiBudW1iZXIgb2YgZWxlbWVudHMgKGZvcm1lcmx5IG1vcmUgdGhhbiA1MCB3b3VsZCBjcmFzaCB0aGUKLWludGVycHJldGVyKS4gCitpbnRlcnByZXRlcikuCiAKIAogQ2hhbmdlcyB0byBleGlzdGluZyBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCBhNzViNmU5Li5iNTMwN2NmIDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0xLDc5ICsxLDIyIEBACi3vu78rKysrKysrKysrKworKysrKysrKysrKysKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuNHJjMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IHRiYQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogVEJBCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyNDg5MTogRml4IGEgcmFjZSBjb25kaXRpb24gYXQgUHl0aG9uIHN0YXJ0dXAgaWYgdGhlIGZpbGUgZGVzY3JpcHRvcgotICBvZiBzdGRpbiAoMCksIHN0ZG91dCAoMSkgb3Igc3RkZXJyICgyKSBpcyBjbG9zZWQgd2hpbGUgUHl0aG9uIGlzIGNyZWF0aW5nCi0gIHN5cy5zdGRpbiwgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBvYmplY3RzLiBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBub3cgc2V0Ci0gIHRvIE5vbmUgaWYgdGhlIGNyZWF0aW9uIG9mIHRoZSBvYmplY3QgZmFpbGVkLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gT1NFcnJvcgotICBleGNlcHRpb24uIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBNYXJjbyBQYW9saW5pLgorLSBJc3N1ZSAjMjUxMzE6IE1ha2UgdGhlIGxpbmUgbnVtYmVyIGFuZCBjb2x1bW4gb2Zmc2V0IG9mIHNldC9kaWN0IGxpdGVyYWxzIGFuZAorICBjb21wcmVoZW5zaW9ucyBjb3JyZXNwb25kIHRvIHRoZSBvcGVuaW5nIGJyYWNlLgogCi0tIElzc3VlICMyMTE2NzogTkFOIG9wZXJhdGlvbnMgYXJlIG5vdyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIHB5dGhvbiBpcwotICBjb21waWxlZCB3aXRoIElDQyBldmVuIGlmIC1mcC1tb2RlbCBzdHJpY3QgaXMgbm90IHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjNDM5NTogQmV0dGVyIHRlc3RpbmcgYW5kIGRvY3VtZW50YXRpb24gb2YgYmluYXJ5IG9wZXJhdG9ycy4KLSAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMjQ0Njc6IEZpeGVkIHBvc3NpYmxlIGJ1ZmZlciBvdmVyLXJlYWQgaW4gYnl0ZWFycmF5LiBUaGUgYnl0ZWFycmF5Ci0gIG9iamVjdCBub3cgYWx3YXlzIGFsbG9jYXRlcyBwbGFjZSBmb3IgdHJhaWxpbmcgbnVsbCBieXRlIGFuZCBpdCdzIGJ1ZmZlciBub3cKLSAgaXMgYWx3YXlzIG51bGwtdGVybWluYXRlZC4KLQotLSBJc3N1ZSAjMjQxMTU6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpLCBQeU9iamVjdF9Ob3QoKSwKLSAgUHlPYmplY3RfSXNJbnN0YW5jZSgpLCBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woKSBhbmQgX1B5RGljdF9Db250YWlucygpCi0gIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzeXN0ZW0gZXJyb3IgaW4gdGhlIGNvbXBhcmlzb24gb2YgZmFrZWQKLSAgdHlwZXMuU2ltcGxlTmFtZXNwYWNlLgotCi0tIElzc3VlICMyMjkzOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBpdGVyYXRvciBvYmplY3QuICBQYXRjaCBieQotICBDbGVtZW50IFJvdWF1bHQuCi0KLS0gSXNzdWUgIzIzOTg1OiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biB3aGVuIGRlbGV0aW5nIGEgc2xpY2UgZnJvbQotICB0aGUgZnJvbnQgb2YgYSBieXRlYXJyYXkgYW5kIHRoZW4gYXBwZW5kaW5nIHNvbWUgb3RoZXIgYnl0ZXMgZGF0YS4KLQotLSBJc3N1ZSAjMjQxMDI6IEZpeGVkIGV4Y2VwdGlvbiB0eXBlIGNoZWNraW5nIGluIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJzLgotCi0tIElzc3VlICMyMzc1NzogUHlTZXF1ZW5jZV9UdXBsZSgpIGluY29ycmVjdGx5IGNhbGxlZCB0aGUgY29uY3JldGUgbGlzdCBBUEkKLSAgd2hlbiB0aGUgZGF0YSB3YXMgYSBsaXN0IHN1YmNsYXNzLgotCi0tIElzc3VlICMyNDQwNzogRml4IGNyYXNoIHdoZW4gZGljdCBpcyBtdXRhdGVkIHdoaWxlIGJlaW5nIHVwZGF0ZWQuCi0KLS0gSXNzdWUgIzI0MDk2OiBNYWtlIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgbW9yZSByb2J1c3QgYWdhaW5zdCBtdXRhdGlvbiBvZiB0aGUKLSAgd2FybmluZ3MuZmlsdGVycyBsaXN0LgotCi0tIElzc3VlICMyMzk5NjogQXZvaWQgYSBjcmFzaCB3aGVuIGEgZGVsZWdhdGVkIGdlbmVyYXRvciByYWlzZXMgYW4KLSAgdW5ub3JtYWxpemVkIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uLiAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQotLSBJc3N1ZSAjMjQwMjI6IEZpeCB0b2tlbml6ZXIgY3Jhc2ggd2hlbiBwcm9jZXNzaW5nIHVuZGVjb2RhYmxlIHNvdXJjZSBjb2RlLgotCi0tIElzc3VlICMyMzMwOTogQXZvaWQgYSBkZWFkbG9jayBhdCBzaHV0ZG93biBpZiBhIGRhZW1vbiB0aHJlYWQgaXMgYWJvcnRlZAotICB3aGlsZSBpdCBpcyBob2xkaW5nIGEgbG9jayB0byBhIGJ1ZmZlcmVkIEkvTyBvYmplY3QsIGFuZCB0aGUgbWFpbiB0aHJlYWQKLSAgdHJpZXMgdG8gdXNlIHRoZSBzYW1lIEkvTyBvYmplY3QgKHR5cGljYWxseSBzdGRvdXQgb3Igc3RkZXJyKS4gIEEgZmF0YWwKLSAgZXJyb3IgaXMgZW1pdHRlZCBpbnN0ZWFkLgotCi0tIElzc3VlICMyMjk3NzogRml4ZWQgZm9ybWF0dGluZyBXaW5kb3dzIGVycm9yIG1lc3NhZ2VzIG9uIFdpbmUuCi0gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzIzODAzOiBGaXhlZCBzdHIucGFydGl0aW9uKCkgYW5kIHN0ci5ycGFydGl0aW9uKCkgd2hlbiBhIHNlcGFyYXRvcgotICBpcyB3aWRlciB0aGVuIHBhcnRpdGlvbmVkIHN0cmluZy4KLQotLSBJc3N1ZSAjMjMxOTI6IEZpeGVkIGdlbmVyYXRvciBsYW1iZGFzLiAgUGF0Y2ggYnkgQnJ1bm8gQ2F1ZXQuCi0KLS0gSXNzdWUgIzIzNjI5OiBGaXggdGhlIGRlZmF1bHQgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgdmFyaWFibGUtc2l6ZWQKLSAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMjQwNDQ6IEZpeCBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGlzdC5zb3J0IGluIG91dCBvZgotICBtZW1vcnkgY29uZGl0aW9ucy4KLQotLSBJc3N1ZSAjMjEzNTQ6IFB5Q0Z1bmN0aW9uX05ldyBmdW5jdGlvbiBpcyBleHBvc2VkIGJ5IHB5dGhvbiBETEwgYWdhaW4uCistIElzc3VlICMyNTE1MDogSGlkZSB0aGUgcHJpdmF0ZSBfUHlfYXRvbWljX3h4eCBzeW1ib2xzIGZyb20gdGhlIHB1YmxpYworICBQeXRob24uaCBoZWFkZXIgdG8gZml4IGEgY29tcGlsYXRpb24gZXJyb3Igd2l0aCBPcGVuTVAuIFB5VGhyZWFkU3RhdGVfR0VUKCkKKyAgYmVjb21lcyBhbiBhbGlhcyB0byBQeVRocmVhZFN0YXRlX0dldCgpIHRvIGF2b2lkIEFCSSBpbmNvbXBhdGliaWxpZXMuCiAKIExpYnJhcnkKIC0tLS0tLS0KQEAgLTg4LDExICszMSwxNCBAQAogLSBJc3N1ZSAjMjUyMzM6IFJld3JpdGUgdGhlIGd1dHMgb2YgYXN5bmNpby5RdWV1ZSBhbmQKICAgYXN5bmNpby5TZW1hcGhvcmUgdG8gYmUgbW9yZSB1bmRlcnN0YW5kYWJsZSBhbmQgY29ycmVjdC4KIAorLSBJc3N1ZSAjMjUyMDM6IEZhaWxlZCByZWFkbGluZS5zZXRfY29tcGxldGVyX2RlbGltcygpIG5vIGxvbmdlciBsZWZ0IHRoZQorICBtb2R1bGUgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorCiAtIElzc3VlICMyMzYwMDogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0emluZm8uZnJvbXV0YygpIHdhcyByZXR1cm5pbmcKICAgd3JvbmcgcmVzdWx0cyBpbiBzb21lIGNhc2VzLgogCi0tIElzc3VlICMyNTIwMzogRmFpbGVkIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCkgbm8gbG9uZ2VyIGxlZnQgdGhlCi0gIG1vZHVsZSBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCistIElzc3VlICMyMzMyOTogQWxsb3cgdGhlIHNzbCBtb2R1bGUgdG8gYmUgYnVpbHQgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZgorICBMaWJyZVNTTC4KIAogLSBQcmV2ZW50IG92ZXJmbG93IGluIF9VbnBpY2tsZXJfUmVhZC4KIApAQCAtMTAwLDM2MyArNDYsODQgQEAKICAgcmVzcGVjdHMgdGhlIGxldHRlciBjYXNlIGdpdmVuIGJ5IHRoZSB1c2VyLiBUaGlzIHJlc3RvcmVzIHRoZSBhYmlsaXR5IHRvCiAgIHdyaXRlIGVuY29kaW5nIG5hbWVzIGluIHVwcGVyY2FzZSBsaWtlICJVVEYtOCIsIHdoaWNoIHdvcmtlZCBpbiBQeXRob24gMi4KIAorLSBJc3N1ZSAjMjUxMzU6IE1ha2UgZGVxdWVfY2xlYXIoKSBzYWZlciBieSBlbXB0eWluZyB0aGUgZGVxdWUgYmVmb3JlIGNsZWFyaW5nLgorICBUaGlzIGhlbHBzIGF2b2lkIHBvc3NpYmxlIHJlZW50cmFuY3kgaXNzdWVzLgorCiAtIElzc3VlICMxOTE0MzogcGxhdGZvcm0gbW9kdWxlIG5vdyByZWFkcyBXaW5kb3dzIHZlcnNpb24gZnJvbSBrZXJuZWwzMi5kbGwgdG8KICAgYXZvaWQgY29tcGF0aWJpbGl0eSBzaGltcy4KIAorLSBJc3N1ZSAjMjUwOTI6IEZpeCBkYXRldGltZS5zdHJmdGltZSgpIGZhaWx1cmUgd2hlbiBlcnJubyB3YXMgYWxyZWFkeSBzZXQgdG8KKyAgRUlOVkFMLgorCiAtIElzc3VlICMyMzUxNzogRml4IHJvdW5kaW5nIGluIGZyb210aW1lc3RhbXAoKSBhbmQgdXRjZnJvbXRpbWVzdGFtcCgpIG1ldGhvZHMKICAgb2YgZGF0ZXRpbWUuZGF0ZXRpbWU6IG1pY3Jvc2Vjb25kcyBhcmUgbm93IHJvdW5kZWQgdG8gbmVhcmVzdCB3aXRoIHRpZXMKICAgZ29pbmcgdG8gbmVhcmVzdCBldmVuIGludGVnZXIgKFJPVU5EX0hBTEZfRVZFTiksIGluc3RlYWQgb2YgYmVpbmcgcm91bmRpbmcKLSAgdG93YXJkcyB6ZXJvIChST1VORF9ET1dOKS4gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGVzZSBtZXRob2RzIHVzZSB0aGUgc2FtZQotICByb3VuZGluZyBtb2RlIHRoYW4gZGF0ZXRpbWUudGltZWRlbHRhIHRvIGtlZXAgdGhlIHByb3BlcnR5OgorICB0b3dhcmRzIG1pbnVzIGluZmluaXR5IChST1VORF9GTE9PUikuIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlc2UgbWV0aG9kcyB1c2UKKyAgdGhlIHNhbWUgcm91bmRpbmcgbW9kZSB0aGFuIGRhdGV0aW1lLnRpbWVkZWx0YSB0byBrZWVwIHRoZSBwcm9wZXJ0eToKICAgKGRhdGV0aW1lKDE5NzAsMSwxKSArIHRpbWVkZWx0YShzZWNvbmRzPXQpKSA9PSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHQpLgogICBJdCBhbHNvIHRoZSByb3VuZGluZyBtb2RlIHVzZWQgYnkgcm91bmQoZmxvYXQpIGZvciBleGFtcGxlLgogCistIElzc3VlICMyNTE1NTogRml4IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIGFuZCBkYXRldGltZS5kYXRldGltZS51dGNub3coKSBvbgorICBXaW5kb3dzIHRvIHN1cHBvcnQgZGF0ZSBhZnRlciB5ZWFyIDIwMzguIEl0IHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbgorICBQeXRob24gMy41LjAuCisKKy0gSXNzdWUgIzI1MTA4OiBPbWl0dGVkIGludGVybmFsIGZyYW1lcyBpbiB0cmFjZWJhY2sgZnVuY3Rpb25zIHByaW50X3N0YWNrKCksCisgIGZvcm1hdF9zdGFjaygpLCBhbmQgZXh0cmFjdF9zdGFjaygpIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjUxMTg6IEZpeCBhIHJlZ3Jlc3Npb24gb2YgUHl0aG9uIDMuNS4wIGluIG9zLndhaXRwaWQoKSBvbiBXaW5kb3dzLgorCiAtIElzc3VlICMyNDY4NDogc29ja2V0LnNvY2tldC5nZXRhZGRyaW5mbygpIG5vdyBjYWxscwogICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBlbmNvZGUoKSBtZXRob2Qgb2YgdGhlCiAgIGhvc3QsIHRvIGhhbmRsZSBjb3JyZWN0bHkgY3VzdG9tIHN0cmluZyB3aXRoIGFuIGVuY29kZSgpIG1ldGhvZCB3aGljaCBkb2Vzbid0CiAgIHJldHVybiBhIGJ5dGUgc3RyaW5nLiBUaGUgZW5jb2RlciBvZiB0aGUgSUROQSBjb2RlYyBpcyBub3cgY2FsbGVkIGRpcmVjdGx5CiAgIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgZW5jb2RlKCkgbWV0aG9kIG9mIHRoZSBzdHJpbmcuCiAKLS0gSXNzdWUgIzI0OTgyOiBzaHV0aWwubWFrZV9hcmNoaXZlKCkgd2l0aCB0aGUgInppcCIgZm9ybWF0IG5vdyBhZGRzIGVudHJpZXMKLSAgZm9yIGRpcmVjdG9yaWVzIChpbmNsdWRpbmcgZW1wdHkgZGlyZWN0b3JpZXMpIGluIFpJUCBmaWxlLgorLSBJc3N1ZSAjMjUwNjA6IENvcnJlY3RseSBjb21wdXRlIHN0YWNrIHVzYWdlIG9mIHRoZSBCVUlMRF9NQVAgb3Bjb2RlLgogCiAtIElzc3VlICMyNDg1NzogQ29tcGFyaW5nIGNhbGxfYXJncyB0byBhIGxvbmcgc2VxdWVuY2Ugbm93IGNvcnJlY3RseSByZXR1cm5zIGEKICAgYm9vbGVhbiByZXN1bHQgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IEEgS2FwdHVyLgogCi0tIElzc3VlICMyNTAxOTogRml4ZWQgYSBjcmFzaCBjYXVzZWQgYnkgc2V0dGluZyBub24tc3RyaW5nIGtleSBvZiBleHBhdCBwYXJzZXIuCi0gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvaG4gTGVpdGNoLgotCi0tIElzc3VlICMyNDkxNzogdGltZV9zdHJmdGltZSgpIGJ1ZmZlciBvdmVyLXJlYWQuCi0KIC0gSXNzdWUgIzIzMTQ0OiBNYWtlIHN1cmUgdGhhdCBIVE1MUGFyc2VyLmZlZWQoKSByZXR1cm5zIGFsbCB0aGUgZGF0YSwgZXZlbgogICB3aGVuIGNvbnZlcnRfY2hhcnJlZnMgaXMgVHJ1ZS4KIAorLSBJc3N1ZSAjMjQ5ODI6IHNodXRpbC5tYWtlX2FyY2hpdmUoKSB3aXRoIHRoZSAiemlwIiBmb3JtYXQgbm93IGFkZHMgZW50cmllcworICBmb3IgZGlyZWN0b3JpZXMgKGluY2x1ZGluZyBlbXB0eSBkaXJlY3RvcmllcykgaW4gWklQIGZpbGUuCisKKy0gSXNzdWUgIzI1MDE5OiBGaXhlZCBhIGNyYXNoIGNhdXNlZCBieSBzZXR0aW5nIG5vbi1zdHJpbmcga2V5IG9mIGV4cGF0IHBhcnNlci4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgSm9obiBMZWl0Y2guCisKIC0gSXNzdWUgIzE2MTgwOiBFeGl0IHBkYiBpZiBmaWxlIGhhcyBzeW50YXggZXJyb3IsIGluc3RlYWQgb2YgdHJhcHBpbmcgdXNlcgogICBpbiBhbiBpbmZpbml0ZSBsb29wLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzI0ODkxOiBGaXggYSByYWNlIGNvbmRpdGlvbiBhdCBQeXRob24gc3RhcnR1cCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yCisgIG9mIHN0ZGluICgwKSwgc3Rkb3V0ICgxKSBvciBzdGRlcnIgKDIpIGlzIGNsb3NlZCB3aGlsZSBQeXRob24gaXMgY3JlYXRpbmcKKyAgc3lzLnN0ZGluLCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIG9iamVjdHMuIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIG5vdyBzZXQKKyAgdG8gTm9uZSBpZiB0aGUgY3JlYXRpb24gb2YgdGhlIG9iamVjdCBmYWlsZWQsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBPU0Vycm9yCisgIGV4Y2VwdGlvbi4gSW5pdGlhbCBwYXRjaCB3cml0dGVuIGJ5IE1hcmNvIFBhb2xpbmkuCisKKy0gSXNzdWUgIzI0OTkyOiBGaXggZXJyb3IgaGFuZGxpbmcgYW5kIGEgcmFjZSBjb25kaXRpb24gKHJlbGF0ZWQgdG8gZ2FyYmFnZQorICBjb2xsZWN0aW9uKSBpbiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBjb25zdHJ1Y3Rvci4KKworLSBJc3N1ZSAjMjQ4ODE6IEZpeGVkIHNldHRpbmcgYmluYXJ5IG1vZGUgaW4gUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIEZpbGVJTworICBvbiBXaW5kb3dzIGFuZCBDeWd3aW4uICBQYXRjaCBmcm9tIEFraXJhIExpLgorCiAtIElzc3VlICMyMTExMjogRml4IHJlZ3Jlc3Npb24gaW4gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlIG9uIHN1YmNsYXNzZXMuCiAgIFBhdGNoIGZyb20gQmVya2VyIFBla3NhZy4KIAotLSBJc3N1ZSAjMjQ5MzE6IEluc3RhbmNlcyBvZiBzdWJjbGFzc2VzIG9mIG5hbWVkdHVwbGVzIGhhdmUgdGhlaXIgb3duIF9fZGljdF9fCi0gIHdoaWNoIGJyZWFrcyB0aGUgaW5oZXJpdGVkIF9fZGljdF9fIHByb3BlcnR5IGFuZCBicmVha3MgdGhlIF9hc2RpY3QoKSBtZXRob2QuCi0gIFJlbW92ZWQgdGhlIF9fZGljdF9fIHByb3BlcnR5IHRvIHByZXZlbnQgdGhlIGNvbmZsaWN0IGFuZCBmaXhlZCBfYXNkaWN0KCkuCi0KIC0gSXNzdWUgIzI0NzY0OiBjZ2kuRmllbGRTdG9yYWdlLnJlYWRfbXVsdGkoKSBub3cgaWdub3JlcyB0aGUgQ29udGVudC1MZW5ndGgKICAgaGVhZGVyIGluIHBhcnQgaGVhZGVycy4gUGF0Y2ggd3JpdHRlbiBieSBQZXRlciBMYW5kcnkgYW5kIHJldmlld2VkIGJ5IFBpZXJyZQogICBRdWVudGVsLgogCistIElzc3VlICMyNDkxMzogRml4IG92ZXJydW4gZXJyb3IgaW4gZGVxdWUuaW5kZXgoKS4KKyAgRm91bmQgYnkgSm9obiBMZWl0Y2ggYW5kIEJyeWNlIERhcmxpbmcuCisKIC0gSXNzdWUgIzI0Nzc0OiBGaXggZG9jc3RyaW5nIGluIGh0dHAuc2VydmVyLnRlc3QuIFBhdGNoIGZyb20gQ2hpdS1Ic2lhbmcgSHN1LgogCiAtIElzc3VlICMyMTE1OTogSW1wcm92ZSBtZXNzYWdlIGluIGNvbmZpZ3BhcnNlci5JbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yLgogICBQYXRjaCBmcm9tIMWBdWthc3ogTGFuZ2EuCiAKLS0gSXNzdWUgIzIzODg4OiBIYW5kbGUgZnJhY3Rpb25hbCB0aW1lIGluIGNvb2tpZSBleHBpcnkuIFBhdGNoIGJ5IHNzaC4KLQotLSBJc3N1ZSAjMjMwMDQ6IG1vY2tfb3BlbigpIG5vdyByZWFkcyBiaW5hcnkgZGF0YSBjb3JyZWN0bHkgd2hlbiB0aGUgdHlwZSBvZgotICByZWFkX2RhdGEgaXMgYnl0ZXMuICBJbml0aWFsIHBhdGNoIGJ5IEFhcm9uIEhpbGwuCi0KLS0gSXNzdWUgIzIzNjUyOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgdGhlIHNlbGVjdCBtb2R1bGUgYWdhaW5zdCB0aGUKLSAgbGliYyBoZWFkZXJzIGZyb20gdGhlIExpbnV4IFN0YW5kYXJkIEJhc2UsIHdoaWNoIGRvIG5vdCBpbmNsdWRlIHNvbWUKLSAgRVBPTEwgbWFjcm9zLiAgUGF0Y2ggYnkgTWF0dCBGcmFuay4KLQotLSBJc3N1ZSAjMjI5MzI6IEZpeCB0aW1lem9uZXMgaW4gZW1haWwudXRpbHMuZm9ybWF0ZGF0ZS4KLSAgUGF0Y2ggZnJvbSBEbWl0cnkgU2hhY2huZXYuCi0KLS0gSXNzdWUgIzIzNzc5OiBpbWFwbGliIHJhaXNlcyBUeXBlRXJyb3IgaWYgYXV0aGVudGljYXRvciB0cmllcyB0byBhYm9ydC4KLSAgUGF0Y2ggZnJvbSBDcmFpZyBIb2xtcXVpc3QuCi0KLS0gSXNzdWUgIzIzMzE5OiBGaXggY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSwgc3dhcCBjb3JyZWN0bHkgYnl0ZXMuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgTWF0dGhpZXUgR2F1dGllci4KLQotLSBJc3N1ZSAjMjMyNTQ6IERvY3VtZW50IGhvdyB0byBjbG9zZSB0aGUgVENQU2VydmVyIGxpc3RlbmluZyBzb2NrZXQuCi0gIFBhdGNoIGZyb20gTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMTk0NTA6IFVwZGF0ZSBXaW5kb3dzIGFuZCBPUyBYIGluc3RhbGxlciBidWlsZHMgdG8gdXNlIFNRTGl0ZSAzLjguMTEuCi0KLS0gSXNzdWUgIzIzNDQxOiByY29tcGxldGVyIG5vdyBwcmludHMgYSB0YWIgY2hhcmFjdGVyIGluc3RlYWQgb2YgZGlzcGxheWluZwotICBwb3NzaWJsZSBjb21wbGV0aW9ucyBmb3IgYW4gZW1wdHkgd29yZC4gIEluaXRpYWwgcGF0Y2ggYnkgTWFydGluIFNla2VyYS4KLQotLSBJc3N1ZSAjMjQ3MzU6IEZpeCBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgaW4KLSAgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCkuCi0KLS0gSXNzdWUgIzE3NTI3OiBBZGQgUEFUQ0ggdG8gd3NnaXJlZi52YWxpZGF0b3IuIFBhdGNoIGZyb20gTHVjYSBTYmFyZGVsbGEuCi0KLS0gSXNzdWUgIzI0NjgzOiBGaXhlZCBjcmFzaGVzIGluIF9qc29uIGZ1bmN0aW9ucyBjYWxsZWQgd2l0aCBhcmd1bWVudHMgb2YKLSAgaW5hcHByb3ByaWF0ZSB0eXBlLgotCi0tIElzc3VlICMyMTY5Nzogc2h1dGlsLmNvcHl0cmVlKCkgbm93IGNvcnJlY3RseSBoYW5kbGVzIHN5bWJvbGljIGxpbmtzIHRoYXQKLSAgcG9pbnQgdG8gZGlyZWN0b3JpZXMuICBQYXRjaCBieSBFZHVhcmRvIFNlYWJyYSBhbmQgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gSXNzdWUgIzI0NjIwOiBSYW5kb20uc2V0c3RhdGUoKSBub3cgdmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiBzdGF0ZSBsYXN0IGVsZW1lbnQuCi0KLS0gSXNzdWUgIzIyMTUzOiBJbXByb3ZlIHVuaXR0ZXN0IGRvY3MuIFBhdGNoIGZyb20gTWFydGluIFBhbnRlciBhbmQgZXZpbHplcm8uCi0KLS0gSXNzdWUgIzI0MjA2OiBGaXhlZCBfX2VxX18gYW5kIF9fbmVfXyBtZXRob2RzIG9mIGluc3BlY3QgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMjE3NTA6IG1vY2tfb3Blbi5yZWFkX2RhdGEgY2FuIG5vdyBiZSByZWFkIGZyb20gZWFjaCBpbnN0YW5jZSwgYXMgaXQKLSAgY291bGQgaW4gUHl0aG9uIDMuMy4KLQotLSBJc3N1ZSAjMjMyNDc6IEZpeCBhIGNyYXNoIGluIHRoZSBTdHJlYW1Xcml0ZXIucmVzZXQoKSBvZiBDSksgY29kZWNzLgotCi0tIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KLSAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KLQotLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCi0KLS0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzI0MjU5OiB0YXJmaWxlIG5vdyByYWlzZXMgYSBSZWFkRXJyb3IgaWYgYW4gYXJjaGl2ZSBpcyB0cnVuY2F0ZWQKLSAgaW5zaWRlIGEgZGF0YSBzZWdtZW50LgotCi0tIElzc3VlICMyNDU1MjogRml4IHVzZSBhZnRlciBmcmVlIGluIGFuIGVycm9yIGNhc2Ugb2YgdGhlIF9waWNrbGUgbW9kdWxlLgotCi0tIElzc3VlICMyNDUxNDogdGFyZmlsZSBub3cgdG9sZXJhdGVzIG51bWJlciBmaWVsZHMgY29uc2lzdGluZyBvZiBvbmx5Ci0gIHdoaXRlc3BhY2UuCi0KLS0gSXNzdWUgIzE5MTc2OiBGaXhlZCBkb2N0eXBlKCkgcmVsYXRlZCBidWdzIGluIEMgaW1wbGVtZW50YXRpb24gb2YgRWxlbWVudFRyZWUuCi0gIEEgZGVwcmVjYXRpb24gd2FybmluZyBubyBsb25nZXIgaXNzdWVkIGJ5IFhNTFBhcnNlciBzdWJjbGFzcyB3aXRoIGRlZmF1bHQKLSAgZG9jdHlwZSgpIG1ldGhvZC4gIERpcmVjdCBjYWxsIG9mIGRvY3R5cGUoKSBub3cgaXNzdWVzIGEgd2FybmluZy4gIFBhcnNlcidzCi0gIGRvY3R5cGUoKSBub3cgaXMgbm90IGNhbGxlZCBpZiB0YXJnZXQncyBkb2N0eXBlKCkgaXMgY2FsbGVkLiAgQmFzZWQgb24gcGF0Y2gKLSAgYnkgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMjAzODc6IFJlc3RvcmUgc2VtYW50aWMgcm91bmQtdHJpcCBjb3JyZWN0bmVzcyBpbiB0b2tlbml6ZS91bnRva2VuaXplCi0gIGZvciB0YWItaW5kZW50ZWQgYmxvY2tzLgotCi0tIElzc3VlICMyNDQ1NjogRml4ZWQgcG9zc2libGUgYnVmZmVyIG92ZXItcmVhZCBpbiBhZHBjbTJsaW4oKSBhbmQgbGluMmFkcGNtKCkKLSAgZnVuY3Rpb25zIG9mIHRoZSBhdWRpb29wIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjQzMzY6IFRoZSBjb250ZXh0bWFuYWdlciBkZWNvcmF0b3Igbm93IHdvcmtzIHdpdGggZnVuY3Rpb25zIHdpdGgKLSAga2V5d29yZCBhcmd1bWVudHMgY2FsbGVkICJmdW5jIiBhbmQgInNlbGYiLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMjQ0ODk6IGVuc3VyZSBhIHByZXZpb3VzbHkgc2V0IEMgZXJybm8gZG9lc24ndCBkaXN0dXJiIGNtYXRoLnBvbGFyKCkuCi0KLS0gSXNzdWUgIzU2MzM6IEZpeGVkIHRpbWVpdCB3aGVuIHRoZSBzdGF0ZW1lbnQgaXMgYSBzdHJpbmcgYW5kIHRoZSBzZXR1cCBpcyBub3QuCi0KLS0gSXNzdWUgIzI0MzI2OiBGaXhlZCBhdWRpb29wLnJhdGVjdigpIHdpdGggbm9uLWRlZmF1bHQgd2VpZ2h0QiBhcmd1bWVudC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQgTW9vcmUuCi0KLS0gSXNzdWUgIzIzODQwOiB0b2tlbml6ZS5vcGVuKCkgbm93IGNsb3NlcyB0aGUgdGVtcG9yYXJ5IGJpbmFyeSBmaWxlIG9uIGVycm9yCi0gIHRvIGZpeCBhIHJlc291cmNlIHdhcm5pbmcuCi0KLS0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgaW4gc3FsaXRlMy5Sb3cgY29uc3RydWN0b3Igd2l0aCBmYWtlZAotICBjdXJzb3IgdHlwZS4KLQotLSBJc3N1ZSAjMjIxMDc6IHRlbXBmaWxlLmdldHRlbXBkaXIoKSBhbmQgdGVtcGZpbGUubWtkdGVtcCgpIG5vdyB0cnkgYWdhaW4KLSAgd2hlbiBhIGRpcmVjdG9yeSB3aXRoIHRoZSBjaG9zZW4gbmFtZSBhbHJlYWR5IGV4aXN0cyBvbiBXaW5kb3dzIGFzIHdlbGwgYXMKLSAgb24gVW5peC4gIHRlbXBmaWxlLm1rc3RlbXAoKSBub3cgZmFpbHMgZWFybHkgaWYgcGFyZW50IGRpcmVjdG9yeSBpcyBub3QKLSAgdmFsaWQgKG5vdCBleGlzdHMgb3IgaXMgYSBmaWxlKSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM2NTk4OiBJbmNyZWFzZWQgdGltZSBwcmVjaXNpb24gYW5kIHJhbmRvbSBudW1iZXIgcmFuZ2UgaW4KLSAgZW1haWwudXRpbHMubWFrZV9tc2dpZCgpIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgSUQuCi0KLS0gSXNzdWUgIzI0MDkxOiBGaXhlZCB2YXJpb3VzIGNyYXNoZXMgaW4gY29ybmVyIGNhc2VzIGluIEMgaW1wbGVtZW50YXRpb24gb2YKLSAgRWxlbWVudFRyZWUuCi0KLS0gSXNzdWUgIzIxOTMxOiBtc2lsaWIuRkNJQ3JlYXRlKCkgbm93IHJhaXNlcyBUeXBlRXJyb3IgaW4gdGhlIGNhc2Ugb2YgYSBiYWQKLSAgYXJndW1lbnQgaW5zdGVhZCBvZiBhIFZhbHVlRXJyb3Igd2l0aCBhIGJvZ3VzIEZDSSBlcnJvciBudW1iZXIuCi0gIFBhdGNoIGJ5IEplZmZyZXkgQXJtc3Ryb25nLgotCi0tIElzc3VlICMyMzc5NjogcGVlayBhbmQgcmVhZDEgbWV0aG9kcyBvZiBCdWZmZXJlZFJlYWRlciBub3cgcmFpc2UgVmFsdWVFcnJvcgotICBpZiB0aGV5IGNhbGxlZCBvbiBhIGNsb3NlZCBvYmplY3QuIFBhdGNoIGJ5IEpvaG4gSGVyZ2Vucm9lZGVyLgotCi0tIElzc3VlICMyNDUyMTogRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSBwaWNrbGUgbW9kdWxlLgotCi0tIElzc3VlICMyMjkzMTogQWxsb3cgJ1snIGFuZCAnXScgaW4gY29va2llIHZhbHVlcy4KLQotLSBJc3N1ZSAjMjAyNzQ6IFJlbW92ZSBpZ25vcmVkIGFuZCBlcnJvbmVvdXMgImt3YXJncyIgcGFyYW1ldGVycyBmcm9tIHRocmVlCi0gIE1FVEhfVkFSQVJHUyBtZXRob2RzIG9uIF9zcWxpdGUuQ29ubmVjdGlvbi4KLQotLSBJc3N1ZSAjMjQwOTQ6IEZpeCBwb3NzaWJsZSBjcmFzaCBpbiBqc29uLmVuY29kZSB3aXRoIHBvb3JseSBiZWhhdmVkIGRpY3QKLSAgc3ViY2xhc3Nlcy4KLQotLSBBc3luY2lvIGlzc3VlIDIyMiAvIFBSIDIzMSAoVmljdG9yIFN0aW5uZXIpIC0tIGZpeCBAY29yb3V0aW5lCi0gIGZ1bmN0aW9ucyB3aXRob3V0IF9fbmFtZV9fLgotCi0tIElzc3VlICM5MjQ2OiBPbiBQT1NJWCwgb3MuZ2V0Y3dkKCkgbm93IHN1cHBvcnRzIHBhdGhzIGxvbmdlciB0aGFuIDEwMjUgYnl0ZXMuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgV2lsbGlhbSBPcnIuCi0KLS0gVGhlIGtleXdvcmRzIGF0dHJpYnV0ZSBvZiBmdW5jdG9vbHMucGFydGlhbCBpcyBub3cgYWx3YXlzIGEgZGljdGlvbmFyeS4KLQotLSBJc3N1ZXMgIzI0MDk5LCAjMjQxMDAsIGFuZCAjMjQxMDE6IEZpeCBmcmVlLWFmdGVyLXVzZSBidWcgaW4gaGVhcHEncyBzaWZ0dXAKLSAgYW5kIHNpZnRkb3duIGZ1bmN0aW9ucy4KLQotLSBCYWNrcG9ydCBjb2xsZWN0aW9ucy5kZXF1ZSBmaXhlcyBmcm9tIFB5dGhvbiAzLjUuICBQcmV2ZW50cyByZWVudHJhbnQgYmFkbmVzcwotICBkdXJpbmcgZGVsZXRpb24gYnkgZGVmZXJyaW5nIHRoZSBkZWNyZWYgdW50aWwgdGhlIGNvbnRhaW5lciBoYXMgYmVlbiByZXN0b3JlZAotICB0byBhIGNvbnNpc3RlbnQgc3RhdGUuCi0KLS0gSXNzdWUgIzIzMDA4OiBGaXhlZCByZXNvbHZpbmcgYXR0cmlidXRlcyB3aXRoIGJvb2xlYW4gdmFsdWUgaXMgRmFsc2UgaW4gcHlkb2MuCi0KLS0gRml4IGFzeW5jaW8gaXNzdWUgMjM1OiBMaWZvUXVldWUgYW5kIFByaW9yaXR5UXVldWUncyBwdXQgZGlkbid0Ci0gIGluY3JlbWVudCB1bmZpbmlzaGVkIHRhc2tzICh0aGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiAzLjQuMyB3aGVuCi0gIEpvaW5hYmxlUXVldWUgd2FzIG1lcmdlZCB3aXRoIFF1ZXVlKS4KLQotLSBJc3N1ZSAjMjM5MDg6IG9zIGZ1bmN0aW9ucyBub3cgcmVqZWN0IHBhdGhzIHdpdGggZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIKLSAgb24gV2luZG93cyBpbnN0ZWFkIG9mIHNpbGVudGx5IHRydW5jYXRlIHRoZW0uCi0KLS0gSXNzdWUgIzIzNzI4OiBiaW5hc2NpaS5jcmNfaHF4KCkgY291bGQgcmV0dXJuIGFuIGludGVnZXIgb3V0c2lkZSBvZiB0aGUgcmFuZ2UKLSAgMC0weGZmZmYgZm9yIGVtcHR5IGRhdGEuCi0KLS0gSXNzdWUgIzIzODExOiBBZGQgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBQeUNvbXBpbGVFcnJvciBlcnJvciBtZXNzYWdlLgotICBQYXRjaCBieSBBbGV4IFNoa29wLgotCi0tIElzc3VlICMxNzg5ODogRml4IGV4Y2VwdGlvbiBpbiBnZXR0ZXh0LnB5IHdoZW4gcGFyc2luZyBjZXJ0YWluIHBsdXJhbCBmb3Jtcy4KLQotLSBJc3N1ZSAjMjI5ODI6IEltcHJvdmUgQk9NIGhhbmRsaW5nIHdoZW4gc2Vla2luZyB0byBtdWx0aXBsZSBwb3NpdGlvbnMgb2YKLSAgYSB3cml0YWJsZSB0ZXh0IGZpbGUuCi0KLS0gSXNzdWUgIzIzODY1OiBjbG9zZSgpIG1ldGhvZHMgaW4gbXVsdGlwbGUgbW9kdWxlcyBub3cgYXJlIGlkZW1wb3RlbnQgYW5kIG1vcmUKLSAgcm9idXN0IGF0IHNodXRkb3duLiBJZiB0aGV5IG5lZWQgdG8gcmVsZWFzZSBtdWx0aXBsZSByZXNvdXJjZXMsIGFsbCBhcmUKLSAgcmVsZWFzZWQgZXZlbiBpZiBlcnJvcnMgb2NjdXIuCi0KLS0gSXNzdWUgIzIzODgxOiB1cmxsaWIucmVxdWVzdC5mdHB3cmFwcGVyIGNvbnN0cnVjdG9yIG5vdyBjbG9zZXMgdGhlIHNvY2tldCBpZgotICB0aGUgRlRQIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGZpeCBhIFJlc291cmNlV2FybmluZy4KLQotLSBJc3N1ZSAjMjM0MDA6IFJhaXNlIHNhbWUgZXhjZXB0aW9uIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMgaWYgc2VtX29wZW4gaXMgbm90Ci0gIGF2YWlsYWJsZS4gIFBhdGNoIGJ5IERhdmluIFBvdHRzLgotCi0tIElzc3VlICMxNTEzMzogX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbigpIG5vdyBzdXBwb3J0cyBUY2xfT2JqIGFuZCBhbHdheXMKLSAgcmV0dXJucyBib29sLiAgdGtpbnRlci5Cb29sZWFuVmFyIG5vdyB2YWxpZGF0ZXMgaW5wdXQgdmFsdWVzIChhY2NlcHRlZCBib29sLAotICBpbnQsIHN0ciwgYW5kIFRjbF9PYmopLiAgdGtpbnRlci5Cb29sZWFuVmFyLmdldCgpIG5vdyBhbHdheXMgcmV0dXJucyBib29sLgotCi0tIElzc3VlICMyMzMzODogRml4ZWQgZm9ybWF0dGluZyBjdHlwZXMgZXJyb3IgbWVzc2FnZXMgb24gQ3lnd2luLgotICBQYXRjaCBieSBNYWtvdG8gS2F0by4KLQotLSBJc3N1ZSAjMTY4NDA6IFRraW50ZXIgbm93IHN1cHBvcnRzIDY0LWJpdCBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC40IGFuZAotICBhcmJpdHJhcnkgcHJlY2lzaW9uIGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjUuCi0KLS0gSXNzdWUgIzIzODM0OiBGaXggc29ja2V0LnNlbmR0bygpLCB1c2UgdGhlIEMgUHlfc3NpemVfdCB0eXBlIHRvIHN0b3JlIHRoZQotICByZXN1bHQgb2Ygc2VuZHRvKCkgaW5zdGVhZCBvZiB0aGUgQyBpbnQgdHlwZS4KLQotLSBJc3N1ZSAjMjE1MjY6IFRraW50ZXIgbm93IHN1cHBvcnRzIG5ldyBib29sZWFuIHR5cGUgaW4gVGNsIDguNS4KLQotLSBJc3N1ZSAjMjM4Mzg6IGxpbmVjYWNoZSBub3cgY2xlYXJzIHRoZSBjYWNoZSBhbmQgcmV0dXJucyBhbiBlbXB0eSByZXN1bHQgb24KLSAgTWVtb3J5RXJyb3IuCi0KLS0gSXNzdWUgIzE4NDczOiBGaXhlZCAydG8zIGFuZCAzdG8yIGNvbXBhdGlibGUgcGlja2xlIG1hcHBpbmdzLiAgRml4ZWQKLSAgYW1iaWdpb3VzIHJldmVyc2UgbWFwcGluZ3MuICBBZGRlZCBtYW55IG5ldyBtYXBwaW5ncy4gIEltcG9ydCBtYXBwaW5nIGlzIG5vCi0gIGxvbmdlciBhcHBsaWVkIHRvIG1vZHVsZXMgYWxyZWFkeSBtYXBwZWQgd2l0aCBmdWxsIG5hbWUgbWFwcGluZy4KLQotLSBJc3N1ZSAjMjM3NDU6IFRoZSBuZXcgZW1haWwgaGVhZGVyIHBhcnNlciBub3cgaGFuZGxlcyBkdXBsaWNhdGUgTUlNRQotICBwYXJhbWV0ZXIgbmFtZXMgd2l0aG91dCBlcnJvciwgc2ltaWxhciB0byBob3cgZ2V0X3BhcmFtIGJlaGF2ZXMuCi0KLS0gSXNzdWUgIzIzNzkyOiBJZ25vcmUgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiB0aGUgcHlkb2MgcGFnZXIgaXMgYWN0aXZlLgotICBUaGlzIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN0YW5kYXJkIHVuaXggcGFnZXJzLCBhbmQgcHJldmVudHMKLSAgcGlwZXBhZ2VyIGZyb20gc2h1dHRpbmcgZG93biB3aGlsZSB0aGUgcGFnZXIgaXRzZWxmIGlzIHN0aWxsIHJ1bm5pbmcuCi0KLS0gSXNzdWUgIzIzNzQyOiBudHBhdGguZXhwYW5kdmFycygpIG5vIGxvbmdlciBsb3NlcyB1bmJhbGFuY2VkIHNpbmdsZSBxdW90ZXMuCi0KLS0gSXNzdWUgIzIxODAyOiBUaGUgcmVhZGVyIGluIEJ1ZmZlcmVkUldQYWlyIG5vdyBpcyBjbG9zZWQgZXZlbiB3aGVuIGNsb3NpbmcKLSAgd3JpdGVyIGZhaWxlZCBpbiBCdWZmZXJlZFJXUGFpci5jbG9zZSgpLgotCi0tIElzc3VlICMyMzY3MTogc3RyaW5nLlRlbXBsYXRlIG5vdyBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgInNlbGYiIHBhcmFtZXRlciBhcwotICBrZXl3b3JkIGFyZ3VtZW50LiAgc3RyaW5nLkZvcm1hdHRlciBub3cgYWxsb3dzIHRvIHNwZWNpZnkgdGhlICJzZWxmIiBhbmQKLSAgdGhlICJmb3JtYXRfc3RyaW5nIiBwYXJhbWV0ZXJzIGFzIGtleXdvcmQgYXJndW1lbnRzLgotCi0tIElzc3VlICMyMTU2MDogQW4gYXR0ZW1wdCB0byB3cml0ZSBhIGRhdGEgb2Ygd3JvbmcgdHlwZSBubyBsb25nZXIgY2F1c2UKLSAgR3ppcEZpbGUgY29ycnVwdGlvbi4gIE9yaWdpbmFsIHBhdGNoIGJ5IFdvbGZnYW5nIE1haWVyLgotCi0tIElzc3VlICMyMzY0NzogSW5jcmVhc2UgaW1wYWxpYidzIE1BWExJTkUgdG8gYWNjb21tb2RhdGUgbW9kZXJuIG1haWxib3ggc2l6ZXMuCi0KLS0gSXNzdWUgIzIzNTM5OiBJZiBib2R5IGlzIE5vbmUsIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3Qgbm93IHNldHMKLSAgQ29udGVudC1MZW5ndGggdG8gMCBmb3IgUFVULCBQT1NULCBhbmQgUEFUQ0ggaGVhZGVycyB0byBhdm9pZCA0MTEgZXJyb3JzIGZyb20KLSAgc29tZSB3ZWIgc2VydmVycy4KLQotLSBJc3N1ZSAjMjIzNTE6IFRoZSBubnRwbGliLk5OVFAgY29uc3RydWN0b3Igbm8gbG9uZ2VyIGxlYXZlcyB0aGUgY29ubmVjdGlvbgotICBhbmQgc29ja2V0IG9wZW4gdW50aWwgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGNsZWFucyB0aGVtIHVwLiAgUGF0Y2ggYnkKLSAgTWFydGluIFBhbnRlci4KLQotLSBJc3N1ZSAjMjMxMzY6IF9zdHJwdGltZSBub3cgdW5pZm9ybWx5IGhhbmRsZXMgYWxsIGRheXMgaW4gd2VlayAwLCBpbmNsdWRpbmcKLSAgRGVjIDMwIG9mIHByZXZpb3VzIHllYXIuICBCYXNlZCBvbiBwYXRjaCBieSBKaW0gQ2Fycm9sbC4KLQotLSBJc3N1ZSAjMjM3MDA6IEl0ZXJhdG9yIG9mIE5hbWVkVGVtcG9yYXJ5RmlsZSBub3cga2VlcHMgYSByZWZlcmVuY2UgdG8KLSAgTmFtZWRUZW1wb3JhcnlGaWxlIGluc3RhbmNlLiAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgotCi0tIElzc3VlICMyMjkwMzogVGhlIGZha2UgdGVzdCBjYXNlIGNyZWF0ZWQgYnkgdW5pdHRlc3QubG9hZGVyIHdoZW4gaXQgZmFpbHMKLSAgaW1wb3J0aW5nIGEgdGVzdCBtb2R1bGUgaXMgbm93IHBpY2tsYWJsZS4KLQotLSBJc3N1ZSAjMjM1Njg6IEFkZCByZGl2bW9kIHN1cHBvcnQgdG8gTWFnaWNNb2NrKCkgb2JqZWN0cy4KLSAgUGF0Y2ggYnkgSMOla2FuIEzDtnZkYWhsLgotCi0tIElzc3VlICMyMzEzODogRml4ZWQgcGFyc2luZyBjb29raWVzIHdpdGggYWJzZW50IGtleXMgb3IgdmFsdWVzIGluIGNvb2tpZWphci4KLSAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KLQotLSBJc3N1ZSAjMjMwNTE6IG11bHRpcHJvY2Vzc2luZy5Qb29sIG1ldGhvZHMgaW1hcCgpIGFuZCBpbWFwX3Vub3JkZXJlZCgpIG5vdwotICBoYW5kbGUgZXhjZXB0aW9ucyByYWlzZWQgYnkgYW4gaXRlcmF0b3IuICBQYXRjaCBieSBBbG9uIERpYW1hbnQgYW5kIERhdmluCi0gIFBvdHRzLgotCi0tIElzc3VlICMyMjkyODogRGlzYWJsZWQgSFRUUCBoZWFkZXIgaW5qZWN0aW9ucyBpbiBodHRwLmNsaWVudC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KLQotLSBJc3N1ZSAjMjM2MTU6IE1vZHVsZXMgYnoyLCB0YXJmaWxlIGFuZCB0b2tlbml6ZSBub3cgY2FuIGJlIHJlbG9hZGVkIHdpdGgKLSAgaW1wLnJlbG9hZCgpLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gSXNzdWUgIzIzNDc2OiBJbiB0aGUgc3NsIG1vZHVsZSwgZW5hYmxlIE9wZW5TU0wncyBYNTA5X1ZfRkxBR19UUlVTVEVEX0ZJUlNUCi0gIGZsYWcgb24gY2VydGlmaWNhdGUgc3RvcmVzIHdoZW4gaXQgaXMgYXZhaWxhYmxlLgotCi0tIElzc3VlICMyMzU3NjogQXZvaWQgc3RhbGxpbmcgaW4gU1NMIHJlYWRzIHdoZW4gRU9GIGhhcyBiZWVuIHJlYWNoZWQgaW4gdGhlCi0gIFNTTCBsYXllciBidXQgdGhlIHVuZGVybHlpbmcgY29ubmVjdGlvbiBoYXNuJ3QgYmVlbiBjbG9zZWQuCi0KLS0gSXNzdWUgIzIzNTA0OiBBZGRlZCBhbiBfX2FsbF9fIHRvIHRoZSB0eXBlcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzIwMjA0OiBBZGRlZCB0aGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUgdG8gX3RraW50ZXIgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMjM1MjE6IENvcnJlY3RlZCBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lZGVsdGEgZGl2aXNpb24uCi0KLSAqIEVsaW1pbmF0ZWQgT3ZlcmZsb3dFcnJvciBmcm9tIHRpbWVkZWx0YSAqIGZsb2F0IGZvciBzb21lIGZsb2F0czsKLSAqIENvcnJlY3RlZCByb3VuZGluZyBpbiB0aW1lZGx0YSB0cnVlIGRpdmlzaW9uLgotCi0tIElzc3VlICMyMTYxOTogUG9wZW4gb2JqZWN0cyBubyBsb25nZXIgbGVhdmUgYSB6b21iaWUgYWZ0ZXIgZXhpdCBpbiB0aGUgd2l0aAotICBzdGF0ZW1lbnQgaWYgdGhlIHBpcGUgd2FzIGJyb2tlbi4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzY2Mzk6IE1vZHVsZS1sZXZlbCB0dXJ0bGUgZnVuY3Rpb25zIG5vIGxvbmdlciByYWlzZSBUY2xFcnJvciBhZnRlcgotICBjbG9zaW5nIHRoZSB3aW5kb3cuCi0KLS0gSXNzdWVzICM4MTQyNTMsICM5MTc5OiBXYXJuaW5ncyBub3cgYXJlIHJhaXNlZCB3aGVuIGdyb3VwIHJlZmVyZW5jZXMgYW5kCi0gIGNvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZXMgYXJlIHVzZWQgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIGluIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbnMuCi0KLS0gSXNzdWUgIzIzMjE1OiBNdWx0aWJ5dGUgY29kZWNzIHdpdGggY3VzdG9tIGVycm9yIGhhbmRsZXJzIHRoYXQgaWdub3JlcyBlcnJvcnMKLSAgY29uc3VtZWQgdG9vIG11Y2ggbWVtb3J5IGFuZCByYWlzZWQgU3lzdGVtRXJyb3Igb3IgTWVtb3J5RXJyb3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWtzaSBUb3JoYW1vLgotCi0tIElzc3VlICM1NzAwOiBpby5GaWxlSU8oKSBjYWxsZWQgZmx1c2goKSBhZnRlciBjbG9zaW5nIHRoZSBmaWxlLgotICBmbHVzaCgpIHdhcyBub3QgY2FsbGVkIGluIGNsb3NlKCkgaWYgY2xvc2VmZD1GYWxzZS4KLQotLSBJc3N1ZSAjMjMzNzQ6IEZpeGVkIHB5ZG9jIGZhaWx1cmUgd2l0aCBub24tQVNDSUkgZmlsZXMgd2hlbiBzdGRvdXQgZW5jb2RpbmcKLSAgZGlmZmVycyBmcm9tIGZpbGUgc3lzdGVtIGVuY29kaW5nIChlLmcuIG9uIE1hYyBPUykuCi0KLS0gSXNzdWUgIzIzNDgxOiBSZW1vdmUgUkM0IGZyb20gdGhlIFNTTCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0LgotCi0tIElzc3VlICMyMTU0ODogRml4IHB5ZG9jLnN5bm9wc2lzKCkgYW5kIHB5ZG9jLmFwcm9wb3MoKSBvbiBtb2R1bGVzIHdpdGggZW1wdHkKLSAgZG9jc3RyaW5ncy4KLQotLSBJc3N1ZSAjMjI4ODU6IEZpeGVkIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXR5IGluIHRoZSBkYm0uZHVtYgotICBtb2R1bGUuICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzIzMTQ2OiBGaXggbWlzaGFuZGxpbmcgb2YgYWJzb2x1dGUgV2luZG93cyBwYXRocyB3aXRoIGZvcndhcmQKLSAgc2xhc2hlcyBpbiBwYXRobGliLgotCi0tIElzc3VlICMyMzQyMTogRml4ZWQgY29tcHJlc3Npb24gaW4gdGFyZmlsZSBDTEkuICBQYXRjaCBieSB3ZHY0NzU4aC4KLQotLSBJc3N1ZSAjMjMzNjc6IEZpeCBwb3NzaWJsZSBvdmVyZmxvd3MgaW4gdGhlIHVuaWNvZGVkYXRhIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjMzNjE6IEZpeCBwb3NzaWJsZSBvdmVyZmxvdyBpbiBXaW5kb3dzIHN1YnByb2Nlc3MgY3JlYXRpb24gY29kZS4KLQotLSBJc3N1ZSAjMjM4MDE6IEZpeCBpc3N1ZSB3aGVyZSBjZ2kuRmllbGRTdG9yYWdlIGRpZCBub3QgYWx3YXlzIGlnbm9yZSB0aGUKLSAgZW50aXJlIHByZWFtYmxlIHRvIGEgbXVsdGlwYXJ0IGJvZHkuCi0KLS0gSXNzdWUgIzIzMzEwOiBGaXggTWFnaWNNb2NrJ3MgaW5pdGlhbGl6ZXIgdG8gd29yayB3aXRoIF9fbWV0aG9kc19fLCBqdXN0Ci0gIGxpa2UgY29uZmlndXJlX21vY2soKS4gIFBhdGNoIGJ5IEthc2lhIEphY2hpbS4KLQotLSBhc3luY2lvOiBOZXcgZXZlbnQgbG9vcCBBUElzOiBzZXRfdGFza19mYWN0b3J5KCkgYW5kIGdldF90YXNrX2ZhY3RvcnkoKS4KLQotLSBhc3luY2lvOiBhc3luYygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGVuc3VyZV9mdXR1cmUoKS4KLQotLSBJc3N1ZSAjMjM4OTg6IEZpeCBpbnNwZWN0LmNsYXNzaWZ5X2NsYXNzX2F0dHJzKCkgdG8gc3VwcG9ydCBhdHRyaWJ1dGVzCi0gIHdpdGggb3ZlcmxvYWRlZCBfX2VxX18gYW5kIF9fYm9vbF9fLiAgUGF0Y2ggYnkgTWlrZSBCYXllci4KLQotLSBJc3N1ZSAjMjQyOTg6IEZpeCBpbnNwZWN0LnNpZ25hdHVyZSgpIHRvIGNvcnJlY3RseSB1bndyYXAgd3JhcHBlcnMKLSAgYXJvdW5kIGJvdW5kIG1ldGhvZHMuCistIElzc3VlICMyMDM2MjogSG9ub3VyIFRlc3RDYXNlLmxvbmdNZXNzYWdlIGNvcnJlY3RseSBpbiBhc3NlcnRSZWdleC4KKyAgUGF0Y2ggZnJvbSBJbGlhIEt1cmVua292LgogCiAtIElzc3VlICMyMzU3MjogRml4ZWQgZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoIG9uIGNsYXNzZXMgd2l0aCBmYWxzeQogICBtZXRhY2xhc3Nlcy4gIFBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KQEAgLTUxNiw1NCArMTgzLDYgQEAKIAogLSBJc3N1ZSAjMjQ3OTA6IFJlbW92ZSBleHRyYW5lb3VzIGNvZGUgKHdoaWNoIGFsc28gY3JlYXRlIDIgJiAzIGNvbmZsaWN0cykuCiAKLS0gSXNzdWUgIzIzNjcyOiBBbGxvdyBJZGxlIHRvIGVkaXQgYW5kIHJ1biBmaWxlcyB3aXRoIGFzdHJhbCBjaGFycyBpbiBuYW1lLgotICBQYXRjaCBieSBNb2hkIFNhbmFkIFpha2kgUml6dmkuCi0KLS0gSXNzdWUgMjQ3NDU6IElkbGUgZWRpdG9yIGRlZmF1bHQgZm9udC4gU3dpdGNoIGZyb20gQ291cmllciB0bwotICBwbGF0Zm9ybS1zZW5zaXRpdmUgVGtGaXhlZEZvbnQuICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IGN1cnJlbnQgY3VzdG9taXplZAotICBmb250IHNlbGVjdGlvbnMuICBJZiB0aGVyZSBpcyBhIHByb2JsZW0sIGVkaXQgJEhPTUUvLmlkbGVyYy9jb25maWctbWFpbi5jZmcKLSAgYW5kIHJlbW92ZSAnZm9udHh4eCcgZW50cmllcyBmcm9tIFtFZGl0b3IgV2luZG93XS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KLQotLSBJc3N1ZSAjMjExOTI6IElkbGUgZWRpdG9yLiBXaGVuIGEgZmlsZSBpcyBydW4sIHB1dCBpdHMgbmFtZSBpbiB0aGUgcmVzdGFydCBiYXIuCi0gIERvIG5vdCBwcmludCBmYWxzZSBwcm9tcHRzLiBPcmlnaW5hbCBwYXRjaCBieSBBZG5hbiBVbWVyLgotCi0tIElzc3VlICMxMzg4NDogSWRsZSBtZW51cy4gUmVtb3ZlIHRlYXJvZmYgbGluZXMuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMyMzE4NDogcmVtb3ZlIHVudXNlZCBuYW1lcyBhbmQgaW1wb3J0cyBpbiBpZGxlbGliLgotICBJbml0aWFsIHBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMjQ3NTE6IFdoZW4gcnVubmluZyByZWdydGVzdCB3aXRoIHRoZSBgYC13YGAgY29tbWFuZCBsaW5lIG9wdGlvbiwKLSAgYSB0ZXN0IHJ1biBpcyBubyBsb25nZXIgbWFya2VkIGFzIGEgZmFpbHVyZSBpZiBhbGwgdGVzdHMgc3VjY2VlZCB3aGVuCi0gIHJlLXJ1bi4KLQotLSBJc3N1ZSAjMjE1MjA6IHRlc3RfemlwZmlsZSBubyBsb25nZXIgZmFpbHMgaWYgdGhlIHdvcmQgJ2JhZCcgYXBwZWFycwotICBhbnl3aGVyZSBpbiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzIzNzk5OiBBZGRlZCB0ZXN0LnN1cHBvcnQuc3RhcnRfdGhyZWFkcygpIGZvciBydW5uaW5nIGFuZAotICBjbGVhbmluZyB1cCBtdWx0aXBsZSB0aHJlYWRzLgotCi0tIElzc3VlICMyMjM5MDogdGVzdC5yZWdydGVzdCBub3cgZW1pdHMgYSB3YXJuaW5nIGlmIHRlbXBvcmFyeSBmaWxlcyBvcgotICBkaXJlY3RvcmllcyBhcmUgbGVmdCBhZnRlciBydW5uaW5nIGEgdGVzdC4KLQotLSBJc3N1ZSAjMjM1ODM6IEFkZGVkIHRlc3RzIGZvciBzdGFuZGFyZCBJTyBzdHJlYW1zIGluIElETEUuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMyMzQ0NTogcHlkZWJ1ZyBidWlsZHMgbm93IHVzZSAiZ2NjIC1PZyIgd2hlcmUgcG9zc2libGUsIHRvIG1ha2UKLSAgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIGZhc3Rlci4KLQotLSBJc3N1ZSAjMjQ2MDM6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyBhbmQgT1MgWCAxMC41IGluc3RhbGxlciB0byB1c2UgT3BlblNTTAotICAxLjAuMmQuCi0KLUMgQVBJCi0tLS0tLQotCi0tIElzc3VlICMyMzk5ODogUHlJbXBvcnRfUmVJbml0TG9jaygpIG5vdyBjaGVja3MgZm9yIGxvY2sgYWxsb2NhdGlvbiBlcnJvcgotCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKQEAgLTU3NywxMiArMTk2LDIxNSBAQAogLSBJc3N1ZSAjMjQ5NTI6IENsYXJpZnkgdGhlIGRlZmF1bHQgc2l6ZSBhcmd1bWVudCBvZiBzdGFja19zaXplKCkgaW4KICAgdGhlICJ0aHJlYWRpbmciIGFuZCAiX3RocmVhZCIgbW9kdWxlcy4gUGF0Y2ggZnJvbSBNYXR0aXAuCiAKLS0gSXNzdWUgIzI0ODA4OiBVcGRhdGUgdGhlIHR5cGVzIG9mIHNvbWUgUHlUeXBlT2JqZWN0IGZpZWxkcy4gUGF0Y2ggYnkKKy0gSXNzdWUgIzIzNzI1OiBPdmVyaGF1bCB0ZW1wZmlsZSBkb2NzLiBOb3RlIGRlcHJlY2F0ZWQgc3RhdHVzIG9mIG1rdGVtcC4KKyAgUGF0Y2ggZnJvbSBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrLgorCistIElzc3VlICMyNDgwODogVXBkYXRlIHRoZSB0eXBlcyBvZiBzb21lIFB5VHlwZU9iamVjdCBmaWVsZHMuICBQYXRjaCBieQogICBKb3NlcGggV2VzdG9uLgogCiAtIElzc3VlICMyMjgxMjogRml4IHVuaXR0ZXN0IGRpc2NvdmVyeSBleGFtcGxlcy4KICAgUGF0Y2ggZnJvbSBQYW0gTWNBJ051bHR5LgogCitUZXN0cworLS0tLS0KKworLSBQQ2J1aWxkXHJ0LmJhdCBub3cgYWNjZXB0cyBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBwYXNzIGFsb25nCisgIHRvIHJlZ3J0ZXN0LnB5LiAgUHJldmlvdXNseSB0aGVyZSB3YXMgYSBsaW1pdCBvZiA5LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjQ5MTU6IEFkZCBMTFZNIHN1cHBvcnQgZm9yIFBHTyBidWlsZHMgYW5kIHVzZSB0aGUgdGVzdCBzdWl0ZSB0bworICBnZW5lcmF0ZSB0aGUgcHJvZmlsZSBkYXRhLiBJbml0aWlhbCBwYXRjaCBieSBBbGVjc2FuZHJ1IFBhdHJhc2N1IG9mIEludGVsLgorCistIElzc3VlICMyNDkxMDogV2luZG93cyBNU0lzIG5vdyBoYXZlIHVuaXF1ZSBkaXNwbGF5IG5hbWVzLgorCistIElzc3VlICMyNDk4NjogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIFB5dGhvbiBvbiBXaW5kb3dzIHdpdGhvdXQgZXJyb3JzCisgIHdoZW4gZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgYXZhaWxhYmxlLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWVzICMyNTExMjogcHkuZXhlIGxhdW5jaGVyIGlzIG1pc3NpbmcgaWNvbnMKKworLSBJc3N1ZSAjMjUxMDI6IFdpbmRvd3MgaW5zdGFsbGVyIGRvZXMgbm90IHByZWNvbXBpbGUgZm9yIC1PIG9yIC1PTy4KKworLSBJc3N1ZSAjMjUwODE6IE1ha2VzIEJhY2sgYnV0dG9uIGluIGluc3RhbGxlciBnbyBiYWNrIHRvIHVwZ3JhZGUgcGFnZSB3aGVuCisgIHVwZ3JhZGluZy4KKworLSBJc3N1ZSAjMjUwOTE6IEluY3JlYXNlcyBmb250IHNpemUgb2YgdGhlIGluc3RhbGxlci4KKworLSBJc3N1ZSAjMjUxMjY6IENsYXJpZmllcyB0aGF0IHRoZSBub24td2ViIGluc3RhbGxlciB3aWxsIGRvd25sb2FkIHNvbWUKKyAgY29tcG9uZW50cy4KKworLSBJc3N1ZSAjMjUyMTM6IFJlc3RvcmVzIHJlcXVlc3RlZEV4ZWN1dGlvbkxldmVsIHRvIG1hbmlmZXN0IHRvIGRpc2FibGUKKyAgVUFDIHZpcnR1YWxpemF0aW9uLgorCistIElzc3VlICMyNTAyMjogUmVtb3ZlZCB2ZXJ5IG91dGRhdGVkIFBDL2V4YW1wbGVfbnQvIGRpcmVjdG9yeS4KKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgZmluYWw/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA5LTEzCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNTA3MTogV2luZG93cyBpbnN0YWxsZXIgc2hvdWxkIG5vdCByZXF1aXJlIFRhcmdldERpcgorICBwYXJhbWV0ZXIgd2hlbiBpbnN0YWxsaW5nIHF1aWV0bHkuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgcmVsZWFzZSBjYW5kaWRhdGUgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wOS0wOQorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI1MDI5OiBGaXhlcyBNZW1vcnlFcnJvciBpbiB0ZXN0X3N0cnB0aW1lLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjUwMjc6IFJldmVydHMgcGFydGlhbC1zdGF0aWMgYnVpbGQgb3B0aW9ucyBhbmQgYWRkcworICB2Y3J1bnRpbWUxNDAuZGxsIHRvIFdpbmRvd3MgaW5zdGFsbGF0aW9uLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIHJlbGVhc2UgY2FuZGlkYXRlIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDktMDcKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0MzA1OiBQcmV2ZW50IGltcG9ydCBzdWJzeXN0ZW0gc3RhY2sgZnJhbWVzIGZyb20gYmVpbmcgY291bnRlZAorICBieSB0aGUgd2FybmluZ3Mud2FybihzdGFja2xldmVsPSkgcGFyYW1ldGVyLgorCistIElzc3VlICMyNDkxMjogUHJldmVudCBfX2NsYXNzX18gYXNzaWdubWVudCB0byBpbW11dGFibGUgYnVpbHQtaW4gb2JqZWN0cy4KKworLSBJc3N1ZSAjMjQ5NzU6IEZpeCBBU1QgY29tcGlsYXRpb24gZm9yIFBFUCA0NDggc3ludGF4LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI0OTE3OiB0aW1lX3N0cmZ0aW1lKCkgYnVmZmVyIG92ZXItcmVhZC4KKworLSBJc3N1ZSAjMjQ3NDg6IFRvIHJlc29sdmUgYSBjb21wYXRpYmlsaXR5IHByb2JsZW0gZm91bmQgd2l0aCBweTJleGUgYW5kCisgIHB5d2luMzIsIGltcC5sb2FkX2R5bmFtaWMoKSBvbmNlIGFnYWluIGlnbm9yZXMgcHJldmlvdXNseSBsb2FkZWQgbW9kdWxlcworICB0byBzdXBwb3J0IFB5dGhvbiBtb2R1bGVzIHJlcGxhY2luZyB0aGVtc2VsdmVzIHdpdGggZXh0ZW5zaW9uIG1vZHVsZXMuCisgIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzI0NjM1OiBGaXhlZCBhIGJ1ZyBpbiB0eXBpbmcucHkgd2hlcmUgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkl0ZXJhYmxlKQorICB3b3VsZCByZXR1cm4gVHJ1ZSBvbmNlLCB0aGVuIEZhbHNlIG9uIHN1YnNlcXVlbnQgY2FsbHMuCisKKy0gSXNzdWUgIzI0OTg5OiBGaXhlZCBidWZmZXIgb3ZlcnJlYWQgaW4gQnl0ZXNJTy5yZWFkbGluZSgpIGlmIGEgcG9zaXRpb24gaXMKKyAgc2V0IGJleW9uZCBzaXplLiAgQmFzZWQgb24gcGF0Y2ggYnkgSm9obiBMZWl0Y2guCisKKy0gSXNzdWUgIzI0OTEzOiBGaXggb3ZlcnJ1biBlcnJvciBpbiBkZXF1ZS5pbmRleCgpLgorICBGb3VuZCBieSBKb2huIExlaXRjaCBhbmQgQnJ5Y2UgRGFybGluZy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCByZWxlYXNlIGNhbmRpZGF0ZSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA4LTI1CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDc2OTogSW50ZXJwcmV0ZXIgbm93IHN0YXJ0cyBwcm9wZXJseSB3aGVuIGR5bmFtaWMgbG9hZGluZworICBpcyBkaXNhYmxlZC4gIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzIxMTY3OiBOQU4gb3BlcmF0aW9ucyBhcmUgbm93IGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcHl0aG9uIGlzCisgIGNvbXBpbGVkIHdpdGggSUNDIGV2ZW4gaWYgLWZwLW1vZGVsIHN0cmljdCBpcyBub3Qgc3BlY2lmaWVkLgorCistIElzc3VlICMyNDQ5MjogQSAicGFja2FnZSIgbGFja2luZyBhIF9fbmFtZV9fIGF0dHJpYnV0ZSB3aGVuIHRyeWluZyB0byBwZXJmb3JtCisgIGEgYGBmcm9tIC4uIGltcG9ydCAuLi5gYCBzdGF0ZW1lbnQgd2lsbCB0cmlnZ2VyIGFuIEltcG9ydEVycm9yIGluc3RlYWQgb2YgYW4KKyAgQXR0cmlidXRlRXJyb3IuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjQ4NDc6IFJlbW92ZXMgdmNydW50aW1lMTQwLmRsbCBkZXBlbmRlbmN5IGZyb20gVGNsL1RrLgorCistIElzc3VlICMyNDgzOTogcGxhdGZvcm0uX3N5c2NtZF92ZXIgcmFpc2VzIERlcHJlY2F0aW9uV2FybmluZworCistIElzc3VlICMyNDg2NzogRml4IFRhc2suZ2V0X3N0YWNrKCkgZm9yICdhc3luYyBkZWYnIGNvcm91dGluZXMKKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCByZWxlYXNlIGNhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA4LTA5CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDY2NzogUmVzaXplIG9kaWN0IGluIGFsbCBjYXNlcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGRpY3QgcmVzaXplcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNDgyNDogU2lnbmF0dXJlcyBvZiBjb2RlY3MuZW5jb2RlKCkgYW5kIGNvZGVjcy5kZWNvZGUoKSBub3cgYXJlCisgIGNvbXBhdGlibGUgd2l0aCBweWRvYy4KKworLSBJc3N1ZSAjMjQ2MzQ6IEltcG9ydGluZyB1dWlkIHNob3VsZCBub3QgdHJ5IHRvIGxvYWQgbGliYyBvbiBXaW5kb3dzCisKKy0gSXNzdWUgIzI0Nzk4OiBfbXN2Y2NvbXBpbGVyLnB5IGRvZXNuJ3QgcHJvcGVybHkgc3VwcG9ydCBtYW5pZmVzdHMKKworLSBJc3N1ZSAjNDM5NTogQmV0dGVyIHRlc3RpbmcgYW5kIGRvY3VtZW50YXRpb24gb2YgYmluYXJ5IG9wZXJhdG9ycy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjM5NzM6IFVwZGF0ZSB0eXBpbmcucHkgZnJvbSBHaXRIdWIgcmVwby4KKworLSBJc3N1ZSAjMjMwMDQ6IG1vY2tfb3BlbigpIG5vdyByZWFkcyBiaW5hcnkgZGF0YSBjb3JyZWN0bHkgd2hlbiB0aGUgdHlwZSBvZgorICByZWFkX2RhdGEgaXMgYnl0ZXMuICBJbml0aWFsIHBhdGNoIGJ5IEFhcm9uIEhpbGwuCisKKy0gSXNzdWUgIzIzODg4OiBIYW5kbGUgZnJhY3Rpb25hbCB0aW1lIGluIGNvb2tpZSBleHBpcnkuIFBhdGNoIGJ5IHNzaC4KKworLSBJc3N1ZSAjMjM2NTI6IE1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSB0aGUgc2VsZWN0IG1vZHVsZSBhZ2FpbnN0IHRoZQorICBsaWJjIGhlYWRlcnMgZnJvbSB0aGUgTGludXggU3RhbmRhcmQgQmFzZSwgd2hpY2ggZG8gbm90IGluY2x1ZGUgc29tZQorICBFUE9MTCBtYWNyb3MuICBQYXRjaCBieSBNYXR0IEZyYW5rLgorCistIElzc3VlICMyMjkzMjogRml4IHRpbWV6b25lcyBpbiBlbWFpbC51dGlscy5mb3JtYXRkYXRlLgorICBQYXRjaCBmcm9tIERtaXRyeSBTaGFjaG5ldi4KKworLSBJc3N1ZSAjMjM3Nzk6IGltYXBsaWIgcmFpc2VzIFR5cGVFcnJvciBpZiBhdXRoZW50aWNhdG9yIHRyaWVzIHRvIGFib3J0LgorICBQYXRjaCBmcm9tIENyYWlnIEhvbG1xdWlzdC4KKworLSBJc3N1ZSAjMjMzMTk6IEZpeCBjdHlwZXMuQmlnRW5kaWFuU3RydWN0dXJlLCBzd2FwIGNvcnJlY3RseSBieXRlcy4gUGF0Y2gKKyAgd3JpdHRlbiBieSBNYXR0aGlldSBHYXV0aWVyLgorCistIElzc3VlICMyMzI1NDogRG9jdW1lbnQgaG93IHRvIGNsb3NlIHRoZSBUQ1BTZXJ2ZXIgbGlzdGVuaW5nIHNvY2tldC4KKyAgUGF0Y2ggZnJvbSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMxOTQ1MDogVXBkYXRlIFdpbmRvd3MgYW5kIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byB1c2UgU1FMaXRlIDMuOC4xMS4KKworLSBJc3N1ZSAjMTc1Mjc6IEFkZCBQQVRDSCB0byB3c2dpcmVmLnZhbGlkYXRvci4gUGF0Y2ggZnJvbSBMdWNhIFNiYXJkZWxsYS4KKworLSBJc3N1ZSAjMjQ3OTE6IEZpeCBncmFtbWFyIHJlZ3Jlc3Npb24gZm9yIGNhbGwgc3ludGF4OiAnZygqYSBvciBiKScuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjM2NzI6IEFsbG93IElkbGUgdG8gZWRpdCBhbmQgcnVuIGZpbGVzIHdpdGggYXN0cmFsIGNoYXJzIGluIG5hbWUuCisgIFBhdGNoIGJ5IE1vaGQgU2FuYWQgWmFraSBSaXp2aS4KKworLSBJc3N1ZSAjMjQ3NDU6IElkbGUgZWRpdG9yIGRlZmF1bHQgZm9udC4gU3dpdGNoIGZyb20gQ291cmllciB0bworICBwbGF0Zm9ybS1zZW5zaXRpdmUgVGtGaXhlZEZvbnQuICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IGN1cnJlbnQgY3VzdG9taXplZAorICBmb250IHNlbGVjdGlvbnMuICBJZiB0aGVyZSBpcyBhIHByb2JsZW0sIGVkaXQgJEhPTUUvLmlkbGVyYy9jb25maWctbWFpbi5jZmcKKyAgYW5kIHJlbW92ZSAnZm9udHh4eCcgZW50cmllcyBmcm9tIFtFZGl0b3IgV2luZG93XS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjExOTI6IElkbGUgZWRpdG9yLiBXaGVuIGEgZmlsZSBpcyBydW4sIHB1dCBpdHMgbmFtZSBpbiB0aGUgcmVzdGFydCBiYXIuCisgIERvIG5vdCBwcmludCBmYWxzZSBwcm9tcHRzLiBPcmlnaW5hbCBwYXRjaCBieSBBZG5hbiBVbWVyLgorCistIElzc3VlICMxMzg4NDogSWRsZSBtZW51cy4gUmVtb3ZlIHRlYXJvZmYgbGluZXMuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKIC0gSXNzdWUgIzI0MTI5OiBDbGFyaWZ5IHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbmFtZSByZXNvbHV0aW9uLgogICBUaGlzIGluY2x1ZGVzIHJlbW92aW5nIHRoZSBhc3N1bXB0aW9uIHRoYXQgcmVhZGVycyB3aWxsIGJlIGZhbWlsaWFyIHdpdGggdGhlCiAgIG5hbWUgcmVzb2x1dGlvbiBzY2hlbWUgUHl0aG9uIHVzZWQgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBsZXhpY2FsCkBAIC01OTUsMzcgKzQxNywxMDg4IEBACiAtIElzc3VlICMyNDcyOTogQ29ycmVjdCBJTyB0dXRvcmlhbCB0byBtYXRjaCBpbXBsZW1lbnRhdGlvbiByZWdhcmRpbmcKICAgZW5jb2RpbmcgcGFyYW1ldGVyIHRvIG9wZW4gZnVuY3Rpb24uCiAKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNDc1MTogV2hlbiBydW5uaW5nIHJlZ3J0ZXN0IHdpdGggdGhlIGBgLXdgYCBjb21tYW5kIGxpbmUgb3B0aW9uLAorICBhIHRlc3QgcnVuIGlzIG5vIGxvbmdlciBtYXJrZWQgYXMgYSBmYWlsdXJlIGlmIGFsbCB0ZXN0cyBzdWNjZWVkIHdoZW4KKyAgcmUtcnVuLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA3LTI2CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzU3MzogUmVzdG9yZWQgb3B0aW1pemF0aW9uIG9mIGJ5dGVzLnJmaW5kKCkgYW5kIGJ5dGVhcnJheS5yZmluZCgpCisgIGZvciBzaW5nbGUtYnl0ZSBhcmd1bWVudCBvbiBMaW51eC4KKworLSBJc3N1ZSAjMjQ1Njk6IE1ha2UgUEVQIDQ0OCBkaWN0aW9uYXJ5IGV2YWx1YXRpb24gbW9yZSBjb25zaXN0ZW50LgorCistIElzc3VlICMyNDU4MzogRml4IGNyYXNoIHdoZW4gc2V0IGlzIG11dGF0ZWQgd2hpbGUgYmVpbmcgdXBkYXRlZC4KKworLSBJc3N1ZSAjMjQ0MDc6IEZpeCBjcmFzaCB3aGVuIGRpY3QgaXMgbXV0YXRlZCB3aGlsZSBiZWluZyB1cGRhdGVkLgorCistIElzc3VlICMyNDYxOTogTmV3IGFwcHJvYWNoIGZvciB0b2tlbml6aW5nIGFzeW5jL2F3YWl0LiBBcyBhIGNvbnNlcXVlbmNlLAorICBpcyBpcyBub3cgcG9zc2libGUgdG8gaGF2ZSBvbmUtbGluZSAnYXN5bmMgZGVmIGZvbygpOiBhd2FpdCAuLicgZnVuY3Rpb25zLgorCistIElzc3VlICMyNDY4NzogUGx1ZyByZWZsZWFrIG9uIFN5bnRheEVycm9yIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMKKyAgYW5ub3RhdGlvbnMuCisKKy0gSXNzdWUgIzE1OTQ0OiBtZW1vcnl2aWV3OiBBbGxvdyBhcmJpdHJhcnkgZm9ybWF0cyB3aGVuIGNhc3RpbmcgdG8gYnl0ZXMuCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjM0NDE6IHJjb21wbGV0ZXIgbm93IHByaW50cyBhIHRhYiBjaGFyYWN0ZXIgaW5zdGVhZCBvZiBkaXNwbGF5aW5nCisgIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZvciBhbiBlbXB0eSB3b3JkLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJ0aW4gU2VrZXJhLgorCistIElzc3VlICMyNDY4MzogRml4ZWQgY3Jhc2hlcyBpbiBfanNvbiBmdW5jdGlvbnMgY2FsbGVkIHdpdGggYXJndW1lbnRzIG9mCisgIGluYXBwcm9wcmlhdGUgdHlwZS4KKworLSBJc3N1ZSAjMjE2OTc6IHNodXRpbC5jb3B5dHJlZSgpIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBzeW1ib2xpYyBsaW5rcyB0aGF0CisgIHBvaW50IHRvIGRpcmVjdG9yaWVzLiAgUGF0Y2ggYnkgRWR1YXJkbyBTZWFicmEgYW5kIFRob21hcyBLbHV5dmVyLgorCistIElzc3VlICMxNDM3MzogRml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gZ2MuY29sbGVjdCgpIGlzIGNhbGxlZCBkdXJpbmcKKyAgY29uc3RydWN0aW5nIGxydV9jYWNoZSAoQyBpbXBsZW1lbnRhdGlvbikuCisKKy0gSXNzdWUgIzI0Njk1OiBGaXggYSByZWdyZXNzaW9uIGluIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24oKS4gIElmCisgIGV4Y190cmFjZWJhY2sgaXMgTm9uZSB3ZSBzaG91bGRuJ3QgcHJpbnQgYSB0cmFjZWJhY2sgaGVhZGVyIGxpa2UgZGVzY3JpYmVkCisgIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMyNDYyMDogUmFuZG9tLnNldHN0YXRlKCkgbm93IHZhbGlkYXRlcyB0aGUgdmFsdWUgb2Ygc3RhdGUgbGFzdCBlbGVtZW50LgorCistIElzc3VlICMyMjQ4NTogRml4ZWQgYW4gaXNzdWUgdGhhdCBjYXVzZWQgYGluc3BlY3QuZ2V0c291cmNlYCB0byByZXR1cm4KKyAgaW5jb3JyZWN0IHJlc3VsdHMgb24gbmVzdGVkIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjIxNTM6IEltcHJvdmUgdW5pdHRlc3QgZG9jcy4gUGF0Y2ggZnJvbSBNYXJ0aW4gUGFudGVyIGFuZCBldmlsemVyby4KKworLSBJc3N1ZSAjMjQ1ODA6IFN5bWJvbGljIGdyb3VwIHJlZmVyZW5jZXMgdG8gb3BlbiBncm91cCBpbiByZSBwYXR0ZXJucyBub3cgYXJlCisgIGV4cGxpY2l0bHkgZm9yYmlkZGVuIGFzIHdlbGwgYXMgbnVtZXJpYyBncm91cCByZWZlcmVuY2VzLgorCistIElzc3VlICMyNDIwNjogRml4ZWQgX19lcV9fIGFuZCBfX25lX18gbWV0aG9kcyBvZiBpbnNwZWN0IGNsYXNzZXMuCisKKy0gSXNzdWUgIzI0NjMxOiBGaXhlZCByZWdyZXNzaW9uIGluIHRoZSB0aW1laXQgbW9kdWxlIHdpdGggbXVsdGlsaW5lIHNldHVwLgorCistIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KKyAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KKworLSBJc3N1ZSAjMjM2NjE6IHVuaXR0ZXN0Lm1vY2sgc2lkZV9lZmZlY3RzIGNhbiBub3cgYmUgZXhjZXB0aW9ucyBhZ2Fpbi4gVGhpcworICB3YXMgYSByZWdyZXNzaW9uIHZzIFB5dGhvbiAzLjQuIFBhdGNoIGZyb20gSWduYWNpbyBSb3NzaQorCistIElzc3VlICMyNDYwODogY2h1bmsuQ2h1bmsucmVhZCgpIG5vdyBhbHdheXMgcmV0dXJucyBieXRlcywgbm90IHN0ci4KKworLSBJc3N1ZSAjMTg2ODQ6IEZpeGVkIHJlYWRpbmcgb3V0IG9mIHRoZSBidWZmZXIgaW4gdGhlIHJlIG1vZHVsZS4KKworLSBJc3N1ZSAjMjQyNTk6IHRhcmZpbGUgbm93IHJhaXNlcyBhIFJlYWRFcnJvciBpZiBhbiBhcmNoaXZlIGlzIHRydW5jYXRlZAorICBpbnNpZGUgYSBkYXRhIHNlZ21lbnQuCisKKy0gSXNzdWUgIzE1MDE0OiBTTVRQLmF1dGgoKSBhbmQgU01UUC5sb2dpbigpIG5vdyBzdXBwb3J0IFJGQyA0OTU0J3Mgb3B0aW9uYWwKKyAgaW5pdGlhbC1yZXNwb25zZSBhcmd1bWVudCB0byB0aGUgU01UUCBBVVRIIGNvbW1hbmQuCisKKy0gSXNzdWUgIzI0NjY5OiBGaXggaW5zcGVjdC5nZXRzb3VyY2UoKSBmb3IgJ2FzeW5jIGRlZicgZnVuY3Rpb25zLgorICBQYXRjaCBieSBLYWkgR3JvbmVyLgorCistIElzc3VlICMyNDY4ODogYXN0LmdldF9kb2NzdHJpbmcoKSBmb3IgJ2FzeW5jIGRlZicgZnVuY3Rpb25zLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjQ2MDM6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyBhbmQgT1MgWCAxMC41IGluc3RhbGxlciB0byB1c2UgT3BlblNTTAorICAxLjAuMmQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDctMDUKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0NDY3OiBGaXhlZCBwb3NzaWJsZSBidWZmZXIgb3Zlci1yZWFkIGluIGJ5dGVhcnJheS4gVGhlIGJ5dGVhcnJheQorICBvYmplY3Qgbm93IGFsd2F5cyBhbGxvY2F0ZXMgcGxhY2UgZm9yIHRyYWlsaW5nIG51bGwgYnl0ZSBhbmQgaXQncyBidWZmZXIgbm93CisgIGlzIGFsd2F5cyBudWxsLXRlcm1pbmF0ZWQuCisKKy0gVXBncmFkZSB0byBVbmljb2RlIDguMC4wLgorCistIElzc3VlICMyNDM0NTogQWRkIFB5X3RwX2ZpbmFsaXplIHNsb3QgZm9yIHRoZSBzdGFibGUgQUJJLgorCistIElzc3VlICMyNDQwMDogSW50cm9kdWNlIGEgZGlzdGluY3QgdHlwZSBmb3IgUEVQIDQ5MiBjb3JvdXRpbmVzOyBhZGQKKyAgdHlwZXMuQ29yb3V0aW5lVHlwZSwgaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZSwgaW5zcGVjdC5nZXRjb3JvdXRpbmVsb2NhbHM7CisgIGNvcm91dGluZXMgbm8gbG9uZ2VyIHVzZSBDT19HRU5FUkFUT1IgZmxhZzsgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcgorICB3b3JrcyBvbmx5IGZvciAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzOyBpbnNwZWN0LmlzY29yb3V0aW5lIG5vIGxvbmdlcgorICB1c2VzIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUsIGl0J3MgaW50ZW5kZWQgdG8gdGVzdCBmb3IgcHVyZSAnYXN5bmMgZGVmJworICBjb3JvdXRpbmVzIG9ubHk7IGFkZCBuZXcgb3Bjb2RlOiBHRVRfWUlFTERfRlJPTV9JVEVSOyBmaXggZ2VuZXJhdG9ycyB3cmFwcGVyCisgIHVzZWQgaW4gdHlwZXMuY29yb3V0aW5lIHRvIGJlIGluc3RhbmNlIG9mIGNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3I7CisgIGNvbGxlY3Rpb25zLmFiYy5Bd2FpdGFibGUgYW5kIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUgY2FuIG5vIGxvbmdlcgorICBiZSB1c2VkIHRvIGRldGVjdCBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcy0tdXNlIGluc3BlY3QuaXNhd2FpdGFibGUKKyAgaW5zdGVhZC4KKworLSBJc3N1ZSAjMjQ0NTA6IEFkZCBnaV95aWVsZGZyb20gdG8gZ2VuZXJhdG9ycyBhbmQgY3JfYXdhaXQgdG8gY29yb3V0aW5lcy4KKyAgQ29udHJpYnV0ZWQgYnkgQmVubm8gTGVzbGllIGFuZCBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMTkyMzU6IEFkZCBuZXcgUmVjdXJzaW9uRXJyb3IgZXhjZXB0aW9uLiBQYXRjaCBieSBHZW9yZyBCcmFuZGwuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjE3NTA6IG1vY2tfb3Blbi5yZWFkX2RhdGEgY2FuIG5vdyBiZSByZWFkIGZyb20gZWFjaCBpbnN0YW5jZSwgYXMgaXQKKyAgY291bGQgaW4gUHl0aG9uIDMuMy4KKworLSBJc3N1ZSAjMjQ1NTI6IEZpeCB1c2UgYWZ0ZXIgZnJlZSBpbiBhbiBlcnJvciBjYXNlIG9mIHRoZSBfcGlja2xlIG1vZHVsZS4KKworLSBJc3N1ZSAjMjQ1MTQ6IHRhcmZpbGUgbm93IHRvbGVyYXRlcyBudW1iZXIgZmllbGRzIGNvbnNpc3Rpbmcgb2Ygb25seQorICB3aGl0ZXNwYWNlLgorCistIElzc3VlICMxOTE3NjogRml4ZWQgZG9jdHlwZSgpIHJlbGF0ZWQgYnVncyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIEVsZW1lbnRUcmVlLgorICBBIGRlcHJlY2F0aW9uIHdhcm5pbmcgbm8gbG9uZ2VyIGlzc3VlZCBieSBYTUxQYXJzZXIgc3ViY2xhc3Mgd2l0aCBkZWZhdWx0CisgIGRvY3R5cGUoKSBtZXRob2QuICBEaXJlY3QgY2FsbCBvZiBkb2N0eXBlKCkgbm93IGlzc3VlcyBhIHdhcm5pbmcuICBQYXJzZXIncworICBkb2N0eXBlKCkgbm93IGlzIG5vdCBjYWxsZWQgaWYgdGFyZ2V0J3MgZG9jdHlwZSgpIGlzIGNhbGxlZC4gIEJhc2VkIG9uIHBhdGNoCisgIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIwMzg3OiBSZXN0b3JlIHNlbWFudGljIHJvdW5kLXRyaXAgY29ycmVjdG5lc3MgaW4gdG9rZW5pemUvdW50b2tlbml6ZQorICBmb3IgdGFiLWluZGVudGVkIGJsb2Nrcy4KKworLSBJc3N1ZSAjMjQ0NTY6IEZpeGVkIHBvc3NpYmxlIGJ1ZmZlciBvdmVyLXJlYWQgaW4gYWRwY20ybGluKCkgYW5kIGxpbjJhZHBjbSgpCisgIGZ1bmN0aW9ucyBvZiB0aGUgYXVkaW9vcCBtb2R1bGUuCisKKy0gSXNzdWUgIzI0MzM2OiBUaGUgY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yIG5vdyB3b3JrcyB3aXRoIGZ1bmN0aW9ucyB3aXRoCisgIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAiZnVuYyIgYW5kICJzZWxmIi4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzI0NTIyOiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBqc29uIGFjY2VsZXJhdG9yIG1vZHVsZS4KKworLSBJc3N1ZSAjMjQ0ODk6IGVuc3VyZSBhIHByZXZpb3VzbHkgc2V0IEMgZXJybm8gZG9lc24ndCBkaXN0dXJiIGNtYXRoLnBvbGFyKCkuCisKKy0gSXNzdWUgIzI0NDA4OiBGaXhlZCBBdHRyaWJ1dGVFcnJvciBpbiBtZWFzdXJlKCkgYW5kIG1ldHJpY3MoKSBtZXRob2RzIG9mCisgIHRraW50ZXIuRm9udC4KKworLSBJc3N1ZSAjMTQzNzM6IEMgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBjYW4gYmUgdXNlZCB3aXRoCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzI0MzQ3OiBTZXQgS2V5RXJyb3IgaWYgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IgcmV0dXJucyBOVUxMLgorCistIElzc3VlICMyNDM0ODogRHJvcCBzdXBlcmZsdW91cyBpbmNyZWYvZGVjcmVmLgorCistIElzc3VlICMyNDM1OTogQ2hlY2sgZm9yIGNoYW5nZWQgT3JkZXJlZERpY3Qgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uLgorCistIElzc3VlICMyNDM2ODogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyBpbiBPcmRlcmVkRGljdCBtZXRob2RzLgorCistIElzc3VlICMyNDM2MjogU2ltcGxpZnkgdGhlIEMgT3JkZXJlZERpY3QgZmFzdCBub2RlcyByZXNpemUgbG9naWMuCisKKy0gSXNzdWUgIzI0Mzc3OiBGaXggYSByZWYgbGVhayBpbiBPcmRlcmVkRGljdC5fX3JlcHJfXy4KKworLSBJc3N1ZSAjMjQzNjk6IERlZmVuZCBhZ2FpbnN0IGtleS1jaGFuZ2VzIGR1cmluZyBpdGVyYXRpb24uCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNDM3MzogX3Rlc3RtdWx0aXBoYXNlIGFuZCB4eGxpbWl0ZWQgbm93IHVzZSB0cF90cmF2ZXJzZSBhbmQKKyAgdHBfZmluYWxpemUgdG8gYXZvaWQgcmVmZXJlbmNlIGxlYWtzIGVuY291bnRlcmVkIHdoZW4gY29tYmluaW5nIHRwX2RlYWxsb2MKKyAgd2l0aCBQeVR5cGVfRnJvbVNwZWMgKHNlZSBpc3N1ZSAjMTY2OTAgZm9yIGRldGFpbHMpCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQ0NTg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIGNvdmVyIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIGZvcgorICBleHRlbnNpb24gbW9kdWxlcyAoUEVQIDQ4OSkuIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKIC0gSXNzdWUgIzI0MzUxOiBDbGFyaWZ5IHdoYXQgaXMgbWVhbnQgYnkgImlkZW50aWZpZXIiIGluIHRoZSBjb250ZXh0IG9mCiAgIHN0cmluZy5UZW1wbGF0ZSBpbnN0YW5jZXMuCiAKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNDQzMjogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIGFuZCBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMCisgIDEuMC4yYy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNS0zMQorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQyODQ6IFRoZSBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBtZXRob2RzIG9mIHRoZSBzdHIgY2xhc3Mgbm8gbG9uZ2VyCisgIHJldHVybiBUcnVlIHdoZW4gZmluZGluZyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGUgaW5kZXhlcyBhcmUgY29tcGxldGVseSBvdXQKKyAgb2YgcmFuZ2UuCisKKy0gSXNzdWUgIzI0MTE1OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSwgUHlPYmplY3RfTm90KCksCisgIFB5T2JqZWN0X0lzSW5zdGFuY2UoKSwgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCkgYW5kIF9QeURpY3RfQ29udGFpbnMoKQorICB0byBjaGVjayBmb3IgYW5kIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5LgorCistIElzc3VlICMyNDMyODogRml4IGltcG9ydGluZyBvbmUgY2hhcmFjdGVyIGV4dGVuc2lvbiBtb2R1bGVzLgorCistIElzc3VlICMxMTIwNTogSW4gZGljdGlvbmFyeSBkaXNwbGF5cywgZXZhbHVhdGUgdGhlIGtleSBiZWZvcmUgdGhlIHZhbHVlLgorCistIElzc3VlICMyNDI4NTogRml4ZWQgcmVncmVzc2lvbiB0aGF0IHByZXZlbnRlZCBpbXBvcnRpbmcgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgZnJvbSBpbnNpZGUgcGFja2FnZXMuIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjMyNDc6IEZpeCBhIGNyYXNoIGluIHRoZSBTdHJlYW1Xcml0ZXIucmVzZXQoKSBvZiBDSksgY29kZWNzLgorCistIElzc3VlICMyNDI3MDogQWRkIG1hdGguaXNjbG9zZSgpIGFuZCBjbWF0aC5pc2Nsb3NlKCkgZnVuY3Rpb25zIGFzIHBlciBQRVAgNDg1LgorICBDb250cmlidXRlZCBieSBDaHJpcyBCYXJrZXIgYW5kIFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjNTYzMzogRml4ZWQgdGltZWl0IHdoZW4gdGhlIHN0YXRlbWVudCBpcyBhIHN0cmluZyBhbmQgdGhlIHNldHVwIGlzIG5vdC4KKworLSBJc3N1ZSAjMjQzMjY6IEZpeGVkIGF1ZGlvb3AucmF0ZWN2KCkgd2l0aCBub24tZGVmYXVsdCB3ZWlnaHRCIGFyZ3VtZW50LgorICBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZCBNb29yZS4KKworLSBJc3N1ZSAjMTY5OTE6IEFkZCBhIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzIzOTM0OiBGaXggaW5zcGVjdC5zaWduYXR1cmUgdG8gZmFpbCBjb3JyZWN0bHkgZm9yIGJ1aWx0aW4gdHlwZXMKKyAgbGFja2luZyBzaWduYXR1cmUgaW5mb3JtYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IEphbWVzIFBvd2VsbC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNS0yNAorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQyNzY6IEZpeGVkIG9wdGltaXphdGlvbiBvZiBwcm9wZXJ0eSBkZXNjcmlwdG9yIGdldHRlci4KKworLSBJc3N1ZSAjMjQyNjg6IFBFUCA0ODk6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzIzOTU1OiBBZGQgcHl2ZW52LmNmZyBvcHRpb24gdG8gc3VwcHJlc3MgcmVnaXN0cnkvZW52aXJvbm1lbnQKKyAgbG9va3VwIGZvciBnZW5lcmF0aW5nIHN5cy5wYXRoIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzeXN0ZW0gZXJyb3IgaW4gdGhlIGNvbXBhcmlzb24gb2YgZmFrZWQKKyAgdHlwZXMuU2ltcGxlTmFtZXNwYWNlLgorCistIElzc3VlICMyMjkzOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBpdGVyYXRvciBvYmplY3QuICBQYXRjaCBieQorICBDbGVtZW50IFJvdWF1bHQuCisKKy0gSXNzdWUgIzIzOTg1OiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biB3aGVuIGRlbGV0aW5nIGEgc2xpY2UgZnJvbQorICB0aGUgZnJvbnQgb2YgYSBieXRlYXJyYXkgYW5kIHRoZW4gYXBwZW5kaW5nIHNvbWUgb3RoZXIgYnl0ZXMgZGF0YS4KKworLSBJc3N1ZSAjMjQxMDI6IEZpeGVkIGV4Y2VwdGlvbiB0eXBlIGNoZWNraW5nIGluIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJzLgorCistIElzc3VlICMxNTAyNzogVGhlIFVURi0zMiBlbmNvZGVyIGlzIG5vdyAzeCB0byA3eCBmYXN0ZXIuCisKKy0gSXNzdWUgIzIzMjkwOiBPcHRpbWl6ZSBzZXRfbWVyZ2UoKSBmb3IgY2FzZXMgd2hlcmUgdGhlIHRhcmdldCBpcyBlbXB0eS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EuKQorCistIElzc3VlICMyMjkyOiBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMuCisKKy0gSXNzdWUgIzI0MDk2OiBNYWtlIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgbW9yZSByb2J1c3QgYWdhaW5zdCBtdXRhdGlvbiBvZiB0aGUKKyAgd2FybmluZ3MuZmlsdGVycyBsaXN0LgorCistIElzc3VlICMyMzk5NjogQXZvaWQgYSBjcmFzaCB3aGVuIGEgZGVsZWdhdGVkIGdlbmVyYXRvciByYWlzZXMgYW4KKyAgdW5ub3JtYWxpemVkIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uLiAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMjM5MTA6IE9wdGltaXplIHByb3BlcnR5KCkgZ2V0dGVyIGNhbGxzLiAgUGF0Y2ggYnkgSm9lIEpldm5pay4KKworLSBJc3N1ZSAjMjM5MTE6IE1vdmUgcGF0aC1iYXNlZCBpbXBvcnRsaWIgYm9vdHN0cmFwIGNvZGUgdG8gYSBzZXBhcmF0ZQorICBmcm96ZW4gbW9kdWxlLgorCistIElzc3VlICMyNDE5MjogRml4IG5hbWVzcGFjZSBwYWNrYWdlIGltcG9ydHMuCisKKy0gSXNzdWUgIzI0MDIyOiBGaXggdG9rZW5pemVyIGNyYXNoIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZS4KKworLSBJc3N1ZSAjOTk1MTogQWRkZWQgYSBoZXgoKSBtZXRob2QgdG8gYnl0ZXMsIGJ5dGVhcnJheSwgYW5kIG1lbW9yeXZpZXcuCisKKy0gSXNzdWUgIzIyOTA2OiBQRVAgNDc5OiBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycy4KKworLSBJc3N1ZSAjMjQwMTc6IFBFUCA0OTI6IENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE0MzczOiBBZGRlZCBDIGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0b29scy5scnVfY2FjaGUoKS4gIEJhc2VkIG9uCisgIHBhdGNoZXMgYnkgTWF0dCBKb2luZXIgYW5kIEFsZXhleSBLYWNoYXlldi4KKworLSBJc3N1ZSAjMjQyMzA6IFRoZSB0ZW1wZmlsZSBtb2R1bGUgbm93IGFjY2VwdHMgYnl0ZXMgZm9yIHByZWZpeCwgc3VmZml4IGFuZCBkaXIKKyAgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBieXRlcyBpbiBzdWNoIHNpdHVhdGlvbnMgKG1hdGNoaW5nIHRoZSBvcyBtb2R1bGUgQVBJcykuCisKKy0gSXNzdWUgIzIyMTg5OiBjb2xsZWN0aW9ucy5Vc2VyU3RyaW5nIG5vdyBzdXBwb3J0cyBfX2dldG5ld2FyZ3NfXygpLAorICBfX3Jtb2RfXygpLCBjYXNlZm9sZCgpLCBmb3JtYXRfbWFwKCksIGlzcHJpbnRhYmxlKCksIGFuZCBtYWtldHJhbnMoKS4KKyAgUGF0Y2ggYnkgSm9lIEpldm5pay4KKworLSBJc3N1ZSAjMjQyNDQ6IFByZXZlbnRzIHRlcm1pbmF0aW9uIHdoZW4gYW4gaW52YWxpZCBmb3JtYXQgc3RyaW5nIGlzCisgIGVuY291bnRlcmVkIG9uIFdpbmRvd3MgaW4gc3RyZnRpbWUuCisKKy0gSXNzdWUgIzIzOTczOiBQRVAgNDg0OiBBZGQgdGhlIHR5cGluZyBtb2R1bGUuCisKKy0gSXNzdWUgIzIzMDg2OiBUaGUgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKCkgYWJzdHJhY3QgYmFzZSBjbGFzcyBhZGRlZAorICAqc3RhcnQqIGFuZCAqc3RvcCogcGFyYW1ldGVycyB0byB0aGUgaW5kZXgoKSBtaXhpbi4KKyAgUGF0Y2ggYnkgRGV2aW4gSmVhbnBpZXJyZS4KKworLSBJc3N1ZSAjMjAwMzU6IFJlcGxhY2VkIHRoZSBgYHRraW50ZXIuX2ZpeGBgIG1vZHVsZSB1c2VkIGZvciBzZXR0aW5nIHVwIHRoZQorICBUY2wvVGsgZW52aXJvbm1lbnQgb24gV2luZG93cyB3aXRoIGEgcHJpdmF0ZSBmdW5jdGlvbiBpbiB0aGUgYGBfdGtpbnRlcmBgCisgIG1vZHVsZSB0aGF0IG1ha2VzIG5vIHBlcm1hbmVudCBjaGFuZ2VzIHRvIHRoZSBlbnZpcm9ubWVudC4KKworLSBJc3N1ZSAjMjQyNTc6IEZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiBzcWxpdGUzLlJvdyBjb25zdHJ1Y3RvciB3aXRoIGZha2VkCisgIGN1cnNvciB0eXBlLgorCistIElzc3VlICMxNTgzNjogYXNzZXJ0UmFpc2VzKCksIGFzc2VydFJhaXNlc1JlZ2V4KCksIGFzc2VydFdhcm5zKCkgYW5kCisgIGFzc2VydFdhcm5zUmVnZXgoKSBhc3NlcnRtZW50cyBub3cgY2hlY2sgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50CisgIHRvIHByZXZlbnQgcG9zc2libGUgdXNlciBlcnJvci4gIEJhc2VkIG9uIHBhdGNoIGJ5IERhbmllbCBXYWduZXItSGFsbC4KKworLSBJc3N1ZSAjOTg1ODogQWRkIG1pc3NpbmcgbWV0aG9kIHN0dWJzIHRvIF9pby5SYXdJT0Jhc2UuICBQYXRjaCBieSBMYXVyYQorICBSdXBwcmVjaHQuCisKKy0gSXNzdWUgIzIyOTU1OiBhdHRyZ2V0dGVyLCBpdGVtZ2V0dGVyIGFuZCBtZXRob2RjYWxsZXIgb2JqZWN0cyBpbiB0aGUgb3BlcmF0b3IKKyAgbW9kdWxlIG5vdyBzdXBwb3J0IHBpY2tsaW5nLiAgQWRkZWQgcmVhZGFibGUgYW5kIGV2YWx1YWJsZSByZXByIGZvciB0aGVzZQorICBvYmplY3RzLiAgQmFzZWQgb24gcGF0Y2ggYnkgSm9zaCBSb3NlbmJlcmcuCisKKy0gSXNzdWUgIzIyMTA3OiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkgYW5kIHRlbXBmaWxlLm1rZHRlbXAoKSBub3cgdHJ5IGFnYWluCisgIHdoZW4gYSBkaXJlY3Rvcnkgd2l0aCB0aGUgY2hvc2VuIG5hbWUgYWxyZWFkeSBleGlzdHMgb24gV2luZG93cyBhcyB3ZWxsIGFzCisgIG9uIFVuaXguICB0ZW1wZmlsZS5ta3N0ZW1wKCkgbm93IGZhaWxzIGVhcmx5IGlmIHBhcmVudCBkaXJlY3RvcnkgaXMgbm90CisgIHZhbGlkIChub3QgZXhpc3RzIG9yIGlzIGEgZmlsZSkgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjM3ODA6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2UgaW4gb3MucGF0aC5qb2luKCkgd2l0aCBzaW5nbGUgYXJndW1lbnQuCisKKy0gSXNzdWUgIzY1OTg6IEluY3JlYXNlZCB0aW1lIHByZWNpc2lvbiBhbmQgcmFuZG9tIG51bWJlciByYW5nZSBpbgorICBlbWFpbC51dGlscy5tYWtlX21zZ2lkKCkgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBJRC4KKworLSBJc3N1ZSAjMjQwOTE6IEZpeGVkIHZhcmlvdXMgY3Jhc2hlcyBpbiBjb3JuZXIgY2FzZXMgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZgorICBFbGVtZW50VHJlZS4KKworLSBJc3N1ZSAjMjE5MzE6IG1zaWxpYi5GQ0lDcmVhdGUoKSBub3cgcmFpc2VzIFR5cGVFcnJvciBpbiB0aGUgY2FzZSBvZiBhIGJhZAorICBhcmd1bWVudCBpbnN0ZWFkIG9mIGEgVmFsdWVFcnJvciB3aXRoIGEgYm9ndXMgRkNJIGVycm9yIG51bWJlci4KKyAgUGF0Y2ggYnkgSmVmZnJleSBBcm1zdHJvbmcuCisKKy0gSXNzdWUgIzEzODY2OiAqcXVvdGVfdmlhKiBhcmd1bWVudCBhZGRlZCB0byB1cmxsaWIucGFyc2UudXJsZW5jb2RlLgorCistIElzc3VlICMyMDA5ODogTmV3IG1hbmdsZV9mcm9tIHBvbGljeSBvcHRpb24gZm9yIGVtYWlsLCBkZWZhdWx0IFRydWUKKyAgZm9yIGNvbXBhdDMyLCBidXQgRmFsc2UgZm9yIGFsbCBvdGhlciBwb2xpY2llcy4KKworLSBJc3N1ZSAjMjQyMTE6IFRoZSBlbWFpbCBsaWJyYXJ5IG5vdyBzdXBwb3J0cyBSRkMgNjUzMjogaXQgY2FuIGdlbmVyYXRlCisgIGhlYWRlcnMgdXNpbmcgdXRmLTggaW5zdGVhZCBvZiBlbmNvZGVkIHdvcmRzLgorCistIElzc3VlICMxNjMxNDogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIExaTUEgY29tcHJlc3Npb24gaW4gZGlzdHV0aWxzLgorCistIElzc3VlICMyMTgwNDogcG9wbGliIG5vdyBzdXBwb3J0cyBSRkMgNjg1NiAoVVRGOCkuCisKKy0gSXNzdWUgIzE4NjgyOiBPcHRpbWl6ZWQgcHByaW50IGZ1bmN0aW9ucyBmb3IgYnVpbHRpbiBzY2FsYXIgdHlwZXMuCisKKy0gSXNzdWUgIzIyMDI3OiBzbXRwbGliIG5vdyBzdXBwb3J0cyBSRkMgNjUzMSAoU01UUFVURjgpLgorCistIElzc3VlICMyMzQ4ODogUmFuZG9tIGdlbmVyYXRvciBvYmplY3RzIG5vdyBjb25zdW1lIDJ4IGxlc3MgbWVtb3J5IG9uIDY0LWJpdC4KKworLSBJc3N1ZSAjMTMyMjogcGxhdGZvcm0uZGlzdCgpIGFuZCBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSBmdW5jdGlvbnMgYXJlCisgIG5vdyBkZXByZWNhdGVkLiAgSW5pdGlhbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCisKKy0gSXNzdWUgIzIyNDg2OiBBZGRlZCB0aGUgbWF0aC5nY2QoKSBmdW5jdGlvbi4gIFRoZSBmcmFjdGlvbnMuZ2NkKCkgZnVuY3Rpb24gbm93IGlzCisgIGRlcHJlY2F0ZWQuICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIERpY2tpbnNvbi4KKworLSBJc3N1ZSAjMjQwNjQ6IFByb3BlcnR5KCkgZG9jc3RyaW5ncyBhcmUgbm93IHdyaXRlYWJsZS4KKyAgKFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuKQorCistIElzc3VlICMyMjY4MTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGtvaThfdCBlbmNvZGluZy4KKworLSBJc3N1ZSAjMjI2ODI6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBrejEwNDggZW5jb2RpbmcuCisKKy0gSXNzdWUgIzIzNzk2OiBwZWVrIGFuZCByZWFkMSBtZXRob2RzIG9mIEJ1ZmZlcmVkUmVhZGVyIG5vdyByYWlzZSBWYWx1ZUVycm9yCisgIGlmIHRoZXkgY2FsbGVkIG9uIGEgY2xvc2VkIG9iamVjdC4gUGF0Y2ggYnkgSm9obiBIZXJnZW5yb2VkZXIuCisKKy0gSXNzdWUgIzIxNzk1OiBzbXRwZCBub3cgc3VwcG9ydHMgdGhlIDhCSVRNSU1FIGV4dGVuc2lvbiB3aGVuZXZlcgorICB0aGUgbmV3ICpkZWNvZGVfZGF0YSogY29uc3RydWN0b3IgYXJndW1lbnQgaXMgc2V0IHRvIEZhbHNlLgorCistIElzc3VlICMyNDE1NTogb3B0aW1pemUgaGVhcHEuaGVhcGlmeSgpIGZvciBiZXR0ZXIgY2FjaGUgcGVyZm9ybWFuY2UKKyAgd2hlbiBoZWFwaWZ5aW5nIGxhcmdlIGxpc3RzLgorCistIElzc3VlICMyMTgwMDogaW1hcGxpYiBub3cgc3VwcG9ydHMgUkZDIDUxNjEgKGVuYWJsZSksIFJGQyA2ODU1CisgICh1dGY4L2ludGVybmF0aW9uYWxpemVkIGVtYWlsKSBhbmQgYXV0b21hdGljYWxseSBlbmNvZGVzIG5vbi1BU0NJSQorICB1c2VybmFtZXMgYW5kIHBhc3N3b3JkcyB0byBVVEY4LgorCistIElzc3VlICMyMDI3NDogV2hlbiBjYWxsaW5nIGEgX3NxbGl0ZS5Db25uZWN0aW9uLCBpdCBub3cgY29tcGxhaW5zIGlmIHBhc3NlZAorICBhbnkga2V5d29yZCBhcmd1bWVudHMuICBQcmV2aW91c2x5IGl0IHNpbGVudGx5IGlnbm9yZWQgdGhlbS4KKworLSBJc3N1ZSAjMjAyNzQ6IFJlbW92ZSBpZ25vcmVkIGFuZCBlcnJvbmVvdXMgImt3YXJncyIgcGFyYW1ldGVycyBmcm9tIHRocmVlCisgIE1FVEhfVkFSQVJHUyBtZXRob2RzIG9uIF9zcWxpdGUuQ29ubmVjdGlvbi4KKworLSBJc3N1ZSAjMjQxMzQ6IGFzc2VydFJhaXNlcygpLCBhc3NlcnRSYWlzZXNSZWdleCgpLCBhc3NlcnRXYXJucygpIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4KCkgY2hlY2tzIG5vdyBlbWl0cyBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgd2hlbiBjYWxsYWJsZSBpcworICBOb25lIG9yIGtleXdvcmQgYXJndW1lbnRzIGV4Y2VwdCBtc2cgaXMgcGFzc2VkIGluIHRoZSBjb250ZXh0IG1hbmFnZXIgbW9kZS4KKworLSBJc3N1ZSAjMjQwMTg6IEFkZCBhIGNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3IgYWJzdHJhY3QgYmFzZSBjbGFzcy4KKyAgQ29udHJpYnV0ZWQgYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMjM4ODA6IFRraW50ZXIncyBnZXRpbnQoKSBhbmQgZ2V0ZG91YmxlKCkgbm93IHN1cHBvcnQgVGNsX09iai4KKyAgVGtpbnRlcidzIGdldGRvdWJsZSgpIG5vdyBzdXBwb3J0cyBhbnkgbnVtYmVycyAoaW4gcGFydGljdWxhciBpbnQpLgorCistIElzc3VlICMyMjYxOTogQWRkZWQgbmVnYXRpdmUgbGltaXQgc3VwcG9ydCBpbiB0aGUgdHJhY2ViYWNrIG1vZHVsZS4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgRG1pdHJ5IEthemFrb3YuCisKKy0gSXNzdWUgIzI0MDk0OiBGaXggcG9zc2libGUgY3Jhc2ggaW4ganNvbi5lbmNvZGUgd2l0aCBwb29ybHkgYmVoYXZlZCBkaWN0CisgIHN1YmNsYXNzZXMuCisKKy0gSXNzdWUgIzkyNDY6IE9uIFBPU0lYLCBvcy5nZXRjd2QoKSBub3cgc3VwcG9ydHMgcGF0aHMgbG9uZ2VyIHRoYW4gMTAyNSBieXRlcy4KKyAgUGF0Y2ggd3JpdHRlbiBieSBXaWxsaWFtIE9yci4KKworLSBJc3N1ZSAjMTc0NDU6IGFkZCBkaWZmbGliLmRpZmZfYnl0ZXMoKSB0byBzdXBwb3J0IGNvbXBhcmlzb24gb2YKKyAgYnl0ZSBzdHJpbmdzIChmaXhlcyBhIHJlZ3Jlc3Npb24gZnJvbSBQeXRob24gMikuCisKKy0gSXNzdWUgIzIzOTE3OiBGYWxsIGJhY2sgdG8gc2VxdWVudGlhbCBjb21waWxhdGlvbiB3aGVuIFByb2Nlc3NQb29sRXhlY3V0b3IKKyAgZG9lc24ndCBleGlzdC4gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjMwMDg6IEZpeGVkIHJlc29sdmluZyBhdHRyaWJ1dGVzIHdpdGggYm9vbGVhbiB2YWx1ZSBpcyBGYWxzZSBpbiBweWRvYy4KKworLSBGaXggYXN5bmNpbyBpc3N1ZSAyMzU6IExpZm9RdWV1ZSBhbmQgUHJpb3JpdHlRdWV1ZSdzIHB1dCBkaWRuJ3QKKyAgaW5jcmVtZW50IHVuZmluaXNoZWQgdGFza3MgKHRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIHdoZW4KKyAgSm9pbmFibGVRdWV1ZSB3YXMgbWVyZ2VkIHdpdGggUXVldWUpLgorCistIElzc3VlICMyMzkwODogb3MgZnVuY3Rpb25zIG5vdyByZWplY3QgcGF0aHMgd2l0aCBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcgorICBvbiBXaW5kb3dzIGluc3RlYWQgb2Ygc2lsZW50bHkgdHJ1bmNhdGUgdGhlbS4KKworLSBJc3N1ZSAjMjM3Mjg6IGJpbmFzY2lpLmNyY19ocXgoKSBjb3VsZCByZXR1cm4gYW4gaW50ZWdlciBvdXRzaWRlIG9mIHRoZSByYW5nZQorICAwLTB4ZmZmZiBmb3IgZW1wdHkgZGF0YS4KKworLSBJc3N1ZSAjMjM4ODc6IHVybGxpYi5lcnJvci5IVFRQRXJyb3Igbm93IGhhcyBhIHByb3BlciByZXByKCkgcmVwcmVzZW50YXRpb24uCisgIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gYXN5bmNpbzogTmV3IGV2ZW50IGxvb3AgQVBJczogc2V0X3Rhc2tfZmFjdG9yeSgpIGFuZCBnZXRfdGFza19mYWN0b3J5KCkuCisKKy0gYXN5bmNpbzogYXN5bmMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBlbnN1cmVfZnV0dXJlKCkuCisKKy0gSXNzdWUgIzI0MTc4OiBhc3luY2lvLkxvY2ssIENvbmRpdGlvbiwgU2VtYXBob3JlLCBhbmQgQm91bmRlZFNlbWFwaG9yZQorICBzdXBwb3J0IG5ldyAnYXN5bmMgd2l0aCcgc3ludGF4LiAgQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzI0MTc5OiBTdXBwb3J0ICdhc3luYyBmb3InIGZvciBhc3luY2lvLlN0cmVhbVJlYWRlci4KKyAgQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzI0MTg0OiBBZGQgQXN5bmNJdGVyYXRvciBhbmQgQXN5bmNJdGVyYWJsZSBBQkNzIHRvCisgIGNvbGxlY3Rpb25zLmFiYy4gIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMyMjU0NzogSW1wbGVtZW50IGluZm9ybWF0aXZlIF9fcmVwcl9fIGZvciBpbnNwZWN0LkJvdW5kQXJndW1lbnRzLgorICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjQxOTA6IEltcGxlbWVudCBpbnNwZWN0LkJvdW5kQXJndW1lbnQuYXBwbHlfZGVmYXVsdHMoKSBtZXRob2QuCisgIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMyMDY5MTogQWRkICdmb2xsb3dfd3JhcHBlZCcgYXJndW1lbnQgdG8KKyAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIGFuZCBpbnNwZWN0LnNpZ25hdHVyZSgpLgorICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjQyNDg6IERlcHJlY2F0ZSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKCkgYW5kCisgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fYnVpbHRpbigpLgorCistIElzc3VlICMyMzg5ODogRml4IGluc3BlY3QuY2xhc3NpZnlfY2xhc3NfYXR0cnMoKSB0byBzdXBwb3J0IGF0dHJpYnV0ZXMKKyAgd2l0aCBvdmVybG9hZGVkIF9fZXFfXyBhbmQgX19ib29sX18uICBQYXRjaCBieSBNaWtlIEJheWVyLgorCistIElzc3VlICMyNDI5ODogRml4IGluc3BlY3Quc2lnbmF0dXJlKCkgdG8gY29ycmVjdGx5IHVud3JhcCB3cmFwcGVycworICBhcm91bmQgYm91bmQgbWV0aG9kcy4KKworSURMRQorLS0tLQorCistIElzc3VlICMyMzE4NDogcmVtb3ZlIHVudXNlZCBuYW1lcyBhbmQgaW1wb3J0cyBpbiBpZGxlbGliLgorICBJbml0aWFsIHBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjE1MjA6IHRlc3RfemlwZmlsZSBubyBsb25nZXIgZmFpbHMgaWYgdGhlIHdvcmQgJ2JhZCcgYXBwZWFycworICBhbnl3aGVyZSBpbiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzk1MTc6IE1vdmUgc2NyaXB0X2hlbHBlciBpbnRvIHRoZSBzdXBwb3J0IHBhY2thZ2UuCisgIFBhdGNoIGJ5IENocmlzdGllIFdpbHNvbi4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCiAtIElzc3VlICMyMjE1NTogQWRkIEZpbGUgSGFuZGxlcnMgc3Vic2VjdGlvbiB3aXRoIGNyZWF0ZWZpbGVoYW5kbGVyIHRvIHRraW50ZXIKICAgZG9jLiAgUmVtb3ZlIG9ic29sZXRlIGV4YW1wbGUgZnJvbSBGQVEuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCiAtIElzc3VlICMyNDAyOTogRG9jdW1lbnQgdGhlIG5hbWUgYmluZGluZyBiZWhhdmlvciBmb3Igc3VibW9kdWxlIGltcG9ydHMuCiAKLS0gSXNzdWUgIzI0MDc3OiBGaXggdHlwbyBpbiBtYW4gcGFnZSBmb3IgLUkgY29tbWFuZCBvcHRpb246IC1zLCBub3QgLVMuCistIElzc3VlICMyNDA3NzogRml4IHR5cG8gaW4gbWFuIHBhZ2UgZm9yIC1JIGNvbW1hbmQgb3B0aW9uOiAtcywgbm90IC1TCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCistIElzc3VlICMyNDAwMDogSW1wcm92ZWQgQXJndW1lbnQgQ2xpbmljJ3MgbWFwcGluZyBvZiBjb252ZXJ0ZXJzIHRvIGxlZ2FjeQorICAiZm9ybWF0IHVuaXRzIi4gIFVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gdG8gbWF0Y2guCisKKy0gSXNzdWUgIzI0MDAxOiBBcmd1bWVudCBDbGluaWMgY29udmVydGVycyBub3cgdXNlIGFjY2VwdD17dHlwZX0KKyAgaW5zdGVhZCBvZiB0eXBlcz17J3R5cGUnfSB0byBzcGVjaWZ5IHRoZSB0eXBlcyB0aGUgY29udmVydGVyIGFjY2VwdHMuCisKIC0gSXNzdWUgIzIzMzMwOiBoMnB5IG5vdyBzdXBwb3J0cyBhcmJpdHJhcnkgZmlsZW5hbWVzIGluICNpbmNsdWRlLgogCiAtIElzc3VlICMyNDAzMTogbWFrZSBwYXRjaGNoZWNrIG5vdyBzdXBwb3J0cyBnaXQgY2hlY2tvdXRzLCB0b28uCiAKLVdpbmRvd3MKLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjUwMjI6IFJlbW92ZWQgdmVyeSBvdXRkYXRlZCBQQy9leGFtcGxlX250LyBkaXJlY3RvcnkuCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBhbHBoYSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTUtMDItMjMKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNC0xOQogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjI5ODA6IFVuZGVyIExpbnV4LCBHTlUvS0ZyZWVCU0QgYW5kIHRoZSBIdXJkLCBDIGV4dGVuc2lvbnMgbm93IGluY2x1ZGUKKyAgdGhlIGFyY2hpdGVjdHVyZSB0cmlwbGV0IGluIHRoZSBleHRlbnNpb24gbmFtZSwgdG8gbWFrZSBpdCBlYXN5IHRvIHRlc3QgYnVpbGRzCisgIGZvciBkaWZmZXJlbnQgQUJJcyBpbiB0aGUgc2FtZSB3b3JraW5nIHRyZWUuICBVbmRlciBPUyBYLCB0aGUgZXh0ZW5zaW9uIG5hbWUKKyAgbm93IGluY2x1ZGVzIFBFUCAzMTQ5LXN0eWxlIGluZm9ybWF0aW9uLgorCistIElzc3VlICMyMjYzMTogQWRkZWQgTGludXgtc3BlY2lmaWMgc29ja2V0IGNvbnN0YW50IENBTl9SQVdfRkRfRlJBTUVTLgorICBQYXRjaCBjb3VydGVzeSBvZiBKb2UgSmV2bmlrLgorCistIElzc3VlICMyMzczMTogSW1wbGVtZW50IFBFUCA0ODg6IHJlbW92YWwgb2YgLnB5byBmaWxlcy4KKworLSBJc3N1ZSAjMjM3MjY6IERvbid0IGVuYWJsZSBHQyBmb3IgdXNlciBzdWJjbGFzc2VzIG9mIG5vbi1HQyB0eXBlcyB0aGF0CisgIGRvbid0IGFkZCBhbnkgbmV3IGZpZWxkcy4gIFBhdGNoIGJ5IEV1Z2VuZSBUb2Rlci4KKworLSBJc3N1ZSAjMjMzMDk6IEF2b2lkIGEgZGVhZGxvY2sgYXQgc2h1dGRvd24gaWYgYSBkYWVtb24gdGhyZWFkIGlzIGFib3J0ZWQKKyAgd2hpbGUgaXQgaXMgaG9sZGluZyBhIGxvY2sgdG8gYSBidWZmZXJlZCBJL08gb2JqZWN0LCBhbmQgdGhlIG1haW4gdGhyZWFkCisgIHRyaWVzIHRvIHVzZSB0aGUgc2FtZSBJL08gb2JqZWN0ICh0eXBpY2FsbHkgc3Rkb3V0IG9yIHN0ZGVycikuICBBIGZhdGFsCisgIGVycm9yIGlzIGVtaXR0ZWQgaW5zdGVhZC4KKworLSBJc3N1ZSAjMjI5Nzc6IEZpeGVkIGZvcm1hdHRpbmcgV2luZG93cyBlcnJvciBtZXNzYWdlcyBvbiBXaW5lLgorICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyMzQ2NjogJWMsICVvLCAleCwgYW5kICVYIGluIGJ5dGVzIGZvcm1hdHRpbmcgbm93IHJhaXNlIFR5cGVFcnJvciBvbgorICBub24taW50ZWdlciBpbnB1dC4KKworLSBJc3N1ZSAjMjQwNDQ6IEZpeCBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbGlzdC5zb3J0IGluIG91dCBvZgorICBtZW1vcnkgY29uZGl0aW9ucy4KKworLSBJc3N1ZSAjMjEzNTQ6IFB5Q0Z1bmN0aW9uX05ldyBmdW5jdGlvbiBpcyBleHBvc2VkIGJ5IHB5dGhvbiBETEwgYWdhaW4uCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjM4NDA6IHRva2VuaXplLm9wZW4oKSBub3cgY2xvc2VzIHRoZSB0ZW1wb3JhcnkgYmluYXJ5IGZpbGUgb24gZXJyb3IKKyAgdG8gZml4IGEgcmVzb3VyY2Ugd2FybmluZy4KKworLSBJc3N1ZSAjMTY5MTQ6IG5ldyBkZWJ1Z2xldmVsIDIgaW4gc210cGxpYiBhZGRzIHRpbWVzdGFtcHMgdG8gZGVidWcgb3V0cHV0LgorCistIElzc3VlICM3MTU5OiB1cmxsaWIucmVxdWVzdCBub3cgc3VwcG9ydHMgc2VuZGluZyBhdXRoIGNyZWRlbnRpYWxzCisgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGZpcnN0IDQwMS4gIFRoaXMgZW5oYW5jZW1lbnQgaXMgYSBzdXBlcnNldCBvZiB0aGUKKyAgZW5oYW5jZW1lbnQgZnJvbSBpc3N1ZSAjMTk0OTQgYW5kIHN1cGVyc2VkZXMgdGhhdCBjaGFuZ2UuCisKKy0gSXNzdWUgIzIzNzAzOiBGaXggYSByZWdyZXNzaW9uIGluIHVybGpvaW4oKSBpbnRyb2R1Y2VkIGluIDkwMWU0ZTUyYjIwYS4KKyAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjNDI1NDogQWRkcyBfY3Vyc2VzLnVwZGF0ZV9saW5lc19jb2xzKCkgUGF0Y2ggYnkgQXJub24gWWFhcmkKKworLSBJc3N1ZSAjMTk5MzM6IFByb3ZpZGUgZGVmYXVsdCBhcmd1bWVudCBmb3IgbmRpZ2l0cyBpbiByb3VuZC4gUGF0Y2ggYnkKKyAgVmFqcmFza3kgS29rLgorCistIElzc3VlICMyMzE5MzogQWRkIGEgbnVtZXJpY19vd25lciBwYXJhbWV0ZXIgdG8KKyAgdGFyZmlsZS5UYXJGaWxlLmV4dHJhY3QgYW5kIHRhcmZpbGUuVGFyRmlsZS5leHRyYWN0YWxsLiBQYXRjaCBieQorICBNaWNoYWVsIFZvZ3QgYW5kIEVyaWMgU21pdGguCisKKy0gSXNzdWUgIzIzMzQyOiBBZGQgYSBzdWJwcm9jZXNzLnJ1bigpIGZ1bmN0aW9uIHRoYW4gcmV0dXJucyBhIENhbGxlZFByb2Nlc3MKKyAgaW5zdGFuY2UgZm9yIGEgbW9yZSBjb25zaXN0ZW50IEFQSSB0aGFuIHRoZSBleGlzdGluZyBjYWxsKiBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzIxMjE3OiBpbnNwZWN0LmdldHNvdXJjZWxpbmVzKCkgbm93IHRyaWVzIHRvIGNvbXB1dGUgdGhlIHN0YXJ0IGFuZCBlbmQKKyAgbGluZXMgZnJvbSB0aGUgY29kZSBvYmplY3QsIGZpeGluZyBhbiBpc3N1ZSB3aGVuIGEgbGFtYmRhIGZ1bmN0aW9uIGlzIHVzZWQgYXMKKyAgZGVjb3JhdG9yIGFyZ3VtZW50LiBQYXRjaCBieSBUaG9tYXMgQmFsbGluZ2VyIGFuZCBBbGxpc29uIEthcHR1ci4KKworLSBJc3N1ZSAjMjQ1MjE6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGlja2xlIG1vZHVsZS4KKworLSBJc3N1ZSAjMjI5MzE6IEFsbG93ICdbJyBhbmQgJ10nIGluIGNvb2tpZSB2YWx1ZXMuCisKKy0gVGhlIGtleXdvcmRzIGF0dHJpYnV0ZSBvZiBmdW5jdG9vbHMucGFydGlhbCBpcyBub3cgYWx3YXlzIGEgZGljdGlvbmFyeS4KKworLSBJc3N1ZSAjMjM4MTE6IEFkZCBtaXNzaW5nIG5ld2xpbmUgdG8gdGhlIFB5Q29tcGlsZUVycm9yIGVycm9yIG1lc3NhZ2UuCisgIFBhdGNoIGJ5IEFsZXggU2hrb3AuCisKKy0gSXNzdWUgIzIxMTE2OiBBdm9pZCBibG93aW5nIG1lbW9yeSB3aGVuIGFsbG9jYXRpbmcgYSBtdWx0aXByb2Nlc3Npbmcgc2hhcmVkCisgIGFycmF5IHRoYXQncyBsYXJnZXIgdGhhbiA1MCUgb2YgdGhlIGF2YWlsYWJsZSBSQU0uICBQYXRjaCBieSBNw6lkw6lyaWMgQm9xdWllbi4KKworLSBJc3N1ZSAjMjI5ODI6IEltcHJvdmUgQk9NIGhhbmRsaW5nIHdoZW4gc2Vla2luZyB0byBtdWx0aXBsZSBwb3NpdGlvbnMgb2YKKyAgYSB3cml0YWJsZSB0ZXh0IGZpbGUuCisKKy0gSXNzdWUgIzIzNDY0OiBSZW1vdmVkIGRlcHJlY2F0ZWQgYXN5bmNpbyBKb2luYWJsZVF1ZXVlLgorCistIElzc3VlICMyMzUyOTogTGltaXQgdGhlIHNpemUgb2YgZGVjb21wcmVzc2VkIGRhdGEgd2hlbiByZWFkaW5nIGZyb20KKyAgR3ppcEZpbGUsIEJaMkZpbGUgb3IgTFpNQUZpbGUuICBUaGlzIGRlZmVhdHMgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrcworICB1c2luZyBjb21wcmVzc2VkIGJvbWJzIChpLmUuIGNvbXByZXNzZWQgcGF5bG9hZHMgd2hpY2ggZGVjb21wcmVzcyB0byBhIGh1Z2UKKyAgc2l6ZSkuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyIGFuZCBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICMyMTg1OTogQWRkZWQgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGlvLkZpbGVJTy4KKworLSBJc3N1ZSAjMjM4NjU6IGNsb3NlKCkgbWV0aG9kcyBpbiBtdWx0aXBsZSBtb2R1bGVzIG5vdyBhcmUgaWRlbXBvdGVudCBhbmQgbW9yZQorICByb2J1c3QgYXQgc2h1dGRvd24uIElmIHRoZXkgbmVlZCB0byByZWxlYXNlIG11bHRpcGxlIHJlc291cmNlcywgYWxsIGFyZQorICByZWxlYXNlZCBldmVuIGlmIGVycm9ycyBvY2N1ci4KKworLSBJc3N1ZSAjMjM0MDA6IFJhaXNlIHNhbWUgZXhjZXB0aW9uIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMgaWYgc2VtX29wZW4gaXMgbm90CisgIGF2YWlsYWJsZS4gIFBhdGNoIGJ5IERhdmluIFBvdHRzLgorCistIElzc3VlICMxMDgzODogVGhlIHN1YnByb2Nlc3Mgbm93IG1vZHVsZSBpbmNsdWRlcyBTdWJwcm9jZXNzRXJyb3IgYW5kCisgIFRpbWVvdXRFcnJvciBpbiBpdHMgbGlzdCBvZiBleHBvcnRlZCBuYW1lcyBmb3IgdGhlIHVzZXJzIHdpbGQgZW5vdWdoCisgIHRvIHVzZSBgYGZyb20gc3VicHJvY2VzcyBpbXBvcnQgKmBgLgorCistIElzc3VlICMyMzQxMTogQWRkZWQgRGVmcmFnUmVzdWx0LCBQYXJzZVJlc3VsdCwgU3BsaXRSZXN1bHQsIERlZnJhZ1Jlc3VsdEJ5dGVzLAorICBQYXJzZVJlc3VsdEJ5dGVzLCBhbmQgU3BsaXRSZXN1bHRCeXRlcyB0byB1cmxsaWIucGFyc2UuX19hbGxfXy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjM4ODE6IHVybGxpYi5yZXF1ZXN0LmZ0cHdyYXBwZXIgY29uc3RydWN0b3Igbm93IGNsb3NlcyB0aGUgc29ja2V0IGlmCisgIHRoZSBGVFAgY29ubmVjdGlvbiBmYWlsZWQgdG8gZml4IGEgUmVzb3VyY2VXYXJuaW5nLgorCistIElzc3VlICMyMzg1MzogOm1ldGg6YHNvY2tldC5zb2NrZXQuc2VuZGFsbGAgZG9lcyBubyBtb3JlIHJlc2V0IHRoZSBzb2NrZXQKKyAgdGltZW91dCBlYWNoIHRpbWUgZGF0YSBpcyBzZW50IHN1Y2Nlc3NmdWx5LiBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRoZQorICBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHNlbmQgYWxsIGRhdGEuCisKKy0gSXNzdWUgIzIyNzIxOiBBbiBvcmRlciBvZiBtdWx0aWxpbmUgcHByaW50IG91dHB1dCBvZiBzZXQgb3IgZGljdCBjb250YWluaW5nCisgIG9yZGVyYWJsZSBhbmQgbm9uLW9yZGVyYWJsZSBlbGVtZW50cyBubyBsb25nZXIgZGVwZW5kcyBvbiBpdGVyYXRpb24gb3JkZXIgb2YKKyAgc2V0IG9yIGRpY3QuCisKKy0gSXNzdWUgIzE1MTMzOiBfdGtpbnRlci50a2FwcC5nZXRib29sZWFuKCkgbm93IHN1cHBvcnRzIFRjbF9PYmogYW5kIGFsd2F5cworICByZXR1cm5zIGJvb2wuICB0a2ludGVyLkJvb2xlYW5WYXIgbm93IHZhbGlkYXRlcyBpbnB1dCB2YWx1ZXMgKGFjY2VwdGVkIGJvb2wsCisgIGludCwgc3RyLCBhbmQgVGNsX09iaikuICB0a2ludGVyLkJvb2xlYW5WYXIuZ2V0KCkgbm93IGFsd2F5cyByZXR1cm5zIGJvb2wuCisKKy0gSXNzdWUgIzEwNTkwOiB4bWwuc2F4LnBhcnNlU3RyaW5nKCkgbm93IHN1cHBvcnRzIHN0cmluZyBhcmd1bWVudC4KKworLSBJc3N1ZSAjMjMzMzg6IEZpeGVkIGZvcm1hdHRpbmcgY3R5cGVzIGVycm9yIG1lc3NhZ2VzIG9uIEN5Z3dpbi4KKyAgUGF0Y2ggYnkgTWFrb3RvIEthdG8uCisKKy0gSXNzdWUgIzE1NTgyOiBpbnNwZWN0LmdldGRvYygpIG5vdyBmb2xsb3dzIGluaGVyaXRhbmNlIGNoYWlucy4KKworLSBJc3N1ZSAjMjE3NTogU0FYIHBhcnNlcnMgbm93IHN1cHBvcnQgYSBjaGFyYWN0ZXIgc3RyZWFtIG9mIElucHV0U291cmNlIG9iamVjdC4KKworLSBJc3N1ZSAjMTY4NDA6IFRraW50ZXIgbm93IHN1cHBvcnRzIDY0LWJpdCBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC40IGFuZAorICBhcmJpdHJhcnkgcHJlY2lzaW9uIGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjUuCisKKy0gSXNzdWUgIzIzODM0OiBGaXggc29ja2V0LnNlbmR0bygpLCB1c2UgdGhlIEMgUHlfc3NpemVfdCB0eXBlIHRvIHN0b3JlIHRoZQorICByZXN1bHQgb2Ygc2VuZHRvKCkgaW5zdGVhZCBvZiB0aGUgQyBpbnQgdHlwZS4KKworLSBJc3N1ZSAjMjM2MTg6IDptZXRoOmBzb2NrZXQuc29ja2V0LmNvbm5lY3RgIG5vdyB3YWl0cyB1bnRpbCB0aGUgY29ubmVjdGlvbgorICBjb21wbGV0ZXMgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIHRoZSBjb25uZWN0aW9uIGlzCisgIGludGVycnVwdGVkIGJ5IHNpZ25hbHMsIHNpZ25hbCBoYW5kbGVycyBkb24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZQorICBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzIGEgdGltZW91dC4gOm1ldGg6YHNvY2tldC5zb2NrZXQuY29ubmVjdGAgc3RpbGwKKyAgcmFpc2UgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzLgorCistIElzc3VlICMyMTUyNjogVGtpbnRlciBub3cgc3VwcG9ydHMgbmV3IGJvb2xlYW4gdHlwZSBpbiBUY2wgOC41LgorCistIElzc3VlICMyMzgzNjogRml4IHRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRvIGhhbmRsZSByZWVudHJhbnQgY2FsbHMgdG8KKyAgaXRzIHNpZ25hbCBoYW5kbGVycy4KKworLSBJc3N1ZSAjMjM4Mzg6IGxpbmVjYWNoZSBub3cgY2xlYXJzIHRoZSBjYWNoZSBhbmQgcmV0dXJucyBhbiBlbXB0eSByZXN1bHQgb24KKyAgTWVtb3J5RXJyb3IuCisKKy0gSXNzdWUgIzEwMzk1OiBBZGRlZCBvcy5wYXRoLmNvbW1vbnBhdGgoKS4gSW1wbGVtZW50ZWQgaW4gcG9zaXhwYXRoIGFuZCBudHBhdGguCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFJhZmlrIERyYW91aS4KKworLSBJc3N1ZSAjMjM2MTE6IFNlcmlhbGl6aW5nIG1vcmUgImxvb2t1cGFibGUiIG9iamVjdHMgKHN1Y2ggYXMgdW5ib3VuZCBtZXRob2RzCisgIG9yIG5lc3RlZCBjbGFzc2VzKSBub3cgYXJlIHN1cHBvcnRlZCB3aXRoIHBpY2tsZSBwcm90b2NvbHMgPCA0LgorCistIElzc3VlICMxMzU4Mzogc3FsaXRlMy5Sb3cgbm93IHN1cHBvcnRzIHNsaWNlIGluZGV4aW5nLgorCistIElzc3VlICMxODQ3MzogRml4ZWQgMnRvMyBhbmQgM3RvMiBjb21wYXRpYmxlIHBpY2tsZSBtYXBwaW5ncy4gIEZpeGVkCisgIGFtYmlnaW91cyByZXZlcnNlIG1hcHBpbmdzLiAgQWRkZWQgbWFueSBuZXcgbWFwcGluZ3MuICBJbXBvcnQgbWFwcGluZyBpcyBubworICBsb25nZXIgYXBwbGllZCB0byBtb2R1bGVzIGFscmVhZHkgbWFwcGVkIHdpdGggZnVsbCBuYW1lIG1hcHBpbmcuCisKKy0gSXNzdWUgIzIzNDg1OiBzZWxlY3Quc2VsZWN0KCkgaXMgbm93IHJldHJpZWQgYXV0b21hdGljYWxseSB3aXRoIHRoZQorICByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlcgorICByYWlzZXMgYW4gZXhjZXB0aW9uLiBUaGlzIGNoYW5nZSBpcyBwYXJ0IG9mIHRoZSBQRVAgNDc1LgorCistIElzc3VlICMyMzc1MjogV2hlbiBidWlsdCBmcm9tIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciwgaW8uRmlsZUlPKCkgbm93CisgIG9ubHkgY2FsbHMgZnN0YXQoKSBvbmNlLiBCZWZvcmUgZnN0YXQoKSB3YXMgY2FsbGVkIHR3aWNlLCB3aGljaCB3YXMgbm90CisgIG5lY2Vzc2FyeS4KKworLSBJc3N1ZSAjMjM3MDQ6IGNvbGxlY3Rpb25zLmRlcXVlKCkgb2JqZWN0cyBub3cgc3VwcG9ydCBfX2FkZF9fLCBfX211bF9fLCBhbmQKKyAgX19pbXVsX18oKS4KKworLSBJc3N1ZSAjMjMxNzE6IGNzdi5Xcml0ZXIud3JpdGVyb3coKSBub3cgc3VwcG9ydHMgYXJiaXRyYXJ5IGl0ZXJhYmxlcy4KKworLSBJc3N1ZSAjMjM3NDU6IFRoZSBuZXcgZW1haWwgaGVhZGVyIHBhcnNlciBub3cgaGFuZGxlcyBkdXBsaWNhdGUgTUlNRQorICBwYXJhbWV0ZXIgbmFtZXMgd2l0aG91dCBlcnJvciwgc2ltaWxhciB0byBob3cgZ2V0X3BhcmFtIGJlaGF2ZXMuCisKKy0gSXNzdWUgIzIyMTE3OiBGaXggb3MudXRpbWUoKSwgaXQgbm93IHJvdW5kcyB0aGUgdGltZXN0YW1wIHRvd2FyZHMgbWludXMKKyAgaW5maW5pdHkgKC1pbmYpIGluc3RlYWQgb2Ygcm91bmRpbmcgdG93YXJkcyB6ZXJvLgorCistIElzc3VlICMyMzMxMDogRml4IE1hZ2ljTW9jaydzIGluaXRpYWxpemVyIHRvIHdvcmsgd2l0aCBfX21ldGhvZHNfXywganVzdAorICBsaWtlIGNvbmZpZ3VyZV9tb2NrKCkuICBQYXRjaCBieSBLYXNpYSBKYWNoaW0uCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyMzgxNzogRnJlZUJTRCBub3cgdXNlcyAiMS4wIiB0aGUgdGhlIFNPVkVSU0lPTiBhcyBvdGhlciBvcGVyYXRpbmcKKyAgc3lzdGVtcywgaW5zdGVhZCBvZiBqdXN0ICIxIi4KKworLSBJc3N1ZSAjMjM1MDE6IEFyZ3VtZW50IENsaW5pYyBub3cgZ2VuZXJhdGVzIGNvZGUgaW50byBzZXBhcmF0ZSBmaWxlcyBieSBkZWZhdWx0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjM3OTk6IEFkZGVkIHRlc3Quc3VwcG9ydC5zdGFydF90aHJlYWRzKCkgZm9yIHJ1bm5pbmcgYW5kCisgIGNsZWFuaW5nIHVwIG11bHRpcGxlIHRocmVhZHMuCisKKy0gSXNzdWUgIzIyMzkwOiB0ZXN0LnJlZ3J0ZXN0IG5vdyBlbWl0cyBhIHdhcm5pbmcgaWYgdGVtcG9yYXJ5IGZpbGVzIG9yCisgIGRpcmVjdG9yaWVzIGFyZSBsZWZ0IGFmdGVyIHJ1bm5pbmcgYSB0ZXN0LgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTgxMjg6IHB5Z2V0dGV4dCBub3cgdXNlcyBzdGFuZGFyZCArTk5OTiBmb3JtYXQgaW4gdGhlCisgIFBPVC1DcmVhdGlvbi1EYXRlIGhlYWRlci4KKworLSBJc3N1ZSAjMjM5MzU6IEFyZ3VtZW50IENsaW5pYydzIHVuZGVyc3RhbmRpbmcgb2YgZm9ybWF0IHVuaXRzCisgIGFjY2VwdGluZyBieXRlcywgYnl0ZWFycmF5cywgYW5kIGJ1ZmZlcnMgaXMgbm93IGNvbnNpc3RlbnQgd2l0aAorICBib3RoIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzIzOTQ0OiBBcmd1bWVudCBDbGluaWMgbm93IHdyYXBzIGxvbmcgaW1wbCBwcm90b3R5cGVzIGF0IGNvbHVtbiA3OC4KKworLSBJc3N1ZSAjMjA1ODY6IEFyZ3VtZW50IENsaW5pYyBub3cgZW5zdXJlcyB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IGRvY3N0cmluZ3MKKyAgaGF2ZSBzaWduYXR1cmVzLgorCistIElzc3VlICMyMzQ5MjogQXJndW1lbnQgQ2xpbmljIG5vdyBnZW5lcmF0ZXMgYXJndW1lbnQgcGFyc2luZyBjb2RlIHdpdGgKKyAgUHlBcmdfUGFyc2UgaW5zdGVhZCBvZiBQeUFyZ19QYXJzZVR1cGxlIGlmIHBvc3NpYmxlLgorCistIElzc3VlICMyMzUwMDogQXJndW1lbnQgQ2xpbmljIGlzIG5vdyBzbWFydGVyIGFib3V0IGdlbmVyYXRpbmcgdGhlICIjaWZuZGVmIgorICAoZW1wdHkpIGRlZmluaXRpb24gb2YgdGhlIG1ldGhvZGRlZiBtYWNybzogaXQncyBvbmx5IGdlbmVyYXRlZCBvbmNlLCBldmVuCisgIGlmIEFyZ3VtZW50IENsaW5pYyBwcm9jZXNzZXMgdGhlIHNhbWUgc3ltYm9sIG11bHRpcGxlIHRpbWVzLCBhbmQgaXQncyBlbWl0dGVkCisgIGF0IHRoZSBlbmQgb2YgYWxsIHByb2Nlc3NpbmcgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0IHVzZS4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzIzOTk4OiBQeUltcG9ydF9SZUluaXRMb2NrKCkgbm93IGNoZWNrcyBmb3IgbG9jayBhbGxvY2F0aW9uIGVycm9yCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMy0yOAorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzM6IEluY3JlYXNlZCBwZXJmb3JtYW5jZSBvZiBzdHJpbmcgc2VhcmNoIG9wZXJhdGlvbnMgKHN0ci5maW5kLAorICBzdHIuaW5kZXgsIHN0ci5jb3VudCwgdGhlIGluIG9wZXJhdG9yLCBzdHIuc3BsaXQsIHN0ci5wYXJ0aXRpb24pIHdpdGgKKyAgYXJndW1lbnRzIG9mIGRpZmZlcmVudCBraW5kcyAoVUNTMSwgVUNTMiwgVUNTNCkuCisKKy0gSXNzdWUgIzIzNzUzOiBQeXRob24gZG9lc24ndCBzdXBwb3J0IGFueW1vcmUgcGxhdGZvcm1zIHdpdGhvdXQgc3RhdCgpIG9yCisgIGZzdGF0KCksIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHJlcXVpcmVkLgorCistIElzc3VlICMyMzY4MTogVGhlIC1iIG9wdGlvbiBub3cgYWZmZWN0cyBjb21wYXJpc29ucyBvZiBieXRlcyB3aXRoIGludC4KKworLSBJc3N1ZSAjMjM2MzI6IE1lbW9yeXZpZXdzIG5vdyBhbGxvdyB0dXBsZSBpbmRleGluZyAoaW5jbHVkaW5nIGZvcgorICBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cykuCisKKy0gSXNzdWUgIzIzMTkyOiBGaXhlZCBnZW5lcmF0b3IgbGFtYmRhcy4gIFBhdGNoIGJ5IEJydW5vIENhdWV0LgorCistIElzc3VlICMyMzYyOTogRml4IHRoZSBkZWZhdWx0IF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHZhcmlhYmxlLXNpemVkCisgIG9iamVjdHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQyNjA6IFRoZSBncm91cGluZGV4IGF0dHJpYnV0ZSBvZiByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBvYmplY3QKKyAgbm93IGlzIG5vbi1tb2RpZmlhYmxlIG1hcHBpbmcuCisKKy0gSXNzdWUgIzIzNzkyOiBJZ25vcmUgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiB0aGUgcHlkb2MgcGFnZXIgaXMgYWN0aXZlLgorICBUaGlzIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN0YW5kYXJkIHVuaXggcGFnZXJzLCBhbmQgcHJldmVudHMKKyAgcGlwZXBhZ2VyIGZyb20gc2h1dHRpbmcgZG93biB3aGlsZSB0aGUgcGFnZXIgaXRzZWxmIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzIzNzc1OiBwcHJpbnQoKSBvZiBPcmRlcmVkRGljdCBub3cgb3V0cHV0cyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbgorICBhcyByZXByKCkuCisKKy0gSXNzdWUgIzIzNzY1OiBSZW1vdmVkIElzQmFkU3RyaW5nUHRyIGNhbGxzIGluIGN0eXBlcworCistIElzc3VlICMyMjM2NDogSW1wcm92ZWQgc29tZSByZSBlcnJvciBtZXNzYWdlcyB1c2luZyByZWdleCBmb3IgaGludHMuCisKKy0gSXNzdWUgIzIzNzQyOiBudHBhdGguZXhwYW5kdmFycygpIG5vIGxvbmdlciBsb3NlcyB1bmJhbGFuY2VkIHNpbmdsZSBxdW90ZXMuCisKKy0gSXNzdWUgIzIxNzE3OiBUaGUgemlwZmlsZS5aaXBGaWxlLm9wZW4gZnVuY3Rpb24gbm93IHN1cHBvcnRzICd4JyAoZXhjbHVzaXZlCisgIGNyZWF0aW9uKSBtb2RlLgorCistIElzc3VlICMyMTgwMjogVGhlIHJlYWRlciBpbiBCdWZmZXJlZFJXUGFpciBub3cgaXMgY2xvc2VkIGV2ZW4gd2hlbiBjbG9zaW5nCisgIHdyaXRlciBmYWlsZWQgaW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KKworLSBJc3N1ZSAjMjM2MjI6IFVua25vd24gZXNjYXBlcyBpbiByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgY29uc2lzdCBvZiBgYCdcJ2BgCisgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4KKyAgUHl0aG9uIDMuNi4KKworLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHRvIHNwZWNpZnkgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKKyAga2V5d29yZCBhcmd1bWVudC4gIHN0cmluZy5Gb3JtYXR0ZXIgbm93IGFsbG93cyB0byBzcGVjaWZ5IHRoZSAic2VsZiIgYW5kCisgIHRoZSAiZm9ybWF0X3N0cmluZyIgcGFyYW1ldGVycyBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjM1MDI6IFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBzdXBwb3J0cyBtYXBwaW5nIHByb3hpZXMuCisKKy0gSXNzdWUgIzE3NTMwOiBwcHJpbnQgbm93IHdyYXBzIGxvbmcgYnl0ZXMgb2JqZWN0cyBhbmQgYnl0ZWFycmF5cy4KKworLSBJc3N1ZSAjMjI2ODc6IEZpeGVkIHNvbWUgY29ybmVyIGNhc2VzIGluIGJyZWFraW5nIHdvcmRzIGluIHRldHh0d3JhcC4KKyAgR290IHJpZCBvZiBxdWFkcmF0aWMgY29tcGxleGl0eSBpbiBicmVha2luZyBsb25nIHdvcmRzLgorCistIElzc3VlICM0NzI3OiBUaGUgY29weSBtb2R1bGUgbm93IHVzZXMgcGlja2xlIHByb3RvY29sIDQgKFBFUCAzMTU0KSBhbmQKKyAgc3VwcG9ydHMgY29weWluZyBvZiBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aG9zZSBfX25ld19fIG1ldGhvZCB0YWtlcworICBrZXl3b3JkLW9ubHkgYXJndW1lbnRzLgorCistIElzc3VlICMyMzQ5MTogQWRkZWQgYSB6aXBhcHAgbW9kdWxlIHRvIHN1cHBvcnQgY3JlYXRpbmcgZXhlY3V0YWJsZSB6aXAKKyAgZmlsZSBhcmNoaXZlcyBvZiBQeXRob24gY29kZS4gUmVnaXN0ZXJlZCAiLnB5eiIgYW5kICIucHl6dyIgZXh0ZW5zaW9ucworICBvbiBXaW5kb3dzIGZvciB0aGVzZSBhcmNoaXZlcyAoUEVQIDQ0MSkuCisKKy0gSXNzdWUgIzIzNjU3OiBBdm9pZCBleHBsaWNpdCBjaGVja3MgZm9yIHN0ciBpbiB6aXBhcHAsIGFkZGluZyBzdXBwb3J0CisgIGZvciBwYXRobGliLlBhdGggb2JqZWN0cyBhcyBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzIzNjg4OiBBZGRlZCBzdXBwb3J0IG9mIGFyYml0cmFyeSBieXRlcy1saWtlIG9iamVjdHMgYW5kIGF2b2lkZWQKKyAgdW5uZWNlc3NhcnkgY29weWluZyBvZiBtZW1vcnl2aWV3IGluIGd6aXAuR3ppcEZpbGUud3JpdGUoKS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgV29sZmdhbmcgTWFpZXIuCisKKy0gSXNzdWUgIzIzMjUyOiBBZGRlZCBzdXBwb3J0IGZvciB3cml0aW5nIFpJUCBmaWxlcyB0byB1bnNlZWthYmxlIHN0cmVhbXMuCisKKy0gSXNzdWUgIzIzNjQ3OiBJbmNyZWFzZSBpbXBhbGliJ3MgTUFYTElORSB0byBhY2NvbW1vZGF0ZSBtb2Rlcm4gbWFpbGJveCBzaXplcy4KKworLSBJc3N1ZSAjMjM1Mzk6IElmIGJvZHkgaXMgTm9uZSwgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24ucmVxdWVzdCBub3cgc2V0cworICBDb250ZW50LUxlbmd0aCB0byAwIGZvciBQVVQsIFBPU1QsIGFuZCBQQVRDSCBoZWFkZXJzIHRvIGF2b2lkIDQxMSBlcnJvcnMgZnJvbQorICBzb21lIHdlYiBzZXJ2ZXJzLgorCistIElzc3VlICMyMjM1MTogVGhlIG5udHBsaWIuTk5UUCBjb25zdHJ1Y3RvciBubyBsb25nZXIgbGVhdmVzIHRoZSBjb25uZWN0aW9uCisgIGFuZCBzb2NrZXQgb3BlbiB1bnRpbCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYW5zIHRoZW0gdXAuICBQYXRjaCBieQorICBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyMzcwNDogY29sbGVjdGlvbnMuZGVxdWUoKSBvYmplY3RzIG5vdyBzdXBwb3J0IG1ldGhvZHMgZm9yIGluZGV4KCksCisgIGluc2VydCgpLCBhbmQgY29weSgpLiAgVGhpcyBhbGxvd3MgZGVxdWVzIHRvIGJlIHJlZ2lzdGVyZWQgYXMgYQorICBNdXRhYmxlU2VxdWVuY2UgYW5kIGl0IGltcHJvdmVzIHRoZWlyIHN1YnN0aXR1dGFibGl0eSBmb3IgbGlzdHMuCisKKy0gSXNzdWUgIzIzNzE1OiA6ZnVuYzpgc2lnbmFsLnNpZ3dhaXRpbmZvYCBhbmQgOmZ1bmM6YHNpZ25hbC5zaWd0aW1lZHdhaXRgIGFyZQorICBub3cgcmV0cmllZCB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIG5vdCBpbiB0aGUgKnNpZ3NldCogcGFyYW1ldGVyLCBpZgorICB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4gZXhjZXB0aW9uLiBzaWduYWwuc2lndGltZWR3YWl0KCkKKyAgcmVjb21wdXRlcyB0aGUgdGltZW91dCB3aXRoIGEgbW9ub3RvbmljIGNsb2NrIHdoZW4gaXQgaXMgcmV0cmllZC4KKworLSBJc3N1ZSAjMjMwMDE6IEZldyBmdW5jdGlvbnMgaW4gbW9kdWxlcyBtbWFwLCBvc3NhdWRpb2Rldiwgc29ja2V0LCBzc2wsIGFuZAorICBjb2RlY3MsIHRoYXQgYWNjZXB0ZWQgb25seSByZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3Qgbm93IGFjY2VwdCB3cml0YWJsZQorICBieXRlcy1saWtlIG9iamVjdCB0b28uCisKKy0gSXNzdWUgIzIzNjQ2OiBJZiB0aW1lLnNsZWVwKCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIHRoZSBzbGVlcCBpcyBub3cKKyAgcmV0cmllZCB3aXRoIHRoZSByZWNvbXB1dGVkIGRlbGF5LCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbgorICBleGNlcHRpb24gKFBFUCA0NzUpLgorCistIElzc3VlICMyMzEzNjogX3N0cnB0aW1lIG5vdyB1bmlmb3JtbHkgaGFuZGxlcyBhbGwgZGF5cyBpbiB3ZWVrIDAsIGluY2x1ZGluZworICBEZWMgMzAgb2YgcHJldmlvdXMgeWVhci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEppbSBDYXJyb2xsLgorCistIElzc3VlICMyMzcwMDogSXRlcmF0b3Igb2YgTmFtZWRUZW1wb3JhcnlGaWxlIG5vdyBrZWVwcyBhIHJlZmVyZW5jZSB0bworICBOYW1lZFRlbXBvcmFyeUZpbGUgaW5zdGFuY2UuICBQYXRjaCBieSBCb2h1c2xhdiBLYWJyZGEuCisKKy0gSXNzdWUgIzIyOTAzOiBUaGUgZmFrZSB0ZXN0IGNhc2UgY3JlYXRlZCBieSB1bml0dGVzdC5sb2FkZXIgd2hlbiBpdCBmYWlscworICBpbXBvcnRpbmcgYSB0ZXN0IG1vZHVsZSBpcyBub3cgcGlja2xhYmxlLgorCistIElzc3VlICMyMjE4MTogT24gTGludXgsIG9zLnVyYW5kb20oKSBub3cgdXNlcyB0aGUgbmV3IGdldHJhbmRvbSgpIHN5c2NhbGwgaWYKKyAgYXZhaWxhYmxlLCBzeXNjYWxsIGludHJvZHVjZWQgaW4gdGhlIExpbnV4IGtlcm5lbCAzLjE3LiBJdCBpcyBtb3JlIHJlbGlhYmxlCisgIGFuZCBtb3JlIHNlY3VyZSwgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIG5lZWQgb2YgYSBmaWxlIGRlc2NyaXB0b3IgYW5kIHdhaXRzCisgIHVudGlsIHRoZSBrZXJuZWwgaGFzIGVub3VnaCBlbnRyb3B5LgorCistIElzc3VlICMyMjExOiBVcGRhdGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaHR0cC5jb29raWVzLk1vcnNlbCBjbGFzcy4KKyAgU2V0dGluZyBhdHRyaWJ1dGVzIGtleSwgdmFsdWUgYW5kIGNvZGVkX3ZhbHVlIGRpcmVjdGx5IG5vdyBpcyBkZXByZWNhdGVkLgorICB1cGRhdGUoKSBhbmQgc2V0ZGVmYXVsdCgpIG5vdyB0cmFuc2Zvcm0gYW5kIGNoZWNrIGtleXMuICBDb21wYXJpbmcgZm9yCisgIGVxdWFsaXR5IG5vdyB0YWtlcyBpbnRvIGFjY291bnQgYXR0cmlidXRlcyBrZXksIHZhbHVlIGFuZCBjb2RlZF92YWx1ZS4KKyAgY29weSgpIG5vdyByZXR1cm5zIGEgTW9yc2VsLCBub3QgYSBkaWN0LiAgcmVwcigpIG5vdyBjb250YWlucyBhbGwgYXR0cmlidXRlcy4KKyAgT3B0aW1pemVkIGNoZWNraW5nIGtleXMgYW5kIHF1b3RpbmcgdmFsdWVzLiAgQWRkZWQgbmV3IHRlc3RzLgorICBPcmlnaW5hbCBwYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICMxODk4MzogQWxsb3cgc2VsZWN0aW9uIG9mIG91dHB1dCB1bml0cyBpbiB0aW1laXQuCisgIFBhdGNoIGJ5IEp1bGlhbiBHaW5kaS4KKworLSBJc3N1ZSAjMjM2MzE6IEZpeCB0cmFjZWJhY2suZm9ybWF0X2xpc3Qgd2hlbiBhIHRyYWNlYmFjayBoYXMgYmVlbiBtdXRhdGVkLgorCistIElzc3VlICMyMzU2ODogQWRkIHJkaXZtb2Qgc3VwcG9ydCB0byBNYWdpY01vY2soKSBvYmplY3RzLgorICBQYXRjaCBieSBIw6VrYW4gTMO2dmRhaGwuCisKKy0gSXNzdWUgIzIwNTI6IEFkZCBjaGFyc2V0IHBhcmFtZXRlciB0byBIdG1sRGlmZi5tYWtlX2ZpbGUoKS4KKworLSBJc3N1ZSAjMjM2Njg6IFN1cHBvcnQgb3MudHJ1bmNhdGUgYW5kIG9zLmZ0cnVuY2F0ZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMyMzEzODogRml4ZWQgcGFyc2luZyBjb29raWVzIHdpdGggYWJzZW50IGtleXMgb3IgdmFsdWVzIGluIGNvb2tpZWphci4KKyAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMjMwNTE6IG11bHRpcHJvY2Vzc2luZy5Qb29sIG1ldGhvZHMgaW1hcCgpIGFuZCBpbWFwX3Vub3JkZXJlZCgpIG5vdworICBoYW5kbGUgZXhjZXB0aW9ucyByYWlzZWQgYnkgYW4gaXRlcmF0b3IuICBQYXRjaCBieSBBbG9uIERpYW1hbnQgYW5kIERhdmluCisgIFBvdHRzLgorCistIElzc3VlICMyMzU4MTogQWRkIG1hdG11bCBzdXBwb3J0IHRvIE1hZ2ljTW9jay4gUGF0Y2ggYnkgSMOla2FuIEzDtnZkYWhsLgorCistIElzc3VlICMyMzU2NjogZW5hYmxlKCksIHJlZ2lzdGVyKCksIGR1bXBfdHJhY2ViYWNrKCkgYW5kCisgIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgZnVuY3Rpb25zIG9mIGZhdWx0aGFuZGxlciBub3cgYWNjZXB0IGZpbGUKKyAgZGVzY3JpcHRvcnMuIFBhdGNoIGJ5IFdlaSBXdS4KKworLSBJc3N1ZSAjMjI5Mjg6IERpc2FibGVkIEhUVFAgaGVhZGVyIGluamVjdGlvbnMgaW4gaHR0cC5jbGllbnQuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzIzNjE1OiBNb2R1bGVzIGJ6MiwgdGFyZmlsZSBhbmQgdG9rZW5pemUgbm93IGNhbiBiZSByZWxvYWRlZCB3aXRoCisgIGltcC5yZWxvYWQoKS4gIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgorCistIElzc3VlICMyMzYwNTogb3Mud2FsaygpIG5vdyBjYWxscyBvcy5zY2FuZGlyKCkgaW5zdGVhZCBvZiBvcy5saXN0ZGlyKCkuCisgIFRoZSB1c2FnZSBvZiBvcy5zY2FuZGlyKCkgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIG9zLnN0YXQoKS4KKyAgSW5pdGlhbCBwYXRjaCB3cml0dGVuIGJ5IEJlbiBIb3l0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjM1ODU6IG1ha2UgcGF0Y2hjaGVjayB3aWxsIGVuc3VyZSB0aGUgaW50ZXJwcmV0ZXIgaXMgYnVpbHQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyMzU4MzogQWRkZWQgdGVzdHMgZm9yIHN0YW5kYXJkIElPIHN0cmVhbXMgaW4gSURMRS4KKworLSBJc3N1ZSAjMjIyODk6IFByZXZlbnQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIGR1ZSB0byBmdHAgY29ubmVjdGlvbiB0aW1lb3V0LgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjI4MjY6IFRoZSByZXN1bHQgb2Ygb3BlbigpIGluIFRvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkgaXMgbm93IGJldHRlcgorICBjb21wYXRpYmxlIHdpdGggcmVndWxhciBmaWxlcyAoaW4gcGFydGljdWxhciBpdCBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQKKyAgbWFuYWdlbWVudCBwcm90b2NvbCkuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41IGFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTAzLTA5CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzU3MTogUHlPYmplY3RfQ2FsbCgpIGFuZCBQeUNGdW5jdGlvbl9DYWxsKCkgbm93IHJhaXNlIGEgU3lzdGVtRXJyb3IKKyAgaWYgYSBmdW5jdGlvbiByZXR1cm5zIGEgcmVzdWx0IGFuZCByYWlzZXMgYW4gZXhjZXB0aW9uLiBUaGUgU3lzdGVtRXJyb3IgaXMKKyAgY2hhaW5lZCB0byB0aGUgcHJldmlvdXMgZXhjZXB0aW9uLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIyNTI0OiBOZXcgb3Muc2NhbmRpcigpIGZ1bmN0aW9uLCBwYXJ0IG9mIHRoZSBQRVAgNDcxOiAib3Muc2NhbmRpcigpCisgIGZ1bmN0aW9uIC0tIGEgYmV0dGVyIGFuZCBmYXN0ZXIgZGlyZWN0b3J5IGl0ZXJhdG9yIi4gUGF0Y2ggd3JpdHRlbiBieSBCZW4KKyAgSG95dC4KKworLSBJc3N1ZSAjMjMxMDM6IFJlZHVjZWQgdGhlIG1lbW9yeSBjb25zdW1wdGlvbiBvZiBJUHY0QWRkcmVzcyBhbmQgSVB2NkFkZHJlc3MuCisKKy0gSXNzdWUgIzIxNzkzOiBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyIGFnYWluIGxvZ3MgcmVzcG9uc2UgY29kZSBhcyBudW1lcmljLAorICBub3QgYXMgc3RyaW5naWZpZWQgZW51bS4gIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzIzNDc2OiBJbiB0aGUgc3NsIG1vZHVsZSwgZW5hYmxlIE9wZW5TU0wncyBYNTA5X1ZfRkxBR19UUlVTVEVEX0ZJUlNUCisgIGZsYWcgb24gY2VydGlmaWNhdGUgc3RvcmVzIHdoZW4gaXQgaXMgYXZhaWxhYmxlLgorCistIElzc3VlICMyMzU3NjogQXZvaWQgc3RhbGxpbmcgaW4gU1NMIHJlYWRzIHdoZW4gRU9GIGhhcyBiZWVuIHJlYWNoZWQgaW4gdGhlCisgIFNTTCBsYXllciBidXQgdGhlIHVuZGVybHlpbmcgY29ubmVjdGlvbiBoYXNuJ3QgYmVlbiBjbG9zZWQuCisKKy0gSXNzdWUgIzIzNTA0OiBBZGRlZCBhbiBfX2FsbF9fIHRvIHRoZSB0eXBlcyBtb2R1bGUuCisKKy0gSXNzdWUgIzIzNTYzOiBPcHRpbWl6ZWQgdXRpbGl0eSBmdW5jdGlvbnMgaW4gdXJsbGliLnBhcnNlLgorCistIElzc3VlICM3ODMwOiBGbGF0dGVuIG5lc3RlZCBmdW5jdG9vbHMucGFydGlhbC4KKworLSBJc3N1ZSAjMjAyMDQ6IEFkZGVkIHRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSB0byBfdGtpbnRlciBjbGFzc2VzLgorCistIElzc3VlICMxOTk4MDogSW1wcm92ZWQgaGVscCgpIGZvciBub24tcmVjb2duaXplZCBzdHJpbmdzLiAgaGVscCgnJykgbm93CisgIHNob3dzIHRoZSBoZWxwIG9uIHN0ci4gIGhlbHAoJ2hlbHAnKSBub3cgc2hvd3MgdGhlIGhlbHAgb24gaGVscCgpLgorICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIExhd3JlbmNlLgorCistIElzc3VlICMyMzUyMTogQ29ycmVjdGVkIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRpbWVkZWx0YSBkaXZpc2lvbi4KKworICogRWxpbWluYXRlZCBPdmVyZmxvd0Vycm9yIGZyb20gdGltZWRlbHRhICogZmxvYXQgZm9yIHNvbWUgZmxvYXRzOworICogQ29ycmVjdGVkIHJvdW5kaW5nIGluIHRpbWVkbHRhIHRydWUgZGl2aXNpb24uCisKKy0gSXNzdWUgIzIxNjE5OiBQb3BlbiBvYmplY3RzIG5vIGxvbmdlciBsZWF2ZSBhIHpvbWJpZSBhZnRlciBleGl0IGluIHRoZSB3aXRoCisgIHN0YXRlbWVudCBpZiB0aGUgcGlwZSB3YXMgYnJva2VuLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjI5MzY6IE1ha2UgaXQgcG9zc2libGUgdG8gc2hvdyBsb2NhbCB2YXJpYWJsZXMgaW4gdHJhY2ViYWNrcyBmb3IKKyAgYm90aCB0aGUgdHJhY2ViYWNrIG1vZHVsZSBhbmQgdW5pdHRlc3QuCisKKy0gSXNzdWUgIzE1OTU1OiBBZGQgYW4gb3B0aW9uIHRvIGxpbWl0IHRoZSBvdXRwdXQgc2l6ZSBpbiBiejIuZGVjb21wcmVzcygpLgorICBQYXRjaCBieSBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICM2NjM5OiBNb2R1bGUtbGV2ZWwgdHVydGxlIGZ1bmN0aW9ucyBubyBsb25nZXIgcmFpc2UgVGNsRXJyb3IgYWZ0ZXIKKyAgY2xvc2luZyB0aGUgd2luZG93LgorCistIElzc3VlcyAjODE0MjUzLCAjOTE3OTogR3JvdXAgcmVmZXJlbmNlcyBhbmQgY29uZGl0aW9uYWwgZ3JvdXAgcmVmZXJlbmNlcyBub3cKKyAgd29yayBpbiBsb29rYmVoaW5kIGFzc2VydGlvbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjMjMyMTU6IE11bHRpYnl0ZSBjb2RlY3Mgd2l0aCBjdXN0b20gZXJyb3IgaGFuZGxlcnMgdGhhdCBpZ25vcmVzIGVycm9ycworICBjb25zdW1lZCB0b28gbXVjaCBtZW1vcnkgYW5kIHJhaXNlZCBTeXN0ZW1FcnJvciBvciBNZW1vcnlFcnJvci4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgQWxla3NpIFRvcmhhbW8uCisKKy0gSXNzdWUgIzU3MDA6IGlvLkZpbGVJTygpIGNhbGxlZCBmbHVzaCgpIGFmdGVyIGNsb3NpbmcgdGhlIGZpbGUuCisgIGZsdXNoKCkgd2FzIG5vdCBjYWxsZWQgaW4gY2xvc2UoKSBpZiBjbG9zZWZkPUZhbHNlLgorCistIElzc3VlICMyMzM3NDogRml4ZWQgcHlkb2MgZmFpbHVyZSB3aXRoIG5vbi1BU0NJSSBmaWxlcyB3aGVuIHN0ZG91dCBlbmNvZGluZworICBkaWZmZXJzIGZyb20gZmlsZSBzeXN0ZW0gZW5jb2RpbmcgKGUuZy4gb24gTWFjIE9TKS4KKworLSBJc3N1ZSAjMjM0ODE6IFJlbW92ZSBSQzQgZnJvbSB0aGUgU1NMIG1vZHVsZSdzIGRlZmF1bHQgY2lwaGVyIGxpc3QuCisKKy0gSXNzdWUgIzIxNTQ4OiBGaXggcHlkb2Muc3lub3BzaXMoKSBhbmQgcHlkb2MuYXByb3BvcygpIG9uIG1vZHVsZXMgd2l0aCBlbXB0eQorICBkb2NzdHJpbmdzLgorCistIElzc3VlICMyMjg4NTogRml4ZWQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGRibS5kdW1iCisgIG1vZHVsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjMyMzk6IHNzbC5tYXRjaF9ob3N0bmFtZSgpIG5vdyBzdXBwb3J0cyBtYXRjaGluZyBvZiBJUCBhZGRyZXNzZXMuCisKKy0gSXNzdWUgIzIzMTQ2OiBGaXggbWlzaGFuZGxpbmcgb2YgYWJzb2x1dGUgV2luZG93cyBwYXRocyB3aXRoIGZvcndhcmQKKyAgc2xhc2hlcyBpbiBwYXRobGliLgorCistIElzc3VlICMyMzA5NjogUGlja2xlIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0cyB3aXRoIHByb3RvY29sIDAgbm93IGlzIHRoZSBzYW1lCisgIGZvciBib3RoIFB5dGhvbiBhbmQgQyBpbXBsZW1lbnRhdGlvbnMuCisKKy0gSXNzdWUgIzE5MTA1OiBwcHJpbnQgbm93IG1vcmUgZWZmaWNpZW50bHkgdXNlcyBmcmVlIHNwYWNlIGF0IHRoZSByaWdodC4KKworLSBJc3N1ZSAjMTQ5MTA6IEFkZCBhbGxvd19hYmJyZXYgcGFyYW1ldGVyIHRvIGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyLiBQYXRjaCBieQorICBKb25hdGhhbiBQYXVnaCwgU3RldmVuIEJldGhhcmQsIHBhdWwgajMgYW5kIERhbmllbCBFcmlrc3Nvbi4KKworLSBJc3N1ZSAjMjE3MTc6IHRhcmZpbGUub3BlbigpIG5vdyBzdXBwb3J0cyAneCcgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZS4KKworLSBJc3N1ZSAjMjMzNDQ6IG1hcnNoYWwuZHVtcHMoKSBpcyBub3cgMjAtMjUlIGZhc3RlciBvbiBhdmVyYWdlLgorCistIElzc3VlICMyMDQxNjogbWFyc2hhbC5kdW1wcygpIHdpdGggcHJvdG9jb2xzIDMgYW5kIDQgaXMgbm93IDQwLTUwJSBmYXN0ZXIgb24KKyAgYXZlcmFnZS4KKworLSBJc3N1ZSAjMjM0MjE6IEZpeGVkIGNvbXByZXNzaW9uIGluIHRhcmZpbGUgQ0xJLiAgUGF0Y2ggYnkgd2R2NDc1OGguCisKKy0gSXNzdWUgIzIzMzY3OiBGaXggcG9zc2libGUgb3ZlcmZsb3dzIGluIHRoZSB1bmljb2RlZGF0YSBtb2R1bGUuCisKKy0gSXNzdWUgIzIzMzYxOiBGaXggcG9zc2libGUgb3ZlcmZsb3cgaW4gV2luZG93cyBzdWJwcm9jZXNzIGNyZWF0aW9uIGNvZGUuCisKKy0gbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyIG5vdyB0YWtlcyBhIHJlc3BlY3RfaGFuZGxlcl9sZXZlbCBrZXl3b3JkCisgIGFyZ3VtZW50IHdoaWNoLCBpZiBzZXQgdG8gVHJ1ZSwgd2lsbCBwYXNzIG1lc3NhZ2VzIHRvIGhhbmRsZXJzIHRha2luZyBoYW5kbGVyCisgIGxldmVscyBpbnRvIGFjY291bnQuCisKKy0gSXNzdWUgIzE5NzA1OiB0dXJ0bGVkZW1vIG5vdyBoYXMgYSB2aXN1YWwgc29ydGluZyBhbGdvcml0aG0gZGVtby4gIE9yaWdpbmFsCisgIHBhdGNoIGZyb20gSmFzb24gWWVvLgorCistIElzc3VlICMyMzgwMTogRml4IGlzc3VlIHdoZXJlIGNnaS5GaWVsZFN0b3JhZ2UgZGlkIG5vdCBhbHdheXMgaWdub3JlIHRoZQorICBlbnRpcmUgcHJlYW1ibGUgdG8gYSBtdWx0aXBhcnQgYm9keS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzIzNDQ1OiBweWRlYnVnIGJ1aWxkcyBub3cgdXNlICJnY2MgLU9nIiB3aGVyZSBwb3NzaWJsZSwgdG8gbWFrZQorICB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgZmFzdGVyLgorCistIElzc3VlICMyMzY4NjogVXBkYXRlIE9TIFggMTAuNSBpbnN0YWxsZXIgYnVpbGQgdG8gdXNlIE9wZW5TU0wgMS4wLjJhLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjAyMDQ6IERlcHJlY2F0aW9uIHdhcm5pbmcgaXMgbm93IHJhaXNlZCBmb3IgYnVpbHRpbiB0eXBlIHdpdGhvdXQgdGhlCisgIF9fbW9kdWxlX18gYXR0cmlidXRlLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzIzNDY1OiBJbXBsZW1lbnQgUEVQIDQ4NiAtIE1ha2UgdGhlIFB5dGhvbiBMYXVuY2hlciBhd2FyZSBvZiB2aXJ0dWFsCisgIGVudmlyb25tZW50cy4gUGF0Y2ggYnkgUGF1bCBNb29yZS4KKworLSBJc3N1ZSAjMjM0Mzc6IE1ha2UgdXNlciBzY3JpcHRzIGRpcmVjdG9yeSB2ZXJzaW9uZWQgb24gV2luZG93cy4gUGF0Y2ggYnkgUGF1bAorICBNb29yZS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUgYWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDItMDgKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzMjg1OiBQRVAgNDc1IC0gRUlOVFIgaGFuZGxpbmcuCisKIC0gSXNzdWUgIzIyNzM1OiBGaXggbWFueSBlZGdlIGNhc2VzIChpbmNsdWRpbmcgY3Jhc2hlcykgaW52b2x2aW5nIGN1c3RvbSBtcm8oKQogICBpbXBsZW1lbnRhdGlvbnMuCiAKQEAgLTYzNSwxNyArMTUwOCw0NiBAQAogLSBJc3N1ZSAjMjEyOTU6IFJldmVydCBzb21lIGNoYW5nZXMgKGlzc3VlICMxNjc5NSkgdG8gQVNUIGxpbmUgbnVtYmVycyBhbmQKICAgY29sdW1uIG9mZnNldHMgdGhhdCBjb25zdGl0dXRlZCBhIHJlZ3Jlc3Npb24uCiAKKy0gSXNzdWUgIzIyOTg2OiBBbGxvdyBjaGFuZ2luZyBhbiBvYmplY3QncyBfX2NsYXNzX18gYmV0d2VlbiBhIGR5bmFtaWMgdHlwZSBhbmQKKyAgc3RhdGljIHR5cGUgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMTU4NTk6IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKSwgUHlVbmljb2RlX0VuY29kZU1CQ1MoKSBhbmQKKyAgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKCkgbm93IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhbgorICBVbmljb2RlIG9iamVjdC4gRm9yIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKSwgaXQgd2FzIGFscmVhZHkgdGhlIGNhc2Ugb24KKyAgcGxhdGZvcm1zIG90aGVyIHRoYW4gV2luZG93cy4gUGF0Y2ggd3JpdHRlbiBieSBDYW1wYmVsbCBCYXJ0b24uCisKIC0gSXNzdWUgIzIxNDA4OiBUaGUgZGVmYXVsdCBfX25lX18oKSBub3cgcmV0dXJucyBOb3RJbXBsZW1lbnRlZCBpZiBfX2VxX18oKQogICByZXR1cm5lZCBOb3RJbXBsZW1lbnRlZC4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCiAKIC0gSXNzdWUgIzIzMzIxOiBGaXhlZCBhIGNyYXNoIGluIHN0ci5kZWNvZGUoKSB3aGVuIGVycm9yIGhhbmRsZXIgcmV0dXJuZWQKICAgcmVwbGFjbWVudCBzdHJpbmcgbG9uZ2VyIHRoYW4gbWFpbGZvcm1lZCBpbnB1dCBkYXRhLgogCistIElzc3VlICMyMjI4NjogVGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVycyBub3cgd29ya3Mgd2l0aAorICBkZWNvZGluZyBhbmQgdHJhbnNsYXRpbmcuCisKKy0gSXNzdWUgIzIzMjUzOiBEZWxheS1sb2FkIFNoZWxsRXhlY3V0ZVtBV10gaW4gb3Muc3RhcnRmaWxlIGZvciByZWR1Y2VkCisgIHN0YXJ0dXAgb3ZlcmhlYWQgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjIwMzg6IHB5YXRvbWljLmggbm93IHVzZXMgc3RkYXRvbWljLmggb3IgR0NDIGJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IKKyAgYXRvbWljIG1lbW9yeSBhY2Nlc3MgaWYgYXZhaWxhYmxlLiBQYXRjaCB3cml0dGVuIGJ5IFZpdG9yIGRlIExpbWEgYW5kIEd1c3Rhdm8KKyAgVGVtcGxlLgorCistIElzc3VlICMyMDI4NDogJS1pbnRlcnBvbGF0aW9uIChha2EgcHJpbnRmKSBmb3JtYXR0aW5nIGFkZGVkIGZvciBieXRlcyBhbmQKKyAgYnl0ZWFycmF5LgorCiAtIElzc3VlICMyMzA0ODogRml4IGp1bXBpbmcgb3V0IG9mIGFuIGluZmluaXRlIHdoaWxlIGxvb3AgaW4gdGhlIHBkYi4KIAogLSBJc3N1ZSAjMjAzMzU6IGJ5dGVzIGNvbnN0cnVjdG9yIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZW5jb2Rpbmcgb3IgZXJyb3JzCiAgIGlzIHNwZWNpZmllZCB3aXRoIG5vbi1zdHJpbmcgYXJndW1lbnQuICBCYXNlZCBvbiBwYXRjaCBieSBSZW5hdWQgQmxhbmNoLgogCistIElzc3VlICMyMjgzNDogSWYgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZW5kcyB1cCBiZWluZyBzZXQgdG8gYQorICBub24tZXhpc3RlbnQgZGlyZWN0b3J5IHRoZW4gaW1wb3J0IHdpbGwgbm8gbG9uZ2VyIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yLgorCistIElzc3VlICMyMjg2OTogTW92ZSB0aGUgaW50ZXJwcmV0ZXIgc3RhcnR1cCAmIHNodXRkb3duIGNvZGUgdG8gYSBuZXcKKyAgZGVkaWNhdGVkIHB5bGlmZWN5Y2xlLmMgbW9kdWxlCisKKy0gSXNzdWUgIzIyODQ3OiBJbXByb3ZlIG1ldGhvZCBjYWNoZSBlZmZpY2llbmN5LgorCiAtIElzc3VlICMyMjMzNTogRml4IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIGVubGFyZ2UgYSBieXRlYXJyYXkgdG8gMHg3ZmZmZmZmZgogICBieXRlcyBvbiBhIDMyLWJpdCBwbGF0Zm9ybS4KIApAQCAtNjU1LDEyICsxNTU3LDI4IEBACiAtIElzc3VlICMyMjY0MzogRml4IGludGVnZXIgb3ZlcmZsb3cgaW4gVW5pY29kZSBjYXNlIG9wZXJhdGlvbnMgKHVwcGVyLCBsb3dlciwKICAgdGl0bGUsIHN3YXBjYXNlLCBjYXNlZm9sZCkuCiAKKy0gSXNzdWUgIzE3NjM2OiBDaXJjdWxhciBpbXBvcnRzIGludm9sdmluZyByZWxhdGl2ZSBpbXBvcnRzIGFyZSBub3cKKyAgc3VwcG9ydGVkLgorCiAtIElzc3VlICMyMjYwNDogRml4IGFzc2VydGlvbiBlcnJvciBpbiBkZWJ1ZyBtb2RlIHdoZW4gZGl2aWRpbmcgYSBjb21wbGV4CiAgIG51bWJlciBieSAobmFuKzBqKS4KIAorLSBJc3N1ZSAjMjEwNTI6IERvIG5vdCByYWlzZSBJbXBvcnRXYXJuaW5nIHdoZW4gc3lzLnBhdGhfaG9va3Mgb3Igc3lzLm1ldGFfcGF0aAorICBhcmUgc2V0IHRvIE5vbmUuCisKKy0gSXNzdWUgIzE2NTE4OiBVc2UgJ2J5dGVzLWxpa2Ugb2JqZWN0IHJlcXVpcmVkJyBpbiBlcnJvciBtZXNzYWdlcyB0aGF0CisgIHByZXZpb3VzbHkgdXNlZCB0aGUgZmFyIG1vcmUgY3J5cHRpYyAiJ3gnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlcgorICBwcm90b2NvbC4KKwogLSBJc3N1ZSAjMjI0NzA6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaXNzdWVzIGluICJiYWNrc2xhc2hyZXBsYWNlIiwKICAgInhtbGNoYXJyZWZyZXBsYWNlIiwgYW5kICJzdXJyb2dhdGVwYXNzIiBlcnJvciBoYW5kbGVycy4KIAorLSBJc3N1ZSAjMjI1NDA6IHNwZWVkIHVwIGBQeU9iamVjdF9Jc0luc3RhbmNlYCBhbmQgYFB5T2JqZWN0X0lzU3ViY2xhc3NgIGluIHRoZQorICBjb21tb24gY2FzZSB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzIG1ldGFjbGFzcyBgdHlwZWAuCisKKy0gSXNzdWUgIzE4NzExOiBBZGQgYSBuZXcgYFB5RXJyX0Zvcm1hdFZgIGZ1bmN0aW9uLCBzaW1pbGFyIHRvIGBQeUVycl9Gb3JtYXRgCisgIGJ1dCBhY2NlcHRpbmcgYSBgdmFfbGlzdGAgYXJndW1lbnQuCisKIC0gSXNzdWUgIzIyNTIwOiBGaXggb3ZlcmZsb3cgY2hlY2tpbmcgd2hlbiBnZW5lcmF0aW5nIHRoZSByZXByIG9mIGEgdW5pY29kZQogICBvYmplY3QuCiAKQEAgLTY2OCw2ICsxNTg2LDEzOCBAQAogCiAtIElzc3VlICMyMjUxODogRml4IGludGVnZXIgb3ZlcmZsb3cgaXNzdWVzIGluIGxhdGluLTEgZW5jb2RpbmcuCiAKKy0gSXNzdWUgIzE2MzI0OiBfY2hhcnNldCBwYXJhbWV0ZXIgb2YgTUlNRVRleHQgbm93IGFsc28gYWNjZXB0cworICBlbWFpbC5jaGFyc2V0LkNoYXJzZXQgaW5zdGFuY2VzLiBJbml0aWFsIHBhdGNoIGJ5IENsYXVkZSBQYXJvei4KKworLSBJc3N1ZSAjMTc2NDI4NjogRml4IGluc3BlY3QuZ2V0c291cmNlKCkgdG8gc3VwcG9ydCBkZWNvcmF0ZWQgZnVuY3Rpb25zLgorICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzE4NTU0OiBvcy5fX2FsbF9fIGluY2x1ZGVzIHBvc2l4IGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjEzOTE6IFVzZSBvcy5wYXRoLmFic3BhdGggaW4gdGhlIHNodXRpbCBtb2R1bGUuCisKKy0gSXNzdWUgIzExNDcxOiBhdm9pZCBnZW5lcmF0aW5nIGEgSlVNUF9GT1JXQVJEIGluc3RydWN0aW9uIGF0IHRoZSBlbmQgb2YKKyAgYW4gaWYtYmxvY2sgaWYgdGhlcmUgaXMgbm8gZWxzZS1jbGF1c2UuICBPcmlnaW5hbCBwYXRjaCBieSBFdWdlbmUgVG9kZXIuCisKKy0gSXNzdWUgIzIyMjE1OiBOb3cgVmFsdWVFcnJvciBpcyByYWlzZWQgaW5zdGVhZCBvZiBUeXBlRXJyb3Igd2hlbiBzdHIgb3IgYnl0ZXMKKyAgYXJndW1lbnQgY29udGFpbnMgbm90IHBlcm1pdHRlZCBudWxsIGNoYXJhY3RlciBvciBieXRlLgorCistIElzc3VlICMyMjI1ODogRml4IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBzZXRfaW5oZXJpdGFibGUoKSBvbiBJbGx1bW9zLgorICBUaGlzIHBsYXRmb3JtIGV4cG9zZXMgdGhlIGZ1bmN0aW9uIGBgaW9jdGwoRklPQ0xFWClgYCwgYnV0IGNhbGxpbmcgaXQgZmFpbHMKKyAgd2l0aCBlcnJubyBpcyBFTk9UVFk6ICJJbmFwcHJvcHJpYXRlIGlvY3RsIGZvciBkZXZpY2UiLiBzZXRfaW5oZXJpdGFibGUoKQorICBub3cgZmFsbHMgYmFjayB0byB0aGUgc2xvd2VyIGBgZmNudGwoKWBgIChgYEZfR0VURkRgYCBhbmQgdGhlbiBgYEZfU0VURkRgYCkuCisKKy0gSXNzdWUgIzIxMzg5OiBEaXNwbGF5aW5nIHRoZSBfX3F1YWxuYW1lX18gb2YgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gaW4gdGhlCisgIHJlcHIgb2YgYSBib3VuZCBtZXRob2QuCisKKy0gSXNzdWUgIzIyMjA2OiBVc2luZyBwdGhyZWFkLCBQeVRocmVhZF9jcmVhdGVfa2V5KCkgbm93IHNldHMgZXJybm8gdG8gRU5PTUVNCisgIGFuZCByZXR1cm5zIC0xIChlcnJvcikgb24gaW50ZWdlciBvdmVyZmxvdy4KKworLSBJc3N1ZSAjMjAxODQ6IEFyZ3VtZW50IENsaW5pYyBiYXNlZCBzaWduYXR1cmUgaW50cm9zcGVjdGlvbiBhZGRlZCBmb3IKKyAgMzAgb2YgdGhlIGJ1aWx0aW4gZnVuY3Rpb25zLgorCistIElzc3VlICMyMjExNjogQyBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgKG9mIHRoZSAnYnVpbHRpbl9mdW5jdGlvbl9vcl9tZXRob2QnCisgIHR5cGUpIGNhbiBub3cgYmUgd2Vha3JlZidlZC4gIFBhdGNoIGJ5IFdlaSBXdS4KKworLSBJc3N1ZSAjMjIwNzc6IEltcHJvdmUgaW5kZXggZXJyb3IgbWVzc2FnZXMgZm9yIGJ5dGVhcnJheXMsIGJ5dGVzLCBsaXN0cywKKyAgYW5kIHR1cGxlcyBieSBhZGRpbmcgJ29yIHNsaWNlcycuIEFkZGVkICcsIG5vdCA8dHlwZW5hbWUnIGZvciBieXRlYXJyYXlzLgorICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIwMTc5OiBBcHBseSBBcmd1bWVudCBDbGluaWMgdG8gYnl0ZXMgYW5kIGJ5dGVhcnJheS4KKyAgUGF0Y2ggYnkgVGFsIEVpbmF0LgorCistIElzc3VlICMyMjA4MjogQ2xlYXIgaW50ZXJuZWQgc3RyaW5ncyBpbiBzbG90ZGVmcy4KKworLSBVcGdyYWRlIFVuaWNvZGUgZGF0YWJhc2UgdG8gVW5pY29kZSA3LjAuMC4KKworLSBJc3N1ZSAjMjE4OTc6IEZpeCBhIGNyYXNoIHdpdGggdGhlIGZfbG9jYWxzIGF0dHJpYnV0ZSB3aXRoIGNsb3N1cmUKKyAgdmFyaWFibGVzIHdoZW4gZnJhbWUuY2xlYXIoKSBoYXMgYmVlbiBjYWxsZWQuCisKKy0gSXNzdWUgIzIxMjA1OiBBZGQgYSBuZXcgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgdG8gZ2VuZXJhdG9yLCB0aGUKKyAgcXVhbGlmaWVkIG5hbWUsIGFuZCB1c2UgaXQgaW4gdGhlIHJlcHJlc2VudGF0aW9uIG9mIGEgZ2VuZXJhdG9yCisgIChgYHJlcHIoZ2VuKWBgKS4gVGhlIGRlZmF1bHQgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yIChgYF9fbmFtZV9fYGAgYXR0cmlidXRlKQorICBpcyBub3cgZ2V0IGZyb20gdGhlIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGNvZGUuIFVzZSBgYGdlbi5naV9jb2RlLmNvX25hbWVgYAorICB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGNvZGUuCisKKy0gSXNzdWUgIzIxNjY5OiBXaXRoIHRoZSBhaWQgb2YgaGV1cmlzdGljcyBpbiBTeW50YXhFcnJvci5fX2luaXRfXywgdGhlCisgIHBhcnNlciBub3cgYXR0ZW1wdHMgdG8gZ2VuZXJhdGUgbW9yZSBtZWFuaW5nZnVsIChvciBhdCBsZWFzdCBtb3JlIHNlYXJjaAorICBlbmdpbmUgZnJpZW5kbHkpIGVycm9yIG1lc3NhZ2VzIHdoZW4gImV4ZWMiIGFuZCAicHJpbnQiIGFyZSB1c2VkIGFzCisgIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzIxNjQyOiBJZiB0aGUgY29uZGl0aW9uYWwgaWYtZWxzZSBleHByZXNzaW9uLCBhbGxvdyBhbiBpbnRlZ2VyIHdyaXR0ZW4KKyAgd2l0aCBubyBzcGFjZSBiZXR3ZWVuIGl0c2VsZiBhbmQgdGhlIGBgZWxzZWBgIGtleXdvcmQgKGUuZy4gYGBUcnVlIGlmIDQyZWxzZQorICBGYWxzZWBgKSB0byBiZSB2YWxpZCBzeW50YXguCisKKy0gSXNzdWUgIzIxNTIzOiBGaXggb3Zlci1wZXNzaW1pc3RpYyBjb21wdXRhdGlvbiBvZiB0aGUgc3RhY2sgZWZmZWN0IG9mCisgIHNvbWUgb3Bjb2RlcyBpbiB0aGUgY29tcGlsZXIuICBUaGlzIGFsc28gZml4ZXMgYSBxdWFkcmF0aWMgY29tcGlsYXRpb24KKyAgdGltZSBpc3N1ZSBub3RpY2VhYmxlIHdoZW4gY29tcGlsaW5nIGNvZGUgd2l0aCBhIGxhcmdlIG51bWJlciBvZiAiYW5kIgorICBhbmQgIm9yIiBvcGVyYXRvcnMuCisKKy0gSXNzdWUgIzIxNDE4OiBGaXggYSBjcmFzaCBpbiB0aGUgYnVpbHRpbiBmdW5jdGlvbiBzdXBlcigpIHdoZW4gY2FsbGVkIHdpdGhvdXQKKyAgYXJndW1lbnQgYW5kIHdpdGhvdXQgY3VycmVudCBmcmFtZSAoZXg6IGVtYmVkZGVkIFB5dGhvbikuCisKKy0gSXNzdWUgIzIxNDI1OiBGaXggZmx1c2hpbmcgb2Ygc3RhbmRhcmQgc3RyZWFtcyBpbiB0aGUgaW50ZXJhY3RpdmUKKyAgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzIxNDM1OiBJbiByYXJlIGNhc2VzLCB3aGVuIHJ1bm5pbmcgZmluYWxpemVycyBvbiBvYmplY3RzIGluIGN5Y2xpYworICB0cmFzaCBhIGJhZCBwb2ludGVyIGRlcmVmZXJlbmNlIGNvdWxkIG9jY3VyIGR1ZSB0byBhIHN1YnRsZSBmbGF3IGluCisgIGludGVybmFsIGl0ZXJhdGlvbiBsb2dpYy4KKworLSBJc3N1ZSAjMjEzNzc6IFB5Qnl0ZXNfQ29uY2F0KCkgbm93IHRyaWVzIHRvIGNvbmNhdGVuYXRlIGluLXBsYWNlIHdoZW4gdGhlCisgIGZpcnN0IGFyZ3VtZW50IGhhcyBhIHJlZmVyZW5jZSBjb3VudCBvZiAxLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjMjAzNTU6IC1XIGNvbW1hbmQgbGluZSBvcHRpb25zIG5vdyBoYXZlIGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoZQorICBQWVRIT05XQVJOSU5HUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIFBhdGNoIGJ5IEFyZnJldmVyLgorCistIElzc3VlICMyMTI3NDogRGVmaW5lIFBBVEhfTUFYIGZvciBHTlUvSHVyZCBpbiBQeXRob24vcHl0aG9ucnVuLmMuCisKKy0gSXNzdWUgIzIwOTA0OiBTdXBwb3J0IHNldHRpbmcgRlBVIHByZWNpc2lvbiBvbiBtNjhrLgorCistIElzc3VlICMyMTIwOTogRml4IHNlbmRpbmcgdHVwbGVzIHRvIGN1c3RvbSBnZW5lcmF0b3Igb2JqZWN0cyB3aXRoIHRoZSB5aWVsZAorICBmcm9tIHN5bnRheC4KKworLSBJc3N1ZSAjMjExOTM6IHBvdyhhLCBiLCBjKSBub3cgcmFpc2VzIFZhbHVlRXJyb3IgcmF0aGVyIHRoYW4gVHlwZUVycm9yIHdoZW4gYgorICBpcyBuZWdhdGl2ZS4gIFBhdGNoIGJ5IEpvc2ggUm9zZW5iZXJnLgorCistIFBFUCA0NjUgYW5kIElzc3VlICMyMTE3NjogQWRkIHRoZSAnQCcgb3BlcmF0b3IgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMjExMzQ6IEZpeCBzZWdmYXVsdCB3aGVuIHN0ciBpcyBjYWxsZWQgb24gYW4gdW5pbml0aWFsaXplZAorICBVbmljb2RlRW5jb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgb3IgVW5pY29kZVRyYW5zbGF0ZUVycm9yIG9iamVjdC4KKworLSBJc3N1ZSAjMTk1Mzc6IEZpeCBQeVVuaWNvZGVfREFUQSgpIGFsaWdubWVudCB1bmRlciBtNjhrLiAgUGF0Y2ggYnkKKyAgQW5kcmVhcyBTY2h3YWIuCisKKy0gSXNzdWUgIzIwOTI5OiBBZGQgYSB0eXBlIGNhc3QgdG8gYXZvaWQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBudW1iZXIuCisKKy0gSXNzdWUgIzIwNzMxOiBQcm9wZXJseSBwb3NpdGlvbiBpbiBzb3VyY2UgY29kZSBmaWxlcyBldmVuIGlmIHRoZXkKKyAgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUuIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzIwNjM3OiBLZXktc2hhcmluZyBub3cgYWxzbyB3b3JrcyBmb3IgaW5zdGFuY2UgZGljdGlvbmFyaWVzIG9mCisgIHN1YmNsYXNzZXMuICBQYXRjaCBieSBQZXRlciBJbmdlYnJldHNvbi4KKworLSBJc3N1ZSAjODI5NzogQXR0cmlidXRlcyBtaXNzaW5nIGZyb20gbW9kdWxlcyBub3cgaW5jbHVkZSB0aGUgbW9kdWxlIG5hbWUKKyAgaW4gdGhlIGVycm9yIHRleHQuICBPcmlnaW5hbCBwYXRjaCBieSB5c2oucmF5LgorCistIElzc3VlICMxOTk5NTogJWMsICVvLCAleCwgYW5kICVYIG5vdyByYWlzZSBUeXBlRXJyb3Igb24gbm9uLWludGVnZXIgaW5wdXQuCisKKy0gSXNzdWUgIzE5NjU1OiBUaGUgQVNETCBwYXJzZXIgLSB1c2VkIGJ5IHRoZSBidWlsZCBwcm9jZXNzIHRvIGdlbmVyYXRlIGNvZGUgZm9yCisgIG1hbmFnaW5nIHRoZSBQeXRob24gQVNUIGluIEMgLSB3YXMgcmV3cml0dGVuLiBUaGUgbmV3IHBhcnNlciBpcyBzZWxmIGNvbnRhaW5lZAorICBhbmQgZG9lcyBub3QgcmVxdWlyZSB0byBjYXJyeSBsb25nIHRoZSBzcGFyay5weSBwYXJzZXItZ2VuZXJhdG9yIGxpYnJhcnk7CisgIHNwYXJrLnB5IHdhcyByZW1vdmVkIGZyb20gdGhlIHNvdXJjZSBiYXNlLgorCistIElzc3VlICMxMjU0NjogQWxsb3cgXHgwMCB0byBiZSB1c2VkIGFzIGEgZmlsbCBjaGFyYWN0ZXIgd2hlbiB1c2luZyBzdHIsIGludCwKKyAgZmxvYXQsIGFuZCBjb21wbGV4IF9fZm9ybWF0X18gbWV0aG9kcy4KKworLSBJc3N1ZSAjMjA0ODA6IEFkZCBpcGFkZHJlc3MucmV2ZXJzZV9wb2ludGVyLiBQYXRjaCBieSBMZW9uIFdlYmVyLgorCistIElzc3VlICMxMzU5ODogTW9kaWZ5IHN0cmluZy5Gb3JtYXR0ZXIgdG8gc3VwcG9ydCBhdXRvLW51bWJlcmluZyBvZgorICByZXBsYWNlbWVudCBmaWVsZHMuIEl0IG5vdyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBzdHIuZm9ybWF0KCkgaW4KKyAgdGhpcyByZWdhcmQuIFBhdGNoZXMgYnkgUGhpbCBFbHNvbiBhbmQgUmFtY2hhbmRyYSBBcHRlLgorCistIElzc3VlICM4OTMxOiBNYWtlIGFsdGVybmF0ZSBmb3JtYXR0aW5nICgnIycpIGZvciB0eXBlICdjJyByYWlzZSBhbgorICBleGNlcHRpb24uIEluIHZlcnNpb25zIHByaW9yIHRvIDMuNSwgJyMnIHdpdGggJ2MnIGhhZCBubyBlZmZlY3QuIE5vdworICBzcGVjaWZ5aW5nIGl0IGlzIGFuIGVycm9yLiAgUGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCiAtIElzc3VlICMyMzE2NTogUGVyZm9ybSBvdmVyZmxvdyBjaGVja3MgYmVmb3JlIGFsbG9jYXRpbmcgbWVtb3J5IGluIHRoZQogICBfUHlfY2hhcjJ3Y2hhciBmdW5jdGlvbi4KIApAQCAtNjc2LDkgKzE3MjYsMjQgQEAKIAogLSBJc3N1ZSAjMjMzOTk6IHB5dmVudiBjcmVhdGVzIHJlbGF0aXZlIHN5bWxpbmtzIHdoZXJlIHBvc3NpYmxlLgogCistIElzc3VlICMyMDI4OTogY2dpLkZpZWxkU3RvcmFnZSgpIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VtZW50CisgIHByb3RvY29sLgorCistIElzc3VlICMxMzEyODogUHJpbnQgcmVzcG9uc2UgaGVhZGVycyBmb3IgQ09OTkVDVCByZXF1ZXN0cyB3aGVuIGRlYnVnbGV2ZWwKKyAgPiAwLiBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCistIElzc3VlICMxNTM4MTogT3B0aW1pemVkIGlvLkJ5dGVzSU8gdG8gbWFrZSBsZXNzIGFsbG9jYXRpb25zIGFuZCBjb3B5aW5ncy4KKworLSBJc3N1ZSAjMjI4MTg6IFNwbGl0dGluZyBvbiBhIHBhdHRlcm4gdGhhdCBjb3VsZCBtYXRjaCBhbiBlbXB0eSBzdHJpbmcgbm93CisgIHJhaXNlcyBhIHdhcm5pbmcuICBQYXR0ZXJucyB0aGF0IGNhbiBvbmx5IG1hdGNoIGVtcHR5IHN0cmluZ3MgYXJlIG5vdworICByZWplY3RlZC4KKwogLSBJc3N1ZSAjMjMwOTk6IENsb3NpbmcgaW8uQnl0ZXNJTyB3aXRoIGV4cG9ydGVkIGJ1ZmZlciBpcyByZWplY3RlZCBub3cgdG8KICAgcHJldmVudCBjb3JydXB0aW5nIGV4cG9ydGVkIGJ1ZmZlci4KIAorLSBJc3N1ZSAjMjMzMjY6IFJlbW92ZWQgX19uZV9fIGltcGxlbWVudGF0aW9ucy4gIFNpbmNlIGZpeGluZyBkZWZhdWx0IF9fbmVfXworICBpbXBsZW1lbnRhdGlvbiBpbiBpc3N1ZSAjMjE0MDggdGhleSBhcmUgcmVkdW5kYW50LgorCiAtIElzc3VlICMyMzM2MzogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIGl0ZXJ0b29scy5wZXJtdXRhdGlvbnMuCiAKIC0gSXNzdWUgIzIzMzY0OiBGaXggcG9zc2libGUgb3ZlcmZsb3cgaW4gaXRlcnRvb2xzLnByb2R1Y3QuCkBAIC02OTQsNiArMTc1OSwxNCBAQAogICBpcyBub3cgYWx3YXlzIHJlc3RvcmVkIG9yIHN3YXBwZWQsIG5vdCBvbmx5IGlmIHdoeSBpcyBXSFlfWUlFTEQgb3IKICAgV0hZX1JFVFVSTi4gUGF0Y2ggY28td3JpdHRlbiB3aXRoIEFudG9pbmUgUGl0cm91LgogCistIElzc3VlICMxNDA5OTogUmVzdG9yZWQgc3VwcG9ydCBvZiB3cml0aW5nIFpJUCBmaWxlcyB0byB0ZWxsYWJsZSBidXQKKyAgbm9uLXNlZWthYmxlIHN0cmVhbXMuCisKKy0gSXNzdWUgIzE0MDk5OiBXcml0aW5nIHRvIFppcEZpbGUgYW5kIHJlYWRpbmcgbXVsdGlwbGUgWmlwRXh0RmlsZXMgaXMKKyAgdGhyZWFkc2FmZSBub3cuCisKKy0gSXNzdWUgIzE5MzYxOiBKU09OIGRlY29kZXIgbm93IHJhaXNlcyBKU09ORGVjb2RlRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yLgorCiAtIElzc3VlICMxODUxODogdGltZWl0IG5vdyByZWplY3RzIHN0YXRlbWVudHMgd2hpY2ggY2FuJ3QgYmUgY29tcGlsZWQgb3V0c2lkZQogICBhIGZ1bmN0aW9uIG9yIGEgbG9vcCAoZS5nLiAicmV0dXJuIiBvciAiYnJlYWsiKS4KIApAQCAtNzA4LDQ3ICsxNzgxLDg1IEBACiAtIElzc3VlICMxOTk5NjogOmNsYXNzOmBlbWFpbC5mZWVkcGFyc2VyLkZlZWRQYXJzZXJgIG5vdyBoYW5kbGVzIChtYWxmb3JtZWQpCiAgIGhlYWRlcnMgd2l0aCBubyBrZXkgcmF0aGVyIHRoYW4gYXNzdW1pbmcgdGhlIGJvZHkgaGFzIHN0YXJ0ZWQuCiAKKy0gSXNzdWUgIzIwMTg4OiBTdXBwb3J0IEFwcGxpY2F0aW9uLUxheWVyIFByb3RvY29sIE5lZ290aWF0aW9uIChBTFBOKSBpbiB0aGUgc3NsCisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMjMxMzM6IFBpY2tsaW5nIG9mIGlwYWRkcmVzcyBvYmplY3RzIG5vdyBwcm9kdWNlcyBtb3JlIGNvbXBhY3QgYW5kCisgIHBvcnRhYmxlIHJlcHJlc2VudGF0aW9uLgorCiAtIElzc3VlICMyMzI0ODogVXBkYXRlIHNzbCBlcnJvciBjb2RlcyBmcm9tIGxhdGVzdCBPcGVuU1NMIGdpdCBtYXN0ZXIuCiAKKy0gSXNzdWUgIzIzMjY2OiBNdWNoIGZhc3RlciBpbXBsZW1lbnRhdGlvbiBvZiBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKCkKKyAgd2hlbiB0aGVyZSBhcmUgbWFueSBub24tY29uc2VjdXRpdmUgYWRkcmVzc2VzLgorCiAtIElzc3VlICMyMzA5ODogNjQtYml0IGRldl90IGlzIG5vdyBzdXBwb3J0ZWQgaW4gdGhlIG9zIG1vZHVsZS4KIAorLSBJc3N1ZSAjMjE4MTc6IFdoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiBhIHRhc2sgc3VibWl0dGVkIHRvIGEKKyAgUHJvY2Vzc1Bvb2xFeGVjdXRvciwgdGhlIHJlbW90ZSB0cmFjZWJhY2sgaXMgbm93IGRpc3BsYXllZCBpbiB0aGUKKyAgcGFyZW50IHByb2Nlc3MuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzE1OTU1OiBBZGQgYW4gb3B0aW9uIHRvIGxpbWl0IG91dHB1dCBzaXplIHdoZW4gZGVjb21wcmVzc2luZyBMWk1BCisgIGRhdGEuICBQYXRjaCBieSBOaWtvbGF1cyBSYXRoIGFuZCBNYXJ0aW4gUGFudGVyLgorCiAtIElzc3VlICMyMzI1MDogSW4gdGhlIGh0dHAuY29va2llcyBtb2R1bGUsIGNhcGl0YWxpemUgIkh0dHBPbmx5IiBhbmQgIlNlY3VyZSIKICAgYXMgdGhleSBhcmUgd3JpdHRlbiBpbiB0aGUgc3RhbmRhcmQuCiAKIC0gSXNzdWUgIzIzMDYzOiBJbiB0aGUgZGlzdXRpbHMnIGNoZWNrIGNvbW1hbmQsIGZpeCBwYXJzaW5nIG9mIHJlU1Qgd2l0aCBjb2RlIG9yCiAgIGNvZGUtYmxvY2sgZGlyZWN0aXZlcy4KIAotLSBJc3N1ZSAjMjMyMDksICMyMzIyNTogc2VsZWN0b3JzLkJhc2VTZWxlY3Rvci5jbG9zZSgpIG5vdyBjbGVhcnMgaXRzIGludGVybmFsCi0gIHJlZmVyZW5jZSB0byB0aGUgc2VsZWN0b3IgbWFwcGluZyB0byBicmVhayBhIHJlZmVyZW5jZSBjeWNsZS4gSW5pdGlhbCBwYXRjaAotICB3cml0dGVuIGJ5IE1hcnRpbiBSaWNoYXJkLgorLSBJc3N1ZSAjMjMyMDksICMyMzIyNTogc2VsZWN0b3JzLkJhc2VTZWxlY3Rvci5nZXRfa2V5KCkgbm93IHJhaXNlcyBhCisgIFJ1bnRpbWVFcnJvciBpZiB0aGUgc2VsZWN0b3IgaXMgY2xvc2VkLiBBbmQgc2VsZWN0b3JzLkJhc2VTZWxlY3Rvci5jbG9zZSgpCisgIG5vdyBjbGVhcnMgaXRzIGludGVybmFsIHJlZmVyZW5jZSB0byB0aGUgc2VsZWN0b3IgbWFwcGluZyB0byBicmVhayBhCisgIHJlZmVyZW5jZSBjeWNsZS4gSW5pdGlhbCBwYXRjaCB3cml0dGVuIGJ5IE1hcnRpbiBSaWNoYXJkLgogCi0tIElzc3VlICMyMTM1NjogTWFrZSBzc2wuUkFORF9lZ2QoKSBvcHRpb25hbCB0byBzdXBwb3J0IExpYnJlU1NMLiBUaGUKLSAgYXZhaWxhYmlsaXR5IG9mIHRoZSBmdW5jdGlvbiBpcyBjaGVja2VkIGR1cmluZyB0aGUgY29tcGlsYXRpb24uIFBhdGNoIHdyaXR0ZW4KLSAgYnkgQmVybmFyZCBTcGlsLgorLSBJc3N1ZSAjMTc5MTE6IFByb3ZpZGUgYSB3YXkgdG8gc2VlZCB0aGUgbGluZWNhY2hlIGZvciBhIFBFUC0zMDIgbW9kdWxlCisgIHdpdGhvdXQgYWN0dWFsbHkgbG9hZGluZyB0aGUgY29kZS4KIAotLSBJc3N1ZSAjMjA4OTYsICMyMjkzNTogVGhlIDpmdW5jOmBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZWAgZnVuY3Rpb24gbm93Ci0gIHVzZXMgdGhlIDpkYXRhOmB+c3NsLlBST1RPQ09MX1NTTHYyM2AgcHJvdG9jb2wgYnkgZGVmYXVsdCwgbm90Ci0gIDpkYXRhOmB+c3NsLlBST1RPQ09MX1NTTHYzYCwgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eSBhbmQgc3VwcG9ydCBwbGF0Zm9ybXMKLSAgd2hlcmUgOmRhdGE6YH5zc2wuUFJPVE9DT0xfU1NMdjNgIHN1cHBvcnQgaXMgZGlzYWJsZWQuCistIElzc3VlICMxNzkxMTogUHJvdmlkZSBhIG5ldyBvYmplY3QgQVBJIGZvciB0cmFjZWJhY2ssIGluY2x1ZGluZyB0aGUgYWJpbGl0eQorICB0byBub3QgbG9va3VwIGxpbmVzIGF0IGFsbCB1bnRpbCB0aGUgdHJhY2ViYWNrIGlzIGFjdHVhbGx5IHJlbmRlcmVkLCB3aXRob3V0CisgIGFueSB0cmFjZSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0cyBiZWluZyBrZXB0IGFsaXZlLgogCi0tIElzc3VlICMyMzExMTogSW4gdGhlIGZ0cGxpYiwgbWFrZSBzc2wuUFJPVE9DT0xfU1NMdjIzIHRoZSBkZWZhdWx0IHByb3RvY29sCi0gIHZlcnNpb24uCistIElzc3VlICMxOTc3NzogUHJvdmlkZSBhIGhvbWUoKSBjbGFzc21ldGhvZCBvbiBQYXRoIG9iamVjdHMuICBDb250cmlidXRlZAorICBieSBWaWN0b3IgU2FsZ2FkbyBhbmQgTWF5YW5rIFRyaXBhdGhpLgogCi0tIElzc3VlICMyMzEzMjogTWl0aWdhdGUgcmVncmVzc2lvbiBpbiBzcGVlZCBhbmQgY2xhcml0eSBpbiBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcuCistIElzc3VlICMyMzIwNjogTWFrZSBgYGpzb24uZHVtcHMoLi4uLCBlbnN1cmVfYXNjaWk9RmFsc2UpYGAgYXMgZmFzdCBhcyB0aGUKKyAgZGVmYXVsdCBjYXNlIG9mIGBgZW5zdXJlX2FzY2lpPVRydWVgYC4gIFBhdGNoIGJ5IE5hb2tpIEluYWRhLgogCi0tIElzc3VlICMyMjU4NTogT24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCBvcy51cmFuZG9tKCkgbm93IGNhbGxzIGdldGVudHJvcHkoKSwKLSAgaW5zdGVhZCBvZiByZWFkaW5nIC9kZXYvdXJhbmRvbSwgdG8gZ2V0IHBzZXVkby1yYW5kb20gYnl0ZXMuCistIElzc3VlICMyMzE4NTogQWRkIG1hdGguaW5mIGFuZCBtYXRoLm5hbiBjb25zdGFudHMuCisKKy0gSXNzdWUgIzIzMTg2OiBBZGQgc3NsLlNTTE9iamVjdC5zaGFyZWRfY2lwaGVycygpIGFuZAorICBzc2wuU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzKCkgdG8gZmV0Y2ggdGhlIGNsaWVudCdzIGxpc3QgY2lwaGVycyBzZW50IGF0CisgIGhhbmRzaGFrZS4KKworLSBJc3N1ZSAjMjMxNDM6IFJlbW92ZSBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTHMgb2xkZXIgdGhhbiAwLjkuOC4KKworLSBJc3N1ZSAjMjMxMzI6IEltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIGludHJvc3BlY3Rpb24gc3VwcG9ydCBvZiBjb21wYXJpc29uCisgIG1ldGhvZHMgY3JlYXRlZCBieSBmdW5jdG9vbC50b3RhbF9vcmRlcmluZy4KKworLSBJc3N1ZSAjMTk3NzY6IEFkZCBhIGV4cGFuZHVzZXIoKSBtZXRob2Qgb24gUGF0aCBvYmplY3RzLgogCiAtIElzc3VlICMyMzExMjogRml4IFNpbXBsZUhUVFBTZXJ2ZXIgdG8gY29ycmVjdGx5IGNhcnJ5IHRoZSBxdWVyeSBzdHJpbmcgYW5kCiAgIGZyYWdtZW50IHdoZW4gaXQgcmVkaXJlY3RzIHRvIGFkZCBhIHRyYWlsaW5nIHNsYXNoLgogCistIElzc3VlICMyMTc5MzogQWRkZWQgaHR0cC5IVFRQU3RhdHVzIGVudW1zIChpLmUuIEhUVFBTdGF0dXMuT0ssCisgIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKS4gIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKIC0gSXNzdWUgIzIzMDkzOiBJbiB0aGUgaW8sIG1vZHVsZSBhbGxvdyBtb3JlIG9wZXJhdGlvbnMgdG8gd29yayBvbiBkZXRhY2hlZAogICBzdHJlYW1zLgogCistIElzc3VlICMyMzExMTogSW4gdGhlIGZ0cGxpYiwgbWFrZSBzc2wuUFJPVE9DT0xfU1NMdjIzIHRoZSBkZWZhdWx0IHByb3RvY29sCisgIHZlcnNpb24uCisKKy0gSXNzdWUgIzIyNTg1OiBPbiBPcGVuQlNEIDUuNiBhbmQgbmV3ZXIsIG9zLnVyYW5kb20oKSBub3cgY2FsbHMgZ2V0ZW50cm9weSgpLAorICBpbnN0ZWFkIG9mIHJlYWRpbmcgL2Rldi91cmFuZG9tLCB0byBnZXQgcHNldWRvLXJhbmRvbSBieXRlcy4KKwogLSBJc3N1ZSAjMTkxMDQ6IHBwcmludCBub3cgcHJvZHVjZXMgZXZhbHVhYmxlIG91dHB1dCBmb3Igd3JhcHBlZCBzdHJpbmdzLgogCiAtIElzc3VlICMyMzA3MTogQWRkZWQgbWlzc2luZyBuYW1lcyB0byBjb2RlY3MuX19hbGxfXy4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCiAKKy0gSXNzdWUgIzIyNzgzOiBQaWNrbGluZyBub3cgdXNlcyB0aGUgTkVXT0JKIG9wY29kZSBpbnN0ZWFkIG9mIHRoZSBORVdPQkpfRVgKKyAgb3Bjb2RlIGlmIHBvc3NpYmxlLgorCiAtIElzc3VlICMxNTUxMzogQWRkZWQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBwaWNrbGUgY2xhc3Nlcy4KIAogLSBJc3N1ZSAjMTk4NTg6IHBpY2tsZXRvb2xzLm9wdGltaXplKCkgbm93IGF3YXJlIG9mIHRoZSBNRU1PSVpFIG9wY29kZSwgY2FuCkBAIC03NzAsMTIgKzE4ODEsMjUgQEAKIC0gSXNzdWUgIzEyMTgyMzQ6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIHRvIGxvYWQgdXBkYXRlZCBzb3VyY2Ugb2YKICAgcmVsb2FkZWQgbW9kdWxlLiBJbml0aWFsIHBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCiAKKy0gSXNzdWUgIzIxNzQwOiBTdXBwb3J0IHdyYXBwZWQgY2FsbGFibGVzIGluIGRvY3Rlc3QuIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjMwMDk6IE1ha2Ugc3VyZSBzZWxlY3RvcnMuRXBvbGxTZWxlY3J0b3Iuc2VsZWN0KCkgd29ya3Mgd2hlbiBubworICBGRCBpcyByZWdpc3RlcmVkLgorCiAtIElzc3VlICMyMjk1OTogSW4gdGhlIGNvbnN0cnVjdG9yIG9mIGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgcHJlZmVyIHRoZQogICBjb250ZXh0J3MgY2hlY2tfaG9zdG5hbWUgYXR0cmlidXRlIG92ZXIgdGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyLgogCistIElzc3VlICMyMjY5NjogQWRkIGZ1bmN0aW9uIDpmdW5jOmBzeXMuaXNfZmluYWxpemluZ2AgdG8ga25vdyBhYm91dAorICBpbnRlcnByZXRlciBzaHV0ZG93bi4KKwogLSBJc3N1ZSAjMTYwNDM6IEFkZCBhIGRlZmF1bHQgbGltaXQgZm9yIHRoZSBhbW91bnQgb2YgZGF0YSB4bWxycGNsaWIuZ3ppcF9kZWNvZGUKICAgd2lsbCByZXR1cm4uIFRoaXMgcmVzb2x2ZXMgQ1ZFLTIwMTMtMTc1My4KIAorLSBJc3N1ZSAjMTQwOTk6IFppcEZpbGUub3BlbigpIG5vIGxvbmdlciByZW9wZW4gdGhlIHVuZGVybHlpbmcgZmlsZS4gIE9iamVjdHMKKyAgcmV0dXJuZWQgYnkgWmlwRmlsZS5vcGVuKCkgY2FuIG5vdyBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YgdGhlIFppcEZpbGUgZXZlbgorICBpZiB0aGUgWmlwRmlsZSB3YXMgY3JlYXRlZCBieSBwYXNzaW5nIGluIGEgZmlsZS1saWtlIG9iamVjdCBhcyB0aGUgZmlyc3QKKyAgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLgorCiAtIElzc3VlICMyMjk2NjogRml4IF9fcHljYWNoZV9fIHB5YyBmaWxlIG5hbWUgY2xvYmJlciB3aGVuIHB5Y19jb21waWxlIGlzCiAgIGFza2VkIHRvIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBjb250YWluaW5nIG11bHRpcGxlIGRvdHMgaW4gdGhlIHNvdXJjZSBmaWxlCiAgIG5hbWUuCkBAIC03ODUsMTQgKzE5MDksMzAgQEAKIC0gSXNzdWUgIzIxMDMyLiBGaXhlZCBzb2NrZXQgbGVhayBpZiBIVFRQQ29ubmVjdGlvbi5nZXRyZXNwb25zZSgpIGZhaWxzLgogICBPcmlnaW5hbCBwYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCistIElzc3VlICMyMjQwNzogRGVwcmVjYXRlZCB0aGUgdXNlIG9mIHJlLkxPQ0FMRSBmbGFnIHdpdGggc3RyIHBhdHRlcm5zIG9yCisgIHJlLkFTQ0lJLiBJdCB3YXMgbmV3ZXIgd29ya2VkLgorCistIElzc3VlICMyMjkwMjogVGhlICJpcCIgY29tbWFuZCBpcyBub3cgdXNlZCBvbiBMaW51eCB0byBkZXRlcm1pbmUgTUFDIGFkZHJlc3MKKyAgaW4gdXVpZC5nZXRub2RlKCkuICBQYWNoIGJ5IEJydW5vIENhdWV0LgorCiAtIElzc3VlICMyMjk2MDogQWRkIGEgY29udGV4dCBhcmd1bWVudCB0byB4bWxycGNsaWIuU2VydmVyUHJveHkgY29uc3RydWN0b3IuCiAKKy0gSXNzdWUgIzIyMzg5OiBBZGQgY29udGV4dGxpYi5yZWRpcmVjdF9zdGRlcnIoKS4KKworLSBJc3N1ZSAjMjEzNTY6IE1ha2Ugc3NsLlJBTkRfZWdkKCkgb3B0aW9uYWwgdG8gc3VwcG9ydCBMaWJyZVNTTC4gVGhlCisgIGF2YWlsYWJpbGl0eSBvZiB0aGUgZnVuY3Rpb24gaXMgY2hlY2tlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLiBQYXRjaCB3cml0dGVuCisgIGJ5IEJlcm5hcmQgU3BpbC4KKwogLSBJc3N1ZSAjMjI5MTU6IFNBWCBwYXJzZXIgbm93IHN1cHBvcnRzIGZpbGVzIG9wZW5lZCB3aXRoIGZpbGUgZGVzY3JpcHRvciBvcgogICBieXRlcyBwYXRoLgogCiAtIElzc3VlICMyMjYwOTogQ29uc3RydWN0b3JzIGFuZCB1cGRhdGUgbWV0aG9kcyBvZiBtYXBwaW5nIGNsYXNzZXMgaW4gdGhlCiAgIGNvbGxlY3Rpb25zIG1vZHVsZSBub3cgYWNjZXB0IHRoZSBzZWxmIGtleXdvcmQgYXJndW1lbnQuCiAKKy0gSXNzdWUgIzIyOTQwOiBBZGQgcmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZS4KKworLSBJc3N1ZSAjMTk2NzY6IEFkZGVkIHRoZSAibmFtZXJlcGxhY2UiIGVycm9yIGhhbmRsZXIuCisKIC0gSXNzdWUgIzIyNzg4OiBBZGQgKmNvbnRleHQqIHBhcmFtZXRlciB0byBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyLgogCiAtIElzc3VlICMyMjkyMTogQWxsb3cgU1NMQ29udGV4dCB0byB0YWtlIHRoZSAqaG9zdG5hbWUqIHBhcmFtZXRlciBldmVuIGlmCkBAIC04MDEsMTQgKzE5NDEsMTkgQEAKIC0gSXNzdWUgIzIyODk0OiBUZXN0Q2FzZS5zdWJUZXN0KCkgd291bGQgY2F1c2UgdGhlIHRlc3Qgc3VpdGUgdG8gYmUgc3RvcHBlZAogICB3aGVuIGluIGZhaWxmYXN0IG1vZGUsIGV2ZW4gaW4gdGhlIGFic2VuY2Ugb2YgZmFpbHVyZXMuCiAKLS0gSXNzdWUgIzIyNjM4OiBTU0x2MyBpcyBub3cgZGlzYWJsZWQgdGhyb3VnaG91dCB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLSAgSXQgY2FuIHN0aWxsIGJlIGVuYWJsZWQgYnkgaW5zdGFudGlhdGluZyBhIFNTTENvbnRleHQgbWFudWFsbHkuCistIElzc3VlICMyMjc5NjogSFRUUCBjb29raWUgcGFyc2luZyBpcyBub3cgc3RyaWN0ZXIsIGluIG9yZGVyIHRvIHByb3RlY3QKKyAgYWdhaW5zdCBwb3RlbnRpYWwgaW5qZWN0aW9uIGF0dGFja3MuCiAKIC0gSXNzdWUgIzIyMzcwOiBXaW5kb3dzIGRldGVjdGlvbiBpbiBwYXRobGliIGlzIG5vdyBtb3JlIHJvYnVzdC4KIAogLSBJc3N1ZSAjMjI4NDE6IFJlamVjdCBjb3JvdXRpbmVzIGluIGFzeW5jaW8gYWRkX3NpZ25hbF9oYW5kbGVyKCkuCiAgIFBhdGNoIGJ5IEx1ZG92aWMuR2FzYy4KIAorLSBJc3N1ZSAjMTk0OTQ6IEFkZGVkIHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY1ByaW9yQXV0aEhhbmRsZXIuIFBhdGNoIGJ5CisgIE1hdGVqIENlcGwuCisKKy0gSXNzdWUgIzIyNTc4OiBBZGRlZCBhdHRyaWJ1dGVzIHRvIHRoZSByZS5lcnJvciBjbGFzcy4KKwogLSBJc3N1ZSAjMjI4NDk6IEZpeCBwb3NzaWJsZSBkb3VibGUgZnJlZSBpbiB0aGUgaW8uVGV4dElPV3JhcHBlciBjb25zdHJ1Y3Rvci4KIAogLSBJc3N1ZSAjMTI3Mjg6IERpZmZlcmVudCBVbmljb2RlIGNoYXJhY3RlcnMgaGF2aW5nIHRoZSBzYW1lIHVwcGVyY2FzZSBidXQKQEAgLTgxNyw2ICsxOTYyLDE0IEBACiAtIElzc3VlICMyMjgyMTogRml4ZWQgZmNudGwoKSB3aXRoIGludGVnZXIgYXJndW1lbnQgb24gNjQtYml0IGJpZy1lbmRpYW4KICAgcGxhdGZvcm1zLgogCistIElzc3VlICMyMTY1MDogQWRkIGFuIGAtLXNvcnQta2V5c2Agb3B0aW9uIHRvIGpzb24udG9vbCBDTEkuCisKKy0gSXNzdWUgIzIyODI0OiBVcGRhdGVkIHJlcHJsaWIgb3V0cHV0IGZvcm1hdCBmb3Igc2V0cyB0byB1c2Ugc2V0IGxpdGVyYWxzLgorICBQYXRjaCBjb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMyMjgyNDogVXBkYXRlZCByZXBybGliIG91dHB1dCBmb3JtYXQgZm9yIGFycmF5cyB0byBkaXNwbGF5IGVtcHR5CisgIGFycmF5cyB3aXRob3V0IGFuIHVubmVjZXNzYXJ5IGVtcHR5IGxpc3QuICBTdWdnZXN0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYS4KKwogLSBJc3N1ZSAjMjI0MDY6IEZpeGVkIHRoZSB1dV9jb2RlYyBjb2RlYyBpbmNvcnJlY3RseSBwb3J0ZWQgdG8gMy54LgogICBCYXNlZCBvbiBwYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCkBAIC04MzAsMTYgKzE5ODMsMTUgQEAKIC0gSXNzdWUgIzIyNzc1OiBGaXhlZCB1bnBpY2tsaW5nIG9mIGh0dHAuY29va2llcy5TaW1wbGVDb29raWUgd2l0aCBwcm90b2NvbCAyCiAgIGFuZCBhYm92ZS4gIFBhdGNoIGJ5IFRpbSBHcmFoYW0uCiAKLS0gSXNzdWUgIzIyMzY2OiB1cmxsaWIucmVxdWVzdC51cmxvcGVuIHdpbGwgYWNjZXB0IGEgY29udGV4dCBvYmplY3QKLSAgKFNTTENvbnRleHQpIGFzIGFuIGFyZ3VtZW50IHdoaWNoIHdpbGwgdGhlbiB1c2VkIGJlIGZvciBIVFRQUyBjb25uZWN0aW9uLgotICBQYXRjaCBieSBBbGV4IEdheW5vci4KLQogLSBJc3N1ZSAjMjI3NzY6IEJyb3VnaHQgZXhjbHVkZWQgY29kZSBpbnRvIHRoZSBzY29wZSBvZiBhIHRyeSBibG9jayBpbgogICBTeXNMb2dIYW5kbGVyLmVtaXQoKS4KIAogLSBJc3N1ZSAjMjI2NjU6IEFkZCBtaXNzaW5nIGdldF90ZXJtaW5hbF9zaXplIGFuZCBTYW1lRmlsZUVycm9yIHRvCiAgIHNodXRpbC5fX2FsbF9fLgogCistIElzc3VlICM2NjIzOiBSZW1vdmUgZGVwcmVjYXRlZCBOZXRyYyBjbGFzcyBpbiB0aGUgZnRwbGliIG1vZHVsZS4gUGF0Y2ggYnkKKyAgTWF0dCBDaGFwdXQuCisKIC0gSXNzdWUgIzE3MzgxOiBGaXhlZCBoYW5kbGluZyBvZiBjYXNlLWluc2Vuc2l0aXZlIHJhbmdlcyBpbiByZWd1bGFyCiAgIGV4cHJlc3Npb25zLgogCkBAIC04NTMsMTggKzIwMDUsNTMgQEAKICAgZG9lc24ndCB3b3JrLiAgVGhpcyBhbGxvd3MgdXNlIHdpdGggc3BlY2lhbCBmaWxlc3lzdGVtcyBzdWNoIGFzIFZpcnR1YWxCb3gKICAgc2hhcmVkIGZvbGRlcnMuCiAKKy0gSXNzdWUgIzIyMjE3OiBJbXBsZW1lbnRlZCByZXBycyBvZiBjbGFzc2VzIGluIHRoZSB6aXBmaWxlIG1vZHVsZS4KKworLSBJc3N1ZSAjMjI0NTc6IEhvbm91ciBsb2FkX3Rlc3RzIGluIHRoZSBzdGFydF9kaXIgb2YgZGlzY292ZXJ5LgorCistIElzc3VlICMxODIxNjogZ2V0dGV4dCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gYSAubW8gZmlsZSBoYXMgYW4KKyAgdW5zdXBwb3J0ZWQgbWFqb3IgdmVyc2lvbiBudW1iZXIuICBQYXRjaCBieSBBYXJvbiBIaWxsLgorCistIElzc3VlICMxMzkxODogUHJvdmlkZSBhIGxvY2FsZS5kZWxvY2FsaXplKCkgZnVuY3Rpb24gd2hpY2ggY2FuIHJlbW92ZQorICBsb2NhbGUtc3BlY2lmaWMgbnVtYmVyIGZvcm1hdHRpbmcgZnJvbSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBudW1iZXIsCisgIHdpdGhvdXQgdGhlbiBjb252ZXJ0aW5nIGl0IHRvIGEgc3BlY2lmaWMgdHlwZS4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCisKKy0gSXNzdWUgIzIyNjc2OiBNYWtlIHRoZSBwaWNrbGluZyBvZiBnbG9iYWwgb2JqZWN0cyB3aGljaCBkb24ndCBoYXZlIGEKKyAgX19tb2R1bGVfXyBhdHRyaWJ1dGUgbGVzcyBzbG93LgorCiAtIElzc3VlICMxODg1MzogRml4ZWQgUmVzb3VyY2VXYXJuaW5nIGluIHNobGV4Ll9fbmFpbl9fLgogCiAtIElzc3VlICM5MzUxOiBEZWZhdWx0cyBzZXQgd2l0aCBzZXRfZGVmYXVsdHMgb24gYW4gYXJncGFyc2Ugc3VicGFyc2VyCiAgIGFyZSBubyBsb25nZXIgaWdub3JlZCB3aGVuIGFsc28gc2V0IG9uIHRoZSBwYXJlbnQgcGFyc2VyLgogCistIElzc3VlICM3NTU5OiB1bml0dGVzdCB0ZXN0IGxvYWRpbmcgSW1wb3J0RXJyb3JzIGFyZSByZXBvcnRlZCBhcyBpbXBvcnQgZXJyb3JzCisgIHdpdGggdGhlaXIgaW1wb3J0IGV4Y2VwdGlvbiByYXRoZXIgdGhhbiBhcyBhdHRyaWJ1dGUgZXJyb3JzIGFmdGVyIHRoZSBpbXBvcnQKKyAgaGFzIGFscmVhZHkgZmFpbGVkLgorCistIElzc3VlICMxOTc0NjogTWFrZSBpdCBwb3NzaWJsZSB0byBleGFtaW5lIHRoZSBlcnJvcnMgZnJvbSB1bml0dGVzdAorICBkaXNjb3Zlcnkgd2l0aG91dCBleGVjdXRpbmcgdGhlIHRlc3Qgc3VpdGUuIFRoZSBuZXcgYGVycm9yc2AgYXR0cmlidXRlCisgIG9uIFRlc3RMb2FkZXIgZXhwb3NlcyB0aGVzZSBub24tZmF0YWwgZXJyb3JzIGVuY291bnRlcmVkIGR1cmluZyBkaXNjb3ZlcnkuCisKIC0gSXNzdWUgIzIxOTkxOiBNYWtlIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5J3MgaGVhZGVyICdwYXJhbXMnIGF0dHJpYnV0ZXMKICAgYmUgcmVhZC1vbmx5IChNYXBwaW5nUHJveHlUeXBlKS4gIFByZXZpb3VzbHkgdGhlIGRpY3Rpb25hcnkgd2FzIG1vZGlmaWFibGUKICAgYnV0IGEgbmV3IG9uZSB3YXMgY3JlYXRlZCBvbiBlYWNoIGFjY2VzcyBvZiB0aGUgYXR0cmlidXRlLgogCistIElzc3VlICMyMjYzODogU1NMdjMgaXMgbm93IGRpc2FibGVkIHRocm91Z2hvdXQgdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisgIEl0IGNhbiBzdGlsbCBiZSBlbmFibGVkIGJ5IGluc3RhbnRpYXRpbmcgYSBTU0xDb250ZXh0IG1hbnVhbGx5LgorCiAtIElzc3VlICMyMjY0MTogSW4gYXN5bmNpbywgdGhlIGRlZmF1bHQgU1NMIGNvbnRleHQgZm9yIGNsaWVudCBjb25uZWN0aW9ucwogICBpcyBub3cgY3JlYXRlZCB1c2luZyBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLCBmb3Igc3Ryb25nZXIgc2VjdXJpdHkuCiAKKy0gSXNzdWUgIzE3NDAxOiBJbmNsdWRlIGNsb3NlZmQgaW4gaW8uRmlsZUlPIHJlcHIuCisKKy0gSXNzdWUgIzIxMzM4OiBBZGQgc2lsZW50IG1vZGUgZm9yIGNvbXBpbGVhbGwuIHF1aWV0IHBhcmFtZXRlcnMgb2YKKyAgY29tcGlsZV97ZGlyLCBmaWxlLCBwYXRofSBmdW5jdGlvbnMgbm93IGhhdmUgYSBtdWx0aWxldmVsIHZhbHVlLiBBbHNvLAorICAtcSBvcHRpb24gb2YgdGhlIENMSSBub3cgaGF2ZSBhIG11bHRpbGV2ZWwgdmFsdWUuIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgorCistIElzc3VlICMyMDE1MjogQ29udmVydCB0aGUgYXJyYXkgYW5kIGNtYXRoIG1vZHVsZXMgdG8gQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMxODY0MzogQWRkIHNvY2tldC5zb2NrZXRwYWlyKCkgb24gV2luZG93cy4KKwogLSBJc3N1ZSAjMjI0MzU6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gU29ja2V0U2VydmVyIGJpbmQgZmFpbHMuCiAKIC0gSXNzdWUgIzEzMDk2OiBGaXhlZCBzZWdmYXVsdCBpbiBDVHlwZXMgUE9JTlRFUiBoYW5kbGluZyBvZiBsYXJnZQpAQCAtODczLDkgKzIwNjAsMTkgQEAKIC0gSXNzdWUgIzExNjk0OiBSYWlzZSBDb252ZXJzaW9uRXJyb3IgaW4geGRybGliIGFzIGRvY3VtZW50ZWQuICBQYXRjaAogICBieSBGaWxpcCBHcnVzemN6ecWEc2tpIGFuZCBDbGF1ZGl1IFBvcGEuCiAKKy0gSXNzdWUgIzE5MzgwOiBPcHRpbWl6ZWQgcGFyc2luZyBvZiByZWd1bGFyIGV4cHJlc3Npb25zLgorCistIElzc3VlICMxNTE5NjM4OiBOb3cgdW5tYXRjaGVkIGdyb3VwcyBhcmUgcmVwbGFjZWQgd2l0aCBlbXB0eSBzdHJpbmdzIGluIHJlLnN1YigpCisgIGFuZCByZS5zdWJuKCkuCisKKy0gSXNzdWUgIzE4NjE1OiBzbmRoZHIud2hhdC93aGF0aGRyIG5vdyByZXR1cm4gYSBuYW1lZHR1cGxlLgorCiAtIElzc3VlICMyMjQ2MjogRml4IHB5ZXhwYXQncyBjcmVhdGlvbiBvZiBhIGR1bW15IGZyYW1lIHRvIG1ha2UgaXQKICAgYXBwZWFyIGluIGV4Y2VwdGlvbiB0cmFjZWJhY2tzLgogCistIElzc3VlICMyMTk2NTogQWRkIHN1cHBvcnQgZm9yIGluLW1lbW9yeSBTU0wgdG8gdGhlIHNzbCBtb2R1bGUuICBQYXRjaAorICBieSBHZWVydCBKYW5zZW4uCisKIC0gSXNzdWUgIzIxMTczOiBGaXggbGVuKCkgb24gYSBXZWFrS2V5RGljdGlvbmFyeSB3aGVuIC5jbGVhcigpIHdhcyBjYWxsZWQKICAgd2l0aCBhbiBpdGVyYXRvciBhbGl2ZS4KIApAQCAtODg1LDE0OSArMjA4MiwzOCBAQAogLSBJc3N1ZSAjMjE5MDU6IEF2b2lkIFJ1bnRpbWVFcnJvciBpbiBwaWNrbGUud2hpY2htb2R1bGUoKSB3aGVuIHN5cy5tb2R1bGVzCiAgIGlzIG11dGF0ZWQgd2hpbGUgaXRlcmF0aW5nLiAgUGF0Y2ggYnkgT2xpdmllciBHcmlzZWwuCiAKKy0gSXNzdWUgIzExMjcxOiBjb25jdXJyZW50LmZ1dHVyZXMuRXhlY3V0b3IubWFwKCkgbm93IHRha2VzIGEgKmNodW5rc2l6ZSoKKyAgYXJndW1lbnQgdG8gYWxsb3cgYmF0Y2hpbmcgb2YgdGFza3MgaW4gY2hpbGQgcHJvY2Vzc2VzIGFuZCBpbXByb3ZlCisgIHBlcmZvcm1hbmNlIG9mIFByb2Nlc3NQb29sRXhlY3V0b3IuICBQYXRjaCBieSBEYW4gTydSZWlsbHkuCisKKy0gSXNzdWUgIzIxODgzOiBvcy5wYXRoLmpvaW4oKSBhbmQgb3MucGF0aC5yZWxwYXRoKCkgbm93IHJhaXNlIGEgVHlwZUVycm9yIHdpdGgKKyAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2UgZm9yIHVuc3VwcG9ydGVkIG9yIG1pc21hdGNoZWQgdHlwZXMgb2YgYXJndW1lbnRzLgorCiAtIElzc3VlICMyMjIxOTogVGhlIHppcGZpbGUgbW9kdWxlIENMSSBub3cgYWRkcyBlbnRyaWVzIGZvciBkaXJlY3RvcmllcwogICAoaW5jbHVkaW5nIGVtcHR5IGRpcmVjdG9yaWVzKSBpbiBaSVAgZmlsZS4KIAogLSBJc3N1ZSAjMjI0NDk6IEluIHRoZSBzc2wuU1NMQ29udGV4dC5sb2FkX2RlZmF1bHRfY2VydHMsIGNvbnN1bHQgdGhlCiAgIGVudmlyb25tZW50YWwgdmFyaWFibGVzIFNTTF9DRVJUX0RJUiBhbmQgU1NMX0NFUlRfRklMRSBvbiBXaW5kb3dzLgogCistIElzc3VlICMyMjUwODogVGhlIGVtYWlsLl9fdmVyc2lvbl9fIHZhcmlhYmxlIGhhcyBiZWVuIHJlbW92ZWQ7IHRoZSBlbWFpbAorICBjb2RlIGlzIG5vIGxvbmdlciBzaGlwcGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgc3RkbGliLCBhbmQgX192ZXJzaW9uX18KKyAgaGFzbid0IGJlZW4gdXBkYXRlZCBpbiBzZXZlcmFsIHJlbGVhc2VzLgorCiAtIElzc3VlICMyMDA3NjogQWRkZWQgbm9uIGRlcml2ZWQgVVRGLTggYWxpYXNlcyB0byBsb2NhbGUgYWxpYXNlcyB0YWJsZS4KIAogLSBJc3N1ZSAjMjAwNzk6IEFkZGVkIGxvY2FsZXMgc3VwcG9ydGVkIGluIGdsaWJjIDIuMTggdG8gbG9jYWxlIGFsaWFzIHRhYmxlLgogCi0tIElzc3VlICMyMjM5NjogT24gMzItYml0IEFJWCBwbGF0Zm9ybSwgZG9uJ3QgZXhwb3NlIG9zLnBvc2l4X2ZhZHZpc2UoKSBub3IKLSAgb3MucG9zaXhfZmFsbG9jYXRlKCkgYmVjYXVzZSB0aGVpciBwcm90b3R5cGVzIGluIHN5c3RlbSBoZWFkZXJzIGFyZSB3cm9uZy4KKy0gSXNzdWUgIzIwMjE4OiBBZGRlZCBjb252ZW5pZW5jZSBtZXRob2RzIHJlYWRfdGV4dC93cml0ZV90ZXh0IGFuZCByZWFkX2J5dGVzLworICB3cml0ZV9ieXRlcyB0byBwYXRobGliLlBhdGggb2JqZWN0cy4KIAotLSBJc3N1ZSAjMjI1MTc6IFdoZW4gYSBpby5CdWZmZXJlZFJXUGFpciBvYmplY3QgaXMgZGVhbGxvY2F0ZWQsIGNsZWFyIGl0cwotICB3ZWFrcmVmcy4KKy0gSXNzdWUgIzIyNDM3OiBOdW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gaXMgbm8gbG9uZ2VyCisgIGxpbWl0ZWQgYnkgMTAwLgogCi0tIElzc3VlICMyMjQ0ODogSW1wcm92ZSBjYW5jZWxlZCB0aW1lciBoYW5kbGVzIGNsZWFudXAgdG8gcHJldmVudAotICB1bmJvdW5kIG1lbW9yeSB1c2FnZS4gUGF0Y2ggYnkgSm9zaHVhIE1vb3JlLU9saXZhLgotCi0tIElzc3VlICMyMzAwOTogTWFrZSBzdXJlIHNlbGVjdG9ycy5FcG9sbFNlbGVjcnRvci5zZWxlY3QoKSB3b3JrcyB3aGVuIG5vCi0gIEZEIGlzIHJlZ2lzdGVyZWQuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAotICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCi0gIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCi0gIFBhdGNoIGJ5IFRhbCBFaW5hdC4KLQotLSBJc3N1ZSAjMTY4OTM6IFVwZGF0ZSBJZGxlIGRvYyBjaGFwdGVyIHRvIG1hdGNoIGN1cnJlbnQgSWRsZSBhbmQgYWRkIG5ldwotICBpbmZvcm1hdGlvbi4KLQotLSBJc3N1ZSAjMzA2ODogQWRkIElkbGUgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gZGlhbG9nIHRvIE9wdGlvbnMgbWVudS4KLSAgQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byBIT01FLy5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnLgotICBPcmlnaW5hbCBwYXRjaCBieSBUYWwgRWluYXQuCi0KLS0gSXNzdWUgIzE2MjMzOiBBIG1vZHVsZSBicm93c2VyIChGaWxlIDogQ2xhc3MgQnJvd3NlciwgQWx0K0MpIHJlcXVpcmVzIGEKLSAgZWRpdG9yIHdpbmRvdyB3aXRoIGEgZmlsZW5hbWUuICBXaGVuIENsYXNzIEJyb3dzZXIgaXMgcmVxdWVzdGVkIG90aGVyd2lzZSwKLSAgZnJvbSBhIHNoZWxsLCBvdXRwdXQgd2luZG93LCBvciAnVW50aXRsZWQnIGVkaXRvciwgSWRsZSBubyBsb25nZXIgZGlzcGxheXMKLSAgYW4gZXJyb3IgYm94LiAgSXQgbm93IHBvcHMgdXAgYW4gT3BlbiBNb2R1bGUgYm94IChBbHQrTSkuIElmIGEgdmFsaWQgbmFtZQotICBpcyBlbnRlcmVkIGFuZCBhIG1vZHVsZSBpcyBvcGVuZWQsIGEgY29ycmVzcG9uZGluZyBicm93c2VyIGlzIGFsc28gb3BlbmVkLgotCi0tIElzc3VlICM0ODMyOiBTYXZlIEFzIHRvIHR5cGUgUHl0aG9uIGZpbGVzIGF1dG9tYXRpY2FsbHkgYWRkcyAucHkgdG8gdGhlCi0gIG5hbWUgeW91IGVudGVyIChldmVuIGlmIHlvdXIgc3lzdGVtIGRvZXMgbm90IGRpc3BsYXkgaXQpLiAgU29tZSBzeXN0ZW1zCi0gIGF1dG9tYXRpY2FsbHkgYWRkIC50eHQgd2hlbiB0eXBlIGlzIFRleHQgZmlsZXMuCi0KLS0gSXNzdWUgIzIxOTg2OiBDb2RlIG9iamVjdHMgYXJlIG5vdCBub3JtYWxseSBwaWNrbGVkIGJ5IHRoZSBwaWNrbGUgbW9kdWxlLgotICBUbyBtYXRjaCB0aGlzLCB0aGV5IGFyZSBubyBsb25nZXIgcGlja2xlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgSWRsZS4KLQotLSBJc3N1ZSAjMjMxODA6IFJlbmFtZSBJRExFICJXaW5kb3dzIiBtZW51IGl0ZW0gdG8gIldpbmRvdyIuCi0gIFBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgotCi1UZXN0cwotLS0tLS0KKy0gSXNzdWUgIzE3NDQyOiBJbnRlcmFjdGl2ZUludGVycHJldGVyIG5vdyBkaXNwbGF5cyB0aGUgZnVsbCBjaGFpbmVkIHRyYWNlYmFjaworICBpbiBpdHMgc2hvd3RyYWNlYmFjayBtZXRob2QsIHRvIG1hdGNoIHRoZSBidWlsdCBpbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4KIAogLSBJc3N1ZSAjMjMzOTI6IEFkZGVkIHRlc3RzIGZvciBtYXJzaGFsIEMgQVBJIHRoYXQgd29ya3Mgd2l0aCBGSUxFKi4KIAotLSBJc3N1ZSAjMTg5ODI6IEFkZCB0ZXN0cyBmb3IgQ0xJIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE5NTQ4OiBBZGRlZCBzb21lIGFkZGl0aW9uYWwgY2hlY2tzIHRvIHRlc3RfY29kZWNzIHRvIGVuc3VyZSB0aGF0Ci0gIHN0YXRlbWVudHMgaW4gdGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbiByZW1haW4gYWNjdXJhdGUuIFBhdGNoIGJ5IE1hcnRpbgotICBQYW50ZXIuCi0KLS0gSXNzdWUgIzIyODM4OiBBbGwgdGVzdF9yZSB0ZXN0cyBub3cgd29yayB3aXRoIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotCi0tIElzc3VlICMyMjE3MzogVXBkYXRlIGxpYjJ0bzMgdGVzdHMgdG8gdXNlIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5LgotCi0tIElzc3VlICMxNjAwMDogQ29udmVydCB0ZXN0X2N1cnNlcyB0byB1c2UgdW5pdHRlc3QuCi0KLS0gSXNzdWUgIzIxNDU2OiBTa2lwIHR3byB0ZXN0cyBpbiB0ZXN0X3VybGxpYjJuZXQucHkgaWYgX3NzbCBtb2R1bGUgbm90Ci0gIHByZXNlbnQuIFBhdGNoIGJ5IFJlbWkgUG9pbnRlbC4KLQotLSBJc3N1ZSAjMjI3NzA6IFByZXZlbnQgc29tZSBUayBzZWdmYXVsdHMgb24gT1MgWCB3aGVuIHJ1bm5pbmcgZ3VpIHRlc3RzLgotCi0tIElzc3VlICMyMzIxMTogV29ya2Fyb3VuZCB0ZXN0X2xvZ2dpbmcgZmFpbHVyZSBvbiBzb21lIE9TIFggMTAuNiBzeXN0ZW1zLgotCi0tIElzc3VlICMyMzM0NTogUHJldmVudCB0ZXN0X3NzbCBmYWlsdXJlcyB3aXRoIGxhcmdlIE9wZW5TU0wgcGF0Y2ggbGV2ZWwKLSAgdmFsdWVzIChsaWtlIDAuOS44emMpLgotCi0tIElzc3VlICMyMjI4OTogUHJldmVudCB0ZXN0X3VybGxpYjJuZXQgZmFpbHVyZXMgZHVlIHRvIGZ0cCBjb25uZWN0aW9uIHRpbWVvdXQuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNTUwNjogVXNlIHN0YW5kYXJkIFBLR19QUk9HX1BLR19DT05GSUcgYXV0b2NvbmYgbWFjcm8gaW4gdGhlIGNvbmZpZ3VyZQotICBzY3JpcHQuCi0KLS0gSXNzdWUgIzIyOTM1OiBBbGxvdyB0aGUgc3NsIG1vZHVsZSB0byBiZSBjb21waWxlZCBpZiBvcGVuc3NsIGRvZXNuJ3Qgc3VwcG9ydAotICBTU0wgMy4KLQotLSBJc3N1ZSAjMTY1Mzc6IENoZWNrIHdoZXRoZXIgc2VsZi5leHRlbnNpb25zIGlzIGVtcHR5IGluIHNldHVwLnB5LiBQYXRjaCBieQotICBKb25hdGhhbiBIb3NtZXIuCi0KLS0gSXNzdWUgIzE4MDk2OiBGaXggbGlicmFyeSBvcmRlciByZXR1cm5lZCBieSBweXRob24tY29uZmlnLgotCi0tIElzc3VlICMxNzIxOTogQWRkIGxpYnJhcnkgYnVpbGQgZGlyIGZvciBQeXRob24gZXh0ZW5zaW9uIGNyb3NzLWJ1aWxkcy4KLQotLSBJc3N1ZSAjMTcxMjg6IFVzZSBwcml2YXRlIHZlcnNpb24gb2YgT3BlblNTTCBmb3IgMy40LjMgT1MgWCAxMC41KyBpbnN0YWxsZXIuCi0KLUMgQVBJCi0tLS0tLQotCi0tIElzc3VlICMyMjA3OTogUHlUeXBlX1JlYWR5KCkgbm93IGNoZWNrcyB0aGF0IHN0YXRpY2FsbHkgYWxsb2NhdGVkIHR5cGUgaGFzCi0gIG5vIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBiYXNlcy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxOTU0ODogVXBkYXRlIHRoZSBjb2RlY3MgbW9kdWxlIGRvY3VtZW50YXRpb24gdG8gYmV0dGVyIGNvdmVyIHRoZQotICBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRleHQgZW5jb2RpbmdzIGFuZCBvdGhlciBjb2RlY3MsIHRvZ2V0aGVyIHdpdGggb3RoZXIKLSAgY2xhcmlmaWNhdGlvbnMuIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzIyOTE0OiBVcGRhdGUgdGhlIFB5dGhvbiAyLzMgcG9ydGluZyBIT1dUTyB0byBkZXNjcmliZSBhIG1vcmUgYXV0b21hdGVkCi0gIGFwcHJvYWNoLgotCi0tIElzc3VlICMyMTUxNDogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGpzb24gbW9kdWxlIG5vdyByZWZlcnMgdG8gbmV3IEpTT04gUkZDCi0gIDcxNTkgaW5zdGVhZCBvZiBvYnNvbGV0ZWQgUkZDIDQ2MjcuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjMxNDogcHlkb2Mgbm93IHdvcmtzIHdoZW4gdGhlIExJTkVTIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldC4KLQotV2luZG93cwotLS0tLS0tLQotCi0tIElzc3VlICMxNzg5NjogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgZXhwZWN0IGV4dGVybmFsIGxpYnJhcnkgc291cmNlcwotICB0byBiZSBpbiBgYFBDYnVpbGRcLi5cZXh0ZXJuYWxzYGAgcmF0aGVyIHRoYW4gYGBQQ2J1aWxkXC4uXC4uYGAuCi0KLS0gSXNzdWUgIzE3NzE3OiBUaGUgV2luZG93cyBidWlsZCBzY3JpcHRzIG5vdyB1c2UgYSBjb3B5IG9mIE5BU00gcHVsbGVkIGZyb20KLSAgc3ZuLnB5dGhvbi5vcmcgdG8gYnVpbGQgT3BlblNTTC4KLQotLSBJc3N1ZSAjMjI2NDQ6IFRoZSBidW5kbGVkIHZlcnNpb24gb2YgT3BlblNTTCBoYXMgYmVlbiB1cGRhdGVkIHRvIDEuMC4xai4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMTAtMDYKLQotTGlicmFyeQotLS0tLS0tLQogCiAtIElzc3VlICMxMDUxMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGFuZCB1cGxvYWQgbWV0aG9kcyBub3cgdXNlIEhUTUwgc3RhbmRhcmRzCiAgIGNvbXBsaWFudCBDUkxGIGxpbmUgZW5kaW5ncy4KQEAgLTEwMzUsMTUgKzIxMjEsMjcgQEAKIC0gSXNzdWUgIzk4NTA6IEZpeGVkIG1hY3BhdGguam9pbigpIGZvciBlbXB0eSBmaXJzdCBjb21wb25lbnQuICBQYXRjaCBieQogICBPbGVnIE9zaG15YW4uCiAKKy0gSXNzdWUgIzUzMDk6IGRpc3R1dGlscycgYnVpbGQgYW5kIGJ1aWxkX2V4dCBjb21tYW5kcyBub3cgYWNjZXB0IGEgYGAtamBgCisgIG9wdGlvbiB0byBlbmFibGUgcGFyYWxsZWwgYnVpbGRpbmcgb2YgZXh0ZW5zaW9uIG1vZHVsZXMuCisKKy0gSXNzdWUgIzIyNDQ4OiBJbXByb3ZlIGNhbmNlbGVkIHRpbWVyIGhhbmRsZXMgY2xlYW51cCB0byBwcmV2ZW50CisgIHVuYm91bmQgbWVtb3J5IHVzYWdlLiBQYXRjaCBieSBKb3NodWEgTW9vcmUtT2xpdmEuCisKIC0gSXNzdWUgIzIyNDI3OiBUZW1wb3JhcnlEaXJlY3Rvcnkgbm8gbG9uZ2VyIGF0dGVtcHRzIHRvIGNsZWFuIHVwIHR3aWNlIHdoZW4KICAgdXNlZCBpbiB0aGUgd2l0aCBzdGF0ZW1lbnQgaW4gZ2VuZXJhdG9yLgogCistIElzc3VlICMyMjM2MjogRm9yYmlkZGVuIGFtYmlndW91cyBvY3RhbCBlc2NhcGVzIG91dCBvZiByYW5nZSAwLTBvMzc3IGluCisgIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKIC0gSXNzdWUgIzIwOTEyOiBOb3cgZGlyZWN0b3JpZXMgYWRkZWQgdG8gWklQIGZpbGUgaGF2ZSBjb3JyZWN0IFVuaXggYW5kIE1TLURPUwogICBkaXJlY3RvcnkgYXR0cmlidXRlcy4KIAogLSBJc3N1ZSAjMjE4NjY6IFppcEZpbGUuY2xvc2UoKSBubyBsb25nZXIgd3JpdGVzIFpJUDY0IGNlbnRyYWwgZGlyZWN0b3J5CiAgIHJlY29yZHMgaWYgYWxsb3daaXA2NCBpcyBmYWxzZS4KIAorLSBJc3N1ZSAjMjIyNzg6IEZpeCB1cmxqb2luIHByb2JsZW0gd2l0aCByZWxhdGl2ZSB1cmxzLCBhIHJlZ3Jlc3Npb24gb2JzZXJ2ZWQKKyAgYWZ0ZXIgY2hhbmdlcyB0byBpc3N1ZTIyMTE4IHdlcmUgc3VibWl0dGVkLgorCiAtIElzc3VlICMyMjQxNTogRml4ZWQgZGVidWdnaW5nIG91dHB1dCBvZiB0aGUgR1JPVVBSRUZfRVhJU1RTIG9wY29kZSBpbiB0aGUgcmUKICAgbW9kdWxlLiAgUmVtb3ZlZCB0cmFpbGluZyBzcGFjZXMgaW4gZGVidWdnaW5nIG91dHB1dC4KIApAQCAtMTA1Myw0NyArMjE1MSwxOCBAQAogLSBJc3N1ZSAjMjEzMzI6IEVuc3VyZSB0aGF0IGBgYnVmc2l6ZT0xYGAgaW4gc3VicHJvY2Vzcy5Qb3BlbigpIHNlbGVjdHMKICAgbGluZSBidWZmZXJpbmcsIHJhdGhlciB0aGFuIGJsb2NrIGJ1ZmZlcmluZy4gIFBhdGNoIGJ5IEFraXJhIExpLgogCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4ycmMxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNC0wOS0yMgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIyNTg6IEZpeCB0aGUgdGhlIGludGVybmFsIGZ1bmN0aW9uIHNldF9pbmhlcml0YWJsZSgpIG9uIElsbHVtb3MuCi0gIFRoaXMgcGxhdGZvcm0gZXhwb3NlcyB0aGUgZnVuY3Rpb24gYGBpb2N0bChGSU9DTEVYKWBgLCBidXQgY2FsbGluZyBpdCBmYWlscwotICB3aXRoIGVycm5vIGlzIEVOT1RUWTogIkluYXBwcm9wcmlhdGUgaW9jdGwgZm9yIGRldmljZSIuIHNldF9pbmhlcml0YWJsZSgpCi0gIG5vdyBmYWxscyBiYWNrIHRvIHRoZSBzbG93ZXIgYGBmY250bCgpYGAgKGBgRl9HRVRGRGBgIGFuZCB0aGVuIGBgRl9TRVRGRGBgKS4KLQotLSBJc3N1ZSAjMjE2Njk6IFdpdGggdGhlIGFpZCBvZiBoZXVyaXN0aWNzIGluIFN5bnRheEVycm9yLl9faW5pdF9fLCB0aGUKLSAgcGFyc2VyIG5vdyBhdHRlbXB0cyB0byBnZW5lcmF0ZSBtb3JlIG1lYW5pbmdmdWwgKG9yIGF0IGxlYXN0IG1vcmUgc2VhcmNoCi0gIGVuZ2luZSBmcmllbmRseSkgZXJyb3IgbWVzc2FnZXMgd2hlbiAiZXhlYyIgYW5kICJwcmludCIgYXJlIHVzZWQgYXMKLSAgc3RhdGVtZW50cy4KLQotLSBJc3N1ZSAjMjE2NDI6IElmIHRoZSBjb25kaXRpb25hbCBpZi1lbHNlIGV4cHJlc3Npb24sIGFsbG93IGFuIGludGVnZXIgd3JpdHRlbgotICB3aXRoIG5vIHNwYWNlIGJldHdlZW4gaXRzZWxmIGFuZCB0aGUgYGBlbHNlYGAga2V5d29yZCAoZS5nLiBgYFRydWUgaWYgNDJlbHNlCi0gIEZhbHNlYGApIHRvIGJlIHZhbGlkIHN5bnRheC4KLQotLSBJc3N1ZSAjMjE1MjM6IEZpeCBvdmVyLXBlc3NpbWlzdGljIGNvbXB1dGF0aW9uIG9mIHRoZSBzdGFjayBlZmZlY3Qgb2YKLSAgc29tZSBvcGNvZGVzIGluIHRoZSBjb21waWxlci4gIFRoaXMgYWxzbyBmaXhlcyBhIHF1YWRyYXRpYyBjb21waWxhdGlvbgotICB0aW1lIGlzc3VlIG5vdGljZWFibGUgd2hlbiBjb21waWxpbmcgY29kZSB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mICJhbmQiCi0gIGFuZCAib3IiIG9wZXJhdG9ycy4KLQotTGlicmFyeQotLS0tLS0tLQotCiAtIElzc3VlICMyMTA5MTogRml4IEFQSSBidWc6IGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX2F0dGFjaG1lbnQgaXMgbm93Ci0gIGEgbWV0aG9kLiAgU2luY2UgRW1haWxNZXNzYWdlIGlzIHByb3Zpc2lvbmFsLCB3ZSBjYW4gY2hhbmdlIHRoZSBBUEkgaW4gYQotICBtYWludGVuYW5jZSByZWxlYXNlLCBidXQgd2UgdXNlIGEgdHJpY2sgdG8gcmVtYWluIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aAotICAzLjQuMC8xLgorICBhIG1ldGhvZC4KIAogLSBJc3N1ZSAjMjEwNzk6IEZpeCBlbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19hdHRhY2htZW50IHRvIHJldHVybiB0aGUKICAgY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgaGVhZGVyIGhhcyBwYXJhbWV0ZXJzIGFzIHdlbGwgYXMgYSB2YWx1ZS4KIAogLSBJc3N1ZSAjMjIyNDc6IEFkZCBOTlRQRXJyb3IgdG8gbm50cGxpYi5fX2FsbF9fLgogCistIElzc3VlICMyMjM2NjogdXJsbGliLnJlcXVlc3QudXJsb3BlbiB3aWxsIGFjY2VwdCBhIGNvbnRleHQgb2JqZWN0CisgIChTU0xDb250ZXh0KSBhcyBhbiBhcmd1bWVudCB3aGljaCB3aWxsIHRoZW4gdXNlZCBiZSBmb3IgSFRUUFMgY29ubmVjdGlvbi4KKyAgUGF0Y2ggYnkgQWxleCBHYXlub3IuCisKIC0gSXNzdWUgIzQxODA6IFRoZSB3YXJuaW5ncyByZWdpc3RyaWVzIGFyZSBub3cgcmVzZXQgd2hlbiB0aGUgZmlsdGVycwogICBhcmUgbW9kaWZpZWQuCiAKQEAgLTExMDUsNiArMjE3NCw5IEBACiAgIHdpdGggbm9uLXN0YW5kYXJkIGNvb2tpZSBoYW5kbGluZyBpbiBzb21lIFdlYiBicm93c2Vycy4gIFJlcG9ydGVkIGJ5CiAgIFNlcmdleSBCb2Jyb3YuCiAKKy0gSXNzdWUgIzIwNTM3OiBsb2dnaW5nIG1ldGhvZHMgbm93IGFjY2VwdCBhbiBleGNlcHRpb24gaW5zdGFuY2UgYXMgd2VsbCBhcyBhCisgIEJvb2xlYW4gdmFsdWUgb3IgZXhjZXB0aW9uIHR1cGxlLiBUaGFua3MgdG8gWXVyeSBTZWxpdmFub3YgZm9yIHRoZSBwYXRjaC4KKwogLSBJc3N1ZSAjMjIzODQ6IEFuIGV4Y2VwdGlvbiBpbiBUa2ludGVyIGNhbGxiYWNrIG5vIGxvbmdlciBjcmFzaGVzIHRoZSBwcm9ncmFtCiAgIHdoZW4gaXQgaXMgcnVuIHdpdGggcHl0aG9udy5leGUuCiAKQEAgLTExMTMsNiArMjE4NSw5IEBACiAtIElzc3VlICMyMTE0Nzogc3FsaXRlMyBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgcmVxdWVzdCBjb250YWlucyBhIG51bGwKICAgY2hhcmFjdGVyIGluc3RlYWQgb2YgdHJ1bmNhdGUgaXQuICBCYXNlZCBvbiBwYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KIAorLSBJc3N1ZSAjMTM5Njg6IFRoZSBnbG9iIG1vZHVsZSBub3cgc3VwcG9ydHMgcmVjdXJzaXZlIHNlYXJjaCBpbgorICBzdWJkaXJlY3RvcmllcyB1c2luZyB0aGUgIioqIiBwYXR0ZXJuLgorCiAtIElzc3VlICMyMTk1MTogRml4ZWQgYSBjcmFzaCBpbiBUa2ludGVyIG9uIEFJWCB3aGVuIGNhbGxlZCBUY2wgY29tbWFuZCB3aXRoCiAgIGVtcHR5IHN0cmluZyBvciB0dXBsZSBhcmd1bWVudC4KIApAQCAtMTEyMSwxMiArMjE5NiwzMSBAQAogCiAtIElzc3VlICMyMjMzODogRml4IGEgY3Jhc2ggaW4gdGhlIGpzb24gbW9kdWxlIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCiAKKy0gSXNzdWUgIzEyNDEwOiBpbWFwbGliLklNQVA0IG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgorICBPcmlnaW5hbCBwYXRjaCBieSBUYXJlayBaaWFkw6kuCisKKy0gSXNzdWUgIzIxMjcwOiBXZSBub3cgb3ZlcnJpZGUgdHVwbGUgbWV0aG9kcyBpbiBtb2NrLmNhbGwgb2JqZWN0cyBzbyB0aGF0CisgIHRoZXkgY2FuIGJlIHVzZWQgYXMgbm9ybWFsIGNhbGwgYXR0cmlidXRlcy4KKworLSBJc3N1ZSAjMTY2NjI6IGxvYWRfdGVzdHMoKSBpcyBub3cgdW5jb25kaXRpb25hbGx5IHJ1biB3aGVuIGl0IGlzIHByZXNlbnQgaW4KKyAgYSBwYWNrYWdlJ3MgX19pbml0X18ucHkuICBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBzdGlsbCBhY2NlcHRzCisgIHVzZV9sb2FkX3Rlc3RzLCBidXQgaXQgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZC4gIEEgbmV3IGtleXdvcmQtb25seQorICBhdHRyaWJ1dGUgYHBhdHRlcm5gIGlzIGFkZGVkIGFuZCBkb2N1bWVudGVkLiAgUGF0Y2ggZ2l2ZW4gYnkgUm9iZXJ0IENvbGxpbnMsCisgIHR3ZWFrZWQgYnkgQmFycnkgV2Fyc2F3LgorCiAtIElzc3VlICMyMjIyNjogRmlyc3QgbGV0dGVyIG5vIGxvbmdlciBpcyBzdHJpcHBlZCBmcm9tIHRoZSAic3RhdHVzIiBrZXkgaW4KICAgdGhlIHJlc3VsdCBvZiBUcmVldmlldy5oZWFkaW5nKCkuCiAKIC0gSXNzdWUgIzE5NTI0OiBGaXhlZCByZXNvdXJjZSBsZWFrIGluIHRoZSBIVFRQIGNvbm5lY3Rpb24gd2hlbiBhbiBpbnZhbGlkCiAgIHJlc3BvbnNlIGlzIHJlY2VpdmVkLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAorLSBJc3N1ZSAjMjA0MjE6IEFkZCBhIC52ZXJzaW9uKCkgbWV0aG9kIHRvIFNTTCBzb2NrZXRzIGV4cG9zaW5nIHRoZSBhY3R1YWwKKyAgcHJvdG9jb2wgdmVyc2lvbiBpbiB1c2UuCisKKy0gSXNzdWUgIzE5NTQ2OiBjb25maWdwYXJzZXIgZXhjZXB0aW9ucyBubyBsb25nZXIgZXhwb3NlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgIENoYWluZWQgS2V5RXJyb3JzIGFyZSByZW1vdmVkLCB3aGljaCBsZWFkcyB0byBjbGVhbmVyIHRyYWNlYmFja3MuICBQYXRjaCBieQorICBDbGF1ZGl1IFBvcGEuCisKIC0gSXNzdWUgIzIyMDUxOiB0dXJ0bGVkZW1vIG5vIGxvbmdlciByZWxvYWRzIGV4YW1wbGVzIHRvIHJlLXJ1biB0aGVtLgogICBJbml0aWFsaXphdGlvbiBvZiB2YXJpYWJsZXMgYW5kIGd1aSBzZXR1cCBzaG91bGQgYmUgZG9uZSBpbiBtYWluKCksCiAgIHdoaWNoIGlzIGNhbGxlZCBlYWNoIHRpbWUgYSBkZW1vIGlzIHJ1biwgYnV0IG5vdCBvbiBpbXBvcnQuCkBAIC0xMTQzLDIzICsyMjM3LDU3IEBACiAtIElzc3VlICMxODEzMjogVHVydGxlZGVtbyBidXR0b25zIG5vIGxvbmdlciBkaXNhcHBlYXIgd2hlbiB0aGUgd2luZG93IGlzCiAgIHNocnVuay4gIE9yaWdpbmFsIHBhdGNoZXMgYnkgSmFuIEthbmlzIGFuZCBMaXRhIENoby4KIAorLSBJc3N1ZSAjMjIwNDM6IHRpbWUubW9ub3RvbmljKCkgaXMgbm93IGFsd2F5cyBhdmFpbGFibGUuCisgIGBgdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpYGAsIGBgdGhyZWFkaW5nLlJMb2NrLmFjcXVpcmUoKWBgIGFuZCBzb2NrZXQKKyAgb3BlcmF0aW9ucyBub3cgdXNlIGEgbW9ub3RvbmljIGNsb2NrLCBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gY2xvY2ssIHdoZW4gYQorICB0aW1lb3V0IGlzIHVzZWQuCisKKy0gSXNzdWUgIzIxNTI3OiBBZGQgYSBkZWZhdWx0IG51bWJlciBvZiB3b3JrZXJzIHRvIFRocmVhZFBvb2xFeGVjdXRvciBlcXVhbAorICB0byA1IHRpbWVzIHRoZSBudW1iZXIgb2YgQ1BVcy4gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKwogLSBJc3N1ZSAjMjIyMTY6IHNtdHBsaWIgbm93IHJlc2V0cyBpdHMgc3RhdGUgbW9yZSBjb21wbGV0ZWx5IGFmdGVyIGEgcXVpdC4gIFRoZQogICBtb3N0IG9idmlvdXMgY29uc2VxdWVuY2Ugb2YgdGhlIHByZXZpb3VzIGJlaGF2aW9yIHdhcyBhIFNUQVJUVExTIGZhaWx1cmUKICAgZHVyaW5nIGEgY29ubmVjdC9zdGFydHRscy9xdWl0L2Nvbm5lY3Qvc3RhcnR0bHMgc2VxdWVuY2UuCiAKKy0gSXNzdWUgIzIyMDk4OiBjdHlwZXMnIEJpZ0VuZGlhblN0cnVjdHVyZSBhbmQgTGl0dGxlRW5kaWFuU3RydWN0dXJlIG5vdworICBkZWZpbmUgYW4gZW1wdHkgX19zbG90c19fIHNvIHRoYXQgc3ViY2xhc3NlcyBkb24ndCBhbHdheXMgZ2V0IGFuIGluc3RhbmNlCisgIGRpY3QuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKIC0gSXNzdWUgIzIyMTg1OiBGaXggYW4gb2NjYXNpb25hbCBSdW50aW1lRXJyb3IgaW4gdGhyZWFkaW5nLkNvbmRpdGlvbi53YWl0KCkKICAgY2F1c2VkIGJ5IG11dGF0aW9uIG9mIHRoZSB3YWl0ZXJzIHF1ZXVlIHdpdGhvdXQgaG9sZGluZyB0aGUgbG9jay4gIFBhdGNoCiAgIGJ5IERvdWcgWm9uZ2tlci4KIAorLSBJc3N1ZSAjMjIyODc6IE9uIFVOSVgsIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgbm93IHVzZXMKKyAgY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgaWYgYXZhaWxhYmxlLiBBcyBhIHNpZGUgZWZmZWN0LCBQeXRob24gbm93CisgIGRlcGVuZHMgb24gdGhlIGxpYnJ0IGxpYnJhcnkgb24gU29sYXJpcyBhbmQgb24gTGludXggKG9ubHkgd2l0aCBnbGliYyBvbGRlcgorICB0aGFuIDIuMTcpLgorCiAtIElzc3VlICMyMjE4MjogVXNlIGUuYXJncyB0byB1bnBhY2sgZXhjZXB0aW9ucyBjb3JyZWN0bHkgaW4KICAgZGlzdHV0aWxzLmZpbGVfdXRpbC5tb3ZlX2ZpbGUuIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KIAogLSBUaGUgd2ViYnJvd3NlciBtb2R1bGUgbm93IHVzZXMgc3VicHJvY2VzcydzIHN0YXJ0X25ld19zZXNzaW9uPVRydWUgcmF0aGVyCiAgIHRoYW4gYSBwb3RlbnRpYWxseSByaXNreSBwcmVleGVjX2ZuPW9zLnNldHNpZCBjYWxsLgogCistIElzc3VlICMyMjA0Mjogc2lnbmFsLnNldF93YWtldXBfZmQoZmQpIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSBmaWxlCisgIGRlc2NyaXB0b3IgaXMgaW4gYmxvY2tpbmcgbW9kZS4KKworLSBJc3N1ZSAjMTY4MDg6IGluc3BlY3Quc3RhY2soKSBub3cgcmV0dXJucyBhIG5hbWVkIHR1cGxlIGluc3RlYWQgb2YgYSB0dXBsZS4KKyAgUGF0Y2ggYnkgRGFuaWVsIFNoYWhhZi4KKwogLSBJc3N1ZSAjMjIyMzY6IEZpeGVkIFRraW50ZXIgaW1hZ2VzIGNvcHlpbmcgb3BlcmF0aW9ucyBpbiBOb0RlZmF1bHRSb290IG1vZGUuCiAKLS0gSXNzdWUgIzIyMTkxOiBGaXggd2FybmluZ3MuX19hbGxfXy4KKy0gSXNzdWUgIzI1Mjc6IEFkZCBhICpnbG9iYWxzKiBhcmd1bWVudCB0byB0aW1laXQgZnVuY3Rpb25zLCBpbiBvcmRlciB0bworICBvdmVycmlkZSB0aGUgZ2xvYmFscyBuYW1lc3BhY2UgaW4gd2hpY2ggdGhlIHRpbWVkIGNvZGUgaXMgZXhlY3V0ZWQuCisgIFBhdGNoIGJ5IEJlbiBSb2JlcnRzLgorCistIElzc3VlICMyMjExODogU3dpdGNoIHVybGxpYi5wYXJzZSB0byB1c2UgUkZDIDM5ODYgc2VtYW50aWNzIGZvciB0aGUKKyAgcmVzb2x1dGlvbiBvZiByZWxhdGl2ZSBVUkxzLCByYXRoZXIgdGhhbiBSRkNzIDE4MDggYW5kIDIzOTYuCisgIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzIxNTQ5OiBBZGRlZCB0aGUgIm1lbWJlcnMiIHBhcmFtZXRlciB0byBUYXJGaWxlLmxpc3QoKS4KKworLSBJc3N1ZSAjMTk2Mjg6IEFsbG93IGNvbXBpbGVhbGwgcmVjdXJzaW9uIGRlcHRoIHRvIGJlIHNwZWNpZmllZCB3aXRoIGEgLXIKKyAgb3B0aW9uLgogCiAtIElzc3VlICMxNTY5NjogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgbW1hcCBvYmplY3RzIG9uIFdpbmRvd3MuCiAKQEAgLTExNjcsNiArMjI5NSw4IEBACiAKIC0gSXNzdWUgIzIyMTY1OiBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIgbm93IHN1cHBvcnRzIHVuZGVjb2RhYmxlIGZpbGUgbmFtZXMuCiAKKy0gSXNzdWUgIzE1MzgxOiBPcHRpbWl6ZWQgbGluZSByZWFkaW5nIGluIGlvLkJ5dGVzSU8uCisKIC0gSXNzdWUgIzg3OTc6IFJhaXNlIEhUVFBFcnJvciBvbiBmYWlsZWQgQmFzaWMgQXV0aGVudGljYXRpb24gaW1tZWRpYXRlbHkuCiAgIEluaXRpYWwgcGF0Y2ggYnkgU2FtIEJ1bGwuCiAKQEAgLTExODIsNiArMjMxMiwxNCBAQAogLSBJc3N1ZSAjMTc5MjM6IGdsb2IoKSBwYXR0ZXJucyBlbmRpbmcgd2l0aCBhIHNsYXNoIG5vIGxvbmdlciBtYXRjaCBub24tZGlycyBvbgogICBBSVguICBCYXNlZCBvbiBwYXRjaCBieSBEZWxoYWxsdC4KIAorLSBJc3N1ZSAjMjE3MjU6IEFkZGVkIHN1cHBvcnQgZm9yIFJGQyA2NTMxIChTTVRQVVRGOCkgaW4gc210cGQuCisKKy0gSXNzdWUgIzIyMTc2OiBVcGRhdGUgdGhlIGN0eXBlcyBtb2R1bGUncyBsaWJmZmkgdG8gdjMuMS4gIFRoaXMgcmVsZWFzZQorICBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMaW51eCBBQXJjaDY0IGFuZCBQT1dFUlBDIEVMRiBBQkl2MiBsaXR0bGUgZW5kaWFuCisgIGFyY2hpdGVjdHVyZXMuCisKKy0gSXNzdWUgIzU0MTE6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSAieHp0YXIiIGZvcm1hdCBpbiB0aGUgc2h1dGlsIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjExMjE6IERvbid0IGZvcmNlIDNyZCBwYXJ0eSBDIGV4dGVuc2lvbnMgdG8gYmUgYnVpbHQgd2l0aAogICAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudC4KIApAQCAtMTE4OSwxOCArMjMyNyw1NyBAQAogICB3aGVuIHVucGlja2xpbmcgcGlja2xlZCBzcWxpdGUzLlJvdykuICBzcWxpdGUzLlJvdyBpcyBub3cgaW5pdGlhbGl6ZWQgaW4gdGhlCiAgIF9fbmV3X18oKSBtZXRob2QuCiAKKy0gSXNzdWUgIzIwMTcwOiBDb252ZXJ0IHBvc2l4bW9kdWxlIHRvIHVzZSBBcmd1bWVudCBDbGluaWMuCisKKy0gSXNzdWUgIzIxNTM5OiBBZGQgYSAqZXhpc3RzX29rKiBhcmd1bWVudCB0byBgUGF0aGxpYi5ta2RpcigpYCB0byBtaW1pYworICBgbWtkaXIgLXBgIGFuZCBgb3MubWFrZWRpcnMoKWAgZnVuY3Rpb25hbGl0eS4gIFdoZW4gdHJ1ZSwgaWdub3JlCisgIEZpbGVFeGlzdHNFcnJvcnMuICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgorCistIElzc3VlICMyMjEyNzogQnlwYXNzIElETkEgZm9yIHB1cmUtQVNDSUkgaG9zdCBuYW1lcyBpbiB0aGUgc29ja2V0IG1vZHVsZQorICAoaW4gcGFydGljdWxhciBmb3IgbnVtZXJpYyBJUHMpLgorCistIElzc3VlICMyMTA0Nzogc2V0IHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKmNvbnZlcnRfY2hhcnJlZnMqIGFyZ3VtZW50CisgIG9mIEhUTUxQYXJzZXIgdG8gVHJ1ZS4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gQWRkIGFuIF9fYWxsX18gdG8gaHRtbC5lbnRpdGllcy4KKworLSBJc3N1ZSAjMTUxMTQ6IHRoZSBzdHJpY3QgbW9kZSBhbmQgYXJndW1lbnQgb2YgSFRNTFBhcnNlciwgSFRNTFBhcnNlci5lcnJvciwKKyAgYW5kIHRoZSBIVE1MUGFyc2VyRXJyb3IgZXhjZXB0aW9uIGhhdmUgYmVlbiByZW1vdmVkLgorCistIElzc3VlICMyMjA4NTogRHJvcHBlZCBzdXBwb3J0IG9mIFRrIDguMyBpbiBUa2ludGVyLgorCiAtIElzc3VlICMyMTU4MDogTm93IFRraW50ZXIgY29ycmVjdGx5IGhhbmRsZXMgYnl0ZXMgYXJndW1lbnRzIHBhc3NlZCB0byBUay4KICAgSW4gcGFydGljdWxhciB0aGlzIGFsbG93cyB0byBpbml0aWFsaXplIGltYWdlcyBmcm9tIGJpbmFyeSBkYXRhLgogCistIElzc3VlICMyMjAwMzogV2hlbiBpbml0aWFsaXplZCBmcm9tIGEgYnl0ZXMgb2JqZWN0LCBpby5CeXRlc0lPKCkgbm93CisgIGRlZmVycyBtYWtpbmcgYSBjb3B5IHVudGlsIGl0IGlzIG11dGF0ZWQsIGltcHJvdmluZyBwZXJmb3JtYW5jZSBhbmQKKyAgbWVtb3J5IHVzZSBvbiBzb21lIHVzZSBjYXNlcy4gIFBhdGNoIGJ5IERhdmlkIFdpbHNvbi4KKworLSBJc3N1ZSAjMjIwMTg6IE9uIFdpbmRvd3MsIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKCkgbm93IGFsc28gc3VwcG9ydHMgc29ja2V0cy4KKyAgQSBzaWRlIGVmZmVjdCBpcyB0aGF0IFB5dGhvbiBkZXBlbmRzIHRvIHRoZSBXaW5Tb2NrIGxpYnJhcnkuCisKKy0gSXNzdWUgIzIyMDU0OiBBZGQgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpIGZ1bmN0aW9ucyB0byBnZXQKKyAgYW5kIHNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiBhIGZpbGUgZGVzY3JpcHRvciAoRmFsc2UgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZworICBpcyBzZXQsIFRydWUgb3RoZXJ3aXNlKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzE3MTcyOiBNYWtlIHR1cnRsZWRlbW8gc3RhcnQgYXMgYWN0aXZlIG9uIE9TIFggZXZlbiB3aGVuIHJ1biB3aXRoCiAgIHN1YnByb2Nlc3MuICBQYXRjaCBieSBMaXRhIENoby4KIAogLSBJc3N1ZSAjMjE3MDQ6IEZpeCBidWlsZCBlcnJvciBmb3IgX211bHRpcHJvY2Vzc2luZyB3aGVuIHNlbWFwaG9yZXMKICAgYXJlIG5vdCBhdmFpbGFibGUuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KIAorLSBJc3N1ZSAjMjAxNzM6IENvbnZlcnQgc2hhMSwgc2hhMjU2LCBzaGE1MTIgYW5kIG1kNSB0byBBcmd1bWVudENsaW5pYy4KKyAgUGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCiAtIEZpeCByZXByKF9zb2NrZXQuc29ja2V0KSBvbiBXaW5kb3dzIDY0LWJpdDogZG9uJ3QgZmFpbCB3aXRoIE92ZXJmbG93RXJyb3IKICAgb24gY2xvc2VkIHNvY2tldC4gcmVwcihzb2NrZXQuc29ja2V0KSBhbHJlYWR5IHdvcmtzIGZpbmUuCiAKKy0gSXNzdWUgIzIyMDMzOiBSZXBycyBvZiBtb3N0IFB5dGhvbiBpbXBsZW1lbmVkIGNsYXNzZXMgbm93IGNvbnRhaW4gYWN0dWFsCisgIGNsYXNzIG5hbWUgaW5zdGVhZCBvZiBoYXJkY29kZWQgb25lLgorCistIElzc3VlICMyMTk0NzogVGhlIGRpcyBtb2R1bGUgY2FuIG5vdyBkaXNhc3NlbWJsZSBnZW5lcmF0b3ItaXRlcmF0b3IKKyAgb2JqZWN0cyBiYXNlZCBvbiB0aGVpciBnaV9jb2RlIGF0dHJpYnV0ZS4gUGF0Y2ggYnkgQ2xlbWVudCBSb3VhdWx0LgorCiAtIElzc3VlICMxNjEzMzogVGhlIGFzeW5jaGF0LmFzeW5jX2NoYXQuaGFuZGxlX3JlYWQoKSBtZXRob2Qgbm93IGlnbm9yZXMKICAgQmxvY2tpbmdJT0Vycm9yIGV4Y2VwdGlvbnMuCiAKQEAgLTEyMTIsMTYgKzIzODksNDIgQEAKICAgc2VxdWVuY2UgaXMgdXNlZCBvbiBzb21lIHRlcm1pbmFsIChleDogVEVSTT14dGVybS0yNTZjb2xvciIpIHRvIGVuYWJsZQogICBzdXBwb3J0IG9mIDggYml0IGNoYXJhY3RlcnMuCiAKKy0gSXNzdWUgIzQzNTA6IFJlbW92ZWQgYSBudW1iZXIgb2Ygb3V0LW9mLWRhdGVkIGFuZCBub24td29ya2luZyBmb3IgYSBsb25nIHRpbWUKKyAgVGtpbnRlciBtZXRob2RzLgorCistIElzc3VlICM2MTY3OiBTY3JvbGxiYXIuYWN0aXZhdGUoKSBub3cgcmV0dXJucyB0aGUgbmFtZSBvZiBhY3RpdmUgZWxlbWVudCBpZgorICB0aGUgYXJndW1lbnQgaXMgbm90IHNwZWNpZmllZC4gIFNjcm9sbGJhci5zZXQoKSBub3cgYWx3YXlzIGFjY2VwdHMgb25seSAyCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTUyNzU6IENsZWFuIHVwIGFuZCBzcGVlZCB1cCB0aGUgbnRwYXRoIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjE4ODg6IHBsaXN0bGliJ3MgbG9hZCgpIGFuZCBsb2FkcygpIG5vdyB3b3JrIGlmIHRoZSBmbXQgcGFyYW1ldGVyIGlzCiAgIHNwZWNpZmllZC4KIAorLSBJc3N1ZSAjMjIwMzI6IF9fcXVhbG5hbWVfXyBpbnN0ZWFkIG9mIF9fbmFtZV9fIGlzIG5vdyBhbHdheXMgdXNlZCB0byBmb3JtYXQKKyAgZnVsbHkgcXVhbGlmaWVkIGNsYXNzIG5hbWVzIG9mIFB5dGhvbiBpbXBsZW1lbnRlZCBjbGFzc2VzLgorCistIElzc3VlICMyMjAzMTogUmVwcnMgbm93IGFsd2F5cyB1c2UgaGV4YWRlY2ltYWwgZm9ybWF0IHdpdGggdGhlICIweCIgcHJlZml4CisgIHdoZW4gY29udGFpbiBhbiBpZCBpbiBmb3JtICIgYXQgMHguLi4iLgorCistIElzc3VlICMyMjAxODogc2lnbmFsLnNldF93YWtldXBfZmQoKSBub3cgcmFpc2VzIGFuIE9TRXJyb3IgaW5zdGVhZCBvZiBhCisgIFZhbHVlRXJyb3Igb24gYGBmc3RhdCgpYGAgZmFpbHVyZS4KKwogLSBJc3N1ZSAjMjEwNDQ6IHRhcmZpbGUub3BlbigpIG5vdyBoYW5kbGVzIGZpbGVvYmogd2l0aCBhbiBpbnRlZ2VyICduYW1lJwogICBhdHRyaWJ1dGUuICBCYXNlZCBvbiBwYXRjaCBieSBBbnRvaW5lIFBpZXRyaS4KIAotLSBJc3N1ZSAjMjE4Njc6IFByZXZlbnQgdHVydGxlIGNyYXNoIGR1ZSB0byBpbnZhbGlkIHVuZG8gYnVmZmVyIHNpemUuCistIElzc3VlICMyMTk2NjogUmVzcGVjdCAtcSBjb21tYW5kLWxpbmUgb3B0aW9uIHdoZW4gY29kZSBtb2R1bGUgaXMgcmFuLgogCiAtIElzc3VlICMxOTA3NjogRG9uJ3QgcGFzcyB0aGUgcmVkdW5kYW50ICdmaWxlJyBhcmd1bWVudCB0byBzZWxmLmVycm9yKCkuCiAKKy0gSXNzdWUgIzE2MzgyOiBJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIG9mIHdhcm5pbmdzLndhcm4oKSBmb3IgYmFkCisgIGNhdGVnb3J5LiBJbml0aWFsIHBhdGNoIGJ5IFBoaWwgRWxzb24uCisKKy0gSXNzdWUgIzIxOTMyOiBvcy5yZWFkKCkgbm93IHVzZXMgYSA6YzpmdW5jOmBQeV9zc2l6ZV90YCB0eXBlIGluc3RlYWQgb2YKKyAgOmM6dHlwZTpgaW50YCBmb3IgdGhlIHNpemUgdG8gc3VwcG9ydCByZWFkaW5nIG1vcmUgdGhhbiAyIEdCIGF0IG9uY2UuIE9uCisgIFdpbmRvd3MsIHRoZSBzaXplIGlzIHRydW5jdGVkIHRvIElOVF9NQVguIEFzIGFueSBjYWxsIHRvIG9zLnJlYWQoKSwgdGhlIE9TCisgIG1heSByZWFkIGxlc3MgYnl0ZXMgdGhhbiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RlZCBieXRlcy4KKwogLSBJc3N1ZSAjMjE5NDI6IEZpeGVkIHNvdXJjZSBmaWxlIHZpZXdpbmcgaW4gcHlkb2MncyBzZXJ2ZXIgbW9kZSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMxMTI1OTogYXN5bmNoYXQuYXN5bmNfY2hhdCgpLnNldF90ZXJtaW5hdG9yKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IKQEAgLTEyMzksOCArMjQ0Miw4IEBACiAtIElzc3VlICMyMTcxNDogRGlzYWxsb3cgdGhlIGNvbnN0cnVjdGlvbiBvZiBpbnZhbGlkIHBhdGhzIHVzaW5nCiAgIFBhdGgud2l0aF9uYW1lKCkuICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbnkgTGVlLgogCi0tIElzc3VlICMyMTg5NzogRml4IGEgY3Jhc2ggd2l0aCB0aGUgZl9sb2NhbHMgYXR0cmlidXRlIHdpdGggY2xvc3VyZQotICB2YXJpYWJsZXMgd2hlbiBmcmFtZS5jbGVhcigpIGhhcyBiZWVuIGNhbGxlZC4KKy0gSXNzdWUgIzE1MDE0OiBBZGRlZCAnYXV0aCcgbWV0aG9kIHRvIHNtdHBsaWIgdG8gbWFrZSBpbXBsZW1lbnRpbmcgYXV0aAorICBtZWNoYW5pc21zIHNpbXBsZXIsIGFuZCB1c2VkIGl0IGludGVybmFsbHkgaW4gdGhlIGxvZ2luIG1ldGhvZC4KIAogLSBJc3N1ZSAjMjExNTE6IEZpeGVkIGEgc2VnZmF1bHQgaW4gdGhlIHdpbnJlZyBtb2R1bGUgd2hlbiBgYE5vbmVgYCBpcyBwYXNzZWQKICAgYXMgYSBgYFJFR19CSU5BUllgYCB2YWx1ZSB0byBTZXRWYWx1ZUV4LiAgUGF0Y2ggYnkgSm9obiBFaHJlc21hbi4KQEAgLTEyNDgsOCArMjQ1MSwxNyBAQAogLSBJc3N1ZSAjMjEwOTA6IGlvLkZpbGVJTy5yZWFkYWxsKCkgZG9lcyBub3QgaWdub3JlIEkvTyBlcnJvcnMgYW55bW9yZS4gQmVmb3JlLAogICBpdCBpZ25vcmVkIEkvTyBlcnJvcnMgaWYgYXQgbGVhc3QgdGhlIGZpcnN0IEMgY2FsbCByZWFkKCkgc3VjY2VlZC4KIAorLSBJc3N1ZSAjNTgwMDogaGVhZGVycyBwYXJhbWV0ZXIgb2Ygd3NnaXJlZi5oZWFkZXJzLkhlYWRlcnMgaXMgbm93IG9wdGlvbmFsLgorICBJbml0aWFsIHBhdGNoIGJ5IFBhYmxvIFRvcnJlcyBOYXZhcnJldGUgYW5kIFNpbGVudEdob3N0LgorCiAtIElzc3VlICMyMTc4MTogc3NsLlJBTkRfYWRkKCkgbm93IHN1cHBvcnRzIHN0cmluZ3MgbG9uZ2VyIHRoYW4gMiBHQi4KIAorLSBJc3N1ZSAjMjE2Nzk6IFByZXZlbnQgZXh0cmFuZW91cyBmc3RhdCgpIGNhbGxzIGR1cmluZyBvcGVuKCkuICBQYXRjaCBieQorICBCb2h1c2xhdiBLYWJyZGEuCisKKy0gSXNzdWUgIzIxODYzOiBjUHJvZmlsZSBub3cgZGlzcGxheXMgdGhlIG1vZHVsZSBuYW1lIG9mIEMgZXh0ZW5zaW9uIGZ1bmN0aW9ucywKKyAgaW4gYWRkaXRpb24gdG8gdGhlaXIgb3duIG5hbWUuCisKIC0gSXNzdWUgIzExNDUzOiBhc3luY29yZTogZW1pdCBhIFJlc291cmNlV2FybmluZyB3aGVuIGFuIHVuY2xvc2VkIGZpbGVfd3JhcHBlcgogICBvYmplY3QgaXMgZGVzdHJveWVkLiBUaGUgZGVzdHJ1Y3RvciBub3cgY2xvc2VzIHRoZSBmaWxlIGlmIG5lZWRlZC4gVGhlCiAgIGNsb3NlKCkgbWV0aG9kIGNhbiBub3cgYmUgY2FsbGVkIHR3aWNlOiB0aGUgc2Vjb25kIGNhbGwgZG9lcyBub3RoaW5nLgpAQCAtMTI1OSw0OCArMjQ3MSw1MyBAQAogLSBJc3N1ZSAjMjE0NzY6IE1ha2Ugc3VyZSB0aGUgZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyIFRleHRJT1dyYXBwZXIgaXMKICAgZGlzY2FyZGVkIGFmdGVyIHBhcnNpbmcsIHNvIHRoZSBpbnB1dCBmaWxlIGlzbid0IHVuZXhwZWN0ZWRseSBjbG9zZWQuCiAKKy0gSXNzdWUgIzIwMjk1OiBpbWdoZHIgbm93IHJlY29nbml6ZXMgT3BlbkVYUiBmb3JtYXQgaW1hZ2VzLgorCiAtIElzc3VlICMyMTcyOTogVXNlZCB0aGUgIndpdGgiIHN0YXRlbWVudCBpbiB0aGUgZGJtLmR1bWIgbW9kdWxlIHRvIGVuc3VyZQogICBmaWxlcyBjbG9zaW5nLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgogCiAtIElzc3VlICMyMTQ5MTogc29ja2V0c2VydmVyOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBjaGlsZCBwcm9jZXNzZXMgcmVhcGluZy4KIAorLSBJc3N1ZSAjMjE3MTk6IEFkZGVkIHRoZSBgYHN0X2ZpbGVfYXR0cmlidXRlc2BgIGZpZWxkIHRvIG9zLnN0YXRfcmVzdWx0IG9uCisgIFdpbmRvd3MuCisKIC0gSXNzdWUgIzIxODMyOiBSZXF1aXJlIG5hbWVkIHR1cGxlIGlucHV0cyB0byBiZSBleGFjdCBzdHJpbmdzLgogCi0tIElzc3VlICMxOTE0NTogVGhlIHRpbWVzIGFyZ3VtZW50IGZvciBpdGVydG9vbHMucmVwZWF0IG5vdyBoYW5kbGVzCi0gIG5lZ2F0aXZlIHZhbHVlcyB0aGUgc2FtZSB3YXkgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFzIGl0IGRvZXMgZm9yCi0gIHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICMyMTgxMjogdHVydGxlLnNoYXBldHJhbnNmb3JtIGRpZCBub3QgdHJhbmZvcm0gdGhlIHR1cnRsZSBvbiB0aGUKLSAgZmlyc3QgY2FsbC4gIChJc3N1ZSBpZGVudGlmaWVkIGFuZCBmaXhlZCBieSBMaXRhIENoby4pCi0KLS0gSXNzdWUgIzIxNjM1OiBUaGUgZGlmZmxpYiBTZXF1ZW5jZU1hdGNoZXIuZ2V0X21hdGNoaW5nX2Jsb2NrcygpIG1ldGhvZAotICBjYWNoZSBkaWRuJ3QgbWF0Y2ggdGhlIGFjdHVhbCByZXN1bHQuICBUaGUgZm9ybWVyIHdhcyBhIGxpc3Qgb2YgdHVwbGVzCi0gIGFuZCB0aGUgbGF0dGVyIHdhcyBhIGxpc3Qgb2YgbmFtZWQgdHVwbGVzLgotCiAtIElzc3VlICMyMTcyMjogVGhlIGRpc3R1dGlscyAidXBsb2FkIiBjb21tYW5kIG5vdyBleGl0cyB3aXRoIGEgbm9uLXplcm8KICAgcmV0dXJuIGNvZGUgd2hlbiB1cGxvYWRpbmcgZmFpbHMuICBQYXRjaCBieSBNYXJ0aW4gRGVuZ2xlci4KIAogLSBJc3N1ZSAjMjE3MjM6IGFzeW5jaW8uUXVldWU6IHN1cHBvcnQgYW55IHR5cGUgb2YgbnVtYmVyIChleDogZmxvYXQpIGZvciB0aGUKICAgbWF4aW11bSBzaXplLiBQYXRjaCB3cml0dGVuIGJ5IFZhanJhc2t5IEtvay4KIAorLSBJc3N1ZSAjMjE3MTE6IHN1cHBvcnQgZm9yICJzaXRlLXB5dGhvbiIgZGlyZWN0b3JpZXMgaGFzIG5vdyBiZWVuIHJlbW92ZWQKKyAgZnJvbSB0aGUgc2l0ZSBtb2R1bGUgKGl0IHdhcyBkZXByZWNhdGVkIGluIDMuNCkuCisKKy0gSXNzdWUgIzE3NTUyOiBuZXcgc29ja2V0LnNlbmRmaWxlKCkgbWV0aG9kIGFsbG93aW5nIHRvIHNlbmQgYSBmaWxlIG92ZXIgYQorICBzb2NrZXQgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZSBvcy5zZW5kZmlsZSgpIG9uIFVOSVguCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICMxODAzOTogZGJtLmR1bXAub3BlbigpIG5vdyBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZQorICBmbGFnIGhhcyB0aGUgdmFsdWUgJ24nLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCiAtIElzc3VlICMyMTMyNjogQWRkIGEgbmV3IGlzX2Nsb3NlZCgpIG1ldGhvZCB0byBhc3luY2lvLkJhc2VFdmVudExvb3AuCiAgIHJ1bl9mb3JldmVyKCkgYW5kIHJ1bl91bnRpbF9jb21wbGV0ZSgpIG1ldGhvZHMgb2YgYXN5bmNpby5CYXNlRXZlbnRMb29wIG5vdwogICByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGV2ZW50IGxvb3Agd2FzIGNsb3NlZC4KIAotLSBJc3N1ZSAjMjE3NzQ6IEZpeGVkIE5hbWVFcnJvciBmb3IgYW4gaW5jb3JyZWN0IHZhcmlhYmxlIHJlZmVyZW5jZSBpbiB0aGUKLSAgWE1MIE1pbmlkb20gY29kZSBmb3IgY3JlYXRpbmcgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMuCi0gIChGb3VuZCBhbmQgZml4ZWQgYnkgQ2xhdWRpdSBQb3BhLikKLQogLSBJc3N1ZSAjMjE3NjY6IFByZXZlbnQgYSBzZWN1cml0eSBob2xlIGluIENHSUhUVFBTZXJ2ZXIgYnkgVVJMIHVucXVvdGluZyBwYXRocwogICBiZWZvcmUgY2hlY2tpbmcgZm9yIGEgQ0dJIHNjcmlwdCBhdCB0aGF0IHBhdGguCiAKIC0gSXNzdWUgIzIxMzEwOiBGaXhlZCBwb3NzaWJsZSByZXNvdXJjZSBsZWFrIGluIGZhaWxlZCBvcGVuKCkuCiAKKy0gSXNzdWUgIzIxMjU2OiBQcmludG91dCBvZiBrZXl3b3JkIGFyZ3Mgc2hvdWxkIGJlIGluIGRldGVybWluaXN0aWMgb3JkZXIgaW4KKyAgYSBtb2NrIGZ1bmN0aW9uIGNhbGwuIFRoaXMgd2lsbCBoZWxwIHRvIHdyaXRlIGJldHRlciBkb2N0ZXN0cy4KKwogLSBJc3N1ZSAjMjE2Nzc6IEZpeGVkIGNoYWluaW5nIG5vbm5vcm1hbGl6ZWQgZXhjZXB0aW9ucyBpbiBpbyBjbG9zZSgpIG1ldGhvZHMuCiAKIC0gSXNzdWUgIzExNzA5OiBGaXggdGhlIHB5ZG9jLmhlbHAgZnVuY3Rpb24gdG8gbm90IGZhaWwgd2hlbiBzeXMuc3RkaW4gaXMgbm90IGEKICAgdmFsaWQgZmlsZS4KIAorLSBJc3N1ZSAjMjE1MTU6IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUgbm93IHVzZXMgb3MuT19UTVBGSUxFIGZsYWcgaXMgYXZhaWxhYmxlLgorCiAtIElzc3VlICMxMzIyMzogRml4IHB5ZG9jLndyaXRlZG9jIHNvIHRoYXQgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgbWV0aG9kcwogICB0aGF0IHVzZSAnc2VsZicgaW4gdGhlIGV4YW1wbGUgY29kZSBpcyBnZW5lcmF0ZWQgY29ycmVjdGx5LgogCkBAIC0xMzExLDYgKzI1MjgsOSBAQAogICBsaW1pdHMgd291bGQgb3RoZXJ3aXNlIGFsbG93LiAgT24gc3lzdGVtcyB3aXRoIGEgZnVuY3Rpb25pbmcgL3Byb2Mvc2VsZi9mZAogICBvciAvZGV2L2ZkIGludGVyZmFjZSB0aGUgbWF4IGlzIG5vdyBpZ25vcmVkIGFuZCBhbGwgZmRzIGFyZSBjbG9zZWQuCiAKKy0gSXNzdWUgIzIwMzgzOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYygpIGFzIHRoZSBwcmVmZXJyZWQgd2F5CisgIHRvIGNyZWF0ZSBhIG5ldyBtb2R1bGUuCisKIC0gSXNzdWUgIzIxNTUyOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IG9mIHRvbyBsb25nIHN0cmluZyBsZW5ndGhzIGluCiAgIHRoZSB0a2ludGVyIG1vZHVsZSBvbiA2NC1iaXQgcGxhdGZvcm1zLgogCkBAIC0xMzE5LDggKzI1MzksMTQgQEAKICAgZXJyb3IgYnViYmxlIHVwIGFzIHRoaXMgImJhZCBkYXRhIiBhcHBlYXJzIGluIG1hbnkgcmVhbCB3b3JsZCB6aXAgZmlsZXMgaW4KICAgdGhlIHdpbGQgYW5kIGlzIGlnbm9yZWQgYnkgb3RoZXIgemlwIHRvb2xzLgogCistIElzc3VlICMxMzc0MjogQWRkZWQgImtleSIgYW5kICJyZXZlcnNlIiBwYXJhbWV0ZXJzIHRvIGhlYXBxLm1lcmdlKCkuCisgIChGaXJzdCBkcmFmdCBvZiBwYXRjaCBjb250cmlidXRlZCBieSBTaW1vbiBTYXBpbi4pCisKIC0gSXNzdWUgIzIxNDAyOiB0a2ludGVyLnR0ayBub3cgd29ya3Mgd2hlbiBkZWZhdWx0IHJvb3Qgd2luZG93IGlzIG5vdCBzZXQuCiAKKy0gSXNzdWUgIzMwMTU6IF90a2ludGVyLmNyZWF0ZSgpIG5vdyBjcmVhdGVzIHRrYXBwIG9iamVjdCB3aXRoIHdhbnRvYmplY3Q9MSBieQorICBkZWZhdWx0LgorCiAtIElzc3VlICMxMDIwMzogc3FsaXRlMy5Sb3cgbm93IHRydWx5IHN1cHBvcnRzIHNlcXVlbmNlIHByb3RvY29sLiAgSW4gcGFydGljdWxyCiAgIGl0IHN1cHBvcnRzIHJldmVyc2UoKSBhbmQgbmVnYXRpdmUgaW5kaWNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KIApAQCAtMTMyOCw5NyArMjU1NCwyMSBAQAogICBpbnRlcnByZXRlciBhbGlhc2VzIChweXRob24sIHB5dGhvbjMpIGFyZSBub3cgY3JlYXRlZCBieSBjb3B5aW5nIHJhdGhlciB0aGFuCiAgIHN5bWxpbmtpbmcuCiAKLS0gSXNzdWUgIzE0NzEwOiBwa2d1dGlsLmdldF9sb2FkZXIoKSBubyBsb25nZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIE5vbmUgaXMKLSAgZm91bmQgaW4gc3lzLm1vZHVsZXMuCistIElzc3VlICMyMDE5NzogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFdlYlAgaW1hZ2UgdHlwZSBpbiB0aGUgaW1naGRyIG1vZHVsZS4KKyAgUGF0Y2ggYnkgRmFicmljZSBBbmVjaGUgYW5kIENsYXVkaXUgUG9wYS4KIAotLSBJc3N1ZSAjMTQ3MTA6IHBrZ3V0aWwuZmluZF9sb2FkZXIoKSBubyBsb25nZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGEKLSAgbW9kdWxlIGRvZXNuJ3QgZXhpc3QuCistIElzc3VlICMyMTUxMzogU3BlZWR1cCBzb21lIHByb3BlcnRpZXMgb2YgSVAgYWRkcmVzc2VzIChJUHY0QWRkcmVzcywKKyAgSVB2NkFkZHJlc3MpIHN1Y2ggYXMgLmlzX3ByaXZhdGUgb3IgLmlzX211bHRpY2FzdC4KIAotLSBJc3N1ZSAjMjE0ODE6IEFyZ3BhcnNlIGVxdWFsaXR5IGFuZCBpbmVxdWFsaXR5IHRlc3RzIG5vdyByZXR1cm4KLSAgTm90SW1wbGVtZW50ZWQgd2hlbiBjb21wYXJpbmcgdG8gYW4gdW5rbm93biB0eXBlLgotCi0tIElzc3VlICM4NzQzOiBGaXggaW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIHNldCBvYmplY3RzIGFuZCB0aGUKLSAgY29sbGVjdGlvbnMuU2V0KCkgYWJzdHJhY3QgYmFzZSBjbGFzcy4KLQotLSBJc3N1ZSAjMTMzNTU6IHJhbmRvbS50cmlhbmd1bGFyKCkgbm8gbG9uZ2VyIGZhaWxzIHdpdGggYSBaZXJvRGl2aXNpb25FcnJvcgotICB3aGVuIGxvdyBlcXVhbHMgaGlnaC4KKy0gSXNzdWUgIzIxMTM3OiBJbXByb3ZlIHRoZSByZXByIGZvciB0aHJlYWRpbmcuTG9jaygpIGFuZCBpdHMgdmFyaWFudHMKKyAgYnkgc2hvd2luZyB0aGUgImxvY2tlZCIgb3IgInVubG9ja2VkIiBzdGF0dXMuICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgogCiAtIElzc3VlICMyMTUzODogVGhlIHBsaXN0bGliIG1vZHVsZSBub3cgc3VwcG9ydHMgbG9hZGluZyBvZiBiaW5hcnkgcGxpc3QgZmlsZXMKICAgd2hlbiByZWZlcmVuY2Ugb3Igb2Zmc2V0IHNpemUgaXMgbm90IGEgcG93ZXIgb2YgdHdvLgogCi0tIElzc3VlICMyMTgwMTogVmFsaWRhdGUgdGhhdCBfX3NpZ25hdHVyZV9fIGlzIE5vbmUgb3IgYW4gaW5zdGFuY2Ugb2YgU2lnbmF0dXJlLgorLSBJc3N1ZSAjMjE0NTU6IEFkZCBhIGRlZmF1bHQgYmFja2xvZyB0byBzb2NrZXQubGlzdGVuKCkuCiAKLS0gSXNzdWUgIzIxOTIzOiBQcmV2ZW50IEF0dHJpYnV0ZUVycm9yIGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyCi0gIGR1ZSB0byBwb3NzaWJsZSB1bmluaXRpYWxpemVkIF9jb25maWdfdmFycy4KLQotLSBJc3N1ZSAjMjEzMjM6IEZpeCBodHRwLnNlcnZlciB0byBhZ2FpbiBoYW5kbGUgc2NyaXB0cyBpbiBDR0kgc3ViZGlyZWN0b3JpZXMsCi0gIGJyb2tlbiBieSB0aGUgZml4IGZvciBzZWN1cml0eSBpc3N1ZSAjMTk0MzUuICBQYXRjaCBieSBaYWNoIEJ5cm5lLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIxNzY6IFVwZGF0ZSB0aGUgY3R5cGVzIG1vZHVsZSdzIGxpYmZmaSB0byB2My4xLiAgVGhpcyByZWxlYXNlCi0gIGFkZHMgc3VwcG9ydCBmb3IgdGhlIExpbnV4IEFBcmNoNjQgYW5kIFBPV0VSUEMgRUxGIEFCSXYyIGxpdHRsZSBlbmRpYW4KLSAgYXJjaGl0ZWN0dXJlcy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NjYxOiBweXRob24ub3JnIE9TIFggaW5zdGFsbGVycyBhcmUgbm93IGRpc3RyaWJ1dGVkIGFzIHNpZ25lZAotICBpbnN0YWxsZXIgcGFja2FnZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBHYXRla2VlcGVyIHNlY3VyaXR5IGZlYXR1cmUuCi0KLS0gSXNzdWUgIzIxOTU4OiBEZWZpbmUgSEFWRV9ST1VORCB3aGVuIGJ1aWxkaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEzIGFuZAotICBhYm92ZS4gIFBhdGNoIGJ5IFphY2hhcnkgVHVybmVyLgotCi0tIElzc3VlICMxNTc1OTogIm1ha2Ugc3VzcGljaW91cyIsICJtYWtlIGxpbmtjaGVjayIgYW5kICJtYWtlIGRvY3Rlc3QiIGluIERvYy8KLSAgbm93IGRpc3BsYXkgc3BlY2lhbCBtZXNzYWdlIHdoZW4gYW5kIG9ubHkgd2hlbiB0aGVyZSBhcmUgZmFpbHVyZXMuCi0KLS0gSXNzdWUgIzE3MDk1OiBGaXggTW9kdWxlcy9TZXR1cCAqc2hhcmVkKiBzdXBwb3J0LgotCi0tIElzc3VlICMyMTgxMTogQW50aWNpcGF0ZWQgZml4ZXMgdG8gc3VwcG9ydCBPUyBYIHZlcnNpb25zID4gMTAuOS4KLQotLSBJc3N1ZSAjMjExNjY6IFByZXZlbnQgcG9zc2libGUgc2VnZmF1bHRzIGFuZCBvdGhlciByYW5kb20gZmFpbHVyZXMgb2YKLSAgcHl0aG9uIC0tZ2VuZXJhdGUtcG9zaXgtdmFycyBpbiBweWJ1aWxkZGlyLnR4dCBidWlsZCB0YXJnZXQuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTczOTA6IEFkanVzdCBFZGl0b3Igd2luZG93IHRpdGxlOyByZW1vdmUgJ1B5dGhvbicsCi0gIG1vdmUgdmVyc2lvbiB0byBlbmQuCi0KLS0gSXNzdWUgIzE0MTA1OiBJZGxlIGRlYnVnZ2VyIGJyZWFrcG9pbnRzIG5vIGxvbmdlciBkaXNhcHBlYXIKLSAgd2hlbiBpbnNldGluZyBvciBkZWxldGluZyBsaW5lcy4KLQotLSBJc3N1ZSAjMTcxNzI6IFR1cnRsZWRlbW8gY2FuIG5vdyBiZSBydW4gZnJvbSBJZGxlLgotICBDdXJyZW50bHksIHRoZSBlbnRyeSBpcyBvbiB0aGUgSGVscCBtZW51LCBidXQgaXQgbWF5IG1vdmUgdG8gUnVuLgotICBQYXRjaCBieSBSYW1jaGFuZHJhIEFwdCBhbmQgTGl0YSBDaG8uCi0KLS0gSXNzdWUgIzIxNzY1OiBBZGQgc3VwcG9ydCBmb3Igbm9uLWFzY2lpIGlkZW50aWZpZXJzIHRvIEh5cGVyUGFyc2VyLgotCi0tIElzc3VlICMyMTk0MDogQWRkIHVuaXR0ZXN0IGZvciBXaWRnZXRSZWRpcmVjdG9yLiBJbml0aWFsIHBhdGNoIGJ5IFNhaW1hZGhhdgotICBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTg1OTI6IEFkZCB1bml0dGVzdCBmb3IgU2VhcmNoRGlhbG9nQmFzZS4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgotCi0tIElzc3VlICMyMTY5NDogQWRkIHVuaXR0ZXN0IGZvciBQYXJlbk1hdGNoLiBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzIxNjg2OiBhZGQgdW5pdHRlc3QgZm9yIEh5cGVyUGFyc2VyLiBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYKLSAgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzEyMzg3OiBBZGQgbWlzc2luZyB1cHBlcihsb3dlciljYXNlIHZlcnNpb25zIG9mIGRlZmF1bHQgV2luZG93cyBrZXkKLSAgYmluZGluZ3MgZm9yIElkbGUgc28gQ2FwcyBMb2NrIGRvZXMgbm90IGRpc2FibGUgdGhlbS4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzIxNjk1OiBDbG9zaW5nIGEgRmluZC1pbi1maWxlcyBvdXRwdXQgd2luZG93IHdoaWxlIHRoZSBzZWFyY2ggaXMKLSAgc3RpbGwgaW4gcHJvZ3Jlc3Mgbm8gbG9uZ2VyIGNsb3NlcyBJZGxlLgotCi0tIElzc3VlICMxODkxMDogQWRkIHVuaXR0ZXN0IGZvciB0ZXh0Vmlldy4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgotCi0tIElzc3VlICMxODI5MjogQWRkIHVuaXR0ZXN0IGZvciBBdXRvRXhwYW5kLiBQYXRjaCBieSBTYWloYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzE4NDA5OiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9Db21wbGV0ZS4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgotCi1UZXN0cwotLS0tLS0KKy0gSXNzdWUgIzIxNTI1OiBNb3N0IFRraW50ZXIgbWV0aG9kcyB3aGljaCBhY2NlcHRlZCB0dXBsZXMgbm93IGFjY2VwdCBsaXN0cyB0b28uCiAKIC0gSXNzdWUgIzIyMTY2OiBXaXRoIHRoZSBhc3Npc3RhbmNlIG9mIGEgbmV3IGludGVybmFsIF9jb2RlY3MuX2ZvcmdldF9jb2RlYwogICBoZWxwaW5nIGZ1bmN0aW9uLCB0ZXN0X2NvZGVjcyBub3cgY2xlYXJzIHRoZSBlbmNvZGluZyBjYWNoZXMgdG8gYXZvaWQgdGhlCkBAIC0xNDI3LDE4MSArMjU3Nyw5MyBAQAogLSBJc3N1ZSAjMjIyMzY6IFRraW50ZXIgdGVzdHMgbm93IGRvbid0IHJldXNlIGRlZmF1bHQgcm9vdCB3aW5kb3cuICBOZXcgcm9vdAogICB3aW5kb3cgaXMgY3JlYXRlZCBmb3IgZXZlcnkgdGVzdCBjbGFzcy4KIAotLSBJc3N1ZSAjMjA3NDY6IEZpeCB0ZXN0X3BkYiB0byBydW4gaW4gcmVmbGVhayBtb2RlICgtUikuICBQYXRjaCBieSBYYXZpZXIKLSAgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMjIwNjA6IHRlc3RfY3R5cGVzIGhhcyBiZWVuIHNvbWV3aGF0IGNsZWFuZWQgdXAgYW5kIHNpbXBsaWZpZWQ7IGl0Ci0gIG5vdyB1c2VzIHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHRvIGZpbmQgaXRzIHRlc3RzLgotCi0tIElzc3VlICMyMjEwNDogcmVncnRlc3QucHkgbm8gbG9uZ2VyIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBzdWl0ZSBvZiB0ZXN0cwotICBsb2FkZWQgZnJvbSB0ZXN0IG1vZHVsZXMgdGhhdCBkb24ndCBkZWZpbmUgdGVzdF9tYWluKCkuCi0KLS0gSXNzdWUgIzIyMDAyOiBBZGRlZCBgYGxvYWRfcGFja2FnZV90ZXN0c2BgIGZ1bmN0aW9uIHRvIHRlc3Quc3VwcG9ydCBhbmQgdXNlZAotICBpdCB0byBpbXBsZW1lbnQvYXVnbWVudCB0ZXN0IGRpc2NvdmVyeSBpbiB0ZXN0X2FzeW5jaW8sIHRlc3RfZW1haWwsCi0gIHRlc3RfaW1wb3J0bGliLCB0ZXN0X2pzb24sIGFuZCB0ZXN0X3Rvb2xzLgotCi0tIElzc3VlICMyMTk3NjogRml4IHRlc3Rfc3NsIHRvIGFjY2VwdCBMaWJyZVNTTCB2ZXJzaW9uIHN0cmluZ3MuICBUaGFua3MKLSAgdG8gV2lsbGlhbSBPcnIuCi0KLS0gSXNzdWUgIzIxOTE4OiBDb252ZXJ0ZWQgdGVzdF90b29scyBmcm9tIGEgbW9kdWxlIHRvIGEgcGFja2FnZSBjb250YWluaW5nCi0gIHNlcGFyYXRlIHRlc3QgZmlsZXMgZm9yIGVhY2ggdGVzdGVkIHNjcmlwdC4KLQotLSBJc3N1ZSAjMjAxNTU6IENoYW5nZWQgSFRUUCBtZXRob2QgbmFtZXMgaW4gZmFpbGluZyB0ZXN0cyBpbiB0ZXN0X2h0dHBzZXJ2ZXJzCi0gIHNvIHRoYXQgcGFja2V0IGZpbHRlcmluZyBzb2Z0d2FyZSAoc3BlY2lmaWNhbGx5IFdpbmRvd3MgQmFzZSBGaWx0ZXJpbmcgRW5naW5lKQotICBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgdHJhbnNhY3Rpb24gc2VtYW50aWNzIGV4cGVjdGVkIGJ5IHRoZSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTk0OTM6IFJlZmFjdG9yZWQgdGhlIGN0eXBlcyB0ZXN0IHBhY2thZ2UgdG8gc2tpcCB0ZXN0cyBleHBsaWNpdGx5Ci0gIHJhdGhlciB0aGFuIHNpbGVudGx5LgotCi0tIElzc3VlICMxODQ5MjogQWxsIHJlc291cmNlcyBhcmUgbm93IGFsbG93ZWQgd2hlbiB0ZXN0cyBhcmUgbm90IHJ1biBieQotICByZWdydGVzdC5weS4KLQotLSBJc3N1ZSAjMjE2MzQ6IEZpeCBweXN0b25lIG1pY3JvLWJlbmNobWFyazogdXNlIGZsb29yIGRpdmlzaW9uIGluc3RlYWQgb2YgdHJ1ZQotICBkaXZpc2lvbiB0byBiZW5jaG1hcmsgaW50ZWdlcnMgaW5zdGVhZCBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBTZXQgcHlzdG9uZQotICB2ZXJzaW9uIHRvIDEuMi4gUGF0Y2ggd3JpdHRlbiBieSBMZW5uYXJ0IFJlZ2Vicm8uCi0KLS0gSXNzdWUgIzIxNjA1OiBBZGRlZCB0ZXN0cyBmb3IgVGtpbnRlciBpbWFnZXMuCi0KLS0gSXNzdWUgIzIxNDkzOiBBZGRlZCB0ZXN0IGZvciBudHBhdGguZXhwYW5kdXNlcigpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMxOTkyNTogQWRkZWQgdGVzdHMgZm9yIHRoZSBzcHdkIG1vZHVsZS4gT3JpZ2luYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgotCi0tIElzc3VlICMyMTUyMjogQWRkZWQgVGtpbnRlciB0ZXN0cyBmb3IgTGlzdGJveC5pdGVtY29uZmlndXJlKCksCi0gIFBhbmVkV2luZG93LnBhbmVjb25maWd1cmUoKSwgYW5kIE1lbnUuZW50cnljb25maWd1cmUoKS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMTc3NzogVGhlIGJpbmFyeSBzZXF1ZW5jZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgYXJlIG5vdwotICBkb2N1bWVudGVkIGV4cGxpY2l0bHksIHJhdGhlciB0aGFuIGFzc3VtaW5nIHVzZXJzIHdpbGwgYmUgYWJsZSB0byBkZXJpdmUKLSAgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBmcm9tIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc3RyIG1ldGhvZHMuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjE2NzEsICMyMjE2MCwgQ1ZFLTIwMTQtMDIyNDogVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIGhhcyBiZWVuCi0gIHVwZGF0ZWQgdG8gMS4wLjFpLgotCi0tIElzc3VlICMxMDc0NzogVXNlIHZlcnNpb25lZCBsYWJlbHMgaW4gdGhlIFdpbmRvd3Mgc3RhcnQgbWVudS4KLSAgUGF0Y2ggYnkgT2xpdmUgS2lsYnVybi4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyMjAxOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSB6aXBmaWxlIG1vZHVsZSBub3cgY29ycmVjdGx5Ci0gIGV4dHJhY3RzIFpJUCBmaWxlcyB3aXRoIGRpcmVjdG9yeSBlbnRyaWVzLiAgUGF0Y2ggYnkgUnlhbiBXaWxzb24uCi0KLS0gSXNzdWUgIzIxOTA2OiBNYWtlIFRvb2xzL3NjcmlwdHMvbWQ1c3VtLnB5IHdvcmsgaW4gUHl0aG9uIDMuCi0gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KLQotLSBJc3N1ZSAjMjE2Mjk6IEZpeCBBcmd1bWVudCBDbGluaWMncyAiLS1jb252ZXJ0ZXJzIiBmZWF0dXJlLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNC0wNS0xOAotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjE0MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBidWlsdGluIGZ1bmN0aW9uIHN1cGVyKCkgd2hlbiBjYWxsZWQgd2l0aG91dAotICBhcmd1bWVudCBhbmQgd2l0aG91dCBjdXJyZW50IGZyYW1lIChleDogZW1iZWRkZWQgUHl0aG9uKS4KLQotLSBJc3N1ZSAjMjE0MjU6IEZpeCBmbHVzaGluZyBvZiBzdGFuZGFyZCBzdHJlYW1zIGluIHRoZSBpbnRlcmFjdGl2ZQotICBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMjE0MzU6IEluIHJhcmUgY2FzZXMsIHdoZW4gcnVubmluZyBmaW5hbGl6ZXJzIG9uIG9iamVjdHMgaW4gY3ljbGljCi0gIHRyYXNoIGEgYmFkIHBvaW50ZXIgZGVyZWZlcmVuY2UgY291bGQgb2NjdXIgZHVlIHRvIGEgc3VidGxlIGZsYXcgaW4KLSAgaW50ZXJuYWwgaXRlcmF0aW9uIGxvZ2ljLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KIC0gSXNzdWUgIzEwNzQ0OiBGaXggUEVQIDMxMTggZm9ybWF0IHN0cmluZ3Mgb24gY3R5cGVzIG9iamVjdHMgd2l0aCBhIG5vbnRyaXZpYWwKICAgc2hhcGUuCiAKKy0gSXNzdWUgIzIwODI2OiBPcHRpbWl6ZSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKCkuCisKKy0gSXNzdWUgIzIxNDg3OiBPcHRpbWl6ZSBpcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoKSBhbmQKKyAgaXBhZGRyZXNzLntJUHY0TmV0d29yayxJUHY2TmV0d29ya30uc3VibmV0cygpLgorCistIElzc3VlICMyMTQ4NjogT3B0aW1pemUgcGFyc2luZyBvZiBuZXRtYXNrcyBpbiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsgYW5kCisgIGlwYWRkcmVzcy5JUHY2TmV0d29yay4KKworLSBJc3N1ZSAjMTM5MTY6IERpc2FsbG93ZWQgdGhlIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlciBmb3Igbm9uIFVURi0qCisgIGVuY29kaW5ncy4KKwogLSBJc3N1ZSAjMjA5OTg6IEZpeGVkIHJlLmZ1bGxtYXRjaCgpIG9mIHJlcGVhdGVkIHNpbmdsZSBjaGFyYWN0ZXIgcGF0dGVybgogICB3aXRoIGlnbm9yZSBjYXNlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWF0dGhldyBCYXJuZXR0LgogCiAtIElzc3VlICMyMTA3NTogZmlsZWlucHV0LkZpbGVJbnB1dCBub3cgcmVhZHMgYnl0ZXMgZnJvbSBzdGFuZGFyZCBzdHJlYW0gaWYKICAgYmluYXJ5IG1vZGUgaXMgc3BlY2lmaWVkLiAgUGF0Y2ggYnkgU2FtIEtpbWJyZWwuCiAKLS0gSXNzdWUgIzIxMzk2OiBGaXggVGV4dElPV3JhcHBlciguLi4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkgdG8gbm90IGZvcmNlIGEKLSAgZmx1c2goKSBvbiB0aGUgdW5kZXJseWluZyBiaW5hcnkgc3RyZWFtLiAgUGF0Y2ggYnkgYWtpcmEuCistIElzc3VlICMxOTc3NTogQWRkIGEgc2FtZWZpbGUoKSBtZXRob2QgdG8gcGF0aGxpYiBQYXRoIG9iamVjdHMuICBJbml0aWFsCisgIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KIAotLSBJc3N1ZSAjMjE0NzA6IERvIGEgYmV0dGVyIGpvYiBzZWVkaW5nIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBieQotICB1c2luZyBlbm91Z2ggYnl0ZXMgdG8gc3BhbiB0aGUgZnVsbCBzdGF0ZSBzcGFjZSBvZiB0aGUgTWVyc2VubmUgVHdpc3Rlci4KKy0gSXNzdWUgIzIxMjI2OiBTZXQgdXAgbW9kdWxlcyBwcm9wZXJseSBpbiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdAorICAoYW5kIGZyaWVuZHMpLgogCiAtIElzc3VlICMyMTM5ODogRml4IGFuIHVuaWNvZGUgZXJyb3IgaW4gdGhlIHB5ZG9jIHBhZ2VyIHdoZW4gdGhlIGRvY3VtZW50YXRpb24KICAgY29udGFpbnMgY2hhcmFjdGVycyBub3QgZW5jb2RhYmxlIHRvIHRoZSBzdGRvdXQgZW5jb2RpbmcuCiAKLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMTY1MzE6IGlwYWRkcmVzcy5JUHY0TmV0d29yayBhbmQgaXBhZGRyZXNzLklQdjZOZXR3b3JrIG5vdyBhY2NlcHQKKyAgYW4gKGFkZHJlc3MsIG5ldG1hc2spIHR1cGxlIGFyZ3VtZW50LCBzbyBhcyB0byBlYXNpbHkgY29uc3RydWN0IG5ldHdvcmsKKyAgb2JqZWN0cyBmcm9tIGV4aXN0aW5nIGFkZHJlc3Nlcy4KIAotLSBJc3N1ZSAjMTc3NTY6IEZpeCB0ZXN0X2NvZGUgdGVzdCB3aGVuIHJ1biBmcm9tIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24uCistIElzc3VlICMyMTE1NjogaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyLnNvdXJjZV90b19jb2RlKCkgaXMgbm93IGEKKyAgc3RhdGljbWV0aG9kLgogCi0tIElzc3VlICMxNzc1MjogRml4IGRpc3R1dGlscyB0ZXN0cyB3aGVuIHJ1biBmcm9tIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24uCistIElzc3VlICMyMTQyNDogU2ltcGxpZmllZCBhbmQgb3B0aW1pemVkIGhlYXFwLm5sYXJnZXN0KCkgYW5kIG5tc21hbGxlc3QoKQorICB0byBtYWtlIGZld2VyIHR1cGxlIGNvbXBhcmlzb25zLgogCi1JRExFCi0tLS0tCistIElzc3VlICMyMTM5NjogRml4IFRleHRJT1dyYXBwZXIoLi4uLCB3cml0ZV90aHJvdWdoPVRydWUpIHRvIG5vdCBmb3JjZSBhCisgIGZsdXNoKCkgb24gdGhlIHVuZGVybHlpbmcgYmluYXJ5IHN0cmVhbS4gIFBhdGNoIGJ5IGFraXJhLgogCi0tIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCi0gIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCi0gIGFzIG5lZWRlZCB0byB3b3JrIHdpdGggaHRlc3QuICBSdW5uaW5nIHRoZSBtb2R1bGUgYXMgX19tYWluX18gcnVucyBhbGwgdGVzdHMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjFyYzE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTA1LTA1Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMTI3NDogRGVmaW5lIFBBVEhfTUFYIGZvciBHTlUvSHVyZCBpbiBQeXRob24vcHl0aG9ucnVuLmMuCi0KLS0gSXNzdWUgIzIxMjA5OiBGaXggc2VuZGluZyB0dXBsZXMgdG8gY3VzdG9tIGdlbmVyYXRvciBvYmplY3RzIHdpdGggdGhlIHlpZWxkCi0gIGZyb20gc3ludGF4LgotCi0tIElzc3VlICMyMTEzNDogRml4IHNlZ2ZhdWx0IHdoZW4gc3RyIGlzIGNhbGxlZCBvbiBhbiB1bmluaXRpYWxpemVkCi0gIFVuaWNvZGVFbmNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yLCBvciBVbmljb2RlVHJhbnNsYXRlRXJyb3Igb2JqZWN0LgotCi0tIElzc3VlICMxOTUzNzogRml4IFB5VW5pY29kZV9EQVRBKCkgYWxpZ25tZW50IHVuZGVyIG02OGsuICBQYXRjaCBieQotICBBbmRyZWFzIFNjaHdhYi4KLQotLSBJc3N1ZSAjMjA5Mjk6IEFkZCBhIHR5cGUgY2FzdCB0byBhdm9pZCBzaGlmdGluZyBhIG5lZ2F0aXZlIG51bWJlci4KLQotLSBJc3N1ZSAjMjA3MzE6IFByb3Blcmx5IHBvc2l0aW9uIGluIHNvdXJjZSBjb2RlIGZpbGVzIGV2ZW4gaWYgdGhleQotICBhcmUgb3BlbmVkIGluIHRleHQgbW9kZS4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMjA2Mzc6IEtleS1zaGFyaW5nIG5vdyBhbHNvIHdvcmtzIGZvciBpbnN0YW5jZSBkaWN0aW9uYXJpZXMgb2YKLSAgc3ViY2xhc3Nlcy4gIFBhdGNoIGJ5IFBldGVyIEluZ2VicmV0c29uLgotCi0tIElzc3VlICMxMjU0NjogQWxsb3cgXHgwMCB0byBiZSB1c2VkIGFzIGEgZmlsbCBjaGFyYWN0ZXIgd2hlbiB1c2luZyBzdHIsIGludCwKLSAgZmxvYXQsIGFuZCBjb21wbGV4IF9fZm9ybWF0X18gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM1OTg6IE1vZGlmeSBzdHJpbmcuRm9ybWF0dGVyIHRvIHN1cHBvcnQgYXV0by1udW1iZXJpbmcgb2YKLSAgcmVwbGFjZW1lbnQgZmllbGRzLiBJdCBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygc3RyLmZvcm1hdCgpIGluCi0gIHRoaXMgcmVnYXJkLiBQYXRjaGVzIGJ5IFBoaWwgRWxzb24gYW5kIFJhbWNoYW5kcmEgQXB0ZS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTgzMTQ6IFVubGluayBub3cgcmVtb3ZlcyBqdW5jdGlvbnMgb24gV2luZG93cy4gUGF0Y2ggYnkgS2ltIEdyw6RzbWFuCiAKIC0gSXNzdWUgIzIxMDg4OiBCdWdmaXggZm9yIGN1cnNlcy53aW5kb3cuYWRkY2goKSByZWdyZXNzaW9uIGluIDMuNC4wLgogICBJbiBwb3J0aW5nIHRvIEFyZ3VtZW50IENsaW5pYywgdGhlIGZpcnN0IHR3byBhcmd1bWVudHMgd2VyZSByZXZlcnNlZC4KIAorLSBJc3N1ZSAjMjE0MDc6IF9kZWNpbWFsOiBUaGUgbW9kdWxlIG5vdyBzdXBwb3J0cyBmdW5jdGlvbiBzaWduYXR1cmVzLgorCistIElzc3VlICMxMDY1MDogUmVtb3ZlIHRoZSBub24tc3RhbmRhcmQgJ3dhdGNoZXhwJyBwYXJhbWV0ZXIgZnJvbSB0aGUKKyAgRGVjaW1hbC5xdWFudGl6ZSgpIG1ldGhvZCBpbiB0aGUgUHl0aG9uIHZlcnNpb24uICBJdCBoYWQgbmV2ZXIgYmVlbgorICBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uCisKIC0gSXNzdWUgIzIxNDY5OiBSZWR1Y2VkIHRoZSByaXNrIG9mIGZhbHNlIHBvc2l0aXZlcyBpbiByb2JvdHBhcnNlciBieQogICBjaGVja2luZyB0byBtYWtlIHN1cmUgdGhhdCByb2JvdHMudHh0IGhhcyBiZWVuIHJlYWQgb3IgZG9lcyBub3QgZXhpc3QKICAgcHJpb3IgdG8gcmV0dXJuaW5nIFRydWUgaW4gY2FuX2ZldGNoKCkuCiAKKy0gSXNzdWUgIzE5NDE0OiBIYXZlIHRoZSBPcmRlcmVkRGljdCBtYXJrIGRlbGV0ZWQgbGlua3MgYXMgdW51c2FibGUuCisgIFRoaXMgZ2l2ZXMgYW4gZWFybHkgZmFpbHVyZSBpZiB0aGUgbGluayBpcyBkZWxldGVkIGR1cmluZyBpdGVyYXRpb24uCisKKy0gSXNzdWUgIzIxNDIxOiBBZGQgX19zbG90c19fIHRvIHRoZSBNYXBwaW5nVmlld3MgQUJDLgorICBQYXRjaCBieSBKb3NoIFJvc2VuYmVyZy4KKworLSBJc3N1ZSAjMjExMDE6IEVsaW1pbmF0ZSBkb3VibGUgaGFzaGluZyBpbiB0aGUgQyBzcGVlZC11cCBjb2RlIGZvcgorICBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisKIC0gSXNzdWUgIzIxMzIxOiBpdGVydG9vbHMuaXNsaWNlKCkgbm93IHJlbGVhc2VzIHRoZSByZWZlcmVuY2UgdG8gdGhlIHNvdXJjZQogICBpdGVyYXRvciB3aGVuIHRoZSBzbGljZSBpcyBleGhhdXN0ZWQuICBQYXRjaCBieSBBbnRvbiBBZmFuYXN5ZXYuCiAKKy0gSXNzdWUgIzIxMDU3OiBUZXh0SU9XcmFwcGVyIG5vdyBhbGxvd3MgdGhlIHVuZGVybHlpbmcgYmluYXJ5IHN0cmVhbSdzCisgIHJlYWQoKSBvciByZWFkMSgpIG1ldGhvZCB0byByZXR1cm4gYW4gYXJiaXRyYXJ5IGJ5dGVzLWxpa2Ugb2JqZWN0CisgIChzdWNoIGFzIGEgbWVtb3J5dmlldykuICBQYXRjaCBieSBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICMyMDk1MTogU1NMU29ja2V0LnNlbmQoKSBub3cgcmFpc2VzIGVpdGhlciBTU0xXYW50UmVhZEVycm9yIG9yCisgIFNTTFdhbnRXcml0ZUVycm9yIG9uIGEgbm9uLWJsb2NraW5nIHNvY2tldCBpZiB0aGUgb3BlcmF0aW9uIHdvdWxkIGJsb2NrLgorICBQcmV2aW91c2x5LCBpdCB3b3VsZCByZXR1cm4gMC4gIFBhdGNoIGJ5IE5pa29sYXVzIFJhdGguCisKKy0gSXNzdWUgIzEzMjQ4OiByZW1vdmVkIHByZXZpb3VzbHkgZGVwcmVjYXRlZCBhc3luY29yZS5kaXNwYXRjaGVyIF9fZ2V0YXR0cl9fCisgIGNoZWFwIGluaGVyaXRhbmNlIGhhY2suCisKIC0gSXNzdWUgIzk4MTU6IGFzc2VydFJhaXNlcyBub3cgdHJpZXMgdG8gY2xlYXIgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMKICAgaW4gdGhlIGV4Y2VwdGlvbidzIHRyYWNlYmFjay4KIAorLSBJc3N1ZSAjMTk5NDA6IHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygpIG5vdyBpbnRlcnByZXRzIHRoZSBnaXZlbiB0aW1lCisgIHN0cmluZyBpbiB0aGUgVVRDIHRpbWV6b25lIChhcyBzcGVjaWZpZWQgaW4gUkZDIDUyODApLCBub3QgdGhlIGxvY2FsCisgIHRpbWV6b25lLgorCiAtIElzc3VlICMxMzIwNDogQ2FsbGluZyBzeXMuZmxhZ3MuX19uZXdfXyB3b3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIsCiAgIG5vdyBpdCByYWlzZXMgYSBUeXBlRXJyb3IuCiAKQEAgLTE2MjUsOSArMjY4NywyNSBAQAogLSBJc3N1ZSAjMTIyMjA6IG1pbmRvbSBub3cgcmFpc2VzIGEgY3VzdG9tIFZhbHVlRXJyb3IgaW5kaWNhdGluZyBpdCBkb2Vzbid0CiAgIHN1cHBvcnQgc3BhY2VzIGluIFVSSXMgaW5zdGVhZCBvZiBsZXR0aW5nIGEgJ3NwbGl0JyBWYWx1ZUVycm9yIGJ1YmJsZSB1cC4KIAorLSBJc3N1ZSAjMjEwNjg6IFRoZSBzc2wuUFJPVE9DT0wqIGNvbnN0YW50cyBhcmUgbm93IGVudW0gbWVtYmVycy4KKworLSBJc3N1ZSAjMjEyNzY6IHBvc2l4bW9kdWxlOiBEb24ndCBkZWZpbmUgVVNFX1hBVFRSUyBvbiBLRnJlZUJTRCBhbmQgdGhlIEh1cmQuCisKKy0gSXNzdWUgIzIxMjYyOiBOZXcgbWV0aG9kIGFzc2VydF9ub3RfY2FsbGVkIGZvciBNb2NrLgorICBJdCByYWlzZXMgQXNzZXJ0aW9uRXJyb3IgaWYgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkLgorCistIElzc3VlICMyMTIzODogTmV3IGtleXdvcmQgYXJndW1lbnQgYHVuc2FmZWAgdG8gTW9jay4gSXQgcmFpc2VzCisgIGBBdHRyaWJ1dGVFcnJvcmAgaW5jYXNlIG9mIGFuIGF0dHJpYnV0ZSBzdGFydHN3aXRoIGFzc2VydCBvciBhc3NyZXQuCisKKy0gSXNzdWUgIzIwODk2OiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIG5vdyB1c2VzIFBST1RPQ09MX1NTTHYyMywgbm90CisgIFBST1RPQ09MX1NTTHYzLCBmb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5LgorCiAtIElzc3VlICMyMTIzOTogcGF0Y2guc3RvcGFsbCgpIGRpZG4ndCB3b3JrIGRldGVybWluaXN0aWNhbGx5IHdoZW4gdGhlIHNhbWUKICAgbmFtZSB3YXMgcGF0Y2hlZCBtb3JlIHRoYW4gb25jZS4KIAorLSBJc3N1ZSAjMjEyMDM6IFVwZGF0ZWQgZmlsZUNvbmZpZyBhbmQgZGljdENvbmZpZyB0byByZW1vdmUgaW5jb25zaXN0ZW5jaWVzLgorICBUaGFua3MgdG8gSnVyZSBLb3JlbiBmb3IgdGhlIHBhdGNoLgorCiAtIElzc3VlICMyMTIyMjogUGFzc2luZyBuYW1lIGtleXdvcmQgYXJndW1lbnQgdG8gbW9jay5jcmVhdGVfYXV0b3NwZWMgbm93CiAgIHdvcmtzLgogCkBAIC0xNjU3LDE3ICsyNzM1LDMxIEBACiAtIElzc3VlICMyMTE3MTogRml4ZWQgdW5kb2N1bWVudGVkIGZpbHRlciBBUEkgb2YgdGhlIHJvdDEzIGNvZGVjLgogICBQYXRjaCBieSBCZXJrZXIgUGVrc2FnLgogCistIElzc3VlICMyMDUzOTogSW1wcm92ZWQgbWF0aC5mYWN0b3JpYWwgZXJyb3IgbWVzc2FnZSBmb3IgbGFyZ2UgcG9zaXRpdmUgaW5wdXRzCisgIGFuZCBjaGFuZ2VkIGV4Y2VwdGlvbiB0eXBlIChPdmVyZmxvd0Vycm9yIC0+IFZhbHVlRXJyb3IpIGZvciBsYXJnZSBuZWdhdGl2ZQorICBpbnB1dHMuCisKIC0gSXNzdWUgIzIxMTcyOiBpc2luc3RhbmNlIGNoZWNrIHJlbGF4ZWQgZnJvbSBkaWN0IHRvIGNvbGxlY3Rpb25zLk1hcHBpbmcuCiAKIC0gSXNzdWUgIzIxMTU1OiBhc3luY2lvLkV2ZW50TG9vcC5jcmVhdGVfdW5peF9zZXJ2ZXIoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvcgogICBpZiBwYXRoIGFuZCBzb2NrIGFyZSBzcGVjaWZpZWQgYXQgdGhlIHNhbWUgdGltZS4KIAorLSBJc3N1ZSAjMjExMzY6IEF2b2lkIHVubmVjZXNzYXJ5IG5vcm1hbGl6YXRpb24gb2YgRnJhY3Rpb25zIHJlc3VsdGluZyBmcm9tCisgIHBvd2VyIGFuZCBvdGhlciBvcGVyYXRpb25zLiAgUGF0Y2ggYnkgUmF5bW9uZCBIZXR0aW5nZXIuCisKKy0gSXNzdWUgIzE3NjIxOiBJbnRyb2R1Y2UgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci4KKworLSBJc3N1ZSAjMjEwNzY6IHNpZ25hbCBtb2R1bGUgY29uc3RhbnRzIHdlcmUgdHVybmVkIGludG8gZW51bXMuCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICMyMDYzNjogSW1wcm92ZWQgdGhlIHJlcHIgb2YgVGtpbnRlciB3aWRnZXRzLgorCistIElzc3VlICMxOTUwNTogVGhlIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIHZpZXdzIG9mIE9yZGVyZWREaWN0IG5vdyBzdXBwb3J0CisgIHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIHJldmVyc2VkKCkuCisKIC0gSXNzdWUgIzIxMTQ5OiBJbXByb3ZlZCB0aHJlYWQtc2FmZXR5IGluIGxvZ2dpbmcgY2xlYW51cCBkdXJpbmcgaW50ZXJwcmV0ZXIKICAgc2h1dGRvd24uIFRoYW5rcyB0byBEZXZpbiBKZWFucGllcnJlIGZvciB0aGUgcGF0Y2guCiAKLS0gSXNzdWUgIzIwMTQ1OiBgYXNzZXJ0UmFpc2VzUmVnZXhgIGFuZCBgYXNzZXJ0V2FybnNSZWdleGAgbm93IHJhaXNlIGEKLSAgVHlwZUVycm9yIGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbm90IGEgc3RyaW5nIG9yIGNvbXBpbGVkIHJlZ2V4LgotCiAtIElzc3VlICMyMTA1ODogRml4IGEgbGVhayBvZiBmaWxlIGRlc2NyaXB0b3IgaW4KICAgOmZ1bmM6YHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZWAsIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IgaWYKICAgOmZ1bmM6YGlvLm9wZW5gIGZhaWxzCkBAIC0xNjc3LDYgKzI3NjksOSBAQAogLSBJc3N1ZSAjMjEwMTM6IEVuaGFuY2Ugc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKSB3aGVuIHVzZWQgZm9yIHNlcnZlciBzaWRlCiAgIHNvY2tldHMgdG8gcHJvdmlkZSBiZXR0ZXIgc2VjdXJpdHkgYnkgZGVmYXVsdC4KIAorLSBJc3N1ZSAjMjAxNDU6IGBhc3NlcnRSYWlzZXNSZWdleGAgYW5kIGBhc3NlcnRXYXJuc1JlZ2V4YCBub3cgcmFpc2UgYQorICBUeXBlRXJyb3IgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBub3QgYSBzdHJpbmcgb3IgY29tcGlsZWQgcmVnZXguCisKIC0gSXNzdWUgIzIwNjMzOiBSZXBsYWNlIHJlbGF0aXZlIGltcG9ydCBieSBhYnNvbHV0ZSBpbXBvcnQuCiAKIC0gSXNzdWUgIzIwOTgwOiBTdG9wIHdyYXBwaW5nIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIFRocmVhZFBvb2wuCkBAIC0xNjkwLDYgKzI3ODUsOCBAQAogICBjdXJ2ZSBmb3IgRUNESCBrZXkgZXhjaGFuZ2Ugb24gT3BlblNTTCAxLjAuMiBhbmQgbGF0ZXIsIGFuZCBvdGhlcndpc2UKICAgZGVmYXVsdCB0byAicHJpbWUyNTZ2MSIuCiAKKy0gSXNzdWUgIzIxMDAwOiBJbXByb3ZlIHRoZSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIGpzb24udG9vbC4KKwogLSBJc3N1ZSAjMjA5OTU6IEVuaGFuY2UgZGVmYXVsdCBjaXBoZXJzIHVzZWQgYnkgdGhlIHNzbCBtb2R1bGUgdG8gZW5hYmxlCiAgIGJldHRlciBzZWN1cml0eSBhbiBwcmlvcml0aXplIHBlcmZlY3QgZm9yd2FyZCBzZWNyZWN5LgogCkBAIC0xNjk3LDYgKzI3OTQsMjQgQEAKIAogLSBJc3N1ZSAjMjE0OTk6IElnbm9yZSBfX2J1aWx0aW5zX18gaW4gc2V2ZXJhbCB0ZXN0X2ltcG9ydGxpYi50ZXN0X2FwaSB0ZXN0cy4KIAorLSBJc3N1ZSAjMjA2Mjc6IHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHkgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyLgorCistIElzc3VlICMxOTE2NTogVGhlIGZvcm1hdHRlciBtb2R1bGUgbm93IHJhaXNlcyBEZXByZWNhdGlvbldhcm5pbmcgaW5zdGVhZCBvZgorICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgorCistIElzc3VlICMxMzkzNjogUmVtb3ZlIHRoZSBhYmlsaXR5IG9mIGRhdGV0aW1lLnRpbWUgaW5zdGFuY2VzIHRvIGJlIGNvbnNpZGVyZWQKKyAgZmFsc2UgaW4gYm9vbGVhbiBjb250ZXh0cy4KKworLSBJc3N1ZSAjMTg5MzE6IHNlbGVjdG9ycyBtb2R1bGUgbm93IHN1cHBvcnRzIC9kZXYvcG9sbCBvbiBTb2xhcmlzLgorICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLSBJc3N1ZSAjMTk5Nzc6IFdoZW4gdGhlIGBgTENfVFlQRWBgIGxvY2FsZSBpcyB0aGUgUE9TSVggbG9jYWxlIChgYENgYCBsb2NhbGUpLAorICA6cHk6ZGF0YTpgc3lzLnN0ZGluYCBhbmQgOnB5OmRhdGE6YHN5cy5zdGRvdXRgIGFyZSBub3cgdXNpbmcgdGhlCisgIGBgc3Vycm9nYXRlZXNjYXBlYGAgZXJyb3IgaGFuZGxlciwgaW5zdGVhZCBvZiB0aGUgYGBzdHJpY3RgYCBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICMyMDU3NDogSW1wbGVtZW50IGluY3JlbWVudGFsIGRlY29kZXIgZm9yIGNwNjUwMDEgY29kZSAoV2luZG93cyBjb2RlCisgIHBhZ2UgNjUwMDEsIE1pY3Jvc29mdCBVVEYtOCkuCisKIC0gSXNzdWUgIzIwODc5OiBEZWxheSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRhYmxlcyBmb3IKICAgYmFzZTMyLCBhc2NpaTg1IGFuZCBiYXNlODUgY29kZWNzIGluIHRoZSBiYXNlNjQgbW9kdWxlLCBhbmQgZGVsYXkgdGhlCiAgIGluaXRpYWxpemF0aW9uIG9mIHRoZSB1bnF1b3RlX3RvX2J5dGVzKCkgdGFibGUgb2YgdGhlIHVybGxpYi5wYXJzZSBtb2R1bGUsIHRvCkBAIC0xNzMxLDYgKzI4NDYsMTQgQEAKIC0gSXNzdWUgIzE5NzQ4OiBPbiBBSVgsIHRpbWUubWt0aW1lKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yIGZvciB5ZWFyCiAgIG91dHNpemUgcmFuZ2UgWzE5MDI7IDIwMzddLgogCistIElzc3VlICMxOTU3MzogaW5zcGVjdC5zaWduYXR1cmU6IFVzZSBlbnVtIGZvciBwYXJhbWV0ZXIga2luZCBjb25zdGFudHMuCisKKy0gSXNzdWUgIzIwNzI2OiBpbnNwZWN0LnNpZ25hdHVyZTogTWFrZSBTaWduYXR1cmUgYW5kIFBhcmFtZXRlciBwaWNrbGFibGUuCisKKy0gSXNzdWUgIzE3MzczOiBBZGQgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZSBtZXRob2QuCisKKy0gSXNzdWUgIzIwMzc4OiBJbXByb3ZlIHJlcHIgb2YgaW5zcGVjdC5TaWduYXR1cmUgYW5kIGluc3BlY3QuUGFyYW1ldGVyLgorCiAtIElzc3VlICMyMDgxNjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3MoKSB0byByYWlzZSBjb3JyZWN0IFR5cGVFcnJvciBmb3IKICAgbWlzc2luZyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzLiBQYXRjaCBieSBKZXJlbWlhaCBMb3dpbi4KIApAQCAtMTc0Nyw2ICsyODcwLDEyIEBACiAgIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGFzIGtleXdvcmQgYXJndW1lbnRzIGJlY29tZQogICBrZXl3b3JkLW9ubHkuCiAKKy0gSXNzdWUgIzIwMzM0OiBpbnNwZWN0LlNpZ25hdHVyZSBhbmQgaW5zcGVjdC5QYXJhbWV0ZXIgYXJlIG5vdyBoYXNoYWJsZS4KKyAgVGhhbmtzIHRvIEFudG9ueSBMZWUgZm9yIGJ1ZyByZXBvcnRzIGFuZCBzdWdnZXN0aW9ucy4KKworLSBJc3N1ZSAjMTU5MTY6IGRvY3Rlc3QuRG9jVGVzdFN1aXRlIHJldHVybnMgYW4gZW1wdHkgdW5pdHRlc3QuVGVzdFN1aXRlIGluc3RlYWQKKyAgb2YgcmFpc2luZyBWYWx1ZUVycm9yIGlmIGl0IGZpbmRzIG5vIHRlc3RzCisKIC0gSXNzdWUgIzIxMjA5OiBGaXggYXN5bmNpby50YXNrcy5Db3JvV3JhcHBlciB0byB3b3JrYXJvdW5kIGEgYnVnCiAgIGluIHlpZWxkLWZyb20gaW1wbGVtZW50YXRpb24gaW4gQ1B5dGhvbnMgcHJpb3IgdG8gMy40LjEuCiAKQEAgLTE3NTksMTcgKzI4ODgsOTAgQEAKIC0gSXNzdWUgIzExNTcxOiBFbnN1cmUgdGhhdCB0aGUgdHVydGxlIHdpbmRvdyBiZWNvbWVzIHRoZSB0b3Btb3N0IHdpbmRvdwogICB3aGVuIGxhdW5jaGVkIG9uIE9TIFguCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMjE4MDE6IFZhbGlkYXRlIHRoYXQgX19zaWduYXR1cmVfXyBpcyBOb25lIG9yIGFuIGluc3RhbmNlIG9mIFNpZ25hdHVyZS4KIAotLSBJc3N1ZSAjMjEyNzY6IHBvc2l4bW9kdWxlOiBEb24ndCBkZWZpbmUgVVNFX1hBVFRSUyBvbiBLRnJlZUJTRCBhbmQgdGhlIEh1cmQuCistIElzc3VlICMyMTkyMzogUHJldmVudCBBdHRyaWJ1dGVFcnJvciBpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcgorICBkdWUgdG8gcG9zc2libGUgdW5pbml0aWFsaXplZCBfY29uZmlnX3ZhcnMuCiAKLS0gSXNzdWUgIzIxMjI2OiBTZXQgdXAgbW9kdWxlcyBwcm9wZXJseSBpbiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdAotICAoYW5kIGZyaWVuZHMpLgorLSBJc3N1ZSAjMjEzMjM6IEZpeCBodHRwLnNlcnZlciB0byBhZ2FpbiBoYW5kbGUgc2NyaXB0cyBpbiBDR0kgc3ViZGlyZWN0b3JpZXMsCisgIGJyb2tlbiBieSB0aGUgZml4IGZvciBzZWN1cml0eSBpc3N1ZSAjMTk0MzUuICBQYXRjaCBieSBaYWNoIEJ5cm5lLgorCistIElzc3VlICMyMjczMzogRml4IGZmaV9wcmVwX2FyZ3Mgbm90IHplcm8tZXh0ZW5kaW5nIGFyZ3VtZW50IHZhbHVlcyBjb3JyZWN0bHkKKyAgb24gNjQtYml0IFdpbmRvd3MuCisKKy0gSXNzdWUgIzIzMzAyOiBEZWZhdWx0IHRvIFRDUF9OT0RFTEFZPTEgdXBvbiBlc3RhYmxpc2hpbmcgYW4gSFRUUENvbm5lY3Rpb24uCisgIFJlbW92ZWQgdXNlIG9mIGhhcmQtY29kZWQgTVNTIGFzIGl0J3MgYW4gb3B0aW1pemF0aW9uIHRoYXQncyBubyBsb25nZXIgbmVlZGVkCisgIHdpdGggTmFnbGUgZGlzYWJsZWQuCiAKIElETEUKIC0tLS0KIAorLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAorICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCisgIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMTY4OTM6IFVwZGF0ZSBJZGxlIGRvYyBjaGFwdGVyIHRvIG1hdGNoIGN1cnJlbnQgSWRsZSBhbmQgYWRkIG5ldworICBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMzA2ODogQWRkIElkbGUgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gZGlhbG9nIHRvIE9wdGlvbnMgbWVudS4KKyAgQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byBIT01FLy5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnLgorICBPcmlnaW5hbCBwYXRjaCBieSBUYWwgRWluYXQuCisKKy0gSXNzdWUgIzE2MjMzOiBBIG1vZHVsZSBicm93c2VyIChGaWxlIDogQ2xhc3MgQnJvd3NlciwgQWx0K0MpIHJlcXVpcmVzIGEKKyAgZWRpdG9yIHdpbmRvdyB3aXRoIGEgZmlsZW5hbWUuICBXaGVuIENsYXNzIEJyb3dzZXIgaXMgcmVxdWVzdGVkIG90aGVyd2lzZSwKKyAgZnJvbSBhIHNoZWxsLCBvdXRwdXQgd2luZG93LCBvciAnVW50aXRsZWQnIGVkaXRvciwgSWRsZSBubyBsb25nZXIgZGlzcGxheXMKKyAgYW4gZXJyb3IgYm94LiAgSXQgbm93IHBvcHMgdXAgYW4gT3BlbiBNb2R1bGUgYm94IChBbHQrTSkuIElmIGEgdmFsaWQgbmFtZQorICBpcyBlbnRlcmVkIGFuZCBhIG1vZHVsZSBpcyBvcGVuZWQsIGEgY29ycmVzcG9uZGluZyBicm93c2VyIGlzIGFsc28gb3BlbmVkLgorCistIElzc3VlICM0ODMyOiBTYXZlIEFzIHRvIHR5cGUgUHl0aG9uIGZpbGVzIGF1dG9tYXRpY2FsbHkgYWRkcyAucHkgdG8gdGhlCisgIG5hbWUgeW91IGVudGVyIChldmVuIGlmIHlvdXIgc3lzdGVtIGRvZXMgbm90IGRpc3BsYXkgaXQpLiAgU29tZSBzeXN0ZW1zCisgIGF1dG9tYXRpY2FsbHkgYWRkIC50eHQgd2hlbiB0eXBlIGlzIFRleHQgZmlsZXMuCisKKy0gSXNzdWUgIzIxOTg2OiBDb2RlIG9iamVjdHMgYXJlIG5vdCBub3JtYWxseSBwaWNrbGVkIGJ5IHRoZSBwaWNrbGUgbW9kdWxlLgorICBUbyBtYXRjaCB0aGlzLCB0aGV5IGFyZSBubyBsb25nZXIgcGlja2xlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgSWRsZS4KKworLSBJc3N1ZSAjMTczOTA6IEFkanVzdCBFZGl0b3Igd2luZG93IHRpdGxlOyByZW1vdmUgJ1B5dGhvbicsCisgIG1vdmUgdmVyc2lvbiB0byBlbmQuCisKKy0gSXNzdWUgIzE0MTA1OiBJZGxlIGRlYnVnZ2VyIGJyZWFrcG9pbnRzIG5vIGxvbmdlciBkaXNhcHBlYXIKKyAgd2hlbiBpbnNldGluZyBvciBkZWxldGluZyBsaW5lcy4KKworLSBJc3N1ZSAjMTcxNzI6IFR1cnRsZWRlbW8gY2FuIG5vdyBiZSBydW4gZnJvbSBJZGxlLgorICBDdXJyZW50bHksIHRoZSBlbnRyeSBpcyBvbiB0aGUgSGVscCBtZW51LCBidXQgaXQgbWF5IG1vdmUgdG8gUnVuLgorICBQYXRjaCBieSBSYW1jaGFuZHJhIEFwdCBhbmQgTGl0YSBDaG8uCisKKy0gSXNzdWUgIzIxNzY1OiBBZGQgc3VwcG9ydCBmb3Igbm9uLWFzY2lpIGlkZW50aWZpZXJzIHRvIEh5cGVyUGFyc2VyLgorCistIElzc3VlICMyMTk0MDogQWRkIHVuaXR0ZXN0IGZvciBXaWRnZXRSZWRpcmVjdG9yLiBJbml0aWFsIHBhdGNoIGJ5IFNhaW1hZGhhdgorICBIZWJsaWthci4KKworLSBJc3N1ZSAjMTg1OTI6IEFkZCB1bml0dGVzdCBmb3IgU2VhcmNoRGlhbG9nQmFzZS4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgorCistIElzc3VlICMyMTY5NDogQWRkIHVuaXR0ZXN0IGZvciBQYXJlbk1hdGNoLiBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzIxNjg2OiBhZGQgdW5pdHRlc3QgZm9yIEh5cGVyUGFyc2VyLiBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYKKyAgSGVibGlrYXIuCisKKy0gSXNzdWUgIzEyMzg3OiBBZGQgbWlzc2luZyB1cHBlcihsb3dlciljYXNlIHZlcnNpb25zIG9mIGRlZmF1bHQgV2luZG93cyBrZXkKKyAgYmluZGluZ3MgZm9yIElkbGUgc28gQ2FwcyBMb2NrIGRvZXMgbm90IGRpc2FibGUgdGhlbS4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzIxNjk1OiBDbG9zaW5nIGEgRmluZC1pbi1maWxlcyBvdXRwdXQgd2luZG93IHdoaWxlIHRoZSBzZWFyY2ggaXMKKyAgc3RpbGwgaW4gcHJvZ3Jlc3Mgbm8gbG9uZ2VyIGNsb3NlcyBJZGxlLgorCistIElzc3VlICMxODkxMDogQWRkIHVuaXR0ZXN0IGZvciB0ZXh0Vmlldy4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgorCistIElzc3VlICMxODI5MjogQWRkIHVuaXR0ZXN0IGZvciBBdXRvRXhwYW5kLiBQYXRjaCBieSBTYWloYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NDA5OiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9Db21wbGV0ZS4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgorCistIElzc3VlICMyMTQ3NzogaHRlc3QucHkgLSBJbXByb3ZlIGZyYW1ld29yaywgY29tcGxldGUgc2V0IG9mIHRlc3RzLgorICBQYXRjaGVzIGJ5IFNhaW1hZGhhdiBIZWJsaWthcgorCistIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCisgIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCisgIGFzIG5lZWRlZCB0byB3b3JrIHdpdGggaHRlc3QuICBSdW5uaW5nIHRoZSBtb2R1bGUgYXMgX19tYWluX18gcnVucyBhbGwgdGVzdHMuCisKIC0gSXNzdWUgIzIxMTM5OiBDaGFuZ2UgZGVmYXVsdCBwYXJhZ3JhcGggd2lkdGggdG8gNzIsIHRoZSBQRVAgOCByZWNvbW1lbmRhdGlvbi4KIAogLSBJc3N1ZSAjMjEyODQ6IFBhcmFncmFwaCByZWZvcm1hdCB0ZXN0IHBhc3NlcyBhZnRlciB1c2VyIGNoYW5nZXMgcmVmb3JtYXQgd2lkdGguCkBAIC0xNzc3LDEwICsyOTc5LDUyIEBACiAtIElzc3VlICMxNzY1NDogRW5zdXJlIElETEUgbWVudXMgYXJlIGN1c3RvbWl6ZWQgcHJvcGVybHkgb24gT1MgWCBmb3IKICAgbm9uLWZyYW1ld29yayBidWlsZHMgYW5kIGZvciBhbGwgdmFyaWFudHMgb2YgVGsuCiAKKy0gSXNzdWUgIzIzMTgwOiBSZW5hbWUgSURMRSAiV2luZG93cyIgbWVudSBpdGVtIHRvICJXaW5kb3ciLgorICBQYXRjaCBieSBBbCBTd2VpZ2FydC4KKwogQnVpbGQKIC0tLS0tCiAKLS0gVGhlIFdpbmRvd3MgYnVpbGQgbm93IGluY2x1ZGVzIE9wZW5TU0wgMS4wLjFnCistIElzc3VlICMxNTUwNjogVXNlIHN0YW5kYXJkIFBLR19QUk9HX1BLR19DT05GSUcgYXV0b2NvbmYgbWFjcm8gaW4gdGhlIGNvbmZpZ3VyZQorICBzY3JpcHQuCisKKy0gSXNzdWUgIzIyOTM1OiBBbGxvdyB0aGUgc3NsIG1vZHVsZSB0byBiZSBjb21waWxlZCBpZiBvcGVuc3NsIGRvZXNuJ3Qgc3VwcG9ydAorICBTU0wgMy4KKworLSBJc3N1ZSAjMjI1OTI6IERyb3Agc3VwcG9ydCBvZiB0aGUgQm9ybGFuZCBDIGNvbXBpbGVyIHRvIGJ1aWxkIFB5dGhvbi4gVGhlCisgIGRpc3R1dGlscyBtb2R1bGUgc3RpbGwgc3VwcG9ydHMgaXQgdG8gYnVpbGQgZXh0ZW5zaW9ucy4KKworLSBJc3N1ZSAjMjI1OTE6IERyb3Agc3VwcG9ydCBvZiBNUy1ET1MsIGVzcGVjaWFsbHkgb2YgdGhlIERKR1BQIGNvbXBpbGVyCisgIChNUy1ET1MgcG9ydCBvZiBHQ0MpLgorCistIElzc3VlICMxNjUzNzogQ2hlY2sgd2hldGhlciBzZWxmLmV4dGVuc2lvbnMgaXMgZW1wdHkgaW4gc2V0dXAucHkuIFBhdGNoIGJ5CisgIEpvbmF0aGFuIEhvc21lci4KKworLSBJc3N1ZSAjMjIzNTk6IFJlbW92ZSBpbmNvcnJlY3QgdXNlcyBvZiByZWN1cnNpdmUgbWFrZS4gIFBhdGNoIGJ5IEpvbmFzCisgIFdhZ25lci4KKworLSBJc3N1ZSAjMjE5NTg6IERlZmluZSBIQVZFX1JPVU5EIHdoZW4gYnVpbGRpbmcgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTMgYW5kCisgIGFib3ZlLiAgUGF0Y2ggYnkgWmFjaGFyeSBUdXJuZXIuCisKKy0gSXNzdWUgIzE4MDkzOiB0aGUgcHJvZ3JhbXMgdGhhdCBlbWJlZCB0aGUgQ1B5dGhvbiBydW50aW1lIGFyZSBub3cgaW4gYQorICBzZXBhcmF0ZSAiUHJvZ3JhbXMiIGRpcmVjdG9yeSwgcmF0aGVyIHRoYW4gYmVpbmcga2VwdCBpbiB0aGUgTW9kdWxlcworICBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE1NzU5OiAibWFrZSBzdXNwaWNpb3VzIiwgIm1ha2UgbGlua2NoZWNrIiBhbmQgIm1ha2UgZG9jdGVzdCIgaW4gRG9jLworICBub3cgZGlzcGxheSBzcGVjaWFsIG1lc3NhZ2Ugd2hlbiBhbmQgb25seSB3aGVuIHRoZXJlIGFyZSBmYWlsdXJlcy4KKworLSBJc3N1ZSAjMjExNDE6IFRoZSBXaW5kb3dzIGJ1aWxkIHByb2Nlc3Mgbm8gbG9uZ2VyIGF0dGVtcHRzIHRvIGZpbmQgUGVybCwKKyAgaW5zdGVhZCByZWx5aW5nIG9uIE9wZW5TU0wgc291cmNlIGJlaW5nIGNvbmZpZ3VyZWQgYW5kIHJlYWR5IHRvIGJ1aWxkLiAgVGhlCisgIGBgUENidWlsZFxidWlsZF9zc2wucHlgYCBzY3JpcHQgaGFzIGJlZW4gcmUtd3JpdHRlbiBhbmQgcmUtbmFtZWQgdG8KKyAgYGBQQ2J1aWxkXHByZXBhcmVfc3NsLnB5YGAsIGFuZCB0YWtlcyBjYXJlIG9mIGNvbmZpZ3VyaW5nIE9wZW5TU0wgc291cmNlCisgIGZvciBib3RoIDMyIGFuZCA2NCBiaXQgcGxhdGZvcm1zLiAgT3BlblNTTCBzb3VyY2VzIG9idGFpbmVkIGZyb20KKyAgc3ZuLnB5dGhvbi5vcmcgd2lsbCBhbHdheXMgYmUgcHJlLWNvbmZpZ3VyZWQgYW5kIHJlYWR5IHRvIGJ1aWxkLgorCistIElzc3VlICMyMTAzNzogQWRkIGEgYnVpbGQgb3B0aW9uIHRvIGVuYWJsZSBBZGRyZXNzU2FuaXRpemVyIHN1cHBvcnQuCisKKy0gSXNzdWUgIzE5OTYyOiBUaGUgV2luZG93cyBidWlsZCBwcm9jZXNzIG5vdyBjcmVhdGVzICJweXRob24uYmF0IiBpbiB0aGUKKyAgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUsIHdoaWNoIHBhc3NlcyBhbGwgYXJndW1lbnRzIHRocm91Z2ggdG8gdGhlIG1vc3QKKyAgcmVjZW50bHkgYnVpbHQgaW50ZXJwcmV0ZXIuCiAKIC0gSXNzdWUgIzIxMjg1OiBSZWZhY3RvciBhbmQgZml4IGN1cnNlcyBjb25maWd1cmUgY2hlY2sgdG8gYWx3YXlzIHNlYXJjaAogICBpbiBhIG5jdXJzZXN3IGRpcmVjdG9yeS4KQEAgLTE3ODksMTIgKzMwMzMsNjAgQEAKICAgaW5jbHVkZSBkaXJlY3RvcmllcyBpZiB0aGV5IGFyZW4ndCBhbHJlYWR5IGJlaW5nIHNlYXJjaGVkLiBUaGlzIGF2b2lkcwogICBhbiBleHBsaWNpdCBydW50aW1lIGxpYnJhcnkgZGVwZW5kZW5jeS4KIAorLSBJc3N1ZSAjMTc4NjE6IFRvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgYXV0b21hdGljYWxseSByZWdlbmVyYXRlcworICBJbmNsdWRlL29wY29kZS5oIGZyb20gTGliL29wY29kZS5weSBpZiB0aGUgbGF0ZXIgZ2V0cyBhbnkgY2hhbmdlLgorCiAtIElzc3VlICMyMDY0NDogT1MgWCBpbnN0YWxsZXIgYnVpbGQgc3VwcG9ydCBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCBjaGFuZ2VzCiAgIGluIDMuNC4xOiBhc3N1bWUgZXh0ZXJuYWxseSBzdXBwbGllZCBzcGhpbngtYnVpbGQgaXMgYXZhaWxhYmxlIGluIC91c3IvYmluLgogCistIElzc3VlICMyMDAyMjogRWxpbWluYXRlIHVzZSBvZiBkZXByZWNhdGVkIGJ1bmRsZWJ1aWxkZXIgaW4gT1MgWCBidWlsZHMuCisKKy0gSXNzdWUgIzE1OTY4OiBJbmNvcnBvcmF0ZWQgVGNsLCBUaywgYW5kIFRpeCBidWlsZHMgaW50byB0aGUgV2luZG93cyBidWlsZAorICBzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTcwOTU6IEZpeCBNb2R1bGVzL1NldHVwICpzaGFyZWQqIHN1cHBvcnQuCisKKy0gSXNzdWUgIzIxODExOiBBbnRpY2lwYXRlZCBmaXhlcyB0byBzdXBwb3J0IE9TIFggdmVyc2lvbnMgPiAxMC45LgorCistIElzc3VlICMyMTE2NjogUHJldmVudCBwb3NzaWJsZSBzZWdmYXVsdHMgYW5kIG90aGVyIHJhbmRvbSBmYWlsdXJlcyBvZgorICBweXRob24gLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHB5YnVpbGRkaXIudHh0IGJ1aWxkIHRhcmdldC4KKworLSBJc3N1ZSAjMTgwOTY6IEZpeCBsaWJyYXJ5IG9yZGVyIHJldHVybmVkIGJ5IHB5dGhvbi1jb25maWcuCisKKy0gSXNzdWUgIzE3MjE5OiBBZGQgbGlicmFyeSBidWlsZCBkaXIgZm9yIFB5dGhvbiBleHRlbnNpb24gY3Jvc3MtYnVpbGRzLgorCistIElzc3VlICMyMjkxOTogV2luZG93cyBidWlsZCB1cGRhdGVkIHRvIHN1cHBvcnQgVkMgMTQuMCAoVmlzdWFsIFN0dWRpbyAyMDE1KSwKKyAgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciB0aGUgb2ZmaWNpYWwgcmVsZWFzZS4KKworLSBJc3N1ZSAjMjEyMzY6IEJ1aWxkIF9tc2kucHlkIHdpdGggY2FiaW5ldC5saWIgaW5zdGVhZCBvZiBmY2kubGliCisKKy0gSXNzdWUgIzE3MTI4OiBVc2UgcHJpdmF0ZSB2ZXJzaW9uIG9mIE9wZW5TU0wgZm9yIE9TIFggMTAuNSsgaW5zdGFsbGVyLgorCiBDIEFQSQogLS0tLS0KIAorLSBJc3N1ZSAjMTQyMDM6IFJlbW92ZSBvYnNvbGV0ZSBzdXBwb3J0IGZvciB2aWV3PT1OVUxMIGluIFB5QnVmZmVyX0ZpbGxJbmZvKCksCisgIGJ5dGVhcnJheV9nZXRidWZmZXIoKSwgYnl0ZXNpb2J1Zl9nZXRidWZmZXIoKSBhbmQgYXJyYXlfYnVmZmVyX2dldGJ1ZigpLgorICBBbGwgZnVuY3Rpb25zIG5vdyByYWlzZSBCdWZmZXJFcnJvciBpbiB0aGF0IGNhc2UuCisKKy0gSXNzdWUgIzIyNDQ1OiBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBub3cgaW1wbGVtZW50cyBwcmVjaXNlIGNvbnRpZ3VpdHkKKyAgdGVzdHMsIGNvbXBhdGlibGUgd2l0aCBOdW1QeSdzIE5QWV9SRUxBWEVEX1NUUklERVNfQ0hFQ0tJTkcgY29tcGlsYXRpb24KKyAgZmxhZy4gIFByZXZpb3VzbHkgdGhlIGZ1bmN0aW9uIHJlcG9ydGVkIGZhbHNlIG5lZ2F0aXZlcyBmb3IgY29ybmVyIGNhc2VzLgorCistIElzc3VlICMyMjA3OTogUHlUeXBlX1JlYWR5KCkgbm93IGNoZWNrcyB0aGF0IHN0YXRpY2FsbHkgYWxsb2NhdGVkIHR5cGUgaGFzCisgIG5vIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBiYXNlcy4KKworLSBJc3N1ZSAjMjI0NTM6IFJlbW92ZWQgbm9uLWRvY3VtZW50ZWQgbWFjcm8gUHlPYmplY3RfUkVQUigpLgorCistIElzc3VlICMxODM5NTogUmVuYW1lIGBgX1B5X2NoYXIyd2NoYXIoKWBgIHRvIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAsCisgIHJlbmFtZSBgYF9QeV93Y2hhcjJjaGFyKClgYCB0byA6YzpmdW5jOmBQeV9FbmNvZGVMb2NhbGVgLCBhbmQgZG9jdW1lbnQKKyAgdGhlc2UgZnVuY3Rpb25zLgorCistIElzc3VlICMyMTIzMzogQWRkIG5ldyBDIGZ1bmN0aW9uczogUHlNZW1fUmF3Q2FsbG9jKCksIFB5TWVtX0NhbGxvYygpLAorICBQeU9iamVjdF9DYWxsb2MoKSwgX1B5T2JqZWN0X0dDX0NhbGxvYygpLiBieXRlcyhpbnQpIGlzIG5vdyB1c2luZworICBgYGNhbGxvYygpYGAgaW5zdGVhZCBvZiBgYG1hbGxvYygpYGAgZm9yIGxhcmdlIG9iamVjdHMgd2hpY2ggaXMgZmFzdGVyIGFuZAorICB1c2UgbGVzcyBtZW1vcnkuCisKIC0gSXNzdWUgIzIwOTQyOiBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoKSBubyBsb25nZXIgc2V0cyBfX2ZpbGVfXyB0bwogICBtYXRjaCB3aGF0IGltcG9ydGxpYiBkb2VzOyB0aGlzIGFmZmVjdHMgX2Zyb3plbl9pbXBvcnRsaWIgYXMgd2VsbCBhcyBhbnkKICAgbW9kdWxlIGxvYWRlZCB1c2luZyBpbXAuaW5pdF9mcm96ZW4oKS4KQEAgLTE4MDIsOSArMzA5NCwyOSBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxOTU0ODogVXBkYXRlIHRoZSBjb2RlY3MgbW9kdWxlIGRvY3VtZW50YXRpb24gdG8gYmV0dGVyIGNvdmVyIHRoZQorICBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRleHQgZW5jb2RpbmdzIGFuZCBvdGhlciBjb2RlY3MsIHRvZ2V0aGVyIHdpdGggb3RoZXIKKyAgY2xhcmlmaWNhdGlvbnMuIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzIyMzk0OiBEb2MvTWFrZWZpbGUgbm93IHN1cHBvcnRzIGBgbWFrZSB2ZW52IFBZVEhPTj0uLi9weXRob25gYCB0bworICBjcmVhdGUgYSB2ZW52IGZvciBnZW5lcmF0aW5nIHRoZSBkb2N1bWVudGF0aW9uLCBlLmcuLAorICBgYG1ha2UgaHRtbCBQWVRIT049dmVudi9iaW4vcHl0aG9uM2BgLgorCistIElzc3VlICMyMTUxNDogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGpzb24gbW9kdWxlIG5vdyByZWZlcnMgdG8gbmV3IEpTT04gUkZDCisgIDcxNTkgaW5zdGVhZCBvZiBvYnNvbGV0ZWQgUkZDIDQ2MjcuCisKKy0gSXNzdWUgIzIxNzc3OiBUaGUgYmluYXJ5IHNlcXVlbmNlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBhcmUgbm93CisgIGRvY3VtZW50ZWQgZXhwbGljaXRseSwgcmF0aGVyIHRoYW4gYXNzdW1pbmcgdXNlcnMgd2lsbCBiZSBhYmxlIHRvIGRlcml2ZQorICB0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyIGZyb20gdGhlIGJlaGF2aW91ciBvZiB0aGUgY29ycmVzcG9uZGluZyBzdHIgbWV0aG9kcy4KKworLSBJc3N1ZSAjNjkxNjogdW5kb2N1bWVudCBkZXByZWNhdGVkIGFzeW5jaGF0LmZpZm8gY2xhc3MuCisKIC0gSXNzdWUgIzE3Mzg2OiBFeHBhbmRlZCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBgYERvYy9tYWtlLmJhdGBgIHNjcmlwdCB0byBtYWtlCiAgIGl0IG11Y2ggbW9yZSBjb21wYXJhYmxlIHRvIGBgRG9jL01ha2VmaWxlYGAuCiAKKy0gSXNzdWUgIzIxMzEyOiBVcGRhdGUgdGhlIHRocmVhZF9mb29iYXIuaCB0ZW1wbGF0ZSBmaWxlIHRvIGluY2x1ZGUgbmV3ZXIKKyAgdGhyZWFkaW5nIEFQSXMuICBQYXRjaCBieSBKYWNrIE1jQ3JhY2tlbi4KKwogLSBJc3N1ZSAjMjEwNDM6IFJlbW92ZSB0aGUgcmVjb21tZW5kYXRpb24gZm9yIHNwZWNpZmljIENBIG9yZ2FuaXphdGlvbnMgYW5kIHRvCiAgIG1lbnRpb24gdGhlIGFiaWxpdHkgdG8gbG9hZCB0aGUgT1MgY2VydGlmaWNhdGVzLgogCkBAIC0xODIyLDYgKzMxMzQsNzMgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxODk4MjogQWRkIHRlc3RzIGZvciBDTEkgb2YgdGhlIGNhbGVuZGFyIG1vZHVsZS4KKworLSBJc3N1ZSAjMTk1NDg6IEFkZGVkIHNvbWUgYWRkaXRpb25hbCBjaGVja3MgdG8gdGVzdF9jb2RlY3MgdG8gZW5zdXJlIHRoYXQKKyAgc3RhdGVtZW50cyBpbiB0aGUgdXBkYXRlZCBkb2N1bWVudGF0aW9uIHJlbWFpbiBhY2N1cmF0ZS4gUGF0Y2ggYnkgTWFydGluCisgIFBhbnRlci4KKworLSBJc3N1ZSAjMjI4Mzg6IEFsbCB0ZXN0X3JlIHRlc3RzIG5vdyB3b3JrIHdpdGggdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisKKy0gSXNzdWUgIzIyMTczOiBVcGRhdGUgbGliMnRvMyB0ZXN0cyB0byB1c2UgdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkuCisKKy0gSXNzdWUgIzE2MDAwOiBDb252ZXJ0IHRlc3RfY3Vyc2VzIHRvIHVzZSB1bml0dGVzdC4KKworLSBJc3N1ZSAjMjE0NTY6IFNraXAgdHdvIHRlc3RzIGluIHRlc3RfdXJsbGliMm5ldC5weSBpZiBfc3NsIG1vZHVsZSBub3QKKyAgcHJlc2VudC4gUGF0Y2ggYnkgUmVtaSBQb2ludGVsLgorCistIElzc3VlICMyMDc0NjogRml4IHRlc3RfcGRiIHRvIHJ1biBpbiByZWZsZWFrIG1vZGUgKC1SKS4gIFBhdGNoIGJ5IFhhdmllcgorICBkZSBHYXllLgorCistIElzc3VlICMyMjA2MDogdGVzdF9jdHlwZXMgaGFzIGJlZW4gc29tZXdoYXQgY2xlYW5lZCB1cCBhbmQgc2ltcGxpZmllZDsgaXQKKyAgbm93IHVzZXMgdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkgdG8gZmluZCBpdHMgdGVzdHMuCisKKy0gSXNzdWUgIzIyMTA0OiByZWdydGVzdC5weSBubyBsb25nZXIgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHN1aXRlIG9mIHRlc3RzCisgIGxvYWRlZCBmcm9tIHRlc3QgbW9kdWxlcyB0aGF0IGRvbid0IGRlZmluZSB0ZXN0X21haW4oKS4KKworLSBJc3N1ZSAjMjIxMTE6IEFzc29ydGVkIGNsZWFudXBzIGluIHRlc3RfaW1hcGxpYi4gIFBhdGNoIGJ5IE1pbGFuIE9iZXJraXJjaC4KKworLSBJc3N1ZSAjMjIwMDI6IEFkZGVkIGBgbG9hZF9wYWNrYWdlX3Rlc3RzYGAgZnVuY3Rpb24gdG8gdGVzdC5zdXBwb3J0IGFuZCB1c2VkCisgIGl0IHRvIGltcGxlbWVudC9hdWdtZW50IHRlc3QgZGlzY292ZXJ5IGluIHRlc3RfYXN5bmNpbywgdGVzdF9lbWFpbCwKKyAgdGVzdF9pbXBvcnRsaWIsIHRlc3RfanNvbiwgYW5kIHRlc3RfdG9vbHMuCisKKy0gSXNzdWUgIzIxOTc2OiBGaXggdGVzdF9zc2wgdG8gYWNjZXB0IExpYnJlU1NMIHZlcnNpb24gc3RyaW5ncy4gIFRoYW5rcworICB0byBXaWxsaWFtIE9yci4KKworLSBJc3N1ZSAjMjE5MTg6IENvbnZlcnRlZCB0ZXN0X3Rvb2xzIGZyb20gYSBtb2R1bGUgdG8gYSBwYWNrYWdlIGNvbnRhaW5pbmcKKyAgc2VwYXJhdGUgdGVzdCBmaWxlcyBmb3IgZWFjaCB0ZXN0ZWQgc2NyaXB0LgorCistIElzc3VlICM5NTU0OiBVc2UgbW9kZXJuIHVuaXR0ZXN0IGZlYXR1cmVzIGluIHRlc3RfYXJncGFyc2UuIEluaXRpYWwgcGF0Y2ggYnkKKyAgRGVudmVyIENvbmV5YmVhcmUgYW5kIFJhZHUgVm9pY2lsYXMuCisKKy0gSXNzdWUgIzIwMTU1OiBDaGFuZ2VkIEhUVFAgbWV0aG9kIG5hbWVzIGluIGZhaWxpbmcgdGVzdHMgaW4gdGVzdF9odHRwc2VydmVycworICBzbyB0aGF0IHBhY2tldCBmaWx0ZXJpbmcgc29mdHdhcmUgKHNwZWNpZmljYWxseSBXaW5kb3dzIEJhc2UgRmlsdGVyaW5nIEVuZ2luZSkKKyAgZG9lcyBub3QgaW50ZXJmZXJlIHdpdGggdGhlIHRyYW5zYWN0aW9uIHNlbWFudGljcyBleHBlY3RlZCBieSB0aGUgdGVzdHMuCisKKy0gSXNzdWUgIzE5NDkzOiBSZWZhY3RvcmVkIHRoZSBjdHlwZXMgdGVzdCBwYWNrYWdlIHRvIHNraXAgdGVzdHMgZXhwbGljaXRseQorICByYXRoZXIgdGhhbiBzaWxlbnRseS4KKworLSBJc3N1ZSAjMTg0OTI6IEFsbCByZXNvdXJjZXMgYXJlIG5vdyBhbGxvd2VkIHdoZW4gdGVzdHMgYXJlIG5vdCBydW4gYnkKKyAgcmVncnRlc3QucHkuCisKKy0gSXNzdWUgIzIxNjM0OiBGaXggcHlzdG9uZSBtaWNyby1iZW5jaG1hcms6IHVzZSBmbG9vciBkaXZpc2lvbiBpbnN0ZWFkIG9mIHRydWUKKyAgZGl2aXNpb24gdG8gYmVuY2htYXJrIGludGVnZXJzIGluc3RlYWQgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gU2V0IHB5c3RvbmUKKyAgdmVyc2lvbiB0byAxLjIuIFBhdGNoIHdyaXR0ZW4gYnkgTGVubmFydCBSZWdlYnJvLgorCistIElzc3VlICMyMTYwNTogQWRkZWQgdGVzdHMgZm9yIFRraW50ZXIgaW1hZ2VzLgorCistIElzc3VlICMyMTQ5MzogQWRkZWQgdGVzdCBmb3IgbnRwYXRoLmV4cGFuZHVzZXIoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMTk5MjU6IEFkZGVkIHRlc3RzIGZvciB0aGUgc3B3ZCBtb2R1bGUuIE9yaWdpbmFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMjE1MjI6IEFkZGVkIFRraW50ZXIgdGVzdHMgZm9yIExpc3Rib3guaXRlbWNvbmZpZ3VyZSgpLAorICBQYW5lZFdpbmRvdy5wYW5lY29uZmlndXJlKCksIGFuZCBNZW51LmVudHJ5Y29uZmlndXJlKCkuCisKKy0gSXNzdWUgIzE3NzU2OiBGaXggdGVzdF9jb2RlIHRlc3Qgd2hlbiBydW4gZnJvbSB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uLgorCistIElzc3VlICMxNzc1MjogRml4IGRpc3R1dGlscyB0ZXN0cyB3aGVuIHJ1biBmcm9tIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24uCisKIC0gSXNzdWUgIzE4NjA0OiBDb25zb2xpZGF0ZWQgY2hlY2tzIGZvciBHVUkgYXZhaWxhYmlsaXR5LiAgQWxsIHBsYXRmb3JtcyBub3cKICAgYXQgbGVhc3QgY2hlY2sgd2hldGhlciBUayBjYW4gYmUgaW5zdGFudGlhdGVkIHdoZW4gdGhlIEdVSSByZXNvdXJjZSBpcwogICByZXF1ZXN0ZWQuCkBAIC0xODM5LDYgKzMyMTgsOCBAQAogCiAtIElzc3VlICMyMTA5NzogTW92ZSB0ZXN0X25hbWVzcGFjZV9wa2dzIGludG8gdGVzdF9pbXBvcnRsaWIuCiAKKy0gSXNzdWUgIzIxNTAzOiBVc2UgdGVzdF9ib3RoKCkgY29uc2lzdGVudGx5IGluIHRlc3RfaW1wb3J0bGliLgorCiAtIElzc3VlICMyMDkzOTogQXZvaWQgdmFyaW91cyBuZXR3b3JrIHRlc3QgZmFpbHVyZXMgZHVlIHRvIG5ldwogICByZWRpcmVjdCBvZiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvIHRvIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmc6CiAgIHVzZSBodHRwOi8vd3d3LmV4YW1wbGUuY29tIGluc3RlYWQuCkBAIC0xODQ5LDkgKzMyMzAsNDEgQEAKIC0gSXNzdWUgIzIxMDkzOiBQcmV2ZW50IGZhaWx1cmVzIG9mIGN0eXBlcyB0ZXN0X21hY2hvbGliIG9uIE9TIFggaWYgYQogICBjb3B5IG9mIGxpYnogZXhpc3RzIGluICRIT01FL2xpYiBvciAvdXNyL2xvY2FsL2xpYi4KIAorLSBJc3N1ZSAjMjI3NzA6IFByZXZlbnQgc29tZSBUayBzZWdmYXVsdHMgb24gT1MgWCB3aGVuIHJ1bm5pbmcgZ3VpIHRlc3RzLgorCistIElzc3VlICMyMzIxMTogV29ya2Fyb3VuZCB0ZXN0X2xvZ2dpbmcgZmFpbHVyZSBvbiBzb21lIE9TIFggMTAuNiBzeXN0ZW1zLgorCistIElzc3VlICMyMzM0NTogUHJldmVudCB0ZXN0X3NzbCBmYWlsdXJlcyB3aXRoIGxhcmdlIE9wZW5TU0wgcGF0Y2ggbGV2ZWwKKyAgdmFsdWVzIChsaWtlIDAuOS44emMpLgorCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjIzMTQ6IHB5ZG9jIG5vdyB3b3JrcyB3aGVuIHRoZSBMSU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQuCisKKy0gSXNzdWUgIzIyNjE1OiBBcmd1bWVudCBDbGluaWMgbm93IHN1cHBvcnRzIHRoZSAidHlwZSIgYXJndW1lbnQgZm9yIHRoZQorICBpbnQgY29udmVydGVyLiAgVGhpcyBwZXJtaXRzIHVzaW5nIHRoZSBpbnQgY29udmVydGVyIHdpdGggZW51bXMgYW5kCisgIHR5cGVkZWZzLgorCistIElzc3VlICMyMDA3NjogVGhlIG1ha2Vsb2NhbGVhbGlhcy5weSBzY3JpcHQgbm8gbG9uZ2VyIGlnbm9yZXMgVVRGLTggbWFwcGluZy4KKworLSBJc3N1ZSAjMjAwNzk6IFRoZSBtYWtlbG9jYWxlYWxpYXMucHkgc2NyaXB0IG5vdyBjYW4gcGFyc2UgdGhlIFNVUFBPUlRFRCBmaWxlCisgIGZyb20gZ2xpYmMgc291cmNlcyBhbmQgc3VwcG9ydHMgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHNvdXJjZSBwYXRocy4KKworLSBJc3N1ZSAjMjIyMDE6IENvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb2YgdGhlIHppcGZpbGUgbW9kdWxlIG5vdyBjb3JyZWN0bHkKKyAgZXh0cmFjdHMgWklQIGZpbGVzIHdpdGggZGlyZWN0b3J5IGVudHJpZXMuICBQYXRjaCBieSBSeWFuIFdpbHNvbi4KKworLSBJc3N1ZSAjMjIxMjA6IEZvciBmdW5jdGlvbnMgdXNpbmcgYW4gdW5zaWduZWQgaW50ZWdlciByZXR1cm4gY29udmVydGVyLAorICBBcmd1bWVudCBDbGluaWMgbm93IGdlbmVyYXRlcyBhIGNhc3QgdG8gdGhhdCB0eXBlIGZvciB0aGUgY29tcGFyaXNvbgorICB0byAtMSBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUuICAoVGhpcyBzdXByZXNzZXMgYSBjb21waWxhdGlvbiB3YXJuaW5nLikKKworLSBJc3N1ZSAjMTg5NzQ6IFRvb2xzL3NjcmlwdHMvZGlmZi5weSBub3cgdXNlcyBhcmdwYXJzZSBpbnN0ZWFkIG9mIG9wdHBhcnNlLgorCistIElzc3VlICMyMTkwNjogTWFrZSBUb29scy9zY3JpcHRzL21kNXN1bS5weSB3b3JrIGluIFB5dGhvbiAzLgorICBQYXRjaCBieSBaYWNoYXJ5IFdhcmUuCisKKy0gSXNzdWUgIzIxNjI5OiBGaXggQXJndW1lbnQgQ2xpbmljJ3MgIi0tY29udmVydGVycyIgZmVhdHVyZS4KKwogLSBBZGQgc3VwcG9ydCBmb3IgYGB5aWVsZCBmcm9tYGAgdG8gMnRvMy4KIAogLSBBZGQgc3VwcG9ydCBmb3IgdGhlIFBFUCA0NjUgbWF0cml4IG11bHRpcGxpY2F0aW9uIG9wZXJhdG9yIHRvIDJ0bzMuCkBAIC0xODY0LDYgKzMyNzcsMzIgQEAKIC0gSXNzdWUgIzIwNTM1OiBQWVRIT05XQVJOSU5HIG5vIGxvbmdlciBhZmZlY3RzIHRoZSBydW5fdGVzdHMucHkgc2NyaXB0LgogICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KIAorV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyMzI2MDogVXBkYXRlIFdpbmRvd3MgaW5zdGFsbGVyCisKKy0gVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBUY2wvVGsgaGFzIGJlZW4gdXBkYXRlZCB0byA4LjYuMy4gIFRoZSBtb3N0IHZpc2libGUKKyAgcmVzdWx0IG9mIHRoaXMgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiBuZXcgbmF0aXZlIGZpbGUgZGlhbG9ncyB3aGVuCisgIHJ1bm5pbmcgb24gV2luZG93cyBWaXN0YSBvciBuZXdlci4gIFNlZSBUY2wvVGsncyBUSVAgNDMyIGZvciBtb3JlCisgIGluZm9ybWF0aW9uLiAgQWxzbywgdGhpcyB2ZXJzaW9uIG9mIFRjbC9UayBpbmNsdWRlcyBzdXBwb3J0IGZvciBXaW5kb3dzIDEwLgorCistIElzc3VlICMxNzg5NjogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgZXhwZWN0IGV4dGVybmFsIGxpYnJhcnkgc291cmNlcworICB0byBiZSBpbiBgYFBDYnVpbGRcLi5cZXh0ZXJuYWxzYGAgcmF0aGVyIHRoYW4gYGBQQ2J1aWxkXC4uXC4uYGAuCisKKy0gSXNzdWUgIzE3NzE3OiBUaGUgV2luZG93cyBidWlsZCBzY3JpcHRzIG5vdyB1c2UgYSBjb3B5IG9mIE5BU00gcHVsbGVkIGZyb20KKyAgc3ZuLnB5dGhvbi5vcmcgdG8gYnVpbGQgT3BlblNTTC4KKworLSBJc3N1ZSAjMjE5MDc6IEltcHJvdmVkIHRoZSBiYXRjaCBzY3JpcHRzIHByb3ZpZGVkIGZvciBidWlsZGluZyBQeXRob24uCisKKy0gSXNzdWUgIzIyNjQ0OiBUaGUgYnVuZGxlZCB2ZXJzaW9uIG9mIE9wZW5TU0wgaGFzIGJlZW4gdXBkYXRlZCB0byAxLjAuMWouCisKKy0gSXNzdWUgIzEwNzQ3OiBVc2UgdmVyc2lvbmVkIGxhYmVscyBpbiB0aGUgV2luZG93cyBzdGFydCBtZW51LgorICBQYXRjaCBieSBPbGl2ZSBLaWxidXJuLgorCistIElzc3VlICMyMjk4MDogLnB5ZCBmaWxlcyB3aXRoIGEgdmVyc2lvbiBhbmQgcGxhdGZvcm0gdGFnIChmb3IgZXhhbXBsZSwKKyAgIi5jcDM1LXdpbjMyLnB5ZCIpIHdpbGwgbm93IGJlIGxvYWRlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIHdpdGhvdXQgdGFncy4KKwogCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMD8KID09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNTk4Myw2ICs3NDIyLDEwIEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzIzMDA2OiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbmRleGluZyBvZiBkaWN0Ll9fbWlzc2luZ19fLgorICBBZGQgYW4gZW50cnkgaW4gdGhlIGxhbmd1YWdlIGRhdGFtb2RlbCBzcGVjaWFsIG1ldGhvZHMgc2VjdGlvbi4KKyAgUmV2aXNlIGFuZCBpbmRleCBpdHMgZGlzY3Vzc2lvbiBpbiB0aGUgc3RkdHlwZXMgbWFwcGluZy9kaWN0IHNlY3Rpb24uCisKIC0gSXNzdWUgIzE3NzAxOiBJbXByb3Zpbmcgc3RyZnRpbWUgZG9jdW1lbnRhdGlvbi4KIAogLSBJc3N1ZSAjMTg0NDA6IENsYXJpZnkgdGhhdCBgaGFzaCgpYCBjYW4gdHJ1bmNhdGUgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4KQEAgLTYxNDUsNDE0MSArNzU4OCw0IEBACiAtIElzc3VlICMxODU2OTogVGhlIGluc3RhbGxlciBub3cgYWRkcyAucHkgdG8gdGhlIFBBVEhFWFQgdmFyaWFibGUgd2hlbiBleHRlbnNpb25zCiAgIGFyZSByZWdpc3RlcmVkLiBQYXRjaCBieSBQYXVsIE1vb3JlLgogCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDI5LVNlcC0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTYwNDY6IEZpeCBsb2FkaW5nIHNvdXJjZWxlc3MgbGVnYWN5IC5weW8gZmlsZXMuCi0KLS0gSXNzdWUgIzE2MDYwOiBGaXggcmVmY291bnRpbmcgYnVnIHdoZW4gYF9fdHJ1bmNfXygpYCByZXR1cm5zIGFuIG9iamVjdCB3aG9zZQotICBgX19pbnRfXygpYCBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBgVXNlRm9yZWlnbkRURCgpYAotICBtZXRob2QgZG9lc24ndCByZXF1aXJlIGFuIGFyZ3VtZW50IGFnYWluLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMy1TZXAtMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1OTAwOiBGaXggcmVmZXJlbmNlIGxlYWsgaW4gYFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKClgLgotCi0tIElzc3VlICMxNTkyNjogRml4IGNyYXNoIGFmdGVyIG11bHRpcGxlIHJlaW5pdGlhbGl6YXRpb25zIG9mIHRoZSBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMTU4OTU6IEZpeCBGSUxFIHBvaW50ZXIgbGVhayBpbiBvbmUgZXJyb3IgYnJhbmNoIG9mCi0gIGBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncygpYCB3aGVuIGZpbGVuYW1lIHBvaW50cyB0byBhIHB5Yy9weW8gZmlsZSwgY2xvc2VpdCBpcwotICBmYWxzZSBhbiBhbmQgc2V0X21haW5fbG9hZGVyKCkgZmFpbHMuCi0KLS0gRml4ZXMgZm9yIGEgZmV3IGNyYXNoIGFuZCBtZW1vcnkgbGVhayByZWdyZXNzaW9ucyBmb3VuZCBieSBDb3Zlcml0eS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNTg4MjogQ2hhbmdlIGBfZGVjaW1hbGAgdG8gYWNjZXB0IGFueSBjb2VmZmljaWVudCB0dXBsZSB3aGVuCi0gIGNvbnN0cnVjdGluZyBpbmZpbml0aWVzLiBUaGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKLSAgZGVjaW1hbC5weTogSW5maW5pdHkgY29lZmZpY2llbnRzIGFyZSB1bmRlZmluZWQgaW4gX2RlY2ltYWwgKGluIGFjY29yZGFuY2UKLSAgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbikuCi0KLS0gSXNzdWUgIzE1OTI1OiBGaXggYSByZWdyZXNzaW9uIGluIGBlbWFpbC51dGlsYCB3aGVyZSB0aGUgYHBhcnNlZGF0ZSgpYCBhbmQKLSAgYHBhcnNlZGF0ZV90eigpYCBmdW5jdGlvbnMgZGlkIG5vdCByZXR1cm4gTm9uZSBhbnltb3JlIHdoZW4gdGhlIGFyZ3VtZW50IGNvdWxkCi0gIG5vdCBiZSBwYXJzZWQuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTk3MzogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gY29tcGFyaW5nIGRhdGV0aW1lIHRpbWV6b25lCi0gIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE1OTc3OiBGaXggbWVtb3J5IGxlYWsgaW4gTW9kdWxlcy9fc3NsLmMgd2hlbiB0aGUgZnVuY3Rpb24KLSAgX3NldF9ucG5fcHJvdG9jb2xzKCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aGFua3MgdG8gRGFuaWVsIFNvbW1lcm1hbm4uCi0KLS0gSXNzdWUgIzE1OTY5OiBgZmF1bHRoYW5kbGVyYCBtb2R1bGU6IHJlbmFtZSBkdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bwotICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGFuZCBjYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KLSAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkuCi0KLS0gX2RlY2ltYWwgbW9kdWxlOiB1c2Ugb25seSBDIDg5IHN0eWxlIGNvbW1lbnRzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwOS1TZXAtMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEzOTkyOiBUaGUgdHJhc2hjYW4gbWVjaGFuaXNtIGlzIG5vdyB0aHJlYWQtc2FmZS4gIFRoaXMgZWxpbWluYXRlcwotICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvciBjaGFpbnMKLSAgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIgdHlwZXMuCi0KLS0gSXNzdWUgIzE1Nzg0OiBNb2RpZnkgYE9TRXJyb3JgLl9fc3RyX18oKSB0byBiZXR0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbiBlcnJubwotICBlcnJvciBudW1iZXJzIGFuZCBXaW5kb3dzIGVycm9yIG51bWJlcnMuCi0KLS0gSXNzdWUgIzE1NzgxOiBGaXggdHdvIHNtYWxsIHJhY2UgY29uZGl0aW9ucyBpbiBpbXBvcnQncyBtb2R1bGUgbG9ja2luZy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNzE1ODogQWRkICdzeW1ib2xzJyB0byBoZWxwKCkgd2VsY29tZSBtZXNzYWdlOyBjbGFyaWZ5Ci0gICdtb2R1bGVzIHNwYW0nIG1lc3NhZ2VzLgotCi0tIElzc3VlICMxNTg0NzogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSwgd2hpY2ggZGlkIG5vdCBhY2NlcHQgdHVwbGVzIGFzCi0gIGFyZ3VtZW50IGxpc3RzIGFueW1vcmUuCi0KLS0gSXNzdWUgIzE1ODI4OiBSZXN0b3JlIHN1cHBvcnQgZm9yIEMgZXh0ZW5zaW9ucyBpbiBgaW1wLmxvYWRfbW9kdWxlKClgLgotCi0tIElzc3VlICMxNTM0MDogRml4IGltcG9ydGluZyB0aGUgcmFuZG9tIG1vZHVsZSB3aGVuIGBgL2Rldi91cmFuZG9tYGAgY2Fubm90IGJlCi0gIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KLQotLSBJc3N1ZSAjMTA2NTA6IERlcHJlY2F0ZSB0aGUgd2F0Y2hleHAgcGFyYW1ldGVyIG9mIHRoZSBgRGVjaW1hbC5xdWFudGl6ZSgpYAotICBtZXRob2QuCi0KLS0gSXNzdWUgIzE1Nzg1OiBNb2RpZnkgYHdpbmRvdy5nZXRfd2NoKClgIEFQSSBvZiB0aGUgY3Vyc2VzIG1vZHVsZTogcmV0dXJuIGEKLSAgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIGFuZCBhbiBpbnRlZ2VyIGZvciBzcGVjaWFsIGtleXMsIGluc3RlYWQgb2YgYWx3YXlzCi0gIHJldHVybmluZyBhbiBpbnRlZ2VyLiBTbyBpdCBpcyBub3cgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggc3BlY2lhbCBrZXlzIGxpa2UKLSAga2V5cGFkIGtleXMuCi0KLS0gSXNzdWUgIzE0MjIzOiBGaXggYHdpbmRvdy5hZGRjaCgpYCBvZiB0aGUgY3Vyc2VzIG1vZHVsZSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzCi0gIGxpa2UgY3Vyc2VzLkFDU19ITElORTogdGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChpbnQpIGFuZCBhZGRjaChieXRlcykgaXMgbm93Ci0gIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZGNoKCkvbXZ3YWRkY2goKSAoYXMgaXQgd2FzIGRvbmUgaW4gUHl0aG9uIDMuMiksCi0gIGluc3RlYWQgb2Ygd2FkZF93Y2goKS9tdndhZGRfd2NoKCkuIFRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goc3RyKSBpcyBzdGlsbAotICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpIGlmIHRoZSBQeXRob24gY3Vyc2VzIGlzIGxpbmtlZAotICB0byBsaWJuY3Vyc2Vzdy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE1ODIyOiBSZWFsbHkgZW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQKLSAgKHJlcGxhY2VzIGZpeGVzIGZvciBJc3N1ZSAjMTU2NDUpLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZCB0aGUKLSAgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUgaXRlbQotICBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkgd2lsbCBiZQotICBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDI1LUF1Zy0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU1NzM6IG1lbW9yeXZpZXcgY29tcGFyaXNvbnMgYXJlIG5vdyBwZXJmb3JtZWQgYnkgdmFsdWUgd2l0aCBmdWxsCi0gIHN1cHBvcnQgZm9yIGFueSB2YWxpZCBzdHJ1Y3QgbW9kdWxlIGZvcm1hdCBkZWZpbml0aW9uLgotCi0tIElzc3VlICMxNTMxNjogV2hlbiBhbiBpdGVtIGluIHRoZSBmcm9tbGlzdCBmb3IgYF9faW1wb3J0X18oKWAgZG9lc24ndCBleGlzdCwKLSAgZG9uJ3QgcmFpc2UgYW4gZXJyb3IsIGJ1dCBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFzIHBhcnQgb2YgYW4gaW1wb3J0IGRvCi0gIGxldCB0aGF0IHByb3BhZ2F0ZS4KLQotLSBJc3N1ZSAjMTU3Nzg6IEVuc3VyZSB0aGF0IGBgc3RyKEltcG9ydEVycm9yKG1zZykpYGAgcmV0dXJucyBhIHN0ciBldmVuIHdoZW4KLSAgbXNnIGlzbid0IGEgc3RyLgotCi0tIElzc3VlICMyMDUxOiBTb3VyY2UgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIG9uY2UgYWdhaW4gY29ycmVjdGx5IGNvcGllZCB0bwotICB0aGUgY2FjaGVkIGJ5dGVjb2RlIGZpbGUuIChUaGUgbWlncmF0aW9uIHRvIGltcG9ydGxpYiByZWludHJvZHVjZWQgdGhpcwotICBwcm9ibGVtIGJlY2F1c2UgdGhlc2Ugd2FzIG5vIHJlZ3Jlc3Npb24gdGVzdC4gQSB0ZXN0IGhhcyBiZWVuIGFkZGVkIGFzIHBhcnQgb2YKLSAgdGhpcyBwYXRjaCkKLQotLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIGBgUFlUSE9ORVhFQ1VUQUJMRWBgIGlzIHNldCBvbiBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjMTU3MjY6IEZpeCBpbmNvcnJlY3QgYm91bmRzIGNoZWNraW5nIGluIFB5U3RhdGVfRmluZE1vZHVsZS4gIFBhdGNoIGJ5Ci0gIFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIGBQeU9iamVjdF9Jc1RydWUoKWAgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKLSAgZXJyb3JzIGNvcnJlY3RseS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0ODQ2OiBgaW1wb3J0bGliLkZpbGVGaW5kZXJgIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBkaXJlY3RvcnkKLSAgYmVpbmcgc2VhcmNoZWQgaXMgcmVtb3ZlZCBhZnRlciBhIHByZXZpb3VzIGltcG9ydCBhdHRlbXB0LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMgY29tcGlsZWQKLSAgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyLgotCi0tIElzc3VlICMxMzA3MjogVGhlIGFycmF5IG1vZHVsZSdzICd1JyBmb3JtYXQgY29kZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQotICByZW1vdmVkIGluIFB5dGhvbiA0LjAuCi0KLS0gSXNzdWUgIzE1NTQ0OiBGaXggRGVjaW1hbC5fX2Zsb2F0X18gdG8gd29yayB3aXRoIHBheWxvYWQtY2FycnlpbmcgTmFOcy4KLQotLSBJc3N1ZSAjMTU3NzY6IEFsbG93IHB5dmVudiB0byB3b3JrIGluIGV4aXN0aW5nIGRpcmVjdG9yeSB3aXRoIC0tY2xlYW4uCi0KLS0gSXNzdWUgIzE1MjQ5OiBlbWFpbCdzIEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgbWFuZ2xlcyBGcm9tIGxpbmVzICh3aGVuCi0gIHJlcXVlc3RlZCkgZXZlbiBpZiB0aGUgYm9keSBjb250YWlucyB1bmRlY29kYWJsZSBieXRlcy4KLQotLSBJc3N1ZSAjMTU3Nzc6IEZpeCBhIHJlZmxlYWsgaW4gX3Bvc2l4c3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjIzY2NTE5NDogVXBkYXRlIGBlbWFpbC51dGlscy5sb2NhbHRpbWVgIHRvIHVzZSBkYXRldGltZS5hc3RpbWV6b25lIGFuZAotICBjb3JyZWN0bHkgaGFuZGxlIGhpc3RvcmljIGNoYW5nZXMgaW4gVVRDIG9mZnNldHMuCi0KLS0gSXNzdWUgIzE1MTk5OiBGaXggSmF2YVNjcmlwdCdzIGRlZmF1bHQgTUlNRSB0eXBlIHRvIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQuCi0gIFBhdGNoIGJ5IEJvaHVzbGF2IEthYnJkYS4KLQotLSBJc3N1ZSAjMTI2NDM6IGBjb2RlLkludGVyYWN0aXZlQ29uc29sZWAgbm93IHJlc3BlY3RzIGBzeXMuZXhjZXB0aG9va2Agd2hlbgotICBkaXNwbGF5aW5nIGV4Y2VwdGlvbnMuICBQYXRjaCBieSBBYXJvbiBJbGVzLgotCi0tIElzc3VlICMxMzU3OTogYHN0cmluZy5Gb3JtYXR0ZXJgIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgotCi0tIElzc3VlICMxNTU5NTogRml4IGBgc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSlgYCBmb3IgY2VydGFpbgotICBsb2NhbGVzICh1dGYtMTYgYW5kIHV0Zi0zMiBmYW1pbHkpLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTU0Nzc6IEluIGNtYXRoIGFuZCBtYXRoIG1vZHVsZXMsIGFkZCB3b3JrYXJvdW5kIGZvciBwbGF0Zm9ybXMgd2hvc2UKLSAgc3lzdGVtLXN1cHBsaWVkIGxvZzFwIGZ1bmN0aW9uIGRvZXNuJ3QgcmVzcGVjdCBzaWducyBvZiB6ZXJvcy4KLQotLSBJc3N1ZSAjMTU3MTU6IGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYCB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUKLSAgdXNlIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KLQotLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWMgT1MgWCBieQotICBzZW5kaW5nL3JlY2VpdmluZyBhbiBhY2tub3dsZWRnbWVudCBhZnRlciBmaWxlIGRlc2NyaXB0b3IgdHJhbnNmZXIuCi0gIFRlc3RQaWNrbGluZ0Nvbm5lY3Rpb24gaGFzIGJlZW4gcmVlbmFibGVkIGZvciBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjMTEwNjI6IEZpeCBhZGRpbmcgYSBtZXNzYWdlIGZyb20gZmlsZSB0byBCYWJ5bCBtYWlsYm94LgotCi0tIElzc3VlICMxNTY0NjogUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcgYG11bHRpcHJvY2Vzc2luZ2AKLSAgb24gV2luZG93cyB3aXRob3V0IHRoZSBgYGlmIF9fbmFtZV9fID09ICdfX21haW5fXydgYCBpZGlvbS4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNTY3ODogRml4IElETEUgbWVudXMgd2hlbiBzdGFydGVkIGZyb20gT1MgWCBjb21tYW5kIGxpbmUgKDMuMy4wYjIKLSAgcmVncmVzc2lvbikuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBUb3VjaGVkIHVwIHRoZSBQeXRob24gMiB0byAzIHBvcnRpbmcgZ3VpZGUuCi0KLS0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBganNvbmAgbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KLSAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgotCi0tIENyZWF0ZSBhICdDb25jdXJyZW50IEV4ZWN1dGlvbicgc2VjdGlvbiBpbiB0aGUgZG9jcywgYW5kIHNwbGl0IHVwIHRoZQotICAnT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcycgc2VjdGlvbiB0byB1c2UgYSBtb3JlIHVzZXItY2VudHJpYwotICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQgdGV4dAotICBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0aW9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGggdGhlIFNwaGlueAotICBgYDpwbGF0Zm9ybTpgYCB0YWcsIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZSBhcyBwYXJ0IG9mIHRoZSBUYWJsZSBvZiBDb250ZW50cy4KLQotLSBJc3N1ZSAjNDk2NjogQnJpbmcgdGhlIHNlcXVlbmNlIGRvY3MgdXAgdG8gZGF0ZSBmb3IgdGhlIFB5M2sgdHJhbnNpdGlvbiBhbmQKLSAgdGhlIG1hbnkgbGFuZ3VhZ2UgZW5oYW5jZW1lbnRzIHNpbmNlIHRoZXkgd2VyZSBvcmlnaW5hbCB3cml0dGVuLgotCi0tIFRoZSAicGF0aCBpbXBvcnRlciIgbWlzbm9tZXIgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBFcmljIFNub3cncwotICBtb3JlLWF3a3dhcmQtYnV0LWF0LWxlYXN0LW5vdC13cm9uZyBzdWdnZXN0aW9uIG9mICJwYXRoIGJhc2VkIGZpbmRlciIgaW4gdGhlCi0gIGltcG9ydCBzeXN0ZW0gcmVmZXJlbmNlIGRvY3MuCi0KLS0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gIFBhdGNoIGJ5Ci0gIERhbmllbCBFbGxpcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQotICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQgdGVzdHMgaW4KLSAgdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgotCi0tIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcgdHdvCi0gIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUgb2YgdGVzdC4KLQotLSBJc3N1ZSAjMTU3NDM6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2QgdXNhZ2UgaW4gYHVybGxpYmAgdGVzdHMuIFBhdGNoIGJ5Ci0gIEplZmYgS251cHAuCi0KLS0gSXNzdWUgIzE1NjE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGBqc29uYCBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkIGlucHV0Ci0gIGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgotCi1CdWlsZAotLS0tLS0KLQotLSBPdXRwdXQgbGliIGZpbGVzIGZvciBQR08gYnVpbGQgaW50byBQR08gZGlyZWN0b3J5LgotCi0tIFBpY2sgdXAgMzItYml0IGxhdW5jaGVyIGZyb20gUEdPIGRpcmVjdG9yeSBvbiA2NC1iaXQgUEdPIGJ1aWxkLgotCi0tIERyb3AgYGBQQ1xweXRob25fbnQuaGBgIGFzIGl0J3Mgbm90IHVzZWQuICBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KLSAgYnVpbGQgc3RlcC4KLQotLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbCBhbWQ2NAotICBjb25maWd1cmF0aW9uLgotCi0tIEFkZCBtaXNzaW5nIFBHSS9QR08gY29uZmlndXJhdGlvbnMgZm9yIHB5d2xhdW5jaGVyLgotCi0tIElzc3VlICMxNTY0NTogRW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMi1BdWctMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBgYHlpZWxkIGZyb21gYCB3aGVuIFN0b3BJdGVyYXRpb24gaXMKLSAgcmFpc2VkIGJ5IGEgY3VzdG9tIGl0ZXJhdG9yLgotCi0tIElzc3VlICMxMzExOTogYHN5cy5zdGRvdXRgIGFuZCBgc3lzLnN0ZGVycmAgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgotICBXaW5kb3dzLCBhcyBQeXRob24gMi4KLQotLSBJc3N1ZSAjMTU1MzQ6IEZpeCB0aGUgZmFzdC1zZWFyY2ggZnVuY3Rpb24gZm9yIG5vbi1BU0NJSSBVbmljb2RlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgYF9faW1wb3J0X18oKWAgdG8gaGF2ZSB0aGUgcHJvcGVyIGRlZmF1bHQKLSAgdmFsdWUgb2YgMCBmb3IgJ2xldmVsJyBhbmQgdG8gbm90IG1lbnRpb24gbmVnYXRpdmUgbGV2ZWxzIHNpbmNlIHRoZXkgYXJlIG5vdAotICBzdXBwb3J0ZWQuCi0KLS0gSXNzdWUgIzE1NDI1OiBFbGltaW5hdGVkIHRyYWNlYmFjayBub2lzZSBmcm9tIG1vcmUgc2l0dWF0aW9ucyBpbnZvbHZpbmcKLSAgaW1wb3J0bGliLgotCi0tIElzc3VlICMxNDU3ODogU3VwcG9ydCBtb2R1bGVzIHJlZ2lzdGVyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkgYWdhaW4uCi0KLS0gSXNzdWUgIzE1NDY2OiBTdG9wIHVzaW5nIFRZUEVfSU5UNjQgaW4gbWFyc2hhbCwgdG8gbWFrZSBpbXBvcnRsaWIuaCAoYW5kIG90aGVyCi0gIGJ5dGUgY29kZSBmaWxlcykgZXF1YWwgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zLgotCi0tIElzc3VlICMxNjkyMzM1OiBNb3ZlIGluaXRpYWwgZXhjZXB0aW9uIGFyZ3MgYXNzaWdubWVudCB0bwotICBgQmFzZUV4Y2VwdGlvbi5fX25ld19fKClgIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTI4MzQ6IEZpeCBgUHlCdWZmZXJfVG9Db250aWd1b3VzKClgIGZvciBub24tY29udGlndW91cyBhcnJheXMuCi0KLS0gSXNzdWUgIzE1NDU2OiBGaXggY29kZSBgX19zaXplb2ZfXygpYCBhZnRlciAjMTIzOTkgY2hhbmdlLiAgUGF0Y2ggYnkgU2VyaGl5Ci0gIFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KLQotLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIGBQeU1vZHVsZV9DcmVhdGUoKWAgdGhhdCBjYXVzZWQgcmVmZXJlbmNlcyB0byBiZQotICBsZWFrZWQgb24gc29tZSBlcnJvciBwYXRocyBoYXMgYmVlbiBmaXhlZC4gIFBhdGNoIGJ5IEp1bGlhIExhd2FsbC4KLQotLSBJc3N1ZSAjMTUzNjg6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIGJ5dGVjb2RlIGdlbmVyYXRpb24gdG8gYmUgbm9uLWRldGVybWluaXN0aWMKLSAgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE1MjAyOiBDb25zaXN0ZW50bHkgdXNlIHRoZSBuYW1lICJmb2xsb3dfc3ltbGlua3MiIGZvciBuZXcgcGFyYW1ldGVycwotICBpbiBvcyBhbmQgc2h1dGlsIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTUzMTQ6IGBgX19tYWluX18uX19sb2FkZXJfX2BgIGlzIG5vdyBzZXQgY29ycmVjdGx5IGR1cmluZyBpbnRlcnByZXRlcgotICBzdGFydHVwLgotCi0tIElzc3VlICMxNTExMTogV2hlbiBhIG1vZHVsZSBpbXBvcnRlZCB1c2luZyAnZnJvbSBpbXBvcnQnIGhhcyBhbiBJbXBvcnRFcnJvcgotICBpbnNpZGUgaXRzZWxmLCBkb24ndCBtYXNrIHRoYXQgZmFjdCBiZWhpbmQgYSBnZW5lcmljIEltcG9ydEVycm9yIGZvciB0aGUKLSAgbW9kdWxlIGl0c2VsZi4KLQotLSBJc3N1ZSAjMTUyOTM6IEFkZCBHQyBzdXBwb3J0IHRvIHRoZSBBU1QgYmFzZSBub2RlIHR5cGUuCi0KLS0gSXNzdWUgIzE1MjkxOiBGaXggYSBtZW1vcnkgbGVhayB3aGVyZSBBU1Qgbm9kZXMgd2hlcmUgbm90IHByb3Blcmx5Ci0gIGRlYWxsb2NhdGVkLgotCi0tIElzc3VlICMxNTExMDogRml4IHRoZSB0cmFjZWJhY2tzIGdlbmVyYXRlZCBieSAiaW1wb3J0IHh4eCIgdG8gbm90IHNob3cgdGhlCi0gIGltcG9ydGxpYiBzdGFjayBmcmFtZXMuCi0KLS0gSXNzdWUgIzE2MzY5OiBHbG9iYWwgUHlUeXBlT2JqZWN0cyBub3QgaW5pdGlhbGl6ZWQgd2l0aCBQeVR5cGVfUmVhZHkoLi4uKS4KLQotLSBJc3N1ZSAjMTUwMjA6IFRoZSBwcm9ncmFtIG5hbWUgdXNlZCB0byBzZWFyY2ggZm9yIFB5dGhvbidzIHBhdGggaXMgbm93Ci0gICJweXRob24zIiB1bmRlciBVbml4LCBub3QgInB5dGhvbiIuCi0KLS0gSXNzdWUgIzE1ODk3OiB6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLgotICBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KLQotLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRjaCwKLSAgcmV0dXJuIHRoZSBwcm9wZXIgZmFpbHVyZSByZXR1cm4gdmFsdWUgKDEpLiBQYXRjaCBjb250cmlidXRlZCBieSBKZWZmIEtudXBwLgotCi0tIElzc3VlICMxNTIyOTogQW4gYE9TRXJyb3JgIHN1YmNsYXNzIHdob3NlIF9faW5pdF9fIGRvZXNuJ3QgY2FsbCBiYWNrCi0gIE9TRXJyb3IuX19pbml0X18gY291bGQgcHJvZHVjZSBpbmNvbXBsZXRlIGluc3RhbmNlcywgbGVhZGluZyB0byBjcmFzaGVzIHdoZW4KLSAgY2FsbGluZyBzdHIoKSBvbiB0aGVtLgotCi0tIElzc3VlICMxNTMwNzogVmlydHVhbCBlbnZpcm9ubWVudHMgbm93IHVzZSBzeW1saW5rcyB3aXRoIGZyYW1ld29yayBidWlsZHMgb24KLSAgTWFjIE9TIFgsIGxpa2Ugb3RoZXIgUE9TSVggYnVpbGRzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0NTkwOiBjb25maWdwYXJzZXIgbm93IGNvcnJlY3RseSBzdHJpcHMgaW5saW5lIGNvbW1lbnRzIHdoZW4gZGVsaW1pdGVyCi0gIG9jY3VycyBlYXJsaWVyIHdpdGhvdXQgcHJlY2VkaW5nIHNwYWNlLgotCi0tIElzc3VlICMxNTQyNDogQWRkIGEgYF9fc2l6ZW9mX18oKWAgaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQotICBMdWR3aWcgSMOkaG5lLgotCi0tIElzc3VlICMxNTU3NjogQWxsb3cgZXh0ZW5zaW9uIG1vZHVsZXMgdG8gYWN0IGFzIGEgcGFja2FnZSdzIF9faW5pdF9fIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTU1MDI6IEhhdmUgYGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpYCB3b3JrIG9uIGBzeXMubWV0YV9wYXRoYAotICBpbnN0ZWFkIG9mIGBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCi0KLS0gSXNzdWUgIzE1MTYzOiBQeWRvYyBzaG91bGRuJ3QgbGlzdCBfX2xvYWRlcl9fIGFzIG1vZHVsZSBkYXRhLgotCi0tIElzc3VlICMxNTQ3MTogRG8gbm90IHVzZSBtdXRhYmxlIG9iamVjdHMgYXMgZGVmYXVsdHMgZm9yCi0gIGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYC4KLQotLSBJc3N1ZSAjMTU1NTk6IFRvIGF2b2lkIGEgcHJvYmxlbWF0aWMgZmFpbHVyZSBtb2RlIHdoZW4gcGFzc2VkIHRvIHRoZSBieXRlcwotICBjb25zdHJ1Y3Rvciwgb2JqZWN0cyBpbiB0aGUgaXBhZGRyZXNzIG1vZHVsZSBubyBsb25nZXIgaW1wbGVtZW50IGBfX2luZGV4X18oKWAKLSAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IGBfX2ludF9fKClgIGFzIGFwcHJvcHJpYXRlKS4KLQotLSBJc3N1ZSAjMTU1NDY6IEZpeCBoYW5kbGluZyBvZiBwYXRob2xvZ2ljYWwgaW5wdXQgZGF0YSBpbiB0aGUgcGVlaygpIGFuZAotICByZWFkMSgpIG1ldGhvZHMgb2YgdGhlIEJaMkZpbGUsIEd6aXBGaWxlIGFuZCBMWk1BRmlsZSBjbGFzc2VzLgotCi0tIElzc3VlICMxMjY1NTogSW5zdGVhZCBvZiByZXF1aXJpbmcgYSBjdXN0b20gdHlwZSwgYG9zLnNjaGVkX2dldGFmZmluaXR5KClgIGFuZAotICBgb3Muc2NoZWRfc2V0YWZmaW5pdHkoKWAgbm93IHVzZSByZWd1bGFyIHNldHMgb2YgaW50ZWdlcnMgdG8gcmVwcmVzZW50IHRoZQotICBDUFVzIGEgcHJvY2VzcyBpcyByZXN0cmljdGVkIHRvLgotCi0tIElzc3VlICMxNTUzODogRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBgc29ja2V0LmdldG5hbWVpbmZvKClgIC8KLSAgYHNvY2tldC5nZXRhZGRyaW5mbygpYCBlbXVsYXRpb24gY29kZS4gIFBhdGNoIGJ5IFBoaWxpcHAgSGFnZW1laXN0ZXIuCi0KLS0gSXNzdWUgIzE1NTE5OiBQcm9wZXJseSBleHBvc2UgV2luZG93c1JlZ2lzdHJ5RmluZGVyIGluIGltcG9ydGxpYiAoYW5kIHVzZSB0aGUKLSAgY29ycmVjdCB0ZXJtIGZvciBpdCkuICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCi0KLS0gSXNzdWUgIzE1NTAyOiBCcmluZyB0aGUgaW1wb3J0bGliIEFCQ3MgaW50byBsaW5lIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCi0gIGltcG9ydCBwcm90b2NvbHMgZ2l2ZW4gUEVQIDQyMC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KLQotLSBJc3N1ZSAjMTU0OTk6IExhdW5jaGluZyBhIHdlYmJyb3dzZXIgaW4gVW5peCB1c2VkIHRvIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzLgotICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbiBCYXJrb3Zza3kuCi0KLS0gSXNzdWUgIzE1NDYzOiBUaGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0cnVuY2F0ZXMgc3RyaW5ncyB0byA1MDAgY2hhcmFjdGVycywKLSAgaW5zdGVhZCBvZiAxMDAsIHRvIGJlIGFibGUgdG8gZGlzcGxheSBsb25nIGZpbGUgcGF0aHMuCi0KLS0gSXNzdWUgIzYwNTY6IE1ha2UgYG11bHRpcHJvY2Vzc2luZ2AgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0Ci0gIHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KLQotLSBJc3N1ZSAjMTUzNjQ6IEZpeCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCi0KLS0gSXNzdWUgIzE1NDEzOiBgb3MudGltZXMoKWAgaGFkIGRpc2FwcGVhcmVkIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBgc3lzLmdldHNpemVvZigpYCB0bwotICByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHN0cnVjdC5TdHJ1Y3QgaW5zdGFuY2VzIGhhcyBiZWVuIGZpeGVkLiAgSW5pdGlhbAotICBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBgZW1haWwuR2VuZXJhdG9yYCBub3cgY29ycmVjdGx5Ci0gIG1hbmdsZXMgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IKLSAgZXBpbG9ndWUuCi0KLS0gSXNzdWUgIzE1MDk0OiBJbmNvcnJlY3RseSBwbGFjZWQgI2VuZGlmIGluIF90a2ludGVyLmMuICBQYXRjaCBieSBTZXJoaXkKLSAgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzkyMjogYGFyZ3BhcnNlYCBubyBsb25nZXIgaW5jb3JyZWN0bHkgc3RyaXBzICctLSdzIHRoYXQgYXBwZWFyIGFmdGVyCi0gIHRoZSBmaXJzdCBvbmUuCi0KLS0gSXNzdWUgIzEyMzUzOiBgYXJncGFyc2VgIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KLQotLSBJc3N1ZSAjMTAwMTcsIGlzc3VlICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKLSAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KLQotLSBJc3N1ZSAjMTUzOTc6IGBpbnNwZWN0LmdldG1vZHVsZW5hbWUoKWAgaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIGltcG9ydGxpYiB2aWEKLSAgYSBuZXcgYGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKClgIEFQSS4KLQotLSBJc3N1ZSAjMTQ2MzU6IGB0ZWxuZXRsaWJgIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCi0gIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCi0KLS0gSXNzdWUgIzE1MTgwOiBDbGFyaWZ5IHBvc2l4cGF0aC5qb2luKCkgZXJyb3IgbWVzc2FnZSB3aGVuIG1peGluZyBzdHIgJiBieXRlcy4KLQotLSBJc3N1ZSAjMTUzNDM6IHBrZ3V0aWwgbm93IGluY2x1ZGVzIGFuIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyBpbXBsZW1lbnRhdGlvbiBmb3IKLSAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIChzaW1pbGFyIHRvIHRoZSB3YXkgaXQgYWxyZWFkeSBoYW5kbGVkCi0gIHppcGltcG9ydC56aXBpbXBvcnRlcikuCi0KLS0gSXNzdWUgIzE1MzE0OiBydW5weSBub3cgc2V0cyBfX21haW5fXy5fX2xvYWRlcl9fIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTUzNTc6IFRoZSBpbXBvcnQgZW11bGF0aW9uIGluIHBrZ3V0aWwgaXMgbm93IGRlcHJlY2F0ZWQuIHBrZ3V0aWwgdXNlcwotICBpbXBvcnRsaWIgaW50ZXJuYWxseSByYXRoZXIgdGhhbiB0aGUgZW11bGF0aW9uLgotCi0tIElzc3VlICMxNTIzMzogUHl0aG9uIG5vdyBndWFyYW50ZWVzIHRoYXQgY2FsbGFibGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYXRleGl0Ci0gIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCi0KLS0gSXNzdWUgIzE1MjM4OiBgc2h1dGlsLmNvcHlzdGF0KClgIG5vdyBjb3BpZXMgTGludXggImV4dGVuZGVkIGF0dHJpYnV0ZXMiLgotCi0tIElzc3VlICMxNTIzMDogcnVucHkucnVuX3BhdGggbm93IGNvcnJlY3RseSBzZXRzIF9fcGFja2FnZV9fIGFzIGRlc2NyaWJlZCBpbgotICB0aGUgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTUzMTU6IFN1cHBvcnQgVlMgMjAxMCBpbiBkaXN0dXRpbHMgY3lnd2luY29tcGlsZXIuCi0KLS0gSXNzdWUgIzE1Mjk0OiBGaXggYSByZWdyZXNzaW9uIGluIHBrZ3V0aWwuZXh0ZW5kX3BhdGgoKSdzIGhhbmRsaW5nIG9mIG5lc3RlZAotICBuYW1lc3BhY2UgcGFja2FnZXMuCi0KLS0gSXNzdWUgIzE1MDU2OiBgaW1wLmNhY2hlX2Zyb21fc291cmNlKClgIGFuZCBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHJhaXNlCi0gIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgc2V0IHRvIE5vbmUuCi0KLS0gSXNzdWUgIzE1MjU2OiBHcmFtbWF0aWNhbCBtaXN0YWtlIGluIGV4Y2VwdGlvbiByYWlzZWQgYnkgYGltcC5maW5kX21vZHVsZSgpYC4KLQotLSBJc3N1ZSAjNTkzMTogYHdzZ2lyZWZgIGVudmlyb24gdmFyaWFibGUgU0VSVkVSX1NPRlRXQVJFIHdpbGwgc3BlY2lmeSBhbgotICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UgQ1B5dGhvbiwgSnl0aG9uIGluc3RlYWQgb2YgZ2VuZXJpYyAiUHl0aG9uIi4KLQotLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAibWF4X2J1ZmZlcl9zaXplIiBvZiBCdWZmZXJlZFdyaXRlciBhbmQKLSAgQnVmZmVyZWRSV1BhaXIsIGZyb20gdGhlIGlvIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYC4KLQotLSBJc3N1ZSAjMTQ4MTQ6IEltcGxlbWVudCBtb3JlIGNvbnNpc3RlbnQgb3JkZXJpbmcgYW5kIHNvcnRpbmcgYmVoYXZpb3VyIGZvcgotICBpcGFkZHJlc3Mgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ4MTQ6IGBpcGFkZHJlc3NgIG5ldHdvcmsgb2JqZWN0cyBjb3JyZWN0bHkgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4KLSAgY29tcGFyZWQgdG8gYXJiaXRyYXJ5IG9iamVjdHMgaW5zdGVhZCBvZiByYWlzaW5nIFR5cGVFcnJvci4KLQotLSBJc3N1ZSAjMTQ5OTA6IENvcnJlY3RseSBmYWlsIHdpdGggU3ludGF4RXJyb3Igb24gaW52YWxpZCBlbmNvZGluZyBkZWNsYXJhdGlvbi4KLQotLSBJc3N1ZSAjMTQ4MTQ6IGBpcGFkZHJlc3NgIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KLSAgY29uc3RydWN0aW5nIGluc3RhbmNlcyBkaXJlY3RseSAoY2hhbmdlcyBwZXJtaXR0ZWQgZHVyaW5nIGJldGEgZHVlIHRvCi0gIHByb3Zpc2lvbmFsIEFQSSBzdGF0dXMpLgotCi0tIElzc3VlICMxNTI0NzogYGlvLkZpbGVJT2Agbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yCi0gIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNTI2MTogU3RvcCBvcy5zdGF0KGZkKSBjcmFzaGluZyBvbiBXaW5kb3dzIHdoZW4gZmQgbm90IG9wZW4uCi0KLS0gSXNzdWUgIzE1MTY2OiBJbXBsZW1lbnQgYGltcC5nZXRfdGFnKClgIHVzaW5nIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYC4KLQotLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gYGltcG9ydGxpYi5fX2luaXRfXygpYCBjYW4ndCBmaW5kCi0gIF9mcm96ZW5faW1wb3J0bGliIGluIHN5cy5tb2R1bGVzLCBub3QgSW1wb3J0RXJyb3IuCi0KLS0gSXNzdWUgIzE1MDMwOiBgaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcmAgbm93IHN1cHBvcnRzIHRoZSBuZXcgc291cmNlIHNpemUKLSAgaGVhZGVyIGZpZWxkIGluIC5weWMgZmlsZXMuCi0KLS0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3ggZmlsZXMgb24KLSAgZmx1c2goKS4KLQotLSBJc3N1ZSAjMTA1NzE6IEZpeCB0aGUgIi0tc2lnbiIgb3B0aW9uIG9mIGRpc3R1dGlscycgdXBsb2FkIGNvbW1hbmQuICBQYXRjaCBieQotICBKYWt1YiBXaWxrLgotCi0tIElzc3VlICM5NTU5OiBJZiBtZXNzYWdlcyB3ZXJlIG9ubHkgYWRkZWQsIGEgbmV3IGZpbGUgaXMgbm8gbG9uZ2VyIGNyZWF0ZWQgYW5kCi0gIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbiBtYm94LCBNTURGIG9yIEJhYnlsCi0gIG1haWxib3guCi0KLS0gSXNzdWUgIzEwOTI0OiBGaXhlZCBgY3J5cHQubWtzYWx0KClgIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgotICBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCi0KLS0gSXNzdWUgIzE1MTg0OiBFbnN1cmUgY29uc2lzdGVudCByZXN1bHRzIG9mIE9TIFggY29uZmlndXJhdGlvbiB0YWlsb3JpbmcgZm9yCi0gIHVuaXZlcnNhbCBidWlsZHMgYnkgZmFjdG9yaW5nIG91dCBjb21tb24gT1MgWC1zcGVjaWZpYyBjdXN0b21pemF0aW9ucyBmcm9tCi0gIHN5c2NvbmZpZywgZGlzdHV0aWxzLnN5c2NvbmZpZywgZGlzdHV0aWxzLnV0aWwsIGFuZCBkaXN0dXRpbHMudW5peGNjb21waWxlcgotICBpbnRvIGEgbmV3IG1vZHVsZSBfb3N4X3N1cHBvcnQuCi0KLUMgQVBJCi0tLS0tLQotCi0tIElzc3VlICMxNTYxMDogYFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KClgIG5vdyB1c2VzIGEgJ2xldmVsJyBvZiAwIGluc3RlYWQgb2YgLTEuCi0KLS0gSXNzdWUgIzE1MTY5LCBpc3N1ZSAjMTQ1OTk6IFN0cmlwIG91dCB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZgotICBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCi0gIHVzZWQgdGhlIFB5dGhvbiBjb2RlIGluc3RlYWQuIExlYWRzIHRvIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkgdG8gbm90Ci0gIHRyeSB0byBpbmZlciB0aGUgc291cmNlIHBhdGggZnJvbSB0aGUgYnl0ZWNvZGUgcGF0aCBhcwotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBkb2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcyBvZgotICB0eXBlIGBjdHlwZXMuY191aW50MzJgIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE1MTk0OiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuMTEgcmVsZWFzZS4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKLSAgZW5kZWQgd2l0aCBgYFxgYC4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU0NTg6IHB5dGhvbi1jb25maWcgZ2V0cyBhIG5ldyBvcHRpb24gLS1jb25maWdkaXIgdG8gcHJpbnQgdGhlICRMSUJQTAotICB2YWx1ZS4KLQotLSBNb3ZlIGltcG9ydGxpYi50ZXN0LmJlbmNobWFyayB0byBUb29scy9pbXBvcnRiZW5jaC4KLQotLSBJc3N1ZSAjMTI2MDU6IFRoZSBnZGIgaG9va3MgZm9yIGRlYnVnZ2luZyBDUHl0aG9uICh3aXRoaW4gVG9vbHMvZ2RiKSBoYXZlIGJlZW4KLSAgZW5oYW5jZWQgdG8gc2hvdyBpbmZvcm1hdGlvbiBvbiBtb3JlIEMgZnJhbWVzIHJlbGV2YW50IHRvIENQeXRob24gd2l0aGluIHRoZQotICAicHktYnQiIGFuZCAicHktYnQtZnVsbCIgY29tbWFuZHM6Ci0KLSAgKiBDIGZyYW1lcyB0aGF0IGFyZSB3YWl0aW5nIG9uIHRoZSBHSUwKLSAgKiBDIGZyYW1lcyB0aGF0IGFyZSBnYXJiYWdlLWNvbGxlY3RpbmcKLSAgKiBDIGZyYW1lcyB0aGF0IGFyZSBkdWUgdG8gdGhlIGludm9jYXRpb24gb2YgYSBQeUNGdW5jdGlvbgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1MDQxOiBVcGRhdGUgInNlZSBhbHNvIiBsaXN0IGluIHRraW50ZXIgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoIGJ5Ci0gIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1Mjk1OiBSZW9yZ2FuaXplIGFuZCByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLgotCi0tIElzc3VlICMxNTIzMDogQ2xlYXJseSBkb2N1bWVudCBzb21lIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgcnVucHkgbW9kdWxlIGFuZAotICBudWRnZSByZWFkZXJzIHRvd2FyZHMgaW1wb3J0bGliIHdoZW4gYXBwcm9wcmlhdGUuCi0KLS0gSXNzdWUgIzE1MDUzOiBDb3B5IFB5dGhvbiAzLjMgaW1wb3J0IGxvY2sgY2hhbmdlIG5vdGljZSB0byBhbGwgcmVsZXZhbnQKLSAgZnVuY3Rpb25zIGluIGltcCBpbnN0ZWFkIG9mIGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgcmVsZXZhbnQgc2VjdGlvbi4KLQotLSBJc3N1ZSAjMTUyODg6IExpbmsgdG8gdGhlIHRlcm0gImxvYWRlciIgaW4gbm90ZXMgaW4gcGtndXRpbCBhYm91dCBob3cgdGhpbmdzCi0gIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQgaW4gUHl0aG9uIDMuMyBhbmQgbWFyayB0aGUgcmVxdWlzaXRlIGZ1bmN0aW9ucyBhcwotICAiY2hhbmdlZCIgc2luY2UgdGhleSB3aWxsIG5vIGxvbmdlciB3b3JrIHdpdGggbW9kdWxlcyBkaXJlY3RseSBpbXBvcnRlZCBieQotICBpbXBvcnQgaXRzZWxmLgotCi0tIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBgZXhlYygpYCBvcgotICBgZXhlY2ZpbGUoKWAuCi0KLS0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGBmaWxlY21wLmRpcmNtcCgpYCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCi0gIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTQ0MjogRXhwb3NlIHRoZSBkZWZhdWx0IGxpc3Qgb2YgZGlyZWN0b3JpZXMgaWdub3JlZCBieQotICBgZmlsZWNtcC5kaXJjbXAoKWAgYXMgYSBtb2R1bGUgYXR0cmlidXRlLCBhbmQgZXhwYW5kIHRoZSBsaXN0IHRvIG1vcmUgbW9kZXJuCi0gIHZhbHVlcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIGBfX3NpemVvZl9fKClgIHRlc3RzIGludG8gdGVzdF9zdXBwb3J0LiAgUGF0Y2gKLSAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZyB0ZXN0cwotICBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1MTY4OiBNb3ZlIGBpbXBvcnRsaWIudGVzdGAgdG8gYHRlc3QudGVzdF9pbXBvcnRsaWJgLgotCi0tIElzc3VlICMxNTA5MTogUmVhY3RpdmF0ZSBhIHRlc3Qgb24gVU5JWCB3aGljaCB3YXMgZmFpbGluZyB0aGFua3MgdG8gYQotICBmb3Jnb3R0ZW4gYGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpYCBjYWxsLgotCi0tIElzc3VlICMxNTIzMDogQWRvcHRlZCBhIG1vcmUgc3lzdGVtYXRpYyBhcHByb2FjaCBpbiB0aGUgcnVucHkgdGVzdHMuCi0KLS0gSXNzdWUgIzE1MzAwOiBFbnN1cmUgdGhlIHRlbXBvcmFyeSB0ZXN0IHdvcmtpbmcgZGlyZWN0b3JpZXMgYXJlIGluIHRoZSBzYW1lCi0gIHBhcmVudCBmb2xkZXIgd2hlbiBydW5uaW5nIHRlc3RzIGluIG11bHRpcHJvY2VzcyBtb2RlIGZyb20gYSBQeXRob24gYnVpbGQuCi0gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTI4NDogU2tpcCB7c2VuZCxyZWN2fW1zZyB0ZXN0cyBpbiB0ZXN0X3NvY2tldCB3aGVuIElQdjYgaXMgbm90Ci0gIGVuYWJsZWQuIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBJc3N1ZSAjMTUyNzc6IEZpeCBhIHJlc291cmNlIGxlYWsgaW4gc3VwcG9ydC5weSB3aGVuIElQdjYgaXMgZGlzYWJsZWQuICBQYXRjaAotICBieSBCcmlhbiBCcmF6aWwuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMTcxNTogRml4IG11bHRpYXJjaCBkZXRlY3Rpb24gd2l0aG91dCBoYXZpbmcgRGViaWFuIGRldmVsb3BtZW50IHRvb2xzCi0gIChkcGtnLWRldikgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTAzNzogQnVpbGQgT1MgWCBpbnN0YWxsZXJzIHdpdGggbG9jYWwgY29weSBvZiBuY3Vyc2VzIDUuOSBsaWJyYXJpZXMKLSAgdG8gYXZvaWQgY3Vyc2VzLnVuZ2V0X3djaCBidWcgcHJlc2VudCBpbiBvbGRlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzIHN1Y2ggYXMKLSAgdGhvc2Ugc2hpcHBlZCB3aXRoIE9TIFguCi0KLS0gSXNzdWUgIzE1NTYwOiBGaXggYnVpbGRpbmcgX3NxbGl0ZTMgZXh0ZW5zaW9uIG9uIE9TIFggd2l0aCBhbiBTREsuICBBbHNvLCBmb3IKLSAgT1MgWCBpbnN0YWxsZXJzLCBlbnN1cmUgY29uc2lzdGVudCBzcWxpdGUzIGJlaGF2aW9yIGFuZCBmZWF0dXJlIGF2YWlsYWJpbGl0eQotICBieSBidWlsZGluZyBhIGxvY2FsIGNvcHkgb2YgbGlic3FsaXRlMyByYXRoZXIgdGhhbiBkZXBlbmRpbmcgb24gdGhlIHdpZGUgcmFuZ2UKLSAgb2YgdmVyc2lvbnMgc3VwcGxpZWQgd2l0aCB2YXJpb3VzIE9TIFggcmVsZWFzZXMuCi0KLS0gSXNzdWUgIzg4NDc6IERpc2FibGUgQ09NREFUIGZvbGRpbmcgaW4gV2luZG93cyBQR08gYnVpbGRzLgotCi0tIElzc3VlICMxNDAxODogRml4IE9TIFggVGNsL1RrIGZyYW1ld29yayBjaGVja2luZyB3aGVuIHVzaW5nIE9TIFggU0RLcy4KLQotLSBJc3N1ZSAjMTYyNTY6IE9TIFggaW5zdGFsbGVyIG5vdyBzZXRzIGNvcnJlY3QgcGVybWlzc2lvbnMgZm9yIGRvYyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE1NDMxOiBBZGQgX2ZyZWV6ZV9pbXBvcnRsaWIgcHJvamVjdCB0byByZWdlbmVyYXRlIGltcG9ydGxpYi5oIG9uCi0gIFdpbmRvd3MuIFBhdGNoIGJ5IEtyaXN0asOhbiBWYWx1ciBKw7Nuc3Nvbi4KLQotLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkIGxpYnJhcnkKLSAgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCi0KLS0gSXNzdWUgIzE0MzMwOiBGb3IgY3Jvc3MgYnVpbGRzLCBkb24ndCB1c2UgaG9zdCBweXRob24sIHVzZSBob3N0IHNlYXJjaCBwYXRocwotICBmb3IgaG9zdCBjb21waWxlci4KLQotLSBJc3N1ZSAjMTUyMzU6IEFsbG93IEJlcmtsZXkgREIgdmVyc2lvbnMgdXAgdG8gNS4zIHRvIGJ1aWxkIHRoZSBkYm0gbW9kdWxlLgotCi0tIElzc3VlICMxNTI2ODogU2VhcmNoIGN1cnNlcy5oIGluIC91c3IvaW5jbHVkZS9uY3Vyc2Vzdy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDI3LUp1bi0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBGaXggYSAobW9zdCBsaWtlbHkpIHZlcnkgcmFyZSBtZW1vcnkgbGVhayB3aGVuIGNhbGxpbmcgbWFpbigpIGFuZCBub3QgYmVpbmcKLSAgYWJsZSB0byBkZWNvZGUgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzE0ODE1OiBVc2UgUHlfc3NpemVfdCBpbnN0ZWFkIG9mIGxvbmcgZm9yIHRoZSBvYmplY3QgaGFzaCwgdG8KLSAgcHJlc2VydmUgYWxsIDY0IGJpdHMgb2YgaGFzaCBvbiBXaW42NC4KLQotLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCi0gIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCi0gIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgotICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgotCi0tIElzc3VlICMxMTYyNjogQWRkIF9TaXplVCBmdW5jdGlvbnMgdG8gc3RhYmxlIEFCSS4KLQotLSBJc3N1ZSAjMTUxNDI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIGRlYWxsb2NhdGluZyBpbnN0YW5jZXMgb2YgdHlwZXMKLSAgY3JlYXRlZCB1c2luZyBQeVR5cGVfRnJvbVNwZWMoKS4KLQotLSBJc3N1ZSAjMTAwNTM6IERvbid0IGNsb3NlIEZEcyB3aGVuIEZpbGVJTy5fX2luaXRfXyBmYWlscy4gTG9vc2VseSBiYXNlZCBvbgotICB0aGUgd29yayBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjMTUwOTY6IFJlbW92ZWQgc3VwcG9ydCBmb3IgdXInJyBhcyB0aGUgcmF3IG5vdGF0aW9uIGlzbid0Ci0gIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTM3ODM6IEdlbmVyYXRvciBvYmplY3RzIG5vdyB1c2UgdGhlIGlkZW50aWZpZXIgQVBJcyBpbnRlcm5hbGx5Ci0KLS0gSXNzdWUgIzE0ODc0OiBSZXN0b3JlIGNoYXJtYXAgZGVjb2Rpbmcgc3BlZWQgdG8gcHJlLVBFUCAzOTMgbGV2ZWxzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTAyNjogdXRmLTE2IGVuY29kaW5nIGlzIG5vdyBzaWduaWZpY2FudGx5IGZhc3RlciAodXAgdG8gMTB4KS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTEwMjI6IG9wZW4oKSBhbmQgaW8uVGV4dElPV3JhcHBlciBhcmUgbm93IGNhbGxpbmcKLSAgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpbnN0ZWFkIG9mIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCi0gIGluIHRleHQgbW9kZSBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKLSAgbG9jYWxlIGVuY29kaW5nIHVzaW5nIGxvY2FsZS5zZXRsb2NhbGUoKSwgdXNlIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZwotICBpbnN0ZWFkIG9mIHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTQ2NzM6IEFkZCBFcmljIFNub3cncyBzeXMuaW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE1MDM4OiBPcHRpbWl6ZSBweXRob24gTG9ja3Mgb24gV2luZG93cy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMjI4ODogQ29uc2lkZXIgJzAnIGFuZCAnMC4wJyBhcyB2YWxpZCBpbml0aWFsdmFsdWUKLSAgZm9yIHRraW50ZXIgU2ltcGxlRGlhbG9nLgotCi0tIElzc3VlICMxNTUxMjogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgcGFyc2VyLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQ2OTogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgZGVxdWUgb2JqZWN0cy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0ODk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIEJ5dGVzSU8gb2JqZWN0cy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0ODc6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGJ1ZmZlcmVkIEkvTyBvYmplY3RzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTUxNDogQ29ycmVjdCBfX3NpemVvZl9fIHN1cHBvcnQgZm9yIGNwdV9zZXQuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MTc3OiBBZGRlZCBkaXJfZmQgcGFyYW1ldGVyIHRvIG9zLmZ3YWxrKCkuCi0KLS0gSXNzdWUgIzE1MDYxOiBSZS1pbXBsZW1lbnRlZCBobWFjLmNvbXBhcmVfZGlnZXN0KCkgaW4gQyB0byBwcmV2ZW50IGZ1cnRoZXIKLSAgdGltaW5nIGFuYWx5c2lzIGFuZCB0byBzdXBwb3J0IGFsbCBidWZmZXIgcHJvdG9jb2wgYXdhcmUgb2JqZWN0cyBhcyB3ZWxsIGFzCi0gIEFTQ0lJIG9ubHkgc3RyIGluc3RhbmNlcyBzYWZlbHkuCi0KLS0gSXNzdWUgIzE1MTY0OiBDaGFuZ2UgcmV0dXJuIHZhbHVlIG9mIHBsYXRmb3JtLnVuYW1lKCkgZnJvbSBhCi0gIHBsYWluIHR1cGxlIHRvIGEgY29sbGVjdGlvbnMubmFtZWR0dXBsZS4KLQotLSBTdXBwb3J0IE1hZ2VpYSBMaW51eCBpbiB0aGUgcGxhdGZvcm0gbW9kdWxlLgotCi0tIElzc3VlICMxMTY3ODogU3VwcG9ydCBBcmNoIGxpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE1MTE4OiBDaGFuZ2UgcmV0dXJuIHZhbHVlIG9mIG9zLnVuYW1lKCkgYW5kIG9zLnRpbWVzKCkgZnJvbQotICBwbGFpbiB0dXBsZXMgdG8gaW1tdXRhYmxlIGl0ZXJhYmxlIG9iamVjdHMgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzCi0gIChzdHJ1Y3RzZXEgb2JqZWN0cykuCi0KLS0gU3BlZWQgdXAgX2RlY2ltYWwgYnkgYW5vdGhlciAxMC0xNSUgYnkgY2FjaGluZyB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQKLSAgdGhhdCB3YXMgbGFzdCBhY2Nlc3NlZC4gSW4gdGhlIHBpIGJlbmNobWFyayAoNjQtYml0IHBsYXRmb3JtLCBwcmVjPTkpLAotICBfZGVjaW1hbCBpcyBub3cgb25seSAxLjV4IHNsb3dlciB0aGFuIGZsb2F0LgotCi0tIFJlbW92ZSB0aGUgcGFja2FnaW5nIG1vZHVsZSwgd2hpY2ggaXMgbm90IHJlYWR5IGZvciBwcmltZSB0aW1lLgotCi0tIElzc3VlICMxNTE1NDogQWRkICJkaXJfZmQiIHBhcmFtZXRlciB0byBvcy5ybWRpciwgcmVtb3ZlICJybWRpciIKLSAgcGFyYW1ldGVyIGZyb20gb3MucmVtb3ZlIC8gb3MudW5saW5rLgotCi0tIElzc3VlICM0NDg5OiBBZGQgYSBzaHV0aWwucm10cmVlIHRoYXQgaXNuJ3Qgc3VzY2VwdGlibGUgdG8gc3ltbGluayBhdHRhY2tzLgotICBJdCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkgb24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgdGhlIG5lY2Vzc2FyeSBvcy5vcGVuYXQoKQotICBhbmQgb3MudW5saW5rYXQoKSBmdW5jdGlvbnMuIE1haW4gY29kZSBieSBNYXJ0aW4gdm9uIEzDtndpcy4KLQotLSBJc3N1ZSAjMTUxNTY6IEhUTUxQYXJzZXIgbm93IHVzZXMgdGhlIG5ldyAiaHRtbC5lbnRpdGllcy5odG1sNSIgZGljdGlvbmFyeS4KLQotLSBJc3N1ZSAjMTExMTM6IGFkZCBhIG5ldyAiaHRtbDUiIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbmFtZWQgY2hhcmFjdGVyCi0gIHJlZmVyZW5jZXMgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3RhbmRhcmQgYW5kIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUKLSAgY2hhcmFjdGVyKHMpIHRvIHRoZSBodG1sLmVudGl0aWVzIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTUxMTQ6IHRoZSBzdHJpY3QgbW9kZSBvZiBIVE1MUGFyc2VyIGFuZCB0aGUgSFRNTFBhcnNlRXJyb3IgZXhjZXB0aW9uCi0gIGFyZSBkZXByZWNhdGVkIG5vdyB0aGF0IHRoZSBwYXJzZXIgaXMgYWJsZSB0byBwYXJzZSBpbnZhbGlkIG1hcmt1cC4KLQotLSBJc3N1ZSAjMzY2NTogXHUgYW5kIFxVIGVzY2FwZXMgYXJlIG5vdyBzdXBwb3J0ZWQgaW4gdW5pY29kZSByZWd1bGFyCi0gIGV4cHJlc3Npb25zLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUxNTM6IEFkZGVkIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzIHRvIHNpbXBsaWZ5IHdoaXRlIGJveAotICB0ZXN0aW5nIG9mIGdlbmVyYXRvciBzdGF0ZSB1cGRhdGVzCi0KLS0gSXNzdWUgIzEzMDYyOiBBZGRlZCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzIHRvIHNpbXBsaWZ5IHRlc3Rpbmcgc3RhdGVmdWwKLSAgY2xvc3VyZXMKLQotLSBJc3N1ZSAjMTEwMjQ6IEZpeGVzIGFuZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBUaW1lMkludGVybmFsZGF0ZS4KLQotLSBJc3N1ZSAjMTQ2MjY6IExhcmdlIHJlZmFjdG9yaW5nIG9mIGZ1bmN0aW9ucyAvIHBhcmFtZXRlcnMgaW4gdGhlIG9zIG1vZHVsZS4KLSAgTWFueSBmdW5jdGlvbnMgbm93IHN1cHBvcnQgImRpcl9mZCIgYW5kICJmb2xsb3dfc3ltbGlua3MiIHBhcmFtZXRlcnM7Ci0gIHNvbWUgYWxzbyBzdXBwb3J0IGFjY2VwdGluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBpbiBwbGFjZSBvZiBhIHBhdGgKLSAgc3RyaW5nLiAgQWRkZWQgb3Muc3VwcG9ydF8qIGNvbGxlY3Rpb25zIGFzIExCWUwgaGVscGVycy4gIFJlbW92ZWQgbWFueQotICBmdW5jdGlvbnMgb25seSBwcmV2aW91c2x5IHNlZW4gaW4gMy4zIGFscGhhIHJlbGVhc2VzIChvZnRlbiBzdGFydGluZyB3aXRoCi0gICJmIiBvciAibCIsIG9yIGVuZGluZyB3aXRoICJhdCIpLiAgT3JpZ2luYWxseSBzdWdnZXN0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYTsKLSAgaW1wbGVtZW50ZWQgYnkgTGFycnkgSGFzdGluZ3MuCi0KLS0gSXNzdWUgIzE1MDA4OiBJbXBsZW1lbnQgUEVQIDM2MiAiU2lnbmF0dXJlIE9iamVjdHMiLgotICBQYXRjaCBieSBZdXJ5IFNlbGl2YW5vdi4KLQotLSBJc3N1ZTogIzE1MTM4OiBiYXNlNjQudXJsc2FmZV97ZW4sZGV9Y29kZSgpIGFyZSBub3cgMy00eCBmYXN0ZXIuCi0KLS0gSXNzdWUgIzQ0NDU4MjogQWRkIHNodXRpbC53aGljaCwgZm9yIGZpbmRpbmcgcHJvZ3JhbXMgb24gdGhlIHN5c3RlbSBwYXRoLgotICBPcmlnaW5hbCBwYXRjaCBieSBFcmlrIERlbWFpbmUsIHdpdGggbGF0ZXIgaXRlcmF0aW9ucyBieSBKYW4gS2lsbGlhbgotICBhbmQgQnJpYW4gQ3VydGluLgotCi0tIElzc3VlICMxNDgzNzogU1NMIGVycm9ycyBub3cgaGF2ZSBgYGxpYnJhcnlgYCBhbmQgYGByZWFzb25gYCBhdHRyaWJ1dGVzCi0gIGRlc2NyaWJpbmcgcHJlY2lzZWx5IHdoYXQgaGFwcGVuZWQgYW5kIGluIHdoaWNoIE9wZW5TU0wgc3VibW9kdWxlLiAgVGhlCi0gIHN0cigpIG9mIGEgU1NMRXJyb3IgaXMgYWxzbyBlbmhhbmNlZCBhY2NvcmRpbmdseS4KLQotLSBJc3N1ZSAjOTUyNzogZGF0ZXRpbWUuYXN0aW1lem9uZSgpIG1ldGhvZCB3aWxsIG5vdyBzdXBwbHkgYSBjbGFzcwotICB0aW1lem9uZSBpbnN0YW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzeXN0ZW0gbG9jYWwgdGltZXpvbmUgd2hlbgotICBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzE0NjUzOiBlbWFpbC51dGlscy5ta3RpbWVfdHooKSBubyBsb25nZXIgcmVsaWVzIG9uIHN5c3RlbQotICBta3RpbWUoKSB3aGVuIHRpbWV6b25lIG9mZmVzdCBpcyBzdXBwbGllZC4KLQotLSBJc3N1ZSAjMTQ2ODQ6IHpsaWIuY29tcHJlc3NvYmooKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkgbm93IHN1cHBvcnQgdGhlIHVzZQotICBvZiBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcmllcy4gT3JpZ2luYWwgcGF0Y2ggYnkgU2FtIFJ1c2hpbmcuCi0KLS0gRml4IEd6aXBGaWxlJ3MgaGFuZGxpbmcgb2YgZmlsZW5hbWVzIGdpdmVuIGFzIGJ5dGVzIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE0NzcyOiBSZXR1cm4gZGVzdGluYXRpb24gdmFsdWVzIGZyb20gc29tZSBzaHV0aWwgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNTA2NDogSW1wbGVtZW50IGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBmb3IgbXVsdGlwcm9jZXNzaW5nIHR5cGVzCi0KLS0gSXNzdWUgIzE1MTAxOiBNYWtlIHBvb2wgZmluYWxpemVyIGF2b2lkIGpvaW5pbmcgY3VycmVudCB0aHJlYWQuCi0KLS0gSXNzdWUgIzE0NjU3OiBUaGUgZnJvemVuIGluc3RhbmNlIG9mIGltcG9ydGxpYiB1c2VkIGZvciBib290c3RyYXAgaXMgbm93Ci0gIGFsc28gdGhlIG1vZHVsZSBpbXBvcnRlZCBhcyBpbXBvcnRsaWIuX2Jvb3RzdHJhcC4KLQotLSBJc3N1ZSAjMTQwNTU6IEFkZCBfX3NpemVvZl9fIHN1cHBvcnQgdG8gX2VsZW1lbnR0cmVlLgotCi0tIElzc3VlICMxNTA1NDogQSBidWcgaW4gdG9rZW5pemUudG9rZW5pemUgdGhhdCBjYXVzZWQgc3RyaW5nIGxpdGVyYWxzCi0gIHdpdGggJ2InIHByZWZpeGVzIHRvIGJlIGluY29ycmVjdGx5IHRva2VuaXplZCBoYXMgYmVlbiBmaXhlZC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUwMDY6IEFsbG93IGVxdWFsaXR5IGNvbXBhcmlzb24gYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUKLSAgdGltZSBvciBkYXRldGltZSBvYmplY3RzLgotCi0tIElzc3VlICMxNTAzNjogTWFpbGJveCBubyBsb25nZXIgdGhyb3dzIGFuIGVycm9yIGlmIGEgZmx1c2ggaXMgZG9uZQotICBiZXR3ZWVuIG9wZXJhdGlvbnMgd2hlbiByZW1vdmluZyBvciBjaGFuZ2luZyBtdWx0aXBsZSBpdGVtcyBpbiBtYm94LAotICBNTURGLCBvciBCYWJ5bCBtYWlsYm94ZXMuCi0KLS0gSXNzdWUgIzE0MDU5OiBJbXBsZW1lbnQgbXVsdGlwcm9jZXNzaW5nLkJhcnJpZXIuCi0KLS0gSXNzdWUgIzE1MDYxOiBUaGUgaW5hcHByb3ByaWF0ZWx5IG5hbWVkIGhtYWMuc2VjdXJlX2NvbXBhcmUgaGFzIGJlZW4KLSAgcmVuYW1lZCB0byBobWFjLmNvbXBhcmVfZGlnZXN0LCByZXN0cmljdGVkIHRvIG9wZXJhdGluZyBvbiBieXRlcyBpbnB1dHMKLSAgb25seSBhbmQgaGFkIGl0cyBkb2N1bWVudGF0aW9uIHVwZGF0ZWQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgYm90aCBpdHMKLSAgaW50ZW50IGFuZCBpdHMgbGltaXRhdGlvbnMKLQotLSBJc3N1ZSAjMTM4NDE6IE1ha2UgY2hpbGQgcHJvY2Vzc2VzIGV4aXQgdXNpbmcgc3lzLmV4aXQoKSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNDkzNjogY3Vyc2VzX3BhbmVsIHdhcyBjb252ZXJ0ZWQgdG8gUEVQIDMxMjEgYW5kIFBFUCAzODQgQVBJLgotICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE2Njc1NDY6IE9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRtX3pvbmUgYW5kIHRtX2dtdG9mZiBmaWVsZHMKLSAgaW4gc3RydWN0IHRtLCB0aW1lLnN0cnVjdF90aW1lIG9iamVjdHMgcmV0dXJuZWQgYnkgdGltZS5nbXRpbWUoKSwKLSAgdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5zdHJwdGltZSgpIGZ1bmN0aW9ucyBub3cgaGF2ZSB0bV96b25lIGFuZAotICB0bV9nbXRvZmYgYXR0cmlidXRlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFBhdWwgQm9kZGllLgotCi0tIFJlbmFtZSBhZGp1c3RlZCBhdHRyaWJ1dGUgdG8gYWRqdXN0YWJsZSBpbiB0aW1lLmdldF9jbG9ja19pbmZvKCkgcmVzdWx0LgotCi0tIElzc3VlICMzNTE4OiBSZW1vdmUgcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgQmFzZU1hbmFnZXIuZnJvbV9hZGRyZXNzKCkKLSAgbWV0aG9kLgotCi0tIElzc3VlICMxMzg1NzogQWRkZWQgdGV4dHdyYXAuaW5kZW50KCkgZnVuY3Rpb24gKGluaXRpYWwgcGF0Y2ggYnkgRXpyYQotICBCZXJjaCkKLQotLSBJc3N1ZSAjMjczNjogQWRkZWQgZGF0ZXRpbWUudGltZXN0YW1wKCkgbWV0aG9kLgotCi0tIElzc3VlICMxMzg1NDogTWFrZSBtdWx0aXByb2Nlc3NpbmcgcHJvcGVybHkgaGFuZGxlIG5vbi1pbnRlZ2VyCi0gIG5vbi1zdHJpbmcgYXJndW1lbnQgdG8gU3lzdGVtRXhpdC4KLQotLSBJc3N1ZSAjMTIxNTc6IE1ha2UgcG9vbC5tYXAoKSBlbXB0eSBpdGVyYWJsZXMgY29ycmVjdGx5LiAgSW5pdGlhbAotICBwYXRjaCBieSBtb3VhZC4KLQotLSBJc3N1ZSAjMTE4MjM6IGRpc2Fzc2VtYmx5IG5vdyBzaG93cyBhcmd1bWVudCBjb3VudHMgb24gY2FsbHMgd2l0aCBrZXl3b3JkIGFyZ3MuCi0KLS0gSXNzdWUgIzE0NzExOiBvcy5zdGF0X2Zsb2F0X3RpbWVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4KLQotLSBMWk1BRmlsZSBub3cgYWNjZXB0cyB0aGUgbW9kZXMgInJiIi8id2IiLyJhYiIgYXMgc3lub255bXMgb2YgInIiLyJ3Ii8iYSIuCi0KLS0gVGhlIGJ6MiBhbmQgbHptYSBtb2R1bGVzIG5vdyBlYWNoIGNvbnRhaW4gYW4gb3BlbigpIGZ1bmN0aW9uLCBhbGxvd2luZwotICBjb21wcmVzc2VkIGZpbGVzIHRvIHJlYWRpbHkgYmUgb3BlbmVkIGluIHRleHQgbW9kZSBhcyB3ZWxsIGFzIGJpbmFyeSBtb2RlLgotCi0tIEJaMkZpbGUuX19pbml0X18oKSBhbmQgTFpNQUZpbGUuX19pbml0X18oKSBub3cgYWNjZXB0IGEgZmlsZSBvYmplY3QgYXMgdGhlaXIKLSAgZmlyc3QgYXJndW1lbnQsIHJhdGhlciB0aGFuIHJlcXVpcmluZyBhIHNlcGFyYXRlICJmaWxlb2JqIiBhcmd1bWVudC4KLQotLSBnemlwLm9wZW4oKSBub3cgYWNjZXB0cyBmaWxlIG9iamVjdHMgYXMgd2VsbCBhcyBmaWxlbmFtZXMuCi0KLS0gSXNzdWUgIzE0OTkyOiBvcy5tYWtlZGlycyhwYXRoLCBleGlzdF9vaz1UcnVlKSB3b3VsZCByYWlzZSBhbiBPU0Vycm9yCi0gIHdoZW4gdGhlIHBhdGggZXhpc3RlZCBhbmQgaGFkIHRoZSBTX0lTR0lEIG1vZGUgYml0IHNldCB3aGVuIGl0IHdhcwotICBub3QgZXhwbGljaXRseSBhc2tlZCBmb3IuICBUaGlzIGlzIG5vIGxvbmdlciBhbiBleGNlcHRpb24gYXMgbWtkaXIKLSAgY2Fubm90IGNvbnRyb2wgaWYgdGhlIE9TIHNldHMgdGhhdCBiaXQgZm9yIGl0IG9yIG5vdC4KLQotLSBJc3N1ZSAjMTQ5ODk6IE1ha2UgdGhlIENHSSBlbmFibGUgb3B0aW9uIHRvIGh0dHAuc2VydmVyIGF2YWlsYWJsZSB2aWEgY29tbWFuZAotICBsaW5lLgotCi0tIElzc3VlICMxNDk4NzogQWRkIGEgbWlzc2luZyBpbXBvcnQgc3RhdGVtZW50IHRvIGluc3BlY3QuCi0KLS0gSXNzdWUgIzEwNzk6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vdyBjb3JyZWN0bHkgcGFyc2VzIGFsbCB0aGUgZXhhbXBsZXMKLSAgaW4gUkZDMjA0Ny4gIFRoZXJlIGlzIGEgbmVjZXNzYXJ5IHZpc2libGUgYmVoYXZpb3IgY2hhbmdlOiB0aGUgbGVhZGluZyBhbmQvb3IKLSAgdHJhaWxpbmcgd2hpdGVzcGFjZSBvbiBBU0NJSSBwYXJ0cyBpcyBub3cgcHJlc2VydmVkLgotCi0tIElzc3VlICMxNDk2OTogQmV0dGVyIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbiBjaGFpbmluZyBpbiBjb250ZXh0bGliLkV4aXRTdGFjawotCi0tIElzc3VlICMxNDk2MzogQ29udmVydCBjb250ZXh0bGliLkV4aXRTdGFjay5fX2V4aXRfXyB0byB1c2UgYW4gaXRlcmF0aXZlCi0gIGFsZ29yaXRobSAoUGF0Y2ggYnkgQWxvbiBIb3JldikKLQotLSBJc3N1ZSAjMTQ3ODU6IEFkZCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSB0byBoZWxwIGRlYnVnIGxvdy1sZXZlbCBtZW1vcnkKLSAgYWxsb2NhdGlvbiBpc3N1ZXMKLQotLSBJc3N1ZSAjMTQ0NDM6IEVuc3VyZSB0aGF0IC5weSBmaWxlcyBhcmUgYnl0ZS1jb21waWxlZCB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbgotICBleGVjdXRhYmxlIHdpdGhpbiBiZGlzdF9ycG0gZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBSUE0KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE1MTQ2OiBBZGQgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE1MDQyOiBBZGQgUHlTdGF0ZV9BZGRNb2R1bGUgYW5kIFB5U3RhdGVfUmVtb3ZlTW9kdWxlLiBBZGQgdmVyc2lvbgotICBndWFyZCBmb3IgUHlfTElNSVRFRF9BUEkgYWRkaXRpb25zLiBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzEzNzgzOiBJbmFkdmVydGVudCBhZGRpdGlvbnMgdG8gdGhlIHB1YmxpYyBDIEFQSSBpbiB0aGUgUEVQIDM4MAotICBpbXBsZW1lbnRhdGlvbiBoYXZlIGVpdGhlciBiZWVuIHJlbW92ZWQgb3IgbWFya2VkIGFzIHByaXZhdGUgaW50ZXJmYWNlcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1MDAwOiBTdXBwb3J0IHRoZSAidW5pcXVlIiB4MzIgYXJjaGl0ZWN0dXJlIGluIF9wb3NpeHN1YnByb2Nlc3MuYy4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKLSAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1MTc2OiBDbGFyaWZpZWQgYmVoYXZpb3IsIGRvY3VtZW50YXRpb24sIGFuZCBpbXBsZW1lbnRhdGlvbgotICBvZiBvcy5saXN0ZGlyKCkuCi0KLS0gSXNzdWUgIzE0OTgyOiBEb2N1bWVudCB0aGF0IHBrZ3V0aWwncyBpdGVyYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgdGhlCi0gIG5vbi1zdGFuZGFyZCBpdGVyX21vZHVsZXMoKSBtZXRob2QgdG8gYmUgZGVmaW5lZCBieSBhbiBpbXBvcnRlciAoc29tZXRoaW5nCi0gIHRoZSBpbXBvcnRsaWIgaW1wb3J0ZXJzIGRvIG5vdCBkZWZpbmUpLgotCi0tIElzc3VlICMxNTA4MTogRG9jdW1lbnQgUHlTdGF0ZV9GaW5kTW9kdWxlLgotICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE0ODE0OiBBZGRlZCBmaXJzdCBkcmFmdCBvZiBpcGFkZHJlc3MgbW9kdWxlIEFQSSByZWZlcmVuY2UKLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE1MTg3OiBCdWdmaXg6IHJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgdGVzdF9zaHV0aWwgd2FzIGxlYXZpbmcKLSAgYmVoaW5kLgotCi0tIElzc3VlICMxNDc2OTogdGVzdF9jYXBpIG5vdyBoYXMgU2tpcGl0ZW1UZXN0LCB3aGljaCBjbGV2ZXJseSBjaGVja3MKLSAgZm9yICJwYXJpdHkiIGJldHdlZW4gUHlBcmdfUGFyc2VUdXBsZSgpIGFuZCB0aGUgUHl0aG9uL2dldGFyZ3MuYyBzdGF0aWMKLSAgZnVuY3Rpb24gc2tpcGl0ZW0oKSBmb3IgYWxsIHBvc3NpYmxlICJmb3JtYXQgdW5pdHMiLgotCi0tIHRlc3Rfbm50cGxpYiBub3cgdG9sZXJhdGVzIGJlaW5nIHJ1biBmcm9tIGJlaGluZCBOTlRQIGdhdGV3YXlzIHRoYXQgYWRkCi0gICJYLUFudGl2aXJ1cyIgaGVhZGVycyB0byBhcnRpY2xlcwotCi0tIElzc3VlICMxNTA0MzogdGVzdF9nZGIgaXMgbm93IHNraXBwZWQgZW50aXJlbHkgaWYgZ2RiIHNlY3VyaXR5IHNldHRpbmdzCi0gIGJsb2NrIGxvYWRpbmcgb2YgdGhlIGdkYiBob29rcwotCi0tIElzc3VlICMxNDk2MzogQWRkIHRlc3QgY2FzZXMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBiZWhhdmlvdXIKLSAgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sgKEluaXRpYWwgcGF0Y2ggYnkgQWxvbiBIb3JldikKLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEzNTkwOiBJbXByb3ZlIHN1cHBvcnQgZm9yIE9TIFggWGNvZGUgNDoKLSAgICAqIFRyeSB0byBhdm9pZCBidWlsZGluZyBQeXRob24gb3IgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBwcm9ibGVtYXRpYwotICAgICAgbGx2bS1nY2MgY29tcGlsZXIuCi0gICAgKiBTaW5jZSBYY29kZSA0IHJlbW92ZXMgcHBjIHN1cHBvcnQsIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdwotICAgICAgY2hlY2sgZm9yIHBwYyBjb21waWxlciBzdXBwb3J0IGFuZCBhdXRvbWF0aWNhbGx5IHJlbW92ZSBwcGMgYW5kCi0gICAgICBwcGM2NCBhcmNocyB3aGVuIG5vdCBhdmFpbGFibGUuCi0gICAgKiBTaW5jZSBYY29kZSA0IG5vIGxvbmdlciBpbnN0YWxsIFNES3MgaW4gZGVmYXVsdCBsb2NhdGlvbnMsCi0gICAgICBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cgcmV2ZXJ0IHRvIHVzaW5nIGluc3RhbGxlZCBoZWFkZXJzCi0gICAgICBhbmQgbGlicyBpZiB0aGUgU0RLIHVzZWQgdG8gYnVpbGQgdGhlIGludGVycHJldGVyIGlzIG5vdAotICAgICAgYXZhaWxhYmxlLgotICAgICogVXBkYXRlIC4vY29uZmlndXJlIHRvIHVzZSBiZXR0ZXIgZGVmYXVsdHMgZm9yIHVuaXZlcnNhbCBidWlsZHM7Ci0gICAgICBpbiBwYXJ0aWN1bGFyLCAtLWVuYWJsZS11bml2ZXJzYWxzZGs9eWVzIHVzZXMgdGhlIFhjb2RlIGRlZmF1bHQKLSAgICAgIFNESyBhbmQgLS13aXRoLXVuaXZlcnNhbC1hcmNocyBub3cgZGVmYXVsdHMgdG8gImludGVsIiBpZiBwcGMKLSAgICAgIG5vdCBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzE0MjI1OiBGaXggVW5pY29kZSBzdXBwb3J0IGZvciBjdXJzZXMgKCMxMjU2Nykgb24gT1MgWAotCi0tIElzc3VlICMxNDkyODogRml4IGltcG9ydGxpYiBib290c3RyYXAgaXNzdWVzIGJ5IHVzaW5nIGEgY3VzdG9tIGV4ZWN1dGFibGUKLSAgKE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIpIHRvIGJ1aWxkIFB5dGhvbi9pbXBvcnRsaWIuaC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSA0PwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMzEtTWF5LTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDgzNTogTWFrZSBwbGlzdGxpYiBvdXRwdXQgZW1wdHkgYXJyYXlzICYgZGljdHMgbGlrZSBPUyBYLgotICBQYXRjaCBieSBTaWRuZXkgU2FuIE1hcnTDrW4uCi0KLS0gSXNzdWUgIzE0NzQ0OiBVc2UgdGhlIG5ldyBfUHlVbmljb2RlV3JpdGVyIGludGVybmFsIEFQSSB0byBzcGVlZCB1cAotICBzdHIlYXJncyBhbmQgc3RyLmZvcm1hdChhcmdzKS4KLQotLSBJc3N1ZSAjMTQ5MzA6IE1ha2UgbWVtb3J5dmlldyBvYmplY3RzIHdlYWtyZWZhYmxlLgotCi0tIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQotICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KLQotLSBJc3N1ZSAjMTQ4NTc6IGZpeCByZWdyZXNzaW9uIGluIHJlZmVyZW5jZXMgdG8gUEVQIDMxMzUgaW1wbGljaXQgX19jbGFzc19fCi0gIGNsb3N1cmUgdmFyaWFibGUgKFJlb3BlbnMgaXNzdWUgIzEyMzcwKQotCi0tIElzc3VlICMxNDcxMiAoUEVQIDQwNSk6IFZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbXBsZW1lbnRlZCBieSBWaW5heSBTYWppcC4KLQotLSBJc3N1ZSAjMTQ2NjAgKFBFUCA0MjApOiBOYW1lc3BhY2UgcGFja2FnZXMuIEltcGxlbWVudGVkIGJ5IEVyaWMgU21pdGguCi0KLS0gSXNzdWUgIzE0NDk0OiBGaXggX19mdXR1cmVfXy5weSBhbmQgaXRzIGRvY3VtZW50YXRpb24gdG8gbm90ZSB0aGF0Ci0gIGFic29sdXRlIGltcG9ydHMgYXJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIDMuMCBpbnN0ZWFkIG9mIDIuNy4KLSAgUGF0Y2ggYnkgU3ZlbiBNYXJuYWNoLgotCi0tIElzc3VlICM5MjYwOiBBIGZpbmVyLWdyYWluZWQgaW1wb3J0IGxvY2suICBNb3N0IG9mIHRoZSBpbXBvcnQgc2VxdWVuY2UKLSAgbm93IHVzZXMgcGVyLW1vZHVsZSBsb2NrcyByYXRoZXIgdGhhbiB0aGUgZ2xvYmFsIGltcG9ydCBsb2NrLCBlbGltaW5hdGluZwotICB3ZWxsLWtub3duIGlzc3VlcyB3aXRoIHRocmVhZHMgYW5kIGltcG9ydHMuCi0KLS0gSXNzdWUgIzE0NjI0OiBVVEYtMTYgZGVjb2RpbmcgaXMgbm93IDN4IHRvIDR4IGZhc3RlciBvbiB2YXJpb3VzIGlucHV0cy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBhc2RsX3NlcSBhbmQgYXNkbF9pbnRfc2VxIGFyZSBub3cgUHlfc3NpemVfdCBzaXplZC4KLQotLSBJc3N1ZSAjMTQxMzMgKFBFUCA0MTUpOiBJbXBsZW1lbnQgc3VwcHJlc3Npb24gb2YgX19jb250ZXh0X18gZGlzcGxheSB3aXRoIGFuCi0gIGF0dHJpYnV0ZSBvbiBCYXNlRXhjZXB0aW9uLiBUaGlzIHJlcGxhY2VzIHRoZSBvcmlnaW5hbCBtZWNoYW5pc20gb2YgUEVQIDQwOS4KLQotLSBJc3N1ZSAjMTQ0MTc6IE11dGF0aW5nIGEgZGljdCBkdXJpbmcgbG9va3VwIG5vdyByZXN0YXJ0cyB0aGUgbG9va3VwIGluc3RlYWQKLSAgb2YgcmFpc2luZyBhIFJ1bnRpbWVFcnJvciAodW5kb2VzIGlzc3VlICMxNDIwNSkuCi0KLS0gSXNzdWUgIzE0NzM4OiBTcGVlZC11cCBVVEYtOCBkZWNvZGluZyBvbiBub24tQVNDSUkgZGF0YS4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0NzAwOiBGaXggdHdvIGJyb2tlbiBhbmQgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZyBvdmVyZmxvdyBjaGVja3MKLSAgaW4gb2xkLXN0eWxlIHN0cmluZyBmb3JtYXR0aW5nLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0NjkwOiBVc2UgbW9ub3RvbmljIGNsb2NrIGluc3RlYWQgb2Ygc3lzdGVtIGNsb2NrIGluIHRoZSBzY2hlZCwKLSAgc3VicHJvY2VzcyBhbmQgdHJhY2UgbW9kdWxlcy4KLQotLSBJc3N1ZSAjMTQ0NDM6IFRlbGwgcnBtYnVpbGQgdG8gdXNlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgUHl0aG9uIGluCi0gIGJkaXN0X3JwbS4gSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTI1MTU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3QgaWYgaXQgZ2V0cyB0byBFT0Ygd2hpbGUgcGFyc2luZwotICBhIE1JTUUgcGFydCB3aXRob3V0IHNlZWluZyB0aGUgY2xvc2luZyBNSU1FIGJvdW5kYXJ5LgotCi0tIElzc3VlICMxNjcyNTY4OiBlbWFpbCBub3cgYWx3YXlzIGRlY29kZXMgYmFzZTY0IHBheWxvYWRzLCBhZGRpbmcgcGFkZGluZyBhbmQKLSAgaWdub3Jpbmcgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGlmIG5lZWRlZCwgYW5kIHJlZ2lzdGVyaW5nIGRlZmVjdHMKLSAgZm9yIGFueSBzdWNoIHByb2JsZW1zLgotCi0tIElzc3VlICMxNDkyNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCB3aGVuIHRoZSBwYXJzZXIgZGVjaWRlcyB0aGF0IHRoZXJlCi0gIGlzIGEgbWlzc2luZyBoZWFkZXIvYm9keSBzZXBhcmF0b3IgbGluZS4gIE1hbGZvcm1lZEhlYWRlckRlZmVjdCwgd2hpY2ggdGhlCi0gIGV4aXN0aW5nIGNvZGUgd291bGQgbmV2ZXIgYWN0dWFsbHkgZ2VuZXJhdGUsIGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzEwMzY1OiBGaWxlIG9wZW4gZGlhbG9nIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIGNyYXNoaW5nIGV2ZW4gd2hlbgotICB0aGUgcGFyZW50IHdpbmRvdyBpcyBjbG9zZWQgYmVmb3JlIHRoZSBkaWFsb2cuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICM4NzM5OiBVcGRhdGVkIHNtdHBkIHRvIHN1cHBvcnQgUkZDIDUzMjEsIGFuZCBhZGRlZCBzdXBwb3J0IGZvciB0aGUKLSAgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzY2NTE5NDogQWRkZWQgYSBsb2NhbHRpbWUgZnVuY3Rpb24gdG8gZW1haWwudXRpbHMgdG8gcHJvdmlkZSBhbgotICBhd2FyZSBsb2NhbCBkYXRldGltZSBmb3IgdXNlIGluIHNldHRpbmcgRGF0ZSBoZWFkZXJzLgotCi0tIElzc3VlICMxMjU4NjogQWRkZWQgbmV3IHByb3Zpc2lvbmFsIHBvbGljaWVzIHRoYXQgaW1wbGVtZW50IGNvbnZlbmllbnQKLSAgdW5pY29kZSBzdXBwb3J0IGZvciBlbWFpbCBoZWFkZXJzLiAgU2VlIFdoYXQncyBOZXcgZm9yIGRldGFpbHMuCi0KLS0gSXNzdWUgIzE0NzMxOiBSZWZhY3RvcmVkIGVtYWlsIFBvbGljeSBmcmFtZXdvcmsgdG8gc3VwcG9ydCBmdWxsIGJhY2t3YXJkCi0gIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yIGJ5IGRlZmF1bHQgeWV0IGFsbG93IGZvciB0aGUgaW50cm9kdWN0aW9uIG9mCi0gIG5ldyBmZWF0dXJlcyB0aHJvdWdoIG5ldyBwb2xpY2llcy4gIE5vdGUgdGhhdCBQb2xpY3kubXVzdF9iZV83Yml0IGlzIHJlbmFtZWQKLSAgdG8gY3RlX3R5cGUuCi0KLS0gSXNzdWUgIzE0ODc2OiBVc2UgdXNlci1zZWxlY3RlZCBmb250IGZvciBoaWdobGlnaHQgY29uZmlndXJhdGlvbi4KLQotLSBJc3N1ZSAjMTQ5MjA6IEZpeCB0aGUgaGVscCh1cmxsaWIucGFyc2UpIGZhaWx1cmUgb24gbG9jYWxlIEMgb24gdGVybWluYWxzLgotICBIYXZlIGFzY2lpIGNoYXJhY3RlcnMgaW4gaGVscC4KLQotLSBJc3N1ZSAjMTQ1NDg6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZQotICBydW5uaW5nIHRvIGNvcGUgd2l0aCBwb3NzaWJpbGl0eSBvZiBnYyBydW5uaW5nIGp1c3QgYWZ0ZXIgZm9yay4KLQotLSBJc3N1ZSAjMTQwMzY6IEFkZCBhbiBhZGRpdGlvbmFsIGNoZWNrIHRvIHZhbGlkYXRlIHRoYXQgcG9ydCBpbiB1cmxwYXJzZSBkb2VzCi0gIG5vdCBnbyBpbiBpbGxlZ2FsIHJhbmdlIGFuZCByZXR1cm5zIE5vbmUuCi0KLS0gSXNzdWUgIzE0ODYyOiBBZGQgbWlzc2luZyBuYW1lcyB0byBvcy5fX2FsbF9fCi0KLS0gSXNzdWUgIzE0ODc1OiBVc2UgZmxvYXQoJ2luZicpIGluc3RlYWQgb2YgZmxvYXQoJzFlNjY2NjYnKSBpbiB0aGUganNvbiBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzNTg1OiBBZGRlZCBjb250ZXh0bGliLkV4aXRTdGFjawotCi0tIFBFUCAzMTQ0LCBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIHRoZSBpcGFkZHJlc3MgbW9kdWxlCi0KLS0gSXNzdWUgIzE0NDI2OiBDb3JyZWN0IHRoZSBEYXRlIGZvcm1hdCBpbiBFeHBpcmVzIGF0dHJpYnV0ZSBvZiBTZXQtQ29va2llCi0gIEhlYWRlciBpbiBDb29raWUucHkuCi0KLS0gSXNzdWUgIzE0NTg4OiBUaGUgdHlwZXMgbW9kdWxlIG5vdyBwcm92aWRlIG5ld19jbGFzcygpIGFuZCBwcmVwYXJlX2NsYXNzKCkKLSAgZnVuY3Rpb25zIHRvIHN1cHBvcnQgUEVQIDMxMTUgY29tcGxpYW50IGR5bmFtaWMgY2xhc3MgY3JlYXRpb24uIFBhdGNoIGJ5Ci0gIERhbmllbCBVcmJhbiBhbmQgTmljayBDb2dobGFuLgotCi0tIElzc3VlICMxMzE1MjogQWxsb3cgdG8gc3BlY2lmeSBhIGN1c3RvbSB0YWJzaXplIGZvciBleHBhbmRpbmcgdGFicyBpbgotICB0ZXh0d3JhcC4gUGF0Y2ggYnkgSm9obiBGZXVlcnN0ZWluLgotCi0tIElzc3VlICMxNDcyMTogU2VuZCB0aGUgY29ycmVjdCAnQ29udGVudC1sZW5ndGg6IDAnIGhlYWRlciB3aGVuIHRoZSBib2R5IGlzIGFuCi0gIGVtcHR5IHN0cmluZyAnJy4gSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCi0KLS0gSXNzdWUgIzE0MDcyOiBGaXggcGFyc2luZyBvZiAndGVsJyBVUklzIGluIHVybHBhcnNlIGJ5IG1ha2luZyB0aGUgY2hlY2sgZm9yCi0gIHBvcnRzIHN0cmljdGVyLgotCi0tIElzc3VlICM5Mzc0OiBHZW5lcmljIHBhcnNpbmcgb2YgcXVlcnkgYW5kIGZyYWdtZW50IHBvcnRpb25zIG9mIHVybCBmb3IgYW55Ci0gIHNjaGVtZS4gU3VwcG9ydGVkIGJvdGggYnkgUkZDMzk4NiBhbmQgUkZDMjM5Ni4KLQotLSBJc3N1ZSAjMTQ3OTg6IEZpeCB0aGUgZnVuY3Rpb25zIGluIHB5Y2xiciB0byByYWlzZSBhbiBJbXBvcnRFcnJvcgotICB3aGVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkKLSAgWGF2aWVyIGRlIEdheWUuCi0KLS0gSXNzdWUgIzEyMDk4OiBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyBub3cgc3RhcnRzIGNoaWxkIHByb2Nlc3NlcwotICB1c2luZyB0aGUgc2FtZSBzeXMuZmxhZ3MgYXMgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkKLSAgU2VyZ2V5IE1lemVudHNldi4KLQotLSBJc3N1ZSAjMTMwMzE6IFNtYWxsIHNwZWVkLXVwIGZvciB0YXJmaWxlIHdoZW4gdW56aXBwaW5nIHRhcmZpbGVzLgotICBQYXRjaCBieSBKdXN0aW4gUGVlbC4KLQotLSBJc3N1ZSAjMTQ3ODA6IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oKSBub3cgaGFzIGEgYGBjYWRlZmF1bHRgYCBhcmd1bWVudAotICB0byB1c2UgdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUuICBJbml0aWFsIHBhdGNoIGJ5IEphbWVzIE9ha2xleS4KLQotLSBJc3N1ZSAjMTQ4Mjk6IEZpeCBiaXNlY3QgYW5kIHJhbmdlKCkgaW5kZXhpbmcgd2l0aCBsYXJnZSBpbmRpY2VzCi0gICg+PSAyICoqIDMyKSB1bmRlciA2NC1iaXQgV2luZG93cy4KLQotLSBJc3N1ZSAjMTQ3MzI6IFRoZSBfY3N2IG1vZHVsZSBub3cgdXNlcyBQRVAgMzEyMSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTQ4MDk6IEFkZCBIVFRQIHN0YXR1cyBjb2RlcyBpbnRyb2R1Y2VkIGJ5IFJGQyA2NTg1IHRvIGh0dHAuc2VydmVyCi0gIGFuZCBodHRwLmNsaWVudC4gUGF0Y2ggYnkgRXVuZ0p1biBZaS4KLQotLSBJc3N1ZSAjMTQ3Nzc6IHRraW50ZXIgbWF5IHJldHVybiB1bmRlY29kZWQgVVRGLTggYnl0ZXMgYXMgYSBzdHJpbmcgd2hlbgotICBhY2Nlc3NpbmcgdGhlIFRrIGNsaXBib2FyZC4gIE1vZGlmeSBjbGlwYm9hZF9nZXQoKSB0byBmaXJzdCByZXF1ZXN0IHR5cGUKLSAgVVRGOF9TVFJJTkcgd2hlbiBubyBzcGVjaWZpYyB0eXBlIGlzIHJlcXVlc3RlZCBpbiBhbiBYMTEgd2luZG93aW5nCi0gIGVudmlyb25tZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGN1cnJlbnQgZGVmYXVsdCB0eXBlIFNUUklORyBpZiB0aGF0IGZhaWxzLgotICBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KLQotLSBJc3N1ZSAjMTQ3NzM6IEZpeCBvcy5md2FsaygpIGZhaWxpbmcgb24gZGFuZ2xpbmcgc3ltbGlua3MuCi0KLS0gSXNzdWUgIzEyNTQxOiBCZSBsZW5pZW50IHdpdGggcXVvdGVzIGFyb3VuZCBSZWFsbSBmaWVsZCBvZiBIVFRQIEJhc2ljCi0gIEF1dGhlbnRhdGlvbiBpbiB1cmxsaWIyLgotCi0tIElzc3VlICMxNDgwNzogbW92ZSB1bmRvY3VtZW50ZWQgdGFyZmlsZS5maWxlbW9kZSgpIHRvIHN0YXQuZmlsZW1vZGUoKSBhbmQgYWRkCi0gIGRvYyBlbnRyeS4gQWRkIHRhcmZpbGUuZmlsZW1vZGUgYWxpYXMgd2l0aCBkZXByZWNhdGlvbiB3YXJuaW5nLgotCi0tIElzc3VlICMxMzgxNTogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIG5vdyByZXR1cm5zIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE0NTMyOiBBZGQgYSBzZWN1cmVfY29tcGFyZSgpIGhlbHBlciB0byB0aGUgaG1hYyBtb2R1bGUsIHRvIG1pdGlnYXRlCi0gIHRpbWluZyBhdHRhY2tzLiBQYXRjaCBieSBKb24gT2JlcmhlaWRlLgotCi0tIEFkZCBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKS4KLQotLSBJc3N1ZSAjMTQzNjY6IFN1cHBvcnQgbHptYSBjb21wcmVzc2lvbiBpbiB6aXAgZmlsZXMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEzOTU5OiBJbnRyb2R1Y2UgaW1wb3J0bGliLmZpbmRfbG9hZGVyKCkgYW5kIGRvY3VtZW50Ci0gIGltcC5maW5kX21vZHVsZS9sb2FkX21vZHVsZSBhcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMxNDA4Mjogc2h1dGlsLmNvcHkyKCkgbm93IGNvcGllcyBleHRlbmRlZCBhdHRyaWJ1dGVzLCBpZiBwb3NzaWJsZS4KLSAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxMzk1OTogTWFrZSBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKS9nZXRfZmlsZW5hbWUoKSBhbmQKLSAgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyLmxvYWRfbW9kdWxlKCkgaGF2ZSB0aGVpciBzaW5nbGUKLSAgYXJndW1lbnQgYmUgb3B0aW9uYWwuIEFsbG93cyBmb3IgdGhlIHJlcGxhY2VtZW50IChhbmQgdGh1cyBkZXByZWNhdGlvbikgb2YKLSAgaW1wLmxvYWRfc291cmNlKCkvbG9hZF9wYWNrYWdlKCkvbG9hZF9jb21waWxlZCgpLgotCi0tIElzc3VlICMxMzk1OTogaW1wLmdldF9zdWZmaXhlcygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIHRoZSBuZXcKLSAgYXR0cmlidXRlcyBvbiBpbXBvcnRsaWIubWFjaGluZXJ5OiBTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAotICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLCBhbmQgRVhURU5TSU9OX1NVRkZJWEVTLiBUaGlzCi0gIGxlZCB0byBhbiBpbmRpcmVjdCBkZXByZWNhdGlvbiBvZiBpbnNwZWN0LmdldG1vZHVsZWluZm8oKS4KLQotLSBJc3N1ZSAjMTQ2NjI6IFByZXZlbnQgc2h1dGlsIGZhaWx1cmVzIG9uIE9TIFggd2hlbiBkZXN0aW5hdGlvbiBkb2VzIG5vdAotICBzdXBwb3J0IGNoZmxhZyBvcGVyYXRpb25zLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxNDE1NzogRml4IHRpbWUuc3RycHRpbWUgZmFpbGluZyB3aXRob3V0IGEgeWVhciBvbiBGZWJydWFyeSAyOXRoLgotICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzE0NzUzOiBNYWtlIG11bHRpcHJvY2Vzc2luZydzIGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRpbWVvdXRzCi0gIHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24gMy4yLgotCi0tIElzc3VlICMxNDU4MzogRml4IGltcG9ydGxpYiBidWcgd2hlbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weSB3b3VsZCBmaXJzdAotICBpbXBvcnQgb25lIG9mIGl0cyBtb2R1bGVzIHRoZW4gcmFpc2UgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzE0NzQxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBFbGxpcHNpcyAoJy4uLicpIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE0Njk3OiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBzZXQgZGlzcGxheXMgYW5kIHNldCBjb21wcmVoZW5zaW9ucyBpbgotICBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICMxNDcwMTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgJ3JhaXNlIC4uLiBmcm9tJyBpbiBwYXJzZXIgbW9kdWxlLgotCi0tIEFkZCBzdXBwb3J0IGZvciB0aW1lb3V0cyB0byB0aGUgYWNxdWlyZSgpIG1ldGhvZHMgb2YKLSAgbXVsdGlwcm9jZXNzaW5nJ3MgbG9jay9zZW1hcGhvcmUvY29uZGl0aW9uIHByb3hpZXMuCi0KLS0gSXNzdWUgIzEzOTg5OiBBZGQgc3VwcG9ydCBmb3IgdGV4dCBtb2RlIHRvIGd6aXAub3BlbigpLgotCi0tIElzc3VlICMxNDEyNzogVGhlIG9zLnN0YXQoKSByZXN1bHQgb2JqZWN0IG5vdyBwcm92aWRlcyB0aHJlZSBhZGRpdGlvbmFsCi0gIGZpZWxkczogc3RfY3RpbWVfbnMsIHN0X210aW1lX25zLCBhbmQgc3RfYXRpbWVfbnMsIHByb3ZpZGluZyB0aG9zZSB0aW1lcyBhcyBhbgotICBpbnRlZ2VyIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLiAgVGhlIGZ1bmN0aW9ucyBvcy51dGltZSgpLCBvcy5sdXRpbWVzKCksCi0gIGFuZCBvcy5mdXRpbWVzKCkgbm93IGFjY2VwdCBhIG5ldyBwYXJhbWV0ZXIsIG5zLCB3aGljaCBhY2NlcHRzIG10aW1lIGFuZCBhdGltZQotICBhcyBpbnRlZ2VycyB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KLQotLSBJc3N1ZSAjMTQxMjcgYW5kICMxMDE0ODogc2h1dGlsLmNvcHlzdGF0IG5vdyBwcmVzZXJ2ZXMgZXhhY3QgbXRpbWUgYW5kIGF0aW1lCi0gIG9uIGZpbGVzeXN0ZW1zIHByb3ZpZGluZyBuYW5vc2Vjb25kIHJlc29sdXRpb24uCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCi0gIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCi0KLS0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgotCi0tIElzc3VlICMxNDkyOTogU3RvcCBJRExFIDMueCBmcm9tIGNsb3Npbmcgb24gVW5pY29kZSBkZWNvZGUgZXJyb3JzIHdoZW4KLSAgZ3JlcHBpbmcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSURMRS4KLSAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKLSAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDY5NTogQnJpbmcgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgc3VwcG9ydCB1cCB0byBkYXRlIHdpdGgKLSAgdGhlIFB5dGhvbiAzLjMgR3JhbW1hci4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KLQotLSBVcGdyYWRlIFdpbmRvd3MgbGlicmFyeSB2ZXJzaW9uczogYnppcCAxLjAuNiwgT3BlblNTTCAxLjAuMWMuCi0KLS0gSXNzdWUgIzE0NjkzOiBVbmRlciBub24tV2luZG93cyBwbGF0Zm9ybXMsIGhhc2hsaWIncyBmYWxsYmFjayBtb2R1bGVzIGFyZQotICBhbHdheXMgY29tcGlsZWQsIGV2ZW4gaWYgT3BlblNTTCBpcyBwcmVzZW50IGF0IGJ1aWxkIHRpbWUuCi0KLS0gSXNzdWUgIzEzMjEwOiBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFZTMjAxMCwgcG9ydGVkIGZyb20gVlMyMDA4LgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTQ3MDU6IFRoZSBQeUFyZ19QYXJzZSgpIGZhbWlseSBvZiBmdW5jdGlvbnMgbm93IHN1cHBvcnQgdGhlICdwJyBmb3JtYXQKLSAgdW5pdCwgd2hpY2ggYWNjZXB0cyBhICJib29sZWFuIHByZWRpY2F0ZSIgYXJndW1lbnQuICBJdCBjb252ZXJ0cyBhbnkgUHl0aG9uCi0gIHZhbHVlIGludG8gYW4gaW50ZWdlci0tMCBpZiBpdCBpcyAiZmFsc2UiLCBhbmQgMSBvdGhlcndpc2UuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ4NjM6IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcy5mZG9wZW4oKSB0byByZWZsZWN0IHRoZQotICBmYWN0IHRoYXQgaXQncyBvbmx5IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBvcGVuKCkgYW55bW9yZS4KLQotLSBJc3N1ZSAjMTQ1ODg6IFRoZSBsYW5ndWFnZSByZWZlcmVuY2Ugbm93IGFjY3VyYXRlbHkgZG9jdW1lbnRzIHRoZSBQeXRob24gMwotICBjbGFzcyBkZWZpbml0aW9uIHByb2Nlc3MuIFBhdGNoIGJ5IE5pY2sgQ29naGxhbi4KLQotLSBJc3N1ZSAjMTQ5NDM6IENvcnJlY3QgYSBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlIGZvciB3aW5yZWcuT3BlbktleQotICBhbmQgY29ycmVjdGx5IGxpc3QgdGhlIGFyZ3VtZW50IG5hbWVzIGluIHRoZSBmdW5jdGlvbidzIGV4cGxhbmF0aW9uLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMS1NYXktMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0Njk5OiBGaXggY2FsbGluZyB0aGUgY2xhc3NtZXRob2QgZGVzY3JpcHRvciBkaXJlY3RseS4KLQotLSBJc3N1ZSAjMTQ0MzM6IFByZXZlbnQgbXN2Y3J0IGNyYXNoIGluIGludGVyYWN0aXZlIHByb21wdCB3aGVuIHN0ZGluIGlzIGNsb3NlZC4KLQotLSBJc3N1ZSAjMTQ1MjE6IE1ha2UgcmVzdWx0IG9mIGZsb2F0KCduYW4nKSBhbmQgZmxvYXQoJy1uYW4nKSBtb3JlIGNvbnNpc3RlbnQKLSAgYWNyb3NzIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTQ2NDY6IF9faW1wb3J0X18oKSBzZXRzIF9fbG9hZGVyX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgotCi0tIElzc3VlICMxNDYwNTogTm8gbG9uZ2VyIGhhdmUgaW1wbGljaXQgZW50cmllcyBpbiBzeXMubWV0YV9wYXRoLiBJZgotICBzeXMubWV0YV9wYXRoIGlzIGZvdW5kIHRvIGJlIGVtcHR5LCByYWlzZSBJbXBvcnRXYXJuaW5nLgotCi0tIElzc3VlICMxNDYwNTogTm8gbG9uZ2VyIGhhdmUgaW1wbGljaXQgZW50cmllcyBpbiBzeXMucGF0aF9ob29rcy4gSWYKLSAgc3lzLnBhdGhfaG9va3MgaXMgZm91bmQgdG8gYmUgZW1wdHksIGEgd2FybmluZyB3aWxsIGJlIHJhaXNlZC4gTm9uZSBpcyBub3cKLSAgaW5zZXJ0ZWQgaW50byBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpZiBubyBmaW5kZXIgd2FzIGRpc2NvdmVyZWQuIFRoaXMgYWxzbwotICBtZWFucyBpbXAuTnVsbEltcG9ydGVyIGlzIG5vIGxvbmdlciBpbXBsaWNpdGx5IHVzZWQuCi0KLS0gSXNzdWUgIzEzOTAzOiBJbXBsZW1lbnQgUEVQIDQxMi4gSW5kaXZpZHVhbCBkaWN0aW9uYXJ5IGluc3RhbmNlcyBjYW4gbm93IHNoYXJlCi0gIHRoZWlyIGtleXMgd2l0aCBvdGhlciBkaWN0aW9uYXJpZXMuIENsYXNzZXMgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyB0byBzaGFyZQotICB0aGVpciBpbnN0YW5jZSBkaWN0aW9uYXJ5IGtleXMgZm9yIGltcHJvdmVkIG1lbW9yeSBhbmQgcGVyZm9ybWFuY2UuCi0KLS0gSXNzdWUgIzExNjAzIChhZ2Fpbik6IFNldHRpbmcgX19yZXByX18gdG8gX19zdHJfXyBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yCi0gIHdoZW4gcmVwcigpIG9yIHN0cigpIGlzIGNhbGxlZCBvbiBzdWNoIGFuIG9iamVjdC4KLQotLSBJc3N1ZSAjMTQ2NTg6IEZpeCBiaW5kaW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gYSBidWlsdGluIGltcGxlbWVudGF0aW9uIG9mIGEKLSAgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIGRpZmZlcmVudCBuYW1lLgotCi0tIElzc3VlICMxNDYzMDogRml4IGEgbWVtb3J5IGFjY2VzcyBidWcgZm9yIGluc3RhbmNlcyBvZiBhIHN1YmNsYXNzIG9mIGludAotICB3aXRoIHZhbHVlIDAuCi0KLS0gSXNzdWUgIzE0MzM5OiBTcGVlZCBpbXByb3ZlbWVudHMgdG8gYmluLCBvY3QgYW5kIGhleCBmdW5jdGlvbnMuICBQYXRjaCBieQotICBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNDM4NTogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBhIGN1c3RvbSB0eXBlIGZvciB0aGUgX19idWlsdGluc19fCi0gIG5hbWVzcGFjZSwgaW5zdGVhZCBvZiBhIGRpY3QuIEl0IGNhbiBiZSB1c2VkIGZvciBzYW5kYm94aW5nIGZvciBleGFtcGxlLgotICBSYWlzZSBhbHNvIGEgTmFtZUVycm9yIGluc3RlYWQgb2YgSW1wb3J0RXJyb3IgaWYgX19idWlsZF9jbGFzc19fIG5hbWUgaWYgbm90Ci0gIGZvdW5kIGluIF9fYnVpbHRpbnNfXy4KLQotLSBJc3N1ZSAjMTI1OTk6IEJlIG1vcmUgc3RyaWN0IGluIGFjY2VwdGluZyBOb25lIGNvbXBhcmVkIHRvIGEgZmFsc2UtbGlrZQotICBvYmplY3QgZm9yIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyIGFuZAotICBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIuCi0KLS0gSXNzdWUgIzE0NjEyOiBGaXgganVtcGluZyBhcm91bmQgd2l0aCBibG9ja3MgYnkgc2V0dGluZyBmX2xpbmVuby4KLQotLSBJc3N1ZSAjMTQ1OTI6IEF0dGVtcHRpbmcgYSByZWxhdGl2ZSBpbXBvcnQgdy9vIF9fcGFja2FnZV9fIG9yIF9fbmFtZV9fIHNldCBpbgotICBnbG9iYWxzIHJhaXNlcyBhIEtleUVycm9yLgotCi0tIElzc3VlICMxNDYwNzogRml4IGtleXdvcmQtb25seSBhcmd1bWVudHMgd2hpY2ggc3RhcnRlZCB3aXRoIGBgX19gYC4KLQotLSBJc3N1ZSAjMTA4NTQ6IFRoZSBJbXBvcnRFcnJvciByYWlzZWQgd2hlbiBhbiBleHRlbnNpb24gbW9kdWxlIG9uIFdpbmRvd3MKLSAgZmFpbHMgdG8gaW1wb3J0IG5vdyB1c2VzIHRoZSBuZXcgcGF0aCBhbmQgbmFtZSBhdHRyaWJ1dGVzIGZyb20KLSAgSXNzdWUgIzE1NTk1NDkuCi0KLS0gSXNzdWUgIzEzODg5OiBDaGVjayBhbmQgKGlmIG5lY2Vzc2FyeSkgc2V0IEZQVSBjb250cm9sIHdvcmQgYmVmb3JlIGNhbGxpbmcKLSAgYW55IG9mIHRoZSBkdG9hLmMgc3RyaW5nIDwtPiBmbG9hdCBjb252ZXJzaW9uIGZ1bmN0aW9ucywgb24gTVNWQyBidWlsZHMgb2YKLSAgUHl0aG9uLiAgVGhpcyBmaXhlcyBpc3N1ZXMgd2hlbiBlbWJlZGRpbmcgUHl0aG9uIGluIGEgRGVscGhpIGFwcC4KLQotLSBfX2ltcG9ydF9fKCkgbm93IG1hdGNoZXMgUEVQIDMyOCBhbmQgZG9jdW1lbnRhdGlvbiBieSBkZWZhdWx0aW5nICdpbmRleCcgdG8gMAotICBpbnN0ZWFkIG9mIC0xIGFuZCByZW1vdmluZyBzdXBwb3J0IGZvciBuZWdhdGl2ZSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzIzNzc6IE1ha2UgaW1wb3J0bGliIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBfX2ltcG9ydF9fKCkuCi0KLS0gSXNzdWUgIzE1NTk1NDk6IEltcG9ydEVycm9yIG5vdyBoYXMgJ25hbWUnIGFuZCAncGF0aCcgYXR0cmlidXRlcyB0aGF0IGFyZSBzZXQKLSAgdXNpbmcga2V5d29yZCBhcmd1bWVudHMgdG8gaXRzIGNvbnN0cnVjdG9yLiBUaGV5IGFyZSBjdXJyZW50bHkgbm90IHNldCBieQotICBpbXBvcnQgYXMgdGhleSBhcmUgbWVhbnQgZm9yIHVzZSBieSBpbXBvcnRsaWIuCi0KLS0gSXNzdWUgIzE0NDc0OiBTYXZlIGFuZCByZXN0b3JlIGV4Y2VwdGlvbiBzdGF0ZSBpbiB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpCi0gIHdoaWxlIHdyaXRpbmcgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdGhyZWFkIGxlYXZlcyBhIHVuaGFuZGxlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEzMDE5OiBGaXggcG90ZW50aWFsIHJlZmVyZW5jZSBsZWFrcyBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaAotICBieSBTdW1hbiBTYWhhLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0NzY4OiBvcy5wYXRoLmV4cGFuZHVzZXIoJ34vYScpIGRvZXNuJ3Qgd29ya3MgY29ycmVjdGx5IHdoZW4gSE9NRSBpcyAnLycuCi0KLS0gSXNzdWUgIzE0MzcxOiBTdXBwb3J0IGJ6aXAyIGluIHppcGZpbGUgbW9kdWxlLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTMxODM6IEZpeCBwZGIgc2tpcHBpbmcgZnJhbWVzIGFmdGVyIGhpdHRpbmcgYSBicmVha3BvaW50IGFuZCBydW5uaW5nCi0gIHN0ZXAuICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMTQ2OTY6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgJ25vbmxvY2FsJyBkZWNsYXJhdGlvbnMuCi0KLS0gSXNzdWUgIzEwOTQxOiBGaXggaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUgdG8gcHJvZHVjZSBjb3JyZWN0IHJlc3VsdCBuZWFyCi0gIHRoZSBEU1QgdHJhbnNpdGlvbi4gIFBhdGNoIGJ5IEpvZSBQZXRlcnNvbi4KLQotLSBJc3N1ZSAjOTE1NDogRml4IHBhcnNlciBtb2R1bGUgdG8gdW5kZXJzdGFuZCBmdW5jdGlvbiBhbm5vdGF0aW9ucy4KLQotLSBJc3N1ZSAjNjA4NTogSW4gaHR0cC5zZXJ2ZXIucHkgU2ltcGxlSFRUUFNlcnZlci5hZGRyZXNzX3N0cmluZyByZXR1cm5zIHRoZQotICBjbGllbnQgaXAgYWRkcmVzcyBpbnN0ZWFkIGNsaWVudCBob3N0bmFtZS4gUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxNDMwOTogRGVwcmVjYXRlIHRpbWUuY2xvY2soKSwgdXNlIHRpbWUucGVyZl9jb3VudGVyKCkgb3IKLSAgdGltZS5wcm9jZXNzX3RpbWUoKSBpbnN0ZWFkLgotCi0tIElzc3VlICMxNDQyODogSW1wbGVtZW50IHRoZSBQRVAgNDE4LiBBZGQgdGltZS5nZXRfY2xvY2tfaW5mbygpLAotICB0aW1lLnBlcmZfY291bnRlcigpIGFuZCB0aW1lLnByb2Nlc3NfdGltZSgpIGZ1bmN0aW9ucywgYW5kIHJlbmFtZQotICB0aW1lLnN0ZWFkeSgpIHRvIHRpbWUubW9ub3RvbmljKCkuCi0KLS0gSXNzdWUgIzE0NjQ2OiBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlcigpIG5vdyBzZXRzIF9fbG9hZGVyX18gYW5kCi0gIF9fcGFja2FnZV9fICh3aGVuIHBvc3NpYmxlKS4KLQotLSBJc3N1ZSAjMTQ2NjQ6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgQHVuaXR0ZXN0LnNraXB7SWYsVW5sZXNzfSBvbiBhCi0gIHRlc3QgY2xhc3MgdGhhdCBkb2Vzbid0IGluaGVyaXQgZnJvbSBUZXN0Q2FzZSAoaS5lLiBhIG1peGluKS4KLQotLSBJc3N1ZSAjNDg5MjogbXVsdGlwcm9jZXNzaW5nIENvbm5lY3Rpb25zIGNhbiBub3cgYmUgdHJhbnNmZXJyZWQgb3ZlcgotICBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbnMuICBQYXRjaCBieSBSaWNoYXJkIE91ZGtlcmsgKHNidCkuCi0KLS0gSXNzdWUgIzE0MTYwOiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgZmFpbGVkIHRvIHJlc29sdmUgc3ltYm9saWMgbGlua3Mgd2hlbgotICB0aGUgbGlua3Mgd2VyZSBub3QgbG9jYXRlZCBpbiBhbiBhcmNoaXZlIHN1YmRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTQ2Mzg6IHB5ZG9jIG5vdyB0cmVhdHMgbm9uLXN0cmluZyBfX25hbWVfXyB2YWx1ZXMgYXMgaWYgdGhleQotICB3ZXJlIG1pc3NpbmcsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTM2ODQ6IEZpeCBodHRwbGliIHR1bm5lbCBpc3N1ZSBvZiBpbmZpbml0ZSBsb29wcyBmb3IgY2VydGFpbiBzaXRlcwotICB3aGljaCBzZW5kIEVPRiB3aXRob3V0IHRyYWlsaW5nIFxyXG4uCi0KLS0gSXNzdWUgIzE0NjA1OiBBZGQgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyLCBpbXBvcnRsaWIubWFjaGluZXJ5LihGaWxlRmluZGVyLAotICBTb3VyY2VGaWxlTG9hZGVyLCBTb3VyY2VsZXNzRmlsZUxvYWRlciwgRXh0ZW5zaW9uRmlsZUxvYWRlcikuCi0KLS0gSXNzdWUgIzEzOTU5OiBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKS9zb3VyY2VfZnJvbV9jYWNoZSgpIG5vdyBmb2xsb3cKLSAgb3MucGF0aC5qb2luKCkvc3BsaXQoKSBzZW1hbnRpY3MgZm9yIHBhdGggbWFuaXB1bGF0aW9uIGluc3RlYWQgb2YgaXRzIHByaW9yLAotICBjdXN0b20gc2VtYW50aWNzIG9mIGNhcmluZyB0aGUgcmlnaHQtbW9zdCBwYXRoIHNlcGFyYXRvciBmb3J3YXJkIGluIHBhdGgKLSAgam9pbmluZy4KLQotLSBJc3N1ZSAjMjE5MzogQWxsb3cgIjoiIGNoYXJhY3RlciBpbiBDb29raWUgTkFNRSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzE0NjI5OiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIHdpbGwgc3BlY2lmeSB0aGUgZmlsZW5hbWUgaW4gdGhlCi0gIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpZiBmb3VuZCBhdCByZWFkbGluZS5fX3NlbGZfXy5uYW1lLgotCi0tIElzc3VlICMxNDYyOTogUmFpc2UgU3ludGF4RXJyb3IgaW4gdG9rZW5pemVyLmRldGVjdF9lbmNvZGluZyBpZiB0aGUKLSAgZmlyc3QgdHdvIGxpbmVzIGhhdmUgbm9uLVVURi04IGNoYXJhY3RlcnMgd2l0aG91dCBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbi4KLQotLSBJc3N1ZSAjMTQzMDg6IEZpeCBhbiBleGNlcHRpb24gd2hlbiBhICJkdW1teSIgdGhyZWFkIGlzIGluIHRoZSB0aHJlYWRpbmcKLSAgbW9kdWxlJ3MgYWN0aXZlIGxpc3QgYWZ0ZXIgYSBmb3JrKCkuCi0KLS0gSXNzdWUgIzExNzUwOiBUaGUgV2luZG93cyBBUEkgZnVuY3Rpb25zIHNjYXR0ZXJlZCBpbiB0aGUgX3N1YnByb2Nlc3MgYW5kCi0gIF9tdWx0aXByb2Nlc3Npbmcud2luMzIgbW9kdWxlcyBub3cgbGl2ZSBpbiBhIHNpbmdsZSBtb2R1bGUgIl93aW5hcGkiLgotICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzE0MDg3OiBtdWx0aXByb2Nlc3Npbmc6IGFkZCBDb25kaXRpb24ud2FpdF9mb3IoKS4gUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxNDUzODogSFRNTFBhcnNlciBjYW4gbm93IHBhcnNlIGNvcnJlY3RseSBzdGFydCB0YWdzIHRoYXQgY29udGFpbgotICBhIGJhcmUgJy8nLgotCi0tIElzc3VlICMxNDQ1MjogU3lzTG9nSGFuZGxlciBubyBsb25nZXIgaW5zZXJ0cyBhIFVURi04IEJPTSBpbnRvIHRoZSBtZXNzYWdlLgotCi0tIElzc3VlICMxNDM4NjogRXhwb3NlIHRoZSBkaWN0X3Byb3h5IGludGVybmFsIHR5cGUgYXMgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZS4KLQotLSBJc3N1ZSAjMTM5NTk6IE1ha2UgaW1wLnJlbG9hZCgpIGFsd2F5cyB1c2UgYSBtb2R1bGUncyBfX2xvYWRlcl9fIHRvIHBlcmZvcm0KLSAgdGhlIHJlbG9hZC4KLQotLSBJc3N1ZSAjMTM5NTk6IEFkZCBpbXAucHkgYW5kIHJlbmFtZSB0aGUgYnVpbHQtaW4gbW9kdWxlIHRvIF9pbXAsIGFsbG93aW5nIGZvcgotICByZS1pbXBsZW1lbnRpbmcgcGFydHMgb2YgdGhlIG1vZHVsZSBpbiBwdXJlIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTM0OTY6IEZpeCBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gYmlzZWN0LmJpc2VjdCBhbGdvcml0aG0gd2hlbiBhcHBsaWVkCi0gIHRvIGEgY29sbGVjdGlvbiBvZiBzaXplID4gc3lzLm1heHNpemUgLyAyLgotCi0tIEhhdmUgaW1wb3J0bGliIHRha2UgYWR2YW50YWdlIG9mIEltcG9ydEVycm9yJ3MgbmV3ICduYW1lJyBhbmQgJ3BhdGgnCi0gIGF0dHJpYnV0ZXMuCi0KLS0gSXNzdWUgIzE0Mzk5OiB6aXBmaWxlIG5vdyByZWNvZ25pemVzIHRoYXQgdGhlIGFyY2hpdmUgaGFzIGJlZW4gbW9kaWZpZWQgZXZlbgotICBpZiBvbmx5IHRoZSBjb21tZW50IGlzIGNoYW5nZWQuICBJbiBhZGRpdGlvbiwgdGhlIFR5cGVFcnJvciB0aGF0IHJlc3VsdHMgZnJvbQotICB0cnlpbmcgdG8gc2V0IGEgbm9uLWJpbmFyeSB2YWx1ZSBhcyBhIGNvbW1lbnQgaXMgbm93IHJhaXNlZCBhdCB0aGUgdGltZQotICB0aGUgY29tbWVudCBpcyBzZXQgcmF0aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlIHppcGZpbGUgaXMgd3JpdHRlbi4KLQotLSB0cmFjZS5Db3ZlcmFnZVJlc3VsdHMuaXNfaWdub3JlZF9maWxlbmFtZSgpIG5vdyBpZ25vcmVzIGFueSBuYW1lIHRoYXQgc3RhcnRzCi0gIHdpdGggIjwiIGFuZCBlbmRzIHdpdGggIj4iIGluc3RlYWQgb2Ygc3BlY2lhbC1jYXNpbmcgIjxzdHJpbmc+IiBhbmQKLSAgIjxkb2N0ZXN0ICIuCi0KLS0gSXNzdWUgIzEyNTM3OiBUaGUgbWFpbGJveCBtb2R1bGUgbm8gbG9uZ2VyIGRlcGVuZHMgb24ga25vd2xlZGdlIG9mIGludGVybmFsCi0gIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgTWVzc2FnZSBvYmplY3QuCi0KLS0gSXNzdWUgIzc5Nzg6IHNvY2tldHNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwotICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgotICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCi0KLS0gSXNzdWUgIzE0NTIyOiBBdm9pZCBkdXBsaWNhdGluZyBzb2NrZXQgaGFuZGxlcyBpbiBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIERvbid0IFB5X0RFQ1JFRiBOVUxMIHZhcmlhYmxlIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuCi0KLS0gSXNzdWUgIzMwMzM6IEFkZCBkaXNwbGF5b2YgcGFyYW1ldGVyIHRvIHRraW50ZXIgZm9udC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCi0KLS0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCi0gIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1VOSVggdHlwZSBhZGRyZXNzIHVuZGVyCi0gIFdpbmRvd3MuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLS0gSXNzdWUgIzgwMjMxMDogR2VuZXJhdGUgYWx3YXlzIHVuaXF1ZSB0a2ludGVyIGZvbnQgbmFtZXMgaWYgbm90IGRpcmVjdGx5IHBhc3NlZC4KLQotLSBJc3N1ZSAjMTQxNTE6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKLSAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfUElQRSB0eXBlIGFkZHJlc3MgdW5kZXIKLSAgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgotCi0tIElzc3VlICMxNDQ5MzogVXNlIGd2ZnMtb3BlbiBvciB4ZGctb3BlbiBpbiB3ZWJicm93c2VyLgotCi1CdWlsZAotLS0tLS0KLQotLSAibWFrZSB0b3VjaCIgd2lsbCBub3cgdG91Y2ggZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIGNoZWNrZWQgaW50byBNZXJjdXJpYWwsCi0gIGFmdGVyIGEgImhnIHVwZGF0ZSIgd2hpY2ggZmFpbGVkIHRvIGJyaW5nIHRoZSB0aW1lc3RhbXBzIGludG8gdGhlIHJpZ2h0IG9yZGVyLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTQwMjY6IEluIHRlc3RfY21kX2xpbmVfc2NyaXB0LCBjaGVjayB0aGF0IHN5cy5hcmd2IGlzIHBvcHVsYXRlZAotICBjb3JyZWN0bHkgZm9yIHRoZSB2YXJpb3VzIGludm9jYXRpb24gYXBwcm9hY2hlcyAoUGF0Y2ggYnkgSmFzb24gWWVvKQotCi0tIElzc3VlICMxNDAzMjogRml4IGluY29ycmVjdCB2YXJpYWJsZSBuYW1lIGluIHRlc3RfY21kX2xpbmVfc2NyaXB0IGRlYnVnZ2luZwotICBtZXNzYWdlIChQYXRjaCBieSBKYXNvbiBZZW8pCi0KLS0gSXNzdWUgIzE0NTg5OiBVcGRhdGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tLCBmaXhpbmcKLSAgYSB0ZXN0IGZhaWx1cmUgaW4gdGVzdF9zc2wuCi0KLS0gSXNzdWUgIzE0MzU1OiBSZWdydGVzdCBub3cgc3VwcG9ydHMgdGhlIHN0YW5kYXJkIHVuaXR0ZXN0IHRlc3QgbG9hZGluZywgYW5kCi0gIHdpbGwgdXNlIGl0IGlmIGEgdGVzdCBmaWxlIGNvbnRhaW5zIG5vIGB0ZXN0X21haW5gIG1ldGhvZC4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgotICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgotCi0tIElzc3VlICMxNDQ5NjogRml4IHdyb25nIG5hbWUgaW4gaWRsZWxpYi90YWJiZWRwYWdlcy5weS4KLSAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgotCi1Ub29scyAvIERlbW9zCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzM1NjE6IFRoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaGFzIGFuIG9wdGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvcgotICBwbGFjaW5nIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGludG8gdGhlIHN5c3RlbSAiUGF0aCIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLS0gSXNzdWUgIzEzMTY1OiBzdHJpbmdiZW5jaCBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBUb29scy9zdHJpbmdiZW5jaCBmb2xkZXIuCi0gIEl0IHVzZWQgdG8gbGl2ZSBpbiBpdHMgb3duIFNWTiBwcm9qZWN0LgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KLSAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDEtQXByLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjgzMzY4OiBvYmplY3QuX19uZXdfXyBhbmQgb2JqZWN0Ll9faW5pdF9fIHJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZXkKLSAgYXJlIHBhc3NlZCBhcmd1bWVudHMgYW5kIHRoZWlyIGNvbXBsZW1lbnRhcnkgbWV0aG9kIGlzIG5vdCBvdmVycmlkZGVuLgotCi0tIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcwotICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgotCi0tIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5Ci0gIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgotCi0tIElzc3VlICMxNDMzNDogUHJldmVudCBpbiBhIHNlZ2ZhdWx0IGluIHR5cGUuX19nZXRhdHRyaWJ1dGVfXyB3aGVuIGl0IHdhcyBub3QKLSAgcGFzc2VkIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKLSAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCi0KLS0gSXNzdWUgIzE0MjA1OiBkaWN0IGxvb2t1cCByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlIGRpY3QgaXMgbW9kaWZpZWQKLSAgZHVyaW5nIGEgbG9va3VwLgotCi0tIElzc3VlICMxNDIyMDogV2hlbiBhIGdlbmVyYXRvciBpcyBkZWxlZ2F0aW5nIHRvIGFub3RoZXIgaXRlcmF0b3Igd2l0aCB0aGUKLSAgeWllbGQgZnJvbSBzeW50YXgsIGl0IG5lZWRzIHRvIGhhdmUgaXRzIGBgZ2lfcnVubmluZ2BgIGZsYWcgc2V0IHRvIFRydWUuCi0KLS0gSXNzdWUgIzE0NDM1OiBSZW1vdmUgZGVkaWNhdGVkIGJsb2NrIGFsbG9jYXRvciBmcm9tIGZsb2F0b2JqZWN0LmMgYW5kIHJlbHkKLSAgb24gdGhlIFB5T2JqZWN0X01hbGxvYygpIGFwaSBsaWtlIGFsbCBvdGhlciBvYmplY3RzLgotCi0tIElzc3VlICMxNDQ3MTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gaW4gdGhlIHdpbnJlZyBtb2R1bGUuCi0KLS0gSXNzdWUgIzE0Mjg4OiBBbGxvdyB0aGUgc2VyaWFsaXphdGlvbiBvZiBidWlsdGluIGl0ZXJhdG9ycwotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MzAwOiBVbmRlciBXaW5kb3dzLCBzb2NrZXRzIGNyZWF0ZWQgdXNpbmcgc29ja2V0LmR1cCgpIG5vdyBhbGxvdwotICBvdmVybGFwcGVkIEkvTy4gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTM4NzI6IHNvY2tldC5kZXRhY2goKSBub3cgbWFya3MgdGhlIHNvY2tldCBjbG9zZWQgKGFzIG1pcnJvcmVkCi0gIGluIHRoZSBzb2NrZXQgcmVwcigpKS4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgotCi0tIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAotICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCi0KLS0gSXNzdWUgIzUxMzY6IGRlcHJlY2F0ZSBvbGQsIHVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyLgotCi0tIElzc3VlICMxNDQxNjogc3lzbG9nIG5vdyBkZWZpbmVzIHRoZSBMT0dfT0RFTEFZIGFuZCBMT0dfQVVUSFBSSVYgY29uc3RhbnRzCi0gIGlmIHRoZXkgYXJlIGRlZmluZWQgaW4gPHN5c2xvZy5oPi4KLQotLSBJc3N1ZSAjMTQyOTU6IEFkZCB1bml0dGVzdC5tb2NrCi0KLS0gSXNzdWUgIzc2NTI6IEFkZCAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjIG9wdGlvbiB0byBjb25maWd1cmUgZm9yIGxpbmtpbmcKLSAgdGhlIF9kZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGFuIGluc3RhbGxlZCBsaWJtcGRlYy4KLQotLSBJc3N1ZSAjMTQzODA6IE1JTUVUZXh0IG5vdyBkZWZhdWx0cyB0byB1dGYtOCB3aGVuIHBhc3NlZCBub24tQVNDSUkgdW5pY29kZQotICB3aXRoIG5vIGNoYXJzZXQgc3BlY2lmaWVkLgotCi0tIElzc3VlICMxMDM0MDogYXN5bmNvcmUgLSBwcm9wZXJseSBoYW5kbGUgRUlOVkFMIGluIGRpc3BhdGNoZXIgY29uc3RydWN0b3Igb24KLSAgT1NYOyBhdm9pZCB0byBjYWxsIGhhbmRsZV9jb25uZWN0IGluIGNhc2Ugb2YgYSBkaXNjb25uZWN0ZWQgc29ja2V0IHdoaWNoCi0gIHdhcyBub3QgbWVhbnQgdG8gY29ubmVjdC4KLQotLSBJc3N1ZSAjMTQyMDQ6IFRoZSBzc2wgbW9kdWxlIG5vdyBoYXMgc3VwcG9ydCBmb3IgdGhlIE5leHQgUHJvdG9jb2wKLSAgTmVnb3RpYXRpb24gZXh0ZW5zaW9uLCBpZiBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgT3BlblNTTCBsaWJyYXJ5LgotICBQYXRjaCBieSBDb2xpbiBNYXJjLgotCi0tIElzc3VlICMzMDM1OiBVbnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlciBhcmUgbWFya2VkIGFzIHBlbmRpbmcgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMTI3NTc6IEZpeCB0aGUgc2tpcHBpbmcgb2YgZG9jdGVzdHMgd2hlbiBweXRob24gaXMgcnVuIHdpdGggLU9PIHNvCi0gIHRoYXQgaXQgd29ya3MgaW4gdW5pdHRlc3QncyB2ZXJib3NlIG1vZGUgYXMgd2VsbCBhcyBub24tdmVyYm9zZSBtb2RlLgotCi0tIElzc3VlICM3NjUyOiBJbnRlZ3JhdGUgdGhlIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbGlibXBkZWMgbGlicmFyeSB0byBzcGVlZAotICB1cCB0aGUgZGVjaW1hbCBtb2R1bGUuIFBlcmZvcm1hbmNlIGdhaW5zIG9mIHRoZSBuZXcgQyBpbXBsZW1lbnRhdGlvbiBhcmUKLSAgYmV0d2VlbiAxMHggYW5kIDEwMHgsIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCi0KLS0gSXNzdWUgIzE0MjY5OiBTTVRQRCBub3cgY29uZm9ybXMgdG8gdGhlIFJGQyBhbmQgcmVxdWlyZXMgYSBIRUxPIGNvbW1hbmQKLSAgYmVmb3JlIE1BSUwsIFJDUFQsIG9yIERBVEEuCi0KLS0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTQzNDQ6IGZpeGVkIHRoZSByZXByIG9mIGVtYWlsLnBvbGljeSBvYmplY3RzLgotCi0tIElzc3VlICMxMTY4NjogQWRkZWQgbWlzc2luZyBlbnRyaWVzIHRvIGVtYWlsIHBhY2thZ2UgX19hbGxfXyBsaXN0cwotICAobW9zdGx5IHRoZSBuZXcgQnl0ZXMgY2xhc3NlcykuCi0KLS0gSXNzdWUgIzE0MzM1OiBtdWx0aXByb2Nlc3NpbmcncyBjdXN0b20gUGlja2xlciBzdWJjbGFzcyBub3cgaW5oZXJpdHMgZnJvbQotICB0aGUgQy1hY2NlbGVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTA0ODQ6IEZpeCB0aGUgQ0dJSFRUUFNlcnZlcidzIFBBVEhfSU5GTyBoYW5kbGluZyBwcm9ibGVtLgotCi0tIElzc3VlICMxMTE5OTogRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgotCi0tIEltcHJvdmUgdGhlIG1lbW9yeSB1dGlsaXphdGlvbiBhbmQgc3BlZWQgb2YgZnVuY3Rvb2xzLmxydV9jYWNoZS4KLQotLSBJc3N1ZSAjMTQyMjI6IFVzZSB0aGUgbmV3IHRpbWUuc3RlYWR5KCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aW1lLnRpbWUoKSBmb3IKLSAgdGltZW91dCBpbiBxdWV1ZSBhbmQgdGhyZWFkaW5nIG1vZHVsZXMgdG8gbm90IGJlIGFmZmVjdGVkIG9mIHN5c3RlbSB0aW1lCi0gIHVwZGF0ZS4KLQotLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBsaWIydG8zLnB5dHJlZS5CYXNlLmdldF9wcmVmaXgvc2V0X3ByZWZpeC4KLQotLSBJc3N1ZSAjMTQyMzQ6IENWRS0yMDEyLTA4NzY6IFJhbmRvbWl6ZSBoYXNoZXMgb2YgeG1sIGF0dHJpYnV0ZXMgaW4gdGhlIGhhc2gKLSAgdGFibGUgaW50ZXJuYWwgdG8gdGhlIHB5ZXhwYXQgbW9kdWxlJ3MgY29weSBvZiB0aGUgZXhwYXQgbGlicmFyeSB0byBhdm9pZCBhCi0gIGRlbmlhbCBvZiBzZXJ2aWNlIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtIHdpdGggc29tZQotICBtb2RpZmljYXRpb25zIGJ5IHRoZSBleHBhdCBwcm9qZWN0LgotCi0tIElzc3VlICMxMjgxODogZm9ybWF0IGFkZHJlc3Mgbm8gbG9uZ2VyIG5lZWRsZXNzbHkgXCBlc2NhcGVzICgpcyBpbiBuYW1lcyB3aGVuCi0gIHRoZSBuYW1lIGVuZHMgdXAgYmVpbmcgcXVvdGVkLgotCi0tIElzc3VlICMxNDA2MjogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBmb2xkcyBIZWFkZXIgb2JqZWN0cywKLSAgaW5jbHVkaW5nIHVzaW5nIGxpbmVzZXAgd2hlbiBmb2xkaW5nLgotCi0tIElzc3VlICMxMzgzOTogV2hlbiBpbnZva2VkIG9uIHRoZSBjb21tYW5kLWxpbmUsIHRoZSBwc3RhdHMgbW9kdWxlIG5vdwotICBhY2NlcHRzIHNldmVyYWwgZmlsZW5hbWVzIG9mIHByb2ZpbGUgc3RhdCBmaWxlcyBhbmQgbWVyZ2VzIHRoZW0gYWxsLgotICBQYXRjaCBieSBNYXR0IEpvaW5lci4KLQotLSBJc3N1ZSAjMTQyOTE6IEVtYWlsIG5vdyBkZWZhdWx0cyB0byB1dGYtOCBmb3Igbm9uLUFTQ0lJIHVuaWNvZGUgaGVhZGVycwotICBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byAyLjcuCi0KLS0gSXNzdWUgIzk4OTcxMjogU3VwcG9ydCB1c2luZyBUayB3aXRob3V0IGEgbWFpbmxvb3AuCi0KLS0gSXNzdWUgIzM4MzU6IFJlZnVzZSB0byB1c2UgdW50aHJlYWRlZCBUY2wgaW4gdGhyZWFkZWQgUHl0aG9uLgotCi0tIElzc3VlICMyODQzOiBBZGQgbmV3IFRrIEFQSSB0byBUa2ludGVyLgotCi0tIElzc3VlICMxNDE4NDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KLSAgTWFjIE9TIFggdG8gYXZvaWQgaW50ZXJwcmV0ZXIgY3Jhc2hlcyB3aGVuIHVzaW5nIHRocmVhZHMgb24gMTAuNy4KLQotLSBJc3N1ZSAjMTQxODA6IGRhdGV0aW1lLmRhdGUuZnJvbXRpbWVzdGFtcCgpLAotICBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKQotICBub3cgcmFpc2UgYW4gT1NFcnJvciBpbnN0ZWFkIG9mIFZhbHVlRXJyb3IgaWYgbG9jYWx0aW1lKCkgb3IgZ210aW1lKCkgZmFpbGVkLgotCi0tIElzc3VlICMxNDE4MDogdGltZS5jdGltZSgpLCBnbXRpbWUoKSwgdGltZS5sb2NhbHRpbWUoKSwKLSAgZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQKLSAgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpIG5vdyByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvciwgaW5zdGVhZCBvZgotICBhIFZhbHVlRXJyb3IsIGlmIHRoZSB0aW1lc3RhbXAgZG9lcyBub3QgZml0IGluIHRpbWVfdC4KLQotLSBJc3N1ZSAjMTQxODA6IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQKLSAgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpIG5vdyByb3VuZCBtaWNyb3NlY29uZHMgdG93YXJkcyB6ZXJvCi0gIGluc3RlYWQgb2Ygcm91bmRpbmcgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8uCi0KLS0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCi0KLS0gSXNzdWUgIzExNzg4NjM6IFNlcGFyYXRlIGluaXRpYWxpc2F0aW9uIGZyb20gc2V0dGluZyB3aGVuIGluaXRpYWxpemluZwotICBUa2ludGVyLlZhcmlhYmxlczsgaGFybW9uaXplIGV4Y2VwdGlvbnMgdG8gVmFsdWVFcnJvcjsgb25seSBkZWxldGUgdmFyaWFibGVzCi0gIHRoYXQgaGF2ZSBub3QgYmVlbiBkZWxldGVkOyBhc3NlcnQgdGhhdCB2YXJpYWJsZSBuYW1lcyBhcmUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTQxMDQ6IEltcGxlbWVudCB0aW1lLm1vbm90b25pYygpIG9uIE1hYyBPUyBYLCBwYXRjaCB3cml0dGVuIGJ5Ci0gIE5pY2hvbGFzIFJpbGV5LgotCi0tIElzc3VlICMxMzM5NDogdGhlIGFpZmMgbW9kdWxlIG5vdyB1c2VzIHdhcm5pbmdzLndhcm4oKSB0byBzaWduYWwgd2FybmluZ3MuCi0KLS0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKLSAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KLQotLSBJc3N1ZSAjMTQyMjM6IGN1cnNlcy5hZGRjaCgpIGlzIG5vIG1vcmUgbGltaXRlZCB0byB0aGUgcmFuZ2UgMC0yNTUgd2hlbiB0aGUKLSAgUHl0aG9uIGN1cnNlcyBpcyBub3QgbGlua2VkIHRvIGxpYm5jdXJzZXN3LiBJdCB3YXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQKLSAgaW4gUHl0aG9uIDMuM2ExLgotCi0tIElzc3VlICMxNDE2ODogQ2hlY2sgZm9yIHByZXNlbmNlIG9mIEVsZW1lbnQuX2F0dHJzIGluIG1pbmlkb20gYmVmb3JlCi0gIGFjY2Vzc2luZyBpdC4KLQotLSBJc3N1ZSAjMTIzMjg6IEZpeCBtdWx0aXByb2Nlc3NpbmcncyB1c2Ugb2Ygb3ZlcmxhcHBlZCBJL08gb24gV2luZG93cy4KLSAgQWxzbywgYWRkIGEgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdChybGlzdCwgdGltZW91dD1Ob25lKSBmdW5jdGlvbgotICBmb3IgcG9sbGluZyBtdWx0aXBsZSBvYmplY3RzIGF0IG9uY2UuICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzE0MDA3OiBBY2NlcHQgaW5jb21wbGV0ZSBUcmVlQnVpbGRlciBvYmplY3RzIChtaXNzaW5nIHN0YXJ0LCBlbmQsCi0gIGRhdGEgb3IgY2xvc2UgbWV0aG9kKSBmb3IgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBhcyB3ZWxsLgotICBEcm9wIHRoZSBuby1vcCBUcmVlQnVpbGRlcigpLnhtbCgpIG1ldGhvZCBmcm9tIHRoZSBDIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICMxNDIxMDogcGRiIG5vdyBoYXMgdGFiLWNvbXBsZXRpb24gbm90IG9ubHkgZm9yIGNvbW1hbmQgbmFtZXMsIGJ1dAotICBhbHNvIGZvciB0aGVpciBhcmd1bWVudHMsIHdoZXJldmVyIHBvc3NpYmxlLgotCi0tIElzc3VlICMxNDMxMDogU29ja2V0cyBjYW4gbm93IGJlIHdpdGggb3RoZXIgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgdXNpbmcKLSAgdGhlIGFwaSBzb2NrZXQuc29ja2V0LnNoYXJlKCkgYW5kIHNvY2tldC5mcm9tc2hhcmUoKS4KLQotLSBJc3N1ZSAjMTA1NzY6IFRoZSBnYyBtb2R1bGUgbm93IGhhcyBhICdjYWxsYmFja3MnIG1lbWJlciB0aGF0IHdpbGwgZ2V0Ci0gIGNhbGxlZCB3aGVuIGdhcmJhZ2UgY29sbGVjdGlvbiB0YWtlcyBwbGFjZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KLQotLSBJc3N1ZSAjMTQzODc6IERvIG5vdCBpbmNsdWRlIGFjY3UuaCBmcm9tIFB5dGhvbi5oLgotCi0tIElzc3VlICMxNDM1OTogT25seSB1c2UgT19DTE9FWEVDIGluIF9wb3NpeG1vZHVsZS5jIGlmIGl0IGlzIGRlZmluZWQuCi0gIEJhc2VkIG9uIHBhdGNoIGZyb20gSGVydsOpIENvYXRhbmhheS4KLQotLSBJc3N1ZSAjMTQzMjE6IERvIG5vdCBydW4gcGdlbiBkdXJpbmcgdGhlIGJ1aWxkIGlmIGZpbGVzIGFyZSB1cCB0byBkYXRlLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0MDM0OiBhZGRlZCB0aGUgYXJncGFyc2UgdHV0b3JpYWwuCi0KLS0gSXNzdWUgIzE0MzI0OiBGaXggY29uZmlndXJlIHRlc3RzIGZvciBjcm9zcyBidWlsZHMuCi0KLS0gSXNzdWUgIzE0MzI3OiBDYWxsIEFDX0NBTk9OSUNBTF9IT1NUIGluIGNvbmZpZ3VyZS5hYyBhbmQgY2hlY2sgaW4KLSAgY29uZmlnLntndWVzcyxzdWJ9LiBEb24ndCB1c2UgdW5hbWUgY2FsbHMgZm9yIGNyb3NzIGJ1aWxkcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCi0gIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCi0gIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKLSAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCi0KLS0gSXNzdWUgIzE0MjU5OiBUaGUgZmluZGl0ZXIoKSBtZXRob2Qgb2YgcmUgb2JqZWN0cyBkaWQgbm90IHRha2UgYW55Ci0gIGtleXdvcmQgYXJndW1lbnRzLCBjb250cmFyeSB0byB0aGUgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTAxNDI6IFN1cHBvcnQgZm9yIFNFRUtfSE9MRS9TRUVLX0RBVEEgKGZvciBleGFtcGxlLCB1bmRlciBaRlMpLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTQ0NDI6IEFkZCBtaXNzaW5nIGVycm5vIGltcG9ydCBpbiB0ZXN0X3NtdHBsaWIuCi0KLS0gSXNzdWUgIzgzMTU6IChwYXJ0aWFsIGZpeCkgcHl0aG9uIC1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCBub3cgd29ya3MuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA1LU1hci0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQxNzI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIG1hcnNoYWxsaW5nIGEgYnVmZmVyLWxpa2Ugb2JqZWN0Ci0gIChvdGhlciB0aGFuIGEgYnl0ZXMgb2JqZWN0KS4KLQotLSBJc3N1ZSAjMTM1MjE6IGRpY3Quc2V0ZGVmYXVsdCgpIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwKLSAgbWFraW5nIGl0ICJhdG9taWMiIGZvciBtYW55IHB1cnBvc2VzLiAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KLQotLSBQRVAgNDA5LCBJc3N1ZSAjNjIxMDogInJhaXNlIFggZnJvbSBOb25lIiBpcyBub3cgc3VwcG9ydGVkIGFzIGEgbWVhbnMgb2YKLSAgc3VwcHJlc3NpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIGNoYWluZWQgZXhjZXB0aW9uIGNvbnRleHQuIFRoZSBjaGFpbmVkCi0gIGNvbnRleHQgc3RpbGwgcmVtYWlucyBhdmFpbGFibGUgYXMgdGhlIF9fY29udGV4dF9fIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTAxODE6IE5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGZpeGVzIG11bHRpcGxlIG93bmVyc2hpcAotICBhbmQgbGlmZXRpbWUgaXNzdWVzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBQeV9idWZmZXIgbWVtYmVycyAoIzk5OTApCi0gIGFzIHdlbGwgYXMgY3Jhc2hlcyAoIzgzMDUsICM3NDMzKS4gTWFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkCi0gIChTZWUgd2hhdHNuZXcvMy4zKSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgZXh0ZW5zaXZlbHkuCi0gIFRoZSBuZGFycmF5IHRlc3Qgb2JqZWN0IGZyb20gX3Rlc3RidWZmZXIuYyBpbXBsZW1lbnRzIGFsbCBhc3BlY3RzIG9mCi0gIFBFUC0zMTE4LCBzbyBmdXJ0aGVyIGRldmVsb3BtZW50IHRvd2FyZHMgdGhlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uCi0gIG9mIHRoZSBQRVAgY2FuIHByb2NlZWQgaW4gYSB0ZXN0LWRyaXZlbiBtYW5uZXIuCi0KLSAgVGhhbmtzIHRvIE5pY2sgQ29naGxhbiwgQW50b2luZSBQaXRyb3UgYW5kIFBhdWxpIFZpcnRhbmVuIGZvciByZXZpZXcKLSAgYW5kIG1hbnkgaWRlYXMuCi0KLS0gSXNzdWUgIzEyODM0OiBGaXggaW5jb3JyZWN0IHJlc3VsdHMgb2YgbWVtb3J5dmlldy50b2J5dGVzKCkgZm9yCi0gIG5vbi1jb250aWd1b3VzIGFycmF5cy4KLQotLSBJc3N1ZSAjNTIzMTogSW50cm9kdWNlIG1lbW9yeXZpZXcuY2FzdCgpIG1ldGhvZCB0aGF0IGFsbG93cyBjaGFuZ2luZwotICBmb3JtYXQgYW5kIHNoYXBlIHdpdGhvdXQgbWFraW5nIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyBtZW1vcnkuCi0KLS0gSXNzdWUgIzE0MDg0OiBGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSB3aXRoIGEKLSAgYmFkIGVuY29kaW5nLgotCi0tIFVwZ3JhZGUgVW5pY29kZSBkYXRhIHRvIFVuaWNvZGUgNi4xLgotCi0tIElzc3VlICMxNDA0MDogUmVtb3ZlIHJhcmVseSB1c2VkIGZpbGUgbmFtZSBzdWZmaXhlcyBmb3IgQyBleHRlbnNpb25zCi0gICh1bmRlciBQT1NJWCBtYWlubHkpLgotCi0tIElzc3VlICMxNDA1MTogQWxsb3cgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgdG8gYmUgc2V0IG9mIGNsYXNzbWV0aG9kIGFuZAotICBzdGF0aWNtZXRob2QuCi0KLS0gSXNzdWUgIzEzNzAzOiBvQ0VSVC0yMDExLTAwMzogUmFuZG9taXplIGhhc2hlcyBvZiBzdHIgYW5kIGJ5dGVzIHRvIHByb3RlY3QKLSAgYWdhaW5zdCBkZW5pYWwgb2Ygc2VydmljZSBhdHRhY2tzIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMgd2l0aGluIHRoZSBkaWN0IGFuZAotICBzZXQgdHlwZXMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtLCBiYXNlZCBvbiB3b3JrIGJ5IFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICMxMzAyMDogRml4IGEgcmVmZXJlbmNlIGxlYWsgd2hlbiBhbGxvY2F0aW5nIGEgc3RydWN0c2VxdWVuY2Ugb2JqZWN0Ci0gIGZhaWxzLiAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KLQotLSBJc3N1ZSAjMTM5MDg6IFJlYWR5IHR5cGVzIHJldHVybmVkIGZyb20gUHlUeXBlX0Zyb21TcGVjLgotCi0tIElzc3VlICMxMTIzNTogRml4IE92ZXJmbG93RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IGEgc291cmNlIGZpbGUgd2hvc2UKLSAgbW9kaWZpY2F0aW9uIHRpbWUgZG9lc24ndCBmaXQgaW4gYSAzMi1iaXQgdGltZXN0YW1wLgotCi0tIElzc3VlICMxMjcwNTogQSBTeW50YXhFcnJvciBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcgdG8KLSAgY29tcGlsZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudC4KLQotLSBGaXggdGhlIGJ1aWx0aW4gbW9kdWxlIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gc3RvcmUgdGhlIGluaXQgZnVuY3Rpb24gZm9yCi0gIGZ1dHVyZSByZWluaXRpYWxpemF0aW9uLgotCi0tIElzc3VlICM4MDUyOiBUaGUgcG9zaXggc3VicHJvY2VzcyBtb2R1bGUgd291bGQgdGFrZSBhIGxvbmcgdGltZSBjbG9zaW5nCi0gIGFsbCBwb3NzaWJsZSBmaWxlIGRlc2NyaXB0b3JzIGluIHRoZSBjaGlsZCBwcm9jZXNzIHJhdGhlciB0aGFuIGp1c3Qgb3BlbgotICBmaWxlIGRlc2NyaXB0b3JzLiAgSXQgbm93IGNsb3NlcyBvbmx5IHRoZSBvcGVuIGZkcyBpZiBwb3NzaWJsZSBmb3IgdGhlCi0gIGRlZmF1bHQgY2xvc2VfZmRzPVRydWUgYmVoYXZpb3IuCi0KLS0gSXNzdWUgIzEzNjI5OiBSZW51bWJlciB0aGUgdG9rZW5zIGluIHRva2VuLmggc28gdGhhdCB0aGV5IG1hdGNoIHRoZSBpbmRleGVzCi0gIGludG8gX1B5UGFyc2VyX1Rva2VuTmFtZXMuCi0KLS0gSXNzdWUgIzEzNzUyOiBBZGQgYSBjYXNlZm9sZCgpIG1ldGhvZCB0byBzdHIuCi0KLS0gSXNzdWUgIzEzNzYxOiBBZGQgYSAiZmx1c2giIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHByaW50KCkgZnVuY3Rpb24sCi0gIHVzZWQgdG8gZW5zdXJlIGZsdXNoaW5nIHRoZSBvdXRwdXQgc3RyZWFtLgotCi0tIElzc3VlICMxMzY0NTogcHljIGZpbGVzIG5vdyBjb250YWluIHRoZSBzaXplIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZQotICBjb2RlLCB0byBhdm9pZCB0aW1lc3RhbXAgY29sbGlzaW9ucyAoZXNwZWNpYWxseSBvbiBmaWxlc3lzdGVtcyB3aXRoIGEgbG93Ci0gIHRpbWVzdGFtcCByZXNvbHV0aW9uKSB3aGVuIGNoZWNraW5nIGZvciBmcmVzaG5lc3Mgb2YgdGhlIGJ5dGVjb2RlLgotCi0tIFBFUCAzODAsIElzc3VlICMxMTY4MjogQWRkICJ5aWVsZCBmcm9tIDx4PiIgdG8gc3VwcG9ydCBlYXN5IGRlbGVnYXRpb24gdG8KLSAgc3ViZ2VuZXJhdG9ycyAoaW5pdGlhbCBwYXRjaCBieSBHcmVnIEV3aW5nLCBpbnRlZ3JhdGlvbiBpbnRvIDMuMyBieQotICBSZW5hdWQgQmxhbmNoLCBSeWFuIEtlbGx5LCBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGFuZCBOaWNrIENvZ2hsYW4pCi0KLS0gSXNzdWUgIzEzNzQ4OiBSYXcgYnl0ZXMgbGl0ZXJhbHMgY2FuIG5vdyBiZSB3cml0dGVuIHdpdGggdGhlIGBgcmJgYCBwcmVmaXgKLSAgYXMgd2VsbCBhcyBgYGJyYGAuCi0KLS0gSXNzdWUgIzEyNzM2OiBVc2UgZnVsbCB1bmljb2RlIGNhc2UgbWFwcGluZ3MgZm9yIHVwcGVyLCBsb3dlciwgYW5kIHRpdGxlIGNhc2UuCi0KLS0gSXNzdWUgIzEyNzYwOiBBZGQgYSBjcmVhdGUgbW9kZSB0byBvcGVuKCkuIFBhdGNoIGJ5IERhdmlkIFRvd25zaGVuZC4KLQotLSBJc3N1ZSAjMTM3Mzg6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGJ5dGVzLmxvd2VyKCkgYW5kIGJ5dGVzLnVwcGVyKCkuCi0KLS0gSXNzdWUgIzEzNTc3OiBCdWlsdC1pbiBtZXRob2RzIGFuZCBmdW5jdGlvbnMgbm93IGhhdmUgYSBfX3F1YWxuYW1lX18uCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjNjY5NTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcnVucyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0IG9mIHNldAotICBvYmplY3RzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXR0aGlhcyBUcm9mZmFlcy4KLQotLSBGaXggT1NFcnJvci5fX2luaXRfXyBhbmQgT1NFcnJvci5fX25ld19fIHNvIHRoYXQgZWFjaCBvZiB0aGVtIGNhbiBiZQotICBvdmVycmlkZW4gYW5kIHRha2UgYWRkaXRpb25hbCBhcmd1bWVudHMgKGZvbGxvd3VwIHRvIGlzc3VlICMxMjU1NSkuCi0KLS0gRml4IHRoZSBmaXggZm9yIGlzc3VlICMxMjE0OTogaXQgd2FzIGluY29ycmVjdCwgYWx0aG91Z2ggaXQgaGFkIHRoZSBzaWRlCi0gIGVmZmVjdCBvZiBhcHBlYXJpbmcgdG8gcmVzb2x2ZSB0aGUgaXNzdWUuICBUaGFua3MgdG8gTWFyayBTaGFubm9uIGZvcgotICBub3RpY2luZy4KLQotLSBJc3N1ZSAjMTM1MDU6IFBpY2tsZSBieXRlcyBvYmplY3RzIGluIGEgd2F5IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoCi0gIFB5dGhvbiAyIHdoZW4gdXNpbmcgcHJvdG9jb2xzIDw9IDIuCi0KLS0gSXNzdWUgIzExMTQ3OiBGaXggYW4gdW51c2VkIGFyZ3VtZW50IGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIuICAoRml4Ci0gIGdpdmVuIGJ5IENhbXBiZWxsIEJhcnRvbikuCi0KLS0gSXNzdWUgIzEzNTAzOiBVc2UgYSBtb3JlIGVmZmljaWVudCByZWR1Y3Rpb24gZm9ybWF0IGZvciBieXRlYXJyYXlzIHdpdGgKLSAgcGlja2xlIHByb3RvY29sID49IDMuICBUaGUgb2xkIHJlZHVjdGlvbiBmb3JtYXQgaXMga2VwdCB3aXRoIG9sZGVyIHByb3RvY29scwotICBpbiBvcmRlciB0byBhbGxvdyB1bnBpY2tsaW5nIHVuZGVyIFB5dGhvbiAyLiAgUGF0Y2ggYnkgSXJtZW4gZGUgSm9uZy4KLQotLSBJc3N1ZSAjNzExMTogUHl0aG9uIGNhbiBub3cgYmUgcnVuIHdpdGhvdXQgYSBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVycgotICBzdHJlYW0uICBJdCB3YXMgYWxyZWFkeSB0aGUgY2FzZSB3aXRoIFB5dGhvbiAyLiAgSG93ZXZlciwgdGhlIGNvcnJlc3BvbmRpbmcKLSAgc3lzIG1vZHVsZSBlbnRyaWVzIGFyZSBub3cgc2V0IHRvIE5vbmUgKGluc3RlYWQgb2YgYW4gdW51c2FibGUgZmlsZSBvYmplY3QpLgotCi0tIElzc3VlICMxMTg0OTogRW5zdXJlIHRoYXQgZnJlZSgpZCBtZW1vcnkgYXJlbmFzIGFyZSByZWFsbHkgcmVsZWFzZWQKLSAgb24gUE9TSVggc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkgbWFwcGluZ3MuICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gUEVQIDMxNTUgLyBpc3N1ZSAjMTM0NDg6IFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzEzNDM2OiBGaXggYSBib2d1cyBlcnJvciBtZXNzYWdlIHdoZW4gYW4gQVNUIG9iamVjdCB3YXMgcGFzc2VkCi0gIGFuIGludmFsaWQgaW50ZWdlciB2YWx1ZS4KLQotLSBJc3N1ZSAjMTM0MTE6IG1lbW9yeXZpZXcgb2JqZWN0cyBhcmUgbm93IGhhc2hhYmxlIHdoZW4gdGhlIHVuZGVybHlpbmcKLSAgb2JqZWN0IGlzIGhhc2hhYmxlLgotCi0tIElzc3VlICMxMzMzODogSGFuZGxlIGFsbCBlbnVtZXJhdGlvbnMgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUgotICB0byBhbGxvdyBjb21waWxpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCAtV3N3aXRjaC1lbnVtIG9uIGdjYy4KLSAgSW5pdGlhbCBwYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KLQotLSBJc3N1ZSAjMTAyMjc6IEFkZCBhbiBhbGxvY2F0aW9uIGNhY2hlIGZvciBhIHNpbmdsZSBzbGljZSBvYmplY3QuICBQYXRjaCBieQotICBTdGVmYW4gQmVobmVsLgotCi0tIElzc3VlICMxMzM5MzogQnVmZmVyZWRSZWFkZXIucmVhZDEoKSBub3cgYXNrcyB0aGUgZnVsbCByZXF1ZXN0ZWQgc2l6ZSB0bwotICB0aGUgcmF3IHN0cmVhbSBpbnN0ZWFkIG9mIGxpbWl0aW5nIGl0c2VsZiB0byB0aGUgYnVmZmVyIHNpemUuCi0KLS0gSXNzdWUgIzEzMzkyOiBXcml0aW5nIGEgcHljIGZpbGUgc2hvdWxkIG5vdyBiZSBhdG9taWMgdW5kZXIgV2luZG93cyBhcyB3ZWxsLgotCi0tIElzc3VlICMxMzMzMzogVGhlIFVURi03IGRlY29kZXIgbm93IGFjY2VwdHMgbG9uZSBzdXJyb2dhdGVzICh0aGUgZW5jb2RlcgotICBhbHJlYWR5IGFjY2VwdHMgdGhlbSkuCi0KLS0gSXNzdWUgIzEzMzg5OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXNzZXMgbm93IGNsZWFyIHRoZSBmcmVlbGlzdHMgZm9yCi0gIGxpc3QgYW5kIGRpY3Qgb2JqZWN0cy4gIFRoZXkgYWxyZWFkeSBjbGVhcmVkIG90aGVyIGZyZWVsaXN0cyBpbiB0aGUKLSAgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzEzMzI3OiBSZW1vdmUgdGhlIG5lZWQgZm9yIGFuIGV4cGxpY2l0IE5vbmUgYXMgdGhlIHNlY29uZCBhcmd1bWVudAotICB0byBvcy51dGltZSwgb3MubHV0aW1lcywgb3MuZnV0aW1lcywgb3MuZnV0aW1lbnMsIG9zLmZ1dGltZXNhdCwgaW4KLSAgb3JkZXIgdG8gdXBkYXRlIHRvIHRoZSBjdXJyZW50IHRpbWUuIEFsc28gYWRkZWQga2V5d29yZCBhcmd1bWVudAotICBoYW5kbGluZyB0byBvcy51dGltZW5zYXQgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSBuZWVkIGZvciBleHBsaWNpdCBOb25lLgotCi0tIElzc3VlICMxMzM1MDogU2ltcGxpZnkgc29tZSBDIGNvZGUgYnkgcmVwbGFjaW5nIG1vc3QgdXNhZ2VzIG9mCi0gIFB5VW5pY29kZV9Gb3JtYXQgYnkgUHlVbmljb2RlX0Zyb21Gb3JtYXQuCi0KLS0gSXNzdWUgIzEzMzQyOiBpbnB1dCgpIHVzZWQgdG8gaWdub3JlIHN5cy5zdGRpbidzIGFuZCBzeXMuc3Rkb3V0J3MgdW5pY29kZQotICBlcnJvciBoYW5kbGVyIGluIGludGVyYWN0aXZlIG1vZGUgKHdoZW4gY2FsbGluZyBpbnRvIFB5T1NfUmVhZGxpbmUoKSkuCi0KLS0gSXNzdWUgIzk4OTY6IEFkZCBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXR0cmlidXRlcyB0byByYW5nZSBvYmplY3RzLgotCi0tIElzc3VlICMxMzM0MzogRml4IGEgU3lzdGVtRXJyb3Igd2hlbiBhIGxhbWJkYSBleHByZXNzaW9uIHVzZXMgYSBnbG9iYWwKLSAgdmFyaWFibGUgaW4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6IGBgbGFtYmRhICosCi0gIGFyZz1HTE9CQUxfTkFNRTogTm9uZWBgCi0KLS0gSXNzdWUgIzEyNzk3OiBBZGRlZCBjdXN0b20gb3BlbmVyIHBhcmFtZXRlciB0byBidWlsdGluIG9wZW4oKSBhbmQKLSAgRmlsZUlPLm9wZW4oKS4KLQotLSBJc3N1ZSAjMTA1MTk6IEF2b2lkIHVubmVjZXNzYXJ5IHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBpbgotICBzZXRvYmplY3QuYy4KLQotLSBJc3N1ZSAjMTAzNjM6IERlYWxsb2NhdGUgZ2xvYmFsIGxvY2tzIGluIFB5X0ZpbmFsaXplKCkuCi0KLS0gSXNzdWUgIzEzMDE4OiBGaXggcmVmZXJlbmNlIGxlYWtzIGluIGVycm9yIHBhdGhzIGluIGRpY3RvYmplY3QuYy4KLSAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KLQotLSBJc3N1ZSAjMTMyMDE6IERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0cyBiYXNlZCBvbgotICB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZyBiYXNlZCBvbgotICBvYmplY3QgaWRlbnRpdHkpLgotCi0tIElzc3VlICMxMjk0MjMyOiBJbiBhIGZldyBjYXNlcyBpbnZvbHZpbmcgbWV0YWNsYXNzIGluaGVyaXRhbmNlLCB0aGUKLSAgaW50ZXJwcmV0ZXIgd291bGQgc29tZXRpbWVzIGludm9rZSB0aGUgd3JvbmcgbWV0YWNsYXNzIHdoZW4gYnVpbGRpbmcgYSBuZXcKLSAgY2xhc3Mgb2JqZWN0LiBUaGVzZSBjYXNlcyBub3cgYmVoYXZlIGNvcnJlY3RseS4gUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICMxMjc1MzogQWRkIHN1cHBvcnQgZm9yIFVuaWNvZGUgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuCi0gIEJvdGggYGB1bmljb2RlZGF0YS5sb29rdXAoKWBgIGFuZCAnXE57Li4ufScgbm93IHJlc29sdmUgYWxpYXNlcywKLSAgYW5kIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCByZXNvbHZlcyBuYW1lZCBzZXF1ZW5jZXMgdG9vLgotCi0tIElzc3VlICMxMjE3MDogVGhlIGNvdW50KCksIGZpbmQoKSwgcmZpbmQoKSwgaW5kZXgoKSBhbmQgcmluZGV4KCkgbWV0aG9kcwotICBvZiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgbm93IGFjY2VwdCBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1Ci0gIGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LiAgUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzEyNjA0OiBWVFJBQ0UgbWFjcm8gZXhwYW5kZWQgdG8gbm8tb3AgaW4gX3NyZS5jIHRvIGF2b2lkIGNvbXBpbGVyCi0gIHdhcm5pbmdzLiBQYXRjaCBieSBKb3NoIFRyaXBsZXR0IGFuZCBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTIyODE6IFJld3JpdGUgdGhlIE1CQ1MgY29kZWMgdG8gaGFuZGxlIGNvcnJlY3RseSByZXBsYWNlIGFuZCBpZ25vcmUKLSAgZXJyb3IgaGFuZGxlcnMgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuIFRoZSBNQkNTIGNvZGVjIGlzIG5vdyBzdXBwb3J0aW5nIGFsbAotICBlcnJvciBoYW5kbGVycywgaW5zdGVhZCBvZiBvbmx5IHJlcGxhY2UgdG8gZW5jb2RlIGFuZCBpZ25vcmUgdG8gZGVjb2RlLgotCi0tIElzc3VlICMxMzE4ODogV2hlbiBjYWxsZWQgd2l0aG91dCBhbiBleHBsaWNpdCB0cmFjZWJhY2sgYXJndW1lbnQsCi0gIGdlbmVyYXRvci50aHJvdygpIG5vdyBnZXRzIHRoZSB0cmFjZWJhY2sgZnJvbSB0aGUgcGFzc2VkIGV4Y2VwdGlvbidzCi0gIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZS4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMzE0NjogV3JpdGluZyBhIHB5YyBmaWxlIGlzIG5vdyBhdG9taWMgdW5kZXIgUE9TSVguCi0KLS0gSXNzdWUgIzc4MzM6IEV4dGVuc2lvbiBtb2R1bGVzIGJ1aWx0IHVzaW5nIGRpc3R1dGlscyBvbiBXaW5kb3dzIHdpbGwgbm8KLSAgbG9uZ2VyIGluY2x1ZGUgYSAibWFuaWZlc3QiIHRvIHByZXZlbnQgdGhlbSBmYWlsaW5nIGF0IGltcG9ydCB0aW1lIGluIHNvbWUKLSAgZW1iZWRkZWQgc2l0dWF0aW9ucy4KLQotLSBQRVAgMzE1MSAvIGlzc3VlICMxMjU1NTogcmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gZXhjZXB0aW9uIGhpZXJhcmNoeS4KLQotLSBBZGQgaW50ZXJuYWwgQVBJIGZvciBzdGF0aWMgc3RyaW5ncyAoX1B5X2lkZW50aWZpZXIgZXQgYWwuKS4KLQotLSBJc3N1ZSAjMTMwNjM6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX05PX0RBVEEgKG51bWJlcmVkIDIzMiBhbmQgZGVzY3JpYmVkCi0gIGFzICJUaGUgcGlwZSBpcyBiZWluZyBjbG9zZWQiKSBpcyBub3cgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVQSVBFCi0gIChwcmV2aW91c2x5IEVJTlZBTCkuCi0KLS0gSXNzdWUgIzEyOTExOiBGaXggbWVtb3J5IGNvbnN1bXB0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHJlcHIoKSBvZiBodWdlCi0gIHR1cGxlcyBvciBsaXN0cy4KLQotLSBQRVAgMzkzOiBmbGV4aWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24uIFRoYW5rcyB0byBUb3JzdGVuIEJlY2tlciBmb3IgdGhlCi0gIGluaXRpYWwgaW1wbGVtZW50YXRpb24sIGFuZCBWaWN0b3IgU3Rpbm5lciBmb3IgdmFyaW91cyBidWcgZml4ZXMuCi0KLS0gSXNzdWUgIzE0MDgxOiBUaGUgJ3NlcCcgYW5kICdtYXhzcGxpdCcgcGFyYW1ldGVyIHRvIHN0ci5zcGxpdCwgYnl0ZXMuc3BsaXQsCi0gIGFuZCBieXRlYXJyYXkuc3BsaXQgbWF5IG5vdyBiZSBwYXNzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzEzMDEyOiBUaGUgJ2tlZXBlbmRzJyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0bGluZXMgbWF5IG5vdyBiZSBwYXNzZWQKLSAgYXMgYSBrZXl3b3JkIGFyZ3VtZW50OiAibXlfc3RyaW5nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkiLiAgVGhlIHNhbWUKLSAgY2hhbmdlIGFsc28gYXBwbGllcyB0byBieXRlcy5zcGxpdGxpbmVzIGFuZCBieXRlYXJyYXkuc3BsaXRsaW5lcy4KLQotLSBJc3N1ZSAjNzczMjogRG9uJ3Qgb3BlbiBhIGRpcmVjdG9yeSBhcyBhIGZpbGUgYW55bW9yZSB3aGlsZSBpbXBvcnRpbmcgYQotICBtb2R1bGUuIElnbm9yZSB0aGUgZGlyZWNvdHJ5IGlmIGl0cyBuYW1lIG1hdGNocyB0aGUgbW9kdWxlIG5hbWUgKGUuZy4KLSAgIl9faW5pdF9fLnB5IikgYW5kIHJhaXNlIGEgSW1wb3J0RXJyb3IgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMTMwMjE6IE1pc3NpbmcgZGVjcmVmIG9uIGFuIGVycm9yIHBhdGguICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IKLSAgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTI5NzM6IEZpeCBvdmVyZmxvdyBjaGVja3MgdGhhdCByZWxpZWQgb24gdW5kZWZpbmVkIGJlaGF2aW91ciBpbgotICBsaXN0X3JlcGVhdCAobGlzdG9iamVjdC5jKSBhbmQgaXNsaWNlX25leHQgKGl0ZXJ0b29sc21vZHVsZS5jKS4gIFRoZXNlIGJ1Z3MKLSAgY2F1c2VkIHRlc3QgZmFpbHVyZXMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgQ2xhbmcuCi0KLS0gSXNzdWUgIzEyOTA0OiBvcy51dGltZSwgb3MuZnV0aW1lcywgb3MubHV0aW1lcywgYW5kIG9zLmZ1dGltZXNhdCBub3cgd3JpdGUKLSAgYXRpbWUgYW5kIG10aW1lIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24gb24gbW9kZXJuIFBPU0lYIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTI4MDI6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX0RJUkVDVE9SWSAobnVtYmVyZWQgMjY3KSBpcyBub3cKLSAgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVOT1RESVIgKHByZXZpb3VzbHkgRUlOVkFMKS4KLQotLSBJc3N1ZSAjOTIwMDogVGhlIHN0ci5pcyogbWV0aG9kcyBub3cgd29yayB3aXRoIHN0cmluZ3MgdGhhdCBjb250YWluIG5vbi1CTVAKLSAgY2hhcmFjdGVycyBldmVuIGluIG5hcnJvdyBVbmljb2RlIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTI3OTE6IEJyZWFrIHJlZmVyZW5jZSBjeWNsZXMgZWFybHkgd2hlbiBhIGdlbmVyYXRvciBleGl0cyB3aXRoCi0gIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTI3NzM6IE1ha2UgX19kb2NfXyBtdXRhYmxlIG9uIHVzZXItZGVmaW5lZCBjbGFzc2VzLgotCi0tIElzc3VlICMxMjc2NjogUmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gY3JlYXRpbmcgYSBjbGFzcyB3aXRoIGEgY2xhc3MgdmFyaWFibGUKLSAgdGhhdCBjb25mbGljdHMgd2l0aCBhIG5hbWUgaW4gX19zbG90c19fLgotCi0tIElzc3VlICMxMjI2NjogRml4IHN0ci5jYXBpdGFsaXplKCkgdG8gY29ycmVjdGx5IHVwcGVyY2FzZS9sb3dlcmNhc2UKLSAgdGl0bGVjYXNlZCBhbmQgY2FzZWQgbm9uLWxldHRlciBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxMjczMjogSW4gbmFycm93IHVuaWNvZGUgYnVpbGRzLCBhbGxvdyBVbmljb2RlIGlkZW50aWZpZXJzIHdoaWNoIGZhbGwKLSAgb3V0c2lkZSB0aGUgQk1QLgotCi0tIElzc3VlICMxMjU3NTogVmFsaWRhdGUgdXNlci1nZW5lcmF0ZWQgQVNUIGJlZm9yZSBpdCBpcyBjb21waWxlZC4KLQotLSBNYWtlIHR5cGUoTm9uZSksIHR5cGUoRWxsaXBzaXMpLCBhbmQgdHlwZShOb3RJbXBsZW1lbnRlZCkgY2FsbGFibGUuIFRoZXkKLSAgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHNpbmdsZXRvbiBpbnN0YW5jZXMuCi0KLS0gRm9yYmlkIHN1bW1pbmcgYnl0ZXMgd2l0aCBzdW0oKS4KLQotLSBWZXJpZnkgdGhlIHR5cGVzIG9mIEFTVCBzdHJpbmdzIGFuZCBpZGVudGlmaWVycyBwcm92aWRlZCBieSB0aGUgdXNlciBiZWZvcmUKLSAgY29tcGlsaW5nIHRoZW0uCi0KLS0gSXNzdWUgIzEyNjQ3OiBUaGUgTm9uZSBvYmplY3Qgbm93IGhhcyBhIF9fYm9vbF9fKCkgbWV0aG9kIHRoYXQgcmV0dXJucyBGYWxzZS4KLSAgRm9ybWVybHksIGJvb2woTm9uZSkgcmV0dXJuZWQgRmFsc2Ugb25seSBiZWNhdXNlIG9mIHNwZWNpYWwgY2FzZSBsb2dpYwotICBpbiBQeU9iamVjdF9Jc1RydWUoKS4KLQotLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCi0gIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQotICBKdWxpYW4gQmVybWFuLgotCi0tIElzc3VlICMxMDI3MTogQWxsb3cgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSBiZSBhbnkgY2FsbGFibGUuCi0KLS0gSXNzdWUgIzExNjI3OiBGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGEgZXhjZXB0aW9uIHJldHVybnMgYQotICBub24tZXhjZXB0aW9uIGNsYXNzLgotCi0tIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbmFyeSBnZXRzCi0gIGNsZWFyZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgVGhpcyBmaXhlcyBhIHNlZ2ZhdWx0IHdoZW4gYW4gaW5zdGFuY2UKLSAgYW5kIGl0cyB0eXBlIGdldCBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncwotICBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlIG1ldGhvZHMgb24gdGhlIHR5cGUgKGUuZy4gd2hlbiBzdWJjbGFzc2luZwotICBJT0Jhc2UpLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBEYXZpZGUgUml6em8uCi0KLS0gSXNzdWUgIzk2MTEsIElzc3VlICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KLQotLSBJc3N1ZSAjOTY0MjogVW5pZm9ybWl6ZSB0aGUgdGVzdHMgb24gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgbWJjcyBjb2RlYywgYWRkCi0gIGEgbmV3IEhBVkVfTUJDUyBkZWZpbmUuCi0KLS0gSXNzdWUgIzk2NDI6IEZpeCBmaWxlc3lzdGVtIGVuY29kaW5nIGluaXRpYWxpemF0aW9uOiB1c2UgdGhlIEFOU0kgY29kZSBwYWdlCi0gIG9uIFdpbmRvd3MgaWYgdGhlIG1iY3MgY29kZWMgaXMgbm90IGF2YWlsYWJsZSwgYW5kIGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmCi0gIHdlIGNhbm5vdCBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyAoaWYgbmxfbGFuZ2luZm8oQ09ERVNFVCkgaXMgbm90IGF2YWlsYWJsZSkKLSAgaW5zdGVhZCBvZiB1c2luZyBVVEYtOC4KLQotLSBXaGVuIGEgZ2VuZXJhdG9yIHlpZWxkcywgZG8gbm90IHJldGFpbiB0aGUgY2FsbGVyJ3MgZXhjZXB0aW9uIHN0YXRlIG9uIHRoZQotICBnZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzEyNDc1OiBQcmV2ZW50IGdlbmVyYXRvcnMgZnJvbSBsZWFraW5nIHRoZWlyIGV4Y2VwdGlvbiBzdGF0ZSBpbnRvIHRoZQotICBjYWxsZXIncyBmcmFtZSBhcyB0aGV5IHJldHVybiBmb3IgdGhlIGxhc3QgdGltZS4KLQotLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sCi0gIHdpdGggb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTIzNTY6IFdoZW4gcmVxdWlyZWQgcG9zaXRpb25hbCBvciBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBub3QKLSAgZ2l2ZW4sIHByb2R1Y2UgYSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIHdoaWNoIGluY2x1ZGVzIHRoZSBuYW1lKHMpIG9mIHRoZQotICBtaXNzaW5nIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTIzNzA6IEZpeCBzdXBlciB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIF9fY2xhc3NfXyBpcyBvdmVycmlkZW4gaW4gdGhlCi0gIGNsYXNzIGJvZHkuCi0KLS0gSXNzdWUgIzEyMDg0OiBvcy5zdGF0IG9uIFdpbmRvd3Mgbm93IHdvcmtzIHByb3Blcmx5IHdpdGggcmVsYXRpdmUgc3ltYm9saWMKLSAgbGlua3Mgd2hlbiBjYWxsZWQgZnJvbSBhbnkgZGlyZWN0b3J5LgotCi0tIExvb3NlbiB0eXBlIHJlc3RyaWN0aW9ucyBvbiB0aGUgX19kaXJfXyBtZXRob2QuIF9fZGlyX18gY2FuIG5vdyByZXR1cm4gYW55Ci0gIHNlcXVlbmNlLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIGxpc3QgYW5kIHNvcnRlZCBieSBkaXIoKS4KLQotLSBJc3N1ZSAjMTIyNjU6IE1ha2UgZXJyb3IgbWVzc2FnZXMgcHJvZHVjZWQgYnkgcGFzc2luZyBhbiBpbnZhbGlkIHNldCBvZgotICBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBtb3JlIGluZm9ybWF0aXZlLgotCi0tIElzc3VlICMxMjIyNTogU3RpbGwgYWxsb3cgUHl0aG9uIHRvIGJ1aWxkIGlmIFB5dGhvbiBpcyBub3QgaW4gaXRzIGhnIHJlcG8gb3IKLSAgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAotICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAotICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCi0KLS0gSXNzdWUgIzEyMjE2OiBBbGxvdyB1bmV4cGVjdGVkIEVPRiBlcnJvcnMgdG8gaGFwcGVuIG9uIGFueSBsaW5lIG9mIHRoZSBmaWxlLgotCi0tIElzc3VlICMxMjE5OTogVGhlIFRyeUV4Y2VwdCBhbmQgVHJ5RmluYWxseSBhbmQgQVNUIG5vZGVzIGhhdmUgYmVlbiB1bmlmaWVkCi0gIGludG8gYSBUcnkgbm9kZS4KLQotLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24KLSAgTWFjIE9TIFggYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhCi0gICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4KLSAgKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKLQotLSBJc3N1ZSAjMTIxMDY6IFRoZSB1c2Ugb2YgdGhlIG11bHRpcGxlLXdpdGggc2hvcnRoYW5kIHN5bnRheCBpcyBub3cgcmVmbGVjdGVkCi0gIGluIHRoZSBBU1QuCi0KLS0gSXNzdWUgIzEyMTkwOiBUcnkgdG8gdXNlIHRoZSBzYW1lIGZpbGVuYW1lIG9iamVjdCB3aGVuIGNvbXBpbGluZyB1bm1hcnNoYWxsaW5nCi0gIGEgY29kZSBvYmplY3RzIGluIHRoZSBzYW1lIGZpbGUuCi0KLS0gSXNzdWUgIzEyMTY2OiBNb3ZlIGltcGxlbWVudGF0aW9ucyBvZiBkaXIoKSBzcGVjaWFsaXplZCBmb3IgdmFyaW91cyB0eXBlcyBpbnRvCi0gIHRoZSBfX2Rpcl9fKCkgbWV0aG9kcyBvZiB0aG9zZSB0eXBlcy4KLQotLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KLQotLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCi0gIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCi0KLS0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAotICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxNzQ2NjU2OiBBZGRlZCB0aGUgaWZfbmFtZWluZGV4LCBpZl9pbmRleHRvbmFtZSwgaWZfbmFtZXRvaW5kZXgKLSAgbWV0aG9kcyB0byB0aGUgc29ja2V0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCi0gIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5Ci0gIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCi0KLS0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCi0gIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgotCi0tIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQotICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4KLSAgdGhleSB0cnkgdG8gdGFrZSB0aGUgR0lMLgotCi0tIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAotICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgotICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCi0gIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgotICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2gKLSAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMDkxNDogSW5pdGlhbGl6ZSBjb3JyZWN0bHkgdGhlIGZpbGVzeXN0ZW0gY29kZWMgd2hlbiBjcmVhdGluZyBhIG5ldwotICBzdWJpbnRlcnByZXRlciB0byBmaXggYSBib290c3RyYXAgaXNzdWUgd2l0aCBjb2RlY3MgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBhcwotICB0aGUgSVNPLTg4NTktMTUgY29kZWMuCi0KLS0gSXNzdWUgIzExOTE4OiBPUy8yIGFuZCBWTVMgYXJlIG5vIG1vcmUgc3VwcG9ydGVkIGJlY2F1c2Ugb2YgdGhlIGxhY2sgb2YKLSAgbWFpbnRhaW5lci4KLQotLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCi0gIGFjY2VwdGVkIHRvby4KLQotLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcwotICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAKLSAgY2hhcnMgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KLQotLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgotICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzU2NzM6IEFkZGVkIGEgYHRpbWVvdXRgIGtleXdvcmQgYXJndW1lbnQgdG8gc3VicHJvY2Vzcy5Qb3Blbi53YWl0LAotICBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlZCwgc3VicHJvY2Vzcy5jYWxsLCBzdWJwcm9jZXNzLmNoZWNrX2NhbGwsIGFuZAotICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dC4gIElmIHRoZSBibG9ja2luZyBvcGVyYXRpb24gdGFrZXMgbW9yZSB0aGFuIGB0aW1lb3V0YAotICBzZWNvbmRzLCB0aGUgYHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLS0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCi0gIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzkzMTk6IEluY2x1ZGUgdGhlIGZpbGVuYW1lIGluICJOb24tVVRGOCBjb2RlIC4uLiIgc3ludGF4IGVycm9yLgotCi0tIElzc3VlICMxMDc4NTogU3RvcmUgdGhlIGZpbGVuYW1lIGFzIFVuaWNvZGUgaW4gdGhlIFB5dGhvbiBwYXJzZXIuCi0KLS0gSXNzdWUgIzExNjE5OiBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoKSBkb2Vzbid0IGVuY29kZSB0aGUgcGF0aCB0byBieXRlcwotICBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxMDk5ODogUmVtb3ZlIG1lbnRpb25zIG9mIC1RLCBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyBhbmQKLSAgUHlfRGl2aXNpb25XYXJuaW5nRmxhZyBsZWZ0IG92ZXIgZnJvbSBQeXRob24gMi4KLQotLSBJc3N1ZSAjMTEyNDQ6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBwZWVwaG9sZXIgY2hlY2sgdGhhdCB3YXMgcHJldmVudGluZwotICBuZWdhdGl2ZSB6ZXJvcyBmcm9tIGJlaW5nIGNvbnN0YW50LWZvbGRlZCBwcm9wZXJseS4KLQotLSBJc3N1ZSAjMTEzOTU6IGlvLkZpbGVJTygpLndyaXRlKCkgY2xhbXBzIHRoZSBkYXRhIGxlbmd0aCB0byAzMiw3NjcgYnl0ZXMgb24KLSAgV2luZG93cyBpZiB0aGUgZmlsZSBpcyBhIFRUWSB0byB3b3JrYXJvdW5kIGEgV2luZG93cyBidWcuIFRoZSBXaW5kb3dzIGNvbnNvbGUKLSAgcmV0dXJucyBhbiBlcnJvciAoMTI6IG5vdCBlbm91Z2ggc3BhY2UgZXJyb3IpIG9uIHdyaXRpbmcgaW50byBzdGRvdXQgaWYKLSAgc3Rkb3V0IG1vZGUgaXMgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCi0gIGRlcGVuZGluZyBvbiBoZWFwIHVzYWdlKS4KLQotLSBJc3N1ZSAjMTEzMjA6IGZpeCBib2d1cyBtZW1vcnkgbWFuYWdlbWVudCBpbiBNb2R1bGVzL2dldHBhdGguYywgbGVhZGluZyB0bwotICBhIHBvc3NpYmxlIGNyYXNoIHdoZW4gY2FsbGluZyBQeV9TZXRQYXRoKCkuCi0KLS0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAotICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCi0gIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KLQotLSBJc3N1ZSAjOTg1NjogQ2hhbmdlIG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZwotICB0byBiZSBhIERlcHJlY2F0aW9uV2FybmluZy4gSW4gMy4yIGl0IHdhcyBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCi0gIEluIDMuNCBpdCB3aWxsIGJlIGEgVHlwZUVycm9yLgotCi0tIElzc3VlICMxMTI0NDogVGhlIHBlZXBob2xlIG9wdGltaXplciBpcyBub3cgYWJsZSB0byBjb25zdGFudC1mb2xkCi0gIGFyYml0cmFyaWx5IGNvbXBsZXggZXhwcmVzc2lvbnMuICBUaGlzIGFsc28gZml4ZXMgYSAzLjIgcmVncmVzc2lvbiB3aGVyZQotICBvcGVyYXRpb25zIGludm9sdmluZyBuZWdhdGl2ZSBudW1iZXJzIHdlcmUgbm90IGNvbnN0YW50LWZvbGRlZC4KLQotLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuCi0gIHRoZXJlIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExMzM1OiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIGxpc3Quc29ydCB3aGVuIHRoZSBrZXkgZnVuY3Rpb24KLSAgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjODkyMzogV2hlbiBhIHN0cmluZyBpcyBlbmNvZGVkIHRvIFVURi04IGluIHN0cmljdCBtb2RlLCB0aGUgcmVzdWx0IGlzCi0gIGNhY2hlZCBpbnRvIHRoZSBvYmplY3QuIEV4YW1wbGVzOiBzdHIuZW5jb2RlKCksIHN0ci5lbmNvZGUoJ3V0Zi04JyksCi0gIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBhbmQgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLCAidXRmLTgiLAotICBOVUxMKS4KLQotLSBJc3N1ZSAjMTA4Mjk6IFJlZmFjdG9yIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCksIHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0byBwYXJzZQotICB0aGUgZm9ybWF0IHN0cmluZyBpbiB0aGUgMyBzdGVwcywgZml4IGNyYXNocyBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzLgotCi0tIElzc3VlICMxMzAwNzogd2hpY2hkYiBzaG91bGQgcmVjb2duaXplIGdkYm0gMS45IG1hZ2ljIG51bWJlcnMuCi0KLS0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGgKLSAgYSBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgotCi0tIElzc3VlICMxMTI3MjogT24gV2luZG93cywgaW5wdXQoKSBzdHJpcHMgJ1xyJyAoYW5kIG5vdCBvbmx5ICdcbicpLCBhbmQKLSAgc3lzLnN0ZGluIHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgKHJlcGxhY2UgJ1xyXG4nIGJ5ICdcbicpLgotCi0tIElzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggbm93IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LgotICBQYXRjaCBieSBUb3JzdGVuIEJlY2tlci4KLQotLSBJc3N1ZSAjMTExNjg6IFJlbW92ZSBmaWxlbmFtZSBkZWJ1ZyB2YXJpYWJsZSBmcm9tIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgotICBJdCBlbmNvZGVkIHRoZSBVbmljb2RlIGZpbGVuYW1lIHRvIFVURi04LCBidXQgdGhlIGVuY29kaW5nIGZhaWxzIG9uCi0gIHVuZGVjb2RhYmxlIGZpbGVuYW1lIChvbiBzdXJyb2dhdGUgY2hhcmFjdGVycykgd2hpY2ggcmFpc2VzIGFuIHVuZXhwZWN0ZWQKLSAgVW5pY29kZUVuY29kZUVycm9yIG9uIHJlY3Vyc2lvbiBsaW1pdC4KLQotLSBJc3N1ZSAjMTExODc6IFJlbW92ZSBib290c3RyYXAgY29kZSAodXNlIEFTQ0lJKSBvZgotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCksIGl0IHdhcyByZXBsYWNlZCBieSBhIGJldHRlciBmYWxsYmFjayAodXNlIHRoZQotICBsb2NhbGUgZW5jb2RpbmcpIGluIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKS4KLQotLSBDaGVjayBmb3IgTlVMTCByZXN1bHQgaW4gUHlUeXBlX0Zyb21TcGVjLgotCi0tIElzc3VlICMxMDUxNjogTmV3IGNvcHkoKSBhbmQgY2xlYXIoKSBtZXRob2RzIGZvciBsaXN0cyBhbmQgYnl0ZWFycmF5cy4KLQotLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCi0gIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCi0KLS0gSXNzdWUgIzEyMzgwOiBUaGUgcmp1c3QsIGxqdXN0IGFuZCBjZW50ZXIgbWV0aG9kcyBvZiBieXRlcyBhbmQgYnl0ZWFycmF5Ci0gIG5vdyBhY2NlcHQgYSBieXRlYXJyYXkgYXJndW1lbnQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKLSAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCi0gIGZpeGVkLgotCi0tIElzc3VlICMxNDE2NjogUGlja2xlciBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsIGBgZGlzcGF0Y2hfdGFibGVgYAotICBhdHRyaWJ1dGUgd2hpY2ggYWxsb3dzIHRvIHNldCBjdXN0b20gcGVyLXBpY2tsZXIgcmVkdWN0aW9uIGZ1bmN0aW9ucy4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQotICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTM1NTA6IFJlbW92ZSB0aGUgZGVidWcgbWFjaGluZXJ5IGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGU6IHJlbW92ZQotICB2ZXJib3NlIGFyZ3VtZW50cyBmcm9tIGFsbCB0aHJlYWRpbmcgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNDE1OTogRml4IHRoZSBsZW4oKSBvZiB3ZWFrIGNvbnRhaW5lcnMgKFdlYWtTZXQsIFdlYWtLZXlEaWN0aW9uYXJ5LAotICBXZWFrVmFsdWVEaWN0aW9uYXJ5KSB0byByZXR1cm4gYSBiZXR0ZXIgYXBwcm94aW1hdGlvbiB3aGVuIHNvbWUgb2JqZWN0cwotICBhcmUgZGVhZCBvciBkeWluZy4gIE1vcmVvdmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm93IE8oMSkgcmF0aGVyIHRoYW4KLSAgTyhuKS4KLQotLSBJc3N1ZSAjMTE4NDE6IEZpeCBjb21wYXJpc29uIGJ1ZyB3aXRoICdyYycgdmVyc2lvbnMgaW4gcGFja2FnaW5nLnZlcnNpb24uCi0gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscwotICBvbiBXaW5kb3dzLiAgQWxzbyBmaXhlZCBpbiBwYWNrYWdpbmcuCi0KLS0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucwotICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KLQotLSBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBzbGFzaGVzIGluIHRoZSBzdGFydCB0YWcuCi0KLS0gSXNzdWUgIzEzNjQxOiBEZWNvZGluZyBmdW5jdGlvbnMgaW4gdGhlIGJhc2U2NCBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5Ci0gIHVuaWNvZGUgc3RyaW5ncy4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCi0KLS0gSXNzdWUgIzE0MDQzOiBTcGVlZCB1cCBpbXBvcnRsaWIncyBfRmlsZUZpbmRlciBieSBhdCBsZWFzdCA4eCwgYW5kIGFkZCBhCi0gIG5ldyBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTQwMDE6IENWRS0yMDEyLTA4NDU6IHhtbHJwYzogRml4IGFuIGVuZGxlc3MgbG9vcCBpbgotICBTaW1wbGVYTUxSUENTZXJ2ZXIgdXBvbiBtYWxmb3JtZWQgUE9TVCByZXF1ZXN0LgotCi0tIElzc3VlICMxMzk2MTogTW92ZSBpbXBvcnRsaWIgb3ZlciB0byB1c2luZyBvcy5yZXBsYWNlKCkgZm9yIGF0b21pYyByZW5hbWluZy4KLQotLSBEbyBhd2F5IHdpdGggYW1iaWd1b3VzIGxldmVsIHZhbHVlcyAoYXMgc3VnZ2VzdGVkIGJ5IFBFUCAzMjgpIGluCi0gIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgYnkgcmFpc2luZyBWYWx1ZUVycm9yIHdoZW4gbGV2ZWwgPCAwLgotCi0tIElzc3VlICMyNDg5OiBwdHkuc3Bhd24gY291bGQgY29uc3VtZSAxMDAlIGNwdSB3aGVuIGl0IGVuY291bnRlcmVkIGFuIEVPRi4KLQotLSBJc3N1ZSAjMTMwMTQ6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgotCi0tIElzc3VlICMxMzc3NzogQWRkIFBGX1NZU1RFTSBzb2NrZXRzIG9uIE9TIFguCi0gIFBhdGNoIGJ5IE1pY2hhZWwgR29kZXJiYXVlci4KLQotLSBJc3N1ZSAjMTMwMTU6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIGRlZmF1bHRkaWN0Ll9fcmVwcl9fLgotICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGFuZCBwYWNrYWdpbmcncyBidWlsZF9leHQgY29tbWFuZHMgb3B0aW9uIG5vdwotICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyAoc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzKSBnaXZlbgotICB0byB0aGVpciAtLWxpYnJhcmllcyBvcHRpb24uCi0KLS0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgZmlyc3QgYmVmb3JlCi0gIHNlbmRpbmcgTU9ERSBSRUFERVIsIGFuZCBvbmx5IHNlbmRzIGl0IGlmIG5vdCBhbHJlYWR5IGluIFJFQURFUiBtb2RlLgotICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzOTkzOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gZW5kIHRhZ3Mgd2hlbgotICBzdHJpY3Q9RmFsc2UuCi0KLS0gSXNzdWUgIzEzOTMwOiBsaWIydG8zIG5vdyBzdXBwb3J0cyB3cml0aW5nIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgotICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQotICBzdWZmaXguCi0KLS0gSXNzdWUgIzk3NTA6IEZpeCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgb24gdGFibGVzIGFuZCBmaWVsZHMKLSAgd2l0aCBhIG5hbWUgdGhhdCBpcyBhIGtleXdvcmQgb3IgY29udGFpbnMgcXVvdGVzLiBQYXRjaCBieSBNYXJrbwotICBLb2h0YWxhLgotCi0tIElzc3VlICMxMDI4Nzogbm50cGxpYiBub3cgcXVlcmllcyB0aGUgc2VydmVyJ3MgQ0FQQUJJTElUSUVTIGFnYWluIGFmdGVyCi0gIGF1dGhlbnRpY2F0aW5nIChzaW5jZSB0aGUgcmVzdWx0IG1heSBjaGFuZ2UsIGFjY29yZGluZyB0byBSRkMgNDY0MykuCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTM1OTA6IE9uIE9TIFggMTAuNyBhbmQgMTAuNiB3aXRoIFhjb2RlIDQuMiwgYnVpbGRpbmcKLSAgRGlzdHV0aWxzLWJhc2VkIHBhY2thZ2VzIHdpdGggQyBleHRlbnNpb24gbW9kdWxlcyBtYXkgZmFpbCBiZWNhdXNlCi0gIEFwcGxlIGhhcyByZW1vdmVkIGdjYy00LjIsIHRoZSB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgcHl0aG9uLm9yZwotICA2NC1iaXQvMzItYml0IFB5dGhvbnMuICBJZiB0aGUgdXNlciBkb2VzIG5vdCBleHBsaWNpdGx5IG92ZXJyaWRlCi0gIHRoZSBkZWZhdWx0IEMgY29tcGlsZXIgYnkgc2V0dGluZyB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUsCi0gIERpc3R1dGlscyB3aWxsIG5vdyBhdHRlbXB0IHRvIGNvbXBpbGUgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBjbGFuZwotICBpZiBnY2MtNC4yIGlzIHJlcXVpcmVkIGJ1dCBub3QgZm91bmQuIEFsc28gYXMgYSBjb252ZW5pZW5jZSwgaWYKLSAgdGhlIHVzZXIgZG9lcyBleHBsaWNpdGx5IHNldCBDQywgc3Vic3RpdHV0ZSBpdHMgdmFsdWUgYXMgdGhlIGRlZmF1bHQKLSAgY29tcGlsZXIgaW4gdGhlIERpc3R1dGlscyBMRFNIQVJFRCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGZvciBPUyBYLgotICAoTm90ZSwgdGhlIHB5dGhvbi5vcmcgMzItYml0LW9ubHkgUHl0aG9ucyB1c2UgZ2NjLTQuMCBhbmQgdGhlIDEwLjR1Ci0gIFNESywgbmVpdGhlciBvZiB3aGljaCBhcmUgYXZhaWxhYmxlIGluIFhjb2RlIDQuICBUaGlzIGNoYW5nZSBkb2VzIG5vdAotICBhdHRlbXB0IHRvIG92ZXJyaWRlIHNldHRpbmdzIHRvIHN1cHBvcnQgdGhlaXIgdXNlIHdpdGggWGNvZGUgNC4pCi0KLS0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgotICBzdHJpY3Q9RmFsc2UuCi0KLS0gV2hlbiAnJyBpcyBhIHBhdGggKGUuZy4gaW4gc3lzLnBhdGgpLCBtYWtlIHN1cmUgX19maWxlX18gdXNlcyB0aGUgY3VycmVudAotICB3b3JraW5nIGRpcmVjdG9yeSBpbnN0ZWFkIG9mICcnIGluIGltcG9ydGxpYi4KLQotLSBJc3N1ZSAjMTM2MDk6IEFkZCB0d28gZnVuY3Rpb25zIHRvIHF1ZXJ5IHRoZSB0ZXJtaW5hbCBzaXplOgotICBvcy5nZXRfdGVybWluYWxfc2l6ZSAobG93IGxldmVsKSBhbmQgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIChoaWdoIGxldmVsKS4KLSAgUGF0Y2ggYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lay4KLQotLSBJc3N1ZSAjMTM4NDU6IE9uIFdpbmRvd3MsIHRpbWUudGltZSgpIG5vdyB1c2VzIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkKLSAgaW5zdGVhZCBvZiBmdGltZSgpIHRvIGhhdmUgYSByZXNvbHV0aW9uIG9mIDEwMCBucyBpbnN0ZWFkIG9mIDEgbXMgKHRoZSBjbG9jawotICBhY2N1cmFjeSBpcyBiZXR3ZWVuIDAuNSBtcyBhbmQgMTUgbXMpLgotCi0tIElzc3VlICMxMzg0NjogQWRkIHRpbWUubW9ub3RvbmljKCksIG1vbm90b25pYyBjbG9jay4KLQotLSBJc3N1ZSAjODE4NDogbXVsdGlwcm9jZXNzaW5nOiBPbiBXaW5kb3dzLCBkb24ndCBzZXQgU09fUkVVU0VBRERSIG9uCi0gIENvbm5lY3Rpb24gc29ja2V0cywgYW5kIHNldCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSBvbiBuYW1lZCBwaXBlcywgdG8KLSAgbWFrZSBzdXJlIHR3byBsaXN0ZW5lcnMgY2FuJ3QgYmluZCB0byB0aGUgc2FtZSBzb2NrZXQvcGlwZSAob3IgYW55IGV4aXN0aW5nCi0gIHNvY2tldC9waXBlKS4KLQotLSBJc3N1ZSAjMTA4MTE6IEZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywKLSAgcmFpc2UgYSBQcm9ncmFtbWluZ0Vycm9yIG5vdy4KLQotLSBJc3N1ZSAjMTM3MzQ6IEFkZCBvcy5md2FsaygpLCBhIGRpcmVjdG9yeSB3YWxraW5nIGZ1bmN0aW9uIHlpZWxkaW5nIGZpbGUKLSAgZGVzY3JpcHRvcnMuCi0KLS0gSXNzdWUgIzI5NDU6IE1ha2UgdGhlIGRpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBhd2FyZSBvZiBiZGlzdF9ycG0gcHJvZHVjdHMuCi0KLS0gSXNzdWUgIzEzNzEyOiBweXNldHVwIGNyZWF0ZSBzaG91bGQgbm90IGNvbnZlcnQgcGFja2FnZV9kYXRhIHRvIGV4dHJhX2ZpbGVzLgotCi0tIElzc3VlICMxMTgwNTogcGFja2FnZV9kYXRhIGluIHNldHVwLmNmZyBzaG91bGQgYWxsb3cgbW9yZSB0aGFuIG9uZSB2YWx1ZS4KLQotLSBJc3N1ZSAjMTM2NzY6IEhhbmRsZSBzdHJpbmdzIHdpdGggZW1iZWRkZWQgemVyb3MgY29ycmVjdGx5IGluIHNxbGl0ZTMuCi0KLS0gSXNzdWUgIzg4Mjg6IEFkZCBuZXcgZnVuY3Rpb24gb3MucmVwbGFjZSgpLCBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcKLSAgd2l0aCBvdmVyd3JpdGluZy4KLQotLSBJc3N1ZSAjMTM4NDg6IG9wZW4oKSBhbmQgdGhlIEZpbGVJTyBjb25zdHJ1Y3RvciBub3cgY2hlY2sgZm9yIE5VTAotICBjaGFyYWN0ZXJzIGluIHRoZSBmaWxlIG5hbWUuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzODA2OiBUaGUgc2l6ZSBjaGVjayBpbiBhdWRpb29wIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zIHdhcyB0b28KLSAgc3RyaWN0IGFuZCBjb3VsZCByZWplY3QgdmFsaWQgY29tcHJlc3NlZCBkYXRhLiAgUGF0Y2ggYnkgT2xlZyBQbGFraG90bnl1ay4KLQotLSBJc3N1ZSAjMTM4MTI6IFdoZW4gYSBtdWx0aXByb2Nlc3NpbmcgUHJvY2VzcyBjaGlsZCByYWlzZXMgYW4gZXhjZXB0aW9uLAotICBmbHVzaCBzdGRlcnIgYWZ0ZXIgcHJpbnRpbmcgdGhlIGV4Y2VwdGlvbiB0cmFjZWJhY2suCi0KLS0gSXNzdWUgIzEzODg1OiBDVkUtMjAxMS0zMzg5OiB0aGUgX3NzbCBtb2R1bGUgd291bGQgYWx3YXlzIGRpc2FibGUgdGhlIENCQwotICBJViBhdHRhY2sgY291bnRlcm1lYXN1cmUuCi0KLS0gSXNzdWUgIzEzODQ3OiB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLmdtdGltZSgpIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQKLSAgb2YgVmFsdWVFcnJvciBvbiBmYWlsdXJlLiB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuYXNjdGltZSgpIG5vdyByYWlzZXMgYW4KLSAgT1NFcnJvciBpZiBsb2NhbHRpbWUoKSBmYWlsZWQuIHRpbWUuY2xvY2soKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQotICBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgb3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZAotCi0tIElzc3VlICMxMzc3MjogSW4gb3Muc3ltbGluaygpIHVuZGVyIFdpbmRvd3MsIGRvIG5vdCB0cnkgdG8gZ3Vlc3MgdGhlIGxpbmsKLSAgdGFyZ2V0J3MgdHlwZSAoZmlsZSBvciBkaXJlY3RvcnkpLiAgVGhlIGRldGVjdGlvbiB3YXMgYnVnZ3kgYW5kIG1hZGUgdGhlCi0gIGNhbGwgbm9uLWF0b21pYyAodGhlcmVmb3JlIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucykuCi0KLS0gSXNzdWUgIzY2MzE6IERpc2FsbG93IHJlbGF0aXZlIGZpbGUgcGF0aHMgaW4gdXJsbGliIHVybG9wZW4gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM3MjI6IEF2b2lkIHNpbGVuY2luZyBJbXBvcnRFcnJvcnMgd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvZGVjcwotICByZWdpc3RyeS4KLQotLSBJc3N1ZSAjMTM3ODE6IEZpeCBHemlwRmlsZSBidWcgdGhhdCBjYXVzZWQgYW4gZXhjZXB0aW9uIHRvIGJlIHJhaXNlZCB3aGVuCi0gIG9wZW5pbmcgZm9yIHdyaXRpbmcgdXNpbmcgYSBmaWxlb2JqIHJldHVybmVkIGJ5IG9zLmZkb3BlbigpLgotCi0tIElzc3VlICMxMzgwMzogVW5kZXIgU29sYXJpcywgZGlzdHV0aWxzIGRvZXNuJ3QgaW5jbHVkZSBiaXRuZXNzCi0gIGluIHRoZSBkaXJlY3RvcnkgbmFtZS4KLQotLSBJc3N1ZSAjMTAyNzg6IEFkZCB0aW1lLndhbGxjbG9jaygpIGZ1bmN0aW9uLCBtb25vdG9uaWMgY2xvY2suCi0KLS0gSXNzdWUgIzEzODA5OiBGaXggcmVncmVzc2lvbiB3aGVyZSBiejIgbW9kdWxlIHdvdWxkbid0IHdvcmsgd2hlbiB0aHJlYWRzIGFyZQotICBkaXNhYmxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzEzNTg5OiBGaXggc29tZSBzZXJpYWxpemF0aW9uIHByaW1pdGl2ZXMgaW4gdGhlIGFpZmMgbW9kdWxlLgotICBQYXRjaCBieSBPbGVnIFBsYWtob3RueXVrLgotCi0tIElzc3VlICMxMzY0MjogVW5xdW90ZSBiZWZvcmUgYjY0ZW5jb2RpbmcgdXNlcjpwYXNzd29yZCBkdXJpbmcgQmFzaWMKLSAgQXV0aGVudGljYXRpb24uIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEpvb25hcyBLdW9yaWxlaHRvLgotCi0tIElzc3VlICMxMjM2NDogRml4IGEgaGFuZyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KLSAgVGhlIGhhbmcgd291bGQgb2NjdXIgd2hlbiByZXRyaWV2aW5nIHRoZSByZXN1bHQgb2YgYSBzY2hlZHVsZWQgZnV0dXJlIGFmdGVyCi0gIHRoZSBleGVjdXRvciBoYWQgYmVlbiBzaHV0IGRvd24uCi0KLS0gSXNzdWUgIzEzNTAyOiB0aHJlYWRpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIEV2ZW50LndhaXQoKSB0aGF0IG1hZGUgaXQKLSAgcmV0dXJuIEZhbHNlIHdoZW4gdGhlIGV2ZW50IHdhcyBzZXQgYW5kIGNsZWFyZWQgcmlnaHQgYWZ0ZXIuCi0KLS0gSXNzdWUgIzk5OTM6IFdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcywKLSAgYW5kIHRoZSBzb3VyY2UgaXMgYSBzeW1saW5rLCBzaHV0aWwubW92ZSgpIG5vdyByZWNyZWF0ZXMgYSBzeW1saW5rIG9uIHRoZQotICBkZXN0aW5hdGlvbiBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlIGZpbGUgY29udGVudHMuICBQYXRjaCBieSBKb25hdGhhbiBOaWVob2YKLSAgYW5kIEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTI5MjY6IEZpeCBhIGJ1ZyBpbiB0YXJmaWxlJ3MgbGluayBleHRyYWN0aW9uLgotCi0tIElzc3VlICMxMzY5NjogRml4IHRoZSAzMDIgUmVsYXRpdmUgVVJMIFJlZGlyZWN0aW9uIHByb2JsZW0uCi0KLS0gSXNzdWUgIzEzNjM2OiBXZWFrIGNpcGhlcnMgYXJlIG5vdyBkaXNhYmxlZCBieSBkZWZhdWx0IGluIHRoZSBzc2wgbW9kdWxlCi0gIChleGNlcHQgd2hlbiBTU0x2MiBpcyBleHBsaWNpdGx5IGFza2VkIGZvcikuCi0KLS0gSXNzdWUgIzEyNzE1OiBBZGQgYW4gb3B0aW9uYWwgc3ltbGlua3MgYXJndW1lbnQgdG8gc2h1dGlsIGZ1bmN0aW9ucwotICAoY29weWZpbGUsIGNvcHltb2RlLCBjb3B5c3RhdCwgY29weSwgY29weTIpLiAgV2hlbiB0aGF0IHBhcmFtZXRlciBpcwotICB0cnVlLCBzeW1saW5rcyBhcmVuJ3QgZGVyZWZlcmVuY2VkIGFuZCB0aGUgb3BlcmF0aW9uIGluc3RlYWQgYWN0cyBvbiB0aGUKLSAgc3ltbGluayBpdHNlbGYgKG9yIGNyZWF0ZXMgb25lLCBpZiByZWxldmFudCkuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gQWRkIGEgZmxhZ3MgcGFyYW1ldGVyIHRvIHNlbGVjdC5lcG9sbC4KLQotLSBJc3N1ZSAjMTM2MjY6IEFkZCBzdXBwb3J0IGZvciBTU0wgRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLCB0aHJvdWdoIHRoZQotICBTU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zKCkgbWV0aG9kIGFuZCB0aGUgc3NsLk9QX1NJTkdMRV9ESF9VU0Ugb3B0aW9uLgotCi0tIElzc3VlICMxMTAwNjogRG9uJ3QgaXNzdWUgbG93IGxldmVsIHdhcm5pbmcgaW4gc3VicHJvY2VzcyB3aGVuIHBpcGUyKCkgZmFpbHMuCi0KLS0gSXNzdWUgIzEzNjIwOiBTdXBwb3J0IGZvciBDaHJvbWUgYnJvd3NlciBpbiB3ZWJicm93c2VyLiAgUGF0Y2ggY29udHJpYnV0ZWQKLSAgYnkgQXJuYXVkIENhbG1ldHRlcy4KLQotLSBJc3N1ZSAjMTE4Mjk6IEZpeCBjb2RlIGV4ZWN1dGlvbiBob2xlcyBpbiBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGZvcgotICBtZXRhY2xhc3NlcyB3aXRoIG1ldGFjbGFzc2VzLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEyNzA4OiBBZGQgc3Rhcm1hcCgpIGFuZCBzdGFybWFwX2FzeW5jKCkgbWV0aG9kcyAoc2ltaWxhciB0bwotICBpdGVydG9vbHMuc3Rhcm1hcCgpKSB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbC4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTc4NTogRml4IGluc3BlY3QgYW5kIHB5ZG9jIHdpdGggbWlzYmVoYXZpbmcgZGVzY3JpcHRvcnMuCi0KLS0gSXNzdWUgIzEzNjM3OiAiYTJiIiBmdW5jdGlvbnMgaW4gdGhlIGJpbmFzY2lpIG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKLSAgdW5pY29kZSBzdHJpbmdzLgotCi0tIElzc3VlICMxMzYzNDogQWRkIHN1cHBvcnQgZm9yIHF1ZXJ5aW5nIGFuZCBkaXNhYmxpbmcgU1NMIGNvbXByZXNzaW9uLgotCi0tIElzc3VlICMxMzYyNzogQWRkIHN1cHBvcnQgZm9yIFNTTCBFbGxpcHRpYyBDdXJ2ZS1iYXNlZCBEaWZmaWUtSGVsbG1hbgotICBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlIFNTTENvbnRleHQuc2V0X2VjZGhfY3VydmUoKSBtZXRob2QgYW5kIHRoZQotICBzc2wuT1BfU0lOR0xFX0VDREhfVVNFIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTM2MzU6IEFkZCBzc2wuT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBzbyB0aGF0IFNTTCBzZXJ2ZXJzCi0gIGNob29zZSB0aGUgY2lwaGVyIGJhc2VkIG9uIHRoZWlyIG93biBwcmVmZXJlbmNlcywgcmF0aGVyIHRoYW4gb24gdGhlCi0gIGNsaWVudCdzLgotCi0tIElzc3VlICMxMTgxMzogRml4IGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yIG1vZHVsZXMuIFBhdGNoIGJ5IEFuZHJlYXMKLSAgU3TDvGhyay4KLQotLSBJc3N1ZSAjNzUwMjogRml4IGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIERvY1Rlc3RDYXNlIGluc3RhbmNlcy4gIFBhdGNoIGJ5Ci0gIEPDqWRyaWMgS3JpZXIuCi0KLS0gSXNzdWUgIzExODcwOiB0aHJlYWRpbmc6IFByb3Blcmx5IHJlaW5pdGlhbGl6ZSB0aHJlYWRzIGludGVybmFsIGxvY2tzIGFuZAotICBjb25kaXRpb24gdmFyaWFibGVzIHRvIGF2b2lkIGRlYWRsb2NrcyBpbiBjaGlsZCBwcm9jZXNzZXMuCi0KLS0gSXNzdWUgIzgwMzU6IHVybGxpYjogRml4IGEgYnVnIHdoZXJlIHRoZSBjbGllbnQgY291bGQgcmVtYWluIHN0dWNrIGFmdGVyIGEKLSAgcmVkaXJlY3Rpb24gb3IgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzEzNTYwOiBvcy5zdHJlcnJvcigpIG5vdyB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mCi0gIFVURi04LgotCi0tIElzc3VlICM4MzczOiBUaGUgZmlsZXN5c3RlbSBwYXRoIG9mIEFGX1VOSVggc29ja2V0cyBub3cgdXNlcyB0aGUgZmlsZXN5c3RlbQotICBlbmNvZGluZyBhbmQgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLCByYXRoZXIgdGhhbiBVVEYtOC4gIFBhdGNoCi0gIGJ5IERhdmlkIFdhdHNvbi4KLQotLSBJc3N1ZSAjMTAzNTA6IFJlYWQgYW5kIHNhdmUgZXJybm8gYmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbiB3aGljaCBtaWdodAotICBvdmVyd3JpdGUgaXQuICBPcmlnaW5hbCBwYXRjaCBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi0tIElzc3VlICMxMTYxMDogSW50cm9kdWNlIGEgbW9yZSBnZW5lcmFsIHdheSB0byBkZWNsYXJlIGFic3RyYWN0IHByb3BlcnRpZXMuCi0KLS0gSXNzdWUgIzEzNTkxOiBBIGJ1ZyBpbiBpbXBvcnRsaWIgaGFzIGJlZW4gZml4ZWQgdGhhdCBjYXVzZWQgaW1wb3J0X21vZHVsZQotICB0byBsb2FkIGEgbW9kdWxlIHR3aWNlLgotCi0tIElzc3VlICMxMzQ0OSBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbWV0aG9kIGhhcyBhIG5ldyAiYmxvY2tpbmciIHBhcmFtZXRlciB3aGljaAotICB3aGVuIHNldCB0byBGYWxzZSBtYWtlcyBydW4oKSBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKLSAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4uICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2zDoC4KLQotLSBJc3N1ZSAjODY4NCBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCi0gIGVudmlyb25tZW50cy4gIFBhdGNoIGJ5IEpvc2lhaCBDYXJsc29uIGFuZCBHaWFtcGFvbG8gUm9kb2zDoC4KLQotLSBBbGlhcyByZXNvdXJjZS5lcnJvciB0byBPU0Vycm9yIGFsYSBQRVAgMzE1MS4KLQotLSBJc3N1ZSAjNTY4OTogQWRkIHN1cHBvcnQgZm9yIGx6bWEgY29tcHJlc3Npb24gdG8gdGhlIHRhcmZpbGUgbW9kdWxlLgotCi0tIElzc3VlICMxMzI0ODogVHVybiAzLjIncyBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGludG8gMy4zJ3MKLSAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSXQgY292ZXJzICdjZ2kuZXNjYXBlJywgJ2ltcG9ydGxpYi5hYmMuUHlMb2FkZXInLAotICAnaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcicsICdubnRwbGliLk5OVFAueGd0aXRsZScsICdubnRwbGliLk5OVFAueHBhdGgnLAotICBhbmQgcHJpdmF0ZSBhdHRyaWJ1dGVzIG9mICdzbXRwZC5TTVRQQ2hhbm5lbCcuCi0KLS0gSXNzdWUgIzU5MDUsIElzc3VlICMxMzU2MDogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgY3VycmVudCBsb2NhbGUKLSAgZW5jb2RpbmcsIGluc3RlYWQgb2YgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzEzNDY0OiBBZGQgYSByZWFkaW50bygpIG1ldGhvZCB0byBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UuICBQYXRjaAotICBieSBKb24gS3Vobi4KLQotLSB0YXJmaWxlLnB5OiBDb3JyZWN0bHkgZGV0ZWN0IGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtcyB3aXRoIGJsb2Nrc2l6ZXMKLSAgb3RoZXIgdGhhbiA5MDBrLgotCi0tIElzc3VlICMxMzQzOTogRml4IG1hbnkgZXJyb3JzIGluIHR1cnRsZSBkb2NzdHJpbmdzLgotCi0tIElzc3VlICM2NzE1OiBBZGQgYSBtb2R1bGUgJ2x6bWEnIGZvciBjb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0uCi0gIFRoYW5rcyB0byBQZXIgw5h5dmluZCBLYXJsc2VuIGZvciB0aGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTM0ODc6IE1ha2UgaW5zcGVjdC5nZXRtb2R1bGUgcm9idXN0IGFnYWluc3QgY2hhbmdlcyBkb25lIHRvCi0gIHN5cy5tb2R1bGVzIHdoaWxlIGl0IGlzIGl0ZXJhdGluZyBvdmVyIGl0LgotCi0tIElzc3VlICMxMjYxODogRml4IGEgYnVnIHRoYXQgcHJldmVudGVkIHB5X2NvbXBpbGUgZnJvbSBjcmVhdGluZyBieXRlCi0gIGNvbXBpbGVkIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIEluaXRpYWwgcGF0Y2ggYnkgU2pvZXJkIGRlIFZyaWVzLgotCi0tIElzc3VlICMxMzQ0NDogV2hlbiBzdGRvdXQgaGFzIGJlZW4gY2xvc2VkIGV4cGxpY2l0bHksIHdlIHNob3VsZCBub3QgYXR0ZW1wdAotICB0byBmbHVzaCBpdCBhdCBzaHV0ZG93biBhbmQgcHJpbnQgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzEyNTY3OiBUaGUgY3Vyc2VzIG1vZHVsZSB1c2VzIFVuaWNvZGUgZnVuY3Rpb25zIGZvciBVbmljb2RlIGFyZ3VtZW50cwotICB3aGVuIGl0IGlzIGxpbmtlZCB0byB0aGUgbmN1cnNlcyBsaWJyYXJ5LiBJdCBlbmNvZGVzIGFsc28gVW5pY29kZSBzdHJpbmdzIHRvCi0gIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KLQotLSBJc3N1ZSAjMTI4NTY6IEVuc3VyZSBjaGlsZCBwcm9jZXNzZXMgZG8gbm90IGluaGVyaXQgdGhlIHBhcmVudCdzIHJhbmRvbQotICBzZWVkIGZvciBmaWxlbmFtZSBnZW5lcmF0aW9uIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUuICBQYXRjaCBieSBCcmlhbgotICBIYXJyaW5nLgotCi0tIElzc3VlICM5OTU3OiBTcG9vbGVkVGVtcG9yYXJ5RmlsZS50cnVuY2F0ZSgpIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNpemUKLSAgcGFyYW1ldGVyLCBhcyBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cy4gIFBhdGNoIGJ5IFJ5YW4gS2VsbHkuCi0KLS0gSXNzdWUgIzEzNDU4OiBGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgc3NsIG1vZHVsZSB3aGVuIGRlY29kaW5nIGEKLSAgY2VydGlmaWNhdGUgd2l0aCBhIHN1YmplY3RBbHROYW1lLiAgUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCi0KLS0gSXNzdWUgIzEzNDE1OiBvcy51bnNldGVudigpIGRvZXNuJ3QgaWdub3JlIGVycm9ycyBhbnltb3JlLgotCi0tIElzc3VlICMxMzI0NTogc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNvbnN0cnVjdG9yJ3MgdGltZWZ1bmMgYW5kCi0gIGRlbGF5ZnVuY3QgcGFyYW1ldGVycyBhcmUgbm93IG9wdGlvbmFsLgotICBzY2hlZHVsZXIuZW50ZXIgYW5kIHNjaGVkdWxlci5lbnRlcmFicyBtZXRob2RzIGdhaW5lZCBhIG5ldyBrd2FyZ3MgcGFyYW1ldGVyLgotICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBDbGFyay4KLQotLSBJc3N1ZSAjMTIzMjg6IFVuZGVyIFdpbmRvd3MsIHJlZmFjdG9yIGhhbmRsaW5nIG9mIEN0cmwtQyBldmVudHMgYW5kCi0gIG1ha2UgX211bHRpcHJvY2Vzc2luZy53aW4zMi5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGludGVycnVwdGlibGUgd2hlbgotICB0aGUgd2FpdF9mbGFnIHBhcmFtZXRlciBpcyBmYWxzZS4gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTMzMjI6IEZpeCBCdWZmZXJlZFdyaXRlci53cml0ZSgpIHRvIGVuc3VyZSB0aGF0IEJsb2NraW5nSU9FcnJvciBpcwotICByYWlzZWQgd2hlbiB0aGUgd3JhcHBlZCByYXcgZmlsZSBpcyBub24tYmxvY2tpbmcgYW5kIHRoZSB3cml0ZSB3b3VsZCBibG9jay4KLSAgUHJldmlvdXMgY29kZSBhc3N1bWVkIHRoYXQgdGhlIHJhdyB3cml0ZSgpIHdvdWxkIHJhaXNlIEJsb2NraW5nSU9FcnJvciwgYnV0Ci0gIFJhd0lPQmFzZS53cml0ZSgpIGlzIGRlZmluZWQgdG8gcmV0dXJuZWQgTm9uZSB3aGVuIHRoZSBjYWxsIHdvdWxkIGJsb2NrLgotICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzEzMzU4OiBIVE1MUGFyc2VyIG5vdyBjYWxscyBoYW5kbGVfZGF0YSBvbmx5IG9uY2UgZm9yIGVhY2ggQ0RBVEEuCi0KLS0gSXNzdWUgIzQxNDc6IG1pbmlkb20ncyB0b3ByZXR0eXhtbCBubyBsb25nZXIgYWRkcyB3aGl0ZXNwYWNlIGFyb3VuZCBhIHRleHQKLSAgbm9kZSB3aGVuIGl0IGlzIHRoZSBvbmx5IGNoaWxkIG9mIGFuIGVsZW1lbnQuICBJbml0aWFsIHBhdGNoIGJ5IERhbgotICBLZW5pZ3NiZXJnLgotCi0tIElzc3VlICMxMzM3NDogVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIG9zIG1vZHVsZS4gVXNlCi0gIFVuaWNvZGUgZmlsZW5hbWVzIGluc3RlYWQgb2YgYnl0ZXMgZmlsZW5hbWVzIHRvIG5vdCBkZXBlbmQgb24gdGhlIEFOU0kgY29kZQotICBwYWdlIGFueW1vcmUgYW5kIHRvIHN1cHBvcnQgYW55IGZpbGVuYW1lLgotCi0tIElzc3VlICMxMzI5NzogVXNlIGJ5dGVzIHR5cGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBiaW5hcnkgZGF0YSB0aHJvdWdoIFhNTFJQQy4KLQotLSBJc3N1ZSAjNjM5NzogU3VwcG9ydCAiL2Rldi9wb2xsIiBwb2xsaW5nIG9iamVjdHMgaW4gc2VsZWN0IG1vZHVsZSwKLSAgdW5kZXIgU29sYXJpcyAmIGRlcml2YXRpdmVzLgotCi0tIElzc3VlcyAjMTc0NTc2MSwgIzc1NTY3MCwgIzEzMzU3LCAjMTI2MjksICMxMjAwMzEzOiBIVE1MUGFyc2VyIG5vdyBjb3JyZWN0bHkKLSAgaGFuZGxlcyBub24tdmFsaWQgYXR0cmlidXRlcywgaW5jbHVkaW5nIGFkamFjZW50IGFuZCB1bnF1b3RlZCBhdHRyaWJ1dGVzLgotCi0tIElzc3VlICMxMzE5MzogRml4IGRpc3R1dGlscy5maWxlbGlzdC5GaWxlTGlzdCBhbmQgcGFja2FnaW5nLm1hbmlmZXN0Lk1hbmlmZXN0Ci0gIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEzMzg0OiBSZW1vdmUgdW5uZWNlc3NhcnkgX19mdXR1cmVfXyBpbXBvcnQgaW4gTGliL3JhbmRvbS5weQotCi0tIElzc3VlICMxMzE0OTogU3BlZWQgdXAgYXBwZW5kLW9ubHkgU3RyaW5nSU8gb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTMzNzM6IG11bHRpcHJvY2Vzc2luZy5RdWV1ZS5nZXQoKSBjb3VsZCBzb21ldGltZXMgYmxvY2sgaW5kZWZpbml0ZWx5Ci0gIHdoZW4gY2FsbGVkIHdpdGggYSB0aW1lb3V0LiAgUGF0Y2ggYnkgQXJuYXVkIFlzbWFsLgotCi0tIElzc3VlICMxMzI1NDogRml4IE1haWxkaXIgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBtYWlsZGlyIGNvbnRlbnRzCi0gIGFyZSByZWFkIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMzA2NzogbG9jYWxlLnNldGxvY2FsZSgpIG5vdyByYWlzZXMgVHlwZUVycm9yIGlmIHRoZSBzZWNvbmQKLSAgYXJndW1lbnQgaXMgYW4gaW52YWxpZCBpdGVyYWJsZS4gSXRzIGRvY3VtZW50YXRpb24gYW5kIGRvY3N0cmluZwotICB3ZXJlIGFsc28gdXBkYXRlZC4gSW5pdGlhbCBwYXRjaCBieSBKeXJraSBQdWxsaWFpbmVuLgotCi0tIElzc3VlICMxMzE0MDogRml4IHRoZSBkYWVtb25fdGhyZWFkcyBhdHRyaWJ1dGUgb2YgVGhyZWFkaW5nTWl4SW4uCi0KLS0gSXNzdWUgIzEzMzM5OiBGaXggY29tcGlsZSBlcnJvciBpbiBwb3NpeG1vZHVsZS5jIGR1ZSB0byBtaXNzaW5nIHNlbWljb2xvbi4KLSAgVGhhbmtzIHRvIFJvYmVydCBYaWFvLgotCi0tIEJ5dGUgY29tcGlsYXRpb24gaW4gcGFja2FnaW5nIGlzIG5vdyBpc29sYXRlZCBmcm9tIHRoZSBjYWxsaW5nIFB5dGhvbiAtQiBvcgotICAtTyBvcHRpb25zLCBpbnN0ZWFkIG9mIGJlaW5nIGRpc2FsbG93ZWQgdW5kZXIgLUIgb3IgYnVnZ3kgdW5kZXIgLU8uCi0KLS0gSXNzdWUgIzEwNTcwOiBjdXJzZXMucHV0cCgpIGFuZCBjdXJzZXMudHBhcm0oKSBhcmUgbm93IGV4cGVjdGluZyBhIGJ5dGUKLSAgc3RyaW5nLCBpbnN0ZWFkIG9mIGEgVW5pY29kZSBzdHJpbmcuCi0KLS0gSXNzdWUgIzEzMjk1OiBodHRwLnNlcnZlciBub3cgcHJvZHVjZXMgdmFsaWQgSFRNTCA0LjAxIHN0cmljdC4KLQotLSBJc3N1ZSAjMjg5MjogcHJlc2VydmUgaXRlcnBhcnNlIGV2ZW50cyBpbiBjYXNlIG9mIFN5bnRheEVycm9yLgotCi0tIElzc3VlICMxMzI4NzogdXJsbGliLnJlcXVlc3QgYW5kIHVybGxpYi5lcnJvciBub3cgY29udGFpbnMgYW4gX19hbGxfXwotICBhdHRyaWJ1dGUgdG8gZXhwb3NlIG9ubHkgcmVsZXZhbnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAgUGF0Y2ggYnkgRmxvcmVudAotICBYaWNsdW5hLgotCi0tIElzc3VlICM2NzA2NjQ6IEZpeCBIVE1MUGFyc2VyIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGNvbnRlbnQgb2YKLSAgYGA8c2NyaXB0Pi4uLjwvc2NyaXB0PmBgIGFuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgotCi0tIElzc3VlICMxMDgxNzogRml4IHVybHJldHJpZXZlIGZ1bmN0aW9uIHRvIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yIGV2ZW4KLSAgd2hlbiByZXBvcnRob29rIGlzIE5vbmUuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gRml4IHRoZSB4bWxycGMuY2xpZW50IHVzZXIgYWdlbnQgdG8gcmV0dXJuIHNvbWV0aGluZyBzaW1pbGFyIHRvCi0gIHVybGxpYi5yZXF1ZXN0IHVzZXIgYWdlbnQ6ICJQeXRob24teG1scnBjLzMuMyIuCi0KLS0gSXNzdWUgIzEzMjkzOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byBtYXJzaGFsIGJ5dGVzIHVzaW5nCi0gIHhtbHJwYy5jbGllbnQuCi0KLS0gSXNzdWUgIzEzMjkxOiBOYW1lRXJyb3IgaW4geG1scnBjIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzEzMjU4OiBVc2UgY2FsbGFibGUoKSBidWlsdC1pbiBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLQotLSBJc3N1ZSAjMTMyNzM6IGZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBIVE1MUGFyc2VyIHRvIHByb3Blcmx5IGRldGVjdCBzb21lCi0gIHRhZ3Mgd2hlbiBzdHJpY3Q9RmFsc2UuCi0KLS0gSXNzdWUgIzExMTgzOiBBZGQgZmluZXItZ3JhaW5lZCBleGNlcHRpb25zIHRvIHRoZSBzc2wgbW9kdWxlLCBzbyB0aGF0Ci0gIHlvdSBkb24ndCBoYXZlIHRvIGluc3BlY3QgdGhlIGV4Y2VwdGlvbidzIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbW1vbiBjYXNlLgotCi0tIElzc3VlICMxMzIxNjogQWRkIGNwNjUwMDEgY29kZWMsIHRoZSBXaW5kb3dzIFVURi04IChDUF9VVEY4KS4KLQotLSBJc3N1ZSAjMTMyMjY6IEFkZCBSVExEX3h4eCBjb25zdGFudHMgdG8gdGhlIG9zIG1vZHVsZS4gVGhlc2UgY29uc3RhbnRzIGNhbiBiZQotICB1c2VkIHdpdGggc3lzLnNldGRsb3BlbmZsYWdzKCkuCi0KLS0gSXNzdWUgIzEwMjc4OiBBZGQgY2xvY2tfZ2V0cmVzKCksIGNsb2NrX2dldHRpbWUoKSBhbmQgQ0xPQ0tfeHh4IGNvbnN0YW50cyB0bwotICB0aGUgdGltZSBtb2R1bGUuIHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykgcHJvdmlkZXMgYQotICBtb25vdG9uaWMgY2xvY2sKLQotLSBJc3N1ZSAjMTAzMzI6IG11bHRpcHJvY2Vzc2luZzogZml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiBhIFBvb2wgaXMgY2xvc2VkCi0gIGJlZm9yZSBhbGwgdGFza3MgaGF2ZSBjb21wbGV0ZWQuCi0KLS0gSXNzdWUgIzEzMjU1OiB3cm9uZyBkb2NzdHJpbmdzIGluIGFycmF5IG1vZHVsZS4KLQotLSBJc3N1ZSAjODU0MDogUmVtb3ZlIGRlcHJlY2F0ZWQgQ29udGV4dC5fY2xhbXAgYXR0cmlidXRlIGluIERlY2ltYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNTogQWRkZWQgRGVwcmVjYXRpb25XYXJuaW5nIHRvIGxvZ2dpbmcud2FybigpIG1ldGhvZCBhbmQgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzkxNjg6IG5vdyBzbXRwZCBpcyBhYmxlIHRvIGJpbmQgcHJpdmlsZWdlZCBwb3J0LgotCi0tIElzc3VlICMxMjUyOTogZml4IGNnaS5wYXJzZV9oZWFkZXIgaXNzdWUgb24gc3RyaW5ncyB3aXRoIGRvdWJsZS1xdW90ZXMgYW5kCi0gIHNlbWljb2xvbnMgdG9nZXRoZXIuIFBhdGNoIGJ5IEJlbiBEYXJuZWxsIGFuZCBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTMyMjc6IGZ1bmN0b29scy5scnVfY2FjaGUoKSBub3cgaGFzIGEgb3B0aW9uIHRvIGRpc3Rpbmd1aXNoCi0gIGNhbGxzIHdpdGggZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLgotCi0tIElzc3VlICM2MDkwOiB6aXBmaWxlIHJhaXNlcyBhIFZhbHVlRXJyb3Igd2hlbiBhIGRvY3VtZW50IHdpdGggYSB0aW1lc3RhbXAKLSAgZWFybGllciB0aGFuIDE5ODAgaXMgcHJvdmlkZWQuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMzE1MDogc3lzY29uZmlnIG5vIGxvbmdlciBwYXJzZXMgdGhlIE1ha2VmaWxlIGFuZCBjb25maWcuaCBmaWxlcwotICB3aGVuIGltcG9ydGVkLCBpbnN0ZWFkIGRvaW5nIGl0IGF0IGJ1aWxkIHRpbWUuICBUaGlzIG1ha2VzIGltcG9ydGluZwotICBzeXNjb25maWcgZmFzdGVyIGFuZCByZWR1Y2VzIFB5dGhvbiBzdGFydHVwIHRpbWUgYnkgMjAlLgotCi0tIElzc3VlICMxMjQ0ODogc210cGxpYiBub3cgZmx1c2hlcyBzdGRvdXQgd2hpbGUgcnVubmluZyBgYHB5dGhvbiAtbSBzbXRwbGliYGAKLSAgaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgcHJvbXB0IGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTI0NTQ6IFRoZSBtYWlsYm94IG1vZHVsZSBpcyBub3cgdXNpbmcgQVNDSUksIGluc3RlYWQgb2YgdGhlIGxvY2FsZQotICBlbmNvZGluZywgdG8gcmVhZCBhbmQgd3JpdGUgLm1oX3NlcXVlbmNlcyBmaWxlcy4KLQotLSBJc3N1ZSAjMTMxOTQ6IHpsaWIuY29tcHJlc3NvYmooKS5jb3B5KCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpLmNvcHkoKSBhcmUKLSAgbm93IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNjczMDA3OiB1cmxsaWIucmVxdWVzdCBub3cgc3VwcG9ydHMgSEVBRCByZXF1ZXN0IHZpYSBuZXcgbWV0aG9kIGFyZ3VtZW50LgotICBQYXRjaCBjb250cmlidXRpb25zIGJ5IERhdmlkIFN0YW5laywgUGF0cmljayBXZXN0ZXJob2ZmIGFuZCBFemlvIE1lbG90dGkuCi0KLS0gSXNzdWUgIzEyMzg2OiBwYWNrYWdpbmcgZG9lcyBub3QgZmFpbCBhbnltb3JlIHdoZW4gd3JpdGluZyB0aGUgUkVTT1VSQ0VTCi0gIGZpbGUuCi0KLS0gSXNzdWUgIzEzMTU4OiBGaXggZGVjb2RpbmcgYW5kIGVuY29kaW5nIG9mIEdOVSB0YXIgc3BlY2lmaWMgYmFzZS0yNTYgbnVtYmVyCi0gIGZpZWxkcyBpbiB0YXJmaWxlLgotCi0tIElzc3VlICMxMzAyNTogbWltZXR5cGVzIGlzIG5vdyByZWFkaW5nIE1JTUUgdHlwZXMgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLAotICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzEwNjUzOiBPbiBXaW5kb3dzLCB1c2Ugc3RyZnRpbWUoKSBpbnN0ZWFkIG9mIHdjc2Z0aW1lKCkgYmVjYXVzZQotICB3Y3NmdGltZSgpIGRvZXNuJ3QgZm9ybWF0IHRpbWUgem9uZSBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzEzMTUwOiBUaGUgdG9rZW5pemUgbW9kdWxlIGRvZXNuJ3QgY29tcGlsZSBsYXJnZSByZWd1bGFyIGV4cHJlc3Npb25zCi0gIGF0IHN0YXJ0dXAgYW55bW9yZS4KLQotLSBJc3N1ZSAjMTExNzE6IEZpeCBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSB3aGVuIFB5dGhvbiB3YXMKLSAgY29uZmlndXJlZCB3aXRoIGRpZmZlcmVudCBwcmVmaXggYW5kIGV4ZWMtcHJlZml4LgotCi0tIElzc3VlICMxMTI1NDogVGVhY2ggZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgdG8gY29tcGlsZSAucHljIGFuZCAucHlvIGZpbGVzIGluCi0gIFBFUCAzMTQ3LWNvbXBsaWFudCBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjNzM2NzogRml4IHBrZ3V0aWwud2Fsa19wYXRocyB0byBza2lwIGRpcmVjdG9yaWVzIHdob3NlCi0gIGNvbnRlbnRzIGNhbm5vdCBiZSByZWFkLgotCi0tIElzc3VlICMzMTYzOiBUaGUgc3RydWN0IG1vZHVsZSBnZXRzIG5ldyBmb3JtYXQgY2hhcmFjdGVycyAnbicgYW5kICdOJwotICBzdXBwb3J0aW5nIEMgaW50ZWdlciB0eXBlcyBgYHNzaXplX3RgYCBhbmQgYGBzaXplX3RgYCwgcmVzcGVjdGl2ZWx5LgotCi0tIElzc3VlICMxMzA5OTogRml4IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCB1bmRlciBhIFR1cmtpc2ggbG9jYWxlLgotICBSZXBvcnRlZCBhbmQgZGlhZ25vc2VkIGJ5IFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMxMzA4NzogQnVmZmVyZWRSZWFkZXIuc2VlaygpIG5vdyBhbHdheXMgcmFpc2VzIFVuc3VwcG9ydGVkT3BlcmF0aW9uCi0gIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgdW5zZWVrYWJsZSwgZXZlbiBpZiB0aGUgc2VlayBjb3VsZCBiZQotICBzYXRpc2ZpZWQgdXNpbmcgdGhlIGludGVybmFsIGJ1ZmZlci4gIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCi0KLS0gSXNzdWUgIzc2ODk6IEFsbG93IHBpY2tsaW5nIG9mIGR5bmFtaWNhbGx5IGNyZWF0ZWQgY2xhc3NlcyB3aGVuIHRoZWlyCi0gIG1ldGFjbGFzcyBpcyByZWdpc3RlcmVkIHdpdGggY29weXJlZy4gIFBhdGNoIGJ5IE5pY29sYXMgTS4gVGhpw6lyeSBhbmQgQ3JhaWcKLSAgQ2l0cm8uCi0KLS0gSXNzdWUgIzEzMDM0OiBXaGVuIGRlY29kaW5nIHNvbWUgU1NMIGNlcnRpZmljYXRlcywgdGhlIHN1YmplY3RBbHROYW1lCi0gIGV4dGVuc2lvbiBjb3VsZCBiZSB1bnJlcG9ydGVkLgotCi0tIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCi0gIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KLQotLSBJc3N1ZSAjMTI5NTk6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCB0byBjb2xsZWN0aW9ucy5fX2FsbF9fLgotCi0tIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIGFuZCBwYWNrYWdpbmcncyBNRVRBREFUQSBmaWxlcyB3aWxsCi0gIG5vdyBjb3JyZWN0bHkgcmVwb3J0IE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IKLSAgRG93bmxvYWQtVVJMIGZpZWxkIGlzIHByZXNlbnQuCi0KLS0gSXNzdWUgIzEyNTY3OiBBZGQgY3Vyc2VzLnVuZ2V0X3djaCgpIGZ1bmN0aW9uLiBQdXNoIGEgY2hhcmFjdGVyIHNvIHRoZSBuZXh0Ci0gIGdldF93Y2goKSB3aWxsIHJldHVybiBpdC4KLQotLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgbm93IHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKLSAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgotCi0tIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCi0gIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KLQotLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKLSAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCi0gIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKLSAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCi0KLS0gSXNzdWUgIzEyODg4OiBGaXggYSBidWcgaW4gSFRNTFBhcnNlci51bmVzY2FwZSB0aGF0IHByZXZlbnRlZCBpdCB0byBlc2NhcGUKLSAgbW9yZSB0aGFuIDEyOCBlbnRpdGllcy4gIFBhdGNoIGJ5IFBldGVyIE90dGVuLgotCi0tIElzc3VlICMxMjg3ODogRXhwb3NlIGEgX19kaWN0X18gYXR0cmlidXRlIG9uIGlvLklPQmFzZSBhbmQgaXRzIHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzEyNDk0OiBPbiBlcnJvciwgY2FsbCgpLCBjaGVja19jYWxsKCksIGNoZWNrX291dHB1dCgpIGFuZAotICBnZXRzdGF0dXNvdXRwdXQoKSBmdW5jdGlvbnMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBraWxsIHRoZSBwcm9jZXNzLAotICByZWFkIGl0cyBzdGF0dXMgKHRvIGF2b2lkIHpvbWJpcykgYW5kIGNsb3NlIHBpcGVzLgotCi0tIElzc3VlICMxMjcyMDogRXhwb3NlIGxvdy1sZXZlbCBMaW51eCBleHRlbmRlZCBmaWxlIGF0dHJpYnV0ZSBmdW5jdGlvbnMgaW4gb3MuCi0KLS0gSXNzdWUgIzEwOTQ2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmRzIGJkaXN0X2R1bWIsIGJkaXN0X3dpbmluc3QgYW5kIGJkaXN0X21zaQotICBub3cgcmVzcGVjdCBhIC0tc2tpcC1idWlsZCBvcHRpb24gZ2l2ZW4gdG8gYmRpc3QuICBUaGUgcGFja2FnaW5nIGNvbW1hbmRzCi0gIHdlcmUgZml4ZWQgdG9vLgotCi0tIElzc3VlICMxMjg0NzogRml4IGEgY3Jhc2ggd2l0aCBuZWdhdGl2ZSBQVVQgYW5kIExPTkdfQklOUFVUIGFyZ3VtZW50cyBpbgotICB0aGUgQyBwaWNrbGUgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzExNTY0OiBBdm9pZCBjcmFzaGVzIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBodWdlIG9iamVjdHMgb3IgY29udGFpbmVycwotICAobW9yZSB0aGFuIDIqKjMxIGl0ZW1zKS4gIEluc3RlYWQsIGluIG1vc3QgY2FzZXMsIGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkLgotCi0tIElzc3VlICMxMjI4NzogRml4IGEgc3RhY2sgY29ycnVwdGlvbiBpbiBvc3NhdWRpb2RldiBtb2R1bGUgd2hlbiB0aGUgRkQgaXMKLSAgZ3JlYXRlciB0aGFuIEZEX1NFVFNJWkUuCi0KLS0gSXNzdWUgIzEyODM5OiBGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guCi0gIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KLQotLSBJc3N1ZSAjOTkyMzogVGhlIG1haWxjYXAgbW9kdWxlIG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgcGxhdGZvcm0gcGF0aAotICBzZXBhcmF0b3IgZm9yIHRoZSBNQUlMQ0FQIGVudmlyb25tZW50IHZhcmlhYmxlIG9uIG5vbi1QT1NJWCBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEyODM1OiBGb2xsb3cgdXAgdG8gIzY1NjAgdGhhdCB1bmNvbmRpdGlvbmFsbHkgcHJldmVudHMgdXNlIG9mIHRoZQotICB1bmVuY3J5cHRlZCBzZW5kbXNnL3JlY3Ztc2cgQVBJcyBvbiBTU0wgd3JhcHBlZCBzb2NrZXRzLiBQYXRjaCBieSBEYXZpZAotICBXYXRzb24uCi0KLS0gSXNzdWUgIzEyODAzOiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIG5vdyBhY2NlcHRzIGEgcGFzc3dvcmQgYXJndW1lbnQKLSAgdG8gYmUgdXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgZW5jcnlwdGVkLiAgUGF0Y2ggYnkgQWRhbSBTaW1wa2lucy4KLQotLSBJc3N1ZSAjMTE2NTc6IEZpeCBzZW5kaW5nIGZpbGUgZGVzY3JpcHRvcnMgb3ZlciAyNTUgb3ZlciBhIG11bHRpcHJvY2Vzc2luZwotICBQaXBlLgotCi0tIElzc3VlICMxMjgxMTogdGFibmFubnkuY2hlY2soKSBub3cgcHJvbXB0bHkgY2xvc2VzIGNoZWNrZWQgZmlsZXMuIFBhdGNoIGJ5Ci0gIEFudGhvbnkgQnJpZ2dzLgotCi0tIElzc3VlICM2NTYwOiBUaGUgc2VuZG1zZy9yZWN2bXNnIEFQSSBpcyBub3cgZXhwb3NlZCBieSB0aGUgc29ja2V0IG1vZHVsZQotICB3aGVuIHByb3ZpZGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLCBzdXBwb3J0aW5nIHByb2Nlc3Npbmcgb2YKLSAgYW5jaWxsYXJ5IGRhdGEgaW4gcHVyZSBQeXRob24gY29kZS4gUGF0Y2ggYnkgRGF2aWQgV2F0c29uIGFuZCBIZWlrbyBXdW5kcmFtLgotCi0tIElzc3VlICMxMjMyNjogT24gTGludXgsIHN5cy5wbGF0Zm9ybSBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24KLSAgYW55bW9yZS4gSXQgaXMgbm93IGFsd2F5cyAnbGludXgnLCBpbnN0ZWFkIG9mICdsaW51eDInIG9yICdsaW51eDMnIGRlcGVuZGluZwotICBvbiB0aGUgTGludXggdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTIyMTM6IEZpeCBhIGJ1ZmZlcmluZyBidWcgd2l0aCBpbnRlcmxlYXZlZCByZWFkcyBhbmQgd3JpdGVzIHRoYXQKLSAgY291bGQgYXBwZWFyIG9uIEJ1ZmZlcmVkUmFuZG9tIHN0cmVhbXMuCi0KLS0gSXNzdWUgIzEyNzc4OiBSZWR1Y2UgbWVtb3J5IGNvbnN1bXB0aW9uIHdoZW4gSlNPTi1lbmNvZGluZyBhIGxhcmdlCi0gIGNvbnRhaW5lciBvZiBtYW55IHNtYWxsIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyNjUwOiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHN1YnByb2Nlc3MuUG9wZW4gY291bGQgbGVhawotICByZXNvdXJjZXMgKEZEL3pvbWJpZSkgd2hlbiBraWxsZWQgYXQgdGhlIHdyb25nIHRpbWUuCi0KLS0gSXNzdWUgIzEyNzQ0OiBGaXggaW5lZmZpY2llbnQgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMgYmV0d2VlbiAyKiozMSBhbmQKLSAgMioqNjMgb24gc3lzdGVtcyB3aXRoIGEgNjQtYml0IEMgImxvbmciLgotCi0tIElzc3VlICMxMjY0NjogQWRkIGFuICdlb2YnIGF0dHJpYnV0ZSB0byB6bGliLkRlY29tcHJlc3MsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCi0gIGRldGVjdCB0cnVuY2F0ZWQgaW5wdXQgc3RyZWFtcy4KLQotLSBJc3N1ZSAjMTE1MTM6IEZpeCBleGNlcHRpb24gaGFuZGxpbmcgYGB0YXJmaWxlLlRhckZpbGUuZ3pvcGVuKClgYCB3aGVuCi0gIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCi0KLS0gSXNzdWUgIzEyNjg3OiBGaXggYSBwb3NzaWJsZSBidWZmZXJpbmcgYnVnIHdoZW4gdW5waWNrbGluZyB0ZXh0IG1vZGUKLSAgKHByb3RvY29sIDAsIG1vc3RseSkgcGlja2xlcy4KLQotLSBJc3N1ZSAjMTAwODc6IEZpeCB0aGUgaHRtbCBvdXRwdXQgZm9ybWF0IG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMTIxOiBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgotCi0tIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgotCi0tIElzc3VlICMxMjY4MzogdXJscGFyc2UgdXBkYXRlZCB0byBpbmNsdWRlIHN2biBhcyBzY2hlbWVzIHRoYXQgdXNlcyByZWxhdGl2ZQotICBwYXRocy4gKHN2biBmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCi0KLS0gSXNzdWUgIzEyNjU1OiBFeHBvc2UgZnVuY3Rpb25zIGZyb20gc2NoZWQuaCBpbiB0aGUgb3MgbW9kdWxlOiBzY2hlZF95aWVsZCgpLAotICBzY2hlZF9zZXRzY2hlZHVsZXIoKSwgc2NoZWRfZ2V0c2NoZWR1bGVyKCksIHNjaGVkX3NldHBhcmFtKCksCi0gIHNjaGVkX2dldF9taW5fcHJpb3JpdHkoKSwgc2NoZWRfZ2V0X21heF9wcmlvcml0eSgpLCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoKSwKLSAgc2NoZWRfZ2V0YWZmaW5pdHkoKSwgc2NoZWRfc2V0YWZmaW5pdHkoKS4KLQotLSBBZGQgVGhyZWFkRXJyb3IgdG8gdGhyZWFkaW5nLl9fYWxsX18uCi0KLS0gSXNzdWVzICMxMTEwNCwgIzg2ODg6IEZpeCB0aGUgYmVoYXZpb3Igb2YgZGlzdHV0aWxzJyBzZGlzdCBjb21tYW5kIHdpdGgKLSAgbWFudWFsbHktbWFpbnRhaW5lZCBNQU5JRkVTVCBmaWxlcy4KLQotLSBJc3N1ZSAjMTEyODE6IHNtdHBsaWIuU1RNUCBnZXRzIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciwgd2hpY2ggYWRkcyB0aGUKLSAgYWJpbGl0eSB0byBiaW5kIHRvIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIG9uIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlCi0gIGludGVyZmFjZXMuIFBhdGNoIGJ5IFBhdWxvIFNjYXJkaW5lLgotCi0tIElzc3VlICMxMjQ2NDogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5LmNsZWFudXAoKSBzaG91bGQgbm90IGZvbGxvdwotICBzeW1saW5rczogZml4IGl0LiBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjODg4NzogInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykKLSAgaW4gUHl0aG9uIGNvZGUpIG5vdyBmaW5kcyB0aGUgZG9jIG9mIHRoZSBtZXRob2QuCi0KLS0gSXNzdWUgIzEwOTY4OiBSZW1vdmUgaW5kaXJlY3Rpb24gaW4gdGhyZWFkaW5nLiAgVGhlIHB1YmxpYyBuYW1lcyAoRXZlbnQsCi0gIENvbmRpdGlvbiwgZXRjLikgdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIGhpZGRlbgotICBjbGFzc2VzIChfRXZlbnQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcwotICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUKLSAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMsIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQotICB1bmRlcnNjb3JlZCBuYW1lcyBsaWtlIG11bHRpcHJvY2Vzc2luZyBkaWQuCi0KLS0gSXNzdWUgIzk3MjM6IEFkZCBzaGxleC5xdW90ZSBmdW5jdGlvbnMsIHRvIGVzY2FwZSBmaWxlbmFtZXMgYW5kIGNvbW1hbmQKLSAgbGluZXMuCi0KLS0gSXNzdWUgIzEyNjAzOiBGaXggcHlkb2Muc3lub3BzaXMoKSBvbiBmaWxlcyB3aXRoIG5vbi1uZWdhdGl2ZSBzdF9tdGltZS4KLQotLSBJc3N1ZSAjMTI1MTQ6IFVzZSB0cnkvZmluYWxseSB0byBhc3N1cmUgdGhlIHRpbWVpdCBtb2R1bGUgcmVzdG9yZXMgZ2FyYmFnZQotICBjb2xsZWN0aW9ucyB3aGVuIGl0IGlzIGRvbmUuCi0KLS0gSXNzdWUgIzEyNjA3OiBJbiBzdWJwcm9jZXNzLCBmaXggaXNzdWUgd2hlcmUgaWYgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIgaXMKLSAgZ2l2ZW4gYXMgYSBsb3cgZmQsIGl0IGdldHMgb3ZlcndyaXR0ZW4uCi0KLS0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlcykKLSAgYGBDb25uZWN0aW9uOiBjbG9zZWBgIGhlYWRlci4KLQotLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCi0KLS0gSXNzdWUgIzE4MTM6IEZpeCBjb2RlYyBsb29rdXAgdW5kZXIgVHVya2lzaCBsb2NhbGVzLgotCi0tIElzc3VlICMxMjU5MTogSW1wcm92ZSBzdXBwb3J0IG9mICJ1bml2ZXJzYWwgbmV3bGluZXMiIGluIHRoZSBzdWJwcm9jZXNzCi0gIG1vZHVsZTogdGhlIHBpcGVkIHN0cmVhbXMgY2FuIG5vdyBiZSBwcm9wZXJseSByZWFkIGZyb20gb3Igd3JpdHRlbiB0by4KLQotLSBJc3N1ZSAjMTI1OTE6IEFsbG93IGlvLlRleHRJT1dyYXBwZXIgdG8gd29yayB3aXRoIHJhdyBJTyBvYmplY3RzICh3aXRob3V0Ci0gIGEgcmVhZDEoKSBtZXRob2QpLCBhbmQgYWRkIGEgKndyaXRlX3Rocm91Z2gqIHBhcmFtZXRlciB0byBtYW5kYXRlCi0gIHVuYnVmZmVyZWQgd3JpdGVzLgotCi0tIElzc3VlICMxMDg4MzogRml4IHNvY2tldCBsZWFrcyBpbiB1cmxsaWIucmVxdWVzdCB3aGVuIHVzaW5nIEZUUC4KLQotLSBJc3N1ZSAjMTI1OTI6IE1ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCi0KLS0gSXNzdWUgIzEyMzcyOiBQT1NJWCBzZW1hcGhvcmVzIGFyZSBicm9rZW4gb24gQUlYOiBkb24ndCB1c2UgdGhlbS4KLQotLSBJc3N1ZSAjMTI1NTE6IFByb3ZpZGUgYSBnZXRfY2hhbm5lbF9iaW5kaW5nKCkgbWV0aG9kIG9uIFNTTCBzb2NrZXRzIHNvIGFzCi0gIHRvIGdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgdGhlIGN1cnJlbnQgU1NMIHNlc3Npb24gKG9ubHkgdGhlCi0gICJ0bHMtdW5pcXVlIiBjaGFubmVsIGJpbmRpbmcgaXMgaW1wbGVtZW50ZWQpLiAgVGhpcyBhbGxvd3MgdGhlIGltcGxlbWVudGF0aW9uCi0gIG9mIGNlcnRhaW4gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzIFNDUkFNLVNIQS0xLVBMVVMuICBQYXRjaCBieQotICBKYWNlayBLb25pZWN6bnkuCi0KLS0gSXNzdWUgIzY2NTE5NDogZW1haWwudXRpbHMgbm93IGhhcyBmb3JtYXRfZGF0ZXRpbWUgYW5kIHBhcnNlZGF0ZV90b19kYXRldGltZQotICBmdW5jdGlvbnMsIGFsbG93aW5nIGZvciByb3VuZCB0cmlwcGluZyBvZiBSRkMyODIyIGZvcm1hdCBkYXRlcy4KLQotLSBJc3N1ZSAjMTI1NzE6IEFkZCBhIHBsYXQtbGludXgzIGRpcmVjdG9yeSBtaXJyb3JpbmcgdGhlIHBsYXQtbGludXgyCi0gIGRpcmVjdG9yeSwgc28gdGhhdCAiaW1wb3J0IERMRkNOIiBhbmQgb3RoZXIgc2ltaWxhciBpbXBvcnRzIHdvcmsgb24KLSAgTGludXggMy4wLgotCi0tIElzc3VlICM3NDg0OiBzbXRwbGliIG5vIGxvbmdlciBwdXRzIDw+IGFyb3VuZCBhZGRyZXNzZXMgaW4gVlJGWSBhbmQgRVhQTgotICBjb21tYW5kczsgdGhleSBhcmVuJ3QgcmVxdWlyZWQgYW5kIGluIGZhY3QgcG9zdGZpeCBkb2Vzbid0IHN1cHBvcnQgdGhhdCBmb3JtLgotCi0tIElzc3VlICMxMjI3MzogUmVtb3ZlIGFzdC5fX3ZlcnNpb25fXy4gQVNUIGNoYW5nZXMgY2FuIGJlIGFjY291bnRlZCBmb3IgYnkKLSAgY2hlY2tpbmcgc3lzLnZlcnNpb25faW5mbyBvciBzeXMuX21lcmN1cmlhbC4KLQotLSBTaWxlbmNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIgdHJhY2ViYWNrcyB3aGVuIHNodXR0aW5nIGRvd24gYQotICBQcm9jZXNzUG9vbEV4ZWN1dG9yLgotCi0tIEZpeCBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IKLSAgYnkgam9pbmluZyBhbGwgcXVldWVzIGFuZCBwcm9jZXNzZXMgd2hlbiBzaHV0ZG93bigpIGlzIGNhbGxlZC4KLQotLSBJc3N1ZSAjMTE2MDM6IEZpeCBhIGNyYXNoIHdoZW4gX19zdHJfXyBpcyByZWJvdW5kIGFzIF9fcmVwcl9fLiAgUGF0Y2ggYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMTMyMTogRml4IGEgY3Jhc2ggd2l0aCBtdWx0aXBsZSBpbXBvcnRzIG9mIHRoZSBfcGlja2xlIG1vZHVsZSB3aGVuCi0gIGVtYmVkZGluZyBQeXRob24uICBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzY3NTU6IEFkZCBnZXRfd2NoKCkgbWV0aG9kIHRvIGN1cnNlcy53aW5kb3cgY2xhc3MuIFBhdGNoIGJ5IEnDsWlnbwotICBTZXJuYS4KLQotLSBBZGQgY2dpLmNsb3NlbG9nKCkgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIGxvZyBmaWxlLgotCi0tIElzc3VlICMxMjUwMjogYXN5bmNvcmU6IGZpeCBwb2xsaW5nIGxvb3Agd2l0aCBBRl9VTklYIHNvY2tldHMuCi0KLS0gSXNzdWUgIzQzNzY6IGN0eXBlcyBub3cgc3VwcG9ydHMgbmVzdGVkIHN0cnVjdHVyZXMgaW4gYSBlbmRpYW4gZGlmZmVyZW50IHRoYW4KLSAgdGhlIHBhcmVudCBzdHJ1Y3R1cmUuIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCi0KLS0gUmFpc2UgVmFsdWVFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZSBfQ0hVTktfU0laRSBhdHRyaWJ1dGUgb2YgYQotICBUZXh0SU9XcmFwcGVyIHRvIGEgaHVnZSB2YWx1ZSwgbm90IFR5cGVFcnJvci4KLQotLSBJc3N1ZSAjMTI1MDQ6IENsb3NlIGZpbGUgaGFuZGxlcyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gcGFja2FnaW5nLmRhdGFiYXNlLgotICBUaGlzIGZpeGVzIGEgYnVnIHdpdGggdGhlIHJlbW92ZSAodW5pbnN0YWxsKSBmZWF0dXJlIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWVzICMxMjE2OSBhbmQgIzEwNTEwOiBGYWN0b3Igb3V0IGNvZGUgdXNlZCBieSB2YXJpb3VzIHBhY2thZ2luZyBjb21tYW5kcwotICB0byBtYWtlIEhUVFAgUE9TVCByZXF1ZXN0cywgYW5kIG1ha2Ugc3VyZSBpdCB1c2VzIENSTEYuCi0KLS0gSXNzdWUgIzEyMDE2OiBNdWx0aWJ5dGUgQ0pLIGRlY29kZXJzIG5vdyByZXN5bmNocm9uaXplIGZhc3Rlci4gVGhleSBvbmx5Ci0gIGlnbm9yZSB0aGUgZmlyc3QgYnl0ZSBvZiBhbiBpbnZhbGlkIGJ5dGUgc2VxdWVuY2UuIEZvciBleGFtcGxlLAotICBiJ1x4ZmZcbicuZGVjb2RlKCdnYjIzMTInLCAncmVwbGFjZScpIGdpdmVzICdcdWZmZmRcbicgaW5zdGVhZCBvZiAnXHVmZmZkJy4KLQotLSBJc3N1ZSAjMTI0NTk6IHRpbWUuc2xlZXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgc2xlZXAgbGVuZ3RoIGlzCi0gIG5lZ2F0aXZlLCBpbnN0ZWFkIG9mIGFuIGluZmluaXRlIHNsZWVwIG9uIFdpbmRvd3Mgb3IgcmFpc2luZyBhbiBJT0Vycm9yIG9uCi0gIExpbnV4IGZvciBleGFtcGxlLCB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBhbGwgcGxhdGZvcm1zLgotCi0tIElzc3VlICMxMjQ1MTogcHlkb2M6IGh0bWxfZ2V0ZmlsZSgpIG5vdyB1c2VzIHRva2VuaXplLm9wZW4oKSB0byBzdXBwb3J0Ci0gIFB5dGhvbiBzY3JpcHRzIHVzaW5nIGEgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gVVRGLTggKHJlYWQgdGhlIGNvZGluZyBjb29raWUKLSAgb2YgdGhlIHNjcmlwdCkuCi0KLS0gSXNzdWUgIzEyNDkzOiBzdWJwcm9jZXNzOiBQb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGhhbmRsZXMgRUlOVFIgZXJyb3JzCi0gIGlmIHRoZSBwcm9jZXNzIGhhcyBvbmx5IG9uZSBwaXBlLgotCi0tIElzc3VlICMxMjQ2Nzogd2FybmluZ3M6IGZpeCBhIHJhY2UgY29uZGl0aW9uIGlmIGEgd2FybmluZyBpcyBlbWl0dGVkIGF0Ci0gIHNodXRkb3duLCBpZiBnbG9iYWxzKClbJ19fZmlsZV9fJ10gaXMgTm9uZS4KLQotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBpbXBvcnRmaWxlKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBydW5weTogcnVuX3BhdGgoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIHN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzCi0gIHRoYW4gVVRGLTggKHNjcmlwdHMgdXNpbmcgdGhlIGNvZGluZyBjb29raWUpLgotCi0tIElzc3VlICMxMjQ1MTogeG1sLmRvbS5wdWxsZG9tOiBwYXJzZSgpIG5vdyBvcGVucyBmaWxlcyBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkCi0gIG9mIHRoZSB0ZXh0IG1vZGUgKHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTIxNDc6IEFkanVzdCB0aGUgbmV3LWluLTMuMiBzbXRwbGliLnNlbmRfbWVzc2FnZSBtZXRob2QgZm9yIGJldHRlcgotICBjb25mb3JtYW5jZSB0byB0aGUgUkZDczogY29ycmVjdGx5IGhhbmRsZSBTZW5kZXIgYW5kIFJlc2VudC0gaGVhZGVycy4KLQotLSBJc3N1ZSAjMTIzNTI6IEZpeCBhIGRlYWRsb2NrIGluIG11bHRpcHJvY2Vzc2luZy5IZWFwIHdoZW4gYSBibG9jayBpcyBmcmVlZCBieQotICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igd2hpbGUgdGhlIEhlYXAgbG9jayBpcyBoZWxkLgotCi0tIElzc3VlICMxMjQ2MjogdGltZS5zbGVlcCgpIG5vdyBpbW1lZGlhdGVseSBjYWxscyB0aGUgKFB5dGhvbikgc2lnbmFsIGhhbmRsZXIKLSAgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdhaXQgdW50aWwgdGhlIG5leHQKLSAgaW5zdHJ1Y3Rpb24uCi0KLS0gSXNzdWUgIzEyNDQyOiBuZXcgc2h1dGlsLmRpc2tfdXNhZ2UgZnVuY3Rpb24sIHByb3ZpZGluZyB0b3RhbCwgdXNlZCBhbmQgZnJlZQotICBkaXNrIHNwYWNlIHN0YXRpc3RpY3MuCi0KLS0gSXNzdWUgIzEyNDUxOiBUaGUgWEluY2x1ZGUgZGVmYXVsdCBsb2FkZXIgb2YgeG1sLmV0cmVlIG5vdyBkZWNvZGVzIGZpbGVzIGZyb20KLSAgVVRGLTggaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBJdCBub3cKLSAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlCi0gIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZQotICBhbnltb3JlIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLAotICB0byByZWFkIHRoZSBQeXRob24gc2NyaXB0IGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgotCi0tIElzc3VlICMxMjQ1MTogZGlzdHV0aWxzIG5vdyBvcGVucyB0aGUgc2V0dXAgc2NyaXB0IGluIGJpbmFyeSBtb2RlIHRvIHJlYWQgdGhlCi0gIGVuY29kaW5nIGNvb2tpZSwgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIFVURi04LgotCi0tIElzc3VlICM5NTE2OiBPbiBNYWMgT1MgWCwgY2hhbmdlIERpc3R1dGlscyB0byBubyBsb25nZXIgZ2xvYmFsbHkgYXR0ZW1wdCB0bwotICBjaGVjayBvciBzZXQgdGhlIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlCi0gIGludGVycHJldGVyIHByb2Nlc3MuICBUaGlzIGNvdWxkIGNhdXNlIGZhaWx1cmVzIGluIG5vbi1EaXN0dXRpbHMgc3VicHJvY2Vzc2VzCi0gIGFuZCB3YXMgdW5yZWxpYWJsZSBzaW5jZSB0ZXN0cyBvciB1c2VyIHByb2dyYW1zIGNvdWxkIG1vZGlmeSB0aGUgaW50ZXJwcmV0ZXIKLSAgZW52aXJvbm1lbnQgYWZ0ZXIgRGlzdHV0aWxzIHNldCBpdC4gIEluc3RlYWQsIGhhdmUgRGlzdHV0aWxzIHNldCB0aGUKLSAgZGVwbG95bWVudCB0YXJnZXQgb25seSBpbiB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBidWlsZCBzdWJwcm9jZXNzLiAgSXQgaXMKLSAgc3RpbGwgcG9zc2libGUgdG8gZ2xvYmFsbHkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYnkgc2V0dGluZwotICBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgYmVmb3JlIGxhdW5jaGluZyB0aGUgaW50ZXJwcmV0ZXI7IGl0cyB2YWx1ZSBtdXN0IGJlCi0gIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIHRoZSB2YWx1ZSB3aXRoIHdoaWNoIHRoZSBpbnRlcnByZXRlcgotICB3YXMgYnVpbHQuICBBbHNvLCBpbXBsZW1lbnQgdGhlIHNhbWUgaGFuZGxpbmcgaW4gcGFja2FnaW5nLgotCi0tIElzc3VlICMxMjQyMjogSW4gdGhlIGNvcHkgbW9kdWxlLCBkb24ndCBzdG9yZSBvYmplY3RzIHRoYXQgYXJlIHRoZWlyIG93biBjb3B5Ci0gIGluIHRoZSBtZW1vIGRpY3QuCi0KLS0gSXNzdWUgIzEyMzAzOiBBZGQgc2lnd2FpdGluZm8oKSBhbmQgc2lndGltZWR3YWl0KCkgdG8gdGhlIHNpZ25hbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzEyNDA0OiBSZW1vdmUgQzg5IGluY29tcGF0aWJsZSBjb2RlIGZyb20gbW1hcCBtb2R1bGUuIFBhdGNoIGJ5IEFraXJhCi0gIEtpdGFkYS4KLQotLSBJc3N1ZSAjMTg3NDogZW1haWwgbm93IGRldGVjdHMgYW5kIHJlcG9ydHMgYXMgYSBkZWZlY3QgdGhlIHByZXNlbmNlIG9mCi0gIGFueSBDVEUgb3RoZXIgdGhhbiA3Yml0LCA4Yml0LCBvciBiaW5hcnkgb24gYSBtdWx0aXBhcnQuCi0KLS0gSXNzdWUgIzEyMzgzOiBGaXggc3VicHJvY2VzcyBtb2R1bGUgd2l0aCBlbnY9e306IGRvbid0IGNvcHkgdGhlIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlcywgc3RhcnQgd2l0aCBhbiBlbXB0eSBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjMTE2Mzc6IEZpeCBzdXBwb3J0IGZvciBpbXBvcnRpbmcgcGFja2FnaW5nIHNldHVwIGhvb2tzIGZyb20gdGhlCi0gIHByb2plY3QgZGlyZWN0b3J5LgotCi0tIElzc3VlICM2NzcxOiBNb3ZlZCB0aGUgY3Vyc2VzLndyYXBwZXIgZnVuY3Rpb24gZnJvbSB0aGUgc2luZ2xlLWZ1bmN0aW9uCi0gIHdyYXBwZXIgbW9kdWxlIGludG8gX19pbml0X18sIGVsaW1pbmF0aW5nIHRoZSBtb2R1bGUuICBTaW5jZSBfX2luaXRfXyB3YXMKLSAgYWxyZWFkeSBpbXBvcnRpbmcgdGhlIGZ1bmN0aW9uIHRvIGN1cnNlcy53cmFwcGVyLCB0aGVyZSBpcyBubyBBUEkgY2hhbmdlLgotCi0tIElzc3VlICMxMTU4NDogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZSBoZWFkZXIKLSAgcGFzc2VkIHRvIGl0IGlzIGEgSGVhZGVyIG9iamVjdCwgYW5kIEhlYWRlci9tYWtlX2hlYWRlciBubyBsb25nZXIgZmFpbAotICBpZiBnaXZlbiBiaW5hcnkgdW5rbm93bi04Yml0IGlucHV0LgotCi0tIElzc3VlICMxMTcwMDogbWFpbGJveCBwcm94eSBvYmplY3QgY2xvc2UgbWV0aG9kcyBjYW4gbm93IGJlIGNhbGxlZCBtdWx0aXBsZQotICB0aW1lcyB3aXRob3V0IGVycm9yLgotCi0tIElzc3VlICMxMTc2NzogQ29ycmVjdCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBtYWlsYm94J3MgX19nZXRpdGVtX18gbWV0aG9kLgotCi0tIElzc3VlICMxMjEzMzogQWJzdHJhY3RIVFRQSGFuZGxlci5kb19vcGVuKCkgb2YgdXJsbGliLnJlcXVlc3QgY2xvc2VzIHRoZSBIVFRQCi0gIGNvbm5lY3Rpb24gaWYgaXRzIGdldHJlc3BvbnNlKCkgbWV0aG9kIGZhaWxzIHdpdGggYSBzb2NrZXQgZXJyb3IuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgRXppbyBNZWxvdHRpLgotCi0tIElzc3VlICMxMjI0MDogQWxsb3cgbXVsdGlwbGUgc2V0dXAgaG9va3MgaW4gcGFja2FnaW5nJ3Mgc2V0dXAuY2ZnIGZpbGVzLgotICBPcmlnaW5hbCBwYXRjaCBieSBFcmlrIEJyYXkuCi0KLS0gSXNzdWUgIzkyODQ6IEFsbG93IGluc3BlY3QuZmluZHNvdXJjZSgpIHRvIGZpbmQgdGhlIHNvdXJjZSBvZiBkb2N0ZXN0Ci0gIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTE1OTU6IEZpeCBhc3NvcnRlZCBidWdzIGluIHBhY2thZ2luZy51dGlsLmNmZ190b19hcmdzLCBhCi0gIGNvbXBhdGliaWxpdHkgaGVscGVyIGZvciB0aGUgZGlzdHV0aWxzLXBhY2thZ2luZyB0cmFuc2l0aW9uLiAgT3JpZ2luYWwgcGF0Y2gKLSAgYnkgRXJpayBCcmF5LgotCi0tIElzc3VlICMxMjI4NzogSW4gb3NzYXVkaW9kZXYsIGNoZWNrIHRoYXQgdGhlIGRldmljZSBpc24ndCBjbG9zZWQgaW4gc2V2ZXJhbAotICBtZXRob2RzLgotCi0tIElzc3VlICMxMjAwOTogRml4ZWQgcmVncmVzc2lvbiBpbiBuZXRyYyBmaWxlIGNvbW1lbnQgaGFuZGxpbmcuCi0KLS0gSXNzdWUgIzEyMjQ2OiBXYXJuIGFuZCBmYWlsIHdoZW4gdHJ5aW5nIHRvIGluc3RhbGwgYSB0aGlyZC1wYXJ0eSBwcm9qZWN0IGZyb20KLSAgYW4gdW5pbnN0YWxsZWQgUHl0aG9uIChidWlsdCBpbiBhIHNvdXJjZSBjaGVja291dCkuICBPcmlnaW5hbCBwYXRjaCBieQotICBUc2hlcGFuZyBMZWtob25raG9iZS4KLQotLSBJc3N1ZSAjMTA2OTQ6IHppcGZpbGUgbm93IGlnbm9yZXMgZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIGEgemlwZmlsZS4KLQotLSBJc3N1ZSAjMTIyODM6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gc210cGxpYiBxdW90aW5nIG9mIGxlYWRpbmcgZG90cyBpbiBEQVRBLgotCi0tIElzc3VlICMxMDQyNDogQXJncGFyc2Ugbm93IGluY2x1ZGVzIHRoZSBuYW1lcyBvZiB0aGUgbWlzc2luZyByZXF1aXJlZAotICBhcmd1bWVudHMgaW4gdGhlIG1pc3NpbmcgYXJndW1lbnRzIGVycm9yIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzEyMTY4OiBTeXNMb2dIYW5kbGVyIG5vdyBhbGxvd3MgTlVMIHRlcm1pbmF0aW9uIHRvIGJlIGNvbnRyb2xsZWQgdXNpbmcKLSAgYSBuZXcgJ2FwcGVuZF9udWwnIGF0dHJpYnV0ZSBvbiB0aGUgaGFuZGxlci4KLQotLSBJc3N1ZSAjMTE1ODM6IFNwZWVkIHVwIG9zLnBhdGguaXNkaXIgb24gV2luZG93cyBieSB1c2luZyBHZXRGaWxlQXR0cmlidXRlcwotICBpbnN0ZWFkIG9mIG9zLnN0YXQuCi0KLS0gSXNzdWUgIzEyMDIxOiBNYWtlIG1tYXAncyByZWFkKCkgbWV0aG9kIGFyZ3VtZW50IG9wdGlvbmFsLiBQYXRjaCBieSBQZXRyaQotICBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjOTIwNTogY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3Igbm93IGRldGVjdHMga2lsbGVkCi0gIGNoaWxkcmVuIGFuZCByYWlzZXMgQnJva2VuUHJvY2Vzc1Bvb2wgaW4gc3VjaCBhIHNpdHVhdGlvbi4gIFByZXZpb3VzbHkgaXQKLSAgd291bGQgcmVsaWFibHkgZnJlZXplL2RlYWRsb2NrLgotCi0tIElzc3VlICMxMjA0MDogRXhwb3NlIGEgbmV3IGF0dHJpYnV0ZSBgYHNlbnRpbmVsYGAgb24gaW5zdGFuY2VzIG9mCi0gIGBgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgYC4gIEFsc28sIGZpeCBQcm9jZXNzLmpvaW4oKSB0byBub3QgdXNlIHBvbGxpbmcKLSAgYW55bW9yZSwgd2hlbiBnaXZlbiBhIHRpbWVvdXQuCi0KLS0gSXNzdWUgIzExODkzOiBSZW1vdmUgb2Jzb2xldGUgaW50ZXJuYWwgd3JhcHBlciBjbGFzcyBgYFNTTEZha2VGaWxlYGAgaW4gdGhlCi0gIHNtdHBsaWIgbW9kdWxlLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KLQotLSBJc3N1ZSAjMTIwODA6IEZpeCBhIERlY2ltYWwucG93ZXIoKSBjYXNlIHRoYXQgdG9vayBhbiB1bnJlYXNvbmFibHkgbG9uZyB0aW1lCi0gIHRvIGNvbXB1dGUuCi0KLS0gSXNzdWUgIzEyMjIxOiBSZW1vdmUgX192ZXJzaW9uX18gYXR0cmlidXRlcyBmcm9tIHB5ZXhwYXQsIHBpY2tsZSwgdGFyZmlsZSwKLSAgcHlkb2MsIHRraW50ZXIsIGFuZCB4bWwucGFyc2Vycy5leHBhdC4gVGhpcyB3ZXJlIHVzZWxlc3MgdmVyc2lvbiBjb25zdGFudHMKLSAgbGVmdCBvdmVyIGZyb20gdGhlIE1lcmN1cmlhbCB0cmFuc2l0aW9uCi0KLS0gTmFtZWQgdHVwbGVzIG5vdyB3b3JrIGNvcnJlY3RseSB3aXRoIHZhcnMoKS4KLQotLSBJc3N1ZSAjMTIwODU6IEZpeCBhbiBhdHRyaWJ1dGUgZXJyb3IgaW4gc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIGlmIHRoZQotICBjb25zdHJ1Y3RvciBoYXMgZmFpbGVkLCBlLmcuIGJlY2F1c2Ugb2YgYW4gdW5kZWNsYXJlZCBrZXl3b3JkIGFyZ3VtZW50LiBQYXRjaAotICB3cml0dGVuIGJ5IE9sZWcgT3NobXlhbi4KLQotLSBJc3N1ZSAjMTIwMjg6IE1ha2UgdGhyZWFkaW5nLl9nZXRfaWRlbnQoKSBwdWJsaWMsIHJlbmFtZSBpdCB0bwotICB0aHJlYWRpbmcuZ2V0X2lkZW50KCkgYW5kIGRvY3VtZW50IGl0LiBUaGlzIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IHVzZWQgdXNpbmcKLSAgX3RocmVhZC5nZXRfaWRlbnQoKS4KLQotLSBJc3N1ZSAjMTIxNzE6IEluY3JlbWVudGFsRW5jb2Rlci5yZXNldCgpIG9mIENKSyBjb2RlY3MgKG11bHRpYnl0ZWNvZGVjKSBjYWxscwotICBlbmNyZXNldCgpIGluc3RlYWQgb2YgZGVjcmVzZXQoKS4KLQotLSBJc3N1ZSAjMTIyMTg6IFJlbW92ZWQgd3NnaXJlZi5lZ2ctaW5mby4KLQotLSBJc3N1ZSAjMTIxOTY6IEFkZCBwaXBlMigpIHRvIHRoZSBvcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLgotICBQYXRjaCBieSBNaGVyIE1vdnNpc3lhbi4KLQotLSBJc3N1ZSAjMTYyNTogQloyRmlsZSBhbmQgYnoyLmRlY29tcHJlc3MoKSBub3cgc3VwcG9ydCBtdWx0aS1zdHJlYW0gZmlsZXMuCi0gIEluaXRpYWwgcGF0Y2ggYnkgTmlyIEFpZGVzLgotCi0tIElzc3VlICMxMjE3NTogQnVmZmVyZWRSZWFkZXIucmVhZCgtMSkgbm93IGNhbGxzIHJhdy5yZWFkYWxsKCkgaWYgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgb25seSByZWFkcyB0aGUgZmlsZSBwb3NpdGlvbiBhbmQgc2l6ZQotICBvbmNlLgotCi0tIElzc3VlICMxMjE3NTogUmF3SU9CYXNlLnJlYWRhbGwoKSBub3cgcmV0dXJucyBOb25lIGlmIHJlYWQoKSByZXR1cm5zIE5vbmUuCi0KLS0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYW4gSU9FcnJvcgotICBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuCi0KLS0gSXNzdWUgIzExMTA5OiBOZXcgc2VydmljZV9hY3Rpb24gbWV0aG9kIGZvciBCYXNlU2VydmVyLCB1c2VkIGJ5IEZvcmtpbmdNaXhpbgotICBjbGFzcyBmb3IgY2xlYW51cC4gSW5pdGlhbCBQYXRjaCBieSBKdXN0aW4gV2Fya2VudGluLgotCi0tIElzc3VlICMxMjA0NTogQXZvaWQgZHVwbGljYXRlIGV4ZWN1dGlvbiBvZiBjb21tYW5kIGluCi0gIGN0eXBlcy51dGlsLl9nZXRfc29uYW1lKCkuICBQYXRjaCBieSBTaWppbiBKb3NlcGguCi0KLS0gSXNzdWUgIzEwODE4OiBSZW1vdmUgdGhlIFRrIEdVSSBhbmQgdGhlIHNlcnZlKCkgZnVuY3Rpb24gb2YgdGhlIHB5ZG9jIG1vZHVsZSwKLSAgcHlkb2MgLWcgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yIGFuZCBpdCBoYXMgYSBuZXcgZW5oYW5jZWQgd2ViCi0gIHNlcnZlci4KLQotLSBJc3N1ZSAjMTQ0MTUzMDogSW4gaW1hcGxpYiwgcmVhZCB0aGUgZGF0YSBpbiBvbmUgY2h1bmsgdG8gc3BlZWQgdXAgbGFyZ2UKLSAgcmVhZHMgYW5kIHNpbXBsaWZ5IGNvZGUuCi0KLS0gSXNzdWUgIzEyMDcwOiBGaXggdGhlIE1ha2VmaWxlIHBhcnNlciBvZiB0aGUgc3lzY29uZmlnIG1vZHVsZSB0byBoYW5kbGUKLSAgY29ycmVjdGx5IHJlZmVyZW5jZXMgdG8gImJvZ3VzIHZhcmlhYmxlIiAoZS5nLiAicHJlZml4PSQvb3B0L3B5dGhvbiIpLgotCi0tIElzc3VlICMxMjEwMDogRG9uJ3QgcmVzZXQgaW5jcmVtZW50YWwgZW5jb2RlcnMgb2YgQ0pLIGNvZGVjcyBhdCBlYWNoIGNhbGwgdG8KLSAgdGhlaXIgZW5jb2RlKCkgbWV0aG9kIGFueW1vcmUsIGJ1dCBjb250aW51ZSB0byBjYWxsIHRoZSByZXNldCgpIG1ldGhvZCBpZiB0aGUKLSAgZmluYWwgYXJndW1lbnQgaXMgVHJ1ZS4KLQotLSBJc3N1ZSAjMTIwNDk6IEFkZCBSQU5EX2J5dGVzKCkgYW5kIFJBTkRfcHNldWRvX2J5dGVzKCkgZnVuY3Rpb25zIHRvIHRoZSBzc2wKLSAgbW9kdWxlLgotCi0tIElzc3VlICM2NTAxOiBvcy5kZXZpY2VfZW5jb2RpbmcoKSByZXR1cm5zIE5vbmUgb24gV2luZG93cyBpZiB0aGUgYXBwbGljYXRpb24KLSAgaGFzIG5vIGNvbnNvbGUuCi0KLS0gSXNzdWUgIzEyMTA1OiBBZGQgT19DTE9FWEVDIHRvIHRoZSBvcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzEyMDc5OiBEZWNpbWFsKCdJbmZpbml0eScpLmZtYShEZWNpbWFsKCcwJyksICgzLjkxMjI0MzE4MTI2Nzg2ZSsxOSswaikpCi0gIG5vdyByYWlzZXMgVHlwZUVycm9yIChyZWZsZWN0aW5nIHRoZSBpbnZhbGlkIHR5cGUgb2YgdGhlIDNyZCBhcmd1bWVudCkgcmF0aGVyCi0gIHRoYW4gRGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLgotCi0tIElzc3VlICMxMjEyNDogemlwaW1wb3J0IGRvZXNuJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byB6bGliLmRlY29tcHJlc3MoKSBhbnltb3JlCi0gIHRvIGJlIGFibGUgdG8gdW5sb2FkIHRoZSBtb2R1bGUuCi0KLS0gQWRkIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCBhbiBpbXByb3ZlZCBmb3JrIG9mIGRpc3R1dGlscyAoYWxzbyBrbm93biBhcwotICBkaXN0dXRpbHMyKS4KLQotLSBJc3N1ZSAjMTIwNjU6IGNvbm5lY3RfZXgoKSBvbiBhbiBTU0wgc29ja2V0IG5vdyByZXR1cm5zIHRoZSBvcmlnaW5hbCBlcnJubwotICB3aGVuIHRoZSBzb2NrZXQncyB0aW1lb3V0IGV4cGlyZXMgKGl0IHVzZWQgdG8gcmV0dXJuIE5vbmUpLgotCi0tIElzc3VlICM4ODA5OiBUaGUgU01UUF9TU0wgY29uc3RydWN0b3IgYW5kIFNNVFAuc3RhcnR0bHMoKSBub3cgc3VwcG9ydAotICBwYXNzaW5nIGEgYGBjb250ZXh0YGAgYXJndW1lbnQgcG9pbnRpbmcgdG8gYW4gc3NsLlNTTENvbnRleHQgaW5zdGFuY2UuCi0gIFBhdGNoIGJ5IEthc3VuIEhlcmF0aC4KLQotLSBJc3N1ZSAjOTUxNjogSXNzdWUgIzk1MTY6IGF2b2lkIGVycm9ycyBpbiBzeXNjb25maWcgd2hlbiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKLSAgaXMgc2V0IGluIHNoZWxsLgotCi0tIElzc3VlICM4NjUwOiBNYWtlIHpsaWIgbW9kdWxlIDY0LWJpdCBjbGVhbi4gY29tcHJlc3MoKSwgZGVjb21wcmVzcygpIGFuZAotICB0aGVpciBpbmNyZW1lbnRhbCBjb3VudGVycGFydHMgbm93IHJhaXNlIE92ZXJmbG93RXJyb3IgaWYgZ2l2ZW4gYW4gaW5wdXQKLSAgbGFyZ2VyIHRoYW4gNEdCLCBpbnN0ZWFkIG9mIHNpbGVudGx5IHRydW5jYXRpbmcgdGhlIGlucHV0IGFuZCByZXR1cm5pbmcKLSAgYW4gaW5jb3JyZWN0IHJlc3VsdC4KLQotLSBJc3N1ZSAjMTIwNTA6IHpsaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgY2xlYXJzIHRoZSB1bmNvbnN1bWVkX3RhaWwKLSAgYXR0cmlidXRlIHdoZW4gY2FsbGVkIHdpdGhvdXQgYSBtYXhfbGVuZ3RoIGFyZ3VtZW50LgotCi0tIElzc3VlICMxMjA2MjogRml4IGEgZmx1c2hpbmcgYnVnIHdoZW4gZG9pbmcgYSBjZXJ0YWluIHR5cGUgb2YgSS9PIHNlcXVlbmNlCi0gIG9uIGEgZmlsZSBvcGVuZWQgaW4gcmVhZCt3cml0ZSBtb2RlIChuYW1lbHk6IHJlYWRpbmcsIHNlZWtpbmcgYSBiaXQgZm9yd2FyZCwKLSAgd3JpdGluZywgdGhlbiBzZWVraW5nIGJlZm9yZSB0aGUgcHJldmlvdXMgd3JpdGUgYnV0IHN0aWxsIHdpdGhpbiBidWZmZXJlZAotICBkYXRhLCBhbmQgd3JpdGluZyBhZ2FpbikuCi0KLS0gSXNzdWUgIzk5NzE6IFdyaXRlIGFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bygpLgotICBQYXRjaCBieSBKb2huIE8nQ29ubm9yLgotCi0tIElzc3VlICMxMTc5OTogdXJsbGliLnJlcXVlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlcnMgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IKLSAgd2hlbiBwcmVzZW50ZWQgd2l0aCBhbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuIFBhdGNoIGNvbnRyaWJ1dGVkCi0gIGJ5IFl1dmFsIEdyZWVuZmllbGQuCi0KLS0gSXNzdWUgIzEwNDE5LCAjNjAxMTogYnVpbGRfc2NyaXB0cyBjb21tYW5kIG9mIGRpc3R1dGlscyBoYW5kbGVzIGNvcnJlY3RseQotICBub24tQVNDSUkgcGF0aCAocGF0aCB0byB0aGUgUHl0aG9uIGV4ZWN1dGFibGUpLiBPcGVuIGFuZCB3cml0ZSB0aGUgc2NyaXB0IGluCi0gIGJpbmFyeSBtb2RlLCBidXQgZW5zdXJlIHRoYXQgdGhlIHNoZWJhbmcgaXMgZGVjb2RhYmxlIGZyb20gVVRGLTggYW5kIGZyb20gdGhlCi0gIGVuY29kaW5nIG9mIHRoZSBzY3JpcHQuCi0KLS0gSXNzdWUgIzg0OTg6IEluIHNvY2tldC5hY2NlcHQoKSwgYWxsb3cgdG8gc3BlY2lmeSAwIGFzIGEgYmFja2xvZyB2YWx1ZSBpbgotICBvcmRlciB0byBhY2NlcHQgZXhhY3RseSBvbmUgY29ubmVjdGlvbi4gIFBhdGNoIGJ5IERhbmllbCBFdmVycy4KLQotLSBJc3N1ZSAjMTIwMTE6IHNpZ25hbC5zaWduYWwoKSBhbmQgc2lnbmFsLnNpZ2ludGVycnVwdCgpIHJhaXNlIGFuIE9TRXJyb3IsCi0gIGluc3RlYWQgb2YgYSBSdW50aW1lRXJyb3I6IE9TRXJyb3IgaGFzIGFuIGVycm5vIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMzcwOTogYWRkIGEgZmx1c2hfaGVhZGVycyBtZXRob2QgdG8gQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgd2hpY2gKLSAgbWFuYWdlcyB0aGUgc2VuZGluZyBvZiBoZWFkZXJzIHRvIG91dHB1dCBzdHJlYW0gYW5kIGZsdXNoaW5nIHRoZSBpbnRlcm5hbAotICBoZWFkZXJzIGJ1ZmZlci4gUGF0Y2ggY29udHJpYnV0aW9uIGJ5IEFuZHJldyBTY2hhYWYKLQotLSBJc3N1ZSAjMTE3NDM6IFJld3JpdGUgbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb24gY2xhc3NlcyBpbiBwdXJlIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTExNjQ6IFN0b3AgdHJ5aW5nIHRvIHVzZSBfeG1scGx1cyBpbiB0aGUgeG1sIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTE4ODg6IEFkZCBsb2cyIGZ1bmN0aW9uIHRvIG1hdGggbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IE1hcmsKLSAgRGlja2luc29uLgotCi0tIElzc3VlICMxMjAxMjogc3NsLlBST1RPQ09MX1NTTHYyIGJlY29tZXMgb3B0aW9uYWwuCi0KLS0gSXNzdWUgIzg0MDc6IFRoZSBzaWduYWwgaGFuZGxlciB3cml0ZXMgdGhlIHNpZ25hbCBudW1iZXIgYXMgYSBzaW5nbGUgYnl0ZQotICBpbnN0ZWFkIG9mIGEgbnVsIGJ5dGUgaW50byB0aGUgd2FrZXVwIGZpbGUgZGVzY3JpcHRvci4gU28gaXQgaXMgcG9zc2libGUgdG8KLSAgd2FpdCBtb3JlIHRoYW4gb25lIHNpZ25hbCBhbmQga25vdyB3aGljaCBzaWduYWxzIHdlcmUgcmFpc2VkLgotCi0tIElzc3VlICM4NDA3OiBBZGQgcHRocmVhZF9raWxsKCksIHNpZ3BlbmRpbmcoKSBhbmQgc2lnd2FpdCgpIGZ1bmN0aW9ucyB0byB0aGUKLSAgc2lnbmFsIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTE5Mjc6IFNNVFBfU1NMIG5vdyB1c2VzIHBvcnQgNDY1IGJ5IGRlZmF1bHQgYXMgZG9jdW1lbnRlZC4gIFBhdGNoCi0gIGJ5IEthc3VuIEhlcmF0aC4KLQotLSBJc3N1ZSAjMTIwMDI6IGZ0cGxpYidzIGFib3J0KCkgbWV0aG9kIHJhaXNlcyBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzExOTE2OiBBZGQgYSBudW1iZXIgb2YgTWFjT1NYIHNwZWNpZmljIGRlZmluaXRpb25zIHRvIHRoZSBlcnJubyBtb2R1bGUuCi0gIFBhdGNoIGJ5IFBpZXJyZSBDYXJyaWVyLgotCi0tIElzc3VlICMxMTk5OTogZml4ZWQgc3BvcmFkaWMgc3luYyBmYWlsdXJlIG1haWxib3guTWFpbGRpciBkdWUgdG8gaXRzIHRyeWluZyB0bwotICBkZXRlY3QgbXRpbWUgY2hhbmdlcyBieSBjb21wYXJpbmcgdG8gdGhlIHN5c3RlbSBjbG9jayBpbnN0ZWFkIG9mIHRvIHRoZQotICBwcmV2aW91cyB2YWx1ZSBvZiB0aGUgbXRpbWUuCi0KLS0gSXNzdWUgIzExMDcyOiBhZGRlZCBNTFNEIGNvbW1hbmQgKFJGQy0zNjU5KSBzdXBwb3J0IHRvIGZ0cGxpYi4KLQotLSBJc3N1ZSAjODgwODogVGhlIElNQVA0X1NTTCBjb25zdHJ1Y3RvciBub3cgYWxsb3dzIHBhc3NpbmcgYW4gU1NMQ29udGV4dAotICBwYXJhbWV0ZXIgdG8gY29udHJvbCBwYXJhbWV0ZXJzIG9mIHRoZSBzZWN1cmUgY2hhbm5lbC4gIFBhdGNoIGJ5IFNpamluCi0gIEpvc2VwaC4KLQotLSBudHBhdGguc2FtZWZpbGUgZmFpbGVkIHRvIG5vdGljZSB0aGF0ICJhLnR4dCIgYW5kICJBLlRYVCIgcmVmZXIgdG8gdGhlIHNhbWUKLSAgZmlsZSBvbiBXaW5kb3dzIFhQLiBBcyBub3RpY2VkIGluIGlzc3VlICMxMDY4NC4KLQotLSBJc3N1ZSAjMTIwMDA6IFdoZW4gYSBTU0wgY2VydGlmaWNhdGUgaGFzIGEgc3ViamVjdEFsdE5hbWUgd2l0aG91dCBhbnkKLSAgZE5TTmFtZSBlbnRyeSwgc3NsLm1hdGNoX2hvc3RuYW1lKCkgc2hvdWxkIHVzZSB0aGUgc3ViamVjdCdzIGNvbW1vbk5hbWUuCi0gIFBhdGNoIGJ5IE5pY29sYXMgQmFyZWlsLgotCi0tIElzc3VlICMxMDc3NTogYXNzZXJ0UmFpc2VzLCBhc3NlcnRSYWlzZXNSZWdleCwgYXNzZXJ0V2FybnMsIGFuZAotICBhc3NlcnRXYXJuc1JlZ2V4IG5vdyBhY2NlcHQgYSBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIHdoZW4gdXNlZCBhcyBjb250ZXh0Ci0gIG1hbmFnZXJzLiAgSW5pdGlhbCBwYXRjaCBieSBXaW5zdG9uIEV3ZXJ0LgotCi0tIElzc3VlICMxMDY4NDogc2h1dGlsLm1vdmUgdXNlZCB0byBkZWxldGUgYSBmb2xkZXIgb24gY2FzZSBpbnNlbnNpdGl2ZQotICBmaWxlc3lzdGVtcyB3aGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0Ci0gIGZvciB0aGUgY2FzZS4KLQotLSBJc3N1ZSAjMTE2NDc6IG9iamVjdHMgY3JlYXRlZCB1c2luZyBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyIG5vdyBzdXBwb3J0Ci0gIG1vcmUgdGhhbiBvbmUgY2FsbCB0byB0aGUgZnVuY3Rpb24gd2hlbiB1c2VkIGFzIGEgZGVjb3JhdG9yLiBJbml0aWFsIHBhdGNoCi0gIGJ5IFlzaiBSYXkuCi0KLS0gSXNzdWUgIzExOTMwOiBSZW1vdmVkIGRlcHJlY2F0ZWQgdGltZS5hY2NlcHQyZHllYXIgdmFyaWFibGUuCi0gIFJlbW92ZWQgeWVhciA+PSAxMDAwIHJlc3RyaWN0aW9uIGZyb20gZGF0ZXRpbWUuc3RyZnRpbWUuCi0KLS0gbG9nZ2luZzogZG9uJ3QgZGVmaW5lIFF1ZXVlTGlzdGVuZXIgaWYgUHl0aG9uIGhhcyBubyB0aHJlYWQgc3VwcG9ydC4KLQotLSBmdW5jdG9vbHMuY21wX3RvX2tleSgpIG5vdyB3b3JrcyB3aXRoIGNvbGxlY3Rpb25zLkhhc2hhYmxlKCkuCi0KLS0gSXNzdWUgIzExMjc3OiBtbWFwLm1tYXAoKSBjYWxscyBmY250bChmZCwgRl9GVUxMRlNZTkMpIG9uIE1hYyBPUyBYIHRvIGdldAotICBhcm91bmQgYSBtbWFwIGJ1ZyB3aXRoIHNwYXJzZSBmaWxlcy4gUGF0Y2ggd3JpdHRlbiBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgotCi0tIElzc3VlICM4NDA3OiBBZGQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpIGZ1bmN0aW9uIHRvIGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlCi0gIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KLQotLSBJc3N1ZSAjMTE4NTg6IGNvbmZpZ3BhcnNlci5FeHRlbmRlZEludGVycG9sYXRpb24gZXhwZWN0ZWQgbG93ZXItY2FzZSBzZWN0aW9uCi0gIG5hbWVzLgotCi0tIElzc3VlICMxMTMyNDogQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSkgbm93IHdvcmtzIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTE4MTE6IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCkgaXMgbm93IElQdjYtY29tcGF0aWJsZS4gIFBhdGNoCi0gIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTE3NjM6IGRvbid0IHVzZSBkaWZmbGliIGluIFRlc3RDYXNlLmFzc2VydE11bHRpTGluZUVxdWFsIGlmIHRoZQotICBzdHJpbmdzIGFyZSB0b28gbG9uZy4KLQotLSBJc3N1ZSAjMTEyMzY6IGdldHBhc3MuZ2V0cGFzcyByZXNwb25kcyB0byBjdHJsLWMgb3IgY3RybC16IG9uIHRlcm1pbmFsLgotCi0tIElzc3VlICMxMTg1NjogU3BlZWQgdXAgcGFyc2luZyBvZiBKU09OIG51bWJlcnMuCi0KLS0gSXNzdWUgIzExMDA1OiB0aHJlYWRpbmcuUkxvY2soKS5fcmVsZWFzZV9zYXZlKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQotICBsb2NrIHdhcyBub3QgYWNxdWlyZWQuCi0KLS0gSXNzdWUgIzExMjU4OiBTcGVlZCB1cCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKSB1bmRlciBMaW51eCBieSBhIGZhY3RvcgotICBvZiA1IHRvIDEwLiAgSW5pdGlhbCBwYXRjaCBieSBKb25hcyBILgotCi0tIElzc3VlICMxMTM4MjogVHJpdmlhbCBzeXN0ZW0gY2FsbHMsIHN1Y2ggYXMgZHVwKCkgb3IgcGlwZSgpLCBuZWVkbid0Ci0gIHJlbGVhc2UgdGhlIEdJTC4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTEyMjM6IEFkZCB0aHJlYWRpbmcuX2luZm8oKSBmdW5jdGlvbiBwcm92aWRpbmcgaW5mb3JtYXRpb25zIGFib3V0Ci0gIHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzExNzMxOiBzaW1wbGlmeS9lbmhhbmNlIGVtYWlsIHBhcnNlci9nZW5lcmF0b3IgQVBJIGJ5IGludHJvZHVjaW5nCi0gIHBvbGljeSBvYmplY3RzLgotCi0tIElzc3VlICMxMTc2ODogVGhlIHNpZ25hbCBoYW5kbGVyIG9mIHRoZSBzaWduYWwgbW9kdWxlIG9ubHkgY2FsbHMKLSAgUHlfQWRkUGVuZGluZ0NhbGwoKSBmb3IgdGhlIGZpcnN0IHNpZ25hbCB0byBmaXggYSBkZWFkbG9jayBvbiByZWVudHJhbnQgb3IKLSAgcGFyYWxsZWwgY2FsbHMuIFB5RXJyX1NldEludGVycnVwdCgpIHdyaXRlcyBhbHNvIGludG8gdGhlIHdha2UgdXAgZmlsZS4KLQotLSBJc3N1ZSAjMTE0OTI6IGZpeCBzZXZlcmFsIGlzc3VlcyB3aXRoIGhlYWRlciBmb2xkaW5nIGluIHRoZSBlbWFpbCBwYWNrYWdlLgotCi0tIElzc3VlICMxMTg1MjogQWRkIG1pc3NpbmcgaW1wb3J0cyBhbmQgdXBkYXRlIHRlc3RzLgotCi0tIElzc3VlICMxMTg3NTogY29sbGVjdGlvbnMuT3JkZXJlZERpY3QncyBfX3JlZHVjZV9fIHdhcyB0ZW1wb3JhcmlseQotICBtdXRhdGluZyB0aGUgb2JqZWN0IGluc3RlYWQgb2YganVzdCB3b3JraW5nIG9uIGEgY29weS4KLQotLSBJc3N1ZSAjMTE0Njc6IEZpeCB1cmxwYXJzZSBiZWhhdmlvciB3aGVuIGhhbmRsaW5nIHVybHMgd2hpY2ggY29udGFpbnMgc2NoZW1lCi0gIHNwZWNpZmljIHBhcnQgb25seSBkaWdpdHMuIFBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgotCi0tIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS5jb3B5KCkgbm93IHdvcmtzIGNvcnJlY3RseSBmb3Igc3ViY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTE0NzQ6IEZpeCB0aGUgYnVnIHdpdGggdXJsMnBhdGhuYW1lKCkgaGFuZGxpbmcgb2YgJy9DfC8nIG9uIFdpbmRvd3MuCi0gIFBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgotCi0tIElzc3VlICMxMTY4NDogY29tcGxldGUgZW1haWwucGFyc2VyIGJ5dGVzIEFQSSBieSBhZGRpbmcgQnl0ZXNIZWFkZXJQYXJzZXIuCi0KLS0gVGhlIGJ6MiBtb2R1bGUgbm93IGhhbmRsZXMgNEdpQisgaW5wdXQgYnVmZmVycyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzkyMzM6IEZpeCBqc29uLmxvYWRzKCd7fScpIHRvIHJldHVybiBhIGRpY3QgKGluc3RlYWQgb2YgYSBsaXN0KSwgd2hlbgotICBfanNvbiBpcyBub3QgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxMTgzMDogUmVtb3ZlIHVubmVjZXNzYXJ5IGludHJvc3BlY3Rpb24gY29kZSBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzExNzAzOiB1cmxsaWIyLmdldHVybCgpIGRvZXMgbm90IHJldHVybiBjb3JyZWN0IHVybCB3aGVuIHRoZSBvcmlnaW5hbAotICB1cmwgY29udGFpbnMgI2ZyYWdtZW50LgotCi0tIElzc3VlICMxMDAxOTogRml4ZWQgcmVncmVzc2lvbiBpbiBqc29uIG1vZHVsZSB3aGVyZSBhbiBpbmRlbnQgb2YgMCBzdG9wcGVkCi0gIGFkZGluZyBuZXdsaW5lcyBhbmQgYWN0ZWQgaW5zdGVhZCBsaWtlICdOb25lJy4KLQotLSBJc3N1ZSAjMTExODY6IHB5ZG9jIGlnbm9yZXMgYSBtb2R1bGUgaWYgaXRzIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUKLSAgY2hhcmFjdGVyIGluIHRoZSBpbmRleCBvZiBtb2R1bGVzLgotCi0tIElzc3VlICMxMTgxNTogVXNlIGEgbGlnaHQtd2VpZ2h0IFNpbXBsZVF1ZXVlIGZvciB0aGUgcmVzdWx0IHF1ZXVlIGluCi0gIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgotCi0tIElzc3VlICM1MTYyOiBUcmVhdCBzZXJ2aWNlcyBsaWtlIGZyb3plbiBleGVjdXRhYmxlcyB0byBhbGxvdyBjaGlsZCBzcGF3bmluZwotICBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIG9uIFdpbmRvd3MuCi0KLS0gbG9nZ2luZy5iYXNpY0NvbmZpZyBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgJ2hhbmRsZXJzJyBhcmd1bWVudCB0YWtpbmcgYW4KLSAgaXRlcmFibGUgb2YgaGFuZGxlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIHJvb3QgbG9nZ2VyLiBBZGRpdGlvbmFsIHBhcmFtZXRlcgotICBjaGVja3Mgd2VyZSBhbHNvIGFkZGVkIHRvIGJhc2ljQ29uZmlnLgotCi0tIElzc3VlICMxMTgxNDogRml4IGxpa2VseSB0eXBvIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sLl90ZXJtaW5hdGUoKS4KLQotLSBJc3N1ZSAjMTE3NDc6IEZpeCByYW5nZSBmb3JtYXR0aW5nIGluIGRpZmZsaWIuY29udGV4dF9kaWZmKCkgYW5kCi0gIGRpZmZsaWIudW5pZmllZF9kaWZmKCkuCi0KLS0gSXNzdWUgIzg0Mjg6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sIHdoZW4gdGVybWluYXRpbmcKLSAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nCi0gIHNodXQgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMjY1MDogcmUuZXNjYXBlKCkgbm8gbG9uZ2VyIGVzY2FwZXMgdGhlICdfJy4KLQotLSBJc3N1ZSAjMTE3NTc6IHNlbGVjdC5zZWxlY3QoKSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhIG5lZ2F0aXZlIHRpbWVvdXQKLSAgaXMgcGFzc2VkIChwcmV2aW91c2x5LCBhIHNlbGVjdC5lcnJvciB3aXRoIEVJTlZBTCB3b3VsZCBiZSByYWlzZWQpLiAgUGF0Y2gKLSAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICM3MzExOiBmaXggaHRtbC5wYXJzZXIgdG8gYWNjZXB0IG5vbi1BU0NJSSBhdHRyaWJ1dGUgdmFsdWVzLgotCi0tIElzc3VlICMxMTYwNTogZW1haWwucGFyc2VyLkJ5dGVzRmVlZFBhcnNlciB3YXMgaW5jb3JyZWN0bHkgY29udmVydGluZwotICBtdWx0aXBhcnQgc3VicGFydHMgd2l0aCBhbiA4LWJpdCBDVEUgaW50byB1bmljb2RlIGluc3RlYWQgb2YgcHJlc2VydmluZyB0aGUKLSAgYnl0ZXMuCi0KLS0gSXNzdWUgIzE2OTA2MDg6IGVtYWlsLnV0aWwuZm9ybWF0YWRkciBpcyBub3cgUkZDIDIwNDcgYXdhcmU6IGl0IG5vdyBoYXMgYQotICBjaGFyc2V0IHBhcmFtZXRlciB0aGF0IGRlZmF1bHRzIHRvIHV0Zi04IGFuZCBpcyB1c2VkIGFzIHRoZSBjaGFyc2V0IGZvciBSRkMKLSAgMjA0NyBlbmNvZGluZyB3aGVuIHRoZSByZWFsbmFtZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjMTA5NjM6IEVuc3VyZSB0aGF0IHN1YnByb2Nlc3MuY29tbXVuaWNhdGUoKSBuZXZlciByYWlzZXMgRVBJUEUuCi0KLS0gSXNzdWUgIzEwNzkxOiBJbXBsZW1lbnQgbWlzc2luZyBtZXRob2QgR3ppcEZpbGUucmVhZDEoKSwgYWxsb3dpbmcgR3ppcEZpbGUKLSAgdG8gYmUgd3JhcHBlZCBpbiBhIFRleHRJT1dyYXBwZXIuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExNzA3OiBBZGRlZCBhIGZhc3QgQyB2ZXJzaW9uIG9mIGZ1bmN0b29scy5jbXBfdG9fa2V5KCkuCi0gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzExNjg4OiBBZGQgc3FsaXRlMy5Db25uZWN0aW9uLnNldF90cmFjZV9jYWxsYmFjaygpLiAgUGF0Y2ggYnkKLSAgVG9yc3RlbiBMYW5kc2Nob2ZmLgotCi0tIElzc3VlICMxMTc0NjogRml4IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkgdG8gYWNjZXB0IGVsbGlwdGljIGN1cnZlCi0gIHByaXZhdGUga2V5cy4KLQotLSBJc3N1ZSAjNTg2MzogUmV3cml0ZSBCWjJGaWxlIGluIHB1cmUgUHl0aG9uLCBhbmQgYWxsb3cgaXQgdG8gYWNjZXB0Ci0gIGZpbGUtbGlrZSBvYmplY3RzIHVzaW5nIGEgbmV3IGBgZmlsZW9iamBgIGNvbnN0cnVjdG9yIGFyZ3VtZW50LiAgUGF0Y2ggYnkKLSAgTmFkZWVtIFZhd2RhLgotCi0tIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFNhbWVFbGVtZW50cyBoYXMgYmVlbiByZW1vdmVkLgotCi0tIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgaW5pdGZzZW5jb2RpbmcoKSB3YXMgbm90Ci0gIGNhbGxlZCB5ZXQ6IGRldGVjdCBib290c3RyYXAgKHN0YXJ0dXApIGlzc3VlcyBlYXJsaWVyLgotCi0tIElzc3VlICMxMTM5MzogQWRkIHRoZSBuZXcgZmF1bHRoYW5kbGVyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTE2MTg6IEZpeCB0aGUgdGltZW91dCBsb2dpYyBpbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCkgdW5kZXIgV2luZG93cy4KLQotLSBSZW1vdmVkIHRoZSAnc3RyaWN0JyBhcmd1bWVudCB0byBlbWFpbC5wYXJzZXIuUGFyc2VyLCB3aGljaCBoYXMgYmVlbgotICBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAyLjQuCi0KLS0gSXNzdWUgIzExMjU2OiBGaXggaW5zcGVjdC5nZXRjYWxsYXJncyBvbiBmdW5jdGlvbnMgdGhhdCB0YWtlIG9ubHkga2V5d29yZAotICBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzExNjk2OiBGaXggSUQgZ2VuZXJhdGlvbiBpbiBtc2lsaWIuCi0KLS0gaXRlcnRvb2xzLmFjY3VtdWxhdGUgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICpmdW5jKiBhcmd1bWVudCBmb3IKLSAgYSB1c2VyLXN1cHBsaWVkIGJpbmFyeSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTE2OTI6IFJlbW92ZSB1bm5lY2Vzc2FyeSBkZW1vIGZ1bmN0aW9ucyBpbiBzdWJwcm9jZXNzIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTY5NjogRml4IGV4Y2VwdGlvbiBpbmNvcnJlY3RseSByYWlzZWQgYnkgeGRybGliLlBhY2tlci5wYWNrX2ludCB3aGVuCi0gIHRyeWluZyB0byBwYWNrIGEgbmVnYXRpdmUgKGluLXJhbmdlKSBpbnRlZ2VyLgotCi0tIElzc3VlICMxMTY3NTogbXVsdGlwcm9jZXNzaW5nLltSYXddQXJyYXkgb2JqZWN0cyBjcmVhdGVkIGZyb20gYW4gaW50ZWdlciBzaXplCi0gIGFyZSBub3cgemVyb2VkIG9uIGNyZWF0aW9uLiAgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvdXIgc3BlY2lmaWVkIGJ5IHRoZQotICBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM3NjM5OiBGaXggc2hvcnQgZmlsZSBuYW1lIGdlbmVyYXRpb24gaW4gYmRpc3RfbXNpCi0KLS0gSXNzdWUgIzExNjM1OiBEb24ndCB1c2UgcG9sbGluZyBpbiB3b3JrZXIgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGxhdW5jaGVkIGJ5Ci0gIGNvbmN1cnJlbnQuZnV0dXJlcy4KLQotLSBJc3N1ZSAjNTg0NTogQXV0b21hdGljYWxseSByZWFkIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24gdG8gZW5hYmxlIGNvbXBsZXRpb24KLSAgaW4gaW50ZXJhY3RpdmUgbW9kZS4KLQotLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCi0gIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQotICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCi0KLS0gSXNzdWUgIzg3NTQ6IEhhdmUgaW1wb3J0bGliIHVzZSB0aGUgcmVwciBvZiBhIG1vZHVsZSBuYW1lIGluIGVycm9yIG1lc3NhZ2VzLgotCi0tIElzc3VlICMxMTU5MTogUHJldmVudCAiaW1wb3J0IHNpdGUiIGZyb20gbW9kaWZ5aW5nIHN5cy5wYXRoIHdoZW4gcHl0aG9uCi0gIHdhcyBzdGFydGVkIHdpdGggLVMuCi0KLS0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBhZGRzIGEgX3NvdXJjZSBhdHRyaWJ1dGUgdG8gdGhlIGdlbmVyYXRlZAotICBjbGFzcy4gIFRoaXMgbWFrZSB0aGUgc291cmNlIG1vcmUgYWNjZXNzaWJsZSB0aGFuIHRoZSBvdXRkYXRlZAotICAidmVyYm9zZSIgb3B0aW9uIHdoaWNoIHByaW50cyB0byBzdGRvdXQgYnV0IGRvZXNuJ3QgbWFrZSB0aGUgc291cmNlCi0gIHN0cmluZyBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzExMzcxOiBNYXJrIGdldG9wdCBlcnJvciBtZXNzYWdlcyBhcyBsb2NhbGl6YWJsZS4gIFBhdGNoIGJ5IEZpbGlwCi0gIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzExMzMzOiBBZGQgX19zbG90c19fIHRvIGNvbGxlY3Rpb25zIEFCQ3MuCi0KLS0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXy4KLQotLSBJc3N1ZSAjMTE2NjY6IGxldCBoZWxwKCkgZGlzcGxheSBuYW1lZCB0dXBsZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzCi0gIHRoYXQgc3RhcnQgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZS4KLQotLSBJc3N1ZSAjMTE2NjI6IE1ha2UgdXJsbGliIGFuZCB1cmxsaWIyIGlnbm9yZSByZWRpcmVjdGlvbnMgaWYgdGhlCi0gIHNjaGVtZSBpcyBub3QgSFRUUCwgSFRUUFMgb3IgRlRQIChDVkUtMjAxMS0xNTIxKS4KLQotLSBJc3N1ZSAjNTUzNzogRml4IHRpbWUyaXNveigpIGFuZCB0aW1lMm5ldHNjYXBlKCkgZnVuY3Rpb25zIG9mCi0gIGh0dHBsaWIuY29va2llamFyIGZvciBleHBpcmF0aW9uIHllYXIgZ3JlYXRlciB0aGFuIDIwMzggb24gMzItYml0IHN5c3RlbXMuCi0KLS0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgZ2V0dGV4dCBwbHVyYWwgZm9ybXMgaW4gb3B0cGFyc2UuCi0KLS0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgotCi0tIElzc3VlICMxMTU2MzogYGBDb25uZWN0aW9uOiBjbG9zZWBgIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgotICBjbGFzcyB3aGljaCBoZWxwcyBpbiBjbG9zaW5nIG9mIHNvY2tldHMgYWZ0ZXIgY29ubmVjdGlvbiBpcyBvdmVyLiBQYXRjaAotICBjb250cmlidXRpb25zIGJ5IEplZmYgTWNOZWlsIGFuZCBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExNDU5OiBBIGBgYnVmc2l6ZWBgIHZhbHVlIG9mIDAgaW4gc3VicHJvY2Vzcy5Qb3BlbigpIHJlYWxseSBjcmVhdGVzCi0gIHVuYnVmZmVyZWQgcGlwZXMsIHN1Y2ggdGhhdCBzZWxlY3QoKSB3b3JrcyBwcm9wZXJseSBvbiB0aGVtLgotCi0tIElzc3VlICM1NDIxOiBGaXggbWlzbGVhZGluZyBlcnJvciBtZXNzYWdlIHdoZW4gb25lIG9mIHNvY2tldC5zZW5kdG8oKSdzCi0gIGFyZ3VtZW50cyBoYXMgdGhlIHdyb25nIHR5cGUuICBQYXRjaCBieSBOaWtpdGEgVmV0b3Noa2luLgotCi0tIElzc3VlICMxMDgxMjogQWRkIHNvbWUgZXh0cmEgcG9zaXggZnVuY3Rpb25zIHRvIHRoZSBvcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwOTc5OiB1bml0dGVzdCBzdGRvdXQgYnVmZmVyaW5nIG5vdyB3b3JrcyB3aXRoIGNsYXNzIGFuZCBtb2R1bGUKLSAgc2V0dXAgYW5kIHRlYXJkb3duLgotCi0tIElzc3VlICMxMTI0MzogZml4IHRoZSBwYXJhbWV0ZXIgcXVlcnlpbmcgbWV0aG9kcyBvZiBNZXNzYWdlIHRvIHdvcmsgaWYKLSAgdGhlIGhlYWRlcnMgY29udGFpbiB1bi1lbmNvZGVkIG5vbi1BU0NJSSBkYXRhLgotCi0tIElzc3VlICMxMTQwMTogZml4IGhhbmRsaW5nIG9mIGhlYWRlcnMgd2l0aCBubyB2YWx1ZTsgdGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24KLSAgcmVsYXRpdmUgdG8gUHl0aG9uMiBhbmQgdGhlIHJlc3VsdCBpcyBub3cgdGhlIHNhbWUgYXMgaXQgd2FzIGluIFB5dGhvbjIuCi0KLS0gSXNzdWUgIzkyOTg6IGJhc2U2NCBib2RpZXMgd2VyZW4ndCBiZWluZyBmb2xkZWQgdG8gbGluZSBsZW5ndGhzIGxlc3MgdGhhbiA3OCwKLSAgd2hpY2ggd2FzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yLiAgVW5saWtlIFB5dGhvbjIsIHRoZSBsYXN0IGxpbmUKLSAgb2YgdGhlIGZvbGRlZCBib2R5IG5vdyBlbmRzIHdpdGggYSBjYXJyaWFnZSByZXR1cm4uCi0KLS0gSXNzdWUgIzExNTYwOiBzaHV0aWwudW5wYWNrX2FyY2hpdmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIHRoZSBmb3JtYXQKLSAgcGFyYW1ldGVyLiBQYXRjaCBieSBFdmFuIERhbmRyZWEuCi0KLS0gSXNzdWUgIzU4NzA6IEFkZCBgc3VicHJvY2Vzcy5ERVZOVUxMYCBjb25zdGFudC4KLQotLSBJc3N1ZSAjMTExMzM6IGZpeCB0d28gY2FzZXMgd2hlcmUgaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBjYW4gdHJpZ2dlciBjb2RlCi0gIGV4ZWN1dGlvbi4gUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICMxMTU2OTogdXNlIGFic29sdXRlIHBhdGggdG8gdGhlIHN5c2N0bCBjb21tYW5kIGluIG11bHRpcHJvY2Vzc2luZyB0bwotICBlbnN1cmUgdGhhdCBpdCB3aWxsIGJlIGZvdW5kIHJlZ2FyZGxlc3Mgb2YgdGhlIHNoZWxsIFBBVEguIFRoaXMgZW5zdXJlcwotICB0aGF0IG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQgd29ya3Mgb24gZGVmYXVsdCBpbnN0YWxscyBvZiBNYWNPU1guCi0KLS0gSXNzdWUgIzExNTAxOiBkaXN1dGlscy5hcmNoaXZlX3V0aWxzLm1ha2VfemlwZmlsZSBubyBsb25nZXIgZmFpbHMgaWYgemxpYiBpcwotICBub3QgaW5zdGFsbGVkLiBJbnN0ZWFkLCB0aGUgemlwZmlsZS5aSVBfU1RPUkVEIGNvbXByZXNzaW9uIGlzIHVzZWQgdG8gY3JlYXRlCi0gIHRoZSBaaXBGaWxlLiBQYXRjaCBieSBOYXRhbGlhIEIuIEJpZGFydC4KLQotLSBJc3N1ZSAjMTEyODk6IGBzbXRwLlNNVFBgIGNsYXNzIGlzIG5vdyBhIGNvbnRleHQgbWFuYWdlciBzbyBpdCBjYW4gYmUgdXNlZAotICBpbiBhIGB3aXRoYCBzdGF0ZW1lbnQuICBDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2xhLgotCi0tIElzc3VlICMxMTU1NDogRml4ZWQgc3VwcG9ydCBmb3IgSmFwYW5lc2UgY29kZWNzOyBwcmV2aW91c2x5IHRoZSBib2R5IG91dHB1dAotICBlbmNvZGluZyB3YXMgbm90IGRvbmUgaWYgZXVjLWpwIG9yIHNoaWZ0LWppcyB3YXMgc3BlY2lmaWVkIGFzIHRoZSBjaGFyc2V0LgotCi0tIElzc3VlICMxMTQwNzogYFRlc3RDYXNlLnJ1bmAgcmV0dXJucyB0aGUgcmVzdWx0IG9iamVjdCB1c2VkIG9yIGNyZWF0ZWQuCi0gIENvbnRyaWJ1dGVkIGJ5IEphbmF0aGFuIEhhcnRsZXkuCi0KLS0gSXNzdWUgIzExNTAwOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgT1MgWCBwcm94eSBieXBhc3MgY29kZSBmb3IgZnVsbHkgcXVhbGlmaWVkCi0gIElQIGFkZHJlc3NlcyBpbiB0aGUgcHJveHkgZXhjZXB0aW9uIGxpc3QuCi0KLS0gSXNzdWUgIzExNDkxOiBkYm0uZXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCB3aGVuIGRibS5vcGVuIGlzIGNhbGxlZCB3aXRoCi0gIHRoZSAibiIgYXMgdGhlIGZsYWcgYXJndW1lbnQgYW5kIHRoZSBmaWxlIGV4aXN0cy4gVGhlIGJlaGF2aW9yIG1hdGNoZXMKLSAgdGhlIGRvY3VtZW50YXRpb24gYW5kIGdlbmVyYWwgbG9naWMuCi0KLS0gSXNzdWUgIzExNjI0Nzc6IFBvc3RlbCBQcmluY2lwbGUgYWRqdXN0bWVudCB0byBlbWFpbCBkYXRlIHBhcnNpbmc6IGhhbmRsZSB0aGUKLSAgZmFjdCB0aGF0IHNvbWUgbm9uLWNvbXBsaWFudCBNVUFzIHVzZSAnLicgaW5zdGVhZCBvZiAnOicgaW4gdGltZSBzcGVjcy4KLQotLSBJc3N1ZSAjMTExMzE6IEZpeCBzaWduIG9mIHplcm8gaW4gZGVjaW1hbC5EZWNpbWFsIHBsdXMgYW5kIG1pbnVzCi0gIG9wZXJhdGlvbnMgd2hlbiB0aGUgcm91bmRpbmcgbW9kZSBpcyBST1VORF9GTE9PUi4KLQotLSBJc3N1ZSAjOTkzNTogU3BlZWQgdXAgcGlja2xpbmcgb2YgaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLgotCi0tIElzc3VlICM1NjIyOiBGaXggY3Vyc2VzLndyYXBwZXIgdG8gcmFpc2UgY29ycmVjdCBleGNlcHRpb24gaWYgY3Vyc2VzCi0gIGluaXRpYWxpemF0aW9uIGZhaWxzLgotCi0tIElzc3VlICMxMTQwODogSW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpLCBvbmx5IGNhbGwgZ2V0dGltZW9mZGF5KCkgd2hlbgotICByZWFsbHkgbmVjZXNzYXJ5LiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTM5MTogV3JpdGluZyB0byBhIG1tYXAgb2JqZWN0IGNyZWF0ZWQgd2l0aAotICBgYG1tYXAuUFJPVF9SRUFEfG1tYXAuUFJPVF9FWEVDYGAgd291bGQgc2VnZmF1bHQgaW5zdGVhZCBvZiByYWlzaW5nIGEKLSAgVHlwZUVycm9yLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICM5Nzk1OiBhZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgZm9yIG5udHBsaWIuTk5UUCBjbGFzcy4KLQotLSBJc3N1ZSAjMTEzMDY6IG1haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4KLSAgY2VydGFpbiBmaWxlcyBpbiByZWFkLXdyaXRlIG1vZGUuICBQcmV2aW91c2x5IGl0IGRldGVjdGVkIHRoaXMgYnkKLSAgY2hlY2tpbmcgZm9yIEVBQ0NFUywgbm93IGl0IGFsc28gY2hlY2tzIGZvciBFUk9GUy4KLQotLSBJc3N1ZSAjMTEyNjU6IGFzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMKLSAgb24gYWNjZXB0KCksIHNlbmQoKSBhbmQgcmVjdigpLgotCi0tIElzc3VlICMxMTM3NzogRGVwcmVjYXRlIHBsYXRmb3JtLnBvcGVuKCkgYW5kIHJlaW1wbGVtZW50IGl0IHdpdGggb3MucG9wZW4oKS4KLQotLSBJc3N1ZSAjODUxMzogT24gVU5JWCwgc3VicHJvY2VzcyBzdXBwb3J0cyBieXRlcyBjb21tYW5kIHN0cmluZy4KLQotLSBJc3N1ZSAjMTA4NjY6IEFkZCBzb2NrZXQuc2V0aG9zdG5hbWUoKS4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzExMTQwOiBMb2NrLnJlbGVhc2UoKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIHdoZW4gYXR0ZW1wdGluZwotICB0byByZWxlYXNlIGFuIHVuYWNxdWlyZWQgbG9jaywgYXMgY2xhaW1lZCBpbiB0aGUgdGhyZWFkaW5nIGRvY3VtZW50YXRpb24uCi0gIFRoZSBfdGhyZWFkLmVycm9yIGV4Y2VwdGlvbiBpcyBub3cgYW4gYWxpYXMgb2YgUnVudGltZUVycm9yLiAgUGF0Y2ggYnkKLSAgRmlsaXAgR3J1c3pjennFhHNraS4gIFBhdGNoIGZvciBfZHVtbXlfdGhyZWFkIGJ5IEF5bWVyaWMgQXVndXN0aW4uCi0KLS0gSXNzdWUgIzg1OTQ6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYSBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB3aGljaAotICAoYWRkcmVzcywgcG9ydCkgdG8gYmluZCB0byBiZWZvcmUgY29ubmVjdGluZy4KLQotLSBJc3N1ZSAjMTEzMjY6IEFkZCB0aGUgbWlzc2luZyBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24gZm9yIFNTTCBzb2NrZXRzLAotICBhbmQgbWFrZSBpdCB3b3JrIGZvciBub24tYmxvY2tpbmcgY29ubmVjdHMuCi0KLS0gSXNzdWUgIzExMjk3OiBBZGQgY29sbGVjdGlvbnMuQ2hhaW5NYXAoKS4KLQotLSBJc3N1ZSAjMTA3NTU6IEFkZCB0aGUgcG9zaXguZmxpc3RkaXIoKSBmdW5jdGlvbi4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICM0NzYxOiBBZGQgdGhlIGBgKmF0KClgYCBmYW1pbHkgb2YgZnVuY3Rpb25zIChvcGVuYXQoKSwgZXRjLikgdG8gdGhlCi0gIHBvc2l4IG1vZHVsZS4gIFBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICM3MzIyOiBUcnlpbmcgdG8gcmVhZCBmcm9tIGEgc29ja2V0J3MgZmlsZS1saWtlIG9iamVjdCBhZnRlciBhIHRpbWVvdXQKLSAgb2NjdXJyZWQgbm93IHJhaXNlcyBhbiBlcnJvciBpbnN0ZWFkIG9mIHNpbGVudGx5IGxvc2luZyBkYXRhLgotCi0tIElzc3VlICMxMTI5MTogcG9wbGliLlBPUCBubyBsb25nZXIgc3VwcHJlc3NlcyBlcnJvcnMgb24gcXVpdCgpLgotCi0tIElzc3VlICMxMTE3NzogYXN5bmNvcmUncyBjcmVhdGVfc29ja2V0KCkgYXJndW1lbnRzIGNhbiBub3cgYmUgb21pdHRlZC4KLQotLSBJc3N1ZSAjNjA2NDogQWRkIGEgYGBkYWVtb25gYCBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSB0aHJlYWRpbmcuVGhyZWFkCi0gIGFuZCBtdWx0aXByb2Nlc3NpbmcuUHJvY2VzcyBjb25zdHJ1Y3RvcnMgaW4gb3JkZXIgdG8gb3ZlcnJpZGUgdGhlCi0gIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGluaGVyaXRpbmcgdGhlIGRhZW1vbmljIHByb3BlcnR5IGZyb20gdGhlIGN1cnJlbnQKLSAgdGhyZWFkL3Byb2Nlc3MuCi0KLS0gSXNzdWUgIzEwOTU2OiBCdWZmZXJlZCBJL08gY2xhc3NlcyByZXRyeSByZWFkaW5nIG9yIHdyaXRpbmcgYWZ0ZXIgYSBzaWduYWwKLSAgaGFzIGFycml2ZWQgYW5kIHRoZSBoYW5kbGVyIHJldHVybmVkIHN1Y2Nlc3NmdWxseS4KLQotLSBJc3N1ZSAjMTA3ODQ6IE5ldyBvcy5nZXRwcmlvcml0eSgpIGFuZCBvcy5zZXRwcmlvcml0eSgpIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTExMTQ6IEZpeCBjYXRhc3Ryb3BoaWMgcGVyZm9ybWFuY2Ugb2YgdGVsbCgpIG9uIHRleHQgZmlsZXMgKHVwCi0gIHRvIDEwMDB4IGZhc3RlciBpbiBzb21lIGNhc2VzKS4gIEl0IGlzIHN0aWxsIG9uZSB0byB0d28gb3JkZXIgb2YgbWFnbml0dWRlcwotICBzbG93ZXIgdGhhbiBiaW5hcnkgdGVsbCgpLgotCi0tIElzc3VlICMxMDg4MjogQWRkIG9zLnNlbmRmaWxlIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMDg2ODogQWxsb3cgdXNhZ2Ugb2YgdGhlIHJlZ2lzdGVyIG1ldGhvZCBvZiBhbiBBQkMgYXMgYSBjbGFzcwotICBkZWNvcmF0b3IuCi0KLS0gSXNzdWUgIzExMjI0OiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW4gdGFyZmlsZSB0aGF0IGFmZmVjdGVkIHRoZSBmaWxlLWxpa2UKLSAgb2JqZWN0cyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgcmVnYXJkaW5nIHBlcmZvcm1hbmNlLCBtZW1vcnkKLSAgY29uc3VtcHRpb24gYW5kIGZhaWx1cmVzIHdpdGggdGhlIHN0cmVhbSBpbnRlcmZhY2UuCi0KLS0gSXNzdWUgIzEwOTI0OiBBZGRpbmcgc2FsdCBhbmQgTW9kdWxhciBDcnlwdCBGb3JtYXQgdG8gY3J5cHQgbGlicmFyeS4KLSAgTW92ZWQgb2xkIEMgd3JhcHBlciB0byBfY3J5cHQsIGFuZCBhZGRlZCBhIFB5dGhvbiB3cmFwcGVyIHdpdGgKLSAgZW5oYW5jZWQgc2FsdCBnZW5lcmF0aW9uIGFuZCBzaW1wbGVyIEFQSSBmb3IgcGFzc3dvcmQgZ2VuZXJhdGlvbi4KLQotLSBJc3N1ZSAjMTEwNzQ6IE1ha2UgJ3Rva2VuaXplJyBzbyBpdCBjYW4gYmUgcmVsb2FkZWQuCi0KLS0gSXNzdWUgIzExMDg1OiBNb3ZlZCBjb2xsZWN0aW9ucyBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaW50byBhIHNlcGFyYXRlCi0gIG1vZHVsZSBjYWxsZWQgY29sbGVjdGlvbnMuYWJjLCBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gdXNlZCBieSBpbXBvcnRsaWIuYWJjLgotICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBuYW1lcyBhcmUgaW1wb3J0ZWQgaW50byB0aGUgY29sbGVjdGlvbnMKLSAgbW9kdWxlLgotCi0tIElzc3VlICM0NjgxOiBBbGxvdyBtbWFwKCkgdG8gd29yayBvbiBmaWxlIHNpemVzIGFuZCBvZmZzZXRzIGxhcmdlciB0aGFuCi0gIDRHQiwgZXZlbiBvbiAzMi1iaXQgYnVpbGRzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbCwgYWRhcHRlZCBmb3IKLSAgMzItYml0IFdpbmRvd3MuCi0KLS0gSXNzdWUgIzExMTY5OiBjb21waWxlYWxsIG1vZHVsZSB1c2VzIHJlcHIoKSB0byBmb3JtYXQgZmlsZW5hbWVzIGFuZCBwYXRocyB0bwotICBlc2NhcGUgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHNob3cgc3BhY2VzLgotCi0tIElzc3VlICMxMTA4OTogRml4IHBlcmZvcm1hbmNlIGlzc3VlIGxpbWl0aW5nIHRoZSB1c2Ugb2YgQ29uZmlnUGFyc2VyKCkKLSAgd2l0aCBsYXJnZSBjb25maWcgZmlsZXMuCi0KLS0gSXNzdWUgIzEwMjc2OiBGaXggdGhlIHJlc3VsdHMgb2YgemxpYi5jcmMzMigpIGFuZCB6bGliLmFkbGVyMzIoKSBvbiBidWZmZXJzCi0gIGxhcmdlciB0aGFuIDRHQi4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTEzODg6IEFkZGVkIGEgY2xlYXIoKSBtZXRob2QgdG8gTXV0YWJsZVNlcXVlbmNlCi0KLS0gSXNzdWUgIzExMTc0OiBBZGQgYXJncGFyc2UuTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyLCB3aGljaCB1c2VzIHR5cGUgbmFtZXMKLSAgZm9yIHRoZSBuYW1lcyBvZiBvcHRpb25hbCBhbmQgcG9zaXRpb25hbCBhcmd1bWVudHMgaW4gaGVscCBtZXNzYWdlcy4KLQotLSBJc3N1ZSAjOTM0ODogUmFpc2UgYW4gZWFybHkgZXJyb3IgaWYgYXJncGFyc2UgbmFyZ3MgYW5kIG1ldGF2YXIgZG9uJ3QgbWF0Y2guCi0KLS0gSXNzdWUgIzkwMjY6IEZpeCBvcmRlciBvZiBhcmdwYXJzZSBzdWItY29tbWFuZHMgaW4gaGVscCBtZXNzYWdlcy4KLQotLSBJc3N1ZSAjOTM0NzogRml4IGZvcm1hdHRpbmcgZm9yIHR1cGxlcyBpbiBhcmdwYXJzZSB0eXBlPSBlcnJvciBtZXNzYWdlcy4KLQotLSBJc3N1ZSAjMTIxOTE6IEFkZGVkIHNodXRpbC5jaG93bigpIHRvIGNoYW5nZSB1c2VyIGFuZC9vciBncm91cCBvd25lciBvZiBhCi0gIGdpdmVuIHBhdGggYWxzbyBzcGVjaWZ5aW5nIHRoZWlyIG5hbWVzLgotCi0tIElzc3VlICMxMzk4ODogVGhlIF9lbGVtZW50dHJlZSBhY2NlbGVyYXRvciBpcyB1c2VkIHdoZW5ldmVyIGF2YWlsYWJsZS4KLSAgTm93IHhtbC5ldHJlZS5jRWxlbWVudFRyZWUgYmVjb21lcyBhIGRlcHJlY2F0ZWQgYWxpYXMgdG8gRWxlbWVudFRyZWUuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM2ODA3OiBSdW4gbXNpc3VwcG9ydC5tYWsgZWFybGllci4KLQotLSBJc3N1ZSAjMTA1ODA6IE1pbm9yIGdyYW1tYXIgY2hhbmdlIGluIFdpbmRvd3MgaW5zdGFsbGVyLgotCi0tIElzc3VlICMxMzMyNjogQ2xlYW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMgY29ycmVjdGx5IG9uIE9wZW5CU0QuCi0KLS0gUEVQIDM5MzogdGhlIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLXdpZGUtdW5pY29kZSBpcyByZW1vdmVkLgotCi0tIElzc3VlICMxMjg1MjogU2V0IF9YT1BFTl9TT1VSQ0UgdG8gNzAwLCBpbnN0ZWFkIG9mIDYwMCwgdG8gZ2V0IFBPU0lYIDIwMDgKLSAgZnVuY3Rpb25zIG9uIE9wZW5CU0QgKGUuZy4gZmRvcGVuZGlyKS4KLQotLSBJc3N1ZSAjMTE4NjM6IFJlbW92ZSBzdXBwb3J0IGZvciBsZWdhY3kgc3lzdGVtcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIKLSAgKGZvbGxvd2luZyBQRVAgMTEpLiAgVGhlc2Ugc3lzdGVtcyBhcmUgc3lzdGVtcyB1c2luZyBNYWNoIEMgVGhyZWFkcywKLSAgU3VuT1MgbGlnaHR3ZWlnaHQgcHJvY2Vzc2VzLCBHTlUgcHRoIHRocmVhZHMgYW5kIElSSVggdGhyZWFkcy4KLQotLSBJc3N1ZSAjODc0NjogQ29ycmVjdCBmYXVsdHkgY29uZmlndXJlIGNoZWNrcyBzbyB0aGF0IG9zLmNoZmxhZ3MoKSBhbmQKLSAgb3MubGNoZmxhZ3MoKSBhcmUgb25jZSBhZ2FpbiBidWlsdCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCB0aGVzZQotICBmdW5jdGlvbnMgKEJTRCBhbmQgT1MgWCkuICBBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYCi0gIChVRl9ISURERU4gYW5kIFVGX0NPTVBSRVNTRUQpLgotCi0tIElzc3VlICMxMDY0NTogSW5zdGFsbGluZyBQeXRob24gbm8gbG9uZ2VyIGNyZWF0ZXMgYQotICBQeXRob24tWC5ZLlotcHlYLlkuZWdnLWluZm8gZmlsZSBpbiB0aGUgbGliLWR5bmxvYWQgZGlyZWN0b3J5LgotCi0tIERvIG5vdCBhY2NpZGVudGFsbHkgaW5jbHVkZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc3FsaXRlLmggdHdpY2Ugd2hlbgotICBidWlsZGluZyBzcWxpdGUzLgotCi0tIElzc3VlICMxMTIxNzogRm9yIDY0LWJpdC8zMi1iaXQgTWFjIE9TIFggdW5pdmVyc2FsIGZyYW1ld29yayBidWlsZHMsCi0gIGVuc3VyZSAibWFrZSBpbnN0YWxsIiBjcmVhdGVzIHN5bWxpbmtzIGluIC0tcHJlZml4IGJpbiBmb3IgdGhlICItMzIiCi0gIGZpbGVzIGluIHRoZSBmcmFtZXdvcmsgYmluIGRpcmVjdG9yeSBsaWtlIHRoZSBpbnN0YWxsZXIgZG9lcy4KLQotLSBJc3N1ZSAjMTEzNDc6IFVzZSAtLW5vLWFzLW5lZWRlZCB3aGVuIGxpbmtpbmcgbGlicHl0aG9uMy5zby4KLQotLSBJc3N1ZSAjMTE0MTE6IEZpeCAnbWFrZSBERVNURElSPScgd2l0aCBhIHJlbGF0aXZlIGRlc3RpbmF0aW9uLgotCi0tIElzc3VlICMxMTI2ODogUHJldmVudCBNYWMgT1MgWCBJbnN0YWxsZXIgZmFpbHVyZSBpZiBEb2N1bWVudGF0aW9uCi0gIHBhY2thZ2UgaGFkIHByZXZpb3VzbHkgYmVlbiBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzExNDk1OiBPU0Ygc3VwcG9ydCBpcyBlbGltaW5hdGVkLiBJdCB3YXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93Ci0gIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKLSAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCi0gIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCi0KLS0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgcHl0aG9uIC1tIGlkbGVsaWIKLQotLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwotICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCi0KLS0gSXNzdWUgIzE0MjAwOiBJRExFIHNoZWxsIGNyYXNoIG9uIHByaW50aW5nIG5vbi1CTVAgdW5pY29kZSBjaGFyYWN0ZXIuCi0KLS0gSXNzdWUgIzUyMTk6IFByZXZlbnQgZXZlbnQgaGFuZGxlciBjYXNjYWRlIGluIElETEUuCi0KLS0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KLSAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKLSAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCi0KLS0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCi0gIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAotICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQotICBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjODY0MTogVXBkYXRlIElETEUgMyBzeW50YXggY29sb3JpbmcgdG8gcmVjb2duaXplIGIiLi4iIGFuZCBub3QgdSIuLiIuCi0gIFBhdGNoIGJ5IFRhbCBFaW5hdC4KLQotLSBJc3N1ZSAjMTMyOTY6IEZpeCBJRExFIHRvIGNsZWFyIGNvbXBpbGUgX19mdXR1cmVfXyBmbGFncyBvbiBzaGVsbCByZXN0YXJ0LgotICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCi0KLS0gSXNzdWUgIzk4NzE6IFByZXZlbnQgSURMRSAzIGNyYXNoIHdoZW4gZ2l2ZW4gYnl0ZSBzdGluZ3MKLSAgd2l0aCBpbnZhbGlkIGhleCBlc2NhcGUgc2VxdWVuY2VzLCBsaWtlIGInXHgwJy4KLSAgKE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4pCi0KLS0gSXNzdWUgIzEyNjM2OiBJRExFIHJlYWRzIHRoZSBjb2RpbmcgY29va2llIHdoZW4gZXhlY3V0aW5nIGEgUHl0aG9uIHNjcmlwdC4KLQotLSBJc3N1ZSAjMTI1NDA6IFByZXZlbnQgem9tYmllIElETEUgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgZHVlIHRvIGNoYW5nZXMKLSAgaW4gb3Mua2lsbCgpLgotCi0tIElzc3VlICMxMjU5MDogSURMRSBlZGl0b3Igd2luZG93IG5vdyBhbHdheXMgZGlzcGxheXMgdGhlIGZpcnN0IGxpbmUKLSAgd2hlbiBvcGVuaW5nIGEgbG9uZyBmaWxlLiAgV2l0aCBUayA4LjUsIHRoZSBmaXJzdCBsaW5lIHdhcyBoaWRkZW4uCi0KLS0gSXNzdWUgIzExMDg4OiBkb24ndCBjcmFzaCB3aGVuIHVzaW5nIEY1IHRvIHJ1biBhIHNjcmlwdCBpbiBJRExFIG9uIE1hY09TWAotICB3aXRoIFRrIDguNS4KLQotLSBJc3N1ZSAjMTAyODogVGsgcmV0dXJucyBpbnZhbGlkIFVuaWNvZGUgbnVsbCBpbiAlQTogVW5pY29kZURlY29kZUVycm9yLgotICBXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkCi0gIElETEUgdG8gZXhpdC4gIENvbnZlcnRlZCB0byB2YWxpZCBVbmljb2RlIG51bGwgaW4gUHl0aG9uQ21kKCkuCi0KLS0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5Ci0gIGZpbGUgaW4gYSBwYWNrYWdlLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgotICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgotCi0tIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCi0gIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCi0gIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKLSAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgotCi0tIElzc3VlICMxMzYyODogcHl0aG9uLWdkYi5weSBpcyBub3cgYWJsZSB0byByZXRyaWV2ZSBtb3JlIGZyYW1lcyBpbiB0aGUgUHl0aG9uCi0gIHRyYWNlYmFjayBpZiBQeXRob24gaXMgb3B0aW1pemVkLgotCi0tIElzc3VlICMxMTk5NjogbGlicHl0aG9uIChnZGIpLCByZXBsYWNlICJweS1idCIgY29tbWFuZCBieSAicHktYnQtZnVsbCIgYW5kCi0gIGFkZCBhIHNtYXJ0ZXIgInB5LWJ0IiBjb21tYW5kIHByaW50aW5nIGEgY2xhc3NpYyBQeXRob24gdHJhY2ViYWNrLgotCi0tIElzc3VlICMxMTE3OTogTWFrZSBjY2JlbmNoIHdvcmsgdW5kZXIgUHl0aG9uIDMuMSBhbmQgMi43IGFnYWluLgotCi0tIElzc3VlICMxMDYzOTogcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlCi0gIGFuIGVycm9yIGlmIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIGZpbGUgd2l0aCBtaXhlZCBuZXdsaW5lcy4KLSAgIi0tbmV3bGluZSIgb3B0aW9uIGFkZGVkIHRvIHNwZWNpZnkgbmV3IGxpbmUgY2hhcmFjdGVyLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTY4NDc6IEZpeGVkIGltcHJvcGVyIHVzZSBvZiBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKSBpbgotICBub24tcHlkZWJ1ZyBidWlsZHMuIFNldmVyYWwgZXh0ZW5zaW9uIG1vZHVsZXMgbm93IGNvbXBpbGUgY2xlYW5seSB3aGVuCi0gIGFzc2VydCgpcyBhcmUgZW5hYmxlZCBpbiBzdGFuZGFyZCBidWlsZHMgKC1EREVCVUcgZmxhZykuCi0KLS0gSXNzdWUgIzEzODQwOiBUaGUgZXJyb3IgbWVzc2FnZSBwcm9kdWNlZCBieSBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIKLSAgd2hlbiBnaXZlbiBhIFVuaWNvZGUgc3RyaW5nIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICM5OTc1OiBzb2NrZXQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGZsb3dpbmZvIGFuZCBzY29wZV9pZC4gUGF0Y2ggYnkKLSAgVmlsbW9zIE5lYmVoYWouCi0KLS0gSXNzdWUgIzc3Nzc6IHNvY2tldDogQWRkIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKFBGX1JEUykgc3VwcG9ydC4KLQotLSBJc3N1ZSAjMTMxNTk6IEZpbGVJTyBhbmQgQloyQ29tcHJlc3Nvci9CWjJEZWNvbXByZXNzb3Igbm93IHVzZSBhIGxpbmVhci10aW1lCi0gIGJ1ZmZlciBncm93dGggc3RyYXRlZ3kgaW5zdGVhZCBvZiBhIHF1YWRyYXRpYy10aW1lIG9uZS4KLQotLSBJc3N1ZSAjMTAxNDE6IHNvY2tldDogQWRkIFNvY2tldENBTiAoUEZfQ0FOKSBzdXBwb3J0LiBJbml0aWFsIHBhdGNoIGJ5Ci0gIE1hdHRoaWFzIEZ1Y2hzLCB1cGRhdGVkIGJ5IFRpYWdvIEdvbsOnYWx2ZXMuCi0KLS0gSXNzdWUgIzEzMDcwOiBGaXggYSBjcmFzaCB3aGVuIGEgVGV4dElPV3JhcHBlciBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUKLSAgd291bGQgYmUgZmluYWxpemVkIGFmdGVyIHRoZSByZWZlcmVuY2UgdG8gaXRzIHVuZGVybHlpbmcgQnVmZmVyZWRSV1BhaXIncwotICB3cml0ZXIgZ290IGNsZWFyZWQgYnkgdGhlIEdDLgotCi0tIElzc3VlICMxMjg4MTogY3R5cGVzOiBGaXggc2VnZmF1bHQgd2l0aCBsYXJnZSBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMuCi0KLS0gSXNzdWUgIzEzMDU4OiBvc3NhdWRpb2RldjogZml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gZXJyb3IuIFBhdGNoIGJ5Ci0gIFRob21hcyBKYXJvc2NoLgotCi0tIElzc3VlICMxMzAxMzogY3R5cGVzOiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiBQeUNBcnJheVR5cGVfZnJvbV9jdHlwZS4KLSAgVGhhbmtzIHRvIFN1bWFuIFNhaGEgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIGEgcGF0Y2guCi0KLS0gSXNzdWUgIzEzMDIyOiBGaXg6IF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKCkgZG9lc24ndCBjaGVjayB0aGF0Ci0gIGZpbGUgZGVzY3JpcHRvciB3YXMgYWN0dWFsbHkgcmVjZWl2ZWQuCi0KLS0gSXNzdWUgIzExNzI3MTE6IEFkZCAnbG9uZyBsb25nJyBzdXBwb3J0IHRvIHRoZSBhcnJheSBtb2R1bGUuCi0gIEluaXRpYWwgcGF0Y2ggYnkgT3JlbiBUaXJvc2ggYW5kIEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxMjQ4MzogY3R5cGVzOiBGaXggYSBjcmFzaCB3aGVuIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGNhbGxiYWNrCi0gIG9iamVjdCB0cmlnZ2VycyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0KLS0gSXNzdWUgIzEyOTUwOiBGaXggcGFzc2luZyBmaWxlIGRlc2NyaXB0b3JzIGluIG11bHRpcHJvY2Vzc2luZywgdW5kZXIKLSAgT3BlbkluZGlhbmEvSWxsdW1vcy4KLQotLSBJc3N1ZSAjMTI3NjQ6IEZpeCBhIGNyYXNoIGluIGN0eXBlcyB3aGVuIHRoZSBuYW1lIG9mIGEgU3RydWN0dXJlIGZpZWxkIGlzIG5vdAotICBhIHN0cmluZy4KLQotLSBJc3N1ZSAjMTEyNDE6IHN1YmNsYXNzZXMgb2YgY3R5cGVzLkFycmF5IGNhbiBub3cgYmUgc3ViY2xhc3NlZC4KLQotLSBJc3N1ZSAjOTY1MTogRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0bwotICBzb21lIGZ1bmN0aW9ucyBsaWtlIGZpbGUud3JpdGUoKS4KLQotLSBJc3N1ZSAjMTAzMDk6IERlZmluZSBfR05VX1NPVVJDRSBzbyB0aGF0IG1yZW1hcCgpIGdldHMgdGhlIHByb3BlcgotICBzaWduYXR1cmUuICBXaXRob3V0IHRoaXMsIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mIHZvaWQqICE9IHNpemVvZiBpbnQgYXJlCi0gIGJyb2tlbi4gIFBhdGNoIGdpdmVuIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCi0KLS0gSXNzdWUgIzEyMDUxOiBGaXggc2VnZmF1bHQgaW4ganNvbi5kdW1wcygpIHdoaWxlIGVuY29kaW5nIGhpZ2hseS1uZXN0ZWQKLSAgb2JqZWN0cyB1c2luZyB0aGUgQyBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxMjAxNzogRml4IHNlZ2ZhdWx0IGluIGpzb24ubG9hZHMoKSB3aGlsZSBkZWNvZGluZyBoaWdobHktbmVzdGVkCi0gIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTgzODogUHJldmVudCBzZWdmYXVsdCBpbiBjdHlwZXMsIHdoZW4gX2FzX3BhcmFtZXRlcl8gb24gYSBjbGFzcyBpcyBzZXQKLSAgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCi0gIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KLQotLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCi0gIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTA4ODE6IEZpeCB0ZXN0X3NpdGUgZmFpbHVyZSB3aXRoIE9TIFggZnJhbWV3b3JrIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTM5MDE6IFByZXZlbnQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZXMgb24gT1MgWCB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KLQotLSBJc3N1ZSAjMTM4NjI6IEZpeCBzcHVyaW91cyBmYWlsdXJlIGluIHRlc3RfemxpYiBkdWUgdG8gcnVudGltZS9jb21waWxlIHRpbWUKLSAgbWlub3IgdmVyc2lvbnMgbm90IG1hdGNoaW5nLgotCi0tIElzc3VlICMxMjgwNDogRml4IHRlc3Rfc29ja2V0IGFuZCB0ZXN0X3VybGxpYjJuZXQgZmFpbHVyZXMgd2hlbiBydW5uaW5nIHRlc3RzCi0gIG9uIGEgc3lzdGVtIHdpdGhvdXQgaW50ZXJuZXQgYWNjZXNzLgotCi0tIElzc3VlICMxMzcyNjogRml4IHRoZSBhbWJpZ3VvdXMgLVMgZmxhZyBpbiByZWdydGVzdC4gSXQgaXMgLW8vLS1zbG93IGZvciBzbG93Ci0gIHRlc3RzLgotCi0tIElzc3VlICMxMTY1OTogRml4IFJlc291cmNlV2FybmluZyBpbiB0ZXN0X3N1YnByb2Nlc3MgaW50cm9kdWNlZCBieSAjMTE0NTkuCi0gIFBhdGNoIGJ5IEJlbiBIYXlkZW4uCi0KLS0gSXNzdWUgIzExNTc3OiBmaXggUmVzb3VyY2VXYXJuaW5nIHRyaWdnZXJlZCBieSBpbXByb3ZlZCBiaW5oZXggdGVzdCBjb3ZlcmFnZQotCi0tIElzc3VlICMxMTUwOTogU2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlIG9mIGZpbGVpbnB1dC4KLSAgUGF0Y2ggYnkgRGVudmVyIENvbmV5YmVhcmUgYXQgUHlDb24gMjAxMSBTcHJpbnRzLgotCi0tIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKLQotLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KLQotLSBJc3N1ZSAjMTM3MjU6IEZpeCByZWdydGVzdCB0byByZWNvZ25pemUgdGhlIGRvY3VtZW50ZWQgLWQgZmxhZy4KLSAgUGF0Y2ggYnkgRXJubyBUdWtpYS4KLQotLSBJc3N1ZSAjMTMzMDQ6IFNraXAgdGVzdCBjYXNlIGlmIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXNhYmxlZCAoLXMgb3IKLSAgUFlUSE9OTk9VU0VSU0lURSkuICAoUGF0Y2ggYnkgQ2FybCBNZXllcikKLQotLSBJc3N1ZSAjNTY2MTogQWRkIGEgdGVzdCBmb3IgRUNPTk5SRVNFVC9FUElQRSBoYW5kbGluZyB0byB0ZXN0X2FzeW5jb3JlLiBQYXRjaAotICBieSBYYXZpZXIgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMTMyMTg6IEZpeCB0ZXN0X3NzbCBmYWlsdXJlcyBvbiBEZWJpYW4vVWJ1bnR1LgotCi0tIFJlLWVuYWJsZSBsaWIydG8zJ3MgdGVzdF9wYXJzZXIucHkgdGVzdHMsIHRob3VnaCB3aXRoIGFuIGV4cGVjdGVkIGZhaWx1cmUKLSAgKHNlZSBpc3N1ZSAjMTMxMjUpLgotCi0tIElzc3VlICMxMjY1NjogQWRkIHRlc3RzIGZvciBJUHY2IGFuZCBVbml4IHNvY2tldHMgdG8gdGVzdF9hc3luY29yZS4KLQotLSBJc3N1ZSAjNjQ4NDogQWRkIHVuaXQgdGVzdHMgZm9yIG1haWxjYXAgbW9kdWxlIChwYXRjaCBieSBHcmVnb3J5IE5vZmkpCi0KLS0gSXNzdWUgIzExNjUxOiBJbXByb3ZlIHRoZSBNYWtlZmlsZSB0ZXN0IHRhcmdldHMgdG8gcnVuIG1vcmUgb2YgdGhlIHRlc3Qgc3VpdGUKLSAgbW9yZSBxdWlja2x5LiBUaGUgLS1tdWx0aXByb2Nlc3Mgb3B0aW9uIGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHJlZHVjaW5nCi0gIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcnVuIHRoZSB0ZXN0cy4gIm1ha2UgdGVzdCIgYW5kICJtYWtlIHF1aWNrdGVzdCIKLSAgbm93IGluY2x1ZGUgc29tZSByZXNvdXJjZS1pbnRlbnNpdmUgdGVzdHMsIGJ1dCBubyBsb25nZXIgcnVuIHRoZSB0ZXN0IHN1aXRlCi0gIHR3aWNlIHRvIGNoZWNrIGZvciBidWdzIGluIC5weWMgZ2VuZXJhdGlvbi4gVG9vbHMvc2NyaXB0cy9ydW5fdGVzdC5weSBwcm92aWRlcwotICBhbiBlYXN5IHBsYXRmb3JtLWluZGVwZW5kZW50IHdheSB0byBydW4gdGVzdCBzdWl0ZSB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgotCi0tIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIHRoZSBwYWNrYWdpbmcgbW9kdWxlIGNhbiBub3cgcnVuIGZyb20gYW4KLSAgaW5zdGFsbGVkIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciBsaWIydG8zIGNhbiBub3cgcnVuIGZyb20gYW4gaW5zdGFsbGVkCi0gIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTI2MjY6IEluIHJlZ3J0ZXN0LCBhbGxvdyB0byBmaWx0ZXIgdGVzdHMgdXNpbmcgYSBnbG9iIGZpbHRlcgotICB3aXRoIHRoZSBgYC1tYGAgKG9yIGBgLS1tYXRjaGBgKSBvcHRpb24uICBUaGlzIHdvcmtzIHdpdGggYWxsIHRlc3QgY2FzZXMKLSAgdXNpbmcgdGhlIHVuaXR0ZXN0IG1vZHVsZS4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjYyNDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGZhaWwgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUgd2hlbgotICBydW5uaW5nIGluIHZlcmJvc2UgbW9kZSAoYGAtdmBgIG9yIGBgLVdgYCksIGJ5IHVzaW5nIHRoZSBgYC0tZmFpbGZhc3RgYAotICAob3IgYGAtR2BgKSBvcHRpb24gdG8gcmVncnRlc3QuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKLSAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTI1ODc6IENvcnJlY3QgZmF1bHR5IHRlc3QgZmlsZSBhbmQgcmVmZXJlbmNlIGluIHRlc3RfdG9rZW5pemUuCi0gIChQYXRjaCBieSBSb2JlcnQgWGlhbykKLQotLSBJc3N1ZSAjMTI1NzM6IEFkZCByZXNvdXJjZSBjaGVja3MgZm9yIGRhbmdsaW5nIFRocmVhZCBhbmQgUHJvY2VzcyBvYmplY3RzLgotCi0tIElzc3VlICMxMjU0OTogQ29ycmVjdCB0ZXN0X3BsYXRmb3JtIHRvIG5vdCBmYWlsIHdoZW4gT1MgWCByZXR1cm5zICd4ODZfNjQnCi0gIGFzIHRoZSBwcm9jZXNzb3IgdHlwZSBvbiBzb21lIE1hYyBzeXN0ZW1zLgotCi0tIFNraXAgbmV0d29yayB0ZXN0cyB3aGVuIGdldGFkZHJpbmZvKCkgcmV0dXJucyBFQUlfQUdBSU4sIG1lYW5pbmcgYSB0ZW1wb3JhcnkKLSAgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uCi0KLS0gSXNzdWUgIzExODEyOiBTb2x2ZSB0cmFuc2llbnQgc29ja2V0IGZhaWx1cmUgdG8gY29ubmVjdCB0byAnbG9jYWxob3N0JwotICBpbiB0ZXN0X3RlbG5ldGxpYi5weS4KLQotLSBTb2x2ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gdGVzdF90ZWxuZXRsaWIucHkuIFJlbGF0ZWQgdG8gaXNzdWUgIzExODEyLgotCi0tIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF9yb2JvdHBhcnNlciB3aGVuIG11ZWJsZXNtb3JhbGVkYS5jb20gaXMgZmxha3kgYW5kCi0gIGFuIG92ZXJ6ZWFsb3VzIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlZGlyZWN0cyB0byBhIHBsYWNlaG9sZGVyCi0gIFdlYiBzaXRlLgotCi0tIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF91cmxsaWJuZXQudGVzdF9iYWRfYWRkcmVzcyB3aGVuIHNvbWUgb3ZlcnplYWxvdXMKLSAgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVzb2x2ZXMgYSBub24tZXhpc3RlbnQgZG9tYWluIG5hbWUuICBUaGUgdGVzdAotICBpcyBub3cgc2tpcHBlZCBpbnN0ZWFkLgotCi0tIElzc3VlICMxMjQ0MDogV2hlbiB0ZXN0aW5nIHdoZXRoZXIgc29tZSBiaXRzIGluIFNTTENvbnRleHQub3B0aW9ucyBjYW4gYmUKLSAgcmVzZXQsIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGhlYWRlcnMgUHl0aG9uIHdhcyBjb21waWxlZCBhZ2FpbnN0LAotICByYXRoZXIgdGhhbiB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzExNTEyOiBBZGQgYSB0ZXN0IHN1aXRlIGZvciB0aGUgY2dpdGIgbW9kdWxlLiBQYXRjaCBieSBSb2JiaWUgQ2xlbW9ucy4KLQotLSBJc3N1ZSAjMTI0OTc6IEluc3RhbGwgdGVzdC9kYXRhIHRvIHByZXZlbnQgZmFpbHVyZXMgb2YgdGhlIHZhcmlvdXMgY29kZWNtYXBzCi0gIHRlc3RzLgotCi0tIElzc3VlICMxMjQ5NjogSW5zdGFsbCB0ZXN0L2NhcGF0aCBkaXJlY3RvcnkgdG8gcHJldmVudCB0ZXN0X2Nvbm5lY3RfY2FwYXRoCi0gIHRlc3RjYXNlIGZhaWx1cmUgaW4gdGVzdF9zc2wuCi0KLS0gSXNzdWUgIzEyNDY5OiBSdW4gd2FrZXVwIGFuZCBwZW5kaW5nIHNpZ25hbCB0ZXN0cyBpbiBhIHN1YnByb2Nlc3MgdG8gcnVuIHRoZQotICB0ZXN0IGluIGEgZnJlc2ggcHJvY2VzcyB3aXRoIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwKLSAgaGFuZGxpbmcgb2YgdGhlIHBhcmVudCBwcm9jZXNzLgotCi0tIElzc3VlICM4NzE2OiBBdm9pZCBjcmFzaGVzIGNhdXNlZCBieSBBcXVhIFRrIG9uIE9TWCB3aGVuIGF0dGVtcHRpbmcgdG8gcnVuCi0gIHRlc3RfdGsgb3IgdGVzdF90dGtfZ3Vpb25seSB1bmRlciBhIHVzZXJuYW1lIHRoYXQgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQKLSAgaW4gdG8gdGhlIGNvbnNvbGUgd2luZG93c2VydmVyIChhcyBtYXkgYmUgdGhlIGNhc2UgdW5kZXIgYnVpbGRib3Qgb3Igc3NoKS4KLQotLSBJc3N1ZSAjMTI0MDc6IEV4cGxpY2l0bHkgc2tpcCB0ZXN0X2NhcGkuRW1iZWRkaW5nVGVzdCB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMxMjQwMDogcmVncnRlc3QgLVcgZG9lc24ndCByZXJ1biB0aGUgdGVzdHMgdHdpY2UgYW55bW9yZSwgYnV0IGNhcHR1cmVzCi0gIHRoZSBvdXRwdXQgYW5kIGRpc3BsYXlzIGl0IG9uIGZhaWx1cmUgaW5zdGVhZC4gcmVncnRlc3QgLXYgZG9lc24ndCBwcmludCB0aGUKLSAgZXJyb3IgdHdpY2UgYW55bW9yZSBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4KLQotLSBJc3N1ZSAjMTIxNDE6IEluc3RhbGwgY29waWVzIG9mIHRlbXBsYXRlIEMgbW9kdWxlIGZpbGUgc28gdGhhdAotICB0ZXN0X2J1aWxkX2V4dCBvZiB0ZXN0X2Rpc3R1dGlscyBhbmQgdGVzdF9jb21tYW5kX2J1aWxkX2V4dCBvZgotICB0ZXN0X3BhY2thZ2luZyBhcmUgbm8gbG9uZ2VyIHNpbGVudGx5IHNraXBwZWQgd2hlbgotICBydW4gb3V0c2lkZSBvZiBhIGJ1aWxkIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjODc0NjogQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIG9zLmNoZmxhZ3MoKSBhbmQgb3MubGNoZmxhZ3MoKS4KLSAgUGF0Y2ggYnkgR2FycmV0dCBDb29wZXIuCi0KLS0gSXNzdWUgIzEwNzM2OiBGaXggdGVzdF90dGsgdGVzdF93aWRnZXRzIGZhaWx1cmVzIHdpdGggQ29jb2EgVGsgOC41LjkKLSAgMi44KyBvbiBNYWMgT1MgWC4gIChQYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCi0KLS0gSXNzdWUgIzEyMDU3OiBBZGQgdGVzdHMgZm9yIElTTyAyMDIyIGNvZGVjcyAoaXNvMjAyMl9qcCwgaXNvMjAyMl9qcF8yLAotICBpc28yMDIyX2tyKS4KLQotLSBJc3N1ZSAjMTIwOTY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRlc3RfdGhyZWFkaW5nLnRlc3Rfd2FpdGZvcigpLiBQYXRjaAotICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTE2MTQ6IGltcG9ydCBfX2hlbGxvX18gcHJpbnRzICJIZWxsbyBXb3JsZCEiLiBQYXRjaCB3cml0dGVuIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjNTcyMzogSW1wcm92ZSBqc29uIHRlc3RzIHRvIGJlIGV4ZWN1dGVkIHdpdGggYW5kIHdpdGhvdXQgYWNjZWxlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTIwNDE6IE1ha2UgdGVzdF93YWl0MyBtb3JlIHJvYnVzdC4KLQotLSBJc3N1ZSAjMTE4NzM6IENoYW5nZSByZWdleCBpbiB0ZXN0X2NvbXBpbGVhbGwgdG8gZml4IG9jY2FzaW9uYWwgZmFpbHVyZXMgd2hlbgotICB3aGVuIHRoZSByYW5kb21seSBnZW5lcmF0ZWQgdGVtcG9yYXJ5IHBhdGggaGFwcGVuZWQgdG8gbWF0Y2ggdGhlIHJlZ2V4LgotCi0tIElzc3VlICMxMTk1ODogRml4IEZUUCB0ZXN0cyBmb3IgSVB2NiwgYmluZCB0byAiOjoxIiBpbnN0ZWFkIG9mICJsb2NhbGhvc3QiLgotICBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgotCi0tIElzc3VlICM4NDA3LCAjMTE4NTk6IEZpeCB0ZXN0cyBvZiB0ZXN0X2lvIHVzaW5nIHRocmVhZHMgYW5kIGFuIGFsYXJtOiB1c2UKLSAgcHRocmVhZF9zaWdtYXNrKCkgdG8gZW5zdXJlIHRoYXQgdGhlIFNJR0FMUk0gc2lnbmFsIGlzIHJlY2VpdmVkIGJ5IHRoZSBtYWluCi0gIHRocmVhZC4KLQotLSBJc3N1ZSAjMTE4MTE6IEZhY3RvciBvdXQgZGV0ZWN0aW9uIG9mIElQdjYgc3VwcG9ydCBvbiB0aGUgY3VycmVudCBob3N0Ci0gIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSBhcyBgYHRlc3Quc3VwcG9ydC5JUFY2X0VOQUJMRURgYC4gIFBhdGNoIGJ5Ci0gIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTA5MTQ6IEFkZCBhIG1pbmltYWwgZW1iZWRkaW5nIHRlc3QgdG8gdGVzdF9jYXBpLgotCi0tIElzc3VlICMxMTIyMzogU2tpcCB0ZXN0X2xvY2tfYWNxdWlyZV9pbnRlcnJ1cHRpb24oKSBhbmQKLSAgdGVzdF9ybG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIG9mIHRlc3RfdGhyZWFkc2lnbmFscyBpZiBhIHRocmVhZCBsb2NrIGlzCi0gIGltcGxlbWVudGVkIHVzaW5nIGEgUE9TSVggbXV0ZXggYW5kIGEgUE9TSVggY29uZGl0aW9uIHZhcmlhYmxlLiBBIFBPU0lYCi0gIGNvbmRpdGlvbiB2YXJpYWJsZSBjYW5ub3QgYmUgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGUuZy4gb24gTGludXgsIHRoZQotICBmdXRleCBzeXN0ZW0gY2FsbCBpcyByZXN0YXJ0ZWQpLgotCi0tIElzc3VlICMxMTc5MDogRml4IHNwb3JhZGljIGZhaWx1cmVzIGluIHRlc3RfbXVsdGlwcm9jZXNzaW5nLldpdGhQcm9jZXNzZXNUZXN0Q29uZGl0aW9uLgotCi0tIEZpeCBwb3NzaWJsZSAiZmlsZSBhbHJlYWR5IGV4aXN0cyIgZXJyb3Igd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KLQotLSBJc3N1ZSAjMTE3MTk6IEZpeCBtZXNzYWdlIGFib3V0IHVuZXhwZWN0ZWQgdGVzdF9tc2lsaWIgc2tpcCBvbiBub24tV2luZG93cwotICBwbGF0Zm9ybXMuIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTE3Mjc6IEFkZCBhIC0tdGltZW91dCBvcHRpb24gdG8gcmVncnRlc3Q6IGlmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4KLSAgVElNRU9VVCBzZWNvbmRzLCBkdW1wcyB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzIGFuZCBleGl0cy4KLQotLSBJc3N1ZSAjMTE2NTM6IGZpeCAtVyB3aXRoIC1qIGluIHJlZ3J0ZXN0LgotCi0tIFRoZSBlbWFpbCB0ZXN0IHN1aXRlIG5vdyBsaXZlcyBpbiB0aGUgTGliL3Rlc3QvdGVzdF9lbWFpbCBwYWNrYWdlLiAgVGhlIHRlc3QKLSAgaGFybmVzcyBjb2RlIGhhcyBhbHNvIGJlZW4gbW9kZXJuaXplZCB0byBhbGxvdyB1c2Ugb2YgbmV3IHVuaXR0ZXN0IGZlYXR1cmVzLgotCi0tIHJlZ3J0ZXN0IG5vdyBkaXNjb3ZlcnMgdGVzdCBwYWNrYWdlcyBhcyB3ZWxsIGFzIHRlc3QgbW9kdWxlcy4KLQotLSBJc3N1ZSAjMTE1Nzc6IGltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiBiaW5oZXgucHkuIFBhdGNoIGJ5IEFya2FkeSBLb3BseWFyb3YuCi0KLS0gTmV3IHRlc3RfY3Jhc2hlcnMgYWRkZWQgdG8gZXhlcmNpc2UgdGhlIHNjcmlwdHMgaW4gdGhlIExpYi90ZXN0L2NyYXNoZXJzCi0gIGRpcmVjdG9yeSBhbmQgY29uZmlybSB0aGV5IGZhaWwgYXMgZXhwZWN0ZWQKLQotLSBJc3N1ZSAjMTE1Nzg6IGFkZGVkIHRlc3QgZm9yIHRoZSB0aW1laXQgbW9kdWxlLiAgUGF0Y2ggYnkgTWljaGFlbCBIZW5yeS4KLQotLSBJc3N1ZSAjMTE1MDM6IGltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiBwb3NpeHBhdGgucHkuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KLQotLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LCBpbmNyZWFzZXMgZ3JhbnVsYXJpdHkgb2YKLSAgc3RyaW5nLkZvcm1hdHRlciB0ZXN0cy4gSW5pdGlhbCBwYXRjaCBieSBBbGljaWEgQXJsZW4uCi0KLS0gSXNzdWUgIzExNTQ4OiBJbXByb3ZlIHRlc3QgY292ZXJhZ2Ugb2YgdGhlIHNodXRpbCBtb2R1bGUuIFBhdGNoIGJ5Ci0gIEV2YW4gRGFuZHJlYS4KLQotLSBJc3N1ZSAjMTE1NTQ6IFJlYWN0aXZhdGVkIHRlc3RfZW1haWxfY29kZWNzLgotCi0tIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQotICBBcmxlbgotCi0tIElzc3VlICMxMTQ5MDogdGVzdF9zdWJwcm9jZXNzLnRlc3RfbGVha2luZ19mZHNfb25fZXJyb3Igbm8gbG9uZ2VyIGdpdmVzIGEKLSAgZmFsc2UgcG9zaXRpdmUgaWYgdGhlIGxhc3QgZGlyZWN0b3J5IGluIHRoZSBwYXRoIGlzIGluYWNjZXNzaWJsZS4KLQotLSBJc3N1ZSAjMTEyMjM6IEZpeCB0ZXN0X3RocmVhZHNpZ25hbHMgdG8gZmFpbCwgbm90IGhhbmcsIHdoZW4gdGhlCi0gIG5vbi1zZW1hcGhvcmUgaW1wbGVtZW50YXRpb24gb2YgbG9ja3MgaXMgdXNlZCB1bmRlciBQT1NJWC4KLQotLSBJc3N1ZSAjMTA5MTE6IEFkZCB0ZXN0cyBvbiBDR0kgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycy4gUGF0Y2ggd3JpdHRlbiBieQotICBQaWVycmUgUXVlbnRlbC4KLQotLSBJc3N1ZSAjOTkzMTogRml4IGhhbmdzIGluIEdVSSB0ZXN0cyB1bmRlciBXaW5kb3dzIGluIGNlcnRhaW4gY29uZGl0aW9ucy4KLSAgUGF0Y2ggYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzEwNTEyOiBQcm9wZXJseSBjbG9zZSBzb2NrZXRzIHVuZGVyIHRlc3QudGVzdF9jZ2kuCi0KLS0gSXNzdWUgIzEwOTkyOiBNYWtlIHRlc3RzIHBhc3MgdW5kZXIgY292ZXJhZ2UuCi0KLS0gSXNzdWUgIzEwODI2OiBQcmV2ZW50IHNwb3JhZGljIGZhaWx1cmUgaW4gdGVzdF9zdWJwcm9jZXNzIG9uIFNvbGFyaXMgZHVlCi0gIHRvIG9wZW4gZG9vciBmaWxlcy4KLQotLSBJc3N1ZSAjMTA5OTA6IFByZXZlbnQgdGVzdHMgZnJvbSBjbG9iYmVyaW5nIGEgc2V0IHRyYWNlIGZ1bmN0aW9uLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTM0NTI6IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKCkgZG9lc24ndCBzdXBwb3J0IGVycm9yIGhhbmRsZXJzCi0gIGRpZmZlcmVudCB0aGFuICJzdHJpY3QiIGFueW1vcmUuIFRoZSBjYWxsZXIgd2FzIHVuYWJsZSB0byBjb21wdXRlIHRoZQotICBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyOiBpdCBkZXBlbmRzIG9uIHRoZSBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICMxMzU2MDogQWRkIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoKSwgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKQotICBhbmQgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9ucyB0byB0aGUgQyBBUEkgdG8gZGVjb2RlL2VuY29kZSBmcm9tL3RvCi0gIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KLQotLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KLSAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KLSAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCi0KLS0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KLSAgbmFycm93IGJ1aWxkLgotCi0tIEFkZCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCBhbmQgUHlPYmplY3RfR2VuZXJpU2V0RGljdC4gVGhleSBhcmUgZ2VuZXJpYwotICBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBnZXR0ZXIgYW5kIHNldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yIG9mIEMKLSAgdHlwZXMuCi0KLS0gSXNzdWUgIzEzNzI3OiBBZGQgMyBtYWNyb3MgdG8gYWNjZXNzIFB5RGF0ZVRpbWVfRGVsdGEgbWVtYmVyczoKLSAgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUywgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUywKLSAgUHlEYXRlVGltZV9ERUxUQV9HRVRfTUlDUk9TRUNPTkRTLgotCi0tIElzc3VlICMxMDU0MjogQWRkIDQgbWFjcm9zIHRvIHdvcmsgd2l0aCBzdXJyb2dhdGVzOiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURSwKLSAgUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSwgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFLAotICBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUy4KLQotLSBJc3N1ZSAjMTI3MjQ6IEFkZCBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQgbWFjcm8gZm9yIHJldHVybmluZyBOb3RJbXBsZW1lbnRlZC4KLQotLSBQWV9QQVRDSExFVkVMX1JFVklTSU9OIGhhcyBiZWVuIHJlbW92ZWQsIHNpbmNlIGl0J3MgbWVhbmluZ2xlc3Mgd2l0aAotICBNZXJjdXJpYWwuCi0KLS0gSXNzdWUgIzEyMTczOiBUaGUgZmlyc3QgYXJndW1lbnQgb2YgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwgaXMgbm93IGBjb25zdAotICBjaGFyICpgIGluc3RlYWQgb2YgYGNoYXIgKmAuCi0KLS0gSXNzdWUgIzEyMzgwOiBQeUFyZ19QYXJzZVR1cGxlIG5vdyBhY2NlcHRzIGEgYnl0ZWFycmF5IGZvciB0aGUgJ2MnIGZvcm1hdC4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMzAwNjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgaW5kZXhpbmcgb2YgZGljdC5fX21pc3NpbmdfXy4KLSAgQWRkIGFuIGVudHJ5IGluIHRoZSBsYW5ndWFnZSBkYXRhbW9kZWwgc3BlY2lhbCBtZXRob2RzIHNlY3Rpb24uCi0gIFJldmlzZSBhbmQgaW5kZXggaXRzIGRpc2N1c3Npb24gaW4gdGhlIHN0ZHR5cGVzIG1hcHBpbmcvZGljdCBzZWN0aW9uLgotCi0tIElzc3VlICMxMzk4OTogRG9jdW1lbnQgdGhhdCBHemlwRmlsZSBkb2VzIG5vdCBzdXBwb3J0IHRleHQgbW9kZSwgYW5kIGdpdmUgYQotICBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSB3aGVuIG9wZW5lZCB3aXRoIGFuIGludmFsaWQgbW9kZSBzdHJpbmcuCi0KLS0gSXNzdWUgIzEzOTIxOiBVbmRvY3VtZW50IGFuZCBjbGVhbiB1cCBzcWxpdGUzLk9wdGltaXplZFVuaWNvZGUsCi0gIHdoaWNoIGlzIG9ic29sZXRlIGluIFB5dGhvbiAzLnguIEl0J3Mgbm93IGFsaWFzZWQgdG8gc3RyIGZvcgotICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjMTIxMDI6IERvY3VtZW50IHRoYXQgYnVmZmVyZWQgZmlsZXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBiZWluZyB1c2VkCi0gIHdpdGggbW1hcC4gUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KLQotLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCi0KLS0gSXNzdWUgIzkzNDM6IERvY3VtZW50IHRoYXQgYXJncGFyc2UgcGFyZW50IHBhcnNlcnMgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZQotICB0aGVpciBjaGlsZHJlbi4KLQotLSBJc3N1ZSAjMTM0OTg6IENsYXJpZnkgZG9jcyBvZiBvcy5tYWtlZGlycygpJ3MgZXhpc3Rfb2sgYXJndW1lbnQuICBEb25lIHdpdGgKLSAgZ3JlYXQgbmF0aXZlLXNwZWFrZXIgaGVscCBmcm9tIFIuIERhdmlkIE11cnJheS4KLQotLSBJc3N1ZXMgIzEzNDkxIGFuZCAjMTM5OTU6IEZpeCBtYW55IGVycm9ycyBpbiBzcWxpdGUzIGRvY3VtZW50YXRpb24uCi0gIEluaXRpYWwgcGF0Y2ggZm9yICMxMzQ5MSBieSBKb2hhbm5lcyBWb2dlbC4KLQotLSBJc3N1ZSAjMTM0MDI6IERvY3VtZW50IGFic29sdXRlbmVzcyBvZiBzeXMuZXhlY3V0YWJsZS4KLQotLSBJc3N1ZSAjMTM4ODM6IFBZVEhPTkNBU0VPSyBhbHNvIHdvcmtzIG9uIE9TIFguCi0KLS0gSXNzdWUgIzkwMjE6IEFkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzYwMDU6IEV4YW1wbGVzIGluIHRoZSBzb2NrZXQgbGlicmFyeSBkb2N1bWVudGF0aW9uIHVzZSBzZW5kYWxsLCB3aGVyZQotICByZWxldmFudCwgaW5zdGVhZCBzZW5kIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldwotICBDIEFQSSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKLSAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKLSAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgotCi0tIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIHNvY2tldHNlcnZlciBleGFtcGxlcy4KLQotLSBJc3N1ZSAjMTE4MTg6IEZpeCB0ZW1wZmlsZSBleGFtcGxlcyBmb3IgUHl0aG9uIDMuCi0KLQogKiooRm9yIGluZm9ybWF0aW9uIGFib3V0IG9sZGVyIHZlcnNpb25zLCBjb25zdWx0IHRoZSBISVNUT1JZIGZpbGUuKSoqCmRpZmYgLS1naXQgYS9NaXNjL1BvcnRpbmcgYi9NaXNjL1BvcnRpbmcKaW5kZXggNTFmNzNlNi4uYzQzYjExMiAxMDA2NDQKLS0tIGEvTWlzYy9Qb3J0aW5nCisrKyBiL01pc2MvUG9ydGluZwpAQCAtMSw0MSArMSBAQAotUS4gSSB3YW50IHRvIHBvcnQgUHl0aG9uIHRvIGEgbmV3IHBsYXRmb3JtLiAgSG93IGRvIEkgYmVnaW4/Ci0KLUEuIEkgZ3Vlc3MgdGhlIHR3byB0aGluZ3MgdG8gc3RhcnQgd2l0aCBpcyB0byBmYW1pbGlhcml6ZSB5b3Vyc2VsZgotd2l0aCBhcmUgdGhlIGRldmVsb3BtZW50IHN5c3RlbSBmb3IgeW91ciB0YXJnZXQgcGxhdGZvcm0gYW5kIHRoZQotZ2VuZXJpYyBidWlsZCBwcm9jZXNzIGZvciBQeXRob24uICBNYWtlIHN1cmUgeW91IGNhbiBjb21waWxlIGFuZCBydW4gYQotc2ltcGxlIGhlbGxvLXdvcmxkIHByb2dyYW0gb24geW91ciB0YXJnZXQgcGxhdGZvcm0uICBNYWtlIHN1cmUgeW91IGNhbgotY29tcGlsZSBhbmQgcnVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgb24gYSBwbGF0Zm9ybSB0byB3aGljaCBpdCBoYXMKLWFscmVhZHkgYmVlbiBwb3J0ZWQgKHByZWZlcmFibHkgVW5peCwgYnV0IE1hYyBvciBXaW5kb3dzIHdpbGwgZG8sCi10b28pLgotCi1JIGFsc28gd291bGQgbmV2ZXIgc3RhcnQgc29tZXRoaW5nIGxpa2UgdGhpcyB3aXRob3V0IGF0IGxlYXN0Ci1tZWRpdW0tbGV2ZWwgdW5kZXJzdGFuZGluZyBvZiB5b3VyIHRhcmdldCBwbGF0Zm9ybSAoaS5lLiBob3cgaXQgaXMKLWdlbmVyYWxseSB1c2VkLCBob3cgdG8gd3JpdGUgcGxhdGZvcm0gc3BlY2lmaWMgYXBwcyBldGMuKSBhbmQgUHl0aG9uCi0ob3IgZWxzZSB5b3UnbGwgbmV2ZXIga25vdyBob3cgdG8gdGVzdCB0aGUgcmVzdWx0cykuCi0KLVRoZSBidWlsZCBwcm9jZXNzIGZvciBQeXRob24sIGluIHBhcnRpY3VsYXIgdGhlIE1ha2VmaWxlcyBpbiB0aGUKLXNvdXJjZSBkaXN0cmlidXRpb24sIHdpbGwgZ2l2ZSB5b3UgYSBoaW50IG9uIHdoaWNoIGZpbGVzIHRvIGNvbXBpbGUKLWZvciBQeXRob24uICBOb3QgYWxsIHNvdXJjZSBmaWxlcyBhcmUgcmVsZXZhbnQgLS0gc29tZSBhcmUgcGxhdGZvcm0KLXNwZWNpZmljLCBvdGhlcnMgYXJlIG9ubHkgdXNlZCBpbiBlbWVyZ2VuY2llcyAoZS5nLiBnZXRvcHQuYykuICBUaGUKLU1ha2VmaWxlcyB0ZWxsIHRoZSBzdG9yeS4KLQotWW91J2xsIGFsc28gbmVlZCBhIHB5Y29uZmlnLmggZmlsZSB0YWlsb3JlZCBmb3IgeW91ciBwbGF0Zm9ybS4gIFlvdSBjYW4KLXN0YXJ0IHdpdGggcHljb25maWcuaC5pbiwgcmVhZCB0aGUgY29tbWVudHMgYW5kIHR1cm4gb24gZGVmaW5pdGlvbnMgdGhhdAotYXBwbHkgdG8geW91ciBwbGF0Zm9ybS4KLQotQW5kIHlvdSdsbCBuZWVkIGEgY29uZmlnLmMgZmlsZSwgd2hpY2ggbGlzdHMgdGhlIGJ1aWx0LWluIG1vZHVsZXMgeW91Ci1zdXBwb3J0LiAgU3RhcnQgd2l0aCBNb2R1bGVzL2NvbmZpZy5jLmluLgotCi1GaW5hbGx5LCB5b3UnbGwgcnVuIGludG8gc29tZSB0aGluZ3MgdGhhdCBhcmVuJ3Qgc3VwcG9ydGVkIG9uIHlvdXIKLXRhcmdldCBwbGF0Zm9ybS4gIEZvcmdldCBhYm91dCB0aGUgcG9zaXggbW9kdWxlIGZvciBub3cgLS0gc2ltcGx5IHRha2UgCi1pdCBvdXQgb2YgdGhlIGNvbmZpZy5jIGZpbGUuCi0KLUJhbmcgb24gaXQgdW50aWwgeW91IGdldCBhID4+PiBwcm9tcHQuICAoWW91IG1heSBoYXZlIHRvIGRpc2FibGUgdGhlCi1pbXBvcnRpbmcgb2YgInNpdGUucHkiIGJ5IHBhc3NpbmcgdGhlIC1TIG9wdGlvbi4pCi0KLVRoZW4gYmFuZyBvbiBpdCB1bnRpbCBpdCBleGVjdXRlcyB2ZXJ5IHNpbXBsZSBQeXRob24gc3RhdGVtZW50cy4KLQotTm93IGJhbmcgb24gaXQgc29tZSBtb3JlLiAgQXQgc29tZSBwb2ludCB5b3UnbGwgd2FudCB0byB1c2UgdGhlIG9zCi1tb2R1bGU7IHRoaXMgaXMgdGhlIHRpbWUgdG8gc3RhcnQgdGhpbmtpbmcgYWJvdXQgd2hhdCB0byBkbyB3aXRoIHRoZQotcG9zaXggbW9kdWxlLiAgSXQncyBva2F5IHRvIHNpbXBseSAjaWZkZWYgb3V0IHRob3NlIGZ1bmN0aW9ucyB0aGF0Ci1jYXVzZSBwcm9ibGVtczsgdGhlIHJlbWFpbmluZyBvbmVzIHdpbGwgYmUgcXVpdGUgdXNlZnVsLgorVGhpcyBkb2N1bWVudCBpcyBtb3ZlZCB0byBodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS9mYXEuaHRtbCNob3ctZG8taS1wb3J0LXB5dGhvbi10by1hLW5ldy1wbGF0Zm9ybQpkaWZmIC0tZ2l0IGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCmluZGV4IDU3ZjNhZWIuLjQ5M2U3YzEgMTAwNjQ0Ci0tLSBhL01pc2MvY292ZXJpdHlfbW9kZWwuYworKysgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKQEAgLTg1LDcgKzg1LDcgQEAKIH0KIAogLyogUHl0aG9uL2ZpbGV1dGlscy5jICovCi13Y2hhcl90ICpfUHlfY2hhcjJ3Y2hhcihjb25zdCBjaGFyKiBhcmcsIHNpemVfdCAqc2l6ZSkKK3djaGFyX3QgKlB5X0RlY29kZUxvY2FsZShjb25zdCBjaGFyKiBhcmcsIHNpemVfdCAqc2l6ZSkKIHsKICAgIHdjaGFyX3QgKnc7CiAgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2lua19fKGFyZyk7CkBAIC0xMjIsNyArMTIyLDggQEAKIAogLyogQ292ZXJpdHkgZG9lc24ndCB1bmRlcnN0YW5kIHRoYXQgZmRvcGVuZGlyKCkgbWF5IHRha2Ugb3duZXJzaGlwIG9mIGZkLiAqLwogCi1ESVIgKmZkb3BlbmRpcihpbnQgZmQpIHsKK0RJUiAqZmRvcGVuZGlyKGludCBmZCkKK3sKICAgICBESVIgKmQ7CiAgICAgaWYgKGQpIHsKICAgICAgICAgX19jb3Zlcml0eV9jbG9zZV9fKGZkKTsKQEAgLTEzMCwzICsxMzEsNTggQEAKICAgICByZXR1cm4gZDsKIH0KIAorLyogTW9kdWxlcy9fZGF0ZXRpbWUuYworICoKKyAqIENvdmVyaXR5IHRoaW5rcyB0aGF0IHRoZSBpbnB1dCB2YWx1ZXMgZm9yIHRoZXNlIGZ1bmN0aW9uIGNvbWUgZnJvbSBhCisgKiB0YWludGVkIHNvdXJjZSBQeURhdGVUaW1lX0RBVEVfR0VUXyogbWFjcm9zIHVzZSBiaXQgc2hpZnRpbmcuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitidWlsZF9zdHJ1Y3RfdGltZShpbnQgeSwgaW50IG0sIGludCBkLCBpbnQgaGgsIGludCBtbSwgaW50IHNzLCBpbnQgZHN0ZmxhZykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIAorICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oeSk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhtKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGQpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oaGgpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18obW0pOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oc3MpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oZHN0ZmxhZyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit5bWRfdG9fb3JkKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCit7CisgICAgaW50IG9yZCA9IDA7CisKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKHllYXIpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18obW9udGgpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oZGF5KTsKKworICAgIHJldHVybiBvcmQ7Cit9CisKK3N0YXRpYyBpbnQKK25vcm1hbGl6ZV9kYXRlKGludCAqeWVhciwgaW50ICptb250aCwgaW50ICpkYXkpCit7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXygqeWVhcik7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXygqbW9udGgpOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oKmRheSk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAord2Vla2RheShpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KQoreworICAgIGludCB3ID0gMDsKKworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oeWVhcik7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhtb250aCk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhkYXkpOworCisgICAgcmV0dXJuIHc7Cit9CisKZGlmZiAtLWdpdCBhL01pc2MvZ2RiaW5pdCBiL01pc2MvZ2RiaW5pdAppbmRleCA5NDg0YjUxLi4zYjZmZTUwIDEwMDY0NAotLS0gYS9NaXNjL2dkYmluaXQKKysrIGIvTWlzYy9nZGJpbml0CkBAIC0xNTAsMTAgKzE1MCwxMCBAQAogCiAjIGdlbmVyYWxseSB1c2VmdWwgbWFjcm8gdG8gcHJpbnQgYSBVbmljb2RlIHN0cmluZwogZGVmIHB1Ci0gIHNldCAkdW5pID0gJGFyZzAgCisgIHNldCAkdW5pID0gJGFyZzAKICAgc2V0ICRpID0gMAogICB3aGlsZSAoKiR1bmkgJiYgJGkrKzwxMDApCi0gICAgaWYgKCokdW5pIDwgMHg4MCkgCisgICAgaWYgKCokdW5pIDwgMHg4MCkKICAgICAgIHByaW50ICooY2hhciopJHVuaSsrCiAgICAgZWxzZQogICAgICAgcHJpbnQgL3ggKihzaG9ydCopJHVuaSsrCmRpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi5tYW4gYi9NaXNjL3B5dGhvbi5tYW4KaW5kZXggZWE5NTQwYy4uNmRiZGJhOSAxMDA2NDQKLS0tIGEvTWlzYy9weXRob24ubWFuCisrKyBiL01pc2MvcHl0aG9uLm1hbgpAQCAtMTAzLDEwICsxMDMsMTAgQEAKIGFwcGxpY2F0aW9ucy4KIFNlZSB0aGUgaW50ZXJuYWwgZG9jdW1lbnRhdGlvbiBmb3IgaGludHMuCiAuUFAKLURvY3VtZW50YXRpb24gZm9yIGluc3RhbGxlZCBQeXRob24gbW9kdWxlcyBhbmQgcGFja2FnZXMgY2FuIGJlIAotdmlld2VkIGJ5IHJ1bm5pbmcgdGhlIAorRG9jdW1lbnRhdGlvbiBmb3IgaW5zdGFsbGVkIFB5dGhvbiBtb2R1bGVzIGFuZCBwYWNrYWdlcyBjYW4gYmUKK3ZpZXdlZCBieSBydW5uaW5nIHRoZQogLkIgcHlkb2MKLXByb2dyYW0uICAKK3Byb2dyYW0uCiAuU0ggQ09NTUFORCBMSU5FIE9QVElPTlMKIC5UUAogLkIgXC1CCkBAIC0xNDksMjMgKzE0OSwyMCBAQAogbWFsaWNpb3VzIGNvZGUuCiAuVFAKIC5CSSAiXC1tICIgbW9kdWxlLW5hbWUKLVNlYXJjaGVzIAotLkkgc3lzLnBhdGggCi1mb3IgdGhlIG5hbWVkIG1vZHVsZSBhbmQgcnVucyB0aGUgY29ycmVzcG9uZGluZyAKLS5JIC5weSAKK1NlYXJjaGVzCisuSSBzeXMucGF0aAorZm9yIHRoZSBuYW1lZCBtb2R1bGUgYW5kIHJ1bnMgdGhlIGNvcnJlc3BvbmRpbmcKKy5JIC5weQogZmlsZSBhcyBhIHNjcmlwdC4KIC5UUAogLkIgXC1PCi1UdXJuIG9uIGJhc2ljIG9wdGltaXphdGlvbnMuICBUaGlzIGNoYW5nZXMgdGhlIGZpbGVuYW1lIGV4dGVuc2lvbiBmb3IKLWNvbXBpbGVkIChieXRlY29kZSkgZmlsZXMgZnJvbQotLkkgLnB5YwotdG8gXGZJLnB5b1xmUC4gIEdpdmVuIHR3aWNlLCBjYXVzZXMgZG9jc3RyaW5ncyB0byBiZSBkaXNjYXJkZWQuCitUdXJuIG9uIGJhc2ljIG9wdGltaXphdGlvbnMuICBHaXZlbiB0d2ljZSwgY2F1c2VzIGRvY3N0cmluZ3MgdG8gYmUgZGlzY2FyZGVkLgogLlRQCiAuQiBcLU9PCiBEaXNjYXJkIGRvY3N0cmluZ3MgaW4gYWRkaXRpb24gdG8gdGhlIFxmQi1PXGZQIG9wdGltaXphdGlvbnMuCiAuVFAKIC5CIFwtcQotRG8gbm90IHByaW50IHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIGFyZSAKK0RvIG5vdCBwcmludCB0aGUgdmVyc2lvbiBhbmQgY29weXJpZ2h0IG1lc3NhZ2VzLiBUaGVzZSBtZXNzYWdlcyBhcmUKIGFsc28gc3VwcHJlc3NlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZS4KIC5UUAogLkIgXC1zCkBAIC0xOTIsNyArMTg5LDcgQEAKIC5CIFwtdgogUHJpbnQgYSBtZXNzYWdlIGVhY2ggdGltZSBhIG1vZHVsZSBpcyBpbml0aWFsaXplZCwgc2hvd2luZyB0aGUgcGxhY2UKIChmaWxlbmFtZSBvciBidWlsdC1pbiBtb2R1bGUpIGZyb20gd2hpY2ggaXQgaXMgbG9hZGVkLiAgV2hlbiBnaXZlbgotdHdpY2UsIHByaW50IGEgbWVzc2FnZSBmb3IgZWFjaCBmaWxlIHRoYXQgaXMgY2hlY2tlZCBmb3Igd2hlbiAKK3R3aWNlLCBwcmludCBhIG1lc3NhZ2UgZm9yIGVhY2ggZmlsZSB0aGF0IGlzIGNoZWNrZWQgZm9yIHdoZW4KIHNlYXJjaGluZyBmb3IgYSBtb2R1bGUuICBBbHNvIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIG1vZHVsZSBjbGVhbnVwCiBhdCBleGl0LgogLlRQCkBAIC00MTcsNyArNDE0LDcgQEAKIC5JUCBQWVRIT05WRVJCT1NFCiBJZiB0aGlzIGlzIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nCiB0aGUgXGZCXC12XGZQIG9wdGlvbi4gSWYgc2V0IHRvIGFuIGludGVnZXIsIGl0IGlzIGVxdWl2YWxlbnQgdG8KLXNwZWNpZnlpbmcgXGZCXC12XGZQIG11bHRpcGxlIHRpbWVzLiAKK3NwZWNpZnlpbmcgXGZCXC12XGZQIG11bHRpcGxlIHRpbWVzLgogLklQIFBZVEhPTldBUk5JTkdTCiBJZiB0aGlzIGlzIHNldCB0byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0bwogc3BlY2lmeWluZyB0aGUgXGZCXC1XXGZQIG9wdGlvbiBmb3IgZWFjaCBzZXBhcmF0ZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL01vZHVsZXMvUkVBRE1FIGIvTW9kdWxlcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI3OWY1MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvUkVBRE1FCkBAIC0wLDAgKzEsMiBAQAorU291cmNlIGZpbGVzIGZvciBzdGFuZGFyZCBsaWJyYXJ5IGV4dGVuc2lvbiBtb2R1bGVzLAorYW5kIGZvcm1lciBleHRlbnNpb24gbW9kdWxlcyB0aGF0IGFyZSBub3cgYnVpbHRpbiBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4gYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgppbmRleCA1YWMyNDA0Li5hZGFjMDMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgorKysgYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgpAQCAtNyw3ICs3LDcgQEAKIEBVU0VfVEhSRUFEX01PRFVMRUBfdGhyZWFkIF90aHJlYWRtb2R1bGUuYwogCiAjIFRoZSBzaWduYWwgbW9kdWxlCi1AVVNFX1NJR05BTF9NT0RVTEVAc2lnbmFsIHNpZ25hbG1vZHVsZS5jCitAVVNFX1NJR05BTF9NT0RVTEVAX3NpZ25hbCBzaWduYWxtb2R1bGUuYwogCiAjIFRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIHByZXZpb3VzbHkgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYnVpbHQKICMgYnkgdGhlIHNldHVwLnB5IHNjcmlwdCBpbiBQeXRob24gMi4xIGFuZCBsYXRlci4KZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuZGlzdCBiL01vZHVsZXMvU2V0dXAuZGlzdAppbmRleCBiNjBiNTk0Li4wNmJhNmFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmRpc3QKKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0CkBAIC0xMTgsNiArMTE4LDcgQEAKIGl0ZXJ0b29scyBpdGVydG9vbHNtb2R1bGUuYyAgICAjIEZ1bmN0aW9ucyBjcmVhdGluZyBpdGVyYXRvcnMgZm9yIGVmZmljaWVudCBsb29waW5nCiBhdGV4aXQgYXRleGl0bW9kdWxlLmMgICAgICAjIFJlZ2lzdGVyIGZ1bmN0aW9ucyB0byBiZSBydW4gYXQgaW50ZXJwcmV0ZXItc2h1dGRvd24KIF9zdGF0IF9zdGF0LmMJCQkjIHN0YXQuaCBpbnRlcmZhY2UKK3RpbWUgdGltZW1vZHVsZS5jCSMgLWxtICMgdGltZSBvcGVyYXRpb25zIGFuZCB2YXJpYWJsZXMKIAogIyBhY2Nlc3MgdG8gSVNPIEMgbG9jYWxlIHN1cHBvcnQKIF9sb2NhbGUgX2xvY2FsZW1vZHVsZS5jICAjIC1saW50bApAQCAtMTcxLDcgKzE3Miw2IEBACiAjY21hdGggY21hdGhtb2R1bGUuYyBfbWF0aC5jICMgLWxtICMgY29tcGxleCBtYXRoIGxpYnJhcnkgZnVuY3Rpb25zCiAjbWF0aCBtYXRobW9kdWxlLmMgX21hdGguYyAjIC1sbSAjIG1hdGggbGlicmFyeSBmdW5jdGlvbnMsIGUuZy4gc2luKCkKICNfc3RydWN0IF9zdHJ1Y3QuYwkjIGJpbmFyeSBzdHJ1Y3R1cmUgcGFja2luZy91bnBhY2tpbmcKLSN0aW1lIHRpbWVtb2R1bGUuYyAjIC1sbSAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCiAjX3dlYWtyZWYgX3dlYWtyZWYuYwkjIGJhc2ljIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQKICNfdGVzdGNhcGkgX3Rlc3RjYXBpbW9kdWxlLmMgICAgIyBQeXRob24gQyBBUEkgdGVzdCBtb2R1bGUKICNfcmFuZG9tIF9yYW5kb21tb2R1bGUuYwkjIFJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iejJtb2R1bGUuYyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCmluZGV4IGU2NTJmNGQuLjdkZmQzMDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC01MSw2ICs1MSwxNCBAQAogICAgIGJ6X3N0cmVhbSBienM7CiAgICAgY2hhciBlb2Y7ICAgICAgICAgICAvKiBUX0JPT0wgZXhwZWN0cyBhIGNoYXIgKi8KICAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisgICAgY2hhciBuZWVkc19pbnB1dDsKKyAgICBjaGFyICppbnB1dF9idWZmZXI7CisgICAgc2l6ZV90IGlucHV0X2J1ZmZlcl9zaXplOworCisgICAgLyogYnpzLT5hdmFpbF9pbiBpcyBvbmx5IDMyIGJpdCwgc28gd2Ugc3RvcmUgdGhlIHRydWUgbGVuZ3RoCisgICAgICAgc2VwYXJhdGVseS4gQ29udmVyc2lvbiBhbmQgbG9vcGluZyBpcyBlbmNhcHN1bGF0ZWQgaW4KKyAgICAgICBkZWNvbXByZXNzX2J1ZigpICovCisgICAgc2l6ZV90IGJ6c19hdmFpbF9pbl9yZWFsOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CiAjZW5kaWYKQEAgLTExMSwxOSArMTE5LDIzIEBACiB9CiAKICNpZiBCVUZTSVogPCA4MTkyCi0jZGVmaW5lIFNNQUxMQ0hVTksgODE5MgorI2RlZmluZSBJTklUSUFMX0JVRkZFUl9TSVpFIDgxOTIKICNlbHNlCi0jZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgQlVGU0laCiAjZW5kaWYKIAogc3RhdGljIGludAotZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCitncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZiwgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQogewogICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKICAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCiAgICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KICAgICBzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1Zik7CiAgICAgc2l6ZV90IG5ld19zaXplID0gc2l6ZSArIChzaXplID4+IDMpICsgNjsKKworICAgIGlmIChtYXhfbGVuZ3RoID4gMCAmJiBuZXdfc2l6ZSA+IChzaXplX3QpIG1heF9sZW5ndGgpCisgICAgICAgIG5ld19zaXplID0gKHNpemVfdCkgbWF4X2xlbmd0aDsKKwogICAgIGlmIChuZXdfc2l6ZSA+IHNpemUpIHsKICAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld19zaXplKTsKICAgICB9IGVsc2UgeyAgLyogb3ZlcmZsb3cgKi8KQEAgLTE0MiwxNCArMTU0LDE0IEBACiAgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgYy0+YnpzLm5leHRfaW4gPSBkYXRhOwogICAgIGMtPmJ6cy5hdmFpbF9pbiA9IDA7CiAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBjLT5ienMuYXZhaWxfb3V0ID0gU01BTExDSFVOSzsKKyAgICBjLT5ienMuYXZhaWxfb3V0ID0gSU5JVElBTF9CVUZGRVJfU0laRTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGNoYXIgKnRoaXNfb3V0OwogICAgICAgICBpbnQgYnplcnJvcjsKQEAgLTE2OCw3ICsxODAsNyBAQAogICAgICAgICBpZiAoYy0+YnpzLmF2YWlsX291dCA9PSAwKSB7CiAgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CiAgICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA8IDApCisgICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQsIC0xKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKICAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKQEAgLTE4OCw3ICsyMDAsNyBAQAogICAgICAgICBpZiAoYWN0aW9uID09IEJaX0ZJTklTSCAmJiBiemVycm9yID09IEJaX1NUUkVBTV9FTkQpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgaWYgKGRhdGFfc2l6ZSAhPSAoc2l6ZV90KVB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE5OSwxMiArMjExLDExIEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KLW91dHB1dCBwcmVzZXQgZmlsZQogbW9kdWxlIF9iejIKIGNsYXNzIF9iejIuQloyQ29tcHJlc3NvciAiQloyQ29tcHJlc3NvciAqIiAiJkJaMkNvbXByZXNzb3JfVHlwZSIKIGNsYXNzIF9iejIuQloyRGVjb21wcmVzc29yICJCWjJEZWNvbXByZXNzb3IgKiIgIiZCWjJEZWNvbXByZXNzb3JfVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWUzYjEzOTkyNGY1ZTE4Y2NdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWRjN2Q3OTkyYTc5ZjljYjddKi8KIAogI2luY2x1ZGUgImNsaW5pYy9fYnoybW9kdWxlLmMuaCIKIApAQCAtNDAyLDY0ICs0MTMsMTc2IEBACiAKIC8qIEJaMkRlY29tcHJlc3NvciBjbGFzcy4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWRlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpkLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKQorLyogRGVjb21wcmVzcyBkYXRhIG9mIGxlbmd0aCBkLT5ienNfYXZhaWxfaW5fcmVhbCBpbiBkLT5ienMubmV4dF9pbi4gIFRoZSBvdXRwdXQKKyAgIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgYW5kIHJldHVybmVkLiAgQXQgbW9zdCBtYXhfbGVuZ3RoIGJ5dGVzIGFyZQorICAgcmV0dXJuZWQsIHNvIHNvbWUgb2YgdGhlIGlucHV0IG1heSBub3QgYmUgY29uc3VtZWQuIGQtPmJ6cy5uZXh0X2luIGFuZAorICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgY29uc3VtZWQgaW5wdXQuICovCitzdGF0aWMgUHlPYmplY3QqCitkZWNvbXByZXNzX2J1ZihCWjJEZWNvbXByZXNzb3IgKmQsIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKIHsKLSAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICAvKiBkYXRhX3NpemUgaXMgc3RyaWN0bHkgcG9zaXRpdmUsIGJ1dCBiZWNhdXNlIHdlIHJlcGVhdGVkbHkgaGF2ZSB0bworICAgICAgIGNvbXBhcmUgYWdhaW5zdCBtYXhfbGVuZ3RoIGFuZCBQeUJ5dGVzX0dFVF9TSVpFIHdlIGRlY2xhcmUgaXQgYXMKKyAgICAgICBzaWduZWQgKi8KKyAgICBQeV9zc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBiel9zdHJlYW0gKmJ6cyA9ICZkLT5ienM7CiAKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIGlmIChtYXhfbGVuZ3RoIDwgMCB8fCBtYXhfbGVuZ3RoID49IElOSVRJQUxfQlVGRkVSX1NJWkUpCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG1heF9sZW5ndGgpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBkLT5ienMubmV4dF9pbiA9IGRhdGE7Ci0gICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KLSAgICAgICBEbyBkZWNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMgZWFjaC4gKi8KLSAgICBkLT5ienMuYXZhaWxfaW4gPSAodW5zaWduZWQgaW50KVB5X01JTihsZW4sIFVJTlRfTUFYKTsKLSAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOwotICAgIGQtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgZC0+YnpzLmF2YWlsX291dCA9IFNNQUxMQ0hVTks7CisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnpzLT5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgZm9yICg7OykgewotICAgICAgICBjaGFyICp0aGlzX291dDsKLSAgICAgICAgaW50IGJ6ZXJyb3I7CisgICAgICAgIGludCBienJldDsKKyAgICAgICAgc2l6ZV90IGF2YWlsOworCisgICAgICAgIC8qIE9uIGEgNjQtYml0IHN5c3RlbSwgYnVmZmVyIGxlbmd0aCBtaWdodCBub3QgZml0IGluIGF2YWlsX291dCwgc28gd2UKKyAgICAgICAgICAgZG8gZGVjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzCisgICAgICAgICAgIGVhY2guIE5vdGUgdGhhdCB0aGUgZXhwcmVzc2lvbiBmb3IgYGF2YWlsYCBpcyBndWFyYW50ZWVkIHRvIGJlCisgICAgICAgICAgIHBvc2l0aXZlLCBzbyB0aGUgY2FzdCBpcyBzYWZlLiAqLworICAgICAgICBhdmFpbCA9IChzaXplX3QpIChQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemUpOworICAgICAgICBienMtPmF2YWlsX291dCA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGF2YWlsLCBVSU5UX01BWCk7CisgICAgICAgIGJ6cy0+YXZhaWxfaW4gPSAodW5zaWduZWQgaW50KVB5X01JTihkLT5ienNfYXZhaWxfaW5fcmVhbCwgVUlOVF9NQVgpOworICAgICAgICBkLT5ienNfYXZhaWxfaW5fcmVhbCAtPSBienMtPmF2YWlsX2luOwogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgdGhpc19vdXQgPSBkLT5ienMubmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKCZkLT5ienMpOwotICAgICAgICBkYXRhX3NpemUgKz0gZC0+YnpzLm5leHRfb3V0IC0gdGhpc19vdXQ7CisgICAgICAgIGJ6cmV0ID0gQloyX2J6RGVjb21wcmVzcyhienMpOworICAgICAgICBkYXRhX3NpemUgPSBienMtPm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgKz0gYnpzLT5hdmFpbF9pbjsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihienJldCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7CisgICAgICAgIGlmIChienJldCA9PSBCWl9TVFJFQU1fRU5EKSB7CiAgICAgICAgICAgICBkLT5lb2YgPSAxOwotICAgICAgICAgICAgbGVuICs9IGQtPmJ6cy5hdmFpbF9pbjsKLSAgICAgICAgICAgIGlmIChsZW4gPiAwKSB7IC8qIFNhdmUgbGVmdG92ZXIgaW5wdXQgdG8gdW51c2VkX2RhdGEgKi8KLSAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7Ci0gICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGQtPmJ6cy5uZXh0X2luLCBsZW4pOwotICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAobGVuID09IDApCisgICAgICAgIH0gZWxzZSBpZiAoZC0+YnpzX2F2YWlsX2luX3JlYWwgPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGRhdGFfc2l6ZSA9PSBtYXhfbGVuZ3RoKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZC0+YnpzLmF2YWlsX2luID0gKHVuc2lnbmVkIGludClQeV9NSU4obGVuLCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkLT5ienMuYXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZC0+YnpzLmF2YWlsX291dCA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7CisgICAgICAgICAgICBpZiAoZGF0YV9zaXplID09IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAmJgorICAgICAgICAgICAgICAgIGdyb3dfYnVmZmVyKCZyZXN1bHQsIG1heF9sZW5ndGgpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKmQsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4sIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKK3sKKyAgICBjaGFyIGlucHV0X2J1ZmZlcl9pbl91c2U7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBiel9zdHJlYW0gKmJ6cyA9ICZkLT5ienM7CisKKyAgICAvKiBQcmVwZW5kIHVuY29uc3VtZWQgaW5wdXQgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKGJ6cy0+bmV4dF9pbiAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBhdmFpbF9ub3csIGF2YWlsX3RvdGFsOworCisgICAgICAgIC8qIE51bWJlciBvZiBieXRlcyB3ZSBjYW4gYXBwZW5kIHRvIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBhdmFpbF9ub3cgPSAoZC0+aW5wdXRfYnVmZmVyICsgZC0+aW5wdXRfYnVmZmVyX3NpemUpCisgICAgICAgICAgICAtIChienMtPm5leHRfaW4gKyBkLT5ienNfYXZhaWxfaW5fcmVhbCk7CisKKyAgICAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHdlIGNhbiBhcHBlbmQgaWYgd2UgbW92ZSBleGlzdGluZworICAgICAgICAgICBjb250ZW50cyB0byBiZWdpbm5pbmcgb2YgYnVmZmVyIChvdmVyd3JpdGluZworICAgICAgICAgICBjb25zdW1lZCBpbnB1dCkgKi8KKyAgICAgICAgYXZhaWxfdG90YWwgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSAtIGQtPmJ6c19hdmFpbF9pbl9yZWFsOworCisgICAgICAgIGlmIChhdmFpbF90b3RhbCA8IGxlbikgeworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IGJ6cy0+bmV4dF9pbiAtIGQtPmlucHV0X2J1ZmZlcjsKKyAgICAgICAgICAgIGNoYXIgKnRtcDsKKyAgICAgICAgICAgIHNpemVfdCBuZXdfc2l6ZSA9IGQtPmlucHV0X2J1ZmZlcl9zaXplICsgbGVuIC0gYXZhaWxfbm93OworCisgICAgICAgICAgICAvKiBBc3NpZ24gdG8gdGVtcG9yYXJ5IHZhcmlhYmxlIGZpcnN0LCBzbyB3ZSBkb24ndAorICAgICAgICAgICAgICAgbG9zZSBhZGRyZXNzIG9mIGFsbG9jYXRlZCBidWZmZXIgaWYgcmVhbGxvYyBmYWlscyAqLworICAgICAgICAgICAgdG1wID0gUHlNZW1fUmVhbGxvYyhkLT5pbnB1dF9idWZmZXIsIG5ld19zaXplKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTWVtb3J5RXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gdG1wOworICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBuZXdfc2l6ZTsKKworICAgICAgICAgICAgYnpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyICsgb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGF2YWlsX25vdyA8IGxlbikgeworICAgICAgICAgICAgbWVtbW92ZShkLT5pbnB1dF9idWZmZXIsIGJ6cy0+bmV4dF9pbiwKKyAgICAgICAgICAgICAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwpOworICAgICAgICAgICAgYnpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgICAgIG1lbWNweSgodm9pZCopKGJ6cy0+bmV4dF9pbiArIGQtPmJ6c19hdmFpbF9pbl9yZWFsKSwgZGF0YSwgbGVuKTsKKyAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgKz0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGJ6cy0+bmV4dF9pbiA9IGRhdGE7CisgICAgICAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsID0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNvbXByZXNzX2J1ZihkLCBtYXhfbGVuZ3RoKTsKKyAgICBpZihyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZC0+ZW9mKSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKyAgICAgICAgaWYgKGQtPmJ6c19hdmFpbF9pbl9yZWFsID4gMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoZC0+dW51c2VkX2RhdGEpOworICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9pbiwgZC0+YnpzX2F2YWlsX2luX3JlYWwpOworICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChkLT5ienNfYXZhaWxfaW5fcmVhbCA9PSAwKSB7CisgICAgICAgIGJ6cy0+bmV4dF9pbiA9IE5VTEw7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKworICAgICAgICAvKiBJZiB3ZSBkaWQgbm90IHVzZSB0aGUgaW5wdXQgYnVmZmVyLCB3ZSBub3cgaGF2ZQorICAgICAgICAgICB0byBjb3B5IHRoZSB0YWlsIGZyb20gdGhlIGNhbGxlcidzIGJ1ZmZlciBpbnRvIHRoZQorICAgICAgICAgICBpbnB1dCBidWZmZXIgKi8KKyAgICAgICAgaWYgKCFpbnB1dF9idWZmZXJfaW5fdXNlKSB7CisKKyAgICAgICAgICAgIC8qIERpc2NhcmQgYnVmZmVyIGlmIGl0J3MgdG9vIHNtYWxsCisgICAgICAgICAgICAgICAocmVzaXppbmcgaXQgbWF5IG5lZWRsZXNzbHkgY29weSB0aGUgY3VycmVudCBjb250ZW50cykgKi8KKyAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplIDwgZC0+YnpzX2F2YWlsX2luX3JlYWwpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKGQtPmlucHV0X2J1ZmZlcik7CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQWxsb2NhdGUgaWYgbmVjZXNzYXJ5ICovCisgICAgICAgICAgICBpZiAoZC0+aW5wdXRfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXIgPSBQeU1lbV9NYWxsb2MoZC0+YnpzX2F2YWlsX2luX3JlYWwpOworICAgICAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBkLT5ienNfYXZhaWxfaW5fcmVhbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQ29weSB0YWlsICovCisgICAgICAgICAgICBtZW1jcHkoZC0+aW5wdXRfYnVmZmVyLCBienMtPm5leHRfaW4sIGQtPmJ6c19hdmFpbF9pbl9yZWFsKTsKKyAgICAgICAgICAgIGJ6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlcjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiAKIGVycm9yOgpAQCAtNDcwLDIxICs1OTMsMzAgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9iejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MKIAorICAgIHNlbGY6IHNlbGYodHlwZT0iQloyRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgotICAgIC8KKyAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKLVByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4KK0RlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuCiAKLVJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS4KK0lmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKiBieXRlcyBvZgorZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlCitwcm9kdWNlZCwgKnNlbGYubmVlZHNfaW5wdXQqIHdpbGwgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dAorY2FsbCB0byAqZGVjb21wcmVzcygpKiBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYicnIHRvIG9idGFpbiBtb3JlIG9mIHRoZSBvdXRwdXQuCiAKLUF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQKLXJhaXNlcyBhbiBFT0ZFcnJvci4gIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbQotaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4KK0lmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpcword2FzIGxlc3MgdGhhbiAqbWF4X2xlbmd0aCogYnl0ZXMsIG9yIGJlY2F1c2UgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksCisqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gVHJ1ZS4KKworQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZCByYWlzZXMgYW4KK0VPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluCit0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA4NmU0Yjk5ZTYwY2IzZjYgaW5wdXQ9NjE2YzJhNmRiNTI2OTk2MV0qLworX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yM2U0MTA0NWRlYjI0MGEzIGlucHV0PTk1NThiNDI0YzhiMDA1MTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNDkyLDcgKzYyNCw3IEBACiAgICAgaWYgKHNlbGYtPmVvZikKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiRW5kIG9mIHN0cmVhbSBhbHJlYWR5IHJlYWNoZWQiKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgZGF0YS0+YnVmLCBkYXRhLT5sZW4pOworICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLCBtYXhfbGVuZ3RoKTsKICAgICBSRUxFQVNFX0xPQ0soc2VsZik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUyNyw3ICs2NTksMTEgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CisgICAgc2VsZi0+bmVlZHNfaW5wdXQgPSAxOworICAgIHNlbGYtPmJ6c19hdmFpbF9pbl9yZWFsID0gMDsKKyAgICBzZWxmLT5pbnB1dF9idWZmZXIgPSBOVUxMOworICAgIHNlbGYtPmlucHV0X2J1ZmZlcl9zaXplID0gMDsKKyAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTU0OSw2ICs2ODUsOCBAQAogc3RhdGljIHZvaWQKIEJaMkRlY29tcHJlc3Nvcl9kZWFsbG9jKEJaMkRlY29tcHJlc3NvciAqc2VsZikKIHsKKyAgICBpZihzZWxmLT5pbnB1dF9idWZmZXIgIT0gTlVMTCkKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5pbnB1dF9idWZmZXIpOwogICAgIEJaMl9iekRlY29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOwogI2lmZGVmIFdJVEhfVEhSRUFECkBAIC01NzAsMTEgKzcwOCwxNiBAQAogUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX18sCiAiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKIAorUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2MsCisiVHJ1ZSBpZiBtb3JlIGlucHV0IGlzIG5lZWRlZCBiZWZvcmUgbW9yZSBkZWNvbXByZXNzZWQgZGF0YSBjYW4gYmUgcHJvZHVjZWQuIik7CisKIHN0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXByZXNzb3JfbWVtYmVyc1tdID0gewogICAgIHsiZW9mIiwgVF9CT09MLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIGVvZiksCiAgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfZW9mX19kb2NfX30sCiAgICAgeyJ1bnVzZWRfZGF0YSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihCWjJEZWNvbXByZXNzb3IsIHVudXNlZF9kYXRhKSwKICAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX199LAorICAgIHsibmVlZHNfaW5wdXQiLCBUX0JPT0wsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgbmVlZHNfaW5wdXQpLCBSRUFET05MWSwKKyAgICAgQloyRGVjb21wcmVzc29yX25lZWRzX2lucHV0X2RvY30sCiAgICAge05VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCmluZGV4IDUyZjM0NzkuLjc1NzU3NzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCkBAIC00NywxOSArNDcsMjUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWUxMzkwZTNkYTNjYjlkZWJdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fY29kZWNzbW9kdWxlLmMuaCIKIAogLyogLS0tIFJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5RG9jX1NUUlZBUihyZWdpc3Rlcl9fZG9jX18sCi0icmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKVxuXAotXG5cCi1SZWdpc3RlciBhIGNvZGVjIHNlYXJjaCBmdW5jdGlvbi4gU2VhcmNoIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZVxuXAotb25lIGFyZ3VtZW50LCB0aGUgZW5jb2RpbmcgbmFtZSBpbiBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzLCBhbmQgZWl0aGVyXG5cCi1yZXR1cm4gTm9uZSwgb3IgYSB0dXBsZSBvZiBmdW5jdGlvbnMgKGVuY29kZXIsIGRlY29kZXIsIHN0cmVhbV9yZWFkZXIsXG5cCi1zdHJlYW1fd3JpdGVyKSAob3IgYSBDb2RlY0luZm8gb2JqZWN0KS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MucmVnaXN0ZXIKKyAgICBzZWFyY2hfZnVuY3Rpb246IG9iamVjdAorICAgIC8KIAotc3RhdGljCi1QeU9iamVjdCAqY29kZWNfcmVnaXN0ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZWFyY2hfZnVuY3Rpb24pCitSZWdpc3RlciBhIGNvZGVjIHNlYXJjaCBmdW5jdGlvbi4KKworU2VhcmNoIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBlbmNvZGluZyBuYW1lIGluCithbGwgbG93ZXIgY2FzZSBsZXR0ZXJzLCBhbmQgZWl0aGVyIHJldHVybiBOb25lLCBvciBhIHR1cGxlIG9mIGZ1bmN0aW9ucworKGVuY29kZXIsIGRlY29kZXIsIHN0cmVhbV9yZWFkZXIsIHN0cmVhbV93cml0ZXIpIChvciBhIENvZGVjSW5mbyBvYmplY3QpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yZWdpc3RlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2VhcmNoX2Z1bmN0aW9uKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxNzYwOGI2YWQzODBlYjggaW5wdXQ9MzY5NTc4NDY3OTU1Y2FlNF0qLwogewogICAgIGlmIChQeUNvZGVjX1JlZ2lzdGVyKHNlYXJjaF9mdW5jdGlvbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjcsNzUgKzczLDczIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihsb29rdXBfX2RvY19fLAotImxvb2t1cChlbmNvZGluZykgLT4gQ29kZWNJbmZvXG5cCi1cblwKLUxvb2tzIHVwIGEgY29kZWMgdHVwbGUgaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeSBhbmQgcmV0dXJuc1xuXAotYSBDb2RlY0luZm8gb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5sb29rdXAKKyAgICBlbmNvZGluZzogc3RyCisgICAgLwogCi1zdGF0aWMKLVB5T2JqZWN0ICpjb2RlY19sb29rdXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorTG9va3MgdXAgYSBjb2RlYyB0dXBsZSBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5IGFuZCByZXR1cm5zIGEgQ29kZWNJbmZvIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzk4ZTQxYWZmMGMwNGVmNiBpbnB1dD0zYzU3MmMwZGIzZmViZTljXSovCiB7Ci0gICAgY2hhciAqZW5jb2Rpbmc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKIH0KIAotUHlEb2NfU1RSVkFSKGVuY29kZV9fZG9jX18sCi0iZW5jb2RlKG9iaiwgW2VuY29kaW5nWyxlcnJvcnNdXSkgLT4gb2JqZWN0XG5cCi1cblwKLUVuY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4gZW5jb2RpbmcgZGVmYXVsdHNcblwKLXRvIHRoZSBkZWZhdWx0IGVuY29kaW5nLiBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuXAotaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVmFsdWVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJywgJ3JlcGxhY2UnIGFuZFxuXAotJ3htbGNoYXJyZWZyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuXAotY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZW5jb2RlCisgICAgb2JqOiBvYmplY3QKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInV0Zi04IgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInN0cmljdCIKKworRW5jb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgorCitUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyAndXRmLTgnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYQorZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nCitlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJywgJ3JlcGxhY2UnCithbmQgJ2JhY2tzbGFzaHJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCitjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY29kZWNfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YzA3M2Y2MjI0OWM4ZDdjIGlucHV0PWNkNWI2ODUwNDBmZjYxZjBdKi8KIHsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xzczplbmNvZGUiLCAmdiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIHJldHVybiBQeUNvZGVjX0VuY29kZSh2LCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlDb2RlY19FbmNvZGUob2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlY29kZV9fZG9jX18sCi0iZGVjb2RlKG9iaiwgW2VuY29kaW5nWyxlcnJvcnNdXSkgLT4gb2JqZWN0XG5cCi1cblwKLURlY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4gZW5jb2RpbmcgZGVmYXVsdHNcblwKLXRvIHRoZSBkZWZhdWx0IGVuY29kaW5nLiBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuXAotaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVmFsdWVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnXG5cCi1hcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpc1xuXAotYWJsZSB0byBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmRlY29kZQorICAgIG9iajogb2JqZWN0CisgICAgZW5jb2Rpbmc6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJ1dGYtOCIKKyAgICBlcnJvcnM6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICJzdHJpY3QiCisKK0RlY29kZXMgb2JqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KKworRGVmYXVsdCBlbmNvZGluZyBpcyAndXRmLTgnLiAgZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYQorZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nCitlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJywgJ3JlcGxhY2UnCithbmQgJ2JhY2tzbGFzaHJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoCitjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY29kZWNfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODFjYmY2MTg5YTdmODc4IGlucHV0PTc3MDJjMGNjMmZhMWFkZDZdKi8KIHsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xzczpkZWNvZGUiLCAmdiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKICAgICAvKiBEZWNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIHJldHVybiBQeUNvZGVjX0RlY29kZSh2LCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlDb2RlY19EZWNvZGUob2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0xNDksMzcgKzE1Myw5IEBACiBQdXJnZSB0aGUgbmFtZWQgY29kZWMgZnJvbSB0aGUgaW50ZXJuYWwgY29kZWMgbG9va3VwIGNhY2hlCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfY29kZWNzX19mb3JnZXRfY29kZWNfX2RvY19fLAotIl9mb3JnZXRfY29kZWMoJG1vZHVsZSwgZW5jb2RpbmcsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJQdXJnZSB0aGUgbmFtZWQgY29kZWMgZnJvbSB0aGUgaW50ZXJuYWwgY29kZWMgbG9va3VwIGNhY2hlIik7Ci0KLSNkZWZpbmUgX0NPREVDU19fRk9SR0VUX0NPREVDX01FVEhPRERFRiAgICBcCi0gICAgeyJfZm9yZ2V0X2NvZGVjIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfX2ZvcmdldF9jb2RlYywgTUVUSF9WQVJBUkdTLCBfY29kZWNzX19mb3JnZXRfY29kZWNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfX2ZvcmdldF9jb2RlYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiczpfZm9yZ2V0X2NvZGVjIiwKLSAgICAgICAgJmVuY29kaW5nKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNzVlNjMxNTkxNzAyYTVjIGlucHV0PTE4ZDVkOTJkMGUzODZjMzhdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNTZhOWI5OWQyZDI4MDgwIGlucHV0PTE4ZDVkOTJkMGUzODZjMzhdKi8KIHsKICAgICBpZiAoX1B5Q29kZWNfRm9yZ2V0KGVuY29kaW5nKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODgsNDggKzE2NCw0OSBAQAogfQogCiBzdGF0aWMKLVB5T2JqZWN0ICpjb2RlY190dXBsZShQeU9iamVjdCAqdW5pY29kZSwKK1B5T2JqZWN0ICpjb2RlY190dXBsZShQeU9iamVjdCAqZGVjb2RlZCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbikKIHsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCJPbiIsIHVuaWNvZGUsIGxlbik7Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObiIsIGRlY29kZWQsIGxlbik7CiB9CiAKIC8qIC0tLSBTdHJpbmcgY29kZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWVzY2FwZV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IHNpemU7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmVzY2FwZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3x6OmVzY2FwZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSwgJnNpemUsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlCeXRlc19EZWNvZGVFc2NhcGUoZGF0YSwgc2l6ZSwgZXJyb3JzLCAwLCBOVUxMKSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0OGZhM2U3OGQwM2U2NTggaW5wdXQ9MDAxOGVkZmQ5OWRiNzE0ZF0qLworeworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlCeXRlc19EZWNvZGVFc2NhcGUoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsIDAsIE5VTEwpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmVzY2FwZV9lbmNvZGUKKyAgICBkYXRhOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUJ5dGVzX1R5cGUnKQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmNkNmYzNGZlNDExMWM1MCBpbnB1dD1kYTlkZWQwMDk5MmYzMmYyXSovCiB7Ci0gICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfHo6ZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeUJ5dGVzX1R5cGUsICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHN0cik7CisgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoZGF0YSk7CiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIDQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAic3RyaW5nIGlzIHRvbyBsYXJnZSB0byBlbmNvZGUiKTsKQEAgLTI0OSw3ICsyMjYsNyBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAvKiBUaGVyZSdzIGF0IGxlYXN0IGVub3VnaCByb29tIGZvciBhIGhleCBlc2NhcGUgKi8KICAgICAgICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeUJ5dGVzX0FTX1NUUklORyh2KSkgPj0gNCk7Ci0gICAgICAgICAgICBjID0gUHlCeXRlc19BU19TVFJJTkcoc3RyKVtpXTsKKyAgICAgICAgICAgIGMgPSBQeUJ5dGVzX0FTX1NUUklORyhkYXRhKVtpXTsKICAgICAgICAgICAgIGlmIChjID09ICdcJycgfHwgYyA9PSAnXFwnKQogICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKQEAgLTI3NywxOCArMjU0LDE4IEBACiB9CiAKIC8qIC0tLSBEZWNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51bmljb2RlX2ludGVybmFsX2RlY29kZQorICAgIG9iajogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9pbnRlcm5hbF9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZmU0N2MyY2Q4ODA3ZDkyIGlucHV0PThkNTc5MzBhZWRhMTcwYzZdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvYmosICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMDksMTIwICsyODYsMTA5IEBACiAgICAgfQogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl83X2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl83X2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzdfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYTk0NWU5MDdlNzJlODI3IGlucHV0PWJjNGQ2MjQ3ZWNkYjAxZTZdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl83X2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzhfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzhfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl84X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzMwOWY5ZmY0ZWY1YzliNiBpbnB1dD0zOTE2MWQ3MWU3NDIyZWUyXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfOF9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsKLQotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZDJmYTA1MDdkOWJlZjJjIGlucHV0PWYzY2YwMWQxNDYxMDA3Y2VdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAwOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzE2X2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8xNl9sZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMTZfbGVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmZDYyMTUxNWVmNGNlMTggaW5wdXQ9YTc3ZTNiZjk3MzM1ZDk0ZV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IC0xOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9sZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmJ5dGVvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfYmVfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2JlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OTJmNGVhY2IzZTFmYTA1IGlucHV0PTYwNmY2OWZhZTkxYjU1NjNdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAxOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9iZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmJ5dGVvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIApAQCAtNDMzLDk4ICszOTksOTQgQEAKICAgIGJlaW5nIHRoZSB2YWx1ZSBpbiBlZmZlY3QgYXQgdGhlIGVuZCBvZiBkYXRhLgogCiAqLworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfZXhfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgYnl0ZW9yZGVyOiBpbnQgPSAwCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2V4X2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMTM2YTE4NmRjMmRlZmEwIGlucHV0PWY2ZTdmNjk3NjU4YzAxM2VdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBieXRlb3JkZXIgPSAwOwotICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqdHVwbGU7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8xNl9leF9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIk9uaSIsIHVuaWNvZGUsIGNvbnN1bWVkLCBieXRlb3JkZXIpOwotICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICByZXR1cm4gdHVwbGU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgYnl0ZW9yZGVyID0gMDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTm5pIiwgZGVjb2RlZCwgY29uc3VtZWQsIGJ5dGVvcmRlcik7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzMyX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI3NjM1ZTU1ODU3ZThlZmIgaW5wdXQ9ODZkNGY0MWM2YzJlNzYzZF0qLworeworICAgIGludCBieXRlb3JkZXIgPSAwOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9sZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfbGVfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE3OWQxNzg3ZDhkZGY5ODggaW5wdXQ9ZDE4YjY1MDc3MmQxODhiYV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IC0xOwotICAgIGludCBmaW5hbCA9IDA7Ci0gICAgUHlfc3NpemVfdCBjb25zdW1lZDsKLSAgICBQeU9iamVjdCAqZGVjb2RlZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzMyX2xlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFRoaXMgaXMgb3ZlcndyaXR0ZW4gdW5sZXNzIGZpbmFsIGlzIHRydWUuICovCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzMyX2JlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgYnl0ZW9yZGVyID0gMTsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQ7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9iZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9iZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY29uc3VtZWQgPSBwYnVmLmxlbjsgLyogVGhpcyBpcyBvdmVyd3JpdHRlbiB1bmxlc3MgZmluYWwgaXMgdHJ1ZS4gKi8KLSAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ5dGVvcmRlciwgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODM1NmIwZjM2Nzc5OTgxIGlucHV0PTE5YzI3MWI1ZDM0OTI2ZDhdKi8KK3sKKyAgICBpbnQgYnl0ZW9yZGVyID0gMTsKKyAgICAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmJ5dGVvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7CiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIApAQCAtNTM1LDE2NyArNDk3LDE1NyBAQAogICAgYmVpbmcgdGhlIHZhbHVlIGluIGVmZmVjdCBhdCB0aGUgZW5kIG9mIGRhdGEuCiAKICovCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9leF9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBieXRlb3JkZXI6IGludCA9IDAKKyAgICBmaW5hbDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfZXhfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlciwgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFiOGM3MDk3N2MxOTkyZjUgaW5wdXQ9NGFmM2U2Y2NmZTM0YTA3Nl0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGJ5dGVvcmRlciA9IDA7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGUsICp0dXBsZTsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMzJfZXhfZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmYnl0ZW9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKKyAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOyAvKiBUaGlzIGlzIG92ZXJ3cml0dGVuIHVubGVzcyBmaW5hbCBpcyB0cnVlLiAqLwotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnl0ZW9yZGVyLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiT25pIiwgdW5pY29kZSwgY29uc3VtZWQsIGJ5dGVvcmRlcik7Ci0gICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgIHJldHVybiB0dXBsZTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTm5pIiwgZGVjb2RlZCwgY29uc3VtZWQsIGJ5dGVvcmRlcik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyKGFjY2VwdD17c3RyLCBidWZmZXJ9KQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZXNjYXBlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMWFhNjNmMjYyMGM0OTk5IGlucHV0PTQ5ZmQyN2QwNjgxM2E3ZjVdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejp1bmljb2RlX2VzY2FwZV9kZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiZjk2Y2MxODJkODEzNzkgaW5wdXQ9NzcwOTAzYTIxMTQzNGViY10qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubGF0aW5fMV9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1sYXRpbl8xX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjZiOTE2ZjUwNTVhYWYxMyBpbnB1dD01Y2FkMGYxNzU5YzYxOGVjXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGU7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejpsYXRpbl8xX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUxhdGluMShwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycyk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgcmV0dXJuIGNvZGVjX3R1cGxlKHVuaWNvZGUsIHBidWYubGVuKTsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVMYXRpbjEoZGF0YS0+YnVmLCBkYXRhLT5sZW4sIGVycm9ycyk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuYXNjaWlfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXNjaWlfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjIxM2ExYjVjZGFmYzY1IGlucHV0PWFkMTEwNmY2NDAzN2JkMTZdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmFzY2lpX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGRhdGEtPmJ1ZiwgZGF0YS0+bGVuLCBlcnJvcnMpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotY2hhcm1hcF9kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuY2hhcm1hcF9kZWNvZGUKKyAgICBkYXRhOiBQeV9idWZmZXIKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBtYXBwaW5nOiBvYmplY3QgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6TzpjaGFybWFwX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmbWFwcGluZykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04N2QyN2YzNjUwOThiYmFlIGlucHV0PTE5NzEyY2EzNWM1YTgwZTJdKi8KK3sKKyAgICBQeU9iamVjdCAqZGVjb2RlZDsKKwogICAgIGlmIChtYXBwaW5nID09IFB5X05vbmUpCiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKHBidWYuYnVmLCBwYnVmLmxlbiwgbWFwcGluZywgZXJyb3JzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICByZXR1cm4gY29kZWNfdHVwbGUodW5pY29kZSwgcGJ1Zi5sZW4pOworICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChkYXRhLT5idWYsIGRhdGEtPmxlbiwgbWFwcGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgZGF0YS0+bGVuKTsKIH0KIAogI2lmZGVmIEhBVkVfTUJDUwogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm1iY3NfZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJjc19kZWNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK19jb2RlY3NfbWJjc19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGViYWYzYTViMjBlNTNmYSBpbnB1dD1kNDkyYzFjYTY0ZjRmYThhXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBpbnQgZmluYWwgPSAwOwotICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7Ci0gICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwocGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkID0gZGF0YS0+bGVuOworICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgIGVycm9ycywgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUKKyAgICBjb2RlcGFnZTogaW50CisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotY29kZV9wYWdlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZXBhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmRhdGEsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzMThlM2Q5OTcxZTMxYmEgaW5wdXQ9NGYzMTUyYTMwNGUyMWQ1MV0qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGZpbmFsID0gMDsKLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gTlVMTDsKLSAgICBpbnQgY29kZV9wYWdlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZwYnVmLCAmZXJyb3JzLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjb25zdW1lZCA9IHBidWYubGVuOwotCi0gICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKGNvZGVfcGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJ1Zi5idWYsIHBidWYubGVuLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsID8gTlVMTCA6ICZjb25zdW1lZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKGNvZGVwYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YnVmLCBkYXRhLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOwogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKQEAgLTcwMyw0MyArNjU1LDM5IEBACiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnJlYWRidWZmZXJfZW5jb2RlCisgICAgZGF0YTogUHlfYnVmZmVyKGFjY2VwdD17c3RyLCBidWZmZXJ9KQorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXJlYWRidWZmZXJfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTljYzI0MDgzMjk5ODU5IGlucHV0PWI3YzMyMmI4OWQ0YWI5MjNdKi8KIHsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgY29uc3QgY2hhciAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJlYWRidWZmZXJfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBkYXRhLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBzaXplID0gcGRhdGEubGVuOwotCi0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBzaXplKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIGNvZGVjX3R1cGxlKHJlc3VsdCwgc2l6ZSk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZGF0YS0+YnVmLCBkYXRhLT5sZW4pOworICAgIHJldHVybiBjb2RlY190dXBsZShyZXN1bHQsIGRhdGEtPmxlbik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2ludGVybmFsX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudW5pY29kZV9pbnRlcm5hbF9lbmNvZGUKKyAgICBvYmo6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAorc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTA4NDU3MDY4YWQ1MDNiIGlucHV0PTg2MjhmMDI4MGNmNWJhNjFdKi8KK3sKICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuIGRlcHJlY2F0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgMSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb2JqLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlfVU5JQ09ERSAqdTsKICAgICAgICAgUHlfc3NpemVfdCBsZW4sIHNpemU7CkBAIC03NTAsNyArNjk4LDcgQEAKICAgICAgICAgdSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKG9iaiwgJmxlbik7CiAgICAgICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgICAgICBpZiAoKHNpemVfdClsZW4gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHNpemUgPSBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSk7CiAgICAgICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKil1LCBzaXplKSwKQEAgLTc2MSwyMiArNzA5LDI2IEBACiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUodmlldy5idWYsIHZpZXcubGVuKSwgdmlldy5sZW4pOworICAgICAgICByZXN1bHQgPSBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZpZXcuYnVmLCB2aWV3LmxlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzdfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzdfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTdhY2NjNDk2YTMyYjc1OSBpbnB1dD1mZDkxYTc4ZjEwM2IwNDIxXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTc4OSwxNiArNzQxLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfOF9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfOF9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl84X2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzgzMWQ4MGU3YWVkZWRlIGlucHV0PTJjMjJkNDA1MzJmMDcxZjNdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtODE4LDE3ICs3NzMsMjAgQEAKIAogKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLXV0Zl8xNl9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIGludCBieXRlb3JkZXIgPSAwOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMTZfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBieXRlb3JkZXI6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzE2X2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzYWM1OGU5NjBhOWVlNGQgaW5wdXQ9MzkzNWE0ODliMmQ1Mzg1ZV0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04NDEsMTYgKzc5OSwxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2xlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzE2X2xlX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2xlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyMmJlZGI4ZGEzNGZiNjYgaW5wdXQ9YmMyN2RmMDVkMWQyMGRmZV0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04NjMsMTYgKzgyNCwxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzE2X2JlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MudXRmXzE2X2JlX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2JlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhYTdlZTk1MDJhY2RkNzcgaW5wdXQ9NWE2OWQ0MTEyNzYzNDYyYl0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC04OTIsMTcgKzg1NiwyMCBAQAogCiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotdXRmXzMyX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGJ5dGVvcmRlciA9IDA7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLnV0Zl8zMl9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGJ5dGVvcmRlcjogaW50ID0gMAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6aTp1dGZfMzJfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U3ZDVhMDAzYjAyYmFlZCBpbnB1dD00MzRhMWVmYTQ5MmI4ZDU4XSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTkxNSwxNiArODgyLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfbGVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMzJfbGVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfbGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRkYTY0MWNkMzNkYmZjMiBpbnB1dD1kZmEyZDdkYzc4Yjk5NDIyXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTkzNywxNiArOTA3LDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11dGZfMzJfYmVfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51dGZfMzJfYmVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMzJfYmVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2NjYThiNDRkOTFhN2M3YSBpbnB1dD00NTk1NjE3YjE4MTY5MDAyXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTk1OSwxNiArOTMyLDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy51bmljb2RlX2VzY2FwZV9lbmNvZGUKKyAgICBzdHI6IG9iamVjdAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zODlmMjNkMmI4ZjhkODBiIGlucHV0PTgyNzM1MDZmMTQwNzY5MTJdKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewpAQCAtOTgxLDE2ICs5NTcsMTkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjNGUzOWQ2ZWMzN2E2MiBpbnB1dD0xODE3NTVkNWRmYWNlZjNjXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTEwMDMsMTYgKzk4MiwxOSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotbGF0aW5fMV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqc3RyLCAqdjsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5sYXRpbl8xX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bGF0aW5fMV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjZjAwZWI4ZTQ4Yzg4OWMgaW5wdXQ9ZjAzZjZkY2YxZDg0YmVlNF0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC0xMDI1LDE2ICsxMDA3LDE5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1hc2NpaV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnN0ciwgKnY7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuYXNjaWlfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejphc2NpaV9lbmNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTlkMThmYzZiNmI5MWNmYiBpbnB1dD1kODdlMjVhMTBhNTkzZmVlXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTEwNDcsMTcgKzEwMzIsMjEgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWNoYXJtYXBfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5jaGFybWFwX2VuY29kZQorICAgIHN0cjogb2JqZWN0CisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgbWFwcGluZzogb2JqZWN0ID0gTlVMTAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6TzpjaGFybWFwX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNGNhNDJiODM4NTNjNjQzIGlucHV0PTg1ZjQxNzI2NjFlOGRhZDldKi8KK3sKKyAgICBQeU9iamVjdCAqdjsKKwogICAgIGlmIChtYXBwaW5nID09IFB5X05vbmUpCiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCkBAIC0xMDcyLDI3ICsxMDYxLDM0IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWNoYXJtYXBfYnVpbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5jaGFybWFwX2J1aWxkCisgICAgbWFwOiB1bmljb2RlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1hcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NDg1YjU4ZmE0NGFmYTZhIGlucHV0PWQ5MWE5MWQxNzE3ZGJjNmRdKi8KIHsKLSAgICBQeU9iamVjdCAqbWFwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChtYXApOwogfQogCiAjaWZkZWYgSEFWRV9NQkNTCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tYmNzX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm1iY3NfZW5jb2RlCisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejptYmNzX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDFhMDEzYmM2ODc5OGJkNyBpbnB1dD02NWMwOWVlMWU0MjAzMjYzXSovCit7CisgICAgUHlPYmplY3QgKnY7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKQEAgLTExMDUsMTcgKzExMDEsMjAgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWNvZGVfcGFnZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpzdHIsICp2OwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgaW50IGNvZGVfcGFnZTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuY29kZV9wYWdlX2VuY29kZQorICAgIGNvZGVfcGFnZTogaW50CisgICAgc3RyOiBvYmplY3QKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNDA2NjE4ZGJmYmNlMjUgaW5wdXQ9Yzg1NjJlYzQ2MGMyZTMwOV0qLworeworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CkBAIC0xMTM0LDk5ICsxMTMzLDk0IEBACiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIocmVnaXN0ZXJfZXJyb3JfX2RvY19fLAotInJlZ2lzdGVyX2Vycm9yKGVycm9ycywgaGFuZGxlcilcblwKLVxuXAotUmVnaXN0ZXIgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGVyIHVuZGVyIHRoZSBuYW1lXG5cCi1lcnJvcnMuIGhhbmRsZXIgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCwgdGhhdFxuXAotd2lsbCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gaW5zdGFuY2UgY29udGFpbmluZ1xuXAotaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBlbmNvZGluZy9kZWNvZGluZ1xuXAotZXJyb3IgYW5kIG11c3QgcmV0dXJuIGEgKHJlcGxhY2VtZW50LCBuZXcgcG9zaXRpb24pIHR1cGxlLiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5yZWdpc3Rlcl9lcnJvcgorICAgIGVycm9yczogc3RyCisgICAgaGFuZGxlcjogb2JqZWN0CisgICAgLwogCi1zdGF0aWMgUHlPYmplY3QgKnJlZ2lzdGVyX2Vycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxlciB1bmRlciB0aGUgbmFtZSBlcnJvcnMuCisKK2hhbmRsZXIgbXVzdCBiZSBhIGNhbGxhYmxlIG9iamVjdCwgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbgoraW5zdGFuY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nCitlcnJvciBhbmQgbXVzdCByZXR1cm4gYSAocmVwbGFjZW1lbnQsIG5ldyBwb3NpdGlvbikgdHVwbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpoYW5kbGVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlMDBkM2IxODQ5Y2U2OGEgaW5wdXQ9NWU2NzA5MjAzYzJlMzNmZV0qLwogewotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKmhhbmRsZXI7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOnJlZ2lzdGVyX2Vycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsICZoYW5kbGVyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5Q29kZWNfUmVnaXN0ZXJFcnJvcihuYW1lLCBoYW5kbGVyKSkKKyAgICBpZiAoUHlDb2RlY19SZWdpc3RlckVycm9yKGVycm9ycywgaGFuZGxlcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIobG9va3VwX2Vycm9yX19kb2NfXywKLSJsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyXG5cCi1cblwKLVJldHVybiB0aGUgZXJyb3IgaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGluZyBuYW1lXG5cCi1vciByYWlzZSBhIExvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmxvb2t1cF9lcnJvcgorICAgIG5hbWU6IHN0cgorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0ICpsb29rdXBfZXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbG9va3VwX2Vycm9yKGVycm9ycykgLT4gaGFuZGxlcgorCitSZXR1cm4gdGhlIGVycm9yIGhhbmRsZXIgZm9yIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxpbmcgbmFtZSBvciByYWlzZSBhCitMb29rdXBFcnJvciwgaWYgbm8gaGFuZGxlciBleGlzdHMgdW5kZXIgdGhpcyBuYW1lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczMWU2ZGY4YzgzYzYxNTggaW5wdXQ9NDc3NWRkNjVlNjIzNWFiYV0qLwogewotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6bG9va3VwX2Vycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlDb2RlY19Mb29rdXBFcnJvcihuYW1lKTsKIH0KIAogLyogLS0tIE1vZHVsZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBfY29kZWNzX2Z1bmN0aW9uc1tdID0gewotICAgIHsicmVnaXN0ZXIiLCAgICAgICAgICAgICAgICBjb2RlY19yZWdpc3RlciwgICAgICAgICAgICAgICAgIE1FVEhfTywKLSAgICAgICAgcmVnaXN0ZXJfX2RvY19ffSwKLSAgICB7Imxvb2t1cCIsICAgICAgICAgICAgICAgICAgY29kZWNfbG9va3VwLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGxvb2t1cF9fZG9jX199LAotICAgIHsiZW5jb2RlIiwgICAgICAgICAgICAgICAgICBjb2RlY19lbmNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgZW5jb2RlX19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAgICAgICAgICAgICAgICAgIGNvZGVjX2RlY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICBkZWNvZGVfX2RvY19ffSwKLSAgICB7ImVzY2FwZV9lbmNvZGUiLCAgICAgICAgICAgZXNjYXBlX2VuY29kZSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXNjYXBlX2RlY29kZSIsICAgICAgICAgICBlc2NhcGVfZGVjb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfOF9lbmNvZGUiLCAgICAgICAgICAgIHV0Zl84X2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl84X2RlY29kZSIsICAgICAgICAgICAgdXRmXzhfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzdfZW5jb2RlIiwgICAgICAgICAgICB1dGZfN19lbmNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfN19kZWNvZGUiLCAgICAgICAgICAgIHV0Zl83X2RlY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9lbmNvZGUiLCAgICAgICAgICAgdXRmXzE2X2VuY29kZSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2xlX2VuY29kZSIsICAgICAgICB1dGZfMTZfbGVfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfYmVfZW5jb2RlIiwgICAgICAgIHV0Zl8xNl9iZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9kZWNvZGUiLCAgICAgICAgICAgdXRmXzE2X2RlY29kZSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2xlX2RlY29kZSIsICAgICAgICB1dGZfMTZfbGVfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfYmVfZGVjb2RlIiwgICAgICAgIHV0Zl8xNl9iZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9leF9kZWNvZGUiLCAgICAgICAgdXRmXzE2X2V4X2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2VuY29kZSIsICAgICAgICAgICB1dGZfMzJfZW5jb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfbGVfZW5jb2RlIiwgICAgICAgIHV0Zl8zMl9sZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9iZV9lbmNvZGUiLCAgICAgICAgdXRmXzMyX2JlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2RlY29kZSIsICAgICAgICAgICB1dGZfMzJfZGVjb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfbGVfZGVjb2RlIiwgICAgICAgIHV0Zl8zMl9sZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9iZV9kZWNvZGUiLCAgICAgICAgdXRmXzMyX2JlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2V4X2RlY29kZSIsICAgICAgICB1dGZfMzJfZXhfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bmljb2RlX2VzY2FwZV9lbmNvZGUiLCAgIHVuaWNvZGVfZXNjYXBlX2VuY29kZSwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuaWNvZGVfZXNjYXBlX2RlY29kZSIsICAgdW5pY29kZV9lc2NhcGVfZGVjb2RlLCAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLCB1bmljb2RlX2ludGVybmFsX2VuY29kZSwgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bmljb2RlX2ludGVybmFsX2RlY29kZSIsIHVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLCByYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlLCAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSIsIHJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsYXRpbl8xX2VuY29kZSIsICAgICAgICAgIGxhdGluXzFfZW5jb2RlLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxhdGluXzFfZGVjb2RlIiwgICAgICAgICAgbGF0aW5fMV9kZWNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiYXNjaWlfZW5jb2RlIiwgICAgICAgICAgICBhc2NpaV9lbmNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJhc2NpaV9kZWNvZGUiLCAgICAgICAgICAgIGFzY2lpX2RlY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNoYXJtYXBfZW5jb2RlIiwgICAgICAgICAgY2hhcm1hcF9lbmNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAgICAgICAgICBjaGFybWFwX2RlY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjaGFybWFwX2J1aWxkIiwgICAgICAgICAgIGNoYXJtYXBfYnVpbGQsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRidWZmZXJfZW5jb2RlIiwgICAgICAgcmVhZGJ1ZmZlcl9lbmNvZGUsICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIEhBVkVfTUJDUwotICAgIHsibWJjc19lbmNvZGUiLCAgICAgICAgICAgICBtYmNzX2VuY29kZSwgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJtYmNzX2RlY29kZSIsICAgICAgICAgICAgIG1iY3NfZGVjb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNvZGVfcGFnZV9lbmNvZGUiLCAgICAgICAgY29kZV9wYWdlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY29kZV9wYWdlX2RlY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jZW5kaWYKLSAgICB7InJlZ2lzdGVyX2Vycm9yIiwgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIHJlZ2lzdGVyX2Vycm9yX19kb2NfX30sCi0gICAgeyJsb29rdXBfZXJyb3IiLCAgICAgICAgICAgIGxvb2t1cF9lcnJvciwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICBsb29rdXBfZXJyb3JfX2RvY19ffSwKKyAgICBfQ09ERUNTX1JFR0lTVEVSX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTE9PS1VQX01FVEhPRERFRgorICAgIF9DT0RFQ1NfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfRVNDQVBFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfOF9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfOF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfN19FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfN19ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0xFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9CRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0xFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9CRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfRVhfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9MRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfQkVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9MRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfQkVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0VYX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VOSUNPREVfSU5URVJOQUxfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfUkFXX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0xBVElOXzFfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTEFUSU5fMV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19BU0NJSV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19BU0NJSV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19DSEFSTUFQX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NIQVJNQVBfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfQ0hBUk1BUF9CVUlMRF9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1JFQURCVUZGRVJfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfUkVHSVNURVJfRVJST1JfTUVUSE9EREVGCisgICAgX0NPREVDU19MT09LVVBfRVJST1JfTUVUSE9EREVGCiAgICAgX0NPREVDU19fRk9SR0VUX0NPREVDX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCmluZGV4IDY1ODAzYTQuLjVkZWE4Y2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwpAQCAtMSw1MCArMSw3MyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCisjaWZkZWYgU1REQ19IRUFERVJTCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjZWxzZQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPiAgICAgICAgICAvKiBGb3Igc2l6ZV90ICovCisjZW5kaWYKKwogLyogY29sbGVjdGlvbnMgbW9kdWxlIGltcGxlbWVudGF0aW9uIG9mIGEgZGVxdWUoKSBkYXRhdHlwZQogICAgV3JpdHRlbiBhbmQgbWFpbnRhaW5lZCBieSBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uQHJjbi5jb20+Ci0gICBDb3B5cmlnaHQgKGMpIDIwMDQtMjAxMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIENvcHlyaWdodCAoYykgMjAwNC0yMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICovCiAKIC8qIFRoZSBibG9jayBsZW5ndGggbWF5IGJlIHNldCB0byBhbnkgbnVtYmVyIG92ZXIgMS4gIExhcmdlciBudW1iZXJzCiAgKiByZWR1Y2UgdGhlIG51bWJlciBvZiBjYWxscyB0byB0aGUgbWVtb3J5IGFsbG9jYXRvciwgZ2l2ZSBmYXN0ZXIKLSAqIGluZGV4aW5nIGFuZCByb3RhdGlvbiwgYW5kIHJlZHVjZSB0aGUgbGluazo6ZGF0YSBvdmVyaGVhZCByYXRpby4KLSAqCi0gKiBJZGVhbGx5LCB0aGUgYmxvY2sgbGVuZ3RoIHdpbGwgYmUgc2V0IHRvIHR3byBsZXNzIHRoYW4gc29tZQotICogbXVsdGlwbGUgb2YgdGhlIGNhY2hlLWxpbmUgbGVuZ3RoIChzbyB0aGF0IHRoZSBmdWxsIGJsb2NrCi0gKiBpbmNsdWRpbmcgdGhlIGxlZnRsaW5rIGFuZCByaWdodGxpbmsgd2lsbCBmaXQgbmVhdGx5IGludG8KLSAqIGNhY2hlIGxpbmVzKS4KKyAqIGluZGV4aW5nIGFuZCByb3RhdGlvbiwgYW5kIHJlZHVjZSB0aGUgbGluayB0byBkYXRhIG92ZXJoZWFkIHJhdGlvLgorICogTWFraW5nIHRoZSBibG9jayBsZW5ndGggYSBwb3dlciBvZiB0d28gc3BlZWRzLXVwIHRoZSBtb2R1bG8KKyAqIGFuZCBkaXZpc2lvbiBjYWxjdWxhdGlvbnMgaW4gZGVxdWVfaXRlbSgpIGFuZCBkZXF1ZV9hc3NfaXRlbSgpLgogICovCiAKLSNkZWZpbmUgQkxPQ0tMRU4gNjIKKyNkZWZpbmUgQkxPQ0tMRU4gNjQKICNkZWZpbmUgQ0VOVEVSICgoQkxPQ0tMRU4gLSAxKSAvIDIpCiAKLS8qIEEgYGRlcXVlb2JqZWN0YCBpcyBjb21wb3NlZCBvZiBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBgYmxvY2tgIG5vZGVzLgorLyogRGF0YSBmb3IgZGVxdWUgb2JqZWN0cyBpcyBzdG9yZWQgaW4gYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgZml4ZWQKKyAqIGxlbmd0aCBibG9ja3MuICBUaGlzIGFzc3VyZXMgdGhhdCBhcHBlbmRzIG9yIHBvcHMgbmV2ZXIgbW92ZSBhbnkKKyAqIG90aGVyIGRhdGEgZWxlbWVudHMgYmVzaWRlcyB0aGUgb25lIGJlaW5nIGFwcGVuZGVkIG9yIHBvcHBlZC4KKyAqCisgKiBBbm90aGVyIGFkdmFudGFnZSBpcyB0aGF0IGl0IGNvbXBsZXRlbHkgYXZvaWRzIHVzZSBvZiByZWFsbG9jKCksCisgKiByZXN1bHRpbmcgaW4gbW9yZSBwcmVkaWN0YWJsZSBwZXJmb3JtYW5jZS4KKyAqCisgKiBUZXh0Ym9vayBpbXBsZW1lbnRhdGlvbnMgb2YgZG91Ymx5LWxpbmtlZCBsaXN0cyBzdG9yZSBvbmUgZGF0dW0KKyAqIHBlciBsaW5rLCBidXQgdGhhdCBnaXZlcyB0aGVtIGEgMjAwJSBtZW1vcnkgb3ZlcmhlYWQgKGEgcHJldiBhbmQKKyAqIG5leHQgbGluayBmb3IgZWFjaCBkYXR1bSkgYW5kIGl0IGNvc3RzIG9uZSBtYWxsb2MoKSBjYWxsIHBlciBkYXRhCisgKiBlbGVtZW50LiAgQnkgdXNpbmcgZml4ZWQtbGVuZ3RoIGJsb2NrcywgdGhlIGxpbmsgdG8gZGF0YSByYXRpbyBpcworICogc2lnbmlmaWNhbnRseSBpbXByb3ZlZCBhbmQgdGhlcmUgYXJlIHByb3BvcnRpb25hbGx5IGZld2VyIGNhbGxzCisgKiB0byBtYWxsb2MoKSBhbmQgZnJlZSgpLiAgVGhlIGRhdGEgYmxvY2tzIG9mIGNvbnNlY3V0aXZlIHBvaW50ZXJzCisgKiBhbHNvIGltcHJvdmUgY2FjaGUgbG9jYWxpdHkuCisgKgogICogVGhlIGxpc3Qgb2YgYmxvY2tzIGlzIG5ldmVyIGVtcHR5LCBzbyBkLmxlZnRibG9jayBhbmQgZC5yaWdodGJsb2NrCiAgKiBhcmUgbmV2ZXIgZXF1YWwgdG8gTlVMTC4gIFRoZSBsaXN0IGlzIG5vdCBjaXJjdWxhci4KICAqCiAgKiBBIGRlcXVlIGQncyBmaXJzdCBlbGVtZW50IGlzIGF0IGQubGVmdGJsb2NrW2xlZnRpbmRleF0KICAqIGFuZCBpdHMgbGFzdCBlbGVtZW50IGlzIGF0IGQucmlnaHRibG9ja1tyaWdodGluZGV4XS4KLSAqIFVubGlrZSBQeXRob24gc2xpY2UgaW5kaWNlcywgdGhlc2UgaW5kaWNlcyBhcmUgaW5jbHVzaXZlCi0gKiBvbiBib3RoIGVuZHMuICBUaGlzIG1ha2VzIHRoZSBhbGdvcml0aG1zIGZvciBsZWZ0IGFuZAotICogcmlnaHQgb3BlcmF0aW9ucyBtb3JlIHN5bW1ldHJpY2FsIGFuZCBzaW1wbGlmaWVzIHRoZSBkZXNpZ24uCiAgKgotICogVGhlIGluZGljZXMsIGQubGVmdGluZGV4IGFuZCBkLnJpZ2h0aW5kZXggYXJlIGFsd2F5cyBpbiB0aGUgcmFuZ2UKLSAqICAgICAwIDw9IGluZGV4IDwgQkxPQ0tMRU4uCi0gKiBUaGVpciBleGFjdCByZWxhdGlvbnNoaXAgaXM6Ci0gKiAgICAgKGQubGVmdGluZGV4ICsgZC5sZW4gLSAxKSAlIEJMT0NLTEVOID09IGQucmlnaHRpbmRleC4KKyAqIFVubGlrZSBQeXRob24gc2xpY2UgaW5kaWNlcywgdGhlc2UgaW5kaWNlcyBhcmUgaW5jbHVzaXZlIG9uIGJvdGgKKyAqIGVuZHMuICBUaGlzIG1ha2VzIHRoZSBhbGdvcml0aG1zIGZvciBsZWZ0IGFuZCByaWdodCBvcGVyYXRpb25zCisgKiBtb3JlIHN5bW1ldHJpY2FsIGFuZCBpdCBzaW1wbGlmaWVzIHRoZSBkZXNpZ24uCiAgKgotICogRW1wdHkgZGVxdWVzIGhhdmUgZC5sZW4gPT0gMDsgZC5sZWZ0YmxvY2s9PWQucmlnaHRibG9jazsKLSAqIGQubGVmdGluZGV4ID09IENFTlRFUisxOyBhbmQgZC5yaWdodGluZGV4ID09IENFTlRFUi4KKyAqIFRoZSBpbmRpY2VzLCBkLmxlZnRpbmRleCBhbmQgZC5yaWdodGluZGV4IGFyZSBhbHdheXMgaW4gdGhlIHJhbmdlOgorICogICAgIDAgPD0gaW5kZXggPCBCTE9DS0xFTgorICoKKyAqIEFuZCB0aGVpciBleGFjdCByZWxhdGlvbnNoaXAgaXM6CisgKiAgICAgKGQubGVmdGluZGV4ICsgZC5sZW4gLSAxKSAlIEJMT0NLTEVOID09IGQucmlnaHRpbmRleAorICoKKyAqIFdoZW5ldmVyIGQubGVmdGJsb2NrID09IGQucmlnaHRibG9jaywgdGhlbjoKKyAqICAgICBkLmxlZnRpbmRleCArIGQubGVuIC0gMSA9PSBkLnJpZ2h0aW5kZXgKKyAqCisgKiBIb3dldmVyLCB3aGVuIGQubGVmdGJsb2NrICE9IGQucmlnaHRibG9jaywgdGhlIGQubGVmdGluZGV4IGFuZAorICogZC5yaWdodGluZGV4IGJlY29tZSBpbmRpY2VzIGludG8gZGlzdGluY3QgYmxvY2tzIGFuZCBlaXRoZXIgbWF5CisgKiBiZSBsYXJnZXIgdGhhbiB0aGUgb3RoZXIuCisgKgorICogRW1wdHkgZGVxdWVzIGhhdmU6CisgKiAgICAgZC5sZW4gPT0gMAorICogICAgIGQubGVmdGJsb2NrID09IGQucmlnaHRibG9jaworICogICAgIGQubGVmdGluZGV4ID09IENFTlRFUiArIDEKKyAqICAgICBkLnJpZ2h0aW5kZXggPT0gQ0VOVEVSCisgKgogICogQ2hlY2tpbmcgZm9yIGQubGVuID09IDAgaXMgdGhlIGludGVuZGVkIHdheSB0byBzZWUgd2hldGhlciBkIGlzIGVtcHR5LgotICoKLSAqIFdoZW5ldmVyIGQubGVmdGJsb2NrID09IGQucmlnaHRibG9jaywKLSAqICAgICBkLmxlZnRpbmRleCArIGQubGVuIC0gMSA9PSBkLnJpZ2h0aW5kZXguCi0gKgotICogSG93ZXZlciwgd2hlbiBkLmxlZnRibG9jayAhPSBkLnJpZ2h0YmxvY2ssIGQubGVmdGluZGV4IGFuZCBkLnJpZ2h0aW5kZXgKLSAqIGJlY29tZSBpbmRpY2VzIGludG8gZGlzdGluY3QgYmxvY2tzIGFuZCBlaXRoZXIgbWF5IGJlIGxhcmdlciB0aGFuIHRoZQotICogb3RoZXIuCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgQkxPQ0sgewpAQCAtNTMsNiArNzYsMTkgQEAKICAgICBzdHJ1Y3QgQkxPQ0sgKnJpZ2h0bGluazsKIH0gYmxvY2s7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9WQVJfSEVBRAorICAgIGJsb2NrICpsZWZ0YmxvY2s7CisgICAgYmxvY2sgKnJpZ2h0YmxvY2s7CisgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIDAgPD0gbGVmdGluZGV4IDwgQkxPQ0tMRU4gKi8KKyAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogMCA8PSByaWdodGluZGV4IDwgQkxPQ0tMRU4gKi8KKyAgICBzaXplX3Qgc3RhdGU7ICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLworICAgIFB5X3NzaXplX3QgbWF4bGVuOworICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKK30gZGVxdWVvYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVfdHlwZTsKKwogLyogRm9yIGRlYnVnIGJ1aWxkcywgYWRkIGVycm9yIGNoZWNraW5nIHRvIHRyYWNrIHRoZSBlbmRwb2ludHMKICAqIGluIHRoZSBjaGFpbiBvZiBsaW5rcy4gIFRoZSBnb2FsIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGxpbmsKICAqIGFzc2lnbm1lbnRzIG9ubHkgdGFrZSBwbGFjZSBhdCBlbmRwb2ludHMgc28gdGhhdCBsaW5rcyBhbHJlYWR5CkBAIC03NCw4ICsxMTAsMTQgQEAKICNkZWZpbmUgQ0hFQ0tfTk9UX0VORChsaW5rKQogI2VuZGlmCiAKKy8qIFRvIHByZXZlbnQgbGVuIGZyb20gb3ZlcmZsb3dpbmcgUFlfU1NJWkVfVF9NQVgsIHdlIHJlZnVzZSB0bworICAgYWxsb2NhdGUgbmV3IGJsb2NrcyBpZiB0aGUgY3VycmVudCBsZW4gaXMgbmVhcmluZyBvdmVyZmxvdy4KKyovCisKKyNkZWZpbmUgTUFYX0RFUVVFX0xFTiAoUFlfU1NJWkVfVF9NQVggLSAzKkJMT0NLTEVOKQorCiAvKiBBIHNpbXBsZSBmcmVlbGlzdGluZyBzY2hlbWUgaXMgdXNlZCB0byBtaW5pbWl6ZSBjYWxscyB0byB0aGUgbWVtb3J5Ci0gICBhbGxvY2F0b3IuICBJdCBhY2NvbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCisgICBhbGxvY2F0b3IuICBJdCBhY2NvbW1vZGF0ZXMgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBuZXcgYmxvY2tzIGFyZSBiZWluZwogICAgYWRkZWQgYXQgYWJvdXQgdGhlIHNhbWUgcmF0ZSBhcyBvbGQgYmxvY2tzIGFyZSBiZWluZyBmcmVlZC4KICAqLwogCkBAIC04Niw5ICsxMjgsNyBAQAogc3RhdGljIGJsb2NrICoKIG5ld2Jsb2NrKFB5X3NzaXplX3QgbGVuKSB7CiAgICAgYmxvY2sgKmI7Ci0gICAgLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCi0gICAgICogYWxsb2NhdGUgbmV3IGJsb2NrcyBpZiB0aGUgY3VycmVudCBsZW4gaXMgbmVhcmluZyBvdmVyZmxvdy4gKi8KLSAgICBpZiAobGVuID49IFBZX1NTSVpFX1RfTUFYIC0gMipCTE9DS0xFTikgeworICAgIGlmIChsZW4gPj0gTUFYX0RFUVVFX0xFTikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIG1vcmUgYmxvY2tzIHRvIHRoZSBkZXF1ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNiwzNCArMTU2LDExIEBACiAgICAgfQogfQogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfVkFSX0hFQUQKLSAgICBibG9jayAqbGVmdGJsb2NrOwotICAgIGJsb2NrICpyaWdodGJsb2NrOwotICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OyAgICAgICAvKiBpbiByYW5nZShCTE9DS0xFTikgKi8KLSAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogaW4gcmFuZ2UoQkxPQ0tMRU4pICovCi0gICAgbG9uZyBzdGF0ZTsgICAgICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBpbmRpY2VzIG1vdmUgKi8KLSAgICBQeV9zc2l6ZV90IG1heGxlbjsKLSAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCi19IGRlcXVlb2JqZWN0OwotCi0vKiBUaGUgZGVxdWUncyBzaXplIGxpbWl0IGlzIGQubWF4bGVuLiAgVGhlIGxpbWl0IGNhbiBiZSB6ZXJvIG9yIHBvc2l0aXZlLgotICogSWYgdGhlcmUgaXMgbm8gbGltaXQsIHRoZW4gZC5tYXhsZW4gPT0gLTEuCi0gKgotICogQWZ0ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byBhIGRlcXVlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgaGFzIGdyb3duIHBhc3QKLSAqIHRoZSBsaW1pdC4gSWYgaXQgaGFzLCB3ZSBnZXQgdGhlIHNpemUgYmFjayBkb3duIHRvIHRoZSBsaW1pdCBieSBwb3BwaW5nIGFuCi0gKiBpdGVtIG9mZiBvZiB0aGUgb3Bwb3NpdGUgZW5kLiAgVGhlIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwKLSAqIGFwcGVuZGxlZnQoKSwgZXh0ZW5kKCksIGFuZCBleHRlbmRsZWZ0KCkuCi0gKi8KLQotI2RlZmluZSBUUklNKGQsIHBvcGZ1bmN0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoZC0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZCkgPiBkLT5tYXhsZW4pIHsgICAgICAgXAotICAgICAgICBQeU9iamVjdCAqcnYgPSBwb3BmdW5jdGlvbihkLCBOVUxMKTsgICAgICAgICAgICAgICAgXAotICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCAgJiYgIFB5X1NJWkUoZCkgPD0gZC0+bWF4bGVuKTsgICAgXAotICAgICAgICBQeV9ERUNSRUYocnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZV90eXBlOworLyogWFhYIFRvZG86CisgICBJZiBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLCBtYWtlIHRoZQorICAgZGVxdWUgb2JqZWN0IDY0IGJ5dGUgYWxpZ25lZCBzbyB0aGF0IGFsbCBvZiB0aGUgZmllbGRzCisgICBjYW4gYmUgcmV0cmlldmVkIG9yIHVwZGF0ZWQgaW4gYSBzaW5nbGUgY2FjaGUgbGluZS4KKyovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCkBAIC0xNjUsMTQgKzE4MiwxNCBAQAogICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CiAKICAgICBhc3NlcnQoQkxPQ0tMRU4gPj0gMik7CisgICAgUHlfU0laRShkZXF1ZSkgPSAwOwogICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOwogICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKLSAgICBQeV9TSVpFKGRlcXVlKSA9IDA7CiAgICAgZGVxdWUtPnN0YXRlID0gMDsKLSAgICBkZXF1ZS0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIGRlcXVlLT5tYXhsZW4gPSAtMTsKKyAgICBkZXF1ZS0+d2Vha3JlZmxpc3QgPSBOVUxMOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogfQpAQCAtMTkzLDEzICsyMTAsNyBAQAogICAgIGRlcXVlLT5zdGF0ZSsrOwogCiAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7Ci0gICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA9PSBkZXF1ZS0+cmlnaHRpbmRleCsxKTsKLSAgICAgICAgICAgIC8qIHJlLWNlbnRlciBpbnN0ZWFkIG9mIGZyZWVpbmcgYSBibG9jayAqLwotICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7Ci0gICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpKSB7CiAgICAgICAgICAgICBwcmV2YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jay0+bGVmdGxpbms7CiAgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayAhPSBkZXF1ZS0+cmlnaHRibG9jayk7CiAgICAgICAgICAgICBmcmVlYmxvY2soZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtMjA3LDYgKzIxOCwxMiBAQAogICAgICAgICAgICAgTUFSS19FTkQocHJldmJsb2NrLT5yaWdodGxpbmspOwogICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBwcmV2YmxvY2s7CiAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKKyAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID09IGRlcXVlLT5yaWdodGluZGV4KzEpOworICAgICAgICAgICAgLyogcmUtY2VudGVyIGluc3RlYWQgb2YgZnJlZWluZyBhIGJsb2NrICovCisgICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKKyAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBpdGVtOwpAQCAtMjMxLDEzICsyNDgsNyBAQAogICAgIGRlcXVlLT5zdGF0ZSsrOwogCiAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gQkxPQ0tMRU4pIHsKLSAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID09IGRlcXVlLT5yaWdodGluZGV4KzEpOwotICAgICAgICAgICAgLyogcmUtY2VudGVyIGluc3RlYWQgb2YgZnJlZWluZyBhIGJsb2NrICovCi0gICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKLSAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkpIHsKICAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrICE9IGRlcXVlLT5yaWdodGJsb2NrKTsKICAgICAgICAgICAgIHByZXZibG9jayA9IGRlcXVlLT5sZWZ0YmxvY2stPnJpZ2h0bGluazsKICAgICAgICAgICAgIGZyZWVibG9jayhkZXF1ZS0+bGVmdGJsb2NrKTsKQEAgLTI0NSw2ICsyNTYsMTIgQEAKICAgICAgICAgICAgIE1BUktfRU5EKHByZXZibG9jay0+bGVmdGxpbmspOwogICAgICAgICAgICAgZGVxdWUtPmxlZnRibG9jayA9IHByZXZibG9jazsKICAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7CisgICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KKyAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOworICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGl0ZW07CkBAIC0yNTIsMTEgKzI2OSw0MiBAQAogCiBQeURvY19TVFJWQVIocG9wbGVmdF9kb2MsICJSZW1vdmUgYW5kIHJldHVybiB0aGUgbGVmdG1vc3QgZWxlbWVudC4iKTsKIAorLyogVGhlIGRlcXVlJ3Mgc2l6ZSBsaW1pdCBpcyBkLm1heGxlbi4gIFRoZSBsaW1pdCBjYW4gYmUgemVybyBvciBwb3NpdGl2ZS4KKyAqIElmIHRoZXJlIGlzIG5vIGxpbWl0LCB0aGVuIGQubWF4bGVuID09IC0xLgorICoKKyAqIEFmdGVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gYSBkZXF1ZSwgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBzaXplIGhhcyBncm93biBwYXN0CisgKiB0aGUgbGltaXQuIElmIGl0IGhhcywgd2UgZ2V0IHRoZSBzaXplIGJhY2sgZG93biB0byB0aGUgbGltaXQgYnkgcG9wcGluZyBhbgorICogaXRlbSBvZmYgb2YgdGhlIG9wcG9zaXRlIGVuZC4gIFRoZSBtZXRob2RzIHRoYXQgY2FuIHRyaWdnZXIgdGhpcyBhcmUgYXBwZW5kKCksCisgKiBhcHBlbmRsZWZ0KCksIGV4dGVuZCgpLCBhbmQgZXh0ZW5kbGVmdCgpLgorICovCisKK3N0YXRpYyB2b2lkCitkZXF1ZV90cmltX3JpZ2h0KGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGRlcXVlKSA+IGRlcXVlLT5tYXhsZW4pIHsKKyAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOworICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7CisgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZGVxdWVfdHJpbV9sZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGRlcXVlKSA+IGRlcXVlLT5tYXhsZW4pIHsKKyAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7CisgICAgICAgIGFzc2VydChydiAhPSBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpIDw9IGRlcXVlLT5tYXhsZW4pOworICAgICAgICBQeV9ERUNSRUYocnYpOworICAgIH0KK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2FwcGVuZChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQogewogICAgIGRlcXVlLT5zdGF0ZSsrOwotICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTi0xKSB7CisgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewogICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjcxLDcgKzMxOSw3IEBACiAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOwogICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07Ci0gICAgVFJJTShkZXF1ZSwgZGVxdWVfcG9wbGVmdCk7CisgICAgZGVxdWVfdHJpbV9sZWZ0KGRlcXVlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMjk2LDcgKzM0NCw3IEBACiAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICBkZXF1ZS0+bGVmdGluZGV4LS07CiAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgVFJJTShkZXF1ZSwgZGVxdWVfcG9wKTsKKyAgICBkZXF1ZV90cmltX3JpZ2h0KGRlcXVlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMzUyLDcgKzQwMCw3IEBACiAKICAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKICAgICAgICAgZGVxdWUtPnN0YXRlKys7Ci0gICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTi0xKSB7CisgICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKICAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOwogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKQEAgLTM2OSwxMSArNDE3LDEzIEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcGxlZnQpOworICAgICAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOworICAgIH0KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfREVDUkVGKGl0KTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQzMCwxMSArNDgwLDEzIEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIFRSSU0oZGVxdWUsIGRlcXVlX3BvcCk7CisgICAgICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOworICAgIH0KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfREVDUkVGKGl0KTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQ0OSwxMSArNTAxLDE1MSBAQAogICAgIHJlc3VsdCA9IGRlcXVlX2V4dGVuZChkZXF1ZSwgb3RoZXIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9jb25jYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqb3RoZXIpCit7CisgICAgUHlPYmplY3QgKm5ld19kZXF1ZSwgKnJlc3VsdDsKKyAgICBpbnQgcnY7CisKKyAgICBydiA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob3RoZXIsIChQeU9iamVjdCAqKSZkZXF1ZV90eXBlKTsKKyAgICBpZiAocnYgPD0gMCkgeworICAgICAgICBpZiAocnYgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuIG9ubHkgY29uY2F0ZW5hdGUgZGVxdWUgKG5vdCBcIiUuMjAwc1wiKSB0byBkZXF1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXItPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5ld19kZXF1ZSA9IGRlcXVlX2NvcHkoKFB5T2JqZWN0ICopZGVxdWUpOworICAgIGlmIChuZXdfZGVxdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gZGVxdWVfZXh0ZW5kKChkZXF1ZW9iamVjdCAqKW5ld19kZXF1ZSwgb3RoZXIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBuZXdfZGVxdWU7Cit9CisKK3N0YXRpYyB2b2lkIGRlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCit7CisgICAgZGVxdWVvYmplY3QgKm5ld19kZXF1ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgLyogWFhYIGFkZCBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiBtYXhsZW4gaXMgZGVmaW5lZCAqLworICAgIGlmIChuIDwgMCkKKyAgICAgICAgbiA9IDA7CisgICAgZWxzZSBpZiAobiA+IDAgJiYgUHlfU0laRShkZXF1ZSkgPiBNQVhfREVRVUVfTEVOIC8gbikKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBuZXdfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZV9uZXcoJmRlcXVlX3R5cGUsIChQeU9iamVjdCAqKU5VTEwsIChQeU9iamVjdCAqKU5VTEwpOworICAgIG5ld19kZXF1ZS0+bWF4bGVuID0gZGVxdWUtPm1heGxlbjsKKworICAgIGZvciAoIDsgbiA7IG4tLSkgeworICAgICAgICByZXN1bHQgPSBkZXF1ZV9leHRlbmQobmV3X2RlcXVlLCAoUHlPYmplY3QgKilkZXF1ZSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld19kZXF1ZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2lucGxhY2VfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQoreworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBQeU9iamVjdCAqc2VxOworICAgIFB5T2JqZWN0ICpydjsKKworICAgIHNpemUgPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBpZiAoc2l6ZSA9PSAwIHx8IG4gPT0gMSkgeworICAgICAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CisgICAgfQorCisgICAgaWYgKG4gPD0gMCkgeworICAgICAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7CisgICAgICAgIFB5X0lOQ1JFRihkZXF1ZSk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA+IE1BWF9ERVFVRV9MRU4gLyBuKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKworICAgIGlmIChzaXplID09IDEpIHsKKyAgICAgICAgLyogY29tbW9uIGNhc2UsIHJlcGVhdGluZyBhIHNpbmdsZSBlbGVtZW50ICovCisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XTsKKworICAgICAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBuID4gZGVxdWUtPm1heGxlbikKKyAgICAgICAgICAgIG4gPSBkZXF1ZS0+bWF4bGVuOworCisgICAgICAgIGZvciAoaSA9IDAgOyBpIDwgbi0xIDsgaSsrKSB7CisgICAgICAgICAgICBydiA9IGRlcXVlX2FwcGVuZChkZXF1ZSwgaXRlbSk7CisgICAgICAgICAgICBpZiAocnYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKGRlcXVlKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOworICAgIH0KKworICAgIHNlcSA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKHNlcSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gc2VxOworCisgICAgZm9yIChpID0gMCA7IGkgPCBuLTEgOyBpKyspIHsKKyAgICAgICAgcnYgPSBkZXF1ZV9leHRlbmQoZGVxdWUsIHNlcSk7CisgICAgICAgIGlmIChydiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgfQorICAgIFB5X0lOQ1JFRihkZXF1ZSk7CisgICAgUHlfREVDUkVGKHNlcSk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOworfQorCisvKiBUaGUgcm90YXRlKCkgbWV0aG9kIGlzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgYW5kIGlzIHVzZWQgaW50ZXJuYWxseQorYXMgYSBwcmltaXRpdmUgZm9yIG90aGVyIG1ldGhvZHMuCisKK1JvdGF0aW9uIGJ5IDEgb3IgLTEgaXMgYSBjb21tb24gY2FzZSwgc28gYW55IG9wdGltaXphdGlvbnMgZm9yIGhpZ2gKK3ZvbHVtZSByb3RhdGlvbnMgc2hvdWxkIHRha2UgY2FyZSBub3QgdG8gcGVuYWxpemUgdGhlIGNvbW1vbiBjYXNlLgorCitDb25jZXB0dWFsbHksIGEgcm90YXRlIGJ5IG9uZSBpcyBlcXVpdmFsZW50IHRvIGEgcG9wIG9uIG9uZSBzaWRlIGFuZCBhbgorYXBwZW5kIG9uIHRoZSBvdGhlci4gIEhvd2V2ZXIsIGEgcG9wL2FwcGVuZCBwYWlyIGlzIHVubmVjZXNzYXJpbHkgc2xvdworYmVjYXVzZSBpdCByZXF1aXJlcyBhIGluY3JlZi9kZWNyZWYgcGFpciBmb3IgYW4gb2JqZWN0IGxvY2F0ZWQgcmFuZG9tbHkKK2luIG1lbW9yeS4gIEl0IGlzIGJldHRlciB0byBqdXN0IG1vdmUgdGhlIG9iamVjdCBwb2ludGVyIGZyb20gb25lIGJsb2NrCit0byB0aGUgbmV4dCB3aXRob3V0IGNoYW5naW5nIHRoZSByZWZlcmVuY2UgY291bnQuCisKK1doZW4gbW92aW5nIGJhdGNoZXMgb2YgcG9pbnRlcnMsIGl0IGlzIHRlbXB0aW5nIHRvIHVzZSBtZW1jcHkoKSBidXQgdGhhdAorcHJvdmVkIHRvIGJlIHNsb3dlciB0aGFuIGEgc2ltcGxlIGxvb3AgZm9yIGEgdmFyaWV0eSBvZiByZWFzb25zLgorTWVtY3B5KCkgY2Fubm90IGtub3cgaW4gYWR2YW5jZSB0aGF0IHdlJ3JlIGNvcHlpbmcgcG9pbnRlcnMgaW5zdGVhZCBvZgorYnl0ZXMsIHRoYXQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIHBvaW50ZXIgYWxpZ25lZCBhbmQKK25vbi1vdmVybGFwcGluZywgdGhhdCBtb3ZpbmcganVzdCBvbmUgcG9pbnRlciBpcyBhIGNvbW1vbiBjYXNlLCB0aGF0IHdlCituZXZlciBuZWVkIHRvIG1vdmUgbW9yZSB0aGFuIEJMT0NLTEVOIHBvaW50ZXJzLCBhbmQgdGhhdCBhdCBsZWFzdCBvbmUKK3BvaW50ZXIgaXMgYWx3YXlzIG1vdmVkLgorCitGb3IgaGlnaCB2b2x1bWUgcm90YXRpb25zLCBuZXdibG9jaygpIGFuZCBmcmVlYmxvY2soKSBhcmUgbmV2ZXIgY2FsbGVkCittb3JlIHRoYW4gb25jZS4gIFByZXZpb3VzbHkgZW1wdGllZCBibG9ja3MgYXJlIGltbWVkaWF0ZWx5IHJldXNlZCBhcyBhCitkZXN0aW5hdGlvbiBibG9jay4gIElmIGEgYmxvY2sgaXMgbGVmdC1vdmVyIGF0IHRoZSBlbmQsIGl0IGlzIGZyZWVkLgorKi8KKwogc3RhdGljIGludAogX2RlcXVlX3JvdGF0ZShkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKIHsKQEAgLTUwMywxMyArNjk1LDEzIEBACiAgICAgICAgICAgICBpZiAobSA+IGxlZnRpbmRleCkKICAgICAgICAgICAgICAgICBtID0gbGVmdGluZGV4OwogICAgICAgICAgICAgYXNzZXJ0IChtID4gMCAmJiBtIDw9IGxlbik7Ci0gICAgICAgICAgICBzcmMgPSAmcmlnaHRibG9jay0+ZGF0YVtyaWdodGluZGV4XTsKLSAgICAgICAgICAgIGRlc3QgPSAmbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleCAtIDFdOwogICAgICAgICAgICAgcmlnaHRpbmRleCAtPSBtOwogICAgICAgICAgICAgbGVmdGluZGV4IC09IG07CisgICAgICAgICAgICBzcmMgPSAmcmlnaHRibG9jay0+ZGF0YVtyaWdodGluZGV4ICsgMV07CisgICAgICAgICAgICBkZXN0ID0gJmxlZnRibG9jay0+ZGF0YVtsZWZ0aW5kZXhdOwogICAgICAgICAgICAgbiAtPSBtOwogICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICooZGVzdC0tKSA9ICooc3JjLS0pOworICAgICAgICAgICAgICAgICooZGVzdCsrKSA9ICooc3JjKyspOwogICAgICAgICAgICAgfSB3aGlsZSAoLS1tKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmlnaHRpbmRleCA9PSAtMSkgewpAQCAtNTg1LDcgKzc3Nyw3IEBACiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJvdGF0ZSIsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKF9kZXF1ZV9yb3RhdGUoZGVxdWUsIG4pID09IDApCisgICAgaWYgKCFfZGVxdWVfcm90YXRlKGRlcXVlLCBuKSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02MDAsNyArNzkyLDcgQEAKICAgICBibG9jayAqcmlnaHRibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgIFB5X3NzaXplX3QgbGVmdGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXggPSBkZXF1ZS0+cmlnaHRpbmRleDsKLSAgICBQeV9zc2l6ZV90IG4gPSAoUHlfU0laRShkZXF1ZSkpLzI7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSkgLyAyOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqdG1wOwogCkBAIC02NDMsOCArODM1LDggQEAKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOwogICAgIFB5T2JqZWN0ICppdGVtOwotICAgIGxvbmcgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgaW50IGNtcDsKIAogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CkBAIC02NzUsNiArODY3LDM4IEBACiBQeURvY19TVFJWQVIoY291bnRfZG9jLAogIkQuY291bnQodmFsdWUpIC0+IGludGVnZXIgLS0gcmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB2YWx1ZSIpOwogCitzdGF0aWMgaW50CitkZXF1ZV9jb250YWlucyhkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICp2KQoreworICAgIGJsb2NrICpiID0gZGVxdWUtPmxlZnRibG9jazsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOworICAgIFB5T2JqZWN0ICppdGVtOworICAgIGludCBjbXA7CisKKyAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgeworICAgICAgICBDSEVDS19OT1RfRU5EKGIpOworICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CisgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CisgICAgICAgIGlmIChjbXApIHsKKyAgICAgICAgICAgIHJldHVybiBjbXA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXJ0X3N0YXRlICE9IGRlcXVlLT5zdGF0ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlfc3NpemVfdAogZGVxdWVfbGVuKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKQEAgLTY4Miw2ICs5MDYsMTAxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9pbmRleChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKGRlcXVlKTsKKyAgICBQeU9iamVjdCAqdiwgKml0ZW07CisgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPJk8mOmluZGV4IiwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXgsICZzdG9wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN0YXJ0IDwgMCkgeworICAgICAgICBzdGFydCArPSBQeV9TSVpFKGRlcXVlKTsKKyAgICAgICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgICAgIHN0YXJ0ID0gMDsKKyAgICB9CisgICAgaWYgKHN0b3AgPCAwKSB7CisgICAgICAgIHN0b3AgKz0gUHlfU0laRShkZXF1ZSk7CisgICAgICAgIGlmIChzdG9wIDwgMCkKKyAgICAgICAgICAgIHN0b3AgPSAwOworICAgIH0KKyAgICBpZiAoc3RvcCA+IFB5X1NJWkUoZGVxdWUpKQorICAgICAgICBzdG9wID0gUHlfU0laRShkZXF1ZSk7CisKKyAgICBmb3IgKGk9MCA7IGk8c3RvcCA7IGkrKykgeworICAgICAgICBpZiAoaSA+PSBzdGFydCkgeworICAgICAgICAgICAgaW50IGNtcDsKKyAgICAgICAgICAgIENIRUNLX05PVF9FTkQoYik7CisgICAgICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CisgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOworICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIG11dGF0ZWQgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGluZGV4Kys7CisgICAgICAgIGlmIChpbmRleCA9PSBCTE9DS0xFTikgeworICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIiVSIGlzIG5vdCBpbiBkZXF1ZSIsIHYpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoaW5kZXhfZG9jLAorIkQuaW5kZXgodmFsdWUsIFtzdGFydCwgW3N0b3BdXSkgLT4gaW50ZWdlciAtLSByZXR1cm4gZmlyc3QgaW5kZXggb2YgdmFsdWUuXG4iCisiUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LiIpOworCisvKiBpbnNlcnQoKSwgcmVtb3ZlKCksIGFuZCBkZWxpdGVtKCkgYXJlIGltcGxlbWVudGVkIGluIHRlcm1zIG9mCisgICByb3RhdGUoKSBmb3Igc2ltcGxpY2l0eSBhbmQgcmVhc29uYWJsZSBwZXJmb3JtYW5jZSBuZWFyIHRoZSBlbmQKKyAgIHBvaW50cy4gIElmIGZvciBzb21lIHJlYXNvbiB0aGVzZSBtZXRob2RzIGJlY29tZSBwb3B1bGFyLCBpdCBpcyBub3QKKyAgIGhhcmQgdG8gcmUtaW1wbGVtZW50IHRoaXMgdXNpbmcgZGlyZWN0IGRhdGEgbW92ZW1lbnQgKHNpbWlsYXIgdG8KKyAgIHRoZSBjb2RlIHVzZWQgaW4gbGlzdCBzbGljZSBhc3NpZ25tZW50cykgYW5kIGFjaGlldmUgYSBwZXJmb3JtYW5jZQorICAgYm9vc3QgKGJ5IG1vdmluZyBlYWNoIHBvaW50ZXIgb25seSBvbmNlIGluc3RlYWQgb2YgdHdpY2UpLgorKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2luc2VydChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7CisgICAgUHlPYmplY3QgKnZhbHVlOworICAgIFB5T2JqZWN0ICpydjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwgJmluZGV4LCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPj0gbikKKyAgICAgICAgcmV0dXJuIGRlcXVlX2FwcGVuZChkZXF1ZSwgdmFsdWUpOworICAgIGlmIChpbmRleCA8PSAtbiB8fCBpbmRleCA9PSAwKQorICAgICAgICByZXR1cm4gZGVxdWVfYXBwZW5kbGVmdChkZXF1ZSwgdmFsdWUpOworICAgIGlmIChfZGVxdWVfcm90YXRlKGRlcXVlLCAtaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBydiA9IGRlcXVlX2FwcGVuZChkZXF1ZSwgdmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKHJ2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0RFQ1JFRihydik7CisgICAgaWYgKF9kZXF1ZV9yb3RhdGUoZGVxdWUsIGluZGV4KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAorIkQuaW5zZXJ0KGluZGV4LCBvYmplY3QpIC0tIGluc2VydCBvYmplY3QgYmVmb3JlIGluZGV4Iik7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9yZW1vdmUoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBuPVB5X1NJWkUoZGVxdWUpOwpAQCAtNzE5LDE2ICsxMDM4LDgwIEBACiBzdGF0aWMgdm9pZAogZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKQogeworICAgIGJsb2NrICpiOworICAgIGJsb2NrICpwcmV2YmxvY2s7CisgICAgYmxvY2sgKmxlZnRibG9jazsKKyAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsKKyAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlPYmplY3QgKml0ZW07CiAKKyAgICAvKiBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgYSBkZXF1ZSwgZGVjcmVmcyBjYW4gY2F1c2UgdGhlCisgICAgICAgZGVxdWUgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uLCB3ZSBoYXZlIHRvIG1ha2UgdGhlCisgICAgICAgZGVxdWUgZW1wdHkgYmVmb3JlIGNsZWFyaW5nIHRoZSBibG9ja3MgYW5kIG5ldmVyIHJlZmVyIHRvCisgICAgICAgYW55dGhpbmcgdmlhIGRlcXVlLT5yZWYgd2hpbGUgY2xlYXJpbmcuICAoVGhpcyBpcyB0aGUgc2FtZQorICAgICAgIHRlY2huaXF1ZSB1c2VkIGZvciBjbGVhcmluZyBsaXN0cywgc2V0cywgYW5kIGRpY3RzLikKKworICAgICAgIE1ha2luZyB0aGUgZGVxdWUgZW1wdHkgcmVxdWlyZXMgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBibG9jay4gIEluCisgICAgICAgdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgbWVtb3J5IGlzIGZ1bGwsIHdlIGZhbGwgYmFjayB0byBhbgorICAgICAgIGFsdGVybmF0ZSBtZXRob2QgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgYmxvY2suICBSZXBlYXRpbmcKKyAgICAgICBwb3BzIGluIGEgd2hpbGUtbG9vcCBpcyBzbG93ZXIsIHBvc3NpYmx5IHJlLWVudHJhbnQgKGFuZCBhIGNsZXZlcgorICAgICAgIGFkdmVyc2FyeSBjb3VsZCBjYXVzZSBpdCB0byBuZXZlciB0ZXJtaW5hdGUpLgorICAgICovCisKKyAgICBiID0gbmV3YmxvY2soMCk7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBnb3RvIGFsdGVybmF0ZV9tZXRob2Q7CisgICAgfQorCisgICAgLyogUmVtZW1iZXIgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggKi8KKyAgICBsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisgICAgbiA9IFB5X1NJWkUoZGVxdWUpOworCisgICAgLyogU2V0IHRoZSBkZXF1ZSB0byBiZSBlbXB0eSB1c2luZyB0aGUgbmV3bHkgYWxsb2NhdGVkIGJsb2NrICovCisgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOworICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgUHlfU0laRShkZXF1ZSkgPSAwOworICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOworICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKKyAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKKyAgICBkZXF1ZS0+c3RhdGUrKzsKKworICAgIC8qIE5vdyB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCBhcmUgZGlzY29ubmVjdGVkIGZyb20KKyAgICAgICB0aGUgZW1wdHkgZGVxdWUgYW5kIHdlIGNhbiB1c2UgdGhlbSB0byBkZWNyZWYgdGhlIHBvaW50ZXJzLgorICAgICovCisgICAgd2hpbGUgKG4tLSkgeworICAgICAgICBpdGVtID0gbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgbGVmdGluZGV4Kys7CisgICAgICAgIGlmIChsZWZ0aW5kZXggPT0gQkxPQ0tMRU4gJiYgbikgeworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7CisgICAgICAgICAgICBwcmV2YmxvY2sgPSBsZWZ0YmxvY2s7CisgICAgICAgICAgICBsZWZ0YmxvY2sgPSBsZWZ0YmxvY2stPnJpZ2h0bGluazsKKyAgICAgICAgICAgIGxlZnRpbmRleCA9IDA7CisgICAgICAgICAgICBmcmVlYmxvY2socHJldmJsb2NrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDSEVDS19FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOworICAgIGZyZWVibG9jayhsZWZ0YmxvY2spOworICAgIHJldHVybjsKKworICBhbHRlcm5hdGVfbWV0aG9kOgogICAgIHdoaWxlIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICBpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKICAgICAgICAgYXNzZXJ0IChpdGVtICE9IE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgfQotICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrICYmCi0gICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggLSAxID09IGRlcXVlLT5yaWdodGluZGV4ICYmCi0gICAgICAgICAgIFB5X1NJWkUoZGVxdWUpID09IDApOworfQorCitzdGF0aWMgaW50Cit2YWxpZF9pbmRleChQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbGltaXQpCit7CisgICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldCB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCisgICAgICAgdG8gY2hlY2sgd2hldGhlciBpIGlzIGluIHRoZSByYW5nZTogMCA8PSBpIDwgbGltaXQgKi8KKyAgICByZXR1cm4gKHNpemVfdCkgaSA8IChzaXplX3QpIGxpbWl0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzM4LDkgKzExMjEsOCBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIFB5X3NzaXplX3QgbiwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoZGVxdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgIGlmICghdmFsaWRfaW5kZXgoaSwgUHlfU0laRShkZXF1ZSkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiZGVxdWUgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzUyLDE0ICsxMTM0LDE2IEBACiAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICB9IGVsc2UgewogICAgICAgICBpICs9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgICAgIGkgJT0gQkxPQ0tMRU47CisgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAvIEJMT0NLTEVOKTsKKyAgICAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgICAgICBpZiAoaW5kZXggPCAoUHlfU0laRShkZXF1ZSkgPj4gMSkpIHsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbiA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCisgICAgICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKKyAgICAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC03NzAsMTMgKzExNTQsNiBAQAogICAgIHJldHVybiBpdGVtOwogfQogCi0vKiBkZWxpdGVtKCkgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Ygcm90YXRlIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlCi0gICBwZXJmb3JtYW5jZSBuZWFyIHRoZSBlbmQgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoaXMgbWV0aG9kIGJlY29tZXMKLSAgIHBvcHVsYXIsIGl0IGlzIG5vdCBoYXJkIHRvIHJlLWltcGxlbWVudCB0aGlzIHVzaW5nIGRpcmVjdCBkYXRhIG1vdmVtZW50Ci0gICAoc2ltaWxhciB0byBjb2RlIGluIGxpc3Qgc2xpY2UgYXNzaWdubWVudCkgYW5kIGFjaGlldmUgYSB0d28gb3IgdGhyZWVmb2xkCi0gICBwZXJmb3JtYW5jZSBib29zdC4KLSovCi0KIHN0YXRpYyBpbnQKIGRlcXVlX2RlbF9pdGVtKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBpKQogewpAQCAtODAwLDIzICsxMTc3LDI0IEBACiAgICAgYmxvY2sgKmI7CiAgICAgUHlfc3NpemVfdCBuLCBsZW49UHlfU0laRShkZXF1ZSksIGhhbGZsZW49KGxlbisxKT4+MSwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IGxlbikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICBpZiAoIXZhbGlkX2luZGV4KGksIGxlbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZGVxdWVfZGVsX2l0ZW0oZGVxdWUsIGkpOwogCiAgICAgaSArPSBkZXF1ZS0+bGVmdGluZGV4OwotICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgaSAlPSBCTE9DS0xFTjsKKyAgICBuID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgLyBCTE9DS0xFTik7CisgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgIGlmIChpbmRleCA8PSBoYWxmbGVuKSB7CiAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICB3aGlsZSAobi0tKQogICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICB9IGVsc2UgewotICAgICAgICBuID0gKGRlcXVlLT5sZWZ0aW5kZXggKyBsZW4gLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKKyAgICAgICAgICAgICAgICAoKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkpCisgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgIHdoaWxlIChuLS0pCiAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC05MzgsMTMgKzEzMTYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gIT0gLTEpCi0KICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImRlcXVlKCVSLCBtYXhsZW49JXpkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbGlzdCwgKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkZXF1ZSglUikiLCBhc2xpc3QpOwotICAgIFB5X0RFQ1JFRihhc2xpc3QpOwogICAgIFB5X1JlcHJMZWF2ZShkZXF1ZSk7CisgICAgUHlfREVDUkVGKGFzbGlzdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA3Myw2ICsxNDUwLDEyIEBACiBQeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKICJELl9fc2l6ZW9mX18oKSAtLSBzaXplIG9mIEQgaW4gbWVtb3J5LCBpbiBieXRlcyIpOwogCitzdGF0aWMgaW50CitkZXF1ZV9ib29sKGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICByZXR1cm4gUHlfU0laRShkZXF1ZSkgIT0gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2dldF9tYXhsZW4oZGVxdWVvYmplY3QgKmRlcXVlKQogewpAQCAtMTA4MSw2ICsxNDY0LDkgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGRlcXVlLT5tYXhsZW4pOwogfQogCisKKy8qIGRlcXVlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogc3RhdGljIFB5R2V0U2V0RGVmIGRlcXVlX2dldHNldFtdID0gewogICAgIHsibWF4bGVuIiwgKGdldHRlcilkZXF1ZV9nZXRfbWF4bGVuLCAoc2V0dGVyKU5VTEwsCiAgICAgICJtYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciBOb25lIGlmIHVuYm91bmRlZCJ9LApAQCAtMTA4OSwxOSArMTQ3NSwzMCBAQAogCiBzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgZGVxdWVfYXNfc2VxdWVuY2UgPSB7CiAgICAgKGxlbmZ1bmMpZGVxdWVfbGVuLCAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCisgICAgKGJpbmFyeWZ1bmMpZGVxdWVfY29uY2F0LCAgICAgICAgICAgLyogc3FfY29uY2F0ICovCisgICAgKHNzaXplYXJnZnVuYylkZXF1ZV9yZXBlYXQsICAgICAgICAgLyogc3FfcmVwZWF0ICovCiAgICAgKHNzaXplYXJnZnVuYylkZXF1ZV9pdGVtLCAgICAgICAgICAgLyogc3FfaXRlbSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3NsaWNlICovCi0gICAgKHNzaXplb2JqYXJncHJvYylkZXF1ZV9hc3NfaXRlbSwgICAgICAgICAgICAvKiBzcV9hc3NfaXRlbSAqLworICAgIChzc2l6ZW9iamFyZ3Byb2MpZGVxdWVfYXNzX2l0ZW0sICAgIC8qIHNxX2Fzc19pdGVtICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfYXNzX3NsaWNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KLSAgICAoYmluYXJ5ZnVuYylkZXF1ZV9pbnBsYWNlX2NvbmNhdCwgICAgICAgICAgIC8qIHNxX2lucGxhY2VfY29uY2F0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfaW5wbGFjZV9yZXBlYXQgKi8KLQorICAgIChvYmpvYmpwcm9jKWRlcXVlX2NvbnRhaW5zLCAgICAgICAgIC8qIHNxX2NvbnRhaW5zICovCisgICAgKGJpbmFyeWZ1bmMpZGVxdWVfaW5wbGFjZV9jb25jYXQsICAgLyogc3FfaW5wbGFjZV9jb25jYXQgKi8KKyAgICAoc3NpemVhcmdmdW5jKWRlcXVlX2lucGxhY2VfcmVwZWF0LCAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAotLyogZGVxdWUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkZXF1ZV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCisgICAgKGlucXVpcnkpZGVxdWVfYm9vbCwgICAgICAgICAgICAgICAgLyogbmJfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludmVydCAqLworIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZGVxdWVfaXRlcihkZXF1ZW9iamVjdCAqZGVxdWUpOwogc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9yZXZpdGVyKGRlcXVlb2JqZWN0ICpkZXF1ZSk7CkBAIC0xMTE3LDE3ICsxNTE0LDIzIEBACiAgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBjbGVhcl9kb2N9LAogICAgIHsiX19jb3B5X18iLCAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfY29weSwKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIGNvcHlfZG9jfSwKKyAgICB7ImNvcHkiLCAgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2NvcHksCisgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBjb3B5X2RvY30sCiAgICAgeyJjb3VudCIsICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9jb3VudCwKLSAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudF9kb2N9LAorICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgY291bnRfZG9jfSwKICAgICB7ImV4dGVuZCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2V4dGVuZCwKICAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgIGV4dGVuZF9kb2N9LAogICAgIHsiZXh0ZW5kbGVmdCIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfZXh0ZW5kbGVmdCwKICAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgIGV4dGVuZGxlZnRfZG9jfSwKKyAgICB7ImluZGV4IiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2luZGV4LAorICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICAgaW5kZXhfZG9jfSwKKyAgICB7Imluc2VydCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2luc2VydCwKKyAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgIGluc2VydF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcG9wLAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcG9wX2RvY30sCiAgICAgeyJwb3BsZWZ0IiwgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9wb3BsZWZ0LAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcG9wbGVmdF9kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3JlZHVjZSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3JlZHVjZSwKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcmVtb3ZlLAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgcmVtb3ZlX2RvY30sCkBAIC0xMTQ1LDcgKzE1NDgsNyBAQAogUHlEb2NfU1RSVkFSKGRlcXVlX2RvYywKICJkZXF1ZShbaXRlcmFibGVbLCBtYXhsZW5dXSkgLS0+IGRlcXVlIG9iamVjdFxuXAogXG5cCi1CdWlsZCBhbiBvcmRlcmVkIGNvbGxlY3Rpb24gd2l0aCBvcHRpbWl6ZWQgYWNjZXNzIGZyb20gaXRzIGVuZHBvaW50cy4iKTsKK0EgbGlzdC1saWtlIHNlcXVlbmNlIG9wdGltaXplZCBmb3IgZGF0YSBhY2Nlc3NlcyBuZWFyIGl0cyBlbmRwb2ludHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKQEAgLTExNTksNyArMTU2Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCiAgICAgZGVxdWVfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZkZXF1ZV9hc19udW1iZXIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICZkZXF1ZV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCwgICAgICAgIC8qIHRwX2hhc2ggKi8KQEAgLTExOTUsMTAgKzE1OTgsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIGJsb2NrICpiOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgZGVxdWVvYmplY3QgKmRlcXVlOwotICAgIGxvbmcgc3RhdGU7ICAgICAgICAgLyogc3RhdGUgd2hlbiB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCAqLworICAgIHNpemVfdCBzdGF0ZTsgICAgICAgICAgLyogc3RhdGUgd2hlbiB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCAqLwogICAgIFB5X3NzaXplX3QgY291bnRlcjsgICAgLyogbnVtYmVyIG9mIGl0ZW1zIHJlbWFpbmluZyBmb3IgaXRlcmF0aW9uICovCiB9IGRlcXVlaXRlcm9iamVjdDsKIApAQCAtMTMxNSw3ICsxNzE4LDcgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZWl0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTMzNCw3ICsxNzM3LDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkZXF1ZWl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTE0MzcsNyArMTg0MCw3IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVyZXZpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTE0NTYsNyArMTg1OSw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZGVxdWVpdGVyX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xODAwLDE5ICsyMjAzLDQwIEBACiAgICAgaWYgKG1hcHBpbmdfZ2V0ICE9IE5VTEwgJiYgbWFwcGluZ19nZXQgPT0gZGljdF9nZXQgJiYKICAgICAgICAgbWFwcGluZ19zZXRpdGVtICE9IE5VTEwgJiYgbWFwcGluZ19zZXRpdGVtID09IGRpY3Rfc2V0aXRlbSkgewogICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoIGFkdmFudGFnZXM6CisgICAgICAgICAgICAgICAgICAgMS4gRWxpbWluYXRlIGRvdWJsZSBoYXNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgKGJ5IHJlLXVzaW5nIHRoZSBzYW1lIGhhc2ggZm9yIGJvdGggdGhlIGdldCBhbmQgc2V0KQorICAgICAgICAgICAgICAgICAgIDIuIEF2b2lkIGFyZ3VtZW50IG92ZXJoZWFkIG9mIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgICAgICAgICAgICAgICAgICAgICAoYXJndW1lbnQgdHVwbGUgY3JlYXRpb24gYW5kIHBhcnNpbmcpCisgICAgICAgICAgICAgICAgICAgMy4gQXZvaWQgaW5kaXJlY3Rpb24gdGhyb3VnaCBhIGJvdW5kIG1ldGhvZCBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAoY3JlYXRlcyBhbm90aGVyIGFyZ3VtZW50IHR1cGxlKQorICAgICAgICAgICAgICAgICAgIDQuIEF2b2lkIGluaXRpYWwgaW5jcmVtZW50IGZyb20gemVybworICAgICAgICAgICAgICAgICAgICAgIChyZXVzZSBhbiBleGlzdGluZyBvbmUtb2JqZWN0IGluc3RlYWQpCisgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CisKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG9sZHZhbCA9IFB5RGljdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CisKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2xkdmFsID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgb25lKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IFB5TnVtYmVyX0FkZChvbGR2YWwsIG9uZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpID09IC0xKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKQEAgLTE5MDEsNiArMjMyNSw5IEBACiAgICAgUHlfSU5DUkVGKCZkZWZkaWN0X3R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZGVmYXVsdGRpY3QiLCAoUHlPYmplY3QgKikmZGVmZGljdF90eXBlKTsKIAorICAgIFB5X0lOQ1JFRigmUHlPRGljdF9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk9yZGVyZWREaWN0IiwgKFB5T2JqZWN0ICopJlB5T0RpY3RfVHlwZSk7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZWl0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoJmRlcXVlaXRlcl90eXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCmluZGV4IGRhNDRlZjMuLmQ0MjJjZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpAQCAtMTIsMTIgKzEyLDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jNjI1MmNmNGYyZjJhZTgxXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2NyeXB0bW9kdWxlLmMuaCIKIAogLypbY2xpbmljIGlucHV0XQogY3J5cHQuY3J5cHQKIAotICAgIHdvcmQ6ICdzJwotICAgIHNhbHQ6ICdzJworICAgIHdvcmQ6IHN0cgorICAgIHNhbHQ6IHN0cgogICAgIC8KIAogSGFzaCBhICp3b3JkKiB3aXRoIHRoZSBnaXZlbiAqc2FsdCogYW5kIHJldHVybiB0aGUgaGFzaGVkIHBhc3N3b3JkLgpAQCAtMjksNDMgKzMwLDkgQEAKIAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoY3J5cHRfY3J5cHRfX2RvY19fLAotImNyeXB0KCRtb2R1bGUsIHdvcmQsIHNhbHQsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJIYXNoIGEgKndvcmQqIHdpdGggdGhlIGdpdmVuICpzYWx0KiBhbmQgcmV0dXJuIHRoZSBoYXNoZWQgcGFzc3dvcmQuXG4iCi0iXG4iCi0iKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXJcJ3MgcGFzc3dvcmQuICAqc2FsdCogKGVpdGhlciBhIHJhbmRvbSAyIG9yIDE2XG4iCi0iY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aCAkZGlnaXQkIHRvIGluZGljYXRlIHRoZSBtZXRob2QpXG4iCi0id2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIGFuZCBwcm9kdWNlIGRpc3RpbmN0XG4iCi0icmVzdWx0cyBmb3IgYSBnaXZlbiAqd29yZCouIik7Ci0KLSNkZWZpbmUgQ1JZUFRfQ1JZUFRfTUVUSE9EREVGICAgIFwKLSAgICB7ImNyeXB0IiwgKFB5Q0Z1bmN0aW9uKWNyeXB0X2NyeXB0LCBNRVRIX1ZBUkFSR1MsIGNyeXB0X2NyeXB0X19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jcnlwdF9jcnlwdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKndvcmQsIGNvbnN0IGNoYXIgKnNhbHQpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotY3J5cHRfY3J5cHQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqd29yZDsKLSAgICBjb25zdCBjaGFyICpzYWx0OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzczpjcnlwdCIsCi0gICAgICAgICZ3b3JkLCAmc2FsdCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBjcnlwdF9jcnlwdF9pbXBsKG1vZHVsZSwgd29yZCwgc2FsdCk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGNyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZWFhY2RmOTk0YTZmZjIzIGlucHV0PTRkOTNiNmQwZjQxZmJmNThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTVhZDFlODU0ZDgzMDY5IGlucHV0PTBlOGVkZWM5YzM2NDM1MmJdKi8KIHsKICAgICAvKiBPbiBzb21lIHBsYXRmb3JtcyAoQXRoZU9TKSBjcnlwdCByZXR1cm5zIE5VTEwgZm9yIGFuIGludmFsaWQKICAgICAgICBzYWx0LiBSZXR1cm4gTm9uZSBpbiB0aGF0IGNhc2UuIFhYWCBNYXliZSByYWlzZSBhbiBleGNlcHRpb24/ICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA3YTcxNTY0Li5hNjE0MTkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNyYyk7CiAgICAgICAgICAgICBpZiAobGVuID4gMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiXCIlc1wiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICBTdHlsZURlc2MgKnFzOwogCiAgICAgZm9yIChxcyA9IHF1b3RlX3N0eWxlczsgcXMtPm5hbWU7IHFzKyspIHsKLSAgICAgICAgaWYgKHFzLT5zdHlsZSA9PSBxdW90aW5nKQorICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYmFkIFwicXVvdGluZ1wiIHZhbHVlIik7CkBAIC00MzIsNyArNDMyLDcgQEAKICAgICAgICAgZ290byBlcnI7CiAgICAgaWYgKHNlbGYtPmRlbGltaXRlciA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiXCJkZWxpbWl0ZXJcIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgIlwiZGVsaW1pdGVyXCIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZyIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKHF1b3RlY2hhciA9PSBQeV9Ob25lICYmIHF1b3RpbmcgPT0gTlVMTCkKQEAgLTEwMDksNyArMTAwOSw3IEBACiAgKi8KIHN0YXRpYyBQeV9zc2l6ZV90CiBqb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQsIHZvaWQgKmZpZWxkX2RhdGEsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZmllbGRfbGVuLCBpbnQgcXVvdGVfZW1wdHksIGludCAqcXVvdGVkLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiwgaW50ICpxdW90ZWQsCiAgICAgICAgICAgICAgICAgIGludCBjb3B5X3BoYXNlKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwpAQCAtMTA3MSwxOCArMTA3MSw2IEBACiAgICAgICAgIEFERENIKGMpOwogICAgIH0KIAotICAgIC8qIElmIGZpZWxkIGlzIGVtcHR5IGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIHF1b3RlZC4KLSAgICAgKi8KLSAgICBpZiAoaSA9PSAwICYmIHF1b3RlX2VtcHR5KSB7Ci0gICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCi0gICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcXVvdGVkID0gMTsKLSAgICB9Ci0KICAgICBpZiAoKnF1b3RlZCkgewogICAgICAgICBpZiAoY29weV9waGFzZSkKICAgICAgICAgICAgIEFERENIKGRpYWxlY3QtPnF1b3RlY2hhcik7CkBAIC0xMTI2LDcgKzExMTQsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1qb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKK2pvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlPYmplY3QgKmZpZWxkLCBpbnQgcXVvdGVkKQogewogICAgIHVuc2lnbmVkIGludCBmaWVsZF9raW5kID0gLTE7CiAgICAgdm9pZCAqZmllbGRfZGF0YSA9IE5VTEw7CkBAIC0xMTQxLDcgKzExMjksNyBAQAogICAgICAgICBmaWVsZF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmaWVsZCk7CiAgICAgfQogICAgIHJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCAwKTsKICAgICBpZiAocmVjX2xlbiA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTUwLDcgKzExMzgsNyBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCAxKTsKICAgICBzZWxmLT5udW1fZmllbGRzKys7CiAKICAgICByZXR1cm4gMTsKQEAgLTExODEsMzcgKzExNjksMzAgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGNzdl93cml0ZXJvd19kb2MsCi0id3JpdGVyb3coc2VxdWVuY2UpXG4iCisid3JpdGVyb3coaXRlcmFibGUpXG4iCiAiXG4iCi0iQ29uc3RydWN0IGFuZCB3cml0ZSBhIENTViByZWNvcmQgZnJvbSBhIHNlcXVlbmNlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmdcbiIKKyJDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgQ1NWIHJlY29yZCBmcm9tIGFuIGl0ZXJhYmxlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmdcbiIKICJlbGVtZW50cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3Zfd3JpdGVyb3coV3JpdGVyT2JqICpzZWxmLCBQeU9iamVjdCAqc2VxKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwotICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgIFB5T2JqZWN0ICpsaW5lLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICppdGVyLCAqZmllbGQsICpsaW5lLCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAic2VxdWVuY2UgZXhwZWN0ZWQiKTsKLQotICAgIGxlbiA9IFB5U2VxdWVuY2VfTGVuZ3RoKHNlcSk7Ci0gICAgaWYgKGxlbiA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKHNlcSk7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIGV4cGVjdGVkLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXEtPm9iX3R5cGUtPnRwX25hbWUpOwogCiAgICAgLyogSm9pbiBhbGwgZmllbGRzIGluIGludGVybmFsIGJ1ZmZlci4KICAgICAgKi8KICAgICBqb2luX3Jlc2V0KHNlbGYpOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBQeU9iamVjdCAqZmllbGQ7CisgICAgd2hpbGUgKChmaWVsZCA9IFB5SXRlcl9OZXh0KGl0ZXIpKSkgewogICAgICAgICBpbnQgYXBwZW5kX29rOwogICAgICAgICBpbnQgcXVvdGVkOwogCi0gICAgICAgIGZpZWxkID0gUHlTZXF1ZW5jZV9HZXRJdGVtKHNlcSwgaSk7Ci0gICAgICAgIGlmIChmaWVsZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAgICAgc3dpdGNoIChkaWFsZWN0LT5xdW90aW5nKSB7CiAgICAgICAgIGNhc2UgUVVPVEVfTk9OTlVNRVJJQzoKICAgICAgICAgICAgIHF1b3RlZCA9ICFQeU51bWJlcl9DaGVjayhmaWVsZCk7CkBAIC0xMjI1LDExICsxMjA2LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGZpZWxkKSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgZmllbGQsICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIGZpZWxkLCBxdW90ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCBxdW90ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTEyMzcsMTkgKzEyMTgsMzcgQEAKIAogICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKGZpZWxkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7Ci0gICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIHN0ciwgcXVvdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghYXBwZW5kX29rKQorICAgICAgICBpZiAoIWFwcGVuZF9vaykgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKGl0ZXIpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzZWxmLT5udW1fZmllbGRzID4gMCAmJiBzZWxmLT5yZWNfc2l6ZSA9PSAwKSB7CisgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNlbGYtPm51bV9maWVsZHMtLTsKKyAgICAgICAgaWYgKCFqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAxKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIC8qIEFkZCBsaW5lIHRlcm1pbmF0b3IuCiAgICAgICovCiAgICAgaWYgKCFqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihzZWxmKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+cmVjLCBzZWxmLT5yZWNfbGVuKTsKQEAgLTEyNjEsOSArMTI2MCw5IEBACiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dzX2RvYywKLSJ3cml0ZXJvd3Moc2VxdWVuY2Ugb2Ygc2VxdWVuY2VzKVxuIgorIndyaXRlcm93cyhpdGVyYWJsZSBvZiBpdGVyYWJsZXMpXG4iCiAiXG4iCi0iQ29uc3RydWN0IGFuZCB3cml0ZSBhIHNlcmllcyBvZiBzZXF1ZW5jZXMgdG8gYSBjc3YgZmlsZS4gIE5vbi1zdHJpbmdcbiIKKyJDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgc2VyaWVzIG9mIGl0ZXJhYmxlcyB0byBhIGNzdiBmaWxlLiAgTm9uLXN0cmluZ1xuIgogImVsZW1lbnRzIHdpbGwgYmUgY29udmVydGVkIHRvIHN0cmluZy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDJlNTkzOWMuLmI5ZmQ4MmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgY2hhciAqbmV3X3ByZWZpeDsKICAgICBjaGFyICpyZXN1bHQ7CiAgICAgY2hhciBidWZbMzJdOwotICAgIGludCBwcmVmaXhfbGVuOworICAgIFB5X3NzaXplX3QgcHJlZml4X2xlbjsKICAgICBpbnQgazsKIAogICAgIHByZWZpeF9sZW4gPSAzMiAqIG5kaW0gKyAzOwpAQCAtMjgxOSw4ICsyODE5LDkgQEAKICAgICAgICAgICAgICAgIHNyYy0+Yl9wdHIsCiAgICAgICAgICAgICAgICBzaXplKTsKIAotICAgICAgICBpZiAoUHlDUG9pbnRlclR5cGVPYmplY3RfQ2hlY2sodHlwZSkpCi0gICAgICAgICAgICAvKiBYWFggKi87CisgICAgICAgIGlmIChQeUNQb2ludGVyVHlwZU9iamVjdF9DaGVjayh0eXBlKSkgeworICAgICAgICAgICAgLyogWFhYICovCisgICAgICAgIH0KIAogICAgICAgICB2YWx1ZSA9IEdldEtlZXBlZE9iamVjdHMoc3JjKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDhkYWVmZmMuLjAzYTkxMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC0xNjAzLDcgKzE2MDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIk1lbW9yeSBjYW5ub3QgYmUgcmVzaXplZCBiZWNhdXNlIHRoaXMgb2JqZWN0IGRvZXNuJ3Qgb3duIGl0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc2l6ZSA8PSBzaXplb2Yob2JqLT5iX3ZhbHVlKSkgeworICAgIGlmICgoc2l6ZV90KXNpemUgPD0gc2l6ZW9mKG9iai0+Yl92YWx1ZSkpIHsKICAgICAgICAgLyogaW50ZXJuYWwgZGVmYXVsdCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoICovCiAgICAgICAgIG9iai0+Yl9zaXplID0gc2l6ZTsKICAgICAgICAgZ290byBkb25lOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCmluZGV4IGM4OWQ5MTkuLjNjN2E1MmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKQEAgLTEzNTUsMTQgKzEzNTUsNiBAQAogewogICAgIC8qIFhYWCBXaGF0IGFib3V0IGludmFsaWQgcG9pbnRlcnMgPz8/ICovCiAgICAgaWYgKCoodm9pZCAqKilwdHIpIHsKLSNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQotICAgICAgICBpZiAoSXNCYWRTdHJpbmdQdHJBKCooY2hhciAqKilwdHIsIC0xKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3RyaW5nIHBvaW50ZXIgJXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICooY2hhciAqKilwdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgqKGNoYXIgKiopcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oKihjaGFyICoqKXB0cikpOwogICAgIH0gZWxzZSB7CkBAIC0xNDE5LDE0ICsxNDExLDYgQEAKICAgICB3Y2hhcl90ICpwOwogICAgIHAgPSAqKHdjaGFyX3QgKiopcHRyOwogICAgIGlmIChwKSB7Ci0jaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKLSAgICAgICAgaWYgKElzQmFkU3RyaW5nUHRyVygqKHdjaGFyX3QgKiopcHRyLCAtMSkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmluZyBwb2ludGVyICVwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAqKHdjaGFyX3QgKiopcHRyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocCwgd2NzbGVuKHApKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xNDU2LDE1ICsxNDQwLDE1IEBACiAgICAgLyogY3JlYXRlIGEgQlNUUiBmcm9tIHZhbHVlICovCiAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgIHdjaGFyX3QqIHd2YWx1ZTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgICAgICBQeV9zc2l6ZV90IHdzaXplOworICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJndzaXplKTsKICAgICAgICAgaWYgKHd2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICgodW5zaWduZWQpIHNpemUgIT0gc2l6ZSkgeworICAgICAgICBpZiAoKHVuc2lnbmVkKSB3c2l6ZSAhPSB3c2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdHJpbmcgdG9vIGxvbmcgZm9yIEJTVFIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3dmFsdWUsICh1bnNpZ25lZClzaXplKTsKKyAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHd2YWx1ZSwgKHVuc2lnbmVkKXdzaXplKTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgYnN0ciA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMKaW5kZXggNzZjYjAzZS4uYjc1ODZjNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9tc3ZjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYwpAQCAtNjUsMzcgKzY1LDU2IEBACiAJYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIHNpemVvZih2b2lkICopKTsKIAogICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwotICAgICAgaWYgKHogPCBzaXplb2YoaW50KSkKKyAgICAgIGlmICh6IDwgc2l6ZW9mKGludHB0cl90KSkKIAl7Ci0JICB6ID0gc2l6ZW9mKGludCk7CisJICB6ID0gc2l6ZW9mKGludHB0cl90KTsKIAkgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCiAJICAgIHsKIAkgICAgY2FzZSBGRklfVFlQRV9TSU5UODoKLQkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDggKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQ4ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDggKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDggKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgotCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMTYgKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQxNiAqKSgqIHBfYXJndik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDE2ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKLQkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKGludHB0cl90ICopIGFyZ3AgPSAoaW50cHRyX3QpKihTSU5UMzIgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQzMiAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gMDsKKwkgICAgICAqKGZsb2F0ICopIGFyZ3AgPSAqKGZsb2F0ICopKCogcF9hcmd2KTsKKwkgICAgICBicmVhazsKKworCSAgICAvLyA2NC1iaXQgdmFsdWUgY2FzZXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIHg4NiBhbmQgQU1ENjQgYnVpbGRzCisJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgorCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQ2NCAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9ICh1aW50cHRyX3QpKihVSU5UNjQgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQzMiAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9IDA7CisJICAgICAgKihkb3VibGUgKikgYXJncCA9ICooZG91YmxlICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwppbmRleCA1ZmZjZTJmLi5kNjRiZGM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwpAQCAtMTQwLDYgKzE0MCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04OGM4NjBhYmRiYjUwZTBjXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2N1cnNlc21vZHVsZS5jLmgiCisKIC8qIERlZmluaXRpb24gb2YgZXhjZXB0aW9uIGN1cnNlcy5lcnJvciAqLwogCiBzdGF0aWMgUHlPYmplY3QgKlB5Q3Vyc2VzRXJyb3I7CkBAIC01ODMsNzUgKzU4NSwxMCBAQAogY3VycmVudCBzZXR0aW5ncyBmb3IgdGhlIHdpbmRvdyBvYmplY3QuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihjdXJzZXNfd2luZG93X2FkZGNoX19kb2NfXywKLSJhZGRjaChbeSwgeCxdIGNoLCBbYXR0cl0pXG4iCi0iUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0ci5cbiIKLSJcbiIKLSIgIHlcbiIKLSIgICAgWS1jb29yZGluYXRlLlxuIgotIiAgeFxuIgotIiAgICBYLWNvb3JkaW5hdGUuXG4iCi0iICBjaFxuIgotIiAgICBDaGFyYWN0ZXIgdG8gYWRkLlxuIgotIiAgYXR0clxuIgotIiAgICBBdHRyaWJ1dGVzIGZvciB0aGUgY2hhcmFjdGVyLlxuIgotIlxuIgotIlBhaW50IGNoYXJhY3RlciBjaCBhdCAoeSwgeCkgd2l0aCBhdHRyaWJ1dGVzIGF0dHIsXG4iCi0ib3ZlcndyaXRpbmcgYW55IGNoYXJhY3RlciBwcmV2aW91c2x5IHBhaW50ZWQgYXQgdGhhdCBsb2NhdGlvbi5cbiIKLSJCeSBkZWZhdWx0LCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIGFuZCBhdHRyaWJ1dGVzIGFyZSB0aGVcbiIKLSJjdXJyZW50IHNldHRpbmdzIGZvciB0aGUgd2luZG93IG9iamVjdC4iKTsKLQotI2RlZmluZSBDVVJTRVNfV0lORE9XX0FERENIX01FVEhPRERFRiAgICBcCi0gICAgeyJhZGRjaCIsIChQeUNGdW5jdGlvbiljdXJzZXNfd2luZG93X2FkZGNoLCBNRVRIX1ZBUkFSR1MsIGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgaW50IGdyb3VwX2xlZnRfMSwgaW50IHksIGludCB4LCBQeU9iamVjdCAqY2gsIGludCBncm91cF9yaWdodF8xLCBsb25nIGF0dHIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotY3Vyc2VzX3dpbmRvd19hZGRjaChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IGdyb3VwX2xlZnRfMSA9IDA7Ci0gICAgaW50IHkgPSAwOwotICAgIGludCB4ID0gMDsKLSAgICBQeU9iamVjdCAqY2g7Ci0gICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOwotICAgIGxvbmcgYXR0ciA9IDA7Ci0KLSAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDphZGRjaCIsICZjaCwgJmF0dHIpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjdXJzZXMud2luZG93LmFkZGNoIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgcmV0dXJuX3ZhbHVlID0gY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKHNlbGYsIGdyb3VwX2xlZnRfMSwgeSwgeCwgY2gsIGdyb3VwX3JpZ2h0XzEsIGF0dHIpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jdXJzZXNfd2luZG93X2FkZGNoX2ltcGwoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIGludCBncm91cF9sZWZ0XzEsIGludCB5LCBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0Yjk3Y2MyODcwMTBjNTQgaW5wdXQ9NWE0MWVmYjM0YTJkZTMzOF0qLworY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5ZjdmODUwNzhlYzA2YzMgaW5wdXQ9NWE0MWVmYjM0YTJkZTMzOF0qLwogewogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpjd3NlbGYgPSAoUHlDdXJzZXNXaW5kb3dPYmplY3QgKilzZWxmOwogICAgIGludCBjb29yZGluYXRlc19ncm91cCA9IGdyb3VwX2xlZnRfMTsKQEAgLTI2NzUsNyArMjYxMiw3IEBACiAgICAgfQogICAgIGtucCA9IGtleW5hbWUoY2gpOwogCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygoa25wID09IE5VTEwpID8gIiIgOiAoY2hhciAqKWtucCk7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygoa25wID09IE5VTEwpID8gIiIgOiBrbnApOwogfQogI2VuZGlmCiAKQEAgLTI5MjksNiArMjg2NiwxMyBAQAogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gMTsKIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzX3VwZGF0ZV9saW5lc19jb2xzKFB5T2JqZWN0ICpzZWxmKQoreworICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSB1cGRhdGVfbGluZXNfY29scygpKTsKK30KKwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0NVUlNFU19SRVNJWkVURVJNCkBAIC0zMzMxLDYgKzMyNzUsOSBAQAogICAgIHsidHlwZWFoZWFkIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19UeXBlQWhlYWQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmN0cmwiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuQ3RybCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuZ2V0Y2giLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRDaCwgTUVUSF9WQVJBUkdTfSwKKyNpZiBkZWZpbmVkKEhBVkVfQ1VSU0VTX1JFU0laRVRFUk0pIHx8IGRlZmluZWQoSEFWRV9DVVJTRVNfUkVTSVpFX1RFUk0pCisgICAgeyJ1cGRhdGVfbGluZXNfY29scyIsICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX3VwZGF0ZV9saW5lc19jb2xzLCBNRVRIX05PQVJHU30sCisjZW5kaWYKICNpZmRlZiBIQVZFX05DVVJTRVNXCiAgICAgeyJ1bmdldF93Y2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0X1djaCwgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggNjA4NGZmYS4uZTNkZTUzNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC03LDYgKzcsMTAgQEAKIAogI2luY2x1ZGUgPHRpbWUuaD4KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbnNvY2syLmg+ICAgICAgICAgLyogc3RydWN0IHRpbWV2YWwgKi8KKyNlbmRpZgorCiAvKiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gYnVpbGRpbmcgdGhlIGNvcmUgbW9kdWxlIGFuZCBidWlsZGluZyBleHRlbnNpb24KICAqIG1vZHVsZXMuCiAgKi8KQEAgLTIyLDYgKzI2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTc4MTQyY2I2NGI5ZTk4YmNdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oIgorCiAvKiBXZSByZXF1aXJlIHRoYXQgQyBpbnQgYmUgYXQgbGVhc3QgMzIgYml0cywgYW5kIHVzZSBpbnQgdmlydHVhbGx5CiAgKiBldmVyeXdoZXJlLiAgSW4ganVzdCBhIGZldyBjYXNlcyB3ZSB1c2UgYSB0ZW1wIGxvbmcsIHdoZXJlIGEgUHl0aG9uCiAgKiBBUEkgcmV0dXJucyBhIEMgbG9uZy4gIEluIHN1Y2ggY2FzZXMsIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlCkBAIC0yNDU5LDcgKzI0NjUsNyBAQAogICAgIHN0cnVjdCB0bSAqdG07CiAgICAgdGltZV90IHQ7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0LCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnQsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHRtID0gbG9jYWx0aW1lKCZ0KTsKQEAgLTM4MDUsMjkgKzM4MTEsNiBAQAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotc3RhdGljIGludAotdGltZV9ib29sKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpvZmZzZXQsICp0emluZm87Ci0gICAgaW50IG9mZnNlY3MgPSAwOwotCi0gICAgaWYgKFRJTUVfR0VUX1NFQ09ORChzZWxmKSB8fCBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKSkgewotICAgICAgICAvKiBTaW5jZSB1dGNvZmZzZXQgaXMgaW4gd2hvbGUgbWludXRlcywgbm90aGluZyBjYW4KLSAgICAgICAgICogYWx0ZXIgdGhlIGNvbmNsdXNpb24gdGhhdCB0aGlzIGlzIG5vbnplcm8uCi0gICAgICAgICAqLwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgdHppbmZvID0gR0VUX1RJTUVfVFpJTkZPKHNlbGYpOwotICAgIGlmICh0emluZm8gIT0gUHlfTm9uZSkgewotICAgICAgICBvZmZzZXQgPSBjYWxsX3V0Y29mZnNldCh0emluZm8sIFB5X05vbmUpOwotICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG9mZnNlY3MgPSBHRVRfVERfREFZUyhvZmZzZXQpKjg2NDAwICsgR0VUX1REX1NFQ09ORFMob2Zmc2V0KTsKLSAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiAoVElNRV9HRVRfTUlOVVRFKHNlbGYpKjYwIC0gb2Zmc2VjcyArIFRJTUVfR0VUX0hPVVIoc2VsZikqMzYwMCkgIT0gMDsKLX0KLQogLyogUGlja2xlIHN1cHBvcnQsIGEgc2ltcGxlIHVzZSBvZiBfX3JlZHVjZV9fLiAqLwogCiAvKiBMZXQgYmFzZXN0YXRlIGJlIHRoZSBub24tdHppbmZvIGRhdGEgc3RyaW5nLgpAQCAtMzg5NSwxOSArMzg3OCw2IEBACiBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbiBpbnN0YW5jZSBvZlxuXAogYSB0emluZm8gc3ViY2xhc3MuIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRzLlxuIik7CiAKLXN0YXRpYyBQeU51bWJlck1ldGhvZHMgdGltZV9hc19udW1iZXIgPSB7Ci0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG9zaXRpdmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCi0gICAgKGlucXVpcnkpdGltZV9ib29sLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9ib29sICovCi19OwotCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVGltZVR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgImRhdGV0aW1lLnRpbWUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0zOTE5LDcgKzM4ODksNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpdGltZV9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAmdGltZV9hc19udW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIChoYXNoZnVuYyl0aW1lX2hhc2gsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtNDE5NCwxMCArNDE2NCwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBQeU9iamVjdCAqdHppbmZvKQogewotICAgIF9QeVRpbWVfdGltZXZhbCB0OwotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZ0KTsKLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0LnR2X3NlYywgKGludCl0LnR2X3VzZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgX1B5VGltZV90IHRzID0gX1B5VGltZV9HZXRTeXN0ZW1DbG9jaygpOworICAgIHRpbWVfdCBzZWNzOworICAgIGludCB1czsKKworICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbFRpbWVfdCh0cywgJnNlY3MsICZ1cywgX1B5VGltZV9ST1VORF9GTE9PUikgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoMCA8PSB1cyAmJiB1cyA8PSA5OTk5OTkpOworCisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgc2VjcywgdXMsIHR6aW5mbyk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTQyMTMsNDMgKzQxODgsOSBAQAogSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfXywKLSJub3coJHR5cGUsIC8sIHR6PU5vbmUpXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIG5ldyBkYXRldGltZSBvYmplY3QgcmVwcmVzZW50aW5nIGN1cnJlbnQgdGltZSBsb2NhbCB0byB0ei5cbiIKLSJcbiIKLSIgIHR6XG4iCi0iICAgIFRpbWV6b25lIG9iamVjdC5cbiIKLSJcbiIKLSJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7Ci0KLSNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCi0gICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAifE86bm93IiwgX2tleXdvcmRzLAotICAgICAgICAmdHopKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODNjNTYzN2UzYzg0M2ZhIGlucHV0PTgwZDA5ODY5YzUyNjdkMDBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMzM4NmU1MzQ1ZTJiNDdhIGlucHV0PTgwZDA5ODY5YzUyNjdkMDBdKi8KIHsKICAgICBQeU9iamVjdCAqc2VsZjsKIApAQCAtNTExMSw4ICs1MDUyLDcgQEAKIAogICAgIHsidXRjZnJvbXRpbWVzdGFtcCIsIChQeUNGdW5jdGlvbilkYXRldGltZV91dGNmcm9tdGltZXN0YW1wLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0NMQVNTLAotICAgICBQeURvY19TVFIoInRpbWVzdGFtcCAtPiBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAiCi0gICAgICAgICAgICAgICAiKGxpa2UgdGltZS50aW1lKCkpLiIpfSwKKyAgICAgUHlEb2NfU1RSKCJDb25zdHJ1Y3QgYSBuYWl2ZSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcC4iKX0sCiAKICAgICB7InN0cnB0aW1lIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3N0cnB0aW1lLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0NMQVNTLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCA5M2VhNDE2Li4wMjg5OWU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMjksMTAgKzI5LDEwIEBACiAjZW5kaWYKIAogLypbY2xpbmljIGlucHV0XQotbW9kdWxlIGRibQotY2xhc3MgZGJtLmRibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKK21vZHVsZSBfZGJtCitjbGFzcyBfZGJtLmRibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTkyNDUwNTY0Njg0YTY5YTNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTliMWFhODc1NmQxNjE1MGVdKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTQwLDYgKzQwLDggQEAKICAgICBEQk0gKmRpX2RibTsKIH0gZGJtb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL19kYm1tb2R1bGUuYy5oIgorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IERibXR5cGU7CiAKICNkZWZpbmUgaXNfZGJtb2JqZWN0KHYpIChQeV9UWVBFKHYpID09ICZEYm10eXBlKQpAQCAtNDksMTUgKzUxLDYgQEAKIAogc3RhdGljIFB5T2JqZWN0ICpEYm1FcnJvcjsKIAotLypbcHl0aG9uIGlucHV0XQotY2xhc3MgZGJtb2JqZWN0X2NvbnZlcnRlcihzZWxmX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICJkYm1vYmplY3QgKiIKLSAgICBkZWYgcHJlX3JlbmRlcihzZWxmKToKLSAgICAgICAgc3VwZXIoKS5wcmVfcmVuZGVyKCkKLSAgICAgICAgc2VsZi5uYW1lID0gJ2RwJwotW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmFkNTM2MzU3OTEzODc5YV0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgogbmV3ZGJtb2JqZWN0KGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncywgaW50IG1vZGUpCiB7CkBAIC0xODEsMjkgKzE3NCw0MyBAQAogICAgIChvYmpvYmphcmdwcm9jKWRibV9hc3Nfc3ViLCAgICAgICAgIC8qbXBfYXNzX3N1YnNjcmlwdCovCiB9OwogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5jbG9zZQorCitDbG9zZSB0aGUgZGF0YWJhc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fX2Nsb3NlKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZGJtX2RibV9jbG9zZV9pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jOGRjNWI2NzA5NjAwYjg2IGlucHV0PTA0NmRiNzIzNzdkNTFiZThdKi8KIHsKLSAgICBpZiAoZHAtPmRpX2RibSkKLSAgICAgICAgZGJtX2Nsb3NlKGRwLT5kaV9kYm0pOwotICAgIGRwLT5kaV9kYm0gPSBOVUxMOworICAgIGlmIChzZWxmLT5kaV9kYm0pCisgICAgICAgIGRibV9jbG9zZShzZWxmLT5kaV9kYm0pOworICAgIHNlbGYtPmRpX2RibSA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5rZXlzCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2tleXMoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19kYm1fZGJtX2tleXNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM0NTQ5ZjdjMTIxYjMzYyBpbnB1dD1kMjEwYmE3NzhjZDljNjhhXSovCiB7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGRhdHVtIGtleTsKICAgICBpbnQgZXJyOwogCi0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOwogICAgIHYgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoa2V5ID0gZGJtX2ZpcnN0a2V5KGRwLT5kaV9kYm0pOyBrZXkuZHB0cjsKLSAgICAgICAgIGtleSA9IGRibV9uZXh0a2V5KGRwLT5kaV9kYm0pKSB7CisgICAgZm9yIChrZXkgPSBkYm1fZmlyc3RrZXkoc2VsZi0+ZGlfZGJtKTsga2V5LmRwdHI7CisgICAgICAgICBrZXkgPSBkYm1fbmV4dGtleShzZWxmLT5kaV9kYm0pKSB7CiAgICAgICAgIGl0ZW0gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleS5kcHRyLCBrZXkuZHNpemUpOwogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNjUsNTggKzI3MiwyNyBAQAogfTsKIAogLypbY2xpbmljIGlucHV0XQorX2RibS5kYm0uZ2V0CiAKLWRibS5kYm0uZ2V0Ci0KLSAgICBzZWxmOiBkYm1vYmplY3QKLQotICAgIGtleTogc3RyKGxlbmd0aD1UcnVlKQotICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICBrZXk6IHN0cihhY2NlcHQ9e3N0ciwgcm9idWZmZXJ9LCB6ZXJvZXM9VHJ1ZSkKKyAgICBkZWZhdWx0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKICAgICAvCiAKIFJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGRibV9kYm1fZ2V0X19kb2NfXywKLSJnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiIpOwotCi0jZGVmaW5lIERCTV9EQk1fR0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pZGJtX2RibV9nZXQsIE1FVEhfVkFSQVJHUywgZGJtX2RibV9nZXRfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmtleTsKLSAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzI3xPOmdldCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYm1fZGJtX2dldF9pbXBsKGRwLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSwgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTJlYTExMzk0ZTdlOTJkIGlucHV0PWFlY2Y1ZWZkMmYyYjFhM2JdKi8KK19kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDRmOTVlYmE4MjAzZDkzIGlucHV0PWEzYTI3OTk1N2Y4NWViNmRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjVjMGU1MjNlYWYxMjUxIGlucHV0PTk0MDJjMGFmODU4MmRjNjldKi8KIHsKICAgICBkYXR1bSBkYm1fa2V5LCB2YWw7CiAKICAgICBkYm1fa2V5LmRwdHIgPSAoY2hhciAqKWtleTsKICAgICBkYm1fa2V5LmRzaXplID0ga2V5X2xlbmd0aDsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGRibV9rZXkpOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOworICAgIHZhbCA9IGRibV9mZXRjaChzZWxmLT5kaV9kYm0sIGRibV9rZXkpOwogICAgIGlmICh2YWwuZHB0ciAhPSBOVUxMKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh2YWwuZHB0ciwgdmFsLmRzaXplKTsKIApAQCAtMzI0LDQ2ICszMDAsNTUgQEAKICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2RibS5kYm0uc2V0ZGVmYXVsdAorICAgIGtleTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIGRlZmF1bHQ6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworICAgIC8KKworUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LgorCitJZiBrZXkgaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW5zZXJ0ZWQgd2l0aCBkZWZhdWx0IGFzIHRoZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2RibV9kYm1fc2V0ZGVmYXVsdF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjU0NTg4NmNmMjcyMTYxIGlucHV0PWJmNDBjNDhlZGFjYTAxZDZdKi8KIHsKLSAgICBkYXR1bSBrZXksIHZhbDsKLSAgICBQeU9iamVjdCAqZGVmdmFsdWUgPSBOVUxMOwotICAgIGNoYXIgKnRtcF9wdHI7CisgICAgZGF0dW0gZGJtX2tleSwgdmFsOwogICAgIFB5X3NzaXplX3QgdG1wX3NpemU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfE86c2V0ZGVmYXVsdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXBfcHRyLCAmdG1wX3NpemUsICZkZWZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtleS5kcHRyID0gdG1wX3B0cjsKLSAgICBrZXkuZHNpemUgPSB0bXBfc2l6ZTsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGtleSk7CisgICAgZGJtX2tleS5kcHRyID0gKGNoYXIgKilrZXk7CisgICAgZGJtX2tleS5kc2l6ZSA9IGtleV9sZW5ndGg7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CisgICAgdmFsID0gZGJtX2ZldGNoKHNlbGYtPmRpX2RibSwgZGJtX2tleSk7CiAgICAgaWYgKHZhbC5kcHRyICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZhbC5kcHRyLCB2YWwuZHNpemUpOwotICAgIGlmIChkZWZ2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIGRlZnZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgaWYgKGRlZnZhbHVlID09IE5VTEwpCisgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBkZWZhdWx0X3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB2YWwuZHB0ciA9IE5VTEw7CiAgICAgICAgIHZhbC5kc2l6ZSA9IDA7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoICFQeUFyZ19QYXJzZShkZWZ2YWx1ZSwgInMjIiwgJnZhbC5kcHRyLCAmdG1wX3NpemUpICkgeworICAgICAgICBpZiAoICFQeUFyZ19QYXJzZShkZWZhdWx0X3ZhbHVlLCAicyMiLCAmdmFsLmRwdHIsICZ0bXBfc2l6ZSkgKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJkYm0gbWFwcGluZ3MgaGF2ZSBieXRlIHN0cmluZyBlbGVtZW50cyBvbmx5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB2YWwuZHNpemUgPSB0bXBfc2l6ZTsKLSAgICAgICAgUHlfSU5DUkVGKGRlZnZhbHVlKTsKKyAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOwogICAgIH0KLSAgICBpZiAoZGJtX3N0b3JlKGRwLT5kaV9kYm0sIGtleSwgdmFsLCBEQk1fSU5TRVJUKSA8IDApIHsKLSAgICAgICAgZGJtX2NsZWFyZXJyKGRwLT5kaV9kYm0pOworICAgIGlmIChkYm1fc3RvcmUoc2VsZi0+ZGlfZGJtLCBkYm1fa2V5LCB2YWwsIERCTV9JTlNFUlQpIDwgMCkgeworICAgICAgICBkYm1fY2xlYXJlcnIoc2VsZi0+ZGlfZGJtKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKERibUVycm9yLCAiY2Fubm90IGFkZCBpdGVtIHRvIGRhdGFiYXNlIik7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWZ2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBkZWZ2YWx1ZTsKKyAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM4MiwxNSArMzY3LDEwIEBACiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIGRibV9tZXRob2RzW10gPSB7Ci0gICAgeyJjbG9zZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGJtX19jbG9zZSwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICAiY2xvc2UoKVxuQ2xvc2UgdGhlIGRhdGFiYXNlLiJ9LAotICAgIHsia2V5cyIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9rZXlzLCAgICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgImtleXMoKSAtPiBsaXN0XG5SZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4ifSwKLSAgICBEQk1fREJNX0dFVF9NRVRIT0RERUYKLSAgICB7InNldGRlZmF1bHQiLCAgICAgIChQeUNGdW5jdGlvbilkYm1fc2V0ZGVmYXVsdCwgICAgTUVUSF9WQVJBUkdTLAotICAgICAic2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSkgLT4gdmFsdWVcbiIKLSAgICAgIlJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdC4gIElmIGtleVxuIgotICAgICAiaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW5zZXJ0ZWQgd2l0aCBkZWZhdWx0IGFzIHRoZSB2YWx1ZS4ifSwKKyAgICBfREJNX0RCTV9DTE9TRV9NRVRIT0RERUYKKyAgICBfREJNX0RCTV9LRVlTX01FVEhPRERFRgorICAgIF9EQk1fREJNX0dFVF9NRVRIT0RERUYKKyAgICBfREJNX0RCTV9TRVRERUZBVUxUX01FVEhPRERFRgogICAgIHsiX19lbnRlcl9fIiwgZGJtX19lbnRlcl9fLCBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJfX2V4aXRfXyIsICBkYm1fX2V4aXRfXywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwpAQCAtNDMxLDcgKzQxMSw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIAotZGJtLm9wZW4gYXMgZGJtb3BlbgorX2RibS5vcGVuIGFzIGRibW9wZW4KIAogICAgIGZpbGVuYW1lOiBzdHIKICAgICAgICAgVGhlIGZpbGVuYW1lIHRvIG9wZW4uCkBAIC00NDksNDcgKzQyOSwxMCBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKLSJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBhIGRhdGFiYXNlIG9iamVjdC5cbiIKLSJcbiIKLSIgIGZpbGVuYW1lXG4iCi0iICAgIFRoZSBmaWxlbmFtZSB0byBvcGVuLlxuIgotIiAgZmxhZ3NcbiIKLSIgICAgSG93IHRvIG9wZW4gdGhlIGZpbGUuICBcInJcIiBmb3IgcmVhZGluZywgXCJ3XCIgZm9yIHdyaXRpbmcsIGV0Yy5cbiIKLSIgIG1vZGVcbiIKLSIgICAgSWYgY3JlYXRpbmcgYSBuZXcgZmlsZSwgdGhlIG1vZGUgYml0cyBmb3IgdGhlIG5ldyBmaWxlXG4iCi0iICAgIChlLmcuIG9zLk9fUkRXUikuIik7Ci0KLSNkZWZpbmUgREJNT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilkYm1vcGVuLCBNRVRIX1ZBUkFSR1MsIGRibW9wZW5fX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsIGludCBtb2RlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZmlsZW5hbWU7Ci0gICAgY29uc3QgY2hhciAqZmxhZ3MgPSAiciI7Ci0gICAgaW50IG1vZGUgPSA0Mzg7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInN8c2k6b3BlbiIsCi0gICAgICAgICZmaWxlbmFtZSwgJmZsYWdzLCAmbW9kZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kYm1vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZsYWdzLCBpbnQgbW9kZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTdiNzI1ZjljNGRjZWMyIGlucHV0PTY0OTlhYjBmYWIxMzMzYWNdKi8KK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZThkNGIzNmYyNWM3MzNmZCBpbnB1dD0yMjYzMzRiYWRlNTc2NGU2XSovCiB7CiAgICAgaW50IGlmbGFnczsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCmluZGV4IGYwMDA4ODcuLjE2OTkxNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTU2NDAsNyArNTY0MCw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIC8qIGFkZCB0byBtb2R1bGUgKi8KQEAgLTU2NzIsNyArNTY3Miw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCBhNjQ5MGI5Li43MTAyOWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtMTksMjYgKzE5LDMwIEBACiBQeURvY19TVFJWQVIoZG9jX19kZWNpbWFsLAogIkMgZGVjaW1hbCBhcml0aG1ldGljIG1vZHVsZSIpOwogCi1QeURvY19TVFJWQVIoZG9jX2dldGNvbnRleHQsIlxuXAotZ2V0Y29udGV4dCgpIC0gR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZ2V0Y29udGV4dCwKKyJnZXRjb250ZXh0KCRtb2R1bGUsIC8pXG4tLVxuXG5cCitHZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LCJcblwKLXNldGNvbnRleHQoYykgLSBTZXQgYSBuZXcgZGVmYXVsdCBjb250ZXh0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LAorInNldGNvbnRleHQoJG1vZHVsZSwgY29udGV4dCwgLylcbi0tXG5cblwKK1NldCBhIG5ldyBkZWZhdWx0IGNvbnRleHQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwiXG5cCi1sb2NhbGNvbnRleHQoY3R4PU5vbmUpIC0gUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGRlZmF1bHRcblwKLWNvbnRleHQgdG8gYSBjb3B5IG9mIGN0eCBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlXG5cCi1wcmV2aW91cyBkZWZhdWx0IGNvbnRleHQgd2hlbiBleGl0aW5nIHRoZSB3aXRoLXN0YXRlbWVudC4gSWYgbm8gY29udGV4dCBpc1xuXAotc3BlY2lmaWVkLCBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwKKyJsb2NhbGNvbnRleHQoJG1vZHVsZSwgLywgY3R4PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHRvIGEgY29weSBvZiBjdHhcblwKK29uIGVudHJ5IHRvIHRoZSB3aXRoLXN0YXRlbWVudCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgZGVmYXVsdCBjb250ZXh0IHdoZW5cblwKK2V4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZCwgYSBjb3B5IG9mIHRoZSBjdXJyZW50XG5cCitkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKIFxuIik7CiAKICNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCi1QeURvY19TVFJWQVIoZG9jX2llZWVfY29udGV4dCwiXG5cCi1JRUVFQ29udGV4dChiaXRzKSAtIFJldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvclxuXAotb25lIG9mIHRoZSBJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgYW5kXG5cCi1sZXNzIHRoYW4gSUVFRV9DT05URVhUX01BWF9CSVRTLiBGb3IgdGhlIG1vc3QgY29tbW9uIHZhbHVlcywgdGhlIGNvbnN0YW50c1xuXAorUHlEb2NfU1RSVkFSKGRvY19pZWVlX2NvbnRleHQsCisiSUVFRUNvbnRleHQoJG1vZHVsZSwgYml0cywgLylcbi0tXG5cblwKK1JldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvciBvbmUgb2YgdGhlXG5cCitJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyIGFuZCBsZXNzXG5cCit0aGFuIElFRUVfQ09OVEVYVF9NQVhfQklUUy4gIEZvciB0aGUgbW9zdCBjb21tb24gdmFsdWVzLCB0aGUgY29uc3RhbnRzXG5cCiBERUNJTUFMMzIsIERFQ0lNQUw2NCBhbmQgREVDSU1BTDEyOCBhcmUgcHJvdmlkZWQuXG5cCiBcbiIpOwogI2VuZGlmCkBAIC00OCwzMiArNTIsMzQgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1QeURvY19TVFJWQVIoZG9jX2RlY2ltYWwsIlxuXAotRGVjaW1hbCh2YWx1ZT1cIjBcIiwgY29udGV4dD1Ob25lKTogQ29uc3RydWN0IGEgbmV3IERlY2ltYWwgb2JqZWN0LlxuXAotdmFsdWUgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIG9yIGFub3RoZXIgRGVjaW1hbCBvYmplY3QuXG5cCi1JZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0XG5cCi10aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBJbnZhbGlkT3BlcmF0aW9uXG5cCi10cmFwIGlzIGFjdGl2ZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfZGVjaW1hbCwKKyJEZWNpbWFsKHZhbHVlPVwiMFwiLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QuICd2YWx1ZScgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsXG5cCitvciBhbm90aGVyIERlY2ltYWwgb2JqZWN0LiBJZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlXG5cCitjb250ZXh0IGRvZXMgbm90IGFmZmVjdCB0aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmXG5cCit0aGUgSW52YWxpZE9wZXJhdGlvbiB0cmFwIGlzIGFjdGl2ZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYWRqdXN0ZWQsIlxuXAotYWRqdXN0ZWQoKSAtIFJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci5cblwKLVxuXAotRGVmaW5lZCBhcyBleHAgKyBkaWdpdHMgLSAxLlxuXAorUHlEb2NfU1RSVkFSKGRvY19hZGp1c3RlZCwKKyJhZGp1c3RlZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci4gIERlZmluZWQgYXMgZXhwICsgZGlnaXRzIC0gMS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYXNfdHVwbGUsIlxuXAotYXNfdHVwbGUoKSAtIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2FzX3R1cGxlLAorImFzX3R1cGxlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY2Fub25pY2FsLCJcblwKLWNhbm9uaWNhbCgpIC0gUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiBDdXJyZW50bHksXG5cCi10aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uXG5cCi1yZXR1cm5zIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKKyJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXAorb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIHJldHVybnMgaXRzXG5cCithcmd1bWVudCB1bmNoYW5nZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmUsIlxuXAotY29tcGFyZShvdGhlciwgY29udGV4dD1Ob25lKSAtIENvbXBhcmUgc2VsZiB0byBvdGhlci4gUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZSwKKyJjb21wYXJlKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSBzZWxmIHRvIG90aGVyLiAgUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKIFxuXAogICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJylcblwKICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJylcblwKQEAgLTgxLDE3ICs4NywxOCBAQAogICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLCJcblwKLWNvbXBhcmVfc2lnbmFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0XG5cCi1hbGwgTmFOcyBzaWduYWwuXG5cCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLAorImNvbXBhcmVfc2lnbmFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0IGFsbCBOYU5zIHNpZ25hbC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwiXG5cCi1jb21wYXJlX3RvdGFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXJcblwKLWFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyIG51bWVyaWNhbCB2YWx1ZS4gU2ltaWxhciB0byB0aGVcblwKLWNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0IGdpdmVzIGEgdG90YWwgb3JkZXJpbmcgb24gRGVjaW1hbCBpbnN0YW5jZXMuXG5cCi1Ud28gRGVjaW1hbCBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGJ1dCBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zXG5cCi1jb21wYXJlIHVuZXF1YWwgaW4gdGhpcyBvcmRlcmluZzpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwKKyJjb21wYXJlX3RvdGFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW5cblwKK3RoZWlyIG51bWVyaWNhbCB2YWx1ZS4gIFNpbWlsYXIgdG8gdGhlIGNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0XG5cCitnaXZlcyBhIHRvdGFsIG9yZGVyaW5nIG9uIERlY2ltYWwgaW5zdGFuY2VzLiAgVHdvIERlY2ltYWwgaW5zdGFuY2VzIHdpdGhcblwKK3RoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMgY29tcGFyZSB1bmVxdWFsXG5cCitpbiB0aGlzIG9yZGVyaW5nOlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpXG5cCiAgICAgRGVjaW1hbCgnLTEnKVxuXApAQCAtMTA3LDM2ICsxMTQsMzkgQEAKIEludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbF9tYWcsIlxuXAotY29tcGFyZV90b3RhbF9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpclxuXAotYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgdmFsdWUgYXMgaW4gY29tcGFyZV90b3RhbCgpLCBidXRcblwKLWlnbm9yaW5nIHRoZSBzaWduIG9mIGVhY2ggb3BlcmFuZC4geC5jb21wYXJlX3RvdGFsX21hZyh5KSBpcyBlcXVpdmFsZW50IHRvXG5cCi14LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK0NvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyXG5cCit2YWx1ZSBhcyBpbiBjb21wYXJlX3RvdGFsKCksIGJ1dCBpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuXG5cCitcblwKK3guY29tcGFyZV90b3RhbF9tYWcoeSkgaXMgZXF1aXZhbGVudCB0byB4LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb25qdWdhdGUsIlxuXAotY29uanVnYXRlKCkgLSBSZXR1cm4gc2VsZi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29uanVnYXRlLAorImNvbmp1Z2F0ZSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBzZWxmLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X2FicywiXG5cCi1jb3B5X2FicygpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uXG5cCi1pcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9hYnMsCisiY29weV9hYnMoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnlcblwKK2NvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X25lZ2F0ZSwiXG5cCi1jb3B5X25lZ2F0ZSgpIC0gUmV0dXJuIHRoZSBuZWdhdGlvbiBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uIGlzXG5cCi11bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9uZWdhdGUsCisiY29weV9uZWdhdGUoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dFxuXAorYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoXG5cCi10aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBGb3IgZXhhbXBsZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9zaWduLAorImNvcHlfc2lnbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlXG5cCitzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gRm9yIGV4YW1wbGU6XG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgnMi4zJykuY29weV9zaWduKERlY2ltYWwoJy0xLjUnKSlcblwKICAgICBEZWNpbWFsKCctMi4zJylcblwKQEAgLTE0NiwxNCArMTU2LDE2IEBACiBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2V4cCwiXG5cCi1leHAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIChuYXR1cmFsKSBleHBvbmVudGlhbCBmdW5jdGlvblxuXAotZSoqeCBhdCB0aGUgZ2l2ZW4gbnVtYmVyLiBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlXG5cCi1hbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZXhwLAorImV4cCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKG5hdHVyYWwpIGV4cG9uZW50aWFsIGZ1bmN0aW9uIGUqKnggYXQgdGhlIGdpdmVuXG5cCitudW1iZXIuICBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0XG5cCitpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZnJvbV9mbG9hdCwiXG5cCi1mcm9tX2Zsb2F0KGYpIC0gQ2xhc3MgbWV0aG9kIHRoYXQgY29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19mcm9tX2Zsb2F0LAorImZyb21fZmxvYXQoJHR5cGUsIGYsIC8pXG4tLVxuXG5cCitDbGFzcyBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuXG5cCiBTaW5jZSAwLjEgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsXG5cCiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuXG5cCiBcblwKQEAgLTE2OCwxNTUgKzE4MCwxNzYgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19mbWEsIlxuXAotZm1hKG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKSAtIEZ1c2VkIG11bHRpcGx5LWFkZC4gUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmRcblwKLXdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2ZtYSwKKyJmbWEoJHNlbGYsIC8sIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRnVzZWQgbXVsdGlwbHktYWRkLiAgUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmQgd2l0aCBubyByb3VuZGluZyBvZiB0aGVcblwKK2ludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgyKS5mbWEoMywgNSlcblwKICAgICBEZWNpbWFsKCcxMScpXG5cCiBcblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfY2Fub25pY2FsLCJcblwKLWlzX2Nhbm9uaWNhbCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGNhbm9uaWNhbCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotQ3VycmVudGx5LCBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzXG5cCi1yZXR1cm5zIFRydWUuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2Nhbm9uaWNhbCwKKyJpc19jYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgY2Fub25pY2FsIGFuZCBGYWxzZSBvdGhlcndpc2UuICBDdXJyZW50bHksXG5cCithIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzIHJldHVybnNcblwKK1RydWUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2Zpbml0ZSwiXG5cCi1pc19maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZpbml0ZSBudW1iZXIsIGFuZCBGYWxzZSBpZiB0aGVcblwKLWFyZ3VtZW50IGlzIGluZmluaXRlIG9yIGEgTmFOLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19maW5pdGUsCisiaXNfZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgZmluaXRlIG51bWJlciwgYW5kIEZhbHNlIGlmIHRoZSBhcmd1bWVudFxuXAoraXMgaW5maW5pdGUgb3IgYSBOYU4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLCJcblwKLWlzX2luZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG5cCi1pbmZpbml0eSBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotXG4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19pc19uYW4sIlxuXAotaXNfbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLAorImlzX2luZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSBhbmRcblwKIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9ybWFsIGZpbml0ZVxuXAotbm9uLXplcm8gbnVtYmVyIHdpdGggYW4gYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uXG5cCi1SZXR1cm4gRmFsc2UgaWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX25hbiwKKyJpc19uYW4oJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kIEZhbHNlXG5cCitvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3FuYW4sIlxuXAotaXNfcW5hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBub3JtYWwgZmluaXRlIG5vbi16ZXJvIG51bWJlciB3aXRoIGFuXG5cCithZGp1c3RlZCBleHBvbmVudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gRW1pbi4gUmV0dXJuIEZhbHNlIGlmIHRoZVxuXAorYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLCJcblwKLWlzX3NpZ25lZCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGhhcyBhIG5lZ2F0aXZlIHNpZ24gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuIE5vdGUgdGhhdCBib3RoIHplcm9zIGFuZCBOYU5zIGNhbiBjYXJyeSBzaWducy5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfcW5hbiwKKyJpc19xbmFuKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19pc19zbmFuLCJcblwKLWlzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLAorImlzX3NpZ25lZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBoYXMgYSBuZWdhdGl2ZSBzaWduIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitOb3RlIHRoYXQgYm90aCB6ZXJvcyBhbmQgTmFOcyBjYW4gY2Fycnkgc2lnbnMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoY29udGV4dD1Ob25lKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZFxuXAotRmFsc2Ugb3RoZXJ3aXNlLiBBIG51bWJlciBpcyBzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhblxuXAotYWRqdXN0ZWQgZXhwb25lbnQgbGVzcyB0aGFuIEVtaW4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3NuYW4sCisiaXNfc25hbigkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfemVybywiXG5cCi1pc196ZXJvKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwKKyJpc19zdWJub3JtYWwoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCBGYWxzZSBvdGhlcndpc2UuIEEgbnVtYmVyIGlzXG5cCitzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhbiBhZGp1c3RlZCBleHBvbmVudCBsZXNzXG5cCit0aGFuIEVtaW4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xuLCJcblwKLWxuKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3plcm8sCisiaXNfemVybygkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgemVybyBhbmQgRmFsc2VcblwKK290aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nMTAsIlxuXAotbG9nMTAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgYmFzZSB0ZW4gbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xuLAorImxuKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLiBUaGUgZnVuY3Rpb24gYWx3YXlzXG5cCit1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nYiwiXG5cCi1sb2diKGNvbnRleHQ9Tm9uZSkgLSBGb3IgYSBub24temVybyBudW1iZXIsIHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnRcblwKLW9mIHRoZSBvcGVyYW5kIGFzIGEgRGVjaW1hbCBpbnN0YW5jZS4gSWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvLCB0aGVuXG5cCi1EZWNpbWFsKCctSW5maW5pdHknKSBpcyByZXR1cm5lZCBhbmQgdGhlIERpdmlzaW9uQnlaZXJvIGNvbmRpdGlvbiBpc1xuXAotcmFpc2VkLiBJZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmZpbml0eSB0aGVuIERlY2ltYWwoJ0luZmluaXR5JykgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZzEwLAorImxvZzEwKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4gVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZVxuXAorUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfYW5kLCJcblwKLWxvZ2ljYWxfYW5kKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGFuZCBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2IsCisibG9nYigkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRm9yIGEgbm9uLXplcm8gbnVtYmVyLCByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBvcGVyYW5kIGFzIGFcblwKK0RlY2ltYWwgaW5zdGFuY2UuICBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW4gRGVjaW1hbCgnLUluZmluaXR5JykgaXNcblwKK3JldHVybmVkIGFuZCB0aGUgRGl2aXNpb25CeVplcm8gY29uZGl0aW9uIGlzIHJhaXNlZC4gSWYgdGhlIG9wZXJhbmQgaXNcblwKK2FuIGluZmluaXR5IHRoZW4gRGVjaW1hbCgnSW5maW5pdHknKSBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlXG5cCi0obG9naWNhbCkgb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgJ2FuZCcgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfb3IsIlxuXAotbG9naWNhbF9vcihvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBvciBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfaW52ZXJ0LAorImxvZ2ljYWxfaW52ZXJ0KCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgaW52ZXJzaW9uIG9mIHRoZSAobG9naWNhbCkgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgZXhjbHVzaXZlIG9yIG9mIHRoZVxuXAotdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWdpdC13aXNlICdvcicgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX21heCwiXG5cCi1tYXgob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiBJZiBvbmUgb3BlcmFuZCBpcyBhXG5cCi1xdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX3hvciwKKyJsb2dpY2FsX3hvcigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgZGlnaXQtd2lzZSAnZXhjbHVzaXZlIG9yJyBvZiB0aGUgdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWF4X21hZywiXG5cCi1tYXhfbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gU2ltaWxhciB0byB0aGUgbWF4KCkgbWV0aG9kLCBidXQgdGhlXG5cCi1jb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX21heCwKKyJtYXgoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiAgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpc1xuXAorbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWluLCJcblwKLW1pbihvdGhlciwgY29udGV4dD1Ob25lKSAtIE1pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGFcblwKLXF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX21heF9tYWcsCisibWF4X21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1NpbWlsYXIgdG8gdGhlIG1heCgpIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlXG5cCit2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19taW5fbWFnLCJcblwKLW1pbl9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBTaW1pbGFyIHRvIHRoZSBtaW4oKSBtZXRob2QsIGJ1dCB0aGVcblwKLWNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluLAorIm1pbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK01pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXNcblwKK251bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsIlxuXAotbmV4dF9taW51cyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZVxuXAotZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXRcblwKLWlzIHNtYWxsZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGVcblwKK3ZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywiXG5cCi1uZXh0X3BsdXMoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlXG5cCi1naXZlbiBjb250ZXh0IChvciBpbiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdFxuXAotaXMgbGFyZ2VyIHRoYW4gdGhlIGdpdmVuIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsCisibmV4dF9taW51cygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlbiBjb250ZXh0IChvciBpbiB0aGVcblwKK2N1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZVxuXAorZ2l2ZW4gb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbmV4dF90b3dhcmQsIlxuXAotbmV4dF90b3dhcmQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm5cblwKLXRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKLUlmIGJvdGggb3BlcmFuZHMgYXJlIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kXG5cCi13aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlIGdpdmVuIGNvbnRleHQgKG9yIGluIHRoZVxuXAorY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGVcblwKK2dpdmVuIG9wZXJhbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25vcm1hbGl6ZSwiXG5cCi1ub3JtYWxpemUoY29udGV4dD1Ob25lKSAtIE5vcm1hbGl6ZSB0aGUgbnVtYmVyIGJ5IHN0cmlwcGluZyB0aGUgcmlnaHRtb3N0XG5cCi10cmFpbGluZyB6ZXJvcyBhbmQgY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS5cblwKLVVzZWQgZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLiBGb3JcblwKLWV4YW1wbGUsIERlY2ltYWwoJzMyLjEwMCcpIGFuZCBEZWNpbWFsKCcwLjMyMTAwMGUrMicpIGJvdGggbm9ybWFsaXplIHRvIHRoZVxuXAotZXF1aXZhbGVudCB2YWx1ZSBEZWNpbWFsKCczMi4xJykuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfdG93YXJkLAorIm5leHRfdG93YXJkKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUgdW5lcXVhbCwgcmV0dXJuIHRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3RcblwKK29wZXJhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuICBJZiBib3RoIG9wZXJhbmRzIGFyZVxuXAorbnVtZXJpY2FsbHkgZXF1YWwsIHJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXRcblwKK3RvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLCJcblwKLW51bWJlcl9jbGFzcyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZVxuXAotb3BlcmFuZC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlbiBzdHJpbmdzOlxuXAorUHlEb2NfU1RSVkFSKGRvY19ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZyB6ZXJvcyBhbmRcblwKK2NvbnZlcnRpbmcgYW55IHJlc3VsdCBlcXVhbCB0byBEZWNpbWFsKCcwJykgdG8gRGVjaW1hbCgnMGUwJykuICBVc2VkXG5cCitmb3IgcHJvZHVjaW5nIGNhbm9uaWNhbCB2YWx1ZXMgZm9yIG1lbWJlcnMgb2YgYW4gZXF1aXZhbGVuY2UgY2xhc3MuXG5cCitGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMzIuMTAwJykgYW5kIERlY2ltYWwoJzAuMzIxMDAwZSsyJykgYm90aCBub3JtYWxpemVcblwKK3RvIHRoZSBlcXVpdmFsZW50IHZhbHVlIERlY2ltYWwoJzMyLjEnKS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLAorIm51bWJlcl9jbGFzcygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLiAgVGhlIHJldHVybmVkIHZhbHVlXG5cCitpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZW4gc3RyaW5nczpcblwKIFxuXAogICAgICogJy1JbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBpbmZpbml0eS5cblwKICAgICAqICctTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgbm9ybWFsIG51bWJlci5cblwKQEAgLTMzMSw5ICszNjQsMTAgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGVcblwKLWZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgLywgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZVxuXAorZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEuNDE0MjEzNTYnKS5xdWFudGl6ZShEZWNpbWFsKCcxLjAwMCcpKVxuXAogICAgIERlY2ltYWwoJzEuNDE0JylcblwKQEAgLTM1MiwxMDMgKzM4NiwxMDkgQEAKIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JhZGl4LCJcblwKLXJhZGl4KCkgLSBSZXR1cm4gRGVjaW1hbCgxMCksIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIERlY2ltYWwgY2xhc3MgZG9lc1xuXAorUHlEb2NfU1RSVkFSKGRvY19yYWRpeCwKKyJyYWRpeCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBEZWNpbWFsKDEwKSwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgRGVjaW1hbCBjbGFzcyBkb2VzXG5cCiBhbGwgaXRzIGFyaXRobWV0aWMuIEluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JlbWFpbmRlcl9uZWFyLCJcblwKLXJlbWFpbmRlcl9uZWFyKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBkaXZpZGluZ1xuXAotc2VsZiBieSBvdGhlci4gVGhpcyBkaWZmZXJzIGZyb20gc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlXG5cCi1yZW1haW5kZXIgaXMgY2hvc2VuIHNvIGFzIHRvIG1pbmltaXplIGl0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZVxuXAotcmV0dXJuIHZhbHVlIGlzIHNlbGYgLSBuICogb3RoZXIgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdFxuXAotdmFsdWUgb2Ygc2VsZiAvIG90aGVyLCBhbmQgaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmVcblwKLWlzIGNob3Nlbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGRpdmlkaW5nIHNlbGYgYnkgb3RoZXIuICBUaGlzIGRpZmZlcnMgZnJvbVxuXAorc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlIHJlbWFpbmRlciBpcyBjaG9zZW4gc28gYXMgdG8gbWluaW1pemVcblwKK2l0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZSByZXR1cm4gdmFsdWUgaXMgc2VsZiAtIG4gKiBvdGhlclxuXAord2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdCB2YWx1ZSBvZiBzZWxmIC8gb3RoZXIsIGFuZFxuXAoraWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUgaXMgY2hvc2VuLlxuXAogXG5cCiBJZiB0aGUgcmVzdWx0IGlzIHplcm8gdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHNlbGYuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwiXG5cCi1yb3RhdGUob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZVxuXAotZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZCBvcGVyYW5kXG5cCi1tdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZSBhYnNvbHV0ZVxuXAotdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHJvdGF0ZS4gSWYgdGhlIHNlY29uZFxuXAotb3BlcmFuZCBpcyBwb3NpdGl2ZSB0aGVuIHJvdGF0aW9uIGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2Ugcm90YXRpb24gaXMgdG8gdGhlXG5cCi1yaWdodC4gVGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIHRvXG5cCitQeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwKKyJyb3RhdGUoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudFxuXAorc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW5cblwKK3RoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxuXAorb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byByb3RhdGUuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUgdGhlbiByb3RhdGlvbiBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlIHJvdGF0aW9uIGlzIHRvIHRoZSByaWdodC5cblwKK1RoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyB0b1xuXAogbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuIFRoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmVcblwKIHVuY2hhbmdlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bShvdGhlciwgY29udGV4dD1Ob25lKSAtIFRlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZVxuXAotc2FtZSBleHBvbmVudCBvciB3aGV0aGVyIGJvdGggYXJlIE5hTi5cblwKK1B5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLAorInNhbWVfcXVhbnR1bSgkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1Rlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50IG9yIHdoZXRoZXIgYm90aCBhcmUgTmFOLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zY2FsZWIsIlxuXAotc2NhbGViKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIGV4cG9uZW50XG5cCi1hZGp1c3RlZCB0aGUgc2Vjb25kLiBFcXVpdmFsZW50bHksIHJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5XG5cCi0xMCoqb3RoZXIuIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX3NjYWxlYiwKKyJzY2FsZWIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnQgYWRqdXN0ZWQgdGhlIHNlY29uZC4gIEVxdWl2YWxlbnRseSxcblwKK3JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5IDEwKipvdGhlci4gVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmVcblwKK2FuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3NoaWZ0LCJcblwKLXNoaWZ0KG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZlxuXAotdGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50IHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSBzZWNvbmRcblwKLW9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGVcblwKLWFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzaGlmdC5cblwKLUlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBwb3NpdGl2ZSwgdGhlbiB0aGUgc2hpZnQgaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZVxuXAotdGhlIHNoaWZ0IGlzIHRvIHRoZSByaWdodC4gRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUgY29lZmZpY2llbnQgYXJlIHplcm9zLlxuXAotVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX3NoaWZ0LAorInNoaWZ0KCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnRcblwKK3NwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuICBUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluXG5cCit0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcblwKK29wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gc2hpZnQuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUsIHRoZW4gdGhlIHNoaWZ0IGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2UgdGhlIHNoaWZ0IGlzIHRvIHRoZVxuXAorcmlnaHQuIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4gVGhlIHNpZ24gYW5kIGV4cG9uZW50XG5cCitvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zcXJ0LCJcblwKLXNxcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGFyZ3VtZW50IHRvIGZ1bGwgcHJlY2lzaW9uLlxuXAotVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUgUk9VTkRfSEFMRl9FVkVOIHJvdW5kaW5nIG1vZGUuXG5cCitQeURvY19TVFJWQVIoZG9jX3NxcnQsCisic3FydCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgdG8gZnVsbCBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZSBST1VORF9IQUxGX0VWRU4gcm91bmRpbmcgbW9kZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9fZW5nX3N0cmluZywiXG5cCi10b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkgLSBDb252ZXJ0IHRvIGFuIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLlxuXAotRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmVcblwKLWFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLiBGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMTIzRSsxJylcblwKLWlzIGNvbnZlcnRlZCB0byBEZWNpbWFsKCcxLjIzRSszJykuXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2VuZ19zdHJpbmcsCisidG9fZW5nX3N0cmluZygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4gIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudFxuXAord2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzbyB0aGVyZSBhcmUgdXAgdG8gMyBkaWdpdHMgbGVmdCBvZiB0aGUgZGVjaW1hbFxuXAorcGxhY2UuIEZvciBleGFtcGxlLCBEZWNpbWFsKCcxMjNFKzEnKSBpcyBjb252ZXJ0ZWQgdG8gRGVjaW1hbCgnMS4yM0UrMycpLlxuXAogXG5cCiBUaGUgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4cG9uZW50IHNpZ24gaXMgbG93ZXJcblwKIG9yIHVwcGVyIGNhc2UuIE90aGVyd2lzZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0IHRoZSBvcGVyYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsLCJcblwKLXRvX2ludGVncmFsKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBJZGVudGljYWwgdG8gdGhlXG5cCi10b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gVGhlIHRvX2ludGVncmFsKCkgbmFtZSBoYXMgYmVlbiBrZXB0XG5cCi1mb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLlxuXAorUHlEb2NfU1RSVkFSKGRvY190b19pbnRlZ3JhbCwKKyJ0b19pbnRlZ3JhbCgkc2VsZiwgLywgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRoZSB0b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gIFRoZSB0b19pbnRlZ3JhbCgpIG5hbWUgaGFzIGJlZW5cblwKK2tlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0XG5cCi1pbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy5cblwKLVRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZVxuXAotYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX2V4YWN0LAorInRvX2ludGVncmFsX2V4YWN0KCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmXG5cCityb3VuZGluZyBvY2N1cnMuICBUaGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXJcblwKK2lmIGdpdmVuLCBlbHNlIGJ5IHRoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGVcblwKK3JvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLAorInRvX2ludGVncmFsX3ZhbHVlKCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHdpdGhvdXQgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZC4gIFRoZVxuXAorcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnlcblwKK3RoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZVxuXAogb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLCJcblwKLXRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdFxuXAotaW50ZWdlciB3aXRob3V0IHNpZ25hbGluZyBJbmV4YWN0IG9yIFJvdW5kZWQuIFRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWRcblwKLWJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXJcblwKLXBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXNcblwKLXVzZWQuXG5cCi1cbiIpOwotCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotUHlEb2NfU1RSVkFSKGRvY19jb250ZXh0LCJcblwKK1B5RG9jX1NUUlZBUihkb2NfY29udGV4dCwKKyJDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpXG4tLVxuXG5cCiBUaGUgY29udGV4dCBhZmZlY3RzIGFsbW9zdCBhbGwgb3BlcmF0aW9ucyBhbmQgY29udHJvbHMgcm91bmRpbmcsXG5cCi1PdmVyL1VuZGVyZmxvdywgcmFpc2luZyBvZiBleGNlcHRpb25zIGFuZCBtdWNoIG1vcmUuIEEgbmV3IGNvbnRleHRcblwKK092ZXIvVW5kZXJmbG93LCByYWlzaW5nIG9mIGV4Y2VwdGlvbnMgYW5kIG11Y2ggbW9yZS4gIEEgbmV3IGNvbnRleHRcblwKIGNhbiBiZSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzOlxuXAogXG5cCiAgICAgPj4+IGMgPSBDb250ZXh0KHByZWM9MjgsIEVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsXG5cCkBAIC00NjAsMzA4ICs1MDAsMzcyIEBACiBcbiIpOwogCiAjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQotUHlEb2NfU1RSVkFSKGRvY19jdHhfYXBwbHksIlxuXAotYXBwbHkoeCkgLSBBcHBseSBzZWxmIHRvIERlY2ltYWwgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FwcGx5LAorImFwcGx5KCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQXBwbHkgc2VsZiB0byBEZWNpbWFsIHguXG5cCiBcbiIpOwogI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX2ZsYWdzLCJcblwKLWNsZWFyX2ZsYWdzKCkgLSBSZXNldCBhbGwgZmxhZ3MgdG8gRmFsc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl9mbGFncywKKyJjbGVhcl9mbGFncygkc2VsZiwgLylcbi0tXG5cblwKK1Jlc2V0IGFsbCBmbGFncyB0byBGYWxzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX3RyYXBzLCJcblwKLWNsZWFyX3RyYXBzKCkgLSBTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY2xlYXJfdHJhcHMsCisiY2xlYXJfdHJhcHMoJHNlbGYsIC8pXG4tLVxuXG5cCitTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weSwiXG5cCi1jb3B5KCkgLSBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQgd2l0aCBhbGwgZmxhZ3MgY2xlYXJlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHksCisiY29weSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIGR1cGxpY2F0ZSBvZiB0aGUgY29udGV4dCB3aXRoIGFsbCBmbGFncyBjbGVhcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLCJcblwKLWNvcHlfZGVjaW1hbCh4KSAtIFJldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLAorImNvcHlfZGVjaW1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWwsIlxuXAotY3JlYXRlX2RlY2ltYWwoeCkgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIHgsIHVzaW5nIHNlbGYgYXMgdGhlXG5cCi1jb250ZXh0LiBVbmxpa2UgdGhlIERlY2ltYWwgY29uc3RydWN0b3IsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlIGNvbnRleHRcblwKLWxpbWl0cy5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsLAorImNyZWF0ZV9kZWNpbWFsKCRzZWxmLCBudW09XCIwXCIsIC8pXG4tLVxuXG5cCitDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIG51bSwgdXNpbmcgc2VsZiBhcyB0aGUgY29udGV4dC4gVW5saWtlIHRoZVxuXAorRGVjaW1hbCBjb25zdHJ1Y3RvciwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGUgY29udGV4dCBsaW1pdHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LCJcblwKLWNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGZsb2F0IGYuXG5cCi1Vbmxpa2UgdGhlIERlY2ltYWwuZnJvbV9mbG9hdCgpIGNsYXNzIG1ldGhvZCwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGVcblwKLWNvbnRleHQgbGltaXRzLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKKyJjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCRzZWxmLCBmLCAvKVxuLS1cblxuXAorQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBmbG9hdCBmLiAgVW5saWtlIHRoZSBEZWNpbWFsLmZyb21fZmxvYXQoKVxuXAorY2xhc3MgbWV0aG9kLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0IGxpbWl0cy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0aW55LCJcblwKLUV0aW55KCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWluIC0gcHJlYyArIDEsIHdoaWNoIGlzIHRoZSBtaW5pbXVtXG5cCi1leHBvbmVudCB2YWx1ZSBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50XG5cCi1pcyBzZXQgdG8gRXRpbnkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdGlueSwKKyJFdGlueSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtaW4gLSBwcmVjICsgMSwgd2hpY2ggaXMgdGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWVcblwKK2ZvciBzdWJub3JtYWwgcmVzdWx0cy4gIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50IGlzIHNldCB0byBFdGlueS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0b3AsIlxuXAotRXRvcCgpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiBUaGlzIGlzIHRoZSBtYXhpbXVtIGV4cG9uZW50XG5cCi1pZiB0aGUgX2NsYW1wIGZpZWxkIG9mIHRoZSBjb250ZXh0IGlzIHNldCB0byAxIChJRUVFIGNsYW1wIG1vZGUpLiBFdG9wKCkgbXVzdFxuXAotbm90IGJlIG5lZ2F0aXZlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfRXRvcCwKKyJFdG9wKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiAgVGhpcyBpcyB0aGUgbWF4aW11bSBleHBvbmVudFxuXAoraWYgdGhlIF9jbGFtcCBmaWVsZCBvZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gMSAoSUVFRSBjbGFtcCBtb2RlKS4gIEV0b3AoKVxuXAorbXVzdCBub3QgYmUgbmVnYXRpdmUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9hYnMsIlxuXAotYWJzKHgpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWJzLAorImFicygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2FkZCwiXG5cCi1hZGQoeCwgeSkgLSBSZXR1cm4gdGhlIHN1bSBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWRkLAorImFkZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgc3VtIG9mIHggYW5kIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsIlxuXAotY2Fub25pY2FsKHgpIC0gUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsCisiY2Fub25pY2FsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLCJcblwKLWNvbXBhcmUoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLAorImNvbXBhcmUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3NpZ25hbCwiXG5cCi1jb21wYXJlX3NpZ25hbCh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS4gQWxsIE5hTnMgc2lnbmFsLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV9zaWduYWwsCisiY29tcGFyZV9zaWduYWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuICBBbGwgTmFOcyBzaWduYWwuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLCJcblwKLWNvbXBhcmVfdG90YWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLAorImNvbXBhcmVfdG90YWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywiXG5cCi1jb21wYXJlX3RvdGFsX21hZyh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbixcblwKLWlnbm9yaW5nIHNpZ24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiwgaWdub3Jpbmcgc2lnbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfYWJzLCJcblwKLWNvcHlfYWJzKHgpIC0gUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2FicywKKyJjb3B5X2Ficygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIHNldCB0byAwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9uZWdhdGUsIlxuXAotY29weV9uZWdhdGUoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfbmVnYXRlLAorImNvcHlfbmVnYXRlKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKHgsIHkpIC0gQ29weSB0aGUgc2lnbiBmcm9tIHkgdG8geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfc2lnbiwKKyJjb3B5X3NpZ24oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb3B5IHRoZSBzaWduIGZyb20geSB0byB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlLCJcblwKLWRpdmlkZSh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZSwKKyJkaXZpZGUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCBkaXZpZGVkIGJ5IHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9kaXZpZGVfaW50LCJcblwKLWRpdmlkZV9pbnQoeCwgeSkgLSBSZXR1cm4geCBkaXZpZGVkIGJ5IHksIHRydW5jYXRlZCB0byBhbiBpbnRlZ2VyLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlX2ludCwKKyJkaXZpZGVfaW50KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHggZGl2aWRlZCBieSB5LCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2Rpdm1vZCwiXG5cCi1kaXZtb2QoeCwgeSkgLSBSZXR1cm4gcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24geCAvIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZtb2QsCisiZGl2bW9kKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIHggLyB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZXhwLCJcblwKLWV4cCh4KSAtIFJldHVybiBlICoqIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9leHAsCisiZXhwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGUgKiogeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwiXG5cCi1mbWEoeCwgeSwgeikgLSBSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwKKyJmbWEoJHNlbGYsIHgsIHksIHosIC8pXG4tLVxuXG5cCitSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Nhbm9uaWNhbCwiXG5cCi1pc19jYW5vbmljYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGNhbm9uaWNhbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfY2Fub25pY2FsLAorImlzX2Nhbm9uaWNhbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgY2Fub25pY2FsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc19maW5pdGUsIlxuXAotaXNfZmluaXRlKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBmaW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Zpbml0ZSwKKyJpc19maW5pdGUoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB4IGlzIGZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfaW5maW5pdGUsIlxuXAotaXNfaW5maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGluZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19pbmZpbml0ZSwKKyJpc19pbmZpbml0ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgaW5maW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX25hbiwiXG5cCi1pc19uYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcU5hTiBvciBzTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19uYW4sCisiaXNfbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHFOYU4gb3Igc05hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBub3JtYWwgbnVtYmVyLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIG5vcm1hbCBudW1iZXIsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sIlxuXAotaXNfcW5hbih4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sCisiaXNfcW5hbigkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3NpZ25lZCwiXG5cCi1pc19zaWduZWQoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5lZ2F0aXZlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zaWduZWQsCisiaXNfc2lnbmVkKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBuZWdhdGl2ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwiXG5cCi1pc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwKKyJpc19zbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHNpZ25hbGluZyBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIHN1Ym5vcm1hbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc3Vibm9ybWFsLAorImlzX3N1Ym5vcm1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc196ZXJvLCJcblwKLWlzX3plcm8oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgemVybywgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfemVybywKKyJpc196ZXJvKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHplcm8sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2xuLCJcblwKLWxuKHgpIC0gUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG4sCisibG4oJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9sb2cxMCwiXG5cCi1sb2cxMCh4KSAtIFJldHVybiB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZzEwLAorImxvZzEwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwiXG5cCi1sb2diKHgpIC0gUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwKKyJsb2diKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsIlxuXAotbG9naWNhbF9hbmQoeCwgeSkgLSBEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoeCkgLSBJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsCisibG9naWNhbF9pbnZlcnQoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwiXG5cCi1sb2dpY2FsX29yKHgsIHkpIC0gRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3IoeCwgeSkgLSBEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsCisibG9naWNhbF94b3IoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LCJcblwKLW1heCh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LAorIm1heCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywiXG5cCi1tYXhfbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywKKyJtYXhfbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLCJcblwKLW1pbih4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLAorIm1pbigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywiXG5cCi1taW5fbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWludXMsIlxuXAotbWludXMoeCkgLSBNaW51cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IG1pbnVzIG9wZXJhdG9yIGluIFB5dGhvbixcblwKLWJ1dCBhcHBsaWVzIHRoZSBjb250ZXh0IHRvIHRoZSByZXN1bHQuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW51cywKKyJtaW51cygkc2VsZiwgeCwgLylcbi0tXG5cblwKK01pbnVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggbWludXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X211bHRpcGx5LCJcblwKLW11bHRpcGx5KHgsIHkpIC0gUmV0dXJuIHRoZSBwcm9kdWN0IG9mIHggYW5kIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9tdWx0aXBseSwKKyJtdWx0aXBseSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcHJvZHVjdCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywiXG5cCi1uZXh0X21pbnVzKHgpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywKKyJuZXh0X21pbnVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9wbHVzLCJcblwKLW5leHRfcGx1cyh4KSAtIFJldHVybiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwiXG5cCi1uZXh0X3Rvd2FyZCh4KSAtIFJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwKKyJuZXh0X3Rvd2FyZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsIlxuXAotbm9ybWFsaXplKHgpIC0gUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsIlxuXAotbnVtYmVyX2NsYXNzKHgpIC0gUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsCisibnVtYmVyX2NsYXNzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9wbHVzLCJcblwKLXBsdXMoeCkgLSBQbHVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggcGx1cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCi1idXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcGx1cywKKyJwbHVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUGx1cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IHBsdXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLCJcblwKLXBvd2VyKHgsIHkpIC0gQ29tcHV0ZSB4Kip5LiBJZiB4IGlzIG5lZ2F0aXZlLCB0aGVuIHkgbXVzdCBiZSBpbnRlZ3JhbC5cblwKLVRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyB5IGlzIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZVxuXAotYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuIEluIHRoZSBQeXRob24gdmVyc2lvblxuXAotdGhlIHJlc3VsdCBpcyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGluIHRoZSBDIHZlcnNpb24gdGhlIHJlc3VsdCBpc1xuXAotYWxtb3N0IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLAorInBvd2VyKCRzZWxmLCAvLCBhLCBiLCBtb2R1bG89Tm9uZSlcbi0tXG5cblwKK0NvbXB1dGUgYSoqYi4gSWYgJ2EnIGlzIG5lZ2F0aXZlLCB0aGVuICdiJyBtdXN0IGJlIGludGVncmFsLiBUaGUgcmVzdWx0XG5cCit3aWxsIGJlIGluZXhhY3QgdW5sZXNzICdhJyBpcyBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhblxuXAorYmUgZXhwcmVzc2VkIGV4YWN0bHkgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLiAgSW4gdGhlIFB5dGhvbiB2ZXJzaW9uIHRoZVxuXAorcmVzdWx0IGlzIGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgaW4gdGhlIEMgdmVyc2lvbiB0aGUgcmVzdWx0IGlzIGFsbW9zdFxuXAorYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAogXG5cCi1wb3dlcih4LCB5LCBtKSAtIENvbXB1dGUgKHgqKnkpICUgbS4gVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgaG9sZDpcblwKK0lmIG1vZHVsbyBpcyBnaXZlbiwgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uIFRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zXG5cCitob2xkOlxuXAogXG5cCiAgICAgKiBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWxcblwKLSAgICAqIHkgbXVzdCBiZSBub25uZWdhdGl2ZVxuXAotICAgICogYXQgbGVhc3Qgb25lIG9mIHggb3IgeSBtdXN0IGJlIG5vbnplcm9cblwKLSAgICAqIG0gbXVzdCBiZSBub256ZXJvIGFuZCBsZXNzIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWVcblwKKyAgICAqICdiJyBtdXN0IGJlIG5vbm5lZ2F0aXZlXG5cCisgICAgKiBhdCBsZWFzdCBvbmUgb2YgJ2EnIG9yICdiJyBtdXN0IGJlIG5vbnplcm9cblwKKyAgICAqIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGxlc3MgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZVxuXAogXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZSh4LCB5KSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yYWRpeCwiXG5cCi1yYWRpeCgpIC0gUmV0dXJuIDEwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmFkaXgsCisicmFkaXgoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gMTAuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXIsIlxuXAotcmVtYWluZGVyKHgsIHkpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLiBUaGUgc2lnbiBvZlxuXAotdGhlIHJlc3VsdCwgaWYgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyLAorInJlbWFpbmRlcigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsXG5cCitpZiBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXJfbmVhciwiXG5cCi1yZW1haW5kZXJfbmVhcih4LCB5KSAtIFJldHVybiB4IC0geSAqIG4sIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGVcblwKLWV4YWN0IHZhbHVlIG9mIHggLyB5IChpZiB0aGUgcmVzdWx0IGlzIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHgpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCAtIHkgKiBuLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0IHZhbHVlIG9mIHggLyB5XG5cCisoaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiB4KS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3JvdGF0ZSwiXG5cCi1yb3RhdGUoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHJvdGF0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9yb3RhdGUsCisicm90YXRlKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4LCByb3RhdGVkIGJ5IHkgcGxhY2VzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bSh4LCB5KSAtIFJldHVybiBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NhbWVfcXVhbnR1bSwKKyJzYW1lX3F1YW50dW0oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9zY2FsZWIsIlxuXAotc2NhbGViKHgsIHkpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlXG5cCi10byBpdHMgZXhwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfc2NhbGViLAorInNjYWxlYigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2hpZnQsIlxuXAotc2hpZnQoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHNoaWZ0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9zaGlmdCwKKyJzaGlmdCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCwgc2hpZnRlZCBieSB5IHBsYWNlcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsIlxuXAotc3FydCh4KSAtIFNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsCisic3FydCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1NxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LCJcblwKLXN1YnRyYWN0KHgsIHkpIC0gUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LAorInN1YnRyYWN0KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2VuZ19zdHJpbmcsIlxuXAotdG9fZW5nX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIGVuZ2luZWVyaW5nIG5vdGF0aW9uLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fZW5nX3N0cmluZywKKyJ0b19lbmdfc3RyaW5nKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbCwiXG5cCi10b19pbnRlZ3JhbCh4KSAtIElkZW50aWNhbCB0byB0b19pbnRlZ3JhbF92YWx1ZSh4KS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsLAorInRvX2ludGVncmFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRvX2ludGVncmFsX3ZhbHVlKHgpLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3QoeCkgLSBSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpc1xuXAotcm91bmRlZCBvciBpbmV4YWN0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsCisidG9faW50ZWdyYWxfZXhhY3QoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpcyByb3VuZGVkIG9yIGluZXhhY3QuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwiXG5cCi10b19pbnRlZ3JhbF92YWx1ZSh4KSAtIFJvdW5kIHRvIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwKKyJ0b19pbnRlZ3JhbF92YWx1ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JvdW5kIHRvIGFuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLCJcblwKLXRvX3NjaV9zdHJpbmcoeCkgLSBDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLAorInRvX3NjaV9zdHJpbmcoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCiBcbiIpOwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCmluZGV4IDIxZDIyMjIuLjU5M2Y5ZjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwpAQCAtNDMsNiArNDMsNyBAQAogI2lmZGVmIFBQUk8KICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCiAgICAgI2luY2x1ZGUgPGZsb2F0Lmg+CisgICAgI3ByYWdtYSBmbG9hdF9jb250cm9sKHByZWNpc2UsIG9uKQogICAgICNwcmFnbWEgZmVudl9hY2Nlc3Mob24pCiAgICNlbGlmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQogICAgIC8qIEM5OSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKaW5kZXggMjcxMzdiMi4uYWI3ZDViZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC0zNiw2ICszNiw3IEBACiBmcm9tIHJhbmRkZWMgaW1wb3J0IHJhbmRmbG9hdCwgYWxsX3VuYXJ5LCBhbGxfYmluYXJ5LCBhbGxfdGVybmFyeQogZnJvbSByYW5kZGVjIGltcG9ydCB1bmFyeV9vcHRhcmcsIGJpbmFyeV9vcHRhcmcsIHRlcm5hcnlfb3B0YXJnCiBmcm9tIGZvcm1hdGhlbHBlciBpbXBvcnQgcmFuZF9mb3JtYXQsIHJhbmRfbG9jYWxlCitmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9kZWNfZnJvbV90cmlwbGUKIAogQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCiBQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQpAQCAtMzcwLDcgKzM3MSw3IEBACiAgICAgICAgIHJldHVybiBhYnMoYSAtIGIpCiAKICAgICBkZWYgc3RhbmRhcmRfdWxwKHNlbGYsIGRlYywgcHJlYyk6Ci0gICAgICAgIHJldHVybiBQLl9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBkZWMuX2V4cCtsZW4oZGVjLl9pbnQpLXByZWMpCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgZGVjLl9leHArbGVuKGRlYy5faW50KS1wcmVjKQogCiAgICAgZGVmIHJvdW5kaW5nX2RpcmVjdGlvbihzZWxmLCB4LCBtb2RlKToKICAgICAgICAgIiIiRGV0ZXJtaW5lIHRoZSBlZmZlY3RpdmUgZGlyZWN0aW9uIG9mIHRoZSByb3VuZGluZyB3aGVuCkBAIC00MDEsMTAgKzQwMiwxMCBAQAogICAgICAgICAjIENvbnZlcnQgaW5maW5pdGllcyB0byB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciArIDEuCiAgICAgICAgIHggPSBleGFjdAogICAgICAgICBpZiBleGFjdC5pc19pbmZpbml0ZSgpOgotICAgICAgICAgICAgeCA9IFAuX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgICAgICB4ID0gX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCiAgICAgICAgIHkgPSByb3VuZGVkCiAgICAgICAgIGlmIHJvdW5kZWQuaXNfaW5maW5pdGUoKToKLSAgICAgICAgICAgIHkgPSBQLl9kZWNfZnJvbV90cmlwbGUocm91bmRlZC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgICAgICB5ID0gX2RlY19mcm9tX3RyaXBsZShyb3VuZGVkLl9zaWduLCAnMTAnLCBjb250ZXh0LnAuRW1heCkKIAogICAgICAgICAjIGVyciA9IChyb3VuZGVkIC0gZXhhY3QpIC8gdWxwKHJvdW5kZWQpCiAgICAgICAgIHNlbGYubWF4Y3R4LnByZWMgPSBwICogMgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKaW5kZXggODI2MzQyYS4uOTExYjVhYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYworKysgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCkBAIC0xMSw2ICsxMSw4IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIApAQCAtMTg1LDggKzE4Nyw4IEBACiAgICAgUHlPYmplY3QqIGF0dHJpYjsKIAogICAgIC8qIGNoaWxkIGVsZW1lbnRzICovCi0gICAgaW50IGxlbmd0aDsgLyogYWN0dWFsIG51bWJlciBvZiBpdGVtcyAqLwotICAgIGludCBhbGxvY2F0ZWQ7IC8qIGFsbG9jYXRlZCBpdGVtcyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAvKiBhY3R1YWwgbnVtYmVyIG9mIGl0ZW1zICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7IC8qIGFsbG9jYXRlZCBpdGVtcyAqLwogCiAgICAgLyogdGhpcyBlaXRoZXIgcG9pbnRzIHRvIF9jaGlsZHJlbiBvciB0byBhIG1hbGxvY2VkIGJ1ZmZlciAqLwogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CkBAIC0yNTEsNyArMjUzLDcgQEAKIGRlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKIHsKICAgICBFbGVtZW50T2JqZWN0RXh0cmEgKm15ZXh0cmE7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY4LDYgKzM3MCwxNCBAQAogICAgIHJldHVybiBhdHRyaWI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfZWxlbWVudHRyZWUKK2NsYXNzIF9lbGVtZW50dHJlZS5FbGVtZW50ICJFbGVtZW50T2JqZWN0ICoiICImRWxlbWVudF9UeXBlIgorY2xhc3MgX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyICJUcmVlQnVpbGRlck9iamVjdCAqIiAiJlRyZWVCdWlsZGVyX1R5cGUiCitjbGFzcyBfZWxlbWVudHRyZWUuWE1MUGFyc2VyICJYTUxQYXJzZXJPYmplY3QgKiIgIiZYTUxQYXJzZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTE1OWFhNTBhNTQwNjFjMjJdKi8KKwogc3RhdGljIGludAogZWxlbWVudF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC00MjksOSArNDM5LDkgQEAKIH0KIAogTE9DQUwoaW50KQotZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgaW50IGV4dHJhKQorZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgUHlfc3NpemVfdCBleHRyYSkKIHsKLSAgICBpbnQgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgUHlPYmplY3QqICpjaGlsZHJlbjsKIAogICAgIC8qIG1ha2Ugc3VyZSBzZWxmLT5jaGlsZHJlbiBjYW4gaG9sZCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGV4dHJhCkBAIC00NDIsNyArNDUyLDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOworICAgIHNpemUgPSBzZWxmLT5leHRyYS0+bGVuZ3RoICsgZXh0cmE7ICAvKiBuZXZlciBvdmVyZmxvd3MgKi8KIAogICAgIGlmIChzaXplID4gc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZCkgewogICAgICAgICAvKiB1c2UgUHl0aG9uIDIuNCdzIGxpc3QgZ3Jvd3RoIHN0cmF0ZWd5ICovCkBAIC00NTMsNiArNDYzLDggQEAKICAgICAgICAgICogYmUgc2FmZS4KICAgICAgICAgICovCiAgICAgICAgIHNpemUgPSBzaXplID8gc2l6ZSA6IDE7CisgICAgICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TU0laRV9UX01BWC9zaXplb2YoUHlPYmplY3QqKSkKKyAgICAgICAgICAgIGdvdG8gbm9tZW1vcnk7CiAgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW4gIT0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbikgewogICAgICAgICAgICAgLyogQ292ZXJpdHkgQ0lEICMxODIgc2l6ZV9lcnJvcjogQWxsb2NhdGluZyAxIGJ5dGVzIHRvIHBvaW50ZXIKICAgICAgICAgICAgICAqICJjaGlsZHJlbiIsIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuIEFsdGhvdWdoIGl0J3MgYQpAQCAtNjEzLDcgKzYyNSw3IEBACiAgICAgUHlfVklTSVQoSk9JTl9PQkooc2VsZi0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIGludCBpOworICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X1ZJU0lUKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyArK2kpCkBAIC02NTQsMjUgKzY2NiwzMyBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2FwcGVuZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBQeU9iamVjdCogZWxlbWVudDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5hcHBlbmQKIAotICAgIGlmIChlbGVtZW50X2FkZF9zdWJlbGVtZW50KHNlbGYsIGVsZW1lbnQpIDwgMCkKKyAgICBzdWJlbGVtZW50OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZFbGVtZW50X1R5cGUnKQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRhODg0YjdjZjIyOTVmNCBpbnB1dD0zZWQ2NDhiZWI1YmZhMjJhXSovCit7CisgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoc2VsZiwgc3ViZWxlbWVudCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NsZWFybWV0aG9kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmNsZWFyIikpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuY2xlYXIKIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiY2Q3YTUxZjk0Y2ZmZjYgaW5wdXQ9M2M3MTlmZjk0YmY0NWRkNl0qLworewogICAgIGRlYWxsb2NfZXh0cmEoc2VsZik7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC02ODYsMTQgKzcwNiwxNyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NvcHkoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaW50IGk7Ci0gICAgRWxlbWVudE9iamVjdCogZWxlbWVudDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Ll9fY29weV9fCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpfX2NvcHlfXyIpKQotICAgICAgICByZXR1cm4gTlVMTDsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYzcwMWViZmY3MjQ3NzgxIGlucHV0PWFkODdhYWViZTk1Njc1YmZdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgRWxlbWVudE9iamVjdCogZWxlbWVudDsKIAogICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGNyZWF0ZV9uZXdfZWxlbWVudCgKICAgICAgICAgc2VsZi0+dGFnLCAoc2VsZi0+ZXh0cmEpID8gc2VsZi0+ZXh0cmEtPmF0dHJpYiA6IFB5X05vbmUpOwpAQCAtNzI1LDEwICs3NDgsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KikgZWxlbWVudDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9kZWVwY29weShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Ll9fZGVlcGNvcHlfXworCisgICAgbWVtbzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDFmMTk4NTFkMTdiZjIzOSBpbnB1dD1kZjI0YzJiNjAyNDMwYjc3XSovCiB7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogICAgIEVsZW1lbnRPYmplY3QqIGVsZW1lbnQ7CiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogYXR0cmliOwpAQCAtNzM2LDEwICs3NjgsNiBAQAogICAgIFB5T2JqZWN0KiB0YWlsOwogICAgIFB5T2JqZWN0KiBpZDsKIAotICAgIFB5T2JqZWN0KiBtZW1vOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCAmbWVtbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgdGFnID0gZGVlcGNvcHkoc2VsZi0+dGFnLCBtZW1vKTsKICAgICBpZiAoIXRhZykKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04MTAsMTcgKzgzOCwyMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X3NpemVvZihQeU9iamVjdCogbXlzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Ll9fc2l6ZW9mX18gLT4gUHlfc3NpemVfdAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90CitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjczODY3NzIxMDA4MDAwIGlucHV0PTcwZjRiMzIzZDU1YTE3YzFdKi8KIHsKLSAgICBFbGVtZW50T2JqZWN0ICpzZWxmID0gKEVsZW1lbnRPYmplY3QqKW15c2VsZjsKICAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IHNpemVvZihFbGVtZW50T2JqZWN0KTsKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbGVtZW50T2JqZWN0RXh0cmEpOwogICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pCiAgICAgICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKFB5T2JqZWN0KikgKiBzZWxmLT5leHRyYS0+YWxsb2NhdGVkOwogICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogZGljdCBrZXlzIGZvciBnZXRzdGF0ZS9zZXRzdGF0ZS4gKi8KQEAgLTgzNiwxMCArODY5LDE2IEBACiAgKiBhbnkgdW5uZWNlc3Nhcnkgc3RydWN0dXJlcyB0aGVyZTsgYW5kIChiKSBpdCBidXlzIGNvbXBhdGliaWxpdHkgd2l0aCAzLjIKICAqIHBpY2tsZXMuICBTZWUgaXNzdWUgIzE2MDc2LgogICovCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX2dldHN0YXRlX18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZWxlbWVudF9nZXRzdGF0ZShFbGVtZW50T2JqZWN0ICpzZWxmKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNzI3OWFlZWI2YmI1YjA0IGlucHV0PWYwZDE2ZDdlYzJmN2FkYzFdKi8KIHsKLSAgICBpbnQgaSwgbm9hdHRyaWI7CisgICAgUHlfc3NpemVfdCBpLCBub2F0dHJpYjsKICAgICBQeU9iamVjdCAqaW5zdGFuY2VkaWN0ID0gTlVMTCwgKmNoaWxkcmVuOwogCiAgICAgLyogQnVpbGQgYSBsaXN0IG9mIGNoaWxkcmVuLiAqLwpAQCAtOTUyLDYgKzk5MSw3IEBACiAvKiBfX3NldHN0YXRlX18gZm9yIEVsZW1lbnQgaW5zdGFuY2UgZnJvbSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgogICogJ3N0YXRlJyBzaG91bGQgYmUgdGhlIGluc3RhbmNlIGRpY3QuCiAgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIGVsZW1lbnRfc2V0c3RhdGVfZnJvbV9QeXRob24oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQogewpAQCAtOTc3LDggKzEwMTcsMTcgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX3NldHN0YXRlX18KKworICAgIHN0YXRlOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVsZW1lbnRfc2V0c3RhdGUoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYTI4YmYzNDkxYjFmNzVlIGlucHV0PWFhZjgwYWJlYTdjMWUzYjldKi8KIHsKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KHN0YXRlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTAzMiwyMSArMTA4MSwyNiBAQAogICAgIHJldHVybiAxOyAvKiB1bmtub3duIHR5cGU7IG1pZ2h0IGJlIHBhdGggZXhwcmVzc2lvbiAqLwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2V4dGVuZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmV4dGVuZAorCisgICAgZWxlbWVudHM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZXh0ZW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICplbGVtZW50cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNmU2N2ZjMmZmNTI5MTkxIGlucHV0PTgwN2JjNGYzMWM2OWY3YzBdKi8KIHsKICAgICBQeU9iamVjdCogc2VxOwogICAgIFB5X3NzaXplX3QgaTsKIAotICAgIFB5T2JqZWN0KiBzZXFfaW47Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmV4dGVuZCIsICZzZXFfaW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlcSA9IFB5U2VxdWVuY2VfRmFzdChzZXFfaW4sICIiKTsKKyAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3QoZWxlbWVudHMsICIiKTsKICAgICBpZiAoIXNlcSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoCiAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiZXhwZWN0ZWQgc2VxdWVuY2UsIG5vdCBcIiUuMjAwc1wiIiwgUHlfVFlQRShzZXFfaW4pLT50cF9uYW1lCisgICAgICAgICAgICAiZXhwZWN0ZWQgc2VxdWVuY2UsIG5vdCBcIiUuMjAwc1wiIiwgUHlfVFlQRShlbGVtZW50cyktPnRwX25hbWUKICAgICAgICAgICAgICk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNzcsMjMgKzExMzEsMjYgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmZpbmQKKworICAgIHBhdGg6IG9iamVjdAorICAgIG5hbWVzcGFjZXM6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQxYjQzZjBmMGJlY2FmYWUgaW5wdXQ9MzU5YjY5ODVmNjQ4OWQyZV0qLwogewotICAgIGludCBpOwotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisgICAgUHlfc3NpemVfdCBpOwogICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CisgICAgaWYgKGNoZWNrcGF0aChwYXRoKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZCk7CiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAotICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZCwgIk9PTyIsIHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAgICAgfQogCkBAIC0xMTA2LDcgKzExNjMsNyBAQAogICAgICAgICBpZiAoIUVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCgoRWxlbWVudE9iamVjdCopaXRlbSktPnRhZywgdGFnLCBQeV9FUSk7CisgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCgoRWxlbWVudE9iamVjdCopaXRlbSktPnRhZywgcGF0aCwgUHlfRVEpOwogICAgICAgICBpZiAocmMgPiAwKQogICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKQEAgLTExMTcsMjQgKzExNzQsMjggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5maW5kdGV4dAorCisgICAgcGF0aDogb2JqZWN0CisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgIG5hbWVzcGFjZXM6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzYjNiYTQ1MzVkMzA4ZDIgaW5wdXQ9YjUzYTg1YWE1YWEyYTkxNl0qLwogewotICAgIGludCBpOwotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgX1B5X0lERU5USUZJRVIoZmluZHRleHQpOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCAwfTsKICAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POmZpbmR0ZXh0Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKKyAgICBpZiAoY2hlY2twYXRoKHBhdGgpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCi0gICAgICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kdGV4dCwgIk9PT08iLCBzZWxmLCB0YWcsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKKyAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmR0ZXh0LCAiT09PTyIsIHNlbGYsIHBhdGgsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CkBAIC0xMTQ4LDcgKzEyMDksNyBAQAogICAgICAgICBpZiAoIUVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0tPnRhZywgdGFnLCBQeV9FUSk7CisgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0tPnRhZywgcGF0aCwgUHlfRVEpOwogICAgICAgICBpZiAocmMgPiAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoaXRlbSk7CiAgICAgICAgICAgICBpZiAodGV4dCA9PSBQeV9Ob25lKSB7CkBAIC0xMTY4LDE5ICsxMjI5LDIzIEBACiAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QqIG91dDsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OwotICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuZmluZGFsbAogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kYWxsIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcGF0aDogb2JqZWN0CisgICAgbmFtZXNwYWNlczogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWEwYmQ5ZjU1NDFiNzExZCBpbnB1dD00ZDllNjUwNWE2Mzg1NTBjXSovCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0KiBvdXQ7CisgICAgUHlPYmplY3QqIHRhZyA9IHBhdGg7CisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7CiAKICAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKGZpbmRhbGwpOwpAQCAtMTIxNCwzNiArMTI3OSw0MSBAQAogICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIF9QeV9JREVOVElGSUVSKGl0ZXJmaW5kKTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OwotICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuaXRlcmZpbmQKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86aXRlcmZpbmQiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJm5hbWVzcGFjZXMpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBwYXRoOiBvYmplY3QKKyAgICBuYW1lc3BhY2VzOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjZGQ1NmQ2M2IxOWQ0MGYgaW5wdXQ9YWJiOTc0ZTM1MGZiNjVjN10qLworeworICAgIFB5T2JqZWN0KiB0YWcgPSBwYXRoOworICAgIF9QeV9JREVOVElGSUVSKGl0ZXJmaW5kKTsKKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAogICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9pdGVyZmluZCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcyk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dkcykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmdldAorCisgICAga2V5OiBvYmplY3QKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjNjNjE0MTQyNTk1ZDc1IGlucHV0PWVlMTUzYmJmOGNkYjI0NmVdKi8KIHsKICAgICBQeU9iamVjdCogdmFsdWU7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OwotCi0gICAgUHlPYmplY3QqIGtleTsKLSAgICBQeU9iamVjdCogZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmdldCIsIGt3bGlzdCwgJmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSB8fCBzZWxmLT5leHRyYS0+YXR0cmliID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gZGVmYXVsdF92YWx1ZTsKQEAgLTEyNTcsMTcgKzEzMjcsMjAgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0Y2hpbGRyZW4oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5nZXRjaGlsZHJlbgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTUwZmZlMTE4NjM3YjE0ZiBpbnB1dD0wZjc1NGRmZGVkMTUwZDVmXSovCiB7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0KiBsaXN0OwogCiAgICAgLyogRklYTUU6IHJlcG9ydCBhcyBkZXByZWNhdGVkPyAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0Y2hpbGRyZW4iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIXNlbGYtPmV4dHJhKQogICAgICAgICByZXR1cm4gUHlMaXN0X05ldygwKTsKIApAQCAtMTI4OSwyNSArMTM2MiwzMCBAQAogY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KTsKIAogCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pdGVyCisKKyAgICB0YWc6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmNDlmOWE4NjI5NDFjYzUgaW5wdXQ9Nzc0ZDViMTJlNTczYWVkZF0qLwogewotICAgIFB5T2JqZWN0KiB0YWcgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsidGFnIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86aXRlciIsIGt3bGlzdCwgJnRhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCB0YWcsIDApOwogfQogCiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcnRleHQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlcnRleHQiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pdGVydGV4dAogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZhMzRiMmZiY2I2NWRmNiBpbnB1dD1hZjhmMGU0MmNiMjM5Yzg5XSovCit7CiAgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCBQeV9Ob25lLCAxKTsKIH0KIApAQCAtMTMyOSwxNiArMTQwNywyMSBAQAogICAgIHJldHVybiBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baW5kZXhdOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2luc2VydChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpbnQgaTsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lmluc2VydAogCi0gICAgaW50IGluZGV4OwotICAgIFB5T2JqZWN0KiBlbGVtZW50OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8hOmluc2VydCIsICZpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJkVsZW1lbnRfVHlwZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbmRleDogUHlfc3NpemVfdAorICAgIHN1YmVsZW1lbnQ6IG9iamVjdChzdWJjbGFzc19vZj0nJkVsZW1lbnRfVHlwZScpCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTkwYWRmZWY0ZDQyNGMwYiBpbnB1dD1jZDZmYmZjZGFiNTJkN2E4XSovCit7CisgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewogICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKQEAgLTEzNTksMzIgKzE0NDIsMzggQEAKICAgICBmb3IgKGkgPSBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpID4gaW5kZXg7IGktLSkKICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldID0gc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ktMV07CiAKLSAgICBQeV9JTkNSRUYoZWxlbWVudCk7Ci0gICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2luZGV4XSA9IGVsZW1lbnQ7CisgICAgUHlfSU5DUkVGKHN1YmVsZW1lbnQpOworICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpbmRleF0gPSBzdWJlbGVtZW50OwogCiAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCsrOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlbXMoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlbXMiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pdGVtcwogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmRiMmM3NzhjZTNmNWE0ZCBpbnB1dD1hZGJlMDlhYWVhNDc0NDQ3XSovCit7CiAgICAgaWYgKCFzZWxmLT5leHRyYSB8fCBzZWxmLT5leHRyYS0+YXR0cmliID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBQeUxpc3RfTmV3KDApOwogCiAgICAgcmV0dXJuIFB5RGljdF9JdGVtcyhzZWxmLT5leHRyYS0+YXR0cmliKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9rZXlzKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmtleXMiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5rZXlzCiAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjNWJmYWJiZjIwZWViM2MgaW5wdXQ9ZjAyY2FmNWI0OTZiNWIwYl0qLworewogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gUHlMaXN0X05ldygwKTsKIApAQCAtMTQwMCwxNiArMTQ4OSwyMiBAQAogICAgIHJldHVybiBzZWxmLT5leHRyYS0+bGVuZ3RoOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X21ha2VlbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQubWFrZWVsZW1lbnQKKworICAgIHRhZzogb2JqZWN0CisgICAgYXR0cmliOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJpYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MTA5ODMyZDViYjc4OWVmIGlucHV0PTk0ODBkMWQyZTNlNjgyMzVdKi8KIHsKICAgICBQeU9iamVjdCogZWxlbTsKIAotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIGF0dHJpYjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POm1ha2VlbGVtZW50IiwgJnRhZywgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDIxLDE2ICsxNTE2LDIxIEBACiAgICAgcmV0dXJuIGVsZW07CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGludCBpOwotICAgIGludCByYzsKLSAgICBQeU9iamVjdCogZWxlbWVudDsKLSAgICBQeU9iamVjdCogZm91bmQ7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5yZW1vdmUKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6cmVtb3ZlIiwgJkVsZW1lbnRfVHlwZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdWJlbGVtZW50OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZFbGVtZW50X1R5cGUnKQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzhmZTZjMDdkNmQ4N2QxZiBpbnB1dD1kNTJmYzI4ZWRlZGMwYmQ4XSovCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCByYzsKKyAgICBQeU9iamVjdCAqZm91bmQ7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CiAgICAgICAgIC8qIGVsZW1lbnQgaGFzIG5vIGNoaWxkcmVuLCBzbyByYWlzZSBleGNlcHRpb24gKi8KQEAgLTE0NDIsOSArMTU0Miw5IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldID09IGVsZW1lbnQpCisgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0gPT0gc3ViZWxlbWVudCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0sIGVsZW1lbnQsIFB5X0VRKTsKKyAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldLCBzdWJlbGVtZW50LCBQeV9FUSk7CiAgICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKHJjIDwgMCkKQEAgLTE0NTIsNyArMTU1Miw3IEBACiAgICAgfQogCiAgICAgaWYgKGkgPj0gc2VsZi0+ZXh0cmEtPmxlbmd0aCkgewotICAgICAgICAvKiBlbGVtZW50IGlzIG5vdCBpbiBjaGlsZHJlbiwgc28gcmFpc2UgZXhjZXB0aW9uICovCisgICAgICAgIC8qIHN1YmVsZW1lbnQgaXMgbm90IGluIGNoaWxkcmVuLCBzbyByYWlzZSBleGNlcHRpb24gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICJsaXN0LnJlbW92ZSh4KTogeCBub3QgaW4gbGlzdCIKQEAgLTE0NzksMTYgKzE1NzksMjIgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCBhdCAlcD4iLCBzZWxmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9zZXQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5zZXQKKworICAgIGtleTogb2JqZWN0CisgICAgdmFsdWU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYjkzODgwNmJlM2M1NjU2IGlucHV0PTFlZmU5MGY3ZDgyYjNmZTldKi8KIHsKICAgICBQeU9iamVjdCogYXR0cmliOwogCi0gICAgUHlPYmplY3QqIGtleTsKLSAgICBQeU9iamVjdCogdmFsdWU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpzZXQiLCAma2V5LCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE1MDgsNyArMTYxNCw3IEBACiBlbGVtZW50X3NldGl0ZW0oUHlPYmplY3QqIHNlbGZfLCBQeV9zc2l6ZV90IGluZGV4LCBQeU9iamVjdCogaXRlbSkKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QqIG9sZDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgaW5kZXggPCAwIHx8IGluZGV4ID49IHNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKQEAgLTE3NjksNDMgKzE4NzUsNiBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIGVsZW1lbnRfbWV0aG9kc1tdID0gewotCi0gICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jbGVhcm1ldGhvZCwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0gICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kYWxsLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLQotICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2FwcGVuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV4dGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9leHRlbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaW5zZXJ0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3JlbW92ZSwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7Iml0ZXJ0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJ0ZXh0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7ImdldGNoaWxkcmVuIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldGNoaWxkcmVuLCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgeyJpdGVtcyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVtcywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImtleXMiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfa2V5cywgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsibWFrZWVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfbWFrZWVsZW1lbnQsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NvcHksIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZGVlcGNvcHksIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfX3NpemVvZl9fIiwgZWxlbWVudF9zaXplb2YsIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbillbGVtZW50X2dldHN0YXRlLCBNRVRIX05PQVJHU30sCi0gICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZWxlbWVudF9zZXRzdGF0ZSwgTUVUSF9PfSwKLQotICAgIHtOVUxMLCBOVUxMfQotfTsKLQogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9nZXRhdHRybyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaikKIHsKQEAgLTE5MDIsNTQgKzE5NzEsNiBAQAogICAgIDAsCiB9OwogCi1zdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBlbGVtZW50X2FzX21hcHBpbmcgPSB7Ci0gICAgKGxlbmZ1bmMpIGVsZW1lbnRfbGVuZ3RoLAotICAgIChiaW5hcnlmdW5jKSBlbGVtZW50X3N1YnNjciwKLSAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAotfTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAotICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJmVsZW1lbnRfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIChpbnF1aXJ5KWVsZW1lbnRfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihFbGVtZW50T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWVsZW1lbnRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgZWxlbWVudF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwotfTsKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRWxlbWVudCBpdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBFbGVtZW50SXRlck9iamVjdCByZXByZXNlbnRzIHRoZSBpdGVyYXRpb24gc3RhdGUgb3ZlciBhbiBYTUwgZWxlbWVudCBpbgpAQCAtMjMxMiwyMyArMjMzMywyNCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKil0OwogfQogCi1zdGF0aWMgaW50Ci10cmVlYnVpbGRlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbGVtZW50X2ZhY3RvcnkiLCAwfTsKLSAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKLSAgICBUcmVlQnVpbGRlck9iamVjdCAqc2VsZl90YiA9IChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGY7Ci0gICAgUHlPYmplY3QgKnRtcDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5fX2luaXRfXwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOlRyZWVCdWlsZGVyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgZWxlbWVudF9mYWN0b3J5OiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxY2ZhNzU1ODk3MGVlOTYgaW5wdXQ9MWI0MjRlZWVmYzM1MjQ5Y10qLworeworICAgIFB5T2JqZWN0ICp0bXA7CiAKICAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CiAgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOwotICAgICAgICB0bXAgPSBzZWxmX3RiLT5lbGVtZW50X2ZhY3Rvcnk7Ci0gICAgICAgIHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKKyAgICAgICAgdG1wID0gc2VsZi0+ZWxlbWVudF9mYWN0b3J5OworICAgICAgICBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3Rvcnk7CiAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICB9CiAKQEAgLTI2NDgsMjMgKzI2NzAsMzMgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBtZXRob2RzIChpbiBhbHBoYWJldGljYWwgb3JkZXIpICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2RhdGEoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBkYXRhOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpkYXRhIiwgJmRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5kYXRhCiAKKyAgICBkYXRhOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTE0NGM3MTAwNzk1YmIyIGlucHV0PWEwNTQwYzUzMmIyODRkMjldKi8KK3sKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfaGFuZGxlX2RhdGEoc2VsZiwgZGF0YSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2VuZChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZW5kIiwgJnRhZykpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLmVuZAogCisgICAgdGFnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmQoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWE5ODcyN2NjNjkxY2Q5ZCBpbnB1dD0yMmRjMzY3NDIzNmY1NzQ1XSovCit7CiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9lbmQoc2VsZiwgdGFnKTsKIH0KIApAQCAtMjY4NCw3NiArMjcxNiwzNSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2Nsb3NlKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbG9zZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5jbG9zZQogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDQxZmVlMzIwMmY2MWVlIGlucHV0PWY3YzljNjVkYzcxOGRlMTRdKi8KK3sKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfZG9uZShzZWxmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXJfc3RhcnQoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLnN0YXJ0CisKKyAgICB0YWc6IG9iamVjdAorICAgIGF0dHJzOiBvYmplY3QgPSBOb25lCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2U5ZGMyODYxMzQ5NDExIGlucHV0PTk1ZmMxNzU4ZGQwNDJjNjVdKi8KIHsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBhdHRyaWIgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOnN0YXJ0IiwgJnRhZywgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJpYik7CisgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJzKTsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRhdGEiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2RhdGEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfc3RhcnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2VuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyIiwgc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgMCwKLSAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpdHJlZWJ1aWxkZXJfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl0cmVlYnVpbGRlcl9nY190cmF2ZXJzZSwgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSl0cmVlYnVpbGRlcl9nY19jbGVhciwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICB0cmVlYnVpbGRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYyl0cmVlYnVpbGRlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIHRyZWVidWlsZGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLX07Ci0KIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiB0aGUgZXhwYXQgaW50ZXJmYWNlICovCiAKQEAgLTI3OTEsNyArMjc4MiwxMSBAQAogCiB9IFhNTFBhcnNlck9iamVjdDsKIAotc3RhdGljIFB5T2JqZWN0KiB4bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKK3N0YXRpYyBQeU9iamVjdCoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnB1YmlkLCBQeU9iamVjdCAqc3lzdGVtKTsKIAogLyogaGVscGVycyAqLwogCkBAIC0yODY5LDEyICsyODY0LDEzIEBACiAgKiBtZXNzYWdlIHN0cmluZyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGVycm9yX2NvZGUuCiAqLwogc3RhdGljIHZvaWQKLWV4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgY2hhciAqbWVzc2FnZSkKK2V4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBQeV9zc2l6ZV90IGxpbmUsIFB5X3NzaXplX3QgY29sdW1uLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgUHlPYmplY3QgKmVycm1zZywgKmVycm9yLCAqcG9zaXRpb24sICpjb2RlOwogICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCi0gICAgZXJybXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVkLCBjb2x1bW4gJWQiLAorICAgIGVycm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlemQsIGNvbHVtbiAlemQiLAogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPyBtZXNzYWdlIDogRVhQQVQoRXJyb3JTdHJpbmcpKGVycm9yX2NvZGUpLAogICAgICAgICAgICAgICAgIGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKGVycm1zZyA9PSBOVUxMKQpAQCAtMjg5OCw3ICsyODk0LDcgQEAKICAgICB9CiAgICAgUHlfREVDUkVGKGNvZGUpOwogCi0gICAgcG9zaXRpb24gPSBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgbGluZSwgY29sdW1uKTsKKyAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihubikiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwMCw4ICszMTk2LDkgQEAKICAgICAgICAgICAgICEoUHlDRnVuY3Rpb25fQ2hlY2socGFyc2VyX2RvY3R5cGUpICYmCiAgICAgICAgICAgICAgIFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKHBhcnNlcl9kb2N0eXBlKSA9PSBzZWxmX3B5b2JqICYmCiAgICAgICAgICAgICAgIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihwYXJzZXJfZG9jdHlwZSkgPT0KLSAgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSkpIHsKLSAgICAgICAgICAgIHJlcyA9IHhtbHBhcnNlcl9kb2N0eXBlKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKHNlbGYsIGRvY3R5cGVfbmFtZV9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJpZF9vYmosIHN5c2lkX29iaik7CiAgICAgICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFyOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0zMjYwLDMzICszMjU3LDM0IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX19pbml0X18KKworICAgIGh0bWw6IG9iamVjdCA9IE5VTEwKKyAgICB0YXJnZXQ6IG9iamVjdCA9IE5VTEwKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLXhtbHBhcnNlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaHRtbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFyZ2V0LCBjb25zdCBjaGFyICplbmNvZGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNmExNmM2M2RkYTU0NDQxIGlucHV0PTE1NWJjNTY5NWJhYWZmZmRdKi8KIHsKLSAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGZfeHAgPSAoWE1MUGFyc2VyT2JqZWN0ICopc2VsZjsKLSAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTCwgKmh0bWwgPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgMH07CisgICAgc2VsZi0+ZW50aXR5ID0gUHlEaWN0X05ldygpOworICAgIGlmICghc2VsZi0+ZW50aXR5KQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PejpYTUxQYXJzZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpIHsKKyAgICBzZWxmLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGYtPm5hbWVzKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBzZWxmX3hwLT5lbnRpdHkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFzZWxmX3hwLT5lbnRpdHkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHNlbGZfeHAtPm5hbWVzID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZl94cC0+bmFtZXMpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHNlbGZfeHAtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZFeHBhdE1lbW9yeUhhbmRsZXIsICJ9Iik7Ci0gICAgaWYgKCFzZWxmX3hwLT5wYXJzZXIpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOworICAgIHNlbGYtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZFeHBhdE1lbW9yeUhhbmRsZXIsICJ9Iik7CisgICAgaWYgKCFzZWxmLT5wYXJzZXIpIHsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZi0+ZW50aXR5KTsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZXMpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzI5Niw1NSArMzI5NCw1NSBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygmVHJlZUJ1aWxkZXJfVHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghdGFyZ2V0KSB7Ci0gICAgICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5lbnRpdHkpOwotICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOwotICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZl94cC0+cGFyc2VyKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5uYW1lcyk7CisgICAgICAgICAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIHNlbGZfeHAtPnRhcmdldCA9IHRhcmdldDsKKyAgICBzZWxmLT50YXJnZXQgPSB0YXJnZXQ7CiAKLSAgICBzZWxmX3hwLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOwotICAgIHNlbGZfeHAtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRvY3R5cGUiKTsKKyAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7CisgICAgc2VsZi0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKKyAgICBzZWxmLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKKyAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOworICAgIHNlbGYtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKKyAgICBzZWxmLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7CisgICAgc2VsZi0+aGFuZGxlX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRvY3R5cGUiKTsKIAogICAgIFB5RXJyX0NsZWFyKCk7CiAKICAgICAvKiBjb25maWd1cmUgcGFyc2VyICovCi0gICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGZfeHAtPnBhcnNlciwgc2VsZl94cCk7CisgICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGYtPnBhcnNlciwgc2VsZik7CiAgICAgRVhQQVQoU2V0RWxlbWVudEhhbmRsZXIpKAotICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgKFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyKSBleHBhdF9zdGFydF9oYW5kbGVyLAogICAgICAgICAoWE1MX0VuZEVsZW1lbnRIYW5kbGVyKSBleHBhdF9lbmRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldERlZmF1bHRIYW5kbGVyRXhwYW5kKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfRGVmYXVsdEhhbmRsZXIpIGV4cGF0X2RlZmF1bHRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldENoYXJhY3RlckRhdGFIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIpIGV4cGF0X2RhdGFfaGFuZGxlcgogICAgICAgICApOwotICAgIGlmIChzZWxmX3hwLT5oYW5kbGVfY29tbWVudCkKKyAgICBpZiAoc2VsZi0+aGFuZGxlX2NvbW1lbnQpCiAgICAgICAgIEVYUEFUKFNldENvbW1lbnRIYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfQ29tbWVudEhhbmRsZXIpIGV4cGF0X2NvbW1lbnRfaGFuZGxlcgogICAgICAgICAgICAgKTsKLSAgICBpZiAoc2VsZl94cC0+aGFuZGxlX3BpKQorICAgIGlmIChzZWxmLT5oYW5kbGVfcGkpCiAgICAgICAgIEVYUEFUKFNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIpKAotICAgICAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAgICAgKFhNTF9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSBleHBhdF9waV9oYW5kbGVyCiAgICAgICAgICAgICApOwogICAgIEVYUEFUKFNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIGV4cGF0X3N0YXJ0X2RvY3R5cGVfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldFVua25vd25FbmNvZGluZ0hhbmRsZXIpKAotICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgRVhQQVQoRGVmYXVsdFVua25vd25FbmNvZGluZ0hhbmRsZXIpLCBOVUxMCiAgICAgICAgICk7CiAKQEAgLTM0MjAsMTUgKzM0MTgsMTggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX2Nsb3NlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLmNsb3NlCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY4ZDM3NWRkMjNiYzdmYiBpbnB1dD1jYTc5MDljYTc4YzNhYmZlXSovCiB7CiAgICAgLyogZW5kIGZlZWRpbmcgZGF0YSB0byBwYXJzZXIgKi8KIAogICAgIFB5T2JqZWN0KiByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Y2xvc2UiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXMgPSBleHBhdF9wYXJzZShzZWxmLCAiIiwgMCwgMSk7CiAgICAgaWYgKCFyZXMpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzQ0NiwxNSArMzQ0NywyNCBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX2ZlZWQoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJnKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5mZWVkCisKKyAgICBkYXRhOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZChYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0MmI2YTc4ZWVjNzQ0NmQgaW5wdXQ9ZmUyMzFiNmI4ZGUzY2UxZl0qLwogewogICAgIC8qIGZlZWQgZGF0YSB0byBwYXJzZXIgKi8KIAotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZGF0YSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBkYXRhX2xlbjsKLSAgICAgICAgY29uc3QgY2hhciAqZGF0YSA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmRhdGFfbGVuKTsKLSAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgY29uc3QgY2hhciAqZGF0YV9wdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShkYXRhLCAmZGF0YV9sZW4pOworICAgICAgICBpZiAoZGF0YV9wdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoZGF0YV9sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInNpemUgZG9lcyBub3QgZml0IGluIGFuIGludCIpOwpAQCAtMzQ2MiwxMiArMzQ3MiwxMiBAQAogICAgICAgICB9CiAgICAgICAgIC8qIEV4cGxpY2l0bHkgc2V0IFVURi04IGVuY29kaW5nLiBSZXR1cm4gY29kZSBpZ25vcmVkLiAqLwogICAgICAgICAodm9pZClFWFBBVChTZXRFbmNvZGluZykoc2VsZi0+cGFyc2VyLCAidXRmLTgiKTsKLSAgICAgICAgcmV0dXJuIGV4cGF0X3BhcnNlKHNlbGYsIGRhdGEsIChpbnQpZGF0YV9sZW4sIDApOworICAgICAgICByZXR1cm4gZXhwYXRfcGFyc2Uoc2VsZiwgZGF0YV9wdHIsIChpbnQpZGF0YV9sZW4sIDApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmlldywgUHlCVUZfU0lNUExFKSA8IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGF0YSwgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICh2aWV3LmxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwpAQCAtMzQ4MCw4ICszNDkwLDE3IEBACiAgICAgfQogfQogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfcGFyc2Vfd2hvbGUoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX3BhcnNlX3dob2xlCisKKyAgICBmaWxlOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3BhcnNlX3dob2xlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Zjc5NzE5N2JiODE4ZGRhMyBpbnB1dD0xOWVjYzg5M2I2ZjNlNzUyXSovCiB7CiAgICAgLyogKGludGVybmFsKSBwYXJzZSB0aGUgd2hvbGUgaW5wdXQsIHVudGlsIGVuZCBvZiBzdHJlYW0gKi8KICAgICBQeU9iamVjdCogcmVhZGVyOwpAQCAtMzQ4OSwxMSArMzUwOCw3IEBACiAgICAgUHlPYmplY3QqIHRlbXA7CiAgICAgUHlPYmplY3QqIHJlczsKIAotICAgIFB5T2JqZWN0KiBmaWxlb2JqOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfcGFyc2UiLCAmZmlsZW9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVhZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlb2JqLCAicmVhZCIpOworICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZSwgInJlYWQiKTsKICAgICBpZiAoIXJlYWRlcikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM1MjgsOCArMzU0MywxNCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShidWZmZXIpID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVhZGVyKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic2l6ZSBkb2VzIG5vdCBmaXQgaW4gYW4gaW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICByZXMgPSBleHBhdF9wYXJzZSgKLSAgICAgICAgICAgIHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSwgMAorICAgICAgICAgICAgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgKGludClQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlciksIDAKICAgICAgICAgICAgICk7CiAKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CkBAIC0zNTU0LDggKzM1NzUsMjAgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5kb2N0eXBlCisKKyAgICBuYW1lOiBvYmplY3QKKyAgICBwdWJpZDogb2JqZWN0CisgICAgc3lzdGVtOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHViaWQsIFB5T2JqZWN0ICpzeXN0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTBmYjUwYzJhZmRlZDg4ZCBpbnB1dD04NDA1MDI3NmNjYTA0NWUxXSovCiB7CiAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUiCkBAIC0zNTY2LDE5ICszNTk5LDI1IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX3NldGV2ZW50cworCisgICAgZXZlbnRzX3F1ZXVlOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxpc3RfVHlwZScpCisgICAgZXZlbnRzX3RvX3JlcG9ydDogb2JqZWN0ID0gTm9uZQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9NTlkYjk3NDI5MTBjNjE3NF0qLwogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAgICAgUHlfc3NpemVfdCBpLCBzZXFsZW47CiAgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnRhcmdldDsKLQotICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWU7Ci0gICAgUHlPYmplY3QgKmV2ZW50c190b19yZXBvcnQgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpldmVudHNfc2VxOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwgICZQeUxpc3RfVHlwZSwgJmV2ZW50c19xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50c190b19yZXBvcnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM2NjIsMTUgKzM3MDEsNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlNZXRob2REZWYgeG1scGFyc2VyX21ldGhvZHNbXSA9IHsKLSAgICB7ImZlZWQiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9mZWVkLCBNRVRIX099LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9wYXJzZV93aG9sZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3BhcnNlX3dob2xlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiX3NldGV2ZW50cyIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImRvY3R5cGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9kb2N0eXBlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQogc3RhdGljIFB5T2JqZWN0KgogeG1scGFyc2VyX2dldGF0dHJvKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CkBAIC0zNjk1LDYgKzM3MjUsMTUyIEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopIHNlbGYsIG5hbWVvYmopOwogfQogCisjaW5jbHVkZSAiY2xpbmljL19lbGVtZW50dHJlZS5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiBlbGVtZW50X21ldGhvZHNbXSA9IHsKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0NMRUFSX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfR0VUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX1NFVF9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklOREFMTF9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0FQUEVORF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9FWFRFTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSU5TRVJUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX1JFTU9WRV9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUlRFWFRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGCisKKyAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfX30sCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfR0VUQ0hJTERSRU5fTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVNU19NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9LRVlTX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfTUFLRUVMRU1FTlRfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0NPUFlfX19NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0RFRVBDT1BZX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19TSVpFT0ZfX19NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0dFVFNUQVRFX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19TRVRTVEFURV9fX01FVEhPRERFRgorCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBlbGVtZW50X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpIGVsZW1lbnRfbGVuZ3RoLAorICAgIChiaW5hcnlmdW5jKSBlbGVtZW50X3N1YnNjciwKKyAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAorICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJmVsZW1lbnRfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWVsZW1lbnRfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihFbGVtZW50T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKWVsZW1lbnRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZWxlbWVudF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKKyAgICBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfREFUQV9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfU1RBUlRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0VORF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfQ0xPU0VfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRyZWVCdWlsZGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5UcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpdHJlZWJ1aWxkZXJfZ2NfdHJhdmVyc2UsICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpdHJlZWJ1aWxkZXJfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgdHJlZWJ1aWxkZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X18sICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB0cmVlYnVpbGRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgeG1scGFyc2VyX21ldGhvZHNbXSA9IHsKKyAgICBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX0ZFRURfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9DTE9TRV9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX19QQVJTRV9XSE9MRV9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX19TRVRFVkVOVFNfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9ET0NUWVBFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlhNTFBhcnNlciIsIHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAwLApAQCAtMzczMSw3ICszOTA3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKXhtbHBhcnNlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X18sICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIHhtbHBhcnNlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KQEAgLTM3OTgsNyArMzk3NCw3IEBACiAgICAgaWYgKGV4cGF0X2NhcGkpIHsKICAgICAgICAgLyogY2hlY2sgdGhhdCBpdCdzIHVzYWJsZSAqLwogICAgICAgICBpZiAoc3RyY21wKGV4cGF0X2NhcGktPm1hZ2ljLCBQeUV4cGF0X0NBUElfTUFHSUMpICE9IDAgfHwKLSAgICAgICAgICAgIGV4cGF0X2NhcGktPnNpemUgPCBzaXplb2Yoc3RydWN0IFB5RXhwYXRfQ0FQSSkgfHwKKyAgICAgICAgICAgIChzaXplX3QpZXhwYXRfY2FwaS0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgUHlFeHBhdF9DQVBJKSB8fAogICAgICAgICAgICAgZXhwYXRfY2FwaS0+TUFKT1JfVkVSU0lPTiAhPSBYTUxfTUFKT1JfVkVSU0lPTiB8fAogICAgICAgICAgICAgZXhwYXRfY2FwaS0+TUlOT1JfVkVSU0lPTiAhPSBYTUxfTUlOT1JfVkVSU0lPTiB8fAogICAgICAgICAgICAgZXhwYXRfY2FwaS0+TUlDUk9fVkVSU0lPTiAhPSBYTUxfTUlDUk9fVkVSU0lPTikgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwppbmRleCAyNGRhNjc3Li5kYzY0Y2ZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwpAQCAtMjUsNyArMjUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBhcnRpYWxfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqZnVuYzsKKyAgICBQeU9iamVjdCAqZnVuYywgKnBhcmdzLCAqbmFyZ3MsICpwa3c7CiAgICAgcGFydGlhbG9iamVjdCAqcHRvOwogCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPCAxKSB7CkBAIC0zNCw3ICszNCwxNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBwYXJncyA9IHBrdyA9IFB5X05vbmU7CiAgICAgZnVuYyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgaWYgKFB5X1RZUEUoZnVuYykgPT0gJnBhcnRpYWxfdHlwZSAmJiB0eXBlID09ICZwYXJ0aWFsX3R5cGUpIHsKKyAgICAgICAgcGFydGlhbG9iamVjdCAqcGFydCA9IChwYXJ0aWFsb2JqZWN0ICopZnVuYzsKKyAgICAgICAgaWYgKHBhcnQtPmRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcGFyZ3MgPSBwYXJ0LT5hcmdzOworICAgICAgICAgICAgcGt3ID0gcGFydC0+a3c7CisgICAgICAgICAgICBmdW5jID0gcGFydC0+Zm47CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgY2FsbGFibGUiKTsKQEAgLTQ4LDE4ICs1Nyw2MyBAQAogCiAgICAgcHRvLT5mbiA9IGZ1bmM7CiAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgIHB0by0+YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgUFlfU1NJWkVfVF9NQVgpOwotICAgIGlmIChwdG8tPmFyZ3MgPT0gTlVMTCkgeworCisgICAgbmFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIFBZX1NTSVpFX1RfTUFYKTsKKyAgICBpZiAobmFyZ3MgPT0gTlVMTCkgeworICAgICAgICBwdG8tPmFyZ3MgPSBOVUxMOwogICAgICAgICBwdG8tPmt3ID0gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHB0byk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBwdG8tPmt3ID0gKGt3ICE9IE5VTEwpID8gUHlEaWN0X0NvcHkoa3cpIDogUHlEaWN0X05ldygpOwotICAgIGlmIChwdG8tPmt3ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHB0byk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChwYXJncyA9PSBQeV9Ob25lIHx8IFB5VHVwbGVfR0VUX1NJWkUocGFyZ3MpID09IDApIHsKKyAgICAgICAgcHRvLT5hcmdzID0gbmFyZ3M7CisgICAgICAgIFB5X0lOQ1JFRihuYXJncyk7CiAgICAgfQorICAgIGVsc2UgaWYgKFB5VHVwbGVfR0VUX1NJWkUobmFyZ3MpID09IDApIHsKKyAgICAgICAgcHRvLT5hcmdzID0gcGFyZ3M7CisgICAgICAgIFB5X0lOQ1JFRihwYXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwdG8tPmFyZ3MgPSBQeVNlcXVlbmNlX0NvbmNhdChwYXJncywgbmFyZ3MpOworICAgICAgICBpZiAocHRvLT5hcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBOVUxMOworICAgICAgICAgICAgUHlfREVDUkVGKHB0byk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYobmFyZ3MpOwogCisgICAgaWYgKGt3ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHBrdyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBwdG8tPmt3ID0gUHlEaWN0X0NvcHkoa3cpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHRvLT5rdyA9IFB5RGljdF9Db3B5KHBrdyk7CisgICAgICAgICAgICBpZiAocHRvLT5rdyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9NZXJnZShwdG8tPmt3LCBrdywgMSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocHRvKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwdG8tPmt3ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwdG8pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChwa3cgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgcHRvLT5rdyA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChwdG8tPmt3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocHRvKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBwa3c7CisgICAgICAgICAgICBQeV9JTkNSRUYocGt3KTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHB0by0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIHB0by0+ZGljdCA9IE5VTEw7CkBAIC01MzYsNiArNTkwLDU1MCBAQAogb2YgdGhlIHNlcXVlbmNlIGluIHRoZSBjYWxjdWxhdGlvbiwgYW5kIHNlcnZlcyBhcyBhIGRlZmF1bHQgd2hlbiB0aGVcblwKIHNlcXVlbmNlIGlzIGVtcHR5LiIpOwogCisvKiBscnVfY2FjaGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIHRoaXMgb2JqZWN0IGlzIHVzZWQgZGVsaW1pdCBhcmdzIGFuZCBrZXl3b3JkcyBpbiB0aGUgY2FjaGUga2V5cyAqLworc3RhdGljIFB5T2JqZWN0ICprd2RfbWFyayA9IE5VTEw7CisKK3N0cnVjdCBscnVfbGlzdF9lbGVtOworc3RydWN0IGxydV9jYWNoZV9vYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IGxydV9saXN0X2VsZW0geworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBzdHJ1Y3QgbHJ1X2xpc3RfZWxlbSAqcHJldiwgKm5leHQ7ICAvKiBib3Jyb3dlZCBsaW5rcyAqLworICAgIFB5T2JqZWN0ICprZXksICpyZXN1bHQ7Cit9IGxydV9saXN0X2VsZW07CisKK3N0YXRpYyB2b2lkCitscnVfbGlzdF9lbGVtX2RlYWxsb2MobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhsaW5rKTsKKyAgICBQeV9YREVDUkVGKGxpbmstPmtleSk7CisgICAgUHlfWERFQ1JFRihsaW5rLT5yZXN1bHQpOworICAgIFB5T2JqZWN0X0dDX0RlbChsaW5rKTsKK30KKworc3RhdGljIGludAorbHJ1X2xpc3RfZWxlbV90cmF2ZXJzZShscnVfbGlzdF9lbGVtICpsaW5rLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChsaW5rLT5rZXkpOworICAgIFB5X1ZJU0lUKGxpbmstPnJlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2xydV9saXN0X2VsZW1fY2xlYXIobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBQeV9DTEVBUihsaW5rLT5rZXkpOworICAgIFB5X0NMRUFSKGxpbmstPnJlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2xpc3RfZWxlbV90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImZ1bmN0b29scy5fbHJ1X2xpc3RfZWxlbSIsICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihscnVfbGlzdF9lbGVtKSwgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWxydV9saXN0X2VsZW1fZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWxydV9saXN0X2VsZW1fdHJhdmVyc2UsICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWxydV9saXN0X2VsZW1fY2xlYXIsICAgICAgIC8qIHRwX2NsZWFyICovCit9OworCisKK3R5cGVkZWYgUHlPYmplY3QgKigqbHJ1X2NhY2hlX3Rlcm5hcnlmdW5jKShzdHJ1Y3QgbHJ1X2NhY2hlX29iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwordHlwZWRlZiBzdHJ1Y3QgbHJ1X2NhY2hlX29iamVjdCB7CisgICAgbHJ1X2xpc3RfZWxlbSByb290OyAgLyogaW5jbHVkZXMgUHlPYmplY3RfSEVBRCAqLworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsKKyAgICBQeU9iamVjdCAqbWF4c2l6ZV9POworICAgIFB5T2JqZWN0ICpmdW5jOworICAgIGxydV9jYWNoZV90ZXJuYXJ5ZnVuYyB3cmFwcGVyOworICAgIFB5T2JqZWN0ICpjYWNoZTsKKyAgICBQeU9iamVjdCAqY2FjaGVfaW5mb190eXBlOworICAgIFB5X3NzaXplX3QgbWlzc2VzLCBoaXRzOworICAgIGludCB0eXBlZDsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBpbnQgZnVsbDsKK30gbHJ1X2NhY2hlX29iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBscnVfY2FjaGVfdHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9tYWtlX2tleShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsIGludCB0eXBlZCkKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqc29ydGVkX2l0ZW1zOworICAgIFB5X3NzaXplX3Qga2V5X3NpemUsIHBvcywga2V5X3BvczsKKworICAgIC8qIHNob3J0IHBhdGgsIGtleSB3aWxsIG1hdGNoIGFyZ3MgYW55d2F5LCB3aGljaCBpcyBhIHR1cGxlICovCisgICAgaWYgKCF0eXBlZCAmJiAha3dkcykgeworICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiBhcmdzOworICAgIH0KKworICAgIGlmIChrd2RzICYmIFB5RGljdF9TaXplKGt3ZHMpID4gMCkgeworICAgICAgICBzb3J0ZWRfaXRlbXMgPSBQeURpY3RfSXRlbXMoa3dkcyk7CisgICAgICAgIGlmICghc29ydGVkX2l0ZW1zKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeUxpc3RfU29ydChzb3J0ZWRfaXRlbXMpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNvcnRlZF9pdGVtcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBzb3J0ZWRfaXRlbXMgPSBOVUxMOworCisgICAga2V5X3NpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIGlmIChzb3J0ZWRfaXRlbXMpCisgICAgICAgIGtleV9zaXplICs9IFB5TGlzdF9HRVRfU0laRShzb3J0ZWRfaXRlbXMpOworICAgIGlmICh0eXBlZCkKKyAgICAgICAga2V5X3NpemUgKj0gMjsKKyAgICBpZiAoc29ydGVkX2l0ZW1zKQorICAgICAgICBrZXlfc2l6ZSsrOworCisgICAga2V5ID0gUHlUdXBsZV9OZXcoa2V5X3NpemUpOworICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAga2V5X3BvcyA9IDA7CisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOyArK3BvcykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgcG9zKTsKKyAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICB9CisgICAgaWYgKHNvcnRlZF9pdGVtcykgeworICAgICAgICBQeV9JTkNSRUYoa3dkX21hcmspOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBrd2RfbWFyayk7CisgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlMaXN0X0dFVF9TSVpFKHNvcnRlZF9pdGVtcyk7ICsrcG9zKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShzb3J0ZWRfaXRlbXMsIHBvcyk7CisgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodHlwZWQpIHsKKyAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOyArK3BvcykgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSAoUHlPYmplY3QgKilQeV9UWVBFKFB5VHVwbGVfR0VUX0lURU0oYXJncywgcG9zKSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc29ydGVkX2l0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IFB5TGlzdF9HRVRfU0laRShzb3J0ZWRfaXRlbXMpOyArK3BvcykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0cF9pdGVtcyA9IFB5TGlzdF9HRVRfSVRFTShzb3J0ZWRfaXRlbXMsIHBvcyk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSAoUHlPYmplY3QgKilQeV9UWVBFKFB5VHVwbGVfR0VUX0lURU0odHBfaXRlbXMsIDEpKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGtleV9wb3MgPT0ga2V5X3NpemUpOworCitkb25lOgorICAgIGlmIChzb3J0ZWRfaXRlbXMpCisgICAgICAgIFB5X0RFQ1JFRihzb3J0ZWRfaXRlbXMpOworICAgIHJldHVybiBrZXk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmNhY2hlZF9scnVfY2FjaGVfd3JhcHBlcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoc2VsZi0+ZnVuYywgYXJncywga3dkcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpbmZpbml0ZV9scnVfY2FjaGVfd3JhcHBlcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqa2V5ID0gbHJ1X2NhY2hlX21ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHNlbGYtPnR5cGVkKTsKKyAgICBpZiAoIWtleSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3Ioc2VsZi0+Y2FjaGUsIGtleSk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgc2VsZi0+aGl0cysrOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKHNlbGYtPmZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmNhY2hlLCBrZXksIHJlc3VsdCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitscnVfY2FjaGVfZXh0cmljYXRlX2xpbmsobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBsaW5rLT5wcmV2LT5uZXh0ID0gbGluay0+bmV4dDsKKyAgICBsaW5rLT5uZXh0LT5wcmV2ID0gbGluay0+cHJldjsKK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9hcHBlbmRfbGluayhscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBscnVfbGlzdF9lbGVtICpsaW5rKQoreworICAgIGxydV9saXN0X2VsZW0gKnJvb3QgPSAmc2VsZi0+cm9vdDsKKyAgICBscnVfbGlzdF9lbGVtICpsYXN0ID0gcm9vdC0+cHJldjsKKyAgICBsYXN0LT5uZXh0ID0gcm9vdC0+cHJldiA9IGxpbms7CisgICAgbGluay0+cHJldiA9IGxhc3Q7CisgICAgbGluay0+bmV4dCA9IHJvb3Q7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitib3VuZGVkX2xydV9jYWNoZV93cmFwcGVyKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBscnVfbGlzdF9lbGVtICpsaW5rOworICAgIFB5T2JqZWN0ICprZXksICpyZXN1bHQ7CisKKyAgICBrZXkgPSBscnVfY2FjaGVfbWFrZV9rZXkoYXJncywga3dkcywgc2VsZi0+dHlwZWQpOworICAgIGlmICgha2V5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaW5rICA9IChscnVfbGlzdF9lbGVtICopUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3Ioc2VsZi0+Y2FjaGUsIGtleSk7CisgICAgaWYgKGxpbmspIHsKKyAgICAgICAgbHJ1X2NhY2hlX2V4dHJpY2F0ZV9saW5rKGxpbmspOworICAgICAgICBscnVfY2FjaGVfYXBwZW5kX2xpbmsoc2VsZiwgbGluayk7CisgICAgICAgIHNlbGYtPmhpdHMrKzsKKyAgICAgICAgcmVzdWx0ID0gbGluay0+cmVzdWx0OworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChzZWxmLT5mdW5jLCBhcmdzLCBrd2RzKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzZWxmLT5mdWxsICYmIHNlbGYtPnJvb3QubmV4dCAhPSAmc2VsZi0+cm9vdCkgeworICAgICAgICAvKiBVc2UgdGhlIG9sZGVzdCBpdGVtIHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuICovCisgICAgICAgIFB5T2JqZWN0ICpvbGRrZXksICpvbGRyZXN1bHQ7CisgICAgICAgIC8qIEV4dHJpY2F0ZSB0aGUgb2xkZXN0IGl0ZW0uICovCisgICAgICAgIGxpbmsgPSBzZWxmLT5yb290Lm5leHQ7CisgICAgICAgIGxydV9jYWNoZV9leHRyaWNhdGVfbGluayhsaW5rKTsKKyAgICAgICAgLyogUmVtb3ZlIGl0IGZyb20gdGhlIGNhY2hlLgorICAgICAgICAgICBUaGUgY2FjaGUgZGljdCBob2xkcyBvbmUgcmVmZXJlbmNlIHRvIHRoZSBsaW5rLAorICAgICAgICAgICBhbmQgdGhlIGxpbmtlZCBsaXN0IGhvbGRzIHlldCBvbmUgcmVmZXJlbmNlIHRvIGl0LiAqLworICAgICAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oc2VsZi0+Y2FjaGUsIGxpbmstPmtleSkgPCAwKSB7CisgICAgICAgICAgICBscnVfY2FjaGVfYXBwZW5kX2xpbmsoc2VsZiwgbGluayk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bworICAgICAgICAgICBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKKyAgICAgICAgICAgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0CisgICAgICAgICAgIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCisgICAgICAgICAgIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuICovCisgICAgICAgIG9sZGtleSA9IGxpbmstPmtleTsKKyAgICAgICAgb2xkcmVzdWx0ID0gbGluay0+cmVzdWx0OworCisgICAgICAgIGxpbmstPmtleSA9IGtleTsKKyAgICAgICAgbGluay0+cmVzdWx0ID0gcmVzdWx0OworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+Y2FjaGUsIGtleSwgKFB5T2JqZWN0ICopbGluaykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xka2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbHJ1X2NhY2hlX2FwcGVuZF9saW5rKHNlbGYsIGxpbmspOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsgLyogZm9yIHJldHVybiAqLworICAgICAgICBQeV9ERUNSRUYob2xka2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG9sZHJlc3VsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogUHV0IHJlc3VsdCBpbiBhIG5ldyBsaW5rIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUuICovCisgICAgICAgIGxpbmsgPSAobHJ1X2xpc3RfZWxlbSAqKVB5T2JqZWN0X0dDX05ldyhscnVfbGlzdF9lbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxydV9saXN0X2VsZW1fdHlwZSk7CisgICAgICAgIGlmIChsaW5rID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmstPmtleSA9IGtleTsKKyAgICAgICAgbGluay0+cmVzdWx0ID0gcmVzdWx0OworICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0sobGluayk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5jYWNoZSwga2V5LCAoUHlPYmplY3QgKilsaW5rKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5rKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGxydV9jYWNoZV9hcHBlbmRfbGluayhzZWxmLCBsaW5rKTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7IC8qIGZvciByZXR1cm4gKi8KKyAgICAgICAgc2VsZi0+ZnVsbCA9IChQeURpY3RfU2l6ZShzZWxmLT5jYWNoZSkgPj0gc2VsZi0+bWF4c2l6ZSk7CisgICAgfQorICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitscnVfY2FjaGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKm1heHNpemVfTywgKmNhY2hlX2luZm9fdHlwZSwgKmNhY2hlZGljdDsKKyAgICBpbnQgdHlwZWQ7CisgICAgbHJ1X2NhY2hlX29iamVjdCAqb2JqOworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsKKyAgICBQeU9iamVjdCAqKCp3cmFwcGVyKShscnVfY2FjaGVfb2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ1c2VyX2Z1bmN0aW9uIiwgIm1heHNpemUiLCAidHlwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWNoZV9pbmZvX3R5cGUiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT09wTzpscnVfY2FjaGUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVuYywgJm1heHNpemVfTywgJnR5cGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZV9pbmZvX3R5cGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHNlbGVjdCB0aGUgY2FjaGluZyBmdW5jdGlvbiwgYW5kIG1ha2UvaW5jIG1heHNpemVfTyAqLworICAgIGlmIChtYXhzaXplX08gPT0gUHlfTm9uZSkgeworICAgICAgICB3cmFwcGVyID0gaW5maW5pdGVfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgICAgIC8qIHVzZSB0aGlzIG9ubHkgdG8gaW5pdGlhbGl6ZSBscnVfY2FjaGVfb2JqZWN0IGF0dHJpYnV0ZSBtYXhzaXplICovCisgICAgICAgIG1heHNpemUgPSAtMTsKKyAgICB9IGVsc2UgaWYgKFB5SW5kZXhfQ2hlY2sobWF4c2l6ZV9PKSkgeworICAgICAgICBtYXhzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KG1heHNpemVfTywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChtYXhzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG1heHNpemUgPT0gMCkKKyAgICAgICAgICAgIHdyYXBwZXIgPSB1bmNhY2hlZF9scnVfY2FjaGVfd3JhcHBlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd3JhcHBlciA9IGJvdW5kZWRfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1heHNpemUgc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIShjYWNoZWRpY3QgPSBQeURpY3RfTmV3KCkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG9iaiA9IChscnVfY2FjaGVfb2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihjYWNoZWRpY3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvYmotPmNhY2hlID0gY2FjaGVkaWN0OworICAgIG9iai0+cm9vdC5wcmV2ID0gJm9iai0+cm9vdDsKKyAgICBvYmotPnJvb3QubmV4dCA9ICZvYmotPnJvb3Q7CisgICAgb2JqLT5tYXhzaXplID0gbWF4c2l6ZTsKKyAgICBQeV9JTkNSRUYobWF4c2l6ZV9PKTsKKyAgICBvYmotPm1heHNpemVfTyA9IG1heHNpemVfTzsKKyAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgb2JqLT5mdW5jID0gZnVuYzsKKyAgICBvYmotPndyYXBwZXIgPSB3cmFwcGVyOworICAgIG9iai0+bWlzc2VzID0gb2JqLT5oaXRzID0gMDsKKyAgICBvYmotPnR5cGVkID0gdHlwZWQ7CisgICAgUHlfSU5DUkVGKGNhY2hlX2luZm9fdHlwZSk7CisgICAgb2JqLT5jYWNoZV9pbmZvX3R5cGUgPSBjYWNoZV9pbmZvX3R5cGU7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqOworfQorCitzdGF0aWMgbHJ1X2xpc3RfZWxlbSAqCitscnVfY2FjaGVfdW5saW5rX2xpc3QobHJ1X2NhY2hlX29iamVjdCAqc2VsZikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpyb290ID0gJnNlbGYtPnJvb3Q7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGluayA9IHJvb3QtPm5leHQ7CisgICAgaWYgKGxpbmsgPT0gcm9vdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcm9vdC0+cHJldi0+bmV4dCA9IE5VTEw7CisgICAgcm9vdC0+bmV4dCA9IHJvb3QtPnByZXYgPSByb290OworICAgIHJldHVybiBsaW5rOworfQorCitzdGF0aWMgdm9pZAorbHJ1X2NhY2hlX2NsZWFyX2xpc3QobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICB3aGlsZSAobGluayAhPSBOVUxMKSB7CisgICAgICAgIGxydV9saXN0X2VsZW0gKm5leHQgPSBsaW5rLT5uZXh0OworICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgIGxpbmsgPSBuZXh0OworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9kZWFsbG9jKGxydV9jYWNoZV9vYmplY3QgKm9iaikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpsaXN0ID0gbHJ1X2NhY2hlX3VubGlua19saXN0KG9iaik7CisgICAgUHlfWERFQ1JFRihvYmotPm1heHNpemVfTyk7CisgICAgUHlfWERFQ1JFRihvYmotPmZ1bmMpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZSk7CisgICAgUHlfWERFQ1JFRihvYmotPmRpY3QpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIFB5X1RZUEUob2JqKS0+dHBfZnJlZShvYmopOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2NhbGwobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHJldHVybiBzZWxmLT53cmFwcGVyKHNlbGYsIGFyZ3MsIGt3ZHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2Rlc2NyX2dldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnR5cGUpCit7CisgICAgaWYgKG9iaiA9PSBQeV9Ob25lIHx8IG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgfQorICAgIHJldHVybiBQeU1ldGhvZF9OZXcoc2VsZiwgb2JqKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9pbmZvKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5jYWNoZV9pbmZvX3R5cGUsICJubk9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhpdHMsIHNlbGYtPm1pc3Nlcywgc2VsZi0+bWF4c2l6ZV9PLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X1NpemUoc2VsZi0+Y2FjaGUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9jbGVhcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpc3QgPSBscnVfY2FjaGVfdW5saW5rX2xpc3Qoc2VsZik7CisgICAgc2VsZi0+aGl0cyA9IHNlbGYtPm1pc3NlcyA9IDA7CisgICAgc2VsZi0+ZnVsbCA9IDA7CisgICAgUHlEaWN0X0NsZWFyKHNlbGYtPmNhY2hlKTsKKyAgICBscnVfY2FjaGVfY2xlYXJfbGlzdChsaXN0KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX3RyYXZlcnNlKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpbmsgPSBzZWxmLT5yb290Lm5leHQ7CisgICAgd2hpbGUgKGxpbmsgIT0gJnNlbGYtPnJvb3QpIHsKKyAgICAgICAgbHJ1X2xpc3RfZWxlbSAqbmV4dCA9IGxpbmstPm5leHQ7CisgICAgICAgIFB5X1ZJU0lUKGxpbmspOworICAgICAgICBsaW5rID0gbmV4dDsKKyAgICB9CisgICAgUHlfVklTSVQoc2VsZi0+bWF4c2l6ZV9PKTsKKyAgICBQeV9WSVNJVChzZWxmLT5mdW5jKTsKKyAgICBQeV9WSVNJVChzZWxmLT5jYWNoZSk7CisgICAgUHlfVklTSVQoc2VsZi0+Y2FjaGVfaW5mb190eXBlKTsKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX2NsZWFyKGxydV9jYWNoZV9vYmplY3QgKnNlbGYpCit7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGlzdCA9IGxydV9jYWNoZV91bmxpbmtfbGlzdChzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYXhzaXplX08pOworICAgIFB5X0NMRUFSKHNlbGYtPmZ1bmMpOworICAgIFB5X0NMRUFSKHNlbGYtPmNhY2hlKTsKKyAgICBQeV9DTEVBUihzZWxmLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIHJldHVybiAwOworfQorCisKK1B5RG9jX1NUUlZBUihscnVfY2FjaGVfZG9jLAorIkNyZWF0ZSBhIGNhY2hlZCBjYWxsYWJsZSB0aGF0IHdyYXBzIGFub3RoZXIgZnVuY3Rpb24uXG5cCitcblwKK3VzZXJfZnVuY3Rpb246ICAgICAgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhY2hlZFxuXAorXG5cCittYXhzaXplOiAgMCAgICAgICAgIGZvciBubyBjYWNoaW5nXG5cCisgICAgICAgICAgTm9uZSAgICAgIGZvciB1bmxpbWl0ZWQgY2FjaGUgc2l6ZVxuXAorICAgICAgICAgIG4gICAgICAgICBmb3IgYSBib3VuZGVkIGNhY2hlXG5cCitcblwKK3R5cGVkOiAgICBGYWxzZSAgICAgY2FjaGUgZigzKSBhbmQgZigzLjApIGFzIGlkZW50aWNhbCBjYWxsc1xuXAorICAgICAgICAgIFRydWUgICAgICBjYWNoZSBmKDMpIGFuZCBmKDMuMCkgYXMgZGlzdGluY3QgY2FsbHNcblwKK1xuXAorY2FjaGVfaW5mb190eXBlOiAgICBuYW1lZHR1cGxlIGNsYXNzIHdpdGggdGhlIGZpZWxkczpcblwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMgbWlzc2VzIGN1cnJzaXplIG1heHNpemVcbiIKKyk7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBscnVfY2FjaGVfbWV0aG9kc1tdID0geworICAgIHsiY2FjaGVfaW5mbyIsIChQeUNGdW5jdGlvbilscnVfY2FjaGVfY2FjaGVfaW5mbywgTUVUSF9OT0FSR1N9LAorICAgIHsiY2FjaGVfY2xlYXIiLCAoUHlDRnVuY3Rpb24pbHJ1X2NhY2hlX2NhY2hlX2NsZWFyLCBNRVRIX05PQVJHU30sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgbHJ1X2NhY2hlX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2NhY2hlX3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImZ1bmN0b29scy5fbHJ1X2NhY2hlX3dyYXBwZXIiLCAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihscnVfY2FjaGVfb2JqZWN0KSwgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWxydV9jYWNoZV9kZWFsbG9jLCAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICh0ZXJuYXJ5ZnVuYylscnVfY2FjaGVfY2FsbCwgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEV8UHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbHJ1X2NhY2hlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylscnVfY2FjaGVfdHBfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlscnVfY2FjaGVfdHBfY2xlYXIsICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBscnVfY2FjaGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGxydV9jYWNoZV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgbHJ1X2NhY2hlX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YobHJ1X2NhY2hlX29iamVjdCwgZGljdCksICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGxydV9jYWNoZV9uZXcsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKwogLyogbW9kdWxlIGxldmVsIGNvZGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLApAQCAtNTQ4LDYgKzExNDYsMTEgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAorc3RhdGljIHZvaWQKK21vZHVsZV9mcmVlKHZvaWQgKm0pCit7CisgICAgUHlfQ0xFQVIoa3dkX21hcmspOworfQogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9mdW5jdG9vbHNtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULApAQCAtNTU4LDcgKzExNjEsNyBAQAogICAgIE5VTEwsCiAgICAgTlVMTCwKICAgICBOVUxMLAotICAgIE5VTEwKKyAgICBtb2R1bGVfZnJlZSwKIH07CiAKIFB5TU9ESU5JVF9GVU5DCkBAIC01NjksNiArMTE3Miw3IEBACiAgICAgY2hhciAqbmFtZTsKICAgICBQeVR5cGVPYmplY3QgKnR5cGVsaXN0W10gPSB7CiAgICAgICAgICZwYXJ0aWFsX3R5cGUsCisgICAgICAgICZscnVfY2FjaGVfdHlwZSwKICAgICAgICAgTlVMTAogICAgIH07CiAKQEAgLTU3Niw2ICsxMTgwLDEyIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBrd2RfbWFyayA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5QmFzZU9iamVjdF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoIWt3ZF9tYXJrKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgZm9yIChpPTAgOyB0eXBlbGlzdFtpXSAhPSBOVUxMIDsgaSsrKSB7CiAgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZWxpc3RbaV0pIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCmluZGV4IDIyOWUxNmUuLmYwNzBhMTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKQEAgLTE2LDE3ICsxNiwyMyBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJtX3N0cmVycm9yKGdkYm1fZXJyb3IpOwogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfZ2RibQorY2xhc3MgX2dkYm0uZ2RibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTExMzkyN2M2MTcwNzI5YjJdKi8KKwogUHlEb2NfU1RSVkFSKGdkYm1tb2R1bGVfX2RvY19fLAogIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgR05VIERCTSAoR0RCTSkgbGlicmFyeS5cblwKIFxuXAogVGhpcyBtb2R1bGUgaXMgcXVpdGUgc2ltaWxhciB0byB0aGUgZGJtIG1vZHVsZSwgYnV0IHVzZXMgR0RCTSBpbnN0ZWFkIHRvXG5cCi1wcm92aWRlIHNvbWUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5LiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBmaWxlIGZvcm1hdHNcblwKLWNyZWF0ZWQgYnkgR0RCTSBhbmQgZGJtIGFyZSBpbmNvbXBhdGlibGUuIFxuXAorcHJvdmlkZSBzb21lIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eS4gIFBsZWFzZSBub3RlIHRoYXQgdGhlIGZpbGUgZm9ybWF0c1xuXAorY3JlYXRlZCBieSBHREJNIGFuZCBkYm0gYXJlIGluY29tcGF0aWJsZS5cblwKIFxuXAogR0RCTSBvYmplY3RzIGJlaGF2ZSBsaWtlIG1hcHBpbmdzIChkaWN0aW9uYXJpZXMpLCBleGNlcHQgdGhhdCBrZXlzIGFuZFxuXAotdmFsdWVzIGFyZSBhbHdheXMgc3RyaW5ncy4gUHJpbnRpbmcgYSBHREJNIG9iamVjdCBkb2Vzbid0IHByaW50IHRoZVxuXAota2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kIHZhbHVlcygpIG1ldGhvZHMgYXJlIG5vdFxuXAotc3VwcG9ydGVkLiIpOwordmFsdWVzIGFyZSBhbHdheXMgaW1tdXRhYmxlIGJ5dGVzLWxpa2Ugb2JqZWN0cyBvciBzdHJpbmdzLiAgUHJpbnRpbmdcblwKK2EgR0RCTSBvYmplY3QgZG9lc24ndCBwcmludCB0aGUga2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kXG5cCit2YWx1ZXMoKSBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMzYsNiArNDIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IERibXR5cGU7CiAKKyNpbmNsdWRlICJjbGluaWMvX2dkYm1tb2R1bGUuYy5oIgorCiAjZGVmaW5lIGlzX2RibW9iamVjdCh2KSAoUHlfVFlQRSh2KSA9PSAmRGJtdHlwZSkKICNkZWZpbmUgY2hlY2tfZGJtb2JqZWN0X29wZW4odikgaWYgKCh2KS0+ZGlfZGJtID09IE5VTEwpIFwKICAgICB7IFB5RXJyX1NldFN0cmluZyhEYm1FcnJvciwgIkdEQk0gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkIik7IFwKQEAgLTQ4LDE1ICs1NiwxNSBAQAogUHlEb2NfU1RSVkFSKGdkYm1fb2JqZWN0X19kb2NfXywKICJUaGlzIG9iamVjdCByZXByZXNlbnRzIGEgR0RCTSBkYXRhYmFzZS5cblwKIEdEQk0gb2JqZWN0cyBiZWhhdmUgbGlrZSBtYXBwaW5ncyAoZGljdGlvbmFyaWVzKSwgZXhjZXB0IHRoYXQga2V5cyBhbmRcblwKLXZhbHVlcyBhcmUgYWx3YXlzIHN0cmluZ3MuIFByaW50aW5nIGEgR0RCTSBvYmplY3QgZG9lc24ndCBwcmludCB0aGVcblwKLWtleXMgYW5kIHZhbHVlcywgYW5kIHRoZSBpdGVtcygpIGFuZCB2YWx1ZXMoKSBtZXRob2RzIGFyZSBub3RcblwKLXN1cHBvcnRlZC5cblwKK3ZhbHVlcyBhcmUgYWx3YXlzIGltbXV0YWJsZSBieXRlcy1saWtlIG9iamVjdHMgb3Igc3RyaW5ncy4gIFByaW50aW5nXG5cCithIEdEQk0gb2JqZWN0IGRvZXNuJ3QgcHJpbnQgdGhlIGtleXMgYW5kIHZhbHVlcywgYW5kIHRoZSBpdGVtcygpIGFuZFxuXAordmFsdWVzKCkgbWV0aG9kcyBhcmUgbm90IHN1cHBvcnRlZC5cblwKIFxuXAogR0RCTSBvYmplY3RzIGFsc28gc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgc3VjaCBhcyBmaXJzdGtleSxcblwKIG5leHRrZXksIHJlb3JnYW5pemUsIGFuZCBzeW5jLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3ZGJtb2JqZWN0KGNoYXIgKmZpbGUsIGludCBmbGFncywgaW50IG1vZGUpCituZXdkYm1vYmplY3QoY29uc3QgY2hhciAqZmlsZSwgaW50IGZsYWdzLCBpbnQgbW9kZSkKIHsKICAgICBkYm1vYmplY3QgKmRwOwogCkBAIC02NSw3ICs3Myw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGRwLT5kaV9zaXplID0gLTE7CiAgICAgZXJybm8gPSAwOwotICAgIGlmICgoZHAtPmRpX2RibSA9IGdkYm1fb3BlbihmaWxlLCAwLCBmbGFncywgbW9kZSwgTlVMTCkpID09IDApIHsKKyAgICBpZiAoKGRwLT5kaV9kYm0gPSBnZGJtX29wZW4oKGNoYXIgKilmaWxlLCAwLCBmbGFncywgbW9kZSwgTlVMTCkpID09IDApIHsKICAgICAgICAgaWYgKGVycm5vICE9IDApCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oRGJtRXJyb3IpOwogICAgICAgICBlbHNlCkBAIC0xMzUsMjQgKzE0MywyNyBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIoZGJtX2dldF9fZG9jX18sCi0iZ2V0KGtleVssIGRlZmF1bHRdKSAtPiB2YWx1ZVxuXAotR2V0IHRoZSB2YWx1ZSBmb3Iga2V5LCBvciBkZWZhdWx0IGlmIG5vdCBwcmVzZW50OyBpZiBub3QgZ2l2ZW4sXG5cCi1kZWZhdWx0IGlzIE5vbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLmdldAorCisgICAga2V5OiBvYmplY3QKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisgICAgLworCitHZXQgdGhlIHZhbHVlIGZvciBrZXksIG9yIGRlZmF1bHQgaWYgbm90IHByZXNlbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fZ2V0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2dkYm1fZ2RibV9nZXRfaW1wbChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5YjdjNTg1YWQ0ZjU1NGEgaW5wdXQ9YTljMjA0MjNmMzRjMTdiNl0qLwogewotICAgIFB5T2JqZWN0ICp2LCAqcmVzOwotICAgIFB5T2JqZWN0ICpkZWYgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAmdiwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoZHAsIHYpOworICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfSU5DUkVGKGRlZik7Ci0gICAgICAgIHJldHVybiBkZWY7CisgICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0X3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiAgICAgfQogICAgIHJldHVybiByZXM7CiB9CkBAIC0xOTgsMjUgKzIwOSwyOSBAQAogICAgIHJldHVybiAwOwogfQogCi1QeURvY19TVFJWQVIoZGJtX3NldGRlZmF1bHRfX2RvY19fLAotInNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pIC0+IHZhbHVlXG5cCi1HZXQgdmFsdWUgZm9yIGtleSwgb3Igc2V0IGl0IHRvIGRlZmF1bHQgYW5kIHJldHVybiBkZWZhdWx0IGlmIG5vdCBwcmVzZW50O1xuXAotaWYgbm90IGdpdmVuLCBkZWZhdWx0IGlzIE5vbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLnNldGRlZmF1bHQKKworICAgIGtleTogb2JqZWN0CisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgIC8KKworR2V0IHZhbHVlIGZvciBrZXksIG9yIHNldCBpdCB0byBkZWZhdWx0IGFuZCByZXR1cm4gZGVmYXVsdCBpZiBub3QgcHJlc2VudC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODg3NjBlZTUyMDMyOTAxMiBpbnB1dD0wZGI0NmI2OWU5NjgwMTcxXSovCiB7Ci0gICAgUHlPYmplY3QgKnYsICpyZXM7Ci0gICAgUHlPYmplY3QgKmRlZiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLCAxLCAyLCAmdiwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoZHAsIHYpOworICAgIHJlcyA9IGRibV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKGRibV9hc3Nfc3ViKGRwLCB2LCBkZWYpIDwgMCkKKyAgICAgICAgaWYgKGRibV9hc3Nfc3ViKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBkYm1fc3Vic2NyaXB0KGRwLCB2KTsKKyAgICAgICAgcmV0dXJuIGRibV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTIyNyw0MyArMjQyLDQ5IEBACiAgICAgKG9iam9iamFyZ3Byb2MpZGJtX2Fzc19zdWIsICAgICAgICAgLyptcF9hc3Nfc3Vic2NyaXB0Ki8KIH07CiAKLVB5RG9jX1NUUlZBUihkYm1fY2xvc2VfX2RvY19fLAotImNsb3NlKCkgLT4gTm9uZVxuXAotQ2xvc2VzIHRoZSBkYXRhYmFzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uY2xvc2UKKworQ2xvc2UgdGhlIGRhdGFiYXNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2Nsb3NlKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX2Nsb3NlX2ltcGwoZGJtb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNTEyYTU5NDU5OGI1NjMgaW5wdXQ9MGEyMDM0NDczNzliNDVmZF0qLwogewotICAgIGlmIChkcC0+ZGlfZGJtKQotICAgICAgICBnZGJtX2Nsb3NlKGRwLT5kaV9kYm0pOwotICAgIGRwLT5kaV9kYm0gPSBOVUxMOworICAgIGlmIChzZWxmLT5kaV9kYm0pCisgICAgICAgIGdkYm1fY2xvc2Uoc2VsZi0+ZGlfZGJtKTsKKyAgICBzZWxmLT5kaV9kYm0gPSBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAogLyogWFhYIFNob3VsZCByZXR1cm4gYSBzZXQgb3IgYSBzZXQgdmlldyAqLwotUHlEb2NfU1RSVkFSKGRibV9rZXlzX19kb2NfXywKLSJrZXlzKCkgLT4gbGlzdF9vZl9rZXlzXG5cCi1HZXQgYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0ua2V5cworCitHZXQgYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9rZXlzKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX2tleXNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2I0YjE3NzZjMzY0NWRjYyBpbnB1dD0xODMyZWUwYTMxMzJjZmFmXSovCiB7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGRhdHVtIGtleSwgbmV4dGtleTsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKGRwID09IE5VTEwgfHwgIWlzX2RibW9iamVjdChkcCkpIHsKKyAgICBpZiAoc2VsZiA9PSBOVUxMIHx8ICFpc19kYm1vYmplY3Qoc2VsZikpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CiAKICAgICB2ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGtleSA9IGdkYm1fZmlyc3RrZXkoZHAtPmRpX2RibSk7CisgICAga2V5ID0gZ2RibV9maXJzdGtleShzZWxmLT5kaV9kYm0pOwogICAgIHdoaWxlIChrZXkuZHB0cikgewogICAgICAgICBpdGVtID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShrZXkuZHB0ciwga2V5LmRzaXplKTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewpAQCAtMjc4LDcgKzI5OSw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBuZXh0a2V5ID0gZ2RibV9uZXh0a2V5KGRwLT5kaV9kYm0sIGtleSk7CisgICAgICAgIG5leHRrZXkgPSBnZGJtX25leHRrZXkoc2VsZi0+ZGlfZGJtLCBrZXkpOwogICAgICAgICBmcmVlKGtleS5kcHRyKTsKICAgICAgICAga2V5ID0gbmV4dGtleTsKICAgICB9CkBAIC0zMjksMjEgKzM1MCwyNSBAQAogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAotUHlEb2NfU1RSVkFSKGRibV9maXJzdGtleV9fZG9jX18sCi0iZmlyc3RrZXkoKSAtPiBrZXlcblwKLUl0J3MgcG9zc2libGUgdG8gbG9vcCBvdmVyIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgdXNpbmcgdGhpcyBtZXRob2RcblwKLWFuZCB0aGUgbmV4dGtleSgpIG1ldGhvZC4gVGhlIHRyYXZlcnNhbCBpcyBvcmRlcmVkIGJ5IEdEQk0ncyBpbnRlcm5hbFxuXAotaGFzaCB2YWx1ZXMsIGFuZCB3b24ndCBiZSBzb3J0ZWQgYnkgdGhlIGtleSB2YWx1ZXMuIFRoaXMgbWV0aG9kXG5cCi1yZXR1cm5zIHRoZSBzdGFydGluZyBrZXkuIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLmZpcnN0a2V5CisKK1JldHVybiB0aGUgc3RhcnRpbmcga2V5IGZvciB0aGUgdHJhdmVyc2FsLgorCitJdCdzIHBvc3NpYmxlIHRvIGxvb3Agb3ZlciBldmVyeSBrZXkgaW4gdGhlIGRhdGFiYXNlIHVzaW5nIHRoaXMgbWV0aG9kCithbmQgdGhlIG5leHRrZXkoKSBtZXRob2QuICBUaGUgdHJhdmVyc2FsIGlzIG9yZGVyZWQgYnkgR0RCTSdzIGludGVybmFsCitoYXNoIHZhbHVlcywgYW5kIHdvbid0IGJlIHNvcnRlZCBieSB0aGUga2V5IHZhbHVlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9maXJzdGtleShkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqdW51c2VkKQorX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZmY4NTYyOGQ4NGI2NWQyIGlucHV0PTBkYmQ2YTMzNWQ2OWJiYTBdKi8KIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBkYXR1bSBrZXk7CiAKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAga2V5ID0gZ2RibV9maXJzdGtleShkcC0+ZGlfZGJtKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICBrZXkgPSBnZGJtX2ZpcnN0a2V5KHNlbGYtPmRpX2RibSk7CiAgICAgaWYgKGtleS5kcHRyKSB7CiAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleS5kcHRyLCBrZXkuZHNpemUpOwogICAgICAgICBmcmVlKGtleS5kcHRyKTsKQEAgLTM1NSwyNyArMzgwLDM1IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoZGJtX25leHRrZXlfX2RvY19fLAotIm5leHRrZXkoa2V5KSAtPiBuZXh0X2tleVxuXAotUmV0dXJucyB0aGUga2V5IHRoYXQgZm9sbG93cyBrZXkgaW4gdGhlIHRyYXZlcnNhbC5cblwKLVRoZSBmb2xsb3dpbmcgY29kZSBwcmludHMgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSBkYiwgd2l0aG91dCBoYXZpbmdcblwKLXRvIGNyZWF0ZSBhIGxpc3QgaW4gbWVtb3J5IHRoYXQgY29udGFpbnMgdGhlbSBhbGw6XG5cCi1cblwKLSAgICAgIGsgPSBkYi5maXJzdGtleSgpXG5cCi0gICAgICB3aGlsZSBrICE9IE5vbmU6XG5cCi0gICAgICAgICAgcHJpbnQga1xuXAotICAgICAgICAgIGsgPSBkYi5uZXh0a2V5KGspIik7CisvKltjbGluaWMgaW5wdXRdCitfZ2RibS5nZGJtLm5leHRrZXkKKworICAgIGtleTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIC8KKworUmV0dXJucyB0aGUga2V5IHRoYXQgZm9sbG93cyBrZXkgaW4gdGhlIHRyYXZlcnNhbC4KKworVGhlIGZvbGxvd2luZyBjb2RlIHByaW50cyBldmVyeSBrZXkgaW4gdGhlIGRhdGFiYXNlIGRiLCB3aXRob3V0IGhhdmluZwordG8gY3JlYXRlIGEgbGlzdCBpbiBtZW1vcnkgdGhhdCBjb250YWlucyB0aGVtIGFsbDoKKworICAgICAgayA9IGRiLmZpcnN0a2V5KCkKKyAgICAgIHdoaWxlIGsgIT0gTm9uZToKKyAgICAgICAgICBwcmludChrKQorICAgICAgICAgIGsgPSBkYi5uZXh0a2V5KGspCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fbmV4dGtleShkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqYXJncykKK19nZGJtX2dkYm1fbmV4dGtleV9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MmFiODkyZGU2ZWIyZjYgaW5wdXQ9MWYxNjA2OTQzNjE0ZTM2Zl0qLwogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGRhdHVtIGtleSwgbmV4dGtleTsKKyAgICBkYXR1bSBkYm1fa2V5LCBuZXh0a2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIzpuZXh0a2V5IiwgJmtleS5kcHRyLCAma2V5LmRzaXplKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOwotICAgIG5leHRrZXkgPSBnZGJtX25leHRrZXkoZHAtPmRpX2RibSwga2V5KTsKKyAgICBkYm1fa2V5LmRwdHIgPSAoY2hhciAqKWtleTsKKyAgICBkYm1fa2V5LmRzaXplID0ga2V5X2xlbmd0aDsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICBuZXh0a2V5ID0gZ2RibV9uZXh0a2V5KHNlbGYtPmRpX2RibSwgZGJtX2tleSk7CiAgICAgaWYgKG5leHRrZXkuZHB0cikgewogICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShuZXh0a2V5LmRwdHIsIG5leHRrZXkuZHNpemUpOwogICAgICAgICBmcmVlKG5leHRrZXkuZHB0cik7CkBAIC0zODcsMjAgKzQyMCwyNSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKGRibV9yZW9yZ2FuaXplX19kb2NfXywKLSJyZW9yZ2FuaXplKCkgLT4gTm9uZVxuXAotSWYgeW91IGhhdmUgY2FycmllZCBvdXQgYSBsb3Qgb2YgZGVsZXRpb25zIGFuZCB3b3VsZCBsaWtlIHRvIHNocmlua1xuXAotdGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGVcblwKLWRhdGFiYXNlLiBHREJNIHdpbGwgbm90IHNob3J0ZW4gdGhlIGxlbmd0aCBvZiBhIGRhdGFiYXNlIGZpbGUgZXhjZXB0XG5cCi1ieSB1c2luZyB0aGlzIHJlb3JnYW5pemF0aW9uOyBvdGhlcndpc2UsIGRlbGV0ZWQgZmlsZSBzcGFjZSB3aWxsIGJlXG5cCi1rZXB0IGFuZCByZXVzZWQgYXMgbmV3IChrZXksdmFsdWUpIHBhaXJzIGFyZSBhZGRlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0ucmVvcmdhbml6ZQorCitSZW9yZ2FuaXplIHRoZSBkYXRhYmFzZS4KKworSWYgeW91IGhhdmUgY2FycmllZCBvdXQgYSBsb3Qgb2YgZGVsZXRpb25zIGFuZCB3b3VsZCBsaWtlIHRvIHNocmluawordGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGUKK2RhdGFiYXNlLiAgR0RCTSB3aWxsIG5vdCBzaG9ydGVuIHRoZSBsZW5ndGggb2YgYSBkYXRhYmFzZSBmaWxlIGV4Y2VwdAorYnkgdXNpbmcgdGhpcyByZW9yZ2FuaXphdGlvbjsgb3RoZXJ3aXNlLCBkZWxldGVkIGZpbGUgc3BhY2Ugd2lsbCBiZQora2VwdCBhbmQgcmV1c2VkIGFzIG5ldyAoa2V5LHZhbHVlKSBwYWlycyBhcmUgYWRkZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fcmVvcmdhbml6ZShkYm1vYmplY3QgKmRwLCBQeU9iamVjdCAqdW51c2VkKQorX2dkYm1fZ2RibV9yZW9yZ2FuaXplX2ltcGwoZGJtb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4ZDk2MjRkZjkyZTk2MWQgaW5wdXQ9ZjZiZWE4NWJjZmQ0MGRkMl0qLwogewotICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKGRwKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKICAgICBlcnJubyA9IDA7Ci0gICAgaWYgKGdkYm1fcmVvcmdhbml6ZShkcC0+ZGlfZGJtKSA8IDApIHsKKyAgICBpZiAoZ2RibV9yZW9yZ2FuaXplKHNlbGYtPmRpX2RibSkgPCAwKSB7CiAgICAgICAgIGlmIChlcnJubyAhPSAwKQogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKERibUVycm9yKTsKICAgICAgICAgZWxzZQpAQCAtNDExLDE2ICs0NDksMjEgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGRibV9zeW5jX19kb2NfXywKLSJzeW5jKCkgLT4gTm9uZVxuXAotV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzXG5cCi1hbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLmdkYm0uc3luYworCitGbHVzaCB0aGUgZGF0YWJhc2UgdG8gdGhlIGRpc2sgZmlsZS4KKworV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzCithbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zeW5jKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZ2RibV9nZGJtX3N5bmNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDg4YjE1ZjQ3MDI4ZjEyNSBpbnB1dD0yYTQ3ZDJjOWUxNTNhYjhhXSovCiB7Ci0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOwotICAgIGdkYm1fc3luYyhkcC0+ZGlfZGJtKTsKKyAgICBjaGVja19kYm1vYmplY3Rfb3BlbihzZWxmKTsKKyAgICBnZGJtX3N5bmMoc2VsZi0+ZGlfZGJtKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC00NDAsMTQgKzQ4MywxNSBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZGJtX21ldGhvZHNbXSA9IHsKLSAgICB7ImNsb3NlIiwgICAgIChQeUNGdW5jdGlvbilkYm1fY2xvc2UsICAgTUVUSF9OT0FSR1MsIGRibV9jbG9zZV9fZG9jX199LAotICAgIHsia2V5cyIsICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9rZXlzLCAgICBNRVRIX05PQVJHUywgZGJtX2tleXNfX2RvY19ffSwKLSAgICB7ImZpcnN0a2V5IiwgIChQeUNGdW5jdGlvbilkYm1fZmlyc3RrZXksTUVUSF9OT0FSR1MsIGRibV9maXJzdGtleV9fZG9jX199LAotICAgIHsibmV4dGtleSIsICAgKFB5Q0Z1bmN0aW9uKWRibV9uZXh0a2V5LCBNRVRIX1ZBUkFSR1MsIGRibV9uZXh0a2V5X19kb2NfX30sCi0gICAgeyJyZW9yZ2FuaXplIiwoUHlDRnVuY3Rpb24pZGJtX3Jlb3JnYW5pemUsTUVUSF9OT0FSR1MsIGRibV9yZW9yZ2FuaXplX19kb2NfX30sCi0gICAgeyJzeW5jIiwgICAgICAoUHlDRnVuY3Rpb24pZGJtX3N5bmMsICAgIE1FVEhfTk9BUkdTLCBkYm1fc3luY19fZG9jX199LAotICAgIHsiZ2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9nZXQsICAgICBNRVRIX1ZBUkFSR1MsIGRibV9nZXRfX2RvY19ffSwKLSAgICB7InNldGRlZmF1bHQiLChQeUNGdW5jdGlvbilkYm1fc2V0ZGVmYXVsdCxNRVRIX1ZBUkFSR1MsIGRibV9zZXRkZWZhdWx0X19kb2NfX30sCisgICAgX0dEQk1fR0RCTV9DTE9TRV9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0tFWVNfTUVUSE9EREVGCisgICAgX0dEQk1fR0RCTV9GSVJTVEtFWV9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX05FWFRLRVlfTUVUSE9EREVGCisgICAgX0dEQk1fR0RCTV9SRU9SR0FOSVpFX01FVEhPRERFRgorICAgIF9HREJNX0dEQk1fU1lOQ19NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0dFVF9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX0dFVF9NRVRIT0RERUYKKyAgICBfR0RCTV9HREJNX1NFVERFRkFVTFRfTUVUSE9EREVGCiAgICAgeyJfX2VudGVyX18iLCBkYm1fX2VudGVyX18sIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7Il9fZXhpdF9fIiwgIGRibV9fZXhpdF9fLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCkBAIC00ODYsNDAgKzUzMCw0NCBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeURvY19TVFJWQVIoZGJtb3Blbl9fZG9jX18sCi0ib3BlbihmaWxlbmFtZSwgW2ZsYWdzLCBbbW9kZV1dKSAgLT4gZGJtX29iamVjdFxuXAotT3BlbiBhIGRibSBkYXRhYmFzZSBhbmQgcmV0dXJuIGEgZGJtIG9iamVjdC4gVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzXG5cCi10aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZmlsZS5cblwKLVxuXAotVGhlIG9wdGlvbmFsIGZsYWdzIGFyZ3VtZW50IGNhbiBiZSAncicgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2VcblwKLWZvciByZWFkaW5nIG9ubHkgLS0gZGVmYXVsdCksICd3JyAodG8gb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZSBmb3JcblwKLXJlYWRpbmcgYW5kIHdyaXRpbmcpLCAnYycgKHdoaWNoIGNyZWF0ZXMgdGhlIGRhdGFiYXNlIGlmIGl0IGRvZXNuJ3RcblwKLWV4aXN0KSwgb3IgJ24nICh3aGljaCBhbHdheXMgY3JlYXRlcyBhIG5ldyBlbXB0eSBkYXRhYmFzZSkuXG5cCi1cblwKLVNvbWUgdmVyc2lvbnMgb2YgZ2RibSBzdXBwb3J0IGFkZGl0aW9uYWwgZmxhZ3Mgd2hpY2ggbXVzdCBiZVxuXAotYXBwZW5kZWQgdG8gb25lIG9mIHRoZSBmbGFncyBkZXNjcmliZWQgYWJvdmUuIFRoZSBtb2R1bGUgY29uc3RhbnRcblwKLSdvcGVuX2ZsYWdzJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiBUaGUgJ2YnIGZsYWdcblwKLW9wZW5zIHRoZSBkYXRhYmFzZSBpbiBmYXN0IG1vZGU7IGFsdGVyZWQgZGF0YSB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5XG5cCi1iZSB3cml0dGVuIHRvIHRoZSBkaXNrIGFmdGVyIGV2ZXJ5IGNoYW5nZS4gVGhpcyByZXN1bHRzIGluIGZhc3RlclxuXAotd3JpdGVzIHRvIHRoZSBkYXRhYmFzZSwgYnV0IG1heSByZXN1bHQgaW4gYW4gaW5jb25zaXN0ZW50IGRhdGFiYXNlXG5cCi1pZiB0aGUgcHJvZ3JhbSBjcmFzaGVzIHdoaWxlIHRoZSBkYXRhYmFzZSBpcyBzdGlsbCBvcGVuLiBVc2UgdGhlXG5cCi1zeW5jKCkgbWV0aG9kIHRvIGZvcmNlIGFueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLlxuXAotVGhlICdzJyBmbGFnIGNhdXNlcyBhbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0byBiZSBzeW5jaHJvbml6ZWQgdG9cblwKLWRpc2suIFRoZSAndScgZmxhZyBkaXNhYmxlcyBsb2NraW5nIG9mIHRoZSBkYXRhYmFzZSBmaWxlLlxuXAotXG5cCi1UaGUgb3B0aW9uYWwgbW9kZSBhcmd1bWVudCBpcyB0aGUgVW5peCBtb2RlIG9mIHRoZSBmaWxlLCB1c2VkIG9ubHlcblwKLXdoZW4gdGhlIGRhdGFiYXNlIGhhcyB0byBiZSBjcmVhdGVkLiBJdCBkZWZhdWx0cyB0byBvY3RhbCAwNjY2LiAiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19nZGJtLm9wZW4gYXMgZGJtb3BlbgorICAgIGZpbGVuYW1lIGFzIG5hbWU6IHN0cgorICAgIGZsYWdzOiBzdHI9InIiCisgICAgbW9kZTogaW50KHB5X2RlZmF1bHQ9IjBvNjY2IikgPSAwbzY2NgorICAgIC8KKworT3BlbiBhIGRibSBkYXRhYmFzZSBhbmQgcmV0dXJuIGEgZGJtIG9iamVjdC4KKworVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBmaWxlLgorCitUaGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQgY2FuIGJlICdyJyAodG8gb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZQorZm9yIHJlYWRpbmcgb25seSAtLSBkZWZhdWx0KSwgJ3cnICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlIGZvcgorcmVhZGluZyBhbmQgd3JpdGluZyksICdjJyAod2hpY2ggY3JlYXRlcyB0aGUgZGF0YWJhc2UgaWYgaXQgZG9lc24ndAorZXhpc3QpLCBvciAnbicgKHdoaWNoIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGVtcHR5IGRhdGFiYXNlKS4KKworU29tZSB2ZXJzaW9ucyBvZiBnZGJtIHN1cHBvcnQgYWRkaXRpb25hbCBmbGFncyB3aGljaCBtdXN0IGJlCithcHBlbmRlZCB0byBvbmUgb2YgdGhlIGZsYWdzIGRlc2NyaWJlZCBhYm92ZS4gIFRoZSBtb2R1bGUgY29uc3RhbnQKKydvcGVuX2ZsYWdzJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiAgVGhlICdmJyBmbGFnCitvcGVucyB0aGUgZGF0YWJhc2UgaW4gZmFzdCBtb2RlOyBhbHRlcmVkIGRhdGEgd2lsbCBub3QgYXV0b21hdGljYWxseQorYmUgd3JpdHRlbiB0byB0aGUgZGlzayBhZnRlciBldmVyeSBjaGFuZ2UuICBUaGlzIHJlc3VsdHMgaW4gZmFzdGVyCit3cml0ZXMgdG8gdGhlIGRhdGFiYXNlLCBidXQgbWF5IHJlc3VsdCBpbiBhbiBpbmNvbnNpc3RlbnQgZGF0YWJhc2UKK2lmIHRoZSBwcm9ncmFtIGNyYXNoZXMgd2hpbGUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIG9wZW4uICBVc2UgdGhlCitzeW5jKCkgbWV0aG9kIHRvIGZvcmNlIGFueSB1bndyaXR0ZW4gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBkaXNrLgorVGhlICdzJyBmbGFnIGNhdXNlcyBhbGwgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0byBiZSBzeW5jaHJvbml6ZWQgdG8KK2Rpc2suICBUaGUgJ3UnIGZsYWcgZGlzYWJsZXMgbG9ja2luZyBvZiB0aGUgZGF0YWJhc2UgZmlsZS4KKworVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVuaXggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5Cit3aGVuIHRoZSBkYXRhYmFzZSBoYXMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvIG9jdGFsIDBvNjY2LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitkYm1vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzY1YjMxNDE1YzAzY2NkNCBpbnB1dD01NTU2M2NkNjBlNTE5ODRhXSovCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBjaGFyICpmbGFncyA9ICJyIjsKICAgICBpbnQgaWZsYWdzOwotICAgIGludCBtb2RlID0gMDY2NjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwgJm5hbWUsICZmbGFncywgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKGZsYWdzWzBdKSB7CiAgICAgY2FzZSAncic6CiAgICAgICAgIGlmbGFncyA9IEdEQk1fUkVBREVSOwpAQCAtNTgwLDcgKzYyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogCiBzdGF0aWMgUHlNZXRob2REZWYgZGJtbW9kdWxlX21ldGhvZHNbXSA9IHsKLSAgICB7ICJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAorICAgIERCTU9QRU5fTUVUSE9EREVGCiAgICAgeyAwLCAwIH0sCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwppbmRleCBkNWRkZTZhLi44Y2NjMjQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCisrKyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAogCiAvKiBFVlAgaXMgdGhlIHByZWZlcnJlZCBpbnRlcmZhY2UgdG8gaGFzaGluZyBpbiBPcGVuU1NMICovCkBAIC0zMSwxMCArMzIsNiBAQAogI2RlZmluZSBIQVNIX09CSl9DT05TVFJVQ1RPUiAwCiAjZW5kaWYKIAotLyogTWluaW11bSBPcGVuU1NMIHZlcnNpb24gbmVlZGVkIHRvIHN1cHBvcnQgc2hhMjI0IGFuZCBoaWdoZXIuICovCi0jaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA4MDAwKQotI2RlZmluZSBfT1BFTlNTTF9TVVBQT1JUU19TSEEyCi0jZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTU2LDEyICs1MywxMCBAQAogCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcobWQ1KQogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTEpCi0jaWZkZWYgX09QRU5TU0xfU1VQUE9SVFNfU0hBMgogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTIyNCkKIERFRklORV9DT05TVFNfRk9SX05FVyhzaGEyNTYpCiBERUZJTkVfQ09OU1RTX0ZPUl9ORVcoc2hhMzg0KQogREVGSU5FX0NPTlNUU19GT1JfTkVXKHNoYTUxMikKLSNlbmRpZgogCiAKIHN0YXRpYyBFVlBvYmplY3QgKgpAQCAtMTYzLDkgKzE1OCw3IEBACiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbRVZQX01BWF9NRF9TSVpFXTsKICAgICBFVlBfTURfQ1RYIHRlbXBfY3R4OwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgY2hhciAqaGV4X2RpZ2VzdDsKLSAgICB1bnNpZ25lZCBpbnQgaSwgaiwgZGlnZXN0X3NpemU7CisgICAgdW5zaWduZWQgaW50IGRpZ2VzdF9zaXplOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgbG9ja2VkX0VWUF9NRF9DVFhfY29weSgmdGVtcF9jdHgsIHNlbGYpOwpAQCAtMTc0LDIyICsxNjcsNyBAQAogCiAgICAgRVZQX01EX0NUWF9jbGVhbnVwKCZ0ZW1wX2N0eCk7CiAKLSAgICAvKiBBbGxvY2F0ZSBhIG5ldyBidWZmZXIgKi8KLSAgICBoZXhfZGlnZXN0ID0gUHlNZW1fTWFsbG9jKGRpZ2VzdF9zaXplICogMiArIDEpOwotICAgIGlmICghaGV4X2RpZ2VzdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IoaT1qPTA7IGk8ZGlnZXN0X3NpemU7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgIH0KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoaGV4X2RpZ2VzdCwgZGlnZXN0X3NpemUgKiAyKTsKLSAgICBQeU1lbV9GcmVlKGhleF9kaWdlc3QpOwotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIGRpZ2VzdF9zaXplKTsKIH0KIAogUHlEb2NfU1RSVkFSKEVWUF91cGRhdGVfX2RvY19fLApAQCAtNzk4LDEyICs3NzYsMTAgQEAKIAogR0VOX0NPTlNUUlVDVE9SKG1kNSkKIEdFTl9DT05TVFJVQ1RPUihzaGExKQotI2lmZGVmIF9PUEVOU1NMX1NVUFBPUlRTX1NIQTIKIEdFTl9DT05TVFJVQ1RPUihzaGEyMjQpCiBHRU5fQ09OU1RSVUNUT1Ioc2hhMjU2KQogR0VOX0NPTlNUUlVDVE9SKHNoYTM4NCkKIEdFTl9DT05TVFJVQ1RPUihzaGE1MTIpCi0jZW5kaWYKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIApAQCAtODE1LDEyICs3OTEsMTAgQEAKICNlbmRpZgogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKG1kNSksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMSksCi0jaWZkZWYgX09QRU5TU0xfU1VQUE9SVFNfU0hBMgogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTIyNCksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMjU2KSwKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihzaGEzODQpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTUxMiksCi0jZW5kaWYKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC04NzcsMTEgKzg1MSw5IEBACiAgICAgLyogdGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIGJ5IHRoZSBjb252ZW5pZW5jZSBjb25zdHJ1Y3RvcnMgKi8KICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhtZDUpOwogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKHNoYTEpOwotI2lmZGVmIF9PUEVOU1NMX1NVUFBPUlRTX1NIQTIKICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhzaGEyMjQpOwogICAgIElOSVRfQ09OU1RSVUNUT1JfQ09OU1RBTlRTKHNoYTI1Nik7CiAgICAgSU5JVF9DT05TVFJVQ1RPUl9DT05TVEFOVFMoc2hhMzg0KTsKICAgICBJTklUX0NPTlNUUlVDVE9SX0NPTlNUQU5UUyhzaGE1MTIpOwotI2VuZGlmCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwppbmRleCAwNDg0NWYxLi5jMzQzODYyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKQEAgLTksOSArOSw5IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKIHN0YXRpYyBpbnQKLV9zaWZ0ZG93bihQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgcG9zKQorc2lmdGRvd24oUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IHBvcykKIHsKLSAgICBQeU9iamVjdCAqbmV3aXRlbSwgKnBhcmVudDsKKyAgICBQeU9iamVjdCAqbmV3aXRlbSwgKnBhcmVudCwgKiphcnI7CiAgICAgUHlfc3NpemVfdCBwYXJlbnRwb3MsIHNpemU7CiAgICAgaW50IGNtcDsKIApAQCAtMjQsMTIgKzI0LDEzIEBACiAKICAgICAvKiBGb2xsb3cgdGhlIHBhdGggdG8gdGhlIHJvb3QsIG1vdmluZyBwYXJlbnRzIGRvd24gdW50aWwgZmluZGluZwogICAgICAgIGEgcGxhY2UgbmV3aXRlbSBmaXRzLiAqLwotICAgIG5ld2l0ZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKTsKKyAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgIG5ld2l0ZW0gPSBhcnJbcG9zXTsKICAgICB3aGlsZSAocG9zID4gc3RhcnRwb3MpIHsKICAgICAgICAgcGFyZW50cG9zID0gKHBvcyAtIDEpID4+IDE7Ci0gICAgICAgIHBhcmVudCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MpOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKG5ld2l0ZW0sIHBhcmVudCwgUHlfTFQpOwotICAgICAgICBpZiAoY21wID09IC0xKQorICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKHNpemUgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMzgsMjAgKzM5LDIxIEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKGNtcCA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHBhcmVudCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MpOwotICAgICAgICBuZXdpdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBvcyk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCBwYXJlbnRwb3MsIG5ld2l0ZW0pOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCBwYXJlbnQpOworICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKKyAgICAgICAgbmV3aXRlbSA9IGFycltwb3NdOworICAgICAgICBhcnJbcGFyZW50cG9zXSA9IG5ld2l0ZW07CisgICAgICAgIGFycltwb3NdID0gcGFyZW50OwogICAgICAgICBwb3MgPSBwYXJlbnRwb3M7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50Ci1fc2lmdHVwKFB5TGlzdE9iamVjdCAqaGVhcCwgUHlfc3NpemVfdCBwb3MpCitzaWZ0dXAoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBlbmRwb3MsIGNoaWxkcG9zLCByaWdodHBvcywgbGltaXQ7Ci0gICAgUHlPYmplY3QgKnRtcDEsICp0bXAyOworICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgY2hpbGRwb3MsIGxpbWl0OworICAgIFB5T2JqZWN0ICp0bXAxLCAqdG1wMiwgKiphcnI7CiAgICAgaW50IGNtcDsKIAogICAgIGFzc2VydChQeUxpc3RfQ2hlY2soaGVhcCkpOwpAQCAtNjMsMjAgKzY1LDE5IEBACiAgICAgfQogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLworICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwotICAgICAgICByaWdodHBvcyA9IGNoaWxkcG9zICsgMTsKLSAgICAgICAgaWYgKHJpZ2h0cG9zIDwgZW5kcG9zKSB7CisgICAgICAgIGlmIChjaGlsZHBvcyArIDEgPCBlbmRwb3MpIHsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oaGVhcCwgY2hpbGRwb3MpLAotICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShoZWFwLCByaWdodHBvcyksCisgICAgICAgICAgICAgICAgYXJyW2NoaWxkcG9zXSwKKyAgICAgICAgICAgICAgICBhcnJbY2hpbGRwb3MgKyAxXSwKICAgICAgICAgICAgICAgICBQeV9MVCk7Ci0gICAgICAgICAgICBpZiAoY21wID09IC0xKQorICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgaWYgKGNtcCA9PSAwKQotICAgICAgICAgICAgICAgIGNoaWxkcG9zID0gcmlnaHRwb3M7CisgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtODQsMTQgKzg1LDE1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgdG1wMSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBjaGlsZHBvcyk7Ci0gICAgICAgIHRtcDIgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIGNoaWxkcG9zLCB0bXAyKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgdG1wMSk7CisgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOworICAgICAgICB0bXAyID0gYXJyW3Bvc107CisgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOworICAgICAgICBhcnJbcG9zXSA9IHRtcDE7CiAgICAgICAgIHBvcyA9IGNoaWxkcG9zOwogICAgIH0KICAgICAvKiBCdWJibGUgaXQgdXAgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuICovCi0gICAgcmV0dXJuIF9zaWZ0ZG93bihoZWFwLCBzdGFydHBvcywgcG9zKTsKKyAgICByZXR1cm4gc2lmdGRvd24oaGVhcCwgc3RhcnRwb3MsIHBvcyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMDcsMjAgKzEwOSwxOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBpdGVtKSA9PSAtMSkKKyAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBpdGVtKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoX3NpZnRkb3duKChQeUxpc3RPYmplY3QgKiloZWFwLCAwLCBQeUxpc3RfR0VUX1NJWkUoaGVhcCktMSkgPT0gLTEpCisgICAgaWYgKHNpZnRkb3duKChQeUxpc3RPYmplY3QgKiloZWFwLCAwLCBQeUxpc3RfR0VUX1NJWkUoaGVhcCktMSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXBwdXNoX2RvYywKICJoZWFwcHVzaChoZWFwLCBpdGVtKSAtPiBOb25lLiBQdXNoIGl0ZW0gb250byBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1oZWFwcG9wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaGVhcCkKK2hlYXBwb3BfaW50ZXJuYWwoUHlPYmplY3QgKmhlYXAsIGludCBzaWZ0dXBfZnVuYyhQeUxpc3RPYmplY3QgKiwgUHlfc3NpemVfdCkpCiB7CiAgICAgUHlPYmplY3QgKmxhc3RlbHQsICpyZXR1cm5pdGVtOwogICAgIFB5X3NzaXplX3QgbjsKQEAgLTEzMCw3ICsxMzEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiAjIHJhaXNlcyBhcHByb3ByaWF0ZSBJbmRleEVycm9yIGlmIGhlYXAgaXMgZW1wdHkgKi8KKyAgICAvKiByYWlzZXMgSW5kZXhFcnJvciBpZiB0aGUgaGVhcCBpcyBlbXB0eSAqLwogICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7CiAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtMTM5LDcgKzE0MCw3IEBACiAKICAgICBsYXN0ZWx0ID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIG4tMSkgOwogICAgIFB5X0lOQ1JFRihsYXN0ZWx0KTsKLSAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGhlYXAsIG4tMSwgbiwgTlVMTCkgPCAwKSB7CisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShoZWFwLCBuLTEsIG4sIE5VTEwpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihsYXN0ZWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQ5LDE4ICsxNTAsMjQgQEAKICAgICAgICAgcmV0dXJuIGxhc3RlbHQ7CiAgICAgcmV0dXJuaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgMCwgbGFzdGVsdCk7Ci0gICAgaWYgKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApID09IC0xKSB7CisgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSkgewogICAgICAgICBQeV9ERUNSRUYocmV0dXJuaXRlbSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2hlYXBwb3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQoreworICAgIHJldHVybiBoZWFwcG9wX2ludGVybmFsKGhlYXAsIHNpZnR1cCk7Cit9CisKIFB5RG9jX1NUUlZBUihoZWFwcG9wX2RvYywKICJQb3AgdGhlIHNtYWxsZXN0IGl0ZW0gb2ZmIHRoZSBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1oZWFwcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitoZWFwcmVwbGFjZV9pbnRlcm5hbChQeU9iamVjdCAqYXJncywgaW50IHNpZnR1cF9mdW5jKFB5TGlzdE9iamVjdCAqLCBQeV9zc2l6ZV90KSkKIHsKICAgICBQeU9iamVjdCAqaGVhcCwgKml0ZW0sICpyZXR1cm5pdGVtOwogCkBAIC0xNzIsNyArMTc5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9HRVRfU0laRShoZWFwKSA8IDEpIHsKKyAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGhlYXApID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTgwLDEzICsxODcsMTkgQEAKICAgICByZXR1cm5pdGVtID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwogICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgMCwgaXRlbSk7Ci0gICAgaWYgKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApID09IC0xKSB7CisgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSkgewogICAgICAgICBQeV9ERUNSRUYocmV0dXJuaXRlbSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gcmV0dXJuaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2hlYXByZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaGVhcHJlcGxhY2VfaW50ZXJuYWwoYXJncywgc2lmdHVwKTsKK30KKwogUHlEb2NfU1RSVkFSKGhlYXByZXBsYWNlX2RvYywKICJoZWFwcmVwbGFjZShoZWFwLCBpdGVtKSAtPiB2YWx1ZS4gUG9wIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQgc21hbGxlc3QgdmFsdWUsIGFuZCBhZGQgdGhlIG5ldyBpdGVtLlxuXAogXG5cCkBAIC0yMTEsMTMgKzIyNCwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGhlYXApIDwgMSkgeworICAgIGlmIChQeUxpc3RfR0VUX1NJWkUoaGVhcCkgPT0gMCkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0KIAogICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCksIGl0ZW0sIFB5X0xUKTsKLSAgICBpZiAoY21wID09IC0xKQorICAgIGlmIChjbXAgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY21wID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwpAQCAtMjMyLDcgKzI0NSw3IEBACiAgICAgcmV0dXJuaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIDAsIGl0ZW0pOwotICAgIGlmIChfc2lmdHVwKChQeUxpc3RPYmplY3QgKiloZWFwLCAwKSA9PSAtMSkgeworICAgIGlmIChzaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIDApKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR1cm5pdGVtKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjQ0LDggKzI1Nyw3MyBAQAogZnJvbSB0aGUgaGVhcC4gVGhlIGNvbWJpbmVkIGFjdGlvbiBydW5zIG1vcmUgZWZmaWNpZW50bHkgdGhhblxuXAogaGVhcHB1c2goKSBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGNhbGwgdG8gaGVhcHBvcCgpLiIpOwogCitzdGF0aWMgUHlfc3NpemVfdAora2VlcF90b3BfYml0KFB5X3NzaXplX3QgbikKK3sKKyAgICBpbnQgaSA9IDA7CisKKyAgICB3aGlsZSAobiA+IDEpIHsKKyAgICAgICAgbiA+Pj0gMTsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gbiA8PCBpOworfQorCisvKiBDYWNoZSBmcmllbmRseSB2ZXJzaW9uIG9mIGhlYXBpZnkoKQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgQnVpbGQtdXAgYSBoZWFwIGluIE8obikgdGltZSBieSBwZXJmb3JtaW5nIHNpZnR1cCgpIG9wZXJhdGlvbnMKKyAgIG9uIG5vZGVzIHdob3NlIGNoaWxkcmVuIGFyZSBhbHJlYWR5IGhlYXBzLgorCisgICBUaGUgc2ltcGxlc3Qgd2F5IGlzIHRvIHNpZnQgdGhlIG5vZGVzIGluIHJldmVyc2Ugb3JkZXIgZnJvbQorICAgbi8vMi0xIHRvIDAgaW5jbHVzaXZlLiAgVGhlIGRvd25zaWRlIGlzIHRoYXQgY2hpbGRyZW4gbWF5IGJlCisgICBvdXQgb2YgY2FjaGUgYnkgdGhlIHRpbWUgdGhlaXIgcGFyZW50IGlzIHJlYWNoZWQuCisKKyAgIEEgYmV0dGVyIHdheSBpcyB0byBub3Qgd2FpdCBmb3IgdGhlIGNoaWxkcmVuIHRvIGdvIG91dCBvZiBjYWNoZS4KKyAgIE9uY2UgYSBzaWJsaW5nIHBhaXIgb2YgY2hpbGQgbm9kZXMgaGF2ZSBiZWVuIHNpZnRlZCwgaW1tZWRpYXRlbHkKKyAgIHNpZnQgdGhlaXIgcGFyZW50IG5vZGUgKHdoaWxlIHRoZSBjaGlsZHJlbiBhcmUgc3RpbGwgaW4gY2FjaGUpLgorCisgICBCb3RoIHdheXMgYnVpbGQgY2hpbGQgaGVhcHMgYmVmb3JlIHRoZWlyIHBhcmVudHMsIHNvIGJvdGggd2F5cworICAgZG8gdGhlIGV4YWN0IHNhbWUgbnVtYmVyIG9mIGNvbXBhcmlzb25zIGFuZCBwcm9kdWNlIGV4YWN0bHkKKyAgIHRoZSBzYW1lIGhlYXAuICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIHRyYXZlcnNhbAorICAgb3JkZXIgaXMgb3B0aW1pemVkIGZvciBjYWNoZSBlZmZpY2llbmN5LgorKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWhlYXBpZnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpoZWFwKQorY2FjaGVfZnJpZW5kbHlfaGVhcGlmeShQeU9iamVjdCAqaGVhcCwgaW50IHNpZnR1cF9mdW5jKFB5TGlzdE9iamVjdCAqLCBQeV9zc2l6ZV90KSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIGosIG0sIG1oYWxmLCBsZWZ0bW9zdDsKKworICAgIG0gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkgPj4gMTsgICAgICAgICAvKiBpbmRleCBvZiBmaXJzdCBjaGlsZGxlc3Mgbm9kZSAqLworICAgIGxlZnRtb3N0ID0ga2VlcF90b3BfYml0KG0gKyAxKSAtIDE7ICAgICAvKiBsZWZ0bW9zdCBub2RlIGluIHJvdyBvZiBtICovCisgICAgbWhhbGYgPSBtID4+IDE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCBvZiBmaXJzdCBjaGlsZGxlc3Mgbm9kZSAqLworCisgICAgZm9yIChpID0gbGVmdG1vc3QgLSAxIDsgaSA+PSBtaGFsZiA7IGktLSkgeworICAgICAgICBqID0gaTsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGlmIChzaWZ0dXBfZnVuYygoUHlMaXN0T2JqZWN0ICopaGVhcCwgaikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAoIShqICYgMSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBqID4+PSAxOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpID0gbSAtIDEgOyBpID49IGxlZnRtb3N0IDsgaS0tKSB7CisgICAgICAgIGogPSBpOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKHNpZnR1cF9mdW5jKChQeUxpc3RPYmplY3QgKiloZWFwLCBqKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmICghKGogJiAxKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGogPj49IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitoZWFwaWZ5X2ludGVybmFsKFB5T2JqZWN0ICpoZWFwLCBpbnQgc2lmdHVwX2Z1bmMoUHlMaXN0T2JqZWN0ICosIFB5X3NzaXplX3QpKQogewogICAgIFB5X3NzaXplX3QgaSwgbjsKIApAQCAtMjU0LDcgKzMzMiwxNCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICAvKiBGb3IgaGVhcHMgbGlrZWx5IHRvIGJlIGJpZ2dlciB0aGFuIEwxIGNhY2hlLCB3ZSB1c2UgdGhlIGNhY2hlCisgICAgICAgZnJpZW5kbHkgaGVhcGlmeSBmdW5jdGlvbi4gIEZvciBzbWFsbGVyIGhlYXBzIHRoYXQgZml0IGVudGlyZWx5CisgICAgICAgaW4gY2FjaGUsIHdlIHByZWZlciB0aGUgc2ltcGxlciBhbGdvcml0aG0gd2l0aCBsZXNzIGJyYW5jaGluZy4KKyAgICAqLwogICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7CisgICAgaWYgKG4gPiAyNTAwKQorICAgICAgICByZXR1cm4gY2FjaGVfZnJpZW5kbHlfaGVhcGlmeShoZWFwLCBzaWZ0dXBfZnVuYyk7CisKICAgICAvKiBUcmFuc2Zvcm0gYm90dG9tLXVwLiAgVGhlIGxhcmdlc3QgaW5kZXggdGhlcmUncyBhbnkgcG9pbnQgdG8KICAgICAgICBsb29raW5nIGF0IGlzIHRoZSBsYXJnZXN0IHdpdGggYSBjaGlsZCBpbmRleCBpbi1yYW5nZSwgc28gbXVzdAogICAgICAgIGhhdmUgMippICsgMSA8IG4sIG9yIGkgPCAobi0xKS8yLiAgSWYgbiBpcyBldmVuID0gMipqLCB0aGlzIGlzCkBAIC0yNjIsMTQyICszNDcsNjggQEAKICAgICAgICBuIGlzIG9kZCA9IDIqaisxLCB0aGlzIGlzICgyKmorMS0xKS8yID0gaiBzbyBqLTEgaXMgdGhlIGxhcmdlc3QsCiAgICAgICAgYW5kIHRoYXQncyBhZ2FpbiBuLy8yLTEuCiAgICAgKi8KLSAgICBmb3IgKGk9bi8yLTEgOyBpPj0wIDsgaS0tKQotICAgICAgICBpZihfc2lmdHVwKChQeUxpc3RPYmplY3QgKiloZWFwLCBpKSA9PSAtMSkKKyAgICBmb3IgKGkgPSBuLzIgLSAxIDsgaSA+PSAwIDsgaS0tKQorICAgICAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraGVhcGlmeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCit7CisgICAgcmV0dXJuIGhlYXBpZnlfaW50ZXJuYWwoaGVhcCwgc2lmdHVwKTsKIH0KIAogUHlEb2NfU1RSVkFSKGhlYXBpZnlfZG9jLAogIlRyYW5zZm9ybSBsaXN0IGludG8gYSBoZWFwLCBpbi1wbGFjZSwgaW4gTyhsZW4oaGVhcCkpIHRpbWUuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1ubGFyZ2VzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmhlYXA9TlVMTCwgKmVsZW0sICppdGVyYWJsZSwgKnNvbCwgKml0LCAqb2xkZWxlbTsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgaW50IGNtcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86bmxhcmdlc3QiLCAmbiwgJml0ZXJhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGhlYXAgPSBQeUxpc3RfTmV3KDApOwotICAgIGlmIChoZWFwID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrICl7Ci0gICAgICAgIGVsZW0gPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBnb3RvIHNvcnRpdDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChoZWFwLCBlbGVtKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9HRVRfU0laRShoZWFwKSA9PSAwKQotICAgICAgICBnb3RvIHNvcnRpdDsKLQotICAgIGZvciAoaT1uLzItMSA7IGk+PTAgOyBpLS0pCi0gICAgICAgIGlmKF9zaWZ0dXAoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsOwotCi0gICAgc29sID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIDApOwotICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGVsZW0gPSBQeUl0ZXJfTmV4dChpdCk7Ci0gICAgICAgIGlmIChlbGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBnb3RvIHNvcnRpdDsKLSAgICAgICAgfQotICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc29sLCBlbGVtLCBQeV9MVCk7Ci0gICAgICAgIGlmIChjbXAgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICBpZiAoY21wID09IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIG9sZGVsZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCAwLCBlbGVtKTsKLSAgICAgICAgUHlfREVDUkVGKG9sZGVsZW0pOwotICAgICAgICBpZiAoX3NpZnR1cCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIHNvbCA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICB9Ci1zb3J0aXQ6Ci0gICAgaWYgKFB5TGlzdF9Tb3J0KGhlYXApID09IC0xKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKFB5TGlzdF9SZXZlcnNlKGhlYXApID09IC0xKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICByZXR1cm4gaGVhcDsKLQotZmFpbDoKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYoaGVhcCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLVB5RG9jX1NUUlZBUihubGFyZ2VzdF9kb2MsCi0iRmluZCB0aGUgbiBsYXJnZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC5cblwKLVxuXAotRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwgcmV2ZXJzZT1UcnVlKVs6bl1cbiIpOwotCiBzdGF0aWMgaW50Ci1fc2lmdGRvd25tYXgoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IHBvcykKK3NpZnRkb3duX21heChQeUxpc3RPYmplY3QgKmhlYXAsIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgcG9zKQogewotICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqcGFyZW50OworICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqcGFyZW50LCAqKmFycjsKKyAgICBQeV9zc2l6ZV90IHBhcmVudHBvcywgc2l6ZTsKICAgICBpbnQgY21wOwotICAgIFB5X3NzaXplX3QgcGFyZW50cG9zOwogCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhoZWFwKSk7Ci0gICAgaWYgKHBvcyA+PSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKKyAgICBzaXplID0gUHlMaXN0X0dFVF9TSVpFKGhlYXApOworICAgIGlmIChwb3MgPj0gc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgbmV3aXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpOwotICAgIFB5X0lOQ1JFRihuZXdpdGVtKTsKICAgICAvKiBGb2xsb3cgdGhlIHBhdGggdG8gdGhlIHJvb3QsIG1vdmluZyBwYXJlbnRzIGRvd24gdW50aWwgZmluZGluZwogICAgICAgIGEgcGxhY2UgbmV3aXRlbSBmaXRzLiAqLwotICAgIHdoaWxlIChwb3MgPiBzdGFydHBvcyl7CisgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKKyAgICBuZXdpdGVtID0gYXJyW3Bvc107CisgICAgd2hpbGUgKHBvcyA+IHN0YXJ0cG9zKSB7CiAgICAgICAgIHBhcmVudHBvcyA9IChwb3MgLSAxKSA+PiAxOwotICAgICAgICBwYXJlbnQgPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgcGFyZW50cG9zKTsKKyAgICAgICAgcGFyZW50ID0gYXJyW3BhcmVudHBvc107CiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChwYXJlbnQsIG5ld2l0ZW0sIFB5X0xUKTsKLSAgICAgICAgaWYgKGNtcCA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG5ld2l0ZW0pOworICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHNpemUgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNtcCA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X0lOQ1JFRihwYXJlbnQpOwotICAgICAgICBQeV9ERUNSRUYoUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHBvcykpOwotICAgICAgICBQeUxpc3RfU0VUX0lURU0oaGVhcCwgcG9zLCBwYXJlbnQpOworICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOworICAgICAgICBwYXJlbnQgPSBhcnJbcGFyZW50cG9zXTsKKyAgICAgICAgbmV3aXRlbSA9IGFycltwb3NdOworICAgICAgICBhcnJbcGFyZW50cG9zXSA9IG5ld2l0ZW07CisgICAgICAgIGFycltwb3NdID0gcGFyZW50OwogICAgICAgICBwb3MgPSBwYXJlbnRwb3M7CiAgICAgfQotICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLV9zaWZ0dXBtYXgoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKK3NpZnR1cF9tYXgoUHlMaXN0T2JqZWN0ICpoZWFwLCBQeV9zc2l6ZV90IHBvcykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBlbmRwb3MsIGNoaWxkcG9zLCByaWdodHBvcywgbGltaXQ7CisgICAgUHlfc3NpemVfdCBzdGFydHBvcywgZW5kcG9zLCBjaGlsZHBvcywgbGltaXQ7CisgICAgUHlPYmplY3QgKnRtcDEsICp0bXAyLCAqKmFycjsKICAgICBpbnQgY21wOwotICAgIFB5T2JqZWN0ICpuZXdpdGVtLCAqdG1wOwogCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhoZWFwKSk7CiAgICAgZW5kcG9zID0gUHlMaXN0X0dFVF9TSVpFKGhlYXApOwpAQCAtNDA2LDEyNSArNDE3LDYyIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgbmV3aXRlbSA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCBwb3MpOwotICAgIFB5X0lOQ1JFRihuZXdpdGVtKTsKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KKyAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCiAgICAgd2hpbGUgKHBvcyA8IGxpbWl0KSB7CiAgICAgICAgIC8qIFNldCBjaGlsZHBvcyB0byBpbmRleCBvZiBzbWFsbGVyIGNoaWxkLiAgICovCiAgICAgICAgIGNoaWxkcG9zID0gMipwb3MgKyAxOyAgICAvKiBsZWZ0bW9zdCBjaGlsZCBwb3NpdGlvbiAgKi8KLSAgICAgICAgcmlnaHRwb3MgPSBjaGlsZHBvcyArIDE7Ci0gICAgICAgIGlmIChyaWdodHBvcyA8IGVuZHBvcykgeworICAgICAgICBpZiAoY2hpbGRwb3MgKyAxIDwgZW5kcG9zKSB7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKGhlYXAsIHJpZ2h0cG9zKSwKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oaGVhcCwgY2hpbGRwb3MpLAorICAgICAgICAgICAgICAgIGFycltjaGlsZHBvcyArIDFdLAorICAgICAgICAgICAgICAgIGFycltjaGlsZHBvc10sCiAgICAgICAgICAgICAgICAgUHlfTFQpOwotICAgICAgICAgICAgaWYgKGNtcCA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdpdGVtKTsKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCisgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNtcCA9PSAwKQotICAgICAgICAgICAgICAgIGNoaWxkcG9zID0gcmlnaHRwb3M7CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgdG1wID0gUHlMaXN0X0dFVF9JVEVNKGhlYXAsIGNoaWxkcG9zKTsKLSAgICAgICAgUHlfSU5DUkVGKHRtcCk7Ci0gICAgICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCBwb3MsIHRtcCk7CisgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CisgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOworICAgICAgICB0bXAyID0gYXJyW3Bvc107CisgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOworICAgICAgICBhcnJbcG9zXSA9IHRtcDE7CiAgICAgICAgIHBvcyA9IGNoaWxkcG9zOwogICAgIH0KLQotICAgIC8qIFRoZSBsZWFmIGF0IHBvcyBpcyBlbXB0eSBub3cuICBQdXQgbmV3aXRlbSB0aGVyZSwgYW5kIGJ1YmJsZQotICAgICAgIGl0IHVwIHRvIGl0cyBmaW5hbCByZXN0aW5nIHBsYWNlIChieSBzaWZ0aW5nIGl0cyBwYXJlbnRzIGRvd24pLiAqLwotICAgIFB5X0RFQ1JFRihQeUxpc3RfR0VUX0lURU0oaGVhcCwgcG9zKSk7Ci0gICAgUHlMaXN0X1NFVF9JVEVNKGhlYXAsIHBvcywgbmV3aXRlbSk7Ci0gICAgcmV0dXJuIF9zaWZ0ZG93bm1heChoZWFwLCBzdGFydHBvcywgcG9zKTsKKyAgICAvKiBCdWJibGUgaXQgdXAgdG8gaXRzIGZpbmFsIHJlc3RpbmcgcGxhY2UgKGJ5IHNpZnRpbmcgaXRzIHBhcmVudHMgZG93bikuICovCisgICAgcmV0dXJuIHNpZnRkb3duX21heChoZWFwLCBzdGFydHBvcywgcG9zKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5zbWFsbGVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitoZWFwcG9wX21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmhlYXApCiB7Ci0gICAgUHlPYmplY3QgKmhlYXA9TlVMTCwgKmVsZW0sICppdGVyYWJsZSwgKmxvcywgKml0LCAqb2xkZWxlbTsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgaW50IGNtcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86bnNtYWxsZXN0IiwgJm4sICZpdGVyYWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoZWFwID0gUHlMaXN0X05ldygwKTsKLSAgICBpZiAoaGVhcCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKyApewotICAgICAgICBlbGVtID0gUHlJdGVyX05leHQoaXQpOwotICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ290byBzb3J0aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoaGVhcCwgZWxlbSkgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgfQotICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCk7Ci0gICAgaWYgKG4gPT0gMCkKLSAgICAgICAgZ290byBzb3J0aXQ7Ci0KLSAgICBmb3IgKGk9bi8yLTEgOyBpPj0wIDsgaS0tKQotICAgICAgICBpZihfc2lmdHVwbWF4KChQeUxpc3RPYmplY3QgKiloZWFwLCBpKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLQotICAgIGxvcyA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICBlbGVtID0gUHlJdGVyX05leHQoaXQpOwotICAgICAgICBpZiAoZWxlbSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ290byBzb3J0aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGVsZW0sIGxvcywgUHlfTFQpOwotICAgICAgICBpZiAoY21wID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNtcCA9PSAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG9sZGVsZW0gPSBQeUxpc3RfR0VUX0lURU0oaGVhcCwgMCk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShoZWFwLCAwLCBlbGVtKTsKLSAgICAgICAgUHlfREVDUkVGKG9sZGVsZW0pOwotICAgICAgICBpZiAoX3NpZnR1cG1heCgoUHlMaXN0T2JqZWN0ICopaGVhcCwgMCkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGxvcyA9IFB5TGlzdF9HRVRfSVRFTShoZWFwLCAwKTsKLSAgICB9Ci0KLXNvcnRpdDoKLSAgICBpZiAoUHlMaXN0X1NvcnQoaGVhcCkgPT0gLTEpCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBoZWFwOwotCi1mYWlsOgotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfWERFQ1JFRihoZWFwKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gaGVhcHBvcF9pbnRlcm5hbChoZWFwLCBzaWZ0dXBfbWF4KTsKIH0KIAotUHlEb2NfU1RSVkFSKG5zbWFsbGVzdF9kb2MsCi0iRmluZCB0aGUgbiBzbWFsbGVzdCBlbGVtZW50cyBpbiBhIGRhdGFzZXQuXG5cCi1cblwKLUVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUpWzpuXVxuIik7CitQeURvY19TVFJWQVIoaGVhcHBvcF9tYXhfZG9jLCAiTWF4aGVhcCB2YXJpYW50IG9mIGhlYXBwb3AuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitoZWFwcmVwbGFjZV9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBoZWFwcmVwbGFjZV9pbnRlcm5hbChhcmdzLCBzaWZ0dXBfbWF4KTsKK30KKworUHlEb2NfU1RSVkFSKGhlYXByZXBsYWNlX21heF9kb2MsICJNYXhoZWFwIHZhcmlhbnQgb2YgaGVhcHJlcGxhY2UiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2hlYXBpZnlfbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaGVhcCkKK3sKKyAgICByZXR1cm4gaGVhcGlmeV9pbnRlcm5hbChoZWFwLCBzaWZ0dXBfbWF4KTsKK30KKworUHlEb2NfU1RSVkFSKGhlYXBpZnlfbWF4X2RvYywgIk1heGhlYXAgdmFyaWFudCBvZiBoZWFwaWZ5LiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgaGVhcHFfbWV0aG9kc1tdID0gewogICAgIHsiaGVhcHB1c2giLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWhlYXBwdXNoLApAQCAtNTM3LDEwICs0ODUsMTIgQEAKICAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgaGVhcHJlcGxhY2VfZG9jfSwKICAgICB7ImhlYXBpZnkiLCAgICAgICAgIChQeUNGdW5jdGlvbiloZWFwaWZ5LAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICBoZWFwaWZ5X2RvY30sCi0gICAgeyJubGFyZ2VzdCIsICAgICAgICAoUHlDRnVuY3Rpb24pbmxhcmdlc3QsCi0gICAgICAgIE1FVEhfVkFSQVJHUywgICAgICAgICAgIG5sYXJnZXN0X2RvY30sCi0gICAgeyJuc21hbGxlc3QiLCAgICAgICAoUHlDRnVuY3Rpb24pbnNtYWxsZXN0LAotICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICBuc21hbGxlc3RfZG9jfSwKKyAgICB7Il9oZWFwcG9wX21heCIsICAgIChQeUNGdW5jdGlvbiloZWFwcG9wX21heCwKKyAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgaGVhcHBvcF9tYXhfZG9jfSwKKyAgICB7Il9oZWFwcmVwbGFjZV9tYXgiLChQeUNGdW5jdGlvbiloZWFwcmVwbGFjZV9tYXgsCisgICAgICAgIE1FVEhfVkFSQVJHUywgICAgICAgICAgIGhlYXByZXBsYWNlX21heF9kb2N9LAorICAgIHsiX2hlYXBpZnlfbWF4IiwgICAgKFB5Q0Z1bmN0aW9uKWhlYXBpZnlfbWF4LAorICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICBoZWFwaWZ5X21heF9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IDQ1YzMxYTUuLjUyOGJjZDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC05MywxNDAgKzkzLDE0NSBAQAogLyoKICAqIFRoZSBtYWluIG9wZW4oKSBmdW5jdGlvbgogICovCi1QeURvY19TVFJWQVIob3Blbl9kb2MsCi0ib3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLFxuIgotIiAgICAgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkgLT4gZmlsZSBvYmplY3RcbiIKLSJcbiIKLSJPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLlxuIgotIlxuIgotImZpbGUgaXMgZWl0aGVyIGEgdGV4dCBvciBieXRlIHN0cmluZyBnaXZpbmcgdGhlIG5hbWUgKGFuZCB0aGUgcGF0aFxuIgotImlmIHRoZSBmaWxlIGlzbid0IGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0b1xuIgotImJlIG9wZW5lZCBvciBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZVxuIgotIndyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlXG4iCi0icmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pXG4iCi0iXG4iCi0ibW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGVcbiIKLSJpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHRcbiIKLSJtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCi0iaXQgYWxyZWFkeSBleGlzdHMpLCAneCcgZm9yIGNyZWF0aW5nIGFuZCB3cml0aW5nIHRvIGEgbmV3IGZpbGUsIGFuZFxuIgotIidhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzXG4iCi0iYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uKS5cbiIKLSJJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm1cbiIKLSJkZXBlbmRlbnQ6IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaXMgY2FsbGVkIHRvIGdldCB0aGVcbiIKLSJjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5XG4iCi0ibW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZTpcbiIKLSJcbiIKLSI9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCi0iQ2hhcmFjdGVyIE1lYW5pbmdcbiIKLSItLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCi0iJ3InICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpXG4iCi0iJ3cnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3RcbiIKLSIneCcgICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgYW5kIG9wZW4gaXQgZm9yIHdyaXRpbmdcbiIKLSInYScgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzXG4iCi0iJ2InICAgICAgIGJpbmFyeSBtb2RlXG4iCi0iJ3QnICAgICAgIHRleHQgbW9kZSAoZGVmYXVsdClcbiIKLSInKycgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpXG4iCi0iJ1UnICAgICAgIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgKGRlcHJlY2F0ZWQpXG4iCi0iPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgotIlxuIgotIlRoZSBkZWZhdWx0IG1vZGUgaXMgJ3J0JyAob3BlbiBmb3IgcmVhZGluZyB0ZXh0KS4gRm9yIGJpbmFyeSByYW5kb21cbiIKLSJhY2Nlc3MsIHRoZSBtb2RlICd3K2InIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGVcbiIKLSIncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmRcbiIKLSJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCi0iXG4iCi0iUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgotImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpblxuIgotImJpbmFyeSBtb2RlIChhcHBlbmRpbmcgJ2InIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXNcbiIKLSJieXRlcyBvYmplY3RzIHdpdGhvdXQgYW55IGRlY29kaW5nLiBJbiB0ZXh0IG1vZGUgKHRoZSBkZWZhdWx0LCBvciB3aGVuXG4iCi0iJ3QnIGlzIGFwcGVuZGVkIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFyZVxuIgotInJldHVybmVkIGFzIHN0cmluZ3MsIHRoZSBieXRlcyBoYXZpbmcgYmVlbiBmaXJzdCBkZWNvZGVkIHVzaW5nIGFcbiIKLSJwbGF0Zm9ybS1kZXBlbmRlbnQgZW5jb2Rpbmcgb3IgdXNpbmcgdGhlIHNwZWNpZmllZCBlbmNvZGluZyBpZiBnaXZlbi5cbiIKLSJcbiIKLSInVScgbW9kZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBmdXR1cmUgdmVyc2lvbnNcbiIKLSJvZiBQeXRob24uICBJdCBoYXMgbm8gZWZmZWN0IGluIFB5dGhvbiAzLiAgVXNlIG5ld2xpbmUgdG8gY29udHJvbFxuIgotInVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLlxuIgotIlxuIgotImJ1ZmZlcmluZyBpcyBhbiBvcHRpb25hbCBpbnRlZ2VyIHVzZWQgdG8gc2V0IHRoZSBidWZmZXJpbmcgcG9saWN5LlxuIgotIlBhc3MgMCB0byBzd2l0Y2ggYnVmZmVyaW5nIG9mZiAob25seSBhbGxvd2VkIGluIGJpbmFyeSBtb2RlKSwgMSB0byBzZWxlY3RcbiIKLSJsaW5lIGJ1ZmZlcmluZyAob25seSB1c2FibGUgaW4gdGV4dCBtb2RlKSwgYW5kIGFuIGludGVnZXIgPiAxIHRvIGluZGljYXRlXG4iCi0idGhlIHNpemUgb2YgYSBmaXhlZC1zaXplIGNodW5rIGJ1ZmZlci4gIFdoZW4gbm8gYnVmZmVyaW5nIGFyZ3VtZW50IGlzXG4iCi0iZ2l2ZW4sIHRoZSBkZWZhdWx0IGJ1ZmZlcmluZyBwb2xpY3kgd29ya3MgYXMgZm9sbG93czpcbiIKLSJcbiIKLSIqIEJpbmFyeSBmaWxlcyBhcmUgYnVmZmVyZWQgaW4gZml4ZWQtc2l6ZSBjaHVua3M7IHRoZSBzaXplIG9mIHRoZSBidWZmZXJcbiIKLSIgIGlzIGNob3NlbiB1c2luZyBhIGhldXJpc3RpYyB0cnlpbmcgdG8gZGV0ZXJtaW5lIHRoZSB1bmRlcmx5aW5nIGRldmljZSdzXG4iCi0iICBcImJsb2NrIHNpemVcIiBhbmQgZmFsbGluZyBiYWNrIG9uIGBpby5ERUZBVUxUX0JVRkZFUl9TSVpFYC5cbiIKLSIgIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy5cbiIKLSJcbiIKLSIqIFwiSW50ZXJhY3RpdmVcIiB0ZXh0IGZpbGVzIChmaWxlcyBmb3Igd2hpY2ggaXNhdHR5KCkgcmV0dXJucyBUcnVlKVxuIgotIiAgdXNlIGxpbmUgYnVmZmVyaW5nLiAgT3RoZXIgdGV4dCBmaWxlcyB1c2UgdGhlIHBvbGljeSBkZXNjcmliZWQgYWJvdmVcbiIKLSIgIGZvciBiaW5hcnkgZmlsZXMuXG4iCi0iXG4iCi0iZW5jb2RpbmcgaXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gZGVjb2RlIG9yIGVuY29kZSB0aGVcbiIKLSJmaWxlLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBlbmNvZGluZyBpc1xuIgotInBsYXRmb3JtIGRlcGVuZGVudCwgYnV0IGFueSBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgUHl0aG9uIGNhbiBiZVxuIgotInBhc3NlZC4gIFNlZSB0aGUgY29kZWNzIG1vZHVsZSBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGVuY29kaW5ncy5cbiIKLSJcbiIKLSJlcnJvcnMgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGhvdyBlbmNvZGluZyBlcnJvcnMgYXJlIHRvXG4iCi0iYmUgaGFuZGxlZC0tLXRoaXMgYXJndW1lbnQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGJpbmFyeSBtb2RlLiBQYXNzXG4iCi0iJ3N0cmljdCcgdG8gcmFpc2UgYSBWYWx1ZUVycm9yIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBlbmNvZGluZyBlcnJvclxuIgotIih0aGUgZGVmYXVsdCBvZiBOb25lIGhhcyB0aGUgc2FtZSBlZmZlY3QpLCBvciBwYXNzICdpZ25vcmUnIHRvIGlnbm9yZVxuIgotImVycm9ycy4gKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZyBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLilcbiIKLSJTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gJ2hlbHAoY29kZWNzLkNvZGVjKSdcbiIKLSJmb3IgYSBsaXN0IG9mIHRoZSBwZXJtaXR0ZWQgZW5jb2RpbmcgZXJyb3Igc3RyaW5ncy5cbiIKLSJcbiIKLSJuZXdsaW5lIGNvbnRyb2xzIGhvdyB1bml2ZXJzYWwgbmV3bGluZXMgd29ya3MgKGl0IG9ubHkgYXBwbGllcyB0byB0ZXh0XG4iCi0ibW9kZSkuIEl0IGNhbiBiZSBOb25lLCAnJywgJ1xcbicsICdcXHInLCBhbmQgJ1xcclxcbicuICBJdCB3b3JrcyBhc1xuIgotImZvbGxvd3M6XG4iCi0iXG4iCi0iKiBPbiBpbnB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpc1xuIgotIiAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xcbicsICdcXHInLCBvciAnXFxyXFxuJywgYW5kXG4iCi0iICB0aGVzZSBhcmUgdHJhbnNsYXRlZCBpbnRvICdcXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKLSIgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKLSIgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mXG4iCi0iICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgotIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgotIlxuIgotIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXFxuJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlXG4iCi0iICB0cmFuc2xhdGVkIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaW5lIHNlcGFyYXRvciwgb3MubGluZXNlcC4gSWZcbiIKLSIgIG5ld2xpbmUgaXMgJycgb3IgJ1xcbicsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueVxuIgotIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZFxuIgotIiAgdG8gdGhlIGdpdmVuIHN0cmluZy5cbiIKLSJcbiIKLSJJZiBjbG9zZWZkIGlzIEZhbHNlLCB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBrZXB0IG9wZW5cbiIKLSJ3aGVuIHRoZSBmaWxlIGlzIGNsb3NlZC4gVGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4gYSBmaWxlIG5hbWUgaXMgZ2l2ZW5cbiIKLSJhbmQgbXVzdCBiZSBUcnVlIGluIHRoYXQgY2FzZS5cbiIKLSJcbiIKLSJBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnkgcGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGVcbiIKLSJ1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnlcbiIKLSJjYWxsaW5nICpvcGVuZXIqIHdpdGggKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW5cbiIKLSJmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHlcbiIKLSJzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuXG4iCi0iXG4iCi0ib3BlbigpIHJldHVybnMgYSBmaWxlIG9iamVjdCB3aG9zZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1vZGUsIGFuZFxuIgotInRocm91Z2ggd2hpY2ggdGhlIHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucyBzdWNoIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmdcbiIKLSJhcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsXG4iCi0iJ3InLCAnd3QnLCAncnQnLCBldGMuKSwgaXQgcmV0dXJucyBhIFRleHRJT1dyYXBwZXIuIFdoZW4gdXNlZCB0byBvcGVuXG4iCi0iYSBmaWxlIGluIGEgYmluYXJ5IG1vZGUsIHRoZSByZXR1cm5lZCBjbGFzcyB2YXJpZXM6IGluIHJlYWQgYmluYXJ5XG4iCi0ibW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnlcbiIKLSJtb2RlcywgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkV3JpdGVyLCBhbmQgaW4gcmVhZC93cml0ZSBtb2RlLCBpdCByZXR1cm5zXG4iCi0iYSBCdWZmZXJlZFJhbmRvbS5cbiIKLSJcbiIKLSJJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhIHN0cmluZyBvciBieXRlYXJyYXkgYXMgYSBmaWxlIGZvciBib3RoXG4iCi0icmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGVcbiIKLSJvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlXG4iCi0ib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuXG4iCi0gICAgKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KKworX2lvLm9wZW4KKyAgICBmaWxlOiBvYmplY3QKKyAgICBtb2RlOiBzdHIgPSAiciIKKyAgICBidWZmZXJpbmc6IGludCA9IC0xCisgICAgZW5jb2Rpbmc6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBuZXdsaW5lOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgY2xvc2VmZDogaW50KGNfZGVmYXVsdD0iMSIpID0gVHJ1ZQorICAgIG9wZW5lcjogb2JqZWN0ID0gTm9uZQorCitPcGVuIGZpbGUgYW5kIHJldHVybiBhIHN0cmVhbS4gIFJhaXNlIElPRXJyb3IgdXBvbiBmYWlsdXJlLgorCitmaWxlIGlzIGVpdGhlciBhIHRleHQgb3IgYnl0ZSBzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIChhbmQgdGhlIHBhdGgKK2lmIHRoZSBmaWxlIGlzbid0IGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0bworYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlCit3cmFwcGVkLiAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZQorcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pCisKK21vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlCitpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQKK21vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYKK2l0IGFscmVhZHkgZXhpc3RzKSwgJ3gnIGZvciBjcmVhdGluZyBhbmQgd3JpdGluZyB0byBhIG5ldyBmaWxlLCBhbmQKKydhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzCithcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLgorSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtCitkZXBlbmRlbnQ6IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgaXMgY2FsbGVkIHRvIGdldCB0aGUKK2N1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnkKK21vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6CisKKz09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NoYXJhY3RlciBNZWFuaW5nCistLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdCkKKyd3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0CisneCcgICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgYW5kIG9wZW4gaXQgZm9yIHdyaXRpbmcKKydhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHMKKydiJyAgICAgICBiaW5hcnkgbW9kZQorJ3QnICAgICAgIHRleHQgbW9kZSAoZGVmYXVsdCkKKycrJyAgICAgICBvcGVuIGEgZGlzayBmaWxlIGZvciB1cGRhdGluZyAocmVhZGluZyBhbmQgd3JpdGluZykKKydVJyAgICAgICB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIChkZXByZWNhdGVkKQorPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tCithY2Nlc3MsIHRoZSBtb2RlICd3K2InIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGUKKydyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZAorcmFpc2VzIGFuIGBGaWxlRXhpc3RzRXJyb3JgIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLgorCitQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsCitldmVuIHdoZW4gdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2Vzbid0LiBGaWxlcyBvcGVuZWQgaW4KK2JpbmFyeSBtb2RlIChhcHBlbmRpbmcgJ2InIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXMKK2J5dGVzIG9iamVjdHMgd2l0aG91dCBhbnkgZGVjb2RpbmcuIEluIHRleHQgbW9kZSAodGhlIGRlZmF1bHQsIG9yIHdoZW4KKyd0JyBpcyBhcHBlbmRlZCB0byB0aGUgbW9kZSBhcmd1bWVudCksIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhcmUKK3JldHVybmVkIGFzIHN0cmluZ3MsIHRoZSBieXRlcyBoYXZpbmcgYmVlbiBmaXJzdCBkZWNvZGVkIHVzaW5nIGEKK3BsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLgorCisnVScgbW9kZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBmdXR1cmUgdmVyc2lvbnMKK29mIFB5dGhvbi4gIEl0IGhhcyBubyBlZmZlY3QgaW4gUHl0aG9uIDMuICBVc2UgbmV3bGluZSB0byBjb250cm9sCit1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS4KKworYnVmZmVyaW5nIGlzIGFuIG9wdGlvbmFsIGludGVnZXIgdXNlZCB0byBzZXQgdGhlIGJ1ZmZlcmluZyBwb2xpY3kuCitQYXNzIDAgdG8gc3dpdGNoIGJ1ZmZlcmluZyBvZmYgKG9ubHkgYWxsb3dlZCBpbiBiaW5hcnkgbW9kZSksIDEgdG8gc2VsZWN0CitsaW5lIGJ1ZmZlcmluZyAob25seSB1c2FibGUgaW4gdGV4dCBtb2RlKSwgYW5kIGFuIGludGVnZXIgPiAxIHRvIGluZGljYXRlCit0aGUgc2l6ZSBvZiBhIGZpeGVkLXNpemUgY2h1bmsgYnVmZmVyLiAgV2hlbiBubyBidWZmZXJpbmcgYXJndW1lbnQgaXMKK2dpdmVuLCB0aGUgZGVmYXVsdCBidWZmZXJpbmcgcG9saWN5IHdvcmtzIGFzIGZvbGxvd3M6CisKKyogQmluYXJ5IGZpbGVzIGFyZSBidWZmZXJlZCBpbiBmaXhlZC1zaXplIGNodW5rczsgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlcgorICBpcyBjaG9zZW4gdXNpbmcgYSBoZXVyaXN0aWMgdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdW5kZXJseWluZyBkZXZpY2UncworICAiYmxvY2sgc2l6ZSIgYW5kIGZhbGxpbmcgYmFjayBvbiBgaW8uREVGQVVMVF9CVUZGRVJfU0laRWAuCisgIE9uIG1hbnkgc3lzdGVtcywgdGhlIGJ1ZmZlciB3aWxsIHR5cGljYWxseSBiZSA0MDk2IG9yIDgxOTIgYnl0ZXMgbG9uZy4KKworKiAiSW50ZXJhY3RpdmUiIHRleHQgZmlsZXMgKGZpbGVzIGZvciB3aGljaCBpc2F0dHkoKSByZXR1cm5zIFRydWUpCisgIHVzZSBsaW5lIGJ1ZmZlcmluZy4gIE90aGVyIHRleHQgZmlsZXMgdXNlIHRoZSBwb2xpY3kgZGVzY3JpYmVkIGFib3ZlCisgIGZvciBiaW5hcnkgZmlsZXMuCisKK2VuY29kaW5nIGlzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGRlY29kZSBvciBlbmNvZGUgdGhlCitmaWxlLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcworcGxhdGZvcm0gZGVwZW5kZW50LCBidXQgYW55IGVuY29kaW5nIHN1cHBvcnRlZCBieSBQeXRob24gY2FuIGJlCitwYXNzZWQuICBTZWUgdGhlIGNvZGVjcyBtb2R1bGUgZm9yIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBlbmNvZGluZ3MuCisKK2Vycm9ycyBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGVycm9ycyBhcmUgdG8KK2JlIGhhbmRsZWQtLS10aGlzIGFyZ3VtZW50IHNob3VsZCBub3QgYmUgdXNlZCBpbiBiaW5hcnkgbW9kZS4gUGFzcworJ3N0cmljdCcgdG8gcmFpc2UgYSBWYWx1ZUVycm9yIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBlbmNvZGluZyBlcnJvcgorKHRoZSBkZWZhdWx0IG9mIE5vbmUgaGFzIHRoZSBzYW1lIGVmZmVjdCksIG9yIHBhc3MgJ2lnbm9yZScgdG8gaWdub3JlCitlcnJvcnMuIChOb3RlIHRoYXQgaWdub3JpbmcgZW5jb2RpbmcgZXJyb3JzIGNhbiBsZWFkIHRvIGRhdGEgbG9zcy4pCitTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gJ2hlbHAoY29kZWNzLkNvZGVjKScKK2ZvciBhIGxpc3Qgb2YgdGhlIHBlcm1pdHRlZCBlbmNvZGluZyBlcnJvciBzdHJpbmdzLgorCituZXdsaW5lIGNvbnRyb2xzIGhvdyB1bml2ZXJzYWwgbmV3bGluZXMgd29ya3MgKGl0IG9ubHkgYXBwbGllcyB0byB0ZXh0Cittb2RlKS4gSXQgY2FuIGJlIE5vbmUsICcnLCAnXG4nLCAnXHInLCBhbmQgJ1xyXG4nLiAgSXQgd29ya3MgYXMKK2ZvbGxvd3M6CisKKyogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMKKyAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xuJywgJ1xyJywgb3IgJ1xyXG4nLCBhbmQKKyAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byAnXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGUKKyAgY2FsbGVyLiBJZiBpdCBpcyAnJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZQorICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZgorICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlbgorICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuCisKKyogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUKKyAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmCisgIG5ld2xpbmUgaXMgJycgb3IgJ1xuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55CisgIG9mIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZAorICB0byB0aGUgZ2l2ZW4gc3RyaW5nLgorCitJZiBjbG9zZWZkIGlzIEZhbHNlLCB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBrZXB0IG9wZW4KK3doZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlbgorYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuCisKK0EgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZQordW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5CitjYWxsaW5nICpvcGVuZXIqIHdpdGggKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4KK2ZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eQorc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorCitvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kCit0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nCithcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsCisncicsICd3dCcsICdydCcsIGV0Yy4pLCBpdCByZXR1cm5zIGEgVGV4dElPV3JhcHBlci4gV2hlbiB1c2VkIHRvIG9wZW4KK2EgZmlsZSBpbiBhIGJpbmFyeSBtb2RlLCB0aGUgcmV0dXJuZWQgY2xhc3MgdmFyaWVzOiBpbiByZWFkIGJpbmFyeQorbW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnkKK21vZGVzLCBpdCByZXR1cm5zIGEgQnVmZmVyZWRXcml0ZXIsIGFuZCBpbiByZWFkL3dyaXRlIG1vZGUsIGl0IHJldHVybnMKK2EgQnVmZmVyZWRSYW5kb20uCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGEgc3RyaW5nIG9yIGJ5dGVhcnJheSBhcyBhIGZpbGUgZm9yIGJvdGgKK3JlYWRpbmcgYW5kIHdyaXRpbmcuIEZvciBzdHJpbmdzIFN0cmluZ0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCitvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCitvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvX29wZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCisgICAgICAgICAgICAgIGludCBidWZmZXJpbmcsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2MTVkMGQ3NDZlYjE0ZDIgaW5wdXQ9ZjRlMWNhNzUyMjM5ODdiY10qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLAotICAgICAgICAgICAgICAgICAgICAgICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpmaWxlLCAqb3BlbmVyID0gUHlfTm9uZTsKLSAgICBjaGFyICptb2RlID0gInIiOwotICAgIGludCBidWZmZXJpbmcgPSAtMSwgY2xvc2VmZCA9IDE7Ci0gICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMLCAqZXJyb3JzID0gTlVMTCwgKm5ld2xpbmUgPSBOVUxMOwogICAgIHVuc2lnbmVkIGk7CiAKICAgICBpbnQgY3JlYXRpbmcgPSAwLCByZWFkaW5nID0gMCwgd3JpdGluZyA9IDAsIGFwcGVuZGluZyA9IDAsIHVwZGF0aW5nID0gMDsKQEAgLTIzNywxOCArMjQyLDExIEBACiAKICAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIsICp3cmFwcGVyLCAqcmVzdWx0ID0gTlVMTDsKIAorICAgIF9QeV9JREVOVElGSUVSKF9ibGtzaXplKTsKICAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOwotICAgIF9QeV9JREVOVElGSUVSKGZpbGVubyk7CiAgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppTzpvcGVuIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkLCAmb3BlbmVyKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlKSAmJgogCSFQeUJ5dGVzX0NoZWNrKGZpbGUpICYmCiAJIVB5TnVtYmVyX0NoZWNrKGZpbGUpKSB7CkBAIC0zODAsMjQgKzM3OCwxNCBAQAogICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IDA7CiAKICAgICBpZiAoYnVmZmVyaW5nIDwgMCkgewotICAgICAgICBidWZmZXJpbmcgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwotI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxLU0laRQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICAgICAgICAgIGxvbmcgZmlsZW5vOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9maWxlbm8sIE5VTEwpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgICAgIGZpbGVubyA9IFB5TG9uZ19Bc0xvbmcocmVzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICAgICAgaWYgKGZpbGVubyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgICAgIGlmIChmc3RhdChmaWxlbm8sICZzdCkgPj0gMCAmJiBzdC5zdF9ibGtzaXplID4gMSkKLSAgICAgICAgICAgICAgICBidWZmZXJpbmcgPSBzdC5zdF9ibGtzaXplOwotICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgUHlPYmplY3QgKmJsa3NpemVfb2JqOworICAgICAgICBibGtzaXplX29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQocmF3LCAmUHlJZF9fYmxrc2l6ZSk7CisgICAgICAgIGlmIChibGtzaXplX29iaiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgYnVmZmVyaW5nID0gUHlMb25nX0FzTG9uZyhibGtzaXplX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihibGtzaXplX29iaik7CisgICAgICAgIGlmIChidWZmZXJpbmcgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmIChidWZmZXJpbmcgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNjIxLDggKzYwOSwxMCBAQAogICogTW9kdWxlIGRlZmluaXRpb24KICAqLwogCisjaW5jbHVkZSAiY2xpbmljL19pb21vZHVsZS5jLmgiCisKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilpb19vcGVuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Blbl9kb2N9LAorICAgIF9JT19PUEVOX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCA4OTI3ODY0Li45ZDUyMDVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtNjksNyArNjksNyBAQAogICogT2Zmc2V0IHR5cGUgZm9yIHBvc2l0aW9uaW5nLgogICovCiAKLS8qIFByaW50aW5nIGEgdmFyaWFibGUgb2YgdHlwZSBvZmZfdCAod2l0aCBlLmcuLCBQeVN0cmluZ19Gcm9tRm9ybWF0KQorLyogUHJpbnRpbmcgYSB2YXJpYWJsZSBvZiB0eXBlIG9mZl90ICh3aXRoIGUuZy4sIFB5VW5pY29kZV9Gcm9tRm9ybWF0KQogICAgY29ycmVjdGx5IGFuZCB3aXRob3V0IHByb2R1Y2luZyBjb21waWxlciB3YXJuaW5ncyBpcyBzdXJwcmlzaW5nbHkgcGFpbmZ1bC4KICAgIFdlIGlkZW50aWZ5IGFuIGludGVnZXIgdHlwZSB3aG9zZSBzaXplIG1hdGNoZXMgb2ZmX3QgYW5kIHRoZW46ICgxKSBjYXN0IHRoZQogICAgb2ZmX3QgdG8gdGhhdCBpbnRlZ2VyIHR5cGUgYW5kICgyKSB1c2UgdGhlIGFwcHJvcHJpYXRlIGNvbnZlcnNpb24KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCAzNjViYjg1Li4yOWUwMDBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC0xMyw2ICsxMywyNCBAQAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5fQnVmZmVyZWRJT0Jhc2UgIlB5T2JqZWN0ICoiICImUHlCdWZmZXJlZElPQmFzZV9UeXBlIgorY2xhc3MgX2lvLl9CdWZmZXJlZCAiYnVmZmVyZWQgKiIgIiZQeUJ1ZmZlcmVkSU9CYXNlX1R5cGUiCitjbGFzcyBfaW8uQnVmZmVyZWRSZWFkZXIgImJ1ZmZlcmVkICoiICImUHlCdWZmZXJlZFJlYWRlcl9UeXBlIgorY2xhc3MgX2lvLkJ1ZmZlcmVkV3JpdGVyICJidWZmZXJlZCAqIiAiJlB5QnVmZmVyZWRXcml0ZXJfVHlwZSIKK2NsYXNzIF9pby5CdWZmZXJlZFJXUGFpciAicndwYWlyICoiICImUHlCdWZmZXJlZFJXUGFpcl9UeXBlIgorY2xhc3MgX2lvLkJ1ZmZlcmVkUmFuZG9tICJidWZmZXJlZCAqIiAiJlB5QnVmZmVyZWRSYW5kb21fVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTU5NDYwYjljNTYzOTk4NGRdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgaW9fc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9zc2l6ZV90JworICAgIGNvbnZlcnRlciA9ICdfUHlJT19Db252ZXJ0U3NpemVfdCcKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQwYTgxMWQzY2JmZDFiMzNdKi8KKwogX1B5X0lERU5USUZJRVIoY2xvc2UpOwogX1B5X0lERU5USUZJRVIoX2RlYWxsb2Nfd2Fybik7CiBfUHlfSURFTlRJRklFUihmbHVzaCk7CkBAIC0yNCw2ICs0Miw3IEBACiBfUHlfSURFTlRJRklFUihyZWFkMSk7CiBfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CiBfUHlfSURFTlRJRklFUihyZWFkaW50byk7CitfUHlfSURFTlRJRklFUihyZWFkaW50bzEpOwogX1B5X0lERU5USUZJRVIod3JpdGFibGUpOwogX1B5X0lERU5USUZJRVIod3JpdGUpOwogCkBAIC00Nyw0NSArNjYsNjMgQEAKICAgICApOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRpb2Jhc2VfcmVhZGludG8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2J1ZmZlcmVkaW9iYXNlX3JlYWRpbnRvX2dlbmVyaWMoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyLCBjaGFyIHJlYWRpbnRvMSkKIHsKLSAgICBQeV9idWZmZXIgYnVmOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpkYXRhOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KjpyZWFkaW50byIsICZidWYpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3JlYWQsICJuIiwgYnVmLmxlbik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkaW50bzEgPyAmUHlJZF9yZWFkMSA6ICZQeUlkX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm4iLCBidWZmZXItPmxlbik7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKICAgICAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVhZCgpIHNob3VsZCByZXR1cm4gYnl0ZXMiKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgbGVuID0gUHlfU0laRShkYXRhKTsKLSAgICBpZiAobGVuID4gYnVmLmxlbikgeworICAgIGlmIChsZW4gPiBidWZmZXItPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJyZWFkKCkgcmV0dXJuZWQgdG9vIG11Y2ggZGF0YTogIgogICAgICAgICAgICAgICAgICAgICAgIiV6ZCBieXRlcyByZXF1ZXN0ZWQsICV6ZCByZXR1cm5lZCIsCi0gICAgICAgICAgICAgICAgICAgICBidWYubGVuLCBsZW4pOworICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5sZW4sIGxlbik7CiAgICAgICAgIFB5X0RFQ1JFRihkYXRhKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbWNweShidWYuYnVmLCBQeUJ5dGVzX0FTX1NUUklORyhkYXRhKSwgbGVuKTsKKyAgICBtZW1jcHkoYnVmZmVyLT5idWYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGRhdGEpLCBsZW4pOwogCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICBQeV9ERUNSRUYoZGF0YSk7CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7Cit9CiAKLSAgZXJyb3I6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWRJT0Jhc2UucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjOGNkYTY2ODRhZjgwMzggaW5wdXQ9MDBhNmI5YTM4ZjI5ODMwYV0qLworeworICAgIHJldHVybiBfYnVmZmVyZWRpb2Jhc2VfcmVhZGludG9fZ2VuZXJpYyhzZWxmLCBidWZmZXIsIDApOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvMQorICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1ODYyM2U0ZmQyYjY5ZDMgaW5wdXQ9ZWJhZDc1YjRhYWRmYjliZV0qLworeworICAgIHJldHVybiBfYnVmZmVyZWRpb2Jhc2VfcmVhZGludG9fZ2VuZXJpYyhzZWxmLCBidWZmZXIsIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTcsMTQgKzEzNCwxOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoYnVmZmVyZWRpb2Jhc2VfZGV0YWNoX2RvYywKLSAgICAiRGlzY29ubmVjdCB0aGlzIGJ1ZmZlciBmcm9tIGl0cyB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiBpdC5cbiIKLSAgICAiXG4iCi0gICAgIkFmdGVyIHRoZSByYXcgc3RyZWFtIGhhcyBiZWVuIGRldGFjaGVkLCB0aGUgYnVmZmVyIGlzIGluIGFuIHVudXNhYmxlXG4iCi0gICAgInN0YXRlLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkSU9CYXNlLmRldGFjaAorCitEaXNjb25uZWN0IHRoaXMgYnVmZmVyIGZyb20gaXRzIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBhbmQgcmV0dXJuIGl0LgorCitBZnRlciB0aGUgcmF3IHN0cmVhbSBoYXMgYmVlbiBkZXRhY2hlZCwgdGhlIGJ1ZmZlciBpcyBpbiBhbiB1bnVzYWJsZQorc3RhdGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZGlvYmFzZV9kZXRhY2goUHlPYmplY3QgKnNlbGYpCitfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1NDk3N2M4ZDEwZWQ4OGMgaW5wdXQ9ODIyNDI3ZmI1OGZlNDE2OV0qLwogewogICAgIHJldHVybiBidWZmZXJlZGlvYmFzZV91bnN1cHBvcnRlZCgiZGV0YWNoIik7CiB9CkBAIC0xNjIsNjggKzIwMyw2IEBACiB9CiAKIAotc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkaW9iYXNlX21ldGhvZHNbXSA9IHsKLSAgICB7ImRldGFjaCIsIChQeUNGdW5jdGlvbilidWZmZXJlZGlvYmFzZV9kZXRhY2gsIE1FVEhfTk9BUkdTLCBidWZmZXJlZGlvYmFzZV9kZXRhY2hfZG9jfSwKLSAgICB7InJlYWQiLCBidWZmZXJlZGlvYmFzZV9yZWFkLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3JlYWRfZG9jfSwKLSAgICB7InJlYWQxIiwgYnVmZmVyZWRpb2Jhc2VfcmVhZDEsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2VfcmVhZDFfZG9jfSwKLSAgICB7InJlYWRpbnRvIiwgYnVmZmVyZWRpb2Jhc2VfcmVhZGludG8sIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJ3cml0ZSIsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlX2RvY30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1QeVR5cGVPYmplY3QgUHlCdWZmZXJlZElPQmFzZV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfaW8uX0J1ZmZlcmVkSU9CYXNlIiwgICAgICAvKnRwX25hbWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKLSAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAvKnRwX2ZsYWdzKi8KLSAgICBidWZmZXJlZGlvYmFzZV9kb2MsICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBidWZmZXJlZGlvYmFzZV9tZXRob2RzLCAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgICZQeUlPQmFzZV9UeXBlLCAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCi19OwotCi0KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAKQEAgLTMxOCw3ICsyOTcsNyBAQAogICAgICAgICAgKiBOb3RlIHRoYXQgbm9uLWRhZW1vbiB0aHJlYWRzIGhhdmUgYWxyZWFkeSBleGl0ZWQgaGVyZSwgc28gdGhpcwogICAgICAgICAgKiBzaG91bGRuJ3QgYWZmZWN0IGNhcmVmdWxseSB3cml0dGVuIHRocmVhZGVkIEkvTyBjb2RlLgogICAgICAgICAgKi8KLSAgICAgICAgc3QgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoc2VsZi0+bG9jaywgMWU2LCAwKTsKKyAgICAgICAgc3QgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoc2VsZi0+bG9jaywgKFBZX1RJTUVPVVRfVCkxZTYsIDApOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZWxheF9sb2NraW5nICYmIHN0ICE9IFBZX0xPQ0tfQUNRVUlSRUQpIHsKQEAgLTY4MywxMSArNjYyLDcgQEAKIF9zZXRfQmxvY2tpbmdJT0Vycm9yKGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQogewogICAgIFB5T2JqZWN0ICplcnI7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbiBlcnJvcgotICAgICAgIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCiAgICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX0Jsb2NraW5nSU9FcnJvciwgImlzbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBtc2csIHdyaXR0ZW4pOwogICAgIGlmIChlcnIpCkBAIC04ODIsMTkgKzg1NywyMiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucGVlaworICAgIHNpemU6IFB5X3NzaXplX3QgPSAwCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9wZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfcGVla19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmE3YTA5N2NhMjMwMTAyYiBpbnB1dD0zN2ZmYjk3ZDA2ZmY0YWRiXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gMDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYsICJwZWVrIG9mIGNsb3NlZCBmaWxlIikKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cGVlayIsICZuKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtOTExLDE2ICs4ODksMTkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnJlYWQKKyAgICBzaXplIGFzIG46IGlvX3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ1ZmZlcmVkX3JlYWQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QgbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDFjNzhiYjE1YjliYmU5IGlucHV0PWMwOTM5ZWM3ZjllOTM1NGZdKi8KIHsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGlmIChuIDwgLTEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZCBsZW5ndGggbXVzdCBiZSBwb3NpdGl2ZSBvciAtMSIpOwpAQCAtOTQ5LDE3ICs5MzAsMjAgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnJlYWQxCisgICAgc2l6ZSBhcyBuOiBQeV9zc2l6ZV90CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRfcmVhZDEoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmNjNGZiNGU1NGQxMDNhMyBpbnB1dD04ZDI4NjljMThiOTgzMTg0XSovCiB7Ci0gICAgUHlfc3NpemVfdCBuLCBoYXZlLCByOworICAgIFB5X3NzaXplX3QgaGF2ZSwgcjsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnJlYWQxIiwgJm4pKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7CkBAIC0xMDAzLDMyICs5ODcsMjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19idWZmZXJlZF9yZWFkaW50b19nZW5lcmljKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlciwgY2hhciByZWFkaW50bzEpCiB7Ci0gICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBQeV9zc2l6ZV90IG4sIHdyaXR0ZW4gPSAwLCByZW1haW5pbmc7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KjpyZWFkaW50byIsICZidWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG4gPSBQeV9TQUZFX0RPV05DQVNUKFJFQURBSEVBRChzZWxmKSwgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwogICAgIGlmIChuID4gMCkgewotICAgICAgICBpZiAobiA+PSBidWYubGVuKSB7Ci0gICAgICAgICAgICBtZW1jcHkoYnVmLmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBidWYubGVuKTsKLSAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWYubGVuOwotICAgICAgICAgICAgcmVzID0gUHlMb25nX0Zyb21Tc2l6ZV90KGJ1Zi5sZW4pOwotICAgICAgICAgICAgZ290byBlbmRfdW5sb2NrZWQ7CisgICAgICAgIGlmIChuID49IGJ1ZmZlci0+bGVuKSB7CisgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLT5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmZmVyLT5sZW4pOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChidWZmZXItPmxlbik7CiAgICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CisgICAgICAgIG1lbWNweShidWZmZXItPmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKICAgICAgICAgc2VsZi0+cG9zICs9IG47CiAgICAgICAgIHdyaXR0ZW4gPSBuOwogICAgIH0KIAogICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCi0gICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzZWxmLT53cml0YWJsZSkgewogICAgICAgICByZXMgPSBidWZmZXJlZF9mbHVzaF9hbmRfcmV3aW5kX3VubG9ja2VkKHNlbGYpOwpAQCAtMTA0MCwyNiArMTAxOSwzMiBAQAogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CiAgICAgc2VsZi0+cG9zID0gMDsKIAotICAgIGZvciAocmVtYWluaW5nID0gYnVmLmxlbiAtIHdyaXR0ZW47CisgICAgZm9yIChyZW1haW5pbmcgPSBidWZmZXItPmxlbiAtIHdyaXR0ZW47CiAgICAgICAgICByZW1haW5pbmcgPiAwOwogICAgICAgICAgd3JpdHRlbiArPSBuLCByZW1haW5pbmcgLT0gbikgewogICAgICAgICAvKiBJZiByZW1haW5pbmcgYnl0ZXMgaXMgbGFyZ2VyIHRoYW4gaW50ZXJuYWwgYnVmZmVyIHNpemUsIGNvcHkKICAgICAgICAgICogZGlyZWN0bHkgaW50byBjYWxsZXIncyBidWZmZXIuICovCiAgICAgICAgIGlmIChyZW1haW5pbmcgPiBzZWxmLT5idWZmZXJfc2l6ZSkgewotICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoc2VsZiwgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIC8qIEluIHJlYWRpbnRvMSBtb2RlLCB3ZSBkbyBub3Qgd2FudCB0byBmaWxsIHRoZSBpbnRlcm5hbAorICAgICAgICAgICBidWZmZXIgaWYgd2UgYWxyZWFkeSBoYXZlIHNvbWUgZGF0YSB0byByZXR1cm4gKi8KKyAgICAgICAgZWxzZSBpZiAoIShyZWFkaW50bzEgJiYgd3JpdHRlbikpIHsKICAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfZmlsbF9idWZmZXIoc2VsZik7CiAgICAgICAgICAgICBpZiAobiA+IDApIHsKICAgICAgICAgICAgICAgICBpZiAobiA+IHJlbWFpbmluZykKICAgICAgICAgICAgICAgICAgICAgbiA9IHJlbWFpbmluZzsKLSAgICAgICAgICAgICAgICBtZW1jcHkoKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sCisgICAgICAgICAgICAgICAgbWVtY3B5KChjaGFyICopIGJ1ZmZlci0+YnVmICsgd3JpdHRlbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKICAgICAgICAgICAgICAgICBzZWxmLT5wb3MgKz0gbjsKICAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogc2hvcnQgY2lyY3VpdCAqLwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG4gPSAwOworCiAgICAgICAgIGlmIChuID09IDAgfHwgKG4gPT0gLTIgJiYgd3JpdHRlbiA+IDApKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChuIDwgMCkgewpAQCAtMTA2OSwxNiArMTA1NCw0NyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KKworICAgICAgICAvKiBBdCBtb3N0IG9uZSByZWFkIGluIHJlYWRpbnRvMSBtb2RlICovCisgICAgICAgIGlmIChyZWFkaW50bzEpIHsKKyAgICAgICAgICAgIHdyaXR0ZW4gKz0gbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh3cml0dGVuKTsKIAogZW5kOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpOwotZW5kX3VubG9ja2VkOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLl9CdWZmZXJlZC5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG9faW1wbChidWZmZXJlZCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmNiMzc2NTgwYjFkODE3MCBpbnB1dD1lZDZiOThiN2EyMGEzMDA4XSovCit7CisgICAgcmV0dXJuIF9idWZmZXJlZF9yZWFkaW50b19nZW5lcmljKHNlbGYsIGJ1ZmZlciwgMCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucmVhZGludG8xCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1YzZhYzU4NjgyMDVkNiBpbnB1dD00NDU1YzVkNTVmZGYxNjg3XSovCit7CisgICAgcmV0dXJuIF9idWZmZXJlZF9yZWFkaW50b19nZW5lcmljKHNlbGYsIGJ1ZmZlciwgMSk7Cit9CisKKwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZF9yZWFkbGluZShidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCkKIHsKQEAgLTExOTAsMTUgKzEyMDYsMTggQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQucmVhZGxpbmUKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNGRkMmFhNmUzM2JlODNjIGlucHV0PWZmMWUwZGY4MjFjYjRlNWNdKi8KK3sKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX2J1ZmZlcmVkX3JlYWRsaW5lKHNlbGYsIGxpbWl0KTsKKyAgICByZXR1cm4gX2J1ZmZlcmVkX3JlYWRsaW5lKHNlbGYsIHNpemUpOwogfQogCiAKQEAgLTEyMTYsMTcgKzEyMzUsMjEgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21PZmZfdChwb3MpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uX0J1ZmZlcmVkLnNlZWsKKyAgICB0YXJnZXQgYXMgdGFyZ2V0b2JqOiBvYmplY3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF9zZWVrKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fQnVmZmVyZWRfc2Vla19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqdGFyZ2V0b2JqLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdhZTBlOGRjNDZlZmRlZmIgaW5wdXQ9YTljNDkyMGJmY2JhNjE2M10qLwogewogICAgIFB5X29mZl90IHRhcmdldCwgbjsKLSAgICBpbnQgd2hlbmNlID0gMDsKLSAgICBQeU9iamVjdCAqdGFyZ2V0b2JqLCAqcmVzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIC8qIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgaW5zdGVhZCBvZiB0cnVzdGluZyBPUyAnc2VlaygpJwogICAgICoqIGVycm9yIGRldGVjdGlvbiwganVzdCBpbiBjYXNlLgpAQCAtMTMwOCwxNyArMTMzMSwxOSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fQnVmZmVyZWQudHJ1bmNhdGUKKyAgICBwb3M6IG9iamVjdCA9IE5vbmUKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWZmZXJlZF90cnVuY2F0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY3Y2EwM2M2MGMyNzBkZSBpbnB1dD04YTFiZTM0ZDU3Y2NhMmQzXSovCiB7Ci0gICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86dHJ1bmNhdGUiLCAmcG9zKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTQwMywyOSArMTQyOCwyNyBAQAogICogY2xhc3MgQnVmZmVyZWRSZWFkZXIKICAqLwogCi1QeURvY19TVFJWQVIoYnVmZmVyZWRyZWFkZXJfZG9jLAotICAgICAgICAgICAgICJDcmVhdGUgYSBuZXcgYnVmZmVyZWQgcmVhZGVyIHVzaW5nIHRoZSBnaXZlbiByZWFkYWJsZSByYXcgSU8gb2JqZWN0LiIpOwotCiBzdGF0aWMgdm9pZCBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIHNlbGYtPnJlYWRfZW5kID0gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLWJ1ZmZlcmVkcmVhZGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlPYmplY3QgKnJhdzsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFJlYWRlci5fX2luaXRfXworICAgIHJhdzogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAKK0NyZWF0ZSBhIG5ldyBidWZmZXJlZCByZWFkZXIgdXNpbmcgdGhlIGdpdmVuIHJlYWRhYmxlIHJhdyBJTyBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZGRjZmVmYTBlZDI5NGM0IGlucHV0PWZiODg3ZTA2ZjExYjRlNDhdKi8KK3sKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xNzQ2LDExMSArMTc2OSwxMiBAQAogICAgIHNlbGYtPnBvcyA9IDA7CiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByKTsKIH0KLQotc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHNbXSA9IHsKLSAgICAvKiBCdWZmZXJlZElPTWl4aW4gbWV0aG9kcyAqLwotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2ltcGxlX2ZsdXNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAotICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKLQotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9zZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90ZWxsLCBNRVRIX05PQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWRyZWFkZXJfbWVtYmVyc1tdID0gewotICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCi0gICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHJlYWRlcl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5CdWZmZXJlZFJlYWRlciIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgLyp0cF9mbGFncyovCi0gICAgYnVmZmVyZWRyZWFkZXJfZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIHdlYWtyZWZsaXN0KSwgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKWJ1ZmZlcmVkX2l0ZXJuZXh0LCAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYnVmZmVyZWRyZWFkZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBidWZmZXJlZHJlYWRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWJ1ZmZlcmVkcmVhZGVyX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCi19OwogDAogCiAKIC8qCiAgKiBjbGFzcyBCdWZmZXJlZFdyaXRlcgogICovCi1QeURvY19TVFJWQVIoYnVmZmVyZWR3cml0ZXJfZG9jLAotICAgICJBIGJ1ZmZlciBmb3IgYSB3cml0ZWFibGUgc2VxdWVudGlhbCBSYXdJTyBvYmplY3QuXG4iCi0gICAgIlxuIgotICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhd1xuIgotICAgICJzdHJlYW0uIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQogc3RhdGljIHZvaWQKIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoYnVmZmVyZWQgKnNlbGYpCiB7CkBAIC0xODU4LDIxICsxNzgyLDI2IEBACiAgICAgc2VsZi0+d3JpdGVfZW5kID0gLTE7CiB9CiAKLXN0YXRpYyBpbnQKLWJ1ZmZlcmVkd3JpdGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlPYmplY3QgKnJhdzsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFdyaXRlci5fX2luaXRfXworICAgIHJhdzogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCiAKK0EgYnVmZmVyIGZvciBhIHdyaXRlYWJsZSBzZXF1ZW50aWFsIFJhd0lPIG9iamVjdC4KKworVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBCdWZmZXJlZFdyaXRlciBmb3IgdGhlIGdpdmVuIHdyaXRlYWJsZSByYXcKK3N0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KK0RFRkFVTFRfQlVGRkVSX1NJWkUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODk0MmEwMjBjMGRlZTY0IGlucHV0PTkxNGJlOWI5NWUxNjAwN2JdKi8KK3sKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFdyaXRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xOTkzLDI5ICsxOTIyLDI4IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CdWZmZXJlZFdyaXRlci53cml0ZQorICAgIGJ1ZmZlcjogUHlfYnVmZmVyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVmZmVyZWR3cml0ZXJfd3JpdGUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmOGQxMzY1NzU5YmZjNmIgaW5wdXQ9ZGQ4N2RkODVmYzdmODg1MF0qLwogewogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCB3cml0dGVuLCBhdmFpbCwgcmVtYWluaW5nOwogICAgIFB5X29mZl90IG9mZnNldDsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZidWYpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChJU19DTE9TRUQoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgLyogRmFzdCBwYXRoOiB0aGUgZGF0YSB0byB3cml0ZSBjYW4gYmUgZnVsbHkgYnVmZmVyZWQuICovCiAgICAgaWYgKCFWQUxJRF9SRUFEX0JVRkZFUihzZWxmKSAmJiAhVkFMSURfV1JJVEVfQlVGRkVSKHNlbGYpKSB7CkBAIC0yMDIzLDE1ICsxOTUxLDE1IEBACiAgICAgICAgIHNlbGYtPnJhd19wb3MgPSAwOwogICAgIH0KICAgICBhdmFpbCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2VsZi0+YnVmZmVyX3NpemUgLSBzZWxmLT5wb3MsIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKLSAgICBpZiAoYnVmLmxlbiA8PSBhdmFpbCkgewotICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICBpZiAoYnVmZmVyLT5sZW4gPD0gYXZhaWwpIHsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmZmVyLT5idWYsIGJ1ZmZlci0+bGVuKTsKICAgICAgICAgaWYgKCFWQUxJRF9XUklURV9CVUZGRVIoc2VsZikgfHwgc2VsZi0+d3JpdGVfcG9zID4gc2VsZi0+cG9zKSB7CiAgICAgICAgICAgICBzZWxmLT53cml0ZV9wb3MgPSBzZWxmLT5wb3M7CiAgICAgICAgIH0KLSAgICAgICAgQURKVVNUX1BPU0lUSU9OKHNlbGYsIHNlbGYtPnBvcyArIGJ1Zi5sZW4pOworICAgICAgICBBREpVU1RfUE9TSVRJT04oc2VsZiwgc2VsZi0+cG9zICsgYnVmZmVyLT5sZW4pOwogICAgICAgICBpZiAoc2VsZi0+cG9zID4gc2VsZi0+d3JpdGVfZW5kKQogICAgICAgICAgICAgc2VsZi0+d3JpdGVfZW5kID0gc2VsZi0+cG9zOwotICAgICAgICB3cml0dGVuID0gYnVmLmxlbjsKKyAgICAgICAgd3JpdHRlbiA9IGJ1ZmZlci0+bGVuOwogICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAKQEAgLTIwNTQsMTcgKzE5ODIsMTcgQEAKICAgICAgICAgc2VsZi0+d3JpdGVfcG9zID0gMDsKICAgICAgICAgYXZhaWwgPSBQeV9TQUZFX0RPV05DQVNUKHNlbGYtPmJ1ZmZlcl9zaXplIC0gc2VsZi0+d3JpdGVfZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwotICAgICAgICBpZiAoYnVmLmxlbiA8PSBhdmFpbCkgeworICAgICAgICBpZiAoYnVmZmVyLT5sZW4gPD0gYXZhaWwpIHsKICAgICAgICAgICAgIC8qIEV2ZXJ5dGhpbmcgY2FuIGJlIGJ1ZmZlcmVkICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPndyaXRlX2VuZCwgYnVmLmJ1ZiwgYnVmLmxlbik7Ci0gICAgICAgICAgICBzZWxmLT53cml0ZV9lbmQgKz0gYnVmLmxlbjsKLSAgICAgICAgICAgIHNlbGYtPnBvcyArPSBidWYubGVuOwotICAgICAgICAgICAgd3JpdHRlbiA9IGJ1Zi5sZW47CisgICAgICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyICsgc2VsZi0+d3JpdGVfZW5kLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgICAgICAgICAgc2VsZi0+d3JpdGVfZW5kICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1ZmZlci0+bGVuOworICAgICAgICAgICAgd3JpdHRlbiA9IGJ1ZmZlci0+bGVuOwogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KICAgICAgICAgLyogQnVmZmVyIGFzIG11Y2ggYXMgcG9zc2libGUuICovCi0gICAgICAgIG1lbWNweShzZWxmLT5idWZmZXIgKyBzZWxmLT53cml0ZV9lbmQsIGJ1Zi5idWYsIGF2YWlsKTsKKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciArIHNlbGYtPndyaXRlX2VuZCwgYnVmZmVyLT5idWYsIGF2YWlsKTsKICAgICAgICAgc2VsZi0+d3JpdGVfZW5kICs9IGF2YWlsOwogICAgICAgICBzZWxmLT5wb3MgKz0gYXZhaWw7CiAgICAgICAgIC8qIFhYWCBNb2RpZnlpbmcgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiBlIHVzaW5nIHRoZSBwb2ludGVyIHcKQEAgLTIwOTAsMTEgKzIwMTgsMTEgQEAKICAgICB9CiAKICAgICAvKiBUaGVuIHdyaXRlIGJ1ZiBpdHNlbGYuIEF0IHRoaXMgcG9pbnQgdGhlIGJ1ZmZlciBoYXMgYmVlbiBlbXB0aWVkLiAqLwotICAgIHJlbWFpbmluZyA9IGJ1Zi5sZW47CisgICAgcmVtYWluaW5nID0gYnVmZmVyLT5sZW47CiAgICAgd3JpdHRlbiA9IDA7CiAgICAgd2hpbGUgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CiAgICAgICAgIFB5X3NzaXplX3QgbiA9IF9idWZmZXJlZHdyaXRlcl9yYXdfd3JpdGUoCi0gICAgICAgICAgICBzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwgYnVmLmxlbiAtIHdyaXR0ZW4pOworICAgICAgICAgICAgc2VsZiwgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLCBidWZmZXItPmxlbiAtIHdyaXR0ZW4pOwogICAgICAgICBpZiAobiA9PSAtMSkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfSBlbHNlIGlmIChuID09IC0yKSB7CkBAIC0yMTAyLDcgKzIwMzAsNyBAQAogICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgYnVmZmVyIGV2ZXJ5dGhpbmcsIHN0aWxsIGJ1ZmZlciBhcyBtdWNoIGFzIHBvc3NpYmxlICovCiAgICAgICAgICAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sIHNlbGYtPmJ1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgYnVmZmVyLT5idWYgKyB3cml0dGVuLCBzZWxmLT5idWZmZXJfc2l6ZSk7CiAgICAgICAgICAgICAgICAgc2VsZi0+cmF3X3BvcyA9IDA7CiAgICAgICAgICAgICAgICAgQURKVVNUX1BPU0lUSU9OKHNlbGYsIHNlbGYtPmJ1ZmZlcl9zaXplKTsKICAgICAgICAgICAgICAgICBzZWxmLT53cml0ZV9lbmQgPSBzZWxmLT5idWZmZXJfc2l6ZTsKQEAgLTIxMjUsNyArMjA1Myw3IEBACiAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKQogICAgICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwogICAgIGlmIChyZW1haW5pbmcgPiAwKSB7Ci0gICAgICAgIG1lbWNweShzZWxmLT5idWZmZXIsIChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLCByZW1haW5pbmcpOworICAgICAgICBtZW1jcHkoc2VsZi0+YnVmZmVyLCAoY2hhciAqKSBidWZmZXItPmJ1ZiArIHdyaXR0ZW4sIHJlbWFpbmluZyk7CiAgICAgICAgIHdyaXR0ZW4gKz0gcmVtYWluaW5nOwogICAgIH0KICAgICBzZWxmLT53cml0ZV9wb3MgPSAwOwpAQCAtMjEzOSw5NiArMjA2Nyw4IEBACiAKIGVycm9yOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICByZXR1cm4gcmVzOwogfQotCi1zdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWR3cml0ZXJfbWV0aG9kc1tdID0gewotICAgIC8qIEJ1ZmZlcmVkSU9NaXhpbiBtZXRob2RzICovCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAotICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCi0gICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKLQotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWR3cml0ZXJfd3JpdGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZsdXNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsIE5VTEx9Ci19OwotCi1zdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWR3cml0ZXJfbWVtYmVyc1tdID0gewotICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCi0gICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKLSAgICB7TlVMTH0KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHdyaXRlcl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCi0gICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkV3JpdGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9pby5CdWZmZXJlZFdyaXRlciIsICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KLSAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQotICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KLSAgICBidWZmZXJlZHdyaXRlcl9kb2MsICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylidWZmZXJlZF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSlidWZmZXJlZF9jbGVhciwgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihidWZmZXJlZCwgd2Vha3JlZmxpc3QpLCAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGJ1ZmZlcmVkd3JpdGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYnVmZmVyZWR3cml0ZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICBidWZmZXJlZHdyaXRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYnVmZmVyZWR3cml0ZXJfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KLX07CiAMCiAKIApAQCAtMjIzNiwxOCArMjA3Niw2IEBACiAgKiBCdWZmZXJlZFJXUGFpcgogICovCiAKLVB5RG9jX1NUUlZBUihidWZmZXJlZHJ3cGFpcl9kb2MsCi0gICAgIkEgYnVmZmVyZWQgcmVhZGVyIGFuZCB3cml0ZXIgb2JqZWN0IHRvZ2V0aGVyLlxuIgotICAgICJcbiIKLSAgICAiQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0b1xuIgotICAgICJmb3JtIGEgc2VxdWVudGlhbCBJTyBvYmplY3QgdGhhdCBjYW4gcmVhZCBhbmQgd3JpdGUuIFRoaXMgaXMgdHlwaWNhbGx5XG4iCi0gICAgInVzZWQgd2l0aCBhIHNvY2tldCBvciB0d28td2F5IHBpcGUuXG4iCi0gICAgIlxuIgotICAgICJyZWFkZXIgYW5kIHdyaXRlciBhcmUgUmF3SU9CYXNlIG9iamVjdHMgdGhhdCBhcmUgcmVhZGFibGUgYW5kXG4iCi0gICAgIndyaXRlYWJsZSByZXNwZWN0aXZlbHkuIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQogLyogWFhYIFRoZSB1c2VmdWxuZXNzIG9mIHRoaXMgKGNvbXBhcmVkIHRvIGhhdmluZyB0d28gc2VwYXJhdGUgSU8gb2JqZWN0cykgaXMKICAqIHF1ZXN0aW9uYWJsZS4KICAqLwpAQCAtMjI2MCwxNyArMjA4OCwyOSBAQAogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gcndwYWlyOwogCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnVmZmVyZWRSV1BhaXIuX19pbml0X18KKyAgICByZWFkZXI6IG9iamVjdAorICAgIHdyaXRlcjogb2JqZWN0CisgICAgYnVmZmVyX3NpemU6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJERUZBVUxUX0JVRkZFUl9TSVpFIikgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgLworCitBIGJ1ZmZlcmVkIHJlYWRlciBhbmQgd3JpdGVyIG9iamVjdCB0b2dldGhlci4KKworQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0bworZm9ybSBhIHNlcXVlbnRpYWwgSU8gb2JqZWN0IHRoYXQgY2FuIHJlYWQgYW5kIHdyaXRlLiBUaGlzIGlzIHR5cGljYWxseQordXNlZCB3aXRoIGEgc29ja2V0IG9yIHR3by13YXkgcGlwZS4KKworcmVhZGVyIGFuZCB3cml0ZXIgYXJlIFJhd0lPQmFzZSBvYmplY3RzIHRoYXQgYXJlIHJlYWRhYmxlIGFuZAord3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KK0RFRkFVTFRfQlVGRkVSX1NJWkUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLWJ1ZmZlcmVkcndwYWlyX2luaXQocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19faW1wbChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICpyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqd3JpdGVyLCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMyN2U3M2QxYWVlOGY5ODQgaW5wdXQ9NjIwZDQyZDcxZjMzYTAzMV0qLwogewotICAgIFB5T2JqZWN0ICpyZWFkZXIsICp3cml0ZXI7Ci0gICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLCAmcmVhZGVyLCAmd3JpdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyX3NpemUpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJlYWRlciwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUod3JpdGVyLCBQeV9UcnVlKSA9PSBOVUxMKQpAQCAtMjM2NSw2ICsyMjA1LDEyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitidWZmZXJlZHJ3cGFpcl9yZWFkaW50bzEocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRpbnRvMSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZHJ3cGFpcl93cml0ZShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGUsIGFyZ3MpOwpAQCAtMjQyOSwxMiArMjI3NSwzMTMgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHIoKFB5T2JqZWN0ICopIHNlbGYtPndyaXRlciwgX1B5SU9fc3RyX2Nsb3NlZCk7CiB9CisMCisKKworLyoKKyAqIEJ1ZmZlcmVkUmFuZG9tCisgKi8KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ1ZmZlcmVkUmFuZG9tLl9faW5pdF9fCisgICAgcmF3OiBvYmplY3QKKyAgICBidWZmZXJfc2l6ZTogUHlfc3NpemVfdChjX2RlZmF1bHQ9IkRFRkFVTFRfQlVGRkVSX1NJWkUiKSA9IERFRkFVTFRfQlVGRkVSX1NJWkUKKworQSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcyBzdHJlYW1zLgorCitUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSwKK3JhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdAorZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpyYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzZDY0ZWIwZjY0ZTY0YTMgaW5wdXQ9YTRlODE4ZmI4NmQwZTUwY10qLworeworICAgIHNlbGYtPm9rID0gMDsKKyAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CisKKyAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0NMRUFSKHNlbGYtPnJhdyk7CisgICAgUHlfSU5DUkVGKHJhdyk7CisgICAgc2VsZi0+cmF3ID0gcmF3OworICAgIHNlbGYtPmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemU7CisgICAgc2VsZi0+cmVhZGFibGUgPSAxOworICAgIHNlbGYtPndyaXRhYmxlID0gMTsKKworICAgIGlmIChfYnVmZmVyZWRfaW5pdChzZWxmKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOworICAgIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoc2VsZik7CisgICAgc2VsZi0+cG9zID0gMDsKKworICAgIHNlbGYtPmZhc3RfY2xvc2VkX2NoZWNrcyA9IChQeV9UWVBFKHNlbGYpID09ICZQeUJ1ZmZlcmVkUmFuZG9tX1R5cGUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyYXcpID09ICZQeUZpbGVJT19UeXBlKTsKKworICAgIHNlbGYtPm9rID0gMTsKKyAgICByZXR1cm4gMDsKK30KKworI2luY2x1ZGUgImNsaW5pYy9idWZmZXJlZGlvLmMuaCIKKworCitzdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWRpb2Jhc2VfbWV0aG9kc1tdID0geworICAgIF9JT19fQlVGRkVSRURJT0JBU0VfREVUQUNIX01FVEhPRERFRgorICAgIHsicmVhZCIsIGJ1ZmZlcmVkaW9iYXNlX3JlYWQsIE1FVEhfVkFSQVJHUywgYnVmZmVyZWRpb2Jhc2VfcmVhZF9kb2N9LAorICAgIHsicmVhZDEiLCBidWZmZXJlZGlvYmFzZV9yZWFkMSwgTUVUSF9WQVJBUkdTLCBidWZmZXJlZGlvYmFzZV9yZWFkMV9kb2N9LAorICAgIF9JT19fQlVGRkVSRURJT0JBU0VfUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRElPQkFTRV9SRUFESU5UTzFfTUVUSE9EREVGCisgICAgeyJ3cml0ZSIsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIGJ1ZmZlcmVkaW9iYXNlX3dyaXRlX2RvY30sCisgICAge05VTEwsIE5VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlCdWZmZXJlZElPQmFzZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfaW8uX0J1ZmZlcmVkSU9CYXNlIiwgICAgICAvKnRwX25hbWUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAvKnRwX2ZsYWdzKi8KKyAgICBidWZmZXJlZGlvYmFzZV9kb2MsICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBidWZmZXJlZGlvYmFzZV9tZXRob2RzLCAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeUlPQmFzZV9UeXBlLCAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZHJlYWRlcl9tZXRob2RzW10gPSB7CisgICAgLyogQnVmZmVyZWRJT01peGluIG1ldGhvZHMgKi8KKyAgICB7ImRldGFjaCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZXRhY2gsIE1FVEhfTk9BUkdTfSwKKyAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NpbXBsZV9mbHVzaCwgTUVUSF9OT0FSR1N9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfY2xvc2UsIE1FVEhfTk9BUkdTfSwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWthYmxlLCBNRVRIX05PQVJHU30sCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkYWJsZSwgTUVUSF9OT0FSR1N9LAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfd3JpdGFibGUsIE1FVEhfTk9BUkdTfSwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9maWxlbm8sIE1FVEhfTk9BUkdTfSwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9pc2F0dHksIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9kZWFsbG9jX3dhcm4iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZGVhbGxvY193YXJuLCBNRVRIX099LAorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCisKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9QRUVLX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRDFfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURJTlRPMV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYKKyAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LAorICAgIF9JT19fQlVGRkVSRURfVFJVTkNBVEVfTUVUSE9EREVGCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NpemVvZiwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIGJ1ZmZlcmVkcmVhZGVyX21lbWJlcnNbXSA9IHsKKyAgICB7InJhdyIsIFRfT0JKRUNULCBvZmZzZXRvZihidWZmZXJlZCwgcmF3KSwgUkVBRE9OTFl9LAorICAgIHsiX2ZpbmFsaXppbmciLCBUX0JPT0wsIG9mZnNldG9mKGJ1ZmZlcmVkLCBmaW5hbGl6aW5nKSwgMH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgYnVmZmVyZWRyZWFkZXJfZ2V0c2V0W10gPSB7CisgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWJ1ZmZlcmVkX2Nsb3NlZF9nZXQsIE5VTEwsIE5VTEx9LAorICAgIHsibmFtZSIsIChnZXR0ZXIpYnVmZmVyZWRfbmFtZV9nZXQsIE5VTEwsIE5VTEx9LAorICAgIHsibW9kZSIsIChnZXR0ZXIpYnVmZmVyZWRfbW9kZV9nZXQsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitQeVR5cGVPYmplY3QgUHlCdWZmZXJlZFJlYWRlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfaW8uQnVmZmVyZWRSZWFkZXIiLCAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihidWZmZXJlZCksICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIChkZXN0cnVjdG9yKWJ1ZmZlcmVkX2RlYWxsb2MsICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCisgICAgKHJlcHJmdW5jKWJ1ZmZlcmVkX3JlcHIsICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLworICAgIF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIHdlYWtyZWZsaXN0KSwgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWJ1ZmZlcmVkX2l0ZXJuZXh0LCAvKiB0cF9pdGVybmV4dCAqLworICAgIGJ1ZmZlcmVkcmVhZGVyX21ldGhvZHMsICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYnVmZmVyZWRyZWFkZXJfbWVtYmVycywgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBidWZmZXJlZHJlYWRlcl9nZXRzZXQsICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fLCAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworCitzdGF0aWMgUHlNZXRob2REZWYgYnVmZmVyZWR3cml0ZXJfbWV0aG9kc1tdID0geworICAgIC8qIEJ1ZmZlcmVkSU9NaXhpbiBtZXRob2RzICovCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2RldGFjaCwgTUVUSF9OT0FSR1N9LAorICAgIHsic2Vla2FibGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRhYmxlLCBNRVRIX05PQVJHU30sCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF93cml0YWJsZSwgTUVUSF9OT0FSR1N9LAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZpbGVubywgTUVUSF9OT0FSR1N9LAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAorICAgIHsiX2RlYWxsb2Nfd2FybiIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9kZWFsbG9jX3dhcm4sIE1FVEhfT30sCisgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZ2V0c3RhdGUsIE1FVEhfTk9BUkdTfSwKKworICAgIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1RSVU5DQVRFX01FVEhPRERFRgorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfZmx1c2gsIE1FVEhfTk9BUkdTfSwKKyAgICBfSU9fX0JVRkZFUkVEX1NFRUtfTUVUSE9EREVGCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgYnVmZmVyZWR3cml0ZXJfbWVtYmVyc1tdID0geworICAgIHsicmF3IiwgVF9PQkpFQ1QsIG9mZnNldG9mKGJ1ZmZlcmVkLCByYXcpLCBSRUFET05MWX0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoYnVmZmVyZWQsIGZpbmFsaXppbmcpLCAwfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBidWZmZXJlZHdyaXRlcl9nZXRzZXRbXSA9IHsKKyAgICB7ImNsb3NlZCIsIChnZXR0ZXIpYnVmZmVyZWRfY2xvc2VkX2dldCwgTlVMTCwgTlVMTH0sCisgICAgeyJuYW1lIiwgKGdldHRlcilidWZmZXJlZF9uYW1lX2dldCwgTlVMTCwgTlVMTH0sCisgICAgeyJtb2RlIiwgKGdldHRlcilidWZmZXJlZF9tb2RlX2dldCwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9Cit9OworCisKK1B5VHlwZU9iamVjdCBQeUJ1ZmZlcmVkV3JpdGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5CdWZmZXJlZFdyaXRlciIsICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKGJ1ZmZlcmVkKSwgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpYnVmZmVyZWRfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAocmVwcmZ1bmMpYnVmZmVyZWRfcmVwciwgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKnRwX2ZsYWdzKi8KKyAgICBfaW9fQnVmZmVyZWRXcml0ZXJfX19pbml0X19fX2RvY19fLCAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWJ1ZmZlcmVkX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWJ1ZmZlcmVkX2NsZWFyLCAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKGJ1ZmZlcmVkLCB3ZWFrcmVmbGlzdCksIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYnVmZmVyZWR3cml0ZXJfbWV0aG9kcywgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBidWZmZXJlZHdyaXRlcl9tZW1iZXJzLCAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGJ1ZmZlcmVkd3JpdGVyX2dldHNldCwgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICBvZmZzZXRvZihidWZmZXJlZCwgZGljdCksICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIGJ1ZmZlcmVkcndwYWlyX21ldGhvZHNbXSA9IHsKICAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcGVlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkcndwYWlyX3JlYWQxLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZGludG8sIE1FVEhfVkFSQVJHU30sCisgICAgeyJyZWFkaW50bzEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRyd3BhaXJfcmVhZGludG8xLCBNRVRIX1ZBUkFSR1N9LAogCiAgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZHJ3cGFpcl93cml0ZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkcndwYWlyX2ZsdXNoLCBNRVRIX05PQVJHU30sCkBAIC0yNDc3LDcgKzI2MjQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQogICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAvKiB0cF9mbGFncyAqLwotICAgIGJ1ZmZlcmVkcndwYWlyX2RvYywgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19fX2RvY19fLCAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKWJ1ZmZlcmVkcndwYWlyX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KWJ1ZmZlcmVkcndwYWlyX2NsZWFyLCAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMjQ5Miw3ICsyNjM5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIG9mZnNldG9mKHJ3cGFpciwgZGljdCksICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWJ1ZmZlcmVkcndwYWlyX2luaXQsIC8qIHRwX2luaXQgKi8KKyAgICBfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X18sIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KQEAgLTI1MDYsNjMgKzI2NTMsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKLQwKIAogCi0vKgotICogQnVmZmVyZWRSYW5kb20KLSAqLwotCi1QeURvY19TVFJWQVIoYnVmZmVyZWRyYW5kb21fZG9jLAotICAgICJBIGJ1ZmZlcmVkIGludGVyZmFjZSB0byByYW5kb20gYWNjZXNzIHN0cmVhbXMuXG4iCi0gICAgIlxuIgotICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIHJlYWRlciBhbmQgd3JpdGVyIGZvciBhIHNlZWthYmxlIHN0cmVhbSxcbiIKLSAgICAicmF3LCBnaXZlbiBpbiB0aGUgZmlyc3QgYXJndW1lbnQuIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBvbWl0dGVkIGl0XG4iCi0gICAgImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCi0gICAgKTsKLQotc3RhdGljIGludAotYnVmZmVyZWRyYW5kb21faW5pdChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKLSAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeU9iamVjdCAqcmF3OwotCi0gICAgc2VsZi0+b2sgPSAwOwotICAgIHNlbGYtPmRldGFjaGVkID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSYW5kb20iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaWYgKF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT5yYXcpOwotICAgIFB5X0lOQ1JFRihyYXcpOwotICAgIHNlbGYtPnJhdyA9IHJhdzsKLSAgICBzZWxmLT5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplOwotICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKLSAgICBzZWxmLT53cml0YWJsZSA9IDE7Ci0KLSAgICBpZiAoX2J1ZmZlcmVkX2luaXQoc2VsZikgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKLSAgICBfYnVmZmVyZWR3cml0ZXJfcmVzZXRfYnVmKHNlbGYpOwotICAgIHNlbGYtPnBvcyA9IDA7Ci0KLSAgICBzZWxmLT5mYXN0X2Nsb3NlZF9jaGVja3MgPSAoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJhbmRvbV9UeXBlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmF3KSA9PSAmUHlGaWxlSU9fVHlwZSk7Ci0KLSAgICBzZWxmLT5vayA9IDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZHJhbmRvbV9tZXRob2RzW10gPSB7CiAgICAgLyogQnVmZmVyZWRJT01peGluIG1ldGhvZHMgKi8KICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2Nsb3NlLCBNRVRIX05PQVJHU30sCkBAIC0yNTc3LDE1ICsyNjY5LDE2IEBACiAKICAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZsdXNoLCBNRVRIX05PQVJHU30sCiAKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2VlaywgTUVUSF9WQVJBUkdTfSwKKyAgICBfSU9fX0JVRkZFUkVEX1NFRUtfTUVUSE9EREVGCiAgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWR3cml0ZXJfd3JpdGUsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFEMV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9QRUVLX01FVEhPRERFRgorICAgIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMjYyNiw3ICsyNzE5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgLyp0cF9mbGFncyovCi0gICAgYnVmZmVyZWRyYW5kb21fZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCkBAIC0yNjQxLDcgKzI3MzQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylidWZmZXJlZHJhbmRvbV9pbml0LCAvKiB0cF9pbml0ICovCisgICAgX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fLCAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKaW5kZXggYjU1YWI3Mi4uMzFjYzFmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jCisrKyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwpAQCAtMiwxMiArMiwxNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIiAgICAgICAvKiBmb3Igb2Zmc2V0b2YoKSAqLwogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uQnl0ZXNJTyAiYnl0ZXNpbyAqIiAiJlB5Qnl0ZXNJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2Y1MGVjMDM0ZjVjMGIyNl0qLworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIGNoYXIgKmJ1ZjsKKyAgICBQeU9iamVjdCAqYnVmOwogICAgIFB5X3NzaXplX3QgcG9zOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX3NpemU7Ci0gICAgc2l6ZV90IGJ1Zl9zaXplOwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKICAgICBQeV9zc2l6ZV90IGV4cG9ydHM7CkBAIC0xOCw2ICsyMywxMiBAQAogICAgIGJ5dGVzaW8gKnNvdXJjZTsKIH0gYnl0ZXNpb2J1ZjsKIAorLyogVGhlIGJ5dGVzaW8gb2JqZWN0IGNhbiBiZSBpbiB0aHJlZSBzdGF0ZXM6CisgICogUHlfUkVGQ05UKGJ1ZikgPT0gMSwgZXhwb3J0cyA9PSAwLgorICAqIFB5X1JFRkNOVChidWYpID4gMS4gIGV4cG9ydHMgPT0gMCwKKyAgICBmaXJzdCBtb2RpZmljYXRpb24gb3IgZXhwb3J0IGNhdXNlcyB0aGUgaW50ZXJuYWwgYnVmZmVyIGNvcHlpbmcuCisgICogZXhwb3J0cyA+IDAuICBQeV9SRUZDTlQoYnVmKSA9PSAxLCBhbnkgbW9kaWZpY2F0aW9ucyBhcmUgZm9yYmlkZGVuLgorKi8KIAogI2RlZmluZSBDSEVDS19DTE9TRUQoc2VsZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICgoc2VsZiktPmJ1ZiA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzMsNDAgKzQ0LDY0IEBACiAgICAgICAgIHJldHVybiBOVUxMOyBcCiAgICAgfQogCisjZGVmaW5lIFNIQVJFRF9CVUYoc2VsZikgKFB5X1JFRkNOVCgoc2VsZiktPmJ1ZikgPiAxKQorCiAKIC8qIEludGVybmFsIHJvdXRpbmUgdG8gZ2V0IGEgbGluZSBmcm9tIHRoZSBidWZmZXIgb2YgYSBCeXRlc0lPCiAgICBvYmplY3QuIFJldHVybnMgdGhlIGxlbmd0aCBiZXR3ZWVuIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvIHRoZQogICAgbmV4dCBuZXdsaW5lIGNoYXJhY3Rlci4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfbGluZShieXRlc2lvICpzZWxmLCBjaGFyICoqb3V0cHV0KQorc2Nhbl9lb2woYnl0ZXNpbyAqc2VsZiwgUHlfc3NpemVfdCBsZW4pCiB7Ci0gICAgY2hhciAqbjsKLSAgICBjb25zdCBjaGFyICpzdHJfZW5kOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCAqbjsKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKIAogICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNlbGYtPnBvcyA+PSAwKTsKKworICAgIGlmIChzZWxmLT5wb3MgPj0gc2VsZi0+c3RyaW5nX3NpemUpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogTW92ZSB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLCB1cCB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHMuICovCi0gICAgc3RyX2VuZCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnN0cmluZ19zaXplOwotICAgIGZvciAobiA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKLSAgICAgICAgIG4gPCBzdHJfZW5kICYmICpuICE9ICdcbic7Ci0gICAgICAgICBuKyspOworICAgIG1heGxlbiA9IHNlbGYtPnN0cmluZ19zaXplIC0gc2VsZi0+cG9zOworICAgIGlmIChsZW4gPCAwIHx8IGxlbiA+IG1heGxlbikKKyAgICAgICAgbGVuID0gbWF4bGVuOwogCi0gICAgLyogU2tpcCB0aGUgbmV3bGluZSBjaGFyYWN0ZXIgKi8KLSAgICBpZiAobiA8IHN0cl9lbmQpCi0gICAgICAgIG4rKzsKLQotICAgIC8qIEdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4gKi8KLSAgICBsZW4gPSBuIC0gKHNlbGYtPmJ1ZiArIHNlbGYtPnBvcyk7Ci0gICAgKm91dHB1dCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKLQorICAgIGlmIChsZW4pIHsKKyAgICAgICAgc3RhcnQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgICAgICBuID0gbWVtY2hyKHN0YXJ0LCAnXG4nLCBsZW4pOworICAgICAgICBpZiAobikKKyAgICAgICAgICAgIC8qIEdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgdGhlIGxpbmUuICovCisgICAgICAgICAgICBsZW4gPSBuIC0gc3RhcnQgKyAxOworICAgIH0KICAgICBhc3NlcnQobGVuID49IDApOwogICAgIGFzc2VydChzZWxmLT5wb3MgPCBQWV9TU0laRV9UX01BWCAtIGxlbik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKIAogICAgIHJldHVybiBsZW47CiB9CiAKKy8qIEludGVybmFsIHJvdXRpbmUgZm9yIGRldGFjaGluZyB0aGUgc2hhcmVkIGJ1ZmZlciBvZiBCeXRlc0lPIG9iamVjdHMuCisgICBUaGUgY2FsbGVyIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgJ3NpemUnIGFyZ3VtZW50IGlzIG5vbi1uZWdhdGl2ZSBhbmQKKyAgIG5vdCBsZXNzZXIgdGhhbiBzZWxmLT5zdHJpbmdfc2l6ZS4gIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSBvdGhlcndpc2UuICovCitzdGF0aWMgaW50Cit1bnNoYXJlX2J1ZmZlcihieXRlc2lvICpzZWxmLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqbmV3X2J1ZiwgKm9sZF9idWY7CisgICAgYXNzZXJ0KFNIQVJFRF9CVUYoc2VsZikpOworICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOworICAgIGFzc2VydChzaXplID49IChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpOworICAgIG5ld19idWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmIChuZXdfYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2J1ZiksIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZiksCisgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBvbGRfYnVmID0gc2VsZi0+YnVmOworICAgIHNlbGYtPmJ1ZiA9IG5ld19idWY7CisgICAgUHlfREVDUkVGKG9sZF9idWYpOworICAgIHJldHVybiAwOworfQorCiAvKiBJbnRlcm5hbCByb3V0aW5lIGZvciBjaGFuZ2luZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIG9mIEJ5dGVzSU8gb2JqZWN0cy4KICAgIFRoZSBjYWxsZXIgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSAnc2l6ZScgYXJndW1lbnQgaXMgbm9uLW5lZ2F0aXZlLiAgUmV0dXJucwogICAgMCBvbiBzdWNjZXNzLCAtMSBvdGhlcndpc2UuICovCkBAIC03NSw4ICsxMTAsNyBAQAogewogICAgIC8qIEhlcmUsIHVuc2lnbmVkIHR5cGVzIGFyZSB1c2VkIHRvIGF2b2lkIGRlYWxpbmcgd2l0aCBzaWduZWQgaW50ZWdlcgogICAgICAgIG92ZXJmbG93LCB3aGljaCBpcyB1bmRlZmluZWQgaW4gQy4gKi8KLSAgICBzaXplX3QgYWxsb2MgPSBzZWxmLT5idWZfc2l6ZTsKLSAgICBjaGFyICpuZXdfYnVmID0gTlVMTDsKKyAgICBzaXplX3QgYWxsb2MgPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmJ1Zik7CiAKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogCkBAIC0xMDQsMTMgKzEzOCwxNSBAQAogCiAgICAgaWYgKGFsbG9jID4gKChzaXplX3QpLTEpIC8gc2l6ZW9mKGNoYXIpKQogICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgIG5ld19idWYgPSAoY2hhciAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+YnVmLCBhbGxvYyAqIHNpemVvZihjaGFyKSk7Ci0gICAgaWYgKG5ld19idWYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoU0hBUkVEX0JVRihzZWxmKSkgeworICAgICAgICBpZiAodW5zaGFyZV9idWZmZXIoc2VsZiwgYWxsb2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgc2VsZi0+YnVmX3NpemUgPSBhbGxvYzsKLSAgICBzZWxmLT5idWYgPSBuZXdfYnVmOworICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZzZWxmLT5idWYsIGFsbG9jKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTEyNSwxMiArMTYxLDE4IEBACiBzdGF0aWMgUHlfc3NpemVfdAogd3JpdGVfYnl0ZXMoYnl0ZXNpbyAqc2VsZiwgY29uc3QgY2hhciAqYnl0ZXMsIFB5X3NzaXplX3QgbGVuKQogeworICAgIHNpemVfdCBlbmRwb3M7CiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKICAgICBhc3NlcnQoc2VsZi0+cG9zID49IDApOwogICAgIGFzc2VydChsZW4gPj0gMCk7CiAKLSAgICBpZiAoKHNpemVfdClzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5idWZfc2l6ZSkgewotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCAoc2l6ZV90KXNlbGYtPnBvcyArIGxlbikgPCAwKQorICAgIGVuZHBvcyA9IChzaXplX3Qpc2VsZi0+cG9zICsgbGVuOworICAgIGlmIChlbmRwb3MgPiAoc2l6ZV90KVB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+YnVmKSkgeworICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBlbmRwb3MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSBpZiAoU0hBUkVEX0JVRihzZWxmKSkgeworICAgICAgICBpZiAodW5zaGFyZV9idWZmZXIoc2VsZiwgUHlfTUFYKGVuZHBvcywgKHNpemVfdClzZWxmLT5zdHJpbmdfc2l6ZSkpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTE0MywxOCArMTg1LDE4IEBACiAgICAgICAgICAgfCAgIHwgICAgICAgICAgICA8LS10byBwYWQtLT58PC0tLXRvIHdyaXRlLS0tPiAgICB8CiAgICAgICAgICAgMCAgIGJ1ZiAgICAgICAgICAgICAgICAgICBwb3NpdGlvbgogICAgICAgICAqLwotICAgICAgICBtZW1zZXQoc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCisgICAgICAgIG1lbXNldChQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCiAgICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKGNoYXIpKTsKICAgICB9CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsIG92ZXJ3cml0aW5nIHNvbWUgb2YgdGhlIGV4aXN0aW5nCiAgICAgICAgZGF0YSBpZiBzZWxmLT5wb3MgPCBzZWxmLT5zdHJpbmdfc2l6ZS4gKi8KLSAgICBtZW1jcHkoc2VsZi0+YnVmICsgc2VsZi0+cG9zLCBieXRlcywgbGVuKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zLCBieXRlcywgbGVuKTsKKyAgICBzZWxmLT5wb3MgPSBlbmRwb3M7CiAKICAgICAvKiBTZXQgdGhlIG5ldyBsZW5ndGggb2YgdGhlIGludGVybmFsIHN0cmluZyBpZiBpdCBoYXMgY2hhbmdlZC4gKi8KLSAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPCBzZWxmLT5wb3MpIHsKLSAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzZWxmLT5wb3M7CisgICAgaWYgKChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUgPCBlbmRwb3MpIHsKKyAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBlbmRwb3M7CiAgICAgfQogCiAgICAgcmV0dXJuIGxlbjsKQEAgLTE3MSw0MCArMjEzLDcxIEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIocmVhZGFibGVfZG9jLAotInJlYWRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkYWJsZQogCi1QeURvY19TVFJWQVIod3JpdGFibGVfZG9jLAotIndyaXRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7CitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgcmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKHNlZWthYmxlX2RvYywKLSJzZWVrYWJsZSgpIC0+IGJvb2wuIFJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuIik7Ci0KLS8qIEdlbmVyaWMgZ2V0dGVyIGZvciB0aGUgd3JpdGFibGUsIHJlYWRhYmxlIGFuZCBzZWVrYWJsZSBwcm9wZXJ0aWVzICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmV0dXJuX25vdF9jbG9zZWQoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX3JlYWRhYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZTkzODIyYWQ1YjYyMjYzIGlucHV0PTk2YzVkMGNjY2ZiMjlmNWNdKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihmbHVzaF9kb2MsCi0iZmx1c2goKSAtPiBOb25lLiAgRG9lcyBub3RoaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ud3JpdGFibGUKKworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX2ZsdXNoKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT193cml0YWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjRmZjZhMjU0YjExNTBiOCBpbnB1dD03MDBlZWQ4MDgyNzc1NjBhXSovCit7CisgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5zZWVrYWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fc2Vla2FibGVfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiNDE3ZjQ2ZGNjMDliNTYgaW5wdXQ9OTQyMWY2NTYyN2EzNDRkZF0qLworeworICAgIENIRUNLX0NMT1NFRChzZWxmKTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uZmx1c2gKKworRG9lcyBub3RoaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZmx1c2hfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4N2UzZDc4MWNhMTM0YTAgaW5wdXQ9NTYxZWE0OTBiZTQ1ODFhN10qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldGJ1ZmZlcl9kb2MsCi0iZ2V0YnVmZmVyKCkgLT4gYnl0ZXMuXG4iCi0iXG4iCi0iR2V0IGEgcmVhZC13cml0ZSB2aWV3IG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmdldGJ1ZmZlcgorCitHZXQgYSByZWFkLXdyaXRlIHZpZXcgb3ZlciB0aGUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19nZXRidWZmZXIoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzJjZDdjNmUxM2FhMDllZCBpbnB1dD04ZjczOGVmNjE1ODY1MTc2XSovCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gJl9QeUJ5dGVzSU9CdWZmZXJfVHlwZTsKICAgICBieXRlc2lvYnVmICpidWY7CkBAIC0yMjIsNTkgKzI5NSwxMDQgQEAKICAgICByZXR1cm4gdmlldzsKIH0KIAotUHlEb2NfU1RSVkFSKGdldHZhbF9kb2MsCi0iZ2V0dmFsdWUoKSAtPiBieXRlcy5cbiIKLSJcbiIKLSJSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmdldHZhbHVlCisKK1JldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19nZXR2YWx1ZShieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fZ2V0dmFsdWVfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIzZjZhMzIzM2M4ZmQ2MjggaW5wdXQ9NGI0MDNhYzBhZjM5NzNlZF0qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWYsIHNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPD0gMSB8fCBzZWxmLT5leHBvcnRzID4gMCkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOworCisgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+YnVmKSkgeworICAgICAgICBpZiAoU0hBUkVEX0JVRihzZWxmKSkgeworICAgICAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKHNlbGYsIHNlbGYtPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZzZWxmLT5idWYsIHNlbGYtPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfSU5DUkVGKHNlbGYtPmJ1Zik7CisgICAgcmV0dXJuIHNlbGYtPmJ1ZjsKIH0KIAotUHlEb2NfU1RSVkFSKGlzYXR0eV9kb2MsCi0iaXNhdHR5KCkgLT4gRmFsc2UuXG4iCi0iXG4iCi0iQWx3YXlzIHJldHVybnMgRmFsc2Ugc2luY2UgQnl0ZXNJTyBvYmplY3RzIGFyZSBub3QgY29ubmVjdGVkXG4iCi0idG8gYSB0dHktbGlrZSBkZXZpY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5pc2F0dHkKKworQWx3YXlzIHJldHVybnMgRmFsc2UuCisKK0J5dGVzSU8gb2JqZWN0cyBhcmUgbm90IGNvbm5lY3RlZCB0byBhIFRUWS1saWtlIGRldmljZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9faXNhdHR5KGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmNjc3MTJlNjY5ZjZjOGYgaW5wdXQ9NmY5N2YwOTg1ZDEzZjgyN10qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLVB5RG9jX1NUUlZBUih0ZWxsX2RvYywKLSJ0ZWxsKCkgLT4gY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnRlbGwKKworQ3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb190ZWxsKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT190ZWxsX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNTRiMGY5M2NkMGU1ZTFkIGlucHV0PWIxMDZhZGYwOTljYjM2NTddKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MpOwogfQogCi1QeURvY19TVFJWQVIocmVhZF9kb2MsCi0icmVhZChbc2l6ZV0pIC0+IHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKLSJcbiIKLSJJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC5cbiIKLSJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKK3N0YXRpYyBQeU9iamVjdCAqCityZWFkX2J5dGVzKGJ5dGVzaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpvdXRwdXQ7CisKKyAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOworICAgIGFzc2VydChzaXplIDw9IHNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBpZiAoc2l6ZSA+IDEgJiYKKyAgICAgICAgc2VsZi0+cG9zID09IDAgJiYgc2l6ZSA9PSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmJ1ZikgJiYKKyAgICAgICAgc2VsZi0+ZXhwb3J0cyA9PSAwKSB7CisgICAgICAgIHNlbGYtPnBvcyArPSBzaXplOworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+YnVmKTsKKyAgICAgICAgcmV0dXJuIHNlbGYtPmJ1ZjsKKyAgICB9CisKKyAgICBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgIHNlbGYtPnBvcyArPSBzaXplOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG91dHB1dCwgc2l6ZSk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWQKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LgorCitJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fcmVhZF9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVkYWNiNTM1YzFlMTc4MSBpbnB1dD1jYzdiYTRhNzk3YmIxNTU1XSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuOwotICAgIGNoYXIgKm91dHB1dDsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMjk4LDUyICs0MTYsNDggQEAKICAgICAgICAgICAgIHNpemUgPSAwOwogICAgIH0KIAotICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7Ci0gICAgb3V0cHV0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwotICAgIHNlbGYtPnBvcyArPSBzaXplOwotCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3V0cHV0LCBzaXplKTsKKyAgICByZXR1cm4gcmVhZF9ieXRlcyhzZWxmLCBzaXplKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmVhZDFfZG9jLAotInJlYWQxKHNpemUpIC0+IHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKLSJcbiIKLSJJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZDEKKyAgICBzaXplOiBvYmplY3QKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC4KKworSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkMShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqbikKK19pb19CeXRlc0lPX3JlYWQxKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE2MDIxZjVkMGFjM2Q0ZTIgaW5wdXQ9ZDRmNDBiYjhmMmY5OTQxOF0qLwogewotICAgIFB5T2JqZWN0ICphcmcsICpyZXM7Ci0KLSAgICBhcmcgPSBQeVR1cGxlX1BhY2soMSwgbik7Ci0gICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgID0gYnl0ZXNpb19yZWFkKHNlbGYsIGFyZyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOwogfQogCi1QeURvY19TVFJWQVIocmVhZGxpbmVfZG9jLAotInJlYWRsaW5lKFtzaXplXSkgLT4gbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgotIlxuIgotIlJldGFpbiBuZXdsaW5lLiAgQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCBsaW1pdHMgdGhlIG1heGltdW1cbiIKLSJudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIChhbiBpbmNvbXBsZXRlIGxpbmUgbWF5IGJlIHJldHVybmVkIHRoZW4pLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkbGluZQorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitOZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBieXRlcyBvYmplY3QuCisKK1JldGFpbiBuZXdsaW5lLiAgQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCBsaW1pdHMgdGhlIG1heGltdW0KK251bWJlciBvZiBieXRlcyB0byByZXR1cm4gKGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQgdGhlbikuCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fcmVhZGxpbmUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWMyMTE1NTM0YTRmOTI3NiBpbnB1dD1jYTMxZjA2ZGU2ZWFiMjU3XSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuOwotICAgIGNoYXIgKm91dHB1dDsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZGxpbmUiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3QoYXJnKTsKICAgICAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTM1OSwzNyArNDczLDMzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG4gPSBnZXRfbGluZShzZWxmLCAmb3V0cHV0KTsKKyAgICBuID0gc2Nhbl9lb2woc2VsZiwgc2l6ZSk7CiAKLSAgICBpZiAoc2l6ZSA+PSAwICYmIHNpemUgPCBuKSB7Ci0gICAgICAgIHNpemUgPSBuIC0gc2l6ZTsKLSAgICAgICAgbiAtPSBzaXplOwotICAgICAgICBzZWxmLT5wb3MgLT0gc2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShvdXRwdXQsIG4pOworICAgIHJldHVybiByZWFkX2J5dGVzKHNlbGYsIG4pOwogfQogCi1QeURvY19TVFJWQVIocmVhZGxpbmVzX2RvYywKLSJyZWFkbGluZXMoW3NpemVdKSAtPiBsaXN0IG9mIHN0cmluZ3MsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuXG4iCi0iXG4iCi0iQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIHNvIHJlYWQuXG4iCi0iVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcbiIKLSJ0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkbGluZXMKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworTGlzdCBvZiBieXRlcyBvYmplY3RzLCBlYWNoIGEgbGluZSBmcm9tIHRoZSBmaWxlLgorCitDYWxsIHJlYWRsaW5lKCkgcmVwZWF0ZWRseSBhbmQgcmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgc28gcmVhZC4KK1RoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlCit0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkbGluZXMoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5YjhlMzRjODgwODA4ZmYgaW5wdXQ9NjkxYWExMzE0ZjJjMmE4N10qLwogewogICAgIFB5X3NzaXplX3QgbWF4c2l6ZSwgc2l6ZSwgbjsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqbGluZTsKICAgICBjaGFyICpvdXRwdXQ7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJlYWRsaW5lcyIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBtYXhzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAobWF4c2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtNDEwLDcgKzUyMCw5IEBACiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgd2hpbGUgKChuID0gZ2V0X2xpbmUoc2VsZiwgJm91dHB1dCkpICE9IDApIHsKKyAgICBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgIHdoaWxlICgobiA9IHNjYW5fZW9sKHNlbGYsIC0xKSkgIT0gMCkgeworICAgICAgICBzZWxmLT5wb3MgKz0gbjsKICAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3V0cHV0LCBuKTsKICAgICAgICAgaWYgKCFsaW5lKQogICAgICAgICAgICAgZ290byBvbl9lcnJvcjsKQEAgLTQyMiw2ICs1MzQsNyBAQAogICAgICAgICBzaXplICs9IG47CiAgICAgICAgIGlmIChtYXhzaXplID4gMCAmJiBzaXplID49IG1heHNpemUpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgb3V0cHV0ICs9IG47CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTQzMCwyNSArNTQzLDI3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWFkaW50b19kb2MsCi0icmVhZGludG8oYnl0ZWFycmF5KSAtPiBpbnQuICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGIuXG4iCi0iXG4iCi0iUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKSwgb3IgTm9uZSBpZiB0aGUgb2JqZWN0XG4iCi0iaXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCisKK1JlYWQgdXAgdG8gbGVuKGJ1ZmZlcikgYnl0ZXMgaW50byBidWZmZXIuCisKK1JldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRiksIG9yIE5vbmUgaWYgdGhlIG9iamVjdAoraXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkaW50byhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChieXRlc2lvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNWQ0MDcyMTdkY2YwNjM5IGlucHV0PTcxNTgxZjMyNjM1YzNhMzFdKi8KIHsKLSAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIFB5X3NzaXplX3QgbGVuLCBuOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KiIsICZidWZmZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIGFkanVzdCBpbnZhbGlkIHNpemVzICovCi0gICAgbGVuID0gYnVmZmVyLmxlbjsKKyAgICBsZW4gPSBidWZmZXItPmxlbjsKICAgICBuID0gc2VsZi0+c3RyaW5nX3NpemUgLSBzZWxmLT5wb3M7CiAgICAgaWYgKGxlbiA+IG4pIHsKICAgICAgICAgbGVuID0gbjsKQEAgLTQ1NiwzMyArNTcxLDM0IEBACiAgICAgICAgICAgICBsZW4gPSAwOwogICAgIH0KIAotICAgIG1lbWNweShidWZmZXIuYnVmLCBzZWxmLT5idWYgKyBzZWxmLT5wb3MsIGxlbik7CisgICAgbWVtY3B5KGJ1ZmZlci0+YnVmLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zLCBsZW4pOwogICAgIGFzc2VydChzZWxmLT5wb3MgKyBsZW4gPCBQWV9TU0laRV9UX01BWCk7CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKICAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7CiB9CiAKLVB5RG9jX1NUUlZBUih0cnVuY2F0ZV9kb2MsCi0idHJ1bmNhdGUoW3NpemVdKSAtPiBpbnQuICBUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuXG4iCi0iXG4iCi0iU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuXG4iCi0iVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuICBSZXR1cm5zIHRoZSBuZXcgc2l6ZS5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8udHJ1bmNhdGUKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzLgorCitTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS4KK1RoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLiAgUmV0dXJucyB0aGUgbmV3IHNpemUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3RydW5jYXRlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fdHJ1bmNhdGVfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZTZiZTYwZTY3ZGRkNjYgaW5wdXQ9MTFlZDE5NjY4MzU0NjJiYV0qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBDSEVDS19FWFBPUlRTKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtNTE2LDQ5ICs2MzIsNDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc2lvX2l0ZXJuZXh0KGJ5dGVzaW8gKnNlbGYpCiB7Ci0gICAgY2hhciAqbmV4dDsKICAgICBQeV9zc2l6ZV90IG47CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBuID0gZ2V0X2xpbmUoc2VsZiwgJm5leHQpOworICAgIG4gPSBzY2FuX2VvbChzZWxmLCAtMSk7CiAKLSAgICBpZiAoIW5leHQgfHwgbiA9PSAwKQorICAgIGlmIChuID09IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUobmV4dCwgbik7CisgICAgcmV0dXJuIHJlYWRfYnl0ZXMoc2VsZiwgbik7CiB9CiAKLVB5RG9jX1NUUlZBUihzZWVrX2RvYywKLSJzZWVrKHBvc1ssIHdoZW5jZV0pIC0+IGludC4gIENoYW5nZSBzdHJlYW0gcG9zaXRpb24uXG4iCi0iXG4iCi0iU2VlayB0byBieXRlIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZTpcbiIKLSIgICAgIDAgIFN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpLiAgcG9zIHNob3VsZCBiZSA+PSAwO1xuIgotIiAgICAgMSAgQ3VycmVudCBwb3NpdGlvbiAtIHBvcyBtYXkgYmUgbmVnYXRpdmU7XG4iCi0iICAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIHVzdWFsbHkgbmVnYXRpdmUuXG4iCi0iUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uc2VlaworICAgIHBvczogUHlfc3NpemVfdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KKworQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi4KKworU2VlayB0byBieXRlIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZToKKyAgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7CisgICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbWF5IGJlIG5lZ2F0aXZlOworICAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIHVzdWFsbHkgbmVnYXRpdmUuCitSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3NlZWsoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19zZWVrX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlfc3NpemVfdCBwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzI2MjA0YTY4ZTkxOTBlNCBpbnB1dD0xZTg3NWU2ZWJjNjUyOTQ4XSovCiB7Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgaW50IG1vZGUgPSAwOwotCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsICZwb3MsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocG9zIDwgMCAmJiBtb2RlID09IDApIHsKKyAgICBpZiAocG9zIDwgMCAmJiB3aGVuY2UgPT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBzZWVrIHZhbHVlICV6ZCIsIHBvcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIG1vZGUgMDogb2Zmc2V0IHJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgotICAgICAgIG1vZGUgMTogb2Zmc2V0IHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24uCi0gICAgICAgbW9kZSAyOiBvZmZzZXQgcmVsYXRpdmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLwotICAgIGlmIChtb2RlID09IDEpIHsKKyAgICAvKiB3aGVuY2UgPSAwOiBvZmZzZXQgcmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICAgd2hlbmNlID0gMTogb2Zmc2V0IHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICAgd2hlbmNlID0gMjogb2Zmc2V0IHJlbGF0aXZlIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKyAgICBpZiAod2hlbmNlID09IDEpIHsKICAgICAgICAgaWYgKHBvcyA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+cG9zKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IHBvc2l0aW9uIHRvbyBsYXJnZSIpOwpAQCAtNTY2LDcgKzY4Miw3IEBACiAgICAgICAgIH0KICAgICAgICAgcG9zICs9IHNlbGYtPnBvczsKICAgICB9Ci0gICAgZWxzZSBpZiAobW9kZSA9PSAyKSB7CisgICAgZWxzZSBpZiAod2hlbmNlID09IDIpIHsKICAgICAgICAgaWYgKHBvcyA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+c3RyaW5nX3NpemUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZXcgcG9zaXRpb24gdG9vIGxhcmdlIik7CkBAIC01NzQsOSArNjkwLDkgQEAKICAgICAgICAgfQogICAgICAgICBwb3MgKz0gc2VsZi0+c3RyaW5nX3NpemU7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgIT0gMCkgeworICAgIGVsc2UgaWYgKHdoZW5jZSAhPSAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgd2hlbmNlICglaSwgc2hvdWxkIGJlIDAsIDEgb3IgMikiLCBtb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpIiwgd2hlbmNlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC01ODcsNTQgKzcwMyw2MyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9zKTsKIH0KIAotUHlEb2NfU1RSVkFSKHdyaXRlX2RvYywKLSJ3cml0ZShieXRlcykgLT4gaW50LiAgV3JpdGUgYnl0ZXMgdG8gZmlsZS5cbiIKLSJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ud3JpdGUKKyAgICBiOiBvYmplY3QKKyAgICAvCisKK1dyaXRlIGJ5dGVzIHRvIGZpbGUuCisKK1JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3dyaXRlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpvYmopCitfaW9fQnl0ZXNJT193cml0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzMxNmQ5OTgwMGEwYjk1IGlucHV0PWY1ZWM3YzhjNjRlZDcyMGFdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSAwOwogICAgIFB5X2J1ZmZlciBidWY7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgQ0hFQ0tfRVhQT1JUUyhzZWxmKTsKIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmYnVmLCBQeUJVRl9DT05USUdfUk8pIDwgMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIsICZidWYsIFB5QlVGX0NPTlRJR19STykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChidWYubGVuICE9IDApCiAgICAgICAgIG4gPSB3cml0ZV9ieXRlcyhzZWxmLCBidWYuYnVmLCBidWYubGVuKTsKLSAgICBpZiAobiA+PSAwKQotICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3Qobik7CiAKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG4gPj0gMCA/IFB5TG9uZ19Gcm9tU3NpemVfdChuKSA6IE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUih3cml0ZWxpbmVzX2RvYywKLSJ3cml0ZWxpbmVzKGxpbmVzKSAtPiBOb25lLiAgV3JpdGUgYnl0ZXMgb2JqZWN0cyB0byB0aGUgZmlsZS5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdCBhZGRlZC4gIFRoZSBhcmd1bWVudCBjYW4gYmUgYW55IGl0ZXJhYmxlXG4iCi0ib2JqZWN0IHByb2R1Y2luZyBieXRlcyBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvclxuIgotImVhY2ggYnl0ZXMgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ud3JpdGVsaW5lcworICAgIGxpbmVzOiBvYmplY3QKKyAgICAvCisKK1dyaXRlIGxpbmVzIHRvIHRoZSBmaWxlLgorCitOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdCBhZGRlZC4gIGxpbmVzIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0Citwcm9kdWNpbmcgYnl0ZXMtbGlrZSBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvcgorZWFjaCBlbGVtZW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb193cml0ZWxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICp2KQorX2lvX0J5dGVzSU9fd3JpdGVsaW5lcyhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqbGluZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2YzM2FhMzI3MWM5MTc1MiBpbnB1dD1lOTcyNTM5MTc2ZmM4ZmMxXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKICAgICBQeU9iamVjdCAqcmV0OwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHYpOworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihsaW5lcyk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIHJldCA9IGJ5dGVzaW9fd3JpdGUoc2VsZiwgaXRlbSk7CisgICAgICAgIHJldCA9IF9pb19CeXRlc0lPX3dyaXRlKHNlbGYsIGl0ZW0pOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmIChyZXQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKQEAgLTY1MSwxNyArNzc2LDE4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCi0iY2xvc2UoKSAtPiBOb25lLiAgRGlzYWJsZSBhbGwgSS9PIG9wZXJhdGlvbnMuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5jbG9zZQorCitEaXNhYmxlIGFsbCBJL08gb3BlcmF0aW9ucy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fY2xvc2UoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX2Nsb3NlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDcxYmI5NDExYWY4NGEwIGlucHV0PTM3ZTFmNTU1NTZlNjFmNjBdKi8KIHsKICAgICBDSEVDS19FWFBPUlRTKHNlbGYpOwotICAgIGlmIChzZWxmLT5idWYgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1Zik7Ci0gICAgICAgIHNlbGYtPmJ1ZiA9IE5VTEw7Ci0gICAgfQorICAgIFB5X0NMRUFSKHNlbGYtPmJ1Zik7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTY4Myw3ICs4MDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzaW9fZ2V0c3RhdGUoYnl0ZXNpbyAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gYnl0ZXNpb19nZXR2YWx1ZShzZWxmKTsKKyAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gX2lvX0J5dGVzSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKQEAgLTczMyw3ICs4NTksNyBAQAogCiAgICAgLyogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgYnVmZmVyLiBJZiBzdGF0ZVswXSBkb2VzIG5vdCBzdXBwb3J0IHRoZQogICAgICAgIGJ1ZmZlciBwcm90b2NvbCwgYnl0ZXNpb193cml0ZSB3aWxsIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBUeXBlRXJyb3IuICovCi0gICAgcmVzdWx0ID0gYnl0ZXNpb193cml0ZShzZWxmLCBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCAwKSk7CisgICAgcmVzdWx0ID0gX2lvX0J5dGVzSU9fd3JpdGUoc2VsZiwgUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC03OTEsMTAgKzkxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhbGxvY2F0ZWQgQnl0ZXNJTyBvYmplY3QgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMiKTsKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICB9Ci0gICAgaWYgKHNlbGYtPmJ1ZiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmKTsKLSAgICAgICAgc2VsZi0+YnVmID0gTlVMTDsKLSAgICB9CisgICAgUHlfQ0xFQVIoc2VsZi0+YnVmKTsKICAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKICAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKICAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CkBAIC04MTQsNyArOTM3LDcgQEAKICAgICAvKiB0cF9hbGxvYyBpbml0aWFsaXplcyBhbGwgdGhlIGZpZWxkcyB0byB6ZXJvLiBTbyB3ZSBkb24ndCBoYXZlIHRvCiAgICAgICAgaW5pdGlhbGl6ZSB0aGVtIGhlcmUuICovCiAKLSAgICBzZWxmLT5idWYgPSAoY2hhciAqKVB5TWVtX01hbGxvYygwKTsKKyAgICBzZWxmLT5idWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgIGlmIChzZWxmLT5idWYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtODIzLDI3ICs5NDYsNDEgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uX19pbml0X18KKyAgICBpbml0aWFsX2J5dGVzIGFzIGluaXR2YWx1ZTogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK0J1ZmZlcmVkIEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnl0ZXMgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1ieXRlc2lvX2luaXQoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2lvX0J5dGVzSU9fX19pbml0X19faW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqaW5pdHZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1YzBjNTFlMjRjNWI2MjEgaW5wdXQ9YWFjN2YzMWI2N2JmMGZiNl0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86Qnl0ZXNJTyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5pdHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgLyogSW4gY2FzZSwgX19pbml0X18gaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiAqLwogICAgIHNlbGYtPnN0cmluZ19zaXplID0gMDsKICAgICBzZWxmLT5wb3MgPSAwOwogCisgICAgaWYgKHNlbGYtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJFeGlzdGluZyBleHBvcnRzIG9mIGRhdGE6IG9iamVjdCBjYW5ub3QgYmUgcmUtc2l6ZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAoaW5pdHZhbHVlICYmIGluaXR2YWx1ZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIHJlcyA9IGJ5dGVzaW9fd3JpdGUoc2VsZiwgaW5pdHZhbHVlKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgc2VsZi0+cG9zID0gMDsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdChpbml0dmFsdWUpKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoaW5pdHZhbHVlKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoc2VsZi0+YnVmKTsKKyAgICAgICAgICAgIHNlbGYtPmJ1ZiA9IGluaXR2YWx1ZTsKKyAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gUHlCeXRlc19HRVRfU0laRShpbml0dmFsdWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgICAgIHJlcyA9IF9pb19CeXRlc0lPX3dyaXRlKHNlbGYsIGluaXR2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBzZWxmLT5wb3MgPSAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC04NTUsOCArOTkyLDggQEAKICAgICBQeV9zc2l6ZV90IHJlczsKIAogICAgIHJlcyA9IHNpemVvZihieXRlc2lvKTsKLSAgICBpZiAoc2VsZi0+YnVmKQotICAgICAgICByZXMgKz0gc2VsZi0+YnVmX3NpemU7CisgICAgaWYgKHNlbGYtPmJ1ZiAmJiAhU0hBUkVEX0JVRihzZWxmKSkKKyAgICAgICAgcmVzICs9IF9QeVN5c19HZXRTaXplT2Yoc2VsZi0+YnVmKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTg3NSw2ICsxMDEyLDggQEAKIH0KIAogCisjaW5jbHVkZSAiY2xpbmljL2J5dGVzaW8uYy5oIgorCiBzdGF0aWMgUHlHZXRTZXREZWYgYnl0ZXNpb19nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJjbG9zZWQiLCAgKGdldHRlcilieXRlc2lvX2dldF9jbG9zZWQsIE5VTEwsCiAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4ifSwKQEAgLTg4MiwzNiArMTAyMSwzMCBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBieXRlc2lvX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWRhYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgcmVhZGFibGVfZG9jfSwKLSAgICB7InNlZWthYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgc2Vla2FibGVfZG9jfSwKLSAgICB7IndyaXRhYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgd3JpdGFibGVfZG9jfSwKLSAgICB7ImNsb3NlIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19jbG9zZSwgICAgICBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKLSAgICB7ImZsdXNoIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19mbHVzaCwgICAgICBNRVRIX05PQVJHUywgZmx1c2hfZG9jfSwKLSAgICB7ImlzYXR0eSIsICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19pc2F0dHksICAgICBNRVRIX05PQVJHUywgaXNhdHR5X2RvY30sCi0gICAgeyJ0ZWxsIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fdGVsbCwgICAgICAgTUVUSF9OT0FSR1MsIHRlbGxfZG9jfSwKLSAgICB7IndyaXRlIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb193cml0ZSwgICAgICBNRVRIX08sIHdyaXRlX2RvY30sCi0gICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fd3JpdGVsaW5lcywgTUVUSF9PLCB3cml0ZWxpbmVzX2RvY30sCi0gICAgeyJyZWFkMSIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZDEsICAgICAgTUVUSF9PLCByZWFkMV9kb2N9LAotICAgIHsicmVhZGludG8iLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX3JlYWRpbnRvLCAgIE1FVEhfTywgcmVhZGludG9fZG9jfSwKLSAgICB7InJlYWRsaW5lIiwgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkbGluZSwgICBNRVRIX1ZBUkFSR1MsIHJlYWRsaW5lX2RvY30sCi0gICAgeyJyZWFkbGluZXMiLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZGxpbmVzLCAgTUVUSF9WQVJBUkdTLCByZWFkbGluZXNfZG9jfSwKLSAgICB7InJlYWQiLCAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkLCAgICAgICBNRVRIX1ZBUkFSR1MsIHJlYWRfZG9jfSwKLSAgICB7ImdldGJ1ZmZlciIsICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19nZXRidWZmZXIsICBNRVRIX05PQVJHUywgIGdldGJ1ZmZlcl9kb2N9LAotICAgIHsiZ2V0dmFsdWUiLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX2dldHZhbHVlLCAgIE1FVEhfTk9BUkdTLCAgZ2V0dmFsX2RvY30sCi0gICAgeyJzZWVrIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fc2VlaywgICAgICAgTUVUSF9WQVJBUkdTLCBzZWVrX2RvY30sCi0gICAgeyJ0cnVuY2F0ZSIsICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fdHJ1bmNhdGUsICAgTUVUSF9WQVJBUkdTLCB0cnVuY2F0ZV9kb2N9LAorICAgIF9JT19CWVRFU0lPX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0lTQVRUWV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19URUxMX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRFTElORVNfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRDFfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRExJTkVTX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fR0VUQlVGRkVSX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0dFVFZBTFVFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgeyJfX2dldHN0YXRlX18iLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fZ2V0c3RhdGUsICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fc2V0c3RhdGUsICBNRVRIX08sIE5VTEx9LAogICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilieXRlc2lvX3NpemVvZiwgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCi1QeURvY19TVFJWQVIoYnl0ZXNpb19kb2MsCi0iQnl0ZXNJTyhbYnVmZmVyXSkgLT4gb2JqZWN0XG4iCi0iXG4iCi0iQ3JlYXRlIGEgYnVmZmVyZWQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBieXRlc1xuIgotImJ1ZmZlciwgcmVhZHkgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuIik7Ci0KIFB5VHlwZU9iamVjdCBQeUJ5dGVzSU9fVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiX2lvLkJ5dGVzSU8iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KQEAgLTkzNCw3ICsxMDY3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfAogICAgIFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KLSAgICBieXRlc2lvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgIF9pb19CeXRlc0lPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgICAvKnRwX2RvYyovCiAgICAgKHRyYXZlcnNlcHJvYylieXRlc2lvX3RyYXZlcnNlLCAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwogICAgIChpbnF1aXJ5KWJ5dGVzaW9fY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCkBAIC05NDksNyArMTA4Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwogICAgIG9mZnNldG9mKGJ5dGVzaW8sIGRpY3QpLCAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylieXRlc2lvX2luaXQsICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIF9pb19CeXRlc0lPX19faW5pdF9fLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KICAgICBieXRlc2lvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwogfTsKQEAgLTk2NCwxOCArMTA5NywyNCBAQAogc3RhdGljIGludAogYnl0ZXNpb2J1Zl9nZXRidWZmZXIoYnl0ZXNpb2J1ZiAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpbnQgcmV0OwogICAgIGJ5dGVzaW8gKmIgPSAoYnl0ZXNpbyAqKSBvYmotPnNvdXJjZTsKKwogICAgIGlmICh2aWV3ID09IE5VTEwpIHsKLSAgICAgICAgYi0+ZXhwb3J0cysrOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImJ5dGVzaW9idWZfZ2V0YnVmZmVyOiB2aWV3PT1OVUxMIGFyZ3VtZW50IGlzIG9ic29sZXRlIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0ID0gUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIGItPmJ1ZiwgYi0+c3RyaW5nX3NpemUsCisgICAgaWYgKFNIQVJFRF9CVUYoYikpIHsKKyAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKGIsIGItPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogY2Fubm90IGZhaWwgaWYgdmlldyAhPSBOVUxMIGFuZCByZWFkb25seSA9PSAwICovCisgICAgKHZvaWQpUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYi0+YnVmKSwgYi0+c3RyaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmxhZ3MpOwotICAgIGlmIChyZXQgPj0gMCkgewotICAgICAgICBiLT5leHBvcnRzKys7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgYi0+ZXhwb3J0cysrOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2FiYjkzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fb3Blbl9fZG9jX18sCisib3BlbigkbW9kdWxlLCAvLCBmaWxlLCBtb2RlPVwnclwnLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCisiICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS5cbiIKKyJcbiIKKyJmaWxlIGlzIGVpdGhlciBhIHRleHQgb3IgYnl0ZSBzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIChhbmQgdGhlIHBhdGhcbiIKKyJpZiB0aGUgZmlsZSBpc25cJ3QgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvXG4iCisiYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlXG4iCisid3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGVcbiIKKyJyZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLilcbiIKKyJcbiIKKyJtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZVxuIgorImlzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gXCdyXCcgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0XG4iCisibW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlIFwnd1wnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCisiaXQgYWxyZWFkeSBleGlzdHMpLCBcJ3hcJyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCisiXCdhXCcgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlc1xuIgorImFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuXG4iCisiSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtXG4iCisiZGVwZW5kZW50OiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGlzIGNhbGxlZCB0byBnZXQgdGhlXG4iCisiY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeVxuIgorIm1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6XG4iCisiXG4iCisiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgorIkNoYXJhY3RlciBNZWFuaW5nXG4iCisiLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgorIlwnclwnICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpXG4iCisiXCd3XCcgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgorIlwneFwnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nXG4iCisiXCdhXCcgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzXG4iCisiXCdiXCcgICAgICAgYmluYXJ5IG1vZGVcbiIKKyJcJ3RcJyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpXG4iCisiXCcrXCcgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpXG4iCisiXCdVXCcgICAgICAgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSAoZGVwcmVjYXRlZClcbiIKKyI9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCisiXG4iCisiVGhlIGRlZmF1bHQgbW9kZSBpcyBcJ3J0XCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tXG4iCisiYWNjZXNzLCB0aGUgbW9kZSBcJ3crYlwnIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGVcbiIKKyJcJ3IrYlwnIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlIFwneFwnIG1vZGUgaW1wbGllcyBcJ3dcJyBhbmRcbiIKKyJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCisiXG4iCisiUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgorImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuXCd0LiBGaWxlcyBvcGVuZWQgaW5cbiIKKyJiaW5hcnkgbW9kZSAoYXBwZW5kaW5nIFwnYlwnIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXNcbiIKKyJieXRlcyBvYmplY3RzIHdpdGhvdXQgYW55IGRlY29kaW5nLiBJbiB0ZXh0IG1vZGUgKHRoZSBkZWZhdWx0LCBvciB3aGVuXG4iCisiXCd0XCcgaXMgYXBwZW5kZWQgdG8gdGhlIG1vZGUgYXJndW1lbnQpLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlXG4iCisicmV0dXJuZWQgYXMgc3RyaW5ncywgdGhlIGJ5dGVzIGhhdmluZyBiZWVuIGZpcnN0IGRlY29kZWQgdXNpbmcgYVxuIgorInBsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLlxuIgorIlxuIgorIlwnVVwnIG1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4gZnV0dXJlIHZlcnNpb25zXG4iCisib2YgUHl0aG9uLiAgSXQgaGFzIG5vIGVmZmVjdCBpbiBQeXRob24gMy4gIFVzZSBuZXdsaW5lIHRvIGNvbnRyb2xcbiIKKyJ1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS5cbiIKKyJcbiIKKyJidWZmZXJpbmcgaXMgYW4gb3B0aW9uYWwgaW50ZWdlciB1c2VkIHRvIHNldCB0aGUgYnVmZmVyaW5nIHBvbGljeS5cbiIKKyJQYXNzIDAgdG8gc3dpdGNoIGJ1ZmZlcmluZyBvZmYgKG9ubHkgYWxsb3dlZCBpbiBiaW5hcnkgbW9kZSksIDEgdG8gc2VsZWN0XG4iCisibGluZSBidWZmZXJpbmcgKG9ubHkgdXNhYmxlIGluIHRleHQgbW9kZSksIGFuZCBhbiBpbnRlZ2VyID4gMSB0byBpbmRpY2F0ZVxuIgorInRoZSBzaXplIG9mIGEgZml4ZWQtc2l6ZSBjaHVuayBidWZmZXIuICBXaGVuIG5vIGJ1ZmZlcmluZyBhcmd1bWVudCBpc1xuIgorImdpdmVuLCB0aGUgZGVmYXVsdCBidWZmZXJpbmcgcG9saWN5IHdvcmtzIGFzIGZvbGxvd3M6XG4iCisiXG4iCisiKiBCaW5hcnkgZmlsZXMgYXJlIGJ1ZmZlcmVkIGluIGZpeGVkLXNpemUgY2h1bmtzOyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyXG4iCisiICBpcyBjaG9zZW4gdXNpbmcgYSBoZXVyaXN0aWMgdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdW5kZXJseWluZyBkZXZpY2VcJ3NcbiIKKyIgIFwiYmxvY2sgc2l6ZVwiIGFuZCBmYWxsaW5nIGJhY2sgb24gYGlvLkRFRkFVTFRfQlVGRkVSX1NJWkVgLlxuIgorIiAgT24gbWFueSBzeXN0ZW1zLCB0aGUgYnVmZmVyIHdpbGwgdHlwaWNhbGx5IGJlIDQwOTYgb3IgODE5MiBieXRlcyBsb25nLlxuIgorIlxuIgorIiogXCJJbnRlcmFjdGl2ZVwiIHRleHQgZmlsZXMgKGZpbGVzIGZvciB3aGljaCBpc2F0dHkoKSByZXR1cm5zIFRydWUpXG4iCisiICB1c2UgbGluZSBidWZmZXJpbmcuICBPdGhlciB0ZXh0IGZpbGVzIHVzZSB0aGUgcG9saWN5IGRlc2NyaWJlZCBhYm92ZVxuIgorIiAgZm9yIGJpbmFyeSBmaWxlcy5cbiIKKyJcbiIKKyJlbmNvZGluZyBpcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBkZWNvZGUgb3IgZW5jb2RlIHRoZVxuIgorImZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzXG4iCisicGxhdGZvcm0gZGVwZW5kZW50LCBidXQgYW55IGVuY29kaW5nIHN1cHBvcnRlZCBieSBQeXRob24gY2FuIGJlXG4iCisicGFzc2VkLiAgU2VlIHRoZSBjb2RlY3MgbW9kdWxlIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZW5jb2RpbmdzLlxuIgorIlxuIgorImVycm9ycyBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGVycm9ycyBhcmUgdG9cbiIKKyJiZSBoYW5kbGVkLS0tdGhpcyBhcmd1bWVudCBzaG91bGQgbm90IGJlIHVzZWQgaW4gYmluYXJ5IG1vZGUuIFBhc3NcbiIKKyJcJ3N0cmljdFwnIHRvIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZW5jb2RpbmcgZXJyb3JcbiIKKyIodGhlIGRlZmF1bHQgb2YgTm9uZSBoYXMgdGhlIHNhbWUgZWZmZWN0KSwgb3IgcGFzcyBcJ2lnbm9yZVwnIHRvIGlnbm9yZVxuIgorImVycm9ycy4gKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZyBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLilcbiIKKyJTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gXCdoZWxwKGNvZGVjcy5Db2RlYylcJ1xuIgorImZvciBhIGxpc3Qgb2YgdGhlIHBlcm1pdHRlZCBlbmNvZGluZyBlcnJvciBzdHJpbmdzLlxuIgorIlxuIgorIm5ld2xpbmUgY29udHJvbHMgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seSBhcHBsaWVzIHRvIHRleHRcbiIKKyJtb2RlKS4gSXQgY2FuIGJlIE5vbmUsIFwnXCcsIFwnXFxuXCcsIFwnXFxyXCcsIGFuZCBcJ1xcclxcblwnLiAgSXQgd29ya3MgYXNcbiIKKyJmb2xsb3dzOlxuIgorIlxuIgorIiogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXNcbiIKKyIgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluIFwnXFxuXCcsIFwnXFxyXCcsIG9yIFwnXFxyXFxuXCcsIGFuZFxuIgorIiAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byBcJ1xcblwnIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKKyIgIGNhbGxlci4gSWYgaXQgaXMgXCdcJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZVxuIgorIiAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2ZcbiIKKyIgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuXG4iCisiICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuXG4iCisiXG4iCisiKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZVxuIgorIiAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmXG4iCisiICBuZXdsaW5lIGlzIFwnXCcgb3IgXCdcXG5cJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55XG4iCisiICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgXCdcXG5cJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWRcbiIKKyIgIHRvIHRoZSBnaXZlbiBzdHJpbmcuXG4iCisiXG4iCisiSWYgY2xvc2VmZCBpcyBGYWxzZSwgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUga2VwdCBvcGVuXG4iCisid2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuXG4iCisiYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuXG4iCisiXG4iCisiQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlXG4iCisidW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5XG4iCisiY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuXG4iCisiZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5XG4iCisic2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLlxuIgorIlxuIgorIm9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmRcbiIKKyJ0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nXG4iCisiYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoXCd3XCcsXG4iCisiXCdyXCcsIFwnd3RcJywgXCdydFwnLCBldGMuKSwgaXQgcmV0dXJucyBhIFRleHRJT1dyYXBwZXIuIFdoZW4gdXNlZCB0byBvcGVuXG4iCisiYSBmaWxlIGluIGEgYmluYXJ5IG1vZGUsIHRoZSByZXR1cm5lZCBjbGFzcyB2YXJpZXM6IGluIHJlYWQgYmluYXJ5XG4iCisibW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnlcbiIKKyJtb2RlcywgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkV3JpdGVyLCBhbmQgaW4gcmVhZC93cml0ZSBtb2RlLCBpdCByZXR1cm5zXG4iCisiYSBCdWZmZXJlZFJhbmRvbS5cbiIKKyJcbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhIHN0cmluZyBvciBieXRlYXJyYXkgYXMgYSBmaWxlIGZvciBib3RoXG4iCisicmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGVcbiIKKyJvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlXG4iCisib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CisKKyNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX29wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgY29uc3QgY2hhciAqbW9kZSwKKyAgICAgICAgICAgICAgaW50IGJ1ZmZlcmluZywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3bGluZSwgaW50IGNsb3NlZmQsIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX29wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgYnVmZmVyaW5nID0gLTE7CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmV3bGluZSA9IE5VTEw7CisgICAgaW50IGNsb3NlZmQgPSAxOworICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCisgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX29wZW5faW1wbChtb2R1bGUsIGZpbGUsIG1vZGUsIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgY2xvc2VmZCwgb3BlbmVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3Y2RjMDliZjY4YTgwNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzN2UyNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKQEAgLTAsMCArMSw0NTQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX19kb2NfXywKKyJyZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvLCBNRVRIX08sIF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50byhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzFfX2RvY19fLAorInJlYWRpbnRvMSgkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPMV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8xIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xLCBNRVRIX08sIF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9fZG9jX18sCisiZGV0YWNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGlzY29ubmVjdCB0aGlzIGJ1ZmZlciBmcm9tIGl0cyB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiBpdC5cbiIKKyJcbiIKKyJBZnRlciB0aGUgcmF3IHN0cmVhbSBoYXMgYmVlbiBkZXRhY2hlZCwgdGhlIGJ1ZmZlciBpcyBpbiBhbiB1bnVzYWJsZVxuIgorInN0YXRlLiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURJT0JBU0VfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2gsIE1FVEhfTk9BUkdTLCBfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcGVla19fZG9jX18sCisicGVlaygkc2VsZiwgc2l6ZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1BFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcGVla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9wZWVrX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3BlZWsoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBlZWsiLAorICAgICAgICAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkMV9fZG9jX18sCisicmVhZDEoJHNlbGYsIHNpemUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRDFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZDEsIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkMShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZGludG9fX2RvY19fLAorInJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRElOVE9fTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZGludG8sIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMV9fZG9jX18sCisicmVhZGludG8xKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50bzEiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkaW50bzEsIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGxpbmVfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHRhcmdldCwgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX19CdWZmZXJlZF9zZWVrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldG9iaiwgaW50IHdoZW5jZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3NlZWsoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0YXJnZXRvYmo7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChzZWxmLCB0YXJnZXRvYmosIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBwb3M9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF90cnVuY2F0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgbmV3IGJ1ZmZlcmVkIHJlYWRlciB1c2luZyB0aGUgZ2l2ZW4gcmVhZGFibGUgcmF3IElPIG9iamVjdC4iKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpyYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmF3OworICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRXcml0ZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXIgZm9yIGEgd3JpdGVhYmxlIHNlcXVlbnRpYWwgUmF3SU8gb2JqZWN0LlxuIgorIlxuIgorIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgQnVmZmVyZWRXcml0ZXIgZm9yIHRoZSBnaXZlbiB3cml0ZWFibGUgcmF3XG4iCisic3RyZWFtLiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0b1xuIgorIkRFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFdyaXRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRXcml0ZXJfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlLCBNRVRIX08sIF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CdWZmZXJlZFdyaXRlcl93cml0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19fX2RvY19fLAorIkJ1ZmZlcmVkUldQYWlyKHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXJlZCByZWFkZXIgYW5kIHdyaXRlciBvYmplY3QgdG9nZXRoZXIuXG4iCisiXG4iCisiQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0b1xuIgorImZvcm0gYSBzZXF1ZW50aWFsIElPIG9iamVjdCB0aGF0IGNhbiByZWFkIGFuZCB3cml0ZS4gVGhpcyBpcyB0eXBpY2FsbHlcbiIKKyJ1c2VkIHdpdGggYSBzb2NrZXQgb3IgdHdvLXdheSBwaXBlLlxuIgorIlxuIgorInJlYWRlciBhbmQgd3JpdGVyIGFyZSBSYXdJT0Jhc2Ugb2JqZWN0cyB0aGF0IGFyZSByZWFkYWJsZSBhbmRcbiIKKyJ3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0b1xuIgorIkRFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfX19pbXBsKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3cml0ZXIsIFB5X3NzaXplX3QgYnVmZmVyX3NpemUpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBQeU9iamVjdCAqcmVhZGVyOworICAgIFB5T2JqZWN0ICp3cml0ZXI7CisgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisKKyAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJlB5QnVmZmVyZWRSV1BhaXJfVHlwZSkgJiYKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcyBzdHJlYW1zLlxuIgorIlxuIgorIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLFxuIgorInJhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdFxuIgorImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJiYjVlMjM5YjRmZmU2ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiMWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaApAQCAtMCwwICsxLDQyMiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkYWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGFibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fcmVhZGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT193cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT193cml0YWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fd3JpdGFibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3NlZWthYmxlX19kb2NfXywKKyJzZWVrYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fU0VFS0FCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3NlZWthYmxlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fc2Vla2FibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWthYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19zZWVrYWJsZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX0ZMVVNIX01FVEhPRERFRiAgICBcCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19mbHVzaCwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX2ZsdXNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19mbHVzaF9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZmx1c2goYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fZmx1c2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2dldGJ1ZmZlcl9fZG9jX18sCisiZ2V0YnVmZmVyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IGEgcmVhZC13cml0ZSB2aWV3IG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19HRVRCVUZGRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19nZXRidWZmZXIsIE1FVEhfTk9BUkdTLCBfaW9fQnl0ZXNJT19nZXRidWZmZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZ2V0YnVmZmVyKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fZ2V0dmFsdWVfX2RvY19fLAorImdldHZhbHVlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fR0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2dldHZhbHVlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fZ2V0dmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldHZhbHVlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19nZXR2YWx1ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19nZXR2YWx1ZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9faXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbHdheXMgcmV0dXJucyBGYWxzZS5cbiIKKyJcbiIKKyJCeXRlc0lPIG9iamVjdHMgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYSBUVFktbGlrZSBkZXZpY2UuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2lzYXR0eShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3RlbGxfX2RvY19fLAorInRlbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fdGVsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdGVsbF9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdGVsbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuXG4iCisiXG4iCisiSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19CeXRlc0lPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWQoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fcmVhZDFfX2RvY19fLAorInJlYWQxKCRzZWxmLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRDFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWQxLCBNRVRIX08sIF9pb19CeXRlc0lPX3JlYWQxX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIk5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJSZXRhaW4gbmV3bGluZS4gIEEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgbGltaXRzIHRoZSBtYXhpbXVtXG4iCisibnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19SRUFETElORV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkbGluZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMaXN0IG9mIGJ5dGVzIG9iamVjdHMsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuXG4iCisiXG4iCisiQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIHNvIHJlYWQuXG4iCisiVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcbiIKKyJ0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBfaW9fQnl0ZXNJT19yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgdXAgdG8gbGVuKGJ1ZmZlcikgYnl0ZXMgaW50byBidWZmZXIuXG4iCisiXG4iCisiUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKSwgb3IgTm9uZSBpZiB0aGUgb2JqZWN0XG4iCisiaXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fQnl0ZXNJT19yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChieXRlc2lvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkaW50byhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuXG4iCisiXG4iCisiU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuXG4iCisiVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuICBSZXR1cm5zIHRoZSBuZXcgc2l6ZS4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3RydW5jYXRlX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT190cnVuY2F0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgorIlxuIgorIlNlZWsgdG8gYnl0ZSBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCisiICAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDtcbiIKKyIgICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbWF5IGJlIG5lZ2F0aXZlO1xuIgorIiAgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyB1c3VhbGx5IG5lZ2F0aXZlLlxuIgorIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19TRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fc2Vla19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWsoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyB0byBmaWxlLlxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3dyaXRlLCBNRVRIX08sIF9pb19CeXRlc0lPX3dyaXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0ZWxpbmVzX19kb2NfXywKKyJ3cml0ZWxpbmVzKCRzZWxmLCBsaW5lcywgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGxpbmVzIHRvIHRoZSBmaWxlLlxuIgorIlxuIgorIk5vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90IGFkZGVkLiAgbGluZXMgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3RcbiIKKyJwcm9kdWNpbmcgYnl0ZXMtbGlrZSBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvclxuIgorImVhY2ggZWxlbWVudC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19XUklURUxJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3dyaXRlbGluZXMsIE1FVEhfTywgX2lvX0J5dGVzSU9fd3JpdGVsaW5lc19fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fY2xvc2VfX2RvY19fLAorImNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGlzYWJsZSBhbGwgSS9PIG9wZXJhdGlvbnMuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2Nsb3NlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19jbG9zZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fX19pbml0X19fX2RvY19fLAorIkJ5dGVzSU8oaW5pdGlhbF9ieXRlcz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIkJ1ZmZlcmVkIEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnl0ZXMgYnVmZmVyLiIpOworCitzdGF0aWMgaW50CitfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICppbml0dmFsdWUpOworCitzdGF0aWMgaW50CitfaW9fQnl0ZXNJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKChieXRlc2lvICopc2VsZiwgaW5pdHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwMGNjYzE0OTU4N2ZhYzQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTEyMDVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKQEAgLTAsMCArMSwzNjcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBmaWxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZVxuIgorImNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2Nsb3NlX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fY2xvc2UoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX19faW5pdF9fX19kb2NfXywKKyJGaWxlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBmaWxlLlxuIgorIlxuIgorIlRoZSBtb2RlIGNhbiBiZSBcJ3JcJyAoZGVmYXVsdCksIFwnd1wnLCBcJ3hcJyBvciBcJ2FcJyBmb3IgcmVhZGluZyxcbiIKKyJ3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0XG4iCisiZG9lc25cJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeVxuIgorImV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzXG4iCisid3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvIFwnd1wnLkFkZCBhIFwnK1wnIHRvIHRoZSBtb2RlXG4iCisidG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieVxuIgorInBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZVxuIgorIm9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuXG4iCisiKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKlxuIgorInJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuIik7CisKK3N0YXRpYyBpbnQKK19pb19GaWxlSU9fX19pbml0X19faW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLCBjb25zdCBjaGFyICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKTsKKworc3RhdGljIGludAorX2lvX0ZpbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19fX2luaXRfX19pbXBsKChmaWxlaW8gKilzZWxmLCBuYW1lb2JqLCBtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19GSUxFTk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2ZpbGVub19pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2ZpbGVubyhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fUkVBREFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRhYmxlX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFibGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgd3JpdGUgbW9kZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT193cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3dyaXRhYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3NlZWthYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWthYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFESU5UT19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fRmlsZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRpbnRvX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRpbnRvKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkYWxsX19kb2NfXywKKyJyZWFkYWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBmaWxlLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKKyJcbiIKKyJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSxcbiIKKyJvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGFsbCwgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19yZWFkYWxsX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFsbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLlxuIgorIkluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fRmlsZUlPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZF9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3JlYWRfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi5cbiIKKyJcbiIKKyJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi5cbiIKKyJUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSxcbiIKKyJyZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fd3JpdGUsIE1FVEhfTywgX2lvX0ZpbGVJT193cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0ZV9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fd3JpdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZCByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uXG4iCisiXG4iCisiQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gIE9wdGlvbmFsIGFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0b1xuIgorIlNFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlc1xuIgorImFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSxcbiIKKyJhbmQgU0VFS19FTkQgb3IgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2hcbiIKKyJtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuXG4iCisiXG4iCisiTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19GaWxlSU9fc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fc2VlayhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkN1cnJlbnQgZmlsZSBwb3NpdGlvbi5cbiIKKyJcbiIKKyJDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdGVsbF9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3RlbGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3RlbGxfaW1wbChzZWxmKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GVFJVTkNBVEUpCisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzIGFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLlxuIgorIlxuIgorIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgorIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIF9pb19GaWxlSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3NvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT190cnVuY2F0ZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3NvYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcG9zb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRlRSVU5DQVRFKSAqLworCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgVFRZIGRldmljZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9faXNhdHR5X2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9faXNhdHR5KGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworI2lmbmRlZiBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWEyMGIxMGM4MWFkZDY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlYTA3OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCkBAIC0wLDAgKzEsMjc5IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV90ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV90ZWxsX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfdGVsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRmx1c2ggd3JpdGUgYnVmZmVycywgaWYgYXBwbGljYWJsZS5cbiIKKyJcbiIKKyJUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVhZC1vbmx5IGFuZCBub24tYmxvY2tpbmcgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9GTFVTSF9NRVRIT0RERUYgICAgXAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2VfZmx1c2gsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9mbHVzaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9mbHVzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2VfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2Nsb3NlX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy5cbiIKKyJcbiIKKyJJZiBGYWxzZSwgc2VlaygpLCB0ZWxsKCkgYW5kIHRydW5jYXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi5cbiIKKyJUaGlzIG1ldGhvZCBtYXkgbmVlZCB0byBkbyBhIHRlc3Qgc2VlaygpLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3NlZWthYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuXG4iCisiXG4iCisiSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuXG4iCisiXG4iCisiSWYgRmFsc2UsIHdyaXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV93cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV93cml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBpZiBvbmUgZXhpc3RzLlxuIgorIlxuIgorIkFuIElPRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX0ZJTEVOT19NRVRIT0RERUYgICAgXAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmlsZW5vX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmlsZW5vKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9maWxlbm9faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhbiBcJ2ludGVyYWN0aXZlXCcgc3RyZWFtLlxuIgorIlxuIgorIlJldHVybiBGYWxzZSBpZiBpdCBjYW5cJ3QgYmUgZGV0ZXJtaW5lZC4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2lzYXR0eV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2lzYXR0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfaXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS5cbiIKKyJcbiIKKyJJZiBzaXplIGlzIHNwZWNpZmllZCwgYXQgbW9zdCBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZC5cbiIKKyJcbiIKKyJUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiXCdcXG5cJyBmb3IgYmluYXJ5IGZpbGVzOyBmb3IgdGV4dFxuIgorImZpbGVzLCB0aGUgbmV3bGluZXMgYXJndW1lbnQgdG8gb3BlbiBjYW4gYmUgdXNlZCB0byBzZWxlY3QgdGhlIGxpbmVcbiIKKyJ0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19fSU9CYXNlX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChzZWxmLCBsaW1pdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBoaW50PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uXG4iCisiXG4iCisiaGludCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubyBtb3JlXG4iCisibGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGxcbiIKKyJsaW5lcyBzbyBmYXIgZXhjZWVkcyBoaW50LiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBfaW9fX0lPQmFzZV9yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGhpbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfcmVhZGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGhpbnQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lcyIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmaGludCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZXNfaW1wbChzZWxmLCBoaW50KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfd3JpdGVsaW5lc19fZG9jX18sCisid3JpdGVsaW5lcygkc2VsZiwgbGluZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1dSSVRFTElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlbGluZXMiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfd3JpdGVsaW5lcywgTUVUSF9PLCBfaW9fX0lPQmFzZV93cml0ZWxpbmVzX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fX1Jhd0lPQmFzZV9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX1JBV0lPQkFTRV9SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19fUmF3SU9CYXNlX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX19SYXdJT0Jhc2VfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAorICAgICAgICAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1Jhd0lPQmFzZV9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuIik7CisKKyNkZWZpbmUgX0lPX19SQVdJT0JBU0VfUkVBREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFsbCIsIChQeUNGdW5jdGlvbilfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWRhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTAzNDE1MmI2ODg0ZTY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTMyYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCkBAIC0wLDAgKzEsMjg2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX2dldHZhbHVlX19kb2NfXywKKyJnZXR2YWx1ZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIG9iamVjdC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fR0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19nZXR2YWx1ZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19nZXR2YWx1ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2dldHZhbHVlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2dldHZhbHVlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT190ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVGVsbCB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190ZWxsX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3RlbGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgY2hhcmFjdGVycywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GXG4iCisiaXMgcmVhY2hlZC4gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3JlYWRfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLlxuIgorIlxuIgorIlJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIEVPRiBpcyBoaXQgaW1tZWRpYXRlbHkuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGxpbmVfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGxpbmUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT190cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHBvcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgc2l6ZSB0byBwb3MuXG4iCisiXG4iCisiVGhlIHBvcyBhcmd1bWVudCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhc1xuIgorInJldHVybmVkIGJ5IHRlbGwoKS4gIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLlxuIgorIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190cnVuY2F0ZV9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190cnVuY2F0ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgorIlxuIgorIlNlZWsgdG8gY2hhcmFjdGVyIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZTpcbiIKKyIgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7XG4iCisiICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbXVzdCBiZSAwO1xuIgorIiAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIG11c3QgYmUgMC5cbiIKKyJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvczsKKyAgICBpbnQgd2hlbmNlID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAorICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgc3RyaW5nIHRvIGZpbGUuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvXG4iCisidGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3dyaXRlLCBNRVRIX08sIF9pb19TdHJpbmdJT193cml0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBJTyBvYmplY3QuXG4iCisiXG4iCisiQXR0ZW1wdGluZyBhbnkgZnVydGhlciBvcGVyYXRpb24gYWZ0ZXIgdGhlIG9iamVjdCBpcyBjbG9zZWRcbiIKKyJ3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fY2xvc2VfaW1wbChzdHJpbmdpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fY2xvc2Uoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX19faW5pdF9fX19kb2NfXywKKyJTdHJpbmdJTyhpbml0aWFsX3ZhbHVlPVwnXCcsIG5ld2xpbmU9XCdcXG5cJylcbiIKKyItLVxuIgorIlxuIgorIlRleHQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBidWZmZXIuXG4iCisiXG4iCisiVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmVcbiIKKyJhcmd1bWVudCBpcyBsaWtlIHRoZSBvbmUgb2YgVGV4dElPV3JhcHBlclwncyBjb25zdHJ1Y3Rvci4iKTsKKworc3RhdGljIGludAorX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaik7CisKK3N0YXRpYyBpbnQKK19pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLAorICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fX19pbml0X19faW1wbCgoc3RyaW5naW8gKilzZWxmLCB2YWx1ZSwgbmV3bGluZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fcmVhZGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkYWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT193cml0YWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT193cml0YWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fc2Vla2FibGVfX2RvY19fLAorInNlZWthYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fU0VFS0FCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3NlZWthYmxlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDYxY2YzYTIwY2QxNGVkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3ZThjNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0wLDAgKzEsNDU2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19fX2RvY19fLAorIkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnM9XCdzdHJpY3RcJylcbiIKKyItLVxuIgorIlxuIgorIkNvZGVjIHVzZWQgd2hlbiByZWFkaW5nIGEgZmlsZSBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS5cbiIKKyJcbiIKKyJJdCB3cmFwcyBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxcclxcbiBhbmQgXFxyIGludG8gXFxuLlxuIgorIkl0IGFsc28gcmVjb3JkcyB0aGUgdHlwZXMgb2YgbmV3bGluZXMgZW5jb3VudGVyZWQuICBXaGVuIHVzZWQgd2l0aFxuIgorInRyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluXG4iCisib25lIHBpZWNlLiBXaGVuIHVzZWQgd2l0aCBkZWNvZGVyPU5vbmUsIGl0IGV4cGVjdHMgdW5pY29kZSBzdHJpbmdzIGFzXG4iCisiZGVjb2RlIGlucHV0IGFuZCB0cmFuc2xhdGVzIG5ld2xpbmVzIHdpdGhvdXQgZmlyc3QgaW52b2tpbmcgYW4gZXh0ZXJuYWxcbiIKKyJkZWNvZGVyLiIpOworCitzdGF0aWMgaW50CitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyLCBpbnQgdHJhbnNsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXJyb3JzKTsKKworc3RhdGljIGludAorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkZWNvZGVyOworICAgIGludCB0cmFuc2xhdGU7CisgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBpbnB1dCwgZmluYWw9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlucHV0OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9fZG9jX18sCisiZ2V0c3RhdGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0dFVFNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3NldHN0YXRlX19kb2NfXywKKyJzZXRzdGF0ZSgkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX1NFVFNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZSwgTUVUSF9PLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXQsIE1FVEhfTk9BUkdTLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19fZG9jX18sCisiVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsXG4iCisiICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuXG4iCisiXG4iCisiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCisiZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuXG4iCisiXG4iCisiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWVcbiIKKyJoZWxwKGNvZGVjcy5Db2RlYykgb3IgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlcikgYW5kXG4iCisiZGVmYXVsdHMgdG8gXCJzdHJpY3RcIi5cbiIKKyJcbiIKKyJuZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCBcJ1wnLFxuIgorIlwnXFxuXCcsIFwnXFxyXCcsIGFuZCBcJ1xcclxcblwnLiAgSXQgd29ya3MgYXMgZm9sbG93czpcbiIKKyJcbiIKKyIqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzXG4iCisiICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiBcJ1xcblwnLCBcJ1xcclwnLCBvciBcJ1xcclxcblwnLCBhbmRcbiIKKyIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gXCdcXG5cJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlXG4iCisiICBjYWxsZXIuIElmIGl0IGlzIFwnXCcsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKKyIgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mXG4iCisiICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgorIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgorIlxuIgorIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSBcJ1xcblwnIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKKyIgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZlxuIgorIiAgbmV3bGluZSBpcyBcJ1wnIG9yIFwnXFxuXCcsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueVxuIgorIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCisiICB0byB0aGUgZ2l2ZW4gc3RyaW5nLlxuIgorIlxuIgorIklmIGxpbmVfYnVmZmVyaW5nIGlzIFRydWUsIGEgY2FsbCB0byBmbHVzaCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvXG4iCisid3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4iKTsKKworc3RhdGljIGludAorX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBsaW5lX2J1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRlX3Rocm91Z2gpOworCitzdGF0aWMgaW50CitfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImxpbmVfYnVmZmVyaW5nIiwgIndyaXRlX3Rocm91Z2giLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUgPSBOVUxMOworICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CisgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwoKHRleHRpbyAqKXNlbGYsIGJ1ZmZlciwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgbGluZV9idWZmZXJpbmcsIHdyaXRlX3Rocm91Z2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfX2RvY19fLAorImRldGFjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIHRleHQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl93cml0ZSwgTUVUSF9PLCBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3dyaXRlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGV4dDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwoc2VsZiwgdGV4dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9pbXBsKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwKKyAgICAgICAgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfc2Vla19fZG9jX18sCisic2Vlaygkc2VsZiwgY29va2llLCB3aGVuY2U9MCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpjb29raWVPYmosIGludCB3aGVuY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfc2Vlayh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb29raWVPYmo7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJmNvb2tpZU9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9zZWVrX2ltcGwoc2VsZiwgY29va2llT2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl90ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl90ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl90ZWxsX2ltcGwodGV4dGlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RlbGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl90ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHBvcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9faW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3NlZWthYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5KHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9fZG9jX18sCisiZmx1c2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0ZMVVNIX01FVEhPRERFRiAgICBcCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9mbHVzaCwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9jbG9zZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDc0NTA4YTcuLjEyZTM3YmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC00Myw2ICs0MywxOSBAQAogI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5GaWxlSU8gImZpbGVpbyAqIiAiJlB5RmlsZUlPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYzc3NzA4YjQxZmRhNzBjXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGZkOwpAQCAtNTMsNiArNjYsNyBAQAogICAgIHNpZ25lZCBpbnQgc2Vla2FibGUgOiAyOyAvKiAtMSBtZWFucyB1bmtub3duICovCiAgICAgdW5zaWduZWQgaW50IGNsb3NlZmQgOiAxOwogICAgIGNoYXIgZmluYWxpemluZzsKKyAgICB1bnNpZ25lZCBpbnQgYmxrc2l6ZTsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiB9IGZpbGVpbzsKQEAgLTEwNiw5ICsxMjAsMTEgQEAKICAgICAgICAgLyogZmQgaXMgYWNjZXNzaWJsZSBhbmQgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNsb3NlZCBpdCAqLwogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICAgICAgZXJyID0gY2xvc2UoZmQpOwogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzYXZlX2Vycm5vID0gZXJybm87CkBAIC0xMjMsOCArMTM5LDE4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uY2xvc2UKKworQ2xvc2UgdGhlIGZpbGUuCisKK0EgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fY2xvc2UoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19jbG9zZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzM3YTMxOWVmM2JhZDBiIGlucHV0PWYzNTIzMTc2MGQ1NGE1MjJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKQEAgLTE2OCw2ICsxOTQsNyBAQAogICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPmFwcGVuZGluZyA9IDA7CiAgICAgICAgIHNlbGYtPnNlZWthYmxlID0gLTE7CisgICAgICAgIHNlbGYtPmJsa3NpemUgPSAwOwogICAgICAgICBzZWxmLT5jbG9zZWZkID0gMTsKICAgICAgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIH0KQEAgLTE3NSw1NyArMjAyLDQwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwogfQogCi0vKiBPbiBVbml4LCBvcGVuIHdpbGwgc3VjY2VlZCBmb3IgZGlyZWN0b3JpZXMuCi0gICBJbiBQeXRob24sIHRoZXJlIHNob3VsZCBiZSBubyBmaWxlIG9iamVjdHMgcmVmZXJyaW5nIHRvCi0gICBkaXJlY3Rvcmllcywgc28gd2UgbmVlZCBhIGNoZWNrLiAgKi8KLQotc3RhdGljIGludAotZGlyY2hlY2soZmlsZWlvKiBzZWxmLCBQeU9iamVjdCAqbmFtZW9iaikKLXsKLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVQpICYmIGRlZmluZWQoU19JU0RJUikgJiYgZGVmaW5lZChFSVNESVIpCi0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIGlmIChzZWxmLT5mZCA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJmJ1ZikgPT0gMCAmJiBTX0lTRElSKGJ1Zi5zdF9tb2RlKSkgewotICAgICAgICBlcnJubyA9IEVJU0RJUjsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLWNoZWNrX2ZkKGludCBmZCkKLXsKLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVQpCi0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAoZnN0YXQoZmQsICZidWYpIDwgMCAmJiBlcnJubyA9PSBFQkFERikpIHsKLSAgICAgICAgUHlPYmplY3QgKmV4YzsKLSAgICAgICAgY2hhciAqbXNnID0gc3RyZXJyb3IoRUJBREYpOwotICAgICAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfT1NFcnJvciwgIihpcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREYsIG1zZyk7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19PU0Vycm9yLCBleGMpOwotICAgICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQogI2lmZGVmIE9fQ0xPRVhFQwogZXh0ZXJuIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uX19pbml0X18KKyAgICBmaWxlIGFzIG5hbWVvYmo6IG9iamVjdAorICAgIG1vZGU6IHN0ciA9ICJyIgorICAgIGNsb3NlZmQ6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICBvcGVuZXI6IG9iamVjdCA9IE5vbmUKKworT3BlbiBhIGZpbGUuCisKK1RoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCit3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0Citkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWQKK3doZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQorZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXMKK3dyaXRpbmcgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byAndycuQWRkIGEgJysnIHRvIHRoZSBtb2RlCit0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4gQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5CitwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKK29iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuCisqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqCityZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1maWxlaW9faW5pdChQeU9iamVjdCAqb3NlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19GaWxlSU9fX19pbml0X19faW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLCBjb25zdCBjaGFyICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNDEzZjY4ZTY0ODRiYmQgaW5wdXQ9MTkzMTY0ZTI5M2Q2YzA5N10qLwogewotICAgIGZpbGVpbyAqc2VsZiA9IChmaWxlaW8gKikgb3NlbGY7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnN0cmluZ29iaiA9IE5VTEwsICpvcGVuZXIgPSBQeV9Ob25lOwotICAgIGNoYXIgKm1vZGUgPSAiciI7Ci0gICAgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc3RyaW5nb2JqID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9VTklDT0RFICp3aWRlbmFtZSA9IE5VTEw7CiAjZW5kaWYKQEAgLTIzMywxNSArMjQzLDE2IEBACiAgICAgaW50IHJ3YSA9IDAsIHBsdXMgPSAwOwogICAgIGludCBmbGFncyA9IDA7CiAgICAgaW50IGZkID0gLTE7Ci0gICAgaW50IGNsb3NlZmQgPSAxOwogICAgIGludCBmZF9pc19vd24gPSAwOwogI2lmZGVmIE9fQ0xPRVhFQwogICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MgPSAmX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbGlmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrcyA9IE5VTEw7CiAjZW5kaWYKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IGZkZnN0YXQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBhc3NlcnQoUHlGaWxlSU9fQ2hlY2sob3NlbGYpKTsKKyAgICBhc3NlcnQoUHlGaWxlSU9fQ2hlY2soc2VsZikpOwogICAgIGlmIChzZWxmLT5mZCA+PSAwKSB7CiAgICAgICAgIGlmIChzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgICAgICAvKiBIYXZlIHRvIGNsb3NlIHRoZSBleGlzdGluZyBmaWxlIGZpcnN0LiAqLwpAQCAtMjUyLDExICsyNjMsNiBAQAogICAgICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaU86ZmlsZWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZW5lcikpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChQeUZsb2F0X0NoZWNrKG5hbWVvYmopKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0Iik7CkBAIC0yODAsNyArMjg2LDcgQEAKICAgICAgICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICh3Y3NsZW4od2lkZW5hbWUpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0gZWxzZQpAQCAtMzY2LDggKzM3Miw2IEBACiAjZW5kaWYKIAogICAgIGlmIChmZCA+PSAwKSB7Ci0gICAgICAgIGlmIChjaGVja19mZChmZCkpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBzZWxmLT5mZCA9IGZkOwogICAgICAgICBzZWxmLT5jbG9zZWZkID0gY2xvc2VmZDsKICAgICB9CkBAIC0zODEsMTUgKzM4NSwyMCBAQAogCiAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgaWYgKG9wZW5lciA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgfSB3aGlsZSAoc2VsZi0+ZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBpZiAoYXN5bmNfZXJyKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZmRvYmo7CkBAIC00MjcsOCArNDM2LDI0IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOwogI2VuZGlmCiAgICAgfQotICAgIGlmIChkaXJjaGVjayhzZWxmLCBuYW1lb2JqKSA8IDApCisKKyAgICBzZWxmLT5ibGtzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKyAgICBpZiAoX1B5X2ZzdGF0KHNlbGYtPmZkLCAmZmRmc3RhdCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOworI2lmIGRlZmluZWQoU19JU0RJUikgJiYgZGVmaW5lZChFSVNESVIpCisgICAgLyogT24gVW5peCwgb3BlbiB3aWxsIHN1Y2NlZWQgZm9yIGRpcmVjdG9yaWVzLgorICAgICAgIEluIFB5dGhvbiwgdGhlcmUgc2hvdWxkIGJlIG5vIGZpbGUgb2JqZWN0cyByZWZlcnJpbmcgdG8KKyAgICAgICBkaXJlY3Rvcmllcywgc28gd2UgbmVlZCBhIGNoZWNrLiAgKi8KKyAgICBpZiAoU19JU0RJUihmZGZzdGF0LnN0X21vZGUpKSB7CisgICAgICAgIGVycm5vID0gRUlTRElSOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgbmFtZW9iaik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorI2VuZGlmIC8qIGRlZmluZWQoU19JU0RJUikgKi8KKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKKyAgICBpZiAoZmRmc3RhdC5zdF9ibGtzaXplID4gMSkKKyAgICAgICAgc2VsZi0+Ymxrc2l6ZSA9IGZkZnN0YXQuc3RfYmxrc2l6ZTsKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUgKi8KIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQogICAgIC8qIGRvbid0IHRyYW5zbGF0ZSBuZXdsaW5lcyAoXHJcbiA8PT4gXG4pICovCkBAIC01MDYsMzIgKzUzMSw2MCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLmZpbGVubworCitSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19maWxlbm8oZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19maWxlbm9faW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTk2MjZjZTUzOThlY2U5MCBpbnB1dD0wYjliMmRlNjczMzVhZGEzXSovCiB7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzZWxmLT5mZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGFibGUKKworVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSByZWFkIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZGFibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19yZWFkYWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NDA3NDRhNjE1MGZlOWJhIGlucHV0PWEzZmRmZWQ2ZWVhNzIxYzVdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnJlYWRhYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy53cml0YWJsZQorCitUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHdyaXRlIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fd3JpdGFibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NmNlZmM1NDQ2ZTg5OTc3IGlucHV0PWMyMDRhODA4Y2EyZTE3NDhdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPndyaXRhYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5zZWVrYWJsZQorCitUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19zZWVrYWJsZShmaWxlaW8gKnNlbGYpCitfaW9fRmlsZUlPX3NlZWthYmxlX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3OTA5Y2EwYTQyZTkyODcgaW5wdXQ9YzhlNTU1NGQyZmQ2M2M3Zl0qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC01NDgsMTEgKzYwMSwxOSBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnNlZWthYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkaW50byhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjAxYTVhMjJjODQxNWNiNCBpbnB1dD00NzIxZDdiNjhiMTU0ZWFmXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgUHlfc3NpemVfdCBuLCBsZW47CisgICAgUHlfc3NpemVfdCBuOwogICAgIGludCBlcnI7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNTYwLDQ4ICs2MjEsMjEgQEAKICAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyoiLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpIHsKLSAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZXJybm8gPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcGJ1Zi5idWYsIChpbnQpbGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgbGVuKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7CisgICAgbiA9IF9QeV9yZWFkKHNlbGYtPmZkLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeUJ1ZmZlcl9SZWxlYXNlKCkgY2FuIGluZGlyZWN0bHkgbW9kaWZ5IGl0ICovCiAgICAgZXJyID0gZXJybm87Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorCisgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOwogfQogCi0jaWZuZGVmIEhBVkVfRlNUQVQKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKLXsKLSAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3JlYWRhbGwsICJPIiwgc2VsZik7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBzaXplX3QKIG5ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplKQogewpAQCAtNjIxLDEwICs2NTUsMjAgQEAKICAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGFsbAorCitSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGZpbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCitJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwKK29yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fcmVhZGFsbF9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYWEwMjkyYjIxM2I0MDIyIGlucHV0PWRiZGMxMzdmNTU2MDI4MzRdKi8KIHsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKICAgICBQeV9vZmZfdCBwb3MsIGVuZDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgYnl0ZXNfcmVhZCA9IDA7CkBAIC02MzYsMTMgKzY4MCwxNiBAQAogICAgIGlmICghX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgcG9zID0gX2xzZWVraTY0KHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOwogI2Vsc2UKICAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKICNlbmRpZgotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKQotICAgICAgICBlbmQgPSBzdC5zdF9zaXplOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2Uoc2VsZi0+ZmQsICZzdGF0dXMpID09IDApCisgICAgICAgIGVuZCA9IHN0YXR1cy5zdF9zaXplOwogICAgIGVsc2UKICAgICAgICAgZW5kID0gKFB5X29mZl90KS0xOwogCkBAIC02NzYsMzUgKzcyMywyMiBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbiA9IGJ1ZnNpemUgLSBieXRlc19yZWFkOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKG4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgKGludCluKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgbik7Ci0jZW5kaWYKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBuID0gX1B5X3JlYWQoc2VsZi0+ZmQsCisgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUgLSBieXRlc19yZWFkKTsKKwogICAgICAgICBpZiAobiA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChuIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChuID09IC0xKSB7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZXNfcmVhZCA+IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBieXRlc19yZWFkICs9IG47CkBAIC03MTgsMTQgKzc1MiwyNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0ZTVEFUICovCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnJlYWQKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQuCitJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT19yZWFkX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDI1MjhkMzlkZDBjYTY0MSBpbnB1dD01YzZjYWE1NDkwYzEzYTliXSovCiB7CiAgICAgY2hhciAqcHRyOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKICAgICBQeU9iamVjdCAqYnl0ZXM7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNzMzLDQxICs3NzcsMjkgQEAKICAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIHJldHVybiBmaWxlaW9fcmVhZGFsbChzZWxmKTsKLSAgICB9CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gX2lvX0ZpbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CiAKICNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCiAgICAgaWYgKHNpemUgPiBJTlRfTUFYKQogICAgICAgICBzaXplID0gSU5UX01BWDsKICNlbmRpZgorCiAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwdHIsIChpbnQpc2l6ZSk7Ci0jZWxzZQotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcHRyLCBzaXplKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7Ci0KLSAgICBpZiAobiA8IDApIHsKKyAgICBuID0gX1B5X3JlYWQoc2VsZi0+ZmQsIHB0ciwgc2l6ZSk7CisgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgLyogY29weSBlcnJubyBiZWNhdXNlIFB5X0RFQ1JFRigpIGNhbiBpbmRpcmVjdGx5IG1vZGlmeSBpdCAqLwogICAgICAgICBpbnQgZXJyID0gZXJybm87CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorICAgICAgICBpZiAoZXJyID09IEVBR0FJTikgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzgxLDExICs4MTMsMjMgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIGJ5dGVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uCitUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSwKK3JldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fd3JpdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fd3JpdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDA1OWRiM2QzNjNhMmY3IGlucHV0PWZmYmQ4ODM0ZjQ0N2FjMzFdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeV9zc2l6ZV90IG4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IG47CiAgICAgaW50IGVycjsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCkBAIC03OTMsMzkgKzgzNywxNSBAQAogICAgIGlmICghc2VsZi0+d3JpdGFibGUpCiAgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KiIsICZwYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gMzI3NjcgJiYgaXNhdHR5KHNlbGYtPmZkKSkgewotICAgICAgICAgICAgLyogSXNzdWUgIzExMzk1OiB0aGUgV2luZG93cyBjb25zb2xlIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QKLSAgICAgICAgICAgICAgIGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQgbW9kZSBpcwotICAgICAgICAgICAgICAgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCi0gICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuICovCi0gICAgICAgICAgICBsZW4gPSAzMjc2NzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgKGludClsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgbGVuKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7CisgICAgbiA9IF9QeV93cml0ZShzZWxmLT5mZCwgYi0+YnVmLCBiLT5sZW4pOworICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeUJ1ZmZlcl9SZWxlYXNlKCkgY2FuIGluZGlyZWN0bHkgbW9kaWZ5IGl0ICovCiAgICAgZXJyID0gZXJybm87CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLQogICAgIGlmIChuIDwgMCkgewotICAgICAgICBpZiAoZXJyID09IEVBR0FJTikKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTg3MywxMSArODkzLDEzIEBACiAKICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCB3aGVuY2UpOwogI2Vsc2UKICAgICAgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKICNlbmRpZgorICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0gZWxzZQogICAgICAgICByZXMgPSAtMTsKQEAgLTg5MSwyMyArOTEzLDQ0IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19zZWVrKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnBvc29iajsKLSAgICBpbnQgd2hlbmNlID0gMDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uc2VlaworICAgIHBvczogb2JqZWN0CisgICAgd2hlbmNlOiBpbnQgPSAwCisgICAgLwogCitNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZCByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uCisKK0FyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8KK1NFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcworYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLAorYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoCittYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuCisKK05vdGUgdGhhdCBub3QgYWxsIGZpbGUgb2JqZWN0cyBhcmUgc2Vla2FibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWtfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzk3NmFjZGYwNTRlNjY1NSBpbnB1dD0wNDM5MTk0YjA3NzRkNDU0XSovCit7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpIiwgJnBvc29iaiwgJndoZW5jZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHBvcnRhYmxlX2xzZWVrKHNlbGYtPmZkLCBwb3NvYmosIHdoZW5jZSk7CisgICAgcmV0dXJuIHBvcnRhYmxlX2xzZWVrKHNlbGYtPmZkLCBwb3MsIHdoZW5jZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8udGVsbAorCitDdXJyZW50IGZpbGUgcG9zaXRpb24uCisKK0NhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fdGVsbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT190ZWxsX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmZTIxNDcwNTg4MDlkMGIgaW5wdXQ9ODA3ZTI0ZWFkNGNlYzJmOV0qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC05MTYsMTMgKzk1OSwyMiBAQAogfQogCiAjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8udHJ1bmNhdGUKKyAgICBzaXplIGFzIHBvc29iajogb2JqZWN0ID0gTlVMTAorICAgIC8KKworVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzIGFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLgorCitTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS4KK1RoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb190cnVuY2F0ZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT190cnVuY2F0ZV9pbXBsKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKnBvc29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDljYTdhOTE2YzE3NmZhIGlucHV0PTkwMjZhZjQ0Njg2YjczMThdKi8KIHsKLSAgICBQeU9iamVjdCAqcG9zb2JqID0gTlVMTDsgLyogdGhlIG5ldyBzaXplIHdhbnRlZCBieSB0aGUgdXNlciAqLwotI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgUHlfb2ZmX3QgcG9zOwotI2VuZGlmCiAgICAgaW50IHJldDsKICAgICBpbnQgZmQ7CiAKQEAgLTkzMiw5ICs5ODQsNiBAQAogICAgIGlmICghc2VsZi0+d3JpdGFibGUpCiAgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZwb3NvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChwb3NvYmogPT0gUHlfTm9uZSB8fCBwb3NvYmogPT0gTlVMTCkgewogICAgICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uICovCiAgICAgICAgIHBvc29iaiA9IHBvcnRhYmxlX2xzZWVrKGZkLCBOVUxMLCAxKTsKQEAgLTk0NSw1MiArOTk0LDYgQEAKICAgICAgICAgUHlfSU5DUkVGKHBvc29iaik7CiAgICAgfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIE1TIF9jaHNpemUgZG9lc24ndCB3b3JrIGlmIG5ld3NpemUgZG9lc24ndCBmaXQgaW4gMzIgYml0cywKLSAgICAgICBzbyBkb24ndCBldmVuIHRyeSB1c2luZyBpdC4gKi8KLSAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpvbGRwb3NvYmosICp0ZW1wcG9zb2JqOwotICAgICAgICBIQU5ETEUgaEZpbGU7Ci0KLSAgICAgICAgLyogd2Ugc2F2ZSB0aGUgZmlsZSBwb2ludGVyIHBvc2l0aW9uICovCi0gICAgICAgIG9sZHBvc29iaiA9IHBvcnRhYmxlX2xzZWVrKGZkLCBOVUxMLCAxKTsKLSAgICAgICAgaWYgKG9sZHBvc29iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogd2UgdGhlbiBtb3ZlIHRvIHRoZSB0cnVuY2F0aW9uIHBvc2l0aW9uICovCi0gICAgICAgIHRlbXBwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgcG9zb2JqLCAwKTsKLSAgICAgICAgaWYgKHRlbXBwb3NvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9sZHBvc29iaik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wcG9zb2JqKTsKLQotICAgICAgICAvKiBUcnVuY2F0ZS4gIE5vdGUgdGhhdCB0aGlzIG1heSBncm93IHRoZSBmaWxlISAqLwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgaEZpbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKLSAgICAgICAgcmV0ID0gaEZpbGUgPT0gKEhBTkRMRSktMTsgLyogdGVzdGluZyBmb3IgSU5WQUxJRF9IQU5ETEUgdmFsdWUgKi8KLSAgICAgICAgaWYgKHJldCA9PSAwKSB7Ci0gICAgICAgICAgICByZXQgPSBTZXRFbmRPZkZpbGUoaEZpbGUpID09IDA7Ci0gICAgICAgICAgICBpZiAocmV0KQotICAgICAgICAgICAgICAgIGVycm5vID0gRUFDQ0VTOwotICAgICAgICB9Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgLyogd2UgcmVzdG9yZSB0aGUgZmlsZSBwb2ludGVyIHBvc2l0aW9uIGluIGFueSBjYXNlICovCi0gICAgICAgIHRlbXBwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgb2xkcG9zb2JqLCAwKTsKLSAgICAgICAgUHlfREVDUkVGKG9sZHBvc29iaik7Ci0gICAgICAgIGlmICh0ZW1wcG9zb2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwb3NvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHRlbXBwb3NvYmopOwotICAgIH0KLSNlbHNlCi0KICNpZiBkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCiAgICAgcG9zID0gUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKTsKICNlbHNlCkBAIC0xMDAyLDEyICsxMDA1LDE2IEBACiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHJldCA9IF9jaHNpemVfcyhmZCwgcG9zKTsKKyNlbHNlCiAgICAgcmV0ID0gZnRydW5jYXRlKGZkLCBwb3MpOworI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0jZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KLQogICAgIGlmIChyZXQgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtMTA1NywyNiArMTA2NCw0MCBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBmZD0lZCBtb2RlPSclcyc+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmQsIG1vZGVfc3RyaW5nKHNlbGYpKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAiPF9pby5GaWxlSU8gZmQ9JWQgbW9kZT0nJXMnIGNsb3NlZmQ9JXM+IiwKKyAgICAgICAgICAgIHNlbGYtPmZkLCBtb2RlX3N0cmluZyhzZWxmKSwgc2VsZi0+Y2xvc2VmZCA/ICJUcnVlIiA6ICJGYWxzZSIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uRmlsZUlPIG5hbWU9JVIgbW9kZT0nJXMnPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVvYmosIG1vZGVfc3RyaW5nKHNlbGYpKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAiPF9pby5GaWxlSU8gbmFtZT0lUiBtb2RlPSclcycgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgbmFtZW9iaiwgbW9kZV9zdHJpbmcoc2VsZiksIHNlbGYtPmNsb3NlZmQgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKICAgICAgICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLmlzYXR0eQorCitUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9faXNhdHR5KGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9faXNhdHR5X2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzMmMzOTkyNGU5YTgwNzAgaW5wdXQ9Y2Q5NGNhMWY1ZTk1ZTg0M10qLwogewogICAgIGxvbmcgcmVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpCisgICAgICAgIHJlcyA9IGlzYXR0eShzZWxmLT5mZCk7CisgICAgZWxzZQorICAgICAgICByZXMgPSAwOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyk7CiB9CkBAIC0xMDg5LDExMCArMTExMCwyMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0KLVB5RG9jX1NUUlZBUihmaWxlaW9fZG9jLAotImZpbGUobmFtZTogc3RyWywgbW9kZTogc3RyXVssIG9wZW5lcjogTm9uZV0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCi0iXG4iCi0iT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InIChkZWZhdWx0KSwgJ3cnLCAneCcgb3IgJ2EnIGZvciByZWFkaW5nLFxuIgotIndyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXRcbiIKLSJkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWRcbiIKLSJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgRmlsZUV4aXN0c0Vycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGFscmVhZHlcbiIKLSJleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcgaW1wbGllc1xuIgotIndyaXRpbmcgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byAndycuQWRkIGEgJysnIHRvIHRoZSBtb2RlXG4iCi0idG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieVxuIgotInBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZVxuIgotIm9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuXG4iCi0iKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKlxuIgotInJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuIik7Ci0KLVB5RG9jX1NUUlZBUihyZWFkX2RvYywKLSJyZWFkKHNpemU6IGludCkgLT4gYnl0ZXMuICByZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCi0iXG4iCi0iT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWRcbiIKLSJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOwotCi1QeURvY19TVFJWQVIocmVhZGFsbF9kb2MsCi0icmVhZGFsbCgpIC0+IGJ5dGVzLiAgcmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBmaWxlLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKLSJcbiIKLSJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSxcbiIKLSJvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7Ci0KLVB5RG9jX1NUUlZBUih3cml0ZV9kb2MsCi0id3JpdGUoYjogYnl0ZXMpIC0+IGludC4gIFdyaXRlIGJ5dGVzIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciB3cml0dGVuLlxuIgotIlxuIgotIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLlxuIgotIlRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4gIEluIG5vbi1ibG9ja2luZyBtb2RlLFxuIgotInJldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suIgotKTsKLQotUHlEb2NfU1RSVkFSKGZpbGVub19kb2MsCi0iZmlsZW5vKCkgLT4gaW50LiAgUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIik7Ci0KLVB5RG9jX1NUUlZBUihzZWVrX2RvYywKLSJzZWVrKG9mZnNldDogaW50Wywgd2hlbmNlOiBpbnRdKSAtPiBpbnQuICBNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZFxuIgotInJldHVybiB0aGUgZmlsZSBwb3NpdGlvbi5cbiIKLSJcbiIKLSJBcmd1bWVudCBvZmZzZXQgaXMgYSBieXRlIGNvdW50LiAgT3B0aW9uYWwgYXJndW1lbnQgd2hlbmNlIGRlZmF1bHRzIHRvXG4iCi0iU0VFS19TRVQgb3IgMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0IHNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzXG4iCi0iYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLFxuIgotImFuZCBTRUVLX0VORCBvciAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5IG5lZ2F0aXZlLCBhbHRob3VnaFxuIgotIm1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLiIpOwotCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLVB5RG9jX1NUUlZBUih0cnVuY2F0ZV9kb2MsCi0idHJ1bmNhdGUoW3NpemU6IGludF0pIC0+IGludC4gIFRydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlc1xuIgotImFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLlxuIgotIlxuIgotIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgotIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4iKTsKLSNlbmRpZgotCi1QeURvY19TVFJWQVIodGVsbF9kb2MsCi0idGVsbCgpIC0+IGludC4gIEN1cnJlbnQgZmlsZSBwb3NpdGlvbi5cbiIKLSJcbiIKLSJDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLiIKLSk7Ci0KLVB5RG9jX1NUUlZBUihyZWFkaW50b19kb2MsCi0icmVhZGludG8oKSAtPiBTYW1lIGFzIFJhd0lPQmFzZS5yZWFkaW50bygpLiIpOwotCi1QeURvY19TVFJWQVIoY2xvc2VfZG9jLAotImNsb3NlKCkgLT4gTm9uZS4gIENsb3NlIHRoZSBmaWxlLlxuIgotIlxuIgotIkEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZVxuIgotImNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiIpOwotCi1QeURvY19TVFJWQVIoaXNhdHR5X2RvYywKLSJpc2F0dHkoKSAtPiBib29sLiAgVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjb25uZWN0ZWQgdG8gYSBUVFkgZGV2aWNlLiIpOwotCi1QeURvY19TVFJWQVIoc2Vla2FibGVfZG9jLAotInNlZWthYmxlKCkgLT4gYm9vbC4gIFRydWUgaWYgZmlsZSBzdXBwb3J0cyByYW5kb20tYWNjZXNzLiIpOwotCi1QeURvY19TVFJWQVIocmVhZGFibGVfZG9jLAotInJlYWRhYmxlKCkgLT4gYm9vbC4gIFRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLiIpOwotCi1QeURvY19TVFJWQVIod3JpdGFibGVfZG9jLAotIndyaXRhYmxlKCkgLT4gYm9vbC4gIFRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgd3JpdGUgbW9kZS4iKTsKKyNpbmNsdWRlICJjbGluaWMvZmlsZWlvLmMuaCIKIAogc3RhdGljIFB5TWV0aG9kRGVmIGZpbGVpb19tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkIiwgICAgIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZCwgICAgICAgICBNRVRIX1ZBUkFSR1MsIHJlYWRfZG9jfSwKLSAgICB7InJlYWRhbGwiLCAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19yZWFkYWxsLCAgTUVUSF9OT0FSR1MsICByZWFkYWxsX2RvY30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZGludG8sIE1FVEhfVkFSQVJHUywgcmVhZGludG9fZG9jfSwKLSAgICB7IndyaXRlIiwgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb193cml0ZSwgICAgICAgIE1FVEhfVkFSQVJHUywgd3JpdGVfZG9jfSwKLSAgICB7InNlZWsiLCAgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19zZWVrLCAgICAgICAgIE1FVEhfVkFSQVJHUywgc2Vla19kb2N9LAotICAgIHsidGVsbCIsICAgICAoUHlDRnVuY3Rpb24pZmlsZWlvX3RlbGwsICAgICAgICAgTUVUSF9WQVJBUkdTLCB0ZWxsX2RvY30sCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCB0cnVuY2F0ZV9kb2N9LAotI2VuZGlmCi0gICAgeyJjbG9zZSIsICAgIChQeUNGdW5jdGlvbilmaWxlaW9fY2xvc2UsICAgICAgICBNRVRIX05PQVJHUywgIGNsb3NlX2RvY30sCi0gICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fc2Vla2FibGUsIE1FVEhfTk9BUkdTLCAgICAgIHNlZWthYmxlX2RvY30sCi0gICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCAgICAgIHJlYWRhYmxlX2RvY30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCAgICAgIHdyaXRhYmxlX2RvY30sCi0gICAgeyJmaWxlbm8iLCAgIChQeUNGdW5jdGlvbilmaWxlaW9fZmlsZW5vLCAgIE1FVEhfTk9BUkdTLCAgICAgIGZpbGVub19kb2N9LAotICAgIHsiaXNhdHR5IiwgICAoUHlDRnVuY3Rpb24pZmlsZWlvX2lzYXR0eSwgICBNRVRIX05PQVJHUywgICAgICBpc2F0dHlfZG9jfSwKKyAgICBfSU9fRklMRUlPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19XUklURV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19URUxMX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19DTE9TRV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19XUklUQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX0lTQVRUWV9NRVRIT0RERUYKICAgICB7Il9kZWFsbG9jX3dhcm4iLCAoUHlDRnVuY3Rpb24pZmlsZWlvX2RlYWxsb2Nfd2FybiwgTUVUSF9PLCBOVUxMfSwKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilmaWxlaW9fZ2V0c3RhdGUsIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCkBAIC0xMjI3LDYgKzExNjAsNyBAQAogfTsKIAogc3RhdGljIFB5TWVtYmVyRGVmIGZpbGVpb19tZW1iZXJzW10gPSB7CisgICAgeyJfYmxrc2l6ZSIsIFRfVUlOVCwgb2Zmc2V0b2YoZmlsZWlvLCBibGtzaXplKSwgMH0sCiAgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoZmlsZWlvLCBmaW5hbGl6aW5nKSwgMH0sCiAgICAge05VTEx9CiB9OwpAQCAtMTI1Myw3ICsxMTg3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgZmlsZWlvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fRmlsZUlPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZmlsZWlvX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlmaWxlaW9fY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMTI2OCw3ICsxMjAyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgb2Zmc2V0b2YoZmlsZWlvLCBkaWN0KSwgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgZmlsZWlvX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgX2lvX0ZpbGVJT19fX2luaXRfXywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIGZpbGVpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9pb2Jhc2UuYyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCmluZGV4IGVmMDZiNDMuLjAyNTAwN2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2lvYmFzZS5jCisrKyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCkBAIC0xMyw2ICsxMywyMCBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uX0lPQmFzZSAiUHlPYmplY3QgKiIgIiZQeUlPQmFzZV9UeXBlIgorY2xhc3MgX2lvLl9SYXdJT0Jhc2UgIlB5T2JqZWN0ICoiICImUHlSYXdJT0Jhc2VfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQyOWE0ZDA3NmMyYjIxMWNdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgaW9fc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9zc2l6ZV90JworICAgIGNvbnZlcnRlciA9ICdfUHlJT19Db252ZXJ0U3NpemVfdCcKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQwYTgxMWQzY2JmZDFiMzNdKi8KKwogLyoKICAqIElPQmFzZSBjbGFzcywgYW4gYWJzdHJhY3QgY2xhc3MKICAqLwpAQCAtOTYsMTEgKzExMCwxNSBAQAogICAgIHJldHVybiBpb2Jhc2VfdW5zdXBwb3J0ZWQoInNlZWsiKTsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV90ZWxsX2RvYywKLSAgICAgICAgICAgICAiUmV0dXJuIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UudGVsbAorCitSZXR1cm4gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV90ZWxsX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODlhMWMwODA3OTM1YWJlMiBpbnB1dD0wNGU2MTVmZWMxMjg4MDFmXSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIoc2Vlayk7CiAKQEAgLTEyMSwxMyArMTM5LDE3IEBACiAKIC8qIEZsdXNoIGFuZCBjbG9zZSBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfZmx1c2hfZG9jLAotICAgICJGbHVzaCB3cml0ZSBidWZmZXJzLCBpZiBhcHBsaWNhYmxlLlxuIgotICAgICJcbiIKLSAgICAiVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlYWQtb25seSBhbmQgbm9uLWJsb2NraW5nIHN0cmVhbXMuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLmZsdXNoCisKK0ZsdXNoIHdyaXRlIGJ1ZmZlcnMsIGlmIGFwcGxpY2FibGUuCisKK1RoaXMgaXMgbm90IGltcGxlbWVudGVkIGZvciByZWFkLW9ubHkgYW5kIG5vbi1ibG9ja2luZyBzdHJlYW1zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2ZsdXNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2ZsdXNoX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2NlZjRiNGQ1NDY1NmEzYiBpbnB1dD03NzNiZTEyMWFiZTI3MGFhXSovCiB7CiAgICAgLyogWFhYIFNob3VsZCB0aGlzIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4/Pz8gKi8KICAgICBpZiAoSVNfQ0xPU0VEKHNlbGYpKSB7CkBAIC0xMzcsMTEgKzE1OSw2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfY2xvc2VfZG9jLAotICAgICJGbHVzaCBhbmQgY2xvc2UgdGhlIElPIG9iamVjdC5cbiIKLSAgICAiXG4iCi0gICAgIlRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuXG4iKTsKLQogc3RhdGljIGludAogaW9iYXNlX2Nsb3NlZChQeU9iamVjdCAqc2VsZikKIHsKQEAgLTE4MCw4ICsxOTcsMTcgQEAKICAgIGBfX0lPQmFzZV9jbG9zZWRgIGFuZCBjYWxsIGZsdXNoKCkgYnkgaXRzZWxmLCBidXQgaXQgaXMgcmVkdW5kYW50IHdpdGgKICAgIHdoYXRldmVyIGJlaGF2aW91ciBhIG5vbi10cml2aWFsIGRlcml2ZWQgY2xhc3Mgd2lsbCBpbXBsZW1lbnQuICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLmNsb3NlCisKK0ZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LgorCitUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2Nsb3NlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2Nsb3NlX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjNjNmE2ZjU3ZDc4M2Q2ZCBpbnB1dD1mNDQ5NGQ1YzMxZGJjNmI3XSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIApAQCAtMzA0LDE0ICszMzAsMTggQEAKIAogLyogSW5xdWlyeSBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2Vfc2Vla2FibGVfZG9jLAotICAgICJSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy5cbiIKLSAgICAiXG4iCi0gICAgIklmIEZhbHNlLCBzZWVrKCksIHRlbGwoKSBhbmQgdHJ1bmNhdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLlxuIgotICAgICJUaGlzIG1ldGhvZCBtYXkgbmVlZCB0byBkbyBhIHRlc3Qgc2VlaygpLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2Uuc2Vla2FibGUKKworUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHN1cHBvcnRzIHJhbmRvbSBhY2Nlc3MuCisKK0lmIEZhbHNlLCBzZWVrKCksIHRlbGwoKSBhbmQgdHJ1bmNhdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLgorVGhpcyBtZXRob2QgbWF5IG5lZWQgdG8gZG8gYSB0ZXN0IHNlZWsoKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9zZWVrYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRjMjRjNjdmNWYzMmE0M2QgaW5wdXQ9MjI2NzZlZWJiODFkY2YxZV0qLwogewogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KQEAgLTMzMywxMyArMzYzLDE3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9yZWFkYWJsZV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciByZWFkaW5nLlxuIgotICAgICJcbiIKLSAgICAiSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UucmVhZGFibGUKKworUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuCisKK0lmIEZhbHNlLCByZWFkKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9yZWFkYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0ODA4OTI1MDY4NjM4OGIgaW5wdXQ9MTJmYzNkOGY2YmU0NjQzNF0qLwogewogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KQEAgLTM2MiwxMyArMzk2LDE3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV93cml0YWJsZV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciB3cml0aW5nLlxuIgotICAgICJcbiIKLSAgICAiSWYgRmFsc2UsIHdyaXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLndyaXRhYmxlCisKK1JldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciB3cml0aW5nLgorCitJZiBGYWxzZSwgd3JpdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3dyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3dyaXRhYmxlX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDA2MDAxZDA5ODViZTE0ZiBpbnB1dD1jMTdhMGJiNmE4ZGZjNTkwXSovCiB7CiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQpAQCAtNDEzLDI0ICs0NTEsMzIgQEAKIAogLyogWFhYIFNob3VsZCB0aGVzZSBiZSBwcmVzZW50IGV2ZW4gaWYgdW5pbXBsZW1lbnRlZD8gKi8KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9maWxlbm9fZG9jLAotICAgICJSZXR1cm5zIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGlmIG9uZSBleGlzdHMuXG4iCi0gICAgIlxuIgotICAgICJBbiBJT0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgSU8gb2JqZWN0IGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvci5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UuZmlsZW5vCisKK1JldHVybnMgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgaWYgb25lIGV4aXN0cy4KKworQW4gSU9FcnJvciBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfZmlsZW5vKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2ZpbGVub19pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjYzA5NzNmMGY1ZjNiNzMgaW5wdXQ9MzI3NzNjNWRmNGI3ZWVkZV0qLwogewogICAgIHJldHVybiBpb2Jhc2VfdW5zdXBwb3J0ZWQoImZpbGVubyIpOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX2lzYXR0eV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIHRoaXMgaXMgYW4gJ2ludGVyYWN0aXZlJyBzdHJlYW0uXG4iCi0gICAgIlxuIgotICAgICJSZXR1cm4gRmFsc2UgaWYgaXQgY2FuJ3QgYmUgZGV0ZXJtaW5lZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UuaXNhdHR5CisKK1JldHVybiB3aGV0aGVyIHRoaXMgaXMgYW4gJ2ludGVyYWN0aXZlJyBzdHJlYW0uCisKK1JldHVybiBGYWxzZSBpZiBpdCBjYW4ndCBiZSBkZXRlcm1pbmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2lzYXR0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9pc2F0dHlfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MGNhYjc3Y2VkZTQxY2RkIGlucHV0PTllZjc2NTMwZDM2ODQ1OGJdKi8KIHsKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZChzZWxmLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQzOSwzMCArNDg1LDMxIEBACiAKIC8qIFJlYWRsaW5lKHMpIGFuZCB3cml0ZWxpbmVzICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfcmVhZGxpbmVfZG9jLAotICAgICJSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS5cbiIKLSAgICAiXG4iCi0gICAgIklmIGxpbWl0IGlzIHNwZWNpZmllZCwgYXQgbW9zdCBsaW1pdCBieXRlcyB3aWxsIGJlIHJlYWQuXG4iCi0gICAgIlxuIgotICAgICJUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiJ1xcbicgZm9yIGJpbmFyeSBmaWxlczsgZm9yIHRleHRcbiIKLSAgICAiZmlsZXMsIHRoZSBuZXdsaW5lcyBhcmd1bWVudCB0byBvcGVuIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgbGluZVxuIgotICAgICJ0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnJlYWRsaW5lCisgICAgc2l6ZSBhcyBsaW1pdDogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS4KKworSWYgc2l6ZSBpcyBzcGVjaWZpZWQsIGF0IG1vc3Qgc2l6ZSBieXRlcyB3aWxsIGJlIHJlYWQuCisKK1RoZSBsaW5lIHRlcm1pbmF0b3IgaXMgYWx3YXlzIGInXG4nIGZvciBiaW5hcnkgZmlsZXM7IGZvciB0ZXh0CitmaWxlcywgdGhlIG5ld2xpbmVzIGFyZ3VtZW50IHRvIG9wZW4gY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBsaW5lCit0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfcmVhZGxpbmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDc5Zjc5YjU4MTg3ODQwIGlucHV0PWRmNGNjODg4NGY1NTNjYWJdKi8KIHsKICAgICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGEgKHNsb3dpc2gpIHJlYWRsaW5lKCkuICovCiAKLSAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CiAgICAgaW50IGhhc19wZWVrID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSAtMTsKICAgICBfUHlfSURFTlRJRklFUihwZWVrKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKHNlbGYsICZQeUlkX3BlZWspKQogICAgICAgICBoYXNfcGVlayA9IDE7CiAKQEAgLTU4NSwyMyArNjMyLDI1IEBACiAgICAgcmV0dXJuIGxpbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfcmVhZGxpbmVzX2RvYywKLSAgICAiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uXG4iCi0gICAgIlxuIgotICAgICJoaW50IGNhbiBiZSBzcGVjaWZpZWQgdG8gY29udHJvbCB0aGUgbnVtYmVyIG9mIGxpbmVzIHJlYWQ6IG5vIG1vcmVcbiIKLSAgICAibGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGxcbiIKLSAgICAibGluZXMgc28gZmFyIGV4Y2VlZHMgaGludC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnJlYWRsaW5lcworICAgIGhpbnQ6IGlvX3NzaXplX3QgPSAtMQorICAgIC8KKworUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uCisKK2hpbnQgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8gbW9yZQorbGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGwKK2xpbmVzIHNvIGZhciBleGNlZWRzIGhpbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfcmVhZGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGhpbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmY1MDQyMTY3N2ZhM2RlYSBpbnB1dD0xOTYxYzRhOTVlOTZlNjYxXSovCiB7Ci0gICAgUHlfc3NpemVfdCBoaW50ID0gLTEsIGxlbmd0aCA9IDA7CisgICAgUHlfc3NpemVfdCBsZW5ndGggPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZXMiLCAmX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDYsMTQgKzY5NSwxNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2Vfd3JpdGVsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmxpbmVzLCAqaXRlciwgKnJlczsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLndyaXRlbGluZXMKKyAgICBsaW5lczogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOndyaXRlbGluZXMiLCAmbGluZXMpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV93cml0ZWxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGluZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTc2ZWIwYTliNjBhNjYyOCBpbnB1dD00MzJlNzI5YTg0NTBiM2NiXSovCit7CisgICAgUHlPYmplY3QgKml0ZXIsICpyZXM7CiAKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZChzZWxmLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY4OCwzMSArNzQwLDMzIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpbmNsdWRlICJjbGluaWMvaW9iYXNlLmMuaCIKKwogc3RhdGljIFB5TWV0aG9kRGVmIGlvYmFzZV9tZXRob2RzW10gPSB7CiAgICAgeyJzZWVrIiwgaW9iYXNlX3NlZWssIE1FVEhfVkFSQVJHUywgaW9iYXNlX3NlZWtfZG9jfSwKLSAgICB7InRlbGwiLCBpb2Jhc2VfdGVsbCwgTUVUSF9OT0FSR1MsIGlvYmFzZV90ZWxsX2RvY30sCisgICAgX0lPX19JT0JBU0VfVEVMTF9NRVRIT0RERUYKICAgICB7InRydW5jYXRlIiwgaW9iYXNlX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIGlvYmFzZV90cnVuY2F0ZV9kb2N9LAotICAgIHsiZmx1c2giLCBpb2Jhc2VfZmx1c2gsIE1FVEhfTk9BUkdTLCBpb2Jhc2VfZmx1c2hfZG9jfSwKLSAgICB7ImNsb3NlIiwgaW9iYXNlX2Nsb3NlLCBNRVRIX05PQVJHUywgaW9iYXNlX2Nsb3NlX2RvY30sCisgICAgX0lPX19JT0JBU0VfRkxVU0hfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfQ0xPU0VfTUVUSE9EREVGCiAKLSAgICB7InNlZWthYmxlIiwgaW9iYXNlX3NlZWthYmxlLCBNRVRIX05PQVJHUywgaW9iYXNlX3NlZWthYmxlX2RvY30sCi0gICAgeyJyZWFkYWJsZSIsIGlvYmFzZV9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIGlvYmFzZV9yZWFkYWJsZV9kb2N9LAotICAgIHsid3JpdGFibGUiLCBpb2Jhc2Vfd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBpb2Jhc2Vfd3JpdGFibGVfZG9jfSwKKyAgICBfSU9fX0lPQkFTRV9TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9XUklUQUJMRV9NRVRIT0RERUYKIAogICAgIHsiX2NoZWNrQ2xvc2VkIiwgICBfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkLCBNRVRIX05PQVJHU30sCiAgICAgeyJfY2hlY2tTZWVrYWJsZSIsIF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX2NoZWNrUmVhZGFibGUiLCBfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9jaGVja1dyaXRhYmxlIiwgX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlLCBNRVRIX05PQVJHU30sCiAKLSAgICB7ImZpbGVubyIsIGlvYmFzZV9maWxlbm8sIE1FVEhfTk9BUkdTLCBpb2Jhc2VfZmlsZW5vX2RvY30sCi0gICAgeyJpc2F0dHkiLCBpb2Jhc2VfaXNhdHR5LCBNRVRIX05PQVJHUywgaW9iYXNlX2lzYXR0eV9kb2N9LAorICAgIF9JT19fSU9CQVNFX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9JU0FUVFlfTUVUSE9EREVGCiAKICAgICB7Il9fZW50ZXJfXyIsIGlvYmFzZV9lbnRlciwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19leGl0X18iLCBpb2Jhc2VfZXhpdCwgTUVUSF9WQVJBUkdTfSwKIAotICAgIHsicmVhZGxpbmUiLCBpb2Jhc2VfcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgaW9iYXNlX3JlYWRsaW5lX2RvY30sCi0gICAgeyJyZWFkbGluZXMiLCBpb2Jhc2VfcmVhZGxpbmVzLCBNRVRIX1ZBUkFSR1MsIGlvYmFzZV9yZWFkbGluZXNfZG9jfSwKLSAgICB7IndyaXRlbGluZXMiLCBpb2Jhc2Vfd3JpdGVsaW5lcywgTUVUSF9WQVJBUkdTfSwKKyAgICBfSU9fX0lPQkFTRV9SRUFETElORV9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9SRUFETElORVNfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfV1JJVEVMSU5FU19NRVRIT0RERUYKIAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTc5NSwxNSArODQ5LDE3IEBACiAgKiBlaXRoZXIuKQogKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLXJhd2lvYmFzZV9yZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKLSAgICBQeU9iamVjdCAqYiwgKnJlczsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fUmF3SU9CYXNlLnJlYWQKKyAgICBzaXplIGFzIG46IFB5X3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cmVhZCIsICZuKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmNkZWI3MzFlM2M5ZjEzYyBpbnB1dD1iNmQwZGNmNjQxN2QxMzc0XSovCit7CisgICAgUHlPYmplY3QgKmIsICpyZXM7CiAKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGFsbCk7CkBAIC04MzYsMTEgKzg5MiwxNSBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihyYXdpb2Jhc2VfcmVhZGFsbF9kb2MsCi0gICAgICAgICAgICAgIlJlYWQgdW50aWwgRU9GLCB1c2luZyBtdWx0aXBsZSByZWFkKCkgY2FsbC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fUmF3SU9CYXNlLnJlYWRhbGwKKworUmVhZCB1bnRpbCBFT0YsIHVzaW5nIG11bHRpcGxlIHJlYWQoKSBjYWxsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3aW9iYXNlX3JlYWRhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5ODdiOWNlOTI5NDI1YTAgaW5wdXQ9Njg4ODc0MTQxMjEzNjIyYV0qLwogewogICAgIGludCByOwogICAgIFB5T2JqZWN0ICpjaHVua3MgPSBQeUxpc3RfTmV3KDApOwpAQCAtODkyLDkgKzk1MiwyNSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCityYXdpb2Jhc2VfcmVhZGludG8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYXdpb2Jhc2Vfd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiByYXdpb2Jhc2VfbWV0aG9kc1tdID0gewotICAgIHsicmVhZCIsIHJhd2lvYmFzZV9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZGFsbCIsIHJhd2lvYmFzZV9yZWFkYWxsLCBNRVRIX05PQVJHUywgcmF3aW9iYXNlX3JlYWRhbGxfZG9jfSwKKyAgICBfSU9fX1JBV0lPQkFTRV9SRUFEX01FVEhPRERFRgorICAgIF9JT19fUkFXSU9CQVNFX1JFQURBTExfTUVUSE9EREVGCisgICAgeyJyZWFkaW50byIsIHJhd2lvYmFzZV9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKKyAgICB7IndyaXRlIiwgcmF3aW9iYXNlX3dyaXRlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggOWQ3Mzg4NC4uODMxNWFiOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC0xMSw2ICsxMSwxMiBAQAogI2RlZmluZSBTVEFURV9SRUFMSVpFRCAxCiAjZGVmaW5lIFNUQVRFX0FDQ1VNVUxBVElORyAyCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5TdHJpbmdJTyAic3RyaW5naW8gKiIgIiZQeVN0cmluZ0lPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jMTdiYzBmNDIxNjVjZDdkXSovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlfVUNTNCAqYnVmOwpAQCAtMzksNiArNDUsOCBAQAogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gc3RyaW5naW87CiAKK3N0YXRpYyBpbnQgX2lvX1N0cmluZ0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CisKICNkZWZpbmUgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikgXAogICAgIGlmIChzZWxmLT5vayA8PSAwKSB7IFwKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIFwKQEAgLTU4LDEyICs2Niw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOyBcCiAgICAgfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fZG9jLAotICAgICJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgotICAgICJcbiIKLSAgICAiVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmVcbiIKLSAgICAiYXJndW1lbnQgaXMgbGlrZSB0aGUgb25lIG9mIFRleHRJT1dyYXBwZXIncyBjb25zdHJ1Y3Rvci4iKTsKLQogCiAvKiBJbnRlcm5hbCByb3V0aW5lIGZvciBjaGFuZ2luZyB0aGUgc2l6ZSwgaW4gdGVybXMgb2YgY2hhcmFjdGVycywgb2YgdGhlCiAgICBidWZmZXIgb2YgU3RyaW5nSU8gb2JqZWN0cy4gIFRoZSBjYWxsZXIgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSAnc2l6ZScKQEAgLTI2NCwxMSArMjY2LDE1IEBACiAgICAgcmV0dXJuIC0xOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fZ2V0dmFsdWVfZG9jLAotICAgICJSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8uZ2V0dmFsdWUKKworUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fZ2V0dmFsdWUoc3RyaW5naW8gKnNlbGYpCitfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yN2I2YTdiZmVhZWJjZTAxIGlucHV0PWQyM2NiODFkNjc5MWNmODhdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC0yNzgsMzMgKzI4NCw0MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3RlbGxfZG9jLAotICAgICJUZWxsIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8udGVsbAorCitUZWxsIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb190ZWxsKHN0cmluZ2lvICpzZWxmKQorX2lvX1N0cmluZ0lPX3RlbGxfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZTg3YWM2N2IxMTZjNzdiIGlucHV0PWVjODY2ZWJhZmYwMmY0MDVdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZF9kb2MsCi0gICAgIlJlYWQgYXQgbW9zdCBuIGNoYXJhY3RlcnMsIHJldHVybmVkIGFzIGEgc3RyaW5nLlxuIgotICAgICJcbiIKLSAgICAiSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GXG4iCi0gICAgImlzIHJlYWNoZWQuIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgYXQgRU9GLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ucmVhZAorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBjaGFyYWN0ZXJzLCByZXR1cm5lZCBhcyBhIHN0cmluZy4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GCitpcyByZWFjaGVkLiBSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3JlYWRfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjc2ODY0NzczNzQ2ZjY4IGlucHV0PTlhMzE5MDE1ZjZmMzk2NWNdKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIG47CiAgICAgUHlfVUNTNCAqb3V0cHV0OwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CkBAIC0zNzMsMjAgKzM4NiwyMyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzdGFydCwgbGVuKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3JlYWRsaW5lX2RvYywKLSAgICAiUmVhZCB1bnRpbCBuZXdsaW5lIG9yIEVPRi5cbiIKLSAgICAiXG4iCi0gICAgIlJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIEVPRiBpcyBoaXQgaW1tZWRpYXRlbHkuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5yZWFkbGluZQorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLgorCitSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBFT0YgaXMgaGl0IGltbWVkaWF0ZWx5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fcmVhZGxpbmUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3JlYWRsaW5lX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTlmZGNhYzAzYTNkZWU4MSBpbnB1dD1lMGUwZWQ0MDQyMDQwMTc2XSovCiB7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogCkBAIC00NDEsMjIgKzQ1NywyNSBAQAogICAgIHJldHVybiBsaW5lOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fdHJ1bmNhdGVfZG9jLAotICAgICJUcnVuY2F0ZSBzaXplIHRvIHBvcy5cbiIKLSAgICAiXG4iCi0gICAgIlRoZSBwb3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXNcbiIKLSAgICAicmV0dXJuZWQgYnkgdGVsbCgpLiAgVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuXG4iCi0gICAgIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnRydW5jYXRlCisgICAgcG9zIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworVHJ1bmNhdGUgc2l6ZSB0byBwb3MuCisKK1RoZSBwb3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMKK3JldHVybmVkIGJ5IHRlbGwoKS4gIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLgorUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fdHJ1bmNhdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjA3MjQzOWMyYjAxZDMwNiBpbnB1dD03NDg2MTlhNDk0YmE1M2FkXSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBpZiAoUHlOdW1iZXJfQ2hlY2soYXJnKSkgewpAQCAtNDkwLDQ5ICs1MDksNTEgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fc2Vla19kb2MsCi0gICAgIkNoYW5nZSBzdHJlYW0gcG9zaXRpb24uXG4iCi0gICAgIlxuIgotICAgICJTZWVrIHRvIGNoYXJhY3RlciBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCi0gICAgIiAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDtcbiIKLSAgICAiICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbXVzdCBiZSAwO1xuIgotICAgICIgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyBtdXN0IGJlIDAuXG4iCi0gICAgIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnNlZWsKKyAgICBwb3M6IFB5X3NzaXplX3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCisKK0NoYW5nZSBzdHJlYW0gcG9zaXRpb24uCisKK1NlZWsgdG8gY2hhcmFjdGVyIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZToKKyAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDsKKyAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG11c3QgYmUgMDsKKyAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIG11c3QgYmUgMC4KK1JldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3NlZWsoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3NlZWtfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlfc3NpemVfdCBwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTllMGFjOWE4YWU3MWMyNSBpbnB1dD1lMzg1NWIyNGU3Y2FlMDZhXSovCiB7Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgaW50IG1vZGUgPSAwOwotCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsICZwb3MsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKG1vZGUgIT0gMCAmJiBtb2RlICE9IDEgJiYgbW9kZSAhPSAyKSB7CisgICAgaWYgKHdoZW5jZSAhPSAwICYmIHdoZW5jZSAhPSAxICYmIHdoZW5jZSAhPSAyKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgd2hlbmNlICglaSwgc2hvdWxkIGJlIDAsIDEgb3IgMikiLCBtb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpIiwgd2hlbmNlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgaWYgKHBvcyA8IDAgJiYgbW9kZSA9PSAwKSB7CisgICAgZWxzZSBpZiAocG9zIDwgMCAmJiB3aGVuY2UgPT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzZWVrIHBvc2l0aW9uICV6ZCIsIHBvcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIGlmIChtb2RlICE9IDAgJiYgcG9zICE9IDApIHsKKyAgICBlbHNlIGlmICh3aGVuY2UgIT0gMCAmJiBwb3MgIT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBkbyBub256ZXJvIGN1ci1yZWxhdGl2ZSBzZWVrcyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBtb2RlIDA6IG9mZnNldCByZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KLSAgICAgICBtb2RlIDE6IG5vIGNoYW5nZSB0byBjdXJyZW50IHBvc2l0aW9uLgotICAgICAgIG1vZGUgMjogY2hhbmdlIHBvc2l0aW9uIHRvIGVuZCBvZiBmaWxlLiAqLwotICAgIGlmIChtb2RlID09IDEpIHsKKyAgICAvKiB3aGVuY2UgPSAwOiBvZmZzZXQgcmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICAgd2hlbmNlID0gMTogbm8gY2hhbmdlIHRvIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICAgd2hlbmNlID0gMjogY2hhbmdlIHBvc2l0aW9uIHRvIGVuZCBvZiBmaWxlLiAqLworICAgIGlmICh3aGVuY2UgPT0gMSkgewogICAgICAgICBwb3MgPSBzZWxmLT5wb3M7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgPT0gMikgeworICAgIGVsc2UgaWYgKHdoZW5jZSA9PSAyKSB7CiAgICAgICAgIHBvcyA9IHNlbGYtPnN0cmluZ19zaXplOwogICAgIH0KIApAQCAtNTQxLDE0ICs1NjIsMjAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb193cml0ZV9kb2MsCi0gICAgIldyaXRlIHN0cmluZyB0byBmaWxlLlxuIgotICAgICJcbiIKLSAgICAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvXG4iCi0gICAgInRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLndyaXRlCisgICAgcyBhcyBvYmo6IG9iamVjdAorICAgIC8KKworV3JpdGUgc3RyaW5nIHRvIGZpbGUuCisKK1JldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4sIHdoaWNoIGlzIGFsd2F5cyBlcXVhbCB0bwordGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fd3JpdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpvYmopCitfaW9fU3RyaW5nSU9fd3JpdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGRlYWJhOTFhMTViOTRkYSBpbnB1dD1jZjk2ZjNiMTY1ODZlNjY5XSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCkBAIC01NjksMTQgKzU5NiwyMCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19jbG9zZV9kb2MsCi0gICAgIkNsb3NlIHRoZSBJTyBvYmplY3QuIEF0dGVtcHRpbmcgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIGFmdGVyIHRoZVxuIgotICAgICJvYmplY3QgaXMgY2xvc2VkIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLlxuIgotICAgICJcbiIKLSAgICAiVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLmNsb3NlCisKK0Nsb3NlIHRoZSBJTyBvYmplY3QuCisKK0F0dGVtcHRpbmcgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIGFmdGVyIHRoZSBvYmplY3QgaXMgY2xvc2VkCit3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci4KKworVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX2Nsb3NlKHN0cmluZ2lvICpzZWxmKQorX2lvX1N0cmluZ0lPX2Nsb3NlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQzOTkzNTVjYmU1MThmMSBpbnB1dD1jYmMxMGI0NWYzNWQ2ZDQ2XSovCiB7CiAgICAgc2VsZi0+Y2xvc2VkID0gMTsKICAgICAvKiBGcmVlIHVwIHNvbWUgbWVtb3J5ICovCkBAIC02NDQsMTkgKzY3NywyNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8uX19pbml0X18KKyAgICBpbml0aWFsX3ZhbHVlIGFzIHZhbHVlOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAnJworICAgIG5ld2xpbmUgYXMgbmV3bGluZV9vYmo6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9ICdcbicKKworVGV4dCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ1ZmZlci4KKworVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmUKK2FyZ3VtZW50IGlzIGxpa2UgdGhlIG9uZSBvZiBUZXh0SU9XcmFwcGVyJ3MgY29uc3RydWN0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLXN0cmluZ2lvX2luaXQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3bGluZV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTQyMWVhMDIzYjIyZWY0ZSBpbnB1dD1jZWUyZDkxODFiMjU3N2EzXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImluaXRpYWxfdmFsdWUiLCAibmV3bGluZSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5ld2xpbmVfb2JqID0gTlVMTDsKICAgICBjaGFyICpuZXdsaW5lID0gIlxuIjsKICAgICBQeV9zc2l6ZV90IHZhbHVlX2xlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T086X19pbml0X18iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICAvKiBQYXJzZSB0aGUgbmV3bGluZSBhcmd1bWVudC4gVGhpcyB1c2VkIHRvIGJlIGRvbmUgd2l0aCB0aGUgJ3onCiAgICAgICAgc3BlY2lmaWVyLCBob3dldmVyIHRoaXMgYWxsb3dlZCBhbnkgb2JqZWN0IHdpdGggdGhlIGJ1ZmZlciBpbnRlcmZhY2UgdG8KICAgICAgICBiZSBjb252ZXJ0ZWQuIFRodXMgd2UgaGF2ZSB0byBwYXJzZSBpdCBtYW51YWxseSBzaW5jZSB3ZSBvbmx5IHdhbnQgdG8KQEAgLTc2MSwzMyArODAwLDQ1IEBACiAKIC8qIFByb3BlcnRpZXMgYW5kIHBzZXVkby1wcm9wZXJ0aWVzICovCiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19yZWFkYWJsZV9kb2MsCi0icmVhZGFibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgcmVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5yZWFkYWJsZQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fd3JpdGFibGVfZG9jLAotIndyaXRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7Ci0KLVB5RG9jX1NUUlZBUihzdHJpbmdpb19zZWVrYWJsZV9kb2MsCi0ic2Vla2FibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLiIpOworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19zZWVrYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fcmVhZGFibGVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMTlkNDRkZDhiMWNlYjk5IGlucHV0PTM5Y2UwNjhiMjI0YzIxYWRdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy53cml0YWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3JlYWRhYmxlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19TdHJpbmdJT193cml0YWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzZTRkZDc3MTg3MDc0Y2EgaW5wdXQ9N2E2OTEzNTNhYWMzODgzNV0qLwogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnNlZWthYmxlCisKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb193cml0YWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDIwYjQ2NDFjNzU2ODc5IGlucHV0PTRjNjA2ZDA1YjMyOTUyZTZdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC04MDksNyArODYwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdpb19nZXRzdGF0ZShzdHJpbmdpbyAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gc3RyaW5naW9fZ2V0dmFsdWUoc2VsZik7CisgICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IF9pb19TdHJpbmdJT19nZXR2YWx1ZV9pbXBsKHNlbGYpOwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICpzdGF0ZTsKIApAQCAtODU3LDcgKzkwOCw3IEBACiAgICAgaW5pdGFyZyA9IFB5VHVwbGVfR2V0U2xpY2Uoc3RhdGUsIDAsIDIpOwogICAgIGlmIChpbml0YXJnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzdHJpbmdpb19pbml0KHNlbGYsIGluaXRhcmcsIE5VTEwpIDwgMCkgeworICAgIGlmIChfaW9fU3RyaW5nSU9fX19pbml0X18oKFB5T2JqZWN0ICopc2VsZiwgaW5pdGFyZywgTlVMTCkgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpbml0YXJnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtOTU5LDE5ICsxMDEwLDIxIEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHIoc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX25ld2xpbmVzKTsKIH0KIAotc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBzdHJpbmdpb19tZXRob2RzW10gPSB7Ci0gICAgeyJjbG9zZSIsICAgIChQeUNGdW5jdGlvbilzdHJpbmdpb19jbG9zZSwgICAgTUVUSF9OT0FSR1MsICBzdHJpbmdpb19jbG9zZV9kb2N9LAotICAgIHsiZ2V0dmFsdWUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fZ2V0dmFsdWUsIE1FVEhfTk9BUkdTLCAgc3RyaW5naW9fZ2V0dmFsdWVfZG9jfSwKLSAgICB7InJlYWQiLCAgICAgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3JlYWQsICAgICBNRVRIX1ZBUkFSR1MsIHN0cmluZ2lvX3JlYWRfZG9jfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIHN0cmluZ2lvX3JlYWRsaW5lX2RvY30sCi0gICAgeyJ0ZWxsIiwgICAgIChQeUNGdW5jdGlvbilzdHJpbmdpb190ZWxsLCAgICAgTUVUSF9OT0FSR1MsICBzdHJpbmdpb190ZWxsX2RvY30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBzdHJpbmdpb190cnVuY2F0ZV9kb2N9LAotICAgIHsic2VlayIsICAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fc2VlaywgICAgIE1FVEhfVkFSQVJHUywgc3RyaW5naW9fc2Vla19kb2N9LAotICAgIHsid3JpdGUiLCAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fd3JpdGUsICAgIE1FVEhfTywgICAgICAgc3RyaW5naW9fd3JpdGVfZG9jfSwKKyNpbmNsdWRlICJjbGluaWMvc3RyaW5naW8uYy5oIgogCi0gICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIHN0cmluZ2lvX3NlZWthYmxlX2RvY30sCi0gICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIHN0cmluZ2lvX3JlYWRhYmxlX2RvY30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb193cml0YWJsZSwgTUVUSF9OT0FSR1MsIHN0cmluZ2lvX3dyaXRhYmxlX2RvY30sCitzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIHN0cmluZ2lvX21ldGhvZHNbXSA9IHsKKyAgICBfSU9fU1RSSU5HSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX0dFVFZBTFVFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19SRUFETElORV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fVEVMTF9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fVFJVTkNBVEVfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1dSSVRFX01FVEhPRERFRgorCisgICAgX0lPX1NUUklOR0lPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fV1JJVEFCTEVfTUVUSE9EREVGCiAKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3NldHN0YXRlLCBNRVRIX099LApAQCAtMTAxMyw3ICsxMDY2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgICAgICAgICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgLyp0cF9mbGFncyovCi0gICAgc3RyaW5naW9fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICBfaW9fU3RyaW5nSU9fX19pbml0X19fX2RvY19fLCAgICAgICAgICAgICAgLyp0cF9kb2MqLwogICAgICh0cmF2ZXJzZXByb2Mpc3RyaW5naW9fdHJhdmVyc2UsICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KICAgICAoaW5xdWlyeSlzdHJpbmdpb19jbGVhciwgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwpAQCAtMTAyOCw3ICsxMDgxLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCiAgICAgb2Zmc2V0b2Yoc3RyaW5naW8sIGRpY3QpLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKXN0cmluZ2lvX2luaXQsICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCisgICAgX2lvX1N0cmluZ0lPX19faW5pdF9fLCAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MqLwogICAgIHN0cmluZ2lvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCBiNDE5Mjc1Li5jOTYyYzBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtMTEsNiArMTEsMjAgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIgIm5sZGVjb2Rlcl9vYmplY3QgKiIgIiZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSIKK2NsYXNzIF9pby5UZXh0SU9XcmFwcGVyICJ0ZXh0aW8gKiIgIiZUZXh0SU9XcmFwcGVyX1RZcGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yMDk3YTRmYzg1NjcwYzI2XSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIF9QeV9JREVOVElGSUVSKF9kZWFsbG9jX3dhcm4pOwogX1B5X0lERU5USUZJRVIoZGVjb2RlKTsKQEAgLTIxMCwzOCArMjI0LDM3IEBACiAKIC8qIEluY3JlbWVudGFsTmV3bGluZURlY29kZXIgKi8KIAotUHlEb2NfU1RSVkFSKGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZG9jLAotICAgICJDb2RlYyB1c2VkIHdoZW4gcmVhZGluZyBhIGZpbGUgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUuICBJdCB3cmFwc1xuIgotICAgICJhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxcclxcbiBhbmQgXFxyIGludG8gXFxuLiAgSXQgYWxzb1xuIgotICAgICJyZWNvcmRzIHRoZSB0eXBlcyBvZiBuZXdsaW5lcyBlbmNvdW50ZXJlZC4gIFdoZW4gdXNlZCB3aXRoXG4iCi0gICAgInRyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluXG4iCi0gICAgIm9uZSBwaWVjZS4gV2hlbiB1c2VkIHdpdGggZGVjb2Rlcj1Ob25lLCBpdCBleHBlY3RzIHVuaWNvZGUgc3RyaW5ncyBhc1xuIgotICAgICJkZWNvZGUgaW5wdXQgYW5kIHRyYW5zbGF0ZXMgbmV3bGluZXMgd2l0aG91dCBmaXJzdCBpbnZva2luZyBhbiBleHRlcm5hbFxuIgotICAgICJkZWNvZGVyLlxuIgotICAgICk7Ci0KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgUHlPYmplY3QgKmVycm9yczsKLSAgICBzaWduZWQgaW50IHBlbmRpbmdjcjogMTsKLSAgICBzaWduZWQgaW50IHRyYW5zbGF0ZTogMTsKKyAgICB1bnNpZ25lZCBpbnQgcGVuZGluZ2NyOiAxOworICAgIHVuc2lnbmVkIGludCB0cmFuc2xhdGU6IDE7CiAgICAgdW5zaWduZWQgaW50IHNlZW5ubDogMzsKIH0gbmxkZWNvZGVyX29iamVjdDsKIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuX19pbml0X18KKyAgICBkZWNvZGVyOiBvYmplY3QKKyAgICB0cmFuc2xhdGU6IGludAorICAgIGVycm9yczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gInN0cmljdCIKKworQ29kZWMgdXNlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLgorCitJdCB3cmFwcyBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxyXG4gYW5kIFxyIGludG8gXG4uCitJdCBhbHNvIHJlY29yZHMgdGhlIHR5cGVzIG9mIG5ld2xpbmVzIGVuY291bnRlcmVkLiAgV2hlbiB1c2VkIHdpdGgKK3RyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluCitvbmUgcGllY2UuIFdoZW4gdXNlZCB3aXRoIGRlY29kZXI9Tm9uZSwgaXQgZXhwZWN0cyB1bmljb2RlIHN0cmluZ3MgYXMKK2RlY29kZSBpbnB1dCBhbmQgdHJhbnNsYXRlcyBuZXdsaW5lcyB3aXRob3V0IGZpcnN0IGludm9raW5nIGFuIGV4dGVybmFsCitkZWNvZGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1pbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2luaXQobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyLCBpbnQgdHJhbnNsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZiZDA0ZDQ0M2U3NjRlYzIgaW5wdXQ9ODlkYjZiMTljNmIxMjZiZl0qLwogewotICAgIFB5T2JqZWN0ICpkZWNvZGVyOwotICAgIGludCB0cmFuc2xhdGU7Ci0gICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9pfE86SW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmZGVjb2RlciwgJnRyYW5zbGF0ZSwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIHNlbGYtPmRlY29kZXIgPSBkZWNvZGVyOwogICAgIFB5X0lOQ1JFRihkZWNvZGVyKTsKIApAQCAtNDk1LDIyICs1MDgsMjcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmlucHV0OwotICAgIGludCBmaW5hbCA9IDA7CisvKltjbGluaWMgaW5wdXRdCitfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci5kZWNvZGUKKyAgICBpbnB1dDogb2JqZWN0CisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xpOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmlucHV0LCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGQ0ODY3NTViYjM3YTY2ZSBpbnB1dD1kNjU2NzczODViZmQ2ODI3XSovCit7CiAgICAgcmV0dXJuIF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKChQeU9iamVjdCAqKSBzZWxmLCBpbnB1dCwgZmluYWwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci5nZXRzdGF0ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzdGF0ZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGQyYzljMTM2ZjRlMGQwIGlucHV0PWY4ZmYxMDE4MjVlMzJlN2ZdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOwpAQCAtNTIwLDcgKzUzOCw3IEBACiAgICAgICAgICAgIF9QeUlPX3N0cl9nZXRzdGF0ZSwgTlVMTCk7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2Uoc3RhdGUsICIoT0spIiwgJmJ1ZmZlciwgJmZsYWcpKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9LIiwgJmJ1ZmZlciwgJmZsYWcpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTUzNywxNiArNTU1LDI0IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5LIiwgYnVmZmVyLCBmbGFnKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuc2V0c3RhdGUKKyAgICBzdGF0ZTogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9zZXRzdGF0ZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RhdGUpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMxMGM2MjI1MDhiNTc2Y2IgaW5wdXQ9YzUzZmI1MDVhNzZkYmJlMl0qLwogewogICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZsYWc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKHN0YXRlLCAiKE9LKSIsICZidWZmZXIsICZmbGFnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPSyIsICZidWZmZXIsICZmbGFnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzZWxmLT5wZW5kaW5nY3IgPSAoaW50KSBmbGFnICYgMTsKKyAgICBzZWxmLT5wZW5kaW5nY3IgPSAoaW50KSAoZmxhZyAmIDEpOwogICAgIGZsYWcgPj49IDE7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciAhPSBQeV9Ob25lKQpAQCAtNTU2LDggKzU4MiwxMyBAQAogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfcmVzZXQobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldF9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzJmYTQwYzc0NjJhYThmZiBpbnB1dD03Mjg2NzhkZGFlYTc3NmRmXSovCiB7CiAgICAgc2VsZi0+c2Vlbm5sID0gMDsKICAgICBzZWxmLT5wZW5kaW5nY3IgPSAwOwpAQCAtNTkxLDk1ICs2MjIsOCBAQAogCiB9CiAKLQotc3RhdGljIFB5TWV0aG9kRGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0gICAgeyJnZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX3NldHN0YXRlLCBNRVRIX099LAotICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24paW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9yZXNldCwgTUVUSF9OT0FSR1N9LAotICAgIHtOVUxMfQotfTsKLQotc3RhdGljIFB5R2V0U2V0RGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZ2V0c2V0W10gPSB7Ci0gICAgeyJuZXdsaW5lcyIsIChnZXR0ZXIpaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9uZXdsaW5lc19nZXQsIE5VTEwsIE5VTEx9LAotICAgIHtOVUxMfQotfTsKLQotUHlUeXBlT2JqZWN0IFB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKG5sZGVjb2Rlcl9vYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgLyp0cF9mbGFncyovCi0gICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9kb2MsICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzZXQsIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci0KLQogLyogVGV4dElPV3JhcHBlciAqLwogCi1QeURvY19TVFJWQVIodGV4dGlvd3JhcHBlcl9kb2MsCi0gICAgIkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuXG4iCi0gICAgIlxuIgotICAgICJlbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmVcbiIKLSAgICAiZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuXG4iCi0gICAgIlxuIgotICAgICJlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZVxuIgotICAgICJoZWxwKGNvZGVjcy5Db2RlYykgb3IgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlcikgYW5kXG4iCi0gICAgImRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCi0gICAgIlxuIgotICAgICJuZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCAnJyxcbiIKLSAgICAiJ1xcbicsICdcXHInLCBhbmQgJ1xcclxcbicuICBJdCB3b3JrcyBhcyBmb2xsb3dzOlxuIgotICAgICJcbiIKLSAgICAiKiBPbiBpbnB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpc1xuIgotICAgICIgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluICdcXG4nLCAnXFxyJywgb3IgJ1xcclxcbicsIGFuZFxuIgotICAgICIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xcbicgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZVxuIgotICAgICIgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKLSAgICAiICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZlxuIgotICAgICIgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuXG4iCi0gICAgIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgotICAgICJcbiIKLSAgICAiKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKLSAgICAiICB0cmFuc2xhdGVkIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaW5lIHNlcGFyYXRvciwgb3MubGluZXNlcC4gSWZcbiIKLSAgICAiICBuZXdsaW5lIGlzICcnIG9yICdcXG4nLCBubyB0cmFuc2xhdGlvbiB0YWtlcyBwbGFjZS4gSWYgbmV3bGluZSBpcyBhbnlcbiIKLSAgICAiICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCi0gICAgIiAgdG8gdGhlIGdpdmVuIHN0cmluZy5cbiIKLSAgICAiXG4iCi0gICAgIklmIGxpbmVfYnVmZmVyaW5nIGlzIFRydWUsIGEgY2FsbCB0byBmbHVzaCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvXG4iCi0gICAgIndyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuIgotICAgICk7Ci0KIHR5cGVkZWYgUHlPYmplY3QgKgogICAgICAgICAoKmVuY29kZWZ1bmNfdCkoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKQEAgLTc0Miw3ICs2ODYsNiBAQAogICAgIFB5T2JqZWN0ICpkaWN0OwogfSB0ZXh0aW87CiAKLQogLyogQSBjb3VwbGUgb2Ygc3BlY2lhbGl6ZWQgY2FzZXMgaW4gb3JkZXIgdG8gYnlwYXNzIHRoZSBzbG93IGluY3JlbWVudGFsCiAgICBlbmNvZGluZyBtZXRob2RzIGZvciB0aGUgbW9zdCBwb3B1bGFyIGVuY29kaW5ncy4gKi8KIApAQCAtODQzLDI4ICs3ODYsNTkgQEAKIH07CiAKIAotc3RhdGljIGludAotdGV4dGlvd3JhcHBlcl9pbml0KHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgICAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwKLSAgICAgICAgICAgICAgICAgICAgICBOVUxMfTsKLSAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmF3LCAqY29kZWNfaW5mbyA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgY2hhciAqbmV3bGluZSA9IE5VTEw7Ci0gICAgaW50IGxpbmVfYnVmZmVyaW5nID0gMCwgd3JpdGVfdGhyb3VnaCA9IDA7Ci0gICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLl9faW5pdF9fCisgICAgYnVmZmVyOiBvYmplY3QKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIG5ld2xpbmU6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBsaW5lX2J1ZmZlcmluZzogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICB3cml0ZV90aHJvdWdoOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQogCitDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLgorCitlbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUKK2RlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLgorCitlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZQoraGVscChjb2RlY3MuQ29kZWMpIG9yIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIpIGFuZAorZGVmYXVsdHMgdG8gInN0cmljdCIuCisKK25ld2xpbmUgY29udHJvbHMgaG93IGxpbmUgZW5kaW5ncyBhcmUgaGFuZGxlZC4gSXQgY2FuIGJlIE5vbmUsICcnLAorJ1xuJywgJ1xyJywgYW5kICdcclxuJy4gIEl0IHdvcmtzIGFzIGZvbGxvd3M6CisKKyogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMKKyAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xuJywgJ1xyJywgb3IgJ1xyXG4nLCBhbmQKKyAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byAnXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGUKKyAgY2FsbGVyLiBJZiBpdCBpcyAnJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZQorICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZgorICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlbgorICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuCisKKyogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUKKyAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmCisgIG5ld2xpbmUgaXMgJycgb3IgJ1xuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55CisgIG9mIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZAorICB0byB0aGUgZ2l2ZW4gc3RyaW5nLgorCitJZiBsaW5lX2J1ZmZlcmluZyBpcyBUcnVlLCBhIGNhbGwgdG8gZmx1c2ggaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0bword3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBsaW5lX2J1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRlX3Rocm91Z2gpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTZhODM0MDJjZTJhODM4MSBpbnB1dD0zMTI2Y2IzMTAxYTJjOTliXSovCit7CisgICAgUHlPYmplY3QgKnJhdywgKmNvZGVjX2luZm8gPSBOVUxMOworICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpbnQgcjsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98enp6aWk6ZmlsZWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3bGluZSwgJmxpbmVfYnVmZmVyaW5nLCAmd3JpdGVfdGhyb3VnaCkpCi0gICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChuZXdsaW5lICYmIG5ld2xpbmVbMF0gIT0gJ1wwJwogICAgICAgICAmJiAhKG5ld2xpbmVbMF0gPT0gJ1xuJyAmJiBuZXdsaW5lWzFdID09ICdcMCcpCkBAIC0xMjQ0LDggKzEyMTgsMTMgQEAKICAgICB9CiAKIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuZGV0YWNoCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX2RldGFjaCh0ZXh0aW8gKnNlbGYpCitfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2JhMzcxNWNkMDMyZDVmMiBpbnB1dD1lNWE3MWZiZGE5ZTFkOWY5XSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJlczsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKQEAgLTEyOTAsMjUgKzEyNjksMjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIud3JpdGUKKyAgICB0ZXh0OiB1bmljb2RlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl93cml0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZGViMGQ1MDc3MWZjZWMgaW5wdXQ9ZmRmMTkxNTM1ODRhMGU0NF0qLwogewogICAgIFB5T2JqZWN0ICpyZXQ7Ci0gICAgUHlPYmplY3QgKnRleHQ7IC8qIG93bmVkIHJlZmVyZW5jZSAqLwogICAgIFB5T2JqZWN0ICpiOwogICAgIFB5X3NzaXplX3QgdGV4dGxlbjsKICAgICBpbnQgaGFzbGYgPSAwOwogICAgIGludCBuZWVkZmx1c2ggPSAwLCB0ZXh0X25lZWRmbHVzaCA9IDA7CiAKLSAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp3cml0ZSIsICZ0ZXh0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRleHQpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5lbmNvZGVyID09IE5VTEwpCkBAIC0xNDQxLDYgKzE0MjEsNyBAQAogICAgIFB5T2JqZWN0ICpkZWNfYnVmZmVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVjX2ZsYWdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqaW5wdXRfY2h1bmsgPSBOVUxMOworICAgIFB5X2J1ZmZlciBpbnB1dF9jaHVua19idWY7CiAgICAgUHlPYmplY3QgKmRlY29kZWRfY2hhcnMsICpjaHVua19zaXplOwogICAgIFB5X3NzaXplX3QgbmJ5dGVzLCBuY2hhcnM7CiAgICAgaW50IGVvZjsKQEAgLTE0NjgsNyArMTQ0OSwxNiBAQAogICAgICAgICAvKiBHaXZlbiB0aGlzLCB3ZSBrbm93IHRoZXJlIHdhcyBhIHZhbGlkIHNuYXBzaG90IHBvaW50CiAgICAgICAgICAqIGxlbihkZWNfYnVmZmVyKSBieXRlcyBhZ28gd2l0aCBkZWNvZGVyIHN0YXRlIChiJycsIGRlY19mbGFncykuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoUHlBcmdfUGFyc2Uoc3RhdGUsICIoT08pIiwgJmRlY19idWZmZXIsICZkZWNfZmxhZ3MpIDwgMCkgeworICAgICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9PIiwgJmRlY19idWZmZXIsICZkZWNfZmxhZ3MpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhkZWNfYnVmZmVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QsIG5vdCAnJS4yMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShkZWNfYnVmZmVyKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC0xNDg0LDIzICsxNDc0LDI0IEBACiAgICAgY2h1bmtfc2l6ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChQeV9NQVgoc2VsZi0+Y2h1bmtfc2l6ZSwgc2l6ZV9oaW50KSk7CiAgICAgaWYgKGNodW5rX3NpemUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOworCiAgICAgaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5idWZmZXIsCiAgICAgICAgIChzZWxmLT5oYXNfcmVhZDEgPyBfUHlJT19zdHJfcmVhZDE6IF9QeUlPX3N0cl9yZWFkKSwKICAgICAgICAgY2h1bmtfc2l6ZSwgTlVMTCk7CiAgICAgUHlfREVDUkVGKGNodW5rX3NpemUpOwogICAgIGlmIChpbnB1dF9jaHVuayA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGlucHV0X2NodW5rKSkgeworCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihpbnB1dF9jaHVuaywgJmlucHV0X2NodW5rX2J1ZiwgMCkgIT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVuZGVybHlpbmcgJXMoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgInVuZGVybHlpbmcgJXMoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgKHNlbGYtPmhhc19yZWFkMSA/ICJyZWFkMSI6ICJyZWFkIiksCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGlucHV0X2NodW5rKS0+dHBfbmFtZSk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBuYnl0ZXMgPSBQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspOworICAgIG5ieXRlcyA9IGlucHV0X2NodW5rX2J1Zi5sZW47CiAgICAgZW9mID0gKG5ieXRlcyA9PSAwKTsKLQogICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkgewogICAgICAgICBkZWNvZGVkX2NoYXJzID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoCiAgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCBpbnB1dF9jaHVuaywgZW9mKTsKQEAgLTE1MDksNiArMTUwMCw3IEBACiAgICAgICAgIGRlY29kZWRfY2hhcnMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLAogICAgICAgICAgICAgX1B5SU9fc3RyX2RlY29kZSwgaW5wdXRfY2h1bmssIGVvZiA/IFB5X1RydWUgOiBQeV9GYWxzZSwgTlVMTCk7CiAgICAgfQorICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0X2NodW5rX2J1Zik7CiAKICAgICBpZiAoY2hlY2tfZGVjb2RlZChkZWNvZGVkX2NoYXJzKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTE1MjUsMTggKzE1MTcsMTIgQEAKICAgICAgICAgLyogQXQgdGhlIHNuYXBzaG90IHBvaW50LCBsZW4oZGVjX2J1ZmZlcikgYnl0ZXMgYmVmb3JlIHRoZSByZWFkLCB0aGUKICAgICAgICAgICogbmV4dCBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIGRlY19idWZmZXIgKyBpbnB1dF9jaHVuay4KICAgICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpuZXh0X2lucHV0ID0gUHlOdW1iZXJfQWRkKGRlY19idWZmZXIsIGlucHV0X2NodW5rKTsKLSAgICAgICAgaWYgKG5leHRfaW5wdXQgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG5leHRfaW5wdXQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvZGVyIGdldHN0YXRlKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCwgbm90ICclLjIwMHMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaW5wdXQpLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2lucHV0KTsKKyAgICAgICAgUHlPYmplY3QgKm5leHRfaW5wdXQgPSBkZWNfYnVmZmVyOworICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmbmV4dF9pbnB1dCwgaW5wdXRfY2h1bmspOworICAgICAgICBpZiAobmV4dF9pbnB1dCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkZWNfYnVmZmVyID0gTlVMTDsgLyogUmVmZXJlbmNlIGxvc3QgdG8gUHlCeXRlc19Db25jYXQgKi8KICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZGVjX2J1ZmZlcik7CiAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKICAgICAgICAgc2VsZi0+c25hcHNob3QgPSBQeV9CdWlsZFZhbHVlKCJOTiIsIGRlY19mbGFncywgbmV4dF9pbnB1dCk7CiAgICAgfQpAQCAtMTU1MSwxNyArMTUzNywxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIucmVhZAorICAgIHNpemUgYXMgbjogaW9fc3NpemVfdCA9IC0xCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9yZWFkKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2U2NTFjZTZjYzZhMjVhNiBpbnB1dD04YzA5Mzk4NDI0MDg1Y2NhXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEwsICpjaHVua3MgPSBOVUxMOwogCiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgPT0gTlVMTCkKQEAgLTE3MjUsNyArMTcxMyw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIC8qIE5vbi11bml2ZXJzYWwgbW9kZS4gKi8KICAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVhZG5sKTsKLSAgICAgICAgY2hhciAqbmwgPSBQeVVuaWNvZGVfREFUQShyZWFkbmwpOworICAgICAgICBQeV9VQ1MxICpubCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlYWRubCk7CiAgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewpAQCAtMTkyNywxNiArMTkxNSwxOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9yZWFkbGluZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnJlYWRsaW5lCisgICAgc2l6ZTogUHlfc3NpemVfdCA9IC0xCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNDRhZmE5ODgwNGU4YjI1IGlucHV0PTU2YzcxNzI0ODNiMzZkYjZdKi8KK3sKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwgJmxpbWl0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIF90ZXh0aW93cmFwcGVyX3JlYWRsaW5lKHNlbGYsIGxpbWl0KTsKKyAgICByZXR1cm4gX3RleHRpb3dyYXBwZXJfcmVhZGxpbmUoc2VsZiwgc2l6ZSk7CiB9CiAKIC8qIFNlZWsgYW5kIFRlbGwgKi8KQEAgLTIwNjgsMTkgKzIwNTgsMjMgQEAKICAgICAgICAgc2VsZiwgY29va2llLT5zdGFydF9wb3MgPT0gMCAmJiBjb29raWUtPmRlY19mbGFncyA9PSAwKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuc2VlaworICAgIGNvb2tpZSBhcyBjb29raWVPYmo6IG9iamVjdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfc2Vlayh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfc2Vla19pbXBsKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmNvb2tpZU9iaiwgaW50IHdoZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYTE1Njc5NzY0ZTJkMDRkIGlucHV0PTA0NThhYmViM2Q3ODQyYmVdKi8KIHsKLSAgICBQeU9iamVjdCAqY29va2llT2JqLCAqcG9zb2JqOworICAgIFB5T2JqZWN0ICpwb3NvYmo7CiAgICAgY29va2llX3R5cGUgY29va2llOwotICAgIGludCB3aGVuY2UgPSAwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaW50IGNtcDsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZjb29raWVPYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBQeV9JTkNSRUYoY29va2llT2JqKTsKQEAgLTIyNTIsOCArMjI0NiwxMyBAQAogCiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnRlbGwKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfdGVsbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjE2OGMwOGJmMzRhZDVmIGlucHV0PTlhMmNhZjg4YzI0ZjlkZGZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICpwb3NvYmogPSBOVUxMOwpAQCAtMjI2Myw3ICsyMjYyLDYgQEAKICAgICBQeV9zc2l6ZV90IHNraXBfYnl0ZXMsIHNraXBfYmFjazsKICAgICBQeU9iamVjdCAqc2F2ZWRfc3RhdGUgPSBOVUxMOwogICAgIGNoYXIgKmlucHV0LCAqaW5wdXRfZW5kOwotICAgIGNoYXIgKmRlY19idWZmZXI7CiAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKICAgICBpbnQgZGVjX2ZsYWdzOwogCkBAIC0yMzA2LDcgKzIzMDQsNyBAQAogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICAvKiBTa2lwIGJhY2t3YXJkIHRvIHRoZSBzbmFwc2hvdCBwb2ludCAoc2VlIF9yZWFkX2NodW5rKS4gKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlKHNlbGYtPnNuYXBzaG90LCAiKGlPKSIsICZjb29raWUuZGVjX2ZsYWdzLCAmbmV4dF9pbnB1dCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHNlbGYtPnNuYXBzaG90LCAiaU8iLCAmY29va2llLmRlY19mbGFncywgJm5leHRfaW5wdXQpKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBhc3NlcnQgKFB5Qnl0ZXNfQ2hlY2sobmV4dF9pbnB1dCkpOwpAQCAtMjMyOCwxNCArMjMyNiwyNCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAKICNkZWZpbmUgREVDT0RFUl9HRVRTVEFURSgpIGRvIHsgXAorICAgICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlcjsgXAogICAgICAgICBQeU9iamVjdCAqX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgXAogICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsgXAogICAgICAgICBpZiAoX3N0YXRlID09IE5VTEwpIFwKICAgICAgICAgICAgIGdvdG8gZmFpbDsgXAotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKF9zdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsgXAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoX3N0YXRlLCAiT2kiLCAmZGVjX2J1ZmZlciwgJmRlY19mbGFncykpIHsgXAogICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKICAgICAgICAgICAgIGdvdG8gZmFpbDsgXAogICAgICAgICB9IFwKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRlY19idWZmZXIpKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCwgbm90ICclLjIwMHMnIiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZGVjX2J1ZmZlciktPnRwX25hbWUpOyBcCisgICAgICAgICAgICBQeV9ERUNSRUYoX3N0YXRlKTsgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWNfYnVmZmVyX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoZGVjX2J1ZmZlcik7IFwKICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKICAgICB9IHdoaWxlICgwKQogCkBAIC0yNDYwLDE2ICsyNDY4LDE5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnRydW5jYXRlCisgICAgcG9zOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl90cnVuY2F0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTBlYzJhZmI5YmI3NzQ1ZiBpbnB1dD01NmVjOGJhYTY1YWVhMzc3XSovCiB7Ci0gICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZwb3MpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKChQeU9iamVjdCAqKSBzZWxmLCBfUHlJT19zdHJfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTI1MzQsMzYgKzI1NDUsNjEgQEAKIAogLyogSW5xdWlyaWVzICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmZpbGVubworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2ZpbGVub19pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMTQ5MGE0YzNkYTEzZTZjIGlucHV0PWM0ODhjYTgzZDAwNjlmOWJdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnNlZWthYmxlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYjIyM2RiYmNmZmMwZjAwIGlucHV0PThiMDA1Y2EwNmUxZmNhMTNdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIucmVhZGFibGUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyZmY3YmEyODlhOGE5MWIgaW5wdXQ9MDcwNGVhN2UwMWIwZDNlYl0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci53cml0YWJsZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGVfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTcyOGM3MTc5MGQwMzIwMCBpbnB1dD1jNDE3NDBiYzlkODYzNmU4XSovCiB7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmlzYXR0eQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9pc2F0dHkodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2lzYXR0eV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMmJlMWEzNWJhY2U4ODJlIGlucHV0PWZiNjhkOWYyYzk5YmJmZmZdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2lzYXR0eSwgTlVMTCk7CkBAIC0yNTc3LDggKzI2MTMsMTMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuZmx1c2gKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfZmx1c2godGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5ZGU5MTY1ZjljMmU0ZDIgaW5wdXQ9OTI4YzYwNTkwNjk0YWI4NV0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKQEAgLTI1ODgsOCArMjYyOSwxMyBAQAogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5jbG9zZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9jbG9zZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDU2Y2NmOGI0ODc2ZTRmNCBpbnB1dD05YzIxMTQzMTVlYWUxOTQ4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpbnQgcjsKQEAgLTI3MzMsMjQgKzI3NzksODEgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHRleHRpb3dyYXBwZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfZGV0YWNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3dyaXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9mbHVzaCwgTUVUSF9OT0FSR1N9LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorI2luY2x1ZGUgImNsaW5pYy90ZXh0aW8uYy5oIgogCi0gICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9maWxlbm8sIE1FVEhfTk9BUkdTfSwKLSAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfcmVhZGFibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfd3JpdGFibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAorc3RhdGljIFB5TWV0aG9kRGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kc1tdID0geworICAgIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9HRVRTVEFURV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9TRVRTVEFURV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldFtdID0geworICAgIHsibmV3bGluZXMiLCAoZ2V0dGVyKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbmV3bGluZXNfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCAvKnRwX25hbWUqLworICAgIHNpemVvZihubGRlY29kZXJfb2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgIC8qdHBfZmxhZ3MqLworICAgIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX19kb2NfXywgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldCwgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHRleHRpb3dyYXBwZXJfbWV0aG9kc1tdID0geworICAgIF9JT19URVhUSU9XUkFQUEVSX0RFVEFDSF9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9XUklURV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9SRUFEX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0NMT1NFX01FVEhPRERFRgorCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfRklMRU5PX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0lTQVRUWV9NRVRIT0RERUYKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCiAKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9zZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfU0VFS19NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9URUxMX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1RSVU5DQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjc5Niw3ICsyODk5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLwotICAgIHRleHRpb3dyYXBwZXJfZG9jLCAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpdGV4dGlvd3JhcHBlcl90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZXh0aW93cmFwcGVyX2NsZWFyLCAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMjgxMSw3ICsyOTE0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIG9mZnNldG9mKHRleHRpbywgZGljdCksIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKXRleHRpb3dyYXBwZXJfaW5pdCwgLyogdHBfaW5pdCAqLworICAgIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fLCAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggZGRlZDJjOS4uZjYzZDc1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtNDcsNyArNDcsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtX3NlcGFyYXRvcjsKICAgICBQeU9iamVjdCAqc29ydF9rZXlzOwogICAgIFB5T2JqZWN0ICpza2lwa2V5czsKLSAgICBpbnQgZmFzdF9lbmNvZGU7CisgICAgUHlDRnVuY3Rpb24gZmFzdF9lbmNvZGU7CiAgICAgaW50IGFsbG93X25hbjsKIH0gUHlFbmNvZGVyT2JqZWN0OwogCkBAIC0yMjUsMjYgKzIyNSwxMjIgQEAKICAgICByZXR1cm4gcnZhbDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cikKK3sKKyAgICAvKiBUYWtlIGEgUHlVbmljb2RlIHB5c3RyIGFuZCByZXR1cm4gYSBuZXcgZXNjYXBlZCBQeVVuaWNvZGUgKi8KKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBpbnB1dF9jaGFyczsKKyAgICBQeV9zc2l6ZV90IG91dHB1dF9zaXplOworICAgIFB5X3NzaXplX3QgY2hhcnM7CisgICAgUHlPYmplY3QgKnJ2YWw7CisgICAgdm9pZCAqaW5wdXQ7CisgICAgaW50IGtpbmQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShweXN0cik7CisgICAgaW5wdXRfY2hhcnMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cik7CisgICAgaW5wdXQgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKworICAgIC8qIENvbXB1dGUgdGhlIG91dHB1dCBzaXplICovCisgICAgZm9yIChpID0gMCwgb3V0cHV0X3NpemUgPSAyOyBpIDwgaW5wdXRfY2hhcnM7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbnB1dCwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgZDsKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnIic6IGNhc2UgJ1xiJzogY2FzZSAnXGYnOgorICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgZCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChjIDw9IDB4MWYpCisgICAgICAgICAgICAgICAgZCA9IDY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG91dHB1dF9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBkKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyB0byBlc2NhcGUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG91dHB1dF9zaXplICs9IGQ7CisgICAgfQorCisgICAgcnZhbCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X3NpemUsIG1heGNoYXIpOworICAgIGlmIChydmFsID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJ2YWwpOworCisjZGVmaW5lIEVOQ09ERV9PVVRQVVQgZG8geyBcCisgICAgICAgIGNoYXJzID0gMDsgXAorICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnIic7IFwKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsgXAorICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOyBcCisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsgXAorICAgICAgICAgICAgY2FzZSAnXFwnOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSBjOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnIic6ICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSBjOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXGInOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAnYic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcZic6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICdmJzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGNhc2UgJ1xuJzogb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gJ24nOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGRlZmF1bHQ6IFwKKyAgICAgICAgICAgICAgICBpZiAoYyA8PSAweDFmKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJzAnOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICcwJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gNCkgJiAweGZdOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgKSAmIDB4Zl07IFwKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IGM7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOyBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKm91dHB1dCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJ2YWwpOworICAgICAgICBFTkNPREVfT1VUUFVUOworICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpvdXRwdXQgPSBQeVVuaWNvZGVfMkJZVEVfREFUQShydmFsKTsKKyAgICAgICAgRU5DT0RFX09VVFBVVDsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpvdXRwdXQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQShydmFsKTsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBFTkNPREVfT1VUUFVUOworICAgIH0KKyN1bmRlZiBFTkNPREVfT1VUUFVUCisKKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocnZhbCwgMSkpOworI2VuZGlmCisgICAgcmV0dXJuIHJ2YWw7Cit9CisKIHN0YXRpYyB2b2lkCiByYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgLyogVXNlIHRoZSBQeXRob24gZnVuY3Rpb24ganNvbi5kZWNvZGVyLmVycm1zZyB0byByYWlzZSBhIG5pY2UKLSAgICBsb29raW5nIFZhbHVlRXJyb3IgZXhjZXB0aW9uICovCi0gICAgc3RhdGljIFB5T2JqZWN0ICplcnJtc2dfZm4gPSBOVUxMOwotICAgIFB5T2JqZWN0ICpweW1zZzsKLSAgICBpZiAoZXJybXNnX2ZuID09IE5VTEwpIHsKKyAgICAvKiBVc2UgSlNPTkRlY29kZUVycm9yIGV4Y2VwdGlvbiB0byByYWlzZSBhIG5pY2UgbG9va2luZyBWYWx1ZUVycm9yIHN1YmNsYXNzICovCisgICAgc3RhdGljIFB5T2JqZWN0ICpKU09ORGVjb2RlRXJyb3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGM7CisgICAgaWYgKEpTT05EZWNvZGVFcnJvciA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJqc29uLmRlY29kZXIiKTsKICAgICAgICAgaWYgKGRlY29kZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZXJybXNnX2ZuID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhkZWNvZGVyLCAiZXJybXNnIik7CisgICAgICAgIEpTT05EZWNvZGVFcnJvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZGVjb2RlciwgIkpTT05EZWNvZGVFcnJvciIpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2Rlcik7Ci0gICAgICAgIGlmIChlcnJtc2dfZm4gPT0gTlVMTCkKKyAgICAgICAgaWYgKEpTT05EZWNvZGVFcnJvciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBweW1zZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlcnJtc2dfZm4sICIoek9uKSIsIG1zZywgcywgZW5kKTsKLSAgICBpZiAocHltc2cpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1ZhbHVlRXJyb3IsIHB5bXNnKTsKLSAgICAgICAgUHlfREVDUkVGKHB5bXNnKTsKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oSlNPTkRlY29kZUVycm9yLCAiKHpPbikiLCBtc2csIHMsIGVuZCk7CisgICAgaWYgKGV4YykgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoSlNPTkRlY29kZUVycm9yLCBleGMpOworICAgICAgICBQeV9ERUNSRUYoZXhjKTsKICAgICB9CiB9CiAKQEAgLTUzNyw2ICs2MzMsMzEgQEAKICAgICByZXR1cm4gcnZhbDsKIH0KIAorCitQeURvY19TVFJWQVIocHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmcsCisgICAgImVuY29kZV9iYXNlc3RyaW5nKHN0cmluZykgLT4gc3RyaW5nXG4iCisgICAgIlxuIgorICAgICJSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZyIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9lbmNvZGVfYmFzZXN0cmluZyhQeU9iamVjdCogc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICpweXN0cikKK3sKKyAgICBQeU9iamVjdCAqcnZhbDsKKyAgICAvKiBSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZyAqLworICAgIC8qIE1FVEhfTyAqLworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socHlzdHIpKSB7CisgICAgICAgIHJ2YWwgPSBlc2NhcGVfdW5pY29kZShweXN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjgwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHB5c3RyKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcnZhbDsKK30KKwogc3RhdGljIHZvaWQKIHNjYW5uZXJfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTcxNSw3ICs4MzYsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BhcnNlX2FycmF5X3VuaWNvZGUoUHlTY2FubmVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcHlzdHIsIFB5X3NzaXplX3QgaWR4LCBQeV9zc2l6ZV90ICpuZXh0X2lkeF9wdHIpIHsKLSAgICAvKiBSZWFkIGEgSlNPTiBhcnJheSBmcm9tIFB5U3RyaW5nIHB5c3RyLgorICAgIC8qIFJlYWQgYSBKU09OIGFycmF5IGZyb20gUHlVbmljb2RlIHB5c3RyLgogICAgIGlkeCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgb3BlbmluZyBicmFjZS4KICAgICAqbmV4dF9pZHhfcHRyIGlzIGEgcmV0dXJuLWJ5LXJlZmVyZW5jZSBpbmRleCB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyCiAgICAgICAgIHRoZSBjbG9zaW5nIGJyYWNlLgpAQCAtNzg3LDggKzkwOCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGFyc2VfY29uc3RhbnQoUHlTY2FubmVyT2JqZWN0ICpzLCBjaGFyICpjb25zdGFudCwgUHlfc3NpemVfdCBpZHgsIFB5X3NzaXplX3QgKm5leHRfaWR4X3B0cikgewotICAgIC8qIFJlYWQgYSBKU09OIGNvbnN0YW50IGZyb20gUHlTdHJpbmcgcHlzdHIuCitfcGFyc2VfY29uc3RhbnQoUHlTY2FubmVyT2JqZWN0ICpzLCBjb25zdCBjaGFyICpjb25zdGFudCwgUHlfc3NpemVfdCBpZHgsIFB5X3NzaXplX3QgKm5leHRfaWR4X3B0cikgeworICAgIC8qIFJlYWQgYSBKU09OIGNvbnN0YW50LgogICAgIGNvbnN0YW50IGlzIHRoZSBjb25zdGFudCBzdHJpbmcgdGhhdCB3YXMgZm91bmQKICAgICAgICAgKCJOYU4iLCAiSW5maW5pdHkiLCAiLUluZmluaXR5IikuCiAgICAgaWR4IGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjb25zdGFudApAQCAtODIwLDcgKzk0MSw3IEBACiAgICAgICAgIHRoZSBudW1iZXIuCiAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoYXQgbnVtYmVyOgotICAgICAgICBQeUludCwgUHlMb25nLCBvciBQeUZsb2F0LgorICAgICAgICBQeUxvbmcsIG9yIFB5RmxvYXQuCiAgICAgICAgIE1heSByZXR1cm4gb3RoZXIgdHlwZXMgaWYgcGFyc2VfaW50IG9yIHBhcnNlX2Zsb2F0IGFyZSBzZXQKICAgICAqLwogICAgIHZvaWQgKnN0cjsKQEAgLTEyNDQsNyArMTM2NSwxNCBAQAogICAgIHMtPml0ZW1fc2VwYXJhdG9yID0gaXRlbV9zZXBhcmF0b3I7CiAgICAgcy0+c29ydF9rZXlzID0gc29ydF9rZXlzOwogICAgIHMtPnNraXBrZXlzID0gc2tpcGtleXM7Ci0gICAgcy0+ZmFzdF9lbmNvZGUgPSAoUHlDRnVuY3Rpb25fQ2hlY2socy0+ZW5jb2RlcikgJiYgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24ocy0+ZW5jb2RlcikgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKTsKKyAgICBzLT5mYXN0X2VuY29kZSA9IE5VTEw7CisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKHMtPmVuY29kZXIpKSB7CisgICAgICAgIFB5Q0Z1bmN0aW9uIGYgPSBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbihzLT5lbmNvZGVyKTsKKyAgICAgICAgaWYgKGYgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpIHx8CisgICAgICAgICAgICAgICAgZiA9PSAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmcpIHsKKyAgICAgICAgICAgIHMtPmZhc3RfZW5jb2RlID0gZjsKKyAgICAgICAgfQorICAgIH0KICAgICBzLT5hbGxvd19uYW4gPSBhbGxvd19uYW47CiAKICAgICBQeV9JTkNSRUYocy0+bWFya2Vycyk7CkBAIC0xMzkzLDcgKzE1MjEsNyBAQAogewogICAgIC8qIFJldHVybiB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIHN0cmluZyAqLwogICAgIGlmIChzLT5mYXN0X2VuY29kZSkKLSAgICAgICAgcmV0dXJuIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKE5VTEwsIG9iaik7CisgICAgICAgIHJldHVybiBzLT5mYXN0X2VuY29kZShOVUxMLCBvYmopOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+ZW5jb2Rlciwgb2JqLCBOVUxMKTsKIH0KQEAgLTE4NDAsNiArMTk2OCwxMCBAQAogICAgICAgICAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWksCiAgICAgICAgIE1FVEhfTywKICAgICAgICAgcHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWl9LAorICAgIHsiZW5jb2RlX2Jhc2VzdHJpbmciLAorICAgICAgICAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmcsCisgICAgICAgIE1FVEhfTywKKyAgICAgICAgcHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmd9LAogICAgIHsic2NhbnN0cmluZyIsCiAgICAgICAgIChQeUNGdW5jdGlvbilweV9zY2Fuc3RyaW5nLAogICAgICAgICBNRVRIX1ZBUkFSR1MsCkBAIC0xODYyLDcgKzE5OTQsNyBAQAogICAgICAgICBOVUxMCiB9OwogCi1QeU9iamVjdCoKK1B5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2pzb24odm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmanNvbm1vZHVsZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IDAxMzdkOTUuLjY2ZTUzNGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0yMDIsNiArMjAyLDggQEAKICAgICAgICAgKi8KICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBmbi0+bV9zZWxmOwogICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBmbi0+bV9tb2R1bGU7CisKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1vID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgbmFtZSk7CiAgICAgICAgICAgICBQeV9YSU5DUkVGKG1vKTsKQEAgLTIxMyw5ICsyMTUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvKiBPdGhlcndpc2UsIHVzZSBfX21vZHVsZV9fICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlcz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICBpZiAobW9kbmFtZSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlUy4lcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsICBmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBjNDM2NzZhLi43ZTRlMmRmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC02Niw2ICs2Niw5IEBACiAgICAgaW50IGNoZWNrOwogICAgIGNoYXIgZW9mOwogICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyAgICBjaGFyIG5lZWRzX2lucHV0OworICAgIHVpbnQ4X3QgKmlucHV0X2J1ZmZlcjsKKyAgICBzaXplX3QgaW5wdXRfYnVmZmVyX3NpemU7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKICNlbmRpZgpAQCAtMTQyLDEwICsxNDUsMTUgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50Ci1ncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK2dyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOwotICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBzaXplICsgKHNpemUgPj4gMykgKyA2KTsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIFB5X3NzaXplX3QgbmV3c2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKSArIDY7CisKKyAgICBpZiAobWF4X2xlbmd0aCA+IDAgJiYgbmV3c2l6ZSA+IG1heF9sZW5ndGgpCisgICAgICAgIG5ld3NpemUgPSBtYXhfbGVuZ3RoOworCisgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld3NpemUpOwogfQogCiAKQEAgLTQ3MCwxMiArNDc4LDExIEBACiAKIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgX2x6bWEKIGNsYXNzIF9sem1hLkxaTUFDb21wcmVzc29yICJDb21wcmVzc29yICoiICImQ29tcHJlc3Nvcl90eXBlIgogY2xhc3MgX2x6bWEuTFpNQURlY29tcHJlc3NvciAiRGVjb21wcmVzc29yICoiICImRGVjb21wcmVzc29yX3R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mMTdhZmM3ODY1MjVkNmMyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yYzE0YmJlMDVmZjBjMTQ3XSovCiAKICNpbmNsdWRlICJjbGluaWMvX2x6bWFtb2R1bGUuYy5oIgogCkBAIC01MDQsNyArNTExLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjb21wcmVzcyhDb21wcmVzc29yICpjLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBsem1hX2FjdGlvbiBhY3Rpb24pCiB7Ci0gICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBkYXRhX3NpemUgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOwpAQCAtNTI3LDcgKzUzNCw3IEBACiAgICAgICAgICAgICAoYWN0aW9uID09IExaTUFfRklOSVNIICYmIGx6cmV0ID09IExaTUFfU1RSRUFNX0VORCkpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgaWYgKGMtPmx6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQsIC0xKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICAgICAgYy0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKQEAgLTg4OCwyNSArODk1LDMzIEBACiAKIC8qIExaTUFEZWNvbXByZXNzb3IgY2xhc3MuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kZWNvbXByZXNzKERlY29tcHJlc3NvciAqZCwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikKKy8qIERlY29tcHJlc3MgZGF0YSBvZiBsZW5ndGggZC0+bHpzLmF2YWlsX2luIGluIGQtPmx6cy5uZXh0X2luLiAgVGhlIG91dHB1dAorICAgYnVmZmVyIGlzIGFsbG9jYXRlZCBkeW5hbWljYWxseSBhbmQgcmV0dXJuZWQuICBBdCBtb3N0IG1heF9sZW5ndGggYnl0ZXMgYXJlCisgICByZXR1cm5lZCwgc28gc29tZSBvZiB0aGUgaW5wdXQgbWF5IG5vdCBiZSBjb25zdW1lZC4gZC0+bHpzLm5leHRfaW4gYW5kCisgICBkLT5senMuYXZhaWxfaW4gYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgY29uc3VtZWQgaW5wdXQuICovCitzdGF0aWMgUHlPYmplY3QqCitkZWNvbXByZXNzX2J1ZihEZWNvbXByZXNzb3IgKmQsIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKIHsKLSAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBsem1hX3N0cmVhbSAqbHpzID0gJmQtPmx6czsKIAotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKG1heF9sZW5ndGggPCAwIHx8IG1heF9sZW5ndGggPj0gSU5JVElBTF9CVUZGRVJfU0laRSkKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWF4X2xlbmd0aCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkLT5senMubmV4dF9pbiA9IGRhdGE7Ci0gICAgZC0+bHpzLmF2YWlsX2luID0gbGVuOwotICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworCisgICAgbHpzLT5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBsenMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgbHptYV9yZXQgbHpyZXQ7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmZC0+bHpzLCBMWk1BX1JVTik7Ci0gICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopZC0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgbHpyZXQgPSBsem1hX2NvZGUobHpzLCBMWk1BX1JVTik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopbHpzLT5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC05MTQsMjYgKzkyOSwxMzEgQEAKICAgICAgICAgICAgIGQtPmNoZWNrID0gbHptYV9nZXRfY2hlY2soJmQtPmx6cyk7CiAgICAgICAgIGlmIChsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpIHsKICAgICAgICAgICAgIGQtPmVvZiA9IDE7Ci0gICAgICAgICAgICBpZiAoZC0+bHpzLmF2YWlsX2luID4gMCkgewotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKLSAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWQtPmx6cy5uZXh0X2luLCBkLT5senMuYXZhaWxfaW4pOwotICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoZC0+bHpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgfSBlbHNlIGlmIChsenMtPmF2YWlsX2luID09IDApIHsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICB9IGVsc2UgaWYgKGx6cy0+YXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChkYXRhX3NpemUgPT0gbWF4X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0LCBtYXhfbGVuZ3RoKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwotICAgICAgICAgICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGx6cy0+bmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBsenMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpkLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCit7CisgICAgY2hhciBpbnB1dF9idWZmZXJfaW5fdXNlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgbHptYV9zdHJlYW0gKmx6cyA9ICZkLT5senM7CisKKyAgICAvKiBQcmVwZW5kIHVuY29uc3VtZWQgaW5wdXQgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKGx6cy0+bmV4dF9pbiAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBhdmFpbF9ub3csIGF2YWlsX3RvdGFsOworCisgICAgICAgIC8qIE51bWJlciBvZiBieXRlcyB3ZSBjYW4gYXBwZW5kIHRvIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBhdmFpbF9ub3cgPSAoZC0+aW5wdXRfYnVmZmVyICsgZC0+aW5wdXRfYnVmZmVyX3NpemUpCisgICAgICAgICAgICAtIChsenMtPm5leHRfaW4gKyBsenMtPmF2YWlsX2luKTsKKworICAgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGFwcGVuZCBpZiB3ZSBtb3ZlIGV4aXN0aW5nCisgICAgICAgICAgIGNvbnRlbnRzIHRvIGJlZ2lubmluZyBvZiBidWZmZXIgKG92ZXJ3cml0aW5nCisgICAgICAgICAgIGNvbnN1bWVkIGlucHV0KSAqLworICAgICAgICBhdmFpbF90b3RhbCA9IGQtPmlucHV0X2J1ZmZlcl9zaXplIC0gbHpzLT5hdmFpbF9pbjsKKworICAgICAgICBpZiAoYXZhaWxfdG90YWwgPCBsZW4pIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBsenMtPm5leHRfaW4gLSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgICAgICB1aW50OF90ICp0bXA7CisgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSArIGxlbiAtIGF2YWlsX25vdzsKKworICAgICAgICAgICAgLyogQXNzaWduIHRvIHRlbXBvcmFyeSB2YXJpYWJsZSBmaXJzdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAgICAgIGxvc2UgYWRkcmVzcyBvZiBhbGxvY2F0ZWQgYnVmZmVyIGlmIHJlYWxsb2MgZmFpbHMgKi8KKyAgICAgICAgICAgIHRtcCA9IFB5TWVtX1JlYWxsb2MoZC0+aW5wdXRfYnVmZmVyLCBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IHRtcDsKKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplID0gbmV3X3NpemU7CisKKyAgICAgICAgICAgIGx6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlciArIG9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhdmFpbF9ub3cgPCBsZW4pIHsKKyAgICAgICAgICAgIG1lbW1vdmUoZC0+aW5wdXRfYnVmZmVyLCBsenMtPm5leHRfaW4sCisgICAgICAgICAgICAgICAgICAgIGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgbHpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgICAgIG1lbWNweSgodm9pZCopKGx6cy0+bmV4dF9pbiArIGx6cy0+YXZhaWxfaW4pLCBkYXRhLCBsZW4pOworICAgICAgICBsenMtPmF2YWlsX2luICs9IGxlbjsKKyAgICAgICAgaW5wdXRfYnVmZmVyX2luX3VzZSA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsenMtPm5leHRfaW4gPSBkYXRhOworICAgICAgICBsenMtPmF2YWlsX2luID0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNvbXByZXNzX2J1ZihkLCBtYXhfbGVuZ3RoKTsKKyAgICBpZihyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZC0+ZW9mKSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKyAgICAgICAgaWYgKGx6cy0+YXZhaWxfaW4gPiAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgKGNoYXIgKilsenMtPm5leHRfaW4sIGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsenMtPmF2YWlsX2luID09IDApIHsKKyAgICAgICAgbHpzLT5uZXh0X2luID0gTlVMTDsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAwOworCisgICAgICAgIC8qIElmIHdlIGRpZCBub3QgdXNlIHRoZSBpbnB1dCBidWZmZXIsIHdlIG5vdyBoYXZlCisgICAgICAgICAgIHRvIGNvcHkgdGhlIHRhaWwgZnJvbSB0aGUgY2FsbGVyJ3MgYnVmZmVyIGludG8gdGhlCisgICAgICAgICAgIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBpZiAoIWlucHV0X2J1ZmZlcl9pbl91c2UpIHsKKworICAgICAgICAgICAgLyogRGlzY2FyZCBidWZmZXIgaWYgaXQncyB0b28gc21hbGwKKyAgICAgICAgICAgICAgIChyZXNpemluZyBpdCBtYXkgbmVlZGxlc3NseSBjb3B5IHRoZSBjdXJyZW50IGNvbnRlbnRzKSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPCBsenMtPmF2YWlsX2luKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShkLT5pbnB1dF9idWZmZXIpOworICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEFsbG9jYXRlIGlmIG5lY2Vzc2FyeSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gUHlNZW1fTWFsbG9jKGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBsenMtPmF2YWlsX2luOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb3B5IHRhaWwgKi8KKyAgICAgICAgICAgIG1lbWNweShkLT5pbnB1dF9idWZmZXIsIGx6cy0+bmV4dF9pbiwgbHpzLT5hdmFpbF9pbik7CisgICAgICAgICAgICBsenMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogCiBlcnJvcjoKQEAgLTk0NiwyMCArMTA2NiwyOCBAQAogCiAgICAgc2VsZjogc2VsZih0eXBlPSJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCi0gICAgLworICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIAotUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LgorRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4KIAotUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLgorSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mCitkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmUKK3Byb2R1Y2VkLCAqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gYGBGYWxzZWBgLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXh0CitjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiJycgdG8gb2J0YWluIG1vcmUgb2YgdGhlIG91dHB1dC4KIAotQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAotcmFpc2VzIGFuIEVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtCi1pcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgorSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIgYmVjYXVzZSB0aGlzCit3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZSAqbWF4X2xlbmd0aCogd2FzIG5lZ2F0aXZlKSwKKypzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLgorCitBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIHJhaXNlcyBhbgorRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4KK3RoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kODZlNzhkYTdmZjBmZjIxIGlucHV0PTUwYzQ3NjhiODIxYmYwZWZdKi8KK19sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVmNGUyMGVjNzEyMjI0MWQgaW5wdXQ9ZjJiYjkwMmNjMWNhZjIwM10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC05NjcsNyArMTA5NSw3IEBACiAgICAgaWYgKHNlbGYtPmVvZikKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiQWxyZWFkeSBhdCBlbmQgb2Ygc3RyZWFtIik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuKTsKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBkYXRhLT5idWYsIGRhdGEtPmxlbiwgbWF4X2xlbmd0aCk7CiAgICAgUkVMRUFTRV9MT0NLKHNlbGYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDIzLDggKzExNTEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1fbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBpbnQgZm9ybWF0LCBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTliMTE5ZjZmMmNjMmQ3YTggaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xMDU1LDYgKzExODQsNyBAQAogICAgIHNlbGYtPmFsbG9jLmFsbG9jID0gUHlMem1hX01hbGxvYzsKICAgICBzZWxmLT5hbGxvYy5mcmVlID0gUHlMem1hX0ZyZWU7CiAgICAgc2VsZi0+bHpzLmFsbG9jYXRvciA9ICZzZWxmLT5hbGxvYzsKKyAgICBzZWxmLT5senMubmV4dF9pbiA9IE5VTEw7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CkBAIC0xMDY1LDYgKzExOTUsOSBAQAogI2VuZGlmCiAKICAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfVU5LTk9XTjsKKyAgICBzZWxmLT5uZWVkc19pbnB1dCA9IDE7CisgICAgc2VsZi0+aW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgICBzZWxmLT5pbnB1dF9idWZmZXJfc2l6ZSA9IDA7CiAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTExMyw2ICsxMjQ2LDkgQEAKIHN0YXRpYyB2b2lkCiBEZWNvbXByZXNzb3JfZGVhbGxvYyhEZWNvbXByZXNzb3IgKnNlbGYpCiB7CisgICAgaWYoc2VsZi0+aW5wdXRfYnVmZmVyICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+aW5wdXRfYnVmZmVyKTsKKwogICAgIGx6bWFfZW5kKCZzZWxmLT5senMpOwogICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMTEzNCw2ICsxMjcwLDkgQEAKIFB5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZW9mX2RvYywKICJUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLiIpOwogCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX25lZWRzX2lucHV0X2RvYywKKyJUcnVlIGlmIG1vcmUgaW5wdXQgaXMgbmVlZGVkIGJlZm9yZSBtb3JlIGRlY29tcHJlc3NlZCBkYXRhIGNhbiBiZSBwcm9kdWNlZC4iKTsKKwogUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2MsCiAiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKIApAQCAtMTE0Miw2ICsxMjgxLDggQEAKICAgICAgRGVjb21wcmVzc29yX2NoZWNrX2RvY30sCiAgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKERlY29tcHJlc3NvciwgZW9mKSwgUkVBRE9OTFksCiAgICAgIERlY29tcHJlc3Nvcl9lb2ZfZG9jfSwKKyAgICB7Im5lZWRzX2lucHV0IiwgVF9CT09MLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIG5lZWRzX2lucHV0KSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2N9LAogICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksIFJFQURPTkxZLAogICAgICBEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jfSwKICAgICB7TlVMTH0KQEAgLTEyNjAsOCArMTQwMSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLCBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjM1ZjdmNTM0NWQ0ODc0NCBpbnB1dD0yNDY0MTA4MDA3ODIxNjBjXSovCitfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZW5jb2RlZF9wcm9wcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZjI0OGY1NzA3NDY2NjhiIGlucHV0PTI0NjQxMDgwMDc4MjE2MGNdKi8KIHsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXI7CiAgICAgbHptYV9yZXQgbHpyZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19vcGNvZGUuYyBiL01vZHVsZXMvX29wY29kZS5jCmluZGV4IGZlZTM4OGYuLjY2M2JiMjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wY29kZS5jCisrKyBiL01vZHVsZXMvX29wY29kZS5jCkBAIC02LDYgKzYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTE3NDQyZTY2ZWIzNzZlNl0qLwogCisjaW5jbHVkZSAiY2xpbmljL19vcGNvZGUuYy5oIgorCiAvKltjbGluaWMgaW5wdXRdCiAKIF9vcGNvZGUuc3RhY2tfZWZmZWN0IC0+IGludApAQCAtMTcsNDIgKzE5LDkgQEAKIENvbXB1dGUgdGhlIHN0YWNrIGVmZmVjdCBvZiB0aGUgb3Bjb2RlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19fLAotInN0YWNrX2VmZmVjdCgkbW9kdWxlLCBvcGNvZGUsIG9wYXJnPU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4iKTsKLQotI2RlZmluZSBfT1BDT0RFX1NUQUNLX0VGRkVDVF9NRVRIT0RERUYgICAgXAotICAgIHsic3RhY2tfZWZmZWN0IiwgKFB5Q0Z1bmN0aW9uKV9vcGNvZGVfc3RhY2tfZWZmZWN0LCBNRVRIX1ZBUkFSR1MsIF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfX30sCi0KLXN0YXRpYyBpbnQKLV9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wY29kZSwgUHlPYmplY3QgKm9wYXJnKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9vcGNvZGVfc3RhY2tfZWZmZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCBvcGNvZGU7Ci0gICAgUHlPYmplY3QgKm9wYXJnID0gUHlfTm9uZTsKLSAgICBpbnQgX3JldHVybl92YWx1ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiaXxPOnN0YWNrX2VmZmVjdCIsCi0gICAgICAgICZvcGNvZGUsICZvcGFyZykpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgaW50CiBfb3Bjb2RlX3N0YWNrX2VmZmVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcGNvZGUsIFB5T2JqZWN0ICpvcGFyZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTExMzNmOGQ1ODdiYzY3IGlucHV0PTJkMGE5ZWU1M2MwNDE4ZjVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZmNhZmQ1NTk2YzZiMDUwIGlucHV0PTJkMGE5ZWU1M2MwNDE4ZjVdKi8KIHsKICAgICBpbnQgZWZmZWN0OwogICAgIGludCBvcGFyZ19pbnQgPSAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fb3BlcmF0b3IuYyBiL01vZHVsZXMvX29wZXJhdG9yLmMKaW5kZXggYWRlYjk5ZS4uNzM1YWZmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL19vcGVyYXRvci5jCkBAIC02OSw2ICs2OSw3IEBACiBzcGFtMihvcF9hZGQgICAgICAgICAgICwgUHlOdW1iZXJfQWRkKQogc3BhbTIob3Bfc3ViICAgICAgICAgICAsIFB5TnVtYmVyX1N1YnRyYWN0KQogc3BhbTIob3BfbXVsICAgICAgICAgICAsIFB5TnVtYmVyX011bHRpcGx5KQorc3BhbTIob3BfbWF0bXVsICAgICAgICAsIFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KQogc3BhbTIob3BfZmxvb3JkaXYgICAgICAsIFB5TnVtYmVyX0Zsb29yRGl2aWRlKQogc3BhbTIob3BfdHJ1ZWRpdiAgICAgICAsIFB5TnVtYmVyX1RydWVEaXZpZGUpCiBzcGFtMihvcF9tb2QgICAgICAgICAgICwgUHlOdW1iZXJfUmVtYWluZGVyKQpAQCAtODYsNiArODcsNyBAQAogc3BhbTIob3BfaWFkZCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VBZGQpCiBzcGFtMihvcF9pc3ViICAgICAgICAgICwgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0KQogc3BhbTIob3BfaW11bCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseSkKK3NwYW0yKG9wX2ltYXRtdWwgICAgICAgLCBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkpCiBzcGFtMihvcF9pZmxvb3JkaXYgICAgICwgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKQogc3BhbTIob3BfaXRydWVkaXYgICAgICAsIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlKQogc3BhbTIob3BfaW1vZCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIpCkBAIC0yMzksNyArMjQxLDcgQEAKICJSZXR1cm4gJ2EgPT0gYicuICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gYXBwcm9hY2ggZGVzaWduZWQgdG8gcHJldmVudFxuIgogInRpbWluZyBhbmFseXNpcywgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuXG4iCiAiYSBhbmQgYiBtdXN0IGJvdGggYmUgb2YgdGhlIHNhbWUgdHlwZTogZWl0aGVyIHN0ciAoQVNDSUkgb25seSksXG4iCi0ib3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIChlLmcuIGJ5dGVzKS5cbiIKKyJvciBhbnkgYnl0ZXMtbGlrZSBvYmplY3QuXG4iCiAiXG4iCiAiTm90ZTogSWYgYSBhbmQgYiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycyxcbiIKICJhIHRpbWluZyBhdHRhY2sgY291bGQgdGhlb3JldGljYWxseSByZXZlYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4iCkBAIC0zNDMsNiArMzQ1LDcgQEAKIHNwYW0yKGFkZCwgImFkZChhLCBiKSAtLSBTYW1lIGFzIGEgKyBiLiIpCiBzcGFtMihzdWIsICJzdWIoYSwgYikgLS0gU2FtZSBhcyBhIC0gYi4iKQogc3BhbTIobXVsLCAibXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqIGIuIikKK3NwYW0yKG1hdG11bCwgIm1hdG11bChhLCBiKSAtLSBTYW1lIGFzIGEgQCBiLiIpCiBzcGFtMihmbG9vcmRpdiwgImZsb29yZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvLyBiLiIpCiBzcGFtMih0cnVlZGl2LCAidHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLyBiLiIpCiBzcGFtMihtb2QsICJtb2QoYSwgYikgLS0gU2FtZSBhcyBhICUgYi4iKQpAQCAtMzYwLDYgKzM2Myw3IEBACiBzcGFtMihpYWRkLCAiYSA9IGlhZGQoYSwgYikgLS0gU2FtZSBhcyBhICs9IGIuIikKIHNwYW0yKGlzdWIsICJhID0gaXN1YihhLCBiKSAtLSBTYW1lIGFzIGEgLT0gYi4iKQogc3BhbTIoaW11bCwgImEgPSBpbXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqPSBiLiIpCitzcGFtMihpbWF0bXVsLCAiYSA9IGltYXRtdWwoYSwgYikgLS0gU2FtZSBhcyBhIEA9IGIuIikKIHNwYW0yKGlmbG9vcmRpdiwgImEgPSBpZmxvb3JkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC8vPSBiLiIpCiBzcGFtMihpdHJ1ZWRpdiwgImEgPSBpdHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLz0gYiIpCiBzcGFtMihpbW9kLCAiYSA9IGltb2QoYSwgYikgLS0gU2FtZSBhcyBhICU9IGIuIikKQEAgLTQ4MSw2ICs0ODUsNDEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoraXRlbWdldHRlcl9yZXByKGl0ZW1nZXR0ZXJvYmplY3QgKmlnKQoreworICAgIFB5T2JqZWN0ICpyZXByOworICAgIGNvbnN0IGNoYXIgKnJlcHJmbXQ7CisKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKWlnKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShpZyktPnRwX25hbWUpOworICAgIH0KKworICAgIHJlcHJmbXQgPSBpZy0+bml0ZW1zID09IDEgPyAiJXMoJVIpIiA6ICIlcyVSIjsKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQocmVwcmZtdCwgUHlfVFlQRShpZyktPnRwX25hbWUsIGlnLT5pdGVtKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopaWcpOworICAgIHJldHVybiByZXByOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXRlbWdldHRlcl9yZWR1Y2UoaXRlbWdldHRlcm9iamVjdCAqaWcpCit7CisgICAgaWYgKGlnLT5uaXRlbXMgPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKGlnKSwgaWctPml0ZW0pOworICAgIHJldHVybiBQeVR1cGxlX1BhY2soMiwgUHlfVFlQRShpZyksIGlnLT5pdGVtKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBpdGVtZ2V0dGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24paXRlbWdldHRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTH0KK307CisKIFB5RG9jX1NUUlZBUihpdGVtZ2V0dGVyX2RvYywKICJpdGVtZ2V0dGVyKGl0ZW0sIC4uLikgLS0+IGl0ZW1nZXR0ZXIgb2JqZWN0XG5cCiBcblwKQEAgLTQ5OSw3ICs1MzgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgKHJlcHJmdW5jKWl0ZW1nZXR0ZXJfcmVwciwgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwpAQCAtNTE3LDcgKzU1Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgaXRlbWdldHRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC03MzMsNiArNzcyLDkzIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RvdGpvaW5hdHRyKFB5T2JqZWN0ICphdHRyLCBQeU9iamVjdCAqKmF0dHJzZXApCit7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChhdHRyKSkgeworICAgICAgICBpZiAoKmF0dHJzZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgKmF0dHJzZXAgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLiIpOworICAgICAgICAgICAgaWYgKCphdHRyc2VwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Kb2luKCphdHRyc2VwLCBhdHRyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoYXR0cik7CisgICAgICAgIHJldHVybiBhdHRyOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2F0dHJnZXR0ZXJfYXJncyhhdHRyZ2V0dGVyb2JqZWN0ICphZykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKmF0dHJzZXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICphdHRyc3RyaW5ncyA9IFB5VHVwbGVfTmV3KGFnLT5uYXR0cnMpOworICAgIGlmIChhdHRyc3RyaW5ncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBhZy0+bmF0dHJzOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHIgPSBQeVR1cGxlX0dFVF9JVEVNKGFnLT5hdHRyLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzdHIgPSBkb3Rqb2luYXR0cihhdHRyLCAmYXR0cnNlcCk7CisgICAgICAgIGlmIChhdHRyc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cnN0cmluZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhdHRyc3RyaW5ncywgaSwgYXR0cnN0cik7CisgICAgfQorICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgcmV0dXJuIGF0dHJzdHJpbmdzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXR0cmdldHRlcl9yZXByKGF0dHJnZXR0ZXJvYmplY3QgKmFnKQoreworICAgIFB5T2JqZWN0ICpyZXByID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKWFnKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShhZyktPnRwX25hbWUpOworICAgIH0KKworICAgIGlmIChhZy0+bmF0dHJzID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzZXAgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqYXR0ciA9IGRvdGpvaW5hdHRyKFB5VHVwbGVfR0VUX0lURU0oYWctPmF0dHIsIDApLCAmYXR0cnNlcCk7CisgICAgICAgIGlmIChhdHRyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwgUHlfVFlQRShhZyktPnRwX25hbWUsIGF0dHIpOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOworICAgICAgICB9CisgICAgICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqYXR0cnN0cmluZ3MgPSBhdHRyZ2V0dGVyX2FyZ3MoYWcpOworICAgICAgICBpZiAoYXR0cnN0cmluZ3MgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGFnKS0+dHBfbmFtZSwgYXR0cnN0cmluZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJzdHJpbmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopYWcpOworICAgIHJldHVybiByZXByOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXR0cmdldHRlcl9yZWR1Y2UoYXR0cmdldHRlcm9iamVjdCAqYWcpCit7CisgICAgUHlPYmplY3QgKmF0dHJzdHJpbmdzID0gYXR0cmdldHRlcl9hcmdzKGFnKTsKKyAgICBpZiAoYXR0cnN0cmluZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKGFnKSwgYXR0cnN0cmluZ3MpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgYXR0cmdldHRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWF0dHJnZXR0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEx9Cit9OworCiBQeURvY19TVFJWQVIoYXR0cmdldHRlcl9kb2MsCiAiYXR0cmdldHRlcihhdHRyLCAuLi4pIC0tPiBhdHRyZ2V0dGVyIG9iamVjdFxuXAogXG5cCkBAIC03NTMsNyArODc5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYylhdHRyZ2V0dGVyX3JlcHIsICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTc3MSw3ICs4OTcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGF0dHJnZXR0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtODA5LDYgKzkzNSwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgLyogY3JlYXRlIG1ldGhvZGNhbGxlcm9iamVjdCBzdHJ1Y3R1cmUgKi8KICAgICBtYyA9IFB5T2JqZWN0X0dDX05ldyhtZXRob2RjYWxsZXJvYmplY3QsICZtZXRob2RjYWxsZXJfdHlwZSk7CiAgICAgaWYgKG1jID09IE5VTEwpCkBAIC04MjEsOCArOTU0LDggQEAKICAgICB9CiAgICAgbWMtPmFyZ3MgPSBuZXdhcmdzOwogCi0gICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CiAgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZuYW1lKTsKICAgICBtYy0+bmFtZSA9IG5hbWU7CiAKICAgICBQeV9YSU5DUkVGKGt3ZHMpOwpAQCAtODY1LDYgKzk5OCwxNDIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWV0aG9kY2FsbGVyX3JlcHIobWV0aG9kY2FsbGVyb2JqZWN0ICptYykKK3sKKyAgICBQeU9iamVjdCAqYXJncmVwcnMsICpyZXByID0gTlVMTCwgKnNlcCwgKmpvaW5lZGFyZ3JlcHJzOworICAgIFB5X3NzaXplX3QgbnVtdG90YWxhcmdzLCBudW1wb3NhcmdzLCBudW1rd2RhcmdzLCBpOworICAgIGludCBzdGF0dXMgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0ICopbWMpOworICAgIGlmIChzdGF0dXMgIT0gMCkgeworICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSk7CisgICAgfQorCisgICAgaWYgKG1jLT5rd2RzICE9IE5VTEwpIHsKKyAgICAgICAgbnVta3dkYXJncyA9IFB5RGljdF9TaXplKG1jLT5rd2RzKTsKKyAgICAgICAgaWYgKG51bWt3ZGFyZ3MgPCAwKSB7CisgICAgICAgICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbWMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBudW1rd2RhcmdzID0gMDsKKyAgICB9CisKKyAgICBudW1wb3NhcmdzID0gUHlUdXBsZV9HRVRfU0laRShtYy0+YXJncyk7CisgICAgbnVtdG90YWxhcmdzID0gbnVtcG9zYXJncyArIG51bWt3ZGFyZ3M7CisKKyAgICBpZiAobnVtdG90YWxhcmdzID09IDApIHsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUikiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSwgbWMtPm5hbWUpOworICAgICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbWMpOworICAgICAgICByZXR1cm4gcmVwcjsKKyAgICB9CisKKyAgICBhcmdyZXBycyA9IFB5VHVwbGVfTmV3KG51bXRvdGFsYXJncyk7CisgICAgaWYgKGFyZ3JlcHJzID09IE5VTEwpIHsKKyAgICAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bXBvc2FyZ3M7ICsraSkgeworICAgICAgICBQeU9iamVjdCAqb25lcmVwciA9IFB5T2JqZWN0X1JlcHIoUHlUdXBsZV9HRVRfSVRFTShtYy0+YXJncywgaSkpOworICAgICAgICBpZiAob25lcmVwciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3JlcHJzLCBpLCBvbmVyZXByKTsKKyAgICB9CisKKyAgICBpZiAobnVta3dkYXJncyAhPSAwKSB7CisgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQobWMtPmt3ZHMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbmVyZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVSIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAob25lcmVwciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIGlmIChpID49IG51bXRvdGFsYXJncykgeworICAgICAgICAgICAgICAgIGkgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncmVwcnMsIGksIG9uZXJlcHIpOworICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgICAgIGlmIChpICE9IG51bXRvdGFsYXJncykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgZGljdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgfQorCisgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiwgIik7CisgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBqb2luZWRhcmdyZXBycyA9IFB5VW5pY29kZV9Kb2luKHNlcCwgYXJncmVwcnMpOworICAgIFB5X0RFQ1JFRihzZXApOworICAgIGlmIChqb2luZWRhcmdyZXBycyA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVSLCAlVSkiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWMtPm5hbWUsIGpvaW5lZGFyZ3JlcHJzKTsKKyAgICBQeV9ERUNSRUYoam9pbmVkYXJncmVwcnMpOworCitkb25lOgorICAgIFB5X0RFQ1JFRihhcmdyZXBycyk7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21ldGhvZGNhbGxlcl9yZWR1Y2UobWV0aG9kY2FsbGVyb2JqZWN0ICptYykKK3sKKyAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICBpZiAoIW1jLT5rd2RzIHx8IFB5RGljdF9TaXplKG1jLT5rd2RzKSA9PSAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgUHlfc3NpemVfdCBjYWxsYXJnY291bnQgPSBQeVR1cGxlX0dFVF9TSVpFKG1jLT5hcmdzKTsKKyAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDEgKyBjYWxsYXJnY291bnQpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgbWMtPm5hbWUpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2FsbGFyZ2NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKG1jLT5hcmdzLCBpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpICsgMSwgYXJnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKG1jKSwgbmV3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZnVuY3Rvb2xzOworICAgICAgICBQeU9iamVjdCAqcGFydGlhbDsKKyAgICAgICAgUHlPYmplY3QgKmNvbnN0cnVjdG9yOworICAgICAgICBfUHlfSURFTlRJRklFUihwYXJ0aWFsKTsKKyAgICAgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICAgICAgaWYgKCFmdW5jdG9vbHMpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGFydGlhbCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuY3Rvb2xzLCAmUHlJZF9wYXJ0aWFsKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmN0b29scyk7CisgICAgICAgIGlmICghcGFydGlhbCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aWFsKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKG1jKSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgKFB5T2JqZWN0ICopUHlfVFlQRShtYykpOworICAgICAgICBQeV9JTkNSRUYobWMtPm5hbWUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIG1jLT5uYW1lKTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBQeU9iamVjdF9DYWxsKHBhcnRpYWwsIG5ld2FyZ3MsIG1jLT5rd2RzKTsKKyAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTyIsIGNvbnN0cnVjdG9yLCBtYy0+YXJncyk7CisgICAgfQorfQorCitzdGF0aWMgUHlNZXRob2REZWYgbWV0aG9kY2FsbGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbWV0aG9kY2FsbGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMfQorfTsKIFB5RG9jX1NUUlZBUihtZXRob2RjYWxsZXJfZG9jLAogIm1ldGhvZGNhbGxlcihuYW1lLCAuLi4pIC0tPiBtZXRob2RjYWxsZXIgb2JqZWN0XG5cCiBcblwKQEAgLTg4NCw3ICsxMTUzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYyltZXRob2RjYWxsZXJfcmVwciwgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTkwMiw3ICsxMTcxLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtZXRob2RjYWxsZXJfbWV0aG9kcywgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggODMwNDc5Zi4uZjNiNzNmMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTUsMTQgKzUsMTMgQEAKICJPcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFB5dGhvbiBwaWNrbGUgbW9kdWxlLiIpOwogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSBfcGlja2xlCiBjbGFzcyBfcGlja2xlLlBpY2tsZXIgIlBpY2tsZXJPYmplY3QgKiIgIiZQaWNrbGVyX1R5cGUiCiBjbGFzcyBfcGlja2xlLlBpY2tsZXJNZW1vUHJveHkgIlBpY2tsZXJNZW1vUHJveHlPYmplY3QgKiIgIiZQaWNrbGVyTWVtb1Byb3h5VHlwZSIKIGNsYXNzIF9waWNrbGUuVW5waWNrbGVyICJVbnBpY2tsZXJPYmplY3QgKiIgIiZVbnBpY2tsZXJfVHlwZSIKIGNsYXNzIF9waWNrbGUuVW5waWNrbGVyTWVtb1Byb3h5ICJVbnBpY2tsZXJNZW1vUHJveHlPYmplY3QgKiIgIiZVbnBpY2tsZXJNZW1vUHJveHlUeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTFjNDUyNDhhNDFkZDNmY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NGIzZTExMzQ2OGE1OGU2Y10qLwogCiAvKiBCdW1wIHRoaXMgd2hlbiBuZXcgb3Bjb2RlcyBhcmUgYWRkZWQgdG8gdGhlIHBpY2tsZSBwcm90b2NvbC4gKi8KIGVudW0gewpAQCAtMTUyLDYgKzE1MSw4IEBACiAKICAgICAvKiBjb2RlY3MuZW5jb2RlLCB1c2VkIGZvciBzYXZpbmcgYnl0ZXMgaW4gb2xkZXIgcHJvdG9jb2xzICovCiAgICAgUHlPYmplY3QgKmNvZGVjc19lbmNvZGU7CisgICAgLyogYnVpbHRpbnMuZ2V0YXR0ciwgdXNlZCBmb3Igc2F2aW5nIG5lc3RlZCBuYW1lcyB3aXRoIHByb3RvY29sIDwgNCAqLworICAgIFB5T2JqZWN0ICpnZXRhdHRyOwogfSBQaWNrbGVTdGF0ZTsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgZGVmaW5pdGlvbi4gKi8KQEAgLTE4OCwxNiArMTg5LDI2IEBACiAgICAgUHlfQ0xFQVIoc3QtPm5hbWVfbWFwcGluZ18zdG8yKTsKICAgICBQeV9DTEVBUihzdC0+aW1wb3J0X21hcHBpbmdfM3RvMik7CiAgICAgUHlfQ0xFQVIoc3QtPmNvZGVjc19lbmNvZGUpOworICAgIFB5X0NMRUFSKHN0LT5nZXRhdHRyKTsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgZ2l2ZW4gcGlja2xlIG1vZHVsZSBzdGF0ZS4gKi8KIHN0YXRpYyBpbnQKIF9QaWNrbGVfSW5pdFN0YXRlKFBpY2tsZVN0YXRlICpzdCkKIHsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnM7CiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKIAorICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CisgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgc3QtPmdldGF0dHIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhidWlsdGlucywgImdldGF0dHIiKTsKKyAgICBpZiAoc3QtPmdldGF0dHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9JTkNSRUYoc3QtPmdldGF0dHIpOworCiAgICAgY29weXJlZyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiY29weXJlZyIpOwogICAgIGlmICghY29weXJlZykKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQyMCwxMiArNDMxLDEyIEBACiBQZGF0YV9ncm93KFBkYXRhICpzZWxmKQogewogICAgIFB5T2JqZWN0ICoqZGF0YSA9IHNlbGYtPmRhdGE7Ci0gICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQgPSBzZWxmLT5hbGxvY2F0ZWQ7Ci0gICAgUHlfc3NpemVfdCBuZXdfYWxsb2NhdGVkOworICAgIHNpemVfdCBhbGxvY2F0ZWQgPSAoc2l6ZV90KXNlbGYtPmFsbG9jYXRlZDsKKyAgICBzaXplX3QgbmV3X2FsbG9jYXRlZDsKIAogICAgIG5ld19hbGxvY2F0ZWQgPSAoYWxsb2NhdGVkID4+IDMpICsgNjsKICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgIGlmIChuZXdfYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQpCisgICAgaWYgKG5ld19hbGxvY2F0ZWQgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC0gYWxsb2NhdGVkKQogICAgICAgICBnb3RvIG5vbWVtb3J5OwogICAgIG5ld19hbGxvY2F0ZWQgKz0gYWxsb2NhdGVkOwogICAgIFB5TWVtX1JFU0laRShkYXRhLCBQeU9iamVjdCAqLCBuZXdfYWxsb2NhdGVkKTsKQEAgLTQzMyw3ICs0NDQsNyBAQAogICAgICAgICBnb3RvIG5vbWVtb3J5OwogCiAgICAgc2VsZi0+ZGF0YSA9IGRhdGE7Ci0gICAgc2VsZi0+YWxsb2NhdGVkID0gbmV3X2FsbG9jYXRlZDsKKyAgICBzZWxmLT5hbGxvY2F0ZWQgPSAoUHlfc3NpemVfdCluZXdfYWxsb2NhdGVkOwogICAgIHJldHVybiAwOwogCiAgIG5vbWVtb3J5OgpAQCAtODQ4LDcgKzg1OSw3IEBACiBzdGF0aWMgdm9pZAogX3dyaXRlX3NpemU2NChjaGFyICpvdXQsIHNpemVfdCB2YWx1ZSkKIHsKLSAgICBpbnQgaTsKKyAgICBzaXplX3QgaTsKIAogICAgIGFzc2VydChzaXplb2Yoc2l6ZV90KSA8PSA4KTsKIApAQCAtMTQ1OSw3ICsxNDcwLDcgQEAKICAgICAgICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpKCp2YWx1ZSAmIDB4ZmYpOwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqdmFsdWUgPD0gMHhmZmZmZmZmZkwpIHsKKyAgICAgICAgZWxzZSBpZiAoKHNpemVfdCkqdmFsdWUgPD0gMHhmZmZmZmZmZlVMKSB7CiAgICAgICAgICAgICBwZGF0YVswXSA9IExPTkdfQklOR0VUOwogICAgICAgICAgICAgcGRhdGFbMV0gPSAodW5zaWduZWQgY2hhcikoKnZhbHVlICYgMHhmZik7CiAgICAgICAgICAgICBwZGF0YVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKnZhbHVlID4+IDgpICYgMHhmZik7CkBAIC0xNTE2LDcgKzE1MjcsNyBAQAogICAgICAgICAgICAgcGRhdGFbMV0gPSAodW5zaWduZWQgY2hhcilpZHg7CiAgICAgICAgICAgICBsZW4gPSAyOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlkeCA8PSAweGZmZmZmZmZmTCkgeworICAgICAgICBlbHNlIGlmICgoc2l6ZV90KWlkeCA8PSAweGZmZmZmZmZmVUwpIHsKICAgICAgICAgICAgIHBkYXRhWzBdID0gTE9OR19CSU5QVVQ7CiAgICAgICAgICAgICBwZGF0YVsxXSA9ICh1bnNpZ25lZCBjaGFyKShpZHggJiAweGZmKTsKICAgICAgICAgICAgIHBkYXRhWzJdID0gKHVuc2lnbmVkIGNoYXIpKChpZHggPj4gOCkgJiAweGZmKTsKQEAgLTE1MzgsNjYgKzE1NDksMTAxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRhdHRyaWJ1dGUoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUsIGludCBhbGxvd19xdWFsbmFtZSkgewotICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aDsKLSAgICBQeV9zc2l6ZV90IGk7CitnZXRfZG90dGVkX3BhdGgoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpIHsKICAgICBfUHlfc3RhdGljX3N0cmluZyhQeUlkX2RvdCwgIi4iKTsKICAgICBfUHlfc3RhdGljX3N0cmluZyhQeUlkX2xvY2FscywgIjxsb2NhbHM+Iik7CisgICAgUHlPYmplY3QgKmRvdHRlZF9wYXRoOworICAgIFB5X3NzaXplX3QgaSwgbjsKIAogICAgIGRvdHRlZF9wYXRoID0gUHlVbmljb2RlX1NwbGl0KG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2RvdCksIC0xKTsKLSAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkgeworICAgIGlmIChkb3R0ZWRfcGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgYXNzZXJ0KFB5X1NJWkUoZG90dGVkX3BhdGgpID49IDEpOwotICAgIGlmICghYWxsb3dfcXVhbG5hbWUgJiYgUHlfU0laRShkb3R0ZWRfcGF0aCkgPiAxKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgcXVhbGlmaWVkIGF0dHJpYnV0ZSAlUiBvbiAlUjsiCi0gICAgICAgICAgICAgICAgICAgICAidXNlIHByb3RvY29scyA+PSA0IHRvIGVuYWJsZSBzdXBwb3J0IiwKLSAgICAgICAgICAgICAgICAgICAgIG5hbWUsIG9iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYob2JqKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShkb3R0ZWRfcGF0aCk7IGkrKykgeworICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoZG90dGVkX3BhdGgpOworICAgIGFzc2VydChuID49IDEpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnN1YnBhdGggPSBQeUxpc3RfR0VUX0lURU0oZG90dGVkX3BhdGgsIGkpOwotICAgICAgICBQeU9iamVjdCAqdG1wOwogICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlVbmljb2RlX1JpY2hDb21wYXJlKAogICAgICAgICAgICAgc3VicGF0aCwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfbG9jYWxzKSwgUHlfRVEpOwogICAgICAgICBpbnQgaXNfZXF1YWwgPSAocmVzdWx0ID09IFB5X1RydWUpOwogICAgICAgICBhc3NlcnQoUHlCb29sX0NoZWNrKHJlc3VsdCkpOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgaWYgKGlzX2VxdWFsKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGdldCBsb2NhbCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOwotICAgICAgICAgICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0cihvYmosIHN1YnBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgaWYgKG9iaiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGdldCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgcGlja2xlIGxvY2FsIG9iamVjdCAlUiIsIG5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSBsb2NhbCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOwogICAgICAgICAgICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG9iaiA9IHRtcDsKICAgICB9Ci0gICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKLSAgICByZXR1cm4gb2JqOworICAgIHJldHVybiBkb3R0ZWRfcGF0aDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdoaWNobW9kdWxlKFB5T2JqZWN0ICpnbG9iYWwsIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSwgaW50IGFsbG93X3F1YWxuYW1lKQorZ2V0X2RlZXBfYXR0cmlidXRlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKipwcGFyZW50KQoreworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeU9iamVjdCAqcGFyZW50ID0gTlVMTDsKKworICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChuYW1lcykpOworICAgIFB5X0lOQ1JFRihvYmopOworICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUobmFtZXMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGkpOworICAgICAgICBQeV9YREVDUkVGKHBhcmVudCk7CisgICAgICAgIHBhcmVudCA9IG9iajsKKyAgICAgICAgb2JqID0gUHlPYmplY3RfR2V0QXR0cihwYXJlbnQsIG5hbWUpOworICAgICAgICBpZiAob2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBwYXJlbnQgIT0gTlVMTCkKKyAgICAgICAgKnBwYXJlbnQgPSBwYXJlbnQ7CisgICAgZWxzZQorICAgICAgICBQeV9YREVDUkVGKHBhcmVudCk7CisgICAgcmV0dXJuIG9iajsKK30KKworc3RhdGljIHZvaWQKK3JlZm9ybWF0X2F0dHJpYnV0ZV9lcnJvcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGdldCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXR0cmlidXRlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLCBpbnQgYWxsb3dfcXVhbG5hbWUpCit7CisgICAgUHlPYmplY3QgKmRvdHRlZF9wYXRoLCAqYXR0cjsKKworICAgIGlmIChhbGxvd19xdWFsbmFtZSkgeworICAgICAgICBkb3R0ZWRfcGF0aCA9IGdldF9kb3R0ZWRfcGF0aChvYmosIG5hbWUpOworICAgICAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhdHRyID0gZ2V0X2RlZXBfYXR0cmlidXRlKG9iaiwgZG90dGVkX3BhdGgsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZG90dGVkX3BhdGgpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBQeU9iamVjdF9HZXRBdHRyKG9iaiwgbmFtZSk7CisgICAgaWYgKGF0dHIgPT0gTlVMTCkKKyAgICAgICAgcmVmb3JtYXRfYXR0cmlidXRlX2Vycm9yKG9iaiwgbmFtZSk7CisgICAgcmV0dXJuIGF0dHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aGljaG1vZHVsZShQeU9iamVjdCAqZ2xvYmFsLCBQeU9iamVjdCAqZG90dGVkX3BhdGgpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lOwogICAgIFB5T2JqZWN0ICptb2R1bGVzX2RpY3Q7CiAgICAgUHlPYmplY3QgKm1vZHVsZTsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiAgICAgX1B5X0lERU5USUZJRVIobW9kdWxlcyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19tYWluX18pOwpAQCAtMTYxOSw2ICsxNjY1LDcgQEAKICAgICB9CiAgICAgYXNzZXJ0KG1vZHVsZV9uYW1lID09IE5VTEwpOwogCisgICAgLyogRmFsbGJhY2sgb24gd2Fsa2luZyBzeXMubW9kdWxlcyAqLwogICAgIG1vZHVsZXNfZGljdCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9tb2R1bGVzKTsKICAgICBpZiAobW9kdWxlc19kaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLm1vZHVsZXMiKTsKQEAgLTE2MjYsMzEgKzE2NzMsMjggQEAKICAgICB9CiAKICAgICBpID0gMDsKLSAgICB3aGlsZSAoKGogPSBQeURpY3RfTmV4dChtb2R1bGVzX2RpY3QsICZpLCAmbW9kdWxlX25hbWUsICZtb2R1bGUpKSkgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlVbmljb2RlX1JpY2hDb21wYXJlKAotICAgICAgICAgICAgbW9kdWxlX25hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbWFpbl9fKSwgUHlfRVEpOwotICAgICAgICBpbnQgaXNfZXF1YWwgPSAocmVzdWx0ID09IFB5X1RydWUpOwotICAgICAgICBhc3NlcnQoUHlCb29sX0NoZWNrKHJlc3VsdCkpOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgaWYgKGlzX2VxdWFsKQorICAgIHdoaWxlIChQeURpY3RfTmV4dChtb2R1bGVzX2RpY3QsICZpLCAmbW9kdWxlX25hbWUsICZtb2R1bGUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpjYW5kaWRhdGU7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobW9kdWxlX25hbWUpICYmCisgICAgICAgICAgICAhUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobW9kdWxlX25hbWUsICJfX21haW5fXyIpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChtb2R1bGUgPT0gUHlfTm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG9iaiA9IGdldGF0dHJpYnV0ZShtb2R1bGUsIGdsb2JhbF9uYW1lLCBhbGxvd19xdWFsbmFtZSk7Ci0gICAgICAgIGlmIChvYmogPT0gTlVMTCkgeworICAgICAgICBjYW5kaWRhdGUgPSBnZXRfZGVlcF9hdHRyaWJ1dGUobW9kdWxlLCBkb3R0ZWRfcGF0aCwgTlVMTCk7CisgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvYmogPT0gZ2xvYmFsKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBnbG9iYWwpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2R1bGVfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FuZGlkYXRlKTsKICAgICAgICAgICAgIHJldHVybiBtb2R1bGVfbmFtZTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYob2JqKTsKKyAgICAgICAgUHlfREVDUkVGKGNhbmRpZGF0ZSk7CiAgICAgfQogCiAgICAgLyogSWYgbm8gbW9kdWxlIGlzIGZvdW5kLCB1c2UgX19tYWluX18uICovCkBAIC0xOTM2LDcgKzE5ODAsNyBAQAogICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm9wLCAxKSA8IDApCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICAgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsICdnJywgMTcsIDAsIE5VTEwpOworICAgICAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoeCwgJ3InLCAwLCBQeV9EVFNGX0FERF9ET1RfMCwgTlVMTCk7CiAgICAgICAgIGlmICghYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBkb25lOwpAQCAtMjAxNiw3ICsyMDYwLDcgQEAKICAgICAgICAgICAgIGhlYWRlclsxXSA9ICh1bnNpZ25lZCBjaGFyKXNpemU7CiAgICAgICAgICAgICBsZW4gPSAyOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmZmZmZkwpIHsKKyAgICAgICAgZWxzZSBpZiAoKHNpemVfdClzaXplIDw9IDB4ZmZmZmZmZmZVTCkgewogICAgICAgICAgICAgaGVhZGVyWzBdID0gQklOQllURVM7CiAgICAgICAgICAgICBoZWFkZXJbMV0gPSAodW5zaWduZWQgY2hhcikoc2l6ZSAmIDB4ZmYpOwogICAgICAgICAgICAgaGVhZGVyWzJdID0gKHVuc2lnbmVkIGNoYXIpKChzaXplID4+IDgpICYgMHhmZik7CkBAIC0yMDUzLDkgKzIwOTcsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiByYXdfdW5pY29kZV9lc2NhcGUoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqcmVwciwgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgaSwgc2l6ZSwgZXhwYW5kc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgc2l6ZV90IGV4cGFuZHNpemU7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKIApAQCAtMjA3MCwxNSArMjExNSwxNiBAQAogICAgIGVsc2UKICAgICAgICAgZXhwYW5kc2l6ZSA9IDY7CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlcHIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogc2l6ZSk7CisgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgYXNzZXJ0KFB5X1JFRkNOVChyZXByKSA9PSAxKTsKIAotICAgIHAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7CisgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwpAQCAtMjEwNywxMiArMjE1MywxMCBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgIH0KLSAgICBzaXplID0gcCAtIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKLQotZG9uZToKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKSwgc2l6ZSk7Ci0gICAgUHlfREVDUkVGKHJlcHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgc2l6ZSA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXByOwogfQogCiBzdGF0aWMgaW50CkBAIC0yMTIxLDEyICsyMTY1LDEzIEBACiAgICAgY2hhciBoZWFkZXJbOV07CiAgICAgUHlfc3NpemVfdCBsZW47CiAKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKICAgICBpZiAoc2l6ZSA8PSAweGZmICYmIHNlbGYtPnByb3RvID49IDQpIHsKICAgICAgICAgaGVhZGVyWzBdID0gU0hPUlRfQklOVU5JQ09ERTsKICAgICAgICAgaGVhZGVyWzFdID0gKHVuc2lnbmVkIGNoYXIpKHNpemUgJiAweGZmKTsKICAgICAgICAgbGVuID0gMjsKICAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8PSAweGZmZmZmZmZmVUwpIHsKKyAgICBlbHNlIGlmICgoc2l6ZV90KXNpemUgPD0gMHhmZmZmZmZmZlVMKSB7CiAgICAgICAgIGhlYWRlclswXSA9IEJJTlVOSUNPREU7CiAgICAgICAgIGhlYWRlclsxXSA9ICh1bnNpZ25lZCBjaGFyKShzaXplICYgMHhmZik7CiAgICAgICAgIGhlYWRlclsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoc2l6ZSA+PiA4KSAmIDB4ZmYpOwpAQCAtMzA2MSw2ICszMTA2LDkgQEAKICAgICBQeU9iamVjdCAqZ2xvYmFsX25hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVfbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhcmVudCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRvdHRlZF9wYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGFzdG5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjbHM7CiAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwogICAgIGludCBzdGF0dXMgPSAwOwpAQCAtMzA3NCwxMyArMzEyMiwxMSBAQAogICAgICAgICBnbG9iYWxfbmFtZSA9IG5hbWU7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewotICAgICAgICAgICAgZ2xvYmFsX25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19xdWFsbmFtZV9fKTsKLSAgICAgICAgICAgIGlmIChnbG9iYWxfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgfQorICAgICAgICBnbG9iYWxfbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgICAgICBpZiAoZ2xvYmFsX25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZ2xvYmFsX25hbWUgPT0gTlVMTCkgewogICAgICAgICAgICAgZ2xvYmFsX25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19uYW1lX18pOwpAQCAtMzA4OSw3ICszMTM1LDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgZ2xvYmFsX25hbWUsIHNlbGYtPnByb3RvID49IDQpOworICAgIGRvdHRlZF9wYXRoID0gZ2V0X2RvdHRlZF9wYXRoKG1vZHVsZSwgZ2xvYmFsX25hbWUpOworICAgIGlmIChkb3R0ZWRfcGF0aCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIG1vZHVsZV9uYW1lID0gd2hpY2htb2R1bGUob2JqLCBkb3R0ZWRfcGF0aCk7CiAgICAgaWYgKG1vZHVsZV9uYW1lID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTMxMDgsNyArMzE1NywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgb2JqLCBtb2R1bGVfbmFtZSk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGNscyA9IGdldGF0dHJpYnV0ZShtb2R1bGUsIGdsb2JhbF9uYW1lLCBzZWxmLT5wcm90byA+PSA0KTsKKyAgICBsYXN0bmFtZSA9IFB5TGlzdF9HRVRfSVRFTShkb3R0ZWRfcGF0aCwgUHlMaXN0X0dFVF9TSVpFKGRvdHRlZF9wYXRoKS0xKTsKKyAgICBQeV9JTkNSRUYobGFzdG5hbWUpOworICAgIGNscyA9IGdldF9kZWVwX2F0dHJpYnV0ZShtb2R1bGUsIGRvdHRlZF9wYXRoLCAmcGFyZW50KTsKKyAgICBQeV9DTEVBUihkb3R0ZWRfcGF0aCk7CiAgICAgaWYgKGNscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+UGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgJVI6IGF0dHJpYnV0ZSBsb29rdXAgJVMgb24gJVMgZmFpbGVkIiwKQEAgLTMxOTUsNiArMzI0NywxMSBAQAogICAgIH0KICAgICBlbHNlIHsKICAgZ2VuX2dsb2JhbDoKKyAgICAgICAgaWYgKHBhcmVudCA9PSBtb2R1bGUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihsYXN0bmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZ2xvYmFsX25hbWUpOworICAgICAgICAgICAgZ2xvYmFsX25hbWUgPSBsYXN0bmFtZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewogICAgICAgICAgICAgY29uc3QgY2hhciBzdGFja19nbG9iYWxfb3AgPSBTVEFDS19HTE9CQUw7CiAKQEAgLTMyMDYsNiArMzI2MywxNSBAQAogICAgICAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsICZzdGFja19nbG9iYWxfb3AsIDEpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHBhcmVudCAhPSBtb2R1bGUpIHsKKyAgICAgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWR1Y2VfdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCIoTyhPTykpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+Z2V0YXR0ciwgcGFyZW50LCBsYXN0bmFtZSk7CisgICAgICAgICAgICBzdGF0dXMgPSBzYXZlX3JlZHVjZShzZWxmLCByZWR1Y2VfdmFsdWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlZHVjZV92YWx1ZSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR2VuZXJhdGUgYSBub3JtYWwgZ2xvYmFsIG9wY29kZSBpZiB3ZSBhcmUgdXNpbmcgYSBwaWNrbGUKICAgICAgICAgICAgICAgIHByb3RvY29sIDwgNCwgb3IgaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUKQEAgLTMyODQsNiArMzM1MCw5IEBACiAgICAgUHlfWERFQ1JFRihtb2R1bGVfbmFtZSk7CiAgICAgUHlfWERFQ1JFRihnbG9iYWxfbmFtZSk7CiAgICAgUHlfWERFQ1JFRihtb2R1bGUpOworICAgIFB5X1hERUNSRUYocGFyZW50KTsKKyAgICBQeV9YREVDUkVGKGRvdHRlZF9wYXRoKTsKKyAgICBQeV9YREVDUkVGKGxhc3RuYW1lKTsKIAogICAgIHJldHVybiBzdGF0dXM7CiB9CkBAIC0zNDYzLDIwICszNTMyLDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKLSAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwotICAgICAgICAgICAgdXNlX25ld29ial9leCA9IFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKAotICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgeworICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgICAgICAgICAgICAgIHVzZV9uZXdvYmpfZXggPSBQeVVuaWNvZGVfQ29tcGFyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF1c2VfbmV3b2JqX2V4KSB7CisgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CisgICAgICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9Db21wYXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19uZXdvYmpfXykpID09IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKLSAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZSgKLSAgICAgICAgICAgICAgICAgICAgbmFtZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19uZXdvYmpfXykpID09IDA7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKICAgICB9CiAKICAgICBpZiAodXNlX25ld29ial9leCkgewpAQCAtMzU2MSw3ICszNjI5LDcgQEAKICAgICAgICAgICAgICA+Pj4gcGlja2xlLmR1bXBzKDErMmopCiAgICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgICAgICAgLi4uCi0gICAgICAgICAgICAgUnVudGltZUVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZAorICAgICAgICAgICAgIFJlY3Vyc2lvbkVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZAogCiAgICAgICAgICAgIFJlbW92aW5nIHRoZSBjb21wbGV4IGNsYXNzIGZyb20gY29weXJlZy5kaXNwYXRjaF90YWJsZSBtYWRlIHRoZQogICAgICAgICAgICBfX3JlZHVjZV9leF9fKCkgbWV0aG9kIGVtaXQgYW5vdGhlciBjb21wbGV4IG9iamVjdDoKQEAgLTQwNDEsOCArNDEwOSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NmUyMjlmM2IxZjQzMzJmIGlucHV0PWI4Y2RlYjdlM2Y1ZWU2NzRdKi8KK19waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjVmMzEwNzhkYWIxN2ZiMCBpbnB1dD1iOGNkZWI3ZTNmNWVlNjc0XSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9pZCk7CiAgICAgX1B5X0lERU5USUZJRVIoZGlzcGF0Y2hfdGFibGUpOwpAQCAtNDU2OSw3ICs0NjM4LDcgQEAKIGNhbGNfYmluaW50KGNoYXIgKmJ5dGVzLCBpbnQgbmJ5dGVzKQogewogICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciAqKWJ5dGVzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBsb25nIHggPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG5ieXRlczsgaSsrKSB7CkBAIC02MjQ1LDggKzYzMTQsMTAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0Yzc3NDM3ZTA4OGUxODggaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLworX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlY2MwOGQ3ZjllZDQxZTMgaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLwogewogICAgIFB5T2JqZWN0ICpnbG9iYWw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXNfZGljdDsKQEAgLTY0NTcsOCArNjUyOCwxMCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1fcGlja2xlX1VucGlja2xlcl9fX2luaXRfX19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWVkMWQ4NGQzMTVmM2I1IGlucHV0PTMwYjRkYzllOTc2Yjg5MGNdKi8KK19waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUyYzhjZTc0OGVkYzU3YjAgaW5wdXQ9MzBiNGRjOWU5NzZiODkwY10qLwogewogICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfbG9hZCk7CiAKQEAgLTY4ODYsOCArNjk1OSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTYwNmU2MjZkNTUzODUwZCBpbnB1dD1lOWU1ZmRkNDhkZTkyZWFlXSovCitfcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkZTdkZmY4OWM0MDY4MTYgaW5wdXQ9ZTllNWZkZDQ4ZGU5MmVhZV0qLwogewogICAgIFBpY2tsZXJPYmplY3QgKnBpY2tsZXIgPSBfUGlja2xlcl9OZXcoKTsKIApAQCAtNjkzOSw4ICs3MDEzLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzdmMGRlZWZlNWI4OGVlIGlucHV0PTI5M2RiZWRhMTgxNTgwYjddKi8KK19waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhYTM4MGRiNTZmZTA3YjkgaW5wdXQ9MjkzZGJlZGExODE1ODBiN10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUGlja2xlck9iamVjdCAqcGlja2xlciA9IF9QaWNrbGVyX05ldygpOwpAQCAtNjk5OSw4ICs3MDc0LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTY4YzYxMzU2YzE3MjY1NCBpbnB1dD1kYTk3MzcyZTM4ZTUxMGE2XSovCitfcGlja2xlX2xvYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OThmMWM1N2NiMmI0ZWIxIGlucHV0PWRhOTczNzJlMzhlNTEwYTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFVucGlja2xlck9iamVjdCAqdW5waWNrbGVyID0gX1VucGlja2xlcl9OZXcoKTsKQEAgLTcwNTIsOCArNzEyOCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWRzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjM4NDVhZDExMGIyNTIyIGlucHV0PWY1N2YwZmRhYTJiNGNiOGJdKi8KK19waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjFlOWNkYjAxZTM2YTczNiBpbnB1dD1mNTdmMGZkYWEyYjRjYjhiXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBVbnBpY2tsZXJPYmplY3QgKnVucGlja2xlciA9IF9VbnBpY2tsZXJfTmV3KCk7CkBAIC03MTE1LDYgKzcxOTIsNyBAQAogICAgIFB5X1ZJU0lUKHN0LT5uYW1lX21hcHBpbmdfM3RvMik7CiAgICAgUHlfVklTSVQoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X1ZJU0lUKHN0LT5jb2RlY3NfZW5jb2RlKTsKKyAgICBQeV9WSVNJVChzdC0+Z2V0YXR0cik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggNDUyZDU5Mi4uYTMyN2ZjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTI2NCw3ICsyNjQsNyBAQAogewogICAgIGludCBmZF9kaXJfZmQ7CiAKLSAgICBmZF9kaXJfZmQgPSBfUHlfb3BlbihGRF9ESVIsIE9fUkRPTkxZKTsKKyAgICBmZF9kaXJfZmQgPSBfUHlfb3Blbl9ub3JhaXNlKEZEX0RJUiwgT19SRE9OTFkpOwogICAgIGlmIChmZF9kaXJfZmQgPT0gLTEpIHsKICAgICAgICAgLyogTm8gd2F5IHRvIGdldCBhIGxpc3Qgb2Ygb3BlbiBmZHMuICovCiAgICAgICAgIF9jbG9zZV9mZHNfYnlfYnJ1dGVfZm9yY2Uoc3RhcnRfZmQsIHB5X2Zkc190b19rZWVwKTsKQEAgLTM5Miw3ICszOTIsNyBAQAogICAgICAgICAgICBQeU9iamVjdCAqcHJlZXhlY19mbiwKICAgICAgICAgICAgUHlPYmplY3QgKnByZWV4ZWNfZm5fYXJnc190dXBsZSkKIHsKLSAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHVudXNlZCwgcmVhY2hlZF9wcmVleGVjID0gMDsKKyAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHJlYWNoZWRfcHJlZXhlYyA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBjb25zdCBjaGFyKiBlcnJfbXNnID0gIiI7CiAgICAgLyogQnVmZmVyIGxhcmdlIGVub3VnaCB0byBob2xkIGEgaGV4IGludGVnZXIuICBXZSBjYW4ndCBtYWxsb2MuICovCkBAIC01MDYsMjggKzUwNiwyOSBAQAogICAgIHNhdmVkX2Vycm5vID0gZXJybm87CiAgICAgLyogUmVwb3J0IHRoZSBwb3NpeCBlcnJvciB0byBvdXIgcGFyZW50IHByb2Nlc3MuICovCiAgICAgLyogV2UgaWdub3JlIGFsbCB3cml0ZSgpIHJldHVybiB2YWx1ZXMgYXMgdGhlIHRvdGFsIHNpemUgb2Ygb3VyIHdyaXRlcyBpcwotICAgICAqIGxlc3MgdGhhbiBQSVBFQlVGIGFuZCB3ZSBjYW5ub3QgZG8gYW55dGhpbmcgYWJvdXQgYW4gZXJyb3IgYW55d2F5cy4gKi8KKyAgICAgICBsZXNzIHRoYW4gUElQRUJVRiBhbmQgd2UgY2Fubm90IGRvIGFueXRoaW5nIGFib3V0IGFuIGVycm9yIGFueXdheXMuCisgICAgICAgVXNlIF9QeV93cml0ZV9ub3JhaXNlKCkgdG8gcmV0cnkgd3JpdGUoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICAgICAgc2lnbmFsIChmYWlscyB3aXRoIEVJTlRSKS4gKi8KICAgICBpZiAoc2F2ZWRfZXJybm8pIHsKICAgICAgICAgY2hhciAqY3VyOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiT1NFcnJvcjoiLCA4KTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIk9TRXJyb3I6IiwgOCk7CiAgICAgICAgIGN1ciA9IGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pOwogICAgICAgICB3aGlsZSAoc2F2ZWRfZXJybm8gIT0gMCAmJiBjdXIgPiBoZXhfZXJybm8pIHsKLSAgICAgICAgICAgICotLWN1ciA9ICIwMTIzNDU2Nzg5QUJDREVGIltzYXZlZF9lcnJubyAlIDE2XTsKKyAgICAgICAgICAgICotLWN1ciA9IFB5X2hleGRpZ2l0c1tzYXZlZF9lcnJubyAlIDE2XTsKICAgICAgICAgICAgIHNhdmVkX2Vycm5vIC89IDE2OwogICAgICAgICB9Ci0gICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsIGN1ciwgaGV4X2Vycm5vICsgc2l6ZW9mKGhleF9lcnJubykgLSBjdXIpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiOiIsIDEpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBjdXIsIGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pIC0gY3VyKTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIjoiLCAxKTsKICAgICAgICAgaWYgKCFyZWFjaGVkX3ByZWV4ZWMpIHsKICAgICAgICAgICAgIC8qIEluZGljYXRlIHRvIHRoZSBwYXJlbnQgdGhhdCB0aGUgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGV4ZWMoKS4gKi8KLSAgICAgICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKKyAgICAgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKICAgICAgICAgfQogICAgICAgICAvKiBXZSBjYW4ndCBjYWxsIHN0cmVycm9yKHNhdmVkX2Vycm5vKS4gIEl0IGlzIG5vdCBhc3luYyBzaWduYWwgc2FmZS4KICAgICAgICAgICogVGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbG9vayB0aGUgZXJyb3IgbWVzc2FnZSB1cC4gKi8KICAgICB9IGVsc2UgewotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOwogICAgIH0KLSAgICBpZiAodW51c2VkKSByZXR1cm47ICAvKiBzaWxseT8geWVzISBhdm9pZHMgZ2NjIGNvbXBpbGVyIHdhcm5pbmcuICovCiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCA0MTZlMjY2Li45NWFkNGE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtNjksMTcgKzY5LDIxIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgIC8qIGZvciBzZWVkaW5nIHRvIGN1cnJlbnQgdGltZSAqLwogCisjaWZuZGVmIFBZX1VJTlQzMl9UCisjICBlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKKyNlbmRpZgorCiAvKiBQZXJpb2QgcGFyYW1ldGVycyAtLSBUaGVzZSBhcmUgYWxsIG1hZ2ljLiAgRG9uJ3QgY2hhbmdlLiAqLwogI2RlZmluZSBOIDYyNAogI2RlZmluZSBNIDM5NwotI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqLwotI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovCi0jZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLworI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVSAgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqLworI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVICAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovCisjZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlUgIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIHVuc2lnbmVkIGxvbmcgc3RhdGVbTl07CiAgICAgaW50IGluZGV4OworICAgIFBZX1VJTlQzMl9UIHN0YXRlW05dOwogfSBSYW5kb21PYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUmFuZG9tX1R5cGU7CkBAIC05MSwxMyArOTUsMTMgQEAKIAogCiAvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZworc3RhdGljIFBZX1VJTlQzMl9UCiBnZW5yYW5kX2ludDMyKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICB1bnNpZ25lZCBsb25nIHk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07CisgICAgUFlfVUlOVDMyX1QgeTsKKyAgICBzdGF0aWMgUFlfVUlOVDMyX1QgbWFnMDFbMl09ezB4MFUsIE1BVFJJWF9BfTsKICAgICAvKiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovCi0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpZiAoc2VsZi0+aW5kZXggPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCkBAIC0xMDUsMjIgKzEwOSwyMiBAQAogCiAgICAgICAgIGZvciAoa2s9MDtrazxOLU07a2srKykgewogICAgICAgICAgICAgeSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spOwotICAgICAgICAgICAgbXRba2tdID0gbXRba2srTV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVdOwogICAgICAgICB9CiAgICAgICAgIGZvciAoO2trPE4tMTtraysrKSB7CiAgICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7Ci0gICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVXTsKICAgICAgICAgfQogICAgICAgICB5ID0gKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spOwotICAgICAgICBtdFtOLTFdID0gbXRbTS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgbXRbTi0xXSA9IG10W00tMV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVXTsKIAogICAgICAgICBzZWxmLT5pbmRleCA9IDA7CiAgICAgfQogCiAgICAgeSA9IG10W3NlbGYtPmluZGV4KytdOwogICAgIHkgXj0gKHkgPj4gMTEpOwotICAgIHkgXj0gKHkgPDwgNykgJiAweDlkMmM1NjgwVUw7Ci0gICAgeSBePSAoeSA8PCAxNSkgJiAweGVmYzYwMDAwVUw7CisgICAgeSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODBVOworICAgIHkgXj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMFU7CiAgICAgeSBePSAoeSA+PiAxOCk7CiAgICAgcmV0dXJuIHk7CiB9CkBAIC0xMzcsMjggKzE0MSwyNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9yYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIHVuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CisgICAgUFlfVUlOVDMyX1QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKSk7CiB9CiAKIC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovCiBzdGF0aWMgdm9pZAotaW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBzKQoraW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgcykKIHsKICAgICBpbnQgbXRpOwotICAgIHVuc2lnbmVkIGxvbmcgKm10OworICAgIFBZX1VJTlQzMl9UICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7Ci0gICAgbXRbMF09IHMgJiAweGZmZmZmZmZmVUw7CisgICAgbXRbMF09IHM7CiAgICAgZm9yIChtdGk9MTsgbXRpPE47IG10aSsrKSB7CiAgICAgICAgIG10W210aV0gPQotICAgICAgICAoMTgxMjQzMzI1M1VMICogKG10W210aS0xXSBeIChtdFttdGktMV0gPj4gMzApKSArIG10aSk7CisgICAgICAgICgxODEyNDMzMjUzVSAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+IDMwKSkgKyBtdGkpOwogICAgICAgICAvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQLjEwNiBmb3IgbXVsdGlwbGllci4gKi8KICAgICAgICAgLyogSW4gdGhlIHByZXZpb3VzIHZlcnNpb25zLCBNU0JzIG9mIHRoZSBzZWVkIGFmZmVjdCAgICovCiAgICAgICAgIC8qIG9ubHkgTVNCcyBvZiB0aGUgYXJyYXkgbXRbXS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgIC8qIDIwMDIvMDEvMDkgbW9kaWZpZWQgYnkgTWFrb3RvIE1hdHN1bW90byAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOwotICAgICAgICAvKiBmb3IgPjMyIGJpdCBtYWNoaW5lcyAqLwogICAgIH0KICAgICBzZWxmLT5pbmRleCA9IG10aTsKICAgICByZXR1cm47CkBAIC0xNjgsMzIgKzE3MCwzMCBAQAogLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBpbml0aWFsaXppbmcga2V5cyAqLwogLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCiBzdGF0aWMgUHlPYmplY3QgKgotaW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCitpbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCiB7CiAgICAgc2l6ZV90IGksIGosIGs7ICAgICAgIC8qIHdhcyBzaWduZWQgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIFJESCAxMi8xNi8yMDAyICovCi0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKLSAgICBpbml0X2dlbnJhbmQoc2VsZiwgMTk2NTAyMThVTCk7CisgICAgaW5pdF9nZW5yYW5kKHNlbGYsIDE5NjUwMjE4VSk7CiAgICAgaT0xOyBqPTA7CiAgICAgayA9IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7CiAgICAgZm9yICg7IGs7IGstLSkgewotICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNjY0NTI1VUwpKQotICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKHVuc2lnbmVkIGxvbmcpajsgLyogbm9uIGxpbmVhciAqLwotICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovCisgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVKSkKKyAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArIChQWV9VSU5UMzJfVClqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsgaisrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOwogICAgIH0KICAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKLSAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVVMKSkKLSAgICAgICAgICAgICAgICAgLSAodW5zaWduZWQgbG9uZylpOyAvKiBub24gbGluZWFyICovCi0gICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi8KKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVUpKQorICAgICAgICAgICAgICAgICAtIChQWV9VSU5UMzJfVClpOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICB9CiAKLSAgICBtdFswXSA9IDB4ODAwMDAwMDBVTDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8KKyAgICBtdFswXSA9IDB4ODAwMDAwMDBVOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTIwOCw5ICsyMDgsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOyAgICAgICAgICAgIC8qIGd1aWx0eSB1bnRpbCBwcm92ZWQgaW5ub2NlbnQgKi8KICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICprZXlfYXNfYnl0ZXMgPSBOVUxMOwotICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkLCBpOworICAgIFBZX1VJTlQzMl9UICprZXkgPSBOVUxMOworICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkOwogICAgIGludCByZXM7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAKQEAgLTIyMSw3ICsyMjAsNyBAQAogICAgICAgICB0aW1lX3Qgbm93OwogCiAgICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAodW5zaWduZWQgbG9uZylub3cpOworICAgICAgICBpbml0X2dlbnJhbmQoc2VsZiwgKFBZX1VJTlQzMl9UKW5vdyk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQpAQCAtMjQ5LDM1ICsyNDgsMzEgQEAKICAgICBrZXl1c2VkID0gYml0cyA9PSAwID8gMSA6IChiaXRzIC0gMSkgLyAzMiArIDE7CiAKICAgICAvKiBDb252ZXJ0IHNlZWQgdG8gYnl0ZSBzZXF1ZW5jZS4gKi8KLSAgICBrZXlfYXNfYnl0ZXMgPSAodW5zaWduZWQgY2hhciAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKLSAgICBpZiAoa2V5X2FzX2J5dGVzID09IE5VTEwpIHsKKyAgICBrZXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CisgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9hc19ieXRlcywga2V5dXNlZCAqIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAgLyogbGl0dGxlLWVuZGlhbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilrZXksIGtleXVzZWQgKiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTElUVExFX0VORElBTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOyAvKiB1bnNpZ25lZCAqLwogICAgIGlmIChyZXMgPT0gLTEpIHsKLSAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOworICAgICAgICBQeU1lbV9GcmVlKGtleSk7CiAgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAKLSAgICAvKiBGaWxsIGFycmF5IG9mIHVuc2lnbmVkIGxvbmdzIGZyb20gYnl0ZSBzZXF1ZW5jZS4gKi8KLSAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX01hbGxvYyhzaXplb2YodW5zaWduZWQgbG9uZykgKiBrZXl1c2VkKTsKLSAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOwotICAgICAgICBnb3RvIERvbmU7CisjaWYgUFlfQklHX0VORElBTgorICAgIHsKKyAgICAgICAgc2l6ZV90IGksIGo7CisgICAgICAgIC8qIFJldmVyc2UgYW4gYXJyYXkuICovCisgICAgICAgIGZvciAoaSA9IDAsIGogPSBrZXl1c2VkIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7CisgICAgICAgICAgICBQWV9VSU5UMzJfVCB0bXAgPSBrZXlbaV07CisgICAgICAgICAgICBrZXlbaV0gPSBrZXlbal07CisgICAgICAgICAgICBrZXlbal0gPSB0bXA7CisgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGtleXVzZWQ7IGkrKykgewotICAgICAgICBrZXlbaV0gPQotICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKWtleV9hc19ieXRlc1s0KmkgKyAwXSA8PCAwKSArCi0gICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpa2V5X2FzX2J5dGVzWzQqaSArIDFdIDw8IDgpICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgMl0gPDwgMTYpICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgM10gPDwgMjQpOwotICAgIH0KLSAgICBQeU1lbV9GcmVlKGtleV9hc19ieXRlcyk7CisjZW5kaWYKICAgICByZXN1bHQgPSBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwga2V5dXNlZCk7CiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CkBAIC0zMzQsNyArMzI5LDcgQEAKICAgICAgICAgZWxlbWVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CiAgICAgICAgIGlmIChlbGVtZW50ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSBlbGVtZW50ICYgMHhmZmZmZmZmZlVMOyAvKiBNYWtlIHN1cmUgd2UgZ2V0IHNhbmUgc3RhdGUgKi8KKyAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAoUFlfVUlOVDMyX1QpZWxlbWVudDsKICAgICB9CiAKICAgICBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwpAQCAtMzUzLDkgKzM0OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGssIGksIGJ5dGVzOwotICAgIHVuc2lnbmVkIGxvbmcgcjsKLSAgICB1bnNpZ25lZCBjaGFyICpieXRlYXJyYXk7CisgICAgaW50IGssIGksIHdvcmRzOworICAgIFBZX1VJTlQzMl9UIHI7CisgICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldHJhbmRiaXRzIiwgJmspKQpAQCAtMzcwLDI3ICszNjUsMzAgQEAKICAgICBpZiAoayA8PSAzMikgIC8qIEZhc3QgcGF0aCAqLwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKLSAgICBieXRlcyA9ICgoayAtIDEpIC8gMzIgKyAxKSAqIDQ7Ci0gICAgYnl0ZWFycmF5ID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoYnl0ZXMpOwotICAgIGlmIChieXRlYXJyYXkgPT0gTlVMTCkgeworICAgIHdvcmRzID0gKGsgLSAxKSAvIDMyICsgMTsKKyAgICB3b3JkYXJyYXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKKyAgICBpZiAod29yZGFycmF5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogRmlsbC1vdXQgd2hvbGUgd29yZHMsIGJ5dGUtYnktYnl0ZSB0byBhdm9pZCBlbmRpYW5uZXNzIGlzc3VlcyAqLwotICAgIGZvciAoaT0wIDsgaTxieXRlcyA7IGkrPTQsIGstPTMyKSB7CisgICAgLyogRmlsbC1vdXQgYml0cyBvZiBsb25nIGludGVnZXIsIGJ5IDMyLWJpdCB3b3JkcywgZnJvbSBsZWFzdCBzaWduaWZpY2FudAorICAgICAgIHRvIG1vc3Qgc2lnbmlmaWNhbnQuICovCisjaWYgUFlfTElUVExFX0VORElBTgorICAgIGZvciAoaSA9IDA7IGkgPCB3b3JkczsgaSsrLCBrIC09IDMyKQorI2Vsc2UKKyAgICBmb3IgKGkgPSB3b3JkcyAtIDE7IGkgPj0gMDsgaS0tLCBrIC09IDMyKQorI2VuZGlmCisgICAgewogICAgICAgICByID0gZ2VucmFuZF9pbnQzMihzZWxmKTsKICAgICAgICAgaWYgKGsgPCAzMikKLSAgICAgICAgICAgIHIgPj49ICgzMiAtIGspOwotICAgICAgICBieXRlYXJyYXlbaSswXSA9ICh1bnNpZ25lZCBjaGFyKXI7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzFdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gOCk7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzJdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gMTYpOwotICAgICAgICBieXRlYXJyYXlbaSszXSA9ICh1bnNpZ25lZCBjaGFyKShyID4+IDI0KTsKKyAgICAgICAgICAgIHIgPj49ICgzMiAtIGspOyAgLyogRHJvcCBsZWFzdCBzaWduaWZpY2FudCBiaXRzICovCisgICAgICAgIHdvcmRhcnJheVtpXSA9IHI7CiAgICAgfQogCi0gICAgLyogbGl0dGxlIGVuZGlhbiBvcmRlciB0byBtYXRjaCBieXRlYXJyYXkgYXNzaWdubWVudCBvcmRlciAqLwotICAgIHJlc3VsdCA9IF9QeUxvbmdfRnJvbUJ5dGVBcnJheShieXRlYXJyYXksIGJ5dGVzLCAxLCAwKTsKLSAgICBQeU1lbV9GcmVlKGJ5dGVhcnJheSk7CisgICAgcmVzdWx0ID0gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCh1bnNpZ25lZCBjaGFyICopd29yZGFycmF5LCB3b3JkcyAqIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sIDAgLyogdW5zaWduZWQgKi8pOworICAgIFB5TWVtX0ZyZWUod29yZGFycmF5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zY3Byb3h5LmMgYi9Nb2R1bGVzL19zY3Byb3h5LmMKaW5kZXggM2IyYTM4ZS4uNjZiNmUzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc2Nwcm94eS5jCisrKyBiL01vZHVsZXMvX3NjcHJveHkuYwpAQCAtMjQ5LDcgKzI0OSw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1QeU9iamVjdCoKK1B5TU9ESU5JVF9GVU5DCiBQeUluaXRfX3NjcHJveHkodm9pZCkKIHsKICAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2RfbW9kdWxlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IGQzOTAzMjguLmEwOGViZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtMTI0MSw2ICsxMjQxLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhNT0RVTEVfTkFNRSAiLkNvbm5lY3Rpb24oKSIsIGt3YXJncykpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiwgJnNxbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCAwYzk3MzRjLi5mYmQ5MDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgKiBmaXJzdCBnZXQgY2FsbGVkIHdpdGggY291bnQ9MD8gKi8KICAgICBkb3VibGUgdGltZW91dF9zdGFydGVkOwogCi0gICAgLyogTm9uZSBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgUHlTdHJpbmcgd2l0aCB0aGUgaXNvbGF0aW9uIGxldmVsICovCisgICAgLyogTm9uZSBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgUHlVbmljb2RlIHdpdGggdGhlIGlzb2xhdGlvbiBsZXZlbCAqLwogICAgIFB5T2JqZWN0KiBpc29sYXRpb25fbGV2ZWw7CiAKICAgICAvKiBOVUxMIGZvciBhdXRvY29tbWl0LCBvdGhlcndpc2UgYSBzdHJpbmcgd2l0aCB0aGUgQkVHSU4gc3RhdGVtZW50OyB3aWxsIGJlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZGI5NmIwMi4uYzE1OTljMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtNDYsNyArNDYsNyBAQAogCiAgICAgZHN0ID0gYnVmOwogICAgICpkc3QgPSAwOwotICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIGRzdCAtIGJ1ZiA8IHNpemVvZihidWYpIC0gMikgeworICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIChkc3QgLSBidWYpIDwgKChQeV9zc2l6ZV90KXNpemVvZihidWYpIC0gMikpIHsKICAgICAgICAgKmRzdCsrID0gUHlfVE9MT1dFUigqc3JjKyspOwogICAgIH0KIApAQCAtMzM0LDExICszMzQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluIGRlYnVnIG1vZGUsIHR5cGVfY2FsbCgpIGZhaWxzIHdpdGggYW4gYXNzZXJ0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBpZiBhbiBleGNlcHRpb24gaXMgc2V0IHdoZW4gaXQgaXMgY2FsbGVkICovCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSAiPHVua25vd24gY29sdW1uIG5hbWU+IjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5oIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKaW5kZXggM2E5OTQ0Zi4uNjk0MTcxNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG8sIFB5T2JqZWN0ICphbHQpOwogCiBleHRlcm4gUHlPYmplY3QgKgotICAgIHB5c3FsaXRlX2FkYXB0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QgKmFyZ3MpOyAgIAorICAgIHB5c3FsaXRlX2FkYXB0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwogI2RlZmluZSBweXNxbGl0ZV9hZGFwdF9kb2MgXAogICAgICJhZGFwdChvYmosIHByb3RvY29sLCBhbHRlcm5hdGUpIC0+IGFkYXB0IG9iaiB0byBnaXZlbiBwcm90b2NvbC4gTm9uLXN0YW5kYXJkLiIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCmluZGV4IGVlNzM0NDYuLjA3NTg0ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKQEAgLTE0Miw4ICsxNDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpZHgpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2xpY2VzIG5vdCBpbXBsZW1lbnRlZCwgeWV0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlbShzZWxmLT5kYXRhLCBpZHgpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJJbmRleCBtdXN0IGJlIGludCBvciBzdHJpbmciKTsKQEAgLTE1OSw3ICsxNTgsNyBAQAogUHlPYmplY3QqIHB5c3FsaXRlX3Jvd19rZXlzKHB5c3FsaXRlX1Jvdyogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QqIGxpc3Q7Ci0gICAgaW50IG5pdGVtcywgaTsKKyAgICBQeV9zc2l6ZV90IG5pdGVtcywgaTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICghbGlzdCkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCBkNmZjZGExLi45NTdjY2JjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtOTcsNDggKzk3LDI1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogc2VhcmNoIGVuZ2luZSBzdGF0ZSAqLwogCi0vKiBkZWZhdWx0IGNoYXJhY3RlciBwcmVkaWNhdGVzIChydW4gc3JlX2NoYXJzLnB5IHRvIHJlZ2VuZXJhdGUgdGFibGVzKSAqLwotCi0jZGVmaW5lIFNSRV9ESUdJVF9NQVNLIDEKLSNkZWZpbmUgU1JFX1NQQUNFX01BU0sgMgotI2RlZmluZSBTUkVfTElORUJSRUFLX01BU0sgNAotI2RlZmluZSBTUkVfQUxOVU1fTUFTSyA4Ci0jZGVmaW5lIFNSRV9XT1JEX01BU0sgMTYKLQotLyogRklYTUU6IHRoaXMgYXNzdW1lcyBBU0NJSS4gIGNyZWF0ZSB0YWJsZXMgaW4gaW5pdF9zcmUoKSBpbnN0ZWFkICovCi0KLXN0YXRpYyBjaGFyIHNyZV9jaGFyX2luZm9bMTI4XSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgNiwgMiwKLTIsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsCi0wLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsCi0yNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAotMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsCi0wLCAwLCAxNiwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAotMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgMCwgMCB9OwotCi1zdGF0aWMgY2hhciBzcmVfY2hhcl9sb3dlclsxMjhdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LAotMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LAotMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLAotNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLAotNjEsIDYyLCA2MywgNjQsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LAotMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsCi0xMjIsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsCi0xMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKLTEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3IH07Ci0KICNkZWZpbmUgU1JFX0lTX0RJR0lUKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX0RJR0lUX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiBQeV9JU0RJR0lUKGNoKSkKICNkZWZpbmUgU1JFX0lTX1NQQUNFKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX1NQQUNFX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiBQeV9JU1NQQUNFKGNoKSkKICNkZWZpbmUgU1JFX0lTX0xJTkVCUkVBSyhjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9MSU5FQlJFQUtfTUFTSykgOiAwKQorICAgICgoY2gpID09ICdcbicpCiAjZGVmaW5lIFNSRV9JU19BTE5VTShjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9BTE5VTV9NQVNLKSA6IDApCisgICAgKChjaCkgPCAxMjggJiYgUHlfSVNBTE5VTShjaCkpCiAjZGVmaW5lIFNSRV9JU19XT1JEKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX1dPUkRfTUFTSykgOiAwKQorICAgICgoY2gpIDwgMTI4ICYmIChQeV9JU0FMTlVNKGNoKSB8fCAoY2gpID09ICdfJykpCiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX2xvd2VyKHVuc2lnbmVkIGludCBjaCkKIHsKLSAgICByZXR1cm4gKChjaCkgPCAxMjggPyAodW5zaWduZWQgaW50KXNyZV9jaGFyX2xvd2VyW2NoXSA6IGNoKTsKKyAgICByZXR1cm4gKChjaCkgPCAxMjggPyBQeV9UT0xPV0VSKGNoKSA6IGNoKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBzcmVfdXBwZXIodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAoKGNoKSA8IDEyOCA/IFB5X1RPVVBQRVIoY2gpIDogY2gpOwogfQogCiAvKiBsb2NhbGUtc3BlY2lmaWMgY2hhcmFjdGVyIHByZWRpY2F0ZXMgKi8KQEAgLTE1Miw2ICsxMjksMTEgQEAKICAgICByZXR1cm4gKChjaCkgPCAyNTYgPyAodW5zaWduZWQgaW50KXRvbG93ZXIoKGNoKSkgOiBjaCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyX2xvY2FsZSh1bnNpZ25lZCBpbnQgY2gpCit7CisgICAgcmV0dXJuICgoY2gpIDwgMjU2ID8gKHVuc2lnbmVkIGludCl0b3VwcGVyKChjaCkpIDogY2gpOworfQorCiAvKiB1bmljb2RlLXNwZWNpZmljIGNoYXJhY3RlciBwcmVkaWNhdGVzICovCiAKICNkZWZpbmUgU1JFX1VOSV9JU19ESUdJVChjaCkgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoY2gpCkBAIC0xNjUsNiArMTQ3LDExIEBACiAgICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIFB5X1VOSUNPREVfVE9MT1dFUihjaCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyX3VuaWNvZGUodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAodW5zaWduZWQgaW50KSBQeV9VTklDT0RFX1RPVVBQRVIoY2gpOworfQorCiBMT0NBTChpbnQpCiBzcmVfY2F0ZWdvcnkoU1JFX0NPREUgY2F0ZWdvcnksIHVuc2lnbmVkIGludCBjaCkKIHsKQEAgLTI3MSwyNSArMjU4LDUwIEBACiAKIC8qIHNlZSBzcmUuaCBmb3Igb2JqZWN0IGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqLCBTUkVfU1RBVEUqLCBQeV9zc2l6ZV90KTsKLXN0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqIGt3KTsKK3N0YXRpYyBQeU9iamVjdCAqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKiwgUHlPYmplY3QgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCk7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zcmVfY29kZXNpemUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfc3JlCitjbGFzcyBfc3JlLlNSRV9QYXR0ZXJuICJQYXR0ZXJuT2JqZWN0ICoiICImUGF0dGVybl9UeXBlIgorY2xhc3MgX3NyZS5TUkVfTWF0Y2ggIk1hdGNoT2JqZWN0ICoiICImTWF0Y2hfVHlwZSIKK2NsYXNzIF9zcmUuU1JFX1NjYW5uZXIgIlNjYW5uZXJPYmplY3QgKiIgIiZTY2FubmVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMDIzMGVjMTlhMGRlYWM4XSovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUGF0dGVybl9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBNYXRjaF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTY2FubmVyX1R5cGU7CisKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuZ2V0Y29kZXNpemUgLT4gaW50CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0Y29kZXNpemVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5NGYxZjk4ZWY0ODgzZTUgaW5wdXQ9YmQ2ZjZlY2Y0OTE2YmIyYl0qLwogewotICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChzaXplb2YoU1JFX0NPREUpKTsKKyAgICByZXR1cm4gc2l6ZW9mKFNSRV9DT0RFKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXNyZV9nZXRsb3dlcihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLmdldGxvd2VyIC0+IGludAorCisgICAgY2hhcmFjdGVyOiBpbnQKKyAgICBmbGFnczogaW50CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0bG93ZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY2hhcmFjdGVyLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMzYxNmFlMmE0YzMwNiBpbnB1dD0wODdkMmYxYzQ0YmJjYTZmXSovCiB7Ci0gICAgaW50IGNoYXJhY3RlciwgZmxhZ3M7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZjaGFyYWN0ZXIsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfbG9jYWxlKGNoYXJhY3RlcikpOworICAgICAgICByZXR1cm4gc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX3VuaWNvZGUoY2hhcmFjdGVyKSk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIHJldHVybiBzcmVfbG93ZXJfdW5pY29kZShjaGFyYWN0ZXIpOworICAgIHJldHVybiBzcmVfbG93ZXIoY2hhcmFjdGVyKTsKIH0KIAogTE9DQUwodm9pZCkKQEAgLTMyOCw3ICszNDAsNyBAQAogCiAgICAgLyogZ2V0IHBvaW50ZXIgdG8gYnl0ZSBzdHJpbmcgYnVmZmVyICovCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdHJpbmcsIHZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgc3RyaW5nIG9yIGJ1ZmZlciIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgc3RyaW5nIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzU3LDYgKzM2OSwxMSBAQAogCiAgICAgbWVtc2V0KHN0YXRlLCAwLCBzaXplb2YoU1JFX1NUQVRFKSk7CiAKKyAgICBzdGF0ZS0+bWFyayA9IFB5TWVtX05ldyh2b2lkICosIHBhdHRlcm4tPmdyb3VwcyAqIDIpOworICAgIGlmICghc3RhdGUtPm1hcmspIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQogICAgIHN0YXRlLT5sYXN0bWFyayA9IC0xOwogICAgIHN0YXRlLT5sYXN0aW5kZXggPSAtMTsKIApAQCAtMzY3LDEyICszODQsMTIgQEAKIAogICAgIGlmIChpc2J5dGVzICYmIHBhdHRlcm4tPmlzYnl0ZXMgPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKCFpc2J5dGVzICYmIHBhdHRlcm4tPmlzYnl0ZXMgPiAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCB1c2UgYSBieXRlcyBwYXR0ZXJuIG9uIGEgc3RyaW5nLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIApAQCAtNDAwLDE1ICs0MTcsMjMgQEAKICAgICBzdGF0ZS0+cG9zID0gc3RhcnQ7CiAgICAgc3RhdGUtPmVuZHBvcyA9IGVuZDsKIAotICAgIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKKyAgICBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKLSAgICBlbHNlIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCisgICAgICAgIHN0YXRlLT51cHBlciA9IHNyZV91cHBlcl9sb2NhbGU7CisgICAgfQorICAgIGVsc2UgaWYgKHBhdHRlcm4tPmZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgewogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfdW5pY29kZTsKLSAgICBlbHNlCisgICAgICAgIHN0YXRlLT51cHBlciA9IHNyZV91cHBlcl91bmljb2RlOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyOworICAgICAgICBzdGF0ZS0+dXBwZXIgPSBzcmVfdXBwZXI7CisgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZzsKICAgZXJyOgorICAgIFB5TWVtX0RlbChzdGF0ZS0+bWFyayk7CisgICAgc3RhdGUtPm1hcmsgPSBOVUxMOwogICAgIGlmIChzdGF0ZS0+YnVmZmVyLmJ1ZikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3RhdGUtPmJ1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC00MjEsNiArNDQ2LDggQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3RhdGUtPmJ1ZmZlcik7CiAgICAgUHlfWERFQ1JFRihzdGF0ZS0+c3RyaW5nKTsKICAgICBkYXRhX3N0YWNrX2RlYWxsb2Moc3RhdGUpOworICAgIFB5TWVtX0RlbChzdGF0ZS0+bWFyayk7CisgICAgc3RhdGUtPm1hcmsgPSBOVUxMOwogfQogCiAvKiBjYWxjdWxhdGUgb2Zmc2V0IGZyb20gc3RhcnQgb2Ygc3RyaW5nICovCkBAIC00NzMsOCArNTAwLDkgQEAKIHsKICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgIGNhc2UgU1JFX0VSUk9SX1JFQ1VSU0lPTl9MSU1JVDoKKyAgICAgICAgLyogVGhpcyBlcnJvciBjb2RlIHNlZW1zIHRvIGJlIHVudXNlZC4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgUHlFeGNfUmVjdXJzaW9uRXJyb3IsCiAgICAgICAgICAgICAibWF4aW11bSByZWN1cnNpb24gbGltaXQgZXhjZWVkZWQiCiAgICAgICAgICAgICApOwogICAgICAgICBicmVhazsKQEAgLTU1MCwyNiArNTc4LDMyIEBACiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5tYXRjaAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorICAgICoKKyAgICBwYXR0ZXJuOiBvYmplY3QgPSBOVUxMCisKK01hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcGF0dGVybl9tYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NGI0YjFkYTNiYjJkODRlIGlucHV0PTNkMDc5YWE5OTk3OWI4MWRdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHBvcyA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOworICAgIFB5T2JqZWN0ICptYXRjaDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxPbm4kTzptYXRjaCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgcGF0dGVybiwgInBhdHRlcm4iKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIChQYXR0ZXJuT2JqZWN0ICopc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgKFBhdHRlcm5PYmplY3QgKilzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKQEAgLTU3OSwzNCArNjEzLDQzIEBACiAgICAgc3RhdHVzID0gc3JlX21hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCAwKTsKIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAorICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOwogICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QgKilwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIHN0YXR1cyk7CisgICAgcmV0dXJuIG1hdGNoOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5mdWxsbWF0Y2gKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgcGF0dGVybjogb2JqZWN0ID0gTlVMTAorCitNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmcKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYzk4YmM1ZGE3NDRlYTk0IGlucHV0PWQ0MjI4NjA2Y2MxMjU4MGZdKi8KIHsKICAgICBTUkVfU1RBVEUgc3RhdGU7CiAgICAgUHlfc3NpemVfdCBzdGF0dXM7CisgICAgUHlPYmplY3QgKm1hdGNoOwogCi0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEwsICpzdHJpbmcyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T25uJE86ZnVsbG1hdGNoIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZzdGFydCwgJmVuZCwgJnN0cmluZzIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzdHJpbmcyLCAicGF0dGVybiIpOworICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBwYXR0ZXJuLCAicGF0dGVybiIpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHN0YXJ0LCBlbmQpOwotICAgIGlmICghc3RyaW5nKQorICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwpAQCAtNjE2LDM0ICs2NTksNDUgQEAKICAgICBzdGF0dXMgPSBzcmVfbWF0Y2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIDEpOwogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCisgICAgbWF0Y2ggPSBwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIHN0YXR1cyk7CiAgICAgc3RhdGVfZmluaSgmc3RhdGUpOwotCi0gICAgcmV0dXJuIHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKKyAgICByZXR1cm4gbWF0Y2g7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLnNlYXJjaAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorICAgICoKKyAgICBwYXR0ZXJuOiBvYmplY3QgPSBOVUxMCisKK1NjYW4gdGhyb3VnaCBzdHJpbmcgbG9va2luZyBmb3IgYSBtYXRjaCwgYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgbWF0Y2ggb2JqZWN0IGluc3RhbmNlLgorCitSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzgzOTM5NGExOGU1ZWE0ZiBpbnB1dD1kYWI0MjcyMGY0YmUzYTRiXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOworICAgIFB5T2JqZWN0ICptYXRjaDsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9ubiRPOnNlYXJjaCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInBhdHRlcm4iKTsKKyAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgcGF0dGVybiwgInBhdHRlcm4iKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0hcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CkBAIC02NTIsMTIgKzcwNiwxNCBAQAogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwogCi0gICAgc3RhdGVfZmluaSgmc3RhdGUpOwotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgc3RhdGVfZmluaSgmc3RhdGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICByZXR1cm4gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOworICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOworICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKKyAgICByZXR1cm4gbWF0Y2g7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTcwNywyOCArNzYzLDM0IEBACiB9CiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9maW5kYWxsKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLmZpbmRhbGwKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgc291cmNlOiBvYmplY3QgPSBOVUxMCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTEyOTU0OThiMzAwNjM5ZCBpbnB1dD1kZjY4ODM1NWMwNTZiOWRlXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5T2JqZWN0KiBsaXN0OwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgaSwgYiwgZTsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJzb3VyY2UiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T25uJE86ZmluZGFsbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInNvdXJjZSIpOworICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzb3VyY2UsICJzb3VyY2UiKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKQEAgLTgwOCwxNCArODcwLDI4IEBACiAKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5maW5kaXRlcgorCisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisKK1JldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFJFIHBhdHRlcm4gaW4gc3RyaW5nLgorCitGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJiYjFhMGFlYjM4YmIxNCBpbnB1dD02MTJhYWI2OWU5ZmUwOGU0XSovCiB7CiAgICAgUHlPYmplY3QqIHNjYW5uZXI7CiAgICAgUHlPYmplY3QqIHNlYXJjaDsKICAgICBQeU9iamVjdCogaXRlcmF0b3I7CiAKLSAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHBhdHRlcm4sIGFyZ3MsIGt3KTsKKyAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwogICAgIGlmICghc2Nhbm5lcikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTgzMCw4ICs5MDYsMzggQEAKICAgICByZXR1cm4gaXRlcmF0b3I7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uc2Nhbm5lcgorCisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRlYTU0OGFlZDMzODkwYiBpbnB1dD0zYWFjZGJkZTc3YTNhNjM3XSovCit7CisgICAgcmV0dXJuIHBhdHRlcm5fc2Nhbm5lcihzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zcGxpdAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgbWF4c3BsaXQ6IFB5X3NzaXplX3QgPSAwCisgICAgKgorICAgIHNvdXJjZTogb2JqZWN0ID0gTlVMTAorCitTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0LCBQeU9iamVjdCAqc291cmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIwYmFjMmZmNTViOWY4NGMgaW5wdXQ9NDFlMGIyZTM1ZTU5OWQ3Yl0qLwogewogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeU9iamVjdCogbGlzdDsKQEAgLTg0MSwxOSArOTQ3LDI0IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIHZvaWQqIGxhc3Q7CiAKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTCwgKnN0cmluZzIgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAwOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T24kTzpzcGxpdCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmbWF4c3BsaXQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInNvdXJjZSIpOworICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzb3VyY2UsICJzb3VyY2UiKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgYXNzZXJ0KHNlbGYtPmNvZGVzaXplICE9IDApOworICAgIGlmIChzZWxmLT5jb2RlWzBdICE9IFNSRV9PUF9JTkZPIHx8IHNlbGYtPmNvZGVbM10gPT0gMCkgeworICAgICAgICBpZiAoc2VsZi0+Y29kZVswXSA9PSBTUkVfT1BfSU5GTyAmJiBzZWxmLT5jb2RlWzRdID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGxpdCgpIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHBhdHRlcm4gbWF0Y2guIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0Z1dHVyZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNwbGl0KCkgcmVxdWlyZXMgYSBub24tZW1wdHkgcGF0dGVybiBtYXRjaC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgMCwgUFlfU1NJWkVfVF9NQVgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwpAQCAtOTk3LDggKzExMDgsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgMCwgUFlfU1NJWkVfVF9NQVgpOwotICAgIGlmICghc3RyaW5nKSB7CisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCkpIHsKICAgICAgICAgUHlfREVDUkVGKGZpbHRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTExNDAsMzYgKzEyNTAsNTAgQEAKIAogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3N1YihQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIFB5T2JqZWN0KiBwdGVtcGxhdGU7Ci0gICAgUHlPYmplY3QqIHN0cmluZzsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk9PfG46c3ViIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdGVtcGxhdGUsICZzdHJpbmcsICZjb3VudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zdWIKIAotICAgIHJldHVybiBwYXR0ZXJuX3N1Yngoc2VsZiwgcHRlbXBsYXRlLCBzdHJpbmcsIGNvdW50LCAwKTsKKyAgICByZXBsOiBvYmplY3QKKyAgICBzdHJpbmc6IG9iamVjdAorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gMAorCitSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWRiZjJlYzM0NzljYmEwMCBpbnB1dD1jNTNkNzBiZTBiM2NhZjg2XSovCit7CisgICAgcmV0dXJuIHBhdHRlcm5fc3VieChzZWxmLCByZXBsLCBzdHJpbmcsIGNvdW50LCAwKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCi17Ci0gICAgUHlPYmplY3QqIHB0ZW1wbGF0ZTsKLSAgICBQeU9iamVjdCogc3RyaW5nOwotICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT098bjpzdWJuIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdGVtcGxhdGUsICZzdHJpbmcsICZjb3VudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zdWJuCiAKLSAgICByZXR1cm4gcGF0dGVybl9zdWJ4KHNlbGYsIHB0ZW1wbGF0ZSwgc3RyaW5nLCBjb3VudCwgMSk7CisgICAgcmVwbDogb2JqZWN0CisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBjb3VudDogUHlfc3NpemVfdCA9IDAKKworUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiB3aXRoIHRoZSByZXBsYWNlbWVudCByZXBsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkOTUyMmNkNTI5ZTk3MjggaW5wdXQ9ZTczNDJkN2NlNjA4MzU3N10qLworeworICAgIHJldHVybiBwYXR0ZXJuX3N1Yngoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCwgMSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fY29weShQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5fX2NvcHlfXworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWRlZGMyZGIxYmQ4Njk0IGlucHV0PWE3MzBhNTlkODYzYmM5ZjVdKi8KIHsKICNpZmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAgICAgUGF0dGVybk9iamVjdCogY29weTsKQEAgLTExOTYsOCArMTMyMCwxNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fZGVlcGNvcHkoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIG1lbW8pCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLl9fZGVlcGNvcHlfXworCisgICAgbWVtbzogb2JqZWN0CisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzVlZmU2OWJkMTJjNWQ3ZCBpbnB1dD0zOTU5NzE5NDgyYzA3ZjcwXSovCiB7CiAjaWZkZWYgVVNFX0JVSUxUSU5fQ09QWQogICAgIFBhdHRlcm5PYmplY3QqIGNvcHk7CkBAIC0xMjM4LDcgKzEzNzAsNyBAQAogICAgIH07CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZsYWdfaXRlbXM7Ci0gICAgaW50IGk7CisgICAgc2l6ZV90IGk7CiAgICAgaW50IGZsYWdzID0gb2JqLT5mbGFnczsKIAogICAgIC8qIE9taXQgcmUuVU5JQ09ERSBmb3IgdmFsaWQgc3RyaW5nIHBhdHRlcm5zLiAqLwpAQCAtMTI5OSwxMzEgKzE0MzEsNDAgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocGF0dGVybl9tYXRjaF9kb2MsCi0ibWF0Y2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXAotICAgIE1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX2Z1bGxtYXRjaF9kb2MsCi0iZnVsbG1hdGNoKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBtYXRjaCBvYmplY3Qgb3IgTm9uZS5cblwKLSAgICBNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmciKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc2VhcmNoX2RvYywKLSJzZWFyY2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXAotICAgIFNjYW4gdGhyb3VnaCBzdHJpbmcgbG9va2luZyBmb3IgYSBtYXRjaCwgYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmdcblwKLSAgICBtYXRjaCBvYmplY3QgaW5zdGFuY2UuIFJldHVybiBOb25lIGlmIG5vIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcgbWF0Y2hlcy4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc3BsaXRfZG9jLAotInNwbGl0KHN0cmluZ1ssIG1heHNwbGl0ID0gMF0pICAtPiBsaXN0LlxuXAotICAgIFNwbGl0IHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgcGF0dGVybi4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fZmluZGFsbF9kb2MsCi0iZmluZGFsbChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbGlzdC5cblwKLSAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9maW5kaXRlcl9kb2MsCi0iZmluZGl0ZXIoc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IGl0ZXJhdG9yLlxuXAotICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFxuXAotICAgIFJFIHBhdHRlcm4gaW4gc3RyaW5nLiBGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYVxuXAotICAgIG1hdGNoIG9iamVjdC4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc3ViX2RvYywKLSJzdWIocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gbmV3c3RyaW5nLlxuXAotICAgIFJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nXG5cCi0gICAgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX3N1Ym5fZG9jLAotInN1Ym4ocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gKG5ld3N0cmluZywgbnVtYmVyIG9mIHN1YnMpXG5cCi0gICAgUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nXG5cCi0gICAgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlXG5cCi0gICAgcmVwbGFjZW1lbnQgcmVwbC4iKTsKLQogUHlEb2NfU1RSVkFSKHBhdHRlcm5fZG9jLCAiQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIG9iamVjdHMiKTsKIAotc3RhdGljIFB5TWV0aG9kRGVmIHBhdHRlcm5fbWV0aG9kc1tdID0gewotICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX21hdGNoX2RvY30sCi0gICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9mdWxsbWF0Y2hfZG9jfSwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX3NlYXJjaF9kb2N9LAotICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1YiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fc3ViX2RvY30sCi0gICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX3N1Ym5fZG9jfSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9zcGxpdF9kb2N9LAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9maW5kYWxsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9maW5kYWxsX2RvY30sCi0gICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fZmluZGl0ZXJfZG9jfSwKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fY29weSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2RlZXBjb3B5LCBNRVRIX099LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQotI2RlZmluZSBQQVRfT0ZGKHgpIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHgpCi1zdGF0aWMgUHlNZW1iZXJEZWYgcGF0dGVybl9tZW1iZXJzW10gPSB7Ci0gICAgeyJwYXR0ZXJuIiwgICAgVF9PQkpFQ1QsICAgIFBBVF9PRkYocGF0dGVybiksICAgICAgIFJFQURPTkxZfSwKLSAgICB7ImZsYWdzIiwgICAgICBUX0lOVCwgICAgICAgUEFUX09GRihmbGFncyksICAgICAgICAgUkVBRE9OTFl9LAotICAgIHsiZ3JvdXBzIiwgICAgIFRfUFlTU0laRVQsICBQQVRfT0ZGKGdyb3VwcyksICAgICAgICBSRUFET05MWX0sCi0gICAgeyJncm91cGluZGV4IiwgVF9PQkpFQ1QsICAgIFBBVF9PRkYoZ3JvdXBpbmRleCksICAgIFJFQURPTkxZfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFBhdHRlcm5fVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKLSAgICBzaXplb2YoUGF0dGVybk9iamVjdCksIHNpemVvZihTUkVfQ09ERSksCi0gICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYylwYXR0ZXJuX3JlcHIsICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBwYXR0ZXJuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgcGF0dGVybl9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotfTsKKy8qIFBhdHRlcm5PYmplY3QncyAnZ3JvdXBpbmRleCcgbWV0aG9kLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3BhdHRlcm5fZ3JvdXBpbmRleChQYXR0ZXJuT2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeURpY3RQcm94eV9OZXcoc2VsZi0+Z3JvdXBpbmRleCk7Cit9CiAKIHN0YXRpYyBpbnQgX3ZhbGlkYXRlKFBhdHRlcm5PYmplY3QgKnNlbGYpOyAvKiBGb3J3YXJkICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuY29tcGlsZQorCisgICAgcGF0dGVybjogb2JqZWN0CisgICAgZmxhZ3M6IGludAorICAgIGNvZGU6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TGlzdF9UeXBlJykKKyAgICBncm91cHM6IFB5X3NzaXplX3QKKyAgICBncm91cGluZGV4OiBvYmplY3QKKyAgICBpbmRleGdyb3VwOiBvYmplY3QKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotX2NvbXBpbGUoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncykKK19zcmVfY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXR0ZXJuLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBncm91cHMsIFB5T2JqZWN0ICpncm91cGluZGV4LAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmluZGV4Z3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzAwNGIyOTM3MzBiZjMwOSBpbnB1dD03ZDA1OWVjOGFlMWVkYjg1XSovCiB7CiAgICAgLyogImNvbXBpbGUiIHBhdHRlcm4gZGVzY3JpcHRvciB0byBwYXR0ZXJuIG9iamVjdCAqLwogCiAgICAgUGF0dGVybk9iamVjdCogc2VsZjsKICAgICBQeV9zc2l6ZV90IGksIG47CiAKLSAgICBQeU9iamVjdCogcGF0dGVybjsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0KiBjb2RlOwotICAgIFB5X3NzaXplX3QgZ3JvdXBzID0gMDsKLSAgICBQeU9iamVjdCogZ3JvdXBpbmRleCA9IE5VTEw7Ci0gICAgUHlPYmplY3QqIGluZGV4Z3JvdXAgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaU8hfG5PTyIsICZwYXR0ZXJuLCAmZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxpc3RfVHlwZSwgJmNvZGUsICZncm91cHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZncm91cGluZGV4LCAmaW5kZXhncm91cCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgbiA9IFB5TGlzdF9HRVRfU0laRShjb2RlKTsKICAgICAvKiBjb3Zlcml0eVthbXBlcnNhbmRfaW5fc2l6ZV0gKi8KICAgICBzZWxmID0gUHlPYmplY3RfTkVXX1ZBUihQYXR0ZXJuT2JqZWN0LCAmUGF0dGVybl9UeXBlLCBuKTsKQEAgLTE1NzksNiArMTYyMCw3IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9SQU5HRToKKyAgICAgICAgY2FzZSBTUkVfT1BfUkFOR0VfSUdOT1JFOgogICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5MzUsMTAgKzE5NzcsOSBAQAogc3RhdGljIGludAogX3ZhbGlkYXRlX291dGVyKFNSRV9DT0RFICpjb2RlLCBTUkVfQ09ERSAqZW5kLCBQeV9zc2l6ZV90IGdyb3VwcykKIHsKLSAgICBpZiAoZ3JvdXBzIDwgMCB8fCBncm91cHMgPiAxMDAgfHwgY29kZSA+PSBlbmQgfHwgZW5kWy0xXSAhPSBTUkVfT1BfU1VDQ0VTUykKKyAgICBpZiAoZ3JvdXBzIDwgMCB8fCAoc2l6ZV90KWdyb3VwcyA+IFNSRV9NQVhHUk9VUFMgfHwKKyAgICAgICAgY29kZSA+PSBlbmQgfHwgZW5kWy0xXSAhPSBTUkVfT1BfU1VDQ0VTUykKICAgICAgICAgRkFJTDsKLSAgICBpZiAoZ3JvdXBzID09IDApICAvKiBmaXggZm9yIHNpbXBsZWpzb24gKi8KLSAgICAgICAgZ3JvdXBzID0gMTAwOyAvKiAxMDAgZ3JvdXBzIHNob3VsZCBhbHdheXMgYmUgc2FmZSAqLwogICAgIHJldHVybiBfdmFsaWRhdGVfaW5uZXIoY29kZSwgZW5kLTEsIGdyb3Vwcyk7CiB9CiAKQEAgLTIwMzYsMTMgKzIwNzcsMjIgQEAKICAgICByZXR1cm4gbWF0Y2hfZ2V0c2xpY2VfYnlfaW5kZXgoc2VsZiwgbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXgpLCBkZWYpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBwdGVtcGxhdGUpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5leHBhbmQKKworICAgIHRlbXBsYXRlOiBvYmplY3QKKworUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvbiBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRlbXBsYXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzMWI1OGNjYzMyM2MzYTEgaW5wdXQ9NGJmZGIyMmMyZjhiMTQ2YV0qLwogewogICAgIC8qIGRlbGVnYXRlIHRvIFB5dGhvbiBjb2RlICovCiAgICAgcmV0dXJuIGNhbGwoCiAgICAgICAgIFNSRV9QWV9NT0RVTEUsICJfZXhwYW5kIiwKLSAgICAgICAgUHlUdXBsZV9QYWNrKDMsIHNlbGYtPnBhdHRlcm4sIHNlbGYsIHB0ZW1wbGF0ZSkKKyAgICAgICAgUHlUdXBsZV9QYWNrKDMsIHNlbGYtPnBhdHRlcm4sIHNlbGYsIHRlbXBsYXRlKQogICAgICAgICApOwogfQogCkBAIC0yMDgxLDI0ICsyMTMxLDI5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guZ3JvdXBzCisKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisgICAgICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLgorCitSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZjhlMjY0MTUzNzIzOGEgaW5wdXQ9YmIwNjllZjU1ZGFiY2E5MV0qLwogewogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAotICAgIFB5T2JqZWN0KiBkZWYgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgImRlZmF1bHQiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Tzpncm91cHMiLCBrd2xpc3QsICZkZWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KHNlbGYtPmdyb3Vwcy0xKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGluZGV4ID0gMTsgaW5kZXggPCBzZWxmLT5ncm91cHM7IGluZGV4KyspIHsKICAgICAgICAgUHlPYmplY3QqIGl0ZW07Ci0gICAgICAgIGl0ZW0gPSBtYXRjaF9nZXRzbGljZV9ieV9pbmRleChzZWxmLCBpbmRleCwgZGVmKTsKKyAgICAgICAgaXRlbSA9IG1hdGNoX2dldHNsaWNlX2J5X2luZGV4KHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjEwOSwxOCArMjE2NCwyMyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLmdyb3VwZGljdAorCisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgICAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4KKworUmV0dXJuIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFsbCB0aGUgbmFtZWQgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwga2V5ZWQgYnkgdGhlIHN1Ymdyb3VwIG5hbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjk5MTdjOTA3M2U0MTc1NyBpbnB1dD0wZGVkNzk2MGIyMzc4MGFhXSovCiB7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKICAgICBQeU9iamVjdCoga2V5czsKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCi0gICAgUHlPYmplY3QqIGRlZiA9IFB5X05vbmU7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAiZGVmYXVsdCIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPOmdyb3VwZGljdCIsIGt3bGlzdCwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzdWx0ID0gUHlEaWN0X05ldygpOwogICAgIGlmICghcmVzdWx0IHx8ICFzZWxmLT5wYXR0ZXJuLT5ncm91cGluZGV4KQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjEzNiw3ICsyMTk2LDcgQEAKICAgICAgICAga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGluZGV4KTsKICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgdmFsdWUgPSBtYXRjaF9nZXRzbGljZShzZWxmLCBrZXksIGRlZik7CisgICAgICAgIHZhbHVlID0gbWF0Y2hfZ2V0c2xpY2Uoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKQEAgLTIxNTcsNTAgKzIyMTcsNTggQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfc3RhcnQoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guc3RhcnQgLT4gUHlfc3NpemVfdAorCisgICAgZ3JvdXA6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IDAKKyAgICAvCisKK1JldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmNmU3ZjlkZjJmYjUyMDEgaW5wdXQ9Y2VkOGU0ZWQ0YjMzZWU2Y10qLwogewotICAgIFB5X3NzaXplX3QgaW5kZXg7Ci0KLSAgICBQeU9iamVjdCogaW5kZXhfID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsIDAsIDEsICZpbmRleF8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXhfKTsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgZ3JvdXApOwogCiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5ncm91cHMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICJubyBzdWNoIGdyb3VwIgogICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBtYXJrIGlzIC0xIGlmIGdyb3VwIGlzIHVuZGVmaW5lZCAqLwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+bWFya1tpbmRleCoyXSk7CisgICAgcmV0dXJuIHNlbGYtPm1hcmtbaW5kZXgqMl07CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2VuZChNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5lbmQgLT4gUHlfc3NpemVfdAorCisgICAgZ3JvdXA6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IDAKKyAgICAvCisKK1JldHVybiBpbmRleCBvZiB0aGUgZW5kIG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK19zcmVfU1JFX01hdGNoX2VuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjQyNDBiMDk5MTFmNzY5MiBpbnB1dD0xYjc5OTU2MGM3ZjNkN2U2XSovCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleDsKLQotICAgIFB5T2JqZWN0KiBpbmRleF8gPSBOVUxMOwotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImVuZCIsIDAsIDEsICZpbmRleF8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXhfKTsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgZ3JvdXApOwogCiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5ncm91cHMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICJubyBzdWNoIGdyb3VwIgogICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBtYXJrIGlzIC0xIGlmIGdyb3VwIGlzIHVuZGVmaW5lZCAqLwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+bWFya1tpbmRleCoyKzFdKTsKKyAgICByZXR1cm4gc2VsZi0+bWFya1tpbmRleCoyKzFdOwogfQogCiBMT0NBTChQeU9iamVjdCopCkBAIC0yMjMwLDE2ICsyMjk4LDIwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX3NwYW4oTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guc3BhbgorCisgICAgZ3JvdXA6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IDAKKyAgICAvCisKK0ZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfc3Bhbl9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjAyYWU0MDU5NGQxNGZlNiBpbnB1dD00OTA5MmI2MDA4ZDE3NmQzXSovCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleDsKLQotICAgIFB5T2JqZWN0KiBpbmRleF8gPSBOVUxMOwotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNwYW4iLCAwLCAxLCAmaW5kZXhfKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGluZGV4Xyk7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGdyb3VwKTsKIAogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+Z3JvdXBzKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTIyNzksOCArMjM1MSwxNCBAQAogICAgIHJldHVybiByZWdzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9jb3B5KE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guX19jb3B5X18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19jb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNzc5YzVmYzhiNWI0ZWI0IGlucHV0PTNiYjRkMzBiNmJhZGRiNWJdKi8KIHsKICNpZmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAgICAgTWF0Y2hPYmplY3QqIGNvcHk7CkBAIC0yMzEwLDggKzIzODgsMTYgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9kZWVwY29weShNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG1lbW8pCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5fX2RlZXBjb3B5X18KKworICAgIG1lbW86IG9iamVjdAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmI2NTc1NzhlYjAzZjRhMyBpbnB1dD1iNjViNzI0ODllYWM2NGNjXSovCiB7CiAjaWZkZWYgVVNFX0JVSUxUSU5fQ09QWQogICAgIE1hdGNoT2JqZWN0KiBjb3B5OwpAQCAtMjM0Miw1MCArMjQyOCw2IEBACiAgICAgUmV0dXJuIHN1Ymdyb3VwKHMpIG9mIHRoZSBtYXRjaCBieSBpbmRpY2VzIG9yIG5hbWVzLlxuXAogICAgIEZvciAwIHJldHVybnMgdGhlIGVudGlyZSBtYXRjaC4iKTsKIAotUHlEb2NfU1RSVkFSKG1hdGNoX3N0YXJ0X2RvYywKLSJzdGFydChbZ3JvdXA9MF0pIC0+IGludC5cblwKLSAgICBSZXR1cm4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4iKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX2VuZF9kb2MsCi0iZW5kKFtncm91cD0wXSkgLT4gaW50LlxuXAotICAgIFJldHVybiBpbmRleCBvZiB0aGUgZW5kIG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4iKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX3NwYW5fZG9jLAotInNwYW4oW2dyb3VwXSkgLT4gdHVwbGUuXG5cCi0gICAgRm9yIE1hdGNoT2JqZWN0IG0sIHJldHVybiB0aGUgMi10dXBsZSAobS5zdGFydChncm91cCksIG0uZW5kKGdyb3VwKSkuIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9ncm91cHNfZG9jLAotImdyb3VwcyhbZGVmYXVsdD1Ob25lXSkgLT4gdHVwbGUuXG5cCi0gICAgUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMS5cblwKLSAgICBUaGUgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGZvciBncm91cHNcblwKLSAgICB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9ncm91cGRpY3RfZG9jLAotImdyb3VwZGljdChbZGVmYXVsdD1Ob25lXSkgLT4gZGljdC5cblwKLSAgICBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIHRoZSBuYW1lZCBzdWJncm91cHMgb2YgdGhlIG1hdGNoLFxuXAotICAgIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLiBUaGUgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGZvciBncm91cHNcblwKLSAgICB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9leHBhbmRfZG9jLAotImV4cGFuZCh0ZW1wbGF0ZSkgLT4gc3RyLlxuXAotICAgIFJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb25cblwKLSAgICBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuIik7Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBtYXRjaF9tZXRob2RzW10gPSB7Ci0gICAgeyJncm91cCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXAsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZ3JvdXBfZG9jfSwKLSAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9zdGFydCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9zdGFydF9kb2N9LAotICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9lbmQsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZW5kX2RvY30sCi0gICAgeyJzcGFuIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9zcGFuLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX3NwYW5fZG9jfSwKLSAgICB7Imdyb3VwcyIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgbWF0Y2hfZ3JvdXBzX2RvY30sCi0gICAgeyJncm91cGRpY3QiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwZGljdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIG1hdGNoX2dyb3VwZGljdF9kb2N9LAotICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9leHBhbmQsIE1FVEhfTywgbWF0Y2hfZXhwYW5kX2RvY30sCi0gICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgbWF0Y2hfY29weSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9kZWVwY29weSwgTUVUSF9PfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBtYXRjaF9sYXN0aW5kZXhfZ2V0KE1hdGNoT2JqZWN0ICpzZWxmKQogewpAQCAtMjQzNiw1NyArMjQ3OCw2IEBACiB9CiAKIAotc3RhdGljIFB5R2V0U2V0RGVmIG1hdGNoX2dldHNldFtdID0gewotICAgIHsibGFzdGluZGV4IiwgKGdldHRlciltYXRjaF9sYXN0aW5kZXhfZ2V0LCAoc2V0dGVyKU5VTEx9LAotICAgIHsibGFzdGdyb3VwIiwgKGdldHRlciltYXRjaF9sYXN0Z3JvdXBfZ2V0LCAoc2V0dGVyKU5VTEx9LAotICAgIHsicmVncyIsICAgICAgKGdldHRlciltYXRjaF9yZWdzX2dldCwgICAgICAoc2V0dGVyKU5VTEx9LAotICAgIHtOVUxMfQotfTsKLQotI2RlZmluZSBNQVRDSF9PRkYoeCkgb2Zmc2V0b2YoTWF0Y2hPYmplY3QsIHgpCi1zdGF0aWMgUHlNZW1iZXJEZWYgbWF0Y2hfbWVtYmVyc1tdID0gewotICAgIHsic3RyaW5nIiwgIFRfT0JKRUNULCAgIE1BVENIX09GRihzdHJpbmcpLCAgUkVBRE9OTFl9LAotICAgIHsicmUiLCAgICAgIFRfT0JKRUNULCAgIE1BVENIX09GRihwYXR0ZXJuKSwgUkVBRE9OTFl9LAotICAgIHsicG9zIiwgICAgIFRfUFlTU0laRVQsIE1BVENIX09GRihwb3MpLCAgICAgUkVBRE9OTFl9LAotICAgIHsiZW5kcG9zIiwgIFRfUFlTU0laRVQsIE1BVENIX09GRihlbmRwb3MpLCAgUkVBRE9OTFl9LAotICAgIHtOVUxMfQotfTsKLQotLyogRklYTUU6IGltcGxlbWVudCBzZXRhdHRyKCJzdHJpbmciLCBOb25lKSBhcyBhIHNwZWNpYWwgY2FzZSAodG8KLSAgIGRldGFjaCB0aGUgYXNzb2NpYXRlZCBzdHJpbmcsIGlmIGFueSAqLwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IE1hdGNoX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsMCkKLSAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9NYXRjaCIsCi0gICAgc2l6ZW9mKE1hdGNoT2JqZWN0KSwgc2l6ZW9mKFB5X3NzaXplX3QpLAotICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYyltYXRjaF9yZXByLCAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgbWF0Y2hfZG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgbWF0Y2hfbWV0aG9kcywgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBtYXRjaF9tZW1iZXJzLCAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIG1hdGNoX2dldHNldCwgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFNSRV9TVEFURSogc3RhdGUsIFB5X3NzaXplX3Qgc3RhdHVzKQogewpAQCAtMjU2Miw4ICsyNTUzLDE0IEBACiAgICAgUHlPYmplY3RfREVMKHNlbGYpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1zY2FubmVyX21hdGNoKFNjYW5uZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9TY2FubmVyLm1hdGNoCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfbWF0Y2hfaW1wbChTY2FubmVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzNmIzMGM2M2Q0YjgxZWIgaW5wdXQ9ODgxYTAxNTRmOGMxM2Q5YV0qLwogewogICAgIFNSRV9TVEFURSogc3RhdGUgPSAmc2VsZi0+c3RhdGU7CiAgICAgUHlPYmplY3QqIG1hdGNoOwpAQCAtMjU5Niw4ICsyNTkzLDE0IEBACiB9CiAKIAotc3RhdGljIFB5T2JqZWN0Kgotc2Nhbm5lcl9zZWFyY2goU2Nhbm5lck9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1NjYW5uZXIuc2VhcmNoCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZGMyMTE5ODYwODhmMDI1IGlucHV0PTE2MTIyM2VlOTJlZjkyNzBdKi8KIHsKICAgICBTUkVfU1RBVEUqIHN0YXRlID0gJnNlbGYtPnN0YXRlOwogICAgIFB5T2JqZWN0KiBtYXRjaDsKQEAgLTI2MjksOSArMjYzMiwxNjAgQEAKICAgICByZXR1cm4gbWF0Y2g7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKQoreworICAgIFNjYW5uZXJPYmplY3QqIHNjYW5uZXI7CisKKyAgICAvKiBjcmVhdGUgc2Nhbm5lciBvYmplY3QgKi8KKyAgICBzY2FubmVyID0gUHlPYmplY3RfTkVXKFNjYW5uZXJPYmplY3QsICZTY2FubmVyX1R5cGUpOworICAgIGlmICghc2Nhbm5lcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2Nhbm5lci0+cGF0dGVybiA9IE5VTEw7CisKKyAgICAvKiBjcmVhdGUgc2VhcmNoIHN0YXRlIG9iamVjdCAqLworICAgIGlmICghc3RhdGVfaW5pdCgmc2Nhbm5lci0+c3RhdGUsIHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpKSB7CisgICAgICAgIFB5X0RFQ1JFRihzY2FubmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHNjYW5uZXItPnBhdHRlcm4gPSAoUHlPYmplY3QqKSBzZWxmOworCisgICAgcmV0dXJuIChQeU9iamVjdCopIHNjYW5uZXI7Cit9CisKKyNpbmNsdWRlICJjbGluaWMvX3NyZS5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiBwYXR0ZXJuX21ldGhvZHNbXSA9IHsKKyAgICBfU1JFX1NSRV9QQVRURVJOX01BVENIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fRlVMTE1BVENIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU0VBUkNIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU1VCX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU1VCTl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX0ZJTkRBTExfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9TUExJVF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU0NBTk5FUl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX19fQ09QWV9fX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5R2V0U2V0RGVmIHBhdHRlcm5fZ2V0c2V0W10gPSB7CisgICAgeyJncm91cGluZGV4IiwgKGdldHRlcilwYXR0ZXJuX2dyb3VwaW5kZXgsIChzZXR0ZXIpTlVMTCwKKyAgICAgICJBIGRpY3Rpb25hcnkgbWFwcGluZyBncm91cCBuYW1lcyB0byBncm91cCBudW1iZXJzLiJ9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKKyNkZWZpbmUgUEFUX09GRih4KSBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB4KQorc3RhdGljIFB5TWVtYmVyRGVmIHBhdHRlcm5fbWVtYmVyc1tdID0geworICAgIHsicGF0dGVybiIsICAgIFRfT0JKRUNULCAgICBQQVRfT0ZGKHBhdHRlcm4pLCAgICAgICBSRUFET05MWX0sCisgICAgeyJmbGFncyIsICAgICAgVF9JTlQsICAgICAgIFBBVF9PRkYoZmxhZ3MpLCAgICAgICAgIFJFQURPTkxZfSwKKyAgICB7Imdyb3VwcyIsICAgICBUX1BZU1NJWkVULCAgUEFUX09GRihncm91cHMpLCAgICAgICAgUkVBRE9OTFl9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUGF0dGVybl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1BhdHRlcm4iLAorICAgIHNpemVvZihQYXR0ZXJuT2JqZWN0KSwgc2l6ZW9mKFNSRV9DT0RFKSwKKyAgICAoZGVzdHJ1Y3RvcilwYXR0ZXJuX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKXBhdHRlcm5fcmVwciwgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgcGF0dGVybl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHBhdHRlcm5fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBwYXR0ZXJuX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgcGF0dGVybl9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBtYXRjaF9tZXRob2RzW10gPSB7CisgICAgeyJncm91cCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXAsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZ3JvdXBfZG9jfSwKKyAgICBfU1JFX1NSRV9NQVRDSF9TVEFSVF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9FTkRfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfU1BBTl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9HUk9VUFNfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfR1JPVVBESUNUX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9fX0NPUFlfX19NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9fX0RFRVBDT1BZX19fTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgbWF0Y2hfZ2V0c2V0W10gPSB7CisgICAgeyJsYXN0aW5kZXgiLCAoZ2V0dGVyKW1hdGNoX2xhc3RpbmRleF9nZXQsIChzZXR0ZXIpTlVMTH0sCisgICAgeyJsYXN0Z3JvdXAiLCAoZ2V0dGVyKW1hdGNoX2xhc3Rncm91cF9nZXQsIChzZXR0ZXIpTlVMTH0sCisgICAgeyJyZWdzIiwgICAgICAoZ2V0dGVyKW1hdGNoX3JlZ3NfZ2V0LCAgICAgIChzZXR0ZXIpTlVMTH0sCisgICAge05VTEx9Cit9OworCisjZGVmaW5lIE1BVENIX09GRih4KSBvZmZzZXRvZihNYXRjaE9iamVjdCwgeCkKK3N0YXRpYyBQeU1lbWJlckRlZiBtYXRjaF9tZW1iZXJzW10gPSB7CisgICAgeyJzdHJpbmciLCAgVF9PQkpFQ1QsICAgTUFUQ0hfT0ZGKHN0cmluZyksICBSRUFET05MWX0sCisgICAgeyJyZSIsICAgICAgVF9PQkpFQ1QsICAgTUFUQ0hfT0ZGKHBhdHRlcm4pLCBSRUFET05MWX0sCisgICAgeyJwb3MiLCAgICAgVF9QWVNTSVpFVCwgTUFUQ0hfT0ZGKHBvcyksICAgICBSRUFET05MWX0sCisgICAgeyJlbmRwb3MiLCAgVF9QWVNTSVpFVCwgTUFUQ0hfT0ZGKGVuZHBvcyksICBSRUFET05MWX0sCisgICAge05VTEx9Cit9OworCisvKiBGSVhNRTogaW1wbGVtZW50IHNldGF0dHIoInN0cmluZyIsIE5vbmUpIGFzIGEgc3BlY2lhbCBjYXNlICh0bworICAgZGV0YWNoIHRoZSBhc3NvY2lhdGVkIHN0cmluZywgaWYgYW55ICovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgTWF0Y2hfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwwKQorICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX01hdGNoIiwKKyAgICBzaXplb2YoTWF0Y2hPYmplY3QpLCBzaXplb2YoUHlfc3NpemVfdCksCisgICAgKGRlc3RydWN0b3IpbWF0Y2hfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKW1hdGNoX3JlcHIsICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBtYXRjaF9kb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBtYXRjaF9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hdGNoX21lbWJlcnMsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbWF0Y2hfZ2V0c2V0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworfTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHNjYW5uZXJfbWV0aG9kc1tdID0gewotICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHNjYW5uZXJfbWF0Y2gsIE1FVEhfTk9BUkdTfSwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbikgc2Nhbm5lcl9zZWFyY2gsIE1FVEhfTk9BUkdTfSwKKyAgICBfU1JFX1NSRV9TQ0FOTkVSX01BVENIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1NDQU5ORVJfU0VBUkNIX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjY3Myw0NyArMjgyNywxMCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIC8qIGNyZWF0ZSBzZWFyY2ggc3RhdGUgb2JqZWN0ICovCi0KLSAgICBTY2FubmVyT2JqZWN0KiBzZWxmOwotCi0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEwsICpzdHJpbmcyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPbm4kTzpzY2FubmVyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZzdGFydCwgJmVuZCwgJnN0cmluZzIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzdHJpbmcyLCAic291cmNlIik7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogY3JlYXRlIHNjYW5uZXIgb2JqZWN0ICovCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhTY2FubmVyT2JqZWN0LCAmU2Nhbm5lcl9UeXBlKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlbGYtPnBhdHRlcm4gPSBOVUxMOwotCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc2VsZi0+c3RhdGUsIHBhdHRlcm4sIHN0cmluZywgc3RhcnQsIGVuZCk7Ci0gICAgaWYgKCFzdHJpbmcpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYocGF0dGVybik7Ci0gICAgc2VsZi0+cGF0dGVybiA9IChQeU9iamVjdCopIHBhdHRlcm47Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7ImNvbXBpbGUiLCBfY29tcGlsZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldGNvZGVzaXplIiwgc3JlX2NvZGVzaXplLCBNRVRIX05PQVJHU30sCi0gICAgeyJnZXRsb3dlciIsIHNyZV9nZXRsb3dlciwgTUVUSF9WQVJBUkdTfSwKKyAgICBfU1JFX0NPTVBJTEVfTUVUSE9EREVGCisgICAgX1NSRV9HRVRDT0RFU0laRV9NRVRIT0RERUYKKyAgICBfU1JFX0dFVExPV0VSX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjc2Myw2ICsyODgwLDEyIEBACiAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICB9CiAKKyAgICB4ID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoU1JFX01BWEdST1VQUyk7CisgICAgaWYgKHgpIHsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1BWEdST1VQUyIsIHgpOworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgfQorCiAgICAgeCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvcHlyaWdodCk7CiAgICAgaWYgKHgpIHsKICAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImNvcHlyaWdodCIsIHgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCA0ZGMxNTM0Li5lNDNjNTAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIm9wZW5zc2wvc3NsLmgiCiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKICNpbmNsdWRlICJvcGVuc3NsL3JhbmQuaCIKKyNpbmNsdWRlICJvcGVuc3NsL2Jpby5oIgogCiAvKiBTU0wgZXJyb3Igb2JqZWN0ICovCiBzdGF0aWMgUHlPYmplY3QgKlB5U1NMRXJyb3JPYmplY3Q7CkBAIC0xMDgsNiArMTA5LDEwIEBACiAjIGRlZmluZSBIQVZFX1NOSSAwCiAjZW5kaWYKIAorI2lmZGVmIFRMU0VYVF9UWVBFX2FwcGxpY2F0aW9uX2xheWVyX3Byb3RvY29sX25lZ290aWF0aW9uCisjIGRlZmluZSBIQVZFX0FMUE4KKyNlbmRpZgorCiBlbnVtIHB5X3NzbF9lcnJvciB7CiAgICAgLyogdGhlc2UgbWlycm9yIHNzbC5oICovCiAgICAgUFlfU1NMX0VSUk9SX05PTkUsCkBAIC0xNjEsMTMgKzE2Niw2IEBACiAKICNkZWZpbmUgWDUwOV9OQU1FX01BWExFTiAyNTYKIAotLyogUkFORF8qIEFQSXMgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjUgKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDUwMGZMCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfUkFORCAxCi0jZWxzZQotIyB1bmRlZiBIQVZFX09QRU5TU0xfUkFORAotI2VuZGlmCi0KIC8qIFNTTF9DVFhfY2xlYXJfb3B0aW9ucygpIGFuZCBTU0xfY2xlYXJfb3B0aW9ucygpIHdlcmUgZmlyc3QgYWRkZWQgaW4KICAqIE9wZW5TU0wgMC45LjhtIGJ1dCBkbyBub3QgYXBwZWFyIGluIHNvbWUgMC45LjktZGV2IHZlcnNpb25zIHN1Y2ggdGhlCiAgKiAwLjkuOSBmcm9tICJNYXkgMjAwOCIgdGhhdCBOZXRCU0QgNS4wIHVzZXMuICovCkBAIC0xODEsMzYgKzE3OSwxOCBAQAogICogb2xkZXIgU1NMLCBidXQgbGV0J3MgYmUgc2FmZSAqLwogI2RlZmluZSBQeVNTTF9DQl9NQVhMRU4gMTI4CiAKLS8qIFNTTF9nZXRfZmluaXNoZWQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjUgKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDUwMGZMCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMQotI2Vsc2UKLSMgZGVmaW5lIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAwCi0jZW5kaWYKLQotLyogRUNESCBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkKLSMgZGVmaW5lIE9QRU5TU0xfTk9fRUNESAotI2VuZGlmCi0KLS8qIGNvbXByZXNzaW9uIHN1cHBvcnQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19DT01QKQotIyBkZWZpbmUgT1BFTlNTTF9OT19DT01QCi0jZW5kaWYKLQotLyogWDUwOV9WRVJJRllfUEFSQU0gZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwMGZMCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCi0jZW5kaWYKLQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFNTTF9DVFggKmN0eDsKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECi0gICAgY2hhciAqbnBuX3Byb3RvY29sczsKKyAgICB1bnNpZ25lZCBjaGFyICpucG5fcHJvdG9jb2xzOwogICAgIGludCBucG5fcHJvdG9jb2xzX2xlbjsKICNlbmRpZgorI2lmZGVmIEhBVkVfQUxQTgorICAgIHVuc2lnbmVkIGNoYXIgKmFscG5fcHJvdG9jb2xzOworICAgIGludCBhbHBuX3Byb3RvY29sc19sZW47CisjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKICAgICBQeU9iamVjdCAqc2V0X2hvc3RuYW1lOwogI2VuZGlmCkBAIC0yMjYsMjAgKzIwNiwzNSBAQAogICAgIGNoYXIgc2h1dGRvd25fc2Vlbl96ZXJvOwogICAgIGNoYXIgaGFuZHNoYWtlX2RvbmU7CiAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZTsKKyAgICBQeU9iamVjdCAqb3duZXI7IC8qIFB5dGhvbiBsZXZlbCAib3duZXIiIHBhc3NlZCB0byBzZXJ2ZXJuYW1lIGNhbGxiYWNrICovCisgICAgUHlPYmplY3QgKnNlcnZlcl9ob3N0bmFtZTsKIH0gUHlTU0xTb2NrZXQ7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgQklPICpiaW87CisgICAgaW50IGVvZl93cml0dGVuOworfSBQeVNTTE1lbW9yeUJJTzsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTENvbnRleHRfVHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xTb2NrZXRfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xNZW1vcnlCSU9fVHlwZTsKIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0x3cml0ZShQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xyZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgaW50IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChQeVNvY2tldFNvY2tPYmplY3QgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd3JpdGluZyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX3BlZXJjZXJ0KFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NpcGhlcihQeVNTTFNvY2tldCAqc2VsZik7CisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NzbAorY2xhc3MgX3NzbC5fU1NMQ29udGV4dCAiUHlTU0xDb250ZXh0ICoiICImUHlTU0xDb250ZXh0X1R5cGUiCitjbGFzcyBfc3NsLl9TU0xTb2NrZXQgIlB5U1NMU29ja2V0ICoiICImUHlTU0xTb2NrZXRfVHlwZSIKK2NsYXNzIF9zc2wuTWVtb3J5QklPICJQeVNTTE1lbW9yeUJJTyAqIiAiJlB5U1NMTWVtb3J5QklPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03YmY3Y2I4MzI2MzhlMmUxXSovCisKKyNpbmNsdWRlICJjbGluaWMvX3NzbC5jLmgiCisKK3N0YXRpYyBpbnQgUHlTU0xfc2VsZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcsIF9QeVRpbWVfdCB0aW1lb3V0KTsKIAogI2RlZmluZSBQeVNTTENvbnRleHRfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpCiAjZGVmaW5lIFB5U1NMU29ja2V0X0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNvY2tldF9UeXBlKQorI2RlZmluZSBQeVNTTE1lbW9yeUJJT19DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTT0NLRVRfSVNfTk9OQkxPQ0tJTkcsCkBAIC0yNTEsMTEgKzI0NiwxNiBAQAogfSB0aW1lb3V0X3N0YXRlOwogCiAvKiBXcmFwIGVycm9yIHN0cmluZ3Mgd2l0aCBmaWxlbmFtZSBhbmQgbGluZSAjICovCi0jZGVmaW5lIFNUUklOR0lGWTEoeCkgI3gKLSNkZWZpbmUgU1RSSU5HSUZZMih4KSBTVFJJTkdJRlkxKHgpCiAjZGVmaW5lIEVSUlNUUjEoeCx5LHopICh4ICI6IiB5ICI6ICIgeikKLSNkZWZpbmUgRVJSU1RSKHgpIEVSUlNUUjEoIl9zc2wuYyIsIFNUUklOR0lGWTIoX19MSU5FX18pLCB4KQorI2RlZmluZSBFUlJTVFIoeCkgRVJSU1RSMSgiX3NzbC5jIiwgUHlfU1RSSU5HSUZZKF9fTElORV9fKSwgeCkKIAorLyogR2V0IHRoZSBzb2NrZXQgZnJvbSBhIFB5U1NMU29ja2V0LCBpZiBpdCBoYXMgb25lICovCisjZGVmaW5lIEdFVF9TT0NLRVQob2JqKSAoKG9iaiktPlNvY2tldCA/IFwKKyAgICAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3QoKG9iaiktPlNvY2tldCkgOiBOVUxMKQorCisvKiBJZiBzb2NrIGlzIE5VTEwsIHVzZSBhIHRpbWVvdXQgb2YgMCBzZWNvbmQgKi8KKyNkZWZpbmUgR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spIFwKKyAgICAoKHNvY2sgIT0gTlVMTCkgPyAoc29jayktPnNvY2tfdGltZW91dCA6IDApCiAKIC8qCiAgKiBTU0wgZXJyb3JzLgpAQCAtNDE5LDEzICs0MTksMTIgQEAKICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGUgPT0gMCkgewotICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcwotICAgICAgICAgICAgICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qob2JqLT5Tb2NrZXQpOworICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcyA9IEdFVF9TT0NLRVQob2JqKTsKICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDAgfHwgKCgoUHlPYmplY3QgKilzKSA9PSBQeV9Ob25lKSkgewogICAgICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0VPRjsKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5U1NMRU9GRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJFT0Ygb2NjdXJyZWQgaW4gdmlvbGF0aW9uIG9mIHByb3RvY29sIjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA9PSAtMSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocyAmJiByZXQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogdW5kZXJseWluZyBCSU8gcmVwb3J0ZWQgYW4gSS9PIGVycm9yICovCiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzKTsKICAgICAgICAgICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CkBAIC00NzksMTAgKzQ3OCwxMiBAQAogc3RhdGljIFB5U1NMU29ja2V0ICoKIG5ld1B5U1NMU29ja2V0KFB5U1NMQ29udGV4dCAqc3NsY3R4LCBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2ssCiAgICAgICAgICAgICAgICBlbnVtIHB5X3NzbF9zZXJ2ZXJfb3JfY2xpZW50IHNvY2tldF90eXBlLAotICAgICAgICAgICAgICAgY2hhciAqc2VydmVyX2hvc3RuYW1lKQorICAgICAgICAgICAgICAgY2hhciAqc2VydmVyX2hvc3RuYW1lLAorICAgICAgICAgICAgICAgUHlTU0xNZW1vcnlCSU8gKmluYmlvLCBQeVNTTE1lbW9yeUJJTyAqb3V0YmlvKQogewogICAgIFB5U1NMU29ja2V0ICpzZWxmOwogICAgIFNTTF9DVFggKmN0eCA9IHNzbGN0eC0+Y3R4OworICAgIFB5T2JqZWN0ICpob3N0bmFtZTsKICAgICBsb25nIG1vZGU7CiAKICAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5U1NMU29ja2V0LCAmUHlTU0xTb2NrZXRfVHlwZSk7CkBAIC00OTUsNiArNDk2LDE4IEBACiAgICAgc2VsZi0+Y3R4ID0gc3NsY3R4OwogICAgIHNlbGYtPnNodXRkb3duX3NlZW5femVybyA9IDA7CiAgICAgc2VsZi0+aGFuZHNoYWtlX2RvbmUgPSAwOworICAgIHNlbGYtPm93bmVyID0gTlVMTDsKKyAgICBpZiAoc2VydmVyX2hvc3RuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgaG9zdG5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlKHNlcnZlcl9ob3N0bmFtZSwgc3RybGVuKHNlcnZlcl9ob3N0bmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZG5hIiwgInN0cmljdCIpOworICAgICAgICBpZiAoaG9zdG5hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+c2VydmVyX2hvc3RuYW1lID0gaG9zdG5hbWU7CisgICAgfSBlbHNlCisgICAgICAgIHNlbGYtPnNlcnZlcl9ob3N0bmFtZSA9IE5VTEw7CisKICAgICBQeV9JTkNSRUYoc3NsY3R4KTsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGUgU1NMIGVycm9yIHN0YXRlIGlzIGluaXRpYWxpemVkICovCkBAIC01MDQsOCArNTE3LDE3IEBACiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHNlbGYtPnNzbCA9IFNTTF9uZXcoY3R4KTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFNTTF9zZXRfYXBwX2RhdGEoc2VsZi0+c3NsLHNlbGYpOwotICAgIFNTTF9zZXRfZmQoc2VsZi0+c3NsLCBQeV9TQUZFX0RPV05DQVNUKHNvY2stPnNvY2tfZmQsIFNPQ0tFVF9ULCBpbnQpKTsKKyAgICBTU0xfc2V0X2FwcF9kYXRhKHNlbGYtPnNzbCwgc2VsZik7CisgICAgaWYgKHNvY2spIHsKKyAgICAgICAgU1NMX3NldF9mZChzZWxmLT5zc2wsIFB5X1NBRkVfRE9XTkNBU1Qoc29jay0+c29ja19mZCwgU09DS0VUX1QsIGludCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIEJJT3MgYXJlIHJlZmVyZW5jZSBjb3VudGVkIGFuZCBTU0xfc2V0X2JpbyBib3Jyb3dzIG91ciByZWZlcmVuY2UuCisgICAgICAgICAqIFRvIHByZXZlbnQgYSBkb3VibGUgZnJlZSBpbiBtZW1vcnlfYmlvX2RlYWxsb2MoKSB3ZSBuZWVkIHRvIHRha2UgYW4KKyAgICAgICAgICogZXh0cmEgcmVmZXJlbmNlIGhlcmUuICovCisgICAgICAgIENSWVBUT19hZGQoJmluYmlvLT5iaW8tPnJlZmVyZW5jZXMsIDEsIENSWVBUT19MT0NLX0JJTyk7CisgICAgICAgIENSWVBUT19hZGQoJm91dGJpby0+YmlvLT5yZWZlcmVuY2VzLCAxLCBDUllQVE9fTE9DS19CSU8pOworICAgICAgICBTU0xfc2V0X2JpbyhzZWxmLT5zc2wsIGluYmlvLT5iaW8sIG91dGJpby0+YmlvKTsKKyAgICB9CiAgICAgbW9kZSA9IFNTTF9NT0RFX0FDQ0VQVF9NT1ZJTkdfV1JJVEVfQlVGRkVSOwogI2lmZGVmIFNTTF9NT0RFX0FVVE9fUkVUUlkKICAgICBtb2RlIHw9IFNTTF9NT0RFX0FVVE9fUkVUUlk7CkBAIC01MjAsNyArNTQyLDcgQEAKICAgICAvKiBJZiB0aGUgc29ja2V0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIG9yIHRpbWVvdXQgbW9kZSwgc2V0IHRoZSBCSU8KICAgICAgKiB0byBub24tYmxvY2tpbmcgbW9kZSAoYmxvY2tpbmcgaXMgdGhlIGRlZmF1bHQpCiAgICAgICovCi0gICAgaWYgKHNvY2stPnNvY2tfdGltZW91dCA+PSAwLjApIHsKKyAgICBpZiAoc29jayAmJiBzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCkgewogICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIDEpOwogICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIDEpOwogICAgIH0KQEAgLTUzMywzNSArNTU1LDUyIEBACiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIHNlbGYtPnNvY2tldF90eXBlID0gc29ja2V0X3R5cGU7Ci0gICAgc2VsZi0+U29ja2V0ID0gUHlXZWFrcmVmX05ld1JlZigoUHlPYmplY3QgKikgc29jaywgTlVMTCk7Ci0gICAgaWYgKHNlbGYtPlNvY2tldCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5Tb2NrZXQgPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKSBzb2NrLCBOVUxMKTsKKyAgICAgICAgaWYgKHNlbGYtPlNvY2tldCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICBQeV9YREVDUkVGKHNlbGYtPnNlcnZlcl9ob3N0bmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAogLyogU1NMIG9iamVjdCBtZXRob2RzICovCiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMZG9faGFuZHNoYWtlKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LmRvX2hhbmRzaGFrZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjMDg5OGE4OTM2NTQ4ZjYgaW5wdXQ9ZDJkNzM3ZGUzZGYwMThjOF0qLwogewogICAgIGludCByZXQ7CiAgICAgaW50IGVycjsKICAgICBpbnQgc29ja3N0YXRlLCBub25ibG9ja2luZzsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sKLSAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNlbGYtPlNvY2tldCk7CisgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrID0gR0VUX1NPQ0tFVChzZWxmKTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOworICAgIGludCBoYXNfdGltZW91dDsKIAotICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKLSAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrKSB7CisgICAgICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKKworICAgICAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwogCi0gICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KLSAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIC8qIEFjdHVhbGx5IG5lZ290aWF0ZSBTU0wgY29ubmVjdGlvbiAqLwogICAgIC8qIFhYWCBJZiBTU0xfZG9faGFuZHNoYWtlKCkgcmV0dXJucyAwLCBpdCdzIGFsc28gYSBmYWlsdXJlLiAqLwpAQCAtNTcwLDE1ICs2MDksMjEgQEAKICAgICAgICAgcmV0ID0gU1NMX2RvX2hhbmRzaGFrZShzZWxmLT5zc2wpOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgcmV0KTsKICAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKwogICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAwKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAwLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlJTVFIoIlRoZSBoYW5kc2hha2Ugb3BlcmF0aW9uIHRpbWVkIG91dCIpKTsKQEAgLTU5NSw3ICs2NDAsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCB8fCBlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpOwotICAgIFB5X0RFQ1JFRihzb2NrKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIGlmIChyZXQgPCAxKQogICAgICAgICByZXR1cm4gUHlTU0xfU2V0RXJyb3Ioc2VsZiwgcmV0LCBfX0ZJTEVfXywgX19MSU5FX18pOwogCkBAIC02MTAsNyArNjU1LDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKHNvY2spOworICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTc3OSwxMiArODI0LDcgQEAKICAgICBjaGFyIGJ1ZlsyMDQ4XTsKICAgICBjaGFyICp2cHRyOwogICAgIGludCBsZW47Ci0gICAgLyogSXNzdWUgIzI5NzM6IEFTTjFfaXRlbV9kMmkoKSBBUEkgY2hhbmdlZCBpbiBPcGVuU1NMIDAuOS42bSAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNjBkZkwKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwotI2Vsc2UKLSAgICB1bnNpZ25lZCBjaGFyICpwOwotI2VuZGlmCiAKICAgICBpZiAoY2VydGlmaWNhdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHBlZXJfYWx0X25hbWVzOwpAQCAtMTI3NCwyNSArMTMxNCwyOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF90ZXN0X2RlY29kZV9jZXJ0aWZpY2F0ZSAoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmFyZ3MpIHsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX3Rlc3RfZGVjb2RlX2NlcnQKKyAgICBwYXRoOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNDb252ZXJ0ZXIiKQorICAgIC8KIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fdGVzdF9kZWNvZGVfY2VydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY3OWUwMWRiMjgyODA0ZTkgaW5wdXQ9Y2RlYWFmMDJkNDM0NjYyOF0qLworewogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBYNTA5ICp4PU5VTEw7CiAgICAgQklPICpjZXJ0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp0ZXN0X2RlY29kZV9jZXJ0aWZpY2F0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoKGNlcnQ9QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IG1hbGxvYyBtZW1vcnkgdG8gcmVhZCBmaWxlIik7CiAgICAgICAgIGdvdG8gZmFpbDA7CiAgICAgfQogCi0gICAgaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGNlcnQsIFB5Qnl0ZXNfQXNTdHJpbmcoZmlsZW5hbWUpKSA8PSAwKSB7CisgICAgaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGNlcnQsIFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCkpIDw9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3Qgb3BlbiBmaWxlIik7CiAgICAgICAgIGdvdG8gZmFpbDA7CkBAIC0xMzA5LDIwICsxMzUyLDMzIEBACiAgICAgWDUwOV9mcmVlKHgpOwogCiAgIGZhaWwwOgotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChjZXJ0ICE9IE5VTEwpIEJJT19mcmVlKGNlcnQpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnBlZXJfY2VydGlmaWNhdGUKKyAgICBkZXIgYXMgYmluYXJ5X21vZGU6IGJvb2wgPSBGYWxzZQorICAgIC8KKworUmV0dXJucyB0aGUgY2VydGlmaWNhdGUgZm9yIHRoZSBwZWVyLgorCitJZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzCitwcm92aWRlZCwgYnV0IG5vdCB2YWxpZGF0ZWQsIHJldHVybnMgYW4gZW1wdHkgZGljdGlvbmFyeS4gIE90aGVyd2lzZQorcmV0dXJucyBhIGRpY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVlciBjZXJ0aWZpY2F0ZS4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGlzIFRydWUsIHJldHVybnMgYSBERVItZW5jb2RlZCBjb3B5IG9mIHRoZQorcGVlciBjZXJ0aWZpY2F0ZSwgb3IgTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQuICBUaGlzIHdpbGwKK3JldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuJ3QgdmFsaWRhdGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfcGVlcmNlcnQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGJpbmFyeV9tb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwZGMzZTRkMWQ4MThhMWQgaW5wdXQ9ODI4MWJkMWQxOTNkYjg0M10qLwogewogICAgIGludCB2ZXJpZmljYXRpb247Ci0gICAgaW50IGJpbmFyeV9tb2RlID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6cGVlcl9jZXJ0aWZpY2F0ZSIsICZiaW5hcnlfbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5oYW5kc2hha2VfZG9uZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTEzNDQsNjggKzE0MDAsMTIzIEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfcGVlcmNlcnRfZG9jLAotInBlZXJfY2VydGlmaWNhdGUoW2Rlcj1GYWxzZV0pIC0+IGNlcnRpZmljYXRlXG5cCi1cblwKLVJldHVybnMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgcGVlci4gIElmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZCxcblwKLXJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLCBidXQgbm90IHZhbGlkYXRlZCwgcmV0dXJuc1xuXAotYW4gZW1wdHkgZGljdGlvbmFyeS4gIE90aGVyd2lzZSByZXR1cm5zIGEgZGljdCBjb250YWluaW5nIGluZm9ybWF0aW9uXG5cCi1hYm91dCB0aGUgcGVlciBjZXJ0aWZpY2F0ZS5cblwKLVxuXAotSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGlzIFRydWUsIHJldHVybnMgYSBERVItZW5jb2RlZCBjb3B5IG9mIHRoZVxuXAotcGVlciBjZXJ0aWZpY2F0ZSwgb3IgTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQuICBUaGlzIHdpbGxcblwKLXJldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuJ3QgdmFsaWRhdGVkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NpcGhlciAoUHlTU0xTb2NrZXQgKnNlbGYpIHsKLQotICAgIFB5T2JqZWN0ICpyZXR2YWwsICp2OwotICAgIGNvbnN0IFNTTF9DSVBIRVIgKmN1cnJlbnQ7Ci0gICAgY2hhciAqY2lwaGVyX25hbWU7Ci0gICAgY2hhciAqY2lwaGVyX3Byb3RvY29sOwotCi0gICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICBjdXJyZW50ID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzZWxmLT5zc2wpOwotICAgIGlmIChjdXJyZW50ID09IE5VTEwpCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotCi0gICAgcmV0dmFsID0gUHlUdXBsZV9OZXcoMyk7CitzdGF0aWMgUHlPYmplY3QgKgorY2lwaGVyX3RvX3R1cGxlKGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcikKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZSwgKmNpcGhlcl9wcm90b2NvbDsKKyAgICBQeU9iamVjdCAqdiwgKnJldHZhbCA9IFB5VHVwbGVfTmV3KDMpOwogICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjaXBoZXJfbmFtZSA9IChjaGFyICopIFNTTF9DSVBIRVJfZ2V0X25hbWUoY3VycmVudCk7CisgICAgY2lwaGVyX25hbWUgPSBTU0xfQ0lQSEVSX2dldF9uYW1lKGNpcGhlcik7CiAgICAgaWYgKGNpcGhlcl9uYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMCwgUHlfTm9uZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNpcGhlcl9uYW1lKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDA7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAwLCB2KTsKICAgICB9Ci0gICAgY2lwaGVyX3Byb3RvY29sID0gKGNoYXIgKikgU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjdXJyZW50KTsKKworICAgIGNpcGhlcl9wcm90b2NvbCA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY2lwaGVyKTsKICAgICBpZiAoY2lwaGVyX3Byb3RvY29sID09IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMSwgUHlfTm9uZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNpcGhlcl9wcm90b2NvbCk7CiAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWwwOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMSwgdik7CiAgICAgfQotICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoU1NMX0NJUEhFUl9nZXRfYml0cyhjdXJyZW50LCBOVUxMKSk7CisKKyAgICB2ID0gUHlMb25nX0Zyb21Mb25nKFNTTF9DSVBIRVJfZ2V0X2JpdHMoY2lwaGVyLCBOVUxMKSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAyLCB2KTsKKwogICAgIHJldHVybiByZXR2YWw7CiAKLSAgZmFpbDA6CisgIGZhaWw6CiAgICAgUHlfREVDUkVGKHJldHZhbCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5zaGFyZWRfY2lwaGVycworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2QxNzRlYWQyZTQyYzRmZCBpbnB1dD0wYmZlMTQ5ZGE4ZmU2MzA2XSovCit7CisgICAgU1NMX1NFU1NJT04gKnNlc3MgPSBTU0xfZ2V0X3Nlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqY2lwaGVyczsKKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKCFzZXNzIHx8ICFzZXNzLT5jaXBoZXJzKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBjaXBoZXJzID0gc2Vzcy0+Y2lwaGVyczsKKyAgICByZXMgPSBQeUxpc3RfTmV3KHNrX1NTTF9DSVBIRVJfbnVtKGNpcGhlcnMpKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IHNrX1NTTF9DSVBIRVJfbnVtKGNpcGhlcnMpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnR1cCA9IGNpcGhlcl90b190dXBsZShza19TU0xfQ0lQSEVSX3ZhbHVlKGNpcGhlcnMsIGkpKTsKKyAgICAgICAgaWYgKCF0dXApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlcywgaSwgdHVwKTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LmNpcGhlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2NpcGhlcl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3NjQxN2MxNmQwZTU4MTUgaW5wdXQ9NTQ4ZmIwZTI3MjQzNzk2ZF0qLworeworICAgIGNvbnN0IFNTTF9DSVBIRVIgKmN1cnJlbnQ7CisKKyAgICBpZiAoc2VsZi0+c3NsID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIGN1cnJlbnQgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNlbGYtPnNzbCk7CisgICAgaWYgKGN1cnJlbnQgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIGNpcGhlcl90b190dXBsZShjdXJyZW50KTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnZlcnNpb24KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTc4YWVkMzMxOTNiMmNkYiBpbnB1dD05MDAxODZhNTAzNDM2ZmQ2XSovCit7CisgICAgY29uc3QgY2hhciAqdmVyc2lvbjsKKworICAgIGlmIChzZWxmLT5zc2wgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgdmVyc2lvbiA9IFNTTF9nZXRfdmVyc2lvbihzZWxmLT5zc2wpOworICAgIGlmICghc3RyY21wKHZlcnNpb24sICJ1bmtub3duIikpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyh2ZXJzaW9uKTsKK30KKwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sKFB5U1NMU29ja2V0ICpzZWxmKSB7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjkxZDQ5NGNkMjA3ZWNmNiBpbnB1dD1jMjhmZGUxMzkyMDRiODI2XSovCit7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb3V0OwogICAgIHVuc2lnbmVkIGludCBvdXRsZW47CiAKQEAgLTE0MTQsMTEgKzE1MjUsMzggQEAKIAogICAgIGlmIChvdXQgPT0gTlVMTCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKSBvdXQsIG91dGxlbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKW91dCwgb3V0bGVuKTsKIH0KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NvbXByZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmKSB7CisjaWZkZWYgSEFWRV9BTFBOCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzMzNjg4YjMwM2QyNTBmIGlucHV0PTQ0MmRlMzBlMzViYzI5MTNdKi8KK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQ7CisgICAgdW5zaWduZWQgaW50IG91dGxlbjsKKworICAgIFNTTF9nZXQwX2FscG5fc2VsZWN0ZWQoc2VsZi0+c3NsLCAmb3V0LCAmb3V0bGVuKTsKKworICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKW91dCwgb3V0bGVuKTsKK30KKyNlbmRpZgorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuY29tcHJlc3Npb24KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJkMTZjYjFiYjQ2NDZhZTcgaW5wdXQ9NWQwNTlkMGEyYmJjMzJjOF0qLworewogI2lmZGVmIE9QRU5TU0xfTk9fQ09NUAogICAgIFB5X1JFVFVSTl9OT05FOwogI2Vsc2UKQEAgLTE0NzMsNiArMTYxMSw1NCBAQAogU1NMU29ja2V0IGJlZm9yZSB0aGUgY3J5cHRvZ3JhcGhpYyBleGNoYW5nZSBoYW5kc2hha2UgbWVzc2FnZXNcbiIpOwogCiAKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9nZXRfc2VydmVyX3NpZGUoUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmMpCit7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhzZWxmLT5zb2NrZXRfdHlwZSA9PSBQWV9TU0xfU0VSVkVSKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zZXJ2ZXJfc2lkZV9kb2MsCisiV2hldGhlciB0aGlzIGlzIGEgc2VydmVyLXNpZGUgc29ja2V0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZShQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICBpZiAoc2VsZi0+c2VydmVyX2hvc3RuYW1lID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIFB5X0lOQ1JFRihzZWxmLT5zZXJ2ZXJfaG9zdG5hbWUpOworICAgIHJldHVybiBzZWxmLT5zZXJ2ZXJfaG9zdG5hbWU7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfc2VydmVyX2hvc3RuYW1lX2RvYywKKyJUaGUgY3VycmVudGx5IHNldCBzZXJ2ZXIgaG9zdG5hbWUgKGZvciBTTkkpLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X293bmVyKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjKQoreworICAgIFB5T2JqZWN0ICpvd25lcjsKKworICAgIGlmIChzZWxmLT5vd25lciA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIG93bmVyID0gUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5vd25lcik7CisgICAgUHlfSU5DUkVGKG93bmVyKTsKKyAgICByZXR1cm4gb3duZXI7Cit9CisKK3N0YXRpYyBpbnQKK1B5U1NMX3NldF9vd25lcihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjKQoreworICAgIFB5X1hERUNSRUYoc2VsZi0+b3duZXIpOworICAgIHNlbGYtPm93bmVyID0gUHlXZWFrcmVmX05ld1JlZih2YWx1ZSwgTlVMTCk7CisgICAgaWYgKHNlbGYtPm93bmVyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9vd25lcl9kb2MsCisiVGhlIFB5dGhvbi1sZXZlbCBvd25lciBvZiB0aGlzIG9iamVjdC5cCitQYXNzZWQgYXMgXCJzZWxmXCIgaW4gc2VydmVybmFtZSBjYWxsYmFjay4iKTsKKwogCiBzdGF0aWMgdm9pZCBQeVNTTF9kZWFsbG9jKFB5U1NMU29ja2V0ICpzZWxmKQogewpAQCAtMTQ4Miw2ICsxNjY4LDggQEAKICAgICAgICAgU1NMX2ZyZWUoc2VsZi0+c3NsKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPlNvY2tldCk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5jdHgpOworICAgIFB5X1hERUNSRUYoc2VsZi0+c2VydmVyX2hvc3RuYW1lKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPm93bmVyKTsKICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKQEAgLTE0OTEsMTcgKzE2NzksMjcgQEAKICAqLwogCiBzdGF0aWMgaW50Ci1jaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZykKK1B5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCkKIHsKKyAgICBpbnQgcmM7CisjaWZkZWYgSEFWRV9QT0xMCisgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7CisgICAgX1B5VGltZV90IG1zOworI2Vsc2UKKyAgICBpbnQgbmZkczsKICAgICBmZF9zZXQgZmRzOwogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgIGludCByYzsKKyNlbmRpZgogCiAgICAgLyogTm90aGluZyB0byBkbyB1bmxlc3Mgd2UncmUgaW4gdGltZW91dCBtb2RlIChub3Qgbm9uLWJsb2NraW5nKSAqLwotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPCAwLjApCi0gICAgICAgIHJldHVybiBTT0NLRVRfSVNfQkxPQ0tJTkc7Ci0gICAgZWxzZSBpZiAocy0+c29ja190aW1lb3V0ID09IDAuMCkKKyAgICBpZiAoKHMgPT0gTlVMTCkgfHwgKHRpbWVvdXQgPT0gMCkpCiAgICAgICAgIHJldHVybiBTT0NLRVRfSVNfTk9OQkxPQ0tJTkc7CisgICAgZWxzZSBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDApCisgICAgICAgICAgICByZXR1cm4gU09DS0VUX0hBU19USU1FRF9PVVQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBTT0NLRVRfSVNfQkxPQ0tJTkc7CisgICAgfQogCiAgICAgLyogR3VhcmQgYWdhaW5zdCBjbG9zZWQgc29ja2V0ICovCiAgICAgaWYgKHMtPnNvY2tfZmQgPCAwKQpAQCAtMTUxMCw4NSArMTcwOCw5MSBAQAogICAgIC8qIFByZWZlciBwb2xsLCBpZiBhdmFpbGFibGUsIHNpbmNlIHlvdSBjYW4gcG9sbCgpIGFueSBmZAogICAgICAqIHdoaWNoIGNhbid0IGJlIGRvbmUgd2l0aCBzZWxlY3QoKS4gKi8KICNpZmRlZiBIQVZFX1BPTEwKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOwotICAgICAgICBpbnQgdGltZW91dDsKKyAgICBwb2xsZmQuZmQgPSBzLT5zb2NrX2ZkOworICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKIAotICAgICAgICBwb2xsZmQuZmQgPSBzLT5zb2NrX2ZkOwotICAgICAgICBwb2xsZmQuZXZlbnRzID0gd3JpdGluZyA/IFBPTExPVVQgOiBQT0xMSU47CisgICAgLyogdGltZW91dCBpcyBpbiBzZWNvbmRzLCBwb2xsKCkgdXNlcyBtaWxsaXNlY29uZHMgKi8KKyAgICBtcyA9IChpbnQpX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgIGFzc2VydChtcyA8PSBJTlRfTUFYKTsKIAotICAgICAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCkocy0+c29ja190aW1lb3V0ICogMTAwMCArIDAuNSk7Ci0gICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmMgPSBwb2xsKCZwb2xsZmQsIDEsIHRpbWVvdXQpOwotICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGdvdG8gbm9ybWFsX3JldHVybjsKLSAgICB9Ci0jZW5kaWYKLQorICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByYyA9IHBvbGwoJnBvbGxmZCwgMSwgKGludCltcyk7CisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyNlbHNlCiAgICAgLyogR3VhcmQgYWdhaW5zdCBzb2NrZXQgdG9vIGxhcmdlIGZvciBzZWxlY3QqLwogICAgIGlmICghX1B5SXNTZWxlY3RhYmxlX2ZkKHMtPnNvY2tfZmQpKQogICAgICAgICByZXR1cm4gU09DS0VUX1RPT19MQVJHRV9GT1JfU0VMRUNUOwogCi0gICAgLyogQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgdG8gc2VsZWN0ICovCi0gICAgdHYudHZfc2VjID0gKGludClzLT5zb2NrX3RpbWVvdXQ7Ci0gICAgdHYudHZfdXNlYyA9IChpbnQpKChzLT5zb2NrX3RpbWVvdXQgLSB0di50dl9zZWMpICogMWU2KTsKKyAgICBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKHRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKwogICAgIEZEX1pFUk8oJmZkcyk7CiAgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHMpOwogCi0gICAgLyogU2VlIGlmIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KKyAgICAvKiBXYWl0IHVudGlsIHRoZSBzb2NrZXQgYmVjb21lcyByZWFkeSAqLwogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuZmRzID0gUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpOwogICAgIGlmICh3cml0aW5nKQotICAgICAgICByYyA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgIE5VTEwsICZmZHMsIE5VTEwsICZ0dik7CisgICAgICAgIHJjID0gc2VsZWN0KG5mZHMsIE5VTEwsICZmZHMsIE5VTEwsICZ0dik7CiAgICAgZWxzZQotICAgICAgICByYyA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CisgICAgICAgIHJjID0gc2VsZWN0KG5mZHMsICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLQotI2lmZGVmIEhBVkVfUE9MTAotbm9ybWFsX3JldHVybjoKICNlbmRpZgorCiAgICAgLyogUmV0dXJuIFNPQ0tFVF9USU1FRF9PVVQgb24gdGltZW91dCwgU09DS0VUX09QRVJBVElPTl9PSyBvdGhlcndpc2UKICAgICAgICAod2hlbiB3ZSBhcmUgYWJsZSB0byB3cml0ZSBvciB3aGVuIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIHJlYWQpICovCiAgICAgcmV0dXJuIHJjID09IDAgPyBTT0NLRVRfSEFTX1RJTUVEX09VVCA6IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMd3JpdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZXMgdGhlIGJ5dGVzLWxpa2Ugb2JqZWN0IGIgaW50byB0aGUgU1NMIG9iamVjdC4KKworUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfd3JpdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFhN2E2YmU1NTI3MzU4ZDggaW5wdXQ9NzcyNjJkOTk0ZmU1MTAwYV0qLwogewotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgaW50IGxlbjsKICAgICBpbnQgc29ja3N0YXRlOwogICAgIGludCBlcnI7CiAgICAgaW50IG5vbmJsb2NraW5nOwotICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jawotICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+U29ja2V0KTsKKyAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sgPSBHRVRfU09DS0VUKHNlbGYpOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CisgICAgaW50IGhhc190aW1lb3V0OwogCi0gICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKLSAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAotICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihzb2NrKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmYnVmKSkgewotICAgICAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHNvY2spOwogICAgIH0KIAotICAgIGlmIChidWYubGVuID4gSU5UX01BWCkgeworICAgIGlmIChiLT5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBsb25nZXIgdGhhbiAlZCBieXRlcyIsIElOVF9NQVgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCi0gICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB9CiAKLSAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7CisgICAgdGltZW91dCA9IEdFVF9TT0NLRVRfVElNRU9VVChzb2NrKTsKKyAgICBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisKKyAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CiAgICAgaWYgKHNvY2tzdGF0ZSA9PSBTT0NLRVRfSEFTX1RJTUVEX09VVCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd3JpdGUgb3BlcmF0aW9uIHRpbWVkIG91dCIpOwpAQCAtMTYwMiwyMSArMTgwNiwyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIlVuZGVybHlpbmcgc29ja2V0IHRvbyBsYXJnZSBmb3Igc2VsZWN0KCkuIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCiAgICAgZG8gewogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGxlbiA9IFNTTF93cml0ZShzZWxmLT5zc2wsIGJ1Zi5idWYsIChpbnQpYnVmLmxlbik7CisgICAgICAgIGxlbiA9IFNTTF93cml0ZShzZWxmLT5zc2wsIGItPmJ1ZiwgKGludCliLT5sZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgbGVuKTsKICAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisKKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQorCisgICAgICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAwKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAwLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHdyaXRlIG9wZXJhdGlvbiB0aW1lZCBvdXQiKTsKQEAgLTE2MzAsMjYgKzE4NDAsMjYgQEAKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEIHx8IGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSk7CiAKLSAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIGlmIChsZW4gPiAwKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGxlbik7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gUHlTU0xfU2V0RXJyb3Ioc2VsZiwgbGVuLCBfX0ZJTEVfXywgX19MSU5FX18pOwogCiBlcnJvcjoKLSAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMd3JpdGVfZG9jLAotIndyaXRlKHMpIC0+IGxlblxuXAotXG5cCi1Xcml0ZXMgdGhlIHN0cmluZyBzIGludG8gdGhlIFNTTCBvYmplY3QuICBSZXR1cm5zIHRoZSBudW1iZXJcblwKLW9mIGJ5dGVzIHdyaXR0ZW4uIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQucGVuZGluZwogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHBlbmRpbmcoUHlTU0xTb2NrZXQgKnNlbGYpCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBkZWNyeXB0ZWQgYnl0ZXMgYXZhaWxhYmxlIGZvciByZWFkLCBwZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODNkOWZlY2RjMzA4YTgzIGlucHV0PTJiNzc0ODdkNmRmZDU5N2ZdKi8KIHsKICAgICBpbnQgY291bnQgPSAwOwogCkBAIC0xNjYyLDQ5ICsxODcyLDUyIEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY291bnQpOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMcGVuZGluZ19kb2MsCi0icGVuZGluZygpIC0+IGNvdW50XG5cCi1cblwKLVJldHVybnMgdGhlIG51bWJlciBvZiBhbHJlYWR5IGRlY3J5cHRlZCBieXRlcyBhdmFpbGFibGUgZm9yIHJlYWQsXG5cCi1wZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQucmVhZAorICAgIHNpemUgYXMgbGVuOiBpbnQKKyAgICBbCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgXQorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xyZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JlYWQgdXAgdG8gc2l6ZSBieXRlcyBmcm9tIHRoZSBTU0wgc29ja2V0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGxlbiwgaW50IGdyb3VwX3JpZ2h0XzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwMDk3Nzc2Y2VjMmEwYWYgaW5wdXQ9ZmYxNTdlYjkxOGQwOTA1Yl0qLwogewogICAgIFB5T2JqZWN0ICpkZXN0ID0gTlVMTDsKLSAgICBQeV9idWZmZXIgYnVmOwogICAgIGNoYXIgKm1lbTsKLSAgICBpbnQgbGVuLCBjb3VudDsKLSAgICBpbnQgYnVmX3Bhc3NlZCA9IDA7CisgICAgaW50IGNvdW50OwogICAgIGludCBzb2Nrc3RhdGU7CiAgICAgaW50IGVycjsKICAgICBpbnQgbm9uYmxvY2tpbmc7Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrCi0gICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5Tb2NrZXQpOworICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jayA9IEdFVF9TT0NLRVQoc2VsZik7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKKyAgICBpbnQgaGFzX3RpbWVvdXQ7CiAKLSAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgewotICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwogCi0gICAgYnVmLm9iaiA9IE5VTEw7Ci0gICAgYnVmLmJ1ZiA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpfHcqOnJlYWQiLCAmbGVuLCAmYnVmKSkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmICgoYnVmLmJ1ZiA9PSBOVUxMKSAmJiAoYnVmLm9iaiA9PSBOVUxMKSkgeworICAgIGlmICghZ3JvdXBfcmlnaHRfMSkgewogICAgICAgICBkZXN0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOwogICAgICAgICBpZiAoZGVzdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgbWVtID0gUHlCeXRlc19BU19TVFJJTkcoZGVzdCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBidWZfcGFzc2VkID0gMTsKLSAgICAgICAgbWVtID0gYnVmLmJ1ZjsKLSAgICAgICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+IGJ1Zi5sZW4pIHsKLSAgICAgICAgICAgIGxlbiA9IChpbnQpIGJ1Zi5sZW47Ci0gICAgICAgICAgICBpZiAoYnVmLmxlbiAhPSBsZW4pIHsKKyAgICAgICAgbWVtID0gYnVmZmVyLT5idWY7CisgICAgICAgIGlmIChsZW4gPD0gMCB8fCBsZW4gPiBidWZmZXItPmxlbikgeworICAgICAgICAgICAgbGVuID0gKGludCkgYnVmZmVyLT5sZW47CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5sZW4gIT0gbGVuKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhpbXVtIGxlbmd0aCBjYW4ndCBmaXQgaW4gYSBDICdpbnQnIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE3MTIsMzEgKzE5MjUsNDMgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCi0gICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB9CisKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIGRvIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBjb3VudCA9IFNTTF9yZWFkKHNlbGYtPnNzbCwgbWVtLCBsZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgY291bnQpOwogICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDApOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDAsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2UgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDEpOwotICAgICAgICB9IGVsc2UgaWYgKChlcnIgPT0gU1NMX0VSUk9SX1pFUk9fUkVUVVJOKSAmJgotICAgICAgICAgICAgICAgICAgIChTU0xfZ2V0X3NodXRkb3duKHNlbGYtPnNzbCkgPT0KLSAgICAgICAgICAgICAgICAgICAgU1NMX1JFQ0VJVkVEX1NIVVRET1dOKSkKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKKyAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1pFUk9fUkVUVVJOICYmCisgICAgICAgICAgICAgICAgICAgU1NMX2dldF9zaHV0ZG93bihzZWxmLT5zc2wpID09IFNTTF9SRUNFSVZFRF9TSFVURE9XTikKICAgICAgICAgewogICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc29ja3N0YXRlID0gU09DS0VUX09QRVJBVElPTl9PSzsKICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBTT0NLRVRfT1BFUkFUSU9OX09LOworCiAgICAgICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNvY2tldE1vZHVsZS50aW1lb3V0X2Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgcmVhZCBvcGVyYXRpb24gdGltZWQgb3V0Iik7CkBAIC0xNzQ1LDU1ICsxOTcwLDY2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEIHx8IGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSk7CisKICAgICBpZiAoY291bnQgPD0gMCkgewogICAgICAgICBQeVNTTF9TZXRFcnJvcihzZWxmLCBjb3VudCwgX19GSUxFX18sIF9fTElORV9fKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKIGRvbmU6Ci0gICAgUHlfREVDUkVGKHNvY2spOwotICAgIGlmICghYnVmX3Bhc3NlZCkgeworICAgIFB5X1hERUNSRUYoc29jayk7CisgICAgaWYgKCFncm91cF9yaWdodF8xKSB7CiAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmZGVzdCwgY291bnQpOwogICAgICAgICByZXR1cm4gZGVzdDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY291bnQpOwogICAgIH0KIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKHNvY2spOwotICAgIGlmICghYnVmX3Bhc3NlZCkKKyAgICBQeV9YREVDUkVGKHNvY2spOworICAgIGlmICghZ3JvdXBfcmlnaHRfMSkKICAgICAgICAgUHlfWERFQ1JFRihkZXN0KTsKLSAgICBlbHNlCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9TU0xyZWFkX2RvYywKLSJyZWFkKFtsZW5dKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCB1cCB0byBsZW4gYnl0ZXMgZnJvbSB0aGUgU1NMIHNvY2tldC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5zaHV0ZG93bgogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHNodXRkb3duKFB5U1NMU29ja2V0ICpzZWxmKQorRG9lcyB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZSB3aXRoIHRoZSByZW1vdGUgZW5kLgorCitSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25faW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYTFhYTdlZDlkMjVjYTQyIGlucHV0PWVkZTJjYzFhMmRkZjBlZTRdKi8KIHsKICAgICBpbnQgZXJyLCBzc2xfZXJyLCBzb2Nrc3RhdGUsIG5vbmJsb2NraW5nOwogICAgIGludCB6ZXJvcyA9IDA7Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrCi0gICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5Tb2NrZXQpOworICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jayA9IEdFVF9TT0NLRVQoc2VsZik7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKKyAgICBpbnQgaGFzX3RpbWVvdXQ7CiAKLSAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KLSAgICBpZiAoKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHx8IChzb2NrLT5zb2NrX2ZkIDwgMCkpIHsKLSAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAotICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KKyAgICAgICAgaWYgKCgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB8fCAoc29jay0+c29ja19mZCA8IDApKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKKworICAgICAgICAvKiBKdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwogCi0gICAgLyogSnVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KLSAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTE4MDksNiArMjA0NSw3IEBACiAgICAgICAgICAgICBTU0xfc2V0X3JlYWRfYWhlYWQoc2VsZi0+c3NsLCAwKTsKICAgICAgICAgZXJyID0gU1NMX3NodXRkb3duKHNlbGYtPnNzbCk7CiAgICAgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisKICAgICAgICAgLyogSWYgZXJyID09IDEsIGEgc2VjdXJlIHNodXRkb3duIHdpdGggU1NMX3NodXRkb3duKCkgaXMgY29tcGxldGUgKi8KICAgICAgICAgaWYgKGVyciA+IDApCiAgICAgICAgICAgICBicmVhazsKQEAgLTE4MjMsMTQgKzIwNjAsMTggQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIC8qIFBvc3NpYmx5IHJldHJ5IHNodXRkb3duIHVudGlsIHRpbWVvdXQgb3IgZmFpbHVyZSAqLwogICAgICAgICBzc2xfZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGVycik7CiAgICAgICAgIGlmIChzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpCi0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMCk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMCwgdGltZW91dCk7CiAgICAgICAgIGVsc2UgaWYgKHNzbF9lcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpCi0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgICAgIGlmIChzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U29ja2V0TW9kdWxlLnRpbWVvdXRfZXJyb3IsCkBAIC0xODUxLDI3ICsyMDkyLDMxIEBACiAgICAgfQogCiAgICAgaWYgKGVyciA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHNvY2spOworICAgICAgICBQeV9YREVDUkVGKHNvY2spOwogICAgICAgICByZXR1cm4gUHlTU0xfU2V0RXJyb3Ioc2VsZiwgZXJyLCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgIH0KLSAgICBlbHNlCisgICAgaWYgKHNvY2spCiAgICAgICAgIC8qIEl0J3MgYWxyZWFkeSBJTkNSRUYnZWQgKi8KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzb2NrOworICAgIGVsc2UKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihzb2NrKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMc2h1dGRvd25fZG9jLAotInNodXRkb3duKHMpIC0+IHNvY2tldFxuXAotXG5cCi1Eb2VzIHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlIHdpdGggdGhlIHJlbW90ZSBlbmQsIGFuZCByZXR1cm5zXG5cCi10aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnRsc191bmlxdWVfY2IKIAotI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorUmV0dXJucyB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LgorCitJZiB0aGUgVExTIGhhbmRzaGFrZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBOb25lIGlzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZikKK19zc2xfX1NTTFNvY2tldF90bHNfdW5pcXVlX2NiX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjNhODMyZDYwM2Y1ODZhZiBpbnB1dD00Mzk1MjVjN2IzZDhkMzRkXSovCiB7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgY2hhciBidWZbUHlTU0xfQ0JfTUFYTEVOXTsKQEAgLTE4OTUsNDIgKzIxNDAsMzIgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2MsCi0idGxzX3VuaXF1ZV9jYigpIC0+IGJ5dGVzXG5cCi1cblwKLVJldHVybnMgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgZGF0YSwgYXMgZGVmaW5lZCBieSBSRkMgNTkyOS5cblwKLVxuXAotSWYgdGhlIFRMUyBoYW5kc2hha2UgaXMgbm90IHlldCBjb21wbGV0ZSwgTm9uZSBpcyByZXR1cm5lZCIpOwotCi0jZW5kaWYgLyogSEFWRV9PUEVOU1NMX0ZJTklTSEVEICovCi0KIHN0YXRpYyBQeUdldFNldERlZiBzc2xfZ2V0c2V0bGlzdFtdID0gewogICAgIHsiY29udGV4dCIsIChnZXR0ZXIpIFB5U1NMX2dldF9jb250ZXh0LAogICAgICAgICAgICAgICAgIChzZXR0ZXIpIFB5U1NMX3NldF9jb250ZXh0LCBQeVNTTF9zZXRfY29udGV4dF9kb2N9LAorICAgIHsic2VydmVyX3NpZGUiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfc2VydmVyX3NpZGUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXJ2ZXJfc2lkZV9kb2N9LAorICAgIHsic2VydmVyX2hvc3RuYW1lIiwgKGdldHRlcikgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWVfZG9jfSwKKyAgICB7Im93bmVyIiwgKGdldHRlcikgUHlTU0xfZ2V0X293bmVyLCAoc2V0dGVyKSBQeVNTTF9zZXRfb3duZXIsCisgICAgICAgICAgICAgIFB5U1NMX2dldF9vd25lcl9kb2N9LAogICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIFB5U1NMTWV0aG9kc1tdID0gewotICAgIHsiZG9faGFuZHNoYWtlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTGRvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1N9LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMd3JpdGUsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfU1NMd3JpdGVfZG9jfSwKLSAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMcmVhZCwgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9TU0xyZWFkX2RvY30sCi0gICAgeyJwZW5kaW5nIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHBlbmRpbmcsIE1FVEhfTk9BUkdTLAotICAgICBQeVNTTF9TU0xwZW5kaW5nX2RvY30sCi0gICAgeyJwZWVyX2NlcnRpZmljYXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3BlZXJjZXJ0LCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX3BlZXJjZXJ0X2RvY30sCi0gICAgeyJjaXBoZXIiLCAoUHlDRnVuY3Rpb24pUHlTU0xfY2lwaGVyLCBNRVRIX05PQVJHU30sCi0jaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotICAgIHsic2VsZWN0ZWRfbnBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbCwgTUVUSF9OT0FSR1N9LAotI2VuZGlmCi0gICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilQeVNTTF9jb21wcmVzc2lvbiwgTUVUSF9OT0FSR1N9LAotICAgIHsic2h1dGRvd24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMc2h1dGRvd24sIE1FVEhfTk9BUkdTLAotICAgICBQeVNTTF9TU0xzaHV0ZG93bl9kb2N9LAotI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAotICAgIHsidGxzX3VuaXF1ZV9jYiIsIChQeUNGdW5jdGlvbilQeVNTTF90bHNfdW5pcXVlX2NiLCBNRVRIX05PQVJHUywKLSAgICAgUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2N9LAotI2VuZGlmCisgICAgX1NTTF9fU1NMU09DS0VUX0RPX0hBTkRTSEFLRV9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfV1JJVEVfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1JFQURfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1BFTkRJTkdfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1BFRVJfQ0VSVElGSUNBVEVfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX0NJUEhFUl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfU0hBUkVEX0NJUEhFUlNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1ZFUlNJT05fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfQ09NUFJFU1NJT05fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1NIVVRET1dOX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9UTFNfVU5JUVVFX0NCX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMTk3MywyMCArMjIwOCwyMSBAQAogICogX1NTTENvbnRleHQgb2JqZWN0cwogICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX3NzbC5fU1NMQ29udGV4dC5fX25ld19fCisgICAgcHJvdG9jb2wgYXMgcHJvdG9fdmVyc2lvbjogaW50CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotY29udGV4dF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgcHJvdG9fdmVyc2lvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yY2YwZDdhMDc0MWI2YmQxIGlucHV0PThkNThhODA1Yjk1ZmM1MzRdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicHJvdG9jb2wiLCBOVUxMfTsKICAgICBQeVNTTENvbnRleHQgKnNlbGY7Ci0gICAgaW50IHByb3RvX3ZlcnNpb24gPSBQWV9TU0xfVkVSU0lPTl9TU0wyMzsKICAgICBsb25nIG9wdGlvbnM7CiAgICAgU1NMX0NUWCAqY3R4ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAotICAgICAgICBhcmdzLCBrd2RzLCAiaTpfU1NMQ29udGV4dCIsIGt3bGlzdCwKLSAgICAgICAgJnByb3RvX3ZlcnNpb24pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMxKQogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFN2MV9tZXRob2QoKSk7CkBAIC0yMDMxLDYgKzIyNjcsOSBAQAogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKICAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gTlVMTDsKICNlbmRpZgorI2lmZGVmIEhBVkVfQUxQTgorICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzID0gTlVMTDsKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKQEAgLTIwOTksMjAgKzIzMzgsMjUgQEAKICAgICBjb250ZXh0X2NsZWFyKHNlbGYpOwogICAgIFNTTF9DVFhfZnJlZShzZWxmLT5jdHgpOwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLSAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworICAgIFB5TWVtX0ZSRUUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICBQeU1lbV9GUkVFKHNlbGYtPmFscG5fcHJvdG9jb2xzKTsKICNlbmRpZgogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zZXRfY2lwaGVycyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCByZXQ7Ci0gICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuc2V0X2NpcGhlcnMKKyAgICBjaXBoZXJsaXN0OiBzdHIKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KHNlbGYtPmN0eCwgY2lwaGVybGlzdCk7CitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgY29uc3QgY2hhciAqY2lwaGVybGlzdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYTMxNjJmMzU1N2MwZjNmIGlucHV0PWE3YWM5MzFiOWYzY2E3ZmNdKi8KK3sKKyAgICBpbnQgcmV0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Qoc2VsZi0+Y3R4LCBjaXBoZXJsaXN0KTsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgLyogQ2xlYXJpbmcgdGhlIGVycm9yIHF1ZXVlIGlzIG5lY2Vzc2FyeSBvbiBzb21lIE9wZW5TU0wgdmVyc2lvbnMsCiAgICAgICAgICAgIG90aGVyd2lzZSB0aGUgZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhZ2FpbiB3aGVuIGFub3RoZXIgU1NMIGNhbGwKQEAgLTIxMjYsNiArMjM3MCwzMCBAQAogfQogCiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorc3RhdGljIGludAorZG9fcHJvdG9jb2xfc2VsZWN0aW9uKGludCBhbHBuLCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VydmVyX3Byb3RvY29scywgdW5zaWduZWQgaW50IHNlcnZlcl9wcm90b2NvbHNfbGVuLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNsaWVudF9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBjbGllbnRfcHJvdG9jb2xzX2xlbikKK3sKKyAgICBpbnQgcmV0OworICAgIGlmIChjbGllbnRfcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgY2xpZW50X3Byb3RvY29scyA9ICh1bnNpZ25lZCBjaGFyICopIiI7CisgICAgICAgIGNsaWVudF9wcm90b2NvbHNfbGVuID0gMDsKKyAgICB9CisgICAgaWYgKHNlcnZlcl9wcm90b2NvbHMgPT0gTlVMTCkgeworICAgICAgICBzZXJ2ZXJfcHJvdG9jb2xzID0gKHVuc2lnbmVkIGNoYXIgKikiIjsKKyAgICAgICAgc2VydmVyX3Byb3RvY29sc19sZW4gPSAwOworICAgIH0KKworICAgIHJldCA9IFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scywgc2VydmVyX3Byb3RvY29sc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcm90b2NvbHMsIGNsaWVudF9wcm90b2NvbHNfbGVuKTsKKyAgICBpZiAoYWxwbiAmJiByZXQgIT0gT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkKKyAgICAgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX05PQUNLOworCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorCiAvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZV9jYiAqLwogc3RhdGljIGludAogX2FkdmVydGlzZU5QTl9jYihTU0wgKnMsCkBAIC0yMTM1LDEwICsyNDAzLDEwIEBACiAgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOwogCiAgICAgaWYgKHNzbF9jdHgtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgewotICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopICIiOworICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIiI7CiAgICAgICAgICpsZW4gPSAwOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICAgICAgKmRhdGEgPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzOwogICAgICAgICAqbGVuID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sc19sZW47CiAgICAgfQogCkBAIC0yMTUxLDQ2ICsyNDE5LDMwIEBACiAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlciwgdW5zaWduZWQgaW50IHNlcnZlcl9sZW4sCiAgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCiB7Ci0gICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOwotCi0gICAgdW5zaWduZWQgY2hhciAqY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKLSAgICBpbnQgY2xpZW50X2xlbjsKLQotICAgIGlmIChjbGllbnQgPT0gTlVMTCkgewotICAgICAgICBjbGllbnQgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKLSAgICAgICAgY2xpZW50X2xlbiA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xpZW50X2xlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOwotICAgIH0KLQotICAgIFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCBzZXJ2ZXJfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIGNsaWVudF9sZW4pOwotCi0gICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworICAgIFB5U1NMQ29udGV4dCAqY3R4ID0gKFB5U1NMQ29udGV4dCAqKWFyZ3M7CisgICAgcmV0dXJuIGRvX3Byb3RvY29sX3NlbGVjdGlvbigwLCBvdXQsIG91dGxlbiwgc2VydmVyLCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5ucG5fcHJvdG9jb2xzLCBjdHgtPm5wbl9wcm90b2NvbHNfbGVuKTsKIH0KICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll9zZXRfbnBuX3Byb3RvY29scworICAgIHByb3RvczogUHlfYnVmZmVyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpwcm90b3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzJiMDAyYzMzMjQzOTBjNiBpbnB1dD0zMTlmY2I2NmFiZjk1YmQ3XSovCiB7CiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotICAgIFB5X2J1ZmZlciBwcm90b3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOwotICAgIH0KLQotICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBQeU1lbV9NYWxsb2MocHJvdG9zLmxlbik7Ci0gICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIFB5TWVtX0ZyZWUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MtPmxlbik7CisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIG1lbWNweShzZWxmLT5ucG5fcHJvdG9jb2xzLCBwcm90b3MuYnVmLCBwcm90b3MubGVuKTsKLSAgICBzZWxmLT5ucG5fcHJvdG9jb2xzX2xlbiA9IChpbnQpIHByb3Rvcy5sZW47CisgICAgbWVtY3B5KHNlbGYtPm5wbl9wcm90b2NvbHMsIHByb3Rvcy0+YnVmLCBwcm90b3MtPmxlbik7CisgICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MtPmxlbjsKIAogICAgIC8qIHNldCBib3RoIHNlcnZlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYmVjYXVzZSB0aGUgY29udGV4dCBjYW4KICAgICAgKiBiZSB1c2VkIHRvIGNyZWF0ZSBib3RoIHR5cGVzIG9mIHNvY2tldHMgKi8KQEAgLTIyMDEsNyArMjQ1Myw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGVjdE5QTl9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKIAotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAjZWxzZQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLApAQCAtMjIxMCw2ICsyNDYxLDUxIEBACiAjZW5kaWYKIH0KIAorI2lmZGVmIEhBVkVfQUxQTgorc3RhdGljIGludAorX3NlbGVjdEFMUE5fY2IoU1NMICpzLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNsaWVudF9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBjbGllbnRfcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKmN0eCA9IChQeVNTTENvbnRleHQgKilhcmdzOworICAgIHJldHVybiBkb19wcm90b2NvbF9zZWxlY3Rpb24oMSwgKHVuc2lnbmVkIGNoYXIgKiopb3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmFscG5fcHJvdG9jb2xzLCBjdHgtPmFscG5fcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcm90b2NvbHMsIGNsaWVudF9wcm90b2NvbHNfbGVuKTsKK30KKyNlbmRpZgorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll9zZXRfYWxwbl9wcm90b2NvbHMKKyAgICBwcm90b3M6IFB5X2J1ZmZlcgorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3NTk5YTdmNzY2NTFhOWIgaW5wdXQ9OWJiYTk2NDU5NWQ1MTliZV0qLworeworI2lmZGVmIEhBVkVfQUxQTgorICAgIFB5TWVtX0ZSRUUoc2VsZi0+YWxwbl9wcm90b2NvbHMpOworICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzID0gUHlNZW1fTWFsbG9jKHByb3Rvcy0+bGVuKTsKKyAgICBpZiAoIXNlbGYtPmFscG5fcHJvdG9jb2xzKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1jcHkoc2VsZi0+YWxwbl9wcm90b2NvbHMsIHByb3Rvcy0+YnVmLCBwcm90b3MtPmxlbik7CisgICAgc2VsZi0+YWxwbl9wcm90b2NvbHNfbGVuID0gcHJvdG9zLT5sZW47CisKKyAgICBpZiAoU1NMX0NUWF9zZXRfYWxwbl9wcm90b3Moc2VsZi0+Y3R4LCBzZWxmLT5hbHBuX3Byb3RvY29scywgc2VsZi0+YWxwbl9wcm90b2NvbHNfbGVuKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2Ioc2VsZi0+Y3R4LCBfc2VsZWN0QUxQTl9jYiwgc2VsZik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJUaGUgQUxQTiBleHRlbnNpb24gcmVxdWlyZXMgT3BlblNTTCAxLjAuMiBvciBsYXRlci4iKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgdm9pZCAqYykKIHsKQEAgLTIyNTMsNyArMjU0OSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9mbGFncyhQeVNTTENvbnRleHQgKnNlbGYsIHZvaWQgKmMpCiB7CkBAIC0yMjkxLDcgKzI1ODYsNiBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X29wdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQpAQCAtMjQ0OCwxMSArMjc0MiwxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4KKyAgICBjZXJ0ZmlsZTogb2JqZWN0CisgICAga2V5ZmlsZTogb2JqZWN0ID0gTlVMTAorICAgIHBhc3N3b3JkOiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTQ4MGJjMWMzODBlMjA5NSBpbnB1dD03Y2Y5YWM2NzNjYmVlNmZjXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTCwgKnBhc3N3b3JkID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VydGZpbGVfYnl0ZXMgPSBOVUxMLCAqa2V5ZmlsZV9ieXRlcyA9IE5VTEw7CiAgICAgcGVtX3Bhc3N3b3JkX2NiICpvcmlnX3Bhc3N3ZF9jYiA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2s7CiAgICAgdm9pZCAqb3JpZ19wYXNzd2RfdXNlcmRhdGEgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrX3VzZXJkYXRhOwpAQCAtMjQ2MSwxMCArMjc2Myw2IEBACiAKICAgICBlcnJubyA9IDA7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgIk98T086bG9hZF9jZXJ0X2NoYWluIiwga3dsaXN0LAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoa2V5ZmlsZSA9PSBQeV9Ob25lKQogICAgICAgICBrZXlmaWxlID0gTlVMTDsKICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihjZXJ0ZmlsZSwgJmNlcnRmaWxlX2J5dGVzKSkgewpAQCAtMjYzMiwyMSArMjkzMCwyNiBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zCisgICAgY2FmaWxlOiBvYmplY3QgPSBOVUxMCisgICAgY2FwYXRoOiBvYmplY3QgPSBOVUxMCisgICAgY2FkYXRhOiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NGM3ZTQxMjMwY2E1NTEgaW5wdXQ9OTk3ZjFmYjNhNzg0ZWY4OF0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMLCAqY2FwYXRoID0gTlVMTCwgKmNhZGF0YSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNhZmlsZV9ieXRlcyA9IE5VTEwsICpjYXBhdGhfYnl0ZXMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmNhZmlsZV9idWYgPSBOVUxMLCAqY2FwYXRoX2J1ZiA9IE5VTEw7CiAgICAgaW50IHIgPSAwLCBvayA9IDE7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwga3dsaXN0LAotICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoY2FmaWxlID09IFB5X05vbmUpCiAgICAgICAgIGNhZmlsZSA9IE5VTEw7CiAgICAgaWYgKGNhcGF0aCA9PSBQeV9Ob25lKQpAQCAtMjc0MywxOCArMzA0NiwyNCBAQAogICAgIH0KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcworICAgIHBhdGggYXMgZmlsZXBhdGg6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9kaF9wYXJhbXMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqZmlsZXBhdGgpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjOGU1N2EzOGUwNTVhZjAgaW5wdXQ9Yzg4NzFmM2M3OTZhZTFkNl0qLwogewogICAgIEZJTEUgKmY7CiAgICAgREggKmRoOwogCiAgICAgZiA9IF9QeV9mb3Blbl9vYmooZmlsZXBhdGgsICJyYiIpOwotICAgIGlmIChmID09IE5VTEwpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICBpZiAoZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKICAgICBlcnJubyA9IDA7CiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRoID0gUEVNX3JlYWRfREhwYXJhbXMoZiwgTlVMTCwgTlVMTCwgTlVMTCk7CkBAIC0yNzc2LDM4ICszMDg1LDc2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuX3dyYXBfc29ja2V0CisgICAgc29jazogb2JqZWN0KHN1YmNsYXNzX29mPSJQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUiKQorICAgIHNlcnZlcl9zaWRlOiBpbnQKKyAgICBzZXJ2ZXJfaG9zdG5hbWUgYXMgaG9zdG5hbWVfb2JqOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWNvbnRleHRfd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTczZTRiNjA5OTVlOTMzIGlucHV0PTgzODU5YjkxNTZkZGZjNjNdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2s7Ci0gICAgaW50IHNlcnZlcl9zaWRlID0gMDsKICAgICBjaGFyICpob3N0bmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiwgKnJlczsKKyAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgLyogc2VydmVyX2hvc3RuYW1lIGlzIGVpdGhlciBOb25lIChvciBhYnNlbnQpLCBvciB0byBiZSBlbmNvZGVkCiAgICAgICAgdXNpbmcgdGhlIGlkbmEgZW5jb2RpbmcuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk8haXxPITpfd3JhcF9zb2NrZXQiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShQeV9Ob25lKSwgJmhvc3RuYW1lX29iaikpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk8haWV0Ol93cmFwX3NvY2tldCIsIGt3bGlzdCwKLSAgICAgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwKLSAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAiaWRuYSIsICZob3N0bmFtZSkpCisgICAgaWYgKGhvc3RuYW1lX29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoaG9zdG5hbWVfb2JqLCAiZXQiLCAiaWRuYSIsICZob3N0bmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lKTsKKyAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgKFB5U29ja2V0U29ja09iamVjdCAqKXNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlLCBob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiAgICAgaWYgKGhvc3RuYW1lICE9IE5VTEwpCiAgICAgICAgIFB5TWVtX0ZyZWUoaG9zdG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuX3dyYXBfYmlvCisgICAgaW5jb21pbmc6IG9iamVjdChzdWJjbGFzc19vZj0iJlB5U1NMTWVtb3J5QklPX1R5cGUiLCB0eXBlPSJQeVNTTE1lbW9yeUJJTyAqIikKKyAgICBvdXRnb2luZzogb2JqZWN0KHN1YmNsYXNzX29mPSImUHlTU0xNZW1vcnlCSU9fVHlwZSIsIHR5cGU9IlB5U1NMTWVtb3J5QklPICoiKQorICAgIHNlcnZlcl9zaWRlOiBpbnQKKyAgICBzZXJ2ZXJfaG9zdG5hbWUgYXMgaG9zdG5hbWVfb2JqOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNlc3Npb25fc3RhdHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5U1NMTWVtb3J5QklPICppbmNvbWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nLCBpbnQgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGZlNGJhNzVhZDk1OTQwZCBpbnB1dD0xNzcyNWVjZGFjMGJmMjIwXSovCit7CisgICAgY2hhciAqaG9zdG5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICAvKiBzZXJ2ZXJfaG9zdG5hbWUgaXMgZWl0aGVyIE5vbmUgKG9yIGFic2VudCksIG9yIHRvIGJlIGVuY29kZWQKKyAgICAgICB1c2luZyB0aGUgaWRuYSBlbmNvZGluZy4gKi8KKyAgICBpZiAoaG9zdG5hbWVfb2JqICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShob3N0bmFtZV9vYmosICJldCIsICJpZG5hIiwgJmhvc3RuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IChQeU9iamVjdCAqKSBuZXdQeVNTTFNvY2tldChzZWxmLCBOVUxMLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nLCBvdXRnb2luZyk7CisKKyAgICBQeU1lbV9GcmVlKGhvc3RuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNlc3Npb25fc3RhdHMKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2Vzc2lvbl9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZDk2NDExYzQyODkzYmZiIGlucHV0PTdlMGE4MWZiMTExMDJjOGJdKi8KIHsKICAgICBpbnQgcjsKICAgICBQeU9iamVjdCAqdmFsdWUsICpzdGF0cyA9IFB5RGljdF9OZXcoKTsKQEAgLTI4NDUsOCArMzE5MiwxMyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiZWU3NGU2ZTA5ZGVhYWEgaW5wdXQ9MzVmMzQwODAyMTQ2M2Q3NF0qLwogewogICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoc2VsZi0+Y3R4KSkgewogICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKQEAgLTI4NTYsOCArMzIwOCwxNiBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZQorICAgIG5hbWU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK19zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzAyMmMxOTZlNDBkN2QyIGlucHV0PWMyYmFmYjZmNmUzNDcyNmJdKi8KIHsKICAgICBQeU9iamVjdCAqbmFtZV9ieXRlczsKICAgICBpbnQgbmlkOwpAQCAtMjkxMiwxMSArMzI3MiwyNSBAQAogCiAgICAgc3NsID0gU1NMX2dldF9hcHBfZGF0YShzKTsKICAgICBhc3NlcnQoUHlTU0xTb2NrZXRfQ2hlY2soc3NsKSk7Ci0gICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5Tb2NrZXQpOworCisgICAgLyogVGhlIHNlcnZlcm5hbWUgY2FsbGJhY2sgZXhwZWN0cyBhIGFyZ3VtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudAorICAgICAqIFNTTCBjb25uZWN0aW9uIGFuZCB0aGF0IGhhcyBhIC5jb250ZXh0IGF0dHJpYnV0ZSB0aGF0IGNhbiBiZSBjaGFuZ2VkIHRvCisgICAgICogaWRlbnRpZnkgdGhlIHJlcXVlc3RlZCBob3N0bmFtZS4gU2luY2UgdGhlIG9mZmljaWFsIEFQSSBpcyB0aGUgUHl0aG9uCisgICAgICogbGV2ZWwgQVBJIHdlIHdhbnQgdG8gcGFzcyB0aGUgY2FsbGJhY2sgYSBQeXRob24gbGV2ZWwgb2JqZWN0IHJhdGhlciB0aGFuCisgICAgICogYSBfc3NsLlNTTFNvY2tldCBpbnN0YW5jZS4gSWYgdGhlcmUncyBhbiAib3duZXIiICh0eXBpY2FsbHkgYW4KKyAgICAgKiBTU0xPYmplY3QpIHRoYXQgd2lsbCBiZSBwYXNzZWQuIE90aGVyd2lzZSBpZiB0aGVyZSdzIGEgc29ja2V0IHRoZW4gdGhhdAorICAgICAqIHdpbGwgYmUgcGFzc2VkLiBJZiBib3RoIGRvIG5vdCBleGlzdCBvbmx5IHRoZW4gdGhlIEMtbGV2ZWwgb2JqZWN0IGlzCisgICAgICogcGFzc2VkLiAqLworICAgIGlmIChzc2wtPm93bmVyKQorICAgICAgICBzc2xfc29ja2V0ID0gUHlXZWFrcmVmX0dldE9iamVjdChzc2wtPm93bmVyKTsKKyAgICBlbHNlIGlmIChzc2wtPlNvY2tldCkKKyAgICAgICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5Tb2NrZXQpOworICAgIGVsc2UKKyAgICAgICAgc3NsX3NvY2tldCA9IChQeU9iamVjdCAqKSBzc2w7CisKICAgICBQeV9JTkNSRUYoc3NsX3NvY2tldCk7Ci0gICAgaWYgKHNzbF9zb2NrZXQgPT0gUHlfTm9uZSkgeworICAgIGlmIChzc2xfc29ja2V0ID09IFB5X05vbmUpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQogCiAgICAgaWYgKHNlcnZlcm5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNzbF9jdHgtPnNldF9ob3N0bmFtZSwgc3NsX3NvY2tldCwKQEAgLTI5NzcsMjUgKzMzNTEsMjMgQEAKIH0KICNlbmRpZgogCi1QeURvY19TVFJWQVIoUHlTU0xfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfZG9jLAotInNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKG1ldGhvZClcblwKLVxuXAotVGhpcyBzZXRzIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgc2VydmVyIG5hbWUgaXMgcHJvdmlkZWQgYnlcblwKLXRoZSBTU0wvVExTIGNsaWVudCBpbiB0aGUgU05JIGV4dGVuc2lvbi5cblwKLVxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkXG5cCi13aXRoIHRoZSBTU0xTb2NrZXQsIHRoZSBzZXJ2ZXIgbmFtZSBhcyBhIHN0cmluZywgYW5kIHRoZSBTU0xDb250ZXh0IG9iamVjdC5cblwKLVNlZSBSRkMgNjA2NiBmb3IgZGV0YWlscyBvZiB0aGUgU05JIGV4dGVuc2lvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2sKKyAgICBtZXRob2QgYXMgY2I6IG9iamVjdAorICAgIC8KKworU2V0IGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgc2VydmVyIG5hbWUgaXMgcHJvdmlkZWQgYnkgdGhlIFNTTC9UTFMgY2xpZW50IGluIHRoZSBTTkkgZXh0ZW5zaW9uLgorCitJZiB0aGUgYXJndW1lbnQgaXMgTm9uZSB0aGVuIHRoZSBjYWxsYmFjayBpcyBkaXNhYmxlZC4gVGhlIG1ldGhvZCBpcyBjYWxsZWQKK3dpdGggdGhlIFNTTFNvY2tldCwgdGhlIHNlcnZlciBuYW1lIGFzIGEgc3RyaW5nLCBhbmQgdGhlIFNTTENvbnRleHQgb2JqZWN0LgorU2VlIFJGQyA2MDY2IGZvciBkZXRhaWxzIG9mIHRoZSBTTkkgZXh0ZW5zaW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQzOWExYjJkNWQzYjdlYSBpbnB1dD1hMmE4MzYyMDE5N2Q2MDJiXSovCiB7CiAjaWYgSEFWRV9TTkkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCi0gICAgUHlPYmplY3QgKmNiOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiwgJmNiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9DTEVBUihzZWxmLT5zZXRfaG9zdG5hbWUpOwogICAgIGlmIChjYiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFNTTF9DVFhfc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKHNlbGYtPmN0eCwgTlVMTCk7CkBAIC0zMDIyLDE3ICszMzk0LDIxIEBACiAjZW5kaWYKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zdGF0c19kb2MsCi0iY2VydF9zdG9yZV9zdGF0cygpIC0+IHsnY3JsJzogaW50LCAneDUwOV9jYSc6IGludCwgJ3g1MDknOiBpbnR9XG5cCi1cblwKLVJldHVybnMgcXVhbnRpdGllcyBvZiBsb2FkZWQgWC41MDkgY2VydGlmaWNhdGVzLiBYLjUwOSBjZXJ0aWZpY2F0ZXMgd2l0aCBhXG5cCi1DQSBleHRlbnNpb24gYW5kIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdHMgaW5zaWRlIHRoZSBjb250ZXh0J3MgY2VydFxuXAotc3RvcmUuXG5cCi1OT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuXAotYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmNlcnRfc3RvcmVfc3RhdHMKKworUmV0dXJucyBxdWFudGl0aWVzIG9mIGxvYWRlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMuCisKK1guNTA5IGNlcnRpZmljYXRlcyB3aXRoIGEgQ0EgZXh0ZW5zaW9uIGFuZCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzCitpbnNpZGUgdGhlIGNvbnRleHQncyBjZXJ0IHN0b3JlLgorCitOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZQorYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jZXJ0X3N0b3JlX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZikKK19zc2xfX1NTTENvbnRleHRfY2VydF9zdG9yZV9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZjM1NmY0ZDljY2E4NzRkIGlucHV0PWViNDBkZDBmNmQwZTQwY2ZdKi8KIHsKICAgICBYNTA5X1NUT1JFICpzdG9yZTsKICAgICBYNTA5X09CSkVDVCAqb2JqOwpAQCAtMzA2NSwyNyArMzQ0MSwyNiBAQAogICAgICAgICAieDUwOV9jYSIsIGNhKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9jYV9jZXJ0c19kb2MsCi0iZ2V0X2NhX2NlcnRzKGJpbmFyeV9mb3JtPUZhbHNlKSAtPiBsaXN0IG9mIGxvYWRlZCBjZXJ0aWZpY2F0ZVxuXAotXG5cCi1SZXR1cm5zIGEgbGlzdCBvZiBkaWN0cyB3aXRoIGluZm9ybWF0aW9uIG9mIGxvYWRlZCBDQSBjZXJ0cy4gSWYgdGhlXG5cCi1vcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0EgY2VydGlmaWNhdGUuXG5cCi1OT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuXAotYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmdldF9jYV9jZXJ0cworICAgIGJpbmFyeV9mb3JtOiBib29sID0gRmFsc2UKKworUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0EKK2NlcnRpZmljYXRlLgorCitOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZQorYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgaW50IGJpbmFyeV9mb3JtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkNThmMTQ4ZjM3ZTI5MzggaW5wdXQ9Njg4N2I1YTA5YjdmOTA3Nl0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJiaW5hcnlfZm9ybSIsIE5VTEx9OwogICAgIFg1MDlfU1RPUkUgKnN0b3JlOwogICAgIFB5T2JqZWN0ICpjaSA9IE5VTEwsICpybGlzdCA9IE5VTEw7CiAgICAgaW50IGk7Ci0gICAgaW50IGJpbmFyeV9tb2RlID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8cDpnZXRfY2FfY2VydHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmJpbmFyeV9tb2RlKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBpZiAoKHJsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMxMDYsNyArMzQ4MSw3IEBACiAgICAgICAgIGlmICghWDUwOV9jaGVja19jYShjZXJ0KSkgewogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGJpbmFyeV9tb2RlKSB7CisgICAgICAgIGlmIChiaW5hcnlfZm9ybSkgewogICAgICAgICAgICAgY2kgPSBfY2VydGlmaWNhdGVfdG9fZGVyKGNlcnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2kgPSBfZGVjb2RlX2NlcnRpZmljYXRlKGNlcnQpOwpAQCAtMzEzMyw0MiArMzUwOCwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfY2hlY2tfaG9zdG5hbWUsIE5VTEx9LAogICAgIHsib3B0aW9ucyIsIChnZXR0ZXIpIGdldF9vcHRpb25zLAogICAgICAgICAgICAgICAgIChzZXR0ZXIpIHNldF9vcHRpb25zLCBOVUxMfSwKLSNpZmRlZiBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCiAgICAgeyJ2ZXJpZnlfZmxhZ3MiLCAoZ2V0dGVyKSBnZXRfdmVyaWZ5X2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X3ZlcmlmeV9mbGFncywgTlVMTH0sCi0jZW5kaWYKICAgICB7InZlcmlmeV9tb2RlIiwgKGdldHRlcikgZ2V0X3ZlcmlmeV9tb2RlLAogICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfdmVyaWZ5X21vZGUsIE5VTEx9LAogICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBjb250ZXh0X21ldGhvZHNbXSA9IHsKLSAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbikgY29udGV4dF93cmFwX3NvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJzZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbikgc2V0X2NpcGhlcnMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJfc2V0X25wbl9wcm90b2NvbHMiLCAoUHlDRnVuY3Rpb24pIF9zZXRfbnBuX3Byb3RvY29scywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pIGxvYWRfY2VydF9jaGFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAotICAgIHsibG9hZF9kaF9wYXJhbXMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfZGhfcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX3ZlcmlmeV9sb2NhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKLSAgICB7InNlc3Npb25fc3RhdHMiLCAoUHlDRnVuY3Rpb24pIHNlc3Npb25fc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHsic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCi0jaWZuZGVmIE9QRU5TU0xfTk9fRUNESAotICAgIHsic2V0X2VjZGhfY3VydmUiLCAoUHlDRnVuY3Rpb24pIHNldF9lY2RoX2N1cnZlLAotICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotI2VuZGlmCi0gICAgeyJzZXRfc2VydmVybmFtZV9jYWxsYmFjayIsIChQeUNGdW5jdGlvbikgc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgUHlTU0xfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfZG9jfSwKLSAgICB7ImNlcnRfc3RvcmVfc3RhdHMiLCAoUHlDRnVuY3Rpb24pIGNlcnRfc3RvcmVfc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBQeVNTTF9nZXRfc3RhdHNfZG9jfSwKLSAgICB7ImdldF9jYV9jZXJ0cyIsIChQeUNGdW5jdGlvbikgZ2V0X2NhX2NlcnRzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBQeVNTTF9nZXRfY2FfY2VydHNfZG9jfSwKKyAgICBfU1NMX19TU0xDT05URVhUX19XUkFQX1NPQ0tFVF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX19XUkFQX0JJT19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9DSVBIRVJTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfX1NFVF9BTFBOX1BST1RPQ09MU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX19TRVRfTlBOX1BST1RPQ09MU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0xPQURfREhfUEFSQU1TX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9WRVJJRllfTE9DQVRJT05TX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfU0VTU0lPTl9TVEFUU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9DRVJUX1NUT1JFX1NUQVRTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTMyMTAsMjMgKzM1NzEsMjUyIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MqLwotICAgIGNvbnRleHRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCisgICAgX3NzbF9fU1NMQ29udGV4dCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmV3Ki8KIH07CiAKIAorLyoKKyAqIE1lbW9yeUJJTyBvYmplY3RzCisgKi8KIAotI2lmZGVmIEhBVkVfT1BFTlNTTF9SQU5ECisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19zc2wuTWVtb3J5QklPLl9fbmV3X18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9faW1wbChQeVR5cGVPYmplY3QgKnR5cGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODgyMGE1OGRiNzgzMzBhYyBpbnB1dD0yNmQyMmU0OTA5ZWNiMWI1XSovCit7CisgICAgQklPICpiaW87CisgICAgUHlTU0xNZW1vcnlCSU8gKnNlbGY7CisKKyAgICBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKyAgICBpZiAoYmlvID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGFsbG9jYXRlIEJJTyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogU2luY2Ugb3VyIEJJTyBpcyBub24tYmxvY2tpbmcgYW4gZW1wdHkgcmVhZCgpIGRvZXMgbm90IGluZGljYXRlIEVPRiwKKyAgICAgKiBqdXN0IHRoYXQgbm8gZGF0YSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLiBUaGUgU1NMIHJvdXRpbmVzIHNob3VsZCByZXRyeQorICAgICAqIHRoZSByZWFkLCB3aGljaCB3ZSBjYW4gYWNoaWV2ZSBieSBjYWxsaW5nIEJJT19zZXRfcmV0cnlfcmVhZCgpLiAqLworICAgIEJJT19zZXRfcmV0cnlfcmVhZChiaW8pOworICAgIEJJT19zZXRfbWVtX2VvZl9yZXR1cm4oYmlvLCAtMSk7CisKKyAgICBhc3NlcnQodHlwZSAhPSBOVUxMICYmIHR5cGUtPnRwX2FsbG9jICE9IE5VTEwpOworICAgIHNlbGYgPSAoUHlTU0xNZW1vcnlCSU8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBCSU9fZnJlZShiaW8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+YmlvID0gYmlvOworICAgIHNlbGYtPmVvZl93cml0dGVuID0gMDsKKworICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKK30KKworc3RhdGljIHZvaWQKK21lbW9yeV9iaW9fZGVhbGxvYyhQeVNTTE1lbW9yeUJJTyAqc2VsZikKK3sKKyAgICBCSU9fZnJlZShzZWxmLT5iaW8pOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfYmlvX2dldF9wZW5kaW5nKFB5U1NMTWVtb3J5QklPICpzZWxmLCB2b2lkICpjKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoQklPX2N0cmxfcGVuZGluZyhzZWxmLT5iaW8pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX21lbW9yeV9iaW9fcGVuZGluZ19kb2MsCisiVGhlIG51bWJlciBvZiBieXRlcyBwZW5kaW5nIGluIHRoZSBtZW1vcnkgQklPLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Jpb19nZXRfZW9mKFB5U1NMTWVtb3J5QklPICpzZWxmLCB2b2lkICpjKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKEJJT19jdHJsX3BlbmRpbmcoc2VsZi0+YmlvKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZi0+ZW9mX3dyaXR0ZW4pOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfbWVtb3J5X2Jpb19lb2ZfZG9jLAorIldoZXRoZXIgdGhlIG1lbW9yeSBCSU8gaXMgYXQgRU9GLiIpOworCisvKltjbGluaWMgaW5wdXRdCitfc3NsLk1lbW9yeUJJTy5yZWFkCisgICAgc2l6ZSBhcyBsZW46IGludCA9IC0xCisgICAgLworCitSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IEJJTy4KKworSWYgc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCByZWFkIHRoZSBlbnRpcmUgYnVmZmVyLgorSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlbXB0eSBieXRlcyBpbnN0YW5jZSwgdGhpcyBtZWFucyBlaXRoZXIKK0VPRiBvciB0aGF0IG5vIGRhdGEgaXMgYXZhaWxhYmxlLiBVc2UgdGhlICJlb2YiIHByb3BlcnR5IHRvCitkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIGludCBsZW4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY1N2FhMWU3OWNkMDFiMyBpbnB1dD01NzRkN2JlMDZhOTAyMzY2XSovCit7CisgICAgaW50IGF2YWlsLCBuYnl0ZXM7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGF2YWlsID0gQklPX2N0cmxfcGVuZGluZyhzZWxmLT5iaW8pOworICAgIGlmICgobGVuIDwgMCkgfHwgKGxlbiA+IGF2YWlsKSkKKyAgICAgICAgbGVuID0gYXZhaWw7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CisgICAgaWYgKChyZXN1bHQgPT0gTlVMTCkgfHwgKGxlbiA9PSAwKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIG5ieXRlcyA9IEJJT19yZWFkKHNlbGYtPmJpbywgUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwgbGVuKTsKKyAgICAvKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgYW55IHNob3J0IHJlYWRzIGJ1dCBjaGVjayBhbnl3YXkuICovCisgICAgaWYgKChuYnl0ZXMgPCBsZW4pICYmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbGVuKSA8IDApKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLk1lbW9yeUJJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGVzIHRoZSBieXRlcyBiIGludG8gdGhlIG1lbW9yeSBCSU8uCisKK1JldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGVfaW1wbChQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE1NmVjNTkxMTBkNzU5MzUgaW5wdXQ9ZTQ1NzU3YjNlMTdjNDgwOF0qLworeworICAgIGludCBuYnl0ZXM7CisKKyAgICBpZiAoYi0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgbG9uZ2VyIHRoYW4gJWQgYnl0ZXMiLCBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNlbGYtPmVvZl93cml0dGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCB3cml0ZSgpIGFmdGVyIHdyaXRlX2VvZigpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5ieXRlcyA9IEJJT193cml0ZShzZWxmLT5iaW8sIGItPmJ1ZiwgYi0+bGVuKTsKKyAgICBpZiAobmJ5dGVzIDwgMCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhuYnl0ZXMpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLk1lbW9yeUJJTy53cml0ZV9lb2YKKworV3JpdGUgYW4gRU9GIG1hcmtlciB0byB0aGUgbWVtb3J5IEJJTy4KKworV2hlbiBhbGwgZGF0YSBoYXMgYmVlbiByZWFkLCB0aGUgImVvZiIgcHJvcGVydHkgd2lsbCBiZSBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQxMDYyNzZjY2QxZWQzNCBpbnB1dD01NmE5NDVmMWQyOWU4YmQ2XSovCit7CisgICAgc2VsZi0+ZW9mX3dyaXR0ZW4gPSAxOworICAgIC8qIEFmdGVyIGFuIEVPRiBpcyB3cml0dGVuLCBhIHplcm8gcmV0dXJuIGZyb20gcmVhZCgpIHNob3VsZCBiZSBhIHJlYWwgRU9GCisgICAgICogaS5lLiBpdCBzaG91bGQgbm90IGJlIHJldHJpZWQuIENsZWFyIHRoZSBTSE9VTERfUkVUUlkgZmxhZy4gKi8KKyAgICBCSU9fY2xlYXJfcmV0cnlfZmxhZ3Moc2VsZi0+YmlvKTsKKyAgICBCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKHNlbGYtPmJpbywgMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIG1lbW9yeV9iaW9fZ2V0c2V0bGlzdFtdID0geworICAgIHsicGVuZGluZyIsIChnZXR0ZXIpIG1lbW9yeV9iaW9fZ2V0X3BlbmRpbmcsIE5VTEwsCisgICAgICAgICAgICAgICAgUHlTU0xfbWVtb3J5X2Jpb19wZW5kaW5nX2RvY30sCisgICAgeyJlb2YiLCAoZ2V0dGVyKSBtZW1vcnlfYmlvX2dldF9lb2YsIE5VTEwsCisgICAgICAgICAgICBQeVNTTF9tZW1vcnlfYmlvX2VvZl9kb2N9LAorICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtZW1vcnlfYmlvX21ldGhvZHNbXSA9IHsKKyAgICBfU1NMX01FTU9SWUJJT19SRUFEX01FVEhPRERFRgorICAgIF9TU0xfTUVNT1JZQklPX1dSSVRFX01FVEhPRERFRgorICAgIF9TU0xfTUVNT1JZQklPX1dSSVRFX0VPRl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9zc2wuTWVtb3J5QklPIiwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoUHlTU0xNZW1vcnlCSU8pLCAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvciltZW1vcnlfYmlvX2RlYWxsb2MsICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCisgICAgbWVtb3J5X2Jpb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCisgICAgbWVtb3J5X2Jpb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MqLworICAgIF9zc2xfTWVtb3J5QklPLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCit9OworCiAKIC8qIGhlbHBlciByb3V0aW5lcyBmb3Igc2VlZGluZyB0aGUgU1NMIFBSTkcgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX2FkZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgbGVuLCB3cml0dGVuOwotICAgIGRvdWJsZSBlbnRyb3B5OworLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX2FkZAorICAgIHN0cmluZyBhcyB2aWV3OiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZW50cm9weTogZG91YmxlCisgICAgLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI2Q6UkFORF9hZGQiLCAmYnVmLCAmbGVuLCAmZW50cm9weSkpCi0gICAgICAgIHJldHVybiBOVUxMOworTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuCisKK2VudHJvcHkgKGEgZmxvYXQpIGlzIGEgbG93ZXIgYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluCitzdHJpbmcuICBTZWUgUkZDIDE3NTAuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICp2aWV3LCBkb3VibGUgZW50cm9weSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZjhkNWM4Y2NlMzI4OTU4IGlucHV0PTU4MGM4NWU2YTNhNGZlMjldKi8KK3sKKyAgICBjb25zdCBjaGFyICpidWY7CisgICAgUHlfc3NpemVfdCBsZW4sIHdyaXR0ZW47CisKKyAgICBidWYgPSAoY29uc3QgY2hhciAqKXZpZXctPmJ1ZjsKKyAgICBsZW4gPSB2aWV3LT5sZW47CiAgICAgZG8gewogICAgICAgICB3cml0dGVuID0gUHlfTUlOKGxlbiwgSU5UX01BWCk7CiAgICAgICAgIFJBTkRfYWRkKGJ1ZiwgKGludCl3cml0dGVuLCBlbnRyb3B5KTsKQEAgLTMyMzcsMTIgKzM4MjcsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfUkFORF9hZGRfZG9jLAotIlJBTkRfYWRkKHN0cmluZywgZW50cm9weSlcblwKLVxuXAotTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuICBlbnRyb3B5IChhIGZsb2F0KSBpcyBhIGxvd2VyXG5cCi1ib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4gc3RyaW5nLiAgU2VlIFJGQyAxNzUwLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogUHlTU0xfUkFORChpbnQgbGVuLCBpbnQgcHNldWRvKQogewpAQCAtMzI4Miw2MCArMzg2Niw3MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLlJBTkRfYnl0ZXMKKyAgICBuOiBpbnQKKyAgICAvCisKK0dlbmVyYXRlIG4gY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19zc2xfUkFORF9ieXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkODc0MWJkYzFkNDM1ZjMgaW5wdXQ9Njc4ZGRmMjg3MmRmZWJmY10qLwogewotICAgIGludCBsZW47Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfYnl0ZXMiLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAwKTsKKyAgICByZXR1cm4gUHlTU0xfUkFORChuLCAwKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYnl0ZXNfZG9jLAotIlJBTkRfYnl0ZXMobikgLT4gYnl0ZXNcblwKLVxuXAotR2VuZXJhdGUgbiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuUkFORF9wc2V1ZG9fYnl0ZXMKKyAgICBuOiBpbnQKKyAgICAvCisKK0dlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy4KKworUmV0dXJuIGEgcGFpciAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpLiAgaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlCitpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX3BzZXVkb19ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGQ2NzM4MTMxMDdmMzg3NSBpbnB1dD01ODMxMmJkNTNmOWJiZGQwXSovCiB7Ci0gICAgaW50IGxlbjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAxKTsKKyAgICByZXR1cm4gUHlTU0xfUkFORChuLCAxKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvYywKLSJSQU5EX3BzZXVkb19ieXRlcyhuKSAtPiAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpXG5cCi1cblwKLUdlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy4gaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlIGlmIHRoZSBieXRlc1wKLWdlbmVyYXRlZCBhcmUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX3N0YXR1cworCitSZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuCisKK0l0IGlzIG5lY2Vzc2FyeSB0byBzZWVkIHRoZSBQUk5HIHdpdGggUkFORF9hZGQoKSBvbiBzb21lIHBsYXRmb3JtcyBiZWZvcmUKK3VzaW5nIHRoZSBzc2woKSBmdW5jdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX1JBTkRfc3RhdHVzKFB5T2JqZWN0ICpzZWxmKQorX3NzbF9SQU5EX3N0YXR1c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2Y3ZWY1N2JjN2RkMWQxYyBpbnB1dD04YTc3NGIwMmQxZGM4MWYzXSovCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhSQU5EX3N0YXR1cygpKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfc3RhdHVzX2RvYywKLSJSQU5EX3N0YXR1cygpIC0+IDAgb3IgMVxuXAotXG5cCi1SZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuXG5cCi1JdCBpcyBuZWNlc3NhcnkgdG8gc2VlZCB0aGUgUFJORyB3aXRoIFJBTkRfYWRkKCkgb24gc29tZSBwbGF0Zm9ybXMgYmVmb3JlXG5cCi11c2luZyB0aGUgc3NsKCkgZnVuY3Rpb24uIik7Ci0KICNpZmRlZiBIQVZFX1JBTkRfRUdECisvKltjbGluaWMgaW5wdXRdCitfc3NsLlJBTkRfZWdkCisgICAgcGF0aDogb2JqZWN0KGNvbnZlcnRlcj0iUHlVbmljb2RlX0ZTQ29udmVydGVyIikKKyAgICAvCisKK1F1ZXJpZXMgdGhlIGVudHJvcHkgZ2F0aGVyIGRhZW1vbiAoRUdEKSBvbiB0aGUgc29ja2V0IG5hbWVkIGJ5ICdwYXRoJy4KKworUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIFJhaXNlcyBTU0xFcnJvciBpZiBjb25uZWN0aW9uIHRvIEVHRAorZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX2VnZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX1JBTkRfZWdkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGU3MjhlNTAxZTI4NTQxYiBpbnB1dD0xYWViN2ViOTQ4MzEyMTk1XSovCiB7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgaW50IGJ5dGVzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpSQU5EX2VnZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ5dGVzID0gUkFORF9lZ2QoUHlCeXRlc19Bc1N0cmluZyhwYXRoKSk7CisgICAgaW50IGJ5dGVzID0gUkFORF9lZ2QoUHlCeXRlc19Bc1N0cmluZyhwYXRoKSk7CiAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChieXRlcyA9PSAtMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKQEAgLTMzNDUsMjcgKzM5NDEsMjEgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhieXRlcyk7CiB9Ci0KLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX2VnZF9kb2MsCi0iUkFORF9lZ2QocGF0aCkgLT4gYnl0ZXNcblwKLVxuXAotUXVlcmllcyB0aGUgZW50cm9weSBnYXRoZXIgZGFlbW9uIChFR0QpIG9uIHRoZSBzb2NrZXQgbmFtZWQgYnkgJ3BhdGgnLlxuXAotUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIFJhaXNlcyBTU0xFcnJvciBpZiBjb25uZWN0aW9uIHRvIEVHRFxuXAotZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuIik7CiAjZW5kaWYgLyogSEFWRV9SQU5EX0VHRCAqLwogCi0jZW5kaWYgLyogSEFWRV9PUEVOU1NMX1JBTkQgKi8KIAogCi1QeURvY19TVFJWQVIoUHlTU0xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2RvYywKLSJnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSAtPiB0dXBsZVxuXAotXG5cCi1SZXR1cm4gc2VhcmNoIHBhdGhzIGFuZCBlbnZpcm9ubWVudCB2YXJzIHRoYXQgYXJlIHVzZWQgYnkgU1NMQ29udGV4dCdzXG5cCi1zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSB0byBsb2FkIGRlZmF1bHQgQ0FzLiBUaGUgdmFsdWVzIGFyZVxuXAotJ2NlcnRfZmlsZV9lbnYnLCAnY2VydF9maWxlJywgJ2NlcnRfZGlyX2VudicsICdjZXJ0X2RpcicuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocworCitSZXR1cm4gc2VhcmNoIHBhdGhzIGFuZCBlbnZpcm9ubWVudCB2YXJzIHRoYXQgYXJlIHVzZWQgYnkgU1NMQ29udGV4dCdzIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIHRvIGxvYWQgZGVmYXVsdCBDQXMuCisKK1RoZSB2YWx1ZXMgYXJlICdjZXJ0X2ZpbGVfZW52JywgJ2NlcnRfZmlsZScsICdjZXJ0X2Rpcl9lbnYnLCAnY2VydF9kaXInLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5T2JqZWN0ICpzZWxmKQorX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMjgyMGNlN2UzMzA0ZDMgaW5wdXQ9NTIxMGM5NTNkOThjM2ViNV0qLwogewogICAgIFB5T2JqZWN0ICpvZmlsZV9lbnYgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvZmlsZSA9IE5VTEw7CkBAIC0zNDI0LDI2ICs0MDE0LDI0IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfdHh0Mm9ial9kb2MsCi0idHh0Mm9iaih0eHQsIG5hbWU9RmFsc2UpIC0+IChuaWQsIHNob3J0bmFtZSwgbG9uZ25hbWUsIG9pZClcblwKLVxuXAotTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuIEJ5IGRlZmF1bHRcblwKLW9iamVjdHMgYXJlIGxvb2tlZCB1cCBieSBPSUQuIFdpdGggbmFtZT1UcnVlIHNob3J0IGFuZCBsb25nIG5hbWUgYXJlIGFsc29cblwKLW1hdGNoZWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLnR4dDJvYmoKKyAgICB0eHQ6IHN0cgorICAgIG5hbWU6IGJvb2wgPSBGYWxzZQogCi1zdGF0aWMgUHlPYmplY3QqCi1QeVNTTF90eHQyb2JqKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVC4KKworQnkgZGVmYXVsdCBvYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmQKK2xvbmcgbmFtZSBhcmUgYWxzbyBtYXRjaGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF90eHQyb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqdHh0LCBpbnQgbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYWUyYzMwNTMxYjg4MDlmIGlucHV0PTFjMWU3ZDBhYTdjNDg2MDJdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBjaGFyICp0eHQ7Ci0gICAgaW50IG5hbWUgPSAwOwogICAgIEFTTjFfT0JKRUNUICpvYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAic3xwOnR4dDJvYmoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnR4dCwgJm5hbWUpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBvYmogPSBPQkpfdHh0Mm9iaih0eHQsIG5hbWUgPyAwIDogMSk7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAidW5rbm93biBvYmplY3QgJyUuMTAwcyciLCB0eHQpOwpAQCAtMzQ1NCwyMSArNDA0MiwyMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9uaWQyb2JqX2RvYywKLSJuaWQyb2JqKG5pZCkgLT4gKG5pZCwgc2hvcnRuYW1lLCBsb25nbmFtZSwgb2lkKVxuXAotXG5cCi1Mb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLm5pZDJvYmoKKyAgICBuaWQ6IGludAorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0KgotUHlTU0xfbmlkMm9iaihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX25pZDJvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkYjFkZjg5ZTQ0YmFkYjggaW5wdXQ9NTE3ODdhM2JlZTdkOGY5OF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCBuaWQ7CiAgICAgQVNOMV9PQkpFQ1QgKm9iajsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpuaWQyb2JqIiwgJm5pZCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGlmIChuaWQgPCBOSURfdW5kZWYpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJOSUQgbXVzdCBiZSBwb3NpdGl2ZS4iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNTY4LDMwICs0MTU2LDI4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX2VudW1fY2VydGlmaWNhdGVzX2RvYywKLSJlbnVtX2NlcnRpZmljYXRlcyhzdG9yZV9uYW1lKSAtPiBbXVxuXAotXG5cCi1SZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSBXaW5kb3dzJyBjZXJ0IHN0b3JlLiBzdG9yZV9uYW1lIG1heSBiZSBvbmUgb2ZcblwKLSdDQScsICdST09UJyBvciAnTVknLiBUaGUgc3lzdGVtIG1heSBwcm92aWRlIG1vcmUgY2VydCBzdG9yYWdlcywgdG9vLlxuXAotVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcywgZW5jb2RpbmdfdHlwZSwgdHJ1c3QpIHR1cGxlcy4gVGhlXG5cCi1lbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkIHdpdGggWDUwOV9BU05fRU5DT0RJTkcgb3JcblwKLVBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlciBhIHNldCBvZiBPSURzIG9yIHRoZVxuXAotYm9vbGVhbiBUcnVlLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5lbnVtX2NlcnRpZmljYXRlcworICAgIHN0b3JlX25hbWU6IHN0cgorCitSZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSBXaW5kb3dzJyBjZXJ0IHN0b3JlLgorCitzdG9yZV9uYW1lIG1heSBiZSBvbmUgb2YgJ0NBJywgJ1JPT1QnIG9yICdNWScuICBUaGUgc3lzdGVtIG1heSBwcm92aWRlCittb3JlIGNlcnQgc3RvcmFnZXMsIHRvby4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsCitlbmNvZGluZ190eXBlLCB0cnVzdCkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQKK3dpdGggWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4gVGhlIHRydXN0IHNldHRpbmcgaXMgZWl0aGVyCithIHNldCBvZiBPSURzIG9yIHRoZSBib29sZWFuIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9lbnVtX2NlcnRpZmljYXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2M0ZWJjMTBiOGFkYWNmYyBpbnB1dD05MTVmNjBkNzA0NjFlYTRlXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKLSAgICBjaGFyICpzdG9yZV9uYW1lOwogICAgIEhDRVJUU1RPUkUgaFN0b3JlID0gTlVMTDsKICAgICBQQ0NFUlRfQ09OVEVYVCBwQ2VydEN0eCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmtleXVzYWdlID0gTlVMTCwgKmNlcnQgPSBOVUxMLCAqZW5jID0gTlVMTCwgKnR1cCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiczplbnVtX2NlcnRpZmljYXRlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3RvcmVfbmFtZSkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzY1NywyOSArNDI0MywyNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9lbnVtX2NybHNfZG9jLAotImVudW1fY3JscyhzdG9yZV9uYW1lKSAtPiBbXVxuXAotXG5cCi1SZXRyaWV2ZSBDUkxzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4gc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mXG5cCi0nQ0EnLCAnUk9PVCcgb3IgJ01ZJy4gVGhlIHN5c3RlbSBtYXkgcHJvdmlkZSBtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby5cblwKLVRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsIGVuY29kaW5nX3R5cGUpIHR1cGxlcy4gVGhlXG5cCi1lbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkIHdpdGggWDUwOV9BU05fRU5DT0RJTkcgb3JcblwKLVBLQ1NfN19BU05fRU5DT0RJTkcuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLmVudW1fY3JscworICAgIHN0b3JlX25hbWU6IHN0cgorCitSZXRyaWV2ZSBDUkxzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4KKworc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mICdDQScsICdST09UJyBvciAnTVknLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZQorbW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLAorZW5jb2RpbmdfdHlwZSkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQgd2l0aAorWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX2VudW1fY3JscyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9lbnVtX2NybHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2MzQ5MGEyYWExYzUwZDUgaW5wdXQ9YTFmMWQ3NjI5ZjFjNWQzZF0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07Ci0gICAgY2hhciAqc3RvcmVfbmFtZTsKICAgICBIQ0VSVFNUT1JFIGhTdG9yZSA9IE5VTEw7CiAgICAgUENDUkxfQ09OVEVYVCBwQ3JsQ3R4ID0gTlVMTDsKICAgICBQeU9iamVjdCAqY3JsID0gTlVMTCwgKmVuYyA9IE5VTEwsICp0dXAgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInM6ZW51bV9jcmxzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdG9yZV9uYW1lKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzM3LDM2ICs0MzIxLDE4IEBACiAjZW5kaWYgLyogX01TQ19WRVIgKi8KIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICovCi0KIHN0YXRpYyBQeU1ldGhvZERlZiBQeVNTTF9tZXRob2RzW10gPSB7Ci0gICAgeyJfdGVzdF9kZWNvZGVfY2VydCIsICAgICAgIFB5U1NMX3Rlc3RfZGVjb2RlX2NlcnRpZmljYXRlLAotICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIEhBVkVfT1BFTlNTTF9SQU5ECi0gICAgeyJSQU5EX2FkZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9hZGQsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfUkFORF9hZGRfZG9jfSwKLSAgICB7IlJBTkRfYnl0ZXMiLCAgICAgICAgICBQeVNTTF9SQU5EX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX1JBTkRfYnl0ZXNfZG9jfSwKLSAgICB7IlJBTkRfcHNldWRvX2J5dGVzIiwgICBQeVNTTF9SQU5EX3BzZXVkb19ieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9SQU5EX3BzZXVkb19ieXRlc19kb2N9LAotI2lmZGVmIEhBVkVfUkFORF9FR0QKLSAgICB7IlJBTkRfZWdkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2VnZCwgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9SQU5EX2VnZF9kb2N9LAotI2VuZGlmCi0gICAgeyJSQU5EX3N0YXR1cyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5U1NMX1JBTkRfc3RhdHVzLCBNRVRIX05PQVJHUywKLSAgICAgUHlTU0xfUkFORF9zdGF0dXNfZG9jfSwKLSNlbmRpZgotICAgIHsiZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocywKLSAgICAgTUVUSF9OT0FSR1MsIFB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19kb2N9LAotI2lmZGVmIF9NU0NfVkVSCi0gICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilQeVNTTF9lbnVtX2NlcnRpZmljYXRlcywKLSAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgUHlTU0xfZW51bV9jZXJ0aWZpY2F0ZXNfZG9jfSwKLSAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilQeVNTTF9lbnVtX2NybHMsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIFB5U1NMX2VudW1fY3Jsc19kb2N9LAotI2VuZGlmCi0gICAgeyJ0eHQyb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3R4dDJvYmosCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIFB5U1NMX3R4dDJvYmpfZG9jfSwKLSAgICB7Im5pZDJvYmoiLCAoUHlDRnVuY3Rpb24pUHlTU0xfbmlkMm9iaiwKLSAgICAgTUVUSF9WQVJBUkdTLCBQeVNTTF9uaWQyb2JqX2RvY30sCisgICAgX1NTTF9fVEVTVF9ERUNPREVfQ0VSVF9NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfQUREX01FVEhPRERFRgorICAgIF9TU0xfUkFORF9CWVRFU19NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfUFNFVURPX0JZVEVTX01FVEhPRERFRgorICAgIF9TU0xfUkFORF9FR0RfTUVUSE9EREVGCisgICAgX1NTTF9SQU5EX1NUQVRVU19NRVRIT0RERUYKKyAgICBfU1NMX0dFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYKKyAgICBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRgorICAgIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgorICAgIF9TU0xfVFhUMk9CSl9NRVRIT0RERUYKKyAgICBfU1NMX05JRDJPQkpfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMzkwNiw2ICs0NDcyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xTb2NrZXRfVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNTTE1lbW9yeUJJT19UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3NzbG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKQEAgLTM5NjksNiArNDUzNyw5IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfU1NMU29ja2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMU29ja2V0X1R5cGUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTWVtb3J5QklPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMTWVtb3J5QklPX1R5cGUpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfWkVST19SRVRVUk4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9aRVJPX1JFVFVSTik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9XQU5UX1JFQUQiLApAQCAtNDEwOSwxMSArNDY4MCw3IEBACiAgICAgUHlfSU5DUkVGKHIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1NOSSIsIHIpOwogCi0jaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECiAgICAgciA9IFB5X1RydWU7Ci0jZWxzZQotICAgIHIgPSBQeV9GYWxzZTsKLSNlbmRpZgogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19UTFNfVU5JUVVFIiwgcik7CiAKQEAgLTQxMzMsNiArNDcwMCwxNCBAQAogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19OUE4iLCByKTsKIAorI2lmZGVmIEhBVkVfQUxQTgorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfQUxQTiIsIHIpOworCiAgICAgLyogTWFwcGluZ3MgZm9yIGVycm9yIGNvZGVzICovCiAgICAgZXJyX2NvZGVzX3RvX25hbWVzID0gUHlEaWN0X05ldygpOwogICAgIGVycl9uYW1lc190b19jb2RlcyA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0YXQuYyBiL01vZHVsZXMvX3N0YXQuYwppbmRleCBhMzAxZmE4Li5mNmNiMzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdGF0LmMKKysrIGIvTW9kdWxlcy9fc3RhdC5jCkBAIC0yNyw5ICsyNywyMSBAQAogI2VuZGlmIC8qIEhBVkVfU1lTX1NUQVRfSCAqLwogCiAjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHdpbmRvd3MuaD4KIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbW9kZV90OworCisvKiBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNIGFuZCBGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBCisgICBhcmUgbm90IHByZXNlbnQgaW4gVkMyMDEwLCBzbyBkZWZpbmUgdGhlbSBtYW51YWxseSAqLworI2lmbmRlZiBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNCisjICBkZWZpbmUgRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSAweDgwMDAKICNlbmRpZgogCisjaWZuZGVmIEZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEKKyMgIGRlZmluZSBGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBIDB4MjAwMDAKKyNlbmRpZgorCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCiAvKiBGcm9tIFB5dGhvbidzIHN0YXQucHkgKi8KICNpZm5kZWYgU19JTU9ERQogIyAgZGVmaW5lIFNfSU1PREUgMDc3NzcKQEAgLTQ3Myw2ICs0ODUsMTAgQEAKIFNUX0FUSU1FXG5cCiBTVF9NVElNRVxuXAogU1RfQ1RJTUVcblwKK1xuIgorCisiRklMRV9BVFRSSUJVVEVfKjogV2luZG93cyBmaWxlIGF0dHJpYnV0ZSBjb25zdGFudHNcblwKKyAgICAgICAgICAgICAgICAgICAob25seSBwcmVzZW50IG9uIFdpbmRvd3MpXG5cCiAiKTsKIAogCkBAIC01NTUsNiArNTcxLDI2IEBACiAgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9NVElNRSIsIDgpKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNUX0NUSU1FIiwgOSkpIHJldHVybiBOVUxMOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9BUkNISVZFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfREVWSUNFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfSElEREVOKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfTk9STUFMKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX05PVF9DT05URU5UX0lOREVYRUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9PRkZMSU5FKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfU1lTVEVNKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9WSVJUVUFMKSkgcmV0dXJuIE5VTEw7CisjZW5kaWYKKwogICAgIHJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdHJ1Y3QuYyBiL01vZHVsZXMvX3N0cnVjdC5jCmluZGV4IGFkOTk1OWUuLjA2OGM1ZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX3N0cnVjdC5jCkBAIC04NSw4ICs4NSw2IEBACiAjZGVmaW5lIEJPT0xfQUxJR04gMAogI2VuZGlmCiAKLSNkZWZpbmUgU1RSSU5HSUZZKHgpICAgICN4Ci0KICNpZmRlZiBfX3Bvd2VyYwogI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CiAjZW5kaWYKQEAgLTU0Niw4ICs1NDQsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKHggPCBTSFJUX01JTiB8fCB4ID4gU0hSVF9NQVgpewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2hvcnQgZm9ybWF0IHJlcXVpcmVzICIgU1RSSU5HSUZZKFNIUlRfTUlOKQotICAgICAgICAgICAgICAgICAgICAgICAgIiA8PSBudW1iZXIgPD0gIiBTVFJJTkdJRlkoU0hSVF9NQVgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaG9ydCBmb3JtYXQgcmVxdWlyZXMgIiBQeV9TVFJJTkdJRlkoU0hSVF9NSU4pCisgICAgICAgICAgICAgICAgICAgICAgICAiIDw9IG51bWJlciA8PSAiIFB5X1NUUklOR0lGWShTSFJUX01BWCkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHkgPSAoc2hvcnQpeDsKQEAgLTU2NCw3ICs1NjIsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKHggPCAwIHx8IHggPiBVU0hSVF9NQVgpewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IGZvcm1hdCByZXF1aXJlcyAwIDw9IG51bWJlciA8PSAiIFNUUklOR0lGWShVU0hSVF9NQVgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1c2hvcnQgZm9ybWF0IHJlcXVpcmVzIDAgPD0gbnVtYmVyIDw9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NUUklOR0lGWShVU0hSVF9NQVgpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB5ID0gKHVuc2lnbmVkIHNob3J0KXg7CkBAIC0xMjY0LDcgKzEyNjMsOCBAQAogICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgY29uc3QgY2hhciAqZm10OwogICAgIGNoYXIgYzsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGxlbiwgbmNvZGVzLCBudW0sIGl0ZW1zaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgbGVuLCBudW0sIGl0ZW1zaXplOworICAgIHNpemVfdCBuY29kZXM7CiAKICAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5zX2Zvcm1hdCk7CiAKQEAgLTEzMjAsNyArMTMyMCw3IEBACiAgICAgfQogCiAgICAgLyogY2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgaWYgKChuY29kZXMgKyAxKSA+IChQWV9TU0laRV9UX01BWCAvIHNpemVvZihmb3JtYXRjb2RlKSkpIHsKKyAgICBpZiAoKG5jb2RlcyArIDEpID4gKChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoZm9ybWF0Y29kZSkpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKaW5kZXggMTc2ZGY3Yy4uNDNkYjhhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMTkwLDcgKzE5MCw3IEBACiAgICAgICAgIGVsdC0+cHJldi0+bmV4dCA9IGVsdC0+bmV4dDsKICAgICBlbHNlCiAgICAgICAgIG5kLT5oZWFkID0gZWx0LT5uZXh0OwotICAgIAorCiAgICAgaWYgKGVsdC0+bmV4dCkKICAgICAgICAgZWx0LT5uZXh0LT5wcmV2ID0gZWx0LT5wcmV2OwogCkBAIC03NjcsNyArNzY3LDcgQEAKICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBiYXNlLnJlYWRvbmx5ICAgfCAgICAgMCAgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKLSAgfCBiYXNlLmZvcm1hdCAgICAgfCAgICBOVUxMICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwgIAorICB8IGJhc2UuZm9ybWF0ICAgICB8ICAgIE5VTEwgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwogICB8IGJhc2UubmRpbSAgICAgICB8ICAgICAxICAgICB8ICAgICAgMSAgICAgIHwgICAgICAgT0sgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTUxMCw2ICsxNTEwLDE5IEBACiAgICAgICAgIHZpZXctPnNoYXBlID0gTlVMTDsKICAgICB9CiAKKyAgICAvKiBBc2NlcnRhaW4gdGhhdCB0aGUgbmV3IGJ1ZmZlciBoYXMgdGhlIHNhbWUgY29udGlndWl0eSBhcyB0aGUgZXhwb3J0ZXIgKi8KKyAgICBpZiAoTkRfQ19DT05USUdVT1VTKGJhc2VmbGFncykgIT0gUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdDJykgfHwKKyAgICAgICAgLyogc2tpcCBjYXN0IHRvIDEtZCAqLworICAgICAgICAodmlldy0+Zm9ybWF0ICE9IE5VTEwgJiYgdmlldy0+c2hhcGUgIT0gTlVMTCAmJgorICAgICAgICAgTkRfRk9SVFJBTl9DT05USUdVT1VTKGJhc2VmbGFncykgIT0gUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdGJykpIHx8CisgICAgICAgIC8qIGNhc3QgdG8gMS1kICovCisgICAgICAgICh2aWV3LT5mb3JtYXQgPT0gTlVMTCAmJiB2aWV3LT5zaGFwZSA9PSBOVUxMICYmCisgICAgICAgICAhUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdGJykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5OiBjb250aWd1aXR5IG1pc21hdGNoIGluIGdldGJ1ZigpIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKICAgICBQeV9JTkNSRUYodmlldy0+b2JqKTsKICAgICBzZWxmLT5oZWFkLT5leHBvcnRzKys7CkBAIC0yMDA1LDcgKzIwMTgsNyBAQAogewogICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOwogCi0gICAgaWYgKGJhc2UtPm9iaiA9PSBOVUxMKSB7IAorICAgIGlmIChiYXNlLT5vYmogPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAgICAgUHlfSU5DUkVGKGJhc2UtPm9iaik7CkBAIC0yMjA2LDYgKzIyMTksOCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspCiAgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbaV0gPSAtMTsKIAorICAgIG5kLT5oZWFkLT5mbGFncyAmPSB+KE5EX0N8TkRfRk9SVFJBTik7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMjQ2OSwxMyArMjQ4NCwxMiBAQAogewogICAgIFB5X3NzaXplX3QgaTsKIAotICAgIGlmIChuZGltID09IDEgJiYgc2hhcGUgJiYgc2hhcGVbMF0gPT0gMSkgewotICAgICAgICAvKiBUaGlzIGlzIGZvciBjb21wYXJpbmcgc3RyaWRlczogRm9yIGV4YW1wbGUsIHRoZSBhcnJheQotICAgICAgICAgICBbMTc1XSwgc2hhcGU9WzFdLCBzdHJpZGVzPVstNV0gaXMgY29uc2lkZXJlZCBjb250aWd1b3VzLiAqLwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChzaGFwZSAmJiBzaGFwZVtpXSA8PSAxKSB7CisgICAgICAgICAgICAvKiBzdHJpZGVzIGNhbiBkaWZmZXIgaWYgdGhlIGRpbWVuc2lvbiBpcyBsZXNzIHRoYW4gMiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKGExW2ldICE9IGEyW2ldKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjU0NCw3ICsyNTU4LDcgQEAKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2MSk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjIpOwogCi0gICAgcmV0ID0gZXF1YWwgPyBQeV9UcnVlIDogUHlfRmFsc2U7IAorICAgIHJldCA9IGVxdWFsID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOwogICAgIFB5X0lOQ1JFRihyZXQpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0yNTU1LDMwICsyNTY5LDM1IEBACiAgICAgUHlPYmplY3QgKm9iajsKICAgICBQeU9iamVjdCAqb3JkZXI7CiAgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfYnVmZmVyIHZpZXcsICpiYXNlOwogICAgIGNoYXIgb3JkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZvYmosICZvcmRlcikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgotICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7Ci0gICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgewotICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgaWYgKE5EQXJyYXlfQ2hlY2sob2JqKSkgeworICAgICAgICAvKiBTa2lwIHRoZSBidWZmZXIgcHJvdG9jb2wgdG8gY2hlY2sgc2ltcGxlIGV0Yy4gYnVmZmVycyBkaXJlY3RseS4gKi8KKyAgICAgICAgYmFzZSA9ICYoKE5EQXJyYXlPYmplY3QgKilvYmopLT5oZWFkLT5iYXNlOworICAgICAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgb3JkKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2aWV3LCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICB9CiAKLSAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnZpZXcsIG9yZCkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CiAgICAgUHlfSU5DUkVGKHJldCk7Ci0KLXJlbGVhc2U6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggOGViZTk3MC4uYmEwYTI0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC0xMiw2ICsxMiwxMSBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImRhdGV0aW1lLmgiCiAjaW5jbHVkZSAibWFyc2hhbC5oIgorI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaWZkZWYgTVNfV0lORE9XUworIyAgaW5jbHVkZSA8d2luc29jazIuaD4gICAgICAgICAvKiBzdHJ1Y3QgdGltZXZhbCAqLworI2VuZGlmCiAKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCkBAIC02OCw2ICs3MywxMCBAQAogc3RhdGljIFB5T2JqZWN0KgogdGVzdF9zaXplb2ZfY190eXBlcyhQeU9iamVjdCAqc2VsZikKIHsKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA1KSkpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0eXBlLWxpbWl0cyIKKyNlbmRpZgogI2RlZmluZSBDSEVDS19TSVpFT0YoVFlQRSwgRVhQRUNURUQpICAgICAgICAgXAogICAgIGlmIChFWFBFQ1RFRCAhPSBzaXplb2YoVFlQRSkpICB7ICAgICAgICAgXAogICAgICAgICBQeUVycl9Gb3JtYXQoVGVzdEVycm9yLCAgICAgICAgICAgICAgXApAQCAtMTI1LDYgKzEzNCw5IEBACiAjdW5kZWYgSVNfU0lHTkVECiAjdW5kZWYgQ0hFQ0tfU0lHTkVTUwogI3VuZGVmIENIRUNLX1NJWkVPRgorI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDUpKSkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKIH0KIAogCkBAIC0xNzE5LDcgKzE3MzEsNyBAQAogICAgICAgICAgICAgIHstMHhmZmZmTCwgMTYsIC0xfSwKICAgICAgICAgICAgICB7MHhmZmZmZmZmTCwgMjgsIDF9LAogICAgICAgICAgICAgIHstMHhmZmZmZmZmTCwgMjgsIC0xfX07Ci0gICAgaW50IGk7CisgICAgc2l6ZV90IGk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfQVJSQVlfTEVOR1RIKHRlc3RjYXNlcyk7ICsraSkgewogICAgICAgICBzaXplX3QgbmJpdHM7CkBAIC0yNDgwLDcgKzI0OTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJmluZm8pOwogfQotIAorCiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9mcm9tX2NvbnRpZ3VvdXMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CkBAIC0yNTMxLDYgKzI1NDMsNTggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmIChkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpICYmIGRlZmluZWQoX19HTlVDX18pCitleHRlcm4gUHlUeXBlT2JqZWN0IF9QeUJ5dGVzSU9CdWZmZXJfVHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcGVwMzExOF9vYnNvbGV0ZV93cml0ZV9sb2NrcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSAmX1B5Qnl0ZXNJT0J1ZmZlcl9UeXBlOworICAgIFB5T2JqZWN0ICpiOworICAgIGNoYXIgKmR1bW15WzFdOworICAgIGludCByZXQsIG1hdGNoOworCisgICAgLyogUHlCdWZmZXJfRmlsbEluZm8oKSAqLworICAgIHJldCA9IFB5QnVmZmVyX0ZpbGxJbmZvKE5VTEwsIE5VTEwsIGR1bW15LCAxLCAwLCBQeUJVRl9TSU1QTEUpOworICAgIG1hdGNoID0gUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0J1ZmZlckVycm9yKTsKKyAgICBQeUVycl9DbGVhcigpOworICAgIGlmIChyZXQgIT0gLTEgfHwgbWF0Y2ggPT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIGJ5dGVzaW9idWZfZ2V0YnVmZmVyKCkgKi8KKyAgICBiID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeU9iamVjdF9HZXRCdWZmZXIoYiwgTlVMTCwgUHlCVUZfU0lNUExFKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgbWF0Y2ggPSBQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQnVmZmVyRXJyb3IpOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKHJldCAhPSAtMSB8fCBtYXRjaCA9PSAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfUkVUVVJOX05PTkU7CisKK2Vycm9yOgorICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsCisgICAgICAgICJ0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3M6IGZhaWx1cmUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisvKiBUaGlzIHRlc3RzIGZ1bmN0aW9ucyB0aGF0IGhpc3RvcmljYWxseSBzdXBwb3J0ZWQgd3JpdGUgbG9ja3MuICBJdCBpcworICAgd3JvbmcgdG8gY2FsbCBnZXRidWZmZXIoKSB3aXRoIHZpZXc9PU5VTEwgYW5kIGEgY29tcGxpYW50IGdldGJ1ZmZlcnByb2MKKyAgIGlzIGVudGl0bGVkIHRvIHNlZ2ZhdWx0IGluIHRoYXQgY2FzZS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosIE5VTEwsIFB5QlVGX1NJTVBMRSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKiBUZXN0IHRoYXQgdGhlIGZhdGFsIGVycm9yIGZyb20gbm90IGhhdmluZyBhIGN1cnJlbnQgdGhyZWFkIGRvZXNuJ3QKICAgIGNhdXNlIGFuIGluZmluaXRlIGxvb3AuICBSdW4gdmlhIExpYi90ZXN0L3Rlc3RfY2FwaS5weSAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI1ODIsNyArMjY0Niw3IEBACiBzdGF0aWMgaW50CiBjaGVja190aW1lX3JvdW5kaW5nKGludCByb3VuZCkKIHsKLSAgICBpZiAocm91bmQgIT0gX1B5VGltZV9ST1VORF9ET1dOICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfVVApIHsKKyAgICBpZiAocm91bmQgIT0gX1B5VGltZV9ST1VORF9GTE9PUiAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIHJvdW5kaW5nIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yNzE1LDYgKzI3NzksMjEgQEAKICAgICByZXR1cm4gb2JqOwogfQogCitzdGF0aWMgUHlNZXRob2REZWYgbWw7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjcmVhdGVfY2Z1bmN0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gUHlDRnVuY3Rpb25fTmV3RXgoJm1sLCBzZWxmLCBOVUxMKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG1sID0geworICAgICJjcmVhdGVfY2Z1bmN0aW9uIiwKKyAgICBjcmVhdGVfY2Z1bmN0aW9uLAorICAgIE1FVEhfTk9BUkdTLAorICAgIE5VTEwKK307CisKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGVzdF9pbmNyZWYoUHlPYmplY3QgKm9iKQogewpAQCAtMjc3Myw2ICsyODUyLDIwIEBACiB7CiAgICAgdm9pZCAqcHRyOwogCisgICAgcHRyID0gUHlNZW1fUmF3TWFsbG9jKDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fUmF3TWFsbG9jKDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fUmF3RnJlZShwdHIpOworCisgICAgcHRyID0gUHlNZW1fUmF3Q2FsbG9jKDAsIDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fUmF3Q2FsbG9jKDAsIDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fUmF3RnJlZShwdHIpOworCiAgICAgcHRyID0gUHlNZW1fTWFsbG9jKDApOwogICAgIGlmIChwdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fTWFsbG9jKDApIHJldHVybnMgTlVMTCIpOwpAQCAtMjc4MCw2ICsyODczLDEzIEBACiAgICAgfQogICAgIFB5TWVtX0ZyZWUocHRyKTsKIAorICAgIHB0ciA9IFB5TWVtX0NhbGxvYygwLCAwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5TWVtX0NhbGxvYygwLCAwKSByZXR1cm5zIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TWVtX0ZyZWUocHRyKTsKKwogICAgIHB0ciA9IFB5T2JqZWN0X01hbGxvYygwKTsKICAgICBpZiAocHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5T2JqZWN0X01hbGxvYygwKSByZXR1cm5zIE5VTEwiKTsKQEAgLTI3ODcsMTMgKzI4ODcsMjIgQEAKICAgICB9CiAgICAgUHlPYmplY3RfRnJlZShwdHIpOwogCisgICAgcHRyID0gUHlPYmplY3RfQ2FsbG9jKDAsIDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlPYmplY3RfQ2FsbG9jKDAsIDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlPYmplY3RfRnJlZShwdHIpOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCiAgICAgc2l6ZV90IG1hbGxvY19zaXplOworICAgIHNpemVfdCBjYWxsb2NfbmVsZW07CisgICAgc2l6ZV90IGNhbGxvY19lbHNpemU7CiAgICAgdm9pZCAqcmVhbGxvY19wdHI7CiAgICAgc2l6ZV90IHJlYWxsb2NfbmV3X3NpemU7CiAgICAgdm9pZCAqZnJlZV9wdHI7CkBAIC0yODA2LDYgKzI5MTUsMTQgQEAKICAgICByZXR1cm4gaG9vay0+YWxsb2MubWFsbG9jKGhvb2stPmFsbG9jLmN0eCwgc2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkKiBob29rX2NhbGxvYyAodm9pZCogY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgYWxsb2NfaG9va190ICpob29rID0gKGFsbG9jX2hvb2tfdCAqKWN0eDsKKyAgICBob29rLT5jYWxsb2NfbmVsZW0gPSBuZWxlbTsKKyAgICBob29rLT5jYWxsb2NfZWxzaXplID0gZWxzaXplOworICAgIHJldHVybiBob29rLT5hbGxvYy5jYWxsb2MoaG9vay0+YWxsb2MuY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwogc3RhdGljIHZvaWQqIGhvb2tfcmVhbGxvYyAodm9pZCogY3R4LCB2b2lkKiBwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICBhbGxvY19ob29rX3QgKmhvb2sgPSAoYWxsb2NfaG9va190ICopY3R4OwpAQCAtMjgyNywxNyArMjk0NCwxNSBAQAogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9yX21zZzsKICAgICBhbGxvY19ob29rX3QgaG9vazsKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKLSAgICBzaXplX3Qgc2l6ZSwgc2l6ZTI7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKKyAgICBzaXplX3Qgc2l6ZSwgc2l6ZTIsIG5lbGVtLCBlbHNpemU7CiAgICAgdm9pZCAqcHRyLCAqcHRyMjsKIAotICAgIGhvb2subWFsbG9jX3NpemUgPSAwOwotICAgIGhvb2sucmVhbGxvY19wdHIgPSBOVUxMOwotICAgIGhvb2sucmVhbGxvY19uZXdfc2l6ZSA9IDA7Ci0gICAgaG9vay5mcmVlX3B0ciA9IE5VTEw7CisgICAgbWVtc2V0KCZob29rLCAwLCBzaXplb2YoaG9vaykpOwogCiAgICAgYWxsb2MuY3R4ID0gJmhvb2s7CiAgICAgYWxsb2MubWFsbG9jID0gJmhvb2tfbWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9ICZob29rX2NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gJmhvb2tfcmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gJmhvb2tfZnJlZTsKICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoZG9tYWluLCAmaG9vay5hbGxvYyk7CkBAIC0yODk0LDYgKzMwMDksMzMgQEAKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAorICAgIG5lbGVtID0gMjsKKyAgICBlbHNpemUgPSA1OworICAgIHN3aXRjaChkb21haW4pCisgICAgeworICAgIGNhc2UgUFlNRU1fRE9NQUlOX1JBVzogcHRyID0gUHlNZW1fUmF3Q2FsbG9jKG5lbGVtLCBlbHNpemUpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9NRU06IHB0ciA9IFB5TWVtX0NhbGxvYyhuZWxlbSwgZWxzaXplKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBwdHIgPSBQeU9iamVjdF9DYWxsb2MobmVsZW0sIGVsc2l6ZSk7IGJyZWFrOworICAgIGRlZmF1bHQ6IHB0ciA9IE5VTEw7IGJyZWFrOworICAgIH0KKworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBlcnJvcl9tc2cgPSAiY2FsbG9jIGZhaWxlZCI7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAoaG9vay5jYWxsb2NfbmVsZW0gIT0gbmVsZW0gfHwgaG9vay5jYWxsb2NfZWxzaXplICE9IGVsc2l6ZSkgeworICAgICAgICBlcnJvcl9tc2cgPSAiY2FsbG9jIGludmFsaWQgbmVsZW0gb3IgZWxzaXplIjsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIHN3aXRjaChkb21haW4pCisgICAgeworICAgIGNhc2UgUFlNRU1fRE9NQUlOX1JBVzogUHlNZW1fUmF3RnJlZShwdHIpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9NRU06IFB5TWVtX0ZyZWUocHRyKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBQeU9iamVjdF9GcmVlKHB0cik7IGJyZWFrOworICAgIH0KKwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXMgPSBQeV9Ob25lOwogICAgIGdvdG8gZmluYWxseTsKQEAgLTI5NTMsNiArMzA5NSwxMiBAQAogIlRoaXMgZG9jc3RyaW5nIGhhcyBhIHZhbGlkIHNpZ25hdHVyZS4iCiApOwogCitQeURvY19TVFJWQVIoZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2J1dF9ub19kb2MsCisiZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2J1dF9ub19kb2MoJG1vZHVsZSwgLywgc2lnKVxuIgorIi0tXG4iCisiXG4iCispOworCiBQeURvY19TVFJWQVIoZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcywKICJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzKCRtb2R1bGUsIC8sIHBhcmFtZXRlcilcbiIKICItLVxuIgpAQCAtMzA2Myw2ICszMjExLDI0IEBACiB9CiAjZW5kaWYgICAvKiBXSVRIX1RIUkVBRCAqLwogCitzdGF0aWMgUHlPYmplY3QqCit0ZXN0X3JhaXNlX3NpZ25hbChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHNpZ251bSwgZXJyOworCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmFpc2Vfc2lnbmFsIiwgJnNpZ251bSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVyciA9IHJhaXNlKHNpZ251bSk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIC8qIG1hcnNoYWwgKi8KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMzIxNiw2ICszMzgyLDE0MiBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIG9iaiwgcG9zKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcmV0dXJuX251bGxfd2l0aG91dF9lcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogaW52YWxpZCBjYWxsOiByZXR1cm4gTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IsCisgICAgICogX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKSBtdXN0IGRldGVjdCBzdWNoIGJ1ZyBhdCBydW50aW1lLiAqLworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3JldHVybl9yZXN1bHRfd2l0aF9lcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogaW52YWxpZCBjYWxsOiByZXR1cm4gYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQsCisgICAgICogX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKSBtdXN0IGRldGVjdCBzdWNoIGJ1ZyBhdCBydW50aW1lLiAqLworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfVmFsdWVFcnJvcik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9mcm9tc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHNlY29uZHM7CisgICAgX1B5VGltZV90IHRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJnNlY29uZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0cyA9IF9QeVRpbWVfRnJvbVNlY29uZHMoc2Vjb25kcyk7CisgICAgcmV0dXJuIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdCh0cyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9mcm9tc2Vjb25kc29iamVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBpbnQgcm91bmQ7CisgICAgX1B5VGltZV90IHRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaSIsICZvYmosICZyb3VuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChjaGVja190aW1lX3JvdW5kaW5nKHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0cywgb2JqLCByb3VuZCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QodHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfYXNzZWNvbmRzZG91YmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgX1B5VGltZV90IHRzOworICAgIGRvdWJsZSBkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMIiwgJm5zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdHMgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgZCA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHRzKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9QeVRpbWVfQXNUaW1ldmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgaW50IHJvdW5kOworICAgIF9QeVRpbWVfdCB0OworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIFB5T2JqZWN0ICpzZWNvbmRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMaSIsICZucywgJnJvdW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGNoZWNrX3RpbWVfcm91bmRpbmcocm91bmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdCA9IF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKG5zKTsKKyAgICBpZiAoX1B5VGltZV9Bc1RpbWV2YWwodCwgJnR2LCByb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNlY29uZHMgPSBQeUxvbmdfRnJvbUxvbmcoKFBZX0xPTkdfTE9ORyl0di50dl9zZWMpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIHNlY29uZHMsIHR2LnR2X3VzZWMpOworfQorCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9QeVRpbWVfQXNUaW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIF9QeVRpbWVfdCB0OworICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTCIsICZucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHQgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgaWYgKF9QeVRpbWVfQXNUaW1lc3BlYyh0LCAmdHMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBfUHlMb25nX0Zyb21UaW1lX3QodHMudHZfc2VjKSwgdHMudHZfbnNlYyk7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgaW50IHJvdW5kOworICAgIF9QeVRpbWVfdCB0LCBtczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTGkiLCAmbnMsICZyb3VuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChjaGVja190aW1lX3JvdW5kaW5nKHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHQgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHQsIHJvdW5kKTsKKyAgICAvKiBUaGlzIGNvbnZlcnNpb24gcmVseSBvbiB0aGUgZmFjdCB0aGF0IF9QeVRpbWVfdCBpcyBhIG51bWJlciBvZgorICAgICAgIG5hbm9zZWNvbmRzICovCisgICAgcmV0dXJuIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChtcyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIGludCByb3VuZDsKKyAgICBfUHlUaW1lX3QgdCwgbXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkxpIiwgJm5zLCAmcm91bmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoY2hlY2tfdGltZV9yb3VuZGluZyhyb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0ID0gX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobnMpOworICAgIG1zID0gX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyh0LCByb3VuZCk7CisgICAgLyogVGhpcyBjb252ZXJzaW9uIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBfUHlUaW1lX3QgaXMgYSBudW1iZXIgb2YKKyAgICAgICBuYW5vc2Vjb25kcyAqLworICAgIHJldHVybiBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QobXMpOworfQorCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzI0OSw2ICszNTUxLDEwIEBACiAgICAgeyJ0ZXN0X3VuaWNvZGVfY29tcGFyZV93aXRoX2FzY2lpIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfdW5pY29kZV9jb21wYXJlX3dpdGhfYXNjaWksIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfY2Fwc3VsZSIsIChQeUNGdW5jdGlvbil0ZXN0X2NhcHN1bGUsIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZnJvbV9jb250aWd1b3VzIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfZnJvbV9jb250aWd1b3VzLCBNRVRIX05PQVJHU30sCisjaWYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkgJiYgZGVmaW5lZChfX0dOVUNfXykKKyAgICB7InRlc3RfcGVwMzExOF9vYnNvbGV0ZV93cml0ZV9sb2NrcyIsIChQeUNGdW5jdGlvbil0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3MsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgorICAgIHsiZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3IiwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBNRVRIX099LAogICAgIHsiZ2V0YXJnc190dXBsZSIsICAgICAgICAgICBnZXRhcmdzX3R1cGxlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19rZXl3b3JkcyIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRzLAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LApAQCAtMzMyMiw2ICszNjI4LDcgQEAKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1ldmFsLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsICBNRVRIX1ZBUkFSR1N9LAogICAgIHsid2l0aF90cF9kZWwiLCAgICAgICAgICAgICB3aXRoX3RwX2RlbCwgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY3JlYXRlX2NmdW5jdGlvbiIsICAgICAgICBjcmVhdGVfY2Z1bmN0aW9uLCAgICAgICAgICAgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3B5bWVtX2FsbG9jMCIsCiAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3B5bWVtX2FsbG9jMCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9weW1lbV9zZXRyYXdhbGxvY2F0b3JzIiwKQEAgLTMzNDcsMTIgKzM2NTQsMTcgQEAKICAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZSIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKICAgICAgICAgZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlfSwKKyAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAorICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvY30sCiAgICAgeyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzIiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAogICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzfSwKICAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV93aXRoX2RlZmF1bHRzIiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAogICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfd2l0aF9kZWZhdWx0c30sCisgICAgeyJyYWlzZV9zaWduYWwiLAorICAgICAoUHlDRnVuY3Rpb24pdGVzdF9yYWlzZV9zaWduYWwsIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7ImNhbGxfaW5fdGVtcG9yYXJ5X2NfdGhyZWFkIiwgY2FsbF9pbl90ZW1wb3JhcnlfY190aHJlYWQsIE1FVEhfTywKICAgICAgUHlEb2NfU1RSKCJzZXRfZXJyb3JfY2xhc3MoZXJyb3JfY2xhc3MpIC0+IE5vbmUiKX0sCkBAIC0zMzY5LDYgKzM2ODEsMTkgQEAKICAgICAgICAgcHltYXJzaGFsX3JlYWRfbGFzdF9vYmplY3RfZnJvbV9maWxlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicHltYXJzaGFsX3JlYWRfb2JqZWN0X2Zyb21fZmlsZSIsCiAgICAgICAgIHB5bWFyc2hhbF9yZWFkX29iamVjdF9mcm9tX2ZpbGUsIE1FVEhfVkFSQVJHU30sCisgICAgeyJyZXR1cm5fbnVsbF93aXRob3V0X2Vycm9yIiwKKyAgICAgICAgcmV0dXJuX251bGxfd2l0aG91dF9lcnJvciwgTUVUSF9OT0FSR1N9LAorICAgIHsicmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yIiwKKyAgICAgICAgcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yLCBNRVRIX05PQVJHU30sCisgICAgeyJQeVRpbWVfRnJvbVNlY29uZHMiLCB0ZXN0X3B5dGltZV9mcm9tc2Vjb25kcywgIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QiLCB0ZXN0X3B5dGltZV9mcm9tc2Vjb25kc29iamVjdCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfQXNTZWNvbmRzRG91YmxlIiwgdGVzdF9weXRpbWVfYXNzZWNvbmRzZG91YmxlLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiUHlUaW1lX0FzVGltZXZhbCIsIHRlc3RfUHlUaW1lX0FzVGltZXZhbCwgTUVUSF9WQVJBUkdTfSwKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICB7IlB5VGltZV9Bc1RpbWVzcGVjIiwgdGVzdF9QeVRpbWVfQXNUaW1lc3BlYywgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgorICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTM1MjgsNiArMzg1MywyMDEgQEAKIH07CiAKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKK30gbWF0bXVsT2JqZWN0OworCitzdGF0aWMgUHlPYmplY3QgKgorbWF0bXVsVHlwZV9tYXRtdWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlcikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHNPTykiLCAibWF0bXVsIiwgc2VsZiwgb3RoZXIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWF0bXVsVHlwZV9pbWF0bXVsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzT08pIiwgImltYXRtdWwiLCBzZWxmLCBvdGhlcik7Cit9CisKK3N0YXRpYyB2b2lkCittYXRtdWxUeXBlX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBtYXRtdWxUeXBlX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlIHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcG9zaXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWJzb2x1dGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnZlcnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9hdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yZW1haW5kZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2luZGV4ICovCisgICAgbWF0bXVsVHlwZV9tYXRtdWwsICAgICAgICAvKiBuYl9tYXRyaXhfbXVsdGlwbHkgKi8KKyAgICBtYXRtdWxUeXBlX2ltYXRtdWwgICAgICAgIC8qIG5iX21hdHJpeF9pbnBsYWNlX211bHRpcGx5ICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IG1hdG11bFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIm1hdG11bFR5cGUiLAorICAgIHNpemVvZihtYXRtdWxPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgbWF0bXVsVHlwZV9kZWFsbG9jLCAgICAgICAgICAgICAgICAgLyogZGVzdHJ1Y3RvciB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgICZtYXRtdWxUeXBlX2FzX251bWJlciwgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgIkMgbGV2ZWwgdHlwZSB3aXRoIG1hdHJpeCBvcGVyYXRpb25zIGRlZmluZWQiLAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYXZlcnNlcHJvYyB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqYW9faXRlcmF0b3I7Cit9IGF3YWl0T2JqZWN0OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithd2FpdE9iamVjdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnY7CisgICAgYXdhaXRPYmplY3QgKmFvOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiYXdhaXRPYmplY3QiLCAxLCAxLCAmdikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYW8gPSAoYXdhaXRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoYW8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYodik7CisgICAgYW8tPmFvX2l0ZXJhdG9yID0gdjsKKworICAgIHJldHVybiAoUHlPYmplY3QgKilhbzsKK30KKworCitzdGF0aWMgdm9pZAorYXdhaXRPYmplY3RfZGVhbGxvYyhhd2FpdE9iamVjdCAqYW8pCit7CisgICAgUHlfQ0xFQVIoYW8tPmFvX2l0ZXJhdG9yKTsKKyAgICBQeV9UWVBFKGFvKS0+dHBfZnJlZShhbyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2F3YWl0T2JqZWN0X2F3YWl0KGF3YWl0T2JqZWN0ICphbykKK3sKKyAgICBQeV9JTkNSRUYoYW8tPmFvX2l0ZXJhdG9yKTsKKyAgICByZXR1cm4gYW8tPmFvX2l0ZXJhdG9yOworfQorCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXdhaXRUeXBlX2FzX2FzeW5jID0geworICAgICh1bmFyeWZ1bmMpYXdhaXRPYmplY3RfYXdhaXQsICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGF3YWl0VHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiYXdhaXRUeXBlIiwKKyAgICBzaXplb2YoYXdhaXRPYmplY3QpLCAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKWF3YWl0T2JqZWN0X2RlYWxsb2MsICAgIC8qIGRlc3RydWN0b3IgdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXdhaXRUeXBlX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgICJDIGxldmVsIHR5cGUgd2l0aCB0cF9hc19hc3luYyIsCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHJhdmVyc2Vwcm9jIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgYXdhaXRPYmplY3RfbmV3LCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF90ZXN0Y2FwaW1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCkBAIC0zNTQxLDYgKzQwNjEsOSBAQAogICAgIE5VTEwKIH07CiAKKy8qIFBlciBQRVAgNDg5LCB0aGlzIG1vZHVsZSB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8gbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24KKyAqLworCiBQeU1PRElOSVRfRlVOQwogUHlJbml0X190ZXN0Y2FwaSh2b2lkKQogewpAQCAtMzU1Nyw2ICs0MDgwLDE1IEBACiAgICAgLyogZG9uJ3QgdXNlIGEgbmFtZSBzdGFydGluZyB3aXRoICJ0ZXN0Iiwgc2luY2Ugd2UgZG9uJ3Qgd2FudAogICAgICAgIHRlc3RfY2FwaSB0byBhdXRvbWF0aWNhbGx5IGNhbGwgdGhpcyAqLwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX3Rlc3Rfc3RydWN0bWVtYmVyc1R5cGUiLCAoUHlPYmplY3QgKikmdGVzdF9zdHJ1Y3RtZW1iZXJzVHlwZSk7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmbWF0bXVsVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJm1hdG11bFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibWF0bXVsVHlwZSIsIChQeU9iamVjdCAqKSZtYXRtdWxUeXBlKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJmF3YWl0VHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJmF3YWl0VHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJhd2FpdFR5cGUiLCAoUHlPYmplY3QgKikmYXdhaXRUeXBlKTsKIAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ0hBUl9NQVgiLCBQeUxvbmdfRnJvbUxvbmcoQ0hBUl9NQVgpKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNIQVJfTUlOIiwgUHlMb25nX0Zyb21Mb25nKENIQVJfTUlOKSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDA1MjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwpAQCAtMCwwICsxLDU5NCBAQAorCisvKiBUZXN0aW5nIG1vZHVsZSBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24gb2YgZXh0ZW5zaW9uIG1vZHVsZXMgKFBFUCA0ODkpCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisvKiBFeGFtcGxlIG9iamVjdHMgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgICAgICAgICAgICAqeF9hdHRyOyAgICAgICAgLyogQXR0cmlidXRlcyBkaWN0aW9uYXJ5ICovCit9IEV4YW1wbGVPYmplY3Q7CisKKy8qIEV4YW1wbGUgbWV0aG9kcyAqLworCitzdGF0aWMgaW50CitFeGFtcGxlX3RyYXZlcnNlKEV4YW1wbGVPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnhfYXR0cik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0V4YW1wbGVfZmluYWxpemUoRXhhbXBsZU9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRXhhbXBsZV9kZW1vKEV4YW1wbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvID0gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOmRlbW8iLCAmbykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChvICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKG8pKSB7CisgICAgICAgIFB5X0lOQ1JFRihvKTsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgRXhhbXBsZV9tZXRob2RzW10gPSB7CisgICAgeyJkZW1vIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pRXhhbXBsZV9kZW1vLCAgTUVUSF9WQVJBUkdTLAorICAgICAgICBQeURvY19TVFIoImRlbW8oKSAtPiBOb25lIil9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorRXhhbXBsZV9nZXRhdHRybyhFeGFtcGxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBpZiAoc2VsZi0+eF9hdHRyICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnYgPSBQeURpY3RfR2V0SXRlbShzZWxmLT54X2F0dHIsIG5hbWUpOworICAgICAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0ICopc2VsZiwgbmFtZSk7Cit9CisKK3N0YXRpYyBpbnQKK0V4YW1wbGVfc2V0YXR0cihFeGFtcGxlT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK3sKKyAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgaW50IHJ2ID0gUHlEaWN0X0RlbEl0ZW1TdHJpbmcoc2VsZi0+eF9hdHRyLCBuYW1lKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVsZXRlIG5vbi1leGlzdGluZyBFeGFtcGxlIGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gcnY7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtU3RyaW5nKHNlbGYtPnhfYXR0ciwgbmFtZSwgdik7Cit9CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBFeGFtcGxlX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZG9jLCAiVGhlIEV4YW1wbGUgdHlwZSJ9LAorICAgIHtQeV90cF9maW5hbGl6ZSwgRXhhbXBsZV9maW5hbGl6ZX0sCisgICAge1B5X3RwX3RyYXZlcnNlLCBFeGFtcGxlX3RyYXZlcnNlfSwKKyAgICB7UHlfdHBfZ2V0YXR0cm8sIEV4YW1wbGVfZ2V0YXR0cm99LAorICAgIHtQeV90cF9zZXRhdHRyLCBFeGFtcGxlX3NldGF0dHJ9LAorICAgIHtQeV90cF9tZXRob2RzLCBFeGFtcGxlX21ldGhvZHN9LAorICAgIHswLCAwfSwKK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBFeGFtcGxlX1R5cGVfc3BlYyA9IHsKKyAgICAiX3Rlc3RpbXBvcnRleGVjLkV4YW1wbGUiLAorICAgIHNpemVvZihFeGFtcGxlT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwKKyAgICBFeGFtcGxlX1R5cGVfc2xvdHMKK307CisKKy8qIEZ1bmN0aW9uIG9mIHR3byBpbnRlZ2VycyByZXR1cm5pbmcgaW50ZWdlciAqLworCitQeURvY19TVFJWQVIodGVzdGV4cG9ydF9mb29fZG9jLAorImZvbyhpLGopXG5cCitcblwKK1JldHVybiB0aGUgc3VtIG9mIGkgYW5kIGouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0ZXhwb3J0X2ZvbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyBpLCBqOworICAgIGxvbmcgcmVzOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGw6Zm9vIiwgJmksICZqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gaSArIGo7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOworfQorCisvKiBUZXN0IHRoYXQgUHlTdGF0ZSByZWdpc3RyYXRpb24gZmFpbHMgICovCisKK1B5RG9jX1NUUlZBUihjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jX2RvYywKKyJyZWdpc3Rlcl9zdGF0ZSgwKTogY2FsbCBQeVN0YXRlX0ZpbmRNb2R1bGUoKVxuXAorcmVnaXN0ZXJfc3RhdGUoMSk6IGNhbGwgUHlTdGF0ZV9BZGRNb2R1bGUoKVxuXAorcmVnaXN0ZXJfc3RhdGUoMik6IGNhbGwgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoKSIpOworCitzdGF0aWMgUHlPYmplY3QgKgorY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYyhQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgaSwgcmV0OworICAgIFB5TW9kdWxlRGVmICpkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICBpZiAoZGVmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jIiwgJmkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgbW9kID0gUHlTdGF0ZV9GaW5kTW9kdWxlKGRlZik7CisgICAgICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldCA9IFB5U3RhdGVfQWRkTW9kdWxlKG1vZCwgZGVmKTsKKyAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldCA9IFB5U3RhdGVfUmVtb3ZlTW9kdWxlKGRlZik7CisgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlUeXBlX1Nsb3QgU3RyX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfYmFzZSwgTlVMTH0sIC8qIGZpbGxlZCBvdXQgaW4gbW9kdWxlIGV4ZWMgZnVuY3Rpb24gKi8KKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgU3RyX1R5cGVfc3BlYyA9IHsKKyAgICAiX3Rlc3RpbXBvcnRleGVjLlN0ciIsCisgICAgMCwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsCisgICAgU3RyX1R5cGVfc2xvdHMKK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0ZXN0ZXhwb3J0X21ldGhvZHNbXSA9IHsKKyAgICB7ImZvbyIsICAgICAgICAgICAgIHRlc3RleHBvcnRfZm9vLCAgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgICAgdGVzdGV4cG9ydF9mb29fZG9jfSwKKyAgICB7ImNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMiLCAgY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYywKKyAgICAgICAgTUVUSF9WQVJBUkdTLCBjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBpbnQgZXhlY2Z1bmMoUHlPYmplY3QgKm0pCit7CisgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOworCisgICAgLyogRHVlIHRvIGNyb3NzIHBsYXRmb3JtIGNvbXBpbGVyIGlzc3VlcyB0aGUgc2xvdHMgbXVzdCBiZSBmaWxsZWQKKyAgICAgKiBoZXJlLiBJdCdzIHJlcXVpcmVkIGZvciBwb3J0YWJpbGl0eSB0byBXaW5kb3dzIHdpdGhvdXQgcmVxdWlyaW5nCisgICAgICogQysrLiAqLworICAgIFN0cl9UeXBlX3Nsb3RzWzBdLnBmdW5jID0gJlB5VW5pY29kZV9UeXBlOworCisgICAgLyogQWRkIGEgY3VzdG9tIHR5cGUgKi8KKyAgICB0ZW1wID0gUHlUeXBlX0Zyb21TcGVjKCZFeGFtcGxlX1R5cGVfc3BlYyk7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkV4YW1wbGUiLCB0ZW1wKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICAvKiBBZGQgYW4gZXhjZXB0aW9uIHR5cGUgKi8KKyAgICB0ZW1wID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfdGVzdGltcG9ydGV4ZWMuZXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCB0ZW1wKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICAvKiBBZGQgU3RyICovCisgICAgdGVtcCA9IFB5VHlwZV9Gcm9tU3BlYygmU3RyX1R5cGVfc3BlYyk7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlN0ciIsIHRlbXApICE9IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiaW50X2NvbnN0IiwgMTk2OSkgIT0gMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJzdHJfY29uc3QiLCAic29tZXRoaW5nIGRpZmZlcmVudCIpICE9IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIHJldHVybiAwOworIGZhaWw6CisgICAgcmV0dXJuIC0xOworfQorCisvKiBIZWxwZXIgZm9yIG1vZHVsZSBkZWZpbml0aW9uczsgdGhlcmUnbGwgYmUgYSBsb3Qgb2YgdGhlbSAqLworI2RlZmluZSBURVNUX01PRFVMRV9ERUYobmFtZSwgc2xvdHMsIG1ldGhvZHMpIHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovIFwKKyAgICBuYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLyBcCisgICAgUHlEb2NfU1RSKCJUZXN0IG1vZHVsZSAiIG5hbWUpLCAgICAgICAgICAgICAvKiBtX2RvYyAqLyBcCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8gXAorICAgIG1ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovIFwKKyAgICBzbG90cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8gXAorICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLyBcCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovIFwKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLyBcCit9CisKK1B5TW9kdWxlRGVmX1Nsb3QgbWFpbl9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBtYWluX2RlZiA9IFRFU1RfTU9EVUxFX0RFRigibWFpbiIsIG1haW5fc2xvdHMsIHRlc3RleHBvcnRfbWV0aG9kcyk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZtYWluX2RlZik7Cit9CisKKworLyoqKiogSW1wb3J0aW5nIGEgbm9uLW1vZHVsZSBvYmplY3QgKioqKi8KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25tb2R1bGU7CisKKy8qIENyZWF0ZSBhIFNpbXBsZU5hbWVzcGFjZSh0aHJlZT0zKSAqLworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY19ub25tb2R1bGUoUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCit7CisgICAgUHlPYmplY3QgKmRjdCwgKm5zLCAqdGhyZWU7CisKKyAgICBpZiAoZGVmICE9ICZkZWZfbm9ubW9kdWxlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImRlZiBkb2VzIG5vdCBtYXRjaCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGRjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRocmVlID0gUHlMb25nX0Zyb21Mb25nKDMpOworICAgIGlmICh0aHJlZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkY3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGN0LCAidGhyZWUiLCB0aHJlZSk7CisgICAgUHlfREVDUkVGKHRocmVlKTsKKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhkY3QpOworICAgIFB5X0RFQ1JFRihkY3QpOworICAgIHJldHVybiBuczsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3Qgc2xvdHNfY3JlYXRlX25vbm1vZHVsZVtdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX25vbm1vZHVsZX0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25tb2R1bGUgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25tb2R1bGUiLCBzbG90c19jcmVhdGVfbm9ubW9kdWxlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2Vfbm9ubW9kdWxlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfbm9ubW9kdWxlKTsKK30KKworLyoqKiogTm9uLUFTQ0lJLW5hbWVkIG1vZHVsZXMgKioqKi8KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25hc2NpaV9sYXRpbiA9IHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25hc2NpaV9sYXRpbiIsICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIk1vZHVsZSBuYW1lZCBpbiBDemVjaCIpLCAgICAgICAgIC8qIG1fZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0VV9fdGVzdG11bHRpcGhhc2VfemtvdWthX25hdGVuX2V2YzA3Z2k4ZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbmFzY2lpX2xhdGluKTsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25hc2NpaV9rYW5hID0geyBcCisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX3Rlc3RtdWx0aXBoYXNlX25vbmFzY2lpX2thbmEiLCAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiTW9kdWxlIG5hbWVkIGluIEphcGFuZXNlIiksICAgICAgLyogbV9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRVX2Vja3pid2JoYzZqcGd6Y3g0MTV4KFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfbm9uYXNjaWlfa2FuYSk7Cit9CisKKy8qKiogTW9kdWxlIHdpdGggYSBzaW5nbGUtY2hhcmFjdGVyIG5hbWUgKioqLworCitQeU1PRElOSVRfRlVOQworUHlJbml0X3goUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJm1haW5fZGVmKTsKK30KKworLyoqKiogVGVzdGluZyBOVUxMIHNsb3RzICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBudWxsX3Nsb3RzX2RlZiA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX251bGxfc2xvdHMiLCBOVUxMLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfbnVsbF9zbG90cyhQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmbnVsbF9zbG90c19kZWYpOworfQorCisvKioqKiBQcm9ibGVtYXRpYyBtb2R1bGVzICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2JhZF9sYXJnZVtdID0geworICAgIHtfUHlfbW9kX0xBU1RfU0xPVCArIDEsIE5VTEx9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfYmFkX2xhcmdlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfYmFkX3Nsb3RfbGFyZ2UiLCBzbG90c19iYWRfbGFyZ2UsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9iYWRfc2xvdF9sYXJnZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2JhZF9sYXJnZSk7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2JhZF9uZWdhdGl2ZVtdID0geworICAgIHstMSwgTlVMTH0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9iYWRfbmVnYXRpdmUgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9iYWRfc2xvdF9uZWdhdGl2ZSIsIHNsb3RzX2JhZF9uZWdhdGl2ZSwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2JhZF9zbG90X25lZ2F0aXZlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfYmFkX25lZ2F0aXZlKTsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfaW50X3dpdGhfc3RhdGUgPSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJjcmVhdGVfd2l0aF9zdGF0ZSIsICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJOb3QgYSBQeU1vZHVsZU9iamVjdCBvYmplY3QsIGJ1dCByZXF1ZXN0cyBwZXItbW9kdWxlIHN0YXRlIiksCisgICAgMTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIHNsb3RzX2NyZWF0ZV9ub25tb2R1bGUsICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9jcmVhdGVfaW50X3dpdGhfc3RhdGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9jcmVhdGVfaW50X3dpdGhfc3RhdGUpOworfQorCisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbmVnYXRpdmVfc2l6ZSA9IHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIm5lZ2F0aXZlX3NpemUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIlB5TW9kdWxlRGVmIHdpdGggbmVnYXRpdmUgbV9zaXplIiksCisgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIHNsb3RzX2NyZWF0ZV9ub25tb2R1bGUsICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9uZWdhdGl2ZV9zaXplKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfbmVnYXRpdmVfc2l6ZSk7Cit9CisKKworc3RhdGljIFB5TW9kdWxlRGVmIHVuaW5pdGlhbGl6ZWRfZGVmID0gVEVTVF9NT0RVTEVfREVGKCJtYWluIiwgbWFpbl9zbG90cywgdGVzdGV4cG9ydF9tZXRob2RzKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhwb3J0X3VuaW5pdGlhbGl6ZWQoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCopICZ1bmluaXRpYWxpemVkX2RlZjsKK30KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhwb3J0X251bGwoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF9yYWlzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhwb3J0IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF91bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhwb3J0IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJm1haW5fZGVmKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY19udWxsKFB5T2JqZWN0ICpzcGVjLCBQeU1vZHVsZURlZiAqZGVmKQoreworICAgIHJldHVybiBOVUxMOworfQorCitQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV9udWxsW10gPSB7CisgICAge1B5X21vZF9jcmVhdGUsIGNyZWF0ZWZ1bmNfbnVsbH0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfbnVsbCA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV9udWxsIiwgc2xvdHNfY3JlYXRlX251bGwsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9jcmVhdGVfbnVsbChQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2NyZWF0ZV9udWxsKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY19yYWlzZShQeU9iamVjdCAqc3BlYywgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgY3JlYXRlIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV9yYWlzZVtdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX3JhaXNlfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2NyZWF0ZV9yYWlzZSA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV9udWxsIiwgc2xvdHNfY3JlYXRlX3JhaXNlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfY3JlYXRlX3JhaXNlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfY3JlYXRlX3JhaXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY191bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYywgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgY3JlYXRlIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIFB5TW9kdWxlX05ldygiZm9vIik7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbltdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX3VucmVwb3J0ZWRfZXhjZXB0aW9ufSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbiA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbiIsIHNsb3RzX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbiwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbik7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY19ub25tb2R1bGV9LAorICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cyA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMiLCBzbG90c19ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2Vfbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cyhQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMpOworfQorCitzdGF0aWMgaW50CitleGVjZnVuY19lcnIoUHlPYmplY3QgKm1vZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2V4ZWNfZXJyW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY19lcnJ9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfZXhlY19lcnIgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9leGVjX2VyciIsIHNsb3RzX2V4ZWNfZXJyLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhlY19lcnIoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9leGVjX2Vycik7Cit9CisKK3N0YXRpYyBpbnQKK2V4ZWNmdW5jX3JhaXNlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBleGVjIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19leGVjX3JhaXNlW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY19yYWlzZX0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9leGVjX3JhaXNlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfZXhlY19yYWlzZSIsIHNsb3RzX2V4ZWNfcmFpc2UsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leGVjX3JhaXNlKFB5T2JqZWN0ICptb2QpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9leGVjX3JhaXNlKTsKK30KKworc3RhdGljIGludAorZXhlY2Z1bmNfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKm1vZCkKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhlYyBmdW5jdGlvbiIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY191bnJlcG9ydGVkX2V4Y2VwdGlvbn0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbiIsIHNsb3RzX2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24sIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbik7Cit9CisKKy8qKiogSGVscGVyIGZvciBpbXAgdGVzdCAqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBpbXBfZHVtbXlfZGVmID0gVEVTVF9NT0RVTEVfREVGKCJpbXBfZHVtbXkiLCBtYWluX3Nsb3RzLCB0ZXN0ZXhwb3J0X21ldGhvZHMpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2ltcF9kdW1teShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmaW1wX2R1bW15X2RlZik7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCmluZGV4IGY4MGY3NmEuLmJjYjNhZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCkBAIC00OSwyMSArNDksMTggQEAKICAqIHRpbWVvdXQuCiAgKi8KIHN0YXRpYyBQeUxvY2tTdGF0dXMKLWFjcXVpcmVfdGltZWQoUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIFBZX1RJTUVPVVRfVCBtaWNyb3NlY29uZHMpCithY3F1aXJlX3RpbWVkKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBfUHlUaW1lX3QgdGltZW91dCkKIHsKICAgICBQeUxvY2tTdGF0dXMgcjsKLSAgICBfUHlUaW1lX3RpbWV2YWwgY3VydGltZTsKLSAgICBfUHlUaW1lX3RpbWV2YWwgZW5kdGltZTsKKyAgICBfUHlUaW1lX3QgZW5kdGltZSA9IDA7CisgICAgX1B5VGltZV90IG1pY3Jvc2Vjb25kczsKIAotCi0gICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKLSAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmVuZHRpbWUpOwotICAgICAgICBlbmR0aW1lLnR2X3NlYyArPSBtaWNyb3NlY29uZHMgLyAoMTAwMCAqIDEwMDApOwotICAgICAgICBlbmR0aW1lLnR2X3VzZWMgKz0gbWljcm9zZWNvbmRzICUgKDEwMDAgKiAxMDAwKTsKLSAgICB9Ci0KKyAgICBpZiAodGltZW91dCA+IDApCisgICAgICAgIGVuZHRpbWUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogCiAgICAgZG8geworICAgICAgICBtaWNyb3NlY29uZHMgPSBfUHlUaW1lX0FzTWljcm9zZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisKICAgICAgICAgLyogZmlyc3QgYSBzaW1wbGUgbm9uLWJsb2NraW5nIHRyeSB3aXRob3V0IHJlbGVhc2luZyB0aGUgR0lMICovCiAgICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgMCwgMCk7CiAgICAgICAgIGlmIChyID09IFBZX0xPQ0tfRkFJTFVSRSAmJiBtaWNyb3NlY29uZHMgIT0gMCkgewpAQCAtODIsMTQgKzc5LDEyIEBACiAKICAgICAgICAgICAgIC8qIElmIHdlJ3JlIHVzaW5nIGEgdGltZW91dCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IGFmdGVyIHByb2Nlc3NpbmcKICAgICAgICAgICAgICAqIHNpZ25hbHMsIHNpbmNlIHRob3NlIGNhbiB0YWtlIHRpbWUuICAqLwotICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKLSAgICAgICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmY3VydGltZSk7Ci0gICAgICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gKChlbmR0aW1lLnR2X3NlYyAtIGN1cnRpbWUudHZfc2VjKSAqIDEwMDAwMDAgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kdGltZS50dl91c2VjIC0gY3VydGltZS50dl91c2VjKSk7CisgICAgICAgICAgICBpZiAodGltZW91dCA+IDApIHsKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZW5kdGltZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKIAogICAgICAgICAgICAgICAgIC8qIENoZWNrIGZvciBuZWdhdGl2ZSB2YWx1ZXMsIHNpbmNlIHRob3NlIG1lYW4gYmxvY2sgZm9yZXZlci4KICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAobWljcm9zZWNvbmRzIDw9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgciA9IFBZX0xPQ0tfRkFJTFVSRTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05OSw0NCArOTQsNjEgQEAKICAgICByZXR1cm4gcjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWxvY2tfUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGxvY2tvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3N0YXRpYyBpbnQKK2xvY2tfYWNxdWlyZV9wYXJzZV9hcmdzKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfdCAqdGltZW91dCkKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiYmxvY2tpbmciLCAidGltZW91dCIsIE5VTEx9OwogICAgIGludCBibG9ja2luZyA9IDE7Ci0gICAgZG91YmxlIHRpbWVvdXQgPSAtMTsKLSAgICBQWV9USU1FT1VUX1QgbWljcm9zZWNvbmRzOwotICAgIFB5TG9ja1N0YXR1cyByOworICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaiA9IE5VTEw7CisgICAgY29uc3QgX1B5VGltZV90IHVuc2V0X3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKC0xKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aWQ6YWNxdWlyZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tpbmcsICZ0aW1lb3V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgKnRpbWVvdXQgPSB1bnNldF90aW1lb3V0IDsKIAotICAgIGlmICghYmxvY2tpbmcgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbid0IHNwZWNpZnkgYSB0aW1lb3V0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgYSBub24tYmxvY2tpbmcgY2FsbCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlPOmFjcXVpcmUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NraW5nLCAmdGltZW91dF9vYmopKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAodGltZW91dF9vYmoKKyAgICAgICAgJiYgX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCh0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCFibG9ja2luZyAmJiAqdGltZW91dCAhPSB1bnNldF90aW1lb3V0ICkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzcGVjaWZ5IGEgdGltZW91dCBmb3IgYSBub24tYmxvY2tpbmcgY2FsbCIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmICh0aW1lb3V0IDwgMCAmJiB0aW1lb3V0ICE9IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCB2YWx1ZSBtdXN0IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpY3RseSBwb3NpdGl2ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoKnRpbWVvdXQgPCAwICYmICp0aW1lb3V0ICE9IHVuc2V0X3RpbWVvdXQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCB2YWx1ZSBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCFibG9ja2luZykKLSAgICAgICAgbWljcm9zZWNvbmRzID0gMDsKLSAgICBlbHNlIGlmICh0aW1lb3V0ID09IC0xKQotICAgICAgICBtaWNyb3NlY29uZHMgPSAtMTsKLSAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCAqPSAxZTY7Ci0gICAgICAgIGlmICh0aW1lb3V0ID49IChkb3VibGUpIFBZX1RJTUVPVVRfTUFYKSB7CisgICAgICAgICp0aW1lb3V0ID0gMDsKKyAgICBlbHNlIGlmICgqdGltZW91dCAhPSB1bnNldF90aW1lb3V0KSB7CisgICAgICAgIF9QeVRpbWVfdCBtaWNyb3NlY29uZHM7CisKKyAgICAgICAgbWljcm9zZWNvbmRzID0gX1B5VGltZV9Bc01pY3Jvc2Vjb25kcygqdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+PSBQWV9USU1FT1VUX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgdmFsdWUgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBtaWNyb3NlY29uZHMgPSAoUFlfVElNRU9VVF9UKSB0aW1lb3V0OwogICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAotICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NrX1B5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2Nrb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CisgICAgUHlMb2NrU3RhdHVzIHI7CisKKyAgICBpZiAobG9ja19hY3F1aXJlX3BhcnNlX2FyZ3MoYXJncywga3dkcywgJnRpbWVvdXQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5sb2NrX2xvY2ssIHRpbWVvdXQpOwogICAgIGlmIChyID09IFBZX0xPQ0tfSU5UUikgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xOTIsNiArMjA0LDEzIEBACiBcblwKIFJldHVybiB3aGV0aGVyIHRoZSBsb2NrIGlzIGluIHRoZSBsb2NrZWQgc3RhdGUuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NrX3JlcHIobG9ja29iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyAlcyBvYmplY3QgYXQgJXA+IiwKKyAgICAgICAgc2VsZi0+bG9ja2VkID8gImxvY2tlZCIgOiAidW5sb2NrZWQiLCBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBzZWxmKTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIGxvY2tfbWV0aG9kc1tdID0gewogICAgIHsiYWNxdWlyZV9sb2NrIiwgKFB5Q0Z1bmN0aW9uKWxvY2tfUHlUaHJlYWRfYWNxdWlyZV9sb2NrLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBhY3F1aXJlX2RvY30sCkBAIC0yMjMsNyArMjQyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAocmVwcmZ1bmMpbG9ja19yZXByLCAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwpAQCAtMjc0LDQxICsyOTMsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBybG9ja19hY3F1aXJlKHJsb2Nrb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImJsb2NraW5nIiwgInRpbWVvdXQiLCBOVUxMfTsKLSAgICBpbnQgYmxvY2tpbmcgPSAxOwotICAgIGRvdWJsZSB0aW1lb3V0ID0gLTE7Ci0gICAgUFlfVElNRU9VVF9UIG1pY3Jvc2Vjb25kczsKKyAgICBfUHlUaW1lX3QgdGltZW91dDsKICAgICBsb25nIHRpZDsKICAgICBQeUxvY2tTdGF0dXMgciA9IFBZX0xPQ0tfQUNRVUlSRUQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlkOmFjcXVpcmUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NraW5nLCAmdGltZW91dCkpCisgICAgaWYgKGxvY2tfYWNxdWlyZV9wYXJzZV9hcmdzKGFyZ3MsIGt3ZHMsICZ0aW1lb3V0KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFibG9ja2luZyAmJiB0aW1lb3V0ICE9IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiY2FuJ3Qgc3BlY2lmeSBhIHRpbWVvdXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvciBhIG5vbi1ibG9ja2luZyBjYWxsIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAodGltZW91dCA8IDAgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgdmFsdWUgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0bHkgcG9zaXRpdmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICghYmxvY2tpbmcpCi0gICAgICAgIG1pY3Jvc2Vjb25kcyA9IDA7Ci0gICAgZWxzZSBpZiAodGltZW91dCA9PSAtMSkKLSAgICAgICAgbWljcm9zZWNvbmRzID0gLTE7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgKj0gMWU2OwotICAgICAgICBpZiAodGltZW91dCA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgdmFsdWUgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBtaWNyb3NlY29uZHMgPSAoUFlfVElNRU9VVF9UKSB0aW1lb3V0OwotICAgIH0KLQogICAgIHRpZCA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKICAgICBpZiAoc2VsZi0+cmxvY2tfY291bnQgPiAwICYmIHRpZCA9PSBzZWxmLT5ybG9ja19vd25lcikgewogICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50ID0gc2VsZi0+cmxvY2tfY291bnQgKyAxOwpAQCAtMzIwLDcgKzMxMSw3IEBACiAgICAgICAgIHNlbGYtPnJsb2NrX2NvdW50ID0gY291bnQ7CiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KLSAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCBtaWNyb3NlY29uZHMpOworICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPnJsb2NrX2xvY2ssIHRpbWVvdXQpOwogICAgIGlmIChyID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKICAgICAgICAgYXNzZXJ0KHNlbGYtPnJsb2NrX2NvdW50ID09IDApOwogICAgICAgICBzZWxmLT5ybG9ja19vd25lciA9IHRpZDsKQEAgLTQ3NSw4ICs0NjYsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBybG9ja19yZXByKHJsb2Nrb2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzIG93bmVyPSVsZCBjb3VudD0lbHU+IiwKLSAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZi0+cmxvY2tfb3duZXIsIHNlbGYtPnJsb2NrX2NvdW50KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyAlcyBvYmplY3Qgb3duZXI9JWxkIGNvdW50PSVsdSBhdCAlcD4iLAorICAgICAgICBzZWxmLT5ybG9ja19jb3VudCA/ICJsb2NrZWQiIDogInVubG9ja2VkIiwKKyAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZi0+cmxvY2tfb3duZXIsCisgICAgICAgIHNlbGYtPnJsb2NrX2NvdW50LCBzZWxmKTsKIH0KIAogCkBAIC0xMzU5LDcgKzEzNTIsOSBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fdGhyZWFkKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqdGltZW91dF9tYXg7CisgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKKyAgICBkb3VibGUgdGltZV9tYXg7CisgICAgZG91YmxlIHRpbWVvdXRfbWF4OwogCiAgICAgLyogSW5pdGlhbGl6ZSB0eXBlczogKi8KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZsb2NhbGR1bW15dHlwZSkgPCAwKQpAQCAtMTM3NiwxMCArMTM3MSwxNCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdGltZW91dF9tYXggPSBQeUZsb2F0X0Zyb21Eb3VibGUoUFlfVElNRU9VVF9NQVggLyAxMDAwMDAwKTsKLSAgICBpZiAoIXRpbWVvdXRfbWF4KQorICAgIHRpbWVvdXRfbWF4ID0gUFlfVElNRU9VVF9NQVggLyAxMDAwMDAwOworICAgIHRpbWVfbWF4ID0gZmxvb3IoX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoX1B5VGltZV9NQVgpKTsKKyAgICB0aW1lb3V0X21heCA9IFB5X01JTih0aW1lb3V0X21heCwgdGltZV9tYXgpOworCisgICAgdiA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lb3V0X21heCk7CisgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJUSU1FT1VUX01BWCIsIHRpbWVvdXRfbWF4KSA8IDApCisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVElNRU9VVF9NQVgiLCB2KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIGEgc3ltYm9saWMgY29uc3RhbnQgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RraW50ZXIuYyBiL01vZHVsZXMvX3RraW50ZXIuYwppbmRleCA1MjAyNWJiLi40MWFkNWY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190a2ludGVyLmMKKysrIGIvTW9kdWxlcy9fdGtpbnRlci5jCkBAIC05LDggKzksOCBAQAogCiAvKiBUQ0wvVEsgVkVSU0lPTiBJTkZPOgogCi0gICAgT25seSBUY2wvVGsgOC4zLjEgYW5kIGxhdGVyIGFyZSBzdXBwb3J0ZWQuICBPbGRlciB2ZXJzaW9ucyBhcmUgbm90Ci0gICAgc3VwcG9ydGVkLiBVc2UgUHl0aG9uIDIuNiBvciBvbGRlciBpZiB5b3UgY2Fubm90IHVwZ3JhZGUgeW91cgorICAgIE9ubHkgVGNsL1RrIDguNCBhbmQgbGF0ZXIgYXJlIHN1cHBvcnRlZC4gIE9sZGVyIHZlcnNpb25zIGFyZSBub3QKKyAgICBzdXBwb3J0ZWQuIFVzZSBQeXRob24gMy40IG9yIG9sZGVyIGlmIHlvdSBjYW5ub3QgdXBncmFkZSB5b3VyCiAgICAgVGNsL1RrIGxpYnJhcmllcy4KICovCiAKQEAgLTIxLDYgKzIxLDcgQEAKIAogKi8KIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMzYsMTMgKzM3LDYgQEAKICNkZWZpbmUgQ0hFQ0tfU0laRShzaXplLCBlbGVtc2l6ZSkgXAogICAgICgoc2l6ZV90KShzaXplKSA8PSBQeV9NSU4oKHNpemVfdClJTlRfTUFYLCBVSU5UX01BWCAvIChzaXplX3QpKGVsZW1zaXplKSkpCiAKLS8qIFN0YXJ0aW5nIHdpdGggVGNsIDguNCwgbWFueSBBUElzIG9mZmVyIGNvbnN0LWNvcnJlY3RuZXNzLiAgVW5mb3J0dW5hdGVseSwKLSAgIG1ha2luZyBfdGtpbnRlciBjb3JyZWN0IGZvciB0aGlzIEFQSSBtZWFucyB0byBicmVhayBlYXJsaWVyCi0gICB2ZXJzaW9ucy4gVVNFX0NPTVBBVF9DT05TVCBhbGxvd3MgdG8gbWFrZSBfdGtpbnRlciB3b3JrIHdpdGggYm90aCA4LjQgYW5kCi0gICBlYXJsaWVyIHZlcnNpb25zLiBPbmNlIFRjbCByZWxlYXNlcyBiZWZvcmUgOC40IGRvbid0IG5lZWQgdG8gYmUgc3VwcG9ydGVkCi0gICBhbnltb3JlLCB0aGlzIHNob3VsZCBnby4gKi8KLSNkZWZpbmUgVVNFX0NPTVBBVF9DT05TVAotCiAvKiBJZiBUY2wgaXMgY29tcGlsZWQgZm9yIHRocmVhZHMsIHdlIG11c3QgYWxzbyBkZWZpbmUgVENMX1RIUkVBRC4gV2UgZGVmaW5lCiAgICBpdCBhbHdheXM7IGlmIFRjbCBpcyBub3QgdGhyZWFkZWQsIHRoZSB0aHJlYWQgZnVuY3Rpb25zIGluCiAgICBUY2wgYXJlIGVtcHR5LiAgKi8KQEAgLTU4LDE1ICs1Miw4IEBACiAKICNpbmNsdWRlICJ0a2ludGVyLmgiCiAKLS8qIEZvciBUY2wgOC4yIGFuZCA4LjMsIENPTlNUKiBpcyBub3QgZGVmaW5lZCAoZXhjZXB0IG9uIEN5Z3dpbikuICovCi0jaWZuZGVmIENPTlNUODRfUkVUVVJOCi0jZGVmaW5lIENPTlNUODRfUkVUVVJOCi0jdW5kZWYgQ09OU1QKLSNkZWZpbmUgQ09OU1QKLSNlbmRpZgotCi0jaWYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDMwMjAxCi0jZXJyb3IgIlRrIG9sZGVyIHRoYW4gOC4zLjEgbm90IHN1cHBvcnRlZCIKKyNpZiBUS19IRVhfVkVSU0lPTiA8IDB4MDgwNDAyMDAKKyNlcnJvciAiVGsgb2xkZXIgdGhhbiA4LjQgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCiAjaWYgVEtfSEVYX1ZFUlNJT04gPj0gMHgwODA1MDIwOCAmJiBUS19IRVhfVkVSU0lPTiA8IDB4MDgwNjAwMDAgfHwgXApAQCAtMTE0LDcgKzEwMSw2NSBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDxjb25pby5oPgogI2RlZmluZSBXQUlUX0ZPUl9TVERJTgorCitzdGF0aWMgUHlPYmplY3QgKgorX2dldF90Y2xfbGliX3BhdGgoKQoreworICAgIHN0YXRpYyBQeU9iamVjdCAqdGNsX2xpYnJhcnlfcGF0aCA9IE5VTEw7CisgICAgc3RhdGljIGludCBhbHJlYWR5X2NoZWNrZWQgPSAwOworCisgICAgaWYgKGFscmVhZHlfY2hlY2tlZCA9PSAwKSB7CisgICAgICAgIFB5T2JqZWN0ICpwcmVmaXg7CisgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRfYnVmOworICAgICAgICBpbnQgc3RhdF9yZXR1cm5fdmFsdWU7CisKKyAgICAgICAgcHJlZml4ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRQcmVmaXgoKSwgLTEpOworICAgICAgICBpZiAocHJlZml4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogQ2hlY2sgZXhwZWN0ZWQgbG9jYXRpb24gZm9yIGFuIGluc3RhbGxlZCBQeXRob24gZmlyc3QgKi8KKyAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJcXHRjbFxcdGNsIiBUQ0xfVkVSU0lPTik7CisgICAgICAgIGlmICh0Y2xfbGlicmFyeV9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHRjbF9saWJyYXJ5X3BhdGggPSBQeVVuaWNvZGVfQ29uY2F0KHByZWZpeCwgdGNsX2xpYnJhcnlfcGF0aCk7CisgICAgICAgIGlmICh0Y2xfbGlicmFyeV9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN0YXRfcmV0dXJuX3ZhbHVlID0gX1B5X3N0YXQodGNsX2xpYnJhcnlfcGF0aCwgJnN0YXRfYnVmKTsKKyAgICAgICAgaWYgKHN0YXRfcmV0dXJuX3ZhbHVlID09IC0yKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdF9yZXR1cm5fdmFsdWUgPT0gLTEpIHsKKyAgICAgICAgICAgIC8qIGluc3RhbGwgbG9jYXRpb24gZG9lc24ndCBleGlzdCwgcmVzZXQgZXJybm8gYW5kIHNlZSBpZgorICAgICAgICAgICAgICAgd2UncmUgYSByZXBvc2l0b3J5IGJ1aWxkICovCisgICAgICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgUHlfVENMVEtfRElSCisgICAgICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UQ0xUS19ESVIgIlxcbGliXFx0Y2wiIFRDTF9WRVJTSU9OKTsKKyAgICAgICAgICAgIGlmICh0Y2xfbGlicmFyeV9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRfcmV0dXJuX3ZhbHVlID0gX1B5X3N0YXQodGNsX2xpYnJhcnlfcGF0aCwgJnN0YXRfYnVmKTsKKyAgICAgICAgICAgIGlmIChzdGF0X3JldHVybl92YWx1ZSA9PSAtMikgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRfcmV0dXJuX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICAgICAgLyogdGNsdGtEaXIgZm9yIGEgcmVwb3NpdG9yeSBidWlsZCBkb2Vzbid0IGV4aXN0IGVpdGhlciwKKyAgICAgICAgICAgICAgICAgICByZXNldCBlcnJubyBhbmQgbGVhdmUgVGNsIHRvIGl0cyBvd24gZGV2aWNlcyAqLworICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gTlVMTDsKICNlbmRpZgorICAgICAgICB9CisgICAgICAgIGFscmVhZHlfY2hlY2tlZCA9IDE7CisgICAgfQorICAgIHJldHVybiB0Y2xfbGlicmFyeV9wYXRoOworfQorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmZGVmIFdJVEhfVEhSRUFECiAKQEAgLTM4NSwxMCArNDMwLDEwIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLVNwbGl0KGNoYXIgKmxpc3QpCitTcGxpdChjb25zdCBjaGFyICpsaXN0KQogewogICAgIGludCBhcmdjOwotICAgIGNoYXIgKiphcmd2OworICAgIGNvbnN0IGNoYXIgKiphcmd2OwogICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKGxpc3QgPT0gTlVMTCkgewpAQCAtNDMyLDcgKzQ3Nyw3IEBACiBTcGxpdE9iaihQeU9iamVjdCAqYXJnKQogewogICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgaW50IGksIHNpemU7CisgICAgICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKICAgICAgICAgUHlPYmplY3QgKmVsZW0sICpuZXdlbGVtLCAqcmVzdWx0OwogCiAgICAgICAgIHNpemUgPSBQeVR1cGxlX1NpemUoYXJnKTsKQEAgLTQ0OCw3ICs0OTMsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBpbnQgazsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CiAgICAgICAgICAgICAgICAgaWYgKG5ld2VsZW0gPT0gZWxlbSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3ZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDY4LDkgKzUxMywyOSBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgLyogRmFsbCB0aHJvdWdoLCByZXR1cm5pbmcgYXJnLiAqLwogICAgIH0KKyAgICBlbHNlIGlmIChQeUxpc3RfQ2hlY2soYXJnKSkgeworICAgICAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgICAgIFB5T2JqZWN0ICplbGVtLCAqbmV3ZWxlbSwgKnJlc3VsdDsKKworICAgICAgICBzaXplID0gUHlMaXN0X0dFVF9TSVpFKGFyZyk7CisgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KHNpemUpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAvKiBSZWN1cnNpdmVseSBpbnZva2UgU3BsaXRPYmogZm9yIGFsbCBsaXN0IGl0ZW1zLiAqLworICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGVsZW0gPSBQeUxpc3RfR0VUX0lURU0oYXJnLCBpKTsKKyAgICAgICAgICAgIG5ld2VsZW0gPSBTcGxpdE9iaihlbGVtKTsKKyAgICAgICAgICAgIGlmICghbmV3ZWxlbSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIG5ld2VsZW0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CiAgICAgICAgIGludCBhcmdjOwotICAgICAgICBjaGFyICoqYXJndjsKKyAgICAgICAgY29uc3QgY2hhciAqKmFyZ3Y7CiAgICAgICAgIGNoYXIgKmxpc3QgPSBQeVVuaWNvZGVfQXNVVEY4KGFyZyk7CiAKICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCB8fApAQCAtNDg1LDcgKzU1MCw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKLSAgICAgICAgY2hhciAqKmFyZ3Y7CisgICAgICAgIGNvbnN0IGNoYXIgKiphcmd2OwogICAgICAgICBjaGFyICpsaXN0ID0gUHlCeXRlc19Bc1N0cmluZyhhcmcpOwogCiAgICAgICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKQEAgLTUwMiw2ICs1NjcsMTQgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3RraW50ZXIKK2NsYXNzIF90a2ludGVyLnRrYXBwICJUa2FwcE9iamVjdCAqIiAiJlRrYXBwX1R5cGVfc3BlYyIKK2NsYXNzIF90a2ludGVyLlRjbF9PYmogIlB5VGNsT2JqZWN0ICoiICImUHlUY2xPYmplY3RfVHlwZV9zcGVjIgorY2xhc3MgX3RraW50ZXIudGt0aW1lcnRva2VuICJUa3R0T2JqZWN0ICoiICImVGt0dF9UeXBlX3NwZWMiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMWViZjE1YzE2MmVlMjI5XSovCisKIC8qKioqIFRrYXBwIE9iamVjdCAqKioqLwogCiAjaWZuZGVmIFdJVEhfQVBQSU5JVApAQCAtNTUyLDggKzYyNSw5IEBACiBzdGF0aWMgdm9pZCBEaXNhYmxlRXZlbnRIb29rKHZvaWQpOyAvKiBGb3J3YXJkICovCiAKIHN0YXRpYyBUa2FwcE9iamVjdCAqCi1Ua2FwcF9OZXcoY2hhciAqc2NyZWVuTmFtZSwgY2hhciAqY2xhc3NOYW1lLAotICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywgY2hhciAqdXNlKQorVGthcHBfTmV3KGNvbnN0IGNoYXIgKnNjcmVlbk5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICBpbnQgaW50ZXJhY3RpdmUsIGludCB3YW50b2JqZWN0cywgaW50IHdhbnRUaywgaW50IHN5bmMsCisgICAgICAgICAgY29uc3QgY2hhciAqdXNlKQogewogICAgIFRrYXBwT2JqZWN0ICp2OwogICAgIGNoYXIgKmFyZ3YwOwpAQCAtNjEwLDcgKzY4NCw3IEBACiAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLCAidGNsX2ludGVyYWN0aXZlIiwgIjAiLCBUQ0xfR0xPQkFMX09OTFkpOwogCiAgICAgLyogVGhpcyBpcyB1c2VkIHRvIGdldCB0aGUgYXBwbGljYXRpb24gY2xhc3MgZm9yIFRrIDQuMSBhbmQgdXAgKi8KLSAgICBhcmd2MCA9IChjaGFyKilhdHRlbXB0Y2thbGxvYyhzdHJsZW4oY2xhc3NOYW1lKSArIDEpOworICAgIGFyZ3YwID0gKGNoYXIqKVB5TWVtX01hbGxvYyhzdHJsZW4oY2xhc3NOYW1lKSArIDEpOwogICAgIGlmICghYXJndjApIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtNjIxLDcgKzY5NSw3IEBACiAgICAgaWYgKFB5X0lTVVBQRVIoUHlfQ0hBUk1BU0soYXJndjBbMF0pKSkKICAgICAgICAgYXJndjBbMF0gPSBQeV9UT0xPV0VSKFB5X0NIQVJNQVNLKGFyZ3YwWzBdKSk7CiAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsICJhcmd2MCIsIGFyZ3YwLCBUQ0xfR0xPQkFMX09OTFkpOwotICAgIGNrZnJlZShhcmd2MCk7CisgICAgUHlNZW1fRnJlZShhcmd2MCk7CiAKICAgICBpZiAoISB3YW50VGspIHsKICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsCkBAIC02MzcsMTQgKzcxMSwxNCBAQAogICAgIC8qIHNvbWUgaW5pdGlhbCBhcmd1bWVudHMgbmVlZCB0byBiZSBpbiBhcmd2ICovCiAgICAgaWYgKHN5bmMgfHwgdXNlKSB7CiAgICAgICAgIGNoYXIgKmFyZ3M7Ci0gICAgICAgIGludCBsZW4gPSAwOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAKICAgICAgICAgaWYgKHN5bmMpCiAgICAgICAgICAgICBsZW4gKz0gc2l6ZW9mICItc3luYyI7CiAgICAgICAgIGlmICh1c2UpCi0gICAgICAgICAgICBsZW4gKz0gc3RybGVuKHVzZSkgKyBzaXplb2YgIi11c2UgIjsKKyAgICAgICAgICAgIGxlbiArPSBzdHJsZW4odXNlKSArIHNpemVvZiAiLXVzZSAiOyAgLyogbmV2ZXIgb3ZlcmZsb3dzICovCiAKLSAgICAgICAgYXJncyA9IChjaGFyKilhdHRlbXB0Y2thbGxvYyhsZW4pOworICAgICAgICBhcmdzID0gKGNoYXIqKVB5TWVtX01hbGxvYyhsZW4pOwogICAgICAgICBpZiAoIWFyZ3MpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC02NjIsOSArNzM2LDM2IEBACiAgICAgICAgIH0KIAogICAgICAgICBUY2xfU2V0VmFyKHYtPmludGVycCwgImFyZ3YiLCBhcmdzLCBUQ0xfR0xPQkFMX09OTFkpOwotICAgICAgICBja2ZyZWUoYXJncyk7CisgICAgICAgIFB5TWVtX0ZyZWUoYXJncyk7CiAgICAgfQogCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsKKyAgICAgICAgUHlPYmplY3QgKnN0cl9wYXRoOworICAgICAgICBQeU9iamVjdCAqdXRmOF9wYXRoOworICAgICAgICBEV09SRCByZXQ7CisKKyAgICAgICAgcmV0ID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwsIDApOworICAgICAgICBpZiAoIXJldCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBzdHJfcGF0aCA9IF9nZXRfdGNsX2xpYl9wYXRoKCk7CisgICAgICAgICAgICBpZiAoc3RyX3BhdGggPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RyX3BhdGggIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHV0ZjhfcGF0aCA9IFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoc3RyX3BhdGgpOworICAgICAgICAgICAgICAgIGlmICh1dGY4X3BhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAidGNsX2xpYnJhcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyh1dGY4X3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodXRmOF9wYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKFRjbF9BcHBJbml0KHYtPmludGVycCkgIT0gVENMX09LKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXYpOwogI2lmZGVmIFRLSU5URVJfUFJPVEVDVF9MT0FEVEsKQEAgLTkyOSw5ICsxMDMwLDE0IEBACiB7CiAgICAgVGNsX09iaiAqcmVzdWx0OwogCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodmFsdWUpKQorICAgIGlmIChQeUJ5dGVzX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh2YWx1ZSkgPj0gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJieXRlcyBvYmplY3QgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBUY2xfTmV3Qnl0ZUFycmF5T2JqKCh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpUHlCeXRlc19HRVRfU0laRSh2YWx1ZSkpOworICAgIH0KIAogICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsdWUpKQogICAgICAgICByZXR1cm4gVGNsX05ld0Jvb2xlYW5PYmooUHlPYmplY3RfSXNUcnVlKHZhbHVlKSk7CkBAIC05NzAsMjQgKzEwNzYsMjggQEAKICAgICBpZiAoUHlGbG9hdF9DaGVjayh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBUY2xfTmV3RG91YmxlT2JqKFB5RmxvYXRfQVNfRE9VQkxFKHZhbHVlKSk7CiAKLSAgICBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKKyAgICBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkgfHwgUHlMaXN0X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBUY2xfT2JqICoqYXJndjsKICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBpOwogCi0gICAgICAgIHNpemUgPSBQeVR1cGxlX1NpemUodmFsdWUpOworICAgICAgICBzaXplID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHZhbHVlKTsKICAgICAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBUY2xfTmV3TGlzdE9iaigwLCBOVUxMKTsKICAgICAgICAgaWYgKCFDSEVDS19TSVpFKHNpemUsIHNpemVvZihUY2xfT2JqICopKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0dXBsZSBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9DaGVjayh2YWx1ZSkgPyAidHVwbGUgaXMgdG9vIGxvbmciIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBhcmd2ID0gKFRjbF9PYmogKiopIGF0dGVtcHRja2FsbG9jKCgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9PYmogKikpOwotICAgICAgICBpZighYXJndikKLSAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYXJndiA9IChUY2xfT2JqICoqKSBQeU1lbV9NYWxsb2MoKChzaXplX3Qpc2l6ZSkgKiBzaXplb2YoVGNsX09iaiAqKSk7CisgICAgICAgIGlmICghYXJndikgeworICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgICBhcmd2W2ldID0gQXNPYmooUHlUdXBsZV9HZXRJdGVtKHZhbHVlLGkpKTsKLSAgICAgICAgcmVzdWx0ID0gVGNsX05ld0xpc3RPYmooUHlUdXBsZV9TaXplKHZhbHVlKSwgYXJndik7Ci0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBhcmd2KTsKKyAgICAgICAgICBhcmd2W2ldID0gQXNPYmooUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHZhbHVlLGkpKTsKKyAgICAgICAgcmVzdWx0ID0gVGNsX05ld0xpc3RPYmooKGludClzaXplLCBhcmd2KTsKKyAgICAgICAgUHlNZW1fRnJlZShhcmd2KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMTIsOSArMTEyMiw5IEBACiAgICAgICAgIH0KICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHZhbHVlKTsKICAgICAgICAgaWYgKGtpbmQgPT0gc2l6ZW9mKFRjbF9VbmlDaGFyKSkKLSAgICAgICAgICAgIHJldHVybiBUY2xfTmV3VW5pY29kZU9iaihpbmJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gVGNsX05ld1VuaWNvZGVPYmooaW5idWYsIChpbnQpc2l6ZSk7CiAgICAgICAgIGFsbG9jc2l6ZSA9ICgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9VbmlDaGFyKTsKLSAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilhdHRlbXB0Y2thbGxvYyhhbGxvY3NpemUpOworICAgICAgICBvdXRidWYgPSAoVGNsX1VuaUNoYXIqKVB5TWVtX01hbGxvYyhhbGxvY3NpemUpOwogICAgICAgICAvKiBFbHNlIG92ZXJmbG93IG9jY3VycmVkLCBhbmQgd2UgdGFrZSB0aGUgbmV4dCBleGl0ICovCiAgICAgICAgIGlmICghb3V0YnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTAzMSwxNCArMTE0MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIFUrJXggaXMgYWJvdmUgdGhlIHJhbmdlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihVKzAwMDAtVStGRkZGKSBhbGxvd2VkIGJ5IFRjbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKLSAgICAgICAgICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG91dGJ1Zik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIG91dGJ1ZltpXSA9IGNoOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IFRjbF9OZXdVbmljb2RlT2JqKG91dGJ1Ziwgc2l6ZSk7Ci0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvdXRidWYpOworICAgICAgICByZXN1bHQgPSBUY2xfTmV3VW5pY29kZU9iaihvdXRidWYsIChpbnQpc2l6ZSk7CisgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwNjcsNyArMTE3Nyw2IEBACiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhib29sVmFsdWUpOwogfQogCi0jaWZkZWYgVENMX1dJREVfSU5UX1RZUEUKIHN0YXRpYyBQeU9iamVjdCoKIGZyb21XaWRlSW50T2JqKFB5T2JqZWN0KiB0a2FwcCwgVGNsX09iaiAqdmFsdWUpCiB7CkBAIC0xMDg0LDcgKzExOTMsNiBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogfQotI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xJQlRPTU1BTVRICiBzdGF0aWMgUHlPYmplY3QqCkBAIC0xMTU3LDcgKzEyNjUsNiBAQAogICAgICAgICAgICBmYWxsIHRocm91Z2ggdG8gd2lkZUludCBoYW5kbGluZy4gKi8KICAgICB9CiAKLSNpZmRlZiBUQ0xfV0lERV9JTlRfVFlQRQogICAgIGlmICh2YWx1ZS0+dHlwZVB0ciA9PSBhcHAtPkludFR5cGUgfHwKICAgICAgICAgdmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5XaWRlSW50VHlwZSkgewogICAgICAgICByZXN1bHQgPSBmcm9tV2lkZUludE9iaih0a2FwcCwgdmFsdWUpOwpAQCAtMTE2Nyw3ICsxMjc0LDYgQEAKICAgICAgICAgLyogSWYgdGhlcmUgaXMgYW4gZXJyb3IgaW4gdGhlIHdpZGVJbnQgY29udmVyc2lvbiwKICAgICAgICAgICAgZmFsbCB0aHJvdWdoIHRvIGJpZ251bSBoYW5kbGluZy4gKi8KICAgICB9Ci0jZW5kaWYKIAogI2lmZGVmIEhBVkVfTElCVE9NTUFNVEgKICAgICBpZiAodmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5JbnRUeXBlIHx8CkBAIC0xMjU4LDcgKzEzNjQsNyBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspCiAgICAgICAgIFRjbF9EZWNyUmVmQ291bnQob2JqdltpXSk7CiAgICAgaWYgKG9ianYgIT0gb2JqU3RvcmUpCi0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvYmp2KTsKKyAgICAgICAgUHlNZW1fRnJlZShvYmp2KTsKIH0KIAogLyogQ29udmVydCBQeXRob24gb2JqZWN0cyB0byBUY2wgb2JqZWN0cy4gVGhpcyBtdXN0IGhhcHBlbiBpbiB0aGUKQEAgLTEyNzIsNyArMTM3OCw3IEBACiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgLyogZG8gbm90aGluZyAqLzsKIAotICAgIGVsc2UgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CisgICAgZWxzZSBpZiAoIShQeVR1cGxlX0NoZWNrKGFyZ3MpIHx8IFB5TGlzdF9DaGVjayhhcmdzKSkpIHsKICAgICAgICAgb2JqdlswXSA9IEFzT2JqKGFyZ3MpOwogICAgICAgICBpZiAob2JqdlswXSA9PSAwKQogICAgICAgICAgICAgZ290byBmaW5hbGx5OwpAQCAtMTI4MCwxNCArMTM4NiwxNiBAQAogICAgICAgICBUY2xfSW5jclJlZkNvdW50KG9ianZbMF0pOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgb2JqYyA9IFB5VHVwbGVfU2l6ZShhcmdzKTsKKyAgICAgICAgb2JqYyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShhcmdzKTsKIAogICAgICAgICBpZiAob2JqYyA+IEFSR1NaKSB7CiAgICAgICAgICAgICBpZiAoIUNIRUNLX1NJWkUob2JqYywgc2l6ZW9mKFRjbF9PYmogKikpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0dXBsZSBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpID8gInR1cGxlIGlzIHRvbyBsb25nIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgb2JqdiA9IChUY2xfT2JqICoqKWF0dGVtcHRja2FsbG9jKCgoc2l6ZV90KW9iamMpICogc2l6ZW9mKFRjbF9PYmogKikpOworICAgICAgICAgICAgb2JqdiA9IChUY2xfT2JqICoqKVB5TWVtX01hbGxvYygoKHNpemVfdClvYmpjKSAqIHNpemVvZihUY2xfT2JqICopKTsKICAgICAgICAgICAgIGlmIChvYmp2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIG9iamMgPSAwOwpAQCAtMTI5Niw3ICsxNDA0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIGkpOworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgb2JqYyA9IGk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzExLDEwICsxNDE5LDEwIEBACiAgICAgICAgICAgICBUY2xfSW5jclJlZkNvdW50KG9ianZbaV0pOwogICAgICAgICB9CiAgICAgfQotICAgICpwb2JqYyA9IG9iamM7CisgICAgKnBvYmpjID0gKGludClvYmpjOwogICAgIHJldHVybiBvYmp2OwogZmluYWxseToKLSAgICBUa2FwcF9DYWxsRGVhbGxvY0FyZ3Mob2Jqdiwgb2JqU3RvcmUsIG9iamMpOworICAgIFRrYXBwX0NhbGxEZWFsbG9jQXJncyhvYmp2LCBvYmpTdG9yZSwgKGludClvYmpjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTQ3NCwxNiArMTU4MiwyMSBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV2YWwKKworICAgIHNjcmlwdDogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FdmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2V2YWxfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI0Yjc5ODMxZjcwMGRlYTAgaW5wdXQ9NDgxNDg0MTIzYTQ1NWYyMl0qLwogewotICAgIGNoYXIgKnNjcmlwdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV2YWwiLCAmc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHNjcmlwdCk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE0OTEsMjMgKzE2MDQsMjggQEAKICAgICBlcnIgPSBUY2xfRXZhbChUa2FwcF9JbnRlcnAoc2VsZiksIHNjcmlwdCk7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChlcnIgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoVGthcHBfUmVzdWx0KHNlbGYpKTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV2YWxmaWxlCisKKyAgICBmaWxlTmFtZTogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FdmFsRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpmaWxlTmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02M2JlODhkY2VlNGYxMWQzIGlucHV0PTg3M2FiNzA3ZTVlOTQ3ZTFdKi8KIHsKLSAgICBjaGFyICpmaWxlTmFtZTsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGZpbGVOYW1lKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTUxNSwyMyArMTYzMywyOCBAQAogICAgIGVyciA9IFRjbF9FdmFsRmlsZShUa2FwcF9JbnRlcnAoc2VsZiksIGZpbGVOYW1lKTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQogICAgICAgICByZXMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwogICAgIExFQVZFX09WRVJMQVBfVENMCiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAucmVjb3JkCisKKyAgICBzY3JpcHQ6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfUmVjb3JkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzY3JpcHQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZmZTA4YTAwNjE3MzBkZiBpbnB1dD1jMGIwZGI1YTIxNDEyY2FjXSovCiB7Ci0gICAgY2hhciAqc2NyaXB0OwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzY3JpcHQpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xNTM5LDIwICsxNjYyLDI1IEBACiAgICAgZXJyID0gVGNsX1JlY29yZEFuZEV2YWwoVGthcHBfSW50ZXJwKHNlbGYpLCBzY3JpcHQsIFRDTF9OT19FVkFMKTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQogICAgICAgICByZXMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwogICAgIExFQVZFX09WRVJMQVBfVENMCiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0FkZEVycm9ySW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbXNnOworLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuYWRkZXJyaW5mbwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmFkZGVycm9yaW5mbyIsICZtc2cpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtc2c6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mb19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICptc2cpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGUyMjJlZTIwNTBlYjM1NyBpbnB1dD00OTcxMzk5MzE3ZDRjMTM2XSovCit7CiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChtc2cpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xNTg1LDYgKzE3MTMsMTUgQEAKIH0gVmFyRXZlbnQ7CiAjZW5kaWYKIAorLypbcHl0aG9uXQorCitjbGFzcyB2YXJuYW1lX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2NvbnN0IGNoYXIgKicKKyAgICBjb252ZXJ0ZXIgPSAndmFybmFtZV9jb252ZXJ0ZXInCisKK1tweXRob25dKi8KKy8qW3B5dGhvbiBjaGVja3N1bTogZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOV0qLworCiBzdGF0aWMgaW50CiB2YXJuYW1lX2NvbnZlcnRlcihQeU9iamVjdCAqaW4sIHZvaWQgKl9vdXQpCiB7CkBAIC0xNTk2LDggKzE3MzMsOCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoaW4pOwotICAgICAgICBpZiAoc3RybGVuKHMpICE9IFB5Qnl0ZXNfU2l6ZShpbikpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibnVsbCBieXRlIGluIGJ5dGVzIG9iamVjdCIpOworICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3QpUHlCeXRlc19TaXplKGluKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgICpvdXQgPSBzOwpAQCAtMTYxMyw4ICsxNzUwLDggQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoc3RybGVuKHMpICE9IHNpemUpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibnVsbCBjaGFyYWN0ZXIgaW4gc3RyaW5nIik7CisgICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClzaXplKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICAqb3V0ID0gczsKQEAgLTE2NjcsNyArMTgwNCw2IEBACiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBUa2FwcE9iamVjdCAqc2VsZiA9IChUa2FwcE9iamVjdCopc2VsZnB0cjsKICAgICBpZiAoc2VsZi0+dGhyZWFkZWQgJiYgc2VsZi0+dGhyZWFkX2lkICE9IFRjbF9HZXRDdXJyZW50VGhyZWFkKCkpIHsKLSAgICAgICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAgICAgICAgIFZhckV2ZW50ICpldjsKICAgICAgICAgUHlPYmplY3QgKnJlcywgKmV4Y190eXBlLCAqZXhjX3ZhbDsKICAgICAgICAgVGNsX0NvbmRpdGlvbiBjb25kID0gTlVMTDsKQEAgLTE4NjIsMzEgKzE5OTgsMzkgQEAKIAogLyoqIFRjbCB0byBQeXRob24gKiovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmdldGludAorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0dldEludChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9nZXRpbnQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODhjZjI5M2ZhZTMwN2NmZSBpbnB1dD0wMzQwMjY5OTdjNWI5MWY4XSovCiB7CiAgICAgY2hhciAqczsKLSNpZiBkZWZpbmVkKFRDTF9XSURFX0lOVF9UWVBFKSB8fCBkZWZpbmVkKEhBVkVfTElCVE9NTUFNVEgpCiAgICAgVGNsX09iaiAqdmFsdWU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSNlbHNlCi0gICAgaW50IGludFZhbHVlOwotI2VuZGlmCiAKLSAgICBpZiAoUHlUdXBsZV9TaXplKGFyZ3MpID09IDEpIHsKLSAgICAgICAgUHlPYmplY3QqIG8gPSBQeVR1cGxlX0dldEl0ZW0oYXJncywgMCk7Ci0gICAgICAgIGlmIChQeUxvbmdfQ2hlY2sobykpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihvKTsKLSAgICAgICAgICAgIHJldHVybiBvOwotICAgICAgICB9CisgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CisgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0aW50IiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwotI2lmIGRlZmluZWQoVENMX1dJREVfSU5UX1RZUEUpIHx8IGRlZmluZWQoSEFWRV9MSUJUT01NQU1USCkKLSAgICB2YWx1ZSA9IFRjbF9OZXdTdHJpbmdPYmoocywgLTEpOwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKworICAgIGlmIChQeVRjbE9iamVjdF9DaGVjayhhcmcpKSB7CisgICAgICAgIHZhbHVlID0gKChQeVRjbE9iamVjdCopYXJnKS0+dmFsdWU7CisgICAgICAgIFRjbF9JbmNyUmVmQ291bnQodmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmdldGludCIsICZzKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOworICAgICAgICB2YWx1ZSA9IFRjbF9OZXdTdHJpbmdPYmoocywgLTEpOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOworICAgIH0KICAgICAvKiBEb24ndCB1c2UgVGNsX0dldEludCgpIGJlY2F1c2UgaXQgcmV0dXJucyBhbWJpZ3VvdXMgcmVzdWx0IGZvciB2YWx1ZQogICAgICAgIGluIHJhbmdlcyAtMioqMzIuLi0yKiozMS0xIGFuZCAyKiozMS4uMioqMzItMSAob24gMzItYml0IHBsYXRmb3JtKS4KIApAQCAtMTg5NCw0MyArMjAzOCw2NyBAQAogICAgICAgIHZhbHVlIGluIHJhbmdlcyAtMioqNjQuLi0yKio2My0xIGFuZCAyKio2My4uMioqNjQtMSAob24gMzItYml0IHBsYXRmb3JtKS4KICAgICAgKi8KICNpZmRlZiBIQVZFX0xJQlRPTU1BTVRICi0gICAgcmVzdWx0ID0gZnJvbUJpZ251bU9iaihzZWxmLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gZnJvbUJpZ251bU9iaigoUHlPYmplY3QgKilzZWxmLCB2YWx1ZSk7CiAjZWxzZQotICAgIHJlc3VsdCA9IGZyb21XaWRlSW50T2JqKHNlbGYsIHZhbHVlKTsKKyAgICByZXN1bHQgPSBmcm9tV2lkZUludE9iaigoUHlPYmplY3QgKilzZWxmLCB2YWx1ZSk7CiAjZW5kaWYKICAgICBUY2xfRGVjclJlZkNvdW50KHZhbHVlKTsKICAgICBpZiAocmVzdWx0ICE9IE5VTEwgfHwgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgaWYgKFRjbF9HZXRJbnQoVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmaW50VmFsdWUpID09IFRDTF9PSykKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpbnRWYWx1ZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZ2V0ZG91YmxlCisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfR2V0RG91YmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2dldGRvdWJsZShUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNTJiMTM4YmQ4Yjk1NmI5IGlucHV0PTIyMDE1NzI5Y2U5ZWY3ZjhdKi8KIHsKICAgICBjaGFyICpzOwogICAgIGRvdWJsZSB2OwogCi0gICAgaWYgKFB5VHVwbGVfU2l6ZShhcmdzKSA9PSAxKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgICAgICBpZiAoUHlGbG9hdF9DaGVjayhvKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKG8pOwotICAgICAgICAgICAgcmV0dXJuIG87Ci0gICAgICAgIH0KKyAgICBpZiAoUHlGbG9hdF9DaGVjayhhcmcpKSB7CisgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0ZG91YmxlIiwgJnMpKQorCisgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKKyAgICAgICAgcmV0dXJuIFB5TnVtYmVyX0Zsb2F0KGFyZyk7CisgICAgfQorCisgICAgaWYgKFB5VGNsT2JqZWN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgaWYgKFRjbF9HZXREb3VibGVGcm9tT2JqKFRrYXBwX0ludGVycChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnYpID09IFRDTF9FUlJPUikKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHYpOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpnZXRkb3VibGUiLCAmcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgaWYgKFRjbF9HZXREb3VibGUoVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdikgPT0gVENMX0VSUk9SKQotICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZCIsIHYpOworICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHYpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5nZXRib29sZWFuCisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfR2V0Qm9vbGVhbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK190a2ludGVyX3RrYXBwX2dldGJvb2xlYW4oVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI2YTlhZTQ0NTgyMWQ5MSBpbnB1dD03ZjExMjQ4ZWY4Zjg3NzZlXSovCiB7CiAgICAgY2hhciAqczsKICAgICBpbnQgdjsKQEAgLTE5NDMsNyArMjExMSw3IEBACiAgICAgICAgIGlmIChUY2xfR2V0Qm9vbGVhbkZyb21PYmooVGthcHBfSW50ZXJwKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2KSA9PSBUQ0xfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHYpOwogICAgIH0KIApAQCAtMTk1MSwyMCArMjExOSwyNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIGlmIChUY2xfR2V0Qm9vbGVhbihUa2FwcF9JbnRlcnAoc2VsZiksIHMsICZ2KSA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHYpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHByc3RyaW5nCisKKyAgICBzOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0V4cHJTdHJpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZGEzMjNkM2VkMGFiYjEgaW5wdXQ9ZmE3OGY3NTFhZmIyZjIxYl0qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpleHByc3RyaW5nIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE5NzIsMjQgKzIxNDUsMjkgQEAKICAgICByZXR2YWwgPSBUY2xfRXhwclN0cmluZyhUa2FwcF9JbnRlcnAoc2VsZiksIHMpOwogICAgIEVOVEVSX09WRVJMQVAKICAgICBpZiAocmV0dmFsID09IFRDTF9FUlJPUikKLSAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICBlbHNlCiAgICAgICAgIHJlcyA9IHVuaWNvZGVGcm9tVGNsU3RyaW5nKFRrYXBwX1Jlc3VsdChzZWxmKSk7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHBybG9uZworCisgICAgczogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FeHByTG9uZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9leHBybG9uZ19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVkNmE0NmI2M2M2ZWJjZjkgaW5wdXQ9MTFiZDdlZWUwYzU3YjRkY10qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IHJldHZhbDsKICAgICBsb25nIHY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6ZXhwcmxvbmciLCAmcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTk5NywyMyArMjE3NSwyOSBAQAogICAgIHJldHZhbCA9IFRjbF9FeHByTG9uZyhUa2FwcF9JbnRlcnAoc2VsZiksIHMsICZ2KTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJsIiwgdik7CisgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tTG9uZyh2KTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV4cHJkb3VibGUKKworICAgIHM6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXhwckRvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmY3OGRmMTA4MWVhNDE1OCBpbnB1dD1mZjAyYmMxMTc5ODgzMmQ1XSovCiB7Ci0gICAgY2hhciAqczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBkb3VibGUgdjsKICAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV4cHJkb3VibGUiLCAmcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiVGthcHBfRXhwckRvdWJsZSIsIHJldHVybiAwKQpAQCAtMjAyMiw2MSArMjIwNiw3NCBAQAogICAgIEVOVEVSX09WRVJMQVAKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXR2YWwpCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJkIiwgdik7CisgICAgICAgIHJlcyA9IFB5RmxvYXRfRnJvbURvdWJsZSh2KTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV4cHJib29sZWFuCisKKyAgICBzOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0V4cHJCb29sZWFuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGIyODAzOGMyMjg4NzMxMSBpbnB1dD1jOGM2NjAyMmJkYjhkNWQzXSovCiB7Ci0gICAgY2hhciAqczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgcmV0dmFsOwogICAgIGludCB2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV4cHJib29sZWFuIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogICAgIEVOVEVSX1RDTAogICAgIHJldHZhbCA9IFRjbF9FeHByQm9vbGVhbihUa2FwcF9JbnRlcnAoc2VsZiksIHMsICZ2KTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpIiwgdik7CisgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tTG9uZyh2KTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKIAogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5zcGxpdGxpc3QKKworICAgIGFyZzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9TcGxpdExpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfc3BsaXRsaXN0KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzYjUxZDM0Mzg2ZDM2ZmIgaW5wdXQ9MmIyZTEzMzUxZTNjMGI1M10qLwogewogICAgIGNoYXIgKmxpc3Q7CiAgICAgaW50IGFyZ2M7Ci0gICAgY2hhciAqKmFyZ3Y7Ci0gICAgUHlPYmplY3QgKmFyZywgKnY7CisgICAgY29uc3QgY2hhciAqKmFyZ3Y7CisgICAgUHlPYmplY3QgKnY7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c3BsaXRsaXN0IiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVRjbE9iamVjdF9DaGVjayhhcmcpKSB7CiAgICAgICAgIGludCBvYmpjOwogICAgICAgICBUY2xfT2JqICoqb2JqdjsKICAgICAgICAgaWYgKFRjbF9MaXN0T2JqR2V0RWxlbWVudHMoVGthcHBfSW50ZXJwKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iamMsICZvYmp2KSA9PSBUQ0xfRVJST1IpIHsKLSAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCEodiA9IFB5VHVwbGVfTmV3KG9iamMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooc2VsZiwgb2JqdltpXSk7CisgICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2W2ldKTsKICAgICAgICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDg4LDE1ICsyMjg1LDE4IEBACiAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwogICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KKyAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgcmV0dXJuIFB5U2VxdWVuY2VfVHVwbGUoYXJnKTsKKyAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OnNwbGl0bGlzdCIsICJ1dGYtOCIsICZsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImV0OnNwbGl0bGlzdCIsICJ1dGYtOCIsICZsaXN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGxpc3QpOwogICAgIGlmIChUY2xfU3BsaXRMaXN0KFRrYXBwX0ludGVycChzZWxmKSwgbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAmYXJnYywgJmFyZ3YpID09IFRDTF9FUlJPUikgIHsKICAgICAgICAgUHlNZW1fRnJlZShsaXN0KTsKLSAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIH0KIAogICAgIGlmICghKHYgPSBQeVR1cGxlX05ldyhhcmdjKSkpCkBAIC0yMTE3LDE0ICsyMzE3LDIxIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLnNwbGl0CisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfU3BsaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfc3BsaXQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA4YWQ4MzIzNjNmYWNmZCBpbnB1dD1hMWM3ODM0OWVhY2FhMTQwXSovCiB7Ci0gICAgUHlPYmplY3QgKmFyZywgKnY7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY2hhciAqbGlzdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzcGxpdCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlUY2xPYmplY3RfQ2hlY2soYXJnKSkgewogICAgICAgICBUY2xfT2JqICp2YWx1ZSA9ICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlOwogICAgICAgICBpbnQgb2JqYzsKQEAgLTIxMzIsMTYgKzIzMzksMTYgQEAKICAgICAgICAgaW50IGk7CiAgICAgICAgIGlmIChUY2xfTGlzdE9iakdldEVsZW1lbnRzKFRrYXBwX0ludGVycChzZWxmKSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmpjLCAmb2JqdikgPT0gVENMX0VSUk9SKSB7Ci0gICAgICAgICAgICByZXR1cm4gRnJvbU9iaihzZWxmLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gRnJvbU9iaigoUHlPYmplY3QqKXNlbGYsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBpZiAob2JqYyA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKICAgICAgICAgaWYgKG9iamMgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBGcm9tT2JqKHNlbGYsIG9ianZbMF0pOworICAgICAgICAgICAgcmV0dXJuIEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2WzBdKTsKICAgICAgICAgaWYgKCEodiA9IFB5VHVwbGVfTmV3KG9iamMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooc2VsZiwgb2JqdltpXSk7CisgICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2W2ldKTsKICAgICAgICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMTQ5LDEwICsyMzU2LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZykpCisgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJnKSB8fCBQeUxpc3RfQ2hlY2soYXJnKSkKICAgICAgICAgcmV0dXJuIFNwbGl0T2JqKGFyZyk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OnNwbGl0IiwgInV0Zi04IiwgJmxpc3QpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiZXQ6c3BsaXQiLCAidXRmLTgiLCAmbGlzdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgobGlzdCk7CiAgICAgdiA9IFNwbGl0KGxpc3QpOwpAQCAtMjE4Myw3ICsyMzkwLDcgQEAKICAqIGZ1bmN0aW9uIG9yIG1ldGhvZC4KICAqLwogc3RhdGljIGludAotUHl0aG9uQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQorUHl0aG9uQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhID0gKFB5dGhvbkNtZF9DbGllbnREYXRhICopY2xpZW50RGF0YTsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZywgKnJlczsKQEAgLTIyNTIsNyArMjQ1OSw3IEBACiB0eXBlZGVmIHN0cnVjdCBDb21tYW5kRXZlbnR7CiAgICAgVGNsX0V2ZW50IGV2OwogICAgIFRjbF9JbnRlcnAqIGludGVycDsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgaW50IGNyZWF0ZTsKICAgICBpbnQgKnN0YXR1czsKICAgICBDbGllbnREYXRhICpkYXRhOwpAQCAtMjI3NSwxOCArMjQ4MiwyNSBAQAogfQogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmNyZWF0ZWNvbW1hbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCisgICAgbmFtZTogc3RyCisgICAgZnVuYzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9DcmVhdGVDb21tYW5kKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTFjNzlhNGVlMmFmNDEwIGlucHV0PTJiYzJjMDQ2YTA5MTQyMzRdKi8KIHsKLSAgICBUa2FwcE9iamVjdCAqc2VsZiA9IChUa2FwcE9iamVjdCopc2VsZnB0cjsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YTsKLSAgICBjaGFyICpjbWROYW1lOwotICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOmNyZWF0ZWNvbW1hbmQiLCAmY21kTmFtZSwgJmZ1bmMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGNtZE5hbWUpOworICAgIENIRUNLX1NUUklOR19MRU5HVEgobmFtZSk7CiAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjb21tYW5kIG5vdCBjYWxsYWJsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMDMsNyArMjUxNyw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIFB5X0lOQ1JFRihzZWxmKTsKICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgZGF0YS0+c2VsZiA9IHNlbGZwdHI7CisgICAgZGF0YS0+c2VsZiA9IChQeU9iamVjdCAqKSBzZWxmOwogICAgIGRhdGEtPmZ1bmMgPSBmdW5jOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKHNlbGYtPnRocmVhZGVkICYmIHNlbGYtPnRocmVhZF9pZCAhPSBUY2xfR2V0Q3VycmVudFRocmVhZCgpKSB7CkBAIC0yMzE3LDcgKzI1MzEsNyBAQAogICAgICAgICBldi0+ZXYucHJvYyA9IChUY2xfRXZlbnRQcm9jKilUa2FwcF9Db21tYW5kUHJvYzsKICAgICAgICAgZXYtPmludGVycCA9IHNlbGYtPmludGVycDsKICAgICAgICAgZXYtPmNyZWF0ZSA9IDE7Ci0gICAgICAgIGV2LT5uYW1lID0gY21kTmFtZTsKKyAgICAgICAgZXYtPm5hbWUgPSBuYW1lOwogICAgICAgICBldi0+ZGF0YSA9IChDbGllbnREYXRhKWRhdGE7CiAgICAgICAgIGV2LT5zdGF0dXMgPSAmZXJyOwogICAgICAgICBldi0+ZG9uZSA9ICZjb25kOwpAQCAtMjMyOSw3ICsyNTQzLDcgQEAKICAgICB7CiAgICAgICAgIEVOVEVSX1RDTAogICAgICAgICBlcnIgPSBUY2xfQ3JlYXRlQ29tbWFuZCgKLSAgICAgICAgICAgIFRrYXBwX0ludGVycChzZWxmKSwgY21kTmFtZSwgUHl0aG9uQ21kLAorICAgICAgICAgICAgVGthcHBfSW50ZXJwKHNlbGYpLCBuYW1lLCBQeXRob25DbWQsCiAgICAgICAgICAgICAoQ2xpZW50RGF0YSlkYXRhLCBQeXRob25DbWREZWxldGUpID09IE5VTEw7CiAgICAgICAgIExFQVZFX1RDTAogICAgIH0KQEAgLTIzNDQsMTYgKzI1NTgsMjIgQEAKIAogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmRlbGV0ZWNvbW1hbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCisgICAgbmFtZTogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9EZWxldGVDb21tYW5kKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjdlOGNiNTg0NWUwZDJkIGlucHV0PWI2MzA2NDY4ZjEwYjIxOWNdKi8KIHsKLSAgICBUa2FwcE9iamVjdCAqc2VsZiA9IChUa2FwcE9iamVjdCopc2VsZnB0cjsKLSAgICBjaGFyICpjbWROYW1lOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6ZGVsZXRlY29tbWFuZCIsICZjbWROYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChjbWROYW1lKTsKKyAgICBDSEVDS19TVFJJTkdfTEVOR1RIKG5hbWUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoc2VsZi0+dGhyZWFkZWQgJiYgc2VsZi0+dGhyZWFkX2lkICE9IFRjbF9HZXRDdXJyZW50VGhyZWFkKCkpIHsKQEAgLTIzNjcsNyArMjU4Nyw3IEBACiAgICAgICAgIGV2LT5ldi5wcm9jID0gKFRjbF9FdmVudFByb2MqKVRrYXBwX0NvbW1hbmRQcm9jOwogICAgICAgICBldi0+aW50ZXJwID0gc2VsZi0+aW50ZXJwOwogICAgICAgICBldi0+Y3JlYXRlID0gMDsKLSAgICAgICAgZXYtPm5hbWUgPSBjbWROYW1lOworICAgICAgICBldi0+bmFtZSA9IG5hbWU7CiAgICAgICAgIGV2LT5zdGF0dXMgPSAmZXJyOwogICAgICAgICBldi0+ZG9uZSA9ICZjb25kOwogICAgICAgICBUa2FwcF9UaHJlYWRTZW5kKHNlbGYsIChUY2xfRXZlbnQqKWV2LCAmY29uZCwKQEAgLTIzNzgsNyArMjU5OCw3IEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIEVOVEVSX1RDTAotICAgICAgICBlcnIgPSBUY2xfRGVsZXRlQ29tbWFuZChzZWxmLT5pbnRlcnAsIGNtZE5hbWUpOworICAgICAgICBlcnIgPSBUY2xfRGVsZXRlQ29tbWFuZChzZWxmLT5pbnRlcnAsIG5hbWUpOwogICAgICAgICBMRUFWRV9UQ0wKICAgICB9CiAgICAgaWYgKGVyciA9PSAtMSkgewpAQCAtMjQ1OSwxNyArMjY3OSwyMyBAQAogICAgIExFQVZFX1BZVEhPTgogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5jcmVhdGVmaWxlaGFuZGxlcgorCisgICAgZmlsZTogb2JqZWN0CisgICAgbWFzazogaW50CisgICAgZnVuYzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9DcmVhdGVGaWxlSGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0gICAgIC8qIGFyZ3MgaXMgKGZpbGUsIG1hc2ssIGZ1bmMpICovCitfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hc2ssIFB5T2JqZWN0ICpmdW5jKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY3M2NlODJkZTgwMWMzNTMgaW5wdXQ9ODQ5NDNhNTI4NmU0Nzk0N10qLwogewogICAgIEZpbGVIYW5kbGVyX0NsaWVudERhdGEgKmRhdGE7Ci0gICAgUHlPYmplY3QgKmZpbGUsICpmdW5jOwotICAgIGludCBtYXNrLCB0ZmlsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPOmNyZWF0ZWZpbGVoYW5kbGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCB0ZmlsZTsKIAogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0yNDkyLDE0ICsyNzE4LDE5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9EZWxldGVGaWxlSGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmZpbGU7Ci0gICAgaW50IHRmaWxlOworLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZGVsZXRlZmlsZWhhbmRsZXIKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpkZWxldGVmaWxlaGFuZGxlciIsICZmaWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmlsZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kZWxldGVmaWxlaGFuZGxlcihUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjUzY2M5NmViZjk0NzZmZCBpbnB1dD1hYmJlYzE5ZDY2MzEyZTJhXSovCit7CisgICAgaW50IHRmaWxlOwogCiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTI1MjgsMTQgKzI3NTksMjAgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIH0gVGt0dE9iamVjdDsKIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGt0aW1lcnRva2VuLmRlbGV0ZXRpbWVyaGFuZGxlcgorCisgICAgc2VsZjogc2VsZih0eXBlPSJUa3R0T2JqZWN0ICoiKQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua3R0X0RlbGV0ZVRpbWVySGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTI1YmE1ZGQ1OTRlNTIwODRdKi8KIHsKLSAgICBUa3R0T2JqZWN0ICp2ID0gKFRrdHRPYmplY3QgKilzZWxmOworICAgIFRrdHRPYmplY3QgKnYgPSBzZWxmOwogICAgIFB5T2JqZWN0ICpmdW5jID0gdi0+ZnVuYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmRlbGV0ZXRpbWVyaGFuZGxlciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodi0+dG9rZW4gIT0gTlVMTCkgewogICAgICAgICBUY2xfRGVsZXRlVGltZXJIYW5kbGVyKHYtPnRva2VuKTsKICAgICAgICAgdi0+dG9rZW4gPSBOVUxMOwpAQCAtMjU0OCwxMiArMjc4NSw2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBUa3R0X21ldGhvZHNbXSA9Ci17Ci0gICAgeyJkZWxldGV0aW1lcmhhbmRsZXIiLCBUa3R0X0RlbGV0ZVRpbWVySGFuZGxlciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBUa3R0T2JqZWN0ICoKIFRrdHRfTmV3KFB5T2JqZWN0ICpmdW5jKQogewpAQCAtMjU5NSwyMiArMjgyNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7CiB9CiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBUa3R0X1R5cGVfc2xvdHNbXSA9IHsKLSAgICB7UHlfdHBfZGVhbGxvYywgVGt0dF9EZWFsbG9jfSwKLSAgICB7UHlfdHBfcmVwciwgVGt0dF9SZXByfSwKLSAgICB7UHlfdHBfbWV0aG9kcywgVGt0dF9tZXRob2RzfSwKLSAgICB7MCwgMH0KLX07Ci0KLXN0YXRpYyBQeVR5cGVfU3BlYyBUa3R0X1R5cGVfc3BlYyA9IHsKLSAgICAiX3RraW50ZXIudGt0aW1lcnRva2VuIiwKLSAgICBzaXplb2YoVGt0dE9iamVjdCksCi0gICAgMCwKLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCi0gICAgVGt0dF9UeXBlX3Nsb3RzLAotfTsKLQotCiAvKiogVGltZXIgSGFuZGxlciAqKi8KIAogc3RhdGljIHZvaWQKQEAgLTI2NDEsMTYgKzI4NTYsMjIgQEAKICAgICBMRUFWRV9QWVRIT04KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuY3JlYXRldGltZXJoYW5kbGVyCisKKyAgICBtaWxsaXNlY29uZHM6IGludAorICAgIGZ1bmM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfQ3JlYXRlVGltZXJIYW5kbGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgbWlsbGlzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmRhNTk1OWI5ZDAzMTkxMSBpbnB1dD1iYTY3MjlmMzJmMDI3N2E1XSovCiB7Ci0gICAgaW50IG1pbGxpc2Vjb25kczsKLSAgICBQeU9iamVjdCAqZnVuYzsKICAgICBUa3R0T2JqZWN0ICp2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYmFkIGFyZ3VtZW50IGxpc3QiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNjcwLDE4ICsyODkxLDIzIEBACiAKIC8qKiBFdmVudCBMb29wICoqLwogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5tYWlubG9vcAorCisgICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKKyAgICB0aHJlc2hvbGQ6IGludCA9IDAKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX01haW5Mb29wKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJhOGVhYmJlNTc4NDFiMCBpbnB1dD1hZDU3YzljMWRkMmI5NDcwXSovCiB7Ci0gICAgaW50IHRocmVzaG9sZCA9IDA7Ci0gICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwogI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOm1haW5sb29wIiwgJnRocmVzaG9sZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAgICAgc2VsZi0+ZGlzcGF0Y2hpbmcgPSAxOwogCkBAIC0yNzMzLDQ0ICsyOTU5LDU2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9Eb09uZUV2ZW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIGludCBydjsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmRvb25lZXZlbnQKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZG9vbmVldmVudCIsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGZsYWdzOiBpbnQgPSAwCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yN2M2YjJhYTQ2NGNhYzI5IGlucHV0PTY1NDJiOTI4ZTM2NGI3OTNdKi8KK3sKKyAgICBpbnQgcnY7CiAKICAgICBFTlRFUl9UQ0wKICAgICBydiA9IFRjbF9Eb09uZUV2ZW50KGZsYWdzKTsKICAgICBMRUFWRV9UQ0wKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHJ2KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJ2KTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAucXVpdAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfUXVpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9xdWl0X2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2YyMWVlZmY0ODFmNzU0ZiBpbnB1dD1lMDMwMjBkYzM4YWZmMjNjXSovCiB7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpxdWl0IikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcXVpdE1haW5Mb29wID0gMTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuaW50ZXJwYWRkcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfSW50ZXJwQWRkcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmNhYWFlMzI3M2IzYzk1YSBpbnB1dD0yZGQzMmNiZGRiNTVhMTExXSovCiB7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjppbnRlcnBhZGRyIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cihUa2FwcF9JbnRlcnAoc2VsZikpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5sb2FkdGsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1RrSW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9sb2FkdGtfaW1wbChUa2FwcE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lOWUxMGE5NTRjZTQ2ZDJhIGlucHV0PWI1ZTgyYWZlZGQ2MzU0ZjBdKi8KIHsKICAgICBUY2xfSW50ZXJwICppbnRlcnAgPSBUa2FwcF9JbnRlcnAoc2VsZik7CiAgICAgY29uc3QgY2hhciAqIF90a19leGlzdHMgPSBOVUxMOwpAQCAtMjc5Niw3ICszMDM0LDcgQEAKICAgICBpZiAoZXJyID09IFRDTF9FUlJPUikgewogICAgICAgICAvKiBUaGlzIHNldHMgYW4gZXhjZXB0aW9uLCBidXQgd2UgY2Fubm90IHJldHVybiByaWdodAogICAgICAgICAgICBhd2F5IGJlY2F1c2Ugd2UgbmVlZCB0byBleGl0IHRoZSBvdmVybGFwIGZpcnN0LiAqLwotICAgICAgICBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIF90a19leGlzdHMgPSBUa2FwcF9SZXN1bHQoc2VsZik7CiAgICAgfQpAQCAtMjgzMSw1OSArMzA2OSwyMyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfV2lsbERpc3BhdGNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLndpbGxkaXNwYXRjaAogCi0gICAgKChUa2FwcE9iamVjdCopc2VsZiktPmRpc3BhdGNoaW5nID0gMTsKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZTNmNDZkMjQ0NjQyMTU1IGlucHV0PTI2MzA2OTk3Njc4MDg5NzBdKi8KK3sKKyAgICBzZWxmLT5kaXNwYXRjaGluZyA9IDE7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi0vKioqKiBUa2FwcCBNZXRob2QgTGlzdCAqKioqLwotCi1zdGF0aWMgUHlNZXRob2REZWYgVGthcHBfbWV0aG9kc1tdID0KLXsKLSAgICB7IndpbGxkaXNwYXRjaCIsICAgICAgIFRrYXBwX1dpbGxEaXNwYXRjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsid2FudG9iamVjdHMiLCAgICAgICAgICAgIFRrYXBwX1dhbnRPYmplY3RzLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY2FsbCIsICAgICAgICAgICAgICAgICAgIFRrYXBwX0NhbGwsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJldmFsIiwgICAgICAgICAgICAgICAgICAgVGthcHBfRXZhbCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV2YWxmaWxlIiwgICAgICAgICAgICAgICBUa2FwcF9FdmFsRmlsZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlY29yZCIsICAgICAgICAgICAgICAgICBUa2FwcF9SZWNvcmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJhZGRlcnJvcmluZm8iLCAgICAgICBUa2FwcF9BZGRFcnJvckluZm8sIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzZXR2YXIiLCAgICAgICAgICAgICAgICAgVGthcHBfU2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2xvYmFsc2V0dmFyIiwgICAgICAgVGthcHBfR2xvYmFsU2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0dmFyIiwgICAgICAgICAgICAgICAgIFRrYXBwX0dldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbGdldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbEdldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuc2V0dmFyIiwgICAgICAgICAgICAgICBUa2FwcF9VbnNldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbHVuc2V0dmFyIiwgICAgIFRrYXBwX0dsb2JhbFVuc2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0aW50IiwgICAgICAgICAgICAgICAgIFRrYXBwX0dldEludCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldGRvdWJsZSIsICAgICAgICAgICAgICBUa2FwcF9HZXREb3VibGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnZXRib29sZWFuIiwgICAgICAgICAgICAgVGthcHBfR2V0Qm9vbGVhbiwgTUVUSF9PfSwKLSAgICB7ImV4cHJzdHJpbmciLCAgICAgICAgICAgICBUa2FwcF9FeHByU3RyaW5nLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXhwcmxvbmciLCAgICAgICAgICAgICAgIFRrYXBwX0V4cHJMb25nLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXhwcmRvdWJsZSIsICAgICAgICAgICAgIFRrYXBwX0V4cHJEb3VibGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJleHByYm9vbGVhbiIsICAgICAgICBUa2FwcF9FeHByQm9vbGVhbiwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InNwbGl0bGlzdCIsICAgICAgICAgICAgICBUa2FwcF9TcGxpdExpc3QsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzcGxpdCIsICAgICAgICAgICAgICAgICAgVGthcHBfU3BsaXQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjcmVhdGVjb21tYW5kIiwgICAgICBUa2FwcF9DcmVhdGVDb21tYW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZGVsZXRlY29tbWFuZCIsICAgICAgVGthcHBfRGVsZXRlQ29tbWFuZCwgTUVUSF9WQVJBUkdTfSwKLSNpZmRlZiBIQVZFX0NSRUFURUZJTEVIQU5ETEVSCi0gICAgeyJjcmVhdGVmaWxlaGFuZGxlciIsICBUa2FwcF9DcmVhdGVGaWxlSGFuZGxlciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImRlbGV0ZWZpbGVoYW5kbGVyIiwgIFRrYXBwX0RlbGV0ZUZpbGVIYW5kbGVyLCBNRVRIX1ZBUkFSR1N9LAotI2VuZGlmCi0gICAgeyJjcmVhdGV0aW1lcmhhbmRsZXIiLCBUa2FwcF9DcmVhdGVUaW1lckhhbmRsZXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJtYWlubG9vcCIsICAgICAgICAgICAgICAgVGthcHBfTWFpbkxvb3AsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJkb29uZWV2ZW50IiwgICAgICAgICAgICAgVGthcHBfRG9PbmVFdmVudCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InF1aXQiLCAgICAgICAgICAgICAgICAgICBUa2FwcF9RdWl0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaW50ZXJwYWRkciIsICAgICAgICAgVGthcHBfSW50ZXJwQWRkciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxvYWR0ayIsICAgICAgICAgICAgICAgICBUa2FwcF9Ua0luaXQsIE1FVEhfTk9BUkdTfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICBOVUxMfQotfTsKLQotCi0KIC8qKioqIFRrYXBwIFR5cGUgTWV0aG9kcyAqKioqLwogCiBzdGF0aWMgdm9pZApAQCAtMjg5OSw0MSArMzEwMSwyNiBAQAogICAgIERpc2FibGVFdmVudEhvb2soKTsKIH0KIAotc3RhdGljIFB5VHlwZV9TbG90IFRrYXBwX1R5cGVfc2xvdHNbXSA9IHsKLSAgICB7UHlfdHBfZGVhbGxvYywgVGthcHBfRGVhbGxvY30sCi0gICAge1B5X3RwX21ldGhvZHMsIFRrYXBwX21ldGhvZHN9LAotICAgIHswLCAwfQotfTsKLQotCi1zdGF0aWMgUHlUeXBlX1NwZWMgVGthcHBfVHlwZV9zcGVjID0gewotICAgICJfdGtpbnRlci50a2FwcCIsCi0gICAgc2l6ZW9mKFRrYXBwT2JqZWN0KSwKLSAgICAwLAotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKLSAgICBUa2FwcF9UeXBlX3Nsb3RzLAotfTsKLQogCiAKIC8qKioqIFRraW50ZXIgTW9kdWxlICoqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdCogdHVwbGU7Ci0gICAgaW50IHNpemU7IC8qIGN1cnJlbnQgc2l6ZSAqLwotICAgIGludCBtYXhzaXplOyAvKiBhbGxvY2F0ZWQgc2l6ZSAqLworICAgIFB5X3NzaXplX3Qgc2l6ZTsgLyogY3VycmVudCBzaXplICovCisgICAgUHlfc3NpemVfdCBtYXhzaXplOyAvKiBhbGxvY2F0ZWQgc2l6ZSAqLwogfSBGbGF0dGVuQ29udGV4dDsKIAogc3RhdGljIGludAotX2J1bXAoRmxhdHRlbkNvbnRleHQqIGNvbnRleHQsIGludCBzaXplKQorX2J1bXAoRmxhdHRlbkNvbnRleHQqIGNvbnRleHQsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICAvKiBleHBhbmQgdHVwbGUgdG8gaG9sZCAoYXQgbGVhc3QpIHNpemUgbmV3IGl0ZW1zLgogICAgICAgIHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkICovCiAKLSAgICBpbnQgbWF4c2l6ZSA9IGNvbnRleHQtPm1heHNpemUgKiAyOworICAgIFB5X3NzaXplX3QgbWF4c2l6ZSA9IGNvbnRleHQtPm1heHNpemUgKiAyOyAgLyogbmV2ZXIgb3ZlcmZsb3dzICovCiAKICAgICBpZiAobWF4c2l6ZSA8IGNvbnRleHQtPnNpemUgKyBzaXplKQotICAgICAgICBtYXhzaXplID0gY29udGV4dC0+c2l6ZSArIHNpemU7CisgICAgICAgIG1heHNpemUgPSBjb250ZXh0LT5zaXplICsgc2l6ZTsgIC8qIG5ldmVyIG92ZXJmbG93cyAqLwogCiAgICAgY29udGV4dC0+bWF4c2l6ZSA9IG1heHNpemU7CiAKQEAgLTI5NDUsNDEgKzMxMzIsMjEgQEAKIHsKICAgICAvKiBhZGQgdHVwbGUgb3IgbGlzdCB0byBhcmd1bWVudCB0dXBsZSAocmVjdXJzaXZlbHkpICovCiAKLSAgICBpbnQgaSwgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKICAgICBpZiAoZGVwdGggPiAxMDAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5lc3RpbmcgdG9vIGRlZXAgaW4gX2ZsYXR0ZW4iKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIGlmIChQeUxpc3RfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShpdGVtKTsKKyAgICB9IGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soaXRlbSkgfHwgUHlMaXN0X0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIHNpemUgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoaXRlbSk7CiAgICAgICAgIC8qIHByZWFsbG9jYXRlIChhc3N1bWUgbm8gbmVzdGluZykgKi8KICAgICAgICAgaWYgKGNvbnRleHQtPnNpemUgKyBzaXplID4gY29udGV4dC0+bWF4c2l6ZSAmJgogICAgICAgICAgICAgIV9idW1wKGNvbnRleHQsIHNpemUpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIC8qIGNvcHkgaXRlbXMgdG8gb3V0cHV0IHR1cGxlICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMaXN0X0dFVF9JVEVNKGl0ZW0sIGkpOwotICAgICAgICAgICAgaWYgKFB5TGlzdF9DaGVjayhvKSB8fCBQeVR1cGxlX0NoZWNrKG8pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFfZmxhdHRlbjEoY29udGV4dCwgbywgZGVwdGggKyAxKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG8gIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zaXplICsgMSA+IGNvbnRleHQtPm1heHNpemUgJiYKLSAgICAgICAgICAgICAgICAgICAgIV9idW1wKGNvbnRleHQsIDEpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYobyk7Ci0gICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjb250ZXh0LT50dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNpemUrKywgbyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgLyogc2FtZSwgZm9yIHR1cGxlcyAqLwotICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShpdGVtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnNpemUgKyBzaXplID4gY29udGV4dC0+bWF4c2l6ZSAmJgotICAgICAgICAgICAgIV9idW1wKGNvbnRleHQsIHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShpdGVtLCBpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW0sIGkpOwogICAgICAgICAgICAgaWYgKFB5TGlzdF9DaGVjayhvKSB8fCBQeVR1cGxlX0NoZWNrKG8pKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFfZmxhdHRlbjEoY29udGV4dCwgbywgZGVwdGggKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0yOTk5LDE0ICszMTY2LDE5IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLl9mbGF0dGVuCisKKyAgICBpdGVtOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRraW50ZXJfRmxhdHRlbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfdGtpbnRlcl9fZmxhdHRlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlbSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NTA1MDQ5ZWM3NGMzNDgwIGlucHV0PTZiOWMxMjI2MGFhMTE1N2ZdKi8KIHsKICAgICBGbGF0dGVuQ29udGV4dCBjb250ZXh0OwotICAgIFB5T2JqZWN0KiBpdGVtOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOl9mbGF0dGVuIiwgJml0ZW0pKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGNvbnRleHQubWF4c2l6ZSA9IFB5U2VxdWVuY2VfU2l6ZShpdGVtKTsKICAgICBpZiAoY29udGV4dC5tYXhzaXplIDwgMCkKQEAgLTMwMjksMjYgKzMyMDEsMzMgQEAKICAgICByZXR1cm4gY29udGV4dC50dXBsZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIuY3JlYXRlCisKKyAgICBzY3JlZW5OYW1lOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgYmFzZU5hbWU6IHN0ciA9IE5VTEwKKyAgICBjbGFzc05hbWU6IHN0ciA9ICJUayIKKyAgICBpbnRlcmFjdGl2ZTogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICB3YW50b2JqZWN0czogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICB3YW50VGs6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICAgICAgaWYgZmFsc2UsIHRoZW4gVGtfSW5pdCgpIGRvZXNuJ3QgZ2V0IGNhbGxlZAorICAgIHN5bmM6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgICAgIGlmIHRydWUsIHRoZW4gcGFzcyAtc3luYyB0byB3aXNoCisgICAgdXNlOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgICAgIGlmIG5vdCBOb25lLCB0aGVuIHBhc3MgLXVzZSB0byB3aXNoCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2ludGVyX0NyZWF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl9jcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzY3JlZW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFzZU5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iODg0NzgwMGZjM2IyN2ViIGlucHV0PTBkNTIyYWFkMWNiMGNhMGVdKi8KIHsKLSAgICBjaGFyICpzY3JlZW5OYW1lID0gTlVMTDsKLSAgICBjaGFyICpiYXNlTmFtZSA9IE5VTEw7IC8qIFhYWCB0aGlzIGlzIG5vdCB1c2VkIGFueW1vcmU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgZ2V0dGluZyByaWQgb2YgaXQuICovCi0gICAgY2hhciAqY2xhc3NOYW1lID0gTlVMTDsKLSAgICBpbnQgaW50ZXJhY3RpdmUgPSAwOwotICAgIGludCB3YW50b2JqZWN0cyA9IDA7Ci0gICAgaW50IHdhbnRUayA9IDE7ICAgICAvKiBJZiBmYWxzZSwgdGhlbiBUa19Jbml0KCkgZG9lc24ndCBnZXQgY2FsbGVkICovCi0gICAgaW50IHN5bmMgPSAwOyAvKiBwYXNzIC1zeW5jIHRvIHdpc2ggKi8KLSAgICBjaGFyICp1c2UgPSBOVUxMOyAvKiBwYXNzIC11c2UgdG8gd2lzaCAqLwotCi0gICAgY2xhc3NOYW1lID0gIlRrIjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHpzc2lpaWl6OmNyZWF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzY3JlZW5OYW1lLCAmYmFzZU5hbWUsICZjbGFzc05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmFjdGl2ZSwgJndhbnRvYmplY3RzLCAmd2FudFRrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3luYywgJnVzZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFhYWCBiYXNlTmFtZSBpcyBub3QgdXNlZCBhbnltb3JlOworICAgICAqIHRyeSBnZXR0aW5nIHJpZCBvZiBpdC4gKi8KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHNjcmVlbk5hbWUpOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgoYmFzZU5hbWUpOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgoY2xhc3NOYW1lKTsKQEAgLTMwNTksMTIgKzMyMzgsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jLCB1c2UpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci5zZXRidXN5d2FpdGludGVydmFsCisKKyAgICBuZXdfdmFsOiBpbnQKKyAgICAvCisKK1NldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuCisKK0l0IHNob3VsZCBiZSBzZXQgdG8gYSBkaXZpc29yIG9mIHRoZSBtYXhpbXVtIHRpbWUgYmV0d2VlbiBmcmFtZXMgaW4gYW4gYW5pbWF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmV3X3ZhbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjlkN2VmNzk0MDQ2MWVhIGlucHV0PWRlY2ExZDZmOWU2ZGFlNDddKi8KIHsKLSAgICBpbnQgbmV3X3ZhbDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG5ld192YWwgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJ1c3l3YWl0aW50ZXJ2YWwgbXVzdCBiZSA+PSAwIik7CkBAIC0zMDc0LDM0ICszMjYyLDEwMyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgY2hhciBzZXRidXN5d2FpdGludGVydmFsX2RvY1tdID0KLSJzZXRidXN5d2FpdGludGVydmFsKG4pIC0+IE5vbmVcblwKLVxuXAotU2V0IHRoZSBidXN5LXdhaXQgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gc3VjY2Vzc2l2ZVxuXAotY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuXG5cCi1JdCBzaG91bGQgYmUgc2V0IHRvIGEgZGl2aXNvciBvZiB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW5cblwKLWZyYW1lcyBpbiBhbiBhbmltYXRpb24uIjsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLmdldGJ1c3l3YWl0aW50ZXJ2YWwgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmV0dXJuIHRoZSBjdXJyZW50IGJ1c3ktd2FpdCBpbnRlcnZhbCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlkMDllZWUwMjZlOTY5NzEgaW5wdXQ9YTY5NTg3OGQyZDU3NmE4NF0qLwogewotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoVGtpbnRlcl9idXN5d2FpdGludGVydmFsKTsKKyAgICByZXR1cm4gVGtpbnRlcl9idXN5d2FpdGludGVydmFsOwogfQogCi1zdGF0aWMgY2hhciBnZXRidXN5d2FpdGludGVydmFsX2RvY1tdID0KLSJnZXRidXN5d2FpdGludGVydmFsKCkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgY3VycmVudCBidXN5LXdhaXQgaW50ZXJ2YWwgYmV0d2VlbiBzdWNjZXNzaXZlXG5cCi1jYWxscyB0byBUY2xfRG9PbmVFdmVudCBpbiBhIHRocmVhZGVkIFB5dGhvbiBpbnRlcnByZXRlci4iOworI2luY2x1ZGUgImNsaW5pYy9fdGtpbnRlci5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiBUa3R0X21ldGhvZHNbXSA9Cit7CisgICAgX1RLSU5URVJfVEtUSU1FUlRPS0VOX0RFTEVURVRJTUVSSEFORExFUl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBUa3R0X1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZGVhbGxvYywgVGt0dF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfcmVwciwgVGt0dF9SZXByfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgVGt0dF9tZXRob2RzfSwKKyAgICB7MCwgMH0KK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBUa3R0X1R5cGVfc3BlYyA9IHsKKyAgICAiX3RraW50ZXIudGt0aW1lcnRva2VuIiwKKyAgICBzaXplb2YoVGt0dE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgVGt0dF9UeXBlX3Nsb3RzLAorfTsKKworCisvKioqKiBUa2FwcCBNZXRob2QgTGlzdCAqKioqLworCitzdGF0aWMgUHlNZXRob2REZWYgVGthcHBfbWV0aG9kc1tdID0KK3sKKyAgICBfVEtJTlRFUl9US0FQUF9XSUxMRElTUEFUQ0hfTUVUSE9EREVGCisgICAgeyJ3YW50b2JqZWN0cyIsICAgICAgICAgICAgVGthcHBfV2FudE9iamVjdHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJjYWxsIiwgICAgICAgICAgICAgICAgICAgVGthcHBfQ2FsbCwgTUVUSF9WQVJBUkdTfSwKKyAgICBfVEtJTlRFUl9US0FQUF9FVkFMX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VWQUxGSUxFX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX1JFQ09SRF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9BRERFUlJJTkZPX01FVEhPRERFRgorICAgIHsic2V0dmFyIiwgICAgICAgICAgICAgICAgIFRrYXBwX1NldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Imdsb2JhbHNldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbFNldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImdldHZhciIsICAgICAgIFRrYXBwX0dldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Imdsb2JhbGdldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbEdldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InVuc2V0dmFyIiwgICAgIFRrYXBwX1Vuc2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZ2xvYmFsdW5zZXR2YXIiLCAgICAgVGthcHBfR2xvYmFsVW5zZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgX1RLSU5URVJfVEtBUFBfR0VUSU5UX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0dFVERPVUJMRV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9HRVRCT09MRUFOX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VYUFJTVFJJTkdfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRVhQUkxPTkdfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRVhQUkRPVUJMRV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9FWFBSQk9PTEVBTl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9TUExJVExJU1RfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfU1BMSVRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfQ1JFQVRFQ09NTUFORF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9ERUxFVEVDT01NQU5EX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0NSRUFURVRJTUVSSEFORExFUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9NQUlOTE9PUF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9ET09ORUVWRU5UX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX1FVSVRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfSU5URVJQQUREUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9MT0FEVEtfTUVUSE9EREVGCisgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgTlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBUa2FwcF9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RlYWxsb2MsIFRrYXBwX0RlYWxsb2N9LAorICAgIHtQeV90cF9tZXRob2RzLCBUa2FwcF9tZXRob2RzfSwKKyAgICB7MCwgMH0KK307CisKKworc3RhdGljIFB5VHlwZV9TcGVjIFRrYXBwX1R5cGVfc3BlYyA9IHsKKyAgICAiX3RraW50ZXIudGthcHAiLAorICAgIHNpemVvZihUa2FwcE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgVGthcHBfVHlwZV9zbG90cywKK307CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVNZXRob2RzW10gPQogewotICAgIHsiX2ZsYXR0ZW4iLCAgICAgICAgICAgVGtpbnRlcl9GbGF0dGVuLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY3JlYXRlIiwgICAgICAgICAgICAgVGtpbnRlcl9DcmVhdGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzZXRidXN5d2FpdGludGVydmFsIixUa2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWwsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldGJ1c3l3YWl0aW50ZXJ2YWxfZG9jfSwKLSAgICB7ImdldGJ1c3l3YWl0aW50ZXJ2YWwiLChQeUNGdW5jdGlvbilUa2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgZ2V0YnVzeXdhaXRpbnRlcnZhbF9kb2N9LAorICAgIF9US0lOVEVSX19GTEFUVEVOX01FVEhPRERFRgorICAgIF9US0lOVEVSX0NSRUFURV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9TRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRgorICAgIF9US0lOVEVSX0dFVEJVU1lXQUlUSU5URVJWQUxfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICAgICBOVUxMfQogfTsKIApAQCAtMzM0NSw4ICszNjAyLDQwIEBACiAgICAgdWV4ZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgLTEpOwogICAgIGlmICh1ZXhlKSB7CiAgICAgICAgIGNleGUgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHVleGUpOwotICAgICAgICBpZiAoY2V4ZSkKKyAgICAgICAgaWYgKGNleGUpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBpbnQgc2V0X3ZhciA9IDA7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyX3BhdGg7CisgICAgICAgICAgICB3Y2hhcl90ICp3Y3NfcGF0aDsKKyAgICAgICAgICAgIERXT1JEIHJldDsKKworICAgICAgICAgICAgcmV0ID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwsIDApOworCisgICAgICAgICAgICBpZiAoIXJldCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICAgICAgc3RyX3BhdGggPSBfZ2V0X3RjbF9saWJfcGF0aCgpOworICAgICAgICAgICAgICAgIGlmIChzdHJfcGF0aCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdHJfcGF0aCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHdjc19wYXRoID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoc3RyX3BhdGgsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBpZiAod2NzX3BhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIHdjc19wYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0X3ZhciA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19Bc1N0cmluZyhjZXhlKSk7CisKKyAgICAgICAgICAgIGlmIChzZXRfdmFyKSB7CisgICAgICAgICAgICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NzX3BhdGgpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FzU3RyaW5nKGNleGUpKTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihjZXhlKTsKICAgICAgICAgUHlfREVDUkVGKHVleGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMgYi9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCmluZGV4IDQwOWY0ZGIuLjIyNmE0NzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwpAQCAtMTYsMTQgKzE2LDExIEBACiAjICBkZWZpbmUgVFJBQ0VfREVCVUcKICNlbmRpZgogCi0jZGVmaW5lIF9TVFIoVkFMKSAjVkFMCi0jZGVmaW5lIFNUUihWQUwpIF9TVFIoVkFMKQotCiAvKiBQcm90ZWN0ZWQgYnkgdGhlIEdJTCAqLwogc3RhdGljIHN0cnVjdCB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgbWVtOwotICAgIFB5TWVtQWxsb2NhdG9yIHJhdzsKLSAgICBQeU1lbUFsbG9jYXRvciBvYmo7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBtZW07CisgICAgUHlNZW1BbGxvY2F0b3JFeCByYXc7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBvYmo7CiB9IGFsbG9jYXRvcnM7CiAKIHN0YXRpYyBzdHJ1Y3QgewpAQCAtODIsNyArNzksNyBAQAogICAgICAgICAoc2l6ZW9mKHRyYWNlYmFja190KSArIHNpemVvZihmcmFtZV90KSAqIChORlJBTUUgLSAxKSkKIAogI2RlZmluZSBNQVhfTkZSQU1FIFwKLSAgICAgICAgKChJTlRfTUFYIC0gc2l6ZW9mKHRyYWNlYmFja190KSkgLyBzaXplb2YoZnJhbWVfdCkgKyAxKQorICAgICAgICAoKElOVF9NQVggLSAoaW50KXNpemVvZih0cmFjZWJhY2tfdCkpIC8gKGludClzaXplb2YoZnJhbWVfdCkgKyAxKQogCiBzdGF0aWMgUHlPYmplY3QgKnVua25vd25fZmlsZW5hbWUgPSBOVUxMOwogc3RhdGljIHRyYWNlYmFja190IHRyYWNlbWFsbG9jX2VtcHR5X3RyYWNlYmFjazsKQEAgLTQ3NiwxNyArNDczLDIyIEBACiB9CiAKIHN0YXRpYyB2b2lkKgotdHJhY2VtYWxsb2NfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCit0cmFjZW1hbGxvY19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAgICAgdm9pZCAqcHRyOwogCi0gICAgcHRyID0gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBzaXplKTsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU0laRV9NQVggLyBlbHNpemUpOworCisgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgIHB0ciA9IGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CisgICAgZWxzZQorICAgICAgICBwdHIgPSBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIG5lbGVtICogZWxzaXplKTsKICAgICBpZiAocHRyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0ciwgc2l6ZSkgPCAwKSB7CisgICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKICAgICAgICAgLyogRmFpbGVkIHRvIGFsbG9jYXRlIGEgdHJhY2UgZm9yIHRoZSBuZXcgbWVtb3J5IGJsb2NrICovCiAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKQEAgLTQ5OSw3ICs1MDEsNyBAQAogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAgICAgdm9pZCAqcHRyMjsKIAogICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKQEAgLTU0NCw3ICs1NDYsNyBAQAogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAKICAgICBpZiAocHRyID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKQEAgLTU2MCwxMyArNTYyLDE2IEBACiB9CiAKIHN0YXRpYyB2b2lkKgotdHJhY2VtYWxsb2NfbWFsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfYWxsb2NfZ2lsKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICB2b2lkICpwdHI7CiAKICAgICBpZiAoZ2V0X3JlZW50cmFudCgpKSB7Ci0gICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKLSAgICAgICAgcmV0dXJuIGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgc2l6ZSk7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIG5lbGVtICogZWxzaXplKTsKICAgICB9CiAKICAgICAvKiBJZ25vcmUgcmVlbnRyYW50IGNhbGwuIFB5T2JqZXRfTWFsbG9jKCkgY2FsbHMgUHlNZW1fTWFsbG9jKCkgZm9yCkBAIC01NzQsMTMgKzU3OSwyNSBAQAogICAgICAgIGFsbG9jYXRpb24gdHdpY2UuICovCiAgICAgc2V0X3JlZW50cmFudCgxKTsKIAotICAgIHB0ciA9IHRyYWNlbWFsbG9jX21hbGxvYyhjdHgsIHNpemUpOworICAgIHB0ciA9IHRyYWNlbWFsbG9jX2FsbG9jKHVzZV9jYWxsb2MsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiAKICAgICBzZXRfcmVlbnRyYW50KDApOwogICAgIHJldHVybiBwdHI7CiB9CiAKIHN0YXRpYyB2b2lkKgordHJhY2VtYWxsb2NfbWFsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBzaXplKQoreworICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMCwgY3R4LCAxLCBzaXplKTsKK30KKworc3RhdGljIHZvaWQqCit0cmFjZW1hbGxvY19jYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKworc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jX2dpbCh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIHZvaWQgKnB0cjI7CkBAIC01OTAsNyArNjA3LDcgQEAKICAgICAgICAgICAgRXhhbXBsZTogUHlNZW1fUmF3UmVhbGxvYygpIGlzIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHB5bWFsbG9jCiAgICAgICAgICAgIChfUHlPYmplY3RfTWFsbG9jKCkgYW5kICBfUHlPYmplY3RfUmVhbGxvYygpKSB0byBhbGxvY2F0ZSBhIG5ldwogICAgICAgICAgICBhcmVuYSAobmV3X2FyZW5hKCkpLiAqLwotICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3IgKiljdHg7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAKICAgICAgICAgcHRyMiA9IGFsbG9jLT5yZWFsbG9jKGFsbG9jLT5jdHgsIHB0ciwgbmV3X3NpemUpOwogICAgICAgICBpZiAocHRyMiAhPSBOVUxMICYmIHB0ciAhPSBOVUxMKSB7CkBAIC02MTQsNyArNjMxLDcgQEAKIAogI2lmZGVmIFRSQUNFX1JBV19NQUxMT0MKIHN0YXRpYyB2b2lkKgotdHJhY2VtYWxsb2NfcmF3X21hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfcmF3X2FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsX3N0YXRlOwpAQCAtNjIyLDggKzYzOSwxMSBAQAogICAgIHZvaWQgKnB0cjsKIAogICAgIGlmIChnZXRfcmVlbnRyYW50KCkpIHsKLSAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OwotICAgICAgICByZXR1cm4gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBzaXplKTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKKyAgICAgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgICAgICByZXR1cm4gYWxsb2MtPmNhbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSwgZWxzaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0gKiBlbHNpemUpOwogICAgIH0KIAogICAgIC8qIElnbm9yZSByZWVudHJhbnQgY2FsbC4gUHlHSUxTdGF0ZV9FbnN1cmUoKSBtYXkgY2FsbCBQeU1lbV9SYXdNYWxsb2MoKQpAQCAtNjMzLDEwICs2NTMsMTAgQEAKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgZ2lsX3N0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKLSAgICBwdHIgPSB0cmFjZW1hbGxvY19tYWxsb2MoY3R4LCBzaXplKTsKKyAgICBwdHIgPSB0cmFjZW1hbGxvY19hbGxvYyh1c2VfY2FsbG9jLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxfc3RhdGUpOwogI2Vsc2UKLSAgICBwdHIgPSB0cmFjZW1hbGxvY19tYWxsb2MoY3R4LCBzaXplKTsKKyAgICBwdHIgPSB0cmFjZW1hbGxvY19hbGxvYyh1c2VfY2FsbG9jLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogI2VuZGlmCiAKICAgICBzZXRfcmVlbnRyYW50KDApOwpAQCAtNjQ0LDYgKzY2NCwxOCBAQAogfQogCiBzdGF0aWMgdm9pZCoKK3RyYWNlbWFsbG9jX3Jhd19tYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDAsIGN0eCwgMSwgc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgordHJhY2VtYWxsb2NfcmF3X2NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtNjUzLDcgKzY4NSw3IEBACiAKICAgICBpZiAoZ2V0X3JlZW50cmFudCgpKSB7CiAgICAgICAgIC8qIFJlZW50cmFudCBjYWxsIHRvIFB5TWVtX1Jhd1JlYWxsb2MoKS4gKi8KLSAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogCiAgICAgICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKIApAQCAtODMxLDcgKzg2Myw3IEBACiBzdGF0aWMgaW50CiB0cmFjZW1hbGxvY19zdGFydChpbnQgbWF4X25mcmFtZSkKIHsKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogICAgIHNpemVfdCBzaXplOwogCiAgICAgaWYgKHRyYWNlbWFsbG9jX2luaXQoKSA8IDApCkBAIC04NTYsNiArODg4LDcgQEAKIAogI2lmZGVmIFRSQUNFX1JBV19NQUxMT0MKICAgICBhbGxvYy5tYWxsb2MgPSB0cmFjZW1hbGxvY19yYXdfbWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IHRyYWNlbWFsbG9jX3Jhd19jYWxsb2M7CiAgICAgYWxsb2MucmVhbGxvYyA9IHRyYWNlbWFsbG9jX3Jhd19yZWFsbG9jOwogICAgIGFsbG9jLmZyZWUgPSB0cmFjZW1hbGxvY19mcmVlOwogCkBAIC04NjUsNiArODk4LDcgQEAKICNlbmRpZgogCiAgICAgYWxsb2MubWFsbG9jID0gdHJhY2VtYWxsb2NfbWFsbG9jX2dpbDsKKyAgICBhbGxvYy5jYWxsb2MgPSB0cmFjZW1hbGxvY19jYWxsb2NfZ2lsOwogICAgIGFsbG9jLnJlYWxsb2MgPSB0cmFjZW1hbGxvY19yZWFsbG9jX2dpbDsKICAgICBhbGxvYy5mcmVlID0gdHJhY2VtYWxsb2NfZnJlZTsKIApAQCAtMTE5NSw3ICsxMjI5LDcgQEAKICAgICBpZiAobmZyYW1lIDwgMSB8fCBuZnJhbWUgPiBNQVhfTkZSQU1FKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInRoZSBudW1iZXIgb2YgZnJhbWVzIG11c3QgYmUgaW4gcmFuZ2UgWzE7ICVpXSIsCi0gICAgICAgICAgICAgICAgICAgICAoaW50KU1BWF9ORlJBTUUpOworICAgICAgICAgICAgICAgICAgICAgTUFYX05GUkFNRSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBuZnJhbWVfaW50ID0gUHlfU0FGRV9ET1dOQ0FTVChuZnJhbWUsIFB5X3NzaXplX3QsIGludCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193ZWFrcmVmLmMgYi9Nb2R1bGVzL193ZWFrcmVmLmMKaW5kZXggZGE1ODkzMS4uN2M5OWQ3ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fd2Vha3JlZi5jCisrKyBiL01vZHVsZXMvX3dlYWtyZWYuYwpAQCAtOSw2ICs5LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWZmZWM3M2I4NTg0NjU5NmRdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fd2Vha3JlZi5jLmgiCisKIC8qW2NsaW5pYyBpbnB1dF0KIAogX3dlYWtyZWYuZ2V0d2Vha3JlZmNvdW50IC0+IFB5X3NzaXplX3QKQEAgLTE5LDM2ICsyMSw5IEBACiBSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gJ29iamVjdCcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19fLAotImdldHdlYWtyZWZjb3VudCgkbW9kdWxlLCBvYmplY3QsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gXCdvYmplY3RcJy4iKTsKLQotI2RlZmluZSBfV0VBS1JFRl9HRVRXRUFLUkVGQ09VTlRfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHdlYWtyZWZjb3VudCIsIChQeUNGdW5jdGlvbilfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQsIE1FVEhfTywgX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfX30sCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV93ZWFrcmVmX2dldHdlYWtyZWZjb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKLQotICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeV9zc2l6ZV90CiBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzMmVlZGJmZDdkNjllMTAgaW5wdXQ9Y2VkYjY5NzExYjZhMjUwN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZhNmFkMGI5ODI4NWU0NjggaW5wdXQ9Y2VkYjY5NzExYjZhMjUwN10qLwogewogICAgIFB5V2Vha1JlZmVyZW5jZSAqKmxpc3Q7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3dpbmFwaS5jIGIvTW9kdWxlcy9fd2luYXBpLmMKaW5kZXggZDQ3MmM5ZS4uM2U3ZjE4NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fd2luYXBpLmMKKysrIGIvTW9kdWxlcy9fd2luYXBpLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNkZWZpbmUgV0lORE9XU19MRUFOX0FORF9NRUFOCiAjaW5jbHVkZSAid2luZG93cy5oIgogI2luY2x1ZGUgPGNydGRiZy5oPgorI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKIAogI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQogI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBcCkBAIC01Nyw4ICs1OCw2IEBACiAKICNkZWZpbmUgRl9IQU5ETEUgRl9QT0lOVEVSCiAjZGVmaW5lIEZfRFdPUkQgImsiCi0jZGVmaW5lIEZfQk9PTCAiaSIKLSNkZWZpbmUgRl9VSU5UICJJIgogCiAjZGVmaW5lIFRfSEFORExFIFRfUE9JTlRFUgogCkBAIC0xNDYsMTcgKzE0NSw2OCBAQAogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF93aW5hcGkKK2NsYXNzIF93aW5hcGkuT3ZlcmxhcHBlZCAiT3ZlcmxhcHBlZE9iamVjdCAqIiAiJk92ZXJsYXBwZWRUeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzEzZDNmNWZkMWRhYmI4NF0qLworCisvKltweXRob24gaW5wdXRdCitkZWYgY3JlYXRlX2NvbnZlcnRlcih0eXBlXywgZm9ybWF0X3VuaXQpOgorICAgIG5hbWUgPSB0eXBlXyArICdfY29udmVydGVyJworICAgICMgcmVnaXN0ZXJlZCB1cG9uIGNyZWF0aW9uIGJ5IENDb252ZXJ0ZXIncyBtZXRhY2xhc3MKKyAgICB0eXBlKG5hbWUsIChDQ29udmVydGVyLCksIHsndHlwZSc6IHR5cGVfLCAnZm9ybWF0X3VuaXQnOiBmb3JtYXRfdW5pdH0pCisKKyMgZm9ybWF0IHVuaXQgZGlmZmVycyBiZXR3ZWVuIHBsYXRmb3JtcyBmb3IgdGhlc2UKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0hBTkRMRScsICciIEZfSEFORExFICInKQorY3JlYXRlX2NvbnZlcnRlcignSE1PRFVMRScsICciIEZfSEFORExFICInKQorY3JlYXRlX2NvbnZlcnRlcignTFBTRUNVUklUWV9BVFRSSUJVVEVTJywgJyIgRl9QT0lOVEVSICInKQorCitjcmVhdGVfY29udmVydGVyKCdCT09MJywgJ2knKSAjIEZfQk9PTCB1c2VkIHByZXZpb3VzbHkgKGFsd2F5cyAnaScpCitjcmVhdGVfY29udmVydGVyKCdEV09SRCcsICdrJykgIyBGX0RXT1JEIGlzIGFsd2F5cyAiayIgKHdoaWNoIGlzIG11Y2ggc2hvcnRlcikKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0xQQ1RTVFInLCAncycpCitjcmVhdGVfY29udmVydGVyKCdMUFdTVFInLCAndScpCitjcmVhdGVfY29udmVydGVyKCdVSU5UJywgJ0knKSAjIEZfVUlOVCB1c2VkIHByZXZpb3VzbHkgKGFsd2F5cyAnSScpCisKK2NsYXNzIEhBTkRMRV9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnSEFORExFJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSIsIGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ2lmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpXG4gICAgUHlfUkVUVVJOX05PTkU7XG4nKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7XG4nKQorCitjbGFzcyBEV09SRF9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnRFdPUkQnCisKKyAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKKyAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCisgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCIsIGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTtcbicpCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zNzQwNzY5Nzk1OTZlYmJhXSovCisKKyNpbmNsdWRlICJjbGluaWMvX3dpbmFwaS5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuT3ZlcmxhcHBlZC5HZXRPdmVybGFwcGVkUmVzdWx0CisKKyAgICB3YWl0OiBib29sCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0KE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp3YWl0b2JqKQorX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBpbnQgd2FpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZGQwYzFlZDY1MThjZDAzIGlucHV0PTE5NDUwNWVlOGUwZTM1NjVdKi8KIHsKLSAgICBpbnQgd2FpdDsKICAgICBCT09MIHJlczsKICAgICBEV09SRCB0cmFuc2ZlcnJlZCA9IDA7CiAgICAgRFdPUkQgZXJyOwogCi0gICAgd2FpdCA9IFB5T2JqZWN0X0lzVHJ1ZSh3YWl0b2JqKTsKLSAgICBpZiAod2FpdCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBHZXRPdmVybGFwcGVkUmVzdWx0KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQsICZ0cmFuc2ZlcnJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQgIT0gMCk7CkBAIC0xODUsOCArMjM1LDEzIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIklJIiwgKHVuc2lnbmVkKSB0cmFuc2ZlcnJlZCwgKHVuc2lnbmVkKSBlcnIpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLk92ZXJsYXBwZWQuZ2V0YnVmZmVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1vdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTVhM2VjZWVmYWUwZjc0OCBpbnB1dD0zNDdmY2ZkNTZiNGNlYWJkXSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoIXNlbGYtPmNvbXBsZXRlZCkgewpAQCAtMjAwLDggKzI1NSwxMyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuT3ZlcmxhcHBlZC5jYW5jZWwKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW92ZXJsYXBwZWRfY2FuY2VsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCitfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX2ltcGwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mY2I5YWI1ZGY0ZWJkYWU1IGlucHV0PWNiZjNkYTE0MjI5MDAzOWZdKi8KIHsKICAgICBCT09MIHJlcyA9IFRSVUU7CiAKQEAgLTIyMiwxMCArMjgyLDkgQEAKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIG92ZXJsYXBwZWRfbWV0aG9kc1tdID0gewotICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCi0gICAgeyJnZXRidWZmZXIiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgTlVMTH0sCi0gICAgeyJjYW5jZWwiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgX1dJTkFQSV9PVkVSTEFQUEVEX0dFVE9WRVJMQVBQRURSRVNVTFRfTUVUSE9EREVGCisgICAgX1dJTkFQSV9PVkVSTEFQUEVEX0dFVEJVRkZFUl9NRVRIT0RERUYKKyAgICBfV0lOQVBJX09WRVJMQVBQRURfQ0FOQ0VMX01FVEhPRERFRgogICAgIHtOVUxMfQogfTsKIApAQCAtMjk5LDIyICszNTgsMjMgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiB3aW5kb3dzIEFQSSBmdW5jdGlvbnMgKi8KIAotUHlEb2NfU1RSVkFSKENsb3NlSGFuZGxlX2RvYywKLSJDbG9zZUhhbmRsZShoYW5kbGUpIC0+IE5vbmVcblwKLVxuXAotQ2xvc2UgaGFuZGxlLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DbG9zZUhhbmRsZQorCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICAvCisKK0Nsb3NlIGhhbmRsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNTQ4NTk1YzcxY2I0YmY3IGlucHV0PTdmMGU0YWMzNmUwMzUyYjhdKi8KIHsKLSAgICBIQU5ETEUgaE9iamVjdDsKICAgICBCT09MIHN1Y2Nlc3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3VjY2VzcyA9IENsb3NlSGFuZGxlKGhPYmplY3QpOworICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoYW5kbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXN1Y2Nlc3MpCkBAIC0zMjMsMjggKzM4MywyOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgb3ZlcmxhcHBlZCBhcyB1c2Vfb3ZlcmxhcHBlZDogaW50KGNfZGVmYXVsdD0nMCcpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZDNiMTY1ZDFiY2E5NWEgaW5wdXQ9ZWRjODNkYTAwN2ViZjNiZV0qLwogewotICAgIEhBTkRMRSBoTmFtZWRQaXBlOwotICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAgICAgQk9PTCBzdWNjZXNzOwogICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgInwiIEZfQk9PTCwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmdXNlX292ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgewotICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaE5hbWVkUGlwZSk7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoYW5kbGUpOwogICAgICAgICBpZiAoIW92ZXJsYXBwZWQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3VjY2VzcyA9IENvbm5lY3ROYW1lZFBpcGUoaE5hbWVkUGlwZSwKKyAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtMzY4LDk0ICs0MjksMjM4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZUZpbGUgLT4gSEFORExFCisKKyAgICBmaWxlX25hbWU6IExQQ1RTVFIKKyAgICBkZXNpcmVkX2FjY2VzczogRFdPUkQKKyAgICBzaGFyZV9tb2RlOiBEV09SRAorICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXM6IExQU0VDVVJJVFlfQVRUUklCVVRFUworICAgIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uOiBEV09SRAorICAgIGZsYWdzX2FuZF9hdHRyaWJ1dGVzOiBEV09SRAorICAgIHRlbXBsYXRlX2ZpbGU6IEhBTkRMRQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgRFdPUkQgc2hhcmVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBmbGFnc19hbmRfYXR0cmlidXRlcywgSEFORExFIHRlbXBsYXRlX2ZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzZlMWQ3OGY4YWZmZDEwYyBpbnB1dD02NDIzYzNlNDAzNzJkYmQ1XSovCiB7Ci0gICAgTFBDVFNUUiBscEZpbGVOYW1lOwotICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKLSAgICBEV09SRCBkd1NoYXJlTW9kZTsKLSAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7Ci0gICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOwotICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKKyAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZUp1bmN0aW9uCisKKyAgICBzcmNfcGF0aDogTFBXU1RSCisgICAgZHN0X3BhdGg6IExQV1NUUgorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQV1NUUiBzcmNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZHN0X3BhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWNjYWU5MzY0ZTQ2ZjZkYSBpbnB1dD04Y2QxZjk5NjRiNmUzZDM2XSovCiB7Ci0gICAgTFBDVFNUUiBscE5hbWU7Ci0gICAgRFdPUkQgZHdPcGVuTW9kZTsKLSAgICBEV09SRCBkd1BpcGVNb2RlOwotICAgIERXT1JEIG5NYXhJbnN0YW5jZXM7Ci0gICAgRFdPUkQgbk91dEJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkluQnVmZmVyU2l6ZTsKLSAgICBEV09SRCBuRGVmYXVsdFRpbWVPdXQ7Ci0gICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOworICAgIC8qIFByaXZpbGVnZSBhZGp1c3RtZW50ICovCisgICAgSEFORExFIHRva2VuID0gTlVMTDsKKyAgICBUT0tFTl9QUklWSUxFR0VTIHRwOworCisgICAgLyogUmVwYXJzZSBkYXRhIGJ1ZmZlciAqLworICAgIGNvbnN0IFVTSE9SVCBwcmVmaXhfbGVuID0gNDsKKyAgICBVU0hPUlQgcHJpbnRfbGVuID0gMDsKKyAgICBVU0hPUlQgcmRiX3NpemUgPSAwOworICAgIFBSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CisKKyAgICAvKiBKdW5jdGlvbiBwb2ludCBjcmVhdGlvbiAqLworICAgIEhBTkRMRSBqdW5jdGlvbiA9IE5VTEw7CisgICAgRFdPUkQgcmV0ID0gMDsKKworICAgIGlmIChzcmNfcGF0aCA9PSBOVUxMIHx8IGRzdF9wYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihFUlJPUl9JTlZBTElEX1BBUkFNRVRFUik7CisKKyAgICBpZiAod2NzbmNtcChzcmNfcGF0aCwgTCJcXD8/XFwiLCBwcmVmaXhfbGVuKSA9PSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpOworCisgICAgLyogQWRqdXN0IHByaXZpbGVnZXMgdG8gYWxsb3cgcmV3cml0aW5nIGRpcmVjdG9yeSBlbnRyeSBhcyBhCisgICAgICAganVuY3Rpb24gcG9pbnQuICovCisgICAgaWYgKCFPcGVuUHJvY2Vzc1Rva2VuKEdldEN1cnJlbnRQcm9jZXNzKCksIFRPS0VOX0FESlVTVF9QUklWSUxFR0VTLCAmdG9rZW4pKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBpZiAoIUxvb2t1cFByaXZpbGVnZVZhbHVlKE5VTEwsIFNFX1JFU1RPUkVfTkFNRSwgJnRwLlByaXZpbGVnZXNbMF0uTHVpZCkpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIHRwLlByaXZpbGVnZUNvdW50ID0gMTsKKyAgICB0cC5Qcml2aWxlZ2VzWzBdLkF0dHJpYnV0ZXMgPSBTRV9QUklWSUxFR0VfRU5BQkxFRDsKKyAgICBpZiAoIUFkanVzdFRva2VuUHJpdmlsZWdlcyh0b2tlbiwgRkFMU0UsICZ0cCwgc2l6ZW9mKFRPS0VOX1BSSVZJTEVHRVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNXKHNyY19wYXRoKSA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgLyogU3RvcmUgdGhlIGFic29sdXRlIGxpbmsgdGFyZ2V0IHBhdGggbGVuZ3RoIGluIHByaW50X2xlbi4gKi8KKyAgICBwcmludF9sZW4gPSAoVVNIT1JUKUdldEZ1bGxQYXRoTmFtZVcoc3JjX3BhdGgsIDAsIE5VTEwsIE5VTEwpOworICAgIGlmIChwcmludF9sZW4gPT0gMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgLyogTlVMIHRlcm1pbmF0b3Igc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHByaW50X2xlbi4gKi8KKyAgICAtLXByaW50X2xlbjsKKworICAgIC8qIFJFUEFSU0VfREFUQV9CVUZGRVIgdXNhZ2UgaXMgaGVhdmlseSB1bmRlci1kb2N1bWVudGVkLCBlc3BlY2lhbGx5IGZvcgorICAgICAgIGp1bmN0aW9uIHBvaW50cy4gSGVyZSdzIHdoYXQgSSd2ZSBsZWFybmVkIGFsb25nIHRoZSB3YXk6CisgICAgICAgLSBBIGp1bmN0aW9uIHBvaW50IGhhcyB0d28gY29tcG9uZW50czogYSBwcmludCBuYW1lIGFuZCBhIHN1YnN0aXR1dGUKKyAgICAgICAgIG5hbWUuIFRoZXkgYm90aCBkZXNjcmliZSB0aGUgbGluayB0YXJnZXQsIGJ1dCB0aGUgc3Vic3RpdHV0ZSBuYW1lIGlzCisgICAgICAgICB0aGUgcGh5c2ljYWwgdGFyZ2V0IGFuZCB0aGUgcHJpbnQgbmFtZSBpcyBzaG93biBpbiBkaXJlY3RvcnkgbGlzdGluZ3MuCisgICAgICAgLSBUaGUgcHJpbnQgbmFtZSBtdXN0IGJlIGEgbmF0aXZlIG5hbWUsIHByZWZpeGVkIHdpdGggIlw/P1wiLgorICAgICAgIC0gQm90aCBuYW1lcyBhcmUgc3RvcmVkIGFmdGVyIGVhY2ggb3RoZXIgaW4gdGhlIHNhbWUgYnVmZmVyICh0aGUKKyAgICAgICAgIFBhdGhCdWZmZXIpIGFuZCBib3RoIG11c3QgYmUgTlVMLXRlcm1pbmF0ZWQuCisgICAgICAgLSBUaGVyZSBhcmUgZm91ciBtZW1iZXJzIGRlZmluaW5nIHRoZWlyIHJlc3BlY3RpdmUgb2Zmc2V0IGFuZCBsZW5ndGgKKyAgICAgICAgIGluc2lkZSBQYXRoQnVmZmVyOiBTdWJzdGl0dXRlTmFtZU9mZnNldCwgU3Vic3RpdHV0ZU5hbWVMZW5ndGgsCisgICAgICAgICBQcmludE5hbWVPZmZzZXQgYW5kIFByaW50TmFtZUxlbmd0aC4KKyAgICAgICAtIFRoZSB0b3RhbCBzaXplIHdlIG5lZWQgdG8gYWxsb2NhdGUgZm9yIHRoZSBSRVBBUlNFX0RBVEFfQlVGRkVSLCB0aHVzLAorICAgICAgICAgaXMgdGhlIHN1bSBvZjoKKyAgICAgICAgIC0gdGhlIGZpeGVkIGhlYWRlciBzaXplIChSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFKQorICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgTW91bnRQb2ludFJlcGFyc2VCdWZmZXIgbWVtYmVyIHdpdGhvdXQgdGhlIFBhdGhCdWZmZXIKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHByZWZpeCAoIlw/P1wiKSBpbiBieXRlcworICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgcHJpbnQgbmFtZSBpbiBieXRlcworICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgc3Vic3RpdHV0ZSBuYW1lIGluIGJ5dGVzCisgICAgICAgICAtIHRoZSBzaXplIG9mIHR3byBOVUwgdGVybWluYXRvcnMgaW4gYnl0ZXMgKi8KKyAgICByZGJfc2l6ZSA9IFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKworICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlcikgLQorICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyKSArCisgICAgICAgIC8qIFR3byArMSdzIGZvciBOVUwgdGVybWluYXRvcnMuICovCisgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSArIHByaW50X2xlbiArIDEpICogc2l6ZW9mKFdDSEFSKTsKKyAgICByZGIgPSAoUFJFUEFSU0VfREFUQV9CVUZGRVIpUHlNZW1fUmF3TWFsbG9jKHJkYl9zaXplKTsKKyAgICBpZiAocmRiID09IE5VTEwpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIG1lbXNldChyZGIsIDAsIHJkYl9zaXplKTsKKyAgICByZGItPlJlcGFyc2VUYWcgPSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVDsKKyAgICByZGItPlJlcGFyc2VEYXRhTGVuZ3RoID0gcmRiX3NpemUgLSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVPZmZzZXQgPSAwOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVMZW5ndGggPQorICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbikgKiBzaXplb2YoV0NIQVIpOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUHJpbnROYW1lT2Zmc2V0ID0KKyAgICAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZUxlbmd0aCArIHNpemVvZihXQ0hBUik7CisgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QcmludE5hbWVMZW5ndGggPSBwcmludF9sZW4gKiBzaXplb2YoV0NIQVIpOworCisgICAgLyogU3RvcmUgdGhlIGZ1bGwgbmF0aXZlIHBhdGggb2YgbGluayB0YXJnZXQgYXQgdGhlIHN1YnN0aXR1dGUgbmFtZQorICAgICAgIG9mZnNldCAoMCkuICovCisgICAgd2NzY3B5KHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlciwgTCJcXD8/XFwiKTsKKyAgICBpZiAoR2V0RnVsbFBhdGhOYW1lVyhzcmNfcGF0aCwgcHJpbnRfbGVuICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKyBwcmVmaXhfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpID09IDApCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIENvcHkgZXZlcnl0aGluZyBidXQgdGhlIG5hdGl2ZSBwcmVmaXggdG8gdGhlIHByaW50IG5hbWUgb2Zmc2V0LiAqLworICAgIHdjc2NweShyZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKworICAgICAgICAgICAgIHByZWZpeF9sZW4gKyBwcmludF9sZW4gKyAxLAorICAgICAgICAgICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlciArIHByZWZpeF9sZW4pOworCisgICAgLyogQ3JlYXRlIGEgZGlyZWN0b3J5IGZvciB0aGUganVuY3Rpb24gcG9pbnQuICovCisgICAgaWYgKCFDcmVhdGVEaXJlY3RvcnlXKGRzdF9wYXRoLCBOVUxMKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAganVuY3Rpb24gPSBDcmVhdGVGaWxlVyhkc3RfcGF0aCwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgTlVMTCwKKyAgICAgICAgT1BFTl9FWElTVElORywKKyAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVCB8IEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBpZiAoanVuY3Rpb24gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIE1ha2UgdGhlIGRpcmVjdG9yeSBlbnRyeSBhIGp1bmN0aW9uIHBvaW50LiAqLworICAgIGlmICghRGV2aWNlSW9Db250cm9sKGp1bmN0aW9uLCBGU0NUTF9TRVRfUkVQQVJTRV9QT0lOVCwgcmRiLCByZGJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmcmV0LCBOVUxMKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCitjbGVhbnVwOgorICAgIHJldCA9IEdldExhc3RFcnJvcigpOworCisgICAgQ2xvc2VIYW5kbGUodG9rZW4pOworICAgIENsb3NlSGFuZGxlKGp1bmN0aW9uKTsKKyAgICBQeU1lbV9SYXdGcmVlKHJkYik7CisKKyAgICBpZiAocmV0ICE9IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihyZXQpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ3JlYXRlTmFtZWRQaXBlIC0+IEhBTkRMRQorCisgICAgbmFtZTogTFBDVFNUUgorICAgIG9wZW5fbW9kZTogRFdPUkQKKyAgICBwaXBlX21vZGU6IERXT1JECisgICAgbWF4X2luc3RhbmNlczogRFdPUkQKKyAgICBvdXRfYnVmZmVyX3NpemU6IERXT1JECisgICAgaW5fYnVmZmVyX3NpemU6IERXT1JECisgICAgZGVmYXVsdF90aW1lb3V0OiBEV09SRAorICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXM6IExQU0VDVVJJVFlfQVRUUklCVVRFUworICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wZW5fbW9kZSwgRFdPUkQgcGlwZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtYXhfaW5zdGFuY2VzLCBEV09SRCBvdXRfYnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGluX2J1ZmZlcl9zaXplLCBEV09SRCBkZWZhdWx0X3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0Y2EyYTA2YTIxOWI1MjMgaW5wdXQ9NWE3MzUzMGI4NGQ4YmMzN10qLworewogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JECi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwTmFtZSwgJmR3T3Blbk1vZGUsICZkd1BpcGVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbk1heEluc3RhbmNlcywgJm5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbkluQnVmZmVyU2l6ZSwgJm5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gQ3JlYXRlTmFtZWRQaXBlKGxwTmFtZSwgZHdPcGVuTW9kZSwgZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbk1heEluc3RhbmNlcywgbk91dEJ1ZmZlclNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbkJ1ZmZlclNpemUsIG5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMpOworICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShuYW1lLCBvcGVuX21vZGUsIHBpcGVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2luc3RhbmNlcywgb3V0X2J1ZmZlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9idWZmZXJfc2l6ZSwgZGVmYXVsdF90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVB5RG9jX1NUUlZBUihDcmVhdGVQaXBlX2RvYywKLSJDcmVhdGVQaXBlKHBpcGVfYXR0cnMsIHNpemUpIC0+IChyZWFkX2hhbmRsZSwgd3JpdGVfaGFuZGxlKVxuXAotXG5cCi1DcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUsIGFuZCByZXR1cm4gaGFuZGxlcyB0byB0aGUgcmVhZCBhbmRcblwKLXdyaXRlIGVuZHMgb2YgdGhlIHBpcGUuXG5cCi1cblwKLXBpcGVfYXR0cnMgaXMgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ3JlYXRlUGlwZQorCisgICAgcGlwZV9hdHRyczogb2JqZWN0CisgICAgICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuCisgICAgc2l6ZTogRFdPUkQKKyAgICAvCisKK0NyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZS4KKworUmV0dXJucyBhIDItdHVwbGUgb2YgaGFuZGxlcywgdG8gdGhlIHJlYWQgYW5kIHdyaXRlIGVuZHMgb2YgdGhlIHBpcGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlUGlwZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX0NyZWF0ZVBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGlwZV9hdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVmOTlmM2I0MjIyYmM3OCBpbnB1dD1jNGYyY2ZhNTZlZjY4ZDkwXSovCiB7CiAgICAgSEFORExFIHJlYWRfcGlwZTsKICAgICBIQU5ETEUgd3JpdGVfcGlwZTsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIFB5T2JqZWN0KiBwaXBlX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KLSAgICBEV09SRCBzaXplOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIgRl9EV09SRCAiOkNyZWF0ZVBpcGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpcGVfYXR0cmlidXRlcywgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBDcmVhdGVQaXBlKCZyZWFkX3BpcGUsICZ3cml0ZV9waXBlLCBOVUxMLCBzaXplKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNTg2LDIwICs3OTEsMzYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKENyZWF0ZVByb2Nlc3NfZG9jLAotIkNyZWF0ZVByb2Nlc3MoYXBwX25hbWUsIGNtZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsXG5cCi0gICAgICAgICAgICAgICBpbmhlcml0LCBmbGFncywgZW52X21hcHBpbmcsIGN1cmRpcixcblwKLSAgICAgICAgICAgICAgIHN0YXJ0dXBfaW5mbykgLT4gKHByb2NfaGFuZGxlLCB0aHJlYWRfaGFuZGxlLFxuXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB0aWQpXG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuIFRoZSByZXR1cm5cblwKLXZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuXAotcHJvY2VzcyBJRCwgYW5kIHRocmVhZCBJRC5cblwKLVxuXAotcHJvY19hdHRycyBhbmQgdGhyZWFkX2F0dHJzIGFyZSBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DcmVhdGVQcm9jZXNzCisKKyAgICBhcHBsaWNhdGlvbl9uYW1lOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgY29tbWFuZF9saW5lOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgcHJvY19hdHRyczogb2JqZWN0CisgICAgICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuCisgICAgdGhyZWFkX2F0dHJzOiBvYmplY3QKKyAgICAgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS4KKyAgICBpbmhlcml0X2hhbmRsZXM6IEJPT0wKKyAgICBjcmVhdGlvbl9mbGFnczogRFdPUkQKKyAgICBlbnZfbWFwcGluZzogb2JqZWN0CisgICAgY3VycmVudF9kaXJlY3Rvcnk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICBzdGFydHVwX2luZm86IG9iamVjdAorICAgIC8KKworQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSwKK3Byb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICphcHBsaWNhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqY29tbWFuZF9saW5lLCBQeU9iamVjdCAqcHJvY19hdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0aHJlYWRfYXR0cnMsIEJPT0wgaW5oZXJpdF9oYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZmxhZ3MsIFB5T2JqZWN0ICplbnZfbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmN1cnJlbnRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0dXBfaW5mbykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzRiYjM1MGZmOWVkNGVmIGlucHV0PTRhNDNiMDUwMzhkNjM5YmJdKi8KIHsKICAgICBCT09MIHJlc3VsdDsKICAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOwpAQCAtNjA3LDI4ICs4MjgsNiBAQAogICAgIFB5T2JqZWN0KiBlbnZpcm9ubWVudDsKICAgICB3Y2hhcl90ICp3ZW52aXJvbm1lbnQ7CiAKLSAgICB3Y2hhcl90KiBhcHBsaWNhdGlvbl9uYW1lOwotICAgIHdjaGFyX3QqIGNvbW1hbmRfbGluZTsKLSAgICBQeU9iamVjdCogcHJvY2Vzc19hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgUHlPYmplY3QqIHRocmVhZF9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgQk9PTCBpbmhlcml0X2hhbmRsZXM7Ci0gICAgRFdPUkQgY3JlYXRpb25fZmxhZ3M7Ci0gICAgUHlPYmplY3QqIGVudl9tYXBwaW5nOwotICAgIHdjaGFyX3QqIGN1cnJlbnRfZGlyZWN0b3J5OwotICAgIFB5T2JqZWN0KiBzdGFydHVwX2luZm87Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PIiBGX0JPT0wgRl9EV09SRCAiT1pPOkNyZWF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWFuZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3NfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlYXRpb25fZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZW52X21hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnR1cF9pbmZvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mKHNpKSk7CiAgICAgc2kuY2IgPSBzaXplb2Yoc2kpOwogCkBAIC02ODIsNDEgKzg4MSwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3VGhyZWFkSWQpOwogfQogCi1QeURvY19TVFJWQVIoRHVwbGljYXRlSGFuZGxlX2RvYywKLSJEdXBsaWNhdGVIYW5kbGUoc291cmNlX3Byb2NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuXAotICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY19oYW5kbGUsIHRhcmdldF9oYW5kbGUsIGFjY2VzcyxcblwKLSAgICAgICAgICAgICAgICAgaW5oZXJpdFssIG9wdGlvbnNdKSAtPiBoYW5kbGVcblwKLVxuXAotUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG5cCi1cblwKLVRoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsXG5cCi1oYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG5cCi10aHJvdWdoIGJvdGggaGFuZGxlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuRHVwbGljYXRlSGFuZGxlIC0+IEhBTkRMRQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlOiBIQU5ETEUKKyAgICBzb3VyY2VfaGFuZGxlOiBIQU5ETEUKKyAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGU6IEhBTkRMRQorICAgIGRlc2lyZWRfYWNjZXNzOiBEV09SRAorICAgIGluaGVyaXRfaGFuZGxlOiBCT09MCisgICAgb3B0aW9uczogRFdPUkQgPSAwCisgICAgLworCitSZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC4KKworVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWwKK2hhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWQKK3Rocm91Z2ggYm90aCBoYW5kbGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEFORExFCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgQk9PTCBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNzk5NTE1YjY4YjUyMzdiIGlucHV0PWI5MzNlM2YyMzU2YThjMTJdKi8KIHsKICAgICBIQU5ETEUgdGFyZ2V0X2hhbmRsZTsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7Ci0gICAgSEFORExFIHNvdXJjZV9oYW5kbGU7Ci0gICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKLSAgICBEV09SRCBkZXNpcmVkX2FjY2VzczsKLSAgICBCT09MIGluaGVyaXRfaGFuZGxlOwotICAgIERXT1JEIG9wdGlvbnMgPSAwOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgRl9IQU5ETEUgRl9IQU5ETEUgRl9EV09SRCBGX0JPT0wgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIjpEdXBsaWNhdGVIYW5kbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNpcmVkX2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzdWx0ID0gRHVwbGljYXRlSGFuZGxlKAogICAgICAgICBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCkBAIC03MjksOTggKzkyMywxMTEgQEAKICAgICApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgaWYgKCEgcmVzdWx0KSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIH0KIAotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0odGFyZ2V0X2hhbmRsZSk7CisgICAgcmV0dXJuIHRhcmdldF9oYW5kbGU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuRXhpdFByb2Nlc3MKKworICAgIEV4aXRDb2RlOiBVSU5UCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfRXhpdFByb2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9FeGl0UHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFVJTlQgRXhpdENvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjVmM2I0OTljMjRjZWRjOCBpbnB1dD00ZjA1NDY2YTk0MDZjNTU4XSovCiB7Ci0gICAgVUlOVCB1RXhpdENvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9VSU5ULCAmdUV4aXRDb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKICAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8CiAgICAgICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1h8U0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7CiAgICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfREVCVUcpOwogICAgICNlbmRpZgogCi0gICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKKyAgICBFeGl0UHJvY2VzcyhFeGl0Q29kZSk7CiAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKEdldEN1cnJlbnRQcm9jZXNzX2RvYywKLSJHZXRDdXJyZW50UHJvY2VzcygpIC0+IGhhbmRsZVxuXAotXG5cCi1SZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcyAtPiBIQU5ETEUKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9HZXRDdXJyZW50UHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEFORExFCitfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTI5YWMzYWQ1ZjgyOTFlIGlucHV0PWIyMTM0MDNmZDRiOTZiNDFdKi8KIHsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0Q3VycmVudFByb2Nlc3MiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKEdldEN1cnJlbnRQcm9jZXNzKCkpOworICAgIHJldHVybiBHZXRDdXJyZW50UHJvY2VzcygpOwogfQogCi1QeURvY19TVFJWQVIoR2V0RXhpdENvZGVQcm9jZXNzX2RvYywKLSJHZXRFeGl0Q29kZVByb2Nlc3MoaGFuZGxlKSAtPiBFeGl0IGNvZGVcblwKLVxuXAotUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3MgLT4gRFdPUkQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorICAgIHByb2Nlc3M6IEhBTkRMRQorICAgIC8KKworUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgRFdPUkQKK193aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIHByb2Nlc3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGIxMGYwODQ4YTQxMGY2NSBpbnB1dD02MWI2YmZjN2RjMmVlMzc0XSovCiB7CiAgICAgRFdPUkQgZXhpdF9jb2RlOwogICAgIEJPT0wgcmVzdWx0OwogCi0gICAgSEFORExFIHByb2Nlc3M7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXN1bHQgPSBHZXRFeGl0Q29kZVByb2Nlc3MocHJvY2VzcywgJmV4aXRfY29kZSk7CiAKLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgaWYgKCEgcmVzdWx0KSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgZXhpdF9jb2RlID0gRFdPUkRfTUFYOworICAgIH0KIAotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhleGl0X2NvZGUpOworICAgIHJldHVybiBleGl0X2NvZGU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0TGFzdEVycm9yIC0+IERXT1JECitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRMYXN0RXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlYTAwZDhlNjdiZGQwNTYgaW5wdXQ9NjJkNDdmYjliY2UwMzhiYV0qLwogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfRFdPUkQsIEdldExhc3RFcnJvcigpKTsKKyAgICByZXR1cm4gR2V0TGFzdEVycm9yKCk7CiB9CiAKLVB5RG9jX1NUUlZBUihHZXRNb2R1bGVGaWxlTmFtZV9kb2MsCi0iR2V0TW9kdWxlRmlsZU5hbWUobW9kdWxlKSAtPiBwYXRoXG5cCi1cblwKLVJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnNcblwKLXRoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGVcblwKLWN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG5cCi13aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwgXG5cCi1HZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuXAotb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0TW9kdWxlRmlsZU5hbWUKKworICAgIG1vZHVsZV9oYW5kbGU6IEhNT0RVTEUKKyAgICAvCisKK1JldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgbW9kdWxlLgorCitUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLgorCitUaGUgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBoYW5kbGUgdG8gdGhlIGxvYWRlZCBtb2R1bGUKK3dob3NlIHBhdGggaXMgYmVpbmcgcmVxdWVzdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpcyAwLAorR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGUKK29mIHRoZSBjdXJyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhNT0RVTEUgbW9kdWxlX2hhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MDA2M2RjNjNiZGJmYTE4IGlucHV0PTZkNjZmZjdkZWNhNWQxMWZdKi8KIHsKICAgICBCT09MIHJlc3VsdDsKLSAgICBITU9EVUxFIG1vZHVsZTsKICAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZHVsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKKyAgICByZXN1bHQgPSBHZXRNb2R1bGVGaWxlTmFtZVcobW9kdWxlX2hhbmRsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKICAgICBmaWxlbmFtZVtNQVhfUEFUSC0xXSA9ICdcMCc7CiAKICAgICBpZiAoISByZXN1bHQpCkBAIC04MjksODMgKzEwMzYsOTYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihmaWxlbmFtZSwgd2NzbGVuKGZpbGVuYW1lKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihHZXRTdGRIYW5kbGVfZG9jLAotIkdldFN0ZEhhbmRsZShoYW5kbGUpIC0+IGludGVnZXJcblwKLVxuXAotUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlXG5cCi0oU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIFNURF9FUlJPUl9IQU5ETEUpLlxuXAotVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRTdGRIYW5kbGUgLT4gSEFORExFCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0U3RkSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKyAgICBzdGRfaGFuZGxlOiBEV09SRAorICAgICAgICBPbmUgb2YgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIG9yIFNURF9FUlJPUl9IQU5ETEUuCisgICAgLworCitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2UuCisKK1RoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBzdGRfaGFuZGxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmNWNhMjhiMjhjNmZhZDIgaW5wdXQ9MDcwMTZiMDZhMmZjODgyNl0qLwogewogICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgRFdPUkQgc3RkX2hhbmRsZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9EV09SRCAiOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKHN0ZF9oYW5kbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CiAKLSAgICBpZiAoISBoYW5kbGUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkdldFZlcnNpb24gLT4gbG9uZworCitSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitfd2luYXBpX0dldFZlcnNpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk1YTJmOGFkM2I5NDhjYTggaW5wdXQ9ZTIxZGZmOGQwYmFlZGVkMl0qLworLyogRGlzYWJsZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBhYm91dCBHZXRWZXJzaW9uRXggYXMgdGhlIHJlc3VsdCBpcworICAgYmVpbmcgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGNhbGxlciwgd2hvIGlzIHJlc3BvbnNpYmxlIGZvcgorICAgdXNpbmcgaXQgY29ycmVjdGx5LiAqLworI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQorCit7CisgICAgcmV0dXJuIEdldFZlcnNpb24oKTsKK30KKworI3ByYWdtYSB3YXJuaW5nKHBvcCkKKworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5PcGVuUHJvY2VzcyAtPiBIQU5ETEUKKworICAgIGRlc2lyZWRfYWNjZXNzOiBEV09SRAorICAgIGluaGVyaXRfaGFuZGxlOiBCT09MCisgICAgcHJvY2Vzc19pZDogRFdPUkQKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfT3BlblByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGluaGVyaXRfaGFuZGxlLCBEV09SRCBwcm9jZXNzX2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiYzUyZWRhODJhM2QyMjYgaW5wdXQ9ZWM5OGM0Y2Y0ZWEyZWMzNl0qLworeworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBoYW5kbGUgPSBPcGVuUHJvY2VzcyhkZXNpcmVkX2FjY2VzcywgaW5oZXJpdF9oYW5kbGUsIHByb2Nlc3NfaWQpOworICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAgICAgfQogCi0gICAgLyogbm90ZTogcmV0dXJucyBpbnRlZ2VyLCBub3QgaGFuZGxlIG9iamVjdCAqLwotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCi1QeURvY19TVFJWQVIoR2V0VmVyc2lvbl9kb2MsCi0iR2V0VmVyc2lvbigpIC0+IHZlcnNpb25cblwKLVxuXAotUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5QZWVrTmFtZWRQaXBlCisKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIHNpemU6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0VmVyc2lvbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNmM5MDhlMmZiNjNjNzk4IGlucHV0PWM3YWE1M2JmYmNlNjlkNzBdKi8KIHsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0VmVyc2lvbiIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhHZXRWZXJzaW9uKCkpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX09wZW5Qcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7Ci0gICAgQk9PTCBiSW5oZXJpdEhhbmRsZTsKLSAgICBEV09SRCBkd1Byb2Nlc3NJZDsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0Rlc2lyZWRBY2Nlc3MsICZiSW5oZXJpdEhhbmRsZSwgJmR3UHJvY2Vzc0lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoYW5kbGUgPSBPcGVuUHJvY2Vzcyhkd0Rlc2lyZWRBY2Nlc3MsIGJJbmhlcml0SGFuZGxlLCBkd1Byb2Nlc3NJZCk7Ci0gICAgaWYgKGhhbmRsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9QZWVrTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBzaXplID0gMDsKICAgICBQeU9iamVjdCAqYnVmID0gTlVMTDsKICAgICBEV09SRCBucmVhZCwgbmF2YWlsLCBubGVmdDsKICAgICBCT09MIHJldDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIgLCAmaGFuZGxlLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKHNpemUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkzOCwyMyArMTE1OCwyNCBAQAogICAgIH0KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5SZWFkRmlsZQorCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBzaXplOiBpbnQKKyAgICBvdmVybGFwcGVkIGFzIHVzZV9vdmVybGFwcGVkOiBpbnQoY19kZWZhdWx0PScwJykgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfd2luYXBpX1JlYWRGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3Njk1ZGI0ZGI5N2IxMzUgaW5wdXQ9OGRkODEwMTk0ZTg2YWM3ZF0qLwogewotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgaW50IHNpemU7CiAgICAgRFdPUkQgbnJlYWQ7CiAgICAgUHlPYmplY3QgKmJ1ZjsKICAgICBCT09MIHJldDsKLSAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIERXT1JEIGVycjsKICAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmICghYnVmKQpAQCAtOTk3LDE4ICsxMjE4LDI3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgYnVmLCBlcnIpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlCisKKyAgICBuYW1lZF9waXBlOiBIQU5ETEUKKyAgICBtb2RlOiBvYmplY3QKKyAgICBtYXhfY29sbGVjdGlvbl9jb3VudDogb2JqZWN0CisgICAgY29sbGVjdF9kYXRhX3RpbWVvdXQ6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIG5hbWVkX3BpcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1heF9jb2xsZWN0aW9uX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWFhM2MyOGRlZTIyM2NlIGlucHV0PTkxNDJkNzIxNjNkMGZhYTZdKi8KIHsKLSAgICBIQU5ETEUgaE5hbWVkUGlwZTsKLSAgICBQeU9iamVjdCAqb0FyZ3NbM107CisgICAgUHlPYmplY3QgKm9BcmdzWzNdID0ge21vZGUsIG1heF9jb2xsZWN0aW9uX2NvdW50LCBjb2xsZWN0X2RhdGFfdGltZW91dH07CiAgICAgRFdPUkQgZHdBcmdzWzNdLCAqcEFyZ3NbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIk9PTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmb0FyZ3NbMF0sICZvQXJnc1sxXSwgJm9BcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeUVycl9DbGVhcigpOwogCiAgICAgZm9yIChpID0gMCA7IGkgPCAzIDsgaSsrKSB7CkBAIC0xMDIwLDQ5ICsxMjUwLDU0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIVNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKGhOYW1lZFBpcGUsIHBBcmdzWzBdLCBwQXJnc1sxXSwgcEFyZ3NbMl0pKQorICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUobmFtZWRfcGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoVGVybWluYXRlUHJvY2Vzc19kb2MsCi0iVGVybWluYXRlUHJvY2VzcyhoYW5kbGUsIGV4aXRfY29kZSkgLT4gTm9uZVxuXAotXG5cCi1UZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuVGVybWluYXRlUHJvY2VzcworCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBleGl0X2NvZGU6IFVJTlQKKyAgICAvCisKK1Rlcm1pbmF0ZSB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgYW5kIGFsbCBvZiBpdHMgdGhyZWFkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9UZXJtaW5hdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK193aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGV4aXRfY29kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzdjMWJiNjIxOWFjYThiIGlucHV0PWQ2YmMwYWExZWUzYmI0ZGZdKi8KIHsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIEhBTkRMRSBwcm9jZXNzOwotICAgIFVJTlQgZXhpdF9jb2RlOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9VSU5UICI6VGVybWluYXRlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2VzcywgJmV4aXRfY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gVGVybWluYXRlUHJvY2Vzcyhwcm9jZXNzLCBleGl0X2NvZGUpOworICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpOwogCiAgICAgaWYgKCEgcmVzdWx0KQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLldhaXROYW1lZFBpcGUKKworICAgIG5hbWU6IExQQ1RTVFIKKyAgICB0aW1lb3V0OiBEV09SRAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9XYWl0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK193aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQQ1RTVFIgbmFtZSwgRFdPUkQgdGltZW91dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YmNhNWUwMmY0NDhjOWQ3IGlucHV0PTM2ZmM3ODEyOTFiMTg2MmNdKi8KIHsKLSAgICBMUENUU1RSIGxwTmFtZWRQaXBlTmFtZTsKLSAgICBEV09SRCBuVGltZU91dDsKICAgICBCT09MIHN1Y2Nlc3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQsICZscE5hbWVkUGlwZU5hbWUsICZuVGltZU91dCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKGxwTmFtZWRQaXBlTmFtZSwgblRpbWVPdXQpOworICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKG5hbWUsIHRpbWVvdXQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXN1Y2Nlc3MpCkBAIC0xMDcxLDIxICsxMzA2LDI1IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cworCisgICAgaGFuZGxlX3NlcTogb2JqZWN0CisgICAgd2FpdF9mbGFnOiBCT09MCisgICAgbWlsbGlzZWNvbmRzOiBEV09SRChjX2RlZmF1bHQ9J0lORklOSVRFJykgPSBfd2luYXBpLklORklOSVRFCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxLCBCT09MIHdhaXRfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1pbGxpc2Vjb25kcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hY2I0NDA3MjhkMDZkMTMwIGlucHV0PTM2Zjc2Y2EwNTdjZDI4YTBdKi8KIHsKICAgICBEV09SRCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKmhhbmRsZV9zZXE7CiAgICAgSEFORExFIGhhbmRsZXNbTUFYSU1VTV9XQUlUX09CSkVDVFNdOwogICAgIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmhhbmRsZXMsIGk7Ci0gICAgQk9PTCB3YWl0X2ZsYWc7Ci0gICAgRFdPUkQgbWlsbGlzZWNvbmRzID0gSU5GSU5JVEU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfQk9PTCAifCIgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICAiOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKGhhbmRsZV9zZXEpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0xMTM5LDUzICsxMzc4LDU3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSByZXN1bHQpOwogfQogCi1QeURvY19TVFJWQVIoV2FpdEZvclNpbmdsZU9iamVjdF9kb2MsCi0iV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIHRpbWVvdXQpIC0+IHJlc3VsdFxuXAotXG5cCi1XYWl0IHVudGlsIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZSBvclxuXAotdGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuXAotaW4gbWlsbGlzZWNvbmRzLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5XYWl0Rm9yU2luZ2xlT2JqZWN0IC0+IGxvbmcKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIG1pbGxpc2Vjb25kczogRFdPUkQKKyAgICAvCisKK1dhaXQgZm9yIGEgc2luZ2xlIG9iamVjdC4KKworV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3IKK3RoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWQKK2luIG1pbGxpc2Vjb25kcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK193aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzRhZTQwYzI2OTc0OWM0OCBpbnB1dD00NDNkMWFiMDc2ZWRjN2IxXSovCiB7CiAgICAgRFdPUkQgcmVzdWx0OwogCi0gICAgSEFORExFIGhhbmRsZTsKLSAgICBEV09SRCBtaWxsaXNlY29uZHM7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSBGX0RXT1JEICI6V2FpdEZvclNpbmdsZU9iamVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCBtaWxsaXNlY29uZHMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5Xcml0ZUZpbGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgYnVmZmVyOiBvYmplY3QKKyAgICBvdmVybGFwcGVkIGFzIHVzZV9vdmVybGFwcGVkOiBpbnQoY19kZWZhdWx0PScwJykgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVlNzBlYTQxZjRkMmExZCBpbnB1dD01MTg0NmE1YWY1MjA1M2ZkXSovCiB7Ci0gICAgSEFORExFIGhhbmRsZTsKICAgICBQeV9idWZmZXIgX2J1ZiwgKmJ1ZjsKLSAgICBQeU9iamVjdCAqYnVmb2JqOwogICAgIERXT1JEIGxlbiwgd3JpdHRlbjsKICAgICBCT09MIHJldDsKLSAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIERXT1JEIGVycjsKICAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OwotCi0gICAgLyogRmlyc3QgZ2V0IGhhbmRsZSBhbmQgdXNlX292ZXJsYXBwZWQgdG8ga25vdyB3aGljaCBQeV9idWZmZXIgdG8gdXNlICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmYnVmb2JqLCAmdXNlX292ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgewogICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKQEAgLTExOTYsNyArMTQzOSw3IEBACiAgICAgZWxzZQogICAgICAgICBidWYgPSAmX2J1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYnVmb2JqLCAieSoiLCBidWYpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZShidWZmZXIsICJ5KiIsIGJ1ZikpIHsKICAgICAgICAgUHlfWERFQ1JFRihvdmVybGFwcGVkKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTIyOSw1MiArMTQ3MiwzMCBAQAogCiAKIHN0YXRpYyBQeU1ldGhvZERlZiB3aW5hcGlfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJDbG9zZUhhbmRsZSIsIHdpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAotICAgICBDbG9zZUhhbmRsZV9kb2N9LAotICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwKLSAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgIiJ9LAotICAgIHsiQ3JlYXRlRmlsZSIsIHdpbmFwaV9DcmVhdGVGaWxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IkNyZWF0ZU5hbWVkUGlwZSIsIHdpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiQ3JlYXRlUGlwZSIsIHdpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIENyZWF0ZVBpcGVfZG9jfSwKLSAgICB7IkNyZWF0ZVByb2Nlc3MiLCB3aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICBDcmVhdGVQcm9jZXNzX2RvY30sCi0gICAgeyJEdXBsaWNhdGVIYW5kbGUiLCB3aW5hcGlfRHVwbGljYXRlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIER1cGxpY2F0ZUhhbmRsZV9kb2N9LAotICAgIHsiRXhpdFByb2Nlc3MiLCB3aW5hcGlfRXhpdFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCB3aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKLSAgICB7IkdldEV4aXRDb2RlUHJvY2VzcyIsIHdpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgR2V0RXhpdENvZGVQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRMYXN0RXJyb3IiLCB3aW5hcGlfR2V0TGFzdEVycm9yLCBNRVRIX05PQVJHUywKLSAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKLSAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldE1vZHVsZUZpbGVOYW1lX2RvY30sCi0gICAgeyJHZXRTdGRIYW5kbGUiLCB3aW5hcGlfR2V0U3RkSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldFN0ZEhhbmRsZV9kb2N9LAotICAgIHsiR2V0VmVyc2lvbiIsIHdpbmFwaV9HZXRWZXJzaW9uLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldFZlcnNpb25fZG9jfSwKLSAgICB7Ik9wZW5Qcm9jZXNzIiwgd2luYXBpX09wZW5Qcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IlBlZWtOYW1lZFBpcGUiLCB3aW5hcGlfUGVla05hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICIifSwKLSAgICB7IlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwgd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCB3aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICBUZXJtaW5hdGVQcm9jZXNzX2RvY30sCi0gICAgeyJXYWl0TmFtZWRQaXBlIiwgd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiV2FpdEZvck11bHRpcGxlT2JqZWN0cyIsIHdpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCB3aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdCwgTUVUSF9WQVJBUkdTLAotICAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvY30sCi0gICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgIiJ9LAorICAgIF9XSU5BUElfQ0xPU0VIQU5ETEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DT05ORUNUTkFNRURQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfQ1JFQVRFRklMRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURU5BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURVBJUEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DUkVBVEVQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfQ1JFQVRFSlVOQ1RJT05fTUVUSE9EREVGCisgICAgX1dJTkFQSV9EVVBMSUNBVEVIQU5ETEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9FWElUUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVENVUlJFTlRQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VURVhJVENPREVQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUTEFTVEVSUk9SX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUTU9EVUxFRklMRU5BTUVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9HRVRTVERIQU5ETEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9HRVRWRVJTSU9OX01FVEhPRERFRgorICAgIF9XSU5BUElfT1BFTlBST0NFU1NfTUVUSE9EREVGCisgICAgX1dJTkFQSV9QRUVLTkFNRURQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfUkVBREZJTEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9TRVROQU1FRFBJUEVIQU5ETEVTVEFURV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX1RFUk1JTkFURVBST0NFU1NfTUVUSE9EREVGCisgICAgX1dJTkFQSV9XQUlUTkFNRURQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfV0FJVEZPUk1VTFRJUExFT0JKRUNUU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX1dBSVRGT1JTSU5HTEVPQkpFQ1RfTUVUSE9EREVGCisgICAgX1dJTkFQSV9XUklURUZJTEVfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKaW5kZXggNWFiMWFiNi4uYTNjY2Y5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwpAQCAtMTUsNiArMTUsMTEgQEAKICNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCiAjZW5kaWYgLyogIVNURENfSEVBREVSUyAqLwogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgYXJyYXkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdkMWI4ZDdmNTk1OGZkODNdKi8KKwogc3RydWN0IGFycmF5b2JqZWN0OyAvKiBGb3J3YXJkICovCiAKIC8qIEFsbCBwb3NzaWJsZSBhcnJheWRlc2NyIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmVjdG9yICJkZXNjcmlwdG9ycyIKQEAgLTQyLDYgKzQ3LDYzIEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgQXJyYXl0eXBlOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgYXJyYXlvYmplY3QgKmFvOworICAgIFB5T2JqZWN0KiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKK30gYXJyYXlpdGVyb2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5QXJyYXlJdGVyX1R5cGU7CisKKyNkZWZpbmUgUHlBcnJheUl0ZXJfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5QXJyYXlJdGVyX1R5cGUpCisKK2VudW0gbWFjaGluZV9mb3JtYXRfY29kZSB7CisgICAgVU5LTk9XTl9GT1JNQVQgPSAtMSwKKyAgICAvKiBVTktOT1dOX0ZPUk1BVCBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIG1hY2hpbmUgZm9ybWF0IGZvciBhbgorICAgICAqIGFycmF5IHR5cGUgY29kZSBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQuIFdoZW4gdGhpcyBvY2N1cnMsIGEgbGlzdCBvZgorICAgICAqIFB5dGhvbiBvYmplY3RzIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBjb250ZW50IG9mIHRoZSBhcnJheQorICAgICAqIGluc3RlYWQgb2YgdXNpbmcgdGhlIG1lbW9yeSBjb250ZW50IG9mIHRoZSBhcnJheSBkaXJlY3RseS4gSW4gdGhhdAorICAgICAqIGNhc2UsIHRoZSBhcnJheV9yZWNvbnN0cnVjdG9yIG1lY2hhbmlzbSBpcyBieXBhc3NlZCBjb21wbGV0ZWx5LCBhbmQKKyAgICAgKiB0aGUgc3RhbmRhcmQgYXJyYXkgY29uc3RydWN0b3IgaXMgdXNlZCBpbnN0ZWFkLgorICAgICAqCisgICAgICogVGhpcyBpcyB3aWxsIG1vc3QgbGlrZWx5IG9jY3VyIHdoZW4gdGhlIG1hY2hpbmUgZG9lc24ndCB1c2UgSUVFRQorICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuCisgICAgICovCisKKyAgICBVTlNJR05FRF9JTlQ4ID0gMCwKKyAgICBTSUdORURfSU5UOCA9IDEsCisgICAgVU5TSUdORURfSU5UMTZfTEUgPSAyLAorICAgIFVOU0lHTkVEX0lOVDE2X0JFID0gMywKKyAgICBTSUdORURfSU5UMTZfTEUgPSA0LAorICAgIFNJR05FRF9JTlQxNl9CRSA9IDUsCisgICAgVU5TSUdORURfSU5UMzJfTEUgPSA2LAorICAgIFVOU0lHTkVEX0lOVDMyX0JFID0gNywKKyAgICBTSUdORURfSU5UMzJfTEUgPSA4LAorICAgIFNJR05FRF9JTlQzMl9CRSA9IDksCisgICAgVU5TSUdORURfSU5UNjRfTEUgPSAxMCwKKyAgICBVTlNJR05FRF9JTlQ2NF9CRSA9IDExLAorICAgIFNJR05FRF9JTlQ2NF9MRSA9IDEyLAorICAgIFNJR05FRF9JTlQ2NF9CRSA9IDEzLAorICAgIElFRUVfNzU0X0ZMT0FUX0xFID0gMTQsCisgICAgSUVFRV83NTRfRkxPQVRfQkUgPSAxNSwKKyAgICBJRUVFXzc1NF9ET1VCTEVfTEUgPSAxNiwKKyAgICBJRUVFXzc1NF9ET1VCTEVfQkUgPSAxNywKKyAgICBVVEYxNl9MRSA9IDE4LAorICAgIFVURjE2X0JFID0gMTksCisgICAgVVRGMzJfTEUgPSAyMCwKKyAgICBVVEYzMl9CRSA9IDIxCit9OworI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01JTiAwCisjZGVmaW5lIE1BQ0hJTkVfRk9STUFUX0NPREVfTUFYIDIxCisKKworLyoKKyAqIE11c3QgY29tZSBhZnRlciBhcnJheW9iamVjdCwgYXJyYXlpdGVyb2JqZWN0LAorICogYW5kIGVudW0gbWFjaGluZV9jb2RlX3R5cGUgZGVmaW5pdGlvbnMuCisgKi8KKyNpbmNsdWRlICJjbGluaWMvYXJyYXltb2R1bGUuYy5oIgorCiAjZGVmaW5lIGFycmF5X0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZBcnJheXR5cGUpCiAjZGVmaW5lIGFycmF5X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmQXJyYXl0eXBlKQogCkBAIC00NzEsNiArNTMzLDEwIEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogSW1wbGVtZW50YXRpb25zIG9mIGFycmF5IG9iamVjdCBtZXRob2RzLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGFycmF5LmFycmF5ICJhcnJheW9iamVjdCAqIiAiJkFycmF5dHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFkNDNkMzdlOTQyYTg4NTRdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG5ld2FycmF5b2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBzaXplLCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3IpCkBAIC02ODQsMTYgKzc1MCwzNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilucDsKIH0KIAorCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX2NvcHlfXworCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2NvcHkoYXJyYXlvYmplY3QgKmEsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV9fX2NvcHlfX19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRlYzdjM2Y5MjVkOTYxOWUgaW5wdXQ9YWQxZWU1YjA4Njk2NWYwOV0qLwogewotICAgIHJldHVybiBhcnJheV9zbGljZShhLCAwLCBQeV9TSVpFKGEpKTsKKyAgICByZXR1cm4gYXJyYXlfc2xpY2Uoc2VsZiwgMCwgUHlfU0laRShzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3B5X2RvYywKLSJjb3B5KGFycmF5KVxuXAotXG5cCi0gUmV0dXJuIGEgY29weSBvZiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX2RlZXBjb3B5X18KKworICAgIHVudXNlZDogb2JqZWN0CisgICAgLworCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X19fZGVlcGNvcHlfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZWM3NDhkOGUxNGE5ZmFhIGlucHV0PTI0MDVlY2I0OTMzNzQ4YzRdKi8KK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChzZWxmKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2NvbmNhdChhcnJheW9iamVjdCAqYSwgUHlPYmplY3QgKmJiKQpAQCAtOTYxLDggKzEwNDYsMTggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuY291bnQKKworICAgIHY6IG9iamVjdAorICAgIC8KKworUmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB2IGluIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2NvdW50KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X2NvdW50KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZGQzNjI0YmY3MTM1YTNhIGlucHV0PWQ5YmNlOWQ2NWUzOWQxZjVdKi8KIHsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC05ODQsMTMgKzEwNzksMTkgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGNvdW50KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X2RvYywKLSJjb3VudCh4KVxuXAotXG5cCi1SZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHggaW4gdGhlIGFycmF5LiIpOworCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5pbmRleAorCisgICAgdjogb2JqZWN0CisgICAgLworCitSZXR1cm4gaW5kZXggb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2luZGV4KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X2luZGV4KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDg0OThkMzI1NjAyMTY3IGlucHV0PWNmNjE5ODk4YzY2NDlkMDhdKi8KIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTEwMTMsMTEgKzExMTQsNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoaW5kZXhfZG9jLAotImluZGV4KHgpXG5cCi1cblwKLVJldHVybiBpbmRleCBvZiBmaXJzdCBvY2N1cnJlbmNlIG9mIHggaW4gdGhlIGFycmF5LiIpOwotCiBzdGF0aWMgaW50CiBhcnJheV9jb250YWlucyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCiB7CkBAIC0xMDM0LDggKzExMzAsMTggQEAKICAgICByZXR1cm4gY21wOwogfQogCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5yZW1vdmUKKworICAgIHY6IG9iamVjdAorICAgIC8KKworUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHYgaW4gdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcmVtb3ZlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X3JlbW92ZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmVmMDZiZTlmZGY5ZGNlYiBpbnB1dD0wYjFlNWFlZDI1NTkwMDI3XSovCiB7CiAgICAgaW50IGk7CiAKQEAgLTEwNjIsMTggKzExNjgsMjMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKHJlbW92ZV9kb2MsCi0icmVtb3ZlKHgpXG5cCi1cblwKLVJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB4IGluIHRoZSBhcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnBvcAorCisgICAgaTogUHlfc3NpemVfdCA9IC0xCisgICAgLworCitSZXR1cm4gdGhlIGktdGggZWxlbWVudCBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGFycmF5LgorCitpIGRlZmF1bHRzIHRvIC0xLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcG9wKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X2FycmF5X3BvcF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmMxZjBjNTRmZTUzMDhlNCBpbnB1dD04ZTVmZWI0YzFhMTFjZDQ0XSovCiB7Ci0gICAgUHlfc3NpemVfdCBpID0gLTE7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKFB5X1NJWkUoc2VsZikgPT0gMCkgewogICAgICAgICAvKiBTcGVjaWFsLWNhc2UgbW9zdCBjb21tb24gZmFpbHVyZSBjYXVzZSAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInBvcCBmcm9tIGVtcHR5IGFycmF5Iik7CkBAIC0xMDk1LDEzICsxMjA2LDE4IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3BfZG9jLAotInBvcChbaV0pXG5cCi1cblwKLVJldHVybiB0aGUgaS10aCBlbGVtZW50IGFuZCBkZWxldGUgaXQgZnJvbSB0aGUgYXJyYXkuIGkgZGVmYXVsdHMgdG8gLTEuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5leHRlbmQKKworICAgIGJiOiBvYmplY3QKKyAgICAvCisKK0FwcGVuZCBpdGVtcyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2V4dGVuZChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJiKQorYXJyYXlfYXJyYXlfZXh0ZW5kKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmJkZGJjOGU4YmVmODcxZCBpbnB1dD00M2JlODZhYmE1YzMxZTQ0XSovCiB7CiAgICAgaWYgKGFycmF5X2RvX2V4dGVuZChzZWxmLCBiYikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTEwOSwyOSArMTIyNSwzNSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoZXh0ZW5kX2RvYywKLSJleHRlbmQoYXJyYXkgb3IgaXRlcmFibGUpXG5cCi1cblwKLSBBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5pbnNlcnQKKworICAgIGk6IFB5X3NzaXplX3QKKyAgICB2OiBvYmplY3QKKyAgICAvCisKK0luc2VydCBhIG5ldyBpdGVtIHYgaW50byB0aGUgYXJyYXkgYmVmb3JlIHBvc2l0aW9uIGkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9pbnNlcnQoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWEzNjQ4ZTI3ODM0ODU2NCBpbnB1dD01NTc3ZDFiNDM4M2U5MzEzXSovCiB7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5T2JqZWN0ICp2OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwgJmksICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIGlucyhzZWxmLCBpLCB2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGluc2VydF9kb2MsCi0iaW5zZXJ0KGkseClcblwKLVxuXAotSW5zZXJ0IGEgbmV3IGl0ZW0geCBpbnRvIHRoZSBhcnJheSBiZWZvcmUgcG9zaXRpb24gaS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmJ1ZmZlcl9pbmZvCiAKK1JldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheSdzIGNvbnRlbnRzLgorCitUaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlCit0aGUgYnVmZmVyIGxlbmd0aCBpbiBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2J1ZmZlcl9pbmZvKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9faW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YjJhNGVjM2FlN2U5OGU3IGlucHV0PWE1OGJhZTVjNmUxYWM2YTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTCwgKnY7CiAKQEAgLTExNTYsMjkgKzEyNzgsMzQgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1QeURvY19TVFJWQVIoYnVmZmVyX2luZm9fZG9jLAotImJ1ZmZlcl9pbmZvKCkgLT4gKGFkZHJlc3MsIGxlbmd0aClcblwKLVxuXAotUmV0dXJuIGEgdHVwbGUgKGFkZHJlc3MsIGxlbmd0aCkgZ2l2aW5nIHRoZSBjdXJyZW50IG1lbW9yeSBhZGRyZXNzIGFuZFxuXAotdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheSdzIGNvbnRlbnRzXG5cCi1UaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlXG5cCi10aGUgYnVmZmVyIGxlbmd0aCBpbiBieXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmFwcGVuZAogCisgICAgdjogb2JqZWN0CisgICAgLworCitBcHBlbmQgbmV3IHZhbHVlIHYgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9hcHBlbmQoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYXJyYXlfYXJyYXlfYXBwZW5kKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NDVhMDY2OWJmOGRiMGUyIGlucHV0PTBiOThkOWQ3OGU3OGYwZmFdKi8KIHsKICAgICByZXR1cm4gaW5zKHNlbGYsIFB5X1NJWkUoc2VsZiksIHYpOwogfQogCi1QeURvY19TVFJWQVIoYXBwZW5kX2RvYywKLSJhcHBlbmQoeClcblwKLVxuXAotQXBwZW5kIG5ldyB2YWx1ZSB4IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuYnl0ZXN3YXAKIAorQnl0ZXN3YXAgYWxsIGl0ZW1zIG9mIHRoZSBhcnJheS4KKworSWYgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBhcmUgbm90IDEsIDIsIDQsIG9yIDggYnl0ZXMgaW4gc2l6ZSwgUnVudGltZUVycm9yIGlzCityYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9ieXRlc3dhcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X2J5dGVzd2FwX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWY4MjM2Y2JkZjBkOTBiNSBpbnB1dD02YTg1NTkxYjk1MGEwMTg2XSovCiB7CiAgICAgY2hhciAqcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMjI4LDE0ICsxMzU1LDE1IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihieXRlc3dhcF9kb2MsCi0iYnl0ZXN3YXAoKVxuXAotXG5cCi1CeXRlc3dhcCBhbGwgaXRlbXMgb2YgdGhlIGFycmF5LiAgSWYgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBhcmUgbm90IDEsIDIsXG5cCi00LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5yZXZlcnNlCisKK1JldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9yZXZlcnNlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfcmV2ZXJzZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwNDg2OGIzNmY2ZjQwODkgaW5wdXQ9Y2Q5MDRmMDFiMjdkOTY2YV0qLwogewogICAgIFB5X3NzaXplX3QgaXRlbXNpemUgPSBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgY2hhciAqcCwgKnE7CkBAIC0xMjYxLDI3ICsxMzg5LDI2IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihyZXZlcnNlX2RvYywKLSJyZXZlcnNlKClcblwKLVxuXAotUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmZyb21maWxlCiAKKyAgICBmOiBvYmplY3QKKyAgICBuOiBQeV9zc2l6ZV90CisgICAgLwogCi0vKiBGb3J3YXJkICovCi1zdGF0aWMgUHlPYmplY3QgKmFycmF5X2Zyb21ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOworUmVhZCBuIG9iamVjdHMgZnJvbSB0aGUgZmlsZSBvYmplY3QgZiBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9mcm9tZmlsZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tZmlsZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZiwgUHlfc3NpemVfdCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjOWY2MDBlMTBmNTM1MTAgaW5wdXQ9ZTE4OGFmZThlNThhZGY0MF0qLwogewotICAgIFB5T2JqZWN0ICpmLCAqYiwgKnJlczsKKyAgICBQeU9iamVjdCAqYiwgKnJlczsKICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplID0gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplOwotICAgIFB5X3NzaXplX3QgbiwgbmJ5dGVzOworICAgIFB5X3NzaXplX3QgbmJ5dGVzOwogICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogICAgIGludCBub3RfZW5vdWdoX2J5dGVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsICZmLCAmbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzA1LDEzICsxNDMyLDggQEAKIAogICAgIG5vdF9lbm91Z2hfYnl0ZXMgPSAoUHlCeXRlc19HRVRfU0laRShiKSAhPSBuYnl0ZXMpOwogCi0gICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihPKSIsIGIpOworICAgIHJlcyA9IGFycmF5X2FycmF5X2Zyb21ieXRlcyhzZWxmLCBiKTsKICAgICBQeV9ERUNSRUYoYik7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBhcnJheV9mcm9tYnl0ZXMoc2VsZiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEzMjUsMTUgKzE0NDcsMTggQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIoZnJvbWZpbGVfZG9jLAotImZyb21maWxlKGYsIG4pXG5cCi1cblwKLVJlYWQgbiBvYmplY3RzIGZyb20gdGhlIGZpbGUgb2JqZWN0IGYgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlXG5cCi1hcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvZmlsZQogCisgICAgZjogb2JqZWN0CisgICAgLworCitXcml0ZSBhbGwgaXRlbXMgKGFzIG1hY2hpbmUgdmFsdWVzKSB0byB0aGUgZmlsZSBvYmplY3QgZi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3RvZmlsZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYpCithcnJheV9hcnJheV90b2ZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhMmNmYTgxMjhkZjA3NzcgaW5wdXQ9YjA2NjlhNDg0YWFiMDgzMV0qLwogewogICAgIFB5X3NzaXplX3QgbmJ5dGVzID0gUHlfU0laRShzZWxmKSAqIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICAvKiBXcml0ZSA2NEsgYmxvY2tzIGF0IGEgdGltZSAqLwpAQCAtMTM2OCwxNCArMTQ5MywxOCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIodG9maWxlX2RvYywKLSJ0b2ZpbGUoZilcblwKLVxuXAotV3JpdGUgYWxsIGl0ZW1zIChhcyBtYWNoaW5lIHZhbHVlcykgdG8gdGhlIGZpbGUgb2JqZWN0IGYuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tbGlzdAogCisgICAgbGlzdDogb2JqZWN0CisgICAgLworCitBcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfZnJvbWxpc3QoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaXN0KQorYXJyYXlfYXJyYXlfZnJvbWxpc3QoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaXN0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI2NDExYzJkMjI4YTNlM2YgaW5wdXQ9YmUyNjA1YTk2YzQ5NjgwZl0qLwogewogICAgIFB5X3NzaXplX3QgbjsKIApAQCAtMTQwMiwxMyArMTUzMSwxNSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoZnJvbWxpc3RfZG9jLAotImZyb21saXN0KGxpc3QpXG5cCi1cblwKLUFwcGVuZCBpdGVtcyB0byBhcnJheSBmcm9tIGxpc3QuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b2xpc3QKKworQ29udmVydCBhcnJheSB0byBhbiBvcmRpbmFyeSBsaXN0IHdpdGggdGhlIHNhbWUgaXRlbXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b2xpc3QoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV90b2xpc3RfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMGI2MGNjOWVhYjhlZjg5IGlucHV0PWE4ZDc3ODRhOTRmODZiNTNdKi8KIHsKICAgICBQeU9iamVjdCAqbGlzdCA9IFB5TGlzdF9OZXcoUHlfU0laRShzZWxmKSk7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTQyOSwxMSArMTU2MCw2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUih0b2xpc3RfZG9jLAotInRvbGlzdCgpIC0+IGxpc3RcblwKLVxuXAotQ29udmVydCBhcnJheSB0byBhbiBvcmRpbmFyeSBsaXN0IHdpdGggdGhlIHNhbWUgaXRlbXMuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBmcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQogewpAQCAtMTQ3MSw0NyArMTU5Nyw1MiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tc3RyaW5nCisKKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3N0ciwgYnVmZmVyfSkKKyAgICAvCisKK0FwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4KKworVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIGZyb21ieXRlcyBpbnN0ZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfZnJvbXN0cmluZyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxYzRiYWE3NzlkZjg0Y2UgaW5wdXQ9YTMzNDFhNTEyZTExZDc3M10qLwogewotICAgIFB5X2J1ZmZlciBidWZmZXI7CiAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAiZnJvbXN0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFVzZSBmcm9tYnl0ZXMoKSBpbnN0ZWFkLiIsIDIpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgJmJ1ZmZlcik7CisgICAgcmV0dXJuIGZyb21ieXRlcyhzZWxmLCBidWZmZXIpOwogfQogCi1QeURvY19TVFJWQVIoZnJvbXN0cmluZ19kb2MsCi0iZnJvbXN0cmluZyhzdHJpbmcpXG5cCi1cblwKLUFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZVxuXAotdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuXG5cCi1cblwKLVRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSBmcm9tYnl0ZXMgaW5zdGVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmZyb21ieXRlcwogCisgICAgYnVmZmVyOiBQeV9idWZmZXIKKyAgICAvCisKK0FwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb21ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk4NDJjOGY3NTEwYTUxNiBpbnB1dD0yYmJmMmI1M2ViZmNjOTg4XSovCiB7Ci0gICAgUHlfYnVmZmVyIGJ1ZmZlcjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgJmJ1ZmZlcik7CisgICAgcmV0dXJuIGZyb21ieXRlcyhzZWxmLCBidWZmZXIpOwogfQogCi1QeURvY19TVFJWQVIoZnJvbWJ5dGVzX2RvYywKLSJmcm9tYnl0ZXMoYnl0ZXN0cmluZylcblwKLVxuXAotQXBwZW5kcyBpdGVtcyBmcm9tIHRoZSBzdHJpbmcsIGludGVycHJldGluZyBpdCBhcyBhbiBhcnJheSBvZiBtYWNoaW5lXG5cCi12YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvYnl0ZXMKIAorQ29udmVydCB0aGUgYXJyYXkgdG8gYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMgYW5kIHJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b2J5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3MzE4ZTRlZGNkYzJiYjYgaW5wdXQ9OTBlZTQ5NWY5NmRlMzRmNV0qLwogewogICAgIGlmIChQeV9TSVpFKHNlbGYpIDw9IFBZX1NTSVpFX1RfTUFYIC8gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplKSB7CiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPm9iX2l0ZW0sCkBAIC0xNTIxLDQwICsxNjUyLDQ0IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIodG9ieXRlc19kb2MsCi0idG9ieXRlcygpIC0+IGJ5dGVzXG5cCi1cblwKLUNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzXG5cCi1yZXByZXNlbnRhdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvc3RyaW5nCiAKK0NvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLgorCitUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2UgdG9ieXRlcyBpbnN0ZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG9zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV90b3N0cmluZ19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkNmJkOTI3NDVhMmM4ZjMgaW5wdXQ9YjZjMGRkZWU3YjMwNDU3ZV0qLwogewogICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgInRvc3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMoKSBpbnN0ZWFkLiIsIDIpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBhcnJheV90b2J5dGVzKHNlbGYsIHVudXNlZCk7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKIH0KIAotUHlEb2NfU1RSVkFSKHRvc3RyaW5nX2RvYywKLSJ0b3N0cmluZygpIC0+IGJ5dGVzXG5cCi1cblwKLUNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzXG5cCi1yZXByZXNlbnRhdGlvbi5cblwKLVxuXAotVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMgaW5zdGVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmZyb211bmljb2RlCiAKKyAgICB1c3RyOiBQeV9VTklDT0RFKHplcm9lcz1UcnVlKQorICAgIC8KKworRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLgorCitUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuCitVc2UgYXJyYXkuZnJvbWJ5dGVzKHVzdHIuZW5jb2RlKC4uLikpIHRvIGFwcGVuZCBVbmljb2RlIGRhdGEgdG8gYW4gYXJyYXkgb2YKK3NvbWUgb3RoZXIgdHlwZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb211bmljb2RlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X2FycmF5X2Zyb211bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X1VOSUNPREUgKnVzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWJiNzJmYzE2OTc1ZTA2ZCBpbnB1dD0xNTBmMDA1NjZmZmJjYTZlXSovCiB7Ci0gICAgUHlfVU5JQ09ERSAqdXN0cjsKLSAgICBQeV9zc2l6ZV90IG47CiAgICAgY2hhciB0eXBlY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKICAgICBpZiAodHlwZWNvZGUgIT0gJ3UnKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtMTU2MiwyOSArMTY5NywzMCBAQAogICAgICAgICAgICAgInVuaWNvZGUgdHlwZSBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChuID4gMCkgeworICAgIGlmICh1c3RyX2xlbmd0aCA+IDApIHsKICAgICAgICAgUHlfc3NpemVfdCBvbGRfc2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgICAgIGlmIChhcnJheV9yZXNpemUoc2VsZiwgb2xkX3NpemUgKyBuKSA9PSAtMSkKKyAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShzZWxmLCBvbGRfc2l6ZSArIHVzdHJfbGVuZ3RoKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBtZW1jcHkoc2VsZi0+b2JfaXRlbSArIG9sZF9zaXplICogc2l6ZW9mKFB5X1VOSUNPREUpLAotICAgICAgICAgICAgICAgdXN0ciwgbiAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgICAgICAgICB1c3RyLCB1c3RyX2xlbmd0aCAqIHNpemVvZihQeV9VTklDT0RFKSk7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZnJvbXVuaWNvZGVfZG9jLAotImZyb211bmljb2RlKHVzdHIpXG5cCi1cblwKLUV4dGVuZHMgdGhpcyBhcnJheSB3aXRoIGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJpbmcgdXN0ci5cblwKLVRoZSBhcnJheSBtdXN0IGJlIGEgdW5pY29kZSB0eXBlIGFycmF5OyBvdGhlcndpc2UgYSBWYWx1ZUVycm9yXG5cCi1pcyByYWlzZWQuICBVc2UgYXJyYXkuZnJvbWJ5dGVzKHVzdHIuZW5jb2RlKC4uLikpIHRvXG5cCi1hcHBlbmQgVW5pY29kZSBkYXRhIHRvIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvdW5pY29kZQogCitFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuCisKK0NvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsKK290aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAgVXNlIGFycmF5LnRvYnl0ZXMoKS5kZWNvZGUoKSB0byBvYnRhaW4gYQordW5pY29kZSBzdHJpbmcgZnJvbSBhbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b3VuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV90b3VuaWNvZGVfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOGU0NDIzNzgzMzZlMWVmIGlucHV0PTEyNzI0MmVlYmU3MGI2NmRdKi8KIHsKICAgICBjaGFyIHR5cGVjb2RlOwogICAgIHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwpAQCAtMTU5Niw3MCArMTczMiwyNCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKFB5X1VOSUNPREUgKikgc2VsZi0+b2JfaXRlbSwgUHlfU0laRShzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUih0b3VuaWNvZGVfZG9jLAotInRvdW5pY29kZSgpIC0+IHVuaWNvZGVcblwKLVxuXAotQ29udmVydCB0aGUgYXJyYXkgdG8gYSB1bmljb2RlIHN0cmluZy4gIFRoZSBhcnJheSBtdXN0IGJlXG5cCi1hIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuICBVc2VcblwKLWFycmF5LnRvYnl0ZXMoKS5kZWNvZGUoKSB0byBvYnRhaW4gYSB1bmljb2RlIHN0cmluZyBmcm9tXG5cCi1hbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX3NpemVvZl9fCiAKK1NpemUgb2YgdGhlIGFycmF5IGluIG1lbW9yeSwgaW4gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9zaXplb2YoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV9fX3NpemVvZl9fX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDhlMWM2MWViYmUzZWFlZCBpbnB1dD04MDU1ODY1NjViZjJiM2M2XSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAgICAgcmVzID0gc2l6ZW9mKGFycmF5b2JqZWN0KSArIHNlbGYtPmFsbG9jYXRlZCAqIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaXplb2ZfZG9jLAotIl9fc2l6ZW9mX18oKSAtPiBpbnRcblwKLVxuXAotU2l6ZSBvZiB0aGUgYXJyYXkgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKiogUGlja2xpbmcgc3VwcG9ydCAqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLWVudW0gbWFjaGluZV9mb3JtYXRfY29kZSB7Ci0gICAgVU5LTk9XTl9GT1JNQVQgPSAtMSwKLSAgICAvKiBVTktOT1dOX0ZPUk1BVCBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIG1hY2hpbmUgZm9ybWF0IGZvciBhbgotICAgICAqIGFycmF5IHR5cGUgY29kZSBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQuIFdoZW4gdGhpcyBvY2N1cnMsIGEgbGlzdCBvZgotICAgICAqIFB5dGhvbiBvYmplY3RzIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBjb250ZW50IG9mIHRoZSBhcnJheQotICAgICAqIGluc3RlYWQgb2YgdXNpbmcgdGhlIG1lbW9yeSBjb250ZW50IG9mIHRoZSBhcnJheSBkaXJlY3RseS4gSW4gdGhhdAotICAgICAqIGNhc2UsIHRoZSBhcnJheV9yZWNvbnN0cnVjdG9yIG1lY2hhbmlzbSBpcyBieXBhc3NlZCBjb21wbGV0ZWx5LCBhbmQKLSAgICAgKiB0aGUgc3RhbmRhcmQgYXJyYXkgY29uc3RydWN0b3IgaXMgdXNlZCBpbnN0ZWFkLgotICAgICAqCi0gICAgICogVGhpcyBpcyB3aWxsIG1vc3QgbGlrZWx5IG9jY3VyIHdoZW4gdGhlIG1hY2hpbmUgZG9lc24ndCB1c2UgSUVFRQotICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuCi0gICAgICovCi0KLSAgICBVTlNJR05FRF9JTlQ4ID0gMCwKLSAgICBTSUdORURfSU5UOCA9IDEsCi0gICAgVU5TSUdORURfSU5UMTZfTEUgPSAyLAotICAgIFVOU0lHTkVEX0lOVDE2X0JFID0gMywKLSAgICBTSUdORURfSU5UMTZfTEUgPSA0LAotICAgIFNJR05FRF9JTlQxNl9CRSA9IDUsCi0gICAgVU5TSUdORURfSU5UMzJfTEUgPSA2LAotICAgIFVOU0lHTkVEX0lOVDMyX0JFID0gNywKLSAgICBTSUdORURfSU5UMzJfTEUgPSA4LAotICAgIFNJR05FRF9JTlQzMl9CRSA9IDksCi0gICAgVU5TSUdORURfSU5UNjRfTEUgPSAxMCwKLSAgICBVTlNJR05FRF9JTlQ2NF9CRSA9IDExLAotICAgIFNJR05FRF9JTlQ2NF9MRSA9IDEyLAotICAgIFNJR05FRF9JTlQ2NF9CRSA9IDEzLAotICAgIElFRUVfNzU0X0ZMT0FUX0xFID0gMTQsCi0gICAgSUVFRV83NTRfRkxPQVRfQkUgPSAxNSwKLSAgICBJRUVFXzc1NF9ET1VCTEVfTEUgPSAxNiwKLSAgICBJRUVFXzc1NF9ET1VCTEVfQkUgPSAxNywKLSAgICBVVEYxNl9MRSA9IDE4LAotICAgIFVURjE2X0JFID0gMTksCi0gICAgVVRGMzJfTEUgPSAyMCwKLSAgICBVVEYzMl9CRSA9IDIxCi19OwotI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01JTiAwCi0jZGVmaW5lIE1BQ0hJTkVfRk9STUFUX0NPREVfTUFYIDIxCi0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWZvcm1hdGRlc2NyIHsKICAgICBzaXplX3Qgc2l6ZTsKICAgICBpbnQgaXNfc2lnbmVkOwpAQCAtMTgzNSwyMSArMTkyNSwyOSBAQAogICogVGhpcyBmdW5jdGlvbnMgaXMgYSBzcGVjaWFsIGNvbnN0cnVjdG9yIHVzZWQgd2hlbiB1bnBpY2tsaW5nIGFuIGFycmF5LiBJdAogICogcHJvdmlkZXMgYSBwb3J0YWJsZSB3YXkgdG8gcmVidWlsZCBhbiBhcnJheSBmcm9tIGl0cyBtZW1vcnkgcmVwcmVzZW50YXRpb24uCiAgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5Ll9hcnJheV9yZWNvbnN0cnVjdG9yCisKKyAgICBhcnJheXR5cGU6IG9iamVjdCh0eXBlPSJQeVR5cGVPYmplY3QgKiIpCisgICAgdHlwZWNvZGU6IGludChhY2NlcHQ9e3N0cn0pCisgICAgbWZvcm1hdF9jb2RlOiBpbnQodHlwZT0iZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIikKKyAgICBpdGVtczogb2JqZWN0CisgICAgLworCitJbnRlcm5hbC4gVXNlZCBmb3IgcGlja2xpbmcgc3VwcG9ydC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3JlY29uc3RydWN0b3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgbWZvcm1hdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmVjYmYwZThlNGQ5MmFiOSBpbnB1dD0yNDY0ZGM4ZjRjNzczNmI1XSovCiB7Ci0gICAgUHlUeXBlT2JqZWN0ICphcnJheXR5cGU7Ci0gICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgdHlwZWNvZGU7Ci0gICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZTsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86YXJyYXkuX2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYSB0eXBlIG9iamVjdCwgbm90ICUuMjAwcyIsCkBAIC0yMDAwLDcgKzIwOTgsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgZm9yIChkZXNjciA9IGRlc2NyaXB0b3JzOyBkZXNjci0+dHlwZWNvZGUgIT0gJ1wwJzsgZGVzY3IrKykgewogICAgICAgICAgICAgaWYgKGRlc2NyLT5pc19pbnRlZ2VyX3R5cGUgJiYKLSAgICAgICAgICAgICAgICBkZXNjci0+aXRlbXNpemUgPT0gbWZfZGVzY3Iuc2l6ZSAmJgorICAgICAgICAgICAgICAgIChzaXplX3QpZGVzY3ItPml0ZW1zaXplID09IG1mX2Rlc2NyLnNpemUgJiYKICAgICAgICAgICAgICAgICBkZXNjci0+aXNfc2lnbmVkID09IG1mX2Rlc2NyLmlzX3NpZ25lZCkKICAgICAgICAgICAgICAgICB0eXBlY29kZSA9IGRlc2NyLT50eXBlY29kZTsKICAgICAgICAgfQpAQCAtMjAzOCwxMyArMjEzNiwyMyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5Ll9fcmVkdWNlX2V4X18KKworICAgIHZhbHVlOiBvYmplY3QKKyAgICAvCisKK1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9yZWR1Y2VfZXgoYXJyYXlvYmplY3QgKmFycmF5LCBQeU9iamVjdCAqdmFsdWUpCithcnJheV9hcnJheV9fX3JlZHVjZV9leF9fKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDUxZTBhNjE3NWQwZWRkYiBpbnB1dD1jMzZjM2Y4NWRlN2RmNmNkXSovCiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqYXJyYXlfc3RyOwotICAgIGludCB0eXBlY29kZSA9IGFycmF5LT5vYl9kZXNjci0+dHlwZWNvZGU7CisgICAgaW50IHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwogICAgIGludCBtZm9ybWF0X2NvZGU7CiAgICAgc3RhdGljIFB5T2JqZWN0ICphcnJheV9yZWNvbnN0cnVjdG9yID0gTlVMTDsKICAgICBsb25nIHByb3RvY29sOwpAQCAtMjA3Miw3ICsyMTgwLDcgQEAKICAgICBpZiAocHJvdG9jb2wgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilhcnJheSwgJlB5SWRfX19kaWN0X18pOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwOTUsMzIgKzIyMDMsMzAgQEAKICAgICAgICAgICogY29lcmNpbmcgdW5pY29kZSBvYmplY3RzIHRvIGJ5dGVzIGluIGFycmF5X3JlY29uc3RydWN0b3IuCiAgICAgICAgICAqLwogICAgICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICAgICAgbGlzdCA9IGFycmF5X3RvbGlzdChhcnJheSwgTlVMTCk7CisgICAgICAgIGxpc3QgPSBhcnJheV9hcnJheV90b2xpc3RfaW1wbChzZWxmKTsKICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgICAgICJPKENPKU8iLCBQeV9UWVBFKGFycmF5KSwgdHlwZWNvZGUsIGxpc3QsIGRpY3QpOworICAgICAgICAgICAgIk8oQ08pTyIsIFB5X1RZUEUoc2VsZiksIHR5cGVjb2RlLCBsaXN0LCBkaWN0KTsKICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwogICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgYXJyYXlfc3RyID0gYXJyYXlfdG9ieXRlcyhhcnJheSwgTlVMTCk7CisgICAgYXJyYXlfc3RyID0gYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKHNlbGYpOwogICAgIGlmIChhcnJheV9zdHIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTyhPQ2lOKU8iLCBhcnJheV9yZWNvbnN0cnVjdG9yLCBQeV9UWVBFKGFycmF5KSwgdHlwZWNvZGUsCisgICAgICAgICJPKE9DaU4pTyIsIGFycmF5X3JlY29uc3RydWN0b3IsIFB5X1RZUEUoc2VsZiksIHR5cGVjb2RlLAogICAgICAgICBtZm9ybWF0X2NvZGUsIGFycmF5X3N0ciwgZGljdCk7CiAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2dldF90eXBlY29kZShhcnJheW9iamVjdCAqYSwgdm9pZCAqY2xvc3VyZSkKIHsKQEAgLTIxNDMsNTUgKzIyNDksMzEgQEAKIH07CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBhcnJheV9tZXRob2RzW10gPSB7Ci0gICAgeyJhcHBlbmQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfYXBwZW5kLCAgICAgIE1FVEhfTywKLSAgICAgYXBwZW5kX2RvY30sCi0gICAgeyJidWZmZXJfaW5mbyIsICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfYnVmZmVyX2luZm8sIE1FVEhfTk9BUkdTLAotICAgICBidWZmZXJfaW5mb19kb2N9LAotICAgIHsiYnl0ZXN3YXAiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2J5dGVzd2FwLCAgICBNRVRIX05PQVJHUywKLSAgICAgYnl0ZXN3YXBfZG9jfSwKLSAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3B5LCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIGNvcHlfZG9jfSwKLSAgICB7ImNvdW50IiwgICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3VudCwgICAgICAgTUVUSF9PLAotICAgICBjb3VudF9kb2N9LAotICAgIHsiX19kZWVwY29weV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2NvcHksICAgICAgICBNRVRIX08sCi0gICAgIGNvcHlfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9leHRlbmQsICAgICAgTUVUSF9PLAotICAgICBleHRlbmRfZG9jfSwKLSAgICB7ImZyb21maWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tZmlsZSwgICAgTUVUSF9WQVJBUkdTLAotICAgICBmcm9tZmlsZV9kb2N9LAotICAgIHsiZnJvbWxpc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21saXN0LCAgICBNRVRIX08sCi0gICAgIGZyb21saXN0X2RvY30sCi0gICAgeyJmcm9tc3RyaW5nIiwgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfZnJvbXN0cmluZywgIE1FVEhfVkFSQVJHUywKLSAgICAgZnJvbXN0cmluZ19kb2N9LAotICAgIHsiZnJvbWJ5dGVzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21ieXRlcywgICBNRVRIX1ZBUkFSR1MsCi0gICAgIGZyb21ieXRlc19kb2N9LAotICAgIHsiZnJvbXVuaWNvZGUiLCAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb211bmljb2RlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIGZyb211bmljb2RlX2RvY30sCi0gICAgeyJpbmRleCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfaW5kZXgsICAgICAgIE1FVEhfTywKLSAgICAgaW5kZXhfZG9jfSwKLSAgICB7Imluc2VydCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9pbnNlcnQsICAgICAgTUVUSF9WQVJBUkdTLAotICAgICBpbnNlcnRfZG9jfSwKLSAgICB7InBvcCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9wb3AsICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICBwb3BfZG9jfSwKLSAgICB7Il9fcmVkdWNlX2V4X18iLCAgIChQeUNGdW5jdGlvbilhcnJheV9yZWR1Y2VfZXgsICAgTUVUSF9PLAotICAgICByZWR1Y2VfZG9jfSwKLSAgICB7InJlbW92ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9yZW1vdmUsICAgICAgTUVUSF9PLAotICAgICByZW1vdmVfZG9jfSwKLSAgICB7InJldmVyc2UiLCAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9yZXZlcnNlLCAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHJldmVyc2VfZG9jfSwKLSAgICB7InRvZmlsZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2ZpbGUsICAgICAgTUVUSF9PLAotICAgICB0b2ZpbGVfZG9jfSwKLSAgICB7InRvbGlzdCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2xpc3QsICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvbGlzdF9kb2N9LAotICAgIHsidG9zdHJpbmciLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3Rvc3RyaW5nLCAgICBNRVRIX05PQVJHUywKLSAgICAgdG9zdHJpbmdfZG9jfSwKLSAgICB7InRvYnl0ZXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2J5dGVzLCAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvYnl0ZXNfZG9jfSwKLSAgICB7InRvdW5pY29kZSIsICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b3VuaWNvZGUsICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvdW5pY29kZV9kb2N9LAotICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3NpemVvZiwgICAgICBNRVRIX05PQVJHUywKLSAgICAgc2l6ZW9mX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBBUlJBWV9BUlJBWV9BUFBFTkRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfQlVGRkVSX0lORk9fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfQllURVNXQVBfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfX19DT1BZX19fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfQ09VTlRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0VYVEVORF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NRklMRV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NTElTVF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NU1RSSU5HX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0ZST01CWVRFU19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NVU5JQ09ERV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9JTkRFWF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9JTlNFUlRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfUE9QX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX19fUkVEVUNFX0VYX19fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfUkVNT1ZFX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1JFVkVSU0VfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfVE9GSUxFX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1RPTElTVF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT1NUUklOR19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT0JZVEVTX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1RPVU5JQ09ERV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9fX1NJWkVPRl9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMjA3LDkgKzIyODksOSBAQAogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImFycmF5KCclYycpIiwgKGludCl0eXBlY29kZSk7CiAgICAgfQogICAgIGlmICh0eXBlY29kZSA9PSAndScpIHsKLSAgICAgICAgdiA9IGFycmF5X3RvdW5pY29kZShhLCBOVUxMKTsKKyAgICAgICAgdiA9IGFycmF5X2FycmF5X3RvdW5pY29kZV9pbXBsKGEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHYgPSBhcnJheV90b2xpc3QoYSwgTlVMTCk7CisgICAgICAgIHYgPSBhcnJheV9hcnJheV90b2xpc3RfaW1wbChhKTsKICAgICB9CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDQ2LDcgKzI1MjgsMTEgQEAKIHN0YXRpYyBpbnQKIGFycmF5X2J1ZmZlcl9nZXRidWYoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewotICAgIGlmICh2aWV3PT1OVUxMKSBnb3RvIGZpbmlzaDsKKyAgICBpZiAodmlldyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJhcnJheV9idWZmZXJfZ2V0YnVmOiB2aWV3PT1OVUxMIGFyZ3VtZW50IGlzIG9ic29sZXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICB2aWV3LT5idWYgPSAodm9pZCAqKXNlbGYtPm9iX2l0ZW07CiAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0KilzZWxmOwpAQCAtMjQ3Niw3ICsyNTYyLDYgQEAKICNlbmRpZgogICAgIH0KIAotIGZpbmlzaDoKICAgICBzZWxmLT5vYl9leHBvcnRzKys7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yNTg2LDE1ICsyNjcxLDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGluaXRpYWwgIT0gTlVMTCAmJiAoUHlCeXRlQXJyYXlfQ2hlY2soaW5pdGlhbCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0NoZWNrKGluaXRpYWwpKSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0X2luaXRpYWwsICp2OwotICAgICAgICAgICAgICAgIHRfaW5pdGlhbCA9IFB5VHVwbGVfUGFjaygxLCBpbml0aWFsKTsKLSAgICAgICAgICAgICAgICBpZiAodF9pbml0aWFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdiA9IGFycmF5X2Zyb21ieXRlcygoYXJyYXlvYmplY3QgKilhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2luaXRpYWwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0X2luaXRpYWwpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2OworICAgICAgICAgICAgICAgIHYgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXMoKGFycmF5b2JqZWN0ICopYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3NjYsMTYgKzI4NDUsMTAgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqIEFycmF5IEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OwotICAgIGFycmF5b2JqZWN0ICAgICAgICAgICAgICAgICAqYW87Ci0gICAgUHlPYmplY3QgICAgICAgICAgICAgICAgICAgICogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7Ci19IGFycmF5aXRlcm9iamVjdDsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBQeUFycmF5SXRlcl9UeXBlOwotCi0jZGVmaW5lIFB5QXJyYXlJdGVyX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeUFycmF5SXRlcl9UeXBlKQorLypbY2xpbmljIGlucHV0XQorY2xhc3MgYXJyYXkuYXJyYXlpdGVyYXRvciAiYXJyYXlpdGVyb2JqZWN0ICoiICImUHlBcnJheUl0ZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTVhZWZkMmQ3NGQ4YzhlMzBdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2l0ZXIoYXJyYXlvYmplY3QgKmFvKQpAQCAtMjgyMywzMyArMjg5Niw0NyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYXJyYXlpdGVyX3JlZHVjZShhcnJheWl0ZXJvYmplY3QgKml0KQotewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgaXQtPmFvLCBpdC0+aW5kZXgpOwotfQorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXlpdGVyYXRvci5fX3JlZHVjZV9fCisKK1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheWl0ZXJfc2V0c3RhdGUoYXJyYXlpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQorYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoYXJyYXlpdGVyb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc4OThhNTJlOGU2NmUwMTYgaW5wdXQ9YTA2MmVhMWU5OTUxNDE3YV0qLworeworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YW8sIHNlbGYtPmluZGV4KTsKK30KKworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXlpdGVyYXRvci5fX3NldHN0YXRlX18KKworICAgIHN0YXRlOiBvYmplY3QKKyAgICAvCisKK1NldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5aXRlcmF0b3JfX19zZXRzdGF0ZV9fKGFycmF5aXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM5N2RhOTkwNGU0NDNjYmUgaW5wdXQ9ZjQ3ZDVjZWRhMTllNzg3Yl0qLwogewogICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSAwOwotICAgIGVsc2UgaWYgKGluZGV4ID4gUHlfU0laRShpdC0+YW8pKQotICAgICAgICBpbmRleCA9IFB5X1NJWkUoaXQtPmFvKTsgLyogaXRlcmF0b3IgZXhoYXVzdGVkICovCi0gICAgaXQtPmluZGV4ID0gaW5kZXg7CisgICAgZWxzZSBpZiAoaW5kZXggPiBQeV9TSVpFKHNlbGYtPmFvKSkKKyAgICAgICAgaW5kZXggPSBQeV9TSVpFKHNlbGYtPmFvKTsgLyogaXRlcmF0b3IgZXhoYXVzdGVkICovCisgICAgc2VsZi0+aW5kZXggPSBpbmRleDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKIHN0YXRpYyBQeU1ldGhvZERlZiBhcnJheWl0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAotICAgICByZWR1Y2VfZG9jfSwKLSAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKLSAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICBBUlJBWV9BUlJBWUlURVJBVE9SX19fUkVEVUNFX19fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yODkwLDM5ICsyOTc3LDIxIEBACiAKIC8qIE5vIGZ1bmN0aW9ucyBpbiBhcnJheSBtb2R1bGUuICovCiBzdGF0aWMgUHlNZXRob2REZWYgYV9tZXRob2RzW10gPSB7Ci0gICAgeyJfYXJyYXlfcmVjb25zdHJ1Y3RvciIsIGFycmF5X3JlY29uc3RydWN0b3IsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlEb2NfU1RSKCJJbnRlcm5hbC4gVXNlZCBmb3IgcGlja2xpbmcgc3VwcG9ydC4iKX0sCisgICAgQVJSQVlfX0FSUkFZX1JFQ09OU1RSVUNUT1JfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEwsIDAsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIAotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBhcnJheW1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImFycmF5IiwKLSAgICBtb2R1bGVfZG9jLAotICAgIC0xLAotICAgIGFfbWV0aG9kcywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfYXJyYXkodm9pZCkKK3N0YXRpYyBpbnQKK2FycmF5X21vZGV4ZWMoUHlPYmplY3QgKm0pCiB7Ci0gICAgUHlPYmplY3QgKm07CiAgICAgY2hhciBidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGRlc2NyaXB0b3JzKV0sICpwOwogICAgIFB5T2JqZWN0ICp0eXBlY29kZXM7CiAgICAgUHlfc3NpemVfdCBzaXplID0gMDsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9UWVBFKCZQeUFycmF5SXRlcl9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKLSAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZhcnJheW1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJkFycmF5dHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJBcnJheVR5cGUiLCAoUHlPYmplY3QgKikmQXJyYXl0eXBlKTsKQEAgLTI5NDUsNSArMzAxNCwzMCBAQAogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIG0gPSBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3QgYXJyYXlzbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgYXJyYXlfbW9kZXhlY30sCisgICAgezAsIE5VTEx9Cit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYXJyYXltb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJhcnJheSIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLAorICAgIGFfbWV0aG9kcywKKyAgICBhcnJheXNsb3RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfYXJyYXkodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmYXJyYXltb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKaW5kZXggOTg4NzAxNC4uNzM5YzE4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCkBAIC02MCw3ICs2MCw3IEBACiAgICAgbW9kc3RhdGUtPm5jYWxsYmFja3MgPSAwOwogfQogCi0vKiBJbnN0YWxsZWQgaW50byBweXRob25ydW4uYydzIGF0ZXhpdCBtZWNoYW5pc20gKi8KKy8qIEluc3RhbGxlZCBpbnRvIHB5bGlmZWN5Y2xlLmMncyBhdGV4aXQgbWVjaGFuaXNtICovCiAKIHN0YXRpYyB2b2lkCiBhdGV4aXRfY2FsbGZ1bmNzKHZvaWQpCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICAgICBpZiAoZXhjX3R5cGUpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXhjX3R5cGUpOwogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Y190Yik7ICAgIAorICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjX3RiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJmV4Y190Yik7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3lzdGVtRXhpdCkpIHsKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAicmVnaXN0ZXIoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKSIpOwotICAgICAgICByZXR1cm4gTlVMTDsgCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGZ1bmMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwpAQCAtMTU5LDcgKzE1OSw3IEBACiAKICAgICBuZXdfY2FsbGJhY2sgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKGF0ZXhpdF9jYWxsYmFjaykpOwogICAgIGlmIChuZXdfY2FsbGJhY2sgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7ICAgCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgbmV3X2NhbGxiYWNrLT5hcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKTsKICAgICBpZiAobmV3X2NhbGxiYWNrLT5hcmdzID09IE5VTEwpIHsKQEAgLTMzNiw3ICszMzYsNyBAQAogICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShtKTsKICAgICBtb2RzdGF0ZS0+Y2FsbGJhY2tfbGVuID0gMzI7CiAgICAgbW9kc3RhdGUtPm5jYWxsYmFja3MgPSAwOwotICAgIG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzID0gUHlNZW1fTmV3KGF0ZXhpdF9jYWxsYmFjayosIAorICAgIG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzID0gUHlNZW1fTmV3KGF0ZXhpdF9jYWxsYmFjayosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc3RhdGUtPmNhbGxiYWNrX2xlbik7CiAgICAgaWYgKG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdWRpb29wLmMgYi9Nb2R1bGVzL2F1ZGlvb3AuYwppbmRleCA1ZWZlZDBjLi5iYmM0NThmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F1ZGlvb3AuYworKysgYi9Nb2R1bGVzL2F1ZGlvb3AuYwpAQCAtMzkxLDEwICszOTEsOSBAQAogfQogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSBhdWRpb29wCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01NjE5ZjkzNWYyNjkxOTlhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04ZmE4ZjY2MTFiZTM1OTFhXSovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGF1ZGlvb3AuZ2V0c2FtcGxlCkBAIC00MDgsOCArNDA3LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeV9zc2l6ZV90IGluZGV4KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0NDgyNDk3ZTZmNmU3OGYgaW5wdXQ9ODhlZGJlMjg3MTM5MzU0OV0qLworYXVkaW9vcF9nZXRzYW1wbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5kZXgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzk5NWUxODlmZGM4ZWMxNiBpbnB1dD04OGVkYmUyODcxMzkzNTQ5XSovCiB7CiAgICAgaW50IHZhbDsKIApAQCAtNTk0LDggKzU5NCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBQeV9idWZmZXIgKnJlZmVyZW5jZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MDVmZDA0ZDQyNDRkYjMxIGlucHV0PTYyYzMwNTYwNWUxODNjOWFdKi8KK2F1ZGlvb3BfZmluZGZpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MDllZWRmNWQ4MjNkNmRkIGlucHV0PTYyYzMwNTYwNWUxODNjOWFdKi8KIHsKICAgICBjb25zdCBzaG9ydCAqY3AxLCAqY3AyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKQEAgLTY2Miw4ICs2NjMsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfYnVmZmVyICpyZWZlcmVuY2UpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGRmMzVhMWU1NzU3NWNlNCBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCithdWRpb29wX2ZpbmRmYWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTU2NmE4YzU1ZGU1NGY5OSBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCiB7CiAgICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTcwMyw4ICs3MDUsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfc3NpemVfdCBsZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjFkMGMyYTFlNTY1NTEzNCBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCithdWRpb29wX2ZpbmRtYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDFmZTc5NmZhZDI1NzNiYiBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCiB7CiAgICAgY29uc3Qgc2hvcnQgKmNwMTsKICAgICBQeV9zc2l6ZV90IGxlbjE7CkBAIC04OTcsOCArOTAwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbXVsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBkb3VibGUgZmFjdG9yKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2OTdlYmJkNTg1MmQzOGYgaW5wdXQ9YzcyNjY2N2JhYTE1N2QzY10qLworYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgIGRvdWJsZSBmYWN0b3IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWM3YzMxMTkxYWM4NmIxMCBpbnB1dD1jNzI2NjY3YmFhMTU3ZDNjXSovCiB7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC05MzgsOCArOTQyLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9tb25vX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM2ZTc3MTA1MjE2NjFkZCBpbnB1dD1jNGVjOTQ5YjNmNGRkZGZhXSovCithdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1M2Y1NDdjNWUyOWUzYjYgaW5wdXQ9YzRlYzk0OWIzZjRkZGRmYV0qLwogewogICAgIHNpZ25lZCBjaGFyICpjcCwgKm5jcDsKICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKQEAgLTk4Niw4ICs5OTEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF90b3N0ZXJlb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZmZjUwNjgxYzg3ZjRjMWMgaW5wdXQ9MjdiNjM5NWViZmRmZjM3YV0qLworYXVkaW9vcF90b3N0ZXJlb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Njk3YmI2YmE0MWU5ZGQyYyBpbnB1dD0yN2I2Mzk1ZWJmZGZmMzdhXSovCiB7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMDMzLDggKzEwMzksOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9hZGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50MSwgUHlfYnVmZmVyICpmcmFnbWVudDIsIGludCB3aWR0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mOTIxOGJmOWVhNzVjM2YxIGlucHV0PTRhOGQ0YmFlNGMxNjA1YzddKi8KK2F1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmU2YzEyZjE0M2UwYjAyNyBpbnB1dD00YThkNGJhZTRjMTYwNWM3XSovCiB7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMDkxLDggKzEwOTgsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9iaWFzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgYmlhcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZWM4MGIzZjVkNTEwYTUxIGlucHV0PTJiNWNjZTVjM2JiNDgzOGNdKi8KK2F1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgIGludCBiaWFzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFjMWY0ZGRhMjBhMDFjMjYgaW5wdXQ9MmI1Y2NlNWMzYmI0ODM4Y10qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTIxOCw4ICsxMjI2LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbGluMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IG5ld3dpZHRoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmOTQ2OGE3NDQ3MmE5M2UgaW5wdXQ9NWNlMDhjOGFhMmYyNGQ5Nl0qLworYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgaW50IG5ld3dpZHRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNiNmNhOTUwZDFkZjk4OTggaW5wdXQ9NWNlMDhjOGFhMmYyNGQ5Nl0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGksIGo7CkBAIC0xMjc1LDggKzEyODQsMTAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfcmF0ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmNoYW5uZWxzLCBpbnQgaW5yYXRlLCBpbnQgb3V0cmF0ZSwgUHlPYmplY3QgKnN0YXRlLCBpbnQgd2VpZ2h0QSwgaW50IHdlaWdodEIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTU4NWRkZGM0YjVmZjIzNiBpbnB1dD1hZmYzYWNkYzk0NDc2MTkxXSovCithdWRpb29wX3JhdGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IG5jaGFubmVscywgaW50IGlucmF0ZSwgaW50IG91dHJhdGUsIFB5T2JqZWN0ICpzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHdlaWdodEEsIGludCB3ZWlnaHRCKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5ZTE3ODdiZmE0OWI5ZDkgaW5wdXQ9YWZmM2FjZGM5NDQ3NjE5MV0qLwogewogICAgIGNoYXIgKmNwLCAqbmNwOwogICAgIFB5X3NzaXplX3QgbGVuOwpAQCAtMTYwMiw4ICsxNjEzLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbGluMmFkcGNtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeU9iamVjdCAqc3RhdGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDY1NGMyOWQyNzMxZmFmZSBpbnB1dD0xMjkxOWQ1NDliOTBjOTBhXSovCithdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzZjA5OTZmNTkyYjVjZTUgaW5wdXQ9MTI5MTlkNTQ5YjkwYzkwYV0qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTcyOSw4ICsxNzQxLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYWRwY20ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeU9iamVjdCAqc3RhdGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcxOTY1Y2RjYzBhYTY5YiBpbnB1dD1mNTIyMTE0NGY1Y2E5ZWYwXSovCithdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNmNmNmRjMmM4MjkxODEgaW5wdXQ9ZjUyMjExNDRmNWNhOWVmMF0qLwogewogICAgIHNpZ25lZCBjaGFyICpjcDsKICAgICBzaWduZWQgY2hhciAqbmNwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IGVhMTRkM2MuLmQ5MjBkMjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTU2LDYgKzU2LDcgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKICNpZmRlZiBVU0VfWkxJQl9DUkMzMgogI2luY2x1ZGUgInpsaWIuaCIKICNlbmRpZgpAQCAtMTg0LDEwICsxODUsOSBAQAogfTsKIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgYmluYXNjaWkKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTQ0YzZmODQwY2U3MDhmMGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWRlODlmYjQ2YmNhZjNmZWNdKi8KIAogLypbcHl0aG9uIGlucHV0XQogCkBAIC0xMTE4LDMzICsxMTE4LDcgQEAKIGJpbmFzY2lpX2IyYV9oZXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTc5MzE4OTIyYzJmOGZkYSBpbnB1dD05NjQyM2NmYTI5OWZmM2IxXSovCiB7Ci0gICAgY2hhciogYXJnYnVmOwotICAgIFB5X3NzaXplX3QgYXJnbGVuOwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgY2hhciogcmV0YnVmOwotICAgIFB5X3NzaXplX3QgaSwgajsKLQotICAgIGFyZ2J1ZiA9IGRhdGEtPmJ1ZjsKLSAgICBhcmdsZW4gPSBkYXRhLT5sZW47Ci0KLSAgICBhc3NlcnQoYXJnbGVuID49IDApOwotICAgIGlmIChhcmdsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgcmV0dmFsID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhcmdsZW4qMik7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJldHZhbCk7Ci0KLSAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLwotICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIGMgPSAoYXJnYnVmW2ldID4+IDQpICYgMHhmOwotICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKLSAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXhfYnl0ZXMoKGNvbnN0IGNoYXIgKilkYXRhLT5idWYsIGRhdGEtPmxlbik7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTExNTksNyArMTEzMyw3IEBACiBiaW5hc2NpaV9oZXhsaWZ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwOTg0NDAwOTFmYjYxZGMgaW5wdXQ9MmUzYWZhZTdmMDgzZjA2MV0qLwogewotICAgIHJldHVybiBiaW5hc2NpaV9iMmFfaGV4X2ltcGwobW9kdWxlLCBkYXRhKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleF9ieXRlcygoY29uc3QgY2hhciAqKWRhdGEtPmJ1ZiwgZGF0YS0+bGVuKTsKIH0KIAogc3RhdGljIGludApAQCAtMTM4Miw4ICsxMzU2LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9xcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywgaW50IGlzdGV4dCwgaW50IGhlYWRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjI5OTFiYTY0MGZmZjNlIGlucHV0PTdmMmE5YWFhMDA4ZTkyYjJdKi8KK2JpbmFzY2lpX2IyYV9xcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywKKyAgICAgICAgICAgICAgICAgICAgIGludCBpc3RleHQsIGludCBoZWFkZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg3Y2E5Y2NiOTRlMmE5ZiBpbnB1dD03ZjJhOWFhYTAwOGU5MmIyXSovCiB7CiAgICAgUHlfc3NpemVfdCBpbiwgb3V0OwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGFidWYsICpvZGF0YTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKaW5kZXggNWM0MDFhYS4uMWNlNDIxOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKQEAgLTI5Miw3ICsyOTIsNyBAQAogICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmluYnVmLCBQeV9zc2l6ZV90ICppbmxlZnQpCiB7CiAgICAgdW5zaWduZWQgY2hhciBjaGFyc2V0LCBkZXNpZ25hdGlvbjsKLSAgICBQeV9zc2l6ZV90IGksIGVzY2xlbjsKKyAgICBQeV9zc2l6ZV90IGksIGVzY2xlbiA9IDA7CiAKICAgICBmb3IgKGkgPSAxO2kgPCBNQVhfRVNDU0VRTEVOO2krKykgewogICAgICAgICBpZiAoaSA+PSAqaW5sZWZ0KQpAQCAtMzA3LDEwICszMDcsOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGkgPj0gTUFYX0VTQ1NFUUxFTikKLSAgICAgICAgcmV0dXJuIDE7IC8qIHVudGVybWluYXRlZCBlc2NhcGUgc2VxdWVuY2UgKi8KLQogICAgIHN3aXRjaCAoZXNjbGVuKSB7CisgICAgY2FzZSAwOgorICAgICAgICByZXR1cm4gMTsgLyogdW50ZXJtaW5hdGVkIGVzY2FwZSBzZXF1ZW5jZSAqLwogICAgIGNhc2UgMzoKICAgICAgICAgaWYgKElOQllURTIgPT0gJyQnKSB7CiAgICAgICAgICAgICBjaGFyc2V0ID0gSU5CWVRFMyB8IENIQVJTRVRfREJDUzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKaW5kZXggZDE1Y2NmYi4uMjM2NDJkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgbyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCAoY2hhciopc3ltYm9sKTsKKyAgICBvID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsIHN5bWJvbCk7CiAgICAgaWYgKG8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgZWxzZSBpZiAoIVB5Q2Fwc3VsZV9Jc1ZhbGlkKG8sIFB5TXVsdGlieXRlQ29kZWNfQ0FQU1VMRV9OQU1FKSkgewpAQCAtNDAxLDcgKzQwMSw3IEBACiAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUHlPYmplY3QqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlNT0RJTklUX0ZVTkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgUHlJbml0X19jb2RlY3NfIyNsb2Modm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFB5T2JqZWN0ICptID0gUHlNb2R1bGVfQ3JlYXRlKCZfX21vZHVsZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTQ3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaApAQCAtMCwwICsxLDMyMCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19fLAorImVuY29kZSgkc2VsZiwgLywgaW5wdXQsIGVycm9ycz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIGVuY29kZWQgc3RyaW5nIHZlcnNpb24gb2YgYGlucHV0XCcuXG4iCisiXG4iCisiXCdlcnJvcnNcJyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpc1xuIgorIlwnc3RyaWN0XCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gT3RoZXIgcG9zc2libGVcbiIKKyJ2YWx1ZXMgYXJlIFwnaWdub3JlXCcsIFwncmVwbGFjZVwnIGFuZCBcJ3htbGNoYXJyZWZyZXBsYWNlXCcgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZVxuIgorInJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFVuaWNvZGVFbmNvZGVFcnJvcnMuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1dDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6OmVuY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBpbnB1dCwgZXJyb3JzPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGVzIFwnaW5wdXRcJy5cbiIKKyJcbiIKKyJcJ2Vycm9yc1wnIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzXG4iCisiXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZVxuIgorInZhbHVlcyBhcmUgXCdpZ25vcmVcJyBhbmQgXCdyZXBsYWNlXCcgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGhcbiIKKyJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLlwiIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgaW5wdXQgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfHo6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKHNlbGYsICZpbnB1dCwgZXJyb3JzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBpbnB1dCAqLworICAgIGlmIChpbnB1dC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX19kb2NfXywKKyJlbmNvZGUoJHNlbGYsIC8sIGlucHV0LCBmaW5hbD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlucHV0OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZW5jb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxFTkNPREVSX1JFU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXNldCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfX2RvY19fLAorImRlY29kZSgkc2VsZiwgLywgaW5wdXQsIGZpbmFsPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpOmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBpbnB1dCAqLworICAgIGlmIChpbnB1dC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX1JFU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXNldCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplb2JqPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWQsIE1FVEhfVkFSQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZW9iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2l6ZW9iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnNpemVvYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoc2VsZiwgc2l6ZW9iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplb2JqPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZW9iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpemVvYmogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmc2l6ZW9iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZW9iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX19kb2NfXywKKyJyZWFkbGluZXMoJHNlbGYsIHNpemVoaW50b2JqPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRExJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZXMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXMoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnNpemVoaW50b2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX2ltcGwoc2VsZiwgc2l6ZWhpbnRvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBzdHJvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGUsIE1FVEhfTywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZWxpbmVzX19kb2NfXywKKyJ3cml0ZWxpbmVzKCRzZWxmLCBsaW5lcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9XUklURUxJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVsaW5lcywgTUVUSF9PLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlbGluZXNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1JFU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXNldCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9pbXBsKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0KE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjX19kb2NfXywKKyJfX2NyZWF0ZV9jb2RlYygkbW9kdWxlLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19fX0NSRUFURV9DT0RFQ19NRVRIT0RERUYgICAgXAorICAgIHsiX19jcmVhdGVfY29kZWMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVlYmIyMWUxOGMzMDQzZDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKaW5kZXggZTBkOWI2Ny4uZTQ1NDdmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC04LDYgKzgsMTMgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJtdWx0aWJ5dGVjb2RlYy5oIgorI2luY2x1ZGUgImNsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfbXVsdGlieXRlY29kZWMKK2NsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVDb2RlYyAiTXVsdGlieXRlQ29kZWNPYmplY3QgKiIgIiZNdWx0aWJ5dGVDb2RlY19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmFkNjg5NTQ2Y2JiNTQ1MF0qLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QgICAgICAgICAgICAqaW5vYmo7CkBAIC0yMiwyNyArMjksNyBAQAogICAgIF9QeVVuaWNvZGVXcml0ZXIgICAgd3JpdGVyOwogfSBNdWx0aWJ5dGVEZWNvZGVCdWZmZXI7CiAKLVB5RG9jX1NUUlZBUihNdWx0aWJ5dGVDb2RlY19FbmNvZGVfX2RvY19fLAotIkkuZW5jb2RlKHVuaWNvZGVbLCBlcnJvcnNdKSAtPiAoc3RyaW5nLCBsZW5ndGggY29uc3VtZWQpXG5cCi1cblwKLVJldHVybiBhbiBlbmNvZGVkIHN0cmluZyB2ZXJzaW9uIG9mIGB1bmljb2RlJy4gZXJyb3JzIG1heSBiZSBnaXZlbiB0b1xuXAotc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXRcblwKLWVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZVxuXAotJ2lnbm9yZScsICdyZXBsYWNlJyBhbmQgJ3htbGNoYXJyZWZyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lXG5cCi1yZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwotCi1QeURvY19TVFJWQVIoTXVsdGlieXRlQ29kZWNfRGVjb2RlX19kb2NfXywKLSJJLmRlY29kZShzdHJpbmdbLCBlcnJvcnNdKSAtPiAodW5pY29kZW9iamVjdCwgbGVuZ3RoIGNvbnN1bWVkKVxuXAotXG5cCi1EZWNvZGVzIGBzdHJpbmcnIHVzaW5nIEksIGFuIE11bHRpYnl0ZUNvZGVjIGluc3RhbmNlLiBlcnJvcnMgbWF5IGJlIGdpdmVuXG5cCi10byBzZXQgYSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmdcblwKLXRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXNcblwKLWFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG5cCi1jb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOwotCi1zdGF0aWMgY2hhciAqY29kZWNrd2FyZ2xpc3RbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CiBzdGF0aWMgY2hhciAqaW5jbmV3a3dhcmdsaXN0W10gPSB7ImVycm9ycyIsIE5VTEx9Owotc3RhdGljIGNoYXIgKmluY3JlbWVudGFsa3dhcmdsaXN0W10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CiBzdGF0aWMgY2hhciAqc3RyZWFta3dhcmdsaXN0W10gPSB7InN0cmVhbSIsICJlcnJvcnMiLCBOVUxMfTsKIAogc3RhdGljIFB5T2JqZWN0ICptdWx0aWJ5dGVjb2RlY19lbmNvZGUoTXVsdGlieXRlQ29kZWMgKiwKQEAgLTU1MywyNiArNTQwLDM3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVDb2RlYy5lbmNvZGUKKworICBpbnB1dDogb2JqZWN0CisgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorCitSZXR1cm4gYW4gZW5jb2RlZCBzdHJpbmcgdmVyc2lvbiBvZiBgaW5wdXQnLgorCisnZXJyb3JzJyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcworJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUKK3ZhbHVlcyBhcmUgJ2lnbm9yZScsICdyZXBsYWNlJyBhbmQgJ3htbGNoYXJyZWZyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lCityZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotTXVsdGlieXRlQ29kZWNfRW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2IyNjY1MjA0NWJhNTZhOSBpbnB1dD0wNWY2Y2VkM2M4ZGQwNTgyXSovCiB7CiAgICAgTXVsdGlieXRlQ29kZWNfU3RhdGUgc3RhdGU7Ci0gICAgUHlPYmplY3QgKmVycm9yY2IsICpyLCAqYXJnLCAqdWN2dDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqciwgKnVjdnQ7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6OmVuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNrd2FyZ2xpc3QsICZhcmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGlucHV0KSkKICAgICAgICAgdWN2dCA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFyZyA9IHVjdnQgPSBQeU9iamVjdF9TdHIoYXJnKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQorICAgICAgICBpbnB1dCA9IHVjdnQgPSBQeU9iamVjdF9TdHIoaW5wdXQpOworICAgICAgICBpZiAoaW5wdXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhpbnB1dCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgImNvdWxkbid0IGNvbnZlcnQgdGhlIG9iamVjdCB0byB1bmljb2RlLiIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVjdnQpOwpAQCAtNTgwLDExICs1NzgsMTEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA8IDApIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA8IDApIHsKICAgICAgICAgUHlfWERFQ1JFRih1Y3Z0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpOworICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAKICAgICBlcnJvcmNiID0gaW50ZXJuYWxfZXJyb3JfY2FsbGJhY2soZXJyb3JzKTsKICAgICBpZiAoZXJyb3JjYiA9PSBOVUxMKSB7CkBAIC01OTYsNyArNTk0LDcgQEAKICAgICAgICAgc2VsZi0+Y29kZWMtPmVuY2luaXQoJnN0YXRlLCBzZWxmLT5jb2RlYy0+Y29uZmlnKSAhPSAwKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICByID0gbXVsdGlieXRlY29kZWNfZW5jb2RlKHNlbGYtPmNvZGVjLCAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgTlVMTCwgZXJyb3JjYiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQsIE5VTEwsIGVycm9yY2IsCiAgICAgICAgICAgICAgICAgICAgIE1CRU5DX0ZMVVNIIHwgTUJFTkNfUkVTRVQpOwogICAgIGlmIChyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwpAQCAtNjExLDMxICs2MDksNDEgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUNvZGVjLmRlY29kZQorCisgIGlucHV0OiBQeV9idWZmZXIKKyAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisKK0RlY29kZXMgJ2lucHV0Jy4KKworJ2Vycm9ycycgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMKKydzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlCit2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGgKK2NvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzIGFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotTXVsdGlieXRlQ29kZWNfRGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmNDE5ZjY1YmFkNmNjNzcgaW5wdXQ9YTdkNDVmODdmNzVlNWUwMl0qLwogewogICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlIHN0YXRlOwogICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciBidWY7CiAgICAgUHlPYmplY3QgKmVycm9yY2IsICpyZXM7Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIGNvbnN0IGNoYXIgKmRhdGEsICplcnJvcnMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8ejpkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVja3dhcmdsaXN0LCAmcGRhdGEsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIGRhdGFsZW4gPSBwZGF0YS5sZW47CisgICAgZGF0YSA9IGlucHV0LT5idWY7CisgICAgZGF0YWxlbiA9IGlucHV0LT5sZW47CiAKICAgICBlcnJvcmNiID0gaW50ZXJuYWxfZXJyb3JfY2FsbGJhY2soZXJyb3JzKTsKICAgICBpZiAoZXJyb3JjYiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGRhdGFsZW4gPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKICAgICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoUHlVbmljb2RlX05ldygwLCAwKSwgMCk7CiAgICAgfQpAQCAtNjY4LDEzICs2NzYsMTEgQEAKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CiAgICAgRVJST1JfREVDUkVGKGVycm9yY2IpOwogICAgIHJldHVybiBtYWtlX3R1cGxlKHJlcywgZGF0YWxlbik7CiAKIGVycm9yZXhpdDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgRVJST1JfREVDUkVGKGVycm9yY2IpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZidWYud3JpdGVyKTsKQEAgLTY4MywxMyArNjg5LDkgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtdWx0aWJ5dGVjb2RlY19tZXRob2RzW10gPSB7Ci0gICAgeyJlbmNvZGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pTXVsdGlieXRlQ29kZWNfRW5jb2RlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICBNdWx0aWJ5dGVDb2RlY19FbmNvZGVfX2RvY19ffSwKLSAgICB7ImRlY29kZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilNdWx0aWJ5dGVDb2RlY19EZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgIE11bHRpYnl0ZUNvZGVjX0RlY29kZV9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFQ09ERUNfREVDT0RFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSwKIH07CiAKIHN0YXRpYyB2b2lkCkBAIC04NzMsMjYgKzg3NSwzNCBAQAogfQogCiAKLS8qKgotICogTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyIG9iamVjdAotICovCisvKltjbGluaWMgaW5wdXRdCisgY2xhc3MgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciAiTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICoiICImTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zYmU4MjkwOWNkMDg5MjRkXSovCisKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIuZW5jb2RlCisKKyAgICBpbnB1dDogb2JqZWN0CisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmllbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMjMzNjFiNmM1MDVlMmMxIGlucHV0PWEzNDVjNjg4ZmE2NjRmOTJdKi8KIHsKLSAgICBQeU9iamVjdCAqZGF0YTsKLSAgICBpbnQgZmluYWwgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmVuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsa3dhcmdsaXN0LCAmZGF0YSwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gZW5jb2Rlcl9lbmNvZGVfc3RhdGVmdWwoU1RBVEVGVUxfRUNUWChzZWxmKSwgZGF0YSwgZmluYWwpOworICAgIHJldHVybiBlbmNvZGVyX2VuY29kZV9zdGF0ZWZ1bChTVEFURUZVTF9FQ1RYKHNlbGYpLCBpbnB1dCwgZmluYWwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmllbmNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQxMjVkOGY1MzdhMjUzZiBpbnB1dD05MzBmMDY3NjA3MDdiNmVhXSovCiB7CiAgICAgLyogTG9uZ2VzdCBvdXRwdXQ6IDQgYnl0ZXMgKGInXHgwRlx4MUYoQicpIHdpdGggSVNPIDIwMjIgKi8KICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0XSwgKm91dGJ1ZjsKQEAgLTkwOSwxMSArOTE5LDkgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYmllbmNvZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImVuY29kZSIsICAgICAgICAgIChQeUNGdW5jdGlvbiltYmllbmNvZGVyX2VuY29kZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJpZW5jb2Rlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9FTkNPREVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAyNCwyNiArMTAzMiwzMSBAQAogfTsKIAogCi0vKioKLSAqIE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciBvYmplY3QKLSAqLworLypbY2xpbmljIGlucHV0XQorIGNsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIgIk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqIiAiJk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjYwMDNmYWFmMmNlYTY5Ml0qLworCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLmRlY29kZQorCisgICAgaW5wdXQ6IFB5X2J1ZmZlcgorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbWJpZGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI5YjkwOTBlOGE5Y2UyYmEgaW5wdXQ9NTc2NjMxYzYxOTA2ZDM5ZF0qLwogewogICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciBidWY7CiAgICAgY2hhciAqZGF0YSwgKndkYXRhID0gTlVMTDsKLSAgICBQeV9idWZmZXIgcGRhdGE7CiAgICAgUHlfc3NpemVfdCB3c2l6ZSwgc2l6ZSwgb3JpZ3BlbmRpbmc7Ci0gICAgaW50IGZpbmFsID0gMDsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aTpkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbGt3YXJnbGlzdCwgJnBkYXRhLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIHNpemUgPSBwZGF0YS5sZW47CisgICAgZGF0YSA9IGlucHV0LT5idWY7CisgICAgc2l6ZSA9IGlucHV0LT5sZW47CiAKICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJmJ1Zi53cml0ZXIpOwogICAgIGJ1Zi5leGNvYmogPSBOVUxMOwpAQCAtMTA5NCwxNCArMTEwNywxMiBAQAogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgaWYgKHdkYXRhICE9IGRhdGEpCiAgICAgICAgIFB5TWVtX0RlbCh3ZGF0YSk7CiAgICAgUHlfWERFQ1JFRihidWYuZXhjb2JqKTsKICAgICByZXR1cm4gcmVzOwogCiBlcnJvcmV4aXQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIGlmICh3ZGF0YSAhPSBOVUxMICYmIHdkYXRhICE9IGRhdGEpCiAgICAgICAgIFB5TWVtX0RlbCh3ZGF0YSk7CiAgICAgUHlfWERFQ1JFRihidWYuZXhjb2JqKTsKQEAgLTExMDksOCArMTEyMCwxMyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmlkZWNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGE0MjNiMTc4MmMyM2VkMSBpbnB1dD0zYjYzYjNiZTg1YjJmYjQ1XSovCiB7CiAgICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNyZXNldCAhPSBOVUxMICYmCiAgICAgICAgIHNlbGYtPmNvZGVjLT5kZWNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCkBAIC0xMTIxLDExICsxMTM3LDkgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYmlkZWNvZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRlY29kZSIsICAgICAgICAgIChQeUNGdW5jdGlvbiltYmlkZWNvZGVyX2RlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJpZGVjb2Rlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIzNiw5ICsxMjUwLDEwIEBACiB9OwogCiAKLS8qKgotICogTXVsdGlieXRlU3RyZWFtUmVhZGVyIG9iamVjdAotICovCisvKltjbGluaWMgaW5wdXRdCisgY2xhc3MgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciAiTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICoiICJNdWx0aWJ5dGVTdHJlYW1SZWFkZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQzMjM2MzRiNzQ5NzZmMDldKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG1ic3RyZWFtcmVhZGVyX2lyZWFkKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKQEAgLTEyNjAsMTAgKzEyNzUsMTAgQEAKIAogICAgICAgICBpZiAoc2l6ZWhpbnQgPCAwKQogICAgICAgICAgICAgY3JlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopbWV0aG9kLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QsIE5VTEwpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKiltZXRob2QsICJpIiwgc2l6ZWhpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgImkiLCBzaXplaGludCk7CiAgICAgICAgIGlmIChjcmVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKIApAQCAtMTM0NSwxNiArMTM2MCwyMSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlci5yZWFkCisKKyAgICBzaXplb2JqOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVhZChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU2MjFlYjc1MzU1ZDViOCBpbnB1dD0wMTViMGQzZmYyZmNhNDg1XSovCiB7Ci0gICAgUHlPYmplY3QgKnNpemVvYmogPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLCAwLCAxLCAmc2l6ZW9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemVvYmogPT0gUHlfTm9uZSB8fCBzaXplb2JqID09IE5VTEwpCisgICAgaWYgKHNpemVvYmogPT0gUHlfTm9uZSkKICAgICAgICAgc2l6ZSA9IC0xOwogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhzaXplb2JqKSkKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3Qoc2l6ZW9iaik7CkBAIC0xMzY5LDE2ICsxMzg5LDIxIEBACiAgICAgcmV0dXJuIG1ic3RyZWFtcmVhZGVyX2lyZWFkKHNlbGYsICJyZWFkIiwgc2l6ZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLnJlYWRsaW5lCisKKyAgICBzaXplb2JqOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVhZGxpbmUoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGZiZmFhZTFlZDQ1N2ExMSBpbnB1dD00MWNjYzY0ZjliYjBjZWMzXSovCiB7Ci0gICAgUHlPYmplY3QgKnNpemVvYmogPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwgMCwgMSwgJnNpemVvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzaXplb2JqID09IFB5X05vbmUgfHwgc2l6ZW9iaiA9PSBOVUxMKQorICAgIGlmIChzaXplb2JqID09IFB5X05vbmUpCiAgICAgICAgIHNpemUgPSAtMTsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc2l6ZW9iaikpCiAgICAgICAgIHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KHNpemVvYmopOwpAQCAtMTM5MywxNiArMTQxOCwyMiBAQAogICAgIHJldHVybiBtYnN0cmVhbXJlYWRlcl9pcmVhZChzZWxmLCAicmVhZGxpbmUiLCBzaXplKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIucmVhZGxpbmVzCisKKyAgICBzaXplaGludG9iajogb2JqZWN0ID0gTm9uZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtcmVhZGVyX3JlYWRsaW5lcyhNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXNfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaXplaGludG9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2M0MzEwNzY4ZWQyYWQ0IGlucHV0PTU0OTMyZjVkNGQ4OGU4ODBdKi8KIHsKLSAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmogPSBOVUxMLCAqciwgKnNyOworICAgIFB5T2JqZWN0ICpyLCAqc3I7CiAgICAgUHlfc3NpemVfdCBzaXplaGludDsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsIDAsIDEsICZzaXplaGludG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemVoaW50b2JqID09IFB5X05vbmUgfHwgc2l6ZWhpbnRvYmogPT0gTlVMTCkKKyAgICBpZiAoc2l6ZWhpbnRvYmogPT0gUHlfTm9uZSkKICAgICAgICAgc2l6ZWhpbnQgPSAtMTsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc2l6ZWhpbnRvYmopKQogICAgICAgICBzaXplaGludCA9IFB5TG9uZ19Bc1NzaXplX3Qoc2l6ZWhpbnRvYmopOwpAQCAtMTQyMyw4ICsxNDU0LDEzIEBACiAgICAgcmV0dXJuIHNyOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlci5yZXNldAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVzZXQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldF9pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzg0OTAzNzBhNjgwYWJjIGlucHV0PTVkNDE0MGRiODRiNWUxZTJdKi8KIHsKICAgICBpZiAoc2VsZi0+Y29kZWMtPmRlY3Jlc2V0ICE9IE5VTEwgJiYKICAgICAgICAgc2VsZi0+Y29kZWMtPmRlY3Jlc2V0KCZzZWxmLT5zdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKQEAgLTE0MzUsMTQgKzE0NzEsMTAgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYnN0cmVhbXJlYWRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW1yZWFkZXJfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7InJlYWRsaW5lIiwgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXJlYWRlcl9yZWFkbGluZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7InJlYWRsaW5lcyIsICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXJlYWRlcl9yZWFkbGluZXMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW1yZWFkZXJfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRUFETElORV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FU19NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFU0VUX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCiB9OwogCkBAIC0xNTY1LDkgKzE1OTcsMTAgQEAKIH07CiAKIAotLyoqCi0gKiBNdWx0aWJ5dGVTdHJlYW1Xcml0ZXIgb2JqZWN0Ci0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KKyBjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtV3JpdGVyICJNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKiIgIiZNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWNkZTIyNzgwYTIxNWQ2YWNdKi8KIAogc3RhdGljIGludAogbWJzdHJlYW13cml0ZXJfaXdyaXRlKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwKQEAgLTE1ODgsOCArMTYyMSwxNyBAQAogICAgIHJldHVybiAwOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlci53cml0ZQorCisgICAgc3Ryb2JqOiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXdyaXRlcl93cml0ZShNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJvYmopCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMTNhZTg0MWM4OTUyNTFlIGlucHV0PTU1MWRjNGMwMThjMTBhMmJdKi8KIHsKICAgICBpZiAobWJzdHJlYW13cml0ZXJfaXdyaXRlKHNlbGYsIHN0cm9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTU5Nyw4ICsxNjM5LDE3IEBACiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlci53cml0ZWxpbmVzCisKKyAgICBsaW5lczogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW13cml0ZXJfd3JpdGVsaW5lcyhNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaW5lcykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVsaW5lcyhNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxpbmVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU1YzQyODVhYzhlN2Q1MjIgaW5wdXQ9NTc3OTdmZTcwMDhkNGU5Nl0qLwogewogICAgIFB5T2JqZWN0ICpzdHJvYmo7CiAgICAgaW50IGksIHI7CkBAIC0xNjI0LDggKzE2NzUsMTMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtd3JpdGVyX3Jlc2V0KE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGY1NGE0ZDliMDNkYjVmZiBpbnB1dD1iNTZkYmNiYWYzNWNjMTBjXSovCiB7CiAgICAgUHlPYmplY3QgKnB3cnQ7CiAKQEAgLTE3MjcsMTMgKzE3ODMsMTAgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYnN0cmVhbXdyaXRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJ3cml0ZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW13cml0ZXJfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCi0gICAgeyJ3cml0ZWxpbmVzIiwgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW13cml0ZXJfd3JpdGVsaW5lcywKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSAgICB7InJlc2V0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXdyaXRlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9XUklURV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1dSSVRFTElORVNfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgUHlNZW1iZXJEZWYgbWJzdHJlYW13cml0ZXJfbWVtYmVyc1tdID0gewpAQCAtMTc4NywxMiArMTg0MCwxNiBAQAogfTsKIAogCi0vKioKLSAqIEV4cG9zZWQgZmFjdG9yeSBmdW5jdGlvbgotICovCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuX19jcmVhdGVfY29kZWMKKworICAgIGFyZzogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX19jcmVhdGVfY29kZWMoUHlPYmplY3QgKmlnbm9yZSwgUHlPYmplY3QgKmFyZykKK19tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZiZTc0ZjY1MTA2NDAxNjMgaW5wdXQ9Njg0MGIyYTZiMTgzZmNmYV0qLwogewogICAgIE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmOwogICAgIE11bHRpYnl0ZUNvZGVjICpjb2RlYzsKQEAgLTE4MTUsNyArMTg3Miw3IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgX19tZXRob2RzW10gPSB7Ci0gICAgeyJfX2NyZWF0ZV9jb2RlYyIsIChQeUNGdW5jdGlvbilfX2NyZWF0ZV9jb2RlYywgTUVUSF9PfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfX19DUkVBVEVfQ09ERUNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9LAogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAppbmRleCA4YTIwMWEwLi4zZWQ4MzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaApAQCAtMTQsMjAgKzE0LDE4IEBACiAiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiIpOwogCiAjZGVmaW5lIF9CWjJfQloyQ09NUFJFU1NPUl9DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX08sIF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzcyhCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzcyhCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kjpjb21wcmVzcyIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC04NCw4ICs4Miw3IEBACiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJDb21wcmVzc29yX1R5cGUpICYmCiAgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyQ29tcHJlc3NvciIsIGt3YXJncykpCiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInxpOkJaMkNvbXByZXNzb3IiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsCiAgICAgICAgICZjb21wcmVzc2xldmVsKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyQ29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChCWjJDb21wcmVzc29yICopc2VsZiwgY29tcHJlc3NsZXZlbCk7CkBAIC05NSwzNCArOTIsNDMgQEAKIH0KIAogUHlEb2NfU1RSVkFSKF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIC8pXG4iCisiZGVjb21wcmVzcygkc2VsZiwgLywgZGF0YSwgbWF4X2xlbmd0aD0tMSlcbiIKICItLVxuIgogIlxuIgotIlByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKKyJEZWNvbXByZXNzICpkYXRhKiwgcmV0dXJuaW5nIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLlxuIgogIlxuIgotIlJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYlwnXCcgb3RoZXJ3aXNlLlxuIgorIklmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKiBieXRlcyBvZlxuIgorImRlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIgb3V0cHV0IGNhbiBiZVxuIgorInByb2R1Y2VkLCAqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gYGBGYWxzZWBgLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXh0XG4iCisiY2FsbCB0byAqZGVjb21wcmVzcygpKiBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYlwnXCcgdG8gb2J0YWluIG1vcmUgb2YgdGhlIG91dHB1dC5cbiIKICJcbiIKLSJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkXG4iCi0icmFpc2VzIGFuIEVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtXG4iCi0iaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKKyJJZiBhbGwgb2YgdGhlIGlucHV0IGRhdGEgd2FzIGRlY29tcHJlc3NlZCBhbmQgcmV0dXJuZWQgKGVpdGhlciBiZWNhdXNlIHRoaXNcbiIKKyJ3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZSAqbWF4X2xlbmd0aCogd2FzIG5lZ2F0aXZlKSxcbiIKKyIqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gVHJ1ZS5cbiIKKyJcbiIKKyJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIHJhaXNlcyBhblxuIgorIkVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluXG4iCisidGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKIAogI2RlZmluZSBfQloyX0JaMkRFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKK19iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLAorICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKKyAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KQEAgLTE1OSw0ICsxNjUsNCBAQAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIxY2E0NDA1NTE5YTA5MzEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZjI5Yjc2YjMzMTRmYzcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTRiZTExCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKQEAgLTAsMCArMSwxMzk2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2NvZGVjc19yZWdpc3Rlcl9fZG9jX18sCisicmVnaXN0ZXIoJG1vZHVsZSwgc2VhcmNoX2Z1bmN0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVnaXN0ZXIgYSBjb2RlYyBzZWFyY2ggZnVuY3Rpb24uXG4iCisiXG4iCisiU2VhcmNoIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBlbmNvZGluZyBuYW1lIGluXG4iCisiYWxsIGxvd2VyIGNhc2UgbGV0dGVycywgYW5kIGVpdGhlciByZXR1cm4gTm9uZSwgb3IgYSB0dXBsZSBvZiBmdW5jdGlvbnNcbiIKKyIoZW5jb2RlciwgZGVjb2Rlciwgc3RyZWFtX3JlYWRlciwgc3RyZWFtX3dyaXRlcikgKG9yIGEgQ29kZWNJbmZvIG9iamVjdCkuIik7CisKKyNkZWZpbmUgX0NPREVDU19SRUdJU1RFUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVnaXN0ZXIiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yZWdpc3RlciwgTUVUSF9PLCBfY29kZWNzX3JlZ2lzdGVyX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xvb2t1cF9fZG9jX18sCisibG9va3VwKCRtb2R1bGUsIGVuY29kaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTG9va3MgdXAgYSBjb2RlYyB0dXBsZSBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5IGFuZCByZXR1cm5zIGEgQ29kZWNJbmZvIG9iamVjdC4iKTsKKworI2RlZmluZSBfQ09ERUNTX0xPT0tVUF9NRVRIT0RERUYgICAgXAorICAgIHsibG9va3VwIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbG9va3VwLCBNRVRIX08sIF9jb2RlY3NfbG9va3VwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfZW5jb2RlX19kb2NfXywKKyJlbmNvZGUoJG1vZHVsZSwgLywgb2JqLCBlbmNvZGluZz1cJ3V0Zi04XCcsIGVycm9ycz1cJ3N0cmljdFwnKVxuIgorIi0tXG4iCisiXG4iCisiRW5jb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLlxuIgorIlxuIgorIlRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIFwndXRmLThcJy4gIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGFcbiIKKyJkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBlbmNvZGluZ1xuIgorImVycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcsIFwncmVwbGFjZVwnXG4iCisiYW5kIFwnYmFja3NsYXNocmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG4iCisiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VuY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19kZWNvZGVfX2RvY19fLAorImRlY29kZSgkbW9kdWxlLCAvLCBvYmosIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiRGVmYXVsdCBlbmNvZGluZyBpcyBcJ3V0Zi04XCcuICBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhXG4iCisiZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZW5jb2RpbmdcbiIKKyJlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSBcJ2lnbm9yZVwnLCBcJ3JlcGxhY2VcJ1xuIgorImFuZCBcJ2JhY2tzbGFzaHJlcGxhY2VcJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuIgorImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CisKKyNkZWZpbmUgX0NPREVDU19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9jb2RlY3NfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19kZWNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX18sCisiX2ZvcmdldF9jb2RlYygkbW9kdWxlLCBlbmNvZGluZywgLylcbiIKKyItLVxuIgorIlxuIgorIlB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUiKTsKKworI2RlZmluZSBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9mb3JnZXRfY29kZWMiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19fZm9yZ2V0X2NvZGVjLCBNRVRIX08sIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19fZm9yZ2V0X2NvZGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6X2ZvcmdldF9jb2RlYyIsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJlc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfZXNjYXBlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZXNjYXBlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OmVzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lc2NhcGVfZW5jb2RlX19kb2NfXywKKyJlc2NhcGVfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVzY2FwZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lc2NhcGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfHo6ZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZQeUJ5dGVzX1R5cGUsICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9fZG9jX18sCisidW5pY29kZV9pbnRlcm5hbF9kZWNvZGUoJG1vZHVsZSwgb2JqLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0lOVEVSTkFMX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9pbnRlcm5hbF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCisgICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl83X2RlY29kZV9fZG9jX18sCisidXRmXzdfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfN19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl83X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl83X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl83X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfN19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzdfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzdfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfOF9kZWNvZGVfX2RvY19fLAorInV0Zl84X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzhfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfOF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfOF9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfOF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl84X2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2RlY29kZV9fZG9jX18sCisidXRmXzE2X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9fZG9jX18sCisidXRmXzE2X2xlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0xFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2xlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfbGVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9fZG9jX18sCisidXRmXzE2X2JlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0JFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2JlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfYmVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfYmVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9fZG9jX18sCisidXRmXzE2X2V4X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIGZpbmFsPUZhbHNlLFxuIgorIiAgICAgICAgICAgICAgICAgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfRVhfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfZXhfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlciwgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBieXRlb3JkZXIgPSAwOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMTZfZXhfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfbGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfTEVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfbGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9sZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9sZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfYmVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfQkVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfYmVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9iZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfZXhfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBieXRlb3JkZXI9MCwgZmluYWw9RmFsc2UsXG4iCisiICAgICAgICAgICAgICAgICAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9FWF9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9leF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9fZG9jX18sCisidW5pY29kZV9lc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6dW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1JBV19VTklDT0RFX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19sYXRpbl8xX2RlY29kZV9fZG9jX18sCisibGF0aW5fMV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTEFUSU5fMV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImxhdGluXzFfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbGF0aW5fMV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19sYXRpbl8xX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmxhdGluXzFfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2FzY2lpX2RlY29kZV9fZG9jX18sCisiYXNjaWlfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0FTQ0lJX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiYXNjaWlfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfYXNjaWlfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfYXNjaWlfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2FzY2lpX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfYXNjaWlfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6YXNjaWlfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19jaGFybWFwX2RlY29kZV9fZG9jX18sCisiY2hhcm1hcF9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIG1hcHBpbmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19DSEFSTUFQX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jaGFybWFwX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2NoYXJtYXBfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKm1hcHBpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ek86Y2hhcm1hcF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgbWFwcGluZyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19kZWNvZGVfX2RvY19fLAorIm1iY3NfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsibWJjc19kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19tYmNzX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX21iY3NfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX21iY3NfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX18sCisiY29kZV9wYWdlX2RlY29kZSgkbW9kdWxlLCBjb2RlcGFnZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvZGVfcGFnZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGVwYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpkYXRhLCBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNvZGVwYWdlOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAorICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwobW9kdWxlLCBjb2RlcGFnZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfXywKKyJyZWFkYnVmZmVyX2VuY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19SRUFEQlVGRkVSX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yZWFkYnVmZmVyX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmVhZGJ1ZmZlcl9lbmNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfX2RvY19fLAorInVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlKCRtb2R1bGUsIG9iaiwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAorICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfN19lbmNvZGVfX2RvY19fLAorInV0Zl83X2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl83X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzdfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzdfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzdfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzhfZW5jb2RlX19kb2NfXywKKyJ1dGZfOF9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfOF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl84X2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl84X2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl84X2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzhfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8xNl9lbmNvZGVfX2RvY19fLAorInV0Zl8xNl9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzE2X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMTZfbGVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0xFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2xlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMTZfYmVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0JFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2JlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZW5jb2RlX19kb2NfXywKKyJ1dGZfMzJfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIGJ5dGVvcmRlcj0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBieXRlb3JkZXIgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8zMl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9fZG9jX18sCisidXRmXzMyX2xlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9MRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9sZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9fZG9jX18sCisidXRmXzMyX2JlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9CRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9iZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX19kb2NfXywKKyJ1bmljb2RlX2VzY2FwZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InVuaWNvZGVfZXNjYXBlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19fLAorInJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xhdGluXzFfZW5jb2RlX19kb2NfXywKKyJsYXRpbl8xX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0xBVElOXzFfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJsYXRpbl8xX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xhdGluXzFfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xhdGluXzFfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmxhdGluXzFfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfYXNjaWlfZW5jb2RlX19kb2NfXywKKyJhc2NpaV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19BU0NJSV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzY2lpX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2FzY2lpX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2FzY2lpX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6YXNjaWlfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2NoYXJtYXBfZW5jb2RlX19kb2NfXywKKyJjaGFybWFwX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCBtYXBwaW5nPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ0hBUk1BUF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoYXJtYXBfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfY2hhcm1hcF9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jaGFybWFwX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbWFwcGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ek86Y2hhcm1hcF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgbWFwcGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY2hhcm1hcF9idWlsZF9fZG9jX18sCisiY2hhcm1hcF9idWlsZCgkbW9kdWxlLCBtYXAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ0hBUk1BUF9CVUlMRF9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9idWlsZCIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NoYXJtYXBfYnVpbGQsIE1FVEhfTywgX2NvZGVjc19jaGFybWFwX2J1aWxkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfYnVpbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbWFwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9idWlsZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Y2hhcm1hcF9idWlsZCIsICZtYXApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwobW9kdWxlLCBtYXApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19lbmNvZGVfX2RvY19fLAorIm1iY3NfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im1iY3NfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbWJjc19lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19tYmNzX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bWJjc19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9fZG9jX18sCisiY29kZV9wYWdlX2VuY29kZSgkbW9kdWxlLCBjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY29kZV9wYWdlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY29kZV9wYWdlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfX2RvY19fLAorInJlZ2lzdGVyX2Vycm9yKCRtb2R1bGUsIGVycm9ycywgaGFuZGxlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxlciB1bmRlciB0aGUgbmFtZSBlcnJvcnMuXG4iCisiXG4iCisiaGFuZGxlciBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0LCB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uXG4iCisiaW5zdGFuY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nXG4iCisiZXJyb3IgYW5kIG11c3QgcmV0dXJuIGEgKHJlcGxhY2VtZW50LCBuZXcgcG9zaXRpb24pIHR1cGxlLiIpOworCisjZGVmaW5lIF9DT0RFQ1NfUkVHSVNURVJfRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7InJlZ2lzdGVyX2Vycm9yIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmVnaXN0ZXJfZXJyb3IsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyX2Vycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9yczsKKyAgICBQeU9iamVjdCAqaGFuZGxlcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086cmVnaXN0ZXJfZXJyb3IiLAorICAgICAgICAmZXJyb3JzLCAmaGFuZGxlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwobW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xvb2t1cF9lcnJvcl9fZG9jX18sCisibG9va3VwX2Vycm9yKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyXG4iCisiXG4iCisiUmV0dXJuIHRoZSBlcnJvciBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsaW5nIG5hbWUgb3IgcmFpc2UgYVxuIgorIkxvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuIik7CisKKyNkZWZpbmUgX0NPREVDU19MT09LVVBfRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7Imxvb2t1cF9lcnJvciIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xvb2t1cF9lcnJvciwgTUVUSF9PLCBfY29kZWNzX2xvb2t1cF9lcnJvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwX2Vycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Yzk5NjcwNDgwMjdjMWM3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZWMzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihjcnlwdF9jcnlwdF9fZG9jX18sCisiY3J5cHQoJG1vZHVsZSwgd29yZCwgc2FsdCwgLylcbiIKKyItLVxuIgorIlxuIgorIkhhc2ggYSAqd29yZCogd2l0aCB0aGUgZ2l2ZW4gKnNhbHQqIGFuZCByZXR1cm4gdGhlIGhhc2hlZCBwYXNzd29yZC5cbiIKKyJcbiIKKyIqd29yZCogd2lsbCB1c3VhbGx5IGJlIGEgdXNlclwncyBwYXNzd29yZC4gICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTZcbiIKKyJjaGFyYWN0ZXIgc3RyaW5nLCBwb3NzaWJseSBwcmVmaXhlZCB3aXRoICRkaWdpdCQgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZClcbiIKKyJ3aWxsIGJlIHVzZWQgdG8gcGVydHVyYiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gYW5kIHByb2R1Y2UgZGlzdGluY3RcbiIKKyJyZXN1bHRzIGZvciBhIGdpdmVuICp3b3JkKi4iKTsKKworI2RlZmluZSBDUllQVF9DUllQVF9NRVRIT0RERUYgICAgXAorICAgIHsiY3J5cHQiLCAoUHlDRnVuY3Rpb24pY3J5cHRfY3J5cHQsIE1FVEhfVkFSQVJHUywgY3J5cHRfY3J5cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjcnlwdF9jcnlwdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp3b3JkOworICAgIGNvbnN0IGNoYXIgKnNhbHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOmNyeXB0IiwKKyAgICAgICAgJndvcmQsICZzYWx0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNyeXB0X2NyeXB0X2ltcGwobW9kdWxlLCB3b3JkLCBzYWx0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIyYzI5NWM5YmNlMDE4YzQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTExNzQyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKQEAgLTAsMCArMSw3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19fLAorImFkZGNoKFt5LCB4LF0gY2gsIFthdHRyXSlcbiIKKyJQYWludCBjaGFyYWN0ZXIgY2ggYXQgKHksIHgpIHdpdGggYXR0cmlidXRlcyBhdHRyLlxuIgorIlxuIgorIiAgeVxuIgorIiAgICBZLWNvb3JkaW5hdGUuXG4iCisiICB4XG4iCisiICAgIFgtY29vcmRpbmF0ZS5cbiIKKyIgIGNoXG4iCisiICAgIENoYXJhY3RlciB0byBhZGQuXG4iCisiICBhdHRyXG4iCisiICAgIEF0dHJpYnV0ZXMgZm9yIHRoZSBjaGFyYWN0ZXIuXG4iCisiXG4iCisiUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0cixcbiIKKyJvdmVyd3JpdGluZyBhbnkgY2hhcmFjdGVyIHByZXZpb3VzbHkgcGFpbnRlZCBhdCB0aGF0IGxvY2F0aW9uLlxuIgorIkJ5IGRlZmF1bHQsIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gYW5kIGF0dHJpYnV0ZXMgYXJlIHRoZVxuIgorImN1cnJlbnQgc2V0dGluZ3MgZm9yIHRoZSB3aW5kb3cgb2JqZWN0LiIpOworCisjZGVmaW5lIENVUlNFU19XSU5ET1dfQUREQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZGNoIiwgKFB5Q0Z1bmN0aW9uKWN1cnNlc193aW5kb3dfYWRkY2gsIE1FVEhfVkFSQVJHUywgY3Vyc2VzX3dpbmRvd19hZGRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnNlc193aW5kb3dfYWRkY2goUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBncm91cF9sZWZ0XzEgPSAwOworICAgIGludCB5ID0gMDsKKyAgICBpbnQgeCA9IDA7CisgICAgUHlPYmplY3QgKmNoOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBsb25nIGF0dHIgPSAwOworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzphZGRjaCIsICZjaCkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPbDphZGRjaCIsICZ5LCAmeCwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CisgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY3Vyc2VzLndpbmRvdy5hZGRjaCByZXF1aXJlcyAxIHRvIDQgYXJndW1lbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChzZWxmLCBncm91cF9sZWZ0XzEsIHksIHgsIGNoLCBncm91cF9yaWdodF8xLCBhdHRyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MmIxZTcwOTU3N2YzZWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4YzkwMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKQEAgLTAsMCArMSwzNyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX18sCisibm93KCR0eXBlLCAvLCB0ej1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBuZXcgZGF0ZXRpbWUgb2JqZWN0IHJlcHJlc2VudGluZyBjdXJyZW50IHRpbWUgbG9jYWwgdG8gdHouXG4iCisiXG4iCisiICB0elxuIgorIiAgICBUaW1lem9uZSBvYmplY3QuXG4iCisiXG4iCisiSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLiIpOworCisjZGVmaW5lIERBVEVUSU1FX0RBVEVUSU1FX05PV19NRVRIT0RERUYgICAgXAorICAgIHsibm93IiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2RhdGV0aW1lX25vdywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnR6ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm5vdyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnR6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKHR5cGUsIHR6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmNDVjNjcwZDZlNDk1M2EgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDc0ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0RCTV9EQk1fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2Nsb3NlLCBNRVRIX05PQVJHUywgX2RibV9kYm1fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2Nsb3NlX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2Nsb3NlKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2RibV9kYm1fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9kYm1fZGJtX2tleXNfX2RvY19fLAorImtleXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4iKTsKKworI2RlZmluZSBfREJNX0RCTV9LRVlTX01FVEhPRERFRiAgICBcCisgICAgeyJrZXlzIiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2tleXMsIE1FVEhfTk9BUkdTLCBfZGJtX2RibV9rZXlzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9rZXlzX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2tleXMoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZGJtX2RibV9rZXlzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9nZXRfX2RvY19fLAorImdldCgkc2VsZiwga2V5LCBkZWZhdWx0PWJcJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiIpOworCisjZGVmaW5lIF9EQk1fREJNX0dFVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2dldCwgTUVUSF9WQVJBUkdTLCBfZGJtX2RibV9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9nZXQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpnZXQiLAorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fZ2V0X2ltcGwoc2VsZiwga2V5LCBrZXlfbGVuZ3RoLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2RibV9kYm1fc2V0ZGVmYXVsdF9fZG9jX18sCisic2V0ZGVmYXVsdCgkc2VsZiwga2V5LCBkZWZhdWx0PWJcJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LlxuIgorIlxuIgorIklmIGtleSBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBpdCBpcyBpbnNlcnRlZCB3aXRoIGRlZmF1bHQgYXMgdGhlIHZhbHVlLiIpOworCisjZGVmaW5lIF9EQk1fREJNX1NFVERFRkFVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGRlZmF1bHQiLCAoUHlDRnVuY3Rpb24pX2RibV9kYm1fc2V0ZGVmYXVsdCwgTUVUSF9WQVJBUkdTLCBfZGJtX2RibV9zZXRkZWZhdWx0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX3NldGRlZmF1bHQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKKyJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRhdGFiYXNlIG9iamVjdC5cbiIKKyJcbiIKKyIgIGZpbGVuYW1lXG4iCisiICAgIFRoZSBmaWxlbmFtZSB0byBvcGVuLlxuIgorIiAgZmxhZ3NcbiIKKyIgICAgSG93IHRvIG9wZW4gdGhlIGZpbGUuICBcInJcIiBmb3IgcmVhZGluZywgXCJ3XCIgZm9yIHdyaXRpbmcsIGV0Yy5cbiIKKyIgIG1vZGVcbiIKKyIgICAgSWYgY3JlYXRpbmcgYSBuZXcgZmlsZSwgdGhlIG1vZGUgYml0cyBmb3IgdGhlIG5ldyBmaWxlXG4iCisiICAgIChlLmcuIG9zLk9fUkRXUikuIik7CisKKyNkZWZpbmUgREJNT1BFTl9NRVRIT0RERUYgICAgXAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilkYm1vcGVuLCBNRVRIX1ZBUkFSR1MsIGRibW9wZW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3BlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKKyAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKKyAgICBpbnQgbW9kZSA9IDQzODsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKKyAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDkyZTgxYjI4YzU1OGQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YjRjNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCkBAIC0wLDAgKzEsNjc5IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX19kb2NfXywKKyJhcHBlbmQoJHNlbGYsIHN1YmVsZW1lbnQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0FQUEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJlbGVtZW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfX2RvY19fLAorImNsZWFyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9DTEVBUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXIsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X19faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCBtZW1vLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X18sIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX1NJWkVPRl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90CitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19faW1wbChzZWxmKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19fZG9jX18sCisiX19nZXRzdGF0ZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0dFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX18sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fX19kb2NfXywKKyJfX3NldHN0YXRlX18oJHNlbGYsIHN0YXRlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NldHN0YXRlX18sIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgZWxlbWVudHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0VYVEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9leHRlbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfX2RvY19fLAorImZpbmQoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19fLAorImZpbmR0ZXh0KCRzZWxmLCAvLCBwYXRoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086ZmluZHRleHQiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9fZG9jX18sCisiZmluZGFsbCgkc2VsZiwgLywgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXRoOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kYWxsIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX18sCisiaXRlcmZpbmQoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGICAgIFwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X19kb2NfXywKKyJnZXQoJHNlbGYsIC8sIGtleSwgZGVmYXVsdD1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmdldCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5fX2RvY19fLAorImdldGNoaWxkcmVuKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRDSElMRFJFTl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y2hpbGRyZW4iLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW4sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfXywKKyJpdGVyKCRzZWxmLCAvLCB0YWc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUl9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp0YWcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86aXRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnRhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoc2VsZiwgdGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfX2RvY19fLAorIml0ZXJ0ZXh0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSVEVYVF9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlcnRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHQsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfX2RvY19fLAorImluc2VydCgkc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydCwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3ViZWxlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8hOmluc2VydCIsCisgICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19fZG9jX18sCisiaXRlbXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURU1TX01FVEhPRERFRiAgICBcCisgICAgeyJpdGVtcyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtcywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXMoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfX2RvY19fLAorImtleXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0tFWVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImtleXMiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5cywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXMoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfX2RvY19fLAorIm1ha2VlbGVtZW50KCRzZWxmLCB0YWcsIGF0dHJpYiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfTUFLRUVMRU1FTlRfTUVUSE9EREVGICAgIFwKKyAgICB7Im1ha2VlbGVtZW50IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqYXR0cmliOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibWFrZWVsZW1lbnQiLAorICAgICAgICAyLCAyLAorICAgICAgICAmdGFnLCAmYXR0cmliKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoc2VsZiwgdGFnLCBhdHRyaWIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgc3ViZWxlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlLCBNRVRIX08sIF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfX2RvY19fLAorInNldCgkc2VsZiwga2V5LCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9zZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXQiLAorICAgICAgICAyLCAyLAorICAgICAgICAma2V5LCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoc2VsZiwga2V5LCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KTsKKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOlRyZWVCdWlsZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfX19pbXBsKChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGYsIGVsZW1lbnRfZmFjdG9yeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhX19kb2NfXywKKyJkYXRhKCRzZWxmLCBkYXRhLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfREFUQV9NRVRIT0RERUYgICAgXAorICAgIHsiZGF0YSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YSwgTUVUSF9PLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2VuZF9fZG9jX18sCisiZW5kKCRzZWxmLCB0YWcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9FTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZW5kLCBNRVRIX08sIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2UoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X19kb2NfXywKKyJzdGFydCgkc2VsZiwgdGFnLCBhdHRycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfU1RBUlRfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydCwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydF9pbXBsKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqYXR0cnMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAorICAgICAgICAxLCAyLAorICAgICAgICAmdGFnLCAmYXR0cnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X2ltcGwoc2VsZiwgdGFnLCBhdHRycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmh0bWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhcmdldCwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpodG1sID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoKFhNTFBhcnNlck9iamVjdCAqKXNlbGYsIGh0bWwsIHRhcmdldCwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZF9fZG9jX18sCisiZmVlZCgkc2VsZiwgZGF0YSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9GRUVEX01FVEhPRERFRiAgICBcCisgICAgeyJmZWVkIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2ZlZWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3BhcnNlX3dob2xlX19kb2NfXywKKyJfcGFyc2Vfd2hvbGUoJHNlbGYsIGZpbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfX1BBUlNFX1dIT0xFX01FVEhPRERFRiAgICBcCisgICAgeyJfcGFyc2Vfd2hvbGUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGUsIE1FVEhfTywgX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9fZG9jX18sCisiZG9jdHlwZSgkc2VsZiwgbmFtZSwgcHViaWQsIHN5c3RlbSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9ET0NUWVBFX01FVEhPRERFRiAgICBcCisgICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHViaWQsIFB5T2JqZWN0ICpzeXN0ZW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnB1YmlkOworICAgIFB5T2JqZWN0ICpzeXN0ZW07CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkb2N0eXBlIiwKKyAgICAgICAgMywgMywKKyAgICAgICAgJm5hbWUsICZwdWJpZCwgJnN5c3RlbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX19kb2NfXywKKyJfc2V0ZXZlbnRzKCRzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fU0VURVZFTlRTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2V0ZXZlbnRzIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOworICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwKKyAgICAgICAgJlB5TGlzdF9UeXBlLCAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjViOGJmN2U3ZjIxNTFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEwYWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApAQCAtMCwwICsxLDI1MyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fZ2V0X19kb2NfXywKKyJnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSB2YWx1ZSBmb3Iga2V5LCBvciBkZWZhdWx0IGlmIG5vdCBwcmVzZW50LiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fR0VUX01FVEhPRERFRiAgICBcCisgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9nZXQsIE1FVEhfVkFSQVJHUywgX2dkYm1fZ2RibV9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2dldChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3NldGRlZmF1bHRfX2RvY19fLAorInNldGRlZmF1bHQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHZhbHVlIGZvciBrZXksIG9yIHNldCBpdCB0byBkZWZhdWx0IGFuZCByZXR1cm4gZGVmYXVsdCBpZiBub3QgcHJlc2VudC4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX1NFVERFRkFVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGRlZmF1bHQiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9zZXRkZWZhdWx0LCBNRVRIX1ZBUkFSR1MsIF9nZGJtX2dkYm1fc2V0ZGVmYXVsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9jbG9zZSwgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fY2xvc2VfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9jbG9zZShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fa2V5c19fZG9jX18sCisia2V5cygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsia2V5cyIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2tleXMsIE1FVEhfTk9BUkdTLCBfZ2RibV9nZGJtX2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fa2V5c19pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2tleXMoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZ2RibV9nZGJtX2tleXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fZmlyc3RrZXlfX2RvY19fLAorImZpcnN0a2V5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzdGFydGluZyBrZXkgZm9yIHRoZSB0cmF2ZXJzYWwuXG4iCisiXG4iCisiSXRcJ3MgcG9zc2libGUgdG8gbG9vcCBvdmVyIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgdXNpbmcgdGhpcyBtZXRob2RcbiIKKyJhbmQgdGhlIG5leHRrZXkoKSBtZXRob2QuICBUaGUgdHJhdmVyc2FsIGlzIG9yZGVyZWQgYnkgR0RCTVwncyBpbnRlcm5hbFxuIgorImhhc2ggdmFsdWVzLCBhbmQgd29uXCd0IGJlIHNvcnRlZCBieSB0aGUga2V5IHZhbHVlcy4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX0ZJUlNUS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJmaXJzdGtleSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2ZpcnN0a2V5LCBNRVRIX05PQVJHUywgX2dkYm1fZ2RibV9maXJzdGtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2ZpcnN0a2V5KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9uZXh0a2V5X19kb2NfXywKKyJuZXh0a2V5KCRzZWxmLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBrZXkgdGhhdCBmb2xsb3dzIGtleSBpbiB0aGUgdHJhdmVyc2FsLlxuIgorIlxuIgorIlRoZSBmb2xsb3dpbmcgY29kZSBwcmludHMgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSBkYiwgd2l0aG91dCBoYXZpbmdcbiIKKyJ0byBjcmVhdGUgYSBsaXN0IGluIG1lbW9yeSB0aGF0IGNvbnRhaW5zIHRoZW0gYWxsOlxuIgorIlxuIgorIiAgICAgIGsgPSBkYi5maXJzdGtleSgpXG4iCisiICAgICAgd2hpbGUgayAhPSBOb25lOlxuIgorIiAgICAgICAgICBwcmludChrKVxuIgorIiAgICAgICAgICBrID0gZGIubmV4dGtleShrKSIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fTkVYVEtFWV9NRVRIT0RERUYgICAgXAorICAgIHsibmV4dGtleSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX25leHRrZXksIE1FVEhfTywgX2dkYm1fZ2RibV9uZXh0a2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX25leHRrZXlfaW1wbChkYm1vYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX25leHRrZXkoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmtleTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX25leHRrZXlfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3Jlb3JnYW5pemVfX2RvY19fLAorInJlb3JnYW5pemUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW9yZ2FuaXplIHRoZSBkYXRhYmFzZS5cbiIKKyJcbiIKKyJJZiB5b3UgaGF2ZSBjYXJyaWVkIG91dCBhIGxvdCBvZiBkZWxldGlvbnMgYW5kIHdvdWxkIGxpa2UgdG8gc2hyaW5rXG4iCisidGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGVcbiIKKyJkYXRhYmFzZS4gIEdEQk0gd2lsbCBub3Qgc2hvcnRlbiB0aGUgbGVuZ3RoIG9mIGEgZGF0YWJhc2UgZmlsZSBleGNlcHRcbiIKKyJieSB1c2luZyB0aGlzIHJlb3JnYW5pemF0aW9uOyBvdGhlcndpc2UsIGRlbGV0ZWQgZmlsZSBzcGFjZSB3aWxsIGJlXG4iCisia2VwdCBhbmQgcmV1c2VkIGFzIG5ldyAoa2V5LHZhbHVlKSBwYWlycyBhcmUgYWRkZWQuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9SRU9SR0FOSVpFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW9yZ2FuaXplIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fcmVvcmdhbml6ZSwgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9yZW9yZ2FuaXplX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fcmVvcmdhbml6ZShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9zeW5jX19kb2NfXywKKyJzeW5jKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRmx1c2ggdGhlIGRhdGFiYXNlIHRvIHRoZSBkaXNrIGZpbGUuXG4iCisiXG4iCisiV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzXG4iCisiYW55IHVud3JpdHRlbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGRpc2suIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9TWU5DX01FVEhPRERFRiAgICBcCisgICAgeyJzeW5jIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fc3luYywgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zeW5jX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fc3luYyhkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fc3luY19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoZGJtb3Blbl9fZG9jX18sCisib3BlbigkbW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3M9XCdyXCcsIG1vZGU9MG82NjYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgZGJtIGRhdGFiYXNlIGFuZCByZXR1cm4gYSBkYm0gb2JqZWN0LlxuIgorIlxuIgorIlRoZSBmaWxlbmFtZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZmlsZS5cbiIKKyJcbiIKKyJUaGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQgY2FuIGJlIFwnclwnICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlXG4iCisiZm9yIHJlYWRpbmcgb25seSAtLSBkZWZhdWx0KSwgXCd3XCcgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2UgZm9yXG4iCisicmVhZGluZyBhbmQgd3JpdGluZyksIFwnY1wnICh3aGljaCBjcmVhdGVzIHRoZSBkYXRhYmFzZSBpZiBpdCBkb2VzblwndFxuIgorImV4aXN0KSwgb3IgXCduXCcgKHdoaWNoIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGVtcHR5IGRhdGFiYXNlKS5cbiIKKyJcbiIKKyJTb21lIHZlcnNpb25zIG9mIGdkYm0gc3VwcG9ydCBhZGRpdGlvbmFsIGZsYWdzIHdoaWNoIG11c3QgYmVcbiIKKyJhcHBlbmRlZCB0byBvbmUgb2YgdGhlIGZsYWdzIGRlc2NyaWJlZCBhYm92ZS4gIFRoZSBtb2R1bGUgY29uc3RhbnRcbiIKKyJcJ29wZW5fZmxhZ3NcJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiAgVGhlIFwnZlwnIGZsYWdcbiIKKyJvcGVucyB0aGUgZGF0YWJhc2UgaW4gZmFzdCBtb2RlOyBhbHRlcmVkIGRhdGEgd2lsbCBub3QgYXV0b21hdGljYWxseVxuIgorImJlIHdyaXR0ZW4gdG8gdGhlIGRpc2sgYWZ0ZXIgZXZlcnkgY2hhbmdlLiAgVGhpcyByZXN1bHRzIGluIGZhc3RlclxuIgorIndyaXRlcyB0byB0aGUgZGF0YWJhc2UsIGJ1dCBtYXkgcmVzdWx0IGluIGFuIGluY29uc2lzdGVudCBkYXRhYmFzZVxuIgorImlmIHRoZSBwcm9ncmFtIGNyYXNoZXMgd2hpbGUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIG9wZW4uICBVc2UgdGhlXG4iCisic3luYygpIG1ldGhvZCB0byBmb3JjZSBhbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay5cbiIKKyJUaGUgXCdzXCcgZmxhZyBjYXVzZXMgYWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgdG8gYmUgc3luY2hyb25pemVkIHRvXG4iCisiZGlzay4gIFRoZSBcJ3VcJyBmbGFnIGRpc2FibGVzIGxvY2tpbmcgb2YgdGhlIGRhdGFiYXNlIGZpbGUuXG4iCisiXG4iCisiVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVuaXggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5XG4iCisid2hlbiB0aGUgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0byBvY3RhbCAwbzY2Ni4iKTsKKworI2RlZmluZSBEQk1PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZsYWdzLAorICAgICAgICAgICAgIGludCBtb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RibW9wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKKyAgICBpbnQgbW9kZSA9IDQzODsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKKyAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgbmFtZSwgZmxhZ3MsIG1vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDNkOGQ4NzFiY2NjYjY4YSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKaW5kZXggYzFhZDg4Mi4uNTlkOWQ1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaApAQCAtMTQsMjAgKzE0LDE4IEBACiAiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFDT01QUkVTU09SX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfTywgX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoQ29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzKENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6Y29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC02MiwzNCArNjAsNDMgQEAKIH0KIAogUHlEb2NfU1RSVkFSKF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCAvLCBkYXRhLCBtYXhfbGVuZ3RoPS0xKVxuIgogIi0tXG4iCiAiXG4iCi0iUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorIkRlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuXG4iCiAiXG4iCi0iUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCdcJyBvdGhlcndpc2UuXG4iCisiSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlXG4iCisicHJvZHVjZWQsICpzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHRcbiIKKyJjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiXCdcJyB0byBvYnRhaW4gbW9yZSBvZiB0aGUgb3V0cHV0LlxuIgogIlxuIgotIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWRcbiIKLSJyYWlzZXMgYW4gRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW1cbiIKLSJpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOworIklmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpc1xuIgorIndhcyBsZXNzIHRoYW4gKm1heF9sZW5ndGgqIGJ5dGVzLCBvciBiZWNhdXNlICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLFxuIgorIipzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQgcmFpc2VzIGFuXG4iCisiRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW5cbiIKKyJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKKyAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwpAQCAtMTIzLDcgKzEzMCw4IEBACiAiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuIik7CiAKIHN0YXRpYyBpbnQKLV9sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X19faW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIGludCBmb3JtYXQsIFB5T2JqZWN0ICptZW1saW1pdCwgUHlPYmplY3QgKmZpbHRlcnMpOworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKTsKIAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0xMzQsOCArMTQyLDcgQEAKICAgICBQeU9iamVjdCAqbWVtbGltaXQgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpmaWx0ZXJzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBfa2V5d29yZHMsCiAgICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChEZWNvbXByZXNzb3IgKilzZWxmLCBmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKTsKQEAgLTE1MywyMCArMTYwLDE4IEBACiAiQWx3YXlzIHJldHVybnMgVHJ1ZSBmb3IgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIuIik7CiAKICNkZWZpbmUgX0xaTUFfSVNfQ0hFQ0tfU1VQUE9SVEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJpc19jaGVja19zdXBwb3J0ZWQiLCAoUHlDRnVuY3Rpb24pX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkLCBNRVRIX1ZBUkFSR1MsIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9fZG9jX199LAorICAgIHsiaXNfY2hlY2tfc3VwcG9ydGVkIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZCwgTUVUSF9PLCBfbHptYV9pc19jaGVja19zdXBwb3J0ZWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjaGVja19pZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9pc19jaGVja19zdXBwb3J0ZWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9pc19jaGVja19zdXBwb3J0ZWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hlY2tfaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwKLSAgICAgICAgJmNoZWNrX2lkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwgJmNoZWNrX2lkKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKG1vZHVsZSwgY2hlY2tfaWQpOwogCkBAIC0xODMsMjAgKzE4OCwxOCBAQAogIlRoZSByZXN1bHQgZG9lcyBub3QgaW5jbHVkZSB0aGUgZmlsdGVyIElEIGl0c2VsZiwgb25seSB0aGUgb3B0aW9ucy4iKTsKIAogI2RlZmluZSBfTFpNQV9fRU5DT0RFX0ZJTFRFUl9QUk9QRVJUSUVTX01FVEhPRERFRiAgICBcCi0gICAgeyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIE1FVEhfVkFSQVJHUywgX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19fZG9jX199LAorICAgIHsiX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBNRVRIX08sIF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsem1hX2ZpbHRlciBmaWx0ZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXIgPSB7TFpNQV9WTElfVU5LTk9XTiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAotICAgICAgICBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXIpOwogCkBAIC0yMjAsNyArMjIzLDggQEAKICAgICB7Il9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcywgTUVUSF9WQVJBUkdTLCBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLCBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpOworX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGx6bWFfdmxpIGZpbHRlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyOSw4ICsyMzMsNyBAQAogICAgIGx6bWFfdmxpIGZpbHRlcl9pZDsKICAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8meSo6X2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsCiAgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcyk7CkBAIC0yNDIsNCArMjQ1LDQgQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODA4ZmVjODIxNmFjNzEyYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQzZTA4NDJiZTNkM2ZlMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaCBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaApAQCAtMCwwICsxLDM2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19fLAorInN0YWNrX2VmZmVjdCgkbW9kdWxlLCBvcGNvZGUsIG9wYXJnPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4iKTsKKworI2RlZmluZSBfT1BDT0RFX1NUQUNLX0VGRkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhY2tfZWZmZWN0IiwgKFB5Q0Z1bmN0aW9uKV9vcGNvZGVfc3RhY2tfZWZmZWN0LCBNRVRIX1ZBUkFSR1MsIF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wY29kZSwgUHlPYmplY3QgKm9wYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19vcGNvZGVfc3RhY2tfZWZmZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBvcGNvZGU7CisgICAgUHlPYmplY3QgKm9wYXJnID0gUHlfTm9uZTsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOnN0YWNrX2VmZmVjdCIsCisgICAgICAgICZvcGNvZGUsICZvcGFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlZTdjYjczNTcwNWU4YjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAppbmRleCA5NzUyOThjLi5iNjk4Y2U4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaApAQCAtODUsNyArODUsOCBAQAogIjIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiBzdGF0aWMgaW50Ci1fcGlja2xlX1BpY2tsZXJfX19pbml0X19faW1wbChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOworX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fX2ltcGwoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBpbnQKIF9waWNrbGVfUGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC05Niw4ICs5Nyw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T3A6UGlja2xlciIsIF9rZXl3b3JkcywKICAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKChQaWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTE5OSw3ICsxOTksOSBAQAogICAgIHsiZmluZF9jbGFzcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzLCBNRVRIX1ZBUkFSR1MsIF9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKTsKK19waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNzEsNyArMjczLDkgQEAKICJzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuIik7CiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKK19waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIGludAogX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMjgzLDggKzI4Nyw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOlVucGlja2xlciIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLAogICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbCgoVW5waWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMzc3LDcgKzM4MCw4IEBACiAgICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmZpbGUsIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKK19waWNrbGVfZHVtcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMzg5LDggKzM5Myw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCiAgICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2R1bXBfaW1wbChtb2R1bGUsIG9iaiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTQyMSw3ICs0MjQsOCBAQAogICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CitfcGlja2xlX2R1bXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnByb3RvY29sLAorICAgICAgICAgICAgICAgICAgIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNDMyLDggKzQzNiw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCiAgICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcHNfaW1wbChtb2R1bGUsIG9iaiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTQ3NSw3ICs0NzgsOCBAQAogICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOworX3BpY2tsZV9sb2FkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNDg3LDggKzQ5MSw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCiAgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRfaW1wbChtb2R1bGUsIGZpbGUsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTUyMSw3ICs1MjQsOCBAQAogICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKK19waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTUzMyw4ICs1MzcsNyBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsCiAgICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRzX2ltcGwobW9kdWxlLCBkYXRhLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC01NDIsNCArNTQ1LDQgQEAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYWJhNzk1NzZlMjQwYzYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNmYzYTUyMzMyOTg0NDhlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRlNDcwOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19zcmUuYy5oCkBAIC0wLDAgKzEsNjkzIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3NyZV9nZXRjb2Rlc2l6ZV9fZG9jX18sCisiZ2V0Y29kZXNpemUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9HRVRDT0RFU0laRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y29kZXNpemUiLCAoUHlDRnVuY3Rpb24pX3NyZV9nZXRjb2Rlc2l6ZSwgTUVUSF9OT0FSR1MsIF9zcmVfZ2V0Y29kZXNpemVfX2RvY19ffSwKKworc3RhdGljIGludAorX3NyZV9nZXRjb2Rlc2l6ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9nZXRjb2Rlc2l6ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0Y29kZXNpemVfaW1wbChtb2R1bGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9nZXRsb3dlcl9fZG9jX18sCisiZ2V0bG93ZXIoJG1vZHVsZSwgY2hhcmFjdGVyLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9HRVRMT1dFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0bG93ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9nZXRsb3dlciwgTUVUSF9WQVJBUkdTLCBfc3JlX2dldGxvd2VyX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0bG93ZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY2hhcmFjdGVyLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9nZXRsb3dlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hhcmFjdGVyOworICAgIGludCBmbGFnczsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Z2V0bG93ZXIiLAorICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0bG93ZXJfaW1wbChtb2R1bGUsIGNoYXJhY3RlciwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX18sCisibWF0Y2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLCBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX01BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfXywKKyJmdWxsbWF0Y2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLFxuIgorIiAgICAgICAgICBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmciKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZVTExNQVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX18sCisic2VhcmNoKCRzZWxmLCAvLCBzdHJpbmc9Tm9uZSwgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSwgKixcbiIKKyIgICAgICAgcGF0dGVybj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiU2NhbiB0aHJvdWdoIHN0cmluZyBsb29raW5nIGZvciBhIG1hdGNoLCBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyBtYXRjaCBvYmplY3QgaW5zdGFuY2UuXG4iCisiXG4iCisiUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0VBUkNIX01FVEhPRERFRiAgICBcCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX18sCisiZmluZGFsbCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUsICosXG4iCisiICAgICAgICBzb3VyY2U9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZzb3VyY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgc291cmNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX18sCisiZmluZGl0ZXIoJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFJFIHBhdHRlcm4gaW4gc3RyaW5nLlxuIgorIlxuIgorIkZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfXywKKyJzY2FubmVyKCRzZWxmLCAvLCBzdHJpbmcsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0NBTk5FUl9NRVRIT0RERUYgICAgXAorICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xubjpzY2FubmVyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfXywKKyJzcGxpdCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIG1heHNwbGl0PTAsICosIHNvdXJjZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiU3BsaXQgc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0LCBQeU9iamVjdCAqc291cmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IDA7CisgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChzZWxmLCBzdHJpbmcsIG1heHNwbGl0LCBzb3VyY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9fZG9jX18sCisic3ViKCRzZWxmLCAvLCByZXBsLCBzdHJpbmcsIGNvdW50PTApXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQl9NRVRIT0RERUYgICAgXAorICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXBsOworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xuOnN1YiIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5fX2RvY19fLAorInN1Ym4oJHNlbGYsIC8sIHJlcGwsIHN0cmluZywgY291bnQ9MClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQk5fTUVUSE9EREVGICAgIFwKKyAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmVwbDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworICAgIFB5X3NzaXplX3QgY291bnQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWJuIiwgX2tleXdvcmRzLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fX19kb2NfXywKKyJfX2NvcHlfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0NPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19fLAorIl9fZGVlcGNvcHlfXygkc2VsZiwgLywgbWVtbylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZW1vOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCisgICAgICAgICZtZW1vKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfY29tcGlsZV9fZG9jX18sCisiY29tcGlsZSgkbW9kdWxlLCAvLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LFxuIgorIiAgICAgICAgaW5kZXhncm91cClcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9DT01QSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfY29tcGlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9jb21waWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGdyb3VwcywgUHlPYmplY3QgKmdyb3VwaW5kZXgsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX2NvbXBpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXR0ZXJuIiwgImZsYWdzIiwgImNvZGUiLCAiZ3JvdXBzIiwgImdyb3VwaW5kZXgiLCAiaW5kZXhncm91cCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXR0ZXJuOworICAgIGludCBmbGFnczsKKyAgICBQeU9iamVjdCAqY29kZTsKKyAgICBQeV9zc2l6ZV90IGdyb3VwczsKKyAgICBQeU9iamVjdCAqZ3JvdXBpbmRleDsKKyAgICBQeU9iamVjdCAqaW5kZXhncm91cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfY29tcGlsZV9pbXBsKG1vZHVsZSwgcGF0dGVybiwgZmxhZ3MsIGNvZGUsIGdyb3VwcywgZ3JvdXBpbmRleCwgaW5kZXhncm91cCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX18sCisiZXhwYW5kKCRzZWxmLCAvLCB0ZW1wbGF0ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0ZW1wbGF0ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGVtcGxhdGUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdGVtcGxhdGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOmV4cGFuZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnRlbXBsYXRlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKHNlbGYsIHRlbXBsYXRlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfXywKKyJncm91cHMoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEuXG4iCisiXG4iCisiICBkZWZhdWx0XG4iCisiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQU19NRVRIT0RERUYgICAgXAorICAgIHsiZ3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBzIiwgX2tleXdvcmRzLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfXywKKyJncm91cGRpY3QoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLlxuIgorIlxuIgorIiAgZGVmYXVsdFxuIgorIiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9HUk9VUERJQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7Imdyb3VwZGljdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwZGljdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX3N0YXJ0X19kb2NfXywKKyJzdGFydCgkc2VsZiwgZ3JvdXA9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX1NUQVJUX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9zdGFydCwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9zdGFydF9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX3N0YXJ0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zdGFydF9pbXBsKHNlbGYsIGdyb3VwKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX2VuZF9fZG9jX18sCisiZW5kKCRzZWxmLCBncm91cD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIHRoZSBlbmQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VORF9NRVRIT0RERUYgICAgXAorICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2VuZCwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9lbmRfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK19zcmVfU1JFX01hdGNoX2VuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZW5kKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImVuZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZncm91cCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZW5kX2ltcGwoc2VsZiwgZ3JvdXApOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfc3Bhbl9fZG9jX18sCisic3Bhbigkc2VsZiwgZ3JvdXA9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX1NQQU5fTUVUSE9EREVGICAgIFwKKyAgICB7InNwYW4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfc3BhbiwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9zcGFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZncm91cCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoc2VsZiwgZ3JvdXApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9zcmVfU1JFX01hdGNoX19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfXywKKyJfX2RlZXBjb3B5X18oJHNlbGYsIC8sIG1lbW8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lbW87CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKKyAgICAgICAgJm1lbW8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1NjYW5uZXJfbWF0Y2hfX2RvY19fLAorIm1hdGNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9TQ0FOTkVSX01BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9TY2FubmVyX21hdGNoLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9pbXBsKFNjYW5uZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaChTY2FubmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX21hdGNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9fZG9jX18sCisic2VhcmNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9TQ0FOTkVSX1NFQVJDSF9NRVRIT0RERUYgICAgXAorICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1NjYW5uZXJfc2VhcmNoLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX3NlYXJjaChTY2FubmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxZDczYWIyYzUwMDhiZDQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGJjNWQwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKQEAgLTAsMCArMSwxMTA1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9fZG9jX18sCisiZG9faGFuZHNoYWtlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfRE9fSEFORFNIQUtFX01FVEhPRERFRiAgICBcCisgICAgeyJkb19oYW5kc2hha2UiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX190ZXN0X2RlY29kZV9jZXJ0X19kb2NfXywKKyJfdGVzdF9kZWNvZGVfY2VydCgkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19URVNUX0RFQ09ERV9DRVJUX01FVEhPRERFRiAgICBcCisgICAgeyJfdGVzdF9kZWNvZGVfY2VydCIsIChQeUNGdW5jdGlvbilfc3NsX190ZXN0X2RlY29kZV9jZXJ0LCBNRVRIX08sIF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX190ZXN0X2RlY29kZV9jZXJ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfX2RvY19fLAorInBlZXJfY2VydGlmaWNhdGUoJHNlbGYsIGRlcj1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgcGVlci5cbiIKKyJcbiIKKyJJZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzXG4iCisicHJvdmlkZWQsIGJ1dCBub3QgdmFsaWRhdGVkLCByZXR1cm5zIGFuIGVtcHR5IGRpY3Rpb25hcnkuICBPdGhlcndpc2VcbiIKKyJyZXR1cm5zIGEgZGljdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZWVyIGNlcnRpZmljYXRlLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGVcbiIKKyJwZWVyIGNlcnRpZmljYXRlLCBvciBOb25lIGlmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZC4gIFRoaXMgd2lsbFxuIgorInJldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuXCd0IHZhbGlkYXRlZC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfUEVFUl9DRVJUSUZJQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsicGVlcl9jZXJ0aWZpY2F0ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZSwgTUVUSF9WQVJBUkdTLCBfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGJpbmFyeV9tb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwKKyAgICAgICAgJmJpbmFyeV9tb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoc2VsZiwgYmluYXJ5X21vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfX2RvY19fLAorInNoYXJlZF9jaXBoZXJzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0hBUkVEX0NJUEhFUlNfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYXJlZF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVycywgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVyc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9jaXBoZXJfX2RvY19fLAorImNpcGhlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX0NJUEhFUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2lwaGVyIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9jaXBoZXIsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfY2lwaGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY2lwaGVyX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2NpcGhlcihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X2NpcGhlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25fX2RvY19fLAorInZlcnNpb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9WRVJTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJ2ZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF92ZXJzaW9uLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3ZlcnNpb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoc2VsZik7Cit9CisKKyNpZiBkZWZpbmVkKE9QRU5TU0xfTlBOX05FR09USUFURUQpCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX19kb2NfXywKKyJzZWxlY3RlZF9ucG5fcHJvdG9jb2woJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGICAgIFwKKyAgICB7InNlbGVjdGVkX25wbl9wcm90b2NvbCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2xfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9BTFBOKQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfX2RvY19fLAorInNlbGVjdGVkX2FscG5fcHJvdG9jb2woJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRiAgICBcCisgICAgeyJzZWxlY3RlZF9hbHBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQUxQTikgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9fZG9jX18sCisiY29tcHJlc3Npb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9DT01QUkVTU0lPTl9NRVRIT0RERUYgICAgXAorICAgIHsiY29tcHJlc3Npb24iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb25faW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgYiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlcyB0aGUgYnl0ZXMtbGlrZSBvYmplY3QgYiBpbnRvIHRoZSBTU0wgb2JqZWN0LlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3dyaXRlLCBNRVRIX08sIF9zc2xfX1NTTFNvY2tldF93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYsIFB5X2J1ZmZlciAqYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfd3JpdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfX2RvY19fLAorInBlbmRpbmcoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBkZWNyeXB0ZWQgYnl0ZXMgYXZhaWxhYmxlIGZvciByZWFkLCBwZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9QRU5ESU5HX01FVEhPRERFRiAgICBcCisgICAgeyJwZW5kaW5nIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9wZW5kaW5nLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlbmRpbmcoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfcmVhZF9fZG9jX18sCisicmVhZChzaXplLCBbYnVmZmVyXSlcbiIKKyJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgU1NMIHNvY2tldC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfcmVhZCwgTUVUSF9WQVJBUkdTLCBfc3NsX19TU0xTb2NrZXRfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGxlbiwgaW50IGdyb3VwX3JpZ2h0XzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9yZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbGVuOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9zc2wuX1NTTFNvY2tldC5yZWFkIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChzZWxmLCBsZW4sIGdyb3VwX3JpZ2h0XzEsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX19kb2NfXywKKyJzaHV0ZG93bigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkRvZXMgdGhlIFNTTCBzaHV0ZG93biBoYW5kc2hha2Ugd2l0aCB0aGUgcmVtb3RlIGVuZC5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NIVVRET1dOX01FVEhPRERFRiAgICBcCisgICAgeyJzaHV0ZG93biIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfc2h1dGRvd24sIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9fZG9jX18sCisidGxzX3VuaXF1ZV9jYigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIFwndGxzLXVuaXF1ZVwnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuIgorIlxuIgorIklmIHRoZSBUTFMgaGFuZHNoYWtlIGlzIG5vdCB5ZXQgY29tcGxldGUsIE5vbmUgaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1RMU19VTklRVUVfQ0JfTUVUSE9EREVGICAgIFwKKyAgICB7InRsc191bmlxdWVfY2IiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2IsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBwcm90b192ZXJzaW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcHJvdG9fdmVyc2lvbjsKKworICAgIGlmICgodHlwZSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiX1NTTENvbnRleHQiLCBrd2FyZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9TU0xDb250ZXh0IiwKKyAgICAgICAgJnByb3RvX3ZlcnNpb24pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9pbXBsKHR5cGUsIHByb3RvX3ZlcnNpb24pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX19kb2NfXywKKyJzZXRfY2lwaGVycygkc2VsZiwgY2lwaGVybGlzdCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9TRVRfQ0lQSEVSU19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVycywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBjb25zdCBjaGFyICpjaXBoZXJsaXN0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3Q7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoc2VsZiwgY2lwaGVybGlzdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX19kb2NfXywKKyJfc2V0X25wbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX05QTl9QUk9UT0NPTFNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29scywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCisgICAgaWYgKHByb3Rvcy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfX2RvY19fLAorIl9zZXRfYWxwbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX0FMUE5fUFJPVE9DT0xTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2V0X2FscG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29scywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29scyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9hbHBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCisgICAgaWYgKHByb3Rvcy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX18sCisibG9hZF9jZXJ0X2NoYWluKCRzZWxmLCAvLCBjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lLCBwYXNzd29yZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYgICAgXAorICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2VydGZpbGU7CisgICAgUHlPYmplY3QgKmtleWZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXNzd29yZCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoc2VsZiwgY2VydGZpbGUsIGtleWZpbGUsIHBhc3N3b3JkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19fLAorImxvYWRfdmVyaWZ5X2xvY2F0aW9ucygkc2VsZiwgLywgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRhdGE9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX1ZFUklGWV9MT0NBVElPTlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2FwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2FkYXRhID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLAorICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoc2VsZiwgY2FmaWxlLCBjYXBhdGgsIGNhZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXNfX2RvY19fLAorImxvYWRfZGhfcGFyYW1zKCRzZWxmLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfREhfUEFSQU1TX01FVEhPRERFRiAgICBcCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfZGhfcGFyYW1zLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfXywKKyJfd3JhcF9zb2NrZXQoJHNlbGYsIC8sIHNvY2ssIHNlcnZlcl9zaWRlLCBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGICAgIFwKKyAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc29jazsKKyAgICBpbnQgc2VydmVyX3NpZGU7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsCisgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwgJnNvY2ssICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX18sCisiX3dyYXBfYmlvKCRzZWxmLCAvLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLFxuIgorIiAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGICAgIFwKKyAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNTTE1lbW9yeUJJTyAqb3V0Z29pbmcsIGludCBzZXJ2ZXJfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nOworICAgIFB5U1NMTWVtb3J5QklPICpvdXRnb2luZzsKKyAgICBpbnQgc2VydmVyX3NpZGU7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIU8haXxPOl93cmFwX2JpbyIsIF9rZXl3b3JkcywKKyAgICAgICAgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZpbmNvbWluZywgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZvdXRnb2luZywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX19kb2NfXywKKyJzZXNzaW9uX3N0YXRzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFU1NJT05fU1RBVFNfTUVUSE9EREVGICAgIFwKKyAgICB7InNlc3Npb25fc3RhdHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19fZG9jX18sCisic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChzZWxmKTsKK30KKworI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmVfX2RvY19fLAorInNldF9lY2RoX2N1cnZlKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X3NldF9lY2RoX2N1cnZlLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmVfX2RvY19ffSwKKworI2VuZGlmIC8qICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfX2RvY19fLAorInNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKCRzZWxmLCBtZXRob2QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBzZXJ2ZXIgbmFtZSBpcyBwcm92aWRlZCBieSB0aGUgU1NML1RMUyBjbGllbnQgaW4gdGhlIFNOSSBleHRlbnNpb24uXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkXG4iCisid2l0aCB0aGUgU1NMU29ja2V0LCB0aGUgc2VydmVyIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCB0aGUgU1NMQ29udGV4dCBvYmplY3QuXG4iCisiU2VlIFJGQyA2MDY2IGZvciBkZXRhaWxzIG9mIHRoZSBTTkkgZXh0ZW5zaW9uLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2ssIE1FVEhfTywgX3NzbF9fU1NMQ29udGV4dF9zZXRfc2VydmVybmFtZV9jYWxsYmFja19fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX19kb2NfXywKKyJjZXJ0X3N0b3JlX3N0YXRzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBxdWFudGl0aWVzIG9mIGxvYWRlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMuXG4iCisiXG4iCisiWC41MDkgY2VydGlmaWNhdGVzIHdpdGggYSBDQSBleHRlbnNpb24gYW5kIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdHNcbiIKKyJpbnNpZGUgdGhlIGNvbnRleHRcJ3MgY2VydCBzdG9yZS5cbiIKKyJcbiIKKyJOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW5cJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcbiIKKyJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0NFUlRfU1RPUkVfU1RBVFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImNlcnRfc3RvcmVfc3RhdHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX18sCisiZ2V0X2NhX2NlcnRzKCRzZWxmLCAvLCBiaW5hcnlfZm9ybT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgYSBsaXN0IG9mIGRpY3RzIHdpdGggaW5mb3JtYXRpb24gb2YgbG9hZGVkIENBIGNlcnRzLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0FcbiIKKyJjZXJ0aWZpY2F0ZS5cbiIKKyJcbiIKKyJOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW5cJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcbiIKKyJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBpbnQgYmluYXJ5X2Zvcm0pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgaW50IGJpbmFyeV9mb3JtID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmJpbmFyeV9mb3JtKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoc2VsZiwgYmluYXJ5X2Zvcm0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJTyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX2ltcGwodHlwZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfTWVtb3J5QklPX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IEJJTy5cbiIKKyJcbiIKKyJJZiBzaXplIGlzIG5vdCBzcGVjaWZpZWQsIHJlYWQgdGhlIGVudGlyZSBidWZmZXIuXG4iCisiSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlbXB0eSBieXRlcyBpbnN0YW5jZSwgdGhpcyBtZWFucyBlaXRoZXJcbiIKKyJFT0Ygb3IgdGhhdCBubyBkYXRhIGlzIGF2YWlsYWJsZS4gVXNlIHRoZSBcImVvZlwiIHByb3BlcnR5IHRvXG4iCisiZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLiIpOworCisjZGVmaW5lIF9TU0xfTUVNT1JZQklPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfc3NsX01lbW9yeUJJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIGludCBsZW4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fcmVhZChQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGxlbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkIiwKKyAgICAgICAgJmxlbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoc2VsZiwgbGVuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9NZW1vcnlCSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIHRoZSBieXRlcyBiIGludG8gdGhlIG1lbW9yeSBCSU8uXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfTWVtb3J5QklPX3dyaXRlLCBNRVRIX08sIF9zc2xfTWVtb3J5QklPX3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmLCBQeV9idWZmZXIgKmIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGUoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfX2RvY19fLAorIndyaXRlX2VvZigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGFuIEVPRiBtYXJrZXIgdG8gdGhlIG1lbW9yeSBCSU8uXG4iCisiXG4iCisiV2hlbiBhbGwgZGF0YSBoYXMgYmVlbiByZWFkLCB0aGUgXCJlb2ZcIiBwcm9wZXJ0eSB3aWxsIGJlIFRydWUuIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fV1JJVEVfRU9GX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZV9lb2YiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mLCBNRVRIX05PQVJHUywgX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfaW1wbChQeVNTTE1lbW9yeUJJTyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9lb2YoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2FkZF9fZG9jX18sCisiUkFORF9hZGQoJG1vZHVsZSwgc3RyaW5nLCBlbnRyb3B5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuXG4iCisiXG4iCisiZW50cm9weSAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW5cbiIKKyJzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0FERF9NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9hZGQiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLCBfc3NsX1JBTkRfYWRkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICp2aWV3LCBkb3VibGUgZW50cm9weSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGRvdWJsZSBlbnRyb3B5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKmQ6UkFORF9hZGQiLAorICAgICAgICAmdmlldywgJmVudHJvcHkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2FkZF9pbXBsKG1vZHVsZSwgJnZpZXcsIGVudHJvcHkpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHZpZXcgKi8KKyAgICBpZiAodmlldy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2J5dGVzX19kb2NfXywKKyJSQU5EX2J5dGVzKCRtb2R1bGUsIG4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZW5lcmF0ZSBuIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiIpOworCisjZGVmaW5lIF9TU0xfUkFORF9CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9ieXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfYnl0ZXMsIE1FVEhfTywgX3NzbF9SQU5EX2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYnl0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYnl0ZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX2J5dGVzIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX3BzZXVkb19ieXRlc19fZG9jX18sCisiUkFORF9wc2V1ZG9fYnl0ZXMoJG1vZHVsZSwgbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy5cbiIKKyJcbiIKKyJSZXR1cm4gYSBwYWlyIChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYykuICBpc19jcnlwdG9ncmFwaGljIGlzIFRydWVcbiIKKyJpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX1BTRVVET19CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX3BzZXVkb19ieXRlcywgTUVUSF9PLCBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3BzZXVkb19ieXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKG1vZHVsZSwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfUkFORF9zdGF0dXNfX2RvY19fLAorIlJBTkRfc3RhdHVzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuXG4iCisiXG4iCisiSXQgaXMgbmVjZXNzYXJ5IHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBSQU5EX2FkZCgpIG9uIHNvbWUgcGxhdGZvcm1zIGJlZm9yZVxuIgorInVzaW5nIHRoZSBzc2woKSBmdW5jdGlvbi4iKTsKKworI2RlZmluZSBfU1NMX1JBTkRfU1RBVFVTX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX3N0YXR1cyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfc3RhdHVzLCBNRVRIX05PQVJHUywgX3NzbF9SQU5EX3N0YXR1c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3N0YXR1c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3N0YXR1cyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX1JBTkRfc3RhdHVzX2ltcGwobW9kdWxlKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9SQU5EX0VHRCkKKworUHlEb2NfU1RSVkFSKF9zc2xfUkFORF9lZ2RfX2RvY19fLAorIlJBTkRfZWdkKCRtb2R1bGUsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJRdWVyaWVzIHRoZSBlbnRyb3B5IGdhdGhlciBkYWVtb24gKEVHRCkgb24gdGhlIHNvY2tldCBuYW1lZCBieSBcJ3BhdGhcJy5cbiIKKyJcbiIKKyJSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkLiAgUmFpc2VzIFNTTEVycm9yIGlmIGNvbm5lY3Rpb24gdG8gRUdEXG4iCisiZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9lZ2QiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX2VnZCwgTUVUSF9PLCBfc3NsX1JBTkRfZWdkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfZWdkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX2VnZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2VnZF9pbXBsKG1vZHVsZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9SQU5EX0VHRCkgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX19kb2NfXywKKyJnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzZWFyY2ggcGF0aHMgYW5kIGVudmlyb25tZW50IHZhcnMgdGhhdCBhcmUgdXNlZCBieSBTU0xDb250ZXh0XCdzIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIHRvIGxvYWQgZGVmYXVsdCBDQXMuXG4iCisiXG4iCisiVGhlIHZhbHVlcyBhcmUgXCdjZXJ0X2ZpbGVfZW52XCcsIFwnY2VydF9maWxlXCcsIFwnY2VydF9kaXJfZW52XCcsIFwnY2VydF9kaXJcJy4iKTsKKworI2RlZmluZSBfU1NMX0dFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLCBNRVRIX05PQVJHUywgX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX3R4dDJvYmpfX2RvY19fLAorInR4dDJvYmooJG1vZHVsZSwgLywgdHh0LCBuYW1lPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuXG4iCisiXG4iCisiQnkgZGVmYXVsdCBvYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmRcbiIKKyJsb25nIG5hbWUgYXJlIGFsc28gbWF0Y2hlZC4iKTsKKworI2RlZmluZSBfU1NMX1RYVDJPQkpfTUVUSE9EREVGICAgIFwKKyAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF90eHQyb2JqX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX3R4dDJvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICp0eHQsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfdHh0Mm9iaihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqdHh0OworICAgIGludCBuYW1lID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLAorICAgICAgICAmdHh0LCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX3R4dDJvYmpfaW1wbChtb2R1bGUsIHR4dCwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfbmlkMm9ial9fZG9jX18sCisibmlkMm9iaigkbW9kdWxlLCBuaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuIik7CisKKyNkZWZpbmUgX1NTTF9OSUQyT0JKX01FVEhPRERFRiAgICBcCisgICAgeyJuaWQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfbmlkMm9iaiwgTUVUSF9PLCBfc3NsX25pZDJvYmpfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfbmlkMm9ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9uaWQyb2JqKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5pZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX25pZDJvYmpfaW1wbChtb2R1bGUsIG5pZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisKK1B5RG9jX1NUUlZBUihfc3NsX2VudW1fY2VydGlmaWNhdGVzX19kb2NfXywKKyJlbnVtX2NlcnRpZmljYXRlcygkbW9kdWxlLCAvLCBzdG9yZV9uYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93c1wnIGNlcnQgc3RvcmUuXG4iCisiXG4iCisic3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mIFwnQ0FcJywgXCdST09UXCcgb3IgXCdNWVwnLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZVxuIgorIm1vcmUgY2VydCBzdG9yYWdlcywgdG9vLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcyxcbiIKKyJlbmNvZGluZ190eXBlLCB0cnVzdCkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWRcbiIKKyJ3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlclxuIgorImEgc2V0IG9mIE9JRHMgb3IgdGhlIGJvb2xlYW4gVHJ1ZS4iKTsKKworI2RlZmluZSBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRiAgICBcCisgICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0b3JlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX01TQ19WRVIpICovCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorCitQeURvY19TVFJWQVIoX3NzbF9lbnVtX2NybHNfX2RvY19fLAorImVudW1fY3JscygkbW9kdWxlLCAvLCBzdG9yZV9uYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3NcJyBjZXJ0IHN0b3JlLlxuIgorIlxuIgorInN0b3JlX25hbWUgbWF5IGJlIG9uZSBvZiBcJ0NBXCcsIFwnUk9PVFwnIG9yIFwnTVlcJy4gIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGVcbiIKKyJtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsXG4iCisiZW5jb2RpbmdfdHlwZSkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQgd2l0aFxuIgorIlg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIik7CisKKyNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2VudW1fY3Jsc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NybHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX2VudW1fY3Jsc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX01TQ19WRVIpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfUkFORF9FR0RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfRU5VTV9DRVJUSUZJQ0FURVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE0OTk5Y2I1NjVhNjlhMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkxN2RlYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApAQCAtMCwwICsxLDYyNCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V2YWxfX2RvY19fLAorImV2YWwoJHNlbGYsIHNjcmlwdCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVZBTF9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9ldmFsLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWwoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqc2NyaXB0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxfaW1wbChzZWxmLCBzY3JpcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9fZG9jX18sCisiZXZhbGZpbGUoJHNlbGYsIGZpbGVOYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FVkFMRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbGZpbGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXZhbGZpbGUsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmZpbGVOYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxmaWxlKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoc2VsZiwgZmlsZU5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9yZWNvcmRfX2RvY19fLAorInJlY29yZCgkc2VsZiwgc2NyaXB0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9SRUNPUkRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlY29yZCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9yZWNvcmQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfcmVjb3JkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3JlY29yZChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzY3JpcHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChzZWxmLCBzY3JpcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX19kb2NfXywKKyJhZGRlcnJpbmZvKCRzZWxmLCBtc2csIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0FEREVSUklORk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZGVycmluZm8iLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mbywgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm1zZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm1zZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoc2VsZiwgbXNnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0aW50X19kb2NfXywKKyJnZXRpbnQoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfR0VUSU5UX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRpbnQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0aW50LCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2dldGludF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlX19kb2NfXywKKyJnZXRkb3VibGUoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfR0VURE9VQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRkb3VibGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2dldGRvdWJsZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbl9fZG9jX18sCisiZ2V0Ym9vbGVhbigkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9HRVRCT09MRUFOX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRib29sZWFuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2dldGJvb2xlYW4sIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19fZG9jX18sCisiZXhwcnN0cmluZygkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUlNUUklOR19NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcnN0cmluZyIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChzZWxmLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfX2RvY19fLAorImV4cHJsb25nKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FWFBSTE9OR19NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcmxvbmciLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmxvbmcsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmxvbmcoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqczsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfX2RvY19fLAorImV4cHJkb3VibGUoJHNlbGYsIHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0VYUFJET1VCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cHJkb3VibGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZSwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZShUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX19kb2NfXywKKyJleHByYm9vbGVhbigkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUkJPT0xFQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cHJib29sZWFuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJib29sZWFuKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKHNlbGYsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3RfX2RvY19fLAorInNwbGl0bGlzdCgkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9TUExJVExJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0bGlzdCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3QsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfc3BsaXRsaXN0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3NwbGl0LCBNRVRIX08sIF90a2ludGVyX3RrYXBwX3NwbGl0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX19kb2NfXywKKyJjcmVhdGVjb21tYW5kKCRzZWxmLCBuYW1lLCBmdW5jLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9DUkVBVEVDT01NQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVjb21tYW5kIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmQsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOmNyZWF0ZWNvbW1hbmQiLAorICAgICAgICAmbmFtZSwgJmZ1bmMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUsIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX19kb2NfXywKKyJkZWxldGVjb21tYW5kKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVDT01NQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxldGVjb21tYW5kIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpkZWxldGVjb21tYW5kIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIpCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9fZG9jX18sCisiY3JlYXRlZmlsZWhhbmRsZXIoJHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVmaWxlaGFuZGxlciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXNrLCBQeU9iamVjdCAqZnVuYyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcihUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IG1hc2s7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTzpjcmVhdGVmaWxlaGFuZGxlciIsCisgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChzZWxmLCBmaWxlLCBtYXNrLCBmdW5jKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXJfX2RvY19fLAorImRlbGV0ZWZpbGVoYW5kbGVyKCRzZWxmLCBmaWxlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsZXRlZmlsZWhhbmRsZXIiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXIsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXJfX2RvY19ffSwKKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DUkVBVEVGSUxFSEFORExFUikgKi8KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfX2RvY19fLAorImRlbGV0ZXRpbWVyaGFuZGxlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtUSU1FUlRPS0VOX0RFTEVURVRJTUVSSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsZXRldGltZXJoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXIsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyKFRrdHRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9fZG9jX18sCisiY3JlYXRldGltZXJoYW5kbGVyKCRzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURVRJTUVSSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRldGltZXJoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgbWlsbGlzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWlsbGlzZWNvbmRzOworICAgIFB5T2JqZWN0ICpmdW5jOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAorICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9fZG9jX18sCisibWFpbmxvb3AoJHNlbGYsIHRocmVzaG9sZD0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9NQUlOTE9PUF9NRVRIT0RERUYgICAgXAorICAgIHsibWFpbmxvb3AiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfbWFpbmxvb3AsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfbWFpbmxvb3AoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB0aHJlc2hvbGQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsCisgICAgICAgICZ0aHJlc2hvbGQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChzZWxmLCB0aHJlc2hvbGQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X19kb2NfXywKKyJkb29uZWV2ZW50KCRzZWxmLCBmbGFncz0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ET09ORUVWRU5UX01FVEhPRERFRiAgICBcCisgICAgeyJkb29uZWV2ZW50IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnQsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZG9vbmVldmVudCIsCisgICAgICAgICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoc2VsZiwgZmxhZ3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9xdWl0X19kb2NfXywKKyJxdWl0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9RVUlUX01FVEhPRERFRiAgICBcCisgICAgeyJxdWl0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3F1aXQsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9xdWl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9xdWl0X2ltcGwoVGthcHBPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfcXVpdChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfcXVpdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9fZG9jX18sCisiaW50ZXJwYWRkcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfSU5URVJQQUREUl9NRVRIT0RERUYgICAgXAorICAgIHsiaW50ZXJwYWRkciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyLCBNRVRIX05PQVJHUywgX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2ludGVycGFkZHIoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrYXBwX2ludGVycGFkZHJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2xvYWR0a19fZG9jX18sCisibG9hZHRrKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9MT0FEVEtfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWR0ayIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9sb2FkdGssIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9sb2FkdGtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2xvYWR0a19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2xvYWR0ayhUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfbG9hZHRrX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfX2RvY19fLAorIndpbGxkaXNwYXRjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfV0lMTERJU1BBVENIX01FVEhPRERFRiAgICBcCisgICAgeyJ3aWxsZGlzcGF0Y2giLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoLCBNRVRIX05PQVJHUywgX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2goVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfX2ZsYXR0ZW5fX2RvY19fLAorIl9mbGF0dGVuKCRtb2R1bGUsIGl0ZW0sIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX19GTEFUVEVOX01FVEhPRERFRiAgICBcCisgICAgeyJfZmxhdHRlbiIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9fZmxhdHRlbiwgTUVUSF9PLCBfdGtpbnRlcl9fZmxhdHRlbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfY3JlYXRlX19kb2NfXywKKyJjcmVhdGUoJG1vZHVsZSwgc2NyZWVuTmFtZT1Ob25lLCBiYXNlTmFtZT1Ob25lLCBjbGFzc05hbWU9XCdUa1wnLFxuIgorIiAgICAgICBpbnRlcmFjdGl2ZT1GYWxzZSwgd2FudG9iamVjdHM9RmFsc2UsIHdhbnRUaz1UcnVlLCBzeW5jPUZhbHNlLFxuIgorIiAgICAgICB1c2U9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlxuIgorIlxuIgorIiAgd2FudFRrXG4iCisiICAgIGlmIGZhbHNlLCB0aGVuIFRrX0luaXQoKSBkb2VzblwndCBnZXQgY2FsbGVkXG4iCisiICBzeW5jXG4iCisiICAgIGlmIHRydWUsIHRoZW4gcGFzcyAtc3luYyB0byB3aXNoXG4iCisiICB1c2VcbiIKKyIgICAgaWYgbm90IE5vbmUsIHRoZW4gcGFzcyAtdXNlIHRvIHdpc2giKTsKKworI2RlZmluZSBfVEtJTlRFUl9DUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZSIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9jcmVhdGUsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfY3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9jcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzY3JlZW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFzZU5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9jcmVhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqc2NyZWVuTmFtZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqYmFzZU5hbWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSA9ICJUayI7CisgICAgaW50IGludGVyYWN0aXZlID0gMDsKKyAgICBpbnQgd2FudG9iamVjdHMgPSAwOworICAgIGludCB3YW50VGsgPSAxOworICAgIGludCBzeW5jID0gMDsKKyAgICBjb25zdCBjaGFyICp1c2UgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8enNzaWlpaXo6Y3JlYXRlIiwKKyAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX2NyZWF0ZV9pbXBsKG1vZHVsZSwgc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB3YW50VGssIHN5bmMsIHVzZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19fLAorInNldGJ1c3l3YWl0aW50ZXJ2YWwoJG1vZHVsZSwgbmV3X3ZhbCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuXG4iCisiXG4iCisiSXQgc2hvdWxkIGJlIHNldCB0byBhIGRpdmlzb3Igb2YgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuIGZyYW1lcyBpbiBhbiBhbmltYXRpb24uIik7CisKKyNkZWZpbmUgX1RLSU5URVJfU0VUQlVTWVdBSVRJTlRFUlZBTF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0YnVzeXdhaXRpbnRlcnZhbCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsLCBNRVRIX08sIF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmV3X3ZhbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5ld192YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUsIG5ld192YWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX19kb2NfXywKKyJnZXRidXN5d2FpdGludGVydmFsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgYnVzeS13YWl0IGludGVydmFsIGJldHdlZW4gc3VjY2Vzc2l2ZSBjYWxscyB0byBUY2xfRG9PbmVFdmVudCBpbiBhIHRocmVhZGVkIFB5dGhvbiBpbnRlcnByZXRlci4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9HRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRidXN5d2FpdGludGVydmFsIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9DUkVBVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZGQ2NjdiOTFjZjhhZGRkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaCBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2M3MDFjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19fLAorImdldHdlYWtyZWZjb3VudCgkbW9kdWxlLCBvYmplY3QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gXCdvYmplY3RcJy4iKTsKKworI2RlZmluZSBfV0VBS1JFRl9HRVRXRUFLUkVGQ09VTlRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHdlYWtyZWZjb3VudCIsIChQeUNGdW5jdGlvbilfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQsIE1FVEhfTywgX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193ZWFrcmVmX2dldHdlYWtyZWZjb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGRhOWFhZGU2M2VlZDc3ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaCBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NTE4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaApAQCAtMCwwICsxLDg1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X19kb2NfXywKKyJHZXRPdmVybGFwcGVkUmVzdWx0KCRzZWxmLCB3YWl0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX09WRVJMQVBQRURfR0VUT1ZFUkxBUFBFRFJFU1VMVF9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwgTUVUSF9PLCBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBpbnQgd2FpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB3YWl0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKHNlbGYsIHdhaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX19kb2NfXywKKyJnZXRidWZmZXIoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRCVUZGRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX19kb2NfXywKKyJjYW5jZWwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9DQU5DRUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0Nsb3NlSGFuZGxlX19kb2NfXywKKyJDbG9zZUhhbmRsZSgkbW9kdWxlLCBoYW5kbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSBoYW5kbGUuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DTE9TRUhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2VIYW5kbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9PLCBfd2luYXBpX0Nsb3NlSGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nsb3NlSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19fLAorIkNvbm5lY3ROYW1lZFBpcGUoJG1vZHVsZSwgLywgaGFuZGxlLCBvdmVybGFwcGVkPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NPTk5FQ1ROQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCB1c2Vfb3ZlcmxhcHBlZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlRmlsZV9fZG9jX18sCisiQ3JlYXRlRmlsZSgkbW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLFxuIgorIiAgICAgICAgICAgc2VjdXJpdHlfYXR0cmlidXRlcywgY3JlYXRpb25fZGlzcG9zaXRpb24sXG4iCisiICAgICAgICAgICBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZUZpbGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgRFdPUkQgc2hhcmVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBmbGFnc19hbmRfYXR0cmlidXRlcywgSEFORExFIHRlbXBsYXRlX2ZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVGaWxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgZmlsZV9uYW1lOworICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzOworICAgIERXT1JEIHNoYXJlX21vZGU7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY3VyaXR5X2F0dHJpYnV0ZXM7CisgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb247CisgICAgRFdPUkQgZmxhZ3NfYW5kX2F0dHJpYnV0ZXM7CisgICAgSEFORExFIHRlbXBsYXRlX2ZpbGU7CisgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrayIgRl9QT0lOVEVSICJrayIgRl9IQU5ETEUgIjpDcmVhdGVGaWxlIiwKKyAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwobW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9fZG9jX18sCisiQ3JlYXRlSnVuY3Rpb24oJG1vZHVsZSwgc3JjX3BhdGgsIGRzdF9wYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURUpVTkNUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVKdW5jdGlvbiIsIChQeUNGdW5jdGlvbilfd2luYXBpX0NyZWF0ZUp1bmN0aW9uLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUFdTVFIgc3JjX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGRzdF9wYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgTFBXU1RSIHNyY19wYXRoOworICAgIExQV1NUUiBkc3RfcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6Q3JlYXRlSnVuY3Rpb24iLAorICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUp1bmN0aW9uX2ltcGwobW9kdWxlLCBzcmNfcGF0aCwgZHN0X3BhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9fZG9jX18sCisiQ3JlYXRlTmFtZWRQaXBlKCRtb2R1bGUsIG5hbWUsIG9wZW5fbW9kZSwgcGlwZV9tb2RlLCBtYXhfaW5zdGFuY2VzLFxuIgorIiAgICAgICAgICAgICAgICBvdXRfYnVmZmVyX3NpemUsIGluX2J1ZmZlcl9zaXplLCBkZWZhdWx0X3RpbWVvdXQsXG4iCisiICAgICAgICAgICAgICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfQ1JFQVRFTkFNRURQSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVOYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wZW5fbW9kZSwgRFdPUkQgcGlwZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtYXhfaW5zdGFuY2VzLCBEV09SRCBvdXRfYnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGluX2J1ZmZlcl9zaXplLCBEV09SRCBkZWZhdWx0X3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgbmFtZTsKKyAgICBEV09SRCBvcGVuX21vZGU7CisgICAgRFdPUkQgcGlwZV9tb2RlOworICAgIERXT1JEIG1heF9pbnN0YW5jZXM7CisgICAgRFdPUkQgb3V0X2J1ZmZlcl9zaXplOworICAgIERXT1JEIGluX2J1ZmZlcl9zaXplOworICAgIERXT1JEIGRlZmF1bHRfdGltZW91dDsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlczsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2tra2trayIgRl9QT0lOVEVSICI6Q3JlYXRlTmFtZWRQaXBlIiwKKyAgICAgICAgJm5hbWUsICZvcGVuX21vZGUsICZwaXBlX21vZGUsICZtYXhfaW5zdGFuY2VzLCAmb3V0X2J1ZmZlcl9zaXplLCAmaW5fYnVmZmVyX3NpemUsICZkZWZhdWx0X3RpbWVvdXQsICZzZWN1cml0eV9hdHRyaWJ1dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsIG1heF9pbnN0YW5jZXMsIG91dF9idWZmZXJfc2l6ZSwgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCwgc2VjdXJpdHlfYXR0cmlidXRlcyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZVBpcGVfX2RvY19fLAorIkNyZWF0ZVBpcGUoJG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZS5cbiIKKyJcbiIKKyIgIHBpcGVfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgMi10dXBsZSBvZiBoYW5kbGVzLCB0byB0aGUgcmVhZCBhbmQgd3JpdGUgZW5kcyBvZiB0aGUgcGlwZS4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURVBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZVBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlUGlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBpcGVfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGlwZV9hdHRyczsKKyAgICBEV09SRCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPazpDcmVhdGVQaXBlIiwKKyAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUGlwZV9pbXBsKG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19fZG9jX18sCisiQ3JlYXRlUHJvY2VzcygkbW9kdWxlLCBhcHBsaWNhdGlvbl9uYW1lLCBjb21tYW5kX2xpbmUsIHByb2NfYXR0cnMsXG4iCisiICAgICAgICAgICAgICB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsXG4iCisiICAgICAgICAgICAgICBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbywgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuXG4iCisiXG4iCisiICBwcm9jX2F0dHJzXG4iCisiICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuXG4iCisiICB0aHJlYWRfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuIgorInByb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKmFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpjb21tYW5kX2xpbmUsIFB5T2JqZWN0ICpwcm9jX2F0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRocmVhZF9hdHRycywgQk9PTCBpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBjcmVhdGlvbl9mbGFncywgUHlPYmplY3QgKmVudl9tYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9VTklDT0RFICphcHBsaWNhdGlvbl9uYW1lOworICAgIFB5X1VOSUNPREUgKmNvbW1hbmRfbGluZTsKKyAgICBQeU9iamVjdCAqcHJvY19hdHRyczsKKyAgICBQeU9iamVjdCAqdGhyZWFkX2F0dHJzOworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOworICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOworICAgIFB5T2JqZWN0ICplbnZfbWFwcGluZzsKKyAgICBQeV9VTklDT0RFICpjdXJyZW50X2RpcmVjdG9yeTsKKyAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWtPWk86Q3JlYXRlUHJvY2VzcyIsCisgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLCBpbmhlcml0X2hhbmRsZXMsIGNyZWF0aW9uX2ZsYWdzLCBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX19kb2NfXywKKyJEdXBsaWNhdGVIYW5kbGUoJG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuIgorIiAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSxcbiIKKyIgICAgICAgICAgICAgICAgb3B0aW9ucz0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG4iCisiXG4iCisiVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcbiIKKyJoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG4iCisidGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9EVVBMSUNBVEVIQU5ETEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgSEFORExFCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgQk9PTCBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOworICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOworICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBvcHRpb25zID0gMDsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAia2l8azpEdXBsaWNhdGVIYW5kbGUiLAorICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLCB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgb3B0aW9ucyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0V4aXRQcm9jZXNzX19kb2NfXywKKyJFeGl0UHJvY2VzcygkbW9kdWxlLCBFeGl0Q29kZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9FWElUUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiRXhpdFByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9FeGl0UHJvY2VzcywgTUVUSF9PLCBfd2luYXBpX0V4aXRQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgVUlOVCBFeGl0Q29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0V4aXRQcm9jZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgVUlOVCBFeGl0Q29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwobW9kdWxlLCBFeGl0Q29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfX2RvY19fLAorIkdldEN1cnJlbnRQcm9jZXNzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUQ1VSUkVOVFBST0NFU1NfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfTk9BUkdTLCBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX19kb2NfXywKKyJHZXRFeGl0Q29kZVByb2Nlc3MoJG1vZHVsZSwgcHJvY2VzcywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX0dFVEVYSVRDT0RFUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiR2V0RXhpdENvZGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX08sIF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgcHJvY2Vzcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChtb2R1bGUsIHByb2Nlc3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0TGFzdEVycm9yX19kb2NfXywKKyJHZXRMYXN0RXJyb3IoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRMQVNURVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldExhc3RFcnJvciIsIChQeUNGdW5jdGlvbilfd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0TGFzdEVycm9yX19kb2NfX30sCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRMYXN0RXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0TGFzdEVycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKG1vZHVsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9fZG9jX18sCisiR2V0TW9kdWxlRmlsZU5hbWUoJG1vZHVsZSwgbW9kdWxlX2hhbmRsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgbW9kdWxlLlxuIgorIlxuIgorIlRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MuXG4iCisiXG4iCisiVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG4iCisid2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsXG4iCisiR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcbiIKKyJvZiB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUTU9EVUxFRklMRU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfTywgX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhNT0RVTEUgbW9kdWxlX2hhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSE1PRFVMRSBtb2R1bGVfaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwobW9kdWxlLCBtb2R1bGVfaGFuZGxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRTdGRIYW5kbGVfX2RvY19fLAorIkdldFN0ZEhhbmRsZSgkbW9kdWxlLCBzdGRfaGFuZGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlLlxuIgorIlxuIgorIiAgc3RkX2hhbmRsZVxuIgorIiAgICBPbmUgb2YgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIG9yIFNURF9FUlJPUl9IQU5ETEUuXG4iCisiXG4iCisiVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUU1RESEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRTdGRIYW5kbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRTdGRIYW5kbGUsIE1FVEhfTywgX3dpbmFwaV9HZXRTdGRIYW5kbGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBzdGRfaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0U3RkSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgc3RkX2hhbmRsZTsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChtb2R1bGUsIHN0ZF9oYW5kbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRWZXJzaW9uX19kb2NfXywKKyJHZXRWZXJzaW9uKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRWRVJTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRWZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0VmVyc2lvbl9fZG9jX199LAorCitzdGF0aWMgbG9uZworX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldFZlcnNpb24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3BlblByb2Nlc3NfX2RvY19fLAorIk9wZW5Qcm9jZXNzKCRtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9PUEVOUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiT3BlblByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX09wZW5Qcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfT3BlblByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGluaGVyaXRfaGFuZGxlLCBEV09SRCBwcm9jZXNzX2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfT3BlblByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBwcm9jZXNzX2lkOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJraWs6T3BlblByb2Nlc3MiLAorICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJnByb2Nlc3NfaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfT3BlblByb2Nlc3NfaW1wbChtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1BlZWtOYW1lZFBpcGVfX2RvY19fLAorIlBlZWtOYW1lZFBpcGUoJG1vZHVsZSwgaGFuZGxlLCBzaXplPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfUEVFS05BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiUGVla05hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9QZWVrTmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1BlZWtOYW1lZFBpcGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiLAorICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfUmVhZEZpbGVfX2RvY19fLAorIlJlYWRGaWxlKCRtb2R1bGUsIC8sIGhhbmRsZSwgc2l6ZSwgb3ZlcmxhcHBlZD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9SRUFERklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfUmVhZEZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfUmVhZEZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9SZWFkRmlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplOworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9SZWFkRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplLCB1c2Vfb3ZlcmxhcHBlZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfX2RvY19fLAorIlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKCRtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2NvbGxlY3Rpb25fY291bnQsIGNvbGxlY3RfZGF0YV90aW1lb3V0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX1NFVE5BTUVEUElQRUhBTkRMRVNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgbmFtZWRfcGlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWF4X2NvbGxlY3Rpb25fY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbGxlY3RfZGF0YV90aW1lb3V0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIG5hbWVkX3BpcGU7CisgICAgUHlPYmplY3QgKm1vZGU7CisgICAgUHlPYmplY3QgKm1heF9jb2xsZWN0aW9uX2NvdW50OworICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiT09POlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwKKyAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlX2ltcGwobW9kdWxlLCBuYW1lZF9waXBlLCBtb2RlLCBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfX2RvY19fLAorIlRlcm1pbmF0ZVByb2Nlc3MoJG1vZHVsZSwgaGFuZGxlLCBleGl0X2NvZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9URVJNSU5BVEVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGV4aXRfY29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBVSU5UIGV4aXRfY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiSTpUZXJtaW5hdGVQcm9jZXNzIiwKKyAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGhhbmRsZSwgZXhpdF9jb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0TmFtZWRQaXBlX19kb2NfXywKKyJXYWl0TmFtZWRQaXBlKCRtb2R1bGUsIG5hbWUsIHRpbWVvdXQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfV0FJVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiV2FpdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9XYWl0TmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsIERXT1JEIHRpbWVvdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0TmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgbmFtZTsKKyAgICBEV09SRCB0aW1lb3V0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzazpXYWl0TmFtZWRQaXBlIiwKKyAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgdGltZW91dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19fZG9jX18sCisiV2FpdEZvck11bHRpcGxlT2JqZWN0cygkbW9kdWxlLCBoYW5kbGVfc2VxLCB3YWl0X2ZsYWcsXG4iCisiICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM9X3dpbmFwaS5JTkZJTklURSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9XQUlURk9STVVMVElQTEVPQkpFQ1RTX01FVEhPRERFRiAgICBcCisgICAgeyJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlX3NlcSwgQk9PTCB3YWl0X2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOworICAgIEJPT0wgd2FpdF9mbGFnOworICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaXxrOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAorICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfaW1wbChtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X19kb2NfXywKKyJXYWl0Rm9yU2luZ2xlT2JqZWN0KCRtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgYSBzaW5nbGUgb2JqZWN0LlxuIgorIlxuIgorIldhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yXG4iCisidGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuIgorImluIG1pbGxpc2Vjb25kcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX1dBSVRGT1JTSU5HTEVPQkpFQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0LCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9fZG9jX199LAorCitzdGF0aWMgbG9uZworX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1pbGxpc2Vjb25kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBtaWxsaXNlY29uZHM7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJrOldhaXRGb3JTaW5nbGVPYmplY3QiLAorICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfV3JpdGVGaWxlX19kb2NfXywKKyJXcml0ZUZpbGUoJG1vZHVsZSwgLywgaGFuZGxlLCBidWZmZXIsIG92ZXJsYXBwZWQ9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Xcml0ZUZpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5T2JqZWN0ICpidWZmZXI7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZoYW5kbGUsICZidWZmZXIsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dyaXRlRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBidWZmZXIsIHVzZV9vdmVybGFwcGVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4NzcxYzY1ODQwNTZkMTkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjI0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKQEAgLTAsMCArMSw0OTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX0NPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfX19jb3B5X18sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9fX2NvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX2NvcHlfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCB1bnVzZWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX2RlZXBjb3B5X18sIE1FVEhfTywgYXJyYXlfYXJyYXlfX19kZWVwY29weV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9jb3VudF9fZG9jX18sCisiY291bnQoJHNlbGYsIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHYgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0NPVU5UX01FVEhPRERFRiAgICBcCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9jb3VudCwgTUVUSF9PLCBhcnJheV9hcnJheV9jb3VudF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfaW5kZXhfX2RvY19fLAorImluZGV4KCRzZWxmLCB2LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIGZpcnN0IG9jY3VycmVuY2Ugb2YgdiBpbiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfSU5ERVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2luZGV4LCBNRVRIX08sIGFycmF5X2FycmF5X2luZGV4X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9SRU1PVkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9yZW1vdmUsIE1FVEhfTywgYXJyYXlfYXJyYXlfcmVtb3ZlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9wb3BfX2RvY19fLAorInBvcCgkc2VsZiwgaT0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaS10aCBlbGVtZW50IGFuZCBkZWxldGUgaXQgZnJvbSB0aGUgYXJyYXkuXG4iCisiXG4iCisiaSBkZWZhdWx0cyB0byAtMS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9QT1BfTUVUSE9EREVGICAgIFwKKyAgICB7InBvcCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9wb3AsIE1FVEhfVkFSQVJHUywgYXJyYXlfYXJyYXlfcG9wX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9wb3BfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3BvcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCisgICAgICAgICZpKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X3BvcF9pbXBsKHNlbGYsIGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgYmIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfRVhURU5EX01FVEhPRERFRiAgICBcCisgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZXh0ZW5kLCBNRVRIX08sIGFycmF5X2FycmF5X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfaW5zZXJ0X19kb2NfXywKKyJpbnNlcnQoJHNlbGYsIGksIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbnNlcnQgYSBuZXcgaXRlbSB2IGludG8gdGhlIGFycmF5IGJlZm9yZSBwb3NpdGlvbiBpLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2luc2VydCwgTUVUSF9WQVJBUkdTLCBhcnJheV9hcnJheV9pbnNlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2luc2VydF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2luc2VydChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICp2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLAorICAgICAgICAmaSwgJnYpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaSwgdik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2J1ZmZlcl9pbmZvX19kb2NfXywKKyJidWZmZXJfaW5mbygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheVwncyBjb250ZW50cy5cbiIKKyJcbiIKKyJUaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlXG4iCisidGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfQlVGRkVSX0lORk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImJ1ZmZlcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnVmZmVyX2luZm8oYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9hcHBlbmRfX2RvY19fLAorImFwcGVuZCgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBuZXcgdmFsdWUgdiB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9BUFBFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9hcHBlbmQsIE1FVEhfTywgYXJyYXlfYXJyYXlfYXBwZW5kX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9ieXRlc3dhcF9fZG9jX18sCisiYnl0ZXN3YXAoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJCeXRlc3dhcCBhbGwgaXRlbXMgb2YgdGhlIGFycmF5LlxuIgorIlxuIgorIklmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLCA0LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpc1xuIgorInJhaXNlZC4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9CWVRFU1dBUF9NRVRIT0RERUYgICAgXAorICAgIHsiYnl0ZXN3YXAiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfYnl0ZXN3YXAsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9ieXRlc3dhcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnl0ZXN3YXBfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9ieXRlc3dhcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfYnl0ZXN3YXBfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3JldmVyc2VfX2RvY19fLAorInJldmVyc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1JFVkVSU0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJldmVyc2UiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X3JldmVyc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3JldmVyc2VfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9yZXZlcnNlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV9yZXZlcnNlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tZmlsZV9fZG9jX18sCisiZnJvbWZpbGUoJHNlbGYsIGYsIG4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIG4gb2JqZWN0cyBmcm9tIHRoZSBmaWxlIG9iamVjdCBmIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWZpbGUiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbWZpbGUsIE1FVEhfVkFSQVJHUywgYXJyYXlfYXJyYXlfZnJvbWZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21maWxlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmOworICAgIFB5X3NzaXplX3QgbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLAorICAgICAgICAmZiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChzZWxmLCBmLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9maWxlX19kb2NfXywKKyJ0b2ZpbGUoJHNlbGYsIGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBhbGwgaXRlbXMgKGFzIG1hY2hpbmUgdmFsdWVzKSB0byB0aGUgZmlsZSBvYmplY3QgZi4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0ZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRvZmlsZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2ZpbGUsIE1FVEhfTywgYXJyYXlfYXJyYXlfdG9maWxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tbGlzdF9fZG9jX18sCisiZnJvbWxpc3QoJHNlbGYsIGxpc3QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01MSVNUX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9tbGlzdCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tbGlzdCwgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tbGlzdF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9saXN0X19kb2NfXywKKyJ0b2xpc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGFycmF5IHRvIGFuIG9yZGluYXJ5IGxpc3Qgd2l0aCB0aGUgc2FtZSBpdGVtcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0xJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7InRvbGlzdCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2xpc3QsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b2xpc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvbGlzdF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvbGlzdChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tc3RyaW5nX19kb2NfXywKKyJmcm9tc3RyaW5nKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIGZyb21ieXRlcyBpbnN0ZWFkLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01TVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21zdHJpbmciLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbXN0cmluZywgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tc3RyaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX19kb2NfXywKKyJmcm9tYnl0ZXMoJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NQllURVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21ieXRlcyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tYnl0ZXMsIE1FVEhfTywgYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWJ5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV90b2J5dGVzX19kb2NfXywKKyJ0b2J5dGVzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCB0aGUgYXJyYXkgdG8gYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMgYW5kIHJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24uIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfVE9CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsidG9ieXRlcyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2J5dGVzLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfdG9ieXRlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3Rvc3RyaW5nX19kb2NfXywKKyJ0b3N0cmluZygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzIGluc3RlYWQuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfVE9TVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7InRvc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3Rvc3RyaW5nLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfdG9zdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3Rvc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3Rvc3RyaW5nX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tdW5pY29kZV9fZG9jX18sCisiZnJvbXVuaWNvZGUoJHNlbGYsIHVzdHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuXG4iCisiXG4iCisiVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLlxuIgorIlVzZSBhcnJheS5mcm9tYnl0ZXModXN0ci5lbmNvZGUoLi4uKSkgdG8gYXBwZW5kIFVuaWNvZGUgZGF0YSB0byBhbiBhcnJheSBvZlxuIgorInNvbWUgb3RoZXIgdHlwZS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NVU5JQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbXVuaWNvZGUiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGUsIE1FVEhfTywgYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb211bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X1VOSUNPREUgKnVzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqdXN0cjsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IHVzdHJfbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChzZWxmLCB1c3RyLCB1c3RyX2xlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3RvdW5pY29kZV9fZG9jX18sCisidG91bmljb2RlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLlxuIgorIlxuIgorIkNvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTtcbiIKKyJvdGhlcndpc2UgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIFVzZSBhcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGFcbiIKKyJ1bmljb2RlIHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT1VOSUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InRvdW5pY29kZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b3VuaWNvZGUsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b3VuaWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvdW5pY29kZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG91bmljb2RlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX3NpemVvZl9fX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2l6ZSBvZiB0aGUgYXJyYXkgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX1NJWkVPRl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X19fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9fX3NpemVvZl9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX3NpemVvZl9fX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfX19zaXplb2ZfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19zaXplb2ZfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfX2RvY19fLAorIl9hcnJheV9yZWNvbnN0cnVjdG9yKCRtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMsXG4iCisiICAgICAgICAgICAgICAgICAgICAgLylcbiIKKyItLVxuIgorIlxuIgorIkludGVybmFsLiBVc2VkIGZvciBwaWNrbGluZyBzdXBwb3J0LiIpOworCisjZGVmaW5lIEFSUkFZX19BUlJBWV9SRUNPTlNUUlVDVE9SX01FVEhPRERFRiAgICBcCisgICAgeyJfYXJyYXlfcmVjb25zdHJ1Y3RvciIsIChQeUNGdW5jdGlvbilhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3RvciwgTUVUSF9WQVJBUkdTLCBhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgbWZvcm1hdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlUeXBlT2JqZWN0ICphcnJheXR5cGU7CisgICAgaW50IHR5cGVjb2RlOworICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CisgICAgUHlPYmplY3QgKml0ZW1zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOl9hcnJheV9yZWNvbnN0cnVjdG9yIiwKKyAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX3JlZHVjZV9leF9fX19kb2NfXywKKyJfX3JlZHVjZV9leF9fKCRzZWxmLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfX19SRURVQ0VfRVhfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX3JlZHVjZV9leF9fLCBNRVRIX08sIGFycmF5X2FycmF5X19fcmVkdWNlX2V4X19fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19fZG9jX18sCisiX19yZWR1Y2VfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1JFRFVDRV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfXywgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoYXJyYXlpdGVyb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfXyhhcnJheWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX19fX2RvY19fLAorIl9fc2V0c3RhdGVfXygkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXywgTUVUSF9PLCBhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZTgyYzY1ZWE4NDFjZmMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAppbmRleCA0MGVmNWUyLi4zZWUyOTY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaApAQCAtMTIsNyArMTIsOCBAQAogICAgIHsiZ2V0c2FtcGxlIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZ2V0c2FtcGxlLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZ2V0c2FtcGxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlfc3NpemVfdCBpbmRleCk7CithdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2dldHNhbXBsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyLDggKzIzLDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppbjpnZXRzYW1wbGUiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppbjpnZXRzYW1wbGUiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBpbmRleCk7CkBAIC01NSw4ICs1NSw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOm1heCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtODgsOCArODcsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTptaW5tYXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1pbm1heCIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWlubWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTEyMSw4ICsxMTksNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphdmciLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2ZyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZnX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTE1NCw4ICsxNTEsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpybXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJtcyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3Bfcm1zX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTE3OCw3ICsxNzQsOCBAQAogICAgIHsiZmluZGZpdCIsIChQeUNGdW5jdGlvbilhdWRpb29wX2ZpbmRmaXQsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9maW5kZml0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CithdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9maW5kZml0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTg3LDggKzE4NCw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqeSo6ZmluZGZpdCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmaXQiLAogICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZml0X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwpAQCAtMjE0LDcgKzIxMCw4IEBACiAgICAgeyJmaW5kZmFjdG9yIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZmluZGZhY3RvciwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2ZpbmRmYWN0b3JfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X2J1ZmZlciAqcmVmZXJlbmNlKTsKK2F1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2ZpbmRmYWN0b3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjMsOCArMjIwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5KjpmaW5kZmFjdG9yIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZhY3RvciIsCiAgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmYWN0b3JfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CkBAIC0yNTAsNyArMjQ2LDggQEAKICAgICB7ImZpbmRtYXgiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9maW5kbWF4LCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZmluZG1heF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfc3NpemVfdCBsZW5ndGgpOworYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfZmluZG1heChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTI1OSw4ICsyNTYsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSpuOmZpbmRtYXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpuOmZpbmRtYXgiLAogICAgICAgICAmZnJhZ21lbnQsICZsZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kbWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIGxlbmd0aCk7CkBAIC0yOTIsOCArMjg4LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6YXZncHAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2Z3BwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zMjUsOCArMzIwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6bWF4cHAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heHBwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zNTgsOCArMzUyLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6Y3Jvc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmNyb3NzIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9jcm9zc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zODIsNyArMzc1LDggQEAKICAgICB7Im11bCIsIChQeUNGdW5jdGlvbilhdWRpb29wX211bCwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX211bF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBmYWN0b3IpOworYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgIGRvdWJsZSBmYWN0b3IpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9tdWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0zOTIsOCArMzg2LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgZG91YmxlIGZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZDptdWwiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZDptdWwiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX211bF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgZmFjdG9yKTsKQEAgLTQxNiw3ICs0MDksOCBAQAogICAgIHsidG9tb25vIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfdG9tb25vLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfdG9tb25vX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKTsKK2F1ZGlvb3BfdG9tb25vX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF90b21vbm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00MjcsOCArNDIxLDcgQEAKICAgICBkb3VibGUgbGZhY3RvcjsKICAgICBkb3VibGUgcmZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZGQ6dG9tb25vIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvbW9ubyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b21vbm9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwpAQCAtNDUxLDcgKzQ0NCw4IEBACiAgICAgeyJ0b3N0ZXJlbyIsIChQeUNGdW5jdGlvbilhdWRpb29wX3Rvc3RlcmVvLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfdG9zdGVyZW9fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CithdWRpb29wX3Rvc3RlcmVvX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3Rvc3RlcmVvKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNDYyLDggKzQ1Niw3IEBACiAgICAgZG91YmxlIGxmYWN0b3I7CiAgICAgZG91YmxlIHJmYWN0b3I7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWRkOnRvc3RlcmVvIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvc3RlcmVvIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Rvc3RlcmVvX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKQEAgLTQ4Niw3ICs0NzksOCBAQAogICAgIHsiYWRkIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYWRkLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYWRkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQxLCBQeV9idWZmZXIgKmZyYWdtZW50MiwgaW50IHdpZHRoKTsKK2F1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9hZGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00OTYsOCArNDkwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQyID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5Kmk6YWRkIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSppOmFkZCIsCiAgICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkZF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50MSwgJmZyYWdtZW50Miwgd2lkdGgpOwpAQCAtNTIzLDcgKzUxNiw4IEBACiAgICAgeyJiaWFzIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYmlhcywgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2JpYXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IGJpYXMpOworYXVkaW9vcF9iaWFzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgaW50IGJpYXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9iaWFzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNTMzLDggKzUyNyw3IEBACiAgICAgaW50IHdpZHRoOwogICAgIGludCBiaWFzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlpOmJpYXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpiaWFzIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZiaWFzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYmlhc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgYmlhcyk7CkBAIC01NjYsOCArNTU5LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6cmV2ZXJzZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6cmV2ZXJzZSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmV2ZXJzZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC01OTksOCArNTkxLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6Ynl0ZXN3YXAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmJ5dGVzd2FwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ieXRlc3dhcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC02MjMsNyArNjE0LDggQEAKICAgICB7ImxpbjJsaW4iLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9saW4ybGluLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbGluMmxpbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmV3d2lkdGgpOworYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgaW50IG5ld3dpZHRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfbGluMmxpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTYzMyw4ICs2MjUsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBpbnQgbmV3d2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWk6bGluMmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmxpbjJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgpOwpAQCAtNjU4LDcgKzY0OSw5IEBACiAgICAgeyJyYXRlY3YiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9yYXRlY3YsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9yYXRlY3ZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfcmF0ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmNoYW5uZWxzLCBpbnQgaW5yYXRlLCBpbnQgb3V0cmF0ZSwgUHlPYmplY3QgKnN0YXRlLCBpbnQgd2VpZ2h0QSwgaW50IHdlaWdodEIpOworYXVkaW9vcF9yYXRlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBuY2hhbm5lbHMsIGludCBpbnJhdGUsIGludCBvdXRyYXRlLCBQeU9iamVjdCAqc3RhdGUsCisgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHRBLCBpbnQgd2VpZ2h0Qik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3JhdGVjdihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTY3Myw4ICs2NjYsNyBAQAogICAgIGludCB3ZWlnaHRBID0gMTsKICAgICBpbnQgd2VpZ2h0QiA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWlpaU98aWk6cmF0ZWN2IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWlpaU98aWk6cmF0ZWN2IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JhdGVjdl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHN0YXRlLCB3ZWlnaHRBLCB3ZWlnaHRCKTsKQEAgLTcwNiw4ICs2OTgsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpsaW4ydWxhdyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMnVsYXciLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJ1bGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTczOSw4ICs3MzAsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTp1bGF3MmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6dWxhdzJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3VsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTc3Miw4ICs3NjIsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpsaW4yYWxhdyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMmFsYXciLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhbGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTgwNSw4ICs3OTQsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphbGF3MmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YWxhdzJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTgyOSw3ICs4MTcsOCBAQAogICAgIHsibGluMmFkcGNtIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfbGluMmFkcGNtLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbGluMmFkcGNtX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKTsKK2F1ZGlvb3BfbGluMmFkcGNtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9saW4yYWRwY20oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC04MzksOCArODI4LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlPOmxpbjJhZHBjbSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmxpbjJhZHBjbSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWRwY21faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKQEAgLTg2Myw3ICs4NTEsOCBAQAogICAgIHsiYWRwY20ybGluIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYWRwY20ybGluLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYWRwY20ybGluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKTsKK2F1ZGlvb3BfYWRwY20ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9hZHBjbTJsaW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC04NzMsOCArODYyLDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlPOmFkcGNtMmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmFkcGNtMmxpbiIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZHBjbTJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKQEAgLTg4Niw0ICs4NzQsNCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTg0MGJiYTVkNDBjMmNlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDc2ZTFiMjEzYTg3MjdiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaCBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAppbmRleCBlZjY0NmRkLi5lMzQ4YmVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCkBAIC05LDIwICs5LDE4IEBACiAiRGVjb2RlIGEgbGluZSBvZiB1dWVuY29kZWQgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfVVVfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfdXUsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYTJiX3V1X19kb2NfX30sCisgICAgeyJhMmJfdXUiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX3V1LCBNRVRIX08sIGJpbmFzY2lpX2EyYl91dV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX3V1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl91dShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX2EyYl91dShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfdXUiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfdXUiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfdXVfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtNDEsMjAgKzM5LDE4IEBACiAiVXVlbmNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9VVV9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX3V1IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV91dSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfdXVfX2RvY19ffSwKKyAgICB7ImIyYV91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfdXUsIE1FVEhfTywgYmluYXNjaWlfYjJhX3V1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfdXVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmIyYV91dSIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC03MywyMCArNjksMTggQEAKICJEZWNvZGUgYSBsaW5lIG9mIGJhc2U2NCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2Jhc2U2NCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfYmFzZTY0X19kb2NfX30sCisgICAgeyJhMmJfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYTJiX2Jhc2U2NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfYmFzZTY0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfYmFzZTY0IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTA1LDIwICs5OSwxOCBAQAogIkJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfQkFTRTY0X01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAorICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX08sIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX2IyYV9iYXNlNjQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6YjJhX2Jhc2U2NCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9iYXNlNjQiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKQEAgLTEzNywyMCArMTI5LDE4IEBACiAiRGVjb2RlIC5ocXggY29kaW5nLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2hxeCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfaHF4X19kb2NfX30sCisgICAgeyJhMmJfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9ocXgsIE1FVEhfTywgYmluYXNjaWlfYTJiX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfaHF4IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTY5LDIwICsxNTksMTggQEAKICJCaW5oZXggUkxFLWNvZGUgYmluYXJ5IGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfUkxFQ09ERV9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7InJsZWNvZGVfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3JsZWNvZGVfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3JsZWNvZGVfaHF4X19kb2NfX30sCisgICAgeyJybGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVjb2RlX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9ybGVjb2RlX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfcmxlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9ybGVjb2RlX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpybGVjb2RlX2hxeCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMjAxLDIwICsxODksMTggQEAKICJFbmNvZGUgLmhxeCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hxeCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfaHF4X19kb2NfX30sCisgICAgeyJiMmFfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9ocXgsIE1FVEhfTywgYmluYXNjaWlfYjJhX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfaHF4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMjMzLDIwICsyMTksMTggQEAKICJEZWNvZGUgaGV4YmluIFJMRS1jb2RlZCBzdHJpbmcuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfUkxFREVDT0RFX0hRWF9NRVRIT0RERUYgICAgXAotICAgIHsicmxlZGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVkZWNvZGVfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfX2RvY19ffSwKKyAgICB7InJsZWRlY29kZV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfcmxlZGVjb2RlX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX3JsZWRlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9ybGVkZWNvZGVfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOnJsZWRlY29kZV9ocXgiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0yNzgsMTIgKzI2MiwxMSBAQAogICAgIHVuc2lnbmVkIGludCBjcmM7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqSTpjcmNfaHF4IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqSTpjcmNfaHF4IiwKICAgICAgICAgJmRhdGEsICZjcmMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgX3JldHVybl92YWx1ZSA9IGJpbmFzY2lpX2NyY19ocXhfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCkBAIC0zMTUsMTIgKzI5OCwxMSBAQAogICAgIHVuc2lnbmVkIGludCBjcmMgPSAwOwogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmNyYzMyIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAogICAgICAgICAmZGF0YSwgJmNyYykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCkBAIC0zNDIsMjAgKzMyNCwxOCBAQAogImF2YWlsYWJsZSBhcyBcImhleGxpZnkoKVwiLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9IRVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9oZXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hleCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfaGV4X19kb2NfX30sCisgICAgeyJiMmFfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9oZXgsIE1FVEhfTywgYmluYXNjaWlfYjJhX2hleF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2hleF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2hleChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfaGV4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9oZXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMzc2LDIwICszNTYsMTggQEAKICJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgYnl0ZXMgb2JqZWN0LiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0hFWExJRllfTUVUSE9EREVGICAgIFwKLSAgICB7ImhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfaGV4bGlmeSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9oZXhsaWZ5X19kb2NfX30sCisgICAgeyJoZXhsaWZ5IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2hleGxpZnksIE1FVEhfTywgYmluYXNjaWlfaGV4bGlmeV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9oZXhsaWZ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpoZXhsaWZ5IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2hleGxpZnlfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtNDExLDIwICszODksMTggQEAKICJUaGlzIGZ1bmN0aW9uIGlzIGFsc28gYXZhaWxhYmxlIGFzIFwidW5oZXhsaWZ5KClcIi4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfSEVYX01FVEhPRERFRiAgICBcCi0gICAgeyJhMmJfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9oZXgsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYTJiX2hleF9fZG9jX199LAorICAgIHsiYTJiX2hleCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfaGV4LCBNRVRIX08sIGJpbmFzY2lpX2EyYl9oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmhleHN0cik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2hleChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOmEyYl9oZXgiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9oZXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCkBAIC00NDUsMjAgKzQyMSwxOCBAQAogImhleHN0ciBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgaGV4IGRpZ2l0cyAodXBwZXIgb3IgbG93ZXIgY2FzZSkuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfVU5IRVhMSUZZX01FVEhPRERFRiAgICBcCi0gICAgeyJ1bmhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfdW5oZXhsaWZ5LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3VuaGV4bGlmeV9fZG9jX199LAorICAgIHsidW5oZXhsaWZ5IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3VuaGV4bGlmeSwgTUVUSF9PLCBiaW5hc2NpaV91bmhleGxpZnlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX3VuaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqaGV4c3RyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX3VuaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX3VuaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOnVuaGV4bGlmeSIsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV91bmhleGxpZnlfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCkBAIC00OTAsOCArNDY0LDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAogICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBoZWFkZXIpOwpAQCAtNTE4LDcgKzQ5MSw4IEBACiAgICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsIGludCBpc3RleHQsIGludCBoZWFkZXIpOworYmluYXNjaWlfYjJhX3FwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgcXVvdGV0YWJzLAorICAgICAgICAgICAgICAgICAgICAgaW50IGlzdGV4dCwgaW50IGhlYWRlcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfcXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC01MzAsOCArNTA0LDcgQEAKICAgICBpbnQgaXN0ZXh0ID0gMTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKICAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgcXVvdGV0YWJzLCBpc3RleHQsIGhlYWRlcik7CkBAIC01NDMsNCArNTE2LDQgQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI3NjFiMzZmNGY5ZTViYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjFhM2NiZjc2NjBlYmFhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2MTY0OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApAQCAtMCwwICsxLDg2MCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Fjb3NfX2RvY19fLAorImFjb3MoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYXJjIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0FDT1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjb3MiLCAoUHlDRnVuY3Rpb24pY21hdGhfYWNvcywgTUVUSF9PLCBjbWF0aF9hY29zX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hY29zX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Fjb3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc19pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Fjb3NoX19kb2NfXywKKyJhY29zaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQUNPU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjb3NoIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2Fjb3NoLCBNRVRIX08sIGNtYXRoX2Fjb3NoX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hY29zaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hY29zaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc2hfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hc2luX19kb2NfXywKKyJhc2luKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVNJTl9NRVRIT0RERUYgICAgXAorICAgIHsiYXNpbiIsIChQeUNGdW5jdGlvbiljbWF0aF9hc2luLCBNRVRIX08sIGNtYXRoX2FzaW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2FzaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYXNpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYXNpbmhfX2RvY19fLAorImFzaW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVNJTkhfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzaW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2FzaW5oLCBNRVRIX08sIGNtYXRoX2FzaW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hc2luaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hdGFuX19kb2NfXywKKyJhdGFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFyYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVRBTl9NRVRIT0RERUYgICAgXAorICAgIHsiYXRhbiIsIChQeUNGdW5jdGlvbiljbWF0aF9hdGFuLCBNRVRIX08sIGNtYXRoX2F0YW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2F0YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYXRhbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYXRhbmhfX2RvY19fLAorImF0YW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVRBTkhfTUVUSE9EREVGICAgIFwKKyAgICB7ImF0YW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2F0YW5oLCBNRVRIX08sIGNtYXRoX2F0YW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hdGFuaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9jb3NfX2RvY19fLAorImNvcygkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb3NpbmUgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9DT1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcyIsIChQeUNGdW5jdGlvbiljbWF0aF9jb3MsIE1FVEhfTywgY21hdGhfY29zX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9jb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfY29zKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfY29zaF9fZG9jX18sCisiY29zaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0NPU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvc2giLCAoUHlDRnVuY3Rpb24pY21hdGhfY29zaCwgTUVUSF9PLCBjbWF0aF9jb3NoX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9jb3NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Nvc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2V4cF9fZG9jX18sCisiZXhwKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnouIik7CisKKyNkZWZpbmUgQ01BVEhfRVhQX01FVEhPRERFRiAgICBcCisgICAgeyJleHAiLCAoUHlDRnVuY3Rpb24pY21hdGhfZXhwLCBNRVRIX08sIGNtYXRoX2V4cF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfZXhwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2V4cChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2V4cF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2xvZzEwX19kb2NfXywKKyJsb2cxMCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0xPRzEwX01FVEhPRERFRiAgICBcCisgICAgeyJsb2cxMCIsIChQeUNGdW5jdGlvbiljbWF0aF9sb2cxMCwgTUVUSF9PLCBjbWF0aF9sb2cxMF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfbG9nMTBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfbG9nMTAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2xvZzEwX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfc2luX19kb2NfXywKKyJzaW4oJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NJTl9NRVRIT0RERUYgICAgXAorICAgIHsic2luIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3NpbiwgTUVUSF9PLCBjbWF0aF9zaW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3Npbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9zaW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5faW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9zaW5oX19kb2NfXywKKyJzaW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NJTkhfTUVUSE9EREVGICAgIFwKKyAgICB7InNpbmgiLCAoUHlDRnVuY3Rpb24pY21hdGhfc2luaCwgTUVUSF9PLCBjbWF0aF9zaW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9zaW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3NpbmgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3NxcnRfX2RvY19fLAorInNxcnQoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9TUVJUX01FVEhPRERFRiAgICBcCisgICAgeyJzcXJ0IiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3NxcnQsIE1FVEhfTywgY21hdGhfc3FydF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfc3FydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9zcXJ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF90YW5fX2RvY19fLAorInRhbigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfVEFOX01FVEhPRERFRiAgICBcCisgICAgeyJ0YW4iLCAoUHlDRnVuY3Rpb24pY21hdGhfdGFuLCBNRVRIX08sIGNtYXRoX3Rhbl9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3RhbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Rhbl9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3RhbmhfX2RvY19fLAorInRhbmgoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfVEFOSF9NRVRIT0RERUYgICAgXAorICAgIHsidGFuaCIsIChQeUNGdW5jdGlvbiljbWF0aF90YW5oLCBNRVRIX08sIGNtYXRoX3RhbmhfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfdGFuaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5oX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfbG9nX19kb2NfXywKKyJsb2coJG1vZHVsZSwgeCwgeV9vYmo9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRoZSBsb2dhcml0aG0gb2YgeiB0byB0aGUgZ2l2ZW4gYmFzZS5cbiIKKyJcbiIKKyJJZiB0aGUgYmFzZSBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSAoYmFzZSBlKSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0xPR19NRVRIT0RERUYgICAgXAorICAgIHsibG9nIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2xvZywgTUVUSF9WQVJBUkdTLCBjbWF0aF9sb2dfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2xvZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeCwgUHlPYmplY3QgKnlfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2xvZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHg7CisgICAgUHlPYmplY3QgKnlfb2JqID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxPOmxvZyIsCisgICAgICAgICZ4LCAmeV9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nX2ltcGwobW9kdWxlLCB4LCB5X29iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3BoYXNlX19kb2NfXywKKyJwaGFzZSgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LiIpOworCisjZGVmaW5lIENNQVRIX1BIQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJwaGFzZSIsIChQeUNGdW5jdGlvbiljbWF0aF9waGFzZSwgTUVUSF9PLCBjbWF0aF9waGFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcGhhc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcGhhc2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9waGFzZV9pbXBsKG1vZHVsZSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3BvbGFyX19kb2NfXywKKyJwb2xhcigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCBhIGNvbXBsZXggZnJvbSByZWN0YW5ndWxhciBjb29yZGluYXRlcyB0byBwb2xhciBjb29yZGluYXRlcy5cbiIKKyJcbiIKKyJyIGlzIHRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuIik7CisKKyNkZWZpbmUgQ01BVEhfUE9MQVJfTUVUSE9EREVGICAgIFwKKyAgICB7InBvbGFyIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3BvbGFyLCBNRVRIX08sIGNtYXRoX3BvbGFyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9wb2xhcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9wb2xhcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BvbGFyX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfcmVjdF9fZG9jX18sCisicmVjdCgkbW9kdWxlLCByLCBwaGksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGZyb20gcG9sYXIgY29vcmRpbmF0ZXMgdG8gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMuIik7CisKKyNkZWZpbmUgQ01BVEhfUkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVjdCIsIChQeUNGdW5jdGlvbiljbWF0aF9yZWN0LCBNRVRIX1ZBUkFSR1MsIGNtYXRoX3JlY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3JlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkb3VibGUgciwgZG91YmxlIHBoaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9yZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRvdWJsZSByOworICAgIGRvdWJsZSBwaGk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLAorICAgICAgICAmciwgJnBoaSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9yZWN0X2ltcGwobW9kdWxlLCByLCBwaGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2Zpbml0ZV9fZG9jX18sCisiaXNmaW5pdGUoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGJvdGggdGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiB6IGFyZSBmaW5pdGUsIGVsc2UgRmFsc2UuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNGSU5JVEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzZmluaXRlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzZmluaXRlLCBNRVRIX08sIGNtYXRoX2lzZmluaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Zpbml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Zpbml0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzZmluaXRlX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfaXNuYW5fX2RvY19fLAorImlzbmFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBub3QgYSBudW1iZXIgKE5hTikuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNOQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImlzbmFuIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzbmFuLCBNRVRIX08sIGNtYXRoX2lzbmFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc25hbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc25hbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzbmFuX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfaXNpbmZfX2RvY19fLAorImlzaW5mKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4iKTsKKworI2RlZmluZSBDTUFUSF9JU0lORl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNpbmYiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNpbmYsIE1FVEhfTywgY21hdGhfaXNpbmZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzaW5mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzaW5mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNpbmZfaW1wbChtb2R1bGUsIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2Nsb3NlX19kb2NfXywKKyJpc2Nsb3NlKCRtb2R1bGUsIC8sIGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKVxuIgorIi0tXG4iCisiXG4iCisiRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGNvbXBsZXggbnVtYmVycyBhcmUgY2xvc2UgaW4gdmFsdWUuXG4iCisiXG4iCisiICByZWxfdG9sXG4iCisiICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlbGF0aXZlIHRvIHRoZVxuIgorIiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIiAgYWJzX3RvbFxuIgorIiAgICBtYXhpbXVtIGRpZmZlcmVuY2UgZm9yIGJlaW5nIGNvbnNpZGVyZWQgXCJjbG9zZVwiLCByZWdhcmRsZXNzIG9mIHRoZVxuIgorIiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJGb3IgdGhlIHZhbHVlcyB0byBiZSBjb25zaWRlcmVkIGNsb3NlLCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gbXVzdCBiZVxuIgorInNtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuXG4iCisiXG4iCisiLWluZiwgaW5mIGFuZCBOYU4gYmVoYXZlIHNpbWlsYXJseSB0byB0aGUgSUVFRSA3NTQgU3RhbmRhcmQuIFRoYXQgaXMsIE5hTiBpc1xuIgorIm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOworCisjZGVmaW5lIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKKworc3RhdGljIGludAorY21hdGhfaXNjbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAorICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Nsb3NlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIFB5X2NvbXBsZXggYTsKKyAgICBQeV9jb21wbGV4IGI7CisgICAgZG91YmxlIHJlbF90b2wgPSAxZS0wOTsKKyAgICBkb3VibGUgYWJzX3RvbCA9IDAuMDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLAorICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNjbG9zZV9pbXBsKG1vZHVsZSwgYSwgYiwgcmVsX3RvbCwgYWJzX3RvbCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI5ZTljNDhjOWQyNzM2MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUzYjFjMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaApAQCAtMCwwICsxLDE4NSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGZjbnRsX2ZjbnRsX19kb2NfXywKKyJmY250bCgkbW9kdWxlLCBmZCwgY21kLCBhcmc9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gdGhlIG9wZXJhdGlvbiBgY21kYCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiVGhlIHZhbHVlcyB1c2VkIGZvciBgY21kYCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlXG4iCisiYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW5cbiIKKyJ0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuICBUaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmRcbiIKKyJkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLFxuIgorInRoZSByZXR1cm4gdmFsdWUgb2YgZmNudGwgaXMgYSBzdHJpbmcgb2YgdGhhdCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlXG4iCisicmVzdWx0aW5nIHZhbHVlIHB1dCBpbiB0aGUgYXJnIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBsZW5ndGhcbiIKKyJvZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW5cbiIKKyJpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzIGFuIGludGVnZXJcbiIKKyJjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZjbnRsIGNhbGwgaW4gdGhlIEMgY29kZS4iKTsKKworI2RlZmluZSBGQ05UTF9GQ05UTF9NRVRIT0RERUYgICAgXAorICAgIHsiZmNudGwiLCAoUHlDRnVuY3Rpb24pZmNudGxfZmNudGwsIE1FVEhfVkFSQVJHUywgZmNudGxfZmNudGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2ZjbnRsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mY250bChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGNvZGU7CisgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPOmZjbnRsIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2ZjbnRsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfaW9jdGxfX2RvY19fLAorImlvY3RsKCRtb2R1bGUsIGZkLCByZXF1ZXN0LCBhcmc9MCwgbXV0YXRlX2ZsYWc9VHJ1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gdGhlIG9wZXJhdGlvbiBgcmVxdWVzdGAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuXG4iCisiXG4iCisiVGhlIHZhbHVlcyB1c2VkIGZvciBgcmVxdWVzdGAgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZVxuIgorImFzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgb3IgdGVybWlvcyBsaWJyYXJ5IG1vZHVsZXMsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzXG4iCisidXNlZCBpbiB0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuXG4iCisiXG4iCisiVGhlIGFyZ3VtZW50IGBhcmdgIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhXG4iCisiYnVmZmVyIGNvbnRhaW5pbmcgY2hhcmFjdGVyIGRhdGEgKG1vc3QgbGlrZWx5IGEgc3RyaW5nIG9yIGFuIGFycmF5KS5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZVxuIgorIm11dGF0ZV9mbGFnIGFyZ3VtZW50ICh3aGljaCBpcyBvbmx5IGFsbG93ZWQgaW4gdGhpcyBjYXNlKSBpcyB0cnVlIHRoZW4gdGhlXG4iCisiYnVmZmVyIGlzIChpbiBlZmZlY3QpIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgY2hhbmdlcyBtYWRlIGJ5XG4iCisidGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhc1xuIgorInJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW50ZWdlciByZXR1cm5lZCBieSB0aGUgaW9jdGwgc3lzdGVtXG4iCisiY2FsbC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciBhbmQgdGhlIG11dGFibGVfZmxhZyBhcmd1bWVudCBpcyBmYWxzZSxcbiIKKyJ0aGUgYmVoYXZpb3IgaXMgYXMgaWYgYSBzdHJpbmcgaGFkIGJlZW4gcGFzc2VkLlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBhbiBpbW11dGFibGUgYnVmZmVyIChtb3N0IGxpa2VseSBhIHN0cmluZykgdGhlbiBhIGNvcHlcbiIKKyJvZiB0aGUgYnVmZmVyIGlzIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBhXG4iCisic3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpblxuIgorInRoZSBidWZmZXIuICBUaGUgbGVuZ3RoIG9mIHRoZSBhcmcgYnVmZmVyIGluIHRoaXMgY2FzZSBpcyBub3QgYWxsb3dlZCB0b1xuIgorImV4Y2VlZCAxMDI0IGJ5dGVzLlxuIgorIlxuIgorIklmIHRoZSBhcmcgZ2l2ZW4gaXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpc1xuIgorImFuIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBpb2N0bCBjYWxsIGluIHRoZSBDXG4iCisiY29kZS4iKTsKKworI2RlZmluZSBGQ05UTF9JT0NUTF9NRVRIT0RERUYgICAgXAorICAgIHsiaW9jdGwiLCAoUHlDRnVuY3Rpb24pZmNudGxfaW9jdGwsIE1FVEhfVkFSQVJHUywgZmNudGxfaW9jdGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2lvY3RsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1bnNpZ25lZCBpbnQgY29kZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iX2FyZywgaW50IG11dGF0ZV9hcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfaW9jdGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjb2RlOworICAgIFB5T2JqZWN0ICpvYl9hcmcgPSBOVUxMOworICAgIGludCBtdXRhdGVfYXJnID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJfE9wOmlvY3RsIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBmY250bF9pb2N0bF9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIG9iX2FyZywgbXV0YXRlX2FyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGZjbnRsX2Zsb2NrX19kb2NfXywKKyJmbG9jaygkbW9kdWxlLCBmZCwgb3BlcmF0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gYG9wZXJhdGlvbmAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuXG4iCisiXG4iCisiU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlIGZvciBmbG9jaygyKSBmb3IgZGV0YWlscyAoT24gc29tZSBzeXN0ZW1zLCB0aGlzXG4iCisiZnVuY3Rpb24gaXMgZW11bGF0ZWQgdXNpbmcgZmNudGwoKSkuIik7CisKKyNkZWZpbmUgRkNOVExfRkxPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImZsb2NrIiwgKFB5Q0Z1bmN0aW9uKWZjbnRsX2Zsb2NrLCBNRVRIX1ZBUkFSR1MsIGZjbnRsX2Zsb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfZmxvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBjb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmxvY2tfaW1wbChtb2R1bGUsIGZkLCBjb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfbG9ja2ZfX2RvY19fLAorImxvY2tmKCRtb2R1bGUsIGZkLCBjbWQsIGxlbj0wLCBzdGFydD0wLCB3aGVuY2U9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy5cbiIKKyJcbiIKKyJgZmRgIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCBvcGVyYXRpb24gaXMgb25lXG4iCisib2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iCisiXG4iCisiICAgIExPQ0tfVU4gLSB1bmxvY2tcbiIKKyIgICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9ja1xuIgorIiAgICBMT0NLX0VYIC0gYWNxdWlyZSBhbiBleGNsdXNpdmUgbG9ja1xuIgorIlxuIgorIldoZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGhcbiIKKyJMT0NLX05CIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uICBJZiBMT0NLX05CIGlzIHVzZWQgYW5kIHRoZVxuIgorImxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbiBJT0Vycm9yIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGxcbiIKKyJoYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmdcbiIKKyJzeXN0ZW0gLS0gZm9yIHBvcnRhYmlsaXR5LCBjaGVjayBmb3IgZWl0aGVyIHZhbHVlKS5cbiIKKyJcbiIKKyJgbGVuYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvXG4iCisiRU9GLiAgYHN0YXJ0YCBpcyB0aGUgYnl0ZSBvZmZzZXQsIHJlbGF0aXZlIHRvIGB3aGVuY2VgLCB0byB0aGF0IHRoZSBsb2NrXG4iCisic3RhcnRzLiAgYHdoZW5jZWAgaXMgYXMgd2l0aCBmaWxlb2JqLnNlZWsoKSwgc3BlY2lmaWNhbGx5OlxuIgorIlxuIgorIiAgICAwIC0gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIChTRUVLX1NFVClcbiIKKyIgICAgMSAtIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBwb3NpdGlvbiAoU0VFS19DVVIpXG4iCisiICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkiKTsKKworI2RlZmluZSBGQ05UTF9MT0NLRl9NRVRIT0RERUYgICAgXAorICAgIHsibG9ja2YiLCAoUHlDRnVuY3Rpb24pZmNudGxfbG9ja2YsIE1FVEhfVkFSQVJHUywgZmNudGxfbG9ja2ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmxlbm9iaiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0b2JqLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2xvY2tmKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgY29kZTsKKyAgICBQeU9iamVjdCAqbGVub2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RhcnRvYmogPSBOVUxMOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBsZW5vYmosIHN0YXJ0b2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTI5NjNiNjMxZDAwZjBmZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjViNTlkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApAQCAtMCwwICsxLDg1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZ3JwX2dldGdyZ2lkX19kb2NfXywKKyJnZXRncmdpZCgkbW9kdWxlLCAvLCBpZClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELlxuIgorIlxuIgorIklmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsCisgICAgICAgICZpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JnaWRfaW1wbChtb2R1bGUsIGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZ3JwX2dldGdybmFtX19kb2NfXywKKyJnZXRncm5hbSgkbW9kdWxlLCAvLCBuYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGdyb3VwIG5hbWUuXG4iCisiXG4iCisiSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOworCisjZGVmaW5lIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdybmFtX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOmdldGdybmFtIiwgX2tleXdvcmRzLAorICAgICAgICAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JuYW1faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihncnBfZ2V0Z3JhbGxfX2RvY19fLAorImdldGdyYWxsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgZ3JvdXAgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLlxuIgorIlxuIgorIkFuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggXCcrXCcgb3IgXCctXCcgcmVwcmVzZW50cyBhbiBpbnN0cnVjdGlvblxuIgorInRvIHVzZSBZUC9OSVMgYW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSB2aWEgZ2V0Z3JuYW0gb3IgZ2V0Z3JnaWQuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncmFsbCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JhbGwsIE1FVEhfTk9BUkdTLCBncnBfZ2V0Z3JhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmFsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdyYWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGdycF9nZXRncmFsbF9pbXBsKG1vZHVsZSk7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTE5MWMyNTYwMGFmYjFiZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWEzMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApAQCAtMCwwICsxLDk1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoTUQ1VHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgTUQ1VFlQRV9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfY29weSwgTUVUSF9OT0FSR1MsIE1ENVR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9jb3B5X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfY29weShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIE1ENVR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIE1ENVRZUEVfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pTUQ1VHlwZV9kaWdlc3QsIE1FVEhfTk9BUkdTLCBNRDVUeXBlX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9kaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9kaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBNRDVUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBNRDVUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgTUQ1VHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfaGV4ZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfaGV4ZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gTUQ1VHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKE1ENVR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBNRDVUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfdXBkYXRlLCBNRVRIX08sIE1ENVR5cGVfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfbWQ1X21kNV9fZG9jX18sCisibWQ1KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBNRDUgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfTUQ1X01ENV9NRVRIT0RERUYgICAgXAorICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX21kNV9tZDVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tZDVfbWQ1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbWQ1X21kNShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bWQ1IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tZDVfbWQ1X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY4MDNkZWQ3MDFhY2E1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmNzAyYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApAQCAtMCwwICsxLDU3OTEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihvc19zdGF0X19kb2NfXywKKyJzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgorIiAgZGlyX2ZkXG4iCisiICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgICAgYW5kIHBhdGggc2hvdWxkIGJlIGEgcmVsYXRpdmUgc3RyaW5nOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0b1xuIgorIiAgICB0aGF0IGRpcmVjdG9yeS5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgICB0aGUgbGluayBwb2ludHMgdG8uXG4iCisiXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgorIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgorIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJJdFwncyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhdCIsIChQeUNGdW5jdGlvbilvc19zdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgInBhdGgiLCAwLCAxKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfbHN0YXRfX2RvY19fLAorImxzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGgsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLlxuIgorIlxuIgorIkxpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworI2RlZmluZSBPU19MU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHN0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxzdGF0IiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xzdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19hY2Nlc3NfX2RvY19fLAorImFjY2VzcygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSxcbiIKKyIgICAgICAgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCisiLS1cbiIKKyJcbiIKKyJVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKKyIgIG1vZGVcbiIKKyIgICAgT3BlcmF0aW5nLXN5c3RlbSBtb2RlIGJpdGZpZWxkLiAgQ2FuIGJlIEZfT0sgdG8gdGVzdCBleGlzdGVuY2UsXG4iCisiICAgIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKKyIgICAgZGlyZWN0b3J5LlxuIgorIiAgZWZmZWN0aXZlX2lkc1xuIgorIiAgICBJZiBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcbiIKKyIgICAgdGhlIHJlYWwgdWlkL2dpZC5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgorIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgorIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcbiIKKyIgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuIgorIiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiIpOworCisjZGVmaW5lIE9TX0FDQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2FjY2Vzc19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWNjZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsICJwYXRoIiwgMCwgMSk7CisgICAgaW50IG1vZGU7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBlZmZlY3RpdmVfaWRzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfVFRZTkFNRSkKKworUHlEb2NfU1RSVkFSKG9zX3R0eW5hbWVfX2RvY19fLAorInR0eW5hbWUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIGRldmljZSBjb25uZWN0ZWQgdG8gXCdmZFwnLlxuIgorIlxuIgorIiAgZmRcbiIKKyIgICAgSW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgaGFuZGxlLiIpOworCisjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7InR0eW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdHR5bmFtZSwgTUVUSF9PLCBvc190dHluYW1lX19kb2NfX30sCisKK3N0YXRpYyBjaGFyICoKK29zX3R0eW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHR5bmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3R0eW5hbWVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RUWU5BTUUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ1RFUk1JRCkKKworUHlEb2NfU1RSVkFSKG9zX2N0ZXJtaWRfX2RvY19fLAorImN0ZXJtaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgZm9yIHRoaXMgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19DVEVSTUlEX01FVEhPRERFRiAgICBcCisgICAgeyJjdGVybWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2N0ZXJtaWQsIE1FVEhfTk9BUkdTLCBvc19jdGVybWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jdGVybWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jdGVybWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2N0ZXJtaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NURVJNSUQpICovCisKK1B5RG9jX1NUUlZBUihvc19jaGRpcl9fZG9jX18sCisiY2hkaXIoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfQ0hESVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZGlyIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIRElSKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRkNIRElSKQorCitQeURvY19TVFJWQVIob3NfZmNoZGlyX19kb2NfXywKKyJmY2hkaXIoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorImZkIG11c3QgYmUgb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLlxuIgorIkVxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZDSERJUl9NRVRIT0RERUYgICAgXAorICAgIHsiZmNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaGRpcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaGRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNoZGlyX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GQ0hESVIpICovCisKK1B5RG9jX1NUUlZBUihvc19jaG1vZF9fZG9jX18sCisiY2htb2QoJG1vZHVsZSwgLywgcGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIG1vZGlmaWVkLiAgTWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHIgb3IgYnl0ZXMuXG4iCisiICAgIE9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgICAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuIgorIiAgbW9kZVxuIgorIiAgICBPcGVyYXRpbmctc3lzdGVtIG1vZGUgYml0ZmllbGQuXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKKyIgICAgZGlyZWN0b3J5LlxuIgorIiAgZm9sbG93X3N5bWxpbmtzXG4iCisiICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCisiICAgIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfQ0hNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2htb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaG1vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2htb2QiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hNT0QpOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GQ0hNT0QpCisKK1B5RG9jX1NUUlZBUihvc19mY2htb2RfX2RvY19fLAorImZjaG1vZCgkbW9kdWxlLCAvLCBmZCwgbW9kZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4iKTsKKworI2RlZmluZSBPU19GQ0hNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImZjaG1vZCIsIChQeUNGdW5jdGlvbilvc19mY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2htb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNobW9kKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIGludCBmZDsKKyAgICBpbnQgbW9kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmZjaG1vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mY2htb2RfaW1wbChtb2R1bGUsIGZkLCBtb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZDSE1PRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9MQ0hNT0QpCisKK1B5RG9jX1NUUlZBUihvc19sY2htb2RfX2RvY19fLAorImxjaG1vZCgkbW9kdWxlLCAvLCBwYXRoLCBtb2RlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLCB3aXRob3V0IGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJcbiIKKyJJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcyBhZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LlxuIgorIkVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5cIiIpOworCisjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYgICAgXAorICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG1vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2htb2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2htb2QiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTENITU9EKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NIRkxBR1MpCisKK1B5RG9jX1NUUlZBUihvc19jaGZsYWdzX19kb2NfXywKKyJjaGZsYWdzKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCBmaWxlIGZsYWdzLlxuIgorIlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcbiIKKyIgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorImZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuIgorInVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRiAgICBcCisgICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGZsYWdzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaGZsYWdzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hmbGFncyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hGTEFHUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9MQ0hGTEFHUykKKworUHlEb2NfU1RSVkFSKG9zX2xjaGZsYWdzX19kb2NfXywKKyJsY2hmbGFncygkbW9kdWxlLCAvLCBwYXRoLCBmbGFncylcbiIKKyItLVxuIgorIlxuIgorIlNldCBmaWxlIGZsYWdzLlxuIgorIlxuIgorIlRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuIgorIkVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYgICAgXAorICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hmbGFnc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNoZmxhZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNoZmxhZ3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MQ0hGTEFHUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DSFJPT1QpCisKK1B5RG9jX1NUUlZBUihvc19jaHJvb3RfX2RvY19fLAorImNocm9vdCgkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CisKKyNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRiAgICBcCisgICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hyb290X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaHJvb3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hyb290KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNocm9vdCIsICJwYXRoIiwgMCwgMCk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaHJvb3QiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jaHJvb3RfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hST09UKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZTWU5DKQorCitQeURvY19TVFJWQVIob3NfZnN5bmNfX2RvY19fLAorImZzeW5jKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzay4iKTsKKworI2RlZmluZSBPU19GU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsiZnN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZnN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN5bmMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZzeW5jIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN5bmNfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZTWU5DKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZTkMpCisKK1B5RG9jX1NUUlZBUihvc19zeW5jX19kb2NfXywKKyJzeW5jKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suIik7CisKKyNkZWZpbmUgT1NfU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsic3luYyIsIChQeUNGdW5jdGlvbilvc19zeW5jLCBNRVRIX05PQVJHUywgb3Nfc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zeW5jX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU5DKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZEQVRBU1lOQykKKworUHlEb2NfU1RSVkFSKG9zX2ZkYXRhc3luY19fZG9jX18sCisiZmRhdGFzeW5jKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzayB3aXRob3V0IGZvcmNpbmcgdXBkYXRlIG9mIG1ldGFkYXRhLiIpOworCisjZGVmaW5lIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsiZmRhdGFzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZkYXRhc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZkYXRhc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmRhdGFzeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZkYXRhc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmRhdGFzeW5jX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GREFUQVNZTkMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0hPV04pCisKK1B5RG9jX1NUUlZBUihvc19jaG93bl9fZG9jX18sCisiY2hvd24oJG1vZHVsZSwgLywgcGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXFxcbiIKKyJcbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCB0byBiZSBleGFtaW5lZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKKyIgIGRpcl9mZFxuIgorIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdFxuIgorIiAgICBkaXJlY3RvcnkuXG4iCisiICBmb2xsb3dfc3ltbGlua3NcbiIKKyIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKKyIgICAgc3RhdCB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorIlxuIgorInBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG4iCisiICBsaW5rIHBvaW50cyB0by5cbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGICAgIFwKKyAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hvd24iLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hPV04pOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hPV04pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRkNIT1dOKQorCitQeURvY19TVFJWQVIob3NfZmNob3duX19kb2NfXywKKyJmY2hvd24oJG1vZHVsZSwgLywgZmQsIHVpZCwgZ2lkKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CisKKyNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRiAgICBcCisgICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNob3duX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNob3duX2ltcGwobW9kdWxlLCBmZCwgdWlkLCBnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRkNIT1dOKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0xDSE9XTikKKworUHlEb2NfU1RSVkFSKG9zX2xjaG93bl9fZG9jX18sCisibGNob3duKCRtb2R1bGUsIC8sIHBhdGgsIHVpZCwgZ2lkKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cbiIKKyJcbiIKKyJUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCisjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYgICAgXAorICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG93bl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2hvd24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hvd24iLCAicGF0aCIsIDAsIDApOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyY6bGNob3duIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xDSE9XTikgKi8KKworUHlEb2NfU1RSVkFSKG9zX2dldGN3ZF9fZG9jX18sCisiZ2V0Y3dkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKyNkZWZpbmUgT1NfR0VUQ1dEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjd2QiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0Y3dkLCBNRVRIX05PQVJHUywgb3NfZ2V0Y3dkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGN3ZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRjd2RfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIob3NfZ2V0Y3dkYl9fZG9jX18sCisiZ2V0Y3dkYigkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKTsKKworI2RlZmluZSBPU19HRVRDV0RCX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjd2RiIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGN3ZGIsIE1FVEhfTk9BUkdTLCBvc19nZXRjd2RiX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RiX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RiKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGN3ZGJfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0xJTkspCisKK1B5RG9jX1NUUlZBUihvc19saW5rX19kb2NfXywKKyJsaW5rKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSxcbiIKKyIgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGxpbmsgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuIgorIiAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG4iCisic3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcbiIKKyIgIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCisiICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX0xJTktfTUVUSE9EREVGICAgIFwKKyAgICB7ImxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpbmtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpbmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAic3JjIiwgMCwgMCk7CisgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgImRzdCIsIDAsIDApOworICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTElOSykgKi8KKworUHlEb2NfU1RSVkFSKG9zX2xpc3RkaXJfX2RvY19fLAorImxpc3RkaXIoJG1vZHVsZSwgLywgcGF0aD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG4iCisiICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBieXRlczsgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXNcbiIKKyIgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG4iCisiSWYgcGF0aCBpcyBOb25lLCB1c2VzIHRoZSBwYXRoPVwnLlwnLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcjtcXFxuIgorIiAgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG4iCisiZW50cmllcyBcJy5cJyBhbmQgXCcuLlwnIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOworCisjZGVmaW5lIE9TX0xJU1RESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3RkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3RkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlzdGRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaXN0ZGlyIiwgInBhdGgiLCAxLCBQQVRIX0hBVkVfRkRPUEVORElSKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlzdGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXRmdWxscGF0aG5hbWVfX2RvY19fLAorIl9nZXRmdWxscGF0aG5hbWUoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2dldGZ1bGxwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZnVsbHBhdGhuYW1lLCBNRVRIX08sIG9zX19nZXRmdWxscGF0aG5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXRmdWxscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZ1bGxwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9nZXRmdWxscGF0aG5hbWUiLCAicGF0aCIsIDAsIDApOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19fZ2V0ZmluYWxwYXRobmFtZV9fZG9jX18sCisiX2dldGZpbmFscGF0aG5hbWUoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgaGVscGVyIGZ1bmN0aW9uIGZvciBzYW1lcGF0aCBvbiB3aW5kb3dzLiIpOworCisjZGVmaW5lIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9PLCBvc19fZ2V0ZmluYWxwYXRobmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZmluYWxwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19faXNkaXJfX2RvY19fLAorIl9pc2RpcigkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBPU19fSVNESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Il9pc2RpciIsIChQeUNGdW5jdGlvbilvc19faXNkaXIsIE1FVEhfTywgb3NfX2lzZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19faXNkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2lzZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiX2lzZGlyIiwgInBhdGgiLCAwLCAwKTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19pc2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX18sCisiX2dldHZvbHVtZXBhdGhuYW1lKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4iKTsKKworI2RlZmluZSBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXR2b2x1bWVwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKK1B5RG9jX1NUUlZBUihvc19ta2Rpcl9fZG9jX18sCisibWtkaXIoJG1vZHVsZSwgLywgcGF0aCwgbW9kZT01MTEsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgZGlyZWN0b3J5LlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG4iCisiXG4iCisiVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX01LRElSX01FVEhPRERFRiAgICBcCisgICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtkaXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtkaXIiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlID0gNTExOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX05JQ0UpCisKK1B5RG9jX1NUUlZBUihvc19uaWNlX19kb2NfXywKKyJuaWNlKCRtb2R1bGUsIGluY3JlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIgorIkFkZCBpbmNyZW1lbnQgdG8gdGhlIHByaW9yaXR5IG9mIHByb2Nlc3MgYW5kIHJldHVybiB0aGUgbmV3IHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX05JQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7Im5pY2UiLCAoUHlDRnVuY3Rpb24pb3NfbmljZSwgTUVUSF9PLCBvc19uaWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19uaWNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGluY3JlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19uaWNlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGluY3JlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19uaWNlX2ltcGwobW9kdWxlLCBpbmNyZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTklDRSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQUklPUklUWSkKKworUHlEb2NfU1RSVkFSKG9zX2dldHByaW9yaXR5X19kb2NfXywKKyJnZXRwcmlvcml0eSgkbW9kdWxlLCAvLCB3aGljaCwgd2hvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKKworI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHJpb3JpdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHJpb3JpdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBpbnQgd2hpY2g7CisgICAgaW50IHdobzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLAorICAgICAgICAmd2hpY2gsICZ3aG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUFJJT1JJVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUFJJT1JJVFkpCisKK1B5RG9jX1NUUlZBUihvc19zZXRwcmlvcml0eV9fZG9jX18sCisic2V0cHJpb3JpdHkoJG1vZHVsZSwgLywgd2hpY2gsIHdobywgcHJpb3JpdHkpXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobywgaW50IHByaW9yaXR5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHByaW9yaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgaW50IHdoaWNoOworICAgIGludCB3aG87CisgICAgaW50IHByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLAorICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobywgcHJpb3JpdHkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUFJJT1JJVFkpICovCisKK1B5RG9jX1NUUlZBUihvc19yZW5hbWVfX2RvY19fLAorInJlbmFtZSgkbW9kdWxlLCAvLCBzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1JFTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAic3JjIiwgMCwgMCk7CisgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbmFtZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uXG4iCisiXG4iCisiSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuIgorIiAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG4iCisiICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cIiIpOworCisjZGVmaW5lIE9TX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlcGxhY2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlcGxhY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlcGxhY2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZXBsYWNlX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBzcmMgKi8KKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgLyogQ2xlYW51cCBmb3IgZHN0ICovCisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3JtZGlyX19kb2NfXywKKyJybWRpcigkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1JNRElSX01FVEhPRERFRiAgICBcCisgICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JtZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ybWRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ybWRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicm1kaXIiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JtZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zeXN0ZW1fX2RvY19fLAorInN5c3RlbSgkbW9kdWxlLCAvLCBjb21tYW5kKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOworCisjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tbWFuZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeXN0ZW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgUHlfVU5JQ09ERSAqY29tbWFuZDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1OnN5c3RlbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmNvbW1hbmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc3lzdGVtX19kb2NfXywKKyJzeXN0ZW0oJG1vZHVsZSwgLywgY29tbWFuZClcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKKworI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKworc3RhdGljIGxvbmcKK29zX3N5c3RlbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjb21tYW5kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5c3RlbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY29tbWFuZCA9IE5VTEw7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3lzdGVtIiwgX2tleXdvcmRzLAorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBjb21tYW5kICovCisgICAgUHlfWERFQ1JFRihjb21tYW5kKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKSAqLworCitQeURvY19TVFJWQVIob3NfdW1hc2tfX2RvY19fLAorInVtYXNrKCRtb2R1bGUsIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgbnVtZXJpYyB1bWFzayBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB1bWFzay4iKTsKKworI2RlZmluZSBPU19VTUFTS19NRVRIT0RERUYgICAgXAorICAgIHsidW1hc2siLCAoUHlDRnVuY3Rpb24pb3NfdW1hc2ssIE1FVEhfTywgb3NfdW1hc2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VtYXNrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW1hc2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3VtYXNrX2ltcGwobW9kdWxlLCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfdW5saW5rX19kb2NfXywKKyJ1bmxpbmsoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1VOTElOS19NRVRIT0RERUYgICAgXAorICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3VubGlua19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VubGluayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidW5saW5rIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5saW5rX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVtb3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmUiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmVfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9VTkFNRSkKKworUHlEb2NfU1RSVkFSKG9zX3VuYW1lX19kb2NfXywKKyJ1bmFtZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuIgorIlxuIgorIlRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcbiIKKyIgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSkiKTsKKworI2RlZmluZSBPU19VTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsidW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdW5hbWUsIE1FVEhfTk9BUkdTLCBvc191bmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3VuYW1lX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9VTkFNRSkgKi8KKworUHlEb2NfU1RSVkFSKG9zX3V0aW1lX19kb2NfXywKKyJ1dGltZSgkbW9kdWxlLCAvLCBwYXRoLCB0aW1lcz1Ob25lLCAqLCBucz1Ob25lLCBkaXJfZmQ9Tm9uZSxcbiIKKyIgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG4iCisiXG4iCisiSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcbiIKKyIgICAgYXRpbWUgYW5kIG10aW1lIHNob3VsZCBiZSBleHByZXNzZWQgYXMgZmxvYXQgc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guXG4iCisiSWYgbnMgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7XG4iCisiICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHNcbiIKKyIgICAgc2luY2UgdGhlIGVwb2NoLlxuIgorIklmIHRpbWVzIGlzIE5vbmUgYW5kIG5zIGlzIHVuc3BlY2lmaWVkLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuXG4iCisiU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG4iCisiICBsaW5rIHBvaW50cyB0by5cbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aFxuIgorIiAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1VUSU1FX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3V0aW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191dGltZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLAorICAgICAgICAgICAgICBQeU9iamVjdCAqbnMsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdXRpbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1dGltZSIsICJwYXRoIiwgMCwgUEFUSF9VVElNRV9IQVZFX0ZEKTsKKyAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXRpbWVfaW1wbChtb2R1bGUsICZwYXRoLCB0aW1lcywgbnMsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19fZXhpdF9fZG9jX18sCisiX2V4aXQoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLiIpOworCisjZGVmaW5lIE9TX19FWElUX01FVEhPRERFRiAgICBcCisgICAgeyJfZXhpdCIsIChQeUNGdW5jdGlvbilvc19fZXhpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19leGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZXhpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2V4aXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpfZXhpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZXhpdF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKQorCitQeURvY19TVFJWQVIob3NfZXhlY3ZfX2RvY19fLAorImV4ZWN2KCRtb2R1bGUsIHBhdGgsIGFyZ3YsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cbiIKKyJcbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuXG4iCisiICBhcmd2XG4iCisiICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19FWEVDVl9NRVRIT0RERUYgICAgXAorICAgIHsiZXhlY3YiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3YsIE1FVEhfVkFSQVJHUywgb3NfZXhlY3ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJndjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZfaW1wbChtb2R1bGUsIHBhdGgsIGFyZ3YpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBQeV9YREVDUkVGKHBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9FWEVDVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9FWEVDVikKKworUHlEb2NfU1RSVkFSKG9zX2V4ZWN2ZV9fZG9jX18sCisiZXhlY3ZlKCRtb2R1bGUsIC8sIHBhdGgsIGFyZ3YsIGVudilcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLlxuIgorIiAgZW52XG4iCisiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CisKKyNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZXhlY3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19leGVjdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAorICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19leGVjdmUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52IiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3ZlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkVYRUNWRSk7CisgICAgUHlPYmplY3QgKmFyZ3Y7CisgICAgUHlPYmplY3QgKmVudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YsIGVudik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKworUHlEb2NfU1RSVkFSKG9zX3NwYXdudl9fZG9jX18sCisic3Bhd252KCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeGVjdXRlIHRoZSBwcm9ncmFtIHNwZWNpZmllZCBieSBwYXRoIGluIGEgbmV3IHByb2Nlc3MuXG4iCisiXG4iCisiICBtb2RlXG4iCisiICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi5cbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuXG4iCisiICBhcmd2XG4iCisiICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19TUEFXTlZfTUVUSE9EREVGICAgIFwKKyAgICB7InNwYXdudiIsIChQeUNGdW5jdGlvbilvc19zcGF3bnYsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zcGF3bnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NwYXdudihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbW9kZTsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZ3Y7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwKKyAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIFB5X1hERUNSRUYocGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisKK1B5RG9jX1NUUlZBUihvc19zcGF3bnZlX19kb2NfXywKKyJzcGF3bnZlKCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIGVudiwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIHByb2dyYW0gc3BlY2lmaWVkIGJ5IHBhdGggaW4gYSBuZXcgcHJvY2Vzcy5cbiIKKyJcbiIKKyIgIG1vZGVcbiIKKyIgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLlxuIgorIiAgZW52XG4iCisiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CisKKyNkZWZpbmUgT1NfU1BBV05WRV9NRVRIT0RERUYgICAgXAorICAgIHsic3Bhd252ZSIsIChQeUNGdW5jdGlvbilvc19zcGF3bnZlLCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NwYXdudmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3Bhd252ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbW9kZTsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZ3Y7CisgICAgUHlPYmplY3QgKmVudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsCisgICAgICAgICZtb2RlLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBQeV9YREVDUkVGKHBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRk9SSzEpCisKK1B5RG9jX1NUUlZBUihvc19mb3JrMV9fZG9jX18sCisiZm9yazEoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvcmsgYSBjaGlsZCBwcm9jZXNzIHdpdGggYSBzaW5nbGUgbXVsdGlwbGV4ZWQgKGkuZS4sIG5vdCBib3VuZCkgdGhyZWFkLlxuIgorIlxuIgorIlJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19GT1JLMV9NRVRIT0RERUYgICAgXAorICAgIHsiZm9yazEiLCAoUHlDRnVuY3Rpb24pb3NfZm9yazEsIE1FVEhfTk9BUkdTLCBvc19mb3JrMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9yazFfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZvcmsxKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2ZvcmsxX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GT1JLMSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9GT1JLKQorCitQeURvY19TVFJWQVIob3NfZm9ya19fZG9jX18sCisiZm9yaygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRm9yayBhIGNoaWxkIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0ZPUktfTUVUSE9EREVGICAgIFwKKyAgICB7ImZvcmsiLCAoUHlDRnVuY3Rpb24pb3NfZm9yaywgTUVUSF9OT0FSR1MsIG9zX2ZvcmtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZvcmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZvcmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZm9ya19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRk9SSykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCkKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9tYXgoJG1vZHVsZSwgLywgcG9saWN5KVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgaW50IHBvbGljeTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBvbGljeSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwobW9kdWxlLCBwb2xpY3kpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKCRtb2R1bGUsIC8sIHBvbGljeSlcbiIKKyItLVxuIgorIlxuIgorIkdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBwb2xpY3kpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIGludCBwb2xpY3k7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBfa2V5d29yZHMsCisgICAgICAgICZwb2xpY3kpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKG1vZHVsZSwgcG9saWN5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX2dldHNjaGVkdWxlcigkbW9kdWxlLCBwaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkeSBieSBwaWQuXG4iCisiXG4iCisiUGFzc2luZyAwIGZvciBwaWQgcmV0dXJucyB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfR0VUU0NIRURVTEVSX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRzY2hlZHVsZXIiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyLCBNRVRIX08sIG9zX3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldHNjaGVkdWxlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIChkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfcGFyYW1fX2RvY19fLAorInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KVxuIgorIi0tXG4iCisiXG4iCisiQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5XCIpO1xuIgorIlxuIgorIiAgc2NoZWRfcHJpb3JpdHlcbiIKKyIgICAgQSBzY2hlZHVsaW5nIHBhcmFtZXRlci4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3BhcmFtX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHkpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfcGFyYW0oUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNjaGVkX3ByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzY2hlZF9wYXJhbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNjaGVkX3ByaW9yaXR5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3BhcmFtX2ltcGwodHlwZSwgc2NoZWRfcHJpb3JpdHkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgKGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfc2V0c2NoZWR1bGVyKCRtb2R1bGUsIHBpZCwgcG9saWN5LCBwYXJhbSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlxuIgorIklmIHBpZCBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG4iCisicGFyYW0gaXMgYW4gaW5zdGFuY2Ugb2Ygc2NoZWRfcGFyYW0uIik7CisKKyNkZWZpbmUgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9zZXRzY2hlZHVsZXIiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfc2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIG9zX3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgcG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9zZXRzY2hlZHVsZXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAorICAgICAgICAmcGlkLCAmcG9saWN5LCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX2ltcGwobW9kdWxlLCBwaWQsIHBvbGljeSwgJnBhcmFtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAorInNjaGVkX2dldHBhcmFtKCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJcbiIKKyJJZiBwaWQgaXMgMCwgcmV0dXJucyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLlxuIgorIlJldHVybiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfZ2V0cGFyYW0iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0cGFyYW0sIE1FVEhfTywgb3Nfc2NoZWRfZ2V0cGFyYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldHBhcmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldHBhcmFtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfc2V0cGFyYW1fX2RvY19fLAorInNjaGVkX3NldHBhcmFtKCRtb2R1bGUsIHBpZCwgcGFyYW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJcbiIKKyJJZiBwaWQgaXMgMCwgc2V0cyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLlxuIgorInBhcmFtIHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9TRVRQQVJBTV9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfc2V0cGFyYW0iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfc2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgb3Nfc2NoZWRfc2V0cGFyYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldHBhcmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldHBhcmFtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiTyY6c2NoZWRfc2V0cGFyYW0iLAorICAgICAgICAmcGlkLCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCwgJnBhcmFtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKKyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCwgaW4gc2Vjb25kcy5cbiIKKyJcbiIKKyJWYWx1ZSByZXR1cm5lZCBpcyBhIGZsb2F0LiIpOworCisjZGVmaW5lIE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbCwgTUVUSF9PLCBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19ffSwKKworc3RhdGljIGRvdWJsZQorb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBkb3VibGUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX2ltcGwobW9kdWxlLCBwaWQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMS4wKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlGbG9hdF9Gcm9tRG91YmxlKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfeWllbGRfX2RvY19fLAorInNjaGVkX3lpZWxkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfWUlFTERfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX3lpZWxkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX3lpZWxkLCBNRVRIX05PQVJHUywgb3Nfc2NoZWRfeWllbGRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3lpZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF95aWVsZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zY2hlZF95aWVsZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9zZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfc2V0YWZmaW5pdHkoJG1vZHVsZSwgcGlkLCBtYXNrLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBDUFUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgdG8gbWFzay5cbiIKKyJcbiIKKyJtYXNrIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VycyBpZGVudGlmeWluZyBDUFVzLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX1NFVEFGRklOSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9zZXRhZmZpbml0eSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9zZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBvc19zY2hlZF9zZXRhZmZpbml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIFB5T2JqZWN0ICptYXNrKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldGFmZmluaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBQeU9iamVjdCAqbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPOnNjaGVkX3NldGFmZmluaXR5IiwKKyAgICAgICAgJnBpZCwgJm1hc2spKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCwgbWFzayk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVEFGRklOSVRZKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX2dldGFmZmluaXR5KCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiXG4iCisiVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfZ2V0YWZmaW5pdHkiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0YWZmaW5pdHksIE1FVEhfTywgb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldGFmZmluaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldGFmZmluaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpKQorCitQeURvY19TVFJWQVIob3Nfb3BlbnB0eV9fZG9jX18sCisib3BlbnB0eSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBhIHBzZXVkby10ZXJtaW5hbC5cbiIKKyJcbiIKKyJSZXR1cm4gYSB0dXBsZSBvZiAobWFzdGVyX2ZkLCBzbGF2ZV9mZCkgY29udGFpbmluZyBvcGVuIGZpbGUgZGVzY3JpcHRvcnNcbiIKKyJmb3IgYm90aCB0aGUgbWFzdGVyIGFuZCBzbGF2ZSBlbmRzLiIpOworCisjZGVmaW5lIE9TX09QRU5QVFlfTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW5wdHkiLCAoUHlDRnVuY3Rpb24pb3Nfb3BlbnB0eSwgTUVUSF9OT0FSR1MsIG9zX29wZW5wdHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX29wZW5wdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX29wZW5wdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3Nfb3BlbnB0eV9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZPUktQVFkpCisKK1B5RG9jX1NUUlZBUihvc19mb3JrcHR5X19kb2NfXywKKyJmb3JrcHR5KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JrIGEgbmV3IHByb2Nlc3Mgd2l0aCBhIG5ldyBwc2V1ZG8tdGVybWluYWwgYXMgY29udHJvbGxpbmcgdHR5LlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiAocGlkLCBtYXN0ZXJfZmQpLlxuIgorIkxpa2UgZm9yaygpLCByZXR1cm4gcGlkIG9mIDAgdG8gdGhlIGNoaWxkIHByb2Nlc3MsXG4iCisiYW5kIHBpZCBvZiBjaGlsZCB0byB0aGUgcGFyZW50IHByb2Nlc3MuXG4iCisiVG8gYm90aCwgcmV0dXJuIGZkIG9mIG5ld2x5IG9wZW5lZCBwc2V1ZG8tdGVybWluYWwuIik7CisKKyNkZWZpbmUgT1NfRk9SS1BUWV9NRVRIT0RERUYgICAgXAorICAgIHsiZm9ya3B0eSIsIChQeUNGdW5jdGlvbilvc19mb3JrcHR5LCBNRVRIX05PQVJHUywgb3NfZm9ya3B0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9ya3B0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9ya3B0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19mb3JrcHR5X2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GT1JLUFRZKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVEVHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRlZ2lkX19kb2NfXywKKyJnZXRlZ2lkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VURUdJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0ZWdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRlZ2lkLCBNRVRIX05PQVJHUywgb3NfZ2V0ZWdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0ZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0ZWdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRlZ2lkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRFR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVEVVSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRldWlkX19kb2NfXywKKyJnZXRldWlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgdXNlciBpZC4iKTsKKworI2RlZmluZSBPU19HRVRFVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRldWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGV1aWQsIE1FVEhfTk9BUkdTLCBvc19nZXRldWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRldWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGV1aWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUR0lEKQorCitQeURvY19TVFJWQVIob3NfZ2V0Z2lkX19kb2NfXywKKyJnZXRnaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGdyb3VwIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGdpZCwgTUVUSF9OT0FSR1MsIG9zX2dldGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Z2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0Z2lkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRHSUQpICovCisKK1B5RG9jX1NUUlZBUihvc19nZXRwaWRfX2RvY19fLAorImdldHBpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUUElEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGlkLCBNRVRIX05PQVJHUywgb3NfZ2V0cGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRwaWRfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVEdST1VQUykKKworUHlEb2NfU1RSVkFSKG9zX2dldGdyb3Vwc19fZG9jX18sCisiZ2V0Z3JvdXBzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgSURzIGZvciB0aGUgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19HRVRHUk9VUFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGdyb3VwcyIsIChQeUNGdW5jdGlvbilvc19nZXRncm91cHMsIE1FVEhfTk9BUkdTLCBvc19nZXRncm91cHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGdyb3Vwc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Z3JvdXBzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGdyb3Vwc19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUR1JPVVBTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFBHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRwZ2lkX19kb2NfXywKKyJnZXRwZ2lkKCRtb2R1bGUsIC8sIHBpZClcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOworCisjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHBnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBpZCIsIE5VTEx9OworICAgIHBpZF90IHBpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHBnaWQiLCBfa2V5d29yZHMsCisgICAgICAgICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUEdSUCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHBncnBfX2RvY19fLAorImdldHBncnAoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGdyb3VwIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVFBHUlBfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHBncnAiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdycCwgTUVUSF9OT0FSR1MsIG9zX2dldHBncnBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBncnAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0cGdycF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUEdSUCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRQR1JQKQorCitQeURvY19TVFJWQVIob3Nfc2V0cGdycF9fZG9jX18sCisic2V0cGdycCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWFrZSB0aGUgY3VycmVudCBwcm9jZXNzIHRoZSBsZWFkZXIgb2YgaXRzIHByb2Nlc3MgZ3JvdXAuIik7CisKKyNkZWZpbmUgT1NfU0VUUEdSUF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cGdycCIsIChQeUNGdW5jdGlvbilvc19zZXRwZ3JwLCBNRVRIX05PQVJHUywgb3Nfc2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zZXRwZ3JwX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRQR1JQKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFBQSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRwcGlkX19kb2NfXywKKyJnZXRwcGlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHBhcmVudFwncyBwcm9jZXNzIGlkLlxuIgorIlxuIgorIklmIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQsIFdpbmRvd3MgbWFjaGluZXMgd2lsbCBzdGlsbFxuIgorInJldHVybiBpdHMgaWQ7IG90aGVycyBzeXN0ZW1zIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgXCdpbml0XCcgcHJvY2VzcyAoMSkuIik7CisKKyNkZWZpbmUgT1NfR0VUUFBJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHBpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwcGlkLCBNRVRIX05PQVJHUywgb3NfZ2V0cHBpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHBpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRwcGlkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRQUElEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVExPR0lOKQorCitQeURvY19TVFJWQVIob3NfZ2V0bG9naW5fX2RvY19fLAorImdldGxvZ2luKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFjdHVhbCBsb2dpbiBuYW1lLiIpOworCisjZGVmaW5lIE9TX0dFVExPR0lOX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRsb2dpbiIsIChQeUNGdW5jdGlvbilvc19nZXRsb2dpbiwgTUVUSF9OT0FSR1MsIG9zX2dldGxvZ2luX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRsb2dpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0bG9naW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0bG9naW5faW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVExPR0lOKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFVJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHVpZF9fZG9jX18sCisiZ2V0dWlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyB1c2VyIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVFVJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0dWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHVpZCwgTUVUSF9OT0FSR1MsIG9zX2dldHVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0dWlkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfS0lMTCkKKworUHlEb2NfU1RSVkFSKG9zX2tpbGxfX2RvY19fLAorImtpbGwoJG1vZHVsZSwgcGlkLCBzaWduYWwsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJLaWxsIGEgcHJvY2VzcyB3aXRoIGEgc2lnbmFsLiIpOworCisjZGVmaW5lIE9TX0tJTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImtpbGwiLCAoUHlDRnVuY3Rpb24pb3Nfa2lsbCwgTUVUSF9WQVJBUkdTLCBvc19raWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19raWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBQeV9zc2l6ZV90IHNpZ25hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19raWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBQeV9zc2l6ZV90IHNpZ25hbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJuOmtpbGwiLAorICAgICAgICAmcGlkLCAmc2lnbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxfaW1wbChtb2R1bGUsIHBpZCwgc2lnbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0tJTEwpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfS0lMTFBHKQorCitQeURvY19TVFJWQVIob3Nfa2lsbHBnX19kb2NfXywKKyJraWxscGcoJG1vZHVsZSwgcGdpZCwgc2lnbmFsLCAvKVxuIgorIi0tXG4iCisiXG4iCisiS2lsbCBhIHByb2Nlc3MgZ3JvdXAgd2l0aCBhIHNpZ25hbC4iKTsKKworI2RlZmluZSBPU19LSUxMUEdfTUVUSE9EREVGICAgIFwKKyAgICB7ImtpbGxwZyIsIChQeUNGdW5jdGlvbilvc19raWxscGcsIE1FVEhfVkFSQVJHUywgb3Nfa2lsbHBnX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19raWxscGdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwZ2lkLCBpbnQgc2lnbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxwZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwZ2lkOworICAgIGludCBzaWduYWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLAorICAgICAgICAmcGdpZCwgJnNpZ25hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19raWxscGdfaW1wbChtb2R1bGUsIHBnaWQsIHNpZ25hbCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9LSUxMUEcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUExPQ0spCisKK1B5RG9jX1NUUlZBUihvc19wbG9ja19fZG9jX18sCisicGxvY2soJG1vZHVsZSwgb3AsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb2NrIHByb2dyYW0gc2VnbWVudHMgaW50byBtZW1vcnkuXCIpOyIpOworCisjZGVmaW5lIE9TX1BMT0NLX01FVEhPRERFRiAgICBcCisgICAgeyJwbG9jayIsIChQeUNGdW5jdGlvbilvc19wbG9jaywgTUVUSF9PLCBvc19wbG9ja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGxvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgb3ApOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGxvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgb3A7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGxvY2siLCAmb3ApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGxvY2tfaW1wbChtb2R1bGUsIG9wKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BMT0NLKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFVJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHVpZF9fZG9jX18sCisic2V0dWlkKCRtb2R1bGUsIHVpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHVzZXIgaWQuIik7CisKKyNkZWZpbmUgT1NfU0VUVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXR1aWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0dWlkLCBNRVRIX08sIG9zX3NldHVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgdWlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHVpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IHVpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0dWlkX2ltcGwobW9kdWxlLCB1aWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEVVSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRldWlkX19kb2NfXywKKyJzZXRldWlkKCRtb2R1bGUsIGV1aWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgdXNlciBpZC4iKTsKKworI2RlZmluZSBPU19TRVRFVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRldWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldGV1aWQsIE1FVEhfTywgb3Nfc2V0ZXVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZXVpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IGV1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZXVpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IGV1aWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZXVpZF9pbXBsKG1vZHVsZSwgZXVpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRFVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEVHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRlZ2lkX19kb2NfXywKKyJzZXRlZ2lkKCRtb2R1bGUsIGVnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfU0VURUdJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0ZWdpZCIsIChQeUNGdW5jdGlvbilvc19zZXRlZ2lkLCBNRVRIX08sIG9zX3NldGVnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCBlZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGVnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBnaWRfdCBlZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGVnaWRfaW1wbChtb2R1bGUsIGVnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VURUdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRSRVVJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHJldWlkX19kb2NfXywKKyJzZXRyZXVpZCgkbW9kdWxlLCBydWlkLCBldWlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRyZXVpZCIsIChQeUNGdW5jdGlvbilvc19zZXRyZXVpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZXVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCBydWlkLCB1aWRfdCBldWlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJldWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IHJ1aWQ7CisgICAgdWlkX3QgZXVpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJldWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFJFVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFR0lEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cmVnaWRfX2RvY19fLAorInNldHJlZ2lkKCRtb2R1bGUsIHJnaWQsIGVnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRyZWdpZCIsIChQeUNGdW5jdGlvbilvc19zZXRyZWdpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZWdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCByZ2lkLCBnaWRfdCBlZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IHJnaWQ7CisgICAgZ2lkX3QgZWdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZWdpZCIsCisgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlZ2lkX2ltcGwobW9kdWxlLCByZ2lkLCBlZ2lkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFJFR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEdJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldGdpZF9fZG9jX18sCisic2V0Z2lkKCRtb2R1bGUsIGdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGdyb3VwIGlkLiIpOworCisjZGVmaW5lIE9TX1NFVEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0Z2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldGdpZCwgTUVUSF9PLCBvc19zZXRnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGdpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBnaWRfdCBnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGdpZF9pbXBsKG1vZHVsZSwgZ2lkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVEdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRHUk9VUFMpCisKK1B5RG9jX1NUUlZBUihvc19zZXRncm91cHNfX2RvY19fLAorInNldGdyb3VwcygkbW9kdWxlLCBncm91cHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvIGxpc3QuIik7CisKKyNkZWZpbmUgT1NfU0VUR1JPVVBTX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRncm91cHMiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0Z3JvdXBzLCBNRVRIX08sIG9zX3NldGdyb3Vwc19fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVEdST1VQUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUMykKKworUHlEb2NfU1RSVkFSKG9zX3dhaXQzX19kb2NfXywKKyJ3YWl0MygkbW9kdWxlLCAvLCBvcHRpb25zKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOlxuIgorIiAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpIik7CisKKyNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfd2FpdDNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXQzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wdGlvbnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgaW50IG9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOndhaXQzIiwgX2tleXdvcmRzLAorICAgICAgICAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0M19pbXBsKG1vZHVsZSwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUMykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUNCkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXQ0X19kb2NfXywKKyJ3YWl0NCgkbW9kdWxlLCAvLCBwaWQsIG9wdGlvbnMpXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgc3BlY2lmaWMgY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoaWxkIHByb2Nlc3M6XG4iCisiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKKworI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0NF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXQ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgIm9wdGlvbnMiLCBOVUxMfTsKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IG9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCBfa2V5d29yZHMsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQ0X2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVDQpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXRpZF9fZG9jX18sCisid2FpdGlkKCRtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSByZXN1bHQgb2Ygd2FpdGluZyBmb3IgYSBwcm9jZXNzIG9yIHByb2Nlc3Nlcy5cbiIKKyJcbiIKKyIgIGlkdHlwZVxuIgorIiAgICBNdXN0IGJlIG9uZSBvZiBiZSBQX1BJRCwgUF9QR0lEIG9yIFBfQUxMLlxuIgorIiAgaWRcbiIKKyIgICAgVGhlIGlkIHRvIHdhaXQgb24uXG4iCisiICBvcHRpb25zXG4iCisiICAgIENvbnN0cnVjdGVkIGZyb20gdGhlIE9SaW5nIG9mIG9uZSBvciBtb3JlIG9mIFdFWElURUQsIFdTVE9QUEVEXG4iCisiICAgIG9yIFdDT05USU5VRUQgYW5kIGFkZGl0aW9uYWxseSBtYXkgYmUgT1JlZCB3aXRoIFdOT0hBTkcgb3IgV05PV0FJVC5cbiIKKyJcbiIKKyJSZXR1cm5zIGVpdGhlciB3YWl0aWRfcmVzdWx0IG9yIE5vbmUgaWYgV05PSEFORyBpcyBzcGVjaWZpZWQgYW5kIHRoZXJlIGFyZVxuIgorIm5vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisKKyNkZWZpbmUgT1NfV0FJVElEX01FVEhPRERFRiAgICBcCisgICAgeyJ3YWl0aWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaWR0eXBlX3QgaWR0eXBlLCBpZF90IGlkLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaWR0eXBlX3QgaWR0eXBlOworICAgIGlkX3QgaWQ7CisgICAgaW50IG9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwKKyAgICAgICAgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0aWRfaW1wbChtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKQorCitQeURvY19TVFJWQVIob3Nfd2FpdHBpZF9fZG9jX18sCisid2FpdHBpZCgkbW9kdWxlLCBwaWQsIG9wdGlvbnMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBjaGlsZCBwcm9jZXNzOlxuIgorIiAgICAocGlkLCBzdGF0dXMpXG4iCisiXG4iCisiVGhlIG9wdGlvbnMgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX1dBSVRQSURfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLAorICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVFBJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DV0FJVCkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXRwaWRfX2RvY19fLAorIndhaXRwaWQoJG1vZHVsZSwgcGlkLCBvcHRpb25zLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGdpdmVuIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgcHJvY2VzczpcbiIKKyIgICAgKHBpZCwgc3RhdHVzIDw8IDgpXG4iCisiXG4iCisiVGhlIG9wdGlvbnMgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX1dBSVRQSURfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2ludHB0cl90IHBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfSU5UUFRSICJpOndhaXRwaWQiLAorICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ1dBSVQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfV0FJVCkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXRfX2RvY19fLAorIndhaXQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczpcbiIKKyIgICAgKHBpZCwgc3RhdHVzKSIpOworCisjZGVmaW5lIE9TX1dBSVRfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdCwgTUVUSF9OT0FSR1MsIG9zX3dhaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3Nfd2FpdF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKQorCitQeURvY19TVFJWQVIob3Nfc3ltbGlua19fZG9jX18sCisic3ltbGluaygkbW9kdWxlLCAvLCBzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuXG4iCisiXG4iCisidGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcbiIKKyIgIGludGVycHJldGVkIGFzIGEgZGlyZWN0b3J5LiAgKE9uIFdpbmRvd3MsIHN5bWxpbmsgcmVxdWlyZXNcbiIKKyIgIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYSBOb3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4pXG4iCisiICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfU1lNTElOS19NRVRIT0RERUYgICAgXAorICAgIHsic3ltbGluayIsIChQeUNGdW5jdGlvbilvc19zeW1saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3ltbGlua19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3ltbGlua19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKKyAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeW1saW5rKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInN5bWxpbmsiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnkgPSAwOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8cCRPJjpzeW1saW5rIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5LCBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zeW1saW5rX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5LCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHNyYyAqLworICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKKyAgICAvKiBDbGVhbnVwIGZvciBkc3QgKi8KKyAgICBwYXRoX2NsZWFudXAoJmRzdCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICovCisKKyNpZiBkZWZpbmVkKEhBVkVfVElNRVMpCisKK1B5RG9jX1NUUlZBUihvc190aW1lc19fZG9jX18sCisidGltZXMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvbGxlY3Rpb24gY29udGFpbmluZyBwcm9jZXNzIHRpbWluZyBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKKyJUaGUgb2JqZWN0IHJldHVybmVkIGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlc2UgZmllbGRzOlxuIgorIiAgKHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWUsIGVsYXBzZWRfdGltZSlcbiIKKyJBbGwgZmllbGRzIGFyZSBmbG9hdGluZyBwb2ludCBudW1iZXJzLiIpOworCisjZGVmaW5lIE9TX1RJTUVTX01FVEhPRERFRiAgICBcCisgICAgeyJ0aW1lcyIsIChQeUNGdW5jdGlvbilvc190aW1lcywgTUVUSF9OT0FSR1MsIG9zX3RpbWVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190aW1lc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGltZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfdGltZXNfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RJTUVTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFNJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHNpZF9fZG9jX18sCisiZ2V0c2lkKCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHNpZChwaWQpIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4iKTsKKworI2RlZmluZSBPU19HRVRTSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNpZCIsIChQeUNGdW5jdGlvbilvc19nZXRzaWQsIE1FVEhfTywgb3NfZ2V0c2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRzaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0c2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHNpZF9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFNJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRTSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRzaWRfX2RvY19fLAorInNldHNpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgc2V0c2lkKCkuIik7CisKKyNkZWZpbmUgT1NfU0VUU0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRzaWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0c2lkLCBNRVRIX05PQVJHUywgb3Nfc2V0c2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRzaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHNpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zZXRzaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFNJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRQR0lEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cGdpZF9fZG9jX18sCisic2V0cGdpZCgkbW9kdWxlLCBwaWQsIHBncnAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRwZ2lkKHBpZCwgcGdycCkuIik7CisKKyNkZWZpbmUgT1NfU0VUUEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19zZXRwZ2lkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHBnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHBnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIHBpZF90IHBncnApOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisgICAgcGlkX3QgcGdycDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICIiIF9QeV9QQVJTRV9QSUQgIjpzZXRwZ2lkIiwKKyAgICAgICAgJnBpZCwgJnBncnApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkLCBwZ3JwKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFBHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfVENHRVRQR1JQKQorCitQeURvY19TVFJWQVIob3NfdGNnZXRwZ3JwX19kb2NfXywKKyJ0Y2dldHBncnAoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuIik7CisKKyNkZWZpbmUgT1NfVENHRVRQR1JQX01FVEhPRERFRiAgICBcCisgICAgeyJ0Y2dldHBncnAiLCAoUHlDRnVuY3Rpb24pb3NfdGNnZXRwZ3JwLCBNRVRIX08sIG9zX3RjZ2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNnZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RjZ2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNnZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9UQ0dFVFBHUlApICovCisKKyNpZiBkZWZpbmVkKEhBVkVfVENTRVRQR1JQKQorCitQeURvY19TVFJWQVIob3NfdGNzZXRwZ3JwX19kb2NfXywKKyJ0Y3NldHBncnAoJG1vZHVsZSwgZmQsIHBnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuIik7CisKKyNkZWZpbmUgT1NfVENTRVRQR1JQX01FVEhPRERFRiAgICBcCisgICAgeyJ0Y3NldHBncnAiLCAoUHlDRnVuY3Rpb24pb3NfdGNzZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIG9zX3Rjc2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNzZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBwaWRfdCBwZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Rjc2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgcGlkX3QgcGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiOnRjc2V0cGdycCIsCisgICAgICAgICZmZCwgJnBnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNzZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCwgcGdpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9UQ1NFVFBHUlApICovCisKK1B5RG9jX1NUUlZBUihvc19vcGVuX19kb2NfXywKKyJvcGVuKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzLCBtb2RlPTUxMSwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgZmlsZSBmb3IgbG93IGxldmVsIElPLiAgUmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciAoaW50ZWdlcikuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19vcGVuX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX29wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmbGFncywgaW50IG1vZGUsCisgICAgICAgICAgICAgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19vcGVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm9wZW4iLCAicGF0aCIsIDAsIDApOworICAgIGludCBmbGFnczsKKyAgICBpbnQgbW9kZSA9IDUxMTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJm1vZGUsIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19vcGVuX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIG1vZGUsIGRpcl9mZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkbW9kdWxlLCAvLCBmZClcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jbG9zZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpjbG9zZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2Nsb3NlcmFuZ2VfX2RvY19fLAorImNsb3NlcmFuZ2UoJG1vZHVsZSwgZmRfbG93LCBmZF9oaWdoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuIik7CisKKyNkZWZpbmUgT1NfQ0xPU0VSQU5HRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2VyYW5nZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZXJhbmdlLCBNRVRIX1ZBUkFSR1MsIG9zX2Nsb3NlcmFuZ2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlcmFuZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmRfbG93LCBpbnQgZmRfaGlnaCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jbG9zZXJhbmdlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZF9sb3c7CisgICAgaW50IGZkX2hpZ2g7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmNsb3NlcmFuZ2UiLAorICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jbG9zZXJhbmdlX2ltcGwobW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19kdXBfX2RvY19fLAorImR1cCgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGR1cGxpY2F0ZSBvZiBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19EVVBfTUVUSE9EREVGICAgIFwKKyAgICB7ImR1cCIsIChQeUNGdW5jdGlvbilvc19kdXAsIE1FVEhfTywgb3NfZHVwX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2R1cF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19kdXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZHVwIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19kdXBfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2R1cDJfX2RvY19fLAorImR1cDIoJG1vZHVsZSwgLywgZmQsIGZkMiwgaW5oZXJpdGFibGU9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIkR1cGxpY2F0ZSBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfRFVQMl9NRVRIT0RERUYgICAgXAorICAgIHsiZHVwMiIsIChQeUNGdW5jdGlvbilvc19kdXAyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZHVwMl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZHVwMl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2R1cDIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisgICAgaW50IGZkMjsKKyAgICBpbnQgaW5oZXJpdGFibGUgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWl8cDpkdXAyIiwgX2tleXdvcmRzLAorICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19kdXAyX2ltcGwobW9kdWxlLCBmZCwgZmQyLCBpbmhlcml0YWJsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9MT0NLRikKKworUHlEb2NfU1RSVkFSKG9zX2xvY2tmX19kb2NfXywKKyJsb2NrZigkbW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyIgIGZkXG4iCisiICAgIEFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgY29tbWFuZFxuIgorIiAgICBPbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yIEZfVEVTVC5cbiIKKyIgIGxlbmd0aFxuIgorIiAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLiIpOworCisjZGVmaW5lIE9TX0xPQ0tGX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NrZiIsIChQeUNGdW5jdGlvbilvc19sb2NrZiwgTUVUSF9WQVJBUkdTLCBvc19sb2NrZl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbG9ja2ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb21tYW5kLCBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbG9ja2YoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBjb21tYW5kOworICAgIFB5X29mZl90IGxlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCisgICAgICAgICZmZCwgJmNvbW1hbmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sb2NrZl9pbXBsKG1vZHVsZSwgZmQsIGNvbW1hbmQsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MT0NLRikgKi8KKworUHlEb2NfU1RSVkFSKG9zX2xzZWVrX19kb2NfXywKKyJsc2VlaygkbW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdywgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgcG9zaXRpb24gb2YgYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm4gdGhlIG5ldyBwb3NpdGlvbi5cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gaW4gbnVtYmVyIG9mIGJ5dGVzXG4iCisicmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4iKTsKKworI2RlZmluZSBPU19MU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsibHNlZWsiLCAoUHlDRnVuY3Rpb24pb3NfbHNlZWssIE1FVEhfVkFSQVJHUywgb3NfbHNlZWtfX2RvY19ffSwKKworc3RhdGljIFB5X29mZl90Citvc19sc2Vla19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3QgcG9zaXRpb24sIGludCBob3cpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHNlZWsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X29mZl90IHBvc2l0aW9uOworICAgIGludCBob3c7CisgICAgUHlfb2ZmX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8maTpsc2VlayIsCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmcG9zaXRpb24sICZob3cpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2xzZWVrX2ltcGwobW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21QeV9vZmZfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfcmVhZF9fZG9jX18sCisicmVhZCgkbW9kdWxlLCBmZCwgbGVuZ3RoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLiAgUmV0dXJucyBhIGJ5dGVzIG9iamVjdC4iKTsKKworI2RlZmluZSBPU19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlYWQsIE1FVEhfVkFSQVJHUywgb3NfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfc3NpemVfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVhZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImluOnJlYWQiLAorICAgICAgICAmZmQsICZsZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9SRUFEVikKKworUHlEb2NfU1RSVkFSKG9zX3JlYWR2X19kb2NfXywKKyJyZWFkdigkbW9kdWxlLCBmZCwgYnVmZmVycywgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBmZCBpbnRvIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlcnMuXG4iCisiXG4iCisiVGhlIGJ1ZmZlcnMgc2hvdWxkIGJlIG11dGFibGUgYnVmZmVycyBhY2NlcHRpbmcgYnl0ZXMuXG4iCisicmVhZHYgd2lsbCB0cmFuc2ZlciBkYXRhIGludG8gZWFjaCBidWZmZXIgdW50aWwgaXQgaXMgZnVsbFxuIgorImFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgYnVmZmVyIGluIHRoZSBzZXF1ZW5jZSB0byBob2xkXG4iCisidGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4iCisiXG4iCisicmVhZHYgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQsXG4iCisid2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGUgdG90YWwgY2FwYWNpdHkgb2YgYWxsIHRoZSBidWZmZXJzLiIpOworCisjZGVmaW5lIE9TX1JFQURWX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkdiIsIChQeUNGdW5jdGlvbilvc19yZWFkdiwgTUVUSF9WQVJBUkdTLCBvc19yZWFkdl9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcmVhZHZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5T2JqZWN0ICpidWZmZXJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlYWR2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqYnVmZmVyczsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwKKyAgICAgICAgJmZkLCAmYnVmZmVycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcmVhZHZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9SRUFEVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QUkVBRCkKKworUHlEb2NfU1RSVkFSKG9zX3ByZWFkX19kb2NfXywKKyJwcmVhZCgkbW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGEgbnVtYmVyIG9mIGJ5dGVzIGZyb20gYSBmaWxlIGRlc2NyaXB0b3Igc3RhcnRpbmcgYXQgYSBwYXJ0aWN1bGFyIG9mZnNldC5cbiIKKyJcbiIKKyJSZWFkIGxlbmd0aCBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb21cbiIKKyJ0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLiIpOworCisjZGVmaW5lIE9TX1BSRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJwcmVhZCIsIChQeUNGdW5jdGlvbilvc19wcmVhZCwgTUVUSF9WQVJBUkdTLCBvc19wcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHJlYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBsZW5ndGgsIFB5X29mZl90IG9mZnNldCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wcmVhZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGxlbmd0aDsKKyAgICBQeV9vZmZfdCBvZmZzZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLAorICAgICAgICAmZmQsICZsZW5ndGgsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCwgb2Zmc2V0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BSRUFEKSAqLworCitQeURvY19TVFJWQVIob3Nfd3JpdGVfX2RvY19fLAorIndyaXRlKCRtb2R1bGUsIGZkLCBkYXRhLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIG9zX3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc193cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpkYXRhKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dyaXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kjp3cml0ZSIsCisgICAgICAgICZmZCwgJmRhdGEpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmRhdGEpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2ZzdGF0X19kb2NfXywKKyJmc3RhdCgkbW9kdWxlLCAvLCBmZClcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4iKTsKKworI2RlZmluZSBPU19GU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6ZnN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdF9pbXBsKG1vZHVsZSwgZmQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBmZCBpcyBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbC5cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yXG4iCisiY29ubmVjdGVkIHRvIHRoZSBzbGF2ZSBlbmQgb2YgYSB0ZXJtaW5hbC4iKTsKKworI2RlZmluZSBPU19JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilvc19pc2F0dHksIE1FVEhfTywgb3NfaXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2lzYXR0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19pc2F0dHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNhdHR5IiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19pc2F0dHlfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9QSVBFKQorCitQeURvY19TVFJWQVIob3NfcGlwZV9fZG9jX18sCisicGlwZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgcGlwZS5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgdHdvIGZpbGUgZGVzY3JpcHRvcnM6XG4iCisiICAocmVhZF9mZCwgd3JpdGVfZmQpIik7CisKKyNkZWZpbmUgT1NfUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsicGlwZSIsIChQeUNGdW5jdGlvbilvc19waXBlLCBNRVRIX05PQVJHUywgb3NfcGlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19waXBlX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QSVBFKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BJUEUyKQorCitQeURvY19TVFJWQVIob3NfcGlwZTJfX2RvY19fLAorInBpcGUyKCRtb2R1bGUsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiB0d28gZmlsZSBkZXNjcmlwdG9yczpcbiIKKyIgIChyZWFkX2ZkLCB3cml0ZV9mZClcbiIKKyJcbiIKKyJmbGFncyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgT1JpbmcgdG9nZXRoZXIgb25lIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzOlxuIgorIk9fTk9OQkxPQ0ssIE9fQ0xPRVhFQy4iKTsKKworI2RlZmluZSBPU19QSVBFMl9NRVRIT0RERUYgICAgXAorICAgIHsicGlwZTIiLCAoUHlDRnVuY3Rpb24pb3NfcGlwZTIsIE1FVEhfTywgb3NfcGlwZTJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3BpcGUyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3BpcGUyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWdzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3BpcGUyX2ltcGwobW9kdWxlLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QSVBFMikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XUklURVYpCisKK1B5RG9jX1NUUlZBUihvc193cml0ZXZfX2RvY19fLAorIndyaXRldigkbW9kdWxlLCBmZCwgYnVmZmVycywgLylcbiIKKyItLVxuIgorIlxuIgorIkl0ZXJhdGUgb3ZlciBidWZmZXJzLCBhbmQgd3JpdGUgdGhlIGNvbnRlbnRzIG9mIGVhY2ggdG8gYSBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4iCisiYnVmZmVycyBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgYnl0ZXMtbGlrZSBvYmplY3RzLiIpOworCisjZGVmaW5lIE9TX1dSSVRFVl9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGV2IiwgKFB5Q0Z1bmN0aW9uKW9zX3dyaXRldiwgTUVUSF9WQVJBUkdTLCBvc193cml0ZXZfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRldl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd3JpdGV2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqYnVmZmVyczsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOndyaXRldiIsCisgICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRldl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dSSVRFVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QV1JJVEUpCisKK1B5RG9jX1NUUlZBUihvc19wd3JpdGVfX2RvY19fLAorInB3cml0ZSgkbW9kdWxlLCBmZCwgYnVmZmVyLCBvZmZzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyB0byBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LlxuIgorIlxuIgorIldyaXRlIGJ1ZmZlciB0byBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZlxuIgorInRoZSBmaWxlLiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZS4gIERvZXMgbm90IGNoYW5nZSB0aGVcbiIKKyJjdXJyZW50IGZpbGUgb2Zmc2V0LiIpOworCisjZGVmaW5lIE9TX1BXUklURV9NRVRIT0RERUYgICAgXAorICAgIHsicHdyaXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3B3cml0ZSwgTUVUSF9WQVJBUkdTLCBvc19wd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK29zX3B3cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpidWZmZXIsCisgICAgICAgICAgICAgICBQeV9vZmZfdCBvZmZzZXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHdyaXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworICAgIFB5X29mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsCisgICAgICAgICZmZCwgJmJ1ZmZlciwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19wd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmYnVmZmVyLCBvZmZzZXQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QV1JJVEUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUtGSUZPKQorCitQeURvY19TVFJWQVIob3NfbWtmaWZvX19kb2NfXywKKyJta2ZpZm8oJG1vZHVsZSwgLywgcGF0aCwgbW9kZT00MzgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgXCJmaWZvXCIgKGEgUE9TSVggbmFtZWQgcGlwZSkuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19NS0ZJRk9fTUVUSE9EREVGICAgIFwKKyAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2ZpZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rZmlmb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtmaWZvKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZmlmbyIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IG1vZGUgPSA0Mzg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtmaWZvX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUtGSUZPKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpKQorCitQeURvY19TVFJWQVIob3NfbWtub2RfX2RvY19fLAorIm1rbm9kKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGU9Mzg0LCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS5cbiIKKyJcbiIKKyJDcmVhdGUgYSBub2RlIGluIHRoZSBmaWxlIHN5c3RlbSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKVxuIgorImF0IHBhdGguICBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuIgorInR5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2ZcbiIKKyJTX0lGUkVHLCBTX0lGQ0hSLCBTX0lGQkxLLCBhbmQgU19JRklGTy4gIElmIFNfSUZDSFIgb3IgU19JRkJMSyBpcyBzZXQgb24gbW9kZSxcbiIKKyJkZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZ1xuIgorIm9zLm1ha2VkZXYoKSkuICBPdGhlcndpc2UgZGV2aWNlIGlzIGlnbm9yZWQuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYgICAgXAorICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta25vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtub2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBkZXZfdCBkZXZpY2UsCisgICAgICAgICAgICAgIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtub2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rbm9kIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgbW9kZSA9IDM4NDsKKyAgICBkZXZfdCBkZXZpY2UgPSAwOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGlPJiRPJjpta25vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta25vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRldmljZSwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykKKworUHlEb2NfU1RSVkFSKG9zX21ham9yX19kb2NfXywKKyJtYWpvcigkbW9kdWxlLCBkZXZpY2UsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRyYWN0cyBhIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyLiIpOworCisjZGVmaW5lIE9TX01BSk9SX01FVEhPRERFRiAgICBcCisgICAgeyJtYWpvciIsIChQeUNGdW5jdGlvbilvc19tYWpvciwgTUVUSF9PLCBvc19tYWpvcl9fZG9jX199LAorCitzdGF0aWMgdW5zaWduZWQgaW50Citvc19tYWpvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRldl90IGRldmljZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19tYWpvcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRldl90IGRldmljZTsKKyAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFqb3JfaW1wbChtb2R1bGUsIGRldmljZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0RFVklDRV9NQUNST1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykKKworUHlEb2NfU1RSVkFSKG9zX21pbm9yX19kb2NfXywKKyJtaW5vcigkbW9kdWxlLCBkZXZpY2UsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRyYWN0cyBhIGRldmljZSBtaW5vciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyLiIpOworCisjZGVmaW5lIE9TX01JTk9SX01FVEhPRERFRiAgICBcCisgICAgeyJtaW5vciIsIChQeUNGdW5jdGlvbilvc19taW5vciwgTUVUSF9PLCBvc19taW5vcl9fZG9jX199LAorCitzdGF0aWMgdW5zaWduZWQgaW50Citvc19taW5vcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRldl90IGRldmljZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19taW5vcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRldl90IGRldmljZTsKKyAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWlub3JfaW1wbChtb2R1bGUsIGRldmljZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0RFVklDRV9NQUNST1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykKKworUHlEb2NfU1RSVkFSKG9zX21ha2VkZXZfX2RvY19fLAorIm1ha2VkZXYoJG1vZHVsZSwgbWFqb3IsIG1pbm9yLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29tcG9zZXMgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuIik7CisKKyNkZWZpbmUgT1NfTUFLRURFVl9NRVRIT0RERUYgICAgXAorICAgIHsibWFrZWRldiIsIChQeUNGdW5jdGlvbilvc19tYWtlZGV2LCBNRVRIX1ZBUkFSR1MsIG9zX21ha2VkZXZfX2RvY19ffSwKKworc3RhdGljIGRldl90Citvc19tYWtlZGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1ham9yLCBpbnQgbWlub3IpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWFrZWRldihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWFqb3I7CisgICAgaW50IG1pbm9yOworICAgIGRldl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOm1ha2VkZXYiLAorICAgICAgICAmbWFqb3IsICZtaW5vcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFrZWRldl9pbXBsKG1vZHVsZSwgbWFqb3IsIG1pbm9yKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKGRldl90KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX1B5TG9uZ19Gcm9tRGV2KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykgKi8KKworI2lmIChkZWZpbmVkIEhBVkVfRlRSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX2Z0cnVuY2F0ZV9fZG9jX18sCisiZnRydW5jYXRlKCRtb2R1bGUsIGZkLCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSBhIGZpbGUsIHNwZWNpZmllZCBieSBmaWxlIGRlc2NyaXB0b3IsIHRvIGEgc3BlY2lmaWMgbGVuZ3RoLiIpOworCisjZGVmaW5lIE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsiZnRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Z0cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBvc19mdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Z0cnVuY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3QgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Z0cnVuY2F0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnRydW5jYXRlIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnRydW5jYXRlX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQgSEFWRV9GVFJVTkNBVEUgfHwgZGVmaW5lZCBNU19XSU5ET1dTKSAqLworCisjaWYgKGRlZmluZWQgSEFWRV9UUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc190cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJG1vZHVsZSwgLywgcGF0aCwgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgcGF0aCwgdG8gYSBzcGVjaWZpYyBsZW5ndGguXG4iCisiXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCisjZGVmaW5lIE9TX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190cnVuY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlfb2ZmX3QgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RydW5jYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ0cnVuY2F0ZSIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZUUlVOQ0FURSk7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdHJ1bmNhdGVfaW1wbChtb2R1bGUsICZwYXRoLCBsZW5ndGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkIEhBVkVfVFJVTkNBVEUgfHwgZGVmaW5lZCBNU19XSU5ET1dTKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpCisKK1B5RG9jX1NUUlZBUihvc19wb3NpeF9mYWxsb2NhdGVfX2RvY19fLAorInBvc2l4X2ZhbGxvY2F0ZSgkbW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFbnN1cmUgYSBmaWxlIGhhcyBhbGxvY2F0ZWQgYXQgbGVhc3QgYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBieXRlcyBvbiBkaXNrLlxuIgorIlxuIgorIkVuc3VyZSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBlbmNvbXBhc3NlcyBhIHJhbmdlIG9mIGJ5dGVzXG4iCisic3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLiIpOworCisjZGVmaW5lIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsicG9zaXhfZmFsbG9jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3Bvc2l4X2ZhbGxvY2F0ZSwgTUVUSF9WQVJBUkdTLCBvc19wb3NpeF9mYWxsb2NhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Bvc2l4X2ZhbGxvY2F0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3Qgb2Zmc2V0OworICAgIFB5X29mZl90IGxlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9QT1NJWF9GQURWSVNFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpKQorCitQeURvY19TVFJWQVIob3NfcG9zaXhfZmFkdmlzZV9fZG9jX18sCisicG9zaXhfZmFkdmlzZSgkbW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkFubm91bmNlIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4uXG4iCisiXG4iCisiQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiwgdGh1cyBhbGxvd2luZ1xuIgorInRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuIgorIlRoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBzdGFydGluZyBhdFxuIgorIm9mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLlxuIgorImFkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcbiIKKyJQT1NJWF9GQURWX1JBTkRPTSwgUE9TSVhfRkFEVl9OT1JFVVNFLCBQT1NJWF9GQURWX1dJTExORUVELCBvclxuIgorIlBPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisKKyNkZWZpbmUgT1NfUE9TSVhfRkFEVklTRV9NRVRIT0RERUYgICAgXAorICAgIHsicG9zaXhfZmFkdmlzZSIsIChQeUNGdW5jdGlvbilvc19wb3NpeF9mYWR2aXNlLCBNRVRIX1ZBUkFSR1MsIG9zX3Bvc2l4X2ZhZHZpc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Bvc2l4X2ZhZHZpc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9vZmZfdCBsZW5ndGgsIGludCBhZHZpY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFkdmlzZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3Qgb2Zmc2V0OworICAgIFB5X29mZl90IGxlbmd0aDsKKyAgICBpbnQgYWR2aWNlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFkdmlzZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19wdXRlbnZfX2RvY19fLAorInB1dGVudigkbW9kdWxlLCBuYW1lLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfUFVURU5WX01FVEhPRERFRiAgICBcCisgICAgeyJwdXRlbnYiLCAoUHlDRnVuY3Rpb24pb3NfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIG9zX3B1dGVudl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpwdXRlbnYiLAorICAgICAgICAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfcHV0ZW52X19kb2NfXywKKyJwdXRlbnYoJG1vZHVsZSwgbmFtZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX1BVVEVOVl9NRVRIT0RERUYgICAgXAorICAgIHsicHV0ZW52IiwgKFB5Q0Z1bmN0aW9uKW9zX3B1dGVudiwgTUVUSF9WQVJBUkdTLCBvc19wdXRlbnZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3B1dGVudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnB1dGVudiIsCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG5hbWUgKi8KKyAgICBQeV9YREVDUkVGKG5hbWUpOworICAgIC8qIENsZWFudXAgZm9yIHZhbHVlICovCisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BVVEVOVikgJiYgIWRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9VTlNFVEVOVikKKworUHlEb2NfU1RSVkFSKG9zX3Vuc2V0ZW52X19kb2NfXywKKyJ1bnNldGVudigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGVsZXRlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX1VOU0VURU5WX01FVEhPRERFRiAgICBcCisgICAgeyJ1bnNldGVudiIsIChQeUNGdW5jdGlvbilvc191bnNldGVudiwgTUVUSF9PLCBvc191bnNldGVudl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5zZXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bnNldGVudihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5zZXRlbnYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3Vuc2V0ZW52X2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBuYW1lICovCisgICAgUHlfWERFQ1JFRihuYW1lKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfVU5TRVRFTlYpICovCisKK1B5RG9jX1NUUlZBUihvc19zdHJlcnJvcl9fZG9jX18sCisic3RyZXJyb3IoJG1vZHVsZSwgY29kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRyYW5zbGF0ZSBhbiBlcnJvciBjb2RlIHRvIGEgbWVzc2FnZSBzdHJpbmcuIik7CisKKyNkZWZpbmUgT1NfU1RSRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7InN0cmVycm9yIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0cmVycm9yLCBNRVRIX08sIG9zX3N0cmVycm9yX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdHJlcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0cmVycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNvZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c3RyZXJyb3IiLCAmY29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdHJlcnJvcl9pbXBsKG1vZHVsZSwgY29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdDT1JFRFVNUCkKKworUHlEb2NfU1RSVkFSKG9zX1dDT1JFRFVNUF9fZG9jX18sCisiV0NPUkVEVU1QKCRtb2R1bGUsIHN0YXR1cywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGR1bXBlZCB0byBhIGNvcmUgZmlsZS4iKTsKKworI2RlZmluZSBPU19XQ09SRURVTVBfTUVUSE9EREVGICAgIFwKKyAgICB7IldDT1JFRFVNUCIsIChQeUNGdW5jdGlvbilvc19XQ09SRURVTVAsIE1FVEhfTywgb3NfV0NPUkVEVU1QX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dDT1JFRFVNUF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0NPUkVEVU1QKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XQ09SRURVTVBfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXQ09SRURVTVApICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZDT05USU5VRUQpCisKK1B5RG9jX1NUUlZBUihvc19XSUZDT05USU5VRURfX2RvY19fLAorIldJRkNPTlRJTlVFRCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBhIHBhcnRpY3VsYXIgcHJvY2VzcyB3YXMgY29udGludWVkIGZyb20gYSBqb2IgY29udHJvbCBzdG9wLlxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGNvbnRpbnVlZCBmcm9tIGFcbiIKKyJqb2IgY29udHJvbCBzdG9wLiIpOworCisjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYgICAgXAorICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XSUZDT05USU5VRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRkNPTlRJTlVFRChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGQ09OVElOVUVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGQ09OVElOVUVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU1RPUFBFRCkKKworUHlEb2NfU1RSVkFSKG9zX1dJRlNUT1BQRURfX2RvY19fLAorIldJRlNUT1BQRUQoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4iKTsKKworI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRiAgICBcCisgICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dJRlNUT1BQRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRlNUT1BQRUQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTVE9QUEVEIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZTVE9QUEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU1RPUFBFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRlNJR05BTEVEKQorCitQeURvY19TVFJWQVIob3NfV0lGU0lHTkFMRURfX2RvY19fLAorIldJRlNJR05BTEVEKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuIik7CisKKyNkZWZpbmUgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGICAgIFwKKyAgICB7IldJRlNJR05BTEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNJR05BTEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGU0lHTkFMRURfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0lGU0lHTkFMRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRlNJR05BTEVEKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGU0lHTkFMRUQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNJR05BTEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU0lHTkFMRUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZFWElURUQpCisKK1B5RG9jX1NUUlZBUihvc19XSUZFWElURURfX2RvY19fLAorIldJRkVYSVRFRCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4iKTsKKworI2RlZmluZSBPU19XSUZFWElURURfTUVUSE9EREVGICAgIFwKKyAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZFWElURURfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0lGRVhJVEVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XSUZFWElURUQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkVYSVRFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRkVYSVRFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdFWElUU1RBVFVTKQorCitQeURvY19TVFJWQVIob3NfV0VYSVRTVEFUVVNfX2RvY19fLAorIldFWElUU1RBVFVTKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tIHN0YXR1cy4iKTsKKworI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYgICAgXAorICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XRVhJVFNUQVRVU19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0VYSVRTVEFUVVMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0VYSVRTVEFUVVNfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXRVhJVFNUQVRVUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdURVJNU0lHKQorCitQeURvY19TVFJWQVIob3NfV1RFUk1TSUdfX2RvY19fLAorIldURVJNU0lHKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CisKKyNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGICAgIFwKKyAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1RFUk1TSUdfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV1RFUk1TSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dURVJNU0lHKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1RFUk1TSUciLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dURVJNU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV1RFUk1TSUcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXU1RPUFNJRykKKworUHlEb2NfU1RSVkFSKG9zX1dTVE9QU0lHX19kb2NfXywKKyJXU1RPUFNJRygkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLiIpOworCisjZGVmaW5lIE9TX1dTVE9QU0lHX01FVEhPRERFRiAgICBcCisgICAgeyJXU1RPUFNJRyIsIChQeUNGdW5jdGlvbilvc19XU1RPUFNJRywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dTVE9QU0lHX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dTVE9QU0lHX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XU1RPUFNJRyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldTVE9QU0lHIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XU1RPUFNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdTVE9QU0lHKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKQorCitQeURvY19TVFJWQVIob3NfZnN0YXR2ZnNfX2RvY19fLAorImZzdGF0dmZzKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuXG4iCisiXG4iCisiRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKKworI2RlZmluZSBPU19GU1RBVFZGU19NRVRIT0RERUYgICAgXAorICAgIHsiZnN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXR2ZnMsIE1FVEhfTywgb3NfZnN0YXR2ZnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzdGF0dmZzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzdGF0dmZzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmZzdGF0dmZzIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0dmZzX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfRlNUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKQorCitQeURvY19TVFJWQVIob3Nfc3RhdHZmc19fZG9jX18sCisic3RhdHZmcygkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfU1RBVFZGU19NRVRIT0RERUYgICAgXAorICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdHZmc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhdHZmc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGF0dmZzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXR2ZnMiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GU1RBVFZGUyk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdHZmc19pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfX2dldGRpc2t1c2FnZV9fZG9jX18sCisiX2dldGRpc2t1c2FnZSgkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CisKKyNkZWZpbmUgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2dldGRpc2t1c2FnZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2dldGRpc2t1c2FnZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGRpc2t1c2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGRpc2t1c2FnZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBQeV9VTklDT0RFICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZGlza3VzYWdlX2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZQQVRIQ09ORikKKworUHlEb2NfU1RSVkFSKG9zX2ZwYXRoY29uZl9fZG9jX18sCisiZnBhdGhjb25mKCRtb2R1bGUsIGZkLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4iKTsKKworI2RlZmluZSBPU19GUEFUSENPTkZfTUVUSE9EREVGICAgIFwKKyAgICB7ImZwYXRoY29uZiIsIChQeUNGdW5jdGlvbilvc19mcGF0aGNvbmYsIE1FVEhfVkFSQVJHUywgb3NfZnBhdGhjb25mX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19mcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZwYXRoY29uZihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IG5hbWU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnBhdGhjb25mIiwKKyAgICAgICAgJmZkLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19mcGF0aGNvbmZfaW1wbChtb2R1bGUsIGZkLCBuYW1lKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GUEFUSENPTkYpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisKK1B5RG9jX1NUUlZBUihvc19wYXRoY29uZl9fZG9jX18sCisicGF0aGNvbmYoJG1vZHVsZSwgLywgcGF0aCwgbmFtZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYgICAgXAorICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19wYXRoY29uZl9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3NfcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3BhdGhjb25mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicGF0aGNvbmYiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GUEFUSENPTkYpOworICAgIGludCBuYW1lOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcGF0aGNvbmZfaW1wbChtb2R1bGUsICZwYXRoLCBuYW1lKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BBVEhDT05GKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZTVFIpCisKK1B5RG9jX1NUUlZBUihvc19jb25mc3RyX19kb2NfXywKKyJjb25mc3RyKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBzdHJpbmctdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX0NPTkZTVFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvbmZzdHIiLCAoUHlDRnVuY3Rpb24pb3NfY29uZnN0ciwgTUVUSF9PLCBvc19jb25mc3RyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jb25mc3RyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY29uZnN0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpjb25mc3RyIiwgY29udl9jb25mc3RyX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jb25mc3RyX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZTVFIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTQ09ORikKKworUHlEb2NfU1RSVkFSKG9zX3N5c2NvbmZfX2RvY19fLAorInN5c2NvbmYoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBpbnRlZ2VyLXZhbHVlZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJpYWJsZS4iKTsKKworI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRiAgICBcCisgICAgeyJzeXNjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c2NvbmYsIE1FVEhfTywgb3Nfc3lzY29uZl9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3Nfc3lzY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5c2NvbmYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbmFtZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXNjb25mX2ltcGwobW9kdWxlLCBuYW1lKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNDT05GKSAqLworCitQeURvY19TVFJWQVIob3NfYWJvcnRfX2RvY19fLAorImFib3J0KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuXG4iCisiXG4iCisiVGhpcyBmdW5jdGlvbiBcJ2R1bXBzIGNvcmVcJyBvciBvdGhlcndpc2UgZmFpbHMgaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlXG4iCisib24gdGhlIGhvc3Rpbmcgb3BlcmF0aW5nIHN5c3RlbS4gIFRoaXMgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucy4iKTsKKworI2RlZmluZSBPU19BQk9SVF9NRVRIT0RERUYgICAgXAorICAgIHsiYWJvcnQiLCAoUHlDRnVuY3Rpb24pb3NfYWJvcnQsIE1FVEhfTk9BUkdTLCBvc19hYm9ydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWJvcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Fib3J0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2Fib3J0X2ltcGwobW9kdWxlKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKQorCitQeURvY19TVFJWQVIob3NfZ2V0bG9hZGF2Z19fZG9jX18sCisiZ2V0bG9hZGF2ZygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGF2ZXJhZ2UgcmVjZW50IHN5c3RlbSBsb2FkIGluZm9ybWF0aW9uLlxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiB0aGUgc3lzdGVtIHJ1biBxdWV1ZSBhdmVyYWdlZCBvdmVyXG4iCisidGhlIGxhc3QgMSwgNSwgYW5kIDE1IG1pbnV0ZXMgYXMgYSB0dXBsZSBvZiB0aHJlZSBmbG9hdHMuXG4iCisiUmFpc2VzIE9TRXJyb3IgaWYgdGhlIGxvYWQgYXZlcmFnZSB3YXMgdW5vYnRhaW5hYmxlLiIpOworCisjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGxvYWRhdmciLCAoUHlDRnVuY3Rpb24pb3NfZ2V0bG9hZGF2ZywgTUVUSF9OT0FSR1MsIG9zX2dldGxvYWRhdmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGxvYWRhdmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGxvYWRhdmcoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0bG9hZGF2Z19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUTE9BREFWRykgKi8KKworUHlEb2NfU1RSVkFSKG9zX2RldmljZV9lbmNvZGluZ19fZG9jX18sCisiZGV2aWNlX2VuY29kaW5nKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGVuY29kaW5nIG9mIGEgdGVybWluYWxcJ3MgZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorIlRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHRlcm1pbmFsLlxuIgorIklmIHRoZSBkZXZpY2UgaXMgbm90IGEgdGVybWluYWwsIHJldHVybiBOb25lLiIpOworCisjZGVmaW5lIE9TX0RFVklDRV9FTkNPRElOR19NRVRIT0RERUYgICAgXAorICAgIHsiZGV2aWNlX2VuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKW9zX2RldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2RldmljZV9lbmNvZGluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2RldmljZV9lbmNvZGluZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCBfa2V5d29yZHMsCisgICAgICAgICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFU1VJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHJlc3VpZF9fZG9jX18sCisic2V0cmVzdWlkKCRtb2R1bGUsIHJ1aWQsIGV1aWQsIHN1aWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4iKTsKKworI2RlZmluZSBPU19TRVRSRVNVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHJlc3VpZCIsIChQeUNGdW5jdGlvbilvc19zZXRyZXN1aWQsIE1FVEhfVkFSQVJHUywgb3Nfc2V0cmVzdWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXN1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCBydWlkLCB1aWRfdCBldWlkLCB1aWRfdCBzdWlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc3VpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB1aWRfdCBydWlkOworICAgIHVpZF90IGV1aWQ7CisgICAgdWlkX3Qgc3VpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVzdWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkLCBzdWlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFJFU1VJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRSRVNHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRyZXNnaWRfX2RvY19fLAorInNldHJlc2dpZCgkbW9kdWxlLCByZ2lkLCBlZ2lkLCBzZ2lkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cmVzZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJlc2dpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZXNnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc2dpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQsIGdpZF90IHNnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IHJnaWQ7CisgICAgZ2lkX3QgZWdpZDsKKyAgICBnaWRfdCBzZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzZ2lkIiwKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXNnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVTR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFJFU1VJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHJlc3VpZF9fZG9jX18sCisiZ2V0cmVzdWlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLiIpOworCisjZGVmaW5lIE9TX0dFVFJFU1VJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cmVzdWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHJlc3VpZCwgTUVUSF9OT0FSR1MsIG9zX2dldHJlc3VpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzdWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXN1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0cmVzdWlkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSRVNVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkVTR0lEKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmVzZ2lkX19kb2NfXywKKyJnZXRyZXNnaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworCisjZGVmaW5lIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cmVzZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHJlc2dpZCwgTUVUSF9OT0FSR1MsIG9zX2dldHJlc2dpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXNnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0cmVzZ2lkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSRVNHSUQpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19nZXR4YXR0cl9fZG9jX18sCisiZ2V0eGF0dHIoJG1vZHVsZSwgLywgcGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdmFsdWUgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuIgorIlxuIgorInBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX0dFVFhBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHhhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0eGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CisgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFVTRV9YQVRUUlMpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19zZXR4YXR0cl9fZG9jX18sCisic2V0eGF0dHIoJG1vZHVsZSwgLywgcGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKixcbiIKKyIgICAgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zZXR4YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0eGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnZhbHVlLCBpbnQgZmxhZ3MsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0eGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CisgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKKyAgICBQeV9idWZmZXIgdmFsdWUgPSB7TlVMTCwgTlVMTH07CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgJnZhbHVlLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KKyAgICBpZiAodmFsdWUub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFVTRV9YQVRUUlMpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19yZW1vdmV4YXR0cl9fZG9jX18sCisicmVtb3ZleGF0dHIoJG1vZHVsZSwgLywgcGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgcmVtb3ZleGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmV4YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZleGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbW92ZXhhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAicGF0aCIsIDAsIDEpOworICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZXhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChVU0VfWEFUVFJTKSAqLworCisjaWYgZGVmaW5lZChVU0VfWEFUVFJTKQorCitQeURvY19TVFJWQVIob3NfbGlzdHhhdHRyX19kb2NfXywKKyJsaXN0eGF0dHIoJG1vZHVsZSwgLywgcGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXRoLlxuIgorIlxuIgorInBhdGggbWF5IGJlIGVpdGhlciBOb25lLCBhIHN0cmluZywgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiaWYgcGF0aCBpcyBOb25lLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50IGRpcmVjdG9yeS5cbiIKKyJJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworI2RlZmluZSBPU19MSVNUWEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0eGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3R4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19saXN0eGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3R4YXR0ciIsICJwYXRoIiwgMSwgMSk7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoVVNFX1hBVFRSUykgKi8KKworUHlEb2NfU1RSVkFSKG9zX3VyYW5kb21fX2RvY19fLAorInVyYW5kb20oJG1vZHVsZSwgc2l6ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuIik7CisKKyNkZWZpbmUgT1NfVVJBTkRPTV9NRVRIT0RERUYgICAgXAorICAgIHsidXJhbmRvbSIsIChQeUNGdW5jdGlvbilvc191cmFuZG9tLCBNRVRIX08sIG9zX3VyYW5kb21fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VyYW5kb21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdXJhbmRvbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2NwdV9jb3VudF9fZG9jX18sCisiY3B1X2NvdW50KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLiIpOworCisjZGVmaW5lIE9TX0NQVV9DT1VOVF9NRVRIT0RERUYgICAgXAorICAgIHsiY3B1X2NvdW50IiwgKFB5Q0Z1bmN0aW9uKW9zX2NwdV9jb3VudCwgTUVUSF9OT0FSR1MsIG9zX2NwdV9jb3VudF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY3B1X2NvdW50X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jcHVfY291bnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfY3B1X2NvdW50X2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2dldF9pbmhlcml0YWJsZV9fZG9jX18sCisiZ2V0X2luaGVyaXRhYmxlKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19HRVRfSU5IRVJJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldF9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaW5oZXJpdGFibGUsIE1FVEhfTywgb3NfZ2V0X2luaGVyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2dldF9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRfaW5oZXJpdGFibGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3NldF9pbmhlcml0YWJsZV9fZG9jX18sCisic2V0X2luaGVyaXRhYmxlKCRtb2R1bGUsIGZkLCBpbmhlcml0YWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19TRVRfSU5IRVJJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19zZXRfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgb3Nfc2V0X2luaGVyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBpbmhlcml0YWJsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaW5oZXJpdGFibGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBpbmhlcml0YWJsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0X2luaGVyaXRhYmxlIiwKKyAgICAgICAgJmZkLCAmaW5oZXJpdGFibGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCwgaW5oZXJpdGFibGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfXywKKyJnZXRfaGFuZGxlX2luaGVyaXRhYmxlKCRtb2R1bGUsIGhhbmRsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCB0aGUgY2xvc2Utb24tZXhlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfR0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX08sIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19fLAorInNldF9oYW5kbGVfaW5oZXJpdGFibGUoJG1vZHVsZSwgaGFuZGxlLCBpbmhlcml0YWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGhhbmRsZS4iKTsKKworI2RlZmluZSBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5oZXJpdGFibGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50IGluaGVyaXRhYmxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgInA6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCisgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWZuZGVmIE9TX1RUWU5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RUWU5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NURVJNSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DVEVSTUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NURVJNSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZDSERJUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZDSERJUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GQ0hESVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZDSE1PRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZDSE1PRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GQ0hNT0RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xDSE1PRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MQ0hNT0RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NIRkxBR1NfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NIRkxBR1NfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xDSEZMQUdTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTENIRkxBR1NfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTENIRkxBR1NfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NIUk9PVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NIUk9PVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19DSFJPT1RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZTWU5DX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlNZTkNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRlNZTkNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZTkNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TWU5DX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZTkNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GREFUQVNZTkNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NIT1dOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ0hPV05fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZDSE9XTl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZDSE9XTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GQ0hPV05fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xDSE9XTl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MQ0hPV05fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xJTktfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19MSU5LX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xJTktfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRGVUxMUEFUSE5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19fR0VURlVMTFBBVEhOQU1FX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19HRVRGVUxMUEFUSE5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19JU0RJUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19JU0RJUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19fSVNESVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX05JQ0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19OSUNFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX05JQ0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZU1RFTV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TWVNURU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1VOQU1FX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVU5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVU5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0VYRUNWX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRVhFQ1ZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRVhFQ1ZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0VYRUNWRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0VYRUNWRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19FWEVDVkVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NQQVdOVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NQQVdOVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TUEFXTlZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NQQVdOVkVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TUEFXTlZFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NQQVdOVkVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZPUksxX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRk9SSzFfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRk9SSzFfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZPUktfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GT1JLX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZPUktfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9HRVRTQ0hFRFVMRVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9TRVRTQ0hFRFVMRVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVFBBUkFNX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfR0VUUEFSQU1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUUEFSQU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1NFVFBBUkFNX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9SUl9HRVRfSU5URVJWQUxfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1lJRUxEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfWUlFTERfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfWUlFTERfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1NFVEFGRklOSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVEFGRklOSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfR0VUQUZGSU5JVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUQUZGSU5JVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX09QRU5QVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19PUEVOUFRZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX09QRU5QVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZPUktQVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GT1JLUFRZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZPUktQVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEVHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRFR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEVHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEVVSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRFVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEVVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEdST1VQU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHUk9VUFNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBHUlBfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFBHUlBfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBQSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBQSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVExPR0lOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUTE9HSU5fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9HSU5fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFVJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0tJTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19LSUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0tJTExfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0tJTExQR19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0tJTExQR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19LSUxMUEdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BMT0NLX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUExPQ0tfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUExPQ0tfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFVJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEVVSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRFVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEVVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEVHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRFR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEVHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVVSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUkVVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUkVHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEdJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEdST1VQU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEdST1VQU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRHUk9VUFNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVQzX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVDNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVQ0X01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0FJVDRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVDRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVRJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dBSVRJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQUlUSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVRQSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dBSVRQSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVRfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dBSVRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZTUxJTktfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZTUxJTktfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RJTUVTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVElNRVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVElNRVNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFNJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFNJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRTSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFNJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFNJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRTSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFBHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRQR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFBHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RDR0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1RDR0VUUEdSUF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19UQ0dFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RDU0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1RDU0VUUEdSUF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19UQ1NFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xPQ0tGX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTE9DS0ZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTE9DS0ZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1JFQURWX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUkVBRFZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUkVBRFZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BSRUFEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUFJFQURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUFJFQURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BJUEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QSVBFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BJUEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BJUEUyX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUElQRTJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUElQRTJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dSSVRFVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dSSVRFVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XUklURVZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BXUklURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BXUklURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QV1JJVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01LRklGT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NS0ZJRk9fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01LTk9EX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUtOT0RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUtOT0RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01BSk9SX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUFKT1JfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUFKT1JfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01JTk9SX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUlOT1JfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUlOT1JfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01BS0VERVZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NQUtFREVWX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX01BS0VERVZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GVFJVTkNBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVFJVTkNBVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVFJVTkNBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QT1NJWF9GQUxMT0NBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QT1NJWF9GQURWSVNFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BVVEVOVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BVVEVOVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QVVRFTlZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1VOU0VURU5WX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVU5TRVRFTlZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVU5TRVRFTlZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dDT1JFRFVNUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dDT1JFRFVNUF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQ09SRURVTVBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XSUZDT05USU5VRURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dJRlNUT1BQRURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XSUZFWElURURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dURVJNU0lHX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV1RFUk1TSUdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dTVE9QU0lHX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV1NUT1BTSUdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZTVEFUVkZTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlNUQVRWRlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRlNUQVRWRlNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NUQVRWRlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TVEFUVkZTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NUQVRWRlNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GUEFUSENPTkZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BBVEhDT05GX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUEFUSENPTkZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUEFUSENPTkZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NPTkZTVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DT05GU1RSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NPTkZTVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZU0NPTkZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU0NPTkZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRMT0FEQVZHX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVExPQURBVkdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRVNVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRVNHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFJFU1VJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFJFU1VJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRSRVNVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRSRVNHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUWEFUVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MSVNUWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk1ODI0YzUyZmQwMzQ2NTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlMmU0ZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKQEAgLTAsMCArMSw3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd3VpZF9fZG9jX18sCisiZ2V0cHd1aWQoJG1vZHVsZSwgdWlkb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgdXNlciBJRC5cbiIKKyJcbiIKKyJTZWUgYGhlbHAocHdkKWAgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKworI2RlZmluZSBQV0RfR0VUUFdVSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHB3dWlkIiwgKFB5Q0Z1bmN0aW9uKXB3ZF9nZXRwd3VpZCwgTUVUSF9PLCBwd2RfZ2V0cHd1aWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd25hbV9fZG9jX18sCisiZ2V0cHduYW0oJG1vZHVsZSwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS5cbiIKKyJcbiIKKyJTZWUgYGhlbHAocHdkKWAgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKworI2RlZmluZSBQV0RfR0VUUFdOQU1fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHB3bmFtIiwgKFB5Q0Z1bmN0aW9uKXB3ZF9nZXRwd25hbSwgTUVUSF9PLCBwd2RfZ2V0cHduYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B3ZF9nZXRwd25hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHdkX2dldHB3bmFtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdfKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHB3bmFtIiwgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBwd2RfZ2V0cHduYW1faW1wbChtb2R1bGUsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQV0VOVCkKKworUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd2FsbF9fZG9jX18sCisiZ2V0cHdhbGwoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuXG4iCisiXG4iCisiU2VlIGhlbHAocHdkKSBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHdhbGwiLCAoUHlDRnVuY3Rpb24pcHdkX2dldHB3YWxsLCBNRVRIX05PQVJHUywgcHdkX2dldHB3YWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitwd2RfZ2V0cHdhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B3ZF9nZXRwd2FsbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBwd2RfZ2V0cHdhbGxfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBXRU5UKSAqLworCisjaWZuZGVmIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChQV0RfR0VUUFdBTExfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJlZDBlY2YzNGZkM2Y5OGYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzljNWRiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKQEAgLTAsMCArMSwyODQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9fZG9jX18sCisiUGFyc2UoJHNlbGYsIGRhdGEsIGlzZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQYXJzZSBYTUwgZGF0YS5cbiIKKyJcbiIKKyJgaXNmaW5hbFwnIHNob3VsZCBiZSB0cnVlIGF0IGVuZCBvZiBpbnB1dC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRV9NRVRIT0RERUYgICAgXAorICAgIHsiUGFyc2UiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfUGFyc2UsIE1FVEhfVkFSQVJHUywgcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9QYXJzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGE7CisgICAgaW50IGlzZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLAorICAgICAgICAmZGF0YSwgJmlzZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbChzZWxmLCBkYXRhLCBpc2ZpbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfUGFyc2VGaWxlX19kb2NfXywKKyJQYXJzZUZpbGUoJHNlbGYsIGZpbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQYXJzZSBYTUwgZGF0YSBmcm9tIGZpbGUtbGlrZSBvYmplY3QuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfUEFSU0VGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJQYXJzZUZpbGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfUGFyc2VGaWxlLCBNRVRIX08sIHB5ZXhwYXRfeG1scGFyc2VyX1BhcnNlRmlsZV9fZG9jX199LAorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9fZG9jX18sCisiU2V0QmFzZSgkc2VsZiwgYmFzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYmFzZSBVUkwgZm9yIHRoZSBwYXJzZXIuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQkFTRV9NRVRIT0RERUYgICAgXAorICAgIHsiU2V0QmFzZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlLCBNRVRIX08sIHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqYmFzZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmJhc2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbChzZWxmLCBiYXNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9fZG9jX18sCisiR2V0QmFzZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBiYXNlIFVSTCBzdHJpbmcgZm9yIHRoZSBwYXJzZXIuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfR0VUQkFTRV9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0QmFzZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlLCBNRVRIX05PQVJHUywgcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX0dldEJhc2UoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHB5ZXhwYXRfeG1scGFyc2VyX0dldEJhc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9fZG9jX18sCisiR2V0SW5wdXRDb250ZXh0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bnRyYW5zbGF0ZWQgdGV4dCBvZiB0aGUgaW5wdXQgdGhhdCBjYXVzZWQgdGhlIGN1cnJlbnQgZXZlbnQuXG4iCisiXG4iCisiSWYgdGhlIGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgYSBsYXJnZSBhbW91bnQgb2YgdGV4dCAoc3VjaCBhcyBhIHN0YXJ0IHRhZ1xuIgorImZvciBhbiBlbGVtZW50IHdpdGggbWFueSBhdHRyaWJ1dGVzKSwgbm90IGFsbCBvZiB0aGUgdGV4dCBtYXkgYmUgYXZhaWxhYmxlLiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX0dFVElOUFVUQ09OVEVYVF9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0SW5wdXRDb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dCwgTUVUSF9OT0FSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0X2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0KHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX19kb2NfXywKKyJFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSgkc2VsZiwgY29udGV4dCwgZW5jb2Rpbmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyLiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX0VYVEVSTkFMRU5USVRZUEFSU0VSQ1JFQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTLCBweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNvbnRleHQ7CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ6fHM6RXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUiLAorICAgICAgICAmY29udGV4dCwgJmVuY29kaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX2ltcGwoc2VsZiwgY29udGV4dCwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfX2RvY19fLAorIlNldFBhcmFtRW50aXR5UGFyc2luZygkc2VsZiwgZmxhZywgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnRyb2xzIHBhcnNpbmcgb2YgcGFyYW1ldGVyIGVudGl0aWVzIChpbmNsdWRpbmcgdGhlIGV4dGVybmFsIERURCBzdWJzZXQpLlxuIgorIlxuIgorIlBvc3NpYmxlIGZsYWcgdmFsdWVzIGFyZSBYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfTkVWRVIsXG4iCisiWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX1VOTEVTU19TVEFOREFMT05FIGFuZFxuIgorIlhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnXG4iCisid2FzIHN1Y2Nlc3NmdWwuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfU0VUUEFSQU1FTlRJVFlQQVJTSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nLCBNRVRIX08sIHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIGludCBmbGFnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbChzZWxmLCBmbGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgKFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDE5NTA1KQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9fZG9jX18sCisiVXNlRm9yZWlnbkRURCgkc2VsZiwgZmxhZz1UcnVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBwcm92aWRlIGFuIGFydGlmaWNpYWwgZXh0ZXJuYWwgc3Vic2V0IGlmIG9uZSBpcyBub3Qgc3BlY2lmaWVkIGFzIHBhcnQgb2YgdGhlIGRvY3VtZW50IGluc3RhbmNlLlxuIgorIlxuIgorIlRoaXMgcmVhZGlseSBhbGxvd3MgdGhlIHVzZSBvZiBhIFwnZGVmYXVsdFwnIGRvY3VtZW50IHR5cGUgY29udHJvbGxlZCBieSB0aGVcbiIKKyJhcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGwgZ2V0dGluZyB0aGUgYWR2YW50YWdlIG9mIHByb3ZpZGluZyBkb2N1bWVudCB0eXBlXG4iCisiaW5mb3JtYXRpb24gdG8gdGhlIHBhcnNlci4gXCdmbGFnXCcgZGVmYXVsdHMgdG8gVHJ1ZSBpZiBub3QgcHJvdmlkZWQuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYgICAgXAorICAgIHsiVXNlRm9yZWlnbkRURCIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFRELCBNRVRIX1ZBUkFSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWcgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwKKyAgICAgICAgJmZsYWcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHNlbGYsIGZsYWcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUpICovCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX19kb2NfXywKKyJfX2Rpcl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9fX0RJUl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2Rpcl9fIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX19fZGlyX18sIE1FVEhfTk9BUkdTLCBweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfX19kaXJfXyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gcHlleHBhdF94bWxwYXJzZXJfX19kaXJfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19fLAorIlBhcnNlckNyZWF0ZSgkbW9kdWxlLCAvLCBlbmNvZGluZz1Ob25lLCBuYW1lc3BhY2Vfc2VwYXJhdG9yPU5vbmUsXG4iCisiICAgICAgICAgICAgIGludGVybj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LiIpOworCisjZGVmaW5lIFBZRVhQQVRfUEFSU0VSQ1JFQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciwgUHlPYmplY3QgKmludGVybik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X1BhcnNlckNyZWF0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLCAiaW50ZXJuIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHp6TzpQYXJzZXJDcmVhdGUiLCBfa2V5d29yZHMsCisgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChtb2R1bGUsIGVuY29kaW5nLCBuYW1lc3BhY2Vfc2VwYXJhdG9yLCBpbnRlcm4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X0Vycm9yU3RyaW5nX19kb2NfXywKKyJFcnJvclN0cmluZygkbW9kdWxlLCBjb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBzdHJpbmcgZXJyb3IgZm9yIGdpdmVuIG51bWJlci4iKTsKKworI2RlZmluZSBQWUVYUEFUX0VSUk9SU1RSSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJFcnJvclN0cmluZyIsIChQeUNGdW5jdGlvbilweWV4cGF0X0Vycm9yU3RyaW5nLCBNRVRIX08sIHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsb25nIGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF9FcnJvclN0cmluZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGxvbmcgY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChtb2R1bGUsIGNvZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZm5kZWYgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY0ZDk5Yzk3MDJkOGE2YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhODY1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaApAQCAtMCwwICsxLDk1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoU0hBMVR5cGVfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIFNIQTFUWVBFX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pU0hBMVR5cGVfY29weSwgTUVUSF9OT0FSR1MsIFNIQTFUeXBlX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2NvcHlfaW1wbChTSEExb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2NvcHkoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMVR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMVR5cGVfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBTSEExVFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEExVHlwZV9kaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEExVHlwZV9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2RpZ2VzdF9pbXBsKFNIQTFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTFUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMVR5cGVfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgU0hBMVRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBMVR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBMVR5cGVfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEExVHlwZV9oZXhkaWdlc3RfaW1wbChTSEExb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2hleGRpZ2VzdChTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEExVHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKFNIQTFUeXBlX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgU0hBMVRZUEVfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pU0hBMVR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTFUeXBlX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTFfc2hhMV9fZG9jX18sCisic2hhMSgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBMSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEExX1NIQTFfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYTEiLCAoUHlDRnVuY3Rpb24pX3NoYTFfc2hhMSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGExX3NoYTFfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGExX3NoYTFfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGExX3NoYTEoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTEiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTFfc2hhMV9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlMTkxMDJmMzEyMDQ5MGEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmZTE4OAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBTSEEyNTZUWVBFX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pU0hBMjU2VHlwZV9jb3B5LCBNRVRIX05PQVJHUywgU0hBMjU2VHlwZV9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2NvcHlfaW1wbChTSEFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMjU2VHlwZV9jb3B5KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMjU2VHlwZV9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgU0hBMjU2VFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTI1NlR5cGVfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTI1NlR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIFNIQTI1NlRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBMjU2VHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEEyNTZUeXBlX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMjU2VHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMjU2VHlwZV9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEEyNTZUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMjU2VHlwZV91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIFNIQTI1NlRZUEVfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pU0hBMjU2VHlwZV91cGRhdGUsIE1FVEhfTywgU0hBMjU2VHlwZV91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zaGEyNTZfc2hhMjU2X19kb2NfXywKKyJzaGEyNTYoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYgICAgXAorICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjU2LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEyNTZfc2hhMjU2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhMjU2X3NoYTI1NihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjU2IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zaGEyNTZfc2hhMjU2X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc2hhMjU2X3NoYTIyNF9fZG9jX18sCisic2hhMjI0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhMjU2X3NoYTIyNF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTI1Nl9zaGEyMjQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTIyNCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTIyNF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1NGNlZGYzYjYzMmM3YjIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMwODczOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKQEAgLTAsMCArMSwxNzEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX2NvcHksIE1FVEhfTk9BUkdTLCBTSEE1MTJUeXBlX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfY29weV9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEE1MTJUeXBlX2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEE1MTJUeXBlX2NvcHlfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTUxMlR5cGVfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEE1MTJUeXBlX2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTUxMlR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBNTEyVHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfaGV4ZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfaGV4ZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKF9zaGE1MTJfc2hhNTEyX19kb2NfXywKKyJzaGE1MTIoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQS01MTIgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYgICAgXAorICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhNTEyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTUxMl9zaGE1MTJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGE1MTJfc2hhNTEyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhNTEyX3NoYTUxMihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhNTEyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhNTEyX2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoX3NoYTUxMl9zaGEzODRfX2RvY19fLAorInNoYTM4NCgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRiAgICBcCisgICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGEzODQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTUxMl9zaGEzODRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGE1MTJfc2hhMzg0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEzODQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGEzODRfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRgorICAgICNkZWZpbmUgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjN2QzODU3MzFmZWU3YzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMwN2VmMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKQEAgLTAsMCArMSw0MzIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKEhBVkVfQUxBUk0pCisKK1B5RG9jX1NUUlZBUihzaWduYWxfYWxhcm1fX2RvY19fLAorImFsYXJtKCRtb2R1bGUsIHNlY29uZHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcnJhbmdlIGZvciBTSUdBTFJNIHRvIGFycml2ZSBhZnRlciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMuIik7CisKKyNkZWZpbmUgU0lHTkFMX0FMQVJNX01FVEhPRERFRiAgICBcCisgICAgeyJhbGFybSIsIChQeUNGdW5jdGlvbilzaWduYWxfYWxhcm0sIE1FVEhfTywgc2lnbmFsX2FsYXJtX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitzaWduYWxfYWxhcm1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2Vjb25kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfYWxhcm0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc2Vjb25kczsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6YWxhcm0iLCAmc2Vjb25kcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2FsYXJtX2ltcGwobW9kdWxlLCBzZWNvbmRzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9BTEFSTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QQVVTRSkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wYXVzZV9fZG9jX18sCisicGF1c2UoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZlcy4iKTsKKworI2RlZmluZSBTSUdOQUxfUEFVU0VfTUVUSE9EREVGICAgIFwKKyAgICB7InBhdXNlIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wYXVzZSwgTUVUSF9OT0FSR1MsIHNpZ25hbF9wYXVzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3BhdXNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcGF1c2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gc2lnbmFsX3BhdXNlX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QQVVTRSkgKi8KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWduYWxfX2RvY19fLAorInNpZ25hbCgkbW9kdWxlLCBzaWduYWxudW0sIGhhbmRsZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC5cbiIKKyJcbiIKKyJUaGUgYWN0aW9uIGNhbiBiZSBTSUdfREZMLCBTSUdfSUdOLCBvciBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QuXG4iCisiVGhlIHByZXZpb3VzIGFjdGlvbiBpcyByZXR1cm5lZC4gIFNlZSBnZXRzaWduYWwoKSBmb3IgcG9zc2libGUgcmV0dXJuIHZhbHVlcy5cbiIKKyJcbiIKKyIqKiogSU1QT1JUQU5UIE5PVElDRSAqKipcbiIKKyJBIHNpZ25hbCBoYW5kbGVyIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6XG4iCisidGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHTkFMX01FVEhPRERFRiAgICBcCisgICAgeyJzaWduYWwiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ25hbCwgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnbmFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnbmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHNpZ25hbG51bSwgUHlPYmplY3QgKmhhbmRsZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ25hbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc2lnbmFsbnVtOworICAgIFB5T2JqZWN0ICpoYW5kbGVyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpzaWduYWwiLAorICAgICAgICAmc2lnbmFsbnVtLCAmaGFuZGxlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lnbmFsX2ltcGwobW9kdWxlLCBzaWduYWxudW0sIGhhbmRsZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfZ2V0c2lnbmFsX19kb2NfXywKKyJnZXRzaWduYWwoJG1vZHVsZSwgc2lnbmFsbnVtLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZTpcbiIKKyIgIFNJR19JR04gLS0gaWYgdGhlIHNpZ25hbCBpcyBiZWluZyBpZ25vcmVkXG4iCisiICBTSUdfREZMIC0tIGlmIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIHNpZ25hbCBpcyBpbiBlZmZlY3RcbiIKKyIgIE5vbmUgICAgLS0gaWYgYW4gdW5rbm93biBoYW5kbGVyIGlzIGluIGVmZmVjdFxuIgorIiAgYW55dGhpbmcgZWxzZSAtLSB0aGUgY2FsbGFibGUgUHl0aG9uIG9iamVjdCB1c2VkIGFzIGEgaGFuZGxlciIpOworCisjZGVmaW5lIFNJR05BTF9HRVRTSUdOQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNpZ25hbCIsIChQeUNGdW5jdGlvbilzaWduYWxfZ2V0c2lnbmFsLCBNRVRIX08sIHNpZ25hbF9nZXRzaWduYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9nZXRzaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9nZXRzaWduYWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc2lnbmFsbnVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldHNpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NJR0lOVEVSUlVQVCkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWdpbnRlcnJ1cHRfX2RvY19fLAorInNpZ2ludGVycnVwdCgkbW9kdWxlLCBzaWduYWxudW0sIGZsYWcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3lzdGVtIGNhbGwgcmVzdGFydCBiZWhhdmlvdXIuXG4iCisiXG4iCisiSWYgZmxhZyBpcyBGYWxzZSwgc3lzdGVtIGNhbGxzIHdpbGwgYmUgcmVzdGFydGVkIHdoZW4gaW50ZXJydXB0ZWQgYnlcbiIKKyJzaWduYWwgc2lnLCBlbHNlIHN5c3RlbSBjYWxscyB3aWxsIGJlIGludGVycnVwdGVkLiIpOworCisjZGVmaW5lIFNJR05BTF9TSUdJTlRFUlJVUFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ2ludGVycnVwdCIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnaW50ZXJydXB0LCBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWdpbnRlcnJ1cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBpbnQgZmxhZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnaW50ZXJydXB0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzaWduYWxudW07CisgICAgaW50IGZsYWc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNpZ2ludGVycnVwdCIsCisgICAgICAgICZzaWduYWxudW0sICZmbGFnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgZmxhZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdJTlRFUlJVUFQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUSVRJTUVSKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NldGl0aW1lcl9fZG9jX18sCisic2V0aXRpbWVyKCRtb2R1bGUsIHdoaWNoLCBzZWNvbmRzLCBpbnRlcnZhbD0wLjAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXRzIGdpdmVuIGl0aW1lciAob25lIG9mIElUSU1FUl9SRUFMLCBJVElNRVJfVklSVFVBTCBvciBJVElNRVJfUFJPRikuXG4iCisiXG4iCisiVGhlIHRpbWVyIHdpbGwgZmlyZSBhZnRlciB2YWx1ZSBzZWNvbmRzIGFuZCBhZnRlciB0aGF0IGV2ZXJ5IGludGVydmFsIHNlY29uZHMuXG4iCisiVGhlIGl0aW1lciBjYW4gYmUgY2xlYXJlZCBieSBzZXR0aW5nIHNlY29uZHMgdG8gemVyby5cbiIKKyJcbiIKKyJSZXR1cm5zIG9sZCB2YWx1ZXMgYXMgYSB0dXBsZTogKGRlbGF5LCBpbnRlcnZhbCkuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYgICAgXAorICAgIHsic2V0aXRpbWVyIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zZXRpdGltZXIsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NldGl0aW1lcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NldGl0aW1lcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgZG91YmxlIHNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGludGVydmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zZXRpdGltZXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHdoaWNoOworICAgIGRvdWJsZSBzZWNvbmRzOworICAgIGRvdWJsZSBpbnRlcnZhbCA9IDAuMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWR8ZDpzZXRpdGltZXIiLAorICAgICAgICAmd2hpY2gsICZzZWNvbmRzLCAmaW50ZXJ2YWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NldGl0aW1lcl9pbXBsKG1vZHVsZSwgd2hpY2gsIHNlY29uZHMsIGludGVydmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVElUSU1FUikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRJVElNRVIpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfZ2V0aXRpbWVyX19kb2NfXywKKyJnZXRpdGltZXIoJG1vZHVsZSwgd2hpY2gsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLiIpOworCisjZGVmaW5lIFNJR05BTF9HRVRJVElNRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGl0aW1lciIsIChQeUNGdW5jdGlvbilzaWduYWxfZ2V0aXRpbWVyLCBNRVRIX08sIHNpZ25hbF9nZXRpdGltZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9nZXRpdGltZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldGl0aW1lcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB3aGljaDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRpdGltZXIiLCAmd2hpY2gpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldGl0aW1lcl9pbXBsKG1vZHVsZSwgd2hpY2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUSVRJTUVSKSAqLworCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfX2RvY19fLAorInB0aHJlYWRfc2lnbWFzaygkbW9kdWxlLCBob3csIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYgICAgXAorICAgIHsicHRocmVhZF9zaWdtYXNrIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX3NpZ21hc2ssIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfc2lnbWFza19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBob3csIFB5T2JqZWN0ICptYXNrKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX3NpZ21hc2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGhvdzsKKyAgICBQeU9iamVjdCAqbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwKKyAgICAgICAgJmhvdywgJm1hc2spKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKG1vZHVsZSwgaG93LCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TSUdQRU5ESU5HKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3BlbmRpbmdfX2RvY19fLAorInNpZ3BlbmRpbmcoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4YW1pbmUgcGVuZGluZyBzaWduYWxzLlxuIgorIlxuIgorIlJldHVybnMgYSBzZXQgb2Ygc2lnbmFsIG51bWJlcnMgdGhhdCBhcmUgcGVuZGluZyBmb3IgZGVsaXZlcnkgdG9cbiIKKyJ0aGUgY2FsbGluZyB0aHJlYWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1BFTkRJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ3BlbmRpbmciLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3BlbmRpbmcsIE1FVEhfTk9BUkdTLCBzaWduYWxfc2lncGVuZGluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdwZW5kaW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHNpZ25hbF9zaWdwZW5kaW5nX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdQRU5ESU5HKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVQpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdF9fZG9jX18sCisic2lnd2FpdCgkbW9kdWxlLCBzaWdzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBhIHNpZ25hbC5cbiIKKyJcbiIKKyJTdXNwZW5kIGV4ZWN1dGlvbiBvZiB0aGUgY2FsbGluZyB0aHJlYWQgdW50aWwgdGhlIGRlbGl2ZXJ5IG9mIG9uZSBvZiB0aGVcbiIKKyJzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCBzaWdzZXQuICBUaGUgZnVuY3Rpb24gYWNjZXB0cyB0aGUgc2lnbmFsXG4iCisiYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1dBSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ3dhaXQiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXQsIE1FVEhfTywgc2lnbmFsX3NpZ3dhaXRfX2RvY19ffSwKKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdXQUlUKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRpbmZvX19kb2NfXywKKyJzaWd3YWl0aW5mbygkbW9kdWxlLCBzaWdzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IHN5bmNocm9ub3VzbHkgdW50aWwgb25lIG9mIHRoZSBzaWduYWxzIGluICpzaWdzZXQqIGlzIGRlbGl2ZXJlZC5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLiIpOworCisjZGVmaW5lIFNJR05BTF9TSUdXQUlUSU5GT19NRVRIT0RERUYgICAgXAorICAgIHsic2lnd2FpdGluZm8iLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXRpbmZvLCBNRVRIX08sIHNpZ25hbF9zaWd3YWl0aW5mb19fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd0aW1lZHdhaXRfX2RvY19fLAorInNpZ3RpbWVkd2FpdCgkbW9kdWxlLCBzaWdzZXQsIHRpbWVvdXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dC5cbiIKKyJcbiIKKyJUaGUgdGltZW91dCBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcywgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFsbG93ZWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYgICAgXAorICAgIHsic2lndGltZWR3YWl0IiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd0aW1lZHdhaXQsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3RpbWVkd2FpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzaWdzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd0aW1lZHdhaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpZ3NldDsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmo7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzaWd0aW1lZHdhaXQiLAorICAgICAgICAyLCAyLAorICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKG1vZHVsZSwgc2lnc2V0LCB0aW1lb3V0X29iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9raWxsX19kb2NfXywKKyJwdGhyZWFkX2tpbGwoJG1vZHVsZSwgdGhyZWFkX2lkLCBzaWduYWxudW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLiIpOworCisjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGICAgIFwKKyAgICB7InB0aHJlYWRfa2lsbCIsIChQeUNGdW5jdGlvbilzaWduYWxfcHRocmVhZF9raWxsLCBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9wdGhyZWFkX2tpbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX2tpbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsb25nIHRocmVhZF9pZCwgaW50IHNpZ25hbG51bSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9raWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGxvbmcgdGhyZWFkX2lkOworICAgIGludCBzaWduYWxudW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsCisgICAgICAgICZ0aHJlYWRfaWQsICZzaWduYWxudW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKG1vZHVsZSwgdGhyZWFkX2lkLCBzaWduYWxudW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkpICovCisKKyNpZm5kZWYgU0lHTkFMX0FMQVJNX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX0FMQVJNX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9BTEFSTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1BBVVNFX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1BBVVNFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9QQVVTRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdJTlRFUlJVUFRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TRVRJVElNRVJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9HRVRJVElNRVJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX1NJR01BU0tfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1BFTkRJTkdfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1dBSVRfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9TSUdXQUlUSU5GT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdUSU1FRFdBSVRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjk5Mjc4YzE2YzQwZWE0MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZDE4ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaApAQCAtMCwwICsxLDY4IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFNQTkFNKQorCitQeURvY19TVFJWQVIoc3B3ZF9nZXRzcG5hbV9fZG9jX18sCisiZ2V0c3BuYW0oJG1vZHVsZSwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuXG4iCisiXG4iCisiU2VlIGBoZWxwKHNwd2QpYCBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKworI2RlZmluZSBTUFdEX0dFVFNQTkFNX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRzcG5hbSIsIChQeUNGdW5jdGlvbilzcHdkX2dldHNwbmFtLCBNRVRIX08sIHNwd2RfZ2V0c3BuYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BuYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ18pCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHNwd2RfZ2V0c3BuYW1faW1wbChtb2R1bGUsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRTUE5BTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRTUEVOVCkKKworUHlEb2NfU1RSVkFSKHNwd2RfZ2V0c3BhbGxfX2RvY19fLAorImdldHNwYWxsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cbiIKKyJcbiIKKyJTZWUgYGhlbHAoc3B3ZClgIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNwYWxsIiwgKFB5Q0Z1bmN0aW9uKXNwd2RfZ2V0c3BhbGwsIE1FVEhfTk9BUkdTLCBzcHdkX2dldHNwYWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzcHdkX2dldHNwYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzcHdkX2dldHNwYWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHNwd2RfZ2V0c3BhbGxfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFNQRU5UKSAqLworCisjaWZuZGVmIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGCisgICAgI2RlZmluZSBTUFdEX0dFVFNQTkFNX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BBTExfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjMTc4ODMwNDEzZjc3NjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjBjMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKQEAgLTAsMCArMSwzNjggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9fZG9jX18sCisiZGVjaW1hbCgkc2VsZiwgY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGVjaW1hbCB2YWx1ZS5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLFxuIgorIlZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9ERUNJTUFMX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNpbWFsIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkZWNpbWFsIiwKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGlnaXRfX2RvY19fLAorImRpZ2l0KCRzZWxmLCBjaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkaWdpdCB2YWx1ZS5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLlxuIgorIklmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbixcbiIKKyJWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfRElHSVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2l0IiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9kaWdpdCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGlnaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGlnaXQiLAorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19fZG9jX18sCisibnVtZXJpYygkc2VsZiwgY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgbnVtZXJpYyB2YWx1ZS5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGZsb2F0LlxuIgorIklmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbixcbiIKKyJWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTlVNRVJJQ19NRVRIT0RERUYgICAgXAorICAgIHsibnVtZXJpYyIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfbnVtZXJpYywgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX251bWVyaWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bnVtZXJpYyIsCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X19kb2NfXywKKyJjYXRlZ29yeSgkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0NBVEVHT1JZX01FVEhPRERFRiAgICBcCisgICAgeyJjYXRlZ29yeSIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnksIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoc2VsZiwgY2hyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfX2RvY19fLAorImJpZGlyZWN0aW9uYWwoJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGJpZGlyZWN0aW9uYWwgY2xhc3MgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLlxuIgorIlxuIgorIklmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9CSURJUkVDVElPTkFMX01FVEhPRERFRiAgICBcCisgICAgeyJiaWRpcmVjdGlvbmFsIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsLCBNRVRIX08sIHVuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfaW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX19kb2NfXywKKyJjb21iaW5pbmcoJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgaW50ZWdlci5cbiIKKyJcbiIKKyJSZXR1cm5zIDAgaWYgbm8gY29tYmluaW5nIGNsYXNzIGlzIGRlZmluZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0NPTUJJTklOR19NRVRIT0RERUYgICAgXAorICAgIHsiY29tYmluaW5nIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmcsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19fZG9jX199LAorCitzdGF0aWMgaW50Cit1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChzZWxmLCBjaHIpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX19kb2NfXywKKyJtaXJyb3JlZCgkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbWlycm9yZWQgcHJvcGVydHkgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgaW50ZWdlci5cbiIKKyJcbiIKKyJSZXR1cm5zIDEgaWYgdGhlIGNoYXJhY3RlciBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIGEgXCJtaXJyb3JlZFwiXG4iCisiY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX01JUlJPUkVEX01FVEhPRERFRiAgICBcCisgICAgeyJtaXJyb3JlZCIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWQsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9taXJyb3JlZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9taXJyb3JlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoc2VsZiwgY2hyKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX19kb2NfXywKKyJlYXN0X2FzaWFuX3dpZHRoKCRzZWxmLCBjaHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBlYXN0IGFzaWFuIHdpZHRoIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfRUFTVF9BU0lBTl9XSURUSF9NRVRIT0RERUYgICAgXAorICAgIHsiZWFzdF9hc2lhbl93aWR0aCIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aCwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoc2VsZiwgY2hyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25fX2RvY19fLAorImRlY29tcG9zaXRpb24oJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLlxuIgorIlxuIgorIkFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiBjYXNlIG5vIHN1Y2ggbWFwcGluZyBpcyBkZWZpbmVkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9ERUNPTVBPU0lUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNvbXBvc2l0aW9uIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uLCBNRVRIX08sIHVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZGVjb21wb3NpdGlvbiIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25faW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX19kb2NfXywKKyJub3JtYWxpemUoJHNlbGYsIGZvcm0sIHVuaXN0ciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbm9ybWFsIGZvcm0gXCdmb3JtXCcgZm9yIHRoZSBVbmljb2RlIHN0cmluZyB1bmlzdHIuXG4iCisiXG4iCisiVmFsaWQgdmFsdWVzIGZvciBmb3JtIGFyZSBcJ05GQ1wnLCBcJ05GS0NcJywgXCdORkRcJywgYW5kIFwnTkZLRFwnLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9OT1JNQUxJWkVfTUVUSE9EREVGICAgIFwKKyAgICB7Im5vcm1hbGl6ZSIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfaW1wbChQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZm9ybTsKKyAgICBQeU9iamVjdCAqaW5wdXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPITpub3JtYWxpemUiLAorICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKHNlbGYsIGZvcm0sIGlucHV0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX25hbWVfX2RvY19fLAorIm5hbWUoJHNlbGYsIGNociwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbmFtZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBhIHN0cmluZy5cbiIKKyJcbiIKKyJJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sXG4iCisiVmFsdWVFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX05BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Im5hbWUiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX25hbWUsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX25hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9uYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm5hbWUiLAorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbmFtZV9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9sb29rdXBfX2RvY19fLAorImxvb2t1cCgkc2VsZiwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkxvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuXG4iCisiXG4iCisiSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZVxuIgorImNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCBLZXlFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0xPT0tVUF9NRVRIT0RERUYgICAgXAorICAgIHsibG9va3VwIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9sb29rdXAsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2xvb2t1cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKHNlbGYsIG5hbWUsIG5hbWVfbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmOGRhMzNjNmJjNmVmYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAppbmRleCBmNTRhODA1Li4zNTY2MWE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaApAQCAtMjYsOCArMjYsNyBAQAogICAgIFB5X2J1ZmZlciBieXRlcyA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfGk6Y29tcHJlc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpjb21wcmVzcyIsCiAgICAgICAgICZieXRlcywgJmxldmVsKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NfaW1wbChtb2R1bGUsICZieXRlcywgbGV2ZWwpOwpAQCAtNTcsNyArNTYsOCBAQAogICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywgdW5zaWduZWQgaW50IGJ1ZnNpemUpOworemxpYl9kZWNvbXByZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmc2l6ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC02Nyw4ICs2Nyw3IEBACiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIHVuc2lnbmVkIGludCBidWZzaXplID0gREVGX0JVRl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxpTyY6ZGVjb21wcmVzcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpTyY6ZGVjb21wcmVzcyIsCiAgICAgICAgICZkYXRhLCAmd2JpdHMsIHVpbnRfY29udmVydGVyLCAmYnVmc2l6ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NfaW1wbChtb2R1bGUsICZkYXRhLCB3Yml0cywgYnVmc2l6ZSk7CkBAIC0xMTEsNyArMTEwLDggQEAKICAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB6bGliX2NvbXByZXNzb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGxldmVsLCBpbnQgbWV0aG9kLCBpbnQgd2JpdHMsIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKK3psaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2NvbXByZXNzb2JqKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMTI1LDggKzEyNSw3IEBACiAgICAgaW50IHN0cmF0ZWd5ID0gWl9ERUZBVUxUX1NUUkFURUdZOwogICAgIFB5X2J1ZmZlciB6ZGljdCA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpaWlpaXkqOmNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpaWlpaXkqOmNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAogICAgICAgICAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzb2JqX2ltcGwobW9kdWxlLCBsZXZlbCwgbWV0aG9kLCB3Yml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCAmemRpY3QpOwpAQCAtMTY1LDggKzE2NCw3IEBACiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5T2JqZWN0ICp6ZGljdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKICAgICAgICAgJndiaXRzLCAmemRpY3QpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzb2JqX2ltcGwobW9kdWxlLCB3Yml0cywgemRpY3QpOwpAQCAtMTg5LDIwICsxODcsMTggQEAKICJDYWxsIHRoZSBmbHVzaCgpIG1ldGhvZCB0byBjbGVhciB0aGVzZSBidWZmZXJzLiIpOwogCiAjZGVmaW5lIFpMSUJfQ09NUFJFU1NfQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfQ29tcHJlc3NfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9Db21wcmVzc19jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9Db21wcmVzc19jb21wcmVzcywgTUVUSF9PLCB6bGliX0NvbXByZXNzX2NvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0NvbXByZXNzX2NvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfQ29tcHJlc3NfY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit6bGliX0NvbXByZXNzX2NvbXByZXNzKGNvbXBvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0NvbXByZXNzX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC0yMzUsNyArMjMxLDggQEAKICAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLCB1bnNpZ25lZCBpbnQgbWF4X2xlbmd0aCk7Cit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNDQsOCArMjQxLDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICB1bnNpZ25lZCBpbnQgbWF4X2xlbmd0aCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfE8mOmRlY29tcHJlc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8TyY6ZGVjb21wcmVzcyIsCiAgICAgICAgICZkYXRhLCB1aW50X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CkBAIC0yODIsOCArMjc4LDcgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZSA9IFpfRklOSVNIOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ8aTpmbHVzaCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpmbHVzaCIsCiAgICAgICAgICZtb2RlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBtb2RlKTsKQEAgLTMxNCwxMCArMzA5LDYgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9aTElCX0NPUFkpICovCiAKLSNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCi0KICNpZiBkZWZpbmVkKEhBVkVfWkxJQl9DT1BZKQogCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2NvcHlfX2RvY19fLApAQCAtMzQwLDEwICszMzEsNiBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX1pMSUJfQ09QWSkgKi8KIAotI2lmbmRlZiBaTElCX0RFQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KLQogUHlEb2NfU1RSVkFSKHpsaWJfRGVjb21wcmVzc19mbHVzaF9fZG9jX18sCiAiZmx1c2goJHNlbGYsIGxlbmd0aD16bGliLkRFRl9CVUZfU0laRSwgLylcbiIKICItLVxuIgpAQCAtMzY1LDggKzM1Miw3IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IERFRl9CVUZfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAifE8mOmZsdXNoIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpmbHVzaCIsCiAgICAgICAgIHVpbnRfY29udmVydGVyLCAmbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIGxlbmd0aCk7CkBAIC0zOTksOCArMzg1LDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmFkbGVyMzIiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STphZGxlcjMyIiwKICAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2FkbGVyMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CkBAIC00MzcsOCArNDIyLDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmNyYzMyIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAogICAgICAgICAmZGF0YSwgJnZhbHVlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CkBAIC00NTAsNCArNDM0LDggQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmM5NDczNzIxY2E3Yzk2MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisKKyNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgorICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTZlZDExNDdiYmJiNDc4OCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKaW5kZXggYjM0MWMzNC4uN2Y2YzJjOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwpAQCAtOCw2ICs4LDQwIEBACiAgICBmbG9hdC5oLiAgV2UgYXNzdW1lIHRoYXQgRkxUX1JBRElYIGlzIGVpdGhlciAyIG9yIDE2LiAqLwogI2luY2x1ZGUgPGZsb2F0Lmg+CiAKKyNpbmNsdWRlICJjbGluaWMvY21hdGhtb2R1bGUuYy5oIgorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIGNtYXRoCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zMDhkNjgzOWY0YTQ2MzMzXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIFB5X2NvbXBsZXhfcHJvdGVjdGVkX2NvbnZlcnRlcihQeV9jb21wbGV4X2NvbnZlcnRlcik6CisgICAgZGVmIG1vZGlmeShzZWxmKToKKyAgICAgICAgcmV0dXJuICdlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOycKKworCitjbGFzcyBQeV9jb21wbGV4X3Byb3RlY3RlZF9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAiUHlfY29tcGxleCIKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoIiIiCitQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKK2lmIChlcnJubyA9PSBFRE9NKSB7eworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICBnb3RvIGV4aXQ7Cit9fQorZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7eworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgIGdvdG8gZXhpdDsKK319CitlbHNlIHt7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKK319CisiIiIuc3RyaXAoKSkKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIzMTAxOTAzOWE2ZmJiOWFdKi8KKwogI2lmIChGTFRfUkFESVggIT0gMiAmJiBGTFRfUkFESVggIT0gMTYpCiAjZXJyb3IgIk1vZHVsZXMvY21hdGhtb2R1bGUuYyBleHBlY3RzIEZMVF9SQURJWCB0byBiZSAyIG9yIDE2IgogI2VuZGlmCkBAIC00OCwxMiArODIsMTIgQEAKICNkZWZpbmUgQ01fU0NBTEVfRE9XTiAoLShDTV9TQ0FMRV9VUCsxKS8yKQogCiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIFB5X2NvbXBsZXggY19hc2luaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfYXRhbmgoUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX2Nvc2goUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX3NpbmgoUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX3NxcnQoUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX3RhbmgoUHlfY29tcGxleCk7CitzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfYXRhbmhfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2Nvc2hfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX3NpbmhfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX3NxcnRfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKIHN0YXRpYyBQeU9iamVjdCAqIG1hdGhfZXJyb3Iodm9pZCk7CiAKIC8qIENvZGUgdG8gZGVhbCB3aXRoIHNwZWNpYWwgdmFsdWVzIChpbmZpbml0aWVzLCBOYU5zLCBldGMuKS4gKi8KQEAgLTEyMyw4ICsxNTcsMTggQEAKIAogc3RhdGljIFB5X2NvbXBsZXggYWNvc19zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguYWNvcyAtPiBQeV9jb21wbGV4X3Byb3RlY3RlZAorCisgICAgejogUHlfY29tcGxleF9wcm90ZWN0ZWQKKyAgICAvCisKK1JldHVybiB0aGUgYXJjIGNvc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19hY29zKFB5X2NvbXBsZXggeikKK2NtYXRoX2Fjb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2MxZGQyMWZmODE4ZGI2YiBpbnB1dD1iZDZjYmQ3OGFlODUxOTI3XSovCiB7CiAgICAgUHlfY29tcGxleCBzMSwgczIsIHI7CiAKQEAgLTE0NSwxMCArMTg5LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgczEucmVhbCA9IDEuLXoucmVhbDsKICAgICAgICAgczEuaW1hZyA9IC16LmltYWc7Ci0gICAgICAgIHMxID0gY19zcXJ0KHMxKTsKKyAgICAgICAgczEgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCBzMSk7CiAgICAgICAgIHMyLnJlYWwgPSAxLit6LnJlYWw7CiAgICAgICAgIHMyLmltYWcgPSB6LmltYWc7Ci0gICAgICAgIHMyID0gY19zcXJ0KHMyKTsKKyAgICAgICAgczIgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCBzMik7CiAgICAgICAgIHIucmVhbCA9IDIuKmF0YW4yKHMxLnJlYWwsIHMyLnJlYWwpOwogICAgICAgICByLmltYWcgPSBtX2FzaW5oKHMyLnJlYWwqczEuaW1hZyAtIHMyLmltYWcqczEucmVhbCk7CiAgICAgfQpAQCAtMTU2LDE2ICsyMDAsMTggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYWNvc19kb2MsCi0iYWNvcyh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgYXJjIGNvc2luZSBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IGFjb3NoX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hY29zaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2Fjb3NoKFB5X2NvbXBsZXggeikKK2NtYXRoX2Fjb3NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMyM2M3NzY0MjlkZWY5ODEgaW5wdXQ9M2Y2MWJlZTdkNzAzZTUzY10qLwogewogICAgIFB5X2NvbXBsZXggczEsIHMyLCByOwogCkBAIC0xNzgsMTAgKzIyNCwxMCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHMxLnJlYWwgPSB6LnJlYWwgLSAxLjsKICAgICAgICAgczEuaW1hZyA9IHouaW1hZzsKLSAgICAgICAgczEgPSBjX3NxcnQoczEpOworICAgICAgICBzMSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMxKTsKICAgICAgICAgczIucmVhbCA9IHoucmVhbCArIDEuOwogICAgICAgICBzMi5pbWFnID0gei5pbWFnOwotICAgICAgICBzMiA9IGNfc3FydChzMik7CisgICAgICAgIHMyID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczIpOwogICAgICAgICByLnJlYWwgPSBtX2FzaW5oKHMxLnJlYWwqczIucmVhbCArIHMxLmltYWcqczIuaW1hZyk7CiAgICAgICAgIHIuaW1hZyA9IDIuKmF0YW4yKHMxLmltYWcsIHMyLnJlYWwpOwogICAgIH0KQEAgLTE4OSwzNSArMjM1LDM4IEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2Fjb3NoX2RvYywKLSJhY29zaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIGNvc2luZSBvZiB4LiIpOworLypbY2xpbmljIGlucHV0XQorY21hdGguYXNpbiA9IGNtYXRoLmFjb3MKIAorUmV0dXJuIHRoZSBhcmMgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY19hc2luKFB5X2NvbXBsZXggeikKK2NtYXRoX2FzaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDJkMjM0NmQ0NjY5MDgyNiBpbnB1dD1iZTBiZjBjZmRkNTIzOWM1XSovCiB7CiAgICAgLyogYXNpbih6KSA9IC1pIGFzaW5oKGl6KSAqLwogICAgIFB5X2NvbXBsZXggcywgcjsKICAgICBzLnJlYWwgPSAtei5pbWFnOwogICAgIHMuaW1hZyA9IHoucmVhbDsKLSAgICBzID0gY19hc2luaChzKTsKKyAgICBzID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hc2luX2RvYywKLSJhc2luKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBhcmMgc2luZSBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IGFzaW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hc2luaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19hc2luaChQeV9jb21wbGV4IHopCitjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYzY2NjQ4MjNjN2IxYjM1IGlucHV0PTVjMDk0NDhmY2ZjODlhNzldKi8KIHsKICAgICBQeV9jb21wbGV4IHMxLCBzMiwgcjsKIApAQCAtMjM1LDEwICsyODQsMTAgQEAKICAgICB9IGVsc2UgewogICAgICAgICBzMS5yZWFsID0gMS4rei5pbWFnOwogICAgICAgICBzMS5pbWFnID0gLXoucmVhbDsKLSAgICAgICAgczEgPSBjX3NxcnQoczEpOworICAgICAgICBzMSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMxKTsKICAgICAgICAgczIucmVhbCA9IDEuLXouaW1hZzsKICAgICAgICAgczIuaW1hZyA9IHoucmVhbDsKLSAgICAgICAgczIgPSBjX3NxcnQoczIpOworICAgICAgICBzMiA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMyKTsKICAgICAgICAgci5yZWFsID0gbV9hc2luaChzMS5yZWFsKnMyLmltYWctczIucmVhbCpzMS5pbWFnKTsKICAgICAgICAgci5pbWFnID0gYXRhbjIoei5pbWFnLCBzMS5yZWFsKnMyLnJlYWwtczEuaW1hZypzMi5pbWFnKTsKICAgICB9CkBAIC0yNDYsMjAgKzI5NSwyMiBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hc2luaF9kb2MsCi0iYXNpbmgoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmF0YW4gPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgYXJjIHRhbmdlbnQgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5X2NvbXBsZXgKLWNfYXRhbihQeV9jb21wbGV4IHopCitjbWF0aF9hdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI3ZDQ0ZjAyYzZhNWMzYjUgaW5wdXQ9M2IyMWZmN2Q1ZWFjNjMyYV0qLwogewogICAgIC8qIGF0YW4oeikgPSAtaSBhdGFuaChpeikgKi8KICAgICBQeV9jb21wbGV4IHMsIHI7CiAgICAgcy5yZWFsID0gLXouaW1hZzsKICAgICBzLmltYWcgPSB6LnJlYWw7Ci0gICAgcyA9IGNfYXRhbmgocyk7CisgICAgcyA9IGNtYXRoX2F0YW5oX2ltcGwobW9kdWxlLCBzKTsKICAgICByLnJlYWwgPSBzLmltYWc7CiAgICAgci5pbWFnID0gLXMucmVhbDsKICAgICByZXR1cm4gcjsKQEAgLTI5NSwxNiArMzQ2LDE4IEBACiAgICAgcmV0dXJuIGF0YW4yKHouaW1hZywgei5yZWFsKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYXRhbl9kb2MsCi0iYXRhbih4KVxuIgotIlxuIgotIlJldHVybiB0aGUgYXJjIHRhbmdlbnQgb2YgeC4iKTsKLQogCiBzdGF0aWMgUHlfY29tcGxleCBhdGFuaF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguYXRhbmggPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIHRhbmdlbnQgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfYXRhbmgoUHlfY29tcGxleCB6KQorY21hdGhfYXRhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjc5ZTBiOWZlZmM4ZGE3YyBpbnB1dD0yYjNmZGI4MmZiMzQ0ODdiXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSBheSwgaDsKQEAgLTMxMyw3ICszNjYsNyBAQAogCiAgICAgLyogUmVkdWNlIHRvIGNhc2Ugd2hlcmUgei5yZWFsID49IDAuLCB1c2luZyBhdGFuaCh6KSA9IC1hdGFuaCgteikuICovCiAgICAgaWYgKHoucmVhbCA8IDAuKSB7Ci0gICAgICAgIHJldHVybiBjX25lZyhjX2F0YW5oKGNfbmVnKHopKSk7CisgICAgICAgIHJldHVybiBfUHlfY19uZWcoY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIF9QeV9jX25lZyh6KSkpOwogICAgIH0KIAogICAgIGF5ID0gZmFicyh6LmltYWcpOwpAQCAtMzUwLDM0ICs0MDMsMzggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYXRhbmhfZG9jLAotImF0YW5oKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB4LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5jb3MgPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2NvcyhQeV9jb21wbGV4IHopCitjbWF0aF9jb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWQxY2RjMWI1ZTc2MTY2NyBpbnB1dD02MDIyZTM5Yjc3MTI3YWM3XSovCiB7CiAgICAgLyogY29zKHopID0gY29zaChpeikgKi8KICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gLXouaW1hZzsKICAgICByLmltYWcgPSB6LnJlYWw7Ci0gICAgciA9IGNfY29zaChyKTsKKyAgICByID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgcik7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2Nvc19kb2MsCi0iY29zKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBjb3NpbmUgb2YgeC4iKTsKLQogCiAvKiBjb3NoKGluZmluaXR5ICsgaSp5KSBuZWVkcyB0byBiZSBkZWFsdCB3aXRoIHNwZWNpYWxseSAqLwogc3RhdGljIFB5X2NvbXBsZXggY29zaF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguY29zaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19jb3NoKFB5X2NvbXBsZXggeikKK2NtYXRoX2Nvc2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjNiNWQzMjgyYjMwMjRkMyBpbnB1dD1kNmI2NjMzOWU5Y2MzMzJiXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSB4X21pbnVzX29uZTsKQEAgLTQyNiwxOCArNDgzLDIwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2Nvc2hfZG9jLAotImNvc2goeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGh5cGVyYm9saWMgY29zaW5lIG9mIHguIik7Ci0KIAogLyogZXhwKGluZmluaXR5ICsgaSp5KSBhbmQgZXhwKC1pbmZpbml0eSArIGkqeSkgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBmb3IKICAgIGZpbml0ZSB5ICovCiBzdGF0aWMgUHlfY29tcGxleCBleHBfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmV4cCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBleHBvbmVudGlhbCB2YWx1ZSBlKip6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19leHAoUHlfY29tcGxleCB6KQorY21hdGhfZXhwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZmODgyNWViMmJjYWQ5YmEgaW5wdXQ9OGI5ZTZjZjhhOTIxNzRjM10qLwogewogICAgIFB5X2NvbXBsZXggcjsKICAgICBkb3VibGUgbDsKQEAgLTQ4NiwxMiArNTQ1LDYgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfZXhwX2RvYywKLSJleHAoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnguIik7Ci0KLQogc3RhdGljIFB5X2NvbXBsZXggbG9nX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCiBzdGF0aWMgUHlfY29tcGxleApAQCAtNTY0LDggKzYxNywxNSBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmxvZzEwID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGJhc2UtMTAgbG9nYXJpdGhtIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2xvZzEwKFB5X2NvbXBsZXggeikKK2NtYXRoX2xvZzEwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzQyNmNhMGU3ODIzNDEgaW5wdXQ9Y2ZmNTY0NGY3M2MxNTE5Y10qLwogewogICAgIFB5X2NvbXBsZXggcjsKICAgICBpbnQgZXJybm9fc2F2ZTsKQEAgLTU3OCwzNiArNjM4LDQwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2xvZzEwX2RvYywKLSJsb2cxMCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgeC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguc2luID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIHNpbmUgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5X2NvbXBsZXgKLWNfc2luKFB5X2NvbXBsZXggeikKK2NtYXRoX3Npbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2Y1ZTJiMjUzODI1YWM3IGlucHV0PTJkMzUxOTg0MmE4YjRiODVdKi8KIHsKICAgICAvKiBzaW4oeikgPSAtaSBzaW4oaXopICovCiAgICAgUHlfY29tcGxleCBzLCByOwogICAgIHMucmVhbCA9IC16LmltYWc7CiAgICAgcy5pbWFnID0gei5yZWFsOwotICAgIHMgPSBjX3Npbmgocyk7CisgICAgcyA9IGNtYXRoX3NpbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19zaW5fZG9jLAotInNpbih4KVxuIgotIlxuIgotIlJldHVybiB0aGUgc2luZSBvZiB4LiIpOwotCiAKIC8qIHNpbmgoaW5maW5pdHkgKyBpKnkpIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggc3BlY2lhbGx5ICovCiBzdGF0aWMgUHlfY29tcGxleCBzaW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5zaW5oID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19zaW5oKFB5X2NvbXBsZXggeikKK2NtYXRoX3NpbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDcxZmZmODI5ODA0M2E5NSBpbnB1dD1kMmQzZmM4YzFkZGZkMmRkXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSB4X21pbnVzX29uZTsKQEAgLTY1NSwxNiArNzE5LDE4IEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3NpbmhfZG9jLAotInNpbmgoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IHNxcnRfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnNxcnQgPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfc3FydChQeV9jb21wbGV4IHopCitjbWF0aF9zcXJ0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2YmRhMjgzZDBjNWE3YjQgaW5wdXQ9NzA4OGIxNjZmYzlhNThjN10qLwogewogICAgIC8qCiAgICAgICAgTWV0aG9kOiB1c2Ugc3ltbWV0cmllcyB0byByZWR1Y2UgdG8gdGhlIGNhc2Ugd2hlbiB4ID0gei5yZWFsIGFuZCB5CkBAIC03MzAsMzYgKzc5Niw0MCBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19zcXJ0X2RvYywKLSJzcXJ0KHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB4LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC50YW4gPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY190YW4oUHlfY29tcGxleCB6KQorY21hdGhfdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmMzc0YmFjZjM2ZDk5YjQgaW5wdXQ9ZmMxNjdlNTI4NzY3ODg4ZV0qLwogewogICAgIC8qIHRhbih6KSA9IC1pIHRhbmgoaXopICovCiAgICAgUHlfY29tcGxleCBzLCByOwogICAgIHMucmVhbCA9IC16LmltYWc7CiAgICAgcy5pbWFnID0gei5yZWFsOwotICAgIHMgPSBjX3Rhbmgocyk7CisgICAgcyA9IGNtYXRoX3RhbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY190YW5fZG9jLAotInRhbih4KVxuIgotIlxuIgotIlJldHVybiB0aGUgdGFuZ2VudCBvZiB4LiIpOwotCiAKIC8qIHRhbmgoaW5maW5pdHkgKyBpKnkpIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggc3BlY2lhbGx5ICovCiBzdGF0aWMgUHlfY29tcGxleCB0YW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC50YW5oID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY190YW5oKFB5X2NvbXBsZXggeikKK2NtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjU3ODc3M2QyN2ExOGU5NiBpbnB1dD0yMmY2N2Y5ZGM2ZDI5Njg1XSovCiB7CiAgICAgLyogRm9ybXVsYToKIApAQCAtODIyLDI3ICs4OTIsMzUgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfdGFuaF9kb2MsCi0idGFuaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmxvZworCisgICAgeDogUHlfY29tcGxleAorICAgIHlfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgLworCitUaGUgbG9nYXJpdGhtIG9mIHogdG8gdGhlIGdpdmVuIGJhc2UuCisKK0lmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9sb2coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfbG9nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB4LCBQeU9iamVjdCAqeV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzVlMmExZTUyMjliNWE0NiBpbnB1dD1lZTBlODIzYTdjNmU2OGVhXSovCiB7Ci0gICAgUHlfY29tcGxleCB4OwogICAgIFB5X2NvbXBsZXggeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxEIiwgJngsICZ5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBlcnJubyA9IDA7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIHJldHVybiAwKQogICAgIHggPSBjX2xvZyh4KTsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAyKSB7CisgICAgaWYgKHlfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgeSA9IFB5Q29tcGxleF9Bc0NDb21wbGV4KHlfb2JqKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIHkgPSBjX2xvZyh5KTsKLSAgICAgICAgeCA9IGNfcXVvdCh4LCB5KTsKKyAgICAgICAgeCA9IF9QeV9jX3F1b3QoeCwgeSk7CiAgICAgfQogICAgIFB5RlBFX0VORF9QUk9URUNUKHgpCiAgICAgaWYgKGVycm5vICE9IDApCkBAIC04NTAsMTAgKzkyOCw2IEBACiAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoeCk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9sb2dfZG9jLAotImxvZyh4WywgYmFzZV0pIC0+IHRoZSBsb2dhcml0aG0gb2YgeCB0byB0aGUgZ2l2ZW4gYmFzZS5cblwKLUlmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHguIik7Ci0KIAogLyogQW5kIG5vdyB0aGUgZ2x1ZSB0byBtYWtlIHRoZW0gYXZhaWxhYmxlIGZyb20gUHl0aG9uOiAqLwogCkBAIC04NjksNTcgKzk0MywyMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotbWF0aF8xKFB5T2JqZWN0ICphcmdzLCBQeV9jb21wbGV4ICgqZnVuYykoUHlfY29tcGxleCkpCi17Ci0gICAgUHlfY29tcGxleCB4LHIgOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRCIsICZ4KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZXJybm8gPSAwOwotICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCByZXR1cm4gMCk7Ci0gICAgciA9ICgqZnVuYykoeCk7Ci0gICAgUHlGUEVfRU5EX1BST1RFQ1Qocik7Ci0gICAgaWYgKGVycm5vID09IEVET00pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHIpOwotICAgIH0KLX0KIAotI2RlZmluZSBGVU5DMShzdHVibmFtZSwgZnVuYykgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqIHN0dWJuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykgeyBcCi0gICAgICAgIHJldHVybiBtYXRoXzEoYXJncywgZnVuYyk7IFwKLSAgICB9CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5waGFzZQogCi1GVU5DMShjbWF0aF9hY29zLCBjX2Fjb3MpCi1GVU5DMShjbWF0aF9hY29zaCwgY19hY29zaCkKLUZVTkMxKGNtYXRoX2FzaW4sIGNfYXNpbikKLUZVTkMxKGNtYXRoX2FzaW5oLCBjX2FzaW5oKQotRlVOQzEoY21hdGhfYXRhbiwgY19hdGFuKQotRlVOQzEoY21hdGhfYXRhbmgsIGNfYXRhbmgpCi1GVU5DMShjbWF0aF9jb3MsIGNfY29zKQotRlVOQzEoY21hdGhfY29zaCwgY19jb3NoKQotRlVOQzEoY21hdGhfZXhwLCBjX2V4cCkKLUZVTkMxKGNtYXRoX2xvZzEwLCBjX2xvZzEwKQotRlVOQzEoY21hdGhfc2luLCBjX3NpbikKLUZVTkMxKGNtYXRoX3NpbmgsIGNfc2luaCkKLUZVTkMxKGNtYXRoX3NxcnQsIGNfc3FydCkKLUZVTkMxKGNtYXRoX3RhbiwgY190YW4pCi1GVU5DMShjbWF0aF90YW5oLCBjX3RhbmgpCisgICAgejogUHlfY29tcGxleAorICAgIC8KKworUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfcGhhc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfcGhhc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA5ZWFmMzczY2I2MjRjMyBpbnB1dD01Y2Y3NTIyOGJhOTRiNjlkXSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwogICAgIGRvdWJsZSBwaGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEOnBoYXNlIiwgJnopKQotICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGVycm5vID0gMDsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJhcmcgZnVuY3Rpb24iLCByZXR1cm4gMCkKICAgICBwaGkgPSBjX2F0YW4yKHopOwpAQCAtOTMwLDIxICs5NjksMjcgQEAKICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShwaGkpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfcGhhc2VfZG9jLAotInBoYXNlKHopIC0+IGZsb2F0XG5cblwKLVJldHVybiBhcmd1bWVudCwgYWxzbyBrbm93biBhcyB0aGUgcGhhc2UgYW5nbGUsIG9mIGEgY29tcGxleC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnBvbGFyCisKKyAgICB6OiBQeV9jb21wbGV4CisgICAgLworCitDb252ZXJ0IGEgY29tcGxleCBmcm9tIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzIHRvIHBvbGFyIGNvb3JkaW5hdGVzLgorCityIGlzIHRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9wb2xhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9wb2xhcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wN2Q0MWIxNmM4Nzc4NzVhIGlucHV0PTI2YzM1MzU3NGZkMWE4NjFdKi8KIHsKLSAgICBQeV9jb21wbGV4IHo7CiAgICAgZG91YmxlIHIsIHBoaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6cG9sYXIiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgZXJybm8gPSAwOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoInBvbGFyIGZ1bmN0aW9uIiwgcmV0dXJuIDApCiAgICAgcGhpID0gY19hdGFuMih6KTsgLyogc2hvdWxkIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9uICovCi0gICAgciA9IGNfYWJzKHopOyAvKiBzZXRzIGVycm5vIHRvIEVSQU5HRSBvbiBvdmVyZmxvdyAqLworICAgIHIgPSBfUHlfY19hYnMoeik7IC8qIHNldHMgZXJybm8gdG8gRVJBTkdFIG9uIG92ZXJmbG93ICovCiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocikKICAgICBpZiAoZXJybm8gIT0gMCkKICAgICAgICAgcmV0dXJuIG1hdGhfZXJyb3IoKTsKQEAgLTk1MiwxMSArOTk3LDYgQEAKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkIiwgciwgcGhpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX3BvbGFyX2RvYywKLSJwb2xhcih6KSAtPiByOiBmbG9hdCwgcGhpOiBmbG9hdFxuXG5cCi1Db252ZXJ0IGEgY29tcGxleCBmcm9tIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzIHRvIHBvbGFyIGNvb3JkaW5hdGVzLiByIGlzXG5cCi10aGUgZGlzdGFuY2UgZnJvbSAwIGFuZCBwaGkgdGhlIHBoYXNlIGFuZ2xlLiIpOwotCiAvKgogICByZWN0KCkgaXNuJ3QgY292ZXJlZCBieSB0aGUgQzk5IHN0YW5kYXJkLCBidXQgaXQncyBub3QgdG9vIGhhcmQgdG8KICAgZmlndXJlIG91dCAnc3Bpcml0IG9mIEM5OScgcnVsZXMgZm9yIHNwZWNpYWwgdmFsdWUgaGFuZGluZzoKQEAgLTk3MCwxMyArMTAxMCwyMSBAQAogCiBzdGF0aWMgUHlfY29tcGxleCByZWN0X3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5yZWN0CisKKyAgICByOiBkb3VibGUKKyAgICBwaGk6IGRvdWJsZQorICAgIC8KKworQ29udmVydCBmcm9tIHBvbGFyIGNvb3JkaW5hdGVzIHRvIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfcmVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9yZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZG91YmxlIHIsIGRvdWJsZSBwaGkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk3YTg3NDliZDYzZTlkNSBpbnB1dD0yNGM1NjQ2ZDE0N2VmZDY5XSovCiB7CiAgICAgUHlfY29tcGxleCB6OwotICAgIGRvdWJsZSByLCBwaGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkZDpyZWN0IiwgJnIsICZwaGkpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBlcnJubyA9IDA7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgicmVjdCBmdW5jdGlvbiIsIHJldHVybiAwKQogCkBAIC0xMDI3LDc5ICsxMDc1LDE0MyBAQAogICAgICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleCh6KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX3JlY3RfZG9jLAotInJlY3QociwgcGhpKSAtPiB6OiBjb21wbGV4XG5cblwKLUNvbnZlcnQgZnJvbSBwb2xhciBjb29yZGluYXRlcyB0byByZWN0YW5ndWxhciBjb29yZGluYXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmlzZmluaXRlID0gY21hdGgucG9sYXIKKworUmV0dXJuIFRydWUgaWYgYm90aCB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIHogYXJlIGZpbml0ZSwgZWxzZSBGYWxzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzZmluaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX2lzZmluaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmNjY4MmZhOTNkZTQ1ZDYgaW5wdXQ9ODQ4ZTdlZTcwMTg5NTgxNV0qLwogewotICAgIFB5X2NvbXBsZXggejsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6aXNmaW5pdGUiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfSVNfRklOSVRFKHoucmVhbCkgJiYgUHlfSVNfRklOSVRFKHouaW1hZykpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfaXNmaW5pdGVfZG9jLAotImlzZmluaXRlKHopIC0+IGJvb2xcblwKLVJldHVybiBUcnVlIGlmIGJvdGggdGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiB6IGFyZSBmaW5pdGUsIGVsc2UgRmFsc2UuIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5pc25hbiA9IGNtYXRoLnBvbGFyCisKK0NoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IG5vdCBhIG51bWJlciAoTmFOKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzbmFuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX2lzbmFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI4NWZlOGMyMDQ3NzE4ZWUgaW5wdXQ9NzE3OTlmNWQyODRjOWJhZl0qLwogewotICAgIFB5X2NvbXBsZXggejsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6aXNuYW4iLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfSVNfTkFOKHoucmVhbCkgfHwgUHlfSVNfTkFOKHouaW1hZykpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfaXNuYW5fZG9jLAotImlzbmFuKHopIC0+IGJvb2xcblwKLUNoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IG5vdCBhIG51bWJlciAoTmFOKSIpOworLypbY2xpbmljIGlucHV0XQorY21hdGguaXNpbmYgPSBjbWF0aC5wb2xhcgorCitDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzaW5mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX2lzaW5mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjYTljNjEwOWU0NjhiZjQgaW5wdXQ9MzYzZGYxNTVjNzE4MTMyOV0qLwogewotICAgIFB5X2NvbXBsZXggejsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6aXNpbmYiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfSVNfSU5GSU5JVFkoei5yZWFsKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfSVNfSU5GSU5JVFkoei5pbWFnKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9pc2luZl9kb2MsCi0iaXNpbmYoeikgLT4gYm9vbFxuXAotQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogaXMgaW5maW5pdGUuIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5pc2Nsb3NlIC0+IGJvb2wKIAorICAgIGE6IFB5X2NvbXBsZXgKKyAgICBiOiBQeV9jb21wbGV4CisgICAgKgorICAgIHJlbF90b2w6IGRvdWJsZSA9IDFlLTA5CisgICAgICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCAiY2xvc2UiLCByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXMKKyAgICBhYnNfdG9sOiBkb3VibGUgPSAwLjAKKyAgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkICJjbG9zZSIsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzCisKK0RldGVybWluZSB3aGV0aGVyIHR3byBjb21wbGV4IG51bWJlcnMgYXJlIGNsb3NlIGluIHZhbHVlLgorCitSZXR1cm4gVHJ1ZSBpZiBhIGlzIGNsb3NlIGluIHZhbHVlIHRvIGIsIGFuZCBGYWxzZSBvdGhlcndpc2UuCisKK0ZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbSBtdXN0IGJlCitzbWFsbGVyIHRoYW4gYXQgbGVhc3Qgb25lIG9mIHRoZSB0b2xlcmFuY2VzLgorCistaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gVGhhdCBpcywgTmFOIGlzCitub3QgY2xvc2UgdG8gYW55dGhpbmcsIGV2ZW4gaXRzZWxmLiBpbmYgYW5kIC1pbmYgYXJlIG9ubHkgY2xvc2UgdG8gdGhlbXNlbHZlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorY21hdGhfaXNjbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAorICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTBjNTM1ZmI1NGUyMzEwIGlucHV0PWRmOTYzNmQ3ZGUxZDRhYzNdKi8KK3sKKyAgICBkb3VibGUgZGlmZjsKKworICAgIC8qIHNhbml0eSBjaGVjayBvbiB0aGUgaW5wdXRzICovCisgICAgaWYgKHJlbF90b2wgPCAwLjAgfHwgYWJzX3RvbCA8IDAuMCApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidG9sZXJhbmNlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCAoYS5yZWFsID09IGIucmVhbCkgJiYgKGEuaW1hZyA9PSBiLmltYWcpICkgeworICAgICAgICAvKiBzaG9ydCBjaXJjdWl0IGV4YWN0IGVxdWFsaXR5IC0tIG5lZWRlZCB0byBjYXRjaCB0d28gaW5maW5pdGllcyBvZgorICAgICAgICAgICB0aGUgc2FtZSBzaWduLiBBbmQgcGVyaGFwcyBzcGVlZHMgdGhpbmdzIHVwIGEgYml0IHNvbWV0aW1lcy4KKyAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogVGhpcyBjYXRjaGVzIHRoZSBjYXNlIG9mIHR3byBpbmZpbml0aWVzIG9mIG9wcG9zaXRlIHNpZ24sIG9yCisgICAgICAgb25lIGluZmluaXR5IGFuZCBvbmUgZmluaXRlIG51bWJlci4gVHdvIGluZmluaXRpZXMgb2Ygb3Bwb3NpdGUKKyAgICAgICBzaWduIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZmluaXRlIHJlbGF0aXZlIHRvbGVyYW5jZS4KKyAgICAgICBUd28gaW5maW5pdGllcyBvZiB0aGUgc2FtZSBzaWduIGFyZSBjYXVnaHQgYnkgdGhlIGVxdWFsaXR5IGNoZWNrCisgICAgICAgYWJvdmUuCisgICAgKi8KKworICAgIGlmIChQeV9JU19JTkZJTklUWShhLnJlYWwpIHx8IFB5X0lTX0lORklOSVRZKGEuaW1hZykgfHwKKyAgICAgICAgUHlfSVNfSU5GSU5JVFkoYi5yZWFsKSB8fCBQeV9JU19JTkZJTklUWShiLmltYWcpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIG5vdyBkbyB0aGUgcmVndWxhciBjb21wdXRhdGlvbgorICAgICAgIHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlICJ3ZWFrIiB0ZXN0IGZyb20gdGhlIEJvb3N0IGxpYnJhcnkKKyAgICAqLworCisgICAgZGlmZiA9IF9QeV9jX2FicyhfUHlfY19kaWZmKGEsIGIpKTsKKworICAgIHJldHVybiAoKChkaWZmIDw9IHJlbF90b2wgKiBfUHlfY19hYnMoYikpIHx8CisgICAgICAgICAgICAgKGRpZmYgPD0gcmVsX3RvbCAqIF9QeV9jX2FicyhhKSkpIHx8CisgICAgICAgICAgICAoZGlmZiA8PSBhYnNfdG9sKSk7Cit9CiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIlRoaXMgbW9kdWxlIGlzIGFsd2F5cyBhdmFpbGFibGUuIEl0IHByb3ZpZGVzIGFjY2VzcyB0byBtYXRoZW1hdGljYWxcbiIKICJmdW5jdGlvbnMgZm9yIGNvbXBsZXggbnVtYmVycy4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGNtYXRoX21ldGhvZHNbXSA9IHsKLSAgICB7ImFjb3MiLCAgIGNtYXRoX2Fjb3MsICBNRVRIX1ZBUkFSR1MsIGNfYWNvc19kb2N9LAotICAgIHsiYWNvc2giLCAgY21hdGhfYWNvc2gsIE1FVEhfVkFSQVJHUywgY19hY29zaF9kb2N9LAotICAgIHsiYXNpbiIsICAgY21hdGhfYXNpbiwgIE1FVEhfVkFSQVJHUywgY19hc2luX2RvY30sCi0gICAgeyJhc2luaCIsICBjbWF0aF9hc2luaCwgTUVUSF9WQVJBUkdTLCBjX2FzaW5oX2RvY30sCi0gICAgeyJhdGFuIiwgICBjbWF0aF9hdGFuLCAgTUVUSF9WQVJBUkdTLCBjX2F0YW5fZG9jfSwKLSAgICB7ImF0YW5oIiwgIGNtYXRoX2F0YW5oLCBNRVRIX1ZBUkFSR1MsIGNfYXRhbmhfZG9jfSwKLSAgICB7ImNvcyIsICAgIGNtYXRoX2NvcywgICBNRVRIX1ZBUkFSR1MsIGNfY29zX2RvY30sCi0gICAgeyJjb3NoIiwgICBjbWF0aF9jb3NoLCAgTUVUSF9WQVJBUkdTLCBjX2Nvc2hfZG9jfSwKLSAgICB7ImV4cCIsICAgIGNtYXRoX2V4cCwgICBNRVRIX1ZBUkFSR1MsIGNfZXhwX2RvY30sCi0gICAgeyJpc2Zpbml0ZSIsIGNtYXRoX2lzZmluaXRlLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX2lzZmluaXRlX2RvY30sCi0gICAgeyJpc2luZiIsICBjbWF0aF9pc2luZiwgTUVUSF9WQVJBUkdTLCBjbWF0aF9pc2luZl9kb2N9LAotICAgIHsiaXNuYW4iLCAgY21hdGhfaXNuYW4sIE1FVEhfVkFSQVJHUywgY21hdGhfaXNuYW5fZG9jfSwKLSAgICB7ImxvZyIsICAgIGNtYXRoX2xvZywgICBNRVRIX1ZBUkFSR1MsIGNtYXRoX2xvZ19kb2N9LAotICAgIHsibG9nMTAiLCAgY21hdGhfbG9nMTAsIE1FVEhfVkFSQVJHUywgY19sb2cxMF9kb2N9LAotICAgIHsicGhhc2UiLCAgY21hdGhfcGhhc2UsIE1FVEhfVkFSQVJHUywgY21hdGhfcGhhc2VfZG9jfSwKLSAgICB7InBvbGFyIiwgIGNtYXRoX3BvbGFyLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX3BvbGFyX2RvY30sCi0gICAgeyJyZWN0IiwgICBjbWF0aF9yZWN0LCAgTUVUSF9WQVJBUkdTLCBjbWF0aF9yZWN0X2RvY30sCi0gICAgeyJzaW4iLCAgICBjbWF0aF9zaW4sICAgTUVUSF9WQVJBUkdTLCBjX3Npbl9kb2N9LAotICAgIHsic2luaCIsICAgY21hdGhfc2luaCwgIE1FVEhfVkFSQVJHUywgY19zaW5oX2RvY30sCi0gICAgeyJzcXJ0IiwgICBjbWF0aF9zcXJ0LCAgTUVUSF9WQVJBUkdTLCBjX3NxcnRfZG9jfSwKLSAgICB7InRhbiIsICAgIGNtYXRoX3RhbiwgICBNRVRIX1ZBUkFSR1MsIGNfdGFuX2RvY30sCi0gICAgeyJ0YW5oIiwgICBjbWF0aF90YW5oLCAgTUVUSF9WQVJBUkdTLCBjX3RhbmhfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworICAgIENNQVRIX0FDT1NfTUVUSE9EREVGCisgICAgQ01BVEhfQUNPU0hfTUVUSE9EREVGCisgICAgQ01BVEhfQVNJTl9NRVRIT0RERUYKKyAgICBDTUFUSF9BU0lOSF9NRVRIT0RERUYKKyAgICBDTUFUSF9BVEFOX01FVEhPRERFRgorICAgIENNQVRIX0FUQU5IX01FVEhPRERFRgorICAgIENNQVRIX0NPU19NRVRIT0RERUYKKyAgICBDTUFUSF9DT1NIX01FVEhPRERFRgorICAgIENNQVRIX0VYUF9NRVRIT0RERUYKKyAgICBDTUFUSF9JU0NMT1NFX01FVEhPRERFRgorICAgIENNQVRIX0lTRklOSVRFX01FVEhPRERFRgorICAgIENNQVRIX0lTSU5GX01FVEhPRERFRgorICAgIENNQVRIX0lTTkFOX01FVEhPRERFRgorICAgIENNQVRIX0xPR19NRVRIT0RERUYKKyAgICBDTUFUSF9MT0cxMF9NRVRIT0RERUYKKyAgICBDTUFUSF9QSEFTRV9NRVRIT0RERUYKKyAgICBDTUFUSF9QT0xBUl9NRVRIT0RERUYKKyAgICBDTUFUSF9SRUNUX01FVEhPRERFRgorICAgIENNQVRIX1NJTl9NRVRIT0RERUYKKyAgICBDTUFUSF9TSU5IX01FVEhPRERFRgorICAgIENNQVRIX1NRUlRfTUVUSE9EREVGCisgICAgQ01BVEhfVEFOX01FVEhPRERFRgorICAgIENNQVRIX1RBTkhfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAvKiBzZW50aW5lbCAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NvbmZpZy5jLmluIGIvTW9kdWxlcy9jb25maWcuYy5pbgppbmRleCA3YTI0ZTJkLi43Yjc3MTk5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NvbmZpZy5jLmluCisrKyBiL01vZHVsZXMvY29uZmlnLmMuaW4KQEAgLTEzLDcgKzEzLDcgQEAKIC8qICEhISAhISEgISEhIFRoaXMgZmlsZSBpcyBlZGl0ZWQgYnkgdGhlIG1ha2VzZXR1cCBzY3JpcHQgISEhICEhISAhISEgKi8KIAogLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLgotICAgU2VlIGluaXRfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLworICAgU2VlIGNyZWF0ZV9idWlsdGluKCkgaW4gaW1wb3J0LmMuICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKaW5kZXggMTQ5M2Y4ZC4uNTMwZGRjNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYworKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC01LDcgKzUsMTMgQEAKICNpbmNsdWRlIDxmcmFtZW9iamVjdC5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisjICBpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKyNpZmRlZiBNU19XSU5ET1dTCisjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisjICBpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNlbmRpZgogCiAvKiBBbGxvY2F0ZSBhdCBtYXhpbXVtIDEwMCBNQiBvZiB0aGUgc3RhY2sgdG8gcmFpc2UgdGhlIHN0YWNrIG92ZXJmbG93ICovCkBAIC0yMiw5ICsyOCw3IEBACiAjICBkZWZpbmUgRkFVTFRIQU5ETEVSX1VTRVIKICNlbmRpZgogCi0vKiBjYXN0IHNpemVfdCB0byBpbnQgYmVjYXVzZSB3cml0ZSgpIHRha2VzIGFuIGludCBvbiBXaW5kb3dzCi0gICAoYW55d2F5LCB0aGUgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiAzMCBjaGFyYWN0ZXJzKSAqLwotI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgc3RybGVuKHN0cikpCiAKIF9QeV9JREVOVElGSUVSKGVuYWJsZSk7CiBfUHlfSURFTlRJRklFUihmaWxlbm8pOwpAQCAtMTI3LDMyICsxMzEsNDYgQEAKICAgIGNhbGwgaXRzIGZsdXNoKCkgbWV0aG9kLgogCiAgICBJZiBmaWxlIGlzIE5VTEwgb3IgUHlfTm9uZSwgdXNlIHN5cy5zdGRlcnIgYXMgdGhlIG5ldyBmaWxlLgorICAgSWYgZmlsZSBpcyBhbiBpbnRlZ2VyLCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgZmlsZSBkZXNjcmlwdG9yLgogCi0gICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG5ldyBmaWxlIGFuZCB3cml0ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGludG8gKnBfZmQuCi0gICBPbiBlcnJvciwgcmV0dXJuIE5VTEwuICovCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBhbmQgd3JpdGUgdGhlIG5ldyBmaWxlIGludG8gKmZpbGVfcHRyLgorICAgT24gZXJyb3IsIHJldHVybiAtMS4gKi8KIAotc3RhdGljIFB5T2JqZWN0KgotZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKmZpbGUsIGludCAqcF9mZCkKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKFB5T2JqZWN0ICoqZmlsZV9wdHIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBsb25nIGZkX2xvbmc7CiAgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpmaWxlID0gKmZpbGVfcHRyOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCB8fCBmaWxlID09IFB5X05vbmUpIHsKICAgICAgICAgZmlsZSA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwogICAgICAgICBpZiAoZmlsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAidW5hYmxlIHRvIGdldCBzeXMuc3RkZXJyIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoZmlsZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAic3lzLnN0ZGVyciBpcyBOb25lIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soZmlsZSkpIHsKKyAgICAgICAgZmQgPSBfUHlMb25nX0FzSW50KGZpbGUpOworICAgICAgICBpZiAoZmQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdGVyIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgKmZpbGVfcHRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZkOworICAgIH0KIAogICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmlsZW5vLCAiIik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgZmQgPSAtMTsKICAgICBpZiAoUHlMb25nX0NoZWNrKHJlc3VsdCkpIHsKQEAgLTE2NSw3ICsxODMsNyBAQAogICAgIGlmIChmZCA9PSAtMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuZmlsZW5vKCkgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOwpAQCAtMTc1LDggKzE5Myw4IEBACiAgICAgICAgIC8qIGlnbm9yZSBmbHVzaCgpIGVycm9yICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQotICAgICpwX2ZkID0gZmQ7Ci0gICAgcmV0dXJuIGZpbGU7CisgICAgKmZpbGVfcHRyID0gZmlsZTsKKyAgICByZXR1cm4gZmQ7CiB9CiAKIC8qIEdldCB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkOiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB0aGUgY3VycmVudApAQCAtMTkzLDYgKzIxMSw0MiBAQAogICAgIHJldHVybiB0c3RhdGU7CiB9CiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2soaW50IGZkLCBpbnQgYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCit7CisgICAgc3RhdGljIHZvbGF0aWxlIGludCByZWVudHJhbnQgPSAwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmIChyZWVudHJhbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZW50cmFudCA9IDE7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgYXJlIHN5bmNocm9ub3VzIHNpZ25hbHMgYW5kCisgICAgICAgYXJlIHRodXMgZGVsaXZlcmVkIHRvIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlIGZhdWx0LiBHZXQgdGhlIFB5dGhvbgorICAgICAgIHRocmVhZCBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCisKKyAgICAgICBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUKKyAgICAgICBmYXVsdCBpZiB0aGUgdGhyZWFkIHJlbGVhc2VkIHRoZSBHSUwsIGFuZCBzbyB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZQorICAgICAgIHVzZWQuIFJlYWQgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGluc3RlYWQ6IGNhbGwKKyAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLworICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisjZWxzZQorICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisjZW5kaWYKKworICAgIGlmIChhbGxfdGhyZWFkcykKKyAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBpbnRlcnAsIHRzdGF0ZSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkKKyAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOworICAgIH0KKworICAgIHJlZW50cmFudCA9IDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weShQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTIwOSw4ICsyNjMsOCBAQAogICAgICAgICAmZmlsZSwgJmFsbF90aHJlYWRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOwpAQCAtMjI3LDYgKzI4MSwxMCBAQAogICAgIGVsc2UgewogICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKICAgICB9CisKKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTI1MCw3ICszMDgsNiBAQAogICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKICAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpCkBAIC0yNzgsMjYgKzMzNSw4IEBACiAgICAgUFVUUyhmZCwgaGFuZGxlci0+bmFtZSk7CiAgICAgUFVUUyhmZCwgIlxuXG4iKTsKIAotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscyBhbmQKLSAgICAgICBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUgUHl0aG9uCi0gICAgICAgdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KLQotICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZQotICAgICAgIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCi0gICAgICAgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAotICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSNlbmRpZgotCi0gICAgaWYgKGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzKQotICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGZhdGFsX2Vycm9yLmludGVycCwgdHN0YXRlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQotICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7Ci0gICAgfQorICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhmZCwgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsX2Vycm9yLmludGVycCk7CiAKICAgICBlcnJubyA9IHNhdmVfZXJybm87CiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMzMzLDggKzM3Miw4IEBACiAgICAgICAgICJ8T2k6ZW5hYmxlIiwga3dsaXN0LCAmZmlsZSwgJmFsbF90aHJlYWRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOwpAQCAtMzQyLDcgKzM4MSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfWERFQ1JFRihmYXRhbF9lcnJvci5maWxlKTsKLSAgICBQeV9JTkNSRUYoZmlsZSk7CisgICAgUHlfWElOQ1JFRihmaWxlKTsKICAgICBmYXRhbF9lcnJvci5maWxlID0gZmlsZTsKICAgICBmYXRhbF9lcnJvci5mZCA9IGZkOwogICAgIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CkBAIC00NTIsOSArNDkxLDkgQEAKICAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CiAKICAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KLSAgICAgICAgY3VycmVudCA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICAgICAgY3VycmVudCA9IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CiAKLSAgICAgICAgd3JpdGUodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKIAogICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKICAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOwpAQCAtNTQ3LDggKzU4Niw4IEBACiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOwotICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgZmQgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubygmZmlsZSk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBmb3JtYXQgdGhlIHRpbWVvdXQgKi8KQEAgLTU2MSw3ICs2MDAsNyBAQAogICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOwogCiAgICAgUHlfWERFQ1JFRih0aHJlYWQuZmlsZSk7Ci0gICAgUHlfSU5DUkVGKGZpbGUpOworICAgIFB5X1hJTkNSRUYoZmlsZSk7CiAgICAgdGhyZWFkLmZpbGUgPSBmaWxlOwogICAgIHRocmVhZC5mZCA9IGZkOwogICAgIHRocmVhZC50aW1lb3V0X3VzID0gdGltZW91dF91czsKQEAgLTY0MCwyOCArNjc5LDE0IEBACiBmYXVsdGhhbmRsZXJfdXNlcihpbnQgc2lnbnVtKQogewogICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKICAgICB1c2VyID0gJnVzZXJfc2lnbmFsc1tzaWdudW1dOwogICAgIGlmICghdXNlci0+ZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkIGlmCi0gICAgICAgdGhlIHRocmVhZCBkb2Vzbid0IGhvbGQgdGhlIEdJTC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykKLSAgICAgICBpbnN0ZWFkOiBjYWxsIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSNlbmRpZgorICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayh1c2VyLT5mZCwgdXNlci0+YWxsX3RocmVhZHMsIHVzZXItPmludGVycCk7CiAKLSAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCi0gICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCi0gICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKLSAgICB9CiAjaWZkZWYgSEFWRV9TSUdBQ1RJT04KICAgICBpZiAodXNlci0+Y2hhaW4pIHsKICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKQEAgLTczMSw4ICs3NTYsOCBAQAogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CkBAIC03NTQsNyArNzc5LDcgQEAKICAgICB9CiAKICAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOwotICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICBQeV9YSU5DUkVGKGZpbGUpOwogICAgIHVzZXItPmZpbGUgPSBmaWxlOwogICAgIHVzZXItPmZkID0gZmQ7CiAgICAgdXNlci0+YWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKQEAgLTgwNCwxMiArODI5LDQxIEBACiAjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLwogCiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KHZvaWQpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFVJTlQgbW9kZTsKKworICAgIC8qIENvbmZpZ3VyZSBXaW5kb3dzIHRvIG5vdCBkaXNwbGF5IHRoZSBXaW5kb3dzIEVycm9yIFJlcG9ydGluZyBkaWFsb2cgKi8KKyAgICBtb2RlID0gU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCk7CisgICAgU2V0RXJyb3JNb2RlKG1vZGUgfCBTRU1fTk9HUEZBVUxURVJST1JCT1gpOworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisgICAgc3RydWN0IHJsaW1pdCBybDsKKworICAgIC8qIERpc2FibGUgY3JlYXRpb24gb2YgY29yZSBkdW1wICovCisgICAgaWYgKGdldHJsaW1pdChSTElNSVRfQ09SRSwgJnJsKSAhPSAwKSB7CisgICAgICAgIHJsLnJsaW1fY3VyID0gMDsKKyAgICAgICAgc2V0cmxpbWl0KFJMSU1JVF9DT1JFLCAmcmwpOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgX01TQ19WRVIKKyAgICAvKiBWaXN1YWwgU3R1ZGlvOiBjb25maWd1cmUgYWJvcnQoKSB0byBub3QgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIG5vcgorICAgICAgIG9wZW4gYSBwb3B1cCBhc2tpbmcgdG8gcmVwb3J0IHRoZSBmYXVsdC4gKi8KKyAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKDAsIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9yZWFkX251bGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHZvbGF0aWxlIGludCAqeDsKICAgICB2b2xhdGlsZSBpbnQgeTsKIAorICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICB4ID0gTlVMTDsKICAgICB5ID0gKng7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh5KTsKQEAgLTgxOSw2ICs4NzMsNyBAQAogc3RhdGljIHZvaWQKIGZhdWx0aGFuZGxlcl9yYWlzZV9zaWdzZWd2KHZvaWQpCiB7CisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICAvKiBGb3IgU0lHU0VHViwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHNpZ25hbAogICAgICAgIGhhbmRsZXIgYW5kIHRoZW4gZ2l2ZXMgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdGhlIHByb2dyYW0gKHdpdGhvdXQKQEAgLTg2MSw2ICs5MTYsNyBAQAogICAgIC8qIERvIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVybzogcmFpc2UgYSBTSUdGUEUgb24gSW50ZWwgQ1BVLCBidXQgbm90IG9uCiAgICAgICAgUG93ZXJQQy4gVXNlIHZvbGF0aWxlIHRvIGRpc2FibGUgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbnMuICovCiAgICAgdm9sYXRpbGUgaW50IHggPSAxLCB5ID0gMCwgejsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgeiA9IHggLyB5OwogICAgIC8qIElmIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGRpZG4ndCByYWlzZSBhIFNJR0ZQRSAoZS5nLiBvbiBQb3dlclBDKSwKICAgICAgICByYWlzZSBpdCBtYW51YWxseS4gKi8KQEAgLTg3MywzOSArOTI5LDE4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3NpZ2FicnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIF9NU0NfVkVSCi0gICAgLyogVmlzdWFsIFN0dWRpbzogY29uZmlndXJlIGFib3J0KCkgdG8gbm90IGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBub3IKLSAgICAgICBvcGVuIGEgcG9wdXAgYXNraW5nIHRvIHJlcG9ydCB0aGUgZmF1bHQuICovCi0gICAgX3NldF9hYm9ydF9iZWhhdmlvcigwLCBfV1JJVEVfQUJPUlRfTVNHIHwgX0NBTExfUkVQT1JURkFVTFQpOwotI2VuZGlmCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGFib3J0KCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLSNpZmRlZiBTSUdCVVMKLXN0YXRpYyBQeU9iamVjdCAqCi1mYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByYWlzZShTSUdCVVMpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotI2VuZGlmCi0KLSNpZmRlZiBTSUdJTEwKLXN0YXRpYyBQeU9iamVjdCAqCi1mYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByYWlzZShTSUdJTEwpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGNoYXIgKm1lc3NhZ2U7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgUHlfRmF0YWxFcnJvcihtZXNzYWdlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTkzOSw2ICs5NzQsNyBAQAogICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmRlcHRoOwogICAgIFB5X3VpbnRwdHJfdCBzdG9wOwogCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGRlcHRoID0gMDsKICAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKQEAgLTEwMjgsMTQgKzEwNjQsNiBAQAogICAgICBQeURvY19TVFIoIl9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwiKX0sCiAgICAgeyJfc2lnZnBlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdmcGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdmcGUoKTogcmFpc2UgYSBTSUdGUEUgc2lnbmFsIil9LAotI2lmZGVmIFNJR0JVUwotICAgIHsiX3NpZ2J1cyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnYnVzLCBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfc2lnYnVzKCk6IHJhaXNlIGEgU0lHQlVTIHNpZ25hbCIpfSwKLSNlbmRpZgotI2lmZGVmIFNJR0lMTAotICAgIHsiX3NpZ2lsbCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnaWxsLCBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfc2lnaWxsKCk6IHJhaXNlIGEgU0lHSUxMIHNpZ25hbCIpfSwKLSNlbmRpZgogICAgIHsiX2ZhdGFsX2Vycm9yIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiX2ZhdGFsX2Vycm9yKG1lc3NhZ2UpOiBjYWxsIFB5X0ZhdGFsRXJyb3IobWVzc2FnZSkiKX0sCiAjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mY250bG1vZHVsZS5jIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCmluZGV4IDkzMjU5NDAuLjk3ZmYwN2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmNudGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKQEAgLTE1LDYgKzE1LDExIEBACiAjaW5jbHVkZSA8c3Ryb3B0cy5oPgogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBmY250bAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTI0YjU4Mzg3YzE1ODE3OV0qLworCiBzdGF0aWMgaW50CiBjb252X2Rlc2NyaXB0b3IoUHlPYmplY3QgKm9iamVjdCwgaW50ICp0YXJnZXQpCiB7CkBAIC0yNiw0OCArMzEsNzIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorLyogTXVzdCBjb21lIGFmdGVyIGNvbnZfZGVzY3JpcHRvciBkZWZpbml0aW9uLiAqLworI2luY2x1ZGUgImNsaW5pYy9mY250bG1vZHVsZS5jLmgiCiAKLS8qIGZjbnRsKGZkLCBvcCwgW2FyZ10pICovCisvKltjbGluaWMgaW5wdXRdCitmY250bC5mY250bAorCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgY21kIGFzIGNvZGU6IGludAorICAgIGFyZzogb2JqZWN0KGNfZGVmYXVsdD0nTlVMTCcpID0gMAorICAgIC8KKworUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGBjbWRgIG9uIGZpbGUgZGVzY3JpcHRvciBmZC4KKworVGhlIHZhbHVlcyB1c2VkIGZvciBgY21kYCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlCithcyBjb25zdGFudHMgaW4gdGhlIGZjbnRsIG1vZHVsZSwgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbgordGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLiAgVGhlIGFyZ3VtZW50IGFyZyBpcyBvcHRpb25hbCwgYW5kCitkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLAordGhlIHJldHVybiB2YWx1ZSBvZiBmY250bCBpcyBhIHN0cmluZyBvZiB0aGF0IGxlbmd0aCwgY29udGFpbmluZyB0aGUKK3Jlc3VsdGluZyB2YWx1ZSBwdXQgaW4gdGhlIGFyZyBidWZmZXIgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGUgbGVuZ3RoCitvZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW4KK2lzIGFuIGludGVnZXIgb3IgaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgdmFsdWUgaXMgYW4gaW50ZWdlcgorY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmY250bCBjYWxsIGluIHRoZSBDIGNvZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1mY250bF9mY250bChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitmY250bF9mY250bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWZjNWJmYTc0YTAzZWYwZCBpbnB1dD04Y2VmYmU1OWIyOWVmYmUyXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBjb2RlOwotICAgIGludCBhcmc7CisgICAgdW5zaWduZWQgaW50IGludF9hcmcgPSAwOwogICAgIGludCByZXQ7CiAgICAgY2hhciAqc3RyOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGNoYXIgYnVmWzEwMjRdOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXMjOmZjbnRsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZzdHIsICZsZW4pKSB7Ci0gICAgICAgIGlmIChsZW4gPiBzaXplb2YgYnVmKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmNudGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGFyZyAhPSBOVUxMKSB7CisgICAgICAgIGludCBwYXJzZV9yZXN1bHQ7CisKKyAgICAgICAgaWYgKFB5QXJnX1BhcnNlKGFyZywgInMjIiwgJnN0ciwgJmxlbikpIHsKKyAgICAgICAgICAgIGlmICgoc2l6ZV90KWxlbiA+IHNpemVvZiBidWYpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZjbnRsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBidWYpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXQgPSBmY250bChmZCwgY29kZSwgYnVmKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHBhcnNlX3Jlc3VsdCA9IFB5QXJnX1BhcnNlKGFyZywKKyAgICAgICAgICAgICJJO2ZjbnRsIHJlcXVpcmVzIGEgZmlsZSBvciBmaWxlIGRlc2NyaXB0b3IsIgorICAgICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGEgdGhpcmQgaW50ZWdlciBvciBhIHN0cmluZyIsCisgICAgICAgICAgICAmaW50X2FyZyk7CisgICAgICAgIGlmICghcGFyc2VfcmVzdWx0KSB7CisgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgIH0KIAotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXJnID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICJPJml8STtmY250bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKLSAgICAgICAgICIgYW4gaW50ZWdlciBhbmQgb3B0aW9uYWxseSBhIHRoaXJkIGludGVnZXIgb3IgYSBzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKSB7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBhcmcpOworICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCAoaW50KWludF9hcmcpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJldCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtNzYsMzMgKzEwNSw1NCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmV0KTsKIH0KIAotUHlEb2NfU1RSVkFSKGZjbnRsX2RvYywKLSJmY250bChmZCwgb3AsIFthcmddKVxuXAotXG5cCi1QZXJmb3JtIHRoZSBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgVGhlIHZhbHVlcyB1c2VkXG5cCi1mb3Igb3AgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZVxuXAotYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW5cblwKLXRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4gIFRoZSBhcmd1bWVudCBhcmcgaXMgb3B0aW9uYWwsIGFuZFxuXAotZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhIHN0cmluZy4gIElmIGFyZyBpcyBnaXZlbiBhcyBhIHN0cmluZyxcblwKLXRoZSByZXR1cm4gdmFsdWUgb2YgZmNudGwgaXMgYSBzdHJpbmcgb2YgdGhhdCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlXG5cCi1yZXN1bHRpbmcgdmFsdWUgcHV0IGluIHRoZSBhcmcgYnVmZmVyIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgVGhlIGxlbmd0aFxuXAotb2YgdGhlIGFyZyBzdHJpbmcgaXMgbm90IGFsbG93ZWQgdG8gZXhjZWVkIDEwMjQgYnl0ZXMuICBJZiB0aGUgYXJnIGdpdmVuXG5cCi1pcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzIGFuIGludGVnZXJcblwKLWNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmNudGwgY2FsbCBpbiB0aGUgQyBjb2RlLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitmY250bC5pb2N0bAogCi0vKiBpb2N0bChmZCwgb3AsIFthcmddKSAqLworICAgIGZkOiBvYmplY3QodHlwZT0naW50JywgY29udmVydGVyPSdjb252X2Rlc2NyaXB0b3InKQorICAgIHJlcXVlc3QgYXMgY29kZTogdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSkKKyAgICBhcmcgYXMgb2JfYXJnOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgbXV0YXRlX2ZsYWcgYXMgbXV0YXRlX2FyZzogYm9vbCA9IFRydWUKKyAgICAvCisKK1BlcmZvcm0gdGhlIG9wZXJhdGlvbiBgcmVxdWVzdGAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuCisKK1RoZSB2YWx1ZXMgdXNlZCBmb3IgYHJlcXVlc3RgIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUKK2FzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgb3IgdGVybWlvcyBsaWJyYXJ5IG1vZHVsZXMsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzCit1c2VkIGluIHRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4KKworVGhlIGFyZ3VtZW50IGBhcmdgIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhCitidWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLgorCitJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZQorbXV0YXRlX2ZsYWcgYXJndW1lbnQgKHdoaWNoIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGlzIGNhc2UpIGlzIHRydWUgdGhlbiB0aGUKK2J1ZmZlciBpcyAoaW4gZWZmZWN0KSBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGNoYW5nZXMgbWFkZSBieQordGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhcworcmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHJldHVybmVkIGJ5IHRoZSBpb2N0bCBzeXN0ZW0KK2NhbGwuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIGFuZCB0aGUgbXV0YWJsZV9mbGFnIGFyZ3VtZW50IGlzIGZhbHNlLAordGhlIGJlaGF2aW9yIGlzIGFzIGlmIGEgc3RyaW5nIGhhZCBiZWVuIHBhc3NlZC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGltbXV0YWJsZSBidWZmZXIgKG1vc3QgbGlrZWx5IGEgc3RyaW5nKSB0aGVuIGEgY29weQorb2YgdGhlIGJ1ZmZlciBpcyBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgYQorc3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpbgordGhlIGJ1ZmZlci4gIFRoZSBsZW5ndGggb2YgdGhlIGFyZyBidWZmZXIgaW4gdGhpcyBjYXNlIGlzIG5vdCBhbGxvd2VkIHRvCitleGNlZWQgMTAyNCBieXRlcy4KKworSWYgdGhlIGFyZyBnaXZlbiBpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzCithbiBpbnRlZ2VyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW9jdGwgY2FsbCBpbiB0aGUgQworY29kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2lvY3RsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2lvY3RsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1bnNpZ25lZCBpbnQgY29kZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iX2FyZywgaW50IG11dGF0ZV9hcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTAyZmFhMGY3ZWJlMjIxMCBpbnB1dD1lZGU3MGM0MzNjY2NiYmIyXSovCiB7CiAjZGVmaW5lIElPQ1RMX0JVRlNaIDEwMjQKLSAgICBpbnQgZmQ7Ci0gICAgLyogSW4gUHlBcmdfUGFyc2VUdXBsZSBiZWxvdywgd2UgdXNlIHRoZSB1bnNpZ25lZCBub24tY2hlY2tlZCAnSScKLSAgICAgICBmb3JtYXQgZm9yIHRoZSAnY29kZScgcGFyYW1ldGVyIGJlY2F1c2UgUHl0aG9uIHR1cm5zIDB4ODAwMDAwMAotICAgICAgIGludG8gZWl0aGVyIGEgbGFyZ2UgcG9zaXRpdmUgbnVtYmVyIChQeUxvbmcgb3IgUHlJbnQgb24gNjQtYml0Ci0gICAgICAgcGxhdGZvcm1zKSBvciBhIG5lZ2F0aXZlIG51bWJlciBvbiBvdGhlcnMgKDMyLWJpdCBQeUludCkKLSAgICAgICB3aGVyZWFzIHRoZSBzeXN0ZW0gZXhwZWN0cyBpdCB0byBiZSBhIDMyYml0IGJpdCBmaWVsZCB2YWx1ZQorICAgIC8qIFdlIHVzZSB0aGUgdW5zaWduZWQgbm9uLWNoZWNrZWQgJ0knIGZvcm1hdCBmb3IgdGhlICdjb2RlJyBwYXJhbWV0ZXIKKyAgICAgICBiZWNhdXNlIHRoZSBzeXN0ZW0gZXhwZWN0cyBpdCB0byBiZSBhIDMyYml0IGJpdCBmaWVsZCB2YWx1ZQogICAgICAgIHJlZ2FyZGxlc3Mgb2YgaXQgYmVpbmcgcGFzc2VkIGFzIGFuIGludCBvciB1bnNpZ25lZCBsb25nIG9uCiAgICAgICAgdmFyaW91cyBwbGF0Zm9ybXMuICBTZWUgdGhlIHRlcm1pb3MuVElPQ1NXSU5TWiBjb25zdGFudCBhY3Jvc3MKICAgICAgICBwbGF0Zm9ybXMgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcy4KQEAgLTExMSwxMDEgKzE2MSw5OCBAQAogICAgICAgIGluIHRoZWlyIHVuc2lnbmVkIGxvbmcgaW9jdGwgY29kZXMgdGhpcyB3aWxsIGJyZWFrIGFuZCBuZWVkCiAgICAgICAgc3BlY2lhbCBjYXNpbmcgYmFzZWQgb24gdGhlIHBsYXRmb3JtIGJlaW5nIGJ1aWx0IG9uLgogICAgICAqLwotICAgIHVuc2lnbmVkIGludCBjb2RlOwotICAgIGludCBhcmc7CisgICAgaW50IGFyZyA9IDA7CiAgICAgaW50IHJldDsKICAgICBQeV9idWZmZXIgcHN0cjsKICAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgaW50IG11dGF0ZV9hcmcgPSAxOwogICAgIGNoYXIgYnVmW0lPQ1RMX0JVRlNaKzFdOyAgLyogYXJndW1lbnQgcGx1cyBOVUwgYnl0ZSAqLwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mSXcqfGk6aW9jdGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmcHN0ciwgJm11dGF0ZV9hcmcpKSB7Ci0gICAgICAgIGNoYXIgKmFyZzsKLSAgICAgICAgc3RyID0gcHN0ci5idWY7Ci0gICAgICAgIGxlbiA9IHBzdHIubGVuOworICAgIGlmIChvYl9hcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlBcmdfUGFyc2Uob2JfYXJnLCAidyo6aW9jdGwiLCAmcHN0cikpIHsKKyAgICAgICAgICAgIGNoYXIgKmFyZzsKKyAgICAgICAgICAgIHN0ciA9IHBzdHIuYnVmOworICAgICAgICAgICAgbGVuID0gcHN0ci5sZW47CiAKLSAgICAgICAgaWYgKG11dGF0ZV9hcmcpIHsKLSAgICAgICAgICAgIGlmIChsZW4gPD0gSU9DVExfQlVGU1opIHsKLSAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7Ci0gICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIGFyZyA9IGJ1ZjsKKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBJT0NUTF9CVUZTWikgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gc3RyOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGFyZyA9IHN0cjsKKyAgICAgICAgICAgICAgICBpZiAobGVuID4gSU9DVExfQlVGU1opIHsKKyAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImlvY3RsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChidWYgPT0gYXJnKSB7CisgICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyAvKiB0aGluayBhcnJheS5yZXNpemUoKSAqLworICAgICAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnICYmIChsZW4gPD0gSU9DVExfQlVGU1opKSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgYnVmLCBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7IC8qIE5vIGZ1cnRoZXIgYWNjZXNzIHRvIHN0ciBiZWxvdyB0aGlzIHBvaW50ICovCisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeUFyZ19QYXJzZShvYl9hcmcsICJzKjppb2N0bCIsICZwc3RyKSkgeworICAgICAgICAgICAgc3RyID0gcHN0ci5idWY7CisgICAgICAgICAgICBsZW4gPSBwc3RyLmxlbjsKICAgICAgICAgICAgIGlmIChsZW4gPiBJT0NUTF9CVUZTWikgewogICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOwotICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBhcmcgPSBidWY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ1ZiA9PSBhcmcpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgLyogdGhpbmsgYXJyYXkucmVzaXplKCkgKi8KLSAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOworICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGJ1Zik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGFyZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG11dGF0ZV9hcmcgJiYgKGxlbiA8PSBJT0NUTF9CVUZTWikpIHsKLSAgICAgICAgICAgIG1lbWNweShzdHIsIGJ1ZiwgbGVuKTsKLSAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsgLyogTm8gZnVydGhlciBhY2Nlc3MgdG8gc3RyIGJlbG93IHRoaXMgcG9pbnQgKi8KLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtdXRhdGVfYXJnKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJldCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwogICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJcyo6aW9jdGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJnBzdHIpKSB7Ci0gICAgICAgIHN0ciA9IHBzdHIuYnVmOwotICAgICAgICBsZW4gPSBwc3RyLmxlbjsKLSAgICAgICAgaWYgKGxlbiA+IElPQ1RMX0JVRlNaKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpb2N0bCBzdHJpbmcgYXJnIHRvbyBsb25nIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShvYl9hcmcsCisgICAgICAgICAgICAgImk7aW9jdGwgcmVxdWlyZXMgYSBmaWxlIG9yIGZpbGUgZGVzY3JpcHRvciwiCisgICAgICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGFuIGludGVnZXIgb3IgYnVmZmVyIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAmYXJnKSkgeworICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBidWYpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwotICAgIH0KLQotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXJnID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICJPJkl8aTtpb2N0bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKLSAgICAgICAgICIgYW4gaW50ZWdlciBhbmQgb3B0aW9uYWxseSBhbiBpbnRlZ2VyIG9yIGJ1ZmZlciBhcmd1bWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmFyZykpIHsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICAvLyBGYWxsLXRocm91Z2ggdG8gb3V0c2lkZSB0aGUgJ2lmJyBzdGF0ZW1lbnQuCiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKQEAgLTIxOCw1MiArMjY1LDI1IEBACiAjdW5kZWYgSU9DVExfQlVGU1oKIH0KIAotUHlEb2NfU1RSVkFSKGlvY3RsX2RvYywKLSJpb2N0bChmZCwgb3BbLCBhcmdbLCBtdXRhdGVfZmxhZ11dKVxuXAotXG5cCi1QZXJmb3JtIHRoZSBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgVGhlIHZhbHVlcyB1c2VkIGZvciBvcFxuXAotYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZSBhcyBjb25zdGFudHMgaW4gdGhlXG5cCi1mY250bCBvciB0ZXJtaW9zIGxpYnJhcnkgbW9kdWxlcywgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbiB0aGVcblwKLXJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLlxuXAotXG5cCi1UaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhXG5cCi1idWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLiBcblwKLVxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIGEgbXV0YWJsZSBidWZmZXIgKHN1Y2ggYXMgYW4gYXJyYXkpIGFuZCBpZiB0aGVcblwKLW11dGF0ZV9mbGFnIGFyZ3VtZW50ICh3aGljaCBpcyBvbmx5IGFsbG93ZWQgaW4gdGhpcyBjYXNlKSBpcyB0cnVlIHRoZW4gdGhlXG5cCi1idWZmZXIgaXMgKGluIGVmZmVjdCkgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCBjaGFuZ2VzIG1hZGUgYnlcblwKLXRoZSBPUyB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBhZnRlciB0aGUgY2FsbCBoYXNcblwKLXJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW50ZWdlciByZXR1cm5lZCBieSB0aGUgaW9jdGwgc3lzdGVtXG5cCi1jYWxsLlxuXAotXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciBhbmQgdGhlIG11dGFibGVfZmxhZyBhcmd1bWVudCBpcyBub3RcblwKLXBhc3NlZCBvciBpcyBmYWxzZSwgdGhlIGJlaGF2aW9yIGlzIGFzIGlmIGEgc3RyaW5nIGhhZCBiZWVuIHBhc3NlZC4gIFRoaXNcblwKLWJlaGF2aW9yIHdpbGwgY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyBvZiBQeXRob24uXG5cCi1cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBhbiBpbW11dGFibGUgYnVmZmVyIChtb3N0IGxpa2VseSBhIHN0cmluZykgdGhlbiBhIGNvcHlcblwKLW9mIHRoZSBidWZmZXIgaXMgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIGFcblwKLXN0cmluZyBvZiB0aGUgc2FtZSBsZW5ndGggY29udGFpbmluZyB3aGF0ZXZlciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwdXQgaW5cblwKLXRoZSBidWZmZXIuICBUaGUgbGVuZ3RoIG9mIHRoZSBhcmcgYnVmZmVyIGluIHRoaXMgY2FzZSBpcyBub3QgYWxsb3dlZCB0b1xuXAotZXhjZWVkIDEwMjQgYnl0ZXMuXG5cCi1cblwKLUlmIHRoZSBhcmcgZ2l2ZW4gaXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpc1xuXAotYW4gaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGlvY3RsIGNhbGwgaW4gdGhlIENcblwKLWNvZGUuIik7CisvKltjbGluaWMgaW5wdXRdCitmY250bC5mbG9jawogCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgb3BlcmF0aW9uIGFzIGNvZGU6IGludAorICAgIC8KIAotLyogZmxvY2soZmQsIG9wZXJhdGlvbikgKi8KK1BlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uIGBvcGVyYXRpb25gIG9uIGZpbGUgZGVzY3JpcHRvciBgZmRgLgorCitTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UgZm9yIGZsb2NrKDIpIGZvciBkZXRhaWxzIChPbiBzb21lIHN5c3RlbXMsIHRoaXMKK2Z1bmN0aW9uIGlzIGVtdWxhdGVkIHVzaW5nIGZjbnRsKCkpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZmNudGxfZmxvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorZmNudGxfZmxvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM5MDM1MTMzYTdkYmZjOTYgaW5wdXQ9YjcwYTBhNDFjYTIyYThhMF0qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgY29kZTsKICAgICBpbnQgcmV0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIEhBVkVfRkxPQ0sKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmV0ID0gZmxvY2soZmQsIGNvZGUpOwpAQCAtMjk5LDI5ICszMTksNTAgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZmxvY2tfZG9jLAotImZsb2NrKGZkLCBvcGVyYXRpb24pXG5cCi1cblwKLVBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uIG9wIG9uIGZpbGUgZGVzY3JpcHRvciBmZC4gIFNlZSB0aGUgVW5peCBcblwKLW1hbnVhbCBwYWdlIGZvciBmbG9jaygyKSBmb3IgZGV0YWlscy4gIChPbiBzb21lIHN5c3RlbXMsIHRoaXMgZnVuY3Rpb24gaXNcblwKLWVtdWxhdGVkIHVzaW5nIGZjbnRsKCkuKSIpOwogCisvKltjbGluaWMgaW5wdXRdCitmY250bC5sb2NrZgogCi0vKiBsb2NrZihmZCwgb3BlcmF0aW9uKSAqLworICAgIGZkOiBvYmplY3QodHlwZT0naW50JywgY29udmVydGVyPSdjb252X2Rlc2NyaXB0b3InKQorICAgIGNtZCBhcyBjb2RlOiBpbnQKKyAgICBsZW4gYXMgbGVub2JqOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgc3RhcnQgYXMgc3RhcnRvYmo6IG9iamVjdChjX2RlZmF1bHQ9J05VTEwnKSA9IDAKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCisKK0Egd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy4KKworYGZkYCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgb3BlcmF0aW9uIGlzIG9uZQorb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisKKyAgICBMT0NLX1VOIC0gdW5sb2NrCisgICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9jaworICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrCisKK1doZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGgKK0xPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlCitsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4gSU9FcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsCitoYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcKK3N5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLgorCitgbGVuYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvCitFT0YuICBgc3RhcnRgIGlzIHRoZSBieXRlIG9mZnNldCwgcmVsYXRpdmUgdG8gYHdoZW5jZWAsIHRvIHRoYXQgdGhlIGxvY2sKK3N0YXJ0cy4gIGB3aGVuY2VgIGlzIGFzIHdpdGggZmlsZW9iai5zZWVrKCksIHNwZWNpZmljYWxseToKKworICAgIDAgLSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgKFNFRUtfU0VUKQorICAgIDEgLSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBidWZmZXIgcG9zaXRpb24gKFNFRUtfQ1VSKQorICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2xvY2tmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmxlbm9iaiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0b2JqLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxYWYzNWViYTA4YjlhZjcgaW5wdXQ9OWM1OTQzOTFkZTgyMWYyNF0qLwogewotICAgIGludCBmZCwgY29kZSwgcmV0LCB3aGVuY2UgPSAwOwotICAgIFB5T2JqZWN0ICpsZW5vYmogPSBOVUxMLCAqc3RhcnRvYmogPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmV0OwogCiAjaWZuZGVmIExPQ0tfU0gKICNkZWZpbmUgTE9DS19TSCAgICAgICAgIDEgICAgICAgLyogc2hhcmVkIGxvY2sgKi8KQEAgLTM3NCw0MyArNDE1LDE3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGxvY2tmX2RvYywKLSJsb2NrZiAoZmQsIG9wZXJhdGlvbiwgbGVuZ3RoPTAsIHN0YXJ0PTAsIHdoZW5jZT0wKVxuXAotXG5cCi1UaGlzIGlzIGVzc2VudGlhbGx5IGEgd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy4gIGZkIGlzIHRoZVxuXAotZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgb3BlcmF0aW9uIGlzIG9uZSBvZiB0aGVcblwKLWZvbGxvd2luZyB2YWx1ZXM6XG5cCi1cblwKLSAgICBMT0NLX1VOIC0gdW5sb2NrXG5cCi0gICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9ja1xuXAotICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrXG5cCi1cblwKLVdoZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGhcblwKLUxPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlXG5cCi1sb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4gSU9FcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsXG5cCi1oYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmdcblwKLXN5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLlxuXAotXG5cCi1sZW5ndGggaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCB3aXRoIHRoZSBkZWZhdWx0IG1lYW5pbmcgdG8gbG9jayB0b1xuXAotRU9GLiAgc3RhcnQgaXMgdGhlIGJ5dGUgb2Zmc2V0LCByZWxhdGl2ZSB0byB3aGVuY2UsIHRvIHRoYXQgdGhlIGxvY2tcblwKLXN0YXJ0cy4gIHdoZW5jZSBpcyBhcyB3aXRoIGZpbGVvYmouc2VlaygpLCBzcGVjaWZpY2FsbHk6XG5cCi1cblwKLSAgICAwIC0gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIChTRUVLX1NFVClcblwKLSAgICAxIC0gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgYnVmZmVyIHBvc2l0aW9uIChTRUVLX0NVUilcblwKLSAgICAyIC0gcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSAoU0VFS19FTkQpIik7Ci0KIC8qIExpc3Qgb2YgZnVuY3Rpb25zICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBmY250bF9tZXRob2RzW10gPSB7Ci0gICAgeyJmY250bCIsICAgICAgICAgICBmY250bF9mY250bCwgTUVUSF9WQVJBUkdTLCBmY250bF9kb2N9LAotICAgIHsiaW9jdGwiLCAgICAgICAgICAgZmNudGxfaW9jdGwsIE1FVEhfVkFSQVJHUywgaW9jdGxfZG9jfSwKLSAgICB7ImZsb2NrIiwgICAgICAgICAgIGZjbnRsX2Zsb2NrLCBNRVRIX1ZBUkFSR1MsIGZsb2NrX2RvY30sCi0gICAgeyJsb2NrZiIsICAgICAgIGZjbnRsX2xvY2tmLCBNRVRIX1ZBUkFSR1MsIGxvY2tmX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBGQ05UTF9GQ05UTF9NRVRIT0RERUYKKyAgICBGQ05UTF9JT0NUTF9NRVRIT0RERUYKKyAgICBGQ05UTF9GTE9DS19NRVRIT0RERUYKKyAgICBGQ05UTF9MT0NLRl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA5YmIzNjY2Li5jYjcyMjJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIiAgICAgICAgLyogZm9yIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCAqLworI2luY2x1ZGUgInB5dGltZS5oIiAgICAgICAgICAgICAvKiBmb3IgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICovCiAKIC8qIEdldCBhbiBvYmplY3QncyBHQyBoZWFkICovCiAjZGVmaW5lIEFTX0dDKG8pICgoUHlHQ19IZWFkICopKG8pLTEpCkBAIC0xNjYsNyArMTY3LDYgQEAKICAgICAgICAgICAgICAgICBERUJVR19VTkNPTExFQ1RBQkxFIHwgXAogICAgICAgICAgICAgICAgIERFQlVHX1NBVkVBTEwKIHN0YXRpYyBpbnQgZGVidWc7Ci1zdGF0aWMgUHlPYmplY3QgKnRtb2QgPSBOVUxMOwogCiAvKiBSdW5uaW5nIHN0YXRzIHBlciBnZW5lcmF0aW9uICovCiBzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyB7CkBAIC04OTQsMjYgKzg5NCw2IEBACiAgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogfQogCi1zdGF0aWMgZG91YmxlCi1nZXRfdGltZSh2b2lkKQotewotICAgIGRvdWJsZSByZXN1bHQgPSAwOwotICAgIGlmICh0bW9kICE9IE5VTEwpIHsKLSAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7Ci0KLSAgICAgICAgUHlPYmplY3QgKmYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRtb2QsICZQeUlkX3RpbWUsIE5VTEwpOwotICAgICAgICBpZiAoZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5RmxvYXRfQ2hlY2soZikpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Bc0RvdWJsZShmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiAgUmVhZCB0aGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZQogICogY29sbGVjdGlvbiBwcm9jZXNzIHdvcmtzLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTkyOCw3ICs5MDgsOCBAQAogICAgIFB5R0NfSGVhZCB1bnJlYWNoYWJsZTsgLyogbm9uLXByb2JsZW1hdGljIHVucmVhY2hhYmxlIHRyYXNoICovCiAgICAgUHlHQ19IZWFkIGZpbmFsaXplcnM7ICAvKiBvYmplY3RzIHdpdGgsICYgcmVhY2hhYmxlIGZyb20sIF9fZGVsX18gKi8KICAgICBQeUdDX0hlYWQgKmdjOwotICAgIGRvdWJsZSB0MSA9IDAuMDsKKyAgICBfUHlUaW1lX3QgdDEgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwogICAgIHN0cnVjdCBnY19nZW5lcmF0aW9uX3N0YXRzICpzdGF0cyA9ICZnZW5lcmF0aW9uX3N0YXRzW2dlbmVyYXRpb25dOwogCiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKQEAgLTkzNiw5ICs5MTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbik7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogb2JqZWN0cyBpbiBlYWNoIGdlbmVyYXRpb246Iik7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fR0VORVJBVElPTlM7IGkrKykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiAlemQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfbGlzdF9zaXplKEdFTl9IRUFEKGkpKSk7Ci0gICAgICAgIHQxID0gZ2V0X3RpbWUoKTsKKyAgICAgICAgdDEgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIlxuIik7CiAgICAgfQogCkBAIC0xMDQyLDE5ICsxMDI0LDE2IEBACiAgICAgICAgICAgICBkZWJ1Z19jeWNsZSgidW5jb2xsZWN0YWJsZSIsIEZST01fR0MoZ2MpKTsKICAgICB9CiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKLSAgICAgICAgZG91YmxlIHQyID0gZ2V0X3RpbWUoKTsKKyAgICAgICAgX1B5VGltZV90IHQyID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChtID09IDAgJiYgbiA9PSAwKQogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBkb25lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICJnYzogZG9uZSwgIgotICAgICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIHVucmVhY2hhYmxlLCAiCi0gICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgdW5jb2xsZWN0YWJsZSIsCisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoCisgICAgICAgICAgICAgICAgImdjOiBkb25lLCAlemQgdW5yZWFjaGFibGUsICV6ZCB1bmNvbGxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICBuK20sIG4pOwotICAgICAgICBpZiAodDEgJiYgdDIpIHsKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIsICUuNGZzIGVsYXBzZWQiLCB0Mi10MSk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIi5cbiIpOworICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiLCAlLjRmcyBlbGFwc2VkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0MiAtIHQxKSk7CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGluc3RhbmNlcyBpbiB0aGUgdW5jb2xsZWN0YWJsZSBzZXQgdG8gYSBQeXRob24KQEAgLTE1ODEsMTggKzE1NjAsNiBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImNhbGxiYWNrcyIsIGNhbGxiYWNrcykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEltcG9ydGluZyBjYW4ndCBiZSBkb25lIGluIGNvbGxlY3QoKSBiZWNhdXNlIGNvbGxlY3QoKQotICAgICAqIGNhbiBiZSBjYWxsZWQgdmlhIFB5R0NfQ29sbGVjdCgpIGluIFB5X0ZpbmFsaXplKCkuCi0gICAgICogVGhpcyB3b3VsZG4ndCBiZSBhIHByb2JsZW0sIGV4Y2VwdCB0aGF0IDxpbml0aWFsaXplZD4gaXMKLSAgICAgKiByZXNldCB0byAwIGJlZm9yZSBjYWxsaW5nIGNvbGxlY3Qgd2hpY2ggdHJpcHMgdXAKLSAgICAgKiB0aGUgaW1wb3J0IGFuZCB0cmlnZ2VycyBhbiBhc3NlcnRpb24uCi0gICAgICovCi0gICAgaWYgKHRtb2QgPT0gTlVMTCkgewotICAgICAgICB0bW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOwotICAgICAgICBpZiAodG1vZCA9PSBOVUxMKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0KICNkZWZpbmUgQUREX0lOVChOQU1FKSBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgI05BTUUsIE5BTUUpIDwgMCkgcmV0dXJuIE5VTEwKICAgICBBRERfSU5UKERFQlVHX1NUQVRTKTsKICAgICBBRERfSU5UKERFQlVHX0NPTExFQ1RBQkxFKTsKQEAgLTE2ODEsNyArMTY0OCw2IEBACiBfUHlHQ19GaW5pKHZvaWQpCiB7CiAgICAgUHlfQ0xFQVIoY2FsbGJhY2tzKTsKLSAgICBQeV9DTEVBUih0bW9kKTsKIH0KIAogLyogZm9yIGRlYnVnZ2luZyAqLwpAQCAtMTcxNSwxNSArMTY4MSwxOSBAQAogICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhvcCk7CiB9CiAKLVB5T2JqZWN0ICoKLV9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90IGJhc2ljc2l6ZSkKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlPYmplY3RfR0NfQWxsb2MoaW50IHVzZV9jYWxsb2MsIHNpemVfdCBiYXNpY3NpemUpCiB7CiAgICAgUHlPYmplY3QgKm9wOwogICAgIFB5R0NfSGVhZCAqZzsKKyAgICBzaXplX3Qgc2l6ZTsKICAgICBpZiAoYmFzaWNzaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlHQ19IZWFkKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9NQUxMT0MoCi0gICAgICAgIHNpemVvZihQeUdDX0hlYWQpICsgYmFzaWNzaXplKTsKKyAgICBzaXplID0gc2l6ZW9mKFB5R0NfSGVhZCkgKyBiYXNpY3NpemU7CisgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgIGcgPSAoUHlHQ19IZWFkICopUHlPYmplY3RfQ2FsbG9jKDEsIHNpemUpOworICAgIGVsc2UKKyAgICAgICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9NYWxsb2Moc2l6ZSk7CiAgICAgaWYgKGcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgZy0+Z2MuZ2NfcmVmcyA9IDA7CkBAIC0xNzQzLDYgKzE3MTMsMTggQEAKIH0KIAogUHlPYmplY3QgKgorX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3QgYmFzaWNzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfR0NfQWxsb2MoMCwgYmFzaWNzaXplKTsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3QgYmFzaWNzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfR0NfQWxsb2MoMSwgYmFzaWNzaXplKTsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0dDX05ldyhQeVR5cGVPYmplY3QgKnRwKQogewogICAgIFB5T2JqZWN0ICpvcCA9IF9QeU9iamVjdF9HQ19NYWxsb2MoX1B5T2JqZWN0X1NJWkUodHApKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggMTNlMzgxNy4uMDNkMjkyYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTEzMSw2ICsxMzEsMjMgQEAKIHN0YXRpYyB3Y2hhcl90IHByb2dwYXRoW01BWFBBVEhMRU4rMV07CiBzdGF0aWMgd2NoYXJfdCAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKIAorLyogR2V0IGZpbGUgc3RhdHVzLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKworc3RhdGljIGludAorX1B5X3dzdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCit7CisgICAgaW50IGVycjsKKyAgICBjaGFyICpmbmFtZTsKKyAgICBmbmFtZSA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKKyAgICBpZiAoZm5hbWUgPT0gTlVMTCkgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlcnIgPSBzdGF0KGZuYW1lLCBidWYpOworICAgIFB5TWVtX0ZyZWUoZm5hbWUpOworICAgIHJldHVybiBlcnI7Cit9CisKIHN0YXRpYyB2b2lkCiByZWR1Y2Uod2NoYXJfdCAqZGlyKQogewpAQCAtMTUzLDE0ICsxNzAsMTQgQEAKIAogCiBzdGF0aWMgaW50Ci1pc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSkgICAgICAgIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLworaXNtb2R1bGUod2NoYXJfdCAqZmlsZW5hbWUpICAgICAgICAvKiBJcyBtb2R1bGUgLS0gY2hlY2sgZm9yIC5weWMgdG9vICovCiB7CiAgICAgaWYgKGlzZmlsZShmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogQ2hlY2sgZm9yIHRoZSBjb21waWxlZCB2ZXJzaW9uIG9mIHByZWZpeC4gKi8KICAgICBpZiAod2NzbGVuKGZpbGVuYW1lKSA8IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgd2NzY2F0KGZpbGVuYW1lLCBQeV9PcHRpbWl6ZUZsYWcgPyBMIm8iIDogTCJjIik7CisgICAgICAgIHdjc2NhdChmaWxlbmFtZSwgTCJjIik7CiAgICAgICAgIGlmIChpc2ZpbGUoZmlsZW5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMzM2LDcgKzM1Myw3IEBACiAgICAgam9pbnBhdGgocHJlZml4LCBMIk1vZHVsZXMvU2V0dXAiKTsKICAgICBpZiAoaXNmaWxlKHByZWZpeCkpIHsKICAgICAgICAgLyogQ2hlY2sgVlBBVEggdG8gc2VlIGlmIGFyZ3YwX3BhdGggaXMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgdnBhdGggPSBfUHlfY2hhcjJ3Y2hhcihWUEFUSCwgTlVMTCk7CisgICAgICAgIHZwYXRoID0gUHlfRGVjb2RlTG9jYWxlKFZQQVRILCBOVUxMKTsKICAgICAgICAgaWYgKHZwYXRoICE9IE5VTEwpIHsKICAgICAgICAgICAgIHdjc25jcHkocHJlZml4LCBhcmd2MF9wYXRoLCBNQVhQQVRITEVOKTsKICAgICAgICAgICAgIHByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwpAQCAtNDkxLDEwICs1MDgsMTAgQEAKICAgICB3Y2hhcl90ICpfcHl0aG9ucGF0aCwgKl9wcmVmaXgsICpfZXhlY19wcmVmaXg7CiAgICAgd2NoYXJfdCAqbGliX3B5dGhvbjsKIAotICAgIF9weXRob25wYXRoID0gX1B5X2NoYXIyd2NoYXIoUFlUSE9OUEFUSCwgTlVMTCk7Ci0gICAgX3ByZWZpeCA9IF9QeV9jaGFyMndjaGFyKFBSRUZJWCwgTlVMTCk7Ci0gICAgX2V4ZWNfcHJlZml4ID0gX1B5X2NoYXIyd2NoYXIoRVhFQ19QUkVGSVgsIE5VTEwpOwotICAgIGxpYl9weXRob24gPSBfUHlfY2hhcjJ3Y2hhcigibGliL3B5dGhvbiIgVkVSU0lPTiwgTlVMTCk7CisgICAgX3B5dGhvbnBhdGggPSBQeV9EZWNvZGVMb2NhbGUoUFlUSE9OUEFUSCwgTlVMTCk7CisgICAgX3ByZWZpeCA9IFB5X0RlY29kZUxvY2FsZShQUkVGSVgsIE5VTEwpOworICAgIF9leGVjX3ByZWZpeCA9IFB5X0RlY29kZUxvY2FsZShFWEVDX1BSRUZJWCwgTlVMTCk7CisgICAgbGliX3B5dGhvbiA9IFB5X0RlY29kZUxvY2FsZSgibGliL3B5dGhvbiIgVkVSU0lPTiwgTlVMTCk7CiAKICAgICBpZiAoIV9weXRob25wYXRoIHx8ICFfcHJlZml4IHx8ICFfZXhlY19wcmVmaXggfHwgIWxpYl9weXRob24pIHsKICAgICAgICAgUHlfRmF0YWxFcnJvcigKQEAgLTUwMyw3ICs1MjAsNyBAQAogICAgIH0KIAogICAgIGlmIChfcGF0aCkgewotICAgICAgICBwYXRoX2J1ZmZlciA9IF9QeV9jaGFyMndjaGFyKF9wYXRoLCBOVUxMKTsKKyAgICAgICAgcGF0aF9idWZmZXIgPSBQeV9EZWNvZGVMb2NhbGUoX3BhdGgsIE5VTEwpOwogICAgICAgICBwYXRoID0gcGF0aF9idWZmZXI7CiAgICAgfQogCkBAIC01ODQsNyArNjAxLDcgQEAKICAgICAgICAgKiogYmUgcnVubmluZyB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSwgc28gd2UgdXNlIHRoZQogICAgICAgICAqKiBidWlsZC1kaXJlY3Rvcnktc3BlY2lmaWMgbG9naWMgdG8gZmluZCBMaWIgYW5kIHN1Y2guCiAgICAgICAgICovCi0gICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihtb2RQYXRoLCBOVUxMKTsKKyAgICAgICAgd2NoYXJfdCogd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShtb2RQYXRoLCBOVUxMKTsKICAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBmcmFtZXdvcmsgbG9jYXRpb24iKTsKICAgICAgICAgfQpAQCAtNzA5LDcgKzcyNiw3IEBACiAKICAgICBpZiAoX3J0cHlwYXRoICYmIF9ydHB5cGF0aFswXSAhPSAnXDAnKSB7CiAgICAgICAgIHNpemVfdCBydHB5cGF0aF9sZW47Ci0gICAgICAgIHJ0cHlwYXRoID0gX1B5X2NoYXIyd2NoYXIoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKKyAgICAgICAgcnRweXBhdGggPSBQeV9EZWNvZGVMb2NhbGUoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKICAgICAgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCiAgICAgICAgICAgICBidWZzeiArPSBydHB5cGF0aF9sZW4gKyAxOwogICAgIH0KQEAgLTg3NCw0ICs4OTEsMyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggZGE3ODI1My4uNDAzZTQzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC02LDYgKzYsMTIgQEAKIAogI2luY2x1ZGUgPGdycC5oPgogCisjaW5jbHVkZSAiY2xpbmljL2dycG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgZ3JwCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jYWRlNjNmMmVkMWJkOWY4XSovCisKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9ncm91cF90eXBlX2ZpZWxkc1tdID0gewogICAgeyJncl9uYW1lIiwgImdyb3VwIG5hbWUifSwKICAgIHsiZ3JfcGFzc3dkIiwgInBhc3N3b3JkIn0sCkBAIC03NiwxNCArODIsMjUgQEAKICAgICByZXR1cm4gdjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdyZ2lkCisKKyAgICBpZDogb2JqZWN0CisKK1JldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELgorCitJZiBpZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcHlvX2lkKQorZ3JwX2dldGdyZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThhMTFmNWZkZWI4Yzc4YTAgaW5wdXQ9MTVmYTBlMmNjZjVjZGEyNV0qLwogewogICAgIFB5T2JqZWN0ICpweV9pbnRfaWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIHN0cnVjdCBncm91cCAqcDsKIAotICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcocHlvX2lkKTsKKyAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKICAgICBpZiAoIXB5X2ludF9pZCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgewpAQCAtMTAzLDIyICsxMjAsMzEgQEAKICAgICByZXR1cm4gbWtncmVudChwKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncm5hbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBzdHJ1Y3QgZ3JvdXAgKnA7Ci0gICAgUHlPYmplY3QgKmFyZywgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK2dycC5nZXRncm5hbQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldGdybmFtIiwgJmFyZykpCisgICAgbmFtZTogdW5pY29kZQorCitSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gZ3JvdXAgbmFtZS4KKworSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdybmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2Q0NzUxMWY0ODU0ZGE4ZSBpbnB1dD0wOGRlZDI5YWZmYTNjODYzXSovCit7CisgICAgY2hhciAqbmFtZV9jaGFyczsKKyAgICBzdHJ1Y3QgZ3JvdXAgKnA7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KG5hbWUpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKKyAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lX2NoYXJzLCBOVUxMKSA9PSAtMSkKICAgICAgICAgZ290byBvdXQ7CiAKLSAgICBpZiAoKHAgPSBnZXRncm5hbShuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJnZXRncm5hbSgpOiBuYW1lIG5vdCBmb3VuZDogJXMiLCBuYW1lKTsKKyAgICBpZiAoKHAgPSBnZXRncm5hbShuYW1lX2NoYXJzKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJnZXRncm5hbSgpOiBuYW1lIG5vdCBmb3VuZDogJXMiLCBuYW1lX2NoYXJzKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIHJldHZhbCA9IG1rZ3JlbnQocCk7CkBAIC0xMjcsOCArMTUzLDE4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdyYWxsCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBncm91cCBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuCisKK0FuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggJysnIG9yICctJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uCit0byB1c2UgWVAvTklTIGFuZCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGdldGdybmFtIG9yIGdldGdyZ2lkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaWdub3JlKQorZ3JwX2dldGdyYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZGQ5MDM3YTIwYzIwMmRlIGlucHV0PWQ3ZGY3NmM4MjVjMzY3ZGZdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKICAgICBzdHJ1Y3QgZ3JvdXAgKnA7CkBAIC0xNTEsMjAgKzE4NywxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZ3JwX21ldGhvZHNbXSA9IHsKLSAgICB7ImdldGdyZ2lkIiwgICAgICAgIGdycF9nZXRncmdpZCwgICBNRVRIX08sCi0gICAgICJnZXRncmdpZChpZCkgLT4gKGdyX25hbWUsZ3JfcGFzc3dkLGdyX2dpZCxncl9tZW0pXG5cCi1SZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyBncm91cCBJRC4gIElmXG5cCi1pZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiJ9LAotICAgIHsiZ2V0Z3JuYW0iLCAgICAgICAgZ3JwX2dldGdybmFtLCAgIE1FVEhfVkFSQVJHUywKLSAgICAgImdldGdybmFtKG5hbWUpIC0+IChncl9uYW1lLGdyX3Bhc3N3ZCxncl9naWQsZ3JfbWVtKVxuXAotUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGdyb3VwIG5hbWUuICBJZlxuXAotbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiJ9LAotICAgIHsiZ2V0Z3JhbGwiLCAgICAgICAgZ3JwX2dldGdyYWxsLCAgIE1FVEhfTk9BUkdTLAotICAgICAiZ2V0Z3JhbGwoKSAtPiBsaXN0IG9mIHR1cGxlc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGdyb3VwIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cblwKLUFuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggJysnIG9yICctJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uXG5cCi10byB1c2UgWVAvTklTIGFuZCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGdldGdybmFtIG9yIGdldGdyZ2lkLiJ9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgR1JQX0dFVEdSR0lEX01FVEhPRERFRgorICAgIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYKKyAgICBHUlBfR0VUR1JBTExfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9CiB9OwogCiBQeURvY19TVFJWQVIoZ3JwX19kb2NfXywKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IDQ2OTNmYmMuLjE2YWMyZmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMzg4NCw3ICszODg0LDcgQEAKIAogZmFzdF9tb2RlOiAgd2hlbiBjbnQgYW4gaW50ZWdlciA8IFBZX1NTSVpFX1RfTUFYIGFuZCBubyBzdGVwIGlzIHNwZWNpZmllZC4KIAotICAgIGFzc2VydChjbnQgIT0gUFlfU1NJWkVfVF9NQVggJiYgbG9uZ19jbnQgPT0gTlVMTCAmJiBsb25nX3N0ZXA9PVB5SW50KDEpKTsKKyAgICBhc3NlcnQoY250ICE9IFBZX1NTSVpFX1RfTUFYICYmIGxvbmdfY250ID09IE5VTEwgJiYgbG9uZ19zdGVwPT1QeUxvbmcoMSkpOwogICAgIEFkdmFuY2VzIHdpdGg6ICBjbnQgKz0gMQogICAgIFdoZW4gY291bnQgaGl0cyBZX1NTSVpFX1RfTUFYLCBzd2l0Y2ggdG8gc2xvd19tb2RlLgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2xkX3NvX2FpeC5pbiBiL01vZHVsZXMvbGRfc29fYWl4LmluCmluZGV4IDg2YTlmN2UuLjk2MTUzMmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbGRfc29fYWl4LmluCisrKyBiL01vZHVsZXMvbGRfc29fYWl4LmluCkBAIC01LDcgKzUsNyBAQAogIyAgIFRZUEU6ICAgICAgICAgICBleGVjdXRhYmxlLCB1c2VzIG1ha2V4cF9haXgKICMgICBTWVNURU06ICAgICAgICAgQUlYCiAjCi0jICAgREVTQ1JJUFRJT046ICAgIENyZWF0ZXMgYSBzaGFyZWFibGUgLm8gZnJvbSBhIHNldCBvZiBwcmUtY29tcGlsZWQgCisjICAgREVTQ1JJUFRJT046ICAgIENyZWF0ZXMgYSBzaGFyZWFibGUgLm8gZnJvbSBhIHNldCBvZiBwcmUtY29tcGlsZWQKICMgICAgICAgICAgICAgICAgICAgKHVuc2hhcmVkKSAubyBmaWxlcwogIwogIyAgIFVTQUdFOiAgICAgICAgICBsZF9zb19haXggW0NDXSBbYXJndW1lbnRzXQpAQCAtNDYsNyArNDYsNyBAQAogIyAgICAgICAgICAgICAgICAgICA0LiAgVW5jb21tZW50aW5nIHRoZSAiZWNobyIgbGluZXMgZ2l2ZXMgZGV0YWlsZWQgb3V0cHV0CiAjICAgICAgICAgICAgICAgICAgICAgICBhYm91dCB0aGUgY29tbWFuZHMgZXhlY3V0ZWQgaW4gdGhlIHNjcmlwdC4KICMKLSMgICAgICAgICAgICAgICAgICAgICAgIAorIwogIyAgIEhJU1RPUlk6ICAgICAgICBPY3QtMTk5NiAgICAtLSBTdXBwb3J0IGFkZGVkIGZvciBtdWx0aXBsZSAubyBmaWxlcyAtLQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBhbmQgb3B0aW9uYWwgYXJndW1lbnRzIHByb2Nlc3NpbmcuICAtLQogIyAgICAgICAgICAgICAgICAgICBDaHJpcyBNeWVycyAobXllcnNAdGMuY29ybmVsbC5lZHUpLCBLZWl0aCBLd29rCkBAIC0xMzIsNyArMTMyLDcgQEAKIGRvbmUKIAogaWYgdGVzdCAiJG9iamZpbGUiID0gImxpYnB5dGhvbkBWRVJTSU9OQEBBQklGTEFHU0Auc28iOyB0aGVuCi0gIGxkc29jb3JlbW9kZT0idHJ1ZSIgCisgIGxkc29jb3JlbW9kZT0idHJ1ZSIKIGZpCiAKIGlmIHRlc3QgLXogIiRvYmpzIjsgdGhlbgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWluLmMgYi9Nb2R1bGVzL21haW4uYwppbmRleCA4N2EyMWQ3Li4yYTllYTI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21haW4uYworKysgYi9Nb2R1bGVzL21haW4uYwpAQCAtOSw3ICs5LDYgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaWZkZWYgSEFWRV9GQ05UTF9ICiAjaW5jbHVkZSA8ZmNudGwuaD4KLSNkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgogI2VuZGlmCiAjZW5kaWYKIApAQCAtMzQzLDYgKzM0Miw4IEBACiAgICAgaW50IHZlcnNpb24gPSAwOwogICAgIGludCBzYXdfdW5idWZmZXJlZF9mbGFnID0gMDsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CisgICAgUHlPYmplY3QgKndhcm5pbmdfb3B0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb25zID0gTlVMTDsKIAogICAgIGNmLmNmX2ZsYWdzID0gMDsKIApAQCAtNDY1LDcgKzQ2NiwxNSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnVyc6Ci0gICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uKF9QeU9TX29wdGFyZyk7CisgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb25zID09IE5VTEwpCisgICAgICAgICAgICAgICAgd2FybmluZ19vcHRpb25zID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7CisgICAgICAgICAgICB3YXJuaW5nX29wdGlvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoX1B5T1Nfb3B0YXJnLCAtMSk7CisgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb24gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7CisgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHdhcm5pbmdfb3B0aW9ucywgd2FybmluZ19vcHRpb24pOworICAgICAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdfb3B0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ1gnOgpAQCAtNTExLDE2ICs1MjAsMTYgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcgJiYgKHdwID0gX3dnZXRlbnYoTCJQWVRIT05XQVJOSU5HUyIpKSAmJgogICAgICAgICAqd3AgIT0gTCdcMCcpIHsKLSAgICAgICAgd2NoYXJfdCAqYnVmLCAqd2FybmluZzsKKyAgICAgICAgd2NoYXJfdCAqYnVmLCAqd2FybmluZywgKmNvbnRleHQgPSBOVUxMOwogCiAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fUmF3TWFsbG9jKCh3Y3NsZW4od3ApICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9OV0FSTklOR1MiKTsKICAgICAgICAgd2NzY3B5KGJ1Ziwgd3ApOwotICAgICAgICBmb3IgKHdhcm5pbmcgPSB3Y3N0b2soYnVmLCBMIiwiKTsKKyAgICAgICAgZm9yICh3YXJuaW5nID0gd2NzdG9rX3MoYnVmLCBMIiwiLCAmY29udGV4dCk7CiAgICAgICAgICAgICAgd2FybmluZyAhPSBOVUxMOwotICAgICAgICAgICAgIHdhcm5pbmcgPSB3Y3N0b2soTlVMTCwgTCIsIikpIHsKKyAgICAgICAgICAgICB3YXJuaW5nID0gd2NzdG9rX3MoTlVMTCwgTCIsIiwgJmNvbnRleHQpKSB7CiAgICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uKHdhcm5pbmcpOwogICAgICAgICB9CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKQEAgLTU1OSw2ICs1NjgsMTIgQEAKICAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgIH0KICNlbmRpZgorICAgIGlmICh3YXJuaW5nX29wdGlvbnMgIT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeUxpc3RfR0VUX1NJWkUod2FybmluZ19vcHRpb25zKTsgaSsrKSB7CisgICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZShQeUxpc3RfR0VUX0lURU0od2FybmluZ19vcHRpb25zLCBpKSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoY29tbWFuZCA9PSBOVUxMICYmIG1vZHVsZSA9PSBOVUxMICYmIF9QeU9TX29wdGluZCA8IGFyZ2MgJiYKICAgICAgICAgd2NzY21wKGFyZ3ZbX1B5T1Nfb3B0aW5kXSwgTCItIikgIT0gMCkKQEAgLTYzMSw3ICs2NDYsNyBAQAogICAgICAgICAgICAgLyogVXNlZCBieSBNYWMvVG9vbHMvcHl0aG9udy5jIHRvIGZvcndhcmQKICAgICAgICAgICAgICAqIHRoZSBhcmd2MCBvZiB0aGUgc3R1YiBleGVjdXRhYmxlCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihweXZlbnZfbGF1bmNoZXIsIE5VTEwpOworICAgICAgICAgICAgd2NoYXJfdCogd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShweXZlbnZfbGF1bmNoZXIsIE5VTEwpOwogCiAgICAgICAgICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBfX1BZVkVOVl9MQVVOQ0hFUl9fIik7CkBAIC02NTIsNiArNjY3LDcgQEAKICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKICNlbmRpZgogICAgIFB5X0luaXRpYWxpemUoKTsKKyAgICBQeV9YREVDUkVGKHdhcm5pbmdfb3B0aW9ucyk7CiAKICAgICBpZiAoIVB5X1F1aWV0RmxhZyAmJiAoUHlfVmVyYm9zZUZsYWcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tYW5kID09IE5VTEwgJiYgZmlsZW5hbWUgPT0gTlVMTCAmJgpAQCAtNzEzLDcgKzcyOSw3IEBACiAgICAgICAgICAgICAgICAgY2hhciAqY2ZpbGVuYW1lX2J1ZmZlcjsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgaW50IGVyciA9IGVycm5vOwotICAgICAgICAgICAgICAgIGNmaWxlbmFtZV9idWZmZXIgPSBfUHlfd2NoYXIyY2hhcihmaWxlbmFtZSwgTlVMTCk7CisgICAgICAgICAgICAgICAgY2ZpbGVuYW1lX2J1ZmZlciA9IFB5X0VuY29kZUxvY2FsZShmaWxlbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKGNmaWxlbmFtZV9idWZmZXIgIT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgY2ZpbGVuYW1lID0gY2ZpbGVuYW1lX2J1ZmZlcjsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC03MzYsMTEgKzc1MiwxMiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvKiBYWFg6IGRvZXMgdGhpcyB3b3JrIG9uIFdpbi9XaW42ND8gKHNlZSBwb3NpeF9mc3RhdCkgKi8KLSAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgICAgICAgICAgICBpZiAoZnN0YXQoZmlsZW5vKGZwKSwgJnNiKSA9PSAwICYmCisgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzYjsKKyAgICAgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UoZmlsZW5vKGZwKSwgJnNiKSA9PSAwICYmCiAgICAgICAgICAgICAgICAgICAgIFNfSVNESVIoc2Iuc3RfbW9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlbHM6ICclbHMnIGlzIGEgZGlyZWN0b3J5LCBjYW5ub3QgY29udGludWVcbiIsIGFyZ3ZbMF0sIGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVsczogJyVscycgaXMgYSBkaXJlY3RvcnksIGNhbm5vdCBjb250aW51ZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2WzBdLCBmaWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFrZXNldHVwIGIvTW9kdWxlcy9tYWtlc2V0dXAKaW5kZXggOGI1Y2MyOC4uOTBkYjQyZSAxMDA3NTUKLS0tIGEvTW9kdWxlcy9tYWtlc2V0dXAKKysrIGIvTW9kdWxlcy9tYWtlc2V0dXAKQEAgLTI2Niw3ICsyNjYsNyBAQAogCSopICBzZWQgLWUgIgogCQkxaSROTC8qIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gJGNvbmZpZyBieSBtYWtlc2V0dXAuICovCiAJCS9NQVJLRVIgMS9pJE5MJEVYVERFQ0xTCi0gCisKIAkJL01BUktFUiAyL2kkTkwkSU5JVEJJVFMKIAogCQkiICRjb25maWcgPmNvbmZpZy5jCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IDI0M2UyYTMuLjkzNTllYjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC0yMjMsNiArMjIzLDM1IEBACiAgICAgcmV0dXJuIG51bS9kZW47CiB9CiAKKy8qIENvbnN0YW50IGZvciAraW5maW5pdHksIGdlbmVyYXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZmxvYXQoJ2luZicpLiAqLworCitzdGF0aWMgZG91YmxlCittX2luZih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eSgwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X0hVR0VfVkFMOworI2VuZGlmCit9CisKKy8qIENvbnN0YW50IG5hbiB2YWx1ZSwgZ2VuZXJhdGVkIGluIHRoZSBzYW1lIHdheSBhcyBmbG9hdCgnbmFuJykuICovCisvKiBXZSBkb24ndCBjdXJyZW50bHkgYXNzdW1lIHRoYXQgUHlfTkFOIGlzIGRlZmluZWQgZXZlcnl3aGVyZS4gKi8KKworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorCitzdGF0aWMgZG91YmxlCittX25hbih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9OQU47CisjZW5kaWYKK30KKworI2VuZGlmCisKIHN0YXRpYyBkb3VibGUKIG1fdGdhbW1hKGRvdWJsZSB4KQogewpAQCAtNjU2LDYgKzY4NSwzMyBAQAogfQogCiAKK3N0YXRpYyBQeU9iamVjdCAqCittYXRoX2djZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmEsICpiLCAqZzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086Z2NkIiwgJmEsICZiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhID0gUHlOdW1iZXJfSW5kZXgoYSk7CisgICAgaWYgKGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYiA9IFB5TnVtYmVyX0luZGV4KGIpOworICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZyA9IF9QeUxvbmdfR0NEKGEsIGIpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgcmV0dXJuIGc7Cit9CisKK1B5RG9jX1NUUlZBUihtYXRoX2djZF9kb2MsCisiZ2NkKHgsIHkpIC0+IGludFxuXAorZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgeCBhbmQgeSIpOworCisKIC8qIENhbGwgaXNfZXJyb3Igd2hlbiBlcnJubyAhPSAwLCBhbmQgd2hlcmUgeCBpcyB0aGUgcmVzdWx0IGxpYm0KICAqIHJldHVybmVkLiAgaXNfZXJyb3Igd2lsbCB1c3VhbGx5IHNldCB1cCBhbiBleGNlcHRpb24gYW5kIHJldHVybgogICogdHJ1ZSAoMSksIGJ1dCBtYXkgcmV0dXJuIGZhbHNlICgwKSB3aXRob3V0IHNldHRpbmcgdXAgYW4gZXhjZXB0aW9uLgpAQCAtMTAxMCw3ICsxMDY2LDcgQEAKICAgICBQeV9zc2l6ZV90IG0gPSAqbV9wdHI7CiAKICAgICBtICs9IG07ICAvKiBkb3VibGUgKi8KLSAgICBpZiAobiA8IG0gJiYgbSA8IChQWV9TU0laRV9UX01BWCAvIHNpemVvZihkb3VibGUpKSkgeworICAgIGlmIChuIDwgbSAmJiAoc2l6ZV90KW0gPCAoKHNpemVfdClQWV9TU0laRV9UX01BWCAvIHNpemVvZihkb3VibGUpKSkgewogICAgICAgICBkb3VibGUgKnAgPSAqcF9wdHI7CiAgICAgICAgIGlmIChwID09IHBzKSB7CiAgICAgICAgICAgICB2ID0gUHlNZW1fTWFsbG9jKHNpemVvZihkb3VibGUpICogbSk7CkBAIC0xNDA4LDYgKzE0NjQsNyBAQAogbWF0aF9mYWN0b3JpYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgbG9uZyB4OworICAgIGludCBvdmVyZmxvdzsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqb2RkX3BhcnQsICp0d29fdmFsdWF0aW9uOwogCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2soYXJnKSkgewpAQCAtMTQyMSwxNSArMTQ3OCwyMiBAQAogICAgICAgICBseCA9IFB5TG9uZ19Gcm9tRG91YmxlKGR4KTsKICAgICAgICAgaWYgKGx4ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcobHgpOworICAgICAgICB4ID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KGx4LCAmb3ZlcmZsb3cpOwogICAgICAgICBQeV9ERUNSRUYobHgpOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHggPSBQeUxvbmdfQXNMb25nKGFyZyk7CisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coYXJnLCAmb3ZlcmZsb3cpOwogCi0gICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh4IDwgMCkgeworICAgIH0KKyAgICBlbHNlIGlmIChvdmVyZmxvdyA9PSAxKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgImZhY3RvcmlhbCgpIGFyZ3VtZW50IHNob3VsZCBub3QgZXhjZWVkICVsZCIsCisgICAgICAgICAgICAgICAgICAgICBMT05HX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChvdmVyZmxvdyA9PSAtMSB8fCB4IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmYWN0b3JpYWwoKSBub3QgZGVmaW5lZCBmb3IgbmVnYXRpdmUgdmFsdWVzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTkyNiw2ICsxOTkwLDgzIEBACiAiaXNpbmYoeCkgLT4gYm9vbFxuXG5cCiBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHksIGFuZCBGYWxzZSBvdGhlcndpc2UuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCittYXRoX2lzY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGRvdWJsZSBhLCBiOworICAgIGRvdWJsZSByZWxfdG9sID0gMWUtOTsKKyAgICBkb3VibGUgYWJzX3RvbCA9IDAuMDsKKyAgICBkb3VibGUgZGlmZiA9IDAuMDsKKyAgICBsb25nIHJlc3VsdCA9IDA7CisKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJkZHwkZGQ6aXNjbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHNhbml0eSBjaGVjayBvbiB0aGUgaW5wdXRzICovCisgICAgaWYgKHJlbF90b2wgPCAwLjAgfHwgYWJzX3RvbCA8IDAuMCApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidG9sZXJhbmNlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIGEgPT0gYiApIHsKKyAgICAgICAgLyogc2hvcnQgY2lyY3VpdCBleGFjdCBlcXVhbGl0eSAtLSBuZWVkZWQgdG8gY2F0Y2ggdHdvIGluZmluaXRpZXMgb2YKKyAgICAgICAgICAgdGhlIHNhbWUgc2lnbi4gQW5kIHBlcmhhcHMgc3BlZWRzIHRoaW5ncyB1cCBhIGJpdCBzb21ldGltZXMuCisgICAgICAgICovCisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKworICAgIC8qIFRoaXMgY2F0Y2hlcyB0aGUgY2FzZSBvZiB0d28gaW5maW5pdGllcyBvZiBvcHBvc2l0ZSBzaWduLCBvcgorICAgICAgIG9uZSBpbmZpbml0eSBhbmQgb25lIGZpbml0ZSBudW1iZXIuIFR3byBpbmZpbml0aWVzIG9mIG9wcG9zaXRlCisgICAgICAgc2lnbiB3b3VsZCBvdGhlcndpc2UgaGF2ZSBhbiBpbmZpbml0ZSByZWxhdGl2ZSB0b2xlcmFuY2UuCisgICAgICAgVHdvIGluZmluaXRpZXMgb2YgdGhlIHNhbWUgc2lnbiBhcmUgY2F1Z2h0IGJ5IHRoZSBlcXVhbGl0eSBjaGVjaworICAgICAgIGFib3ZlLgorICAgICovCisKKyAgICBpZiAoUHlfSVNfSU5GSU5JVFkoYSkgfHwgUHlfSVNfSU5GSU5JVFkoYikpIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKworICAgIC8qIG5vdyBkbyB0aGUgcmVndWxhciBjb21wdXRhdGlvbgorICAgICAgIHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlICJ3ZWFrIiB0ZXN0IGZyb20gdGhlIEJvb3N0IGxpYnJhcnkKKyAgICAqLworCisgICAgZGlmZiA9IGZhYnMoYiAtIGEpOworCisgICAgcmVzdWx0ID0gKCgoZGlmZiA8PSBmYWJzKHJlbF90b2wgKiBiKSkgfHwKKyAgICAgICAgICAgICAgIChkaWZmIDw9IGZhYnMocmVsX3RvbCAqIGEpKSkgfHwKKyAgICAgICAgICAgICAgKGRpZmYgPD0gYWJzX3RvbCkpOworCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitQeURvY19TVFJWQVIobWF0aF9pc2Nsb3NlX2RvYywKKyJpc19jbG9zZShhLCBiLCAqLCByZWxfdG9sPTFlLTA5LCBhYnNfdG9sPTAuMCkgLT4gYm9vbFxuIgorIlxuIgorIkRldGVybWluZSB3aGV0aGVyIHR3byBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFyZSBjbG9zZSBpbiB2YWx1ZS5cbiIKKyJcbiIKKyIgICByZWxfdG9sXG4iCisiICAgICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlbGF0aXZlIHRvIHRoZVxuIgorIiAgICAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIiAgICBhYnNfdG9sXG4iCisiICAgICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlZ2FyZGxlc3Mgb2YgdGhlXG4iCisiICAgICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgYSBpcyBjbG9zZSBpbiB2YWx1ZSB0byBiLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuIgorIlxuIgorIkZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbVxuIgorIm11c3QgYmUgc21hbGxlciB0aGFuIGF0IGxlYXN0IG9uZSBvZiB0aGUgdG9sZXJhbmNlcy5cbiIKKyJcbiIKKyItaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gIFRoYXRcbiIKKyJpcywgTmFOIGlzIG5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuICBpbmYgYW5kIC1pbmYgYXJlXG4iCisib25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgbWF0aF9tZXRob2RzW10gPSB7CiAgICAgeyJhY29zIiwgICAgICAgICAgICBtYXRoX2Fjb3MsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfYWNvc19kb2N9LAogICAgIHsiYWNvc2giLCAgICAgICAgICAgbWF0aF9hY29zaCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2Fjb3NoX2RvY30sCkBAIC0xOTUwLDcgKzIwOTEsMTAgQEAKICAgICB7ImZyZXhwIiwgICAgICAgICAgIG1hdGhfZnJleHAsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9mcmV4cF9kb2N9LAogICAgIHsiZnN1bSIsICAgICAgICAgICAgbWF0aF9mc3VtLCAgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2ZzdW1fZG9jfSwKICAgICB7ImdhbW1hIiwgICAgICAgICAgIG1hdGhfZ2FtbWEsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9nYW1tYV9kb2N9LAorICAgIHsiZ2NkIiwgICAgICAgICAgICAgbWF0aF9nY2QsICAgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX2djZF9kb2N9LAogICAgIHsiaHlwb3QiLCAgICAgICAgICAgbWF0aF9oeXBvdCwgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX2h5cG90X2RvY30sCisgICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKSBtYXRoX2lzY2xvc2UsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgbWF0aF9pc2Nsb3NlX2RvY30sCiAgICAgeyJpc2Zpbml0ZSIsICAgICAgICBtYXRoX2lzZmluaXRlLCAgTUVUSF9PLCAgICAgICAgIG1hdGhfaXNmaW5pdGVfZG9jfSwKICAgICB7ImlzaW5mIiwgICAgICAgICAgIG1hdGhfaXNpbmYsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9pc2luZl9kb2N9LAogICAgIHsiaXNuYW4iLCAgICAgICAgICAgbWF0aF9pc25hbiwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2lzbmFuX2RvY30sCkBAIC0yMDAxLDcgKzIxNDUsMTEgQEAKIAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOworI2VuZGlmCiAKLSAgICBmaW5hbGx5OgorICBmaW5hbGx5OgogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tZDVtb2R1bGUuYyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKaW5kZXggNWNiM2QzNi4uYTllYmM4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tZDVtb2R1bGUuYworKysgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCkBAIC0xOCw3ICsxOCwxMyBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiaGFzaGxpYi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfbWQ1CitjbGFzcyBNRDVUeXBlICJNRDVvYmplY3QgKiIgIiZQeVR5cGVfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZlNTI2MTcxOTk1N2E5MTJdKi8KIAogLyogU29tZSB1c2VmdWwgdHlwZXMgKi8KIApAQCAtNDgsNiArNTQsNyBAQAogICAgIHN0cnVjdCBtZDVfc3RhdGUgaGFzaF9zdGF0ZTsKIH0gTUQ1b2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL21kNW1vZHVsZS5jLmgiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKQEAgLTMzMiwzMCArMzM5LDM0IEBACiAKIC8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KIAotUHlEb2NfU1RSVkFSKE1ENV9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorTUQ1VHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotTUQ1X2NvcHkoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorTUQ1VHlwZV9jb3B5X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5NmViMzY4NTJmMDIwNzEgaW5wdXQ9MmMwOWU2ZDI0OTNmMzA3OV0qLwogewogICAgIE1ENW9iamVjdCAqbmV3b2JqOwogCi0gICAgaWYgKFB5X1RZUEUoc2VsZikgPT0gJk1ENXR5cGUpIHsKLSAgICAgICAgaWYgKCAobmV3b2JqID0gbmV3TUQ1b2JqZWN0KCkpPT1OVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCAobmV3b2JqID0gbmV3TUQ1b2JqZWN0KCkpPT1OVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICgobmV3b2JqID0gbmV3TUQ1b2JqZWN0KCkpPT1OVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG5ld29iai0+aGFzaF9zdGF0ZSA9IHNlbGYtPmhhc2hfc3RhdGU7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKE1ENV9kaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorTUQ1VHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK01ENVR5cGVfZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViNjkxZGM0MTkwYTA3ZWMgaW5wdXQ9N2I5NmU2NTM4OTQxMmEzNF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3QgbWQ1X3N0YXRlIHRlbXA7CkBAIC0zNjUsNTQgKzM3Niw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBNRDVfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihNRDVfaGV4ZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfaGV4ZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK01ENVR5cGVfaGV4ZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE3YmFkY2VkMWYzYWM5MzIgaW5wdXQ9YjYwYjE5ZGU2NDQ3OThkZF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3QgbWQ1X3N0YXRlIHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgdGVtcCA9IHNlbGYtPmhhc2hfc3RhdGU7CiAgICAgbWQ1X2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKLSAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhNRDVfRElHRVNUU0laRSAqIDIsIDEyNyk7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvcihpPWo9MDsgaTxNRDVfRElHRVNUU0laRTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIqKWRpZ2VzdCwgTUQ1X0RJR0VTVFNJWkUpOwogfQogCi1QeURvY19TVFJWQVIoTUQ1X3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotTUQ1X3VwZGF0ZShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorTUQ1VHlwZV91cGRhdGUoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY2YWQxNjg0MTYzMzg0MjMgaW5wdXQ9NmUxZWZjZDllY2YxNzAzMl0qLwogewotICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1cGRhdGUiLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CiAKICAgICBtZDVfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CkBAIC00MjMsMTAgKzQyMSwxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgTUQ1X21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilNRDVfY29weSwgICAgICBNRVRIX05PQVJHUywgIE1ENV9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pTUQ1X2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsICBNRDVfZGlnZXN0X19kb2NfX30sCi0gICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pTUQ1X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsICBNRDVfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pTUQ1X3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLCBNRDVfdXBkYXRlX19kb2NfX30sCisgICAgTUQ1VFlQRV9DT1BZX01FVEhPRERFRgorICAgIE1ENVRZUEVfRElHRVNUX01FVEhPRERFRgorICAgIE1ENVRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIE1ENVRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNTAyLDI3ICs1MDAsMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihNRDVfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitfbWQ1Lm1kNQorCisgICAgc3RyaW5nOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKKworUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotTUQ1X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfbWQ1X21kNV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzUyNzQzNmEyMDkwYjk1NiBpbnB1dD1kMTJlZjhmNzJkNjg0ZjdiXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBNRDVvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3TUQ1b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTMxLDExICs1MjgsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBtZDVfcHJvY2VzcygmbmV3LT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC01NDcsNyArNTQ0LDcgQEAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgTUQ1X2Z1bmN0aW9uc1tdID0gewotICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKU1ENV9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBNRDVfbmV3X19kb2NfX30sCisgICAgX01ENV9NRDVfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCBhMGNjZWViLi5kYWFiNTJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtMzAxLDE2ICszMDEsMTcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gc2VsZi0+cG9zOwogICAgIFB5X3NzaXplX3QgZW5kID0gc2VsZi0+c2l6ZTsKLSAgICBjb25zdCBjaGFyICpuZWVkbGU7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfYnVmZmVyIHZpZXc7CiAKICAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgcmV2ZXJzZSA/ICJ5I3xubjpyZmluZCIgOiAieSN8bm46ZmluZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuZWVkbGUsICZsZW4sICZzdGFydCwgJmVuZCkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgcmV2ZXJzZSA/ICJ5KnxubjpyZmluZCIgOiAieSp8bm46ZmluZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCAmc3RhcnQsICZlbmQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKnAsICpzdGFydF9wLCAqZW5kX3A7CiAgICAgICAgIGludCBzaWduID0gcmV2ZXJzZSA/IC0xIDogMTsKKyAgICAgICAgY29uc3QgY2hhciAqbmVlZGxlID0gdmlldy5idWY7CisgICAgICAgIFB5X3NzaXplX3QgbGVuID0gdmlldy5sZW47CiAKICAgICAgICAgaWYgKHN0YXJ0IDwgMCkKICAgICAgICAgICAgIHN0YXJ0ICs9IHNlbGYtPnNpemU7CkBAIC0zMzUsOSArMzM2LDExIEBACiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuICYmIG5lZWRsZVtpXSA9PSBwW2ldOyArK2kpCiAgICAgICAgICAgICAgICAgLyogbm90aGluZyAqLzsKICAgICAgICAgICAgIGlmIChpID09IGxlbikgeworICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocCAtIHNlbGYtPmRhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKC0xKTsKICAgICB9CiB9CkBAIC0zODUsMjIgKzM4OCwyNSBAQAogbW1hcF93cml0ZV9tZXRob2QobW1hcF9vYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBjaGFyICpkYXRhOworICAgIFB5X2J1ZmZlciBkYXRhOwogCiAgICAgQ0hFQ0tfVkFMSUQoTlVMTCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZkYXRhLCAmbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJmRhdGEpKQogICAgICAgICByZXR1cm4oTlVMTCk7CiAKLSAgICBpZiAoIWlzX3dyaXRhYmxlKHNlbGYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICgoc2VsZi0+cG9zICsgbGVuZ3RoKSA+IHNlbGYtPnNpemUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJkYXRhIG91dCBvZiByYW5nZSIpOworICAgIGlmICghaXNfd3JpdGFibGUoc2VsZikpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1jcHkoc2VsZi0+ZGF0YStzZWxmLT5wb3MsIGRhdGEsIGxlbmd0aCk7Ci0gICAgc2VsZi0+cG9zID0gc2VsZi0+cG9zK2xlbmd0aDsKKworICAgIGlmICgoc2VsZi0+cG9zICsgZGF0YS5sZW4pID4gc2VsZi0+c2l6ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImRhdGEgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbWVtY3B5KHNlbGYtPmRhdGEgKyBzZWxmLT5wb3MsIGRhdGEuYnVmLCBkYXRhLmxlbik7CisgICAgc2VsZi0+cG9zID0gc2VsZi0+cG9zICsgZGF0YS5sZW47CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtNDU5LDE1ICs0NjUsMTMgQEAKIAogI2lmZGVmIFVOSVgKICAgICB7Ci0gICAgICAgIHN0cnVjdCBzdGF0IGJ1ZjsKLSAgICAgICAgaWYgKC0xID09IGZzdGF0KHNlbGYtPmZkLCAmYnVmKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKKyAgICAgICAgaWYgKF9QeV9mc3RhdChzZWxmLT5mZCwgJnN0YXR1cykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoYnVmLnN0X3NpemUpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhzdGF0dXMuc3Rfc2l6ZSk7CiAjZWxzZQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGJ1Zi5zdF9zaXplKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzdGF0dXMuc3Rfc2l6ZSk7CiAjZW5kaWYKICAgICB9CiAjZW5kaWYgLyogVU5JWCAqLwpAQCAtMTEwNiw5ICsxMTEwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBuZXdfbW1hcF9vYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKIHsKLSNpZmRlZiBIQVZFX0ZTVEFUCi0gICAgc3RydWN0IHN0YXQgc3Q7Ci0jZW5kaWYKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKICAgICBtbWFwX29iamVjdCAqbV9vYmo7CiAgICAgUHlPYmplY3QgKm1hcF9zaXplX29iaiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBtYXBfc2l6ZTsKQEAgLTExNzMsMzIgKzExNzUsMzEgQEAKICAgICBpZiAoZmQgIT0gLTEpCiAgICAgICAgICh2b2lkKWZjbnRsKGZkLCBGX0ZVTExGU1lOQyk7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0ZTVEFUCi0gICAgaWYgKGZkICE9IC0xICYmIGZzdGF0KGZkLCAmc3QpID09IDAgJiYgU19JU1JFRyhzdC5zdF9tb2RlKSkgeworICAgIGlmIChmZCAhPSAtMSAmJiBfUHlfZnN0YXRfbm9yYWlzZShmZCwgJnN0YXR1cykgPT0gMAorICAgICAgICAmJiBTX0lTUkVHKHN0YXR1cy5zdF9tb2RlKSkgewogICAgICAgICBpZiAobWFwX3NpemUgPT0gMCkgewotICAgICAgICAgICAgaWYgKHN0LnN0X3NpemUgPT0gMCkgeworICAgICAgICAgICAgaWYgKHN0YXR1cy5zdF9zaXplID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBtbWFwIGFuIGVtcHR5IGZpbGUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBzdGF0dXMuc3Rfc2l6ZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW1hcCBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIGZpbGUgc2l6ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0LnN0X3NpemUgLSBvZmZzZXQgPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAgICAgaWYgKHN0YXR1cy5zdF9zaXplIC0gb2Zmc2V0ID4gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtbWFwIGxlbmd0aCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1hcF9zaXplID0gKFB5X3NzaXplX3QpIChzdC5zdF9zaXplIC0gb2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQgKyAoc2l6ZV90KW1hcF9zaXplID4gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgbWFwX3NpemUgPSAoUHlfc3NpemVfdCkgKHN0YXR1cy5zdF9zaXplIC0gb2Zmc2V0KTsKKyAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQgKyBtYXBfc2l6ZSA+IHN0YXR1cy5zdF9zaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW1hcCBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIGZpbGUgc2l6ZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKICAgICBtX29iaiA9IChtbWFwX29iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChtX29iaiA9PSBOVUxMKSB7cmV0dXJuIE5VTEw7fQogICAgIG1fb2JqLT5kYXRhID0gTlVMTDsKQEAgLTEyMjEsNyArMTIyMiw2IEBACiAgICAgICAgIGZkID0gZGV2emVybyA9IF9QeV9vcGVuKCIvZGV2L3plcm8iLCBPX1JEV1IpOwogICAgICAgICBpZiAoZGV2emVybyA9PSAtMSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzMjUsMTEgKzEzMjUsMTMgQEAKICAgICAgKi8KICAgICBpZiAoZmlsZW5vICE9IC0xICYmIGZpbGVubyAhPSAwKSB7CiAgICAgICAgIC8qIEVuc3VyZSB0aGF0IGZpbGVubyBpcyB3aXRoaW4gdGhlIENSVCdzIHZhbGlkIHJhbmdlICovCi0gICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKSA9PSAwKSB7CisgICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZpbGVubykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgIGlmIChmaD09KEhBTkRMRSktMSkgewogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCAwYWY0OTVmLi42NGViNWRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTQ1Niw4ICs0NTYsOCBAQAogICAgIE5VTEwKIH07CiAKLVB5T2JqZWN0KgotUHlJbml0X25pcyAodm9pZCkKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfbmlzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJm5pc21vZHVsZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggMmQwZGQwOS4uZDJmZDVjOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtMTksNiArMTksNyBAQAogICogJElkJAogICovCiAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCkBAIC01MSw4ICs1Miw4IEBACiAgICAgY2hhciAgICAqZGV2aWNlbmFtZTsgICAgICAgICAgICAgIC8qIG5hbWUgb2YgdGhlIGRldmljZSBmaWxlICovCiAgICAgaW50ICAgICAgZmQ7ICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbGUgZGVzY3JpcHRvciAqLwogICAgIGludCAgICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAvKiBmaWxlIG1vZGUgKE9fUkRPTkxZLCBldGMuKSAqLwotICAgIGludCAgICAgIGljb3VudDsgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb3VudCAqLwotICAgIGludCAgICAgIG9jb3VudDsgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgY291bnQgKi8KKyAgICBQeV9zc2l6ZV90IGljb3VudDsgICAgICAgICAgICAgICAgLyogaW5wdXQgY291bnQgKi8KKyAgICBQeV9zc2l6ZV90IG9jb3VudDsgICAgICAgICAgICAgICAgLyogb3V0cHV0IGNvdW50ICovCiAgICAgdWludDMyX3QgYWZtdHM7ICAgICAgICAgICAgICAgICAgIC8qIGF1ZGlvIGZvcm1hdHMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlICovCiB9IG9zc19hdWRpb190OwogCkBAIC0xMTYsMTEgKzExNyw4IEBACiAgICAgICAgcHJvdmlkZXMgYSBzcGVjaWFsIGlvY3RsKCkgZm9yIG5vbi1ibG9ja2luZyByZWFkL3dyaXRlLCB3aGljaCBpcwogICAgICAgIGV4cG9zZWQgdmlhIG9zc19ub25ibG9jaygpIGJlbG93LiAqLwogICAgIGZkID0gX1B5X29wZW4oZGV2aWNlbmFtZSwgaW1vZGV8T19OT05CTE9DSyk7Ci0KLSAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIGRldmljZW5hbWUpOworICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgLyogQW5kICh0cnkgdG8pIHB1dCBpdCBiYWNrIGluIGJsb2NraW5nIG1vZGUgc28gd2UgZ2V0IHRoZQogICAgICAgIGV4cGVjdGVkIHdyaXRlKCkgc2VtYW50aWNzLiAqLwpAQCAtMTgwLDEwICsxNzgsOCBAQAogICAgIH0KIAogICAgIGZkID0gX1B5X29wZW4oZGV2aWNlbmFtZSwgT19SRFdSKTsKLSAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIGRldmljZW5hbWUpOworICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKChzZWxmID0gUHlPYmplY3RfTmV3KG9zc19taXhlcl90LCAmT1NTTWl4ZXJUeXBlKSkgPT0gTlVMTCkgewogICAgICAgICBjbG9zZShmZCk7CkBAIC00MDQsMjkgKzQwMCwyNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19yZWFkKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgc2l6ZSwgY291bnQ7Ci0gICAgY2hhciAqY3A7CisgICAgUHlfc3NpemVfdCBzaXplLCBjb3VudDsKICAgICBQeU9iamVjdCAqcnY7CiAKICAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmc2l6ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnJlYWQiLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcnYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmIChydiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBjb3VudCA9IHJlYWQoc2VsZi0+ZmQsIGNwLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGNvdW50IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgY291bnQgPSBfUHlfcmVhZChzZWxmLT5mZCwgUHlCeXRlc19BU19TVFJJTkcocnYpLCBzaXplKTsKKyAgICBpZiAoY291bnQgPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKHJ2KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgc2VsZi0+aWNvdW50ICs9IGNvdW50OwogICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIGNvdW50KTsKICAgICByZXR1cm4gcnY7CkBAIC00MzUsMzMgKzQyNywzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc193cml0ZShvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqY3A7Ci0gICAgaW50IHJ2LCBzaXplOworICAgIFB5X2J1ZmZlciBkYXRhOworICAgIFB5X3NzaXplX3QgcnY7CiAKICAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZkYXRhKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcnYgPSB3cml0ZShzZWxmLT5mZCwgY3AsIHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcnYgPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIGRhdGEuYnVmLCBkYXRhLmxlbik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChydiA9PSAtMSkgewotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNlbGYtPm9jb3VudCArPSBydjsKLSAgICB9CisgICAgc2VsZi0+b2NvdW50ICs9IHJ2OwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocnYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3dyaXRlYWxsKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpjcDsKLSAgICBpbnQgcnYsIHNpemU7CisgICAgUHlfYnVmZmVyIGRhdGE7CisgICAgY29uc3QgY2hhciAqY3A7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgcnY7CiAgICAgZmRfc2V0IHdyaXRlX3NldF9mZHM7CiAgICAgaW50IHNlbGVjdF9ydjsKIApAQCAtNDc1LDQxICs0NjYsNTAgQEAKICAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGVhbGwiLCAmZGF0YSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFfUHlJc1NlbGVjdGFibGVfZmQoc2VsZi0+ZmQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgZGVzY3JpcHRvciBvdXQgb2YgcmFuZ2UgZm9yIHNlbGVjdCIpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIHVzZSBzZWxlY3QgdG8gd2FpdCBmb3IgYXVkaW8gZGV2aWNlIHRvIGJlIGF2YWlsYWJsZSAqLwogICAgIEZEX1pFUk8oJndyaXRlX3NldF9mZHMpOwogICAgIEZEX1NFVChzZWxmLT5mZCwgJndyaXRlX3NldF9mZHMpOworICAgIGNwID0gKGNvbnN0IGNoYXIgKilkYXRhLmJ1ZjsKKyAgICBzaXplID0gZGF0YS5sZW47CiAKICAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBzZWxlY3RfcnYgPSBzZWxlY3Qoc2VsZi0+ZmQrMSwgTlVMTCwgJndyaXRlX3NldF9mZHMsIE5VTEwsIE5VTEwpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBhc3NlcnQoc2VsZWN0X3J2ICE9IDApOyAgICAgICAgIC8qIG5vIHRpbWVvdXQsIGNhbid0IGV4cGlyZSAqLwotICAgICAgICBpZiAoc2VsZWN0X3J2ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJ2ID0gd3JpdGUoc2VsZi0+ZmQsIGNwLCBzaXplKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7Ci0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7ICAgICAgLyogYnVmZmVyIGlzIGZ1bGwsIHRyeSBhZ2FpbiAqLwotICAgICAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0gZWxzZSAgICAgICAgICAgICAgICAgICAgICAvKiBpdCdzIGEgcmVhbCBlcnJvciAqLwotICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogd3JvdGUgcnYgYnl0ZXMgKi8KLSAgICAgICAgICAgIHNlbGYtPm9jb3VudCArPSBydjsKLSAgICAgICAgICAgIHNpemUgLT0gcnY7Ci0gICAgICAgICAgICBjcCArPSBydjsKKyAgICAgICAgYXNzZXJ0KHNlbGVjdF9ydiAhPSAwKTsgICAvKiBubyB0aW1lb3V0LCBjYW4ndCBleHBpcmUgKi8KKyAgICAgICAgaWYgKHNlbGVjdF9ydiA9PSAtMSkgeworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICB9CisKKyAgICAgICAgcnYgPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIGNwLCBQeV9NSU4oc2l6ZSwgSU5UX01BWCkpOworICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgICAgIC8qIGJ1ZmZlciBpcyBmdWxsLCB0cnkgYWdhaW4gKi8KKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogaXQncyBhIHJlYWwgZXJyb3IgKi8KKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiB3cm90ZSBydiBieXRlcyAqLworICAgICAgICBzZWxmLT5vY291bnQgKz0gcnY7CisgICAgICAgIHNpemUgLT0gcnY7CisgICAgICAgIGNwICs9IHJ2OwogICAgIH0KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwppbmRleCAzNmU5ODkzLi44MDIzNTU4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCisrKyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKQEAgLTIzLDYgKzIzLDExIEBACiAgKiAgdGhhdCBsaW50IGRldGVjdHMgYXJlIGdvbmUsIGJ1dCB0aGVyZSBhcmUgc3RpbGwgd2FybmluZ3Mgd2l0aAogICogIFB5X1tYXURFQ1JFRigpIGFuZCBQeV9bWF1JTkNSRUYoKSBtYWNyb3MuICBUaGUgbGludCBhbm5vdGF0aW9ucwogICogIGxvb2sgbGlrZSAiTk9URSguLi4pIi4KKyAqCisgKiAgVG8gZGVidWcgcGFyc2VyIGVycm9ycyBsaWtlCisgKiAgICAgICJwYXJzZXIuUGFyc2VyRXJyb3I6IEV4cGVjdGVkIG5vZGUgdHlwZSAxMiwgZ290IDMzMy4iCisgKiAgZGVjb2RlIHN5bWJvbCBudW1iZXJzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCBmaWxlcworICogIExpYi9zeW1ib2wuaCBhbmQgSW5jbHVkZS90b2tlbi5oLgogICovCiAKICNpbmNsdWRlICJQeXRob24uaCIgICAgICAgICAgICAgICAgICAgICAvKiBnZW5lcmFsIFB5dGhvbiBBUEkgICAgICAgICAgICAgKi8KQEAgLTEwMzYsNiArMTA0MSw4IEBACiBWQUxJREFURVIob3JfdGVzdCk7CiBWQUxJREFURVIodGVzdF9ub2NvbmQpOyAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmX25vY29uZCk7CiBWQUxJREFURVIoeWllbGRfYXJnKTsKK1ZBTElEQVRFUihhc3luY19mdW5jZGVmKTsgICAgICAgVkFMSURBVEVSKGFzeW5jX3N0bXQpOworVkFMSURBVEVSKGF0b21fZXhwcik7CiAKICN1bmRlZiBWQUxJREFURVIKIApAQCAtMTA4NywzMCArMTA5NCw1NiBAQAogICAgIHJldHVybiAocmVzKTsKIH0KIAotCi0vKiAgWCAoJywnIFgpIFsnLCddCi0gKi8KKy8qICBYICgnLCcgWCkgWycsJ10gKi8KIHN0YXRpYyBpbnQKLXZhbGlkYXRlX3JlcGVhdGluZ19saXN0KG5vZGUgKnRyZWUsIGludCBudHlwZSwgaW50ICgqdmZ1bmMpKG5vZGUgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBuYW1lKQordmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUobm9kZSAqdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKShub2RlICosIGludCAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKIHsKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIG50eXBlKQotICAgICAgICAgICAgICAgJiYgdmZ1bmMoQ0hJTEQodHJlZSwgMCkpKTsKKyAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwogCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBuYW1lKTsKKyAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCisgICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKKyAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChpc19ldmVuKG5jaCkpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCAtLW5jaCkpOwotICAgICAgICBpZiAocmVzICYmIG5jaCA+IDEpIHsKLSAgICAgICAgICAgIGludCBwb3MgPSAxOwotICAgICAgICAgICAgZm9yICggOyByZXMgJiYgcG9zIDwgbmNoOyBwb3MgKz0gMikKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmZ1bmMoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKKyAgICAgICAgZm9yICggOyByZXMgJiYgKnBvcyA8IG5jaDsgKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jaGlsZF9mdW5jX2luYyh0cmVlLCBwb3MpOworICAgICAgICAgICAgaWYgKCFyZXMgfHwgKnBvcyA+PSBuY2gpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCAoKnBvcykrKykpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKiAgWCAoJywnIFgpIFsnLCddICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdChub2RlICp0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuYykobm9kZSAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOworICAgIGludCBwb3MgPSAwOworCisgICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLworICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7ICkgeworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuYyhDSElMRCh0cmVlLCBwb3MrKykpOworICAgICAgICAgICAgaWYgKCFyZXMgfHwgcG9zID49IG5jaCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHBvcysrKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKIH0KIAogCkBAIC0xNTc3LDYgKzE2MTAsNyBAQAogICAgICAgICAgIHx8IChudHlwZSA9PSB0cnlfc3RtdCkKICAgICAgICAgICB8fCAobnR5cGUgPT0gd2l0aF9zdG10KQogICAgICAgICAgIHx8IChudHlwZSA9PSBmdW5jZGVmKQorICAgICAgICAgIHx8IChudHlwZSA9PSBhc3luY19zdG10KQogICAgICAgICAgIHx8IChudHlwZSA9PSBjbGFzc2RlZikKICAgICAgICAgICB8fCAobnR5cGUgPT0gZGVjb3JhdGVkKSkKICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZSh0cmVlKTsKQEAgLTI0MDksMjcgKzI0NDMsNjAgQEAKIAogLyogIHBvd2VyOgogICoKLSAqICBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgorICogIHBvd2VyOiBhdG9tX2V4cHIgdHJhaWxlciogWycqKicgZmFjdG9yXQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV9wb3dlcihub2RlICp0cmVlKQogewotICAgIGludCBwb3MgPSAxOwogICAgIGludCBuY2ggPSBOQ0godHJlZSk7CiAgICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBwb3dlcikgJiYgKG5jaCA+PSAxKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCAwKSkpOworICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYXRvbV9leHByKENISUxEKHRyZWUsIDApKSk7CiAKLSAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90cmFpbGVyKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgaWYgKHJlcyAmJiAocG9zIDwgbmNoKSkgewotICAgICAgICBpZiAoIWlzX2V2ZW4obmNoIC0gcG9zKSkgeworICAgIGlmIChuY2ggPiAxKSB7CisgICAgICAgIGlmIChuY2ggIT0gMykgewogICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdwb3dlciciKTsKICAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yICggOyByZXMgJiYgKHBvcyA8IChuY2ggLSAxKSk7IHBvcyArPSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKKyAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgMSkpCisgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMikpKTsKICAgICB9CisKKyAgICByZXR1cm4gKHJlcyk7Cit9CisKKworLyogIGF0b21fZXhwcjoKKyAqCisgKiAgYXRvbV9leHByOiBbQVdBSVRdIGF0b20gdHJhaWxlcioKKyAqLworc3RhdGljIGludAordmFsaWRhdGVfYXRvbV9leHByKG5vZGUgKnRyZWUpCit7CisgICAgaW50IHN0YXJ0ID0gMDsKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXM7CisgICAgaW50IHBvczsKKworICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGF0b21fZXhwcikgJiYgKG5jaCA+PSAxKTsKKyAgICBpZiAoIXJlcykgeworICAgICAgICByZXR1cm4gKHJlcyk7CisgICAgfQorCisgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IEFXQUlUKSB7CisgICAgICAgIHN0YXJ0ID0gMTsKKyAgICAgICAgaWYgKG5jaCA8IDIpIHsKKyAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIG5vZGVzIGZvciAnYXRvbV9leHByJyIpOworICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlcyA9IHZhbGlkYXRlX2F0b20oQ0hJTEQodHJlZSwgc3RhcnQpKTsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIHBvcyA9IHN0YXJ0ICsgMTsKKyAgICAgICAgd2hpbGUgKHJlcyAmJiAocG9zIDwgbmNoKSAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSB0cmFpbGVyKSkKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyYWlsZXIoQ0hJTEQodHJlZSwgcG9zKyspKTsKKyAgICB9CisKICAgICByZXR1cm4gKHJlcyk7CiB9CiAKQEAgLTI0OTMsMzkgKzI1NjAsMjggQEAKIAogCiAvKiAgdGVzdGxpc3RfY29tcDoKLSAqICAgIHRlc3QgKCBjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddICkKKyAqICAgICh0ZXN0fHN0YXJfZXhwcikgKCBjb21wX2ZvciB8ICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfdGVzdGxpc3RfY29tcChub2RlICp0cmVlKQogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gbmNoOworICAgIGludCBvazsKIAotICAgIGlmIChuY2ggPT0gMCkKKyAgICBpZiAobmNoID09IDApIHsKICAgICAgICAgZXJyX3N0cmluZygibWlzc2luZyBjaGlsZCBub2RlcyBvZiB0ZXN0bGlzdF9jb21wIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG9rID0gdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgMCkpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKgotICAgICAqICBjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddCi0gICAgICovCi0gICAgaWYgKG5jaCA9PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGNvbXBfZm9yKQotICAgICAgICBvayA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKTsKKyAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKKyAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOworICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogICgnLCcgdGVzdCkqIFsnLCddICAqLwotICAgICAgICBpbnQgaSA9IDE7Ci0gICAgICAgIHdoaWxlIChvayAmJiBuY2ggLSBpID49IDIpIHsKLSAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgaSsxKSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChvayAmJiBpID09IG5jaC0xKQotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgIGVsc2UgaWYgKGkgIT0gbmNoKSB7Ci0gICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIHRyYWlsaW5nIG5vZGVzIGZvciB0ZXN0bGlzdF9jb21wIik7Ci0gICAgICAgIH0KKyAgICAgICAgb2sgPSB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAorICAgICAgICAgICAgICAgIHRlc3RsaXN0X2NvbXAsCisgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCisgICAgICAgICAgICAgICAgInRlc3RsaXN0X2NvbXAiKTsKICAgICB9CiAgICAgcmV0dXJuIG9rOwogfQpAQCAtMjYzOCw2ICsyNjk0LDU1IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAorLyogYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZiAqLworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hc3luY19mdW5jZGVmKG5vZGUgKnRyZWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfZnVuY2RlZik7CisgICAgaWYgKHJlcykgeworICAgICAgICBpZiAobmNoID09IDIpIHsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpCisgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gMDsKKyAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBhc3luY19mdW5jZGVmIik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworCisvKiBhc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KSAqLworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hc3luY19zdG10KG5vZGUgKnRyZWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFzeW5jX3N0bXQpCisgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIEFTWU5DKSk7CisKKyAgICBpZiAobmNoICE9IDIpIHsKKyAgICAgICAgcmVzID0gMDsKKyAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX3N0bXQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZnVuY2RlZikgeworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gd2l0aF9zdG10KSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aXRoX3N0bXQoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGZvcl9zdG10KSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mb3IoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlczsKK30KKworCiAKIC8qIGRlY29yYXRlZAogICogICBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpCkBAIC0yNzMyLDkgKzI4MzcsNiBAQAogICAgIH0KICAgICBvayA9IDE7CiAgICAgaWYgKG5jaC1pID4gMCkgewotICAgICAgICAvKgotICAgICAgICAgKiBhcmd1bWVudCB8ICcqJyB0ZXN0IFsnLCcgJyoqJyB0ZXN0XSB8ICcqKicgdGVzdAotICAgICAgICAgKi8KICAgICAgICAgaW50IHN5bSA9IFRZUEUoQ0hJTEQodHJlZSwgaSkpOwogCiAgICAgICAgIGlmIChzeW0gPT0gYXJndW1lbnQpIHsKQEAgLTI3NDUsMzAgKzI4NDcsNyBAQAogICAgICAgICAgICAgICAgIG9rID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzeW0gPT0gU1RBUikgewotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9zdGFyKENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgICAgIGlmIChvayAmJiAobmNoLWkgPT0gMikpCi0gICAgICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrMSkpOwotICAgICAgICAgICAgZWxzZSBpZiAob2sgJiYgKG5jaC1pID09IDUpKQotICAgICAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSkKLSAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKzIpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgaSszKSkKLSAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrNCkpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgdXNlIG9mICcqJyBpbiBhcmdsaXN0Iik7Ci0gICAgICAgICAgICAgICAgb2sgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN5bSA9PSBET1VCTEVTVEFSKSB7Ci0gICAgICAgICAgICBpZiAobmNoLWkgPT0gMikKLSAgICAgICAgICAgICAgICBvayA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCB1c2Ugb2YgJyoqJyBpbiBhcmdsaXN0Iik7Ci0gICAgICAgICAgICAgICAgb2sgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgIGVsc2UgewogICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhcmdsaXN0IHNwZWNpZmljYXRpb24iKTsKICAgICAgICAgICAgIG9rID0gMDsKICAgICAgICAgfQpAQCAtMjc3OCw5ICsyODU3LDEwIEBACiAKIAogCi0vKiAgYXJndW1lbnQ6Ci0gKgotICogIFt0ZXN0ICc9J10gdGVzdCBbY29tcF9mb3JdCisvKiAgYXJndW1lbnQ6ICggdGVzdCBbY29tcF9mb3JdIHwKKyAqICAgICAgICAgICAgICB0ZXN0ICc9JyB0ZXN0IHwKKyAqICAgICAgICAgICAgICAnKionIHRlc3QgfAorICogICAgICAgICAgICAgICcqJyB0ZXN0ICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfYXJndW1lbnQobm9kZSAqdHJlZSkKQEAgLTI3ODgsMTQgKzI4NjgsMjcgQEAKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwogICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCiAgICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpKTsKLSAgICBpZiAocmVzKSAKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMikpKTsKIAorICAgIGlmIChyZXMpIHsKKyAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IERPVUJMRVNUQVIpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFNUQVIpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuY2ggPT0gMikgeworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSkpOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiAocmVzKTsKIH0KIApAQCAtMjk0OCwxMSArMzA0MSw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIsICJleHBybGlzdCIpKTsKIH0KIAorLyogSW5jcmVtZW50aW5nIHZhbGlkYXRlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbnplcm8gaWZmIHN1Y2Nlc3MgKGxpa2Ugb3RoZXIKKyAqIHZhbGlkYXRlIGZ1bmN0aW9ucywgYW5kIGFkdmFuY2UgKmkgYnkgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2hlZCBwYXR0ZXJuLiAqLworCisvKiB0ZXN0ICc6JyB0ZXN0ICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKK3sKKyAgICByZXR1cm4gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkKKyAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsICgqaSkrKykpCisgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpKTsKK30KKworLyogdGVzdCAnOicgdGVzdCB8ICcqKicgZXhwciAqLworc3RhdGljIGludAordmFsaWRhdGVfZGljdF9lbGVtZW50X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gMDsKKyAgICBpZiAobmNoIC0gKmkgPj0gMikgeworICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAqaSsxKSkgPT0gQ09MT04pIHsKKyAgICAgICAgICAgIC8qIHRlc3QgJzonIHRlc3QgKi8KKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgaSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiAnKionIGV4cHIgKi8KKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsICgqaSkrKykpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgKCppKSsrKSkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKIC8qCiAgKiAgZGljdG9yc2V0bWFrZXI6CiAgKgotICogICh0ZXN0ICc6JyB0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddKSkgfAotICogICh0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSkKKyAqICAgKCAoKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpCisgKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpKSogWycsJ10pKSB8CisgKiAgICAgKCh0ZXN0IHwgJyonIHRlc3QpCisgKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCAnKicgdGVzdCkpKiBbJywnXSkpICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfZGljdG9yc2V0bWFrZXIobm9kZSAqdHJlZSkKQEAgLTI5NjYsNjUgKzMwOTIsNDQgQEAKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAobmNoIC0gaSA8IDEpIHsKKyAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwogICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImRpY3RvcnNldG1ha2VyIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSk7Ci0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBDT0xPTikgeworICAgIGlmIChuY2ggLSBpID49IDIKKyAgICAgICAgJiYgKChUWVBFKENISUxEKHRyZWUsIGkrMSkpID09IENPTE9OKSB8fAorICAgICAgICAgICAgKFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IERPVUJMRVNUQVIpKSkgewogICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkgb3IgZGljdGlvbmFyeSBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGlmIChuY2ggLSBpID49IDEgJiYgVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgaWYgKG5jaCAtIGkgPj0gNCAmJiBUWVBFKENISUxEKHRyZWUsIGkrMykpID09IGNvbXBfZm9yKSB7CiAgICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKTsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKHRyZWUsICZpKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7CiAgICAgICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIERpY3Rpb25hcnkgZGlzcGxheS4gKi8KLSAgICAgICAgICAgIHdoaWxlIChuY2ggLSBpID49IDQpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobmNoIC0gaSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0X3ZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICB0cmVlLAorICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYywKKyAgICAgICAgICAgICAgICAgICAgJmksCisgICAgICAgICAgICAgICAgICAgICJkaWN0b3JzZXRtYWtlciIpOwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIFNldCBkaXNwbGF5IG9yIHNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICBpZiAobmNoIC0gaSA+PSAxICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IGNvbXBfZm9yKSB7CisgICAgICAgIGlmIChuY2ggLSBpID49IDIgJiYgVFlQRShDSElMRCh0cmVlLCBpICsgMSkpID09IGNvbXBfZm9yKSB7CiAgICAgICAgICAgICAvKiBTZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpOworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKKyAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7CiAgICAgICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIFNldCBkaXNwbGF5LiAqLwotICAgICAgICAgICAgd2hpbGUgKG5jaCAtIGkgPj0gMikgewotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobmNoIC0gaSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzA2OCw2ICszMTczLDEyIEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogIERlZmluaXRpb24gbm9kZXMuCiAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBjYXNlIGFzeW5jX2Z1bmNkZWY6CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19mdW5jZGVmKHRyZWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBhc3luY19zdG10OgorICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfc3RtdCh0cmVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgZnVuY2RlZjoKICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYodHJlZSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCA3YzkzN2UwLi44NTRhNzQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC02LDcgKzYsNyBAQAogICAgZnVuY3Rpb25zIGFyZSBlaXRoZXIgdW5pbXBsZW1lbnRlZCBvciBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseS4gIFRoZSBzb3VyY2UKICAgIGFzc3VtZXMgdGhhdCBmb3IgV2luZG93cyBOVCwgdGhlIG1hY3JvICdNU19XSU5ET1dTJyBpcyBkZWZpbmVkIGluZGVwZW5kZW50CiAgICBvZiB0aGUgY29tcGlsZXIgdXNlZC4gIERpZmZlcmVudCBjb21waWxlcnMgZGVmaW5lIHRoZWlyIG93biBmZWF0dXJlCi0gICB0ZXN0IG1hY3JvLCBlLmcuICdfX0JPUkxBTkRDX18nIG9yICdfTVNDX1ZFUicuICovCisgICB0ZXN0IG1hY3JvLCBlLmcuICdfTVNDX1ZFUicuICovCiAKIAogCkBAIC0yNSw4ICsyNSwxMSBAQAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpZm5kZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgInBvc2l4bW9kdWxlLmgiCisjZWxzZQorI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTE0MSwxMyArMTQ0LDYgQEAKICNkZWZpbmUgSEFWRV9TWVNURU0gICAgIDEKICNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjZWxzZQotI2lmZGVmIF9fQk9STEFORENfXyAgICAgICAgICAgICAvKiBCb3JsYW5kIGNvbXBpbGVyICovCi0jZGVmaW5lIEhBVkVfRVhFQ1YgICAgICAxCi0jZGVmaW5lIEhBVkVfT1BFTkRJUiAgICAxCi0jZGVmaW5lIEhBVkVfUElQRSAgICAgICAxCi0jZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCi0jZGVmaW5lIEhBVkVfV0FJVCAgICAgICAxCi0jZWxzZQogI2lmZGVmIF9NU0NfVkVSICAgICAgICAgLyogTWljcm9zb2Z0IGNvbXBpbGVyICovCiAjZGVmaW5lIEhBVkVfR0VUUFBJRCAgICAxCiAjZGVmaW5lIEhBVkVfR0VUTE9HSU4gICAxCkBAIC0xNzcsMTQgKzE3MywxNCBAQAogI2RlZmluZSBIQVZFX1dBSVQgICAgICAgMQogI2RlZmluZSBIQVZFX1RUWU5BTUUgICAgMQogI2VuZGlmICAvKiBfTVNDX1ZFUiAqLwotI2VuZGlmICAvKiBfX0JPUkxBTkRDX18gKi8KICNlbmRpZiAgLyogISBfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAKIAogLypbY2xpbmljIGlucHV0XQorIyBvbmUgb2YgdGhlIGZldyB0aW1lcyB3ZSBsaWUgYWJvdXQgdGhpcyBuYW1lIQogbW9kdWxlIG9zCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04Y2ZmMDk2ZDExMzMyODhmXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05NGEwZjBmOTc4YWNhZTE3XSovCiAKICNpZm5kZWYgX01TQ19WRVIKIApAQCAtMjExLDExICsyMDcsNyBAQAogZXh0ZXJuIGludCBjaGRpcihjb25zdCBjaGFyICopOwogZXh0ZXJuIGludCBybWRpcihjb25zdCBjaGFyICopOwogI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1leHRlcm4gaW50IGNobW9kKGNvbnN0IGNoYXIgKiwgaW50KTsKLSNlbHNlCiBleHRlcm4gaW50IGNobW9kKGNvbnN0IGNoYXIgKiwgbW9kZV90KTsKLSNlbmRpZgogLyojaWZkZWYgSEFWRV9GQ0hNT0QKIGV4dGVybiBpbnQgZmNobW9kKGludCwgbW9kZV90KTsKICNlbmRpZiovCkBAIC0zMDEsNiArMjkzLDkgQEAKICNpZm5kZWYgSU9fUkVQQVJTRV9UQUdfU1lNTElOSwogI2RlZmluZSBJT19SRVBBUlNFX1RBR19TWU1MSU5LICgweEEwMDAwMDBDTCkKICNlbmRpZgorI2lmbmRlZiBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVAorI2RlZmluZSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVCAoMHhBMDAwMDAwM0wpCisjZW5kaWYKICNpbmNsdWRlICJvc2RlZnMuaCIKICNpbmNsdWRlIDxtYWxsb2MuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zNTYsOCArMzUxLDggQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjICAgICAgIGRlZmluZSBTVEFUIHdpbjMyX3N0YXQKICMgICAgICAgZGVmaW5lIExTVEFUIHdpbjMyX2xzdGF0Ci0jICAgICAgIGRlZmluZSBGU1RBVCB3aW4zMl9mc3RhdAotIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IHdpbjMyX3N0YXQKKyMgICAgICAgZGVmaW5lIEZTVEFUIF9QeV9mc3RhdF9ub3JhaXNlCisjICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0CiAjZWxzZQogIyAgICAgICBkZWZpbmUgU1RBVCBzdGF0CiAjICAgICAgIGRlZmluZSBMU1RBVCBsc3RhdApAQCAtMzc4LDYgKzM3MywyMCBAQAogCiAjZGVmaW5lIERXT1JEX01BWCA0Mjk0OTY3Mjk1VQogCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBJTklURlVOQyBQeUluaXRfbnQKKyNkZWZpbmUgTU9ETkFNRSAibnQiCisjZWxzZQorI2RlZmluZSBJTklURlVOQyBQeUluaXRfcG9zaXgKKyNkZWZpbmUgTU9ETkFNRSAicG9zaXgiCisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIGRlZmluZWQgaW4gZmlsZXV0aWxzLmMgKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodGltZV90LCBpbnQsIEZJTEVUSU1FICopOworUHlBUElfRlVOQyh2b2lkKSBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdChCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORywgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqKTsKKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIGludApAQCAtNzAxLDcgKzcxMCw2IEBACiB9CiAKIAotCiAvKgogICogQSBQeUFyZ19QYXJzZVR1cGxlICJjb252ZXJ0ZXIiIGZ1bmN0aW9uCiAgKiB0aGF0IGhhbmRsZXMgZmlsZXN5c3RlbSBwYXRocyBpbiB0aGUgbWFubmVyCkBAIC03OTcsOCArODA1LDggQEAKICAgICBQeU9iamVjdCAqY2xlYW51cDsKIH0gcGF0aF90OwogCi0jZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAotICAgIHtmdW5jdGlvbl9uYW1lLCBOVUxMLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIE5VTEwsIDAsIDAsIE5VTEwsIE5VTEx9CisjZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAorICAgIHtmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIE5VTEwsIC0xLCAwLCBOVUxMLCBOVUxMfQogCiBzdGF0aWMgdm9pZAogcGF0aF9jbGVhbnVwKHBhdGhfdCAqcGF0aCkgewpAQCAtODU5LDcgKzg2Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAod2NzbGVuKHdpZGUpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC05MjUsOCArOTMzLDggQEAKICNlbmRpZgogCiAgICAgbmFycm93ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotICAgIGlmIChsZW5ndGggIT0gc3RybGVuKG5hcnJvdykpIHsKLSAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciBpbiAlcyIpOworICAgIGlmICgoc2l6ZV90KWxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMDI3LDk3ICsxMDM1LDQ2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEEgaGVscGVyIHVzZWQgYnkgYSBudW1iZXIgb2YgUE9TSVgtb25seSBmdW5jdGlvbnMgKi8KLSNpZm5kZWYgTVNfV0lORE9XUwotc3RhdGljIGludAotX3BhcnNlX29mZl90KFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCi17Ci0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nKGFyZyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHR5cGVkZWYgUFlfTE9OR19MT05HIFB5X29mZl90OwogI2Vsc2UKLSAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworICAgIHR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7CisjZW5kaWYKKworc3RhdGljIGludAorUHlfb2ZmX3RfY29udmVydGVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKmFkZHIpCit7CisjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAorICAgICooKFB5X29mZl90ICopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworI2Vsc2UKKyAgICAqKChQeV9vZmZfdCAqKWFkZHIpID0gUHlMb25nX0FzTG9uZyhhcmcpOwogI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwogfQotI2VuZGlmCiAKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKLS8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKLSAqIHZhbGlkIGFuZCByYWlzZSBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCi0gKiBOb3JtYWxseSwgYW4gaW52YWxpZCBmZCBpcyBsaWtlbHkgdG8gYmUgYSBDIHByb2dyYW0gZXJyb3IgYW5kIHRoZXJlZm9yZQotICogYW4gYXNzZXJ0aW9uIGNhbiBiZSB1c2VmdWwsIGJ1dCBpdCBkb2VzIGNvbnRyYWRpY3QgdGhlIFBPU0lYIHN0YW5kYXJkCi0gKiB3aGljaCBmb3Igd3JpdGUoMikgc3RhdGVzOgotICogICAgIk90aGVyd2lzZSwgLTEgc2hhbGwgYmUgcmV0dXJuZWQgYW5kIGVycm5vIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuIgotICogICAgIltFQkFERl0gVGhlIGZpbGRlcyBhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3Igb3BlbiBmb3IKLSAqICAgICB3cml0aW5nLiIKLSAqIEZ1cnRoZXJtb3JlLCBweXRob24gYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFueSBvbGQgaW50ZWdlcgotICogYXMgYSBmZCBhbmQgc2hvdWxkIG1lcmVseSByYWlzZSBhIHB5dGhvbiBleGNlcHRpb24gb24gZXJyb3IuCi0gKiBUaGUgTWljcm9zb2Z0IENSVCBkb2Vzbid0IHByb3ZpZGUgYW4gb2ZmaWNpYWwgd2F5IHRvIGNoZWNrIGZvciB0aGUKLSAqIHZhbGlkaXR5IG9mIGEgZmlsZSBkZXNjcmlwdG9yLCBidXQgd2UgY2FuIGVtdWxhdGUgaXRzIGludGVybmFsIGJlaGF2aW91cgotICogYnkgdXNpbmcgdGhlIGV4cG9ydGVkIF9fcGluZm8gZGF0YSBtZW1iZXIgYW5kIGtub3dsZWRnZSBvZiB0aGUKLSAqIGludGVybmFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuCi0gKiBUaGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIHVwZGF0ZWQgZm9yIGVhY2ggdmVyc2lvbiBvZiB2aXN1YWwgc3R1ZGlvCi0gKiBhY2NvcmRpbmcgdG8gdGhlIGZpbGUgaW50ZXJuYWwuaCBpbiB0aGUgQ1JUIHNvdXJjZSwgdW50aWwgTVMgY29tZXMKLSAqIHVwIHdpdGggYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0aGlzLgotICogKGFsbCBvZiB0aGlzIGlzIHRvIGF2b2lkIGdsb2JhbGx5IG1vZGlmeWluZyB0aGUgQ1JUIGJlaGF2aW91ciB1c2luZwotICogX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCkgYW5kIF9DcnRTZXRSZXBvcnRNb2RlKCkpCi0gKi8KLS8qIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIGRldGVybWluZWQgYXQgcnVudGltZS4KLSAqIE9ubHkgdGhlIGZpcnN0IGl0ZW1zIG11c3QgYmUgcHJlc2VudC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludHB0cl90IG9zZmhuZDsKLSAgICBjaGFyIG9zZmlsZTsKLX0gbXlfaW9pbmZvOwotCi1leHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIgKiBfX3Bpb2luZm9bXTsKLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKLSNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIEZPUEVOIDB4MDEKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiBUaGlzIGZ1bmN0aW9uIGVtdWxhdGVzIHdoYXQgdGhlIHdpbmRvd3MgQ1JUIGRvZXMgdG8gdmFsaWRhdGUgZmlsZSBoYW5kbGVzICovCi1pbnQKLV9QeVZlcmlmeV9mZChpbnQgZmQpCitzdGF0aWMgUHlPYmplY3QgKgorUHlMb25nX0Zyb21QeV9vZmZfdChQeV9vZmZfdCBvZmZzZXQpCiB7Ci0gICAgY29uc3QgaW50IGkxID0gZmQgPj4gSU9JTkZPX0wyRTsKLSAgICBjb25zdCBpbnQgaTIgPSBmZCAmICgoMSA8PCBJT0lORk9fTDJFKSAtIDEpOwotCi0gICAgc3RhdGljIHNpemVfdCBzaXplb2ZfaW9pbmZvID0gMDsKLQotICAgIC8qIERldGVybWluZSB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGlvaW5mbyBzdHJ1Y3R1cmUsCi0gICAgICogYXMgdXNlZCBieSB0aGUgQ1JUIGxvYWRlZCBpbiBtZW1vcnkKLSAgICAgKi8KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwICYmIF9fcGlvaW5mb1swXSAhPSBOVUxMKSB7Ci0gICAgICAgIHNpemVvZl9pb2luZm8gPSBfbXNpemUoX19waW9pbmZvWzBdKSAvIElPSU5GT19BUlJBWV9FTFRTOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwKSB7Ci0gICAgICAgIC8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uLi4gKi8KLSAgICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIC8qIFNlZSB0aGF0IGl0IGlzbid0IGEgc3BlY2lhbCBDTEVBUiBmaWxlbm8gKi8KLSAgICBpZiAoZmQgIT0gX05PX0NPTlNPTEVfRklMRU5PKSB7Ci0gICAgICAgIC8qIE1pY3Jvc29mdCBDUlQgd291bGQgY2hlY2sgdGhhdCAwPD1mZDxfbmhhbmRsZSBidXQgd2UgY2FuJ3QgZG8gdGhhdC4gIEluc3RlYWQKLSAgICAgICAgICogd2UgY2hlY2sgcG9pbnRlciB2YWxpZGl0eSBhbmQgb3RoZXIgaW5mbwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKDAgPD0gaTEgJiYgaTEgPCBJT0lORk9fQVJSQVlTICYmIF9fcGlvaW5mb1tpMV0gIT0gTlVMTCkgewotICAgICAgICAgICAgLyogZmluYWxseSwgY2hlY2sgdGhhdCB0aGUgZmlsZSBpcyBvcGVuICovCi0gICAgICAgICAgICBteV9pb2luZm8qIGluZm8gPSAobXlfaW9pbmZvKikoX19waW9pbmZvW2kxXSArIGkyICogc2l6ZW9mX2lvaW5mbyk7Ci0gICAgICAgICAgICBpZiAoaW5mby0+b3NmaWxlICYgRk9QRU4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgZmFpbDoKLSAgICBlcnJubyA9IEVCQURGOwotICAgIHJldHVybiAwOworI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9mZnNldCk7CisjZW5kaWYKIH0KIAorCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAorLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZF9kdXAyIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KKyAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKKyAqLworI2RlZmluZSBJT0lORk9fTDJFIDUKKyNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAorI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCisjZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKKyNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgorCiAvKiB0aGUgc3BlY2lhbCBjYXNlIG9mIGNoZWNraW5nIGR1cDIuICBUaGUgdGFyZ2V0IGZkIG11c3QgYmUgaW4gYSBzZW5zaWJsZSByYW5nZSAqLwogc3RhdGljIGludAogX1B5VmVyaWZ5X2ZkX2R1cDIoaW50IGZkMSwgaW50IGZkMikKQEAgLTExMzIsNDYgKzEwODksMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiB9CiAjZWxzZQotLyogZHVtbXkgdmVyc2lvbi4gX1B5VmVyaWZ5X2ZkKCkgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGZpbGVvYmplY3QuaCAqLwotI2RlZmluZSBfUHlWZXJpZnlfZmRfZHVwMihBLCBCKSAoMSkKKyNkZWZpbmUgX1B5VmVyaWZ5X2ZkX2R1cDIoZmQxLCBmZDIpIChfUHlWZXJpZnlfZmQoZmQxKSAmJiAoZmQyKSA+PSAwKQogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCi0vKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KLSAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczc5MTUxNC5hc3B4IGFzIHRoZSByZXF1aXJlZAotICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCi0gICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCi10eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7Ci0gICAgVUxPTkcgUmVwYXJzZVRhZzsKLSAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7Ci0gICAgVVNIT1JUIFJlc2VydmVkOwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKLSAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVPZmZzZXQ7Ci0gICAgICAgICAgICBVU0hPUlQgUHJpbnROYW1lTGVuZ3RoOwotICAgICAgICAgICAgVUxPTkcgRmxhZ3M7Ci0gICAgICAgICAgICBXQ0hBUiBQYXRoQnVmZmVyWzFdOwotICAgICAgICB9IFN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXI7Ci0KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCAgU3Vic3RpdHV0ZU5hbWVMZW5ndGg7Ci0gICAgICAgICAgICBVU0hPUlQgIFByaW50TmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lTGVuZ3RoOwotICAgICAgICAgICAgV0NIQVIgIFBhdGhCdWZmZXJbMV07Ci0gICAgICAgIH0gTW91bnRQb2ludFJlcGFyc2VCdWZmZXI7Ci0KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOwotICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOwotICAgIH07Ci19IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKLQotI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKLSNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKIAogc3RhdGljIGludAogd2luMzJfZ2V0X3JlcGFyc2VfdGFnKEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZSwgVUxPTkcgKnJlcGFyc2VfdGFnKQpAQCAtMTM1Niw0NyArMTI3NywzNyBAQAogCiAvKiBQT1NJWCBnZW5lcmljIG1ldGhvZHMgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZpbGRlcyhQeU9iamVjdCAqZmRvYmosIGludCAoKmZ1bmMpKGludCkpCitzdGF0aWMgaW50CitmaWxkZXNfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKQogewogICAgIGludCBmZDsKLSAgICBpbnQgcmVzOwotICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihmZG9iaik7CisgICAgaW50ICpwb2ludGVyID0gKGludCAqKXA7CisgICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKG8pOwogICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykoZmQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnBvaW50ZXIgPSBmZDsKKyAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4XzFzdHIoY29uc3QgY2hhciAqZnVuY19uYW1lLCBQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LAotICAgICAgICAgICBpbnQgKCpmdW5jKShjb25zdCBjaGFyKikpCitwb3NpeF9maWxkZXNfZmQoaW50IGZkLCBpbnQgKCpmdW5jKShpbnQpKQogewotICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9IGZ1bmNfbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gKCpmdW5jKShwYXRoLm5hcnJvdyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHJlcyA9ICgqZnVuYykoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCkBAIC0xNDc1LDg5ICsxMzg2LDcgQEAKICAgIFRoZXJlZm9yZSwgd2UgaW1wbGVtZW50IG91ciBvd24gc3RhdCwgYmFzZWQgb24gdGhlIFdpbjMyIEFQSSBkaXJlY3RseS4KICovCiAjZGVmaW5lIEhBVkVfU1RBVF9OU0VDIDEKLQotc3RydWN0IHdpbjMyX3N0YXR7Ci0gICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7Ci0gICAgX19pbnQ2NCBzdF9pbm87Ci0gICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKLSAgICBpbnQgc3Rfbmxpbms7Ci0gICAgaW50IHN0X3VpZDsKLSAgICBpbnQgc3RfZ2lkOwotICAgIHVuc2lnbmVkIGxvbmcgc3RfcmRldjsKLSAgICBfX2ludDY0IHN0X3NpemU7Ci0gICAgdGltZV90IHN0X2F0aW1lOwotICAgIGludCBzdF9hdGltZV9uc2VjOwotICAgIHRpbWVfdCBzdF9tdGltZTsKLSAgICBpbnQgc3RfbXRpbWVfbnNlYzsKLSAgICB0aW1lX3Qgc3RfY3RpbWU7Ci0gICAgaW50IHN0X2N0aW1lX25zZWM7Ci19OwotCi1zdGF0aWMgX19pbnQ2NCBzZWNzX2JldHdlZW5fZXBvY2hzID0gMTE2NDQ0NzM2MDA7IC8qIFNlY29uZHMgYmV0d2VlbiAxLjEuMTYwMSBhbmQgMS4xLjE5NzAgKi8KLQotc3RhdGljIHZvaWQKLUZJTEVfVElNRV90b190aW1lX3RfbnNlYyhGSUxFVElNRSAqaW5fcHRyLCB0aW1lX3QgKnRpbWVfb3V0LCBpbnQqIG5zZWNfb3V0KQotewotICAgIC8qIFhYWCBlbmRpYW5uZXNzLiBTaG91bGRuJ3QgbWF0dGVyLCBhcyBhbGwgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAvKiBDYW5ub3Qgc2ltcGx5IGNhc3QgYW5kIGRlcmVmZXJlbmNlIGluX3B0ciwKLSAgICAgICBzaW5jZSBpdCBtaWdodCBub3QgYmUgYWxpZ25lZCBwcm9wZXJseSAqLwotICAgIF9faW50NjQgaW47Ci0gICAgbWVtY3B5KCZpbiwgaW5fcHRyLCBzaXplb2YoaW4pKTsKLSAgICAqbnNlY19vdXQgPSAoaW50KShpbiAlIDEwMDAwMDAwKSAqIDEwMDsgLyogRklMRVRJTUUgaXMgaW4gdW5pdHMgb2YgMTAwIG5zZWMuICovCi0gICAgKnRpbWVfb3V0ID0gUHlfU0FGRV9ET1dOQ0FTVCgoaW4gLyAxMDAwMDAwMCkgLSBzZWNzX2JldHdlZW5fZXBvY2hzLCBfX2ludDY0LCB0aW1lX3QpOwotfQotCi1zdGF0aWMgdm9pZAotdGltZV90X3RvX0ZJTEVfVElNRSh0aW1lX3QgdGltZV9pbiwgaW50IG5zZWNfaW4sIEZJTEVUSU1FICpvdXRfcHRyKQotewotICAgIC8qIFhYWCBlbmRpYW5uZXNzICovCi0gICAgX19pbnQ2NCBvdXQ7Ci0gICAgb3V0ID0gdGltZV9pbiArIHNlY3NfYmV0d2Vlbl9lcG9jaHM7Ci0gICAgb3V0ID0gb3V0ICogMTAwMDAwMDAgKyBuc2VjX2luIC8gMTAwOwotICAgIG1lbWNweShvdXRfcHRyLCAmb3V0LCBzaXplb2Yob3V0KSk7Ci19Ci0KLS8qIEJlbG93LCB3ZSAqa25vdyogdGhhdCB1Z28rciBpcyAwNDQ0ICovCi0jaWYgX1NfSVJFQUQgIT0gMDQwMAotI2Vycm9yIFVuc3VwcG9ydGVkIEMgbGlicmFyeQotI2VuZGlmCi1zdGF0aWMgaW50Ci1hdHRyaWJ1dGVzX3RvX21vZGUoRFdPUkQgYXR0cikKLXsKLSAgICBpbnQgbSA9IDA7Ci0gICAgaWYgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIG0gfD0gX1NfSUZESVIgfCAwMTExOyAvKiBJRkVYRUMgZm9yIHVzZXIsZ3JvdXAsb3RoZXIgKi8KLSAgICBlbHNlCi0gICAgICAgIG0gfD0gX1NfSUZSRUc7Ci0gICAgaWYgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkKLSAgICAgICAgbSB8PSAwNDQ0OwotICAgIGVsc2UKLSAgICAgICAgbSB8PSAwNjY2OwotICAgIHJldHVybiBtOwotfQotCi1zdGF0aWMgaW50Ci1hdHRyaWJ1dGVfZGF0YV90b19zdGF0KEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyByZXBhcnNlX3RhZywgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKLXsKLSAgICBtZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOwotICAgIHJlc3VsdC0+c3RfbW9kZSA9IGF0dHJpYnV0ZXNfdG9fbW9kZShpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzKTsKLSAgICByZXN1bHQtPnN0X3NpemUgPSAoKChfX2ludDY0KWluZm8tPm5GaWxlU2l6ZUhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZVNpemVMb3c7Ci0gICAgcmVzdWx0LT5zdF9kZXYgPSBpbmZvLT5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKLSAgICByZXN1bHQtPnN0X3JkZXYgPSByZXN1bHQtPnN0X2RldjsKLSAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0Q3JlYXRpb25UaW1lLCAmcmVzdWx0LT5zdF9jdGltZSwgJnJlc3VsdC0+c3RfY3RpbWVfbnNlYyk7Ci0gICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdExhc3RXcml0ZVRpbWUsICZyZXN1bHQtPnN0X210aW1lLCAmcmVzdWx0LT5zdF9tdGltZV9uc2VjKTsKLSAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUsICZyZXN1bHQtPnN0X2F0aW1lLCAmcmVzdWx0LT5zdF9hdGltZV9uc2VjKTsKLSAgICByZXN1bHQtPnN0X25saW5rID0gaW5mby0+bk51bWJlck9mTGlua3M7Ci0gICAgcmVzdWx0LT5zdF9pbm8gPSAoKChfX2ludDY0KWluZm8tPm5GaWxlSW5kZXhIaWdoKTw8MzIpICsgaW5mby0+bkZpbGVJbmRleExvdzsKLSAgICBpZiAocmVwYXJzZV90YWcgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykgewotICAgICAgICAvKiBmaXJzdCBjbGVhciB0aGUgU19JRk1UIGJpdHMgKi8KLSAgICAgICAgcmVzdWx0LT5zdF9tb2RlIF49IChyZXN1bHQtPnN0X21vZGUgJiBTX0lGTVQpOwotICAgICAgICAvKiBub3cgc2V0IHRoZSBiaXRzIHRoYXQgbWFrZSB0aGlzIGEgc3ltbGluayAqLwotICAgICAgICByZXN1bHQtPnN0X21vZGUgfD0gU19JRkxOSzsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMgMQogCiBzdGF0aWMgQk9PTAogYXR0cmlidXRlc19mcm9tX2RpcihMUENTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKQEAgLTE1ODIsNiArMTQxMSwyNSBAQAogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9pZAorZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyAqcmVwYXJzZV90YWcpCit7CisgICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOworICAgIGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMgPSBwRmlsZURhdGEtPmR3RmlsZUF0dHJpYnV0ZXM7CisgICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IHBGaWxlRGF0YS0+ZnRDcmVhdGlvblRpbWU7CisgICAgaW5mby0+ZnRMYXN0QWNjZXNzVGltZSA9IHBGaWxlRGF0YS0+ZnRMYXN0QWNjZXNzVGltZTsKKyAgICBpbmZvLT5mdExhc3RXcml0ZVRpbWUgID0gcEZpbGVEYXRhLT5mdExhc3RXcml0ZVRpbWU7CisgICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IHBGaWxlRGF0YS0+bkZpbGVTaXplSGlnaDsKKyAgICBpbmZvLT5uRmlsZVNpemVMb3cgICAgID0gcEZpbGVEYXRhLT5uRmlsZVNpemVMb3c7CisvKiAgaW5mby0+bk51bWJlck9mTGlua3MgICA9IDE7ICovCisgICAgaWYgKHBGaWxlRGF0YS0+ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCisgICAgICAgICpyZXBhcnNlX3RhZyA9IHBGaWxlRGF0YS0+ZHdSZXNlcnZlZDA7CisgICAgZWxzZQorICAgICAgICAqcmVwYXJzZV90YWcgPSAwOworfQorCiBzdGF0aWMgQk9PTAogYXR0cmlidXRlc19mcm9tX2Rpcl93KExQQ1dTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKIHsKQEAgLTE1OTEsNDUgKzE0MzksMTAgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOwotICAgICpyZXBhcnNlX3RhZyA9IDA7Ci0gICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXM7Ci0gICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IEZpbGVEYXRhLmZ0Q3JlYXRpb25UaW1lOwotICAgIGluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUgPSBGaWxlRGF0YS5mdExhc3RBY2Nlc3NUaW1lOwotICAgIGluZm8tPmZ0TGFzdFdyaXRlVGltZSAgPSBGaWxlRGF0YS5mdExhc3RXcml0ZVRpbWU7Ci0gICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgaW5mby0+bkZpbGVTaXplTG93ICAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUxvdzsKLS8qICBpbmZvLT5uTnVtYmVyT2ZMaW5rcyAgID0gMTsgKi8KLSAgICBpZiAoRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCi0gICAgICAgICpyZXBhcnNlX3RhZyA9IEZpbGVEYXRhLmR3UmVzZXJ2ZWQwOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm9fdygmRmlsZURhdGEsIGluZm8sIHJlcGFyc2VfdGFnKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotLyogR3JhYiBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwotc3RhdGljIGludCBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlID0gLTE7Ci1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKShIQU5ETEUsIExQV1NUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7Ci1zdGF0aWMgaW50Ci1jaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKQotewotICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7Ci0gICAgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBKShIQU5ETEUsIExQU1RSLCBEV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKLQotICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmICgtMSA9PSBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKQotICAgIHsKLSAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7Ci0gICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSIpOwotICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVciKTsKLSAgICAgICAgaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVc7Ci0gICAgfQotICAgIHJldHVybiBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlOwotfQotCiBzdGF0aWMgQk9PTAogZ2V0X3RhcmdldF9wYXRoKEhBTkRMRSBoZGwsIHdjaGFyX3QgKip0YXJnZXRfcGF0aCkKIHsKQEAgLTE2MzgsOCArMTQ1MSw4IEBACiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZQogICAgICAgIHRoZSB0YXJnZXQgcGF0aCBuYW1lICh0aGVuIHdlJ2xsIGNhbGwgbHN0YXQgb24gaXQpLiAqLwotICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGwsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZPTFVNRV9OQU1FX0RPUyk7CisgICAgYnVmX3NpemUgPSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkbCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9MVU1FX05BTUVfRE9TKTsKICAgICBpZighYnVmX3NpemUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIApAQCAtMTY0OSw3ICsxNDYyLDcgQEAKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAotICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkbCwKKyAgICByZXN1bHRfbGVuZ3RoID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmX3NpemUsIFZPTFVNRV9OQU1FX0RPUyk7CiAKICAgICBpZighcmVzdWx0X2xlbmd0aCkgewpAQCAtMTY2OSwxMCArMTQ4MiwxMCBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSk7CiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE2ODIsMTIgKzE0OTUsNiBAQAogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGNvbnN0IGNoYXIgKmRvdDsKIAotICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewotICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgZG9uJ3QKLSAgICAgICAgICAgdHJhdmVyc2UgcmVwYXJzZSBwb2ludC4gKi8KLSAgICAgICAgdHJhdmVyc2UgPSBGQUxTRTsKLSAgICB9Ci0KICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKAogICAgICAgICBwYXRoLAogICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KQEAgLTE3NTUsNyArMTU2Miw3IEBACiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwogICAgIH0KLSAgICBhdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7CiAKICAgICAvKiBTZXQgU19JRVhFQyBpZiBpdCBpcyBhbiAuZXhlLCAuYmF0LCAuLi4gKi8KICAgICBkb3QgPSBzdHJyY2hyKHBhdGgsICcuJyk7CkBAIC0xNzY4LDcgKzE1NzUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE3NzgsMTIgKzE1ODUsNiBAQAogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKIAotICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewotICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgZG9uJ3QKLSAgICAgICAgICAgdHJhdmVyc2UgcmVwYXJzZSBwb2ludC4gKi8KLSAgICAgICAgdHJhdmVyc2UgPSBGQUxTRTsKLSAgICB9Ci0KICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAogICAgICAgICBwYXRoLAogICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KQEAgLTE4NTEsNyArMTY1Miw3IEBACiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwogICAgIH0KLSAgICBhdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7CiAKICAgICAvKiBTZXQgU19JRVhFQyBpZiBpdCBpcyBhbiAuZXhlLCAuYmF0LCAuLi4gKi8KICAgICBkb3QgPSB3Y3NyY2hyKHBhdGgsICcuJyk7CkBAIC0xODY0LDcgKzE2NjUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQord2luMzJfeHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQogewogICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgogICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KQEAgLTE4NzQsNyArMTY3NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKK3dpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQogewogICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgogICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KQEAgLTE4OTYsODAgKzE2OTcsMjkgQEAKICAgIFRoZSBfdyByZXByZXNlbnQgVW5pY29kZSBlcXVpdmFsZW50cyBvZiB0aGUgYWZvcmVtZW50aW9uZWQgQU5TSSBmdW5jdGlvbnMuICovCiAKIHN0YXRpYyBpbnQKLXdpbjMyX2xzdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCit3aW4zMl9sc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgRkFMU0UpOwogfQogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCit3aW4zMl9sc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIEZBTFNFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQord2luMzJfc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgVFJVRSk7CiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3N0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQord2luMzJfc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIFRSVUUpOwogfQogCi1zdGF0aWMgaW50Ci13aW4zMl9mc3RhdChpbnQgZmlsZV9udW1iZXIsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCi17Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKLSAgICBIQU5ETEUgaDsKLSAgICBpbnQgdHlwZTsKLQotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZpbGVfbnVtYmVyKSkKLSAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIGVsc2UKLSAgICAgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZV9udW1iZXIpOwotCi0gICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCi0gICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwotICAgIGVycm5vID0gMDsKLQotICAgIGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIC8qIFRoaXMgaXMgcmVhbGx5IGEgQyBsaWJyYXJ5IGVycm9yIChpbnZhbGlkIGZpbGUgaGFuZGxlKS4KLSAgICAgICAgICAgV2Ugc2V0IHRoZSBXaW4zMiBlcnJvciB0byB0aGUgY2xvc2VzIG9uZSBtYXRjaGluZy4gKi8KLSAgICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX0lOVkFMSURfSEFORExFKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBtZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOwotCi0gICAgdHlwZSA9IEdldEZpbGVUeXBlKGgpOwotICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9VTktOT1dOKSB7Ci0gICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyogZWxzZTogdmFsaWQgYnV0IHVua25vd24gZmlsZSAqLwotICAgIH0KLQotICAgIGlmICh0eXBlICE9IEZJTEVfVFlQRV9ESVNLKSB7Ci0gICAgICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9DSEFSKQotICAgICAgICAgICAgcmVzdWx0LT5zdF9tb2RlID0gX1NfSUZDSFI7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRklMRV9UWVBFX1BJUEUpCi0gICAgICAgICAgICByZXN1bHQtPnN0X21vZGUgPSBfU19JRklGTzsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoLCAmaW5mbykpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGF0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIDAsIHJlc3VsdCk7Ci0gICAgLyogc3BlY2lmaWMgdG8gZnN0YXQoKSAqLwotICAgIHJlc3VsdC0+c3RfaW5vID0gKCgoX19pbnQ2NClpbmZvLm5GaWxlSW5kZXhIaWdoKTw8MzIpICsgaW5mby5uRmlsZUluZGV4TG93OwotICAgIHJldHVybiAwOwotfQotCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIoc3RhdF9yZXN1bHRfX2RvY19fLApAQCAtMjAxOSw2ICsxNzY5LDkgQEAKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogICAgIHsic3RfYmlydGh0aW1lIiwgICAidGltZSBvZiBjcmVhdGlvbiJ9LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMKKyAgICB7InN0X2ZpbGVfYXR0cmlidXRlcyIsICJXaW5kb3dzIGZpbGUgYXR0cmlidXRlIGJpdHMifSwKKyNlbmRpZgogICAgIHswfQogfTsKIApAQCAtMjA1OCw2ICsxODExLDEyIEBACiAjZGVmaW5lIFNUX0JJUlRIVElNRV9JRFggU1RfR0VOX0lEWAogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUworI2RlZmluZSBTVF9GSUxFX0FUVFJJQlVURVNfSURYIChTVF9CSVJUSFRJTUVfSURYKzEpCisjZWxzZQorI2RlZmluZSBTVF9GSUxFX0FUVFJJQlVURVNfSURYIFNUX0JJUlRIVElNRV9JRFgKKyNlbmRpZgorCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHN0YXRfcmVzdWx0X2Rlc2MgPSB7CiAgICAgInN0YXRfcmVzdWx0IiwgLyogbmFtZSAqLwogICAgIHN0YXRfcmVzdWx0X19kb2NfXywgLyogZG9jICovCkBAIC0yMTU5LDEwICsxOTE4LDEyIEBACiBQeURvY19TVFJWQVIoc3RhdF9mbG9hdF90aW1lc19fZG9jX18sCiAic3RhdF9mbG9hdF90aW1lcyhbbmV3dmFsXSkgLT4gb2xkdmFsXG5cblwKIERldGVybWluZSB3aGV0aGVyIG9zLltsZl1zdGF0IHJlcHJlc2VudHMgdGltZSBzdGFtcHMgYXMgZmxvYXQgb2JqZWN0cy5cblwKLUlmIG5ld3ZhbCBpcyBUcnVlLCBmdXR1cmUgY2FsbHMgdG8gc3RhdCgpIHJldHVybiBmbG9hdHMsIGlmIGl0IGlzIEZhbHNlLFxuXAotZnV0dXJlIGNhbGxzIHJldHVybiBpbnRzLiBcblwKLUlmIG5ld3ZhbCBpcyBvbWl0dGVkLCByZXR1cm4gdGhlIGN1cnJlbnQgc2V0dGluZy5cbiIpOworXG5cCitJZiB2YWx1ZSBpcyBUcnVlLCBmdXR1cmUgY2FsbHMgdG8gc3RhdCgpIHJldHVybiBmbG9hdHM7IGlmIGl0IGlzIEZhbHNlLFxuXAorZnV0dXJlIGNhbGxzIHJldHVybiBpbnRzLlxuXAorSWYgdmFsdWUgaXMgb21pdHRlZCwgcmV0dXJuIHRoZSBjdXJyZW50IHNldHRpbmcuXG4iKTsKIAorLyogQUMgMy41OiB0aGUgcHVibGljIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIE5vbmUsIG5vdCByZWFkeSBmb3IgdGhhdCB5ZXQgKi8KIHN0YXRpYyBQeU9iamVjdCoKIHN0YXRfZmxvYXRfdGltZXMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjMyMiw2ICsyMDgzLDEwIEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBTVF9GTEFHU19JRFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X2ZsYWdzKSk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgU1RfRklMRV9BVFRSSUJVVEVTX0lEWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHN0LT5zdF9maWxlX2F0dHJpYnV0ZXMpKTsKKyNlbmRpZgogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjM4NSwxMiArMjE1MCwxODEgQEAKICAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwogfQogCi0jaWZkZWYgSEFWRV9GU1RBVEFUCi0gICAgI2RlZmluZSBPU19TVEFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorLypbcHl0aG9uIGlucHV0XQorCitmb3IgcyBpbiAiIiIKKworRkFDQ0VTU0FUCitGQ0hNT0RBVAorRkNIT1dOQVQKK0ZTVEFUQVQKK0xJTktBVAorTUtESVJBVAorTUtGSUZPQVQKK01LTk9EQVQKK09QRU5BVAorUkVBRExJTktBVAorU1lNTElOS0FUCitVTkxJTktBVAorCisiIiIuc3RyaXAoKS5zcGxpdCgpOgorICAgIHMgPSBzLnN0cmlwKCkKKyAgICBwcmludCgiIiIKKyNpZmRlZiBIQVZFX3tzfQorICAgICNkZWZpbmUge3N9X0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgogI2Vsc2UKLSAgICAjZGVmaW5lIE9TX1NUQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyAgICAjZGVmaW5lIHtzfV9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisiIiIucnN0cmlwKCkuZm9ybWF0KHM9cykpCisKK2ZvciBzIGluICIiIgorCitGQ0hESVIKK0ZDSE1PRAorRkNIT1dOCitGRE9QRU5ESVIKK0ZFWEVDVkUKK0ZQQVRIQ09ORgorRlNUQVRWRlMKK0ZUUlVOQ0FURQorCisiIiIuc3RyaXAoKS5zcGxpdCgpOgorICAgIHMgPSBzLnN0cmlwKCkKKyAgICBwcmludCgiIiIKKyNpZmRlZiBIQVZFX3tzfQorICAgICNkZWZpbmUgUEFUSF9IQVZFX3tzfSAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX3tzfSAwCiAjZW5kaWYKIAorIiIiLnJzdHJpcCgpLmZvcm1hdChzPXMpKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAjZGVmaW5lIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICNkZWZpbmUgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgICNkZWZpbmUgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgI2RlZmluZSBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSU5LQVQKKyAgICAjZGVmaW5lIExJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgI2RlZmluZSBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgICNkZWZpbmUgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgI2RlZmluZSBNS05PREFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICAjZGVmaW5lIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgI2RlZmluZSBSRUFETElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIFJFQURMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWU1MSU5LQVQKKyAgICAjZGVmaW5lIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICNkZWZpbmUgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hESVIgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hESVIgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSE1PRCAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSE1PRCAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNIT1dOIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNIT1dOIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRE9QRU5ESVIKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRE9QRU5ESVIgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRE9QRU5ESVIgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRVhFQ1ZFIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkVYRUNWRSAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlBBVEhDT05GIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlBBVEhDT05GIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZTVEFUVkZTIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlNUQVRWRlMgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZUUlVOQ0FURSAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZUUlVOQ0FURSAwCisjZW5kaWYKKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YmQ0ZjZmN2Q0MTI2N2YxIGlucHV0PTgwYjRjODkwYjY3NzRlYTVdKi8KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAjdW5kZWYgUEFUSF9IQVZFX0ZUUlVOQ0FURQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZUUlVOQ0FURSAxCisjZW5kaWYKIAogLypbcHl0aG9uIGlucHV0XQogCkBAIC0yNDA1LDIyICsyMzM5LDI1IEBACiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGFsbG93X2ZkPUZhbHNlLCBudWxsYWJsZT1GYWxzZSk6CiAgICAgICAgICMgcmlnaHQgbm93IHBhdGhfdCBkb2Vzbid0IHN1cHBvcnQgZGVmYXVsdCB2YWx1ZXMuCiAgICAgICAgICMgdG8gc3VwcG9ydCBhIGRlZmF1bHQgdmFsdWUsIHlvdSdsbCBuZWVkIHRvIG92ZXJyaWRlIGluaXRpYWxpemUoKS4KLSAgICAgICAgaWYgc2VsZi5kZWZhdWx0IGlzIG5vdCB1bnNwZWNpZmllZDoKKyAgICAgICAgaWYgc2VsZi5kZWZhdWx0IG5vdCBpbiAodW5zcGVjaWZpZWQsIE5vbmUpOgogICAgICAgICAgICAgZmFpbCgiQ2FuJ3Qgc3BlY2lmeSBhIGRlZmF1bHQgdG8gdGhlIHBhdGhfdCBjb252ZXJ0ZXIhIikKIAotICAgICAgICBpZiBzZWxmLmNfZGVmYXVsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZhaWwoIkNhbid0IHNwZWNpZnkgYSBjX2RlZmF1bHQgdG8gdGhlIHBhdGhfdCBjb252ZXJ0ZXIhIikKKyAgICAgICAgaWYgc2VsZi5jX2RlZmF1bHQgbm90IGluIChOb25lLCAnUHlfTm9uZScpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBzcGVjaWZ5IGEgY19kZWZhdWx0IHRvIHRoZSBwYXRoX3QgY29udmVydGVyISIpCiAKICAgICAgICAgc2VsZi5udWxsYWJsZSA9IG51bGxhYmxlCiAgICAgICAgIHNlbGYuYWxsb3dfZmQgPSBhbGxvd19mZAogCiAgICAgZGVmIHByZV9yZW5kZXIoc2VsZik6CiAgICAgICAgIGRlZiBzdHJpZnkodmFsdWUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgICAgIHJldHVybiBzdHIoaW50KGJvb2wodmFsdWUpKSkKIAogICAgICAgICAjIGFkZCBzZWxmLnB5X25hbWUgaGVyZSB3aGVuIG1lcmdpbmcgd2l0aCBwb3NpeG1vZHVsZSBjb252ZXJzaW9uCi0gICAgICAgIHNlbGYuY19kZWZhdWx0ID0gJ1BBVEhfVF9JTklUSUFMSVpFKCJ7fSIsIHt9LCB7fSknLmZvcm1hdCgKKyAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAnUEFUSF9UX0lOSVRJQUxJWkUoInt9IiwgInt9Iiwge30sIHt9KScuZm9ybWF0KAogICAgICAgICAgICAgc2VsZi5mdW5jdGlvbi5uYW1lLAorICAgICAgICAgICAgc2VsZi5uYW1lLAogICAgICAgICAgICAgc3RyaWZ5KHNlbGYubnVsbGFibGUpLAogICAgICAgICAgICAgc3RyaWZ5KHNlbGYuYWxsb3dfZmQpLAogICAgICAgICAgICAgKQpAQCAtMjQzMSwxNSArMjM2OCw4NyBAQAogCiBjbGFzcyBkaXJfZmRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnaW50JwotICAgIGNvbnZlcnRlciA9ICdPU19TVEFUX0RJUl9GRF9DT05WRVJURVInCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZik6CisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsIHJlcXVpcmVzPU5vbmUpOgogICAgICAgICBpZiBzZWxmLmRlZmF1bHQgaW4gKHVuc3BlY2lmaWVkLCBOb25lKToKICAgICAgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gJ0RFRkFVTFRfRElSX0ZEJworICAgICAgICBpZiBpc2luc3RhbmNlKHJlcXVpcmVzLCBzdHIpOgorICAgICAgICAgICAgc2VsZi5jb252ZXJ0ZXIgPSByZXF1aXJlcy51cHBlcigpICsgJ19ESVJfRkRfQ09OVkVSVEVSJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jb252ZXJ0ZXIgPSAnZGlyX2ZkX2NvbnZlcnRlcicKIAorY2xhc3MgZmlsZGVzX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludCcKKyAgICBjb252ZXJ0ZXIgPSAnZmlsZGVzX2NvbnZlcnRlcicKKworY2xhc3MgdWlkX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAidWlkX3QiCisgICAgY29udmVydGVyID0gJ19QeV9VaWRfQ29udmVydGVyJworCitjbGFzcyBnaWRfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICJnaWRfdCIKKyAgICBjb252ZXJ0ZXIgPSAnX1B5X0dpZF9Db252ZXJ0ZXInCisKK2NsYXNzIGRldl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2Rldl90JworICAgIGNvbnZlcnRlciA9ICdfUHlfRGV2X0NvbnZlcnRlcicKKworY2xhc3MgZGV2X3RfcmV0dXJuX2NvbnZlcnRlcih1bnNpZ25lZF9sb25nX3JldHVybl9jb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnZGV2X3QnCisgICAgY29udmVyc2lvbl9mbiA9ICdfUHlMb25nX0Zyb21EZXYnCisgICAgdW5zaWduZWRfY2FzdCA9ICcoZGV2X3QpJworCitjbGFzcyBGU0NvbnZlcnRlcl9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeU9iamVjdCAqJworICAgIGNvbnZlcnRlciA9ICdQeVVuaWNvZGVfRlNDb252ZXJ0ZXInCisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmRlZmF1bHQgaXMgbm90IHVuc3BlY2lmaWVkOgorICAgICAgICAgICAgZmFpbCgiRlNDb252ZXJ0ZXJfY29udmVydGVyIGRvZXMgbm90IHN1cHBvcnQgZGVmYXVsdCB2YWx1ZXMiKQorICAgICAgICBzZWxmLmNfZGVmYXVsdCA9ICdOVUxMJworCisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgIHJldHVybiAiUHlfWERFQ1JFRigiICsgc2VsZi5uYW1lICsgIik7XG4iCisKK2NsYXNzIHBpZF90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3BpZF90JworICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX1BJRCAiJworCitjbGFzcyBpZHR5cGVfdF9jb252ZXJ0ZXIoaW50X2NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpZHR5cGVfdCcKKworY2xhc3MgaWRfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpZF90JworICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX1BJRCAiJworCitjbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9JTlRQVFIgIicKKworY2xhc3MgUHlfb2ZmX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfb2ZmX3QnCisgICAgY29udmVydGVyID0gJ1B5X29mZl90X2NvbnZlcnRlcicKKworY2xhc3MgUHlfb2ZmX3RfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfb2ZmX3QnCisgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVB5X29mZl90JworCitjbGFzcyBwYXRoX2NvbmZuYW1lX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlPSJpbnQiCisgICAgY29udmVydGVyPSJjb252X3BhdGhfY29uZm5hbWUiCisKK2NsYXNzIGNvbmZzdHJfY29uZm5hbWVfY29udmVydGVyKHBhdGhfY29uZm5hbWVfY29udmVydGVyKToKKyAgICBjb252ZXJ0ZXI9J2NvbnZfY29uZnN0cl9jb25mbmFtZScKKworY2xhc3Mgc3lzY29uZl9jb25mbmFtZV9jb252ZXJ0ZXIocGF0aF9jb25mbmFtZV9jb252ZXJ0ZXIpOgorICAgIGNvbnZlcnRlcj0iY29udl9zeXNjb25mX2NvbmZuYW1lIgorCitjbGFzcyBzY2hlZF9wYXJhbV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdzdHJ1Y3Qgc2NoZWRfcGFyYW0nCisgICAgY29udmVydGVyID0gJ2NvbnZlcnRfc2NoZWRfcGFyYW0nCisgICAgaW1wbF9ieV9yZWZlcmVuY2UgPSBUcnVlOwogCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01YzlmNDU2ZjUzMjQ0ZmMzXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZmZlNjgzMTZmMTYwNDAxXSovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIApAQCAtMjQ1MCw3ICsyNDU5LDcgQEAKIAogICAgICoKIAotICAgIGRpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZzdGF0YXQnKSA9IE5vbmUKICAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAogICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgYSByZWxhdGl2ZSBzdHJpbmc7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvCiAgICAgICAgIHRoYXQgZGlyZWN0b3J5LgpAQCAtMjQ3MSwxMDMgKzI0ODAsNDEgQEAKIAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIob3Nfc3RhdF9fZG9jX18sCi0ic3RhdCgkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCi0iLS1cbiIKLSJcbiIKLSJQZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cbiIKLSJcbiIKLSIgIHBhdGhcbiIKLSIgICAgUGF0aCB0byBiZSBleGFtaW5lZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKLSIgIGRpcl9mZFxuIgotIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCi0iICAgIGFuZCBwYXRoIHNob3VsZCBiZSBhIHJlbGF0aXZlIHN0cmluZzsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG9cbiIKLSIgICAgdGhhdCBkaXJlY3RvcnkuXG4iCi0iICBmb2xsb3dfc3ltbGlua3NcbiIKLSIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKLSIgICAgc3RhdCB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKLSIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgotIlxuIgotImRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcbiIKLSIgIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcbiIKLSIgIE5vdEltcGxlbWVudGVkRXJyb3IuXG4iCi0iXG4iCi0iSXRcJ3MgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcbiIKLSIgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOwotCi0jZGVmaW5lIE9TX1NUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXRfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXQiLCAwLCAxKTsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgT1NfU1RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7Ci0KLWV4aXQ6Ci0gICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0KLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMWRjYWE1ZTI0ZGI5ODgyIGlucHV0PTVhZTE1NWJkNDc1ZmQyMGFdKi8KK29zX3N0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNGY3NTY5Zjk1ZDUyM2NhIGlucHV0PTA5OWQzNTZjMzA2ZmEyNGFdKi8KIHsKICAgICByZXR1cm4gcG9zaXhfZG9fc3RhdCgic3RhdCIsIHBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2xzdGF0X19kb2NfXywKLSJsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAotRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxzdGF0CisKKyAgICBwYXRoIDogcGF0aF90CisKKyAgICAqCisKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZzdGF0YXQnKSA9IE5vbmUKKworUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGgsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLgorCitMaWtlIHN0YXQoKSwgYnV0IGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCitFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xzdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdhNzQ4ZTMzM2ZjYjM5YmQgaW5wdXQ9MGI3NDc0NzY1OTI3YjkyNV0qLwogewotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsc3RhdCI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0Iiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX0ZTVEFUQVQKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAotI2Vsc2UKLSAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZG9fc3RhdCgibHN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICByZXR1cm4gcG9zaXhfZG9fc3RhdCgibHN0YXQiLCBwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiB9CiAKIAotI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCi0gICAgI2RlZmluZSBPU19BQ0NFU1NfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCi0jZWxzZQotICAgICNkZWZpbmUgT1NfQUNDRVNTX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCi0jZW5kaWYKIC8qW2NsaW5pYyBpbnB1dF0KLW9zLmFjY2Vzcworb3MuYWNjZXNzIC0+IGJvb2wKIAogICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlKQogICAgICAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC4KQEAgLTI1NzgsNyArMjUyNSw3IEBACiAKICAgICAqCiAKLSAgICBkaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmYWNjZXNzYXQnKSA9IE5vbmUKICAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAogICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQKICAgICAgICAgZGlyZWN0b3J5LgpAQCAtMjYwNSw3MyArMjU1MiwxMiBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihvc19hY2Nlc3NfX2RvY19fLAotImFjY2VzcygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSxcbiIKLSIgICAgICAgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCi0iLS1cbiIKLSJcbiIKLSJVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLlxuIgotIlxuIgotIiAgcGF0aFxuIgotIiAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKLSIgIG1vZGVcbiIKLSIgICAgT3BlcmF0aW5nLXN5c3RlbSBtb2RlIGJpdGZpZWxkLiAgQ2FuIGJlIEZfT0sgdG8gdGVzdCBleGlzdGVuY2UsXG4iCi0iICAgIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suXG4iCi0iICBkaXJfZmRcbiIKLSIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgotIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKLSIgICAgZGlyZWN0b3J5LlxuIgotIiAgZWZmZWN0aXZlX2lkc1xuIgotIiAgICBJZiBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcbiIKLSIgICAgdGhlIHJlYWwgdWlkL2dpZC5cbiIKLSIgIGZvbGxvd19zeW1saW5rc1xuIgotIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgotIiAgICBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCi0iICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKLSJcbiIKLSJkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgotIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgotIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcbiIKLSIgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuIgotIiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiIpOwotCi0jZGVmaW5lIE9TX0FDQ0VTU19NRVRIT0RERUYgICAgXAotICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2FjY2Vzc19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorc3RhdGljIGludAorb3NfYWNjZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFiYWE1MzM0MDIxMDA4OGQgaW5wdXQ9Yjc1YTc1Njc5N2FmNDVlY10qLwogewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsIDAsIDEpOwotICAgIGludCBtb2RlOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZWZmZWN0aXZlX2lkcyA9IDA7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBPU19TVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZlZmZlY3RpdmVfaWRzLCAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX2FjY2Vzc19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZWZmZWN0aXZlX2lkcywgZm9sbG93X3N5bWxpbmtzKTsKLQotZXhpdDoKLSAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLQotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLCBpbnQgZWZmZWN0aXZlX2lkcywgaW50IGZvbGxvd19zeW1saW5rcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNmVkNGYxNTFiZTlkZjBmIGlucHV0PTJlMmU3NTk0MzcxZjViN2VdKi8KLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7CkBAIC0yNjgxLDExICsyNTY3LDExIEBACiAKICNpZm5kZWYgSEFWRV9GQUNDRVNTQVQKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiYWNjZXNzIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZWZmZWN0aXZlX2lkcykgewogICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcigiYWNjZXNzIiwgImVmZmVjdGl2ZV9pZHMiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogI2VuZGlmCiAKQEAgLTI3MDUsMTEgKzI1OTEsMTAgQEAKICAgICAgKiAgICAgKiBvciBpdCdzIGEgZGlyZWN0b3J5LgogICAgICAqIChEaXJlY3RvcmllcyBjYW5ub3QgYmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MuKQogICAgICovCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKAotICAgICAgICAoYXR0ciAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgJiYKKyAgICByZXR1cm5fdmFsdWUgPSAoYXR0ciAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgJiYKICAgICAgICAgICAgICghKG1vZGUgJiAyKSB8fAogICAgICAgICAgICAgIShhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpIHx8Ci0gICAgICAgICAgICAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpKTsKKyAgICAgICAgICAgIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSk7CiAjZWxzZQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjcyOCwxMiArMjYxMyw5IEBACiAjZW5kaWYKICAgICAgICAgcmVzdWx0ID0gYWNjZXNzKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoIXJlc3VsdCk7CisgICAgcmV0dXJuX3ZhbHVlID0gIXJlc3VsdDsKICNlbmRpZgogCi0jaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCi1leGl0OgotI2VuZGlmCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIApAQCAtMjc1Miw3ICsyNjM0LDYgQEAKIAogCiAjaWZkZWYgSEFWRV9UVFlOQU1FCi0KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLnR0eW5hbWUgLT4gRGVjb2RlRlNEZWZhdWx0CiAKQEAgLTI3NjQsNDQgKzI2NDUsOSBAQAogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB0ZXJtaW5hbCBkZXZpY2UgY29ubmVjdGVkIHRvICdmZCcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihvc190dHluYW1lX19kb2NfXywKLSJ0dHluYW1lKCRtb2R1bGUsIGZkLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB0ZXJtaW5hbCBkZXZpY2UgY29ubmVjdGVkIHRvIFwnZmRcJy5cbiIKLSJcbiIKLSIgIGZkXG4iCi0iICAgIEludGVnZXIgZmlsZSBkZXNjcmlwdG9yIGhhbmRsZS4iKTsKLQotI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJ0dHluYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3R0eW5hbWUsIE1FVEhfVkFSQVJHUywgb3NfdHR5bmFtZV9fZG9jX199LAotCi1zdGF0aWMgY2hhciAqCi1vc190dHluYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX3R0eW5hbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IGZkOwotICAgIGNoYXIgKl9yZXR1cm5fdmFsdWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgImk6dHR5bmFtZSIsCi0gICAgICAgICZmZCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICBfcmV0dXJuX3ZhbHVlID0gb3NfdHR5bmFtZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KF9yZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBjaGFyICoKIG9zX3R0eW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2VlN2JjNGNmZmVjMDFhMiBpbnB1dD01ZjcyY2E4M2U3NmIzYjQ1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDNhZDNkNWNjYWVmNzVjMyBpbnB1dD01ZjcyY2E4M2U3NmIzYjQ1XSovCiB7CiAgICAgY2hhciAqcmV0OwogCkBAIC0yODEwLDE3ICsyNjU2LDE4IEBACiAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIHJldDsKIH0KLSNlbHNlCi0jZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfQ1RFUk1JRAotUHlEb2NfU1RSVkFSKHBvc2l4X2N0ZXJtaWRfX2RvY19fLAotImN0ZXJtaWQoKSAtPiBzdHJpbmdcblxuXAotUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBmb3IgdGhpcyBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY3Rlcm1pZAorCitSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIGZvciB0aGlzIHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jdGVybWlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfY3Rlcm1pZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWI3Mzc4ODIwMWUwYWViZCBpbnB1dD0zYjg3ZmRkNTI1NTYzODJkXSovCiB7CiAgICAgY2hhciAqcmV0OwogICAgIGNoYXIgYnVmZmVyW0xfY3Rlcm1pZF07CkBAIC0yODM0LDEwNiArMjY4MSwxMTIgQEAKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYnVmZmVyKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfQ1RFUk1JRCAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfY2hkaXJfX2RvY19fLAotImNoZGlyKHBhdGgpXG5cblwKLUNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuY2hkaXIKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZDSERJUicpCisKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczNThlM2EyMGZiNWFhOTMgaW5wdXQ9MWE0YTE1YjRkMTJjYjE1ZF0qLwogewotICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2hkaXIiOwotI2lmZGVmIEhBVkVfRkNIRElSCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaGRpciIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgKLSAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLndpZGUpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICByZXN1bHQgPSB3aW4zMl93Y2hkaXIocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2NoZGlyKHBhdGgtPm5hcnJvdyk7CiAgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLwogI2Vsc2UKICNpZmRlZiBIQVZFX0ZDSERJUgotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXN1bHQgPSBmY2hkaXIocGF0aC5mZCk7CisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2hkaXIocGF0aC0+ZmQpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IGNoZGlyKHBhdGgtPm5hcnJvdyk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogI2lmZGVmIEhBVkVfRkNIRElSCi1QeURvY19TVFJWQVIocG9zaXhfZmNoZGlyX19kb2NfXywKLSJmY2hkaXIoZmQpXG5cblwKLUNoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuICBmZCBtdXN0IGJlXG5cCi1vcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuICBFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZjaGRpcgorCisgICAgZmQ6IGZpbGRlcworCitDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLgorCitmZCBtdXN0IGJlIG9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4KK0VxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mY2hkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmZG9iaikKK29zX2ZjaGRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjFkMzBkZjZiMmQzNDE4IGlucHV0PTE4ZTgxNjQ3OWEyZmE5ODVdKi8KIHsKLSAgICByZXR1cm4gcG9zaXhfZmlsZGVzKGZkb2JqLCBmY2hkaXIpOworICAgIHJldHVybiBwb3NpeF9maWxkZXNfZmQoZmQsIGZjaGRpcik7CiB9CiAjZW5kaWYgLyogSEFWRV9GQ0hESVIgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfY2htb2RfX2RvY19fLAotImNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLlxuXAotXG5cCi1wYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAotICBsaW5rIHBvaW50cyB0by5cblwKLUl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCi0gIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNobW9kCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GQ0hNT0QnKQorICAgICAgICBQYXRoIHRvIGJlIG1vZGlmaWVkLiAgTWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHIgb3IgYnl0ZXMuCisgICAgICAgIE9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgICAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICAgbW9kZTogaW50CisgICAgICAgIE9wZXJhdGluZy1zeXN0ZW0gbW9kZSBiaXRmaWVsZC4KKworICAgICoKKworICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nZmNobW9kYXQnKSA9IE5vbmUKKyAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQKKyAgICAgICAgZGlyZWN0b3J5LgorCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorICAgICAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLAorICAgICAgICBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICAgICAgICB0aGUgbGluayBwb2ludHMgdG8uCisKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4KKworSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXMKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDVlN2Y3M2IxYTg0M2JhMiBpbnB1dD03ZjE2MThlNWUxNWNjMTk2XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGU7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBEV09SRCBhdHRyOwpAQCAtMjk0MywzMyArMjc5NiwxNyBAQAogICAgIGludCBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9IDA7CiAjZW5kaWYKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2htb2QiOwotI2lmZGVmIEhBVkVfRkNITU9ECi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcDpjaG1vZCIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICZtb2RlLAotI2lmZGVmIEhBVkVfRkNITU9EQVQKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKLSNlbmRpZgotICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZiAhKGRlZmluZWQoSEFWRV9GQ0hNT0RBVCkgfHwgZGVmaW5lZChIQVZFX0xDSE1PRCkpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNobW9kIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgud2lkZSk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93KTsKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOwogICAgIGlmIChhdHRyID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICByZXN1bHQgPSAwOwogICAgIGVsc2UgewpAQCAtMjk3NywyNyArMjgxNCwyNiBAQAogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlLCBhdHRyKTsKKyAgICAgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSwgYXR0cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdywgYXR0cik7CisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93LCBhdHRyKTsKICAgICB9CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9GQ0hNT0QKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGguZmQsIG1vZGUpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGgtPmZkLCBtb2RlKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX0xDSE1PRAogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCi0gICAgICAgIHJlc3VsdCA9IGxjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IGxjaG1vZChwYXRoLT5uYXJyb3csIG1vZGUpOwogICAgIGVsc2UKICNlbmRpZgogI2lmZGVmIEhBVkVfRkNITU9EQVQKQEAgLTMwMTIsNyArMjg0OCw3IEBACiAgICAgICAgICAqIHN1cHBvcnQgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3M9RmFsc2UuICAoSG9wZWZ1bGx5LikKICAgICAgICAgICogVW50aWwgdGhlbiwgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgZXhjZXB0aW9uIHdlIHJhaXNlLgogICAgICAgICAgKi8KLSAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKICAgICAgICAgLyoKICAgICAgICAgICogQnV0IHdhaXQhICBXZSBjYW4ndCB0aHJvdyB0aGUgZXhjZXB0aW9uIHdpdGhvdXQgYWxsb3dpbmcgdGhyZWFkcywKQEAgLTMwMjUsNyArMjg2MSw3IEBACiAgICAgfQogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IGNobW9kKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpIHsKQEAgLTMwMzksMjcyICsyODc1LDI4OSBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKICNpZmRlZiBIQVZFX0ZDSE1PRAotUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaG1vZF9fZG9jX18sCi0iZmNobW9kKGZkLCBtb2RlKVxuXG5cCi1DaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlXG5cCi1kZXNjcmlwdG9yIGZkLiAgRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mY2htb2QKKworICAgIGZkOiBpbnQKKyAgICBtb2RlOiBpbnQKKworQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgZmlsZSBkZXNjcmlwdG9yIGZkLgorCitFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19mY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJlZTMxY2EyMjZkMWVkMzMgaW5wdXQ9OGFiMTE5NzVjYTAxZWU1Yl0qLwogewotICAgIGludCBmZCwgbW9kZSwgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6ZmNobW9kIiwgJmZkLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBmY2htb2QoZmQsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGludCByZXM7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gZmNobW9kKGZkLCBtb2RlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZDSE1PRCAqLwogCisKICNpZmRlZiBIQVZFX0xDSE1PRAotUHlEb2NfU1RSVkFSKHBvc2l4X2xjaG1vZF9fZG9jX18sCi0ibGNobW9kKHBhdGgsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4gSWYgcGF0aCBpcyBhIHN5bWxpbmssIHRoaXNcblwKLWFmZmVjdHMgdGhlIGxpbmsgaXRzZWxmIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuXG5cCi1FcXVpdmFsZW50IHRvIGNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sY2htb2QKKworICAgIHBhdGg6IHBhdGhfdAorICAgIG1vZGU6IGludAorCitDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLgorCitJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcyBhZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LgorRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjMGNjNDY1ODhkODllNDYgaW5wdXQ9OTBjNTY2M2M3NDY1ZDI0Zl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBpOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2htb2QiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmxjaG1vZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNobW9kKHBhdGgubmFycm93LCBpKTsKKyAgICByZXMgPSBsY2htb2QocGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0xDSE1PRCAqLwogCiAKICNpZmRlZiBIQVZFX0NIRkxBR1MKLVB5RG9jX1NUUlZBUihwb3NpeF9jaGZsYWdzX19kb2NfXywKLSJjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotU2V0IGZpbGUgZmxhZ3MuXG5cCi1cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAotICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKLWZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuXAotdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2hmbGFncworCisgICAgcGF0aDogcGF0aF90CisgICAgZmxhZ3M6IHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKQorICAgIGZvbGxvd19zeW1saW5rczogYm9vbD1UcnVlCisKK1NldCBmaWxlIGZsYWdzLgorCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uCitmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgaXQgaXMKK3VuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGZsYWdzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmYyZDZlNzM1MzRhOTViOSBpbnB1dD0wMzI3ZTI5ZmViODc2MjM2XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaGZsYWdzIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8JGk6Y2hmbGFncyIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZuZGVmIEhBVkVfTENIRkxBR1MKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hmbGFncyIsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0xDSEZMQUdTCiAgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgtPm5hcnJvdywgZmxhZ3MpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC0+bmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCiAKKwogI2lmZGVmIEhBVkVfTENIRkxBR1MKLVB5RG9jX1NUUlZBUihwb3NpeF9sY2hmbGFnc19fZG9jX18sCi0ibGNoZmxhZ3MocGF0aCwgZmxhZ3MpXG5cblwKLVNldCBmaWxlIGZsYWdzLlxuXAotVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCi1FcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sY2hmbGFncworCisgICAgcGF0aDogcGF0aF90CisgICAgZmxhZ3M6IHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKQorCitTZXQgZmlsZSBmbGFncy4KKworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCitFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sY2hmbGFnc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NzQxMzIyZmI5NDk2NjFiIGlucHV0PWY5ZjgyZWE4YjU4NWNhOWRdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2hmbGFncyI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6bGNoZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBsY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOworICAgIHJlcyA9IGxjaGZsYWdzKHBhdGgtPm5hcnJvdywgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0xDSEZMQUdTICovCiAKKwogI2lmZGVmIEhBVkVfQ0hST09UCi1QeURvY19TVFJWQVIocG9zaXhfY2hyb290X19kb2NfXywKLSJjaHJvb3QocGF0aClcblxuXAotQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jaHJvb3QKKyAgICBwYXRoOiBwYXRoX3QKKworQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nocm9vdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jaHJvb3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZkYmZhYmU3NGVjYWE5ZCBpbnB1dD0xNDgyMjk2NTY1MmMzZGMzXSovCiB7Ci0gICAgcmV0dXJuIHBvc2l4XzFzdHIoImNocm9vdCIsIGFyZ3MsICJPJjpjaHJvb3QiLCBjaHJvb3QpOworICAgIGludCByZXM7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IGNocm9vdChwYXRoLT5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DSFJPT1QgKi8KKwogCiAjaWZkZWYgSEFWRV9GU1lOQwotUHlEb2NfU1RSVkFSKHBvc2l4X2ZzeW5jX19kb2NfXywKLSJmc3luYyhmaWxkZXMpXG5cblwKLWZvcmNlIHdyaXRlIG9mIGZpbGUgd2l0aCBmaWxlZGVzY3JpcHRvciB0byBkaXNrLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZnN5bmMKKworICAgIGZkOiBmaWxkZXMKKworRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzeW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmRvYmopCitvc19mc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04M2EzNTA4NTEwNjRhZWE3IGlucHV0PTIxYzM2NDVjMDU2OTY3ZjJdKi8KIHsKLSAgICByZXR1cm4gcG9zaXhfZmlsZGVzKGZkb2JqLCBmc3luYyk7CisgICAgcmV0dXJuIHBvc2l4X2ZpbGRlc19mZChmZCwgZnN5bmMpOwogfQogI2VuZGlmIC8qIEhBVkVfRlNZTkMgKi8KIAorCiAjaWZkZWYgSEFWRV9TWU5DCi1QeURvY19TVFJWQVIocG9zaXhfc3luY19fZG9jX18sCi0ic3luYygpXG5cblwKLUZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5bmMKKworRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3N5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNTI0ZjY1NmMyMDFjNDAgaW5wdXQ9ODQ3NDlmZTVlOWI0MDRmZl0qLwogewogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBzeW5jKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU1lOQyAqLworCiAKICNpZmRlZiBIQVZFX0ZEQVRBU1lOQwotCiAjaWZkZWYgX19ocHV4CiBleHRlcm4gaW50IGZkYXRhc3luYyhpbnQpOyAvKiBPbiBIUC1VWCwgaW4gbGliYyBidXQgbm90IGluIHVuaXN0ZC5oICovCiAjZW5kaWYKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2ZkYXRhc3luY19fZG9jX18sCi0iZmRhdGFzeW5jKGZpbGRlcylcblxuXAotZm9yY2Ugd3JpdGUgb2YgZmlsZSB3aXRoIGZpbGVkZXNjcmlwdG9yIHRvIGRpc2suXG5cCi0gZG9lcyBub3QgZm9yY2UgdXBkYXRlIG9mIG1ldGFkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZmRhdGFzeW5jCisKKyAgICBmZDogZmlsZGVzCisKK0ZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2sgd2l0aG91dCBmb3JjaW5nIHVwZGF0ZSBvZiBtZXRhZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZkYXRhc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQorb3NfZmRhdGFzeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwZjA0YTNhZmY1MTViNzUgaW5wdXQ9YmM3NDc5MWVlNTRkZDI5MV0qLwogewotICAgIHJldHVybiBwb3NpeF9maWxkZXMoZmRvYmosIGZkYXRhc3luYyk7CisgICAgcmV0dXJuIHBvc2l4X2ZpbGRlc19mZChmZCwgZmRhdGFzeW5jKTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZEQVRBU1lOQyAqLwogCiAKICNpZmRlZiBIQVZFX0NIT1dOCi1QeURvY19TVFJWQVIocG9zaXhfY2hvd25fX2RvY19fLAotImNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLUNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCi0gIGxpbmsgcG9pbnRzIHRvLlxuXAotSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKLSAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1kaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2hvd24KKworICAgIHBhdGggOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GQ0hPV04nKQorICAgICAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LgorCisgICAgdWlkOiB1aWRfdAorCisgICAgZ2lkOiBnaWRfdAorCisgICAgKgorCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmY2hvd25hdCcpID0gTm9uZQorICAgICAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgICAgICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdAorICAgICAgICBkaXJlY3RvcnkuCisKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisgICAgICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssCisgICAgICAgIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgICAgICAgIHRoZSBsaW5rIHBvaW50cyB0by4KKworQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlCisgIGxpbmsgcG9pbnRzIHRvLgorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXMKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaG93bl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsCisgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBhNDU1OWYzOTRkYmQ5MSBpbnB1dD1hNjFjYzM1NTc0ODE0ZDVkXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgdWlkX3QgdWlkOwotICAgIGdpZF90IGdpZDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaG93biI7Ci0jaWZkZWYgSEFWRV9GQ0hPV04KLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJnwkTyZwOmNob3duIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLAotI2lmZGVmIEhBVkVfRkNIT1dOQVQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZiAhKGRlZmluZWQoSEFWRV9MQ0hPV04pIHx8IGRlZmluZWQoSEFWRV9GQ0hPV05BVCkpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgotICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAotICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNob3duIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLT5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG93biIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogI2lmZGVmIF9fQVBQTEVfXwogICAgIC8qCkBAIC0zMzE1LDEwMiArMzE2OCw5OCBAQAogICAgICAqLwogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGxjaG93biA9PSBOVUxMKSkgewogICAgICAgICBmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG93biIsIGZvbGxvd19zeW1saW5rcyk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9GQ0hPV04KLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzdWx0ID0gZmNob3duKHBhdGguZmQsIHVpZCwgZ2lkKTsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bihwYXRoLT5mZCwgdWlkLCBnaWQpOwogICAgIGVsc2UKICNlbmRpZgogI2lmZGVmIEhBVkVfTENIT1dOCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKLSAgICAgICAgcmVzdWx0ID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgICAgIHJlc3VsdCA9IGxjaG93bihwYXRoLT5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX0ZDSE9XTkFUCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmVzdWx0ID0gZmNob3duYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgdWlkLCBnaWQsCisgICAgICAgIHJlc3VsdCA9IGZjaG93bmF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCB1aWQsIGdpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaG93bihwYXRoLm5hcnJvdywgdWlkLCBnaWQpOworICAgICAgICByZXN1bHQgPSBjaG93bihwYXRoLT5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAKKwogI2lmZGVmIEhBVkVfRkNIT1dOCi1QeURvY19TVFJWQVIocG9zaXhfZmNob3duX19kb2NfXywKLSJmY2hvd24oZmQsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlIGRlc2NyaXB0b3JcblwKLWZkIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiAgRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZmNob3duCisKKyAgICBmZDogaW50CisgICAgdWlkOiB1aWRfdAorICAgIGdpZDogZ2lkX3QKKworQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvci4KKworRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZmNob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NTQ1YWJmOGY2MDg2ZDc2IGlucHV0PTNhZjU0NGJhMWIxM2EwZDddKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgdWlkX3QgdWlkOwotICAgIGdpZF90IGdpZDsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6ZmNob3duIiwgJmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZmNob3duKGZkLCB1aWQsIGdpZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gZmNob3duKGZkLCB1aWQsIGdpZCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9GQ0hPV04gKi8KIAorCiAjaWZkZWYgSEFWRV9MQ0hPV04KLVB5RG9jX1NUUlZBUihwb3NpeF9sY2hvd25fX2RvY19fLAotImxjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAotQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAotRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxjaG93bgorCisgICAgcGF0aCA6IHBhdGhfdAorICAgIHVpZDogdWlkX3QKKyAgICBnaWQ6IGdpZF90CisKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuCisKK1RoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xjaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiMGQyZGExNTc5YWMyNzUgaW5wdXQ9YjFjNjAxNGQ1NjNhNzE2MV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHVpZF90IHVpZDsKLSAgICBnaWRfdCBnaWQ7CiAgICAgaW50IHJlczsKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxjaG93biI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6bGNob3duIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgcmVzID0gbGNob3duKHBhdGgtPm5hcnJvdywgdWlkLCBnaWQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9MQ0hPV04gKi8KIApAQCAtMzQ4NywxNDggKzMzMzYsMTI1IEBACiAgICAgcmV0dXJuIG9iajsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGN3ZF9fZG9jX18sCi0iZ2V0Y3dkKCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGN3ZAorCitSZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRjd2RfdW5pY29kZShQeU9iamVjdCAqc2VsZikKK29zX2dldGN3ZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWZlM2E4YzAxMjE1MjVlYSBpbnB1dD1mMDY5MjExYmI3MGUzZDM5XSovCiB7CiAgICAgcmV0dXJuIHBvc2l4X2dldGN3ZCgwKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGN3ZGJfX2RvY19fLAotImdldGN3ZGIoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIGJ5dGVzIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGN3ZGIKKworUmV0dXJuIGEgYnl0ZXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGN3ZF9ieXRlcyhQeU9iamVjdCAqc2VsZikKK29zX2dldGN3ZGJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmY2U0MmVlNGIyYTI5NmEgaW5wdXQ9ZjZmNmEzNzhkYWQzZDljYl0qLwogewogICAgIHJldHVybiBwb3NpeF9nZXRjd2QoMSk7CiB9CiAKKwogI2lmICgoIWRlZmluZWQoSEFWRV9MSU5LKSkgJiYgZGVmaW5lZChNU19XSU5ET1dTKSkKICNkZWZpbmUgSEFWRV9MSU5LIDEKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSU5LCi1QeURvY19TVFJWQVIocG9zaXhfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1DcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLlxuXAotXG5cCi1JZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCi0gIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAotICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG5cCi0gIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuXAotc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcblwKLSAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKLSAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KKworb3MubGluaworCisgICAgc3JjIDogcGF0aF90CisgICAgZHN0IDogcGF0aF90CisgICAgKgorICAgIHNyY19kaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZHN0X2Rpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK0NyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuCisKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpYworICBsaW5rLCBsaW5rIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uCitzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91cgorICBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYQorICBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDdhN2U4OGY3YjM5MWI2IGlucHV0PWIwMDk1ZWJiY2JhYTdlMDRdKi8KIHsKLSAgICBwYXRoX3Qgc3JjLCBkc3Q7Ci0gICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBCT09MIHJlc3VsdDsKICNlbHNlCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKLSAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOwotICAgIHNyYy5mdW5jdGlvbl9uYW1lID0gImxpbmsiOwotICAgIGRzdC5mdW5jdGlvbl9uYW1lID0gImxpbmsiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8TyZPJnA6bGluayIsIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAotICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsCi0gICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZm5kZWYgSEFWRV9MSU5LQVQKICAgICBpZiAoKHNyY19kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8IChkc3RfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSkgewogICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcigibGluayIsICJzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkIik7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC53aWRlLCBzcmMud2lkZSwgTlVMTCk7CisgICAgaWYgKHNyYy0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtBKGRzdC0+bmFycm93LCBzcmMtPm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogI2Vsc2UKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9MSU5LQVQKICAgICBpZiAoKHNyY19kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CiAgICAgICAgIChkc3RfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAogICAgICAgICAoIWZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJlc3VsdCA9IGxpbmthdChzcmNfZGlyX2ZkLCBzcmMubmFycm93LAotICAgICAgICAgICAgZHN0X2Rpcl9mZCwgZHN0Lm5hcnJvdywKKyAgICAgICAgcmVzdWx0ID0gbGlua2F0KHNyY19kaXJfZmQsIHNyYy0+bmFycm93LAorICAgICAgICAgICAgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3csCiAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyBBVF9TWU1MSU5LX0ZPTExPVyA6IDApOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKICNlbmRpZgogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZzcmMpOwotICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmCiAKIAotCi1QeURvY19TVFJWQVIocG9zaXhfbGlzdGRpcl9fZG9jX18sCi0ibGlzdGRpcihwYXRoPScuJykgLT4gbGlzdF9vZl9maWxlbmFtZXNcblxuXAotUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKLVRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWxcblwKLWVudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LlxuXAotXG5cCi1wYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG5cCi0gIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlc1xuXAotICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1xuXAotICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKIHN0YXRpYyBQeU9iamVjdCAqCiBfbGlzdGRpcl93aW5kb3dzX25vX29wZW5kaXIocGF0aF90ICpwYXRoLCBQeU9iamVjdCAqbGlzdCkKIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICp2OwogICAgIEhBTkRMRSBoRmluZEZpbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKICAgICBCT09MIHJlc3VsdDsKQEAgLTM4ODcsMTIzICszNzEzLDExNyBAQAogfSAgLyogZW5kIG9mIF9wb3NpeF9saXN0ZGlyICovCiAjZW5kaWYgIC8qIHdoaWNoIE9TICovCiAKKworLypbY2xpbmljIGlucHV0XQorb3MubGlzdGRpcgorCisgICAgcGF0aCA6IHBhdGhfdChudWxsYWJsZT1UcnVlLCBhbGxvd19mZD0nUEFUSF9IQVZFX0ZET1BFTkRJUicpID0gTm9uZQorCitSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LgorCitwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcworICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLgorSWYgcGF0aCBpcyBOb25lLCB1c2VzIHRoZSBwYXRoPScuJy4KK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcjtcCisgIHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4KKworVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAorZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCisKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGlzdGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0ZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmYmU2N2MxZjc4MGM4YjcgaW5wdXQ9MDllMzAwNDE2ZTNjZDcyOV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxpc3RkaXIiOwotICAgIHBhdGgubnVsbGFibGUgPSAxOwotI2lmZGVmIEhBVkVfRkRPUEVORElSCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgcGF0aC5mZCA9IC0xOwotI2VuZGlmCi0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6bGlzdGRpciIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCi0gICAgcmV0dXJuX3ZhbHVlID0gX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKCZwYXRoLCBsaXN0KTsKKyAgICByZXR1cm4gX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKHBhdGgsIE5VTEwpOwogI2Vsc2UKLSAgICByZXR1cm5fdmFsdWUgPSBfcG9zaXhfbGlzdGRpcigmcGF0aCwgbGlzdCk7CisgICAgcmV0dXJuIF9wb3NpeF9saXN0ZGlyKHBhdGgsIE5VTEwpOwogI2VuZGlmCi0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAjaWZkZWYgTVNfV0lORE9XUwogLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGFic3BhdGggb24gd2luMzIgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjb25zdCBjaGFyICpwYXRoOwotICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIXTsKLSAgICBjaGFyICp0ZW1wOwotICAgIFB5T2JqZWN0ICpwbzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXRmdWxscGF0aG5hbWUKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0ZnVsbHBhdGhuYW1lIiwgJnBvKSkKKyAgICBwYXRoOiBwYXRoX3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXRmdWxscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjkwYjFmMTAzYjA4NzczZiBpbnB1dD0zMzJlZDUzN2MyOWQwYTNlXSovCit7CisgICAgaWYgKCFwYXRoLT5uYXJyb3cpCiAgICAgewotICAgICAgICB3Y2hhcl90ICp3cGF0aDsKICAgICAgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKICAgICAgICAgd2NoYXJfdCAqd3RlbXA7CiAgICAgICAgIERXT1JEIHJlc3VsdDsKICAgICAgICAgUHlPYmplY3QgKnY7CiAKLSAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKLSAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwKKyAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwogICAgICAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7CiAgICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7CisgICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBvKTsKKyAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZVciLCBwYXRoLT5vYmplY3QpOwogICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKICAgICAgICAgICAgIFB5TWVtX0ZyZWUod291dGJ1ZnApOwogICAgICAgICByZXR1cm4gdjsKICAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIXTsKKyAgICAgICAgY2hhciAqdGVtcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgInk6X2dldGZ1bGxwYXRobmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgewotICAgICAgICB3aW4zMl9lcnJvcigiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLT5uYXJyb3csIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgeworICAgICAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoLT5vYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyhvdXRidWYpOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKSkpIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGUob3V0YnVmLCBzdHJsZW4ob3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywgTlVMTCk7Ci0gICAgfQotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcob3V0YnVmKTsKLX0gLyogZW5kIG9mIHBvc2l4X19nZXRmdWxscGF0aG5hbWUgKi8KK30KIAogCisvKltjbGluaWMgaW5wdXRdCitvcy5fZ2V0ZmluYWxwYXRobmFtZQogCi0vKiBBIGhlbHBlciBmdW5jdGlvbiBmb3Igc2FtZXBhdGggb24gd2luZG93cyAqLworICAgIHBhdGg6IHVuaWNvZGUKKyAgICAvCisKK0EgaGVscGVyIGZ1bmN0aW9uIGZvciBzYW1lcGF0aCBvbiB3aW5kb3dzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2dldGZpbmFscGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmU4MWE1ZjUxYTM0YmNmIGlucHV0PTcxZDVlODkzMzQ4OTFiZjRdKi8KIHsKICAgICBIQU5ETEUgaEZpbGU7CiAgICAgaW50IGJ1Zl9zaXplOwogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGludCByZXN1bHRfbGVuZ3RoOwotICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcG8pKQorICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewotICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgcmV0dXJuIGEKLSAgICAgICAgICAgTm90SW1wbGVtZW50ZWRFcnJvci4gKi8KLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKTsKLSAgICB9CiAKICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAotICAgICAgICBwYXRoLAorICAgICAgICBwYXRoX3djaGFyLAogICAgICAgICAwLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwogICAgICAgICAwLCAvKiBzaGFyZSBtb2RlICovCiAgICAgICAgIE5VTEwsIC8qIHNlY3VyaXR5IGF0dHJpYnV0ZXMgKi8KQEAgLTQwMTMsODkgKzM4MzMsODQgQEAKICAgICAgICAgTlVMTCk7CiAKICAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ3JlYXRlRmlsZVciLCBwbyk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNyZWF0ZUZpbGVXIiwgcGF0aCk7CiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUKICAgICAgICB0YXJnZXQgcGF0aCBuYW1lLiAqLwotICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOworICAgIGJ1Zl9zaXplID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOwogCiAgICAgaWYoIWJ1Zl9zaXplKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwbyk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSIsIHBhdGgpOwogCiAgICAgdGFyZ2V0X3BhdGggPSBQeU1lbV9OZXcod2NoYXJfdCwgYnVmX3NpemUrMSk7CiAgICAgaWYoIXRhcmdldF9wYXRoKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAotICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCB0YXJnZXRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKKyAgICByZXN1bHRfbGVuZ3RoID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgdGFyZ2V0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmX3NpemUsIFZPTFVNRV9OQU1FX0RPUyk7CiAgICAgaWYoIXJlc3VsdF9sZW5ndGgpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBvKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaEZpbGUpKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDbG9zZUhhbmRsZSIsIHBvKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ2xvc2VIYW5kbGUiLCBwYXRoKTsKIAogICAgIHRhcmdldF9wYXRoW3Jlc3VsdF9sZW5ndGhdID0gMDsKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwotCi19IC8qIGVuZCBvZiBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSAqLworfQogCiBQeURvY19TVFJWQVIocG9zaXhfX2lzZGlyX19kb2NfXywKICJSZXR1cm4gdHJ1ZSBpZiB0aGUgcGF0aG5hbWUgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4iKTsKIAorLypbY2xpbmljIGlucHV0XQorb3MuX2lzZGlyCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19pc2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19faXNkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjE3YjJkNGUxOTk0YjBmZiBpbnB1dD1lNzk0ZjEyZmFhYjYyYTJhXSovCiB7Ci0gICAgY29uc3QgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqcG87CiAgICAgRFdPUkQgYXR0cmlidXRlczsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfaXNkaXIiLCAmcG8pKSB7Ci0gICAgICAgIHdjaGFyX3QgKndwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7Ci0gICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFwYXRoLT5uYXJyb3cpCisgICAgICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CisgICAgZWxzZQorICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CiAKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cGF0aCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQotICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgICAgICBnb3RvIGNoZWNrOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieTpfaXNkaXIiLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgpOwogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAKLWNoZWNrOgogICAgIGlmIChhdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICBlbHNlCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX18sCi0iUmV0dXJuIHZvbHVtZSBtb3VudCBwb2ludCBvZiB0aGUgc3BlY2lmaWVkIHBhdGguIik7CiAKLS8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBpc21vdW50IG9uIHdpbmRvd3MgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXR2b2x1bWVwYXRobmFtZQorCisgICAgcGF0aDogdW5pY29kZQorCitBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OWEwYmE3MjlmOTU2ZGJlIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKLSAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7Ci0gICAgd2NoYXJfdCAqcGF0aCwgKm1vdW50cGF0aD1OVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgd2NoYXJfdCAqcGF0aF93Y2hhciwgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXR2b2x1bWVwYXRobmFtZSIsICZwbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShwbywgJmJ1Zmxlbik7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICBwYXRoX3djaGFyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUocGF0aCwgJmJ1Zmxlbik7CisgICAgaWYgKHBhdGhfd2NoYXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYnVmbGVuICs9IDE7CiAKQEAgLTQxMTIsMTIgKzM5MjcsMTIgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gR2V0Vm9sdW1lUGF0aE5hbWVXKHBhdGgsIG1vdW50cGF0aCwKKyAgICByZXQgPSBHZXRWb2x1bWVQYXRoTmFtZVcocGF0aF93Y2hhciwgbW91bnRwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKGJ1Zmxlbiwgc2l6ZV90LCBEV09SRCkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJldCkgewotICAgICAgICByZXN1bHQgPSB3aW4zMl9lcnJvcl9vYmplY3QoIl9nZXR2b2x1bWVwYXRobmFtZSIsIHBvKTsKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJfZ2V0dm9sdW1lcGF0aG5hbWUiLCBwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG1vdW50cGF0aCwgd2NzbGVuKG1vdW50cGF0aCkpOwpAQCAtNDEyNiw3OCArMzk0MSw2NiBAQAogICAgIFB5TWVtX0ZyZWUobW91bnRwYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotLyogZW5kIG9mIHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZSAqLwogCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfbWtkaXJfX2RvY19fLAotIm1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCi1DcmVhdGUgYSBkaXJlY3RvcnkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG5cCi1cblwKLVRoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MubWtkaXIKKworICAgIHBhdGggOiBwYXRoX3QKKworICAgIG1vZGU6IGludCA9IDBvNzc3CisKKyAgICAqCisKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J21rZGlyYXQnKSA9IE5vbmUKKworIyAibWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKKworQ3JlYXRlIGEgZGlyZWN0b3J5LgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJmMWY3Mzg4NzNlZjJjNSBpbnB1dD1lOTY1ZjY4Mzc3ZTliMWNlXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGUgPSAwNzc3OwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCByZXN1bHQ7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gIm1rZGlyIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCi0jaWZkZWYgSEFWRV9NS0RJUkFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgud2lkZSwgTlVMTCk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeVcocGF0aC0+d2lkZSwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgubmFycm93LCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLT5uYXJyb3csIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAjZWxzZQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZiBIQVZFX01LRElSQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgtPm5hcnJvdyk7CiAjZWxzZQotICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICNlbmRpZgotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIApAQCAtNDIwOCwxNyArNDAxMSwyMCBAQAogCiAKICNpZmRlZiBIQVZFX05JQ0UKLVB5RG9jX1NUUlZBUihwb3NpeF9uaWNlX19kb2NfXywKLSJuaWNlKGluYykgLT4gbmV3X3ByaW9yaXR5XG5cblwKLURlY3JlYXNlIHRoZSBwcmlvcml0eSBvZiBwcm9jZXNzIGJ5IGluYyBhbmQgcmV0dXJuIHRoZSBuZXcgcHJpb3JpdHkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5uaWNlCisKKyAgICBpbmNyZW1lbnQ6IGludAorICAgIC8KKworQWRkIGluY3JlbWVudCB0byB0aGUgcHJpb3JpdHkgb2YgcHJvY2VzcyBhbmQgcmV0dXJuIHRoZSBuZXcgcHJpb3JpdHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9uaWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX25pY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaW5jcmVtZW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4NzA0MThhM2ZjMDdiNTEgaW5wdXQ9ODY0YmUyZDQwMmEyMWRhMl0qLwogewotICAgIGludCBpbmNyZW1lbnQsIHZhbHVlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW50IHZhbHVlOwogCiAgICAgLyogVGhlcmUgYXJlIHR3byBmbGF2b3VycyBvZiAnbmljZSc6IG9uZSB0aGF0IHJldHVybnMgdGhlIG5ldwogICAgICAgIHByaW9yaXR5IChhcyByZXF1aXJlZCBieSBhbG1vc3QgYWxsIHN0YW5kYXJkcyBvdXQgdGhlcmUpIGFuZCB0aGUKQEAgLTQyNDUsMTcgKzQwNTEsMjEgQEAKIAogCiAjaWZkZWYgSEFWRV9HRVRQUklPUklUWQotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHByaW9yaXR5X19kb2NfXywKLSJnZXRwcmlvcml0eSh3aGljaCwgd2hvKSAtPiBjdXJyZW50X3ByaW9yaXR5XG5cblwKLUdldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRwcmlvcml0eQorCisgICAgd2hpY2g6IGludAorICAgIHdobzogaW50CisKK1JldHVybiBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19nZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzU5OTM3YWE1YjY3ZWQ2IGlucHV0PTliZTYxNWQ0MGUyNTQ0ZWZdKi8KIHsKLSAgICBpbnQgd2hpY2gsIHdobywgcmV0dmFsOworICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJndoaWNoLCAmd2hvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZXJybm8gPSAwOwogICAgIHJldHZhbCA9IGdldHByaW9yaXR5KHdoaWNoLCB3aG8pOwogICAgIGlmIChlcnJubyAhPSAwKQpAQCAtNDI2NiwxOCArNDA3NiwyMyBAQAogCiAKICNpZmRlZiBIQVZFX1NFVFBSSU9SSVRZCi1QeURvY19TVFJWQVIocG9zaXhfc2V0cHJpb3JpdHlfX2RvY19fLAotInNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pIC0+IE5vbmVcblxuXAotU2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHByaW9yaXR5CisKKyAgICB3aGljaDogaW50CisgICAgd2hvOiBpbnQKKyAgICBwcmlvcml0eTogaW50CisKK1NldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobywgaW50IHByaW9yaXR5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0OTdkMzMwMTU0N2U3ZDUgaW5wdXQ9NzEwY2NiZjY1YjlkYzUxM10qLwogewotICAgIGludCB3aGljaCwgd2hvLCBwcmlvLCByZXR2YWw7CisgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpIiwgJndoaWNoLCAmd2hvLCAmcHJpbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pOworICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW9yaXR5KTsKICAgICBpZiAocmV0dmFsID09IC0xKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTQyODYsMTcgKzQxMDEsMTAgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotaW50ZXJuYWxfcmVuYW1lKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLCBpbnQgaXNfcmVwbGFjZSkKK2ludGVybmFsX3JlbmFtZShwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLCBpbnQgZHN0X2Rpcl9mZCwgaW50IGlzX3JlcGxhY2UpCiB7CiAgICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKLSAgICBwYXRoX3Qgc3JjOwotICAgIHBhdGhfdCBkc3Q7Ci0gICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkaXJfZmRfc3BlY2lmaWVkOwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNoYXIgZm9ybWF0WzI0XTsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBCT09MIHJlc3VsdDsKQEAgLTQzMDUsMjEwICs0MTEzLDIwMCBAQAogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKIAotICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7Ci0gICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKLSAgICBzcmMuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWU7Ci0gICAgZHN0LmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lOwotICAgIHN0cmNweShmb3JtYXQsICJPJk8mfCRPJk8mOiIpOwotICAgIHN0cmNhdChmb3JtYXQsIGZ1bmN0aW9uX25hbWUpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgZm9ybWF0LCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGRpcl9mZF9zcGVjaWZpZWQgPSAoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpOwogI2lmbmRlZiBIQVZFX1JFTkFNRUFUCiAgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpIHsKICAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICgoc3JjLm5hcnJvdyAmJiBkc3Qud2lkZSkgfHwgKHNyYy53aWRlICYmIGRzdC5uYXJyb3cpKSB7CisgICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiLCBmdW5jdGlvbl9uYW1lKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLndpZGUsIGRzdC53aWRlLCBmbGFncyk7CisgICAgaWYgKHNyYy0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLT53aWRlLCBkc3QtPndpZGUsIGZsYWdzKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhBKHNyYy5uYXJyb3csIGRzdC5uYXJyb3csIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogCiAjZWxzZQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX1JFTkFNRUFUCiAgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpCi0gICAgICAgIHJlc3VsdCA9IHJlbmFtZWF0KHNyY19kaXJfZmQsIHNyYy5uYXJyb3csIGRzdF9kaXJfZmQsIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZW5kaWYKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnNyYyk7Ci0gICAgcGF0aF9jbGVhbnVwKCZkc3QpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAotInJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuXAotXG5cCi1JZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCi0gIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAotICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLXNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlbmFtZQorCisgICAgc3JjIDogcGF0aF90CisgICAgZHN0IDogcGF0aF90CisgICAgKgorICAgIHNyY19kaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZHN0X2Rpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKworUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuCisKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5Lgorc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDgwMzNiYjJlYzI3ZmI1ZiBpbnB1dD1mYWE2MWM4NDc5MTJjODUwXSovCiB7Ci0gICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShhcmdzLCBrd2FyZ3MsIDApOworICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoc3JjLCBkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIDApOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfcmVwbGFjZV9fZG9jX18sCi0icmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uXG5cCi1cblwKLUlmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKLSAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCi0gIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MucmVwbGFjZSA9IG9zLnJlbmFtZQorCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLgorCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KQorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZXBsYWNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LAorICAgICAgICAgICAgICAgIGludCBzcmNfZGlyX2ZkLCBpbnQgZHN0X2Rpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzFkMDEyZWVkOGQzYjhiIGlucHV0PTI1NTE1ZGZiMTA3Yzg0MjFdKi8KIHsKLSAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMSk7CisgICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShzcmMsIGRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgMSk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9ybWRpcl9fZG9jX18sCi0icm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLVJlbW92ZSBhIGRpcmVjdG9yeS5cblwKLVxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLWRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Mucm1kaXIKKworICAgIHBhdGg6IHBhdGhfdAorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0ndW5saW5rYXQnKSA9IE5vbmUKKworUmVtb3ZlIGEgZGlyZWN0b3J5LgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfcm1kaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2FiYWRlYzgwZDVhNzdjNyBpbnB1dD0zOGM4YjM3NWNhMzRhN2UyXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInJtZGlyIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX1VOTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgud2lkZSk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLT5uYXJyb3cpOwogICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCBBVF9SRU1PVkVESVIpOworICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgQVRfUkVNT1ZFRElSKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gcm1kaXIocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBybWRpcihwYXRoLT5uYXJyb3cpOwogI2VuZGlmCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIAogI2lmZGVmIEhBVkVfU1lTVEVNCi1QeURvY19TVFJWQVIocG9zaXhfc3lzdGVtX19kb2NfXywKLSJzeXN0ZW0oY29tbWFuZCkgLT4gZXhpdF9zdGF0dXNcblxuXAotRXhlY3V0ZSB0aGUgY29tbWFuZCAoYSBzdHJpbmcpIGluIGEgc3Vic2hlbGwuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeXN0ZW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGxvbmcgc3RzOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB3Y2hhcl90ICpjb21tYW5kOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidTpzeXN0ZW0iLCAmY29tbWFuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorb3Muc3lzdGVtIC0+IGxvbmcKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdHMgPSBfd3N5c3RlbShjb21tYW5kKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotI2Vsc2UKLSAgICBQeU9iamVjdCAqY29tbWFuZF9vYmo7Ci0gICAgY2hhciAqY29tbWFuZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnN5c3RlbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmRfb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY29tbWFuZDogUHlfVU5JQ09ERQogCi0gICAgY29tbWFuZCA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZF9vYmopOworRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tbWFuZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YzNiZDVhYmNkOWMyOWU3IGlucHV0PTMwM2Y1Y2U5N2RmNjA2YjBdKi8KK3sKKyAgICBsb25nIHJlc3VsdDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3RzID0gc3lzdGVtKGNvbW1hbmQpOworICAgIHJlc3VsdCA9IF93c3lzdGVtKGNvbW1hbmQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKGNvbW1hbmRfb2JqKTsKLSNlbmRpZgotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc3RzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2Vsc2UgLyogTVNfV0lORE9XUyAqLworLypbY2xpbmljIGlucHV0XQorb3Muc3lzdGVtIC0+IGxvbmcKKworICAgIGNvbW1hbmQ6IEZTQ29udmVydGVyCisKK0V4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX3N5c3RlbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjb21tYW5kKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgwMGY3NzVlMTBiN2JlNTUgaW5wdXQ9ODZhNTg1NTRiYTYwOTRhZl0qLworeworICAgIGxvbmcgcmVzdWx0OworICAgIGNoYXIgKmJ5dGVzID0gUHlCeXRlc19Bc1N0cmluZyhjb21tYW5kKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gc3lzdGVtKGJ5dGVzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NZU1RFTSAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91bWFza19fZG9jX18sCi0idW1hc2sobmV3X21hc2spIC0+IG9sZF9tYXNrXG5cblwKLVNldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudW1hc2sKKworICAgIG1hc2s6IGludAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IG51bWVyaWMgdW1hc2sgYW5kIHJldHVybiB0aGUgcHJldmlvdXMgdW1hc2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bWFzayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc191bWFza19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtYXNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllMWZlM2M5ZjE0ZDZhMDUgaW5wdXQ9YWI2YmZkOWIyNGQ4YTdlOF0qLwogewotICAgIGludCBpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp1bWFzayIsICZpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaSA9IChpbnQpdW1hc2soaSk7CisgICAgaW50IGkgPSAoaW50KXVtYXNrKG1hc2spOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpKTsKQEAgLTQ1MzcsNyArNDMzNSwxMCBAQAogICAgICAgICAgICAgZmluZF9kYXRhX2hhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKGxwRmlsZU5hbWUsICZmaW5kX2RhdGEpOwogCiAgICAgICAgICAgICBpZihmaW5kX2RhdGFfaGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgICAgaXNfbGluayA9IGZpbmRfZGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOworICAgICAgICAgICAgICAgIC8qIElPX1JFUEFSU0VfVEFHX1NZTUxJTksgaWYgaXQgaXMgYSBzeW1saW5rIGFuZAorICAgICAgICAgICAgICAgICAgIElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UIGlmIGl0IGlzIGEganVuY3Rpb24gcG9pbnQuICovCisgICAgICAgICAgICAgICAgaXNfbGluayA9IGZpbmRfZGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfZGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVDsKICAgICAgICAgICAgICAgICBGaW5kQ2xvc2UoZmluZF9kYXRhX2hhbmRsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NTAsODEgKzQzNTEsNzMgQEAKIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91bmxpbmtfX2RvY19fLAotInVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUoKSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmVfX2RvY19fLAotInJlbW92ZShwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyB1bmxpbmsoKSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy51bmxpbmsKKworICAgIHBhdGg6IHBhdGhfdAorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0ndW5saW5rYXQnKT1Ob25lCisKK1JlbW92ZSBhIGZpbGUgKHNhbWUgYXMgcmVtb3ZlKCkpLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bmxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdW5saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3NGFmZDVjZDA5YjIzN2UgaW5wdXQ9ZDdiY2RlMmIxYjJhMjU1Ml0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJ1bmxpbmsiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX1VOTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC53aWRlKTsKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IERlbGV0ZUZpbGVBKHBhdGgtPm5hcnJvdyk7CiAgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KICNlbHNlCiAjaWZkZWYgSEFWRV9VTkxJTktBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIDApOworICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgMCk7CiAgICAgZWxzZQogI2VuZGlmIC8qIEhBVkVfVU5MSU5LQVQgKi8KLSAgICAgICAgcmVzdWx0ID0gdW5saW5rKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rKHBhdGgtPm5hcnJvdyk7CiAjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91bmFtZV9fZG9jX18sCi0idW5hbWUoKSAtPiB1bmFtZV9yZXN1bHRcblxuXAotUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuXAotVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuXAotICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5yZW1vdmUgPSBvcy51bmxpbmsKKworUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyB1bmxpbmsoKSkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBkNTE0OWU2NDgzMmI5ZSBpbnB1dD1lMDVjNWFiNTVjZDMwOTgzXSovCit7CisgICAgcmV0dXJuIG9zX3VubGlua19pbXBsKG1vZHVsZSwgcGF0aCwgZGlyX2ZkKTsKK30KKwogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB1bmFtZV9yZXN1bHRfZmllbGRzW10gPSB7CiAgICAgeyJzeXNuYW1lIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gbmFtZSJ9LApAQCAtNDY1NCw4ICs0NDQ3LDE5IEBACiAKIAogI2lmZGVmIEhBVkVfVU5BTUUKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVuYW1lCisKK1JldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4KKworVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfdW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAxZTE0MjFiNzU3ZTc1M2YgaW5wdXQ9ZTY4YmQyNDZkYjMwNDNlZF0qLwogewogICAgIHN0cnVjdCB1dHNuYW1lIHU7CiAgICAgaW50IHJlczsKQEAgLTQ2OTQsMzEgKzQ0OTgsNiBAQAogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfdXRpbWVfX2RvY19fLAotInV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICpbLCBuc10sIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblwKLVNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKLVxuXAotSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcblwKLSAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cblwKLUlmIG5zIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZV9ucywgbXRpbWVfbnMpO1xuXAotICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHNcblwKLSAgICBzaW5jZSB0aGUgZXBvY2guXG5cCi1JZiB0aW1lcyBpcyBOb25lIGFuZCBucyBpcyB1bnNwZWNpZmllZCwgdXRpbWUgdXNlcyB0aGUgY3VycmVudCB0aW1lLlxuXAotU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIHV0aW1lIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAotICBsaW5rIHBvaW50cyB0by5cblwKLUl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoXG5cCi0gIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgICAgbm93OwpAQCAtNDgwMiw2ICs0NTgxLDkgQEAKICNlbmRpZgogfQogCisgICAgI2RlZmluZSBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKICNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0ZVVElNRVMpIHx8IGRlZmluZWQoSEFWRV9GVVRJTUVOUykKQEAgLTQ4MTgsNiArNDYwMCw5IEBACiAjZW5kaWYKIH0KIAorICAgICNkZWZpbmUgUEFUSF9VVElNRV9IQVZFX0ZEIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX1VUSU1FX0hBVkVfRkQgMAogI2VuZGlmCiAKIApAQCAtNDg4MywxOSArNDY2OCw1MCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKworLypbY2xpbmljIGlucHV0XQorb3MudXRpbWUKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9VVElNRV9IQVZFX0ZEJykKKyAgICB0aW1lczogb2JqZWN0ID0gTlVMTAorICAgICoKKyAgICBuczogb2JqZWN0ID0gTlVMTAorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdmdXRpbWVuc2F0JykgPSBOb25lCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sPVRydWUKKworIyAidXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXAorCitTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZSBvZiBwYXRoLgorCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCisKK0lmIHRpbWVzIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lLCBtdGltZSk7CisgICAgYXRpbWUgYW5kIG10aW1lIHNob3VsZCBiZSBleHByZXNzZWQgYXMgZmxvYXQgc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guCitJZiBucyBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTsKKyAgICBhdGltZV9ucyBhbmQgbXRpbWVfbnMgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBpbnRlZ2VyIG5hbm9zZWNvbmRzCisgICAgc2luY2UgdGhlIGVwb2NoLgorSWYgdGltZXMgaXMgTm9uZSBhbmQgbnMgaXMgdW5zcGVjaWZpZWQsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS4KK1NwZWNpZnlpbmcgdHVwbGVzIGZvciBib3RoIHRpbWVzIGFuZCBucyBpcyBhbiBlcnJvci4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKKyAgbGluayBwb2ludHMgdG8uCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aAorICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191dGltZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLAorICAgICAgICAgICAgICBQeU9iamVjdCAqbnMsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmMzQzNGU1NjBiYTJmMCBpbnB1dD0wODFjZGM1NGNhNjg1Mzg1XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKnRpbWVzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbnMgPSBOVUxMOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKLSAgICBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07Ci0KLSAgICB1dGltZV90IHV0aW1lOwotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIEhBTkRMRSBoRmlsZTsKICAgICBGSUxFVElNRSBhdGltZSwgbXRpbWU7CkBAIC00OTA0LDI1ICs0NzIwLDkgQEAKICNlbmRpZgogCiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdXRpbWVfdCB1dGltZTsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAidXRpbWUiOwogICAgIG1lbXNldCgmdXRpbWUsIDAsIHNpemVvZih1dGltZV90KSk7Ci0jaWYgZGVmaW5lZChIQVZFX0ZVVElNRVMpIHx8IGRlZmluZWQoSEFWRV9GVVRJTUVOUykKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgICAgICJPJnxPJE9PJnA6dXRpbWUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICZ0aW1lcywgJm5zLAotI2lmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAotI2Vsc2UKLSAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKLSNlbmRpZgotICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcwotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodGltZXMgJiYgKHRpbWVzICE9IFB5X05vbmUpICYmIG5zKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDk0Miw5ICs0NzQyLDkgQEAKICAgICAgICAgfQogICAgICAgICB1dGltZS5ub3cgPSAwOwogICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhX3NlYywgJmFfbnNlYywgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhX3NlYywgJmFfbnNlYywgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEgfHwKICAgICAgICAgICAgIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbV9zZWMsICZtX25zZWMsIF9QeVRpbWVfUk9VTkRfRE9XTikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbV9zZWMsICZtX25zZWMsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgdXRpbWUuYXRpbWVfcyA9IGFfc2VjOwpAQCAtNDk3Niw5ICs0Nzc2LDkgQEAKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCiAKLSAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgJnBhdGgsIGRpcl9mZCkgfHwKLSAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKLSAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJ1dGltZSIsIHBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC0+ZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgidXRpbWUiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogCiAjaWYgIWRlZmluZWQoSEFWRV9VVElNRU5TQVQpCkBAIC00OTkyLDE3ICs0NzkyLDE3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgtPm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCkBAIC01MDExLDggKzQ4MTEsOCBAQAogICAgICAgICBhdGltZSA9IG10aW1lOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5tdGltZV9zLCB1dGltZS5tdGltZV9ucywgJm10aW1lKTsKKyAgICAgICAgX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodXRpbWUuYXRpbWVfcywgdXRpbWUuYXRpbWVfbnMsICZhdGltZSk7CisgICAgICAgIF9QeV90aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOwogICAgIH0KICAgICBpZiAoIVNldEZpbGVUaW1lKGhGaWxlLCBOVUxMLCAmYXRpbWUsICZtdGltZSkpIHsKICAgICAgICAgLyogQXZvaWQgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGVycm9yIGhlcmUsCkBAIC01MDI3LDIzICs0ODI3LDIzIEBACiAKICNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKLSAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHV0aW1lX25vZm9sbG93X3N5bWxpbmtzKCZ1dGltZSwgcGF0aC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmVzdWx0ID0gdXRpbWVfZGlyX2ZkKCZ1dGltZSwgZGlyX2ZkLCBwYXRoLm5hcnJvdywgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfZGlyX2ZkKCZ1dGltZSwgZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZvbGxvd19zeW1saW5rcyk7CiAgICAgZWxzZQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKQotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGguZmQpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfZmQoJnV0aW1lLCBwYXRoLT5mZCk7CiAgICAgZWxzZQogI2VuZGlmCiAKLSAgICByZXN1bHQgPSB1dGltZV9kZWZhdWx0KCZ1dGltZSwgcGF0aC5uYXJyb3cpOworICAgIHJlc3VsdCA9IHV0aW1lX2RlZmF1bHQoJnV0aW1lLCBwYXRoLT5uYXJyb3cpOwogCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtNTA1OSw3ICs0ODU5LDYgQEAKICAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogCiBleGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChoRmlsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwpAQCAtNTA2OSwxNyArNDg2OCwyMCBAQAogCiAvKiBQcm9jZXNzIG9wZXJhdGlvbnMgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X19leGl0X19kb2NfXywKLSJfZXhpdChzdGF0dXMpXG5cblwKLUV4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuX2V4aXQKKworICAgIHN0YXR1czogaW50CisKK0V4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19leGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19leGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzJhM2NiYWY2OGYzNjIxIGlucHV0PTVlNmQ1NzU1NmIwYzRhNjJdKi8KIHsKLSAgICBpbnQgc3RzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpfZXhpdCIsICZzdHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBfZXhpdChzdHMpOworICAgIF9leGl0KHN0YXR1cyk7CiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKQEAgLTUyMTcsOTYgKzUwMTksODMgQEAKIH0KICNlbmRpZgogCisKICNpZmRlZiBIQVZFX0VYRUNWCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAotImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmV4ZWN2CisKKyAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIC8KKworRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19leGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MjIxZjA4MTQzMTQ2ZmZmIGlucHV0PTk2MDQxNTU5OTI1ZTUyMjldKi8KIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICpwYXRoX2NoYXI7CiAgICAgY2hhciAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOwogICAgIGlmIChhcmdjIDwgMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7CisgICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZlX19kb2NfXywKLSJleGVjdmUocGF0aCwgYXJncywgZW52KVxuXG5cCi1FeGVjdXRlIGEgcGF0aCB3aXRoIGFyZ3VtZW50cyBhbmQgZW52aXJvbm1lbnQsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLSAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAotICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2YgYXJndW1lbnRzXG5cCi0gICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzXG5cCi1cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCB5b3UgbWF5IHNwZWNpZnkgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yIHBhdGg7XG5cCi0gIGV4ZWN2ZSB3aWxsIGV4ZWN1dGUgdGhlIHByb2dyYW0gdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBvcGVuIHRvLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5leGVjdmUKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZFWEVDVkUnKQorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIGVudjogb2JqZWN0CisgICAgICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuCisKK0V4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2V4ZWN2ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4MTg4NGZjZGIyMTUwOGUgaW5wdXQ9NjI2ODA0ZmEwOTI2MDZkOV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2LCAqZW52OwogICAgIGNoYXIgKiphcmd2bGlzdCA9IE5VTEw7CiAgICAgY2hhciAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52aXJvbm1lbnQiLCBOVUxMfTsKIAogICAgIC8qIGV4ZWN2ZSBoYXMgdGhyZWUgYXJndW1lbnRzOiAocGF0aCwgYXJndiwgZW52KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJleGVjdmUiOwotI2lmZGVmIEhBVkVfRkVYRUNWRQotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndiwgJmVudgotICAgICAgICAgICAgICAgICAgICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghUHlMaXN0X0NoZWNrKGFyZ3YpICYmICFQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBhcmd2IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MzI5LDE1ICs1MTE4LDE1IEBACiAgICAgICAgIGdvdG8gZmFpbDsKIAogI2lmZGVmIEhBVkVfRkVYRUNWRQotICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgIGZleGVjdmUocGF0aC5mZCwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIGlmIChwYXRoLT5mZCA+IC0xKQorICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGV4ZWN2ZShwYXRoLm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworICAgICAgICBleGVjdmUocGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAotICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKICAgICB3aGlsZSAoLS1lbnZjID49IDApCiAgICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKQEAgLTUzNDUsMjkgKzUxMzQsMzMgQEAKICAgZmFpbDoKICAgICBpZiAoYXJndmxpc3QpCiAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiBOVUxMOwogfQogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KIAogCiAjaWZkZWYgSEFWRV9TUEFXTlYKLVB5RG9jX1NUUlZBUihwb3NpeF9zcGF3bnZfX2RvY19fLAotInNwYXdudihtb2RlLCBwYXRoLCBhcmdzKVxuXG5cCi1FeGVjdXRlIHRoZSBwcm9ncmFtICdwYXRoJyBpbiBhIG5ldyBwcm9jZXNzLlxuXAotXG5cCi0gICAgbW9kZTogbW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNwYXdudgorCisgICAgbW9kZTogaW50CisgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KKyAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIC8KKworRXhlY3V0ZSB0aGUgcHJvZ3JhbSBzcGVjaWZpZWQgYnkgcGF0aCBpbiBhIG5ldyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3Bhd252KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NwYXdudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQwYTc5NDU0ODRjOGNjNSBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3Y7CisgICAgY2hhciAqcGF0aF9jaGFyOwogICAgIGNoYXIgKiphcmd2bGlzdDsKLSAgICBpbnQgbW9kZSwgaTsKKyAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7CiAgICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CkBAIC01Mzc1LDExICs1MTY4LDcgQEAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwgJm1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MzkxLDEzICs1MTgwLDExIEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CkBAIC01NDA3LDcgKzUxOTQsNiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtNTQxNywxMSArNTIwMywxMCBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aCwgYXJndmxpc3QpOworICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtNTQzMCwyNSArNTIxNSwzMSBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zcGF3bnZlX19kb2NfXywKLSJzcGF3bnZlKG1vZGUsIHBhdGgsIGFyZ3MsIGVudilcblxuXAotRXhlY3V0ZSB0aGUgcHJvZ3JhbSAncGF0aCcgaW4gYSBuZXcgcHJvY2Vzcy5cblwKLVxuXAotICAgIG1vZGU6IG1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvblxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNwYXdudmUKKworICAgIG1vZGU6IGludAorICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCisgICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCisgICAgYXJndjogb2JqZWN0CisgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KKyAgICBlbnY6IG9iamVjdAorICAgICAgICBEaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzLgorICAgIC8KKworRXhlY3V0ZSB0aGUgcHJvZ3JhbSBzcGVjaWZpZWQgYnkgcGF0aCBpbiBhIG5ldyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3Bhd252ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zcGF3bnZlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmd2LCBQeU9iamVjdCAqZW52KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU3ZjVmMDcwMzYxMDUzMWYgaW5wdXQ9MDIzNjJmZDkzNzk2M2Y4Zl0qLwogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2LCAqZW52OworICAgIGNoYXIgKnBhdGhfY2hhcjsKICAgICBjaGFyICoqYXJndmxpc3Q7CiAgICAgY2hhciAqKmVudmxpc3Q7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgaW50IG1vZGU7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBpLCBlbnZjOwogICAgIFB5X2ludHB0cl90IHNwYXdudmFsOwogICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwpAQCAtNTQ1OCwxMSArNTI0OSw3IEBACiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncyBhbmQgZW52IGlzIGEgZGljdGlvbmFyeQogICAgICAgIGxpa2UgcG9zaXguZW52aXJvbi4gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsICZtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YsICZlbnYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTUwNiw3ICs1MjkzLDcgQEAKICAgICAgICAgbW9kZSA9IF9QX09WRVJMQVk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3Bhd252YWwgPSBfc3Bhd252ZShtb2RlLCBwYXRoLCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgc3Bhd252YWwgPSBfc3Bhd252ZShtb2RlLCBwYXRoX2NoYXIsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHNwYXdudmFsID09IC0xKQpAQCAtNTUyMCw3ICs1MzA3LDYgQEAKICAgZmFpbF8xOgogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBsYXN0YXJnKTsKICAgZmFpbF8wOgotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNTUyOCwxNCArNTMxNCwxNyBAQAogCiAKICNpZmRlZiBIQVZFX0ZPUksxCi1QeURvY19TVFJWQVIocG9zaXhfZm9yazFfX2RvY19fLAotImZvcmsxKCkgLT4gcGlkXG5cblwKLUZvcmsgYSBjaGlsZCBwcm9jZXNzIHdpdGggYSBzaW5nbGUgbXVsdGlwbGV4ZWQgKGkuZS4sIG5vdCBib3VuZCkgdGhyZWFkLlxuXAotXG5cCi1SZXR1cm4gMCB0byBjaGlsZCBwcm9jZXNzIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50IHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mb3JrMQorCitGb3JrIGEgY2hpbGQgcHJvY2VzcyB3aXRoIGEgc2luZ2xlIG11bHRpcGxleGVkIChpLmUuLCBub3QgYm91bmQpIHRocmVhZC4KKworUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZm9yazEoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19mb3JrMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTI3YjRmNjY0MTljOWRjZiBpbnB1dD0xMmRiMDIxNjc4OTM5MjZlXSovCiB7CiAgICAgcGlkX3QgcGlkOwogICAgIGludCByZXN1bHQgPSAwOwpAQCAtNTU1OCwxNyArNTM0NywyMSBAQAogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGlkKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfRk9SSzEgKi8KIAogCiAjaWZkZWYgSEFWRV9GT1JLCi1QeURvY19TVFJWQVIocG9zaXhfZm9ya19fZG9jX18sCi0iZm9yaygpIC0+IHBpZFxuXG5cCi1Gb3JrIGEgY2hpbGQgcHJvY2Vzcy5cblwKLVJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZvcmsKKworRm9yayBhIGNoaWxkIHByb2Nlc3MuCisKK1JldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZvcmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19mb3JrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OThiMWVjZDM0OThiYTEyIGlucHV0PTEzYzk1NjQxMzExMGVlYWFdKi8KIHsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC01NTkxLDkyICs1Mzg0LDEwNiBAQAogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGlkKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfRk9SSyAqLworCiAKICNpZmRlZiBIQVZFX1NDSEVEX0gKLQogI2lmZGVmIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWAorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0X3ByaW9yaXR5X21heAogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX18sCi0ic2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpXG5cblwKLUdldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciAqcG9saWN5Ki4iKTsKKyAgICBwb2xpY3k6IGludAorCitHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNmEzMGZhNTA3MWYyZDgxIGlucHV0PTIwOTdiNzk5OGVjYTY4NzRdKi8KIHsKLSAgICBpbnQgcG9saWN5LCBtYXg7CisgICAgaW50IG1heDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgJnBvbGljeSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIG1heCA9IHNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KTsKICAgICBpZiAobWF4IDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtYXgpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX18sCi0ic2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpXG5cblwKLUdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciAqcG9saWN5Ki4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0X3ByaW9yaXR5X21pbgorCisgICAgcG9saWN5OiBpbnQKKworR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBwb2xpY3kpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWNhM2VkNmJjNDNlOWIyMCBpbnB1dD0yMWJjOGZhMGQ3MDk4M2JmXSovCiB7Ci0gICAgaW50IHBvbGljeSwgbWluOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAmcG9saWN5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbWluID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpOworICAgIGludCBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CiAgICAgaWYgKG1pbiA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWluKTsKIH0KLQogI2VuZGlmIC8qIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCAqLwogCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCi0ic2NoZWRfZ2V0c2NoZWR1bGVyKHBpZClcblxuXAotR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBhIFBJRCBvZiAqcGlkKi5cblwKLVBhc3NpbmcgYSBQSUQgb2YgMCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0c2NoZWR1bGVyCisgICAgcGlkOiBwaWRfdAorICAgIC8KKworR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZHkgYnkgcGlkLgorCitQYXNzaW5nIDAgZm9yIHBpZCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGNkNjNjMTVjYWY1NGZhOSBpbnB1dD01ZjE0Y2ZkMWYxODllMWEwXSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIGludCBwb2xpY3k7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwb2xpY3kgPSBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKICAgICBpZiAocG9saWN5IDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhwb2xpY3kpOwogfQorI2VuZGlmIC8qIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSICovCiAKLSNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKQorLypbY2xpbmljIGlucHV0XQorY2xhc3Mgb3Muc2NoZWRfcGFyYW0gIlB5T2JqZWN0ICoiICImU2NoZWRQYXJhbVR5cGUiCisKK0BjbGFzc21ldGhvZAorb3Muc2NoZWRfcGFyYW0uX19uZXdfXworCisgICAgc2NoZWRfcHJpb3JpdHk6IG9iamVjdAorICAgICAgICBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLgorCitDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNjaGVkX3BhcmFtX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfcGFyYW1faW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OGY0MDY3ZDYwZjQ4YzEzIGlucHV0PTczYTRjMjJmNzA3MWZjNjJdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwga3dsaXN0LCAmcHJpb3JpdHkpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldyh0eXBlKTsKICAgICBpZiAoIXJlcykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKHByaW9yaXR5KTsKLSAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgcHJpb3JpdHkpOworICAgIFB5X0lOQ1JFRihzY2hlZF9wcmlvcml0eSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHNjaGVkX3ByaW9yaXR5KTsKICAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIoc2NoZWRfcGFyYW1fX2RvY19fLAotInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KTogQSBzY2hlZHVsaW5nIHBhcmFtZXRlci5cblxuXAotQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5Iik7CisKK1B5RG9jX1ZBUihvc19zY2hlZF9wYXJhbV9fZG9jX18pOwogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzY2hlZF9wYXJhbV9maWVsZHNbXSA9IHsKICAgICB7InNjaGVkX3ByaW9yaXR5IiwgInRoZSBzY2hlZHVsaW5nIHByaW9yaXR5In0sCkBAIC01Njg1LDcgKzU0OTIsNyBAQAogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHNjaGVkX3BhcmFtX2Rlc2MgPSB7CiAgICAgInNjaGVkX3BhcmFtIiwgLyogbmFtZSAqLwotICAgIHNjaGVkX3BhcmFtX19kb2NfXywgLyogZG9jICovCisgICAgb3Nfc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KICAgICBzY2hlZF9wYXJhbV9maWVsZHMsCiAgICAgMQogfTsKQEAgLTU3MDksMTE4ICs1NTE2LDEzNCBAQAogICAgIHJlcy0+c2NoZWRfcHJpb3JpdHkgPSBQeV9TQUZFX0RPV05DQVNUKHByaW9yaXR5LCBsb25nLCBpbnQpOwogICAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgKi8KIAotI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfc2V0c2NoZWR1bGVyCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19fLAotInNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pXG5cblwKLVNldCB0aGUgc2NoZWR1bGluZyBwb2xpY3ksICpwb2xpY3kqLCBmb3IgKnBpZCouXG5cCi1JZiAqcGlkKiBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG5cCi0qcGFyYW0qIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworICAgIHBpZDogcGlkX3QKKyAgICBwb2xpY3k6IGludAorICAgIHBhcmFtOiBzY2hlZF9wYXJhbQorICAgIC8KKworU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuCisKK0lmIHBpZCBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuCitwYXJhbSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBwb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3MDUzZTVjNTI4YzM1YzkgaW5wdXQ9YzU4MWY5NDY5YTUzMjdkZF0qLwogewotICAgIHBpZF90IHBpZDsKLSAgICBpbnQgcG9saWN5OwotICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpTyY6c2NoZWRfc2V0c2NoZWR1bGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJnBvbGljeSwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyoKICAgICAqKiBzY2hlZF9zZXRzY2hlZHVsZXIoKSByZXR1cm5zIDAgaW4gTGludXgsIGJ1dCB0aGUgcHJldmlvdXMKICAgICAqKiBzY2hlZHVsaW5nIHBvbGljeSB1bmRlciBTb2xhcmlzL0lsbHVtb3MsIGFuZCBvdGhlcnMuCiAgICAgKiogT24gZXJyb3IsIC0xIGlzIHJldHVybmVkIGluIGFsbCBPcGVyYXRpbmcgU3lzdGVtcy4KICAgICAqLwotICAgIGlmIChzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksICZwYXJhbSkgPT0gLTEpCisgICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pID09IC0xKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KKyNlbmRpZiAgLyogSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIqLwogCi0jZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX2dldHBhcmFtCisgICAgcGlkOiBwaWRfdAorICAgIC8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHBhcmFtX19kb2NfXywKLSJzY2hlZF9nZXRwYXJhbShwaWQpIC0+IHNjaGVkX3BhcmFtXG5cblwKLVJldHVybnMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyB3aXRoICpwaWQqIGFzIGFuIGluc3RhbmNlIG9mIHRoZVxuXAotc2NoZWRfcGFyYW0gY2xhc3MuIEEgUElEIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKK1JldHVybnMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KKworSWYgcGlkIGlzIDAsIHJldHVybnMgcGFyYW1ldGVycyBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KK1JldHVybiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldHBhcmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldHBhcmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0MmM1YmQyNjA0ZWNkMDggaW5wdXQ9MThhMWVmOWMyZWZhZTI5Nl0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07Ci0gICAgUHlPYmplY3QgKnJlcywgKnByaW9yaXR5OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnByaW9yaXR5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2NoZWRfZ2V0cGFyYW0ocGlkLCAmcGFyYW0pKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2NoZWRQYXJhbVR5cGUpOwotICAgIGlmICghcmVzKQorICAgIHJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHByaW9yaXR5ID0gUHlMb25nX0Zyb21Mb25nKHBhcmFtLnNjaGVkX3ByaW9yaXR5KTsKICAgICBpZiAoIXByaW9yaXR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgcHJpb3JpdHkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRwYXJhbV9fZG9jX18sCi0ic2NoZWRfc2V0cGFyYW0ocGlkLCBwYXJhbSlcblxuXAotU2V0IHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgYSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAotQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9zZXRwYXJhbQorICAgIHBpZDogcGlkX3QKKyAgICBwYXJhbTogc2NoZWRfcGFyYW0KKyAgICAvCisKK1NldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorCitJZiBwaWQgaXMgMCwgc2V0cyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLgorcGFyYW0gc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfc2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjdhM2M1ODk0MzZjZWM5YiBpbnB1dD02YjhkNmRmY2VjZGMyMWJkXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2NoZWRfc2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRQQVJBTSAqLwogCi0jZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgLT4gZG91YmxlCisgICAgcGlkOiBwaWRfdAorICAgIC8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX18sCi0ic2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCkgLT4gZmxvYXRcblxuXAotUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiBpbiBzZWNvbmRzLiIpOworUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCwgaW4gc2Vjb25kcy4KIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitWYWx1ZSByZXR1cm5lZCBpcyBhIGZsb2F0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgZG91YmxlCitvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2FkYzEzN2E4NmRlYTU4MSBpbnB1dD0yYTk3M2RhMTVjY2E2ZmFlXSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIHN0cnVjdCB0aW1lc3BlYyBpbnRlcnZhbDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjKTsKKyAgICBpZiAoc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCwgJmludGVydmFsKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTEuMDsKKyAgICB9CisgICAgcmV0dXJuIChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjOwogfQorI2VuZGlmIC8qIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMICovCiAKLSNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfeWllbGRfX2RvY19fLAotInNjaGVkX3lpZWxkKClcblxuXAotVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfeWllbGQKKworVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfeWllbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19zY2hlZF95aWVsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDdiZDUxODY5YzRjYjZhOCBpbnB1dD1lNTRkNmY5ODE4OTM5MWQ0XSovCiB7CiAgICAgaWYgKHNjaGVkX3lpZWxkKCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtNTgyOCwzOSArNTY1MSw0MSBAQAogfQogCiAjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQotCiAvKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQ1BVcyBhbGxvY2F0ZWQgaW4gYSBjcHVfc2V0X3QgKi8KIHN0YXRpYyBjb25zdCBpbnQgTkNQVVNfU1RBUlQgPSBzaXplb2YodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVDsKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKLSJzY2hlZF9zZXRhZmZpbml0eShwaWQsIGNwdV9zZXQpXG5cblwKLVNldCB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogdG8gKmNwdV9zZXQqLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfc2V0YWZmaW5pdHkKKyAgICBwaWQ6IHBpZF90CisgICAgbWFzayA6IG9iamVjdAorICAgIC8KKworU2V0IHRoZSBDUFUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgdG8gbWFzay4KKworbWFzayBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgaWRlbnRpZnlpbmcgQ1BVcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX3NldGFmZmluaXR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX3NldGFmZmluaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBQeU9iamVjdCAqbWFzaykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODJiY2JmNDBkMzI1M2E5IGlucHV0PWEwNzkxYTU5N2M3MDg1YmFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IG5jcHVzOwogICAgIHNpemVfdCBzZXRzaXplOwotICAgIGNwdV9zZXRfdCAqbWFzayA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0ZXJhYmxlLCAqaXRlcmF0b3IgPSBOVUxMLCAqaXRlbTsKKyAgICBjcHVfc2V0X3QgKmNwdV9zZXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYXRvciA9IE5VTEwsICppdGVtOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmaXRlcmFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKG1hc2spOwogICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CiAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKLSAgICBtYXNrID0gQ1BVX0FMTE9DKG5jcHVzKTsKLSAgICBpZiAobWFzayA9PSBOVUxMKSB7CisgICAgY3B1X3NldCA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgaWYgKGNwdV9zZXQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBDUFVfWkVST19TKHNldHNpemUsIG1hc2spOworICAgIENQVV9aRVJPX1Moc2V0c2l6ZSwgY3B1X3NldCk7CiAKICAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdGVyYXRvcikpKSB7CiAgICAgICAgIGxvbmcgY3B1OwpAQCAtNTkwMSw0OCArNTcyNiw1MCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgbmV3c2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5ld25jcHVzKTsKICAgICAgICAgICAgIENQVV9aRVJPX1MobmV3c2V0c2l6ZSwgbmV3bWFzayk7Ci0gICAgICAgICAgICBtZW1jcHkobmV3bWFzaywgbWFzaywgc2V0c2l6ZSk7Ci0gICAgICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBjcHVfc2V0LCBzZXRzaXplKTsKKyAgICAgICAgICAgIENQVV9GUkVFKGNwdV9zZXQpOwogICAgICAgICAgICAgc2V0c2l6ZSA9IG5ld3NldHNpemU7Ci0gICAgICAgICAgICBtYXNrID0gbmV3bWFzazsKKyAgICAgICAgICAgIGNwdV9zZXQgPSBuZXdtYXNrOwogICAgICAgICAgICAgbmNwdXMgPSBuZXduY3B1czsKICAgICAgICAgfQotICAgICAgICBDUFVfU0VUX1MoY3B1LCBzZXRzaXplLCBtYXNrKTsKKyAgICAgICAgQ1BVX1NFVF9TKGNwdSwgc2V0c2l6ZSwgY3B1X3NldCk7CiAgICAgfQogICAgIFB5X0NMRUFSKGl0ZXJhdG9yKTsKIAotICAgIGlmIChzY2hlZF9zZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spKSB7CisgICAgaWYgKHNjaGVkX3NldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgY3B1X3NldCkpIHsKICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgQ1BVX0ZSRUUobWFzayk7CisgICAgQ1BVX0ZSRUUoY3B1X3NldCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAKIGVycm9yOgotICAgIGlmIChtYXNrKQotICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBpZiAoY3B1X3NldCkKKyAgICAgICAgQ1BVX0ZSRUUoY3B1X3NldCk7CiAgICAgUHlfWERFQ1JFRihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCi0ic2NoZWRfZ2V0YWZmaW5pdHkocGlkLCBuY3B1cykgLT4gY3B1X3NldFxuXG5cCi1SZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAotVGhlIHJldHVybmVkIGNwdV9zZXQgd2lsbCBiZSBvZiBzaXplICpuY3B1cyouIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX2dldGFmZmluaXR5CisgICAgcGlkOiBwaWRfdAorICAgIC8KKworUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KKworVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldGFmZmluaXR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldGFmZmluaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI0MzFhOGYzMTBlMzY5ZTcgaW5wdXQ9ZWFmMTYxOTM2ODc0YjhhMV0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CiAgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CkBAIC01OTkyLDYgKzU4MTksNyBAQAogCiAjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCiAKKwogLyogQUlYIHVzZXMgL2Rldi9wdGMgYnV0IGlzIG90aGVyd2lzZSB0aGUgc2FtZSBhcyAvZGV2L3B0bXggKi8KIC8qIElSSVggaGFzIGJvdGggL2Rldi9wdGMgYW5kIC9kZXYvcHRteCwgdXNlIHB0bXggKi8KICNpZiBkZWZpbmVkKEhBVkVfREVWX1BUQykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRNWCkKQEAgLTYwMTgsMTMgKzU4NDYsMjAgQEAKICNlbmRpZgogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfRk9SS1BUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YICovCiAKKwogI2lmIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKQotUHlEb2NfU1RSVkFSKHBvc2l4X29wZW5wdHlfX2RvY19fLAotIm9wZW5wdHkoKSAtPiAobWFzdGVyX2ZkLCBzbGF2ZV9mZClcblxuXAotT3BlbiBhIHBzZXVkby10ZXJtaW5hbCwgcmV0dXJuaW5nIG9wZW4gZmQncyBmb3IgYm90aCBtYXN0ZXIgYW5kIHNsYXZlIGVuZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorb3Mub3BlbnB0eQorCitPcGVuIGEgcHNldWRvLXRlcm1pbmFsLgorCitSZXR1cm4gYSB0dXBsZSBvZiAobWFzdGVyX2ZkLCBzbGF2ZV9mZCkgY29udGFpbmluZyBvcGVuIGZpbGUgZGVzY3JpcHRvcnMKK2ZvciBib3RoIHRoZSBtYXN0ZXIgYW5kIHNsYXZlIGVuZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9vcGVucHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3Nfb3BlbnB0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU4ZTU3MWMxYmExMzVlZSBpbnB1dD1mM2Q5OWZkOTllNzYyOTA3XSovCiB7CiAgICAgaW50IG1hc3Rlcl9mZCA9IC0xLCBzbGF2ZV9mZCA9IC0xOwogI2lmbmRlZiBIQVZFX09QRU5QVFkKQEAgLTYwNTUsNyArNTg5MCw3IEBACiAKICAgICBzbGF2ZV9mZCA9IF9QeV9vcGVuKHNsYXZlX25hbWUsIE9fUkRXUik7CiAgICAgaWYgKHNsYXZlX2ZkIDwgMCkKLSAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKKyAgICAgICAgZ290byBlcnJvcjsKIAogI2Vsc2UKICAgICBtYXN0ZXJfZmQgPSBvcGVuKERFVl9QVFlfRklMRSwgT19SRFdSIHwgT19OT0NUVFkpOyAvKiBvcGVuIG1hc3RlciAqLwpAQCAtNjA4Myw4ICs1OTE4LDggQEAKICAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKIAogICAgIHNsYXZlX2ZkID0gX1B5X29wZW4oc2xhdmVfbmFtZSwgT19SRFdSIHwgT19OT0NUVFkpOyAvKiBvcGVuIHNsYXZlICovCi0gICAgaWYgKHNsYXZlX2ZkIDwgMCkKLSAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKKyAgICBpZiAoc2xhdmVfZmQgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShtYXN0ZXJfZmQsIDAsIE5VTEwpIDwgMCkKICAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKQEAgLTYxMDIsOSArNTkzNyw3IEBACiAKIHBvc2l4X2Vycm9yOgogICAgIHBvc2l4X2Vycm9yKCk7Ci0jaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKQogZXJyb3I6Ci0jZW5kaWYKICAgICBpZiAobWFzdGVyX2ZkICE9IC0xKQogICAgICAgICBjbG9zZShtYXN0ZXJfZmQpOwogICAgIGlmIChzbGF2ZV9mZCAhPSAtMSkKQEAgLTYxMTMsMTUgKzU5NDYsMjIgQEAKIH0KICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkgKi8KIAorCiAjaWZkZWYgSEFWRV9GT1JLUFRZCi1QeURvY19TVFJWQVIocG9zaXhfZm9ya3B0eV9fZG9jX18sCi0iZm9ya3B0eSgpIC0+IChwaWQsIG1hc3Rlcl9mZClcblxuXAotRm9yayBhIG5ldyBwcm9jZXNzIHdpdGggYSBuZXcgcHNldWRvLXRlcm1pbmFsIGFzIGNvbnRyb2xsaW5nIHR0eS5cblxuXAotTGlrZSBmb3JrKCksIHJldHVybiAwIGFzIHBpZCB0byBjaGlsZCBwcm9jZXNzLCBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudC5cblwKLVRvIGJvdGgsIHJldHVybiBmZCBvZiBuZXdseSBvcGVuZWQgcHNldWRvLXRlcm1pbmFsLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mb3JrcHR5CisKK0ZvcmsgYSBuZXcgcHJvY2VzcyB3aXRoIGEgbmV3IHBzZXVkby10ZXJtaW5hbCBhcyBjb250cm9sbGluZyB0dHkuCisKK1JldHVybnMgYSB0dXBsZSBvZiAocGlkLCBtYXN0ZXJfZmQpLgorTGlrZSBmb3JrKCksIHJldHVybiBwaWQgb2YgMCB0byB0aGUgY2hpbGQgcHJvY2VzcywKK2FuZCBwaWQgb2YgY2hpbGQgdG8gdGhlIHBhcmVudCBwcm9jZXNzLgorVG8gYm90aCwgcmV0dXJuIGZkIG9mIG5ld2x5IG9wZW5lZCBwc2V1ZG8tdGVybWluYWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mb3JrcHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZm9ya3B0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTExYjgzOTFkY2UzY2I1NyBpbnB1dD1mMWY3ZjRiYWUzOTY2MDEwXSovCiB7CiAgICAgaW50IG1hc3Rlcl9mZCA9IC0xLCByZXN1bHQgPSAwOwogICAgIHBpZF90IHBpZDsKQEAgLTYxNDUsNTkgKzU5ODUsNzMgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihOaSkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBtYXN0ZXJfZmQpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GT1JLUFRZICovCiAKIAogI2lmZGVmIEhBVkVfR0VURUdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGVnaWRfX2RvY19fLAotImdldGVnaWQoKSAtPiBlZ2lkXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0ZWdpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGVnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRlZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MGY0MzNhOGMwYjFkOTE5IGlucHV0PTE1OTZmNzlhZDExMDdkNWRdKi8KIHsKICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tR2lkKGdldGVnaWQoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEVHSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRFVUlECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0ZXVpZF9fZG9jX18sCi0iZ2V0ZXVpZCgpIC0+IGV1aWRcblxuXAotUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgdXNlciBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGV1aWQKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgdXNlciBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGV1aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYTUzMmM0YTY2ODc0MzU3IGlucHV0PTQ2NDRjNjYyZDNiZDlmMTldKi8KIHsKICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tVWlkKGdldGV1aWQoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEVVSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRnaWRfX2RvY19fLAotImdldGdpZCgpIC0+IGdpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0Z2lkCisKK1JldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxYTIyMDIxYjc0ZWE0NmIgaW5wdXQ9NTg3OTYzNDRjZDg3YzBmNl0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21HaWQoZ2V0Z2lkKCkpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cGlkX19kb2NfXywKLSJnZXRwaWQoKSAtPiBwaWRcblxuXAotUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgaWQiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHBpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGZiZjNhOTM0ZWUwOWU2MiBpbnB1dD01YTlhMDBmMGFiNjhhYTAwXSovCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBpZCgpKTsKIH0KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisKKy8qIEFDIDMuNTogZnVubnkgYXBwbGUgbG9naWMgYmVsb3cgKi8KIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cGxpc3RfX2RvY19fLAogImdldGdyb3VwbGlzdCh1c2VyLCBncm91cCkgLT4gbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3NcblxuXAogUmV0dXJucyBhIGxpc3Qgb2YgZ3JvdXBzIHRvIHdoaWNoIGEgdXNlciBiZWxvbmdzLlxuXG5cCkBAIC02MjcwLDE1ICs2MTI0LDE5IEBACiAKICAgICByZXR1cm4gbGlzdDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUR1JPVVBMSVNUICovCisKIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBTCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBzX19kb2NfXywKLSJnZXRncm91cHMoKSAtPiBsaXN0IG9mIGdyb3VwIElEc1xuXG5cCi1SZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgSURzIGZvciB0aGUgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGdyb3VwcworCitSZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgSURzIGZvciB0aGUgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGdyb3Vwc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU3YzRmZDJkYjZkNWM2MCBpbnB1dD1kM2YxMDk0MTJlNmExNTVjXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTYzNzcsNyArNjIzNSw3IEBACiAKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRHUk9VUFMgKi8KIAogI2lmZGVmIEhBVkVfSU5JVEdST1VQUwogUHlEb2NfU1RSVkFSKHBvc2l4X2luaXRncm91cHNfX2RvY19fLApAQCAtNjM4Niw2ICs2MjQ0LDcgQEAKIHRoZSBncm91cHMgb2Ygd2hpY2ggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBpcyBhIG1lbWJlciwgcGx1cyB0aGUgc3BlY2lmaWVkXG5cCiBncm91cCBpZC4iKTsKIAorLyogQUMgMy41OiBmdW5ueSBhcHBsZSBsb2dpYyAqLwogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2luaXRncm91cHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtNjQxOCwyMCArNjI3NywyMyBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfSU5JVEdST1VQUyAqLworCiAKICNpZmRlZiBIQVZFX0dFVFBHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwZ2lkX19kb2NfXywKLSJnZXRwZ2lkKHBpZCkgLT4gcGdpZFxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRwZ2lkKCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRwZ2lkCisKKyAgICBwaWQ6IHBpZF90CisKK0NhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19nZXRwZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcwZTcxM2I0ZDU0YjdjNjEgaW5wdXQ9MzlkNzEwYWUzYmFhZjFjN10qLwogewotICAgIHBpZF90IHBpZCwgcGdpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOmdldHBnaWQiLCAmcGlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGdpZCA9IGdldHBnaWQocGlkKTsKKyAgICBwaWRfdCBwZ2lkID0gZ2V0cGdpZChwaWQpOwogICAgIGlmIChwZ2lkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKHBnaWQpOwpAQCAtNjQ0MCwxMiArNjMwMiwxNSBAQAogCiAKICNpZmRlZiBIQVZFX0dFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwZ3JwX19kb2NfXywKLSJnZXRwZ3JwKCkgLT4gcGdycFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBncm91cCBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBncnAKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgZ3JvdXAgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwZ3JwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2YzNDAzNTg1ODQ2ODExZiBpbnB1dD02ODQ2ZmIyYmI5YTM3MDVlXSovCiB7CiAjaWZkZWYgR0VUUEdSUF9IQVZFX0FSRwogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwZ3JwKDApKTsKQEAgLTY0NTcsMTIgKzYzMjIsMTUgQEAKIAogCiAjaWZkZWYgSEFWRV9TRVRQR1JQCi1QeURvY19TVFJWQVIocG9zaXhfc2V0cGdycF9fZG9jX18sCi0ic2V0cGdycCgpXG5cblwKLU1ha2UgdGhpcyBwcm9jZXNzIHRoZSBwcm9jZXNzIGdyb3VwIGxlYWRlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHBncnAKKworTWFrZSB0aGUgY3VycmVudCBwcm9jZXNzIHRoZSBsZWFkZXIgb2YgaXRzIHByb2Nlc3MgZ3JvdXAuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRwZ3JwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3Nfc2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTk2NTBmNTVhOTYzZDdhYyBpbnB1dD0xZjA2MTlmY2I1NzMxZTdlXSovCiB7CiAjaWZkZWYgU0VUUEdSUF9IQVZFX0FSRwogICAgIGlmIChzZXRwZ3JwKDAsIDApIDwgMCkKQEAgLTY0NzMsNyArNjM0MSw2IEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQotCiAjZW5kaWYgLyogSEFWRV9TRVRQR1JQICovCiAKICNpZmRlZiBIQVZFX0dFVFBQSUQKQEAgLTY1MjAsMTQgKzYzODcsMTkgQEAKIH0KICNlbmRpZiAvKk1TX1dJTkRPV1MqLwogCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cHBpZF9fZG9jX18sCi0iZ2V0cHBpZCgpIC0+IHBwaWRcblxuXAotUmV0dXJuIHRoZSBwYXJlbnQncyBwcm9jZXNzIGlkLiAgSWYgdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZCxcblwKLVdpbmRvd3MgbWFjaGluZXMgd2lsbCBzdGlsbCByZXR1cm4gaXRzIGlkOyBvdGhlcnMgc3lzdGVtcyB3aWxsIHJldHVybiB0aGUgaWRcblwKLW9mIHRoZSAnaW5pdCcgcHJvY2VzcyAoMSkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBwaWQKKworUmV0dXJuIHRoZSBwYXJlbnQncyBwcm9jZXNzIGlkLgorCitJZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLCBXaW5kb3dzIG1hY2hpbmVzIHdpbGwgc3RpbGwKK3JldHVybiBpdHMgaWQ7IG90aGVycyBzeXN0ZW1zIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgJ2luaXQnIHByb2Nlc3MgKDEpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cHBpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldHBwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRlNDljOGU3YTg3MzhjZDIgaW5wdXQ9ZTYzN2NiODc1MzljMDMwZV0qLwogewogI2lmZGVmIE1TX1dJTkRPV1MKICAgICByZXR1cm4gd2luMzJfZ2V0cHBpZCgpOwpAQCAtNjUzOSwxMiArNjQxMSwxNSBAQAogCiAKICNpZmRlZiBIQVZFX0dFVExPR0lOCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0bG9naW5fX2RvY19fLAotImdldGxvZ2luKCkgLT4gc3RyaW5nXG5cblwKLVJldHVybiB0aGUgYWN0dWFsIGxvZ2luIG5hbWUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRsb2dpbgorCitSZXR1cm4gdGhlIGFjdHVhbCBsb2dpbiBuYW1lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0bG9naW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRsb2dpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDM3ZWJkYjNlNGI1ZGFjMSBpbnB1dD0yYTIxYWIxZTkxNzE2M2RmXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtNjU3Nyw3NyArNjQ1Miw1NCBAQAogfQogI2VuZGlmIC8qIEhBVkVfR0VUTE9HSU4gKi8KIAorCiAjaWZkZWYgSEFWRV9HRVRVSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXR1aWRfX2RvY19fLAotImdldHVpZCgpIC0+IHVpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXR1aWQKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyB1c2VyIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0dWlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wM2E4Yjg5NGNlZmIzZmE1IGlucHV0PWI1M2M4YjM1ZjExMGE1MTZdKi8KIHsKICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tVWlkKGdldHVpZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUVUlEICovCiAKIAotI2lmZGVmIEhBVkVfS0lMTAotUHlEb2NfU1RSVkFSKHBvc2l4X2tpbGxfX2RvY19fLAotImtpbGwocGlkLCBzaWcpXG5cblwKLUtpbGwgYSBwcm9jZXNzIHdpdGggYSBzaWduYWwuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9raWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IHNpZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTpraWxsIiwgJnBpZCwgJnNpZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChraWxsKHBpZCwgc2lnKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0tJTExQRwotUHlEb2NfU1RSVkFSKHBvc2l4X2tpbGxwZ19fZG9jX18sCi0ia2lsbHBnKHBnaWQsIHNpZylcblxuXAotS2lsbCBhIHByb2Nlc3MgZ3JvdXAgd2l0aCBhIHNpZ25hbC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2tpbGxwZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IHNpZzsKLSAgICBwaWRfdCBwZ2lkOwotICAgIC8qIFhYWCBzb21lIG1hbiBwYWdlcyBtYWtlIHRoZSBgcGdpZGAgcGFyYW1ldGVyIGFuIGludCwgb3RoZXJzCi0gICAgICAgYSBwaWRfdC4gU2luY2UgZ2V0cGdycCgpIHJldHVybnMgYSBwaWRfdCwgd2UgYXNzdW1lIGtpbGxwZyBzaG91bGQKLSAgICAgICB0YWtlIHRoZSBzYW1lIHR5cGUuIE1vcmVvdmVyLCBwaWRfdCBpcyBhbHdheXMgYXQgbGVhc3QgYXMgd2lkZSBhcwotICAgICAgIGludCAoZWxzZSBjb21waWxhdGlvbiBvZiB0aGlzIG1vZHVsZSBmYWlscyksIHdoaWNoIGlzIHNhZmUuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6a2lsbHBnIiwgJnBnaWQsICZzaWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2lsbHBnKHBnaWQsIHNpZykgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLSNlbmRpZgotCiAjaWZkZWYgTVNfV0lORE9XUwotUHlEb2NfU1RSVkFSKHdpbjMyX2tpbGxfX2RvY19fLAotImtpbGwocGlkLCBzaWcpXG5cblwKLUtpbGwgYSBwcm9jZXNzIHdpdGggYSBzaWduYWwuIik7CisjZGVmaW5lIEhBVkVfS0lMTAorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworI2lmZGVmIEhBVkVfS0lMTAorLypbY2xpbmljIGlucHV0XQorb3Mua2lsbAorCisgICAgcGlkOiBwaWRfdAorICAgIHNpZ25hbDogUHlfc3NpemVfdAorICAgIC8KKworS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfa2lsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgUHlfc3NpemVfdCBzaWduYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzRmOTA3ZGQwMGE4M2MyNiBpbnB1dD02MWEzNmI4NmNhMjc1YWI5XSovCisjaWZuZGVmIE1TX1dJTkRPV1MKK3sKKyAgICBpZiAoa2lsbChwaWQsIChpbnQpc2lnbmFsKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZWxzZSAvKiAhTVNfV0lORE9XUyAqLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgcGlkX3QgcGlkOwotICAgIERXT1JEIHNpZywgZXJyOworICAgIERXT1JEIHNpZyA9IChEV09SRClzaWduYWw7CisgICAgRFdPUkQgZXJyOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiazpraWxsIiwgJnBpZCwgJnNpZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogQ29uc29sZSBwcm9jZXNzZXMgd2hpY2ggc2hhcmUgYSBjb21tb24gY29uc29sZSBjYW4gYmUgc2VudCBDVFJMK0Mgb3IKICAgICAgICBDVFJMK0JSRUFLIGV2ZW50cywgcHJvdmlkZWQgdGhleSBoYW5kbGUgc2FpZCBldmVudHMuICovCiAgICAgaWYgKHNpZyA9PSBDVFJMX0NfRVZFTlQgfHwgc2lnID09IENUUkxfQlJFQUtfRVZFTlQpIHsKQEAgLTY2NzgsMTAzICs2NTMwLDEzOCBAQAogICAgIENsb3NlSGFuZGxlKGhhbmRsZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX0tJTEwgKi8KKworCisjaWZkZWYgSEFWRV9LSUxMUEcKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmtpbGxwZworCisgICAgcGdpZDogcGlkX3QKKyAgICBzaWduYWw6IGludAorICAgIC8KKworS2lsbCBhIHByb2Nlc3MgZ3JvdXAgd2l0aCBhIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxwZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBnaWQsIGludCBzaWduYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQzNGE3NjZlZjk0NWY5MyBpbnB1dD0zOGI1NDQ5ZWI4ZmFlYzE5XSovCit7CisgICAgLyogWFhYIHNvbWUgbWFuIHBhZ2VzIG1ha2UgdGhlIGBwZ2lkYCBwYXJhbWV0ZXIgYW4gaW50LCBvdGhlcnMKKyAgICAgICBhIHBpZF90LiBTaW5jZSBnZXRwZ3JwKCkgcmV0dXJucyBhIHBpZF90LCB3ZSBhc3N1bWUga2lsbHBnIHNob3VsZAorICAgICAgIHRha2UgdGhlIHNhbWUgdHlwZS4gTW9yZW92ZXIsIHBpZF90IGlzIGFsd2F5cyBhdCBsZWFzdCBhcyB3aWRlIGFzCisgICAgICAgaW50IChlbHNlIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlIGZhaWxzKSwgd2hpY2ggaXMgc2FmZS4gKi8KKyAgICBpZiAoa2lsbHBnKHBnaWQsIHNpZ25hbCkgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfS0lMTFBHICovCisKIAogI2lmZGVmIEhBVkVfUExPQ0sKLQogI2lmZGVmIEhBVkVfU1lTX0xPQ0tfSAogI2luY2x1ZGUgPHN5cy9sb2NrLmg+CiAjZW5kaWYKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3Bsb2NrX19kb2NfXywKLSJwbG9jayhvcClcblxuXAorLypbY2xpbmljIGlucHV0XQorb3MucGxvY2sKKyAgICBvcDogaW50CisgICAgLworCiBMb2NrIHByb2dyYW0gc2VnbWVudHMgaW50byBtZW1vcnkuIik7CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Y2I4NTFmODFiOTE0OTg0IGlucHV0PWU2ZTVlMzQ4ZTE1MjVmNjBdKi8KIHsKLSAgICBpbnQgb3A7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnBsb2NrIiwgJm9wKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHBsb2NrKG9wKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QTE9DSyAqLworCiAKICNpZmRlZiBIQVZFX1NFVFVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHVpZF9fZG9jX18sCi0ic2V0dWlkKHVpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyB1c2VyIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0dWlkCisKKyAgICB1aWQ6IHVpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXR1aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgdWlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0MWVhOWE4ZDFlNWQ1NjUgaW5wdXQ9YzkyMWEzMjg1YWEyMjI1Nl0qLwogewotICAgIHVpZF90IHVpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnNldHVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHVpZCh1aWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUVUlEICovCiAKIAogI2lmZGVmIEhBVkVfU0VURVVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldGV1aWRfX2RvY19fLAotInNldGV1aWQodWlkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0ZXVpZAorCisgICAgZXVpZDogdWlkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIHVzZXIgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRldWlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgZXVpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NmY0ZjY4MjNhNjQ4ZDZkIGlucHV0PWJhOTNkOTI3ZTQ3ODFhYTldKi8KIHsKLSAgICB1aWRfdCBldWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRldWlkKGV1aWQpIDwgMCkgeworICAgIGlmIChzZXRldWlkKGV1aWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRFVUlEICovCiAKKwogI2lmZGVmIEhBVkVfU0VURUdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldGVnaWRfX2RvY19fLAotInNldGVnaWQoZ2lkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSBncm91cCBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldGVnaWQKKworICAgIGVnaWQ6IGdpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGVnaWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldGVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCBlZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhMDk0YTY5YTA4MWE2MGYgaW5wdXQ9NDA4MDUyNmQwY2NkNmNlM10qLwogewotICAgIGdpZF90IGVnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGVnaWQoZWdpZCkgPCAwKSB7CisgICAgaWYgKHNldGVnaWQoZWdpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVEVHSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRSRVVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJldWlkX19kb2NfXywKLSJzZXRyZXVpZChydWlkLCBldWlkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSB1c2VyIGlkcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHJldWlkCisKKyAgICBydWlkOiB1aWRfdAorICAgIGV1aWQ6IHVpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSB1c2VyIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHJldWlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRyZXVpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjI5MzhjM2U3M2QyN2VjNyBpbnB1dD0wY2E4OTc4ZGU2NjM4ODBjXSovCiB7Ci0gICAgdWlkX3QgcnVpZCwgZXVpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmV1aWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRyZXVpZChydWlkLCBldWlkKSA8IDApIHsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfSBlbHNlIHsKQEAgLTY3ODQsNTMgKzY2NzEsNjIgQEAKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFJFVUlEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUUkVHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRyZWdpZF9fZG9jX18sCi0ic2V0cmVnaWQocmdpZCwgZWdpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cmVnaWQKKworICAgIHJnaWQ6IGdpZF90CisgICAgZWdpZDogZ2lkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIGdyb3VwIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHJlZ2lkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRyZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGIxOGYxODM5YWJhYmUzZCBpbnB1dD1jNTk0OTlmNzI4NDZkYjc4XSovCiB7Ci0gICAgZ2lkX3QgcmdpZCwgZWdpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmVnaWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRyZWdpZChyZ2lkLCBlZ2lkKSA8IDApIHsKKyAgICBpZiAoc2V0cmVnaWQocmdpZCwgZWdpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFJFR0lEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0Z2lkX19kb2NfXywKLSJzZXRnaWQoZ2lkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0Z2lkCisgICAgZ2lkOiBnaWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCBnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzU2Y2I0MmM2YWJkOWQ4NyBpbnB1dD0yN2QzMGM0MDU5MDQ1ZGM2XSovCiB7Ci0gICAgZ2lkX3QgZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0Z2lkKGdpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRHSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRHUk9VUFMKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRncm91cHNfX2RvY19fLAotInNldGdyb3VwcyhsaXN0KVxuXG5cCi1TZXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvIGxpc3QuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRncm91cHMKKworICAgIGdyb3Vwczogb2JqZWN0CisgICAgLworCitTZXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvIGxpc3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRncm91cHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cHMpCitvc19zZXRncm91cHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmdyb3VwcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OTQ1YzJlM2NjODE3YzU4IGlucHV0PWZhNzQyY2EzZGFmODVhN2VdKi8KIHsKICAgICBpbnQgaSwgbGVuOwogICAgIGdpZF90IGdyb3VwbGlzdFtNQVhfR1JPVVBTXTsKQEAgLTY5MzEsODMgKzY4MjcsMTE0IEBACiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUMyB8fCBIQVZFX1dBSVQ0ICovCiAKKwogI2lmZGVmIEhBVkVfV0FJVDMKLVB5RG9jX1NUUlZBUihwb3NpeF93YWl0M19fZG9jX18sCi0id2FpdDMob3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzLCBydXNhZ2UpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdDMKKworICAgIG9wdGlvbnM6IGludAorV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuCisKK1JldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczoKKyAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0MyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc193YWl0M19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcHRpb25zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxOGFmNDkyNGRjNTQ5NDUgaW5wdXQ9OGFjNGM1Njk1NmI2MTcxMF0qLwogewogICAgIHBpZF90IHBpZDsKLSAgICBpbnQgb3B0aW9uczsKICAgICBzdHJ1Y3QgcnVzYWdlIHJ1OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFdBSVRfVFlQRSBzdGF0dXM7CiAgICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOndhaXQzIiwgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0Mygmc3RhdHVzLCBvcHRpb25zLCAmcnUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHBpZCA9IHdhaXQzKCZzdGF0dXMsIG9wdGlvbnMsICZydSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocGlkIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHBpZCA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAogICAgIHJldHVybiB3YWl0X2hlbHBlcihwaWQsIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpLCAmcnUpOwogfQogI2VuZGlmIC8qIEhBVkVfV0FJVDMgKi8KIAorCiAjaWZkZWYgSEFWRV9XQUlUNAotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXQ0X19kb2NfXywKLSJ3YWl0NChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cywgcnVzYWdlKVxuXG5cCi1XYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KKworb3Mud2FpdDQKKworICAgIHBpZDogcGlkX3QKKyAgICBvcHRpb25zOiBpbnQKKworV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIHNwZWNpZmljIGNoaWxkIHByb2Nlc3MuCisKK1JldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczoKKyAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0NChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc193YWl0NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzE0ZjE5ZTZmZjAxZTA5OSBpbnB1dD1kMTFkZWVkMDc1MDYwMGJhXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIGludCBvcHRpb25zOworICAgIHBpZF90IHJlczsKICAgICBzdHJ1Y3QgcnVzYWdlIHJ1OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFdBSVRfVFlQRSBzdGF0dXM7CiAgICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCAmcGlkLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSB3YWl0NChwaWQsICZzdGF0dXMsIG9wdGlvbnMsICZydSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0NChwaWQsICZzdGF0dXMsIG9wdGlvbnMsICZydSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIHJldHVybiB3YWl0X2hlbHBlcihwaWQsIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpLCAmcnUpOworICAgIHJldHVybiB3YWl0X2hlbHBlcihyZXMsIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpLCAmcnUpOwogfQogI2VuZGlmIC8qIEhBVkVfV0FJVDQgKi8KIAorCiAjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRpZF9fZG9jX18sCi0id2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpIC0+IHdhaXRpZF9yZXN1bHRcblxuXAotV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLlxuXG5cCi1pZHR5cGUgY2FuIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG5cCi1pZCBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLlxuXAotb3B0aW9ucyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRFxuXAotb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuXAotUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmVcblwKLW5vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0aWQKKworICAgIGlkdHlwZTogaWR0eXBlX3QKKyAgICAgICAgTXVzdCBiZSBvbmUgb2YgYmUgUF9QSUQsIFBfUEdJRCBvciBQX0FMTC4KKyAgICBpZDogaWRfdAorICAgICAgICBUaGUgaWQgdG8gd2FpdCBvbi4KKyAgICBvcHRpb25zOiBpbnQKKyAgICAgICAgQ29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRUQKKyAgICAgICAgb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULgorICAgIC8KKworUmV0dXJucyB0aGUgcmVzdWx0IG9mIHdhaXRpbmcgZm9yIGEgcHJvY2VzcyBvciBwcm9jZXNzZXMuCisKK1JldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlCitubyBjaGlsZHJlbiBpbiBhIHdhaXRhYmxlIHN0YXRlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd2FpdGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXRpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGlkdHlwZV90IGlkdHlwZSwgaWRfdCBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWMwMTkyNzUwZTIyZmEyZSBpbnB1dD1kOGU3Zjc2ZTA1MmI3OTIwXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpZHR5cGVfdCBpZHR5cGU7Ci0gICAgaWRfdCBpZDsKLSAgICBpbnQgb3B0aW9ucywgcmVzOworICAgIGludCByZXM7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc2lnaW5mb190IHNpOwogICAgIHNpLnNpX3BpZCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gd2FpdGlkKGlkdHlwZSwgaWQsICZzaSwgb3B0aW9ucyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogCiAgICAgaWYgKHNpLnNpX3BpZCA9PSAwKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTcwMjgsNzkgKzY5NTUsMTExIEBACiAKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAqLwogCi0jaWZkZWYgSEFWRV9XQUlUUElECi1QeURvY19TVFJWQVIocG9zaXhfd2FpdHBpZF9fZG9jX18sCi0id2FpdHBpZChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cylcblxuXAotV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGdpdmVuIGNoaWxkIHByb2Nlc3MuIik7CisKKyNpZiBkZWZpbmVkKEhBVkVfV0FJVFBJRCkKKy8qW2NsaW5pYyBpbnB1dF0KK29zLndhaXRwaWQKKyAgICBwaWQ6IHBpZF90CisgICAgb3B0aW9uczogaW50CisgICAgLworCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgY2hpbGQgcHJvY2VzczoKKyAgICAocGlkLCBzdGF0dXMpCisKK1RoZSBvcHRpb25zIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXRwaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfd2FpdHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWUzNTkzMzUzZDU0YjE1YiBpbnB1dD0wYmYxNjY2Yjg3NThmZGEzXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIGludCBvcHRpb25zOworICAgIHBpZF90IHJlczsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBXQUlUX1RZUEUgc3RhdHVzOwogICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLCAmcGlkLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0cGlkKHBpZCwgJnN0YXR1cywgb3B0aW9ucyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGlkID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gd2FpdHBpZChwaWQsICZzdGF0dXMsIG9wdGlvbnMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5pIiwgUHlMb25nX0Zyb21QaWQocmVzKSwgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpOwogfQotCiAjZWxpZiBkZWZpbmVkKEhBVkVfQ1dBSVQpCi0KIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KLVB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKLSJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzIDw8IDgpXG5cbiIKLSJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gcHJvY2Vzcy4gIG9wdGlvbnMgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdHBpZAorICAgIHBpZDogUHlfaW50cHRyX3QKKyAgICBvcHRpb25zOiBpbnQKKyAgICAvCisKK1dhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBwcm9jZXNzLgorCitSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cyA8PCA4KQorCitUaGUgb3B0aW9ucyBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0cGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZjMWQ1MjBkYjAxOTYyNWYgaW5wdXQ9NDQ0YzhmNTFjY2E1Yjg2Ml0qLwogewotICAgIFB5X2ludHB0cl90IHBpZDsKLSAgICBpbnQgc3RhdHVzLCBvcHRpb25zOworICAgIGludCBzdGF0dXM7CisgICAgUHlfaW50cHRyX3QgcmVzOworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsICZwaWQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IF9jd2FpdCgmc3RhdHVzLCBwaWQsIG9wdGlvbnMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHBpZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IF9jd2FpdCgmc3RhdHVzLCBwaWQsIG9wdGlvbnMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICAvKiBzaGlmdCB0aGUgc3RhdHVzIGxlZnQgYSBieXRlIHNvIHRoaXMgaXMgbW9yZSBsaWtlIHRoZSBQT1NJWCB3YWl0cGlkICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoX1B5X1BBUlNFX0lOVFBUUiAiaSIsIHBpZCwgc3RhdHVzIDw8IDgpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKF9QeV9QQVJTRV9JTlRQVFIgImkiLCByZXMsIHN0YXR1cyA8PCA4KTsKIH0KLSNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgfHwgSEFWRV9DV0FJVCAqLworI2VuZGlmCisKIAogI2lmZGVmIEhBVkVfV0FJVAotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRfX2RvY19fLAotIndhaXQoKSAtPiAocGlkLCBzdGF0dXMpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdAorCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cykKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc193YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTdmNDk3ODM5M2UwNjU0IGlucHV0PTAzYjAxODJkNGE0NzAwY2VdKi8KIHsKICAgICBwaWRfdCBwaWQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcGlkID0gd2FpdCgmc3RhdHVzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChwaWQgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBwaWQgPSB3YWl0KCZzdGF0dXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHBpZCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChwaWQgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1dBSVQgKi8KIAogCiAjaWYgZGVmaW5lZChIQVZFX1JFQURMSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC03MTE2LDYgKzcwNzUsNyBAQAogCiAjaWZkZWYgSEFWRV9SRUFETElOSwogCisvKiBBQyAzLjU6IG1lcmdlIHdpbjMyIGFuZCBub3QgdG9nZXRoZXIgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CkBAIC03MTMwLDEyICs3MDkwLDcgQEAKICAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicmVhZGxpbmsiOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0jaWZkZWYgSEFWRV9SRUFETElOS0FUCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQURMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNzE2MSwyMyArNzExNiw4NiBAQAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLQogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KIAorI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgd2NoYXJfdCAqcGF0aDsKKyAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOworICAgIERXT1JEIGlvX3Jlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CisgICAgICAgIGludCBkaXJfZmQ7CisgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOworCisgICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CisgICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVXwkTyY6cmVhZGxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBGaXJzdCBnZXQgYSBoYW5kbGUgdG8gdGhlIHJlcGFyc2UgcG9pbnQgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVwYXJzZV9wb2ludF9oYW5kbGUgPSBDcmVhdGVGaWxlVygKKyAgICAgICAgcGF0aCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgT1BFTl9FWElTVElORywKKyAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKKyAgICAgICAgMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXBhcnNlX3BvaW50X2hhbmRsZT09SU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIC8qIE5ldyBjYWxsIERldmljZUlvQ29udHJvbCB0byByZWFkIHRoZSByZXBhcnNlIHBvaW50ICovCisgICAgaW9fcmVzdWx0ID0gRGV2aWNlSW9Db250cm9sKAorICAgICAgICByZXBhcnNlX3BvaW50X2hhbmRsZSwKKyAgICAgICAgRlNDVExfR0VUX1JFUEFSU0VfUE9JTlQsCisgICAgICAgIDAsIDAsIC8qIGluIGJ1ZmZlciAqLworICAgICAgICB0YXJnZXRfYnVmZmVyLCBzaXplb2YodGFyZ2V0X2J1ZmZlciksCisgICAgICAgICZuX2J5dGVzX3JldHVybmVkLAorICAgICAgICAwIC8qIHdlJ3JlIG5vdCB1c2luZyBPVkVSTEFQUEVEX0lPICovCisgICAgICAgICk7CisgICAgQ2xvc2VIYW5kbGUocmVwYXJzZV9wb2ludF9oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaW9fcmVzdWx0PT0wKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKKworICAgIGlmIChyZGItPlJlcGFyc2VUYWcgIT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykKKyAgICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub3QgYSBzeW1ib2xpYyBsaW5rIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwcmludF9uYW1lID0gcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKworICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lT2Zmc2V0OworCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwcmludF9uYW1lLAorICAgICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lTGVuZ3RoLzIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKwogCiAjaWZkZWYgSEFWRV9TWU1MSU5LCi1QeURvY19TVFJWQVIocG9zaXhfc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblxuXAotdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcblwKLSAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuXAotICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKVxuXAotICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCkBAIC03MzIzLDE4OSArNzM0MSwxMDIgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KICNlbmRpZgogCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5bWxpbmsKKyAgICBzcmM6IHBhdGhfdAorICAgIGRzdDogcGF0aF90CisgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeTogYm9vbCA9IEZhbHNlCisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdzeW1saW5rYXQnKT1Ob25lCisKKyMgInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK0NyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC4KKwordGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmUKKyAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlcworICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKQorICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5bWxpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnksIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTAxYjRiY2YzMjQwM2NjZCBpbnB1dD1lODIwZWM0NDcyNTQ3YmMzXSovCiB7Ci0gICAgcGF0aF90IHNyYzsKLSAgICBwYXRoX3QgZHN0OwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIHJlc3VsdDsKICNlbHNlCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKLSAgICBzcmMuZnVuY3Rpb25fbmFtZSA9ICJzeW1saW5rIjsKLSAgICBzcmMuYXJndW1lbnRfbmFtZSA9ICJzcmMiOwotICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7Ci0gICAgZHN0LmZ1bmN0aW9uX25hbWUgPSAic3ltbGluayI7Ci0gICAgZHN0LmFyZ3VtZW50X25hbWUgPSAiZHN0IjsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGluaygpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGluayBmdW5jdGlvbnMgbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgaWYgKCF3aW4zMl9jYW5fc3ltbGluaykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInN5bWJvbGljIGxpbmsgcHJpdmlsZWdlIG5vdCBoZWxkIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8aSRPJjpzeW1saW5rIiwKLSAgICAgICAgICAgIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKLSAgICAgICAgICAgICZ0YXJnZXRfaXNfZGlyZWN0b3J5LAotI2lmZGVmIEhBVkVfU1lNTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAic3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChkc3Qud2lkZSkgeworICAgIGlmIChkc3QtPndpZGUpIHsKICAgICAgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLwotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy53aWRlLCBkc3Qud2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LndpZGUsIHNyYy53aWRlLAorICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyQShzcmMubmFycm93LCBkc3QubmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LAorICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJBKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAKICNlbHNlCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWYgSEFWRV9TWU1MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBzeW1saW5rYXQoc3JjLm5hcnJvdywgZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gc3ltbGlua2F0KHNyYy0+bmFycm93LCBkaXJfZmQsIGRzdC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gc3ltbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gc3ltbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZW5kaWYKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIGdvdG8gZXhpdDsgLyogc2lsZW5jZSAidW51c2VkIGxhYmVsIiB3YXJuaW5nICovCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKLSAgICBwYXRoX2NsZWFudXAoJmRzdCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLQogI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwogCiAKLSNpZiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHdjaGFyX3QgKnBhdGg7Ci0gICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKLSAgICBEV09SRCBpb19yZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOwotICAgIEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZTsKLQotICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07Ci0gICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwotICAgIHdjaGFyX3QgKnByaW50X25hbWU7Ci0KLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlV8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogRmlyc3QgZ2V0IGEgaGFuZGxlIHRvIHRoZSByZXBhcnNlIHBvaW50ICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcGFyc2VfcG9pbnRfaGFuZGxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlR8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCi0gICAgICAgIDApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVwYXJzZV9wb2ludF9oYW5kbGU9PUlOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAvKiBOZXcgY2FsbCBEZXZpY2VJb0NvbnRyb2wgdG8gcmVhZCB0aGUgcmVwYXJzZSBwb2ludCAqLwotICAgIGlvX3Jlc3VsdCA9IERldmljZUlvQ29udHJvbCgKLSAgICAgICAgcmVwYXJzZV9wb2ludF9oYW5kbGUsCi0gICAgICAgIEZTQ1RMX0dFVF9SRVBBUlNFX1BPSU5ULAotICAgICAgICAwLCAwLCAvKiBpbiBidWZmZXIgKi8KLSAgICAgICAgdGFyZ2V0X2J1ZmZlciwgc2l6ZW9mKHRhcmdldF9idWZmZXIpLAotICAgICAgICAmbl9ieXRlc19yZXR1cm5lZCwKLSAgICAgICAgMCAvKiB3ZSdyZSBub3QgdXNpbmcgT1ZFUkxBUFBFRF9JTyAqLwotICAgICAgICApOwotICAgIENsb3NlSGFuZGxlKHJlcGFyc2VfcG9pbnRfaGFuZGxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGlvX3Jlc3VsdD09MCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7Ci0KLSAgICBpZiAocmRiLT5SZXBhcnNlVGFnICE9IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspCi0gICAgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAibm90IGEgc3ltYm9saWMgbGluayIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcHJpbnRfbmFtZSA9IHJkYi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsKLSAgICAgICAgICAgICAgICAgcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlByaW50TmFtZU9mZnNldDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHJpbnRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlByaW50TmFtZUxlbmd0aC8yKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRpbWVzX3Jlc3VsdF9maWVsZHNbXSA9IHsKQEAgLTc1NzEsMTUgKzc1MDIsMjYgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCi0idGltZXMoKSAtPiB0aW1lc19yZXN1bHRcblxuXAotUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzXG5cCi10aW1lcy4gIFRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG5cCi0gICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpIik7CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZuZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECitzdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisvKltjbGluaWMgaW5wdXRdCitvcy50aW1lcworCitSZXR1cm4gYSBjb2xsZWN0aW9uIGNvbnRhaW5pbmcgcHJvY2VzcyB0aW1pbmcgaW5mb3JtYXRpb24uCisKK1RoZSBvYmplY3QgcmV0dXJuZWQgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6CisgICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpCitBbGwgZmllbGRzIGFyZSBmbG9hdGluZyBwb2ludCBudW1iZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc190aW1lc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYwYTYzZWJlNmU2ZjA5MSBpbnB1dD0yYmY5ZGYzZDZhYjJlNDhiXSovCisjaWZkZWYgTVNfV0lORE9XUwogewogICAgIEZJTEVUSU1FIGNyZWF0ZSwgZXhpdCwga2VybmVsLCB1c2VyOwogICAgIEhBTkRMRSBoUHJvYzsKQEAgLTc1OTksMTIgKzc1NDEsMTAgQEAKICAgICAgICAgKGRvdWJsZSkwLAogICAgICAgICAoZG91YmxlKTApOwogfQotI2Vsc2UgLyogTm90IFdpbmRvd3MgKi8KLSNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECi1zdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7Ci1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCisjZWxzZSAvKiBNU19XSU5ET1dTICovCiB7CisKKwogICAgIHN0cnVjdCB0bXMgdDsKICAgICBjbG9ja190IGM7CiAgICAgZXJybm8gPSAwOwpAQCAtNzYxOCwyMyArNzU1OCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWMgLyB0aWNrc19wZXJfc2Vjb25kKTsKIH0KLSNlbmRpZgotCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRTSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRzaWRfX2RvY19fLAotImdldHNpZChwaWQpIC0+IHNpZFxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRzaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHNpZAorCisgICAgcGlkOiBwaWRfdAorICAgIC8KKworQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0c2lkKHBpZCkgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0c2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2dldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDc0ZjgwYzBlNmJmYjM4IGlucHV0PWVlYjJiOTIzYTMwY2UwNGVdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHNpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzaWQgPSBnZXRzaWQocGlkKTsKICAgICBpZiAoc2lkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC03NjQ0LDUzICs3NTg2LDYwIEBACiAKIAogI2lmZGVmIEhBVkVfU0VUU0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0c2lkX19kb2NfXywKLSJzZXRzaWQoKVxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHNpZAorCitDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHNpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3NldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzk4ZmMxNTJhZTMyNzMzMCBpbnB1dD01ZmZmNDU4NThlMmYwNzc2XSovCiB7CiAgICAgaWYgKHNldHNpZCgpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUU0lEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUUEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHBnaWRfX2RvY19fLAotInNldHBnaWQocGlkLCBwZ3JwKVxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRwZ2lkKCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRwZ2lkCisKKyAgICBwaWQ6IHBpZF90CisgICAgcGdycDogcGlkX3QKKyAgICAvCisKK0NhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHBnaWQocGlkLCBwZ3JwKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHBnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgcGlkX3QgcGdycCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MDc5YThlOTMyOTEyODQxIGlucHV0PWZjZWIzOTVlY2E1NzJlMWFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IHBncnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6c2V0cGdpZCIsICZwaWQsICZwZ3JwKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHBnaWQocGlkLCBwZ3JwKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFBHSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9UQ0dFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF90Y2dldHBncnBfX2RvY19fLAotInRjZ2V0cGdycChmZCkgLT4gcGdpZFxuXG5cCi1SZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBnaXZlbiBieSBhIGZkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudGNnZXRwZ3JwCisKKyAgICBmZDogaW50CisgICAgLworCitSZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90Y2dldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdGNnZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViYjZkYzVmMTExYzdkYzAgaW5wdXQ9N2Y2YzE4ZWFjMTBhZGE4Nl0qLwogewotICAgIGludCBmZDsKLSAgICBwaWRfdCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp0Y2dldHBncnAiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwZ2lkID0gdGNnZXRwZ3JwKGZkKTsKKyAgICBwaWRfdCBwZ2lkID0gdGNnZXRwZ3JwKGZkKTsKICAgICBpZiAocGdpZCA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwZ2lkKTsKQEAgLTc2OTksMjEgKzc2NDgsMjMgQEAKIAogCiAjaWZkZWYgSEFWRV9UQ1NFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF90Y3NldHBncnBfX2RvY19fLAotInRjc2V0cGdycChmZCwgcGdpZClcblxuXAotU2V0IHRoZSBwcm9jZXNzIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGVybWluYWwgZ2l2ZW4gYnkgYSBmZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnRjc2V0cGdycAorCisgICAgZmQ6IGludAorICAgIHBnaWQ6IHBpZF90CisgICAgLworCitTZXQgdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90Y3NldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdGNzZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBwaWRfdCBwZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlNGIwNTE3NzQ2MmNkMjIgaW5wdXQ9NWJkYzk5N2M2YTYxOTAyMF0qLwogewotICAgIGludCBmZDsKLSAgICBwaWRfdCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiOnRjc2V0cGdycCIsICZmZCwgJnBnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodGNzZXRwZ3JwKGZkLCBwZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwogCkBAIC03NzIzLDE1OCArNzY3NCwxNjYgQEAKIGV4dGVybiBpbnQgX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfb3Blbl9fZG9jX18sCi0ib3BlbihwYXRoLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLU9wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBoYW5kbGUgKGludGVnZXIpLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5vcGVuIC0+IGludAorICAgIHBhdGg6IHBhdGhfdAorICAgIGZsYWdzOiBpbnQKKyAgICBtb2RlOiBpbnQgPSAwbzc3NworICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nb3BlbmF0JykgPSBOb25lCisKKyMgIm9wZW4ocGF0aCwgZmxhZ3MsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK09wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIChpbnRlZ2VyKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3Nfb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwKKyAgICAgICAgICAgICBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3ZThjYzYzNTU5ZjVkZGQgaW5wdXQ9YWQ4NjIzYjI5YWNkMjkzNF0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBmbGFnczsKLSAgICBpbnQgbW9kZSA9IDA3Nzc7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmZDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCBhc3luY19lcnIgPSAwOworCiAjaWZkZWYgT19DTE9FWEVDCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrcyA9ICZfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VsaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzID0gTlVMTDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJvcGVuIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJmZsYWdzLCAmbW9kZSwKLSNpZmRlZiBIQVZFX09QRU5BVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBmbGFncyB8PSBPX05PSU5IRVJJVDsKICNlbGlmIGRlZmluZWQoT19DTE9FWEVDKQogICAgIGZsYWdzIHw9IE9fQ0xPRVhFQzsKICNlbmRpZgogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgZmQgPSBfd29wZW4ocGF0aC53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9PUEVOQVQKLSAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICAgICAgZmQgPSBvcGVuYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGZkID0gb3BlbihwYXRoLm5hcnJvdywgZmxhZ3MsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aC0+bmFycm93LCBmbGFncywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCi0gICAgaWYgKGZkID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoLm9iamVjdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIGlmICghYXN5bmNfZXJyKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHBhdGgtPm9iamVjdCk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICNpZm5kZWYgTVNfV0lORE9XUwogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCAwLCBhdG9taWNfZmxhZ193b3JrcykgPCAwKSB7CiAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICByZXR1cm4gZmQ7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jbG9zZV9fZG9jX18sCi0iY2xvc2UoZmQpXG5cblwKLUNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yIChmb3IgbG93IGxldmVsIElPKS4iKTsKIAotLyoKLVRoZSB1bmRlcnNjb3JlIGF0IGVuZCBvZiBmdW5jdGlvbiBuYW1lIGF2b2lkcyBhIG5hbWUgY2xhc2ggd2l0aCB0aGUgbGliYwotZnVuY3Rpb24gcG9zaXhfY2xvc2UuCi0qLworLypbY2xpbmljIGlucHV0XQorb3MuY2xvc2UKKworICAgIGZkOiBpbnQKKworQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jbG9zZV8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfY2xvc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDdiZjJlYTUzNjQ0NWEyNiBpbnB1dD0yYmM0MjQ1MWNhNWMzMjIzXSovCiB7Ci0gICAgaW50IGZkLCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmNsb3NlIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW50IHJlczsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCisgICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICogZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlcyA9IGNsb3NlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfY2xvc2VyYW5nZV9fZG9jX18sCi0iY2xvc2VyYW5nZShmZF9sb3csIGZkX2hpZ2gpXG5cblwKLUNsb3NlcyBhbGwgZmlsZSBkZXNjcmlwdG9ycyBpbiBbZmRfbG93LCBmZF9oaWdoKSwgaWdub3JpbmcgZXJyb3JzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2xvc2VyYW5nZQorCisgICAgZmRfbG93OiBpbnQKKyAgICBmZF9oaWdoOiBpbnQKKyAgICAvCisKK0Nsb3NlcyBhbGwgZmlsZSBkZXNjcmlwdG9ycyBpbiBbZmRfbG93LCBmZF9oaWdoKSwgaWdub3JpbmcgZXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2xvc2VyYW5nZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jbG9zZXJhbmdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkX2xvdywgaW50IGZkX2hpZ2gpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzBlNmFkYjk1MjIwYmE5NiBpbnB1dD01ODU1YTNkMDUzZWJkNGVjXSovCiB7Ci0gICAgaW50IGZkX2Zyb20sIGZkX3RvLCBpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Y2xvc2VyYW5nZSIsICZmZF9mcm9tLCAmZmRfdG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZm9yIChpID0gZmRfZnJvbTsgaSA8IGZkX3RvOyBpKyspCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKICAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKICAgICAgICAgICAgIGNsb3NlKGkpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfZHVwX19kb2NfXywKLSJkdXAoZmQpIC0+IGZkMlxuXG5cCi1SZXR1cm4gYSBkdXBsaWNhdGUgb2YgYSBmaWxlIGRlc2NyaXB0b3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5kdXAgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kdXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICAvCisKK1JldHVybiBhIGR1cGxpY2F0ZSBvZiBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfZHVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0YmJhYzhjNzY1MmQwNWUgaW5wdXQ9NmYxMGY3ZWE5N2Y3ODUyYV0qLwogewotICAgIGludCBmZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpkdXAiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZkID0gX1B5X2R1cChmZCk7Ci0gICAgaWYgKGZkID09IC0xKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOworICAgIHJldHVybiBfUHlfZHVwKGZkKTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfZHVwMl9fZG9jX18sCi0iZHVwMihvbGRfZmQsIG5ld19mZClcblxuXAotRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmR1cDIKKyAgICBmZDogaW50CisgICAgZmQyOiBpbnQKKyAgICBpbmhlcml0YWJsZTogYm9vbD1UcnVlCisKK0R1cGxpY2F0ZSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kdXAyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2R1cDJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBmZDIsIGludCBpbmhlcml0YWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTA5OWQ5NTg4MWE3OTIzIGlucHV0PTc2ZTk2ZjUxMWJlMDM1MmZdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07Ci0gICAgaW50IGZkLCBmZDI7Ci0gICAgaW50IGluaGVyaXRhYmxlID0gMTsKICAgICBpbnQgcmVzOwogI2lmIGRlZmluZWQoSEFWRV9EVVAzKSAmJiBcCiAgICAgIShkZWZpbmVkKEhBVkVfRkNOVExfSCkgJiYgZGVmaW5lZChGX0RVUDJGRF9DTE9FWEVDKSkKQEAgLTc4ODIsMTYgKzc4NDEsMTggQEAKICAgICBpbnQgZHVwM193b3JrcyA9IC0xOwogI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxpOmR1cDIiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFfUHlWZXJpZnlfZmRfZHVwMihmZCwgZmQyKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKKyAgICAvKiBkdXAyKCkgY2FuIGZhaWwgd2l0aCBFSU5UUiBpZiB0aGUgdGFyZ2V0IEZEIGlzIGFscmVhZHkgb3BlbiwgYmVjYXVzZSBpdAorICAgICAqIHRoZW4gaGFzIHRvIGJlIGNsb3NlZC4gU2VlIG9zX2Nsb3NlX2ltcGwoKSBmb3Igd2h5IHdlIGRvbid0IGhhbmRsZSBFSU5UUgorICAgICAqIHVwb24gY2xvc2UoKSwgYW5kIHRoZXJlZm9yZSBiZWxvdy4KKyAgICAgKi8KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXMgPSBkdXAyKGZkLCBmZDIpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC03OTQ2LDMwICs3OTA3LDM0IEBACiAKICNlbmRpZgogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisKICNpZmRlZiBIQVZFX0xPQ0tGCi1QeURvY19TVFJWQVIocG9zaXhfbG9ja2ZfX2RvY19fLAotImxvY2tmKGZkLCBjbWQsIGxlbilcblxuXAotQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblxuXAotZmQgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1jbWQgc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIHVzZSAtIG9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3JcblwKLUZfVEVTVC5cblwKLWxlbiBzcGVjaWZpZXMgdGhlIHNlY3Rpb24gb2YgdGhlIGZpbGUgdG8gbG9jay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxvY2tmCisKKyAgICBmZDogaW50CisgICAgICAgIEFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgIGNvbW1hbmQ6IGludAorICAgICAgICBPbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yIEZfVEVTVC4KKyAgICBsZW5ndGg6IFB5X29mZl90CisgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uCisgICAgLworCitBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sb2NrZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sb2NrZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvbW1hbmQsIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWZmNzc4ZjllMmZiZjFiIGlucHV0PTY1ZGE0MWQyMTA2ZTliNzldKi8KIHsKLSAgICBpbnQgZmQsIGNtZCwgcmVzOwotICAgIG9mZl90IGxlbjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6bG9ja2YiLAotICAgICAgICAgICAgJmZkLCAmY21kLCBfcGFyc2Vfb2ZmX3QsICZsZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGxvY2tmKGZkLCBjbWQsIGxlbik7CisgICAgcmVzID0gbG9ja2YoZmQsIGNvbW1hbmQsIGxlbmd0aCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXMgPCAwKQpAQCAtNzk3Nyw5NSArNzk0MiwxMDUgQEAKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MT0NLRiAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9sc2Vla19fZG9jX18sCi0ibHNlZWsoZmQsIHBvcywgaG93KSAtPiBuZXdwb3NcblxuXAotU2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIGEgZmlsZSBkZXNjcmlwdG9yLlxuXAotUmV0dXJuIHRoZSBuZXcgY3Vyc29yIHBvc2l0aW9uIGluIGJ5dGVzLCBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sc2VlayAtPiBQeV9vZmZfdAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbHNlZWsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICBwb3NpdGlvbjogUHlfb2ZmX3QKKyAgICBob3c6IGludAorICAgIC8KKworU2V0IHRoZSBwb3NpdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybiB0aGUgbmV3IHBvc2l0aW9uLgorCitSZXR1cm4gdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gaW4gbnVtYmVyIG9mIGJ5dGVzCityZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfb2ZmX3QKK29zX2xzZWVrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBwb3NpdGlvbiwgaW50IGhvdykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NWQ0YWI5NmQ2NjQ5OThjIGlucHV0PTkwMjY1NGFkM2Y5NmE2ZDNdKi8KIHsKLSAgICBpbnQgZmQsIGhvdzsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUFlfTE9OR19MT05HIHBvcywgcmVzOwotI2Vsc2UKLSAgICBvZmZfdCBwb3MsIHJlczsKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpwb3NvYmo7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT2k6bHNlZWsiLCAmZmQsICZwb3NvYmosICZob3cpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9vZmZfdCByZXN1bHQ7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7Ci0gICAgY2FzZSAwOiBob3cgPSBTRUVLX1NFVDsgYnJlYWs7Ci0gICAgY2FzZSAxOiBob3cgPSBTRUVLX0NVUjsgYnJlYWs7Ci0gICAgY2FzZSAyOiBob3cgPSBTRUVLX0VORDsgYnJlYWs7CisgICAgICAgIGNhc2UgMDogaG93ID0gU0VFS19TRVQ7IGJyZWFrOworICAgICAgICBjYXNlIDE6IGhvdyA9IFNFRUtfQ1VSOyBicmVhazsKKyAgICAgICAgY2FzZSAyOiBob3cgPSBTRUVLX0VORDsgYnJlYWs7CiAgICAgfQogI2VuZGlmIC8qIFNFRUtfRU5EICovCiAKLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIHBvcyA9IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKLSNlbHNlCi0gICAgcG9zID0gUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKTsKLSNlbmRpZgogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgaG93KTsKKyAgICByZXN1bHQgPSBfbHNlZWtpNjQoZmQsIHBvc2l0aW9uLCBob3cpOwogI2Vsc2UKLSAgICByZXMgPSBsc2VlayhmZCwgcG9zLCBob3cpOworICAgIHJlc3VsdCA9IGxzZWVrKGZkLCBwb3NpdGlvbiwgaG93KTsKICNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAKLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcocmVzKTsKLSNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWRfX2RvY19fLAotInJlYWQoZmQsIGJ1ZmZlcnNpemUpIC0+IGJ5dGVzXG5cblwKLVJlYWQgYSBmaWxlIGRlc2NyaXB0b3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5yZWFkCisgICAgZmQ6IGludAorICAgIGxlbmd0aDogUHlfc3NpemVfdAorICAgIC8KKworUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLiAgUmV0dXJucyBhIGJ5dGVzIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfc3NpemVfdCBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUyNGY0NDE3ODQ1NWU4YiBpbnB1dD0xZGYyZWFhMjdjMGJmMWQzXSovCiB7Ci0gICAgaW50IGZkLCBzaXplOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6cmVhZCIsICZmZCwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA8IDApIHsKKworICAgIGlmIChsZW5ndGggPCAwKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICB9Ci0gICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHNpemUpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBjb3VudCBwYXJhbWV0ZXIgb2YgcmVhZCgpIGlzIGFuIGludCAqLworICAgIGlmIChsZW5ndGggPiBJTlRfTUFYKQorICAgICAgICBsZW5ndGggPSBJTlRfTUFYOworI2VuZGlmCisKKyAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworCisgICAgbiA9IF9QeV9yZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBsZW5ndGgpOworICAgIGlmIChuID09IC0xKSB7CiAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAobiA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KLSAgICBpZiAobiAhPSBzaXplKQorCisgICAgaWYgKG4gIT0gbGVuZ3RoKQogICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgbik7CisKICAgICByZXR1cm4gYnVmZmVyOwogfQogCkBAIC04MTI3LDEyMCArODEwMiwxMzUgQEAKIH0KICNlbmRpZgogCi0jaWZkZWYgSEFWRV9SRUFEVgotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWR2X19kb2NfXywKLSJyZWFkdihmZCwgYnVmZmVycykgLT4gYnl0ZXNyZWFkXG5cblwKLVJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBmZCBpbnRvIGEgbnVtYmVyIG9mIG11dGFibGUsIGJ5dGVzLWxpa2VcblwKLW9iamVjdHMgKFwiYnVmZmVyc1wiKS4gIHJlYWR2IHdpbGwgdHJhbnNmZXIgZGF0YSBpbnRvIGVhY2ggYnVmZmVyXG5cCi11bnRpbCBpdCBpcyBmdWxsIGFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgYnVmZmVyIGluIHRoZSBzZXF1ZW5jZVxuXAotdG8gaG9sZCB0aGUgcmVzdCBvZiB0aGUgZGF0YS5cblxuXAotcmVhZHYgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKHdoaWNoIG1heSBiZSBsZXNzIHRoYW5cblwKLXRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZWFkdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisjaWZkZWYgSEFWRV9SRUFEVgorLypbY2xpbmljIGlucHV0XQorb3MucmVhZHYgLT4gUHlfc3NpemVfdAorCisgICAgZmQ6IGludAorICAgIGJ1ZmZlcnM6IG9iamVjdAorICAgIC8KKworUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGZkIGludG8gYW4gaXRlcmFibGUgb2YgYnVmZmVycy4KKworVGhlIGJ1ZmZlcnMgc2hvdWxkIGJlIG11dGFibGUgYnVmZmVycyBhY2NlcHRpbmcgYnl0ZXMuCityZWFkdiB3aWxsIHRyYW5zZmVyIGRhdGEgaW50byBlYWNoIGJ1ZmZlciB1bnRpbCBpdCBpcyBmdWxsCithbmQgdGhlbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IGJ1ZmZlciBpbiB0aGUgc2VxdWVuY2UgdG8gaG9sZAordGhlIHJlc3Qgb2YgdGhlIGRhdGEuCisKK3JlYWR2IHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkLAord2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGUgdG90YWwgY2FwYWNpdHkgb2YgYWxsIHRoZSBidWZmZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcmVhZHZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5T2JqZWN0ICpidWZmZXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwZmM1NmZmMTgwMDA1OWYgaW5wdXQ9ZTY3OWViNWRiZmEwMzU3ZF0qLwogewotICAgIGludCBmZCwgY250OworICAgIGludCBjbnQ7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIFB5T2JqZWN0ICpzZXE7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc3RydWN0IGlvdmVjICppb3Y7CiAgICAgUHlfYnVmZmVyICpidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwgJmZkLCAmc2VxKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soYnVmZmVycykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJyZWFkdigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKIAotICAgIGlmIChpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1dSSVRBQkxFKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShidWZmZXJzKTsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChpb3Zfc2V0dXAoJmlvdiwgJmJ1ZiwgYnVmZmVycywgY250LCBQeUJVRl9XUklUQUJMRSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgbiA9IHJlYWR2KGZkLCBpb3YsIGNudCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogCiAgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7Ci0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgaWYgKCFhc3luY19lcnIpCisgICAgICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKKyAgICByZXR1cm4gbjsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfUkVBRFYgKi8KKwogCiAjaWZkZWYgSEFWRV9QUkVBRAotUHlEb2NfU1RSVkFSKHBvc2l4X3ByZWFkX19kb2NfXywKLSJwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KSAtPiBzdHJpbmdcblxuXAotUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgYXQgYSBwb3NpdGlvbiBvZiBvZmZzZXQuIEl0IHdpbGwgcmVhZCB1cFxuXAotdG8gYnVmZmVyc2l6ZSBudW1iZXIgb2YgYnl0ZXMuIFRoZSBmaWxlIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KKyMgVE9ETyBsZW5ndGggc2hvdWxkIGJlIHNpemVfdCEgIGJ1dCBQeXRob24gZG9lc24ndCBzdXBwb3J0IHBhcnNpbmcgc2l6ZV90IHlldC4KK29zLnByZWFkCisKKyAgICBmZDogaW50CisgICAgbGVuZ3RoOiBpbnQKKyAgICBvZmZzZXQ6IFB5X29mZl90CisgICAgLworCitSZWFkIGEgbnVtYmVyIG9mIGJ5dGVzIGZyb20gYSBmaWxlIGRlc2NyaXB0b3Igc3RhcnRpbmcgYXQgYSBwYXJ0aWN1bGFyIG9mZnNldC4KKworUmVhZCBsZW5ndGggYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgZmQsIHN0YXJ0aW5nIGF0IG9mZnNldCBieXRlcyBmcm9tCit0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHJlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfcHJlYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBsZW5ndGgsIFB5X29mZl90IG9mZnNldCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MGQxZmVkODdmNjhmYTMzIGlucHV0PTA4NDk0OGRjYmFhMzVkNGNdKi8KIHsKLSAgICBpbnQgZmQsIHNpemU7Ci0gICAgb2ZmX3Qgb2Zmc2V0OwogICAgIFB5X3NzaXplX3QgbjsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsICZmZCwgJnNpemUsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNpemUgPCAwKSB7CisgICAgaWYgKGxlbmd0aCA8IDApIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KLSAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgc2l6ZSk7CisgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbmd0aCk7CiAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgbiA9IHByZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBzaXplLCBvZmZzZXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBuID0gcHJlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIGxlbmd0aCwgb2Zmc2V0KTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgfQotICAgIGlmIChuICE9IHNpemUpCisgICAgaWYgKG4gIT0gbGVuZ3RoKQogICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgbik7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfUFJFQUQgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3dyaXRlX19kb2NfXywKLSJ3cml0ZShmZCwgZGF0YSkgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorb3Mud3JpdGUgLT4gUHlfc3NpemVfdAorCisgICAgZmQ6IGludAorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gYSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc193cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4ODQ1YzkzYzllZTFkZGEgaW5wdXQ9MzIwN2UyODk2MzIzNGYzY10qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGludCBmZDsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGxlbjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwgJmZkLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQotICAgIGxlbiA9IHBidWYubGVuOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgc2l6ZSA9IHdyaXRlKGZkLCBwYnVmLmJ1ZiwgKGludClsZW4pOwotI2Vsc2UKLSAgICBzaXplID0gd3JpdGUoZmQsIHBidWYuYnVmLCBsZW4pOwotI2VuZGlmCi0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CisgICAgcmV0dXJuIF9QeV93cml0ZShmZCwgZGF0YS0+YnVmLCBkYXRhLT5sZW4pOwogfQogCiAjaWZkZWYgSEFWRV9TRU5ERklMRQpAQCAtODI1MCwxMSArODI0MCwxMyBAQAogICAgICAgICAgICAgLT4gYnl0ZXN3cml0dGVuXG5cCiBDb3B5IGNvdW50IGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGluIHRvIGZpbGUgZGVzY3JpcHRvciBvdXQuIik7CiAKKy8qIEFDIDMuNTogZG9uJ3QgYm90aGVyIGNvbnZlcnRpbmcsIGhhcyBvcHRpb25hbCBncm91cCovCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfc2VuZGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewogICAgIGludCBpbiwgb3V0OwogICAgIFB5X3NzaXplX3QgcmV0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIG9mZl90IG9mZnNldDsKIAogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCkBAIC04Mjc2LDEwICs4MjY4LDEwIEBACiAKICNpZmRlZiBfX0FQUExFX18KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKLSAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmc2J5dGVzLAogI2Vsc2UKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mbnxPT2k6c2VuZGZpbGUiLAotICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsICZsZW4sCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgJmxlbiwKICNlbmRpZgogICAgICAgICAgICAgICAgICZoZWFkZXJzLCAmdHJhaWxlcnMsICZmbGFncykpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTgzMTgsMTMgKzgzMTAsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgX19BUFBMRV9fCi0gICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKKyAgICAgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKICNlbHNlCi0gICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCBsZW4sICZzZiwgJnNieXRlcywgZmxhZ3MpOworICAgICAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsIGxlbiwgJnNmLCAmc2J5dGVzLCBmbGFncyk7CiAjZW5kaWYKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJldCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICBpZiAoc2YuaGVhZGVycyAhPSBOVUxMKQogICAgICAgICBpb3ZfY2xlYW51cChzZi5oZWFkZXJzLCBoYnVmLCBzZi5oZHJfY250KTsKQEAgLTgzNDMsNyArODMzOSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICB9CiAgICAgZ290byBkb25lOwogCkBAIC04MzY0LDc2ICs4MzYwLDEwNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICNpZmRlZiBsaW51eAogICAgIGlmIChvZmZvYmogPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sIE5VTEwsIGNvdW50KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZG8geworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJuIiwgcmV0KTsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoIV9wYXJzZV9vZmZfdChvZmZvYmosICZvZmZzZXQpKQorICAgIGlmICghUHlfb2ZmX3RfY29udmVydGVyKG9mZm9iaiwgJm9mZnNldCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOwogI2VuZGlmCiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdF9fZG9jX18sCi0iZnN0YXQoZmQpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotRXF1aXZhbGVudCB0byBzdGF0KGZkPWZkKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZnN0YXQKKworICAgIGZkIDogaW50CisKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCisKK0xpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZzdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3MWZlOThiZjA0MmI2MjYgaW5wdXQ9MjdlMGUwZWJiZTU2MDBjOV0qLwogewotICAgIGludCBmZDsKICAgICBTVFJVQ1RfU1RBVCBzdDsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpmc3RhdCIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBGU1RBVChmZCwgJnN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBpZiAocmVzICE9IDApIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfaXNhdHR5X19kb2NfXywKLSJpc2F0dHkoZmQpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciAnZmQnIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yXG5cCi1jb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfaXNhdHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmlzYXR0eSAtPiBib29sCisgICAgZmQ6IGludAorICAgIC8KKworUmV0dXJuIFRydWUgaWYgdGhlIGZkIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLgorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yCitjb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19pc2F0dHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWNlYzlkM2MyOWQxNmQzMyBpbnB1dD0wOGNlOTRhYTFlYWY3YjVlXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTppc2F0dHkiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGlzYXR0eShmZCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgcmV0dXJuX3ZhbHVlID0gaXNhdHR5KGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfUElQRQotUHlEb2NfU1RSVkFSKHBvc2l4X3BpcGVfX2RvY19fLAotInBpcGUoKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAotQ3JlYXRlIGEgcGlwZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBpcGUKKworQ3JlYXRlIGEgcGlwZS4KKworUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOgorICAocmVhZF9mZCwgd3JpdGVfZmQpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9waXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfcGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmIwY2QzZjg2OGVjM2M0MCBpbnB1dD0wMjUzNWU4YzhmYTZjNGQ0XSovCiB7CiAgICAgaW50IGZkc1syXTsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04NTAxLDI1ICs4NTI3LDMwIEBACiB9CiAjZW5kaWYgIC8qIEhBVkVfUElQRSAqLwogCisKICNpZmRlZiBIQVZFX1BJUEUyCi1QeURvY19TVFJWQVIocG9zaXhfcGlwZTJfX2RvY19fLAotInBpcGUyKGZsYWdzKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAotQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LlxuXAotZmxhZ3MgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczpcblwKLU9fTk9OQkxPQ0ssIE9fQ0xPRVhFQy5cblwKLSIpOworLypbY2xpbmljIGlucHV0XQorb3MucGlwZTIKKworICAgIGZsYWdzOiBpbnQKKyAgICAvCisKK0NyZWF0ZSBhIHBpcGUgd2l0aCBmbGFncyBzZXQgYXRvbWljYWxseS4KKworUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOgorICAocmVhZF9mZCwgd3JpdGVfZmQpCisKK2ZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6CitPX05PTkJMT0NLLCBPX0NMT0VYRUMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9waXBlMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK29zX3BpcGUyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMxNWI2MDc1ZDBjNmIyZTcgaW5wdXQ9ZjI2MWI2ZTdlNjNjNjgxN10qLwogewotICAgIGludCBmbGFnczsKICAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7CiAKLSAgICBmbGFncyA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKLSAgICBpZiAoZmxhZ3MgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXMgPSBwaXBlMihmZHMsIGZsYWdzKTsKICAgICBpZiAocmVzICE9IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtODUyNywzMDYgKzg1NTgsMzQwIEBACiB9CiAjZW5kaWYgLyogSEFWRV9QSVBFMiAqLwogCi0jaWZkZWYgSEFWRV9XUklURVYKLVB5RG9jX1NUUlZBUihwb3NpeF93cml0ZXZfX2RvY19fLAotIndyaXRldihmZCwgYnVmZmVycykgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIHRoZSBjb250ZW50cyBvZiAqYnVmZmVycyogdG8gZmlsZSBkZXNjcmlwdG9yICpmZCouICpidWZmZXJzKlxuXAotbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy5cblxuXAotd3JpdGV2IHdyaXRlcyB0aGUgY29udGVudHMgb2YgZWFjaCBvYmplY3QgdG8gdGhlIGZpbGUgZGVzY3JpcHRvclxuXAotYW5kIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd3JpdGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyNpZmRlZiBIQVZFX1dSSVRFVgorLypbY2xpbmljIGlucHV0XQorb3Mud3JpdGV2IC0+IFB5X3NzaXplX3QKKyAgICBmZDogaW50CisgICAgYnVmZmVyczogb2JqZWN0CisgICAgLworCitJdGVyYXRlIG92ZXIgYnVmZmVycywgYW5kIHdyaXRlIHRoZSBjb250ZW50cyBvZiBlYWNoIHRvIGEgZmlsZSBkZXNjcmlwdG9yLgorCitSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK2J1ZmZlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRldl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTQ4OTI1ZGJmMmQ1YzIzOCBpbnB1dD01YjhkMTdmZTQxODlkMmZlXSovCiB7Ci0gICAgaW50IGZkLCBjbnQ7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgUHlPYmplY3QgKnNlcTsKKyAgICBpbnQgY250OworICAgIFB5X3NzaXplX3QgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIHN0cnVjdCBpb3ZlYyAqaW92OwogICAgIFB5X2J1ZmZlciAqYnVmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwgJmZkLCAmc2VxKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhidWZmZXJzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgIndyaXRldigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKKyAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoYnVmZmVycyk7CiAKLSAgICBpZiAoaW92X3NldHVwKCZpb3YsICZidWYsIHNlcSwgY250LCBQeUJVRl9TSU1QTEUpIDwgMCkgewotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW92X3NldHVwKCZpb3YsICZidWYsIGJ1ZmZlcnMsIGNudCwgUHlCVUZfU0lNUExFKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXN1bHQgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKIAogICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAocmVzdWx0IDwgMCAmJiAhYXN5bmNfZXJyKQorICAgICAgICBwb3NpeF9lcnJvcigpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1BXUklURQotUHlEb2NfU1RSVkFSKHBvc2l4X3B3cml0ZV9fZG9jX18sCi0icHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIHN0cmluZyB0byBhIGZpbGUgZGVzY3JpcHRvciwgZmQsIGZyb20gb2Zmc2V0LCBsZWF2aW5nIHRoZSBmaWxlXG5cCi1vZmZzZXQgdW5jaGFuZ2VkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHdyaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBpbnQgZmQ7Ci0gICAgb2ZmX3Qgb2Zmc2V0OwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwgJmZkLCAmcGJ1ZiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc2l6ZSA9IHB3cml0ZShmZCwgcGJ1Zi5idWYsIChzaXplX3QpcGJ1Zi5sZW4sIG9mZnNldCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfTUtGSUZPCi1QeURvY19TVFJWQVIocG9zaXhfbWtmaWZvX19kb2NfXywKLSJta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2ZpZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBtb2RlID0gMDY2NjsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtmaWZvIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJm1vZGUsCi0jaWZkZWYgSEFWRV9NS0ZJRk9BVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX01LRklGT0FUCi0gICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKLSAgICAgICAgcmVzdWx0ID0gbWtmaWZvYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IG1rZmlmbyhwYXRoLm5hcnJvdywgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0KLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi1QeURvY19TVFJWQVIocG9zaXhfbWtub2RfX2RvY19fLAotIm1rbm9kKHBhdGgsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpXG5cCi1uYW1lZCBwYXRoLiBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuXAotdHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuXAotU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uIEZvciBTX0lGQ0hSIGFuZCBTX0lGQkxLLFxuXAotZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmdcblwKLW9zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwotCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta25vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGUgPSAwNjY2OwotICAgIGRldl90IGRldmljZSA9IDA7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJm1vZGUsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlLAotI2lmZGVmIEhBVkVfTUtOT0RBVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX01LTk9EQVQKLSAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBta25vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IG1rbm9kKHBhdGgubmFycm93LCBtb2RlLCBkZXZpY2UpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0RFVklDRV9NQUNST1MKLVB5RG9jX1NUUlZBUihwb3NpeF9tYWpvcl9fZG9jX18sCi0ibWFqb3IoZGV2aWNlKSAtPiBtYWpvciBudW1iZXJcblwKLUV4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9tYWpvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgZGV2X3QgZGV2aWNlOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpbWFqb3IoZGV2aWNlKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihwb3NpeF9taW5vcl9fZG9jX18sCi0ibWlub3IoZGV2aWNlKSAtPiBtaW5vciBudW1iZXJcblwKLUV4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9taW5vcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgZGV2X3QgZGV2aWNlOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpbWlub3IoZGV2aWNlKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihwb3NpeF9tYWtlZGV2X19kb2NfXywKLSJtYWtlZGV2KG1ham9yLCBtaW5vcikgLT4gZGV2aWNlIG51bWJlclxuXAotQ29tcG9zZXMgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9tYWtlZGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgbWFqb3IsIG1pbm9yOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6bWFrZWRldiIsICZtYWpvciwgJm1pbm9yKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbURldihtYWtlZGV2KG1ham9yLCBtaW5vcikpOwotfQotI2VuZGlmIC8qIGRldmljZSBtYWNyb3MgKi8KLQotCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLVB5RG9jX1NUUlZBUihwb3NpeF9mdHJ1bmNhdGVfX2RvY19fLAotImZ0cnVuY2F0ZShmZCwgbGVuZ3RoKVxuXG5cCi1UcnVuY2F0ZSBhIGZpbGUgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZnRydW5jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgZmQ7Ci0gICAgb2ZmX3QgbGVuZ3RoOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLCAmZmQsIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVFJVTkNBVEUKLVB5RG9jX1NUUlZBUihwb3NpeF90cnVuY2F0ZV9fZG9jX18sCi0idHJ1bmNhdGUocGF0aCwgbGVuZ3RoKVxuXG5cCi1UcnVuY2F0ZSB0aGUgZmlsZSBnaXZlbiBieSBwYXRoIHRvIGxlbmd0aCBieXRlcy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHBhdGhfdCBwYXRoOwotICAgIG9mZl90IGxlbmd0aDsKLSAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJ0cnVuY2F0ZSI7Ci0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6dHJ1bmNhdGUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzID0gZnRydW5jYXRlKHBhdGguZmQsIGxlbmd0aCk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlcyA9IHRydW5jYXRlKHBhdGgubmFycm93LCBsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJlc3VsdCA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X05vbmU7Ci0gICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKyNlbmRpZiAvKiBIQVZFX1dSSVRFViAqLworCisKKyNpZmRlZiBIQVZFX1BXUklURQorLypbY2xpbmljIGlucHV0XQorb3MucHdyaXRlIC0+IFB5X3NzaXplX3QKKworICAgIGZkOiBpbnQKKyAgICBidWZmZXI6IFB5X2J1ZmZlcgorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICAvCisKK1dyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHN0YXJ0aW5nIGF0IGEgcGFydGljdWxhciBvZmZzZXQuCisKK1dyaXRlIGJ1ZmZlciB0byBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZgordGhlIGZpbGUuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlLiAgRG9lcyBub3QgY2hhbmdlIHRoZQorY3VycmVudCBmaWxlIG9mZnNldC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3B3cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpidWZmZXIsCisgICAgICAgICAgICAgICBQeV9vZmZfdCBvZmZzZXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTNhYWJkYjQwZTE3ZDMyNSBpbnB1dD0xOTkwM2YxYjNkZDI2Mzc3XSovCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBzaXplID0gcHdyaXRlKGZkLCBidWZmZXItPmJ1ZiwgKHNpemVfdClidWZmZXItPmxlbiwgb2Zmc2V0KTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChzaXplIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisKKyAgICBpZiAoc2l6ZSA8IDAgJiYgIWFzeW5jX2VycikKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gc2l6ZTsKK30KKyNlbmRpZiAvKiBIQVZFX1BXUklURSAqLworCisKKyNpZmRlZiBIQVZFX01LRklGTworLypbY2xpbmljIGlucHV0XQorb3MubWtmaWZvCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICBtb2RlOiBpbnQ9MG82NjYKKyAgICAqCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J21rZmlmb2F0Jyk9Tm9uZQorCitDcmVhdGUgYSAiZmlmbyIgKGEgUE9TSVggbmFtZWQgcGlwZSkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2ZpZm9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmNWY1ZTcyYzYzMDA0OWEgaW5wdXQ9NzMwMzJlOThhMzZlMGUxOV0qLworeworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICByZXN1bHQgPSBta2ZpZm9hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgbW9kZSk7CisgICAgICAgIGVsc2UKICNlbmRpZgorICAgICAgICAgICAgcmVzdWx0ID0gbWtmaWZvKHBhdGgtPm5hcnJvdywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX01LRklGTyAqLworCisKKyNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQorLypbY2xpbmljIGlucHV0XQorb3MubWtub2QKKworICAgIHBhdGg6IHBhdGhfdAorICAgIG1vZGU6IGludD0wbzYwMAorICAgIGRldmljZTogZGV2X3Q9MAorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nbWtub2RhdCcpPU5vbmUKKworQ3JlYXRlIGEgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCisKK0NyZWF0ZSBhIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpCithdCBwYXRoLiAgbW9kZSBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGUKK3R5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2YKK1NfSUZSRUcsIFNfSUZDSFIsIFNfSUZCTEssIGFuZCBTX0lGSUZPLiAgSWYgU19JRkNIUiBvciBTX0lGQkxLIGlzIHNldCBvbiBtb2RlLAorZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKK29zLm1ha2VkZXYoKSkuICBPdGhlcndpc2UgZGV2aWNlIGlzIGlnbm9yZWQuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta25vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTUxYThhOWY3NTRkMjcyIGlucHV0PWVlNDQ1MzE1NTFhNGQ4M2JdKi8KK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICByZXN1bHQgPSBta25vZGF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlLCBkZXZpY2UpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHJlc3VsdCA9IG1rbm9kKHBhdGgtPm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpICovCisKKworI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUworLypbY2xpbmljIGlucHV0XQorb3MubWFqb3IgLT4gdW5zaWduZWRfaW50CisKKyAgICBkZXZpY2U6IGRldl90CisgICAgLworCitFeHRyYWN0cyBhIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgdW5zaWduZWQgaW50Citvc19tYWpvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRldl90IGRldmljZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTU1NjkzYWI0OWJhYzM0IGlucHV0PTFlMTZhNGQzMGM0ZDQ0NjJdKi8KK3sKKyAgICByZXR1cm4gbWFqb3IoZGV2aWNlKTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitvcy5taW5vciAtPiB1bnNpZ25lZF9pbnQKKworICAgIGRldmljZTogZGV2X3QKKyAgICAvCisKK0V4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21pbm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjcyMTllYmYyNzRlMjcgaW5wdXQ9MDg0MmM2ZDIzZjI0YzY1ZV0qLworeworICAgIHJldHVybiBtaW5vcihkZXZpY2UpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm1ha2VkZXYgLT4gZGV2X3QKKworICAgIG1ham9yOiBpbnQKKyAgICBtaW5vcjogaW50CisgICAgLworCitDb21wb3NlcyBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGRldl90Citvc19tYWtlZGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1ham9yLCBpbnQgbWlub3IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2NiNjI2NDM1MjQzNzY2MCBpbnB1dD00YjlmZDhmYzczY2JlNDhmXSovCit7CisgICAgcmV0dXJuIG1ha2VkZXYobWFqb3IsIG1pbm9yKTsKK30KKyNlbmRpZiAvKiBIQVZFX0RFVklDRV9NQUNST1MgKi8KKworCisjaWYgZGVmaW5lZCBIQVZFX0ZUUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZ0cnVuY2F0ZQorCisgICAgZmQ6IGludAorICAgIGxlbmd0aDogUHlfb2ZmX3QKKyAgICAvCisKK1RydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvciwgdG8gYSBzcGVjaWZpYyBsZW5ndGguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mdHJ1bmNhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjY2ZjQwMWQ3NmJmODM0IGlucHV0PTYzYjQzNjQxZTUyODE4ZjJdKi8KK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICByZXN1bHQgPSBfY2hzaXplX3MoZmQsIGxlbmd0aCk7CisjZWxzZQorICAgICAgICByZXN1bHQgPSBmdHJ1bmNhdGUoZmQsIGxlbmd0aCk7CisjZW5kaWYKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX0ZUUlVOQ0FURSB8fCBNU19XSU5ET1dTICovCisKKworI2lmIGRlZmluZWQgSEFWRV9UUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnRydW5jYXRlCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRlRSVU5DQVRFJykKKyAgICBsZW5ndGg6IFB5X29mZl90CisKK1RydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IHBhdGgsIHRvIGEgc3BlY2lmaWMgbGVuZ3RoLgorCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RydW5jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjYwYTllMDgzNzBlOWUyZSBpbnB1dD03NzIyOWNmMGI1MGE5Yjc3XSovCit7CisgICAgaW50IHJlc3VsdDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaW50IGZkOworI2VuZGlmCisKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIHJldHVybiBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIHBhdGgtPmZkLCBsZW5ndGgpOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZWxzZQorICAgICAgICBmZCA9IF9vcGVuKHBhdGgtPm5hcnJvdywgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKKyAgICBpZiAoZmQgPCAwKQorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gX2Noc2l6ZV9zKGZkLCBsZW5ndGgpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgZXJybm8gPSByZXN1bHQ7CisgICAgfQorI2Vsc2UKKyAgICByZXN1bHQgPSB0cnVuY2F0ZShwYXRoLT5uYXJyb3csIGxlbmd0aCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogSEFWRV9UUlVOQ0FURSB8fCBNU19XSU5ET1dTICovCisKIAogLyogSXNzdWUgIzIyMzk2OiBPbiAzMi1iaXQgQUlYIHBsYXRmb3JtLCB0aGUgcHJvdG90eXBlcyBvZiBvcy5wb3NpeF9mYWR2aXNlKCkKICAgIGFuZCBvcy5wb3NpeF9mYWxsb2NhdGUoKSBpbiBzeXN0ZW0gaGVhZGVycyBhcmUgd3JvbmcgaWYgX0xBUkdFX0ZJTEVTIGlzCkBAIC04ODM2LDE4NiArODkwMSwyMTEgQEAKICMgIGRlZmluZSBQT1NJWF9GQURWSVNFX0FJWF9CVUcKICNlbmRpZgogCisKICNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpCi1QeURvY19TVFJWQVIocG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfXywKLSJwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKVxuXG5cCi1FbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmRcblwKLXN0YXJ0aW5nIGZyb20gb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5wb3NpeF9mYWxsb2NhdGUKKworICAgIGZkOiBpbnQKKyAgICBvZmZzZXQ6IFB5X29mZl90CisgICAgbGVuZ3RoOiBQeV9vZmZfdAorICAgIC8KKworRW5zdXJlIGEgZmlsZSBoYXMgYWxsb2NhdGVkIGF0IGxlYXN0IGEgcGFydGljdWxhciBudW1iZXIgb2YgYnl0ZXMgb24gZGlzay4KKworRW5zdXJlIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIGVuY29tcGFzc2VzIGEgcmFuZ2Ugb2YgYnl0ZXMKK3N0YXJ0aW5nIGF0IG9mZnNldCBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbmd0aCBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjZmODdhOGM3NTFlMWI0IGlucHV0PWQ3YTJlZjBhYjJjYTUyZmJdKi8KIHsKLSAgICBvZmZfdCBsZW4sIG9mZnNldDsKLSAgICBpbnQgcmVzLCBmZDsKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAotICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKSB7Ci0gICAgICAgIGVycm5vID0gcmVzOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlc3VsdCA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFQT1NJWF9GQURWSVNFX0FJWF9CVUcgKi8KKwogCiAjaWYgZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykKLVB5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfXywKLSJwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIGxlbiwgYWR2aWNlKVxuXG5cCi1Bbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiB0aHVzIGFsbG93aW5nXG5cCi10aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy5cblwKLVRoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBzdGFydGluZyBhdFxuXAotb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuXG5cCi1hZHZpY2UgaXMgb25lIG9mIFBPU0lYX0ZBRFZfTk9STUFMLCBQT1NJWF9GQURWX1NFUVVFTlRJQUwsXG5cCi1QT1NJWF9GQURWX1JBTkRPTSwgUE9TSVhfRkFEVl9OT1JFVVNFLCBQT1NJWF9GQURWX1dJTExORUVEIG9yXG5cCi1QT1NJWF9GQURWX0RPTlRORUVELiIpOworLypbY2xpbmljIGlucHV0XQorb3MucG9zaXhfZmFkdmlzZQorCisgICAgZmQ6IGludAorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICBsZW5ndGg6IFB5X29mZl90CisgICAgYWR2aWNlOiBpbnQKKyAgICAvCisKK0Fubm91bmNlIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4uCisKK0Fubm91bmNlIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4sIHRodXMgYWxsb3dpbmcKK3RoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLgorVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0CitvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbmd0aCBieXRlcy4KK2FkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCwKK1BPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQsIG9yCitQT1NJWF9GQURWX0RPTlRORUVELgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcG9zaXhfZmFkdmlzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wb3NpeF9mYWR2aXNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QgbGVuZ3RoLCBpbnQgYWR2aWNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1N2NlNmE2NzE4OWUxMGQgaW5wdXQ9MGZiZTU1NGVkYzJmMDRiNV0qLwogewotICAgIG9mZl90IGxlbiwgb2Zmc2V0OwotICAgIGludCByZXMsIGZkLCBhZHZpY2U7CisgICAgaW50IHJlc3VsdDsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyZpOnBvc2l4X2ZhZHZpc2UiLAotICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbiwgJmFkdmljZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKSB7Ci0gICAgICAgIGVycm5vID0gcmVzOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlc3VsdCA9IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QT1NJWF9GQURWSVNFICYmICFQT1NJWF9GQURWSVNFX0FJWF9CVUcgKi8KIAogI2lmZGVmIEhBVkVfUFVURU5WCi1QeURvY19TVFJWQVIocG9zaXhfcHV0ZW52X19kb2NfXywKLSJwdXRlbnYoa2V5LCB2YWx1ZSlcblxuXAotQ2hhbmdlIG9yIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iKTsKIAogLyogU2F2ZSBwdXRlbnYoKSBwYXJhbWV0ZXJzIGFzIHZhbHVlcyBoZXJlLCBzbyB3ZSBjYW4gY29sbGVjdCB0aGVtIHdoZW4gdGhleQogICogZ2V0IHJlLXNldCB3aXRoIGFub3RoZXIgY2FsbCBmb3IgdGhlIHNhbWUga2V5LiAqLwogc3RhdGljIFB5T2JqZWN0ICpwb3NpeF9wdXRlbnZfZ2FyYmFnZTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3B1dGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzdGF0aWMgdm9pZAorcG9zaXhfcHV0ZW52X2dhcmJhZ2Vfc2V0aXRlbShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpuZXdzdHIgPSBOVUxMOworICAgIC8qIEluc3RhbGwgdGhlIGZpcnN0IGFyZyBhbmQgbmV3c3RyIGluIHBvc2l4X3B1dGVudl9nYXJiYWdlOworICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bworICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQorICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBuYW1lLCB2YWx1ZSkpCisgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKK30KKworCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpvczEsICpvczI7Ci0gICAgd2NoYXJfdCAqbmV3ZW52OworLypbY2xpbmljIGlucHV0XQorb3MucHV0ZW52CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlVVOnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvczEsICZvczIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBuYW1lOiB1bmljb2RlCisgICAgdmFsdWU6IHVuaWNvZGUKKyAgICAvCiAKLSAgICBuZXdzdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVU9JVUiLCBvczEsIG9zMik7Ci0gICAgaWYgKG5ld3N0ciA9PSBOVUxMKSB7CitDaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMjQzOGNmOTVlNWEwYzFjIGlucHV0PWJhNTg2NTgxYzJlNjEwNWZdKi8KK3sKKyAgICB3Y2hhcl90ICplbnY7CisKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuZXdzdHIpKSB7CisgICAgaWYgKF9NQVhfRU5WIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAidGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGxvbmdlciB0aGFuICV1IGNoYXJhY3RlcnMiLAogICAgICAgICAgICAgICAgICAgICAgX01BWF9FTlYpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIG5ld2VudiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmV3c3RyKTsKLSAgICBpZiAobmV3ZW52ID09IE5VTEwpCisgICAgZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmljb2RlKTsKKyAgICBpZiAoZW52ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKF93cHV0ZW52KG5ld2VudikpIHsKKyAgICBpZiAoX3dwdXRlbnYoZW52KSkgewogICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSNlbHNlCi0gICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKLSAgICBjaGFyICpzMSwgKnMyOwotICAgIGNoYXIgKm5ld2VudjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiTyZPJjpwdXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHMxID0gUHlCeXRlc19Bc1N0cmluZyhvczEpOwotICAgIHMyID0gUHlCeXRlc19Bc1N0cmluZyhvczIpOwotCi0gICAgbmV3c3RyID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIHMxLCBzMik7Ci0gICAgaWYgKG5ld3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgbmV3ZW52ID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyKTsKLSAgICBpZiAocHV0ZW52KG5ld2VudikpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8qIEluc3RhbGwgdGhlIGZpcnN0IGFyZyBhbmQgbmV3c3RyIGluIHBvc2l4X3B1dGVudl9nYXJiYWdlOwotICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bwotICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQotICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEsIG5ld3N0cikpIHsKLSAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYobmV3c3RyKTsKLSAgICB9Ci0KLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5X0RFQ1JFRihvczEpOwotICAgIFB5X0RFQ1JFRihvczIpOwotI2VuZGlmCisgICAgcG9zaXhfcHV0ZW52X2dhcmJhZ2Vfc2V0aXRlbShuYW1lLCB1bmljb2RlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6Ci0jaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBQeV9ERUNSRUYob3MxKTsKLSAgICBQeV9ERUNSRUYob3MyKTsKLSNlbmRpZgotICAgIFB5X1hERUNSRUYobmV3c3RyKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9Ci0jZW5kaWYgLyogcHV0ZW52ICovCisjZWxzZSAvKiBNU19XSU5ET1dTICovCisvKltjbGluaWMgaW5wdXRdCitvcy5wdXRlbnYKIAotI2lmZGVmIEhBVkVfVU5TRVRFTlYKLVB5RG9jX1NUUlZBUihwb3NpeF91bnNldGVudl9fZG9jX18sCi0idW5zZXRlbnYoa2V5KVxuXG5cCi1EZWxldGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisgICAgbmFtZTogRlNDb252ZXJ0ZXIKKyAgICB2YWx1ZTogRlNDb252ZXJ0ZXIKKyAgICAvCisKK0NoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bnNldGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wdXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEyNDM4Y2Y5NWU1YTBjMWMgaW5wdXQ9YTk3YmM2MTUyZjY4OGQzMV0qLwogewotICAgIFB5T2JqZWN0ICpuYW1lOworICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CisgICAgY2hhciAqZW52OworICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKKyAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIG5hbWVfc3RyaW5nLCB2YWx1ZV9zdHJpbmcpOworICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGVudiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKyAgICBpZiAocHV0ZW52KGVudikpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorCisgICAgcG9zaXhfcHV0ZW52X2dhcmJhZ2Vfc2V0aXRlbShuYW1lLCBieXRlcyk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIEhBVkVfUFVURU5WICovCisKKworI2lmZGVmIEhBVkVfVU5TRVRFTlYKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVuc2V0ZW52CisgICAgbmFtZTogRlNDb252ZXJ0ZXIKKyAgICAvCisKK0RlbGV0ZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Vuc2V0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjU5OTRiNTcwMTZhMmRjOSBpbnB1dD0yYmI1Mjg4YTU5OWM3MTA3XSovCit7CiAjaWZuZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCiAgICAgaW50IGVycjsKICNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp1bnNldGVudiIsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZkZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKICAgICB1bnNldGVudihQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSk7CiAjZWxzZQogICAgIGVyciA9IHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBpZiAoZXJyKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CiAjZW5kaWYKIAogICAgIC8qIFJlbW92ZSB0aGUga2V5IGZyb20gcG9zaXhfcHV0ZW52X2dhcmJhZ2U7CkBAIC05MDI3LDIzICs5MTE3LDI1IEBACiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KLSAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYgLyogdW5zZXRlbnYgKi8KKyNlbmRpZiAvKiBIQVZFX1VOU0VURU5WICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zdHJlcnJvcl9fZG9jX18sCi0ic3RyZXJyb3IoY29kZSkgLT4gc3RyaW5nXG5cblwKLVRyYW5zbGF0ZSBhbiBlcnJvciBjb2RlIHRvIGEgbWVzc2FnZSBzdHJpbmcuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0cmVycm9yCisKKyAgICBjb2RlOiBpbnQKKyAgICAvCisKK1RyYW5zbGF0ZSBhbiBlcnJvciBjb2RlIHRvIGEgbWVzc2FnZSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdHJlcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zdHJlcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyODBjNmFmNTFlNWM5ZmUgaW5wdXQ9NzVhODY3M2Q5NzkxNWE5MV0qLwogewotICAgIGludCBjb2RlOwotICAgIGNoYXIgKm1lc3NhZ2U7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnN0cmVycm9yIiwgJmNvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtZXNzYWdlID0gc3RyZXJyb3IoY29kZSk7CisgICAgY2hhciAqbWVzc2FnZSA9IHN0cmVycm9yKGNvZGUpOwogICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyZXJyb3IoKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTkwNTQsMTU1ICs5MTQ2LDE2OCBAQAogCiAKICNpZmRlZiBIQVZFX1NZU19XQUlUX0gKLQogI2lmZGVmIFdDT1JFRFVNUAotUHlEb2NfU1RSVkFSKHBvc2l4X1dDT1JFRFVNUF9fZG9jX18sCi0iV0NPUkVEVU1QKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgd2FzIGR1bXBlZCB0byBhIGNvcmUgZmlsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldDT1JFRFVNUCAtPiBib29sCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XQ09SRURVTVAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBkdW1wZWQgdG8gYSBjb3JlIGZpbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dDT1JFRFVNUF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTM0ZjcwYmJlNjNmYmY0MSBpbnB1dD04YjA1ZTdhYjM4NTI4ZDA0XSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0NPUkVEVU1QIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdDT1JFRFVNUChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0NPUkVEVU1QKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXQ09SRURVTVAgKi8KIAorCiAjaWZkZWYgV0lGQ09OVElOVUVECi1QeURvY19TVFJWQVIocG9zaXhfV0lGQ09OVElOVUVEX19kb2NfXywKLSJXSUZDT05USU5VRUQoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyB3YXMgY29udGludWVkIGZyb20gYVxuXAotam9iIGNvbnRyb2wgc3RvcC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldJRkNPTlRJTlVFRCAtPiBib29sCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XSUZDT05USU5VRUQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiBUcnVlIGlmIGEgcGFydGljdWxhciBwcm9jZXNzIHdhcyBjb250aW51ZWQgZnJvbSBhIGpvYiBjb250cm9sIHN0b3AuCisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGNvbnRpbnVlZCBmcm9tIGEKK2pvYiBjb250cm9sIHN0b3AuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRkNPTlRJTlVFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWNkZDI2NTQzZWJiNmRjZCBpbnB1dD1lNzc3ZTdkMzhlYjI1YmQ5XSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0NPTlRJTlVFRCIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhXSUZDT05USU5VRUQoc3RhdHVzKSk7CisgICAgV0FJVF9UWVBFIHdhaXRfc3RhdHVzOworICAgIFdBSVRfU1RBVFVTX0lOVCh3YWl0X3N0YXR1cykgPSBzdGF0dXM7CisgICAgcmV0dXJuIFdJRkNPTlRJTlVFRCh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV0lGQ09OVElOVUVEICovCiAKKwogI2lmZGVmIFdJRlNUT1BQRUQKLVB5RG9jX1NUUlZBUihwb3NpeF9XSUZTVE9QUEVEX19kb2NfXywKLSJXSUZTVE9QUEVEKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgd2FzIHN0b3BwZWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XSUZTVE9QUEVEIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dJRlNUT1BQRUQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHN0b3BwZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRlNUT1BQRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczYmYzNWU0NDk5NGE3MjQgaW5wdXQ9MDQzY2I3ZjEyODllZjkwNF0qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldJRlNUT1BQRUQiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoV0lGU1RPUFBFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGU1RPUFBFRCh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV0lGU1RPUFBFRCAqLwogCisKICNpZmRlZiBXSUZTSUdOQUxFRAotUHlEb2NfU1RSVkFSKHBvc2l4X1dJRlNJR05BTEVEX19kb2NfXywKLSJXSUZTSUdOQUxFRChzdGF0dXMpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nICdzdGF0dXMnIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0lGU0lHTkFMRUQgLT4gYm9vbAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV0lGU0lHTkFMRUQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRlNJR05BTEVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNjk3OTc1NzcxODcyNDIwIGlucHV0PWQ1NWJhN2NjOWNlNWRjNDNdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXSUZTSUdOQUxFRCIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhXSUZTSUdOQUxFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGU0lHTkFMRUQod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdJRlNJR05BTEVEICovCiAKKwogI2lmZGVmIFdJRkVYSVRFRAotUHlEb2NfU1RSVkFSKHBvc2l4X1dJRkVYSVRFRF9fZG9jX18sCi0iV0lGRVhJVEVEKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgZXhpdGVkIHVzaW5nIHRoZSBleGl0KClcblwKLXN5c3RlbSBjYWxsLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0lGRVhJVEVEIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dJRkVYSVRFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyBleGl0ZWQgdmlhIHRoZSBleGl0KCkgc3lzdGVtIGNhbGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRkVYSVRFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2E4ZjhjNjFmMGI4NTMyZSBpbnB1dD1kNjM3NzVhNjc5MTU4NmMwXSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0lGRVhJVEVEIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdJRkVYSVRFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGRVhJVEVEKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXSUZFWElURUQgKi8KIAorCiAjaWZkZWYgV0VYSVRTVEFUVVMKLVB5RG9jX1NUUlZBUihwb3NpeF9XRVhJVFNUQVRVU19fZG9jX18sCi0iV0VYSVRTVEFUVVMoc3RhdHVzKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tICdzdGF0dXMnLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0VYSVRTVEFUVVMgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XRVhJVFNUQVRVUyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gc3RhdHVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19XRVhJVFNUQVRVU19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWE1NGRhMjNkOWUwZjZhZiBpbnB1dD1lMWZiNDk0NGUzNzc1ODViXSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0VYSVRTVEFUVVMiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgV0VYSVRTVEFUVVMoc3RhdHVzKSk7CisgICAgV0FJVF9UWVBFIHdhaXRfc3RhdHVzOworICAgIFdBSVRfU1RBVFVTX0lOVCh3YWl0X3N0YXR1cykgPSBzdGF0dXM7CisgICAgcmV0dXJuIFdFWElUU1RBVFVTKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXRVhJVFNUQVRVUyAqLwogCisKICNpZmRlZiBXVEVSTVNJRwotUHlEb2NfU1RSVkFSKHBvc2l4X1dURVJNU0lHX19kb2NfXywKLSJXVEVSTVNJRyhzdGF0dXMpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlICdzdGF0dXMnXG5cCi12YWx1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldURVJNU0lHIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV1RFUk1TSUcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dURVJNU0lHX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDI1MzY3MDI2Y2I4NTJjIGlucHV0PTcyN2ZkN2Y4NGVjM2YyNDNdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXVEVSTVNJRyIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBXVEVSTVNJRyhzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV1RFUk1TSUcod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdURVJNU0lHICovCiAKKwogI2lmZGVmIFdTVE9QU0lHCi1QeURvY19TVFJWQVIocG9zaXhfV1NUT1BTSUdfX2RvY19fLAotIldTVE9QU0lHKHN0YXR1cykgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZFxuXAotdGhlICdzdGF0dXMnIHZhbHVlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV1NUT1BTSUcgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XU1RPUFNJRyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIHRoZSBzaWduYWwgdGhhdCBzdG9wcGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV1NUT1BTSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0ZWI5YzEzYjAwMWFkYjQgaW5wdXQ9NDZlYmYxZDFiMjkzYzVjMV0qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldTVE9QU0lHIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIFdTVE9QU0lHKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXU1RPUFNJRyh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV1NUT1BTSUcgKi8KLQogI2VuZGlmIC8qIEhBVkVfU1lTX1dBSVRfSCAqLwogCiAKQEAgLTkyNTcsMTA0ICs5MzYyLDEwMSBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfZnN0YXR2ZnNfX2RvY19fLAotImZzdGF0dmZzKGZkKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC5cblwKLUVxdWl2YWxlbnQgdG8gc3RhdHZmcyhmZCkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzdGF0dmZzCisgICAgZmQ6IGludAorICAgIC8KKworUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuCisKK0VxdWl2YWxlbnQgdG8gc3RhdHZmcyhmZCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19mc3RhdHZmc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODRhOTRhNzU0NDk3YWMwIGlucHV0PWQ4MTIyMjQzYWM1MDk3NWVdKi8KIHsKLSAgICBpbnQgZmQsIHJlczsKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIHN0cnVjdCBzdGF0dmZzIHN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmZzdGF0dmZzIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGZzdGF0dmZzKGZkLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMoZmQsICZzdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICByZXR1cm4gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CiB9Ci0jZW5kaWYgLyogSEFWRV9GU1RBVFZGUyAmJiBIQVZFX1NZU19TVEFUVkZTX0ggKi8KKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRlNUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSAqLwogCiAKICNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpCiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXR2ZnMKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXR2ZnNfX2RvY19fLAotInN0YXR2ZnMocGF0aClcblxuXAotUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GU1RBVFZGUycpCisKK1BlcmZvcm0gYSBzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLgorCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N0YXR2ZnNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWNlZDA3YTJjZjkzMWY0MSBpbnB1dD0zZjVjMzU3OTFjNjY5YmQ5XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKLSAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHN0cnVjdCBzdGF0dmZzIHN0OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJzdGF0dmZzIjsKLSNpZmRlZiBIQVZFX0ZTVEFUVkZTCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0ZTVEFUVkZTCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpIHsKICNpZmRlZiBfX0FQUExFX18KICAgICAgICAgLyogaGFuZGxlIHdlYWstbGlua2luZyBvbiBNYWMgT1MgWCAxMC4zICovCiAgICAgICAgIGlmIChmc3RhdHZmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBmZF9zcGVjaWZpZWQoInN0YXR2ZnMiLCBwYXRoLmZkKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGZkX3NwZWNpZmllZCgic3RhdHZmcyIsIHBhdGgtPmZkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMocGF0aC5mZCwgJnN0KTsKKyAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMocGF0aC0+ZmQsICZzdCk7CiAgICAgfQogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBzdGF0dmZzKHBhdGgubmFycm93LCAmc3QpOworICAgICAgICByZXN1bHQgPSBzdGF0dmZzKHBhdGgtPm5hcnJvdywgJnN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgcmV0dXJuIF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOwogfQotI2VuZGlmIC8qIEhBVkVfU1RBVFZGUyAqLworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkgKi8KKwogCiAjaWZkZWYgTVNfV0lORE9XUwotUHlEb2NfU1RSVkFSKHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19fLAotIl9nZXRkaXNrdXNhZ2UocGF0aCkgLT4gKHRvdGFsLCBmcmVlKVxuXG5cCi1SZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5fZ2V0ZGlza3VzYWdlCisKKyAgICBwYXRoOiBQeV9VTklDT0RFCisKK1JldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSAodG90YWwsIGZyZWUpIHR1cGxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19fZ2V0ZGlza3VzYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MGE5Y2YzMzQ0OWRiMWRkIGlucHV0PTY0NTgxMzNhZWQ4OTNjNzhdKi8KIHsKICAgICBCT09MIHJldHZhbDsKICAgICBVTEFSR0VfSU5URUdFUiBfLCB0b3RhbCwgZnJlZTsKLSAgICBjb25zdCB3Y2hhcl90ICpwYXRoOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmV0dmFsID0gR2V0RGlza0ZyZWVTcGFjZUV4VyhwYXRoLCAmXywgJnRvdGFsLCAmZnJlZSk7CkBAIC05MzY0LDcgKzk0NjYsNyBAQAogCiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihMTCkiLCB0b3RhbC5RdWFkUGFydCwgZnJlZS5RdWFkUGFydCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIAogLyogVGhpcyBpcyB1c2VkIGZvciBmcGF0aGNvbmYoKSwgcGF0aGNvbmYoKSwgY29uZnN0cigpIGFuZCBzeXNjb25mKCkuCkBAIC05NTIxLDgxICs5NjIzLDczIEBACiB9CiAjZW5kaWYKIAorCiAjaWZkZWYgSEFWRV9GUEFUSENPTkYKLVB5RG9jX1NUUlZBUihwb3NpeF9mcGF0aGNvbmZfX2RvY19fLAotImZwYXRoY29uZihmZCwgbmFtZSkgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC5cblwKLUlmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mcGF0aGNvbmYgLT4gbG9uZwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZnBhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBmZDogaW50CisgICAgbmFtZTogcGF0aF9jb25mbmFtZQorICAgIC8KKworUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKK0lmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19mcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBuYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA4MmIyOTIyZDQ0NDFkZTcgaW5wdXQ9NTk0MmEwMjRkMzc3NzgxMF0qLwogewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCBuYW1lLCBmZDsKKyAgICBsb25nIGxpbWl0OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLCAmZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKLSAgICAgICAgbG9uZyBsaW1pdDsKKyAgICBlcnJubyA9IDA7CisgICAgbGltaXQgPSBmcGF0aGNvbmYoZmQsIG5hbWUpOworICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKQorICAgICAgICBwb3NpeF9lcnJvcigpOwogCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbGltaXQgPSBmcGF0aGNvbmYoZmQsIG5hbWUpOwotICAgICAgICBpZiAobGltaXQgPT0gLTEgJiYgZXJybm8gIT0gMCkKLSAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhsaW1pdCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGxpbWl0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GUEFUSENPTkYgKi8KIAogCiAjaWZkZWYgSEFWRV9QQVRIQ09ORgotUHlEb2NfU1RSVkFSKHBvc2l4X3BhdGhjb25mX19kb2NfXywKLSJwYXRoY29uZihwYXRoLCBuYW1lKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC5cblwKLUlmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBhdGhjb25mIC0+IGxvbmcKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GUEFUSENPTkYnKQorICAgIG5hbWU6IHBhdGhfY29uZm5hbWUKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3BhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK1JldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC4KKworSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4KK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworb3NfcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3MTMwMjllOTUwMWY1YWIgaW5wdXQ9YmMzZTJhOTg1YWYyN2U1ZV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCBuYW1lOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicGF0aGNvbmYiOwotI2lmZGVmIEhBVkVfRlBBVEhDT05GCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgbG9uZyBsaW1pdDsKIAogICAgIGVycm5vID0gMDsKICNpZmRlZiBIQVZFX0ZQQVRIQ09ORgotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICBsaW1pdCA9IGZwYXRoY29uZihwYXRoLmZkLCBuYW1lKTsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIGxpbWl0ID0gZnBhdGhjb25mKHBhdGgtPmZkLCBuYW1lKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgbGltaXQgPSBwYXRoY29uZihwYXRoLm5hcnJvdywgbmFtZSk7CisgICAgICAgIGxpbWl0ID0gcGF0aGNvbmYocGF0aC0+bmFycm93LCBuYW1lKTsKICAgICBpZiAobGltaXQgPT0gLTEgJiYgZXJybm8gIT0gMCkgewogICAgICAgICBpZiAoZXJybm8gPT0gRUlOVkFMKQogICAgICAgICAgICAgLyogY291bGQgYmUgYSBwYXRoIG9yIG5hbWUgcHJvYmxlbSAqLwogICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhsaW1pdCk7Ci0gICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHJldHVybiBsaW1pdDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfUEFUSENPTkYgKi8KIAogI2lmZGVmIEhBVkVfQ09ORlNUUgogc3RhdGljIHN0cnVjdCBjb25zdGRlZiBwb3NpeF9jb25zdGFudHNfY29uZnN0cltdID0gewpAQCAtOTc1OSwyMSArOTg1MywyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBzaXplb2Yoc3RydWN0IGNvbnN0ZGVmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jb25mc3RyX19kb2NfXywKLSJjb25mc3RyKG5hbWUpIC0+IHN0cmluZ1xuXG5cCi1SZXR1cm4gYSBzdHJpbmctdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5jb25mc3RyCisKKyAgICBuYW1lOiBjb25mc3RyX2NvbmZuYW1lCisgICAgLworCitSZXR1cm4gYSBzdHJpbmctdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY29uZnN0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jb25mc3RyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmZmNzljOWVlZDhjMmRhZiBpbnB1dD0xOGZiNGQwNTY3MjQyZTY1XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWU7CiAgICAgY2hhciBidWZmZXJbMjU1XTsKICAgICBzaXplX3QgbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpjb25mc3RyIiwgY29udl9jb25mc3RyX2NvbmZuYW1lLCAmbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZXJybm8gPSAwOwogICAgIGxlbiA9IGNvbmZzdHIobmFtZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CiAgICAgaWYgKGxlbiA9PSAwKSB7CkBAIC05Nzg3LDE4ICs5ODg0LDIwIEBACiAgICAgfQogCiAgICAgaWYgKGxlbiA+PSBzaXplb2YoYnVmZmVyKSkgeworICAgICAgICBzaXplX3QgbGVuMjsKICAgICAgICAgY2hhciAqYnVmID0gUHlNZW1fTWFsbG9jKGxlbik7CiAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBjb25mc3RyKG5hbWUsIGJ1ZiwgbGVuKTsKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBsZW4tMSk7CisgICAgICAgIGxlbjIgPSBjb25mc3RyKG5hbWUsIGJ1ZiwgbGVuKTsKKyAgICAgICAgYXNzZXJ0KGxlbiA9PSBsZW4yKTsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBsZW4yLTEpOwogICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW4tMSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfQ09ORlNUUiAqLwogCiAKICNpZmRlZiBIQVZFX1NZU0NPTkYKQEAgLTEwMzA1LDI5ICsxMDQwNCwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBzaXplb2Yoc3RydWN0IGNvbnN0ZGVmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zeXNjb25mX19kb2NfXywKLSJzeXNjb25mKG5hbWUpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIGFuIGludGVnZXItdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3lzY29uZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5zeXNjb25mIC0+IGxvbmcKKyAgICBuYW1lOiBzeXNjb25mX2NvbmZuYW1lCisgICAgLworCitSZXR1cm4gYW4gaW50ZWdlci12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19zeXNjb25mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWQ1NjczMDZmNThkNjljNCBpbnB1dD0yNzllMzQzMGEzM2YyOWU0XSovCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWU7CisgICAgbG9uZyB2YWx1ZTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpIHsKLSAgICAgICAgbG9uZyB2YWx1ZTsKLQotICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgIHZhbHVlID0gc3lzY29uZihuYW1lKTsKLSAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIGVycm5vICE9IDApCi0gICAgICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIGVycm5vID0gMDsKKyAgICB2YWx1ZSA9IHN5c2NvbmYobmFtZSk7CisgICAgaWYgKHZhbHVlID09IC0xICYmIGVycm5vICE9IDApCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIHZhbHVlOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TWVNDT05GICovCiAKIAogLyogVGhpcyBjb2RlIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHRhYmxlcyBvZiBjb25maWd1cmF0aW9uIHZhbHVlIG5hbWVzCkBAIC0xMDQwNCwxMyArMTA1MDIsMTggQEAKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfYWJvcnRfX2RvY19fLAotImFib3J0KCkgLT4gZG9lcyBub3QgcmV0dXJuIVxuXG5cCi1BYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuICBUaGlzICdkdW1wcyBjb3JlJyBvciBvdGhlcndpc2UgZmFpbHNcblwKLWluIHRoZSBoYXJkZXN0IHdheSBwb3NzaWJsZSBvbiB0aGUgaG9zdGluZyBvcGVyYXRpbmcgc3lzdGVtLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuYWJvcnQKKworQWJvcnQgdGhlIGludGVycHJldGVyIGltbWVkaWF0ZWx5LgorCitUaGlzIGZ1bmN0aW9uICdkdW1wcyBjb3JlJyBvciBvdGhlcndpc2UgZmFpbHMgaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlCitvbiB0aGUgaG9zdGluZyBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcyBmdW5jdGlvbiBuZXZlciByZXR1cm5zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfYWJvcnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19hYm9ydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDg2YmI5NjY0N2MyOTliMyBpbnB1dD1jZjJjN2Q5OGJjNTA0MDQ3XSovCiB7CiAgICAgYWJvcnQoKTsKICAgICAvKk5PVFJFQUNIRUQqLwpAQCAtMTA0MTksOSArMTA1MjIsMTEgQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKKy8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KIFB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKSAtIFN0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkXG5cCi1hcHBsaWNhdGlvbi5cblwKKyJzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSlcblwKK1xuXAorU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uXG5cCiBcblwKIFdoZW4gXCJvcGVyYXRpb25cIiBpcyBub3Qgc3BlY2lmaWVkIG9yIFwib3BlblwiLCB0aGlzIGFjdHMgbGlrZVxuXAogZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhblxuXApAQCAtMTA0MzgsNiArMTA1NDMsMzcgQEAKIGFuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoIChcIi9cIik7XG5cCiB0aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc24ndCB3b3JrIGlmIGl0IGlzLiIpOwogCisvKiBHcmFiIFNoZWxsRXhlY3V0ZSBkeW5hbWljYWxseSBmcm9tIHNoZWxsMzIgKi8KK3N0YXRpYyBpbnQgaGFzX1NoZWxsRXhlY3V0ZSA9IC0xOworc3RhdGljIEhJTlNUQU5DRSAoQ0FMTEJBQ0sgKlB5X1NoZWxsRXhlY3V0ZUEpKEhXTkQsIExQQ1NUUiwgTFBDU1RSLCBMUENTVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDU1RSLCBJTlQpOworc3RhdGljIEhJTlNUQU5DRSAoQ0FMTEJBQ0sgKlB5X1NoZWxsRXhlY3V0ZVcpKEhXTkQsIExQQ1dTVFIsIExQQ1dTVFIsIExQQ1dTVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiwgSU5UKTsKK3N0YXRpYyBpbnQKK2NoZWNrX1NoZWxsRXhlY3V0ZSgpCit7CisgICAgSElOU1RBTkNFIGhTaGVsbDMyOworCisgICAgLyogb25seSByZWNoZWNrICovCisgICAgaWYgKC0xID09IGhhc19TaGVsbEV4ZWN1dGUpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBoU2hlbGwzMiA9IExvYWRMaWJyYXJ5VyhMIlNIRUxMMzIiKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGhTaGVsbDMyKSB7CisgICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9TaGVsbEV4ZWN1dGVBID0gR2V0UHJvY0FkZHJlc3MoaFNoZWxsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGVsbEV4ZWN1dGVBIik7CisgICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9TaGVsbEV4ZWN1dGVXID0gR2V0UHJvY0FkZHJlc3MoaFNoZWxsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGVsbEV4ZWN1dGVXIik7CisgICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gUHlfU2hlbGxFeGVjdXRlQSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NoZWxsRXhlY3V0ZVc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gaGFzX1NoZWxsRXhlY3V0ZTsKK30KKworCiBzdGF0aWMgUHlPYmplY3QgKgogd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTEwNDQ4LDYgKzEwNTg0LDE0IEBACiAgICAgSElOU1RBTkNFIHJjOwogCiAgICAgUHlPYmplY3QgKnVuaXBhdGgsICp1b3BlcmF0aW9uID0gTlVMTDsKKworICAgIGlmKCFjaGVja19TaGVsbEV4ZWN1dGUoKSkgeworICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIFNoZWxsRXhlY3V0ZSwgcmV0dXJuIGEKKyAgICAgICAgICAgTm90SW1wbGVtZW50ZWRFcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgInN0YXJ0ZmlsZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKTsKKyAgICB9CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8czpzdGFydGZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pcGF0aCwgJm9wZXJhdGlvbikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTEwNDc2LDggKzEwNjIwLDggQEAKICAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBTaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKKyAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBQeV9YREVDUkVGKHVvcGVyYXRpb24pOwpAQCAtMTA0OTksOCArMTA2NDMsOCBAQAogICAgIH0KICAgICBmaWxlcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2ZpbGVwYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBTaGVsbEV4ZWN1dGUoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKKyAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZUEoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewogICAgICAgICBQeU9iamVjdCAqZXJydmFsID0gd2luMzJfZXJyb3IoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoKTsKQEAgLTEwNTExLDE3ICsxMDY1NSwyMyBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRMT0FEQVZHCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0bG9hZGF2Z19fZG9jX18sCi0iZ2V0bG9hZGF2ZygpIC0+IChmbG9hdCwgZmxvYXQsIGZsb2F0KVxuXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgaW4gdGhlIHN5c3RlbSBydW4gcXVldWUgYXZlcmFnZWQgb3ZlclxuXAotdGhlIGxhc3QgMSwgNSwgYW5kIDE1IG1pbnV0ZXMgb3IgcmFpc2VzIE9TRXJyb3IgaWYgdGhlIGxvYWQgYXZlcmFnZVxuXAotd2FzIHVub2J0YWluYWJsZSIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0bG9hZGF2ZworCitSZXR1cm4gYXZlcmFnZSByZWNlbnQgc3lzdGVtIGxvYWQgaW5mb3JtYXRpb24uCisKK1JldHVybiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiB0aGUgc3lzdGVtIHJ1biBxdWV1ZSBhdmVyYWdlZCBvdmVyCit0aGUgbGFzdCAxLCA1LCBhbmQgMTUgbWludXRlcyBhcyBhIHR1cGxlIG9mIHRocmVlIGZsb2F0cy4KK1JhaXNlcyBPU0Vycm9yIGlmIHRoZSBsb2FkIGF2ZXJhZ2Ugd2FzIHVub2J0YWluYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGxvYWRhdmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRsb2FkYXZnX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYjY0YzViNjc1ZDc0YzE0IGlucHV0PTNkNmQ4MjZiNzZkOGEzNGVdKi8KIHsKICAgICBkb3VibGUgbG9hZGF2Z1szXTsKICAgICBpZiAoZ2V0bG9hZGF2Zyhsb2FkYXZnLCAzKSE9MykgewpAQCAtMTA1MzAsNzIgKzEwNjgwLDgzIEBACiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJkZGQiLCBsb2FkYXZnWzBdLCBsb2FkYXZnWzFdLCBsb2FkYXZnWzJdKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUTE9BREFWRyAqLwogCi1QeURvY19TVFJWQVIoZGV2aWNlX2VuY29kaW5nX19kb2NfXywKLSJkZXZpY2VfZW5jb2RpbmcoZmQpIC0+IHN0clxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZW5jb2Rpbmcgb2YgdGhlIGRldmljZVxuXAotaWYgdGhlIG91dHB1dCBpcyBhIHRlcm1pbmFsOyBlbHNlIHJldHVybiBOb25lLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5kZXZpY2VfZW5jb2RpbmcKKyAgICBmZDogaW50CisKK1JldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBlbmNvZGluZyBvZiBhIHRlcm1pbmFsJ3MgZmlsZSBkZXNjcmlwdG9yLgorCitUaGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYXR0YWNoZWQgdG8gYSB0ZXJtaW5hbC4KK0lmIHRoZSBkZXZpY2UgaXMgbm90IGEgdGVybWluYWwsIHJldHVybiBOb25lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGV2aWNlX2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2RldmljZV9lbmNvZGluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNGYxNGUzMzQ2ODQxOWMxIGlucHV0PTllMWQ0YTQyYjY2ZGYzMTJdKi8KIHsKLSAgICBpbnQgZmQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZGV2aWNlX2VuY29kaW5nIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5X2RldmljZV9lbmNvZGluZyhmZCk7CiB9CiAKLSNpZmRlZiBIQVZFX1NFVFJFU1VJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJlc3VpZF9fZG9jX18sCi0ic2V0cmVzdWlkKHJ1aWQsIGV1aWQsIHN1aWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgdXNlciBpZHMuIik7CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X3NldHJlc3VpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorI2lmZGVmIEhBVkVfU0VUUkVTVUlECisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRyZXN1aWQKKworICAgIHJ1aWQ6IHVpZF90CisgICAgZXVpZDogdWlkX3QKKyAgICBzdWlkOiB1aWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc3VpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQsIHVpZF90IHN1aWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTJjYzMzMDgxMmM2ZWQwZiBpbnB1dD05ZTMzY2I3OWE4Mjc5MmYzXSovCiB7Ci0gICAgLyogV2UgYXNzdW1lIHVpZF90IGlzIG5vIGxhcmdlciB0aGFuIGEgbG9uZy4gKi8KLSAgICB1aWRfdCBydWlkLCBldWlkLCBzdWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0cmVzdWlkKHJ1aWQsIGV1aWQsIHN1aWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NFVFJFU1VJRCAqLworCiAKICNpZmRlZiBIQVZFX1NFVFJFU0dJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJlc2dpZF9fZG9jX18sCi0ic2V0cmVzZ2lkKHJnaWQsIGVnaWQsIHNnaWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cmVzZ2lkCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X3NldHJlc2dpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHJnaWQ6IGdpZF90CisgICAgZWdpZDogZ2lkX3QKKyAgICBzZ2lkOiBnaWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXNnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCByZ2lkLCBnaWRfdCBlZ2lkLCBnaWRfdCBzZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU5MWRjNDg0MmE2MDQ0MjkgaW5wdXQ9MzNlOWUwNzg1ZWY0MjZiMV0qLwogewotICAgIGdpZF90IHJnaWQsIGVnaWQsIHNnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzZ2lkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRyZXNnaWQocmdpZCwgZWdpZCwgc2dpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0VUUkVTR0lEICovCisKIAogI2lmZGVmIEhBVkVfR0VUUkVTVUlECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cmVzdWlkX19kb2NfXywKLSJnZXRyZXN1aWQoKSAtPiAocnVpZCwgZXVpZCwgc3VpZClcblxuXAotR2V0IHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHJlc3VpZAogCi1zdGF0aWMgUHlPYmplY3QqCi1wb3NpeF9nZXRyZXN1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorUmV0dXJuIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzdWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZGRlZjYyZmFhZThlNDc3IGlucHV0PTQxY2NmYThlMWY2NTE3YWRdKi8KIHsKICAgICB1aWRfdCBydWlkLCBldWlkLCBzdWlkOwogICAgIGlmIChnZXRyZXN1aWQoJnJ1aWQsICZldWlkLCAmc3VpZCkgPCAwKQpAQCAtMTA2MDQsOTAgKzEwNzY1LDg4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5TG9uZ19Gcm9tVWlkKGV1aWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUxvbmdfRnJvbVVpZChzdWlkKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVFJFU1VJRCAqLworCiAKICNpZmRlZiBIQVZFX0dFVFJFU0dJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHJlc2dpZF9fZG9jX18sCi0iZ2V0cmVzZ2lkKCkgLT4gKHJnaWQsIGVnaWQsIHNnaWQpXG5cblwKLUdldCB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmVzZ2lkCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldHJlc2dpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitSZXR1cm4gYSB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMWE1NTNjYmNmMTYyMzRjIGlucHV0PTUxN2U2OGRiOWNhMzJkZjZdKi8KIHsKLSAgICB1aWRfdCByZ2lkLCBlZ2lkLCBzZ2lkOworICAgIGdpZF90IHJnaWQsIGVnaWQsIHNnaWQ7CiAgICAgaWYgKGdldHJlc2dpZCgmcmdpZCwgJmVnaWQsICZzZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTk5OKSIsIF9QeUxvbmdfRnJvbUdpZChyZ2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlMb25nX0Zyb21HaWQoZWdpZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5TG9uZ19Gcm9tR2lkKHNnaWQpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUUkVTR0lEICovCisKIAogI2lmZGVmIFVTRV9YQVRUUlMKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHhhdHRyCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXR4YXR0cl9fZG9jX18sCi0iZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkgLT4gdmFsdWVcblxuXAotUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBnZXR4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKLSAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlKQorICAgIGF0dHJpYnV0ZTogcGF0aF90CisgICAgKgorICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKworUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguCisKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBnZXR4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2YyY2VkZTc0YmQ1ZDQxMiBpbnB1dD04YzhlYTNiYWI3OGQ4OWMyXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgcGF0aF90IGF0dHJpYnV0ZTsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEw7Ci0gICAgaW50IGk7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImdldHhhdHRyIjsKLSAgICBhdHRyaWJ1dGUuZnVuY3Rpb25fbmFtZSA9ICJnZXR4YXR0ciI7Ci0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAotICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJnZXR4YXR0ciIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImdldHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OwotCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKICAgICAgICAgdm9pZCAqcHRyOwogICAgICAgICBzc2l6ZV90IHJlc3VsdDsKICAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmZmVyX3NpemUpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpOwogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgICAgIGlmIChwYXRoLmZkID49IDApCi0gICAgICAgICAgICByZXN1bHQgPSBmZ2V0eGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGlmIChwYXRoLT5mZCA+PSAwKQorICAgICAgICAgICAgcmVzdWx0ID0gZmdldHhhdHRyKHBhdGgtPmZkLCBhdHRyaWJ1dGUtPm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgICAgIHJlc3VsdCA9IGdldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldHhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBsZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gbGdldHhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKIAogICAgICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBidWZmZXJfc2l6ZSkgewpAQCAtMTA2OTcsMTY4ICsxMDg1NiwxMzQgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXR4YXR0cl9fZG9jX18sCi0ic2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLVNldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuXG5cCi1wYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKLSAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5zZXR4YXR0cgorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUpCisgICAgYXR0cmlidXRlOiBwYXRoX3QKKyAgICB2YWx1ZTogUHlfYnVmZmVyCisgICAgZmxhZ3M6IGludCA9IDAKKyAgICAqCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitTZXQgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoIHRvIHZhbHVlLgorCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYjM5NWVmODI4ODBmZWEwIGlucHV0PWYwZDI2ODMzOTkyMDE1YzJdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBwYXRoX3QgYXR0cmlidXRlOwotICAgIFB5X2J1ZmZlciB2YWx1ZTsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3NpemVfdCByZXN1bHQ7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInNldHhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOwotICAgIG1lbXNldCgmdmFsdWUsIDAsIHNpemVvZih2YWx1ZSkpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLAotICAgICAgICBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKLSAgICAgICAgJnZhbHVlLCAmZmxhZ3MsCi0gICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInNldHhhdHRyIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgic2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZzZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBpZiAocGF0aC0+ZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnNldHhhdHRyKHBhdGgtPmZkLCBhdHRyaWJ1dGUtPm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5idWYsIHZhbHVlLT5sZW4sIGZsYWdzKTsKICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gc2V0eGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5idWYsIHZhbHVlLT5sZW4sIGZsYWdzKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGxzZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IGxzZXR4YXR0cihwYXRoLT5uYXJyb3csIGF0dHJpYnV0ZS0+bmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmJ1ZiwgdmFsdWUtPmxlbiwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKLQotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX18sCi0icmVtb3ZleGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKLXBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlbW92ZXhhdHRyCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9VHJ1ZSkKKyAgICBhdHRyaWJ1dGU6IHBhdGhfdAorICAgICoKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK1JlbW92ZSBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguCisKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbW92ZXhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZXhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mOTJiYjM5YWI5OTI2NTBkIGlucHV0PWNkYjU0ODM0MTYxZTMzMjldKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBwYXRoX3QgYXR0cmlidXRlOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHNzaXplX3QgcmVzdWx0OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJyZW1vdmV4YXR0ciI7Ci0gICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKLSAgICBhdHRyaWJ1dGUuZnVuY3Rpb25fbmFtZSA9ICJyZW1vdmV4YXR0ciI7Ci0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpyZW1vdmV4YXR0ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInJlbW92ZXhhdHRyIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgicmVtb3ZleGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZyZW1vdmV4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBpZiAocGF0aC0+ZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnJlbW92ZXhhdHRyKHBhdGgtPmZkLCBhdHRyaWJ1dGUtPm5hcnJvdyk7CiAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQotICAgICAgICByZXN1bHQgPSByZW1vdmV4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHJlbW92ZXhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3cpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gbHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gbHJlbW92ZXhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwotCi0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3R4YXR0cl9fZG9jX18sCi0ibGlzdHhhdHRyKHBhdGg9Jy4nLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotUmV0dXJuIGEgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGJlIGVpdGhlciBOb25lLCBhIHN0cmluZywgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1pZiBwYXRoIGlzIE5vbmUsIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKLSAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5saXN0eGF0dHIKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlLCBudWxsYWJsZT1UcnVlKSA9IE5vbmUKKyAgICAqCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitSZXR1cm4gYSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGF0aC4KKworcGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK2lmIHBhdGggaXMgTm9uZSwgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saXN0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4N2FkNmNlNTZlNDJhNGYgaW5wdXQ9MDhjY2E1M2FjMGIwN2MxM10qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIGNoYXIgKmJ1ZmZlciA9IE5VTEw7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGlzdHhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBwYXRoLmZkID0gLTE7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mJHA6bGlzdHhhdHRyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgibGlzdHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJsaXN0eGF0dHIiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgbmFtZSA9IHBhdGgubmFycm93ID8gcGF0aC5uYXJyb3cgOiAiLiI7CisgICAgbmFtZSA9IHBhdGgtPm5hcnJvdyA/IHBhdGgtPm5hcnJvdyA6ICIuIjsKKwogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIGNoYXIgKnN0YXJ0LCAqdHJhY2UsICplbmQ7CiAgICAgICAgIHNzaXplX3QgbGVuZ3RoOwpAQCAtMTA4NjYsNyArMTA5OTEsNyBAQAogICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOwogICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICAvKiBFUkFOR0UgKi8KLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciA9IFB5TWVtX01BTExPQyhidWZmZXJfc2l6ZSk7CkBAIC0xMDg3Niw4ICsxMTAwMSw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgICAgICBpZiAocGF0aC5mZCA+IC0xKQotICAgICAgICAgICAgbGVuZ3RoID0gZmxpc3R4YXR0cihwYXRoLmZkLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKHBhdGgtPmZkID4gLTEpCisgICAgICAgICAgICBsZW5ndGggPSBmbGlzdHhhdHRyKHBhdGgtPmZkLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKICAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQogICAgICAgICAgICAgbGVuZ3RoID0gbGlzdHhhdHRyKG5hbWUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOwogICAgICAgICBlbHNlCkBAIC0xMDg5MCw3ICsxMTAxNSw3IEBACiAgICAgICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTEwOTIzLDQzICsxMTA0OCw0MyBAQAogICAgIGJyZWFrOwogICAgIH0KIGV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBQeU1lbV9GUkVFKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLQogI2VuZGlmIC8qIFVTRV9YQVRUUlMgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfdXJhbmRvbV9fZG9jX18sCi0idXJhbmRvbShuKSAtPiBzdHJcblxuXAotUmV0dXJuIG4gcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVyYW5kb20KKworICAgIHNpemU6IFB5X3NzaXplX3QKKyAgICAvCisKK1JldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91cmFuZG9tKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3VyYW5kb21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTAwMTFmMDIxNTAxZjAzYiBpbnB1dD00MDY3Y2RiMWI2Nzc2YzI5XSovCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHJldDsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgaW50IHJlc3VsdDsKIAotICAgICAvKiBSZWFkIGFyZ3VtZW50cyAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp1cmFuZG9tIiwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA8IDApCiAgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKTsKLSAgICBpZiAocmV0ID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGJ5dGVzOwogfQogCiAvKiBUZXJtaW5hbCBzaXplIHF1ZXJ5aW5nICovCkBAIC0xMDk4Myw2ICsxMTEwOCw3IEBACiB9OwogCiAjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQorLyogQUMgMy41OiBmZCBzaG91bGQgYWNjZXB0IE5vbmUgKi8KIFB5RG9jX1NUUlZBUih0ZXJtc2l6ZV9fZG9jX18sCiAgICAgIlJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93IGFzIChjb2x1bW5zLCBsaW5lcykuXG4iICAgICAgICBcCiAgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMTA2OCwxMyArMTExOTQsMTYgQEAKIH0KICNlbmRpZiAvKiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jcHVfY291bnRfX2RvY19fLAotImNwdV9jb3VudCgpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLCBvciBOb25lIGlmIHRoaXMgdmFsdWUgY2Fubm90IGJlXG5cCi1lc3RhYmxpc2hlZC4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuY3B1X2NvdW50CisKK1JldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jcHVfY291bnQoUHlPYmplY3QgKnNlbGYpCitvc19jcHVfY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1OWVlN2Y2YmNlODMyYjggaW5wdXQ9ZDU1ZTJmOGYzODIzYTYyOF0qLwogewogICAgIGludCBuY3B1ID0gMDsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0xMTEwMywxMTEgKzExMjMyLDk0MyBAQAogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldF9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgImdldF9pbmhlcml0YWJsZShmZCkgLT4gYm9vbFxuIiBcCi0gICAgIlxuIiBcCi0gICAgIkdldCB0aGUgY2xvc2Utb24tZXhlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuIik7CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldF9pbmhlcml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRfaW5oZXJpdGFibGUgLT4gYm9vbAorCisgICAgZmQ6IGludAorICAgIC8KKworR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2MTEwYmIzNmVmYWEyMWUgaW5wdXQ9ODlhYzAwOGRjOWFiNmI5NV0qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgaW5oZXJpdGFibGU7CisgICAgaW50IHJldHVybl92YWx1ZTsKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRfaW5oZXJpdGFibGUiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KLSAgICBpbmhlcml0YWJsZSA9IF9QeV9nZXRfaW5oZXJpdGFibGUoZmQpOwotICAgIGlmIChpbmhlcml0YWJsZSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoaW5oZXJpdGFibGUpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRfaW5oZXJpdGFibGVfX2RvY19fLAotICAgICJzZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlKVxuIiBcCi0gICAgIlxuIiBcCi0gICAgIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0X2luaGVyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldF9pbmhlcml0YWJsZQorICAgIGZkOiBpbnQKKyAgICBpbmhlcml0YWJsZTogaW50CisgICAgLworCitTZXQgdGhlIGluaGVyaXRhYmxlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBpbmhlcml0YWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYWM1YzZjZTg2MjNmMDQ1IGlucHV0PTljZWFlYWQ4N2ExZTI0MDJdKi8KIHsKLSAgICBpbnQgZmQsIGluaGVyaXRhYmxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLCAmZmQsICZpbmhlcml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaW50IHJlc3VsdDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogCi0gICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCBOVUxMKSA8IDApCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHJlc3VsdCA9IF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCBOVUxMKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCiAjaWZkZWYgTVNfV0lORE9XUwotUHlEb2NfU1RSVkFSKGdldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19fLAotICAgICJnZXRfaGFuZGxlX2luaGVyaXRhYmxlKGZkKSAtPiBib29sXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldF9oYW5kbGVfaW5oZXJpdGFibGUgLT4gYm9vbAorICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICAvCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYjdiM2UxYjQzZjMxMmI2IGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CiAgICAgRFdPUkQgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX0lOVFBUUiAiOmdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAmaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIUdldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpaGFuZGxlLCAmZmxhZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZmxhZ3MgJiBIQU5ETEVfRkxBR19JTkhFUklUKTsKKyAgICByZXR1cm4gZmxhZ3MgJiBIQU5ETEVfRkxBR19JTkhFUklUOwogfQogCi1QeURvY19TVFJWQVIoc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgInNldF9oYW5kbGVfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlKVxuIiBcCi0gICAgIlxuIiBcCi0gICAgIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGhhbmRsZS4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRfaGFuZGxlX2luaGVyaXRhYmxlCisgICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGluaGVyaXRhYmxlOiBib29sCisgICAgLworCitTZXQgdGhlIGluaGVyaXRhYmxlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBoYW5kbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMmUxMTFhOTZjOWViMjk2IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KIHsKLSAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKLSAgICBEV09SRCBmbGFnczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfSU5UUFRSICJpOnNldF9oYW5kbGVfaW5oZXJpdGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChpbmhlcml0YWJsZSkKLSAgICAgICAgZmxhZ3MgPSBIQU5ETEVfRkxBR19JTkhFUklUOwotICAgIGVsc2UKLSAgICAgICAgZmxhZ3MgPSAwOworICAgIERXT1JEIGZsYWdzID0gaW5oZXJpdGFibGUgPyBIQU5ETEVfRkxBR19JTkhFUklUIDogMDsKICAgICBpZiAoIVNldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpaGFuZGxlLCBIQU5ETEVfRkxBR19JTkhFUklULCBmbGFncykpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKKyNpZm5kZWYgTVNfV0lORE9XUworUHlEb2NfU1RSVkFSKGdldF9ibG9ja2luZ19fZG9jX18sCisgICAgImdldF9ibG9ja2luZyhmZCkgLT4gYm9vbFxuIiBcCisgICAgIlxuIiBcCisgICAgIkdldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yOlxuIiBcCisgICAgIkZhbHNlIGlmIHRoZSBPX05PTkJMT0NLIGZsYWcgaXMgc2V0LCBUcnVlIGlmIHRoZSBmbGFnIGlzIGNsZWFyZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK3Bvc2l4X2dldF9ibG9ja2luZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkOworICAgIGludCBibG9ja2luZzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRfYmxvY2tpbmciLCAmZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgYmxvY2tpbmcgPSBfUHlfZ2V0X2Jsb2NraW5nKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIGlmIChibG9ja2luZyA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoYmxvY2tpbmcpOworfQorCitQeURvY19TVFJWQVIoc2V0X2Jsb2NraW5nX19kb2NfXywKKyAgICAic2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZylcbiIgXAorICAgICJcbiIgXAorICAgICJTZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuXG4iIFwKKyAgICAiU2V0IHRoZSBPX05PTkJMT0NLIGZsYWcgaWYgYmxvY2tpbmcgaXMgRmFsc2UsXG4iIFwKKyAgICAiY2xlYXIgdGhlIE9fTk9OQkxPQ0sgZmxhZyBvdGhlcndpc2UuIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK3Bvc2l4X3NldF9ibG9ja2luZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBibG9ja2luZywgcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgICAvKiAhTVNfV0lORE9XUyAqLworCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2FuZGlyX19kb2NfXywKKyJzY2FuZGlyKHBhdGg9Jy4nKSAtPiBpdGVyYXRvciBvZiBEaXJFbnRyeSBvYmplY3RzIGZvciBnaXZlbiBwYXRoIik7CisKK3N0YXRpYyBjaGFyICpmb2xsb3dfc3ltbGlua3Nfa2V5d29yZHNbXSA9IHsiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKnN0YXQ7CisgICAgUHlPYmplY3QgKmxzdGF0OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHdpbjMyX2xzdGF0OworICAgIF9faW50NjQgd2luMzJfZmlsZV9pbmRleDsKKyAgICBpbnQgZ290X2ZpbGVfaW5kZXg7CisjZWxzZSAvKiBQT1NJWCAqLworI2lmZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOworI2VuZGlmCisgICAgaW5vX3QgZF9pbm87CisjZW5kaWYKK30gRGlyRW50cnk7CisKK3N0YXRpYyB2b2lkCitEaXJFbnRyeV9kZWFsbG9jKERpckVudHJ5ICplbnRyeSkKK3sKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5uYW1lKTsKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5wYXRoKTsKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5zdGF0KTsKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5sc3RhdCk7CisgICAgUHlfVFlQRShlbnRyeSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopZW50cnkpOworfQorCisvKiBGb3J3YXJkIHJlZmVyZW5jZSAqLworc3RhdGljIGludAorRGlyRW50cnlfdGVzdF9tb2RlKERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzLCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHMpOworCisvKiBTZXQgZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIDAgZm9yIEZhbHNlLCAxIGZvciBUcnVlICovCitzdGF0aWMgaW50CitEaXJFbnRyeV9pc19zeW1saW5rKERpckVudHJ5ICpzZWxmKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICByZXR1cm4gKHNlbGYtPndpbjMyX2xzdGF0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZMTks7CisjZWxpZiBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICAvKiBQT1NJWCAqLworICAgIGlmIChzZWxmLT5kX3R5cGUgIT0gRFRfVU5LTk9XTikKKyAgICAgICAgcmV0dXJuIHNlbGYtPmRfdHlwZSA9PSBEVF9MTks7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRGlyRW50cnlfdGVzdF9tb2RlKHNlbGYsIDAsIFNfSUZMTkspOworI2Vsc2UKKyAgICAvKiBQT1NJWCB3aXRob3V0IGRfdHlwZSAqLworICAgIHJldHVybiBEaXJFbnRyeV90ZXN0X21vZGUoc2VsZiwgMCwgU19JRkxOSyk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3B5X2lzX3N5bWxpbmsoRGlyRW50cnkgKnNlbGYpCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIHJlc3VsdCA9IERpckVudHJ5X2lzX3N5bWxpbmsoc2VsZik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZmV0Y2hfc3RhdChEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgd2NoYXJfdCAqcGF0aDsKKworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aCwgJnN0KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0X3cocGF0aCwgJnN0KTsKKworICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHNlbGYtPnBhdGgpOworICAgIH0KKyNlbHNlIC8qIFBPU0lYICovCisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIGNoYXIgKnBhdGg7CisKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihzZWxmLT5wYXRoLCAmYnl0ZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworCisgICAgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworCisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHNlbGYtPnBhdGgpOworI2VuZGlmCisKKyAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZ2V0X2xzdGF0KERpckVudHJ5ICpzZWxmKQoreworICAgIGlmICghc2VsZi0+bHN0YXQpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHNlbGYtPmxzdGF0ID0gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc2VsZi0+d2luMzJfbHN0YXQpOworI2Vsc2UgLyogUE9TSVggKi8KKyAgICAgICAgc2VsZi0+bHN0YXQgPSBEaXJFbnRyeV9mZXRjaF9zdGF0KHNlbGYsIDApOworI2VuZGlmCisgICAgfQorICAgIFB5X1hJTkNSRUYoc2VsZi0+bHN0YXQpOworICAgIHJldHVybiBzZWxmLT5sc3RhdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2dldF9zdGF0KERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworICAgIGlmICghZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXR1cm4gRGlyRW50cnlfZ2V0X2xzdGF0KHNlbGYpOworCisgICAgaWYgKCFzZWxmLT5zdGF0KSB7CisgICAgICAgIGludCByZXN1bHQgPSBEaXJFbnRyeV9pc19zeW1saW5rKHNlbGYpOworICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYtPnN0YXQgPSBEaXJFbnRyeV9mZXRjaF9zdGF0KHNlbGYsIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5zdGF0ID0gRGlyRW50cnlfZ2V0X2xzdGF0KHNlbGYpOworICAgIH0KKworICAgIFB5X1hJTkNSRUYoc2VsZi0+c3RhdCk7CisgICAgcmV0dXJuIHNlbGYtPnN0YXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9zdGF0KERpckVudHJ5ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInwkcDpEaXJFbnRyeS5zdGF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3Nfa2V5d29yZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBEaXJFbnRyeV9nZXRfc3RhdChzZWxmLCBmb2xsb3dfc3ltbGlua3MpOworfQorCisvKiBTZXQgZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIDAgZm9yIEZhbHNlLCAxIGZvciBUcnVlICovCitzdGF0aWMgaW50CitEaXJFbnRyeV90ZXN0X21vZGUoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MsIHVuc2lnbmVkIHNob3J0IG1vZGVfYml0cykKK3sKKyAgICBQeU9iamVjdCAqc3RhdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0X21vZGUgPSBOVUxMOworICAgIGxvbmcgbW9kZTsKKyAgICBpbnQgcmVzdWx0OworI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChIQVZFX0RJUkVOVF9EX1RZUEUpCisgICAgaW50IGlzX3N5bWxpbms7CisgICAgaW50IG5lZWRfc3RhdDsKKyNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB1bnNpZ25lZCBsb25nIGRpcl9iaXRzOworI2VuZGlmCisgICAgX1B5X0lERU5USUZJRVIoc3RfbW9kZSk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaXNfc3ltbGluayA9IChzZWxmLT53aW4zMl9sc3RhdC5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGTE5LOworICAgIG5lZWRfc3RhdCA9IGZvbGxvd19zeW1saW5rcyAmJiBpc19zeW1saW5rOworI2VsaWYgZGVmaW5lZChIQVZFX0RJUkVOVF9EX1RZUEUpCisgICAgaXNfc3ltbGluayA9IHNlbGYtPmRfdHlwZSA9PSBEVF9MTks7CisgICAgbmVlZF9zdGF0ID0gc2VsZi0+ZF90eXBlID09IERUX1VOS05PV04gfHwgKGZvbGxvd19zeW1saW5rcyAmJiBpc19zeW1saW5rKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICBpZiAobmVlZF9zdGF0KSB7CisjZW5kaWYKKyAgICAgICAgc3RhdCA9IERpckVudHJ5X2dldF9zdGF0KHNlbGYsIGZvbGxvd19zeW1saW5rcyk7CisgICAgICAgIGlmICghc3RhdCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgLyogSWYgZmlsZSBkb2Vzbid0IGV4aXN0IChhbnltb3JlKSwgdGhlbiByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAoaS5lLiwgc2F5IGl0J3Mgbm90IGEgZmlsZS9kaXJlY3RvcnkpICovCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3RfbW9kZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3RhdCwgJlB5SWRfc3RfbW9kZSk7CisgICAgICAgIGlmICghc3RfbW9kZSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgbW9kZSA9IFB5TG9uZ19Bc0xvbmcoc3RfbW9kZSk7CisgICAgICAgIGlmIChtb2RlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBQeV9DTEVBUihzdF9tb2RlKTsKKyAgICAgICAgUHlfQ0xFQVIoc3RhdCk7CisgICAgICAgIHJlc3VsdCA9IChtb2RlICYgU19JRk1UKSA9PSBtb2RlX2JpdHM7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICB9CisgICAgZWxzZSBpZiAoaXNfc3ltbGluaykgeworICAgICAgICBhc3NlcnQobW9kZV9iaXRzICE9IFNfSUZMTkspOworICAgICAgICByZXN1bHQgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KG1vZGVfYml0cyA9PSBTX0lGRElSIHx8IG1vZGVfYml0cyA9PSBTX0lGUkVHKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGRpcl9iaXRzID0gc2VsZi0+d2luMzJfbHN0YXQuc3RfZmlsZV9hdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZOworICAgICAgICBpZiAobW9kZV9iaXRzID09IFNfSUZESVIpCisgICAgICAgICAgICByZXN1bHQgPSBkaXJfYml0cyAhPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBkaXJfYml0cyA9PSAwOworI2Vsc2UgLyogUE9TSVggKi8KKyAgICAgICAgaWYgKG1vZGVfYml0cyA9PSBTX0lGRElSKQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi0+ZF90eXBlID09IERUX0RJUjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi0+ZF90eXBlID09IERUX1JFRzsKKyNlbmRpZgorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihzdF9tb2RlKTsKKyAgICBQeV9YREVDUkVGKHN0YXQpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3B5X3Rlc3RfbW9kZShEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcywgdW5zaWduZWQgc2hvcnQgbW9kZV9iaXRzKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICByZXN1bHQgPSBEaXJFbnRyeV90ZXN0X21vZGUoc2VsZiwgZm9sbG93X3N5bWxpbmtzLCBtb2RlX2JpdHMpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2lzX2RpcihEaXJFbnRyeSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8JHA6RGlyRW50cnkuaXNfZGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3Nfa2V5d29yZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBEaXJFbnRyeV9weV90ZXN0X21vZGUoc2VsZiwgZm9sbG93X3N5bWxpbmtzLCBTX0lGRElSKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2lzX2ZpbGUoRGlyRW50cnkgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifCRwOkRpckVudHJ5LmlzX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19rZXl3b3JkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIERpckVudHJ5X3B5X3Rlc3RfbW9kZShzZWxmLCBmb2xsb3dfc3ltbGlua3MsIFNfSUZSRUcpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfaW5vZGUoRGlyRW50cnkgKnNlbGYpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghc2VsZi0+Z290X2ZpbGVfaW5kZXgpIHsKKyAgICAgICAgd2NoYXJfdCAqcGF0aDsKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0OworCisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOworICAgICAgICBpZiAoIXBhdGgpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAod2luMzJfbHN0YXRfdyhwYXRoLCAmc3RhdCkgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7CisgICAgICAgIH0KKworICAgICAgICBzZWxmLT53aW4zMl9maWxlX2luZGV4ID0gc3RhdC5zdF9pbm87CisgICAgICAgIHNlbGYtPmdvdF9maWxlX2luZGV4ID0gMTsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKKyNlbHNlIC8qIFBPU0lYICovCisjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+ZF9pbm8pOworI2Vsc2UKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmRfaW5vKTsKKyNlbmRpZgorI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9yZXByKERpckVudHJ5ICpzZWxmKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPERpckVudHJ5ICVSPiIsIHNlbGYtPm5hbWUpOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYgRGlyRW50cnlfbWVtYmVyc1tdID0geworICAgIHsibmFtZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihEaXJFbnRyeSwgbmFtZSksIFJFQURPTkxZLAorICAgICAidGhlIGVudHJ5J3MgYmFzZSBmaWxlbmFtZSwgcmVsYXRpdmUgdG8gc2NhbmRpcigpIFwicGF0aFwiIGFyZ3VtZW50In0sCisgICAgeyJwYXRoIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBwYXRoKSwgUkVBRE9OTFksCisgICAgICJ0aGUgZW50cnkncyBmdWxsIHBhdGggbmFtZTsgZXF1aXZhbGVudCB0byBvcy5wYXRoLmpvaW4oc2NhbmRpcl9wYXRoLCBlbnRyeS5uYW1lKSJ9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIERpckVudHJ5X21ldGhvZHNbXSA9IHsKKyAgICB7ImlzX2RpciIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9pc19kaXIsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICJyZXR1cm4gVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBkaXJlY3Rvcnk7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7ImlzX2ZpbGUiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfaXNfZmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgInJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBpcyBhIGZpbGU7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7ImlzX3N5bWxpbmsiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfcHlfaXNfc3ltbGluaywgTUVUSF9OT0FSR1MsCisgICAgICJyZXR1cm4gVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rOyBjYWNoZWQgcGVyIGVudHJ5IgorICAgIH0sCisgICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X3N0YXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICJyZXR1cm4gc3RhdF9yZXN1bHQgb2JqZWN0IGZvciB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7Imlub2RlIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lub2RlLCBNRVRIX05PQVJHUywKKyAgICAgInJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiLAorICAgIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IERpckVudHJ5VHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICBNT0ROQU1FICIuRGlyRW50cnkiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihEaXJFbnRyeSksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpRGlyRW50cnlfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAocmVwcmZ1bmMpRGlyRW50cnlfcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIERpckVudHJ5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgRGlyRW50cnlfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KK307CisKKyNpZmRlZiBNU19XSU5ET1dTCisKK3N0YXRpYyB3Y2hhcl90ICoKK2pvaW5fcGF0aF9maWxlbmFtZVcod2NoYXJfdCAqcGF0aF93aWRlLCB3Y2hhcl90KiBmaWxlbmFtZSkKK3sKKyAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICB3Y2hhcl90ICpyZXN1bHQ7CisgICAgd2NoYXJfdCBjaDsKKworICAgIGlmICghcGF0aF93aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgcGF0aF93aWRlID0gTCIuIjsKKyAgICAgICAgcGF0aF9sZW4gPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aF9sZW4gPSB3Y3NsZW4ocGF0aF93aWRlKTsKKyAgICB9CisKKyAgICAvKiBUaGUgKzEncyBhcmUgZm9yIHRoZSBwYXRoIHNlcGFyYXRvciBhbmQgdGhlIE5VTCAqLworICAgIHNpemUgPSBwYXRoX2xlbiArIDEgKyB3Y3NsZW4oZmlsZW5hbWUpICsgMTsKKyAgICByZXN1bHQgPSBQeU1lbV9OZXcod2NoYXJfdCwgc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHdjc2NweShyZXN1bHQsIHBhdGhfd2lkZSk7CisgICAgaWYgKHBhdGhfbGVuID4gMCkgeworICAgICAgICBjaCA9IHJlc3VsdFtwYXRoX2xlbiAtIDFdOworICAgICAgICBpZiAoY2ggIT0gU0VQICYmIGNoICE9IEFMVFNFUCAmJiBjaCAhPSBMJzonKQorICAgICAgICAgICAgcmVzdWx0W3BhdGhfbGVuKytdID0gU0VQOworICAgICAgICB3Y3NjcHkocmVzdWx0ICsgcGF0aF9sZW4sIGZpbGVuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2Zyb21fZmluZF9kYXRhKHBhdGhfdCAqcGF0aCwgV0lOMzJfRklORF9EQVRBVyAqZGF0YVcpCit7CisgICAgRGlyRW50cnkgKmVudHJ5OworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVfaW5mbzsKKyAgICBVTE9ORyByZXBhcnNlX3RhZzsKKyAgICB3Y2hhcl90ICpqb2luZWRfcGF0aDsKKworICAgIGVudHJ5ID0gUHlPYmplY3RfTmV3KERpckVudHJ5LCAmRGlyRW50cnlUeXBlKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbnRyeS0+bmFtZSA9IE5VTEw7CisgICAgZW50cnktPnBhdGggPSBOVUxMOworICAgIGVudHJ5LT5zdGF0ID0gTlVMTDsKKyAgICBlbnRyeS0+bHN0YXQgPSBOVUxMOworICAgIGVudHJ5LT5nb3RfZmlsZV9pbmRleCA9IDA7CisKKyAgICBlbnRyeS0+bmFtZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZGF0YVctPmNGaWxlTmFtZSwgLTEpOworICAgIGlmICghZW50cnktPm5hbWUpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZVcocGF0aC0+d2lkZSwgZGF0YVctPmNGaWxlTmFtZSk7CisgICAgaWYgKCFqb2luZWRfcGF0aCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGVudHJ5LT5wYXRoID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihqb2luZWRfcGF0aCwgLTEpOworICAgIFB5TWVtX0ZyZWUoam9pbmVkX3BhdGgpOworICAgIGlmICghZW50cnktPnBhdGgpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CisgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmZpbGVfaW5mbywgcmVwYXJzZV90YWcsICZlbnRyeS0+d2luMzJfbHN0YXQpOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWVudHJ5OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZW50cnkpOworICAgIHJldHVybiBOVUxMOworfQorCisjZWxzZSAvKiBQT1NJWCAqLworCitzdGF0aWMgY2hhciAqCitqb2luX3BhdGhfZmlsZW5hbWUoY2hhciAqcGF0aF9uYXJyb3csIGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKK3sKKyAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpyZXN1bHQ7CisKKyAgICBpZiAoIXBhdGhfbmFycm93KSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgcGF0aF9uYXJyb3cgPSAiLiI7CisgICAgICAgIHBhdGhfbGVuID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhdGhfbGVuID0gc3RybGVuKHBhdGhfbmFycm93KTsKKyAgICB9CisKKyAgICBpZiAoZmlsZW5hbWVfbGVuID09IC0xKQorICAgICAgICBmaWxlbmFtZV9sZW4gPSBzdHJsZW4oZmlsZW5hbWUpOworCisgICAgLyogVGhlICsxJ3MgYXJlIGZvciB0aGUgcGF0aCBzZXBhcmF0b3IgYW5kIHRoZSBOVUwgKi8KKyAgICBzaXplID0gcGF0aF9sZW4gKyAxICsgZmlsZW5hbWVfbGVuICsgMTsKKyAgICByZXN1bHQgPSBQeU1lbV9OZXcoY2hhciwgc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN0cmNweShyZXN1bHQsIHBhdGhfbmFycm93KTsKKyAgICBpZiAocGF0aF9sZW4gPiAwICYmIHJlc3VsdFtwYXRoX2xlbiAtIDFdICE9ICcvJykKKyAgICAgICAgcmVzdWx0W3BhdGhfbGVuKytdID0gJy8nOworICAgIHN0cmNweShyZXN1bHQgKyBwYXRoX2xlbiwgZmlsZW5hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8ocGF0aF90ICpwYXRoLCBjaGFyICpuYW1lLCBQeV9zc2l6ZV90IG5hbWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlub190IGRfaW5vCisjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisgICAgICAgICAgICAgICAgICAgICAgICAgLCB1bnNpZ25lZCBjaGFyIGRfdHlwZQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIERpckVudHJ5ICplbnRyeTsKKyAgICBjaGFyICpqb2luZWRfcGF0aDsKKworICAgIGVudHJ5ID0gUHlPYmplY3RfTmV3KERpckVudHJ5LCAmRGlyRW50cnlUeXBlKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbnRyeS0+bmFtZSA9IE5VTEw7CisgICAgZW50cnktPnBhdGggPSBOVUxMOworICAgIGVudHJ5LT5zdGF0ID0gTlVMTDsKKyAgICBlbnRyeS0+bHN0YXQgPSBOVUxMOworCisgICAgam9pbmVkX3BhdGggPSBqb2luX3BhdGhfZmlsZW5hbWUocGF0aC0+bmFycm93LCBuYW1lLCBuYW1lX2xlbik7CisgICAgaWYgKCFqb2luZWRfcGF0aCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmICghcGF0aC0+bmFycm93IHx8ICFQeUJ5dGVzX0NoZWNrKHBhdGgtPm9iamVjdCkpIHsKKyAgICAgICAgZW50cnktPm5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShuYW1lLCBuYW1lX2xlbik7CisgICAgICAgIGVudHJ5LT5wYXRoID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChqb2luZWRfcGF0aCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnRyeS0+bmFtZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUobmFtZSwgbmFtZV9sZW4pOworICAgICAgICBlbnRyeS0+cGF0aCA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhqb2luZWRfcGF0aCk7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoam9pbmVkX3BhdGgpOworICAgIGlmICghZW50cnktPm5hbWUgfHwgIWVudHJ5LT5wYXRoKQorICAgICAgICBnb3RvIGVycm9yOworCisjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisgICAgZW50cnktPmRfdHlwZSA9IGRfdHlwZTsKKyNlbmRpZgorICAgIGVudHJ5LT5kX2lubyA9IGRfaW5vOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWVudHJ5OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGVudHJ5KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2VuZGlmCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBwYXRoX3QgcGF0aDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhhbmRsZTsKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbGVfZGF0YTsKKyAgICBpbnQgZmlyc3RfdGltZTsKKyNlbHNlIC8qIFBPU0lYICovCisgICAgRElSICpkaXJwOworI2VuZGlmCit9IFNjYW5kaXJJdGVyYXRvcjsKKworI2lmZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm47CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgRmluZENsb3NlKGl0ZXJhdG9yLT5oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaXRlcmF0b3ItPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2l0ZXJuZXh0KFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyAqZmlsZV9kYXRhID0gJml0ZXJhdG9yLT5maWxlX2RhdGE7CisgICAgQk9PTCBzdWNjZXNzOworCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UgKi8KKyAgICBpZiAoaXRlcmF0b3ItPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoIWl0ZXJhdG9yLT5maXJzdF90aW1lKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBzdWNjZXNzID0gRmluZE5leHRGaWxlVyhpdGVyYXRvci0+aGFuZGxlLCBmaWxlX2RhdGEpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT19NT1JFX0ZJTEVTKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICAgICAgICAgIC8qIE5vIG1vcmUgZmlsZXMgZm91bmQgaW4gZGlyZWN0b3J5LCBzdG9wIGl0ZXJhdGluZyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGl0ZXJhdG9yLT5maXJzdF90aW1lID0gMDsKKworICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KKyAgICAgICAgaWYgKHdjc2NtcChmaWxlX2RhdGEtPmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgorICAgICAgICAgICAgICAgIHdjc2NtcChmaWxlX2RhdGEtPmNGaWxlTmFtZSwgTCIuLiIpICE9IDApCisgICAgICAgICAgICByZXR1cm4gRGlyRW50cnlfZnJvbV9maW5kX2RhdGEoJml0ZXJhdG9yLT5wYXRoLCBmaWxlX2RhdGEpOworCisgICAgICAgIC8qIExvb3AgdGlsbCB3ZSBnZXQgYSBub24tZG90IGRpcmVjdG9yeSBvciBmaW5pc2ggaXRlcmF0aW5nICovCisgICAgfQorCisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbHNlIC8qIFBPU0lYICovCisKK3N0YXRpYyB2b2lkCitTY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICBpZiAoIWl0ZXJhdG9yLT5kaXJwKQorICAgICAgICByZXR1cm47CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgY2xvc2VkaXIoaXRlcmF0b3ItPmRpcnApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaXRlcmF0b3ItPmRpcnAgPSBOVUxMOworICAgIHJldHVybjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9pdGVybmV4dChTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIHN0cnVjdCBkaXJlbnQgKmRpcmVudHA7CisgICAgUHlfc3NpemVfdCBuYW1lX2xlbjsKKyAgICBpbnQgaXNfZG90OworCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UgKi8KKyAgICBpZiAoIWl0ZXJhdG9yLT5kaXJwKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBkaXJlbnRwID0gcmVhZGRpcihpdGVyYXRvci0+ZGlycCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKCFkaXJlbnRwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICAgICAgLyogTm8gbW9yZSBmaWxlcyBmb3VuZCBpbiBkaXJlY3RvcnksIHN0b3AgaXRlcmF0aW5nICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLworICAgICAgICBuYW1lX2xlbiA9IE5BTUxFTihkaXJlbnRwKTsKKyAgICAgICAgaXNfZG90ID0gZGlyZW50cC0+ZF9uYW1lWzBdID09ICcuJyAmJgorICAgICAgICAgICAgICAgICAobmFtZV9sZW4gPT0gMSB8fCAoZGlyZW50cC0+ZF9uYW1lWzFdID09ICcuJyAmJiBuYW1lX2xlbiA9PSAyKSk7CisgICAgICAgIGlmICghaXNfZG90KSB7CisgICAgICAgICAgICByZXR1cm4gRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKCZpdGVyYXRvci0+cGF0aCwgZGlyZW50cC0+ZF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2xlbiwgZGlyZW50cC0+ZF9pbm8KKyNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBkaXJlbnRwLT5kX3R5cGUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLyogTG9vcCB0aWxsIHdlIGdldCBhIG5vbi1kb3QgZGlyZWN0b3J5IG9yIGZpbmlzaCBpdGVyYXRpbmcgKi8KKyAgICB9CisKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2VuZGlmCisKK3N0YXRpYyB2b2lkCitTY2FuZGlySXRlcmF0b3JfZGVhbGxvYyhTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisgICAgUHlfWERFQ1JFRihpdGVyYXRvci0+cGF0aC5vYmplY3QpOworICAgIHBhdGhfY2xlYW51cCgmaXRlcmF0b3ItPnBhdGgpOworICAgIFB5X1RZUEUoaXRlcmF0b3IpLT50cF9mcmVlKChQeU9iamVjdCAqKWl0ZXJhdG9yKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCBTY2FuZGlySXRlcmF0b3JUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRE5BTUUgIi5TY2FuZGlySXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFNjYW5kaXJJdGVyYXRvciksICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilTY2FuZGlySXRlcmF0b3JfZGVhbGxvYywgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylTY2FuZGlySXRlcmF0b3JfaXRlcm5leHQsIC8qIHRwX2l0ZXJuZXh0ICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NhbmRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcjsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3Y2hhcl90ICpwYXRoX3N0clc7CisjZWxzZQorICAgIGNoYXIgKnBhdGg7CisjZW5kaWYKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfTmV3KFNjYW5kaXJJdGVyYXRvciwgJlNjYW5kaXJJdGVyYXRvclR5cGUpOworICAgIGlmICghaXRlcmF0b3IpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbXNldCgmaXRlcmF0b3ItPnBhdGgsIDAsIHNpemVvZihwYXRoX3QpKTsKKyAgICBpdGVyYXRvci0+cGF0aC5mdW5jdGlvbl9uYW1lID0gInNjYW5kaXIiOworICAgIGl0ZXJhdG9yLT5wYXRoLm51bGxhYmxlID0gMTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpdGVyYXRvci0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisjZWxzZQorICAgIGl0ZXJhdG9yLT5kaXJwID0gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOnNjYW5kaXIiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJml0ZXJhdG9yLT5wYXRoKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIHBhdGhfY29udmVydGVyIGRvZXNuJ3Qga2VlcCBwYXRoLm9iamVjdCBhcm91bmQsIHNvIGRvIGl0CisgICAgICAgbWFudWFsbHkgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgaXRlcmF0b3IgaGVyZSAodGhlIHJlZmNvdW50CisgICAgICAgaXMgZGVjcmVtZW50ZWQgaW4gU2NhbmRpckl0ZXJhdG9yX2RlYWxsb2MpCisgICAgKi8KKyAgICBQeV9YSU5DUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGl0ZXJhdG9yLT5wYXRoLm5hcnJvdykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnNjYW5kaXIoKSBkb2Vzbid0IHN1cHBvcnQgYnl0ZXMgcGF0aCBvbiBXaW5kb3dzLCB1c2UgVW5pY29kZSBpbnN0ZWFkIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGl0ZXJhdG9yLT5maXJzdF90aW1lID0gMTsKKworICAgIHBhdGhfc3RyVyA9IGpvaW5fcGF0aF9maWxlbmFtZVcoaXRlcmF0b3ItPnBhdGgud2lkZSwgTCIqLioiKTsKKyAgICBpZiAoIXBhdGhfc3RyVykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+aGFuZGxlID0gRmluZEZpcnN0RmlsZVcocGF0aF9zdHJXLCAmaXRlcmF0b3ItPmZpbGVfZGF0YSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0ZyZWUocGF0aF9zdHJXKTsKKworICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHBhdGhfZXJyb3IoJml0ZXJhdG9yLT5wYXRoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisjZWxzZSAvKiBQT1NJWCAqLworICAgIGlmIChpdGVyYXRvci0+cGF0aC5uYXJyb3cpCisgICAgICAgIHBhdGggPSBpdGVyYXRvci0+cGF0aC5uYXJyb3c7CisgICAgZWxzZQorICAgICAgICBwYXRoID0gIi4iOworCisgICAgZXJybm8gPSAwOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+ZGlycCA9IG9wZW5kaXIocGF0aCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghaXRlcmF0b3ItPmRpcnApIHsKKyAgICAgICAgcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0ZXJhdG9yOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiBOVUxMOworfQorCisKKyNpbmNsdWRlICJjbGluaWMvcG9zaXhtb2R1bGUuYy5oIgogCiAvKltjbGluaWMgaW5wdXRdCiBkdW1wIGJ1ZmZlcgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotCi0jaWZuZGVmIE9TX1RUWU5BTUVfTUVUSE9EREVGCi0gICAgI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RUWU5BTUVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVkMDcxYmJjOGY0OWVhMTIgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLwogCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwb3NpeF9tZXRob2RzW10gPSB7CkBAIC0xMTIxNSw3MSArMTIxNzYsMjYgQEAKICAgICBPU19TVEFUX01FVEhPRERFRgogICAgIE9TX0FDQ0VTU19NRVRIT0RERUYKICAgICBPU19UVFlOQU1FX01FVEhPRERFRgotCi0gICAgeyJjaGRpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hkaXJfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0NIRkxBR1MKLSAgICB7ImNoZmxhZ3MiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NoZmxhZ3NfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0NIRkxBR1MgKi8KLSAgICB7ImNobW9kIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG1vZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG1vZF9fZG9jX199LAotI2lmZGVmIEhBVkVfRkNITU9ECi0gICAgeyJmY2htb2QiLCAgICAgICAgICBwb3NpeF9mY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZmNobW9kX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GQ0hNT0QgKi8KLSNpZmRlZiBIQVZFX0NIT1dOCi0gICAgeyJjaG93biIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hvd24sCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hvd25fX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0NIT1dOICovCi0jaWZkZWYgSEFWRV9MQ0hNT0QKLSAgICB7ImxjaG1vZCIsICAgICAgICAgIHBvc2l4X2xjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sY2htb2RfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0xDSE1PRCAqLwotI2lmZGVmIEhBVkVfRkNIT1dOCi0gICAgeyJmY2hvd24iLCAgICAgICAgICBwb3NpeF9mY2hvd24sIE1FVEhfVkFSQVJHUywgcG9zaXhfZmNob3duX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GQ0hPV04gKi8KLSNpZmRlZiBIQVZFX0xDSEZMQUdTCi0gICAgeyJsY2hmbGFncyIsICAgICAgICBwb3NpeF9sY2hmbGFncywgTUVUSF9WQVJBUkdTLCBwb3NpeF9sY2hmbGFnc19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTENIRkxBR1MgKi8KLSNpZmRlZiBIQVZFX0xDSE9XTgotICAgIHsibGNob3duIiwgICAgICAgICAgcG9zaXhfbGNob3duLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaG93bl9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTENIT1dOICovCi0jaWZkZWYgSEFWRV9DSFJPT1QKLSAgICB7ImNocm9vdCIsICAgICAgICAgIHBvc2l4X2Nocm9vdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaHJvb3RfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfQ1RFUk1JRAotICAgIHsiY3Rlcm1pZCIsICAgICAgICAgcG9zaXhfY3Rlcm1pZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2N0ZXJtaWRfX2RvY19ffSwKLSNlbmRpZgotICAgIHsiZ2V0Y3dkIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldGN3ZF91bmljb2RlLAotICAgIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRjd2RfX2RvY19ffSwKLSAgICB7ImdldGN3ZGIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9nZXRjd2RfYnl0ZXMsCi0gICAgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGN3ZGJfX2RvY19ffSwKLSNpZiBkZWZpbmVkKEhBVkVfTElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsibGluayIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlua19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotICAgIHsibGlzdGRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3RkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdGRpcl9fZG9jX199LAotICAgIHsibHN0YXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xzdGF0LAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xzdGF0X19kb2NfX30sCi0gICAgeyJta2RpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtkaXJfX2RvY19ffSwKLSNpZmRlZiBIQVZFX05JQ0UKLSAgICB7Im5pY2UiLCAgICAgICAgICAgIHBvc2l4X25pY2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfbmljZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTklDRSAqLwotI2lmZGVmIEhBVkVfR0VUUFJJT1JJVFkKLSAgICB7ImdldHByaW9yaXR5IiwgICAgIHBvc2l4X2dldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHByaW9yaXR5X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRQUklPUklUWSAqLwotI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKLSAgICB7InNldHByaW9yaXR5IiwgICAgIHBvc2l4X3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHByaW9yaXR5X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRQUklPUklUWSAqLworICAgIE9TX0NIRElSX01FVEhPRERFRgorICAgIE9TX0NIRkxBR1NfTUVUSE9EREVGCisgICAgT1NfQ0hNT0RfTUVUSE9EREVGCisgICAgT1NfRkNITU9EX01FVEhPRERFRgorICAgIE9TX0xDSE1PRF9NRVRIT0RERUYKKyAgICBPU19DSE9XTl9NRVRIT0RERUYKKyAgICBPU19GQ0hPV05fTUVUSE9EREVGCisgICAgT1NfTENIT1dOX01FVEhPRERFRgorICAgIE9TX0xDSEZMQUdTX01FVEhPRERFRgorICAgIE9TX0NIUk9PVF9NRVRIT0RERUYKKyAgICBPU19DVEVSTUlEX01FVEhPRERFRgorICAgIE9TX0dFVENXRF9NRVRIT0RERUYKKyAgICBPU19HRVRDV0RCX01FVEhPRERFRgorICAgIE9TX0xJTktfTUVUSE9EREVGCisgICAgT1NfTElTVERJUl9NRVRIT0RERUYKKyAgICBPU19MU1RBVF9NRVRIT0RERUYKKyAgICBPU19NS0RJUl9NRVRIT0RERUYKKyAgICBPU19OSUNFX01FVEhPRERFRgorICAgIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRgorICAgIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRgogI2lmZGVmIEhBVkVfUkVBRExJTksKICAgICB7InJlYWRsaW5rIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZWFkbGluaywKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCkBAIC0xMTI5MCwzNzYgKzEyMjA2LDE2MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5rX19kb2NfX30sCiAjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwotICAgIHsicmVuYW1lIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZW5hbWVfX2RvY19ffSwKLSAgICB7InJlcGxhY2UiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZXBsYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlcGxhY2VfX2RvY19ffSwKLSAgICB7InJtZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ybWRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ybWRpcl9fZG9jX199LAorICAgIE9TX1JFTkFNRV9NRVRIT0RERUYKKyAgICBPU19SRVBMQUNFX01FVEhPRERFRgorICAgIE9TX1JNRElSX01FVEhPRERFRgogICAgIHsic3RhdF9mbG9hdF90aW1lcyIsIHN0YXRfZmxvYXRfdGltZXMsIE1FVEhfVkFSQVJHUywgc3RhdF9mbG9hdF90aW1lc19fZG9jX199LAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKQotICAgIHsic3ltbGluayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N5bWxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3ltbGlua19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwotI2lmZGVmIEhBVkVfU1lTVEVNCi0gICAgeyJzeXN0ZW0iLCAgICAgICAgICBwb3NpeF9zeXN0ZW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc3lzdGVtX19kb2NfX30sCi0jZW5kaWYKLSAgICB7InVtYXNrIiwgICAgICAgICAgIHBvc2l4X3VtYXNrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3VtYXNrX19kb2NfX30sCi0jaWZkZWYgSEFWRV9VTkFNRQotICAgIHsidW5hbWUiLCAgICAgICAgICAgcG9zaXhfdW5hbWUsIE1FVEhfTk9BUkdTLCBwb3NpeF91bmFtZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KLSAgICB7InVubGluayIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdW5saW5rX19kb2NfX30sCi0gICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdW5saW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbW92ZV9fZG9jX199LAotICAgIHsidXRpbWUiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3V0aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcG9zaXhfdXRpbWVfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1RJTUVTCi0gICAgeyJ0aW1lcyIsICAgICAgICAgICBwb3NpeF90aW1lcywgTUVUSF9OT0FSR1MsIHBvc2l4X3RpbWVzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9USU1FUyAqLwotICAgIHsiX2V4aXQiLCAgICAgICAgICAgcG9zaXhfX2V4aXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2V4aXRfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0VYRUNWCi0gICAgeyJleGVjdiIsICAgICAgICAgICBwb3NpeF9leGVjdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9leGVjdl9fZG9jX199LAotICAgIHsiZXhlY3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2V4ZWN2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9leGVjdmVfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0VYRUNWICovCi0jaWZkZWYgSEFWRV9TUEFXTlYKLSAgICB7InNwYXdudiIsICAgICAgICAgIHBvc2l4X3NwYXdudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZfX2RvY19ffSwKLSAgICB7InNwYXdudmUiLCAgICAgICAgIHBvc2l4X3NwYXdudmUsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3Bhd252ZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU1BBV05WICovCi0jaWZkZWYgSEFWRV9GT1JLMQotICAgIHsiZm9yazEiLCAgICAgICBwb3NpeF9mb3JrMSwgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmsxX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GT1JLMSAqLwotI2lmZGVmIEhBVkVfRk9SSwotICAgIHsiZm9yayIsICAgICAgICAgICAgcG9zaXhfZm9yaywgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmtfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZPUksgKi8KLSNpZmRlZiBIQVZFX1NDSEVEX0gKLSNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KLSAgICB7InNjaGVkX2dldHBhcmFtIiwgcG9zaXhfc2NoZWRfZ2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCi0gICAgeyJzY2hlZF9nZXRzY2hlZHVsZXIiLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAotICAgIHsic2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQotICAgIHsic2NoZWRfc2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9zZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRwYXJhbV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKLSAgICB7InNjaGVkX3NldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19ffSwKLSNlbmRpZgotICAgIHsic2NoZWRfeWllbGQiLCAgICAgcG9zaXhfc2NoZWRfeWllbGQsIE1FVEhfTk9BUkdTLCBwb3NpeF9zY2hlZF95aWVsZF9fZG9jX199LAotI2lmZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKLSAgICB7InNjaGVkX3NldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19ffSwKLSAgICB7InNjaGVkX2dldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19ffSwKLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfU0NIRURfSCAqLwotI2lmIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKQotICAgIHsib3BlbnB0eSIsICAgICAgICAgcG9zaXhfb3BlbnB0eSwgTUVUSF9OT0FSR1MsIHBvc2l4X29wZW5wdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX09QRU5QVFkgfHwgSEFWRV9fR0VUUFRZIHx8IEhBVkVfREVWX1BUTVggKi8KLSNpZmRlZiBIQVZFX0ZPUktQVFkKLSAgICB7ImZvcmtwdHkiLCAgICAgICAgIHBvc2l4X2ZvcmtwdHksIE1FVEhfTk9BUkdTLCBwb3NpeF9mb3JrcHR5X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GT1JLUFRZICovCi0jaWZkZWYgSEFWRV9HRVRFR0lECi0gICAgeyJnZXRlZ2lkIiwgICAgICAgICBwb3NpeF9nZXRlZ2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0ZWdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VURUdJRCAqLwotI2lmZGVmIEhBVkVfR0VURVVJRAotICAgIHsiZ2V0ZXVpZCIsICAgICAgICAgcG9zaXhfZ2V0ZXVpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGV1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVEVVSUQgKi8KLSNpZmRlZiBIQVZFX0dFVEdJRAotICAgIHsiZ2V0Z2lkIiwgICAgICAgICAgcG9zaXhfZ2V0Z2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KKyAgICBPU19TWU1MSU5LX01FVEhPRERFRgorICAgIE9TX1NZU1RFTV9NRVRIT0RERUYKKyAgICBPU19VTUFTS19NRVRIT0RERUYKKyAgICBPU19VTkFNRV9NRVRIT0RERUYKKyAgICBPU19VTkxJTktfTUVUSE9EREVGCisgICAgT1NfUkVNT1ZFX01FVEhPRERFRgorICAgIE9TX1VUSU1FX01FVEhPRERFRgorICAgIE9TX1RJTUVTX01FVEhPRERFRgorICAgIE9TX19FWElUX01FVEhPRERFRgorICAgIE9TX0VYRUNWX01FVEhPRERFRgorICAgIE9TX0VYRUNWRV9NRVRIT0RERUYKKyAgICBPU19TUEFXTlZfTUVUSE9EREVGCisgICAgT1NfU1BBV05WRV9NRVRIT0RERUYKKyAgICBPU19GT1JLMV9NRVRIT0RERUYKKyAgICBPU19GT1JLX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGCisgICAgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRTQ0hFRFVMRVJfTUVUSE9EREVGCisgICAgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1NFVFBBUkFNX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9TRVRBRkZJTklUWV9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYKKyAgICBPU19PUEVOUFRZX01FVEhPRERFRgorICAgIE9TX0ZPUktQVFlfTUVUSE9EREVGCisgICAgT1NfR0VURUdJRF9NRVRIT0RERUYKKyAgICBPU19HRVRFVUlEX01FVEhPRERFRgorICAgIE9TX0dFVEdJRF9NRVRIT0RERUYKICNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAogICAgIHsiZ2V0Z3JvdXBsaXN0IiwgICAgcG9zaXhfZ2V0Z3JvdXBsaXN0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX199LAogI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRHUk9VUFMKLSAgICB7ImdldGdyb3VwcyIsICAgICAgIHBvc2l4X2dldGdyb3VwcywgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGdyb3Vwc19fZG9jX199LAotI2VuZGlmCi0gICAgeyJnZXRwaWQiLCAgICAgICAgICBwb3NpeF9nZXRwaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRwaWRfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0dFVFBHUlAKLSAgICB7ImdldHBncnAiLCAgICAgICAgIHBvc2l4X2dldHBncnAsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRwZ3JwX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRQR1JQICovCi0jaWZkZWYgSEFWRV9HRVRQUElECi0gICAgeyJnZXRwcGlkIiwgICAgICAgICBwb3NpeF9nZXRwcGlkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cHBpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUUFBJRCAqLwotI2lmZGVmIEhBVkVfR0VUVUlECi0gICAgeyJnZXR1aWQiLCAgICAgICAgICBwb3NpeF9nZXR1aWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXR1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFVJRCAqLwotI2lmZGVmIEhBVkVfR0VUTE9HSU4KLSAgICB7ImdldGxvZ2luIiwgICAgICAgIHBvc2l4X2dldGxvZ2luLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0bG9naW5fX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfS0lMTAotICAgIHsia2lsbCIsICAgICAgICAgICAgcG9zaXhfa2lsbCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9raWxsX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9LSUxMICovCi0jaWZkZWYgSEFWRV9LSUxMUEcKLSAgICB7ImtpbGxwZyIsICAgICAgICAgIHBvc2l4X2tpbGxwZywgTUVUSF9WQVJBUkdTLCBwb3NpeF9raWxscGdfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0tJTExQRyAqLwotI2lmZGVmIEhBVkVfUExPQ0sKLSAgICB7InBsb2NrIiwgICAgICAgICAgIHBvc2l4X3Bsb2NrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bsb2NrX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9QTE9DSyAqLworICAgIE9TX0dFVEdST1VQU19NRVRIT0RERUYKKyAgICBPU19HRVRQSURfTUVUSE9EREVGCisgICAgT1NfR0VUUEdSUF9NRVRIT0RERUYKKyAgICBPU19HRVRQUElEX01FVEhPRERFRgorICAgIE9TX0dFVFVJRF9NRVRIT0RERUYKKyAgICBPU19HRVRMT0dJTl9NRVRIT0RERUYKKyAgICBPU19LSUxMX01FVEhPRERFRgorICAgIE9TX0tJTExQR19NRVRIT0RERUYKKyAgICBPU19QTE9DS19NRVRIT0RERUYKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCi0gICAgeyJraWxsIiwgICAgd2luMzJfa2lsbCwgTUVUSF9WQVJBUkdTLCB3aW4zMl9raWxsX19kb2NfX30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX1NFVFVJRAotICAgIHsic2V0dWlkIiwgICAgICAgICAgcG9zaXhfc2V0dWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUVUlEICovCi0jaWZkZWYgSEFWRV9TRVRFVUlECi0gICAgeyJzZXRldWlkIiwgICAgICAgICBwb3NpeF9zZXRldWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldGV1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVEVVSUQgKi8KLSNpZmRlZiBIQVZFX1NFVEVHSUQKLSAgICB7InNldGVnaWQiLCAgICAgICAgIHBvc2l4X3NldGVnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0ZWdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VURUdJRCAqLwotI2lmZGVmIEhBVkVfU0VUUkVVSUQKLSAgICB7InNldHJldWlkIiwgICAgICAgIHBvc2l4X3NldHJldWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHJldWlkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRSRVVJRCAqLwotI2lmZGVmIEhBVkVfU0VUUkVHSUQKLSAgICB7InNldHJlZ2lkIiwgICAgICAgIHBvc2l4X3NldHJlZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHJlZ2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRSRUdJRCAqLwotI2lmZGVmIEhBVkVfU0VUR0lECi0gICAgeyJzZXRnaWQiLCAgICAgICAgICBwb3NpeF9zZXRnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0Z2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRHSUQgKi8KLSNpZmRlZiBIQVZFX1NFVEdST1VQUwotICAgIHsic2V0Z3JvdXBzIiwgICAgICAgcG9zaXhfc2V0Z3JvdXBzLCBNRVRIX08sIHBvc2l4X3NldGdyb3Vwc19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUR1JPVVBTICovCisgICAgT1NfU0VUVUlEX01FVEhPRERFRgorICAgIE9TX1NFVEVVSURfTUVUSE9EREVGCisgICAgT1NfU0VUUkVVSURfTUVUSE9EREVGCisgICAgT1NfU0VUR0lEX01FVEhPRERFRgorICAgIE9TX1NFVEVHSURfTUVUSE9EREVGCisgICAgT1NfU0VUUkVHSURfTUVUSE9EREVGCisgICAgT1NfU0VUR1JPVVBTX01FVEhPRERFRgogI2lmZGVmIEhBVkVfSU5JVEdST1VQUwogICAgIHsiaW5pdGdyb3VwcyIsICAgICAgcG9zaXhfaW5pdGdyb3VwcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9pbml0Z3JvdXBzX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9JTklUR1JPVVBTICovCi0jaWZkZWYgSEFWRV9HRVRQR0lECi0gICAgeyJnZXRwZ2lkIiwgICAgICAgICBwb3NpeF9nZXRwZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHBnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFBHSUQgKi8KLSNpZmRlZiBIQVZFX1NFVFBHUlAKLSAgICB7InNldHBncnAiLCAgICAgICAgIHBvc2l4X3NldHBncnAsIE1FVEhfTk9BUkdTLCBwb3NpeF9zZXRwZ3JwX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRQR1JQICovCi0jaWZkZWYgSEFWRV9XQUlUCi0gICAgeyJ3YWl0IiwgICAgICAgICAgICBwb3NpeF93YWl0LCBNRVRIX05PQVJHUywgcG9zaXhfd2FpdF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfV0FJVCAqLwotI2lmZGVmIEhBVkVfV0FJVDMKLSAgICB7IndhaXQzIiwgICAgICAgICAgIHBvc2l4X3dhaXQzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXQzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9XQUlUMyAqLwotI2lmZGVmIEhBVkVfV0FJVDQKLSAgICB7IndhaXQ0IiwgICAgICAgICAgIHBvc2l4X3dhaXQ0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXQ0X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9XQUlUNCAqLwotI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKLSAgICB7IndhaXRpZCIsICAgICAgICAgIHBvc2l4X3dhaXRpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0aWRfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKSB8fCBkZWZpbmVkKEhBVkVfQ1dBSVQpCi0gICAgeyJ3YWl0cGlkIiwgICAgICAgICBwb3NpeF93YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRwaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgKi8KLSNpZmRlZiBIQVZFX0dFVFNJRAotICAgIHsiZ2V0c2lkIiwgICAgICAgICAgcG9zaXhfZ2V0c2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHNpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUU0lEICovCi0jaWZkZWYgSEFWRV9TRVRTSUQKLSAgICB7InNldHNpZCIsICAgICAgICAgIHBvc2l4X3NldHNpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NldHNpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUU0lEICovCi0jaWZkZWYgSEFWRV9TRVRQR0lECi0gICAgeyJzZXRwZ2lkIiwgICAgICAgICBwb3NpeF9zZXRwZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHBnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFBHSUQgKi8KLSNpZmRlZiBIQVZFX1RDR0VUUEdSUAotICAgIHsidGNnZXRwZ3JwIiwgICAgICAgcG9zaXhfdGNnZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3RjZ2V0cGdycF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfVENHRVRQR1JQICovCi0jaWZkZWYgSEFWRV9UQ1NFVFBHUlAKLSAgICB7InRjc2V0cGdycCIsICAgICAgIHBvc2l4X3Rjc2V0cGdycCwgTUVUSF9WQVJBUkdTLCBwb3NpeF90Y3NldHBncnBfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwotICAgIHsib3BlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X29wZW4sXAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X29wZW5fX2RvY19ffSwKLSAgICB7ImNsb3NlIiwgICAgICAgICAgIHBvc2l4X2Nsb3NlXywgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZV9fZG9jX199LAotICAgIHsiY2xvc2VyYW5nZSIsICAgICAgcG9zaXhfY2xvc2VyYW5nZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZXJhbmdlX19kb2NfX30sCi0gICAgeyJkZXZpY2VfZW5jb2RpbmciLCBkZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHUywgZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCi0gICAgeyJkdXAiLCAgICAgICAgICAgICBwb3NpeF9kdXAsIE1FVEhfVkFSQVJHUywgcG9zaXhfZHVwX19kb2NfX30sCi0gICAgeyJkdXAyIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZHVwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHBvc2l4X2R1cDJfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0xPQ0tGCi0gICAgeyJsb2NrZiIsICAgICAgICAgICBwb3NpeF9sb2NrZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sb2NrZl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJsc2VlayIsICAgICAgICAgICBwb3NpeF9sc2VlaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9sc2Vla19fZG9jX199LAotICAgIHsicmVhZCIsICAgICAgICAgICAgcG9zaXhfcmVhZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkX19kb2NfX30sCi0jaWZkZWYgSEFWRV9SRUFEVgotICAgIHsicmVhZHYiLCAgICAgICAgICAgcG9zaXhfcmVhZHYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZHZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUFJFQUQKLSAgICB7InByZWFkIiwgICAgICAgICAgIHBvc2l4X3ByZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3ByZWFkX19kb2NfX30sCi0jZW5kaWYKLSAgICB7IndyaXRlIiwgICAgICAgICAgIHBvc2l4X3dyaXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRlX19kb2NfX30sCi0jaWZkZWYgSEFWRV9XUklURVYKLSAgICB7IndyaXRldiIsICAgICAgICAgIHBvc2l4X3dyaXRldiwgTUVUSF9WQVJBUkdTLCBwb3NpeF93cml0ZXZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUFdSSVRFCi0gICAgeyJwd3JpdGUiLCAgICAgICAgICBwb3NpeF9wd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHdyaXRlX19kb2NfX30sCi0jZW5kaWYKKyAgICBPU19HRVRQR0lEX01FVEhPRERFRgorICAgIE9TX1NFVFBHUlBfTUVUSE9EREVGCisgICAgT1NfV0FJVF9NRVRIT0RERUYKKyAgICBPU19XQUlUM19NRVRIT0RERUYKKyAgICBPU19XQUlUNF9NRVRIT0RERUYKKyAgICBPU19XQUlUSURfTUVUSE9EREVGCisgICAgT1NfV0FJVFBJRF9NRVRIT0RERUYKKyAgICBPU19HRVRTSURfTUVUSE9EREVGCisgICAgT1NfU0VUU0lEX01FVEhPRERFRgorICAgIE9TX1NFVFBHSURfTUVUSE9EREVGCisgICAgT1NfVENHRVRQR1JQX01FVEhPRERFRgorICAgIE9TX1RDU0VUUEdSUF9NRVRIT0RERUYKKyAgICBPU19PUEVOX01FVEhPRERFRgorICAgIE9TX0NMT1NFX01FVEhPRERFRgorICAgIE9TX0NMT1NFUkFOR0VfTUVUSE9EREVGCisgICAgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRgorICAgIE9TX0RVUF9NRVRIT0RERUYKKyAgICBPU19EVVAyX01FVEhPRERFRgorICAgIE9TX0xPQ0tGX01FVEhPRERFRgorICAgIE9TX0xTRUVLX01FVEhPRERFRgorICAgIE9TX1JFQURfTUVUSE9EREVGCisgICAgT1NfUkVBRFZfTUVUSE9EREVGCisgICAgT1NfUFJFQURfTUVUSE9EREVGCisgICAgT1NfV1JJVEVfTUVUSE9EREVGCisgICAgT1NfV1JJVEVWX01FVEhPRERFRgorICAgIE9TX1BXUklURV9NRVRIT0RERUYKICNpZmRlZiBIQVZFX1NFTkRGSUxFCiAgICAgeyJzZW5kZmlsZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2VuZGZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2VuZGZpbGVfX2RvY19ffSwKICNlbmRpZgotICAgIHsiZnN0YXQiLCAgICAgICAgICAgcG9zaXhfZnN0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXRfX2RvY19ffSwKLSAgICB7ImlzYXR0eSIsICAgICAgICAgIHBvc2l4X2lzYXR0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9pc2F0dHlfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1BJUEUKLSAgICB7InBpcGUiLCAgICAgICAgICAgIHBvc2l4X3BpcGUsIE1FVEhfTk9BUkdTLCBwb3NpeF9waXBlX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1BJUEUyCi0gICAgeyJwaXBlMiIsICAgICAgICAgICBwb3NpeF9waXBlMiwgTUVUSF9PLCBwb3NpeF9waXBlMl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9NS0ZJRk8KLSAgICB7Im1rZmlmbyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtmaWZvX19kb2NfX30sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQotICAgIHsibWtub2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rbm9kLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rbm9kX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0RFVklDRV9NQUNST1MKLSAgICB7Im1ham9yIiwgICAgICAgICAgIHBvc2l4X21ham9yLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21ham9yX19kb2NfX30sCi0gICAgeyJtaW5vciIsICAgICAgICAgICBwb3NpeF9taW5vciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9taW5vcl9fZG9jX199LAotICAgIHsibWFrZWRldiIsICAgICAgICAgcG9zaXhfbWFrZWRldiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9tYWtlZGV2X19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIHsiZnRydW5jYXRlIiwgICAgICAgcG9zaXhfZnRydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Z0cnVuY2F0ZV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9UUlVOQ0FURQotICAgIHsidHJ1bmNhdGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3RydW5jYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3RydW5jYXRlX19kb2NfX30sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpCi0gICAgeyJwb3NpeF9mYWxsb2NhdGUiLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfX30sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKQotICAgIHsicG9zaXhfZmFkdmlzZSIsICAgcG9zaXhfcG9zaXhfZmFkdmlzZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1BVVEVOVgotICAgIHsicHV0ZW52IiwgICAgICAgICAgcG9zaXhfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3B1dGVudl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9VTlNFVEVOVgotICAgIHsidW5zZXRlbnYiLCAgICAgICAgcG9zaXhfdW5zZXRlbnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfdW5zZXRlbnZfX2RvY19ffSwKLSNlbmRpZgotICAgIHsic3RyZXJyb3IiLCAgICAgICAgcG9zaXhfc3RyZXJyb3IsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3RyZXJyb3JfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0ZDSERJUgotICAgIHsiZmNoZGlyIiwgICAgICAgICAgcG9zaXhfZmNoZGlyLCBNRVRIX08sIHBvc2l4X2ZjaGRpcl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9GU1lOQwotICAgIHsiZnN5bmMiLCAgICAgICBwb3NpeF9mc3luYywgTUVUSF9PLCBwb3NpeF9mc3luY19fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWU5DCi0gICAgeyJzeW5jIiwgICAgICAgIHBvc2l4X3N5bmMsIE1FVEhfTk9BUkdTLCBwb3NpeF9zeW5jX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZEQVRBU1lOQwotICAgIHsiZmRhdGFzeW5jIiwgICBwb3NpeF9mZGF0YXN5bmMsICBNRVRIX08sIHBvc2l4X2ZkYXRhc3luY19fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfV0FJVF9ICi0jaWZkZWYgV0NPUkVEVU1QCi0gICAgeyJXQ09SRURVTVAiLCAgICAgICBwb3NpeF9XQ09SRURVTVAsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0NPUkVEVU1QX19kb2NfX30sCi0jZW5kaWYgLyogV0NPUkVEVU1QICovCi0jaWZkZWYgV0lGQ09OVElOVUVECi0gICAgeyJXSUZDT05USU5VRUQiLHBvc2l4X1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9XSUZDT05USU5VRURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZDT05USU5VRUQgKi8KLSNpZmRlZiBXSUZTVE9QUEVECi0gICAgeyJXSUZTVE9QUEVEIiwgICAgICBwb3NpeF9XSUZTVE9QUEVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRlNUT1BQRURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZTVE9QUEVEICovCi0jaWZkZWYgV0lGU0lHTkFMRUQKLSAgICB7IldJRlNJR05BTEVEIiwgICAgIHBvc2l4X1dJRlNJR05BTEVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRlNJR05BTEVEX19kb2NfX30sCi0jZW5kaWYgLyogV0lGU0lHTkFMRUQgKi8KLSNpZmRlZiBXSUZFWElURUQKLSAgICB7IldJRkVYSVRFRCIsICAgICAgIHBvc2l4X1dJRkVYSVRFRCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9XSUZFWElURURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZFWElURUQgKi8KLSNpZmRlZiBXRVhJVFNUQVRVUwotICAgIHsiV0VYSVRTVEFUVVMiLCAgICAgcG9zaXhfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0VYSVRTVEFUVVNfX2RvY19ffSwKLSNlbmRpZiAvKiBXRVhJVFNUQVRVUyAqLwotI2lmZGVmIFdURVJNU0lHCi0gICAgeyJXVEVSTVNJRyIsICAgICAgICBwb3NpeF9XVEVSTVNJRywgTUVUSF9WQVJBUkdTLCBwb3NpeF9XVEVSTVNJR19fZG9jX199LAotI2VuZGlmIC8qIFdURVJNU0lHICovCi0jaWZkZWYgV1NUT1BTSUcKLSAgICB7IldTVE9QU0lHIiwgICAgICAgIHBvc2l4X1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dTVE9QU0lHX19kb2NfX30sCi0jZW5kaWYgLyogV1NUT1BTSUcgKi8KLSNlbmRpZiAvKiBIQVZFX1NZU19XQUlUX0ggKi8KLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKQotICAgIHsiZnN0YXR2ZnMiLCAgICAgICAgcG9zaXhfZnN0YXR2ZnMsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXR2ZnNfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkKLSAgICB7InN0YXR2ZnMiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zdGF0dmZzLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N0YXR2ZnNfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfQ09ORlNUUgotICAgIHsiY29uZnN0ciIsICAgICAgICAgcG9zaXhfY29uZnN0ciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jb25mc3RyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU0NPTkYKLSAgICB7InN5c2NvbmYiLCAgICAgICAgIHBvc2l4X3N5c2NvbmYsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3lzY29uZl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9GUEFUSENPTkYKLSAgICB7ImZwYXRoY29uZiIsICAgICAgIHBvc2l4X2ZwYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mcGF0aGNvbmZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUEFUSENPTkYKLSAgICB7InBhdGhjb25mIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9wYXRoY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9wYXRoY29uZl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJhYm9ydCIsICAgICAgICAgICBwb3NpeF9hYm9ydCwgTUVUSF9OT0FSR1MsIHBvc2l4X2Fib3J0X19kb2NfX30sCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHsiX2dldGZ1bGxwYXRobmFtZSIsICAgICAgICBwb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX2dldGZpbmFscGF0aG5hbWUiLCAgICAgICBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7Il9pc2RpciIsICAgICAgICAgICAgICAgICAgcG9zaXhfX2lzZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19pc2Rpcl9fZG9jX199LAotICAgIHsiX2dldGRpc2t1c2FnZSIsICAgICAgICAgICB3aW4zMl9fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKLSAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsICAgICAgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRMT0FEQVZHCi0gICAgeyJnZXRsb2FkYXZnIiwgICAgICBwb3NpeF9nZXRsb2FkYXZnLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0bG9hZGF2Z19fZG9jX199LAotI2VuZGlmCi0gICAgeyJ1cmFuZG9tIiwgICAgICAgICBwb3NpeF91cmFuZG9tLCAgIE1FVEhfVkFSQVJHUywgcG9zaXhfdXJhbmRvbV9fZG9jX199LAotI2lmZGVmIEhBVkVfU0VUUkVTVUlECi0gICAgeyJzZXRyZXN1aWQiLCAgICAgICBwb3NpeF9zZXRyZXN1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmVzdWlkX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NFVFJFU0dJRAotICAgIHsic2V0cmVzZ2lkIiwgICAgICAgcG9zaXhfc2V0cmVzZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHJlc2dpZF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRSRVNVSUQKLSAgICB7ImdldHJlc3VpZCIsICAgICAgIHBvc2l4X2dldHJlc3VpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHJlc3VpZF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRSRVNHSUQKLSAgICB7ImdldHJlc2dpZCIsICAgICAgIHBvc2l4X2dldHJlc2dpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHJlc2dpZF9fZG9jX199LAotI2VuZGlmCisgICAgT1NfRlNUQVRfTUVUSE9EREVGCisgICAgT1NfSVNBVFRZX01FVEhPRERFRgorICAgIE9TX1BJUEVfTUVUSE9EREVGCisgICAgT1NfUElQRTJfTUVUSE9EREVGCisgICAgT1NfTUtGSUZPX01FVEhPRERFRgorICAgIE9TX01LTk9EX01FVEhPRERFRgorICAgIE9TX01BSk9SX01FVEhPRERFRgorICAgIE9TX01JTk9SX01FVEhPRERFRgorICAgIE9TX01BS0VERVZfTUVUSE9EREVGCisgICAgT1NfRlRSVU5DQVRFX01FVEhPRERFRgorICAgIE9TX1RSVU5DQVRFX01FVEhPRERFRgorICAgIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYKKyAgICBPU19QT1NJWF9GQURWSVNFX01FVEhPRERFRgorICAgIE9TX1BVVEVOVl9NRVRIT0RERUYKKyAgICBPU19VTlNFVEVOVl9NRVRIT0RERUYKKyAgICBPU19TVFJFUlJPUl9NRVRIT0RERUYKKyAgICBPU19GQ0hESVJfTUVUSE9EREVGCisgICAgT1NfRlNZTkNfTUVUSE9EREVGCisgICAgT1NfU1lOQ19NRVRIT0RERUYKKyAgICBPU19GREFUQVNZTkNfTUVUSE9EREVGCisgICAgT1NfV0NPUkVEVU1QX01FVEhPRERFRgorICAgIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYKKyAgICBPU19XSUZTVE9QUEVEX01FVEhPRERFRgorICAgIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRgorICAgIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYKKyAgICBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYKKyAgICBPU19XVEVSTVNJR19NRVRIT0RERUYKKyAgICBPU19XU1RPUFNJR19NRVRIT0RERUYKKyAgICBPU19GU1RBVFZGU19NRVRIT0RERUYKKyAgICBPU19TVEFUVkZTX01FVEhPRERFRgorICAgIE9TX0NPTkZTVFJfTUVUSE9EREVGCisgICAgT1NfU1lTQ09ORl9NRVRIT0RERUYKKyAgICBPU19GUEFUSENPTkZfTUVUSE9EREVGCisgICAgT1NfUEFUSENPTkZfTUVUSE9EREVGCisgICAgT1NfQUJPUlRfTUVUSE9EREVGCisgICAgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYKKyAgICBPU19fSVNESVJfTUVUSE9EREVGCisgICAgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYKKyAgICBPU19fR0VURklOQUxQQVRITkFNRV9NRVRIT0RERUYKKyAgICBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGCisgICAgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKKyAgICBPU19VUkFORE9NX01FVEhPRERFRgorICAgIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYKKyAgICBPU19TRVRSRVNHSURfTUVUSE9EREVGCisgICAgT1NfR0VUUkVTVUlEX01FVEhPRERFRgorICAgIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYKIAotI2lmZGVmIFVTRV9YQVRUUlMKLSAgICB7InNldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NldHhhdHRyLAotICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICBwb3NpeF9zZXR4YXR0cl9fZG9jX199LAotICAgIHsiZ2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0eGF0dHIsCi0gICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHBvc2l4X2dldHhhdHRyX19kb2NfX30sCi0gICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9yZW1vdmV4YXR0ciwKLSAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZleGF0dHJfX2RvY19ffSwKLSAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9saXN0eGF0dHIsCi0gICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHBvc2l4X2xpc3R4YXR0cl9fZG9jX199LAotI2VuZGlmCisgICAgT1NfR0VUWEFUVFJfTUVUSE9EREVGCisgICAgT1NfU0VUWEFUVFJfTUVUSE9EREVGCisgICAgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGCisgICAgT1NfTElTVFhBVFRSX01FVEhPRERFRgorCiAjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQogICAgIHsiZ2V0X3Rlcm1pbmFsX3NpemUiLCBnZXRfdGVybWluYWxfc2l6ZSwgTUVUSF9WQVJBUkdTLCB0ZXJtc2l6ZV9fZG9jX199LAogI2VuZGlmCi0gICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pcG9zaXhfY3B1X2NvdW50LAotICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIHBvc2l4X2NwdV9jb3VudF9fZG9jX199LAotICAgIHsiZ2V0X2luaGVyaXRhYmxlIiwgcG9zaXhfZ2V0X2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIGdldF9pbmhlcml0YWJsZV9fZG9jX199LAotICAgIHsic2V0X2luaGVyaXRhYmxlIiwgcG9zaXhfc2V0X2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIHNldF9pbmhlcml0YWJsZV9fZG9jX199LAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB7ImdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCBwb3NpeF9nZXRfaGFuZGxlX2luaGVyaXRhYmxlLAotICAgICBNRVRIX1ZBUkFSR1MsIGdldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKLSAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCBwb3NpeF9zZXRfaGFuZGxlX2luaGVyaXRhYmxlLAotICAgICBNRVRIX1ZBUkFSR1MsIHNldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKKyAgICBPU19DUFVfQ09VTlRfTUVUSE9EREVGCisgICAgT1NfR0VUX0lOSEVSSVRBQkxFX01FVEhPRERFRgorICAgIE9TX1NFVF9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyAgICBPU19HRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgorICAgIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICB7ImdldF9ibG9ja2luZyIsIHBvc2l4X2dldF9ibG9ja2luZywgTUVUSF9WQVJBUkdTLCBnZXRfYmxvY2tpbmdfX2RvY19ffSwKKyAgICB7InNldF9ibG9ja2luZyIsIHBvc2l4X3NldF9ibG9ja2luZywgTUVUSF9WQVJBUkdTLCBzZXRfYmxvY2tpbmdfX2RvY19ffSwKICNlbmRpZgorICAgIHsic2NhbmRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NjYW5kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2NhbmRpcl9fZG9jX199LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMTIxMDIsMTUgKzEyODA0LDYgQEAKIH0KIAogCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSkgJiYgIWRlZmluZWQoX19RTlhfXykKLSNkZWZpbmUgSU5JVEZVTkMgUHlJbml0X250Ci0jZGVmaW5lIE1PRE5BTUUgIm50IgotCi0jZWxzZQotI2RlZmluZSBJTklURlVOQyBQeUluaXRfcG9zaXgKLSNkZWZpbmUgTU9ETkFNRSAicG9zaXgiCi0jZW5kaWYKLQogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBwb3NpeG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgTU9ETkFNRSwKQEAgLTEyMTcwLDcgKzEyODYzLDcgQEAKICAgICAiSEFWRV9GU1RBVFZGUyIsCiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisjaWYgZGVmaW5lZCBIQVZFX0ZUUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MKICAgICAiSEFWRV9GVFJVTkNBVEUiLAogI2VuZGlmCiAKQEAgLTEyMzI0LDEzICsxMzAxNywxOSBAQAogICAgICAgICBzY2hlZF9wYXJhbV9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc2NoZWRfcGFyYW0iOwogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlNjaGVkUGFyYW1UeXBlLCAmc2NoZWRfcGFyYW1fZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFNjaGVkUGFyYW1UeXBlLnRwX25ldyA9IHNjaGVkX3BhcmFtX25ldzsKKyAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gb3Nfc2NoZWRfcGFyYW07CiAjZW5kaWYKIAogICAgICAgICAvKiBpbml0aWFsaXplIFRlcm1pbmFsU2l6ZV9pbmZvICovCiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmVGVybWluYWxTaXplVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUZXJtaW5hbFNpemVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgLyogaW5pdGlhbGl6ZSBzY2FuZGlyIHR5cGVzICovCisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkoJlNjYW5kaXJJdGVyYXRvclR5cGUpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KCZEaXJFbnRyeVR5cGUpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCmluZGV4IGViYjg3MTIuLjI4MWMzMGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwpAQCAtNiw2ICs2LDEyIEBACiAKICNpbmNsdWRlIDxwd2QuaD4KIAorI2luY2x1ZGUgImNsaW5pYy9wd2Rtb2R1bGUuYy5oIgorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIHB3ZAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NjBmNjI4ZWYzNTZiOTdiNl0qLworCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzdHJ1Y3RfcHdkX3R5cGVfZmllbGRzW10gPSB7CiAgICAgeyJwd19uYW1lIiwgInVzZXIgbmFtZSJ9LAogICAgIHsicHdfcGFzc3dkIiwgInBhc3N3b3JkIn0sCkBAIC04NywxOCArOTMsMjUgQEAKICAgICByZXR1cm4gdjsKIH0KIAotUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd3VpZF9fZG9jX18sCi0iZ2V0cHd1aWQodWlkKSAtPiAocHdfbmFtZSxwd19wYXNzd2QscHdfdWlkLFxuXAotICAgICAgICAgICAgICAgICAgcHdfZ2lkLHB3X2dlY29zLHB3X2Rpcixwd19zaGVsbClcblwKLVJldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIHVzZXIgSUQuXG5cCi1TZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitwd2QuZ2V0cHd1aWQKKworICAgIHVpZG9iajogb2JqZWN0CisgICAgLworCitSZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyB1c2VyIElELgorCitTZWUgYGhlbHAocHdkKWAgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXB3ZF9nZXRwd3VpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwd2RfZ2V0cHd1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnVpZG9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmEyOWFlNGMyYmNiOGUxIGlucHV0PWFlNjRkNTA3YTFjNmQzZThdKi8KIHsKICAgICB1aWRfdCB1aWQ7CiAgICAgc3RydWN0IHBhc3N3ZCAqcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmdldHB3dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKSB7CisKKyAgICBpZiAoIV9QeV9VaWRfQ29udmVydGVyKHVpZG9iaiwgJnVpZCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHB3dWlkKCk6IHVpZCBub3QgZm91bmQiKTsKQEAgLTExNiwyMSArMTI5LDI1IEBACiAgICAgcmV0dXJuIG1rcHdlbnQocCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwd2RfZ2V0cHduYW1fX2RvY19fLAotImdldHB3bmFtKG5hbWUpIC0+IChwd19uYW1lLHB3X3Bhc3N3ZCxwd191aWQsXG5cCi0gICAgICAgICAgICAgICAgICAgIHB3X2dpZCxwd19nZWNvcyxwd19kaXIscHdfc2hlbGwpXG5cCi1SZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLlxuXAotU2VlIGhlbHAocHdkKSBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorcHdkLmdldHB3bmFtCisKKyAgICBhcmc6IHVuaWNvZGUKKyAgICAvCisKK1JldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuCisKK1NlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHdkX2dldHB3bmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B3ZF9nZXRwd25hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY4NDhkNDJkMzg2ZmNhMyBpbnB1dD1kNWY3ZTcwMDkxOWIwMmQzXSovCiB7CiAgICAgY2hhciAqbmFtZTsKICAgICBzdHJ1Y3QgcGFzc3dkICpwOwotICAgIFB5T2JqZWN0ICphcmcsICpieXRlcywgKnJldHZhbCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpnZXRwd25hbSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKQEAgLTE0NywxNCArMTY0LDE3IEBACiB9CiAKICNpZmRlZiBIQVZFX0dFVFBXRU5UCi1QeURvY19TVFJWQVIocHdkX2dldHB3YWxsX19kb2NfXywKLSJnZXRwd2FsbCgpIC0+IGxpc3Rfb2ZfZW50cmllc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIFwKLWluIGFyYml0cmFyeSBvcmRlci5cblwKLVNlZSBoZWxwKHB3ZCkgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B3ZC5nZXRwd2FsbAorCitSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLgorCitTZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wd2RfZ2V0cHdhbGwoUHlPYmplY3QgKnNlbGYpCitwd2RfZ2V0cHdhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFiMzBlMzdiZjI2ZDQzMWQgaW5wdXQ9ZDdlY2ViZmQ5MDIxOWI4NV0qLwogewogICAgIFB5T2JqZWN0ICpkOwogICAgIHN0cnVjdCBwYXNzd2QgKnA7CkBAIC0xNzcsMTEgKzE5NywxMCBAQAogI2VuZGlmCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwd2RfbWV0aG9kc1tdID0gewotICAgIHsiZ2V0cHd1aWQiLCAgICAgICAgcHdkX2dldHB3dWlkLCBNRVRIX1ZBUkFSR1MsIHB3ZF9nZXRwd3VpZF9fZG9jX199LAotICAgIHsiZ2V0cHduYW0iLCAgICAgICAgcHdkX2dldHB3bmFtLCBNRVRIX1ZBUkFSR1MsIHB3ZF9nZXRwd25hbV9fZG9jX199LAorICAgIFBXRF9HRVRQV1VJRF9NRVRIT0RERUYKKyAgICBQV0RfR0VUUFdOQU1fTUVUSE9EREVGCiAjaWZkZWYgSEFWRV9HRVRQV0VOVAotICAgIHsiZ2V0cHdhbGwiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXB3ZF9nZXRwd2FsbCwKLSAgICAgICAgTUVUSF9OT0FSR1MsICBwd2RfZ2V0cHdhbGxfX2RvY19ffSwKKyAgICBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggNmE5MDFmNy4uOWE2ZGE3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTYsNiArNiwxMyBAQAogCiAjaW5jbHVkZSAicHlleHBhdC5oIgogCisvKiBEbyBub3QgZW1pdCBDbGluaWMgb3V0cHV0IHRvIGEgZmlsZSBhcyB0aGF0IHdyZWFrcyBoYXZvYyB3aXRoIGNvbmRpdGlvbmFsbHkKKyAgIGluY2x1ZGVkIG1ldGhvZHMuICovCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgcHlleHBhdAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjE2OGQ1MDNhNDQ5MGMxNV0qLworCiAjZGVmaW5lIFhNTF9DT01CSU5FRF9WRVJTSU9OICgxMDAwMCpYTUxfTUFKT1JfVkVSU0lPTisxMDAqWE1MX01JTk9SX1ZFUlNJT04rWE1MX01JQ1JPX1ZFUlNJT04pCiAKIHN0YXRpYyBYTUxfTWVtb3J5X0hhbmRsaW5nX1N1aXRlIEV4cGF0TWVtb3J5SGFuZGxlciA9IHsKQEAgLTYxLDYgKzY4LDggQEAKICAgICBQeU9iamVjdCAqKmhhbmRsZXJzOwogfSB4bWxwYXJzZW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9weWV4cGF0LmMuaCIKKwogI2RlZmluZSBDSEFSQUNURVJfREFUQV9CVUZGRVJfU0laRSA4MTkyCiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgWG1scGFyc2V0eXBlOwpAQCAtNjcxLDYgKzY4MCwxMSBAQAogVk9JRF9IQU5ETEVSKEVuZERvY3R5cGVEZWNsLCAodm9pZCAqdXNlckRhdGEpLCAoIigpIikpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIHB5ZXhwYXQueG1scGFyc2VyICJ4bWxwYXJzZW9iamVjdCAqIiAiJlhtbHBhcnNldHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIzOTMxNjIzODUyMzJlMWNdKi8KKwogCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3BhcnNlX3Jlc3VsdCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IHJ2KQpAQCAtNjg3LDI1ICs3MDEsMzAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJ2KTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1BhcnNlX19kb2NfXywKLSJQYXJzZShkYXRhWywgaXNmaW5hbF0pXG5cCi1QYXJzZSBYTUwgZGF0YS4gIGBpc2ZpbmFsJyBzaG91bGQgYmUgdHJ1ZSBhdCBlbmQgb2YgaW5wdXQuIik7Ci0KICNkZWZpbmUgTUFYX0NIVU5LX1NJWkUgKDEgPDwgMjApCiAKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLlBhcnNlCisKKyAgICBkYXRhOiBvYmplY3QKKyAgICBpc2ZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KKworUGFyc2UgWE1MIGRhdGEuCisKK2Bpc2ZpbmFsJyBzaG91bGQgYmUgdHJ1ZSBhdCBlbmQgb2YgaW5wdXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9QYXJzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlzZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRkYjg0M2RkMWY0ZWQ0YiBpbnB1dD0xOTlkOWU4ZTkyZWJiYjRiXSovCiB7Ci0gICAgUHlPYmplY3QgKmRhdGE7Ci0gICAgaW50IGlzRmluYWwgPSAwOwogICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgUHlfc3NpemVfdCBzbGVuOwogICAgIFB5X2J1ZmZlciB2aWV3OwogICAgIGludCByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOlBhcnNlIiwgJmRhdGEsICZpc0ZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGRhdGEpKSB7CiAgICAgICAgIHZpZXcuYnVmID0gTlVMTDsKICAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGRhdGEsICZzbGVuKTsKQEAgLTcyOSw3ICs3NDgsNyBAQAogICAgICAgICBzbGVuIC09IE1BWF9DSFVOS19TSVpFOwogICAgIH0KICAgICBhc3NlcnQoTUFYX0NIVU5LX1NJWkUgPCBJTlRfTUFYICYmIHNsZW4gPCBJTlRfTUFYKTsKLSAgICByYyA9IFhNTF9QYXJzZShzZWxmLT5pdHNlbGYsIHMsIChpbnQpc2xlbiwgaXNGaW5hbCk7CisgICAgcmMgPSBYTUxfUGFyc2Uoc2VsZi0+aXRzZWxmLCBzLCAoaW50KXNsZW4sIGlzZmluYWwpOwogCiBkb25lOgogICAgIGlmICh2aWV3LmJ1ZiAhPSBOVUxMKQpAQCAtNzgwLDE4ICs3OTksMjQgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9QYXJzZUZpbGVfX2RvY19fLAotIlBhcnNlRmlsZShmaWxlKVxuXAotUGFyc2UgWE1MIGRhdGEgZnJvbSBmaWxlLWxpa2Ugb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuUGFyc2VGaWxlCisKKyAgICBmaWxlOiBvYmplY3QKKyAgICAvCisKK1BhcnNlIFhNTCBkYXRhIGZyb20gZmlsZS1saWtlIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX1BhcnNlRmlsZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYpCitweWV4cGF0X3htbHBhcnNlcl9QYXJzZUZpbGUoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhZGM2YTEzMTAwY2M0MmIgaW5wdXQ9ZmJiNWExMmI2MDM4ZDczNV0qLwogewogICAgIGludCBydiA9IDE7CiAgICAgUHlPYmplY3QgKnJlYWRtZXRob2QgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogCi0gICAgcmVhZG1ldGhvZCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZCk7CisgICAgcmVhZG1ldGhvZCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcmVhZCk7CiAgICAgaWYgKHJlYWRtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgaGF2ZSAncmVhZCcgYXR0cmlidXRlIik7CkBAIC04MjMsNDIgKzg0OCw1MCBAQAogICAgIHJldHVybiBnZXRfcGFyc2VfcmVzdWx0KHNlbGYsIHJ2KTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1NldEJhc2VfX2RvY19fLAotIlNldEJhc2UoYmFzZV91cmwpXG5cCi1TZXQgdGhlIGJhc2UgVVJMIGZvciB0aGUgcGFyc2VyLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuU2V0QmFzZQorCisgICAgYmFzZTogc3RyCisgICAgLworCitTZXQgdGhlIGJhc2UgVVJMIGZvciB0aGUgcGFyc2VyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgoteG1scGFyc2VfU2V0QmFzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmJhc2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzIxMmRkY2ViNjA3YjUzOSBpbnB1dD1jNjg0ZTVkZTg5NWVlMWE4XSovCiB7Ci0gICAgY2hhciAqYmFzZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpTZXRCYXNlIiwgJmJhc2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVhNTF9TZXRCYXNlKHNlbGYtPml0c2VsZiwgYmFzZSkpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX0dldEJhc2VfX2RvY19fLAotIkdldEJhc2UoKSAtPiB1cmxcblwKLVJldHVybiBiYXNlIFVSTCBzdHJpbmcgZm9yIHRoZSBwYXJzZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5HZXRCYXNlCisKK1JldHVybiBiYXNlIFVSTCBzdHJpbmcgZm9yIHRoZSBwYXJzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9HZXRCYXNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4ODZjYjIxZjlhODczOWEgaW5wdXQ9OTE4ZDcxYzM4MDA5NjIwZV0qLwogewogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ6IiwgWE1MX0dldEJhc2Uoc2VsZi0+aXRzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9HZXRJbnB1dENvbnRleHRfX2RvY19fLAotIkdldElucHV0Q29udGV4dCgpIC0+IHN0cmluZ1xuXAotUmV0dXJuIHRoZSB1bnRyYW5zbGF0ZWQgdGV4dCBvZiB0aGUgaW5wdXQgdGhhdCBjYXVzZWQgdGhlIGN1cnJlbnQgZXZlbnQuXG5cCi1JZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnXG5cCi1mb3IgYW4gZWxlbWVudCB3aXRoIG1hbnkgYXR0cmlidXRlcyksIG5vdCBhbGwgb2YgdGhlIHRleHQgbWF5IGJlIGF2YWlsYWJsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLkdldElucHV0Q29udGV4dAorCitSZXR1cm4gdGhlIHVudHJhbnNsYXRlZCB0ZXh0IG9mIHRoZSBpbnB1dCB0aGF0IGNhdXNlZCB0aGUgY3VycmVudCBldmVudC4KKworSWYgdGhlIGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgYSBsYXJnZSBhbW91bnQgb2YgdGV4dCAoc3VjaCBhcyBhIHN0YXJ0IHRhZworZm9yIGFuIGVsZW1lbnQgd2l0aCBtYW55IGF0dHJpYnV0ZXMpLCBub3QgYWxsIG9mIHRoZSB0ZXh0IG1heSBiZSBhdmFpbGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9HZXRJbnB1dENvbnRleHQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHRfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODgwMjZkNjgzZmMyMmNjIGlucHV0PTAzNGRmODcxMmRiNjgzNzldKi8KIHsKICAgICBpZiAoc2VsZi0+aW5fY2FsbGJhY2spIHsKICAgICAgICAgaW50IG9mZnNldCwgc2l6ZTsKQEAgLTg3NSwyNCArOTA4LDI1IEBACiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfX2RvY19fLAotIkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlKGNvbnRleHRbLCBlbmNvZGluZ10pXG5cCi1DcmVhdGUgYSBwYXJzZXIgZm9yIHBhcnNpbmcgYW4gZXh0ZXJuYWwgZW50aXR5IGJhc2VkIG9uIHRoZVxuXAotaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZQorCisgICAgY29udGV4dDogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgZW5jb2Rpbmc6IHN0ciA9IE5VTEwKKyAgICAvCisKK0NyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgoteG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTM1Y2RhOWQ3YTBmYmNkNiBpbnB1dD1iOTA2NzE0Y2MxMjJjMzIyXSovCiB7Ci0gICAgY2hhciAqY29udGV4dDsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgeG1scGFyc2VvYmplY3QgKm5ld19wYXJzZXI7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIG5ld19wYXJzZXIgPSBQeU9iamVjdF9HQ19OZXcoeG1scGFyc2VvYmplY3QsICZYbWxwYXJzZXR5cGUpOwogICAgIGlmIChuZXdfcGFyc2VyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTQ4LDQxICs5ODIsNDkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X3BhcnNlcjsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX18sCi0iU2V0UGFyYW1FbnRpdHlQYXJzaW5nKGZsYWcpIC0+IHN1Y2Nlc3NcblwKLUNvbnRyb2xzIHBhcnNpbmcgb2YgcGFyYW1ldGVyIGVudGl0aWVzIChpbmNsdWRpbmcgdGhlIGV4dGVybmFsIERURFxuXAotc3Vic2V0KS4gUG9zc2libGUgZmxhZyB2YWx1ZXMgYXJlIFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUixcblwKLVhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19VTkxFU1NfU1RBTkRBTE9ORSBhbmRcblwKLVhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnXG5cCi13YXMgc3VjY2Vzc2Z1bC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLlNldFBhcmFtRW50aXR5UGFyc2luZwogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZV9TZXRQYXJhbUVudGl0eVBhcnNpbmcoeG1scGFyc2VvYmplY3QgKnAsIFB5T2JqZWN0KiBhcmdzKQorICAgIGZsYWc6IGludAorICAgIC8KKworQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREIHN1YnNldCkuCisKK1Bvc3NpYmxlIGZsYWcgdmFsdWVzIGFyZSBYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfTkVWRVIsCitYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NUQU5EQUxPTkUgYW5kCitYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfQUxXQVlTLiBSZXR1cm5zIHRydWUgaWYgc2V0dGluZyB0aGUgZmxhZword2FzIHN1Y2Nlc3NmdWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTg2NjhlZThlNzYwZDY0YyBpbnB1dD04YWVhMTliNGIxNWU5YWYxXSovCiB7Ci0gICAgaW50IGZsYWc7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmZsYWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmbGFnID0gWE1MX1NldFBhcmFtRW50aXR5UGFyc2luZyhwLT5pdHNlbGYsIGZsYWcpOworICAgIGZsYWcgPSBYTUxfU2V0UGFyYW1FbnRpdHlQYXJzaW5nKHNlbGYtPml0c2VsZiwgZmxhZyk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhmbGFnKTsKIH0KIAogCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9Vc2VGb3JlaWduRFREX19kb2NfXywKLSJVc2VGb3JlaWduRFREKFtmbGFnXSlcblwKLUFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gcHJvdmlkZSBhbiBhcnRpZmljaWFsIGV4dGVybmFsIHN1YnNldCBpZiBvbmUgaXNcblwKLW5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuICBUaGlzIHJlYWRpbHkgYWxsb3dzIHRoZVxuXAotdXNlIG9mIGEgJ2RlZmF1bHQnIGRvY3VtZW50IHR5cGUgY29udHJvbGxlZCBieSB0aGUgYXBwbGljYXRpb24sIHdoaWxlIHN0aWxsXG5cCi1nZXR0aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgcHJvdmlkaW5nIGRvY3VtZW50IHR5cGUgaW5mb3JtYXRpb24gdG8gdGhlIHBhcnNlci5cblwKLSdmbGFnJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLlVzZUZvcmVpZ25EVEQKKworICAgIGZsYWc6IGJvb2wgPSBUcnVlCisgICAgLworCitBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHByb3ZpZGUgYW4gYXJ0aWZpY2lhbCBleHRlcm5hbCBzdWJzZXQgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuCisKK1RoaXMgcmVhZGlseSBhbGxvd3MgdGhlIHVzZSBvZiBhICdkZWZhdWx0JyBkb2N1bWVudCB0eXBlIGNvbnRyb2xsZWQgYnkgdGhlCithcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGwgZ2V0dGluZyB0aGUgYWR2YW50YWdlIG9mIHByb3ZpZGluZyBkb2N1bWVudCB0eXBlCitpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyLiAnZmxhZycgZGVmYXVsdHMgdG8gVHJ1ZSBpZiBub3QgcHJvdmlkZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2ZhYTlhYTUwYmIwZjY1YyBpbnB1dD03ODE0NGM1MTlkMTE2YTZlXSovCiB7Ci0gICAgaW50IGZsYWcgPSAxOwogICAgIGVudW0gWE1MX0Vycm9yIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6VXNlRm9yZWlnbkRURCIsICZmbGFnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByYyA9IFhNTF9Vc2VGb3JlaWduRFREKHNlbGYtPml0c2VsZiwgZmxhZyA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFKTsKICAgICBpZiAocmMgIT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZWxmLCByYyk7CkBAIC05OTIsMjkgKzEwMzQsNzAgQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKnhtbHBhcnNlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QqIG5vYXJncyk7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5fX2Rpcl9fCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmMyMjQ1MWVmYjllNGQxNyBpbnB1dD03NmFhNDU1ZjJhNjYxMzg0XSovCit7CisjZGVmaW5lIEFQUEVORChsaXN0LCBzdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3RyKTsgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAobyAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChsaXN0LCBvKTsgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihvKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoMCkKKworICAgIGludCBpOworICAgIFB5T2JqZWN0ICpyYyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFyYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gZ2V0X2hhbmRsZXJfbmFtZSgmaGFuZGxlcl9pbmZvW2ldKTsKKyAgICAgICAgaWYgKG8gIT0gTlVMTCkKKyAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQocmMsIG8pOworICAgICAgICBQeV9YREVDUkVGKG8pOworICAgIH0KKyAgICBBUFBFTkQocmMsICJFcnJvckNvZGUiKTsKKyAgICBBUFBFTkQocmMsICJFcnJvckxpbmVOdW1iZXIiKTsKKyAgICBBUFBFTkQocmMsICJFcnJvckNvbHVtbk51bWJlciIpOworICAgIEFQUEVORChyYywgIkVycm9yQnl0ZUluZGV4Iik7CisgICAgQVBQRU5EKHJjLCAiQ3VycmVudExpbmVOdW1iZXIiKTsKKyAgICBBUFBFTkQocmMsICJDdXJyZW50Q29sdW1uTnVtYmVyIik7CisgICAgQVBQRU5EKHJjLCAiQ3VycmVudEJ5dGVJbmRleCIpOworICAgIEFQUEVORChyYywgImJ1ZmZlcl9zaXplIik7CisgICAgQVBQRU5EKHJjLCAiYnVmZmVyX3RleHQiKTsKKyAgICBBUFBFTkQocmMsICJidWZmZXJfdXNlZCIpOworICAgIEFQUEVORChyYywgIm5hbWVzcGFjZV9wcmVmaXhlcyIpOworICAgIEFQUEVORChyYywgIm9yZGVyZWRfYXR0cmlidXRlcyIpOworICAgIEFQUEVORChyYywgInNwZWNpZmllZF9hdHRyaWJ1dGVzIik7CisgICAgQVBQRU5EKHJjLCAiaW50ZXJuIik7CisKKyN1bmRlZiBBUFBFTkQKKworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyYyk7CisgICAgICAgIHJjID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgeG1scGFyc2VfbWV0aG9kc1tdID0gewotICAgIHsiUGFyc2UiLCAgICAgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX1BhcnNlLAotICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCB4bWxwYXJzZV9QYXJzZV9fZG9jX199LAotICAgIHsiUGFyc2VGaWxlIiwgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX1BhcnNlRmlsZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfTywgICAgICAgeG1scGFyc2VfUGFyc2VGaWxlX19kb2NfX30sCi0gICAgeyJTZXRCYXNlIiwgICAoUHlDRnVuY3Rpb24peG1scGFyc2VfU2V0QmFzZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgeG1scGFyc2VfU2V0QmFzZV9fZG9jX199LAotICAgIHsiR2V0QmFzZSIsICAgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX0dldEJhc2UsCi0gICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgeG1scGFyc2VfR2V0QmFzZV9fZG9jX199LAotICAgIHsiRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX19kb2NfX30sCi0gICAgeyJTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfU2V0UGFyYW1FbnRpdHlQYXJzaW5nLAotICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCB4bWxwYXJzZV9TZXRQYXJhbUVudGl0eVBhcnNpbmdfX2RvY19ffSwKLSAgICB7IkdldElucHV0Q29udGV4dCIsIChQeUNGdW5jdGlvbil4bWxwYXJzZV9HZXRJbnB1dENvbnRleHQsCi0gICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgeG1scGFyc2VfR2V0SW5wdXRDb250ZXh0X19kb2NfX30sCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfUEFSU0VfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfUEFSU0VGSUxFX01FVEhPRERFRgorICAgIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJBU0VfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfR0VUQkFTRV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9HRVRJTlBVVENPTlRFWFRfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfRVhURVJOQUxFTlRJVFlQQVJTRVJDUkVBVEVfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfU0VUUEFSQU1FTlRJVFlQQVJTSU5HX01FVEhPRERFRgogI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDE5NTA1Ci0gICAgeyJVc2VGb3JlaWduRFREIiwgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX1VzZUZvcmVpZ25EVEQsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX1VzZUZvcmVpZ25EVERfX2RvY19ffSwKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogI2VuZGlmCi0gICAgeyJfX2Rpcl9fIiwgeG1scGFyc2VfZGlyLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfX19ESVJfX19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAvKiAtLS0tLS0tLS0tICovCkBAIC0xMDc3LDcgKzExNjAsNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXd4bWxwYXJzZW9iamVjdChjaGFyICplbmNvZGluZywgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciwgUHlPYmplY3QgKmludGVybikKK25ld3htbHBhcnNlb2JqZWN0KGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKQogewogICAgIGludCBpOwogICAgIHhtbHBhcnNlb2JqZWN0ICpzZWxmOwpAQCAtMTI1NSw1MiArMTMzOCw2IEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopc2VsZiwgbmFtZW9iaik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBub2FyZ3MpCi17Ci0jZGVmaW5lIEFQUEVORChsaXN0LCBzdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3RyKTsgICAgICAgIFwKLSAgICAgICAgICAgICAgICBpZiAobyAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChsaXN0LCBvKTsgICAgICAgICBcCi0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihvKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSB3aGlsZSAoMCkKLQotICAgIGludCBpOwotICAgIFB5T2JqZWN0ICpyYyA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKCFyYykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvID0gZ2V0X2hhbmRsZXJfbmFtZSgmaGFuZGxlcl9pbmZvW2ldKTsKLSAgICAgICAgaWYgKG8gIT0gTlVMTCkKLSAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQocmMsIG8pOwotICAgICAgICBQeV9YREVDUkVGKG8pOwotICAgIH0KLSAgICBBUFBFTkQocmMsICJFcnJvckNvZGUiKTsKLSAgICBBUFBFTkQocmMsICJFcnJvckxpbmVOdW1iZXIiKTsKLSAgICBBUFBFTkQocmMsICJFcnJvckNvbHVtbk51bWJlciIpOwotICAgIEFQUEVORChyYywgIkVycm9yQnl0ZUluZGV4Iik7Ci0gICAgQVBQRU5EKHJjLCAiQ3VycmVudExpbmVOdW1iZXIiKTsKLSAgICBBUFBFTkQocmMsICJDdXJyZW50Q29sdW1uTnVtYmVyIik7Ci0gICAgQVBQRU5EKHJjLCAiQ3VycmVudEJ5dGVJbmRleCIpOwotICAgIEFQUEVORChyYywgImJ1ZmZlcl9zaXplIik7Ci0gICAgQVBQRU5EKHJjLCAiYnVmZmVyX3RleHQiKTsKLSAgICBBUFBFTkQocmMsICJidWZmZXJfdXNlZCIpOwotICAgIEFQUEVORChyYywgIm5hbWVzcGFjZV9wcmVmaXhlcyIpOwotICAgIEFQUEVORChyYywgIm9yZGVyZWRfYXR0cmlidXRlcyIpOwotICAgIEFQUEVORChyYywgInNwZWNpZmllZF9hdHRyaWJ1dGVzIik7Ci0gICAgQVBQRU5EKHJjLCAiaW50ZXJuIik7Ci0KLSN1bmRlZiBBUFBFTkQKLQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyYyk7Ci0gICAgICAgIHJjID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmM7Ci19Ci0KIHN0YXRpYyBpbnQKIHNldGhhbmRsZXIoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCogdikKIHsKQEAgLTE1MTIsMjQgKzE1NDksMjQgQEAKIC8qIEVuZCBvZiBjb2RlIGZvciB4bWxwYXJzZXIgb2JqZWN0cyAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlEb2NfU1RSVkFSKHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfXywKLSJQYXJzZXJDcmVhdGUoW2VuY29kaW5nWywgbmFtZXNwYWNlX3NlcGFyYXRvcl1dKSAtPiBwYXJzZXJcblwKLVJldHVybiBhIG5ldyBYTUwgcGFyc2VyIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQuUGFyc2VyQ3JlYXRlCisKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIG5hbWVzcGFjZV9zZXBhcmF0b3I6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBpbnRlcm46IG9iamVjdCA9IE5VTEwKKworUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm5vdHVzZWQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCitweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZmNjZDIzM2UxNzQzYTggaW5wdXQ9MjNkMjk3MDRhY2FkMzg1ZF0qLwogewotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaW50ZXJuID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGludCBpbnRlcm5fZGVjcmVmID0gMDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuIiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInx6ek86UGFyc2VyQ3JlYXRlIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobmFtZXNwYWNlX3NlcGFyYXRvciAhPSBOVUxMCiAgICAgICAgICYmIHN0cmxlbihuYW1lc3BhY2Vfc2VwYXJhdG9yKSA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNTU5LDI5ICsxNTk2LDI4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19fLAotIkVycm9yU3RyaW5nKGVycm5vKSAtPiBzdHJpbmdcblwKLVJldHVybnMgc3RyaW5nIGVycm9yIGZvciBnaXZlbiBudW1iZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LkVycm9yU3RyaW5nCisKKyAgICBjb2RlOiBsb25nCisgICAgLworCitSZXR1cm5zIHN0cmluZyBlcnJvciBmb3IgZ2l2ZW4gbnVtYmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9FcnJvclN0cmluZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X0Vycm9yU3RyaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbG9uZyBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4NzY2ODEwOGI2ODY4ZTUgaW5wdXQ9Y2M2N2RlMDEwZDllNjJiM10qLwogewotICAgIGxvbmcgY29kZSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImw6RXJyb3JTdHJpbmciLCAmY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ6IiwgWE1MX0Vycm9yU3RyaW5nKChpbnQpY29kZSkpOwogfQogCiAvKiBMaXN0IG9mIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgcHlleHBhdF9tZXRob2RzW10gPSB7Ci0gICAgeyJQYXJzZXJDcmVhdGUiLCAgICAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsCi0gICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX199LAotICAgIHsiRXJyb3JTdHJpbmciLCAgICAgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfRXJyb3JTdHJpbmcsCi0gICAgIE1FVEhfVkFSQVJHUywgICAgICBweWV4cGF0X0Vycm9yU3RyaW5nX19kb2NfX30sCi0KLSAgICB7TlVMTCwgICAgICAgKFB5Q0Z1bmN0aW9uKU5VTEwsIDAsIE5VTEx9ICAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBQWUVYUEFUX1BBUlNFUkNSRUFURV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX0VSUk9SU1RSSU5HX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIC8qIE1vZHVsZSBkb2NzdHJpbmcgKi8KQEAgLTE1OTksMTYgKzE2MzUsNiBAQAogI2RlZmluZSBNT0RVTEVfSU5JVEZVTkMgUHlJbml0X3B5ZXhwYXQKICNlbmRpZgogCi0jaWZuZGVmIFB5TU9ESU5JVF9GVU5DCi0jICAgaWZkZWYgTVNfV0lORE9XUwotIyAgICAgICBkZWZpbmUgUHlNT0RJTklUX0ZVTkMgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBQeU1PRElOSVRfRlVOQyB2b2lkCi0jICAgZW5kaWYKLSNlbmRpZgotCi1QeU1PRElOSVRfRlVOQyBNT0RVTEVfSU5JVEZVTkModm9pZCk7ICAvKiBhdm9pZCBjb21waWxlciB3YXJuaW5ncyAqLwotCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHB5ZXhwYXRtb2R1bGUgPSB7CiAgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAgICAgTU9EVUxFX05BTUUsCkBAIC0xNjY2LDcgKzE2OTIsNyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyVHlwZSIsIChQeU9iamVjdCAqKSAmWG1scGFyc2V0eXBlKTsKIAogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJFWFBBVF9WRVJTSU9OIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBYTUxfRXhwYXRWZXJzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FeHBhdFZlcnNpb24oKSk7CiAgICAgewogICAgICAgICBYTUxfRXhwYXRfVmVyc2lvbiBpbmZvID0gWE1MX0V4cGF0VmVyc2lvbkluZm8oKTsKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ2ZXJzaW9uX2luZm8iLApAQCAtMTc0Niw3ICsxNzcyLDcgQEAKIAogI2RlZmluZSBNWUNPTlNUKG5hbWUpIFwKICAgICBpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQoZXJyb3JzX21vZHVsZSwgI25hbWUsICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKVhNTF9FcnJvclN0cmluZyhuYW1lKSkgPCAwKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhuYW1lKSkgPCAwKSAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHRtcG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKHRtcG51bSA9PSBOVUxMKSByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE5NTcsMyArMTk4Myw4IEBACiAKICAgICB7TlVMTCwgTlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CisKKy8qW2NsaW5pYyBpbnB1dF0KK2R1bXAgYnVmZmVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3JlYWRsaW5lLmMgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKaW5kZXggYWQ1MTM0OS4uNjc1YjcyMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9yZWFkbGluZS5jCisrKyBiL01vZHVsZXMvcmVhZGxpbmUuYwpAQCAtMjM3LDYgKzIzNyw0MyBAQAogVGhlIGRlZmF1bHQgZmlsZW5hbWUgaXMgfi8uaGlzdG9yeS4iKTsKIAogCisjaWZkZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorLyogRXhwb3J0ZWQgZnVuY3Rpb24gdG8gc2F2ZSBwYXJ0IG9mIGEgcmVhZGxpbmUgaGlzdG9yeSBmaWxlICovCisKK3N0YXRpYyBQeU9iamVjdCAqCithcHBlbmRfaGlzdG9yeV9maWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbmVsZW1lbnRzOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmogPSBQeV9Ob25lLCAqZmlsZW5hbWVfYnl0ZXM7CisgICAgY2hhciAqZmlsZW5hbWU7CisgICAgaW50IGVycjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml8TzphcHBlbmRfaGlzdG9yeV9maWxlIiwgJm5lbGVtZW50cywgJmZpbGVuYW1lX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChmaWxlbmFtZV9vYmogIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihmaWxlbmFtZV9vYmosICZmaWxlbmFtZV9ieXRlcykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZmlsZW5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKGZpbGVuYW1lX2J5dGVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmaWxlbmFtZV9ieXRlcyA9IE5VTEw7CisgICAgICAgIGZpbGVuYW1lID0gTlVMTDsKKyAgICB9CisgICAgZXJybm8gPSBlcnIgPSBhcHBlbmRfaGlzdG9yeShuZWxlbWVudHMsIGZpbGVuYW1lKTsKKyAgICBpZiAoIWVyciAmJiBfaGlzdG9yeV9sZW5ndGggPj0gMCkKKyAgICAgICAgaGlzdG9yeV90cnVuY2F0ZV9maWxlKGZpbGVuYW1lLCBfaGlzdG9yeV9sZW5ndGgpOworICAgIFB5X1hERUNSRUYoZmlsZW5hbWVfYnl0ZXMpOworICAgIGVycm5vID0gZXJyOworICAgIGlmIChlcnJubykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGRvY19hcHBlbmRfaGlzdG9yeV9maWxlLAorImFwcGVuZF9oaXN0b3J5X2ZpbGUobmVsZW1lbnRzWywgZmlsZW5hbWVdKSAtPiBOb25lXG5cCitBcHBlbmQgdGhlIGxhc3QgbmVsZW1lbnRzIG9mIHRoZSBoaXN0b3J5IGxpc3QgdG8gZmlsZS5cblwKK1RoZSBkZWZhdWx0IGZpbGVuYW1lIGlzIH4vLmhpc3RvcnkuIik7CisjZW5kaWYKKworCiAvKiBTZXQgaGlzdG9yeSBsZW5ndGggKi8KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtNzQ4LDYgKzc4NSwxMCBAQAogICAgICBNRVRIX1ZBUkFSR1MsIGRvY19yZWFkX2hpc3RvcnlfZmlsZX0sCiAgICAgeyJ3cml0ZV9oaXN0b3J5X2ZpbGUiLCB3cml0ZV9oaXN0b3J5X2ZpbGUsCiAgICAgIE1FVEhfVkFSQVJHUywgZG9jX3dyaXRlX2hpc3RvcnlfZmlsZX0sCisjaWZkZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorICAgIHsiYXBwZW5kX2hpc3RvcnlfZmlsZSIsIGFwcGVuZF9oaXN0b3J5X2ZpbGUsCisgICAgIE1FVEhfVkFSQVJHUywgZG9jX2FwcGVuZF9oaXN0b3J5X2ZpbGV9LAorI2VuZGlmCiAgICAgeyJnZXRfaGlzdG9yeV9pdGVtIiwgZ2V0X2hpc3RvcnlfaXRlbSwKICAgICAgTUVUSF9WQVJBUkdTLCBkb2NfZ2V0X2hpc3RvcnlfaXRlbX0sCiAgICAgeyJnZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCIsIChQeUNGdW5jdGlvbilnZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCwKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCmluZGV4IGQ0MzZmNTIuLjQ0ZmYzZGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwpAQCAtMTkzLDUxICsxOTMsMzIgQEAKICNlbmRpZiAvKiBTRUxFQ1RfVVNFU19IRUFQICovCiAgICAgUHlPYmplY3QgKmlmZGxpc3QsICpvZmRsaXN0LCAqZWZkbGlzdDsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdG91dCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gUHlfTm9uZTsKICAgICBmZF9zZXQgaWZkc2V0LCBvZmRzZXQsIGVmZHNldDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKICAgICBpbnQgaW1heCwgb21heCwgZW1heCwgbWF4OwogICAgIGludCBuOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CiAKICAgICAvKiBjb252ZXJ0IGFyZ3VtZW50cyAqLwogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNlbGVjdCIsIDMsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZpZmRsaXN0LCAmb2ZkbGlzdCwgJmVmZGxpc3QsICZ0b3V0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmlmZGxpc3QsICZvZmRsaXN0LCAmZWZkbGlzdCwgJnRpbWVvdXRfb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAodG91dCA9PSBQeV9Ob25lKQotICAgICAgICB0dnAgPSAoc3RydWN0IHRpbWV2YWwgKikwOwotICAgIGVsc2UgaWYgKCFQeU51bWJlcl9DaGVjayh0b3V0KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhIGZsb2F0IG9yIE5vbmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICh0aW1lb3V0X29iaiA9PSBQeV9Ob25lKQorICAgICAgICB0dnAgPSAoc3RydWN0IHRpbWV2YWwgKilOVUxMOwogICAgIGVsc2UgewotICAgICAgICAvKiBPbiBPcGVuQlNEIDUuNCwgdGltZXZhbC50dl9zZWMgaXMgYSBsb25nLgotICAgICAgICAgKiBFeGFtcGxlOiBsb25nIGlzIDY0LWJpdCwgd2hlcmVhcyB0aW1lX3QgaXMgMzItYml0LiAqLwotICAgICAgICB0aW1lX3Qgc2VjOwotICAgICAgICAvKiBPbiBPUyBYIDY0LWJpdCwgdGltZXZhbC50dl91c2VjIGlzIGFuIGludCAoYW5kIHRodXMgc3RpbGwgNAotICAgICAgICAgICBieXRlcyBhcyByZXF1aXJlZCksIGJ1dCBubyBsb25nZXIgZGVmaW5lZCBieSBhIGxvbmcuICovCi0gICAgICAgIGxvbmcgdXNlYzsKLSAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRvdXQsICZzZWMsICZ1c2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9VUCkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIC8qIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIGlzIGEgbG9uZyAoMzIgYml0KSwKLSAgICAgICAgICogd2hlcmVhcyB0aW1lX3QgY2FuIGJlIDY0LWJpdC4gKi8KLSAgICAgICAgYXNzZXJ0KHNpemVvZih0di50dl9zZWMpID09IHNpemVvZihsb25nKSk7Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgICAgIGlmIChzZWMgPiBMT05HX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LCB0aW1lb3V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGEgZmxvYXQgb3IgTm9uZSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB0di50dl9zZWMgPSAobG9uZylzZWM7Ci0jZWxzZQotICAgICAgICBhc3NlcnQoc2l6ZW9mKHR2LnR2X3NlYykgPj0gc2l6ZW9mKHNlYykpOwotICAgICAgICB0di50dl9zZWMgPSBzZWM7Ci0jZW5kaWYKLSAgICAgICAgdHYudHZfdXNlYyA9IHVzZWM7CisKKyAgICAgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAodHYudHZfc2VjIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NSw3ICsyMjYsNiBAQAogICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQogCi0KICNpZmRlZiBTRUxFQ1RfVVNFU19IRUFQCiAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgbGlzdHMgKi8KICAgICByZmQyb2JqID0gUHlNZW1fTkVXKHB5bGlzdCwgRkRfU0VUU0laRSArIDEpOwpAQCAtMjU4LDYgKzIzOCw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICNlbmRpZiAvKiBTRUxFQ1RfVVNFU19IRUFQICovCisKICAgICAvKiBDb252ZXJ0IHNlcXVlbmNlcyB0byBmZF9zZXRzLCBhbmQgZ2V0IG1heGltdW0gZmQgbnVtYmVyCiAgICAgICogcHJvcGFnYXRlcyB0aGUgUHl0aG9uIGV4Y2VwdGlvbiBzZXQgaW4gc2VxMnNldCgpCiAgICAgICovCkBAIC0yNzAsMTMgKzI1MSwzNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKChlbWF4PXNlcTJzZXQoZWZkbGlzdCwgJmVmZHNldCwgZWZkMm9iaikpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OworCiAgICAgbWF4ID0gaW1heDsKICAgICBpZiAob21heCA+IG1heCkgbWF4ID0gb21heDsKICAgICBpZiAoZW1heCA+IG1heCkgbWF4ID0gZW1heDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gc2VsZWN0KG1heCwgJmlmZHNldCwgJm9mZHNldCwgJmVmZHNldCwgdHZwKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh0dnApCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIG4gPSBzZWxlY3QobWF4LCAmaWZkc2V0LCAmb2Zkc2V0LCAmZWZkc2V0LCB0dnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHNlbGVjdCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisKKyAgICAgICAgaWYgKHR2cCkgeworICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgICAgICAgICAgbiA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKHRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgICAgIC8qIHJldHJ5IHNlbGVjdCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKG4gPT0gU09DS0VUX0VSUk9SKSB7CkBAIC01MTYsMzAgKzUyMSwzOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvbGxfcG9sbChwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdG91dCA9IE5VTEw7Ci0gICAgaW50IHRpbWVvdXQgPSAwLCBwb2xsX3Jlc3VsdCwgaSwgajsKKyAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdGltZW91dF9vYmogPSBOVUxMOworICAgIGludCBwb2xsX3Jlc3VsdCwgaSwgajsKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMLCAqbnVtID0gTlVMTDsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgbXMsIGRlYWRsaW5lOworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cG9sbCIsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogQ2hlY2sgdmFsdWVzIGZvciB0aW1lb3V0ICovCi0gICAgaWYgKHRvdXQgPT0gTlVMTCB8fCB0b3V0ID09IFB5X05vbmUpCisgICAgaWYgKHRpbWVvdXRfb2JqID09IE5VTEwgfHwgdGltZW91dF9vYmogPT0gUHlfTm9uZSkgewogICAgICAgICB0aW1lb3V0ID0gLTE7Ci0gICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbXMgPSAtMTsKKyAgICAgICAgZGVhZGxpbmUgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdG91dCA9IFB5TnVtYmVyX0xvbmcodG91dCk7Ci0gICAgICAgIGlmICghdG91dCkKKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbU1pbGxpc2Vjb25kc09iamVjdCgmdGltZW91dCwgdGltZW91dF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRpbWVvdXQgPSBfUHlMb25nX0FzSW50KHRvdXQpOwotICAgICAgICBQeV9ERUNSRUYodG91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIH0KKworICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1zIDwgSU5UX01JTiB8fCBtcyA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogICAgIH0KIAogICAgIC8qIEF2b2lkIGNvbmN1cnJlbnQgcG9sbCgpIGludm9jYXRpb24sIGlzc3VlIDg4NjUgKi8KQEAgLTU1NywxNCArNTcxLDM4IEBACiAgICAgc2VsZi0+cG9sbF9ydW5uaW5nID0gMTsKIAogICAgIC8qIGNhbGwgcG9sbCgpICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBvbGxfcmVzdWx0ID0gcG9sbChzZWxmLT51ZmRzLCBzZWxmLT51ZmRfbGVuLCB0aW1lb3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGFzeW5jX2VyciA9IDA7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgcG9sbF9yZXN1bHQgPSBwb2xsKHNlbGYtPnVmZHMsIHNlbGYtPnVmZF9sZW4sIChpbnQpbXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHBvbGwoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisgICAgICAgICAgICBhc3luY19lcnIgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgICAgICAgICBwb2xsX3Jlc3VsdCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgICAgIC8qIHJldHJ5IHBvbGwoKSB3aXRoIHRoZSByZWNvbXB1dGVkIHRpbWVvdXQgKi8KKyAgICAgICAgfQorICAgIH0gd2hpbGUgKDEpOwogCiAgICAgc2VsZi0+cG9sbF9ydW5uaW5nID0gMDsKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBpZiAoIWFzeW5jX2VycikKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC01NzMsNDEgKzYxMSw0MCBAQAogICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CiAgICAgaWYgKCFyZXN1bHRfbGlzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBqIDwgcG9sbF9yZXN1bHQ7IGorKykgewotICAgICAgICAgICAgLyogc2tpcCB0byB0aGUgbmV4dCBmaXJlZCBkZXNjcmlwdG9yICovCi0gICAgICAgICAgICB3aGlsZSAoIXNlbGYtPnVmZHNbaV0ucmV2ZW50cykgewotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGlmIHdlIGhpdCBhIE5VTEwgcmV0dXJuLCBzZXQgdmFsdWUgdG8gTlVMTAotICAgICAgICAgICAgICAgYW5kIGJyZWFrIG91dCBvZiBsb29wOyBjb2RlIGF0IGVuZCB3aWxsCi0gICAgICAgICAgICAgICBjbGVhbiB1cCByZXN1bHRfbGlzdCAqLwotICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5mZCk7Ci0gICAgICAgICAgICBpZiAobnVtID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHZhbHVlLCAwLCBudW0pOwogCi0gICAgICAgICAgICAvKiBUaGUgJjB4ZmZmZiBpcyBhIHdvcmthcm91bmQgZm9yIEFJWC4gICdyZXZlbnRzJwotICAgICAgICAgICAgICAgaXMgYSAxNi1iaXQgc2hvcnQsIGFuZCBJQk0gYXNzaWduZWQgUE9MTE5WQUwKLSAgICAgICAgICAgICAgIHRvIGJlIDB4ODAwMCwgc28gdGhlIGNvbnZlcnNpb24gdG8gaW50IHJlc3VsdHMKLSAgICAgICAgICAgICAgIGluIGEgbmVnYXRpdmUgbnVtYmVyLiBTZWUgU0YgYnVnICM5MjMzMTUuICovCi0gICAgICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5yZXZlbnRzICYgMHhmZmZmKTsKLSAgICAgICAgICAgIGlmIChudW0gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDEsIG51bSk7Ci0gICAgICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBqLCB2YWx1ZSkpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgIGZvciAoaSA9IDAsIGogPSAwOyBqIDwgcG9sbF9yZXN1bHQ7IGorKykgeworICAgICAgICAvKiBza2lwIHRvIHRoZSBuZXh0IGZpcmVkIGRlc2NyaXB0b3IgKi8KKyAgICAgICAgd2hpbGUgKCFzZWxmLT51ZmRzW2ldLnJldmVudHMpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQorICAgICAgICAvKiBpZiB3ZSBoaXQgYSBOVUxMIHJldHVybiwgc2V0IHZhbHVlIHRvIE5VTEwKKyAgICAgICAgICAgYW5kIGJyZWFrIG91dCBvZiBsb29wOyBjb2RlIGF0IGVuZCB3aWxsCisgICAgICAgICAgIGNsZWFuIHVwIHJlc3VsdF9saXN0ICovCisgICAgICAgIHZhbHVlID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgbnVtID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnVmZHNbaV0uZmQpOworICAgICAgICBpZiAobnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDAsIG51bSk7CisKKyAgICAgICAgLyogVGhlICYweGZmZmYgaXMgYSB3b3JrYXJvdW5kIGZvciBBSVguICAncmV2ZW50cycKKyAgICAgICAgICAgaXMgYSAxNi1iaXQgc2hvcnQsIGFuZCBJQk0gYXNzaWduZWQgUE9MTE5WQUwKKyAgICAgICAgICAgdG8gYmUgMHg4MDAwLCBzbyB0aGUgY29udmVyc2lvbiB0byBpbnQgcmVzdWx0cworICAgICAgICAgICBpbiBhIG5lZ2F0aXZlIG51bWJlci4gU2VlIFNGIGJ1ZyAjOTIzMzE1LiAqLworICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5yZXZlbnRzICYgMHhmZmZmKTsKKyAgICAgICAgaWYgKG51bSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHZhbHVlLCAxLCBudW0pOworICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBqLCB2YWx1ZSkpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpKys7CiAgICAgfQogICAgIHJldHVybiByZXN1bHRfbGlzdDsKIApAQCAtNzE4LDE0ICs3NTUsMTAgQEAKICAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKnNlbGYtPm5fZmRzOwogICAgIHNlbGYtPm5fZmRzID0gMDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKG4gPT0gLTEgKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICBuID0gX1B5X3dyaXRlKHNlbGYtPmZkX2RldnBvbGwsIHNlbGYtPmZkcywgc2l6ZSk7CisgICAgaWYgKG4gPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9CisKICAgICBpZiAobiA8IHNpemUpIHsKICAgICAgICAgLyoKICAgICAgICAgKiogRGF0YSB3cml0ZWQgdG8gL2Rldi9wb2xsIGlzIGEgYmluYXJ5IGRhdGEgc3RydWN0dXJlLiBJdCBpcyBub3QKQEAgLTg0Myw0MCArODc2LDM4IEBACiBkZXZwb2xsX3BvbGwoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgc3RydWN0IGR2cG9sbCBkdnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdF9saXN0ID0gTlVMTCwgKnRvdXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0aW1lb3V0X29iaiA9IE5VTEw7CiAgICAgaW50IHBvbGxfcmVzdWx0LCBpOwotICAgIGxvbmcgdGltZW91dDsKICAgICBQeU9iamVjdCAqdmFsdWUsICpudW0xLCAqbnVtMjsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgbXMsIGRlYWRsaW5lID0gMDsKIAogICAgIGlmIChzZWxmLT5mZF9kZXZwb2xsIDwgMCkKICAgICAgICAgcmV0dXJuIGRldnBvbGxfZXJyX2Nsb3NlZCgpOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cG9sbCIsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogQ2hlY2sgdmFsdWVzIGZvciB0aW1lb3V0ICovCi0gICAgaWYgKHRvdXQgPT0gTlVMTCB8fCB0b3V0ID09IFB5X05vbmUpCisgICAgaWYgKHRpbWVvdXRfb2JqID09IE5VTEwgfHwgdGltZW91dF9vYmogPT0gUHlfTm9uZSkgewogICAgICAgICB0aW1lb3V0ID0gLTE7Ci0gICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbXMgPSAtMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHRvdXQgPSBQeU51bWJlcl9Mb25nKHRvdXQpOwotICAgICAgICBpZiAoIXRvdXQpCisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21NaWxsaXNlY29uZHNPYmplY3QoJnRpbWVvdXQsIHRpbWVvdXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0aW1lb3V0ID0gUHlMb25nX0FzTG9uZyh0b3V0KTsKLSAgICAgICAgUHlfREVDUkVGKHRvdXQpOwotICAgICAgICBpZiAodGltZW91dCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgICAgICB9CiAKLSAgICBpZiAoKHRpbWVvdXQgPCAtMSkgfHwgKHRpbWVvdXQgPiBJTlRfTUFYKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIG91dCBvZiByYW5nZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgIGlmIChtcyA8IC0xIHx8IG1zID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKQEAgLTg4NCwxMiArOTE1LDM2IEBACiAKICAgICBkdnAuZHBfZmRzID0gc2VsZi0+ZmRzOwogICAgIGR2cC5kcF9uZmRzID0gc2VsZi0+bWF4X25fZmRzOwotICAgIGR2cC5kcF90aW1lb3V0ID0gdGltZW91dDsKKyAgICBkdnAuZHBfdGltZW91dCA9IChpbnQpbXM7CiAKLSAgICAvKiBjYWxsIGRldnBvbGwoKSAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwb2xsX3Jlc3VsdCA9IGlvY3RsKHNlbGYtPmZkX2RldnBvbGwsIERQX1BPTEwsICZkdnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHRpbWVvdXQgPj0gMCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICAvKiBjYWxsIGRldnBvbGwoKSAqLworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgcG9sbF9yZXN1bHQgPSBpb2N0bChzZWxmLT5mZF9kZXZwb2xsLCBEUF9QT0xMLCAmZHZwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBkZXZwb2xsKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmICh0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIHBvbGxfcmVzdWx0ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgZHZwLmRwX3RpbWVvdXQgPSAoaW50KW1zOworICAgICAgICAgICAgLyogcmV0cnkgZGV2cG9sbCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICAgICBpZiAocG9sbF9yZXN1bHQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKQEAgLTg5NywyOCArOTUyLDI2IEBACiAgICAgfQogCiAgICAgLyogYnVpbGQgdGhlIHJlc3VsdCBsaXN0ICovCi0KICAgICByZXN1bHRfbGlzdCA9IFB5TGlzdF9OZXcocG9sbF9yZXN1bHQpOwogICAgIGlmICghcmVzdWx0X2xpc3QpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcG9sbF9yZXN1bHQ7IGkrKykgewotICAgICAgICAgICAgbnVtMSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0uZmQpOwotICAgICAgICAgICAgbnVtMiA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0ucmV2ZW50cyk7Ci0gICAgICAgICAgICBpZiAoKG51bTEgPT0gTlVMTCkgfHwgKG51bTIgPT0gTlVMTCkpIHsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG51bTEpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIG51bTEsIG51bTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG51bTEpOwotICAgICAgICAgICAgUHlfREVDUkVGKG51bTIpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGksIHZhbHVlKSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcG9sbF9yZXN1bHQ7IGkrKykgeworICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7CisgICAgICAgIG51bTIgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLnJldmVudHMpOworICAgICAgICBpZiAoKG51bTEgPT0gTlVMTCkgfHwgKG51bTIgPT0gTlVMTCkpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG51bTIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfUGFjaygyLCBudW0xLCBudW0yKTsKKyAgICAgICAgUHlfREVDUkVGKG51bTEpOworICAgICAgICBQeV9ERUNSRUYobnVtMik7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMTMsNyArMTA2Niw2IEBACiAgICAgc3RydWN0IHBvbGxmZCAqZmRzOwogICAgIHN0cnVjdCBybGltaXQgbGltaXQ7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgLyoKICAgICAqKiBJZiB3ZSB0cnkgdG8gcHJvY2VzcyBtb3JlIHRoYXQgZ2V0cmxpbWl0KCkKICAgICAqKiBmZHMsIHRoZSBrZXJuZWwgd2lsbCBnaXZlIGFuIGVycm9yLCBzbwpAQCAtMTAyMSwxOCArMTA3MywxNCBAQAogICAgICoqIHZhbHVlLCBiZWNhdXNlIHdlIGNhbiBjaGFuZ2UgcmxpbWl0KCkgYW55dGltZS4KICAgICAqLwogICAgIGxpbWl0X3Jlc3VsdCA9IGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmbGltaXQpOwotICAgIGlmIChsaW1pdF9yZXN1bHQgIT0gLTEpCi0gICAgICAgIGZkX2RldnBvbGwgPSBfUHlfb3BlbigiL2Rldi9wb2xsIiwgT19SRFdSKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCiAgICAgaWYgKGxpbWl0X3Jlc3VsdCA9PSAtMSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZmRfZGV2cG9sbCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgIi9kZXYvcG9sbCIpOworCisgICAgZmRfZGV2cG9sbCA9IF9QeV9vcGVuKCIvZGV2L3BvbGwiLCBPX1JEV1IpOworICAgIGlmIChmZF9kZXZwb2xsID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBmZHMgPSBQeU1lbV9ORVcoc3RydWN0IHBvbGxmZCwgbGltaXQucmxpbV9jdXIpOwogICAgIGlmIChmZHMgPT0gTlVMTCkgewpAQCAtMTQzNywzNCArMTQ4NSw0NiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXBvbGxfcG9sbChweUVwb2xsX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGRvdWJsZSBkdGltZW91dCA9IC0xLjsKLSAgICBpbnQgdGltZW91dDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InRpbWVvdXQiLCAibWF4ZXZlbnRzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gTlVMTDsKICAgICBpbnQgbWF4ZXZlbnRzID0gLTE7CiAgICAgaW50IG5mZHMsIGk7CiAgICAgUHlPYmplY3QgKmVsaXN0ID0gTlVMTCwgKmV0dXBsZSA9IE5VTEw7CiAgICAgc3RydWN0IGVwb2xsX2V2ZW50ICpldnMgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJtYXhldmVudHMiLCBOVUxMfTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgbXMsIGRlYWRsaW5lOwogCiAgICAgaWYgKHNlbGYtPmVwZmQgPCAwKQogICAgICAgICByZXR1cm4gcHllcG9sbF9lcnJfY2xvc2VkKCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGRpOnBvbGwiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR0aW1lb3V0LCAmbWF4ZXZlbnRzKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T2k6cG9sbCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZW91dF9vYmosICZtYXhldmVudHMpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChkdGltZW91dCA8IDApIHsKKyAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCB8fCB0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHRpbWVvdXQgPSAtMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZHRpbWVvdXQgKiAxMDAwLjAgPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IC0xOworICAgICAgICBkZWFkbGluZSA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBlcG9sbF93YWl0KCkgaGFzIGEgcmVzb2x1dGlvbiBvZiAxIG1pbGxpc2Vjb25kLCByb3VuZCBhd2F5IGZyb20gemVybwotICAgICAgICAgICB0byB3YWl0ICphdCBsZWFzdCogZHRpbWVvdXQgc2Vjb25kcy4gKi8KLSAgICAgICAgdGltZW91dCA9IChpbnQpY2VpbChkdGltZW91dCAqIDEwMDAuMCk7CisgICAgICAgIC8qIGVwb2xsX3dhaXQoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsIHJvdW5kIHRvd2FyZHMKKyAgICAgICAgICAgaW5maW5pdHkgdG8gd2FpdCBhdCBsZWFzdCB0aW1lb3V0IHNlY29uZHMuICovCisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LCB0aW1lb3V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1zIDwgSU5UX01JTiB8fCBtcyA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogICAgIH0KIAogICAgIGlmIChtYXhldmVudHMgPT0gLTEpIHsKQEAgLTE0ODMsOSArMTU0MywzMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgbmZkcyA9IGVwb2xsX3dhaXQoc2VsZi0+ZXBmZCwgZXZzLCBtYXhldmVudHMsIHRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgbmZkcyA9IGVwb2xsX3dhaXQoc2VsZi0+ZXBmZCwgZXZzLCBtYXhldmVudHMsIChpbnQpbXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHBvbGwoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAodGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgICAgICAgICBuZmRzID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgLyogcmV0cnkgZXBvbGxfd2FpdCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSgxKTsKKwogICAgIGlmIChuZmRzIDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yMDIyLDggKzIxMDMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIHN0cnVjdCBrZXZlbnQgKmV2bCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqY2hsID0gTlVMTDsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dHNwZWM7CiAgICAgc3RydWN0IHRpbWVzcGVjICpwdGltZW91dHNwZWM7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKIAogICAgIGlmIChzZWxmLT5rcWZkIDwgMCkKICAgICAgICAgcmV0dXJuIGtxdWV1ZV9xdWV1ZV9lcnJfY2xvc2VkKCk7CkBAIC0yMDQxLDI0ICsyMTIzLDI1IEBACiAgICAgaWYgKG90aW1lb3V0ID09IFB5X05vbmUgfHwgb3RpbWVvdXQgPT0gTlVMTCkgewogICAgICAgICBwdGltZW91dHNwZWMgPSBOVUxMOwogICAgIH0KLSAgICBlbHNlIGlmIChQeU51bWJlcl9DaGVjayhvdGltZW91dCkpIHsKLSAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvdGltZW91dCwgJnRpbWVvdXQudHZfc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0LnR2X25zZWMsIF9QeVRpbWVfUk9VTkRfVVApID09IC0xKQorICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYW4gbnVtYmVyICIKKyAgICAgICAgICAgICAgICAib3IgTm9uZSwgZ290ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgUHlfVFlQRShvdGltZW91dCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHRpbWVvdXQsICZ0aW1lb3V0c3BlYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAodGltZW91dC50dl9zZWMgPCAwKSB7CisgICAgICAgIGlmICh0aW1lb3V0c3BlYy50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIG9yIE5vbmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYW4gbnVtYmVyICIKLSAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKLSAgICAgICAgICAgIFB5X1RZUEUob3RpbWVvdXQpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0c3BlYzsKICAgICB9CiAKICAgICBpZiAoY2ggIT0gTlVMTCAmJiBjaCAhPSBQeV9Ob25lKSB7CkBAIC0yMTAzLDEwICsyMTg2LDM0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZ290ZXZlbnRzID0ga2V2ZW50KHNlbGYtPmtxZmQsIGNobCwgbmNoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGV2bCwgbmV2ZW50cywgcHRpbWVvdXRzcGVjKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChwdGltZW91dHNwZWMpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIGdvdGV2ZW50cyA9IGtldmVudChzZWxmLT5rcWZkLCBjaGwsIG5jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZsLCBuZXZlbnRzLCBwdGltZW91dHNwZWMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIGtldmVudCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChwdGltZW91dHNwZWMpIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIGdvdGV2ZW50cyA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHRpbWVvdXQsICZ0aW1lb3V0c3BlYykgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIC8qIHJldHJ5IGtldmVudCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICAgICBpZiAoZ290ZXZlbnRzID09IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggYjQ0ZmUxOC4uNzRiOTRiYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTE4LDcgKzE4LDEzIEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGExCitjbGFzcyBTSEExVHlwZSAiU0hBMW9iamVjdCAqIiAiJlB5VHlwZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9M2RjOWEyMGQxYmVjYjc1OV0qLwogCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCkBAIC00OCw2ICs1NCw3IEBACiAgICAgc3RydWN0IHNoYTFfc3RhdGUgaGFzaF9zdGF0ZTsKIH0gU0hBMW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9zaGExbW9kdWxlLmMuaCIKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgpAQCAtMzA5LDEwICszMTYsMTUgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoU0hBMV9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMVR5cGUuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfY29weShTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMVR5cGVfY29weV9pbXBsKFNIQTFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjRlMDAxMjY0NjIwZjAyYSBpbnB1dD1iN2VhZTEwZGY2Zjg5YjM2XSovCiB7CiAgICAgU0hBMW9iamVjdCAqbmV3b2JqOwogCkBAIC0zMjMsMTEgKzMzNSwxNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEExX2RpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEExVHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEExX2RpZ2VzdChTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMVR5cGVfZGlnZXN0X2ltcGwoU0hBMW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZjA1MzAyYTdhYTJiNWNiIGlucHV0PTIwNWQ0N2UxOTI3ZmQwMDldKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEExX0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBzaGExX3N0YXRlIHRlbXA7CkBAIC0zMzcsNTQgKzM1Myw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBTSEExX0RJR0VTVFNJWkUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBMV9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTFUeXBlLmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEExX2hleGRpZ2VzdChTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMVR5cGVfaGV4ZGlnZXN0X2ltcGwoU0hBMW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MTYxZmQ3MWU2OGM2NjU5IGlucHV0PTk3NjkxMDU1YzBjNzRhYjBdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEExX0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBzaGExX3N0YXRlIHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgdGVtcCA9IHNlbGYtPmhhc2hfc3RhdGU7CiAgICAgc2hhMV9kb25lKCZ0ZW1wLCBkaWdlc3QpOwogCi0gICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoU0hBMV9ESUdFU1RTSVpFICogMiwgMTI3KTsKLSAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwotCi0gICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCi0gICAgZm9yKGk9aj0wOyBpPFNIQTFfRElHRVNUU0laRTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIFNIQTFfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEExX3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEExVHlwZS51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfdXBkYXRlKFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU0hBMVR5cGVfdXBkYXRlKFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk5MDJmMGU1MDE1ZTlhZSBpbnB1dD1hYWQ4ZTA3ODEyZWRiYmEzXSovCiB7Ci0gICAgUHlPYmplY3QgKm9iajsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKIAogICAgIHNoYTFfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CkBAIC0zOTUsMTAgKzM5OCwxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgU0hBMV9tZXRob2RzW10gPSB7Ci0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pU0hBMV9jb3B5LCAgICAgIE1FVEhfTk9BUkdTLCAgU0hBMV9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pU0hBMV9kaWdlc3QsICAgIE1FVEhfTk9BUkdTLCAgU0hBMV9kaWdlc3RfX2RvY19ffSwKLSAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEExX2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsICBTSEExX2hleGRpZ2VzdF9fZG9jX199LAotICAgIHsidXBkYXRlIiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTFfdXBkYXRlLCAgICBNRVRIX1ZBUkFSR1MsIFNIQTFfdXBkYXRlX19kb2NfX30sCisgICAgU0hBMVRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICBTSEExVFlQRV9ESUdFU1RfTUVUSE9EREVGCisgICAgU0hBMVRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIFNIQTFUWVBFX1VQREFURV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQ3NCwyNyArNDc3LDI2IEBACiAKIC8qIFRoZSBzaW5nbGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uOiBuZXcoKSAqLwogCi1QeURvY19TVFJWQVIoU0hBMV9uZXdfX2RvY19fLAotIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitfc2hhMS5zaGExCisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBMSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMV9uZXcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQorX3NoYTFfc2hhMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U0ZTg0MTM4NmI5ZThkYiBpbnB1dD0yN2VhNTQyODFkOTk1ZWMyXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEExb2JqZWN0ICpuZXc7Ci0gICAgUHlPYmplY3QgKmRhdGFfb2JqID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAifE86bmV3Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX29iaikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGRhdGFfb2JqKQotICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKGRhdGFfb2JqLCAmYnVmKTsKKyAgICBpZiAoc3RyaW5nKQorICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKHN0cmluZywgJmJ1Zik7CiAKICAgICBpZiAoKG5ldyA9IG5ld1NIQTFvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MDMsMTEgKzUwNSwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYTFfcHJvY2VzcygmbmV3LT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC01MTksNyArNTIxLDcgQEAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgU0hBMV9mdW5jdGlvbnNbXSA9IHsKLSAgICB7InNoYTEiLChQeUNGdW5jdGlvbilTSEExX25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsU0hBMV9uZXdfX2RvY19ffSwKKyAgICBfU0hBMV9TSEExX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCmluZGV4IGIwNWJmYzEuLjhjNGRlZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwpAQCAtMTksNyArMTksMTMgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGEyNTYKK2NsYXNzIFNIQTI1NlR5cGUgIlNIQW9iamVjdCAqIiAiJlB5VHlwZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NzFhMzkxNzRkNGYwYTc0NF0qLwogCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCkBAIC00Nyw2ICs1Myw4IEBACiAgICAgaW50IGRpZ2VzdHNpemU7CiB9IFNIQW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIgorCiAvKiBXaGVuIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gQ1BVIHdlIG5lZWQgdG8gcGVyZm9ybSBieXRlIHJldmVyc2FsIG9uIGFuCiAgICBhcnJheSBvZiBsb25nd29yZHMuICovCiAKQEAgLTM5MywxMCArNDAxLDE1IEBACiAKIC8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KIAotUHlEb2NfU1RSVkFSKFNIQTI1Nl9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMjU2VHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMjU2VHlwZV9jb3B5X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhOGJiZDY2YTBjOWMxNjggaW5wdXQ9ZjU4ODQwYTYxOGQ0ZjJhN10qLwogewogICAgIFNIQW9iamVjdCAqbmV3b2JqOwogCkBAIC00MTIsMTEgKzQyNSwxNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEyNTZfZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTI1NlR5cGUuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEEyNTZUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NjYxNmE1ZTkwOWZiYzNkIGlucHV0PTFmYjc1MmU1ODk1NDE1N2RdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CkBAIC00MjYsNTQgKzQ0Myw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5kaWdlc3RzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTI1Nl9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTI1NlR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTI1Nl9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMjU2VHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI1ZjhhNzA0MWFlOTdmMyBpbnB1dD0wY2M0YzcxNDY5MzAxMGQxXSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKLSAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwogICAgIFNIQWNvcHkoc2VsZiwgJnRlbXApOwogICAgIHNoYV9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAotICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBMjU2X3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEEyNTZUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X3VwZGF0ZShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU0hBMjU2VHlwZV91cGRhdGUoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NjdmYjI4NjBjNjZhZjcgaW5wdXQ9YjJkNDQ5ZDViMzBmMGY1YV0qLwogewotICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1cGRhdGUiLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CiAKICAgICBzaGFfdXBkYXRlKHNlbGYsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwpAQCAtNDg0LDEwICs0ODgsMTAgQEAKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIFNIQV9tZXRob2RzW10gPSB7Ci0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pU0hBMjU2X2NvcHksICAgICAgTUVUSF9OT0FSR1MsICBTSEEyNTZfY29weV9fZG9jX199LAotICAgIHsiZGlnZXN0IiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl9kaWdlc3QsICAgIE1FVEhfTk9BUkdTLCAgU0hBMjU2X2RpZ2VzdF9fZG9jX199LAotICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCAgU0hBMjU2X2hleGRpZ2VzdF9fZG9jX199LAotICAgIHsidXBkYXRlIiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl91cGRhdGUsICAgIE1FVEhfVkFSQVJHUywgU0hBMjU2X3VwZGF0ZV9fZG9jX199LAorICAgIFNIQTI1NlRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICBTSEEyNTZUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyAgICBTSEEyNTZUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBTSEEyNTZUWVBFX1VQREFURV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTU5NCwyNyArNTk4LDI2IEBACiAKIC8qIFRoZSBzaW5nbGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uOiBuZXcoKSAqLwogCi1QeURvY19TVFJWQVIoU0hBMjU2X25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEyNTYuc2hhMjU2CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhMjU2X3NoYTI1Nl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDcwZTZlMmQ5NzExMjg0NCBpbnB1dD0wOWNjZTNmYjg1NTA1NmIyXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMjU2b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjIzLDExICs2MjYsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGFfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNjM1LDI3ICs2MzgsMjYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3OwogfQogCi1QeURvY19TVFJWQVIoU0hBMjI0X25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEyNTYuc2hhMjI0CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTIyNCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjI0X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhMjU2X3NoYTIyNF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjI4MjJiZjI4NDE2YjQyYSBpbnB1dD0yN2EwNGJhMjRjMzUzYTczXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMjI0b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjY0LDExICs2NjYsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGFfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNjgwLDggKzY4Miw4IEBACiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLwogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIFNIQV9mdW5jdGlvbnNbXSA9IHsKLSAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilTSEEyNTZfbmV3LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgU0hBMjU2X25ld19fZG9jX199LAotICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKVNIQTIyNF9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEEyMjRfbmV3X19kb2NfX30sCisgICAgX1NIQTI1Nl9TSEEyNTZfTUVUSE9EREVGCisgICAgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggNDdjNTdlNS4uODIzN2Q4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCkBAIC0xOSw2ICsxOSwxMyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTUxMgorY2xhc3MgU0hBNTEyVHlwZSAiU0hBb2JqZWN0ICoiICImUHlUeXBlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04MWEzY2NkZTkyYmNmZThkXSovCiAKICNpZmRlZiBQWV9MT05HX0xPTkcgLyogSWYgbm8gUFlfTE9OR19MT05HLCBkb24ndCBjb21waWxlIGFueXRoaW5nISAqLwogCkBAIC00OSw2ICs1Niw4IEBACiAgICAgaW50IGRpZ2VzdHNpemU7CiB9IFNIQW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9zaGE1MTJtb2R1bGUuYy5oIgorCiAvKiBXaGVuIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gQ1BVIHdlIG5lZWQgdG8gcGVyZm9ybSBieXRlIHJldmVyc2FsIG9uIGFuCiAgICBhcnJheSBvZiBsb25nd29yZHMuICovCiAKQEAgLTQ1OSwxMCArNDY4LDE1IEBACiAKIC8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBNTEyVHlwZV9jb3B5X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFkZWE4OTZlZDMxNjQ4MjEgaW5wdXQ9OWY1ZjMxZTZjNDU3Nzc2YV0qLwogewogICAgIFNIQW9iamVjdCAqbmV3b2JqOwogCkBAIC00NzgsMTEgKzQ5MiwxNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEE1MTJfZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTUxMlR5cGUuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMDgwYmJlZWVmN2RkZTFiIGlucHV0PTYwYzJjZWRlOWUwMjMwMThdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CkBAIC00OTIsNTQgKzUxMCw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5kaWdlc3RzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTUxMlR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTUxMl9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM3MzMwNWI4NjAxZTE4YiBpbnB1dD00OThiODc3YjI1Y2JlMGEyXSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKLSAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwogICAgIFNIQWNvcHkoc2VsZiwgJnRlbXApOwogICAgIHNoYTUxMl9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAotICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IgKGk9aj0wOyBpPHNlbGYtPmRpZ2VzdHNpemU7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgIH0KLSNpZmRlZiBQeV9ERUJVRwotICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5kaWdlc3RzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl91cGRhdGVfX2RvY19fLAotIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTUxMl91cGRhdGUoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1NIQTUxMlR5cGVfdXBkYXRlKFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xY2YzMzNlNzM5OTVhNzllIGlucHV0PWRlZDJiNDY2NTY1NjYyODNdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dXBkYXRlIiwgJm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOwogCiAgICAgc2hhNTEyX3VwZGF0ZShzZWxmLCBidWYuYnVmLCBidWYubGVuKTsKQEAgLTU0OCwxMiArNTUzLDE2IEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQorLypbY2xpbmljIGlucHV0XQorZHVtcCBidWZmZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTUyNGNlMmUwMjFlNGViYTZdKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIFNIQV9tZXRob2RzW10gPSB7Ci0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pU0hBNTEyX2NvcHksICAgICAgTUVUSF9OT0FSR1MsIFNIQTUxMl9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pU0hBNTEyX2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsIFNIQTUxMl9kaWdlc3RfX2RvY19ffSwKLSAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEE1MTJfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBNTEyX2hleGRpZ2VzdF9fZG9jX199LAotICAgIHsidXBkYXRlIiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTUxMl91cGRhdGUsICAgIE1FVEhfVkFSQVJHUywgU0hBNTEyX3VwZGF0ZV9fZG9jX199LAorICAgIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyAgICBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTY2MCwyNyArNjY5LDI2IEBACiAKIC8qIFRoZSBzaW5nbGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uOiBuZXcoKSAqLwogCi1QeURvY19TVFJWQVIoU0hBNTEyX25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS01MTIgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGE1MTIuc2hhNTEyCisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhNTEyX3NoYTUxMl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGExM2JjMGE5NGRhNmRlMyBpbnB1dD1lNjliYWQ5YWU5YjZhMzA4XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBNTEyb2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjg5LDExICs2OTcsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGE1MTJfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNzAxLDI3ICs3MDksMjYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3OwogfQogCi1QeURvY19TVFJWQVIoU0hBMzg0X25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS0zODQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGE1MTIuc2hhMzg0CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMzg0X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhNTEyX3NoYTM4NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWM3MzFhZWE1NTA5MTc0ZCBpbnB1dD1jOTMyNzc4OGQ0ZWE0NTQ1XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMzg0b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNzMwLDExICs3MzcsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGE1MTJfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNzQzLDExICs3NTAsMTYgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCitkdW1wIGJ1ZmZlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLworCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLwogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIFNIQV9mdW5jdGlvbnNbXSA9IHsKLSAgICB7InNoYTUxMiIsIChQeUNGdW5jdGlvbilTSEE1MTJfbmV3LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgU0hBNTEyX25ld19fZG9jX199LAotICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKVNIQTM4NF9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEEzODRfbmV3X19kb2NfX30sCisgICAgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCisgICAgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKaW5kZXggZmVkYWRkZi4uNzBmMzA1MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCkBAIC03LDYgKzcsOSBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSAicG9zaXhtb2R1bGUuaCIKICNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIgICAvKiBuZWVkZWQgZm9yIFNPQ0tFVF9UICovCisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC00OSw2ICs1MiwxMyBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpbmNsdWRlICJjbGluaWMvc2lnbmFsbW9kdWxlLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIHNpZ25hbAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjAzMDFhM2JkZTVmZTlkM10qLworCiAKIC8qCiAgICBOT1RFUyBPTiBUSEUgSU5URVJBQ1RJT04gQkVUV0VFTiBTSUdOQUxTIEFORCBUSFJFQURTCkBAIC04Nyw3ICs5NywyMCBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogfSBIYW5kbGVyc1tOU0lHXTsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgSU5WQUxJRF9GRCAoKFNPQ0tFVF9UKS0xKQorCitzdGF0aWMgdm9sYXRpbGUgc3RydWN0IHsKKyAgICBTT0NLRVRfVCBmZDsKKyAgICBpbnQgdXNlX3NlbmQ7CisgICAgaW50IHNlbmRfZXJyX3NldDsKKyAgICBpbnQgc2VuZF9lcnJubzsKKyAgICBpbnQgc2VuZF93aW5fZXJyb3I7Cit9IHdha2V1cCA9IHtJTlZBTElEX0ZELCAwLCAwfTsKKyNlbHNlCisjZGVmaW5lIElOVkFMSURfRkQgKC0xKQogc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCB3YWtldXBfZmQgPSAtMTsKKyNlbmRpZgogCiAvKiBTcGVlZCB1cCBzaWdjaGVjaygpIHdoZW4gbm9uZSB0cmlwcGVkICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGlzX3RyaXBwZWQgPSAwOwpAQCAtMTcyLDcgKzE5NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXJlcG9ydF93YWtldXBfZXJyb3Iodm9pZCAqZGF0YSkKK3JlcG9ydF93YWtldXBfd3JpdGVfZXJyb3Iodm9pZCAqZGF0YSkKIHsKICAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOwogICAgIGVycm5vID0gKGludCkgKFB5X2ludHB0cl90KSBkYXRhOwpAQCAtMTg0LDI1ICsyMDcsODcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK3JlcG9ydF93YWtldXBfc2VuZF9lcnJvcih2b2lkKiBQeV9VTlVTRUQoZGF0YSkpCit7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIGlmICh3YWtldXAuc2VuZF93aW5fZXJyb3IpIHsKKyAgICAgICAgLyogUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoKSBpbnZva2VzIEZvcm1hdE1lc3NhZ2UoKSB3aGljaAorICAgICAgICAgICByZWNvZ25pemVzIHRoZSBlcnJvciBjb2RlcyB1c2VkIGJ5IGJvdGggR2V0TGFzdEVycm9yKCkgYW5kCisgICAgICAgICAgIFdTQUdldExhc3RFcnJvciAqLworICAgICAgICByZXMgPSBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCB3YWtldXAuc2VuZF93aW5fZXJyb3IpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXJybm8gPSB3YWtldXAuc2VuZF9lcnJubzsKKyAgICAgICAgcmVzID0gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKworICAgIGFzc2VydChyZXMgPT0gTlVMTCk7CisgICAgd2FrZXVwLnNlbmRfZXJyX3NldCA9IDA7CisKKyAgICBQeVN5c19Xcml0ZVN0ZGVycigiRXhjZXB0aW9uIGlnbm9yZWQgd2hlbiB0cnlpbmcgdG8gc2VuZCB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CisgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgICAvKiBNU19XSU5ET1dTICovCisKIHN0YXRpYyB2b2lkCiB0cmlwX3NpZ25hbChpbnQgc2lnX251bSkKIHsKICAgICB1bnNpZ25lZCBjaGFyIGJ5dGU7Ci0gICAgaW50IHJjID0gMDsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCByYzsKIAogICAgIEhhbmRsZXJzW3NpZ19udW1dLnRyaXBwZWQgPSAxOwotICAgIGlmICh3YWtldXBfZmQgIT0gLTEpIHsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBmZCA9IFB5X1NBRkVfRE9XTkNBU1Qod2FrZXVwLmZkLCBTT0NLRVRfVCwgaW50KTsKKyNlbHNlCisgICAgZmQgPSB3YWtldXBfZmQ7CisjZW5kaWYKKworICAgIGlmIChmZCAhPSBJTlZBTElEX0ZEKSB7CiAgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOwotICAgICAgICB3aGlsZSAoKHJjID0gd3JpdGUod2FrZXVwX2ZkLCAmYnl0ZSwgMSkpID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKLSAgICAgICAgaWYgKHJjID09IC0xKQotICAgICAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwocmVwb3J0X3dha2V1cF9lcnJvciwgKHZvaWQgKikgKFB5X2ludHB0cl90KSBlcnJubyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAod2FrZXVwLnVzZV9zZW5kKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgcmMgPSBzZW5kKGZkLCAmYnl0ZSwgMSwgMCk7CisgICAgICAgICAgICB9IHdoaWxlIChyYyA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOworCisgICAgICAgICAgICAvKiB3ZSBvbmx5IGhhdmUgYSBzdG9yYWdlIGZvciBvbmUgZXJyb3IgaW4gdGhlIHdha2V1cCBzdHJ1Y3R1cmUgKi8KKyAgICAgICAgICAgIGlmIChyYyA8IDAgJiYgIXdha2V1cC5zZW5kX2Vycl9zZXQpIHsKKyAgICAgICAgICAgICAgICB3YWtldXAuc2VuZF9lcnJfc2V0ID0gMTsKKyAgICAgICAgICAgICAgICB3YWtldXAuc2VuZF9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgICAgIHdha2V1cC5zZW5kX3dpbl9lcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfc2VuZF9lcnJvciwgTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOworCisgICAgICAgICAgICAvKiBfUHlfd3JpdGVfbm9yYWlzZSgpIHJldHJpZXMgd3JpdGUoKSBpZiB3cml0ZSgpIGlzIGludGVycnVwdGVkIGJ5CisgICAgICAgICAgICAgICBhIHNpZ25hbCAoZmFpbHMgd2l0aCBFSU5UUikuICovCisgICAgICAgICAgICByYyA9IF9QeV93cml0ZV9ub3JhaXNlKGZkLCAmYnl0ZSwgMSk7CisKKyAgICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9BZGRQZW5kaW5nQ2FsbChyZXBvcnRfd2FrZXVwX3dyaXRlX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKFB5X2ludHB0cl90KWVycm5vKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoaXNfdHJpcHBlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIC8qIFNldCBpc190cmlwcGVkIGFmdGVyIHNldHRpbmcgLnRyaXBwZWQsIGFzIGl0IGdldHMKLSAgICAgICBjbGVhcmVkIGluIFB5RXJyX0NoZWNrU2lnbmFscygpIGJlZm9yZSAudHJpcHBlZC4gKi8KLSAgICBpc190cmlwcGVkID0gMTsKLSAgICBQeV9BZGRQZW5kaW5nQ2FsbChjaGVja3NpZ25hbHNfd2l0aGFyZywgTlVMTCk7CisKKyAgICBpZiAoIWlzX3RyaXBwZWQpIHsKKyAgICAgICAgLyogU2V0IGlzX3RyaXBwZWQgYWZ0ZXIgc2V0dGluZyAudHJpcHBlZCwgYXMgaXQgZ2V0cworICAgICAgICAgICBjbGVhcmVkIGluIFB5RXJyX0NoZWNrU2lnbmFscygpIGJlZm9yZSAudHJpcHBlZC4gKi8KKyAgICAgICAgaXNfdHJpcHBlZCA9IDE7CisgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjcsNyArMzEyLDcgQEAKICAgICBpZiAoc2lnX251bSAhPSBTSUdDSExEKQogI2VuZGlmCiAgICAgLyogSWYgdGhlIGhhbmRsZXIgd2FzIG5vdCBzZXQgdXAgd2l0aCBzaWdhY3Rpb24sIHJlaW5zdGFsbCBpdC4gIFNlZQotICAgICAqIFB5dGhvbi9weXRob25ydW4uYyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIFB5T1Nfc2V0c2lnIHdoaWNoCisgICAgICogUHl0aG9uL3B5bGlmZWN5Y2xlLmMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBQeU9TX3NldHNpZyB3aGljaAogICAgICAqIG1ha2VzIHRoaXMgdHJ1ZS4gIFNlZSBhbHNvIGlzc3VlODM1NC4gKi8KICAgICBQeU9TX3NldHNpZyhzaWdfbnVtLCBzaWduYWxfaGFuZGxlcik7CiAjZW5kaWYKQEAgLTI0NCwyNSArMzI5LDM3IEBACiAKIAogI2lmZGVmIEhBVkVfQUxBUk0KLXN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfYWxhcm0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuYWxhcm0gLT4gbG9uZworCisgICAgc2Vjb25kczogaW50CisgICAgLworCitBcnJhbmdlIGZvciBTSUdBTFJNIHRvIGFycml2ZSBhZnRlciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitzaWduYWxfYWxhcm1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2Vjb25kcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNWY5YmFkYWFiMjVkM2U3IGlucHV0PTBkNWU5N2UwZTZmMzllODZdKi8KIHsKLSAgICBpbnQgdDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6YWxhcm0iLCAmdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIGFsYXJtKCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgcmVtYWluaW5nICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylhbGFybSh0KSk7CisgICAgcmV0dXJuIChsb25nKWFsYXJtKHNlY29uZHMpOwogfQogCi1QeURvY19TVFJWQVIoYWxhcm1fZG9jLAotImFsYXJtKHNlY29uZHMpXG5cCi1cblwKLUFycmFuZ2UgZm9yIFNJR0FMUk0gdG8gYXJyaXZlIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4iKTsKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9QQVVTRQorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwucGF1c2UKKworV2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3BhdXNlKFB5T2JqZWN0ICpzZWxmKQorc2lnbmFsX3BhdXNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MjQ1NzA0Y2FhNjNiYmU5IGlucHV0PWYwM2RlMGY4NzU3NTIwNjJdKi8KIHsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgKHZvaWQpcGF1c2UoKTsKQEAgLTI3MywyOSArMzcwLDM4IEBACiAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLVB5RG9jX1NUUlZBUihwYXVzZV9kb2MsCi0icGF1c2UoKVxuXAotXG5cCi1XYWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMuIik7CiAKICNlbmRpZgogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWduYWwKKworICAgIHNpZ25hbG51bTogaW50CisgICAgaGFuZGxlcjogICBvYmplY3QKKyAgICAvCisKK1NldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYWN0aW9uIGNhbiBiZSBTSUdfREZMLCBTSUdfSUdOLCBvciBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QuCitUaGUgcHJldmlvdXMgYWN0aW9uIGlzIHJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLgorCisqKiogSU1QT1JUQU5UIE5PVElDRSAqKioKK0Egc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czoKK3RoZSBmaXJzdCBpcyB0aGUgc2lnbmFsIG51bWJlciwgdGhlIHNlY29uZCBpcyB0aGUgaW50ZXJydXB0ZWQgc3RhY2sgZnJhbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lnbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBQeU9iamVjdCAqaGFuZGxlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MjJkN2QwYmVlYmVhNTQ2IGlucHV0PWRlZWU4NGFmNWZhMDQzMmNdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIGludCBzaWdfbnVtOwogICAgIFB5T2JqZWN0ICpvbGRfaGFuZGxlcjsKICAgICB2b2lkICgqZnVuYykoaW50KTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsICZzaWdfbnVtLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIFZhbGlkYXRlIHRoYXQgc2lnX251bSBpcyBvbmUgb2YgdGhlIGFsbG93YWJsZSBzaWduYWxzICovCi0gICAgc3dpdGNoIChzaWdfbnVtKSB7CisgICAgLyogVmFsaWRhdGUgdGhhdCBzaWduYWxudW0gaXMgb25lIG9mIHRoZSBhbGxvd2FibGUgc2lnbmFscyAqLworICAgIHN3aXRjaCAoc2lnbmFsbnVtKSB7CiAgICAgICAgIGNhc2UgU0lHQUJSVDogYnJlYWs7CiAjaWZkZWYgU0lHQlJFQUsKICAgICAgICAgLyogSXNzdWUgIzEwMDAzOiBTSUdCUkVBSyBpcyBub3QgZG9jdW1lbnRlZCBhcyBwZXJtaXR0ZWQsIGJ1dCB3b3JrcwpAQCAtMzE5LDYxICs0MjUsNjMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKHNpZ19udW0gPCAxIHx8IHNpZ19udW0gPj0gTlNJRykgeworICAgIGlmIChzaWduYWxudW0gPCAxIHx8IHNpZ25hbG51bSA+PSBOU0lHKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAob2JqID09IElnbm9yZUhhbmRsZXIpCisgICAgaWYgKGhhbmRsZXIgPT0gSWdub3JlSGFuZGxlcikKICAgICAgICAgZnVuYyA9IFNJR19JR047Ci0gICAgZWxzZSBpZiAob2JqID09IERlZmF1bHRIYW5kbGVyKQorICAgIGVsc2UgaWYgKGhhbmRsZXIgPT0gRGVmYXVsdEhhbmRsZXIpCiAgICAgICAgIGZ1bmMgPSBTSUdfREZMOwotICAgIGVsc2UgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKG9iaikpIHsKKyAgICBlbHNlIGlmICghUHlDYWxsYWJsZV9DaGVjayhoYW5kbGVyKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogInNpZ25hbCBoYW5kbGVyIG11c3QgYmUgc2lnbmFsLlNJR19JR04sIHNpZ25hbC5TSUdfREZMLCBvciBhIGNhbGxhYmxlIG9iamVjdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGZ1bmMgPSBzaWduYWxfaGFuZGxlcjsKLSAgICBpZiAoUHlPU19zZXRzaWcoc2lnX251bSwgZnVuYykgPT0gU0lHX0VSUikgeworICAgIGlmIChQeU9TX3NldHNpZyhzaWduYWxudW0sIGZ1bmMpID09IFNJR19FUlIpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWdfbnVtXS5mdW5jOwotICAgIEhhbmRsZXJzW3NpZ19udW1dLnRyaXBwZWQgPSAwOwotICAgIFB5X0lOQ1JFRihvYmopOwotICAgIEhhbmRsZXJzW3NpZ19udW1dLmZ1bmMgPSBvYmo7CisgICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWduYWxudW1dLmZ1bmM7CisgICAgSGFuZGxlcnNbc2lnbmFsbnVtXS50cmlwcGVkID0gMDsKKyAgICBQeV9JTkNSRUYoaGFuZGxlcik7CisgICAgSGFuZGxlcnNbc2lnbmFsbnVtXS5mdW5jID0gaGFuZGxlcjsKICAgICBpZiAob2xkX2hhbmRsZXIgIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG9sZF9oYW5kbGVyOwogICAgIGVsc2UKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfZG9jLAotInNpZ25hbChzaWcsIGFjdGlvbikgLT4gYWN0aW9uXG5cCi1cblwKLVNldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLiAgVGhlIGFjdGlvbiBjYW4gYmUgU0lHX0RGTCxcblwKLVNJR19JR04sIG9yIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdC4gIFRoZSBwcmV2aW91cyBhY3Rpb24gaXNcblwKLXJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLlxuXAotXG5cCi0qKiogSU1QT1JUQU5UIE5PVElDRSAqKipcblwKLUEgc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czpcblwKLXRoZSBmaXJzdCBpcyB0aGUgc2lnbmFsIG51bWJlciwgdGhlIHNlY29uZCBpcyB0aGUgaW50ZXJydXB0ZWQgc3RhY2sgZnJhbWUuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5nZXRzaWduYWwKKworICAgIHNpZ25hbG51bTogaW50CisgICAgLworCitSZXR1cm4gdGhlIGN1cnJlbnQgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZToKKyAgU0lHX0lHTiAtLSBpZiB0aGUgc2lnbmFsIGlzIGJlaW5nIGlnbm9yZWQKKyAgU0lHX0RGTCAtLSBpZiB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBzaWduYWwgaXMgaW4gZWZmZWN0CisgIE5vbmUgICAgLS0gaWYgYW4gdW5rbm93biBoYW5kbGVyIGlzIGluIGVmZmVjdAorICBhbnl0aGluZyBlbHNlIC0tIHRoZSBjYWxsYWJsZSBQeXRob24gb2JqZWN0IHVzZWQgYXMgYSBoYW5kbGVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfZ2V0c2lnbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9nZXRzaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ1MGVjMzU1NzU3ZTM2MGMgaW5wdXQ9YWMyM2EwMGYxOWRmYTUwOV0qLwogewotICAgIGludCBzaWdfbnVtOwogICAgIFB5T2JqZWN0ICpvbGRfaGFuZGxlcjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0c2lnbmFsIiwgJnNpZ19udW0pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2lnX251bSA8IDEgfHwgc2lnX251bSA+PSBOU0lHKSB7CisgICAgaWYgKHNpZ25hbG51bSA8IDEgfHwgc2lnbmFsbnVtID49IE5TSUcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnX251bV0uZnVuYzsKKyAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ25hbG51bV0uZnVuYzsKICAgICBpZiAob2xkX2hhbmRsZXIgIT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYob2xkX2hhbmRsZXIpOwogICAgICAgICByZXR1cm4gb2xkX2hhbmRsZXI7CkBAIC0zODMsNTMgKzQ5MSw2NSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKGdldHNpZ25hbF9kb2MsCi0iZ2V0c2lnbmFsKHNpZykgLT4gYWN0aW9uXG5cCi1cblwKLVJldHVybiB0aGUgY3VycmVudCBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuICBUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZTpcblwKLVNJR19JR04gLS0gaWYgdGhlIHNpZ25hbCBpcyBiZWluZyBpZ25vcmVkXG5cCi1TSUdfREZMIC0tIGlmIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIHNpZ25hbCBpcyBpbiBlZmZlY3RcblwKLU5vbmUgLS0gaWYgYW4gdW5rbm93biBoYW5kbGVyIGlzIGluIGVmZmVjdFxuXAotYW55dGhpbmcgZWxzZSAtLSB0aGUgY2FsbGFibGUgUHl0aG9uIG9iamVjdCB1c2VkIGFzIGEgaGFuZGxlciIpOwotCiAjaWZkZWYgSEFWRV9TSUdJTlRFUlJVUFQKLVB5RG9jX1NUUlZBUihzaWdpbnRlcnJ1cHRfZG9jLAotInNpZ2ludGVycnVwdChzaWcsIGZsYWcpIC0+IE5vbmVcblwKLWNoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91cjogaWYgZmxhZyBpcyBGYWxzZSwgc3lzdGVtIGNhbGxzXG5cCi13aWxsIGJlIHJlc3RhcnRlZCB3aGVuIGludGVycnVwdGVkIGJ5IHNpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzXG5cCi13aWxsIGJlIGludGVycnVwdGVkLiIpOworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lnaW50ZXJydXB0CisKKyAgICBzaWduYWxudW06IGludAorICAgIGZsYWc6ICAgICAgaW50CisgICAgLworCitDaGFuZ2Ugc3lzdGVtIGNhbGwgcmVzdGFydCBiZWhhdmlvdXIuCisKK0lmIGZsYWcgaXMgRmFsc2UsIHN5c3RlbSBjYWxscyB3aWxsIGJlIHJlc3RhcnRlZCB3aGVuIGludGVycnVwdGVkIGJ5CitzaWduYWwgc2lnLCBlbHNlIHN5c3RlbSBjYWxscyB3aWxsIGJlIGludGVycnVwdGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ2ludGVycnVwdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lnaW50ZXJydXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHNpZ25hbG51bSwgaW50IGZsYWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRjZjhiMDMxYjBlODA0NCBpbnB1dD00MTYwYWNhY2NhM2UyMDk5XSovCiB7Ci0gICAgaW50IHNpZ19udW07Ci0gICAgaW50IGZsYWc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNpZ2ludGVycnVwdCIsICZzaWdfbnVtLCAmZmxhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaWdfbnVtIDwgMSB8fCBzaWdfbnVtID49IE5TSUcpIHsKKyAgICBpZiAoc2lnbmFsbnVtIDwgMSB8fCBzaWduYWxudW0gPj0gTlNJRykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpZ2ludGVycnVwdChzaWdfbnVtLCBmbGFnKTwwKSB7CisgICAgaWYgKHNpZ2ludGVycnVwdChzaWduYWxudW0sIGZsYWcpPDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKgorCitzdGF0aWMgUHlPYmplY3QqCiBzaWduYWxfc2V0X3dha2V1cF9mZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgc3RydWN0IHN0YXQgYnVmOworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqZmRvYmo7CisgICAgU09DS0VUX1Qgc29ja2ZkLCBvbGRfc29ja2ZkOworICAgIGludCByZXM7CisgICAgaW50IHJlc19zaXplID0gc2l6ZW9mIHJlczsKKyAgICBQeU9iamVjdCAqbW9kOworICAgIGludCBpc19zb2NrZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2V0X3dha2V1cF9mZCIsICZmZG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc29ja2ZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOworICAgIGlmIChzb2NrZmQgPT0gKFNPQ0tFVF9UKSgtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZWxzZQogICAgIGludCBmZCwgb2xkX2ZkOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldF93YWtldXBfZmQiLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpICE9IG1haW5fdGhyZWFkKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDM3LDIxICs1NTcsOTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGZkICE9IC0xICYmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCBmc3RhdChmZCwgJmJ1ZikgIT0gMCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlzX3NvY2tldCA9IDA7CisgICAgaWYgKHNvY2tmZCAhPSBJTlZBTElEX0ZEKSB7CisgICAgICAgIC8qIEltcG9ydCB0aGUgX3NvY2tldCBtb2R1bGUgdG8gY2FsbCBXU0FTdGFydHVwKCkgKi8KKyAgICAgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiX3NvY2tldCIpOworICAgICAgICBpZiAobW9kID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKG1vZCk7CisKKyAgICAgICAgLyogdGVzdCB0aGUgc29ja2V0ICovCisgICAgICAgIGlmIChnZXRzb2Nrb3B0KHNvY2tmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopJnJlcywgJnJlc19zaXplKSAhPSAwKSB7CisgICAgICAgICAgICBpbnQgZmQsIGVycjsKKworICAgICAgICAgICAgZXJyID0gV1NBR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IFdTQUVOT1RTT0NLKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgZXJyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmQgPSAoaW50KXNvY2tmZDsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdGF0dXMpICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgICAgIC8qIG9uIFdpbmRvd3MsIGEgZmlsZSBjYW5ub3QgYmUgc2V0IHRvIG5vbi1ibG9ja2luZyBtb2RlICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpc19zb2NrZXQgPSAxOworCisgICAgICAgICAgICAvKiBXaW5kb3dzIGRvZXMgbm90IHByb3ZpZGUgYSBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgc29ja2V0CisgICAgICAgICAgICAgICBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSAqLworICAgICAgICB9CiAgICAgfQorCisgICAgb2xkX3NvY2tmZCA9IHdha2V1cC5mZDsKKyAgICB3YWtldXAuZmQgPSBzb2NrZmQ7CisgICAgd2FrZXVwLnVzZV9zZW5kID0gaXNfc29ja2V0OworCisgICAgaWYgKG9sZF9zb2NrZmQgIT0gSU5WQUxJRF9GRCkKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU29ja2V0X3Qob2xkX3NvY2tmZCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKC0xKTsKKyNlbHNlCisgICAgaWYgKGZkICE9IC0xKSB7CisgICAgICAgIGludCBibG9ja2luZzsKKworICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgYmxvY2tpbmcgPSBfUHlfZ2V0X2Jsb2NraW5nKGZkKTsKKyAgICAgICAgaWYgKGJsb2NraW5nIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoYmxvY2tpbmcpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmQgJWkgbXVzdCBiZSBpbiBub24tYmxvY2tpbmcgbW9kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZmQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICAgICBvbGRfZmQgPSB3YWtldXBfZmQ7CiAgICAgd2FrZXVwX2ZkID0gZmQ7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9sZF9mZCk7CisjZW5kaWYKIH0KIAogUHlEb2NfU1RSVkFSKHNldF93YWtldXBfZmRfZG9jLAogInNldF93YWtldXBfZmQoZmQpIC0+IGZkXG5cCiBcblwKLVNldHMgdGhlIGZkIHRvIGJlIHdyaXR0ZW4gdG8gKHdpdGggJ1xcMCcpIHdoZW4gYSBzaWduYWxcblwKK1NldHMgdGhlIGZkIHRvIGJlIHdyaXR0ZW4gdG8gKHdpdGggdGhlIHNpZ25hbCBudW1iZXIpIHdoZW4gYSBzaWduYWxcblwKIGNvbWVzIGluLiAgQSBsaWJyYXJ5IGNhbiB1c2UgdGhpcyB0byB3YWtldXAgc2VsZWN0IG9yIHBvbGwuXG5cCi1UaGUgcHJldmlvdXMgZmQgaXMgcmV0dXJuZWQuXG5cCitUaGUgcHJldmlvdXMgZmQgb3IgLTEgaXMgcmV0dXJuZWQuXG5cCiBcblwKIFRoZSBmZCBtdXN0IGJlIG5vbi1ibG9ja2luZy4iKTsKIApAQCAtNDU5LDcxICs2NDgsODUgQEAKIGludAogUHlTaWduYWxfU2V0V2FrZXVwRmQoaW50IGZkKQogewotICAgIGludCBvbGRfZmQgPSB3YWtldXBfZmQ7CisgICAgaW50IG9sZF9mZDsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICBmZCA9IC0xOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIG9sZF9mZCA9IFB5X1NBRkVfRE9XTkNBU1Qod2FrZXVwLmZkLCBTT0NLRVRfVCwgaW50KTsKKyAgICB3YWtldXAuZmQgPSBmZDsKKyNlbHNlCisgICAgb2xkX2ZkID0gd2FrZXVwX2ZkOwogICAgIHdha2V1cF9mZCA9IGZkOworI2VuZGlmCiAgICAgcmV0dXJuIG9sZF9mZDsKIH0KIAogCiAjaWZkZWYgSEFWRV9TRVRJVElNRVIKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNldGl0aW1lcgorCisgICAgd2hpY2g6ICAgIGludAorICAgIHNlY29uZHM6ICBkb3VibGUKKyAgICBpbnRlcnZhbDogZG91YmxlID0gMC4wCisgICAgLworCitTZXRzIGdpdmVuIGl0aW1lciAob25lIG9mIElUSU1FUl9SRUFMLCBJVElNRVJfVklSVFVBTCBvciBJVElNRVJfUFJPRikuCisKK1RoZSB0aW1lciB3aWxsIGZpcmUgYWZ0ZXIgdmFsdWUgc2Vjb25kcyBhbmQgYWZ0ZXIgdGhhdCBldmVyeSBpbnRlcnZhbCBzZWNvbmRzLgorVGhlIGl0aW1lciBjYW4gYmUgY2xlYXJlZCBieSBzZXR0aW5nIHNlY29uZHMgdG8gemVyby4KKworUmV0dXJucyBvbGQgdmFsdWVzIGFzIGEgdHVwbGU6IChkZWxheSwgaW50ZXJ2YWwpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NldGl0aW1lcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2V0aXRpbWVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBkb3VibGUgc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWE5MjI3YTI3YmQwNTk4OCBpbnB1dD0wZDI3ZDQxN2NmY2JkNTFhXSovCiB7Ci0gICAgZG91YmxlIGZpcnN0OwotICAgIGRvdWJsZSBpbnRlcnZhbCA9IDA7Ci0gICAgaW50IHdoaWNoOwogICAgIHN0cnVjdCBpdGltZXJ2YWwgbmV3LCBvbGQ7CiAKLSAgICBpZighUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWR8ZDpzZXRpdGltZXIiLCAmd2hpY2gsICZmaXJzdCwgJmludGVydmFsKSkKLSAgICByZXR1cm4gTlVMTDsKLQotICAgIHRpbWV2YWxfZnJvbV9kb3VibGUoZmlyc3QsICZuZXcuaXRfdmFsdWUpOworICAgIHRpbWV2YWxfZnJvbV9kb3VibGUoc2Vjb25kcywgJm5ldy5pdF92YWx1ZSk7CiAgICAgdGltZXZhbF9mcm9tX2RvdWJsZShpbnRlcnZhbCwgJm5ldy5pdF9pbnRlcnZhbCk7CiAgICAgLyogTGV0IE9TIGNoZWNrICJ3aGljaCIgdmFsdWUgKi8KICAgICBpZiAoc2V0aXRpbWVyKHdoaWNoLCAmbmV3LCAmb2xkKSAhPSAwKSB7Ci0gICAgUHlFcnJfU2V0RnJvbUVycm5vKEl0aW1lckVycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKEl0aW1lckVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIGl0aW1lcl9yZXR2YWwoJm9sZCk7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRpdGltZXJfZG9jLAotInNldGl0aW1lcih3aGljaCwgc2Vjb25kc1ssIGludGVydmFsXSlcblwKLVxuXAotU2V0cyBnaXZlbiBpdGltZXIgKG9uZSBvZiBJVElNRVJfUkVBTCwgSVRJTUVSX1ZJUlRVQUxcblwKLW9yIElUSU1FUl9QUk9GKSB0byBmaXJlIGFmdGVyIHZhbHVlIHNlY29uZHMgYW5kIGFmdGVyXG5cCi10aGF0IGV2ZXJ5IGludGVydmFsIHNlY29uZHMuXG5cCi1UaGUgaXRpbWVyIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgc2Vjb25kcyB0byB6ZXJvLlxuXAotXG5cCi1SZXR1cm5zIG9sZCB2YWx1ZXMgYXMgYSB0dXBsZTogKGRlbGF5LCBpbnRlcnZhbCkuIik7CiAjZW5kaWYKIAogCiAjaWZkZWYgSEFWRV9HRVRJVElNRVIKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLmdldGl0aW1lcgorCisgICAgd2hpY2g6ICAgIGludAorICAgIC8KKworUmV0dXJucyBjdXJyZW50IHZhbHVlIG9mIGdpdmVuIGl0aW1lci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9nZXRpdGltZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX2dldGl0aW1lcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMTM0OWFiMThhYWRjNTY5IGlucHV0PWY3ZDIxZDM4ZjM0OTA2MjddKi8KIHsKLSAgICBpbnQgd2hpY2g7CiAgICAgc3RydWN0IGl0aW1lcnZhbCBvbGQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkKLSAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChnZXRpdGltZXIod2hpY2gsICZvbGQpICE9IDApIHsKLSAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOwotICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gaXRpbWVyX3JldHZhbCgmb2xkKTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldGl0aW1lcl9kb2MsCi0iZ2V0aXRpbWVyKHdoaWNoKVxuXAotXG5cCi1SZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLiIpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSB8fCBkZWZpbmVkKEhBVkVfU0lHV0FJVCkgfHwgXApAQCAtNjE0LDIxICs4MTcsMjggQEAKICNlbmRpZgogCiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnB0aHJlYWRfc2lnbWFzaworCisgICAgaG93OiAgaW50CisgICAgbWFzazogb2JqZWN0CisgICAgLworCitGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfcHRocmVhZF9zaWdtYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9wdGhyZWFkX3NpZ21hc2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaG93LCBQeU9iamVjdCAqbWFzaykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMDQzYTlmMGVlYjFlMDc1IGlucHV0PWYzYjdkN2E2MWI3YjgyODNdKi8KIHsKLSAgICBpbnQgaG93OwotICAgIFB5T2JqZWN0ICpzaWduYWxzOwotICAgIHNpZ3NldF90IG1hc2ssIHByZXZpb3VzOworICAgIHNpZ3NldF90IG5ld21hc2ssIHByZXZpb3VzOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnB0aHJlYWRfc2lnbWFzayIsICZob3csICZzaWduYWxzKSkKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KG1hc2ssICZuZXdtYXNrKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZtYXNrKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbWFzaywgJnByZXZpb3VzKTsKKyAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbmV3bWFzaywgJnByZXZpb3VzKTsKICAgICBpZiAoZXJyICE9IDApIHsKICAgICAgICAgZXJybm8gPSBlcnI7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTY0MiwxNiArODUyLDIzIEBACiAgICAgcmV0dXJuIHNpZ3NldF90b19zZXQocHJldmlvdXMpOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2MsCi0icHRocmVhZF9zaWdtYXNrKGhvdywgbWFzaykgLT4gb2xkIG1hc2tcblwKLVxuXAotRmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLiIpOwogI2VuZGlmICAgLyogI2lmZGVmIFBZUFRIUkVBRF9TSUdNQVNLICovCiAKIAogI2lmZGVmIEhBVkVfU0lHUEVORElORworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lncGVuZGluZworCitFeGFtaW5lIHBlbmRpbmcgc2lnbmFscy4KKworUmV0dXJucyBhIHNldCBvZiBzaWduYWwgbnVtYmVycyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0bwordGhlIGNhbGxpbmcgdGhyZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ3BlbmRpbmcoUHlPYmplY3QgKnNlbGYpCitzaWduYWxfc2lncGVuZGluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY0Y2VkODAzZTdlNTFkZCBpbnB1dD1lMDAzNmMwMTZmODc0ZTI5XSovCiB7CiAgICAgaW50IGVycjsKICAgICBzaWdzZXRfdCBtYXNrOwpAQCAtNjYxLDI1ICs4NzgsMzIgQEAKICAgICByZXR1cm4gc2lnc2V0X3RvX3NldChtYXNrKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWdwZW5kaW5nX2RvYywKLSJzaWdwZW5kaW5nKCkgLT4gbGlzdFxuXAotXG5cCi1FeGFtaW5lIHBlbmRpbmcgc2lnbmFscy4iKTsKICNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KIAogCiAjaWZkZWYgSEFWRV9TSUdXQUlUCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWd3YWl0CisKKyAgICBzaWdzZXQ6IG9iamVjdAorICAgIC8KKworV2FpdCBmb3IgYSBzaWduYWwuCisKK1N1c3BlbmQgZXhlY3V0aW9uIG9mIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgZGVsaXZlcnkgb2Ygb25lIG9mIHRoZQorc2lnbmFscyBzcGVjaWZpZWQgaW4gdGhlIHNpZ25hbCBzZXQgc2lnc2V0LiAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgdGhlIHNpZ25hbAorYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lnd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lnd2FpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2lnc2V0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZTUzMDQ4YjAzMzZhNWMgaW5wdXQ9MTFhZjJkODJkODNjMmU5NF0qLwogewotICAgIFB5T2JqZWN0ICpzaWduYWxzOwogICAgIHNpZ3NldF90IHNldDsKICAgICBpbnQgZXJyLCBzaWdudW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdCIsICZzaWduYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnc2V0LCAmc2V0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC02OTMsMTEgKzkxNyw4IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzaWdudW0pOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRfZG9jLAotInNpZ3dhaXQoc2lnc2V0KSAtPiBzaWdudW1cblwKLVxuXAotV2FpdCBhIHNpZ25hbC4iKTsKLSNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1dBSVQgKi8KKwogCiAjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQogc3RhdGljIGludCBpbml0aWFsaXplZDsKQEAgLTc1MiwxMDAgKzk3MywxMzYgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lnd2FpdGluZm8KKworICAgIHNpZ3NldDogb2JqZWN0CisgICAgLworCitXYWl0IHN5bmNocm9ub3VzbHkgdW50aWwgb25lIG9mIHRoZSBzaWduYWxzIGluICpzaWdzZXQqIGlzIGRlbGl2ZXJlZC4KKworUmV0dXJucyBhIHN0cnVjdF9zaWdpbmZvIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9zaWd3YWl0aW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lnd2FpdGluZm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNpZ3NldCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmI1M2IwN2U1ZTkyNmI1IGlucHV0PWYzNzc5YTc0YTk5MWUxNzFdKi8KIHsKLSAgICBQeU9iamVjdCAqc2lnbmFsczsKICAgICBzaWdzZXRfdCBzZXQ7CiAgICAgc2lnaW5mb190IHNpOwogICAgIGludCBlcnI7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdGluZm8iLCAmc2lnbmFscykpCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWdzZXQsICZzZXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGVyciA9IHNpZ3dhaXRpbmZvKCZzZXQsICZzaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJyID0gc2lnd2FpdGluZm8oJnNldCwgJnNpKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChlcnIgPT0gLTEKKyAgICAgICAgICAgICAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgaWYgKGVyciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKSA6IE5VTEw7CiAKICAgICByZXR1cm4gZmlsbF9zaWdpbmZvKCZzaSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdGluZm9fZG9jLAotInNpZ3dhaXRpbmZvKHNpZ3NldCkgLT4gc3RydWN0X3NpZ2luZm9cblwKLVxuXAotV2FpdCBzeW5jaHJvbm91c2x5IGZvciBhIHNpZ25hbCB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXNcblwKLWRlbGl2ZXJlZC5cblwKLVJldHVybnMgYSBzdHJ1Y3Rfc2lnaW5mbyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYWwuIik7CiAjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTyAqLwogCiAjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNpZ3RpbWVkd2FpdAorCisgICAgc2lnc2V0OiAgb2JqZWN0CisgICAgdGltZW91dCBhcyB0aW1lb3V0X29iajogb2JqZWN0CisgICAgLworCitMaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dC4KKworVGhlIHRpbWVvdXQgaXMgc3BlY2lmaWVkIGluIHNlY29uZHMsIHdpdGggZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhbGxvd2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ3RpbWVkd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lndGltZWR3YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNpZ3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGltZW91dF9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzE5NjBiNWNlYTEzOTkyOSBpbnB1dD01M2ZkNGVhM2UzNzI0ZWI4XSovCiB7Ci0gICAgUHlPYmplY3QgKnNpZ25hbHMsICp0aW1lb3V0OwotICAgIHN0cnVjdCB0aW1lc3BlYyBidWY7CisgICAgc3RydWN0IHRpbWVzcGVjIHRzOwogICAgIHNpZ3NldF90IHNldDsKICAgICBzaWdpbmZvX3Qgc2k7Ci0gICAgdGltZV90IHR2X3NlYzsKLSAgICBsb25nIHR2X25zZWM7Ci0gICAgaW50IGVycjsKKyAgICBpbnQgcmVzOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSwgbW9ub3RvbmljOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpzaWd0aW1lZHdhaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc2lnbmFscywgJnRpbWVvdXQpKQorICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKHRpbWVvdXQsICZ0dl9zZWMsICZ0dl9uc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmLnR2X3NlYyA9IHR2X3NlYzsKLSAgICBidWYudHZfbnNlYyA9IHR2X25zZWM7Ci0KLSAgICBpZiAoYnVmLnR2X3NlYyA8IDAgfHwgYnVmLnR2X25zZWMgPCAwKSB7CisgICAgaWYgKHRpbWVvdXQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnc2V0LCAmc2V0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJyID0gc2lndGltZWR3YWl0KCZzZXQsICZzaSwgJmJ1Zik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZXJyID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCi0gICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICB9CisgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHRpbWVvdXQsICZ0cykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSBzaWd0aW1lZHdhaXQoJnNldCwgJnNpLCAmdHMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChyZXMgIT0gLTEpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHNpZ3RpbWVkd2FpdCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoRUlOVFIpICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIG1vbm90b25pYyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gbW9ub3RvbmljOworICAgICAgICBpZiAodGltZW91dCA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICgxKTsKIAogICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jLAotInNpZ3RpbWVkd2FpdChzaWdzZXQsICh0aW1lb3V0X3NlYywgdGltZW91dF9uc2VjKSkgLT4gc3RydWN0X3NpZ2luZm9cblwKLVxuXAotTGlrZSBzaWd3YWl0aW5mbygpLCBidXQgd2l0aCBhIHRpbWVvdXQgc3BlY2lmaWVkIGFzIGEgdHVwbGUgb2YgKHNlY29uZHMsXG5cCi1uYW5vc2Vjb25kcykuIik7CiAjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQgKi8KIAogCiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnB0aHJlYWRfa2lsbAorCisgICAgdGhyZWFkX2lkOiAgbG9uZworICAgIHNpZ25hbG51bTogIGludAorICAgIC8KKworU2VuZCBhIHNpZ25hbCB0byBhIHRocmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9wdGhyZWFkX2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGxvbmcgdGhyZWFkX2lkLCBpbnQgc2lnbmFsbnVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1YWVkMjcxM2M3NTZkN2EgaW5wdXQ9NzdlZDZhM2I2ZjJhODEyMl0qLwogewotICAgIGxvbmcgdGlkOwotICAgIGludCBzaWdudW07CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwgJnRpZCwgJnNpZ251bSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZXJyID0gcHRocmVhZF9raWxsKChwdGhyZWFkX3QpdGlkLCBzaWdudW0pOworICAgIGVyciA9IHB0aHJlYWRfa2lsbCgocHRocmVhZF90KXRocmVhZF9pZCwgc2lnbmFsbnVtKTsKICAgICBpZiAoZXJyICE9IDApIHsKICAgICAgICAgZXJybm8gPSBlcnI7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTg1OSw2MiArMTExNiwyOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2MsCi0icHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKVxuXAotXG5cCi1TZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLiIpOwogI2VuZGlmICAgLyogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpICovCiAKIAogCi0vKiBMaXN0IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8KKy8qIExpc3Qgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSAtLSBzb21lIG9mIHRoZSBtZXRob2RkZWZzIGFyZQorICAgZGVmaW5lZCB0byBub3RoaW5nIGlmIHRoZSBjb3JyZXNwb25kaW5nIEMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4gKi8KIHN0YXRpYyBQeU1ldGhvZERlZiBzaWduYWxfbWV0aG9kc1tdID0gewotI2lmZGVmIEhBVkVfQUxBUk0KLSAgICB7ImFsYXJtIiwgICAgICAgICAgICAgICAgICAgc2lnbmFsX2FsYXJtLCBNRVRIX1ZBUkFSR1MsIGFsYXJtX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NFVElUSU1FUgotICAgIHsic2V0aXRpbWVyIiwgICAgICAgc2lnbmFsX3NldGl0aW1lciwgTUVUSF9WQVJBUkdTLCBzZXRpdGltZXJfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfR0VUSVRJTUVSCi0gICAgeyJnZXRpdGltZXIiLCAgICAgICBzaWduYWxfZ2V0aXRpbWVyLCBNRVRIX1ZBUkFSR1MsIGdldGl0aW1lcl9kb2N9LAotI2VuZGlmCi0gICAgeyJzaWduYWwiLCAgICAgICAgICAgICAgICAgIHNpZ25hbF9zaWduYWwsIE1FVEhfVkFSQVJHUywgc2lnbmFsX2RvY30sCi0gICAgeyJnZXRzaWduYWwiLCAgICAgICAgICAgICAgIHNpZ25hbF9nZXRzaWduYWwsIE1FVEhfVkFSQVJHUywgZ2V0c2lnbmFsX2RvY30sCisgICAgeyJkZWZhdWx0X2ludF9oYW5kbGVyIiwgc2lnbmFsX2RlZmF1bHRfaW50X2hhbmRsZXIsIE1FVEhfVkFSQVJHUywgZGVmYXVsdF9pbnRfaGFuZGxlcl9kb2N9LAorICAgIFNJR05BTF9BTEFSTV9NRVRIT0RERUYKKyAgICBTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRgorICAgIFNJR05BTF9HRVRJVElNRVJfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR05BTF9NRVRIT0RERUYKKyAgICBTSUdOQUxfR0VUU0lHTkFMX01FVEhPRERFRgogICAgIHsic2V0X3dha2V1cF9mZCIsICAgICAgICAgICBzaWduYWxfc2V0X3dha2V1cF9mZCwgTUVUSF9WQVJBUkdTLCBzZXRfd2FrZXVwX2ZkX2RvY30sCi0jaWZkZWYgSEFWRV9TSUdJTlRFUlJVUFQKLSAgICB7InNpZ2ludGVycnVwdCIsICAgICAgICAgICAgc2lnbmFsX3NpZ2ludGVycnVwdCwgTUVUSF9WQVJBUkdTLCBzaWdpbnRlcnJ1cHRfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUEFVU0UKLSAgICB7InBhdXNlIiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wYXVzZSwKLSAgICAgTUVUSF9OT0FSR1MsIHBhdXNlX2RvY30sCi0jZW5kaWYKLSAgICB7ImRlZmF1bHRfaW50X2hhbmRsZXIiLCBzaWduYWxfZGVmYXVsdF9pbnRfaGFuZGxlciwKLSAgICAgTUVUSF9WQVJBUkdTLCBkZWZhdWx0X2ludF9oYW5kbGVyX2RvY30sCi0jaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKLSAgICB7InB0aHJlYWRfa2lsbCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX2tpbGwsCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2N9LAotI2VuZGlmCi0jaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKLSAgICB7InB0aHJlYWRfc2lnbWFzayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX3NpZ21hc2ssCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2N9LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TSUdQRU5ESU5HCi0gICAgeyJzaWdwZW5kaW5nIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lncGVuZGluZywKLSAgICAgTUVUSF9OT0FSR1MsIHNpZ25hbF9zaWdwZW5kaW5nX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1dBSVQKLSAgICB7InNpZ3dhaXQiLCAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0LAotICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd3YWl0X2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCi0gICAgeyJzaWd3YWl0aW5mbyIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdGluZm8sCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRpbmZvX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAotICAgIHsic2lndGltZWR3YWl0IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3RpbWVkd2FpdCwKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lndGltZWR3YWl0X2RvY30sCi0jZW5kaWYKLSAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYKKyAgICBTSUdOQUxfUEFVU0VfTUVUSE9EREVGCisgICAgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKKyAgICBTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdQRU5ESU5HX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdXQUlUX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdXQUlUSU5GT19NRVRIT0RERUYKKyAgICBTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIApAQCAtOTU2LDcgKzExODAsNyBAQAogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHNpZ25hbG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInNpZ25hbCIsCisgICAgIl9zaWduYWwiLAogICAgIG1vZHVsZV9kb2MsCiAgICAgLTEsCiAgICAgc2lnbmFsX21ldGhvZHMsCkBAIC05NjcsNyArMTE5MSw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X3NpZ25hbCh2b2lkKQorUHlJbml0X19zaWduYWwodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSwgKmQsICp4OwogICAgIGludCBpOwpAQCAtMTM4MCw3ICsxNjA0LDcgQEAKIHZvaWQKIFB5T1NfSW5pdEludGVycnVwdHModm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2lnbmFsIik7CisgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIl9zaWduYWwiKTsKICAgICBpZiAobSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKaW5kZXggMjMwMTllZS4uZDljNzBmOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCkBAIC0xMjEsNyArMTIxLDcgQEAKIGdldHNvY2tuYW1lKCkgLS0gcmV0dXJuIGxvY2FsIGFkZHJlc3NcblwKIGdldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWVbLCBidWZsZW5dKSAtLSBnZXQgc29ja2V0IG9wdGlvbnNcblwKIGdldHRpbWVvdXQoKSAtLSByZXR1cm4gdGltZW91dCBvciBOb25lXG5cCi1saXN0ZW4obikgLS0gc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBjb25uZWN0aW9uc1xuXAorbGlzdGVuKFtuXSkgLS0gc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBjb25uZWN0aW9uc1xuXAogcmVjdihidWZsZW5bLCBmbGFnc10pIC0tIHJlY2VpdmUgZGF0YVxuXAogcmVjdl9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pIC0tIHJlY2VpdmUgZGF0YSAoaW50byBhIGJ1ZmZlcilcblwKIHJlY3Zmcm9tKGJ1ZmxlblssIGZsYWdzXSkgLS0gcmVjZWl2ZSBkYXRhIGFuZCBzZW5kZXJcJ3MgYWRkcmVzc1xuXApAQCAtMjg0LDE0ICsyODQsMTUgQEAKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjIGVuZGlmCiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxODAwCisvKiBQcm92aWRlcyB0aGUgSXNXaW5kb3dzN1NQMU9yR3JlYXRlcigpIGZ1bmN0aW9uICovCisjaW5jbHVkZSA8VmVyc2lvbkhlbHBlcnMuaD4KKyNlbmRpZgorCiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jaWZuZGVmIG9mZnNldG9mCi0jIGRlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICgoc2l6ZV90KSgmKCh0eXBlICopMCktPm1lbWJlcikpCi0jZW5kaWYKLQogI2lmbmRlZiBPX05PTkJMT0NLCiAjIGRlZmluZSBPX05PTkJMT0NLIE9fTkRFTEFZCiAjZW5kaWYKQEAgLTQ1OSw3ICs0NjAsNyBAQAogI2Vsc2UKIC8qIElmIHRoZXJlJ3Mgbm8gdGltZW91dCBsZWZ0LCB3ZSBkb24ndCBoYXZlIHRvIGNhbGwgc2VsZWN0LCBzbyBpdCdzIGEgc2FmZSwKICAqIGxpdHRsZSB3aGl0ZSBsaWUuICovCi0jZGVmaW5lIElTX1NFTEVDVEFCTEUocykgKF9QeUlzU2VsZWN0YWJsZV9mZCgocyktPnNvY2tfZmQpIHx8IChzKS0+c29ja190aW1lb3V0IDw9IDAuMCkKKyNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAoX1B5SXNTZWxlY3RhYmxlX2ZkKChzKS0+c29ja19mZCkgfHwgKHMpLT5zb2NrX3RpbWVvdXQgPD0gMCkKICNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC00ODEsNiArNDgyLDE5IEBACiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGRlZmluZSBHRVRfU09DS19FUlJPUiBXU0FHZXRMYXN0RXJyb3IoKQorIyAgZGVmaW5lIFNFVF9TT0NLX0VSUk9SKGVycikgV1NBU2V0TGFzdEVycm9yKGVycikKKyMgIGRlZmluZSBTT0NLX1RJTUVPVVRfRVJSIFdTQUVXT1VMREJMT0NLCisjICBkZWZpbmUgU09DS19JTlBST0dSRVNTX0VSUiBXU0FFV09VTERCTE9DSworI2Vsc2UKKyMgIGRlZmluZSBHRVRfU09DS19FUlJPUiBlcnJubworIyAgZGVmaW5lIFNFVF9TT0NLX0VSUk9SKGVycikgZG8geyBlcnJubyA9IGVycjsgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBTT0NLX1RJTUVPVVRfRVJSIEVXT1VMREJMT0NLCisjICBkZWZpbmUgU09DS19JTlBST0dSRVNTX0VSUiBFSU5QUk9HUkVTUworI2VuZGlmCisKKworI2lmZGVmIE1TX1dJTkRPV1MKIC8qIERvZXMgV1NBU29ja2V0KCkgc3VwcG9ydCB0aGUgV1NBX0ZMQUdfTk9fSEFORExFX0lOSEVSSVQgZmxhZz8gKi8KIHN0YXRpYyBpbnQgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IC0xOwogI2VuZGlmCkBAIC01NTIsNiArNTY2LDkgQEAKIHN0YXRpYyBpbnQKIGludGVybmFsX3NldGJsb2NraW5nKFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IGJsb2NrKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB1X2xvbmcgYXJnOworI2VuZGlmCiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykgXAogICAgICYmICEoKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkpCiAgICAgaW50IGRlbGF5X2ZsYWcsIG5ld19kZWxheV9mbGFnOwpAQCAtNTc4LDggKzU5NSw4IEBACiAgICAgICAgIGZjbnRsKHMtPnNvY2tfZmQsIEZfU0VURkwsIG5ld19kZWxheV9mbGFnKTsKICNlbmRpZgogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIGJsb2NrID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICh1X2xvbmcqKSZibG9jayk7CisgICAgYXJnID0gIWJsb2NrOworICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01ODcsNjAgKzYwNCw3OSBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBEbyBhIHNlbGVjdCgpL3BvbGwoKSBvbiB0aGUgc29ja2V0LCBpZiBuZWNlc3NhcnkgKHNvY2tfdGltZW91dCA+IDApLgotICAgVGhlIGFyZ3VtZW50IHdyaXRpbmcgaW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24uCi0gICBUaGlzIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbjsgd2UnbGwgbGV0IG91ciBjYWxsZXIgZG8gdGhhdAotICAgYWZ0ZXIgdGhleSd2ZSByZWFjcXVpcmVkIHRoZSBpbnRlcnByZXRlciBsb2NrLgotICAgUmV0dXJucyAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yLCAwIG90aGVyd2lzZS4gKi8KIHN0YXRpYyBpbnQKLWludGVybmFsX3NlbGVjdF9leChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBkb3VibGUgaW50ZXJ2YWwpCitpbnRlcm5hbF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IGludGVydmFsLAorICAgICAgICAgICAgICAgIGludCBjb25uZWN0KQogewogICAgIGludCBuOworI2lmZGVmIEhBVkVfUE9MTAorICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOworICAgIF9QeVRpbWVfdCBtczsKKyNlbHNlCisgICAgZmRfc2V0IGZkcywgZWZkczsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKKyNlbmRpZgogCi0gICAgLyogTm90aGluZyB0byBkbyB1bmxlc3Mgd2UncmUgaW4gdGltZW91dCBtb2RlIChub3Qgbm9uLWJsb2NraW5nKSAqLwotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPD0gMC4wKQotICAgICAgICByZXR1cm4gMDsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkICovCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKworICAgIC8qIEVycm9yIGNvbmRpdGlvbiBpcyBmb3Igb3V0cHV0IG9ubHkgKi8KKyAgICBhc3NlcnQoIShjb25uZWN0ICYmICF3cml0aW5nKSk7CiAKICAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KICAgICBpZiAocy0+c29ja19mZCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLyogSGFuZGxpbmcgdGhpcyBjb25kaXRpb24gaGVyZSBzaW1wbGlmaWVzIHRoZSBzZWxlY3QgbG9vcHMgKi8KLSAgICBpZiAoaW50ZXJ2YWwgPCAwLjApCi0gICAgICAgIHJldHVybiAxOwotCiAgICAgLyogUHJlZmVyIHBvbGwsIGlmIGF2YWlsYWJsZSwgc2luY2UgeW91IGNhbiBwb2xsKCkgYW55IGZkCiAgICAgICogd2hpY2ggY2FuJ3QgYmUgZG9uZSB3aXRoIHNlbGVjdCgpLiAqLwogI2lmZGVmIEhBVkVfUE9MTAotICAgIHsKLSAgICAgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7Ci0gICAgICAgIGludCB0aW1lb3V0OwotCi0gICAgICAgIHBvbGxmZC5mZCA9IHMtPnNvY2tfZmQ7Ci0gICAgICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKLQotICAgICAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCkoaW50ZXJ2YWwgKiAxMDAwICsgMC41KTsKLSAgICAgICAgbiA9IHBvbGwoJnBvbGxmZCwgMSwgdGltZW91dCk7CisgICAgcG9sbGZkLmZkID0gcy0+c29ja19mZDsKKyAgICBwb2xsZmQuZXZlbnRzID0gd3JpdGluZyA/IFBPTExPVVQgOiBQT0xMSU47CisgICAgaWYgKGNvbm5lY3QpIHsKKyAgICAgICAgLyogT24gV2luZG93cywgdGhlIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcywKKyAgICAgICAgICAgYnV0IGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIG5vdGlmaWVkIGFzIGFuIGVycm9yLiBPbiBQT1NJWCwgdGhlCisgICAgICAgICAgIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcyBvciBvbiBjb25uZWN0aW9uCisgICAgICAgICAgIGZhaWx1cmUuICovCisgICAgICAgIHBvbGxmZC5ldmVudHMgfD0gUE9MTEVSUjsKICAgICB9CisKKyAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLworICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyhpbnRlcnZhbCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICBhc3NlcnQobXMgPD0gSU5UX01BWCk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIG4gPSBwb2xsKCZwb2xsZmQsIDEsIChpbnQpbXMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOwogI2Vsc2UKLSAgICB7Ci0gICAgICAgIC8qIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIHRvIHNlbGVjdCAqLwotICAgICAgICBmZF9zZXQgZmRzOwotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgdHYudHZfc2VjID0gKGludClpbnRlcnZhbDsKLSAgICAgICAgdHYudHZfdXNlYyA9IChpbnQpKChpbnRlcnZhbCAtIHR2LnR2X3NlYykgKiAxZTYpOwotICAgICAgICBGRF9aRVJPKCZmZHMpOwotICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7Ci0KLSAgICAgICAgLyogU2VlIGlmIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KLSAgICAgICAgaWYgKHdyaXRpbmcpCi0gICAgICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgTlVMTCwgJnR2KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbiA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgICAgICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CisgICAgaWYgKGludGVydmFsID49IDApIHsKKyAgICAgICAgX1B5VGltZV9Bc1RpbWV2YWxfbm9yYWlzZShpbnRlcnZhbCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgdHZwID0gTlVMTDsKKworICAgIEZEX1pFUk8oJmZkcyk7CisgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHMpOworICAgIEZEX1pFUk8oJmVmZHMpOworICAgIGlmIChjb25uZWN0KSB7CisgICAgICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBzb2NrZXQgYmVjb21lcyB3cml0YWJsZSBvbiBjb25uZWN0aW9uIHN1Y2Nlc3MsCisgICAgICAgICAgIGJ1dCBhIGNvbm5lY3Rpb24gZmFpbHVyZSBpcyBub3RpZmllZCBhcyBhbiBlcnJvci4gT24gUE9TSVgsIHRoZQorICAgICAgICAgICBzb2NrZXQgYmVjb21lcyB3cml0YWJsZSBvbiBjb25uZWN0aW9uIHN1Y2Nlc3Mgb3Igb24gY29ubmVjdGlvbgorICAgICAgICAgICBmYWlsdXJlLiAqLworICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmVmZHMpOworICAgIH0KKworICAgIC8qIFNlZSBpZiB0aGUgc29ja2V0IGlzIHJlYWR5ICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAod3JpdGluZykKKyAgICAgICAgbiA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCisgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgJmVmZHMsIHR2cCk7CisgICAgZWxzZQorICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKKyAgICAgICAgICAgICAgICAgICAmZmRzLCBOVUxMLCAmZWZkcywgdHZwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKICNlbmRpZgogCiAgICAgaWYgKG4gPCAwKQpAQCAtNjUwLDU2ICs2ODYsMTY2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIENhbGwgYSBzb2NrZXQgZnVuY3Rpb24uCisKKyAgIE9uIGVycm9yLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiBlcnIgaXMgc2V0LCBvciBmaWxsIGVyciBhbmQKKyAgIHJldHVybiAtMSBvdGhlcndpc2UuIElmIGEgc2lnbmFsIHdhcyByZWNlaXZlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlZAorICAgYW4gZXhjZXB0aW9uLCByZXR1cm4gLTEsIGFuZCBzZXQgZXJyIHRvIC0xIGlmIGVyciBpcyBzZXQuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiAwLCBhbmQgc2V0IGVyciB0byAwIGlmIGVyciBpcyBzZXQuCisKKyAgIElmIHRoZSBzb2NrZXQgaGFzIGEgdGltZW91dCwgd2FpdCB1bnRpbCB0aGUgc29ja2V0IGlzIHJlYWR5IGJlZm9yZSBjYWxsaW5nCisgICB0aGUgZnVuY3Rpb246IHdhaXQgdW50aWwgdGhlIHNvY2tldCBpcyB3cml0YWJsZSBpZiB3cml0aW5nIGlzIG5vbnplcm8sIHdhaXQKKyAgIHVudGlsIHRoZSBzb2NrZXQgcmVjZWl2ZWQgZGF0YSBvdGhlcndpc2UuCisKKyAgIElmIHRoZSBzb2NrZXQgZnVuY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoIEVJTlRSKTogcmV0cnkKKyAgIHRoZSBmdW5jdGlvbiwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uIChQRVAgNDc1KS4KKworICAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgcmV0cmllZCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IHVzaW5nIGEgbW9ub3RvbmljIGNsb2NrLgorCisgICBzb2NrX2NhbGxfZXgoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBHSUwgaGVsZC4gVGhlIHNvY2tldCBmdW5jdGlvbiBpcworICAgY2FsbGVkIHdpdGggdGhlIEdJTCByZWxlYXNlZC4gKi8KIHN0YXRpYyBpbnQKLWludGVybmFsX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nKQorc29ja19jYWxsX2V4KFB5U29ja2V0U29ja09iamVjdCAqcywKKyAgICAgICAgICAgICBpbnQgd3JpdGluZywKKyAgICAgICAgICAgICBpbnQgKCpzb2NrX2Z1bmMpIChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpLAorICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgaW50IGNvbm5lY3QsCisgICAgICAgICAgICAgaW50ICplcnIsCisgICAgICAgICAgICAgX1B5VGltZV90IHRpbWVvdXQpCiB7Ci0gICAgcmV0dXJuIGludGVybmFsX3NlbGVjdF9leChzLCB3cml0aW5nLCBzLT5zb2NrX3RpbWVvdXQpOwotfQorICAgIGludCBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgX1B5VGltZV90IGRlYWRsaW5lID0gMDsKKyAgICBpbnQgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAwOworICAgIGludCByZXM7CiAKLS8qCi0gICBUd28gbWFjcm9zIGZvciBhdXRvbWF0aWMgcmV0cnkgb2Ygc2VsZWN0KCkgaW4gY2FzZSBvZiBmYWxzZSBwb3NpdGl2ZXMKLSAgIChmb3IgZXhhbXBsZSwgc2VsZWN0KCkgY291bGQgaW5kaWNhdGUgYSBzb2NrZXQgaXMgcmVhZHkgZm9yIHJlYWRpbmcKLSAgICBidXQgdGhlIGRhdGEgdGhlbiBkaXNjYXJkZWQgYnkgdGhlIE9TIGJlY2F1c2Ugb2YgYSB3cm9uZyBjaGVja3N1bSkuCi0gICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNlOgorICAgIC8qIHNvY2tfY2FsbCgpIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkLiAqLworICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOwogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KQotICAgICAgICBvdXRsZW4gPSByZWN2KHMtPnNvY2tfZmQsIGNidWYsIGxlbiwgZmxhZ3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAvKiBvdXRlciBsb29wIHRvIHJldHJ5IHNlbGVjdCgpIHdoZW4gc2VsZWN0KCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwKKyAgICAgICBvciB0byByZXRyeSBzZWxlY3QoKStzb2NrX2Z1bmMoKSBvbiBmYWxzZSBwb3NpdGl2ZSAoc2VlIGFib3ZlKSAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIEZvciBjb25uZWN0KCksIHBvbGwgZXZlbiBmb3IgYmxvY2tpbmcgc29ja2V0LiBUaGUgY29ubmVjdGlvbgorICAgICAgICAgICBydW5zIGFzeW5jaHJvbm91c2x5LiAqLworICAgICAgICBpZiAoaGFzX3RpbWVvdXQgfHwgY29ubmVjdCkgeworICAgICAgICAgICAgaWYgKGhhc190aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgX1B5VGltZV90IGludGVydmFsOworCisgICAgICAgICAgICAgICAgaWYgKGRlYWRsaW5lX2luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHJlY29tcHV0ZSB0aGUgdGltZW91dCAqLworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAxOworICAgICAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gdGltZW91dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gaW50ZXJuYWxfc2VsZWN0KHMsIHdyaXRpbmcsIGludGVydmFsLCBjb25uZWN0KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXMgPSBpbnRlcm5hbF9zZWxlY3Qocywgd3JpdGluZywgdGltZW91dCwgY29ubmVjdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gR0VUX1NPQ0tfRVJST1I7CisKKyAgICAgICAgICAgICAgICBpZiAoQ0hFQ0tfRVJSTk8oRUlOVFIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHNlbGVjdCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmVyciA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogcmV0cnkgc2VsZWN0KCkgKi8KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogc2VsZWN0KCkgZmFpbGVkICovCisgICAgICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gU09DS19USU1FT1VUX0VSUjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogdGhlIHNvY2tldCBpcyByZWFkeSAqLworICAgICAgICB9CisKKyAgICAgICAgLyogaW5uZXIgbG9vcCB0byByZXRyeSBzb2NrX2Z1bmMoKSB3aGVuIHNvY2tfZnVuYygpIGlzIGludGVycnVwdGVkCisgICAgICAgICAgIGJ5IGEgc2lnbmFsICovCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXMgPSBzb2NrX2Z1bmMocywgZGF0YSk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICAgICAgLyogc29ja19mdW5jKCkgc3VjY2VlZGVkICovCisgICAgICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAgICAgKmVyciA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgKmVyciA9IEdFVF9TT0NLX0VSUk9SOworCisgICAgICAgICAgICBpZiAoIUNIRUNLX0VSUk5PKEVJTlRSKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLyogc29ja19mdW5jKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiByZXRyeSBzb2NrX2Z1bmMoKSAqLworICAgICAgICB9CisKKyAgICAgICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDAKKyAgICAgICAgICAgICYmIChDSEVDS19FUlJOTyhFV09VTERCTE9DSykgfHwgQ0hFQ0tfRVJSTk8oRUFHQUlOKSkpIHsKKyAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlOiBzb2NrX2Z1bmMoKSBmYWlsZWQgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4uCisKKyAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZWxlY3QoKSBjb3VsZCBpbmRpY2F0ZSBhIHNvY2tldCBpcyByZWFkeSBmb3IKKyAgICAgICAgICAgICAgIHJlYWRpbmcsIGJ1dCB0aGUgZGF0YSB0aGVuIGRpc2NhcmRlZCBieSB0aGUgT1MgYmVjYXVzZSBvZiBhCisgICAgICAgICAgICAgICB3cm9uZyBjaGVja3N1bS4KKworICAgICAgICAgICAgICAgTG9vcCBvbiBzZWxlY3QoKSB0byByZWNoZWNrIGZvciBzb2NrZXQgcmVhZHluZXNzLiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKiBzb2NrX2Z1bmMoKSBmYWlsZWQgKi8KKyAgICAgICAgaWYgKCFlcnIpCisgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgLyogZWxzZTogZXJyIHdhcyBhbHJlYWR5IHNldCBiZWZvcmUgKi8KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLSovCit9CiAKLSNkZWZpbmUgQkVHSU5fU0VMRUNUX0xPT1AocykgXAotICAgIHsgXAotICAgICAgICBfUHlUaW1lX3RpbWV2YWwgbm93LCBkZWFkbGluZSA9IHswLCAwfTsgXAotICAgICAgICBkb3VibGUgaW50ZXJ2YWwgPSBzLT5zb2NrX3RpbWVvdXQ7IFwKLSAgICAgICAgaW50IGhhc190aW1lb3V0ID0gcy0+c29ja190aW1lb3V0ID4gMC4wOyBcCi0gICAgICAgIGlmIChoYXNfdGltZW91dCkgeyBcCi0gICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmbm93KTsgXAotICAgICAgICAgICAgZGVhZGxpbmUgPSBub3c7IFwKLSAgICAgICAgICAgIF9QeVRpbWVfQUREX1NFQ09ORFMoZGVhZGxpbmUsIHMtPnNvY2tfdGltZW91dCk7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHdoaWxlICgxKSB7IFwKLSAgICAgICAgICAgIGVycm5vID0gMDsgXAorc3RhdGljIGludAorc29ja19jYWxsKFB5U29ja2V0U29ja09iamVjdCAqcywKKyAgICAgICAgICBpbnQgd3JpdGluZywKKyAgICAgICAgICBpbnQgKCpmdW5jKSAoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKSwKKyAgICAgICAgICB2b2lkICpkYXRhKQoreworICAgIHJldHVybiBzb2NrX2NhbGxfZXgocywgd3JpdGluZywgZnVuYywgZGF0YSwgMCwgTlVMTCwgcy0+c29ja190aW1lb3V0KTsKK30KIAotI2RlZmluZSBFTkRfU0VMRUNUX0xPT1AocykgXAotICAgICAgICAgICAgaWYgKCFoYXNfdGltZW91dCB8fCBcCi0gICAgICAgICAgICAgICAgKCFDSEVDS19FUlJOTyhFV09VTERCTE9DSykgJiYgIUNIRUNLX0VSUk5PKEVBR0FJTikpKSBcCi0gICAgICAgICAgICAgICAgYnJlYWs7IFwKLSAgICAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZub3cpOyBcCi0gICAgICAgICAgICBpbnRlcnZhbCA9IF9QeVRpbWVfSU5URVJWQUwobm93LCBkZWFkbGluZSk7IFwKLSAgICAgICAgfSBcCi0gICAgfSBcCiAKIC8qIEluaXRpYWxpemUgYSBuZXcgc29ja2V0IG9iamVjdC4gKi8KIAotc3RhdGljIGRvdWJsZSBkZWZhdWx0dGltZW91dCA9IC0xLjA7IC8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KKy8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KK3N0YXRpYyBfUHlUaW1lX3QgZGVmYXVsdHRpbWVvdXQgPSBfUFlUSU1FX0ZST01TRUNPTkRTKC0xKTsKIAogc3RhdGljIHZvaWQKIGluaXRfc29ja29iamVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsCkBAIC03MTMsMTIgKzg1OSwxMiBAQAogICAgIHMtPmVycm9yaGFuZGxlciA9ICZzZXRfZXJyb3I7CiAjaWZkZWYgU09DS19OT05CTE9DSwogICAgIGlmICh0eXBlICYgU09DS19OT05CTE9DSykKLSAgICAgICAgcy0+c29ja190aW1lb3V0ID0gMC4wOworICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSAwOwogICAgIGVsc2UKICNlbmRpZgogICAgIHsKICAgICAgICAgcy0+c29ja190aW1lb3V0ID0gZGVmYXVsdHRpbWVvdXQ7Ci0gICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwLjApCisgICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwKQogICAgICAgICAgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgMCk7CiAgICAgfQogCkBAIC0xMjE0LDYgKzEzNjAsNzEgQEAKICAgICB9CiB9CiAKKy8qIEhlbHBlciBmb3IgZ2V0c29ja2FkZHJhcmc6IGJ5cGFzcyBJRE5BIGZvciBBU0NJSS1vbmx5IGhvc3QgbmFtZXMKKyAgIChpbiBwYXJ0aWN1bGFyLCBudW1lcmljIElQIGFkZHJlc3NlcykuICovCitzdHJ1Y3QgbWF5YmVfaWRuYSB7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjaGFyICpidWY7Cit9OworCitzdGF0aWMgdm9pZAoraWRuYV9jbGVhbnVwKHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQoreworICAgIFB5X0NMRUFSKGRhdGEtPm9iaik7Cit9CisKK3N0YXRpYyBpbnQKK2lkbmFfY29udmVydGVyKFB5T2JqZWN0ICpvYmosIHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQoreworICAgIHNpemVfdCBsZW47CisgICAgUHlPYmplY3QgKm9iajIsICpvYmozOworICAgIGlmIChvYmogPT0gTlVMTCkgeworICAgICAgICBpZG5hX2NsZWFudXAoZGF0YSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBkYXRhLT5vYmogPSBOVUxMOworICAgIGxlbiA9IC0xOworICAgIGlmIChQeUJ5dGVzX0NoZWNrKG9iaikpIHsKKyAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19Bc1N0cmluZyhvYmopOworICAgICAgICBsZW4gPSBQeUJ5dGVzX1NpemUob2JqKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sob2JqKSkgeworICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhvYmopOworICAgICAgICBsZW4gPSBQeUJ5dGVBcnJheV9TaXplKG9iaik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgeworICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7CisgICAgICAgIGlmICghb2JqMikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBvciB1bmljb2RlIHRleHQgYnVmZmVyIGV4cGVjdGVkLCBub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBvYmozID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmoyLCAiaWRuYSIsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYob2JqMik7CisgICAgICAgIGlmICghb2JqMykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG9iajMpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqMyk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS0+b2JqID0gb2JqMzsKKyAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMyk7CisgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMyk7CisgICAgfQorICAgIGlmIChzdHJsZW4oZGF0YS0+YnVmKSAhPSBsZW4pIHsKKyAgICAgICAgUHlfQ0xFQVIoZGF0YS0+b2JqKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImhvc3QgbmFtZSBtdXN0IG5vdCBjb250YWluIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CiAKIC8qIFBhcnNlIGEgc29ja2V0IGFkZHJlc3MgYXJndW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBzb2NrZXQgb2JqZWN0J3MKICAgIGFkZHJlc3MgZmFtaWx5LiAgUmV0dXJuIDEgaWYgdGhlIGFkZHJlc3Mgd2FzIGluIHRoZSBwcm9wZXIgZm9ybWF0LApAQCAtMTIzMCw4ICsxNDQxLDcgQEAKICAgICBjYXNlIEFGX1VOSVg6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4qIGFkZHI7Ci0gICAgICAgIGNoYXIgKnBhdGg7Ci0gICAgICAgIGludCBsZW47CisgICAgICAgIFB5X2J1ZmZlciBwYXRoOwogICAgICAgICBpbnQgcmV0dmFsID0gMDsKIAogICAgICAgICAvKiBQRVAgMzgzLiAgTm90IHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciBzaW5jZSB3ZSBuZWVkIHRvCkBAIC0xMjQyLDE0ICsxNDUyLDE3IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJ5IyIsICZwYXRoLCAmbGVuKSkKLSAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgInkqIiwgJnBhdGgpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICB9CisgICAgICAgIGFzc2VydChwYXRoLmxlbiA+PSAwKTsKIAogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biopYWRkcl9yZXQ7CiAjaWZkZWYgbGludXgKLSAgICAgICAgaWYgKGxlbiA+IDAgJiYgcGF0aFswXSA9PSAwKSB7CisgICAgICAgIGlmIChwYXRoLmxlbiA+IDAgJiYgKihjb25zdCBjaGFyICopcGF0aC5idWYgPT0gMCkgewogICAgICAgICAgICAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlIGV4dGVuc2lvbiAqLwotICAgICAgICAgICAgaWYgKGxlbiA+IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgeworICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CkBAIC0xMjU5LDE4ICsxNDcyLDE5IEBACiAjZW5kaWYgLyogbGludXggKi8KICAgICAgICAgewogICAgICAgICAgICAgLyogcmVndWxhciBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0gICAgICAgICAgICBpZiAobGVuID49IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgeworICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPj0gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYWRkci0+c3VuX3BhdGhbbGVuXSA9IDA7CisgICAgICAgICAgICBhZGRyLT5zdW5fcGF0aFtwYXRoLmxlbl0gPSAwOwogICAgICAgICB9CiAgICAgICAgIGFkZHItPnN1bl9mYW1pbHkgPSBzLT5zb2NrX2ZhbWlseTsKLSAgICAgICAgbWVtY3B5KGFkZHItPnN1bl9wYXRoLCBwYXRoLCBsZW4pOwotICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOworICAgICAgICBtZW1jcHkoYWRkci0+c3VuX3BhdGgsIHBhdGguYnVmLCBwYXRoLmxlbik7CisgICAgICAgICpsZW5fcmV0ID0gcGF0aC5sZW4gKyBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICAgICAgICAgcmV0dmFsID0gMTsKICAgICB1bml4X291dDoKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGF0aCk7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgcmV0dXJuIHJldHZhbDsKICAgICB9CkBAIC0xMzA4LDcgKzE1MjIsNyBAQAogICAgIGNhc2UgQUZfSU5FVDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiogYWRkcjsKLSAgICAgICAgY2hhciAqaG9zdDsKKyAgICAgICAgc3RydWN0IG1heWJlX2lkbmEgaG9zdCA9IHtOVUxMLCBOVUxMfTsKICAgICAgICAgaW50IHBvcnQsIHJlc3VsdDsKICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xMzE4LDEzICsxNTMyLDEzIEBACiAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmdzKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0aTpnZXRzb2NrYWRkcmFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWRuYSIsICZob3N0LCAmcG9ydCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmdldHNvY2thZGRyYXJnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkbmFfY29udmVydGVyLCAmaG9zdCwgJnBvcnQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGFkZHI9KHN0cnVjdCBzb2NrYWRkcl9pbiopYWRkcl9yZXQ7Ci0gICAgICAgIHJlc3VsdCA9IHNldGlwYWRkcihob3N0LCAoc3RydWN0IHNvY2thZGRyICopYWRkciwKKyAgICAgICAgcmVzdWx0ID0gc2V0aXBhZGRyKGhvc3QuYnVmLCAoc3RydWN0IHNvY2thZGRyICopYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqYWRkciksICBBRl9JTkVUKTsKLSAgICAgICAgUHlNZW1fRnJlZShob3N0KTsKKyAgICAgICAgaWRuYV9jbGVhbnVwKCZob3N0KTsKICAgICAgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweGZmZmYpIHsKQEAgLTEzNDMsNyArMTU1Nyw3IEBACiAgICAgY2FzZSBBRl9JTkVUNjoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYqIGFkZHI7Ci0gICAgICAgIGNoYXIgKmhvc3Q7CisgICAgICAgIHN0cnVjdCBtYXliZV9pZG5hIGhvc3QgPSB7TlVMTCwgTlVMTH07CiAgICAgICAgIGludCBwb3J0LCByZXN1bHQ7CiAgICAgICAgIHVuc2lnbmVkIGludCBmbG93aW5mbywgc2NvcGVfaWQ7CiAgICAgICAgIGZsb3dpbmZvID0gc2NvcGVfaWQgPSAwOwpAQCAtMTM1NSwxNSArMTU2OSwxNSBAQAogICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJncyktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldGl8SUkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkbmEiLCAmaG9zdCwgJnBvcnQsICZmbG93aW5mbywKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8SUkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRuYV9jb252ZXJ0ZXIsICZob3N0LCAmcG9ydCwgJmZsb3dpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjb3BlX2lkKSkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42KilhZGRyX3JldDsKLSAgICAgICAgcmVzdWx0ID0gc2V0aXBhZGRyKGhvc3QsIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAorICAgICAgICByZXN1bHQgPSBzZXRpcGFkZHIoaG9zdC5idWYsIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCphZGRyKSwgQUZfSU5FVDYpOwotICAgICAgICBQeU1lbV9GcmVlKGhvc3QpOworICAgICAgICBpZG5hX2NsZWFudXAoJmhvc3QpOwogICAgICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4ZmZmZikgewpAQCAtMTQ5Miw4ICsxNzA2LDcgQEAKICAgICAgICAgaW50IHByb3RvTnVtYmVyOwogICAgICAgICBpbnQgaGF0eXBlID0gMDsKICAgICAgICAgaW50IHBrdHR5cGUgPSAwOwotICAgICAgICBjaGFyICpoYWRkciA9IE5VTEw7Ci0gICAgICAgIHVuc2lnbmVkIGludCBoYWxlbiA9IDA7CisgICAgICAgIFB5X2J1ZmZlciBoYWRkciA9IHtOVUxMLCBOVUxMfTsKIAogICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTE1MDMsMjUgKzE3MTYsMjggQEAKICAgICAgICAgICAgICAgICBQeV9UWVBFKGFyZ3MpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2l8aWl5IyIsICZpbnRlcmZhY2VOYW1lLAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpfGlpeSoiLCAmaW50ZXJmYWNlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm90b051bWJlciwgJnBrdHR5cGUsICZoYXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFkZHIsICZoYWxlbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFkZHIpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHN0cm5jcHkoaWZyLmlmcl9uYW1lLCBpbnRlcmZhY2VOYW1lLCBzaXplb2YoaWZyLmlmcl9uYW1lKSk7CiAgICAgICAgIGlmci5pZnJfbmFtZVsoc2l6ZW9mKGlmci5pZnJfbmFtZSkpLTFdID0gJ1wwJzsKICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CiAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmhhZGRyKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChoYWxlbiA+IDgpIHsKLSAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkhhcmR3YXJlIGFkZHJlc3MgbXVzdCBiZSA4IGJ5dGVzIG9yIGxlc3MiKTsKLSAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGhhZGRyLmJ1ZiAmJiBoYWRkci5sZW4gPiA4KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGFyZHdhcmUgYWRkcmVzcyBtdXN0IGJlIDggYnl0ZXMgb3IgbGVzcyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaGFkZHIpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvTnVtYmVyIDwgMCB8fCBwcm90b051bWJlciA+IDB4ZmZmZikgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgICAgIFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgImdldHNvY2thZGRyYXJnOiBwcm90b051bWJlciBtdXN0IGJlIDAtNjU1MzUuIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZoYWRkcik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9sbCopYWRkcl9yZXQ7CkBAIC0xNTMwLDExICsxNzQ2LDE0IEBACiAgICAgICAgIGFkZHItPnNsbF9pZmluZGV4ID0gaWZyLmlmcl9pZmluZGV4OwogICAgICAgICBhZGRyLT5zbGxfcGt0dHlwZSA9IHBrdHR5cGU7CiAgICAgICAgIGFkZHItPnNsbF9oYXR5cGUgPSBoYXR5cGU7Ci0gICAgICAgIGlmIChoYWxlbiAhPSAwKSB7Ci0gICAgICAgICAgbWVtY3B5KCZhZGRyLT5zbGxfYWRkciwgaGFkZHIsIGhhbGVuKTsKKyAgICAgICAgaWYgKGhhZGRyLmJ1ZikgeworICAgICAgICAgICAgbWVtY3B5KCZhZGRyLT5zbGxfYWRkciwgaGFkZHIuYnVmLCBoYWRkci5sZW4pOworICAgICAgICAgICAgYWRkci0+c2xsX2hhbGVuID0gaGFkZHIubGVuOwogICAgICAgICB9Ci0gICAgICAgIGFkZHItPnNsbF9oYWxlbiA9IGhhbGVuOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRyLT5zbGxfaGFsZW4gPSAwOwogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAqYWRkcjsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaGFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAjZW5kaWYKQEAgLTE2MTEsNyArMTgzMCw3IEBACiAKICAgICAgICAgICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICAgICAgICAgIGlmci5pZnJfaWZpbmRleCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA8IHNpemVvZihpZnIuaWZyX25hbWUpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKChzaXplX3QpbGVuIDwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpIHsKICAgICAgICAgICAgICAgICBzdHJuY3B5KGlmci5pZnJfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoaW50ZXJmYWNlTmFtZSksIHNpemVvZihpZnIuaWZyX25hbWUpKTsKICAgICAgICAgICAgICAgICBpZnIuaWZyX25hbWVbKHNpemVvZihpZnIuaWZyX25hbWUpKS0xXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CkBAIC0xNjYxLDcgKzE4ODAsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShjdGxfbmFtZSkgPiBzaXplb2YoaW5mby5jdGxfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShjdGxfbmFtZSkgPiAoUHlfc3NpemVfdClzaXplb2YoaW5mby5jdGxfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdGxfbmFtZSk7CkBAIC0xODk2LDggKzIxMTUsMTUgQEAKICAgICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogICAgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3RhdXRvbG9naWNhbC1jb21wYXJlIgogICAgICNlbmRpZgorICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA1KSkpCisgICAgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisgICAgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3R5cGUtbGltaXRzIgorICAgICNlbmRpZgogICAgIGlmIChtc2ctPm1zZ19jb250cm9sbGVuIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDUpKSkKKyAgICAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICNlbmRpZgogICAgICNpZmRlZiBfX2NsYW5nX18KICAgICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgI2VuZGlmCkBAIC0xOTU1LDIyICsyMTgxLDU2IEBACiAjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KIAogCitzdHJ1Y3Qgc29ja19hY2NlcHQgeworICAgIHNvY2tsZW5fdCAqYWRkcmxlbjsKKyAgICBzb2NrX2FkZHJfdCAqYWRkcmJ1ZjsKKyAgICBTT0NLRVRfVCByZXN1bHQ7Cit9OworCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQorLyogYWNjZXB0NCgpIGlzIGF2YWlsYWJsZSBvbiBMaW51eCAyLjYuMjgrIGFuZCBnbGliYyAyLjEwICovCitzdGF0aWMgaW50IGFjY2VwdDRfd29ya3MgPSAtMTsKKyNlbmRpZgorCitzdGF0aWMgaW50Citzb2NrX2FjY2VwdF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19hY2NlcHQgKmN0eCA9IGRhdGE7CisKKyNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCisgICAgaWYgKGFjY2VwdDRfd29ya3MgIT0gMCkgeworICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7CisgICAgICAgIGlmIChjdHgtPnJlc3VsdCA9PSBJTlZBTElEX1NPQ0tFVCAmJiBhY2NlcHQ0X3dvcmtzID09IC0xKSB7CisgICAgICAgICAgICAvKiBPbiBMaW51eCBvbGRlciB0aGFuIDIuNi4yOCwgYWNjZXB0NCgpIGZhaWxzIHdpdGggRU5PU1lTICovCisgICAgICAgICAgICBhY2NlcHQ0X3dvcmtzID0gKGVycm5vICE9IEVOT1NZUyk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFjY2VwdDRfd29ya3MgPT0gMCkKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZWxzZQorICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCAhPSBJTlZBTElEX1NPQ0tFVCk7CisjZWxzZQorICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7CisjZW5kaWYKK30KKwogLyogcy5fYWNjZXB0KCkgLT4gKGZkLCBhZGRyZXNzKSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19hY2NlcHQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgU09DS0VUX1QgbmV3ZmQgPSBJTlZBTElEX1NPQ0tFVDsKKyAgICBTT0NLRVRfVCBuZXdmZDsKICAgICBzb2NrbGVuX3QgYWRkcmxlbjsKICAgICBQeU9iamVjdCAqc29jayA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFkZHIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIGludCB0aW1lb3V0OwotI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKLSAgICAvKiBhY2NlcHQ0KCkgaXMgYXZhaWxhYmxlIG9uIExpbnV4IDIuNi4yOCsgYW5kIGdsaWJjIDIuMTAgKi8KLSAgICBzdGF0aWMgaW50IGFjY2VwdDRfd29ya3MgPSAtMTsKLSNlbmRpZgorICAgIHN0cnVjdCBzb2NrX2FjY2VwdCBjdHg7CiAKICAgICBpZiAoIWdldHNvY2thZGRybGVuKHMsICZhZGRybGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTc5LDM2ICsyMjM5LDExIEBACiAgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKQogICAgICAgICByZXR1cm4gc2VsZWN0X2Vycm9yKCk7CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKLSAgICAgICAgaWYgKGFjY2VwdDRfd29ya3MgIT0gMCkgewotICAgICAgICAgICAgbmV3ZmQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7Ci0gICAgICAgICAgICBpZiAobmV3ZmQgPT0gSU5WQUxJRF9TT0NLRVQgJiYgYWNjZXB0NF93b3JrcyA9PSAtMSkgewotICAgICAgICAgICAgICAgIC8qIE9uIExpbnV4IG9sZGVyIHRoYW4gMi42LjI4LCBhY2NlcHQ0KCkgZmFpbHMgd2l0aCBFTk9TWVMgKi8KLSAgICAgICAgICAgICAgICBhY2NlcHQ0X3dvcmtzID0gKGVycm5vICE9IEVOT1NZUyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFjY2VwdDRfd29ya3MgPT0gMCkKLSAgICAgICAgICAgIG5ld2ZkID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKTsKLSNlbHNlCi0gICAgICAgIG5ld2ZkID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICBjdHguYWRkcmxlbiA9ICZhZGRybGVuOworICAgIGN0eC5hZGRyYnVmID0gJmFkZHJidWY7CisgICAgaWYgKHNvY2tfY2FsbChzLCAwLCBzb2NrX2FjY2VwdF9pbXBsLCAmY3R4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLQotICAgIGlmIChuZXdmZCA9PSBJTlZBTElEX1NPQ0tFVCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOworICAgIG5ld2ZkID0gY3R4LnJlc3VsdDsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIVNldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpbmV3ZmQsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIDApKSB7CkBAIC0yMDY5LDcgKzIzMDQsNyBAQAogICAgIGlmIChibG9jayA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHMtPnNvY2tfdGltZW91dCA9IGJsb2NrID8gLTEuMCA6IDAuMDsKKyAgICBzLT5zb2NrX3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKGJsb2NrID8gLTEgOiAwKTsKICAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jayk7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0yMDgzLDYgKzIzMTgsNDcgQEAKIHNldGJsb2NraW5nKFRydWUpIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGltZW91dChOb25lKTtcblwKIHNldGJsb2NraW5nKEZhbHNlKSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbWVvdXQoMC4wKS4iKTsKIAorc3RhdGljIGludAorc29ja2V0X3BhcnNlX3RpbWVvdXQoX1B5VGltZV90ICp0aW1lb3V0LCBQeU9iamVjdCAqdGltZW91dF9vYmopCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworI2VuZGlmCisjaWZuZGVmIEhBVkVfUE9MTAorICAgIF9QeVRpbWVfdCBtczsKKyNlbmRpZgorICAgIGludCBvdmVyZmxvdyA9IDA7CisKKyAgICBpZiAodGltZW91dF9vYmogPT0gUHlfTm9uZSkgeworICAgICAgICAqdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoLTEpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCh0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCp0aW1lb3V0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlRpbWVvdXQgdmFsdWUgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgb3ZlcmZsb3cgfD0gKF9QeVRpbWVfQXNUaW1ldmFsKCp0aW1lb3V0LCAmdHYsIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKTsKKyNlbmRpZgorI2lmbmRlZiBIQVZFX1BPTEwKKyAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoKnRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgb3ZlcmZsb3cgfD0gKG1zID4gSU5UX01BWCk7CisjZW5kaWYKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBkb2Vzbid0IGZpdCBpbnRvIEMgdGltZXZhbCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIC8qIHMuc2V0dGltZW91dCh0aW1lb3V0KSBtZXRob2QuICBBcmd1bWVudDoKICAgIE5vbmUgLS0gbm8gdGltZW91dCwgYmxvY2tpbmcgbW9kZTsgc2FtZSBhcyBzZXRibG9ja2luZyhUcnVlKQogICAgMC4wICAtLSBub24tYmxvY2tpbmcgbW9kZTsgc2FtZSBhcyBzZXRibG9ja2luZyhGYWxzZSkKQEAgLTIwOTIsMjIgKzIzNjgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NldHRpbWVvdXQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJnKQogewotICAgIGRvdWJsZSB0aW1lb3V0OworICAgIF9QeVRpbWVfdCB0aW1lb3V0OwogCi0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKQotICAgICAgICB0aW1lb3V0ID0gLTEuMDsKLSAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUoYXJnKTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPCAwLjApIHsKLSAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgdmFsdWUgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoc29ja2V0X3BhcnNlX3RpbWVvdXQoJnRpbWVvdXQsIGFyZykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IHRpbWVvdXQ7Ci0gICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDAuMCk7CisgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMjEyNiwxMiArMjM5MywxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfZ2V0dGltZW91dChQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7Ci0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA8IDAuMCkgeworICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPCAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzLT5zb2NrX3RpbWVvdXQpOworICAgIGVsc2UgeworICAgICAgICBkb3VibGUgc2Vjb25kcyA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHMtPnNvY2tfdGltZW91dCk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoc2Vjb25kcyk7CisgICAgfQogfQogCiBQeURvY19TVFJWQVIoZ2V0dGltZW91dF9kb2MsCkBAIC0yMTUyLDIyICsyNDIxLDIyIEBACiAgICAgaW50IGxldmVsOwogICAgIGludCBvcHRuYW1lOwogICAgIGludCByZXM7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBidWZsZW47CisgICAgUHlfYnVmZmVyIG9wdHZhbDsKICAgICBpbnQgZmxhZzsKIAogICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWk6c2V0c29ja29wdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJmZsYWcpKSB7Ci0gICAgICAgIGJ1ZiA9IChjaGFyICopICZmbGFnOwotICAgICAgICBidWZsZW4gPSBzaXplb2YgZmxhZzsKKyAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopJmZsYWcsIHNpemVvZiBmbGFnKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5IzpzZXRzb2Nrb3B0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZidWYsICZidWZsZW4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKICAgICB9Ci0gICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgKHZvaWQgKilidWYsIGJ1Zmxlbik7CiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0yMjcxLDYgKzI1NDAsMTAgQEAKIHsKICAgICBTT0NLRVRfVCBmZDsKIAorICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCisgICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICogZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKi8KICAgICBpZiAoKGZkID0gcy0+c29ja19mZCkgIT0gLTEpIHsKICAgICAgICAgcy0+c29ja19mZCA9IC0xOwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yMzAyLDkyICsyNTc1LDkwIEBACiBjYW4gYmUgcmV1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4gIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgcmV0dXJuZWQuIik7CiAKIHN0YXRpYyBpbnQKLWludGVybmFsX2Nvbm5lY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRybGVuLAotICAgICAgICAgICAgICAgICBpbnQgKnRpbWVvdXRwKQorc29ja19jb25uZWN0X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkKiBQeV9VTlVTRUQoZGF0YSkpCiB7Ci0gICAgaW50IHJlcywgdGltZW91dDsKKyAgICBpbnQgZXJyOworICAgIHNvY2tsZW5fdCBzaXplID0gc2l6ZW9mIGVycjsKIAotICAgIHRpbWVvdXQgPSAwOworICAgIGlmIChnZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAodm9pZCAqKSZlcnIsICZzaXplKSkgeworICAgICAgICAvKiBnZXRzb2Nrb3B0KCkgZmFpbGVkICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChlcnIgPT0gRUlTQ09OTikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIC8qIHNvY2tfY2FsbF9leCgpIHVzZXMgR0VUX1NPQ0tfRVJST1IoKSB0byBnZXQgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgU0VUX1NPQ0tfRVJST1IoZXJyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitpbnRlcm5hbF9jb25uZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgc3RydWN0IHNvY2thZGRyICphZGRyLCBpbnQgYWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgaW50IHJhaXNlKQoreworICAgIGludCByZXMsIGVyciwgd2FpdF9jb25uZWN0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IGNvbm5lY3Qocy0+c29ja19mZCwgYWRkciwgYWRkcmxlbik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotI2lmZGVmIE1TX1dJTkRPV1MKLQotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPiAwLjApIHsKLSAgICAgICAgaWYgKHJlcyA8IDAgJiYgV1NBR2V0TGFzdEVycm9yKCkgPT0gV1NBRVdPVUxEQkxPQ0sgJiYKLSAgICAgICAgICAgIElTX1NFTEVDVEFCTEUocykpIHsKLSAgICAgICAgICAgIC8qIFRoaXMgaXMgYSBtZXNzLiAgQmVzdCBzb2x1dGlvbjogdHJ1c3Qgc2VsZWN0ICovCi0gICAgICAgICAgICBmZF9zZXQgZmRzOwotICAgICAgICAgICAgZmRfc2V0IGZkc19leGM7Ci0gICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgICAgIHR2LnR2X3NlYyA9IChpbnQpcy0+c29ja190aW1lb3V0OwotICAgICAgICAgICAgdHYudHZfdXNlYyA9IChpbnQpKChzLT5zb2NrX3RpbWVvdXQgLSB0di50dl9zZWMpICogMWU2KTsKLSAgICAgICAgICAgIEZEX1pFUk8oJmZkcyk7Ci0gICAgICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7Ci0gICAgICAgICAgICBGRF9aRVJPKCZmZHNfZXhjKTsKLSAgICAgICAgICAgIEZEX1NFVChzLT5zb2NrX2ZkLCAmZmRzX2V4Yyk7Ci0gICAgICAgICAgICByZXMgPSBzZWxlY3QoUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZmZHMsICZmZHNfZXhjLCAmdHYpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gV1NBRVdPVUxEQkxPQ0s7Ci0gICAgICAgICAgICAgICAgdGltZW91dCA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA+IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQocy0+c29ja19mZCwgJmZkcykpCi0gICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzb2NrZXQgaXMgaW4gdGhlIHdyaXRhYmxlIHNldCAtIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWVhbnMgY29ubmVjdGVkICovCi0gICAgICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEFzIHBlciBNUyBkb2NzLCB3ZSBuZWVkIHRvIGNhbGwgZ2V0c29ja29wdCgpCi0gICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCB0aGUgdW5kZXJseWluZyBlcnJvciAqLwotICAgICAgICAgICAgICAgICAgICBpbnQgcmVzX3NpemUgPSBzaXplb2YgcmVzOwotICAgICAgICAgICAgICAgICAgICAvKiBJdCBtdXN0IGJlIGluIHRoZSBleGNlcHRpb24gc2V0ICovCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydChGRF9JU1NFVChzLT5zb2NrX2ZkLCAmZmRzX2V4YykpOwotICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBnZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopJnJlcywgJnJlc19zaXplKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldHNvY2tvcHQgYWxzbyBjbGVhcnMgV1NBR2V0TGFzdEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gcmVzZXQgaXQgYmFjay4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFdTQVNldExhc3RFcnJvcihyZXMpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBlbHNlIGlmIChyZXMgPCAwKSBhbiBlcnJvciBvY2N1cnJlZCAqLwotICAgICAgICB9CisgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgLyogY29ubmVjdCgpIHN1Y2NlZWRlZCwgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJlcyA9IFdTQUdldExhc3RFcnJvcigpOworICAgIC8qIGNvbm5lY3QoKSBmYWlsZWQgKi8KIAotI2Vsc2UKKyAgICAvKiBzYXZlIGVycm9yLCBQeUVycl9DaGVja1NpZ25hbHMoKSBjYW4gcmVwbGFjZSBpdCAqLworICAgIGVyciA9IEdFVF9TT0NLX0VSUk9SOworICAgIGlmIChDSEVDS19FUlJOTyhFSU5UUikpIHsKKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDAuMCkgewotICAgICAgICBpZiAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5QUk9HUkVTUyAmJiBJU19TRUxFQ1RBQkxFKHMpKSB7Ci0gICAgICAgICAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0KHMsIDEpOwotICAgICAgICAgICAgaWYgKHRpbWVvdXQgPT0gMCkgewotICAgICAgICAgICAgICAgIC8qIEJ1ZyAjMTAxOTgwODogaW4gY2FzZSBvZiBhbiBFSU5QUk9HUkVTUywKLSAgICAgICAgICAgICAgICAgICB1c2UgZ2V0c29ja29wdChTT19FUlJPUikgdG8gZ2V0IHRoZSByZWFsCi0gICAgICAgICAgICAgICAgICAgZXJyb3IuICovCi0gICAgICAgICAgICAgICAgc29ja2xlbl90IHJlc19zaXplID0gc2l6ZW9mIHJlczsKLSAgICAgICAgICAgICAgICAodm9pZClnZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT19FUlJPUiwgJnJlcywgJnJlc19zaXplKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzID09IEVJU0NPTk4pCi0gICAgICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZXJybm8gPSByZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh0aW1lb3V0ID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gZXJybm87ICAgICAgICAgICAgLyogaGFkIGVycm9yICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzID0gRVdPVUxEQkxPQ0s7ICAgICAgICAgICAgICAgICAgICAgIC8qIHRpbWVkIG91dCAqLwotICAgICAgICB9CisgICAgICAgIC8qIElzc3VlICMyMzYxODogd2hlbiBjb25uZWN0KCkgZmFpbHMgd2l0aCBFSU5UUiwgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgICAgcnVubmluZyBhc3luY2hyb25vdXNseS4KKworICAgICAgICAgICBJZiB0aGUgc29ja2V0IGlzIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQsIHdhaXQgdW50aWwgdGhlCisgICAgICAgICAgIGNvbm5lY3Rpb24gY29tcGxldGVzLCBmYWlscyBvciB0aW1lZCBvdXQgdXNpbmcgc2VsZWN0KCksIGFuZCB0aGVuCisgICAgICAgICAgIGdldCB0aGUgY29ubmVjdGlvbiBzdGF0dXMgdXNpbmcgZ2V0c29ja29wdChTT19FUlJPUikuCisKKyAgICAgICAgICAgSWYgdGhlIHNvY2tldCBpcyBub24tYmxvY2tpbmcsIHJhaXNlIEludGVycnVwdGVkRXJyb3IuIFRoZSBjYWxsZXIgaXMKKyAgICAgICAgICAgcmVzcG9uc2libGUgdG8gd2FpdCB1bnRpbCB0aGUgY29ubmVjdGlvbiBjb21wbGV0ZXMsIGZhaWxzIG9yIHRpbWVkCisgICAgICAgICAgIG91dCAoaXQncyB0aGUgY2FzZSBpbiBhc3luY2lvIGZvciBleGFtcGxlKS4gKi8KKyAgICAgICAgd2FpdF9jb25uZWN0ID0gKHMtPnNvY2tfdGltZW91dCAhPSAwICYmIElTX1NFTEVDVEFCTEUocykpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2FpdF9jb25uZWN0ID0gKHMtPnNvY2tfdGltZW91dCA+IDAgJiYgZXJyID09IFNPQ0tfSU5QUk9HUkVTU19FUlIKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIElTX1NFTEVDVEFCTEUocykpOwogICAgIH0KIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXMgPSBlcnJubzsKKyAgICBpZiAoIXdhaXRfY29ubmVjdCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIC8qIHJlc3RvcmUgZXJyb3IsIG1heWJlIHJlcGxhY2VkIGJ5IFB5RXJyX0NoZWNrU2lnbmFscygpICovCisgICAgICAgICAgICBTRVRfU09DS19FUlJPUihlcnIpOworICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CiAKLSNlbmRpZgotICAgICp0aW1lb3V0cCA9IHRpbWVvdXQ7Ci0KLSAgICByZXR1cm4gcmVzOworICAgIGlmIChyYWlzZSkgeworICAgICAgICAvKiBzb2NrZXQuY29ubmVjdCgpIHJhaXNlcyBhbiBleGNlcHRpb24gb24gZXJyb3IgKi8KKyAgICAgICAgaWYgKHNvY2tfY2FsbF9leChzLCAxLCBzb2NrX2Nvbm5lY3RfaW1wbCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxLCBOVUxMLCBzLT5zb2NrX3RpbWVvdXQpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHNvY2tldC5jb25uZWN0X2V4KCkgcmV0dXJucyB0aGUgZXJyb3IgY29kZSBvbiBlcnJvciAqLworICAgICAgICBpZiAoc29ja19jYWxsX2V4KHMsIDEsIHNvY2tfY29ubmVjdF9pbXBsLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZlcnIsIHMtPnNvY2tfdGltZW91dCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIHMuY29ubmVjdChzb2NrYWRkcikgbWV0aG9kICovCkBAIC0yMzk4LDIzICsyNjY5LDE1IEBACiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKICAgICBpbnQgYWRkcmxlbjsKICAgICBpbnQgcmVzOwotICAgIGludCB0aW1lb3V0OwogCiAgICAgaWYgKCFnZXRzb2NrYWRkcmFyZyhzLCBhZGRybywgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBpbnRlcm5hbF9jb25uZWN0KHMsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sICZ0aW1lb3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICByZXMgPSBpbnRlcm5hbF9jb25uZWN0KHMsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sIDEpOworICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHJlcyAhPSAwKQotICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihjb25uZWN0X2RvYywKQEAgLTI0MzIsMjEgKzI2OTUsMTMgQEAKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwogICAgIGludCBhZGRybGVuOwogICAgIGludCByZXM7Ci0gICAgaW50IHRpbWVvdXQ7CiAKICAgICBpZiAoIWdldHNvY2thZGRyYXJnKHMsIGFkZHJvLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGludGVybmFsX2Nvbm5lY3QocywgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbiwgJnRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAvKiBTaWduYWxzIGFyZSBub3QgZXJyb3JzICh0aG91Z2ggdGhleSBtYXkgcmFpc2UgZXhjZXB0aW9ucykuICBBZGFwdGVkCi0gICAgICAgZnJvbSBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoKS4gKi8KLSNpZmRlZiBFSU5UUgotICAgIGlmIChyZXMgPT0gRUlOVFIgJiYgUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgcmVzID0gaW50ZXJuYWxfY29ubmVjdChzLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLCAwKTsKKyAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKIAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHJlcyk7CiB9CkBAIC0yNTM0LDE0ICsyNzg5LDE2IEBACiAvKiBzLmxpc3RlbihuKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNvY2tfbGlzdGVuKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZykKK3NvY2tfbGlzdGVuKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGJhY2tsb2c7CisgICAgLyogV2UgdHJ5IHRvIGNob29zZSBhIGRlZmF1bHQgYmFja2xvZyBoaWdoIGVub3VnaCB0byBhdm9pZCBjb25uZWN0aW9uIGRyb3BzCisgICAgICogZm9yIGNvbW1vbiB3b3JrbG9hZHMsIHlldCBub3QgdG9vIGhpZ2ggdG8gbGltaXQgcmVzb3VyY2UgdXNhZ2UuICovCisgICAgaW50IGJhY2tsb2cgPSBQeV9NSU4oU09NQVhDT05OLCAxMjgpOwogICAgIGludCByZXM7CiAKLSAgICBiYWNrbG9nID0gX1B5TG9uZ19Bc0ludChhcmcpOwotICAgIGlmIChiYWNrbG9nID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpsaXN0ZW4iLCAmYmFja2xvZykpCiAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIC8qIFRvIGF2b2lkIHByb2JsZW1zIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBhbGxvdyBhIG5lZ2F0aXZlIGJhY2tsb2cKICAgICAgKiAod2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGFueXdheSkgd2UgZm9yY2UgYSBtaW5pbXVtIHZhbHVlIG9mIDAuICovCkBAIC0yNTU2LDEyICsyODEzLDM0IEBACiB9CiAKIFB5RG9jX1NUUlZBUihsaXN0ZW5fZG9jLAotImxpc3RlbihiYWNrbG9nKVxuXAorImxpc3RlbihbYmFja2xvZ10pXG5cCiBcblwKLUVuYWJsZSBhIHNlcnZlciB0byBhY2NlcHQgY29ubmVjdGlvbnMuICBUaGUgYmFja2xvZyBhcmd1bWVudCBtdXN0IGJlIGF0XG5cCi1sZWFzdCAwIChpZiBpdCBpcyBsb3dlciwgaXQgaXMgc2V0IHRvIDApOyBpdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZlxuXAorRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmIGJhY2tsb2cgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlXG5cCithdCBsZWFzdCAwIChpZiBpdCBpcyBsb3dlciwgaXQgaXMgc2V0IHRvIDApOyBpdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZlxuXAogdW5hY2NlcHRlZCBjb25uZWN0aW9ucyB0aGF0IHRoZSBzeXN0ZW0gd2lsbCBhbGxvdyBiZWZvcmUgcmVmdXNpbmcgbmV3XG5cCi1jb25uZWN0aW9ucy4iKTsKK2Nvbm5lY3Rpb25zLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgcmVhc29uYWJsZSB2YWx1ZSBpcyBjaG9zZW4uIik7CisKK3N0cnVjdCBzb2NrX3JlY3YgeworICAgIGNoYXIgKmNidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19yZWN2X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3JlY3YgKmN0eCA9IGRhdGE7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGN0eC0+bGVuID4gSU5UX01BWCkKKyAgICAgICAgY3R4LT5sZW4gPSBJTlRfTUFYOworICAgIGN0eC0+cmVzdWx0ID0gcmVjdihzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIChpbnQpY3R4LT5sZW4sIGN0eC0+ZmxhZ3MpOworI2Vsc2UKKyAgICBjdHgtPnJlc3VsdCA9IHJlY3Yocy0+c29ja19mZCwgY3R4LT5jYnVmLCBjdHgtPmxlbiwgY3R4LT5mbGFncyk7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQogCiAKIC8qCkBAIC0yNTc2LDggKzI4NTUsNyBAQAogc3RhdGljIFB5X3NzaXplX3QKIHNvY2tfcmVjdl9ndXRzKFB5U29ja2V0U29ja09iamVjdCAqcywgY2hhciogY2J1ZiwgUHlfc3NpemVfdCBsZW4sIGludCBmbGFncykKIHsKLSAgICBQeV9zc2l6ZV90IG91dGxlbiA9IC0xOwotICAgIGludCB0aW1lb3V0OworICAgIHN0cnVjdCBzb2NrX3JlY3YgY3R4OwogCiAgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CiAgICAgICAgIHNlbGVjdF9lcnJvcigpOwpAQCAtMjU4OCwzMiArMjg2NiwxMyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCAoaW50KWxlbiwgZmxhZ3MpOwotI2Vsc2UKLSAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGN0eC5jYnVmID0gY2J1ZjsKKyAgICBjdHgubGVuID0gbGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMCwgc29ja19yZWN2X2ltcGwsICZjdHgpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLSAgICBpZiAob3V0bGVuIDwgMCkgewotICAgICAgICAvKiBOb3RlOiB0aGUgY2FsbCB0byBlcnJvcmhhbmRsZXIoKSBBTFdBWVMgaW5kaXJlY3RseSByZXR1cm5lZAotICAgICAgICAgICBOVUxMLCBzbyBpZ25vcmUgaXRzIHJldHVybiB2YWx1ZSAqLwotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gb3V0bGVuOworICAgIHJldHVybiBjdHgucmVzdWx0OwogfQogCiAKQEAgLTI3MjcsNiArMjk4NiwzNCBAQAogXG5cCiBTZWUgcmVjdigpIGZvciBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBmbGFncy4iKTsKIAorc3RydWN0IHNvY2tfcmVjdmZyb20geworICAgIGNoYXIqIGNidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIHNvY2tsZW5fdCAqYWRkcmxlbjsKKyAgICBzb2NrX2FkZHJfdCAqYWRkcmJ1ZjsKKyAgICBQeV9zc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfcmVjdmZyb21faW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfcmVjdmZyb20gKmN0eCA9IGRhdGE7CisKKyAgICBtZW1zZXQoY3R4LT5hZGRyYnVmLCAwLCAqY3R4LT5hZGRybGVuKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY3R4LT5sZW4gPiBJTlRfTUFYKQorICAgICAgICBjdHgtPmxlbiA9IElOVF9NQVg7CisgICAgY3R4LT5yZXN1bHQgPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIChpbnQpY3R4LT5sZW4sIGN0eC0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIGN0eC0+bGVuLCBjdHgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAKIC8qCiAgKiBUaGlzIGlzIHRoZSBndXRzIG9mIHRoZSByZWN2ZnJvbSgpIGFuZCByZWN2ZnJvbV9pbnRvKCkgbWV0aG9kcywgd2hpY2ggcmVhZHMKQEAgLTI3NDQsOSArMzAzMSw4IEBACiAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqKiBhZGRyKQogewogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgaW50IHRpbWVvdXQ7Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7CiAgICAgc29ja2xlbl90IGFkZHJsZW47CisgICAgc3RydWN0IHNvY2tfcmVjdmZyb20gY3R4OwogCiAgICAgKmFkZHIgPSBOVUxMOwogCkBAIC0yNzU4LDM4ICszMDQ0LDIwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBtZW1zZXQoJmFkZHJidWYsIDAsIGFkZHJsZW4pOwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gcmVjdmZyb20ocy0+c29ja19mZCwgY2J1ZiwgKGludClsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgJmFkZHJidWYsICZhZGRybGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pOwotI2VuZGlmCi0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQotICAgIGlmIChuIDwgMCkgewotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmICghKCphZGRyID0gbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmxlbiwgcy0+c29ja19wcm90bykpKQorICAgIGN0eC5jYnVmID0gY2J1ZjsKKyAgICBjdHgubGVuID0gbGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGN0eC5hZGRyYnVmID0gJmFkZHJidWY7CisgICAgY3R4LmFkZHJsZW4gPSAmYWRkcmxlbjsKKyAgICBpZiAoc29ja19jYWxsKHMsIDAsIHNvY2tfcmVjdmZyb21faW1wbCwgJmN0eCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICByZXR1cm4gbjsKKyAgICAqYWRkciA9IG1ha2Vzb2NrYWRkcihzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNvY2tfcHJvdG8pOworICAgIGlmICgqYWRkciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gY3R4LnJlc3VsdDsKIH0KIAogLyogcy5yZWN2ZnJvbShuYnl0ZXMgWyxmbGFnc10pIG1ldGhvZCAqLwpAQCAtMjkwMCwxMCArMzE2OCwyNCBAQAogXG5cCiBMaWtlIHJlY3ZfaW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSBidXQgYWxzbyByZXR1cm4gdGhlIHNlbmRlcidzIGFkZHJlc3MgaW5mby4iKTsKIAotCiAvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKICAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KICNpZmRlZiBDTVNHX0xFTgorc3RydWN0IHNvY2tfcmVjdm1zZyB7CisgICAgc3RydWN0IG1zZ2hkciAqbXNnOworICAgIGludCBmbGFnczsKKyAgICBzc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfcmVjdm1zZ19pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19yZWN2bXNnICpjdHggPSBkYXRhOworCisgICAgY3R4LT5yZXN1bHQgPSByZWN2bXNnKHMtPnNvY2tfZmQsIGN0eC0+bXNnLCBjdHgtPmZsYWdzKTsKKyAgICByZXR1cm4gIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyoKICAqIENhbGwgcmVjdm1zZygpIHdpdGggdGhlIHN1cHBsaWVkIGlvdmVjIHN0cnVjdHVyZXMsIGZsYWdzLCBhbmQKICAqIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciBzaXplIChjb250cm9sbGVuKS4gIFJldHVybnMgdGhlIHR1cGxlIHJldHVybgpAQCAtMjkxOSw4ICszMjAxLDYgQEAKICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgUHlfc3NpemVfdCBjb250cm9sbGVuLAogICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKigqbWFrZXZhbCkoc3NpemVfdCwgdm9pZCAqKSwgdm9pZCAqbWFrZXZhbF9kYXRhKQogewotICAgIHNzaXplX3QgYnl0ZXNfcmVjZWl2ZWQgPSAtMTsKLSAgICBpbnQgdGltZW91dDsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwogICAgIHNvY2tsZW5fdCBhZGRyYnVmbGVuOwogICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OwpAQCAtMjkyOSw2ICszMjA5LDcgQEAKICAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2g7CiAgICAgc2l6ZV90IGNtc2dkYXRhbGVuID0gMDsKICAgICBpbnQgY21zZ19zdGF0dXM7CisgICAgc3RydWN0IHNvY2tfcmVjdm1zZyBjdHg7CiAKICAgICAvKiBYWFg6IFBPU0lYIHNheXMgdGhhdCBtc2dfbmFtZSBhbmQgbXNnX25hbWVsZW4gInNoYWxsIGJlCiAgICAgICAgaWdub3JlZCIgd2hlbiB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZCAoTGludXggZmlsbHMgdGhlbSBpbgpAQCAtMjk1NSwyOCArMzIzNiwxNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwogICAgIG1zZy5tc2dfbmFtZSA9IFNBUzJTQSgmYWRkcmJ1Zik7CiAgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmJ1ZmxlbjsKICAgICBtc2cubXNnX2lvdiA9IGlvdjsKICAgICBtc2cubXNnX2lvdmxlbiA9IGlvdmxlbjsKICAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOwogICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47Ci0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KQotICAgICAgICBieXRlc19yZWNlaXZlZCA9IHJlY3Ztc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTOwotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCiAKLSAgICBpZiAoYnl0ZXNfcmVjZWl2ZWQgPCAwKSB7Ci0gICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMCwgc29ja19yZWN2bXNnX2ltcGwsICZjdHgpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KIAogICAgIC8qIE1ha2UgbGlzdCBvZiAobGV2ZWwsIHR5cGUsIGRhdGEpIHR1cGxlcyBmcm9tIGNvbnRyb2wgbWVzc2FnZXMuICovCiAgICAgaWYgKChjbXNnX2xpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQpAQCAtMzAxOCw3ICszMjg4LDcgQEAKICAgICB9CiAKICAgICByZXR2YWwgPSBQeV9CdWlsZFZhbHVlKCJOT2lOIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbWFrZXZhbCkoYnl0ZXNfcmVjZWl2ZWQsIG1ha2V2YWxfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm1ha2V2YWwpKGN0eC5yZXN1bHQsIG1ha2V2YWxfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNnX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1zZy5tc2dfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlc29ja2FkZHIocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwKQEAgLTMyMjYsMTUgKzM0OTYsMzYgQEAKICNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLwogCiAKK3N0cnVjdCBzb2NrX3NlbmQgeworICAgIGNoYXIgKmJ1ZjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgZmxhZ3M7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3NlbmRfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfc2VuZCAqY3R4ID0gZGF0YTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY3R4LT5sZW4gPiBJTlRfTUFYKQorICAgICAgICBjdHgtPmxlbiA9IElOVF9NQVg7CisgICAgY3R4LT5yZXN1bHQgPSBzZW5kKHMtPnNvY2tfZmQsIGN0eC0+YnVmLCAoaW50KWN0eC0+bGVuLCBjdHgtPmZsYWdzKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSBzZW5kKHMtPnNvY2tfZmQsIGN0eC0+YnVmLCBjdHgtPmxlbiwgY3R4LT5mbGFncyk7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAvKiBzLnNlbmQoZGF0YSBbLGZsYWdzXSkgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NlbmQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4sIG4gPSAtMTsKLSAgICBpbnQgZmxhZ3MgPSAwLCB0aW1lb3V0OworICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfYnVmZmVyIHBidWY7CisgICAgc3RydWN0IHNvY2tfc2VuZCBjdHg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6c2VuZCIsICZwYnVmLCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyNDMsMzMgKzM1MzQsMTYgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CiAgICAgICAgIHJldHVybiBzZWxlY3RfZXJyb3IoKTsKICAgICB9Ci0gICAgYnVmID0gcGJ1Zi5idWY7Ci0gICAgbGVuID0gcGJ1Zi5sZW47Ci0KLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCAoaW50KWxlbiwgZmxhZ3MpOwotI2Vsc2UKLSAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCBsZW4sIGZsYWdzKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICBjdHguYnVmID0gcGJ1Zi5idWY7CisgICAgY3R4LmxlbiA9IHBidWYubGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMSwgc29ja19zZW5kX2ltcGwsICZjdHgpIDwgMCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOwogfQogCiBQeURvY19TVFJWQVIoc2VuZF9kb2MsCkBAIC0zMjg2LDkgKzM1NjAsMTUgQEAKIHNvY2tfc2VuZGFsbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgbiA9IC0xOwotICAgIGludCBmbGFncyA9IDAsIHRpbWVvdXQsIHNhdmVkX2Vycm5vOworICAgIFB5X3NzaXplX3QgbGVuLCBuOworICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfYnVmZmVyIHBidWY7CisgICAgc3RydWN0IHNvY2tfc2VuZCBjdHg7CisgICAgaW50IGhhc190aW1lb3V0ID0gKHMtPnNvY2tfdGltZW91dCA+IDApOworICAgIF9QeVRpbWVfdCBpbnRlcnZhbCA9IHMtPnNvY2tfdGltZW91dDsKKyAgICBfUHlUaW1lX3QgZGVhZGxpbmUgPSAwOworICAgIGludCBkZWFkbGluZV9pbml0aWFsaXplZCA9IDA7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6c2VuZGFsbCIsICZwYnVmLCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMDEsNTAgKzM1ODEsNDcgQEAKICAgICB9CiAKICAgICBkbyB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdChzLCAxKTsKLSAgICAgICAgbiA9IC0xOwotICAgICAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCAoaW50KWxlbiwgZmxhZ3MpOwotI2Vsc2UKLSAgICAgICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgbGVuLCBmbGFncyk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KSB7CisgICAgICAgICAgICBpZiAoZGVhZGxpbmVfaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAvKiByZWNvbXB1dGUgdGhlIHRpbWVvdXQgKi8KKyAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAxOworICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgcy0+c29ja190aW1lb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPD0gMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogUHlFcnJfQ2hlY2tTaWduYWxzKCkgbWlnaHQgY2hhbmdlIGVycm5vICovCi0gICAgICAgIHNhdmVkX2Vycm5vID0gZXJybm87CisKKyAgICAgICAgY3R4LmJ1ZiA9IGJ1ZjsKKyAgICAgICAgY3R4LmxlbiA9IGxlbjsKKyAgICAgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgICAgIGlmIChzb2NrX2NhbGxfZXgocywgMSwgc29ja19zZW5kX2ltcGwsICZjdHgsIDAsIE5VTEwsIGludGVydmFsKSA8IDApCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIG4gPSBjdHgucmVzdWx0OworICAgICAgICBhc3NlcnQobiA+PSAwKTsKKworICAgICAgICBidWYgKz0gbjsKKyAgICAgICAgbGVuIC09IG47CisKICAgICAgICAgLyogV2UgbXVzdCBydW4gb3VyIHNpZ25hbCBoYW5kbGVycyBiZWZvcmUgbG9vcGluZyBhZ2Fpbi4KICAgICAgICAgICAgc2VuZCgpIGNhbiByZXR1cm4gYSBzdWNjZXNzZnVsIHBhcnRpYWwgd3JpdGUgd2hlbiBpdCBpcwogICAgICAgICAgICBpbnRlcnJ1cHRlZCwgc28gd2UgY2FuJ3QgcmVzdHJpY3Qgb3Vyc2VsdmVzIHRvIEVJTlRSLiAqLwotICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgICAgICAvKiBJZiBpbnRlcnJ1cHRlZCwgdHJ5IGFnYWluICovCi0gICAgICAgICAgICBpZiAoc2F2ZWRfZXJybm8gPT0gRUlOVFIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmICs9IG47Ci0gICAgICAgIGxlbiAtPSBuOworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgfSB3aGlsZSAobGVuID4gMCk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CiAKLSAgICBpZiAobiA8IDApCi0gICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXMgPSBQeV9Ob25lOworCitkb25lOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIHJldHVybiByZXM7CiB9CiAKIFB5RG9jX1NUUlZBUihzZW5kYWxsX2RvYywKQEAgLTMzNTYsNiArMzYzMywzMiBAQAogdG8gdGVsbCBob3cgbXVjaCBkYXRhIGhhcyBiZWVuIHNlbnQuIik7CiAKIAorc3RydWN0IHNvY2tfc2VuZHRvIHsKKyAgICBjaGFyICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIGludCBhZGRybGVuOworICAgIHNvY2tfYWRkcl90ICphZGRyYnVmOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19zZW5kdG9faW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfc2VuZHRvICpjdHggPSBkYXRhOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjdHgtPmxlbiA+IElOVF9NQVgpCisgICAgICAgIGN0eC0+bGVuID0gSU5UX01BWDsKKyAgICBjdHgtPnJlc3VsdCA9IHNlbmR0byhzLT5zb2NrX2ZkLCBjdHgtPmJ1ZiwgKGludCljdHgtPmxlbiwgY3R4LT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSBzZW5kdG8ocy0+c29ja19mZCwgY3R4LT5idWYsIGN0eC0+bGVuLCBjdHgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2VuZGlmCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyogcy5zZW5kdG8oZGF0YSwgW2ZsYWdzLF0gc29ja2FkZHIpIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzM2MywxMSArMzY2NiwxMCBAQAogewogICAgIFB5X2J1ZmZlciBwYnVmOwogICAgIFB5T2JqZWN0ICphZGRybzsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4sIGFyZ2xlbjsKKyAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIGludCBhZGRybGVuLCBmbGFncywgdGltZW91dDsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKKyAgICBpbnQgYWRkcmxlbiwgZmxhZ3M7CisgICAgc3RydWN0IHNvY2tfc2VuZHRvIGN0eDsKIAogICAgIGZsYWdzID0gMDsKICAgICBhcmdsZW4gPSBQeVR1cGxlX1NpemUoYXJncyk7CkBAIC0zMzg4LDkgKzM2OTAsNiBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGJ1ZiA9IHBidWYuYnVmOwotICAgIGxlbiA9IHBidWYubGVuOwotCiAgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogICAgICAgICByZXR1cm4gc2VsZWN0X2Vycm9yKCk7CkBAIC0zNDAxLDMyICszNzAwLDE4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMSwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gc2VuZHRvKHMtPnNvY2tfZmQsIGJ1ZiwgKGludClsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHNlbmR0byhzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICBjdHguYnVmID0gcGJ1Zi5idWY7CisgICAgY3R4LmxlbiA9IHBidWYubGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGN0eC5hZGRybGVuID0gYWRkcmxlbjsKKyAgICBjdHguYWRkcmJ1ZiA9ICZhZGRyYnVmOworICAgIGlmIChzb2NrX2NhbGwocywgMSwgc29ja19zZW5kdG9faW1wbCwgJmN0eCkgPCAwKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOwogfQogCiBQeURvY19TVFJWQVIoc2VuZHRvX2RvYywKQEAgLTM0MzksNiArMzcyNCwyMSBAQAogLyogVGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzIHJlcXVpcmUgYSB3b3JraW5nCiAgICBDTVNHX0xFTigpLiAgU2VlIHRoZSBjb21tZW50IG5lYXIgZ2V0X0NNU0dfTEVOKCkuICovCiAjaWZkZWYgQ01TR19MRU4KK3N0cnVjdCBzb2NrX3NlbmRtc2cgeworICAgIHN0cnVjdCBtc2doZHIgKm1zZzsKKyAgICBpbnQgZmxhZ3M7CisgICAgc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3NlbmRtc2dfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfc2VuZG1zZyAqY3R4ID0gZGF0YTsKKworICAgIGN0eC0+cmVzdWx0ID0gc2VuZG1zZyhzLT5zb2NrX2ZkLCBjdHgtPm1zZywgY3R4LT5mbGFncyk7CisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyogcy5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM0NTYsMTAgKzM3NTYsMTAgQEAKICAgICB9ICpjbXNncyA9IE5VTEw7CiAgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKLSAgICBzc2l6ZV90IGJ5dGVzX3NlbnQgPSAtMTsKLSAgICBpbnQgYWRkcmxlbiwgdGltZW91dCwgZmxhZ3MgPSAwOworICAgIGludCBhZGRybGVuLCBmbGFncyA9IDA7CiAgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKICAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKQEAgLTM2MTMsMjMgKzM5MTMsMTIgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpCi0gICAgICAgIGJ5dGVzX3NlbnQgPSBzZW5kbXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMSwgc29ja19zZW5kbXNnX2ltcGwsICZjdHgpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKIAotICAgIGlmIChieXRlc19zZW50IDwgMCkgewotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoYnl0ZXNfc2VudCk7CisgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOwogCiBmaW5hbGx5OgogICAgIFB5TWVtX0ZyZWUoY29udHJvbGJ1Zik7CkBAIC0zNzk2LDcgKzQwODUsNyBAQAogICAgIHsic2hhcmUiLCAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NoYXJlLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja19zaGFyZV9kb2N9LAogI2VuZGlmCi0gICAgeyJsaXN0ZW4iLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX2xpc3RlbiwgTUVUSF9PLAorICAgIHsibGlzdGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19saXN0ZW4sIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5fZG9jfSwKICAgICB7InJlY3YiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdiwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHJlY3ZfZG9jfSwKQEAgLTM4MzgsMTAgKzQxMjcsMTQgQEAKICAgICAgICB7ImZhbWlseSIsIFRfSU5ULCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfZmFtaWx5KSwgUkVBRE9OTFksICJ0aGUgc29ja2V0IGZhbWlseSJ9LAogICAgICAgIHsidHlwZSIsIFRfSU5ULCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfdHlwZSksIFJFQURPTkxZLCAidGhlIHNvY2tldCB0eXBlIn0sCiAgICAgICAgeyJwcm90byIsIFRfSU5ULCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfcHJvdG8pLCBSRUFET05MWSwgInRoZSBzb2NrZXQgcHJvdG9jb2wifSwKLSAgICAgICB7InRpbWVvdXQiLCBUX0RPVUJMRSwgb2Zmc2V0b2YoUHlTb2NrZXRTb2NrT2JqZWN0LCBzb2NrX3RpbWVvdXQpLCBSRUFET05MWSwgInRoZSBzb2NrZXQgdGltZW91dCJ9LAogICAgICAgIHswfSwKIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBzb2NrX2dldHNldGxpc3RbXSA9IHsKKyAgICB7InRpbWVvdXQiLCAoZ2V0dGVyKXNvY2tfZ2V0dGltZW91dCwgTlVMTCwgUHlEb2NfU1RSKCJ0aGUgc29ja2V0IHRpbWVvdXQiKX0sCisgICAge05VTEx9IC8qIHNlbnRpbmVsICovCit9OworCiAvKiBEZWFsbG9jYXRlIGEgc29ja2V0IG9iamVjdCBpbiByZXNwb25zZSB0byB0aGUgbGFzdCBQeV9ERUNSRUYoKS4KICAgIEZpcnN0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0aW9uLiAqLwogCkBAIC0zOTA1LDcgKzQxOTgsNyBAQAogICAgIG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChuZXcgIT0gTlVMTCkgewogICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPnNvY2tfZmQgPSAtMTsKLSAgICAgICAgKChQeVNvY2tldFNvY2tPYmplY3QgKiluZXcpLT5zb2NrX3RpbWVvdXQgPSAtMS4wOworICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPnNvY2tfdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoLTEpOwogICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPmVycm9yaGFuZGxlciA9ICZzZXRfZXJyb3I7CiAgICAgfQogICAgIHJldHVybiBuZXc7CkBAIC00MDg4LDcgKzQzODEsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBzb2NrX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBzb2NrX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIHNvY2tfZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KQEAgLTQyMjcsNyArNDUyMCw3IEBACiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBjb21tb24gdG8gZ2V0aG9zdGJ5bmFtZV9leCBhbmQgZ2V0aG9zdGJ5YWRkciAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0aG9zdF9jb21tb24oc3RydWN0IGhvc3RlbnQgKmgsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFsZW4sIGludCBhZikKK2dldGhvc3RfY29tbW9uKHN0cnVjdCBob3N0ZW50ICpoLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNpemVfdCBhbGVuLCBpbnQgYWYpCiB7CiAgICAgY2hhciAqKnBjaDsKICAgICBQeU9iamVjdCAqcnRuX3R1cGxlID0gKFB5T2JqZWN0ICopTlVMTDsKQEAgLTQ5NDQsMjEgKzUyMzcsMjIgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHNvY2tldF9pbmV0X250b2EoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKnBhY2tlZF9zdHI7Ci0gICAgaW50IGFkZHJfbGVuOworICAgIFB5X2J1ZmZlciBwYWNrZWRfaXA7CiAgICAgc3RydWN0IGluX2FkZHIgcGFja2VkX2FkZHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOmluZXRfbnRvYSIsICZwYWNrZWRfc3RyLCAmYWRkcl9sZW4pKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjppbmV0X250b2EiLCAmcGFja2VkX2lwKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoYWRkcl9sZW4gIT0gc2l6ZW9mKHBhY2tlZF9hZGRyKSkgeworICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihwYWNrZWRfYWRkcikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAicGFja2VkIElQIHdyb25nIGxlbmd0aCBmb3IgaW5ldF9udG9hIik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG1lbWNweSgmcGFja2VkX2FkZHIsIHBhY2tlZF9zdHIsIGFkZHJfbGVuKTsKKyAgICBtZW1jcHkoJnBhY2tlZF9hZGRyLCBwYWNrZWRfaXAuYnVmLCBwYWNrZWRfaXAubGVuKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogCiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGluZXRfbnRvYShwYWNrZWRfYWRkcikpOwogfQpAQCAtNTA2OSw4ICs1MzYzLDcgQEAKIHNvY2tldF9pbmV0X250b3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBhZjsKLSAgICBjaGFyKiBwYWNrZWQ7Ci0gICAgaW50IGxlbjsKKyAgICBQeV9idWZmZXIgcGFja2VkX2lwOwogICAgIGNvbnN0IGNoYXIqIHJldHZhbDsKICNpZmRlZiBFTkFCTEVfSVBWNgogICAgIGNoYXIgaXBbUHlfTUFYKElORVRfQUREUlNUUkxFTiwgSU5FVDZfQUREUlNUUkxFTikgKyAxXTsKQEAgLTUwODEsMzEgKzUzNzQsMzUgQEAKICAgICAvKiBHdWFyYW50ZWUgTlVMLXRlcm1pbmF0aW9uIGZvciBQeVVuaWNvZGVfRnJvbVN0cmluZygpIGJlbG93ICovCiAgICAgbWVtc2V0KCh2b2lkICopICZpcFswXSwgJ1wwJywgc2l6ZW9mKGlwKSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5IzppbmV0X250b3AiLCAmYWYsICZwYWNrZWQsICZsZW4pKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6aW5ldF9udG9wIiwgJmFmLCAmcGFja2VkX2lwKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAoYWYgPT0gQUZfSU5FVCkgewotICAgICAgICBpZiAobGVuICE9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKKyAgICAgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgImludmFsaWQgbGVuZ3RoIG9mIHBhY2tlZCBJUCBhZGRyZXNzIHN0cmluZyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjaWZkZWYgRU5BQkxFX0lQVjYKICAgICB9IGVsc2UgaWYgKGFmID09IEFGX0lORVQ2KSB7Ci0gICAgICAgIGlmIChsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKKyAgICAgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJpbnZhbGlkIGxlbmd0aCBvZiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAidW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCIsIGFmKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dmFsID0gaW5ldF9udG9wKGFmLCBwYWNrZWQsIGlwLCBzaXplb2YoaXApKTsKKyAgICByZXR2YWwgPSBpbmV0X250b3AoYWYsIHBhY2tlZF9pcC5idWYsIGlwLCBzaXplb2YoaXApKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgIGlmICghcmV0dmFsKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MTI0LDggKzU0MjEsNyBAQAogc29ja2V0X2luZXRfbnRvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGFmOwotICAgIGNoYXIqIHBhY2tlZDsKLSAgICBpbnQgbGVuOworICAgIFB5X2J1ZmZlciBwYWNrZWRfaXA7CiAgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyOwogICAgIERXT1JEIGFkZHJsZW4sIHJldCwgcmV0bGVuOwogI2lmZGVmIEVOQUJMRV9JUFY2CkBAIC01MTM3LDM4ICs1NDMzLDQyIEBACiAgICAgLyogR3VhcmFudGVlIE5VTC10ZXJtaW5hdGlvbiBmb3IgUHlVbmljb2RlX0Zyb21TdHJpbmcoKSBiZWxvdyAqLwogICAgIG1lbXNldCgodm9pZCAqKSAmaXBbMF0sICdcMCcsIHNpemVvZihpcCkpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSM6aW5ldF9udG9wIiwgJmFmLCAmcGFja2VkLCAmbGVuKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOmluZXRfbnRvcCIsICZhZiwgJnBhY2tlZF9pcCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGFmID09IEFGX0lORVQpIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICogYWRkcjQgPSAoc3RydWN0IHNvY2thZGRyX2luICopJmFkZHI7CiAKLSAgICAgICAgaWYgKGxlbiAhPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7CisgICAgICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJpbnZhbGlkIGxlbmd0aCBvZiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoYWRkcjQsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKICAgICAgICAgYWRkcjQtPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgICBtZW1jcHkoJihhZGRyNC0+c2luX2FkZHIpLCBwYWNrZWQsIHNpemVvZihhZGRyNC0+c2luX2FkZHIpKTsKKyAgICAgICAgbWVtY3B5KCYoYWRkcjQtPnNpbl9hZGRyKSwgcGFja2VkX2lwLmJ1Ziwgc2l6ZW9mKGFkZHI0LT5zaW5fYWRkcikpOwogICAgICAgICBhZGRybGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgICAgfSBlbHNlIGlmIChhZiA9PSBBRl9JTkVUNikgewotICAgICAgICBpZiAobGVuICE9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CisgICAgICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAiaW52YWxpZCBsZW5ndGggb2YgcGFja2VkIElQIGFkZHJlc3Mgc3RyaW5nIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7CiAgICAgICAgIGFkZHIuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKLSAgICAgICAgbWVtY3B5KCYoYWRkci5zaW42X2FkZHIpLCBwYWNrZWQsIHNpemVvZihhZGRyLnNpbjZfYWRkcikpOworICAgICAgICBtZW1jcHkoJihhZGRyLnNpbjZfYWRkciksIHBhY2tlZF9pcC5idWYsIHNpemVvZihhZGRyLnNpbjZfYWRkcikpOwogICAgICAgICBhZGRybGVuID0gc2l6ZW9mKGFkZHIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhZik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogCiAgICAgcmV0bGVuID0gc2l6ZW9mKGlwKTsKICAgICByZXQgPSBXU0FBZGRyZXNzVG9TdHJpbmdBKChzdHJ1Y3Qgc29ja2FkZHIqKSZhZGRyLCBhZGRybGVuLCBOVUxMLApAQCAtNTQwMywxMiArNTcwMywxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRkZWZhdWx0dGltZW91dChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPCAwLjApIHsKKyAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPCAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkZWZhdWx0dGltZW91dCk7CisgICAgZWxzZSB7CisgICAgICAgIGRvdWJsZSBzZWNvbmRzID0gX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoZGVmYXVsdHRpbWVvdXQpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY29uZHMpOworICAgIH0KIH0KIAogUHlEb2NfU1RSVkFSKGdldGRlZmF1bHR0aW1lb3V0X2RvYywKQEAgLTU0MjEsMTkgKzU3MjMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrZXRfc2V0ZGVmYXVsdHRpbWVvdXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgZG91YmxlIHRpbWVvdXQ7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CiAKLSAgICBpZiAoYXJnID09IFB5X05vbmUpCi0gICAgICAgIHRpbWVvdXQgPSAtMS4wOwotICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZShhcmcpOwotICAgICAgICBpZiAodGltZW91dCA8IDAuMCkgewotICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCB2YWx1ZSBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChzb2NrZXRfcGFyc2VfdGltZW91dCgmdGltZW91dCwgYXJnKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZGVmYXVsdHRpbWVvdXQgPSB0aW1lb3V0OwogCkBAIC01NzgwLDExICs2MDczLDE1IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHN1cHBvcnRfd3NhX25vX2luaGVyaXQgPT0gLTEpIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxODAwCisgICAgICAgIHN1cHBvcnRfd3NhX25vX2luaGVyaXQgPSBJc1dpbmRvd3M3U1AxT3JHcmVhdGVyKCk7CisjZWxzZQogICAgICAgICBEV09SRCB2ZXJzaW9uID0gR2V0VmVyc2lvbigpOwogICAgICAgICBEV09SRCBtYWpvciA9IChEV09SRClMT0JZVEUoTE9XT1JEKHZlcnNpb24pKTsKICAgICAgICAgRFdPUkQgbWlub3IgPSAoRFdPUkQpSElCWVRFKExPV09SRCh2ZXJzaW9uKSk7CiAgICAgICAgIC8qIG5lZWQgV2luZG93cyA3IFNQMSwgMjAwOCBSMiBTUDEgb3IgbGF0ZXIgKi8KLSAgICAgICAgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IChtYWpvciA+PSA2ICYmIG1pbm9yID49IDEpOworICAgICAgICBzdXBwb3J0X3dzYV9ub19pbmhlcml0ID0gbWFqb3IgPiA2IHx8IChtYWpvciA9PSA2ICYmIG1pbm9yID49IDEpOworI2VuZGlmCiAgICAgfQogI2VuZGlmCiAKQEAgLTYxODMsNiArNjQ4MCw5IEBACiAjaWZkZWYgIFNPX1BSSU9SSVRZCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUFJJT1JJVFkpOwogI2VuZGlmCisjaWZkZWYgIFNPX01BUksKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19NQVJLKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNjMyMCw2ICs2NjIwLDkgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX0xPT1BCQUNLKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX1JFQ1ZfT1dOX01TR1MpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0ZEX0ZSQU1FUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9SQVdfRkRfRlJBTUVTKTsKKyNlbmRpZgogI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0JDTV9ICiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX0JDTSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fVFhfU0VUVVAiLCBUWF9TRVRVUCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaAppbmRleCBiODNmOWFmLi4zY2NlOTI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKQEAgLTE0LDYgKzE0LDEzIEBACiAKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICMgaW5jbHVkZSA8d2luc29jazIuaD4KKy8qIFdpbmRvd3MgJ3N1cHBvcnRzJyBDTVNHX0xFTiwgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgUE9TSVggc3RhbmRhcmQKKyAqIGludGVyZmFjZSBhdCBhbGwsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluY2x1ZGluZyB0aGUgY29kZSB0aGF0CisgKiBhdHRlbXB0cyB0byB1c2UgaXQuCisgKi8KKyMgaWZkZWYgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCisjICB1bmRlZiBDTVNHX0xFTgorIyBlbmRpZgogIyBpbmNsdWRlIDx3czJ0Y3BpcC5oPgogLyogVkM2IGlzIHNoaXBwZWQgd2l0aCBvbGQgcGxhdGZvcm0gaGVhZGVycywgYW5kIGRvZXMgbm90IGhhdmUgTVNUY3BJUC5oCiAgKiBTZXBhcmF0ZSBTREtzIGhhdmUgYWxsIHRoZSBmdW5jdGlvbnMgd2Ugd2FudCwgYnV0IG9sZGVyIG9uZXMgZG9uJ3QgaGF2ZQpAQCAtMTY3LDcgKzE3NCw3IEBACiAgICAgUHlPYmplY3QgKigqZXJyb3JoYW5kbGVyKSh2b2lkKTsgLyogRXJyb3IgaGFuZGxlcjsgY2hlY2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8sIHJldHVybnMgTlVMTCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzIGEgUHl0aG9uIGV4Y2VwdGlvbiAqLwotICAgIGRvdWJsZSBzb2NrX3RpbWVvdXQ7ICAgICAgICAgICAgICAgICAvKiBPcGVyYXRpb24gdGltZW91dCBpbiBzZWNvbmRzOworICAgIF9QeVRpbWVfdCBzb2NrX3RpbWVvdXQ7ICAgICAvKiBPcGVyYXRpb24gdGltZW91dCBpbiBzZWNvbmRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCBtZWFucyBub24tYmxvY2tpbmcgKi8KIH0gUHlTb2NrZXRTb2NrT2JqZWN0OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCmluZGV4IDY4ZWExYjUuLjQ5MzI0ZDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCkBAIC0xMCw2ICsxMCwxMiBAQAogI2luY2x1ZGUgPHNoYWRvdy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlICJjbGluaWMvc3B3ZG1vZHVsZS5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBzcHdkCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jMGI4NDFiOTBhNmEwN2NlXSovCiAKIFB5RG9jX1NUUlZBUihzcHdkX19kb2NfXywKICJUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaXggc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlLlxuXApAQCAtMTA3LDIwICsxMTMsMjUgQEAKIAogI2lmZGVmIEhBVkVfR0VUU1BOQU0KIAotUHlEb2NfU1RSVkFSKHNwd2RfZ2V0c3BuYW1fX2RvY19fLAotImdldHNwbmFtKG5hbWUpIC0+IChzcF9uYW1wLCBzcF9wd2RwLCBzcF9sc3RjaGcsIHNwX21pbiwgc3BfbWF4LFxuXAotICAgICAgICAgICAgICAgICAgICBzcF93YXJuLCBzcF9pbmFjdCwgc3BfZXhwaXJlLCBzcF9mbGFnKVxuXAotUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuXG5cCi1TZWUgc3B3ZC5fX2RvY19fIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorc3B3ZC5nZXRzcG5hbQogCi1zdGF0aWMgUHlPYmplY3QqIHNwd2RfZ2V0c3BuYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGFyZzogdW5pY29kZQorICAgIC8KKworUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuCisKK1NlZSBgaGVscChzcHdkKWAgZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzcHdkX2dldHNwbmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZjZiYmU1MWE0ZWIzYjIxIGlucHV0PWRkODk0MjllNjE2N2EwMGZdKi8KIHsKICAgICBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBzcHdkICpwOwotICAgIFB5T2JqZWN0ICphcmcsICpieXRlcywgKnJldHZhbCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpnZXRzcG5hbSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKQEAgLTEzOSwxNCArMTUwLDE3IEBACiAKICNpZmRlZiBIQVZFX0dFVFNQRU5UCiAKLVB5RG9jX1NUUlZBUihzcHdkX2dldHNwYWxsX19kb2NfXywKLSJnZXRzcGFsbCgpIC0+IGxpc3Rfb2ZfZW50cmllc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBcCi1pbiBhcmJpdHJhcnkgb3JkZXIuXG5cCi1TZWUgc3B3ZC5fX2RvY19fIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorc3B3ZC5nZXRzcGFsbAorCitSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci4KKworU2VlIGBoZWxwKHNwd2QpYCBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNwd2RfZ2V0c3BhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc3B3ZF9nZXRzcGFsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjEyZDhlYzdiZGIyOTYxMiBpbnB1dD1iMmM4NGI3ODU3ZDYyMmJkXSovCiB7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgc3RydWN0IHNwd2QgKnA7CkBAIC0xNzEsMTAgKzE4NSwxMCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgc3B3ZF9tZXRob2RzW10gPSB7CiAjaWZkZWYgSEFWRV9HRVRTUE5BTQotICAgIHsiZ2V0c3BuYW0iLCAgICAgICAgc3B3ZF9nZXRzcG5hbSwgTUVUSF9WQVJBUkdTLCBzcHdkX2dldHNwbmFtX19kb2NfX30sCisgICAgU1BXRF9HRVRTUE5BTV9NRVRIT0RERUYKICNlbmRpZgogI2lmZGVmIEhBVkVfR0VUU1BFTlQKLSAgICB7ImdldHNwYWxsIiwgICAgICAgIHNwd2RfZ2V0c3BhbGwsIE1FVEhfTk9BUkdTLCBzcHdkX2dldHNwYWxsX19kb2NfX30sCisgICAgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKICNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmUuaCBiL01vZHVsZXMvc3JlLmgKaW5kZXggNDJmZTI4ZC4uYjYzMjE2NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmUuaAorKysgYi9Nb2R1bGVzL3NyZS5oCkBAIC0xOCw4ICsxOCwxMCBAQAogI2RlZmluZSBTUkVfQ09ERSBQeV9VQ1M0CiAjaWYgU0laRU9GX1NJWkVfVCA+IDQKICMgZGVmaW5lIFNSRV9NQVhSRVBFQVQgKH4oU1JFX0NPREUpMCkKKyMgZGVmaW5lIFNSRV9NQVhHUk9VUFMgKCh+KFNSRV9DT0RFKTApIC8gMikKICNlbHNlCiAjIGRlZmluZSBTUkVfTUFYUkVQRUFUICgoU1JFX0NPREUpUFlfU1NJWkVfVF9NQVgpCisjIGRlZmluZSBTUkVfTUFYR1JPVVBTICgoU1JFX0NPREUpUFlfU1NJWkVfVF9NQVggLyBTSVpFT0ZfU0laRV9UIC8gMikKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC01Miw5ICs1NCw2IEBACiAKIHR5cGVkZWYgdW5zaWduZWQgaW50ICgqU1JFX1RPTE9XRVJfSE9PSykodW5zaWduZWQgaW50IGNoKTsKIAotLyogRklYTUU6IDxmbD4gc2hvdWxkbid0IGJlIGEgY29uc3RhbnQsIHJlYWxseS4uLiAqLwotI2RlZmluZSBTUkVfTUFSS19TSVpFIDIwMAotCiB0eXBlZGVmIHN0cnVjdCBTUkVfUkVQRUFUX1QgewogICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgU1JFX0NPREUqIHBhdHRlcm47IC8qIHBvaW50cyB0byBSRVBFQVQgb3BlcmF0b3IgYXJndW1lbnRzICovCkBAIC03Niw3ICs3NSw3IEBACiAgICAgLyogcmVnaXN0ZXJzICovCiAgICAgUHlfc3NpemVfdCBsYXN0aW5kZXg7CiAgICAgUHlfc3NpemVfdCBsYXN0bWFyazsKLSAgICB2b2lkKiBtYXJrW1NSRV9NQVJLX1NJWkVdOworICAgIHZvaWQqKiBtYXJrOwogICAgIC8qIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzdHVmZiAqLwogICAgIGNoYXIqIGRhdGFfc3RhY2s7CiAgICAgc2l6ZV90IGRhdGFfc3RhY2tfc2l6ZTsKQEAgLTg1LDcgKzg0LDcgQEAKICAgICAvKiBjdXJyZW50IHJlcGVhdCBjb250ZXh0ICovCiAgICAgU1JFX1JFUEVBVCAqcmVwZWF0OwogICAgIC8qIGhvb2tzICovCi0gICAgU1JFX1RPTE9XRVJfSE9PSyBsb3dlcjsKKyAgICBTUkVfVE9MT1dFUl9IT09LIGxvd2VyLCB1cHBlcjsKIH0gU1JFX1NUQVRFOwogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaCBiL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oCmluZGV4IDU5NDBkNWEuLjY2MzI0NDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oCisrKyBiL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKiBTZWUgdGhlIF9zcmUuYyBmaWxlIGZvciBpbmZvcm1hdGlvbiBvbiB1c2FnZSBhbmQgcmVkaXN0cmlidXRpb24uCiAgKi8KIAotI2RlZmluZSBTUkVfTUFHSUMgMjAwMzEwMTcKKyNkZWZpbmUgU1JFX01BR0lDIDIwMTQwOTE3CiAjZGVmaW5lIFNSRV9PUF9GQUlMVVJFIDAKICNkZWZpbmUgU1JFX09QX1NVQ0NFU1MgMQogI2RlZmluZSBTUkVfT1BfQU5ZIDIKQEAgLTQ0LDYgKzQ0LDcgQEAKICNkZWZpbmUgU1JFX09QX1JFUEVBVF9PTkUgMjkKICNkZWZpbmUgU1JFX09QX1NVQlBBVFRFUk4gMzAKICNkZWZpbmUgU1JFX09QX01JTl9SRVBFQVRfT05FIDMxCisjZGVmaW5lIFNSRV9PUF9SQU5HRV9JR05PUkUgMzIKICNkZWZpbmUgU1JFX0FUX0JFR0lOTklORyAwCiAjZGVmaW5lIFNSRV9BVF9CRUdJTk5JTkdfTElORSAxCiAjZGVmaW5lIFNSRV9BVF9CRUdJTk5JTkdfU1RSSU5HIDIKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlX2xpYi5oIGIvTW9kdWxlcy9zcmVfbGliLmgKaW5kZXggMTA0OWRlNC4uMTI4YzcxZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmVfbGliLmgKKysrIGIvTW9kdWxlcy9zcmVfbGliLmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogfQogCiBMT0NBTChpbnQpCi1TUkUoY2hhcnNldCkoU1JFX0NPREUqIHNldCwgU1JFX0NPREUgY2gpCitTUkUoY2hhcnNldCkoU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NPREUqIHNldCwgU1JFX0NPREUgY2gpCiB7CiAgICAgLyogY2hlY2sgaWYgY2hhcmFjdGVyIGlzIGEgbWVtYmVyIG9mIHRoZSBnaXZlbiBzZXQgKi8KIApAQCAtMTQyLDYgKzE0MiwyMCBAQAogICAgICAgICAgICAgc2V0ICs9IDI7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIFNSRV9PUF9SQU5HRV9JR05PUkU6CisgICAgICAgICAgICAvKiA8UkFOR0VfSUdOT1JFPiA8bG93ZXI+IDx1cHBlcj4gKi8KKyAgICAgICAgeworICAgICAgICAgICAgU1JFX0NPREUgdWNoOworICAgICAgICAgICAgLyogY2ggaXMgYWxyZWFkeSBsb3dlciBjYXNlZCAqLworICAgICAgICAgICAgaWYgKHNldFswXSA8PSBjaCAmJiBjaCA8PSBzZXRbMV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIG9rOworICAgICAgICAgICAgdWNoID0gc3RhdGUtPnVwcGVyKGNoKTsKKyAgICAgICAgICAgIGlmIChzZXRbMF0gPD0gdWNoICYmIHVjaCA8PSBzZXRbMV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIG9rOworICAgICAgICAgICAgc2V0ICs9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU1JFX09QX05FR0FURToKICAgICAgICAgICAgIG9rID0gIW9rOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTMsNyArMjA3LDcgQEAKICAgICBjYXNlIFNSRV9PUF9JTjoKICAgICAgICAgLyogcmVwZWF0ZWQgc2V0ICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIElOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiBTUkUoY2hhcnNldCkocGF0dGVybiArIDIsICpwdHIpKQorICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIFNSRShjaGFyc2V0KShzdGF0ZSwgcGF0dGVybiArIDIsICpwdHIpKQogICAgICAgICAgICAgcHRyKys7CiAgICAgICAgIGJyZWFrOwogCkBAIC02MjgsNyArNjQyLDggQEAKICAgICAgICAgICAgIC8qIG1hdGNoIHNldCBtZW1iZXIgKG9yIG5vbl9tZW1iZXIpICovCiAgICAgICAgICAgICAvKiA8SU4+IDxza2lwPiA8c2V0PiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8SU5cbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIVNSRShjaGFyc2V0KShjdHgtPnBhdHRlcm4gKyAxLCAqY3R4LT5wdHIpKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fAorICAgICAgICAgICAgICAgICFTUkUoY2hhcnNldCkoc3RhdGUsIGN0eC0+cGF0dGVybiArIDEsICpjdHgtPnB0cikpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4gKz0gY3R4LT5wYXR0ZXJuWzBdOwogICAgICAgICAgICAgY3R4LT5wdHIrKzsKQEAgLTY1Nyw3ICs2NzIsNyBAQAogICAgICAgICBjYXNlIFNSRV9PUF9JTl9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTl9JR05PUkVcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQKLSAgICAgICAgICAgICAgICB8fCAhU1JFKGNoYXJzZXQpKGN0eC0+cGF0dGVybisxLAorICAgICAgICAgICAgICAgIHx8ICFTUkUoY2hhcnNldCkoc3RhdGUsIGN0eC0+cGF0dGVybisxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKXN0YXRlLT5sb3dlcigqY3R4LT5wdHIpKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07CkBAIC02ODgsNyArNzAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVyblsxXSA9PSBTUkVfT1BfSU4gJiYKICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgIVNSRShjaGFyc2V0KShjdHgtPnBhdHRlcm4gKyAzLCAoU1JFX0NPREUpICpjdHgtPnB0cikpKQorICAgICAgICAgICAgICAgICAgICAgIVNSRShjaGFyc2V0KShzdGF0ZSwgY3R4LT5wYXR0ZXJuICsgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKSAqY3R4LT5wdHIpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwogICAgICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9CUkFOQ0gsIGp1bXBfYnJhbmNoLCBjdHgtPnBhdHRlcm4rMSk7CkBAIC0xMzE4LDcgKzEzMzQsNyBAQAogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgY2hhcmFjdGVyIGZyb20gYSBrbm93biBzZXQgKi8KICAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFKGNoYXJzZXQpKGNoYXJzZXQsICpwdHIpKQorICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFKGNoYXJzZXQpKHN0YXRlLCBjaGFyc2V0LCAqcHRyKSkKICAgICAgICAgICAgICAgICBwdHIrKzsKICAgICAgICAgICAgIGlmIChwdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCmluZGV4IGNkYjRmZmMuLmY4NGNjNzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKQEAgLTg0LDkgKzg0LDYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9DTEFTUyIsIENsYXNzQmxvY2spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX01PRFVMRSIsIE1vZHVsZUJsb2NrKTsKIAotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9QVF9JTVBPUlRfU1RBUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT1BUX1RPUExFVkVMKTsKLQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0FMKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHTE9CQUxfRVhQTElDSVQpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdMT0JBTF9JTVBMSUNJVCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IGQ3MWIzYWMuLmQyY2FhY2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0yNywyOCArMjcsMTMgQEAKICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlICJweXRocmVhZC5oIgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vKiBUaGVzZSBvdmVycmlkZXMgbm90IG5lZWRlZCBmb3IgV2luMzIgKi8KLSNkZWZpbmUgdGltZXpvbmUgX3RpbWV6b25lCi0jZGVmaW5lIHR6bmFtZSBfdHpuYW1lCi0jZGVmaW5lIGRheWxpZ2h0IF9kYXlsaWdodAotI2VuZGlmIC8qIF9fQk9STEFORENfXyAqLwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICNlbmRpZiAvKiAhX19XQVRDT01DX18gfHwgX19RTlhfXyAqLwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNlbmRpZgotCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIGludCBmbG9hdHNsZWVwKGRvdWJsZSk7CitzdGF0aWMgaW50IHB5c2xlZXAoX1B5VGltZV90KTsKIHN0YXRpYyBQeU9iamVjdCogZmxvYXR0aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOwogCi0jaWZkZWYgTVNfV0lORE9XUwotc3RhdGljIE9TVkVSU0lPTklORk9FWCB3aW52ZXI7Ci0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKQEAgLTkyLDEyICs3NywxMiBAQAogfQogI2VuZGlmIC8qIEhBVkVfQ0xPQ0sgKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQorI2lmZGVmIE1TX1dJTkRPV1MKICNkZWZpbmUgV0lOMzJfUEVSRl9DT1VOVEVSCiAvKiBXaW4zMiBoYXMgYmV0dGVyIGNsb2NrIHJlcGxhY2VtZW50OyB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiwgZHVlIHRvIE1hcmsKICAgIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KLXN0YXRpYyBpbnQKLXdpbl9wZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgUHlPYmplY3QgKipyZXN1bHQpCitzdGF0aWMgUHlPYmplY3QqCit3aW5fcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CiAgICAgc3RhdGljIExPTkdMT05HIGNwdV9mcmVxdWVuY3kgPSAwOwogICAgIHN0YXRpYyBMT05HTE9ORyBjdHJTdGFydDsKQEAgLTEwOSwxMCArOTQsOCBAQAogICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKICAgICAgICAgY3RyU3RhcnQgPSBub3cuUXVhZFBhcnQ7CiAgICAgICAgIGlmICghUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcSkgfHwgZnJlcS5RdWFkUGFydCA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBVbmxpa2VseSB0byBoYXBwZW4gLSB0aGlzIHdvcmtzIG9uIGFsbCBpbnRlbAotICAgICAgICAgICAgICAgbWFjaGluZXMgYXQgbGVhc3QhICBSZXZlcnQgdG8gY2xvY2soKSAqLwotICAgICAgICAgICAgKnJlc3VsdCA9IE5VTEw7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGNwdV9mcmVxdWVuY3kgPSBmcmVxLlF1YWRQYXJ0OwogICAgIH0KQEAgLTEyNCwxMCArMTA3LDkgQEAKICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CiAgICAgfQotICAgICpyZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIChkb3VibGUpY3B1X2ZyZXF1ZW5jeSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkaWZmIC8gKGRvdWJsZSljcHVfZnJlcXVlbmN5KTsKIH0KLSNlbmRpZgorI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLwogCiAjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoSEFWRV9DTE9DSykKICNkZWZpbmUgUFlDTE9DSwpAQCAtMTM1LDExICsxMTcsMTAgQEAKIHB5Y2xvY2soX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKICNpZmRlZiBXSU4zMl9QRVJGX0NPVU5URVIKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCi0gICAgICAgIHJldHVybiByZXM7Ci0jZW5kaWYKKyAgICByZXR1cm4gd2luX3BlcmZfY291bnRlcihpbmZvKTsKKyNlbHNlCiAgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CisjZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE2OSw3ICsxNTAsNyBAQAogCiAgICAgcmV0ID0gY2xvY2tfZ2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKICAgICBpZiAocmV0ICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKQEAgLTE4NSwyMiArMTY2LDIyIEBACiB7CiAgICAgaW50IGNsa19pZDsKICAgICBQeU9iamVjdCAqb2JqOwotICAgIHRpbWVfdCB0dl9zZWM7Ci0gICAgbG9uZyB0dl9uc2VjOworICAgIF9QeVRpbWVfdCB0OwogICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKICAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjbG9ja19zZXR0aW1lIiwgJmNsa19pZCwgJm9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZ0dl9zZWMsICZ0dl9uc2VjLCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0LCBvYmosIF9QeVRpbWVfUk9VTkRfRkxPT1IpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdHAudHZfc2VjID0gdHZfc2VjOwotICAgIHRwLnR2X25zZWMgPSB0dl9uc2VjOworCisgICAgaWYgKF9QeVRpbWVfQXNUaW1lc3BlYyh0LCAmdHApID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldCA9IGNsb2NrX3NldHRpbWUoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CiAgICAgaWYgKHJldCAhPSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0yMjMsNyArMjA0LDcgQEAKIAogICAgIHJldCA9IGNsb2NrX2dldHJlcygoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKICAgICBpZiAocmV0ICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMjM3LDE3ICsyMTgsMTcgQEAKICNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9zbGVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit0aW1lX3NsZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQogewotICAgIGRvdWJsZSBzZWNzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDpzbGVlcCIsICZzZWNzKSkKKyAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmc2Vjcywgb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2VjcyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic2xlZXAgbGVuZ3RoIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZmxvYXRzbGVlcChzZWNzKSAhPSAwKQorICAgIGlmIChweXNsZWVwKHNlY3MpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTM0MSw3ICszMjIsNyBAQAogICAgICAgICB3aGVudCA9IHRpbWUoTlVMTCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50LCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50LCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAqcHdoZW4gPSB3aGVudDsKQEAgLTYyOSwyMSArNjEwLDE1IEBACiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfV0NTRlRJTUUpCiAgICAgLyogY2hlY2sgdGhhdCB0aGUgZm9ybWF0IHN0cmluZyBjb250YWlucyBvbmx5IHZhbGlkIGRpcmVjdGl2ZXMgKi8KLSAgICBmb3Iob3V0YnVmID0gc3RyY2hyKGZtdCwgJyUnKTsKKyAgICBmb3IgKG91dGJ1ZiA9IHN0cmNocihmbXQsICclJyk7CiAgICAgICAgIG91dGJ1ZiAhPSBOVUxMOwogICAgICAgICBvdXRidWYgPSBzdHJjaHIob3V0YnVmKzIsICclJykpCiAgICAgewotICAgICAgICBpZiAob3V0YnVmWzFdPT0nIycpCisgICAgICAgIGlmIChvdXRidWZbMV0gPT0gJyMnKQogICAgICAgICAgICAgKytvdXRidWY7IC8qIG5vdCBkb2N1bWVudGVkIGJ5IHB5dGhvbiwgKi8KLSAgICAgICAgaWYgKG91dGJ1ZlsxXT09J1wwJyB8fAotICAgICAgICAgICAgIXN0cmNocigiYUFiQmNkSElqbU1wU1V3V3hYeVl6WiUiLCBvdXRidWZbMV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZm9ybWF0IHN0cmluZyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZvcm1hdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoKG91dGJ1ZlsxXSA9PSAneScpICYmIGJ1Zi50bV95ZWFyIDwgMCkKLSAgICAgICAgeworICAgICAgICBpZiAob3V0YnVmWzFdID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKChvdXRidWZbMV0gPT0gJ3knKSAmJiBidWYudG1feWVhciA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCAleSByZXF1aXJlcyB5ZWFyID49IDE5MDAgb24gV2luZG93cyIpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZvcm1hdCk7CkBAIC02NTEsNyArNjI2LDcgQEAKICAgICAgICAgfQogICAgIH0KICNlbGlmIChkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoc3VuKSkgJiYgZGVmaW5lZChIQVZFX1dDU0ZUSU1FKQotICAgIGZvcihvdXRidWYgPSB3Y3NjaHIoZm10LCAnJScpOworICAgIGZvciAob3V0YnVmID0gd2NzY2hyKGZtdCwgJyUnKTsKICAgICAgICAgb3V0YnVmICE9IE5VTEw7CiAgICAgICAgIG91dGJ1ZiA9IHdjc2NocihvdXRidWYrMiwgJyUnKSkKICAgICB7CkBAIC02NzMsMTcgKzY0OCwyNCBAQAogICAgICAqIHdpbGwgYmUgYWhlYWQgb2YgdGltZS4uLgogICAgICAqLwogICAgIGZvciAoaSA9IDEwMjQ7IDsgaSArPSBpKSB7Ci0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIGRlZmluZWQoX19TVERDX1NFQ1VSRV9MSUJfXykKLSAgICAgICAgaW50IGVycjsKLSNlbmRpZgogICAgICAgICBvdXRidWYgPSAodGltZV9jaGFyICopUHlNZW1fTWFsbG9jKGkqc2l6ZW9mKHRpbWVfY2hhcikpOwogICAgICAgICBpZiAob3V0YnVmID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBidWZsZW4gPSBmb3JtYXRfdGltZShvdXRidWYsIGksIGZtdCwgJmJ1Zik7CiAjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIGRlZmluZWQoX19TVERDX1NFQ1VSRV9MSUJfXykKLSAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGVycm5vID0gMDsKKyNlbmRpZgorICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGJ1ZmxlbiA9IGZvcm1hdF90aW1lKG91dGJ1ZiwgaSwgZm10LCAmYnVmKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgZGVmaW5lZChfX1NURENfU0VDVVJFX0xJQl9fKQorICAgICAgICAvKiBWaXN1YWxTdHVkaW8gLk5FVCAyMDA1IGRvZXMgdGhpcyBwcm9wZXJseSAqLworICAgICAgICBpZiAoYnVmbGVuID09IDAgJiYgZXJybm8gPT0gRUlOVkFMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICBpZiAoYnVmbGVuID4gMCB8fCBpID49IDI1NiAqIGZtdGxlbikgewogICAgICAgICAgICAgLyogSWYgdGhlIGJ1ZmZlciBpcyAyNTYgdGltZXMgYXMgbG9uZyBhcyB0aGUgZm9ybWF0LApAQCAtNzAxLDEzICs2ODMsNiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBkZWZpbmVkKF9fU1REQ19TRUNVUkVfTElCX18pCi0gICAgICAgIC8qIFZpc3VhbFN0dWRpbyAuTkVUIDIwMDUgZG9lcyB0aGlzIHByb3Blcmx5ICovCi0gICAgICAgIGlmIChidWZsZW4gPT0gMCAmJiBlcnIgPT0gRUlOVkFMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZm9ybWF0IHN0cmluZyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH0KICNpZmRlZiBIQVZFX1dDU0ZUSU1FCiAgICAgUHlNZW1fRnJlZShmb3JtYXQpOwpAQCAtOTA1LDEyMiArODgwLDE3IEBACiBzaG91bGQgbm90IGJlIHJlbGllZCBvbi4iKTsKICNlbmRpZiAvKiBIQVZFX1dPUktJTkdfVFpTRVQgKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0FQUExFX18pIFwKLSAgICB8fCAoZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIFwKLSAgICAgICAgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKSkKLSNkZWZpbmUgUFlNT05PVE9OSUMKLSNlbmRpZgotCi0jaWZkZWYgUFlNT05PVE9OSUMKLXN0YXRpYyBQeU9iamVjdCoKK3N0YXRpYyBQeU9iamVjdCAqCiBweW1vbm90b25pYyhfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBzdGF0aWMgVUxPTkdMT05HICgqR2V0VGlja0NvdW50NjQpICh2b2lkKSA9IE5VTEw7Ci0gICAgc3RhdGljIFVMT05HTE9ORyAoQ0FMTEJBQ0sgKlB5X0dldFRpY2tDb3VudDY0KSh2b2lkKTsKLSAgICBzdGF0aWMgaW50IGhhc19nZXRpY2tjb3VudDY0ID0gLTE7Ci0gICAgZG91YmxlIHJlc3VsdDsKLQotICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCA9PSAtMSkgewotICAgICAgICAvKiBHZXRUaWNrQ291bnQ2NCgpIHdhcyBhZGRlZCB0byBXaW5kb3dzIFZpc3RhICovCi0gICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikgewotICAgICAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKLSAgICAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOwotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0VGlja0NvdW50NjQgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRUaWNrQ291bnQ2NCIpOwotICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAoUHlfR2V0VGlja0NvdW50NjQgIT0gTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAwOwotICAgIH0KLQotICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkgewotICAgICAgICBVTE9OR0xPTkcgdGlja3M7Ci0gICAgICAgIHRpY2tzID0gUHlfR2V0VGlja0NvdW50NjQoKTsKLSAgICAgICAgcmVzdWx0ID0gKGRvdWJsZSl0aWNrcyAqIDFlLTM7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdGF0aWMgRFdPUkQgbGFzdF90aWNrcyA9IDA7Ci0gICAgICAgIHN0YXRpYyBEV09SRCBuX292ZXJmbG93ID0gMDsKLSAgICAgICAgRFdPUkQgdGlja3M7Ci0KLSAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKLSAgICAgICAgaWYgKHRpY2tzIDwgbGFzdF90aWNrcykKLSAgICAgICAgICAgIG5fb3ZlcmZsb3crKzsKLSAgICAgICAgbGFzdF90aWNrcyA9IHRpY2tzOwotCi0gICAgICAgIHJlc3VsdCA9IGxkZXhwKG5fb3ZlcmZsb3csIDMyKTsKLSAgICAgICAgcmVzdWx0ICs9IHRpY2tzOwotICAgICAgICByZXN1bHQgKj0gMWUtMzsKLSAgICB9Ci0KLSAgICBpZiAoaW5mbykgewotICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKLSAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOwotICAgICAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpCi0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50KCkiOwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOwotICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7Ci0gICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyZXN1bHQpOwotCi0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKLSAgICB1aW50NjRfdCB0aW1lOwotICAgIGRvdWJsZSBzZWNzOwotCi0gICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKLSAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90Ci0gICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLwotICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKLSAgICB9Ci0KLSAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7Ci0gICAgc2VjcyA9IChkb3VibGUpdGltZSAqIHRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OwotICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKLSAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7Ci0gICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOwotICAgIH0KLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOwotCi0jZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKQotICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKLSNpZmRlZiBDTE9DS19ISUdIUkVTCi0gICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7Ci0gICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7Ci0jZWxzZQotICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7Ci0gICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKLSNlbmRpZgotCi0gICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIF9QeVRpbWVfdCB0OworICAgIGRvdWJsZSBkOworICAgIGlmIChfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrV2l0aEluZm8oJnQsIGluZm8pIDwgMCkgeworICAgICAgICBhc3NlcnQoaW5mbyAhPSBOVUxMKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgaWYgKGluZm8pIHsKLSAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKLSAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKLSAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7Ci0gICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQotICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OwotICAgIH0KLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKLSNlbmRpZgorICAgIGQgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0KTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAzMyw0MCArOTAzLDE1IEBACiAibW9ub3RvbmljKCkgLT4gZmxvYXRcblwKIFxuXAogTW9ub3RvbmljIGNsb2NrLCBjYW5ub3QgZ28gYmFja3dhcmQuIik7Ci0jZW5kaWYgICAvKiBQWU1PTk9UT05JQyAqLwogCiBzdGF0aWMgUHlPYmplY3QqCiBwZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChQWU1PTk9UT05JQykKLSAgICBQeU9iamVjdCAqcmVzOwotI2VuZGlmCi0jaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpCi0gICAgc3RhdGljIGludCB1c2VfcGVyZl9jb3VudGVyID0gMTsKLSNlbmRpZgotI2lmZGVmIFBZTU9OT1RPTklDCi0gICAgc3RhdGljIGludCB1c2VfbW9ub3RvbmljID0gMTsKLSNlbmRpZgotCiAjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCi0gICAgaWYgKHVzZV9wZXJmX2NvdW50ZXIpIHsKLSAgICAgICAgaWYgKHdpbl9wZXJmX2NvdW50ZXIoaW5mbywgJnJlcykgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIHVzZV9wZXJmX2NvdW50ZXIgPSAwOwotICAgIH0KKyAgICByZXR1cm4gd2luX3BlcmZfY291bnRlcihpbmZvKTsKKyNlbHNlCisgICAgcmV0dXJuIHB5bW9ub3RvbmljKGluZm8pOwogI2VuZGlmCi0KLSNpZmRlZiBQWU1PTk9UT05JQwotICAgIGlmICh1c2VfbW9ub3RvbmljKSB7Ci0gICAgICAgIHJlcyA9IHB5bW9ub3RvbmljKGluZm8pOwotICAgICAgICBpZiAocmVzICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB1c2VfbW9ub3RvbmljID0gMDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiBmbG9hdHRpbWUoaW5mbyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjMzLDEwICsxMDc4LDggQEAKICAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgImNsb2NrIikgPT0gMCkKICAgICAgICAgb2JqID0gcHljbG9jaygmaW5mbyk7CiAjZW5kaWYKLSNpZmRlZiBQWU1PTk9UT05JQwogICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW9ub3RvbmljIikgPT0gMCkKICAgICAgICAgb2JqID0gcHltb25vdG9uaWMoJmluZm8pOwotI2VuZGlmCiAgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwZXJmX2NvdW50ZXIiKSA9PSAwKQogICAgICAgICBvYmogPSBwZXJmX2NvdW50ZXIoJmluZm8pOwogICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicHJvY2Vzc190aW1lIikgPT0gMCkKQEAgLTE0MTMsNyArMTI1Niw3IEBACiAgICAgeyJjbG9ja19zZXR0aW1lIiwgICB0aW1lX2Nsb2NrX3NldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfc2V0dGltZV9kb2N9LAogICAgIHsiY2xvY2tfZ2V0cmVzIiwgICAgdGltZV9jbG9ja19nZXRyZXMsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0cmVzX2RvY30sCiAjZW5kaWYKLSAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfVkFSQVJHUywgc2xlZXBfZG9jfSwKKyAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfTywgc2xlZXBfZG9jfSwKICAgICB7ImdtdGltZSIsICAgICAgICAgIHRpbWVfZ210aW1lLCBNRVRIX1ZBUkFSR1MsIGdtdGltZV9kb2N9LAogICAgIHsibG9jYWx0aW1lIiwgICAgICAgdGltZV9sb2NhbHRpbWUsIE1FVEhfVkFSQVJHUywgbG9jYWx0aW1lX2RvY30sCiAgICAgeyJhc2N0aW1lIiwgICAgICAgICB0aW1lX2FzY3RpbWUsIE1FVEhfVkFSQVJHUywgYXNjdGltZV9kb2N9LApAQCAtMTQyOCw5ICsxMjcxLDcgQEAKICNpZmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKICAgICB7InR6c2V0IiwgICAgICAgICAgIHRpbWVfdHpzZXQsIE1FVEhfTk9BUkdTLCB0enNldF9kb2N9LAogI2VuZGlmCi0jaWZkZWYgUFlNT05PVE9OSUMKICAgICB7Im1vbm90b25pYyIsICAgICAgIHRpbWVfbW9ub3RvbmljLCBNRVRIX05PQVJHUywgbW9ub3RvbmljX2RvY30sCi0jZW5kaWYKICAgICB7InByb2Nlc3NfdGltZSIsICAgIHRpbWVfcHJvY2Vzc190aW1lLCBNRVRIX05PQVJHUywgcHJvY2Vzc190aW1lX2RvY30sCiAgICAgeyJwZXJmX2NvdW50ZXIiLCAgICB0aW1lX3BlcmZfY291bnRlciwgTUVUSF9OT0FSR1MsIHBlcmZfY291bnRlcl9kb2N9LAogICAgIHsiZ2V0X2Nsb2NrX2luZm8iLCAgdGltZV9nZXRfY2xvY2tfaW5mbywgTUVUSF9WQVJBUkdTLCBnZXRfY2xvY2tfaW5mb19kb2N9LApAQCAtMTUxMiwxNSArMTM1Myw2IEBACiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKLSAgICAgICAgaWYgKCFHZXRWZXJzaW9uRXgoKE9TVkVSU0lPTklORk8qKSZ3aW52ZXIpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7CiAjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQpAQCAtMTUzNiwxMDkgKzEzNjgsOTMgQEAKIHN0YXRpYyBQeU9iamVjdCoKIGZsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewotICAgIF9QeVRpbWVfdGltZXZhbCB0OwotI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQotICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKLSAgICBpbnQgcmV0OwotCi0gICAgLyogX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBkb2VzIG5vdCB1c2UgY2xvY2tfZ2V0dGltZSgpCi0gICAgICAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIHRvIGxpbmsgUHl0aG9uIHRvIHRoZSBydCAocmVhbC10aW1lKQotICAgICAgIGxpYnJhcnksIGF0IGxlYXN0IG9uIExpbnV4ICovCi0gICAgcmV0ID0gY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRwKTsKLSAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7Ci0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSI7Ci0gICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKENMT0NLX1JFQUxUSU1FLCAmcmVzKSA9PSAwKQotICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIF9QeVRpbWVfdCB0OworICAgIGRvdWJsZSBkOworICAgIGlmIChfUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8oJnQsIGluZm8pIDwgMCkgeworICAgICAgICBhc3NlcnQoaW5mbyAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2VuZGlmCi0gICAgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygmdCwgaW5mbyk7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKXQudHZfc2VjICsgdC50dl91c2VjICogMWUtNik7CisgICAgZCA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHQpOworICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZCk7CiB9CiAKIAotLyogSW1wbGVtZW50IGZsb2F0c2xlZXAoKSBmb3IgdmFyaW91cyBwbGF0Zm9ybXMuCisvKiBJbXBsZW1lbnQgcHlzbGVlcCgpIGZvciB2YXJpb3VzIHBsYXRmb3Jtcy4KICAgIFdoZW4gaW50ZXJydXB0ZWQgKG9yIHdoZW4gYW5vdGhlciBlcnJvciBvY2N1cnMpLCByZXR1cm4gLTEgYW5kCiAgICBzZXQgYW4gZXhjZXB0aW9uOyBlbHNlIHJldHVybiAwLiAqLwogCiBzdGF0aWMgaW50Ci1mbG9hdHNsZWVwKGRvdWJsZSBzZWNzKQorcHlzbGVlcChfUHlUaW1lX3Qgc2VjcykKIHsKLS8qIFhYWCBTaG91bGQgdGVzdCBmb3IgTVNfV0lORE9XUyBmaXJzdCEgKi8KLSNpZiBkZWZpbmVkKEhBVkVfU0VMRUNUKSAmJiAhZGVmaW5lZChfX0VNWF9fKQotICAgIHN0cnVjdCB0aW1ldmFsIHQ7Ci0gICAgZG91YmxlIGZyYWM7Ci0gICAgaW50IGVycjsKLQotICAgIGZyYWMgPSBmbW9kKHNlY3MsIDEuMCk7Ci0gICAgc2VjcyA9IGZsb29yKHNlY3MpOwotICAgIHQudHZfc2VjID0gKGxvbmcpc2VjczsKLSAgICB0LnR2X3VzZWMgPSAobG9uZykoZnJhYyoxMDAwMDAwLjApOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBlcnIgPSBzZWxlY3QoMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgJnQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKGVyciAhPSAwKSB7Ci0jaWZkZWYgRUlOVFIKLSAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICBfUHlUaW1lX3QgZGVhZGxpbmUsIG1vbm90b25pYzsKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVvdXQ7CisgICAgaW50IGVyciA9IDA7CisjZWxzZQorICAgIF9QeVRpbWVfdCBtaWxsaXNlY3M7CisgICAgdW5zaWduZWQgbG9uZyB1bF9taWxsaXM7CisgICAgRFdPUkQgcmM7CisgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudDsKICNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisKKyAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHNlY3M7CisKKyAgICBkbyB7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHNlY3MsICZ0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVyciA9IHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdGltZW91dCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKGVyciA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICB9Ci0jZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBkZWxheSgoaW50KShzZWNzICogMTAwMCArIDAuNSkpOyAgLyogZGVsYXkoKSB1c2VzIG1pbGxpc2Vjb25kcyAqLwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgewotICAgICAgICBkb3VibGUgbWlsbGlzZWNzID0gc2VjcyAqIDEwMDAuMDsKLSAgICAgICAgdW5zaWduZWQgbG9uZyB1bF9taWxsaXM7Ci0KKyNlbHNlCisgICAgICAgIG1pbGxpc2VjcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoc2VjcywgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKICAgICAgICAgaWYgKG1pbGxpc2VjcyA+IChkb3VibGUpVUxPTkdfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xlZXAgbGVuZ3RoIGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKwogICAgICAgICAvKiBBbGxvdyBzbGVlcCgwKSB0byBtYWludGFpbiB3aW4zMiBzZW1hbnRpY3MsIGFuZCBhcyBkZWNyZWVkCiAgICAgICAgICAqIGJ5IEd1aWRvLCBvbmx5IHRoZSBtYWluIHRocmVhZCBjYW4gYmUgaW50ZXJydXB0ZWQuCiAgICAgICAgICAqLwogICAgICAgICB1bF9taWxsaXMgPSAodW5zaWduZWQgbG9uZyltaWxsaXNlY3M7Ci0gICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpCisgICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgICAgIFNsZWVwKHVsX21pbGxpcyk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgRFdPUkQgcmM7Ci0gICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKLSAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKLSAgICAgICAgICAgIHJjID0gV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgdWxfbWlsbGlzLCBGQUxTRSk7Ci0gICAgICAgICAgICBpZiAocmMgPT0gV0FJVF9PQkpFQ1RfMCkgewotICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlRSOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIHVsX21pbGxpcywgRkFMU0UpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0KLSNlbHNlCi0gICAgLyogWFhYIENhbid0IGludGVycnVwdCB0aGlzIHNsZWVwICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHNsZWVwKChpbnQpc2Vjcyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAocmMgIT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICAgICAgLyogc2xlZXAgd2FzIGludGVycnVwdGVkIGJ5IFNJR0lOVCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgbW9ub3RvbmljID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICBzZWNzID0gZGVhZGxpbmUgLSBtb25vdG9uaWM7CisgICAgICAgIGlmIChzZWNzIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiByZXRyeSB3aXRoIHRoZSByZWNvbXB1dGVkIGRlbGF5ICovCisgICAgfSB3aGlsZSAoMSk7CisKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvdGthcHBpbml0LmMgYi9Nb2R1bGVzL3RrYXBwaW5pdC5jCmluZGV4IDJlZDg1OTQuLjc2MTZkOWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGthcHBpbml0LmMKKysrIGIvTW9kdWxlcy90a2FwcGluaXQuYwpAQCAtMjYsOSArMjYsNiBAQAogaW50CiBUY2xfQXBwSW5pdChUY2xfSW50ZXJwICppbnRlcnApCiB7Ci0jaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwotICAgIFRrX1dpbmRvdyBtYWluX3dpbmRvdzsKLSNlbmRpZgogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3NraXBfdGtfaW5pdDsKICNpZmRlZiBUS0lOVEVSX1BST1RFQ1RfTE9BRFRLCiAgICAgY29uc3QgY2hhciAqX3RraW50ZXJfdGtfZmFpbGVkOwpAQCAtMTEzLDI5ICsxMTAsMTMgQEAKICAgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKICAgICB9CiAKLSNpZmRlZiBXSVRIX01PUkVCVVRUT05TCi0gICAgbWFpbl93aW5kb3cgPSBUa19NYWluV2luZG93KGludGVycCk7Ci0jZWxzZQogICAgIFRrX01haW5XaW5kb3coaW50ZXJwKTsKLSNlbmRpZgogCiAjaWZkZWYgVEtfQVFVQQogICAgIFRrTWFjT1NYSW5pdEFwcGxlRXZlbnRzKGludGVycCk7CiAgICAgVGtNYWNPU1hJbml0TWVudXMoaW50ZXJwKTsKICNlbmRpZgogCi0jaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwotICAgIHsKLSAgICAgICAgZXh0ZXJuIFRjbF9DbWRQcm9jIHN0dWRCdXR0b25DbWQ7Ci0gICAgICAgIGV4dGVybiBUY2xfQ21kUHJvYyB0cmlCdXR0b25DbWQ7Ci0KLSAgICAgICAgVGNsX0NyZWF0ZUNvbW1hbmQoaW50ZXJwLCAic3R1ZGJ1dHRvbiIsIHN0dWRCdXR0b25DbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChDbGllbnREYXRhKSBtYWluX3dpbmRvdywgTlVMTCk7Ci0gICAgICAgIFRjbF9DcmVhdGVDb21tYW5kKGludGVycCwgInRyaWJ1dHRvbiIsIHRyaUJ1dHRvbkNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKENsaWVudERhdGEpIG1haW5fd2luZG93LCBOVUxMKTsKLSAgICB9Ci0jZW5kaWYKLQogI2lmZGVmIFdJVEhfUElMIC8qIDAuMmI1IGFuZCBsYXRlciAtLSBub3QgeWV0IHJlbGVhc2VkIGFzIG9mIE1heSAxNCAqLwogICAgIHsKICAgICAgICAgZXh0ZXJuIHZvaWQgVGtJbWFnaW5nX0luaXQoVGNsX0ludGVycCAqKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGtpbnRlci5oIGIvTW9kdWxlcy90a2ludGVyLmgKaW5kZXggM2M1NTY3Ni4uY2I1YTgwNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy90a2ludGVyLmgKKysrIGIvTW9kdWxlcy90a2ludGVyLmgKQEAgLTE2LDE0ICsxNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAoVEtfUkVMRUFTRV9MRVZFTCA8PCA4KSB8IFwKICAgICAgICAgICAgICAgICAgICAgICAgIChUS19SRUxFQVNFX1NFUklBTCA8PCAwKSkKIAotLyogVEtfVkVSU0lPTl9IRVggcGFja3MgZmllbGRzIGluIHdyb25nIG9yZGVyLCBub3Qgc3VpdGFibGUgZm9yIGNvbXBhcmluZyBvZgotICogbm9uLWZpbmFsIHJlbGVhc2VzLiAgTGVmdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLSAqLwotI2RlZmluZSBUS19WRVJTSU9OX0hFWCAoKFRLX01BSk9SX1ZFUlNJT04gPDwgMjQpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKFRLX01JTk9SX1ZFUlNJT04gPDwgMTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKFRLX1JFTEVBU0VfU0VSSUFMIDw8IDgpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgKFRLX1JFTEVBU0VfTEVWRUwgPDwgMCkpCi0KIC8qIFByb3RlY3QgVGsgOC40LjEzIGFuZCBvbGRlciBmcm9tIGEgZGVhZGxvY2sgdGhhdCBoYXBwZW5zIHdoZW4gdHJ5aW5nCiAgKiB0byBsb2FkIHRrIGFmdGVyIGEgZmFpbGVkIGF0dGVtcHQuICovCiAjaWYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDQwMjBlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKaW5kZXggNTA3Y2VmMy4uZmU0ZTkwOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YS5jCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwpAQCAtNzMsNiArNzMsOCBAQAogICAgIFB5X1VDUzQgKCpub3JtYWxpemF0aW9uKShQeV9VQ1M0KTsKIH0gUHJldmlvdXNEQlZlcnNpb247CiAKKyNpbmNsdWRlICJjbGluaWMvdW5pY29kZWRhdGEuYy5oIgorCiAjZGVmaW5lIGdldF9vbGRfcmVjb3JkKHNlbGYsIHYpICAgICgoKChQcmV2aW91c0RCVmVyc2lvbiopc2VsZiktPmdldHJlY29yZCkodikpCiAKIHN0YXRpYyBQeU1lbWJlckRlZiBEQl9tZW1iZXJzW10gPSB7CkBAIC05OSw4MSArMTAxLDMxIEBACiB9CiAKIAotc3RhdGljIFB5X1VDUzQgZ2V0dWNoYXIoUHlVbmljb2RlT2JqZWN0ICpvYmopCi17Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQotICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgPT0gMSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCi0gICAgICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7Ci0gICAgfQotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJuZWVkIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyIGFzIHBhcmFtZXRlciIpOwotICAgIHJldHVybiAoUHlfVUNTNCktMTsKLX0KLQogLyogLS0tIE1vZHVsZSBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qW2NsaW5pYyBpbnB1dF0KLQogdW5pY29kZWRhdGEuVUNELmRlY2ltYWwKIAotICAgIHVuaWNocjogb2JqZWN0KHR5cGU9J1B5VW5pY29kZU9iamVjdCAqJywgc3ViY2xhc3Nfb2Y9JyZQeVVuaWNvZGVfVHlwZScpCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKICAgICBkZWZhdWx0OiBvYmplY3Q9TlVMTAogICAgIC8KIAogQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IGRlY2ltYWwgdmFsdWUuCiAKLVJldHVybnMgdGhlIGRlY2ltYWwgdmFsdWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNocgotYXMgaW50ZWdlci4gSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYKLW5vdCBnaXZlbiwgVmFsdWVFcnJvciBpcyByYWlzZWQuCitSZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCitJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sCitWYWx1ZUVycm9yIGlzIHJhaXNlZC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX19kb2NfXywKLSJkZWNpbWFsKCRzZWxmLCB1bmljaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLlxuIgotIlxuIgotIlJldHVybnMgdGhlIGRlY2ltYWwgdmFsdWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNoclxuIgotImFzIGludGVnZXIuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmXG4iCi0ibm90IGdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKLQotI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfREVDSU1BTF9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjaW1hbCIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChQcmV2aW91c0RCVmVyc2lvbiAqc2VsZiwgUHlVbmljb2RlT2JqZWN0ICp1bmljaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsKFByZXZpb3VzREJWZXJzaW9uICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNocjsKLSAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8hfE86ZGVjaW1hbCIsCi0gICAgICAgICZQeVVuaWNvZGVfVHlwZSwgJnVuaWNociwgJmRlZmF1bHRfdmFsdWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCB1bmljaHIsIGRlZmF1bHRfdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKFByZXZpb3VzREJWZXJzaW9uICpzZWxmLCBQeVVuaWNvZGVPYmplY3QgKnVuaWNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODY4OTY2OTg5NmQyOTNkZiBpbnB1dD1jMjVjOWQyYjRkZTA3NmIxXSovCit1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTIzMzc2ZTFhMTg1MjMxIGlucHV0PTkzM2Y4MTA3OTkzZjIzZDBdKi8KIHsKICAgICBpbnQgaGF2ZV9vbGQgPSAwOwogICAgIGxvbmcgcmM7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgYyA9IGdldHVjaGFyKHVuaWNocik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKIAogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTIwNCw2MSArMTU2LDY0IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYyk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9kaWdpdF9fZG9jX18sCi0iZGlnaXQodW5pY2hyWywgZGVmYXVsdF0pXG5cCi1cblwKLVJldHVybnMgdGhlIGRpZ2l0IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHIgYXNcblwKLWludGVnZXIuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmXG5cCi1ub3QgZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmRpZ2l0CisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIGRlZmF1bHQ6IG9iamVjdD1OVUxMCisgICAgLworCitDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGlnaXQgdmFsdWUuCisKK1JldHVybnMgdGhlIGRpZ2l0IHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCitJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sCitWYWx1ZUVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2RpZ2l0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NmUxOGM5NTAxNzFmZDJmIGlucHV0PWUyN2Q2ZTQ1NjVjZDI5ZjJdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKmRlZm9iaiA9IE5VTEw7CiAgICAgbG9uZyByYzsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86ZGlnaXQiLCAmUHlVbmljb2RlX1R5cGUsICZ2LCAmZGVmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgcmMgPSBQeV9VTklDT0RFX1RPRElHSVQoYyk7CiAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICBpZiAoZGVmb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJub3QgYSBkaWdpdCIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBkZWZvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJjKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX251bWVyaWNfX2RvY19fLAotIm51bWVyaWModW5pY2hyWywgZGVmYXVsdF0pXG5cCi1cblwKLVJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNoclxuXAotYXMgZmxvYXQuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmXG5cCi1ub3QgZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm51bWVyaWMKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgZGVmYXVsdDogb2JqZWN0PU5VTEwKKyAgICAvCisKK0NvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBudW1lcmljIHZhbHVlLgorCitSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGZsb2F0LgorSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLAorVmFsdWVFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9udW1lcmljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzY2UyODFmZTg1YjEwYzQgaW5wdXQ9ZmRmNTg3MWE1NTQyODkzY10qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeU9iamVjdCAqZGVmb2JqID0gTlVMTDsKICAgICBpbnQgaGF2ZV9vbGQgPSAwOwogICAgIGRvdWJsZSByYzsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86bnVtZXJpYyIsICZQeVVuaWNvZGVfVHlwZSwgJnYsICZkZWZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKIAogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTI3NiwzNyArMjMxLDM0IEBACiAgICAgaWYgKCFoYXZlX29sZCkKICAgICAgICAgcmMgPSBQeV9VTklDT0RFX1RPTlVNRVJJQyhjKTsKICAgICBpZiAocmMgPT0gLTEuMCkgewotICAgICAgICBpZiAoZGVmb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJub3QgYSBudW1lcmljIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBkZWZvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHJjKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2NhdGVnb3J5X19kb2NfXywKLSJjYXRlZ29yeSh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG5cCi11bmljaHIgYXMgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmNhdGVnb3J5CisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9jYXRlZ29yeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NTcxNTM5ZWUyZTY3ODNhIGlucHV0PTI3ZDZmM2Q4NTA1MGJjMDZdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgaW50IGluZGV4OwotICAgIFB5X1VDUzQgYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6Y2F0ZWdvcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5jYXRlZ29yeTsKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0zMTYsMjYgKzI2OCwyNCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlVbmljb2RlX0NhdGVnb3J5TmFtZXNbaW5kZXhdKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2JpZGlyZWN0aW9uYWxfX2RvY19fLAotImJpZGlyZWN0aW9uYWwodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBiaWRpcmVjdGlvbmFsIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIHN0cmluZy4gSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXNcblwKLXJldHVybmVkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmJpZGlyZWN0aW9uYWwKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBiaWRpcmVjdGlvbmFsIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4KKworSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM2MzEwY2UyMDM5YmI5MiBpbnB1dD1iM2Q4ZjQyY2ViZmNmNDc1XSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmJpZGlyZWN0aW9uYWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5iaWRpcmVjdGlvbmFsOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTM0Nyw1NSArMjk3LDUyIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfQmlkaXJlY3Rpb25hbE5hbWVzW2luZGV4XSk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9jb21iaW5pbmdfX2RvY19fLAotImNvbWJpbmluZyh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGVcblwKLWNoYXJhY3RlciB1bmljaHIgYXMgaW50ZWdlci4gUmV0dXJucyAwIGlmIG5vIGNvbWJpbmluZyBjbGFzcyBpc1xuXAotZGVmaW5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5jb21iaW5pbmcgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9jb21iaW5pbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBjYW5vbmljYWwgY29tYmluaW5nIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCisKK1JldHVybnMgMCBpZiBubyBjb21iaW5pbmcgY2xhc3MgaXMgZGVmaW5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAordW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhZDA1NmQwY2I2YTU5MjAgaW5wdXQ9OWYyZDZiMmE5NWQwYTIyYV0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBpbnQgaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpjb21iaW5pbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5jb21iaW5pbmc7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApCiAgICAgICAgICAgICBpbmRleCA9IDA7IC8qIHVuYXNzaWduZWQgKi8KICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpbmRleCk7CisgICAgcmV0dXJuIGluZGV4OwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbWlycm9yZWRfX2RvY19fLAotIm1pcnJvcmVkKHVuaWNocilcblwKLVxuXAotUmV0dXJucyB0aGUgbWlycm9yZWQgcHJvcGVydHkgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG5cCi11bmljaHIgYXMgaW50ZWdlci4gUmV0dXJucyAxIGlmIHRoZSBjaGFyYWN0ZXIgaGFzIGJlZW4gaWRlbnRpZmllZCBhc1xuXAotYSBcIm1pcnJvcmVkXCIgY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QubWlycm9yZWQgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9taXJyb3JlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1JldHVybnMgdGhlIG1pcnJvcmVkIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuCisKK1JldHVybnMgMSBpZiB0aGUgY2hhcmFjdGVyIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgYSAibWlycm9yZWQiCitjaGFyYWN0ZXIgaW4gYmlkaXJlY3Rpb25hbCB0ZXh0LCAwIG90aGVyd2lzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAordW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjUzMmRiZjgxMjFiNTBlNiBpbnB1dD01ZGQ0MDBkMzUxYWU2ZjNiXSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOm1pcnJvcmVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+bWlycm9yZWQ7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwpAQCAtNDA0LDI4ICszNTEsMjUgQEAKICAgICAgICAgZWxzZSBpZiAob2xkLT5taXJyb3JlZF9jaGFuZ2VkICE9IDB4RkYpCiAgICAgICAgICAgICBpbmRleCA9IG9sZC0+bWlycm9yZWRfY2hhbmdlZDsKICAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpbmRleCk7CisgICAgcmV0dXJuIGluZGV4OwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfZWFzdF9hc2lhbl93aWR0aF9fZG9jX18sCi0iZWFzdF9hc2lhbl93aWR0aCh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGVhc3QgYXNpYW4gd2lkdGggYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG5cCi11bmljaHIgYXMgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmVhc3RfYXNpYW5fd2lkdGgKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBlYXN0IGFzaWFuIHdpZHRoIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2Vhc3RfYXNpYW5fd2lkdGgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ODRlODUzN2Q5ZWU4MTk3IGlucHV0PWM0ODU0Nzk4YWFiMDI2ZTBdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgaW50IGluZGV4OwotICAgIFB5X1VDUzQgYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6ZWFzdF9hc2lhbl93aWR0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeVVuaWNvZGVfVHlwZSwgJnYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKICAgICBpbmRleCA9IChpbnQpIF9nZXRyZWNvcmRfZXgoYyktPmVhc3RfYXNpYW5fd2lkdGg7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwpAQCAtNDM1LDI5ICszNzksMjcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9FYXN0QXNpYW5XaWR0aE5hbWVzW2luZGV4XSk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9kZWNvbXBvc2l0aW9uX19kb2NfXywKLSJkZWNvbXBvc2l0aW9uKHVuaWNocilcblwKLVxuXAotUmV0dXJucyB0aGUgY2hhcmFjdGVyIGRlY29tcG9zaXRpb24gbWFwcGluZyBhc3NpZ25lZCB0byB0aGUgVW5pY29kZVxuXAotY2hhcmFjdGVyIHVuaWNociBhcyBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiBjYXNlIG5vXG5cCi1zdWNoIG1hcHBpbmcgaXMgZGVmaW5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5kZWNvbXBvc2l0aW9uCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgY2hhcmFjdGVyIGRlY29tcG9zaXRpb24gbWFwcGluZyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCisKK0FuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiBjYXNlIG5vIHN1Y2ggbWFwcGluZyBpcyBkZWZpbmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfZGVjb21wb3NpdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkNjk5ZjNlYzc1NjVkMjcgaW5wdXQ9ZTRjMTI0NTlhZDY4NTA3Yl0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBjaGFyIGRlY29tcFsyNTZdOwogICAgIGludCBjb2RlLCBpbmRleCwgY291bnQ7CiAgICAgc2l6ZV90IGk7CiAgICAgdW5zaWduZWQgaW50IHByZWZpeF9pbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmRlY29tcG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAKICAgICBjb2RlID0gKGludCljOwogCkBAIC04NTgsMjIgKzgwMCwyNCBAQAogICAgIHJldHVybiAxOyAvKiBjZXJ0YWlubHkgbm9ybWFsaXplZCAqLwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbm9ybWFsaXplX19kb2NfXywKLSJub3JtYWxpemUoZm9ybSwgdW5pc3RyKVxuXAotXG5cCi1SZXR1cm4gdGhlIG5vcm1hbCBmb3JtICdmb3JtJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci4gIFZhbGlkXG5cCi12YWx1ZXMgZm9yIGZvcm0gYXJlICdORkMnLCAnTkZLQycsICdORkQnLCBhbmQgJ05GS0QnLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm5vcm1hbGl6ZQogCi1zdGF0aWMgUHlPYmplY3QqCi11bmljb2RlZGF0YV9ub3JtYWxpemUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHNlbGY6IHNlbGYKKyAgICBmb3JtOiBzdHIKKyAgICB1bmlzdHIgYXMgaW5wdXQ6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5VW5pY29kZV9UeXBlJykKKyAgICAvCisKK1JldHVybiB0aGUgbm9ybWFsIGZvcm0gJ2Zvcm0nIGZvciB0aGUgVW5pY29kZSBzdHJpbmcgdW5pc3RyLgorCitWYWxpZCB2YWx1ZXMgZm9yIGZvcm0gYXJlICdORkMnLCAnTkZLQycsICdORkQnLCBhbmQgJ05GS0QnLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MmQxZjg4NzAwMjdlZmRjIGlucHV0PWNkMDkyZTYzMWNmMTE4ODNdKi8KIHsKLSAgICBjaGFyICpmb3JtOwotICAgIFB5T2JqZWN0ICppbnB1dDsKLQotICAgIGlmKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyE6bm9ybWFsaXplIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtOTc3LDEwICs5MjEsMTEgQEAKIHsKICAgICByZXR1cm4KICAgICAgICAgKDB4MzQwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg0REI1KSAgIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEEgKi8KLSAgICAgICAgKDB4NEUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg5RkNDKSAgIHx8IC8qIENKSyBJZGVvZ3JhcGggKi8KKyAgICAgICAgKDB4NEUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHg5RkQ1KSAgIHx8IC8qIENKSyBJZGVvZ3JhcGggKi8KICAgICAgICAgKDB4MjAwMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkE2RDYpIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEIgKi8KICAgICAgICAgKDB4MkE3MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkI3MzQpIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEMgKi8KLSAgICAgICAgKDB4MkI3NDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkI4MUQpOyAgIC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEQgKi8KKyAgICAgICAgKDB4MkI3NDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkI4MUQpIHx8IC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEQgKi8KKyAgICAgICAgKDB4MkI4MjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MkNFQTEpOyAgIC8qIENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEUgKi8KIH0KIAogLyogbWFjcm9zIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBjb2RlIHBvaW50IGlzIGluIHRoZSBQVUEgcmFuZ2UgdGhhdApAQCAtMTIzMiw2NCArMTE3Nyw2NyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIFB5dGhvbiBiaW5kaW5ncyAqLwogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbmFtZV9fZG9jX18sCi0ibmFtZSh1bmljaHJbLCBkZWZhdWx0XSlcblwKLVJldHVybnMgdGhlIG5hbWUgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHVuaWNociBhcyBhXG5cCi1zdHJpbmcuIElmIG5vIG5hbWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdFxuXAotZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm5hbWUKKworICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgZGVmYXVsdDogb2JqZWN0PU5VTEwKKyAgICAvCisKK1JldHVybnMgdGhlIG5hbWUgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgYSBzdHJpbmcuCisKK0lmIG5vIG5hbWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbiwKK1ZhbHVlRXJyb3IgaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfbmFtZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfbmFtZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YmJiMzdhMzI2NDA3NzA3IGlucHV0PTNlMDM2N2Y1MzRkZTU2ZDldKi8KIHsKICAgICBjaGFyIG5hbWVbTkFNRV9NQVhMRU5dOwotICAgIFB5X1VDUzQgYzsKLQotICAgIFB5VW5pY29kZU9iamVjdCogdjsKLSAgICBQeU9iamVjdCogZGVmb2JqID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfE86bmFtZSIsICZQeVVuaWNvZGVfVHlwZSwgJnYsICZkZWZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogCiAgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSwgMCkpIHsKLSAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChkZWZhdWx0X3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm8gc3VjaCBuYW1lIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZvYmopOwotICAgICAgICAgICAgcmV0dXJuIGRlZm9iajsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0X3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0X3ZhbHVlOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfbG9va3VwX19kb2NfXywKLSJsb29rdXAobmFtZSlcblwKLVxuXAotTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS4gIElmIGEgY2hhcmFjdGVyIHdpdGggdGhlXG5cCi1naXZlbiBuYW1lIGlzIGZvdW5kLCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZVxuXAotY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCBLZXlFcnJvciBpcyByYWlzZWQuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QubG9va3VwCisKKyAgICBzZWxmOiBzZWxmCisgICAgbmFtZTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIC8KKworTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS4KKworSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZQorY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuICBJZiBub3QgZm91bmQsIEtleUVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2xvb2t1cChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NjVjYjgxODY3ODhlNmJlIGlucHV0PWE1NTdiZTBmODYwN2EwZDZdKi8KIHsKICAgICBQeV9VQ1M0IGNvZGU7Ci0KLSAgICBjaGFyKiBuYW1lOwotICAgIFB5X3NzaXplX3QgbmFtZWxlbjsKICAgICB1bnNpZ25lZCBpbnQgaW5kZXg7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVsZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobmFtZWxlbiA+IElOVF9NQVgpIHsKKyAgICBpZiAobmFtZV9sZW5ndGggPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIm5hbWUgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFfZ2V0Y29kZShzZWxmLCBuYW1lLCAoaW50KW5hbWVsZW4sICZjb2RlLCAxKSkgeworICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgKGludCluYW1lX2xlbmd0aCwgJmNvZGUsIDEpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgInVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnIiwgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEzMDgsMjQgKzEyNTYsMTcgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHVuaWNvZGVkYXRhX2Z1bmN0aW9uc1tdID0gewogICAgIFVOSUNPREVEQVRBX1VDRF9ERUNJTUFMX01FVEhPRERFRgotICAgIHsiZGlnaXQiLCB1bmljb2RlZGF0YV9kaWdpdCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9kaWdpdF9fZG9jX199LAotICAgIHsibnVtZXJpYyIsIHVuaWNvZGVkYXRhX251bWVyaWMsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfbnVtZXJpY19fZG9jX199LAotICAgIHsiY2F0ZWdvcnkiLCB1bmljb2RlZGF0YV9jYXRlZ29yeSwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9jYXRlZ29yeV9fZG9jX199LAotICAgIHsiYmlkaXJlY3Rpb25hbCIsIHVuaWNvZGVkYXRhX2JpZGlyZWN0aW9uYWwsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsX19kb2NfX30sCi0gICAgeyJjb21iaW5pbmciLCB1bmljb2RlZGF0YV9jb21iaW5pbmcsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhX2NvbWJpbmluZ19fZG9jX199LAotICAgIHsibWlycm9yZWQiLCB1bmljb2RlZGF0YV9taXJyb3JlZCwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9taXJyb3JlZF9fZG9jX199LAotICAgIHsiZWFzdF9hc2lhbl93aWR0aCIsIHVuaWNvZGVkYXRhX2Vhc3RfYXNpYW5fd2lkdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9lYXN0X2FzaWFuX3dpZHRoX19kb2NfX30sCi0gICAgeyJkZWNvbXBvc2l0aW9uIiwgdW5pY29kZWRhdGFfZGVjb21wb3NpdGlvbiwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhX2RlY29tcG9zaXRpb25fX2RvY19ffSwKLSAgICB7Im5hbWUiLCB1bmljb2RlZGF0YV9uYW1lLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX25hbWVfX2RvY19ffSwKLSAgICB7Imxvb2t1cCIsIHVuaWNvZGVkYXRhX2xvb2t1cCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9sb29rdXBfX2RvY19ffSwKLSAgICB7Im5vcm1hbGl6ZSIsIHVuaWNvZGVkYXRhX25vcm1hbGl6ZSwgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfbm9ybWFsaXplX19kb2NfX30sCisgICAgVU5JQ09ERURBVEFfVUNEX0RJR0lUX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9OVU1FUklDX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9DQVRFR09SWV9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfQklESVJFQ1RJT05BTF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfQ09NQklOSU5HX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9NSVJST1JFRF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfRUFTVF9BU0lBTl9XSURUSF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfREVDT01QT1NJVElPTl9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTkFNRV9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTE9PS1VQX01FVEhPRERFRgorICAgIFVOSUNPREVEQVRBX1VDRF9OT1JNQUxJWkVfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggZWMxMWZhMS4uODlkODc2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4zLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOC4wLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMzIzLDcgKzMyMywxMSBAQAogICAgIHsyNywgMCwgMTksIDAsIDEsIDEzNn0sCiAgICAgezE0LCAwLCAxOSwgMCwgNSwgMH0sCiAgICAgezgsIDAsIDE5LCAwLCA1LCAwfSwKKyAgICB7OSwgMCwgOSwgMCwgNSwgMH0sCiAgICAgezksIDAsIDQsIDAsIDUsIDB9LAorICAgIHszMCwgMCwgNCwgMCwgNSwgMH0sCisgICAgezEsIDAsIDQsIDAsIDUsIDB9LAorICAgIHsyLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7OSwgMCwgMTIsIDAsIDUsIDB9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTcwfSwKICAgICB7NSwgMjE2LCAxLCAwLCA1LCAwfSwKQEAgLTMzNSw4ICszMzksOCBAQAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KLSNkZWZpbmUgVE9UQUxfRklSU1QgMzcyCi0jZGVmaW5lIFRPVEFMX0xBU1QgNTYKKyNkZWZpbmUgVE9UQUxfRklSU1QgMzc2CisjZGVmaW5lIFRPVEFMX0xBU1QgNjIKIHN0cnVjdCByZWluZGV4e2ludCBzdGFydDtzaG9ydCBjb3VudCxpbmRleDt9Owogc3RhdGljIHN0cnVjdCByZWluZGV4IG5mY19maXJzdFtdID0gewogICB7IDYwLCAyLCAwfSwKQEAgLTU0Niw2ICs1NTAsOSBAQAogICB7IDY5Nzg3LCAwLCAzNjh9LAogICB7IDY5Nzk3LCAwLCAzNjl9LAogICB7IDY5OTM3LCAxLCAzNzB9LAorICB7IDcwNDcxLCAwLCAzNzJ9LAorICB7IDcwODQxLCAwLCAzNzN9LAorICB7IDcxMDk2LCAxLCAzNzR9LAogICB7MCwwLDB9CiB9OwogCkBAIC01ODMsNiArNTkwLDEyIEBACiAgIHsgMTI0NDEsIDEsIDUyfSwKICAgeyA2OTgxOCwgMCwgNTR9LAogICB7IDY5OTI3LCAwLCA1NX0sCisgIHsgNzA0NjIsIDAsIDU2fSwKKyAgeyA3MDQ4NywgMCwgNTd9LAorICB7IDcwODMyLCAwLCA1OH0sCisgIHsgNzA4NDIsIDAsIDU5fSwKKyAgeyA3MDg0NSwgMCwgNjB9LAorICB7IDcxMDg3LCAwLCA2MX0sCiAgIHswLDAsMH0KIH07CiAKQEAgLTcxNCwzNiArNzI3LDQzIEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMiwgMTIyLCAxMjMsIDEyNCwgCi0gICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDg0LCAKLSAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTQzLCA4NCwgMTQ0LCAxNDUsIDE0NiwgCi0gICAgODQsIDE0NywgODQsIDE0OCwgODQsIDg0LCA4NCwgMTQ5LCA4NCwgODQsIDg0LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE1NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU1LCA4NCwgMTU2LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU3LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDE1OCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgMTU5LCAxNjAsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTYxLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA3OCwgMTYyLCAxNjMsIDE2NCwgMTY1LCA4NCwgMTY2LCA4NCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCi0gICAgMTczLCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTc1LCAxNzYsIDg0LCA4NCwgMTc3LCAxNzgsIDE3OSwgCi0gICAgMTgwLCAxODEsIDg0LCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKKyAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDEzOCwgNDEsIDQxLCAxNDUsIDEzOCwgMTQ2LCAxNDcsIDE0OCwgCisgICAgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxMzgsIDEzOCwgMTU2LCAxMzgsIDEzOCwgMTM4LCAxNTcsIAorICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDEzOCwgMTM4LCAxNjQsIDEzOCwgMTY1LCAxNjYsIDE2NywgMTY4LCAKKyAgICAxMzgsIDEzOCwgMTY5LCAxMzgsIDEzOCwgMTM4LCAxNzAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3MSwgMTcyLCA0MSwgMTczLCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzYsIDE3NywgMTc4LCAxNzksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4MCwgMTgxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTgyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTgzLCAxODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTg1LCAKKyAgICAxODYsIDE4NywgMTg4LCAxMzgsIDE4OSwgMTM4LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgNzgsIAorICAgIDc4LCA3OCwgNzgsIDE5OCwgMTk5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMjAwLCAyMDEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjAyLCAyMDMsIDEzOCwgMTM4LCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMTM4LCAyMDksIDIxMCwgMjA5LCAyMDksIAorICAgIDIxMSwgMjEyLCAyMDksIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCkBAIC03NjcsMzU5ICs3ODcsNDU5IEBACiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE5MSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTIsIAotICAgIDEwMSwgMTkzLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgMTIyLCAxMjIsIDEyMiwgMTIyLCAxOTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDE5NSwgODQsIDE5NiwgMTk3LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIyMSwgMTAxLCAyMjIsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAyMjMsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIyNSwgMTM4LCAyMjYsIDIyNywgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCkBAIC0xMTU1LDggKzEyNzUsOCBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjI4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTk4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTE5Miw3ICsxMzEyLDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTk4LCAKKyAgICAxMjEsIDIyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xMjQ0LDcgKzEzNjQsNyBAQAogICAgIDY5LCA1OSwgNjksIDY5LCA3MCwgNjAsIDYyLCA2MiwgNjIsIDYwLCA2MCwgNjAsIDYyLCA2MiwgNzEsIDYwLCA2MCwgNjAsIAogICAgIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjEsIDYyLCA2MiwgNjAsIDcyLCA3MywgNzMsIDcyLCA3MywgNzMsIDcyLCA2MCwgNjAsIAogICAgIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNDQsIDQ3LCA0NCwgNDcsIDc0LCA1NCwgNDQsIAotICAgIDQ3LCAwLCAwLCA1MSwgNDcsIDQ3LCA0NywgNzUsIDAsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKKyAgICA0NywgMCwgMCwgNTEsIDQ3LCA0NywgNDcsIDc1LCA0NCwgMCwgMCwgMCwgMCwgNTgsIDc2LCAzOCwgNzUsIDM4LCAzOCwgMzgsIAogICAgIDAsIDM4LCAwLCAzOCwgMzgsIDQzLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDAsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKICAgICA0MywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAKQEAgLTEyNjcsOTcgKzEzODcsOTggQEAKICAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKICAgICAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAzNSwgCi0gICAgMCwgODMsIDg0LCAwLCAwLCAwLCAwLCA4NSwgMCwgODYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODcsIDg2LCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg3LCAKLSAgICA4OCwgODEsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIAotICAgIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA0LCA4MSwgODYsIDEwNCwgOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNywgMTA3LCAxMDcsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMCwgNzgsIDc4LCAxMDksIDExMCwgMTEwLCAxMTEsIDExMiwgMTEzLCAyNiwgMjYsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTE0LCAxMTUsIDExNiwgMTEzLCAxMTcsIDAsIDExMywgMTEzLCAxMTgsIDExOCwgCi0gICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTIwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDEyMSwgCi0gICAgMTIyLCAxMjMsIDExNCwgMTE1LCAxMTYsIDEyNCwgMTI1LCAxMjYsIDEyNiwgMTI3LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4NiwgODEsIDgxLCA4NiwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMTAsIAotICAgIDEyOSwgMTI5LCAxMTMsIDExOCwgMTE4LCAxMzAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE5LCAxMTgsIDExOSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTksIDExMywgMTE4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMTA4LCAyNiwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgMTIwLCAxMjAsIDgxLCA4MSwgMjYsIDg2LCA4MSwgODEsIDg2LCAKLSAgICAxMTgsIDExOCwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMzMsIDEzMywgMTE4LCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTE3LCAxMTgsIDEzNCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIAotICAgIDg2LCA4NiwgODYsIDgxLCA4NiwgODYsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDgxLCA4NiwgODEsIDg2LCA4MSwgODYsIAotICAgIDgxLCA4MSwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgMTM3LCAxMzcsIDI2LCAxMzgsIDEzOCwgMTM4LCAxMzcsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgMzUsIDAsIDgzLCA4NCwgMCwgMCwgMjYsIDI2LCA4NSwgMCwgODYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIAorICAgIDgxLCA4MSwgODcsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIAorICAgIDg2LCA4MSwgODEsIDg3LCA4OCwgODEsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OCwgOTksIAorICAgIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA0LCA4MSwgODYsIDEwNCwgOTcsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgCi0gICAgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIAotICAgIDEwNCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4NiwgODYsIDg2LCAKLSAgICAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgNzgsIDc4LCAxMDksIDExMCwgMTEwLCAxMTEsIDExMiwgMTEzLCAyNiwgCisgICAgMjYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTE0LCAxMTUsIDExNiwgMTEzLCAxMTcsIDAsIDExMywgMTEzLCAKKyAgICAxMTgsIDExOCwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTIwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDEyMSwgMTIyLCAxMjMsIDExNCwgMTE1LCAxMTYsIDEyNCwgMTI1LCAxMjYsIDEyNiwgMTI3LCA4NiwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMTAsIDEyOSwgMTI5LCAxMTMsIDExOCwgMTE4LCAxMzAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTgsIDExOSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTksIDExMywgMTE4LCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgMTA4LCAyNiwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgMTIwLCAxMjAsIDgxLCA4MSwgMjYsIDg2LCAKKyAgICA4MSwgODEsIDg2LCAxMTgsIDExOCwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMzMsIDEzMywgMTE4LCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTE3LCAxMTgsIDEzNCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgODEsIDg2LCA4MSwgODEsIAorICAgIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDgxLCA4NiwgODYsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDgxLCA4NiwgODEsIAorICAgIDg2LCA4MSwgODYsIDgxLCA4MSwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgMTM3LCAxMzcsIDI2LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzcsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDgxLCAKKyAgICA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCAxMzcsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgCisgICAgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCA4NiwgODYsIDg2LCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOCwgMCwgMTE4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCiAgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgCi0gICAgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgODEsIDgxLCAKLSAgICA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCA4MSwgODEsIDgxLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgCi0gICAgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgCi0gICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgCi0gICAgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgCisgICAgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIAorICAgIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIAorICAgIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAKICAgICAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAKQEAgLTEzNjksMTIzICsxNDkwLDEyNCBAQAogICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAKICAgICAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIAorICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIAogICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCiAgICAgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MiwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MiwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAwLCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDAsIAorICAgIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAKKyAgICAxNDcsIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKICAgICAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIDE0NywgCi0gICAgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIAotICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIAorICAgIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAKKyAgICAxNDcsIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAKLSAgICAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAKLSAgICAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAKLSAgICAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIAotICAgIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIAotICAgIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAKLSAgICAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE2NSwgCi0gICAgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTM1LCAxMzksIAotICAgIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKLSAgICAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAorICAgIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIAorICAgIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAKKyAgICAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIAorICAgIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgCisgICAgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgCisgICAgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgCisgICAgMTY2LCAxNjYsIDEzNSwgMTM5LCAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxNDksIDEzNSwgCi0gICAgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAxNDIsIDEzOSwgMTM5LCAxMzUsIAotICAgIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTQ5LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgCisgICAgMTQyLCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDEzOSwgMTM5LCAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIAogICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MSwgODEsIAotICAgIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE1MDUsMzU3ICsxNjI3LDM1OSBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAKLSAgICAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQyLCAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTM1LCA4MywgODMsIAotICAgIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgODgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCA4NywgODEsIDg2LCAKLSAgICAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMTM4LCAxMzgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAKLSAgICAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODYsIDEzOSwgMTM5LCAxMzUsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM5LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDE0MiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgODYsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgMTQwLCA0OCwgCi0gICAgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTQ2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTQ3LCAxMzUsIDE0NywgMTM5LCAxMzksIDE0NywgMTQ3LCAxMzUsIDE0NywgMTc1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDE3NSwgMTQyLCAxMzksIDEzOSwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCA4NywgODEsIDg2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMTM4LCAxMzgsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxNzUsIDE3NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxNDUsIDAsIDAsIDAsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODYsIDEzOSwgMTM5LCAxMzUsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDE0MiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgODYsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgCisgICAgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTQ2LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ3LCAxMzUsIDE0NywgMTM5LCAxMzksIDE0NywgMTQ3LCAxMzUsIDE0NywgMTc1LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDE3NSwgMTQyLCAxMzUsIAorICAgIDEzNSwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTc1LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzUsIDE0NSwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgCi0gICAgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgODEsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgCisgICAgODMsIDE3NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAxNzYsIDE3NiwgCisgICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDQ4LCA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKKyAgICA4MSwgNDgsIDQ4LCAwLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgCiAgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc3LCAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NywgCisgICAgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODAsIDg2LCAKLSAgICA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIAotICAgIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCisgICAgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MCwgODYsIDgxLCA4NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODEsIDQ3LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0MywgCiAgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCiAgICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgCi0gICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIAotICAgIDQzLCAxODIsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIAotICAgIDE4MywgNTgsIDE4MiwgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIAotICAgIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDAsIDc2LCA3NiwgCi0gICAgNzYsIDQzLCA0MywgNDMsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMzgsIDc2LCAxODUsIDE4NSwgCi0gICAgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDE4NSwgNTgsIDAsIDE4NiwgMTg2LCAKLSAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxNzQsIDE3NCwgMTc0LCAxODgsIDE4OSwgCi0gICAgMTkwLCAxOTEsIDg0LCAxOTAsIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIAotICAgIDE5NiwgMjIsIDIyLCAyMiwgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgCi0gICAgMjA0LCAyMSwgMjA1LCAxMTAsIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIAotICAgIDEzOCwgMTk3LCAyMDgsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAyMTAsIDIxMSwgMjEyLCAKLSAgICAyMTMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDIxNCwgNTEsIDAsIDAsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIAotICAgIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMjE0LCAzNCwgMzQsIDM0LCAzNCwgMjE0LCAyMTQsIDIxNCwgCi0gICAgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAwLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgMCwgMCwgMCwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAyMjAsIDIyMSwgODUsIAotICAgIDg1LCAyMywgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCAKLSAgICA4MSwgODEsIDgxLCA4MSwgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIAotICAgIDE3NiwgMTc2LCA4MSwgODYsIDgxLCAxNzYsIDE3NiwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIsIDIyMiwgNDksIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIAotICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgMjYsIDI2LCAyMjIsIDIyMywgMjIzLCAyNiwgNDksIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIAotICAgIDIyNSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgCi0gICAgNDksIDIyNiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAKLSAgICAyMjcsIDIyNywgMzcsIDM3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAKLSAgICAyMjksIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgCi0gICAgMjI5LCAyMjksIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjMwLCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAKKyAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIAorICAgIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgCisgICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCisgICAgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgCisgICAgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIAorICAgIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAKKyAgICAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgCisgICAgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgCisgICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgCisgICAgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgCisgICAgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgCisgICAgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAKKyAgICAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIAorICAgIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIAorICAgIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIAorICAgIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgODEsIDE3NiwgMTc2LCA4NiwgODYsIAorICAgIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMiwgMjIyLCA0OSwgCisgICAgMjIzLCAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgCisgICAgMjYsIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgMjIzLCAyMjMsIDI2LCA0OSwgCisgICAgMjYsIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIAorICAgIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDIyNywgMjI3LCAyMjcsIAorICAgIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgCisgICAgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDI2LCAyNiwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAKLSAgICAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgCi0gICAgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCAKLSAgICA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIAotICAgIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgCi0gICAgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgCi0gICAgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAKLSAgICAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgCi0gICAgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAKLSAgICA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIAotICAgIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIAorICAgIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIDIzMiwgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgCisgICAgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIAorICAgIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIDQwLCAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgCisgICAgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIAorICAgIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgCisgICAgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCisgICAgMjQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAogICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAotICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjI3LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCi0gICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAotICAgIDI0MiwgMjQyLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDIyNywgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAyNiwgMzAsIDMwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCisgICAgMTYzLCAxNjQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMTUzLCAxNTMsIAogICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgNzgsIDc4LCAKLSAgICAyMzIsIDIzMiwgMTYzLCAxNjQsIDc4LCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgMjMyLCAKKyAgICAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAxNjMsIAorICAgIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKKyAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgMTYzLCAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCi0gICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIAotICAgIDIyNiwgMjE2LCAyMTYsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMjYsIDIxNiwgCisgICAgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjQzLCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyNDMsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAKLSAgICAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgCisgICAgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDI0NCwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKKyAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIApAQCAtMTg3MCw2MyArMTk5NCw2MiBAQAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgCi0gICAgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIAotICAgIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAKLSAgICAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgCi0gICAgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNDgsIDI0NSwgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIAotICAgIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKKyAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMjQ2LCAyNDcsIDI0NywgMjQ3LCAyNDQsIDI0OCwgMTcwLCAyNDksIDI1MCwgMjUxLCAKKyAgICAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjQ0LCAyNDQsIDI1MCwgMjUxLCAyNTAsIDI1MSwgCisgICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTQsIDI0NCwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIAorICAgIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjU1LCAyNTYsIDI1NywgMjU4LCAyNTksIDI1OSwgMjUyLCAyNDgsIDI0OCwgMjQ4LCAKKyAgICAyNDgsIDI0OCwgMjQ1LCAyNDQsIDI2MCwgMjYwLCAyNjAsIDI0OCwgMTcwLCAyNDcsIDI0NCwgMjYsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCiAgICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMTcwLCAKLSAgICAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgCisgICAgMTcwLCAyNjEsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI0OCwgMjY0LCAyNjUsIDI1MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAorICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKKyAgICAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgCisgICAgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAwLCAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI0OCwgMjY0LCAyNjUsIAotICAgIDI1MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAKLSAgICAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI0NywgMjQ4LCAyNDgsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMjYxLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNDcsIDI0OCwgMjQ4LCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCiAgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAogICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKICAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCiAgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAogICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKICAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAKKyAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDAsIDI2NiwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDAsIAorICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NSwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ1LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNjYsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgCisgICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKQEAgLTE5MzQsMTcgKzIwNTcsMTggQEAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjQ1LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0xOTU3LDIwICsyMDgxLDIwIEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0xOTc5LDE0ICsyMTAzLDE0IEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKKyAgICAxNzAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM4LCAxMzgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAorICAgIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKICAgICAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKQEAgLTE5OTQsNzcgKzIxMTgsODAgQEAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIDgxLCA4MSwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTQsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI3MSwgMjcxLCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgMCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjcxLCAyNzEsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA0OCwgODMsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDgzLCA4MywgODMsIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIAotICAgIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgCisgICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIDg2LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAKKyAgICAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKICAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKLSAgICA0OCwgMTM5LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCAKLSAgICA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIAotICAgIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKKyAgICA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAKICAgICAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCkBAIC0yMTU5LDcgKzIyODYsNyBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDE5NSwgMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzksIDE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMTczLDEyICsyMzAwLDEyIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMjgwLCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCiAgICAgNzEsIDcxLCA3MSwgNzEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgyLCAyODMsIDI4MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MSwgCi0gICAgMjg0LCAyODQsIDI4NSwgMjg1LCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIAotICAgIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI0NywgMjQ3LCAyODIsIDI4MywgMjgxLCAyODEsIDI4MSwgMjgxLCAKLSAgICAyODUsIDI4NSwgMjg1LCAyODYsIDI4MSwgMjg2LCAwLCAyODEsIDI4NiwgMjgxLCAyODEsIDI4NCwgMjg3LCAyODgsIDI4NywgCi0gICAgMjg4LCAyODcsIDI4OCwgMjg5LCAyODEsIDI4MSwgMjkwLCAyOTEsIDI5MiwgMjkyLCAyOTMsIDAsIDI4MSwgMjk0LCAyODksIAotICAgIDI4MSwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCAKKyAgICA4MSwgMjgxLCAyODQsIDI4NCwgMjg1LCAyODUsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIAorICAgIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjQ3LCAyNDcsIDI4MiwgMjgzLCAyODEsIDI4MSwgMjgxLCAKKyAgICAyODEsIDI4NSwgMjg1LCAyODUsIDI4NiwgMjgxLCAyODYsIDAsIDI4MSwgMjg2LCAyODEsIDI4MSwgMjg0LCAyODcsIDI4OCwgCisgICAgMjg3LCAyODgsIDI4NywgMjg4LCAyODksIDI4MSwgMjgxLCAyOTAsIDI5MSwgMjkyLCAyOTIsIDI5MywgMCwgMjgxLCAyOTQsIAorICAgIDI4OSwgMjgxLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIxODgsNzIgKzIzMTUsNzkgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk1LCAyOTUsIDI5NiwgMjk3LCAyOTYsIDI5NSwgMjk1LCAyOTgsIAotICAgIDI5OSwgMjk1LCAzMDAsIDMwMSwgMzAyLCAzMDEsIDMwMSwgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAzMDEsIDI5NSwgMzA0LCAzMDUsIDMwNCwgMjk1LCAyOTUsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk1LCAyOTUsIDI5NiwgMjk3LCAyOTYsIDI5NSwgMjk1LCAKKyAgICAyOTgsIDI5OSwgMjk1LCAzMDAsIDMwMSwgMzAyLCAzMDEsIDMwMSwgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCisgICAgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDEsIDI5NSwgMzA0LCAzMDUsIDMwNCwgMjk1LCAyOTUsIDMwNiwgMzA2LCAzMDYsIAogICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMjk4LCAyOTUsIDI5OSwgMzA3LCAzMDgsIDMwNywgCi0gICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDI5OCwgMzA1LCAKLSAgICAyOTksIDMwNSwgMjk4LCAyOTksIDMxMCwgMzExLCAzMTIsIDMxMCwgMzEwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAorICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAKKyAgICAzMDcsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIAorICAgIDMwNSwgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCiAgICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAogICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxNCwgMzEzLCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxNCwgMzEzLCAzMTMsIAogICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgCi0gICAgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMCwgMCwgMCwgMjk3LCAKLSAgICAyOTcsIDMwNSwgMzA3LCAzMTUsIDI5NywgMjk3LCAwLCAzMTYsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE2LCAzMTYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMzE4LCAzMTgsIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAorICAgIDMxMywgMCwgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMCwgMCwgCisgICAgMCwgMjk3LCAyOTcsIDMwNSwgMzA3LCAzMTUsIDI5NywgMjk3LCAwLCAzMTYsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE2LCAKKyAgICAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMzE4LCAzMTgsIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKKyAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKICAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCiAgICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAogICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgMzIwLCAzMjAsIDMyMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIApAQCAtMjI2NiwyOTggKzI0MDAsNDg3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAxMDcsIDAsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAwLCAxMDQsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIDEzNSwgCisgICAgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIDAsIDAsIAorICAgIDAsIDE0MiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAzMjEsIDMyMSwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIDEzNSwgODEsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgMCwgMCwgMCwgMTQyLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIAotICAgIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMCwgMzIwLCAKLSAgICAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAwLCAwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKKyAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCisgICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAorICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAxMzksIDEzNSwgMTM5LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIAotICAgIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc1LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgODMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCi0gICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgMTg4LCA4MywgCisgICAgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAKKyAgICAxNTAsIDE1MCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCA4MywgCisgICAgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzksIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ1LCAxMzUsIDEzNSwgCisgICAgODMsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDgzLCA0OCwgCisgICAgODMsIDgzLCA4MywgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIAorICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTc1LCAwLCAwLCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKKyAgICAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE0OSwgMTQ3LCAxNDcsIDE0NiwgCisgICAgMTQ3LCAxMzUsIDEzNSwgMTM5LCAxNDIsIDE0NSwgNDgsIDQ4LCA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDYsIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAKKyAgICAxNDUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxNDIsIDEzNSwgODMsIDgzLCAKKyAgICA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIAorICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDgzLCAKKyAgICA4MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgCisgICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgODAsIDEzNSwgMTc2LCA4MywgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjcsIDMyNywgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgMzI4LCAzMjcsIDMyNywgMzI3LCAzMjcsIDMyNywgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIAorICAgIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjMsIDMyMywgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgCi0gICAgMzI0LCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCAKLSAgICA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgCi0gICAgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgCi0gICAgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIAorICAgIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDMyNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMjYsIDMyNiwgCi0gICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAwLCAKLSAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAwLCAwLCAxMzEsIDAsIDEzMSwgCi0gICAgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAKLSAgICAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCisgICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAorICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKKyAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCisgICAgMzMwLCAzMzAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCAxMzUsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCAKKyAgICA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIAorICAgIDEzMSwgMCwgMTMxLCAwLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKKyAgICAwLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAwLCAKKyAgICAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMjcsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzEsIDAsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzI4LCAzMjgsIDMyOCwgCi0gICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgCi0gICAgMzI4LCAzMjgsIDMyOCwgMjQxLCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDAsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDI0MSwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgCisgICAgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDAsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKQEAgLTI1NjYsNjAgKzI4ODksNzYgQEAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCkBAIC0zMTQ2LDM1OSArMzQ4NSwzNTUgQEAKICAgICA1MCwgNDksIDI2MDg1LCA3NzAsIDUwLCA1MCwgMjYwODUsIDc3MCwgNTAsIDUxLCAyNjA4NSwgNzcwLCA1MCwgNTIsIAogICAgIDI2MDg1LCA3NzAsIDUwLCA1MywgMjYwODUsIDc3MCwgNTAsIDU0LCAyNjA4NSwgNzcwLCA1MCwgNTUsIDI2MDg1LCA3NzAsIAogICAgIDUwLCA1NiwgMjYwODUsIDc3MCwgNTAsIDU3LCAyNjA4NSwgNzcwLCA1MSwgNDgsIDI2MDg1LCA3NzAsIDUxLCA0OSwgCi0gICAgMjYwODUsIDc3OCwgMTAzLCA5NywgMTA4LCAyNTksIDQyODYzLCAyNTksIDI5NCwgMjU5LCAzMzksIDI1NiwgMzU5MTIsIAotICAgIDI1NiwgMjYzNTYsIDI1NiwgMzY1NTQsIDI1NiwgMzYwNDAsIDI1NiwgMjgzNjksIDI1NiwgMjAwMTgsIDI1NiwgMjE0NzcsIAotICAgIDI1NiwgNDA4NjAsIDI1NiwgNDA4NjAsIDI1NiwgMjI4NjUsIDI1NiwgMzczMjksIDI1NiwgMjE4OTUsIDI1NiwgMjI4NTYsIAotICAgIDI1NiwgMjUwNzgsIDI1NiwgMzAzMTMsIDI1NiwgMzI2NDUsIDI1NiwgMzQzNjcsIDI1NiwgMzQ3NDYsIDI1NiwgMzUwNjQsIAotICAgIDI1NiwgMzcwMDcsIDI1NiwgMjcxMzgsIDI1NiwgMjc5MzEsIDI1NiwgMjg4ODksIDI1NiwgMjk2NjIsIDI1NiwgMzM4NTMsIAotICAgIDI1NiwgMzcyMjYsIDI1NiwgMzk0MDksIDI1NiwgMjAwOTgsIDI1NiwgMjEzNjUsIDI1NiwgMjczOTYsIDI1NiwgMjkyMTEsIAotICAgIDI1NiwgMzQzNDksIDI1NiwgNDA0NzgsIDI1NiwgMjM4ODgsIDI1NiwgMjg2NTEsIDI1NiwgMzQyNTMsIDI1NiwgMzUxNzIsIAotICAgIDI1NiwgMjUyODksIDI1NiwgMzMyNDAsIDI1NiwgMzQ4NDcsIDI1NiwgMjQyNjYsIDI1NiwgMjYzOTEsIDI1NiwgMjgwMTAsIAotICAgIDI1NiwgMjk0MzYsIDI1NiwgMzcwNzAsIDI1NiwgMjAzNTgsIDI1NiwgMjA5MTksIDI1NiwgMjEyMTQsIDI1NiwgMjU3OTYsIAotICAgIDI1NiwgMjczNDcsIDI1NiwgMjkyMDAsIDI1NiwgMzA0MzksIDI1NiwgMzI3NjksIDI1NiwgMzQzMTAsIDI1NiwgMzQzOTYsIAotICAgIDI1NiwgMzYzMzUsIDI1NiwgMzg3MDYsIDI1NiwgMzk3OTEsIDI1NiwgNDA0NDIsIDI1NiwgMzA4NjAsIDI1NiwgMzExMDMsIAotICAgIDI1NiwgMzIxNjAsIDI1NiwgMzM3MzcsIDI1NiwgMzc2MzYsIDI1NiwgNDA1NzUsIDI1NiwgMzU1NDIsIDI1NiwgMjI3NTEsIAotICAgIDI1NiwgMjQzMjQsIDI1NiwgMzE4NDAsIDI1NiwgMzI4OTQsIDI1NiwgMjkyODIsIDI1NiwgMzA5MjIsIDI1NiwgMzYwMzQsIAotICAgIDI1NiwgMzg2NDcsIDI1NiwgMjI3NDQsIDI1NiwgMjM2NTAsIDI1NiwgMjcxNTUsIDI1NiwgMjgxMjIsIDI1NiwgMjg0MzEsIAotICAgIDI1NiwgMzIwNDcsIDI1NiwgMzIzMTEsIDI1NiwgMzg0NzUsIDI1NiwgMjEyMDIsIDI1NiwgMzI5MDcsIDI1NiwgMjA5NTYsIAotICAgIDI1NiwgMjA5NDAsIDI1NiwgMzEyNjAsIDI1NiwgMzIxOTAsIDI1NiwgMzM3NzcsIDI1NiwgMzg1MTcsIDI1NiwgMzU3MTIsIAotICAgIDI1NiwgMjUyOTUsIDI1NiwgMjcxMzgsIDI1NiwgMzU1ODIsIDI1NiwgMjAwMjUsIDI1NiwgMjM1MjcsIDI1NiwgMjQ1OTQsIAotICAgIDI1NiwgMjk1NzUsIDI1NiwgMzAwNjQsIDI1NiwgMjEyNzEsIDI1NiwgMzA5NzEsIDI1NiwgMjA0MTUsIDI1NiwgMjQ0ODksIAotICAgIDI1NiwgMTk5ODEsIDI1NiwgMjc4NTIsIDI1NiwgMjU5NzYsIDI1NiwgMzIwMzQsIDI1NiwgMjE0NDMsIDI1NiwgMjI2MjIsIAotICAgIDI1NiwgMzA0NjUsIDI1NiwgMzM4NjUsIDI1NiwgMzU0OTgsIDI1NiwgMjc1NzgsIDI1NiwgMzY3ODQsIDI1NiwgMjc3ODQsIAotICAgIDI1NiwgMjUzNDIsIDI1NiwgMzM1MDksIDI1NiwgMjU1MDQsIDI1NiwgMzAwNTMsIDI1NiwgMjAxNDIsIDI1NiwgMjA4NDEsIAotICAgIDI1NiwgMjA5MzcsIDI1NiwgMjY3NTMsIDI1NiwgMzE5NzUsIDI1NiwgMzMzOTEsIDI1NiwgMzU1MzgsIDI1NiwgMzczMjcsIAotICAgIDI1NiwgMjEyMzcsIDI1NiwgMjE1NzAsIDI1NiwgMjI4OTksIDI1NiwgMjQzMDAsIDI1NiwgMjYwNTMsIDI1NiwgMjg2NzAsIAotICAgIDI1NiwgMzEwMTgsIDI1NiwgMzgzMTcsIDI1NiwgMzk1MzAsIDI1NiwgNDA1OTksIDI1NiwgNDA2NTQsIDI1NiwgMjExNDcsIAotICAgIDI1NiwgMjYzMTAsIDI1NiwgMjc1MTEsIDI1NiwgMzY3MDYsIDI1NiwgMjQxODAsIDI1NiwgMjQ5NzYsIDI1NiwgMjUwODgsIAotICAgIDI1NiwgMjU3NTQsIDI1NiwgMjg0NTEsIDI1NiwgMjkwMDEsIDI1NiwgMjk4MzMsIDI1NiwgMzExNzgsIDI1NiwgMzIyNDQsIAotICAgIDI1NiwgMzI4NzksIDI1NiwgMzY2NDYsIDI1NiwgMzQwMzAsIDI1NiwgMzY4OTksIDI1NiwgMzc3MDYsIDI1NiwgMjEwMTUsIAotICAgIDI1NiwgMjExNTUsIDI1NiwgMjE2OTMsIDI1NiwgMjg4NzIsIDI1NiwgMzUwMTAsIDI1NiwgMzU0OTgsIDI1NiwgMjQyNjUsIAotICAgIDI1NiwgMjQ1NjUsIDI1NiwgMjU0NjcsIDI1NiwgMjc1NjYsIDI1NiwgMzE4MDYsIDI1NiwgMjk1NTcsIDI1NiwgMjAxOTYsIAotICAgIDI1NiwgMjIyNjUsIDI1NiwgMjM1MjcsIDI1NiwgMjM5OTQsIDI1NiwgMjQ2MDQsIDI1NiwgMjk2MTgsIDI1NiwgMjk4MDEsIAotICAgIDI1NiwgMzI2NjYsIDI1NiwgMzI4MzgsIDI1NiwgMzc0MjgsIDI1NiwgMzg2NDYsIDI1NiwgMzg3MjgsIDI1NiwgMzg5MzYsIAotICAgIDI1NiwgMjAzNjMsIDI1NiwgMzExNTAsIDI1NiwgMzczMDAsIDI1NiwgMzg1ODQsIDI1NiwgMjQ4MDEsIDI1NiwgMjAxMDIsIAotICAgIDI1NiwgMjA2OTgsIDI1NiwgMjM1MzQsIDI1NiwgMjM2MTUsIDI1NiwgMjYwMDksIDI1NiwgMjcxMzgsIDI1NiwgMjkxMzQsIAotICAgIDI1NiwgMzAyNzQsIDI1NiwgMzQwNDQsIDI1NiwgMzY5ODgsIDI1NiwgNDA4NDUsIDI1NiwgMjYyNDgsIDI1NiwgMzg0NDYsIAotICAgIDI1NiwgMjExMjksIDI1NiwgMjY0OTEsIDI1NiwgMjY2MTEsIDI1NiwgMjc5NjksIDI1NiwgMjgzMTYsIDI1NiwgMjk3MDUsIAotICAgIDI1NiwgMzAwNDEsIDI1NiwgMzA4MjcsIDI1NiwgMzIwMTYsIDI1NiwgMzkwMDYsIDI1NiwgMjA4NDUsIDI1NiwgMjUxMzQsIAotICAgIDI1NiwgMzg1MjAsIDI1NiwgMjA1MjMsIDI1NiwgMjM4MzMsIDI1NiwgMjgxMzgsIDI1NiwgMzY2NTAsIDI1NiwgMjQ0NTksIAotICAgIDI1NiwgMjQ5MDAsIDI1NiwgMjY2NDcsIDI1NiwgMjk1NzUsIDI1NiwgMzg1MzQsIDI1NiwgMjEwMzMsIDI1NiwgMjE1MTksIAotICAgIDI1NiwgMjM2NTMsIDI1NiwgMjYxMzEsIDI1NiwgMjY0NDYsIDI1NiwgMjY3OTIsIDI1NiwgMjc4NzcsIDI1NiwgMjk3MDIsIAotICAgIDI1NiwgMzAxNzgsIDI1NiwgMzI2MzMsIDI1NiwgMzUwMjMsIDI1NiwgMzUwNDEsIDI1NiwgMzczMjQsIDI1NiwgMzg2MjYsIAotICAgIDI1NiwgMjEzMTEsIDI1NiwgMjgzNDYsIDI1NiwgMjE1MzMsIDI1NiwgMjkxMzYsIDI1NiwgMjk4NDgsIDI1NiwgMzQyOTgsIAotICAgIDI1NiwgMzg1NjMsIDI1NiwgNDAwMjMsIDI1NiwgNDA2MDcsIDI1NiwgMjY1MTksIDI1NiwgMjgxMDcsIDI1NiwgMzMyNTYsIAotICAgIDI1NiwgMzE0MzUsIDI1NiwgMzE1MjAsIDI1NiwgMzE4OTAsIDI1NiwgMjkzNzYsIDI1NiwgMjg4MjUsIDI1NiwgMzU2NzIsIAotICAgIDI1NiwgMjAxNjAsIDI1NiwgMzM1OTAsIDI1NiwgMjEwNTAsIDI1NiwgMjA5OTksIDI1NiwgMjQyMzAsIDI1NiwgMjUyOTksIAotICAgIDI1NiwgMzE5NTgsIDI1NiwgMjM0MjksIDI1NiwgMjc5MzQsIDI1NiwgMjYyOTIsIDI1NiwgMzY2NjcsIDI1NiwgMzQ4OTIsIAotICAgIDI1NiwgMzg0NzcsIDI1NiwgMzUyMTEsIDI1NiwgMjQyNzUsIDI1NiwgMjA4MDAsIDI1NiwgMjE5NTIsIDI1NiwgMjI2MTgsIAotICAgIDI1NiwgMjYyMjgsIDI1NiwgMjA5NTgsIDI1NiwgMjk0ODIsIDI1NiwgMzA0MTAsIDI1NiwgMzEwMzYsIDI1NiwgMzEwNzAsIAotICAgIDI1NiwgMzEwNzcsIDI1NiwgMzExMTksIDI1NiwgMzg3NDIsIDI1NiwgMzE5MzQsIDI1NiwgMzI3MDEsIDI1NiwgMzQzMjIsIAotICAgIDI1NiwgMzU1NzYsIDI1NiwgMzY5MjAsIDI1NiwgMzcxMTcsIDI1NiwgMzkxNTEsIDI1NiwgMzkxNjQsIDI1NiwgMzkyMDgsIAotICAgIDI1NiwgNDAzNzIsIDI1NiwgMzcwODYsIDI1NiwgMzg1ODMsIDI1NiwgMjAzOTgsIDI1NiwgMjA3MTEsIDI1NiwgMjA4MTMsIAotICAgIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEzMjksIDI1NiwgMjE5MTcsIDI1NiwgMjIwMjIsIDI1NiwgMjIxMjAsIAotICAgIDI1NiwgMjI1OTIsIDI1NiwgMjI2OTYsIDI1NiwgMjM2NTIsIDI1NiwgMjM2NjIsIDI1NiwgMjQ3MjQsIDI1NiwgMjQ5MzYsIAotICAgIDI1NiwgMjQ5NzQsIDI1NiwgMjUwNzQsIDI1NiwgMjU5MzUsIDI1NiwgMjYwODIsIDI1NiwgMjYyNTcsIDI1NiwgMjY3NTcsIAotICAgIDI1NiwgMjgwMjMsIDI1NiwgMjgxODYsIDI1NiwgMjg0NTAsIDI1NiwgMjkwMzgsIDI1NiwgMjkyMjcsIDI1NiwgMjk3MzAsIAotICAgIDI1NiwgMzA4NjUsIDI1NiwgMzEwMzgsIDI1NiwgMzEwNDksIDI1NiwgMzEwNDgsIDI1NiwgMzEwNTYsIDI1NiwgMzEwNjIsIAotICAgIDI1NiwgMzEwNjksIDI1NiwgMzExMTcsIDI1NiwgMzExMTgsIDI1NiwgMzEyOTYsIDI1NiwgMzEzNjEsIDI1NiwgMzE2ODAsIAotICAgIDI1NiwgMzIyNDQsIDI1NiwgMzIyNjUsIDI1NiwgMzIzMjEsIDI1NiwgMzI2MjYsIDI1NiwgMzI3NzMsIDI1NiwgMzMyNjEsIAotICAgIDI1NiwgMzM0MDEsIDI1NiwgMzM0MDEsIDI1NiwgMzM4NzksIDI1NiwgMzUwODgsIDI1NiwgMzUyMjIsIDI1NiwgMzU1ODUsIAotICAgIDI1NiwgMzU2NDEsIDI1NiwgMzYwNTEsIDI1NiwgMzYxMDQsIDI1NiwgMzY3OTAsIDI1NiwgMzY5MjAsIDI1NiwgMzg2MjcsIAotICAgIDI1NiwgMzg5MTEsIDI1NiwgMzg5NzEsIDI1NiwgMjQ2OTMsIDI1NiwgMTQ4MjA2LCAyNTYsIDMzMzA0LCAyNTYsIDIwMDA2LCAKLSAgICAyNTYsIDIwOTE3LCAyNTYsIDIwODQwLCAyNTYsIDIwMzUyLCAyNTYsIDIwODA1LCAyNTYsIDIwODY0LCAyNTYsIDIxMTkxLCAKLSAgICAyNTYsIDIxMjQyLCAyNTYsIDIxOTE3LCAyNTYsIDIxODQ1LCAyNTYsIDIxOTEzLCAyNTYsIDIxOTg2LCAyNTYsIDIyNjE4LCAKLSAgICAyNTYsIDIyNzA3LCAyNTYsIDIyODUyLCAyNTYsIDIyODY4LCAyNTYsIDIzMTM4LCAyNTYsIDIzMzM2LCAyNTYsIDI0Mjc0LCAKLSAgICAyNTYsIDI0MjgxLCAyNTYsIDI0NDI1LCAyNTYsIDI0NDkzLCAyNTYsIDI0NzkyLCAyNTYsIDI0OTEwLCAyNTYsIDI0ODQwLCAKLSAgICAyNTYsIDI0OTc0LCAyNTYsIDI0OTI4LCAyNTYsIDI1MDc0LCAyNTYsIDI1MTQwLCAyNTYsIDI1NTQwLCAyNTYsIDI1NjI4LCAKLSAgICAyNTYsIDI1NjgyLCAyNTYsIDI1OTQyLCAyNTYsIDI2MjI4LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDU0LCAKLSAgICAyNTYsIDI3NTEzLCAyNTYsIDI3NTc4LCAyNTYsIDI3OTY5LCAyNTYsIDI4Mzc5LCAyNTYsIDI4MzYzLCAyNTYsIDI4NDUwLCAKLSAgICAyNTYsIDI4NzAyLCAyNTYsIDI5MDM4LCAyNTYsIDMwNjMxLCAyNTYsIDI5MjM3LCAyNTYsIDI5MzU5LCAyNTYsIDI5NDgyLCAKLSAgICAyNTYsIDI5ODA5LCAyNTYsIDI5OTU4LCAyNTYsIDMwMDExLCAyNTYsIDMwMjM3LCAyNTYsIDMwMjM5LCAyNTYsIDMwNDEwLCAKLSAgICAyNTYsIDMwNDI3LCAyNTYsIDMwNDUyLCAyNTYsIDMwNTM4LCAyNTYsIDMwNTI4LCAyNTYsIDMwOTI0LCAyNTYsIDMxNDA5LCAKLSAgICAyNTYsIDMxNjgwLCAyNTYsIDMxODY3LCAyNTYsIDMyMDkxLCAyNTYsIDMyMjQ0LCAyNTYsIDMyNTc0LCAyNTYsIDMyNzczLCAKLSAgICAyNTYsIDMzNjE4LCAyNTYsIDMzNzc1LCAyNTYsIDM0NjgxLCAyNTYsIDM1MTM3LCAyNTYsIDM1MjA2LCAyNTYsIDM1MjIyLCAKLSAgICAyNTYsIDM1NTE5LCAyNTYsIDM1NTc2LCAyNTYsIDM1NTMxLCAyNTYsIDM1NTg1LCAyNTYsIDM1NTgyLCAyNTYsIDM1NTY1LCAKLSAgICAyNTYsIDM1NjQxLCAyNTYsIDM1NzIyLCAyNTYsIDM2MTA0LCAyNTYsIDM2NjY0LCAyNTYsIDM2OTc4LCAyNTYsIDM3MjczLCAKLSAgICAyNTYsIDM3NDk0LCAyNTYsIDM4NTI0LCAyNTYsIDM4NjI3LCAyNTYsIDM4NzQyLCAyNTYsIDM4ODc1LCAyNTYsIDM4OTExLCAKLSAgICAyNTYsIDM4OTIzLCAyNTYsIDM4OTcxLCAyNTYsIDM5Njk4LCAyNTYsIDQwODYwLCAyNTYsIDE0MTM4NiwgMjU2LCAxNDEzODAsIAotICAgIDI1NiwgMTQ0MzQxLCAyNTYsIDE1MjYxLCAyNTYsIDE2NDA4LCAyNTYsIDE2NDQxLCAyNTYsIDE1MjEzNywgMjU2LCAKLSAgICAxNTQ4MzIsIDI1NiwgMTYzNTM5LCAyNTYsIDQwNzcxLCAyNTYsIDQwODQ2LCA1MTQsIDEwMiwgMTAyLCA1MTQsIDEwMiwgCi0gICAgMTA1LCA1MTQsIDEwMiwgMTA4LCA3NzAsIDEwMiwgMTAyLCAxMDUsIDc3MCwgMTAyLCAxMDIsIDEwOCwgNTE0LCAzODMsIAotICAgIDExNiwgNTE0LCAxMTUsIDExNiwgNTE0LCAxMzk2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODEsIDUxNCwgMTM5NiwgMTM4NywgCi0gICAgNTE0LCAxNDA2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODksIDUxMiwgMTQ5NywgMTQ2MCwgNTEyLCAxNTIyLCAxNDYzLCAyNjIsIAotICAgIDE1MDYsIDI2MiwgMTQ4OCwgMjYyLCAxNDkxLCAyNjIsIDE0OTIsIDI2MiwgMTQ5OSwgMjYyLCAxNTAwLCAyNjIsIDE1MDEsIAotICAgIDI2MiwgMTUxMiwgMjYyLCAxNTE0LCAyNjIsIDQzLCA1MTIsIDE1MTMsIDE0NzMsIDUxMiwgMTUxMywgMTQ3NCwgNTEyLCAKLSAgICA2NDMyOSwgMTQ3MywgNTEyLCA2NDMyOSwgMTQ3NCwgNTEyLCAxNDg4LCAxNDYzLCA1MTIsIDE0ODgsIDE0NjQsIDUxMiwgCi0gICAgMTQ4OCwgMTQ2OCwgNTEyLCAxNDg5LCAxNDY4LCA1MTIsIDE0OTAsIDE0NjgsIDUxMiwgMTQ5MSwgMTQ2OCwgNTEyLCAxNDkyLCAKLSAgICAxNDY4LCA1MTIsIDE0OTMsIDE0NjgsIDUxMiwgMTQ5NCwgMTQ2OCwgNTEyLCAxNDk2LCAxNDY4LCA1MTIsIDE0OTcsIDE0NjgsIAotICAgIDUxMiwgMTQ5OCwgMTQ2OCwgNTEyLCAxNDk5LCAxNDY4LCA1MTIsIDE1MDAsIDE0NjgsIDUxMiwgMTUwMiwgMTQ2OCwgNTEyLCAKLSAgICAxNTA0LCAxNDY4LCA1MTIsIDE1MDUsIDE0NjgsIDUxMiwgMTUwNywgMTQ2OCwgNTEyLCAxNTA4LCAxNDY4LCA1MTIsIDE1MTAsIAotICAgIDE0NjgsIDUxMiwgMTUxMSwgMTQ2OCwgNTEyLCAxNTEyLCAxNDY4LCA1MTIsIDE1MTMsIDE0NjgsIDUxMiwgMTUxNCwgMTQ2OCwgCi0gICAgNTEyLCAxNDkzLCAxNDY1LCA1MTIsIDE0ODksIDE0NzEsIDUxMiwgMTQ5OSwgMTQ3MSwgNTEyLCAxNTA4LCAxNDcxLCA1MTQsIAotICAgIDE0ODgsIDE1MDAsIDI2NywgMTY0OSwgMjY4LCAxNjQ5LCAyNjcsIDE2NTksIDI2OCwgMTY1OSwgMjY5LCAxNjU5LCAyNzAsIAotICAgIDE2NTksIDI2NywgMTY2MiwgMjY4LCAxNjYyLCAyNjksIDE2NjIsIDI3MCwgMTY2MiwgMjY3LCAxNjY0LCAyNjgsIDE2NjQsIAotICAgIDI2OSwgMTY2NCwgMjcwLCAxNjY0LCAyNjcsIDE2NTgsIDI2OCwgMTY1OCwgMjY5LCAxNjU4LCAyNzAsIDE2NTgsIDI2NywgCi0gICAgMTY2MywgMjY4LCAxNjYzLCAyNjksIDE2NjMsIDI3MCwgMTY2MywgMjY3LCAxNjU3LCAyNjgsIDE2NTcsIDI2OSwgMTY1NywgCi0gICAgMjcwLCAxNjU3LCAyNjcsIDE3MDAsIDI2OCwgMTcwMCwgMjY5LCAxNzAwLCAyNzAsIDE3MDAsIDI2NywgMTcwMiwgMjY4LCAKLSAgICAxNzAyLCAyNjksIDE3MDIsIDI3MCwgMTcwMiwgMjY3LCAxNjY4LCAyNjgsIDE2NjgsIDI2OSwgMTY2OCwgMjcwLCAxNjY4LCAKLSAgICAyNjcsIDE2NjcsIDI2OCwgMTY2NywgMjY5LCAxNjY3LCAyNzAsIDE2NjcsIDI2NywgMTY3MCwgMjY4LCAxNjcwLCAyNjksIAotICAgIDE2NzAsIDI3MCwgMTY3MCwgMjY3LCAxNjcxLCAyNjgsIDE2NzEsIDI2OSwgMTY3MSwgMjcwLCAxNjcxLCAyNjcsIDE2NzcsIAotICAgIDI2OCwgMTY3NywgMjY3LCAxNjc2LCAyNjgsIDE2NzYsIDI2NywgMTY3OCwgMjY4LCAxNjc4LCAyNjcsIDE2NzIsIDI2OCwgCi0gICAgMTY3MiwgMjY3LCAxNjg4LCAyNjgsIDE2ODgsIDI2NywgMTY4MSwgMjY4LCAxNjgxLCAyNjcsIDE3MDUsIDI2OCwgMTcwNSwgCi0gICAgMjY5LCAxNzA1LCAyNzAsIDE3MDUsIDI2NywgMTcxMSwgMjY4LCAxNzExLCAyNjksIDE3MTEsIDI3MCwgMTcxMSwgMjY3LCAKLSAgICAxNzE1LCAyNjgsIDE3MTUsIDI2OSwgMTcxNSwgMjcwLCAxNzE1LCAyNjcsIDE3MTMsIDI2OCwgMTcxMywgMjY5LCAxNzEzLCAKLSAgICAyNzAsIDE3MTMsIDI2NywgMTcyMiwgMjY4LCAxNzIyLCAyNjcsIDE3MjMsIDI2OCwgMTcyMywgMjY5LCAxNzIzLCAyNzAsIAotICAgIDE3MjMsIDI2NywgMTcyOCwgMjY4LCAxNzI4LCAyNjcsIDE3MjksIDI2OCwgMTcyOSwgMjY5LCAxNzI5LCAyNzAsIDE3MjksIAotICAgIDI2NywgMTcyNiwgMjY4LCAxNzI2LCAyNjksIDE3MjYsIDI3MCwgMTcyNiwgMjY3LCAxNzQ2LCAyNjgsIDE3NDYsIDI2NywgCi0gICAgMTc0NywgMjY4LCAxNzQ3LCAyNjcsIDE3MDksIDI2OCwgMTcwOSwgMjY5LCAxNzA5LCAyNzAsIDE3MDksIDI2NywgMTczNSwgCi0gICAgMjY4LCAxNzM1LCAyNjcsIDE3MzQsIDI2OCwgMTczNCwgMjY3LCAxNzM2LCAyNjgsIDE3MzYsIDI2NywgMTY1NSwgMjY3LCAKLSAgICAxNzM5LCAyNjgsIDE3MzksIDI2NywgMTczMywgMjY4LCAxNzMzLCAyNjcsIDE3MzcsIDI2OCwgMTczNywgMjY3LCAxNzQ0LCAKLSAgICAyNjgsIDE3NDQsIDI2OSwgMTc0NCwgMjcwLCAxNzQ0LCAyNjksIDE2MDksIDI3MCwgMTYwOSwgNTIzLCAxNTc0LCAxNTc1LCAKLSAgICA1MjQsIDE1NzQsIDE1NzUsIDUyMywgMTU3NCwgMTc0OSwgNTI0LCAxNTc0LCAxNzQ5LCA1MjMsIDE1NzQsIDE2MDgsIDUyNCwgCi0gICAgMTU3NCwgMTYwOCwgNTIzLCAxNTc0LCAxNzM1LCA1MjQsIDE1NzQsIDE3MzUsIDUyMywgMTU3NCwgMTczNCwgNTI0LCAxNTc0LCAKLSAgICAxNzM0LCA1MjMsIDE1NzQsIDE3MzYsIDUyNCwgMTU3NCwgMTczNiwgNTIzLCAxNTc0LCAxNzQ0LCA1MjQsIDE1NzQsIDE3NDQsIAotICAgIDUyNSwgMTU3NCwgMTc0NCwgNTIzLCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MDksIDUyNSwgMTU3NCwgMTYwOSwgMjY3LCAKLSAgICAxNzQwLCAyNjgsIDE3NDAsIDI2OSwgMTc0MCwgMjcwLCAxNzQwLCA1MjMsIDE1NzQsIDE1ODAsIDUyMywgMTU3NCwgMTU4MSwgCi0gICAgNTIzLCAxNTc0LCAxNjA1LCA1MjMsIDE1NzQsIDE2MDksIDUyMywgMTU3NCwgMTYxMCwgNTIzLCAxNTc2LCAxNTgwLCA1MjMsIAotICAgIDE1NzYsIDE1ODEsIDUyMywgMTU3NiwgMTU4MiwgNTIzLCAxNTc2LCAxNjA1LCA1MjMsIDE1NzYsIDE2MDksIDUyMywgMTU3NiwgCi0gICAgMTYxMCwgNTIzLCAxNTc4LCAxNTgwLCA1MjMsIDE1NzgsIDE1ODEsIDUyMywgMTU3OCwgMTU4MiwgNTIzLCAxNTc4LCAxNjA1LCAKLSAgICA1MjMsIDE1NzgsIDE2MDksIDUyMywgMTU3OCwgMTYxMCwgNTIzLCAxNTc5LCAxNTgwLCA1MjMsIDE1NzksIDE2MDUsIDUyMywgCi0gICAgMTU3OSwgMTYwOSwgNTIzLCAxNTc5LCAxNjEwLCA1MjMsIDE1ODAsIDE1ODEsIDUyMywgMTU4MCwgMTYwNSwgNTIzLCAxNTgxLCAKLSAgICAxNTgwLCA1MjMsIDE1ODEsIDE2MDUsIDUyMywgMTU4MiwgMTU4MCwgNTIzLCAxNTgyLCAxNTgxLCA1MjMsIDE1ODIsIDE2MDUsIAotICAgIDUyMywgMTU4NywgMTU4MCwgNTIzLCAxNTg3LCAxNTgxLCA1MjMsIDE1ODcsIDE1ODIsIDUyMywgMTU4NywgMTYwNSwgNTIzLCAKLSAgICAxNTg5LCAxNTgxLCA1MjMsIDE1ODksIDE2MDUsIDUyMywgMTU5MCwgMTU4MCwgNTIzLCAxNTkwLCAxNTgxLCA1MjMsIDE1OTAsIAotICAgIDE1ODIsIDUyMywgMTU5MCwgMTYwNSwgNTIzLCAxNTkxLCAxNTgxLCA1MjMsIDE1OTEsIDE2MDUsIDUyMywgMTU5MiwgMTYwNSwgCi0gICAgNTIzLCAxNTkzLCAxNTgwLCA1MjMsIDE1OTMsIDE2MDUsIDUyMywgMTU5NCwgMTU4MCwgNTIzLCAxNTk0LCAxNjA1LCA1MjMsIAotICAgIDE2MDEsIDE1ODAsIDUyMywgMTYwMSwgMTU4MSwgNTIzLCAxNjAxLCAxNTgyLCA1MjMsIDE2MDEsIDE2MDUsIDUyMywgMTYwMSwgCi0gICAgMTYwOSwgNTIzLCAxNjAxLCAxNjEwLCA1MjMsIDE2MDIsIDE1ODEsIDUyMywgMTYwMiwgMTYwNSwgNTIzLCAxNjAyLCAxNjA5LCAKLSAgICA1MjMsIDE2MDIsIDE2MTAsIDUyMywgMTYwMywgMTU3NSwgNTIzLCAxNjAzLCAxNTgwLCA1MjMsIDE2MDMsIDE1ODEsIDUyMywgCi0gICAgMTYwMywgMTU4MiwgNTIzLCAxNjAzLCAxNjA0LCA1MjMsIDE2MDMsIDE2MDUsIDUyMywgMTYwMywgMTYwOSwgNTIzLCAxNjAzLCAKLSAgICAxNjEwLCA1MjMsIDE2MDQsIDE1ODAsIDUyMywgMTYwNCwgMTU4MSwgNTIzLCAxNjA0LCAxNTgyLCA1MjMsIDE2MDQsIDE2MDUsIAotICAgIDUyMywgMTYwNCwgMTYwOSwgNTIzLCAxNjA0LCAxNjEwLCA1MjMsIDE2MDUsIDE1ODAsIDUyMywgMTYwNSwgMTU4MSwgNTIzLCAKLSAgICAxNjA1LCAxNTgyLCA1MjMsIDE2MDUsIDE2MDUsIDUyMywgMTYwNSwgMTYwOSwgNTIzLCAxNjA1LCAxNjEwLCA1MjMsIDE2MDYsIAotICAgIDE1ODAsIDUyMywgMTYwNiwgMTU4MSwgNTIzLCAxNjA2LCAxNTgyLCA1MjMsIDE2MDYsIDE2MDUsIDUyMywgMTYwNiwgMTYwOSwgCi0gICAgNTIzLCAxNjA2LCAxNjEwLCA1MjMsIDE2MDcsIDE1ODAsIDUyMywgMTYwNywgMTYwNSwgNTIzLCAxNjA3LCAxNjA5LCA1MjMsIAotICAgIDE2MDcsIDE2MTAsIDUyMywgMTYxMCwgMTU4MCwgNTIzLCAxNjEwLCAxNTgxLCA1MjMsIDE2MTAsIDE1ODIsIDUyMywgMTYxMCwgCi0gICAgMTYwNSwgNTIzLCAxNjEwLCAxNjA5LCA1MjMsIDE2MTAsIDE2MTAsIDUyMywgMTU4NCwgMTY0OCwgNTIzLCAxNTg1LCAxNjQ4LCAKLSAgICA1MjMsIDE2MDksIDE2NDgsIDc3OSwgMzIsIDE2MTIsIDE2MTcsIDc3OSwgMzIsIDE2MTMsIDE2MTcsIDc3OSwgMzIsIDE2MTQsIAotICAgIDE2MTcsIDc3OSwgMzIsIDE2MTUsIDE2MTcsIDc3OSwgMzIsIDE2MTYsIDE2MTcsIDc3OSwgMzIsIDE2MTcsIDE2NDgsIDUyNCwgCi0gICAgMTU3NCwgMTU4NSwgNTI0LCAxNTc0LCAxNTg2LCA1MjQsIDE1NzQsIDE2MDUsIDUyNCwgMTU3NCwgMTYwNiwgNTI0LCAxNTc0LCAKLSAgICAxNjA5LCA1MjQsIDE1NzQsIDE2MTAsIDUyNCwgMTU3NiwgMTU4NSwgNTI0LCAxNTc2LCAxNTg2LCA1MjQsIDE1NzYsIDE2MDUsIAotICAgIDUyNCwgMTU3NiwgMTYwNiwgNTI0LCAxNTc2LCAxNjA5LCA1MjQsIDE1NzYsIDE2MTAsIDUyNCwgMTU3OCwgMTU4NSwgNTI0LCAKLSAgICAxNTc4LCAxNTg2LCA1MjQsIDE1NzgsIDE2MDUsIDUyNCwgMTU3OCwgMTYwNiwgNTI0LCAxNTc4LCAxNjA5LCA1MjQsIDE1NzgsIAotICAgIDE2MTAsIDUyNCwgMTU3OSwgMTU4NSwgNTI0LCAxNTc5LCAxNTg2LCA1MjQsIDE1NzksIDE2MDUsIDUyNCwgMTU3OSwgMTYwNiwgCi0gICAgNTI0LCAxNTc5LCAxNjA5LCA1MjQsIDE1NzksIDE2MTAsIDUyNCwgMTYwMSwgMTYwOSwgNTI0LCAxNjAxLCAxNjEwLCA1MjQsIAotICAgIDE2MDIsIDE2MDksIDUyNCwgMTYwMiwgMTYxMCwgNTI0LCAxNjAzLCAxNTc1LCA1MjQsIDE2MDMsIDE2MDQsIDUyNCwgMTYwMywgCi0gICAgMTYwNSwgNTI0LCAxNjAzLCAxNjA5LCA1MjQsIDE2MDMsIDE2MTAsIDUyNCwgMTYwNCwgMTYwNSwgNTI0LCAxNjA0LCAxNjA5LCAKLSAgICA1MjQsIDE2MDQsIDE2MTAsIDUyNCwgMTYwNSwgMTU3NSwgNTI0LCAxNjA1LCAxNjA1LCA1MjQsIDE2MDYsIDE1ODUsIDUyNCwgCi0gICAgMTYwNiwgMTU4NiwgNTI0LCAxNjA2LCAxNjA1LCA1MjQsIDE2MDYsIDE2MDYsIDUyNCwgMTYwNiwgMTYwOSwgNTI0LCAxNjA2LCAKLSAgICAxNjEwLCA1MjQsIDE2MDksIDE2NDgsIDUyNCwgMTYxMCwgMTU4NSwgNTI0LCAxNjEwLCAxNTg2LCA1MjQsIDE2MTAsIDE2MDUsIAotICAgIDUyNCwgMTYxMCwgMTYwNiwgNTI0LCAxNjEwLCAxNjA5LCA1MjQsIDE2MTAsIDE2MTAsIDUyNSwgMTU3NCwgMTU4MCwgNTI1LCAKLSAgICAxNTc0LCAxNTgxLCA1MjUsIDE1NzQsIDE1ODIsIDUyNSwgMTU3NCwgMTYwNSwgNTI1LCAxNTc0LCAxNjA3LCA1MjUsIDE1NzYsIAotICAgIDE1ODAsIDUyNSwgMTU3NiwgMTU4MSwgNTI1LCAxNTc2LCAxNTgyLCA1MjUsIDE1NzYsIDE2MDUsIDUyNSwgMTU3NiwgMTYwNywgCi0gICAgNTI1LCAxNTc4LCAxNTgwLCA1MjUsIDE1NzgsIDE1ODEsIDUyNSwgMTU3OCwgMTU4MiwgNTI1LCAxNTc4LCAxNjA1LCA1MjUsIAotICAgIDE1NzgsIDE2MDcsIDUyNSwgMTU3OSwgMTYwNSwgNTI1LCAxNTgwLCAxNTgxLCA1MjUsIDE1ODAsIDE2MDUsIDUyNSwgMTU4MSwgCi0gICAgMTU4MCwgNTI1LCAxNTgxLCAxNjA1LCA1MjUsIDE1ODIsIDE1ODAsIDUyNSwgMTU4MiwgMTYwNSwgNTI1LCAxNTg3LCAxNTgwLCAKLSAgICA1MjUsIDE1ODcsIDE1ODEsIDUyNSwgMTU4NywgMTU4MiwgNTI1LCAxNTg3LCAxNjA1LCA1MjUsIDE1ODksIDE1ODEsIDUyNSwgCi0gICAgMTU4OSwgMTU4MiwgNTI1LCAxNTg5LCAxNjA1LCA1MjUsIDE1OTAsIDE1ODAsIDUyNSwgMTU5MCwgMTU4MSwgNTI1LCAxNTkwLCAKLSAgICAxNTgyLCA1MjUsIDE1OTAsIDE2MDUsIDUyNSwgMTU5MSwgMTU4MSwgNTI1LCAxNTkyLCAxNjA1LCA1MjUsIDE1OTMsIDE1ODAsIAotICAgIDUyNSwgMTU5MywgMTYwNSwgNTI1LCAxNTk0LCAxNTgwLCA1MjUsIDE1OTQsIDE2MDUsIDUyNSwgMTYwMSwgMTU4MCwgNTI1LCAKLSAgICAxNjAxLCAxNTgxLCA1MjUsIDE2MDEsIDE1ODIsIDUyNSwgMTYwMSwgMTYwNSwgNTI1LCAxNjAyLCAxNTgxLCA1MjUsIDE2MDIsIAotICAgIDE2MDUsIDUyNSwgMTYwMywgMTU4MCwgNTI1LCAxNjAzLCAxNTgxLCA1MjUsIDE2MDMsIDE1ODIsIDUyNSwgMTYwMywgMTYwNCwgCi0gICAgNTI1LCAxNjAzLCAxNjA1LCA1MjUsIDE2MDQsIDE1ODAsIDUyNSwgMTYwNCwgMTU4MSwgNTI1LCAxNjA0LCAxNTgyLCA1MjUsIAotICAgIDE2MDQsIDE2MDUsIDUyNSwgMTYwNCwgMTYwNywgNTI1LCAxNjA1LCAxNTgwLCA1MjUsIDE2MDUsIDE1ODEsIDUyNSwgMTYwNSwgCi0gICAgMTU4MiwgNTI1LCAxNjA1LCAxNjA1LCA1MjUsIDE2MDYsIDE1ODAsIDUyNSwgMTYwNiwgMTU4MSwgNTI1LCAxNjA2LCAxNTgyLCAKLSAgICA1MjUsIDE2MDYsIDE2MDUsIDUyNSwgMTYwNiwgMTYwNywgNTI1LCAxNjA3LCAxNTgwLCA1MjUsIDE2MDcsIDE2MDUsIDUyNSwgCi0gICAgMTYwNywgMTY0OCwgNTI1LCAxNjEwLCAxNTgwLCA1MjUsIDE2MTAsIDE1ODEsIDUyNSwgMTYxMCwgMTU4MiwgNTI1LCAxNjEwLCAKLSAgICAxNjA1LCA1MjUsIDE2MTAsIDE2MDcsIDUyNiwgMTU3NCwgMTYwNSwgNTI2LCAxNTc0LCAxNjA3LCA1MjYsIDE1NzYsIDE2MDUsIAotICAgIDUyNiwgMTU3NiwgMTYwNywgNTI2LCAxNTc4LCAxNjA1LCA1MjYsIDE1NzgsIDE2MDcsIDUyNiwgMTU3OSwgMTYwNSwgNTI2LCAKLSAgICAxNTc5LCAxNjA3LCA1MjYsIDE1ODcsIDE2MDUsIDUyNiwgMTU4NywgMTYwNywgNTI2LCAxNTg4LCAxNjA1LCA1MjYsIDE1ODgsIAotICAgIDE2MDcsIDUyNiwgMTYwMywgMTYwNCwgNTI2LCAxNjAzLCAxNjA1LCA1MjYsIDE2MDQsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNSwgCi0gICAgNTI2LCAxNjA2LCAxNjA3LCA1MjYsIDE2MTAsIDE2MDUsIDUyNiwgMTYxMCwgMTYwNywgNzgyLCAxNjAwLCAxNjE0LCAxNjE3LCAKLSAgICA3ODIsIDE2MDAsIDE2MTUsIDE2MTcsIDc4MiwgMTYwMCwgMTYxNiwgMTYxNywgNTIzLCAxNTkxLCAxNjA5LCA1MjMsIDE1OTEsIAotICAgIDE2MTAsIDUyMywgMTU5MywgMTYwOSwgNTIzLCAxNTkzLCAxNjEwLCA1MjMsIDE1OTQsIDE2MDksIDUyMywgMTU5NCwgMTYxMCwgCi0gICAgNTIzLCAxNTg3LCAxNjA5LCA1MjMsIDE1ODcsIDE2MTAsIDUyMywgMTU4OCwgMTYwOSwgNTIzLCAxNTg4LCAxNjEwLCA1MjMsIAotICAgIDE1ODEsIDE2MDksIDUyMywgMTU4MSwgMTYxMCwgNTIzLCAxNTgwLCAxNjA5LCA1MjMsIDE1ODAsIDE2MTAsIDUyMywgMTU4MiwgCi0gICAgMTYwOSwgNTIzLCAxNTgyLCAxNjEwLCA1MjMsIDE1ODksIDE2MDksIDUyMywgMTU4OSwgMTYxMCwgNTIzLCAxNTkwLCAxNjA5LCAKLSAgICA1MjMsIDE1OTAsIDE2MTAsIDUyMywgMTU4OCwgMTU4MCwgNTIzLCAxNTg4LCAxNTgxLCA1MjMsIDE1ODgsIDE1ODIsIDUyMywgCi0gICAgMTU4OCwgMTYwNSwgNTIzLCAxNTg4LCAxNTg1LCA1MjMsIDE1ODcsIDE1ODUsIDUyMywgMTU4OSwgMTU4NSwgNTIzLCAxNTkwLCAKLSAgICAxNTg1LCA1MjQsIDE1OTEsIDE2MDksIDUyNCwgMTU5MSwgMTYxMCwgNTI0LCAxNTkzLCAxNjA5LCA1MjQsIDE1OTMsIDE2MTAsIAotICAgIDUyNCwgMTU5NCwgMTYwOSwgNTI0LCAxNTk0LCAxNjEwLCA1MjQsIDE1ODcsIDE2MDksIDUyNCwgMTU4NywgMTYxMCwgNTI0LCAKLSAgICAxNTg4LCAxNjA5LCA1MjQsIDE1ODgsIDE2MTAsIDUyNCwgMTU4MSwgMTYwOSwgNTI0LCAxNTgxLCAxNjEwLCA1MjQsIDE1ODAsIAotICAgIDE2MDksIDUyNCwgMTU4MCwgMTYxMCwgNTI0LCAxNTgyLCAxNjA5LCA1MjQsIDE1ODIsIDE2MTAsIDUyNCwgMTU4OSwgMTYwOSwgCi0gICAgNTI0LCAxNTg5LCAxNjEwLCA1MjQsIDE1OTAsIDE2MDksIDUyNCwgMTU5MCwgMTYxMCwgNTI0LCAxNTg4LCAxNTgwLCA1MjQsIAotICAgIDE1ODgsIDE1ODEsIDUyNCwgMTU4OCwgMTU4MiwgNTI0LCAxNTg4LCAxNjA1LCA1MjQsIDE1ODgsIDE1ODUsIDUyNCwgMTU4NywgCi0gICAgMTU4NSwgNTI0LCAxNTg5LCAxNTg1LCA1MjQsIDE1OTAsIDE1ODUsIDUyNSwgMTU4OCwgMTU4MCwgNTI1LCAxNTg4LCAxNTgxLCAKLSAgICA1MjUsIDE1ODgsIDE1ODIsIDUyNSwgMTU4OCwgMTYwNSwgNTI1LCAxNTg3LCAxNjA3LCA1MjUsIDE1ODgsIDE2MDcsIDUyNSwgCi0gICAgMTU5MSwgMTYwNSwgNTI2LCAxNTg3LCAxNTgwLCA1MjYsIDE1ODcsIDE1ODEsIDUyNiwgMTU4NywgMTU4MiwgNTI2LCAxNTg4LCAKLSAgICAxNTgwLCA1MjYsIDE1ODgsIDE1ODEsIDUyNiwgMTU4OCwgMTU4MiwgNTI2LCAxNTkxLCAxNjA1LCA1MjYsIDE1OTIsIDE2MDUsIAotICAgIDUyNCwgMTU3NSwgMTYxMSwgNTIzLCAxNTc1LCAxNjExLCA3ODEsIDE1NzgsIDE1ODAsIDE2MDUsIDc4MCwgMTU3OCwgMTU4MSwgCi0gICAgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE2MDUsIDc4MSwgMTU3OCwgMTU4MiwgCi0gICAgMTYwNSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgwLCA3ODEsIDE1NzgsIDE2MDUsIDE1ODEsIDc4MSwgMTU3OCwgMTYwNSwgCi0gICAgMTU4MiwgNzgwLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODEsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MCwgMTU4MSwgMTYwNSwgCi0gICAgMTYxMCwgNzgwLCAxNTgxLCAxNjA1LCAxNjA5LCA3ODEsIDE1ODcsIDE1ODEsIDE1ODAsIDc4MSwgMTU4NywgMTU4MCwgCi0gICAgMTU4MSwgNzgwLCAxNTg3LCAxNTgwLCAxNjA5LCA3ODAsIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgCi0gICAgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgwLCA3ODAsIDE1ODcsIDE2MDUsIDE2MDUsIDc4MSwgMTU4NywgMTYwNSwgCi0gICAgMTYwNSwgNzgwLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODEsIDE1ODksIDE1ODEsIDE1ODEsIDc4MCwgMTU4OSwgMTYwNSwgCi0gICAgMTYwNSwgNzgwLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODEsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MCwgCi0gICAgMTYxMCwgNzgwLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODEsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4OCwgMTYwNSwgCi0gICAgMTYwNSwgNzgxLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODAsIDE1OTAsIDE1ODEsIDE2MDksIDc4MCwgMTU5MCwgMTU4MiwgCi0gICAgMTYwNSwgNzgxLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODAsIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgCi0gICAgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTEsIDE2MDUsIDE2MTAsIDc4MCwgMTU5MywgMTU4MCwgCi0gICAgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODEsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgCi0gICAgMTYwOSwgNzgwLCAxNTk0LCAxNjA1LCAxNjA1LCA3ODAsIDE1OTQsIDE2MDUsIDE2MTAsIDc4MCwgMTU5NCwgMTYwNSwgCi0gICAgMTYwOSwgNzgwLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODEsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MCwgMTYwMiwgMTYwNSwgCi0gICAgMTU4MSwgNzgwLCAxNjAyLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgCi0gICAgMTYxMCwgNzgwLCAxNjA0LCAxNTgxLCAxNjA5LCA3ODEsIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MCwgCi0gICAgMTU4MCwgNzgwLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MCwgMTYwNCwgMTYwNSwgCi0gICAgMTU4MSwgNzgxLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIDE2MDUsIDE1ODEsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MSwgCi0gICAgMTYwNSwgNzgwLCAxNjA1LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDUsIDE1ODAsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MCwgCi0gICAgMTYwNSwgNzgxLCAxNjA1LCAxNTgyLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MCwgCi0gICAgMTU4MiwgNzgxLCAxNjA3LCAxNjA1LCAxNTgwLCA3ODEsIDE2MDcsIDE2MDUsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MSwgCi0gICAgMTYwNSwgNzgwLCAxNjA2LCAxNTgxLCAxNjA5LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MCwgCi0gICAgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA5LCA3ODAsIDE2MDYsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTYwNSwgCi0gICAgMTYwOSwgNzgwLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODEsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MCwgMTU3NiwgMTU4MiwgCi0gICAgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MDksIDc4MCwgMTU3OCwgMTU4MiwgCi0gICAgMTYxMCwgNzgwLCAxNTc4LCAxNTgyLCAxNjA5LCA3ODAsIDE1NzgsIDE2MDUsIDE2MTAsIDc4MCwgMTU3OCwgMTYwNSwgCi0gICAgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjEwLCA3ODAsIDE1ODAsIDE1ODEsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgCi0gICAgMTYwOSwgNzgwLCAxNTg3LCAxNTgyLCAxNjA5LCA3ODAsIDE1ODksIDE1ODEsIDE2MTAsIDc4MCwgMTU4OCwgMTU4MSwgCi0gICAgMTYxMCwgNzgwLCAxNTkwLCAxNTgxLCAxNjEwLCA3ODAsIDE2MDQsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNCwgMTYwNSwgCi0gICAgMTYxMCwgNzgwLCAxNjEwLCAxNTgxLCAxNjEwLCA3ODAsIDE2MTAsIDE1ODAsIDE2MTAsIDc4MCwgMTYxMCwgMTYwNSwgCi0gICAgMTYxMCwgNzgwLCAxNjA1LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDIsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MSwgCi0gICAgMTYxMCwgNzgxLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODEsIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgCi0gICAgMTYxMCwgNzgwLCAxNjAzLCAxNjA1LCAxNjEwLCA3ODEsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTYwNSwgMTU4MiwgCi0gICAgMTYxMCwgNzgxLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MCwgCi0gICAgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE1ODAsIDE1ODEsIDE2MTAsIDc4MCwgMTU4MSwgMTU4MCwgCi0gICAgMTYxMCwgNzgwLCAxNjA1LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDEsIDE2MDUsIDE2MTAsIDc4MCwgMTU3NiwgMTU4MSwgCi0gICAgMTYxMCwgNzgxLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODEsIDE1OTMsIDE1ODAsIDE2MDUsIDc4MSwgMTU4OSwgMTYwNSwgCi0gICAgMTYwNSwgNzgwLCAxNTg3LCAxNTgyLCAxNjEwLCA3ODAsIDE2MDYsIDE1ODAsIDE2MTAsIDc3OSwgMTU4OSwgMTYwNCwgCi0gICAgMTc0NiwgNzc5LCAxNjAyLCAxNjA0LCAxNzQ2LCAxMDM1LCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTc1LCAKLSAgICAxNjAzLCAxNTc2LCAxNTg1LCAxMDM1LCAxNjA1LCAxNTgxLCAxNjA1LCAxNTgzLCAxMDM1LCAxNTg5LCAxNjA0LCAxNTkzLCAKLSAgICAxNjA1LCAxMDM1LCAxNTg1LCAxNTg3LCAxNjA4LCAxNjA0LCAxMDM1LCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAxMDM1LCAKLSAgICAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCA3NzksIDE1ODksIDE2MDQsIDE2MDksIDQ2MTksIDE1ODksIDE2MDQsIDE2MDksIAotICAgIDMyLCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAzMiwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMzIsIDE2MDgsIDE1ODcsIAotICAgIDE2MDQsIDE2MDUsIDIwNTksIDE1ODAsIDE2MDQsIDMyLCAxNTgwLCAxNjA0LCAxNTc1LCAxNjA0LCAxNjA3LCAxMDM1LCAKLSAgICAxNTg1LCAxNzQwLCAxNTc1LCAxNjA0LCAyNjUsIDQ0LCAyNjUsIDEyMjg5LCAyNjUsIDEyMjkwLCAyNjUsIDU4LCAyNjUsIAotICAgIDU5LCAyNjUsIDMzLCAyNjUsIDYzLCAyNjUsIDEyMzEwLCAyNjUsIDEyMzExLCAyNjUsIDgyMzAsIDI2NSwgODIyOSwgMjY1LCAKLSAgICA4MjEyLCAyNjUsIDgyMTEsIDI2NSwgOTUsIDI2NSwgOTUsIDI2NSwgNDAsIDI2NSwgNDEsIDI2NSwgMTIzLCAyNjUsIDEyNSwgCi0gICAgMjY1LCAxMjMwOCwgMjY1LCAxMjMwOSwgMjY1LCAxMjMwNCwgMjY1LCAxMjMwNSwgMjY1LCAxMjI5OCwgMjY1LCAxMjI5OSwgCi0gICAgMjY1LCAxMjI5NiwgMjY1LCAxMjI5NywgMjY1LCAxMjMwMCwgMjY1LCAxMjMwMSwgMjY1LCAxMjMwMiwgMjY1LCAxMjMwMywgCi0gICAgMjY1LCA5MSwgMjY1LCA5MywgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDk1LCAKLSAgICAyNTgsIDk1LCAyNTgsIDk1LCAyNzEsIDQ0LCAyNzEsIDEyMjg5LCAyNzEsIDQ2LCAyNzEsIDU5LCAyNzEsIDU4LCAyNzEsIAotICAgIDYzLCAyNzEsIDMzLCAyNzEsIDgyMTIsIDI3MSwgNDAsIDI3MSwgNDEsIDI3MSwgMTIzLCAyNzEsIDEyNSwgMjcxLCAxMjMwOCwgCi0gICAgMjcxLCAxMjMwOSwgMjcxLCAzNSwgMjcxLCAzOCwgMjcxLCA0MiwgMjcxLCA0MywgMjcxLCA0NSwgMjcxLCA2MCwgMjcxLCAKLSAgICA2MiwgMjcxLCA2MSwgMjcxLCA5MiwgMjcxLCAzNiwgMjcxLCAzNywgMjcxLCA2NCwgNTIzLCAzMiwgMTYxMSwgNTI2LCAKLSAgICAxNjAwLCAxNjExLCA1MjMsIDMyLCAxNjEyLCA1MjMsIDMyLCAxNjEzLCA1MjMsIDMyLCAxNjE0LCA1MjYsIDE2MDAsIDE2MTQsIAotICAgIDUyMywgMzIsIDE2MTUsIDUyNiwgMTYwMCwgMTYxNSwgNTIzLCAzMiwgMTYxNiwgNTI2LCAxNjAwLCAxNjE2LCA1MjMsIDMyLCAKLSAgICAxNjE3LCA1MjYsIDE2MDAsIDE2MTcsIDUyMywgMzIsIDE2MTgsIDUyNiwgMTYwMCwgMTYxOCwgMjY3LCAxNTY5LCAyNjcsIAotICAgIDE1NzAsIDI2OCwgMTU3MCwgMjY3LCAxNTcxLCAyNjgsIDE1NzEsIDI2NywgMTU3MiwgMjY4LCAxNTcyLCAyNjcsIDE1NzMsIAotICAgIDI2OCwgMTU3MywgMjY3LCAxNTc0LCAyNjgsIDE1NzQsIDI2OSwgMTU3NCwgMjcwLCAxNTc0LCAyNjcsIDE1NzUsIDI2OCwgCi0gICAgMTU3NSwgMjY3LCAxNTc2LCAyNjgsIDE1NzYsIDI2OSwgMTU3NiwgMjcwLCAxNTc2LCAyNjcsIDE1NzcsIDI2OCwgMTU3NywgCi0gICAgMjY3LCAxNTc4LCAyNjgsIDE1NzgsIDI2OSwgMTU3OCwgMjcwLCAxNTc4LCAyNjcsIDE1NzksIDI2OCwgMTU3OSwgMjY5LCAKLSAgICAxNTc5LCAyNzAsIDE1NzksIDI2NywgMTU4MCwgMjY4LCAxNTgwLCAyNjksIDE1ODAsIDI3MCwgMTU4MCwgMjY3LCAxNTgxLCAKLSAgICAyNjgsIDE1ODEsIDI2OSwgMTU4MSwgMjcwLCAxNTgxLCAyNjcsIDE1ODIsIDI2OCwgMTU4MiwgMjY5LCAxNTgyLCAyNzAsIAotICAgIDE1ODIsIDI2NywgMTU4MywgMjY4LCAxNTgzLCAyNjcsIDE1ODQsIDI2OCwgMTU4NCwgMjY3LCAxNTg1LCAyNjgsIDE1ODUsIAotICAgIDI2NywgMTU4NiwgMjY4LCAxNTg2LCAyNjcsIDE1ODcsIDI2OCwgMTU4NywgMjY5LCAxNTg3LCAyNzAsIDE1ODcsIDI2NywgCi0gICAgMTU4OCwgMjY4LCAxNTg4LCAyNjksIDE1ODgsIDI3MCwgMTU4OCwgMjY3LCAxNTg5LCAyNjgsIDE1ODksIDI2OSwgMTU4OSwgCi0gICAgMjcwLCAxNTg5LCAyNjcsIDE1OTAsIDI2OCwgMTU5MCwgMjY5LCAxNTkwLCAyNzAsIDE1OTAsIDI2NywgMTU5MSwgMjY4LCAKLSAgICAxNTkxLCAyNjksIDE1OTEsIDI3MCwgMTU5MSwgMjY3LCAxNTkyLCAyNjgsIDE1OTIsIDI2OSwgMTU5MiwgMjcwLCAxNTkyLCAKLSAgICAyNjcsIDE1OTMsIDI2OCwgMTU5MywgMjY5LCAxNTkzLCAyNzAsIDE1OTMsIDI2NywgMTU5NCwgMjY4LCAxNTk0LCAyNjksIAotICAgIDE1OTQsIDI3MCwgMTU5NCwgMjY3LCAxNjAxLCAyNjgsIDE2MDEsIDI2OSwgMTYwMSwgMjcwLCAxNjAxLCAyNjcsIDE2MDIsIAotICAgIDI2OCwgMTYwMiwgMjY5LCAxNjAyLCAyNzAsIDE2MDIsIDI2NywgMTYwMywgMjY4LCAxNjAzLCAyNjksIDE2MDMsIDI3MCwgCi0gICAgMTYwMywgMjY3LCAxNjA0LCAyNjgsIDE2MDQsIDI2OSwgMTYwNCwgMjcwLCAxNjA0LCAyNjcsIDE2MDUsIDI2OCwgMTYwNSwgCi0gICAgMjY5LCAxNjA1LCAyNzAsIDE2MDUsIDI2NywgMTYwNiwgMjY4LCAxNjA2LCAyNjksIDE2MDYsIDI3MCwgMTYwNiwgMjY3LCAKLSAgICAxNjA3LCAyNjgsIDE2MDcsIDI2OSwgMTYwNywgMjcwLCAxNjA3LCAyNjcsIDE2MDgsIDI2OCwgMTYwOCwgMjY3LCAxNjA5LCAKLSAgICAyNjgsIDE2MDksIDI2NywgMTYxMCwgMjY4LCAxNjEwLCAyNjksIDE2MTAsIDI3MCwgMTYxMCwgNTIzLCAxNjA0LCAxNTcwLCAKLSAgICA1MjQsIDE2MDQsIDE1NzAsIDUyMywgMTYwNCwgMTU3MSwgNTI0LCAxNjA0LCAxNTcxLCA1MjMsIDE2MDQsIDE1NzMsIDUyNCwgCi0gICAgMTYwNCwgMTU3MywgNTIzLCAxNjA0LCAxNTc1LCA1MjQsIDE2MDQsIDE1NzUsIDI2NCwgMzMsIDI2NCwgMzQsIDI2NCwgMzUsIAotICAgIDI2NCwgMzYsIDI2NCwgMzcsIDI2NCwgMzgsIDI2NCwgMzksIDI2NCwgNDAsIDI2NCwgNDEsIDI2NCwgNDIsIDI2NCwgNDMsIAotICAgIDI2NCwgNDQsIDI2NCwgNDUsIDI2NCwgNDYsIDI2NCwgNDcsIDI2NCwgNDgsIDI2NCwgNDksIDI2NCwgNTAsIDI2NCwgNTEsIAotICAgIDI2NCwgNTIsIDI2NCwgNTMsIDI2NCwgNTQsIDI2NCwgNTUsIDI2NCwgNTYsIDI2NCwgNTcsIDI2NCwgNTgsIDI2NCwgNTksIAotICAgIDI2NCwgNjAsIDI2NCwgNjEsIDI2NCwgNjIsIDI2NCwgNjMsIDI2NCwgNjQsIDI2NCwgNjUsIDI2NCwgNjYsIDI2NCwgNjcsIAotICAgIDI2NCwgNjgsIDI2NCwgNjksIDI2NCwgNzAsIDI2NCwgNzEsIDI2NCwgNzIsIDI2NCwgNzMsIDI2NCwgNzQsIDI2NCwgNzUsIAotICAgIDI2NCwgNzYsIDI2NCwgNzcsIDI2NCwgNzgsIDI2NCwgNzksIDI2NCwgODAsIDI2NCwgODEsIDI2NCwgODIsIDI2NCwgODMsIAotICAgIDI2NCwgODQsIDI2NCwgODUsIDI2NCwgODYsIDI2NCwgODcsIDI2NCwgODgsIDI2NCwgODksIDI2NCwgOTAsIDI2NCwgOTEsIAotICAgIDI2NCwgOTIsIDI2NCwgOTMsIDI2NCwgOTQsIDI2NCwgOTUsIDI2NCwgOTYsIDI2NCwgOTcsIDI2NCwgOTgsIDI2NCwgOTksIAotICAgIDI2NCwgMTAwLCAyNjQsIDEwMSwgMjY0LCAxMDIsIDI2NCwgMTAzLCAyNjQsIDEwNCwgMjY0LCAxMDUsIDI2NCwgMTA2LCAKLSAgICAyNjQsIDEwNywgMjY0LCAxMDgsIDI2NCwgMTA5LCAyNjQsIDExMCwgMjY0LCAxMTEsIDI2NCwgMTEyLCAyNjQsIDExMywgCi0gICAgMjY0LCAxMTQsIDI2NCwgMTE1LCAyNjQsIDExNiwgMjY0LCAxMTcsIDI2NCwgMTE4LCAyNjQsIDExOSwgMjY0LCAxMjAsIAotICAgIDI2NCwgMTIxLCAyNjQsIDEyMiwgMjY0LCAxMjMsIDI2NCwgMTI0LCAyNjQsIDEyNSwgMjY0LCAxMjYsIDI2NCwgMTA2MjksIAotICAgIDI2NCwgMTA2MzAsIDI3MiwgMTIyOTAsIDI3MiwgMTIzMDAsIDI3MiwgMTIzMDEsIDI3MiwgMTIyODksIDI3MiwgMTI1MzksIAotICAgIDI3MiwgMTI1MzAsIDI3MiwgMTI0NDksIDI3MiwgMTI0NTEsIDI3MiwgMTI0NTMsIDI3MiwgMTI0NTUsIDI3MiwgMTI0NTcsIAotICAgIDI3MiwgMTI1MTUsIDI3MiwgMTI1MTcsIDI3MiwgMTI1MTksIDI3MiwgMTI0ODMsIDI3MiwgMTI1NDAsIDI3MiwgMTI0NTAsIAotICAgIDI3MiwgMTI0NTIsIDI3MiwgMTI0NTQsIDI3MiwgMTI0NTYsIDI3MiwgMTI0NTgsIDI3MiwgMTI0NTksIDI3MiwgMTI0NjEsIAotICAgIDI3MiwgMTI0NjMsIDI3MiwgMTI0NjUsIDI3MiwgMTI0NjcsIDI3MiwgMTI0NjksIDI3MiwgMTI0NzEsIDI3MiwgMTI0NzMsIAotICAgIDI3MiwgMTI0NzUsIDI3MiwgMTI0NzcsIDI3MiwgMTI0NzksIDI3MiwgMTI0ODEsIDI3MiwgMTI0ODQsIDI3MiwgMTI0ODYsIAotICAgIDI3MiwgMTI0ODgsIDI3MiwgMTI0OTAsIDI3MiwgMTI0OTEsIDI3MiwgMTI0OTIsIDI3MiwgMTI0OTMsIDI3MiwgMTI0OTQsIAotICAgIDI3MiwgMTI0OTUsIDI3MiwgMTI0OTgsIDI3MiwgMTI1MDEsIDI3MiwgMTI1MDQsIDI3MiwgMTI1MDcsIDI3MiwgMTI1MTAsIAotICAgIDI3MiwgMTI1MTEsIDI3MiwgMTI1MTIsIDI3MiwgMTI1MTMsIDI3MiwgMTI1MTQsIDI3MiwgMTI1MTYsIDI3MiwgMTI1MTgsIAotICAgIDI3MiwgMTI1MjAsIDI3MiwgMTI1MjEsIDI3MiwgMTI1MjIsIDI3MiwgMTI1MjMsIDI3MiwgMTI1MjQsIDI3MiwgMTI1MjUsIAotICAgIDI3MiwgMTI1MjcsIDI3MiwgMTI1MzEsIDI3MiwgMTI0NDEsIDI3MiwgMTI0NDIsIDI3MiwgMTI2NDQsIDI3MiwgMTI1OTMsIAotICAgIDI3MiwgMTI1OTQsIDI3MiwgMTI1OTUsIDI3MiwgMTI1OTYsIDI3MiwgMTI1OTcsIDI3MiwgMTI1OTgsIDI3MiwgMTI1OTksIAotICAgIDI3MiwgMTI2MDAsIDI3MiwgMTI2MDEsIDI3MiwgMTI2MDIsIDI3MiwgMTI2MDMsIDI3MiwgMTI2MDQsIDI3MiwgMTI2MDUsIAotICAgIDI3MiwgMTI2MDYsIDI3MiwgMTI2MDcsIDI3MiwgMTI2MDgsIDI3MiwgMTI2MDksIDI3MiwgMTI2MTAsIDI3MiwgMTI2MTEsIAotICAgIDI3MiwgMTI2MTIsIDI3MiwgMTI2MTMsIDI3MiwgMTI2MTQsIDI3MiwgMTI2MTUsIDI3MiwgMTI2MTYsIDI3MiwgMTI2MTcsIAotICAgIDI3MiwgMTI2MTgsIDI3MiwgMTI2MTksIDI3MiwgMTI2MjAsIDI3MiwgMTI2MjEsIDI3MiwgMTI2MjIsIDI3MiwgMTI2MjMsIAotICAgIDI3MiwgMTI2MjQsIDI3MiwgMTI2MjUsIDI3MiwgMTI2MjYsIDI3MiwgMTI2MjcsIDI3MiwgMTI2MjgsIDI3MiwgMTI2MjksIAotICAgIDI3MiwgMTI2MzAsIDI3MiwgMTI2MzEsIDI3MiwgMTI2MzIsIDI3MiwgMTI2MzMsIDI3MiwgMTI2MzQsIDI3MiwgMTI2MzUsIAotICAgIDI3MiwgMTI2MzYsIDI3MiwgMTI2MzcsIDI3MiwgMTI2MzgsIDI3MiwgMTI2MzksIDI3MiwgMTI2NDAsIDI3MiwgMTI2NDEsIAotICAgIDI3MiwgMTI2NDIsIDI3MiwgMTI2NDMsIDI2NCwgMTYyLCAyNjQsIDE2MywgMjY0LCAxNzIsIDI2NCwgMTc1LCAyNjQsIDE2NiwgCi0gICAgMjY0LCAxNjUsIDI2NCwgODM2MSwgMjcyLCA5NDc0LCAyNzIsIDg1OTIsIDI3MiwgODU5MywgMjcyLCA4NTk0LCAyNzIsIAotICAgIDg1OTUsIDI3MiwgOTYzMiwgMjcyLCA5Njc1LCA1MTIsIDY5Nzg1LCA2OTgxOCwgNTEyLCA2OTc4NywgNjk4MTgsIDUxMiwgCi0gICAgNjk3OTcsIDY5ODE4LCA1MTIsIDY5OTM3LCA2OTkyNywgNTEyLCA2OTkzOCwgNjk5MjcsIDUxMiwgMTE5MTI3LCAxMTkxNDEsIAotICAgIDUxMiwgMTE5MTI4LCAxMTkxNDEsIDUxMiwgMTE5MTM1LCAxMTkxNTAsIDUxMiwgMTE5MTM1LCAxMTkxNTEsIDUxMiwgCi0gICAgMTE5MTM1LCAxMTkxNTIsIDUxMiwgMTE5MTM1LCAxMTkxNTMsIDUxMiwgMTE5MTM1LCAxMTkxNTQsIDUxMiwgMTE5MjI1LCAKLSAgICAxMTkxNDEsIDUxMiwgMTE5MjI2LCAxMTkxNDEsIDUxMiwgMTE5MjI3LCAxMTkxNTAsIDUxMiwgMTE5MjI4LCAxMTkxNTAsIAotICAgIDUxMiwgMTE5MjI3LCAxMTkxNTEsIDUxMiwgMTE5MjI4LCAxMTkxNTEsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgCi0gICAgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgCi0gICAgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgCi0gICAgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgCi0gICAgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIAotICAgIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAKLSAgICAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgCi0gICAgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCAKLSAgICA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCAKLSAgICA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCAKLSAgICA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCAKLSAgICA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIAotICAgIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAKLSAgICAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgCi0gICAgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIAotICAgIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIAotICAgIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIAotICAgIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgCi0gICAgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIAorICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCAxMDk4LCAyNTksIDExMDAsIDI1OSwgNDI4NjMsIDI1OSwgMjk0LCAKKyAgICAyNTksIDMzOSwgMjU5LCA0Mjc5MSwgMjU5LCA0MzgzMSwgMjU5LCA2MTksIDI1OSwgNDM4NTgsIDI1NiwgMzU5MTIsIDI1NiwgCisgICAgMjYzNTYsIDI1NiwgMzY1NTQsIDI1NiwgMzYwNDAsIDI1NiwgMjgzNjksIDI1NiwgMjAwMTgsIDI1NiwgMjE0NzcsIDI1NiwgCisgICAgNDA4NjAsIDI1NiwgNDA4NjAsIDI1NiwgMjI4NjUsIDI1NiwgMzczMjksIDI1NiwgMjE4OTUsIDI1NiwgMjI4NTYsIDI1NiwgCisgICAgMjUwNzgsIDI1NiwgMzAzMTMsIDI1NiwgMzI2NDUsIDI1NiwgMzQzNjcsIDI1NiwgMzQ3NDYsIDI1NiwgMzUwNjQsIDI1NiwgCisgICAgMzcwMDcsIDI1NiwgMjcxMzgsIDI1NiwgMjc5MzEsIDI1NiwgMjg4ODksIDI1NiwgMjk2NjIsIDI1NiwgMzM4NTMsIDI1NiwgCisgICAgMzcyMjYsIDI1NiwgMzk0MDksIDI1NiwgMjAwOTgsIDI1NiwgMjEzNjUsIDI1NiwgMjczOTYsIDI1NiwgMjkyMTEsIDI1NiwgCisgICAgMzQzNDksIDI1NiwgNDA0NzgsIDI1NiwgMjM4ODgsIDI1NiwgMjg2NTEsIDI1NiwgMzQyNTMsIDI1NiwgMzUxNzIsIDI1NiwgCisgICAgMjUyODksIDI1NiwgMzMyNDAsIDI1NiwgMzQ4NDcsIDI1NiwgMjQyNjYsIDI1NiwgMjYzOTEsIDI1NiwgMjgwMTAsIDI1NiwgCisgICAgMjk0MzYsIDI1NiwgMzcwNzAsIDI1NiwgMjAzNTgsIDI1NiwgMjA5MTksIDI1NiwgMjEyMTQsIDI1NiwgMjU3OTYsIDI1NiwgCisgICAgMjczNDcsIDI1NiwgMjkyMDAsIDI1NiwgMzA0MzksIDI1NiwgMzI3NjksIDI1NiwgMzQzMTAsIDI1NiwgMzQzOTYsIDI1NiwgCisgICAgMzYzMzUsIDI1NiwgMzg3MDYsIDI1NiwgMzk3OTEsIDI1NiwgNDA0NDIsIDI1NiwgMzA4NjAsIDI1NiwgMzExMDMsIDI1NiwgCisgICAgMzIxNjAsIDI1NiwgMzM3MzcsIDI1NiwgMzc2MzYsIDI1NiwgNDA1NzUsIDI1NiwgMzU1NDIsIDI1NiwgMjI3NTEsIDI1NiwgCisgICAgMjQzMjQsIDI1NiwgMzE4NDAsIDI1NiwgMzI4OTQsIDI1NiwgMjkyODIsIDI1NiwgMzA5MjIsIDI1NiwgMzYwMzQsIDI1NiwgCisgICAgMzg2NDcsIDI1NiwgMjI3NDQsIDI1NiwgMjM2NTAsIDI1NiwgMjcxNTUsIDI1NiwgMjgxMjIsIDI1NiwgMjg0MzEsIDI1NiwgCisgICAgMzIwNDcsIDI1NiwgMzIzMTEsIDI1NiwgMzg0NzUsIDI1NiwgMjEyMDIsIDI1NiwgMzI5MDcsIDI1NiwgMjA5NTYsIDI1NiwgCisgICAgMjA5NDAsIDI1NiwgMzEyNjAsIDI1NiwgMzIxOTAsIDI1NiwgMzM3NzcsIDI1NiwgMzg1MTcsIDI1NiwgMzU3MTIsIDI1NiwgCisgICAgMjUyOTUsIDI1NiwgMjcxMzgsIDI1NiwgMzU1ODIsIDI1NiwgMjAwMjUsIDI1NiwgMjM1MjcsIDI1NiwgMjQ1OTQsIDI1NiwgCisgICAgMjk1NzUsIDI1NiwgMzAwNjQsIDI1NiwgMjEyNzEsIDI1NiwgMzA5NzEsIDI1NiwgMjA0MTUsIDI1NiwgMjQ0ODksIDI1NiwgCisgICAgMTk5ODEsIDI1NiwgMjc4NTIsIDI1NiwgMjU5NzYsIDI1NiwgMzIwMzQsIDI1NiwgMjE0NDMsIDI1NiwgMjI2MjIsIDI1NiwgCisgICAgMzA0NjUsIDI1NiwgMzM4NjUsIDI1NiwgMzU0OTgsIDI1NiwgMjc1NzgsIDI1NiwgMzY3ODQsIDI1NiwgMjc3ODQsIDI1NiwgCisgICAgMjUzNDIsIDI1NiwgMzM1MDksIDI1NiwgMjU1MDQsIDI1NiwgMzAwNTMsIDI1NiwgMjAxNDIsIDI1NiwgMjA4NDEsIDI1NiwgCisgICAgMjA5MzcsIDI1NiwgMjY3NTMsIDI1NiwgMzE5NzUsIDI1NiwgMzMzOTEsIDI1NiwgMzU1MzgsIDI1NiwgMzczMjcsIDI1NiwgCisgICAgMjEyMzcsIDI1NiwgMjE1NzAsIDI1NiwgMjI4OTksIDI1NiwgMjQzMDAsIDI1NiwgMjYwNTMsIDI1NiwgMjg2NzAsIDI1NiwgCisgICAgMzEwMTgsIDI1NiwgMzgzMTcsIDI1NiwgMzk1MzAsIDI1NiwgNDA1OTksIDI1NiwgNDA2NTQsIDI1NiwgMjExNDcsIDI1NiwgCisgICAgMjYzMTAsIDI1NiwgMjc1MTEsIDI1NiwgMzY3MDYsIDI1NiwgMjQxODAsIDI1NiwgMjQ5NzYsIDI1NiwgMjUwODgsIDI1NiwgCisgICAgMjU3NTQsIDI1NiwgMjg0NTEsIDI1NiwgMjkwMDEsIDI1NiwgMjk4MzMsIDI1NiwgMzExNzgsIDI1NiwgMzIyNDQsIDI1NiwgCisgICAgMzI4NzksIDI1NiwgMzY2NDYsIDI1NiwgMzQwMzAsIDI1NiwgMzY4OTksIDI1NiwgMzc3MDYsIDI1NiwgMjEwMTUsIDI1NiwgCisgICAgMjExNTUsIDI1NiwgMjE2OTMsIDI1NiwgMjg4NzIsIDI1NiwgMzUwMTAsIDI1NiwgMzU0OTgsIDI1NiwgMjQyNjUsIDI1NiwgCisgICAgMjQ1NjUsIDI1NiwgMjU0NjcsIDI1NiwgMjc1NjYsIDI1NiwgMzE4MDYsIDI1NiwgMjk1NTcsIDI1NiwgMjAxOTYsIDI1NiwgCisgICAgMjIyNjUsIDI1NiwgMjM1MjcsIDI1NiwgMjM5OTQsIDI1NiwgMjQ2MDQsIDI1NiwgMjk2MTgsIDI1NiwgMjk4MDEsIDI1NiwgCisgICAgMzI2NjYsIDI1NiwgMzI4MzgsIDI1NiwgMzc0MjgsIDI1NiwgMzg2NDYsIDI1NiwgMzg3MjgsIDI1NiwgMzg5MzYsIDI1NiwgCisgICAgMjAzNjMsIDI1NiwgMzExNTAsIDI1NiwgMzczMDAsIDI1NiwgMzg1ODQsIDI1NiwgMjQ4MDEsIDI1NiwgMjAxMDIsIDI1NiwgCisgICAgMjA2OTgsIDI1NiwgMjM1MzQsIDI1NiwgMjM2MTUsIDI1NiwgMjYwMDksIDI1NiwgMjcxMzgsIDI1NiwgMjkxMzQsIDI1NiwgCisgICAgMzAyNzQsIDI1NiwgMzQwNDQsIDI1NiwgMzY5ODgsIDI1NiwgNDA4NDUsIDI1NiwgMjYyNDgsIDI1NiwgMzg0NDYsIDI1NiwgCisgICAgMjExMjksIDI1NiwgMjY0OTEsIDI1NiwgMjY2MTEsIDI1NiwgMjc5NjksIDI1NiwgMjgzMTYsIDI1NiwgMjk3MDUsIDI1NiwgCisgICAgMzAwNDEsIDI1NiwgMzA4MjcsIDI1NiwgMzIwMTYsIDI1NiwgMzkwMDYsIDI1NiwgMjA4NDUsIDI1NiwgMjUxMzQsIDI1NiwgCisgICAgMzg1MjAsIDI1NiwgMjA1MjMsIDI1NiwgMjM4MzMsIDI1NiwgMjgxMzgsIDI1NiwgMzY2NTAsIDI1NiwgMjQ0NTksIDI1NiwgCisgICAgMjQ5MDAsIDI1NiwgMjY2NDcsIDI1NiwgMjk1NzUsIDI1NiwgMzg1MzQsIDI1NiwgMjEwMzMsIDI1NiwgMjE1MTksIDI1NiwgCisgICAgMjM2NTMsIDI1NiwgMjYxMzEsIDI1NiwgMjY0NDYsIDI1NiwgMjY3OTIsIDI1NiwgMjc4NzcsIDI1NiwgMjk3MDIsIDI1NiwgCisgICAgMzAxNzgsIDI1NiwgMzI2MzMsIDI1NiwgMzUwMjMsIDI1NiwgMzUwNDEsIDI1NiwgMzczMjQsIDI1NiwgMzg2MjYsIDI1NiwgCisgICAgMjEzMTEsIDI1NiwgMjgzNDYsIDI1NiwgMjE1MzMsIDI1NiwgMjkxMzYsIDI1NiwgMjk4NDgsIDI1NiwgMzQyOTgsIDI1NiwgCisgICAgMzg1NjMsIDI1NiwgNDAwMjMsIDI1NiwgNDA2MDcsIDI1NiwgMjY1MTksIDI1NiwgMjgxMDcsIDI1NiwgMzMyNTYsIDI1NiwgCisgICAgMzE0MzUsIDI1NiwgMzE1MjAsIDI1NiwgMzE4OTAsIDI1NiwgMjkzNzYsIDI1NiwgMjg4MjUsIDI1NiwgMzU2NzIsIDI1NiwgCisgICAgMjAxNjAsIDI1NiwgMzM1OTAsIDI1NiwgMjEwNTAsIDI1NiwgMjA5OTksIDI1NiwgMjQyMzAsIDI1NiwgMjUyOTksIDI1NiwgCisgICAgMzE5NTgsIDI1NiwgMjM0MjksIDI1NiwgMjc5MzQsIDI1NiwgMjYyOTIsIDI1NiwgMzY2NjcsIDI1NiwgMzQ4OTIsIDI1NiwgCisgICAgMzg0NzcsIDI1NiwgMzUyMTEsIDI1NiwgMjQyNzUsIDI1NiwgMjA4MDAsIDI1NiwgMjE5NTIsIDI1NiwgMjI2MTgsIDI1NiwgCisgICAgMjYyMjgsIDI1NiwgMjA5NTgsIDI1NiwgMjk0ODIsIDI1NiwgMzA0MTAsIDI1NiwgMzEwMzYsIDI1NiwgMzEwNzAsIDI1NiwgCisgICAgMzEwNzcsIDI1NiwgMzExMTksIDI1NiwgMzg3NDIsIDI1NiwgMzE5MzQsIDI1NiwgMzI3MDEsIDI1NiwgMzQzMjIsIDI1NiwgCisgICAgMzU1NzYsIDI1NiwgMzY5MjAsIDI1NiwgMzcxMTcsIDI1NiwgMzkxNTEsIDI1NiwgMzkxNjQsIDI1NiwgMzkyMDgsIDI1NiwgCisgICAgNDAzNzIsIDI1NiwgMzcwODYsIDI1NiwgMzg1ODMsIDI1NiwgMjAzOTgsIDI1NiwgMjA3MTEsIDI1NiwgMjA4MTMsIDI1NiwgCisgICAgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEzMjksIDI1NiwgMjE5MTcsIDI1NiwgMjIwMjIsIDI1NiwgMjIxMjAsIDI1NiwgCisgICAgMjI1OTIsIDI1NiwgMjI2OTYsIDI1NiwgMjM2NTIsIDI1NiwgMjM2NjIsIDI1NiwgMjQ3MjQsIDI1NiwgMjQ5MzYsIDI1NiwgCisgICAgMjQ5NzQsIDI1NiwgMjUwNzQsIDI1NiwgMjU5MzUsIDI1NiwgMjYwODIsIDI1NiwgMjYyNTcsIDI1NiwgMjY3NTcsIDI1NiwgCisgICAgMjgwMjMsIDI1NiwgMjgxODYsIDI1NiwgMjg0NTAsIDI1NiwgMjkwMzgsIDI1NiwgMjkyMjcsIDI1NiwgMjk3MzAsIDI1NiwgCisgICAgMzA4NjUsIDI1NiwgMzEwMzgsIDI1NiwgMzEwNDksIDI1NiwgMzEwNDgsIDI1NiwgMzEwNTYsIDI1NiwgMzEwNjIsIDI1NiwgCisgICAgMzEwNjksIDI1NiwgMzExMTcsIDI1NiwgMzExMTgsIDI1NiwgMzEyOTYsIDI1NiwgMzEzNjEsIDI1NiwgMzE2ODAsIDI1NiwgCisgICAgMzIyNDQsIDI1NiwgMzIyNjUsIDI1NiwgMzIzMjEsIDI1NiwgMzI2MjYsIDI1NiwgMzI3NzMsIDI1NiwgMzMyNjEsIDI1NiwgCisgICAgMzM0MDEsIDI1NiwgMzM0MDEsIDI1NiwgMzM4NzksIDI1NiwgMzUwODgsIDI1NiwgMzUyMjIsIDI1NiwgMzU1ODUsIDI1NiwgCisgICAgMzU2NDEsIDI1NiwgMzYwNTEsIDI1NiwgMzYxMDQsIDI1NiwgMzY3OTAsIDI1NiwgMzY5MjAsIDI1NiwgMzg2MjcsIDI1NiwgCisgICAgMzg5MTEsIDI1NiwgMzg5NzEsIDI1NiwgMjQ2OTMsIDI1NiwgMTQ4MjA2LCAyNTYsIDMzMzA0LCAyNTYsIDIwMDA2LCAyNTYsIAorICAgIDIwOTE3LCAyNTYsIDIwODQwLCAyNTYsIDIwMzUyLCAyNTYsIDIwODA1LCAyNTYsIDIwODY0LCAyNTYsIDIxMTkxLCAyNTYsIAorICAgIDIxMjQyLCAyNTYsIDIxOTE3LCAyNTYsIDIxODQ1LCAyNTYsIDIxOTEzLCAyNTYsIDIxOTg2LCAyNTYsIDIyNjE4LCAyNTYsIAorICAgIDIyNzA3LCAyNTYsIDIyODUyLCAyNTYsIDIyODY4LCAyNTYsIDIzMTM4LCAyNTYsIDIzMzM2LCAyNTYsIDI0Mjc0LCAyNTYsIAorICAgIDI0MjgxLCAyNTYsIDI0NDI1LCAyNTYsIDI0NDkzLCAyNTYsIDI0NzkyLCAyNTYsIDI0OTEwLCAyNTYsIDI0ODQwLCAyNTYsIAorICAgIDI0OTc0LCAyNTYsIDI0OTI4LCAyNTYsIDI1MDc0LCAyNTYsIDI1MTQwLCAyNTYsIDI1NTQwLCAyNTYsIDI1NjI4LCAyNTYsIAorICAgIDI1NjgyLCAyNTYsIDI1OTQyLCAyNTYsIDI2MjI4LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDU0LCAyNTYsIAorICAgIDI3NTEzLCAyNTYsIDI3NTc4LCAyNTYsIDI3OTY5LCAyNTYsIDI4Mzc5LCAyNTYsIDI4MzYzLCAyNTYsIDI4NDUwLCAyNTYsIAorICAgIDI4NzAyLCAyNTYsIDI5MDM4LCAyNTYsIDMwNjMxLCAyNTYsIDI5MjM3LCAyNTYsIDI5MzU5LCAyNTYsIDI5NDgyLCAyNTYsIAorICAgIDI5ODA5LCAyNTYsIDI5OTU4LCAyNTYsIDMwMDExLCAyNTYsIDMwMjM3LCAyNTYsIDMwMjM5LCAyNTYsIDMwNDEwLCAyNTYsIAorICAgIDMwNDI3LCAyNTYsIDMwNDUyLCAyNTYsIDMwNTM4LCAyNTYsIDMwNTI4LCAyNTYsIDMwOTI0LCAyNTYsIDMxNDA5LCAyNTYsIAorICAgIDMxNjgwLCAyNTYsIDMxODY3LCAyNTYsIDMyMDkxLCAyNTYsIDMyMjQ0LCAyNTYsIDMyNTc0LCAyNTYsIDMyNzczLCAyNTYsIAorICAgIDMzNjE4LCAyNTYsIDMzNzc1LCAyNTYsIDM0NjgxLCAyNTYsIDM1MTM3LCAyNTYsIDM1MjA2LCAyNTYsIDM1MjIyLCAyNTYsIAorICAgIDM1NTE5LCAyNTYsIDM1NTc2LCAyNTYsIDM1NTMxLCAyNTYsIDM1NTg1LCAyNTYsIDM1NTgyLCAyNTYsIDM1NTY1LCAyNTYsIAorICAgIDM1NjQxLCAyNTYsIDM1NzIyLCAyNTYsIDM2MTA0LCAyNTYsIDM2NjY0LCAyNTYsIDM2OTc4LCAyNTYsIDM3MjczLCAyNTYsIAorICAgIDM3NDk0LCAyNTYsIDM4NTI0LCAyNTYsIDM4NjI3LCAyNTYsIDM4NzQyLCAyNTYsIDM4ODc1LCAyNTYsIDM4OTExLCAyNTYsIAorICAgIDM4OTIzLCAyNTYsIDM4OTcxLCAyNTYsIDM5Njk4LCAyNTYsIDQwODYwLCAyNTYsIDE0MTM4NiwgMjU2LCAxNDEzODAsIDI1NiwgCisgICAgMTQ0MzQxLCAyNTYsIDE1MjYxLCAyNTYsIDE2NDA4LCAyNTYsIDE2NDQxLCAyNTYsIDE1MjEzNywgMjU2LCAxNTQ4MzIsIAorICAgIDI1NiwgMTYzNTM5LCAyNTYsIDQwNzcxLCAyNTYsIDQwODQ2LCA1MTQsIDEwMiwgMTAyLCA1MTQsIDEwMiwgMTA1LCA1MTQsIAorICAgIDEwMiwgMTA4LCA3NzAsIDEwMiwgMTAyLCAxMDUsIDc3MCwgMTAyLCAxMDIsIDEwOCwgNTE0LCAzODMsIDExNiwgNTE0LCAKKyAgICAxMTUsIDExNiwgNTE0LCAxMzk2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODEsIDUxNCwgMTM5NiwgMTM4NywgNTE0LCAxNDA2LCAKKyAgICAxMzk4LCA1MTQsIDEzOTYsIDEzODksIDUxMiwgMTQ5NywgMTQ2MCwgNTEyLCAxNTIyLCAxNDYzLCAyNjIsIDE1MDYsIDI2MiwgCisgICAgMTQ4OCwgMjYyLCAxNDkxLCAyNjIsIDE0OTIsIDI2MiwgMTQ5OSwgMjYyLCAxNTAwLCAyNjIsIDE1MDEsIDI2MiwgMTUxMiwgCisgICAgMjYyLCAxNTE0LCAyNjIsIDQzLCA1MTIsIDE1MTMsIDE0NzMsIDUxMiwgMTUxMywgMTQ3NCwgNTEyLCA2NDMyOSwgMTQ3MywgCisgICAgNTEyLCA2NDMyOSwgMTQ3NCwgNTEyLCAxNDg4LCAxNDYzLCA1MTIsIDE0ODgsIDE0NjQsIDUxMiwgMTQ4OCwgMTQ2OCwgNTEyLCAKKyAgICAxNDg5LCAxNDY4LCA1MTIsIDE0OTAsIDE0NjgsIDUxMiwgMTQ5MSwgMTQ2OCwgNTEyLCAxNDkyLCAxNDY4LCA1MTIsIDE0OTMsIAorICAgIDE0NjgsIDUxMiwgMTQ5NCwgMTQ2OCwgNTEyLCAxNDk2LCAxNDY4LCA1MTIsIDE0OTcsIDE0NjgsIDUxMiwgMTQ5OCwgMTQ2OCwgCisgICAgNTEyLCAxNDk5LCAxNDY4LCA1MTIsIDE1MDAsIDE0NjgsIDUxMiwgMTUwMiwgMTQ2OCwgNTEyLCAxNTA0LCAxNDY4LCA1MTIsIAorICAgIDE1MDUsIDE0NjgsIDUxMiwgMTUwNywgMTQ2OCwgNTEyLCAxNTA4LCAxNDY4LCA1MTIsIDE1MTAsIDE0NjgsIDUxMiwgMTUxMSwgCisgICAgMTQ2OCwgNTEyLCAxNTEyLCAxNDY4LCA1MTIsIDE1MTMsIDE0NjgsIDUxMiwgMTUxNCwgMTQ2OCwgNTEyLCAxNDkzLCAxNDY1LCAKKyAgICA1MTIsIDE0ODksIDE0NzEsIDUxMiwgMTQ5OSwgMTQ3MSwgNTEyLCAxNTA4LCAxNDcxLCA1MTQsIDE0ODgsIDE1MDAsIDI2NywgCisgICAgMTY0OSwgMjY4LCAxNjQ5LCAyNjcsIDE2NTksIDI2OCwgMTY1OSwgMjY5LCAxNjU5LCAyNzAsIDE2NTksIDI2NywgMTY2MiwgCisgICAgMjY4LCAxNjYyLCAyNjksIDE2NjIsIDI3MCwgMTY2MiwgMjY3LCAxNjY0LCAyNjgsIDE2NjQsIDI2OSwgMTY2NCwgMjcwLCAKKyAgICAxNjY0LCAyNjcsIDE2NTgsIDI2OCwgMTY1OCwgMjY5LCAxNjU4LCAyNzAsIDE2NTgsIDI2NywgMTY2MywgMjY4LCAxNjYzLCAKKyAgICAyNjksIDE2NjMsIDI3MCwgMTY2MywgMjY3LCAxNjU3LCAyNjgsIDE2NTcsIDI2OSwgMTY1NywgMjcwLCAxNjU3LCAyNjcsIAorICAgIDE3MDAsIDI2OCwgMTcwMCwgMjY5LCAxNzAwLCAyNzAsIDE3MDAsIDI2NywgMTcwMiwgMjY4LCAxNzAyLCAyNjksIDE3MDIsIAorICAgIDI3MCwgMTcwMiwgMjY3LCAxNjY4LCAyNjgsIDE2NjgsIDI2OSwgMTY2OCwgMjcwLCAxNjY4LCAyNjcsIDE2NjcsIDI2OCwgCisgICAgMTY2NywgMjY5LCAxNjY3LCAyNzAsIDE2NjcsIDI2NywgMTY3MCwgMjY4LCAxNjcwLCAyNjksIDE2NzAsIDI3MCwgMTY3MCwgCisgICAgMjY3LCAxNjcxLCAyNjgsIDE2NzEsIDI2OSwgMTY3MSwgMjcwLCAxNjcxLCAyNjcsIDE2NzcsIDI2OCwgMTY3NywgMjY3LCAKKyAgICAxNjc2LCAyNjgsIDE2NzYsIDI2NywgMTY3OCwgMjY4LCAxNjc4LCAyNjcsIDE2NzIsIDI2OCwgMTY3MiwgMjY3LCAxNjg4LCAKKyAgICAyNjgsIDE2ODgsIDI2NywgMTY4MSwgMjY4LCAxNjgxLCAyNjcsIDE3MDUsIDI2OCwgMTcwNSwgMjY5LCAxNzA1LCAyNzAsIAorICAgIDE3MDUsIDI2NywgMTcxMSwgMjY4LCAxNzExLCAyNjksIDE3MTEsIDI3MCwgMTcxMSwgMjY3LCAxNzE1LCAyNjgsIDE3MTUsIAorICAgIDI2OSwgMTcxNSwgMjcwLCAxNzE1LCAyNjcsIDE3MTMsIDI2OCwgMTcxMywgMjY5LCAxNzEzLCAyNzAsIDE3MTMsIDI2NywgCisgICAgMTcyMiwgMjY4LCAxNzIyLCAyNjcsIDE3MjMsIDI2OCwgMTcyMywgMjY5LCAxNzIzLCAyNzAsIDE3MjMsIDI2NywgMTcyOCwgCisgICAgMjY4LCAxNzI4LCAyNjcsIDE3MjksIDI2OCwgMTcyOSwgMjY5LCAxNzI5LCAyNzAsIDE3MjksIDI2NywgMTcyNiwgMjY4LCAKKyAgICAxNzI2LCAyNjksIDE3MjYsIDI3MCwgMTcyNiwgMjY3LCAxNzQ2LCAyNjgsIDE3NDYsIDI2NywgMTc0NywgMjY4LCAxNzQ3LCAKKyAgICAyNjcsIDE3MDksIDI2OCwgMTcwOSwgMjY5LCAxNzA5LCAyNzAsIDE3MDksIDI2NywgMTczNSwgMjY4LCAxNzM1LCAyNjcsIAorICAgIDE3MzQsIDI2OCwgMTczNCwgMjY3LCAxNzM2LCAyNjgsIDE3MzYsIDI2NywgMTY1NSwgMjY3LCAxNzM5LCAyNjgsIDE3MzksIAorICAgIDI2NywgMTczMywgMjY4LCAxNzMzLCAyNjcsIDE3MzcsIDI2OCwgMTczNywgMjY3LCAxNzQ0LCAyNjgsIDE3NDQsIDI2OSwgCisgICAgMTc0NCwgMjcwLCAxNzQ0LCAyNjksIDE2MDksIDI3MCwgMTYwOSwgNTIzLCAxNTc0LCAxNTc1LCA1MjQsIDE1NzQsIDE1NzUsIAorICAgIDUyMywgMTU3NCwgMTc0OSwgNTI0LCAxNTc0LCAxNzQ5LCA1MjMsIDE1NzQsIDE2MDgsIDUyNCwgMTU3NCwgMTYwOCwgNTIzLCAKKyAgICAxNTc0LCAxNzM1LCA1MjQsIDE1NzQsIDE3MzUsIDUyMywgMTU3NCwgMTczNCwgNTI0LCAxNTc0LCAxNzM0LCA1MjMsIDE1NzQsIAorICAgIDE3MzYsIDUyNCwgMTU3NCwgMTczNiwgNTIzLCAxNTc0LCAxNzQ0LCA1MjQsIDE1NzQsIDE3NDQsIDUyNSwgMTU3NCwgMTc0NCwgCisgICAgNTIzLCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MDksIDUyNSwgMTU3NCwgMTYwOSwgMjY3LCAxNzQwLCAyNjgsIDE3NDAsIAorICAgIDI2OSwgMTc0MCwgMjcwLCAxNzQwLCA1MjMsIDE1NzQsIDE1ODAsIDUyMywgMTU3NCwgMTU4MSwgNTIzLCAxNTc0LCAxNjA1LCAKKyAgICA1MjMsIDE1NzQsIDE2MDksIDUyMywgMTU3NCwgMTYxMCwgNTIzLCAxNTc2LCAxNTgwLCA1MjMsIDE1NzYsIDE1ODEsIDUyMywgCisgICAgMTU3NiwgMTU4MiwgNTIzLCAxNTc2LCAxNjA1LCA1MjMsIDE1NzYsIDE2MDksIDUyMywgMTU3NiwgMTYxMCwgNTIzLCAxNTc4LCAKKyAgICAxNTgwLCA1MjMsIDE1NzgsIDE1ODEsIDUyMywgMTU3OCwgMTU4MiwgNTIzLCAxNTc4LCAxNjA1LCA1MjMsIDE1NzgsIDE2MDksIAorICAgIDUyMywgMTU3OCwgMTYxMCwgNTIzLCAxNTc5LCAxNTgwLCA1MjMsIDE1NzksIDE2MDUsIDUyMywgMTU3OSwgMTYwOSwgNTIzLCAKKyAgICAxNTc5LCAxNjEwLCA1MjMsIDE1ODAsIDE1ODEsIDUyMywgMTU4MCwgMTYwNSwgNTIzLCAxNTgxLCAxNTgwLCA1MjMsIDE1ODEsIAorICAgIDE2MDUsIDUyMywgMTU4MiwgMTU4MCwgNTIzLCAxNTgyLCAxNTgxLCA1MjMsIDE1ODIsIDE2MDUsIDUyMywgMTU4NywgMTU4MCwgCisgICAgNTIzLCAxNTg3LCAxNTgxLCA1MjMsIDE1ODcsIDE1ODIsIDUyMywgMTU4NywgMTYwNSwgNTIzLCAxNTg5LCAxNTgxLCA1MjMsIAorICAgIDE1ODksIDE2MDUsIDUyMywgMTU5MCwgMTU4MCwgNTIzLCAxNTkwLCAxNTgxLCA1MjMsIDE1OTAsIDE1ODIsIDUyMywgMTU5MCwgCisgICAgMTYwNSwgNTIzLCAxNTkxLCAxNTgxLCA1MjMsIDE1OTEsIDE2MDUsIDUyMywgMTU5MiwgMTYwNSwgNTIzLCAxNTkzLCAxNTgwLCAKKyAgICA1MjMsIDE1OTMsIDE2MDUsIDUyMywgMTU5NCwgMTU4MCwgNTIzLCAxNTk0LCAxNjA1LCA1MjMsIDE2MDEsIDE1ODAsIDUyMywgCisgICAgMTYwMSwgMTU4MSwgNTIzLCAxNjAxLCAxNTgyLCA1MjMsIDE2MDEsIDE2MDUsIDUyMywgMTYwMSwgMTYwOSwgNTIzLCAxNjAxLCAKKyAgICAxNjEwLCA1MjMsIDE2MDIsIDE1ODEsIDUyMywgMTYwMiwgMTYwNSwgNTIzLCAxNjAyLCAxNjA5LCA1MjMsIDE2MDIsIDE2MTAsIAorICAgIDUyMywgMTYwMywgMTU3NSwgNTIzLCAxNjAzLCAxNTgwLCA1MjMsIDE2MDMsIDE1ODEsIDUyMywgMTYwMywgMTU4MiwgNTIzLCAKKyAgICAxNjAzLCAxNjA0LCA1MjMsIDE2MDMsIDE2MDUsIDUyMywgMTYwMywgMTYwOSwgNTIzLCAxNjAzLCAxNjEwLCA1MjMsIDE2MDQsIAorICAgIDE1ODAsIDUyMywgMTYwNCwgMTU4MSwgNTIzLCAxNjA0LCAxNTgyLCA1MjMsIDE2MDQsIDE2MDUsIDUyMywgMTYwNCwgMTYwOSwgCisgICAgNTIzLCAxNjA0LCAxNjEwLCA1MjMsIDE2MDUsIDE1ODAsIDUyMywgMTYwNSwgMTU4MSwgNTIzLCAxNjA1LCAxNTgyLCA1MjMsIAorICAgIDE2MDUsIDE2MDUsIDUyMywgMTYwNSwgMTYwOSwgNTIzLCAxNjA1LCAxNjEwLCA1MjMsIDE2MDYsIDE1ODAsIDUyMywgMTYwNiwgCisgICAgMTU4MSwgNTIzLCAxNjA2LCAxNTgyLCA1MjMsIDE2MDYsIDE2MDUsIDUyMywgMTYwNiwgMTYwOSwgNTIzLCAxNjA2LCAxNjEwLCAKKyAgICA1MjMsIDE2MDcsIDE1ODAsIDUyMywgMTYwNywgMTYwNSwgNTIzLCAxNjA3LCAxNjA5LCA1MjMsIDE2MDcsIDE2MTAsIDUyMywgCisgICAgMTYxMCwgMTU4MCwgNTIzLCAxNjEwLCAxNTgxLCA1MjMsIDE2MTAsIDE1ODIsIDUyMywgMTYxMCwgMTYwNSwgNTIzLCAxNjEwLCAKKyAgICAxNjA5LCA1MjMsIDE2MTAsIDE2MTAsIDUyMywgMTU4NCwgMTY0OCwgNTIzLCAxNTg1LCAxNjQ4LCA1MjMsIDE2MDksIDE2NDgsIAorICAgIDc3OSwgMzIsIDE2MTIsIDE2MTcsIDc3OSwgMzIsIDE2MTMsIDE2MTcsIDc3OSwgMzIsIDE2MTQsIDE2MTcsIDc3OSwgMzIsIAorICAgIDE2MTUsIDE2MTcsIDc3OSwgMzIsIDE2MTYsIDE2MTcsIDc3OSwgMzIsIDE2MTcsIDE2NDgsIDUyNCwgMTU3NCwgMTU4NSwgCisgICAgNTI0LCAxNTc0LCAxNTg2LCA1MjQsIDE1NzQsIDE2MDUsIDUyNCwgMTU3NCwgMTYwNiwgNTI0LCAxNTc0LCAxNjA5LCA1MjQsIAorICAgIDE1NzQsIDE2MTAsIDUyNCwgMTU3NiwgMTU4NSwgNTI0LCAxNTc2LCAxNTg2LCA1MjQsIDE1NzYsIDE2MDUsIDUyNCwgMTU3NiwgCisgICAgMTYwNiwgNTI0LCAxNTc2LCAxNjA5LCA1MjQsIDE1NzYsIDE2MTAsIDUyNCwgMTU3OCwgMTU4NSwgNTI0LCAxNTc4LCAxNTg2LCAKKyAgICA1MjQsIDE1NzgsIDE2MDUsIDUyNCwgMTU3OCwgMTYwNiwgNTI0LCAxNTc4LCAxNjA5LCA1MjQsIDE1NzgsIDE2MTAsIDUyNCwgCisgICAgMTU3OSwgMTU4NSwgNTI0LCAxNTc5LCAxNTg2LCA1MjQsIDE1NzksIDE2MDUsIDUyNCwgMTU3OSwgMTYwNiwgNTI0LCAxNTc5LCAKKyAgICAxNjA5LCA1MjQsIDE1NzksIDE2MTAsIDUyNCwgMTYwMSwgMTYwOSwgNTI0LCAxNjAxLCAxNjEwLCA1MjQsIDE2MDIsIDE2MDksIAorICAgIDUyNCwgMTYwMiwgMTYxMCwgNTI0LCAxNjAzLCAxNTc1LCA1MjQsIDE2MDMsIDE2MDQsIDUyNCwgMTYwMywgMTYwNSwgNTI0LCAKKyAgICAxNjAzLCAxNjA5LCA1MjQsIDE2MDMsIDE2MTAsIDUyNCwgMTYwNCwgMTYwNSwgNTI0LCAxNjA0LCAxNjA5LCA1MjQsIDE2MDQsIAorICAgIDE2MTAsIDUyNCwgMTYwNSwgMTU3NSwgNTI0LCAxNjA1LCAxNjA1LCA1MjQsIDE2MDYsIDE1ODUsIDUyNCwgMTYwNiwgMTU4NiwgCisgICAgNTI0LCAxNjA2LCAxNjA1LCA1MjQsIDE2MDYsIDE2MDYsIDUyNCwgMTYwNiwgMTYwOSwgNTI0LCAxNjA2LCAxNjEwLCA1MjQsIAorICAgIDE2MDksIDE2NDgsIDUyNCwgMTYxMCwgMTU4NSwgNTI0LCAxNjEwLCAxNTg2LCA1MjQsIDE2MTAsIDE2MDUsIDUyNCwgMTYxMCwgCisgICAgMTYwNiwgNTI0LCAxNjEwLCAxNjA5LCA1MjQsIDE2MTAsIDE2MTAsIDUyNSwgMTU3NCwgMTU4MCwgNTI1LCAxNTc0LCAxNTgxLCAKKyAgICA1MjUsIDE1NzQsIDE1ODIsIDUyNSwgMTU3NCwgMTYwNSwgNTI1LCAxNTc0LCAxNjA3LCA1MjUsIDE1NzYsIDE1ODAsIDUyNSwgCisgICAgMTU3NiwgMTU4MSwgNTI1LCAxNTc2LCAxNTgyLCA1MjUsIDE1NzYsIDE2MDUsIDUyNSwgMTU3NiwgMTYwNywgNTI1LCAxNTc4LCAKKyAgICAxNTgwLCA1MjUsIDE1NzgsIDE1ODEsIDUyNSwgMTU3OCwgMTU4MiwgNTI1LCAxNTc4LCAxNjA1LCA1MjUsIDE1NzgsIDE2MDcsIAorICAgIDUyNSwgMTU3OSwgMTYwNSwgNTI1LCAxNTgwLCAxNTgxLCA1MjUsIDE1ODAsIDE2MDUsIDUyNSwgMTU4MSwgMTU4MCwgNTI1LCAKKyAgICAxNTgxLCAxNjA1LCA1MjUsIDE1ODIsIDE1ODAsIDUyNSwgMTU4MiwgMTYwNSwgNTI1LCAxNTg3LCAxNTgwLCA1MjUsIDE1ODcsIAorICAgIDE1ODEsIDUyNSwgMTU4NywgMTU4MiwgNTI1LCAxNTg3LCAxNjA1LCA1MjUsIDE1ODksIDE1ODEsIDUyNSwgMTU4OSwgMTU4MiwgCisgICAgNTI1LCAxNTg5LCAxNjA1LCA1MjUsIDE1OTAsIDE1ODAsIDUyNSwgMTU5MCwgMTU4MSwgNTI1LCAxNTkwLCAxNTgyLCA1MjUsIAorICAgIDE1OTAsIDE2MDUsIDUyNSwgMTU5MSwgMTU4MSwgNTI1LCAxNTkyLCAxNjA1LCA1MjUsIDE1OTMsIDE1ODAsIDUyNSwgMTU5MywgCisgICAgMTYwNSwgNTI1LCAxNTk0LCAxNTgwLCA1MjUsIDE1OTQsIDE2MDUsIDUyNSwgMTYwMSwgMTU4MCwgNTI1LCAxNjAxLCAxNTgxLCAKKyAgICA1MjUsIDE2MDEsIDE1ODIsIDUyNSwgMTYwMSwgMTYwNSwgNTI1LCAxNjAyLCAxNTgxLCA1MjUsIDE2MDIsIDE2MDUsIDUyNSwgCisgICAgMTYwMywgMTU4MCwgNTI1LCAxNjAzLCAxNTgxLCA1MjUsIDE2MDMsIDE1ODIsIDUyNSwgMTYwMywgMTYwNCwgNTI1LCAxNjAzLCAKKyAgICAxNjA1LCA1MjUsIDE2MDQsIDE1ODAsIDUyNSwgMTYwNCwgMTU4MSwgNTI1LCAxNjA0LCAxNTgyLCA1MjUsIDE2MDQsIDE2MDUsIAorICAgIDUyNSwgMTYwNCwgMTYwNywgNTI1LCAxNjA1LCAxNTgwLCA1MjUsIDE2MDUsIDE1ODEsIDUyNSwgMTYwNSwgMTU4MiwgNTI1LCAKKyAgICAxNjA1LCAxNjA1LCA1MjUsIDE2MDYsIDE1ODAsIDUyNSwgMTYwNiwgMTU4MSwgNTI1LCAxNjA2LCAxNTgyLCA1MjUsIDE2MDYsIAorICAgIDE2MDUsIDUyNSwgMTYwNiwgMTYwNywgNTI1LCAxNjA3LCAxNTgwLCA1MjUsIDE2MDcsIDE2MDUsIDUyNSwgMTYwNywgMTY0OCwgCisgICAgNTI1LCAxNjEwLCAxNTgwLCA1MjUsIDE2MTAsIDE1ODEsIDUyNSwgMTYxMCwgMTU4MiwgNTI1LCAxNjEwLCAxNjA1LCA1MjUsIAorICAgIDE2MTAsIDE2MDcsIDUyNiwgMTU3NCwgMTYwNSwgNTI2LCAxNTc0LCAxNjA3LCA1MjYsIDE1NzYsIDE2MDUsIDUyNiwgMTU3NiwgCisgICAgMTYwNywgNTI2LCAxNTc4LCAxNjA1LCA1MjYsIDE1NzgsIDE2MDcsIDUyNiwgMTU3OSwgMTYwNSwgNTI2LCAxNTc5LCAxNjA3LCAKKyAgICA1MjYsIDE1ODcsIDE2MDUsIDUyNiwgMTU4NywgMTYwNywgNTI2LCAxNTg4LCAxNjA1LCA1MjYsIDE1ODgsIDE2MDcsIDUyNiwgCisgICAgMTYwMywgMTYwNCwgNTI2LCAxNjAzLCAxNjA1LCA1MjYsIDE2MDQsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNSwgNTI2LCAxNjA2LCAKKyAgICAxNjA3LCA1MjYsIDE2MTAsIDE2MDUsIDUyNiwgMTYxMCwgMTYwNywgNzgyLCAxNjAwLCAxNjE0LCAxNjE3LCA3ODIsIDE2MDAsIAorICAgIDE2MTUsIDE2MTcsIDc4MiwgMTYwMCwgMTYxNiwgMTYxNywgNTIzLCAxNTkxLCAxNjA5LCA1MjMsIDE1OTEsIDE2MTAsIDUyMywgCisgICAgMTU5MywgMTYwOSwgNTIzLCAxNTkzLCAxNjEwLCA1MjMsIDE1OTQsIDE2MDksIDUyMywgMTU5NCwgMTYxMCwgNTIzLCAxNTg3LCAKKyAgICAxNjA5LCA1MjMsIDE1ODcsIDE2MTAsIDUyMywgMTU4OCwgMTYwOSwgNTIzLCAxNTg4LCAxNjEwLCA1MjMsIDE1ODEsIDE2MDksIAorICAgIDUyMywgMTU4MSwgMTYxMCwgNTIzLCAxNTgwLCAxNjA5LCA1MjMsIDE1ODAsIDE2MTAsIDUyMywgMTU4MiwgMTYwOSwgNTIzLCAKKyAgICAxNTgyLCAxNjEwLCA1MjMsIDE1ODksIDE2MDksIDUyMywgMTU4OSwgMTYxMCwgNTIzLCAxNTkwLCAxNjA5LCA1MjMsIDE1OTAsIAorICAgIDE2MTAsIDUyMywgMTU4OCwgMTU4MCwgNTIzLCAxNTg4LCAxNTgxLCA1MjMsIDE1ODgsIDE1ODIsIDUyMywgMTU4OCwgMTYwNSwgCisgICAgNTIzLCAxNTg4LCAxNTg1LCA1MjMsIDE1ODcsIDE1ODUsIDUyMywgMTU4OSwgMTU4NSwgNTIzLCAxNTkwLCAxNTg1LCA1MjQsIAorICAgIDE1OTEsIDE2MDksIDUyNCwgMTU5MSwgMTYxMCwgNTI0LCAxNTkzLCAxNjA5LCA1MjQsIDE1OTMsIDE2MTAsIDUyNCwgMTU5NCwgCisgICAgMTYwOSwgNTI0LCAxNTk0LCAxNjEwLCA1MjQsIDE1ODcsIDE2MDksIDUyNCwgMTU4NywgMTYxMCwgNTI0LCAxNTg4LCAxNjA5LCAKKyAgICA1MjQsIDE1ODgsIDE2MTAsIDUyNCwgMTU4MSwgMTYwOSwgNTI0LCAxNTgxLCAxNjEwLCA1MjQsIDE1ODAsIDE2MDksIDUyNCwgCisgICAgMTU4MCwgMTYxMCwgNTI0LCAxNTgyLCAxNjA5LCA1MjQsIDE1ODIsIDE2MTAsIDUyNCwgMTU4OSwgMTYwOSwgNTI0LCAxNTg5LCAKKyAgICAxNjEwLCA1MjQsIDE1OTAsIDE2MDksIDUyNCwgMTU5MCwgMTYxMCwgNTI0LCAxNTg4LCAxNTgwLCA1MjQsIDE1ODgsIDE1ODEsIAorICAgIDUyNCwgMTU4OCwgMTU4MiwgNTI0LCAxNTg4LCAxNjA1LCA1MjQsIDE1ODgsIDE1ODUsIDUyNCwgMTU4NywgMTU4NSwgNTI0LCAKKyAgICAxNTg5LCAxNTg1LCA1MjQsIDE1OTAsIDE1ODUsIDUyNSwgMTU4OCwgMTU4MCwgNTI1LCAxNTg4LCAxNTgxLCA1MjUsIDE1ODgsIAorICAgIDE1ODIsIDUyNSwgMTU4OCwgMTYwNSwgNTI1LCAxNTg3LCAxNjA3LCA1MjUsIDE1ODgsIDE2MDcsIDUyNSwgMTU5MSwgMTYwNSwgCisgICAgNTI2LCAxNTg3LCAxNTgwLCA1MjYsIDE1ODcsIDE1ODEsIDUyNiwgMTU4NywgMTU4MiwgNTI2LCAxNTg4LCAxNTgwLCA1MjYsIAorICAgIDE1ODgsIDE1ODEsIDUyNiwgMTU4OCwgMTU4MiwgNTI2LCAxNTkxLCAxNjA1LCA1MjYsIDE1OTIsIDE2MDUsIDUyNCwgMTU3NSwgCisgICAgMTYxMSwgNTIzLCAxNTc1LCAxNjExLCA3ODEsIDE1NzgsIDE1ODAsIDE2MDUsIDc4MCwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAKKyAgICAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE2MDUsIDc4MSwgMTU3OCwgMTU4MiwgMTYwNSwgNzgxLCAKKyAgICAxNTc4LCAxNjA1LCAxNTgwLCA3ODEsIDE1NzgsIDE2MDUsIDE1ODEsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MiwgNzgwLCAKKyAgICAxNTgwLCAxNjA1LCAxNTgxLCA3ODEsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MCwgMTU4MSwgMTYwNSwgMTYxMCwgNzgwLCAKKyAgICAxNTgxLCAxNjA1LCAxNjA5LCA3ODEsIDE1ODcsIDE1ODEsIDE1ODAsIDc4MSwgMTU4NywgMTU4MCwgMTU4MSwgNzgwLCAKKyAgICAxNTg3LCAxNTgwLCAxNjA5LCA3ODAsIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAKKyAgICAxNTg3LCAxNjA1LCAxNTgwLCA3ODAsIDE1ODcsIDE2MDUsIDE2MDUsIDc4MSwgMTU4NywgMTYwNSwgMTYwNSwgNzgwLCAKKyAgICAxNTg5LCAxNTgxLCAxNTgxLCA3ODEsIDE1ODksIDE1ODEsIDE1ODEsIDc4MCwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAKKyAgICAxNTg4LCAxNTgxLCAxNjA1LCA3ODEsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MCwgMTYxMCwgNzgwLCAKKyAgICAxNTg4LCAxNjA1LCAxNTgyLCA3ODEsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4OCwgMTYwNSwgMTYwNSwgNzgxLCAKKyAgICAxNTg4LCAxNjA1LCAxNjA1LCA3ODAsIDE1OTAsIDE1ODEsIDE2MDksIDc4MCwgMTU5MCwgMTU4MiwgMTYwNSwgNzgxLCAKKyAgICAxNTkwLCAxNTgyLCAxNjA1LCA3ODAsIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAKKyAgICAxNTkxLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTEsIDE2MDUsIDE2MTAsIDc4MCwgMTU5MywgMTU4MCwgMTYwNSwgNzgwLCAKKyAgICAxNTkzLCAxNjA1LCAxNjA1LCA3ODEsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwOSwgNzgwLCAKKyAgICAxNTk0LCAxNjA1LCAxNjA1LCA3ODAsIDE1OTQsIDE2MDUsIDE2MTAsIDc4MCwgMTU5NCwgMTYwNSwgMTYwOSwgNzgwLCAKKyAgICAxNjAxLCAxNTgyLCAxNjA1LCA3ODEsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MCwgMTYwMiwgMTYwNSwgMTU4MSwgNzgwLCAKKyAgICAxNjAyLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYxMCwgNzgwLCAKKyAgICAxNjA0LCAxNTgxLCAxNjA5LCA3ODEsIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAKKyAgICAxNjA0LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MCwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAKKyAgICAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIDE2MDUsIDE1ODEsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MSwgMTYwNSwgNzgwLCAKKyAgICAxNjA1LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDUsIDE1ODAsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MCwgMTYwNSwgNzgxLCAKKyAgICAxNjA1LCAxNTgyLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MiwgNzgxLCAKKyAgICAxNjA3LCAxNjA1LCAxNTgwLCA3ODEsIDE2MDcsIDE2MDUsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MSwgMTYwNSwgNzgwLCAKKyAgICAxNjA2LCAxNTgxLCAxNjA5LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MCwgMTYwNSwgNzgwLCAKKyAgICAxNjA2LCAxNTgwLCAxNjA5LCA3ODAsIDE2MDYsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTYwNSwgMTYwOSwgNzgwLCAKKyAgICAxNjEwLCAxNjA1LCAxNjA1LCA3ODEsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MCwgMTU3NiwgMTU4MiwgMTYxMCwgNzgwLCAKKyAgICAxNTc4LCAxNTgwLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MDksIDc4MCwgMTU3OCwgMTU4MiwgMTYxMCwgNzgwLCAKKyAgICAxNTc4LCAxNTgyLCAxNjA5LCA3ODAsIDE1NzgsIDE2MDUsIDE2MTAsIDc4MCwgMTU3OCwgMTYwNSwgMTYwOSwgNzgwLCAKKyAgICAxNTgwLCAxNjA1LCAxNjEwLCA3ODAsIDE1ODAsIDE1ODEsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYwOSwgNzgwLCAKKyAgICAxNTg3LCAxNTgyLCAxNjA5LCA3ODAsIDE1ODksIDE1ODEsIDE2MTAsIDc4MCwgMTU4OCwgMTU4MSwgMTYxMCwgNzgwLCAKKyAgICAxNTkwLCAxNTgxLCAxNjEwLCA3ODAsIDE2MDQsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNCwgMTYwNSwgMTYxMCwgNzgwLCAKKyAgICAxNjEwLCAxNTgxLCAxNjEwLCA3ODAsIDE2MTAsIDE1ODAsIDE2MTAsIDc4MCwgMTYxMCwgMTYwNSwgMTYxMCwgNzgwLCAKKyAgICAxNjA1LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDIsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MSwgMTYxMCwgNzgxLCAKKyAgICAxNjAyLCAxNjA1LCAxNTgxLCA3ODEsIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYxMCwgNzgwLCAKKyAgICAxNjAzLCAxNjA1LCAxNjEwLCA3ODEsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTYwNSwgMTU4MiwgMTYxMCwgNzgxLCAKKyAgICAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAKKyAgICAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE1ODAsIDE1ODEsIDE2MTAsIDc4MCwgMTU4MSwgMTU4MCwgMTYxMCwgNzgwLCAKKyAgICAxNjA1LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDEsIDE2MDUsIDE2MTAsIDc4MCwgMTU3NiwgMTU4MSwgMTYxMCwgNzgxLCAKKyAgICAxNjAzLCAxNjA1LCAxNjA1LCA3ODEsIDE1OTMsIDE1ODAsIDE2MDUsIDc4MSwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAKKyAgICAxNTg3LCAxNTgyLCAxNjEwLCA3ODAsIDE2MDYsIDE1ODAsIDE2MTAsIDc3OSwgMTU4OSwgMTYwNCwgMTc0NiwgNzc5LCAKKyAgICAxNjAyLCAxNjA0LCAxNzQ2LCAxMDM1LCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTc1LCAxNjAzLCAxNTc2LCAKKyAgICAxNTg1LCAxMDM1LCAxNjA1LCAxNTgxLCAxNjA1LCAxNTgzLCAxMDM1LCAxNTg5LCAxNjA0LCAxNTkzLCAxNjA1LCAxMDM1LCAKKyAgICAxNTg1LCAxNTg3LCAxNjA4LCAxNjA0LCAxMDM1LCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAxMDM1LCAxNjA4LCAxNTg3LCAKKyAgICAxNjA0LCAxNjA1LCA3NzksIDE1ODksIDE2MDQsIDE2MDksIDQ2MTksIDE1ODksIDE2MDQsIDE2MDksIDMyLCAxNTc1LCAKKyAgICAxNjA0LCAxNjA0LCAxNjA3LCAzMiwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMzIsIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIAorICAgIDIwNTksIDE1ODAsIDE2MDQsIDMyLCAxNTgwLCAxNjA0LCAxNTc1LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTg1LCAxNzQwLCAKKyAgICAxNTc1LCAxNjA0LCAyNjUsIDQ0LCAyNjUsIDEyMjg5LCAyNjUsIDEyMjkwLCAyNjUsIDU4LCAyNjUsIDU5LCAyNjUsIDMzLCAKKyAgICAyNjUsIDYzLCAyNjUsIDEyMzEwLCAyNjUsIDEyMzExLCAyNjUsIDgyMzAsIDI2NSwgODIyOSwgMjY1LCA4MjEyLCAyNjUsIAorICAgIDgyMTEsIDI2NSwgOTUsIDI2NSwgOTUsIDI2NSwgNDAsIDI2NSwgNDEsIDI2NSwgMTIzLCAyNjUsIDEyNSwgMjY1LCAxMjMwOCwgCisgICAgMjY1LCAxMjMwOSwgMjY1LCAxMjMwNCwgMjY1LCAxMjMwNSwgMjY1LCAxMjI5OCwgMjY1LCAxMjI5OSwgMjY1LCAxMjI5NiwgCisgICAgMjY1LCAxMjI5NywgMjY1LCAxMjMwMCwgMjY1LCAxMjMwMSwgMjY1LCAxMjMwMiwgMjY1LCAxMjMwMywgMjY1LCA5MSwgMjY1LCAKKyAgICA5MywgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDk1LCAyNTgsIDk1LCAyNTgsIAorICAgIDk1LCAyNzEsIDQ0LCAyNzEsIDEyMjg5LCAyNzEsIDQ2LCAyNzEsIDU5LCAyNzEsIDU4LCAyNzEsIDYzLCAyNzEsIDMzLCAKKyAgICAyNzEsIDgyMTIsIDI3MSwgNDAsIDI3MSwgNDEsIDI3MSwgMTIzLCAyNzEsIDEyNSwgMjcxLCAxMjMwOCwgMjcxLCAxMjMwOSwgCisgICAgMjcxLCAzNSwgMjcxLCAzOCwgMjcxLCA0MiwgMjcxLCA0MywgMjcxLCA0NSwgMjcxLCA2MCwgMjcxLCA2MiwgMjcxLCA2MSwgCisgICAgMjcxLCA5MiwgMjcxLCAzNiwgMjcxLCAzNywgMjcxLCA2NCwgNTIzLCAzMiwgMTYxMSwgNTI2LCAxNjAwLCAxNjExLCA1MjMsIAorICAgIDMyLCAxNjEyLCA1MjMsIDMyLCAxNjEzLCA1MjMsIDMyLCAxNjE0LCA1MjYsIDE2MDAsIDE2MTQsIDUyMywgMzIsIDE2MTUsIAorICAgIDUyNiwgMTYwMCwgMTYxNSwgNTIzLCAzMiwgMTYxNiwgNTI2LCAxNjAwLCAxNjE2LCA1MjMsIDMyLCAxNjE3LCA1MjYsIAorICAgIDE2MDAsIDE2MTcsIDUyMywgMzIsIDE2MTgsIDUyNiwgMTYwMCwgMTYxOCwgMjY3LCAxNTY5LCAyNjcsIDE1NzAsIDI2OCwgCisgICAgMTU3MCwgMjY3LCAxNTcxLCAyNjgsIDE1NzEsIDI2NywgMTU3MiwgMjY4LCAxNTcyLCAyNjcsIDE1NzMsIDI2OCwgMTU3MywgCisgICAgMjY3LCAxNTc0LCAyNjgsIDE1NzQsIDI2OSwgMTU3NCwgMjcwLCAxNTc0LCAyNjcsIDE1NzUsIDI2OCwgMTU3NSwgMjY3LCAKKyAgICAxNTc2LCAyNjgsIDE1NzYsIDI2OSwgMTU3NiwgMjcwLCAxNTc2LCAyNjcsIDE1NzcsIDI2OCwgMTU3NywgMjY3LCAxNTc4LCAKKyAgICAyNjgsIDE1NzgsIDI2OSwgMTU3OCwgMjcwLCAxNTc4LCAyNjcsIDE1NzksIDI2OCwgMTU3OSwgMjY5LCAxNTc5LCAyNzAsIAorICAgIDE1NzksIDI2NywgMTU4MCwgMjY4LCAxNTgwLCAyNjksIDE1ODAsIDI3MCwgMTU4MCwgMjY3LCAxNTgxLCAyNjgsIDE1ODEsIAorICAgIDI2OSwgMTU4MSwgMjcwLCAxNTgxLCAyNjcsIDE1ODIsIDI2OCwgMTU4MiwgMjY5LCAxNTgyLCAyNzAsIDE1ODIsIDI2NywgCisgICAgMTU4MywgMjY4LCAxNTgzLCAyNjcsIDE1ODQsIDI2OCwgMTU4NCwgMjY3LCAxNTg1LCAyNjgsIDE1ODUsIDI2NywgMTU4NiwgCisgICAgMjY4LCAxNTg2LCAyNjcsIDE1ODcsIDI2OCwgMTU4NywgMjY5LCAxNTg3LCAyNzAsIDE1ODcsIDI2NywgMTU4OCwgMjY4LCAKKyAgICAxNTg4LCAyNjksIDE1ODgsIDI3MCwgMTU4OCwgMjY3LCAxNTg5LCAyNjgsIDE1ODksIDI2OSwgMTU4OSwgMjcwLCAxNTg5LCAKKyAgICAyNjcsIDE1OTAsIDI2OCwgMTU5MCwgMjY5LCAxNTkwLCAyNzAsIDE1OTAsIDI2NywgMTU5MSwgMjY4LCAxNTkxLCAyNjksIAorICAgIDE1OTEsIDI3MCwgMTU5MSwgMjY3LCAxNTkyLCAyNjgsIDE1OTIsIDI2OSwgMTU5MiwgMjcwLCAxNTkyLCAyNjcsIDE1OTMsIAorICAgIDI2OCwgMTU5MywgMjY5LCAxNTkzLCAyNzAsIDE1OTMsIDI2NywgMTU5NCwgMjY4LCAxNTk0LCAyNjksIDE1OTQsIDI3MCwgCisgICAgMTU5NCwgMjY3LCAxNjAxLCAyNjgsIDE2MDEsIDI2OSwgMTYwMSwgMjcwLCAxNjAxLCAyNjcsIDE2MDIsIDI2OCwgMTYwMiwgCisgICAgMjY5LCAxNjAyLCAyNzAsIDE2MDIsIDI2NywgMTYwMywgMjY4LCAxNjAzLCAyNjksIDE2MDMsIDI3MCwgMTYwMywgMjY3LCAKKyAgICAxNjA0LCAyNjgsIDE2MDQsIDI2OSwgMTYwNCwgMjcwLCAxNjA0LCAyNjcsIDE2MDUsIDI2OCwgMTYwNSwgMjY5LCAxNjA1LCAKKyAgICAyNzAsIDE2MDUsIDI2NywgMTYwNiwgMjY4LCAxNjA2LCAyNjksIDE2MDYsIDI3MCwgMTYwNiwgMjY3LCAxNjA3LCAyNjgsIAorICAgIDE2MDcsIDI2OSwgMTYwNywgMjcwLCAxNjA3LCAyNjcsIDE2MDgsIDI2OCwgMTYwOCwgMjY3LCAxNjA5LCAyNjgsIDE2MDksIAorICAgIDI2NywgMTYxMCwgMjY4LCAxNjEwLCAyNjksIDE2MTAsIDI3MCwgMTYxMCwgNTIzLCAxNjA0LCAxNTcwLCA1MjQsIDE2MDQsIAorICAgIDE1NzAsIDUyMywgMTYwNCwgMTU3MSwgNTI0LCAxNjA0LCAxNTcxLCA1MjMsIDE2MDQsIDE1NzMsIDUyNCwgMTYwNCwgMTU3MywgCisgICAgNTIzLCAxNjA0LCAxNTc1LCA1MjQsIDE2MDQsIDE1NzUsIDI2NCwgMzMsIDI2NCwgMzQsIDI2NCwgMzUsIDI2NCwgMzYsIAorICAgIDI2NCwgMzcsIDI2NCwgMzgsIDI2NCwgMzksIDI2NCwgNDAsIDI2NCwgNDEsIDI2NCwgNDIsIDI2NCwgNDMsIDI2NCwgNDQsIAorICAgIDI2NCwgNDUsIDI2NCwgNDYsIDI2NCwgNDcsIDI2NCwgNDgsIDI2NCwgNDksIDI2NCwgNTAsIDI2NCwgNTEsIDI2NCwgNTIsIAorICAgIDI2NCwgNTMsIDI2NCwgNTQsIDI2NCwgNTUsIDI2NCwgNTYsIDI2NCwgNTcsIDI2NCwgNTgsIDI2NCwgNTksIDI2NCwgNjAsIAorICAgIDI2NCwgNjEsIDI2NCwgNjIsIDI2NCwgNjMsIDI2NCwgNjQsIDI2NCwgNjUsIDI2NCwgNjYsIDI2NCwgNjcsIDI2NCwgNjgsIAorICAgIDI2NCwgNjksIDI2NCwgNzAsIDI2NCwgNzEsIDI2NCwgNzIsIDI2NCwgNzMsIDI2NCwgNzQsIDI2NCwgNzUsIDI2NCwgNzYsIAorICAgIDI2NCwgNzcsIDI2NCwgNzgsIDI2NCwgNzksIDI2NCwgODAsIDI2NCwgODEsIDI2NCwgODIsIDI2NCwgODMsIDI2NCwgODQsIAorICAgIDI2NCwgODUsIDI2NCwgODYsIDI2NCwgODcsIDI2NCwgODgsIDI2NCwgODksIDI2NCwgOTAsIDI2NCwgOTEsIDI2NCwgOTIsIAorICAgIDI2NCwgOTMsIDI2NCwgOTQsIDI2NCwgOTUsIDI2NCwgOTYsIDI2NCwgOTcsIDI2NCwgOTgsIDI2NCwgOTksIDI2NCwgMTAwLCAKKyAgICAyNjQsIDEwMSwgMjY0LCAxMDIsIDI2NCwgMTAzLCAyNjQsIDEwNCwgMjY0LCAxMDUsIDI2NCwgMTA2LCAyNjQsIDEwNywgCisgICAgMjY0LCAxMDgsIDI2NCwgMTA5LCAyNjQsIDExMCwgMjY0LCAxMTEsIDI2NCwgMTEyLCAyNjQsIDExMywgMjY0LCAxMTQsIAorICAgIDI2NCwgMTE1LCAyNjQsIDExNiwgMjY0LCAxMTcsIDI2NCwgMTE4LCAyNjQsIDExOSwgMjY0LCAxMjAsIDI2NCwgMTIxLCAKKyAgICAyNjQsIDEyMiwgMjY0LCAxMjMsIDI2NCwgMTI0LCAyNjQsIDEyNSwgMjY0LCAxMjYsIDI2NCwgMTA2MjksIDI2NCwgMTA2MzAsIAorICAgIDI3MiwgMTIyOTAsIDI3MiwgMTIzMDAsIDI3MiwgMTIzMDEsIDI3MiwgMTIyODksIDI3MiwgMTI1MzksIDI3MiwgMTI1MzAsIAorICAgIDI3MiwgMTI0NDksIDI3MiwgMTI0NTEsIDI3MiwgMTI0NTMsIDI3MiwgMTI0NTUsIDI3MiwgMTI0NTcsIDI3MiwgMTI1MTUsIAorICAgIDI3MiwgMTI1MTcsIDI3MiwgMTI1MTksIDI3MiwgMTI0ODMsIDI3MiwgMTI1NDAsIDI3MiwgMTI0NTAsIDI3MiwgMTI0NTIsIAorICAgIDI3MiwgMTI0NTQsIDI3MiwgMTI0NTYsIDI3MiwgMTI0NTgsIDI3MiwgMTI0NTksIDI3MiwgMTI0NjEsIDI3MiwgMTI0NjMsIAorICAgIDI3MiwgMTI0NjUsIDI3MiwgMTI0NjcsIDI3MiwgMTI0NjksIDI3MiwgMTI0NzEsIDI3MiwgMTI0NzMsIDI3MiwgMTI0NzUsIAorICAgIDI3MiwgMTI0NzcsIDI3MiwgMTI0NzksIDI3MiwgMTI0ODEsIDI3MiwgMTI0ODQsIDI3MiwgMTI0ODYsIDI3MiwgMTI0ODgsIAorICAgIDI3MiwgMTI0OTAsIDI3MiwgMTI0OTEsIDI3MiwgMTI0OTIsIDI3MiwgMTI0OTMsIDI3MiwgMTI0OTQsIDI3MiwgMTI0OTUsIAorICAgIDI3MiwgMTI0OTgsIDI3MiwgMTI1MDEsIDI3MiwgMTI1MDQsIDI3MiwgMTI1MDcsIDI3MiwgMTI1MTAsIDI3MiwgMTI1MTEsIAorICAgIDI3MiwgMTI1MTIsIDI3MiwgMTI1MTMsIDI3MiwgMTI1MTQsIDI3MiwgMTI1MTYsIDI3MiwgMTI1MTgsIDI3MiwgMTI1MjAsIAorICAgIDI3MiwgMTI1MjEsIDI3MiwgMTI1MjIsIDI3MiwgMTI1MjMsIDI3MiwgMTI1MjQsIDI3MiwgMTI1MjUsIDI3MiwgMTI1MjcsIAorICAgIDI3MiwgMTI1MzEsIDI3MiwgMTI0NDEsIDI3MiwgMTI0NDIsIDI3MiwgMTI2NDQsIDI3MiwgMTI1OTMsIDI3MiwgMTI1OTQsIAorICAgIDI3MiwgMTI1OTUsIDI3MiwgMTI1OTYsIDI3MiwgMTI1OTcsIDI3MiwgMTI1OTgsIDI3MiwgMTI1OTksIDI3MiwgMTI2MDAsIAorICAgIDI3MiwgMTI2MDEsIDI3MiwgMTI2MDIsIDI3MiwgMTI2MDMsIDI3MiwgMTI2MDQsIDI3MiwgMTI2MDUsIDI3MiwgMTI2MDYsIAorICAgIDI3MiwgMTI2MDcsIDI3MiwgMTI2MDgsIDI3MiwgMTI2MDksIDI3MiwgMTI2MTAsIDI3MiwgMTI2MTEsIDI3MiwgMTI2MTIsIAorICAgIDI3MiwgMTI2MTMsIDI3MiwgMTI2MTQsIDI3MiwgMTI2MTUsIDI3MiwgMTI2MTYsIDI3MiwgMTI2MTcsIDI3MiwgMTI2MTgsIAorICAgIDI3MiwgMTI2MTksIDI3MiwgMTI2MjAsIDI3MiwgMTI2MjEsIDI3MiwgMTI2MjIsIDI3MiwgMTI2MjMsIDI3MiwgMTI2MjQsIAorICAgIDI3MiwgMTI2MjUsIDI3MiwgMTI2MjYsIDI3MiwgMTI2MjcsIDI3MiwgMTI2MjgsIDI3MiwgMTI2MjksIDI3MiwgMTI2MzAsIAorICAgIDI3MiwgMTI2MzEsIDI3MiwgMTI2MzIsIDI3MiwgMTI2MzMsIDI3MiwgMTI2MzQsIDI3MiwgMTI2MzUsIDI3MiwgMTI2MzYsIAorICAgIDI3MiwgMTI2MzcsIDI3MiwgMTI2MzgsIDI3MiwgMTI2MzksIDI3MiwgMTI2NDAsIDI3MiwgMTI2NDEsIDI3MiwgMTI2NDIsIAorICAgIDI3MiwgMTI2NDMsIDI2NCwgMTYyLCAyNjQsIDE2MywgMjY0LCAxNzIsIDI2NCwgMTc1LCAyNjQsIDE2NiwgMjY0LCAxNjUsIAorICAgIDI2NCwgODM2MSwgMjcyLCA5NDc0LCAyNzIsIDg1OTIsIDI3MiwgODU5MywgMjcyLCA4NTk0LCAyNzIsIDg1OTUsIDI3MiwgCisgICAgOTYzMiwgMjcyLCA5Njc1LCA1MTIsIDY5Nzg1LCA2OTgxOCwgNTEyLCA2OTc4NywgNjk4MTgsIDUxMiwgNjk3OTcsIDY5ODE4LCAKKyAgICA1MTIsIDY5OTM3LCA2OTkyNywgNTEyLCA2OTkzOCwgNjk5MjcsIDUxMiwgNzA0NzEsIDcwNDYyLCA1MTIsIDcwNDcxLCAKKyAgICA3MDQ4NywgNTEyLCA3MDg0MSwgNzA4NDIsIDUxMiwgNzA4NDEsIDcwODMyLCA1MTIsIDcwODQxLCA3MDg0NSwgNTEyLCAKKyAgICA3MTA5NiwgNzEwODcsIDUxMiwgNzEwOTcsIDcxMDg3LCA1MTIsIDExOTEyNywgMTE5MTQxLCA1MTIsIDExOTEyOCwgCisgICAgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIDExOTEzNSwgMTE5MTUyLCAKKyAgICA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgMTE5MTQxLCA1MTIsIAorICAgIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCA1MTIsIDExOTIyNywgCisgICAgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAKKyAgICAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAKKyAgICAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAKKyAgICAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAKKyAgICAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgCisgICAgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIAorICAgIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAKKyAgICAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIAorICAgIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIAorICAgIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIAorICAgIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAKKyAgICAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgCiAgICAgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIAogICAgIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAKLSAgICAyNjIsIDY1LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDcxLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc4LCAyNjIsIDc5LCAKLSAgICAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAKLSAgICAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDIsIDI2MiwgCi0gICAgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIAotICAgIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAKLSAgICAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIAotICAgIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIAotICAgIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIAotICAgIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIAotICAgIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgCi0gICAgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIAotICAgIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAKLSAgICAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgCi0gICAgMjYyLCA3MSwgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgCisgICAgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgCisgICAgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgCisgICAgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgCisgICAgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIAorICAgIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAKKyAgICAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgCisgICAgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAKKyAgICAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDcxLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAKICAgICAyNjIsIDgxLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAKLSAgICAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAKLSAgICAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgCi0gICAgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIAotICAgIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjgsIAotICAgIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIAotICAgIDI2MiwgNzksIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIAotICAgIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIAotICAgIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAKLSAgICAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgCi0gICAgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgCi0gICAgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgCi0gICAgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgCi0gICAgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgCisgICAgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAyLCAyNjIsIDEwNCwgMjYyLCAKKyAgICAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTIsIDI2MiwgCisgICAgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIAorICAgIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAKKyAgICAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAKKyAgICAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAKKyAgICAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAKKyAgICAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgCisgICAgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIAorICAgIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAKKyAgICAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIAorICAgIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIAorICAgIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTcsIAorICAgIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAKKyAgICAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgCisgICAgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIAorICAgIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2OCwgMjYyLCA2OSwgCisgICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OSwgCisgICAgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5NywgCiAgICAgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIAogICAgIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAKICAgICAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgCkBAIC0zNTM2LDMzICszODcxLDE1IEBACiAgICAgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIAogICAgIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAKICAgICAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgCi0gICAgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIAotICAgIDMwNSwgMjYyLCA1NjcsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCAKLSAgICA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgCi0gICAgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCAKLSAgICA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIAotICAgIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIDk0OCwgMjYyLCA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCAKLSAgICA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgCi0gICAgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIAotICAgIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIAotICAgIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIAotICAgIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIDkxOSwgMjYyLCA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCAKLSAgICA5MjMsIDI2MiwgOTI0LCAyNjIsIDkyNSwgMjYyLCA5MjYsIDI2MiwgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgCi0gICAgMTAxMiwgMjYyLCA5MzEsIDI2MiwgOTMyLCAyNjIsIDkzMywgMjYyLCA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCAKLSAgICA5MzcsIDI2MiwgODcxMSwgMjYyLCA5NDUsIDI2MiwgOTQ2LCAyNjIsIDk0NywgMjYyLCA5NDgsIDI2MiwgOTQ5LCAyNjIsIAotICAgIDk1MCwgMjYyLCA5NTEsIDI2MiwgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCAKLSAgICA5NTcsIDI2MiwgOTU4LCAyNjIsIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgCi0gICAgOTY0LCAyNjIsIDk2NSwgMjYyLCA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAKLSAgICAxMDEzLCAyNjIsIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5MTMsIDI2MiwgCi0gICAgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIAotICAgIDkyMSwgMjYyLCA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCAKLSAgICA5MjgsIDI2MiwgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIAotICAgIDkzNSwgMjYyLCA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgCi0gICAgOTQ4LCAyNjIsIDk0OSwgMjYyLCA5NTAsIDI2MiwgOTUxLCAyNjIsIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIAotICAgIDk1NSwgMjYyLCA5NTYsIDI2MiwgOTU3LCAyNjIsIDk1OCwgMjYyLCA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCAKLSAgICA5NjIsIDI2MiwgOTYzLCAyNjIsIDk2NCwgMjYyLCA5NjUsIDI2MiwgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgCi0gICAgOTY5LCAyNjIsIDg3MDYsIDI2MiwgMTAxMywgMjYyLCA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCAKLSAgICA5ODIsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgCisgICAgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAKKyAgICAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAKKyAgICAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAKKyAgICAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAKKyAgICAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIAorICAgIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAKKyAgICAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgCisgICAgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgMzA1LCAyNjIsIAorICAgIDU2NywgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCAKICAgICA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCA5MjUsIDI2MiwgCiAgICAgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIDkzMiwgMjYyLCAKICAgICA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgOTQ1LCAyNjIsIApAQCAtMzU3OCwzMzkgKzM4OTUsNTQ2IEBACiAgICAgOTUxLCAyNjIsIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgOTU3LCAyNjIsIAogICAgIDk1OCwgMjYyLCA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIDk2NCwgMjYyLCAKICAgICA5NjUsIDI2MiwgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgMTAxMywgMjYyLCAKLSAgICA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTg4LCAyNjIsIDk4OSwgMjYyLCAKLSAgICA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCAKLSAgICA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCAKLSAgICA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCAKLSAgICA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCAKLSAgICA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCAKLSAgICA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCAKLSAgICA1NiwgMjYyLCA1NywgMjYyLCAxNTc1LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgCi0gICAgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgCi0gICAgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAKLSAgICAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAKLSAgICAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE3MjIsIDI2MiwgMTY5NywgMjYyLCAxNjQ3LCAyNjIsIAotICAgIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIAotICAgIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgCi0gICAgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgCi0gICAgMjYyLCAxNTgwLCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAKLSAgICAxNTkzLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAKLSAgICAyNjIsIDE3MjIsIDI2MiwgMTY0NywgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIAotICAgIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAotICAgIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgCi0gICAgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE2OTcsIDI2MiwgMTU3NSwgCi0gICAgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA3LCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAKLSAgICAxNTgxLCAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAKLSAgICAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIAotICAgIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIAotICAgIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgCi0gICAgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCi0gICAgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAKLSAgICAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgNTE0LCA0OCwgNDYsIAotICAgIDUxNCwgNDgsIDQ0LCA1MTQsIDQ5LCA0NCwgNTE0LCA1MCwgNDQsIDUxNCwgNTEsIDQ0LCA1MTQsIDUyLCA0NCwgNTE0LCA1MywgCi0gICAgNDQsIDUxNCwgNTQsIDQ0LCA1MTQsIDU1LCA0NCwgNTE0LCA1NiwgNDQsIDUxNCwgNTcsIDQ0LCA3NzAsIDQwLCA2NSwgNDEsIAotICAgIDc3MCwgNDAsIDY2LCA0MSwgNzcwLCA0MCwgNjcsIDQxLCA3NzAsIDQwLCA2OCwgNDEsIDc3MCwgNDAsIDY5LCA0MSwgNzcwLCAKLSAgICA0MCwgNzAsIDQxLCA3NzAsIDQwLCA3MSwgNDEsIDc3MCwgNDAsIDcyLCA0MSwgNzcwLCA0MCwgNzMsIDQxLCA3NzAsIDQwLCAKLSAgICA3NCwgNDEsIDc3MCwgNDAsIDc1LCA0MSwgNzcwLCA0MCwgNzYsIDQxLCA3NzAsIDQwLCA3NywgNDEsIDc3MCwgNDAsIDc4LCAKLSAgICA0MSwgNzcwLCA0MCwgNzksIDQxLCA3NzAsIDQwLCA4MCwgNDEsIDc3MCwgNDAsIDgxLCA0MSwgNzcwLCA0MCwgODIsIDQxLCAKLSAgICA3NzAsIDQwLCA4MywgNDEsIDc3MCwgNDAsIDg0LCA0MSwgNzcwLCA0MCwgODUsIDQxLCA3NzAsIDQwLCA4NiwgNDEsIDc3MCwgCi0gICAgNDAsIDg3LCA0MSwgNzcwLCA0MCwgODgsIDQxLCA3NzAsIDQwLCA4OSwgNDEsIDc3MCwgNDAsIDkwLCA0MSwgNzcwLCAKLSAgICAxMjMwOCwgODMsIDEyMzA5LCAyNjMsIDY3LCAyNjMsIDgyLCA1MTksIDY3LCA2OCwgNTE5LCA4NywgOTAsIDI2NiwgNjUsIAotICAgIDI2NiwgNjYsIDI2NiwgNjcsIDI2NiwgNjgsIDI2NiwgNjksIDI2NiwgNzAsIDI2NiwgNzEsIDI2NiwgNzIsIDI2NiwgNzMsIAotICAgIDI2NiwgNzQsIDI2NiwgNzUsIDI2NiwgNzYsIDI2NiwgNzcsIDI2NiwgNzgsIDI2NiwgNzksIDI2NiwgODAsIDI2NiwgODEsIAotICAgIDI2NiwgODIsIDI2NiwgODMsIDI2NiwgODQsIDI2NiwgODUsIDI2NiwgODYsIDI2NiwgODcsIDI2NiwgODgsIDI2NiwgODksIAotICAgIDI2NiwgOTAsIDUyMiwgNzIsIDg2LCA1MjIsIDc3LCA4NiwgNTIyLCA4MywgNjgsIDUyMiwgODMsIDgzLCA3NzgsIDgwLCA4MCwgCi0gICAgODYsIDUyMiwgODcsIDY3LCA1MTUsIDc3LCA2NywgNTE1LCA3NywgNjgsIDUyMiwgNjgsIDc0LCA1MjIsIDEyNDExLCAKLSAgICAxMjM2MywgNTIyLCAxMjQ2NywgMTI0NjcsIDI2NiwgMTI0NjksIDI2NiwgMjUxNjMsIDI2NiwgMjMzODMsIDI2NiwgMjE0NTIsIAotICAgIDI2NiwgMTI0ODcsIDI2NiwgMjAxMDgsIDI2NiwgMjI4MTAsIDI2NiwgMzUyOTksIDI2NiwgMjI4MjUsIDI2NiwgMjAxMzIsIAotICAgIDI2NiwgMjYxNDQsIDI2NiwgMjg5NjEsIDI2NiwgMjYwMDksIDI2NiwgMjEwNjksIDI2NiwgMjQ0NjAsIDI2NiwgMjA4NzcsIAotICAgIDI2NiwgMjYwMzIsIDI2NiwgMjEwMjEsIDI2NiwgMzIwNjYsIDI2NiwgMjk5ODMsIDI2NiwgMzYwMDksIDI2NiwgMjI3NjgsIAotICAgIDI2NiwgMjE1NjEsIDI2NiwgMjg0MzYsIDI2NiwgMjUyMzcsIDI2NiwgMjU0MjksIDI2NiwgMTk5NjgsIDI2NiwgMTk5NzcsIAotICAgIDI2NiwgMzY5MzgsIDI2NiwgMjQwMzgsIDI2NiwgMjAwMTMsIDI2NiwgMjE0OTEsIDI2NiwgMjUzNTEsIDI2NiwgMzYyMDgsIAotICAgIDI2NiwgMjUxNzEsIDI2NiwgMzExMDUsIDI2NiwgMzEzNTQsIDI2NiwgMjE1MTIsIDI2NiwgMjgyODgsIDI2NiwgMjYzNzcsIAotICAgIDI2NiwgMjYzNzYsIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgCi0gICAgNzcwLCAxMjMwOCwgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAKLSAgICAxMjMwOSwgNzcwLCAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIAotICAgIDMwNDIzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgCi0gICAgMjQ0NzEsIDI2MywgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIAotICAgIDIwMzIwLCAyNTYsIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIAotICAgIDIwNzExLCAyNTYsIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAKLSAgICAyMDgzNiwgMjU2LCAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgCi0gICAgMTMyNDI3LCAyNTYsIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIAotICAgIDE2ODQxNSwgMjU2LCAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAKLSAgICAyMTEwNiwgMjU2LCAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAKLSAgICAyMTI0MiwgMjU2LCAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAKLSAgICAyMTMzOCwgMjU2LCAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAKLSAgICAxMzM2NzYsIDI1NiwgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIAotICAgIDIxNDg5LCAyNTYsIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIAotICAgIDIxNjY2LCAyNTYsIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIAotICAgIDIxODkyLCAyNTYsIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIAotICAgIDIyMDIyLCAyNTYsIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIAotICAgIDIyNDc4LCAyNTYsIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIAotICAgIDIyNzAwLCAyNTYsIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAKLSAgICAyMjgxOCwgMjU2LCAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIAotICAgIDIzMDc5LCAyNTYsIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIAotICAgIDIzMzU4LCAyNTYsIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAKLSAgICAyMzUzOSwgMjU2LCAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgCi0gICAgMTQyMDksIDI1NiwgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIAotICAgIDIzODc1LCAyNTYsIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAKLSAgICAyNDAzNCwgMjU2LCAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAKLSAgICAxNDQzNCwgMjU2LCAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgCi0gICAgMjQyNjYsIDI1NiwgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIAotICAgIDI1NiwgMjQzNTQsIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgCi0gICAgMjU2LCAyNDQyNywgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgCi0gICAgMjU2LCAyNDcwNSwgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIAotICAgIDI1NiwgMjQ5MDQsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIAotICAgIDI1NiwgMjUwMTAsIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIAotICAgIDI1NiwgMjUxMDQsIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIAotICAgIDI1NiwgMTQyMDkyLCAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAKLSAgICAyNTYsIDE0MjMyMSwgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgCi0gICAgMjU2LCAyNTcyNiwgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgCi0gICAgMjU2LCAxNDMzNzAsIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIAotICAgIDI1NiwgMTUxMTIsIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIAotICAgIDI1NiwgMzI5NDEsIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIAotICAgIDI1NiwgMjY0NTEsIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAKLSAgICAyNTYsIDI2NzU3LCAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgCi0gICAgMjU2LCAyNjk0NiwgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIAotICAgIDI1NiwgMTUzODQsIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAKLSAgICAyNTYsIDI3NTUxLCAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgCi0gICAgMTQ2MTcwLCAyNTYsIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAKLSAgICAyNzkyNiwgMjU2LCAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAKLSAgICAyODAzNywgMjU2LCAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgCi0gICAgMjgzNjMsIDI1NiwgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAKLSAgICAxNDczNDIsIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgCi0gICAgMjg3NDYsIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIAotICAgIDE0ODA2NywgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgCi0gICAgMTQ5MDAwLCAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIAotICAgIDI1NiwgMjk1NzksIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIAotICAgIDI1NiwgMjk3ODgsIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIAotICAgIDI1NiwgMTUwNTgyLCAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgCi0gICAgMzAyMjQsIDI1NiwgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIAotICAgIDI1NiwgMzA0NTIsIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIAotICAgIDMwNDk0LCAyNTYsIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIAotICAgIDE2NDU0LCAyNTYsIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAKLSAgICAxNjYxMSwgMjU2LCAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgCi0gICAgMjU2LCAzMTIxMSwgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIAotICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgCi0gICAgMzE2ODYsIDI1NiwgMzE2ODksIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIAotICAgIDMxOTc2LCAyNTYsIDMxOTcxLCAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAKLSAgICAzMjE5OSwgMjU2LCAzMjI1OCwgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIAotICAgIDE3MjQxLCAyNTYsIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgCi0gICAgMzI3NzMsIDI1NiwgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIAotICAgIDI1NiwgMTQ0MjIzLCAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAKLSAgICAyNTYsIDIzMjIxLCAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAKLSAgICAzMzI4MSwgMjU2LCAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAKLSAgICAzMzQzNywgMjU2LCAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAKLSAgICAxNTg1MjQsIDI1NiwgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgCi0gICAgMzM3MjUsIDI1NiwgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgCi0gICAgMzM3NTYsIDI1NiwgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIAotICAgIDI1NiwgMzQwMzUsIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgCi0gICAgMjU2LCAxNzc2MSwgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAKLSAgICAyNTYsIDM0NDA3LCAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAKLSAgICAyNTYsIDM0NjgxLCAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAKLSAgICAyNTYsIDM0ODE3LCAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgCi0gICAgMjU2LCAzNTAzOCwgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAKLSAgICAyNTYsIDE4MTEwLCAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAKLSAgICAyNTYsIDE2Mjk4NCwgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIAotICAgIDI1NiwgMTMzMTI0LCAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgCi0gICAgMjU2LCAzNjY2NCwgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAKLSAgICAyNTYsIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgCi0gICAgMjU2LCAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIAotICAgIDI1NiwgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgCi0gICAgMjU2LCAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAKLSAgICAyNTYsIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIAotICAgIDI1NiwgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIAotICAgIDI1NiwgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAKLSAgICAyNTYsIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIAotICAgIDE3MjY4OSwgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCAKLSAgICA0MDcxOSwgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAorICAgIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIAorICAgIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCAKKyAgICA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgCisgICAgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCAKKyAgICA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgOTQ4LCAyNjIsIAorICAgIDk0OSwgMjYyLCA5NTAsIDI2MiwgOTUxLCAyNjIsIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCAKKyAgICA5NTYsIDI2MiwgOTU3LCAyNjIsIDk1OCwgMjYyLCA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgCisgICAgOTYzLCAyNjIsIDk2NCwgMjYyLCA5NjUsIDI2MiwgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIAorICAgIDg3MDYsIDI2MiwgMTAxMywgMjYyLCA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgCisgICAgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgOTE5LCAyNjIsIAorICAgIDkyMCwgMjYyLCA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIDkyNiwgMjYyLCAKKyAgICA5MjcsIDI2MiwgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgOTMzLCAyNjIsIAorICAgIDkzNCwgMjYyLCA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCA5NDYsIDI2MiwgCisgICAgOTQ3LCAyNjIsIDk0OCwgMjYyLCA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIAorICAgIDk1NCwgMjYyLCA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCAKKyAgICA5NjEsIDI2MiwgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgCisgICAgOTY4LCAyNjIsIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIAorICAgIDEwMDksIDI2MiwgOTgyLCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgCisgICAgOTE4LCAyNjIsIDkxOSwgMjYyLCA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIAorICAgIDkyNSwgMjYyLCA5MjYsIDI2MiwgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgCisgICAgOTMyLCAyNjIsIDkzMywgMjYyLCA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCAKKyAgICA5NDUsIDI2MiwgOTQ2LCAyNjIsIDk0NywgMjYyLCA5NDgsIDI2MiwgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgCisgICAgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIAorICAgIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCAKKyAgICA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAKKyAgICAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5ODgsIDI2MiwgOTg5LCAyNjIsIDQ4LCAyNjIsIAorICAgIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIAorICAgIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIAorICAgIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIAorICAgIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIDQ5LCAyNjIsIDUwLCAyNjIsIAorICAgIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIDU3LCAyNjIsIDQ4LCAyNjIsIAorICAgIDQ5LCAyNjIsIDUwLCAyNjIsIDUxLCAyNjIsIDUyLCAyNjIsIDUzLCAyNjIsIDU0LCAyNjIsIDU1LCAyNjIsIDU2LCAyNjIsIAorICAgIDU3LCAyNjIsIDE1NzUsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAKKyAgICAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIAorICAgIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIAorICAgIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgCisgICAgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTcyMiwgMjYyLCAxNjk3LCAyNjIsIDE2NDcsIDI2MiwgMTU3NiwgCisgICAgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgMjYyLCAKKyAgICAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAKKyAgICAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAyNjIsIAorICAgIDE1ODAsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAorICAgIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIDI2MiwgCisgICAgMTcyMiwgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgCisgICAgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAKKyAgICAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAKKyAgICAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTY5NywgMjYyLCAxNTc1LCAyNjIsIAorICAgIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDcsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIDE1ODEsIAorICAgIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgCisgICAgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgCisgICAgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAKKyAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAKKyAgICAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIAorICAgIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIAorICAgIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCA1MTQsIDQ4LCA0NiwgNTE0LCAKKyAgICA0OCwgNDQsIDUxNCwgNDksIDQ0LCA1MTQsIDUwLCA0NCwgNTE0LCA1MSwgNDQsIDUxNCwgNTIsIDQ0LCA1MTQsIDUzLCA0NCwgCisgICAgNTE0LCA1NCwgNDQsIDUxNCwgNTUsIDQ0LCA1MTQsIDU2LCA0NCwgNTE0LCA1NywgNDQsIDc3MCwgNDAsIDY1LCA0MSwgNzcwLCAKKyAgICA0MCwgNjYsIDQxLCA3NzAsIDQwLCA2NywgNDEsIDc3MCwgNDAsIDY4LCA0MSwgNzcwLCA0MCwgNjksIDQxLCA3NzAsIDQwLCAKKyAgICA3MCwgNDEsIDc3MCwgNDAsIDcxLCA0MSwgNzcwLCA0MCwgNzIsIDQxLCA3NzAsIDQwLCA3MywgNDEsIDc3MCwgNDAsIDc0LCAKKyAgICA0MSwgNzcwLCA0MCwgNzUsIDQxLCA3NzAsIDQwLCA3NiwgNDEsIDc3MCwgNDAsIDc3LCA0MSwgNzcwLCA0MCwgNzgsIDQxLCAKKyAgICA3NzAsIDQwLCA3OSwgNDEsIDc3MCwgNDAsIDgwLCA0MSwgNzcwLCA0MCwgODEsIDQxLCA3NzAsIDQwLCA4MiwgNDEsIDc3MCwgCisgICAgNDAsIDgzLCA0MSwgNzcwLCA0MCwgODQsIDQxLCA3NzAsIDQwLCA4NSwgNDEsIDc3MCwgNDAsIDg2LCA0MSwgNzcwLCA0MCwgCisgICAgODcsIDQxLCA3NzAsIDQwLCA4OCwgNDEsIDc3MCwgNDAsIDg5LCA0MSwgNzcwLCA0MCwgOTAsIDQxLCA3NzAsIDEyMzA4LCAKKyAgICA4MywgMTIzMDksIDI2MywgNjcsIDI2MywgODIsIDUxOSwgNjcsIDY4LCA1MTksIDg3LCA5MCwgMjY2LCA2NSwgMjY2LCA2NiwgCisgICAgMjY2LCA2NywgMjY2LCA2OCwgMjY2LCA2OSwgMjY2LCA3MCwgMjY2LCA3MSwgMjY2LCA3MiwgMjY2LCA3MywgMjY2LCA3NCwgCisgICAgMjY2LCA3NSwgMjY2LCA3NiwgMjY2LCA3NywgMjY2LCA3OCwgMjY2LCA3OSwgMjY2LCA4MCwgMjY2LCA4MSwgMjY2LCA4MiwgCisgICAgMjY2LCA4MywgMjY2LCA4NCwgMjY2LCA4NSwgMjY2LCA4NiwgMjY2LCA4NywgMjY2LCA4OCwgMjY2LCA4OSwgMjY2LCA5MCwgCisgICAgNTIyLCA3MiwgODYsIDUyMiwgNzcsIDg2LCA1MjIsIDgzLCA2OCwgNTIyLCA4MywgODMsIDc3OCwgODAsIDgwLCA4NiwgNTIyLCAKKyAgICA4NywgNjcsIDUxNSwgNzcsIDY3LCA1MTUsIDc3LCA2OCwgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIDEyMzYzLCA1MjIsIAorICAgIDEyNDY3LCAxMjQ2NywgMjY2LCAxMjQ2OSwgMjY2LCAyNTE2MywgMjY2LCAyMzM4MywgMjY2LCAyMTQ1MiwgMjY2LCAxMjQ4NywgCisgICAgMjY2LCAyMDEwOCwgMjY2LCAyMjgxMCwgMjY2LCAzNTI5OSwgMjY2LCAyMjgyNSwgMjY2LCAyMDEzMiwgMjY2LCAyNjE0NCwgCisgICAgMjY2LCAyODk2MSwgMjY2LCAyNjAwOSwgMjY2LCAyMTA2OSwgMjY2LCAyNDQ2MCwgMjY2LCAyMDg3NywgMjY2LCAyNjAzMiwgCisgICAgMjY2LCAyMTAyMSwgMjY2LCAzMjA2NiwgMjY2LCAyOTk4MywgMjY2LCAzNjAwOSwgMjY2LCAyMjc2OCwgMjY2LCAyMTU2MSwgCisgICAgMjY2LCAyODQzNiwgMjY2LCAyNTIzNywgMjY2LCAyNTQyOSwgMjY2LCAxOTk2OCwgMjY2LCAxOTk3NywgMjY2LCAzNjkzOCwgCisgICAgMjY2LCAyNDAzOCwgMjY2LCAyMDAxMywgMjY2LCAyMTQ5MSwgMjY2LCAyNTM1MSwgMjY2LCAzNjIwOCwgMjY2LCAyNTE3MSwgCisgICAgMjY2LCAzMTEwNSwgMjY2LCAzMTM1NCwgMjY2LCAyMTUxMiwgMjY2LCAyODI4OCwgMjY2LCAyNjM3NywgMjY2LCAyNjM3NiwgCisgICAgMjY2LCAzMDAwMywgMjY2LCAyMTEwNiwgMjY2LCAyMTk0MiwgNzcwLCAxMjMwOCwgMjY0MTIsIDEyMzA5LCA3NzAsIDEyMzA4LCAKKyAgICAxOTk3NywgMTIzMDksIDc3MCwgMTIzMDgsIDIwMTA4LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjM0MzMsIDEyMzA5LCA3NzAsIAorICAgIDEyMzA4LCAyODg1NywgMTIzMDksIDc3MCwgMTIzMDgsIDI1MTcxLCAxMjMwOSwgNzcwLCAxMjMwOCwgMzA0MjMsIDEyMzA5LCAKKyAgICA3NzAsIDEyMzA4LCAyMTIxMywgMTIzMDksIDc3MCwgMTIzMDgsIDI1OTQzLCAxMjMwOSwgMjYzLCAyNDQ3MSwgMjYzLCAKKyAgICAyMTQ4NywgMjU2LCAyMDAyOSwgMjU2LCAyMDAyNCwgMjU2LCAyMDAzMywgMjU2LCAxMzEzNjIsIDI1NiwgMjAzMjAsIDI1NiwgCisgICAgMjAzOTgsIDI1NiwgMjA0MTEsIDI1NiwgMjA0ODIsIDI1NiwgMjA2MDIsIDI1NiwgMjA2MzMsIDI1NiwgMjA3MTEsIDI1NiwgCisgICAgMjA2ODcsIDI1NiwgMTM0NzAsIDI1NiwgMTMyNjY2LCAyNTYsIDIwODEzLCAyNTYsIDIwODIwLCAyNTYsIDIwODM2LCAyNTYsIAorICAgIDIwODU1LCAyNTYsIDEzMjM4MCwgMjU2LCAxMzQ5NywgMjU2LCAyMDgzOSwgMjU2LCAyMDg3NywgMjU2LCAxMzI0MjcsIDI1NiwgCisgICAgMjA4ODcsIDI1NiwgMjA5MDAsIDI1NiwgMjAxNzIsIDI1NiwgMjA5MDgsIDI1NiwgMjA5MTcsIDI1NiwgMTY4NDE1LCAyNTYsIAorICAgIDIwOTgxLCAyNTYsIDIwOTk1LCAyNTYsIDEzNTM1LCAyNTYsIDIxMDUxLCAyNTYsIDIxMDYyLCAyNTYsIDIxMTA2LCAyNTYsIAorICAgIDIxMTExLCAyNTYsIDEzNTg5LCAyNTYsIDIxMTkxLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMjQyLCAyNTYsIAorICAgIDIxMjUzLCAyNTYsIDIxMjU0LCAyNTYsIDIxMjcxLCAyNTYsIDIxMzIxLCAyNTYsIDIxMzI5LCAyNTYsIDIxMzM4LCAyNTYsIAorICAgIDIxMzYzLCAyNTYsIDIxMzczLCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDEzMzY3NiwgMjU2LCAKKyAgICAyODc4NCwgMjU2LCAyMTQ1MCwgMjU2LCAyMTQ3MSwgMjU2LCAxMzM5ODcsIDI1NiwgMjE0ODMsIDI1NiwgMjE0ODksIDI1NiwgCisgICAgMjE1MTAsIDI1NiwgMjE2NjIsIDI1NiwgMjE1NjAsIDI1NiwgMjE1NzYsIDI1NiwgMjE2MDgsIDI1NiwgMjE2NjYsIDI1NiwgCisgICAgMjE3NTAsIDI1NiwgMjE3NzYsIDI1NiwgMjE4NDMsIDI1NiwgMjE4NTksIDI1NiwgMjE4OTIsIDI1NiwgMjE4OTIsIDI1NiwgCisgICAgMjE5MTMsIDI1NiwgMjE5MzEsIDI1NiwgMjE5MzksIDI1NiwgMjE5NTQsIDI1NiwgMjIyOTQsIDI1NiwgMjIwMjIsIDI1NiwgCisgICAgMjIyOTUsIDI1NiwgMjIwOTcsIDI1NiwgMjIxMzIsIDI1NiwgMjA5OTksIDI1NiwgMjI3NjYsIDI1NiwgMjI0NzgsIDI1NiwgCisgICAgMjI1MTYsIDI1NiwgMjI1NDEsIDI1NiwgMjI0MTEsIDI1NiwgMjI1NzgsIDI1NiwgMjI1NzcsIDI1NiwgMjI3MDAsIDI1NiwgCisgICAgMTM2NDIwLCAyNTYsIDIyNzcwLCAyNTYsIDIyNzc1LCAyNTYsIDIyNzkwLCAyNTYsIDIyODEwLCAyNTYsIDIyODE4LCAyNTYsIAorICAgIDIyODgyLCAyNTYsIDEzNjg3MiwgMjU2LCAxMzY5MzgsIDI1NiwgMjMwMjAsIDI1NiwgMjMwNjcsIDI1NiwgMjMwNzksIDI1NiwgCisgICAgMjMwMDAsIDI1NiwgMjMxNDIsIDI1NiwgMTQwNjIsIDI1NiwgMTQwNzYsIDI1NiwgMjMzMDQsIDI1NiwgMjMzNTgsIDI1NiwgCisgICAgMjMzNTgsIDI1NiwgMTM3NjcyLCAyNTYsIDIzNDkxLCAyNTYsIDIzNTEyLCAyNTYsIDIzNTI3LCAyNTYsIDIzNTM5LCAyNTYsIAorICAgIDEzODAwOCwgMjU2LCAyMzU1MSwgMjU2LCAyMzU1OCwgMjU2LCAyNDQwMywgMjU2LCAyMzU4NiwgMjU2LCAxNDIwOSwgMjU2LCAKKyAgICAyMzY0OCwgMjU2LCAyMzY2MiwgMjU2LCAyMzc0NCwgMjU2LCAyMzY5MywgMjU2LCAxMzg3MjQsIDI1NiwgMjM4NzUsIDI1NiwgCisgICAgMTM4NzI2LCAyNTYsIDIzOTE4LCAyNTYsIDIzOTE1LCAyNTYsIDIzOTMyLCAyNTYsIDI0MDMzLCAyNTYsIDI0MDM0LCAyNTYsIAorICAgIDE0MzgzLCAyNTYsIDI0MDYxLCAyNTYsIDI0MTA0LCAyNTYsIDI0MTI1LCAyNTYsIDI0MTY5LCAyNTYsIDE0NDM0LCAyNTYsIAorICAgIDEzOTY1MSwgMjU2LCAxNDQ2MCwgMjU2LCAyNDI0MCwgMjU2LCAyNDI0MywgMjU2LCAyNDI0NiwgMjU2LCAyNDI2NiwgMjU2LCAKKyAgICAxNzI5NDYsIDI1NiwgMjQzMTgsIDI1NiwgMTQwMDgxLCAyNTYsIDE0MDA4MSwgMjU2LCAzMzI4MSwgMjU2LCAyNDM1NCwgCisgICAgMjU2LCAyNDM1NCwgMjU2LCAxNDUzNSwgMjU2LCAxNDQwNTYsIDI1NiwgMTU2MTIyLCAyNTYsIDI0NDE4LCAyNTYsIDI0NDI3LCAKKyAgICAyNTYsIDE0NTYzLCAyNTYsIDI0NDc0LCAyNTYsIDI0NTI1LCAyNTYsIDI0NTM1LCAyNTYsIDI0NTY5LCAyNTYsIDI0NzA1LCAKKyAgICAyNTYsIDE0NjUwLCAyNTYsIDE0NjIwLCAyNTYsIDI0NzI0LCAyNTYsIDE0MTAxMiwgMjU2LCAyNDc3NSwgMjU2LCAyNDkwNCwgCisgICAgMjU2LCAyNDkwOCwgMjU2LCAyNDkxMCwgMjU2LCAyNDkwOCwgMjU2LCAyNDk1NCwgMjU2LCAyNDk3NCwgMjU2LCAyNTAxMCwgCisgICAgMjU2LCAyNDk5NiwgMjU2LCAyNTAwNywgMjU2LCAyNTA1NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTA3OCwgMjU2LCAyNTEwNCwgCisgICAgMjU2LCAyNTExNSwgMjU2LCAyNTE4MSwgMjU2LCAyNTI2NSwgMjU2LCAyNTMwMCwgMjU2LCAyNTQyNCwgMjU2LCAxNDIwOTIsIAorICAgIDI1NiwgMjU0MDUsIDI1NiwgMjUzNDAsIDI1NiwgMjU0NDgsIDI1NiwgMjU0NzUsIDI1NiwgMjU1NzIsIDI1NiwgMTQyMzIxLCAKKyAgICAyNTYsIDI1NjM0LCAyNTYsIDI1NTQxLCAyNTYsIDI1NTEzLCAyNTYsIDE0ODk0LCAyNTYsIDI1NzA1LCAyNTYsIDI1NzI2LCAKKyAgICAyNTYsIDI1NzU3LCAyNTYsIDI1NzE5LCAyNTYsIDE0OTU2LCAyNTYsIDI1OTM1LCAyNTYsIDI1OTY0LCAyNTYsIDE0MzM3MCwgCisgICAgMjU2LCAyNjA4MywgMjU2LCAyNjM2MCwgMjU2LCAyNjE4NSwgMjU2LCAxNTEyOSwgMjU2LCAyNjI1NywgMjU2LCAxNTExMiwgCisgICAgMjU2LCAxNTA3NiwgMjU2LCAyMDg4MiwgMjU2LCAyMDg4NSwgMjU2LCAyNjM2OCwgMjU2LCAyNjI2OCwgMjU2LCAzMjk0MSwgCisgICAgMjU2LCAxNzM2OSwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQwMSwgMjU2LCAyNjQ2MiwgMjU2LCAyNjQ1MSwgCisgICAgMjU2LCAxNDQzMjMsIDI1NiwgMTUxNzcsIDI1NiwgMjY2MTgsIDI1NiwgMjY1MDEsIDI1NiwgMjY3MDYsIDI1NiwgMjY3NTcsIAorICAgIDI1NiwgMTQ0NDkzLCAyNTYsIDI2NzY2LCAyNTYsIDI2NjU1LCAyNTYsIDI2OTAwLCAyNTYsIDE1MjYxLCAyNTYsIDI2OTQ2LCAKKyAgICAyNTYsIDI3MDQzLCAyNTYsIDI3MTE0LCAyNTYsIDI3MzA0LCAyNTYsIDE0NTA1OSwgMjU2LCAyNzM1NSwgMjU2LCAxNTM4NCwgCisgICAgMjU2LCAyNzQyNSwgMjU2LCAxNDU1NzUsIDI1NiwgMjc0NzYsIDI1NiwgMTU0MzgsIDI1NiwgMjc1MDYsIDI1NiwgMjc1NTEsIAorICAgIDI1NiwgMjc1NzgsIDI1NiwgMjc1NzksIDI1NiwgMTQ2MDYxLCAyNTYsIDEzODUwNywgMjU2LCAxNDYxNzAsIDI1NiwgCisgICAgMjc3MjYsIDI1NiwgMTQ2NjIwLCAyNTYsIDI3ODM5LCAyNTYsIDI3ODUzLCAyNTYsIDI3NzUxLCAyNTYsIDI3OTI2LCAyNTYsIAorICAgIDI3OTY2LCAyNTYsIDI4MDIzLCAyNTYsIDI3OTY5LCAyNTYsIDI4MDA5LCAyNTYsIDI4MDI0LCAyNTYsIDI4MDM3LCAyNTYsIAorICAgIDE0NjcxOCwgMjU2LCAyNzk1NiwgMjU2LCAyODIwNywgMjU2LCAyODI3MCwgMjU2LCAxNTY2NywgMjU2LCAyODM2MywgMjU2LCAKKyAgICAyODM1OSwgMjU2LCAxNDcxNTMsIDI1NiwgMjgxNTMsIDI1NiwgMjg1MjYsIDI1NiwgMTQ3Mjk0LCAyNTYsIDE0NzM0MiwgCisgICAgMjU2LCAyODYxNCwgMjU2LCAyODcyOSwgMjU2LCAyODcwMiwgMjU2LCAyODY5OSwgMjU2LCAxNTc2NiwgMjU2LCAyODc0NiwgCisgICAgMjU2LCAyODc5NywgMjU2LCAyODc5MSwgMjU2LCAyODg0NSwgMjU2LCAxMzIzODksIDI1NiwgMjg5OTcsIDI1NiwgMTQ4MDY3LCAKKyAgICAyNTYsIDI5MDg0LCAyNTYsIDE0ODM5NSwgMjU2LCAyOTIyNCwgMjU2LCAyOTIzNywgMjU2LCAyOTI2NCwgMjU2LCAxNDkwMDAsIAorICAgIDI1NiwgMjkzMTIsIDI1NiwgMjkzMzMsIDI1NiwgMTQ5MzAxLCAyNTYsIDE0OTUyNCwgMjU2LCAyOTU2MiwgMjU2LCAyOTU3OSwgCisgICAgMjU2LCAxNjA0NCwgMjU2LCAyOTYwNSwgMjU2LCAxNjA1NiwgMjU2LCAxNjA1NiwgMjU2LCAyOTc2NywgMjU2LCAyOTc4OCwgCisgICAgMjU2LCAyOTgwOSwgMjU2LCAyOTgyOSwgMjU2LCAyOTg5OCwgMjU2LCAxNjE1NSwgMjU2LCAyOTk4OCwgMjU2LCAxNTA1ODIsIAorICAgIDI1NiwgMzAwMTQsIDI1NiwgMTUwNjc0LCAyNTYsIDMwMDY0LCAyNTYsIDEzOTY3OSwgMjU2LCAzMDIyNCwgMjU2LCAKKyAgICAxNTE0NTcsIDI1NiwgMTUxNDgwLCAyNTYsIDE1MTYyMCwgMjU2LCAxNjM4MCwgMjU2LCAxNjM5MiwgMjU2LCAzMDQ1MiwgCisgICAgMjU2LCAxNTE3OTUsIDI1NiwgMTUxNzk0LCAyNTYsIDE1MTgzMywgMjU2LCAxNTE4NTksIDI1NiwgMzA0OTQsIDI1NiwgCisgICAgMzA0OTUsIDI1NiwgMzA0OTUsIDI1NiwgMzA1MzgsIDI1NiwgMTY0NDEsIDI1NiwgMzA2MDMsIDI1NiwgMTY0NTQsIDI1NiwgCisgICAgMTY1MzQsIDI1NiwgMTUyNjA1LCAyNTYsIDMwNzk4LCAyNTYsIDMwODYwLCAyNTYsIDMwOTI0LCAyNTYsIDE2NjExLCAyNTYsIAorICAgIDE1MzEyNiwgMjU2LCAzMTA2MiwgMjU2LCAxNTMyNDIsIDI1NiwgMTUzMjg1LCAyNTYsIDMxMTE5LCAyNTYsIDMxMjExLCAKKyAgICAyNTYsIDE2Njg3LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzA2LCAyNTYsIDMxMzExLCAyNTYsIDE1Mzk4MCwgMjU2LCAxNTQyNzksIAorICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDMxNDcwLCAyNTYsIDE2ODk4LCAyNTYsIDE1NDUzOSwgMjU2LCAzMTY4NiwgMjU2LCAzMTY4OSwgCisgICAgMjU2LCAxNjkzNSwgMjU2LCAxNTQ3NTIsIDI1NiwgMzE5NTQsIDI1NiwgMTcwNTYsIDI1NiwgMzE5NzYsIDI1NiwgMzE5NzEsIAorICAgIDI1NiwgMzIwMDAsIDI1NiwgMTU1NTI2LCAyNTYsIDMyMDk5LCAyNTYsIDE3MTUzLCAyNTYsIDMyMTk5LCAyNTYsIDMyMjU4LCAKKyAgICAyNTYsIDMyMzI1LCAyNTYsIDE3MjA0LCAyNTYsIDE1NjIwMCwgMjU2LCAxNTYyMzEsIDI1NiwgMTcyNDEsIDI1NiwgCisgICAgMTU2Mzc3LCAyNTYsIDMyNjM0LCAyNTYsIDE1NjQ3OCwgMjU2LCAzMjY2MSwgMjU2LCAzMjc2MiwgMjU2LCAzMjc3MywgMjU2LCAKKyAgICAxNTY4OTAsIDI1NiwgMTU2OTYzLCAyNTYsIDMyODY0LCAyNTYsIDE1NzA5NiwgMjU2LCAzMjg4MCwgMjU2LCAxNDQyMjMsIAorICAgIDI1NiwgMTczNjUsIDI1NiwgMzI5NDYsIDI1NiwgMzMwMjcsIDI1NiwgMTc0MTksIDI1NiwgMzMwODYsIDI1NiwgMjMyMjEsIAorICAgIDI1NiwgMTU3NjA3LCAyNTYsIDE1NzYyMSwgMjU2LCAxNDQyNzUsIDI1NiwgMTQ0Mjg0LCAyNTYsIDMzMjgxLCAyNTYsIAorICAgIDMzMjg0LCAyNTYsIDM2NzY2LCAyNTYsIDE3NTE1LCAyNTYsIDMzNDI1LCAyNTYsIDMzNDE5LCAyNTYsIDMzNDM3LCAyNTYsIAorICAgIDIxMTcxLCAyNTYsIDMzNDU3LCAyNTYsIDMzNDU5LCAyNTYsIDMzNDY5LCAyNTYsIDMzNTEwLCAyNTYsIDE1ODUyNCwgMjU2LCAKKyAgICAzMzUwOSwgMjU2LCAzMzU2NSwgMjU2LCAzMzYzNSwgMjU2LCAzMzcwOSwgMjU2LCAzMzU3MSwgMjU2LCAzMzcyNSwgMjU2LCAKKyAgICAzMzc2NywgMjU2LCAzMzg3OSwgMjU2LCAzMzYxOSwgMjU2LCAzMzczOCwgMjU2LCAzMzc0MCwgMjU2LCAzMzc1NiwgMjU2LCAKKyAgICAxNTg3NzQsIDI1NiwgMTU5MDgzLCAyNTYsIDE1ODkzMywgMjU2LCAxNzcwNywgMjU2LCAzNDAzMywgMjU2LCAzNDAzNSwgCisgICAgMjU2LCAzNDA3MCwgMjU2LCAxNjA3MTQsIDI1NiwgMzQxNDgsIDI1NiwgMTU5NTMyLCAyNTYsIDE3NzU3LCAyNTYsIDE3NzYxLCAKKyAgICAyNTYsIDE1OTY2NSwgMjU2LCAxNTk5NTQsIDI1NiwgMTc3NzEsIDI1NiwgMzQzODQsIDI1NiwgMzQzOTYsIDI1NiwgMzQ0MDcsIAorICAgIDI1NiwgMzQ0MDksIDI1NiwgMzQ0NzMsIDI1NiwgMzQ0NDAsIDI1NiwgMzQ1NzQsIDI1NiwgMzQ1MzAsIDI1NiwgMzQ2ODEsIAorICAgIDI1NiwgMzQ2MDAsIDI1NiwgMzQ2NjcsIDI1NiwgMzQ2OTQsIDI1NiwgMTc4NzksIDI1NiwgMzQ3ODUsIDI1NiwgMzQ4MTcsIAorICAgIDI1NiwgMTc5MTMsIDI1NiwgMzQ5MTIsIDI1NiwgMzQ5MTUsIDI1NiwgMTYxMzgzLCAyNTYsIDM1MDMxLCAyNTYsIDM1MDM4LCAKKyAgICAyNTYsIDE3OTczLCAyNTYsIDM1MDY2LCAyNTYsIDEzNDk5LCAyNTYsIDE2MTk2NiwgMjU2LCAxNjIxNTAsIDI1NiwgMTgxMTAsIAorICAgIDI1NiwgMTgxMTksIDI1NiwgMzU0ODgsIDI1NiwgMzU1NjUsIDI1NiwgMzU3MjIsIDI1NiwgMzU5MjUsIDI1NiwgMTYyOTg0LCAKKyAgICAyNTYsIDM2MDExLCAyNTYsIDM2MDMzLCAyNTYsIDM2MTIzLCAyNTYsIDM2MjE1LCAyNTYsIDE2MzYzMSwgMjU2LCAxMzMxMjQsIAorICAgIDI1NiwgMzYyOTksIDI1NiwgMzYyODQsIDI1NiwgMzYzMzYsIDI1NiwgMTMzMzQyLCAyNTYsIDM2NTY0LCAyNTYsIDM2NjY0LCAKKyAgICAyNTYsIDE2NTMzMCwgMjU2LCAxNjUzNTcsIDI1NiwgMzcwMTIsIDI1NiwgMzcxMDUsIDI1NiwgMzcxMzcsIDI1NiwgCisgICAgMTY1Njc4LCAyNTYsIDM3MTQ3LCAyNTYsIDM3NDMyLCAyNTYsIDM3NTkxLCAyNTYsIDM3NTkyLCAyNTYsIDM3NTAwLCAyNTYsIAorICAgIDM3ODgxLCAyNTYsIDM3OTA5LCAyNTYsIDE2NjkwNiwgMjU2LCAzODI4MywgMjU2LCAxODgzNywgMjU2LCAzODMyNywgMjU2LCAKKyAgICAxNjcyODcsIDI1NiwgMTg5MTgsIDI1NiwgMzg1OTUsIDI1NiwgMjM5ODYsIDI1NiwgMzg2OTEsIDI1NiwgMTY4MjYxLCAyNTYsIAorICAgIDE2ODQ3NCwgMjU2LCAxOTA1NCwgMjU2LCAxOTA2MiwgMjU2LCAzODg4MCwgMjU2LCAxNjg5NzAsIDI1NiwgMTkxMjIsIDI1NiwgCisgICAgMTY5MTEwLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTUzLCAyNTYsIDE2OTM5OCwgMjU2LCAzOTEzOCwgMjU2LCAKKyAgICAxOTI1MSwgMjU2LCAzOTIwOSwgMjU2LCAzOTMzNSwgMjU2LCAzOTM2MiwgMjU2LCAzOTQyMiwgMjU2LCAxOTQwNiwgMjU2LCAKKyAgICAxNzA4MDAsIDI1NiwgMzk2OTgsIDI1NiwgNDAwMDAsIDI1NiwgNDAxODksIDI1NiwgMTk2NjIsIDI1NiwgMTk2OTMsIDI1NiwgCisgICAgNDAyOTUsIDI1NiwgMTcyMjM4LCAyNTYsIDE5NzA0LCAyNTYsIDE3MjI5MywgMjU2LCAxNzI1NTgsIDI1NiwgMTcyNjg5LCAKKyAgICAyNTYsIDQwNjM1LCAyNTYsIDE5Nzk4LCAyNTYsIDQwNjk3LCAyNTYsIDQwNzAyLCAyNTYsIDQwNzA5LCAyNTYsIDQwNzE5LCAKKyAgICAyNTYsIDQwNzI2LCAyNTYsIDQwNzYzLCAyNTYsIDE3MzU2OCwgCiB9OwogCiAvKiBpbmRleCB0YWJsZXMgZm9yIHRoZSBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KLSNkZWZpbmUgREVDT01QX1NISUZUIDgKKyNkZWZpbmUgREVDT01QX1NISUZUIDcKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGRlY29tcF9pbmRleDFbXSA9IHsKLSAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAxNiwgNywgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCA3LCA3LCA3LCA3LCA3LCAyNSwgCi0gICAgNywgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAzNCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgCi0gICAgNDEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQyLCA0MywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDQsIDcsIDcsIDQ1LCAKLSAgICA0NiwgNDcsIDQ4LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA0OSwgNywgNywgNTAsIDUxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA1MiwgNTMsIDU0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAwLCAxMCwgMTEsIDEyLCAwLCAwLCAwLCAwLCAxMywgMTQsIDE1LCAwLCAKKyAgICAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOCwgMCwgMCwgMCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgCisgICAgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDAsIDQyLCA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIAorICAgIDQ1LCAwLCAwLCA0NiwgMCwgNDcsIDAsIDAsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTksIDYwLCA2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNjIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgCisgICAgNzQsIDc1LCA3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzcsIDc4LCAwLCAwLCAwLCA3OSwgMCwgMCwgODAsIDAsIAorICAgIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODMsIDAsIDAsIDAsIDAsIDg0LCA4NSwgCisgICAgODYsIDg3LCA4OCwgODksIDkwLCA5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTIsIDkzLCAwLCAwLCAwLCAwLCA5NCwgOTUsIDk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZGVjb21wX2luZGV4MltdID0gewpAQCAtMzk3OCwzOCArNDUwMiwyMiBAQAogICAgIDAsIDAsIDAsIDAsIDEwNjYsIDEwNjksIDEwNzIsIDEwNzUsIDAsIDAsIDEwNzgsIDEwODEsIDAsIDAsIDEwODQsIDEwODcsIAogICAgIDEwOTAsIDEwOTMsIDEwOTYsIDEwOTksIDAsIDAsIDExMDIsIDExMDUsIDExMDgsIDExMTEsIDExMTQsIDExMTcsIDAsIDAsIAogICAgIDExMjAsIDExMjMsIDExMjYsIDExMjksIDExMzIsIDExMzUsIDExMzgsIDExNDEsIDExNDQsIDExNDcsIDExNTAsIDExNTMsIAotICAgIDAsIDAsIDExNTYsIDExNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDExNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNjUsIDExNjgsIDExNzEsIDExNzQsIAotICAgIDExNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODAsIDExODMsIDExODYsIDExODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTIsIDAsIDExOTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDExNTYsIDExNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNjIsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNjUsIDExNjgsIDExNzEsIDExNzQsIDExNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExODAsIDExODMsIDExODYsIDExODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTIsIDAsIDExOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDExOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDEsIDAsIDAsIDAsIApAQCAtNDAzMSwxOTEgKzQ1MzksMTc1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTI2NywgMCwgMCwgMTI3MCwgMTI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI3NiwgMTI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4NSwgMTI4OCwgMTI5MSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2NywgMCwgMCwgMTI3MCwgMTI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3NiwgMTI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4NSwgMTI4OCwgMTI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMTMwMCwgMTMwMywgMCwgCi0gICAgMTMwNiwgMTMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMiwgMTMxNSwgMTMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMTMwMCwgMTMwMywgMCwgMTMwNiwgMTMwOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyMSwgMCwgMTMyNCwgMTMyNywgMTMzMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTMxMiwgMTMxNSwgMTMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzOSwgMTM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTMyMSwgMCwgMTMyNCwgMTMyNywgMTMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTMzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTMzOSwgMTM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM1MCwgMCwgMCwgMCwgMCwgMTM1MywgMCwgMCwgMCwgMCwgMTM1NiwgMCwgMCwgMCwgMCwgMTM1OSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2NSwgMCwgCisgICAgMTM2OCwgMTM3MSwgMTM3NCwgMTM3NywgMTM4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM4OSwgMCwgMCwgMCwgMCwgMTM5MiwgMCwgMCwgMCwgMCwgMTM5NSwgMCwgMCwgMCwgMCwgMTM5OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwNCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwNywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwOSwgMCwgMTQxMiwgMCwgMTQxNSwgMCwgMTQxOCwgMCwgMTQyMSwgMCwgMCwgCisgICAgMCwgMTQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNywgMCwgMTQzMCwgCisgICAgMCwgMCwgMTQzMywgMTQzNiwgMCwgMTQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0MiwgMTQ0NCwgMTQ0NiwgMCwgCisgICAgMTQ0OCwgMTQ1MCwgMTQ1MiwgMTQ1NCwgMTQ1NiwgMTQ1OCwgMTQ2MCwgMTQ2MiwgMTQ2NCwgMTQ2NiwgMTQ2OCwgMCwgCisgICAgMTQ3MCwgMTQ3MiwgMTQ3NCwgMTQ3NiwgMTQ3OCwgMTQ4MCwgMTQ4MiwgMTQ4NCwgMTQ4NiwgMTQ4OCwgMTQ5MCwgMTQ5MiwgCisgICAgMTQ5NCwgMTQ5NiwgMTQ5OCwgMTUwMCwgMTUwMiwgMTUwNCwgMCwgMTUwNiwgMTUwOCwgMTUxMCwgMTUxMiwgMTUxNCwgCisgICAgMTUxNiwgMTUxOCwgMTUyMCwgMTUyMiwgMTUyNCwgMTUyNiwgMTUyOCwgMTUzMCwgMTUzMiwgMTUzNCwgMTUzNiwgMTUzOCwgCisgICAgMTU0MCwgMTU0MiwgMTU0NCwgMTU0NiwgMTU0OCwgMTU1MCwgMTU1MiwgMTU1NCwgMTU1NiwgMTU1OCwgMTU2MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1MCwgMCwgMCwgMCwgMCwgMTM1MywgMCwgMCwgMCwgMCwgCi0gICAgMTM1NiwgMCwgMCwgMCwgMCwgMTM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2NSwgMCwgMTM2OCwgMTM3MSwgMTM3NCwgMTM3NywgMTM4MCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTM4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4OSwgMCwgMCwgMCwgMCwgMTM5MiwgMCwgMCwgMCwgMCwgMTM5NSwgMCwgCi0gICAgMCwgMCwgMCwgMTM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTU2NCwgMTU2NiwgMTU2OCwgMTU3MCwgMTU3MiwgMTU3NCwgMTU3NiwgMTU3OCwgMTU4MCwgMTU4MiwgMTU4NCwgMTU4NiwgCisgICAgMTU4OCwgMTU5MCwgMTU5MiwgMTU5NCwgMTU5NiwgMTU5OCwgMTYwMCwgMTYwMiwgMTYwNCwgMTYwNiwgMTYwOCwgMTYxMCwgCisgICAgMTYxMiwgMTYxNCwgMTYxNiwgMTYxOCwgMTYyMCwgMTYyMiwgMTYyNCwgMTYyNiwgMTYyOCwgMTYzMCwgMTYzMiwgMTYzNCwgCisgICAgMTYzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzOCwgMTY0MSwgMTY0NCwgCisgICAgMTY0NywgMTY1MCwgMTY1MywgMTY1NiwgMTY1OSwgMTY2MiwgMTY2NSwgMTY2OCwgMTY3MSwgMTY3NCwgMTY3NywgMTY4MCwgCisgICAgMTY4MywgMTY4NiwgMTY4OSwgMTY5MiwgMTY5NSwgMTY5OCwgMTcwMSwgMTcwNCwgMTcwNywgMTcxMCwgMTcxMywgMTcxNiwgCisgICAgMTcxOSwgMTcyMiwgMTcyNSwgMTcyOCwgMTczMSwgMTczNCwgMTczNywgMTc0MCwgMTc0MywgMTc0NiwgMTc0OSwgMTc1MiwgCisgICAgMTc1NSwgMTc1OCwgMTc2MSwgMTc2NCwgMTc2NywgMTc3MCwgMTc3MywgMTc3NiwgMTc3OSwgMTc4MiwgMTc4NSwgMTc4OCwgCisgICAgMTc5MSwgMTc5NCwgMTc5NywgMTgwMCwgMTgwMywgMTgwNiwgMTgwOSwgMTgxMiwgMTgxNSwgMTgxOCwgMTgyMSwgMTgyNCwgCisgICAgMTgyNywgMTgzMCwgMTgzMywgMTgzNiwgMTgzOSwgMTg0MiwgMTg0NSwgMTg0OCwgMTg1MSwgMTg1NCwgMTg1NywgMTg2MCwgCisgICAgMTg2MywgMTg2NiwgMTg2OSwgMTg3MiwgMTg3NSwgMTg3OCwgMTg4MSwgMTg4NCwgMTg4NywgMTg5MCwgMTg5MywgMTg5NiwgCisgICAgMTg5OSwgMTkwMiwgMTkwNSwgMTkwOCwgMTkxMSwgMTkxNCwgMTkxNywgMTkyMCwgMTkyMywgMTkyNiwgMTkyOSwgMTkzMiwgCisgICAgMTkzNSwgMTkzOCwgMTk0MSwgMTk0NCwgMTk0NywgMTk1MCwgMTk1MywgMTk1NiwgMTk1OSwgMTk2MiwgMTk2NSwgMTk2OCwgCisgICAgMTk3MSwgMTk3NCwgMTk3NywgMTk4MCwgMTk4MywgMTk4NiwgMTk4OSwgMTk5MiwgMTk5NSwgMTk5OCwgMjAwMSwgMjAwNCwgCisgICAgMjAwNywgMjAxMCwgMjAxMywgMjAxNiwgMjAxOSwgMjAyMiwgMjAyNSwgMjAyOCwgMjAzMSwgMjAzNCwgMjAzNywgMjA0MCwgCisgICAgMjA0MywgMjA0NiwgMjA0OSwgMjA1MiwgMjA1NSwgMjA1OCwgMjA2MSwgMjA2NCwgMjA2NywgMjA3MCwgMjA3MywgMjA3NiwgCisgICAgMjA3OSwgMjA4MiwgMjA4NSwgMjA4OCwgMjA5MSwgMjA5NCwgMjA5NywgMjEwMCwgMjEwMywgMCwgMCwgMCwgMCwgMjEwNiwgCisgICAgMjEwOSwgMjExMiwgMjExNSwgMjExOCwgMjEyMSwgMjEyNCwgMjEyNywgMjEzMCwgMjEzMywgMjEzNiwgMjEzOSwgMjE0MiwgCisgICAgMjE0NSwgMjE0OCwgMjE1MSwgMjE1NCwgMjE1NywgMjE2MCwgMjE2MywgMjE2NiwgMjE2OSwgMjE3MiwgMjE3NSwgMjE3OCwgCisgICAgMjE4MSwgMjE4NCwgMjE4NywgMjE5MCwgMjE5MywgMjE5NiwgMjE5OSwgMjIwMiwgMjIwNSwgMjIwOCwgMjIxMSwgMjIxNCwgCisgICAgMjIxNywgMjIyMCwgMjIyMywgMjIyNiwgMjIyOSwgMjIzMiwgMjIzNSwgMjIzOCwgMjI0MSwgMjI0NCwgMjI0NywgMjI1MCwgCisgICAgMjI1MywgMjI1NiwgMjI1OSwgMjI2MiwgMjI2NSwgMjI2OCwgMjI3MSwgMjI3NCwgMjI3NywgMjI4MCwgMjI4MywgMjI4NiwgCisgICAgMjI4OSwgMjI5MiwgMjI5NSwgMjI5OCwgMjMwMSwgMjMwNCwgMjMwNywgMjMxMCwgMjMxMywgMjMxNiwgMjMxOSwgMjMyMiwgCisgICAgMjMyNSwgMjMyOCwgMjMzMSwgMjMzNCwgMjMzNywgMjM0MCwgMjM0MywgMjM0NiwgMjM0OSwgMjM1MiwgMjM1NSwgMjM1OCwgCisgICAgMjM2MSwgMjM2NCwgMjM2NywgMjM3MCwgMjM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMjM3NiwgMjM3OSwgMjM4MiwgMjM4NSwgCisgICAgMjM4OCwgMjM5MSwgMjM5NCwgMjM5NywgMjQwMCwgMjQwMywgMjQwNiwgMjQwOSwgMjQxMiwgMjQxNSwgMjQxOCwgMjQyMSwgCisgICAgMjQyNCwgMjQyNywgMjQzMCwgMjQzMywgMjQzNiwgMjQzOSwgMCwgMCwgMjQ0MiwgMjQ0NSwgMjQ0OCwgMjQ1MSwgMjQ1NCwgCisgICAgMjQ1NywgMCwgMCwgMjQ2MCwgMjQ2MywgMjQ2NiwgMjQ2OSwgMjQ3MiwgMjQ3NSwgMjQ3OCwgMjQ4MSwgMjQ4NCwgMjQ4NywgCisgICAgMjQ5MCwgMjQ5MywgMjQ5NiwgMjQ5OSwgMjUwMiwgMjUwNSwgMjUwOCwgMjUxMSwgMjUxNCwgMjUxNywgMjUyMCwgMjUyMywgCisgICAgMjUyNiwgMjUyOSwgMjUzMiwgMjUzNSwgMjUzOCwgMjU0MSwgMjU0NCwgMjU0NywgMjU1MCwgMjU1MywgMjU1NiwgMjU1OSwgCisgICAgMjU2MiwgMjU2NSwgMjU2OCwgMjU3MSwgMCwgMCwgMjU3NCwgMjU3NywgMjU4MCwgMjU4MywgMjU4NiwgMjU4OSwgMCwgMCwgCisgICAgMjU5MiwgMjU5NSwgMjU5OCwgMjYwMSwgMjYwNCwgMjYwNywgMjYxMCwgMjYxMywgMCwgMjYxNiwgMCwgMjYxOSwgMCwgCisgICAgMjYyMiwgMCwgMjYyNSwgMjYyOCwgMjYzMSwgMjYzNCwgMjYzNywgMjY0MCwgMjY0MywgMjY0NiwgMjY0OSwgMjY1MiwgCisgICAgMjY1NSwgMjY1OCwgMjY2MSwgMjY2NCwgMjY2NywgMjY3MCwgMjY3MywgMjY3NiwgMjY3OSwgMjY4MSwgMjY4NCwgMjY4NiwgCisgICAgMjY4OSwgMjY5MSwgMjY5NCwgMjY5NiwgMjY5OSwgMjcwMSwgMjcwNCwgMjcwNiwgMjcwOSwgMCwgMCwgMjcxMSwgMjcxNCwgCisgICAgMjcxNywgMjcyMCwgMjcyMywgMjcyNiwgMjcyOSwgMjczMiwgMjczNSwgMjczOCwgMjc0MSwgMjc0NCwgMjc0NywgMjc1MCwgCisgICAgMjc1MywgMjc1NiwgMjc1OSwgMjc2MiwgMjc2NSwgMjc2OCwgMjc3MSwgMjc3NCwgMjc3NywgMjc4MCwgMjc4MywgMjc4NiwgCisgICAgMjc4OSwgMjc5MiwgMjc5NSwgMjc5OCwgMjgwMSwgMjgwNCwgMjgwNywgMjgxMCwgMjgxMywgMjgxNiwgMjgxOSwgMjgyMiwgCisgICAgMjgyNSwgMjgyOCwgMjgzMSwgMjgzNCwgMjgzNywgMjg0MCwgMjg0MywgMjg0NiwgMjg0OSwgMjg1MiwgMjg1NSwgMjg1OCwgCisgICAgMjg2MSwgMjg2NCwgMjg2NywgMCwgMjg3MCwgMjg3MywgMjg3NiwgMjg3OSwgMjg4MiwgMjg4NSwgMjg4NywgMjg5MCwgCisgICAgMjg5MywgMjg5NSwgMjg5OCwgMjkwMSwgMjkwNCwgMjkwNywgMjkxMCwgMCwgMjkxMywgMjkxNiwgMjkxOSwgMjkyMiwgCisgICAgMjkyNCwgMjkyNywgMjkyOSwgMjkzMiwgMjkzNSwgMjkzOCwgMjk0MSwgMjk0NCwgMjk0NywgMjk1MCwgMCwgMCwgMjk1MiwgCisgICAgMjk1NSwgMjk1OCwgMjk2MSwgMjk2NCwgMjk2NywgMCwgMjk2OSwgMjk3MiwgMjk3NSwgMjk3OCwgMjk4MSwgMjk4NCwgCisgICAgMjk4NywgMjk4OSwgMjk5MiwgMjk5NSwgMjk5OCwgMzAwMSwgMzAwNCwgMzAwNywgMzAxMCwgMzAxMiwgMzAxNSwgMzAxOCwgCisgICAgMzAyMCwgMCwgMCwgMzAyMiwgMzAyNSwgMzAyOCwgMCwgMzAzMSwgMzAzNCwgMzAzNywgMzA0MCwgMzA0MiwgMzA0NSwgCisgICAgMzA0NywgMzA1MCwgMzA1MiwgMCwgMzA1NSwgMzA1NywgMzA1OSwgMzA2MSwgMzA2MywgMzA2NSwgMzA2NywgMzA2OSwgCisgICAgMzA3MSwgMzA3MywgMzA3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzA3NywgMCwgMCwgMCwgMCwgMCwgMzA3OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA4MiwgMzA4NCwgMzA4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzA5MSwgMCwgMCwgMCwgMzA5MywgMzA5NiwgMCwgMzEwMCwgMzEwMywgMCwgMCwgMCwgMCwgMzEwNywgMCwgMzExMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzExMywgMzExNiwgMzExOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzEyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzEyOSwgMzEzMSwgMCwgMCwgMzEzMywgMzEzNSwgMzEzNywgMzEzOSwgMzE0MSwgMzE0MywgCisgICAgMzE0NSwgMzE0NywgMzE0OSwgMzE1MSwgMzE1MywgMzE1NSwgMzE1NywgMzE1OSwgMzE2MSwgMzE2MywgMzE2NSwgMzE2NywgCisgICAgMzE2OSwgMzE3MSwgMzE3MywgMzE3NSwgMzE3NywgMzE3OSwgMzE4MSwgMzE4MywgMzE4NSwgMCwgMzE4NywgMzE4OSwgCisgICAgMzE5MSwgMzE5MywgMzE5NSwgMzE5NywgMzE5OSwgMzIwMSwgMzIwMywgMzIwNSwgMzIwNywgMzIwOSwgMzIxMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzIxNiwgMzIyMCwgMzIyNCwgMzIyNiwgMCwgMzIyOSwgMzIzMywgMzIzNywgMCwgMzIzOSwgMzI0MiwgMzI0NCwgCisgICAgMzI0NiwgMzI0OCwgMzI1MCwgMzI1MiwgMzI1NCwgMzI1NiwgMzI1OCwgMzI2MCwgMCwgMzI2MiwgMzI2NCwgMCwgMCwgCisgICAgMzI2NywgMzI2OSwgMzI3MSwgMzI3MywgMzI3NSwgMCwgMCwgMzI3NywgMzI4MCwgMzI4NCwgMCwgMzI4NywgMCwgMzI4OSwgCisgICAgMCwgMzI5MSwgMCwgMzI5MywgMzI5NSwgMzI5NywgMzI5OSwgMCwgMzMwMSwgMzMwMywgMzMwNSwgMCwgMzMwNywgMzMwOSwgCisgICAgMzMxMSwgMzMxMywgMzMxNSwgMzMxNywgMzMxOSwgMCwgMzMyMSwgMzMyNSwgMzMyNywgMzMyOSwgMzMzMSwgMzMzMywgMCwgCisgICAgMCwgMCwgMCwgMzMzNSwgMzMzNywgMzMzOSwgMzM0MSwgMzM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMzM0NSwgMzM0OSwgCisgICAgMzM1MywgMzM1OCwgMzM2MiwgMzM2NiwgMzM3MCwgMzM3NCwgMzM3OCwgMzM4MiwgMzM4NiwgMzM5MCwgMzM5NCwgMzM5OCwgCisgICAgMzQwMiwgMzQwNiwgMzQwOSwgMzQxMSwgMzQxNCwgMzQxOCwgMzQyMSwgMzQyMywgMzQyNiwgMzQzMCwgMzQzNSwgMzQzOCwgCisgICAgMzQ0MCwgMzQ0MywgMzQ0NywgMzQ0OSwgMzQ1MSwgMzQ1MywgMzQ1NSwgMzQ1NywgMzQ2MCwgMzQ2NCwgMzQ2NywgMzQ2OSwgCisgICAgMzQ3MiwgMzQ3NiwgMzQ4MSwgMzQ4NCwgMzQ4NiwgMzQ4OSwgMzQ5MywgMzQ5NSwgMzQ5NywgMzQ5OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzUwNSwgMzUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUxMSwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUxNCwgMzUxNywgMzUyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyMywgMCwgMCwgMCwgMCwgMzUyNiwgCisgICAgMCwgMCwgMzUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzUzMiwgMCwgMzUzNSwgMCwgMCwgMCwgMCwgMCwgMzUzOCwgMzU0MSwgMCwgMzU0NSwgMzU0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU1MiwgMCwgMCwgMzU1NSwgMCwgMCwgMzU1OCwgCisgICAgMCwgMzU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzU2NCwgMCwgMzU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU3MCwgMzU3MywgMzU3NiwgMzU3OSwgCisgICAgMzU4MiwgMCwgMCwgMzU4NSwgMzU4OCwgMCwgMCwgMzU5MSwgMzU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5NywgMzYwMCwgCisgICAgMCwgMCwgMzYwMywgMzYwNiwgMCwgMCwgMzYwOSwgMzYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxNSwgCisgICAgMzYxOCwgMzYyMSwgMzYyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzYyNywgMzYzMCwgMzYzMywgMzYzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzOSwgMzY0MiwgCisgICAgMzY0NSwgMzY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQwOSwgMCwgMTQxMiwgMCwgCi0gICAgMTQxNSwgMCwgMTQxOCwgMCwgMTQyMSwgMCwgMCwgMCwgMTQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTQyNywgMCwgMTQzMCwgMCwgMCwgMTQzMywgMTQzNiwgMCwgMTQzOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0MiwgMTQ0NCwgMTQ0NiwgMCwgMTQ0OCwgMTQ1MCwgMTQ1MiwgCi0gICAgMTQ1NCwgMTQ1NiwgMTQ1OCwgMTQ2MCwgMTQ2MiwgMTQ2NCwgMTQ2NiwgMTQ2OCwgMCwgMTQ3MCwgMTQ3MiwgMTQ3NCwgCi0gICAgMTQ3NiwgMTQ3OCwgMTQ4MCwgMTQ4MiwgMTQ4NCwgMTQ4NiwgMTQ4OCwgMTQ5MCwgMTQ5MiwgMTQ5NCwgMTQ5NiwgMTQ5OCwgCi0gICAgMTUwMCwgMTUwMiwgMTUwNCwgMCwgMTUwNiwgMTUwOCwgMTUxMCwgMTUxMiwgMTUxNCwgMTUxNiwgMTUxOCwgMTUyMCwgCi0gICAgMTUyMiwgMTUyNCwgMTUyNiwgMTUyOCwgMTUzMCwgMTUzMiwgMTUzNCwgMTUzNiwgMTUzOCwgMTU0MCwgMTU0MiwgMTU0NCwgCi0gICAgMTU0NiwgMTU0OCwgMTU1MCwgMTU1MiwgMTU1NCwgMTU1NiwgMTU1OCwgMTU2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2NCwgMTU2NiwgMTU2OCwgCi0gICAgMTU3MCwgMTU3MiwgMTU3NCwgMTU3NiwgMTU3OCwgMTU4MCwgMTU4MiwgMTU4NCwgMTU4NiwgMTU4OCwgMTU5MCwgMTU5MiwgCi0gICAgMTU5NCwgMTU5NiwgMTU5OCwgMTYwMCwgMTYwMiwgMTYwNCwgMTYwNiwgMTYwOCwgMTYxMCwgMTYxMiwgMTYxNCwgMTYxNiwgCi0gICAgMTYxOCwgMTYyMCwgMTYyMiwgMTYyNCwgMTYyNiwgMTYyOCwgMTYzMCwgMTYzMiwgMTYzNCwgMTYzNiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzOCwgMTY0MSwgMTY0NCwgMTY0NywgMTY1MCwgMTY1MywgCi0gICAgMTY1NiwgMTY1OSwgMTY2MiwgMTY2NSwgMTY2OCwgMTY3MSwgMTY3NCwgMTY3NywgMTY4MCwgMTY4MywgMTY4NiwgMTY4OSwgCi0gICAgMTY5MiwgMTY5NSwgMTY5OCwgMTcwMSwgMTcwNCwgMTcwNywgMTcxMCwgMTcxMywgMTcxNiwgMTcxOSwgMTcyMiwgMTcyNSwgCi0gICAgMTcyOCwgMTczMSwgMTczNCwgMTczNywgMTc0MCwgMTc0MywgMTc0NiwgMTc0OSwgMTc1MiwgMTc1NSwgMTc1OCwgMTc2MSwgCi0gICAgMTc2NCwgMTc2NywgMTc3MCwgMTc3MywgMTc3NiwgMTc3OSwgMTc4MiwgMTc4NSwgMTc4OCwgMTc5MSwgMTc5NCwgMTc5NywgCi0gICAgMTgwMCwgMTgwMywgMTgwNiwgMTgwOSwgMTgxMiwgMTgxNSwgMTgxOCwgMTgyMSwgMTgyNCwgMTgyNywgMTgzMCwgMTgzMywgCi0gICAgMTgzNiwgMTgzOSwgMTg0MiwgMTg0NSwgMTg0OCwgMTg1MSwgMTg1NCwgMTg1NywgMTg2MCwgMTg2MywgMTg2NiwgMTg2OSwgCi0gICAgMTg3MiwgMTg3NSwgMTg3OCwgMTg4MSwgMTg4NCwgMTg4NywgMTg5MCwgMTg5MywgMTg5NiwgMTg5OSwgMTkwMiwgMTkwNSwgCi0gICAgMTkwOCwgMTkxMSwgMTkxNCwgMTkxNywgMTkyMCwgMTkyMywgMTkyNiwgMTkyOSwgMTkzMiwgMTkzNSwgMTkzOCwgMTk0MSwgCi0gICAgMTk0NCwgMTk0NywgMTk1MCwgMTk1MywgMTk1NiwgMTk1OSwgMTk2MiwgMTk2NSwgMTk2OCwgMTk3MSwgMTk3NCwgMTk3NywgCi0gICAgMTk4MCwgMTk4MywgMTk4NiwgMTk4OSwgMTk5MiwgMTk5NSwgMTk5OCwgMjAwMSwgMjAwNCwgMjAwNywgMjAxMCwgMjAxMywgCi0gICAgMjAxNiwgMjAxOSwgMjAyMiwgMjAyNSwgMjAyOCwgMjAzMSwgMjAzNCwgMjAzNywgMjA0MCwgMjA0MywgMjA0NiwgMjA0OSwgCi0gICAgMjA1MiwgMjA1NSwgMjA1OCwgMjA2MSwgMjA2NCwgMjA2NywgMjA3MCwgMjA3MywgMjA3NiwgMjA3OSwgMjA4MiwgMjA4NSwgCi0gICAgMjA4OCwgMjA5MSwgMjA5NCwgMjA5NywgMjEwMCwgMjEwMywgMCwgMCwgMCwgMCwgMjEwNiwgMjEwOSwgMjExMiwgMjExNSwgCi0gICAgMjExOCwgMjEyMSwgMjEyNCwgMjEyNywgMjEzMCwgMjEzMywgMjEzNiwgMjEzOSwgMjE0MiwgMjE0NSwgMjE0OCwgMjE1MSwgCi0gICAgMjE1NCwgMjE1NywgMjE2MCwgMjE2MywgMjE2NiwgMjE2OSwgMjE3MiwgMjE3NSwgMjE3OCwgMjE4MSwgMjE4NCwgMjE4NywgCi0gICAgMjE5MCwgMjE5MywgMjE5NiwgMjE5OSwgMjIwMiwgMjIwNSwgMjIwOCwgMjIxMSwgMjIxNCwgMjIxNywgMjIyMCwgMjIyMywgCi0gICAgMjIyNiwgMjIyOSwgMjIzMiwgMjIzNSwgMjIzOCwgMjI0MSwgMjI0NCwgMjI0NywgMjI1MCwgMjI1MywgMjI1NiwgMjI1OSwgCi0gICAgMjI2MiwgMjI2NSwgMjI2OCwgMjI3MSwgMjI3NCwgMjI3NywgMjI4MCwgMjI4MywgMjI4NiwgMjI4OSwgMjI5MiwgMjI5NSwgCi0gICAgMjI5OCwgMjMwMSwgMjMwNCwgMjMwNywgMjMxMCwgMjMxMywgMjMxNiwgMjMxOSwgMjMyMiwgMjMyNSwgMjMyOCwgMjMzMSwgCi0gICAgMjMzNCwgMjMzNywgMjM0MCwgMjM0MywgMjM0NiwgMjM0OSwgMjM1MiwgMjM1NSwgMjM1OCwgMjM2MSwgMjM2NCwgMjM2NywgCi0gICAgMjM3MCwgMjM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMjM3NiwgMjM3OSwgMjM4MiwgMjM4NSwgMjM4OCwgMjM5MSwgMjM5NCwgCi0gICAgMjM5NywgMjQwMCwgMjQwMywgMjQwNiwgMjQwOSwgMjQxMiwgMjQxNSwgMjQxOCwgMjQyMSwgMjQyNCwgMjQyNywgMjQzMCwgCi0gICAgMjQzMywgMjQzNiwgMjQzOSwgMCwgMCwgMjQ0MiwgMjQ0NSwgMjQ0OCwgMjQ1MSwgMjQ1NCwgMjQ1NywgMCwgMCwgMjQ2MCwgCi0gICAgMjQ2MywgMjQ2NiwgMjQ2OSwgMjQ3MiwgMjQ3NSwgMjQ3OCwgMjQ4MSwgMjQ4NCwgMjQ4NywgMjQ5MCwgMjQ5MywgMjQ5NiwgCi0gICAgMjQ5OSwgMjUwMiwgMjUwNSwgMjUwOCwgMjUxMSwgMjUxNCwgMjUxNywgMjUyMCwgMjUyMywgMjUyNiwgMjUyOSwgMjUzMiwgCi0gICAgMjUzNSwgMjUzOCwgMjU0MSwgMjU0NCwgMjU0NywgMjU1MCwgMjU1MywgMjU1NiwgMjU1OSwgMjU2MiwgMjU2NSwgMjU2OCwgCi0gICAgMjU3MSwgMCwgMCwgMjU3NCwgMjU3NywgMjU4MCwgMjU4MywgMjU4NiwgMjU4OSwgMCwgMCwgMjU5MiwgMjU5NSwgMjU5OCwgCi0gICAgMjYwMSwgMjYwNCwgMjYwNywgMjYxMCwgMjYxMywgMCwgMjYxNiwgMCwgMjYxOSwgMCwgMjYyMiwgMCwgMjYyNSwgMjYyOCwgCi0gICAgMjYzMSwgMjYzNCwgMjYzNywgMjY0MCwgMjY0MywgMjY0NiwgMjY0OSwgMjY1MiwgMjY1NSwgMjY1OCwgMjY2MSwgMjY2NCwgCi0gICAgMjY2NywgMjY3MCwgMjY3MywgMjY3NiwgMjY3OSwgMjY4MSwgMjY4NCwgMjY4NiwgMjY4OSwgMjY5MSwgMjY5NCwgMjY5NiwgCi0gICAgMjY5OSwgMjcwMSwgMjcwNCwgMjcwNiwgMjcwOSwgMCwgMCwgMjcxMSwgMjcxNCwgMjcxNywgMjcyMCwgMjcyMywgMjcyNiwgCi0gICAgMjcyOSwgMjczMiwgMjczNSwgMjczOCwgMjc0MSwgMjc0NCwgMjc0NywgMjc1MCwgMjc1MywgMjc1NiwgMjc1OSwgMjc2MiwgCi0gICAgMjc2NSwgMjc2OCwgMjc3MSwgMjc3NCwgMjc3NywgMjc4MCwgMjc4MywgMjc4NiwgMjc4OSwgMjc5MiwgMjc5NSwgMjc5OCwgCi0gICAgMjgwMSwgMjgwNCwgMjgwNywgMjgxMCwgMjgxMywgMjgxNiwgMjgxOSwgMjgyMiwgMjgyNSwgMjgyOCwgMjgzMSwgMjgzNCwgCi0gICAgMjgzNywgMjg0MCwgMjg0MywgMjg0NiwgMjg0OSwgMjg1MiwgMjg1NSwgMjg1OCwgMjg2MSwgMjg2NCwgMjg2NywgMCwgCi0gICAgMjg3MCwgMjg3MywgMjg3NiwgMjg3OSwgMjg4MiwgMjg4NSwgMjg4NywgMjg5MCwgMjg5MywgMjg5NSwgMjg5OCwgMjkwMSwgCi0gICAgMjkwNCwgMjkwNywgMjkxMCwgMCwgMjkxMywgMjkxNiwgMjkxOSwgMjkyMiwgMjkyNCwgMjkyNywgMjkyOSwgMjkzMiwgCi0gICAgMjkzNSwgMjkzOCwgMjk0MSwgMjk0NCwgMjk0NywgMjk1MCwgMCwgMCwgMjk1MiwgMjk1NSwgMjk1OCwgMjk2MSwgMjk2NCwgCi0gICAgMjk2NywgMCwgMjk2OSwgMjk3MiwgMjk3NSwgMjk3OCwgMjk4MSwgMjk4NCwgMjk4NywgMjk4OSwgMjk5MiwgMjk5NSwgCi0gICAgMjk5OCwgMzAwMSwgMzAwNCwgMzAwNywgMzAxMCwgMzAxMiwgMzAxNSwgMzAxOCwgMzAyMCwgMCwgMCwgMzAyMiwgMzAyNSwgCi0gICAgMzAyOCwgMCwgMzAzMSwgMzAzNCwgMzAzNywgMzA0MCwgMzA0MiwgMzA0NSwgMzA0NywgMzA1MCwgMzA1MiwgMCwgMzA1NSwgCi0gICAgMzA1NywgMzA1OSwgMzA2MSwgMzA2MywgMzA2NSwgMzA2NywgMzA2OSwgMzA3MSwgMzA3MywgMzA3NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzA3NywgMCwgMCwgMCwgMCwgMCwgMzA3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzA4MiwgMzA4NCwgMzA4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA5MSwgMCwgMCwgMCwgMzA5MywgMzA5NiwgMCwgCi0gICAgMzEwMCwgMzEwMywgMCwgMCwgMCwgMCwgMzEwNywgMCwgMzExMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzExMywgCi0gICAgMzExNiwgMzExOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyOSwgMzEzMSwgCi0gICAgMCwgMCwgMzEzMywgMzEzNSwgMzEzNywgMzEzOSwgMzE0MSwgMzE0MywgMzE0NSwgMzE0NywgMzE0OSwgMzE1MSwgMzE1MywgCi0gICAgMzE1NSwgMzE1NywgMzE1OSwgMzE2MSwgMzE2MywgMzE2NSwgMzE2NywgMzE2OSwgMzE3MSwgMzE3MywgMzE3NSwgMzE3NywgCi0gICAgMzE3OSwgMzE4MSwgMzE4MywgMzE4NSwgMCwgMzE4NywgMzE4OSwgMzE5MSwgMzE5MywgMzE5NSwgMzE5NywgMzE5OSwgCi0gICAgMzIwMSwgMzIwMywgMzIwNSwgMzIwNywgMzIwOSwgMzIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzIxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxNiwgMzIyMCwgMzIyNCwgCi0gICAgMzIyNiwgMCwgMzIyOSwgMzIzMywgMzIzNywgMCwgMzIzOSwgMzI0MiwgMzI0NCwgMzI0NiwgMzI0OCwgMzI1MCwgMzI1MiwgCi0gICAgMzI1NCwgMzI1NiwgMzI1OCwgMzI2MCwgMCwgMzI2MiwgMzI2NCwgMCwgMCwgMzI2NywgMzI2OSwgMzI3MSwgMzI3MywgCi0gICAgMzI3NSwgMCwgMCwgMzI3NywgMzI4MCwgMzI4NCwgMCwgMzI4NywgMCwgMzI4OSwgMCwgMzI5MSwgMCwgMzI5MywgMzI5NSwgCi0gICAgMzI5NywgMzI5OSwgMCwgMzMwMSwgMzMwMywgMzMwNSwgMCwgMzMwNywgMzMwOSwgMzMxMSwgMzMxMywgMzMxNSwgMzMxNywgCi0gICAgMzMxOSwgMCwgMzMyMSwgMzMyNSwgMzMyNywgMzMyOSwgMzMzMSwgMzMzMywgMCwgMCwgMCwgMCwgMzMzNSwgMzMzNywgCi0gICAgMzMzOSwgMzM0MSwgMzM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMzM0NSwgMzM0OSwgMzM1MywgMzM1OCwgMzM2MiwgMzM2NiwgCi0gICAgMzM3MCwgMzM3NCwgMzM3OCwgMzM4MiwgMzM4NiwgMzM5MCwgMzM5NCwgMzM5OCwgMzQwMiwgMzQwNiwgMzQwOSwgMzQxMSwgCi0gICAgMzQxNCwgMzQxOCwgMzQyMSwgMzQyMywgMzQyNiwgMzQzMCwgMzQzNSwgMzQzOCwgMzQ0MCwgMzQ0MywgMzQ0NywgMzQ0OSwgCi0gICAgMzQ1MSwgMzQ1MywgMzQ1NSwgMzQ1NywgMzQ2MCwgMzQ2NCwgMzQ2NywgMzQ2OSwgMzQ3MiwgMzQ3NiwgMzQ4MSwgMzQ4NCwgCi0gICAgMzQ4NiwgMzQ4OSwgMzQ5MywgMzQ5NSwgMzQ5NywgMzQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUwMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUwNSwgMzUwOCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUxNCwgCi0gICAgMzUxNywgMzUyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyMywgMCwgMCwgMCwgMCwgMzUyNiwgMCwgMCwgMzUyOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUzMiwgMCwgMzUzNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzUzOCwgMzU0MSwgMCwgMzU0NSwgMzU0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzU1MiwgMCwgMCwgMzU1NSwgMCwgMCwgMzU1OCwgMCwgMzU2MSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU2NCwgMCwgMzU2NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU3MCwgMzU3MywgMzU3NiwgMzU3OSwgMzU4MiwgMCwgMCwgMzU4NSwgMzU4OCwgCi0gICAgMCwgMCwgMzU5MSwgMzU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5NywgMzYwMCwgMCwgMCwgMzYwMywgMzYwNiwgMCwgMCwgCi0gICAgMzYwOSwgMzYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxNSwgMzYxOCwgMzYyMSwgMzYyNCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYyNywgCi0gICAgMzYzMCwgMzYzMywgMzYzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzOSwgMzY0MiwgMzY0NSwgMzY0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY1MSwgMzY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY1MSwgMzY1MywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC00MjU2LDIzICs0NzQ4LDcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0MTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAxLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAzLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTQzNzAsMTcyICs0ODQ2LDcgQEAKICAgICA2NTMwLCA2NTMzLCA2NTM2LCA2NTM5LCA2NTQyLCA2NTQ1LCA2NTQ4LCA2NTUxLCA2NTU0LCA2NTU4LCA2NTYyLCA2NTY2LCAKICAgICA2NTcwLCA2NTc0LCA2NTc4LCA2NTgyLCA2NTg2LCA2NTkwLCA2NTk0LCA2NTk4LCA2NjAyLCA2NjA2LCA2NjEwLCA2NjE0LCAKICAgICA2NjE4LCA2NjIyLCA2NjI2LCA2NjMwLCA2NjM0LCA2NjM4LCA2NjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA2NjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjQ4LCA2NjUwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjUyLCA2NjU0LCA2NjU2LCA2NjU4LCA2NjYwLCA2NjYyLCA2NjY0LCAKLSAgICA2NjY2LCA2NjY4LCA2NjcwLCA2NjcyLCA2Njc0LCA2Njc2LCA2Njc4LCA2NjgwLCA2NjgyLCA2Njg0LCA2Njg2LCA2Njg4LCAKLSAgICA2NjkwLCA2NjkyLCA2Njk0LCA2Njk2LCA2Njk4LCA2NzAwLCA2NzAyLCA2NzA0LCA2NzA2LCA2NzA4LCA2NzEwLCA2NzEyLCAKLSAgICA2NzE0LCA2NzE2LCA2NzE4LCA2NzIwLCA2NzIyLCA2NzI0LCA2NzI2LCA2NzI4LCA2NzMwLCA2NzMyLCA2NzM0LCA2NzM2LCAKLSAgICA2NzM4LCA2NzQwLCA2NzQyLCA2NzQ0LCA2NzQ2LCA2NzQ4LCA2NzUwLCA2NzUyLCA2NzU0LCA2NzU2LCA2NzU4LCA2NzYwLCAKLSAgICA2NzYyLCA2NzY0LCA2NzY2LCA2NzY4LCA2NzcwLCA2NzcyLCA2Nzc0LCA2Nzc2LCA2Nzc4LCA2NzgwLCA2NzgyLCA2Nzg0LCAKLSAgICA2Nzg2LCA2Nzg4LCA2NzkwLCA2NzkyLCA2Nzk0LCA2Nzk2LCA2Nzk4LCA2ODAwLCA2ODAyLCA2ODA0LCA2ODA2LCA2ODA4LCAKLSAgICA2ODEwLCA2ODEyLCA2ODE0LCA2ODE2LCA2ODE4LCA2ODIwLCA2ODIyLCA2ODI0LCA2ODI2LCA2ODI4LCA2ODMwLCA2ODMyLCAKLSAgICA2ODM0LCA2ODM2LCA2ODM4LCA2ODQwLCA2ODQyLCA2ODQ0LCA2ODQ2LCA2ODQ4LCA2ODUwLCA2ODUyLCA2ODU0LCA2ODU2LCAKLSAgICA2ODU4LCA2ODYwLCA2ODYyLCA2ODY0LCA2ODY2LCA2ODY4LCA2ODcwLCA2ODcyLCA2ODc0LCA2ODc2LCA2ODc4LCA2ODgwLCAKLSAgICA2ODgyLCA2ODg0LCA2ODg2LCA2ODg4LCA2ODkwLCA2ODkyLCA2ODk0LCA2ODk2LCA2ODk4LCA2OTAwLCA2OTAyLCA2OTA0LCAKLSAgICA2OTA2LCA2OTA4LCA2OTEwLCA2OTEyLCA2OTE0LCA2OTE2LCA2OTE4LCA2OTIwLCA2OTIyLCA2OTI0LCA2OTI2LCA2OTI4LCAKLSAgICA2OTMwLCA2OTMyLCA2OTM0LCA2OTM2LCA2OTM4LCA2OTQwLCA2OTQyLCA2OTQ0LCA2OTQ2LCA2OTQ4LCA2OTUwLCA2OTUyLCAKLSAgICA2OTU0LCA2OTU2LCA2OTU4LCA2OTYwLCA2OTYyLCA2OTY0LCA2OTY2LCA2OTY4LCA2OTcwLCA2OTcyLCA2OTc0LCA2OTc2LCAKLSAgICA2OTc4LCA2OTgwLCA2OTgyLCA2OTg0LCA2OTg2LCA2OTg4LCA2OTkwLCA2OTkyLCA2OTk0LCA2OTk2LCA2OTk4LCA3MDAwLCAKLSAgICA3MDAyLCA3MDA0LCA3MDA2LCA3MDA4LCA3MDEwLCA3MDEyLCA3MDE0LCA3MDE2LCA3MDE4LCA3MDIwLCA3MDIyLCA3MDI0LCAKLSAgICA3MDI2LCA3MDI4LCA3MDMwLCA3MDMyLCA3MDM0LCA3MDM2LCA3MDM4LCA3MDQwLCA3MDQyLCA3MDQ0LCA3MDQ2LCA3MDQ4LCAKLSAgICA3MDUwLCA3MDUyLCA3MDU0LCA3MDU2LCA3MDU4LCA3MDYwLCA3MDYyLCA3MDY0LCA3MDY2LCA3MDY4LCA3MDcwLCA3MDcyLCAKLSAgICA3MDc0LCA3MDc2LCA3MDc4LCA3MDgwLCA3MDgyLCA3MDg0LCA3MDg2LCA3MDg4LCA3MDkwLCA3MDkyLCA3MDk0LCA3MDk2LCAKLSAgICA3MDk4LCA3MTAwLCA3MTAyLCA3MTA0LCA3MTA2LCA3MTA4LCA3MTEwLCA3MTEyLCA3MTE0LCA3MTE2LCA3MTE4LCA3MTIwLCAKLSAgICA3MTIyLCA3MTI0LCA3MTI2LCA3MTI4LCA3MTMwLCA3MTMyLCA3MTM0LCA3MTM2LCA3MTM4LCA3MTQwLCA3MTQyLCA3MTQ0LCAKLSAgICA3MTQ2LCA3MTQ4LCA3MTUwLCA3MTUyLCA3MTU0LCA3MTU2LCA3MTU4LCA3MTYwLCA3MTYyLCA3MTY0LCA3MTY2LCA3MTY4LCAKLSAgICA3MTcwLCA3MTcyLCA3MTc0LCA3MTc2LCA3MTc4LCA3MTgwLCA3MTgyLCA3MTg0LCA3MTg2LCA3MTg4LCA3MTkwLCAwLCAwLCAKLSAgICA3MTkyLCAwLCA3MTk0LCAwLCAwLCA3MTk2LCA3MTk4LCA3MjAwLCA3MjAyLCA3MjA0LCA3MjA2LCA3MjA4LCA3MjEwLCAKLSAgICA3MjEyLCA3MjE0LCAwLCA3MjE2LCAwLCA3MjE4LCAwLCAwLCA3MjIwLCA3MjIyLCAwLCAwLCAwLCA3MjI0LCA3MjI2LCAKLSAgICA3MjI4LCA3MjMwLCA3MjMyLCA3MjM0LCA3MjM2LCA3MjM4LCA3MjQwLCA3MjQyLCA3MjQ0LCA3MjQ2LCA3MjQ4LCA3MjUwLCAKLSAgICA3MjUyLCA3MjU0LCA3MjU2LCA3MjU4LCA3MjYwLCA3MjYyLCA3MjY0LCA3MjY2LCA3MjY4LCA3MjcwLCA3MjcyLCA3Mjc0LCAKLSAgICA3Mjc2LCA3Mjc4LCA3MjgwLCA3MjgyLCA3Mjg0LCA3Mjg2LCA3Mjg4LCA3MjkwLCA3MjkyLCA3Mjk0LCA3Mjk2LCA3Mjk4LCAKLSAgICA3MzAwLCA3MzAyLCA3MzA0LCA3MzA2LCA3MzA4LCA3MzEwLCA3MzEyLCA3MzE0LCA3MzE2LCA3MzE4LCA3MzIwLCA3MzIyLCAKLSAgICA3MzI0LCA3MzI2LCA3MzI4LCA3MzMwLCA3MzMyLCA3MzM0LCA3MzM2LCA3MzM4LCA3MzQwLCA3MzQyLCA3MzQ0LCA3MzQ2LCAKLSAgICA3MzQ4LCA3MzUwLCA3MzUyLCA3MzU0LCA3MzU2LCA3MzU4LCAwLCAwLCA3MzYwLCA3MzYyLCA3MzY0LCA3MzY2LCA3MzY4LCAKLSAgICA3MzcwLCA3MzcyLCA3Mzc0LCA3Mzc2LCA3Mzc4LCA3MzgwLCA3MzgyLCA3Mzg0LCA3Mzg2LCA3Mzg4LCA3MzkwLCA3MzkyLCAKLSAgICA3Mzk0LCA3Mzk2LCA3Mzk4LCA3NDAwLCA3NDAyLCA3NDA0LCA3NDA2LCA3NDA4LCA3NDEwLCA3NDEyLCA3NDE0LCA3NDE2LCAKLSAgICA3NDE4LCA3NDIwLCA3NDIyLCA3NDI0LCA3NDI2LCA3NDI4LCA3NDMwLCA3NDMyLCA3NDM0LCA3NDM2LCA3NDM4LCA3NDQwLCAKLSAgICA3NDQyLCA3NDQ0LCA3NDQ2LCA3NDQ4LCA3NDUwLCA3NDUyLCA3NDU0LCA3NDU2LCA3NDU4LCA3NDYwLCA3NDYyLCA3NDY0LCAKLSAgICA3NDY2LCA3NDY4LCA3NDcwLCA3NDcyLCA3NDc0LCA3NDc2LCA3NDc4LCA3NDgwLCA3NDgyLCA3NDg0LCA3NDg2LCA3NDg4LCAKLSAgICA3NDkwLCA3NDkyLCA3NDk0LCA3NDk2LCA3NDk4LCA3NTAwLCA3NTAyLCA3NTA0LCA3NTA2LCA3NTA4LCA3NTEwLCA3NTEyLCAKLSAgICA3NTE0LCA3NTE2LCA3NTE4LCA3NTIwLCA3NTIyLCA3NTI0LCA3NTI2LCA3NTI4LCA3NTMwLCA3NTMyLCA3NTM0LCA3NTM2LCAKLSAgICA3NTM4LCA3NTQwLCA3NTQyLCA3NTQ0LCA3NTQ2LCA3NTQ4LCA3NTUwLCA3NTUyLCA3NTU0LCA3NTU2LCA3NTU4LCA3NTYwLCAKLSAgICA3NTYyLCA3NTY0LCA3NTY2LCA3NTY4LCA3NTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NTcyLCA3NTc1LCA3NTc4LCA3NTgxLCA3NTg1LCA3NTg5LCA3NTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3NTk1LCA3NTk4LCA3NjAxLCA3NjA0LCA3NjA3LCAwLCAwLCAwLCAwLCAwLCA3NjEwLCAwLCA3NjEzLCA3NjE2LCAKLSAgICA3NjE4LCA3NjIwLCA3NjIyLCA3NjI0LCA3NjI2LCA3NjI4LCA3NjMwLCA3NjMyLCA3NjM0LCA3NjM2LCA3NjM5LCA3NjQyLCAKLSAgICA3NjQ1LCA3NjQ4LCA3NjUxLCA3NjU0LCA3NjU3LCA3NjYwLCA3NjYzLCA3NjY2LCA3NjY5LCA3NjcyLCAwLCA3Njc1LCAKLSAgICA3Njc4LCA3NjgxLCA3Njg0LCA3Njg3LCAwLCA3NjkwLCAwLCA3NjkzLCA3Njk2LCAwLCA3Njk5LCA3NzAyLCAwLCA3NzA1LCAKLSAgICA3NzA4LCA3NzExLCA3NzE0LCA3NzE3LCA3NzIwLCA3NzIzLCA3NzI2LCA3NzI5LCA3NzMyLCA3NzM1LCA3NzM3LCA3NzM5LCAKLSAgICA3NzQxLCA3NzQzLCA3NzQ1LCA3NzQ3LCA3NzQ5LCA3NzUxLCA3NzUzLCA3NzU1LCA3NzU3LCA3NzU5LCA3NzYxLCA3NzYzLCAKLSAgICA3NzY1LCA3NzY3LCA3NzY5LCA3NzcxLCA3NzczLCA3Nzc1LCA3Nzc3LCA3Nzc5LCA3NzgxLCA3NzgzLCA3Nzg1LCA3Nzg3LCAKLSAgICA3Nzg5LCA3NzkxLCA3NzkzLCA3Nzk1LCA3Nzk3LCA3Nzk5LCA3ODAxLCA3ODAzLCA3ODA1LCA3ODA3LCA3ODA5LCA3ODExLCAKLSAgICA3ODEzLCA3ODE1LCA3ODE3LCA3ODE5LCA3ODIxLCA3ODIzLCA3ODI1LCA3ODI3LCA3ODI5LCA3ODMxLCA3ODMzLCA3ODM1LCAKLSAgICA3ODM3LCA3ODM5LCA3ODQxLCA3ODQzLCA3ODQ1LCA3ODQ3LCA3ODQ5LCA3ODUxLCA3ODUzLCA3ODU1LCA3ODU3LCA3ODU5LCAKLSAgICA3ODYxLCA3ODYzLCA3ODY1LCA3ODY3LCA3ODY5LCA3ODcxLCA3ODczLCA3ODc1LCA3ODc3LCA3ODc5LCA3ODgxLCA3ODgzLCAKLSAgICA3ODg1LCA3ODg3LCA3ODg5LCA3ODkxLCA3ODkzLCA3ODk1LCA3ODk3LCA3ODk5LCA3OTAxLCA3OTAzLCA3OTA1LCA3OTA3LCAKLSAgICA3OTA5LCA3OTExLCA3OTEzLCA3OTE1LCA3OTE3LCA3OTE5LCA3OTIxLCA3OTIzLCA3OTI1LCA3OTI3LCA3OTI5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTMxLCA3OTMzLCA3OTM1LCA3OTM3LCA3OTM5LCA3OTQxLCA3OTQzLCA3OTQ1LCAKLSAgICA3OTQ3LCA3OTQ5LCA3OTUxLCA3OTUzLCA3OTU1LCA3OTU3LCA3OTU5LCA3OTYxLCA3OTYzLCA3OTY1LCA3OTY3LCA3OTY5LCAKLSAgICA3OTcxLCA3OTczLCA3OTc1LCA3OTc3LCA3OTgwLCA3OTgzLCA3OTg2LCA3OTg5LCA3OTkyLCA3OTk1LCA3OTk4LCA4MDAxLCAKLSAgICA4MDA0LCA4MDA3LCA4MDEwLCA4MDEzLCA4MDE2LCA4MDE5LCA4MDIyLCA4MDI1LCA4MDI4LCA4MDMxLCA4MDMzLCA4MDM1LCAKLSAgICA4MDM3LCA4MDM5LCA4MDQyLCA4MDQ1LCA4MDQ4LCA4MDUxLCA4MDU0LCA4MDU3LCA4MDYwLCA4MDYzLCA4MDY2LCA4MDY5LCAKLSAgICA4MDcyLCA4MDc1LCA4MDc4LCA4MDgxLCA4MDg0LCA4MDg3LCA4MDkwLCA4MDkzLCA4MDk2LCA4MDk5LCA4MTAyLCA4MTA1LCAKLSAgICA4MTA4LCA4MTExLCA4MTE0LCA4MTE3LCA4MTIwLCA4MTIzLCA4MTI2LCA4MTI5LCA4MTMyLCA4MTM1LCA4MTM4LCA4MTQxLCAKLSAgICA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTUzLCA4MTU2LCA4MTU5LCA4MTYyLCA4MTY1LCA4MTY4LCA4MTcxLCA4MTc0LCA4MTc3LCAKLSAgICA4MTgwLCA4MTgzLCA4MTg2LCA4MTg5LCA4MTkyLCA4MTk1LCA4MTk4LCA4MjAxLCA4MjA0LCA4MjA3LCA4MjEwLCA4MjEzLCAKLSAgICA4MjE2LCA4MjE5LCA4MjIyLCA4MjI1LCA4MjI4LCA4MjMxLCA4MjM0LCA4MjM3LCA4MjQwLCA4MjQzLCA4MjQ2LCA4MjQ5LCAKLSAgICA4MjUyLCA4MjU1LCA4MjU4LCA4MjYxLCA4MjY0LCA4MjY3LCA4MjcwLCA4MjczLCA4Mjc2LCA4Mjc5LCA4MjgyLCA4Mjg1LCAKLSAgICA4Mjg4LCA4MjkxLCA4Mjk0LCA4Mjk3LCA4MzAwLCA4MzAzLCA4MzA2LCA4MzA5LCA4MzEyLCA4MzE1LCA4MzE4LCA4MzIxLCAKLSAgICA4MzI1LCA4MzI5LCA4MzMzLCA4MzM3LCA4MzQxLCA4MzQ1LCA4MzQ4LCA4MzUxLCA4MzU0LCA4MzU3LCA4MzYwLCA4MzYzLCAKLSAgICA4MzY2LCA4MzY5LCA4MzcyLCA4Mzc1LCA4Mzc4LCA4MzgxLCA4Mzg0LCA4Mzg3LCA4MzkwLCA4MzkzLCA4Mzk2LCA4Mzk5LCAKLSAgICA4NDAyLCA4NDA1LCA4NDA4LCA4NDExLCA4NDE0LCA4NDE3LCA4NDIwLCA4NDIzLCA4NDI2LCA4NDI5LCA4NDMyLCA4NDM1LCAKLSAgICA4NDM4LCA4NDQxLCA4NDQ0LCA4NDQ3LCA4NDUwLCA4NDUzLCA4NDU2LCA4NDU5LCA4NDYyLCA4NDY1LCA4NDY4LCA4NDcxLCAKLSAgICA4NDc0LCA4NDc3LCA4NDgwLCA4NDgzLCA4NDg2LCA4NDg5LCA4NDkyLCA4NDk1LCA4NDk4LCA4NTAxLCA4NTA0LCA4NTA3LCAKLSAgICA4NTEwLCA4NTEzLCA4NTE2LCA4NTE5LCA4NTIyLCA4NTI1LCA4NTI4LCA4NTMxLCA4NTM0LCA4NTM3LCA4NTQwLCA4NTQzLCAKLSAgICA4NTQ2LCA4NTQ5LCA4NTUyLCA4NTU1LCA4NTU4LCA4NTYxLCA4NTY0LCA4NTY3LCA4NTcwLCA4NTczLCA4NTc2LCA4NTc5LCAKLSAgICA4NTgyLCA4NTg1LCA4NTg4LCA4NTkxLCA4NTk0LCA4NTk3LCA4NjAwLCA4NjAzLCA4NjA2LCA4NjA5LCA4NjEyLCA4NjE1LCAKLSAgICA4NjE4LCA4NjIxLCA4NjI0LCA4NjI3LCA4NjMwLCA4NjMzLCA4NjM2LCA4NjM5LCA4NjQyLCA4NjQ1LCA4NjQ4LCA4NjUxLCAKLSAgICA4NjU0LCA4NjU3LCA4NjYwLCA4NjYzLCA4NjY2LCA4NjY5LCA4NjcyLCA4Njc1LCA4Njc4LCA4NjgxLCA4Njg0LCA4Njg3LCAKLSAgICA4NjkwLCA4NjkzLCA4Njk2LCA4Njk5LCA4NzAyLCA4NzA1LCA4NzA4LCA4NzExLCA4NzE0LCA4NzE3LCA4NzIwLCA4NzIzLCAKLSAgICA4NzI2LCA4NzI5LCA4NzMyLCA4NzM1LCA4NzM4LCA4NzQxLCA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzUzLCA4NzU2LCA4NzU5LCAKLSAgICA4NzYyLCA4NzY1LCA4NzY4LCA4NzcxLCA4Nzc1LCA4Nzc5LCA4NzgzLCA4Nzg2LCA4Nzg5LCA4NzkyLCA4Nzk1LCA4Nzk4LCAKLSAgICA4ODAxLCA4ODA0LCA4ODA3LCA4ODEwLCA4ODEzLCA4ODE2LCA4ODE5LCA4ODIyLCA4ODI1LCA4ODI4LCA4ODMxLCA4ODM0LCAKLSAgICA4ODM3LCA4ODQwLCA4ODQzLCA4ODQ2LCA4ODQ5LCA4ODUyLCA4ODU1LCA4ODU4LCA4ODYxLCA4ODY0LCA4ODY3LCA4ODcwLCAKLSAgICA4ODczLCA4ODc2LCA4ODc5LCA4ODgyLCA4ODg1LCA4ODg4LCA4ODkxLCA4ODk0LCA4ODk3LCA4OTAwLCA4OTAzLCA4OTA2LCAKLSAgICA4OTA5LCA4OTEyLCA4OTE1LCA4OTE4LCA4OTIxLCA4OTI0LCA4OTI3LCA4OTMwLCA4OTMzLCA4OTM2LCA4OTM5LCA4OTQyLCAKLSAgICA4OTQ1LCA4OTQ4LCA4OTUxLCA4OTU0LCA4OTU3LCA4OTYwLCA4OTYzLCA4OTY2LCA4OTY5LCA4OTcyLCA4OTc1LCA4OTc4LCAKLSAgICA4OTgxLCA4OTg0LCA4OTg3LCA4OTkwLCA4OTkzLCA4OTk2LCA4OTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDAyLCA5MDA2LCA5MDEwLCA5MDE0LCA5MDE4LCA5MDIyLCA5MDI2LCA5MDMwLCAKLSAgICA5MDM0LCA5MDM4LCA5MDQyLCA5MDQ2LCA5MDUwLCA5MDU0LCA5MDU4LCA5MDYyLCA5MDY2LCA5MDcwLCA5MDc0LCA5MDc4LCAKLSAgICA5MDgyLCA5MDg2LCA5MDkwLCA5MDk0LCA5MDk4LCA5MTAyLCA5MTA2LCA5MTEwLCA5MTE0LCA5MTE4LCA5MTIyLCA5MTI2LCAKLSAgICA5MTMwLCA5MTM0LCA5MTM4LCA5MTQyLCA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCAKLSAgICA5MTc4LCA5MTgyLCA5MTg2LCA5MTkwLCA5MTk0LCA5MTk4LCA5MjAyLCA5MjA2LCA5MjEwLCA5MjE0LCA5MjE4LCA5MjIyLCAKLSAgICA5MjI2LCA5MjMwLCA5MjM0LCA5MjM4LCA5MjQyLCA5MjQ2LCA5MjUwLCA5MjU0LCAwLCAwLCA5MjU4LCA5MjYyLCA5MjY2LCAKLSAgICA5MjcwLCA5Mjc0LCA5Mjc4LCA5MjgyLCA5Mjg2LCA5MjkwLCA5Mjk0LCA5Mjk4LCA5MzAyLCA5MzA2LCA5MzEwLCA5MzE0LCAKLSAgICA5MzE4LCA5MzIyLCA5MzI2LCA5MzMwLCA5MzM0LCA5MzM4LCA5MzQyLCA5MzQ2LCA5MzUwLCA5MzU0LCA5MzU4LCA5MzYyLCAKLSAgICA5MzY2LCA5MzcwLCA5Mzc0LCA5Mzc4LCA5MzgyLCA5Mzg2LCA5MzkwLCA5Mzk0LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCAKLSAgICA5NDE0LCA5NDE4LCA5NDIyLCA5NDI2LCA5NDMwLCA5NDM0LCA5NDM4LCA5NDQyLCA5NDQ2LCA5NDUwLCA5NDU0LCA5NDU4LCAKLSAgICA5NDYyLCA5NDY2LCA5NDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDc0LCAKLSAgICA5NDc4LCA5NDgyLCA5NDg3LCA5NDkyLCA5NDk3LCA5NTAyLCA5NTA3LCA5NTEyLCA5NTE3LCA5NTIxLCA5NTQwLCA5NTQ5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTU0LCA5NTU2LCAKLSAgICA5NTU4LCA5NTYwLCA5NTYyLCA5NTY0LCA5NTY2LCA5NTY4LCA5NTcwLCA5NTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc0LCA5NTc2LCA5NTc4LCA5NTgwLCA5NTgyLCAKLSAgICA5NTg0LCA5NTg2LCA5NTg4LCA5NTkwLCA5NTkyLCA5NTk0LCA5NTk2LCA5NTk4LCA5NjAwLCA5NjAyLCA5NjA0LCA5NjA2LCAKLSAgICA5NjA4LCA5NjEwLCA5NjEyLCA5NjE0LCAwLCAwLCA5NjE2LCA5NjE4LCA5NjIwLCA5NjIyLCA5NjI0LCA5NjI2LCA5NjI4LCAKLSAgICA5NjMwLCA5NjMyLCA5NjM0LCA5NjM2LCA5NjM4LCAwLCA5NjQwLCA5NjQyLCA5NjQ0LCA5NjQ2LCA5NjQ4LCA5NjUwLCAKLSAgICA5NjUyLCA5NjU0LCA5NjU2LCA5NjU4LCA5NjYwLCA5NjYyLCA5NjY0LCA5NjY2LCA5NjY4LCA5NjcwLCA5NjcyLCA5Njc0LCAKLSAgICA5Njc2LCAwLCA5Njc4LCA5NjgwLCA5NjgyLCA5Njg0LCAwLCAwLCAwLCAwLCA5Njg2LCA5Njg5LCA5NjkyLCAwLCA5Njk1LCAKLSAgICAwLCA5Njk4LCA5NzAxLCA5NzA0LCA5NzA3LCA5NzEwLCA5NzEzLCA5NzE2LCA5NzE5LCA5NzIyLCA5NzI1LCA5NzI4LCAKLSAgICA5NzMwLCA5NzMyLCA5NzM0LCA5NzM2LCA5NzM4LCA5NzQwLCA5NzQyLCA5NzQ0LCA5NzQ2LCA5NzQ4LCA5NzUwLCA5NzUyLCAKLSAgICA5NzU0LCA5NzU2LCA5NzU4LCA5NzYwLCA5NzYyLCA5NzY0LCA5NzY2LCA5NzY4LCA5NzcwLCA5NzcyLCA5Nzc0LCA5Nzc2LCAKLSAgICA5Nzc4LCA5NzgwLCA5NzgyLCA5Nzg0LCA5Nzg2LCA5Nzg4LCA5NzkwLCA5NzkyLCA5Nzk0LCA5Nzk2LCA5Nzk4LCA5ODAwLCAKLSAgICA5ODAyLCA5ODA0LCA5ODA2LCA5ODA4LCA5ODEwLCA5ODEyLCA5ODE0LCA5ODE2LCA5ODE4LCA5ODIwLCA5ODIyLCA5ODI0LCAKLSAgICA5ODI2LCA5ODI4LCA5ODMwLCA5ODMyLCA5ODM0LCA5ODM2LCA5ODM4LCA5ODQwLCA5ODQyLCA5ODQ0LCA5ODQ2LCA5ODQ4LCAKLSAgICA5ODUwLCA5ODUyLCA5ODU0LCA5ODU2LCA5ODU4LCA5ODYwLCA5ODYyLCA5ODY0LCA5ODY2LCA5ODY4LCA5ODcwLCA5ODcyLCAKLSAgICA5ODc0LCA5ODc2LCA5ODc4LCA5ODgwLCA5ODgyLCA5ODg0LCA5ODg2LCA5ODg4LCA5ODkwLCA5ODkyLCA5ODk0LCA5ODk2LCAKLSAgICA5ODk4LCA5OTAwLCA5OTAyLCA5OTA0LCA5OTA2LCA5OTA4LCA5OTEwLCA5OTEyLCA5OTE0LCA5OTE2LCA5OTE4LCA5OTIwLCAKLSAgICA5OTIyLCA5OTI0LCA5OTI2LCA5OTI4LCA5OTMwLCA5OTMyLCA5OTM0LCA5OTM2LCA5OTM4LCA5OTQwLCA5OTQyLCA5OTQ0LCAKLSAgICA5OTQ2LCA5OTQ4LCA5OTUwLCA5OTUyLCA5OTU0LCA5OTU2LCA5OTU4LCA5OTYwLCA5OTYyLCA5OTY1LCA5OTY4LCA5OTcxLCAKLSAgICA5OTc0LCA5OTc3LCA5OTgwLCA5OTgzLCAwLCAwLCAwLCAwLCA5OTg2LCA5OTg4LCA5OTkwLCA5OTkyLCA5OTk0LCA5OTk2LCAKLSAgICA5OTk4LCAxMDAwMCwgMTAwMDIsIDEwMDA0LCAxMDAwNiwgMTAwMDgsIDEwMDEwLCAxMDAxMiwgMTAwMTQsIDEwMDE2LCAKLSAgICAxMDAxOCwgMTAwMjAsIDEwMDIyLCAxMDAyNCwgMTAwMjYsIDEwMDI4LCAxMDAzMCwgMTAwMzIsIDEwMDM0LCAxMDAzNiwgCi0gICAgMTAwMzgsIDEwMDQwLCAxMDA0MiwgMTAwNDQsIDEwMDQ2LCAxMDA0OCwgMTAwNTAsIDEwMDUyLCAxMDA1NCwgMTAwNTYsIAotICAgIDEwMDU4LCAxMDA2MCwgMTAwNjIsIDEwMDY0LCAxMDA2NiwgMTAwNjgsIDEwMDcwLCAxMDA3MiwgMTAwNzQsIDEwMDc2LCAKLSAgICAxMDA3OCwgMTAwODAsIDEwMDgyLCAxMDA4NCwgMTAwODYsIDEwMDg4LCAxMDA5MCwgMTAwOTIsIDEwMDk0LCAxMDA5NiwgCi0gICAgMTAwOTgsIDEwMTAwLCAxMDEwMiwgMTAxMDQsIDEwMTA2LCAxMDEwOCwgMTAxMTAsIDEwMTEyLCAxMDExNCwgMTAxMTYsIAotICAgIDEwMTE4LCAxMDEyMCwgMTAxMjIsIDEwMTI0LCAxMDEyNiwgMTAxMjgsIDEwMTMwLCAxMDEzMiwgMTAxMzQsIDEwMTM2LCAKLSAgICAxMDEzOCwgMTAxNDAsIDEwMTQyLCAxMDE0NCwgMTAxNDYsIDEwMTQ4LCAxMDE1MCwgMTAxNTIsIDEwMTU0LCAxMDE1NiwgCi0gICAgMTAxNTgsIDEwMTYwLCAxMDE2MiwgMTAxNjQsIDEwMTY2LCAxMDE2OCwgMTAxNzAsIDEwMTcyLCAxMDE3NCwgMTAxNzYsIAotICAgIDEwMTc4LCAxMDE4MCwgMTAxODIsIDEwMTg0LCAxMDE4NiwgMTAxODgsIDEwMTkwLCAxMDE5MiwgMTAxOTQsIDEwMTk2LCAKLSAgICAxMDE5OCwgMTAyMDAsIDEwMjAyLCAxMDIwNCwgMTAyMDYsIDEwMjA4LCAxMDIxMCwgMTAyMTIsIDEwMjE0LCAxMDIxNiwgCi0gICAgMTAyMTgsIDEwMjIwLCAxMDIyMiwgMTAyMjQsIDEwMjI2LCAxMDIyOCwgMTAyMzAsIDEwMjMyLCAxMDIzNCwgMTAyMzYsIAotICAgIDEwMjM4LCAxMDI0MCwgMTAyNDIsIDEwMjQ0LCAxMDI0NiwgMTAyNDgsIDEwMjUwLCAxMDI1MiwgMTAyNTQsIDEwMjU2LCAKLSAgICAxMDI1OCwgMTAyNjAsIDEwMjYyLCAxMDI2NCwgMTAyNjYsIDEwMjY4LCAxMDI3MCwgMTAyNzIsIDEwMjc0LCAxMDI3NiwgCi0gICAgMTAyNzgsIDEwMjgwLCAxMDI4MiwgMTAyODQsIDEwMjg2LCAxMDI4OCwgMTAyOTAsIDEwMjkyLCAxMDI5NCwgMTAyOTYsIAotICAgIDEwMjk4LCAxMDMwMCwgMTAzMDIsIDEwMzA0LCAxMDMwNiwgMTAzMDgsIDEwMzEwLCAxMDMxMiwgMTAzMTQsIDEwMzE2LCAKLSAgICAxMDMxOCwgMTAzMjAsIDEwMzIyLCAxMDMyNCwgMTAzMjYsIDEwMzI4LCAxMDMzMCwgMTAzMzIsIDEwMzM0LCAxMDMzNiwgCi0gICAgMTAzMzgsIDEwMzQwLCAxMDM0MiwgMTAzNDQsIDEwMzQ2LCAxMDM0OCwgMTAzNTAsIDEwMzUyLCAxMDM1NCwgMTAzNTYsIAotICAgIDEwMzU4LCAxMDM2MCwgMTAzNjIsIDEwMzY0LCAwLCAwLCAwLCAxMDM2NiwgMTAzNjgsIDEwMzcwLCAxMDM3MiwgMTAzNzQsIAotICAgIDEwMzc2LCAwLCAwLCAxMDM3OCwgMTAzODAsIDEwMzgyLCAxMDM4NCwgMTAzODYsIDEwMzg4LCAwLCAwLCAxMDM5MCwgCi0gICAgMTAzOTIsIDEwMzk0LCAxMDM5NiwgMTAzOTgsIDEwNDAwLCAwLCAwLCAxMDQwMiwgMTA0MDQsIDEwNDA2LCAwLCAwLCAwLCAKLSAgICAxMDQwOCwgMTA0MTAsIDEwNDEyLCAxMDQxNCwgMTA0MTYsIDEwNDE4LCAxMDQyMCwgMCwgMTA0MjIsIDEwNDI0LCAxMDQyNiwgCi0gICAgMTA0MjgsIDEwNDMwLCAxMDQzMiwgMTA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDM2LCAwLCAxMDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDQ1LCAxMDQ0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0NiwgNjY0OCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC00NTQ0LDYxMSArNDg1NSw4MTMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MSwgMTA0NTQsIDEwNDU3LCAxMDQ2MCwgMTA0NjMsIAotICAgIDEwNDY2LCAxMDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MiwgNjY1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NzIsIDEwNDc1LCAKLSAgICAxMDQ3OCwgMTA0ODEsIDEwNDg0LCAxMDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0OTAsIDEwNDkyLCAxMDQ5NCwgMTA0OTYsIDEwNDk4LCAxMDUwMCwgMTA1MDIsIDEwNTA0LCAxMDUwNiwgMTA1MDgsIAotICAgIDEwNTEwLCAxMDUxMiwgMTA1MTQsIDEwNTE2LCAxMDUxOCwgMTA1MjAsIDEwNTIyLCAxMDUyNCwgMTA1MjYsIDEwNTI4LCAKLSAgICAxMDUzMCwgMTA1MzIsIDEwNTM0LCAxMDUzNiwgMTA1MzgsIDEwNTQwLCAxMDU0MiwgMTA1NDQsIDEwNTQ2LCAxMDU0OCwgCi0gICAgMTA1NTAsIDEwNTUyLCAxMDU1NCwgMTA1NTYsIDEwNTU4LCAxMDU2MCwgMTA1NjIsIDEwNTY0LCAxMDU2NiwgMTA1NjgsIAotICAgIDEwNTcwLCAxMDU3MiwgMTA1NzQsIDEwNTc2LCAxMDU3OCwgMTA1ODAsIDEwNTgyLCAxMDU4NCwgMTA1ODYsIDEwNTg4LCAKLSAgICAxMDU5MCwgMTA1OTIsIDEwNTk0LCAxMDU5NiwgMTA1OTgsIDEwNjAwLCAxMDYwMiwgMTA2MDQsIDEwNjA2LCAxMDYwOCwgCi0gICAgMTA2MTAsIDEwNjEyLCAxMDYxNCwgMTA2MTYsIDEwNjE4LCAxMDYyMCwgMTA2MjIsIDEwNjI0LCAxMDYyNiwgMTA2MjgsIAotICAgIDEwNjMwLCAxMDYzMiwgMTA2MzQsIDEwNjM2LCAxMDYzOCwgMTA2NDAsIDEwNjQyLCAxMDY0NCwgMTA2NDYsIDEwNjQ4LCAKLSAgICAxMDY1MCwgMTA2NTIsIDEwNjU0LCAxMDY1NiwgMTA2NTgsIDAsIDEwNjYwLCAxMDY2MiwgMTA2NjQsIDEwNjY2LCAxMDY2OCwgCi0gICAgMTA2NzAsIDEwNjcyLCAxMDY3NCwgMTA2NzYsIDEwNjc4LCAxMDY4MCwgMTA2ODIsIDEwNjg0LCAxMDY4NiwgMTA2ODgsIAotICAgIDEwNjkwLCAxMDY5MiwgMTA2OTQsIDEwNjk2LCAxMDY5OCwgMTA3MDAsIDEwNzAyLCAxMDcwNCwgMTA3MDYsIDEwNzA4LCAKLSAgICAxMDcxMCwgMTA3MTIsIDEwNzE0LCAxMDcxNiwgMTA3MTgsIDEwNzIwLCAxMDcyMiwgMTA3MjQsIDEwNzI2LCAxMDcyOCwgCi0gICAgMTA3MzAsIDEwNzMyLCAxMDczNCwgMTA3MzYsIDEwNzM4LCAxMDc0MCwgMTA3NDIsIDEwNzQ0LCAxMDc0NiwgMTA3NDgsIAotICAgIDEwNzUwLCAxMDc1MiwgMTA3NTQsIDEwNzU2LCAxMDc1OCwgMTA3NjAsIDEwNzYyLCAxMDc2NCwgMTA3NjYsIDEwNzY4LCAKLSAgICAxMDc3MCwgMTA3NzIsIDEwNzc0LCAxMDc3NiwgMTA3NzgsIDEwNzgwLCAxMDc4MiwgMTA3ODQsIDEwNzg2LCAxMDc4OCwgCi0gICAgMTA3OTAsIDEwNzkyLCAxMDc5NCwgMTA3OTYsIDEwNzk4LCAxMDgwMCwgMCwgMTA4MDIsIDEwODA0LCAwLCAwLCAxMDgwNiwgCi0gICAgMCwgMCwgMTA4MDgsIDEwODEwLCAwLCAwLCAxMDgxMiwgMTA4MTQsIDEwODE2LCAxMDgxOCwgMCwgMTA4MjAsIDEwODIyLCAKLSAgICAxMDgyNCwgMTA4MjYsIDEwODI4LCAxMDgzMCwgMTA4MzIsIDEwODM0LCAxMDgzNiwgMTA4MzgsIDEwODQwLCAxMDg0MiwgMCwgCi0gICAgMTA4NDQsIDAsIDEwODQ2LCAxMDg0OCwgMTA4NTAsIDEwODUyLCAxMDg1NCwgMTA4NTYsIDEwODU4LCAwLCAxMDg2MCwgCi0gICAgMTA4NjIsIDEwODY0LCAxMDg2NiwgMTA4NjgsIDEwODcwLCAxMDg3MiwgMTA4NzQsIDEwODc2LCAxMDg3OCwgMTA4ODAsIAotICAgIDEwODgyLCAxMDg4NCwgMTA4ODYsIDEwODg4LCAxMDg5MCwgMTA4OTIsIDEwODk0LCAxMDg5NiwgMTA4OTgsIDEwOTAwLCAKLSAgICAxMDkwMiwgMTA5MDQsIDEwOTA2LCAxMDkwOCwgMTA5MTAsIDEwOTEyLCAxMDkxNCwgMTA5MTYsIDEwOTE4LCAxMDkyMCwgCi0gICAgMTA5MjIsIDEwOTI0LCAxMDkyNiwgMTA5MjgsIDEwOTMwLCAxMDkzMiwgMTA5MzQsIDEwOTM2LCAxMDkzOCwgMTA5NDAsIAotICAgIDEwOTQyLCAxMDk0NCwgMTA5NDYsIDEwOTQ4LCAxMDk1MCwgMTA5NTIsIDEwOTU0LCAxMDk1NiwgMTA5NTgsIDEwOTYwLCAKLSAgICAxMDk2MiwgMTA5NjQsIDEwOTY2LCAxMDk2OCwgMTA5NzAsIDEwOTcyLCAxMDk3NCwgMTA5NzYsIDEwOTc4LCAxMDk4MCwgCi0gICAgMTA5ODIsIDEwOTg0LCAxMDk4NiwgMTA5ODgsIDAsIDEwOTkwLCAxMDk5MiwgMTA5OTQsIDEwOTk2LCAwLCAwLCAxMDk5OCwgCi0gICAgMTEwMDAsIDExMDAyLCAxMTAwNCwgMTEwMDYsIDExMDA4LCAxMTAxMCwgMTEwMTIsIDAsIDExMDE0LCAxMTAxNiwgMTEwMTgsIAotICAgIDExMDIwLCAxMTAyMiwgMTEwMjQsIDExMDI2LCAwLCAxMTAyOCwgMTEwMzAsIDExMDMyLCAxMTAzNCwgMTEwMzYsIDExMDM4LCAKLSAgICAxMTA0MCwgMTEwNDIsIDExMDQ0LCAxMTA0NiwgMTEwNDgsIDExMDUwLCAxMTA1MiwgMTEwNTQsIDExMDU2LCAxMTA1OCwgCi0gICAgMTEwNjAsIDExMDYyLCAxMTA2NCwgMTEwNjYsIDExMDY4LCAxMTA3MCwgMTEwNzIsIDExMDc0LCAxMTA3NiwgMTEwNzgsIAotICAgIDExMDgwLCAxMTA4MiwgMCwgMTEwODQsIDExMDg2LCAxMTA4OCwgMTEwOTAsIDAsIDExMDkyLCAxMTA5NCwgMTEwOTYsIAotICAgIDExMDk4LCAxMTEwMCwgMCwgMTExMDIsIDAsIDAsIDAsIDExMTA0LCAxMTEwNiwgMTExMDgsIDExMTEwLCAxMTExMiwgCi0gICAgMTExMTQsIDExMTE2LCAwLCAxMTExOCwgMTExMjAsIDExMTIyLCAxMTEyNCwgMTExMjYsIDExMTI4LCAxMTEzMCwgMTExMzIsIAotICAgIDExMTM0LCAxMTEzNiwgMTExMzgsIDExMTQwLCAxMTE0MiwgMTExNDQsIDExMTQ2LCAxMTE0OCwgMTExNTAsIDExMTUyLCAKLSAgICAxMTE1NCwgMTExNTYsIDExMTU4LCAxMTE2MCwgMTExNjIsIDExMTY0LCAxMTE2NiwgMTExNjgsIDExMTcwLCAxMTE3MiwgCi0gICAgMTExNzQsIDExMTc2LCAxMTE3OCwgMTExODAsIDExMTgyLCAxMTE4NCwgMTExODYsIDExMTg4LCAxMTE5MCwgMTExOTIsIAotICAgIDExMTk0LCAxMTE5NiwgMTExOTgsIDExMjAwLCAxMTIwMiwgMTEyMDQsIDExMjA2LCAxMTIwOCwgMTEyMTAsIDExMjEyLCAKLSAgICAxMTIxNCwgMTEyMTYsIDExMjE4LCAxMTIyMCwgMTEyMjIsIDExMjI0LCAxMTIyNiwgMTEyMjgsIDExMjMwLCAxMTIzMiwgCi0gICAgMTEyMzQsIDExMjM2LCAxMTIzOCwgMTEyNDAsIDExMjQyLCAxMTI0NCwgMTEyNDYsIDExMjQ4LCAxMTI1MCwgMTEyNTIsIAotICAgIDExMjU0LCAxMTI1NiwgMTEyNTgsIDExMjYwLCAxMTI2MiwgMTEyNjQsIDExMjY2LCAxMTI2OCwgMTEyNzAsIDExMjcyLCAKLSAgICAxMTI3NCwgMTEyNzYsIDExMjc4LCAxMTI4MCwgMTEyODIsIDExMjg0LCAxMTI4NiwgMTEyODgsIDExMjkwLCAxMTI5MiwgCi0gICAgMTEyOTQsIDExMjk2LCAxMTI5OCwgMTEzMDAsIDExMzAyLCAxMTMwNCwgMTEzMDYsIDExMzA4LCAxMTMxMCwgMTEzMTIsIAotICAgIDExMzE0LCAxMTMxNiwgMTEzMTgsIDExMzIwLCAxMTMyMiwgMTEzMjQsIDExMzI2LCAxMTMyOCwgMTEzMzAsIDExMzMyLCAKLSAgICAxMTMzNCwgMTEzMzYsIDExMzM4LCAxMTM0MCwgMTEzNDIsIDExMzQ0LCAxMTM0NiwgMTEzNDgsIDExMzUwLCAxMTM1MiwgCi0gICAgMTEzNTQsIDExMzU2LCAxMTM1OCwgMTEzNjAsIDExMzYyLCAxMTM2NCwgMTEzNjYsIDExMzY4LCAxMTM3MCwgMTEzNzIsIAotICAgIDExMzc0LCAxMTM3NiwgMTEzNzgsIDExMzgwLCAxMTM4MiwgMTEzODQsIDExMzg2LCAxMTM4OCwgMTEzOTAsIDExMzkyLCAKLSAgICAxMTM5NCwgMTEzOTYsIDExMzk4LCAxMTQwMCwgMTE0MDIsIDExNDA0LCAxMTQwNiwgMTE0MDgsIDExNDEwLCAxMTQxMiwgCi0gICAgMTE0MTQsIDExNDE2LCAxMTQxOCwgMTE0MjAsIDExNDIyLCAxMTQyNCwgMTE0MjYsIDExNDI4LCAxMTQzMCwgMTE0MzIsIAotICAgIDExNDM0LCAxMTQzNiwgMTE0MzgsIDExNDQwLCAxMTQ0MiwgMTE0NDQsIDExNDQ2LCAxMTQ0OCwgMTE0NTAsIDExNDUyLCAKLSAgICAxMTQ1NCwgMTE0NTYsIDExNDU4LCAxMTQ2MCwgMTE0NjIsIDExNDY0LCAxMTQ2NiwgMTE0NjgsIDExNDcwLCAxMTQ3MiwgCi0gICAgMTE0NzQsIDExNDc2LCAxMTQ3OCwgMTE0ODAsIDExNDgyLCAxMTQ4NCwgMTE0ODYsIDExNDg4LCAxMTQ5MCwgMTE0OTIsIAotICAgIDExNDk0LCAxMTQ5NiwgMTE0OTgsIDExNTAwLCAxMTUwMiwgMTE1MDQsIDExNTA2LCAxMTUwOCwgMTE1MTAsIDExNTEyLCAKLSAgICAxMTUxNCwgMTE1MTYsIDExNTE4LCAxMTUyMCwgMTE1MjIsIDExNTI0LCAxMTUyNiwgMTE1MjgsIDExNTMwLCAxMTUzMiwgCi0gICAgMTE1MzQsIDExNTM2LCAxMTUzOCwgMTE1NDAsIDExNTQyLCAxMTU0NCwgMTE1NDYsIDExNTQ4LCAxMTU1MCwgMTE1NTIsIAotICAgIDExNTU0LCAxMTU1NiwgMTE1NTgsIDExNTYwLCAxMTU2MiwgMTE1NjQsIDExNTY2LCAxMTU2OCwgMTE1NzAsIDExNTcyLCAKLSAgICAxMTU3NCwgMTE1NzYsIDExNTc4LCAxMTU4MCwgMTE1ODIsIDExNTg0LCAxMTU4NiwgMTE1ODgsIDExNTkwLCAxMTU5MiwgCi0gICAgMTE1OTQsIDExNTk2LCAxMTU5OCwgMTE2MDAsIDExNjAyLCAxMTYwNCwgMTE2MDYsIDExNjA4LCAxMTYxMCwgMTE2MTIsIAotICAgIDExNjE0LCAxMTYxNiwgMTE2MTgsIDExNjIwLCAxMTYyMiwgMTE2MjQsIDExNjI2LCAxMTYyOCwgMTE2MzAsIDExNjMyLCAKLSAgICAxMTYzNCwgMTE2MzYsIDExNjM4LCAxMTY0MCwgMTE2NDIsIDExNjQ0LCAxMTY0NiwgMTE2NDgsIDExNjUwLCAxMTY1MiwgCi0gICAgMTE2NTQsIDExNjU2LCAxMTY1OCwgMTE2NjAsIDExNjYyLCAxMTY2NCwgMTE2NjYsIDExNjY4LCAxMTY3MCwgMTE2NzIsIAotICAgIDExNjc0LCAxMTY3NiwgMTE2NzgsIDExNjgwLCAxMTY4MiwgMTE2ODQsIDExNjg2LCAxMTY4OCwgMTE2OTAsIDExNjkyLCAKLSAgICAxMTY5NCwgMTE2OTYsIDExNjk4LCAxMTcwMCwgMTE3MDIsIDExNzA0LCAxMTcwNiwgMTE3MDgsIDExNzEwLCAxMTcxMiwgCi0gICAgMTE3MTQsIDExNzE2LCAxMTcxOCwgMTE3MjAsIDExNzIyLCAxMTcyNCwgMTE3MjYsIDExNzI4LCAxMTczMCwgMTE3MzIsIAotICAgIDExNzM0LCAxMTczNiwgMTE3MzgsIDExNzQwLCAxMTc0MiwgMTE3NDQsIDExNzQ2LCAxMTc0OCwgMTE3NTAsIDExNzUyLCAKLSAgICAxMTc1NCwgMTE3NTYsIDExNzU4LCAxMTc2MCwgMTE3NjIsIDExNzY0LCAxMTc2NiwgMTE3NjgsIDExNzcwLCAxMTc3MiwgCi0gICAgMTE3NzQsIDExNzc2LCAxMTc3OCwgMTE3ODAsIDExNzgyLCAxMTc4NCwgMTE3ODYsIDExNzg4LCAxMTc5MCwgMTE3OTIsIAotICAgIDExNzk0LCAxMTc5NiwgMCwgMCwgMTE3OTgsIDExODAwLCAxMTgwMiwgMTE4MDQsIDExODA2LCAxMTgwOCwgMTE4MTAsIAotICAgIDExODEyLCAxMTgxNCwgMTE4MTYsIDExODE4LCAxMTgyMCwgMTE4MjIsIDExODI0LCAxMTgyNiwgMTE4MjgsIDExODMwLCAKLSAgICAxMTgzMiwgMTE4MzQsIDExODM2LCAxMTgzOCwgMTE4NDAsIDExODQyLCAxMTg0NCwgMTE4NDYsIDExODQ4LCAxMTg1MCwgCi0gICAgMTE4NTIsIDExODU0LCAxMTg1NiwgMTE4NTgsIDExODYwLCAxMTg2MiwgMTE4NjQsIDExODY2LCAxMTg2OCwgMTE4NzAsIAotICAgIDExODcyLCAxMTg3NCwgMTE4NzYsIDExODc4LCAxMTg4MCwgMTE4ODIsIDExODg0LCAxMTg4NiwgMTE4ODgsIDExODkwLCAKLSAgICAxMTg5MiwgMTE4OTQsIDExODk2LCAxMTg5OCwgMTE5MDAsIDExOTAyLCAxMTkwNCwgMTE5MDYsIDExOTA4LCAxMTkxMCwgCi0gICAgMTE5MTIsIDExOTE0LCAxMTkxNiwgMTE5MTgsIDExOTIwLCAxMTkyMiwgMTE5MjQsIDExOTI2LCAxMTkyOCwgMTE5MzAsIAotICAgIDExOTMyLCAxMTkzNCwgMTE5MzYsIDExOTM4LCAxMTk0MCwgMTE5NDIsIDExOTQ0LCAxMTk0NiwgMTE5NDgsIDExOTUwLCAKLSAgICAxMTk1MiwgMTE5NTQsIDExOTU2LCAxMTk1OCwgMTE5NjAsIDExOTYyLCAxMTk2NCwgMTE5NjYsIDExOTY4LCAxMTk3MCwgCi0gICAgMTE5NzIsIDExOTc0LCAxMTk3NiwgMTE5NzgsIDExOTgwLCAxMTk4MiwgMTE5ODQsIDExOTg2LCAxMTk4OCwgMTE5OTAsIAotICAgIDExOTkyLCAxMTk5NCwgMTE5OTYsIDExOTk4LCAxMjAwMCwgMTIwMDIsIDEyMDA0LCAxMjAwNiwgMTIwMDgsIDEyMDEwLCAKLSAgICAxMjAxMiwgMTIwMTQsIDEyMDE2LCAxMjAxOCwgMTIwMjAsIDEyMDIyLCAxMjAyNCwgMTIwMjYsIDEyMDI4LCAxMjAzMCwgCi0gICAgMTIwMzIsIDEyMDM0LCAxMjAzNiwgMTIwMzgsIDEyMDQwLCAxMjA0MiwgMTIwNDQsIDEyMDQ2LCAxMjA0OCwgMTIwNTAsIAotICAgIDEyMDUyLCAxMjA1NCwgMTIwNTYsIDEyMDU4LCAxMjA2MCwgMTIwNjIsIDEyMDY0LCAxMjA2NiwgMTIwNjgsIDEyMDcwLCAKLSAgICAxMjA3MiwgMTIwNzQsIDEyMDc2LCAxMjA3OCwgMTIwODAsIDEyMDgyLCAxMjA4NCwgMTIwODYsIDEyMDg4LCAxMjA5MCwgCi0gICAgMTIwOTIsIDEyMDk0LCAxMjA5NiwgMTIwOTgsIDEyMTAwLCAxMjEwMiwgMTIxMDQsIDEyMTA2LCAxMjEwOCwgMTIxMTAsIAotICAgIDEyMTEyLCAxMjExNCwgMTIxMTYsIDEyMTE4LCAxMjEyMCwgMTIxMjIsIDEyMTI0LCAxMjEyNiwgMTIxMjgsIDEyMTMwLCAKLSAgICAxMjEzMiwgMTIxMzQsIDEyMTM2LCAxMjEzOCwgMTIxNDAsIDEyMTQyLCAxMjE0NCwgMTIxNDYsIDEyMTQ4LCAxMjE1MCwgCi0gICAgMTIxNTIsIDEyMTU0LCAxMjE1NiwgMTIxNTgsIDEyMTYwLCAxMjE2MiwgMTIxNjQsIDEyMTY2LCAxMjE2OCwgMTIxNzAsIAotICAgIDEyMTcyLCAxMjE3NCwgMTIxNzYsIDEyMTc4LCAxMjE4MCwgMTIxODIsIDEyMTg0LCAxMjE4NiwgMTIxODgsIDEyMTkwLCAKLSAgICAxMjE5MiwgMTIxOTQsIDEyMTk2LCAxMjE5OCwgMTIyMDAsIDEyMjAyLCAxMjIwNCwgMTIyMDYsIDEyMjA4LCAxMjIxMCwgCi0gICAgMTIyMTIsIDEyMjE0LCAxMjIxNiwgMTIyMTgsIDEyMjIwLCAxMjIyMiwgMTIyMjQsIDEyMjI2LCAxMjIyOCwgMTIyMzAsIAotICAgIDEyMjMyLCAxMjIzNCwgMTIyMzYsIDEyMjM4LCAxMjI0MCwgMTIyNDIsIDEyMjQ0LCAxMjI0NiwgMTIyNDgsIDEyMjUwLCAKLSAgICAxMjI1MiwgMTIyNTQsIDEyMjU2LCAxMjI1OCwgMTIyNjAsIDEyMjYyLCAxMjI2NCwgMTIyNjYsIDEyMjY4LCAxMjI3MCwgCi0gICAgMTIyNzIsIDEyMjc0LCAxMjI3NiwgMTIyNzgsIDEyMjgwLCAxMjI4MiwgMTIyODQsIDEyMjg2LCAxMjI4OCwgMTIyOTAsIAotICAgIDEyMjkyLCAxMjI5NCwgMTIyOTYsIDEyMjk4LCAxMjMwMCwgMTIzMDIsIDEyMzA0LCAxMjMwNiwgMTIzMDgsIDEyMzEwLCAKLSAgICAxMjMxMiwgMTIzMTQsIDEyMzE2LCAxMjMxOCwgMTIzMjAsIDEyMzIyLCAxMjMyNCwgMTIzMjYsIDEyMzI4LCAxMjMzMCwgCi0gICAgMTIzMzIsIDEyMzM0LCAxMjMzNiwgMTIzMzgsIDEyMzQwLCAxMjM0MiwgMTIzNDQsIDEyMzQ2LCAxMjM0OCwgMTIzNTAsIAotICAgIDEyMzUyLCAxMjM1NCwgMTIzNTYsIDEyMzU4LCAxMjM2MCwgMTIzNjIsIDEyMzY0LCAxMjM2NiwgMTIzNjgsIDEyMzcwLCAKLSAgICAxMjM3MiwgMTIzNzQsIDEyMzc2LCAxMjM3OCwgMTIzODAsIDAsIDAsIDEyMzgyLCAxMjM4NCwgMTIzODYsIDEyMzg4LCAKLSAgICAxMjM5MCwgMTIzOTIsIDEyMzk0LCAxMjM5NiwgMTIzOTgsIDEyNDAwLCAxMjQwMiwgMTI0MDQsIDEyNDA2LCAxMjQwOCwgCi0gICAgMTI0MTAsIDEyNDEyLCAxMjQxNCwgMTI0MTYsIDEyNDE4LCAxMjQyMCwgMTI0MjIsIDEyNDI0LCAxMjQyNiwgMTI0MjgsIAotICAgIDEyNDMwLCAxMjQzMiwgMTI0MzQsIDEyNDM2LCAxMjQzOCwgMTI0NDAsIDEyNDQyLCAxMjQ0NCwgMTI0NDYsIDEyNDQ4LCAKLSAgICAxMjQ1MCwgMTI0NTIsIDEyNDU0LCAxMjQ1NiwgMTI0NTgsIDEyNDYwLCAxMjQ2MiwgMTI0NjQsIDEyNDY2LCAxMjQ2OCwgCi0gICAgMTI0NzAsIDEyNDcyLCAxMjQ3NCwgMTI0NzYsIDEyNDc4LCAxMjQ4MCwgMTI0ODIsIDEyNDg0LCAxMjQ4NiwgMTI0ODgsIDAsIAotICAgIDEyNDkwLCAxMjQ5MiwgMTI0OTQsIDEyNDk2LCAxMjQ5OCwgMTI1MDAsIDEyNTAyLCAxMjUwNCwgMTI1MDYsIDEyNTA4LCAKLSAgICAxMjUxMCwgMTI1MTIsIDEyNTE0LCAxMjUxNiwgMTI1MTgsIDEyNTIwLCAxMjUyMiwgMTI1MjQsIDEyNTI2LCAxMjUyOCwgCi0gICAgMTI1MzAsIDEyNTMyLCAxMjUzNCwgMTI1MzYsIDEyNTM4LCAxMjU0MCwgMTI1NDIsIDAsIDEyNTQ0LCAxMjU0NiwgMCwgCi0gICAgMTI1NDgsIDAsIDAsIDEyNTUwLCAwLCAxMjU1MiwgMTI1NTQsIDEyNTU2LCAxMjU1OCwgMTI1NjAsIDEyNTYyLCAxMjU2NCwgCi0gICAgMTI1NjYsIDEyNTY4LCAxMjU3MCwgMCwgMTI1NzIsIDEyNTc0LCAxMjU3NiwgMTI1NzgsIDAsIDEyNTgwLCAwLCAxMjU4MiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTI1ODQsIDAsIDAsIDAsIDAsIDEyNTg2LCAwLCAxMjU4OCwgMCwgMTI1OTAsIDAsIDEyNTkyLCAKLSAgICAxMjU5NCwgMTI1OTYsIDAsIDEyNTk4LCAxMjYwMCwgMCwgMTI2MDIsIDAsIDAsIDEyNjA0LCAwLCAxMjYwNiwgMCwgMTI2MDgsIAotICAgIDAsIDEyNjEwLCAwLCAxMjYxMiwgMCwgMTI2MTQsIDEyNjE2LCAwLCAxMjYxOCwgMCwgMCwgMTI2MjAsIDEyNjIyLCAxMjYyNCwgCi0gICAgMTI2MjYsIDAsIDEyNjI4LCAxMjYzMCwgMTI2MzIsIDEyNjM0LCAxMjYzNiwgMTI2MzgsIDEyNjQwLCAwLCAxMjY0MiwgCi0gICAgMTI2NDQsIDEyNjQ2LCAxMjY0OCwgMCwgMTI2NTAsIDEyNjUyLCAxMjY1NCwgMTI2NTYsIDAsIDEyNjU4LCAwLCAxMjY2MCwgCi0gICAgMTI2NjIsIDEyNjY0LCAxMjY2NiwgMTI2NjgsIDEyNjcwLCAxMjY3MiwgMTI2NzQsIDEyNjc2LCAxMjY3OCwgMCwgMTI2ODAsIAotICAgIDEyNjgyLCAxMjY4NCwgMTI2ODYsIDEyNjg4LCAxMjY5MCwgMTI2OTIsIDEyNjk0LCAxMjY5NiwgMTI2OTgsIDEyNzAwLCAKLSAgICAxMjcwMiwgMTI3MDQsIDEyNzA2LCAxMjcwOCwgMTI3MTAsIDEyNzEyLCAwLCAwLCAwLCAwLCAwLCAxMjcxNCwgMTI3MTYsIAotICAgIDEyNzE4LCAwLCAxMjcyMCwgMTI3MjIsIDEyNzI0LCAxMjcyNiwgMTI3MjgsIDAsIDEyNzMwLCAxMjczMiwgMTI3MzQsIAotICAgIDEyNzM2LCAxMjczOCwgMTI3NDAsIDEyNzQyLCAxMjc0NCwgMTI3NDYsIDEyNzQ4LCAxMjc1MCwgMTI3NTIsIDEyNzU0LCAKLSAgICAxMjc1NiwgMTI3NTgsIDEyNzYwLCAxMjc2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY2NCwgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgCisgICAgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgNjY4OCwgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgCisgICAgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgNjcxMiwgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgCisgICAgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgNjczNiwgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgCisgICAgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgNjc2MCwgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgCisgICAgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgNjc4NCwgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgCisgICAgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgNjgwOCwgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgCisgICAgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgNjgzMiwgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgCisgICAgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgNjg1NiwgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgCisgICAgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgNjg4MCwgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgCisgICAgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgNjkwNCwgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgCisgICAgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgNjkyOCwgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgCisgICAgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgNjk1MiwgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgCisgICAgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgNjk3NiwgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgCisgICAgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgNzAwMCwgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgCisgICAgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgNzAyNCwgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgCisgICAgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgNzA0OCwgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgCisgICAgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgNzA3MiwgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgCisgICAgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgNzA5NiwgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgCisgICAgNzExMiwgNzExNCwgNzExNiwgNzExOCwgNzEyMCwgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgCisgICAgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgNzE0NCwgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgCisgICAgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgNzE2OCwgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgCisgICAgNzE4NCwgNzE4NiwgNzE4OCwgNzE5MCwgNzE5MiwgNzE5NCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgMCwgMCwgNzIwNCwgCisgICAgMCwgNzIwNiwgMCwgMCwgNzIwOCwgNzIxMCwgNzIxMiwgNzIxNCwgNzIxNiwgNzIxOCwgNzIyMCwgNzIyMiwgNzIyNCwgCisgICAgNzIyNiwgMCwgNzIyOCwgMCwgNzIzMCwgMCwgMCwgNzIzMiwgNzIzNCwgMCwgMCwgMCwgNzIzNiwgNzIzOCwgNzI0MCwgCisgICAgNzI0MiwgNzI0NCwgNzI0NiwgNzI0OCwgNzI1MCwgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgCisgICAgNzI2NiwgNzI2OCwgNzI3MCwgNzI3MiwgNzI3NCwgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgCisgICAgNzI5MCwgNzI5MiwgNzI5NCwgNzI5NiwgNzI5OCwgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgCisgICAgNzMxNCwgNzMxNiwgNzMxOCwgNzMyMCwgNzMyMiwgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgCisgICAgNzMzOCwgNzM0MCwgNzM0MiwgNzM0NCwgNzM0NiwgNzM0OCwgNzM1MCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgNzM2MCwgCisgICAgNzM2MiwgNzM2NCwgNzM2NiwgNzM2OCwgNzM3MCwgMCwgMCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgCisgICAgNzM4NCwgNzM4NiwgNzM4OCwgNzM5MCwgNzM5MiwgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgCisgICAgNzQwOCwgNzQxMCwgNzQxMiwgNzQxNCwgNzQxNiwgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgCisgICAgNzQzMiwgNzQzNCwgNzQzNiwgNzQzOCwgNzQ0MCwgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgCisgICAgNzQ1NiwgNzQ1OCwgNzQ2MCwgNzQ2MiwgNzQ2NCwgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgCisgICAgNzQ4MCwgNzQ4MiwgNzQ4NCwgNzQ4NiwgNzQ4OCwgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgCisgICAgNzUwNCwgNzUwNiwgNzUwOCwgNzUxMCwgNzUxMiwgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgCisgICAgNzUyOCwgNzUzMCwgNzUzMiwgNzUzNCwgNzUzNiwgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgCisgICAgNzU1MiwgNzU1NCwgNzU1NiwgNzU1OCwgNzU2MCwgNzU2MiwgNzU2NCwgNzU2NiwgNzU2OCwgNzU3MCwgNzU3MiwgNzU3NCwgCisgICAgNzU3NiwgNzU3OCwgNzU4MCwgNzU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU4NCwgCisgICAgNzU4NywgNzU5MCwgNzU5MywgNzU5NywgNzYwMSwgNzYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzYwNywgNzYxMCwgNzYxMywgNzYxNiwgNzYxOSwgMCwgMCwgMCwgMCwgMCwgNzYyMiwgMCwgNzYyNSwgNzYyOCwgNzYzMCwgCisgICAgNzYzMiwgNzYzNCwgNzYzNiwgNzYzOCwgNzY0MCwgNzY0MiwgNzY0NCwgNzY0NiwgNzY0OCwgNzY1MSwgNzY1NCwgNzY1NywgCisgICAgNzY2MCwgNzY2MywgNzY2NiwgNzY2OSwgNzY3MiwgNzY3NSwgNzY3OCwgNzY4MSwgNzY4NCwgMCwgNzY4NywgNzY5MCwgCisgICAgNzY5MywgNzY5NiwgNzY5OSwgMCwgNzcwMiwgMCwgNzcwNSwgNzcwOCwgMCwgNzcxMSwgNzcxNCwgMCwgNzcxNywgNzcyMCwgCisgICAgNzcyMywgNzcyNiwgNzcyOSwgNzczMiwgNzczNSwgNzczOCwgNzc0MSwgNzc0NCwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgCisgICAgNzc1NSwgNzc1NywgNzc1OSwgNzc2MSwgNzc2MywgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgCisgICAgNzc3OSwgNzc4MSwgNzc4MywgNzc4NSwgNzc4NywgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgCisgICAgNzgwMywgNzgwNSwgNzgwNywgNzgwOSwgNzgxMSwgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgCisgICAgNzgyNywgNzgyOSwgNzgzMSwgNzgzMywgNzgzNSwgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgCisgICAgNzg1MSwgNzg1MywgNzg1NSwgNzg1NywgNzg1OSwgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgCisgICAgNzg3NSwgNzg3NywgNzg3OSwgNzg4MSwgNzg4MywgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgCisgICAgNzg5OSwgNzkwMSwgNzkwMywgNzkwNSwgNzkwNywgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgCisgICAgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzk0MywgNzk0NSwgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgCisgICAgNzk2MSwgNzk2MywgNzk2NSwgNzk2NywgNzk2OSwgNzk3MSwgNzk3MywgNzk3NSwgNzk3NywgNzk3OSwgNzk4MSwgNzk4MywgCisgICAgNzk4NSwgNzk4NywgNzk4OSwgNzk5MiwgNzk5NSwgNzk5OCwgODAwMSwgODAwNCwgODAwNywgODAxMCwgODAxMywgODAxNiwgCisgICAgODAxOSwgODAyMiwgODAyNSwgODAyOCwgODAzMSwgODAzNCwgODAzNywgODA0MCwgODA0MywgODA0NSwgODA0NywgODA0OSwgCisgICAgODA1MSwgODA1NCwgODA1NywgODA2MCwgODA2MywgODA2NiwgODA2OSwgODA3MiwgODA3NSwgODA3OCwgODA4MSwgODA4NCwgCisgICAgODA4NywgODA5MCwgODA5MywgODA5NiwgODA5OSwgODEwMiwgODEwNSwgODEwOCwgODExMSwgODExNCwgODExNywgODEyMCwgCisgICAgODEyMywgODEyNiwgODEyOSwgODEzMiwgODEzNSwgODEzOCwgODE0MSwgODE0NCwgODE0NywgODE1MCwgODE1MywgODE1NiwgCisgICAgODE1OSwgODE2MiwgODE2NSwgODE2OCwgODE3MSwgODE3NCwgODE3NywgODE4MCwgODE4MywgODE4NiwgODE4OSwgODE5MiwgCisgICAgODE5NSwgODE5OCwgODIwMSwgODIwNCwgODIwNywgODIxMCwgODIxMywgODIxNiwgODIxOSwgODIyMiwgODIyNSwgODIyOCwgCisgICAgODIzMSwgODIzNCwgODIzNywgODI0MCwgODI0MywgODI0NiwgODI0OSwgODI1MiwgODI1NSwgODI1OCwgODI2MSwgODI2NCwgCisgICAgODI2NywgODI3MCwgODI3MywgODI3NiwgODI3OSwgODI4MiwgODI4NSwgODI4OCwgODI5MSwgODI5NCwgODI5NywgODMwMCwgCisgICAgODMwMywgODMwNiwgODMwOSwgODMxMiwgODMxNSwgODMxOCwgODMyMSwgODMyNCwgODMyNywgODMzMCwgODMzMywgODMzNywgCisgICAgODM0MSwgODM0NSwgODM0OSwgODM1MywgODM1NywgODM2MCwgODM2MywgODM2NiwgODM2OSwgODM3MiwgODM3NSwgODM3OCwgCisgICAgODM4MSwgODM4NCwgODM4NywgODM5MCwgODM5MywgODM5NiwgODM5OSwgODQwMiwgODQwNSwgODQwOCwgODQxMSwgODQxNCwgCisgICAgODQxNywgODQyMCwgODQyMywgODQyNiwgODQyOSwgODQzMiwgODQzNSwgODQzOCwgODQ0MSwgODQ0NCwgODQ0NywgODQ1MCwgCisgICAgODQ1MywgODQ1NiwgODQ1OSwgODQ2MiwgODQ2NSwgODQ2OCwgODQ3MSwgODQ3NCwgODQ3NywgODQ4MCwgODQ4MywgODQ4NiwgCisgICAgODQ4OSwgODQ5MiwgODQ5NSwgODQ5OCwgODUwMSwgODUwNCwgODUwNywgODUxMCwgODUxMywgODUxNiwgODUxOSwgODUyMiwgCisgICAgODUyNSwgODUyOCwgODUzMSwgODUzNCwgODUzNywgODU0MCwgODU0MywgODU0NiwgODU0OSwgODU1MiwgODU1NSwgODU1OCwgCisgICAgODU2MSwgODU2NCwgODU2NywgODU3MCwgODU3MywgODU3NiwgODU3OSwgODU4MiwgODU4NSwgODU4OCwgODU5MSwgODU5NCwgCisgICAgODU5NywgODYwMCwgODYwMywgODYwNiwgODYwOSwgODYxMiwgODYxNSwgODYxOCwgODYyMSwgODYyNCwgODYyNywgODYzMCwgCisgICAgODYzMywgODYzNiwgODYzOSwgODY0MiwgODY0NSwgODY0OCwgODY1MSwgODY1NCwgODY1NywgODY2MCwgODY2MywgODY2NiwgCisgICAgODY2OSwgODY3MiwgODY3NSwgODY3OCwgODY4MSwgODY4NCwgODY4NywgODY5MCwgODY5MywgODY5NiwgODY5OSwgODcwMiwgCisgICAgODcwNSwgODcwOCwgODcxMSwgODcxNCwgODcxNywgODcyMCwgODcyMywgODcyNiwgODcyOSwgODczMiwgODczNSwgODczOCwgCisgICAgODc0MSwgODc0NCwgODc0NywgODc1MCwgODc1MywgODc1NiwgODc1OSwgODc2MiwgODc2NSwgODc2OCwgODc3MSwgODc3NCwgCisgICAgODc3NywgODc4MCwgODc4MywgODc4NywgODc5MSwgODc5NSwgODc5OCwgODgwMSwgODgwNCwgODgwNywgODgxMCwgODgxMywgCisgICAgODgxNiwgODgxOSwgODgyMiwgODgyNSwgODgyOCwgODgzMSwgODgzNCwgODgzNywgODg0MCwgODg0MywgODg0NiwgODg0OSwgCisgICAgODg1MiwgODg1NSwgODg1OCwgODg2MSwgODg2NCwgODg2NywgODg3MCwgODg3MywgODg3NiwgODg3OSwgODg4MiwgODg4NSwgCisgICAgODg4OCwgODg5MSwgODg5NCwgODg5NywgODkwMCwgODkwMywgODkwNiwgODkwOSwgODkxMiwgODkxNSwgODkxOCwgODkyMSwgCisgICAgODkyNCwgODkyNywgODkzMCwgODkzMywgODkzNiwgODkzOSwgODk0MiwgODk0NSwgODk0OCwgODk1MSwgODk1NCwgODk1NywgCisgICAgODk2MCwgODk2MywgODk2NiwgODk2OSwgODk3MiwgODk3NSwgODk3OCwgODk4MSwgODk4NCwgODk4NywgODk5MCwgODk5MywgCisgICAgODk5NiwgODk5OSwgOTAwMiwgOTAwNSwgOTAwOCwgOTAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgOTAzNCwgOTAzOCwgOTA0MiwgOTA0NiwgCisgICAgOTA1MCwgOTA1NCwgOTA1OCwgOTA2MiwgOTA2NiwgOTA3MCwgOTA3NCwgOTA3OCwgOTA4MiwgOTA4NiwgOTA5MCwgOTA5NCwgCisgICAgOTA5OCwgOTEwMiwgOTEwNiwgOTExMCwgOTExNCwgOTExOCwgOTEyMiwgOTEyNiwgOTEzMCwgOTEzNCwgOTEzOCwgOTE0MiwgCisgICAgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgOTE3OCwgOTE4MiwgOTE4NiwgOTE5MCwgCisgICAgOTE5NCwgOTE5OCwgOTIwMiwgOTIwNiwgOTIxMCwgOTIxNCwgOTIxOCwgOTIyMiwgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgCisgICAgOTI0MiwgOTI0NiwgOTI1MCwgOTI1NCwgOTI1OCwgOTI2MiwgOTI2NiwgMCwgMCwgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgCisgICAgOTI4NiwgOTI5MCwgOTI5NCwgOTI5OCwgOTMwMiwgOTMwNiwgOTMxMCwgOTMxNCwgOTMxOCwgOTMyMiwgOTMyNiwgOTMzMCwgCisgICAgOTMzNCwgOTMzOCwgOTM0MiwgOTM0NiwgOTM1MCwgOTM1NCwgOTM1OCwgOTM2MiwgOTM2NiwgOTM3MCwgOTM3NCwgOTM3OCwgCisgICAgOTM4MiwgOTM4NiwgOTM5MCwgOTM5NCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgOTQxNCwgOTQxOCwgOTQyMiwgOTQyNiwgCisgICAgOTQzMCwgOTQzNCwgOTQzOCwgOTQ0MiwgOTQ0NiwgOTQ1MCwgOTQ1NCwgOTQ1OCwgOTQ2MiwgOTQ2NiwgOTQ3MCwgOTQ3NCwgCisgICAgOTQ3OCwgOTQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ4NiwgOTQ5MCwgCisgICAgOTQ5NCwgOTQ5OSwgOTUwNCwgOTUwOSwgOTUxNCwgOTUxOSwgOTUyNCwgOTUyOSwgOTUzMywgOTU1MiwgOTU2MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2NiwgOTU2OCwgOTU3MCwgCisgICAgOTU3MiwgOTU3NCwgOTU3NiwgOTU3OCwgOTU4MCwgOTU4MiwgOTU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgCisgICAgOTU5OCwgOTYwMCwgOTYwMiwgOTYwNCwgOTYwNiwgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgOTYxNiwgOTYxOCwgOTYyMCwgCisgICAgOTYyMiwgOTYyNCwgOTYyNiwgMCwgMCwgOTYyOCwgOTYzMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgOTY0MCwgOTY0MiwgCisgICAgOTY0NCwgOTY0NiwgOTY0OCwgOTY1MCwgMCwgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgCisgICAgOTY2NiwgOTY2OCwgOTY3MCwgOTY3MiwgOTY3NCwgOTY3NiwgOTY3OCwgOTY4MCwgOTY4MiwgOTY4NCwgOTY4NiwgOTY4OCwgCisgICAgMCwgOTY5MCwgOTY5MiwgOTY5NCwgOTY5NiwgMCwgMCwgMCwgMCwgOTY5OCwgOTcwMSwgOTcwNCwgMCwgOTcwNywgMCwgCisgICAgOTcxMCwgOTcxMywgOTcxNiwgOTcxOSwgOTcyMiwgOTcyNSwgOTcyOCwgOTczMSwgOTczNCwgOTczNywgOTc0MCwgOTc0MiwgCisgICAgOTc0NCwgOTc0NiwgOTc0OCwgOTc1MCwgOTc1MiwgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgCisgICAgOTc2OCwgOTc3MCwgOTc3MiwgOTc3NCwgOTc3NiwgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgCisgICAgOTc5MiwgOTc5NCwgOTc5NiwgOTc5OCwgOTgwMCwgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgCisgICAgOTgxNiwgOTgxOCwgOTgyMCwgOTgyMiwgOTgyNCwgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgCisgICAgOTg0MCwgOTg0MiwgOTg0NCwgOTg0NiwgOTg0OCwgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgCisgICAgOTg2NCwgOTg2NiwgOTg2OCwgOTg3MCwgOTg3MiwgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgCisgICAgOTg4OCwgOTg5MCwgOTg5MiwgOTg5NCwgOTg5NiwgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgCisgICAgOTkxMiwgOTkxNCwgOTkxNiwgOTkxOCwgOTkyMCwgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgCisgICAgOTkzNiwgOTkzOCwgOTk0MCwgOTk0MiwgOTk0NCwgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NiwgOTk1OCwgCisgICAgOTk2MCwgOTk2MiwgOTk2NCwgOTk2NiwgOTk2OCwgOTk3MCwgOTk3MiwgOTk3NCwgOTk3NywgOTk4MCwgOTk4MywgOTk4NiwgCisgICAgOTk4OSwgOTk5MiwgOTk5NSwgMCwgMCwgMCwgMCwgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAKKyAgICAxMDAxMCwgMTAwMTIsIDEwMDE0LCAxMDAxNiwgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgCisgICAgMTAwMzAsIDEwMDMyLCAxMDAzNCwgMTAwMzYsIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIAorICAgIDEwMDUwLCAxMDA1MiwgMTAwNTQsIDEwMDU2LCAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAKKyAgICAxMDA3MCwgMTAwNzIsIDEwMDc0LCAxMDA3NiwgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgCisgICAgMTAwOTAsIDEwMDkyLCAxMDA5NCwgMTAwOTYsIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIAorICAgIDEwMTEwLCAxMDExMiwgMTAxMTQsIDEwMTE2LCAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAKKyAgICAxMDEzMCwgMTAxMzIsIDEwMTM0LCAxMDEzNiwgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgCisgICAgMTAxNTAsIDEwMTUyLCAxMDE1NCwgMTAxNTYsIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIAorICAgIDEwMTcwLCAxMDE3MiwgMTAxNzQsIDEwMTc2LCAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAKKyAgICAxMDE5MCwgMTAxOTIsIDEwMTk0LCAxMDE5NiwgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgCisgICAgMTAyMTAsIDEwMjEyLCAxMDIxNCwgMTAyMTYsIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIAorICAgIDEwMjMwLCAxMDIzMiwgMTAyMzQsIDEwMjM2LCAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAKKyAgICAxMDI1MCwgMTAyNTIsIDEwMjU0LCAxMDI1NiwgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgCisgICAgMTAyNzAsIDEwMjcyLCAxMDI3NCwgMTAyNzYsIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIAorICAgIDEwMjkwLCAxMDI5MiwgMTAyOTQsIDEwMjk2LCAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAKKyAgICAxMDMxMCwgMTAzMTIsIDEwMzE0LCAxMDMxNiwgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgCisgICAgMTAzMzAsIDEwMzMyLCAxMDMzNCwgMTAzMzYsIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIAorICAgIDEwMzUwLCAxMDM1MiwgMTAzNTQsIDEwMzU2LCAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMTAzNjYsIDEwMzY4LCAKKyAgICAxMDM3MCwgMTAzNzIsIDEwMzc0LCAxMDM3NiwgMCwgMCwgMCwgMTAzNzgsIDEwMzgwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAKKyAgICAxMDM4OCwgMCwgMCwgMTAzOTAsIDEwMzkyLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAxMDQwMCwgMCwgMCwgMTA0MDIsIAorICAgIDEwNDA0LCAxMDQwNiwgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMCwgMCwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMCwgMCwgMCwgCisgICAgMTA0MjAsIDEwNDIyLCAxMDQyNCwgMTA0MjYsIDEwNDI4LCAxMDQzMCwgMTA0MzIsIDAsIDEwNDM0LCAxMDQzNiwgMTA0MzgsIAorICAgIDEwNDQwLCAxMDQ0MiwgMTA0NDQsIDEwNDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjc2NCwgMTI3NjcsIDEyNzcwLCAxMjc3MywgMTI3NzYsIDEyNzc5LCAxMjc4MiwgMTI3ODUsIAotICAgIDEyNzg4LCAxMjc5MSwgMTI3OTQsIDAsIDAsIDAsIDAsIDAsIDEyNzk3LCAxMjgwMSwgMTI4MDUsIDEyODA5LCAxMjgxMywgCi0gICAgMTI4MTcsIDEyODIxLCAxMjgyNSwgMTI4MjksIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIAotICAgIDEyODU3LCAxMjg2MSwgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAKLSAgICAxMjg5NywgMTI5MDEsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTEyLCAwLCAxMjkxNSwgMTI5MTcsIDEyOTE5LCAxMjkyMSwgCi0gICAgMTI5MjMsIDEyOTI1LCAxMjkyNywgMTI5MjksIDEyOTMxLCAxMjkzMywgMTI5MzUsIDEyOTM3LCAxMjkzOSwgMTI5NDEsIAotICAgIDEyOTQzLCAxMjk0NSwgMTI5NDcsIDEyOTQ5LCAxMjk1MSwgMTI5NTMsIDEyOTU1LCAxMjk1NywgMTI5NTksIDEyOTYxLCAKLSAgICAxMjk2MywgMTI5NjUsIDEyOTY3LCAxMjk3MCwgMTI5NzMsIDEyOTc2LCAxMjk3OSwgMTI5ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2LCAxMjk4OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNDQ4LCAwLCAxMDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyOTk1LCAxMjk5OCwgMTMwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEzMDAzLCAxMzAwNSwgMTMwMDcsIDEzMDA5LCAxMzAxMSwgMTMwMTMsIDEzMDE1LCAxMzAxNywgMTMwMTksIDEzMDIxLCAKLSAgICAxMzAyMywgMTMwMjUsIDEzMDI3LCAxMzAyOSwgMTMwMzEsIDEzMDMzLCAxMzAzNSwgMTMwMzcsIDEzMDM5LCAxMzA0MSwgCi0gICAgMTMwNDMsIDEzMDQ1LCAxMzA0NywgMTMwNDksIDEzMDUxLCAxMzA1MywgMTMwNTUsIDEzMDU3LCAxMzA1OSwgMTMwNjEsIAotICAgIDEzMDYzLCAxMzA2NSwgMTMwNjcsIDEzMDY5LCAxMzA3MSwgMTMwNzMsIDEzMDc1LCAxMzA3NywgMTMwNzksIDEzMDgxLCAKLSAgICAxMzA4MywgMTMwODUsIDEzMDg3LCAwLCAwLCAwLCAwLCAwLCAxMzA4OSwgMTMwOTMsIDEzMDk3LCAxMzEwMSwgMTMxMDUsIAotICAgIDEzMTA5LCAxMzExMywgMTMxMTcsIDEzMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEyNSwgMTMxMjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDU3LCAxMDQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA0NjMsIDEwNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzEyOSwgMTMxMzEsIDEzMTMzLCAxMzEzNSwgMTMxMzcsIDEzMTM5LCAxMzE0MSwgMTMxNDMsIDEzMTQ1LCAKLSAgICAxMzE0NywgMTMxNDksIDEzMTUxLCAxMzE1MywgMTMxNTUsIDEzMTU3LCAxMzE1OSwgMTMxNjEsIDEzMTYzLCAxMzE2NSwgCi0gICAgMTMxNjcsIDEzMTY5LCAxMzE3MSwgMTMxNzMsIDEzMTc1LCAxMzE3NywgMTMxNzksIDEzMTgxLCAxMzE4MywgMTMxODUsIAotICAgIDEzMTg3LCAxMzE4OSwgMTMxOTEsIDEzMTkzLCAxMzE5NSwgMTMxOTcsIDEzMTk5LCAxMzIwMSwgMTMyMDMsIDEzMjA1LCAKLSAgICAxMzIwNywgMTMyMDksIDEzMjExLCAxMzIxMywgMTMyMTUsIDEzMjE3LCAxMzIxOSwgMTMyMjEsIDEzMjIzLCAxMzIyNSwgCi0gICAgMTMyMjcsIDEzMjI5LCAxMzIzMSwgMTMyMzMsIDEzMjM1LCAxMzIzNywgMTMyMzksIDEzMjQxLCAxMzI0MywgMTMyNDUsIAotICAgIDEzMjQ3LCAxMzI0OSwgMTMyNTEsIDEzMjUzLCAxMzI1NSwgMTMyNTcsIDEzMjU5LCAxMzI2MSwgMTMyNjMsIDEzMjY1LCAKLSAgICAxMzI2NywgMTMyNjksIDEzMjcxLCAxMzI3MywgMTMyNzUsIDEzMjc3LCAxMzI3OSwgMTMyODEsIDEzMjgzLCAxMzI4NSwgCi0gICAgMTMyODcsIDEzMjg5LCAxMzI5MSwgMTMyOTMsIDEzMjk1LCAxMzI5NywgMTMyOTksIDEzMzAxLCAxMzMwMywgMTMzMDUsIAotICAgIDEzMzA3LCAxMzMwOSwgMTMzMTEsIDEzMzEzLCAxMzMxNSwgMTMzMTcsIDEzMzE5LCAxMzMyMSwgMTMzMjMsIDEzMzI1LCAKLSAgICAxMzMyNywgMTMzMjksIDEzMzMxLCAxMzMzMywgMTMzMzUsIDEzMzM3LCAxMzMzOSwgMTMzNDEsIDEzMzQzLCAxMzM0NSwgCi0gICAgMTMzNDcsIDEzMzQ5LCAxMzM1MSwgMTMzNTMsIDEzMzU1LCAxMzM1NywgMTMzNTksIDEzMzYxLCAxMzM2MywgMTMzNjUsIAotICAgIDEzMzY3LCAxMzM2OSwgMTMzNzEsIDEzMzczLCAxMzM3NSwgMTMzNzcsIDEzMzc5LCAxMzM4MSwgMTMzODMsIDEzMzg1LCAKLSAgICAxMzM4NywgMTMzODksIDEzMzkxLCAxMzM5MywgMTMzOTUsIDEzMzk3LCAxMzM5OSwgMTM0MDEsIDEzNDAzLCAxMzQwNSwgCi0gICAgMTM0MDcsIDEzNDA5LCAxMzQxMSwgMTM0MTMsIDEzNDE1LCAxMzQxNywgMTM0MTksIDEzNDIxLCAxMzQyMywgMTM0MjUsIAotICAgIDEzNDI3LCAxMzQyOSwgMTM0MzEsIDEzNDMzLCAxMzQzNSwgMTM0MzcsIDEzNDM5LCAxMzQ0MSwgMTM0NDMsIDEzNDQ1LCAKLSAgICAxMzQ0NywgMTM0NDksIDEzNDUxLCAxMzQ1MywgMTM0NTUsIDEzNDU3LCAxMzQ1OSwgMTM0NjEsIDEzNDYzLCAxMzQ2NSwgCi0gICAgMTM0NjcsIDEzNDY5LCAxMzQ3MSwgMTM0NzMsIDEzNDc1LCAxMzQ3NywgMTM0NzksIDEzNDgxLCAxMzQ4MywgMTM0ODUsIAotICAgIDEzNDg3LCAxMzQ4OSwgMTM0OTEsIDEzNDkzLCAxMzQ5NSwgMTM0OTcsIDEzNDk5LCAxMzUwMSwgMTM1MDMsIDEzNTA1LCAKLSAgICAxMzUwNywgMTM1MDksIDEzNTExLCAxMzUxMywgMTM1MTUsIDEzNTE3LCAxMzUxOSwgMTM1MjEsIDEzNTIzLCAxMzUyNSwgCi0gICAgMTM1MjcsIDEzNTI5LCAxMzUzMSwgMTM1MzMsIDEzNTM1LCAxMzUzNywgMTM1MzksIDEzNTQxLCAxMzU0MywgMTM1NDUsIAotICAgIDEzNTQ3LCAxMzU0OSwgMTM1NTEsIDEzNTUzLCAxMzU1NSwgMTM1NTcsIDEzNTU5LCAxMzU2MSwgMTM1NjMsIDEzNTY1LCAKLSAgICAxMzU2NywgMTM1NjksIDEzNTcxLCAxMzU3MywgMTM1NzUsIDEzNTc3LCAxMzU3OSwgMTM1ODEsIDEzNTgzLCAxMzU4NSwgCi0gICAgMTM1ODcsIDEzNTg5LCAxMzU5MSwgMTM1OTMsIDEzNTk1LCAxMzU5NywgMTM1OTksIDEzNjAxLCAxMzYwMywgMTM2MDUsIAotICAgIDEzNjA3LCAxMzYwOSwgMTM2MTEsIDEzNjEzLCAxMzYxNSwgMTM2MTcsIDEzNjE5LCAxMzYyMSwgMTM2MjMsIDEzNjI1LCAKLSAgICAxMzYyNywgMTM2MjksIDEzNjMxLCAxMzYzMywgMTM2MzUsIDEzNjM3LCAxMzYzOSwgMTM2NDEsIDEzNjQzLCAxMzY0NSwgCi0gICAgMTM2NDcsIDEzNjQ5LCAxMzY1MSwgMTM2NTMsIDEzNjU1LCAxMzY1NywgMTM2NTksIDEzNjYxLCAxMzY2MywgMTM2NjUsIAotICAgIDEzNjY3LCAxMzY2OSwgMTM2NzEsIDEzNjczLCAxMzY3NSwgMTM2NzcsIDEzNjc5LCAxMzY4MSwgMTM2ODMsIDEzNjg1LCAKLSAgICAxMzY4NywgMTM2ODksIDEzNjkxLCAxMzY5MywgMTM2OTUsIDEzNjk3LCAxMzY5OSwgMTM3MDEsIDEzNzAzLCAxMzcwNSwgCi0gICAgMTM3MDcsIDEzNzA5LCAxMzcxMSwgMTM3MTMsIDEzNzE1LCAxMzcxNywgMTM3MTksIDEzNzIxLCAxMzcyMywgMTM3MjUsIAotICAgIDEzNzI3LCAxMzcyOSwgMTM3MzEsIDEzNzMzLCAxMzczNSwgMTM3MzcsIDEzNzM5LCAxMzc0MSwgMTM3NDMsIDEzNzQ1LCAKLSAgICAxMzc0NywgMTM3NDksIDEzNzUxLCAxMzc1MywgMTM3NTUsIDEzNzU3LCAxMzc1OSwgMTM3NjEsIDEzNzYzLCAxMzc2NSwgCi0gICAgMTM3NjcsIDEzNzY5LCAxMzc3MSwgMTM3NzMsIDEzNzc1LCAxMzc3NywgMTM3NzksIDEzNzgxLCAxMzc4MywgMTM3ODUsIAotICAgIDEzNzg3LCAxMzc4OSwgMTM3OTEsIDEzNzkzLCAxMzc5NSwgMTM3OTcsIDEzNzk5LCAxMzgwMSwgMTM4MDMsIDEzODA1LCAKLSAgICAxMzgwNywgMTM4MDksIDEzODExLCAxMzgxMywgMTM4MTUsIDEzODE3LCAxMzgxOSwgMTM4MjEsIDEzODIzLCAxMzgyNSwgCi0gICAgMTM4MjcsIDEzODI5LCAxMzgzMSwgMTM4MzMsIDEzODM1LCAxMzgzNywgMTM4MzksIDEzODQxLCAxMzg0MywgMTM4NDUsIAotICAgIDEzODQ3LCAxMzg0OSwgMTM4NTEsIDEzODUzLCAxMzg1NSwgMTM4NTcsIDEzODU5LCAxMzg2MSwgMTM4NjMsIDEzODY1LCAKLSAgICAxMzg2NywgMTM4NjksIDEzODcxLCAxMzg3MywgMTM4NzUsIDEzODc3LCAxMzg3OSwgMTM4ODEsIDEzODgzLCAxMzg4NSwgCi0gICAgMTM4ODcsIDEzODg5LCAxMzg5MSwgMTM4OTMsIDEzODk1LCAxMzg5NywgMTM4OTksIDEzOTAxLCAxMzkwMywgMTM5MDUsIAotICAgIDEzOTA3LCAxMzkwOSwgMTM5MTEsIDEzOTEzLCAxMzkxNSwgMTM5MTcsIDEzOTE5LCAxMzkyMSwgMTM5MjMsIDEzOTI1LCAKLSAgICAxMzkyNywgMTM5MjksIDEzOTMxLCAxMzkzMywgMTM5MzUsIDEzOTM3LCAxMzkzOSwgMTM5NDEsIDEzOTQzLCAxMzk0NSwgCi0gICAgMTM5NDcsIDEzOTQ5LCAxMzk1MSwgMTM5NTMsIDEzOTU1LCAxMzk1NywgMTM5NTksIDEzOTYxLCAxMzk2MywgMTM5NjUsIAotICAgIDEzOTY3LCAxMzk2OSwgMTM5NzEsIDEzOTczLCAxMzk3NSwgMTM5NzcsIDEzOTc5LCAxMzk4MSwgMTM5ODMsIDEzOTg1LCAKLSAgICAxMzk4NywgMTM5ODksIDEzOTkxLCAxMzk5MywgMTM5OTUsIDEzOTk3LCAxMzk5OSwgMTQwMDEsIDE0MDAzLCAxNDAwNSwgCi0gICAgMTQwMDcsIDE0MDA5LCAxNDAxMSwgMTQwMTMsIDE0MDE1LCAxNDAxNywgMTQwMTksIDE0MDIxLCAxNDAyMywgMTQwMjUsIAotICAgIDE0MDI3LCAxNDAyOSwgMTQwMzEsIDE0MDMzLCAxNDAzNSwgMTQwMzcsIDE0MDM5LCAxNDA0MSwgMTQwNDMsIDE0MDQ1LCAKLSAgICAxNDA0NywgMTQwNDksIDE0MDUxLCAxNDA1MywgMTQwNTUsIDE0MDU3LCAxNDA1OSwgMTQwNjEsIDE0MDYzLCAxNDA2NSwgCi0gICAgMTQwNjcsIDE0MDY5LCAxNDA3MSwgMTQwNzMsIDE0MDc1LCAxNDA3NywgMTQwNzksIDE0MDgxLCAxNDA4MywgMTQwODUsIAotICAgIDE0MDg3LCAxNDA4OSwgMTQwOTEsIDE0MDkzLCAxNDA5NSwgMTQwOTcsIDE0MDk5LCAxNDEwMSwgMTQxMDMsIDE0MTA1LCAKLSAgICAxNDEwNywgMTQxMDksIDE0MTExLCAxNDExMywgMTQxMTUsIDE0MTE3LCAxNDExOSwgMTQxMjEsIDE0MTIzLCAxNDEyNSwgCi0gICAgMTQxMjcsIDE0MTI5LCAxNDEzMSwgMTQxMzMsIDE0MTM1LCAxNDEzNywgMTQxMzksIDE0MTQxLCAxNDE0MywgMTQxNDUsIAotICAgIDE0MTQ3LCAxNDE0OSwgMTQxNTEsIDE0MTUzLCAxNDE1NSwgMTQxNTcsIDE0MTU5LCAxNDE2MSwgMTQxNjMsIDE0MTY1LCAKLSAgICAxNDE2NywgMTQxNjksIDE0MTcxLCAxNDE3MywgMTQxNzUsIDE0MTc3LCAxNDE3OSwgMTQxODEsIDE0MTgzLCAxNDE4NSwgCi0gICAgMTQxODcsIDE0MTg5LCAxNDE5MSwgMTQxOTMsIDE0MTk1LCAxNDE5NywgMTQxOTksIDE0MjAxLCAxNDIwMywgMTQyMDUsIAotICAgIDE0MjA3LCAxNDIwOSwgMTQyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDY5LCAKKyAgICAxMDQ3MiwgMCwgMTA0NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDc4LCAxMDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA0ODQsIDEwNDg3LCAxMDQ5MCwgMTA0OTMsIDEwNDk2LCAxMDQ5OSwgMTA1MDIsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTA1LCAxMDUwOCwgMTA1MTEsIDEwNTE0LCAxMDUxNywgCisgICAgMTA1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTIzLCAxMDUyNSwgMTA1MjcsIAorICAgIDEwNTI5LCAxMDUzMSwgMTA1MzMsIDEwNTM1LCAxMDUzNywgMTA1MzksIDEwNTQxLCAxMDU0MywgMTA1NDUsIDEwNTQ3LCAKKyAgICAxMDU0OSwgMTA1NTEsIDEwNTUzLCAxMDU1NSwgMTA1NTcsIDEwNTU5LCAxMDU2MSwgMTA1NjMsIDEwNTY1LCAxMDU2NywgCisgICAgMTA1NjksIDEwNTcxLCAxMDU3MywgMTA1NzUsIDEwNTc3LCAxMDU3OSwgMTA1ODEsIDEwNTgzLCAxMDU4NSwgMTA1ODcsIAorICAgIDEwNTg5LCAxMDU5MSwgMTA1OTMsIDEwNTk1LCAxMDU5NywgMTA1OTksIDEwNjAxLCAxMDYwMywgMTA2MDUsIDEwNjA3LCAKKyAgICAxMDYwOSwgMTA2MTEsIDEwNjEzLCAxMDYxNSwgMTA2MTcsIDEwNjE5LCAxMDYyMSwgMTA2MjMsIDEwNjI1LCAxMDYyNywgCisgICAgMTA2MjksIDEwNjMxLCAxMDYzMywgMTA2MzUsIDEwNjM3LCAxMDYzOSwgMTA2NDEsIDEwNjQzLCAxMDY0NSwgMTA2NDcsIAorICAgIDEwNjQ5LCAxMDY1MSwgMTA2NTMsIDEwNjU1LCAxMDY1NywgMTA2NTksIDEwNjYxLCAxMDY2MywgMTA2NjUsIDEwNjY3LCAKKyAgICAxMDY2OSwgMTA2NzEsIDEwNjczLCAxMDY3NSwgMTA2NzcsIDEwNjc5LCAxMDY4MSwgMTA2ODMsIDEwNjg1LCAxMDY4NywgCisgICAgMTA2ODksIDEwNjkxLCAwLCAxMDY5MywgMTA2OTUsIDEwNjk3LCAxMDY5OSwgMTA3MDEsIDEwNzAzLCAxMDcwNSwgMTA3MDcsIAorICAgIDEwNzA5LCAxMDcxMSwgMTA3MTMsIDEwNzE1LCAxMDcxNywgMTA3MTksIDEwNzIxLCAxMDcyMywgMTA3MjUsIDEwNzI3LCAKKyAgICAxMDcyOSwgMTA3MzEsIDEwNzMzLCAxMDczNSwgMTA3MzcsIDEwNzM5LCAxMDc0MSwgMTA3NDMsIDEwNzQ1LCAxMDc0NywgCisgICAgMTA3NDksIDEwNzUxLCAxMDc1MywgMTA3NTUsIDEwNzU3LCAxMDc1OSwgMTA3NjEsIDEwNzYzLCAxMDc2NSwgMTA3NjcsIAorICAgIDEwNzY5LCAxMDc3MSwgMTA3NzMsIDEwNzc1LCAxMDc3NywgMTA3NzksIDEwNzgxLCAxMDc4MywgMTA3ODUsIDEwNzg3LCAKKyAgICAxMDc4OSwgMTA3OTEsIDEwNzkzLCAxMDc5NSwgMTA3OTcsIDEwNzk5LCAxMDgwMSwgMTA4MDMsIDEwODA1LCAxMDgwNywgCisgICAgMTA4MDksIDEwODExLCAxMDgxMywgMTA4MTUsIDEwODE3LCAxMDgxOSwgMTA4MjEsIDEwODIzLCAxMDgyNSwgMTA4MjcsIAorICAgIDEwODI5LCAxMDgzMSwgMTA4MzMsIDAsIDEwODM1LCAxMDgzNywgMCwgMCwgMTA4MzksIDAsIDAsIDEwODQxLCAxMDg0MywgMCwgCisgICAgMCwgMTA4NDUsIDEwODQ3LCAxMDg0OSwgMTA4NTEsIDAsIDEwODUzLCAxMDg1NSwgMTA4NTcsIDEwODU5LCAxMDg2MSwgCisgICAgMTA4NjMsIDEwODY1LCAxMDg2NywgMTA4NjksIDEwODcxLCAxMDg3MywgMTA4NzUsIDAsIDEwODc3LCAwLCAxMDg3OSwgCisgICAgMTA4ODEsIDEwODgzLCAxMDg4NSwgMTA4ODcsIDEwODg5LCAxMDg5MSwgMCwgMTA4OTMsIDEwODk1LCAxMDg5NywgMTA4OTksIAorICAgIDEwOTAxLCAxMDkwMywgMTA5MDUsIDEwOTA3LCAxMDkwOSwgMTA5MTEsIDEwOTEzLCAxMDkxNSwgMTA5MTcsIDEwOTE5LCAKKyAgICAxMDkyMSwgMTA5MjMsIDEwOTI1LCAxMDkyNywgMTA5MjksIDEwOTMxLCAxMDkzMywgMTA5MzUsIDEwOTM3LCAxMDkzOSwgCisgICAgMTA5NDEsIDEwOTQzLCAxMDk0NSwgMTA5NDcsIDEwOTQ5LCAxMDk1MSwgMTA5NTMsIDEwOTU1LCAxMDk1NywgMTA5NTksIAorICAgIDEwOTYxLCAxMDk2MywgMTA5NjUsIDEwOTY3LCAxMDk2OSwgMTA5NzEsIDEwOTczLCAxMDk3NSwgMTA5NzcsIDEwOTc5LCAKKyAgICAxMDk4MSwgMTA5ODMsIDEwOTg1LCAxMDk4NywgMTA5ODksIDEwOTkxLCAxMDk5MywgMTA5OTUsIDEwOTk3LCAxMDk5OSwgCisgICAgMTEwMDEsIDExMDAzLCAxMTAwNSwgMTEwMDcsIDExMDA5LCAxMTAxMSwgMTEwMTMsIDExMDE1LCAxMTAxNywgMTEwMTksIAorICAgIDExMDIxLCAwLCAxMTAyMywgMTEwMjUsIDExMDI3LCAxMTAyOSwgMCwgMCwgMTEwMzEsIDExMDMzLCAxMTAzNSwgMTEwMzcsIAorICAgIDExMDM5LCAxMTA0MSwgMTEwNDMsIDExMDQ1LCAwLCAxMTA0NywgMTEwNDksIDExMDUxLCAxMTA1MywgMTEwNTUsIDExMDU3LCAKKyAgICAxMTA1OSwgMCwgMTEwNjEsIDExMDYzLCAxMTA2NSwgMTEwNjcsIDExMDY5LCAxMTA3MSwgMTEwNzMsIDExMDc1LCAxMTA3NywgCisgICAgMTEwNzksIDExMDgxLCAxMTA4MywgMTEwODUsIDExMDg3LCAxMTA4OSwgMTEwOTEsIDExMDkzLCAxMTA5NSwgMTEwOTcsIAorICAgIDExMDk5LCAxMTEwMSwgMTExMDMsIDExMTA1LCAxMTEwNywgMTExMDksIDExMTExLCAxMTExMywgMTExMTUsIDAsIDExMTE3LCAKKyAgICAxMTExOSwgMTExMjEsIDExMTIzLCAwLCAxMTEyNSwgMTExMjcsIDExMTI5LCAxMTEzMSwgMTExMzMsIDAsIDExMTM1LCAwLCAKKyAgICAwLCAwLCAxMTEzNywgMTExMzksIDExMTQxLCAxMTE0MywgMTExNDUsIDExMTQ3LCAxMTE0OSwgMCwgMTExNTEsIDExMTUzLCAKKyAgICAxMTE1NSwgMTExNTcsIDExMTU5LCAxMTE2MSwgMTExNjMsIDExMTY1LCAxMTE2NywgMTExNjksIDExMTcxLCAxMTE3MywgCisgICAgMTExNzUsIDExMTc3LCAxMTE3OSwgMTExODEsIDExMTgzLCAxMTE4NSwgMTExODcsIDExMTg5LCAxMTE5MSwgMTExOTMsIAorICAgIDExMTk1LCAxMTE5NywgMTExOTksIDExMjAxLCAxMTIwMywgMTEyMDUsIDExMjA3LCAxMTIwOSwgMTEyMTEsIDExMjEzLCAKKyAgICAxMTIxNSwgMTEyMTcsIDExMjE5LCAxMTIyMSwgMTEyMjMsIDExMjI1LCAxMTIyNywgMTEyMjksIDExMjMxLCAxMTIzMywgCisgICAgMTEyMzUsIDExMjM3LCAxMTIzOSwgMTEyNDEsIDExMjQzLCAxMTI0NSwgMTEyNDcsIDExMjQ5LCAxMTI1MSwgMTEyNTMsIAorICAgIDExMjU1LCAxMTI1NywgMTEyNTksIDExMjYxLCAxMTI2MywgMTEyNjUsIDExMjY3LCAxMTI2OSwgMTEyNzEsIDExMjczLCAKKyAgICAxMTI3NSwgMTEyNzcsIDExMjc5LCAxMTI4MSwgMTEyODMsIDExMjg1LCAxMTI4NywgMTEyODksIDExMjkxLCAxMTI5MywgCisgICAgMTEyOTUsIDExMjk3LCAxMTI5OSwgMTEzMDEsIDExMzAzLCAxMTMwNSwgMTEzMDcsIDExMzA5LCAxMTMxMSwgMTEzMTMsIAorICAgIDExMzE1LCAxMTMxNywgMTEzMTksIDExMzIxLCAxMTMyMywgMTEzMjUsIDExMzI3LCAxMTMyOSwgMTEzMzEsIDExMzMzLCAKKyAgICAxMTMzNSwgMTEzMzcsIDExMzM5LCAxMTM0MSwgMTEzNDMsIDExMzQ1LCAxMTM0NywgMTEzNDksIDExMzUxLCAxMTM1MywgCisgICAgMTEzNTUsIDExMzU3LCAxMTM1OSwgMTEzNjEsIDExMzYzLCAxMTM2NSwgMTEzNjcsIDExMzY5LCAxMTM3MSwgMTEzNzMsIAorICAgIDExMzc1LCAxMTM3NywgMTEzNzksIDExMzgxLCAxMTM4MywgMTEzODUsIDExMzg3LCAxMTM4OSwgMTEzOTEsIDExMzkzLCAKKyAgICAxMTM5NSwgMTEzOTcsIDExMzk5LCAxMTQwMSwgMTE0MDMsIDExNDA1LCAxMTQwNywgMTE0MDksIDExNDExLCAxMTQxMywgCisgICAgMTE0MTUsIDExNDE3LCAxMTQxOSwgMTE0MjEsIDExNDIzLCAxMTQyNSwgMTE0MjcsIDExNDI5LCAxMTQzMSwgMTE0MzMsIAorICAgIDExNDM1LCAxMTQzNywgMTE0MzksIDExNDQxLCAxMTQ0MywgMTE0NDUsIDExNDQ3LCAxMTQ0OSwgMTE0NTEsIDExNDUzLCAKKyAgICAxMTQ1NSwgMTE0NTcsIDExNDU5LCAxMTQ2MSwgMTE0NjMsIDExNDY1LCAxMTQ2NywgMTE0NjksIDExNDcxLCAxMTQ3MywgCisgICAgMTE0NzUsIDExNDc3LCAxMTQ3OSwgMTE0ODEsIDExNDgzLCAxMTQ4NSwgMTE0ODcsIDExNDg5LCAxMTQ5MSwgMTE0OTMsIAorICAgIDExNDk1LCAxMTQ5NywgMTE0OTksIDExNTAxLCAxMTUwMywgMTE1MDUsIDExNTA3LCAxMTUwOSwgMTE1MTEsIDExNTEzLCAKKyAgICAxMTUxNSwgMTE1MTcsIDExNTE5LCAxMTUyMSwgMTE1MjMsIDExNTI1LCAxMTUyNywgMTE1MjksIDExNTMxLCAxMTUzMywgCisgICAgMTE1MzUsIDExNTM3LCAxMTUzOSwgMTE1NDEsIDExNTQzLCAxMTU0NSwgMTE1NDcsIDExNTQ5LCAxMTU1MSwgMTE1NTMsIAorICAgIDExNTU1LCAxMTU1NywgMTE1NTksIDExNTYxLCAxMTU2MywgMTE1NjUsIDExNTY3LCAxMTU2OSwgMTE1NzEsIDExNTczLCAKKyAgICAxMTU3NSwgMTE1NzcsIDExNTc5LCAxMTU4MSwgMTE1ODMsIDExNTg1LCAxMTU4NywgMTE1ODksIDExNTkxLCAxMTU5MywgCisgICAgMTE1OTUsIDExNTk3LCAxMTU5OSwgMTE2MDEsIDExNjAzLCAxMTYwNSwgMTE2MDcsIDExNjA5LCAxMTYxMSwgMTE2MTMsIAorICAgIDExNjE1LCAxMTYxNywgMTE2MTksIDExNjIxLCAxMTYyMywgMTE2MjUsIDExNjI3LCAxMTYyOSwgMTE2MzEsIDExNjMzLCAKKyAgICAxMTYzNSwgMTE2MzcsIDExNjM5LCAxMTY0MSwgMTE2NDMsIDExNjQ1LCAxMTY0NywgMTE2NDksIDExNjUxLCAxMTY1MywgCisgICAgMTE2NTUsIDExNjU3LCAxMTY1OSwgMTE2NjEsIDExNjYzLCAxMTY2NSwgMTE2NjcsIDExNjY5LCAxMTY3MSwgMTE2NzMsIAorICAgIDExNjc1LCAxMTY3NywgMTE2NzksIDExNjgxLCAxMTY4MywgMTE2ODUsIDExNjg3LCAxMTY4OSwgMTE2OTEsIDExNjkzLCAKKyAgICAxMTY5NSwgMTE2OTcsIDExNjk5LCAxMTcwMSwgMTE3MDMsIDExNzA1LCAxMTcwNywgMTE3MDksIDExNzExLCAxMTcxMywgCisgICAgMTE3MTUsIDExNzE3LCAxMTcxOSwgMTE3MjEsIDExNzIzLCAxMTcyNSwgMTE3MjcsIDExNzI5LCAxMTczMSwgMTE3MzMsIAorICAgIDExNzM1LCAxMTczNywgMTE3MzksIDExNzQxLCAxMTc0MywgMTE3NDUsIDExNzQ3LCAxMTc0OSwgMTE3NTEsIDExNzUzLCAKKyAgICAxMTc1NSwgMTE3NTcsIDExNzU5LCAxMTc2MSwgMTE3NjMsIDExNzY1LCAxMTc2NywgMTE3NjksIDExNzcxLCAxMTc3MywgCisgICAgMTE3NzUsIDExNzc3LCAxMTc3OSwgMTE3ODEsIDExNzgzLCAxMTc4NSwgMTE3ODcsIDExNzg5LCAxMTc5MSwgMTE3OTMsIAorICAgIDExNzk1LCAxMTc5NywgMTE3OTksIDExODAxLCAxMTgwMywgMTE4MDUsIDExODA3LCAxMTgwOSwgMTE4MTEsIDExODEzLCAKKyAgICAxMTgxNSwgMTE4MTcsIDExODE5LCAxMTgyMSwgMTE4MjMsIDExODI1LCAxMTgyNywgMTE4MjksIDAsIDAsIDExODMxLCAKKyAgICAxMTgzMywgMTE4MzUsIDExODM3LCAxMTgzOSwgMTE4NDEsIDExODQzLCAxMTg0NSwgMTE4NDcsIDExODQ5LCAxMTg1MSwgCisgICAgMTE4NTMsIDExODU1LCAxMTg1NywgMTE4NTksIDExODYxLCAxMTg2MywgMTE4NjUsIDExODY3LCAxMTg2OSwgMTE4NzEsIAorICAgIDExODczLCAxMTg3NSwgMTE4NzcsIDExODc5LCAxMTg4MSwgMTE4ODMsIDExODg1LCAxMTg4NywgMTE4ODksIDExODkxLCAKKyAgICAxMTg5MywgMTE4OTUsIDExODk3LCAxMTg5OSwgMTE5MDEsIDExOTAzLCAxMTkwNSwgMTE5MDcsIDExOTA5LCAxMTkxMSwgCisgICAgMTE5MTMsIDExOTE1LCAxMTkxNywgMTE5MTksIDExOTIxLCAxMTkyMywgMTE5MjUsIDExOTI3LCAxMTkyOSwgMTE5MzEsIAorICAgIDExOTMzLCAxMTkzNSwgMTE5MzcsIDExOTM5LCAxMTk0MSwgMTE5NDMsIDExOTQ1LCAxMTk0NywgMTE5NDksIDExOTUxLCAKKyAgICAxMTk1MywgMTE5NTUsIDExOTU3LCAxMTk1OSwgMTE5NjEsIDExOTYzLCAxMTk2NSwgMTE5NjcsIDExOTY5LCAxMTk3MSwgCisgICAgMTE5NzMsIDExOTc1LCAxMTk3NywgMTE5NzksIDExOTgxLCAxMTk4MywgMTE5ODUsIDExOTg3LCAxMTk4OSwgMTE5OTEsIAorICAgIDExOTkzLCAxMTk5NSwgMTE5OTcsIDExOTk5LCAxMjAwMSwgMTIwMDMsIDEyMDA1LCAxMjAwNywgMTIwMDksIDEyMDExLCAKKyAgICAxMjAxMywgMTIwMTUsIDEyMDE3LCAxMjAxOSwgMTIwMjEsIDEyMDIzLCAxMjAyNSwgMTIwMjcsIDEyMDI5LCAxMjAzMSwgCisgICAgMTIwMzMsIDEyMDM1LCAxMjAzNywgMTIwMzksIDEyMDQxLCAxMjA0MywgMTIwNDUsIDEyMDQ3LCAxMjA0OSwgMTIwNTEsIAorICAgIDEyMDUzLCAxMjA1NSwgMTIwNTcsIDEyMDU5LCAxMjA2MSwgMTIwNjMsIDEyMDY1LCAxMjA2NywgMTIwNjksIDEyMDcxLCAKKyAgICAxMjA3MywgMTIwNzUsIDEyMDc3LCAxMjA3OSwgMTIwODEsIDEyMDgzLCAxMjA4NSwgMTIwODcsIDEyMDg5LCAxMjA5MSwgCisgICAgMTIwOTMsIDEyMDk1LCAxMjA5NywgMTIwOTksIDEyMTAxLCAxMjEwMywgMTIxMDUsIDEyMTA3LCAxMjEwOSwgMTIxMTEsIAorICAgIDEyMTEzLCAxMjExNSwgMTIxMTcsIDEyMTE5LCAxMjEyMSwgMTIxMjMsIDEyMTI1LCAxMjEyNywgMTIxMjksIDEyMTMxLCAKKyAgICAxMjEzMywgMTIxMzUsIDEyMTM3LCAxMjEzOSwgMTIxNDEsIDEyMTQzLCAxMjE0NSwgMTIxNDcsIDEyMTQ5LCAxMjE1MSwgCisgICAgMTIxNTMsIDEyMTU1LCAxMjE1NywgMTIxNTksIDEyMTYxLCAxMjE2MywgMTIxNjUsIDEyMTY3LCAxMjE2OSwgMTIxNzEsIAorICAgIDEyMTczLCAxMjE3NSwgMTIxNzcsIDEyMTc5LCAxMjE4MSwgMTIxODMsIDEyMTg1LCAxMjE4NywgMTIxODksIDEyMTkxLCAKKyAgICAxMjE5MywgMTIxOTUsIDEyMTk3LCAxMjE5OSwgMTIyMDEsIDEyMjAzLCAxMjIwNSwgMTIyMDcsIDEyMjA5LCAxMjIxMSwgCisgICAgMTIyMTMsIDEyMjE1LCAxMjIxNywgMTIyMTksIDEyMjIxLCAxMjIyMywgMTIyMjUsIDEyMjI3LCAxMjIyOSwgMTIyMzEsIAorICAgIDEyMjMzLCAxMjIzNSwgMTIyMzcsIDEyMjM5LCAxMjI0MSwgMTIyNDMsIDEyMjQ1LCAxMjI0NywgMTIyNDksIDEyMjUxLCAKKyAgICAxMjI1MywgMTIyNTUsIDEyMjU3LCAxMjI1OSwgMTIyNjEsIDEyMjYzLCAxMjI2NSwgMTIyNjcsIDEyMjY5LCAxMjI3MSwgCisgICAgMTIyNzMsIDEyMjc1LCAxMjI3NywgMTIyNzksIDEyMjgxLCAxMjI4MywgMTIyODUsIDEyMjg3LCAxMjI4OSwgMTIyOTEsIAorICAgIDEyMjkzLCAxMjI5NSwgMTIyOTcsIDEyMjk5LCAxMjMwMSwgMTIzMDMsIDEyMzA1LCAxMjMwNywgMTIzMDksIDEyMzExLCAKKyAgICAxMjMxMywgMTIzMTUsIDEyMzE3LCAxMjMxOSwgMTIzMjEsIDEyMzIzLCAxMjMyNSwgMTIzMjcsIDEyMzI5LCAxMjMzMSwgCisgICAgMTIzMzMsIDEyMzM1LCAxMjMzNywgMTIzMzksIDEyMzQxLCAxMjM0MywgMTIzNDUsIDEyMzQ3LCAxMjM0OSwgMTIzNTEsIAorICAgIDEyMzUzLCAxMjM1NSwgMTIzNTcsIDEyMzU5LCAxMjM2MSwgMTIzNjMsIDEyMzY1LCAxMjM2NywgMTIzNjksIDEyMzcxLCAKKyAgICAxMjM3MywgMTIzNzUsIDEyMzc3LCAxMjM3OSwgMTIzODEsIDEyMzgzLCAxMjM4NSwgMTIzODcsIDEyMzg5LCAxMjM5MSwgCisgICAgMTIzOTMsIDEyMzk1LCAxMjM5NywgMTIzOTksIDEyNDAxLCAxMjQwMywgMTI0MDUsIDEyNDA3LCAxMjQwOSwgMTI0MTEsIAorICAgIDEyNDEzLCAwLCAwLCAxMjQxNSwgMTI0MTcsIDEyNDE5LCAxMjQyMSwgMTI0MjMsIDEyNDI1LCAxMjQyNywgMTI0MjksIAorICAgIDEyNDMxLCAxMjQzMywgMTI0MzUsIDEyNDM3LCAxMjQzOSwgMTI0NDEsIDEyNDQzLCAxMjQ0NSwgMTI0NDcsIDEyNDQ5LCAKKyAgICAxMjQ1MSwgMTI0NTMsIDEyNDU1LCAxMjQ1NywgMTI0NTksIDEyNDYxLCAxMjQ2MywgMTI0NjUsIDEyNDY3LCAxMjQ2OSwgCisgICAgMTI0NzEsIDEyNDczLCAxMjQ3NSwgMTI0NzcsIDEyNDc5LCAxMjQ4MSwgMTI0ODMsIDEyNDg1LCAxMjQ4NywgMTI0ODksIAorICAgIDEyNDkxLCAxMjQ5MywgMTI0OTUsIDEyNDk3LCAxMjQ5OSwgMTI1MDEsIDEyNTAzLCAxMjUwNSwgMTI1MDcsIDEyNTA5LCAKKyAgICAxMjUxMSwgMTI1MTMsIDEyNTE1LCAxMjUxNywgMTI1MTksIDEyNTIxLCAwLCAxMjUyMywgMTI1MjUsIDEyNTI3LCAxMjUyOSwgCisgICAgMTI1MzEsIDEyNTMzLCAxMjUzNSwgMTI1MzcsIDEyNTM5LCAxMjU0MSwgMTI1NDMsIDEyNTQ1LCAxMjU0NywgMTI1NDksIAorICAgIDEyNTUxLCAxMjU1MywgMTI1NTUsIDEyNTU3LCAxMjU1OSwgMTI1NjEsIDEyNTYzLCAxMjU2NSwgMTI1NjcsIDEyNTY5LCAKKyAgICAxMjU3MSwgMTI1NzMsIDEyNTc1LCAwLCAxMjU3NywgMTI1NzksIDAsIDEyNTgxLCAwLCAwLCAxMjU4MywgMCwgMTI1ODUsIAorICAgIDEyNTg3LCAxMjU4OSwgMTI1OTEsIDEyNTkzLCAxMjU5NSwgMTI1OTcsIDEyNTk5LCAxMjYwMSwgMTI2MDMsIDAsIDEyNjA1LCAKKyAgICAxMjYwNywgMTI2MDksIDEyNjExLCAwLCAxMjYxMywgMCwgMTI2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjE3LCAwLCAwLCAKKyAgICAwLCAwLCAxMjYxOSwgMCwgMTI2MjEsIDAsIDEyNjIzLCAwLCAxMjYyNSwgMTI2MjcsIDEyNjI5LCAwLCAxMjYzMSwgMTI2MzMsIAorICAgIDAsIDEyNjM1LCAwLCAwLCAxMjYzNywgMCwgMTI2MzksIDAsIDEyNjQxLCAwLCAxMjY0MywgMCwgMTI2NDUsIDAsIDEyNjQ3LCAKKyAgICAxMjY0OSwgMCwgMTI2NTEsIDAsIDAsIDEyNjUzLCAxMjY1NSwgMTI2NTcsIDEyNjU5LCAwLCAxMjY2MSwgMTI2NjMsIAorICAgIDEyNjY1LCAxMjY2NywgMTI2NjksIDEyNjcxLCAxMjY3MywgMCwgMTI2NzUsIDEyNjc3LCAxMjY3OSwgMTI2ODEsIDAsIAorICAgIDEyNjgzLCAxMjY4NSwgMTI2ODcsIDEyNjg5LCAwLCAxMjY5MSwgMCwgMTI2OTMsIDEyNjk1LCAxMjY5NywgMTI2OTksIAorICAgIDEyNzAxLCAxMjcwMywgMTI3MDUsIDEyNzA3LCAxMjcwOSwgMTI3MTEsIDAsIDEyNzEzLCAxMjcxNSwgMTI3MTcsIDEyNzE5LCAKKyAgICAxMjcyMSwgMTI3MjMsIDEyNzI1LCAxMjcyNywgMTI3MjksIDEyNzMxLCAxMjczMywgMTI3MzUsIDEyNzM3LCAxMjczOSwgCisgICAgMTI3NDEsIDEyNzQzLCAxMjc0NSwgMCwgMCwgMCwgMCwgMCwgMTI3NDcsIDEyNzQ5LCAxMjc1MSwgMCwgMTI3NTMsIDEyNzU1LCAKKyAgICAxMjc1NywgMTI3NTksIDEyNzYxLCAwLCAxMjc2MywgMTI3NjUsIDEyNzY3LCAxMjc2OSwgMTI3NzEsIDEyNzczLCAxMjc3NSwgCisgICAgMTI3NzcsIDEyNzc5LCAxMjc4MSwgMTI3ODMsIDEyNzg1LCAxMjc4NywgMTI3ODksIDEyNzkxLCAxMjc5MywgMTI3OTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzk3LCAxMjgwMCwgCisgICAgMTI4MDMsIDEyODA2LCAxMjgwOSwgMTI4MTIsIDEyODE1LCAxMjgxOCwgMTI4MjEsIDEyODI0LCAxMjgyNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMTI4MzAsIDEyODM0LCAxMjgzOCwgMTI4NDIsIDEyODQ2LCAxMjg1MCwgMTI4NTQsIDEyODU4LCAxMjg2MiwgCisgICAgMTI4NjYsIDEyODcwLCAxMjg3NCwgMTI4NzgsIDEyODgyLCAxMjg4NiwgMTI4OTAsIDEyODk0LCAxMjg5OCwgMTI5MDIsIAorICAgIDEyOTA2LCAxMjkxMCwgMTI5MTQsIDEyOTE4LCAxMjkyMiwgMTI5MjYsIDEyOTMwLCAxMjkzNCwgMTI5MzgsIDEyOTQwLCAKKyAgICAxMjk0MiwgMTI5NDUsIDAsIDEyOTQ4LCAxMjk1MCwgMTI5NTIsIDEyOTU0LCAxMjk1NiwgMTI5NTgsIDEyOTYwLCAxMjk2MiwgCisgICAgMTI5NjQsIDEyOTY2LCAxMjk2OCwgMTI5NzAsIDEyOTcyLCAxMjk3NCwgMTI5NzYsIDEyOTc4LCAxMjk4MCwgMTI5ODIsIAorICAgIDEyOTg0LCAxMjk4NiwgMTI5ODgsIDEyOTkwLCAxMjk5MiwgMTI5OTQsIDEyOTk2LCAxMjk5OCwgMTMwMDAsIDEzMDAzLCAKKyAgICAxMzAwNiwgMTMwMDksIDEzMDEyLCAxMzAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwMTksIDEzMDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMzAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwMjgsIDEzMDMxLCAKKyAgICAxMzAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwMzYsIDEzMDM4LCAxMzA0MCwgMTMwNDIsIAorICAgIDEzMDQ0LCAxMzA0NiwgMTMwNDgsIDEzMDUwLCAxMzA1MiwgMTMwNTQsIDEzMDU2LCAxMzA1OCwgMTMwNjAsIDEzMDYyLCAKKyAgICAxMzA2NCwgMTMwNjYsIDEzMDY4LCAxMzA3MCwgMTMwNzIsIDEzMDc0LCAxMzA3NiwgMTMwNzgsIDEzMDgwLCAxMzA4MiwgCisgICAgMTMwODQsIDEzMDg2LCAxMzA4OCwgMTMwOTAsIDEzMDkyLCAxMzA5NCwgMTMwOTYsIDEzMDk4LCAxMzEwMCwgMTMxMDIsIAorICAgIDEzMTA0LCAxMzEwNiwgMTMxMDgsIDEzMTEwLCAxMzExMiwgMTMxMTQsIDEzMTE2LCAxMzExOCwgMTMxMjAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMTIyLCAxMzEyNiwgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTU4LCAxMzE2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjIsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAorICAgIDEzMTc2LCAxMzE3OCwgMTMxODAsIDEzMTgyLCAxMzE4NCwgMTMxODYsIDEzMTg4LCAxMzE5MCwgMTMxOTIsIDEzMTk0LCAKKyAgICAxMzE5NiwgMTMxOTgsIDEzMjAwLCAxMzIwMiwgMTMyMDQsIDEzMjA2LCAxMzIwOCwgMTMyMTAsIDEzMjEyLCAxMzIxNCwgCisgICAgMTMyMTYsIDEzMjE4LCAxMzIyMCwgMTMyMjIsIDEzMjI0LCAxMzIyNiwgMTMyMjgsIDEzMjMwLCAxMzIzMiwgMTMyMzQsIAorICAgIDEzMjM2LCAxMzIzOCwgMTMyNDAsIDEzMjQyLCAxMzI0NCwgMTMyNDYsIDEzMjQ4LCAxMzI1MCwgMTMyNTIsIDEzMjU0LCAKKyAgICAxMzI1NiwgMTMyNTgsIDEzMjYwLCAxMzI2MiwgMTMyNjQsIDEzMjY2LCAxMzI2OCwgMTMyNzAsIDEzMjcyLCAxMzI3NCwgCisgICAgMTMyNzYsIDEzMjc4LCAxMzI4MCwgMTMyODIsIDEzMjg0LCAxMzI4NiwgMTMyODgsIDEzMjkwLCAxMzI5MiwgMTMyOTQsIAorICAgIDEzMjk2LCAxMzI5OCwgMTMzMDAsIDEzMzAyLCAxMzMwNCwgMTMzMDYsIDEzMzA4LCAxMzMxMCwgMTMzMTIsIDEzMzE0LCAKKyAgICAxMzMxNiwgMTMzMTgsIDEzMzIwLCAxMzMyMiwgMTMzMjQsIDEzMzI2LCAxMzMyOCwgMTMzMzAsIDEzMzMyLCAxMzMzNCwgCisgICAgMTMzMzYsIDEzMzM4LCAxMzM0MCwgMTMzNDIsIDEzMzQ0LCAxMzM0NiwgMTMzNDgsIDEzMzUwLCAxMzM1MiwgMTMzNTQsIAorICAgIDEzMzU2LCAxMzM1OCwgMTMzNjAsIDEzMzYyLCAxMzM2NCwgMTMzNjYsIDEzMzY4LCAxMzM3MCwgMTMzNzIsIDEzMzc0LCAKKyAgICAxMzM3NiwgMTMzNzgsIDEzMzgwLCAxMzM4MiwgMTMzODQsIDEzMzg2LCAxMzM4OCwgMTMzOTAsIDEzMzkyLCAxMzM5NCwgCisgICAgMTMzOTYsIDEzMzk4LCAxMzQwMCwgMTM0MDIsIDEzNDA0LCAxMzQwNiwgMTM0MDgsIDEzNDEwLCAxMzQxMiwgMTM0MTQsIAorICAgIDEzNDE2LCAxMzQxOCwgMTM0MjAsIDEzNDIyLCAxMzQyNCwgMTM0MjYsIDEzNDI4LCAxMzQzMCwgMTM0MzIsIDEzNDM0LCAKKyAgICAxMzQzNiwgMTM0MzgsIDEzNDQwLCAxMzQ0MiwgMTM0NDQsIDEzNDQ2LCAxMzQ0OCwgMTM0NTAsIDEzNDUyLCAxMzQ1NCwgCisgICAgMTM0NTYsIDEzNDU4LCAxMzQ2MCwgMTM0NjIsIDEzNDY0LCAxMzQ2NiwgMTM0NjgsIDEzNDcwLCAxMzQ3MiwgMTM0NzQsIAorICAgIDEzNDc2LCAxMzQ3OCwgMTM0ODAsIDEzNDgyLCAxMzQ4NCwgMTM0ODYsIDEzNDg4LCAxMzQ5MCwgMTM0OTIsIDEzNDk0LCAKKyAgICAxMzQ5NiwgMTM0OTgsIDEzNTAwLCAxMzUwMiwgMTM1MDQsIDEzNTA2LCAxMzUwOCwgMTM1MTAsIDEzNTEyLCAxMzUxNCwgCisgICAgMTM1MTYsIDEzNTE4LCAxMzUyMCwgMTM1MjIsIDEzNTI0LCAxMzUyNiwgMTM1MjgsIDEzNTMwLCAxMzUzMiwgMTM1MzQsIAorICAgIDEzNTM2LCAxMzUzOCwgMTM1NDAsIDEzNTQyLCAxMzU0NCwgMTM1NDYsIDEzNTQ4LCAxMzU1MCwgMTM1NTIsIDEzNTU0LCAKKyAgICAxMzU1NiwgMTM1NTgsIDEzNTYwLCAxMzU2MiwgMTM1NjQsIDEzNTY2LCAxMzU2OCwgMTM1NzAsIDEzNTcyLCAxMzU3NCwgCisgICAgMTM1NzYsIDEzNTc4LCAxMzU4MCwgMTM1ODIsIDEzNTg0LCAxMzU4NiwgMTM1ODgsIDEzNTkwLCAxMzU5MiwgMTM1OTQsIAorICAgIDEzNTk2LCAxMzU5OCwgMTM2MDAsIDEzNjAyLCAxMzYwNCwgMTM2MDYsIDEzNjA4LCAxMzYxMCwgMTM2MTIsIDEzNjE0LCAKKyAgICAxMzYxNiwgMTM2MTgsIDEzNjIwLCAxMzYyMiwgMTM2MjQsIDEzNjI2LCAxMzYyOCwgMTM2MzAsIDEzNjMyLCAxMzYzNCwgCisgICAgMTM2MzYsIDEzNjM4LCAxMzY0MCwgMTM2NDIsIDEzNjQ0LCAxMzY0NiwgMTM2NDgsIDEzNjUwLCAxMzY1MiwgMTM2NTQsIAorICAgIDEzNjU2LCAxMzY1OCwgMTM2NjAsIDEzNjYyLCAxMzY2NCwgMTM2NjYsIDEzNjY4LCAxMzY3MCwgMTM2NzIsIDEzNjc0LCAKKyAgICAxMzY3NiwgMTM2NzgsIDEzNjgwLCAxMzY4MiwgMTM2ODQsIDEzNjg2LCAxMzY4OCwgMTM2OTAsIDEzNjkyLCAxMzY5NCwgCisgICAgMTM2OTYsIDEzNjk4LCAxMzcwMCwgMTM3MDIsIDEzNzA0LCAxMzcwNiwgMTM3MDgsIDEzNzEwLCAxMzcxMiwgMTM3MTQsIAorICAgIDEzNzE2LCAxMzcxOCwgMTM3MjAsIDEzNzIyLCAxMzcyNCwgMTM3MjYsIDEzNzI4LCAxMzczMCwgMTM3MzIsIDEzNzM0LCAKKyAgICAxMzczNiwgMTM3MzgsIDEzNzQwLCAxMzc0MiwgMTM3NDQsIDEzNzQ2LCAxMzc0OCwgMTM3NTAsIDEzNzUyLCAxMzc1NCwgCisgICAgMTM3NTYsIDEzNzU4LCAxMzc2MCwgMTM3NjIsIDEzNzY0LCAxMzc2NiwgMTM3NjgsIDEzNzcwLCAxMzc3MiwgMTM3NzQsIAorICAgIDEzNzc2LCAxMzc3OCwgMTM3ODAsIDEzNzgyLCAxMzc4NCwgMTM3ODYsIDEzNzg4LCAxMzc5MCwgMTM3OTIsIDEzNzk0LCAKKyAgICAxMzc5NiwgMTM3OTgsIDEzODAwLCAxMzgwMiwgMTM4MDQsIDEzODA2LCAxMzgwOCwgMTM4MTAsIDEzODEyLCAxMzgxNCwgCisgICAgMTM4MTYsIDEzODE4LCAxMzgyMCwgMTM4MjIsIDEzODI0LCAxMzgyNiwgMTM4MjgsIDEzODMwLCAxMzgzMiwgMTM4MzQsIAorICAgIDEzODM2LCAxMzgzOCwgMTM4NDAsIDEzODQyLCAxMzg0NCwgMTM4NDYsIDEzODQ4LCAxMzg1MCwgMTM4NTIsIDEzODU0LCAKKyAgICAxMzg1NiwgMTM4NTgsIDEzODYwLCAxMzg2MiwgMTM4NjQsIDEzODY2LCAxMzg2OCwgMTM4NzAsIDEzODcyLCAxMzg3NCwgCisgICAgMTM4NzYsIDEzODc4LCAxMzg4MCwgMTM4ODIsIDEzODg0LCAxMzg4NiwgMTM4ODgsIDEzODkwLCAxMzg5MiwgMTM4OTQsIAorICAgIDEzODk2LCAxMzg5OCwgMTM5MDAsIDEzOTAyLCAxMzkwNCwgMTM5MDYsIDEzOTA4LCAxMzkxMCwgMTM5MTIsIDEzOTE0LCAKKyAgICAxMzkxNiwgMTM5MTgsIDEzOTIwLCAxMzkyMiwgMTM5MjQsIDEzOTI2LCAxMzkyOCwgMTM5MzAsIDEzOTMyLCAxMzkzNCwgCisgICAgMTM5MzYsIDEzOTM4LCAxMzk0MCwgMTM5NDIsIDEzOTQ0LCAxMzk0NiwgMTM5NDgsIDEzOTUwLCAxMzk1MiwgMTM5NTQsIAorICAgIDEzOTU2LCAxMzk1OCwgMTM5NjAsIDEzOTYyLCAxMzk2NCwgMTM5NjYsIDEzOTY4LCAxMzk3MCwgMTM5NzIsIDEzOTc0LCAKKyAgICAxMzk3NiwgMTM5NzgsIDEzOTgwLCAxMzk4MiwgMTM5ODQsIDEzOTg2LCAxMzk4OCwgMTM5OTAsIDEzOTkyLCAxMzk5NCwgCisgICAgMTM5OTYsIDEzOTk4LCAxNDAwMCwgMTQwMDIsIDE0MDA0LCAxNDAwNiwgMTQwMDgsIDE0MDEwLCAxNDAxMiwgMTQwMTQsIAorICAgIDE0MDE2LCAxNDAxOCwgMTQwMjAsIDE0MDIyLCAxNDAyNCwgMTQwMjYsIDE0MDI4LCAxNDAzMCwgMTQwMzIsIDE0MDM0LCAKKyAgICAxNDAzNiwgMTQwMzgsIDE0MDQwLCAxNDA0MiwgMTQwNDQsIDE0MDQ2LCAxNDA0OCwgMTQwNTAsIDE0MDUyLCAxNDA1NCwgCisgICAgMTQwNTYsIDE0MDU4LCAxNDA2MCwgMTQwNjIsIDE0MDY0LCAxNDA2NiwgMTQwNjgsIDE0MDcwLCAxNDA3MiwgMTQwNzQsIAorICAgIDE0MDc2LCAxNDA3OCwgMTQwODAsIDE0MDgyLCAxNDA4NCwgMTQwODYsIDE0MDg4LCAxNDA5MCwgMTQwOTIsIDE0MDk0LCAKKyAgICAxNDA5NiwgMTQwOTgsIDE0MTAwLCAxNDEwMiwgMTQxMDQsIDE0MTA2LCAxNDEwOCwgMTQxMTAsIDE0MTEyLCAxNDExNCwgCisgICAgMTQxMTYsIDE0MTE4LCAxNDEyMCwgMTQxMjIsIDE0MTI0LCAxNDEyNiwgMTQxMjgsIDE0MTMwLCAxNDEzMiwgMTQxMzQsIAorICAgIDE0MTM2LCAxNDEzOCwgMTQxNDAsIDE0MTQyLCAxNDE0NCwgMTQxNDYsIDE0MTQ4LCAxNDE1MCwgMTQxNTIsIDE0MTU0LCAKKyAgICAxNDE1NiwgMTQxNTgsIDE0MTYwLCAxNDE2MiwgMTQxNjQsIDE0MTY2LCAxNDE2OCwgMTQxNzAsIDE0MTcyLCAxNDE3NCwgCisgICAgMTQxNzYsIDE0MTc4LCAxNDE4MCwgMTQxODIsIDE0MTg0LCAxNDE4NiwgMTQxODgsIDE0MTkwLCAxNDE5MiwgMTQxOTQsIAorICAgIDE0MTk2LCAxNDE5OCwgMTQyMDAsIDE0MjAyLCAxNDIwNCwgMTQyMDYsIDE0MjA4LCAxNDIxMCwgMTQyMTIsIDE0MjE0LCAKKyAgICAxNDIxNiwgMTQyMTgsIDE0MjIwLCAxNDIyMiwgMTQyMjQsIDE0MjI2LCAxNDIyOCwgMTQyMzAsIDE0MjMyLCAxNDIzNCwgCisgICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIE5GQyBwYWlycyAqLwogI2RlZmluZSBDT01QX1NISUZUIDIKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBjb21wX2luZGV4W10gPSB7Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgNiwgNywgOCwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDExLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIAotICAgIDE0LCAxNSwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxOCwgMCwgMTksIDIwLCAyMSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMyLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzQsIDM1LCAzNiwgMCwgMzcsIDM4LCAzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCAKLSAgICA0NSwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgMCwgNDksIDAsIDUwLCA1MSwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCA1NCwgMCwgNTUsIDU2LCA1NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDU5LCAwLCAwLCA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEsIDYyLCAKLSAgICA2MywgMCwgNjQsIDY1LCA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzMsIDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NSwgNzYsIDc3LCAKLSAgICA3OCwgNzksIDgwLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgzLCA4NCwgMCwgODUsIDg2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4NywgODgsIDAsIDg5LCA5MCwgOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyLCA5MywgOTQsIAotICAgIDk1LCA5NiwgOTcsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMTAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDEsIDEwMiwgMCwgMCwgMTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA2LCAxMDcsIDAsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA5LCAxMTAsIDExMSwgMCwgMTEyLCAwLCAxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNCwgMTE1LCAxMTYsIAotICAgIDExNywgMTE4LCAxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMCwgMCwgMCwgMTIxLCAwLCAxMjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyMywgMTI0LCAxMjUsIDAsIDAsIDEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKLSAgICAxMjgsIDAsIDEyOSwgMTMwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAotICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDAsIDE0MSwgMTQyLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ1LCAxNDYsIDAsIDE0NywgCi0gICAgMTQ4LCAxNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTU3LCAwLCAxNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1OSwgMCwgMTYwLCAKLSAgICAwLCAxNjEsIDE2MiwgMTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDE2NSwgMCwgMTY2LCAxNjcsIDE2OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTY5LCAxNzAsIDAsIDAsIDE3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcyLCAKLSAgICAxNzMsIDE3NCwgMCwgMTc1LCAxNzYsIDE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIAotICAgIDE4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTkzLCAxOTQsIDE5NSwgCi0gICAgMCwgMTk2LCAxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OCwgMTk5LCAwLCAyMDAsIDIwMSwgMjAyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIxMCwgMCwgMCwgMCwgMjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTIsIDIxMywgMjE0LCAwLCAyMTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE3LCAKLSAgICAyMTgsIDIxOSwgMCwgMjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjEsIDIyMiwgMjIzLCAwLCAyMjQsIDAsIAotICAgIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIyOCwgMCwgMjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyLCAyMzMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjM1LCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI0MCwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDUsIAotICAgIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTEsIDI1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDI1NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTcsIDAsIAotICAgIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU5LCAyNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNjYsIDAsIDI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAwLCAyNjksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjgzLCAwLCAyODQsIDAsIDI4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg2LCAwLCAyODcsIDAsIAotICAgIDI4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5LCAwLCAyOTAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjkyLCAwLCAyOTMsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDUsIDMwNiwgMCwgMzA3LCAKLSAgICAwLCAwLCAwLCAzMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOSwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMTEsIDAsIDAsIDMxMiwgMCwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNSwgMCwgMzE2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDMyMSwgMCwgMzIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDAsIDAsIDMyNCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzI4LCAzMjksIDAsIDMzMCwgMCwgMCwgMCwgMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzIsIDAsIDAsIAotICAgIDMzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM0LCAwLCAwLCAzMzUsIDAsIDAsIDAsIDMzNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzM3LCAzMzgsIDAsIDMzOSwgMCwgMCwgMCwgMzQwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIAotICAgIDM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNDQsIDM0NSwgMCwgMzQ2LCAwLCAwLCAwLCAzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OCwgMCwgMCwgMzQ5LCAKLSAgICAwLCAwLCAwLCAzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzU1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxLCAzNjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjUsIDM2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OSwgMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzc2LCAzNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODAsIAotICAgIDM4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NCwgMzg1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDA5LCA0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNCwgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MTksIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAKLSAgICAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQyLCA0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUxMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgNTIzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTM4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYzMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgCisgICAgNiwgNywgOCwgOSwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExLCAwLCAwLCAxMiwgMCwgMTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNSwgMTYsIDE3LCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDIwLCAwLCAyMSwgMjIsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAKKyAgICAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDMyLCAzMywgMzQsIDM1LCAwLCAzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM4LCAzOSwgMCwgCisgICAgNDAsIDQxLCA0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCAwLCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAKKyAgICA1MSwgNTIsIDUzLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU2LCAwLCA1NywgNTgsIDU5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MCwgMCwgNjEsIDAsIDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MywgNjQsIDY1LCAwLCA2NiwgNjcsIDY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2OSwgNzAsIDcxLCA3MiwgNzMsIDAsIAorICAgIDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NSwgNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDc3LCAwLCA3OCwgNzksIDgwLCA4MSwgMCwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4NCwgODUsIAorICAgIDAsIDg2LCA4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDEsIDAsIDAsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzLCAxMDQsIDAsIDAsIDEwNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDcsIDEwOCwgMTA5LCAwLCAxMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMSwgMTEyLCAxMTMsIAorICAgIDExNCwgMTE1LCAwLCAwLCAxMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAKKyAgICAxMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMywgMCwgMTI0LCAwLCAwLCAxMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyNiwgMTI3LCAxMjgsIDAsIDAsIDEyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzcsIDEzOCwgMTM5LCAKKyAgICAxNDAsIDE0MSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ1LCAxNDYsIDAsIDAsIDE0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTUsIDE1NiwgMTU3LCAKKyAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MiwgMCwgMTYzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDE2NSwgMCwgMTY2LCAxNjcsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTY5LCAwLCAwLCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc1LCAKKyAgICAxNzYsIDAsIDAsIDE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIAorICAgIDE4MywgMTg0LCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5MiwgMCwgMTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwMSwgMjAyLCAKKyAgICAyMDMsIDIwNCwgMjA1LCAyMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwNywgMjA4LCAwLCAyMDksIAorICAgIDIxMCwgMjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxOSwgMCwgMCwgMCwgMjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyMjEsIDIyMiwgMjIzLCAwLCAyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI2LCAyMjcsIDIyOCwgMCwgMjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyMzAsIDIzMSwgMjMyLCAwLCAyMzMsIDAsIDIzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMCwgMjM4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAyNDIsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjQ0LCAyNDUsIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDgsIDI0OSwgMjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNTEsIDI1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI1NSwgMjU2LCAwLCAyNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1OCwgMCwgCisgICAgMjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAKKyAgICAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY1LCAyNjYsIDI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI3MCwgMjcxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMjc3LCAwLCAyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI3OSwgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIDI4MiwgCisgICAgMjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI5NywgMjk4LCAyOTksIDAsIDMwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzAxLCAwLCAzMDIsIDAsIDMwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA0LCAzMDUsIDMwNiwgMCwgMzA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDgsIDAsIDMwOSwgMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIyLCAwLCAwLCAKKyAgICAzMjMsIDAsIDAsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMyNywgMCwgMCwgMCwgMzI4LCAwLCAwLCAzMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMCwgCisgICAgMzMxLCAwLCAzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMywgMCwgMCwgMCwgMzM0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMzNiwgMzM3LCAzMzgsIDAsIDMzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQwLCAwLCAwLCAzNDEsIAorICAgIDAsIDAsIDAsIDM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0NSwgMzQ2LCAwLCAKKyAgICAwLCAzNDcsIDAsIDAsIDM0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ5LCAwLCAwLCAzNTAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMzUyLCAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1NCwgMzU1LCAwLCAzNTYsIDAsIDAsIDAsIDM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU4LCAwLCAwLCAwLCAzNTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzYxLCAzNjIsIDM2MywgMCwgMzY0LCAwLCAwLCAzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NiwgMCwgCisgICAgMCwgMzY3LCAwLCAwLCAwLCAzNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMzcwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIDM3NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc5LCAzODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM4MSwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NCwgMzg1LCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDM5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzOTgsIDM5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDEsIDQwMiwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA2LCA0MDcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIAorICAgIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgMCwgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NjEsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTIzLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDU0MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA2MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA2MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA2MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA2MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NTYsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBjb21wX2RhdGFbXSA9IHsKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODE0LCAwLCAwLCAwLCA4ODAwLCAwLCAwLCAwLCA4ODE1LCAxOTIsIDE5MywgMTk0LCAKLSAgICAxOTUsIDI1NiwgMjU4LCA1NTAsIDE5NiwgNzg0MiwgMTk3LCAwLCA0NjEsIDUxMiwgNTE0LCAwLCAwLCAwLCA3ODQwLCAwLCAKLSAgICA3NjgwLCAwLCAwLCAyNjAsIDAsIDAsIDAsIDc2ODIsIDAsIDAsIDc2ODQsIDAsIDAsIDAsIDAsIDc2ODYsIDAsIDAsIDI2MiwgCi0gICAgMjY0LCAwLCAwLCAwLCAyNjYsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMTk5LCAwLCAwLCAwLCAwLCA3NjkwLCAwLCAwLCAwLCAwLCAKLSAgICAyNzAsIDAsIDc2OTIsIDAsIDAsIDAsIDc2OTYsIDAsIDc2OTgsIDAsIDAsIDc2OTQsIDAsIDIwMCwgMjAxLCAyMDIsIDc4NjgsIAotICAgIDI3NCwgMjc2LCAyNzgsIDIwMywgNzg2NiwgMCwgMCwgMjgyLCA1MTYsIDUxOCwgMCwgMCwgMCwgNzg2NCwgMCwgMCwgMCwgCi0gICAgNTUyLCAyODAsIDc3MDQsIDAsIDc3MDYsIDAsIDAsIDAsIDAsIDc3MTAsIDAsIDAsIDUwMCwgMjg0LCAwLCA3NzEyLCAyODYsIAotICAgIDI4OCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAyOTAsIDAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgNzcxNCwgNzcxOCwgMCwgMCwgCi0gICAgMCwgNTQyLCAwLCA3NzE2LCAwLCAwLCAwLCA3NzIwLCAwLCAwLCA3NzIyLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyOTYsIAotICAgIDI5OCwgMzAwLCAzMDQsIDIwNywgNzg4MCwgMCwgMCwgNDYzLCA1MjAsIDUyMiwgMCwgMCwgMCwgNzg4MiwgMCwgMCwgMCwgMCwgCi0gICAgMzAyLCAwLCAwLCA3NzI0LCAwLCAwLCAwLCAwLCAzMDgsIDAsIDAsIDc3MjgsIDAsIDAsIDAsIDAsIDAsIDQ4OCwgMCwgCi0gICAgNzczMCwgMCwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCA3NzMyLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgCi0gICAgNzczNCwgMCwgMCwgMCwgMzE1LCAwLCA3NzQwLCAwLCAwLCA3NzM4LCAwLCAwLCA3NzQyLCAwLCAwLCAwLCAwLCA3NzQ0LCAwLCAKLSAgICAwLCA3NzQ2LCAwLCAwLCA1MDQsIDMyMywgMCwgMjA5LCAwLCAwLCA3NzQ4LCAwLCAwLCAwLCAwLCAzMjcsIDAsIDc3NTAsIDAsIAotICAgIDAsIDAsIDMyNSwgMCwgNzc1NCwgMCwgMCwgNzc1MiwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAzMzIsIDMzNCwgNTU4LCAKLSAgICAyMTQsIDc4ODYsIDAsIDMzNiwgNDY1LCA1MjQsIDUyNiwgMCwgMCwgNDE2LCA3ODg0LCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIAotICAgIDc3NjQsIDAsIDAsIDAsIDAsIDc3NjYsIDAsIDAsIDM0MCwgMCwgMCwgMCwgMCwgNzc2OCwgMCwgMCwgMCwgMCwgMzQ0LCAKLSAgICA1MjgsIDUzMCwgMCwgMCwgMCwgNzc3MCwgMCwgMCwgMCwgMzQyLCAwLCAwLCAwLCAwLCA3Nzc0LCAwLCAwLCAzNDYsIDM0OCwgCi0gICAgMCwgMCwgMCwgNzc3NiwgMCwgMCwgMCwgMCwgMzUyLCAwLCA3Nzc4LCAwLCAwLCA1MzYsIDM1MCwgMCwgMCwgMCwgMCwgCi0gICAgNzc4NiwgMCwgMCwgMCwgMCwgMzU2LCAwLCA3Nzg4LCAwLCAwLCA1MzgsIDM1NCwgMCwgNzc5MiwgMCwgMCwgNzc5MCwgMCwgCi0gICAgMjE3LCAyMTgsIDIxOSwgMzYwLCAzNjIsIDM2NCwgMCwgMjIwLCA3OTEwLCAzNjYsIDM2OCwgNDY3LCA1MzIsIDUzNCwgMCwgCi0gICAgMCwgNDMxLCA3OTA4LCA3Nzk0LCAwLCAwLCAwLCAzNzAsIDc3OTgsIDAsIDc3OTYsIDAsIDAsIDAsIDAsIDAsIDc4MDQsIDAsIAotICAgIDc4MDYsIDAsIDAsIDc4MDgsIDc4MTAsIDM3MiwgMCwgMCwgMCwgNzgxNCwgNzgxMiwgMCwgNzgxNiwgMCwgMCwgMCwgMCwgCi0gICAgNzgxOCwgNzgyMCwgNzkyMiwgMjIxLCAzNzQsIDc5MjgsIDU2MiwgMCwgNzgyMiwgMzc2LCA3OTI2LCAwLCAwLCAwLCAwLCAKLSAgICA3OTI0LCAwLCAwLCAwLCAzNzcsIDc4MjQsIDAsIDAsIDAsIDM3OSwgMCwgMCwgMCwgMCwgMzgxLCAwLCA3ODI2LCAwLCAwLCAKLSAgICAwLCAwLCA3ODI4LCAwLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDI1NywgMjU5LCA1NTEsIDIyOCwgNzg0MywgMjI5LCAwLCA0NjIsIAotICAgIDUxMywgNTE1LCAwLCAwLCAwLCA3ODQxLCAwLCA3NjgxLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDc2ODMsIDAsIDAsIDc2ODUsIAotICAgIDAsIDAsIDAsIDAsIDc2ODcsIDAsIDAsIDI2MywgMjY1LCAwLCAwLCAwLCAyNjcsIDAsIDAsIDAsIDAsIDI2OSwgMCwgMjMxLCAKLSAgICAwLCAwLCAwLCAwLCA3NjkxLCAwLCAwLCAwLCAwLCAyNzEsIDAsIDc2OTMsIDAsIDAsIDAsIDc2OTcsIDAsIDc2OTksIDAsIDAsIAotICAgIDc2OTUsIDAsIDIzMiwgMjMzLCAyMzQsIDc4NjksIDI3NSwgMjc3LCAyNzksIDIzNSwgNzg2NywgMCwgMCwgMjgzLCA1MTcsIAotICAgIDUxOSwgMCwgMCwgMCwgNzg2NSwgMCwgMCwgMCwgNTUzLCAyODEsIDc3MDUsIDAsIDc3MDcsIDAsIDAsIDAsIDAsIDc3MTEsIAotICAgIDAsIDAsIDUwMSwgMjg1LCAwLCA3NzEzLCAyODcsIDI4OSwgMCwgMCwgMCwgMCwgNDg3LCAwLCAyOTEsIDAsIDAsIDAsIDAsIAotICAgIDI5MywgMCwgMCwgMCwgNzcxNSwgNzcxOSwgMCwgMCwgMCwgNTQzLCAwLCA3NzE3LCAwLCAwLCAwLCA3NzIxLCAwLCAwLCAKLSAgICA3NzIzLCAwLCA3ODMwLCAwLCAyMzYsIDIzNywgMjM4LCAyOTcsIDI5OSwgMzAxLCAwLCAyMzksIDc4ODEsIDAsIDAsIDQ2NCwgCi0gICAgNTIxLCA1MjMsIDAsIDAsIDAsIDc4ODMsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgNzcyNSwgMCwgMCwgMCwgMCwgMzA5LCAwLCAKLSAgICAwLCAwLCAwLCA0OTYsIDAsIDc3MjksIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgNzczMSwgMCwgMCwgMCwgMzExLCAwLCAwLCAKLSAgICAwLCAwLCA3NzMzLCAwLCAwLCAzMTQsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMCwgNzczNSwgMCwgMCwgMCwgMzE2LCAwLCAKLSAgICA3NzQxLCAwLCAwLCA3NzM5LCAwLCAwLCA3NzQzLCAwLCAwLCAwLCAwLCA3NzQ1LCAwLCAwLCA3NzQ3LCAwLCAwLCA1MDUsIAotICAgIDMyNCwgMCwgMjQxLCAwLCAwLCA3NzQ5LCAwLCAwLCAwLCAwLCAzMjgsIDAsIDc3NTEsIDAsIDAsIDAsIDMyNiwgMCwgNzc1NSwgCi0gICAgMCwgMCwgNzc1MywgMCwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAzMzMsIDMzNSwgNTU5LCAyNDYsIDc4ODcsIDAsIDMzNywgNDY2LCAKLSAgICA1MjUsIDUyNywgMCwgMCwgNDE3LCA3ODg1LCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIDc3NjUsIDAsIDAsIDAsIDAsIDc3NjcsIAotICAgIDAsIDAsIDM0MSwgMCwgMCwgMCwgMCwgNzc2OSwgMCwgMCwgMCwgMCwgMzQ1LCA1MjksIDUzMSwgMCwgMCwgMCwgNzc3MSwgMCwgCi0gICAgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCA3Nzc1LCAwLCAwLCAzNDcsIDM0OSwgMCwgMCwgMCwgNzc3NywgMCwgMCwgMCwgMCwgCi0gICAgMzUzLCAwLCA3Nzc5LCAwLCAwLCA1MzcsIDM1MSwgMCwgMCwgMCwgMCwgNzc4NywgNzgzMSwgMCwgMCwgMCwgMzU3LCAwLCAKLSAgICA3Nzg5LCAwLCAwLCA1MzksIDM1NSwgMCwgNzc5MywgMCwgMCwgNzc5MSwgMCwgMjQ5LCAyNTAsIDI1MSwgMzYxLCAzNjMsIAotICAgIDM2NSwgMCwgMjUyLCA3OTExLCAzNjcsIDM2OSwgNDY4LCA1MzMsIDUzNSwgMCwgMCwgNDMyLCA3OTA5LCA3Nzk1LCAwLCAwLCAKLSAgICAwLCAzNzEsIDc3OTksIDAsIDc3OTcsIDAsIDAsIDAsIDAsIDAsIDc4MDUsIDAsIDc4MDcsIDAsIDAsIDc4MDksIDc4MTEsIAotICAgIDM3MywgMCwgMCwgMCwgNzgxNSwgNzgxMywgMCwgNzgzMiwgMCwgMCwgMCwgNzgxNywgMCwgMCwgMCwgMCwgNzgxOSwgNzgyMSwgCi0gICAgNzkyMywgMjUzLCAzNzUsIDc5MjksIDU2MywgMCwgNzgyMywgMjU1LCA3OTI3LCA3ODMzLCAwLCAwLCAwLCA3OTI1LCAwLCAwLCAKLSAgICAwLCAzNzgsIDc4MjUsIDAsIDAsIDAsIDM4MCwgMCwgMCwgMCwgMCwgMzgyLCAwLCA3ODI3LCAwLCAwLCAwLCAwLCA3ODI5LCAKLSAgICAwLCA4MTczLCA5MDEsIDAsIDAsIDgxMjksIDAsIDAsIDAsIDc4NDYsIDc4NDQsIDAsIDc4NTAsIDc4NDgsIDAsIDAsIDAsIAotICAgIDQ3OCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCA1MDgsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgNzY4OCwgMCwgMCwgCi0gICAgNzg3MiwgNzg3MCwgMCwgNzg3NiwgNzg3NCwgMCwgMCwgMCwgMCwgNzcyNiwgMCwgMCwgNzg5MCwgNzg4OCwgMCwgNzg5NCwgCi0gICAgNzg5MiwgMCwgMCwgMCwgMCwgNzc1NiwgMCwgMCwgNTU2LCAwLCAwLCA3NzU4LCA1NTQsIDAsIDAsIDAsIDAsIDUxMCwgMCwgCi0gICAgMCwgNDc1LCA0NzEsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCA3ODQ3LCA3ODQ1LCAwLCA3ODUxLCA3ODQ5LCAKLSAgICAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgNTA5LCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDc2ODksIAotICAgIDAsIDAsIDc4NzMsIDc4NzEsIDAsIDc4NzcsIDc4NzUsIDAsIDAsIDAsIDAsIDc3MjcsIDAsIDAsIDc4OTEsIDc4ODksIDAsIAotICAgIDc4OTUsIDc4OTMsIDAsIDAsIDAsIDAsIDc3NTcsIDAsIDAsIDU1NywgMCwgMCwgNzc1OSwgNTU1LCAwLCAwLCAwLCAwLCAKLSAgICA1MTEsIDAsIDAsIDQ3NiwgNDcyLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NCwgNzg1NiwgNzg1NCwgMCwgCi0gICAgNzg2MCwgNzg1OCwgMCwgMCwgMCwgNzg1NywgNzg1NSwgMCwgNzg2MSwgNzg1OSwgMCwgMCwgMCwgNzcwMCwgNzcwMiwgMCwgCi0gICAgMCwgNzcwMSwgNzcwMywgMCwgMCwgNzc2MCwgNzc2MiwgMCwgMCwgNzc2MSwgNzc2MywgMCwgMCwgMCwgMCwgNzc4MCwgMCwgCi0gICAgMCwgMCwgNzc4MSwgMCwgMCwgMCwgNzc4MiwgMCwgMCwgMCwgNzc4MywgMCwgMCwgNzgwMCwgMCwgMCwgMCwgNzgwMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNzgwMiwgMCwgMCwgMCwgNzgwMywgMCwgMCwgNzgzNSwgMCwgNzkwMCwgNzg5OCwgMCwgNzkwNCwgCi0gICAgNzkwMiwgMCwgMCwgMCwgMCwgNzkwNiwgMCwgMCwgNzkwMSwgNzg5OSwgMCwgNzkwNSwgNzkwMywgMCwgMCwgMCwgMCwgCi0gICAgNzkwNywgMCwgMCwgNzkxNCwgNzkxMiwgMCwgNzkxOCwgNzkxNiwgMCwgMCwgMCwgMCwgNzkyMCwgMCwgMCwgNzkxNSwgCi0gICAgNzkxMywgMCwgNzkxOSwgNzkxNywgMCwgMCwgMCwgMCwgNzkyMSwgMCwgMCwgMCwgMCwgMCwgNDk0LCA0OTIsIDAsIDAsIDAsIAotICAgIDQ5MywgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCA0ODEsIDAsIDAsIDAsIDAsIDc3MDgsIDAsIDAsIDAsIDc3MDksIDAsIDAsIAotICAgIDU2MCwgMCwgMCwgMCwgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTUsIDgxMjIsIDkwMiwgMCwgMCwgODEyMSwgODEyMCwgMCwgCi0gICAgMCwgMCwgMCwgNzk0NCwgNzk0NSwgMCwgODEyNCwgMCwgMCwgODEzNiwgOTA0LCAwLCAwLCAwLCAwLCA3OTYwLCA3OTYxLCAKLSAgICA4MTM4LCA5MDUsIDAsIDAsIDAsIDAsIDc5NzYsIDc5NzcsIDAsIDgxNDAsIDAsIDAsIDgxNTQsIDkwNiwgMCwgMCwgODE1MywgCi0gICAgODE1MiwgMCwgOTM4LCAwLCAwLCA3OTkyLCA3OTkzLCA4MTg0LCA5MDgsIDAsIDAsIDAsIDAsIDgwMDgsIDgwMDksIDAsIDAsIAotICAgIDAsIDgxNzIsIDgxNzAsIDkxMCwgMCwgMCwgODE2OSwgODE2OCwgMCwgOTM5LCAwLCAwLCAwLCA4MDI1LCA4MTg2LCA5MTEsIAotICAgIDAsIDAsIDAsIDAsIDgwNDAsIDgwNDEsIDAsIDgxODgsIDAsIDAsIDAsIDgxMTYsIDAsIDAsIDAsIDgxMzIsIDAsIDAsIAotICAgIDgwNDgsIDk0MCwgMCwgMCwgODExMywgODExMiwgMCwgMCwgMCwgMCwgNzkzNiwgNzkzNywgODExOCwgODExNSwgMCwgMCwgCi0gICAgODA1MCwgOTQxLCAwLCAwLCAwLCAwLCA3OTUyLCA3OTUzLCA4MDUyLCA5NDIsIDAsIDAsIDAsIDAsIDc5NjgsIDc5NjksIAotICAgIDgxMzQsIDgxMzEsIDAsIDAsIDgwNTQsIDk0MywgMCwgMCwgODE0NSwgODE0NCwgMCwgOTcwLCAwLCAwLCA3OTg0LCA3OTg1LCAKLSAgICA4MTUwLCAwLCAwLCAwLCA4MDU2LCA5NzIsIDAsIDAsIDAsIDAsIDgwMDAsIDgwMDEsIDAsIDAsIDgxNjQsIDgxNjUsIDgwNTgsIAotICAgIDk3MywgMCwgMCwgODE2MSwgODE2MCwgMCwgOTcxLCAwLCAwLCA4MDE2LCA4MDE3LCA4MTY2LCAwLCAwLCAwLCA4MDYwLCAKLSAgICA5NzQsIDAsIDAsIDAsIDAsIDgwMzIsIDgwMzMsIDgxODIsIDgxNzksIDAsIDAsIDgxNDYsIDkxMiwgMCwgMCwgODE1MSwgMCwgCi0gICAgMCwgMCwgODE2MiwgOTQ0LCAwLCAwLCA4MTY3LCAwLCAwLCAwLCAwLCA4MTgwLCAwLCAwLCAwLCA5NzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDk4MCwgMCwgMCwgMCwgMTAzMSwgMCwgMTIzMiwgMCwgMTIzNCwgMCwgMTAyNywgMCwgMCwgMTAyNCwgMCwgMCwgMCwgMCwgCi0gICAgMTIzOCwgMCwgMTAyNSwgMCwgMTIxNywgMCwgMTI0NCwgMCwgMCwgMCwgMTI0NiwgMTAzNywgMCwgMCwgMCwgMTI1MCwgCi0gICAgMTA0OSwgMCwgMTI1MiwgMCwgMTAzNiwgMCwgMCwgMCwgMCwgMCwgMTI1NCwgMTI2MiwgMTAzOCwgMCwgMTI2NCwgMCwgMCwgCi0gICAgMTI2NiwgMCwgMCwgMCwgMCwgMTI2OCwgMCwgMCwgMCwgMTI3MiwgMCwgMCwgMCwgMTI2MCwgMCwgMTIzMywgMCwgMTIzNSwgCi0gICAgMCwgMTEwNywgMCwgMCwgMTEwNCwgMCwgMCwgMCwgMCwgMTIzOSwgMCwgMTEwNSwgMCwgMTIxOCwgMCwgMTI0NSwgMCwgMCwgCi0gICAgMCwgMTI0NywgMTExNywgMCwgMCwgMCwgMTI1MSwgMTA4MSwgMCwgMTI1MywgMCwgMTExNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI1NSwgMTI2MywgMTExOCwgMCwgMTI2NSwgMCwgMCwgMTI2NywgMCwgMCwgMCwgMCwgMTI2OSwgMCwgMCwgMCwgMTI3MywgCi0gICAgMCwgMCwgMCwgMTI2MSwgMCwgMCwgMCwgMTExMSwgMTE0MiwgMCwgMCwgMCwgMTE0MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI0MiwgMCwgMCwgMCwgMTI0MywgMCwgMCwgMCwgMTI1OCwgMCwgMCwgMCwgMTI1OSwgMCwgMCwgMTU3MCwgMTU3MSwgCi0gICAgMTU3MywgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MiwgMCwgMCwgMCwgMTU3NCwgMCwgMCwgMCwgMTczMCwgMCwgMCwgMCwgCi0gICAgMTc0NywgMCwgMCwgMCwgMTcyOCwgMCwgMjM0NSwgMCwgMCwgMCwgMjM1MywgMCwgMCwgMCwgMjM1NiwgMCwgMCwgMCwgMCwgCi0gICAgMjUwNywgMjUwOCwgMjg5MSwgMjg4OCwgMjg5MiwgMCwgMjk2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxOCwgMzAyMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzAxOSwgMCwgMzE0NCwgMCwgMCwgMCwgMCwgMCwgMzI2NCwgMCwgMCwgMzI3NCwgMzI3MSwgCi0gICAgMzI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3NSwgMCwgMzQwMiwgMzQwNCwgMCwgMCwgMzQwMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzU0NiwgMzU0OCwgMzU1MCwgMCwgMCwgMCwgMCwgMCwgMzU0OSwgMCwgMCwgNDEzNCwgMCwgMCwgMCwgMCwgNjkxOCwgMCwgCi0gICAgMCwgMCwgNjkyMCwgMCwgMCwgMCwgNjkyMiwgMCwgMCwgMCwgNjkyNCwgMCwgMCwgMCwgNjkyNiwgMCwgMCwgMCwgNjkzMCwgCi0gICAgMCwgMCwgMCwgNjk3MSwgMCwgMCwgMCwgNjk3MywgMCwgMCwgMCwgNjk3NiwgMCwgMCwgMCwgNjk3NywgMCwgMCwgMCwgCi0gICAgNjk3OSwgNzczNiwgMCwgMCwgMCwgNzczNywgMCwgMCwgMCwgNzc3MiwgMCwgMCwgMCwgNzc3MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzc4NCwgMCwgMCwgMCwgNzc4NSwgMCwgMCwgMCwgNzg1MiwgMCwgMCwgNzg2MiwgMCwgMCwgMCwgMCwgNzg1MywgMCwgMCwgCi0gICAgNzg2MywgMCwgMCwgMCwgMCwgNzg3OCwgMCwgMCwgMCwgNzg3OSwgMCwgMCwgMCwgNzg5NiwgMCwgMCwgMCwgNzg5NywgMCwgCi0gICAgNzkzOCwgNzk0MCwgMCwgMCwgNzk0MiwgODA2NCwgMCwgMCwgNzkzOSwgNzk0MSwgMCwgMCwgNzk0MywgODA2NSwgMCwgMCwgCi0gICAgMCwgODA2NiwgMCwgMCwgMCwgODA2NywgMCwgMCwgMCwgODA2OCwgMCwgMCwgMCwgODA2OSwgMCwgMCwgMCwgODA3MCwgMCwgCi0gICAgMCwgMCwgODA3MSwgMCwgMCwgNzk0NiwgNzk0OCwgMCwgMCwgNzk1MCwgODA3MiwgMCwgMCwgNzk0NywgNzk0OSwgMCwgMCwgCi0gICAgNzk1MSwgODA3MywgMCwgMCwgMCwgODA3NCwgMCwgMCwgMCwgODA3NSwgMCwgMCwgMCwgODA3NiwgMCwgMCwgMCwgODA3NywgCi0gICAgMCwgMCwgMCwgODA3OCwgMCwgMCwgMCwgODA3OSwgMCwgMCwgNzk1NCwgNzk1NiwgMCwgMCwgNzk1NSwgNzk1NywgMCwgMCwgCi0gICAgNzk2MiwgNzk2NCwgMCwgMCwgNzk2MywgNzk2NSwgMCwgMCwgNzk3MCwgNzk3MiwgMCwgMCwgNzk3NCwgODA4MCwgMCwgMCwgCi0gICAgNzk3MSwgNzk3MywgMCwgMCwgNzk3NSwgODA4MSwgMCwgMCwgMCwgODA4MiwgMCwgMCwgMCwgODA4MywgMCwgMCwgMCwgCi0gICAgODA4NCwgMCwgMCwgMCwgODA4NSwgMCwgMCwgMCwgODA4NiwgMCwgMCwgMCwgODA4NywgMCwgMCwgNzk3OCwgNzk4MCwgMCwgCi0gICAgMCwgNzk4MiwgODA4OCwgMCwgMCwgNzk3OSwgNzk4MSwgMCwgMCwgNzk4MywgODA4OSwgMCwgMCwgMCwgODA5MCwgMCwgMCwgCi0gICAgMCwgODA5MSwgMCwgMCwgMCwgODA5MiwgMCwgMCwgMCwgODA5MywgMCwgMCwgMCwgODA5NCwgMCwgMCwgMCwgODA5NSwgMCwgCi0gICAgMCwgNzk4NiwgNzk4OCwgMCwgMCwgNzk5MCwgMCwgMCwgMCwgNzk4NywgNzk4OSwgMCwgMCwgNzk5MSwgMCwgMCwgMCwgCi0gICAgNzk5NCwgNzk5NiwgMCwgMCwgNzk5OCwgMCwgMCwgMCwgNzk5NSwgNzk5NywgMCwgMCwgNzk5OSwgMCwgMCwgMCwgODAwMiwgCi0gICAgODAwNCwgMCwgMCwgODAwMywgODAwNSwgMCwgMCwgODAxMCwgODAxMiwgMCwgMCwgODAxMSwgODAxMywgMCwgMCwgODAxOCwgCi0gICAgODAyMCwgMCwgMCwgODAyMiwgMCwgMCwgMCwgODAxOSwgODAyMSwgMCwgMCwgODAyMywgMCwgMCwgMCwgODAyNywgODAyOSwgCi0gICAgMCwgMCwgODAzMSwgMCwgMCwgMCwgODAzNCwgODAzNiwgMCwgMCwgODAzOCwgODA5NiwgMCwgMCwgODAzNSwgODAzNywgMCwgCi0gICAgMCwgODAzOSwgODA5NywgMCwgMCwgMCwgODA5OCwgMCwgMCwgMCwgODA5OSwgMCwgMCwgMCwgODEwMCwgMCwgMCwgMCwgCi0gICAgODEwMSwgMCwgMCwgMCwgODEwMiwgMCwgMCwgMCwgODEwMywgMCwgMCwgODA0MiwgODA0NCwgMCwgMCwgODA0NiwgODEwNCwgCi0gICAgMCwgMCwgODA0MywgODA0NSwgMCwgMCwgODA0NywgODEwNSwgMCwgMCwgMCwgODEwNiwgMCwgMCwgMCwgODEwNywgMCwgMCwgCi0gICAgMCwgODEwOCwgMCwgMCwgMCwgODEwOSwgMCwgMCwgMCwgODExMCwgMCwgMCwgMCwgODExMSwgMCwgMCwgMCwgODExNCwgMCwgCi0gICAgMCwgMCwgODEzMCwgMCwgMCwgMCwgODE3OCwgMCwgMCwgMCwgODExOSwgMCwgMCwgODE0MSwgODE0MiwgMCwgMCwgODE0MywgCi0gICAgMCwgMCwgMCwgMCwgODEzNSwgMCwgMCwgMCwgODE4MywgMCwgMCwgODE1NywgODE1OCwgMCwgMCwgODE1OSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgODYwMiwgMCwgMCwgMCwgODYwMywgMCwgMCwgMCwgODYyMiwgMCwgMCwgMCwgODY1MywgMCwgMCwgMCwgCi0gICAgODY1NSwgMCwgMCwgMCwgODY1NCwgMCwgMCwgMCwgODcwOCwgMCwgMCwgMCwgODcxMywgMCwgMCwgMCwgODcxNiwgMCwgMCwgCi0gICAgMCwgODc0MCwgMCwgMCwgMCwgODc0MiwgMCwgMCwgMCwgODc2OSwgMCwgMCwgMCwgODc3MiwgMCwgMCwgMCwgODc3NSwgMCwgCi0gICAgMCwgMCwgODc3NywgMCwgMCwgMCwgODgxMywgMCwgMCwgMCwgODgwMiwgMCwgMCwgMCwgODgxNiwgMCwgMCwgMCwgODgxNywgCi0gICAgMCwgMCwgMCwgODgyMCwgMCwgMCwgMCwgODgyMSwgMCwgMCwgMCwgODgyNCwgMCwgMCwgMCwgODgyNSwgMCwgMCwgMCwgCi0gICAgODgzMiwgMCwgMCwgMCwgODgzMywgMCwgMCwgMCwgODkyOCwgMCwgMCwgMCwgODkyOSwgMCwgMCwgMCwgODgzNiwgMCwgMCwgCi0gICAgMCwgODgzNywgMCwgMCwgMCwgODg0MCwgMCwgMCwgMCwgODg0MSwgMCwgMCwgMCwgODkzMCwgMCwgMCwgMCwgODkzMSwgMCwgCi0gICAgMCwgMCwgODg3NiwgMCwgMCwgMCwgODg3NywgMCwgMCwgMCwgODg3OCwgMCwgMCwgMCwgODg3OSwgMCwgMCwgMCwgODkzOCwgCi0gICAgMCwgMCwgMCwgODkzOSwgMCwgMCwgMCwgODk0MCwgMCwgMCwgMCwgODk0MSwgMTI0MzYsIDAsIDAsIDAsIDEyMzY0LCAwLCAwLCAKLSAgICAwLCAxMjM2NiwgMCwgMCwgMCwgMTIzNjgsIDAsIDAsIDAsIDEyMzcwLCAwLCAwLCAwLCAxMjM3MiwgMCwgMCwgMCwgMTIzNzQsIAotICAgIDAsIDAsIDAsIDEyMzc2LCAwLCAwLCAwLCAxMjM3OCwgMCwgMCwgMCwgMTIzODAsIDAsIDAsIDAsIDEyMzgyLCAwLCAwLCAwLCAKLSAgICAxMjM4NCwgMCwgMCwgMCwgMTIzODYsIDAsIDAsIDAsIDEyMzg5LCAwLCAwLCAwLCAxMjM5MSwgMCwgMCwgMCwgMTIzOTMsIDAsIAotICAgIDAsIDAsIDEyNDAwLCAxMjQwMSwgMCwgMCwgMTI0MDMsIDEyNDA0LCAwLCAwLCAxMjQwNiwgMTI0MDcsIDAsIDAsIDEyNDA5LCAKLSAgICAxMjQxMCwgMCwgMCwgMTI0MTIsIDEyNDEzLCAwLCAwLCAxMjQ0NiwgMCwgMCwgMCwgMTI1MzIsIDAsIDAsIDAsIDEyNDYwLCAKLSAgICAwLCAwLCAwLCAxMjQ2MiwgMCwgMCwgMCwgMTI0NjQsIDAsIDAsIDAsIDEyNDY2LCAwLCAwLCAwLCAxMjQ2OCwgMCwgMCwgMCwgCi0gICAgMTI0NzAsIDAsIDAsIDAsIDEyNDcyLCAwLCAwLCAwLCAxMjQ3NCwgMCwgMCwgMCwgMTI0NzYsIDAsIDAsIDAsIDEyNDc4LCAwLCAKLSAgICAwLCAwLCAxMjQ4MCwgMCwgMCwgMCwgMTI0ODIsIDAsIDAsIDAsIDEyNDg1LCAwLCAwLCAwLCAxMjQ4NywgMCwgMCwgMCwgCi0gICAgMTI0ODksIDAsIDAsIDAsIDEyNDk2LCAxMjQ5NywgMCwgMCwgMTI0OTksIDEyNTAwLCAwLCAwLCAxMjUwMiwgMTI1MDMsIDAsIAotICAgIDAsIDEyNTA1LCAxMjUwNiwgMCwgMCwgMTI1MDgsIDEyNTA5LCAwLCAwLCAxMjUzNSwgMCwgMCwgMCwgMTI1MzYsIDAsIDAsIAotICAgIDAsIDEyNTM3LCAwLCAwLCAwLCAxMjUzOCwgMCwgMCwgMCwgMTI1NDIsIDAsIDAsIDAsIDAsIDAsIDY5Nzg2LCAwLCAwLCAwLCAKLSAgICA2OTc4OCwgMCwgMCwgMCwgNjk4MDMsIDAsIDAsIDAsIDAsIDY5OTM0LCAwLCAwLCAwLCA2OTkzNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgODgwMCwgMCwgMCwgMCwgMCwgMCwgODgxNSwgMCwgMCwgMTkyLCAxOTMsIAorICAgIDE5NCwgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgCisgICAgMCwgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCAwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAKKyAgICAwLCAwLCAwLCAyNjIsIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDAsIDAsIDAsIDAsIDE5OSwgMCwgCisgICAgMCwgNzY5MCwgMCwgMCwgMCwgMCwgMjcwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAKKyAgICAwLCAwLCAyMDAsIDIwMSwgMjAyLCA3ODY4LCAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIAorICAgIDAsIDAsIDAsIDc4NjQsIDAsIDAsIDAsIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCA3NzEwLCAwLCAwLCAwLCAwLCAKKyAgICA1MDAsIDI4NCwgMCwgNzcxMiwgMjg2LCAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMCwgMCwgMCwgMCwgMjkwLCAwLCAwLCAKKyAgICAyOTIsIDAsIDAsIDAsIDc3MTQsIDc3MTgsIDAsIDAsIDAsIDU0MiwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgCisgICAgNzcyMiwgMCwgMCwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjk2LCAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIAorICAgIDQ2MywgNTIwLCA1MjIsIDAsIDAsIDAsIDc4ODIsIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMzA4LCAwLCAwLCAwLCAwLCAKKyAgICA3NzI4LCAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDc3MzAsIDAsIDAsIDAsIDMxMCwgNzczMiwgMCwgMCwgMCwgMCwgMzEzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgMCwgCisgICAgMCwgNzc0MiwgNzc0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc0NiwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgMCwgCisgICAgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDAsIDAsIDIxMCwgCisgICAgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIDAsIAorICAgIDQxNiwgNzg4NCwgNDkwLCAwLCAwLCAwLCAwLCA3NzY0LCAwLCAwLCAwLCAwLCA3NzY2LCAwLCAwLCAwLCAwLCAzNDAsIAorICAgIDc3NjgsIDAsIDAsIDAsIDAsIDM0NCwgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgNzc3NCwgMCwgMCwgCisgICAgMCwgMCwgMzQ2LCAzNDgsIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgNTM2LCAzNTAsIAorICAgIDAsIDAsIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgMCwgMCwgMCwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIAorICAgIDc3OTIsIDAsIDAsIDc3OTAsIDAsIDAsIDAsIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgCisgICAgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCAKKyAgICA3Nzk2LCAwLCAwLCAwLCA3ODA0LCAwLCAwLCAwLCAwLCAwLCA3ODA2LCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIAorICAgIDc4MTIsIDAsIDc4MTYsIDAsIDAsIDc4MTgsIDc4MjAsIDAsIDAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIAorICAgIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgNzkyNCwgMCwgMCwgMCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAKKyAgICAzNzksIDAsIDAsIDAsIDAsIDM4MSwgMCwgMCwgMCwgMCwgMCwgNzgyNiwgNzgyOCwgMCwgMCwgMCwgMjI0LCAyMjUsIDIyNiwgCisgICAgMjI3LCAyNTcsIDI1OSwgNTUxLCAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgCisgICAgNzY4MSwgMCwgMCwgMjYxLCAwLCA3NjgzLCAwLCAwLCAwLCAwLCAwLCAwLCA3Njg1LCA3Njg3LCAwLCAwLCAwLCAwLCAyNjMsIAorICAgIDI2NSwgMCwgMCwgMCwgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDIzMSwgMCwgMCwgNzY5MSwgMCwgMCwgMCwgMCwgMjcxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCA3Njk1LCAwLCAwLCAwLCAyMzIsIAorICAgIDIzMywgMjM0LCA3ODY5LCAyNzUsIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCA1MTksIDAsIDAsIDAsIAorICAgIDc4NjUsIDAsIDAsIDAsIDU1MywgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCA3NzExLCAwLCAwLCAwLCAwLCA1MDEsIDI4NSwgCisgICAgMCwgNzcxMywgMjg3LCAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMjkxLCAwLCAwLCAyOTMsIDAsIDAsIDAsIDc3MTUsIAorICAgIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgNzcyMywgMCwgCisgICAgNzgzMCwgMCwgMCwgMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIAorICAgIDUyMSwgNTIzLCAwLCAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDMwOSwgMCwgMCwgMCwgCisgICAgMCwgNDk2LCAwLCAwLCAwLCA3NzI5LCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgMCwgMCwgCisgICAgMCwgMCwgNzczMywgMCwgMCwgMCwgMCwgMzE0LCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgCisgICAgMCwgNzc0MSwgMCwgMCwgNzczOSwgMCwgMCwgMCwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgCisgICAgMCwgMCwgMCwgNTA1LCAzMjQsIDAsIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIDAsIDAsIDc3NTMsIDAsIDAsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgCisgICAgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIDQ2NiwgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgMCwgMCwgCisgICAgMCwgMCwgNDkxLCAwLCAwLCAwLCAwLCA3NzY1LCA3NzY3LCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIAorICAgIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgCisgICAgMCwgMCwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIDM1MywgMCwgMCwgMCwgMCwgMCwgNzc3OSwgCisgICAgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIAorICAgIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDAsIDAsIDI0OSwgMjUwLCAyNTEsIDM2MSwgMzYzLCAzNjUsIDAsIDI1MiwgNzkxMSwgCisgICAgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgNzkwOSwgNzc5NSwgMCwgMCwgMCwgMzcxLCA3Nzk5LCAwLCAKKyAgICA3Nzk3LCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCAwLCAwLCA3ODA5LCA3ODExLCAzNzMsIDAsIDAsIDAsIDc4MTUsIAorICAgIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIDAsIDc4MTksIDc4MjEsIDAsIDAsIDc5MjMsIDI1MywgMzc1LCAKKyAgICA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMzc4LCA3ODI1LCAwLCAwLCAKKyAgICAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgMCwgMCwgMCwgODE3MywgOTAxLCAKKyAgICAwLCAwLCA4MTI5LCAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCA3ODQ4LCAwLCAwLCAwLCAwLCAwLCA0NzgsIDAsIDAsIDUwNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDc2ODgsIDAsIDAsIDAsIDAsIDc4NzIsIDc4NzAsIDAsIAorICAgIDc4NzYsIDAsIDAsIDAsIDAsIDc4NzQsIDAsIDAsIDc3MjYsIDAsIDAsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIDAsIAorICAgIDAsIDAsIDAsIDc4OTIsIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgMCwgMCwgNTU0LCAwLCAwLCA1MTAsIAorICAgIDAsIDAsIDAsIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDQ3MywgMCwgMCwgNzg0NywgNzg0NSwgMCwgNzg1MSwgCisgICAgNzg0OSwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAKKyAgICA3Njg5LCAwLCAwLCAwLCAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCAwLCAwLCAwLCAwLCA3ODc1LCAwLCAwLCA3NzI3LCAwLCAKKyAgICAwLCAwLCAwLCA3ODkxLCA3ODg5LCAwLCA3ODk1LCAwLCAwLCAwLCAwLCA3ODkzLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIAorICAgIDAsIDc3NTksIDAsIDAsIDU1NSwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAwLCAKKyAgICA0NzQsIDAsIDAsIDc4NTYsIDc4NTQsIDAsIDc4NjAsIDc4NTgsIDAsIDAsIDAsIDAsIDAsIDc4NTcsIDc4NTUsIDAsIDc4NjEsIAorICAgIDAsIDAsIDAsIDAsIDc4NTksIDAsIDc3MDAsIDc3MDIsIDAsIDAsIDAsIDAsIDc3MDEsIDc3MDMsIDc3NjAsIDc3NjIsIDAsIAorICAgIDAsIDAsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDc3ODAsIDAsIDc3ODEsIDAsIDAsIDAsIDAsIDAsIDc3ODIsIDAsIDc3ODMsIAorICAgIDAsIDAsIDAsIDAsIDc4MDAsIDAsIDAsIDAsIDAsIDAsIDc4MDEsIDAsIDAsIDAsIDc4MDIsIDAsIDc4MDMsIDAsIDAsIDAsIAorICAgIDAsIDc4MzUsIDAsIDAsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIDAsIDAsIDAsIDAsIDc5MDIsIDAsIDAsIDAsIDAsIAorICAgIDc5MDYsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDc5MDMsIDAsIDAsIDAsIDAsIDc5MDcsIDAsIDAsIDAsIDAsIDc5MTQsIAorICAgIDc5MTIsIDAsIDc5MTgsIDAsIDAsIDAsIDAsIDc5MTYsIDAsIDAsIDAsIDAsIDc5MjAsIDc5MTUsIDc5MTMsIDAsIDc5MTksIAorICAgIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDQ5NCwgMCwgMCwgNDkyLCAwLCAwLCAwLCAwLCAwLCA0OTMsIDAsIAorICAgIDQ4MCwgMCwgMCwgMCwgMCwgMCwgNDgxLCAwLCAwLCA3NzA4LCAwLCAwLCAwLCAwLCAwLCA3NzA5LCA1NjAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgNDk1LCAwLCAwLCA4MTIyLCA5MDIsIDAsIDAsIDgxMjEsIDgxMjAsIDc5NDQsIAorICAgIDc5NDUsIDAsIDAsIDAsIDAsIDAsIDgxMjQsIDgxMzYsIDkwNCwgMCwgMCwgMCwgMCwgNzk2MCwgNzk2MSwgMCwgMCwgODEzOCwgCisgICAgOTA1LCA3OTc2LCA3OTc3LCAwLCAwLCAwLCAwLCAwLCA4MTQwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIDgxNTIsIDAsIAorICAgIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgMCwgMCwgODE4NCwgOTA4LCA4MDA4LCA4MDA5LCAwLCAwLCAwLCAwLCAwLCA4MTcyLCAKKyAgICAwLCAwLCA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgMCwgMCwgODE4NiwgCisgICAgOTExLCAwLCAwLCAwLCAwLCA4MDQwLCA4MDQxLCAwLCA4MTg4LCAwLCAwLCAwLCAwLCAwLCA4MTE2LCAwLCA4MTMyLCAwLCAwLCAKKyAgICAwLCAwLCA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDc5MzYsIDc5MzcsIDAsIDAsIDAsIDAsIDgxMTgsIDgxMTUsIAorICAgIDgwNTAsIDk0MSwgMCwgMCwgMCwgMCwgNzk1MiwgNzk1MywgMCwgMCwgODA1MiwgOTQyLCA3OTY4LCA3OTY5LCAwLCAwLCAwLCAKKyAgICAwLCA4MTM0LCA4MTMxLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgCisgICAgODE1MCwgMCwgMCwgMCwgMCwgMCwgODA1NiwgOTcyLCA4MDAwLCA4MDAxLCAwLCAwLCAwLCAwLCA4MTY0LCA4MTY1LCAwLCAwLCAKKyAgICA4MDU4LCA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgMCwgMCwgODAxNiwgODAxNywgMCwgMCwgMCwgMCwgODE2NiwgCisgICAgMCwgODA2MCwgOTc0LCAwLCAwLCAwLCAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCAwLCAwLCA4MTQ2LCA5MTIsIAorICAgIDAsIDAsIDgxNTEsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgMCwgMCwgMCwgODE4MCwgMCwgOTc5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5ODAsIDAsIDEwMzEsIDAsIDAsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDAsIDAsIDEwMjcsIDEwMjQsIDAsIAorICAgIDAsIDAsIDAsIDEyMzgsIDAsIDEwMjUsIDAsIDAsIDAsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDAsIDAsIDAsIDEyNDYsIDAsIAorICAgIDAsIDEwMzcsIDAsIDAsIDAsIDEyNTAsIDEwNDksIDAsIDEyNTIsIDAsIDAsIDAsIDEwMzYsIDAsIDAsIDAsIDEyNTQsIDAsIAorICAgIDAsIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIDEyNjYsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDAsIDAsIDEyNzIsIDAsIAorICAgIDEyNjAsIDAsIDAsIDAsIDEyMzMsIDAsIDEyMzUsIDAsIDAsIDAsIDExMDcsIDExMDQsIDAsIDAsIDAsIDAsIDEyMzksIDAsIAorICAgIDExMDUsIDAsIDAsIDAsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIDAsIDAsIDAsIDEyNDcsIDAsIDAsIDExMTcsIDAsIDAsIDAsIAorICAgIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDAsIDAsIDExMTYsIDAsIDAsIDAsIDEyNTUsIDAsIDAsIDEyNjMsIDExMTgsIDAsIAorICAgIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDAsIDAsIDEyNzMsIDAsIDEyNjEsIDAsIDAsIDAsIDAsIAorICAgIDAsIDExMTEsIDAsIDAsIDExNDIsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDEyNDIsIDAsIDAsIDAsIDAsIDAsIDEyNDMsIDAsIAorICAgIDEyNTgsIDAsIDAsIDAsIDAsIDAsIDEyNTksIDE1NzAsIDE1NzEsIDE1NzMsIDAsIDAsIDAsIDAsIDE1NzIsIDAsIDE1NzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3MzAsIDAsIDE3NDcsIDAsIDAsIDAsIDAsIDAsIDE3MjgsIDAsIDAsIDAsIDIzNDUsIDAsIAorICAgIDIzNTMsIDAsIDAsIDAsIDAsIDAsIDIzNTYsIDAsIDAsIDI1MDcsIDI1MDgsIDAsIDAsIDI4OTEsIDI4ODgsIDI4OTIsIDAsIAorICAgIDAsIDAsIDI5NjQsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIDAsIDAsIDAsIDMwMTksIDAsIDAsIDAsIDMxNDQsIDAsIAorICAgIDAsIDAsIDMyNjQsIDMyNzQsIDMyNzEsIDMyNzIsIDAsIDAsIDAsIDAsIDMyNzUsIDAsIDAsIDAsIDM0MDIsIDM0MDQsIDAsIAorICAgIDAsIDAsIDAsIDM0MDMsIDAsIDAsIDAsIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDM1NDksIDQxMzQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDY5MTgsIDAsIDY5MjAsIDAsIDAsIDAsIDAsIDAsIDY5MjIsIDAsIDY5MjQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY5MjYsIDAsIDY5MzAsIDAsIDAsIDAsIDAsIDAsIDY5NzEsIDAsIDY5NzMsIDAsIDAsIDAsIDAsIDAsIDY5NzYsIDAsIAorICAgIDY5NzcsIDAsIDAsIDAsIDAsIDAsIDY5NzksIDAsIDAsIDc3MzYsIDAsIDc3MzcsIDAsIDAsIDAsIDAsIDAsIDc3NzIsIDAsIAorICAgIDc3NzMsIDAsIDAsIDAsIDc3ODQsIDAsIDAsIDAsIDAsIDAsIDc3ODUsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIAorICAgIDc4NTMsIDAsIDAsIDc4NjMsIDAsIDAsIDc4NzgsIDAsIDAsIDAsIDAsIDAsIDc4NzksIDAsIDc4OTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDc4OTcsIDAsIDAsIDAsIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIAorICAgIDgwNjUsIDAsIDAsIDAsIDAsIDAsIDgwNjYsIDAsIDgwNjcsIDAsIDAsIDAsIDAsIDAsIDgwNjgsIDAsIDgwNjksIDAsIDAsIAorICAgIDAsIDAsIDAsIDgwNzAsIDAsIDgwNzEsIDAsIDAsIDAsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDc5NDcsIAorICAgIDc5NDksIDAsIDAsIDc5NTEsIDgwNzMsIDAsIDAsIDAsIDAsIDAsIDgwNzQsIDAsIDgwNzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgwNzYsIDAsIDgwNzcsIDAsIDAsIDAsIDAsIDAsIDgwNzgsIDAsIDgwNzksIDAsIDAsIDAsIDAsIDc5NTQsIDc5NTYsIAorICAgIDc5NTUsIDc5NTcsIDAsIDAsIDAsIDAsIDc5NjIsIDc5NjQsIDc5NjMsIDc5NjUsIDAsIDAsIDAsIDAsIDc5NzAsIDc5NzIsIAorICAgIDAsIDAsIDc5NzQsIDgwODAsIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDAsIDAsIDAsIDgwODIsIDAsIAorICAgIDgwODMsIDAsIDAsIDAsIDAsIDAsIDgwODQsIDAsIDgwODUsIDAsIDAsIDAsIDAsIDAsIDgwODYsIDAsIDgwODcsIDAsIDAsIAorICAgIDAsIDAsIDc5NzgsIDc5ODAsIDAsIDAsIDc5ODIsIDgwODgsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIDgwODksIDAsIDAsIAorICAgIDAsIDAsIDAsIDgwOTAsIDAsIDgwOTEsIDAsIDAsIDAsIDAsIDAsIDgwOTIsIDAsIDgwOTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgwOTQsIDAsIDgwOTUsIDAsIDAsIDAsIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDc5ODcsIDc5ODksIDAsIDAsIAorICAgIDc5OTEsIDAsIDAsIDAsIDAsIDAsIDc5OTQsIDc5OTYsIDAsIDAsIDc5OTgsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDgwMDIsIDgwMDQsIDgwMDMsIDgwMDUsIDAsIDAsIDAsIDAsIDgwMTAsIDgwMTIsIDgwMTEsIAorICAgIDgwMTMsIDAsIDAsIDAsIDAsIDgwMTgsIDgwMjAsIDAsIDAsIDgwMjIsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgwMjcsIDgwMjksIDAsIDAsIDgwMzEsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIAorICAgIDAsIDAsIDAsIDgwMzUsIDgwMzcsIDAsIDAsIDgwMzksIDgwOTcsIDAsIDgwOTgsIDAsIDAsIDAsIDAsIDAsIDgwOTksIDAsIAorICAgIDgxMDAsIDAsIDAsIDAsIDAsIDAsIDgxMDEsIDAsIDgxMDIsIDAsIDAsIDAsIDAsIDAsIDgxMDMsIDgwNDIsIDgwNDQsIDAsIAorICAgIDAsIDgwNDYsIDgxMDQsIDAsIDAsIDAsIDAsIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDgxMDYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDgxMDcsIDAsIDgxMDgsIDAsIDAsIDAsIDAsIDAsIDgxMDksIDAsIDgxMTAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgxMTEsIDAsIDgxMTQsIDAsIDAsIDAsIDAsIDAsIDgxMzAsIDAsIDgxNzgsIDAsIDAsIDAsIDAsIDAsIDgxMTksIDgxNDEsIAorICAgIDgxNDIsIDAsIDAsIDgxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMzUsIDAsIDgxODMsIDAsIDAsIDAsIDAsIDgxNTcsIAorICAgIDgxNTgsIDAsIDAsIDgxNTksIDAsIDAsIDAsIDAsIDg2MDIsIDAsIDg2MDMsIDAsIDAsIDAsIDAsIDAsIDg2MjIsIDAsIAorICAgIDg2NTMsIDAsIDAsIDAsIDAsIDAsIDg2NTUsIDAsIDg2NTQsIDAsIDAsIDAsIDAsIDAsIDg3MDgsIDAsIDg3MTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDg3MTYsIDAsIDg3NDAsIDAsIDAsIDAsIDAsIDAsIDg3NDIsIDAsIDg3NjksIDAsIDAsIDAsIDAsIDAsIAorICAgIDg3NzIsIDAsIDg3NzUsIDAsIDAsIDAsIDAsIDAsIDg3NzcsIDAsIDg4MTMsIDAsIDAsIDAsIDAsIDAsIDg4MDIsIDAsIAorICAgIDg4MTYsIDAsIDAsIDAsIDAsIDAsIDg4MTcsIDAsIDg4MjAsIDAsIDAsIDAsIDAsIDAsIDg4MjEsIDAsIDg4MjQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDg4MjUsIDAsIDg4MzIsIDAsIDAsIDAsIDAsIDAsIDg4MzMsIDAsIDg5MjgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDg5MjksIDAsIDg4MzYsIDAsIDAsIDAsIDAsIDAsIDg4MzcsIDAsIDg4NDAsIDAsIDAsIDAsIDAsIDAsIDg4NDEsIDAsIAorICAgIDg5MzAsIDAsIDAsIDAsIDAsIDAsIDg5MzEsIDAsIDg4NzYsIDAsIDAsIDAsIDAsIDAsIDg4NzcsIDAsIDg4NzgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDg4NzksIDAsIDg5MzgsIDAsIDAsIDAsIDAsIDAsIDg5MzksIDAsIDg5NDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDg5NDEsIDAsIDAsIDEyNDM2LCAwLCAxMjM2NCwgMCwgMCwgMCwgMCwgMCwgMTIzNjYsIDAsIDEyMzY4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjM3MCwgMCwgMTIzNzIsIDAsIDAsIDAsIDAsIDAsIDEyMzc0LCAwLCAxMjM3NiwgMCwgMCwgMCwgMCwgMCwgMTIzNzgsIAorICAgIDAsIDEyMzgwLCAwLCAwLCAwLCAwLCAwLCAxMjM4MiwgMCwgMTIzODQsIDAsIDAsIDAsIDAsIDAsIDEyMzg2LCAwLCAxMjM4OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTIzOTEsIDAsIDEyMzkzLCAwLCAwLCAwLCAwLCAwLCAxMjQwMCwgMTI0MDEsIDEyNDAzLCAKKyAgICAxMjQwNCwgMCwgMCwgMCwgMCwgMTI0MDYsIDEyNDA3LCAxMjQwOSwgMTI0MTAsIDAsIDAsIDAsIDAsIDEyNDEyLCAxMjQxMywgCisgICAgMTI0NDYsIDAsIDAsIDAsIDAsIDAsIDEyNTMyLCAwLCAxMjQ2MCwgMCwgMCwgMCwgMCwgMCwgMTI0NjIsIDAsIDEyNDY0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMjQ2NiwgMCwgMTI0NjgsIDAsIDAsIDAsIDAsIDAsIDEyNDcwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTI0NzQsIDAsIDEyNDc2LCAwLCAwLCAwLCAwLCAwLCAxMjQ3OCwgMCwgMTI0ODAsIDAsIDAsIDAsIDAsIDAsIDEyNDgyLCAKKyAgICAwLCAxMjQ4NSwgMCwgMCwgMCwgMCwgMCwgMTI0ODcsIDAsIDEyNDg5LCAwLCAwLCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIAorICAgIDEyNDk5LCAxMjUwMCwgMCwgMCwgMCwgMCwgMTI1MDIsIDEyNTAzLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDAsIDAsIDEyNTA4LCAKKyAgICAxMjUwOSwgMTI1MzUsIDAsIDAsIDAsIDAsIDAsIDEyNTM2LCAwLCAxMjUzNywgMCwgMCwgMCwgMCwgMCwgMTI1MzgsIDAsIAorICAgIDEyNTQyLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgMCwgMCwgMCwgNjk3ODgsIDAsIDY5ODAzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2OTkzNCwgMCwgNjk5MzUsIDAsIDAsIDcwNDc1LCA3MDQ3NiwgMCwgMCwgNzA4NDQsIDcwODQzLCA3MDg0NiwgMCwgMCwgCisgICAgNzEwOTgsIDAsIDAsIDAsIDAsIDAsIDcxMDk5LCAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkIGNoYW5nZV9yZWNvcmRzXzNfMl8wW10gPSB7CkBAIC01MTgzLDYgKzU2OTYsNyBAQAogCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKIAl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDksIDI1NSwgMCB9LAorCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDAgfSwKIAl7IDEsIDUsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDEwLCAyNTUsIDI1NSwgMCB9LAogCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKQEAgLTUyMDQsNzkgKzU3MTgsODAgQEAKIAl7IDI1NSwgMjAsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCi0JeyAyNTUsIDE5LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAxOSwgMjU1LCAyNTUsIC0xIH0sCiAJeyAxLCAyNTUsIDI1NSwgMCwgMCB9LAogfTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfaW5kZXhbXSA9IHsKICAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAKLSAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyLCAyLCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAotICAgIDM2LCAyLCAyLCAyLCAzNywgMzgsIDIsIDM5LCAyLCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgCi0gICAgNTAsIDIsIDUxLCAyLCAyLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDIsIDU3LCA1OCwgNTksIDYwLCAyLCAyLCA2MSwgNjIsIDYzLCAKLSAgICA2NCwgNjUsIDY1LCAyLCAyLCAyLCAyLCA2NiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCAyLCAyLCAyLCA3MiwgNzMsIDc0LCAKLSAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgMiwgMiwgMiwgMiwgMiwgMiwgODIsIDIsIDIsIDIsIDIsIDIsIDgzLCAyLCAKKyAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMiwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAorICAgIDM2LCAzNywgMiwgMiwgMiwgMzgsIDM5LCAyLCA0MCwgMiwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgCisgICAgNTAsIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCA1OCwgNTksIDYwLCA2MSwgMiwgMiwgNjIsIDYzLCAKKyAgICA2NCwgNjUsIDY2LCA2NiwgMiwgMiwgMiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDIsIDIsIDIsIDc0LCA3NSwgCisgICAgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgMiwgMiwgMiwgMiwgODUsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIAotICAgIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODksIDkwLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgMiwgODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDg4LCA4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAKKyAgICA5MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTgsIDUwLCA1MCwgCisgICAgOTksIDEwMCwgNTAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgNDksIDQ5LCAKLSAgICA5NywgOTgsIDQ5LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTA4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAyLCAyLCAxMTcsIDExOCwgMTE5LCAyLCAxMjAsIAorICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAyLCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAyLCA1MCwgNTAsIDEzMiwgCisgICAgMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAyLCAyLCAxNDMsIDIsIDIsIDIsIAorICAgIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMiwgMiwgMTUxLCAyLCAxNTIsIDE1MywgMTU0LCAxNTUsIDIsIAorICAgIDIsIDE1NiwgMiwgMiwgMiwgMTU3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgMTU4LCAxNTksIDUwLCAxNjAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAyLCAyLCAyLCAxMTUsIDExNiwgMiwgMTE3LCAxMTgsIAotICAgIDExOSwgMTIwLCAxMjEsIDEyMiwgMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDIsIDIsIDIsIDIsIDIsIDIsIDEyOCwgMiwgCi0gICAgMTI5LCAxMzAsIDEzMSwgMiwgMTMyLCAyLCAxMzMsIDIsIDIsIDIsIDEzNCwgMiwgMiwgMiwgMTM1LCAxMzYsIDEzNywgMTM4LCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMzksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDE0MCwgMiwgMTQxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDE0MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgNTAsIDUwLCA1MCwgNTAsIDE2MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgNDksIDE0MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMTQ0LCAxNDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NywgMTY4LCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NywgMiwgMTQ4LCAyLCAxNDksIDIsIDIsIDE1MCwgMiwgMiwgMiwgMTUxLCAxNTIsIAotICAgIDE1MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTU0LCAxNTUsIAotICAgIDIsIDIsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAyLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE0OCwgCi0gICAgMTY4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDE3MCwgOTMsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAxNzEsIDIsIDE3MiwgMTczLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3MCwgMTcxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzQsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc2LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzIsIDE3MywgMTc0LCAyLCAxNzUsIDIsIDIsIDE3NiwgMiwgMiwgMiwgMTc3LCAxNzgsIDE3OSwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAxODEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE4MiwgCisgICAgMTgzLCAyLCAyLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMiwgNTAsIDUwLCA1MCwgNTAsIDE4OSwgMTkwLCA1MCwgMTkxLCAKKyAgICAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTgsIAorICAgIDE5OSwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyMDAsIDIsIDIwMSwgCisgICAgMjAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyMDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMjA1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAxNzcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAxNzgsIDQ5LCAxNzksIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjA3LCA1MCwgMjA4LCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjAzLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAxNzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNTUxMSw3ICs2MDI2LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OSwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTU1NzUsNyArNjA5MCw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2RhdGFbXSA9IHsKQEAgLTU2MTEsNyArNjEyNiw3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMTAsIDAsIDksIDksIDAsIDAsIDAsIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTYyMywxNiArNjEzOCwxNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKICAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU2NjAsMTYgKzYxNzUsMTYgQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU2ODUsNyArNjIwMCw3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01Njk2LDgyNyArNjIxMSwzMzggQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAogICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIAotICAgIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDQsIDAsIDAsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDEsIDEsIDAsIDAsIDAsIAotICAgIDQsIDM1LCA4LCA2LCA3LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0NSwgNDYsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKLSAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAKKyAgICAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAKKyAgICAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAKKyAgICAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAKKyAgICAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAKKyAgICAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMiwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCA0LCAwLCAwLCAKKyAgICAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCA0LCAzNiwgOCwgNiwgNywgMzcsIDM4LCAzOSwgNDAsIAorICAgIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgNDUsIDQ1LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgCi0gICAgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NTI4LDI2ICs2NTU0LDY3NiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggN2NjYjEyNi4uZDBmOWNiNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwyNDkgKzQsMjY1IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODcsIDczLCA4NCwgMjAwLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3NiwgCi0gICAgMTk3LCA4MywgNzcsIDY1LCA3NiwgMjA0LCA4MywgNzMsIDcxLCAyMDYsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDIwNiwgODksIDIwMSwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDY3LCA3NCwgMjAzLCA3NywgCi0gICAgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgNjUsIAotICAgIDIwNiwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA2NywgNzksIDc3LCA4MCwgNjUsIDg0LCA3MywgCi0gICAgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDIwNCwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgODMsIAotICAgIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY4LCA3MywgNzEsIDczLCAKLSAgICAyMTIsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA4NiwgNzksIDg3LCAKLSAgICA2OSwgMjA0LCA3MSwgODIsIDY5LCA2OSwgMjAzLCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA3NywgODUsIAotICAgIDgzLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDg0LCA3MywgNzcsIDY5LCAKLSAgICAyMTEsIDcwLCA3OSwgMjEwLCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIAotICAgIDE5NSwgODIsIDY1LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAKLSAgICAxOTgsIDg0LCA2NSwgNzcsIDczLCAyMDQsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgNjcsIDc5LCA3NywgNjYsIAotICAgIDczLCA3OCwgNzMsIDc4LCAxOTksIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA4NiwgNjUsIDIwMSwgODMsIAotICAgIDgxLCA4NSwgNjUsIDgyLCAxOTcsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDIxMiwgODYsIDY1LCA4MiwgCi0gICAgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgMjA2LCA2NSwgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIAotICAgIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgCi0gICAgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDc1LCA2NSwgODQsIDY1LCAKLSAgICA3NSwgNjUsIDc4LCAxOTMsIDE5NCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDIxMCwgNjgsIDc5LCAyMTIsIDc1LCAKLSAgICA2NSwgNzgsIDcxLCA4OCwgMjAxLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODQsIDczLCA2NiwgNjksIAotICAgIDg0LCA2NSwgMjA2LCA3OSwgMTk4LCA3MywgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2OSwgNjksIDIwNSwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA4NSwgMTI4LCA3NSwgCi0gICAgNzIsIDc3LCA2OSwgMjEwLCA4NywgNzIsIDczLCA4NCwgMTk3LCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCAKLSAgICA4MiwgNzMsIDY5LCAyMTAsIDczLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4OSwgNjksIDIwMCwgNzksIDEyOCwgCi0gICAgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNjcsIDc5LCA4MCwgODQsIDczLCAxOTUsIDgwLCAKLSAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCA3NiwgNzMsIDY1LCAyMDYsIDY4LCA2OSwgODYsIAotICAgIDY1LCA3OCwgNjUsIDcxLCA2NSwgODIsIDIwMSwgNjYsIDc2LCA2NSwgNjcsIDIwMywgODQsIDczLCA3NiwgMTk3LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA5MCwgNjksIAotICAgIDE5NiwgODQsIDcyLCA2NSwgMjA1LCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgCi0gICAgNzksIDc1LCA2OSwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDY2LCA3OSwgMjE2LCA3MiwgNjksIDY2LCAKLSAgICA4MiwgNjksIDIxNSwgNzcsIDczLCA2NSwgMjA3LCA4MCwgNzYsIDg1LCAyMTEsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIAotICAgIDY1LCA4MiwgNjgsIDIxMSwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgCi0gICAgNzEsIDIxMSwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIDg0LCAKLSAgICAyMDAsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDIxMywgODQsIDg3LCAKLSAgICA3OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAotICAgIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDc2LCA2OSwgMTk4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3OSwgMTI4LCA4NCwgODcsIDIwNywgCi0gICAgNzIsIDY5LCA2NSwgODYsIDIxNywgNzksIDg2LCA2OSwgMjEwLCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIAotICAgIDIxMiwgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4NSwgMjA4LCA3NiwgNzksIAotICAgIDIxNSwgNzIsIDY1LCAyMDAsIDc5LCA3OCwgMTk3LCA2OCwgNzksIDg3LCAyMDYsIDcyLCA3MywgNzEsIDIwMCwgNzAsIDg1LCAKLSAgICA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIAotICAgIDY1LCAyMDQsIDg0LCA2NSwgMTk5LCA2NiwgNjUsIDgyLCAxMjgsIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3OCwgODUsIAotICAgIDc3LCA2OSwgODIsIDczLCAxOTUsIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgODQsIDcyLCA4MiwgNjksIDE5NywgCi0gICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCAKLSAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDg0LCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIAotICAgIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzIsIDczLCA4MiwgCi0gICAgNjUsIDcxLCA2NSwgNzgsIDE5MywgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCAKLSAgICA3OCwgMTk5LCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIAotICAgIDIwMSwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCA3MSwgMjEzLCA4NiwgNzksIDY3LCA2NSwgCi0gICAgNzYsIDczLCAxOTUsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDc0LCA2OSwgNjksIDIwNSwgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIAotICAgIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NywgCi0gICAgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzAsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDY1LCAxMjgsIDcyLCAKLSAgICA2NSwgNzYsIDE5OCwgNzcsIDY1LCA4MiwgMjAzLCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgMjE1LCAKLSAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTMsIDg0LCA3MiwgNjUsIDIwMSwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIAotICAgIDE5NywgNjgsIDc5LCA4NCwgMjExLCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA2NywgNzIsIDY1LCAyMDUsIAotICAgIDc2LCA4NSwgMTk3LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgCi0gICAgNzUsIDY1LCAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIAotICAgIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgCi0gICAgNzIsIDY1LCA3NywgOTAsIDE5MywgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCAKLSAgICA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIAotICAgIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcwLCA3MywgODYsIDY5LCAKLSAgICAxMjgsIDgwLCA2NSwgMTI4LCA4OSwgNjUsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODMsIDczLCA4OCwgMTI4LCA2OSwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc4LCA2NSwgMTI4LCA4MywgNjksIDg2LCAKLSAgICA2OSwgNzgsIDEyOCwgNzYsIDc5LCA3OCwgMTk5LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODUsIDgyLCA3NSwgNzMsIAotICAgIDE5NSwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3OSwgODAsIDY5LCAyMDYsIDgyLCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDg2LCA3MywgNjksIDIxMiwgCi0gICAgNzYsIDY1LCAyMDcsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCAKLSAgICA5MCwgOTAsIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgCi0gICAgMTI4LCA5MCwgOTAsIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgCi0gICAgOTAsIDc5LCAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAKLSAgICAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIAotICAgIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIAotICAgIDkwLCA2OSwgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgCi0gICAgMTI4LCA5MCwgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgCi0gICAgOTAsIDY1LCAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCAKLSAgICA3NCwgMTI4LCA5MCwgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCA2NSwgODIsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4MywgNzMsIDcxLCAyMDYsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgCisgICAgNzYsIDY1LCA2NiwgNzYsIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDc2LCA2NSwgODQsIDczLCAyMDYsIDY3LCA4NSwgNzgsIAorICAgIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgODksIDIwMSwgNjcsIDc0LCAyMDMsIAorICAgIDc3LCA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCAKKyAgICA2NSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNjUsIDg0LCA3MywgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgMjA0LCA2OCwgNzMsIDcxLCA3MywgMjEyLCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgCisgICAgNjgsIDczLCA2NSwgMjA2LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgODMsIDczLCA3MSwgNzgsIDg3LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODYsIDc5LCA4NywgNjksIDIwNCwgODQsIDczLCA3NywgNjksIDIxMSwgNjYsIAorICAgIDY1LCA3NywgODUsIDIwNSwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNjUsIDc4LCA2NSwgODQsIDc5LCA3NiwgCisgICAgNzMsIDY1LCAyMDYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzEsIDgyLCAKKyAgICA2OSwgNjksIDIwMywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgCisgICAgMTk3LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgMjEwLCA2NywgODksIDgyLCA3MywgCisgICAgNzYsIDc2LCA3MywgMTk1LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAKKyAgICAxOTksIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCisgICAgMTk4LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA4NCwgNjUsIDc3LCAKKyAgICA3MywgMjA0LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg2LCAKKyAgICA2NSwgMjAxLCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgMTk3LCAKKyAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgNjUsIDgyLCA4MiwgNzksIDIxNSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjUsIAorICAgIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDY2LCAKKyAgICA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA4NywgNzIsIDczLCA4NCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgCisgICAgMjAzLCA2NSwgMTI4LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgMjEwLCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAxOTMsIDg1LCAxMjgsIDc3LCA4OSwgNjUsIDc4LCAKKyAgICA3NywgNjUsIDIxMCwgNjgsIDc5LCAyMTIsIDc1LCA2NSwgNzgsIDcxLCA4OCwgMjAxLCA3NSwgNzMsIDc1LCA2NSwgNzUsIAorICAgIDg1LCAyMDEsIDc3LCA2OSwgNzgsIDY4LCAxOTcsIDczLCAxMjgsIDc5LCAxOTgsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIAorICAgIDIwNiwgNzksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIAorICAgIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA3NywgNjksIDY5LCAyMDUsIDY3LCA3OSwgCisgICAgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAKKyAgICAyMTEsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODksIDY5LCAyMDAsIDY3LCAKKyAgICA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDgwLCA3NiwgODUsIDIxMSwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIAorICAgIDY1LCA4MiwgMjAxLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgCisgICAgMjA2LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCAxMjgsIDY2LCA3OSwgMjE2LCA4NCwgNzMsIDc2LCAxOTcsIDY4LCA4NSwgODAsIAorICAgIDc2LCA3OSwgODksIDY1LCAyMDYsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgCisgICAgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCAKKyAgICA3OSwgNzgsIDY5LCAxMjgsIDIxMywgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDg0LCA4NywgNzksIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgCisgICAgNzMsIDY1LCAyMDcsIDg1LCAyMDgsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAKKyAgICAyMDYsIDc5LCA4NiwgNjksIDIxMCwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDc3LCA3OSwgNzgsIAorICAgIDE5OSwgNzksIDc4LCAxOTcsIDgwLCA2NSwgNzIsIDY1LCA4NywgMjAwLCA4NCwgODcsIDIwNywgNjgsIDc5LCA4NywgMjA2LCAKKyAgICA3MywgNzgsIDY4LCA2OSwgMjE2LCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3NiwgNzksIDIxNSwgODYsIAorICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA4NCwgNzIsIDgyLCA2OSwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgCisgICAgODQsIDIwMCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCAyMTIsIDc3LCA2OSwgODIsIDc5LCA3MywgODQsIDczLCAKKyAgICAxOTUsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgODIsIDIwMywgODMsIDY3LCA4MiwgNzMsIAorICAgIDgwLCAyMTIsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NiwgCisgICAgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDc2LCA2OSwgMTk4LCAKKyAgICA3MiwgNzMsIDcxLCAyMDAsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA3MywgNzgsIAorICAgIDcyLCA2NSwgNzYsIDE5MywgNzgsIDg1LCA3NywgNjksIDgyLCA3MywgMTk1LCA2NiwgNjUsIDgyLCAxMjgsIDg0LCA3OSwgCisgICAgNzgsIDE5NywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDcyLCA4NSwgNzgsIDcxLCA2NSwgODIsIDczLCA2NSwgMjA2LCAKKyAgICA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NSwgNzcsIDE5NCwgNzAsIDc5LCA4NSwgODIsIDEyOCwgNjYsIAorICAgIDY1LCA4MiwgMTk0LCA3MiwgNjUsIDIwMCwgNzIsIDY1LCAxMjgsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDcwLCA4NSwgNzYsIAorICAgIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCA2NSwgCisgICAgMjA0LCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDcyLCA2NSwgCisgICAgNzYsIDE5OCwgNzYsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgNjUsIDY3LCAKKyAgICA4NSwgODQsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAorICAgIDY5LCAyMTAsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgCisgICAgODIsIDg1LCA2NywgMjAzLCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgODAsIDY5LCAyMDYsIDcyLCA3MywgODIsIDY1LCAKKyAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIAorICAgIDcxLCAyMTMsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKKyAgICAyMTEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIDIwMSwgNzEsIAorICAgIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgMjExLCA3NCwgNjksIDY5LCAKKyAgICAyMDUsIDgwLCA2NSwgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAyMDUsIDY4LCA3OSwgODQsIDIxMSwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDY3LCA4NSwgODIsIAorICAgIDgzLCA3MywgODYsIDE5NywgNzcsIDY1LCAxMjgsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDgzLCAxMjgsIDgzLCA3MywgODgsIAorICAgIDEyOCwgODcsIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDg5LCA2NSwgCisgICAgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjUsIDEyOCwgCisgICAgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDkwLCAKKyAgICA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCA5MCwgODksIAorICAgIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCAxMjgsIAorICAgIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIDkwLCA5MCwgCisgICAgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIDEyOCwgCisgICAgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIDkwLCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgOTAsIAorICAgIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCA4MCwgCisgICAgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCA5MCwgCisgICAgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIDEyOCwgCisgICAgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAxMjgsIDkwLCAKKyAgICA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDIwMiwgOTAsIDg3LCA2NSwgODIsIAogICAgIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCA4OCwgCiAgICAgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCA2NiwgCi0gICAgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCA4MywgNzIsIDY1LCAxMjgsIDkwLCA4MiwgCi0gICAgNjUsIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCA3OSwgMTI4LCA5MCwgCi0gICAgNzksIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAxOTMsIDkwLCA3NCwgCi0gICAgNjksIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCA3MywgNzgsIDc5LCAKLSAgICA4MiwgMTI4LCA5MCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIAotICAgIDEyOCwgOTAsIDczLCA2OCwgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAKLSAgICAyMDEsIDkwLCA3MiwgODksIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCAKLSAgICA5MCwgNzIsIDg5LCA4MiwgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIAotICAgIDY5LCAxMjgsIDkwLCA3MiwgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIAotICAgIDkwLCA3MiwgODUsIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgCi0gICAgNzIsIDg1LCA3OSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCAKLSAgICA3MiwgODUsIDEyOCwgOTAsIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIAotICAgIDEyOCwgOTAsIDcyLCA3OSwgNzksIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCA2OSwgCi0gICAgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgCi0gICAgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgCi0gICAgNjUsIDg4LCAxMjgsIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAKLSAgICAxMjgsIDkwLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCAKLSAgICA3MiwgMTI4LCA5MCwgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCAKLSAgICA2OSwgNzgsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIAotICAgIDkwLCA2OSwgNTAsIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIAotICAgIDkwLCA2NSwgODksIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgCi0gICAgMTI4LCA5MCwgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCA3NywgODgsIDEyOCwgCi0gICAgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgCi0gICAgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIAotICAgIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIAotICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgCi0gICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAKLSAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIAotICAgIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgCi0gICAgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgCi0gICAgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgCi0gICAgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgCi0gICAgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgCi0gICAgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIAotICAgIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCAKLSAgICA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgCi0gICAgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgCi0gICAgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAKLSAgICAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAKLSAgICAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCAKLSAgICA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIAotICAgIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgCi0gICAgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKLSAgICAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgCi0gICAgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCAKLSAgICA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIAotICAgIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgCi0gICAgODgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCAKLSAgICA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIAotICAgIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCAKLSAgICA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCAKLSAgICA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgCi0gICAgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgCi0gICAgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCAKLSAgICA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCAKLSAgICA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCAKLSAgICA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIAotICAgIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgNzMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgCi0gICAgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgCi0gICAgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCAKLSAgICA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCAKLSAgICA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAKLSAgICAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCAKLSAgICA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIAotICAgIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgCi0gICAgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAKLSAgICAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzIsIAotICAgIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIAotICAgIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIAotICAgIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgCi0gICAgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgCi0gICAgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgCi0gICAgODAsIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCAKLSAgICA3OCwgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIAotICAgIDc1LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgCi0gICAgMTI4LCA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgCi0gICAgODksIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIAotICAgIDEyOCwgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIAotICAgIDcxLCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIAotICAgIDg5LCA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgCi0gICAgODksIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCAKLSAgICA2NywgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIAotICAgIDEyOCwgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgCi0gICAgMTI4LCA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIAotICAgIDg5LCA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIAotICAgIDg5LCA4MCwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIAotICAgIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIAotICAgIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIAotICAgIDg3LCA2NSwgMTI4LCA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIAotICAgIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgCi0gICAgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIAotICAgIDg4LCA3OSwgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIAotICAgIDgyLCA3OSwgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIAotICAgIDg4LCA3MywgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIAotICAgIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIAotICAgIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAKLSAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCAKLSAgICA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIAotICAgIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIAotICAgIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIAotICAgIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgCi0gICAgMjAwLCA4NywgODIsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgCi0gICAgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAKLSAgICAxMjgsIDg3LCA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIAotICAgIDgyLCAxOTYsIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIAotICAgIDc5LCA3OSwgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAKLSAgICAxMjgsIDg3LCA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCAKLSAgICA3NywgNjUsIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIAotICAgIDc2LCA3OSwgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIAotICAgIDg3LCA3MywgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDc4LCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCAKLSAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIAotICAgIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgNzgsIDEyOCwgODcsIAotICAgIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgNjgsIDY5LCA0NSwgCi0gICAgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCAKLSAgICA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIAotICAgIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgCi0gICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCAKLSAgICA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIAotICAgIDY1LCA3NiwgNjksIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIAotICAgIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgCi0gICAgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgCi0gICAgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNjgsIAotICAgIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NSwgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgCi0gICAgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAKLSAgICAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAKLSAgICAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCAKLSAgICA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIAotICAgIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgCi0gICAgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCAKLSAgICA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDc2LCA2NSwgMTI4LCA4NywgNjUsIDgzLCA3NiwgCi0gICAgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIAotICAgIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAKLSAgICAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCAKLSAgICA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIAotICAgIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgMTI4LCAKKyAgICA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIAorICAgIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCAKKyAgICA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIAorICAgIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCA3MywgCisgICAgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIDY4LCAKKyAgICAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCA4OSwgCisgICAgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIDgyLCAKKyAgICAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIDcyLCAKKyAgICA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCA5MCwgCisgICAgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDc5LCAKKyAgICA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIAorICAgIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIAorICAgIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgCisgICAgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCA5MCwgCisgICAgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIDY1LCAKKyAgICA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIDY5LCAKKyAgICA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIDkwLCAKKyAgICA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAxMjgsIAorICAgIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgCisgICAgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIDY1LCAKKyAgICA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIAorICAgIDg4LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIAorICAgIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCAKKyAgICA5MCwgNjUsIDU1LCAxMjgsIDkwLCAxOTMsIDkwLCA0OCwgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCisgICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgCisgICAgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIAorICAgIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgCisgICAgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCAKKyAgICA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCAKKyAgICA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAKKyAgICAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAKKyAgICAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAKKyAgICAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAKKyAgICAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCAKKyAgICA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIAorICAgIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCAKKyAgICA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCAKKyAgICA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIAorICAgIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNzQsIDEyOCwgODksIDg1LCA2OSwgODEsIAorICAgIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIDY4LCAyMDAsIDg5LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgCisgICAgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCAKKyAgICA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIAorICAgIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCA4OSwgODIsIDg5LCAxMjgsIDg5LCAKKyAgICA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgNzUsIAorICAgIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCA3OSwgCisgICAgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIDg4LCAKKyAgICAxMjgsIDg5LCA3OSwgODcsIDY4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIAorICAgIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgCisgICAgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIAorICAgIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgCisgICAgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCisgICAgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCAKKyAgICA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIAorICAgIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIAorICAgIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIAorICAgIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIAorICAgIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgCisgICAgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCAKKyAgICA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIAorICAgIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgCisgICAgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCAKKyAgICA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIAorICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCAKKyAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgCisgICAgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIAorICAgIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAKKyAgICAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIAorICAgIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgCisgICAgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCAKKyAgICA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCAKKyAgICA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCAKKyAgICA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIAorICAgIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIAorICAgIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgCisgICAgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgCisgICAgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgCisgICAgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAKKyAgICAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAKKyAgICA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIAorICAgIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgCisgICAgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIAorICAgIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIAorICAgIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgCisgICAgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCAKKyAgICA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCAKKyAgICA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIAorICAgIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgCisgICAgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgCisgICAgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCAKKyAgICA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIAorICAgIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIAorICAgIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIAorICAgIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgCisgICAgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgCisgICAgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgCisgICAgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIAorICAgIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIAorICAgIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgCisgICAgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgCisgICAgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgCisgICAgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgCisgICAgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgCisgICAgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgCisgICAgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCisgICAgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAKKyAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIAorICAgIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIAorICAgIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIAorICAgIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIAorICAgIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIAorICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIAorICAgIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgCisgICAgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAKKyAgICAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgNjUsIAorICAgIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAxMjgsIAorICAgIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgCisgICAgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgNzksIDgyLCAKKyAgICAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCA4NywgNzksIAorICAgIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIDY4LCA4MywgCisgICAgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgNzksIDIwNiwgCisgICAgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMjExLCAKKyAgICA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIDgzLCA3OSwgCisgICAgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIDg0LCA3MiwgCisgICAgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAyMDYsIDg3LCAKKyAgICA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgNzEsIDgzLCAKKyAgICAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDg3LCAKKyAgICA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIAorICAgIDc4LCAxMjgsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgCisgICAgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCAKKyAgICA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgCisgICAgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCAKKyAgICA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCisgICAgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCAKKyAgICA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIAorICAgIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIAorICAgIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgCisgICAgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgCisgICAgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgCisgICAgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDczLCAxMjgsIDg3LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA3MSwgNjksIAorICAgIDEyOCwgODcsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NiwgMTI4LCA4NywgNjksIDY1LCA4MiwgCisgICAgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCA4OSwgCisgICAgMTI4LCA4NywgNjUsIDIxNywgODcsIDY1LCA4OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODgsIDEyOCwgODcsIDY1LCA4NywgCisgICAgNDUsIDY1LCA4OSwgNzMsIDc4LCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgODcsIDY1LCA4NywgMTI4LCA4NywgNjUsIAorICAgIDIxNSwgODcsIDY1LCA4NiwgMjE3LCA4NywgNjUsIDg2LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4NiwgNjksIDgzLCAxMjgsIAorICAgIDg3LCA2NSwgODYsIDY5LCAxMjgsIDg3LCA2NSwgODYsIDE5NywgODcsIDY1LCA4NSwgMTI4LCA4NywgNjUsIDg0LCA4NCwgCisgICAgNzksIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCA3NywgNjksIDc2LCA3OSwgNzgsIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDg3LCA2NSwgODQsIDY5LCAyMTAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4NywgNjUsIDg0LCAxMjgsIDg3LCAKKyAgICA2NSwgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgODMsIDg0LCA2OSwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgCisgICAgMTI4LCA4NywgNjUsIDgzLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDc2LCA2NSwgMTI4LCAKKyAgICA4NywgNjUsIDgzLCA3NiwgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNjUsIAorICAgIDc2LCA3NiwgNjUsIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDgyLCA2NSwgNzgsIDE5OSwgCisgICAgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAKKyAgICAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIAorICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4NywgNjUsIDc2LCA3NiwgMTI4LCA4NywgNjUsIDc2LCAyMDQsIDg3LCA2NSwgCisgICAgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCAKKyAgICA3MywgODMsIDg0LCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCAKKyAgICA4NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIAogICAgIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgCiAgICAgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCAKICAgICA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIApAQCAtMjU4LDEwMCArMjc0LDEwMiBAQAogICAgIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgCiAgICAgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCAKICAgICA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCAKLSAgICA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODUsIDEyOCwgCi0gICAgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIDg2LCA4NSwgODAsIDEyOCwgCi0gICAgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgODMsIDEyOCwgODYsIDg0LCAKLSAgICAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgNTcsIDU1LCAxMjgsIDg2LCAKLSAgICA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAxMjgsIDg2LCA4MywgNTcsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNTcsIDQ4LCAxMjgsIAotICAgIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIDEyOCwgODYsIDgzLCA1NiwgCi0gICAgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIDgzLCA1NiwgNTIsIDEyOCwgCi0gICAgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgNDksIDEyOCwgODYsIDgzLCAKLSAgICA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgODMsIDU1LCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCA1MywgMTI4LCA4NiwgODMsIAotICAgIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCA4NiwgODMsIDU1LCA0OSwgCi0gICAgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU3LCAxMjgsIDg2LCA4MywgCi0gICAgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIDg2LCA4MywgNTQsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgNTQsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTcsIAotICAgIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCA1MywgNTQsIDEyOCwgODYsIAotICAgIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MywgCi0gICAgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MywgMTI4LCA4NiwgCi0gICAgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUyLCAKLSAgICA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUyLCA1MSwgMTI4LCAKLSAgICA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCA0OCwgMTI4LCA4NiwgODMsIAotICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTEsIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIDUyLCAxMjgsIDg2LCA4MywgCi0gICAgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTEsIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTYsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTYsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTMsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTAsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKLSAgICA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUwLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTUsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTIsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDksIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NywgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKLSAgICA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ5LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTcsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTQsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTEsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDgsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTcsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTEsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgCi0gICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCAKLSAgICA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTYsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTMsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTAsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU0LCAKLSAgICA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUwLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTUsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTIsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDksIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NywgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUyLCAKLSAgICA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNDksIAotICAgIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTcsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTQsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTEsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDgsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NiwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUwLCAKLSAgICA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNDksIAotICAgIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTYsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTMsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTAsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NSwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKLSAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNDksIAotICAgIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgCi0gICAgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAKLSAgICAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgCi0gICAgODYsIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNjcsIDY1LCAKLSAgICA3OCwgNzksIDEyOCwgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIAotICAgIDczLCA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgCi0gICAgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCAKKyAgICA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA3NCwgMTI4LCA4NiwgODcsIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgCisgICAgODYsIDg1LCA4NSwgMTI4LCA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIDg4LCAxMjgsIDg2LCA4NSwgODIsIDEyOCwgCisgICAgODYsIDg1LCA4MCwgMTI4LCA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIDg1LCA2OSwgODEsIDEyOCwgODYsIDg0LCAKKyAgICA4MywgMTI4LCA4NiwgODQsIDEyOCwgODYsIDgzLCA1NywgNTcsIDEyOCwgODYsIDgzLCA1NywgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA1NywgNTUsIDEyOCwgODYsIDgzLCA1NywgNTQsIDEyOCwgODYsIDgzLCA1NywgNTMsIDEyOCwgODYsIDgzLCA1NywgNTIsIAorICAgIDEyOCwgODYsIDgzLCA1NywgNTEsIDEyOCwgODYsIDgzLCA1NywgNTAsIDEyOCwgODYsIDgzLCA1NywgNDksIDEyOCwgODYsIAorICAgIDgzLCA1NywgNDgsIDEyOCwgODYsIDgzLCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NiwgCisgICAgMTI4LCA4NiwgODMsIDU2LCA1NSwgMTI4LCA4NiwgODMsIDU2LCA1NCwgMTI4LCA4NiwgODMsIDU2LCA1MywgMTI4LCA4NiwgCisgICAgODMsIDU2LCA1MiwgMTI4LCA4NiwgODMsIDU2LCA1MSwgMTI4LCA4NiwgODMsIDU2LCA1MCwgMTI4LCA4NiwgODMsIDU2LCAKKyAgICA0OSwgMTI4LCA4NiwgODMsIDU2LCA0OCwgMTI4LCA4NiwgODMsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNTUsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU1LCAxMjgsIDg2LCA4MywgNTUsIDU0LCAxMjgsIDg2LCA4MywgNTUsIAorICAgIDUzLCAxMjgsIDg2LCA4MywgNTUsIDUyLCAxMjgsIDg2LCA4MywgNTUsIDUxLCAxMjgsIDg2LCA4MywgNTUsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNTUsIDEyOCwgODYsIDgzLCA1NCwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA1NCwgNTYsIDEyOCwgODYsIDgzLCA1NCwgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA1NCwgNTMsIDEyOCwgODYsIDgzLCA1NCwgNTIsIDEyOCwgODYsIDgzLCA1NCwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1NCwgNTAsIDEyOCwgODYsIDgzLCA1NCwgNDksIDEyOCwgODYsIDgzLCA1NCwgNDgsIDEyOCwgODYsIDgzLCA1NCwgMTI4LCAKKyAgICA4NiwgODMsIDUzLCA1NywgMTI4LCA4NiwgODMsIDUzLCA1NiwgMTI4LCA4NiwgODMsIDUzLCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUzLCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUzLCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTIsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTIsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MSwgNTYsIDEyOCwgODYsIAorICAgIDgzLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MSwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MSwgNTAsIDEyOCwgODYsIDgzLCA1MSwgNDksIDEyOCwgCisgICAgODYsIDgzLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MywgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNDksIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTUsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNDksIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNDksIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU3LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU3LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTYsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU3LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU1LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU1LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTQsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUzLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTUsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNDksIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUxLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTcsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ5LCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTYsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgCisgICAgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAKKyAgICAxMjgsIDg2LCA3OSwgODUsIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDIxMSwgODYsIDc5LCA4MCwgMTI4LCA4NiwgCisgICAgNzksIDc5LCA3MywgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgODYsIDc5LCA3NiwgODUsIDc3LCAKKyAgICAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDY1LCA3NiwgNzYsIAorICAgIDEyOCwgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgNzksIDEyOCwgODYsIDc5LCA3NiwgNjUsIDgwLCA4NSwgMjAzLCA4NiwgCisgICAgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgNzMsIDY3LCA2OSwgNzYsIDY5LCAKKyAgICA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg5LCA3OSwgMTI4LCA4NiwgNzMsIAogICAgIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgCiAgICAgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCAKICAgICA3MywgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIApAQCAtMzYwLDEyMyArMzc4LDEyNyBAQAogICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCiAgICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKICAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgCi0gICAgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCAKLSAgICA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIAotICAgIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgCi0gICAgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCAKLSAgICA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIAotICAgIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MywgMTI4LCA4NiwgNzAsIDY1LCAxMjgsIDg2LCA2OSwgCi0gICAgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgCi0gICAgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCAKLSAgICA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCAKLSAgICA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKLSAgICA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKLSAgICA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKLSAgICA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKLSAgICA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIAotICAgIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgCi0gICAgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCAKLSAgICA4MywgMTI4LCA4NiwgNjksIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCAKLSAgICA2OSwgNzIsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIAotICAgIDEyOCwgODYsIDY5LCAxOTcsIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIAotICAgIDg2LCA2NSwgODUsIDEyOCwgODYsIDY1LCA4NCwgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgCi0gICAgODQsIDc4LCA2OSwgODMsIDIxMSwgODYsIDY1LCA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCAKLSAgICA2NSwgODIsIDczLCA3NSwgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCA4NiwgNjUsIDgyLCA2OSwgCi0gICAgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgMTI4LCA4NiwgNjUsIDc4LCAKLSAgICA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgODYsIDY1LCA3NywgNjUsIAotICAgIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgMTI4LCA4NiwgNjUsIDczLCAKLSAgICAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCAxMjgsIDg2LCA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgCi0gICAgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCA4NiwgNDgsIDUxLCA1MiwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgCi0gICAgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIDQ4LCA1MSwgNTAsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCAKLSAgICA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIAotICAgIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIDU1LCAxMjgsIDg2LCA0OCwgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAKLSAgICAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIDg2LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgNDgsIDUwLCA0OSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIAotICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCi0gICAgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCAKLSAgICA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgMTI4LCA4NiwgNDgsIDQ5LCA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCAKLSAgICA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgNDgsIDQ5LCA1MywgMTI4LCA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCAxMjgsIDg2LCA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgCi0gICAgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDEyOCwgODYsIDQ4LCA0OCwgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIDQ4LCA0OCwgNTEsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgCi0gICAgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIAotICAgIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIAotICAgIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgCi0gICAgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCAKLSAgICA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIAotICAgIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgCi0gICAgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgCi0gICAgODUsIDgzLCA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgCi0gICAgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCAKLSAgICA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCAKLSAgICA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIAotICAgIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIAotICAgIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKLSAgICAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgODMsIAotICAgIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCA3MiwgCi0gICAgMjEyLCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIAotICAgIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODUsIDc5LCA3OCwgMTI4LCA4NSwgCi0gICAgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDc1LCA3OCwgNzksIDg3LCAKLSAgICA3OCwgMTI4LCA4NSwgNzgsIDczLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIAotICAgIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCA3OCwgNzMsIDIxMiwgODUsIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgCi0gICAgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA2OCwgMjA3LCA4NSwgNzgsIDY4LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIDc4LCAxOTcsIDg1LCA3OCwgNjgsIAotICAgIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgODUsIDc4LCA2OCwgCi0gICAgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIDE5MywgODUsIDc4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDY4LCAKLSAgICAxMjgsIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDg1LCA3OCwgNjUsIDc3LCA4NSwgODMsIDY5LCAxOTYsIDg1LCA3OCwgNjUsIAotICAgIDEyOCwgODUsIDIwNiwgODUsIDc3LCA4NSwgNzcsIDEyOCwgODUsIDc3LCA4NSwgMjA1LCA4NSwgNzcsIDY2LCA4MiwgNjksIAotICAgIDc2LCA3NiwgNjUsIDEyOCwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDE5MywgODUsIDc3LCA2NiwgNzMsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDE5NywgODYsIDczLCA3OCwgMTI4LCAKKyAgICA4NiwgNzMsIDc2LCA3NiwgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDg2LCA3MywgNjksIDg3LCA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgCisgICAgODQsIDEyOCwgODYsIDczLCA2OSwgMjEyLCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgCisgICAgNjgsIDc0LCA0NSwgNTAsIDEyOCwgODYsIDczLCA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCAKKyAgICA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIAorICAgIDczLCA2NywgODQsIDc5LCA4MiwgMjE3LCA4NiwgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDcwLCA2NSwgCisgICAgMTI4LCA4NiwgNjksIDg5LCA5MCwgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIAorICAgIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgCisgICAgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCAKKyAgICA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIAorICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCisgICAgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCA4MiwgMTI4LCA4NiwgNjksIAorICAgIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgCisgICAgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIAorICAgIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODUsIDEyOCwgODYsIAorICAgIDY1LCA4NCwgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgCisgICAgODYsIDY1LCA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIAorICAgIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgODQsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgCisgICAgNjUsIDgyLCA3MywgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCAKKyAgICA4NiwgNjUsIDgyLCA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgCisgICAgMTI4LCA4NiwgNjUsIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIAorICAgIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgCisgICAgMTI4LCA4NiwgNjUsIDc0LCAxMjgsIDg2LCA2NSwgNzMsIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDIwMCwgODYsIAorICAgIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNTIsIDQ4LCAxMjgsIDg2LCA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAKKyAgICA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCAKKyAgICA4NiwgNDgsIDUxLCA1MiwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIAorICAgIDQ4LCA1MSwgNTAsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgCisgICAgNTEsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCAKKyAgICA1MCwgNTcsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIAorICAgIDU1LCAxMjgsIDg2LCA0OCwgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDg2LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgCisgICAgNDgsIDUwLCA0OSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCAKKyAgICA0OCwgNTAsIDQ4LCA3NCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIAorICAgIDg2LCA0OCwgNTAsIDQ4LCA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAKKyAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAorICAgIDY2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgCisgICAgMTI4LCA4NiwgNDgsIDQ5LCA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA1MywgMTI4LCA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCAKKyAgICA1MCwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIAorICAgIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDg2LCA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgODYsIDQ4LCA0OCwgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgCisgICAgNDgsIDQ5LCA3MywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCAKKyAgICA0OCwgNDgsIDQ5LCA3MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIAorICAgIDg2LCA0OCwgNDgsIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgCisgICAgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIDg3LCA4NSwgMTI4LCA4NSwgODUsIDg5LCAKKyAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCA4NSwgODUsIAorICAgIDg1LCA1MCwgMTI4LCA4NSwgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIDgzLCA4NSwgCisgICAgNTEsIDEyOCwgODUsIDgzLCA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgODUsIDc3LCAKKyAgICA4OCwgMTI4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCA4NSwgODMsIAorICAgIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCA4NSwgODMsIAorICAgIDY5LCA0NSwgNDksIDEyOCwgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCA4NSwgODIsIAorICAgIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIDgyLCA4NSwgCisgICAgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIDgyLCA3MywgCisgICAgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgNjUsIDEyOCwgCisgICAgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKKyAgICA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIAorICAgIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgCisgICAgNzksIDIwNiwgODUsIDgwLCA4MywgNzMsIDY4LCA2OSwgNDUsIDY4LCA3OSwgODcsIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgMjEyLCA4NSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIAorICAgIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIAorICAgIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgNzgsIDEyOCwgODUsIDc4LCA3NSwgMTI4LCA4NSwgNzgsIDczLCA4NiwgCisgICAgNjksIDgyLCA4MywgNjUsIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCAKKyAgICA3OCwgNzMsIDIxMiwgODUsIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIAorICAgIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA3MywgNjcsIDc5LCA4MiwgMjA2LCA4NSwgNzgsIDY4LCAyMDcsIDg1LCA3OCwgCisgICAgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgNzgsIDE5NywgODUsIDc4LCAKKyAgICA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA4NSwgNzgsIAorICAgIDY4LCA2OSwgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIDE5MywgODUsIDc4LCA2NywgCisgICAgNjksIDgyLCA4NCwgNjUsIDczLCA3OCwgODQsIDIxNywgODUsIDc4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIAorICAgIDY4LCAxMjgsIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDg1LCA3OCwgNjUsIDc3LCA4NSwgODMsIDY5LCAxOTYsIDg1LCA3OCwgCisgICAgNjUsIDEyOCwgODUsIDIwNiwgODUsIDc3LCA4NSwgNzcsIDEyOCwgODUsIDc3LCA4NSwgMjA1LCA4NSwgNzcsIDY2LCA4MiwgCisgICAgNjksIDc2LCA3NiwgNjUsIDEyOCwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDE5MywgODUsIDc3LCA2NiwgNzMsIDc4LCAKICAgICAxMjgsIDg1LCA3NSwgODUsIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIAogICAgIDgyLCA2NSwgMTI4LCA4NSwgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgCiAgICAgNzgsIDc4LCAxMjgsIDg1LCA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKQEAgLTQ5OSw1MDUgKzUyMSw1NzYgQEAKICAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA4NSwgNDgsIAogICAgIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDg1LCA0OCwgCiAgICAgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDg1LCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgNzMsIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIAotICAgIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIDcxLCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgCi0gICAgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgCi0gICAgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgCi0gICAgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgCi0gICAgODQsIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIAotICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIAotICAgIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgCi0gICAgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCAKLSAgICA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIAotICAgIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgCi0gICAgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKLSAgICA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgCi0gICAgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKLSAgICA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgCi0gICAgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKLSAgICA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgCi0gICAgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCAKLSAgICA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgCi0gICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIAotICAgIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIAotICAgIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgCi0gICAgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCAKLSAgICA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgCi0gICAgMTI4LCA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA3NSwgNzMsIDgzLCAKLSAgICAyMDAsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIAotICAgIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgCi0gICAgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCAKLSAgICA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIAotICAgIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgCi0gICAgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgCi0gICAgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCAKLSAgICA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIAotICAgIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIAotICAgIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgCi0gICAgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgCi0gICAgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIAotICAgIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NSwgCi0gICAgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgCi0gICAgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIAotICAgIDIwMywgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCA2OSwgCi0gICAgMTk5LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgCi0gICAgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAKLSAgICAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCAKLSAgICA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIAotICAgIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCAKLSAgICA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIAotICAgIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCAKLSAgICA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgCi0gICAgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCAKLSAgICA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgCi0gICAgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCAKLSAgICA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIAotICAgIDczLCA4NCwgNzksIDIxMSwgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgCi0gICAgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCAKLSAgICA4MCwgNzksIDY4LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCAxOTcsIAotICAgIDg0LCA4MiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIDg0LCA4MiwgNzMsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCA3NywgNzksIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDczLCA3MSwgNzksIDgyLCAKLSAgICA3MSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDgyLCA3MywgNzAsIAotICAgIDc5LCA3NiwgNzMsIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgODIsIDczLCA2OCwgCi0gICAgNjksIDc4LCAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCAKLSAgICA4NSwgNzYsIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIAotICAgIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCAKLSAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIAotICAgIDEyOCwgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgCi0gICAgNzgsIDY4LCAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIAotICAgIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgCi0gICAgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4MiwgNjksIDE5NywgODQsIDgyLCA2OSwgNjUsIDY4LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDg0LCA4MiwgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgCi0gICAgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgMjEyLCA4NCwgODIsIDY1LCAKLSAgICA3OCwgODMsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCA4MywgCi0gICAgODMsIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3NywgODcsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA3NywgMTI4LCAKLSAgICA4NCwgODIsIDY1LCAyMDUsIDg0LCA4MiwgNjUsIDczLCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3MywgMjA2LCA4NCwgODIsIAotICAgIDY1LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4NCwgODIsIDY1LCA3MCwgNzAsIDczLCA2NywgMTI4LCA4NCwgODIsIDY1LCA3MCwgCi0gICAgNzAsIDczLCAxOTUsIDg0LCA4MiwgNjUsIDY4LCAxOTcsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzksIDgyLCAxMjgsIDg0LCAKLSAgICA4MiwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDEyOCwgODQsIDc5LCA4OCwgMTI4LCA4NCwgNzksIDg3LCA2OSwgODIsIAotICAgIDEyOCwgODQsIDc5LCA4NSwgODIsIDc4LCA3OSwgNzMsIDIxMSwgODQsIDc5LCA4NCwgNjUsIDIwNCwgODQsIDc5LCA4NCwgCi0gICAgMTI4LCA4NCwgNzksIDgyLCA4NCwgNzksIDczLCA4MywgMTk3LCA4NCwgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgODMsIAotICAgIDEyOCwgODQsIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDIxMSwgODQsIDc5LCA4MiwgNjcsIDcyLCAxMjgsIDg0LCA3OSwgCi0gICAgODEsIDEyOCwgODQsIDc5LCA4MCwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIDgwLCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgMTk2LCA4NCwgNzksIDgwLCAxMjgsIDg0LCA3OSwgMjA4LCA4NCwgNzksIDc5LCA4NCwgNzIsIDEyOCwgODQsIDc5LCAKLSAgICA3OSwgNzgsIDEyOCwgODQsIDc5LCA3OCwgNzksIDgzLCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgNjksIDEyOCwgODQsIAotICAgIDc5LCA3OCwgNzEsIDg1LCAxOTcsIDg0LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTYsIDEyOCwgCi0gICAgODQsIDc5LCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU0LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICA0NSwgNTMsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MiwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA2NSwgMjA0LCA4NCwgNzksIDc3LCA4MCwgNzMsIDEyOCwgODQsIDc5LCA3NywgNjUsIDg0LCAKLSAgICA3OSwgMTI4LCA4NCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzUsIDg5LCAyMDcsIDg0LCA3OSwgNzMsIAotICAgIDc2LCA2OSwgODQsIDEyOCwgODQsIDc5LCA3MSwgNjksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDg0LCA3OSwgNjgsIDIwNywgCi0gICAgODQsIDc5LCA2NSwgNzgsIDY4LCA2NSwgNzUsIDcyLCA3MywgNjUsIDg0LCAxMjgsIDg0LCA3OSwgNjUsIDEyOCwgODQsIDc4LCAKLSAgICAxMjgsIDg0LCA3NiwgODYsIDEyOCwgODQsIDc2LCA4NSwgMTI4LCA4NCwgNzYsIDc5LCAxMjgsIDg0LCA3NiwgNzMsIDEyOCwgCi0gICAgODQsIDc2LCA3MiwgODksIDY1LCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKLSAgICA4NCwgNzYsIDcyLCA3OSwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzMsIDEyOCwgODQsIAotICAgIDc2LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY1LCAxMjgsIDg0LCA3NiwgCi0gICAgNjksIDY5LCAxMjgsIDg0LCA3NiwgNjUsIDEyOCwgODQsIDc0LCA2OSwgMTI4LCA4NCwgNzMsIDg4LCAxMjgsIDg0LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDg0LCA3MywgODcsIDY1LCAyMTgsIDg0LCA3MywgODQsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDg0LCAKLSAgICA3MywgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzMsIDg0LCAxOTMsIDg0LCA3MywgODQsIDEyOCwgODQsIDczLCA4MiwgODksIAotICAgIDY1LCA3NSwgMTI4LCA4NCwgNzMsIDgyLCA4NCwgMTkzLCA4NCwgNzMsIDgyLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4NCwgNzMsIDgyLCAxMjgsIDg0LCA3MywgMjEwLCA4NCwgNzMsIDgwLCA4MCwgNzMsIDEyOCwgCi0gICAgODQsIDczLCA4MCwgNjksIDcyLCA2NSwgMTI4LCA4NCwgNzMsIDgwLCAxMjgsIDg0LCA3MywgMjA4LCA4NCwgNzMsIDc4LCAKLSAgICA4OSwgMTI4LCA4NCwgNzMsIDc4LCAyMTcsIDg0LCA3MywgNzgsIDc4LCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NywgODQsIAotICAgIDg1LCA4MiwgNjksIDEyOCwgODQsIDczLCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDczLCA3NywgNjksIDgzLCAKLSAgICAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY4LCAxOTcsIDg0LCAKLSAgICA3MywgNzYsIDEyOCwgODQsIDczLCAyMDQsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgCi0gICAgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCAKLSAgICA2OSwgODUsIDg0LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgCi0gICAgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKLSAgICA4NSwgMjEyLCA4NCwgNzMsIDcxLCA3MiwgODQsIDc2LCA4OSwgNDUsIDY3LCA3NiwgNzksIDgzLCA2OSwgMTk2LCA4NCwgNzMsIAotICAgIDcxLCA3MiwgMjEyLCA4NCwgNzMsIDcxLCA2OSwgODIsIDEyOCwgODQsIDczLCA3MSwgNjksIDIxMCwgODQsIDczLCA3MCwgCi0gICAgNzMsIDc4LCA2NSwgNzEsIDIwMCwgODQsIDczLCA2OSwgODgsIDEyOCwgODQsIDczLCA2OSwgODAsIDEyOCwgODQsIDczLCAKLSAgICAxOTcsIDg0LCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODQsIDczLCA2NywgNzUsIDEyOCwgODQsIDczLCA2NywgMjAzLCAKLSAgICA4NCwgNzMsIDY1LCA4MiwgNjUsIDEyOCwgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIDIwNSwgODQsIAotICAgIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIDY1LCAyMTgsIAotICAgIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgODIsIDc3LCAKLSAgICAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDIxMCwgODQsIAotICAgIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCA3MiwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDg0LCA3MiwgODIsIDc5LCA4NSwgCi0gICAgNzEsIDcyLCAxMjgsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2OSwgMjA1LCA4NCwgCi0gICAgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKLSAgICA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIAotICAgIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgCi0gICAgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCAKLSAgICA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIAotICAgIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgCi0gICAgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgCi0gICAgODIsIDE5NiwgODQsIDcyLCA3MywgMjA2LCA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAKLSAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIAotICAgIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgCi0gICAgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCAKLSAgICA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIAotICAgIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgCi0gICAgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDE5NywgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCAKLSAgICA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIAotICAgIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgCi0gICAgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAxMjgsIDg0LCAKLSAgICA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIAotICAgIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgCi0gICAgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKLSAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAotICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKLSAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCi0gICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKLSAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAotICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgCi0gICAgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAotICAgIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIAotICAgIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgCi0gICAgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCAKLSAgICA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIAotICAgIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3NiwgCi0gICAgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKLSAgICA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIAotICAgIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCAKLSAgICA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIAotICAgIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgCi0gICAgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgCi0gICAgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgCi0gICAgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCAKLSAgICA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIAotICAgIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgCi0gICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAKKyAgICAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDg1LCA0NSwgNzMsIAorICAgIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIDcxLCA4NSwgCisgICAgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgCisgICAgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgCisgICAgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgCisgICAgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDU0LCAxMjgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgyLCA4NCwgODksIDgwLCAKKyAgICA2OSwgNDUsIDUzLCAxMjgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgxLCA4NCwgODksIDgwLCA2OSwgNDUsIDUyLCAxMjgsIAorICAgIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIDUxLCAxMjgsIDg0LCA4OSwgODAsIDY5LCA0NSwgCisgICAgMTc5LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3OCwgODQsIDg5LCA4MCwgNjksIDQ1LCA0OSwgNDUsIDUwLCAxMjgsIDg0LCAKKyAgICA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCAKKyAgICA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDg5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIDg4LCA4NywgODYsIAorICAgIDEyOCwgODQsIDg4LCA4NywgMjE0LCA4NCwgODgsIDcyLCA2OSwgNjksIDIwMiwgODQsIDg3LCA3OSwgNzksIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgCisgICAgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg0LCAKKyAgICA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDc5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA4NywgNzMsIAorICAgIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAKKyAgICA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIAorICAgIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKKyAgICA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKKyAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCAKKyAgICA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIAorICAgIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgODMsIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzYsIDcwLCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAKKyAgICAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIAorICAgIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIDg0LCA4NCwgCisgICAgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAxMjgsIDg0LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIDEyOCwgODQsIAorICAgIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgCisgICAgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCA4NCwgODUsIDgyLCAKKyAgICA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIAorICAgIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgCisgICAgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCAKKyAgICA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIAorICAgIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIAorICAgIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgCisgICAgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgCisgICAgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIAorICAgIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIAorICAgIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgCisgICAgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCAKKyAgICA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCAKKyAgICA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgCisgICAgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCAKKyAgICA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIAorICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgCisgICAgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgCisgICAgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCAKKyAgICA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIAorICAgIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgCisgICAgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCAKKyAgICA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAorICAgIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgCisgICAgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCAKKyAgICA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIAorICAgIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCAKKyAgICA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIAorICAgIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAKKyAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIAorICAgIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKKyAgICA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCisgICAgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIAorICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCisgICAgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIAorICAgIDEyOCwgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgCisgICAgNzMsIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCAKKyAgICA4NCwgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgCisgICAgNzksIDg1LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3OSwgNjgsIAorICAgIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCA3MywgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgCisgICAgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3NiwgNzMsIAorICAgIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCAKKyAgICAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIAorICAgIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIAorICAgIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIDEyOCwgCisgICAgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgNzgsIDY4LCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIDEyOCwgODQsIAorICAgIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDQ5LCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4MiwgNjksIDE5NywgODQsIDgyLCA2OSwgNjUsIDY4LCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDg0LCA4MiwgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDg2LCA2OSwgNzYsIDQ1LCA4NywgNjUsIDc2LCA3NiwgCisgICAgODAsIDc2LCA2NSwgNzgsIDE5NywgODQsIDgyLCA2NSwgODYsIDY5LCA3NiwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIAorICAgIDc2LCA2NSwgNzgsIDE5NywgODQsIDgyLCA2NSwgODAsIDY5LCA5MCwgNzMsIDg1LCA3NywgMTI4LCA4NCwgODIsIDY1LCA3OCwgCisgICAgODMsIDg2LCA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NCwgODIsIDY1LCA3OCwgODMsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCAyMTIsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCA4MywgCisgICAgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDg0LCAKKyAgICA4MiwgNjUsIDc3LCA4NywgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDc3LCAxMjgsIDg0LCA4MiwgNjUsIDIwNSwgODQsIAorICAgIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDczLCAyMDYsIDg0LCA4MiwgNjUsIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDg0LCA4MiwgNjUsIDcwLCA3MCwgNzMsIDY3LCAxMjgsIDg0LCA4MiwgNjUsIDcwLCA3MCwgNzMsIDE5NSwgODQsIAorICAgIDgyLCA2NSwgNjgsIDE5NywgODQsIDgyLCA2NSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODQsIDgyLCA2NSwgNjcsIDc1LCA2NiwgCisgICAgNjUsIDc2LCA3NiwgMTI4LCA4NCwgODIsIDY1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA2NSwgMTI4LCA4NCwgODIsIDEyOCwgCisgICAgODQsIDc5LCA4OCwgMTI4LCA4NCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODQsIDc5LCA4NywgNjUsIDgyLCA2OCwgMjExLCAKKyAgICA4NCwgNzksIDg2LCAxMjgsIDg0LCA3OSwgODUsIDgyLCA3OCwgNzksIDczLCAyMTEsIDg0LCA3OSwgODUsIDY3LCA3MiwgODQsIAorICAgIDc5LCA3OCwgMTk3LCA4NCwgNzksIDg1LCA2NywgNzIsIDczLCA3OCwgMTk5LCA4NCwgNzksIDg1LCA2NywgNzIsIDY5LCAKKyAgICAyMTEsIDg0LCA3OSwgODUsIDY3LCAyMDAsIDg0LCA3OSwgODQsIDY1LCAyMDQsIDg0LCA3OSwgODQsIDEyOCwgODQsIDc5LCAKKyAgICA4MywgMTI4LCA4NCwgNzksIDgyLCA4NCwgNzksIDczLCA4MywgMTk3LCA4NCwgNzksIDgyLCA4MywgNzksIDQ1LCA4NywgNjUsIAorICAgIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODQsIDc5LCA4MiwgODMsIDc5LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCAKKyAgICA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4NCwgNzksIDgyLCA4MywgNzksIDEyOCwgODQsIDc5LCA4MiwgNzgsIDY1LCA2OCwgNzksIAorICAgIDEyOCwgODQsIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCAKKyAgICAyMTEsIDg0LCA3OSwgODIsIDY3LCA3MiwgMTI4LCA4NCwgNzksIDgxLCAxMjgsIDg0LCA3OSwgODAsIDY2LCA2NSwgODIsIAorICAgIDEyOCwgODQsIDc5LCA4MCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODQsIDc5LCA4MCwgMTI4LCA4NCwgCisgICAgNzksIDIwOCwgODQsIDc5LCA3OSwgODQsIDcyLCAxMjgsIDg0LCA3OSwgNzksIDc4LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCAKKyAgICA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTUsIDEyOCwgCisgICAgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAKKyAgICA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIAorICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgCisgICAgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCAKKyAgICA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIAorICAgIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgCisgICAgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgCisgICAgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgCisgICAgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCAKKyAgICA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIAorICAgIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2NSwgMTI4LCA4NCwgNzYsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIAorICAgIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCA4OCwgMTI4LCA4NCwgNzMsIDg3LCA4MiwgMTI4LCA4NCwgNzMsIDg3LCA3OCwgCisgICAgMTI4LCA4NCwgNzMsIDg3LCA2NSwgMjE4LCA4NCwgNzMsIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIDg0LCAKKyAgICA3NiwgNzksIDEyOCwgODQsIDczLCA4NCwgNzYsIDIwNywgODQsIDczLCA4NCwgMTkzLCA4NCwgNzMsIDg0LCAxMjgsIDg0LCAKKyAgICA3MywgODIsIDg5LCA2NSwgNzUsIDEyOCwgODQsIDczLCA4MiwgODQsIDE5MywgODQsIDczLCA4MiwgNzksIDc4LCA3MywgNjUsIAorICAgIDIwNiwgODQsIDczLCA4MiwgNzIsIDg1LCA4NCwgMTkzLCA4NCwgNzMsIDgyLCA2OSwgMTk2LCA4NCwgNzMsIDgyLCAxMjgsIAorICAgIDg0LCA3MywgMjEwLCA4NCwgNzMsIDgwLCA4MCwgNzMsIDEyOCwgODQsIDczLCA4MCwgNjksIDcyLCA2NSwgMTI4LCA4NCwgCisgICAgNzMsIDgwLCAxMjgsIDg0LCA3MywgMjA4LCA4NCwgNzMsIDc4LCA4OSwgMTI4LCA4NCwgNzMsIDc4LCAyMTcsIDg0LCA3MywgCisgICAgNzgsIDc4LCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NywgODQsIDg1LCA4MiwgNjksIDEyOCwgODQsIDczLCA3OCwgNjUsIDcxLCAKKyAgICA3NywgNjUsIDEyOCwgODQsIDczLCA3NywgNjksIDgzLCAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIAorICAgIDY5LCAxMjgsIDg0LCA3MywgNzYsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA3MywgNzYsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgODQsIDczLCA3NiwgODQsIDEyOCwgODQsIDczLCA3NiwgNjksIDgzLCAxMjgsIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCAKKyAgICA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgCisgICAgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDIxMiwgODQsIDczLCA3MSwgNzIsIDg0LCA3NiwgODksIDQ1LCA2NywgCisgICAgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgNjksIDgyLCAxMjgsIDg0LCAKKyAgICA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIDg0LCA4MywgMTI4LCA4NCwgCisgICAgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgODQsIDczLCAKKyAgICA2NSwgODIsIDY1LCAxMjgsIDg0LCA3MywgNTAsIDEyOCwgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIAorICAgIDIwNSwgODQsIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgCisgICAgMTI4LCA4NCwgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIAorICAgIDY1LCAyMTgsIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgCisgICAgODIsIDc3LCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIAorICAgIDIxMCwgODQsIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCA3MiwgODUsIDc3LCA2NiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgCisgICAgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAKKyAgICAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIAorICAgIDY5LCA0NSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCAKKyAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIAorICAgIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY3LCA3MywgCisgICAgODIsIDY3LCA3NiwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAKKyAgICA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIAorICAgIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAKKyAgICAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCAKKyAgICA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA3OSwgNzcsIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIAorICAgIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgCisgICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgCisgICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCAKKyAgICA3MSwgMTk3LCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzgsIAorICAgIDc1LCA3MywgNzgsIDE5OSwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDg5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgCisgICAgMjA2LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCAKKyAgICA3MiwgNjksIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIAorICAgIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIAorICAgIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgCisgICAgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgCisgICAgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCAKKyAgICA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIAorICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgCisgICAgNjUsIDc0LCAxMjgsIDg0LCA3MiwgNjUsIDIwMSwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAKKyAgICA2NSwgNzgsIDE5MywgODQsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAorICAgIDg0LCA2OSwgODgsIDg0LCAxMjgsIDg0LCA2OSwgODgsIDIxMiwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgCisgICAgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCAKKyAgICA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIAorICAgIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgCisgICAgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCAKKyAgICA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAorICAgIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgCisgICAgODQsIDIwMCwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCAKKyAgICA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIAorICAgIDY5LCA4MiwgNjUsIDEyOCwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgCisgICAgMjA2LCA4NCwgNjksIDgzLCAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCAKKyAgICA2OSwgODAsIDEyOCwgODQsIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIAorICAgIDc4LCAyMTMsIDg0LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCA4MywgCisgICAgNjksIDEyOCwgODQsIDY5LCA3OCwgODMsIDE5NywgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgCisgICAgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCAKKyAgICA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIAorICAgIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgCisgICAgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAorICAgIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgCisgICAgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAKKyAgICAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIAorICAgIDIwMCwgODQsIDY5LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIAorICAgIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgCisgICAgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAorICAgIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCAKKyAgICA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIAorICAgIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAKKyAgICAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIAorICAgIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIAorICAgIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgCisgICAgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCAKKyAgICA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCA4NSwgNzcsIAorICAgIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIDg3LCA2OSwgCisgICAgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgNjUsIDgzLCAKICAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAotICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgCi0gICAgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAKLSAgICAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIAotICAgIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIAotICAgIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDEyOCwgCi0gICAgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCAKLSAgICA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIAotICAgIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCAKLSAgICA2NiwgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCAKLSAgICA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIAotICAgIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgCi0gICAgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCAKLSAgICA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgCi0gICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgCi0gICAgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCAKLSAgICA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIAotICAgIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIAotICAgIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCAKLSAgICA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIAotICAgIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgCi0gICAgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgCi0gICAgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgCi0gICAgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgCi0gICAgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIAotICAgIDEyOCwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIAotICAgIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgCi0gICAgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDE5MywgODMsIDg5LCAKLSAgICA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgODMsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NiwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU0LCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTUsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAotICAgIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNDgsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OSwgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgODMsIDg3LCAKLSAgICA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIDEyOCwgODMsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIDczLCA3NywgCi0gICAgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgODcsIAotICAgIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCA2NSwgCi0gICAgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIDgzLCAKLSAgICA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgODMsIAotICAgIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCA4NCwgCi0gICAgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCAKLSAgICA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIAotICAgIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCAKLSAgICA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIAotICAgIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgCi0gICAgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIAotICAgIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAKLSAgICAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCAKLSAgICA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIAotICAgIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgCi0gICAgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIAotICAgIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA3NywgNjUsIDgzLCAKLSAgICA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgODMsIDg1LCA3NSwgODUsIAotICAgIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCA4NSwgNzUsIDIxMywgODMsIAotICAgIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNzIsIDg1LCA4MiwgCi0gICAgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgODMsIDg1LCA2NywgCi0gICAgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAyMTEsIDgzLCA4NSwgNjcsIDY3LCAKLSAgICA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIAotICAgIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgCi0gICAgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCAKLSAgICA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIAotICAgIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgCi0gICAgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCAKLSAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgCi0gICAgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIAotICAgIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCAKLSAgICA2OSwgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIAotICAgIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgODksIAotICAgIDEyOCwgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgCi0gICAgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAotICAgIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgCi0gICAgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgCi0gICAgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIAotICAgIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgCi0gICAgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCAKLSAgICA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIAotICAgIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgCi0gICAgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCAKLSAgICA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIAotICAgIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIAotICAgIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDY5LCA4MCwgCi0gICAgMTI4LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCAKLSAgICA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIAotICAgIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgCi0gICAgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCAKLSAgICA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIAotICAgIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY3LCA2NywgCi0gICAgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCAKLSAgICA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIAotICAgIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgCi0gICAgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAKLSAgICAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCAKLSAgICA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIAotICAgIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIAotICAgIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgCi0gICAgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAKLSAgICAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIAotICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgCi0gICAgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIAotICAgIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCAKLSAgICA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgCi0gICAgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIAotICAgIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgODMsIDEyOCwgODMsIDgxLCA4NSwgCi0gICAgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCAKLSAgICA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIAotICAgIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIDcxLCA2OSwgCi0gICAgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NCwgMTI4LCAKLSAgICA4MywgODAsIDc5LCA3OSwgNzgsIDEyOCwgODMsIDgwLCA3NiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzYsIAotICAgIDY1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIDczLCA4MiwgCi0gICAgNzMsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCAKLSAgICA4MywgODAsIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCA2OCwgNjksIAotICAgIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY3LCA2OSwgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIDIwNCwgCisgICAgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgyLCA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIAorICAgIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIAorICAgIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAKKyAgICAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIAorICAgIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgCisgICAgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAKKyAgICAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIAorICAgIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgCisgICAgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAKKyAgICAxMjgsIDg0LCA2NSwgNzUsIDE4MCwgODQsIDY1LCA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCAKKyAgICA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIAorICAgIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgCisgICAgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc5LCAKKyAgICAxMjgsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIDY2LCA4MywgCisgICAgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIDY1LCA2NiwgNzYsIDE5NywgODQsIDY1LCA2NiwgMTI4LCA4NCwgCisgICAgNjUsIDE5NCwgODQsIDY1LCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCAKKyAgICA2NSwgNzcsIDEyOCwgODQsIDY1LCA2NSwgNzYsIDg1LCA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIAorICAgIDY1LCA3MCwgMTI4LCA4NCwgNjUsIDUwLCAxMjgsIDg0LCA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgCisgICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCAKKyAgICA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIAorICAgIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgCisgICAgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgCisgICAgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCAKKyAgICA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIAorICAgIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIAorICAgIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIAorICAgIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCAKKyAgICA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIAorICAgIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIAorICAgIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCAKKyAgICA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODMsIDg0LCA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIAorICAgIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgCisgICAgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAKKyAgICAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIAorICAgIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAKKyAgICAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzksIDcxLCA4NSwgNjksIDEyOCwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCisgICAgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCAKKyAgICA4NCwgODIsIDg5LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA4MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU3LCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKKyAgICA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU0LCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDUxLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUwLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MywgMTI4LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTEsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAorICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU1LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNDksIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCAKKyAgICA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgCisgICAgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgCisgICAgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCAKKyAgICA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIAorICAgIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCAKKyAgICA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIAorICAgIDg0LCA4MiwgMTkzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgCisgICAgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIDgzLCA4NSwgODIsIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIAorICAgIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCAKKyAgICA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIAorICAgIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgCisgICAgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCAKKyAgICA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgCisgICAgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgCisgICAgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCAKKyAgICA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIAorICAgIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAKKyAgICAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCAKKyAgICA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIAorICAgIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgCisgICAgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNzMsIDIxMiwgODMsIDg1LCAKKyAgICA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCAKKyAgICA4MywgODUsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NSwgNjcsIDc1LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgCisgICAgMjAzLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIAorICAgIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgCisgICAgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgCisgICAgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCAKKyAgICA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgCisgICAgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIAorICAgIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIAorICAgIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAKKyAgICAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCisgICAgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIDc3LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4MywgCisgICAgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgNjYsIDEyOCwgODMsIDg1LCAKKyAgICA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCAKKyAgICA4OSwgMTI4LCA4MywgODQsIDg1LCA2OCwgNzMsIDIwNywgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIAorICAgIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAorICAgIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCAKKyAgICA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgNjgsIAorICAgIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgCisgICAgMTk2LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCAKKyAgICA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIAorICAgIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIAorICAgIDg0LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgNjksIAorICAgIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgCisgICAgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgMTI4LCAKKyAgICA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgODQsIAorICAgIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3OSwgNjcsIDIwMywgODMsIDg0LCA3MywgODIsIDgyLCA4NSwgMjA4LCA4MywgCisgICAgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg0LCA3MywgNjcsIAorICAgIDIwMywgODMsIDg0LCA2OSwgODIsIDY5LCA3OSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3OCwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCAKKyAgICA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIAorICAgIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgCisgICAgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCAKKyAgICA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCAKKyAgICA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIAorICAgIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgNzcsIDgwLCA2OSwgMTk2LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY4LCA3MywgODUsIDc3LCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCAKKyAgICA3OSwgMTI4LCA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCAKKyAgICA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDg5LCAxMjgsIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIAorICAgIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgCisgICAgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgCisgICAgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIAorICAgIDczLCAxMjgsIDgzLCA4MywgNzIsIDczLCA3OCwgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgCisgICAgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgCisgICAgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgCisgICAgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCAKKyAgICA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIAorICAgIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDY5LCA2OCwgCisgICAgMTI4LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCAKKyAgICA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIAorICAgIDEyOCwgODMsIDgwLCA4OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIAorICAgIDgwLCA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDgyLCAKKyAgICA2OSwgNjUsIDY4LCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NSwgMTk2LCA4MywgODAsIDc5LCA4NSwgODQsIDczLCA3OCwgCisgICAgMTk5LCA4MywgODAsIDc5LCA4NCwgMTI4LCA4MywgODAsIDc5LCA4MiwgODQsIDIxMSwgODMsIDgwLCA3OSwgNzksIDc4LCAKKyAgICAxMjgsIDgzLCA4MCwgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCA3MywgODQsIDEyOCwgODMsIAorICAgIDgwLCA3NiwgNzMsIDIxMiwgODMsIDgwLCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODMsIDgwLCA3NiwgNjUsIDgzLCA3MiwgCisgICAgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzMsIDgyLCA3MywgODQsIDg1LCAyMTEsIDgzLCA4MCwgNzMsIDgyLCA3MywgODQsIAorICAgIDEyOCwgODMsIDgwLCA3MywgODIsIDczLCAyMTIsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgzLCA4MCwgCisgICAgNzMsIDgyLCA2NSwgNzYsIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCAyMDQsIDgzLCA4MCwgNzMsIDc4LCA2OSwgMTI4LCAKKyAgICA4MywgODAsIDczLCA2OCwgNjksIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY4LCA2OSwgODIsIDEyOCwgODMsIDgwLCA3MywgNjgsIAorICAgIDY5LCAyMTAsIDgzLCA4MCwgNzMsIDY3LCA2OSwgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIDIwNCwgCiAgICAgODMsIDgwLCA2OSwgODMsIDc3LCA3MywgNzYsIDIwNywgODMsIDgwLCA2OSwgNjksIDY4LCA2NiwgNzksIDY1LCA4NCwgMTI4LCAKICAgICA4MywgODAsIDY5LCA2OSwgNjcsIDcyLCAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgMjAwLCA4MywgODAsIDY5LCA2NywgNzMsIAotICAgIDY1LCA3NiwgMTI4LCA4MywgODAsIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgCi0gICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgMjEwLCA4MywgODAsIDY5LCA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIAotICAgIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDEyOCwgODMsIDgwLCA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgCi0gICAgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgODMsIDgwLCA2NSwgMTI4LCA4MywgNzksIDg5LCAxMjgsIDgzLCAKLSAgICA3OSwgODcsIDczLCA3NiwgMjA3LCA4MywgNzksIDg3LCAxMjgsIDgzLCA3OSwgODUsIDg0LCA3MiwgNjksIDgyLCAyMDYsIAotICAgIDgzLCA3OSwgODUsIDg0LCA3MiwgNDUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMjE3LCA4MywgNzksIDg1LCA4NCwgMjAwLCA4MywgCi0gICAgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgzLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgNzksIDg1LCA3OCwgMTk2LCAKLSAgICA4MywgNzksIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgODUsIDEyOCwgODMsIDc5LCA4MywgMTI4LCA4MywgNzksIAotICAgIDgyLCAxOTMsIDgzLCA3OSwgODEsIDEyOCwgODMsIDc5LCA3OSwgMjA2LCA4MywgNzksIDc4LCA3NCwgNjUsIDc3LCAxMjgsIAotICAgIDgzLCA3OSwgNzgsIDcxLCAxMjgsIDgzLCA3OSwgNzgsIDEyOCwgODMsIDc5LCA3NywgODAsIDY5LCA3OCwgMTk5LCA4MywgCi0gICAgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDgzLCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIAotICAgIDIxMSwgODMsIDc5LCA3MiwgMTI4LCA4MywgNzksIDcxLCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA4NywgCi0gICAgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA3OCwgNjksIAotICAgIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAyMTIsIDgzLCA3OSwgMTk4LCA4MywgNzksIDY3LCA3MywgNjksIDg0LCA4OSwgCi0gICAgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIDIxMCwgODMsIDc5LCA2NSwgODAsIDEyOCwgODMsIDc5LCA2NSwgMTI4LCA4MywgCi0gICAgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCAKLSAgICA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgCi0gICAgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAxMjgsIDgzLCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MywgNzgsIDc5LCAKLSAgICA4NSwgMjEyLCA4MywgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDY1LCA3NSwgMTk3LCAKLSAgICA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCA3MywgNzgsIDE5OSwgODMsIAotICAgIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgCi0gICAgNjksIDEyOCwgODMsIDc3LCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCA3NywgNjUsIDc2LCAKLSAgICA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIDgzLCA3NiwgNzksIAotICAgIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgCi0gICAgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIAotICAgIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgCisgICAgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNjksIDY1LCA4MiwgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCAyMTAsIDgzLCA4MCwgNjksIAorICAgIDY1LCA3NSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDgwLCA2NSwgODQsIDcyLCA3MywgMTI4LCA4MywgCisgICAgODAsIDY1LCA4MiwgNzUsIDc2LCA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCAKKyAgICA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MiwgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgMTI4LCA4MywgODAsIAorICAgIDY1LCA3MSwgNzIsIDY5LCA4NCwgODQsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDY4LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgCisgICAgNjgsIDE5NywgODMsIDgwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA2NywgMTk3LCA4MywgODAsIDY1LCAKKyAgICAxMjgsIDgzLCA3OSwgODksIDEyOCwgODMsIDc5LCA4NywgNzMsIDc2LCAyMDcsIDgzLCA3OSwgODcsIDEyOCwgODMsIDc5LCAKKyAgICA4NSwgODQsIDcyLCA2OSwgODIsIDIwNiwgODMsIDc5LCA4NSwgODQsIDcyLCA0NSwgODMsIDc2LCA2NSwgODYsIDY5LCAyMTcsIAorICAgIDgzLCA3OSwgODUsIDg0LCAyMDAsIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODMsIDc5LCA4NSwgNzgsIDY4LCAKKyAgICAxMjgsIDgzLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA3OSwgODUsIDc4LCA2NSwgODAsIDEyOCwgODMsIDc5LCA4NSwgMTI4LCAKKyAgICA4MywgNzksIDgzLCAxMjgsIDgzLCA3OSwgODIsIDE5MywgODMsIDc5LCA4MSwgMTI4LCA4MywgNzksIDc5LCAyMDYsIDgzLCAKKyAgICA3OSwgNzgsIDc0LCA2NSwgNzcsIDEyOCwgODMsIDc5LCA3OCwgNzEsIDEyOCwgODMsIDc5LCA3OCwgMTI4LCA4MywgNzksIAorICAgIDc3LCA4MCwgNjksIDc4LCAxOTksIDgzLCA3OSwgNzcsIDEyOCwgODMsIDc5LCA3NiwgNzMsIDY4LCA4NSwgODMsIDEyOCwgCisgICAgODMsIDc5LCA3NiwgNzMsIDY4LCA4NSwgMjExLCA4MywgNzksIDc2LCA3MywgMTk2LCA4MywgNzksIDcyLCAxMjgsIDgzLCAKKyAgICA3OSwgNzEsIDY4LCA3MywgNjUsIDIwNiwgODMsIDc5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY5LCA0NSwgNzAsIDg1LCA3OCwgCisgICAgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDc5LCA3MCwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDc5LCAxOTgsIDgzLCA3OSwgNjcsIDczLCA2OSwgODQsIDg5LCAxMjgsIDgzLCA3OSwgNjcsIDY3LCA2OSwgCisgICAgMjEwLCA4MywgNzksIDY1LCA4MCwgMTI4LCA4MywgNzksIDY1LCAxMjgsIDgzLCAyMDcsIDgzLCA3OCwgNzksIDg3LCA3NywgCisgICAgNjUsIDc4LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIDIwNiwgODMsIDc4LCA3OSwgODcsIDcwLCA3NiwgNjUsIDc1LCAKKyAgICA2OSwgMTI4LCA4MywgNzgsIDc5LCA4NywgNjYsIDc5LCA2NSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc4LCA3OSwgODcsIAorICAgIDEyOCwgODMsIDc4LCA3OSwgMjE1LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIAorICAgIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgCisgICAgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCAKKyAgICA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIAorICAgIDgzLCA3NywgNzMsIDc2LCAxOTcsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgCisgICAgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCAKKyAgICA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDg3LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIAorICAgIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgCisgICAgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3OSwgNjUsIDIwNiwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA3NiwgNzMsIDcxLCA3MiwgODQsIDc2LCAyMTcsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIAorICAgIDY4LCA2OSwgODIsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgCisgICAgNjksIDg1LCA4NCwgMjAwLCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIAogICAgIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgCiAgICAgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCAKICAgICA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIAogICAgIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgCiAgICAgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIAotICAgIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgCi0gICAgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAotICAgIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgCi0gICAgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCAKLSAgICA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIAotICAgIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIAotICAgIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIAotICAgIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCAKLSAgICA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKLSAgICAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIAotICAgIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCAKLSAgICA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIAotICAgIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgCi0gICAgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCAKLSAgICA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgCi0gICAgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAotICAgIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIAotICAgIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgCi0gICAgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAKLSAgICAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIAotICAgIDIxMSwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDczLCA2NiwgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgCi0gICAgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIAotICAgIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCAKLSAgICA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCAKKyAgICAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgOTAsIDE5NywgODMsIDczLCA4OCwgODQsIDg5LCAKKyAgICA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgCisgICAgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCAKKyAgICA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIAorICAgIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgCisgICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIAorICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAKKyAgICAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIAorICAgIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgCisgICAgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCAKKyAgICA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCAKKyAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgCisgICAgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA4NSwgODMsIDc5LCA3MywgMTk2LCAKKyAgICA4MywgNzMsIDc4LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNzMsIDc4LCA3NSwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCisgICAgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAKKyAgICAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNjgsIAorICAgIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDgzLCAKKyAgICAxMjgsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgMjExLCA4MywgNzMsIDc3LCA4MCwgNzYsIAorICAgIDczLCA3MCwgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCA3NiwgCisgICAgNjUsIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIDcxLCAKKyAgICA4NSwgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgNzYsIAorICAgIDc1LCAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgCisgICAgNjksIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIAorICAgIDEyOCwgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIAorICAgIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCA3MywgCisgICAgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCA4MywgCisgICAgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY4LCA2OSwgMTI4LCAKKyAgICA4MywgNzMsIDY4LCAxOTcsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDc3LCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIAorICAgIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgCisgICAgMTI4LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgCisgICAgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgCisgICAgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIAorICAgIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA4NCwgODQsIDc2LCA2OSwgNjcsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgCisgICAgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzYsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCAKICAgICA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIAogICAgIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIAogICAgIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgCiAgICAgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgCi0gICAgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDgyLCA4NCwgODMsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjksIAotICAgIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzIsIDc5LCA4MiwgCi0gICAgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIAotICAgIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDgzLCAKLSAgICA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc5LCA4MywgMjExLCA4MywgNzIsIAotICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIDE5NiwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgCi0gICAgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIAotICAgIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCAKLSAgICA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgMjEyLCA4MywgNzIsIAotICAgIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCAxMjgsIDgzLCA3MiwgNzksIDc5LCA4NCwgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICA3MSwgMjAxLCA4MywgNzIsIDc5LCAxOTksIDgzLCA3MiwgNzksIDY5LCAxMjgsIDgzLCA3MiwgNzksIDE5NywgODMsIDcyLCAKLSAgICA3OSwgNjUsIDEyOCwgODMsIDcyLCA3OSwgMTI4LCA4MywgNzIsIDczLCA4OSwgODksIDY1LCA2NSwgNzYsIDY1LCA2NSwgCisgICAgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCAKKyAgICA3OSwgODUsIDc2LCA2OCwgNjksIDIxMCwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgCisgICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgCisgICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgCisgICAgODcsIDczLCA3MSwgNDUsIDgzLCA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIAorICAgIDc5LCA4MywgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIDE5NiwgCisgICAgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgNzksIAorICAgIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIDgyLCAKKyAgICA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCA4MiwgCisgICAgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgMjEyLCA4MywgNzIsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCA4MCwgNzMsIAorICAgIDc4LCAxOTksIDgzLCA3MiwgNzksIDgwLCAxMjgsIDgzLCA3MiwgNzksIDc5LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA3MiwgCisgICAgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgNzMsIDEyOCwgODMsIDcyLCA3OSwgNzksIDEyOCwgODMsIDcyLCAKKyAgICA3OSwgNzEsIDIwMSwgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAxOTcsIDgzLCAKKyAgICA3MiwgNzksIDY1LCAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgNjUsIDc2LCA2NSwgNjUsIAogICAgIDEyOCwgODMsIDcyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCAxOTMsIDgzLCA3MiwgNzMsIDgyLCAyMTIsIAogICAgIDgzLCA3MiwgNzMsIDgyLCA2NSwgNjksIDEyOCwgODMsIDcyLCA3MywgODIsIDEyOCwgODMsIDcyLCA3MywgMjEwLCA4MywgCi0gICAgNzIsIDczLCA4MSwgMTI4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA4MywgNzIsIDczLCA3OCwgODQsIDIwNywgODMsIDcyLCAKLSAgICA3MywgNzgsIDczLCA3MSwgMTI4LCA4MywgNzIsIDczLCA3OCwgNjgsIDE5MywgODMsIDcyLCA3MywgNzgsIDEyOCwgODMsIAotICAgIDcyLCA3MywgMjA2LCA4MywgNzIsIDczLCA3NywgNjUsIDEyOCwgODMsIDcyLCA3MywgNzcsIDE5MywgODMsIDcyLCA3MywgCi0gICAgNzcsIDEyOCwgODMsIDcyLCA3MywgMjA1LCA4MywgNzIsIDczLCA3MywgNzgsIDEyOCwgODMsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgODMsIDcyLCA3MywgNzAsIDIxMiwgODMsIDcyLCA3MywgNjksIDc2LCA2OCwgMTI4LCA4MywgNzIsIDczLCA2OCwgMTI4LCAKLSAgICA4MywgNzIsIDczLCAxOTYsIDgzLCA3MiwgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNzIsIDE5MywgODMsIDcyLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDcyLCA2OSwgODYsIDY1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NSwgCi0gICAgNzksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCA4NCwgODUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCAKLSAgICA2OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDY5LCA4NCwgMTI4LCA4MywgNzIsIAotICAgIDY5LCAyMTIsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzYsIDY1LCA3NywgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCA3MSwgCi0gICAgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCAxOTksIDgzLCA3MiwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgODMsIDcyLCAxMjgsIDgzLCA3MiwgNjksIDgxLCA2OSwgMjA0LCA4MywgNzIsIDY5LCA4MCwgMTI4LCA4MywgNzIsIAotICAgIDY5LCA3OCwgMTI4LCA4MywgNzIsIDY5LCA3NiwgNzYsIDEyOCwgODMsIDcyLCA2OSwgNzYsIDIwNCwgODMsIDcyLCA2OSwgCi0gICAgNzYsIDcwLCAxMjgsIDgzLCA3MiwgNjksIDczLCAxMjgsIDgzLCA3MiwgNjksIDcxLCA1NywgMTI4LCA4MywgNzIsIDY5LCAKLSAgICA2OSwgODAsIDEyOCwgODMsIDcyLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNzIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIAotICAgIDcyLCA2OSwgNjksIDIwNiwgODMsIDcyLCA2OSwgNjksIDEyOCwgODMsIDcyLCA2OSwgNDUsIDcxLCA3OSwgNjUsIDg0LCAKLSAgICAxMjgsIDgzLCA3MiwgMTk3LCA4MywgNzIsIDY3LCA3MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODksIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgNzIsIDY1LCA4NiwgNzMsIAotICAgIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIDcyLCA2NSwgODIsIDgwLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgNTAsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA3NywgODIsIAotICAgIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCAKLSAgICA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIAotICAgIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIAotICAgIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgCisgICAgNzIsIDczLCA4MSwgMTI4LCA4MywgNzIsIDczLCA3OCwgODQsIDIwNywgODMsIDcyLCA3MywgNzgsIDczLCA3MSwgMTI4LCAKKyAgICA4MywgNzIsIDczLCA3OCwgNjgsIDE5MywgODMsIDcyLCA3MywgMjA2LCA4MywgNzIsIDczLCA3NywgNjUsIDEyOCwgODMsIAorICAgIDcyLCA3MywgNzcsIDE5MywgODMsIDcyLCA3MywgNzcsIDEyOCwgODMsIDcyLCA3MywgMjA1LCA4MywgNzIsIDczLCA3MywgCisgICAgNzgsIDEyOCwgODMsIDcyLCA3MywgNzMsIDEyOCwgODMsIDcyLCA3MywgNzAsIDIxMiwgODMsIDcyLCA3MywgNjksIDc2LCAKKyAgICA2OCwgMTI4LCA4MywgNzIsIDczLCA2OCwgMTI4LCA4MywgNzIsIDczLCAxOTYsIDgzLCA3MiwgNzIsIDY1LCAxMjgsIDgzLCAKKyAgICA3MiwgNzIsIDE5MywgODMsIDcyLCA2OSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODYsIDY1LCAxMjgsIDgzLCA3MiwgNjksIAorICAgIDg1LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCA4NCwgCisgICAgODUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCAKKyAgICA4MywgNzIsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY5LCAyMTIsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzYsIDY1LCA3NywgCisgICAgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCA3MSwgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDczLCAxOTksIDgzLCAKKyAgICA3MiwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCAxMjgsIDgzLCA3MiwgNjksIDgzLCAyMDAsIAorICAgIDgzLCA3MiwgNjksIDgxLCA2OSwgMjA0LCA4MywgNzIsIDY5LCA4MCwgMTI4LCA4MywgNzIsIDY5LCA3OCwgMTI4LCA4MywgCisgICAgNzIsIDY5LCA3NiwgNzYsIDEyOCwgODMsIDcyLCA2OSwgNzYsIDIwNCwgODMsIDcyLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCAKKyAgICA3MiwgNjksIDczLCAxMjgsIDgzLCA3MiwgNjksIDcxLCA1NywgMTI4LCA4MywgNzIsIDY5LCA2OSwgODAsIDEyOCwgODMsIAorICAgIDcyLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNzIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDcyLCA2OSwgNjksIDIwNiwgCisgICAgODMsIDcyLCA2OSwgNjksIDEyOCwgODMsIDcyLCA2OSwgNDUsIDcxLCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA3MiwgMTk3LCAKKyAgICA4MywgNzIsIDY3LCA3MiwgNzksIDc5LCA3MywgMTI4LCA4MywgNzIsIDY3LCA3MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODksIAorICAgIDEyOCwgODMsIDcyLCA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgCisgICAgNzIsIDY1LCA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCAKKyAgICA4MywgNzIsIDY1LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIAorICAgIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgCisgICAgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgCisgICAgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNjUsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDcwLCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3MCwgMjEyLCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgCisgICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCAKKyAgICA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIAorICAgIDgzLCA3MiwgNjUsIDE4MiwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIAorICAgIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIAorICAgIDcxLCAxMjgsIDgzLCA2OSwgODksIDc1LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgCiAgICAgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCAKICAgICA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIAogICAgIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgCkBAIC0xMDA3LDExOTkgKzExMDAsMTM2NCBAQAogICAgIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgCiAgICAgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCAKICAgICA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIAotICAgIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgCi0gICAgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIAotICAgIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIDc3LCA4NSwgCi0gICAgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgMTI4LCAKLSAgICA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIDIxMiwgODMsIAotICAgIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgNzMsIDc4LCAKLSAgICA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCA3MywgNjcsIAotICAgIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIDc3LCA3MywgCi0gICAgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCAKLSAgICA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIDc5LCA3MywgCi0gICAgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIAotICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAotICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgCi0gICAgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCAKLSAgICA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgCi0gICAgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCAKLSAgICA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIAotICAgIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgCi0gICAgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIAotICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgCi0gICAgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCAKLSAgICA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIAotICAgIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgCi0gICAgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCAKLSAgICA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIAotICAgIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgCi0gICAgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgCi0gICAgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIAotICAgIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgCi0gICAgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDg0LCAKLSAgICA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAxMjgsIDgzLCA2NSwgODQsIAotICAgIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgCi0gICAgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCAKLSAgICA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIAotICAgIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgCi0gICAgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIAotICAgIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgCi0gICAgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCAKLSAgICA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIAotICAgIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgCi0gICAgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCAKLSAgICA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIAotICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCAKLSAgICA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCAKLSAgICA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIAotICAgIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgCi0gICAgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgMTI4LCA4MywgNjUsIAotICAgIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA3MSwgCi0gICAgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgCi0gICAgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCAKLSAgICA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIAotICAgIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAKLSAgICAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIAotICAgIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgCi0gICAgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgCi0gICAgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCAKLSAgICA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIAotICAgIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCAKLSAgICA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIAotICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKLSAgICA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIAotICAgIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgCi0gICAgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgCi0gICAgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgCi0gICAgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAKLSAgICAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCAKLSAgICA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIAotICAgIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIAotICAgIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCAKLSAgICA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIAotICAgIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgCi0gICAgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCAKLSAgICA3MSwgNjYsIDIxNywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCAKLSAgICA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIAotICAgIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgCi0gICAgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgCi0gICAgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKLSAgICA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgNzksIAotICAgIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDc5LCAxMjgsIAotICAgIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgMTI4LCA4MiwgODIsIDY5LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgCi0gICAgODIsIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDgyLCAKLSAgICA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIAotICAgIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCAKLSAgICA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIAotICAgIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgCi0gICAgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCAKLSAgICA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgNzIsIAotICAgIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgyLCA3OSwgCi0gICAgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgODMsIDg0LCAKLSAgICA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCA3OCwgMTk5LCAKLSAgICA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCA4MiwgNzcsIAotICAgIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgMTI4LCA4MiwgNzYsIDczLCAxMjgsIDgyLCA3NiwgNjksIAotICAgIDEyOCwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCA2OSwgODIsIAotICAgIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MiwgCi0gICAgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzAsIAotICAgIDc5LCA4MiwgOTAsIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIDY1LCAKLSAgICAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODIsIAotICAgIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIAotICAgIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCAKLSAgICA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIAotICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIAotICAgIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIAotICAgIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAotICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCAKLSAgICA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgCi0gICAgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIAotICAgIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIAotICAgIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIDcyLCAyMDcsIAotICAgIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcxLCA4OSwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODIsIDcxLCA4OSwgNjUsIDc4LCAKLSAgICAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgODYsIAotICAgIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA3MywgCi0gICAgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAKLSAgICAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCA4NSwgMTI4LCAKLSAgICA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIDg0LCA4MiwgNzksIAotICAgIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgNzksIDgyLCA4NCwgCi0gICAgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzksIDc5LCAKLSAgICA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAxMjgsIAotICAgIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgCi0gICAgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgNjUsIAotICAgIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAKLSAgICAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIAotICAgIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIDEyOCwgCi0gICAgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgMTI4LCAKLSAgICA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIAotICAgIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgCi0gICAgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCAKLSAgICA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIAotICAgIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCAKLSAgICA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgNjUsIDEyOCwgODIsIDY5LCA3MCwgNzksIDgyLCA3NywgNjksIAotICAgIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDgyLCA2OSwgNjgsIDg1LCA4MCwgNzYsIDczLCA2NywgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCAKLSAgICA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCA4NCwgNzMsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MiwgNjksIAotICAgIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAKLSAgICAxMjgsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA4MiwgNjksIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDc5LCA4MiwgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNjksIDgwLCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIAotICAgIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAKLSAgICAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCAKLSAgICA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgMTI4LCA4MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDg0LCA3MywgNzksIDEyOCwgODIsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDcyLCAxOTMsIDgyLCA2NSwgCi0gICAgODQsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDEyOCwgODIsIDY1LCA4MywgODcsIDY1LCA2OCwgNzMsIDEyOCwgODIsIDY1LCAKLSAgICA4MywgNzksIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIDgyLCA2NSwgODAsIAotICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgCi0gICAgNzgsIDEyOCwgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCAKLSAgICA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIDY1LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIAotICAgIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgCi0gICAgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIAotICAgIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIAotICAgIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzIsIDEyOCwgODIsIDY1LCA3MCwgCi0gICAgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIAotICAgIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIAotICAgIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCAKLSAgICA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCAKLSAgICA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgCi0gICAgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgCi0gICAgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgCi0gICAgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgCi0gICAgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgCi0gICAgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCAKLSAgICA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgCi0gICAgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCAKLSAgICA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIAotICAgIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgCi0gICAgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIAotICAgIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgCi0gICAgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCAKLSAgICA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIAotICAgIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgCi0gICAgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCAKLSAgICA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgCi0gICAgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgCi0gICAgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgCi0gICAgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIAotICAgIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIAotICAgIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIAotICAgIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgCi0gICAgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCAKLSAgICAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCAKLSAgICA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCAKLSAgICA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCAKLSAgICA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIAotICAgIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCAyMTEsIDgxLCA2NSwgCi0gICAgNzYsIDE5MywgODEsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgNzMsIDEyOCwgODEsIDY1LCAKLSAgICA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgNjUsIDczLCAxMjgsIDgxLCAKLSAgICA2NSwgNjUsIDcwLCA4NSwgMTI4LCA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCA1NSwgMTI4LCA4MSwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCA4MSwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIDEyOCwgODAsIDg5LCA4OCwgCi0gICAgMTI4LCA4MCwgODksIDg0LCAxMjgsIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIDEyOCwgODAsIDg5LCA4MCwgCi0gICAgMTI4LCA4MCwgODksIDEyOCwgODAsIDg3LCA3OSwgODksIDEyOCwgODAsIDg3LCA3OSwgNzksIDEyOCwgODAsIDg3LCA3OSwgCi0gICAgMTI4LCA4MCwgODcsIDIwNywgODAsIDg3LCA3MywgNzMsIDEyOCwgODAsIDg3LCA3MywgMTI4LCA4MCwgODcsIDY5LCA2OSwgCi0gICAgMTI4LCA4MCwgODcsIDY5LCAxMjgsIDgwLCA4NywgNjUsIDY1LCAxMjgsIDgwLCA4NywgMTI4LCA4MCwgODYsIDEyOCwgODAsIAotICAgIDg1LCA4OCwgMTI4LCA4MCwgODUsIDg1LCA4NCwgMTI4LCA4MCwgODUsIDg1LCAxMjgsIDgwLCA4NSwgODQsIDgyLCA2OSwgCi0gICAgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgMTI4LCA4MCwgODUsIDIxMiwgODAsIDg1LCAKLSAgICA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzUsIDY1LCAxMjgsIDgwLCA4NSwgODMsIAotICAgIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIDg1LCA4MiwgODMsIDY5LCAxMjgsIDgwLCA4NSwgCi0gICAgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3OCwgNjUsIDc3LCA2NSwgMTI4LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCAKLSAgICA4NSwgODAsIDEyOCwgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCAKLSAgICA4MCwgODUsIDc4LCA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIAotICAgIDg1LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgODAsIDg1LCA3NywgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCAKLSAgICA3MywgMTk1LCA4MCwgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCAKLSAgICA4NSwgNDksIDEyOCwgODAsIDg1LCAxMjgsIDgwLCA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCi0gICAgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIAorICAgIDgzLCA2OSwgODIsIDczLCA3MCwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgCisgICAgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCAKKyAgICA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIAorICAgIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgCisgICAgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIAorICAgIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgCisgICAgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgCisgICAgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCAKKyAgICA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIAorICAgIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgCisgICAgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCisgICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCisgICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKKyAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKKyAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCisgICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgMTkzLCA4MywgNjksIAorICAgIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgODMsIDY5LCA3MSwgCisgICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgODYsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCAKKyAgICA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgCisgICAgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCAKKyAgICA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NywgNjUsIDc4LCA4NCwgCisgICAgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCAKKyAgICA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIAorICAgIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgCisgICAgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgCisgICAgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgNzksIDc4LCAxMjgsIDgzLCAKKyAgICA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgCisgICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKKyAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCisgICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKKyAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAorICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCisgICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCAKKyAgICA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCAKKyAgICA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIAorICAgIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgCisgICAgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgCisgICAgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCAKKyAgICA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIAorICAgIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgCisgICAgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCAKKyAgICA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgCisgICAgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCAKKyAgICA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCisgICAgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAKKyAgICA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIAorICAgIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgCisgICAgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCAKKyAgICA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCA4NCwgCisgICAgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAKKyAgICAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIAorICAgIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgCisgICAgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCAKKyAgICA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCA2OSwgODQsIAorICAgIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIAorICAgIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAKKyAgICAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgCisgICAgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgCisgICAgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgCisgICAgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCAKKyAgICA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIAorICAgIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCAKKyAgICA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIAorICAgIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIAorICAgIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIAorICAgIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIAorICAgIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIAorICAgIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIAorICAgIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgCisgICAgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgCisgICAgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAKKyAgICAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIAorICAgIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgCisgICAgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgCisgICAgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCAKKyAgICA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIAorICAgIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgCisgICAgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCAKKyAgICA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIAorICAgIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgCisgICAgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAKKyAgICAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIAorICAgIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgCisgICAgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgCisgICAgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgCisgICAgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCAKKyAgICA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCAKKyAgICA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIAorICAgIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgCisgICAgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgCisgICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIAorICAgIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgCisgICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIAorICAgIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgCisgICAgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCAKKyAgICA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIAorICAgIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgCisgICAgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCAKKyAgICA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCAKKyAgICA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIAorICAgIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgCisgICAgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgCisgICAgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgCisgICAgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgCisgICAgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIAorICAgIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgCisgICAgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgODIsIDczLCA4MCwgMTI4LCA4MiwgCisgICAgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCAKKyAgICA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIAorICAgIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgCisgICAgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIAorICAgIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIAorICAgIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzYsIAorICAgIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCisgICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIAorICAgIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgCisgICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIAorICAgIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgCisgICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAorICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgCisgICAgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCisgICAgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIAorICAgIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKKyAgICA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCisgICAgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIAorICAgIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgCisgICAgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCAKKyAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIAorICAgIDc5LCAyMDYsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIAorICAgIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIAorICAgIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAorICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDgzLCA2NywgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCAKKyAgICA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgMTI4LCA4MiwgNjksIAorICAgIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgCisgICAgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCAKKyAgICA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIAorICAgIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgCisgICAgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCAKKyAgICA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIAorICAgIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCAKKyAgICA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIAorICAgIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgCisgICAgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgCisgICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCAKKyAgICA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAorICAgIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgCisgICAgODgsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIAorICAgIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAKKyAgICAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIAorICAgIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAKKyAgICAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIAorICAgIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgCisgICAgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCAKKyAgICA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgCisgICAgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCAKKyAgICA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIAorICAgIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgCisgICAgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCAKKyAgICA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgMTI4LCA4MiwgNjksIAorICAgIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgCisgICAgODAsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDY5LCAKKyAgICA3MywgODYsIDY5LCAyMTAsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA2NSwgNzYsIAorICAgIDcxLCA2NSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzIsIDc3LCA4NSwgNzUsIDEyOCwgODIsIDY5LCA2NSwgNjcsIDcyLCAKKyAgICAxMjgsIDgyLCA2OCwgMjA3LCA4MiwgNjgsIDY5LCAyMDQsIDgyLCA2NiwgNjUsIDgzLCAxOTMsIDgyLCA2NSwgODksIDgzLCAKKyAgICAxMjgsIDgyLCA2NSwgODksIDIxMSwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgODMsIDc5LCAKKyAgICA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCA3MywgODMsIAorICAgIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIAorICAgIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCAKKyAgICA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgCisgICAgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCAKKyAgICA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIAorICAgIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIDY5LCAKKyAgICAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIAorICAgIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgCisgICAgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MiwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDY1LCA2NiwgNjYsIDczLCA4NCwgMTI4LCA4MiwgNjUsIAorICAgIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCA4MiwgNjUsIDUxLCAxMjgsIAorICAgIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIDEyOCwgODIsIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgNTAsIDEyOCwgODIsIDQ4LCAKKyAgICA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgODIsIDQ4LCA0OSwgNTYsIAorICAgIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIDUxLCAxMjgsIDgyLCA0OCwgCisgICAgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCA1MiwgMTI4LCA4MiwgNDgsIAorICAgIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCAxMjgsIDgyLCA0OCwgCisgICAgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgMTI4LCA4MiwgNDUsIDY3LCAKKyAgICA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgODQsIDEyOCwgODEsIDg5LCAKKyAgICA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgNzksIDEyOCwgODEsIDg5LCAKKyAgICA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgNjUsIDY1LCAxMjgsIDgxLCAKKyAgICA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgNjksIDEyOCwgODEsIDg3LCAKKyAgICA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgODgsIDEyOCwgODEsIDg1LCAKKyAgICA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgODQsIDEyOCwgODEsIDg1LCAKKyAgICA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCA4MSwgODUsIDgyLCAxMjgsIAorICAgIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIDE5NywgODEsIDg1LCA3OSwgCisgICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgNzksIDgwLCAxMjgsIDgxLCAKKyAgICA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCA4MywgODMsIDY5LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgMTkzLCA4MSwgODUsIDczLCA3OCwgCisgICAgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDgxLCA4NSwgNzMsIDc2LCAKKyAgICAyMTIsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCAKKyAgICA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCAKKyAgICA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgCisgICAgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCAKKyAgICA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIAorICAgIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgCisgICAgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCAKKyAgICA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgCisgICAgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAKKyAgICAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgCisgICAgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgCisgICAgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgCisgICAgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgCisgICAgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCAKKyAgICA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCAKKyAgICA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIAorICAgIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIAorICAgIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgCisgICAgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgCisgICAgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCAKKyAgICA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCAKKyAgICA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAorICAgIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgCisgICAgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAKKyAgICAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgCisgICAgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIAorICAgIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIAorICAgIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAKKyAgICAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIAorICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIAorICAgIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgCisgICAgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgCisgICAgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCisgICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKKyAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCisgICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAorICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIAogICAgIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgCiAgICAgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCAKICAgICA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgCiAgICAgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKICAgICA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIAogICAgIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCAKLSAgICA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAxMjgsIAotICAgIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgwLCA4MiwgCi0gICAgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIDgyLCA3MywgODYsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgMTk3LCA4MCwgODIsIDczLCA4NiwgNjUsIDY3LCAyMTcsIAotICAgIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCAKLSAgICA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIAorICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgCisgICAgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgCisgICAgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCA3MCwgNzksIDg1LCA3OCwgNjgsIAorICAgIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgMjEyLCA4MCwgCisgICAgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDgwLCA4MiwgNzMsIDg2LCAKKyAgICA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIAorICAgIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCisgICAgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKICAgICA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIAotICAgIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgCi0gICAgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgCi0gICAgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCAKLSAgICA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIAotICAgIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgCi0gICAgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIAotICAgIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgCi0gICAgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCAKLSAgICA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIAotICAgIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIAotICAgIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCAKLSAgICA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgCi0gICAgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCAKLSAgICA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIAotICAgIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAKLSAgICAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgCi0gICAgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCAKLSAgICA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIAotICAgIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgCi0gICAgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAKLSAgICAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIAotICAgIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgCi0gICAgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgMTk2LCA4MCwgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIAotICAgIDgyLCAyMTcsIDgwLCA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgCi0gICAgNzksIDY1LCAxMjgsIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgCi0gICAgODAsIDc2LCA4NSwgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIAotICAgIDc2LCA4NSwgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA4NSwgCi0gICAgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCA4MCwgNzYsIDc5LCA4MCwgNzIsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCAKLSAgICA3MiwgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIDY4LCAxMjgsIDgwLCA3NiwgNjUsIDg5LCA3MywgNzgsIDE5OSwgODAsIAorICAgIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA4MCwgODIsIDY5LCA4MywgCisgICAgNjksIDg0LCAxMjgsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCAKKyAgICA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzAsIDY1LCAKKyAgICA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIAorICAgIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgODIsIDY5LCA2NywgCisgICAgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDg5LCA2OSwgMjEwLCA4MCwgODIsIAorICAgIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCAKKyAgICA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIAorICAgIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgCisgICAgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgCisgICAgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgCisgICAgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCAKKyAgICA3OSwgODcsIDY4LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgCisgICAgMjE3LCA4MCwgNzksIDg1LCA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCAKKyAgICA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIAorICAgIDIwNiwgODAsIDc5LCA4MywgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgCisgICAgODMsIDg0LCAxMjgsIDgwLCA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4NCwgNjUsIDY2LCA3NiwgCisgICAgMTk3LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgNzMsIDc4LCAxOTksIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIAorICAgIDc5LCA4MCwgNjcsIDc5LCA4MiwgNzgsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgCisgICAgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgCisgICAgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCAKKyAgICA3MiwgMTI4LCA4MCwgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCAKKyAgICA4MCwgNzksIDc2LCAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIAorICAgIDczLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgODAsIDc5LCA3MywgNzgsIDg0LCAKKyAgICAxMjgsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCA4MiwgMjE3LCA4MCwgNzksIDY5LCA4NCwgNzMsIAorICAgIDE5NSwgODAsIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA2NywgNzUsIDY5LCAyMTIsIDgwLCA3OSwgCisgICAgNjUsIDEyOCwgODAsIDc5LCAxMjgsIDgwLCAyMDcsIDgwLCA3OCwgNjksIDg1LCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MCwgCisgICAgNzYsIDg1LCA4NCwgNzksIDEyOCwgODAsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA3NiwgODUsIDgzLCA0NSwgNzcsIDczLCAKKyAgICA3OCwgODUsIDIxMSwgODAsIDc2LCA4NSwgODMsIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgMTI4LCA4MCwgNzYsIAorICAgIDg1LCA3NywgNjksIDE5NiwgODAsIDc2LCA4NSwgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgODAsIDc2LCA4NSwgCisgICAgNzEsIDEyOCwgODAsIDc2LCA4NSwgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCA4MCwgNzYsIDc5LCA4MCwgNzIsIDg1LCAKKyAgICAxMjgsIDgwLCA3NiwgNzIsIDY1LCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIAorICAgIDc2LCA2OCwgMTI4LCA4MCwgNzYsIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgCiAgICAgNzYsIDY1LCA4MywgODQsIDczLCA2NywgODMsIDEyOCwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDgwLCA3NiwgNjUsIDc4LCAKLSAgICAxOTcsIDgwLCA3NiwgNjUsIDc4LCA2NywgMjAzLCA4MCwgNzYsIDY1LCA3NSwgMTI4LCA4MCwgNzYsIDY1LCA3MSwgNzMsIAotICAgIDc5LCAyMTEsIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzIsIDc5LCA3NiwgNjgsIDY5LCAyMTAsIDgwLCA3NiwgNjUsIDY3LCAKLSAgICAxOTcsIDgwLCA3NiwgNjUsIDEyOCwgODAsIDczLCA5MCwgOTAsIDczLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzMsIAotICAgIDkwLCA5MCwgNjUsIDEyOCwgODAsIDczLCA4OCwgMTI4LCA4MCwgNzMsIDg3LCA4MiwgMTI4LCA4MCwgNzMsIDg0LCA2NywgCi0gICAgNzIsIDcwLCA3OSwgODIsIDc1LCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgMjAzLCA4MCwgNzMsIDg0LCAKLSAgICAxMjgsIDgwLCA3MywgODMsIDg0LCA3OSwgNzYsIDEyOCwgODAsIDczLCA4MywgNjksIDc2LCA2OSwgNzIsIDEyOCwgODAsIAotICAgIDczLCA4MywgNjcsIDY5LCA4MywgMTI4LCA4MCwgNzMsIDgyLCA3MywgNzEsIDEyOCwgODAsIDczLCA4MiwgNzMsIDE5OSwgCi0gICAgODAsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgODAsIDczLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNzMsIDgwLCAKLSAgICA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIAotICAgIDgwLCA3MywgODAsIDEyOCwgODAsIDczLCA3OCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODAsIDczLCA3OCwgNjksIDY1LCA4MCwgCi0gICAgODAsIDc2LCA2OSwgMTI4LCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MywgNzgsIDY1LCA4MiwgNjYsIDc5LCA4MiwgNjUsIDgzLCAKLSAgICAxMjgsIDgwLCA3MywgNzYsIDc2LCAxMjgsIDgwLCA3MywgNzYsIDE5NywgODAsIDczLCA3NiwgNjcsIDgyLCA3OSwgMjE1LCAKLSAgICA4MCwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNzUsIDc5LCAxMjgsIDgwLCA3MywgNzEsIDEyOCwgODAsIAotICAgIDczLCAxOTksIDgwLCA3MywgNjksIDg4LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCi0gICAgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIAotICAgIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAotICAgIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAotICAgIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzcsIDczLCA2OSwgODUsIAotICAgIDc3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgwLCA3MywgCi0gICAgNjksIDg1LCA4MCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgMjA4LCA4MCwgNzMsIDY5LCA4NCwgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgNjksIDgxLCAxMjgsIDgwLCAKLSAgICA3MywgNjksIDY3LCA2OSwgMTI4LCA4MCwgNzMsIDY5LCAxMjgsIDgwLCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2NywgNzUsIDEyOCwgODAsIDczLCA2NSwgODMsIDg1LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgCi0gICAgNzcsIDE5MywgODAsIDczLCA2NSwgNzgsIDc5LCAxMjgsIDgwLCAyMDEsIDgwLCA3MiwgODcsIDY1LCAxMjgsIDgwLCA3MiwgCi0gICAgODUsIDg0LCA3MiwgNjUsIDc5LCAxMjgsIDgwLCA3MiwgODUsIDIxMCwgODAsIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCAKLSAgICA3MiwgODIsIDY1LCA4MywgNjksIDEyOCwgODAsIDcyLCA3OSwgNzgsIDY5LCA4MywgMTI4LCA4MCwgNzIsIDc5LCA2OSwgNzgsIAotICAgIDczLCA2NywgNzMsIDY1LCAyMDYsIDgwLCA3MiwgNzksIDY1LCAxMjgsIDgwLCA3MiwgNzksIDEyOCwgODAsIDcyLCAyMDcsIAotICAgIDgwLCA3MiwgNzgsIDY1LCA2OSwgMjAzLCA4MCwgNzIsIDczLCA3OCwgODQsIDcyLCA4NSwgMTI4LCA4MCwgNzIsIDczLCA3NiwgCi0gICAgNzksIDgzLCA3OSwgODAsIDcyLCA2OSwgODIsIDIxMSwgODAsIDcyLCA3MywgNzYsIDczLCA4MCwgODAsIDczLCA3OCwgMTk3LCAKLSAgICA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgMjAwLCA4MCwgNzIsIDczLCAxMjgsIDgwLCA3MiwgMjAxLCAKLSAgICA4MCwgNzIsIDY5LCA2OSwgMTI4LCA4MCwgNzIsIDY5LCAxMjgsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5OCwgODAsIAotICAgIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk0LCA4MCwgNzIsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgCi0gICAgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCA3MiwgNjUsIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCAKLSAgICA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIDgwLCAxOTMsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIAotICAgIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIAotICAgIDEyOCwgODAsIDY5LCA4NSwgODgsIDEyOCwgODAsIDY5LCA4NSwgODQsIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCAKLSAgICA2OSwgODQsIDY1LCA4MywgODQsIDczLCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIAotICAgIDY1LCA3NiwgNzYsIDY5LCAxOTYsIDgwLCA2OSwgODMsIDc5LCAxMjgsIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgCi0gICAgNzIsIDUwLCAxMjgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCA4MCwgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIDcyLCAKLSAgICAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIAotICAgIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCA4MCwgCi0gICAgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA2OSwgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDgwLCAKLSAgICA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCA2OSwgCi0gICAgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIDY5LCA4MiwgNzcsIDczLCA4NCwgODQsIDY5LCAxOTYsIDgwLCAKLSAgICA2OSwgODIsIDc3LCA2NSwgNzgsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgCi0gICAgNzMsIDEyOCwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDIwMSwgODAsIDY5LCA4MiwgNzAsIDc5LCAKLSAgICA4MiwgNzcsIDczLCA3OCwgMTk5LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgODAsIDY5LCA4MiwgNzAsIAotICAgIDY5LCA2NywgODQsIDY1LCAxMjgsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgCi0gICAgODMsIDgzLCA3MywgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgNjksIDg0LCAKLSAgICAxMjgsIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIDc5LCA4MCwgNzYsIAotICAgIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgCi0gICAgODIsIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgODMsIDg1LCAKLSAgICAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIDY5LCA3OCwgNzMsIAotICAgIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCAKLSAgICA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIAotICAgIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgCi0gICAgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCAKLSAgICAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIAotICAgIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgCi0gICAgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNjcsIDcyLCAxMjgsIDgwLCAKLSAgICA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDczLCAxMjgsIDgwLCA2OCwgNzAsIAotICAgIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIDEyOCwgODAsIDY1LCA4OSwgNjksIAotICAgIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODAsIDY1LCA4OSwgMTI4LCA4MCwgCi0gICAgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgNjUsIDg2LCA3MywgODksIDY1LCAKLSAgICA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA4MCwgNjUsIAotICAgIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAyMDAsIDgwLCA2NSwgODQsIDY1LCA3NSwgCi0gICAgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDgzLCA4NSwgODEsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIAotICAgIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCAKLSAgICA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgCi0gICAgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCAKLSAgICA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIAotICAgIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgCi0gICAgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIAotICAgIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgCi0gICAgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCA4NCwgNzMsIDcxLCA3NywgNjksIAotICAgIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDIxMSwgODAsIDY1LCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgCi0gICAgODIsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCAKLSAgICA3NiwgNjksIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIAotICAgIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAKLSAgICAxOTMsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgCi0gICAgMTI4LCA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAKLSAgICA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIAotICAgIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgCi0gICAgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCAKLSAgICA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgCi0gICAgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCAKLSAgICA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIAotICAgIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCAKLSAgICA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgCi0gICAgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIAotICAgIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCAKLSAgICA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIAotICAgIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgCi0gICAgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCAKLSAgICA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIAotICAgIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgCi0gICAgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgCi0gICAgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCAKLSAgICA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDEyOCwgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIAotICAgIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIAotICAgIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgNjUsIDY4LCAxMjgsIDgwLCA2NSwgCi0gICAgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDg0LCAKLSAgICA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIDY1LCA2NSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgNjUsIDY1LCA0NSwgODAsIDczLCAKLSAgICA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCA0OCwgNDksIDQ5LCAxMjgsIDgwLCAKLSAgICA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAxMjgsIDgwLCA0OCwgNDgsIDU2LCAxMjgsIDgwLCA0OCwgNDgsIAotICAgIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCA0OCwgNDgsIDUzLCAxMjgsIDgwLCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgMTI4LCA4MCwgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgCi0gICAgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAKLSAgICAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIDEyOCwgNzksIDg4LCA3MywgMTkzLCAKLSAgICA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIAotICAgIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCAKLSAgICA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIAotICAgIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODYsIDEyOCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIAotICAgIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAKLSAgICAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIAotICAgIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIAotICAgIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAKLSAgICAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIAotICAgIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgCi0gICAgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgMjA2LCAKLSAgICA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCA4MiwgNjksIAotICAgIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNjgsIDY5LCAyMTAsIDc5LCA4MiwgCi0gICAgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIAotICAgIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIDg1LCA4MywgCisgICAgNjcsIDIwMywgODAsIDc2LCA2NSwgNzUsIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCA3OSwgMjExLCA4MCwgNzYsIDY1LCAKKyAgICA2NywgNjksIDcyLCA3OSwgNzYsIDY4LCA2OSwgMjEwLCA4MCwgNzYsIDY1LCA2NywgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIAorICAgIDgwLCA3MywgOTAsIDkwLCA3MywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODAsIDczLCA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgCisgICAgODgsIDEyOCwgODAsIDczLCA4NywgODIsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCAKKyAgICA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDIwMywgODAsIDczLCA4NCwgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIAorICAgIDc2LCAxMjgsIDgwLCA3MywgODMsIDY5LCA3NiwgNjksIDcyLCAxMjgsIDgwLCA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgCisgICAgODAsIDczLCA4MiwgNzMsIDcxLCAxMjgsIDgwLCA3MywgODIsIDczLCAxOTksIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDgwLCA3MywgODIsIDY1LCA2NywgODksIDEyOCwgODAsIDczLCA4MiwgNTAsIDEyOCwgODAsIDczLCA4MCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgODAsIDczLCA4MCwgCisgICAgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDgwLCA3MywgODAsIDEyOCwgODAsIDczLCA3OCwgODcsIDcyLCA2OSwgNjksIAorICAgIDIwNCwgODAsIDczLCA3OCwgNjksIDY1LCA4MCwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MywgCisgICAgNzgsIDY1LCA4MiwgNjYsIDc5LCA4MiwgNjUsIDgzLCAxMjgsIDgwLCA3MywgNzYsIDc2LCAxMjgsIDgwLCA3MywgNzYsIAorICAgIDE5NywgODAsIDczLCA3NiwgNjcsIDgyLCA3OSwgMjE1LCA4MCwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgwLCA3MywgCisgICAgNzUsIDc5LCAxMjgsIDgwLCA3MywgNzEsIDEyOCwgODAsIDczLCAxOTksIDgwLCA3MywgNjksIDg4LCAxMjgsIDgwLCA3MywgCisgICAgNjksIDg1LCA4MCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgMjA4LCA4MCwgNzMsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgODAsIDczLCA2OSwgNjksIDgxLCAxMjgsIDgwLCA3MywgNjksIDY3LCA2OSwgMTI4LCA4MCwgNzMsIDY5LCAxMjgsIAorICAgIDgwLCA3MywgNjcsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDgwLCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODAsIDczLCA2NywgCisgICAgNzUsIDEyOCwgODAsIDczLCA2NSwgODMsIDg1LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgNzcsIAorICAgIDE5MywgODAsIDczLCA2NSwgNzgsIDc5LCAxMjgsIDgwLCAyMDEsIDgwLCA3MiwgODcsIDY1LCAxMjgsIDgwLCA3MiwgODUsIAorICAgIDg0LCA3MiwgNjUsIDc5LCAxMjgsIDgwLCA3MiwgODUsIDIxMCwgODAsIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA3MiwgCisgICAgODIsIDY1LCA4MywgNjksIDEyOCwgODAsIDcyLCA3OSwgNzgsIDY5LCA4MywgMTI4LCA4MCwgNzIsIDc5LCA2OSwgNzgsIDczLCAKKyAgICA2NywgNzMsIDY1LCAyMDYsIDgwLCA3MiwgNzksIDY1LCAxMjgsIDgwLCA3MiwgNzksIDEyOCwgODAsIDcyLCAyMDcsIDgwLCAKKyAgICA3MiwgNzgsIDY1LCA2OSwgMjAzLCA4MCwgNzIsIDczLCA3OCwgODQsIDcyLCA4NSwgMTI4LCA4MCwgNzIsIDczLCA3NiwgNzksIAorICAgIDgzLCA3OSwgODAsIDcyLCA2OSwgODIsIDIxMSwgODAsIDcyLCA3MywgNzYsIDczLCA4MCwgODAsIDczLCA3OCwgMTk3LCA4MCwgCisgICAgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIAorICAgIDY5LCA4NSwgODAsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgMjAwLCA4MCwgNzIsIDczLCAxMjgsIDgwLCA3MiwgMjAxLCA4MCwgCisgICAgNzIsIDY5LCA2OSwgMTI4LCA4MCwgNzIsIDY5LCAxMjgsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5OCwgODAsIDcyLCAKKyAgICA2NSwgODMsIDY5LCA0NSwgMTk0LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTMsIDgwLCA3MiwgNjUsIDgyLCA4OSwgNzgsIAorICAgIDcxLCA2OSwgNjUsIDIwNCwgODAsIDcyLCA2NSwgODIsIDEyOCwgODAsIDcyLCA2NSwgNzgsIDEyOCwgODAsIDcyLCA2NSwgCisgICAgNzcsIDEyOCwgODAsIDcyLCA2NSwgNzMsIDgzLCA4NCwgNzksIDIxMSwgODAsIDcyLCA2NSwgNzEsIDgzLCA0NSwgODAsIAorICAgIDE5MywgODAsIDcyLCA2NSwgNjYsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDgyLCA3NSwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDgwLCA3MiwgNjUsIDEyOCwgODAsIDcxLCAxMjgsIDgwLCA3MCwgMTI4LCA4MCwgNjksIDg1LCA4OCwgCisgICAgMTI4LCA4MCwgNjksIDg1LCA4NCwgNjUsIDY5LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAxMjgsIDgwLCA2OSwgODQsIDY1LCAKKyAgICA4MywgODQsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgCisgICAgNzMsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDc2LCA3NiwgNjksIAorICAgIDE5NiwgODAsIDY5LCA4MywgNzksIDEyOCwgODAsIDY5LCA4MywgMjA3LCA4MCwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODAsIAorICAgIDY5LCA4MywgNzIsIDE3OCwgODAsIDY5LCA4MywgNjksIDg0LCAxOTMsIDgwLCA2OSwgMjExLCA4MCwgNjksIDgyLCA4NCwgCisgICAgNzIsIDIwNywgODAsIDY5LCA4MiwgODMsIDgwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIDgzLCAKKyAgICA3OSwgNzgsIDY1LCAyMDQsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAyMDYsIAorICAgIDgwLCA2OSwgODIsIDgzLCA3MywgNjUsIDIwNiwgODAsIDY5LCA4MiwgODMsIDY5LCA4NiwgNjksIDgyLCA3MywgNzgsIDE5OSwgCisgICAgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgODIsIDEyOCwgODAsIDY5LCA4MiwgODAsIAorICAgIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MCwgNjksIDgyLCA3OCwgNzMsIDIwNiwgODAsIDY5LCA4MiwgCisgICAgNzcsIDczLCA4NCwgODQsIDY5LCAxOTYsIDgwLCA2OSwgODIsIDc3LCA3MywgMTk1LCA4MCwgNjksIDgyLCA3NywgNjUsIDc4LCAKKyAgICA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA2OSwgODIsIAorICAgIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgODIsIDc3LCA3MywgNzgsIDE5OSwgCisgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCAKKyAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDY5LCAKKyAgICA4MCwgNjksIDg0LCAxMjgsIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIAorICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgCisgICAgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIAorICAgIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgCisgICAgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCAKKyAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIAorICAgIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAKKyAgICAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCAKKyAgICA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIAorICAgIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIAorICAgIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCAKKyAgICA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIAorICAgIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCA2NSwgCisgICAgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDczLCAKKyAgICAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgNjUsIDg2LCAKKyAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCA4NCwgODQsIAorICAgIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgCisgICAgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgCisgICAgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCAKKyAgICA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgCisgICAgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgCisgICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCA4MCwgNjUsIDgzLCAKKyAgICA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIAorICAgIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCisgICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKKyAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCisgICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIAorICAgIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgCisgICAgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCAKKyAgICA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgCisgICAgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIAorICAgIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCAKKyAgICA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgCisgICAgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCAKKyAgICA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIAorICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIAorICAgIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgCisgICAgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAorICAgIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIAorICAgIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIAorICAgIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgCisgICAgODUsIDc4LCA3MSwgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCAKKyAgICA3NywgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIAorICAgIDc3LCA3MywgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgCisgICAgNzcsIDY5LCA3OCwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCAKKyAgICA2NSwgNjksIDcyLCAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIAorICAgIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgCisgICAgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCAKKyAgICA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCAKKyAgICA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIAorICAgIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIDEyOCwgCisgICAgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgMTI4LCAKKyAgICA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgNjUsIAorICAgIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCA2NSwgCisgICAgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgNjUsIDczLCAxMjgsIDgwLCAKKyAgICA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCA4MCwgNTAsIDEyOCwgODAsIAorICAgIDQ4LCA0OSwgNDksIDEyOCwgODAsIDQ4LCA0OSwgNDgsIDEyOCwgODAsIDQ4LCA0OCwgNTcsIDEyOCwgODAsIDQ4LCA0OCwgCisgICAgNTYsIDEyOCwgODAsIDQ4LCA0OCwgNTUsIDEyOCwgODAsIDQ4LCA0OCwgNTQsIDEyOCwgODAsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgODAsIDQ4LCA0OCwgNTIsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDUxLCAxMjgsIDgwLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgODksIAorICAgIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgODgsIDczLCA2NSwgCisgICAgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgODgsIDY5LCA3MywgMTkzLCA3OSwgCisgICAgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgNzgsIDE5OSwgNzksIDg2LCAKKyAgICA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAxMjgsIDc5LCA4NiwgNjksIAorICAgIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCAxMjgsIDc5LCA4NiwgCisgICAgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAKKyAgICA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIAorICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgCisgICAgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCAKKyAgICA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjksIAorICAgIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgCisgICAgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCAKKyAgICA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIAorICAgIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIAorICAgIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgCisgICAgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCAKKyAgICA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCAKKyAgICA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAogICAgIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAKICAgICAyMTAsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIAogICAgIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA3OSwgOTAsIDY5LCAKLSAgICAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgODUsIAotICAgIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA3OCwgCi0gICAgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgNzgsIDc1LCA2NSwgODIsIDEyOCwgCi0gICAgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCA2NSwgMjE3LCA3OSwgNzgsIDY5LCAKLSAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3OSwgNzgsIAotICAgIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgCi0gICAgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCAyMDYsIDc5LCAKLSAgICA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIDY1LCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgNzksIDc2LCA2OCwgMTI4LCA3OSwgCi0gICAgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCA4MiwgMTkzLCA3OSwgNzQsIDczLCAKLSAgICA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIDc5LCA3MiwgNzcsIAotICAgIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIAotICAgIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAKLSAgICAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIAotICAgIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgMTk2LCAKLSAgICA3OSwgNjcsIDg0LCA3OSwgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIAotICAgIDg0LCA2OSwgMjEyLCA3OSwgNjcsIDIxMCwgNzksIDY3LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgCi0gICAgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgCi0gICAgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgCi0gICAgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCAKLSAgICA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgCi0gICAgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCAKLSAgICA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCAKLSAgICA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIAotICAgIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgCi0gICAgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAKLSAgICA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIAotICAgIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCAKLSAgICA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIAotICAgIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgCi0gICAgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCAKLSAgICA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIAotICAgIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgCi0gICAgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCAKLSAgICA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCAKLSAgICA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIAotICAgIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIAotICAgIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzgsIDg5LCA4NSwgNzksIDEyOCwgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgODksIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgODksIDc5LCA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCA3OSwgMTI4LCAKKyAgICA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIAorICAgIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCAKKyAgICA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIAorICAgIDY5LCAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgCisgICAgODUsIDEyOCwgNzksIDc5LCA3MiwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCAKKyAgICA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIAorICAgIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgCisgICAgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCAKKyAgICA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIAorICAgIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgCisgICAgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCAKKyAgICA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIAorICAgIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgCisgICAgNzYsIDEyOCwgNzksIDczLCAyMDQsIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIAorICAgIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAKKyAgICAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIAorICAgIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIAorICAgIDc5LCA2OSwgNjksIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCA2OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIAorICAgIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCA4NCwgCisgICAgNjksIDIxMiwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCAKKyAgICA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIAorICAgIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgCisgICAgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCAKKyAgICA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIAorICAgIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgCisgICAgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgCisgICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIAorICAgIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIAorICAgIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAKKyAgICA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgCisgICAgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCAKKyAgICA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIAorICAgIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgCisgICAgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgCisgICAgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCAKKyAgICA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIAorICAgIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgCisgICAgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAKKyAgICAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCAKKyAgICA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIAorICAgIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgCisgICAgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAKKyAgICAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCAKKyAgICA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgCisgICAgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgCisgICAgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAKKyAgICAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCAKKyAgICA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIAorICAgIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgCisgICAgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgCiAgICAgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCAKICAgICA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCAKICAgICA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIAotICAgIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDc4LCA4OSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgCi0gICAgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIDc4LCA4OSwgNjksIDcyLCAKLSAgICAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgCi0gICAgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCAKLSAgICA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIAotICAgIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIAotICAgIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIAotICAgIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgCi0gICAgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAKLSAgICAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCAKLSAgICA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIAotICAgIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgCi0gICAgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgCi0gICAgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCAKLSAgICA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIAotICAgIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3OCwgODQsIDg1LCA4NSwgMTI4LCA3OCwgODQsIDg1LCA3NywgMTI4LCA3OCwgODQsIDIxMywgNzgsIDg0LCAKLSAgICA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA3MywgNjksIDE5NywgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIAotICAgIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgCi0gICAgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAKLSAgICAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIAotICAgIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgCi0gICAgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIAotICAgIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgCi0gICAgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAKLSAgICAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCAKLSAgICA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgCi0gICAgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgNzksIDgwLCAxMjgsIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgCi0gICAgNzgsIDgyLCA2OSwgODAsIDEyOCwgNzgsIDgyLCA2OSwgMTI4LCA3OCwgODIsIDY1LCA4OCwgMTI4LCA3OCwgODIsIDY1LCAKLSAgICA4NCwgMTI4LCA3OCwgODIsIDY1LCA4MCwgMTI4LCA3OCwgODIsIDY1LCAxMjgsIDc4LCA3OSwgODksIDEyOCwgNzgsIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgNzksIDg2LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA4NCwgODQsIDc5LCAxMjgsIAotICAgIDc4LCA3OSwgODQsIDY5LCA4MywgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNzgsIDc5LCA4NCwgCi0gICAgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDc1LCAxMjgsIDc4LCA3OSwgODQsIDY5LCAKLSAgICA2NiwgNzksIDc5LCAyMDMsIDc4LCA3OSwgODQsIDY5LCAxMjgsIDc4LCA3OSwgODQsIDE5NywgNzgsIDc5LCA4NCwgNjcsIAotICAgIDcyLCA2OSwgMTk2LCA3OCwgNzksIDg0LCA2NywgNzIsIDEyOCwgNzgsIDc5LCA4NCwgMTI4LCA3OCwgNzksIDIxMiwgNzgsIAotICAgIDc5LCA4MywgNjksIDEyOCwgNzgsIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgCi0gICAgNjksIDgyLCAyMDYsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDc4LCA3OSwgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIDIxMCwgCi0gICAgNzgsIDc5LCA4MCwgMTI4LCA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCAKLSAgICA3MCwgNzksIDgyLCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgCi0gICAgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCAKLSAgICA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgMjA0LCA3OCwgNzksIDc1LCA3MiwgODUsIAotICAgIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAxMjgsIDc4LCA3OSwgNjUsIDEyOCwgNzgsIDc5LCA0NSwgNjYsIDgyLCA2OSwgCi0gICAgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgCi0gICAgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzgsIAotICAgIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCi0gICAgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCA3OSwgMTI4LCAKLSAgICA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDEyOCwgNzgsIDc4LCA2NiwgCi0gICAgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgCi0gICAgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCAKLSAgICA3NiwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIAotICAgIDQ4LCA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgCi0gICAgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgCi0gICAgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4OSwgODgsIAotICAgIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODksIDgyLCAxMjgsIAotICAgIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCA3OCwgNzQsIDg1LCAKLSAgICA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIDc0LCA4NSwgNjksIAotICAgIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgNzksIDg4LCAxMjgsIAotICAgIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAxMjgsIDc4LCA3NCwgCi0gICAgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCA3MywgODAsIDEyOCwgCi0gICAgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDEyOCwgNzgsIAotICAgIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDc0LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIDY5LCAxMjgsIDc4LCAKLSAgICA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgNzYsIDczLCAxMjgsIAotICAgIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAxMjgsIDc4LCA3MywgCi0gICAgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIDcxLCA4NSwgMTI4LCAKLSAgICA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDg5LCAxMjgsIAotICAgIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc4LCAKLSAgICA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDE3OCwgNzgsIAotICAgIDczLCA3NywgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgCi0gICAgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCAKLSAgICA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIAotICAgIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgCi0gICAgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgCi0gICAgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIAotICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgCi0gICAgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgCi0gICAgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgCi0gICAgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCAKLSAgICA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCAKLSAgICA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCi0gICAgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAKLSAgICAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIAotICAgIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgCi0gICAgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgCi0gICAgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCAKLSAgICA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIAorICAgIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgCisgICAgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAKKyAgICAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAKKyAgICAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCAKKyAgICA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIAorICAgIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgCisgICAgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIAorICAgIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgCisgICAgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgCisgICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgCisgICAgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCAKKyAgICA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIAorICAgIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgCisgICAgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCAKKyAgICA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCAKKyAgICA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIAorICAgIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgCisgICAgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCisgICAgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgCisgICAgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgCisgICAgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCAKKyAgICA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIAorICAgIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAKKyAgICAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCAKKyAgICA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIAorICAgIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgCisgICAgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCAKKyAgICA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODMsIAorICAgIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIAorICAgIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIAorICAgIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgCisgICAgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgCisgICAgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAKKyAgICAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCAKKyAgICA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIAorICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgCisgICAgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCAKKyAgICA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIAorICAgIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgCisgICAgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAKKyAgICAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIAorICAgIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgCisgICAgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCAKKyAgICA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCAKKyAgICA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIAorICAgIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCA3OCwgNzksIDc4LCAxMjgsIAorICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgCisgICAgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAKKyAgICAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKKyAgICA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIAorICAgIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgCisgICAgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAKKyAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCAKKyAgICA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIAorICAgIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgCisgICAgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgCisgICAgNzgsIDc2LCA2NSwgODUsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCisgICAgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgCisgICAgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgCisgICAgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCisgICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKKyAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCisgICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAorICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCisgICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKKyAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAorICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKKyAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzgsIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgCisgICAgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzksIDc2LCA4MywgNjYsIDg1LCA4MiwgMTk5LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCAKKyAgICA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIAorICAgIDczLCA3MiwgODMsIDcyLCA4NiwgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAKKyAgICAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAorICAgIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIAorICAgIDY3LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIAorICAgIDc4LCA3MywgNjYsIDEyOCwgNzgsIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIAorICAgIDc4LCA3MiwgNzQsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA4NSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAKKyAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgCisgICAgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgCisgICAgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCAKKyAgICA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCAKKyAgICA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAorICAgIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCAKKyAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAKKyAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKKyAgICA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgCisgICAgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCAKKyAgICA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIAorICAgIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKICAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCAKICAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIAogICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgCiAgICAgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCAKICAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgCi0gICAgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIAotICAgIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIAotICAgIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCAKLSAgICA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAKLSAgICAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIAotICAgIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCAxMjgsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCAKLSAgICA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIAotICAgIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA2NSwgNzgsIAotICAgIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIAotICAgIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgCi0gICAgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCAKLSAgICA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIAotICAgIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIAotICAgIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCAKLSAgICA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIAotICAgIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCAKLSAgICA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgCi0gICAgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCAKLSAgICA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIAotICAgIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgCi0gICAgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCAKLSAgICA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCAKLSAgICA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgCi0gICAgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCAKLSAgICA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIAotICAgIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgCi0gICAgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCAKLSAgICA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIAotICAgIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAKLSAgICAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCAKLSAgICA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCAKLSAgICA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIAotICAgIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCAKLSAgICA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIAotICAgIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgCi0gICAgMTkzLCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgCi0gICAgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAKLSAgICAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCAKLSAgICA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIAotICAgIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCAKLSAgICA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCAKLSAgICA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIAotICAgIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAKLSAgICA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIAotICAgIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIAotICAgIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCAKLSAgICA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIAotICAgIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCAKLSAgICA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIAotICAgIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIAotICAgIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgCi0gICAgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgCi0gICAgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCAKLSAgICA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgCi0gICAgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCAKLSAgICA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIAotICAgIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIAotICAgIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgCi0gICAgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAKLSAgICAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAKLSAgICAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCAKLSAgICA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIAotICAgIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIAotICAgIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgCi0gICAgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCA3OSwgODUsIDgzLCAKLSAgICA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAotICAgIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgCi0gICAgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIAotICAgIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKLSAgICA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIAotICAgIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgCi0gICAgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIAotICAgIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgCi0gICAgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCAKLSAgICA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgCi0gICAgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCAKLSAgICA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIAotICAgIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgCi0gICAgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAKLSAgICA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIAotICAgIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIAotICAgIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAKLSAgICAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCAKLSAgICA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIAotICAgIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIAotICAgIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAKLSAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIAotICAgIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgCi0gICAgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCAKLSAgICA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIAotICAgIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgCi0gICAgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCAKLSAgICA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODQsIAotICAgIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgCi0gICAgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgNzMsIDY5LCAKLSAgICA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCA3OCwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgCi0gICAgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3NywgCi0gICAgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgNzcsIDczLCAKLSAgICA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3NywgNzMsIAotICAgIDE5NiwgNzcsIDczLCA2NywgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgCi0gICAgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAKLSAgICAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAKLSAgICAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCAKLSAgICA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIAotICAgIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgCi0gICAgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgCi0gICAgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgCi0gICAgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNjksIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCAKLSAgICA3MSwgNjUsIDg4LCAxMjgsIDc3LCA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIAotICAgIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCAKLSAgICA3NywgNzAsIDczLCA4OSwgNjUsIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgNzcsIDcwLCA2OSwgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgCi0gICAgNjUsIDEyOCwgNzcsIDY5LCA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgCi0gICAgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCAKLSAgICA2OSwgODUsIDc4LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3NywgNjksIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCAKLSAgICA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIAotICAgIDY5LCA3MSwgMTI4LCA3NywgNjksIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgCi0gICAgNjksIDc4LCA3MywgNjUsIDIwNiwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCAKLSAgICA3MSwgMTk3LCA3NywgNjksIDgzLCA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCAKLSAgICA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgMTk1LCA3NywgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIAotICAgIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIAotICAgIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgCi0gICAgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIAotICAgIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIAotICAgIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAKKyAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgCisgICAgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgCisgICAgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCAKKyAgICA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIAorICAgIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgCisgICAgODIsIDc1LCA2OSwgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgCisgICAgNzgsIDY5LCA4MiwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCAKKyAgICA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCAKKyAgICA2OSwgMTI4LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKKyAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgCisgICAgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCAKKyAgICA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIAorICAgIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIAorICAgIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCAKKyAgICA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCAKKyAgICA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIAorICAgIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCAKKyAgICA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCAKKyAgICA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIAorICAgIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgCisgICAgNjUsIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAKKyAgICAxMjgsIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCAKKyAgICA3OCwgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIAorICAgIDc4LCA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgCisgICAgNzksIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgCisgICAgNzgsIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCAKKyAgICA3OCwgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIAorICAgIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgCisgICAgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIAorICAgIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgCisgICAgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MywgNjUsIDIwNCwgNzgsIAorICAgIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIAorICAgIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCAKKyAgICA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCAKKyAgICA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCAKKyAgICA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIAorICAgIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIAorICAgIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjYsIDY1LCA4NCwgCisgICAgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCAKKyAgICA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIAorICAgIDc4LCA2NSwgNTIsIDEyOCwgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgCisgICAgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgCisgICAgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgCisgICAgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIAorICAgIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIAorICAgIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCAKKyAgICA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAorICAgIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCAKKyAgICA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIAorICAgIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCAKKyAgICA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCAKKyAgICA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCAKKyAgICA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAKKyAgICAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIAorICAgIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgCisgICAgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCAKKyAgICA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIAorICAgIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgCisgICAgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgzLCAxMjgsIDc3LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIAorICAgIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgCisgICAgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCAKKyAgICA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc4LCAxMjgsIDc3LCA4NSwgNzYsIAorICAgIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgCisgICAgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDY5LCAxMjgsIDc3LCA4NSwgCisgICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKKyAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc2LCA4NCwgNjUsIAorICAgIDc4LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgCisgICAgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgNzgsIDEyOCwgCisgICAgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCAKKyAgICA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgODMsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIAorICAgIDgyLCAyMDcsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIAorICAgIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDIxMSwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAorICAgIDcyLCA3MywgNzgsIDcxLCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDcwLCA3NiwgNzksIDc5LCAKKyAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNjgsIDczLCA2NSwgCisgICAgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc3LCA3OSwgODYsIDY5LCAKKyAgICA3NywgNjksIDc4LCAyMTIsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODYsIDY5LCAxMjgsIDc3LCA3OSwgODUsIAorICAgIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgCisgICAgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCAKKyAgICA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIAorICAgIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgCisgICAgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAKKyAgICAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIAorICAgIDg1LCA3NywgMTI4LCA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgCisgICAgNzEsIDczLCA2NywgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCAKKyAgICA3NywgNzksIDc5LCA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIAorICAgIDIwNiwgNzcsIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgCisgICAgNzcsIDc5LCA3OSwgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAKKyAgICA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIAorICAgIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgCisgICAgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCAKKyAgICA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCisgICAgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCAKKyAgICA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgCisgICAgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCAKKyAgICA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIAorICAgIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIAorICAgIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNTcsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCisgICAgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKKyAgICA3MywgNjksIDgyLCA0NSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIAorICAgIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKKyAgICA0NSwgNDksIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIAorICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKKyAgICA0NSwgNDksIDUxLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIAorICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIAorICAgIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAKKyAgICAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCAKKyAgICA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAKKyAgICAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCAKKyAgICA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIAorICAgIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgCisgICAgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCAKKyAgICA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIAorICAgIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAKKyAgICAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIAorICAgIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAKKyAgICA3MywgODQsIDY1LCA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIAorICAgIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgCisgICAgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIAorICAgIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIAorICAgIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCAKKyAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAorICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgCisgICAgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIAorICAgIDEyOCwgNzcsIDczLCA2OCwgNDUsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgCisgICAgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCAKKyAgICA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgMTI4LCAKKyAgICA3NywgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgCisgICAgNzEsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAKKyAgICAxMjgsIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCAKKyAgICA2OSwgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCAKKyAgICA3NywgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAorICAgIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCAKKyAgICA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIAorICAgIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIAorICAgIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgCisgICAgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCAKKyAgICA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIAorICAgIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIAorICAgIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgCisgICAgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCAKKyAgICA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIAorICAgIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgCisgICAgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCAKKyAgICA3NywgNjksIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAxOTcsIDc3LCA2OSwgODMsIAorICAgIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgCisgICAgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIDY1LCA3OCwgODMsIAorICAgIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgCisgICAgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNzksIDgyLCA2NSwgMjAwLCAKKyAgICA3NywgNjksIDc4LCA3OSwgNjksIDEyOCwgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIDc4LCAxMjgsIAorICAgIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgCisgICAgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCAKKyAgICA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCAKKyAgICA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIAogICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIAotICAgIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgCi0gICAgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCAKLSAgICA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIAotICAgIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIAotICAgIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIAotICAgIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgCi0gICAgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAKLSAgICAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIAotICAgIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgCi0gICAgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCAKLSAgICA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCAKLSAgICA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIAotICAgIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIAotICAgIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIDY2LCAxMjgsIDc3LCAxOTQsIDc3LCAKLSAgICA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgCi0gICAgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgCi0gICAgNzcsIDY1LCA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCAKLSAgICA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIAotICAgIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgCi0gICAgNzcsIDY1LCA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCAKLSAgICA2NywgODUsIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCAKLSAgICA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIAotICAgIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIAotICAgIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgCi0gICAgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAKLSAgICAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCAKLSAgICA4MywgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAotICAgIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgCi0gICAgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCAKLSAgICA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIAotICAgIDgzLCAxOTcsIDc3LCA2NSwgNzYsIDY5LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgCi0gICAgNzYsIDE5NywgNzcsIDY1LCA3NiwgNjUsIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCAKLSAgICA3NywgNjUsIDc1LCA4MywgODUsIDgyLCAxOTMsIDc3LCA2NSwgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIAotICAgIDc3LCA3OSwgNzUsIDEyOCwgNzcsIDY1LCA3MywgODQsIDY1LCA3MywgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgCi0gICAgODUsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAKKyAgICAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCA2OSwgMjAxLCA3NywgNjksIAorICAgIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgCisgICAgMjAyLCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCAKKyAgICA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNzcsIDY5LCA2OCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIAorICAgIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgCisgICAgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgCisgICAgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgODUsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgCisgICAgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCAKKyAgICA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIAorICAgIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgCisgICAgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIAorICAgIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgCisgICAgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIAorICAgIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCAKKyAgICA2NSwgODksIDY5LCAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIAorICAgIDY1LCA4OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgCisgICAgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCAKKyAgICA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIAorICAgIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgCisgICAgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCAKKyAgICA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIAorICAgIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIDIwMSwgNzcsIDY1LCA4MiwgCisgICAgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCAKKyAgICA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIAorICAgIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgCisgICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCAKKyAgICA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIAorICAgIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCisgICAgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCAKKyAgICA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIAorICAgIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIAorICAgIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCA4MywgCisgICAgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAorICAgIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDczLCA2NywgNzIsIDY1LCA2OSwgNjUsIDIwNiwgCisgICAgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCA3OCwgCisgICAgNjUsIDIxMiwgNzcsIDY1LCA3OCwgNjUsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDc3LCA2NSwgNzYsIDg0LCA2OSwgODMsIAorICAgIDE5NywgNzcsIDY1LCA3NiwgNjksIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzcsIDY1LCA3NiwgCisgICAgMTk3LCA3NywgNjUsIDc2LCA2NSwgNzUsIDc5LCAyMDYsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDY1LCAxMjgsIDc3LCAKKyAgICA2NSwgNzUsIDgzLCA4NSwgODIsIDE5MywgNzcsIDY1LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgNzMsIDg5LCA2NSwgNzcsIAorICAgIDc5LCA3NSwgMTI4LCA3NywgNjUsIDczLCA4NCwgNjUsIDczLCA3NSwgNzIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDgyLCA4NSwgCisgICAgMTI4LCA3NywgNjUsIDczLCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgNjUsIDczLCA3NywgNjUsIDc2LCA2NSwgNzMsIAogICAgIDEyOCwgNzcsIDY1LCA3MywgNzYsIDY2LCA3OSwgMjE2LCA3NywgNjUsIDczLCA3NSwgODUsIDgyLCA3OSwgMTI4LCA3NywgCiAgICAgNjUsIDczLCA2OCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA3MiwgNzQsIDc5LCA3OCwgMTk5LCAKICAgICA3NywgNjUsIDcyLCA3MiwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA3NywgNjUsIAotICAgIDcyLCA2NSwgODAsIDY1LCA3NSwgNzIsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDY1LCA4MCwgODIsIDY1LCA2NSwgNzgsIDE5MywgCi0gICAgNzcsIDY1LCA3MiwgMTI4LCA3NywgNjUsIDcxLCA3OCwgNzMsIDcwLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNjksIDgzLCAKLSAgICA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA3NCwgNjksIDg0LCAxMjgsIAotICAgIDc3LCA2NSwgNjksIDc3LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzUsIDgwLCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDcxLCA2NiwgNzMsIAotICAgIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDc3LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NSwgCi0gICAgNjksIDc2LCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzUsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDY1LCA2OCwgODksIDY1LCAKLSAgICAxMjgsIDc3LCA2NSwgNjgsIDg1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMjAwLCA3NywgNjUsIDY4LCA2OCwgNjUsIAotICAgIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDE5MywgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCi0gICAgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCAKLSAgICA3OSwgNzgsIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3NywgNjUsIAotICAgIDY3LCA4MiwgNzksIDIwNiwgNzcsIDY1LCA2NywgNzIsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY1LCA2NSwgODksIDg5LCA2NSwgCi0gICAgNjUsIDEyOCwgNzcsIDY1LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA2NSwgMTI4LCA3NywgNjUsIDUwLCAxMjgsIDc3LCA0OCwgCi0gICAgNTIsIDUyLCAxMjgsIDc3LCA0OCwgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDQ5LCAKLSAgICAxMjgsIDc3LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCA0OCwgMTI4LCA3NywgNDgsIDUxLCA1NywgMTI4LCAKLSAgICA3NywgNDgsIDUxLCA1NiwgMTI4LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIAotICAgIDUxLCA1MywgMTI4LCA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCA1MSwgCi0gICAgNTEsIDY1LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDUwLCAxMjgsIDc3LCA0OCwgNTEsIDQ5LCAKLSAgICA2NSwgMTI4LCA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUwLCA1NywgMTI4LCAKLSAgICA3NywgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIAotICAgIDQ4LCA1MCwgNTQsIDEyOCwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc3LCA0OCwgCi0gICAgNTAsIDUyLCAxMjgsIDc3LCA0OCwgNTAsIDUxLCAxMjgsIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCA0OCwgMTI4LCA3NywgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA3NywgNDgsIDQ5LCA1NiwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDEyOCwgNzcsIAotICAgIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDUzLCA2NSwgMTI4LCA3NywgCi0gICAgNDgsIDQ5LCA1MywgMTI4LCA3NywgNDgsIDQ5LCA1MiwgMTI4LCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCAKKyAgICA3MiwgNjUsIDgwLCA2NSwgNzUsIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA3NCwgNjUsIDc4LCAyMDEsIDc3LCA2NSwgNzIsIAorICAgIDY1LCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgNzIsIDEyOCwgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgCisgICAgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDg5LCA3MywgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3OCwgNzQsIDY5LCA4NCwgMTI4LCA3NywgNjUsIDY5LCA3NywgODYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIAorICAgIDY1LCA2OSwgNzcsIDc1LCA4MCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzcsIDY2LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3NywgMTI4LCA3NywgNjUsIDY5LCA3NiwgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDc3LCA2NSwgNjgsIDg5LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA4NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgCisgICAgNjUsIDIwMCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCAxOTMsIDc3LCA2NSwgNjcsIDgyLCAKKyAgICA3OSwgNzgsIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY2LCA4MiwgCisgICAgNjksIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc3LCAKKyAgICA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCAyMDYsIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIAorICAgIDY5LCAxMjgsIDc3LCA2NSwgNjUsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNjUsIDczLCAxMjgsIDc3LCA2NSwgCisgICAgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDksIDU3LCAxODMsIDc3LCA0OSwgNTcsIDE4MiwgNzcsIDQ5LCA1NywgCisgICAgMTgxLCA3NywgNDksIDU3LCAxODAsIDc3LCA0OSwgNTcsIDE3OSwgNzcsIDQ5LCA1NywgMTc4LCA3NywgNDksIDU3LCAxNzcsIAorICAgIDc3LCA0OSwgNTcsIDE3NiwgNzcsIDQ5LCA1NiwgMTg1LCA3NywgNDksIDU2LCAxODQsIDc3LCA0OSwgNTYsIDE4MywgNzcsIAorICAgIDQ5LCA1NiwgMTgyLCA3NywgNDksIDU2LCAxODEsIDc3LCA0OSwgNTYsIDE4MCwgNzcsIDQ5LCA1NiwgMTc5LCA3NywgNDksIAorICAgIDU2LCAxNzgsIDc3LCA0OSwgNTYsIDE3NywgNzcsIDQ5LCA1NiwgMTc2LCA3NywgNDksIDU1LCAxODUsIDc3LCA0OSwgNTUsIAorICAgIDE4NCwgNzcsIDQ5LCA1NSwgMTgzLCA3NywgNDksIDU1LCAxODIsIDc3LCA0OSwgNTUsIDE4MSwgNzcsIDQ5LCA1NSwgMTgwLCAKKyAgICA3NywgNDksIDU1LCAxNzksIDc3LCA0OSwgNTUsIDE3OCwgNzcsIDQ5LCA1NSwgMTc3LCA3NywgNDksIDU1LCAxNzYsIDc3LCAKKyAgICA0OSwgNTQsIDE4NSwgNzcsIDQ5LCA1NCwgMTg0LCA3NywgNDksIDU0LCAxODMsIDc3LCA0OSwgNTQsIDE4MiwgNzcsIDQ5LCAKKyAgICA1NCwgMTgxLCA3NywgNDksIDU0LCAxODAsIDc3LCA0OSwgNTQsIDE3OSwgNzcsIDQ5LCA1NCwgMTc4LCA3NywgNDksIDU0LCAKKyAgICAxNzcsIDc3LCA0OSwgNTQsIDE3NiwgNzcsIDQ5LCA1MywgMTg1LCA3NywgNDksIDUzLCAxODQsIDc3LCA0OSwgNTMsIDE4MywgCisgICAgNzcsIDQ5LCA1MywgMTgyLCA3NywgNDksIDUzLCAxODEsIDc3LCA0OSwgNTMsIDE4MCwgNzcsIDQ5LCA1MywgMTc5LCA3NywgCisgICAgNDksIDUzLCAxNzgsIDc3LCA0OSwgNTMsIDE3NywgNzcsIDQ5LCA1MywgMTc2LCA3NywgNDksIDUyLCAxODUsIDc3LCA0OSwgCisgICAgNTIsIDE4NCwgNzcsIDQ5LCA1MiwgMTgzLCA3NywgNDksIDUyLCAxODIsIDc3LCA0OSwgNTIsIDE4MSwgNzcsIDQ5LCA1MiwgCisgICAgMTgwLCA3NywgNDksIDUyLCAxNzksIDc3LCA0OSwgNTIsIDE3OCwgNzcsIDQ5LCA1MiwgMTc3LCA3NywgNDksIDUyLCAxNzYsIAorICAgIDc3LCA0OSwgNTEsIDE4NSwgNzcsIDQ5LCA1MSwgMTg0LCA3NywgNDksIDUxLCAxODMsIDc3LCA0OSwgNTEsIDE4MiwgNzcsIAorICAgIDQ5LCA1MSwgMTgxLCA3NywgNDksIDUxLCAxODAsIDc3LCA0OSwgNTEsIDE3OSwgNzcsIDQ5LCA1MSwgMTc4LCA3NywgNDksIAorICAgIDUxLCAxNzcsIDc3LCA0OSwgNTEsIDE3NiwgNzcsIDQ5LCA1MCwgMTg1LCA3NywgNDksIDUwLCAxODQsIDc3LCA0OSwgNTAsIAorICAgIDE4MywgNzcsIDQ5LCA1MCwgMTgyLCA3NywgNDksIDUwLCAxODEsIDc3LCA0OSwgNTAsIDE4MCwgNzcsIDQ5LCA1MCwgMTc5LCAKKyAgICA3NywgNDksIDUwLCAxNzgsIDc3LCA0OSwgNTAsIDE3NywgNzcsIDQ5LCA1MCwgMTc2LCA3NywgNDksIDQ5LCAxODUsIDc3LCAKKyAgICA0OSwgNDksIDE4NCwgNzcsIDQ5LCA0OSwgMTgzLCA3NywgNDksIDQ5LCAxODIsIDc3LCA0OSwgNDksIDE4MSwgNzcsIDQ5LCAKKyAgICA0OSwgMTgwLCA3NywgNDksIDQ5LCAxNzksIDc3LCA0OSwgNDksIDE3OCwgNzcsIDQ5LCA0OSwgMTc3LCA3NywgNDksIDQ5LCAKKyAgICAxNzYsIDc3LCA0OSwgNDgsIDE4NSwgNzcsIDQ5LCA0OCwgMTg0LCA3NywgNDksIDQ4LCAxODMsIDc3LCA0OSwgNDgsIDE4MiwgCisgICAgNzcsIDQ5LCA0OCwgMTgxLCA3NywgNDksIDQ4LCAxODAsIDc3LCA0OSwgNDgsIDE3OSwgNzcsIDQ5LCA0OCwgMTc4LCA3NywgCisgICAgNDksIDQ4LCAxNzcsIDc3LCA0OSwgNDgsIDE3NiwgNzcsIDQ4LCA1NywgMTg1LCA3NywgNDgsIDU3LCAxODQsIDc3LCA0OCwgCisgICAgNTcsIDE4MywgNzcsIDQ4LCA1NywgMTgyLCA3NywgNDgsIDU3LCAxODEsIDc3LCA0OCwgNTcsIDE4MCwgNzcsIDQ4LCA1NywgCisgICAgMTc5LCA3NywgNDgsIDU3LCAxNzgsIDc3LCA0OCwgNTcsIDE3NywgNzcsIDQ4LCA1NywgMTc2LCA3NywgNDgsIDU2LCAxODUsIAorICAgIDc3LCA0OCwgNTYsIDE4NCwgNzcsIDQ4LCA1NiwgMTgzLCA3NywgNDgsIDU2LCAxODIsIDc3LCA0OCwgNTYsIDE4MSwgNzcsIAorICAgIDQ4LCA1NiwgMTgwLCA3NywgNDgsIDU2LCAxNzksIDc3LCA0OCwgNTYsIDE3OCwgNzcsIDQ4LCA1NiwgMTc3LCA3NywgNDgsIAorICAgIDU2LCAxNzYsIDc3LCA0OCwgNTUsIDE4NSwgNzcsIDQ4LCA1NSwgMTg0LCA3NywgNDgsIDU1LCAxODMsIDc3LCA0OCwgNTUsIAorICAgIDE4MiwgNzcsIDQ4LCA1NSwgMTgxLCA3NywgNDgsIDU1LCAxODAsIDc3LCA0OCwgNTUsIDE3OSwgNzcsIDQ4LCA1NSwgMTc4LCAKKyAgICA3NywgNDgsIDU1LCAxNzcsIDc3LCA0OCwgNTUsIDE3NiwgNzcsIDQ4LCA1NCwgMTg1LCA3NywgNDgsIDU0LCAxODQsIDc3LCAKKyAgICA0OCwgNTQsIDE4MywgNzcsIDQ4LCA1NCwgMTgyLCA3NywgNDgsIDU0LCAxODEsIDc3LCA0OCwgNTQsIDE4MCwgNzcsIDQ4LCAKKyAgICA1NCwgMTc5LCA3NywgNDgsIDU0LCAxNzgsIDc3LCA0OCwgNTQsIDE3NywgNzcsIDQ4LCA1NCwgMTc2LCA3NywgNDgsIDUzLCAKKyAgICAxODUsIDc3LCA0OCwgNTMsIDE4NCwgNzcsIDQ4LCA1MywgMTgzLCA3NywgNDgsIDUzLCAxODIsIDc3LCA0OCwgNTMsIDE4MSwgCisgICAgNzcsIDQ4LCA1MywgMTgwLCA3NywgNDgsIDUzLCAxNzksIDc3LCA0OCwgNTMsIDE3OCwgNzcsIDQ4LCA1MywgMTc3LCA3NywgCisgICAgNDgsIDUzLCAxNzYsIDc3LCA0OCwgNTIsIDE4NSwgNzcsIDQ4LCA1MiwgMTg0LCA3NywgNDgsIDUyLCAxODMsIDc3LCA0OCwgCisgICAgNTIsIDE4MiwgNzcsIDQ4LCA1MiwgMTgxLCA3NywgNDgsIDUyLCA1MiwgMTI4LCA3NywgNDgsIDUyLCAxODAsIDc3LCA0OCwgCisgICAgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDE3OSwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgMTc4LCA3NywgCisgICAgNDgsIDUyLCA0OSwgMTI4LCA3NywgNDgsIDUyLCAxNzcsIDc3LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCAKKyAgICA0OCwgMTI4LCA3NywgNDgsIDUyLCAxNzYsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgNTEsIDE4NSwgNzcsIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNzcsIDQ4LCA1MSwgMTg0LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCAxODMsIDc3LCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDE4MiwgNzcsIDQ4LCA1MSwgNTMsIDEyOCwgNzcsIDQ4LCA1MSwgMTgxLCAKKyAgICA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCAxODAsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIAorICAgIDUxLCA1MSwgNjUsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgMTc5LCA3NywgNDgsIDUxLCA1MCwgCisgICAgMTI4LCA3NywgNDgsIDUxLCAxNzgsIDc3LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgCisgICAgNDgsIDUxLCAxNzcsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDE3NiwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgCisgICAgNzcsIDQ4LCA1MCwgMTg1LCA3NywgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MCwgMTg0LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCAxODMsIDc3LCA0OCwgNTAsIDU0LCAxMjgsIDc3LCAKKyAgICA0OCwgNTAsIDE4MiwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgMTgxLCA3NywgNDgsIDUwLCA1MiwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDEyOCwgNzcsIDQ4LCA1MCwgMTgwLCA3NywgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIAorICAgIDUwLCAxNzksIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgMTI4LCA3NywgNDgsIDUwLCAxNzgsIAorICAgIDc3LCA0OCwgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDE3NywgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgCisgICAgMTc2LCA3NywgNDgsIDQ5LCA1NywgMTI4LCA3NywgNDgsIDQ5LCAxODUsIDc3LCA0OCwgNDksIDU2LCAxMjgsIDc3LCA0OCwgCisgICAgNDksIDE4NCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCA0OCwgNDksIDE4MywgCisgICAgNzcsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDE4MiwgNzcsIDQ4LCAKKyAgICA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUzLCAxMjgsIDc3LCA0OCwgNDksIDE4MSwgNzcsIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgMTgwLCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCAxNzksIDc3LCA0OCwgNDksIAogICAgIDUwLCA3MiwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgCiAgICAgNDksIDUwLCA2OSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCAKICAgICA0OCwgNDksIDUwLCA2NiwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIAotICAgIDQ4LCA0OSwgNDksIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDc3LCA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDc3LCA0OCwgNDgsIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCAKLSAgICA3NywgNDgsIDQ4LCA1MSwgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIAotICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIAotICAgIDg5LCA4OCwgMTI4LCA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIAotICAgIDg5LCA4MCwgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgCi0gICAgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgCi0gICAgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgCi0gICAgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgCi0gICAgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIAotICAgIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgCi0gICAgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgCi0gICAgNzYsIDg1LCA1MSwgMTI4LCA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgCi0gICAgNzcsIDEyOCwgNzYsIDgyLCA3MywgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIAotICAgIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgCi0gICAgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCAKLSAgICA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIAotICAgIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgCi0gICAgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgCi0gICAgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCAKLSAgICA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgCi0gICAgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCAKLSAgICA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAotICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgCi0gICAgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAKLSAgICAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIAotICAgIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgCi0gICAgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCAKLSAgICA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIAotICAgIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgCi0gICAgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCAKLSAgICA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIAotICAgIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIAotICAgIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgCi0gICAgODQsIDY5LCAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDEyOCwgNzYsIDczLCA4MywgMjEzLCA3NiwgCi0gICAgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCAKLSAgICA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzgsIDIwMywgNzYsIAotICAgIDczLCA3OCwgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgCi0gICAgNzYsIDczLCA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCAKLSAgICA0NSwgNTEsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIAotICAgIDc2LCA3MywgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAKLSAgICAyMTMsIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNzYsIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIAotICAgIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIAotICAgIDY5LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgCi0gICAgMTI4LCA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgCi0gICAgNzMsIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCAKLSAgICA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgCi0gICAgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCAKLSAgICA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCAKLSAgICA4NiwgNjksIDIwNCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIAotICAgIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIAotICAgIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgCi0gICAgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIAotICAgIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAKLSAgICAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIAotICAgIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgCi0gICAgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgCi0gICAgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAKLSAgICAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIAotICAgIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCAKLSAgICA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIAotICAgIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgCi0gICAgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIAotICAgIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgCi0gICAgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCAKLSAgICA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIAotICAgIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgCi0gICAgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCAKLSAgICA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCAKLSAgICA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIAorICAgIDQ4LCA0OSwgMTc4LCA3NywgNDgsIDQ5LCA0OSwgMTI4LCA3NywgNDgsIDQ5LCAxNzcsIDc3LCA0OCwgNDksIDQ4LCA2NSwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIDQ5LCAxNzYsIDc3LCA0OCwgNDgsIDU3LCAxMjgsIDc3LCA0OCwgCisgICAgNDgsIDE4NSwgNzcsIDQ4LCA0OCwgNTYsIDEyOCwgNzcsIDQ4LCA0OCwgMTg0LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgCisgICAgNDgsIDQ4LCAxODMsIDc3LCA0OCwgNDgsIDU0LCAxMjgsIDc3LCA0OCwgNDgsIDE4MiwgNzcsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgNzcsIDQ4LCA0OCwgMTgxLCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCAxODAsIDc3LCA0OCwgNDgsIDUxLCAKKyAgICA2NSwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgMTI4LCA3NywgNDgsIDQ4LCAxNzksIDc3LCA0OCwgNDgsIDUwLCAxMjgsIDc3LCAKKyAgICA0OCwgNDgsIDE3OCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA3NywgNDgsIDQ4LCAxNzcsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgMTI4LCAKKyAgICA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgMTI4LCAKKyAgICA3NiwgODksIDczLCA4NCwgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIAorICAgIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIAorICAgIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIAorICAgIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgCisgICAgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCAKKyAgICA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCAKKyAgICA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDIwMCwgNzYsIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIAorICAgIDg1LCAxOTcsIDc2LCA4NSwgNjYsIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA4NSwgNTEsIDEyOCwgNzYsIAorICAgIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIDc3LCAxMjgsIDc2LCA4MiwgNzMsIAorICAgIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgCisgICAgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCAKKyAgICA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3NiwgNzksIAorICAgIDg3LCA0NSwgNzcsIDczLCAxOTYsIDc2LCA3OSwgODcsIDQ1LCA3MCwgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDc2LCA3OSwgCisgICAgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIDY4LCAKKyAgICA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgODUsIAorICAgIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgCisgICAgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgCisgICAgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCAKKyAgICA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIAorICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCisgICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIAorICAgIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAKKyAgICA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgCisgICAgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIAorICAgIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgCisgICAgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCAKKyAgICA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIAorICAgIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgCisgICAgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIAorICAgIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgCisgICAgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgCisgICAgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgCisgICAgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgCisgICAgNzMsIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIAorICAgIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMjAwLCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODMsIAorICAgIDEyOCwgNzYsIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIAorICAgIDgwLCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA4MCwgMjExLCA3NiwgNzMsIDIwOCwgNzYsIDczLCA3OCwgCisgICAgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCA3NSwgNjksIDE5NiwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCAKKyAgICA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIAorICAgIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgCisgICAgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCAKKyAgICA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIAorICAgIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgCisgICAgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCAKKyAgICA3NywgNjYsIDIxMSwgNzYsIDczLCA3NywgMTk0LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIAorICAgIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgCisgICAgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIAorICAgIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzEsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA3MywgCisgICAgNzAsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCAKKyAgICA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCAKKyAgICA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIAorICAgIDc2LCA3MywgNjYsIDY5LCA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgCisgICAgNzIsIDczLCA3MywgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIAorICAgIDE5OSwgNzYsIDcyLCA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIAorICAgIDEyOCwgNzYsIDY5LCA4NiwgNzMsIDg0LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgCisgICAgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIAorICAgIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgCisgICAgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCAKKyAgICA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCA2NywgNzIsIAorICAgIDE5MywgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIAorICAgIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgCisgICAgNzgsIDczLCAyMTEsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKKyAgICA4NCwgNzIsIDQ1LCA1NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTQsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAorICAgIDg0LCA3MiwgNDUsIDUzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgODQsIDcyLCA0NSwgNTEsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUwLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKKyAgICA4NCwgNzIsIDQ1LCA0OSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIAorICAgIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgCisgICAgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCAKKyAgICA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDczLCAxMjgsIDc2LCA2OSwgNzEsIAorICAgIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgCisgICAgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCAKKyAgICA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCisgICAgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCAKKyAgICA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIAorICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgCisgICAgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCAKKyAgICA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIAorICAgIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgCisgICAgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCAKKyAgICA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCAKKyAgICA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIDc0LCAxMjgsIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIAogICAgIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAKLSAgICAyMTAsIDc2LCA2NSwgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCAKLSAgICA2NSwgODAsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCAxMjgsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIAotICAgIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc3LCA2OSwgCi0gICAgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgMTk2LCA3NiwgNjUsIDc3LCAKLSAgICA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCA2NSwgMTI4LCA3NiwgNjUsIDc3LCA2OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc2LCAxMjgsIAotICAgIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDg5LCA2NSwgNzksIDEyOCwgNzYsIDY1LCA3NCwgCi0gICAgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIAotICAgIDEyOCwgNzYsIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIAotICAgIDcxLCA2NSwgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgCi0gICAgNzEsIDY1LCAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgCi0gICAgNjUsIDY3LCA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgCi0gICAgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCAKLSAgICA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgNDgsIAorICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDIwMSwgCisgICAgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCAKKyAgICA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCAKKyAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAorICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgODAsIDEyOCwgNzYsIAorICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgCisgICAgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCAKKyAgICA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIAorICAgIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCAKKyAgICA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ4LCA1NiwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MywgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCAKKyAgICA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCAxODUsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIAorICAgIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDUzLCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTcsIAorICAgIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDE3NywgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgMTg1LCA3NiwgNjUsIDc1LCAKKyAgICA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIAorICAgIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OCwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgCisgICAgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIDc2LCA2NSwgNzEsIDY1LCAKKyAgICA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIAorICAgIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAyMTcsIDc2LCA2NSwgNjcsIAorICAgIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCA3NiwgNjUsIDY2LCA2NSwgCisgICAgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCAKKyAgICA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDU0LCAxMjgsIDc2LCAKKyAgICA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKICAgICA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIAogICAgIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCA4OSwgCiAgICAgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIDY1LCAKQEAgLTIyMDcsNzIgKzI0NjUsODIgQEAKICAgICAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgNjUsIAogICAgIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgNzMsIAogICAgIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgODgsIAotICAgIDY1LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCA3OSwgCi0gICAgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgCi0gICAgNjksIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIDEyOCwgCi0gICAgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgMTI4LCAKLSAgICA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAxMjgsIDc1LCA4NSwgODIsIAotICAgIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgODIsIDEyOCwgNzUsIDg1LCAyMTAsIAotICAgIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgODAsIDEyOCwgNzUsIDg1LCA3OSwgCi0gICAgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgNzgsIDcxLCAxMjgsIDc1LCA4NSwgCi0gICAgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCAKLSAgICA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCAKLSAgICA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCAKLSAgICA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIAotICAgIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgCi0gICAgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCAKLSAgICA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCAKLSAgICA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgCi0gICAgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIAotICAgIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgCi0gICAgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAKLSAgICAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCAKLSAgICA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCA3OSwgODQsIAotICAgIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgCi0gICAgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIDE5NSwgNzUsIDc5LCA4MSwgNzgsIDY4LCAKLSAgICA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODAsIDEyOCwgNzUsIDc5LCA3OSwgODAsIAotICAgIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAxMjgsIDc1LCA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgCi0gICAgODQsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAxOTMsIDc1LCA3OSwgNzcsIAotICAgIDIwMSwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgMTkzLCA3NSwgCi0gICAgNzksIDc3LCA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIDc1LCA3OSwgMjAzLCA3NSwgCi0gICAgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIDcyLCA3OSwgNzcsIDEyOCwgCi0gICAgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCA3OSwgNjUsIDEyOCwgNzUsIDc4LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIAotICAgIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIAotICAgIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgCi0gICAgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgCi0gICAgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgCi0gICAgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAotICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAKLSAgICAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAxOTksIDc1LCAKLSAgICA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCA3NSwgNzMsIAotICAgIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIDc1LCA3MywgCi0gICAgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIAotICAgIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCAKLSAgICAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIDc1LCAKLSAgICA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgNjUsIAotICAgIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3MywgMTI4LCA3NSwgCi0gICAgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCAKLSAgICA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAKLSAgICAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIAotICAgIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIDc1LCA3MiwgCi0gICAgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgNzksIDc4LCAKLSAgICAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDIwNywgNzUsIDcyLCAKLSAgICA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIDczLCA3OCwgODksIDY1LCAxMjgsIDc1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgCi0gICAgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCA3MiwgNjUsIDgyLCAKKyAgICA2NSwgMTI4LCA3NSwgODcsIDg2LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIDg3LCA3OSwgNzksIAorICAgIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDc3LCAxMjgsIDc1LCA4NywgNzMsIDczLCAxMjgsIDc1LCA4NywgNzMsIAorICAgIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY2LCAxMjgsIDc1LCA4NywgNjUsIAorICAgIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIAorICAgIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODYsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIDEyOCwgNzUsIAorICAgIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA3NSwgCisgICAgODUsIDgzLCA3MiwgODUsIDE3OCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAKKyAgICA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIAorICAgIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAKKyAgICAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDcxLCAxMjgsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNjYsIDEyOCwgCisgICAgNzUsIDg1LCA2NSwgODYsIDEyOCwgNzUsIDg1LCA2NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgMTI4LCA3NSwgODUsIDU1LCAKKyAgICAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgCisgICAgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAKKyAgICAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCAKKyAgICA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIAorICAgIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgCisgICAgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCAKKyAgICA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgCisgICAgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIAorICAgIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgCisgICAgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAKKyAgICAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCAKKyAgICA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgNzIsIDEyOCwgNzUsIAorICAgIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg2LCAxMjgsIAorICAgIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCA4MiwgNzksIDc4LCA3MywgCisgICAgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIDE5NSwgNzUsIDc5LCAKKyAgICA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODAsIDEyOCwgNzUsIAorICAgIDc5LCA3OSwgODYsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAKKyAgICAxMjgsIDc1LCA3OSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIAorICAgIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgCisgICAgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCAKKyAgICA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCA2OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIDc1LCA3OSwgMjAzLCAKKyAgICA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIDcyLCA3OSwgNzcsIAorICAgIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NiwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIAorICAgIDc5LCA2NSwgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCA2OSwgODMsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgCisgICAgNjksIDEyOCwgNzUsIDc4LCA3OSwgNjYsIDgzLCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCAKKyAgICA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIAorICAgIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIAorICAgIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIAorICAgIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIAorICAgIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCAKKyAgICA3MywgODcsIDEyOCwgNzUsIDczLCA4NiwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIAorICAgIDE5OSwgNzUsIDczLCA4MywgODMsIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIAorICAgIDc1LCA3MywgODMsIDczLCA3NywgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgCisgICAgNzUsIDczLCA4MiwgNzksIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIAorICAgIDc5LCA4MiwgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgCisgICAgNzksIDEyOCwgNzUsIDczLCA4MiwgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgCisgICAgNzUsIDczLCAyMDgsIDc1LCA3MywgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCAKKyAgICA2NSwgODIsIDg0LCA2OSwgNzgsIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDc2LCA3NiwgNjksIAorICAgIDgyLCAxMjgsIDc1LCA3MywgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIAorICAgIDY5LCA4NiwgNjUsIDIwNiwgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgCisgICAgNjksIDEyOCwgNzUsIDczLCA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDczLCA2NiwgCisgICAgMTI4LCA3NSwgNzMsIDY1LCA4NiwgMTI4LCA3NSwgNzMsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgCisgICAgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIAorICAgIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA4NywgNjUsIDY4LCAyMDEsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgCisgICAgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCAKKyAgICA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA3NCwgNzUsIDIwMSwgNzUsIAorICAgIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIAorICAgIDczLCA3OCwgODksIDY1LCAxMjgsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgCisgICAgNzIsIDIwMSwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAKKyAgICAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCAKKyAgICA2NSwgODYsIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgCiAgICAgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCA2NSwgNzgsIDY4LCAKICAgICAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIDY1LCA3NSwgNjUsIAogICAgIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAxMjgsIDc1LCA3MiwgCi0gICAgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgODAsIDEyOCwgCi0gICAgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3NSwgNjksIDg4LCAKKyAgICA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCAKKyAgICA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIAorICAgIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NiwgCiAgICAgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAKICAgICA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIAogICAgIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgCkBAIC0yMjg1LDE1NjAgKzI1NTMsMTYyNiBAQAogICAgIDY5LCA3NywgODAsIDc2LCA3MywgMTI4LCA3NSwgNjksIDc3LCA4MCwgNzYsIDIwMSwgNzUsIDY5LCA3NywgODAsIDcyLCA4MiwgCiAgICAgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc3LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc2LCA4NiwgNzMsIAogICAgIDIwNiwgNzUsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDc1LCA2OSwgNzIsIDY5LCAyMDAsIDc1LCA2OSwgNzIsIDEyOCwgNzUsIAotICAgIDY5LCA3MCwgODUsIDc2LCA2NSwgMTI4LCA3NSwgNjksIDY5LCA4MywgODUsIDEyOCwgNzUsIDY5LCA2OSwgODAsIDczLCA3OCwgCi0gICAgMTk5LCA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgNzUsIDY2LCAxMjgsIDc1LCA2NSwgCi0gICAgOTAsIDY1LCA3NSwgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg5LCA2NSwgMjAwLCAKLSAgICA3NSwgNjUsIDg4LCAxMjgsIDc1LCA2NSwgODcsIDczLCAxMjgsIDc1LCA2NSwgODYsIDg5LCA3NSwgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NSwgMTI4LCA3NSwgNjUsIDg0LCA3OSwgCi0gICAgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgMTkzLCAKLSAgICA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA4NiwgMTkzLCA3NSwgNjUsIAotICAgIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDgzLCAKLSAgICA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDIwNiwgNzUsIDY1LCA4MywgODIsIAotICAgIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MywgCi0gICAgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCAKLSAgICA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCA2NSwgODIsIAotICAgIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgMTI4LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDg5LCAKLSAgICA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCi0gICAgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgODAsIDgwLCAKLSAgICAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCA3NiwgMTI4LCAKLSAgICA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIAotICAgIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgCi0gICAgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCAKLSAgICA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCAKLSAgICA3NSwgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgNzUsIDY1LCA3MCwgNjUsIAotICAgIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgNzUsIDY1LCA2OCwgMTgxLCAKLSAgICA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAxNzksIDc1LCA2NSwgNjgsIAotICAgIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgNjUsIAotICAgIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDUwLCAxMjgsIAotICAgIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NSwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCA4NSwgODUsIDEyOCwgCi0gICAgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCA4OSwgMTI4LCA3NCwgCi0gICAgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIDcxLCA2OSwgMTI4LCAKLSAgICA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgODksIDc5LCA4NSwgCi0gICAgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIDc4LCA3MSwgCi0gICAgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAKLSAgICAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgCi0gICAgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAKLSAgICAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgCi0gICAgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgCi0gICAgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCAKLSAgICA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNzQsIDcyLCA2NSwgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIAotICAgIDg1LCAxMjgsIDc0LCA2OSwgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgCi0gICAgNzQsIDY5LCA4MiwgNjUsIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgCi0gICAgNjksIDcxLCA3OSwgNzEsIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIAotICAgIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAKLSAgICAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCAKLSAgICA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIAotICAgIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAxMjgsIDc0LCA2NSwgCi0gICAgNzIsIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIAotICAgIDY5LCAxOTYsIDIwMiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgCi0gICAgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAxOTMsIDczLCA4OSwgNjksIDc1LCAKLSAgICAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIDEyOCwgNzMsIDg1LCAxMjgsIDczLCAKLSAgICA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgNzMsIAotICAgIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgCi0gICAgNzksIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCAKLSAgICA2NSwgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgCi0gICAgNDUsIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCAKLSAgICA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIAotICAgIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgCi0gICAgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCA2OCwgODUsIAotICAgIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgCi0gICAgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCAKLSAgICA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgCi0gICAgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDczLCAKLSAgICA3OCwgODQsIDY5LCA4MiwgODAsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgCi0gICAgNzksIDY3LCA3NSwgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzMsIDc4LCAKLSAgICA4NCwgNjksIDgyLCA3NiwgNjUsIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCA3MywgNzgsIAotICAgIDg0LCA2OSwgODIsIDY5LCA4MywgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgCi0gICAgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCi0gICAgNzEsIDgyLCA2NSwgMjA0LCA3MywgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgODUsIDc3LCAKLSAgICA2OSwgNzgsIDg0LCA2NSwgMjA0LCA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDY5LCA4MiwgODQsIAotICAgIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAxMjgsIDczLCA3OCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIDIxMiwgNzMsIDc4LCA3OCwgNzksIDY3LCA2OSwgNzgsIDY3LCAKLSAgICA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA3OCwgNjksIAotICAgIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDczLCA3OCwgNzMsIDEyOCwgNzMsIAotICAgIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIDcyLCA2OSwgODIsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDcxLCA4NywgCi0gICAgNjUsIDkwLCAxMjgsIDczLCA3OCwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNzAsIDc2LCAKLSAgICA4NSwgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIDg5LCAxMjgsIDczLCA3OCwgNzAsIAotICAgIDczLCA3OCwgNzMsIDg0LCAyMTcsIDczLCA3OCwgNjgsIDg1LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc4LCA2OCwgCi0gICAgNzMsIDgyLCA2OSwgNjcsIDIxMiwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3MywgNzgsIDY4LCAKLSAgICA3MywgNjcsIDY1LCA4NCwgNzksIDIxMCwgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNzMsIDc4LCA2OCwgNzMsIDY1LCAyMDYsIAotICAgIDczLCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3MywgNzgsIDY4LCA2OSwgODAsIDY5LCA3OCwgNjgsIDY5LCA3OCwgMjEyLCA3MywgCi0gICAgNzgsIDY3LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMjExLCAKLSAgICA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgNzMsIDc4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgCi0gICAgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3NiwgODUsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNzMsIDc4LCA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNzMsIAotICAgIDc4LCA0NSwgNjUsIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc3LCA4MCwgCi0gICAgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIAotICAgIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDc4LCAxMjgsIDczLCA3NywgCi0gICAgNzMsIDgzLCA2OSwgNzksIDIxMSwgNzMsIDc3LCA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIDc4LCAxMjgsIDczLCAKLSAgICA3NywgNzMsIDIwNiwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNzAsIAotICAgIDg0LCA3MiwgNzksIDgyLCA2NSwgMTI4LCA3MywgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgCi0gICAgNjgsIDczLCA2NSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgNzMsIDc2LCA4NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzMsIDc2LCA4NSwgODQsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzMsIDc2LCA3MywgCi0gICAgNzcsIDc3LCA4NSwgNTEsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIAotICAgIDIxMywgNzMsIDc2LCA1MCwgMTI4LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDE5MywgNzMsIAotICAgIDc0LCAxMjgsIDczLCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIDEyOCwgNzMsIDcxLCAyMDEsIAotICAgIDczLCA3MSwgNzEsIDg3LCA4MywgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgCi0gICAgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAotICAgIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDcxLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAxMjgsIDczLCA2OCwgNzMsIDc3LCAKLSAgICAxMjgsIDczLCA2OCwgNzMsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2NywgNzIsIDc5LCA4NSwgCi0gICAgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCAKLSAgICA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgCi0gICAgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKLSAgICA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgCi0gICAgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgCi0gICAgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAKLSAgICAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIAotICAgIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIAotICAgIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgCi0gICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgCi0gICAgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgCi0gICAgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCAKLSAgICA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCAKLSAgICA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgMjA2LCA3MiwgODgsIDg3LCA3MSwgMTI4LCA3MiwgODgsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCi0gICAgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDc5LCAKLSAgICA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAxMjgsIDcyLCAKLSAgICA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIDEyOCwgNzIsIAotICAgIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIDg4LCA2OSwgCi0gICAgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgMTI4LCA3MiwgCi0gICAgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgODUsIDEyOCwgCi0gICAgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NiwgMTI4LCA3MiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzIsIDg1LCAKLSAgICA4MiwgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIAotICAgIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgNzgsIDEyOCwgCi0gICAgNzIsIDg1LCA3NywgNjUsIDIwNiwgNzIsIDg1LCA3NiwgNTAsIDEyOCwgNzIsIDg1LCA3MywgNzMsIDg0LCA3OSwgMTI4LCAKLSAgICA3MiwgODUsIDY2LCA1MCwgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIDg1LCA2NSwgODIsIAotICAgIDY1LCA2OCwgNjgsIDc5LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgCi0gICAgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgCi0gICAgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCAKLSAgICA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIAotICAgIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCi0gICAgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIAotICAgIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCAKLSAgICA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAKLSAgICAxOTMsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIAorICAgIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAKKyAgICAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCAKKyAgICA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIAorICAgIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgCisgICAgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgCisgICAgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCAKKyAgICA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIAorICAgIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgCisgICAgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIAorICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgCisgICAgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCAKKyAgICA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgCisgICAgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIAorICAgIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAorICAgIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgCisgICAgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCAKKyAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCAKKyAgICA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIAorICAgIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgCisgICAgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCAKKyAgICA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODYsIDEyOCwgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCAKKyAgICA2NSwgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCA2NiwgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCAKKyAgICA3NSwgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCAKKyAgICA3NSwgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIAorICAgIDE3OSwgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIAorICAgIDEyOCwgNzUsIDY1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAorICAgIDc1LCA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNjUsIDY2LCA2NSwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgCisgICAgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgCisgICAgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCAKKyAgICA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCAKKyAgICA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgCisgICAgODUsIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCAKKyAgICA4OSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIAorICAgIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgCisgICAgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCAKKyAgICA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCAKKyAgICA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIAorICAgIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIAorICAgIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgCisgICAgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgCisgICAgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIAorICAgIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIAorICAgIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgCisgICAgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCAKKyAgICA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCAKKyAgICA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgCisgICAgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgCisgICAgNzIsIDEyOCwgNzQsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKKyAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCAKKyAgICA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgCisgICAgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgCisgICAgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCAKKyAgICA3OCwgMTI4LCA3NCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIAorICAgIDY1LCA4NywgMTI4LCA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NSwgMTI4LCA3NCwgCisgICAgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCAKKyAgICA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgCisgICAgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAKKyAgICAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIAorICAgIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgCisgICAgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgNzMsIDkwLCAKKyAgICA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAxOTMsIAorICAgIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIDEyOCwgCisgICAgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCAKKyAgICA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgMjExLCA3MywgODMsIAorICAgIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA4MywgCisgICAgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCAKKyAgICA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgCisgICAgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgNjYsIDEyOCwgNzMsIDc5LCAKKyAgICA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgCisgICAgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgCisgICAgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCAKKyAgICA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIAorICAgIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgCisgICAgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIAorICAgIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDc5LCA2NywgNzUsIAorICAgIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA3OCwgODQsIAorICAgIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIAorICAgIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIDg1LCA3NywgNjksIDc4LCA4NCwgCisgICAgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgNjgsIDE5NywgNzMsIDc4LCAKKyAgICA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIDEyOCwgNzMsIDc4LCA4MywgNjcsIAorICAgIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgMjEyLCA3MywgNzgsIDc4LCA3OSwgCisgICAgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCAKKyAgICA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIDc4LCA3MSwgODUsIDEyOCwgNzMsIAorICAgIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgNzIsIDY5LCA4MiwgNjksIDc4LCAKKyAgICAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCA5MCwgMTI4LCA3MywgNzgsIAorICAgIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIDY5LCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgCisgICAgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCA4MiwgNjksIDY3LCAKKyAgICAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIAorICAgIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgCisgICAgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCAKKyAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIAorICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgCisgICAgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIAorICAgIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAKKyAgICAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgCisgICAgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCAKKyAgICA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIAorICAgIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAKKyAgICAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIAorICAgIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAKKyAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIAorICAgIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgCisgICAgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAKKyAgICAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgCisgICAgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIAorICAgIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIAorICAgIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCAKKyAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCAKKyAgICA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgCisgICAgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAKKyAgICAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIAorICAgIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCAKKyAgICA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIAorICAgIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgCisgICAgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgCisgICAgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCAKKyAgICA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIAorICAgIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgCisgICAgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIAorICAgIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIAorICAgIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAKKyAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCAKKyAgICA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCAKKyAgICA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgCisgICAgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCAKKyAgICA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIAorICAgIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg5LCA3MSwgNzMsIDY5LCA3MywgNjUsIDEyOCwgNzIsIDg4LCA4NywgNzEsIDEyOCwgCisgICAgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIAorICAgIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCAKKyAgICA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIAorICAgIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIAorICAgIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCA3MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIAorICAgIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAxMjgsIDcyLCA4NSwgCisgICAgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgODMsIAorICAgIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgCisgICAgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAKKyAgICAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIAorICAgIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIAorICAgIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgCisgICAgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCAKKyAgICA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIAorICAgIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAKKyAgICAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCAKKyAgICA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIAorICAgIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAorICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAorICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKKyAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAorICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIAorICAgIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIAorICAgIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgCiAgICAgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCAKICAgICA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIAotICAgIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCAKLSAgICA3OSwgNzMsIDEyOCwgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIAotICAgIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgCi0gICAgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgCi0gICAgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCAKLSAgICA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIAotICAgIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIAotICAgIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgCi0gICAgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgCi0gICAgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIAotICAgIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgCi0gICAgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgCi0gICAgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCAKLSAgICA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIAotICAgIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIAotICAgIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgCi0gICAgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIAotICAgIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIAotICAgIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgCi0gICAgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAKLSAgICAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCAKLSAgICA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCAKLSAgICA3MiwgNzUsIDEyOCwgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIAotICAgIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgCi0gICAgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzIsIAotICAgIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCA3MywgCi0gICAgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCA2OSwgCi0gICAgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgMjAwLCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgCisgICAgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNzksIDEyOCwgNzIsIDc5LCA3NiwgNzYsIDc5LCAyMTUsIDcyLCAKKyAgICA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIAorICAgIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNjcsIDc1LCA2OSwgMjE3LCA3MiwgCisgICAgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCAKKyAgICA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDY2LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIAorICAgIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIAorICAgIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgCisgICAgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCAKKyAgICA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCAKKyAgICA3MiwgNzgsIDY1LCA4NSwgMTI4LCA3MiwgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIAorICAgIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgCisgICAgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgCisgICAgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCAKKyAgICA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIAorICAgIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIAorICAgIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgCisgICAgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCAKKyAgICA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCAKKyAgICA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIAorICAgIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIAorICAgIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgCisgICAgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCAKKyAgICA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIAorICAgIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIAorICAgIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgCisgICAgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgCisgICAgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NSwgMTI4LCA3MiwgNzYsIDY1LCAKKyAgICA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NiwgMTI4LCA3MiwgNzUsIDEyOCwgCisgICAgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4OSwgNzksIDEyOCwgNzIsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCAKKyAgICA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3OCwgNzEsIAorICAgIDY5LCA2OCwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgNjksIDE5NiwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA3MywgCisgICAgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIAorICAgIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzYsIDc5LCAyMTUsIDcyLCA3MywgNzEsIDcyLCA0NSwgCisgICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCAKKyAgICA3MywgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCAKKyAgICA2OSwgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgMjAwLCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgCiAgICAgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAKICAgICAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIAogICAgIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIAotICAgIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgCi0gICAgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCAKLSAgICA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIAotICAgIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgCi0gICAgODIsIDY5LCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIDY1LCA2OSwgODUsIDIwNSwgNzIsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIAotICAgIDg0LCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAyMDUsIDcyLCA2OSwgNzYsIDczLCA2NywgCi0gICAgNzksIDgwLCA4NCwgNjksIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY5LCAKLSAgICA3MywgODMsIDY5LCA3MywgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgNzYsIAotICAgIDIxNywgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIDY5LCA2NSwgCi0gICAgODIsIDg0LCA4MywgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzIsIDY5LCAKLSAgICA2NSwgODIsIDg0LCAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCA0NSwgNjksIAotICAgIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgCi0gICAgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIAotICAgIDY1LCA4MywgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgCi0gICAgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCAKLSAgICA2NSwgODQsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIAotICAgIDcyLCA2NSwgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAKLSAgICAxMjgsIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA3MiwgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgCi0gICAgNzIsIDY1LCA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAKLSAgICAyMTEsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIAotICAgIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgCi0gICAgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCAKLSAgICA2NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIAotICAgIDcxLCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgCi0gICAgNzYsIDcwLCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCAKLSAgICA2OSwgODIsIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgCi0gICAgMTI4LCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCAKLSAgICA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIAotICAgIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgCi0gICAgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCAKLSAgICA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIAotICAgIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgCi0gICAgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgCi0gICAgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgCi0gICAgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgCi0gICAgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgCi0gICAgODYsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCAKLSAgICA4MiwgNjUsIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgCi0gICAgMTI4LCA3MSwgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzMsIDg0LCA2NSwgCi0gICAgODIsIDEyOCwgNzEsIDg1LCAxOTksIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgCi0gICAgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCAKLSAgICA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIAotICAgIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIAotICAgIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIAotICAgIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgCi0gICAgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCAKLSAgICA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIAotICAgIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgCi0gICAgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAotICAgIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgCi0gICAgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIAotICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKLSAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIAotICAgIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCAKLSAgICA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIAotICAgIDY1LCA2NywgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgCi0gICAgNzEsIDc5LCA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCAKLSAgICA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIAotICAgIDcxLCA3OSwgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgCi0gICAgNzgsIDcxLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAyMDQsIDcxLCAKLSAgICA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIAotICAgIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIDY1LCAyMDQsIDcxLCA3NiwgCi0gICAgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgNzYsIDY5LCA3MywgNjcsIAotICAgIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIAotICAgIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIAotICAgIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgCi0gICAgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgCi0gICAgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAKLSAgICAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIAotICAgIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIAotICAgIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgCi0gICAgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAKLSAgICAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCAKLSAgICA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIAotICAgIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIAotICAgIDEyOCwgNzEsIDcyLCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgCi0gICAgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgNzEsIDcyLCAKLSAgICA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCA3MiwgNjUsIAotICAgIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIDcxLCA3MSwgCi0gICAgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDcxLCAKLSAgICA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgCi0gICAgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgNzksIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAxMjgsIDcxLCAKLSAgICA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzEsIAotICAgIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIDcxLCA2OSwgCi0gICAgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgCi0gICAgNzEsIDY5LCA4NCwgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIAotICAgIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCAKLSAgICA3NywgNjUsIDIwNiwgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIAotICAgIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCAKLSAgICA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA3MSwgNjksIDc4LCA3MywgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCAKLSAgICA3MywgNzgsIDczLCAxMjgsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIAorICAgIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OSwgODQsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgCisgICAgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAorICAgIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgCisgICAgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCAKKyAgICA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIAorICAgIDY1LCA2OSwgODUsIDIwNSwgNzIsIDY5LCA3OCwgNzEsIDEyOCwgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgCisgICAgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDg0LCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAKKyAgICAyMDUsIDcyLCA2OSwgNzYsIDczLCA2NywgNzksIDgwLCA4NCwgNjksIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIAorICAgIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA3MywgODMsIDY5LCA3MywgMTI4LCA3MiwgNjksIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDcyLCA2OSwgNjksIDczLCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA4OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIAorICAgIDc4LCA3NiwgMjE3LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgMjA2LCA3MiwgCisgICAgNjksIDY1LCA4MiwgODQsIDgzLCAxMjgsIDcyLCA2OSwgNjUsIDgyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCAKKyAgICA3MiwgNjksIDY1LCA4MiwgODQsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDIxMiwgNzIsIDY5LCA2NSwgODIsIDQ1LCA3OCwgNzksIAorICAgIDQ1LCA2OSwgODYsIDczLCAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgCisgICAgNjUsIDY4LCA4MywgODQsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCAKKyAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA0NSwgNjYsIDY1LCA3OCwgNjgsIDY1LCA3MSwgCisgICAgNjksIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIAorICAgIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NywgNzQsIDEyOCwgNzIsIDY1LCA4NiwgCisgICAgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgMjEzLCAKKyAgICA3MiwgNjUsIDg0LCA4MiwgNjUsIDIwNiwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIDY5LCAxMjgsIAorICAgIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgODMsIDY5LCAKKyAgICAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAxMjgsIAorICAgIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIDcyLCA2NSwgCisgICAgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgNjUsIDgyLCAKKyAgICAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCA3OCwgNzEsIAorICAgIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCAKKyAgICA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIAorICAgIDc5LCA4NiwgNjUsIDIwNCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgCisgICAgNDUsIDcyLCA3OSwgNzksIDIwMywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIAorICAgIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgMjEyLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgwLCAKKyAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCAyMDgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgODcsIAorICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCAyMTUsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgCisgICAgNjcsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIAorICAgIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgCisgICAgNjUsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDE5MywgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKKyAgICA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIAorICAgIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgCisgICAgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCAKKyAgICA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIAorICAgIDY1LCA3MywgMjExLCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgCisgICAgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIAorICAgIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgCisgICAgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgCisgICAgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCAKKyAgICA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIAorICAgIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIAorICAgIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgCisgICAgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIAorICAgIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgCisgICAgMTI4LCA3MSwgODYsIDY1LCA3OCwgNzEsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCisgICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDcxLCA4NSwgODIsIDY1LCAKKyAgICA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIAorICAgIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgCisgICAgMjAxLCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MywgMTI4LCA3MSwgCisgICAgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgCisgICAgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIAorICAgIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgCisgICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCisgICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCisgICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAorICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgCisgICAgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNzEsIDgyLCAKKyAgICA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCisgICAgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3MSwgODIsIDY5LCAKKyAgICA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIDg2LCA2OSwgODksIDY1LCA4MiwgCisgICAgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKKyAgICA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCisgICAgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCA4MywgMTI4LCA3MSwgODIsIDY1LCAKKyAgICA4MywgMjExLCA3MSwgODIsIDY1LCA4MywgMjA4LCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc4LCA4NCwgNzIsIDE5MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKKyAgICAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDc2LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgCisgICAgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCAKKyAgICA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIAorICAgIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgCisgICAgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAKKyAgICAxMjgsIDcxLCA3OSwgNzYsIDcwLCA2OSwgODIsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCAKKyAgICA3MSwgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIAorICAgIDcxLCA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgCisgICAgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCAKKyAgICA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIAorICAgIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAKKyAgICAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAKKyAgICAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIAorICAgIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIDUxLCAxMjgsIAorICAgIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIDgwLCAxMjgsIAorICAgIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgNjksIDIwNCwgCisgICAgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCA3MywgNjksIDg0LCAKKyAgICAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCA3MywgNjYsIAorICAgIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCA4NywgNjUsIAorICAgIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIDcyLCA4NSwgCisgICAgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgMTI4LCA3MSwgCisgICAgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKKyAgICA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIAorICAgIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCAKKyAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIAorICAgIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgNjksIDEyOCwgCisgICAgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDgyLCAKKyAgICA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIAorICAgIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgCisgICAgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCAKKyAgICA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIAorICAgIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIAorICAgIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgCisgICAgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAKKyAgICAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIAorICAgIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCA4NCwgCisgICAgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCAKKyAgICA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIAorICAgIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgCisgICAgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCAKKyAgICA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIAorICAgIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgCisgICAgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCAKKyAgICA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIAogICAgIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgCi0gICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgCi0gICAgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCAKLSAgICA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIAotICAgIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIAotICAgIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgCi0gICAgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCAKLSAgICA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgCi0gICAgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgCi0gICAgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCAKLSAgICA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCAKLSAgICA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIAotICAgIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIAotICAgIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIAotICAgIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgCi0gICAgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAKLSAgICAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCAKLSAgICA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAKLSAgICA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIAotICAgIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIAotICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgCi0gICAgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAKLSAgICAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgCi0gICAgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAKLSAgICAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCAKLSAgICA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIAotICAgIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgCi0gICAgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCAKLSAgICA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgNzksIAotICAgIDgyLCAxOTMsIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgCi0gICAgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCAKLSAgICA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIAotICAgIDcwLCA4MiwgNzksIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgCi0gICAgODUsIDEyOCwgNzAsIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCAKLSAgICA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIAotICAgIDY5LCA3OCwgNjcsIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgCi0gICAgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCAKLSAgICA4MiwgNjUsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIAotICAgIDg4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgCi0gICAgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCAKLSAgICA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIAotICAgIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCAKLSAgICA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIAotICAgIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA3MCwgNzksIDgyLCA3NSwgNjksIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgMTI4LCA3MCwgNzksIDgyLCAKLSAgICA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCA3OSwgNzksIDc2LCAxMjgsIAotICAgIDcwLCA3OSwgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDcwLCA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgMTI4LCA3MCwgNzksIAotICAgIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgCi0gICAgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgCi0gICAgNzEsIDg5LCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIAotICAgIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgCi0gICAgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCAKLSAgICA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIAotICAgIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgCi0gICAgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgCi0gICAgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKLSAgICA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIAotICAgIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIAotICAgIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgCi0gICAgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAKLSAgICAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCAKLSAgICA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAotICAgIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAKLSAgICAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCAKLSAgICA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIAotICAgIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIAotICAgIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgCi0gICAgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCAKLSAgICA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIAotICAgIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCi0gICAgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAKLSAgICA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIAotICAgIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgCi0gICAgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIAotICAgIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCA4NSwgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgCi0gICAgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIDg2LCA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAKLSAgICAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIAotICAgIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIDIwMCwgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgCi0gICAgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCAKLSAgICA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIAotICAgIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIAotICAgIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgCi0gICAgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIAotICAgIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OSwgCi0gICAgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCA2OSwgMTI4LCA3MCwgCi0gICAgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCAKLSAgICA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIAotICAgIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MSwgCi0gICAgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCAKLSAgICA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NiwgNzYsIAotICAgIDczLCA3OCwgMTk5LCA3MCwgNjUsIDc2LCA3NiwgNjksIDIwNiwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgCi0gICAgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCAKLSAgICA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIAotICAgIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUzLCAKLSAgICAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNjUsIAotICAgIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIDY1LCA2OSwgCi0gICAgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgNTEsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NiwgMTI4LCAKLSAgICA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIDEyOCwgNzAsIAotICAgIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgCi0gICAgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIAotICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIAotICAgIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIDcwLCA0OCwgCi0gICAgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgNDgsIDUxLCAKLSAgICA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCA1MCwgMTI4LCAKLSAgICA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIAotICAgIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCA0OCwgNDksIAotICAgIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIDUyLCAxMjgsIAotICAgIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgCi0gICAgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgNDgsIDQ4LCAKLSAgICA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIAotICAgIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIAotICAgIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA3NiwgCi0gICAgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgCi0gICAgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCAKLSAgICA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA4NCwgNjksIAotICAgIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgCi0gICAgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCAKLSAgICA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgCi0gICAgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCAKLSAgICA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIAotICAgIDg3LCA2OSwgMTI4LCA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCAKLSAgICA3MCwgODIsIDczLCA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgCi0gICAgMjE3LCA2OSwgODUsIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgCi0gICAgNDUsIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCAKLSAgICA0NSwgNjksIDEyOCwgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIAotICAgIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgCi0gICAgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAKLSAgICAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIAotICAgIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgCi0gICAgMTc4LCA2OSwgODMsIDcyLCA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAKLSAgICAxMjgsIDY5LCA4MywgNjUsIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIAotICAgIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgCi0gICAgODIsIDcxLCAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIAotICAgIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAKKyAgICA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCAKKyAgICA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIAorICAgIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgCisgICAgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIAorICAgIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgCisgICAgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCAKKyAgICA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIAorICAgIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgCisgICAgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIAorICAgIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgCisgICAgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgCisgICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCAKKyAgICA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAorICAgIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIAorICAgIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgCisgICAgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgCisgICAgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgCisgICAgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCAKKyAgICA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIAorICAgIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgCisgICAgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIAorICAgIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIAorICAgIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgCisgICAgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAKKyAgICAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgCisgICAgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgCisgICAgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCAKKyAgICA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIAorICAgIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIAorICAgIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIAorICAgIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgCisgICAgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIAorICAgIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgCisgICAgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgCisgICAgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKKyAgICA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAorICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgCisgICAgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgCisgICAgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCAKKyAgICA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIAorICAgIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgCisgICAgNzgsIDc1LCAyMTEsIDcwLCA4MiwgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCAKKyAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgCisgICAgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgCisgICAgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCAKKyAgICA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgCisgICAgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCAKKyAgICA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3MCwgNzksIAorICAgIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgCisgICAgODIsIDg3LCA2NSwgODIsIDE5NiwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCAKKyAgICA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCisgICAgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAKKyAgICAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIAorICAgIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgCisgICAgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNzYsIAorICAgIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCAyMTIsIDcwLCA3OSwgNzgsIAorICAgIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgCisgICAgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCAKKyAgICA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAKKyAgICAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIAorICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgCisgICAgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCAKKyAgICA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIAorICAgIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgCisgICAgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDc5LCAKKyAgICA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNzMsIAorICAgIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgCisgICAgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCAKKyAgICA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIAorICAgIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4MywgNzIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDgzLCAKKyAgICAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCA3MCwgNzYsIAorICAgIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA0OSwgCisgICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIAorICAgIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCAKKyAgICA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgOTAsIDgwLCA2NSwgODQsIDgyLCA3MywgNjcsIDIwMywgNzAsIDczLCA4NCwgNjUsIAorICAgIDEyOCwgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgCisgICAgMTk5LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAorICAgIDIwMywgNzAsIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgCisgICAgMjAwLCA3MCwgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCAKKyAgICA4MiwgNzUsIDgzLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIAorICAgIDcwLCA3MywgODIsIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgCisgICAgNzEsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKKyAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIAorICAgIDY5LCA4MiwgNDUsIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc4LCA3MSwgCisgICAgNjksIDIxMCwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc4LCA2NSwgNzYsIAorICAgIDEyOCwgNzAsIDczLCA3NiwgMjA1LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCisgICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCisgICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAorICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCisgICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIAorICAgIDY5LCA3NiwgMTk2LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIAorICAgIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgCisgICAgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIAorICAgIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgCisgICAgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCAKKyAgICA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIAorICAgIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgCisgICAgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgCisgICAgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgCisgICAgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCAKKyAgICA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIAorICAgIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIDEyOCwgCisgICAgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIDY1LCAKKyAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIAorICAgIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA3MCwgCisgICAgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAKKyAgICAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCA2NSwgNzgsIDcxLCAKKyAgICAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgNzcsIAorICAgIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIDIwNiwgNzAsIDY1LCA3NCwgCisgICAgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCAKKyAgICA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIDEyOCwgNzAsIDY1LCA2NywgODQsIAorICAgIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgCisgICAgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCAKKyAgICA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIAorICAgIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgCisgICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgCisgICAgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgCisgICAgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIAorICAgIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIAorICAgIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgCisgICAgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCAKKyAgICA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIAorICAgIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCAKKyAgICA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgCisgICAgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAKKyAgICAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgCisgICAgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCAKKyAgICA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIAorICAgIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCAKKyAgICA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCisgICAgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIAorICAgIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgNjksIDc3LCA2OSwgNzYsIDIxNywgCisgICAgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIAorICAgIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgCisgICAgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKKyAgICA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIAorICAgIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgCisgICAgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCAKKyAgICA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIAorICAgIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgCisgICAgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIAorICAgIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgCisgICAgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCAKKyAgICA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgCisgICAgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCAKKyAgICA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCAKKyAgICA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIAorICAgIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgCisgICAgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKKyAgICA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIAorICAgIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgCisgICAgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCAKKyAgICA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIAorICAgIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIAorICAgIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgCisgICAgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIAorICAgIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIAorICAgIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAKKyAgICAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCiAgICAgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCAKICAgICA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgCiAgICAgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCAKICAgICA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIDY5LCA3OSwgODQsIDEyOCwgNjksIDc5LCAKLSAgICA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCAKLSAgICA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIAotICAgIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgCi0gICAgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIAotICAgIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgCi0gICAgNzgsIDg0LCA2OSwgODIsIDEyOCwgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIAotICAgIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIAotICAgIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgCi0gICAgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAKLSAgICAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIAotICAgIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgCi0gICAgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCAKLSAgICA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIAotICAgIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgCi0gICAgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCAKLSAgICA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgCi0gICAgNzMsIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCAKLSAgICA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgCi0gICAgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgCi0gICAgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCAKLSAgICA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIAotICAgIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCAKLSAgICA3MSwgNzIsIDg0LCA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgCi0gICAgMTI4LCA2OSwgNzMsIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCAKLSAgICA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIAorICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgCisgICAgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgCisgICAgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCAKKyAgICA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCAKKyAgICA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIAorICAgIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgCisgICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCAKKyAgICA3OCwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIAorICAgIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDczLCAxMjgsIDY5LCA3OCwgNzgsIDEyOCwgNjksIAorICAgIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgCisgICAgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCAKKyAgICA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIAorICAgIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgODMsIDEyOCwgCisgICAgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIAorICAgIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgCisgICAgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIAorICAgIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA3OSwgNzQsIDIwMSwgNjksIDc3LCA2NiwgCisgICAgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCAKKyAgICA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODksIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDg0LCAKKyAgICA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIAorICAgIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAyMDYsIDY5LCAKKyAgICA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDE5NSwgNjksIDc2LCA2NiwgCisgICAgNjUsIDgzLCA2NSwgMjA2LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCA2OSwgMTI4LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCAKKyAgICAxOTcsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIAorICAgIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzUsIDY1LCA3NywgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKKyAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAorICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCisgICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKKyAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAorICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCisgICAgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgCiAgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCAKICAgICA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCi0gICAgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIAotICAgIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIAotICAgIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgCi0gICAgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCAKLSAgICA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCAKLSAgICA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIAotICAgIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIAotICAgIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgCi0gICAgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIAotICAgIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCAKLSAgICA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCAKLSAgICA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg3LCA2OSwgMTI4LCA2OCwgOTAsIAotICAgIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIAorICAgIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCAKKyAgICA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIAorICAgIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgCisgICAgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCAKKyAgICA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIAorICAgIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgCisgICAgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgCisgICAgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCAKKyAgICA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIAorICAgIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgCisgICAgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIAorICAgIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCAKKyAgICA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCAKKyAgICA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIAogICAgIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgCi0gICAgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIAotICAgIDY5LCAyMDAsIDY4LCA4NywgNzksIDEyOCwgNjgsIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIAorICAgIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCAKKyAgICA3OCwgNjUsIDc3LCA3MywgMTk1LCA2OCwgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4OSwgNjUsIAorICAgIDc4LCAxMjgsIDY4LCA4NywgNzksIDEyOCwgNjgsIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIAogICAgIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgCiAgICAgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCAKICAgICA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIAogICAgIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgCiAgICAgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgCi0gICAgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDY2LCA1MCwgMTI4LCA2OCwgCi0gICAgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgODIsIDg1LCA3NywgCi0gICAgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCAKLSAgICA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIAotICAgIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgODYsIDE5NywgCi0gICAgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAxMjgsIDY4LCAKLSAgICA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgNjUsIDc3LCAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIAotICAgIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgCi0gICAgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAKLSAgICAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgCi0gICAgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCAKKyAgICAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY2LCAKKyAgICA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgCisgICAgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCAKKyAgICA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIAorICAgIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgCisgICAgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIAorICAgIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgCisgICAgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAKKyAgICA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIAorICAgIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCAKICAgICA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIAotICAgIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgCi0gICAgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCAKLSAgICA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgNjgsIDc5LCA4NCwgODQsIAotICAgIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgCi0gICAgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIAotICAgIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCisgICAgODYsIDE5NywgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCAKKyAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIAorICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAogICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgCiAgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIApAQCAtMzk1MiwzOTIgKzQyODYsNDM2IEBACiAgICAgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCAKICAgICA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIAogICAgIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAxMjgsIDY4LCA3OSwgNzMsIDg0LCAKLSAgICAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCAKLSAgICA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIAotICAgIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgCi0gICAgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIAotICAgIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgNzIsIDY1LCAxMjgsIAotICAgIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIAotICAgIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgCi0gICAgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCAKLSAgICA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAotICAgIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgCi0gICAgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAotICAgIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgCi0gICAgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIAotICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgCi0gICAgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCAKLSAgICA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIAotICAgIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAKLSAgICAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODAsIDg0LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCAKLSAgICA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIAotICAgIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIAotICAgIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgCi0gICAgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCAKLSAgICA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAotICAgIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCi0gICAgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCAKLSAgICA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCAKLSAgICA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIAotICAgIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCAKLSAgICA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIAotICAgIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgCi0gICAgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCA2NSwgODQsIDc5LCAKLSAgICA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAotICAgIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgCi0gICAgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAyMTAsIDY4LCAKLSAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCAxOTMsIAotICAgIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgNzYsIDEyOCwgCi0gICAgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIAotICAgIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCi0gICAgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgCi0gICAgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCAKLSAgICA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIAotICAgIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCAKLSAgICA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIAotICAgIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIDY4LCA2OSwgODksIAotICAgIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgCi0gICAgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIAotICAgIDEyOCwgNjgsIDY5LCA4MywgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgNDUsIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgCi0gICAgODQsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIAotICAgIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgCi0gICAgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCAKLSAgICA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIAotICAgIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgCi0gICAgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIAotICAgIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgCi0gICAgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCAKLSAgICA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgCi0gICAgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgCi0gICAgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDIxMSwgNjgsIDY5LCA2OSwgODIsIAotICAgIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgMTI4LCA2OCwgNjksIDY3LCA4MiwgCi0gICAgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDY4LCAKLSAgICA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCAKLSAgICA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIAotICAgIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgCi0gICAgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIAotICAgIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgCi0gICAgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCAKLSAgICA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIAotICAgIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgCi0gICAgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIDY4LCA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIAotICAgIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIAotICAgIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCAKLSAgICA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIAotICAgIDY3LCA4MywgMTI4LCA2OCwgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIAotICAgIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIAotICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCi0gICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKLSAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKLSAgICA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIAotICAgIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCAKLSAgICA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIAotICAgIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAKLSAgICAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCAKLSAgICA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAotICAgIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgCi0gICAgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCAKLSAgICA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIAotICAgIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgCi0gICAgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCAKLSAgICA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCAKLSAgICA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIAotICAgIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAKLSAgICAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIAotICAgIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgCi0gICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAotICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCi0gICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKLSAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAotICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAotICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCi0gICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKLSAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAotICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCi0gICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKLSAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCi0gICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCi0gICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKLSAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKLSAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCi0gICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKLSAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAotICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCi0gICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKLSAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODksIAotICAgIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIAotICAgIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgCi0gICAgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCAKLSAgICA2OCwgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIAotICAgIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgCi0gICAgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIAotICAgIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgCi0gICAgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCAKLSAgICA3NiwgMjA3LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCAKLSAgICA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAKLSAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIAotICAgIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgCi0gICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIAotICAgIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCAKLSAgICA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIAotICAgIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgCi0gICAgNjksIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAKLSAgICAyMTIsIDY3LCA4MiwgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIAotICAgIDY5LCA2NSwgNzcsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgCi0gICAgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCi0gICAgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCAKLSAgICA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIAotICAgIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgCi0gICAgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAKLSAgICAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIAotICAgIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAKLSAgICAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAotICAgIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgCi0gICAgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIAotICAgIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgCi0gICAgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCAKLSAgICA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgCi0gICAgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIAotICAgIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgCi0gICAgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAotICAgIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgCisgICAgMTI4LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIAorICAgIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgCisgICAgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKKyAgICA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIAorICAgIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIAorICAgIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIAorICAgIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIAorICAgIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgCisgICAgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgCisgICAgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCAKKyAgICA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIAorICAgIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgCisgICAgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgCisgICAgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCAKKyAgICA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIAorICAgIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgCisgICAgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCAKKyAgICA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIAorICAgIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCAKKyAgICA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIAorICAgIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAKKyAgICAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAorICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKKyAgICA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIAorICAgIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgCisgICAgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIAorICAgIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgCisgICAgNzcsIDc3LCA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAorICAgIDIwNSwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAKKyAgICAyMDYsIDY4LCA3MywgNzEsIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIAorICAgIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgCisgICAgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCAKKyAgICA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgCisgICAgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAKKyAgICAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIAorICAgIDgzLCA2OSwgMjA0LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIAorICAgIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCAKKyAgICA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIAorICAgIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgCisgICAgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAKKyAgICA3NiwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIAorICAgIDY5LCA4MywgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAKKyAgICA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIAorICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDczLCAxMjgsIAorICAgIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgCisgICAgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCAKKyAgICA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIAorICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgCisgICAgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKKyAgICA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIAorICAgIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAKKyAgICAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIAorICAgIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgCisgICAgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCAKKyAgICA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIAorICAgIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgCisgICAgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCAKKyAgICA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIAorICAgIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgCisgICAgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCAKKyAgICA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIAorICAgIDc4LCA4NCwgNjUsIDIwNCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgCisgICAgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCAKKyAgICA3OCwgNzEsIDEyOCwgNjgsIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIAorICAgIDc2LCA4NCwgNjUsIDEyOCwgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgCisgICAgODAsIDcyLCA3MywgMTk1LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCAKKyAgICA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIAorICAgIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgCisgICAgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgNzUsIDY1LCAxMjgsIDY4LCAKKyAgICA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIAorICAgIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCA3MywgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgMjExLCA2OCwgNjksIDY5LCAKKyAgICA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAxMjgsIDY4LCA2OSwgNjcsIAorICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgCisgICAgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA4NiwgMTk3LCAKKyAgICA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCA3MywgODMsIDczLCA4NiwgCisgICAgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIDY5LCA2NywgNzMsIDY4LCAKKyAgICA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY3LCA2NSwgODksIAorICAgIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA2NSwgCisgICAgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODQsIDEyOCwgCisgICAgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgODUsIDgwLCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIAorICAgIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCA2OCwgNjgsIDc5LCA4MCwgCisgICAgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIDczLCA4NCwgMTI4LCA2OCwgCisgICAgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCAKKyAgICA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDY4LCA3MiwgNzksIAorICAgIDEyOCwgNjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIAorICAgIDY4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgCisgICAgNjgsIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCAKKyAgICA2NSwgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIAorICAgIDY4LCA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgCisgICAgNzYsIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCAKKyAgICA2NSwgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCAKKyAgICA2NywgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgCisgICAgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIAorICAgIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgCisgICAgNjUsIDg0LCAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCAKKyAgICA3MiwgNjksIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIAorICAgIDY1LCAxMjgsIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAKKyAgICAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCAKKyAgICA2OCwgNjUsIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIAorICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgCisgICAgNjksIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAKKyAgICAxMjgsIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIAorICAgIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgCisgICAgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCAKKyAgICA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIAorICAgIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIAorICAgIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIAorICAgIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKKyAgICA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIAorICAgIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgCisgICAgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCAKKyAgICA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAorICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAorICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKKyAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCisgICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKKyAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAorICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAorICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKKyAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKKyAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAorICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCisgICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKKyAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAorICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCisgICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKKyAgICA4OSwgMTI4LCA2NywgODksIDY1LCA4NywgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCAKKyAgICA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIAorICAgIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIAorICAgIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgCisgICAgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDg1LCA4MywgODAsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgCisgICAgNjksIDY4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCAKKyAgICA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIAorICAgIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgCisgICAgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAyMDUsIDY3LCAKKyAgICA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIAorICAgIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgNjUsIDIwNSwgNjcsIDg1LCAxMjgsIAorICAgIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgCisgICAgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCAKKyAgICA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIAorICAgIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgCisgICAgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgCisgICAgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCAKKyAgICA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgCisgICAgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIAorICAgIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKKyAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCAKKyAgICA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIAorICAgIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIDgyLCA2OSwgCisgICAgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgNjksIDY4LCAKKyAgICA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIDEyOCwgNjcsIAorICAgIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgODIsIDY1LCA2NiwgCisgICAgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIAorICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIAorICAgIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgCisgICAgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCAKKyAgICA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIAorICAgIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgCisgICAgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAKKyAgICAyMTAsIDY3LCA3OSwgODIsIDc1LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIAorICAgIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgCisgICAgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgCisgICAgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCAKKyAgICA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIAorICAgIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCAKKyAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIAorICAgIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgCisgICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNjksIAorICAgIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgCisgICAgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAogICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCiAgICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKICAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAogICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKLSAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIAotICAgIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCi0gICAgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCAKLSAgICA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgCi0gICAgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKLSAgICA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIAotICAgIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgCi0gICAgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCAKLSAgICA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIAotICAgIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgCi0gICAgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgCi0gICAgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCAKLSAgICA2NSwgMTI4LCA2NywgNzksIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgCi0gICAgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCAKLSAgICA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIAotICAgIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgCi0gICAgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCAKLSAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIAotICAgIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgCi0gICAgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCAKLSAgICA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIAotICAgIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgCi0gICAgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCAKLSAgICA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIAotICAgIDc2LCA2NSwgODcsIDEyOCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCi0gICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgCi0gICAgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCAKLSAgICA4MCwgMTk3LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIAotICAgIDc3LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgCi0gICAgODIsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCAKLSAgICA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIAotICAgIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIAotICAgIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNjksIDg1LCA2NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCAKLSAgICA2OSwgODAsIDEyOCwgNjcsIDczLCA2OSwgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCAKLSAgICA2NywgNzIsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIAotICAgIDcyLCA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIDEyOCwgCi0gICAgNjcsIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgNjcsIAotICAgIDcyLCA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgODIsIAotICAgIDczLCA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCA3MywgCi0gICAgODMsIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCAKLSAgICA3OSwgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIAotICAgIDY3LCA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgCi0gICAgMTI4LCA2NywgNzIsIDIwNywgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgCi0gICAgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKLSAgICA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgCi0gICAgODUsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIDgyLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDcyLCA3MywgODIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA3MywgCi0gICAgNzgsIDY5LCA4MywgMTk3LCA2NywgNzIsIDczLCA3OCwgMTI4LCA2NywgNzIsIDczLCA3NywgNjksIDEyOCwgNjcsIDcyLCAKLSAgICA3MywgNzYsIDc2LCAyMTMsIDY3LCA3MiwgNzMsIDc2LCA2OCwgODIsIDY5LCAyMDYsIDY3LCA3MiwgNzMsIDc2LCA2OCwgCi0gICAgMTI4LCA2NywgNzIsIDczLCA3NiwgMTI4LCA2NywgNzIsIDczLCA3NSwgMjAxLCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCAKLSAgICA3MiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCA0NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDIwMCwgNjcsIDcyLCA3MywgNjcsIDc1LCAKLSAgICA2OSwgNzgsIDEyOCwgNjcsIDcyLCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNzMsIDEyOCwgNjcsIDcyLCAyMDEsIDY3LCAKLSAgICA3MiwgNzIsIDY1LCAxMjgsIDY3LCA3MiwgNjksIDg4LCAxMjgsIDY3LCA3MiwgNjksIDg2LCA4MiwgNzksIDIwNiwgNjcsIAotICAgIDcyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCA3OCwgODUsIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCAKLSAgICAyMTEsIDY3LCA3MiwgNjksIDgyLCA4MiwgMjE3LCA2NywgNzIsIDY5LCA4MiwgODIsIDczLCA2OSwgODMsIDEyOCwgNjcsIAorICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgCisgICAgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgCisgICAgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCAKKyAgICA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCAKKyAgICA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIAorICAgIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgCisgICAgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCAKKyAgICA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIDg1LCA3NywgNzgsIDEyOCwgCisgICAgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2NywgNzksIDc2LCAKKyAgICA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIAorICAgIDcxLCAxMjgsIDY3LCA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgCisgICAgNjUsIDczLCAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc3LCAKKyAgICAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCAKKyAgICA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIAorICAgIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgCisgICAgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCAKKyAgICA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIAorICAgIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgCisgICAgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCAKKyAgICA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIAorICAgIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgCisgICAgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCAKKyAgICA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIAorICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODMsIDgzLCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIDIxMCwgNjcsIAorICAgIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgMjA2LCA2NywgNzYsIDY1LCA3NywgODMsIDcyLCA2OSwgNzYsIDIwNCwgCisgICAgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgODYsIDczLCAKKyAgICA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY3LCA3MywgODQsIAorICAgIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAyMDEsIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIAorICAgIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCA4MiwgCisgICAgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCAKKyAgICA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCAxOTksIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgODIsIAorICAgIDY3LCA3NiwgNjksIDIxMSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgNjgsIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgCisgICAgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIAorICAgIDIwNiwgNjcsIDczLCAyMDUsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgCisgICAgMTI4LCA2NywgNzMsIDY5LCA4NSwgMTk1LCA2NywgNzMsIDY5LCA4NCwgMTI4LCA2NywgNzMsIDY5LCA4MCwgMTI4LCA2NywgCisgICAgNzMsIDY5LCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIDY3LCA3MiwgODksIDgyLCAKKyAgICA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgNzIsIDg3LCA4NiwgMTI4LCAKKyAgICA2NywgNzIsIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgCisgICAgMTI4LCA2NywgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCAKKyAgICA2NywgNzIsIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIAorICAgIDcyLCA2OSwgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgCisgICAgNzgsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCAKKyAgICA4MiwgNzMsIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIAorICAgIDczLCA4MywgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OSwgMTI4LCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgCisgICAgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDc5LCA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCAKKyAgICA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIAorICAgIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAxMjgsIDY3LCA3MiwgMjA3LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgCisgICAgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCAKKyAgICA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgCisgICAgODUsIDY3LCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIAorICAgIDEyOCwgNjcsIDcyLCA3MywgODIsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDczLCA4MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgCisgICAgNzMsIDgwLCA3NywgODUsIDc4LCA3NSwgMTI4LCA2NywgNzIsIDczLCA3OCwgNzksIDc5LCAyMDMsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA2NywgNzIsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNzMsIDc4LCAxMjgsIDY3LCA3MiwgNzMsIAorICAgIDc3LCA2OSwgMTI4LCA2NywgNzIsIDczLCA3NiwgNzYsIDIxMywgNjcsIDcyLCA3MywgNzYsIDY4LCA4MiwgNjksIDIwNiwgCisgICAgNjcsIDcyLCA3MywgNzYsIDY4LCAxMjgsIDY3LCA3MiwgNzMsIDc2LCAxMjgsIDY3LCA3MiwgNzMsIDc1LCAyMDEsIDY3LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNjcsIDcyLCA3MywgCisgICAgNjksIDg1LCA2NywgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgMjAwLCAKKyAgICA2NywgNzIsIDczLCA2NywgNzUsIDY5LCA3OCwgMTI4LCA2NywgNzIsIDczLCA2NywgNzUsIDEyOCwgNjcsIDcyLCA3MywgCisgICAgMTI4LCA2NywgNzIsIDIwMSwgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDcyLCA2OSwgODgsIDEyOCwgNjcsIDcyLCA2OSwgCisgICAgODYsIDgyLCA3OSwgMjA2LCA2NywgNzIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDc4LCA4NSwgODQsIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCAyMTEsIDY3LCA3MiwgNjksIDgyLCA4OSwgCisgICAgMTI4LCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKICAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCAyMDYsIAogICAgIDY3LCA3MiwgNjksIDczLCA3OCwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA3MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCAKLSAgICA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCAKLSAgICA2NywgNzIsIDY1LCA4OCwgMTI4LCA2NywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDg0LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgCi0gICAgNjcsIDcyLCA2NSwgODIsIDIxMiwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCAKLSAgICA3OSwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIAotICAgIDY3LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCAKLSAgICA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIAotICAgIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgCi0gICAgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCAKLSAgICA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIAotICAgIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgCi0gICAgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIAotICAgIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCAKLSAgICA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIAotICAgIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgCi0gICAgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCAxMjgsIDY3LCAKLSAgICA2OSwgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDY5LCAKLSAgICA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIAotICAgIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgCi0gICAgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAKLSAgICAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKLSAgICA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIAotICAgIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgCi0gICAgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgMTI4LCAKLSAgICA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIAotICAgIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCAKLSAgICAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCAKLSAgICA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAotICAgIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgCi0gICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCAKLSAgICA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIAotICAgIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgCi0gICAgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAKLSAgICAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCAKLSAgICA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIAotICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKLSAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgCi0gICAgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCAKLSAgICA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIAotICAgIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgCi0gICAgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCAKLSAgICA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAKLSAgICAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCAKLSAgICA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIAotICAgIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgCi0gICAgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDY3LCAKLSAgICA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCA2NywgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgMTI4LCA2NywgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNDgsIDQ5LCAKLSAgICA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCA0NSwgNTEsIAotICAgIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIDIwMSwgNjYsIAotICAgIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCAKLSAgICA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIAotICAgIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgCi0gICAgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgCi0gICAgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCAKLSAgICA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCAKLSAgICA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIAotICAgIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgCi0gICAgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKLSAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAotICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCi0gICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIAotICAgIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCi0gICAgNzYsIDY5LCAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCAKLSAgICA2NSwgMTczLCA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIAotICAgIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgCi0gICAgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgCi0gICAgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCAKLSAgICA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIAotICAgIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgCi0gICAgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCAKLSAgICA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgCi0gICAgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIAotICAgIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIAotICAgIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgCi0gICAgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCAKLSAgICA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIAotICAgIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCA3OSwgODQsIDIwMCwgCi0gICAgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCAKLSAgICA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIAotICAgIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgCi0gICAgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAKLSAgICA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIAotICAgIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIAotICAgIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIDc5LCA2NSwgODIsIDEyOCwgCi0gICAgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCAKLSAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCA3OSwgNjgsIAotICAgIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNjksIDc4LCA2OCwgCi0gICAgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKLSAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIAotICAgIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAKLSAgICAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIAotICAgIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgCi0gICAgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCAKLSAgICA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIAotICAgIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgCi0gICAgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCAKLSAgICA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIAotICAgIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCisgICAgNzIsIDY5LCA3MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNjksIDY5LCAKKyAgICA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NywgNzIsIDY5LCA2OSwgNzUsIDIxMSwgNjcsIAorICAgIDcyLCA2OSwgNjksIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgNjksIDIxMCwgCisgICAgNjcsIDcyLCA2OSwgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCA2NywgNzIsIDY1LCAKKyAgICA4OCwgMTI4LCA2NywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDg3LCA2NSwgMTI4LCA2NywgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDcyLCA2NSwgCisgICAgODIsIDIxMiwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgMjEyLCAKKyAgICA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCA4NCwgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIDY1LCAyMDUsIDY3LCA3MiwgNjUsIDc1LCA3NywgMTkzLCA2NywgNzIsIDY1LCAKKyAgICA3MywgODIsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIDc4LCA4MywgMTI4LCA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgMTk2LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNzEsIDc0LCAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIAorICAgIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgCisgICAgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCA2NywgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCAKKyAgICA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgCisgICAgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgCisgICAgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIAorICAgIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgCisgICAgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgCisgICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCAKKyAgICA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA2OCwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIAorICAgIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgCisgICAgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCA3NiwgODQsIDczLCAKKyAgICAxOTUsIDY3LCA2OSwgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgMTk5LCA2NywgNjksIDY5LCA4NiwgMTI4LCA2NywgNjksIDY5LCA2NiwgMTI4LCAKKyAgICA2NywgNjksIDY5LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIAorICAgIDE5MywgNjcsIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIAorICAgIDY3LCA2OSwgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgCisgICAgNzksIDEyOCwgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgCisgICAgNjcsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCAKKyAgICA2NywgNzIsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgCisgICAgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAorICAgIDY1LCAxMjgsIDY3LCA2NywgNzIsIDEyOCwgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIAorICAgIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAorICAgIDY3LCA2NSwgODUsIDY3LCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NywgNjUsIDg1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgCisgICAgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgCisgICAgNjUsIDgzLCA3NSwgNjksIDIxMiwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAKKyAgICA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIAorICAgIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgCisgICAgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCAKKyAgICA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIAorICAgIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgCisgICAgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIAorICAgIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgCisgICAgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCAKKyAgICA2NSwgODAsIDczLCA4NCwgODUsIDc2LCA4NSwgNzcsIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIAorICAgIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgCisgICAgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCAKKyAgICA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIAorICAgIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgCisgICAgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIAorICAgIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgODAsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCAKKyAgICA3NywgNjksIDgyLCAxOTMsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIAorICAgIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgCisgICAgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCAyMTAsIDY3LCA2NSwgNzYsIDY3LCAKKyAgICA4NSwgNzYsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgCisgICAgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCAKKyAgICA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIAorICAgIDY2LCA3MywgNzgsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAKKyAgICAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCAKKyAgICA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIAorICAgIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgCisgICAgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIAorICAgIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCAKKyAgICA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIAorICAgIDIwMSwgNjYsIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgCisgICAgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCAKKyAgICA2NiwgODcsIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIAorICAgIDczLCA4MywgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDIwNiwgCisgICAgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCAKKyAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgODMsIDczLCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4NSwgMjExLCA2NiwgODUsIAorICAgIDgyLCAyMTMsIDY2LCA4NSwgODIsIDgyLCA3MywgODQsIDc5LCAxMjgsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgCisgICAgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgCisgICAgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCAKKyAgICA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIAorICAgIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgMjA2LCA2NiwgCisgICAgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIAorICAgIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIDcxLCAKKyAgICAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjgsIDEyOCwgNjYsIDg1LCA2NywgNzUsIAorICAgIDc2LCA2OSwgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCA4MywgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCAKKyAgICAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCAKKyAgICA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIAorICAgIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgCisgICAgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCAKKyAgICA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIAorICAgIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgCisgICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCAKKyAgICA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAorICAgIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNzIsIDY5LCA4MywgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCAKKyAgICA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIAorICAgIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA4MCwgCisgICAgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMjExLCA2NiwgNzksIDg5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgCisgICAgNjYsIDc5LCA4NywgODQsIDczLCAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAKKyAgICAxMjgsIDY2LCA3OSwgODcsIDIwNCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCAKKyAgICA4MSwgODUsIDY5LCA4NCwgMTI4LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCAyMTIsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIAorICAgIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgCisgICAgODQsIDc5LCA3NywgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCAKKyAgICA2NiwgNzksIDg0LCA4NCwgNzksIDIwNSwgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIAorICAgIDE5NywgNjYsIDc5LCA4NCwgMjAwLCA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgCisgICAgNDUsIDUxLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCAKKyAgICA2NiwgNzksIDgwLCA3OSwgNzcsIDc5LCA3MCwgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIAorICAgIDEyOCwgNjYsIDc5LCA3OSwgNzcsIDY5LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgCisgICAgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCAKKyAgICA3OSwgNzgsIDY5LCAxMjgsIDY2LCA3OSwgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIAorICAgIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgCisgICAgMTI4LCA2NiwgNzksIDY4LCAyMTcsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgCisgICAgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3NiwgNzksIDg3LCAKKyAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCAyMTUsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIAorICAgIDY2LCA3NiwgNzksIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgCisgICAgNjYsIDc2LCA3MywgNzgsIDIwMywgNjYsIDc2LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIAorICAgIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3NiwgCisgICAgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCAKKyAgICA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgCisgICAgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCAKKyAgICA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4NCwgMTk3LCA2NiwgNzMsIAorICAgIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgCisgICAgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIAorICAgIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgCisgICAgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCAKKyAgICA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIAorICAgIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgCisgICAgMTI4LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAKICAgICAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCAKICAgICA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIAogICAgIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgCkBAIC00MzUxLDE3OCArNDcyOSwxODYgQEAKICAgICA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIAogICAgIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgCiAgICAgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgCi0gICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA2OCwgNjksIAotICAgIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIAotICAgIDIxMiwgNjYsIDY5LCA3NiwgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIAotICAgIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIDc2LCAxMjgsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgCi0gICAgNjksIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCAKLSAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIAotICAgIDY5LCA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgCisgICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIAorICAgIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIAorICAgIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgCisgICAgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCAKKyAgICA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIAorICAgIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgCisgICAgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAogICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCiAgICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKICAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAogICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgCi0gICAgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCAKLSAgICA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgCi0gICAgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgCi0gICAgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIAotICAgIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgCi0gICAgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIAotICAgIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgCi0gICAgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCAKLSAgICA2NSwgMTI4LCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAotICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgCi0gICAgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCAKLSAgICA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCAKLSAgICA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAotICAgIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgMTk0LCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIAotICAgIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgCi0gICAgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIAotICAgIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgCi0gICAgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgCi0gICAgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCAKLSAgICA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIAotICAgIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgCi0gICAgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgCi0gICAgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCAKLSAgICA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIAotICAgIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAxOTYsIDY2LCAKLSAgICA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA2NSwgNjcsIAotICAgIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgNjksIDgyLCA4NSwgCi0gICAgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCA1NywgMTI4LCA2NiwgCi0gICAgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIDUwLCAxMjgsIDY2LCAKLSAgICA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIDY2LCA1MCwgNTIsIAotICAgIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgNTMsIDEyOCwgNjYsIAotICAgIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgMTc2LCA2NiwgNTAsIAotICAgIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgNTEsIDUwLCAxMjgsIAotICAgIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgNTAsIDUwLCA1NiwgCi0gICAgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAxODEsIDY2LCA1MCwgCi0gICAgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCA0OSwgNTcsIDEyOCwgCi0gICAgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIDEyOCwgNjYsIDUwLCAKLSAgICA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIDUwLCA0OSwgNTAsIAotICAgIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgNjYsIDUwLCA0OCwgCi0gICAgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCA0OCwgNTAsIDEyOCwgCi0gICAgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCA2NiwgNDksIDU3LCAKLSAgICA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIDU2LCA1MiwgMTI4LCAKLSAgICA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgMTI4LCA2NiwgNDksIAotICAgIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgNDksIDU1LCA1NSwgCi0gICAgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgCi0gICAgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgCi0gICAgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIDU0LCAxNzgsIDY2LCAKLSAgICA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIDQ5LCA1MywgNTYsIAotICAgIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgMTI4LCA2NiwgNDksIAotICAgIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgNDksIDUzLCAxNzcsIAotICAgIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgCi0gICAgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgCi0gICAgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgCi0gICAgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgNDksIDUwLCAxNzgsIAotICAgIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgNDksIDQ4LCA1NywgCi0gICAgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCA1NSwgMjA1LCA2NiwgCi0gICAgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCA2NiwgNDksIDQ4LCAKLSAgICA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIDE4MCwgNjYsIDQ5LCAKLSAgICA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCA2NiwgNDgsIDU2LCAKLSAgICA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIDE4MSwgNjYsIDQ4LCAKLSAgICA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIDU2LCAxNzYsIDY2LCAKLSAgICA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIDU1LCAxODIsIDY2LCAKLSAgICA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIDE3OCwgNjYsIDQ4LCAKLSAgICA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCA2NiwgNDgsIDU0LCAKLSAgICAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCA2NiwgNDgsIDU0LCAKLSAgICA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCA2NiwgNDgsIDUzLCAKLSAgICAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NiwgNDgsIDUzLCAKLSAgICAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCA0OCwgNTMsIDE3NywgCi0gICAgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCA0OCwgNTIsIDU1LCAKLSAgICAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCA0OCwgNTIsIDE3OSwgCi0gICAgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgCi0gICAgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCA1MiwgMTI4LCA2NiwgCi0gICAgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAxNzYsIDY2LCA0OCwgCi0gICAgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgCi0gICAgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgCi0gICAgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAxMjgsIDY2LCA0OCwgCi0gICAgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgNjYsIDQ4LCA0OSwgCi0gICAgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgCi0gICAgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAxODIsIDY2LCA0OCwgCi0gICAgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCA2NiwgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIDE3NywgNjUsIDkwLCAKLSAgICA4NSwgMTI4LCA2NSwgODksIDY5LCAyMTAsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCAKLSAgICA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIAotICAgIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgCi0gICAgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCAKLSAgICA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIAotICAgIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgCi0gICAgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIAotICAgIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgCi0gICAgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCAKLSAgICA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgCi0gICAgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIAotICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAKLSAgICAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIAotICAgIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgCi0gICAgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIAotICAgIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIAotICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgCi0gICAgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCAKLSAgICA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCAKLSAgICA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIAotICAgIDgzLCAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCisgICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCAKKyAgICA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCAKKyAgICA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIAorICAgIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIAorICAgIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCAKKyAgICA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIAorICAgIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgCisgICAgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgCisgICAgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCAKKyAgICA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIAorICAgIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgCisgICAgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCAKKyAgICA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIAorICAgIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKKyAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIAorICAgIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgCisgICAgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKKyAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAorICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCisgICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKKyAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCisgICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCisgICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKKyAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAorICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgCisgICAgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIAorICAgIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgCisgICAgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCAKKyAgICA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIAorICAgIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgCisgICAgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCAKKyAgICA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIAorICAgIDc4LCA4NCwgNzksIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgCisgICAgNjYsIDY1LCA2OCwgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCAKKyAgICA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIAorICAgIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgCisgICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDcyLCA2NSwgNzgsIAorICAgIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDEyOCwgCisgICAgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgNjUsIDgyLCAKKyAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIAorICAgIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgCisgICAgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAKKyAgICAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCAKKyAgICA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCAKKyAgICA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIAorICAgIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIAorICAgIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgCisgICAgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgCisgICAgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCAKKyAgICA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIAorICAgIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIAorICAgIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgCisgICAgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAKKyAgICAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCAKKyAgICA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCAKKyAgICA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIAorICAgIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgCisgICAgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgCisgICAgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgCisgICAgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCAKKyAgICA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCAKKyAgICA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCAKKyAgICA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCAKKyAgICA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCAKKyAgICA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCAKKyAgICA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIAorICAgIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIAorICAgIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgCisgICAgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIAorICAgIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgCisgICAgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgCisgICAgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgCisgICAgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgCisgICAgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIAorICAgIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIAorICAgIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIAorICAgIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIAorICAgIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIAorICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIAorICAgIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIAorICAgIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIAorICAgIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCAKKyAgICA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCAKKyAgICA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIAorICAgIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCAKKyAgICA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCAKKyAgICA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIAorICAgIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIAorICAgIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgCisgICAgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCA2OSwgCisgICAgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NywgNjUsIDIxNywgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgCisgICAgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIAorICAgIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKKyAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAorICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKKyAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCisgICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAorICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKKyAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAKKyAgICAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCAKKyAgICA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIAorICAgIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgCisgICAgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCAKKyAgICA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCAKKyAgICA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAorICAgIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCisgICAgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCAKKyAgICA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIAorICAgIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgCisgICAgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIAorICAgIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgCisgICAgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKICAgICAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIAogICAgIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCiAgICAgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIAogICAgIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgCiAgICAgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCAKLSAgICA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIAotICAgIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCA4MiwgODIsIDczLCA4NiwgNjksIDEyOCwgNjUsIDgyLCA4MiwgNjUsIDg5LCAKLSAgICAxMjgsIDY1LCA4MiwgODAsIDY5LCA3MSwgNzEsIDczLCA2NSwgODQsIDIwNywgNjUsIDgyLCA3OSwgODUsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjUsIDgyLCA3OSwgODUsIDgyLCAxOTMsIDY1LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4MCwgODIsIDc5LCA3MCwgCi0gICAgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODIsIDc5LCA4NSwgNzgsIDE5NiwgNjUsIDgyLCA3NywgODksIDEyOCwgNjUsIDgyLCAKLSAgICA3NywgNzksIDg1LCA4MiwgMTI4LCA2NSwgODIsIDIwNSwgNjUsIDgyLCA3NiwgNjUsIDg1LCAxOTksIDY1LCA4MiwgNzUsIAotICAgIDg0LCA3MywgNzUsIDIwNywgNjUsIDgyLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA4MiwgNzUsIDY1LCA2NSwgNzgsIDg1LCAKKyAgICA2NSwgNjgsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgNzksIAorICAgIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCA4MiwgCisgICAgODIsIDczLCA4NiwgNzMsIDc4LCA3MSwgMTI4LCA2NSwgODIsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY1LCA4MiwgODIsIDY1LCAKKyAgICA4OSwgMTI4LCA2NSwgODIsIDgwLCA2OSwgNzEsIDcxLCA3MywgNjUsIDg0LCAyMDcsIDY1LCA4MiwgNzksIDg1LCA4MywgNzMsIAorICAgIDc4LCAxOTksIDY1LCA4MiwgNzksIDg1LCA4MiwgMTkzLCA2NSwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODAsIDgyLCA3OSwgCisgICAgNzAsIDczLCA3NiwgNjksIDEyOCwgNjUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDY1LCA4MiwgNzcsIDg5LCAxMjgsIDY1LCAKKyAgICA4MiwgNzcsIDc5LCA4NSwgODIsIDEyOCwgNjUsIDgyLCAyMDUsIDY1LCA4MiwgNzYsIDY1LCA4NSwgMTk5LCA2NSwgODIsIAorICAgIDc1LCA4NCwgNzMsIDc1LCAyMDcsIDY1LCA4MiwgNzUsIDY1LCA2NiwgMTI4LCA2NSwgODIsIDc1LCA2NSwgNjUsIDc4LCA4NSwgCiAgICAgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgNjUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIAogICAgIDE5MywgNjUsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY1LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA2NSwgCiAgICAgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDcxLCA3MywgMTI4LCAKICAgICA2NSwgODIsIDY5LCA4MCwgNjUsIDEyOCwgNjUsIDgyLCA2OSwgNjUsIDEyOCwgNjUsIDgyLCA2OCwgNzIsIDY1LCA4NiwgNzMsIAotICAgIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA2NywgCi0gICAgNzIsIDY1LCA3MywgNzksIDIwNiwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY3LCAyMDAsIDY1LCAKLSAgICA4MiwgNjcsIDEyOCwgNjUsIDgyLCAxOTUsIDY1LCA4MiwgNjUsIDc3LCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDY1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA4NSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgCi0gICAgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgNzksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIAotICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIDEyOCwgNjUsIDgyLCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA2NSwgCi0gICAgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCAKLSAgICA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIAotICAgIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgCi0gICAgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCAKLSAgICA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIAotICAgIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAKLSAgICAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgCi0gICAgODQsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCAKLSAgICA4NCwgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIAotICAgIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKLSAgICA3OSwgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIAotICAgIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIAotICAgIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAKLSAgICAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgCi0gICAgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAorICAgIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2NSwgODIsIDY4LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgCisgICAgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCAKKyAgICA4MiwgNjcsIDcyLCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCAKKyAgICA2NSwgODIsIDY1LCA3NywgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIAorICAgIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgCisgICAgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAKKyAgICAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIAorICAgIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgCisgICAgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCAKKyAgICA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIAorICAgIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgCisgICAgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIAorICAgIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgCisgICAgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIAorICAgIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgCisgICAgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIAorICAgIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgCisgICAgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIAorICAgIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIAorICAgIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA2NSwgNzksIDg1LCAxMjgsIDY1LCA3OSwgODIsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAKKyAgICA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIAorICAgIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgCiAgICAgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCAKICAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgCiAgICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCAKQEAgLTQ1MzAsMTUzMDggKzQ5MTYsMTgzNDggQEAKICAgICA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgCiAgICAgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIAogICAgIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKLSAgICA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCAxOTMsIAotICAgIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCA4MywgODUsIDIxOCwgCi0gICAgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIDIwNywgNjUsIDc4LCAKLSAgICA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3OCwgNzgsIAotICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIDEyOCwgNjUsIDc4LCA3MiwgCi0gICAgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDY5LCAKLSAgICAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgCi0gICAgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCAKLSAgICA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIAotICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgCi0gICAgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCAKLSAgICA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIAotICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIDE5MywgNjUsIDc3LCA2NSwgODIsIDEyOCwgNjUsIDc3LCA2NSwgCi0gICAgMjEwLCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc3LCA2NSwgNzYsIDcxLCAKLSAgICA2NSwgNzcsIDEyOCwgNjUsIDc2LCA4NiwgNjksIDc5LCA3NiwgNjUsIDIxMCwgNjUsIDc2LCA4NSwgNzcsIDEyOCwgNjUsIAotICAgIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgODYsIDE5NywgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIAotICAgIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgCi0gICAgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIAotICAgIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgNzcsIDEyOCwgNjUsIDc2LCA3NiwgNzksIDEyOCwgNjUsIAotICAgIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NiwgNzYsIDIwMSwgNjUsIDc2LCA3NiwgNjUsIDIwMCwgCi0gICAgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDEyOCwgNjUsIDc2LCAKLSAgICA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgODUsIDEyOCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIAotICAgIDY1LCA3NiwgNzMsIDY5LCAyMDYsIDY1LCA3NiwgNzEsIDczLCAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgCi0gICAgNjksIDg1LCAyMTIsIDY1LCA3NiwgNjksIDgyLCA4NCwgMTI4LCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCAKLSAgICA2OSwgNzcsIDY2LCA3MywgNjcsIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCA2OSwgCi0gICAgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCA2NSwgODAsIDcyLCAKLSAgICAxMjgsIDY1LCA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIDY5LCA4MywgNjksIAotICAgIDc2LCA4MywgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgNzMsIDc3LCA3MywgCi0gICAgMTk1LCA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCA2NSwgODIsIDE5MywgCi0gICAgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgMjAzLCA2NSwgNzMsIDg0LCAKLSAgICA3OSwgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIAotICAgIDc4LCA3OCwgMTI4LCA2NSwgNzMsIDc2LCA3NywgMTI4LCA2NSwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgCi0gICAgNzIsIDg2LCA4NSwgODMsIDEyOCwgNjUsIDcyLCA4MywgNjgsIDY1LCAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCAKLSAgICA3MiwgNjUsIDc4LCAxOTksIDY1LCA3MiwgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIAotICAgIDcxLCA4NSwgNzgsIDcxLCAxMjgsIDY1LCA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCAKLSAgICA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgODIsIAotICAgIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIDY4LCAKLSAgICAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgCi0gICAgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIDEyOCwgNjUsIDY5LCA4MywgMTI4LCAKLSAgICA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIAotICAgIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIAotICAgIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgNjksIDEyOCwgCi0gICAgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAKLSAgICAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIAotICAgIDEyOCwgNjUsIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgCi0gICAgNjksIDE5NiwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCAKLSAgICA2NSwgMjAzLCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIAotICAgIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCAKLSAgICA4NCwgMTk3LCA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgCi0gICAgMTk3LCA2NSwgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCAKLSAgICA2OSwgNjgsIDcxLCA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY1LCA2NywgNjcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgCi0gICAgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgCi0gICAgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCAKLSAgICA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIAotICAgIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgCi0gICAgNjUsIDY1LCA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgCi0gICAgNjUsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCAKLSAgICA2NSwgNjUsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIAotICAgIDY1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNDgsIAotICAgIDU0LCA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgCi0gICAgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIDU0LCA1MSwgMTI4LCA2NSwgCi0gICAgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNDgsIDUzLCAKLSAgICA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNDgsIDUzLCA1NCwgMTI4LCAKLSAgICA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNDgsIAotICAgIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNDgsIDUyLCA1NywgCi0gICAgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgCi0gICAgNDgsIDUyLCA1MywgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTEsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MCwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgCi0gICAgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCAKLSAgICA4NSwgMTI4LCA0NSwgNzUsIDcyLCA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIAotICAgIDkwLCA4NSwgMTk2LCA0NSwgNjcsIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCisgICAgODMsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCAKKyAgICA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIAorICAgIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgCisgICAgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgCisgICAgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCAKKyAgICA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIAorICAgIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA4MywgCisgICAgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NiwgNjksIDY4LCAxMjgsIDY1LCAKKyAgICA3OCwgNzEsIDc2LCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAorICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCisgICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAorICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCisgICAgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIDgwLCA3MiwgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzcsIDgwLCAKKyAgICA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgMTk2LCA2NSwgNzcsIAorICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDgzLCAxMjgsIDY1LCA3NywgNjksIDgyLCA3MywgCisgICAgNjcsIDY1LCAyMDYsIDY1LCA3NywgNjYsIDg1LCA3NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc3LCA2NiwgMTkzLCAKKyAgICA2NSwgNzcsIDY2LCAxMjgsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIDIxMCwgNjUsIDc3LCA2NSwgNzYsIAorICAgIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCAxMjgsIDY1LCA3NiwgCisgICAgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCAKKyAgICA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIAorICAgIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCAKKyAgICA3OCwgMTk5LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIAorICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCisgICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKKyAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAorICAgIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCisgICAgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCAKKyAgICA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIAorICAgIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgCisgICAgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MiwgODQsIDEyOCwgCisgICAgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAKKyAgICAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAorICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCisgICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAorICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCisgICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKKyAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAorICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCAKKyAgICAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCAKKyAgICA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgCisgICAgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDc5LCAyMDUsIDY1LCA3MiwgNjUsIDc4LCAxOTksIDY1LCA3MiwgCisgICAgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCA4NSwgNzgsIDcxLCAxMjgsIDY1LCAKKyAgICA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzEsIAorICAgIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgODMsIDIxMiwgNjUsIDcxLCA2NSwgCisgICAgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCAKKyAgICA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgCisgICAgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NSwgNzAsIDcwLCA3MywgMjE2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIAorICAgIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgCisgICAgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgCisgICAgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCAKKyAgICA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgCisgICAgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCAKKyAgICA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNjUsIAorICAgIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgCisgICAgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCAKKyAgICA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgCisgICAgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCAKKyAgICA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIAorICAgIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCAKKyAgICA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIAorICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgNzksIDc3LCA3NywgNzksIDY4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIAorICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAKKyAgICAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIAorICAgIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgCisgICAgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIAorICAgIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NiwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIAorICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgCisgICAgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY1LCAxMjgsIDY1LCA2NiwgNDksIDUwLCAKKyAgICA1MSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIAorICAgIDQ5LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDU2LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU2LCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUyLCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTQsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTMsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTIsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDgsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCisgICAgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MiwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKKyAgICA1MSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzcsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTAsIDUwLCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA2NSwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIAorICAgIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIAorICAgIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCisgICAgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDU1LCAxMjgsIDY1LCA1NiwgNDgsIAorICAgIDU0LCAxMjgsIDY1LCA1NiwgNDgsIDUzLCAxMjgsIDY1LCA1NiwgNDgsIDUyLCAxMjgsIDY1LCA1NiwgNDgsIDUxLCAxMjgsIAorICAgIDY1LCA1NiwgNDgsIDUwLCAxMjgsIDY1LCA1NiwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDQ4LCAxMjgsIDY1LCA1NSwgCisgICAgNTEsIDE3OCwgNjUsIDU1LCA1MCwgMTgyLCA2NSwgNTUsIDQ5LCAxODMsIDY1LCA1NSwgNDksIDE4MSwgNjUsIDU1LCA0OSwgCisgICAgMTgwLCA2NSwgNTUsIDQ5LCAxNzksIDY1LCA1NSwgNDksIDE3OCwgNjUsIDU1LCA0OSwgMTc3LCA2NSwgNTUsIDQ5LCAxNzYsIAorICAgIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgyLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MCwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAKKyAgICAxNzksIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc4LCA2NSwgNTUsIDQ4LCAxODUsIDY1LCA1NSwgNDgsIDE4NCwgNjUsIDU1LCAKKyAgICA0OCwgMTgzLCA2NSwgNTUsIDQ4LCAxODIsIDY1LCA1NSwgNDgsIDE4MSwgNjUsIDU1LCA0OCwgMTgwLCA2NSwgNTUsIDQ4LCAKKyAgICAxNzksIDY1LCA1NSwgNDgsIDE3OCwgNjUsIDU1LCA0OCwgMTc3LCA2NSwgNTQsIDU0LCA1MiwgMTI4LCA2NSwgNTQsIDU0LCAKKyAgICA1MSwgMTI4LCA2NSwgNTQsIDU0LCA1MCwgMTI4LCA2NSwgNTQsIDU0LCA0OSwgMTI4LCA2NSwgNTQsIDU0LCA0OCwgMTI4LCAKKyAgICA2NSwgNTQsIDUzLCA1NywgMTI4LCA2NSwgNTQsIDUzLCA1NiwgMTI4LCA2NSwgNTQsIDUzLCA1NSwgMTI4LCA2NSwgNTQsIAorICAgIDUzLCA1NCwgMTI4LCA2NSwgNTQsIDUzLCA1MywgMTI4LCA2NSwgNTQsIDUzLCA1MiwgMTI4LCA2NSwgNTQsIDUzLCA1MSwgCisgICAgMTI4LCA2NSwgNTQsIDUzLCA1MCwgMTI4LCA2NSwgNTQsIDUzLCA0OSwgMTI4LCA2NSwgNTQsIDUyLCA1NywgMTI4LCA2NSwgCisgICAgNTQsIDUyLCA1NiwgMTI4LCA2NSwgNTQsIDUyLCA1NCwgMTI4LCA2NSwgNTQsIDUyLCA1MywgMTI4LCA2NSwgNTQsIDUyLCAKKyAgICA1MiwgMTI4LCA2NSwgNTQsIDUyLCA1MSwgMTI4LCA2NSwgNTQsIDUyLCA1MCwgMTI4LCA2NSwgNTQsIDUyLCA0OCwgMTI4LCAKKyAgICA2NSwgNTQsIDUxLCA1NiwgMTI4LCA2NSwgNTQsIDUxLCA1NSwgMTI4LCA2NSwgNTQsIDUxLCA1MiwgMTI4LCA2NSwgNTQsIAorICAgIDUwLCA1NywgMTI4LCA2NSwgNTQsIDUwLCA1NiwgMTI4LCA2NSwgNTQsIDUwLCA1NSwgMTI4LCA2NSwgNTQsIDUwLCA1NCwgCisgICAgMTI4LCA2NSwgNTQsIDUwLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1MSwgMTI4LCA2NSwgNTQsIDUwLCA1MCwgMTI4LCA2NSwgCisgICAgNTQsIDUwLCA0OSwgMTI4LCA2NSwgNTQsIDUwLCA0OCwgMTI4LCA2NSwgNTQsIDQ5LCA1NywgMTI4LCA2NSwgNTQsIDQ5LCAKKyAgICA1NiwgMTI4LCA2NSwgNTQsIDQ5LCA1NSwgMTI4LCA2NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NSwgNTQsIDQ5LCA1MywgMTI4LCAKKyAgICA2NSwgNTQsIDQ5LCA1MiwgMTI4LCA2NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NSwgNTQsIAorICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTQsIDQ5LCA0OCwgMTI4LCA2NSwgNTQsIDQ4LCA1NywgMTI4LCA2NSwgNTQsIDQ4LCA1NiwgCisgICAgMTI4LCA2NSwgNTQsIDQ4LCA1NCwgMTI4LCA2NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NSwgCisgICAgNTQsIDQ4LCA1MCwgMTI4LCA2NSwgNTQsIDQ4LCA0OSwgMTI4LCA2NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NSwgNTMsIDU3LCAKKyAgICA1NiwgMTI4LCA2NSwgNTMsIDU3LCA1NCwgMTI4LCA2NSwgNTMsIDU3LCA1MywgMTI4LCA2NSwgNTMsIDU3LCA1MiwgMTI4LCAKKyAgICA2NSwgNTMsIDU3LCA1MCwgMTI4LCA2NSwgNTMsIDU3LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA1NywgMTI4LCA2NSwgNTMsIAorICAgIDU2LCA1NiwgMTI4LCA2NSwgNTMsIDU2LCA1NSwgMTI4LCA2NSwgNTMsIDU2LCA1NCwgMTI4LCA2NSwgNTMsIDU2LCA1MywgCisgICAgMTI4LCA2NSwgNTMsIDU2LCA1MiwgMTI4LCA2NSwgNTMsIDU2LCA1MSwgMTI4LCA2NSwgNTMsIDU2LCA1MCwgMTI4LCA2NSwgCisgICAgNTMsIDU2LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA0OCwgMTI4LCA2NSwgNTMsIDU1LCA1NywgMTI4LCA2NSwgNTMsIDU1LCAKKyAgICA1NiwgMTI4LCA2NSwgNTMsIDU1LCA1NSwgMTI4LCA2NSwgNTMsIDU1LCA1NCwgMTI4LCA2NSwgNTMsIDU1LCA1MywgMTI4LCAKKyAgICA2NSwgNTMsIDU1LCA1MiwgMTI4LCA2NSwgNTMsIDU1LCA1MSwgMTI4LCA2NSwgNTMsIDU1LCA1MCwgMTI4LCA2NSwgNTMsIAorICAgIDU1LCA0OSwgMTI4LCA2NSwgNTMsIDU1LCA0OCwgMTI4LCA2NSwgNTMsIDU0LCA1NywgMTI4LCA2NSwgNTMsIDU0LCA1NiwgCisgICAgMTI4LCA2NSwgNTMsIDU0LCA1NCwgMTI4LCA2NSwgNTMsIDU0LCA1MywgMTI4LCA2NSwgNTMsIDU0LCA1MiwgMTI4LCA2NSwgCisgICAgNTMsIDU0LCA1MSwgMTI4LCA2NSwgNTMsIDUzLCA1NywgMTI4LCA2NSwgNTMsIDUzLCA1NSwgMTI4LCA2NSwgNTMsIDUzLCAKKyAgICA1NCwgMTI4LCA2NSwgNTMsIDUzLCA1MywgMTI4LCA2NSwgNTMsIDUzLCA1MiwgMTI4LCA2NSwgNTMsIDUzLCA1MSwgMTI4LCAKKyAgICA2NSwgNTMsIDUzLCA1MCwgMTI4LCA2NSwgNTMsIDUzLCA0OSwgMTI4LCA2NSwgNTMsIDUzLCA0OCwgMTI4LCA2NSwgNTMsIAorICAgIDUyLCA1NywgMTI4LCA2NSwgNTMsIDUyLCA1NiwgMTI4LCA2NSwgNTMsIDUyLCA1NSwgMTI4LCA2NSwgNTMsIDUyLCA1MywgCisgICAgMTI4LCA2NSwgNTMsIDUyLCA1MCwgMTI4LCA2NSwgNTMsIDUyLCA0OSwgMTI4LCA2NSwgNTMsIDUyLCA0OCwgMTI4LCA2NSwgCisgICAgNTMsIDUxLCA1NywgMTI4LCA2NSwgNTMsIDUxLCA1NiwgMTI4LCA2NSwgNTMsIDUxLCA1NSwgMTI4LCA2NSwgNTMsIDUxLCAKKyAgICA1NCwgMTI4LCA2NSwgNTMsIDUxLCA1MywgMTI4LCA2NSwgNTMsIDUxLCA1MiwgMTI4LCA2NSwgNTMsIDUxLCA1MCwgMTI4LCAKKyAgICA2NSwgNTMsIDUxLCA0OSwgMTI4LCA2NSwgNTMsIDUxLCA0OCwgMTI4LCA2NSwgNTMsIDUwLCA1NywgMTI4LCA2NSwgNTMsIAorICAgIDUwLCA1NiwgMTI4LCA2NSwgNTMsIDUwLCA1NSwgMTI4LCA2NSwgNTMsIDUwLCA1NCwgMTI4LCA2NSwgNTMsIDUwLCA1MywgCisgICAgMTI4LCA2NSwgNTMsIDUwLCA1MiwgMTI4LCA2NSwgNTMsIDUwLCA1MSwgMTI4LCA2NSwgNTMsIDUwLCA1MCwgMTI4LCA2NSwgCisgICAgNTMsIDUwLCA0OSwgMTI4LCA2NSwgNTMsIDUwLCA0OCwgMTI4LCA2NSwgNTMsIDQ5LCA1NywgMTI4LCA2NSwgNTMsIDQ5LCAKKyAgICA1NiwgMTI4LCA2NSwgNTMsIDQ5LCA1NSwgMTI4LCA2NSwgNTMsIDQ5LCA1NCwgMTI4LCA2NSwgNTMsIDQ5LCA1MywgMTI4LCAKKyAgICA2NSwgNTMsIDQ5LCA1MiwgMTI4LCA2NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NSwgNTMsIDQ5LCA1MCwgMTI4LCA2NSwgNTMsIAorICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NSwgNTMsIDQ4LCA1NywgMTI4LCA2NSwgNTMsIDQ4LCA1NiwgCisgICAgMTI4LCA2NSwgNTMsIDQ4LCA1NSwgMTI4LCA2NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NSwgNTMsIDQ4LCA1MywgMTI4LCA2NSwgCisgICAgNTMsIDQ4LCA1MiwgMTI4LCA2NSwgNTMsIDQ4LCA1MSwgMTI4LCA2NSwgNTMsIDQ4LCA1MCwgMTI4LCA2NSwgNTMsIDQ4LCAKKyAgICA0OSwgMTI4LCA2NSwgNTIsIDU3LCA1NSwgMTI4LCA2NSwgNTIsIDU3LCA1NCwgMTI4LCA2NSwgNTIsIDU3LCA1MywgMTI4LCAKKyAgICA2NSwgNTIsIDU3LCA1MiwgMTI4LCA2NSwgNTIsIDU3LCA1MSwgMTI4LCA2NSwgNTIsIDU3LCA1MCwgMTI4LCA2NSwgNTIsIAorICAgIDU3LCA0OSwgMTI4LCA2NSwgNTIsIDU3LCA0OCwgMTI4LCA2NSwgNTIsIDU2LCA1NywgMTI4LCA2NSwgNTIsIDU2LCA1NiwgCisgICAgMTI4LCA2NSwgNTIsIDU2LCA1NSwgMTI4LCA2NSwgNTIsIDU2LCA1NCwgMTI4LCA2NSwgNTIsIDU2LCA1MywgMTI4LCA2NSwgCisgICAgNTIsIDU2LCA1MiwgMTI4LCA2NSwgNTIsIDU2LCA1MSwgMTI4LCA2NSwgNTIsIDU2LCA1MCwgMTI4LCA2NSwgNTIsIDU2LCAKKyAgICA0OSwgMTI4LCA2NSwgNTIsIDU2LCA0OCwgMTI4LCA2NSwgNTIsIDU1LCA1NywgMTI4LCA2NSwgNTIsIDU1LCA1NiwgMTI4LCAKKyAgICA2NSwgNTIsIDU1LCA1NSwgMTI4LCA2NSwgNTIsIDU1LCA1NCwgMTI4LCA2NSwgNTIsIDU1LCA1MywgMTI4LCA2NSwgNTIsIAorICAgIDU1LCA1MiwgMTI4LCA2NSwgNTIsIDU1LCA1MSwgMTI4LCA2NSwgNTIsIDU1LCA1MCwgMTI4LCA2NSwgNTIsIDU1LCA0OSwgCisgICAgMTI4LCA2NSwgNTIsIDU1LCA0OCwgMTI4LCA2NSwgNTIsIDU0LCA1NywgMTI4LCA2NSwgNTIsIDU0LCA1NiwgMTI4LCA2NSwgCisgICAgNTIsIDU0LCA1NSwgMTI4LCA2NSwgNTIsIDU0LCA1NCwgMTI4LCA2NSwgNTIsIDU0LCA1MywgMTI4LCA2NSwgNTIsIDU0LCAKKyAgICA1MiwgMTI4LCA2NSwgNTIsIDU0LCA1MSwgMTI4LCA2NSwgNTIsIDU0LCA1MCwgMTI4LCA2NSwgNTIsIDU0LCA0OSwgMTI4LCAKKyAgICA2NSwgNTIsIDU0LCA0OCwgMTI4LCA2NSwgNTIsIDUzLCA1NywgMTI4LCA2NSwgNTIsIDUzLCA1NiwgMTI4LCA2NSwgNTIsIAorICAgIDUzLCA1NSwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDEyOCwgNjUsIDUyLCA1MywgNTQsIDEyOCwgNjUsIDUyLCA1MywgCisgICAgNTMsIDEyOCwgNjUsIDUyLCA1MywgNTIsIDEyOCwgNjUsIDUyLCA1MywgNTEsIDEyOCwgNjUsIDUyLCA1MywgNTAsIDEyOCwgCisgICAgNjUsIDUyLCA1MywgNDksIDEyOCwgNjUsIDUyLCA1MywgNDgsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCAxMjgsIDY1LCAKKyAgICA1MiwgNTIsIDU3LCAxMjgsIDY1LCA1MiwgNTIsIDU2LCAxMjgsIDY1LCA1MiwgNTIsIDU1LCAxMjgsIDY1LCA1MiwgNTIsIAorICAgIDU0LCAxMjgsIDY1LCA1MiwgNTIsIDUzLCAxMjgsIDY1LCA1MiwgNTIsIDUyLCAxMjgsIDY1LCA1MiwgNTIsIDUxLCAxMjgsIAorICAgIDY1LCA1MiwgNTIsIDUwLCAxMjgsIDY1LCA1MiwgNTIsIDQ5LCAxMjgsIDY1LCA1MiwgNTIsIDQ4LCAxMjgsIDY1LCA1MiwgCisgICAgNTEsIDU3LCAxMjgsIDY1LCA1MiwgNTEsIDU2LCAxMjgsIDY1LCA1MiwgNTEsIDU1LCAxMjgsIDY1LCA1MiwgNTEsIDU0LCAKKyAgICAxMjgsIDY1LCA1MiwgNTEsIDUzLCAxMjgsIDY1LCA1MiwgNTEsIDUyLCAxMjgsIDY1LCA1MiwgNTEsIDUxLCAxMjgsIDY1LCAKKyAgICA1MiwgNTEsIDUwLCAxMjgsIDY1LCA1MiwgNTEsIDQ5LCAxMjgsIDY1LCA1MiwgNTEsIDQ4LCAxMjgsIDY1LCA1MiwgNTAsIAorICAgIDU3LCAxMjgsIDY1LCA1MiwgNTAsIDU2LCAxMjgsIDY1LCA1MiwgNTAsIDU1LCAxMjgsIDY1LCA1MiwgNTAsIDU0LCAxMjgsIAorICAgIDY1LCA1MiwgNTAsIDUzLCAxMjgsIDY1LCA1MiwgNTAsIDUyLCAxMjgsIDY1LCA1MiwgNTAsIDUxLCAxMjgsIDY1LCA1MiwgCisgICAgNTAsIDUwLCAxMjgsIDY1LCA1MiwgNTAsIDQ5LCAxMjgsIDY1LCA1MiwgNTAsIDQ4LCAxMjgsIDY1LCA1MiwgNDksIDU3LCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU0LCAxMjgsIDY1LCA1MiwgNDksIDUzLCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA1MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUxLCAxMjgsIDY1LCA1MiwgCisgICAgNDksIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNDgsIDE5MywgNjUsIDUyLCA0OSwgNDgsIAorICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDE3NiwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDU3LCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAorICAgIDQ4LCA1NiwgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDEyOCwgCisgICAgNjUsIDUyLCA0OCwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU0LCAxMjgsIDY1LCA1MiwgNDgsIDUzLCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCisgICAgNDgsIDUxLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNTIsIDQ4LCA0OSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OCwgNDgsIAorICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAxMjgsIDY1LCA1MSwgNTcsIDU3LCAxMjgsIDY1LCA1MSwgCisgICAgNTcsIDU2LCAxMjgsIDY1LCA1MSwgNTcsIDU1LCAxMjgsIDY1LCA1MSwgNTcsIDU0LCAxMjgsIDY1LCA1MSwgNTcsIDUzLCAKKyAgICAxMjgsIDY1LCA1MSwgNTcsIDUyLCAxMjgsIDY1LCA1MSwgNTcsIDE3OSwgNjUsIDUxLCA1NywgNTAsIDEyOCwgNjUsIDUxLCAKKyAgICA1NywgNDksIDEyOCwgNjUsIDUxLCA1NywgNDgsIDEyOCwgNjUsIDUxLCA1NiwgNTcsIDEyOCwgNjUsIDUxLCA1NiwgNTYsIAorICAgIDEyOCwgNjUsIDUxLCA1NiwgNTUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCAxMjgsIAorICAgIDY1LCA1MSwgNTYsIDUzLCAxMjgsIDY1LCA1MSwgNTYsIDUyLCAxMjgsIDY1LCA1MSwgNTYsIDUxLCA2NSwgMTI4LCA2NSwgCisgICAgNTEsIDU2LCAxNzksIDY1LCA1MSwgNTYsIDUwLCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDU2LCA0OCwgMTI4LCA2NSwgNTEsIDU1LCA1NywgMTI4LCA2NSwgNTEsIDU1LCA1NiwgMTI4LCAKKyAgICA2NSwgNTEsIDU1LCA1NSwgMTI4LCA2NSwgNTEsIDU1LCA1NCwgMTI4LCA2NSwgNTEsIDU1LCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDU1LCA1MiwgMTI4LCA2NSwgNTEsIDU1LCA1MSwgMTI4LCA2NSwgNTEsIDU1LCA1MCwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgCisgICAgNjUsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDEyOCwgNjUsIDUxLCA1NSwgNDgsIDEyOCwgNjUsIDUxLCA1NCwgNTcsIDEyOCwgCisgICAgNjUsIDUxLCA1NCwgNTYsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgNTQsIDU1LCAxMjgsIDY1LCAKKyAgICA1MSwgNTQsIDU0LCAxMjgsIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCA2NSwgMTI4LCA2NSwgNTEsIAorICAgIDU0LCA1MiwgMTI4LCA2NSwgNTEsIDU0LCA1MSwgMTI4LCA2NSwgNTEsIDU0LCA1MCwgMTI4LCA2NSwgNTEsIDU0LCA0OSwgCisgICAgMTI4LCA2NSwgNTEsIDU0LCA0OCwgMTI4LCA2NSwgNTEsIDUzLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDEyOCwgCisgICAgNjUsIDUxLCA1MywgNTYsIDEyOCwgNjUsIDUxLCA1MywgNTUsIDEyOCwgNjUsIDUxLCA1MywgNTQsIDEyOCwgNjUsIDUxLCAKKyAgICA1MywgNTMsIDEyOCwgNjUsIDUxLCA1MywgNTIsIDEyOCwgNjUsIDUxLCA1MywgNTEsIDEyOCwgNjUsIDUxLCA1MywgNTAsIAorICAgIDEyOCwgNjUsIDUxLCA1MywgNDksIDEyOCwgNjUsIDUxLCA1MywgNDgsIDEyOCwgNjUsIDUxLCA1MiwgNTcsIDEyOCwgNjUsIAorICAgIDUxLCA1MiwgNTYsIDEyOCwgNjUsIDUxLCA1MiwgNTUsIDEyOCwgNjUsIDUxLCA1MiwgNTQsIDEyOCwgNjUsIDUxLCA1MiwgCisgICAgNTMsIDEyOCwgNjUsIDUxLCA1MiwgNTIsIDEyOCwgNjUsIDUxLCA1MiwgNTEsIDEyOCwgNjUsIDUxLCA1MiwgNTAsIDEyOCwgCisgICAgNjUsIDUxLCA1MiwgNDksIDEyOCwgNjUsIDUxLCA1MiwgNDgsIDEyOCwgNjUsIDUxLCA1MSwgNTcsIDEyOCwgNjUsIDUxLCAKKyAgICA1MSwgNTYsIDEyOCwgNjUsIDUxLCA1MSwgNTUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDU0LCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDEyOCwgNjUsIDUxLCA1MSwgCisgICAgNTMsIDEyOCwgNjUsIDUxLCA1MSwgNTIsIDEyOCwgNjUsIDUxLCA1MSwgNTEsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY3LCAKKyAgICAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIAorICAgIDEyOCwgNjUsIDUxLCA1MSwgNDksIDEyOCwgNjUsIDUxLCA1MSwgNDgsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIDY1LCAxMjgsIAorICAgIDY1LCA1MSwgNTAsIDU3LCAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCA1MSwgCisgICAgNTAsIDU0LCAxMjgsIDY1LCA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIDUxLCAKKyAgICAxMjgsIDY1LCA1MSwgNTAsIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA1MSwgNDksIDU3LCAxMjgsIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDU0LCAxMjgsIDY1LCA1MSwgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NywgCisgICAgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIDUxLCAKKyAgICAxMjgsIDY1LCA1MSwgNDksIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCAKKyAgICA1MSwgNDgsIDU3LCA2NywgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIAorICAgIDY1LCA1MSwgNDgsIDU3LCAxMjgsIDY1LCA1MSwgNDgsIDU2LCAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgCisgICAgNDgsIDU0LCAxMjgsIDY1LCA1MSwgNDgsIDUzLCAxMjgsIDY1LCA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDUwLCAxMjgsIDY1LCA1MSwgNDgsIDQ5LCAxMjgsIDY1LCA1MSwgNDgsIDQ4LCAxMjgsIDY1LCAKKyAgICA1MCwgNTcsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU3LCA1NywgMTI4LCA2NSwgNTAsIDU3LCA1NiwgMTI4LCA2NSwgNTAsIAorICAgIDU3LCA1NSwgMTI4LCA2NSwgNTAsIDU3LCA1NCwgMTI4LCA2NSwgNTAsIDU3LCA1MywgMTI4LCA2NSwgNTAsIDU3LCA1MiwgCisgICAgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDEyOCwgNjUsIDUwLCA1NywgNTEsIDEyOCwgNjUsIDUwLCA1NywgNTAsIDEyOCwgCisgICAgNjUsIDUwLCA1NywgNDksIDEyOCwgNjUsIDUwLCA1NywgNDgsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDY1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTYsIDU3LCAxMjgsIDY1LCA1MCwgNTYsIDU2LCAxMjgsIDY1LCA1MCwgNTYsIDU1LCAxMjgsIDY1LCA1MCwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA1MCwgNTYsIDUzLCAxMjgsIDY1LCA1MCwgNTYsIDUyLCAxMjgsIDY1LCA1MCwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA1MCwgNTYsIDUwLCAxMjgsIDY1LCA1MCwgNTYsIDQ5LCAxMjgsIDY1LCA1MCwgNTYsIDQ4LCAxMjgsIDY1LCA1MCwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA1MCwgNTUsIDU2LCAxMjgsIDY1LCA1MCwgNTUsIDU1LCAxMjgsIDY1LCA1MCwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA1MCwgNTUsIDUzLCAxMjgsIDY1LCA1MCwgNTUsIDUyLCAxMjgsIDY1LCA1MCwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA1MCwgNTUsIDUwLCAxMjgsIDY1LCA1MCwgNTUsIDQ5LCAxMjgsIDY1LCA1MCwgNTUsIDQ4LCAxMjgsIDY1LCA1MCwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA1MCwgNTQsIDU2LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgCisgICAgMTI4LCA2NSwgNTAsIDU0LCA1NCwgMTI4LCA2NSwgNTAsIDU0LCA1MywgMTI4LCA2NSwgNTAsIDU0LCA1MiwgMTI4LCA2NSwgCisgICAgNTAsIDU0LCA1MSwgMTI4LCA2NSwgNTAsIDU0LCA1MCwgMTI4LCA2NSwgNTAsIDU0LCA0OSwgMTI4LCA2NSwgNTAsIDU0LCAKKyAgICA0OCwgMTI4LCA2NSwgNTAsIDUzLCA1NywgMTI4LCA2NSwgNTAsIDUzLCA1NiwgMTI4LCA2NSwgNTAsIDUzLCA1NSwgMTI4LCAKKyAgICA2NSwgNTAsIDUzLCA1NCwgMTI4LCA2NSwgNTAsIDUzLCA1MywgMTI4LCA2NSwgNTAsIDUzLCA1MiwgMTI4LCA2NSwgNTAsIAorICAgIDUzLCA1MSwgMTI4LCA2NSwgNTAsIDUzLCA1MCwgMTI4LCA2NSwgNTAsIDUzLCA0OSwgMTI4LCA2NSwgNTAsIDUzLCA0OCwgCisgICAgMTI4LCA2NSwgNTAsIDUyLCA1NywgMTI4LCA2NSwgNTAsIDUyLCA1NiwgMTI4LCA2NSwgNTAsIDUyLCA1NSwgMTI4LCA2NSwgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA2NSwgNTAsIDUyLCA1MywgMTI4LCA2NSwgNTAsIDUyLCA1MiwgMTI4LCA2NSwgNTAsIDUyLCAKKyAgICA1MSwgMTI4LCA2NSwgNTAsIDUyLCA1MCwgMTI4LCA2NSwgNTAsIDUyLCA0OSwgMTI4LCA2NSwgNTAsIDUyLCA0OCwgMTI4LCAKKyAgICA2NSwgNTAsIDUxLCA1NywgMTI4LCA2NSwgNTAsIDUxLCA1NiwgMTI4LCA2NSwgNTAsIDUxLCA1NSwgMTI4LCA2NSwgNTAsIAorICAgIDUxLCA1NCwgMTI4LCA2NSwgNTAsIDUxLCA1MywgMTI4LCA2NSwgNTAsIDUxLCA1MiwgMTI4LCA2NSwgNTAsIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNTAsIDUxLCA1MCwgMTI4LCA2NSwgNTAsIDUxLCA0OSwgMTI4LCA2NSwgNTAsIDUxLCA0OCwgMTI4LCA2NSwgCisgICAgNTAsIDUwLCA1NywgMTI4LCA2NSwgNTAsIDUwLCA1NiwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgNjUsIDEyOCwgNjUsIDUwLCAKKyAgICA1MCwgNTUsIDEyOCwgNjUsIDUwLCA1MCwgNTQsIDEyOCwgNjUsIDUwLCA1MCwgNTMsIDEyOCwgNjUsIDUwLCA1MCwgNTIsIAorICAgIDEyOCwgNjUsIDUwLCA1MCwgNTEsIDEyOCwgNjUsIDUwLCA1MCwgNTAsIDEyOCwgNjUsIDUwLCA1MCwgNDksIDEyOCwgNjUsIAorICAgIDUwLCA1MCwgNDgsIDEyOCwgNjUsIDUwLCA0OSwgNTcsIDEyOCwgNjUsIDUwLCA0OSwgNTYsIDEyOCwgNjUsIDUwLCA0OSwgCisgICAgNTUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDY1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCAxMjgsIDY1LCA1MCwgNDksIDUzLCAKKyAgICA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgMTI4LCA2NSwgNTAsIDQ5LCA1MiwgMTI4LCA2NSwgNTAsIDQ5LCA1MSwgMTI4LCAKKyAgICA2NSwgNTAsIDQ5LCA1MCwgMTI4LCA2NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NSwgNTAsIDQ5LCA0OCwgMTI4LCA2NSwgNTAsIAorICAgIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDEyOCwgNjUsIDUwLCA0OCwgNTYsIDEyOCwgNjUsIDUwLCA0OCwgCisgICAgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCAxMjgsIDY1LCA1MCwgNDgsIDU0LCAxMjgsIDY1LCA1MCwgNDgsIDUzLCAKKyAgICAxMjgsIDY1LCA1MCwgNDgsIDUyLCAxMjgsIDY1LCA1MCwgNDgsIDUxLCAxMjgsIDY1LCA1MCwgNDgsIDUwLCA2NiwgMTI4LCAKKyAgICA2NSwgNTAsIDQ4LCA1MCwgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDEyOCwgNjUsIDUwLCA0OCwgNDksIDEyOCwgNjUsIAorICAgIDUwLCA0OCwgNDgsIDEyOCwgNjUsIDQ5LCA1NywgNTcsIDEyOCwgNjUsIDQ5LCA1NywgNTYsIDEyOCwgNjUsIDQ5LCA1NywgCisgICAgNTUsIDEyOCwgNjUsIDQ5LCA1NywgNTQsIDEyOCwgNjUsIDQ5LCA1NywgNTMsIDEyOCwgNjUsIDQ5LCA1NywgNTIsIDEyOCwgCisgICAgNjUsIDQ5LCA1NywgNTEsIDEyOCwgNjUsIDQ5LCA1NywgNTAsIDEyOCwgNjUsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDQ5LCAKKyAgICA1NywgNDgsIDEyOCwgNjUsIDQ5LCA1NiwgNTcsIDEyOCwgNjUsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDQ5LCA1NiwgNTUsIAorICAgIDEyOCwgNjUsIDQ5LCA1NiwgNTQsIDEyOCwgNjUsIDQ5LCA1NiwgNTMsIDEyOCwgNjUsIDQ5LCA1NiwgNTIsIDEyOCwgNjUsIAorICAgIDQ5LCA1NiwgNTEsIDEyOCwgNjUsIDQ5LCA1NiwgNTAsIDEyOCwgNjUsIDQ5LCA1NiwgNDksIDEyOCwgNjUsIDQ5LCA1NiwgCisgICAgNDgsIDEyOCwgNjUsIDQ5LCA1NSwgNTcsIDEyOCwgNjUsIDQ5LCA1NSwgNTYsIDEyOCwgNjUsIDQ5LCA1NSwgNTUsIDEyOCwgCisgICAgNjUsIDQ5LCA1NSwgNTQsIDEyOCwgNjUsIDQ5LCA1NSwgNTMsIDEyOCwgNjUsIDQ5LCA1NSwgNTIsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NSwgNTEsIDEyOCwgNjUsIDQ5LCA1NSwgNTAsIDEyOCwgNjUsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDQ5LCA1NSwgNDgsIAorICAgIDEyOCwgNjUsIDQ5LCA1NCwgNTcsIDEyOCwgNjUsIDQ5LCA1NCwgNTYsIDEyOCwgNjUsIDQ5LCA1NCwgNTUsIDEyOCwgNjUsIAorICAgIDQ5LCA1NCwgNTQsIDEyOCwgNjUsIDQ5LCA1NCwgNTMsIDEyOCwgNjUsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDQ5LCA1NCwgCisgICAgNTEsIDEyOCwgNjUsIDQ5LCA1NCwgNTAsIDEyOCwgNjUsIDQ5LCA1NCwgNDksIDEyOCwgNjUsIDQ5LCA1NCwgNDgsIDEyOCwgCisgICAgNjUsIDQ5LCA1MywgNTcsIDEyOCwgNjUsIDQ5LCA1MywgNTYsIDEyOCwgNjUsIDQ5LCA1MywgNTUsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MywgNTQsIDEyOCwgNjUsIDQ5LCA1MywgNTMsIDEyOCwgNjUsIDQ5LCA1MywgNTIsIDEyOCwgNjUsIDQ5LCA1MywgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA1MywgNTAsIDEyOCwgNjUsIDQ5LCA1MywgNDksIDEyOCwgNjUsIDQ5LCA1MywgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA1MiwgNTcsIDEyOCwgNjUsIDQ5LCA1MiwgNTYsIDEyOCwgNjUsIDQ5LCA1MiwgNTUsIDEyOCwgNjUsIDQ5LCA1MiwgCisgICAgNTQsIDEyOCwgNjUsIDQ5LCA1MiwgNTMsIDEyOCwgNjUsIDQ5LCA1MiwgNTIsIDEyOCwgNjUsIDQ5LCA1MiwgNTEsIDEyOCwgCisgICAgNjUsIDQ5LCA1MiwgNTAsIDEyOCwgNjUsIDQ5LCA1MiwgNDksIDEyOCwgNjUsIDQ5LCA1MiwgNDgsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MSwgNTcsIDEyOCwgNjUsIDQ5LCA1MSwgNTYsIDEyOCwgNjUsIDQ5LCA1MSwgNTUsIDEyOCwgNjUsIDQ5LCA1MSwgNTQsIAorICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTEsIDUzLCAxMjgsIDY1LCA0OSwgNTEsIDUyLCAxMjgsIAorICAgIDY1LCA0OSwgNTEsIDUxLCAxMjgsIDY1LCA0OSwgNTEsIDUwLCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgCisgICAgNDksIDUxLCA0OSwgMTI4LCA2NSwgNDksIDUxLCA0OCwgMTI4LCA2NSwgNDksIDUwLCA1NywgMTI4LCA2NSwgNDksIDUwLCAKKyAgICA1NiwgMTI4LCA2NSwgNDksIDUwLCA1NSwgMTI4LCA2NSwgNDksIDUwLCA1NCwgMTI4LCA2NSwgNDksIDUwLCA1MywgNjUsIAorICAgIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDEyOCwgNjUsIDQ5LCA1MCwgNTIsIDEyOCwgNjUsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIAorICAgIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDQ5LCA1MCwgNDksIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgCisgICAgNTAsIDQ4LCAxMjgsIDY1LCA0OSwgNDksIDU3LCAxMjgsIDY1LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA0OSwgNDksIDU1LCAKKyAgICAxMjgsIDY1LCA0OSwgNDksIDU0LCAxMjgsIDY1LCA0OSwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA1MywgMTI4LCAKKyAgICA2NSwgNDksIDQ5LCA1MiwgMTI4LCA2NSwgNDksIDQ5LCA1MSwgMTI4LCA2NSwgNDksIDQ5LCA1MCwgMTI4LCA2NSwgNDksIAorICAgIDQ5LCA0OSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgCisgICAgNDksIDQ4LCAxMjgsIDY1LCA0OSwgNDgsIDU3LCAxMjgsIDY1LCA0OSwgNDgsIDU2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCAKKyAgICA2NywgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDU1LCAxMjgsIDY1LCA0OSwgNDgsIDU0LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MywgCisgICAgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAKKyAgICA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDEyOCwgNjUsIDQ5LCA0OCwgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ5LCA2NSwgCisgICAgMTI4LCA2NSwgNDksIDQ4LCA0OSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDQ1LCAKKyAgICA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCAxMjgsIDY1LCA0OCwgNTcsIDU3LCAxMjgsIDY1LCA0OCwgNTcsIAorICAgIDU2LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NiwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgCisgICAgNTUsIDEyOCwgNjUsIDQ4LCA1NywgNTQsIDEyOCwgNjUsIDQ4LCA1NywgNTMsIDEyOCwgNjUsIDQ4LCA1NywgNTIsIDEyOCwgCisgICAgNjUsIDQ4LCA1NywgNTEsIDEyOCwgNjUsIDQ4LCA1NywgNTAsIDEyOCwgNjUsIDQ4LCA1NywgNDksIDEyOCwgNjUsIDQ4LCAKKyAgICA1NywgNDgsIDEyOCwgNjUsIDQ4LCA1NiwgNTcsIDEyOCwgNjUsIDQ4LCA1NiwgNTYsIDEyOCwgNjUsIDQ4LCA1NiwgNTUsIAorICAgIDEyOCwgNjUsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDQ4LCA1NiwgNTIsIDEyOCwgNjUsIAorICAgIDQ4LCA1NiwgNTEsIDEyOCwgNjUsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDQ4LCA1NiwgCisgICAgNDgsIDEyOCwgNjUsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDQ4LCA1NSwgNTUsIDEyOCwgCisgICAgNjUsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDQ4LCA1NSwgNTMsIDEyOCwgNjUsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDQ4LCAKKyAgICA1NSwgNTEsIDEyOCwgNjUsIDQ4LCA1NSwgNTAsIDEyOCwgNjUsIDQ4LCA1NSwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIAorICAgIDQ4LCA1NCwgNTQsIDY3LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjUsIDEyOCwgCisgICAgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCAKKyAgICA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIAorICAgIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAorICAgIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgCisgICAgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIAorICAgIDUyLCA1MywgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgCisgICAgNTEsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCAKKyAgICA1MCwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIAorICAgIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCA2NSwgMTI4LCA2NSwgNDgsIDUxLCA1NywgCisgICAgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCAKKyAgICA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIAorICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCAKKyAgICA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIAorICAgIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgCisgICAgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbGV4aWNvbl9vZmZzZXRbXSA9IHsKLSAgICAwLCAwLCA2LCAxMCwgMTgsIDIzLCAyNywgMzQsIDM5LCA0MSwgNDcsIDUwLCA2MiwgNzAsIDgwLCA5MywgMTAyLCAxMDgsIAotICAgIDExMywgMTIxLCAxMzAsIDEzNSwgMTQwLCAxNDMsIDE0NywgMTUzLCAxNTgsIDE2MywgMTcxLCAxNzgsIDE4NiwgMTkxLCAKLSAgICAxOTQsIDIwMCwgMjA4LCAyMTUsIDIyNSwgMjMwLCAyMzcsIDI0NiwgMjQ5LCAyNTQsIDI1NywgMjYzLCAyNjcsIDI3MiwgCi0gICAgMjgxLCAyODgsIDI5NSwgMzAxLCAzMTAsIDMxNSwgMzIxLCAzMjcsIDMzNSwgMTQ0LCAzNDEsIDM0OSwgMzUwLCAzNTgsIAotICAgIDM2MSwgMzY3LCAzNjksIDM3NSwgMzgyLCAzODQsIDM5MSwgMzk1LCA0MDMsIDQxMCwgNDEyLCA0MTcsIDQyMiwgNDI3LCAKLSAgICA0MzQsIDQzNiwgMjk5LCA0NDIsIDQ0NSwgNDQ3LCA0NTIsIDQ1NywgNDYzLCA0NzAsIDQ3OSwgNDg5LCA0OTQsIDQ5OCwgCi0gICAgNTA1LCA1MTgsIDUyMiwgNTMxLCA1MzgsIDU0NSwgNTQ4LCA1NTQsIDU1OCwgNTYyLCA1NzIsIDU4MCwgNTg4LCA1OTYsIAotICAgIDYwNSwgNjEzLCA2MTgsIDYxOSwgNjIzLCA2MzEsIDYzOCwgNjQ4LCA2NTIsIDY2MywgNjY3LCA2NzAsIDY3MywgNjc4LCAKLSAgICAzNDgsIDY4MiwgNjkxLCA2OTcsIDcwMywgNzA1LCA3MDgsIDcxMSwgNzE0LCA3MTgsIDcyMiwgNzMxLCA3MzksIDc0NCwgCi0gICAgNzQ3LCA3NTEsIDc1NywgNzY0LCA3NzEsIDc3NiwgNzg1LCA3OTQsIDgwMSwgODA1LCA4MTgsIDgyNywgODM1LCA4NDEsIAotICAgIDU1NywgODUwLCA4NjAsIDg2NywgODczLCA4NzksIDg4NiwgODk0LCA4OTgsIDc0OSwgOTA2LCA5MTUsIDUwMywgOTIzLCAKLSAgICA5MjgsIDkzNCwgMTcsIDk0MywgOTQ4LCA5NTEsIDk1NSwgOTU5LCA5NjYsIDk2OSwgOTc2LCA5ODAsIDk4OCwgOTkyLCAKLSAgICAxMDAwLCAxMDA0LCAxMDA3LCAxMDE0LCAxMDIxLCAxOTIsIDEwMjQsIDEwMjksIDEwMzksIDEwNDgsIDEwNTUsIDEwNjAsIAotICAgIDEwNjYsIDEwNzIsIDEwODAsIDEwODMsIDEwODgsIDEwOTQsIDExMDIsIDExMDcsIDExMTAsIDExMTMsIDExMSwgMTExOCwgCi0gICAgMTEyMiwgMTEyOCwgMTEzNCwgMTEzNywgMTE0MywgMTE0NywgMTE1MiwgMTE1OCwgMTE2OCwgMTE3MiwgMTE3NSwgMTE3OCwgCi0gICAgMTE4NywgMTE5MSwgMTE5NCwgMTE5OSwgMTIwNCwgMTIxMCwgMTIxNSwgMTIyMCwgMTIyNSwgMTIyOSwgMTIzNCwgMTI0MCwgCi0gICAgMTI0NSwgMTI1MCwgMTI1NCwgMTI2MCwgMTI2NSwgMTI3MCwgMTI3NSwgMTI3OSwgMTI4NCwgMTI4OSwgMTI5NCwgMTMwMCwgCi0gICAgMTMwNiwgMTMxMiwgMTMxNywgMTMyMSwgMTMyNiwgMTMzMSwgMTMzNiwgMTM0MCwgMTM0NSwgMTM1MCwgMTM1NSwgMTM2MCwgCi0gICAgMTE5NSwgMTIwMCwgMTIwNSwgMTIxMSwgMTIxNiwgMTM2NCwgMTIyNiwgMTM3MCwgMTM3NSwgMTM4MCwgMTM4NywgMTM5MSwgCi0gICAgMTQwMCwgMTIzMCwgMTQwNCwgMTIzNSwgMTI0MSwgMTI0NiwgMTQwOCwgMTQxMywgMTQxOCwgMTQyMiwgMTQyNiwgMTQzMiwgCi0gICAgMTQzNiwgMTI1MSwgMTQzOSwgMTI2MSwgMTQ0NCwgMTQ0OCwgMTI2NiwgMTQ1NCwgMTI3MSwgMTQ1OCwgMTQ2MiwgMTI3NiwgCi0gICAgMTQ2NiwgMTQ3MSwgMTQ3NSwgMTQ3OCwgMTQ4MiwgMTI4MCwgMTI4NSwgMTQ4NywgMTI5MCwgMTQ5MywgMTQ5OSwgMTUwNSwgCi0gICAgMTUxMSwgMTI5NSwgMTMwNywgMTMxMywgMTUxNSwgMTUxOSwgMTUyMywgMTUyNiwgMTMxOCwgMTUzMCwgMTUzMiwgMTUzNywgCi0gICAgMTU0MiwgMTU0OCwgMTU1MywgMTU1OCwgMTU2MiwgMTU2NywgMTU3MiwgMTU3NywgMTU4MiwgMTU4OCwgMTU5MywgMTU5OCwgCi0gICAgMTYwNCwgMTYxMCwgMTYxNSwgMTYxOSwgMTYyNCwgMTYyOSwgMTYzNCwgMTYzOSwgMTY0MywgMTY1MSwgMTY1NSwgMTY2MCwgCi0gICAgMTY2NSwgMTY3MCwgMTY3NSwgMTY3OSwgMTY4MiwgMTY4NywgMTY5MiwgMTY5NywgMTcwMiwgMTcwOCwgMTcxMywgMTcxNywgCi0gICAgMTMyMiwgMTcyMCwgMTcyNSwgMTczMCwgMTMyNywgMTczNCwgMTczOCwgMTc0NSwgMTMzMiwgMTc1MiwgMTMzNywgMTc1NiwgCi0gICAgMTc1OCwgMTc2MywgMTc2OSwgMTM0MSwgMTc3NCwgMTc4MywgMTM0NiwgMTc4OCwgMTc5NCwgMTM1MSwgMTc5OSwgMTgwNCwgCi0gICAgMTgwNywgMTgxMiwgMTgxNiwgMTgyMCwgMTgyNCwgMTgyNywgMTgzMSwgMTM1NiwgMTM2MSwgMTA1OCwgMTgzNiwgMTg0MiwgCi0gICAgMTg0OCwgMTg1NCwgMTg2MCwgMTg2NiwgMTg3MiwgMTg3OCwgMTg4NCwgMTg4OSwgMTg5NSwgMTkwMSwgMTkwNywgMTkxMywgCi0gICAgMTkxOSwgMTkyNSwgMTkzMSwgMTkzNywgMTk0MywgMTk0OCwgMTk1MywgMTk1OCwgMTk2MywgMTk2OCwgMTk3MywgMTk3OCwgCi0gICAgMTk4MywgMTk4OCwgMTk5MywgMTk5OSwgMjAwNCwgMjAxMCwgMjAxNSwgMjAyMSwgMjAyNywgMjAzMiwgMjAzOCwgMjA0NCwgCi0gICAgMjA1MCwgMjA1NiwgMjA2MSwgMjA2NiwgMjA2OCwgMjA2OSwgMjA3MywgMjA3NywgMjA4MiwgMjA4NiwgMjA5MCwgMjA5NCwgCi0gICAgMjA5OSwgMjEwMywgMjEwNiwgMjExMSwgMjExNSwgMjEyMCwgMjEyNCwgMjEyOCwgMjEzMywgMjEzNywgMjE0MCwgMjE0NCwgCi0gICAgMjE1MCwgMjE2NCwgMjE2OCwgMjE3MiwgMjE3NiwgMjE3OSwgMjE4NCwgMjE4OCwgMjE5MiwgMjE5NSwgMjE5OSwgMjIwNCwgCi0gICAgMjIwOSwgMjIxNCwgMjIxOSwgMjIyMywgMjIyNywgMjIzMSwgMjIzNiwgMjI0MCwgMjI0NSwgMjI0OSwgMjI1NCwgMjI2MCwgCi0gICAgMjI2NywgMjI3MywgMjI3OCwgMjI4MywgMjI4OCwgMjI5NCwgMjI5OSwgMjMwNSwgMjMxMCwgMjMxMywgMTIxMiwgMjMxNSwgCi0gICAgMjMyMiwgMjMzMCwgMjM0MCwgMjM0OSwgMjM2MywgMjM2NywgMjM3MSwgMjM4NCwgMjM5MiwgMjM5NiwgMjQwMSwgMjQwNSwgCi0gICAgMjQwOCwgMjQxMiwgMjQxNiwgMjQyMSwgMjQyNiwgMjQzMSwgMjQzNSwgMjQzOCwgMjQ0MiwgMjQ0OSwgMjQ1NiwgMjQ2MiwgCi0gICAgMjQ2NywgMjQ3MiwgMjQ3OCwgMjQ4NCwgMjQ4OSwgMjQ5MiwgMTc2MCwgMjQ5NCwgMjUwMCwgMjUwNCwgMjUwOSwgMjUxMywgCi0gICAgMjUxNywgMTc2NSwgMTc3MSwgMjUyMiwgMjUyNiwgMjUyOSwgMjUzNCwgMjUzOSwgMjU0NCwgMjU0OSwgMjU1MywgMjU2MCwgCi0gICAgMjU2NSwgMjU2OCwgMjU3NSwgMjU4MSwgMjU4NSwgMjU4OSwgMjU5MywgMjU5OCwgMjYwNSwgMjYxMCwgMjYxNSwgMjYyMiwgCi0gICAgMjYyOCwgMjYzNCwgMjY0MCwgMjY1NCwgMjY3MSwgMjY4NiwgMjcwMSwgMjcxMCwgMjcxNSwgMjcxOSwgMjcyNCwgMjcyOSwgCi0gICAgMjczMywgMjc0NSwgMjc1MiwgMjc1OCwgMjI2MywgMjc2NCwgMjc3MSwgMjc3NywgMjc4MSwgMjc4NCwgMjc5MSwgMjc5NywgCi0gICAgMjgwMSwgMjgwNSwgMjgwOSwgMjA5MSwgMjgxMywgMjgxOCwgMjgyMywgMjgyNywgMjgzNSwgMjgzOSwgMjg0MywgMjg0NywgCi0gICAgMjg1MSwgMjg1NiwgMjg2MSwgMjg2NiwgMjg3MCwgMjg3NSwgMjg4MCwgMjg4NCwgMjg4OSwgMjg5MywgMjg5NiwgMjkwMCwgCi0gICAgMjkwNCwgMjkxMiwgMjkxNywgMjkyMSwgMjkyNSwgMjkzMSwgMjk0MCwgMjk0NCwgMjk0OCwgMjk1NCwgMjk1OSwgMjk2NiwgCi0gICAgMjk3MCwgMjk4MCwgMjk4NCwgMjk4OCwgMjk5MywgMjk5NywgMzAwMiwgMzAwOCwgMzAxMywgMzAxNywgMzAyMSwgMzAyNSwgCi0gICAgMjQ1MiwgMzAzMywgMzAzOCwgMzA0NCwgMzA0OSwgMzA1MywgMzA1OCwgMzA2MywgMzA2NywgMzA3MywgMzA3OCwgMjA5NSwgCi0gICAgMzA4NCwgMzA5MCwgMzA5NSwgMzEwMCwgMzEwNSwgMzExMCwgMzExNSwgMzEyMCwgMzEyNSwgMzEzMCwgMzEzNSwgMzE0MSwgCi0gICAgMzE0NiwgMTIyNywgOTIsIDMxNTIsIDMxNTYsIDMxNjAsIDMxNjQsIDMxNjksIDMxNzMsIDMxNzcsIDMxODEsIDMxODUsIAotICAgIDMxOTAsIDMxOTQsIDMxOTksIDMyMDMsIDMyMDYsIDMyMTAsIDMyMTUsIDMyMTksIDMyMjQsIDMyMjgsIDMyMzIsIDMyMzYsIAotICAgIDMyNDEsIDMyNDUsIDMyNDgsIDMyNjEsIDMyNjUsIDMyNjksIDMyNzMsIDMyNzcsIDMyODEsIDMyODQsIDMyODgsIDMyOTIsIAotICAgIDMyOTcsIDMzMDEsIDMzMDYsIDMzMTEsIDMzMTYsIDMzMjAsIDMzMjMsIDMzMjYsIDMzMzIsIDMzMzYsIDMzNDAsIDMzNDMsIAotICAgIDMzNDcsIDMzNTEsIDMzNTQsIDMzNjAsIDMzNjUsIDMzNzAsIDMzNzYsIDMzODEsIDMzODYsIDMzOTIsIDMzOTgsIDM0MDMsIAotICAgIDM0MDgsIDM0MTMsIDExMjAsIDU0NywgMzQxOCwgMzQyMSwgMzQyNiwgMzQzMCwgMzQzMywgMzQzNywgMzQ0MiwgMzQ0NywgCi0gICAgMzQ1MSwgMzQ1NiwgMzQ2MCwgMzQ2NSwgMzQ2OSwgMzQ3MywgMzQ3OSwgMzQ4NSwgMzQ4OCwgMzQ5MSwgMzQ5NywgMzUwNCwgCi0gICAgMzUxMSwgMzUxNywgMzUyNCwgMzUyOSwgMzUzMywgMzU0MCwgMzU0NywgMzU1MiwgMzU1NiwgMzU2NiwgMzU3MCwgMzU3NCwgCi0gICAgMzU3OSwgMzU4NCwgMzU5NCwgMjEwNywgMzU5OSwgMzYwMywgMzYwNiwgMzYxMiwgMzYxNywgMzYyMywgMzYyOSwgMzYzNCwgCi0gICAgMzY0MSwgMzY0NSwgMzY0OSwgNjIwLCA2NzEsIDEzODgsIDM2NTMsIDM2NjAsIDM2NjcsIDM2NzQsIDM2ODEsIDM2ODcsIAotICAgIDM2OTMsIDM2OTgsIDM3MDIsIDM3MDgsIDM3MTMsIDM3MTcsIDIxMTYsIDM3MjEsIDM3MjksIDYwMCwgMzczNSwgMzc0NiwgCi0gICAgMzc1MCwgMzc2MCwgMjEyMSwgMzc2NiwgMzc3MSwgMzc4NiwgMzc5MiwgMzc5OSwgMzgwOSwgMzgxNSwgMzgyMCwgMzgyNiwgCi0gICAgMzgzMiwgMzgzNSwgMzgzOSwgMzg0NCwgMzg1MSwgMzg1NiwgMzg2MCwgMzg2NCwgMzg2OCwgMzg3MiwgMzg3NywgMzg4MywgCi0gICAgMzg5NCwgMzIxMSwgMzg5OSwgMzkxMSwgMzkxOSwgMzkyNCwgMTU2NCwgMzkzMSwgMzkzNCwgMzkzNywgMzk0MSwgMzk0NCwgCi0gICAgMzk1MCwgMzk1NCwgMzk2OCwgMzk3MiwgMzk3NSwgMzk3OSwgMzk4NSwgMzk5MSwgMzk5NiwgNDAwMCwgNDAwNCwgNDAxMCwgCi0gICAgNDAyMSwgNDAyNywgNDAzMiwgNDAzOCwgNDA0MiwgNDA1MCwgNDA2MCwgNDA2NiwgNDA3MSwgNDA4MCwgNDA4OCwgNDA5NSwgCi0gICAgNDA5OSwgNDEwNSwgNDExNCwgNDEyMywgNDEyNywgNDEzMiwgNDEzNywgNDE0MSwgNDE0OSwgNDE1MywgNDE1OCwgNDE2MiwgCi0gICAgMjEyOSwgMTQwMSwgNDE2OCwgNDE3MywgNDE3OSwgNDE4NCwgNDE4OSwgNDE5NCwgNDE5OSwgNDIwNCwgNDIwOSwgNDIxNSwgCi0gICAgNDIyMCwgNDIyNiwgNDIzMSwgNDIzNiwgNDI0MSwgNDI0NywgNDI1MiwgNDI1NywgNDI2MiwgNDI2NywgNDI3MywgNDI3OCwgCi0gICAgNDI4NCwgNDI4OSwgNDI5NCwgNDI5OSwgNDMwNCwgNDMwOSwgNDMxNCwgNDMyMCwgNDMyNSwgNDMzMCwgMzE5LCA0NTYsIAotICAgIDQzMzUsIDQzNDEsIDQzNDUsIDQzNDksIDQzNTQsIDQzNTgsIDQzNjIsIDQzNjUsIDQzNjksIDQzNzMsIDQzNzcsIDQzODEsIAotICAgIDQzODYsIDQzOTAsIDQzOTQsIDQ0MDAsIDQxNjUsIDQ0MDUsIDQ0MDksIDQ0MTIsIDQ0MTcsIDQ0MjIsIDQ0MjcsIDQ0MzIsIAotICAgIDQ0MzcsIDQ0NDIsIDQ0NDcsIDQ0NTIsIDQ0NTcsIDQ0NjIsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODYsIDQ0OTEsIAotICAgIDQ0OTYsIDQ1MDEsIDQ1MDYsIDQ1MTEsIDQ1MTYsIDQ1MjAsIDQ1MjUsIDQ1MzAsIDQ1MzUsIDQ1NDAsIDQ1NDUsIDQ1NTAsIAotICAgIDQ1NTUsIDQ1NjAsIDQ1NjUsIDQ1NzAsIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODksIDQ1OTQsIDQ1OTksIDQ2MDQsIDQ2MDksIAotICAgIDQ2MTQsIDQ2MTksIDQ2MjQsIDQ2MjgsIDQ2MzMsIDQ2MzgsIDQ2NDMsIDQ2NDgsIDQ2NTMsIDQ2NTgsIDQ2NjMsIDQ2NjgsIAotICAgIDQ2NzMsIDQ2NzgsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTcsIDQ3MDIsIDQ3MDcsIDQ3MTIsIDQ3MTcsIDQ3MjIsIDQ3MjcsIAotICAgIDQ3MzIsIDQ3MzYsIDQ3NDEsIDQ3NDYsIDQ3NTEsIDQ3NTYsIDQ3NjEsIDQ3NjYsIDQ3NzEsIDQ3NzYsIDQ3ODEsIDQ3ODYsIAotICAgIDQ3OTAsIDQ3OTUsIDQ4MDAsIDQ4MDUsIDQ4MTAsIDQ4MTYsIDQ4MjIsIDQ4MjgsIDQ4MzQsIDQ4NDAsIDQ4NDYsIDQ4NTIsIAotICAgIDQ4NTcsIDQ4NjMsIDQ4NjksIDQ4NzUsIDQ4ODEsIDQ4ODcsIDQ4OTMsIDQ4OTksIDQ5MDUsIDQ5MTEsIDQ5MTcsIDQ5MjIsIAotICAgIDQ5MjgsIDQ5MzQsIDQ5NDAsIDQ5NDYsIDQ5NTIsIDQ5NTgsIDQ5NjQsIDQ5NzAsIDQ5NzYsIDQ5ODIsIDQ5ODcsIDQ5OTMsIAotICAgIDQ5OTksIDUwMDUsIDUwMTEsIDUwMTcsIDUwMjMsIDUwMjksIDUwMzUsIDUwNDEsIDUwNDcsIDUwNTIsIDUwNTgsIDUwNjQsIAotICAgIDUwNzAsIDUwNzYsIDUwODIsIDUwODgsIDUwOTQsIDUxMDAsIDUxMDYsIDUxMTIsIDUxMTcsIDUxMjMsIDUxMjksIDUxMzUsIAotICAgIDUxNDEsIDUxNDcsIDUxNTMsIDUxNTksIDUxNjUsIDUxNzEsIDUxNzcsIDUxODIsIDUxODYsIDUxOTIsIDUxOTgsIDUyMDQsIAotICAgIDUyMTAsIDUyMTYsIDUyMjIsIDUyMjgsIDUyMzQsIDUyNDAsIDUyNDYsIDUyNTEsIDUyNTcsIDUyNjMsIDUyNjksIDUyNzUsIAotICAgIDUyODEsIDUyODcsIDUyOTMsIDUyOTksIDUzMDUsIDUzMTEsIDUzMTYsIDUzMjIsIDUzMjgsIDUzMzQsIDUzNDAsIDUzNDYsIAotICAgIDUzNTIsIDUzNTgsIDUzNjQsIDUzNzAsIDUzNzYsIDUzODEsIDUzODcsIDUzOTMsIDUzOTksIDU0MDUsIDU0MTEsIDU0MTcsIAotICAgIDU0MjMsIDU0MjksIDU0MzUsIDU0NDEsIDU0NDYsIDU0NTIsIDU0NTgsIDU0NjQsIDU0NzAsIDU0NzYsIDU0ODIsIDU0ODgsIAotICAgIDU0OTQsIDU1MDAsIDU1MDYsIDU1MTEsIDU1MTcsIDU1MjMsIDU1MjksIDU1MzUsIDU1NDEsIDU1NDcsIDU1NTMsIDU1NTksIAotICAgIDU1NjUsIDU1NzEsIDU1NzYsIDU1ODIsIDU1ODgsIDU1OTQsIDU2MDAsIDU2MDYsIDU2MTIsIDU2MTgsIDU2MjQsIDU2MzAsIAotICAgIDU2MzYsIDU2NDEsIDU2NDcsIDU2NTMsIDU2NTksIDU2NjUsIDU2NzEsIDU2NzcsIDU2ODMsIDU2ODksIDU2OTUsIDU3MDEsIAotICAgIDU3MDYsIDU3MTIsIDU3MTgsIDU3MjQsIDU3MzAsIDU3MzYsIDU3NDIsIDU3NDgsIDU3NTQsIDU3NjAsIDU3NjYsIDU3NzEsIAotICAgIDU3NzcsIDU3ODMsIDU3ODksIDU3OTUsIDU4MDEsIDU4MDcsIDU4MTMsIDU4MTksIDU4MjUsIDU4MzEsIDU4MzYsIDU4NDAsIAotICAgIDU4NDMsIDU4NTAsIDU4NTQsIDU4NjcsIDU4NzEsIDU4NzUsIDU4NzksIDU4ODMsIDU4ODcsIDU4OTEsIDU4OTcsIDU5MDQsIAotICAgIDU5MTIsIDU5MTYsIDU5MjQsIDU5MzMsIDU5MzksIDU5NTEsIDU5NTYsIDU5NTksIDU5NjMsIDU5NzMsIDU5ODEsIDU5ODksIAotICAgIDU5OTUsIDU5OTksIDYwMDksIDYwMTksIDYwMjcsIDYwMzQsIDYwNDEsIDYwNDcsIDYwNTMsIDYwNjAsIDYwNjQsIDYwNzEsIAotICAgIDYwODEsIDYwOTEsIDYwOTksIDYxMDYsIDYxMTEsIDYxMTUsIDYxMjMsIDYxMjcsIDYxMzIsIDYxMzksIDYxNDcsIDYxNTIsIAotICAgIDYxNTcsIDYxNjEsIDYxNjgsIDYxNzMsIDYxODcsIDYxOTIsIDYxOTcsIDYyMDQsIDYyMTMsIDYyMTYsIDYyMjAsIDYyMjQsIAotICAgIDYyMjgsIDYyMzEsIDYyMzYsIDYyNDEsIDYyNTAsIDYyNTYsIDYyNjIsIDYyNjgsIDYyNzIsIDYyODMsIDYyOTMsIDYzMDgsIAotICAgIDYzMjMsIDYzMzgsIDYzNTMsIDYzNjgsIDYzODMsIDYzOTgsIDY0MTMsIDY0MjgsIDY0NDMsIDY0NTgsIDY0NzMsIDY0ODgsIAotICAgIDY1MDMsIDY1MTgsIDY1MzMsIDY1NDgsIDY1NjMsIDY1NzgsIDY1OTMsIDY2MDgsIDY2MjMsIDY2MzgsIDY2NTMsIDY2NjgsIAotICAgIDY2ODMsIDY2OTgsIDY3MTMsIDY3MjgsIDY3NDMsIDY3NTgsIDY3NzMsIDY3ODgsIDY4MDMsIDY4MTgsIDY4MzMsIDY4NDgsIAotICAgIDY4NjMsIDY4NzgsIDY4OTMsIDY5MDgsIDY5MjMsIDY5MzgsIDY5NTMsIDY5NjgsIDY5ODMsIDY5OTgsIDcwMTMsIDcwMjgsIAotICAgIDcwMzcsIDcwNDYsIDcwNTEsIDcwNTcsIDcwNjcsIDcwNzEsIDcwNzYsIDcwODEsIDcwODksIDcwOTMsIDcwOTYsIDcxMDAsIAotICAgIDI5NzUsIDcxMDMsIDcxMDgsIDI5OCwgNDI1LCA3MTE0LCA3MTIyLCA3MTI2LCA3MTMwLCA3MTMzLCA3MTM3LCA3MTQzLCAKLSAgICA3MTQ3LCA3MTU1LCA3MTYxLCA3MTY2LCA3MTczLCA3MTgwLCA3MTg2LCA3MTkxLCA3MTk4LCA3MjA0LCA3MjEyLCA3MjE2LCAKLSAgICA3MjIxLCA3MjMzLCA3MjQ0LCA3MjUxLCA3MjU1LCA3MjU5LCA3MjY1LCAzMjMzLCA3MjY5LCA3Mjc1LCA3MjgwLCA3Mjg1LCAKLSAgICA3MjkwLCA3Mjk2LCA3MzAxLCA3MzA2LCA3MzExLCA3MzE2LCA3MzIyLCA3MzI3LCA3MzMyLCA3MzM4LCA3MzQzLCA3MzQ5LCAKLSAgICA3MzU0LCA3MzYwLCA3MzY1LCA3MzcxLCA3Mzc2LCA3MzgxLCA3Mzg2LCA3MzkxLCA3Mzk2LCA3NDAyLCA3NDA3LCA3NDEyLCAKLSAgICA3NDE3LCA3NDIzLCA3NDI5LCA3NDM1LCA3NDQxLCA3NDQ3LCA3NDUzLCA3NDU5LCA3NDY1LCA3NDcxLCA3NDc3LCA3NDgzLCAKLSAgICA3NDg5LCA3NDk0LCA3NDk5LCA3NTA0LCA3NTA5LCA3NTE0LCA3NTE5LCA3NTI0LCA3NTI5LCA3NTM1LCA3NTQxLCA3NTQ2LCAKLSAgICA3NTUyLCA3NTU4LCA3NTY0LCA3NTY5LCA3NTc0LCA3NTc5LCA3NTg0LCA3NTkwLCA3NTk2LCA3NjAxLCA3NjA2LCA3NjExLCAKLSAgICA3NjE2LCA3NjIxLCA3NjI3LCA3NjMyLCA3NjM4LCA3NjQ0LCA3NjUwLCA3NjU2LCA3NjYyLCA3NjY4LCA3Njc0LCA3NjgwLCAKLSAgICA3Njg2LCAyMTM4LCA3MTMyLCA3NjkxLCA3Njk1LCA3Njk5LCA3NzAyLCA3NzA5LCA3NzEyLCA3NzIwLCA3NzI1LCA3NzMwLCAKLSAgICA3NzIxLCA3NzM1LCAyMTY1LCA3NzM5LCA3NzQ1LCA3NzUxLCA3NzU2LCA3NzYxLCA3NzY4LCA3Nzc2LCA3NzgxLCA3Nzg1LCAKLSAgICA3Nzg4LCA3NzkyLCA3Nzk4LCA3ODA0LCA3ODA4LCAyMTczLCA1NjAsIDc4MTEsIDc4MTUsIDc4MjAsIDc4MjYsIDc4MzEsIAotICAgIDc4MzUsIDc4MzgsIDc4NDIsIDc4NDgsIDc4NTMsIDc4NTcsIDc4NjQsIDc4NjgsIDc4NzIsIDc4NzYsIDk0NSwgNzY5LCAKLSAgICA3ODc5LCA3ODg3LCA3ODk0LCA3OTAxLCA3OTA3LCA3OTE0LCA3OTIyLCA3OTI5LCA3OTM2LCA3OTQxLCA3OTUzLCAxMjQ3LCAKLSAgICAxNDA5LCAxNDE0LCA3OTY0LCAxNDE5LCA3OTY4LCA3OTcyLCA3OTgxLCA3OTg5LCA3OTk4LCA4MDA0LCA4MDA5LCA4MDEzLCAKLSAgICA4MDE5LCA4MDI0LCAyNzA2LCA4MDMxLCA4MDM1LCA4MDQ0LCA4MDUzLCA4MDYyLCA4MDcxLCA4MDc2LCA4MDgxLCA4MDkzLCAKLSAgICA4MDk4LCA4MTA2LCAyMjI0LCA4MTEwLCA4MTEyLCA4MTE3LCA4MTIxLCA4MTMwLCA4MTM4LCAxNDIzLCAxMzMsIDM0NjEsIAotICAgIDM0NjYsIDgxNDQsIDgxNDgsIDgxNTcsIDgxNjMsIDgxNjgsIDgxNzEsIDgxODAsIDI2OTgsIDgxODYsIDgxOTQsIDgxOTgsIAotICAgIDgyMDIsIDgyMDYsIDIyMzcsIDgyMTAsIDgyMTUsIDgyMjIsIDgyMjgsIDgyMzQsIDgyMzcsIDgyMzksIDgyNDIsIDgyNTAsIAotICAgIDgyNTgsIDgyNjYsIDgyNjksIDgyNzQsIDIyNTAsIDgyNzksIDc3MzIsIDgyODIsIDgyODQsIDgyODksIDgyOTQsIDgyOTksIAotICAgIDgzMDQsIDgzMDksIDgzMTQsIDgzMTksIDgzMjQsIDgzMjksIDgzMzQsIDgzNDAsIDgzNDUsIDgzNTAsIDgzNTUsIDgzNjEsIAotICAgIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTEsIDgzOTcsIDg0MDIsIDg0MDcsIDg0MTIsIDg0MTcsIDg0MjIsIAotICAgIDg0MjcsIDg0MzIsIDg0MzcsIDg0NDIsIDg0NDcsIDg0NTIsIDg0NTcsIDg0NjIsIDg0NjcsIDg0NzIsIDg0NzcsIDg0ODIsIAotICAgIDg0ODgsIDg0OTQsIDg0OTksIDg1MDQsIDg1MDksIDg1MTQsIDg1MTksIDIyNjEsIDIyNjgsIDIyNzQsIDg1MjQsIDg1MzAsIAotICAgIDg1MzgsIDIzMDAsIDIzMDYsIDg1NDYsIDg1NTAsIDg1NTUsIDg1NTksIDg1NjMsIDg1NjcsIDg1NzIsIDg1NzYsIDg1ODEsIAotICAgIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTcsIDg2MDMsIDg2MDksIDg2MTUsIDg2MjEsIDg2MjcsIDg2MzMsIDg2MzcsIDg2NDEsIAotICAgIDg2NDUsIDg2NDksIDg2NTMsIDg2NTgsIDg2NjUsIDg2NzYsIDg2ODQsIDg2OTQsIDg3MDAsIDg3MDcsIDg3MTIsIDg3MTYsIAotICAgIDg3MjcsIDg3NDAsIDg3NTEsIDg3NjQsIDg3NzUsIDg3ODcsIDg3OTksIDg4MTEsIDg4MjQsIDg4MzcsIDg4NDQsIDg4NTAsIAotICAgIDg4NjQsIDg4NzEsIDg4NzcsIDg4ODEsIDg4ODYsIDg4OTAsIDg4OTcsIDg5MDUsIDg5MDksIDg5MTUsIDg5MTksIDg5MjUsIAotICAgIDg5MzUsIDg5MzksIDg5NDQsIDg5NDksIDg5NTYsIDg5NjIsIDg5NzIsIDc5MDksIDg5NzgsIDg5ODIsIDg5ODksIDg5OTYsIAotICAgIDc2OCwgOTAwMCwgOTAwNCwgOTAwOSwgOTAxNCwgOTAxOSwgOTAyMywgOTAyOSwgOTAzNywgOTA0MywgOTA0NywgOTA1MywgCi0gICAgOTA2MywgOTA2NywgOTA3MywgOTA3OCwgOTA4MiwgOTA4OCwgOTA5NCwgMjE2MSwgOTA5OSwgOTEwMSwgOTEwNiwgOTExNCwgCi0gICAgOTEyMywgOTEyNywgOTEzMywgOTEzOCwgOTE0MywgOTE0OCwgOTE1MywgOTE1OSwgOTE2NCwgOTE2OSwgNDAwNiwgOTE3NCwgCi0gICAgOTE3OSwgOTE4MywgOTE4OSwgOTE5NCwgOTIwMCwgOTIwNSwgOTIxMCwgOTIxNiwgOTIyMSwgOTEyOCwgOTIyNywgOTIzMSwgCi0gICAgOTIzOCwgOTI0NCwgOTI0OSwgOTI1MywgNjE4MywgOTI1OCwgOTI2NywgOTI3MiwgOTI3NywgODIxOCwgODIyNSwgOTI4MiwgCi0gICAgMjg1MywgOTI4NiwgOTI5MSwgOTI5NiwgOTEzOSwgOTMwMCwgOTMwNSwgOTE0NCwgOTE0OSwgOTMxMCwgOTMxNywgOTMyNCwgCi0gICAgOTMzMCwgOTMzNiwgOTM0MiwgOTM0NywgOTM1MiwgOTM1NywgOTE1NCwgOTE2MCwgOTM2MywgOTM2OSwgOTM3NCwgOTM4MiwgCi0gICAgOTE2NSwgOTM4NywgOTkwLCA5MzkwLCA5Mzk4LCA5NDA0LCA5NDEwLCA5NDE5LCA5NDI3LCA5NDMyLCA5NDM4LCA5NDQ2LCAKLSAgICA5NDUzLCA5NDY4LCA5NDg1LCA5NTA0LCA5NTEzLCA5NTIxLCA5NTM2LCA5NTQ3LCA5NTU3LCA5NTY3LCA5NTc1LCA5NTgxLCAKLSAgICA5NTkzLCA5NjAyLCA5NjEwLCA5NjE3LCA5NjI0LCA5NjMwLCA5NjM1LCA5NjQzLCA5NjUzLCA5NjYwLCA5NjcwLCA5NjgwLCAKLSAgICA5NjkwLCA5Njk4LCA5NzA1LCA5NzE0LCA5NzI0LCA5NzM4LCA5NzUzLCA5NzYyLCA5NzcwLCA5Nzc1LCA5Nzc5LCA5Nzg4LCAKLSAgICA5Nzk0LCA5Nzk5LCA5ODA5LCA5ODE5LCA5ODI5LCA5ODM0LCA5ODM4LCA5ODQ3LCA5ODUyLCA5ODYyLCA5ODczLCA5ODg2LCAKLSAgICA5ODk0LCA5OTA3LCA5OTE5LCA5OTI3LCA5OTMyLCA5OTM2LCA5OTQyLCA5OTQ3LCA5OTU1LCA5OTYzLCA5OTcwLCA5OTc1LCAKLSAgICA5OTgzLCA5OTg5LCA5OTkyLCA5OTk2LCAxMDAwMiwgMTAwMTAsIDEwMDE1LCAxMDAxOSwgMTAwMjcsIDEwMDM2LCAxMDA0NCwgCi0gICAgMTAwNTAsIDEwMDU0LCAxMDA2MSwgMTAwNzIsIDEwMDc2LCAxMDA3OSwgMTAwODUsIDkxNzAsIDEwMDkwLCAxMDA5NiwgCi0gICAgMTAxMDMsIDEwMTA5LCAxMDExNCwgMTAxMjEsIDEwMTI4LCAxMDEzNSwgMTAxNDIsIDEwMTQ5LCAxMDE1NiwgMTAxNjMsIAotICAgIDEwMTcwLCAxMDE3NSwgOTQ4MSwgMTAxODAsIDEwMTg2LCAxMDE5MywgMTAyMDAsIDEwMjA1LCAxMDIxMiwgMTAyMjEsIAotICAgIDEwMjI1LCAxMDIzNywgODI1NiwgMTAyNDEsIDEwMjQ0LCAxMDI0OCwgMTAyNTIsIDEwMjU2LCAxMDI2MCwgMTAyNjYsIAotICAgIDEwMjcyLCAxMDI3NywgMTAyODMsIDEwMjg4LCAxMDI5MywgMTAyOTksIDEwMzA0LCAxMDMwOSwgODk1MiwgMTAzMTQsIAotICAgIDEwMzE4LCAxMDMyMiwgMTAzMjYsIDEwMzMxLCAxMDMzNiwgMTAzNDQsIDEwMzUwLCAxMDM1NCwgMTAzNTgsIDEwMzY1LCAKLSAgICAxMDM3MCwgMTAzNzgsIDEwMzgzLCAxMDM4NywgMTAzOTAsIDEwMzk2LCAxMDQwMywgMTA0MDcsIDEwNDEwLCAxMDQxNSwgCi0gICAgMTA0MTksIDQwNDUsIDEwNDI1LCAxMDQzNCwgMzYsIDEwNDQyLCAxMDQ0OCwgMTA0NTMsIDg5NjcsIDEwNDU4LCAxMDQ2MywgCi0gICAgMTA0NjcsIDEwNDcwLCAxMDQ4NSwgMTA1MDQsIDEwNTE2LCAxMDUyOSwgMTA1NDIsIDEwNTU1LCAxMDU2OSwgMTA1ODIsIAotICAgIDEwNTk3LCAxMDYwNCwgOTE3NSwgMTA2MTAsIDEwNjI0LCAxMDYyOSwgMTA2MzUsIDEwNjQwLCAxMDY0OCwgMTA2NTMsIAotICAgIDgwNDAsIDEwNjU4LCAxMDY2MSwgMTA2NjgsIDEwNjczLCAxMDY3NywgMjg1OCwgOTk4LCAxMDY4MywgMTA2ODcsIDEwNjkzLCAKLSAgICAxMDY5OSwgMTA3MDQsIDEwNzEwLCAxMDcxNSwgOTE4NCwgMTA3MjEsIDEwNzI3LCAxMDczMiwgMTA3MzcsIDEwNzQ1LCAKLSAgICAxMDc1MSwgMTA3NjQsIDEwNzcyLCAxMDc3OSwgOTE5MCwgMTA3ODUsIDEwNzkzLCAxMDgwMSwgMTA4MDgsIDEwODIxLCAKLSAgICAxMDgzMywgMTA4NDMsIDEwODUxLCAxMDg1OCwgMTA4NjUsIDEwODc0LCAxMDg4MywgMTA4OTEsIDEwODk4LCAxMDkwMywgCi0gICAgMTA5MDksIDkxOTUsIDEwOTE0LCAxMDkyMCwgOTIwMSwgMTA5MjUsIDEwOTI4LCAxMDkzNSwgMTA5NDEsIDEwOTU0LCA4NjY5LCAKLSAgICAxMDk2NSwgMTA5NzEsIDEwOTgwLCAxMDk4OCwgMTA5OTUsIDExMDAxLCAxMTAwNywgMTEwMTIsIDExMDE2LCAxMTAyMSwgCi0gICAgMTA0NzcsIDExMDI3LCA5MjA2LCAxMTAzNCwgMTEwMzksIDExMDQ2LCAxMTA1MiwgMTEwNTgsIDExMDYzLCAxMTA3MSwgCi0gICAgMTEwNzksIDExMDg2LCAxMTA5MCwgMTExMDQsIDExMTE0LCAxMTExOSwgMTExMjMsIDExMTM0LCAxMTE0MCwgMTExNDUsIAotICAgIDExMTUwLCA5MjExLCA5MjE3LCAxMTE1NCwgMTExNTcsIDExMTYyLCAxMTE3NCwgMTExODEsIDExMTg2LCAxMTE5MCwgCi0gICAgMTExOTUsIDExMTk5LCAxMTIwNiwgMTEyMTIsIDkyMjIsIDkxMjksIDExMjE5LCAyODYzLCA4LCAxMTIyNiwgMTEyMzEsIAotICAgIDExMjM1LCAxMTI0MSwgMTEyNDksIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc2LCAxMTI4MywgMTEyODcsIDExMjk4LCAKLSAgICAxMTMwOCwgMTEzMTcsIDExMzI5LCAxMTMzNCwgMTEzMzgsIDExMzQ2LCAxMTM2MCwgMTEzNjQsIDExMzY3LCAxMTM3NSwgCi0gICAgMTEzODIsIDExMzkwLCAxMTM5NCwgMTE0MDUsIDExNDA5LCAxMTQxNiwgMTE0MjEsIDExNDI1LCAxMTQzMSwgMTE0MzYsIAotICAgIDExNDQwLCAxMTQ0NiwgMTE0NTEsIDExNDYyLCAxMTQ2NiwgMTE0NjksIDExNDc1LCAxMTQ4MCwgMTE0ODYsIDExNDkyLCAKLSAgICAxMTQ5OSwgMTE1MTAsIDExNTIwLCAxMTUzMCwgMTE1MzksIDExNTQ2LCAxMTU1NSwgOTIzMiwgOTIzOSwgOTI0NSwgOTI1MCwgCi0gICAgMTE1NjEsIDExNTY3LCA5MjU0LCAxMTU3MywgMTE1NzYsIDExNTgzLCAxMTU4OCwgMTE2MDMsIDExNjE5LCAxMTYzNCwgCi0gICAgMTE2NDIsIDExNjQ4LCAxMTY1MywgODM4LCA0MjAsIDExNjU4LCAxMTY2NiwgMTE2NzMsIDExNjc5LCAxMTY4NCwgMTE2ODksIAotICAgIDkyNTksIDExNjkxLCAxMTY5NSwgMTE3MDAsIDExNzA0LCAxMTcxNCwgMTE3MTksIDExNzIzLCAxMTczMiwgMTE3MzYsIAotICAgIDExNzM5LCA5MjY4LCAxMTc0NiwgMTE3NDksIDExNzU3LCAxMTc2NCwgMTE3NzIsIDExNzc2LCAxMTc4MywgMTE3OTIsIAotICAgIDExNzk1LCAxMTc5OSwgMTE4MDMsIDExODA5LCAxMTgxMywgMTE4MTcsIDExODIxLCAxMTgyNywgMTE4MzcsIDExODQxLCAKLSAgICAxMTg0OSwgMTE4NTMsIDExODYwLCAxMTg2NCwgMTE4NjksIDExODczLCAxMTg4MCwgMTE4ODYsIDExODk0LCAxMTkwMCwgCi0gICAgMTE5MDUsIDExOTE1LCAxMTkyMCwgMTE5MjUsIDExOTI5LCAxMTkzNywgMzkwNSwgMTE5NDUsIDExOTUwLCA5MjczLCAKLSAgICAxMTk1NCwgMTE5NTgsIDExOTYxLCAxMTk2OSwgMTE5NzYsIDExOTgwLCA1OTkxLCAxMTk4NCwgMTE5ODksIDExOTkzLCAKLSAgICAxMjAwNCwgMTIwMTQsIDEyMDE5LCAxMjAyNSwgMTIwMjksIDEyMDMyLCAxMjA0MCwgMTIwNDUsIDEyMDUwLCAxMjA1NywgCi0gICAgMTIwNjIsIDkyNzgsIDEyMDY3LCAxMjA3MSwgMTIwNzgsIDE3MjIsIDYxNDUsIDEyMDgzLCAxMjA4OCwgMTIwOTMsIDEyMDk4LCAKLSAgICAxMjEwNCwgMTIxMDksIDEyMTE1LCAxMjEyMCwgMTIxMjUsIDEyMTMwLCAxMjEzNSwgMTIxNDAsIDEyMTQ1LCAxMjE1MCwgCi0gICAgMTIxNTUsIDEyMTYwLCAxMjE2NSwgMTIxNzAsIDEyMTc1LCAxMjE4MCwgMTIxODUsIDEyMTkwLCAxMjE5NSwgMTIyMDEsIAotICAgIDEyMjA2LCAxMjIxMSwgMTIyMTYsIDEyMjIxLCAxMjIyNiwgMTIyMzIsIDEyMjM3LCAxMjI0MiwgMTIyNDgsIDEyMjUzLCAKLSAgICAxMjI1OSwgMTIyNjQsIDEyMjcwLCAxMjI3NSwgMTIyODAsIDEyMjg1LCAxMjI5MCwgMTIyOTYsIDEyMzAxLCAxMjMwNiwgCi0gICAgMTIzMTEsIDczNywgMTM5LCAxMjMxOSwgMTIzMjMsIDEyMzI4LCAxMjMzMywgMTIzMzcsIDEyMzQxLCAxMjM0NSwgMTIzNTAsIAotICAgIDEyMzU0LCAxMjM1OSwgMTIzNjMsIDEyMzY2LCAxMjM3MCwgMTIzNzQsIDEyMzgwLCAxMjM4NSwgMTIzOTUsIDEyNDAxLCAKLSAgICAxMjQwOSwgMTI0MTMsIDEyNDE3LCAxMjQyNCwgMTI0MzIsIDEyNDQxLCAxMjQ1MiwgMTI0NTksIDEyNDY2LCAxMjQ3MCwgCi0gICAgMTI0NzksIDEyNDg4LCAxMjQ5NiwgMTI1MDUsIDEyNTE0LCAxMjUyMywgMTI1MzIsIDEyNTQyLCAxMjU1MiwgMTI1NjIsIAotICAgIDEyNTcyLCAxMjU4MiwgMTI1OTEsIDEyNjAxLCAxMjYxMSwgMTI2MjEsIDEyNjMxLCAxMjY0MSwgMTI2NTEsIDEyNjYxLCAKLSAgICAxMjY3MCwgMTI2ODAsIDEyNjkwLCAxMjcwMCwgMTI3MTAsIDEyNzIwLCAxMjczMCwgMTI3MzksIDEyNzQ5LCAxMjc1OSwgCi0gICAgMTI3NjksIDEyNzc5LCAxMjc4OSwgMTI3OTksIDEyODA5LCAxMjgxOSwgMTI4MjksIDEyODM4LCAxMjg0OCwgMTI4NTgsIAotICAgIDEyODY4LCAxMjg3OCwgMTI4ODgsIDEyODk4LCAxMjkwOCwgMTI5MTgsIDEyOTI4LCAxMjkzOCwgMTI5NDcsIDEyNTYsIAotICAgIDEyOTUzLCAxMjk1NiwgMTI5NjAsIDEyOTY1LCAxMjk3MiwgMTI5NzgsIDEyOTgzLCAxMjk4NywgMTI5OTIsIDEzMDAxLCAKLSAgICAxMzAwOSwgMTMwMTQsIDEzMDE4LCAxMzAyMiwgMTMwMjgsIDEzMDMzLCAxMzAzOSwgOTI4NywgMTMwNDQsIDEzMDQ5LCAKLSAgICAxMzA1OCwgOTI5MiwgMTMwNjMsIDEzMDY2LCAxMzA3MiwgMTMwODAsIDkyOTcsIDEzMDg3LCAxMzA5MSwgMTMwOTUsIAotICAgIDEzMDk5LCAxMzEwOSwgMTMxMTUsIDEzMTIxLCAxMzEyNiwgMTMxMzUsIDEzMTQzLCAxMzE1MCwgMTMxNTcsIDEzMTYyLCAKLSAgICAxMzE2OSwgMTMxNzQsIDEzMTc4LCAxMzE4MSwgMTMxOTIsIDEzMjAyLCAxMzIxMSwgMTMyMTksIDEzMjMwLCAxMzI0MiwgCi0gICAgMTMyNTIsIDEzMjU3LCAxMzI2MSwgMTMyNjYsIDEzMjcxLCAxMzI3NSwgMTMyODEsIDEzMjg5LCAxMzI5NiwgMTMzMDcsIAotICAgIDEzMzEyLCAxMzMyMiwgMTMzMjYsIDEzMzI5LCAxMzMzNiwgMTMzNDYsIDEzMzU1LCAxMzM2MiwgMTMzNjYsIDEzMzczLCAKLSAgICAxMzM3OSwgMTMzODQsIDEzMzg5LCAxMzM5MywgMTM0MDIsIDEzNDA3LCAxMzQxMywgMTM0MTcsIDEzNDIyLCAxMzQyNiwgCi0gICAgMTM0MzUsIDEzNDQzLCAxMzQ1MSwgMTM0NTgsIDEzNDY2LCAxMzQ3OCwgMTM0ODksIDEzNDk5LCAxMzUwNiwgMTM1MTIsIAotICAgIDEzNTIxLCAxMzUzMiwgMTM1NDEsIDEzNTUzLCAxMzU2NSwgMTM1NzcsIDEzNTg3LCAxMzU5NiwgMTM2MDUsIDEzNjEzLCAKLSAgICAxMzYyMCwgMTM2MjksIDEzNjM3LCAxMzY0MSwgMTM2NDcsIDEzNjUzLCAxMzY1OCwgNzc1MywgMTM2NjIsIDEzNjY0LCAKLSAgICAxMzY2OCwgMTM2NzMsIDEzNjc5LCAxMzY4OCwgMTM2OTIsIDEzNjk4LCAxMzcwNiwgMTM3MTMsIDEzNzIyLCAxMzczMSwgCi0gICAgMTM3NDAsIDEzNzQ5LCAxMzc1OCwgMTM3NjcsIDEzNzc2LCAxMzc4NSwgMTM3OTUsIDEzODA1LCAxMzgxNCwgMTM4MjAsIAotICAgIDEzODI3LCAxMzgzNCwgMTM4NDAsIDEzODU0LCAxMzg2MSwgMTM4NjksIDEzODc4LCAxMzg4NCwgMTM4OTMsIDEzOTAyLCAKLSAgICAxMzkxMywgMTM5MjMsIDEzOTMxLCAxMzkzOCwgMTM5NDYsIDEzOTU1LCAxMzk2OCwgMTM5NzYsIDEzOTgzLCAxMzk5NiwgCi0gICAgMTQwMDIsIDE0MDA4LCAxNDAxOCwgMTQwMjcsIDE0MDM2LCAxNDA0MSwgMTQwNDUsIDE0MDUxLCAxNDA1NywgMTQwNjQsIAotICAgIDg5NjYsIDE0MDY5LCAxNDA3NCwgMTQwODEsIDE0MDg2LCAxMjM3NiwgMTQwOTEsIDE0MDk5LCAxNDEwNSwgMTQxMTAsIAotICAgIDE0MTE4LCAxNDEyNiwgMTQxMzMsIDE0MTQxLCAxNDE0NywgMTQxNTUsIDE0MTYzLCAxNDE2OSwgMTQxNzQsIDE0MTgwLCAKLSAgICAxNDE4NywgMTQxOTMsIDE0MTk4LCAxNDIwMiwgMTQyMTMsIDE0MjIxLCAxNDIyNywgMTQyMzIsIDE0MjQxLCAxNDI0NywgCi0gICAgMTQyNTIsIDE0MjYxLCAxNDI3NSwgMzg1MywgMTQyNzksIDE0Mjg0LCAxNDI4OSwgMTQyOTUsIDE0MzAwLCAxNDMwNSwgCi0gICAgMTQzMDksIDE0MzE0LCAxNDMxOSwgMTQzMjQsIDc3NTIsIDE0MzI5LCAxNDMzNCwgMTQzMzksIDE0MzQ0LCAxNDM0OSwgCi0gICAgMTQzNTMsIDE0MzU4LCAxNDM2MywgMTQzNjgsIDE0MzczLCAxNDM3OSwgMTQzODUsIDE0MzkwLCAxNDM5NCwgMTQzOTksIAotICAgIDE0NDA0LCAxNDQwOSwgOTMwMSwgMTQ0MTQsIDE0NDE5LCAxNDQyNCwgMTQ0MjksIDE0NDM0LCAxNDQ1MSwgMTQ0NjksIAotICAgIDE0NDgxLCAxNDQ5NCwgMTQ1MTEsIDE0NTI3LCAxNDU0NCwgMTQ1NTQsIDE0NTczLCAxNDU4NCwgMTQ1OTUsIDE0NjA2LCAKLSAgICAxNDYxNywgMTQ2MjksIDE0NjQwLCAxNDY1MSwgMTQ2NjgsIDE0Njc5LCAxNDY5MCwgMTQ2OTUsIDkzMDYsIDE0NzAwLCAKLSAgICAxNDcwNCwgMjM4MSwgMTQ3MDgsIDE0NzExLCAxNDcxNywgMTQ3MjUsIDE0NzMzLCAxNDczOCwgMTQ3NDYsIDE0NzU0LCAKLSAgICAxNDc2MSwgMTQ3NjYsIDE0NzcyLCAxNDc3OSwgMTQ3ODcsIDE0Nzk0LCAxNDgwNiwgMTQ4MTQsIDE0ODE5LCAxMTU5NywgCi0gICAgMTQ4MjUsIDE0ODM0LCAxNDg0MywgMTQ4NTEsIDE0ODU4LCAxNDg2NCwgMTQ4NzIsIDE0ODc5LCAxNDg4NSwgMTQ4OTIsIAotICAgIDE0ODk4LCAxNDkwNywgMTQ5MTUsIDE0OTI1LCAxNDkzMiwgMTQ5MzgsIDE0OTQ2LCAxNDk1MiwgMTQ5NjAsIDE0OTY3LCAKLSAgICAxNDk4MCwgMTQ5ODcsIDE0OTk2LCAxNTAwNSwgMTUwMTQsIDE1MDIyLCAxNTAzMiwgMTUwMzksIDE1MDQ0LCAzNTYwLCAKLSAgICAxNTA1MSwgMTUwNTYsIDEzNzIsIDE1MDYwLCAxNDMzMCwgMTUwNjQsIDE1MDcwLCAxNTA3NCwgMTUwODIsIDE1MDk0LCAKLSAgICAxNTA5OSwgMTUxMDYsIDE1MTEyLCAxNTExNywgMTUxMjQsIDE0MzM1LCAxNTEyOCwgMTUxMzIsIDE1MTM2LCAxNDM0MCwgCi0gICAgMTUxNDAsIDE0MzQ1LCAxNTE0NCwgMTUxNTEsIDE1MTU2LCAxNTE2MCwgMTUxNjcsIDE1MTcxLCAxNTE3OSwgMTUxODYsIAotICAgIDE1MTkwLCAxNTE5NywgMTUyMTQsIDE1MjIzLCAxNTIyNywgMTUyMzAsIDE1MjM4LCAxNTI0NCwgMTUyNDksIDM2MzgsIAotICAgIDE1MjUzLCAxNTI1NSwgMTUyNjMsIDE1MjcwLCAxNTI4MCwgMTUyOTIsIDE1Mjk3LCAxNTMwMywgMTUzMDgsIDE1MzEyLCAKLSAgICAxNTMxOCwgMTUzMjMsIDE1MzI5LCAxNTMzMiwgMTUzMzksIDE1MzQ3LCAxNTM1NCwgMTUzNjAsIDE1MzY2LCAxNTM3MSwgCi0gICAgMTUzNzgsIDE1Mzg0LCAxNTM4OSwgMTUzOTYsIDE1NDAwLCAxNTQwNiwgMTU0MTAsIDE1NDE3LCAxNTQyMywgMTU0MjksIAotICAgIDE1NDM3LCAxNTQ0MywgMTU0NDgsIDE1NDU0LCAxNTQ2MiwgMTU0NzAsIDE1NDc2LCAxNTQ4MiwgMTU0ODcsIDE1NDk0LCAKLSAgICAxNTQ5OSwgMTU1MDMsIDE1NTA5LCAxNTUxNCwgMTU1MjEsIDE1NTI2LCAxNTUzMiwgMTU1MzUsIDE1NTQxLCAxNTU0NywgCi0gICAgMTU1NTAsIDE1NTU0LCAxNTU2NiwgMTU1NzIsIDE1NTc3LCAxNTU4NCwgMTU1OTAsIDE1NTk2LCAxNTYwNywgMTU2MTcsIAotICAgIDE1NjI2LCAxNTYzNCwgMTU2NDEsIDE1NjUyLCAxNTY2MiwgMTU2NzIsIDE1NjgwLCAxNTY4MywgMTQzNTksIDE1Njg4LCAKLSAgICAxNTY5MywgMTQzNjQsIDE0NDk5LCAxNTcwMSwgMTU3MTQsIDE1NzI5LCAxNTc0MCwgMTQ1MTYsIDE1NzU4LCAxNTc3MSwgCi0gICAgMTU3ODQsIDE1Nzk1LCAxMDQ5MiwgMTU4MDYsIDE1ODE5LCAxNTgzOCwgMTU4NDksIDE1ODYwLCAxNTg3MSwgMjY0OSwgCi0gICAgMTU4ODQsIDE1ODg4LCAxNTg5NiwgMTU5MTEsIDE1OTI2LCAxNTkzNywgMTU5NDQsIDE1OTUwLCAxNTk1OCwgMTU5NjIsIAotICAgIDE1OTY4LCAxNTk3MSwgMTU5ODEsIDE1OTg5LCAxNTk5NiwgMTYwMDQsIDE2MDE0LCAxNjAxOSwgMTYwMjYsIDE2MDMxLCAKLSAgICAxNjAzOCwgMTYwNDksIDE2MDU5LCAxNjA2NSwgMTYwNzAsIDE2MDc1LCAxNDM2OSwgMTYwNzksIDE2MDg1LCAxNjA5MSwgCi0gICAgMTYwOTYsIDE2MTAxLCAxNjEwNiwgMTYxMTAsIDE0Mzc0LCAxNDM4MCwgMTYxMTQsIDE0Mzg2LCAxNjExOSwgMTYxMjcsIAotICAgIDE2MTM2LCAxNjE0MywgOTE1MCwgMTYxNDcsIDE2MTQ5LCAxNjE1NCwgMTYxNTksIDE2MTY1LCAxNjE3MCwgMTYxNzUsIAotICAgIDE2MTgwLCAxNjE4NSwgMTYxODksIDE2MTk1LCAxNjIwMSwgMTYyMDYsIDE2MjEyLCAxNjIxNywgMTYyMjIsIDE2MjI4LCAKLSAgICAxNjIzMywgMTYyMzgsIDE2MjQzLCAxNjI0OCwgMTYyNTQsIDE2MjU5LCAxNjI2NCwgMTYyNzAsIDE2Mjc2LCAxNjI4MSwgCi0gICAgMTYyODYsIDE2MjkzLCAxNjI5OSwgMTYzMTAsIDE2MzE3LCAxNjMyMiwgMTYzMjYsIDE2MzMwLCAxNjMzMywgMTYzNDEsIAotICAgIDE2MzQ2LCAxNjM1MywgMTYzNjAsIDE2MzY2LCAxNjM3MSwgMTYzNzYsIDE2MzgzLCAxNjM5MywgMTYzOTgsIDE2NDA1LCAKLSAgICAxNjQxMSwgMTY0MjEsIDE2NDMxLCAxNjQ0NSwgMTY0NTksIDE2NDczLCAxNjQ4NywgMTY1MDIsIDE2NTE3LCAxNjUzNCwgCi0gICAgMTY1NTIsIDE2NTY1LCAxNjU3MSwgMTY1NzYsIDE2NTgxLCAxNjU4NSwgMTY1OTAsIDE2NTk4LCAxNjYwNCwgMTY2MDksIAotICAgIDE2NjE0LCAxNjYxOCwgMTY2MjMsIDE2NjI3LCAxNjYzMiwgMTY2MzYsIDE2NjQ3LCAxNjY1MywgMTY2NTgsIDE2NjYzLCAKLSAgICAxNjY3MCwgMTY2NzUsIDE2Njc5LCAxNjY4NCwgMTY2ODksIDE2Njk1LCAxNjcwMiwgMTY3MDgsIDE2NzEzLCAxNjcxNywgCi0gICAgMTY3MjMsIDE2NzI4LCAxNjczMywgMTY3MzcsIDE2NzQzLCAxNjc0OCwgMTY3NTMsIDE2NzYwLCAxNjc2NSwgMTMxMTEsIAotICAgIDE2NzY5LCAxNjc3NCwgMTY3NzgsIDE2NzgzLCAxNjc4OSwgMTY3OTUsIDE2ODAyLCAxNjgxMiwgMTY4MjAsIDE2ODI3LCAKLSAgICAxNjgzMiwgMTY4MzYsIDE2ODQ1LCAxNjg1MywgMTY4NjAsIDE2ODY3LCAxNjg3MywgMTY4NzksIDE2ODg0LCAxNjg4OSwgCi0gICAgMTY4OTUsIDE2OTAwLCAxNjkwNiwgMTY5MTEsIDE2OTE3LCAxNjkyMywgMTY5MzAsIDE2OTM2LCAxNjk0MSwgMTY5NDYsIAotICAgIDkzNDgsIDE2OTU1LCAxNjk1OCwgMTY5NjQsIDE2OTY5LCAxNjk3NCwgMTY5ODQsIDE2OTkxLCAxNjk5NywgMTcwMDIsIAotICAgIDE3MDA3LCAxNzAxMywgMTcwMTgsIDE3MDI0LCAxNzAyOSwgMTcwMzUsIDE3MDQxLCAxNzA0NiwgMTcwNTQsIDE3MDYxLCAKLSAgICAxNzA2NiwgMTcwNzEsIDE3MDc3LCAxNzA4MiwgMTcwODYsIDE3MDk1LCAxNzEwNiwgMTcxMTMsIDE3MTE4LCAxNzEyNiwgCi0gICAgMTcxMzIsIDE3MTM5LCAxNzE0NSwgMTcxNTAsIDE3MTU0LCAxNzE2MCwgMTcxNjUsIDE3MTcwLCAxNzE3NSwgMTQ0MCwgCi0gICAgNzc3NywgMjg3NywgMTcxNzksIDE3MTgzLCAxNzE4NywgMTcxOTEsIDE3MTk1LCAxNzE5OSwgMTcyMDIsIDE3MjA5LCAKLSAgICAxNzIxNywgMTQ0MDAsIDE3MjI0LCAxNzIzNCwgMTcyNDIsIDE3MjQ5LCAxNzI1NywgMTcyNjcsIDE3Mjc2LCAxNzI4OSwgCi0gICAgMTcyOTQsIDE3Mjk5LCAxNzMwNywgMTczMTQsIDEzMjA3LCAxMzIxNiwgMTczMjEsIDE3MzMxLCAxNzM0NiwgMTczNTIsIAotICAgIDE3MzU5LCAxNzM2NiwgMTczNzIsIDE3MzgwLCAxNzM5MCwgMTc0MDAsIDE0NDA1LCAxNzQwOSwgMTc0MTUsIDE3NDIxLCAKLSAgICAxNzQyOSwgMTc0MzcsIDE3NDQyLCAxNzQ1MSwgMTc0NTksIDE3NDcxLCAxNzQ4MSwgMTc0OTEsIDE3NTAxLCAxNzUxMCwgCi0gICAgMTc1MjIsIDE3NTMyLCAxNzU0MiwgMTc1NTMsIDE3NTU4LCAxNzU3MCwgMTc1ODIsIDE3NTk0LCAxNzYwNiwgMTc2MTgsIAotICAgIDE3NjMwLCAxNzY0MiwgMTc2NTQsIDE3NjY2LCAxNzY3OCwgMTc2ODksIDE3NzAxLCAxNzcxMywgMTc3MjUsIDE3NzM3LCAKLSAgICAxNzc0OSwgMTc3NjEsIDE3NzczLCAxNzc4NSwgMTc3OTcsIDE3ODA5LCAxNzgyMCwgMTc4MzIsIDE3ODQ0LCAxNzg1NiwgCi0gICAgMTc4NjgsIDE3ODgwLCAxNzg5MiwgMTc5MDQsIDE3OTE2LCAxNzkyOCwgMTc5NDAsIDE3OTUxLCAxNzk2MywgMTc5NzUsIAotICAgIDE3OTg3LCAxNzk5OSwgMTgwMTEsIDE4MDIzLCAxODAzNSwgMTgwNDcsIDE4MDU5LCAxODA3MSwgMTgwODIsIDE4MDk0LCAKLSAgICAxODEwNiwgMTgxMTgsIDE4MTMwLCAxODE0MiwgMTgxNTQsIDE4MTY2LCAxODE3OCwgMTgxOTAsIDE4MjAyLCAxODIxMywgCi0gICAgMTgyMjUsIDE4MjM3LCAxODI0OSwgMTgyNjEsIDE4MjczLCAxODI4NSwgMTgyOTcsIDE4MzA5LCAxODMyMSwgMTgzMzMsIAotICAgIDE4MzQ0LCAxODM1NiwgMTgzNjgsIDE4MzgwLCAxODM5MiwgMTg0MDQsIDE4NDE2LCAxODQyOCwgMTg0NDAsIDE4NDUyLCAKLSAgICAxODQ2NCwgMTg0NzUsIDE4NDg3LCAxODQ5OSwgMTg1MTEsIDE4NTIzLCAxODUzNiwgMTg1NDksIDE4NTYyLCAxODU3NSwgCi0gICAgMTg1ODgsIDE4NjAxLCAxODYxNCwgMTg2MjYsIDE4NjM5LCAxODY1MiwgMTg2NjUsIDE4Njc4LCAxODY5MSwgMTg3MDQsIAotICAgIDE4NzE3LCAxODczMCwgMTg3NDMsIDE4NzU2LCAxODc2OCwgMTg3ODEsIDE4Nzk0LCAxODgwNywgMTg4MjAsIDE4ODMzLCAKLSAgICAxODg0NiwgMTg4NTksIDE4ODcyLCAxODg4NSwgMTg4OTgsIDE4OTEwLCAxODkyMywgMTg5MzYsIDE4OTQ5LCAxODk2MiwgCi0gICAgMTg5NzUsIDE4OTg4LCAxOTAwMSwgMTkwMTQsIDE5MDI3LCAxOTA0MCwgMTkwNTIsIDE5MDY1LCAxOTA3OCwgMTkwOTEsIAotICAgIDE5MTA0LCAxOTExNywgMTkxMzAsIDE5MTQzLCAxOTE1NiwgMTkxNjksIDE5MTgyLCAxOTE5NCwgMTkyMDcsIDE5MjIwLCAKLSAgICAxOTIzMywgMTkyNDYsIDE5MjU5LCAxOTI3MiwgMTkyODUsIDE5Mjk4LCAxOTMxMSwgMTkzMjQsIDE5MzM2LCAxOTM0NywgCi0gICAgMTkzNjAsIDE5MzczLCAxOTM4NiwgMTkzOTksIDE5NDEyLCAxOTQyNSwgMTk0MzgsIDE5NDUxLCAxOTQ2NCwgMTk0NzcsIAotICAgIDE5NDg5LCAxOTUwMiwgMTk1MTUsIDE5NTI4LCAxOTU0MSwgMTk1NTQsIDE5NTY3LCAxOTU4MCwgMTk1OTMsIDE5NjA2LCAKLSAgICAxOTYxOSwgMTk2MzEsIDE5NjQ0LCAxOTY1NywgMTk2NzAsIDE5NjgzLCAxOTY5NiwgMTk3MDksIDE5NzIyLCAxOTczNSwgCi0gICAgMTk3NDgsIDE5NzYxLCAxOTc3MywgMTk3ODYsIDE5Nzk5LCAxOTgxMiwgMTk4MjUsIDE5ODM4LCAxOTg1MSwgMTk4NjQsIAotICAgIDE5ODc3LCAxOTg5MCwgMTk5MDMsIDE5OTE1LCAxOTkyOCwgMTk5NDEsIDE5OTU0LCAxOTk2NywgMTk5ODAsIDE5OTkzLCAKLSAgICAyMDAwNiwgMjAwMTksIDIwMDMyLCAyMDA0NSwgMjAwNTcsIDIwMDcwLCAyMDA4MywgMjAwOTYsIDIwMTA5LCAyMDEyMiwgCi0gICAgMjAxMzUsIDIwMTQ4LCAyMDE2MSwgMjAxNzQsIDIwMTg3LCAyMDE5OSwgMjAyMTIsIDIwMjI1LCAyMDIzOCwgMjAyNTEsIAotICAgIDIwMjY0LCAyMDI3NywgMjAyOTAsIDIwMzAzLCAyMDMxNiwgMjAzMjksIDIwMzQxLCAyMDM1NCwgMjAzNjcsIDIwMzgwLCAKLSAgICAyMDM5MywgMjA0MDYsIDIwNDE5LCAyMDQzMiwgMjA0NDUsIDIwNDU4LCAyMDQ3MSwgMjA0ODMsIDIwNDk2LCAyMDUwOSwgCi0gICAgMjA1MjIsIDIwNTM1LCAyMDU0OCwgMjA1NjEsIDIwNTc0LCAyMDU4NywgMjA2MDAsIDIwNjEzLCAyMDYyNSwgMjA2MzgsIAotICAgIDIwNjUxLCAyMDY2NCwgMjA2NzcsIDIwNjkwLCAyMDcwMywgMjA3MTYsIDIwNzI5LCAyMDc0MiwgMjA3NTUsIDIwNzY3LCAKLSAgICAyMDc3OCwgMjA3ODYsIDIwNzk0LCAyMDgwMSwgMjA4MDcsIDIwODExLCAyMDgxNywgMjA4MjMsIDIwODMxLCAyMDgzNywgCi0gICAgMjA4NDIsIDIwODQ2LCAyMDg1NSwgOTE1NSwgMjA4NjYsIDIwODczLCAyMDg4MSwgMjA4ODgsIDIwODk1LCAxMDk0OCwgCi0gICAgMjA5MDIsIDIwOTExLCAyMDkxNiwgMjA5MjEsIDc4MDUsIDIwOTI4LCAyMDkzMywgMjA5MzYsIDIwOTQxLCAyMDk0OSwgCi0gICAgMjA5NTYsIDIwOTYzLCAyMDk3MCwgMjA5NzYsIDIwOTg1LCAyMDk5NCwgMjEwMDAsIDIxMDA5LCAyMTAxMywgMjEwMTksIAotICAgIDIxMDI0LCAyMTAzNCwgMjEwNDEsIDIxMDQ3LCAyMTA1NSwgMjEwNjEsIDIxMDY4LCAyMTA3OCwgMjEwODcsIDIxMDkxLCAKLSAgICAyMTA5OCwgMjExMDIsIDIxMTA3LCAyMTExMywgMjExMjEsIDIxMTI1LCAyMTEzNSwgMTQ0MTUsIDIxMTQ0LCAyMTE1MCwgCi0gICAgMjExNTQsIDIxMTYzLCAxNDQyMCwgMjExNjksIDIxMTc2LCAyMTE4NywgMjExOTUsIDIxMjA0LCAyMTIxMiwgODkzMSwgCi0gICAgMjEyMjAsIDIxMjI1LCAyMTIzMSwgMjEyMzYsIDIxMjQwLCAyMTI0NCwgMjEyNDgsIDk2MzksIDIxMjUzLCAyMTI2MSwgCi0gICAgMjEyNjgsIDIxMjc3LCAyMTI4NCwgMjEyOTEsIDEwODc4LCAyMTI5OCwgMjEzMDQsIDIxMzA4LCAyMTMxNCwgMjEzMjEsIAotICAgIDIxMzI3LCAyMTMzNSwgMjEzNDEsIDIxMzQ4LCAyMTM1NCwgMjEzNjAsIDIxMzY5LCAyMTM3MywgMjEzODEsIDIxMzkwLCAKLSAgICAyMTM5NywgMjE0MDIsIDIxNDA2LCAyMTQxNywgMjE0MjIsIDIxNDI3LCAyMTQzMiwgMjE0NDUsIDc5OTUsIDIxNDQ5LCAKLSAgICAyMTQ1NSwgMjE0NjMsIDIxNDY3LCAyMTQ3NCwgMjE0ODMsIDIxNDg4LCAxNDY5MSwgMjE0OTYsIDIxNTAwLCAyMTUxMiwgCi0gICAgMjE1MTcsIDIxNTIxLCAyMTUyNCwgMjE1MzAsIDIxNTM2LCAyMTU0MSwgMjE1NDUsIDIxNTQ4LCAyMTU1OSwgMjE1NjQsIAotICAgIDkzODMsIDIxNTcxLCAyMTU3NiwgOTM4OCwgMjE1ODEsIDIxNTg2LCAyMTU5MSwgMjE1OTYsIDIxNjAxLCAyMTYwNiwgCi0gICAgMjE2MTEsIDIxNjE2LCAyMTYyMSwgMjE2MjYsIDIxNjMxLCAyMTYzNiwgMjE2NDIsIDIxNjQ3LCAyMTY1MiwgMjE2NTcsIAotICAgIDIxNjYyLCAyMTY2NywgMjE2NzIsIDIxNjc3LCAyMTY4MiwgMjE2ODcsIDIxNjkzLCAyMTY5OSwgMjE3MDQsIDIxNzA5LCAKLSAgICAyMTcxNCwgMjE3MTksIDIxNzI0LCAyMTcyOSwgMjE3MzQsIDIxNzM5LCAyMTc0NCwgMjE3NTAsIDIxNzU1LCAyMTc2MCwgCi0gICAgMjE3NjUsIDIxNzcxLCAyMTc3NywgMjE3ODIsIDIxNzg3LCAyMTc5MiwgMjE3OTcsIDIxODAyLCAyMTgwNywgMjE4MTIsIAotICAgIDIxODE3LCAyMTgyMywgMjE4MjgsIDIxODMzLCAyMTgzOCwgMjE4NDMsIDIxODQ5LCAyMTg1NCwgMjE4NTksIDIxODYzLCAKLSAgICAxMzY4LCAxMjksIDIxODcxLCAyMTg3NSwgMjE4NzksIDIxODgzLCAyMTg4OCwgMjE4OTIsIDEzMTE3LCAxMjQ3NiwgMjE4OTYsIAotICAgIDIxOTAxLCAyMTkwNSwgMjE5MTAsIDIxOTE0LCAyMTkxOSwgMjE5MjMsIDIxOTI5LCAyMTkzNCwgMjE5MzgsIDIxOTQyLCAKLSAgICAyMTk1MCwgMjE5NTQsIDIxOTU4LCAyMTk2MywgMjE5NjgsIDIxOTcyLCAyMTk3OCwgMjE5ODMsIDIxOTg3LCAyMTk5MiwgCi0gICAgMjE5OTcsIDIyMDAxLCAyMjAwOCwgMjIwMTUsIDIyMDIyLCAyMjAyNiwgMjIwMzAsIDIyMDM1LCAyMjAzOSwgMjIwNDIsIAotICAgIDIyMDQ4LCAyMjA2MSwgMjIwNjYsIDIyMDc1LCAyMjA4MCwgOTQyOCwgMjIwODUsIDIyMDg4LCAyNzEyLCAyNzE3LCAyMjA5MiwgCi0gICAgMjIwOTgsIDIyMTA0LCA3MjA5LCAyMjEwOSwgMjIxMTQsIDIyMTE5LCAyMjEyNSwgMjIxMzAsIDEzOTA5LCAyMjEzNSwgCi0gICAgMjIxNDAsIDIyMTQ1LCAyMjE1MCwgMjIxNTYsIDIyMTYxLCAyMjE2NiwgMjIxNzIsIDIyMTc3LCAyMjE4MSwgMjIxODYsIAotICAgIDIyMTkxLCAyMjE5NiwgMjIyMDEsIDIyMjA1LCAyMjIxMCwgMjIyMTQsIDIyMjE5LCAyMjIyNCwgMjIyMjksIDIyMjM0LCAKLSAgICAyMjIzOCwgMjIyNDMsIDIyMjQ3LCAyMjI1MiwgMjIyNTcsIDIyMjYyLCAyMjI2NywgMjg4NiwgMjIxODIsIDIyMjcxLCAKLSAgICAyMjI3OSwgMjIyODYsIDk3MzMsIDIyMjk4LCAyMjMwNiwgMjIxODcsIDIyMzEzLCAyMjMxOCwgMjIzMjYsIDIyMTkyLCAKLSAgICAyMjMzMSwgMjIzMzYsIDIyMzQ0LCAyMjM0OSwgMjIxOTcsIDIyMzU0LCAyMjM1OSwgMjIzNjMsIDIyMzY5LCAyMjM3NywgCi0gICAgMjIzODAsIDIyMzg3LCAyMjM5MSwgMjIzOTUsIDIyNDAxLCAyMjQwOCwgMjI0MTMsIDg5NTgsIDE3MjcsIDE3MzIsIDIyNDE3LCAKLSAgICAyMjQyMywgMjI0MjksIDIyNDM0LCAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTQsIDIyNDU4LCAyMjQ2MiwgCi0gICAgMjI0NjYsIDIyNDY5LCAyMjQ3NSwgMjI0ODIsIDIyNDkwLCAyMjQ5NiwgMjI1MDIsIDIyNTA3LCAyMjUxMiwgMjI1MTYsIAotICAgIDEzODI5LCAxMzgzNiwgMjI1MjEsIDIyNTMzLCAyMjUzNiwgMjI1NDMsIDE2MzYyLCAyMjU1MCwgMjI1NTgsIDIyNTY5LCAKLSAgICAyMjU3OCwgMjI1OTEsIDIyNjAxLCAyMjYxNSwgMjI2MjcsIDIyNjQxLCAyMjY1MywgMjI2NjMsIDIyNjc1LCAyMjY4MSwgCi0gICAgMjI2OTYsIDIyNzIwLCAyMjczOCwgMjI3NTcsIDIyNzcwLCAyMjc4NCwgMjI4MDIsIDIyODE4LCAyMjgzNSwgMjI4NTMsIAotICAgIDIyODY0LCAyMjg4MywgMjI5MDAsIDIyOTIwLCAyMjkzOCwgMjI5NTAsIDIyOTY0LCAyMjk3OCwgMjI5OTAsIDIzMDA3LCAKLSAgICAyMzAyNiwgMjMwNDQsIDIzMDU2LCAyMzA3NCwgMjMwOTMsIDE0NTU5LCAyMzEwNiwgMjMxMjYsIDIzMTM4LCAxMDUyMywgCi0gICAgMjMxNTAsIDIzMTU1LCAyMzE2MCwgMjMxNjUsIDIzMTcxLCAyMzE3NiwgMjMxODAsIDIzMTg3LCAyMzk4LCAyMzE5MSwgCi0gICAgMjMxOTcsIDIzMjAxLCAyMzIwNCwgMjMyMDgsIDIzMjE2LCAyMzIyMiwgMjIyMTUsIDIzMjI2LCAyMzIzNSwgMjMyNDYsIAotICAgIDIzMjUyLCAyMzI1OCwgMjMyNjcsIDIzMjc1LCAyMzI4MiwgMjMyODcsIDIzMjkxLCAyMzI5OCwgMjMzMDQsIDIzMzEzLCAKLSAgICAyMzMyMSwgMjMzMjgsIDIzMzM4LCAyMzM0NywgMjMzNTcsIDIzMzYyLCAyMzM3MSwgMjMzODAsIDIzMzkxLCAyMzQwMiwgCi0gICAgMzk2MywgMjM0MTIsIDIzNDE2LCAyMzQyNiwgMjM0MzQsIDIzNDQ0LCAyMzQ1NSwgMjM0NjAsIDIzNDcwLCAyMzQ3OCwgCi0gICAgMjM0ODUsIDIzNDkxLCAyMzQ5OCwgMjM1MDMsIDIyMjI1LCAyMzUwNywgMjM1MTYsIDIzNTIwLCAyMzUyMywgMjM1MjgsIAotICAgIDIzNTM1LCAyMzU0NCwgMjM1NTIsIDIzNTYwLCAyMzU3MCwgMjM1NzksIDIzNTg1LCAyMzU5MSwgMjIyMzAsIDIyMjM1LCAKLSAgICAyMzU5NSwgMjM2MDUsIDIzNjE1LCAyMzYyNSwgMjM2MzMsIDIzNjQwLCAyMzY1MCwgMjM2NTgsIDIzNjY2LCAyMzY3MiwgCi0gICAgMjM2ODAsIDkzMCwgMjM2ODksIDE0NzUwLCA1NDIsIDIzNzAzLCAyMzcxMiwgMjM3MjAsIDIzNzMxLCAyMzc0MiwgMjM3NTIsIAotICAgIDIzNzYxLCAyMzc3MywgMjM3ODIsIDIzNzkxLCAyMzc5NywgMjM4MDYsIDIzODE1LCAyMzgyNSwgMjM4MzMsIDIzODQxLCAKLSAgICA5MzYwLCAyMzg0NywgMjM4NTAsIDIzODU0LCAyMzg1OSwgMjM4NjQsIDk4NDgsIDIyMjQ4LCAyMjI1MywgMjM4NzIsIAotICAgIDIzODc4LCAyMzg4NCwgMjM4ODksIDIzODk0LCAyMzg5OCwgMjM5MDYsIDIzOTEyLCAyMzkxOCwgMjM5MjIsIDM1MjUsIAotICAgIDIzOTMwLCAyMzkzNSwgMjM5NDAsIDIzOTQ0LCAyMzk0OCwgOTkyOCwgMjM5NTUsIDIzOTYzLCAyMzk3NywgMjM5ODQsIAotICAgIDIzOTkwLCA5OTM3LCA5OTQzLCAyMzk5OCwgMjQwMDYsIDI0MDEzLCAyNDAxOCwgMjQwMjMsIDIyMjU4LCAyNDAyOSwgCi0gICAgMjQwNDAsIDI0MDQ0LCAyNDA0OSwgMjYwMSwgMjQwNTQsIDI0MDY1LCAyNDA3MSwgMjQwNzYsIDI0MDgwLCAyNDA4NCwgCi0gICAgMjQwODcsIDI0MDk0LCAyNDEwMSwgMjQxMDgsIDI0MTE0LCAyNDExOCwgMjIyNjMsIDI0MTIzLCAyNDEyNywgMjQxMzEsIAotICAgIDEwMzcsIDI0MTM2LCAyNDE0MSwgMjQxNDYsIDI0MTUxLCAyNDE1NiwgMjQxNjEsIDI0MTY2LCAyNDE3MSwgMjQxNzYsIAotICAgIDI0MTgxLCAyNDE4NiwgMjQxOTEsIDI0MTk2LCAyNDIwMSwgMjQyMDcsIDI0MjEyLCAyNDIxNywgMjQyMjIsIDI0MjI3LCAKLSAgICAyNDIzMiwgMjQyMzcsIDI0MjQzLCAyNDI0OCwgMjQyNTMsIDI0MjU4LCAyNDI2MywgMjQyNjgsIDI0MjczLCAyNDI3OCwgCi0gICAgMjQyODQsIDI0MjkwLCAyNDI5NSwgMjQzMDEsIDI0MzA2LCAyNDMxMSwgNSwgMjQzMTcsIDI0MzIxLCAyNDMyNSwgMjQzMjksIAotICAgIDI0MzM0LCAyNDMzOCwgMjQzNDIsIDI0MzQ2LCAyNDM1MCwgMjQzNTUsIDI0MzU5LCAyNDM2NCwgMjQzNjgsIDI0MzcxLCAKLSAgICAyNDM3NSwgMjQzODAsIDI0Mzg0LCAyNDM4OSwgMjQzOTMsIDI0Mzk3LCAyNDQwMSwgMjQ0MDYsIDI0NDEwLCAyNDQxNCwgCi0gICAgMjQ0MjQsIDI0NDI5LCAyNDQzMywgMjQ0MzcsIDI0NDQyLCAyNDQ0NywgMjQ0NTYsIDI0NDYxLCAyNDQ2NiwgMjQ0NzAsIAotICAgIDI0NDc0LCAyNDQ4NywgMjQ0OTksIDI0NTA4LCAyNDUxNywgMjQ1MjMsIDI0NTI4LCAyNDUzMiwgMjQ1MzYsIDI0NTQ2LCAKLSAgICAyNDU1NSwgMjQ1NjMsIDI0NTY5LCAyNDU3NCwgMjQ1NzgsIDI0NTg1LCAyNDU5NSwgMjQ2MDQsIDI0NjEyLCAyNDYyMCwgCi0gICAgMjQ2MjcsIDI0NjM1LCAyNDY0NCwgMjQ2NTMsIDI0NjYxLCAyNDY2NiwgMjQ2NzAsIDI0Njc0LCAyNDY3NywgMjQ2NzksIAotICAgIDI0NjgzLCAyNDY4NywgMjQ2OTIsIDI0Njk3LCAyNDcwMSwgMjQ3MDUsIDI0NzA4LCAyNDcxMiwgMjQ3MTUsIDI0NzE5LCAKLSAgICAyNDcyMiwgMjQ3MjUsIDI0NzI5LCAyNDczNSwgMjQ3MzksIDI0NzQzLCAyNDc0NywgMjQ3NTIsIDI0NzU3LCAyNDc2MiwgCi0gICAgMjQ3NjYsIDI0NzY5LCAyNDc3NCwgMjQ3ODAsIDI0Nzg1LCAyNDc5MSwgMjQ3OTYsIDI0ODAwLCAyNDgwNCwgMjQ4MDgsIAotICAgIDI0ODEzLCAyNDgxNywgMjQ4MjIsIDI0ODI2LCAyNDgzMCwgMjQ4MzcsIDI0ODQxLCAyNDg0NCwgMjQ4NDgsIDI0ODU0LCAKLSAgICAyNDg2MCwgMjQ4NjQsIDI0ODY4LCAyNDg3MywgMjQ4ODAsIDI0ODg2LCAyNDg5MCwgMjQ4OTksIDI0OTAzLCAyNDkwNywgCi0gICAgMjQ5MTAsIDI0OTE2LCAyNDkyMSwgMjQ5MjcsIDE0ODksIDE3OTEsIDI0OTMyLCAyNDkzNywgMjQ5NDIsIDI0OTQ3LCAKLSAgICAyNDk1MiwgMjQ5NTcsIDI0OTYyLCAyMTQ4LCAyMTk0LCAyNDk2NywgMjQ5NzAsIDI0OTc0LCAyNDk3OCwgMjQ5ODMsIAotICAgIDI0OTg3LCAyNDk5MSwgMjQ5OTQsIDI0OTk5LCAyNTAwNCwgMjUwMDgsIDI1MDExLCAyNTAxNiwgMjUwMjAsIDI1MDI1LCAKLSAgICAyNTAyOSwgMTQ3NjIsIDI1MDM0LCAyNTAzNywgMjUwNDAsIDI1MDQ0LCAyNTA0OSwgMjUwNTMsIDI1MDY2LCAyNTA3MCwgCi0gICAgMjUwNzMsIDI1MDgxLCAyNTA5MCwgMjUwOTcsIDI1MTAyLCAyNTEwOCwgMjUxMTQsIDI1MTIyLCAyNTEyOSwgMjUxMzYsIAotICAgIDI1MTQwLCAyNTE0NCwgMjUxNDgsIDI1MTUzLCAyNTE1OCwgMjUxNjIsIDI1MTcwLCAyNTE3NSwgMjUxODcsIDI1MTk4LCAKLSAgICAyNTIwMywgMjUyMDcsIDI1MjExLCAyNTIxNywgMjUyMjIsIDI1MjI3LCAyNTIzMSwgMjUyMzUsIDI1MjM4LCAyNTI0NCwgCi0gICAgNzkxNSwgMjMxNiwgMjUyNDgsIDI1MjUzLCAyNTI2OSwgOTQ3NSwgMjUyODksIDI1Mjk4LCAyNTMxNCwgMjUzMTgsIDI1MzIxLCAKLSAgICAyNTMyNywgMjUzMzcsIDI1MzQzLCAyNTM1MiwgMjUzNjcsIDI1Mzc5LCAyNTM5MCwgMjUzOTgsIDI1NDA3LCAyNTQxMywgCi0gICAgMjU0MjIsIDI1NDMyLCAyNTQ0MywgMjU0NTQsIDI1NDYzLCAyNTQ3MCwgMjU0NzksIDI1NDg3LCAyNTQ5NCwgMjU1MDIsIAotICAgIDI1NTA5LCAyNTUxNiwgMjU1MjksIDI1NTM2LCAyNTU0MiwgMjU1NDcsIDI1NTU2LCAyNTU2MiwgMjU1NjcsIDI1NTc1LCAKLSAgICAyNTU4MiwgMjM0MzYsIDI1NTk0LCAyNTYwNiwgMjU2MjAsIDI1NjI4LCAyNTYzNSwgMjU2NDcsIDI1NjU2LCAyNTY2NSwgCi0gICAgMjU2NzMsIDI1NjgxLCAyNTY4OSwgMjU2OTYsIDI1NzA1LCAyNTcxMywgMjU3MjMsIDI1NzMyLCAyNTc0MiwgMjU3NTEsIAotICAgIDI1NzYwLCAyNTc2OCwgMjU3NzMsIDI1Nzc3LCAyNTc4MCwgMjU3ODQsIDI1Nzg4LCAyNTc5MiwgMjU3OTYsIDI1ODAwLCAKLSAgICAyNTgwNiwgMjU4MTIsIDI1ODIwLCAxNDgwNywgMjU4MjcsIDI1ODMyLCAyNTgzOSwgMjU4NDUsIDI1ODUyLCAxNDgxNSwgCi0gICAgMjU4NTksIDI1ODYyLCAyNTg3NCwgMjU4ODIsIDI1ODg4LCAyNTg5MywgMjU4OTcsIDk4NzgsIDI1OTA4LCAyNTkxOCwgCi0gICAgMjU5MjcsIDI1OTM0LCAyNTkzOCwgMTQ4MjAsIDI1OTQxLCAyNTk0OCwgMjU5NTIsIDI1OTU4LCAyNTk2MSwgMjU5NjgsIAotICAgIDI1OTc0LCAyNTk4MSwgMjU5ODcsIDI1OTkxLCAyNTk5NiwgMjYwMDAsIDI2MDA5LCAyNjAxNiwgMjYwMjIsIDc5NTYsIAotICAgIDI2MDI5LCAyNjAzNywgMjYwNDQsIDI2MDUwLCAyNjA1NSwgMjYwNjEsIDI2MDY3LCAyNjA3NSwgMjYwNzksIDI2MDgyLCAKLSAgICAyNjA4NCwgMjU3ODUsIDI2MDkzLCAyNjA5OSwgMjYxMDksIDI2MTE0LCAyNjEyMSwgMjYxMjcsIDI2MTMyLCAyNjEzNywgCi0gICAgMjYxNDIsIDI2MTQ2LCAyNjE1MSwgMjYxNTgsIDI2MTY3LCAyNjE3MSwgMjYxNzgsIDI2MTg3LCAyNjE5MywgMjYxOTgsIAotICAgIDI2MjA0LCAyNjIwOSwgMjYyMTYsIDI2MjI3LCAyNjIzMiwgMjYyMzYsIDI2MjQ2LCAyNjI1MiwgMjYyNTYsIDI2MjYxLCAKLSAgICAyNjI3MSwgMjYyODAsIDI2Mjg0LCAyNjI5MSwgMjYyOTksIDI2MzA2LCAyNjMxMiwgMjYzMTcsIDI2MzI1LCAyNjMzMiwgCi0gICAgMjYzNDQsIDI2MzUzLCAyNjM1NywgMTMwNTMsIDI2MzY1LCAyNjM3NSwgMjYzNzksIDI1MDc3LCAyNjM5MCwgMjYzOTUsIAotICAgIDI2Mzk5LCAyNjQwNiwgMjY0MTMsIDIxOTc0LCAyNTcxMCwgMjY0MTgsIDI2NDIyLCAyNjQyNSwgMjI4NzAsIDI2NDMwLCAKLSAgICAyNjQ0NCwgMjY0NjAsIDI2NDc4LCAyNjQ5NywgMjY1MTQsIDI2NTMyLCAyMjg4OSwgMjY1NDksIDI2NTY5LCAyMjkwNiwgCi0gICAgMjY1ODEsIDI2NTkzLCAxNTc0NSwgMjY2MDUsIDIyOTI2LCAyNjYxOSwgMjY2MzEsIDEwNTM2LCAyNjY0NSwgMjY2NTAsIAotICAgIDI2NjU1LCAyNjY2MCwgMjY2NjYsIDI2NjcyLCAyNjY3OCwgMjY2ODIsIDI2Njg5LCAyNjY5NCwgMjY3MDQsIDI2NzEwLCAKLSAgICAxMDE4MywgMjY3MTYsIDI2NzE4LCAyNjcyMywgMjY3MzEsIDI2NzM1LCAyNjE1NCwgMjY3NDEsIDI2NzQ4LCAxMTUyNCwgCi0gICAgMTE1MzQsIDI2NzU1LCAyNjc2NSwgMjY3NzAsIDI2Nzc0LCAyNjc3NywgMjY3ODMsIDI2NzkxLCAyNjgwMywgMjY4MTMsIAotICAgIDI2ODI5LCAyNjg0MiwgMjY4NTYsIDE1NzYzLCAyNjg3MCwgMjY4NzcsIDI2ODgxLCAyNjg4NCwgMjY4ODksIDI2ODkzLCAKLSAgICAyNjkwMCwgMjY5MDcsIDI2OTE3LCAyNjkyMiwgMjY5MjcsIDI2OTMyLCAyNjk0MCwgMjY5NDgsIDI2OTU3LCAyNjk2MiwgCi0gICAgOTU3MiwgMjY5NjYsIDI2OTY5LCAyNjk3MiwgMjY5NzcsIDI2OTg0LCAyNjk4OSwgMjcwMDUsIDI3MDEzLCAyNzAyMSwgCi0gICAgOTQyMywgMjcwMjksIDI3MDM0LCAyNzAzOCwgMjcwNDQsIDI3MDUwLCAyNzA1MywgMjcwNTksIDI3MDcxLCAyNzA3OSwgCi0gICAgMjcwODYsIDI3MDkyLCAyNzA5OSwgMjcxMTAsIDI3MTI0LCAyNzEzNywgMjcxNDYsIDI3MTU1LCAyNzE2NywgMjcxNzgsIAotICAgIDI3MTg4LCAyNzE5NywgMjcyMDYsIDI3MjE0LCAyNzIyNSwgNzkzOCwgMjcyMzIsIDI3MjM4LCAyNzI0MywgMjcyNDksIAotICAgIDI3MjU2LCAyNzI2NiwgMjcyNzYsIDI3Mjg1LCAyNzI5MSwgMjcyOTgsIDI3MzAzLCAyNzMxMCwgMjczMTgsIDI3MzI2LCAKLSAgICAyNzMzOCwgNjI0NiwgMjczNDUsIDI3MzU0LCAyNzM2MiwgMjczNjgsIDI3Mzc0LCAyNzM3OSwgMjczODMsIDI3Mzg2LCAKLSAgICAyNzM5MiwgMjczOTksIDI3NDA0LCAyNzQwOSwgMjc0MTMsIDI3NDI1LCAyNzQzNiwgMjc0NDUsIDI3NDUzLCAxNDk0NywgCi0gICAgMjc0NTgsIDI3NDY0LCAyNzQ3MCwgMTE1MTcsIDg2MzUsIDI3NDc1LCAyNzQ3OSwgMjc0ODMsIDI3NDg2LCAyNzQ4OSwgCi0gICAgMjc0OTUsIDI3NTAzLCAyNzUxMSwgMjc1MTUsIDI3NTE5LCAyNzUyNCwgMjc1MjcsIDI3NTM2LCAyNzU0MCwgMjc1NDgsIAotICAgIDI3NTU5LCAyNzU2MywgMjc1NjksIDI3NTc1LCAyNzU3OSwgMjc1ODUsIDI3NTkzLCAyNzYxNSwgMjc2MzksIDI3NjQ2LCAKLSAgICAyNzY1MywgMjc2NTksIDI3NjY3LCAyNzY3MywgMjc2NzgsIDI3Njg5LCAyNzcwNywgMjc3MTQsIDI3NzIyLCAyNzcyNiwgCi0gICAgMjc3MzUsIDI3NzQ4LCAyNzc1NiwgMjc3NjgsIDI3Nzc5LCAyNzc4OSwgMjc4MDMsIDI3ODEyLCAyNzgyMCwgMjc4MzIsIAotICAgIDk0OTIsIDI3ODQzLCAyNzg1NCwgMjc4NjYsIDI3ODc2LCAyNzg4NSwgMjc4OTAsIDI3ODk0LCAyNzkwMiwgMjc5MTIsIAotICAgIDI3OTE3LCAyNzkyMSwgMjc5MjQsIDI3OTI3LCAyNzkzNSwgMjc5NDMsIDI3OTUyLCAyNzk2MiwgMjc5NzEsIDI3OTc3LCAKLSAgICAyNzk5MSwgMjY2MywgMjgwMTMsIDI4MDI0LCAyODAzMywgMjgwNDMsIDI4MDU1LCAyODA2NCwgMjgwNzMsIDI4MDgzLCAKLSAgICAyODA5MSwgMjgwOTksIDI4MTA4LCAyODExMywgMjgxMjQsIDI4MTI5LCAyODE0MCwgMjgxNDQsIDI4MTU0LCAyODE2MywgCi0gICAgMjgxNzEsIDI4MTgxLCAyODE5MSwgMjgxOTksIDI4MjA4LCAyODIxNSwgMjgyMjMsIDI4MjMwLCAyODIzOSwgMjgyNDMsIAotICAgIDI4MjUxLCAyODI1OCwgMjgyNjYsIDI4MjczLCAyODI4NCwgMjgyOTksIDI4MzA2LCAyODMxMiwgMjgzMjIsIDI4MzMxLCAKLSAgICAyODMzNywgMjgzNDEsIDI4MzQ4LCAyODM1MiwgMTQwMzEsIDI4MzU4LCAyODM2MiwgMjgzNjcsIDI4Mzc0LCAyODM3OCwgCi0gICAgMjgzODIsIDI4MzkwLCAyODM5OCwgMjg0MDQsIDI4NDEzLCAyODQyMCwgMjg0MjUsIDI4NDMwLCAyODQ0MCwgMjM1MDUsIAotICAgIDI4NDQ0LCAyODQ0NywgMjg0NTIsIDI4NDU3LCAyODQ2MiwgMjg0NjcsIDI4NDcyLCAyODQ3NywgMjg0ODIsIDI4NDg3LCAKLSAgICAyODQ5MywgMjg0OTgsIDI4NTAzLCAyODUwOSwgMTIxOCwgNzA0LCAyODUxNCwgMjg1MjMsIDIzNjQsIDI4NTMwLCAyODUzNSwgCi0gICAgMjg1MzksIDI4NTQ1LCAxMjY3LCA1NDYsIDMxOCwgMjg1NTAsIDI4NTU5LCAyODU2NywgMjg1NzYsIDI4NTg0LCAyODU5NSwgCi0gICAgMjg2MDQsIDI4NjEyLCAyODYxNiwgMjg2MTksIDI4NjI3LCAyODYzNSwgMjg2NDAsIDE0Nzc1LCAyODY0NiwgMjg2NTIsIAotICAgIDI4NjU4LCA1ODcyLCAyODY2MywgMjg2NjcsIDI4NjczLCAyODY3NywgMjg2ODQsIDE0NTUsIDI4NjkwLCAyODY5NywgOTU3OSwgCi0gICAgMjg3MDEsIDI4NzExLCAyODcxOSwgMjg3MjUsIDI4NzM0LCAyODc0MiwgMjg3NDgsIDI4NzU2LCAyODc2MywgMTExMTAsIAotICAgIDI4NzY5LCAyODc3NiwgMjg3ODEsIDI4Nzg4LCAxNDk2LCAyMTQ3LCAyODc5NCwgMjg4MDAsIDI4ODA3LCAyODgxOCwgCi0gICAgMjg4MjksIDI4ODM3LCAyODg0NCwgMjg4NTQsIDI4ODYzLCAyODg3MSwgMjg4ODAsIDI4ODg3LCAyODg5NCwgMjg5MDcsIAotICAgIDI4OTE4LCAxMjcyLCAyODkzNywgMjg5NDIsIDI4OTUwLCAzNTc1LCAyODk1NCwgMjg5NTksIDI4OTYzLCAxNDU5LCAyNDcwNiwgCi0gICAgMjg5NzMsIDI4OTc3LCAyODk4MiwgMjg5ODYsIDM0OTMsIDI4OTkyLCAyOTAwMCwgMjkwMDcsIDI5MDE4LCAyOTAyNiwgCi0gICAgMjkwMzQsIDM1NzYsIDI3OSwgMjkwMzksIDI5MDQ3LCAyOTA1NSwgMjkwNjIsIDI5MDY4LCAyOTA3MywgMjIxNiwgMjkwODAsIAotICAgIDI5MDg2LCAyNTk5MiwgMjYyMjIsIDI5MDkyLCAxMDYsIDI5MDk2LCAyOTEwMCwgMjkxMDYsIDYxNSwgOTMyOCwgMjkxMTEsIAotICAgIDI5MTE4LCAyOTEyNCwgMjMyNywgMjkxMjgsIDI5MTMyLCAxNTE4NywgMjkxMzUsIDI5MTQwLCAyOTE0NywgMjkxNTMsIAotICAgIDI5MTU4LCAyOTE2NiwgMjkxNzMsIDI5MTc5LCAyMjM1MSwgMjkxODMsIDI5MTg3LCAzNjQ2LCAxNjYyNSwgMjkxOTEsIAotICAgIDI5MTk2LCAyOTE5OSwgMjkyMDcsIDI5MjE1LCAyOTIyMCwgMjkyMjMsIDI5MjMwLCAyOTI0MCwgMjkyNTIsIDI5MjU3LCAKLSAgICAyOTI2MSwgMjkyNjksIDI5Mjc2LCAyOTI4MiwgMjkyODksIDI5Mjk2LCAyOTI5OSwgMjkzMDMsIDI5MzA3LCAxNDYzLCAKLSAgICAyOTMxNywgMjkzMTksIDI5MzI0LCAyOTMzMCwgMjkzMzYsIDI5MzQxLCAyOTM0NiwgMjkzNTEsIDI5MzU2LCAyOTM2MSwgCi0gICAgMjkzNjYsIDI5MzcxLCAyOTM3NiwgMjkzODEsIDI5Mzg2LCAyOTM5MSwgMjkzOTYsIDI5NDAxLCAyOTQwNiwgMjk0MTIsIAotICAgIDI5NDE4LCAyOTQyNCwgMjk0MzAsIDI5NDM1LCAyOTQ0MCwgMjk0NDUsIDI5NDUxLCAyOTQ1NiwgMjk0NjEsIDI5NDY2LCAKLSAgICAyOTQ3MiwgMjk0NzcsIDI5NDgzLCAyOTQ4OCwgMjk0OTMsIDI5NDk4LCAyOTUwMywgMjk1MDksIDI5NTE0LCAyOTUyMCwgCi0gICAgMjk1MjUsIDI5NTMwLCAyOTUzNSwgMjk1NDAsIDI5NTQ2LCAyOTU1MSwgMjk1NTcsIDI5NTYyLCAyOTU2NywgMjk1NzIsIAotICAgIDI5NTc3LCAyOTU4MiwgMjk1ODcsIDI5NTkyLCAyOTU5NywgMjk2MDIsIDI5NjA4LCAyOTYxNCwgMjk2MjAsIDI5NjI1LCAKLSAgICAyOTYzMCwgMjk2MzUsIDI5NjQwLCAyOTY0NiwgMjk2NTIsIDI5NjU4LCAyOTY2NCwgMjk2NzAsIDI5Njc2LCAyOTY4MSwgCi0gICAgMjk2ODcsIDI5NjkyLCAyOTY5NywgMjk3MDIsIDI5NzA3LCAyOTcxMywgMjQ0MywgMjk3MTgsIDI0NTAsIDI0NTcsIDI3NTQsIAotICAgIDI5NzIzLCAyNDYzLCAyNDczLCAyOTcyOSwgMjk3MzMsIDI5NzM4LCAyOTc0MywgMjk3NDksIDI5NzU0LCAyOTc1OSwgCi0gICAgMjk3NjMsIDI5NzY4LCAyOTc3NCwgMjk3NzksIDI5Nzg0LCAyOTc4OSwgMjk3OTUsIDI5ODAwLCAyOTgwNCwgMjk4MDgsIAotICAgIDI5ODEzLCAyOTgxOCwgMjk4MjMsIDI5ODI4LCAyOTgzMywgMjk4MzksIDI5ODQ1LCAyOTg1MCwgMjk4NTQsIDI5ODU5LCAKLSAgICAyOTg2NSwgMjk4NjksIDI5ODc0LCAyOTg3OSwgMjk4ODQsIDI5ODg5LCAyOTg5MywgMjk4OTYsIDI5OTAxLCAyOTkwNiwgCi0gICAgMjk5MTEsIDI5OTE2LCAyOTkyMSwgMjk5MjcsIDI5OTMzLCAyOTkzOCwgMjk5NDMsIDI5OTQ3LCAyOTk1MiwgMjk5NTcsIAotICAgIDI5OTYyLCAyOTk2NywgMjk5NzIsIDI5OTc2LCAyOTk4MSwgMjk5ODYsIDI5OTkxLCAyOTk5NSwgMjk5OTksIDMwMDAzLCAKLSAgICAzMDAwOCwgMzAwMTYsIDMwMDIxLCAzMDAyNywgMzAwMzMsIDMwMDM5LCAzMDA0NCwgMzAwNDgsIDMwMDUxLCAzMDA1NiwgCi0gICAgMzAwNjEsIDMwMDY1LCAzMDA3MCwgMzAwNzQsIDMwMDc5LCAzMDA4MywgMzAwODYsIDMwMDkxLCAxNzMwMiwgMzAwOTYsIAotICAgIDMwMTAxLCAzMDEwNiwgMzAxMTQsIDIxMjgwLCAyODY5NCwgOTAyNiwgMzAxMTksIDMwMTI0LCAzMDEyOCwgMzAxMzMsIAotICAgIDMwMTM3LCAzMDE0MSwgMzAxNDYsIDMwMTUwLCAzMDE1MywgMzAxNTYsIDMwMTYwLCAzMDE2NSwgMzAxNjksIDMwMTc3LCAKLSAgICAzMDE4MSwgMzAxODQsIDMwMTg5LCAzMDE5MywgMzAxOTcsIDMwMjAyLCAzMDIwNywgMzAyMTEsIDMwMjE3LCAzMDIyMiwgCi0gICAgMzAyMjcsIDMwMjM0LCAzMDI0MSwgMzAyNDUsIDMwMjQ4LCAzMDI1NCwgMzAyNjMsIDMwMjcwLCAzMDI3OCwgMzAyODUsIAotICAgIDMwMjg5LCAzMDI5NCwgMzAyOTgsIDMwMzAyLCAzMDMwOCwgMzAzMTQsIDMwMzE4LCAzMDMyNCwgMzAzMjksIDMwMzM0LCAKLSAgICAzMDMzOCwgMzAzNDUsIDMwMzUxLCAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NiwgMzAzODIsIDMwMzg4LCAzMDM5NCwgCi0gICAgMzA0MDAsIDMwNDA2LCAzMDQxMiwgMzA0MTgsIDMwNDI1LCAzMDQzMSwgMzA0MzgsIDMwNDQ0LCAzMDQ1MCwgMzA0NTYsIAotICAgIDMwNDYyLCAzMDQ2OCwgMzA0NzQsIDMwNDgwLCAzMDQ4NiwgMzA0OTIsIDExNDE4LCAzMDQ5OCwgMzA1MDMsIDMwNTA4LCAKLSAgICAzMDUxMSwgMzA1MTksIDMwNTI0LCAzMDUzMywgMzA1MzksIDMwNTQ0LCAzMDU0OSwgMzA1NTQsIDMwNTU4LCAzMDU2MywgCi0gICAgMzA1NjgsIDMwNTczLCAzMDU3OCwgMzA1ODMsIDMwNTkwLCAzMDU5NywgMzA2MDMsIDMwNjA5LCAzMDYxNCwgMTYzMDMsIAotICAgIDMwNjIxLCAzMDYyNywgMzA2MzQsIDMwNjQwLCAzMDY0NiwgMzA2NTEsIDMwNjU5LCAzMDY2NCwgMTYwODIsIDMwNjY4LCAKLSAgICAzMDY3MywgMzA2NzgsIDMwNjg0LCAzMDY4OSwgMzA2OTQsIDMwNjk4LCAzMDcwMywgMzA3MDgsIDMwNzE0LCAzMDcxOSwgCi0gICAgMzA3MjQsIDMwNzI4LCAzMDczMywgMzA3MzgsIDMwNzQyLCAzMDc0NywgMzA3NTIsIDMwNzU3LCAzMDc2MSwgMzA3NjYsIAotICAgIDMwNzcxLCAzMDc3NiwgMzA3ODAsIDMwNzg0LCAxNTI5MywgMzA3ODgsIDMwNzk3LCAzMDgwMywgMzA4MDksIDMwODE4LCAKLSAgICAzMDgyNiwgMzA4MzUsIDMwODQzLCAzMDg0OCwgMzA4NTIsIDMwODU5LCAzMDg2NSwgMzA4NjksIDMwODcyLCAzMDg3NywgCi0gICAgMzA4ODYsIDMwODk0LCAzMDg5OSwgMTQ5NSwgMzA5MDUsIDMwOTA4LCAzMDkxMiwgMjI0MjQsIDIyNDMwLCAzMDkxOCwgCi0gICAgMzA5MjIsIDMwOTMzLCAzMDk0NCwgMzA5NTUsIDMwOTY3LCAzMDk3NCwgMzA5ODEsIDMwOTg2LCAzMDk5MCwgNTkwOSwgNzU1LCAKLSAgICAyMTI3OSwgMzA5OTgsIDMxMDAzLCAzMTAwNywgMzEwMTIsIDMxMDE2LCAzMTAyMiwgMzEwMjcsIDMxMDMzLCAzMTAzOCwgCi0gICAgMzEwNDQsIDMxMDQ5LCAzMTA1NSwgMzEwNjAsIDMxMDY2LCAzMTA3MiwgMzEwNzgsIDMxMDgzLCAzMTAzOSwgMzEwNDUsIAotICAgIDMxMDg3LCAzMTA5MiwgMzEwOTgsIDMxMTAzLCAzMTEwOSwgMzExMTQsIDMxMTIwLCAzMTEyNSwgMzEwNTAsIDEwNDIxLCAKLSAgICAzMTEyOSwgMzEwNjEsIDMxMDY3LCAzMTA3MywgMjgzMSwgMzQyMywgMzExMzUsIDMxMTM4LCAzMTE0NCwgMzExNTAsIAotICAgIDMxMTU2LCAzMTE2MywgMzExNjksIDMxMTc1LCAzMTE4MSwgMzExODcsIDMxMTkzLCAzMTE5OSwgMzEyMDUsIDMxMjExLCAKLSAgICAzMTIxNywgMzEyMjMsIDMxMjI5LCAzMTIzNSwgMzEyNDIsIDMxMjQ4LCAzMTI1NCwgMzEyNjAsIDMxMjY2LCAzMTI3MiwgCi0gICAgMzEyNzUsIDMxMjgwLCAzMTI4MywgMzEyOTAsIDMxMjk4LCAzMTMwMywgMzEzMDgsIDMxMzE0LCAzMTMxOSwgMzEzMjQsIAotICAgIDMxMzI4LCAzMTMzMywgMzEzMzksIDMxMzQ0LCAzMTM1MCwgMzEzNTUsIDMxMzYxLCAzMTM2NiwgMzEzNzIsIDMxMzc4LCAKLSAgICAzMTM4MiwgMzEzODcsIDMxMzkyLCAzMTM5NywgMzE0MDIsIDMxNDA2LCAzMTQxMSwgMzE0MTYsIDMxNDIxLCAzMTQyNywgCi0gICAgMzE0MzMsIDMxNDM5LCAzMTQ0NSwgMzE0NTAsIDMxNDU0LCAzMTQ1NywgMzE0NjMsIDMxNDY5LCAzMTQ3OCwgMzE0ODYsIAotICAgIDMxNDkzLCAzMTQ5OCwgMzE1MDIsIDMxNTA2LCAzMTUxMSwgMTUxNDYsIDMxNTE2LCAzMTUyNCwgMzE1MzAsIDM2ODMsIAotICAgIDEzNzcsIDMxNTM1LCAzMTUzOSwgODAwNSwgMzE1NDUsIDMxNTUxLCAzMTU1OCwgODAxNCwgMzE1NjIsIDMxNTY4LCAzMTU3NSwgCi0gICAgMzE1ODEsIDMxNTkwLCAzMTU5OCwgMzE2MTAsIDMxNjE0LCAzMTYyMSwgMzE2MjcsIDMxNjMxLCAzMTYzNCwgMzE2NDMsIAotICAgIDMxNjUxLCAzMTA0MCwgMzE2NTYsIDMxNjY2LCAzMTY3NiwgMzE2ODYsIDMxNjkyLCAzMTY5NywgMzE3MDcsIDMxNzEyLCAKLSAgICAzMTcyNSwgMzE3MzksIDMxNzUwLCAzMTc2MiwgMzE3NzQsIDMxNzg4LCAzMTgwMSwgMzE4MTMsIDMxODI1LCAxNDYwMCwgCi0gICAgMzE4MzksIDMxODQ0LCAzMTg0OSwgMzE4NTMsIDMxODU3LCAzMTg2MSwgMTc4MCwgMjcxNzYsIDMxODY1LCAzMTg3MCwgCi0gICAgMzEwODgsIDMxODc1LCAzMTg3OCwgMzE4ODMsIDMxODg4LCAzMTg5MywgMzE4OTksIDMxOTA1LCAxMDA5OCwgMzE5MTAsIAotICAgIDMxOTE3LCAxNTY5NywgMzE5MjMsIDMxOTI4LCAzMTkzMywgMzE5MzcsIDMxOTQyLCAzMTk0NywgMzEwOTMsIDMxOTUyLCAKLSAgICAzMTk1NywgMzE5NjIsIDMxOTY4LCAzMTA5OSwgMzE5NzMsIDMxOTc2LCAzMTk4MywgMzE5OTEsIDMxOTk3LCAzMjAwMywgCi0gICAgMzIwMDksIDMyMDIwLCAzMjAyNSwgMzIwMzIsIDMyMDM5LCAzMjA0NiwgMzIwNTQsIDMyMDYzLCAzMjA3MiwgMzIwNzgsIAotICAgIDMyMDg0LCAzMjA5MiwgMzExMDQsIDMyMDk3LCAzMjEwMywgMzIxMDksIDMxMTEwLCAzMjExNCwgMzIxMTksIDMyMTI3LCAKLSAgICAzMjEzNSwgMzIxNDEsIDMyMTQ4LCAzMjE1NCwgMzIxNjEsIDMyMTY4LCAzMjE3NCwgMzIxODIsIDMyMTkyLCAzMjE5OSwgCi0gICAgMzIyMDQsIDMyMjEwLCAzMjIxNSwgMzIyMjAsIDMyMjI3LCAzMjIzNiwgMzIyNDQsIDMyMjQ5LCAzMjI1NSwgMzIyNjIsIAotICAgIDMyMjcwLCAzMjI3NiwgMzIyODEsIDMyMjg3LCAzMjI5NiwgMjc5NTcsIDMyMzAzLCAzMjMwNywgMzIzMTIsIDMyMzIxLCAKLSAgICAzMjMyNiwgMzIzMzEsIDMyMzM2LCAxMjQwNSwgMzIzNDQsIDMyMzQ5LCAzMjM1NCwgMzIzNTksIDMyMzYzLCAzMjM2OCwgCi0gICAgMzIzNzMsIDMyMzgwLCAzMjM4NSwgMzIzOTAsIDMyMzk1LCAzMTExNSwgMjEyMTYsIDMyNDAxLCAyNTE5LCAyNDQsIDMyNDA0LCAKLSAgICAzMjQwNywgMzI0MTEsIDMyNDE1LCAzMjQyNSwgMzI0MzMsIDMyNDM3LCAzMjQ0NCwgMzI0NTEsIDMyNDU1LCAzMjQ1OCwgCi0gICAgMzI0NjQsIDMyNDcyLCAzMjQ4MCwgMzI0ODQsIDMyNDg4LCAzMjQ5MSwgMzI0OTgsIDMyNTAyLCAzMjUwNiwgMzI1MTMsIAotICAgIDMyNTIxLCAzMTA1MSwgMzI1MjgsIDMyNTM2LCAxMDE1OCwgNjY0LCAzMDgsIDMyNTQ4LCAzMjU1MywgMzI1NTgsIDMyNTY0LCAKLSAgICAzMjU2OSwgMzI1NzQsIDM3MDQsIDMyNTc5LCAzMjU4MiwgMzI1ODcsIDMyNTkyLCAzMjU5NywgMzI2MDIsIDMyNjA3LCAKLSAgICAzMjYxNCwgMjI1MjksIDMyNjE5LCAzMjYyNCwgMzI2MjksIDMyNjM0LCAzMjYzOSwgMzI2NDUsIDMyNjUwLCAzMjY1NiwgCi0gICAgMzEyODYsIDMyNjYyLCAzMjY2NywgMzI2NzMsIDMyNjc5LCAzMjY4OSwgMzI2OTQsIDMyNjk5LCAzMjcwMywgMzI3MDgsIAotICAgIDMyNzEzLCAzMjcxOCwgMzI3MjMsIDMyNzM2LCAzMjc0MSwgMjIzMDIsIDE2NzA1LCAzNzEwLCAzMjc0NSwgMzI3NTAsIAotICAgIDMyNzU1LCAzMjc2MSwgMzI3NjYsIDMyNzcxLCAzMjc3NSwgMzI3ODAsIDMyNzg1LCAzMjc5MSwgMzI3OTYsIDMyODAxLCAKLSAgICAxMzgyLCAzMjgwNSwgMzI4MTAsIDMyODE1LCAzMjgyMCwgMzI4MjQsIDMyODI5LCAzMjgzNCwgMzI4MzksIDMyODQ1LCAKLSAgICAzMjg1MSwgMzI4NTYsIDMyODYwLCAzMjg2NCwgMzI4NjksIDMyODc0LCAzMjg3OSwgMzI4ODMsIDMyODkxLCAzMjg5NSwgCi0gICAgMzI5MDEsIDMyOTA1LCAzMjkxMiwgMTY0OTgsIDMxMDYyLCAzMjkxOCwgMzI5MjUsIDMyOTMzLCAzMjk0MCwgMzI5NDYsIAotICAgIDMyOTU5LCAzMjk3MSwgMzI5NzcsIDMyOTgxLCAyNzczLCAzMjk4NSwgMzI5ODksIDMyNDkzLCAzMjk5OCwgMzMwMDksIAotICAgIDMzMDE0LCAzMzAxOSwgMzMwMjQsIDMzMDI4LCAzMzAzMywgMjI0MzUsIDMzMDM3LCAzMzA0MSwgMzMwNDYsIDMxMDY4LCAKLSAgICAyMTMwMCwgMzMwNTAsIDMzMDU1LCAzMzA2MSwgMzMwNjYsIDMzMDcwLCAzMzA3NCwgMzMwNzcsIDMzMDgxLCAzMzA4NywgCi0gICAgMzMwOTgsIDMzMTEwLCAzMTA3NCwgMzMxMTUsIDMzMTE4LCAzMzEyMiwgMzQ3LCAzMzEyNywgMzMxMzIsIDMzMTM3LCAKLSAgICAzMzE0MiwgMzMxNDcsIDMzMTUyLCAzMzE1OCwgMzMxNjMsIDMzMTY4LCAzMzE3NCwgMzMxNzksIDMzMTg1LCAzMzE5MCwgCi0gICAgMzMxOTYsIDMzMjAxLCAzMzIwNiwgMzMyMTEsIDMzMjE2LCAzMzIyMSwgMzMyMjYsIDMzMjMxLCAzMzIzNiwgMzMyNDIsIAotICAgIDMzMjQ3LCAzMzI1MiwgMzMyNTcsIDMzMjYyLCAzMzI2NywgMzMyNzIsIDMzMjc3LCAzMzI4MywgMzMyODksIDMzMjk0LCAKLSAgICAzMzI5OSwgMzMzMDQsIDMzMzA5LCAzMzMxNCwgMzMzMTksIDMzMzI0LCAzMzMyOSwgMzMzMzQsIDMzMzM5LCAzMzM0NCwgCi0gICAgMzMzNDksIDMzMzU0LCAzMzM1OSwgMzMzNjQsIDMzMzY5LCAzMzM3NCwgMzMzNzksIDMzMzg1LCAzMTMsIDI2LCAzMzM5MCwgCi0gICAgMzMzOTQsIDMzMzk4LCAzMzQwNiwgMzM0MTAsIDMzNDE0LCAzMzQxNywgMzM0MjAsIDMzNDIyLCAzMzQyNywgMzM0MzEsIAotICAgIDMzNDM2LCAzMzQ0MCwgMzM0NDUsIDMzNDQ5LCAzMzQ1NCwgMzM0NTgsIDMzNDYxLCAzMzQ2MywgMzM0NjcsIDMzNDcyLCAKLSAgICAzMzQ3NiwgMzM0ODcsIDMzNDkwLCAzMzQ5MiwgMzM0OTYsIDMzNTA4LCAzMzUxNywgMzM1MjEsIDMzNTI1LCAzMzUzMSwgCi0gICAgMzM1MzYsIDMzNTQ1LCAzMzU1MSwgMzM1NTYsIDMzNTYxLCAzMzU2NSwgMzM1NzAsIDMzNTc3LCAzMzU4MiwgMzM1ODgsIAotICAgIDMzNTkzLCAzMzU5NywgMzM2MDQsIDI1NzE4LCAyNTcyOCwgMzM2MDgsIDMzNjEzLCAzMzYxOCwgMzM2MjMsIDMzNjMwLCAKLSAgICAzMzYzNCwgMzM2NDEsIDgxMTMsIDMzNjQ3LCAzMzY1NiwgMzM2NjQsIDMzNjc5LCAzMzY5MywgMzM3MDEsIDMzNzEyLCAKLSAgICAzMzcyMSwgMzM3MjYsIDcyMjcsIDMzNzM2LCAzMzc0MSwgMzM3NDYsIDMzNzUwLCAzMzc1MywgMzM3NTcsIDMzNzYyLCAKLSAgICAzMzc2NiwgMzM3NzMsIDMzNzc4LCAzMzc4MywgODkxMiwgMzM3OTMsIDMzNzk1LCAzMzc5OCwgMzM4MDIsIDMzODA4LCAKLSAgICAzMzgxMiwgMzM4MTcsIDMzODIyLCAzMzgyOCwgMzM4MzMsIDMzODM5LCAzMzg0NCwgMzM4NTQsIDMzODYzLCAzMzg3MSwgCi0gICAgMzM4NzYsIDMzODgyLCAzMzg4NywgMzM4OTQsIDMzODk4LCAzMzkwNiwgMzM5MTMsIDMzOTI2LCAzMzkzNCwgMzM5MzgsIAotICAgIDMzOTQ4LCAzMzk1MywgMzM5NTcsIDMzOTY1LCAzMzk3MywgMzM5NzcsIDMzOTg2LCAzMzk5MiwgMzM5OTcsIDM0MDA1LCAKLSAgICAzNDAxNSwgMzQwMjQsIDM0MDMzLCAzNDA0MiwgMzQwNTMsIDM0MDYxLCAzNDA3MiwgMzQwODEsIDM0MDg4LCAzNDA5NCwgCi0gICAgMzQwOTksIDM0MTEwLCAzNDExNSwgMzQxMTksIDM0MTIyLCAzNDEyNiwgMzQxMzQsIDM0MTQwLCAzNDE0OCwgMzQxNTUsIAotICAgIDM0MTYxLCAzNDE2NiwgMzQxNzIsIDI0MTgsIDM0MTc2LCAzNDE3OCwgMzQxODMsIDM0MTg4LCAzNDE5MywgMzQxOTYsIAotICAgIDM0MTk4LCAzNDIwMiwgMzQyMDUsIDM0MjEyLCAzNDIxNiwgOTg5MSwgMzQyMjAsIDM0MjI2LCAzNDIzNiwgMzQyNDEsIAotICAgIDM0MjQ3LCAzNDI1MSwgMzQyNTYsIDM0MjY5LCAyNjEwNCwgMzQyNzUsIDM0Mjg0LCAxNzQ3NSwgMzQyOTEsIDM0MzAwLCAKLSAgICAzMTY3MiwgMzQzMDgsIDM0MzEzLCAzNDMxNywgMzQzMjUsIDM0MzMyLCAzNDMzNywgMzQzNDEsIDM0MzQ2LCAzNDM1MCwgCi0gICAgMzQzNTgsIDM0MzY0LCAzNDM3MCwgMzQzNzUsIDM0Mzc5LCAzNDM4MiwgMzQzODcsIDM0NDAwLCAzNDQxNiwgMjI5OTYsIAotICAgIDM0NDMzLCAzNDQ0NSwgMzQ0NjIsIDM0NDc0LCAzNDQ4OCwgMjMwMTMsIDIzMDMyLCAzNDUwMCwgMzQ1MTIsIDI2ODAsIAotICAgIDM0NTI2LCAzNDUzMSwgMzQ1MzYsIDM0NTQxLCAzNDU0NSwgMzQ1NTIsIDM0NTY0LCAzNDU3MCwgMzQ1NzMsIDM0NTg0LCAKLSAgICAzNDU5NSwgMzQ2MDAsIDMyMDg5LCA2OTUsIDM0NjA0LCAzNDYwOCwgMzQ2MTIsIDM0NjE1LCAzNDYyMCwgMzQ2MjUsIAotICAgIDM0NjMxLCAzNDYzNiwgMzQ2NDEsIDM0NjQ3LCAzNDY1MywgMzQ2NTgsIDM0NjYyLCAzNDY2NywgMzQ2NzIsIDM0Njc3LCAKLSAgICAzNDY4MSwgMzQ2ODQsIDM0NjkwLCAzNDY5NSwgMzQ3MDAsIDM0NzA1LCAzNDcwOSwgMzQ3MTQsIDM0NzIwLCAzNDcyOCwgCi0gICAgMjYzMzcsIDM0NzMzLCAzNDczOCwgMzQ3NDUsIDM0NzUxLCAzNDc1NywgMzQ3NjIsIDM0NzcwLCAyMjUzOCwgMzQ3NzcsIAotICAgIDM0NzgyLCAzNDc4NywgMzQ3OTIsIDM0Nzk2LCAzNDc5OSwgMzQ4MDQsIDM0ODA4LCAzNDgxMiwgMzQ4MTksIDM0ODI1LCAKLSAgICAzNDgzMSwgMzQ4MzcsIDM0ODQ0LCAzNDg0OSwgMzQ4NTUsIDMzOTY4LCAzNDg1OSwgMzQ4NjMsIDM0ODY4LCAzNDg4MSwgCi0gICAgMzQ4ODYsIDM0ODkyLCAzNDkwMCwgMzQ5MDcsIDM0OTE1LCAzNDkyNSwgMzQ5MzEsIDM0OTM3LCAzNDk0MywgMzQ5NDcsIAotICAgIDM0OTU2LCAzNDk2NCwgMzQ5NzEsIDM0OTc2LCAzNDk4MSwgMTA0NDQsIDM0OTg2LCAzNDk5NCwgMzUwMDEsIDM1MDA3LCAKLSAgICAzNTAxNywgMzUwMjIsIDM1MDI4LCAzNTAzNiwgMzYwOCwgMzUwNDMsIDM1MDUwLCAzNjE0LCAzNTA1NCwgMzUwNTksIAotICAgIDM1MDcwLCAzNTA3NywgMzUwODMsIDM1MDkyLCAzNTA5NiwgNDAxNSwgMzUwOTksIDM1MTA2LCAzNTExMiwgMzUxMTgsIAotICAgIDM1MTI2LCAzNTEzNiwgMjkwNjMsIDM1MTQzLCAzNTE1MSwgMzUxNTYsIDM1MTYyLCAzNTE2NywgMjU5NjQsIDM1MTczLCAKLSAgICAzNTE4MCwgMzUxODYsIDM1MTk1LCAyMzY3NywgMzUyMDIsIDM1MjA3LCAzNTIxMSwgMzUyMTksIDM1MjI3LCA5NjA3LCAKLSAgICA1ODk1LCAzNTIzNCwgMzUyMzgsIDM1MjQwLCAzNTI0NCwgMzUyNDksIDM1MjUxLCAzNTI1NywgMzUyNjIsIDM1MjY3LCAKLSAgICAzNTI3NCwgMzI2MTAsIDM1MjgwLCAzNTI4NSwgMzUyODksIDM1Mjk0LCAzNTI5OCwgMzUzMDcsIDM1MzExLCAzNTMxNywgCi0gICAgMzUzMjQsIDM1MzMwLCAzNTMzNywgMzUzNDIsIDM1MzUxLCAzNTM1NiwgMzUzNjAsIDM1MzY1LCAzNTM3MiwgMzUzODAsIAotICAgIDM1Mzg4LCAzNTM5MywgMjEzNTYsIDM1Mzk3LCAzNTQwMCwgMzU0MDQsIDM1NDA4LCAzNTQxMiwgMzU0MTUsIDM1NDE3LCAKLSAgICAzNTQyNSwgMzU0MjksIDM1NDM2LCAzNTQ0MCwgMzU0NDQsIDM1NDUyLCAzNTQ1OSwgMzU0NjksIDM1NDczLCAzNTQ3NywgCi0gICAgMzU0ODUsIDM1NDkzLCAzNTQ5OSwgMzU1MDQsIDM1NTEzLCAxMzM1NywgMzU1MTksIDM1NTI4LCAzNTUzMywgMzU1NDAsIAotICAgIDM1NTQ4LCAzNTU1NiwgMzU1NjQsIDM1NTcxLCAzNTU3OCwgMzU1ODUsIDM1NTkyLCAzNTU5OSwgMzU2MDQsIDM1NjEwLCAKLSAgICAzNTYyNywgMzU2MzUsIDM1NjQ1LCAzNTY1MywgMzU2NjAsIDQwNywgMzU2NjQsIDM1NjcwLCAzNTY3NCwgMzU2NzksIAotICAgIDMzNzE3LCAzNTY4NSwgMzU2ODgsIDM1NjkyLCAzNTcwMCwgMzYxOSwgMzU3MDgsIDM1NzE0LCAzNTcyMCwgMzU3MjksIAotICAgIDM1NzM5LCAzNTc0NiwgMzU3NTIsIDM2MjUsIDM2MzEsIDM1NzYxLCAzNTc2OCwgMzU3NzYsIDM1NzgxLCAzNTc4NSwgCi0gICAgMzU3OTIsIDM1ODAwLCAzNTgwNywgMzU4MTMsIDM1ODIyLCAzNTgzMiwgMzU4MzgsIDM1ODQ2LCAzNTg1NSwgMzU4NjIsIAotICAgIDM1ODcwLCAzNTg3NywgMjIwMzIsIDM1ODgxLCAzNTg4OCwgMzU4OTQsIDM1OTA0LCAzNTkxMywgMzU5MjQsIDM1OTI4LCAKLSAgICAzNTkzOCwgMzU5NDQsIDM1OTUxLCAzNTk1OSwgMzU5NjgsIDM1OTc3LCAzNTk4NywgMzU5OTgsIDM2MDA1LCAzNjAxMCwgCi0gICAgMzYwMTcsIDMwMjksIDM2MDI1LCAzNjAzMSwgMzYwMzYsIDM2MDQyLCAzNjA0OCwgMzYwNTMsIDM2MDY2LCAzNjA3OSwgCi0gICAgMzYwOTIsIDM2MDk5LCAzNjEwNSwgMzYxMTMsIDM2MTIxLCAzNjEyNiwgMzYxMzAsIDE0NjksIDM2MTM0LCAzNjEzOSwgCi0gICAgMzYxNDQsIDM2MTQ5LCAzNjE1NCwgMzYxNjAsIDM2MTY1LCAzNjE3MCwgMzYxNzUsIDM2MTgwLCAzNjE4NSwgMzYxOTAsIAotICAgIDM2MTk1LCAzNjIwMSwgMzYyMDcsIDM2MjEyLCAzNjIxNywgMzYyMjMsIDM2MjI4LCAzNjIzMywgMzYyMzgsIDM2MjQ0LCAKLSAgICAzNjI0OSwgMzYyNTQsIDM2MjU5LCAzNjI2NCwgMzYyNzAsIDM2Mjc1LCAzNjI4MCwgMzYyODYsIDM2MjkxLCAzNjI5NiwgCi0gICAgMzYzMDEsIDM2MzA2LCAzNjMxMSwgMzYzMTcsIDM2MzIyLCAzNjMyOCwgMzYzMzMsIDM2MzM5LCAzNjM0NCwgMzYzNDksIAotICAgIDM2MzU0LCAzNjM2MCwgMzYzNjYsIDM2MzcyLCAzNjM3OCwgMzYzODQsIDM2MzkwLCAzNjM5NiwgMzY0MDIsIDM2NDA3LCAKLSAgICAzNjQxMiwgMzY0MTgsIDM2NDIzLCAzNjQyOCwgMzY0MzMsIDM2NDM4LCAzNjQ0MywgMzY0NDgsIDM2NDUzLCAzNjQ1OSwgCi0gICAgMzY0NjQsIDM2NDY5LCAzNjQ3NSwgMzY0ODEsIDEwMSwgMzY0ODYsIDM2NDg4LCAzNjQ5MiwgMzY0OTYsIDM2NTAwLCAKLSAgICAzNjUwNSwgMzY1MDksIDk1MjgsIDM2NTEzLCAzNjUxOSwgMTc0MSwgNjI4MCwgMzY1MjUsIDM2NTI4LCAzNjUzMywgMzY1MzcsIAotICAgIDM2NTQyLCAzNjU0NiwgMzY1NTAsIDM2NTU1LCAxMDI0NSwgMzY1NTksIDM2NTYzLCAzNjU2NywgMzY1NzEsIDE1Mzg1LCAKLSAgICAzNjU3NiwgMzY1ODAsIDM2NTg1LCAzNjU5MCwgMzY1OTUsIDM2NTk5LCAzNjYwNiwgMjYxMjgsIDM2NjEyLCAzNjYxNSwgCi0gICAgMzY2MTksIDM2NjI0LCAzNjYzMCwgMzY2MzQsIDM2NjQyLCAzNjY0OCwgMzY2NTMsIDM2NjU3LCAzNjY2MywgMzY2NjcsIAotICAgIDM2NjcxLCAzNDYyLCAzNDY3LCAyOTI1NSwgMzY2NzQsIDM2Njc4LCAzNjY4MiwgMzY2ODYsIDM2NjkwLCAzNjY5OCwgCi0gICAgMzY3MDUsIDM2NzA5LCAzNjcxNiwgMzY3MjEsIDMxNywgMzY3MjYsIDM2NzMwLCAzNjczNiwgMzY3NDgsIDM2NzU0LCAKLSAgICAzNjc2MCwgMzY3NjQsIDM2NzcwLCAzNjc3OSwgMzY3ODMsIDM2Nzg3LCAzNjc5MiwgMzY3OTgsIDM2ODAzLCAzNjgwNywgCi0gICAgMzY4MTIsIDM2ODE2LCAzNjgyMCwgMzY4MjcsIDM2ODMzLCAzNjgzOCwgMzY4NTMsIDM2ODY4LCAzNjg4MywgMzY4OTksIAotICAgIDM2OTE3LCAxMDE5NSwgMzY5MzEsIDM2OTM4LCAzNjk0MiwgMzY5NDUsIDM2OTU0LCAzNjk1OSwgMzY5NjMsIDM2OTcxLCAKLSAgICAzMzkxOSwgMzY5NzksIDM2OTgzLCAzNjk5MywgMzcwMDQsIDI5MjI1LCAzNzAxNywgMzcwMjEsIDM3MDMwLCAzNzAzOCwgCi0gICAgOTc4NSwgMTQ5MTMsIDM3MDQyLCAyMjQ0NywgMzcwNDUsIDMwMTczLCAzNzA1MCwgOTc4NCwgMzcwNTUsIDM3MDYxLCAKLSAgICAzNzA2NiwgMzcwNzIsIDM3MDc3LCAzNzA4MywgMzcwODgsIDM3MDk0LCAzNzA5OSwgMzcxMDUsIDM3MTExLCAzNzExNywgCi0gICAgMzcxMjIsIDM3MDc4LCAzNzA4NCwgMzcwODksIDM3MDk1LCAzNzEwMCwgMzcxMDYsIDM3MTEyLCA4MTI2LCAzODc0LCAKLSAgICAzNzEyNiwgMzcxMzQsIDM3MTM4LCAzNzE0MSwgMzcxNDUsIDM3MTUwLCAzNzE1NSwgMzcxNjEsIDM3MTY3LCAzNzE3MiwgCi0gICAgMzcxNzYsIDI1OTc2LCAzNzE4MCwgMzcxODQsIDM3MTkwLCAzNzE5NCwgOTA0OSwgMzcyMDMsIDM3MjEwLCAzNzIxNCwgCi0gICAgMTE4NzUsIDM3MjIxLCAzNzIyNywgMzcyMzIsIDM3MjM5LCAzNzI0NiwgMzcyNTMsIDI4NTcxLCA4MDQ5LCAzNzI2MCwgCi0gICAgMzcyNjcsIDM3Mjc0LCAzNzI4MCwgMzcyODUsIDM3MjkyLCAzNzMwMywgMzczMDksIDM3MzE0LCAzNzMxOSwgMzczMjQsIAotICAgIDM3MzMxLCAzNzA3OSwgMzczMzUsIDM3MzQ1LCAzNzM1NiwgMzczNjIsIDM3MzY3LCAzNzM3MiwgMzczNzcsIDM3MzgyLCAKLSAgICAzNzM4NywgMzczOTEsIDM3Mzk1LCAzNzQwMSwgMzc0MDksIDIzMTksIDg2NSwgMTAyNjEsIDEwMjczLCAxMDI3OCwgMTAyODQsIAotICAgIDM3NDE4LCAxMDI4OSwgMTAyOTQsIDEwMzAwLCAzNzQyMywgMzc0MzMsIDM3NDM3LCAxMDMwNSwgMzc0NDIsIDE2OTAzLCAKLSAgICAzNzQ0NSwgMzc0NTAsIDM3NDU0LCAzNzQ1OSwgMzc0NjQsIDM3NDcxLCAzNzQ3OCwgMzc0ODIsIDM3NDg1LCAzNzQ5MywgCi0gICAgMTAyMDgsIDM3NTAwLCAzNzUwMywgMzc1MDksIDM3NTE5LCA1OTI5LCAzNzUyOCwgMzc1MzIsIDM3NTQwLCAzNzU0NCwgCi0gICAgMzc1NTQsIDM3NTYwLCAzNzU3MSwgMzc1NzcsIDM3NTgzLCAzNzU4OCwgMzc1OTQsIDM3NjAwLCAzNzYwNiwgMzc2MTEsIAotICAgIDM3NjE0LCAzNzYyMSwgMzc2MjcsIDM3NjMyLCAzNzYzOSwgMzc2NDYsIDM3NjUwLCAzNzY2MCwgMzc2NzMsIDM3NjgyLCAKLSAgICAzNzY5MSwgMzc3MDIsIDM3NzE1LCAzNzcyNiwgMzc3MzUsIDM3NzQ2LCAzNzc1MSwgMzc3NjAsIDM3NzY1LCAxMDMxMCwgCi0gICAgMzc3NzEsIDM3Nzc4LCAzNzc4NiwgMzc3OTEsIDM3Nzk1LCAzNzgwMiwgMzc4MDksIDM4MjksIDE2LCAzNzgxMywgMzc4MTgsIAotICAgIDE2NzU3LCAzNzgyMiwgMzc4MjUsIDM3ODI4LCAyODA3NywgMzc4MzIsIDI4NTgwLCAzNzg0MCwgMzc4NDQsIDM3ODQ4LCAKLSAgICAzNzg1MSwgMzc4NTcsIDM3MTAxLCAzNzg2MywgMzc4NzEsIDM3ODc3LCAzNzg4NCwgMjgwNjAsIDM3ODg4LCAyODI1NCwgCi0gICAgMzc4OTIsIDM3OTAxLCAzNzkwNywgMzc5MTMsIDM3OTE4LCAzNzkyMiwgMzc5MjgsIDM3OTMyLCAzNzk0MCwgMzc5NDgsIAotICAgIDI2MTk0LCAzNzk1NCwgMzc5NjEsIDM3OTY3LCAzNzk3MiwgMzc5NzcsIDM3OTgxLCAzNzk4NywgMzc5OTIsIDM3OTk4LCAKLSAgICA0MDU2LCA3OTEsIDM4MDA1LCAzODAwOSwgMzgwMTIsIDE1Mjc1LCAzODAyNCwgMzU4NTEsIDM4MDM1LCAzODAzOCwgMzgwNDUsIAotICAgIDM4MDQ5LCAzODA1NSwgMzgwNTksIDM4MDY1LCAzODA3MCwgMzgwNzYsIDM4MDgxLCAzODA4NiwgMzgwOTAsIDM4MDk0LCAKLSAgICAzODA5OSwgMzgxMDQsIDM4MTE0LCAzODEyMCwgMzgxMzMsIDM4MTM5LCAzODE0NSwgMzgxNTIsIDM4MTU3LCAzODE2MywgCi0gICAgMzgxNjgsIDE2NjQzLCAxNDcyLCAxMDE5LCAzMTIxOCwgMzEyMjQsIDM4MTczLCAzMTIzMCwgMzEyNDMsIDMxMjQ5LCAKLSAgICAzMTI1NSwgMzgxNzksIDMxMjYxLCAzMTI2NywgMzgxODUsIDM4MTkxLCAyMiwgMzgxOTksIDM4MjA2LCAzODIxMCwgMzgyMTQsIAotICAgIDM4MjIyLCAzMTk3OCwgMzgyMjYsIDM4MjMwLCAzODIzNywgMzgyNDIsIDM4MjQ2LCAzODI1MSwgMzgyNTcsIDM4MjYyLCAKLSAgICAzODI2OCwgMzgyNzMsIDM4Mjc3LCAzODI4MSwgMzgyODUsIDM4MjkwLCAzODI5NCwgMzgyOTksIDM4MzAzLCAzODMxMCwgCi0gICAgMzgzMTUsIDM4MzE5LCAzODMyNCwgMzgzMjgsIDM4MzMzLCAzODMzNywgMzgzNDIsIDM4MzQ4LCAxNTQ5NSwgMTU1MDAsIAotICAgIDM4MzUzLCAzODM1NywgMzgzNjAsIDM4MzY0LCAyMTE4MywgMzgzNjksIDM4MzczLCAzODM3OSwgMzgzODYsIDM4MzkxLCAKLSAgICAzODQwMSwgMzg0MDYsIDM4NDE0LCAzODQxOCwgMzg0MjEsIDMxOTkzLCAzODQyNSwgNDEwOSwgMzg0MzAsIDM4NDM1LCAKLSAgICAzODQzOSwgMzg0NDQsIDM4NDQ4LCAzODQ1MywgMTMzNzUsIDM4NDY0LCAzODQ2OCwgMzg0NzEsIDM4NDc2LCAzODQ4MCwgCi0gICAgMzg0ODQsIDM4NDg3LCAzODQ5MSwgODE0NSwgMTMzOTEsIDM4NDk0LCAzODQ5NywgMzg1MDMsIDM4NTA4LCAzODUxNCwgCi0gICAgMzg1MTksIDM4NTI1LCAzODUzMCwgMzg1MzYsIDM4NTQxLCAzODU0NywgMzg1NTMsIDM4NTU5LCAzODU2NCwgMzg1NjgsIAotICAgIDM4NTcyLCAzODU4MSwgMzg1OTcsIDM4NjEzLCAzODYyMywgMjc5NjcsIDM4NjMwLCAzODYzNCwgMzg2MzksIDM4NjQ0LCAKLSAgICAzODY0OCwgMzg2NTIsIDM1OTcyLCAzODY1OCwgMzg2NjMsIDM4NjY3LCAzODY3NCwgMzg2NzksIDM4NjgzLCAzODY4NywgCi0gICAgMjY5OTYsIDM4NjkzLCAyMTQ1MSwgMzg2OTgsIDM4NzA1LCAzODcxMywgMzg3MTksIDM4NzI2LCAzODczNCwgMzg3NDAsIAotICAgIDM4NzQ0LCAzODc1MCwgMzg3NTgsIDM4NzYyLCAzODc3MSwgOTUwOSwgMzg3NzksIDM4NzgzLCAzODc5MSwgMzg3OTgsIAotICAgIDM4ODAzLCAzODgwOCwgMzg4MTIsIDM4ODE1LCAzODgxOSwgMzg4MjIsIDM4ODI2LCAzODgzMywgMzg4MzgsIDM4ODQ0LCAKLSAgICAyNjQxNSwgMzEyODEsIDM4ODQ4LCAzODg1NSwgMzg4NjEsIDM4ODY3LCAzODg3MiwgMzg4NzUsIDM4ODc3LCAzODg4NCwgCi0gICAgMzg4OTEsIDM4ODk3LCAzODkwMSwgMzg5MDQsIDM4OTA4LCAzODkxMiwgMzg5MTYsIDM4OTIxLCAzODkyNSwgMzg5MjksIAotICAgIDM4OTMyLCAzODkzNiwgMzg5NTAsIDIzMDYyLCAzODk2OSwgMzg5ODIsIDM4OTk1LCAzOTAwOCwgMjMwODAsIDM5MDIzLCAKLSAgICAxMDQ5NywgMzkwMzgsIDM5MDQ0LCAzOTA0OCwgMzkwNTIsIDM5MDU5LCAzOTA2NCwgMzkwNjgsIDM5MDc1LCAzOTA4MSwgCi0gICAgMzkwODYsIDM5MDkyLCAzOTEwMiwgMzkxMTQsIDM5MTI1LCAzOTEzMCwgMzkxMzcsIDM5MTQxLCAzOTE0NSwgMzkxNDgsIAotICAgIDE1ODkxLCAzNjc3LCAzOTE1NiwgMTU1MjIsIDM5MTY5LCAzOTE3NiwgMzkxODAsIDM5MTg0LCAzOTE4OSwgMzkxOTQsIAotICAgIDM5MjAwLCAzOTIwNCwgMzkyMDgsIDM5MjExLCA3NzQyLCAxNTUzMywgMzkyMTYsIDM5MjIwLCAzOTIyNiwgMzkyMzUsIAotICAgIDM5MjQwLCAzOTI0NywgMzU4MjgsIDM5MjUzLCAzOTI1OCwgMzkyNjIsIDM5MjY3LCAzOTI3NCwgMzkyNzgsIDM5MjgxLCAKLSAgICAzOTI4NSwgMzkyOTAsIDE0NTY1LCAzOTI5NywgMzkzMDQsIDEwNzcsIDM5MzA4LCAzOTMxMywgMzkzMTgsIDM5MzI0LCAKLSAgICAzOTMyOSwgMzkzMzQsIDM5MzM4LCAzOTM0OCwgMzkzNTMsIDM5MzU5LCAzOTM2NCwgMzkzNzAsIDM5Mzc1LCAzOTM4MSwgCi0gICAgMzkzOTEsIDM5Mzk2LCAzOTQwMSwgMzk0MDUsIDcyMjksIDcyNDEsIDM5NDEwLCAzOTQxMywgMzk0MjAsIDM5NDI2LCAKLSAgICAzNDA4NCwgMzQwOTEsIDM5NDM1LCAzOTQzOSwgMzIwNDEsIDM5NDQ3LCAzOTQ1OCwgMzk0NjYsIDM2MDIwLCAzOTQ3MywgCi0gICAgMzk0NzgsIDM5NDgzLCAzOTQ5NCwgMzk1MDEsIDM5NTEyLCAzMjA2NSwgMjE0NTcsIDM5NTIwLCA3MzUsIDM5NTI1LCAKLSAgICAzOTUzMSwgMjgwNTEsIDM5NTM3LCAzOTU0MiwgMzk1NTIsIDM5NTYxLCAzOTU2OCwgMzk1NzQsIDM5NTc4LCAzOTU4MSwgCi0gICAgMzk1ODgsIDM5NTk0LCAzOTYwMSwgMzk2MDcsIDM5NjE3LCAzOTYyNSwgMzk2MzEsIDM5NjM3LCAzOTY0MiwgMzk2NDYsIAotICAgIDM5NjUzLCAzOTY1OSwgMzk2NjYsIDM4OTE3LCA1MzUsIDEzODE4LCAzOTY3MiwgMzk2NzcsIDM5NjgwLCAzOTY4NiwgCi0gICAgMzk2OTQsIDEzOTYsIDM5Njk5LCAzOTcwMywgMzk3MDgsIDM5NzE1LCAzOTcyMSwgMzk3MjUsIDM5NzI5LCAzOTczNCwgCi0gICAgMzk3NDMsIDM5NzUwLCAzOTc2MCwgMzk3NjYsIDI4MDk1LCAzOTc4MywgMzk3OTIsIDM5ODAwLCAzOTgwNiwgMzk4MTEsIAotICAgIDM5ODE4LCAzOTgyNCwgMzk4MzIsIDM5ODQxLCAzOTg0OSwgMzk4NTMsIDM5ODU4LCAzOTg2NiwgMzIwNzQsIDM5ODcyLCAKLSAgICAzOTg5MSwgMTU4MjQsIDM5OTA1LCAzOTkyMSwgMzk5MzUsIDM5OTQxLCAzOTk0NiwgMzk5NTEsIDM5OTU2LCAzOTk2MiwgCi0gICAgMzIwODAsIDM5OTY3LCAzOTk3NCwgMzk5NzksIDM5OTgzLCAzNDUsIDI5MzYsIDM5OTkwLCAzOTk5NSwgNDAwMDAsIDI3MzIyLCAKLSAgICAzOTgyMSwgNDAwMDQsIDQwMDA5LCA0MDAxNywgNDAwMjEsIDQwMDI0LCA0MDAzMCwgNDAwMzYsIDQwMDQwLCAyODE1MCwgCi0gICAgNDAwNDMsIDQwMDQ4LCA0MDA1MiwgNDAwNTUsIDQwMDYwLCA0MDA2NCwgNDAwNjksIDQwMDc0LCA0MDA3OCwgNDAwODMsIAotICAgIDQwMDg3LCA0MDA5MSwgMjExNzksIDIxMTkwLCA0MDA5NSwgNDAxMDAsIDQwMTA2LCAyNjk1MywgNDAxMTEsIDQwMTE1LCAKLSAgICAyMTI2NiwgMTYwNzIsIDQwMTE4LCA0MDEyMywgNDAxMjgsIDQwMTMzLCA0MDEzOCwgNDAxNDMsIDQwMTQ4LCA0MDE1MywgCi0gICAgNDUwLCA0OSwgMzEyOTksIDMxMzA0LCAzMTMwOSwgMzEzMTUsIDMxMzIwLCAzMTMyNSwgNDAxNTgsIDMxMzI5LCA0MDE2MiwgCi0gICAgNDAxNjYsIDQwMTcwLCAzMTMzNCwgMzEzNDAsIDQwMTg0LCAzMTM1MSwgMzEzNTYsIDQwMTkyLCA0MDE5NywgMzEzNjIsIAotICAgIDQwMjAyLCA0MDIwNywgNDAyMTIsIDQwMjE3LCA0MDIyMywgNDAyMjksIDQwMjM1LCAzMTM3OSwgNDAyNDgsIDQwMjU0LCAKLSAgICAzMTM4MywgNDAyNTgsIDMxMzg4LCA0MDI2MywgMzEzOTMsIDMxMzk4LCA0MDI2NiwgNDAyNzEsIDQwMjc1LCAzMDk0OCwgCi0gICAgNDAyODEsIDEzNTk5LCA0MDI4OCwgNDAyOTMsIDMxNDAzLCA0MDI5NywgNDAzMDIsIDQwMzA3LCA0MDMxMiwgNDAzMTYsIAotICAgIDQwMzIxLCA0MDMyNiwgNDAzMzIsIDQwMzM3LCA0MDM0MiwgNDAzNDgsIDQwMzU0LCA0MDM1OSwgNDAzNjMsIDQwMzY4LCAKLSAgICA0MDM3MywgNDAzNzgsIDQwMzgyLCA0MDM4NywgNDAzOTIsIDQwMzk3LCA0MDQwMywgNDA0MDksIDQwNDE1LCA0MDQyMCwgCi0gICAgNDA0MjQsIDQwNDI5LCA0MDQzMywgMzE0MDcsIDMxNDEyLCAzMTQxNywgNDA0MzcsIDQwNDQxLCA0MDQ0NSwgMzE0MjIsIAotICAgIDMxNDI4LCAzMTQzNCwgMzE0NDYsIDQwNDU3LCAyNjAxMywgNDA0NjEsIDQwNDY1LCA0MDQ3MCwgNDA0NzUsIDQwNDgwLCAKLSAgICA0MDQ4NSwgNDA0ODksIDQwNDkzLCA0MDUwMywgNDA1MDgsIDQwNTEzLCA0MDUxNywgNDA1MjEsIDQwNTI0LCA0MDUzMiwgCi0gICAgMzE0OTQsIDQwNTM3LCAxNDc5LCA0MDU0MywgNDA1NTEsIDQwNTYwLCA0MDU2NCwgNDA1NjgsIDQwNTc2LCA0MDU4MiwgCi0gICAgNDA1OTAsIDQwNjA2LCA0MDYxMCwgNDA2MTQsIDQwNjE5LCA0MDYzNCwgMzE1MzEsIDE3NDksIDEyMDU1LCA0MDYzOCwgCi0gICAgMTM3OCwgNDA2NTAsIDQwNjUxLCA0MDY1OSwgNDA2NjYsIDQwNjcxLCA0MDY3OCwgNDA2ODMsIDkzNzksIDExMTksIDEwMzMyLCAKLSAgICA0MDY5MCwgNDA2OTUsIDQwNjk4LCA0MDcwMSwgNDA3MTAsIDEyODYsIDQwNzE1LCAzOTA2NSwgNDA3MjIsIDQwNzI3LCAKLSAgICA0MDczMSwgMjI1MDMsIDI1NTcsIDQwNzM5LCAxMDc0MSwgNDA3NDksIDQwNzU1LCAyMzM3LCAyMzQ3LCA0MDc2NCwgNDA3NzMsIAotICAgIDQwNzgzLCA0MDc5NCwgMzI5MywgMzQyMzcsIDEwMzg0LCAzODA3LCAxNjY4MSwgMTI5MSwgNDA3OTksIDQwODA3LCA0MDgxNCwgCi0gICAgNDA4MTksIDQwODIzLCA0MDgyNywgMjM4NzUsIDEwNDExLCA0MDgzNSwgNDA4NDQsIDQwODUzLCA0MDg2MSwgNDA4NjgsIAotICAgIDQwODc5LCA0MDg4NCwgNDA4OTcsIDQwOTEwLCA0MDkyMiwgNDA5MzQsIDQwOTQ2LCA0MDk1OSwgNDA5NzAsIDQwOTgxLCAKLSAgICA0MDk5MSwgNDA5OTksIDQxMDA3LCA0MTAxOSwgNDEwMzEsIDQxMDQyLCA0MTA1MSwgNDEwNTksIDQxMDY2LCA0MTA3OCwgCi0gICAgNDEwODUsIDQxMDk0LCA0MTEwMSwgNDExMTQsIDQxMTE5LCA0MTEyOSwgNDExMzQsIDQxMTQwLCA0MTE0NSwgMzcyMTEsIAotICAgIDQxMTQ5LCA0MTE1NiwgNDExNjAsIDQxMTY3LCA0MTE3NSwgMjUxOCwgNDExODIsIDQxMTkzLCA0MTIwMywgNDEyMTIsIAotICAgIDQxMjIwLCA0MTIzMCwgNDEyMzgsIDQxMjQ4LCA0MTI1NywgNDEyNjIsIDQxMjY4LCA0MTI3NCwgMzcwOSwgNDEyODUsIAotICAgIDQxMjk1LCA0MTMwNCwgNDEzMTMsIDQxMzIzLCA0MTMzMSwgNDEzNDAsIDQxMzQ1LCA0MTM1MCwgNDEzNTUsIDE3MDUsIDM3LCAKLSAgICA0MTM2MywgNDEzNzEsIDQxMzgyLCA0MTM5MywgMTYzNTYsIDQxNDAzLCA0MTQwNywgNDE0MTQsIDQxNDIwLCA0MTQyNSwgCi0gICAgNDE0MjksIDQxNDQwLCA0MTQ1MCwgNDE0NTksIDQxNDcwLCAxNjczMCwgMTY3MzUsIDQxNDc1LCA0MTQ4NCwgNDE0ODksIAotICAgIDQxNDk5LCA0MTUwNCwgNDE1MTIsIDQxNTIwLCA0MTUyNywgNDE1MzMsIDcwNzgsIDIyOCwgNDE1MzcsIDQxNTQzLCA0MTU0OCwgCi0gICAgNDE1NTEsIDIxMTcsIDM5MTgxLCA0MTU1OSwgNDE1NjMsIDQxNTY2LCAxNTEyLCA0MTU3MiwgMTM5ODAsIDEyOTYsIDQxNTc3LCAKLSAgICA0MTU5MCwgNDE2MDQsIDI2NDMsIDQxNjIyLCA0MTYzNCwgNDE2NDYsIDI2NTcsIDI2NzQsIDQxNjYwLCA0MTY3MywgMjY4OSwgCi0gICAgNDE2ODcsIDQxNjk5LCAyNzA0LCA0MTcxMywgMTMwMiwgMTMwOCwgMTMxNCwgMTA2NTksIDQxNzE4LCA0MTcyMywgNDE3MjgsIAotICAgIDQxNzMyLCA0MTc0NywgNDE3NjIsIDQxNzc3LCA0MTc5MiwgNDE4MDcsIDQxODIyLCA0MTgzNywgNDE4NTIsIDQxODY3LCAKLSAgICA0MTg4MiwgNDE4OTcsIDQxOTEyLCA0MTkyNywgNDE5NDIsIDQxOTU3LCA0MTk3MiwgNDE5ODcsIDQyMDAyLCA0MjAxNywgCi0gICAgNDIwMzIsIDQyMDQ3LCA0MjA2MiwgNDIwNzcsIDQyMDkyLCA0MjEwNywgNDIxMjIsIDQyMTM3LCA0MjE1MiwgNDIxNjcsIAotICAgIDQyMTgyLCA0MjE5NywgNDIyMTIsIDQyMjI3LCA0MjI0MiwgNDIyNTcsIDQyMjcyLCA0MjI4NywgNDIzMDIsIDQyMzE3LCAKLSAgICA0MjMzMiwgNDIzNDcsIDQyMzYyLCA0MjM3NywgNDIzOTIsIDQyNDA3LCA0MjQyMiwgNDI0MzcsIDQyNDUyLCA0MjQ2NywgCi0gICAgNDI0ODIsIDQyNDk3LCA0MjUxMiwgNDI1MjcsIDQyNTQyLCA0MjU1NywgNDI1NzIsIDQyNTg3LCA0MjYwMiwgNDI2MTcsIAotICAgIDQyNjMyLCA0MjY0NywgNDI2NjIsIDQyNjc3LCA0MjY5MiwgNDI3MDcsIDQyNzIyLCA0MjczNywgNDI3NTIsIDQyNzY3LCAKLSAgICA0Mjc4MiwgNDI3OTcsIDQyODEyLCA0MjgyNywgNDI4NDIsIDQyODU3LCA0Mjg3MiwgNDI4ODcsIDQyOTAyLCA0MjkxNywgCi0gICAgNDI5MzIsIDQyOTQ3LCA0Mjk2MiwgNDI5NzcsIDQyOTkyLCA0MzAwNywgNDMwMjIsIDQzMDM3LCA0MzA1MiwgNDMwNjcsIAotICAgIDQzMDgyLCA0MzA5NywgNDMxMTIsIDQzMTI3LCA0MzE0MiwgNDMxNTcsIDQzMTcyLCA0MzE4NywgNDMyMDIsIDQzMjE3LCAKLSAgICA0MzIzMiwgNDMyNDcsIDQzMjYyLCA0MzI3NywgNDMyOTIsIDQzMzA3LCA0MzMyMiwgNDMzMzcsIDQzMzUyLCA0MzM2NywgCi0gICAgNDMzODIsIDQzMzk3LCA0MzQxMiwgNDM0MjcsIDQzNDQyLCA0MzQ1NywgNDM0NzIsIDQzNDg3LCA0MzUwMiwgNDM1MTcsIAotICAgIDQzNTMyLCA0MzU0NywgNDM1NjIsIDQzNTc3LCA0MzU5MiwgNDM2MDcsIDQzNjIyLCA0MzYzNywgNDM2NTIsIDQzNjY3LCAKLSAgICA0MzY4MiwgNDM2OTcsIDQzNzEyLCA0MzcyNywgNDM3NDIsIDQzNzU3LCA0Mzc3MiwgNDM3ODcsIDQzODAyLCA0MzgxNywgCi0gICAgNDM4MzIsIDQzODQ3LCA0Mzg2MiwgNDM4NzcsIDQzODkyLCA0MzkwNywgNDM5MjIsIDQzOTM3LCA0Mzk1MiwgNDM5NjcsIAotICAgIDQzOTgyLCA0Mzk5NywgNDQwMTIsIDQ0MDI3LCA0NDA0MiwgNDQwNTcsIDQ0MDcyLCA0NDA4NywgNDQxMDIsIDQ0MTE3LCAKLSAgICA0NDEzMiwgNDQxNDcsIDQ0MTYyLCA0NDE3NywgNDQxOTIsIDQ0MjA3LCA0NDIyMiwgNDQyMzcsIDQ0MjUyLCA0NDI2NywgCi0gICAgNDQyODIsIDQ0Mjk3LCA0NDMxMiwgNDQzMjcsIDQ0MzQyLCA0NDM1NywgNDQzNzIsIDQ0Mzg3LCA0NDQwMiwgNDQ0MTcsIAotICAgIDQ0NDMyLCA0NDQ0NywgNDQ0NjIsIDQ0NDc3LCA0NDQ5MiwgNDQ1MDcsIDQ0NTIyLCA0NDUzNywgNDQ1NTIsIDQ0NTY3LCAKLSAgICA0NDU4MiwgNDQ1OTcsIDQ0NjEyLCA0NDYyNywgNDQ2NDIsIDQ0NjU3LCA0NDY3MiwgNDQ2ODcsIDQ0NzAyLCA0NDcxNywgCi0gICAgNDQ3MzIsIDQ0NzQ3LCA0NDc2MiwgNDQ3NzcsIDQ0NzkyLCA0NDgwNywgNDQ4MjIsIDQ0ODM3LCA0NDg1MiwgNDQ4NjcsIAotICAgIDQ0ODgyLCA0NDg5NywgNDQ5MTIsIDQ0OTI3LCA0NDk0MiwgNDQ5NTcsIDQ0OTcyLCA0NDk4NywgNDUwMDIsIDQ1MDE3LCAKLSAgICA0NTAzMiwgNDUwNDcsIDQ1MDYyLCA0NTA3NywgNDUwOTIsIDQ1MTA3LCA0NTEyMiwgNDUxMzcsIDQ1MTUyLCA0NTE2NywgCi0gICAgNDUxODIsIDQ1MTk3LCA0NTIxMiwgNDUyMjcsIDQ1MjQyLCA0NTI1NywgNDUyNzIsIDQ1Mjg3LCA0NTMwMiwgNDUzMTcsIAotICAgIDQ1MzMyLCA0NTM0NywgNDUzNjIsIDQ1Mzc3LCA0NTM5MiwgNDU0MDcsIDQ1NDIyLCA0NTQzNywgNDU0NTIsIDQ1NDY3LCAKLSAgICA0NTQ4MiwgNDU0OTcsIDQ1NTEyLCA0NTUyNywgNDU1NDIsIDQ1NTU3LCA0NTU3MiwgNDU1ODcsIDQ1NjAyLCA0NTYxNywgCi0gICAgNDU2MzIsIDQ1NjQ3LCA0NTY2MiwgNDU2NzcsIDQ1NjkyLCA0NTcwNywgNDU3MjIsIDQ1NzM3LCA0NTc1MiwgNDU3NjcsIAotICAgIDQ1NzgyLCA0NTc5NywgNDU4MTIsIDQ1ODI3LCA0NTg0MiwgNDU4NTcsIDQ1ODcyLCA0NTg4NywgNDU5MDIsIDQ1OTE3LCAKLSAgICA0NTkzMiwgNDU5NDcsIDQ1OTYyLCA0NTk3NywgNDU5OTIsIDQ2MDA3LCA0NjAyMiwgNDYwMzcsIDQ2MDUyLCA0NjA2NywgCi0gICAgNDYwODIsIDQ2MDk3LCA0NjExMiwgNDYxMjcsIDQ2MTQyLCA0NjE1NywgNDYxNzIsIDQ2MTg3LCA0NjIwMiwgNDYyMTcsIAotICAgIDQ2MjMyLCA0NjI0NywgNDYyNjIsIDQ2Mjc3LCA0NjI5MiwgNDYzMDcsIDQ2MzIyLCA0NjMzNywgNDYzNTIsIDQ2MzY3LCAKLSAgICA0NjM4MiwgNDYzOTcsIDQ2NDEyLCA0NjQyNywgNDY0NDIsIDQ2NDU3LCA0NjQ3MiwgNDY0ODcsIDQ2NTAyLCA0NjUxNywgCi0gICAgNDY1MzIsIDQ2NTQ3LCA0NjU2MiwgNDY1NzcsIDQ2NTkyLCA0NjYwNywgNDY2MjIsIDQ2NjM3LCA0NjY1MiwgNDY2NjcsIAotICAgIDQ2NjgyLCA0NjY5NywgNDY3MTIsIDQ2NzI3LCA0Njc0MiwgNDY3NTcsIDQ2NzcyLCA0Njc4NywgNDY4MDIsIDQ2ODE3LCAKLSAgICA0NjgzMiwgNDY4NDcsIDQ2ODYyLCA0Njg3NywgNDY4OTIsIDQ2OTA3LCA0NjkyMiwgNDY5MzcsIDQ2OTUyLCA0Njk2NywgCi0gICAgNDY5ODIsIDQ2OTk3LCA0NzAxMiwgNDcwMjcsIDQ3MDQyLCA0NzA1NywgNDcwNzIsIDQ3MDg3LCA0NzEwMiwgNDcxMTcsIAotICAgIDQ3MTMyLCA0NzE0NywgNDcxNjIsIDQ3MTc3LCA0NzE5MiwgNDcyMDcsIDQ3MjIyLCA0NzIzNywgNDcyNTIsIDQ3MjY3LCAKLSAgICA0NzI4MiwgNDcyOTcsIDQ3MzEyLCA0NzMyNywgNDczNDIsIDQ3MzU3LCA0NzM3MiwgNDczODcsIDQ3NDAyLCA0NzQxNywgCi0gICAgNDc0MzIsIDQ3NDQ3LCA0NzQ2MiwgNDc0NzcsIDQ3NDkyLCA0NzUwNywgNDc1MjIsIDQ3NTM3LCA0NzU1MiwgNDc1NjcsIAotICAgIDQ3NTgyLCA0NzU5NywgNDc2MTIsIDQ3NjI3LCA0NzY0MiwgNDc2NTcsIDQ3NjcyLCA0NzY4NywgNDc3MDIsIDQ3NzE3LCAKLSAgICA0NzczMiwgNDc3NDcsIDQ3NzYyLCA0Nzc3NywgNDc3OTIsIDQ3ODA3LCA0NzgyMiwgNDc4MzcsIDQ3ODUyLCA0Nzg2NywgCi0gICAgNDc4ODIsIDQ3ODk3LCA0NzkxMiwgNDc5MjcsIDQ3OTQyLCA0Nzk1NywgNDc5NzIsIDQ3OTg3LCA0ODAwMiwgNDgwMTcsIAotICAgIDQ4MDMyLCA0ODA0NywgNDgwNjIsIDQ4MDc3LCA0ODA5MiwgNDgxMDcsIDQ4MTIyLCA0ODEzNywgNDgxNTIsIDQ4MTY3LCAKLSAgICA0ODE4MiwgNDgxOTcsIDQ4MjEyLCA0ODIyNywgNDgyNDIsIDQ4MjU3LCA0ODI3MiwgNDgyODcsIDQ4MzAyLCA0ODMxNywgCi0gICAgNDgzMzIsIDQ4MzQ3LCA0ODM2MiwgNDgzNzcsIDQ4MzkyLCA0ODQwNywgNDg0MjIsIDQ4NDM3LCA0ODQ1MiwgNDg0NjcsIAotICAgIDQ4NDgyLCA0ODQ5NywgNDg1MTIsIDQ4NTI3LCA0ODU0MiwgNDg1NTcsIDQ4NTcyLCA0ODU4NywgNDg2MDIsIDQ4NjE3LCAKLSAgICA0ODYzMiwgNDg2NDcsIDQ4NjYyLCA0ODY3NywgNDg2OTIsIDQ4NzA3LCA0ODcyMiwgNDg3MzcsIDQ4NzUyLCA0ODc2NywgCi0gICAgNDg3ODIsIDQ4Nzk3LCA0ODgxMiwgNDg4MjcsIDQ4ODQyLCA0ODg1NywgNDg4NzIsIDQ4ODg3LCA0ODkwMiwgNDg5MTcsIAotICAgIDQ4OTMyLCA0ODk0NywgNDg5NjIsIDQ4OTc3LCA0ODk5MiwgNDkwMDcsIDQ5MDIyLCA0OTAzNywgNDkwNTIsIDQ5MDY3LCAKLSAgICA0OTA4MiwgNDkwOTcsIDQ5MTEyLCA0OTEyNywgNDkxNDIsIDQ5MTU3LCA0OTE3MiwgNDkxODcsIDQ5MjAyLCA0OTIxNywgCi0gICAgNDkyMzIsIDQ5MjQ3LCA0OTI2MiwgNDkyNzcsIDQ5MjkyLCA0OTMwNywgNDkzMjIsIDQ5MzM3LCA0OTM1MiwgNDkzNjcsIAotICAgIDQ5MzgyLCA0OTM5NywgNDk0MTIsIDQ5NDI3LCA0OTQ0MiwgNDk0NTcsIDQ5NDcyLCA0OTQ4NywgNDk1MDIsIDQ5NTE3LCAKLSAgICA0OTUzMiwgNDk1NDgsIDQ5NTY0LCA0OTU4MCwgNDk1OTYsIDQ5NjEyLCA0OTYyOCwgNDk2NDQsIDQ5NjYwLCA0OTY3NiwgCi0gICAgNDk2OTIsIDQ5NzA4LCA0OTcyNCwgNDk3NDAsIDQ5NzU2LCA0OTc3MiwgNDk3ODgsIDQ5ODA0LCA0OTgyMCwgNDk4MzYsIAotICAgIDQ5ODUyLCA0OTg2OCwgNDk4ODQsIDQ5OTAwLCA0OTkxNiwgNDk5MzIsIDQ5OTQ4LCA0OTk2NCwgNDk5ODAsIDQ5OTk2LCAKLSAgICA1MDAxMiwgNTAwMjgsIDUwMDQ0LCA1MDA2MCwgNTAwNzYsIDUwMDkyLCA1MDEwOCwgNTAxMjQsIDUwMTQwLCA1MDE1NiwgCi0gICAgNTAxNzIsIDUwMTg4LCA1MDIwNCwgNTAyMjAsIDUwMjM2LCA1MDI1MiwgNTAyNjgsIDUwMjg0LCA1MDMwMCwgNTAzMTYsIAotICAgIDUwMzMyLCA1MDM0OCwgNTAzNjQsIDUwMzgwLCA1MDM5NiwgNTA0MTIsIDUwNDI4LCA1MDQ0NCwgNTA0NjAsIDUwNDc2LCAKLSAgICA1MDQ5MiwgNTA1MDgsIDUwNTI0LCA1MDU0MCwgNTA1NTYsIDUwNTcyLCA1MDU4OCwgNTA2MDQsIDUwNjIwLCA1MDYzNiwgCi0gICAgNTA2NTIsIDUwNjY4LCA1MDY4NCwgNTA3MDAsIDUwNzE2LCA1MDczMiwgNTA3NDgsIDUwNzY0LCA1MDc4MCwgNTA3OTYsIAotICAgIDUwODEyLCA1MDgyOCwgNTA4NDQsIDUwODYwLCA1MDg3NiwgNTA4OTIsIDUwOTA4LCA1MDkyNCwgNTA5NDAsIDUwOTU2LCAKLSAgICA1MDk3MiwgNTA5ODgsIDUxMDA0LCA1MTAyMCwgNTEwMzYsIDUxMDUyLCA1MTA2OCwgNTEwODQsIDUxMTAwLCA1MTExNiwgCi0gICAgNTExMzIsIDUxMTQ4LCA1MTE2NCwgNTExODAsIDUxMTk2LCA1MTIxMiwgNTEyMjgsIDUxMjQ0LCA1MTI2MCwgNTEyNzYsIAotICAgIDUxMjkyLCA1MTMwOCwgNTEzMjQsIDUxMzQwLCA1MTM1NiwgNTEzNzIsIDUxMzg4LCA1MTQwNCwgNTE0MjAsIDUxNDM2LCAKLSAgICA1MTQ1MiwgNTE0NjgsIDUxNDg0LCA1MTUwMCwgNTE1MTYsIDUxNTMyLCA1MTU0OCwgNTE1NjQsIDUxNTgwLCA1MTU5NiwgCi0gICAgNTE2MTIsIDUxNjI4LCA1MTY0NCwgNTE2NjAsIDUxNjc2LCA1MTY5MiwgNTE3MDgsIDUxNzI0LCA1MTc0MCwgNTE3NTYsIAotICAgIDUxNzcyLCA1MTc4OCwgNTE4MDQsIDUxODIwLCA1MTgzNiwgNTE4NTIsIDUxODY4LCA1MTg4NCwgNTE5MDAsIDUxOTE2LCAKLSAgICA1MTkzMiwgNTE5NDgsIDUxOTY0LCA1MTk4MCwgNTE5OTYsIDUyMDEyLCA1MjAyOCwgNTIwNDQsIDUyMDYwLCA1MjA3NiwgCi0gICAgNTIwOTIsIDUyMTA4LCA1MjEyNCwgNTIxNDAsIDUyMTU2LCA1MjE3MiwgNTIxODgsIDUyMjA0LCA1MjIyMCwgNTIyMzYsIAotICAgIDUyMjUyLCA1MjI2OCwgNTIyODQsIDUyMzAwLCA1MjMxNiwgNTIzMzIsIDUyMzQ4LCA1MjM2NCwgNTIzODAsIDUyMzk2LCAKLSAgICA1MjQxMiwgNTI0MjgsIDUyNDQ0LCA1MjQ2MCwgNTI0NzYsIDUyNDkyLCA1MjUwOCwgNTI1MjQsIDUyNTQwLCA1MjU1NiwgCi0gICAgNTI1NzIsIDUyNTg4LCA1MjYwNCwgNTI2MjAsIDUyNjM2LCA1MjY1MiwgNTI2NjgsIDUyNjg0LCA1MjcwMCwgNTI3MTYsIAotICAgIDUyNzMyLCA1Mjc0OCwgNTI3NjQsIDUyNzgwLCA1Mjc5NiwgNTI4MTIsIDUyODI4LCA1Mjg0NCwgNTI4NjAsIDUyODc2LCAKLSAgICA1Mjg5MiwgNTI5MDgsIDUyOTI0LCA1Mjk0MCwgNTI5NTYsIDUyOTcyLCA1Mjk4OCwgNTMwMDQsIDUzMDIwLCA1MzAzNiwgCi0gICAgNTMwNTIsIDUzMDY4LCA1MzA4NCwgNTMxMDAsIDUzMTE2LCA1MzEzMiwgNTMxNDgsIDUzMTY0LCA1MzE4MCwgNTMxOTYsIAotICAgIDUzMjEyLCA1MzIyOCwgNTMyNDQsIDUzMjYwLCA1MzI3NiwgNTMyOTIsIDUzMzA4LCA1MzMyNCwgNTMzNDAsIDUzMzU2LCAKLSAgICA1MzM3MiwgNTMzODgsIDUzNDA0LCA1MzQyMCwgNTM0MzYsIDUzNDUyLCA1MzQ2OCwgNTM0ODQsIDUzNTAwLCA1MzUxNiwgCi0gICAgNTM1MzIsIDUzNTQ4LCA1MzU2NCwgNTM1ODAsIDUzNTk2LCA1MzYxMiwgNTM2MjgsIDUzNjQ0LCA1MzY2MCwgNTM2NzYsIAotICAgIDUzNjkyLCA1MzcwOCwgNTM3MjQsIDUzNzQwLCA1Mzc1NiwgNTM3NzIsIDUzNzg4LCA1MzgwNCwgNTM4MjAsIDUzODM2LCAKLSAgICA1Mzg1MiwgNTM4NjgsIDUzODg0LCA1MzkwMCwgNTM5MTYsIDUzOTMyLCA1Mzk0OCwgNTM5NjQsIDUzOTgwLCA1Mzk5NiwgCi0gICAgNTQwMTIsIDU0MDI4LCA1NDA0NCwgNTQwNjAsIDU0MDc2LCA1NDA5MiwgNTQxMDgsIDU0MTI0LCA1NDE0MCwgNTQxNTYsIAotICAgIDU0MTcyLCA1NDE4OCwgNTQyMDQsIDU0MjIwLCA1NDIzNiwgNTQyNTIsIDU0MjY4LCA1NDI4NCwgNTQzMDAsIDU0MzE2LCAKLSAgICA1NDMzMiwgNTQzNDgsIDU0MzY0LCA1NDM4MCwgNTQzOTYsIDU0NDEyLCA1NDQyOCwgNTQ0NDQsIDU0NDYwLCA1NDQ3NiwgCi0gICAgNTQ0OTIsIDU0NTA4LCA1NDUyNCwgNTQ1NDAsIDU0NTU2LCA1NDU3MiwgNTQ1ODgsIDU0NjA0LCA1NDYyMCwgNTQ2MzYsIAotICAgIDU0NjUyLCA1NDY2OCwgNTQ2ODQsIDU0NzAwLCA1NDcxNiwgNTQ3MzIsIDU0NzQ4LCA1NDc2NCwgNTQ3ODAsIDU0Nzk2LCAKLSAgICA1NDgxMiwgNTQ4MjgsIDU0ODQ0LCA1NDg2MCwgNTQ4NzYsIDU0ODkyLCA1NDkwOCwgNTQ5MjQsIDU0OTQwLCA1NDk1NiwgCi0gICAgNTQ5NzIsIDU0OTg4LCA1NTAwNCwgNTUwMjAsIDU1MDM2LCA1NTA1MiwgNTUwNjgsIDU1MDg0LCA1NTEwMCwgNTUxMTYsIAotICAgIDU1MTMyLCA1NTE0OCwgNTUxNjQsIDU1MTgwLCA1NTE5NiwgNTUyMTIsIDU1MjI4LCA1NTI0NCwgNTUyNjAsIDU1Mjc2LCAKLSAgICA1NTI5MiwgNTUzMDgsIDU1MzI0LCA1NTM0MCwgNTUzNTYsIDU1MzcyLCA1NTM4OCwgNTU0MDQsIDU1NDIwLCA1NTQzNiwgCi0gICAgNTU0NTIsIDU1NDY4LCA1NTQ4NCwgNTU1MDAsIDU1NTE2LCA1NTUzMiwgNTU1NDgsIDU1NTY0LCA1NTU4MCwgNTU1OTYsIAotICAgIDU1NjEyLCA1NTYyOCwgNTU2NDQsIDU1NjYwLCA1NTY3NiwgNTU2OTIsIDU1NzA4LCA1NTcyNCwgNTU3NDAsIDU1NzU2LCAKLSAgICA1NTc3MiwgNTU3ODgsIDU1ODA0LCA1NTgyMCwgNTU4MzYsIDU1ODUyLCA1NTg2OCwgNTU4ODQsIDU1OTAwLCA1NTkxNiwgCi0gICAgNTU5MzIsIDU1OTQ4LCA1NTk2NCwgNTU5ODAsIDU1OTk2LCA1NjAxMiwgNTYwMjgsIDU2MDQ0LCA1NjA2MCwgNTYwNzYsIAotICAgIDU2MDkyLCA1NjEwOCwgNTYxMjQsIDU2MTQwLCA1NjE1NiwgNTYxNzIsIDU2MTg4LCA1NjIwNCwgNTYyMjAsIDU2MjM2LCAKLSAgICA1NjI1MiwgNTYyNjgsIDU2Mjg0LCA1NjMwMCwgNTYzMTYsIDU2MzMyLCA1NjM0OCwgNTYzNjQsIDU2MzgwLCA1NjM5NiwgCi0gICAgNTY0MTIsIDU2NDI4LCA1NjQ0NCwgNTY0NjAsIDU2NDc2LCA1NjQ5MiwgNTY1MDgsIDU2NTI0LCA1NjU0MCwgNTY1NTYsIAotICAgIDU2NTcyLCA1NjU4OCwgNTY2MDQsIDU2NjIwLCA1NjYzNiwgNTY2NTIsIDU2NjY4LCA1NjY4NCwgNTY3MDAsIDU2NzE2LCAKLSAgICA1NjczMiwgNTY3NDgsIDU2NzY0LCA1Njc4MCwgNTY3OTYsIDU2ODEyLCA1NjgyOCwgNTY4NDQsIDU2ODYwLCA1Njg3NiwgCi0gICAgNTY4OTIsIDU2OTA4LCA1NjkyNCwgNTY5NDAsIDU2OTU2LCA1Njk3MiwgNTY5ODgsIDU3MDA0LCA1NzAyMCwgNTcwMzYsIAotICAgIDU3MDUyLCA1NzA2OCwgNTcwODQsIDU3MTAwLCA1NzExNiwgNTcxMzIsIDU3MTQ4LCA1NzE2NCwgNTcxODAsIDU3MTk2LCAKLSAgICA1NzIxMiwgNTcyMjgsIDU3MjQ0LCA1NzI2MCwgNTcyNzYsIDU3MjkyLCA1NzMwOCwgNTczMjQsIDU3MzQwLCA1NzM1NiwgCi0gICAgNTczNzIsIDU3Mzg4LCA1NzQwNCwgNTc0MjAsIDU3NDM2LCA1NzQ1MiwgNTc0NjgsIDU3NDg0LCA1NzUwMCwgNTc1MTYsIAotICAgIDU3NTMyLCA1NzU0OCwgNTc1NjQsIDU3NTgwLCA1NzU5NiwgNTc2MTIsIDU3NjI4LCA1NzY0NCwgNTc2NjAsIDU3Njc2LCAKLSAgICA1NzY5MiwgNTc3MDgsIDU3NzI0LCA1Nzc0MCwgNTc3NTYsIDU3NzcyLCA1Nzc4OCwgNTc4MDQsIDU3ODIwLCA1NzgzNiwgCi0gICAgNTc4NTIsIDU3ODY4LCA1Nzg4NCwgNTc5MDAsIDU3OTE2LCA1NzkzMiwgNTc5NDgsIDU3OTY0LCA1Nzk4MCwgNTc5OTYsIAotICAgIDU4MDEyLCA1ODAyOCwgNTgwNDQsIDU4MDYwLCA1ODA3NiwgNTgwOTIsIDU4MTA4LCA1ODEyNCwgNTgxNDAsIDU4MTU2LCAKLSAgICA1ODE3MiwgNTgxODgsIDU4MjA0LCA1ODIxOSwgMTY3NjIsIDU4MjI4LCA1ODIzNCwgNTgyNDAsIDU4MjUwLCA1ODI1OCwgCi0gICAgMTQ4OTQsIDE1NDQ1LCA5OTYwLCA1ODI3MSwgMTUyMCwgNTgyNzksIDM3NjEsIDI3NDMyLCA3MTgzLCA1ODI4NSwgNTgyOTAsIAotICAgIDU4Mjk1LCA1ODMwMCwgNTgzMDUsIDU4MzExLCA1ODMxNiwgNTgzMjIsIDU4MzI3LCA1ODMzMywgNTgzMzgsIDU4MzQzLCAKLSAgICA1ODM0OCwgNTgzNTMsIDU4MzU5LCA1ODM2NCwgNTgzNjksIDU4Mzc0LCA1ODM3OSwgNTgzODQsIDU4Mzg5LCA1ODM5NCwgCi0gICAgNTg0MDAsIDU4NDA1LCA1ODQxMSwgNTg0MTgsIDI1NjEsIDU4NDIzLCA1ODQyOSwgODUyNiwgNTg0MzMsIDU4NDM4LCAKLSAgICA1ODQ0NSwgNTg0NTMsIDQwLCA1ODQ1NywgNTg0NjMsIDU4NDY4LCA1ODQ3MywgNTg0NzcsIDU4NDgyLCA1ODQ4NiwgNTg0OTAsIAotICAgIDEwNjg0LCA1ODQ5NCwgNTg1MDQsIDU4NTE3LCA1ODUyOCwgNTg1NDEsIDU4NTQ4LCA1ODU1NCwgNTg1NTksIDU4NTY1LCAKLSAgICA1ODU3MSwgNTg1NzcsIDU4NTgyLCA1ODU4NywgNTg1OTIsIDU4NTk3LCA1ODYwMSwgNTg2MDYsIDU4NjExLCA1ODYxNiwgCi0gICAgNTg2MjIsIDU4NjI4LCA1ODYzNCwgNTg2MzksIDU4NjQzLCA1ODY0OCwgNTg2NTMsIDU4NjU3LCA1ODY2MiwgNTg2NjcsIAotICAgIDU4NjcyLCA1ODY3NiwgMTA3MDAsIDEwNzExLCAxMDcxNiwgMTU2MywgNTg2ODAsIDE1NjgsIDU4Njg2LCAxNjIzOSwgCi0gICAgNTg2ODksIDU4Njk1LCAxNTk5LCA1ODcwMSwgMTYwNSwgMTYxMSwgMTA3NDYsIDU4NzA2LCA1ODcxNCwgNTg3MjEsIDU4NzI1LCAKLSAgICA1ODczMSwgNTg3MzYsIDMwOTc3LCA1ODc0MSwgNTg3NDgsIDU4NzUzLCA1ODc1NywgNTg3NjEsIDE2MTYsIDE2MzMxLCAKLSAgICA1ODc3MCwgNTg3NzQsIDE2MzQyLCAxMTI1LCA1ODc3OCwgNTg3ODUsIDU4NzkwLCA1ODc5NCwgMTYzNjcsIDE2MjAsIAotICAgIDM3MzUwLCA1ODc5NywgNTg4MDIsIDU4ODEyLCA1ODgyMSwgNTg4MjYsIDU4ODMwLCA1ODgzNiwgMTYyNSwgMzkyNTksIAotICAgIDU4ODQxLCA1ODg1MCwgNTg4NTYsIDU4ODYxLCAxMDkwNCwgMTA5MTAsIDU4ODY3LCA1ODg3OSwgNTg4OTYsIDU4OTEzLCAKLSAgICA1ODkzMCwgNTg5NDcsIDU4OTY0LCA1ODk4MSwgNTg5OTgsIDU5MDE1LCA1OTAzMiwgNTkwNDksIDU5MDY2LCA1OTA4MywgCi0gICAgNTkxMDAsIDU5MTE3LCA1OTEzNCwgNTkxNTEsIDU5MTY4LCA1OTE4NSwgNTkyMDIsIDU5MjE5LCA1OTIzNiwgNTkyNTMsIAotICAgIDU5MjcwLCA1OTI4NywgNTkzMDQsIDU5MzIxLCA1OTMzOCwgNTkzNTUsIDU5MzcyLCA1OTM4OSwgNTk0MDYsIDU5NDIzLCAKLSAgICA1OTQ0MCwgNTk0NTcsIDU5NDc0LCA1OTQ5MSwgNTk1MDgsIDU5NTI1LCA1OTU0MiwgNTk1NTksIDU5NTc2LCA1OTU5MywgCi0gICAgNTk2MTAsIDU5NjI3LCA1OTY0NCwgNTk2NjEsIDU5Njc4LCA1OTY5NSwgNTk3MTIsIDU5NzIzLCA1OTcyOCwgMTYzMCwgCi0gICAgNTk3MzIsIDU5NzM4LCA1OTc0MywgNTk3NDgsIDkzMjYsIDE2MzUsIDU5NzU0LCA1OTc2MywgMjc3MzEsIDU5NzY4LCAKLSAgICA1OTc3OSwgNTk3ODksIDU5Nzk0LCA1OTgwMSwgNTk4MDcsIDU5ODEyLCA1OTgxNywgMTY2MTksIDU5ODIxLCAxMDkyMSwgCi0gICAgMTY0MCwgMTA5MjYsIDU5ODI3LCA1OTgzMiwgNTk4MzgsIDU5ODQzLCA1OTg0OCwgNTk4NTMsIDU5ODU4LCA1OTg2MywgCi0gICAgNTk4NjgsIDU5ODczLCA1OTg3OSwgNTk4ODUsIDU5ODkxLCA1OTg5NiwgNTk5MDAsIDU5OTA1LCA1OTkxMCwgNTk5MTQsIAotICAgIDU5OTE5LCA1OTkyNCwgNTk5MjksIDU5OTMzLCA1OTkzOCwgNTk5NDQsIDU5OTQ5LCA1OTk1NCwgNTk5NTgsIDU5OTYzLCAKLSAgICA1OTk2OCwgNTk5NzQsIDU5OTc5LCA1OTk4NCwgNTk5OTAsIDU5OTk2LCA2MDAwMSwgNjAwMDUsIDYwMDEwLCA2MDAxNSwgCi0gICAgNjAwMjAsIDYwMDI0LCA2MDAyOSwgNjAwMzQsIDYwMDM5LCA2MDA0NSwgNjAwNTEsIDYwMDU2LCA2MDA2MCwgNjAwNjQsIAotICAgIDYwMDY5LCA2MDA3NCwgNjAwNzksIDI5MTI5LCA2MDA4MywgNjAwODgsIDYwMDkzLCA2MDA5OSwgNjAxMDQsIDYwMTA5LCAKLSAgICA2MDExMywgNjAxMTgsIDYwMTIzLCA2MDEyOSwgNjAxMzQsIDYwMTM5LCA2MDE0NSwgNjAxNTEsIDYwMTU2LCA2MDE2MCwgCi0gICAgNjAxNjUsIDYwMTcwLCA2MDE3NCwgNjAxNzksIDYwMTg0LCA2MDE4OSwgNjAxOTUsIDYwMjAxLCA2MDIwNiwgNjAyMTAsIAotICAgIDYwMjE1LCA2MDIyMCwgNjAyMjQsIDYwMjI5LCA2MDIzNCwgNjAyMzksIDYwMjQzLCA2MDI0NiwgMzE2MzksIDYwMjUxLCAKLSAgICA2MDI1OSwgMTY2ODUsIDM2NjMsIDExMDE3LCA2MDI2NSwgNjAyNzUsIDYwMjkwLCAxMTAyMiwgNjAzMDEsIDYwMzA2LCAKLSAgICA2MDMxNywgNjAzMjksIDYwMzQxLCA2MDM1MywgMjY5NSwgNjAzNjUsIDYwMzcwLCA2MDM4MiwgNjAzODYsIDYwMzkyLCAKLSAgICA2MDM5OCwgNjA0MDMsIDE2NTIsIDEwNzgsIDYwNDEyLCA2MDQxNywgMzkzMDksIDYwNDIxLCA2MDQyNSwgNjA0MzAsIAotICAgIDYwNDM0LCAxNjc3MCwgNjA0MzksIDYwNDQyLCA2MDQ1MCwgNjA0NTgsIDE2NTYsIDExMDQ3LCAxMTA1MywgMTY2MSwgCi0gICAgNjA0NjYsIDYwNDczLCA2MDQ3OCwgNjA0ODcsIDYwNDk3LCA2MDUwNCwgNjA1MDksIDYwNTE0LCAxNjY2LCA2MDUyMSwgCi0gICAgNjA1MjYsIDE2ODg1LCA2MDUzMCwgNjA1MzUsIDYwNTQyLCA2MDU0OCwgNjA1NTIsIDYwNTYzLCA2MDU3MywgMTY5MDcsIAotICAgIDkyMzQsIDkyNDEsIDE2NzEsIDYwNTgwLCA2MDU4NiwgNjA1OTQsIDYwNjAxLCA2MDYwNywgNjA2MTQsIDYwNjI2LCA2MDYzMiwgCi0gICAgNjA2MzcsIDYwNjQ5LCA2MDY2MCwgNjA2NjksIDYwNjc5LCAzNzQwLCAzMDgxMywgMzA4MjIsIDE2OTQ3LCAxNjc2LCAxNjgwLCAKLSAgICA2MDY4NywgNjA2OTgsIDYwNzAzLCAxNjgzLCA2MDcxMSwgNjA3MTYsIDE2OTk4LCA2MDcyOCwgNjA3MzQsIDYwNzM5LCAKLSAgICA2MDc0NywgMTY4OCwgNjA3NTIsIDYwNzU3LCA2MDc2NSwgNjA3NzMsIDYwNzgwLCA2MDc4OSwgNjA3OTcsIDYwODA2LCAKLSAgICAxNjkzLCA2MDgxMCwgMTY5OCwgNjA4MTUsIDYwODIyLCAxNzA3MiwgNjA4MzAsIDYwODM2LCA2MDg0MSwgNjA4NDksIAotICAgIDYwODU2LCA2MDg2NCwgMjI1NzQsIDYwODY5LCAxMTE4MiwgNjA4NzgsIDYwODg0LCA2MDg5MSwgNjA4OTgsIDYwOTA0LCAKLSAgICA2MDkxNCwgNjA5MjAsIDYwOTI1LCA2MDkzNiwgNjA5NDEsIDYwOTQ5LCAxMTE5MSwgMTExOTYsIDYwOTU3LCA2MDk2MywgCi0gICAgNjA5NzEsIDM4MDUsIDE3MTE0LCAzOTM5NywgNjA5NzYsIDYwOTgyLCA2MDk4NywgNjA5OTUsIDYxMDAyLCAxMjAzNiwgCi0gICAgNjEwMDcsIDYxMDEzLCAxNzA5LCA2MTAxOCwgNjEwMjEsIDExMzIsIDYxMDI3LCA2MTAzMiwgNjEwMzcsIDYxMDQzLCAKLSAgICA2MTA0OCwgNjEwNTMsIDYxMDU4LCA2MTA2MywgNjEwNjgsIDYxMDczLCAxNzE4LCA5LCA2MTA3OSwgNjEwODMsIDYxMDg4LCAKLSAgICA2MTA5MiwgNjEwOTYsIDYxMTAwLCAzMTg3OSwgNjExMDUsIDYxMTEwLCA2MTExNSwgNjExMTksIDYxMTIyLCA2MTEyNiwgCi0gICAgNjExMzAsIDYxMTM1LCA2MTEzOSwgNjExNDQsIDYxMTQ4LCAzNDYxNiwgMzQ2MjEsIDM0NjI2LCA2MTE1MSwgNjExNTgsIAotICAgIDYxMTY0LCAzOTExOCwgNjExNzQsIDM0NjMyLCAzMjEzNywgMzE4OTQsIDMxOTAwLCAzNDY0OCwgMzE5MDYsIDYxMTc5LCAKLSAgICA2MTE4NCwgMzIxNzAsIDYxMTg4LCA2MTE5MSwgNjExOTUsIDYxMjAyLCA2MTIwNSwgNjEyMTAsIDYxMjE0LCA2MTIxOCwgCi0gICAgNjEyMjEsIDYxMjMxLCA2MTI0MywgNjEyNTAsIDYxMjU2LCA2MTI2MywgMzM1NzMsIDYxMjY2LCA4NTQzLCA4NzcsIDYxMjY5LCAKLSAgICA2MTI3MywgNjEyNzgsIDM2OTAsIDYxMjgyLCA2MTI4NSwgMTM2MzIsIDYxMjkyLCA2MTI5OSwgNjEzMTIsIDYxMzIwLCAKLSAgICA2MTMyOSwgNjEzMzgsIDYxMzQzLCA2MTM1MywgNjEzNjYsIDYxMzc4LCA2MTM4NSwgNjEzOTAsIDYxMzk5LCA2MTQxMiwgCi0gICAgMzYwNjAsIDYxNDMwLCA2MTQzNSwgNjE0NDIsIDYxNDQ4LCA2NTYsIDYxNDUzLCA2MTQ2MSwgNjE0NjgsIDI3MjcxLCA2MjcsIAotICAgIDYxNDc0LCA2MTQ4MCwgNjE0OTAsIDYxNDk2LCA2MTUwMSwgMzE5MjQsIDYwMDMsIDMxOTM4LCA2MTUwNSwgNjE1MTUsIAotICAgIDYxNTIwLCA2MTUzMCwgNjE1NDUsIDYxNTUxLCA2MTU1NywgMzE5NDgsIDYxNTYyLCAzMTA5NCwgNjE1NjYsIDYxNTcxLCAKLSAgICA2MTU3NiwgNjE1ODAsIDYxNTg1LCAxNjk1MCwgNjE1OTIsIDYxNTk3LCA2MTYwMSwgNjA0NCwgMzE5NzQsIDYxNjA1LCAKLSAgICA2MTYxMSwgMzEyLCA2MTYyMSwgNjE2MjgsIDYxNjM1LCA2MTY0MCwgNjE2NDksIDU4ODA2LCA2MTY1NSwgNjE2NjMsIAotICAgIDYxNjY3LCA2MTY3MSwgNjE2NzUsIDYxNjc5LCA2MTY4NCwgNjE2ODgsIDYxNjk0LCA2MTcwMiwgNjE3MDcsIDYxNzEyLCAKLSAgICA2MTcxNiwgNjE3MjEsIDYxNzI1LCA2MTcyOSwgNjE3MzUsIDYxNzQxLCA2MTc0NiwgNjE3NTAsIDMyMDk4LCA2MTc1NSwgCi0gICAgMzIxMDQsIDMyMTEwLCA2MTc2MCwgNjE3NjYsIDYxNzczLCA2MTc3OCwgNjE3ODIsIDMxMTExLCAxNjYxMiwgNjE3ODUsIAotICAgIDYxNzg5LCA2MTc5NCwgNjE4MDEsIDYxODA3LCA2MTgxMSwgNjE4MTYsIDM4ODI4LCA2MTgyMiwgNjE4MjYsIDYxODMwLCAKLSAgICA2MTgzNSwgNjE4NDEsIDYxODQ3LCA2MTg1OSwgNjE4NjgsIDYxODc4LCA2MTg4NCwgNjE4OTEsIDYxODk2LCA2MTkwMSwgCi0gICAgNjE5MDUsIDYxOTA4LCA2MTkxNCwgNjE5MjEsIDYxOTI2LCA2MTkzMSwgNjE5MzgsIDYxOTQ1LCA2MTk1MSwgNjE5NTYsIAotICAgIDYxOTYxLCA2MTk2OSwgMzIxMTUsIDI0MjMsIDYxOTc0LCA2MTk3OSwgNjE5ODUsIDYxOTkwLCA2MTk5NiwgNjIwMDEsIAotICAgIDYyMDA2LCA2MjAxMSwgNjIwMTcsIDMyMTM2LCA2MjAyMiwgNjIwMjgsIDYyMDM0LCA2MjA0MCwgMzIyMDAsIDYyMDQ1LCAKLSAgICA2MjA1MCwgNjIwNTUsIDMyMjExLCA2MjA2MCwgNjIwNjUsIDYyMDcwLCA2MjA3NiwgNjIwODIsIDMyMjE2LCA2MjA4NywgCi0gICAgNjIwOTIsIDYyMDk3LCAzMjI3MSwgMzIyNzcsIDYyMTAyLCA2MjEwNywgMzIyODIsIDYyMTEyLCAyNzk1OCwgMzIzMDQsIAotICAgIDMyMzA4LCA2MjExNywgNjIwOTMsIDYyMTIxLCA2MjEyOSwgNjIxMzUsIDYyMTQzLCA2MjE1MCwgNjIxNTYsIDYyMTY2LCAKLSAgICA2MjE3MiwgNjIxNzksIDEwNjMxLCAzMjMyMiwgNjIxODUsIDYyMTk4LCA2MjIwNywgNjIyMTMsIDYyMjIyLCA2MjIyOCwgCi0gICAgMjM1MTIsIDYyMjM1LCA2MjI0MiwgNjIyNTIsIDMyMjcyLCA2MjI1NSwgNjIyNjIsIDYyMjY3LCA2MjI3MSwgNjIyNzUsIAotICAgIDYyMjgwLCA2MTIwLCA2MjI4NCwgNjIyODksIDYyMjk0LCAzNDcxMCwgMzQ3MTUsIDYyMjk4LCAzNDcyOSwgNjIzMDMsIAotICAgIDM0NzM0LCA2MjMwOCwgNjIzMTQsIDM0NzQ2LCAzNDc1MiwgMzQ3NTgsIDYyMzE5LCA2MjMyNSwgMjI1MzksIDYyMzM2LCAKLSAgICA2MjMzOSwgNjIzNTEsIDYyMzU5LCAzMjM0NSwgNjIzNjMsIDYyMzcyLCA2MjM4MiwgNjIzOTEsIDMyMzU1LCA2MjM5NiwgCi0gICAgNjI0MDMsIDYyNDEyLCA2MjQxOCwgNjI0MjYsIDYyNDMzLCA2MDk1LCA0Mzk3LCA2MjQzOCwgMzIyODMsIDYyNDQ0LCAKLSAgICA2MjQ0NywgNjI0NTMsIDYyNDYwLCA2MjQ2NSwgNjI0NzAsIDIzNDIyLCA2MjQ3NCwgNjI0ODAsIDYyNDg2LCA2MjQ5MSwgCi0gICAgNjI0OTYsIDYyNTAwLCA2MjUwNiwgNjI1MTIsIDMzNDgzLCA4NjMsIDM1NzIzLCAzNjY0NCwgMzY2NTAsIDMyMzkxLCAKLSAgICA2MjUxNywgNjI1MjEsIDYyNTI1LCA2MjUyOCwgNjI1NDEsIDYyNTQ3LCA2MjU1MSwgNjI1NTQsIDYyNTU5LCAzMzc4NiwgCi0gICAgNjI1NjMsIDMxMTE2LCAyMTI4NywgNjI1NjksIDYwMjQsIDYwMzIsIDkwNzUsIDYyNTcyLCA2MjU3NywgNjI1ODIsIDYyNTg3LCAKLSAgICA2MjU5MiwgNjI1OTcsIDYyNjAyLCA2MjYwNywgNjI2MTIsIDYyNjE3LCA2MjYyMywgNjI2MjgsIDYyNjMzLCA2MjYzOSwgCi0gICAgNjI2NDQsIDYyNjQ5LCA2MjY1NCwgNjI2NTksIDYyNjY0LCA2MjY2OSwgNjI2NzUsIDYyNjgwLCA2MjY4NiwgNjI2OTEsIAotICAgIDYyNjk2LCA2MjcwMSwgNjI3MDYsIDYyNzExLCA2MjcxNiwgNjI3MjEsIDYyNzI2LCA2MjczMSwgNjI3MzYsIDYyNzQyLCAKLSAgICA2Mjc0NywgNjI3NTIsIDYyNzU3LCA2Mjc2MiwgNjI3NjcsIDYyNzcyLCA2Mjc3OCwgNjI3ODMsIDYyNzg4LCA2Mjc5MywgCi0gICAgNjI3OTgsIDYyODAzLCA2MjgwOCwgNjI4MTMsIDYyODE4LCA2MjgyMywgNjI4MjksIDYyODM0LCA2MjgzOSwgNjI4NDQsIAotICAgIDYyODQ5LCA2Mjg1NSwgNjI4NjEsIDYyODY2LCA2Mjg3MiwgNjI4NzcsIDYyODgyLCA2Mjg4NywgNjI4OTIsIDYyODk3LCAKLSAgICAxNTEzLCAyNDUsIDYyOTAyLCA2MjkwNiwgNjI5MTAsIDYyOTE0LCAyNTEzMywgNjI5MTgsIDYyOTIyLCA2MjkyNywgNjI5MzEsIAotICAgIDYyOTM2LCA2Mjk0MCwgNjI5NDUsIDYyOTUwLCA2Mjk1NSwgNjI5NTksIDYyOTYzLCA2Mjk2OCwgNjI5NzIsIDEzMzY5LCAKLSAgICA2Mjk3NywgNjI5ODEsIDYyOTg4LCA2Mjk5OCwgMTUyMDYsIDYzMDA3LCA2MzAxNiwgNjMwMjAsIDYzMDI1LCA2MzAzMCwgCi0gICAgNjMwMzQsIDI0OTI0LCAzMDE5LCA2MzAzOCwgNjMwNDQsIDE3MzYzLCA2MzA0OCwgNjMwNTcsIDYzMDY1LCA2MzA3MSwgCi0gICAgNjMwODMsIDYzMDk1LCA2MzA5OSwgNjMxMDQsIDYzMTA4LCA2MzExNCwgNjMxMjAsIDYzMTI1LCA2MzEzNSwgNjMxNDUsIAotICAgIDYzMTUxLCA2MzE1NiwgNjMxNjAsIDYzMTY1LCA2MzE3MSwgNjMxODAsIDYzMTg5LCA2MzE5NywgMTU1NjAsIDYzMjAxLCAKLSAgICA2MzIxMCwgNjMyMTgsIDYzMjMwLCA2MzI0MSwgNjMyNTIsIDYzMjYxLCA2MzI2NSwgNjMyNzQsIDYzMjg0LCA2MzI5MiwgCi0gICAgNjMyOTgsIDYzMzAzLCA2MzMwOSwgNjMzMTQsIDk4LCAzMDkyNSwgNjMzMjUsIDI2MjY2LCAyNjI3NiwgNjMzMzEsIDYzMzM4LCAKLSAgICA2MzM0NCwgNjMzNDgsIDYzMzU4LCA2MzM2OSwgNjMzNzcsIDYzMzg2LCA2MzM5MSwgNjMzOTYsIDYzNDAwLCAxNzMxNywgCi0gICAgNjM0MDgsIDYzNDEyLCA2MzQxOCwgNjM0MjgsIDYzNDM1LCA2MzQ0MSwgMzQ4MDksIDYzNDQ3LCA2MzQ0OSwgNjM0NTIsIAotICAgIDYzNDU2LCA2MzQ2NiwgNjM0NzIsIDYzNDc5LCAxMzMxNSwgNjM0ODYsIDYzNDkyLCA2MzUwMSwgNjM1MTAsIDYzNTE2LCAKLSAgICA2MzUyMiwgNjM1MjgsIDYzNTMzLCA2MzU0MCwgNjM1NDcsIDYzNTUzLCA2MzU2NiwgNjM1NzUsIDYzNTg0LCA2MzU4OSwgCi0gICAgNjM1OTMsIDYzNTk5LCA2MzYwNiwgNjM2MTMsIDYzNjIwLCA2MzYyNywgNjM2MzQsIDYzNjM5LCA2MzY0MywgNjM2NDcsIAotICAgIDYzNjUwLCA2MzY2MCwgNjM2NjQsIDYzNjc2LCA2MzY4NSwgNjM2ODksIDYzNjk0LCA2MzY5OCwgNjM3MDQsIDYzNzA5LCAKLSAgICA2MzcxNiwgNjM3MjUsIDYzNzMzLCA2Mzc0MSwgNjM3NDYsIDYzNzUwLCA2Mzc1NSwgNjM3NjAsIDYzNzcwLCA2Mzc3OCwgCi0gICAgNjM3ODMsIDYzNzg3LCA2Mzc5MSwgNjM3OTcsIDYzODA5LCA2MzgxNywgNjM4MjcsIDYzODM0LCA2Mzg0MCwgNjM4NDUsIAotICAgIDYzODQ5LCA2Mzg1MywgNjM4NTcsIDYzODY2LCA2Mzg3NSwgNjM4ODQsIDYzODkwLCA2Mzg5NiwgNjM5MDIsIDYzOTA3LCAKLSAgICA2MzkxNCwgNjM5MjAsIDYzOTI4LCA2MzkzNSwgMTI0NjMsIDYzOTQxLCA2Mzk0NywgNjM5NTEsIDE0MjQ0LCA2Mzk1NSwgCi0gICAgNjM5NjAsIDYzOTcwLCA2Mzk3OSwgNjM5ODUsIDYzOTkxLCA2Mzk5OSwgNjQwMDYsIDY0MDEwLCA2NDAxNCwgNjQwMjAsIAotICAgIDY0MDI4LCA2NDAzNSwgNjQwNDEsIDY0MDUyLCA2NDA1NiwgNjQwNjAsIDY0MDY0LCA2NDA2NywgNjQwNzMsIDY0MDc4LCAKLSAgICA2NDA4MiwgNjQwODYsIDY0MDk1LCA2NDEwMywgNjQxMTAsIDY0MTE2LCA2NDEyMywgMjQwNDYsIDM4ODcwLCA2NDEyOCwgCi0gICAgNjQxMzYsIDY0MTQwLCA2NDE0NCwgNjQxNDcsIDY0MTU1LCA2NDE2MiwgNjQxNjgsIDY0MTc3LCA2NDE4NSwgNjQxOTEsIAotICAgIDY0MTk2LCA2NDIwMCwgNjQyMDUsIDY0MjA5LCA2NDIxMywgNjQyMTgsIDY0MjI3LCA2NDIzMSwgNjQyMzgsIDY0MjQ1LCAKLSAgICA2NDI1MSwgNjQyNTksIDY0MjY1LCA2NDI3NiwgNjQyODQsIDY0MjkwLCAyMjY2OSwgNjQyOTksIDY0MzA2LCA2NDMxMywgCi0gICAgNjQzMjAsIDY0MzI3LCA2NDMzNCwgNDE5MDcsIDEzMTUzLCA2NDM0MSwgNjQzNDgsIDY0MzUzLCAzNDg0NSwgNjIxNywgCi0gICAgNjQzNTksIDY0MzY0LCA2NDM2OSwgNjQzNzUsIDY0MzgxLCA2NDM4NywgNjQzOTIsIDY0Mzk3LCA2NDQwMiwgNjQ0MDcsIAotICAgIDY0NDEzLCA2NDQxOCwgNjQ0MjQsIDY0NDI5LCA2NDQzNSwgNjQ0NDAsIDY0NDQ1LCA2NDQ1MCwgNjQ0NTUsIDY0NDYwLCAKLSAgICA2NDQ2NSwgNjQ0NzAsIDY0NDc2LCA2NDQ4MSwgNjQ0ODcsIDY0NDkyLCA2NDQ5NywgNjQ1MDIsIDY0NTA3LCA2NDUxMiwgCi0gICAgNjQ1MTcsIDY0NTIzLCA2NDUyOCwgNjQ1MzMsIDY0NTM4LCA2NDU0MywgNjQ1NDgsIDY0NTUzLCA2NDU1OCwgNjQ1NjMsIAotICAgIDY0NTY4LCA2NDU3MywgNjQ1NzksIDY0NTg0LCA2NDU4OSwgNjQ1OTQsIDY0NTk5LCA2NDYwNCwgNjQ2MDksIDY0NjE0LCAKLSAgICA2NDYxOSwgNjQ2MjUsIDY0NjMwLCA2NDYzNSwgNjQ2NDAsIDY0NjQ1LCA2NDY1MCwgNjQ2NTUsIDY0NjYwLCA2NDY2NSwgCi0gICAgNjQ2NzAsIDY0Njc1LCA2NDY4MCwgNjQ2ODUsIDY0NjkxLCAxODM0LCAyMjQsIDM3NDQ2LCA2NDY5NiwgNjQ2OTksIDY0NzA0LCAKLSAgICA2NDcwOCwgNjQ3MTEsIDY0NzE2LCA2MzczNywgNjQ3MjcsIDY0NzM3LCA2NDc0NCwgNjQ3NjAsIDY0NzY5LCA2NDc3OSwgCi0gICAgNjQ3ODksIDY0Nzk3LCA2NDgxMSwgNjQ4MTksIDY0ODIzLCA2NDgyNiwgNjQ4MzMsIDY0ODM5LCA2NDg1MCwgNjQ4NjIsIAotICAgIDY0ODczLCA2NDg4MiwgNjQ4ODksIDEyOTcsIDIzMzExLCA2NDg5OSwgMjU5MCwgNjQ5MDMsIDY0OTEyLCAxMTM4LCAxNzI5MCwgCi0gICAgMzgwODMsIDY0OTIwLCA2NDkyOCwgNjQ5NDIsIDY0OTU1LCA2NDk1OSwgNjQ5NjQsIDY0OTY5LCA2NDk3NCwgNjQ5ODAsIAotICAgIDY0OTg2LCA2NDk5MSwgODUzNSwgNjQ5OTYsIDY1MDAwLCA2NTAwOCwgMTEwNDgsIDY1MDEzLCA2NTAxOSwgNjUwMjgsIAotICAgIDE3MjEsIDExMDYwLCA3MzYsIDY1MDMyLCA2NTA0MSwgNjUwNTEsIDI3MDMwLCA2NTA2MCwgNjUwNjYsIDE2ODYyLCA2NTA3MiwgCi0gICAgNjUwNzYsIDM5NjQsIDExMzkxLCA2NTA4MiwgNjUwODksIDYwNjkzLCA2NTA5MywgNjUwOTcsIDM5ODgsIDE4OSwgMTQxNTksIAotICAgIDY1MTAzLCA2NTExNSwgNjUxMTksIDY1MTI1LCAyNzc1MSwgNjUxMjksIDExMzc5LCAyNzMwLCA0LCA2NTEzNCwgNjUxNDQsIAotICAgIDY1MTUwLCA2NTE2MSwgNjUxNjgsIDY1MTc0LCA2NTE4MCwgNjUxODgsIDY1MTk1LCA2NTIwMSwgNjUyMTEsIDY1MjIxLCAKLSAgICA2NTIzMSwgMjM0OTksIDEzMDksIDY1MjQwLCA2NTI0NCwgNjUyNDgsIDY1MjU0LCA2NTI1OCwgMjc1MywgMjc1OSwgODUzMiwgCi0gICAgMjI2NCwgNjUyNjIsIDY1MjY2LCA2NTI3NSwgNjUyODMsIDY1Mjk0LCA2NTMwMiwgNjUzMTAsIDY1MzE2LCA2NTMyMSwgCi0gICAgNjUzMzIsIDY1MzQzLCA2NTM1MSwgNjUzNTcsIDk2OTQsIDY1MzYyLCA2NTM3MCwgNjUzNzQsIDY1Mzc4LCA2NTM4MiwgCi0gICAgNjUzOTQsIDI4MTM2LCA2NTQwMSwgNjU0MTEsIDY1NDE3LCA2NTQyMywgOTc5NiwgNjU0MzMsIDY1NDQ0LCA2NTQ1NCwgCi0gICAgNjU0NjMsIDY1NDY3LCA2NTQ3NCwgMTE0MCwgMTE3MCwgNjU0ODQsIDY1NDg5LCA2NTQ5NywgNjU1MDUsIDY1NTE2LCAKLSAgICA2NTUyMywgNjU1MzcsIDE0MDg4LCAzOTMsIDY1NTQ3LCA2NTU1MSwgNjU1NTksIDY1NTY4LCA2NTU3NiwgNjU1ODIsIAotICAgIDY1NTk2LCA2NTYwMywgNjU2MDksIDY1NjE4LCA2NTYyNSwgNjU2MzUsIDY1NjQzLCAzODEyLCAxNTYsIDY1NjUxLCA2NTY2MiwgCi0gICAgNjU2NjYsIDY1Njc4LCAyNzk0OSwgMTYxLCA2NTY4NCwgNjU2ODksIDY1NjkzLCA2NTcwMCwgNjU3MDYsIDY1NzE0LCAKLSAgICA2NTcyMSwgODgxOCwgNjU3MjgsIDY1NzM3LCA2NTc0NSwgMzg3OCwgNjU3NTgsIDgxOTksIDY1NzYyLCAyNzk4LCA0NDMsIAotICAgIDY1NzY3LCA2NTc4MCwgNjU3ODUsIDE4MzMsIDY1MCwgNjU3ODksIDM4OTUsIDY1Nzk3LCA2NTgwMywgNjU4MDcsIDkzMSwgCi0gICAgNjU4MTcsIDY1ODI2LCA2NTgzMSwgMTQ5MjgsIDE0OTM1LCA0NTI2OSwgNjU4MzUsIDM4MjIsIDEzMDQxLCA2NTg0MywgCi0gICAgNjU4NTAsIDIzNTU1LCA2NTg1NCwgNjU4NjEsIDY1ODY3LCA2NTg3MiwgNjU4NzcsIDE0OTQ4LCAzNzIsIDY1ODgyLCAKLSAgICA2NTg5NCwgNjU5MDAsIDY1OTA4LCAyODEwLCAxNzUzLCA2NTkxNiwgNjU5MTgsIDY1OTIzLCA2NTkyOCwgNjU5MzMsIAotICAgIDY1OTM5LCA2NTk0NCwgNjU5NDksIDY1OTU0LCA2NTk1OSwgNjU5NjQsIDY1OTY5LCA2NTk3NSwgNjU5ODAsIDY1OTg1LCAKLSAgICA2NTk5MCwgNjU5OTUsIDY2MDAwLCA2NjAwNSwgNjYwMTAsIDY2MDE1LCA2NjAyMSwgNjYwMjYsIDY2MDMxLCA2NjAzNiwgCi0gICAgNjYwNDIsIDY2MDQ3LCA2NjA1MywgNjYwNTgsIDY2MDYzLCA2NjA2OCwgNjYwNzMsIDY2MDc4LCA2NjA4MywgNjYwODgsIAotICAgIDY2MDk0LCA2NjA5OSwgNjYxMDUsIDY2MTEwLCA2NjExNSwgNjYxMjAsIDY2MTI1LCA2NjEzMCwgNjYxMzUsIDY2MTQwLCAKLSAgICA2NjE0NSwgNjYxNTEsIDY2MTU2LCA2NjE2MSwgNjYxNjYsIDY2MTcwLCA2NjE3NCwgNjYxNzksIDY2MTgzLCA2NjE4OCwgCi0gICAgNjYxOTMsIDY2MTk5LCA2NjIwNCwgNjYyMDgsIDY2MjEzLCA2NjIxNywgNjYyMjAsIDY2MjIyLCA2NjIyNiwgNjYyMjksIAotICAgIDY2MjM0LCA2NjIzOCwgNjYyNDIsIDY2MjQ2LCA2NjI1MCwgNjYyNTksIDY2MjYzLCAzMjU0OSwgNjYyNjYsIDMyNTU0LCAKLSAgICA2NjI3MywgNjYyNzgsIDMyNTU5LCA2NjI4NywgNjYyOTYsIDMyNTY1LCA2NjMwMSwgMzI1NzAsIDY2MzEwLCA2NjMxNSwgCi0gICAgMTE1NzgsIDY2MzE5LCA2NjMyNCwgNjYzMjksIDMyNTc1LCA2NjMzMywgNDAyMjUsIDY2MzM3LCA2NjM0MCwgNjYzNDQsIAotICAgIDgyMTEsIDY2MzUwLCA2NjM1NSwgNjYzNTksIDM3MDUsIDMyNTgwLCA2NjM2MiwgNjYzNjYsIDY2MzY5LCA2NjM3NCwgCi0gICAgNjYzNzgsIDY2Mzg0LCA2NjM5MiwgNjY0MDUsIDY2NDE0LCA2NjQyMCwgNjY0MjUsIDY2NDMxLCA2NjQzNSwgNjY0NDEsIAotICAgIDY2NDQ5LCA2NjQ1NCwgNjY0NTgsIDY2NDY1LCA2NjQ3MSwgNjY0NzksIDY2NDg4LCA2NjQ5NiwgMzI1ODMsIDY2NTAzLCAKLSAgICA2NjUxMywgNjY1MjIsIDY2NTM1LCA2NjU0MCwgNjY1NDUsIDY2NTU0LCA2NjU2MCwgNjY1NjcsIDY2NTc4LCA2NjU5MCwgCi0gICAgNjY1OTcsIDY2NjA2LCA2NjYxNSwgNjY2MjQsIDY2NjMxLCA2NjYzNywgNjY2NDQsIDY2NjUyLCA2NjY1OSwgNjY2NjcsIAotICAgIDY2Njc2LCA2NjY4NCwgNjY2OTEsIDY2Njk5LCA2NjcwOCwgNjY3MTYsIDY2NzI1LCA2NjczNSwgNjY3NDQsIDY2NzUyLCAKLSAgICA2Njc1OSwgNjY3NjcsIDY2Nzc2LCA2Njc4NCwgNjY3OTMsIDY2ODAzLCA2NjgxMiwgNjY4MjAsIDY2ODI5LCA2NjgzOSwgCi0gICAgNjY4NDgsIDY2ODU4LCA2Njg2OSwgNjY4NzksIDY2ODg4LCA2Njg5NiwgNjY5MDMsIDY2OTExLCA2NjkyMCwgNjY5MjgsIAotICAgIDY2OTM3LCA2Njk0NywgNjY5NTYsIDY2OTY0LCA2Njk3MywgNjY5ODMsIDY2OTkyLCA2NzAwMiwgNjcwMTMsIDY3MDIzLCAKLSAgICA2NzAzMiwgNjcwNDAsIDY3MDQ5LCA2NzA1OSwgNjcwNjgsIDY3MDc4LCA2NzA4OSwgNjcwOTksIDY3MTA4LCA2NzExOCwgCi0gICAgNjcxMjksIDY3MTM5LCA2NzE1MCwgNjcxNjIsIDY3MTczLCA2NzE4MywgNjcxOTIsIDY3MjAwLCA2NzIwNywgNjcyMTUsIAotICAgIDY3MjI0LCA2NzIzMiwgNjcyNDEsIDY3MjUxLCA2NzI2MCwgNjcyNjgsIDY3Mjc3LCA2NzI4NywgNjcyOTYsIDY3MzA2LCAKLSAgICA2NzMxNywgNjczMjcsIDY3MzM2LCA2NzM0NCwgNjczNTMsIDY3MzYzLCA2NzM3MiwgNjczODIsIDY3MzkzLCA2NzQwMywgCi0gICAgNjc0MTIsIDY3NDIyLCA2NzQzMywgNjc0NDMsIDY3NDU0LCA2NzQ2NiwgNjc0NzcsIDY3NDg3LCA2NzQ5NiwgNjc1MDQsIAotICAgIDY3NTEzLCA2NzUyMywgNjc1MzIsIDY3NTQyLCA2NzU1MywgNjc1NjMsIDY3NTcyLCA2NzU4MiwgNjc1OTMsIDY3NjAzLCAKLSAgICA2NzYxNCwgNjc2MjYsIDY3NjM3LCA2NzY0NywgNjc2NTYsIDY3NjY2LCA2NzY3NywgNjc2ODcsIDY3Njk4LCA2NzcxMCwgCi0gICAgNjc3MjEsIDY3NzMxLCA2Nzc0MiwgNjc3NTQsIDY3NzY1LCA2Nzc3NywgNjc3OTAsIDY3ODAyLCA2NzgxMywgNjc4MjMsIAotICAgIDY3ODMyLCA2Nzg0MCwgNjc4NDcsIDY3ODU1LCA2Nzg2NCwgNjc4NzIsIDY3ODgxLCA2Nzg5MSwgNjc5MDAsIDY3OTA4LCAKLSAgICA2NzkxNywgNjc5MjcsIDY3OTM2LCA2Nzk0NiwgNjc5NTcsIDY3OTY3LCA2Nzk3NiwgNjc5ODQsIDY3OTkzLCA2ODAwMywgCi0gICAgNjgwMTIsIDY4MDIyLCA2ODAzMywgNjgwNDMsIDY4MDUyLCA2ODA2MiwgNjgwNzMsIDY4MDgzLCA2ODA5NCwgNjgxMDYsIAotICAgIDY4MTE3LCA2ODEyNywgNjgxMzYsIDY4MTQ0LCA2ODE1MywgNjgxNjMsIDY4MTcyLCA2ODE4MiwgNjgxOTMsIDY4MjAzLCAKLSAgICA2ODIxMiwgNjgyMjIsIDY4MjMzLCA2ODI0MywgNjgyNTQsIDY4MjY2LCA2ODI3NywgNjgyODcsIDY4Mjk2LCA2ODMwNiwgCi0gICAgNjgzMTcsIDY4MzI3LCA2ODMzOCwgNjgzNTAsIDY4MzYxLCA2ODM3MSwgNjgzODIsIDY4Mzk0LCA2ODQwNSwgNjg0MTcsIAotICAgIDY4NDMwLCA2ODQ0MiwgNjg0NTMsIDY4NDYzLCA2ODQ3MiwgNjg0ODAsIDY4NDg5LCA2ODQ5OSwgNjg1MDgsIDY4NTE4LCAKLSAgICA2ODUyOSwgNjg1MzksIDY4NTQ4LCA2ODU1OCwgNjg1NjksIDY4NTc5LCA2ODU5MCwgNjg2MDIsIDY4NjEzLCA2ODYyMywgCi0gICAgNjg2MzIsIDY4NjQyLCA2ODY1MywgNjg2NjMsIDY4Njc0LCA2ODY4NiwgNjg2OTcsIDY4NzA3LCA2ODcxOCwgNjg3MzAsIAotICAgIDY4NzQxLCA2ODc1MywgNjg3NjYsIDY4Nzc4LCA2ODc4OSwgNjg3OTksIDY4ODA4LCA2ODgxOCwgNjg4MjksIDY4ODM5LCAKLSAgICA2ODg1MCwgNjg4NjIsIDY4ODczLCA2ODg4MywgNjg4OTQsIDY4OTA2LCA2ODkxNywgNjg5MjksIDY4OTQyLCA2ODk1NCwgCi0gICAgNjg5NjUsIDY4OTc1LCA2ODk4NiwgNjg5OTgsIDY5MDA5LCA2OTAyMSwgNjkwMzQsIDY5MDQ2LCA2OTA1NywgNjkwNjksIAotICAgIDY5MDgyLCA2OTA5NCwgNjkxMDcsIDY5MTIxLCA2OTEzNCwgNjkxNDYsIDY5MTU3LCA2OTE2NywgNjkxNzYsIDY5MTg0LCAKLSAgICA2OTE5MSwgNjkxOTYsIDgwNTgsIDY5MjAzLCAzMjU5MywgNjkyMDgsIDY5MjEzLCAzMjU5OCwgNjkyMTksIDIwOTI5LCAKLSAgICAzMjYwMywgNjkyMjQsIDY5MjMwLCA2OTIzOCwgNjkyNDQsIDY5MjUwLCA2OTI1NywgNjkyNjQsIDY5MjY5LCA2OTI3MywgCi0gICAgNjkyNzYsIDY5MjgwLCA2OTI4OSwgNjkyOTUsIDY5MzA3LCA2OTMxOCwgNjkzMjIsIDMwODEsIDgwMzMsIDY5MzI3LCAKLSAgICA2OTMzMCwgNjkzMzIsIDY5MzM2LCA2OTM0MCwgNjkzNDQsIDY5MzUwLCA2OTM1NSwgMjU5NDQsIDY5MzYwLCA2OTM2NCwgCi0gICAgNjkzNjcsIDY5MzcyLCA2OTM3NiwgNjkzODMsIDY5Mzg5LCA2OTM5MywgNjE3MCwgNjkzOTcsIDMyNjIwLCA2OTQwMiwgCi0gICAgNjk0MDksIDY5NDE4LCA2OTQyNiwgNjk0MzcsIDY5NDQ1LCA2OTQ1MywgNjk0NjAsIDY5NDY3LCA2OTQ3MywgNjk0ODQsIAotICAgIDMyNjI1LCA2OTQ4OSwgNjk1MDAsIDY5NTEyLCA2OTUyMCwgNjk1MzEsIDY5NTQwLCA2OTU1MSwgNjk1NTYsIDY5NTY0LCAKLSAgICAyNTU2LCA2OTU2OSwgMzQyOTUsIDY5NTgyLCA2OTU4NiwgNjk1OTgsIDY5NjA2LCA2OTYxMSwgNjk2MTksIDE3NDg1LCAKLSAgICA2OTYzMCwgNjk2MzYsIDY5NjQzLCA2OTY1MSwgNjk2NTcsIDMyNjM1LCA2OTY2MiwgMzkxNCwgNTgyNTQsIDY5NjY5LCAKLSAgICA2OTY3MiwgNjk2ODAsIDY5NjkzLCA2OTcwNiwgNjk3MTksIDY5NzMyLCA2OTczOSwgNjk3NTAsIDY5NzU5LCA0MTcyNCwgCi0gICAgNDE3MjksIDY5NzY0LCA2OTc2OCwgNjk3NzYsIDY5NzgzLCA2OTc5MiwgNjk4MDAsIDY5ODA2LCA2OTgxNSwgNjk4MjMsIAotICAgIDY5ODMxLCA2OTgzNSwgNjk4NDQsIDY5ODUzLCA2OTg2MywgNjk4NzYsIDY5ODg5LCA2OTg5OSwgMzI2NDAsIDY5OTA1LCAKLSAgICA2OTkxMiwgNjk5MTgsIDMyNjQ2LCA2OTkyMywgNjk5MjYsIDY5OTMwLCA2OTkzOCwgNjk5NDcsIDQxNDYyLCA2OTk1NSwgCi0gICAgNjk5NjQsIDY5OTcyLCA2OTk3OSwgNjk5ODcsIDY5OTk3LCA3MDAwNiwgNzAwMTUsIDcwMDI0LCA3MDAzMiwgNzAwNDMsIAotICAgIDcwMDUzLCA5MzY2LCAyMTU2NywgNzAwNjIsIDcwMDY3LCA3MDA3MiwgNzAwNzYsIDcwMDgwLCA3MDA4NSwgNzAwOTEsIAotICAgIDcwMDk2LCA3MDEwMSwgNzAxMDcsIDcwMTEyLCA3MDExNywgMjE1MzIsIDcwMTIyLCA3MDEyOSwgNzAxMzcsIDcwMTQ1LCAKLSAgICA3MDE1MCwgNzAxNTcsIDcwMTY0LCA3MDE2OSwgNzAxNzMsIDcwMTc3LCA3MDE4NSwgNzAxOTMsIDMyNjYzLCA3MDE5OSwgCi0gICAgNzAyMDUsIDcwMjE3LCA3MDIyMywgNzAyMjcsIDcwMjM0LCA3MDIzOSwgNzAyNTAsIDcwMjYwLCA3MDI3MCwgNzAyODIsIAotICAgIDcwMjg4LCA3MDI5OCwgNzAzMDgsIDMyNjkwLCA3MDMxNywgNzAzMjYsIDcwMzMyLCA3MDM0NCwgNzAzNTUsIDcwMzYyLCAKLSAgICA3MDM2NywgNzAzNzEsIDcwMzc5LCA3MDM4NSwgNzAzOTAsIDcwMzk1LCA3MDQwMiwgNzA0MTAsIDcwNDIyLCA3MDQzMiwgCi0gICAgNzA0NDEsIDcwNDUwLCA3MDQ1NywgMzQxNTcsIDIzODUxLCA3MDQ2MywgNzA0NjgsIDcwNDcyLCA3MDQ3NiwgNzA0ODEsIAotICAgIDcwNDg3LCA3MDQ5OCwgNzA1MTEsIDcwNTE2LCA3MDUyMywgMzI2OTUsIDcwNTI4LCA3MDU0MCwgNzA1NDksIDcwNTU5LCAKLSAgICA3MDU3MCwgNzA1ODMsIDcwNTkwLCA3MDU5OSwgNzA2MDgsIDcwNjE2LCA3MDYyMSwgNzA2MjcsIDEwNjksIDcwNjMyLCAKLSAgICA3MDYzNywgNzA2NDIsIDcwNjQ3LCA3MDY1MywgNzA2NTgsIDcwNjYzLCA3MDY2OSwgNzA2NzUsIDcwNjgwLCA3MDY4NCwgCi0gICAgNzA2ODksIDcwNjk0LCA3MDY5OSwgNTg3NjYsIDcwNzA0LCA3MDcwOSwgNzA3MTQsIDcwNzE5LCA3MDcyNSwgNzA3MzEsIAotICAgIDcwNzM2LCA3MDc0MCwgNzA3NDUsIDcwNzUwLCA3MDc1NSwgNzA3NjEsIDcwNzY2LCA3MDc3MiwgNzA3NzcsIDcwNzgyLCAKLSAgICA3MDc4NywgNzA3OTIsIDcwNzk2LCA3MDgwMiwgNzA4MDcsIDcwODE2LCA3MDgyMSwgNzA4MjYsIDcwODMxLCA3MDgzNiwgCi0gICAgNzA4NDAsIDcwODQ3LCA3MDg1MywgMTcxMzUsIDE3MTQyLCA3MDg1OCwgNzA4NjIsIDcwODY2LCA3MDg3MCwgNzA4NzQsIAotICAgIDQ1NTI0LCA3MDg3OCwgNzA4MDgsIDcwODgwLCA3MDg5MCwgMzI3MDQsIDcwODkzLCA3MDkwMiwgNzA5MDgsIDYxNDMsIAotICAgIDMyNzA5LCA3MDkxMiwgNzA5MTgsIDcwOTIzLCA3MDkyOSwgNzA5MzQsIDcwOTM4LCA3MDk0NSwgNzA5NTAsIDcwOTYwLCAKLSAgICA3MDk2OSwgNzA5NzMsIDcwOTc5LCA3MDk4NSwgNzA5OTEsIDcwOTk1LCA3MTAwMywgNzEwMTAsIDcxMDE4LCA3MTAyNiwgCi0gICAgMzI3MTQsIDcxMDMzLCA3MTAzNiwgNzEwNDMsIDcxMDQ5LCA3MTA1NCwgNzEwNTgsIDcxMDY0LCA3MTA3MSwgNzEwNzYsIAotICAgIDcxMDgwLCA3MTA4OSwgNzEwOTcsIDcxMTAzLCA3MTEwOCwgMzI3MTksIDcxMTE1LCA3MTEyMiwgNzExMjgsIDcxMTMzLCAKLSAgICA3MTEzOSwgNzExNDYsIDcxMTUyLCAyMTI5NCwgMjc0NTUsIDcxMTU4LCA3MTE2MywgNzExNjksIDcxMTgxLCA3MDg0MSwgCi0gICAgNzA4NDgsIDIxNDcwLCA3MTE5MSwgNzExOTYsIDcxMjAzLCA3MTIwOSwgNzEyMTYsIDcxMjIyLCA3MTIzMywgNzEyMzgsIAotICAgIDkxMTAsIDcxMjQ2LCA3MTI0OSwgNzEyNTUsIDcxMjU5LCA3MTI2MywgNzEyNjYsIDcxMjcyLCAzMjQ2OCwgNjE5NCwgOTY0LCAKLSAgICAxMzQxOSwgNzEyNzksIDcxMjg1LCA3MTI5MSwgNzEyOTcsIDcxMzAzLCA3MTMwOSwgNzEzMTUsIDcxMzIxLCA3MTMyNywgCi0gICAgNzEzMzIsIDcxMzM3LCA3MTM0MiwgNzEzNDcsIDcxMzUyLCA3MTM1NywgNzEzNjIsIDcxMzY3LCA3MTM3MiwgNzEzNzcsIAotICAgIDcxMzgyLCA3MTM4NywgNzEzOTIsIDcxMzk4LCA3MTQwMywgNzE0MDgsIDcxNDE0LCA3MTQxOSwgNzE0MjQsIDcxNDMwLCAKLSAgICA3MTQzNiwgNzE0NDIsIDcxNDQ4LCA3MTQ1NCwgNzE0NjAsIDcxNDY2LCA3MTQ3MiwgNzE0NzgsIDcxNDgzLCA3MTQ4OCwgCi0gICAgNzE0OTQsIDcxNDk5LCA3MTUwNCwgNzE1MTAsIDcxNTE1LCA3MTUyMCwgNzE1MjUsIDcxNTMwLCA3MTUzNSwgNzE1NDAsIAotICAgIDcxNTQ1LCA3MTU1MCwgNzE1NTUsIDcxNTYwLCA3MTU2NSwgNzE1NzAsIDcxNTc2LCA3MTU4MSwgNzE1ODYsIDcxNTkxLCAKLSAgICA3MTU5NywgNzE2MDIsIDcxNjA3LCA3MTYxMiwgNzE2MTcsIDcxNjIzLCA3MTYyOCwgNzE2MzMsIDcxNjM4LCA3MTY0MywgCi0gICAgNzE2NDgsIDcxNjUzLCA3MTY1OCwgNzE2NjMsIDcxNjY4LCA3MTY3MywgNzE2NzgsIDcxNjgzLCA3MTY4OCwgNzE2OTMsIAotICAgIDcxNjk4LCA3MTcwMywgNzE3MDgsIDcxNzEzLCA3MTcxOCwgNzE3MjQsIDcxNzI5LCA3MTczNCwgNzE3MzksIDcxNzQ0LCAKLSAgICA3MTc0OSwgNzE3NTQsIDcxNzU5LCAxODY0LCAxNDIsIDcxNzY0LCA3MTc2OCwgNzE3NzIsIDcxNzc3LCA3MTc4NSwgNzE3ODksIAotICAgIDcxNzk2LCA3MTgwNCwgNzE4MDgsIDcxODIxLCA3MTgyOSwgNzE4MzMsIDcxODM2LCA3MTg0MSwgNzE4NDUsIDcxODUwLCAKLSAgICA3MTg1NCwgNzE4NjIsIDcxODY2LCAyMDkzNywgNzE4NzEsIDcxODc1LCA2MDk2NywgNzE4NzksIDcxODgyLCA3MTg5MCwgCi0gICAgNzE4OTgsIDcxOTA2LCA3MTkxMSwgNzE5MTgsIDcxOTI0LCA3MTkzMCwgNzE5MzUsIDcxOTQyLCA3MTk0NywgNzE5NTUsIAotICAgIDY0OTQ3LCA3MTk2MiwgNzE5NjcsIDcxOTcyLCA3MTk3NiwgMTE2NDUsIDcxOTgwLCA3MTk4NSwgNzE5OTAsIDcxOTk0LCAKLSAgICA3MTk5NywgNzIwMDMsIDcyMDA3LCA3MjAxNywgNzIwMjYsIDcyMDI5LCA3MjAzMywgNzIwNDAsIDcyMDUzLCA3MjA1OSwgCi0gICAgNzIwNjcsIDcyMDc4LCA3MjA4OSwgNzIxMDAsIDcyMTExLCA3MjEyMCwgNzIxMjYsIDcyMTM1LCA3MjE0MywgNzIxNTMsIAotICAgIDcyMTY2LCA3MjE3MywgNzIxODQsIDcyMTkwLCA3MjE5NSwgNzIyMDAsIDcyMjA2LCA3MjIxMiwgNzIyMjIsIDcyMjMxLCAKLSAgICA3MDUzMCwgNzIyMzksIDcyMjQ1LCA3MjI1MywgNzIyNTksIDcyMjY3LCA3MjI3MCwgNzIyNzQsIDcyMjc4LCA3MjI4MSwgCi0gICAgNzIyODcsIDcyMjkzLCA3MjMwMSwgNzIzMTMsIDcyMzI1LCA3MjMzMiwgNzIzMzYsIDcyMzQ3LCA3MjM1NSwgNzIzNjIsIAotICAgIDcyMzc0LCA3MjM4MiwgNzIzOTAsIDcyMzk3LCA3MjQwMywgNzI0MTMsIDcyNDIyLCA3MjQyNywgNzI0MzcsIDcyNDQ2LCAKLSAgICA0MDc4OCwgNzI0NTMsIDcyNDU3LCA3MjQ2MiwgNzI0NzAsIDcyNDc3LCA3MjQ4MywgNzI0ODcsIDcyNDk3LCA3MjUwOCwgCi0gICAgNzI1MTYsIDcyNTIzLCA3MjUzNSwgNzI1NDcsIDcyNTU2LCA2OTU3MiwgNzI1NjMsIDcyNTc0LCA3MjU4OCwgNzI1OTYsIAotICAgIDcyNjA2LCA3MjYxMywgNzI2MjEsIDcyNjMzLCA3MjY0MiwgNzI2NTAsIDcyNjYwLCA3MjY3MSwgNzI2ODMsIDcyNjkyLCAKLSAgICA3MjcwMiwgNzI3MDksIDcyNzE4LCA3MjczMywgNzI3NDEsIDcyNzUxLCA3Mjc2MCwgNzI3NjgsIDcyNzgxLCA3Mjc5NiwgCi0gICAgNzI4MDAsIDcyODA5LCA3MjgyMSwgNzI4MzIsIDcyODQzLCA3Mjg1NCwgNzI4NjQsIDcyODc1LCA3Mjg4MywgNzI4ODksIAotICAgIDcyODk5LCA3MjkwNywgNzI5MTMsIDI5MDI4LCA3MjkxOCwgNzI5MjQsIDcyOTI5LCA3MjkzNiwgOTcwOCwgMTc1MDUsIAotICAgIDcyOTQyLCA3Mjk1MSwgNzI5NTYsIDcyOTYwLCA3Mjk2NywgNzI5NzMsIDcyOTc4LCA3Mjk4MywgNzI5OTEsIDcyOTk5LCAKLSAgICA3MzAwMywgNzMwMDYsIDczMDA5LCA3MzAxMSwgNzMwMTgsIDczMDI0LCA3MzAzNSwgNzMwNDAsIDczMDQ0LCA3MzA1MSwgCi0gICAgNzMwNTcsIDczMDYyLCA3MzA3MCwgNjU0NDYsIDY1NDU2LCA3MzA3NiwgNzMwODMsIDczMDkzLCAxMDYxOCwgNzMxMDAsIAotICAgIDczMTA1LCAyOTIyNCwgNzMxMTQsIDczMTE5LCA3MzEyNiwgNzMxMzYsIDczMTQ0LCA3MzE1MiwgNzMxNjEsIDczMTY3LCAKLSAgICA3MzE3MywgNzMxODAsIDczMTg3LCA3MzE5MiwgNzMxOTYsIDczMjA0LCA3MzIwOSwgNzMyMTQsIDczMjIyLCA3MzIyOSwgCi0gICAgNzMyMzQsIDczMjQwLCA3MzI0MywgNzMyNDcsIDczMjU2LCA3MTgxNiwgNzMyNjUsIDczMjY5LCA3MzI3NSwgNzMyODYsIAotICAgIDczMjk2LCAxNzUxNCwgNzMzMDcsIDczMzE1LCAxNzUyNiwgNzMzMjIsIDczMzI2LCA3MzMzNSwgMjczNDEsIDczMzQyLCAKLSAgICA3MzM0NiwgNzMzNTEsIDczMzY4LCA3MzM4MCwgMTA1NzYsIDczMzkyLCA3MzM5NywgNzM0MDIsIDczNDA3LCAyMTAxMCwgCi0gICAgNzM0MTEsIDczNDE2LCA3MzQyMSwgNzM0MjcsIDczNDMyLCA1ODQ2LCAyMTAxNCwgNzM0MzcsIDczNDQyLCA3MzQ0OCwgCi0gICAgNzM0NTUsIDczNDYwLCA3MzQ2NSwgNzM0NzEsIDczNDc3LCA3MzQ4MywgNzM0ODgsIDczNDk0LCA3MzQ5OCwgNzM1MTIsIAotICAgIDczNTIwLCA3MzUyOCwgNzM1MzQsIDczNTM5LCA3MzU0NiwgNzM1NTYsIDczNTY1LCA3MzU3MCwgNzM1NzUsIDczNTgzLCAKLSAgICA3MzU4OCwgNzM1OTQsIDczNTk5LCA3MzYwOCwgNTk4MjMsIDczNjEzLCA3MzYxNiwgNzM2MzQsIDczNjUzLCA3MzY2NiwgCi0gICAgNzM2ODAsIDczNjk2LCA3MzcwMywgNzM3MTAsIDczNzE2LCA3MzcyMywgNzM3MjgsIDczNzM0LCA3Mzc0MCwgNzM3NDgsIAotICAgIDczNzU0LCA3Mzc1OSwgNzM3NjQsIDczNzgwLCAxMDU4OSwgNzM3OTQsIDczODAxLCA3MzgwOSwgNzM4MTUsIDczODE5LCAKLSAgICA3MzgyMiwgNzM4MjcsIDczODMyLCA3MzgzOSwgNzM4NDQsIDczODUzLCA3Mzg1OCwgNzM4NjQsIDczODczLCA3Mzg4MiwgCi0gICAgNzM4ODcsIDczODkxLCA3Mzg5OSwgNzM5MDgsIDExNjc0LCA3MzkxNywgNzM5MjUsIDczOTMwLCA3MzkzNiwgMTE2ODUsIAotICAgIDczOTQxLCA3Mzk0NCwgNzM5NDksIDczOTU5LCA3Mzk2OCwgNzM5NzMsIDczOTc5LCA3Mzk4NCwgNzM5OTIsIDczOTk5LCAKLSAgICA3NDAxMCwgNzQwMjAsIDc0MDI1LCA2NDg3NSwgNzQwMzAsIDc0MDM2LCA3NDA0MSwgNzQwNDgsIDc0MDU3LCA3NDA2NSwgCi0gICAgNzQwNzEsIDc0MDc3LCA3NDA4NCwgNzQwOTAsIDc0MDk0LCAxNjk2MCwgMzA1NSwgNzQwOTksIDc0MTAzLCA3NDEwNywgCi0gICAgNzQxMTMsIDc0MTIyLCA3NDEyOCwgNzQxMzUsIDc0MTM5LCA3NDE2MCwgNzQxODIsIDc0MTk4LCA3NDIxNSwgNzQyMzQsIAotICAgIDc0MjQzLCA3NDI1MywgNzQyNjAsIDc0MjY3LCAyNzIyOCwgNzQyNzMsIDc0Mjc3LCA3NDI4NSwgNzQyOTcsIDc0MzAzLCAKLSAgICA3NDMxMSwgNzQzMTUsIDc0MzIzLCA3NDMzMCwgNzQzMzQsIDc0MzQwLCA3NDM0NiwgNzQzNTEsIDM1NjMsIDQxOTI0LCAKLSAgICA3NDM1NywgNzQzNjEsIDc0MzY1LCA3NDM2OSwgNzQzNzQsIDc0Mzc5LCA3NDM4NCwgNzQzOTAsIDc0Mzk2LCA3NDQwMiwgCi0gICAgNzQ0MDksIDc0NDE1LCA3NDQyMiwgNzQ0MjgsIDc0NDM0LCA3NDQzOSwgNzQ0NDUsIDc0NDUwLCA3NDQ1NCwgNzQ0NTksIAotICAgIDc0NDYzLCA3NDQ2OCwgNDE5MzksIDc0NDcyLCA3NDQ3NywgNzQ0ODUsIDc0NDg5LCA3NDQ5NCwgNzQ1MDEsIDc0NTEwLCAKLSAgICA3NDUxNiwgNzQ1MjAsIDc0NTI3LCA3NDUzMSwgNzQ1MzQsIDc0NTQxLCA3NDU1MCwgNzQ1NTUsIDc0NTU5LCA3NDU2NywgCi0gICAgNzQ1NzYsIDc0NTgwLCA3NDU4OCwgNzQ1OTQsIDc0NTk5LCA3NDYwNCwgNzQ2MTAsIDc0NjE2LCA3NDYyMSwgNzQ2MjUsIAotICAgIDc0NjMxLCA3NDYzNiwgNzQ2NDAsIDc0NjQ0LCA3NDY0NywgNzQ2NTIsIDc0NjYwLCA3NDY3MCwgNzQ2NzUsIDM5NDE2LCAKLSAgICA3NDY4MywgNzQ2OTUsIDc0Njk5LCA3NDcwNSwgNzQ3MTcsIDc0NzI4LCA3NDczNSwgNzQ3NDEsIDc0NzQ4LCA3NDc2MCwgCi0gICAgNzQ3NjcsIDc0NzczLCAyMTA4OCwgNzQ3NzcsIDc0NzgzLCA3NDc5MCwgNzQ3OTYsIDc0ODAyLCA3NDgwNywgNzQ4MTIsIAotICAgIDc0ODE3LCA3NDgyNiwgNzAzMywgNzQ4MzEsIDE2NDI2LCA3NDgzNywgNzQ4NDEsIDc0ODQ1LCA3NDg0OSwgNzQ4NTcsIAotICAgIDc0ODY2LCA3NDg3MCwgNzQ4NzcsIDc0ODg2LCA3NDg5OSwgNzQ5MDUsIDc0NDY0LCAzMDA4OCwgNzQ5MTAsIDc0OTEyLCAKLSAgICA3NDkxNywgNzQ5MjIsIDc0OTI3LCA3NDkzMiwgNzQ5MzcsIDc0OTQyLCA3NDk0NywgNzQ5NTIsIDc0OTU3LCA3NDk2MiwgCi0gICAgNzQ5NjcsIDc0OTcyLCA3NDk3NywgNzQ5ODIsIDc0OTg4LCA3NDk5MywgNzQ5OTgsIDc1MDAzLCA3NTAwOCwgNzUwMTMsIAotICAgIDc1MDE4LCA3NTAyMywgNzUwMjgsIDc1MDM0LCA3NTA0MCwgNzUwNDYsIDc1MDUxLCA3NTA1NiwgNzUwNjgsIDc1MDczLCAKLSAgICAxODcwLCA0NiwgNzUwNzgsIDc1MDgzLCAzMjc0NiwgNzUwODcsIDMyNzUxLCAzMjc1NiwgMzI3NjIsIDMyNzY3LCA3NTA5MSwgCi0gICAgMzI3NzIsIDIyMDgzLCA3NTExMywgNzUxMTcsIDc1MTIxLCA3NTEyNiwgNzUxMzAsIDMyNzc2LCA3NTEzNCwgNzUxNDIsIAotICAgIDMyNzgxLCA3NTE0OSwgNzUxNTIsIDc1MTU3LCA3NTE2MSwgOTU0MywgNzUxNzAsIDMyNzg2LCAyMTk0NSwgNzUxNzMsIAotICAgIDc1MTc3LCAxNDI4LCA3NTE4MiwgMzI3OTcsIDc1MTg1LCA3NTE5MCwgMjU3MzcsIDI1NzQ3LCAzNTI1OCwgNzUxOTUsIAotICAgIDc1MjAwLCA3NTIwNSwgNzUyMTAsIDc1MjE2LCA3NTIyMSwgNzUyMzAsIDc1MjM1LCA3NTI0MiwgNzUyNDgsIDc1MjUzLCAKLSAgICA3NTI1OCwgNzUyNjMsIDc1MjczLCA3NTI4MiwgNzUyODcsIDc1Mjk1LCA3NTI5OSwgNzUzMDcsIDMyNjExLCAzNzMxNywgCi0gICAgNzUzMTQsIDc1MzIwLCA3NTMyNSwgNzUzMzAsIDEyMDE2LCA3NTMzNSwgNzUzNDEsIDc1MzQ2LCA3NTM1MywgNzUzNTksIAotICAgIDc1MzY0LCA3NTM3MiwgNzUzODIsIDc1MzkyLCA3NTM5OCwgNzU0MDMsIDc1NDA5LCAxNzUzNiwgNzU0MTYsIDM2MDczLCAKLSAgICA3NTQyOSwgNzU0MzQsIDc1NDQwLCAzMDk5MywgNzU0NTMsIDc1NDU5LCA3NTQ2MywgNzU0NzIsIDc1NDc5LCA3NTQ4NSwgCi0gICAgNzU0OTMsIDc1NTAyLCA3NTUwOSwgNzU1MTUsIDc1NTE4LCA3NTUyMiwgMjU4NzgsIDc1NTI2LCA3NTUzMywgNzU1MzksIAotICAgIDc1NTQ3LCA3NTU1MiwgMjM5OTQsIDc1NTU4LCA3NTU2MSwgNzU1NjksIDc1NTc3LCA3NTU5MSwgNzU1OTgsIDc1NjA0LCAKLSAgICA3NTYxMSwgNzU2MTcsIDMyODExLCA3NTYyMSwgNzU2MjgsIDc1NjM2LCA3NTY0NCwgNzU2NTAsIDMyODE2LCA3NTY1OCwgCi0gICAgNzU2NjQsIDc1NjY5LCA3NTY3OSwgNzU2ODUsIDc1Njk0LCAzMDgzMCwgMzQ3MTYsIDc1NzAyLCA3NTcwNywgNzU3MTIsIAotICAgIDc1NzE2LCA3NTcyMSwgNzU3MjUsIDc1NzMzLCAxNDkyMCwgMzk0MjksIDc1NzM4LCA3NTc0MywgMzI4MjEsIDYyMjY5LCAKLSAgICA3NTc0NywgNzU3NTIsIDc1NzU2LCA3NTc2NSwgNzU3NzMsIDc1Nzc5LCA3NTc4NCwgNzU3OTAsIDc1Nzk3LCA3NTgwMywgCi0gICAgNzU4MDgsIDc1ODEzLCA3NTgyMiwgNzU4MzQsIDc1ODQ5LCAzMzA4MywgNzU4NTUsIDE2NTQ1LCAzMjgyNSwgNzU4NTksIAotICAgIDc1ODY2LCAyNDEwNCwgNzU4NzIsIDc1ODc5LCA3NTg4OCwgNzU4OTUsIDc1OTA0LCA3NTkxMCwgNzU5MTUsIDc1OTIzLCAKLSAgICA3NTkyOSwgMzI4MzUsIDc1OTM0LCA3NTk0MywgNzQ3MjMsIDc1OTUyLCA3NTk1OSwgNzU5NjUsIDc1OTcxLCA3NTk4MSwgCi0gICAgNzU5ODksIDc1OTk2LCA3NjAwMCwgMzI4NDAsIDc2MDAzLCAzMjg0NiwgMzI4NTIsIDc2MDA4LCA3NjAxNiwgNzYwMjQsIAotICAgIDc2MDM0LCA3NjA0MywgNzYwNTEsIDc2MDU4LCA3NjA2OCwgMzI4NTcsIDc2MDcyLCA3NjA3NCwgNzYwNzgsIDc2MDgzLCAKLSAgICA3NjA4NywgNzYwOTEsIDc2MDk3LCA3NjEwMiwgNzYxMDYsIDc2MTE3LCA3NjEyMiwgNzYxMjcsIDMwNjAsIDc2MTMxLCAKLSAgICA3NjEzOCwgNzYxNDIsIDc2MTUxLCA3NjE1OSwgNzYxNjYsIDc2MTcxLCA3NjE3NiwgNjIzMTUsIDc2MTgwLCA3NjE4MywgCi0gICAgNzYxODksIDc2MTk3LCA3NjIwMywgNzYyMDcsIDc2MjEyLCA3NjIxOSwgNzYyMjQsIDc2MjMwLCAzNDc0NywgNzYyMzUsIAotICAgIDc2MjM4LCA3NjI0MywgNzYyNDcsIDc2MjUyLCA3NjI1NywgNzYyNjEsIDc2MjY5LCA3NjI3MywgMjU3NTYsIDI1NzY1LCAKLSAgICA3NjI3OSwgNzYyODUsIDc2MjkxLCA3NjI5NiwgNzYzMDAsIDc2MzAzLCA3NjMxMywgNzYzMjIsIDc2MzI3LCA3NjMzMywgCi0gICAgNzYzNDAsIDc2MzQ2LCA3NjM1MCwgNzYzNTgsIDc2MzYzLCAzNDc1MywgNzYzNjcsIDc2Mzc1LCA3NjM4MSwgNzYzODgsIAotICAgIDc2MzkzLCA3NjM5NywgNzY0MDIsIDU4NDQwLCAzNDc1OSwgNzY0MDgsIDc2NDEzLCA3NjQxNywgNzY0MjIsIDc2NDI3LCAKLSAgICA3NjQzMiwgNzY0MzYsIDc2NDQxLCA3NjQ0NiwgNzY0NTIsIDc2NDU3LCA3NjQ2MiwgNzY0NjgsIDc2NDc0LCA3NjQ3OSwgCi0gICAgNzY0ODMsIDc2NDg4LCA3NjQ5MywgNzY0OTgsIDc2NTAyLCAyNDEwMywgNzY1MDcsIDc2NTEyLCA3NjUxOCwgNzY1MjQsIAotICAgIDc2NTMwLCA3NjUzNSwgNzY1MzksIDc2NTQ0LCA3NjU0OSwgNzY1NTQsIDc2NTU4LCA3NjU2MywgNzY1NjgsIDc2NTczLCAKLSAgICA3NjU3OCwgNzY1ODIsIDMyODY1LCA3NjU5MCwgNzY1OTQsIDc2NjAyLCA3NjYxMCwgNzY2MjEsIDc2NjI2LCA3NjYzMCwgCi0gICAgMjIzOTcsIDc2NjM1LCA3NjY0MSwgNzY2NTEsIDc2NjU4LCA3NjY2MywgNzY2NzIsIDc2Njc3LCA3NjY4MSwgNzY2ODYsIAotICAgIDc2Njk0LCA3NjcwMiwgNzY3MDksIDY1MTA5LCA3NjcxNSwgNzY3MjMsIDc2NzMwLCA3Njc0MSwgNzY3NDcsIDc2NzUxLCAKLSAgICA3Njc1NywgMzI4NzUsIDc2NzYwLCA3Njc2NywgNzY3NzUsIDc2NzgwLCAzOTYyMCwgNzY3ODQsIDc2Nzg5LCA3Njc5NiwgCi0gICAgNzY4MDEsIDg5OTIsIDc2ODA1LCA3NjgxMywgNzY4MjAsIDc2ODI3LCA3NjgzMywgNzY4NDcsIDYzMzgxLCA3Njg1NSwgCi0gICAgNzY4NjEsIDc2ODY1LCA3Njg2OCwgNzY4NzYsIDc2ODgzLCA3Njg4OCwgNzY5MDEsIDc2OTA4LCA3NjkxMiwgNzY5MTksIAotICAgIDc2OTI0LCA2MDg2MCwgNzY5MjksIDc2OTMyLCA3NjkzOSwgNzY5NDUsIDc2OTQ5LCA3Njk1NywgNzY5NjYsIDc2OTc2LCAKLSAgICA3Njk4NiwgNzY5OTUsIDc3MDAzLCA3NzAxNCwgNzcwMTksIDc3MDIzLCA3NzAyOCwgNzcwMzIsIDM1Mzg5LCA3NzA0MCwgCi0gICAgMjEzNTcsIDM1Mzk4LCA3NzA0NSwgNzcwNTAsIDc3MDU1LCA3NzA2MCwgNzcwNjUsIDc3MDcwLCA3NzA3NSwgNzcwNzksIAotICAgIDc3MDg0LCA3NzA4OSwgNzcwOTQsIDc3MDk5LCA3NzEwNCwgNzcxMDksIDc3MTEzLCA3NzExOCwgNzcxMjMsIDc3MTI3LCAKLSAgICA3NzEzMSwgNzcxMzUsIDc3MTM5LCA3NzE0NCwgNzcxNDksIDc3MTUzLCA3NzE1OCwgNzcxNjIsIDc3MTY2LCA3NzE3MSwgCi0gICAgNzcxNzYsIDc3MTgxLCA3NzE4NiwgNzcxOTAsIDc3MTk1LCA3NzIwMCwgNzcyMDQsIDc3MjA5LCA3NzIxNCwgNzcyMTksIAotICAgIDc3MjI0LCA3NzIyOSwgNzcyMzQsIDc3MjM5LCA3NzI0NCwgNzcyNDksIDc3MjU0LCA3NzI1OSwgNzcyNjQsIDc3MjY5LCAKLSAgICA3NzI3NCwgNzcyNzksIDc3Mjg0LCA3NzI4OSwgNzcyOTQsIDc3Mjk5LCA3NzMwNCwgNzczMDgsIDc3MzEzLCA3NzMxOCwgCi0gICAgNzczMjMsIDc3MzI4LCA3NzMzMywgNzczMzgsIDc3MzQzLCA3NzM0OCwgNzczNTMsIDc3MzU4LCA3NzM2MywgNzczNjcsIAotICAgIDc3MzcyLCA3NzM3NiwgNzczODEsIDc3Mzg2LCA3NzM5MSwgNzczOTYsIDc3NDAxLCA3NzQwNiwgNzc0MTEsIDc3NDE2LCAKLSAgICA3NzQyMSwgNzc0MjUsIDc3NDI5LCA3NzQzNCwgNzc0MzksIDc3NDQzLCA3NzQ0OCwgNzc0NTMsIDc3NDU3LCA3NzQ2MiwgCi0gICAgNzc0NjcsIDc3NDcyLCA3NzQ3NywgNzc0ODEsIDc3NDg2LCA3NzQ5MSwgNzc0OTUsIDc3NTAwLCA3NzUwNCwgNzc1MDgsIAotICAgIDc3NTEyLCA3NzUxNiwgNzc1MjEsIDc3NTI1LCA3NzUyOSwgNzc1MzMsIDc3NTM3LCA3NzU0MSwgNzc1NDUsIDc3NTQ5LCAKLSAgICA3NzU1MywgNzc1NTcsIDc3NTYyLCA3NzU2NywgNzc1NzIsIDc3NTc3LCA3NzU4MiwgNzc1ODcsIDc3NTkyLCA3NzU5NywgCi0gICAgNzc2MDIsIDc3NjA3LCA3NzYxMSwgNzc2MTUsIDc3NjE5LCA3NzYyMywgNzc2MjcsIDc3NjMxLCA3NzYzNiwgNzc2NDAsIAotICAgIDc3NjQ1LCA3NzY0OSwgNzc2NTQsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcyLCA3NzY3NiwgNzc2ODAsIDc3Njg0LCAKLSAgICA3NzY4OCwgNzc2OTIsIDc3Njk2LCA3NzcwMCwgNzc3MDQsIDc3NzA4LCA3NzcxMiwgNzc3MTYsIDc3NzIwLCA3NzcyNCwgCi0gICAgNzc3MjgsIDc3NzMzLCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTQsIDc3NzU4LCA3Nzc2MiwgNzc3NjcsIAotICAgIDc3NzcxLCA3Nzc3NSwgNzc3NzksIDc3NzgzLCA3Nzc4NywgNzc3OTEsIDc3Nzk2LCA3NzgwMCwgNzc4MDUsIDc3ODA5LCAKLSAgICA3NzgxMywgNzc4MTcsIDc3ODIxLCA3NzgyNSwgNzc4MjksIDc3ODMzLCA3NzgzNywgNzc4NDEsIDc3ODQ1LCA3Nzg0OSwgCi0gICAgNzc4NTQsIDc3ODU4LCA3Nzg2MiwgNzc4NjYsIDc3ODcwLCA3Nzg3NCwgNzc4NzgsIDc3ODgyLCA3Nzg4NiwgNzc4OTAsIAotICAgIDc3ODk0LCA3Nzg5OCwgNzc5MDMsIDc3OTA3LCA3NzkxMSwgNzc5MTYsIDc3OTIxLCA3NzkyNSwgNzc5MjksIDc3OTMzLCAKLSAgICA3NzkzNywgNzc5NDEsIDc3OTQ1LCA3Nzk0OSwgNzc5NTMsIDc3OTU4LCA3Nzk2MiwgNzc5NjcsIDc3OTcxLCA3Nzk3NiwgCi0gICAgNzc5ODAsIDc3OTg1LCA3Nzk4OSwgNzc5OTUsIDc4MDAwLCA3ODAwNCwgNzgwMDksIDc4MDEzLCA3ODAxOCwgNzgwMjIsIAotICAgIDc4MDI3LCA3ODAzMSwgNzgwMzYsIDE1MjEsIDc4MDQwLCAyODI0LCAxNzU5LCAxNzY0LCA3ODA0NCwgNzgwNDgsIDI4MjgsIAotICAgIDc4MDUyLCAxMzk3LCA3ODA1NywgMTM0MiwgNzgwNjEsIDI4NDAsIDc4MDY1LCA3ODA3MiwgNzgwNzksIDc4MDkzLCAyODQ0LCAKLSAgICA3MTMxLCA3ODEwMiwgNzgxMTAsIDc4MTE3LCA3ODEyOCwgNzgxMzcsIDc4MTQ0LCA3ODE1NiwgNzgxNjksIDc4MTgyLCAKLSAgICA3ODE5MywgNzgxOTgsIDc4MjA1LCA3ODIxNywgNzgyMjEsIDI4NDgsIDExNzQ3LCA3ODIzMSwgNzgyMzYsIDc4MjQ1LCAKLSAgICA3ODI1NSwgMjg1MiwgNzgyNjAsIDc4MjY0LCA3ODI2OSwgNzgyNzYsIDc4MjgyLCA3ODI5MCwgNzgzMDIsIDEzNDcsIAotICAgIDEzMDQyLCA3ODMxMiwgNzgzMTYsIDc4MzIyLCA3ODMzNiwgNzgzNDgsIDc4MzYwLCA3ODM3MCwgNzgzNzksIDc4Mzg4LCAKLSAgICA3ODM5NywgNzg0MDUsIDc4NDE2LCA3ODQyNCwgNDA1MSwgNzg0MzQsIDc4NDQ1LCA3ODQ1NCwgNzg0NjAsIDc4NDc1LCAKLSAgICA3ODQ4MiwgNzg0ODgsIDM1NTE0LCA3ODQ5MywgMjg3NiwgMTMwNDYsIDc4NDk3LCA3ODUwNCwgODkzMCwgNzg1MTMsIDI4ODEsIAotICAgIDMyMzYxLCA3ODUxOSwgNjA2MDksIDc4NTI2LCA3ODUzMiwgNzg1NDMsIDc4NTQ5LCA3ODU1NiwgNzg1NjIsIDc4NTcwLCAKLSAgICA3ODU3NywgNzg1ODMsIDc4NTkzLCA3ODYwMiwgNzg2MTMsIDc4NjIwLCA3ODYyNiwgNzg2MzYsIDc4NjQ0LCA3ODY1MCwgCi0gICAgNzg2NjUsIDc4NjcxLCA3ODY3NiwgNzg2ODMsIDc4Njg2LCA3ODY5MiwgNzg2OTksIDc4NzA1LCA3ODcxMywgNzg3MjIsIAotICAgIDc4NzMwLCA3ODczNiwgNzg3NDUsIDQxNDY0LCA3ODc1OSwgNzg3NjQsIDc4NzcwLCAxNDc1NywgNzg3NzUsIDc4Nzg4LCAKLSAgICA3ODc5NywgNzg4MDUsIDc4ODEyLCA3ODgxNiwgNzg4MjAsIDc4ODIzLCA3ODgzMCwgNzg4MzcsIDc4ODQ1LCA3ODg1MywgCi0gICAgNzg4NjIsIDc4ODcwLCAxNDY4NCwgNzg4NzgsIDc4ODgzLCA3ODg4NywgNzg4OTksIDc4OTA2LCA3ODkxNSwgNzQ4LCAKLSAgICA3ODkyNSwgNzg5MzQsIDc4OTQ1LCAyODk3LCA3ODk0OSwgNzg5NTMsIDc4OTU5LCA3ODk3MiwgNzg5ODQsIDc4OTk0LCAKLSAgICA3OTAwMywgNzkwMTUsIDI2MzY5LCA3OTAyNiwgNzkwMzQsIDc5MDQzLCA3OTA1NCwgNzkwNjUsIDc5MDc1LCA3OTA4NSwgCi0gICAgNzkwOTQsIDc5MTAyLCAxMTMxMiwgNzkxMDksIDc5MTEzLCA3OTExNiwgNzkxMjEsIDc5MTI2LCA3OTEzMCwgNzkxMzYsIAotICAgIDEzNTIsIDExODE4LCA3OTE0MywgNzkxNTQsIDc5MTYzLCA3OTE3MSwgNzkxODAsIDc5MTg4LCA3OTIwNCwgNzkyMTUsIAotICAgIDc5MjI0LCA3OTIzMiwgNzkyNDQsIDc5MjU1LCA3OTI3MSwgNzkyODEsIDc5MzAyLCA3OTMxNSwgNzkzMjMsIDc5MzMwLCAKLSAgICAxNDg2OCwgNzkzNDMsIDc5MzQ4LCA3OTM1NCwgNTkwOCwgNzkzNjAsIDc5MzYzLCA3OTM3MCwgNzkzODAsIDgxNzYsIAotICAgIDc5Mzg3LCA3OTM5MiwgNzkzOTcsIDc5NDAyLCA3OTQxMCwgNzk0MTksIDc5NDI3LCA5NzU2LCA5NzY1LCA3OTQzMiwgCi0gICAgNzk0NDMsIDc5NDQ4LCA3OTQ1NCwgMjkxMywgMjkxOCwgNzk0NjAsIDEwODc5LCA3OTQ2NiwgNzk0NzMsIDc5NDgwLCAKLSAgICA3OTQ5MywgMjI1MSwgNjgsIDc5NDk4LCA3OTUwMywgNzk1MTMsIDc5NTE5LCA3OTUyOCwgNzk1MzYsIDc5NTQ2LCA3OTU1MCwgCi0gICAgNzk1NTUsIDc5NTU5LCA3OTU3MSwgMjk0MSwgNzk1NzksIDc5NTg3LCA3OTU5MiwgNzk2MDMsIDc5NjE0LCA3OTYyMywgCi0gICAgNzk2MjgsIDc5NjM0LCA3OTYzOSwgNzk2NDksIDc5NjU5LCA3OTY2NCwgNzk2NzAsIDc5Njc0LCA3OTY3OSwgNzk2ODgsIAotICAgIDIxNDEwLCA3OTY5MiwgNDEyOCwgMjAsIDc5Njk3LCA3OTcwNiwgNzk3MTMsIDc5NzIwLCA3OTcyNiwgNzk3MzIsIDg2NCwgCi0gICAgNzk3MzcsIDc5NzQyLCA2MDkzNywgNzk3NDcsIDc5NzUyLCA3OTc1OCwgNzk3NjQsIDc5NzcyLCA3OTc3NywgNzk3ODQsIAotICAgIDc5NzkwLCA3OTc5NSwgMzgwMzAsIDQxMzU4LCA3OTgwMSwgMjk0NSwgMzIsIDc5ODExLCA3OTgyNCwgNzk4MjksIDc5ODM3LCAKLSAgICA3OTg0MiwgNzk4NDgsIDI5NjcsIDI4MzEwLCA3OTg1MywgNzk4NjEsIDc5ODY4LCA3OTg3MywgNTg2ODIsIDYxOTQwLCAKLSAgICA3OTg4MiwgNzk4ODYsIDE3MDQsIDE4MTMsIDc5ODkxLCA3OTg5NiwgNzk5MDMsIDE4MTcsIDI0NywgNzk5MTAsIDc5OTE2LCAKLSAgICAyOTg5LCA3OTkyMSwgNzk5MjYsIDc5OTMzLCAxODIxLCA3OTkzOCwgNzk5NDQsIDc5OTQ5LCA3OTk2MSwgNjExOSwgNzk5NzEsIAotICAgIDE4MjgsIDc5OTc3LCA3OTk4MiwgNzk5ODksIDc5OTk2LCA4MDAxMSwgODAwMTgsIDgwMDI5LCA4MDAzNywgMjYxOCwgCi0gICAgODAwNDEsIDgwMDUzLCA4MDA1OCwgODAwNjIsIDgwMDY4LCAyODEzNSwgMjI1NiwgODAwNzIsIDgwMDgzLCA4MDA4NywgCi0gICAgODAwOTEsIDgwMDk3LCA4MDEwMSwgODAxMTAsIDgwMTE0LCA4MDEyNSwgODAxMjksIDIzMDIsIDMyMTkwLCA4MDEzMywgCi0gICAgODAxNDMsIDMwODAsIDkzNzEsIDgwMTUxLCA4MDE1NiwgODAxNjAsIDgwMTY5LCA4MDE3NiwgODAxODIsIDMwNTAsIDE3MTUyLCAKLSAgICA4MDE4NiwgODAxOTksIDgwMjE3LCA4MDIyMiwgODAyMzAsIDgwMjM4LCA4MDI0OCwgOTk4NSwgMTMxNTQsIDgwMjYwLCAKLSAgICA4MDI3MywgODAyODAsIDgwMjg3LCA4MDMwMywgODAzMTAsIDgwMzE2LCAxMDY0LCA4MDMyMywgODAzMzAsIDgwMzQwLCAKLSAgICA4MDM0OSwgODAzNjEsIDQyMzI4LCA4MDM2OSwgMzA2NCwgMTIwMzAsIDgwMzcyLCA4MDM4MCwgODAzODQsIDc4MjcyLCAKLSAgICAzMDY4LCA4MDM4OCwgMjExOTEsIDEyMDQ2LCAzNzU2LCA4MDM5MiwgMzA3NCwgODAzOTYsIDgwNDA2LCA4MDQxMiwgODA0MTgsIAotICAgIDgwNDI0LCA4MDQzMCwgODA0MzYsIDgwNDQyLCA4MDQ0OCwgODA0NTQsIDgwNDYwLCA4MDQ2NiwgODA0NzIsIDgwNDc4LCAKLSAgICA4MDQ4NCwgODA0OTAsIDgwNDk2LCA4MDUwMiwgODA1MDgsIDgwNTE0LCA4MDUyMCwgODA1MjYsIDgwNTMyLCA4MDUzOCwgCi0gICAgODA1NDQsIDgwNTUwLCA4MDU1NiwgODA1NjMsIDgwNTcwLCA4MDU3NiwgODA1ODIsIDgwNTg4LCA4MDU5NCwgODA2MDAsIAotICAgIDgwNjA2LCAxMzU3LCAxNjA2MiwgMTIwNjgsIDgwNjEyLCA4MDYxNywgODA2MjIsIDgwNjI3LCA4MDYzMiwgODA2MzcsIAotICAgIDgwNjQyLCA4MDY0NywgODA2NTIsIDgwNjU3LCA4MDY2MiwgODA2NjcsIDgwNjcyLCA4MDY3NywgODA2ODIsIDgwNjg3LCAKLSAgICA4MDY5MiwgODA2OTcsIDgwNzAyLCA4MDcwNywgODA3MTIsIDgwNzE3LCA4MDcyMiwgODA3MjcsIDgwNzMyLCA4MDczNywgCi0gICAgODA3NDMsIDgwNzQ4LCA4MDc1MywgODA3NTksIDgwNzY0LCA4MDc3MCwgODA3NzUsIDgwNzgwLCA4MDc4NiwgODA3OTEsIAotICAgIDgwNzk2LCA4MDgwMSwgODA4MDYsIDgwODExLCA4MDgxNiwgODA4MjEsIDgwODI2LCA4MDQwNywgODA0MTMsIDgwNDE5LCAKLSAgICA4MDQyNSwgODA0MzEsIDgwNDM3LCA4MDQ0MywgODA0NDksIDgwNDU1LCA4MDQ2MSwgODA0NjcsIDgwNDczLCA4MDQ3OSwgCi0gICAgODA0ODUsIDgwNDkxLCA4MDgzMiwgODA0OTcsIDgwNTAzLCA4MDUwOSwgODA4MzgsIDgwNTE1LCA4MDUyMSwgODA1MjcsIAotICAgIDgwNTMzLCA4MDUzOSwgODA1NDUsIDgwNTUxLCA4MDU3MSwgODA4NDQsIDgwODUwLCA4MDU3NywgODA4NTYsIDgwNTgzLCAKLSAgICA4MDU4OSwgODA1OTUsIDgwNjAxLCA4MDYwNywgMzA5MSwgMzA5NiwgODA4NjIsIDgwODY3LCA4MDg3MCwgODA4NzYsIAotICAgIDgwODgyLCA4MDg4OSwgODA4OTQsIDgwODk5LCAyMzA3LCAKKyAgICAwLCAwLCA2LCAxMCwgMTQsIDIyLCAyNywgMzQsIDQ0LCA0OSwgNTgsIDY0LCA2NiwgNjksIDgxLCA4OSwgMTAyLCAxMDgsIAorICAgIDExMywgMTE4LCAxMjYsIDEzNSwgMTQ2LCAxNTEsIDE1NiwgMTYxLCAxNjQsIDE2OCwgMTc3LCAxODMsIDE4OSwgMTk0LCAKKyAgICAyMDEsIDIwOSwgMjE3LCAyMTgsIDIyMSwgMjI5LCAxNjUsIDIzNSwgMjQ0LCAyNTEsIDI2MSwgMjY3LCAyNzQsIDI3OSwgCisgICAgMjgyLCAyODcsIDI5MywgMjk2LCAzMDAsIDMwNSwgMzExLCAzMTcsIDMyMiwgMzI3LCAzMzMsIDMzOSwgMzQ4LCAzNTUsIAorICAgIDM2MiwgMzcxLCAzNzYsIDM4MSwgMzgzLCAzOTEsIDM5OSwgNDAwLCA0MDgsIDQxMCwgNDE3LCA0MjAsIDQyNiwgNDMzLCAKKyAgICAzMzEsIDQzOCwgNDQwLCA0NDIsIDQ0OSwgNDUxLCA0NTYsIDQ2NCwgNDcxLCA0NzYsIDQ4MCwgNDg2LCA0OTEsIDUwMSwgCisgICAgNTA2LCA1MTMsIDUxNiwgNTI0LCA1MjgsIDUzOCwgNTQ1LCA1NTQsIDU2MSwgNTcwLCA1NzcsIDU4MCwgNTg0LCA1OTIsIAorICAgIDU5OCwgNjExLCA2MTgsIDYyMiwgNjI2LCA2MjcsIDYzNiwgNjQwLCA2NDksIDY1NSwgNjU5LCA2NjEsIDY2NiwgNjc0LCAKKyAgICA2NzgsIDY4NiwgNjkxLCA2OTQsIDcwMCwgNzAzLCA3MDcsIDcxMiwgNzIwLCA3MjMsIDczMCwgNzM1LCA3NDQsIDc1MywgCisgICAgNzYxLCA3NjksIDc3MywgNzc5LCA3ODcsIDc5NCwgNzk3LCA4MDcsIDgxMSwgODE1LCA4MjYsIDgzMywgODQwLCA4NDQsIAorICAgIDg0OCwgODU0LCA4NDIsIDg2MywgODY5LCA4NzQsIDg3OSwgODgzLCA4ODYsIDg4OSwgODk0LCA5MDMsIDkxMSwgOTE2LCAKKyAgICA2NTgsIDU3NSwgOTIxLCA5MjQsIDkzMCwgOTM0LCA5MzgsIDk0NywgOTUzLCA5NjAsIDk2OSwgOTc2LCA5ODksIDk5NCwgCisgICAgOTk4LCAxMDA2LCAxMDA5LCAxMDE1LCAxMDIxLCAxMDMwLCAxMDM3LCAxMDQ1LCAxMDUyLCAxMDYyLCAxMDY5LCAxMDc3LCAKKyAgICAxMDg2LCAxMDkwLCAxMDkzLCAxMTAwLCAyMSwgMTEwNCwgMTExMywgMTEyMSwgMTEyOCwgMTEzMSwgMTEzNiwgMTEzOCwgCisgICAgMTE0MiwgMTE1MSwgMTE1NiwgMTE1OSwgMTE2NSwgMTE3MiwgMTE3NSwgMTE4MCwgMTE4NSwgMTE5MSwgMTE5NiwgMTIwMSwgCisgICAgMTIwNiwgMTIxMCwgMTIxNSwgMTIyMSwgMTIyNiwgMTIzMSwgMTIzNSwgMTI0MSwgMTI0NiwgMTI1MSwgMTI1NiwgMTI2MCwgCisgICAgMTI2NSwgMTI3MCwgMTI3NSwgMTI4MSwgMTI4NywgMTI5MywgMTI5OCwgMTMwMiwgMTMwNywgMTMxMiwgMTMxNywgMTMyMSwgCisgICAgMTMyNiwgMTMzMSwgMTMzNiwgMTM0MSwgMTE3NiwgMTE4MSwgMTE4NiwgMTE5MiwgMTE5NywgMTM0NSwgMTIwNywgMTM1MSwgCisgICAgMTM1NiwgMTM2MSwgMTM2OCwgMTM3MiwgMTM3NSwgMTM4NCwgMTIxMSwgMTM4OCwgMTIxNiwgMTIyMiwgMTIyNywgMTM5MiwgCisgICAgMTM5NywgMTQwMiwgMTQwNiwgMTQxMCwgMTQxNiwgMTQyMCwgMTIzMiwgMTQyMywgMTQyNSwgMTI0MiwgMTQzMCwgMTQzNCwgCisgICAgMTI0NywgMTQ0MCwgMTI1MiwgMTQ0NCwgMTQ0OCwgMTI1NywgMTQ1MiwgMTQ1NywgMTQ2MSwgMTQ2NCwgMTQ2OCwgMTI2MSwgCisgICAgMTI2NiwgMTQ3MywgMTQ3OSwgMTI3MSwgMTQ5MSwgMTQ5NywgMTUwMywgMTUwOSwgMTI3NiwgMTI4OCwgMTI5NCwgMTUxMywgCisgICAgMTUxNywgMTUyMSwgMTUyNCwgMTI5OSwgMTUyOCwgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NiwgMTU1MSwgMTU1NiwgMTU2MCwgCisgICAgMTU2NSwgMTU3MCwgMTU3NSwgMTU4MCwgMTU4NiwgMTU5MSwgMTU5NiwgMTYwMiwgMTYwOCwgMTYxMywgMTYxNywgMTYyMiwgCisgICAgMTYyNywgMTYzMiwgMTYzNywgMTY0MiwgMTY0NiwgMTY1NCwgMTY1OSwgMTY2MywgMTY2OCwgMTY3MywgMTY3OCwgMTY4MywgCisgICAgMTY4NywgMTY5MCwgMTY5NywgMTcwMiwgMTcwNywgMTcxMiwgMTcxNywgMTcyMywgMTcyOCwgMTczMiwgMTMwMywgMTczNSwgCisgICAgMTc0MCwgMTc0NSwgMTMwOCwgMTc0OSwgMTc1MywgMTc2MCwgMTMxMywgMTc2NywgMTMxOCwgMTc3MSwgMTc3MywgMTc3OCwgCisgICAgMTc4NCwgMTMyMiwgMTc4OSwgMTc5OCwgMTMyNywgMTgwMywgMTgwOSwgMTgxNCwgMTMzMiwgMTgxOSwgMTgyNCwgMTgyNywgCisgICAgMTgzMiwgMTgzNiwgMTg0MCwgMTg0NCwgMTg0NywgMTg1MSwgMTMzNywgMTg1NiwgMTM0MiwgMTg2MCwgMTg2MiwgMTg2OCwgCisgICAgMTg3NCwgMTg4MCwgMTg4NiwgMTg5MiwgMTg5OCwgMTkwNCwgMTkxMCwgMTkxNSwgMTkyMSwgMTkyNywgMTkzMywgMTkzOSwgCisgICAgMTk0NSwgMTk1MSwgMTk1NywgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NCwgMTk4OSwgMTk5NCwgMTk5OSwgMjAwNCwgCisgICAgMjAwOSwgMjAxNCwgMjAxOSwgMjAyNSwgMjAzMCwgMjAzNiwgMjA0MSwgMjA0NywgMjA1MywgMjA1OCwgMjA2NCwgMjA3MCwgCisgICAgMjA3NiwgMjA4MiwgMjA4NywgMjA5MiwgMjA5NCwgMjA5NSwgMjA5OSwgMjEwMywgMjEwOCwgMjExMiwgMjExNiwgMjEyMCwgCisgICAgMjEyNSwgMjEyOSwgMjEzMiwgMjEzNywgMjE0MSwgMjE0NiwgMjE1MCwgMjE1NCwgMjE1OSwgMjE2MywgMjE2NiwgMjE3MCwgCisgICAgMjE3NiwgMjE5MCwgMjE5NCwgMjE5OCwgMjIwMiwgMjIwNSwgMjIxMCwgMjIxNCwgMjIxOCwgMjIyMSwgMjIyNSwgMjIzMCwgCisgICAgMjIzNSwgMjI0MCwgMjI0NSwgMjI0OSwgMjI1MywgMjI1NywgMjI2MSwgMjI2NiwgMjI3MCwgMjI3NSwgMjI3OSwgMjI4NCwgCisgICAgMjI5MCwgMjI5NywgMjMwMywgMjMwOCwgMjMxMywgMjMxOCwgMjMyNCwgMjMyOSwgMjMzNSwgMjM0MCwgMjM0MywgMjM0NSwgCisgICAgMTE5MywgMjM0OSwgMjM1NiwgMjM2NCwgMjM3NCwgMjM4MywgMjM5NywgMjQwMSwgMjQwNSwgMjQxMCwgMjQyMywgMjQzMSwgCisgICAgMjQzNSwgMjQ0MCwgMjQ0NCwgMjQ0NywgMjQ1MSwgMjQ1NSwgMjQ2MCwgMjQ2NSwgMjQ3MCwgMjQ3NCwgMjQ3NywgMjQ4MSwgCisgICAgMjQ4OCwgMjQ5NSwgMjUwMSwgMjUwNiwgMjUxMSwgMjUxNywgMjUyMywgMjUyOCwgMjUzMSwgMTc3NSwgMjUzMywgMjUzOSwgCisgICAgMjU0MywgMjU0OCwgMjU1MiwgMjU1NiwgMTY5MywgMTc4NiwgMjU2MSwgMjU2NSwgMjU2OCwgMjU3MywgMjU3OCwgMjU4MywgCisgICAgMjU4OCwgMjU5MiwgMjU5OSwgMjYwNCwgMjYwNywgMjYxNCwgMjYyMCwgMjYyNCwgMjYyOCwgMjYzMiwgMjYzNywgMjY0NCwgCisgICAgMjY0OSwgMjY1NCwgMjY2MSwgMjY2NywgMjY3MywgMjY3OSwgMjY5MywgMjcxMCwgMjcyNSwgMjc0MCwgMjc0OSwgMjc1NCwgCisgICAgMjc1OCwgMjc2MywgMjc2OCwgMjc3MiwgMjc4NCwgMjc5MSwgMjc5NywgMjI5MywgMjgwMywgMjgxMCwgMjgxNiwgMjgyMCwgCisgICAgMjgyMywgMjgzMCwgMjgzNiwgMjg0MSwgMjg0NSwgMjg1MCwgMjg1NCwgMjg1OCwgMjExNywgMjg2MiwgMjg2NywgMjg3MiwgCisgICAgMjg3NiwgMjg4MSwgMjg4OSwgMjg5MywgMjg5OCwgMjkwMiwgMjkwNiwgMjkxMCwgMjkxNSwgMjkyMCwgMjkyNSwgMjkyOSwgCisgICAgMjkzNCwgMjkzOSwgMjk0MywgMjk0OCwgMjk1MiwgMjk1NSwgMjk1OSwgMjk2MywgMjk3MSwgMjk3NiwgMjk4MCwgMjk4NCwgCisgICAgMjk5MCwgMjk5OSwgMzAwMywgMzAwNywgMzAxMywgMzAxOCwgMzAyNSwgMzAyOSwgMzAzOSwgMzA0MywgMzA0NywgMzA1MiwgCisgICAgMzA1NiwgMzA2MSwgMzA2NywgMzA3MiwgMzA3NiwgMzA4MCwgMzA4NCwgMjQ5MSwgMzA5MiwgMzA5NywgMzEwMywgMzEwOCwgCisgICAgMzExMiwgMzExNywgMzEyMiwgMzEyNiwgMzEzMiwgMzEzNywgMjEyMSwgMzE0MywgMzE0OSwgMzE1NCwgMzE1OSwgMzE2NCwgCisgICAgMzE2OSwgMzE3NCwgMzE3OSwgMzE4NCwgMzE4OSwgMzE5NCwgMzIwMCwgMzIwNSwgMTIwOCwgMTAxLCAzMjExLCAzMjE1LCAKKyAgICAzMjE5LCAzMjIzLCAzMjI4LCAzMjMyLCAzMjM2LCAzMjQyLCAzMjQ3LCAzMjUxLCAzMjU1LCAzMjYwLCAzMjY1LCAzMjY5LCAKKyAgICAzMjc0LCAzMjc4LCAzMjgxLCAzMjg1LCAzMjkwLCAzMjk0LCAzMjk5LCAzMzAzLCAzMzA2LCAzMzEwLCAzMzE0LCAzMzE5LCAKKyAgICAzMzIzLCAzMzI2LCAzMzM5LCAzMzQzLCAzMzQ3LCAzMzUxLCAzMzU2LCAzMzYwLCAzMzY0LCAzMzY3LCAzMzcxLCAzMzc1LCAKKyAgICAzMzgwLCAzMzg0LCAzMzg5LCAzMzk0LCAzMzk5LCAzNDAzLCAzNDA4LCAzNDExLCAzNDE0LCAzNDE5LCAzNDI1LCAzNDI5LCAKKyAgICAzNDMzLCAzNDM2LCAzNDQxLCAzNDQ1LCAzNDUwLCAzNDU0LCAzNDU4LCAzNDYxLCAzNDY3LCAzNDcyLCAzNDc3LCAzNDgzLCAKKyAgICAzNDg4LCAzNDkzLCAzNDk5LCAzNTA1LCAzNTEwLCAzNTE1LCAzNTIwLCAzNTI1LCAxMTQwLCA1NzksIDM1MjgsIDM1MzEsIAorICAgIDM1MzYsIDM1NDAsIDM1NDQsIDM1NDgsIDM1NTIsIDM1NTUsIDM1NTksIDM1NjQsIDM1NjksIDM1NzMsIDM1NzgsIDM1ODIsIAorICAgIDM1ODcsIDM1OTEsIDM1OTUsIDM1OTksIDM2MDUsIDM2MTEsIDM2MTQsIDM2MTcsIDEzOSwgMzYyMywgMzYyOCwgMzYzNywgCisgICAgMzY0NSwgMzY1NCwgMzY2MSwgMzY2NywgMzY3NCwgMzY3OSwgMzY4MywgMzY4NywgMzY5NSwgMzcwMiwgMzcwNywgMzcxNCwgCisgICAgMzcxOSwgMzcyMywgMzczMywgMzczNywgMzc0MSwgMzc0NiwgMzc1MSwgMzc2MSwgMjEzMywgMzc2NiwgMzc3MCwgMzc3MywgCisgICAgMzc3OSwgMzc4NCwgMzc5MCwgMzc5NiwgMzgwMSwgMzgwOCwgMzgxMiwgMzgxNiwgNjM3LCA3MDEsIDEzNjksIDM4MjAsIAorICAgIDM4MjcsIDM4MzQsIDM4NDAsIDM4NDUsIDM4NTIsIDM4NTksIDM4NjQsIDM4NzAsIDM4NzYsIDM4ODEsIDM4ODUsIDM4OTEsIAorICAgIDM4OTgsIDM5MDMsIDM5MDcsIDIxNDIsIDM5MTEsIDM5MTksIDM5MjUsIDM5MzMsIDczOSwgMzkzOSwgMzk0NywgMzk1OCwgCisgICAgMzk2MiwgMzk3MiwgMjE0NywgMzk3OCwgMzk4MywgMzk5OCwgNDAwNCwgNDAxMSwgNDAyMSwgNDAyNywgNDAzMiwgNDAzOCwgCisgICAgNDA0NCwgNDA0NywgNDA1MCwgNDA1NCwgNDA1OSwgNDA2NiwgNDA3MSwgNDA3NSwgNDA3OSwgNDA4MywgNDA4NywgNDA5MiwgCisgICAgNDA5OCwgNDEwOSwgNDExMywgMzI4NiwgNDExOCwgNDEzMCwgNDEzNiwgNDE0NCwgNDE0OCwgNDE1MywgMTU2MiwgNDE2MCwgCisgICAgNDE2MywgNDE2NiwgNDE3MCwgNDE3MywgNDE3OSwgNDE4MywgNDE5NywgNDIwMSwgNDIwNCwgNDIwOCwgNDIxNCwgNDIyMCwgCisgICAgNDIyNSwgNDIyOSwgNDIzMywgNDIzOSwgNDI1MCwgNDI1NiwgNDI2MSwgNDI2NywgNDI3MSwgNDI3OSwgNDI5MSwgNDMwMSwgCisgICAgNDMwNywgNDMxMiwgNDMyMSwgNDMyOSwgNDMzNiwgNDM0MiwgNDM0NiwgNDM1MiwgNDM2MSwgNDM3MCwgNDM3NCwgNDM4MywgCisgICAgNDM4OCwgNDM5MiwgNDM5NywgNDQwMSwgNDQwOSwgNDQxNSwgNDQxOSwgNDQyNCwgNDQyOCwgNDQzNCwgMjE1NSwgMTM4NSwgCisgICAgNDQ0MCwgNDQ0NSwgNDQ1MSwgNDQ1NiwgNDQ2MSwgNDQ2NiwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NywgNDQ5MiwgNDQ5OCwgCisgICAgNDUwMywgNDUwOCwgNDUxMywgNDUxOSwgNDUyNCwgNDUyOSwgNDUzNCwgNDUzOSwgNDU0NSwgNDU1MCwgNDU1NiwgNDU2MSwgCisgICAgNDU2NiwgNDU3MSwgNDU3NiwgNDU4MSwgNDU4NiwgNDU5MiwgNDU5NywgNDYwMiwgMjkxLCAzMjEsIDQ2MDcsIDQ2MTMsIAorICAgIDQ2MTcsIDQ2MjEsIDQ2MjYsIDQ2MzAsIDQ2MzQsIDQ2MzcsIDQ2NDEsIDQ2NDUsIDQ2NDksIDQ2NTMsIDQ2NTcsIDQ2NjIsIAorICAgIDQ2NjYsIDQ2NzAsIDQ2NzYsIDQ0MzcsIDQ2ODEsIDQ2ODUsIDQ2ODgsIDQ2OTMsIDQ2OTgsIDQ3MDMsIDQ3MDgsIDQ3MTMsIAorICAgIDQ3MTgsIDQ3MjMsIDQ3MjgsIDQ3MzMsIDQ3MzgsIDQ3NDIsIDQ3NDcsIDQ3NTIsIDQ3NTcsIDQ3NjIsIDQ3NjcsIDQ3NzIsIAorICAgIDQ3NzcsIDQ3ODIsIDQ3ODcsIDQ3OTIsIDQ3OTYsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTYsIDQ4MjEsIDQ4MjYsIDQ4MzEsIAorICAgIDQ4MzYsIDQ4NDEsIDQ4NDYsIDQ4NTAsIDQ4NTUsIDQ4NjAsIDQ4NjUsIDQ4NzAsIDQ4NzUsIDQ4ODAsIDQ4ODUsIDQ4OTAsIAorICAgIDQ4OTUsIDQ5MDAsIDQ5MDQsIDQ5MDksIDQ5MTQsIDQ5MTksIDQ5MjQsIDQ5MjksIDQ5MzQsIDQ5MzksIDQ5NDQsIDQ5NDksIAorICAgIDQ5NTQsIDQ5NTgsIDQ5NjMsIDQ5NjgsIDQ5NzMsIDQ5NzgsIDQ5ODMsIDQ5ODgsIDQ5OTMsIDQ5OTgsIDUwMDMsIDUwMDgsIAorICAgIDUwMTIsIDUwMTcsIDUwMjIsIDUwMjcsIDUwMzIsIDUwMzcsIDUwNDIsIDUwNDcsIDUwNTIsIDUwNTcsIDUwNjIsIDUwNjYsIAorICAgIDUwNzEsIDUwNzYsIDUwODEsIDUwODYsIDUwOTIsIDUwOTgsIDUxMDQsIDUxMTAsIDUxMTYsIDUxMjIsIDUxMjgsIDUxMzMsIAorICAgIDUxMzksIDUxNDUsIDUxNTEsIDUxNTcsIDUxNjMsIDUxNjksIDUxNzUsIDUxODEsIDUxODcsIDUxOTMsIDUxOTgsIDUyMDQsIAorICAgIDUyMTAsIDUyMTYsIDUyMjIsIDUyMjgsIDUyMzQsIDUyNDAsIDUyNDYsIDUyNTIsIDUyNTgsIDUyNjMsIDUyNjksIDUyNzUsIAorICAgIDUyODEsIDUyODcsIDUyOTMsIDUyOTksIDUzMDUsIDUzMTEsIDUzMTcsIDUzMjMsIDUzMjgsIDUzMzQsIDUzNDAsIDUzNDYsIAorICAgIDUzNTIsIDUzNTgsIDUzNjQsIDUzNzAsIDUzNzYsIDUzODIsIDUzODgsIDUzOTMsIDUzOTksIDU0MDUsIDU0MTEsIDU0MTcsIAorICAgIDU0MjMsIDU0MjksIDU0MzUsIDU0NDEsIDU0NDcsIDU0NTMsIDU0NTgsIDU0NjIsIDU0NjgsIDU0NzQsIDU0ODAsIDU0ODYsIAorICAgIDU0OTIsIDU0OTgsIDU1MDQsIDU1MTAsIDU1MTYsIDU1MjIsIDU1MjcsIDU1MzMsIDU1MzksIDU1NDUsIDU1NTEsIDU1NTcsIAorICAgIDU1NjMsIDU1NjksIDU1NzUsIDU1ODEsIDU1ODcsIDU1OTIsIDU1OTgsIDU2MDQsIDU2MTAsIDU2MTYsIDU2MjIsIDU2MjgsIAorICAgIDU2MzQsIDU2NDAsIDU2NDYsIDU2NTIsIDU2NTcsIDU2NjMsIDU2NjksIDU2NzUsIDU2ODEsIDU2ODcsIDU2OTMsIDU2OTksIAorICAgIDU3MDUsIDU3MTEsIDU3MTcsIDU3MjIsIDU3MjgsIDU3MzQsIDU3NDAsIDU3NDYsIDU3NTIsIDU3NTgsIDU3NjQsIDU3NzAsIAorICAgIDU3NzYsIDU3ODIsIDU3ODcsIDU3OTMsIDU3OTksIDU4MDUsIDU4MTEsIDU4MTcsIDU4MjMsIDU4MjksIDU4MzUsIDU4NDEsIAorICAgIDU4NDcsIDU4NTIsIDU4NTgsIDU4NjQsIDU4NzAsIDU4NzYsIDU4ODIsIDU4ODgsIDU4OTQsIDU5MDAsIDU5MDYsIDU5MTIsIAorICAgIDU5MTcsIDU5MjMsIDU5MjksIDU5MzUsIDU5NDEsIDU5NDcsIDU5NTMsIDU5NTksIDU5NjUsIDU5NzEsIDU5NzcsIDU5ODIsIAorICAgIDU5ODgsIDU5OTQsIDYwMDAsIDYwMDYsIDYwMTIsIDYwMTgsIDYwMjQsIDYwMzAsIDYwMzYsIDYwNDIsIDYwNDcsIDYwNTMsIAorICAgIDYwNTksIDYwNjUsIDYwNzEsIDYwNzcsIDYwODMsIDYwODksIDYwOTUsIDYxMDEsIDYxMDcsIDYxMTIsIDYxMTYsIDYxMTksIAorICAgIDYxMjYsIDYxMzAsIDYxNDMsIDYxNDcsIDYxNTEsIDYxNTUsIDYxNTgsIDYxNjIsIDYxNjcsIDYxNzEsIDYxNzUsIDYxODEsIAorICAgIDYxODgsIDYxOTksIDYyMDcsIDYyMTQsIDYyMTgsIDYyMjYsIDYyMzUsIDYyNDEsIDYyNTMsIDYyNTgsIDYyNjEsIDYyNjYsIAorICAgIDYyNzAsIDYyODAsIDYyODgsIDYyOTYsIDYzMDIsIDYzMDYsIDYzMTYsIDYzMjYsIDYzMzQsIDYzNDEsIDYzNDgsIDYzNTQsIAorICAgIDYzNjAsIDYzNjcsIDYzNzEsIDYzNzgsIDYzODgsIDYzOTgsIDY0MDYsIDY0MTMsIDY0MTgsIDY0MjIsIDY0MjYsIDY0MzQsIAorICAgIDY0MzgsIDY0NDMsIDY0NTAsIDY0NTgsIDY0NjMsIDY0NjcsIDY0NzIsIDY0NzYsIDY0ODMsIDY0ODgsIDY1MDIsIDY1MDcsIAorICAgIDY1MTIsIDY1MTksIDM1NDEsIDY1MjgsIDY1MzIsIDY1MzcsIDY1NDEsIDY1NDUsIDY1NDgsIDY1NTMsIDY1NTgsIDY1NjcsIAorICAgIDY1NzMsIDY1NzksIDY1ODUsIDY1ODksIDY2MDAsIDY2MTAsIDY2MjUsIDY2NDAsIDY2NTUsIDY2NzAsIDY2ODUsIDY3MDAsIAorICAgIDY3MTUsIDY3MzAsIDY3NDUsIDY3NjAsIDY3NzUsIDY3OTAsIDY4MDUsIDY4MjAsIDY4MzUsIDY4NTAsIDY4NjUsIDY4ODAsIAorICAgIDY4OTUsIDY5MTAsIDY5MjUsIDY5NDAsIDY5NTUsIDY5NzAsIDY5ODUsIDcwMDAsIDcwMTUsIDcwMzAsIDcwNDUsIDcwNjAsIAorICAgIDcwNzUsIDcwOTAsIDcxMDUsIDcxMjAsIDcxMzUsIDcxNTAsIDcxNjUsIDcxODAsIDcxOTUsIDcyMTAsIDcyMjUsIDcyNDAsIAorICAgIDcyNTUsIDcyNzAsIDcyODUsIDczMDAsIDczMTUsIDczMzAsIDczNDUsIDczNTQsIDczNjMsIDczNjgsIDczNzQsIDczODQsIAorICAgIDczODgsIDczOTIsIDczOTcsIDc0MDIsIDc0MTAsIDc0MTQsIDc0MTcsIDc0MjEsIDMwMzQsIDc0MjQsIDc0MjksIDMzMCwgCisgICAgNTA0LCA3NDM1LCA3NDQzLCA3NDQ3LCA3NDUxLCA3NDU0LCA3NDU4LCA3NDY0LCA3NDY4LCA3NDc2LCA3NDgyLCA3NDg3LCAKKyAgICA3NDk0LCA3NTAyLCA3NTA5LCA3NTE1LCA3NTIwLCA3NTI3LCA3NTMzLCA3NTQxLCA3NTQ1LCA3NTUwLCA3NTYyLCA3NTczLCAKKyAgICA3NTgwLCA3NTg0LCA3NTg4LCA3NTkyLCA3NTk1LCA3NjAxLCAzMzExLCA3NjA1LCA3NjExLCA3NjE2LCA3NjIxLCA3NjI2LCAKKyAgICA3NjMyLCA3NjM3LCA3NjQyLCA3NjQ3LCA3NjUyLCA3NjU4LCA3NjYzLCA3NjY4LCA3Njc0LCA3Njc5LCA3Njg1LCA3NjkwLCAKKyAgICA3Njk2LCA3NzAxLCA3NzA3LCA3NzEyLCA3NzE3LCA3NzIyLCA3NzI3LCA3NzMyLCA3NzM4LCA3NzQzLCA3NzQ4LCA3NzUzLCAKKyAgICA3NzU5LCA3NzY1LCA3NzcxLCA3Nzc3LCA3NzgzLCA3Nzg5LCA3Nzk1LCA3ODAxLCA3ODA3LCA3ODEzLCA3ODE5LCA3ODI1LCAKKyAgICA3ODMwLCA3ODM1LCA3ODQwLCA3ODQ1LCA3ODUwLCA3ODU1LCA3ODYwLCA3ODY1LCA3ODcxLCA3ODc3LCA3ODgyLCA3ODg4LCAKKyAgICA3ODk0LCA3OTAwLCA3OTA1LCA3OTEwLCA3OTE1LCA3OTIwLCA3OTI2LCA3OTMyLCA3OTM3LCA3OTQyLCA3OTQ3LCA3OTUyLCAKKyAgICA3OTU3LCA3OTYzLCA3OTY4LCA3OTc0LCA3OTgwLCA3OTg2LCA3OTkyLCA3OTk4LCA4MDA0LCA4MDEwLCA4MDE2LCA4MDIyLCAKKyAgICAyMTY0LCA3NDUzLCA4MDI3LCA4MDMxLCA4MDM1LCA4MDM4LCA4MDQ1LCA4MDQ4LCA4MDUyLCA4MDYwLCA4MDY1LCA4MDcwLCAKKyAgICA4MDYxLCA4MDc1LCAyMTkxLCA4MDc5LCA4MDg1LCA4MDkxLCA4MDk2LCA4MTAxLCA4MTA4LCA4MTE2LCA4MTIxLCA4MTI1LCAKKyAgICA4MTI4LCA4MTMyLCA4MTM4LCA4MTQ0LCA4MTQ4LCAyMTk5LCA1MjYsIDgxNTEsIDgxNTUsIDgxNjAsIDgxNjYsIDgxNzEsIAorICAgIDgxNzUsIDgxNzgsIDgxODIsIDgxODgsIDgxOTMsIDgxOTcsIDgyMDQsIDgyMDgsIDgyMTIsIDgyMTYsIDg3NiwgOTU4LCAKKyAgICA4MjE5LCA4MjI3LCA4MjM0LCA4MjQwLCA4MjQ3LCA4MjU1LCA4MjYyLCA4MjczLCA4MjgwLCA4Mjg2LCA4MjkxLCA4MzAzLCAKKyAgICAxMjI4LCAxMzkzLCAxMzk4LCA4MzE0LCAxNDAzLCA4MzE4LCA4MzIyLCA4MzMxLCA4MzM5LCA4MzQzLCA4MzUyLCA4MzU4LCAKKyAgICA4MzYzLCA4MzY3LCA4MzczLCA4Mzc4LCA4Mzg1LCAyNzQ1LCA4MzkyLCA4Mzk2LCA4NDA1LCA4NDE0LCA4NDIzLCA4NDMyLCAKKyAgICA4NDM4LCA4NDQzLCA4NDQ4LCA4NDU5LCA4NDcxLCA4NDc2LCA4NDg0LCAyMjUwLCA4NDg4LCA4NDkwLCA4NDk1LCA4NDk5LCAKKyAgICA4NTA4LCA4NTE2LCAxNDA3LCAxNTksIDM1ODMsIDM1ODgsIDg1MjIsIDg1MjYsIDg1MzUsIDg1NDEsIDg1NDYsIDg1NDksIAorICAgIDg1NTgsIDM1OTIsIDI3MzcsIDg1NjQsIDg1NzIsIDg1NzYsIDg1ODAsIDg1ODQsIDIyNjcsIDg1ODgsIDg1OTMsIDg2MDAsIAorICAgIDg2MDYsIDg2MTIsIDg2MTUsIDg2MTcsIDg2MjAsIDg2MjgsIDg2MzYsIDg2NDQsIDg2NDcsIDg2NTIsIDIyODAsIDg2NTcsIAorICAgIDgwNzIsIDg2NjAsIDg2NjIsIDg2NjcsIDg2NzIsIDg2NzcsIDg2ODIsIDg2ODcsIDg2OTIsIDg2OTcsIDg3MDIsIDg3MDcsIAorICAgIDg3MTIsIDg3MTgsIDg3MjMsIDg3MjgsIDg3MzMsIDg3MzksIDg3NDQsIDg3NDksIDg3NTQsIDg3NTksIDg3NjQsIDg3NjksIAorICAgIDg3NzUsIDg3ODAsIDg3ODUsIDg3OTAsIDg3OTUsIDg4MDAsIDg4MDUsIDg4MTAsIDg4MTUsIDg4MjAsIDg4MjUsIDg4MzAsIAorICAgIDg4MzUsIDg4NDAsIDg4NDUsIDg4NTAsIDg4NTUsIDg4NjAsIDg4NjYsIDg4NzIsIDg4NzcsIDg4ODIsIDg4ODcsIDg4OTIsIAorICAgIDg4OTcsIDIyOTEsIDIyOTgsIDIzMDQsIDg5MDIsIDg5MTAsIDg5MTYsIDg5MjQsIDIzMzAsIDIzMzYsIDg5MzIsIDg5MzYsIAorICAgIDg5NDEsIDg5NDUsIDg5NDksIDg5NTMsIDg5NTgsIDg5NjIsIDg5NjcsIDg5NzEsIDg5NzQsIDg5NzcsIDg5ODMsIDg5OTAsIAorICAgIDg5OTYsIDkwMDMsIDkwMDksIDkwMTYsIDkwMjIsIDkwMjksIDkwMzUsIDkwNDEsIDkwNTAsIDkwNTYsIDkwNjAsIDkwNjQsIAorICAgIDkwNjgsIDkwNzIsIDkwNzcsIDkwODEsIDkwODYsIDkwOTAsIDkwOTYsIDkxMDEsIDkxMDgsIDkxMTksIDkxMjcsIDkxMzcsIAorICAgIDkxNDMsIDkxNTMsIDkxNjIsIDkxNjksIDkxNzQsIDkxNzgsIDkxODksIDkyMDIsIDkyMTMsIDkyMjYsIDkyMzcsIDkyNDksIAorICAgIDkyNjEsIDkyNzMsIDkyODYsIDkyOTksIDkzMDYsIDkzMTIsIDkzMjYsIDkzMzMsIDkzMzksIDkzNDgsIDkzNTYsIDkzNjAsIAorICAgIDkzNjUsIDkzNjksIDkzNzYsIDkzODQsIDkzODgsIDkzOTQsIDkzOTgsIDk0MDQsIDk0MTQsIDk0MTgsIDk0MjMsIDk0MjgsIAorICAgIDk0MzUsIDk0NDEsIDk0NTEsIDgyNDIsIDk0NTcsIDk0NjEsIDk0NjgsIDk0NzQsIDk0ODEsIDk0ODgsIDk1NywgOTQ5MiwgCisgICAgOTQ5NiwgOTUwMSwgOTUwNiwgOTUxMSwgOTUxNSwgOTUyMSwgOTUyOSwgOTUzNSwgOTUzOSwgOTU0MiwgOTU0OCwgOTU1OCwgCisgICAgOTU2MiwgOTU2OCwgOTU3MywgOTU3NywgOTU4MSwgOTU4NywgOTU5MywgMjE4NywgOTU5OCwgOTYwMCwgOTYwNSwgOTYxMywgCisgICAgOTYyMiwgOTYyNiwgOTYzMiwgOTYzNywgOTY0MiwgOTY0NywgOTY1MiwgOTY1OCwgOTY2MywgOTY2OCwgNDIzNSwgOTY3MywgCisgICAgOTY3OCwgOTY4MiwgOTY4OCwgOTY5MywgOTY5OSwgOTcwNCwgOTcwOSwgOTcxNSwgOTcyMCwgOTYyNywgOTcyNiwgOTczMCwgCisgICAgOTczNywgOTc0MywgOTc0OCwgOTc1MiwgNjQ5OCwgOTc1NywgOTc2NiwgOTc3MSwgOTc3NiwgODU5NiwgODYwMywgOTc4MSwgCisgICAgMjkxMiwgOTc4NSwgOTc5MCwgOTc5NSwgOTgwMCwgOTYzOCwgOTgwNCwgOTgwOSwgOTgxNCwgOTY0MywgOTgxOCwgOTY0OCwgCisgICAgOTgyMywgOTgzMCwgOTgzNywgOTg0MywgOTg1MCwgOTg1NiwgOTg2MiwgOTg2NywgOTg3NCwgOTg3OSwgOTg4NCwgOTg4OSwgCisgICAgOTg5NSwgOTY1MywgOTY1OSwgOTkwMSwgOTkwNywgOTkxMiwgOTkxNywgOTkyNSwgOTY2NCwgOTkzMCwgMTEwMiwgOTkzMywgCisgICAgOTk0MSwgOTk0NywgOTk1MywgOTk2MiwgOTk3MCwgOTk3OCwgOTk4NiwgOTk5NCwgMTAwMDIsIDEwMDEwLCAxMDAxOCwgCisgICAgMTAwMjYsIDEwMDM1LCAxMDA0NCwgMTAwNTIsIDEwMDYxLCAxMDA3MCwgMTAwNzksIDEwMDg4LCAxMDA5NywgMTAxMDYsIAorICAgIDEwMTE1LCAxMDEyNCwgMTAxMzMsIDEwMTQyLCAxMDE1MCwgMTAxNTUsIDEwMTYxLCAxMDE2OSwgMTAxNzYsIDEwMTkxLCAKKyAgICAxMDIwOCwgMTAyMjcsIDEwMjM2LCAxMDI0NCwgMTAyNTksIDEwMjcwLCAxMDI4MCwgMTAyOTAsIDEwMjk4LCAxMDMwNCwgCisgICAgMTAzMTYsIDEwMzI1LCAxMDMzMywgMTAzNDAsIDEwMzQ3LCAxMDM1NCwgMTAzNjAsIDEwMzY1LCAxMDM3NSwgMTAzODMsIAorICAgIDEwMzkzLCAxMDQwMCwgMTA0MTAsIDEwNDIwLCAxMDQzMCwgMTA0MzgsIDEwNDQ1LCAxMDQ1NCwgMTA0NjQsIDEwNDc4LCAKKyAgICAxMDQ5MywgMTA1MDIsIDEwNTEwLCAxMDUxNSwgMTA1MTksIDEwNTI4LCAxMDUzNCwgMTA1MzksIDEwNTQ5LCAxMDU1OSwgCisgICAgMTA1NjksIDEwNTc0LCAxMDU3OCwgMTA1ODcsIDEwNTkyLCAxMDYwOCwgMTA2MjUsIDEwNjM1LCAxMDY0NiwgMTA2NTksIAorICAgIDEwNjY3LCAxMDY4MCwgMTA2OTIsIDEwNzAwLCAxMDcwNSwgMTA3MDksIDEwNzE1LCAxMDcyMCwgMTA3MjgsIDEwNzM2LCAKKyAgICAxMDc0MywgMTA3NDgsIDEwNzU2LCAxMDc2NiwgMTA3NzIsIDEwNzc2LCAxMDc3OSwgMTA3ODMsIDEwNzg5LCAxMDc5NiwgCisgICAgMTA4MDAsIDEwODA4LCAxMDgxNywgMTA4MjUsIDEwODMyLCAxMDgzNywgMTA4NDIsIDEwODQ2LCAxMDg1MCwgMTA4NTgsIAorICAgIDEwODczLCAxMDg4OSwgMTA4OTUsIDEwOTAzLCAxMDkxMiwgMTA5MjAsIDEwOTI2LCAxMDkzMCwgMTA5MzcsIDEwOTQ4LCAKKyAgICAxMDk1MiwgMTA5NTUsIDEwOTYxLCA5NjY5LCAxMDk2NiwgMTA5NzIsIDEwOTc5LCAxMDk4NSwgMTA5OTAsIDEwOTk3LCAKKyAgICAxMTAwNCwgMTEwMTEsIDExMDE4LCAxMTAyNSwgMTEwMzIsIDExMDM5LCAxMTA0NiwgMTEwNTEsIDEwMjA0LCAxMTA1NiwgCisgICAgMTEwNjIsIDExMDY5LCAxMTA3NiwgMTEwODEsIDExMDg4LCAxMTA5NywgMTExMDEsIDExMTEzLCA4NjM0LCAxMTExNywgCisgICAgMTExMjAsIDExMTI0LCAxMTEyOCwgMTExMzIsIDExMTM2LCAxMTE0MiwgMTExNDgsIDExMTUzLCAxMTE1OSwgMTExNjQsIAorICAgIDExMTY5LCAxMTE3NSwgMTExODAsIDExMTg1LCA5NDMxLCAxMTE5MCwgMTExOTQsIDExMTk4LCAxMTIwMiwgMTEyMDcsIAorICAgIDExMjEyLCAxMTIxNywgMTEyMjUsIDExMjMxLCAxMTIzNiwgMTEyNDAsIDExMjQ0LCAxMTI1MSwgMTEyNTYsIDExMjY0LCAKKyAgICAxMTI3MSwgMTEyNzYsIDExMjgwLCAxMTI4MywgMTEyODksIDExMjk2LCAxMTMwMCwgMTEzMDMsIDExMzA4LCAxMTMxMiwgCisgICAgNDI3NCwgMTEzMTgsIDExMzI3LCA0NiwgMTEzMzUsIDExMzQxLCAxMTM0NiwgMTEzNTEsIDExMzU5LCAxMTM2NiwgMTEzNzEsIAorICAgIDk0NDYsIDExMzc3LCAxMTM4MywgMTEzODgsIDExMzkyLCAxMTM5NSwgMTE0MTAsIDExNDI5LCAxMTQ0MSwgMTE0NTQsIAorICAgIDExNDY3LCAxMTQ4MCwgMTE0OTQsIDExNTA3LCAxMTUyMiwgMTE1MjksIDk2NzQsIDExNTM1LCAxMTU0OSwgMTE1NTQsIAorICAgIDExNTYwLCAxMTU2NSwgMTE1NzMsIDExNTc4LCA4NDAxLCAxMTU4MywgMTE1ODYsIDExNTk0LCAxMTYwMSwgMTE2MDYsIAorICAgIDExNjEwLCAxMTYxNiwgMjkxNywgMTAyNzgsIDExNjIwLCAxMTYyNCwgMTE2MzAsIDExNjM2LCAxMTY0MSwgMTE2NDcsIAorICAgIDExNjUyLCA5NjgzLCAxMTY1OCwgMTE2NjQsIDExNjY5LCAxMTY3NCwgMTE2ODIsIDExNjg4LCAxMTcwMSwgMTE3MDksIAorICAgIDExNzE2LCAxMTcyMiwgOTY4OSwgMTE3MjgsIDExNzM2LCAxMTc0NCwgMTE3NTEsIDExNzY0LCAxMTc3NywgMTE3ODksIAorICAgIDExNzk5LCAxMTgwNywgMTE4MTQsIDExODI2LCAxMTgzMywgMTE4NDMsIDExODUyLCAxMTg2MSwgMTE4NjksIDExODc2LCAKKyAgICAxMTg4MSwgMTE4ODcsIDk2OTQsIDExODkyLCAxMTg5OCwgMTE5MDMsIDExOTA4LCA5NzAwLCAxMTkxMywgMTE5MTYsIAorICAgIDExOTIzLCAxMTkyOSwgMTE5NDIsIDkxMTIsIDExOTUzLCAxMTk1OSwgMTE5NjgsIDExOTc2LCAxMTk4MywgMTE5ODksIAorICAgIDEyMDAwLCAxMjAwNiwgMTIwMTEsIDM4MzYsIDEyMDE5LCAxMjAyNCwgMTE0MDIsIDEyMDMwLCAxMjAzNywgMTIwNDIsIAorICAgIDk3MDUsIDEyMDQ4LCAxMjA1MywgMTIwNjAsIDEyMDY2LCAxMjA3MiwgMTIwNzcsIDEyMDg1LCAxMjA5MywgMTIxMDAsIAorICAgIDEyMTA0LCAxMjExNiwgMTIxMzAsIDEyMTQwLCAxMjE0NSwgMTIxNDksIDEyMTYwLCAxMjE2NiwgMTIxNzEsIDEyMTc2LCAKKyAgICA5NzEwLCAxMjE4MCwgOTcxNiwgMTIxODUsIDEyMTg4LCAxMjE5MywgMTIyMDUsIDEyMjEyLCAxMjIxNywgMTIyMjEsIAorICAgIDEyMjI5LCAxMjIzNCwgMTIyMzgsIDEyMjQzLCAxMjI0NywgMTIyNTQsIDEyMjYwLCA5NzIxLCA5NjI4LCAxMjI2NywgMjkyMiwgCisgICAgMTIsIDEyMjc0LCAxMjI3OSwgMTIyODMsIDEyMjg3LCAxMjI5MywgMTIzMDEsIDEyMzExLCAxMjMxNiwgMTIzMjEsIDEyMzI4LCAKKyAgICAxMjMzNSwgMTIzMzksIDEyMzUwLCAxMjM2MCwgMTIzNjksIDEyMzc4LCAxMjM5MCwgMTIzOTUsIDEyMzk5LCAxMjQwNywgCisgICAgMTI0MjEsIDEyNDI1LCAxMjQyOCwgMTI0MzYsIDEyNDQzLCAxMjQ1MSwgMTI0NTUsIDEyNDY2LCAxMjQ3MCwgMTI0NzcsIAorICAgIDEyNDgyLCAxMjQ4NiwgMTI0OTIsIDEyNDk3LCAxMjUwMywgMTI1MDgsIDEyNTEzLCAxMjUxNywgMTI1MjMsIDEyNTI4LCAKKyAgICAxMjUzOSwgMTI1NDMsIDEyNTQ2LCAxMjU1MiwgMTI1NTcsIDEyNTYzLCAxMjU2OSwgMTI1NzYsIDEyNTg3LCAxMjU5NywgCisgICAgMTI2MDcsIDEyNjE2LCAxMjYyMywgMTI2MzIsIDEyNjM2LCA5NzMxLCA5NzM4LCA5NzQ0LCA5NzQ5LCAxMjY0MiwgMTI2NDgsIAorICAgIDEyNjU0LCAxMjY1OSwgMTI2NjUsIDk3NTMsIDEyNjcxLCAxMjY3NCwgMTI2ODEsIDEyNjg2LCAxMjcwMSwgMTI3MTcsIAorICAgIDEyNzMyLCAxMjc0MCwgMTI3NDYsIDEyNzUxLCA5NTAsIDM3NCwgMTI3NTYsIDEyNzY0LCAxMjc3MSwgMTI3NzcsIDEyNzgyLCAKKyAgICAxMjc4NywgOTc1OCwgMTI3ODksIDEyNzkzLCAxMjc5OCwgMTI4MDIsIDEyODEyLCAxMjgxNywgMTI4MjEsIDEyODMwLCAKKyAgICAxMjgzNCwgMTI4MzcsIDEyODQ0LCA5NzY3LCAxMjg0OSwgMTI4NTIsIDEyODYwLCAxMjg2NywgMTI4NzUsIDEyODc5LCAKKyAgICAxMjg4MywgMTI4OTAsIDEyODk5LCAxMjkwNiwgMTI5MDIsIDEyOTEzLCAxMjkxNywgMTI5MjMsIDEyOTI3LCAxMjkzMSwgCisgICAgMTI5MzUsIDEyOTQxLCAxMjk1MSwgMTI5NTksIDEyOTY2LCAxMjk3MCwgMTI5NzgsIDEyOTgyLCAxMjk4OSwgMTI5OTMsIAorICAgIDEyOTk4LCAxMzAwMiwgMTMwMDksIDEzMDE1LCAxMzAyMywgMTMwMjksIDEzMDM0LCAxMzA0NCwgMTMwNDksIDEzMDU0LCAKKyAgICAxMzA1OCwgMTMwNjIsIDEzMDcwLCA0MTI0LCAxMzA3OCwgMTMwODMsIDk3NzIsIDEzMDg3LCAxMzA5MSwgMTMwOTQsIAorICAgIDEzMTAyLCAxMzEwOSwgMTMxMTMsIDYyOTgsIDEzMTE3LCAxMzEyMiwgMTMxMjcsIDEzMTMxLCAxMzE0MiwgMTMxNTIsIAorICAgIDEzMTU3LCAxMzE2MywgMTMxNjgsIDEzMTcyLCAxMzE3NSwgMTMxODMsIDEzMTg4LCAxMzE5MywgMTMyMDAsIDEzMjA1LCAKKyAgICA5Nzc3LCAxMzIxMCwgMTMyMTQsIDEzMjIxLCAxNzM3LCA2NDU2LCAxMzIyNiwgMTMyMzEsIDEzMjM2LCAxMzI0MSwgMTMyNDcsIAorICAgIDEzMjUyLCAxMzI1OCwgMTMyNjMsIDEzMjY4LCAxMzI3MywgMTMyNzgsIDEzMjgzLCAxMzI4OCwgMTMyOTMsIDEzMjk4LCAKKyAgICAxMzMwMywgMTMzMDgsIDEzMzEzLCAxMzMxOCwgMTMzMjMsIDEzMzI4LCAxMzMzMywgMTMzMzgsIDEzMzQ0LCAxMzM0OSwgCisgICAgMTMzNTQsIDEzMzU5LCAxMzM2NCwgMTMzNjksIDEzMzc1LCAxMzM4MCwgMTMzODUsIDEzMzkxLCAxMzM5NiwgMTM0MDIsIAorICAgIDEzNDA3LCAxMzQxMywgMTM0MTgsIDEzNDIzLCAxMzQyOCwgMTM0MzMsIDEzNDM5LCAxMzQ0NCwgMTM0NDksIDEzNDU0LCAKKyAgICA5MDksIDExMiwgMTM0NjIsIDEzNDY2LCAxMzQ3MSwgMTM0NzYsIDEzNDgwLCAxMzQ4NCwgMTM0ODgsIDEzNDkzLCAxMzQ5NywgCisgICAgMTM1MDIsIDEzNTA2LCAxMzUwOSwgMTM1MTMsIDEzNTE3LCAxMzUyMywgMTM1MjgsIDEzNTM4LCAxMzU0NCwgMTM1NTIsIAorICAgIDEzNTU4LCAxMzU2MiwgMTM1NjYsIDEzNTczLCAxMzU4MSwgMTM1OTAsIDEzNjAxLCAxMzYxMSwgMTM2MTgsIDEzNjI1LCAKKyAgICAxMzYyOSwgMTM2MzgsIDEzNjQ3LCAxMzY1NSwgMTM2NjQsIDEzNjczLCAxMzY4MiwgMTM2OTEsIDEzNzAxLCAxMzcxMSwgCisgICAgMTM3MjEsIDEzNzMxLCAxMzc0MSwgMTM3NTAsIDEzNzYwLCAxMzc3MCwgMTM3ODAsIDEzNzkwLCAxMzgwMCwgMTM4MTAsIAorICAgIDEzODIwLCAxMzgyOSwgMTM4MzksIDEzODQ5LCAxMzg1OSwgMTM4NjksIDEzODc5LCAxMzg4OSwgMTM4OTgsIDEzOTA4LCAKKyAgICAxMzkxOCwgMTM5MjgsIDEzOTM4LCAxMzk0OCwgMTM5NTgsIDEzOTY4LCAxMzk3OCwgMTM5ODgsIDEzOTk3LCAxNDAwNywgCisgICAgMTQwMTcsIDE0MDI3LCAxNDAzNywgMTQwNDcsIDE0MDU3LCAxNDA2NywgMTQwNzcsIDE0MDg3LCAxNDA5NywgMTQxMDYsIAorICAgIDEyMzcsIDE0MTEyLCAxNDExNSwgMTQxMTksIDE0MTI0LCAxNDEzMSwgMTQxMzcsIDE0MTQyLCAxNDE0NiwgMTQxNTEsIAorICAgIDE0MTYwLCAxNDE2OCwgMTQxNzMsIDE0MTc3LCAxNDE4MSwgMTQxODcsIDE0MTkyLCAxNDE5OCwgOTc4NiwgMTQyMDMsIAorICAgIDE0MjA4LCAxNDIxNywgOTc5NiwgMTQyMjIsIDE0MjI1LCAxNDIzMSwgMTQyMzksIDk4MDEsIDE0MjQ2LCAxNDI1MCwgCisgICAgMTQyNTQsIDE0MjU5LCAxNDI2MywgMTQyNzMsIDE0Mjc5LCAxNDI4NSwgMTQyOTAsIDE0Mjk5LCAxNDMwNywgMTQzMTQsIAorICAgIDE0MzIxLCAxNDMyNiwgMTQzMzMsIDE0MzM4LCAxNDM0MiwgMTQzNDUsIDE0MzU2LCAxNDM2NiwgMTQzNzUsIDE0MzgzLCAKKyAgICAxNDM5NCwgMTQ0MDYsIDE0NDE2LCAxNDQyMSwgMTQ0MjUsIDE0NDMwLCAxNDQzNSwgMTQ0MzksIDE0NDQ1LCAxNDQ1MywgCisgICAgMTQ0NjAsIDE0NDcxLCAxNDQ3NiwgMTQ0ODYsIDE0NDk1LCAxNDQ5OSwgMTQ1MDIsIDE0NTA5LCAxNDUxOSwgMTQ1MjgsIAorICAgIDE0NTM1LCAxNDUzOSwgMTQ1NDYsIDE0NTUyLCAxNDU1NywgMTQ1NjIsIDE0NTY2LCAxNDU3NSwgMTQ1ODAsIDE0NTg0LCAKKyAgICAxNDU5MCwgMTQ1OTQsIDE0NTk5LCAxNDYwMywgMTQ2MTAsIDE0NjE3LCAxNDYyMSwgMTQ2MzAsIDE0NjM4LCAxNDY0NiwgCisgICAgMTQ2NTMsIDE0NjYxLCAxNDY3MywgMTQ2ODQsIDE0Njk0LCAxNDcwMSwgMTQ3MDcsIDE0NzE2LCAxNDcyNywgMTQ3MzYsIAorICAgIDE0NzQ4LCAxNDc2MCwgMTQ3NzIsIDE0NzgyLCAxNDc5MSwgMTQ4MDAsIDE0ODA4LCAxNDgxNSwgMTQ4MjQsIDE0ODMyLCAKKyAgICAxNDgzNiwgMTQ4NDEsIDE0ODQ3LCAxNDg1MywgMTQ4NTgsIDE0ODYzLCA4MDkzLCAxNDg2NywgMTQ4NjksIDE0ODczLCAKKyAgICAxNDg3OCwgMTQ4ODQsIDE0ODkwLCAxNDg5OSwgMTQ5MDMsIDE0OTA5LCAxNDkxNywgMTQ5MjQsIDE0OTMzLCAxNDk0MiwgCisgICAgMTQ5NTEsIDE0OTYwLCAxNDk2OSwgMTQ5NzgsIDE0OTg3LCAxNDk5NiwgMTUwMDYsIDE1MDE2LCAxNTAyNSwgMTUwMzEsIAorICAgIDE1MDM4LCAxNTA0NSwgMTUwNTEsIDE1MDY1LCAxNTA3MSwgMTUwNzgsIDE1MDg2LCAxNTA5NSwgMTUxMDMsIDE1MTA5LCAKKyAgICAxNTExOCwgMTUxMjcsIDE1MTM4LCAxNTE0OCwgMTUxNTYsIDE1MTYzLCAxNTE3MSwgMTUxODAsIDE1MTkzLCAxNTIwMiwgCisgICAgMTUyMTAsIDE1MjE3LCAxNTIzMCwgMTUyMzYsIDE1MjQyLCAxNTI1MiwgMTUyNjEsIDE1MjcwLCAxNTI3NSwgMTUyNzksIAorICAgIDE1Mjg1LCAxNTI5MSwgMTUyOTYsIDE1MzAzLCAxNTMxMCwgOTQ0NSwgMTUzMTUsIDE1MzIwLCAxNTMyNywgMTUzMzUsIAorICAgIDE1MzQwLCAxNTM0NywgMTUzNTIsIDE1MzY0LCAxMzUxOSwgMTUzNjksIDE1Mzc3LCAxNTM4MywgMTUzODgsIDE1Mzk2LCAKKyAgICAxNTQwNCwgMTU0MTEsIDE1NDE5LCAxNTQyNSwgMTU0MzMsIDE1NDQxLCAxNTQ0NywgMTU0NTIsIDE1NDU4LCAxNTQ2NSwgCisgICAgMTU0NzEsIDE1NDc2LCAxNTQ4MCwgMTU0OTEsIDE1NDk5LCAxNTUwNSwgMTU1MTAsIDE1NTE3LCAxNTUyNiwgMTU1MzIsIAorICAgIDE1NTM3LCAxNTU0NSwgMTU1NTQsIDE1NTY4LCA0MDY4LCAxNTU3MiwgMTU1NzcsIDE1NTgyLCAxNTU4OCwgMTU1OTMsIAorICAgIDE1NTk4LCAxNTYwMiwgMTU2MDcsIDE1NjEyLCAxNTYxNywgODA5MiwgMTU2MjIsIDE1NjI3LCAxNTYzMiwgMTU2MzcsIAorICAgIDE1NjQyLCAxNTY0NiwgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMTU2NjYsIDE1NjcyLCAxNTY3OCwgMTU2ODMsIDE1Njg3LCAKKyAgICAxNTY5MywgMTU2OTgsIDE1NzAzLCAxNTcwOCwgOTgwNSwgMTU3MTMsIDE1NzE4LCAxNTcyMywgMTU3MjgsIDE1NzMzLCAKKyAgICAxNTc1MCwgMTU3NjgsIDE1NzgwLCAxNTc5MywgMTU4MTAsIDE1ODI2LCAxNTg0MywgMTU4NTMsIDE1ODcyLCAxNTg4MywgCisgICAgMTU4OTQsIDE1OTA1LCAxNTkxNiwgMTU5MjgsIDE1OTM5LCAxNTk1MCwgMTU5NjcsIDE1OTc4LCAxNTk4OSwgMTU5OTQsIAorICAgIDk4MTAsIDE1OTk5LCAxNjAwMywgMjQyMCwgMTYwMDcsIDE2MDEwLCAxNjAxNiwgMTYwMjQsIDE2MDMyLCAxNjA0MSwgCisgICAgMTYwNDgsIDE2MDUzLCAxNjA2MSwgMTYwNjksIDE2MDc2LCAxNjA4MCwgMTYwODUsIDE2MDkxLCAxNjA5OCwgMTYxMDYsIAorICAgIDE2MTEzLCAxNjEyNSwgMTYxMzIsIDE2MTM4LCAxNjE0NiwgMTYxNTEsIDE2MTU3LCAxMjY5NSwgMTYxNjMsIDE2MTcyLCAKKyAgICAxNjE3OCwgMTYxODMsIDE2MTkxLCAxNjIwMCwgMTYyMDgsIDE2MjE1LCAxNjIyMSwgMTYyMjksIDE2MjM2LCAxNjI0MiwgCisgICAgMTYyNDgsIDE2MjU1LCAxNjI2MiwgMTYyNjgsIDE2Mjc0LCAxNjI4MywgMTYyOTEsIDE2MzAxLCAxNjMwOCwgMTYzMTQsIAorICAgIDE2MzIyLCAxNjMyOCwgMTYzMzYsIDE2MzQ0LCAxNjM1MSwgMTYzNjQsIDE2MzcxLCAxNjM4MCwgMTYzODksIDE2Mzk4LCAKKyAgICAxNjQwNiwgMTY0MTYsIDE2NDIzLCAxNjQyOCwgMzcyNywgMTY0MzUsIDE2NDQwLCAxMzUzLCAxNjQ0NCwgMTU2MjMsIAorICAgIDE2NDQ4LCAxNjQ1NCwgMTY0NTgsIDE2NDY2LCAxNjQ3OCwgMTY0ODMsIDE2NDkwLCAxNjQ5NiwgMTY1MDEsIDE2NTA4LCAKKyAgICAxNTYyOCwgMTY1MTIsIDE2NTE2LCAxNjUyMCwgMTU2MzMsIDE2NTI0LCAxNTYzOCwgMTY1MjgsIDE2NTM1LCAxNjU0MCwgCisgICAgMTY1NDQsIDE2NTUxLCAxNjU1NSwgMTY1NjMsIDE2NTcwLCAxNjU3NSwgMTY1NzksIDE2NTg2LCAxNjYwMywgMTY2MTIsIAorICAgIDE2NjE2LCAxNjYxOSwgMTY2MjcsIDE2NjMzLCAxNjYzOCwgMzgwNSwgMTY2NDIsIDE2NjQ0LCAxNjY1MiwgMTY2NTksIAorICAgIDE2NjY5LCAxNjY4MSwgMTY2ODYsIDE2NjkwLCAxNjY5NiwgMTY3MDEsIDE2NzA1LCAxNjcxMSwgMTY3MTYsIDE2NzIyLCAKKyAgICAxNjcyNSwgMTY3MzIsIDE2NzQwLCAxNjc0NywgMTY3NTMsIDE2NzU4LCAxNjc2NCwgMTY3NjksIDE2Nzc2LCAxNjc4MiwgCisgICAgMTY3ODcsIDE2Nzk0LCAxNjc5OSwgMTY4MDMsIDE2ODA5LCAxNjgxMywgMTY4MjAsIDE2ODI2LCAxNjgzMSwgMTY4MzcsIAorICAgIDE2ODQ1LCAxNjg1MywgMTY4NjAsIDE2ODY2LCAxNjg3MSwgMTY4NzcsIDE2ODgzLCAxNjg5MSwgMTY4OTksIDE2OTA1LCAKKyAgICAxNjkxMSwgMTY5MTYsIDE2OTIzLCAxNjkyOCwgMTY5MzIsIDE2OTM4LCAxNjk0MywgMTY5NTAsIDE2OTU1LCAxNjk2MSwgCisgICAgMTY5NjQsIDE2OTcwLCAxNjk3NiwgMTY5NzksIDE2OTgzLCAxNjk4NywgMTY5OTksIDE3MDA1LCAxNzAxMCwgMTcwMTcsIAorICAgIDE3MDIzLCAxNzAyOSwgMTcwNDAsIDE3MDUwLCAxNzA1OSwgMTcwNjcsIDE3MDc0LCAxNzA4NSwgMTcwOTUsIDE3MTA1LCAKKyAgICAxNzExMywgMTcxMTYsIDE1NjUyLCAxNzEyMSwgMTcxMjYsIDE1NjU3LCAxNTc5OCwgMTcxMzQsIDE3MTQ3LCAxNzE2MiwgCisgICAgMTcxNzMsIDE1ODE1LCAxNzE5MSwgMTcyMDQsIDE3MjE3LCAxNzIyOCwgMTE0MTcsIDE3MjM5LCAxNzI1MiwgMTcyNzEsIAorICAgIDE3MjgyLCAxNzI5MywgMTczMDQsIDI2ODgsIDE3MzE3LCAxNzMyMSwgMTczMjksIDE3MzQwLCAxNzM0OCwgMTczNjMsIAorICAgIDE3Mzc4LCAxNzM4OSwgMTczOTYsIDE3NDAyLCAxNzQxMCwgMTc0MTQsIDE3NDIwLCAxNzQyMywgMTc0MzYsIDE3NDQ4LCAKKyAgICAxNzQ1OCwgMTc0NjYsIDE3NDczLCAxNzQ4MSwgMTc0OTEsIDE3NDk2LCAxNzUwMywgMTc1MDgsIDE3NTE1LCAxNzUyNiwgCisgICAgMTc1MzYsIDE3NTQyLCAxNzU0NywgMTc1NTIsIDE1NjYyLCAxNzU1NiwgMTc1NjIsIDE3NTY4LCAxNzU3MywgMTc1NzgsIAorICAgIDE3NTgzLCAxNzU4NywgMTU2NjcsIDE1NjczLCAxNzU5MSwgMTU2NzksIDE3NTk2LCAxNzYwNCwgMTc2MDksIDE3NjEzLCAKKyAgICAxNzYyMSwgMTc2MzAsIDE3NjM3LCAxNzY0MSwgOTY0OSwgMTc2NDUsIDE3NjQ3LCAxNzY1MiwgMTc2NTcsIDE3NjYzLCAKKyAgICAxNzY2OCwgMTc2NzMsIDE3Njc4LCAxNzY4MywgMTc2ODcsIDE3NjkzLCAxNzY5OSwgMTc3MDQsIDE3NzEwLCAxNzcxNSwgCisgICAgMTc3MjAsIDE3NzI0LCAxNzczMCwgMTc3MzUsIDE3NzQwLCAxNzc0NSwgMTc3NTcsIDE3NzYyLCAxNzc2OCwgMTc3NzMsIAorICAgIDE3Nzc4LCAxNzc4NCwgMTc3OTAsIDE3Nzk1LCAxNzgwMCwgMTc4MDUsIDE3ODEyLCAxNzgxOCwgMTc4MjksIDE3ODM2LCAKKyAgICAxNzg0MSwgMTc4NDUsIDE3ODQ5LCAxNzg1MiwgMTc4NjAsIDE3ODY1LCAxNzg3MiwgMTc4NzksIDE3ODg1LCAxNzg5MCwgCisgICAgMTc4OTUsIDE3OTAwLCAxNzkwNywgMTc5MTcsIDE3OTI1LCAxNzkzMCwgMTc5MzcsIDE3OTQzLCAxNzk1MiwgMTc5NjIsIAorICAgIDE3OTcyLCAxNzk4NiwgMTgwMDAsIDE4MDE0LCAxODAyOCwgMTgwNDMsIDE4MDU4LCAxODA3NSwgMTgwOTMsIDE4MTA2LCAKKyAgICAxODExMiwgMTgxMTcsIDE4MTIyLCAxODEyNiwgMTgxMzQsIDE4MTM5LCAxODE0NywgMTgxNTMsIDE4MTU5LCAxODE2NCwgCisgICAgMTgxNjksIDE4MTczLCAxODE3OCwgMTgxODIsIDE4MTg3LCAxODE5MSwgMTgyMDIsIDE4MjA4LCAxODIxMywgMTgyMTgsIAorICAgIDE4MjI1LCAxODIzMCwgMTgyMzQsIDM2OTAsIDE4MjM5LCAxODI0NSwgMTgyNTIsIDE1Njg4LCAxODI1OCwgMTgyNjIsIAorICAgIDE4MjY4LCAxODI3MywgMTgyNzgsIDE4MjgyLCAxODI4OCwgMTgyOTMsIDE4Mjk4LCAxODMwNSwgMTgzMTAsIDE0Mjc1LCAKKyAgICAxODMxNCwgMTgzMTksIDE4MzIzLCAxODMyOCwgMTgzMzQsIDE4MzQwLCAxODM0NywgMTgzNTcsIDE4MzY1LCAxODM3MiwgCisgICAgMTgzNzcsIDE4MzgxLCAxODM5MCwgMTgzOTgsIDE4NDA1LCAxODQxMiwgMTg0MTgsIDE4NDIzLCAxODQyOSwgMTg0MzQsIAorICAgIDE4NDM5LCAxODQ0NSwgMTg0NTAsIDE4NDU2LCAxODQ2MSwgMTg0NjcsIDE4NDczLCAxODQ4MCwgMTg0ODYsIDE4NDkxLCAKKyAgICAxODQ5NiwgOTg3NSwgMTg1MDUsIDE4NTA4LCAxODUxNiwgMTg1MjIsIDE4NTI3LCAxODUzMiwgMTg1NDIsIDE4NTQ5LCAKKyAgICAxODU1NSwgMTg1NjAsIDE4NTY1LCAxODU3MSwgMTg1NzYsIDE4NTgyLCAxODU4NywgMTg1OTMsIDE4NTk5LCAxODYwNCwgCisgICAgMTg2MTIsIDE4NjE5LCAxODYyNCwgMTg2MjksIDE4NjM1LCAxODY0MCwgMTg2NDQsIDE4NjUzLCAxODY2NCwgMTg2NzEsIAorICAgIDE4Njc5LCAxODY4NiwgMTg2OTEsIDE4Njk2LCAxODcwMiwgMTg3MDcsIDE4NzE1LCAxODcyMSwgMTg3MjcsIDE4NzM0LCAKKyAgICAxODc0MCwgMTg3NDUsIDE4NzQ5LCAxODc1NSwgMTg3NjAsIDE4NzY1LCAxODc2OSwgMTg3NzQsIDE0MjYsIDgxMTcsIDI5MzYsIAorICAgIDE4Nzc4LCAxODc4MiwgMTg3ODYsIDE4NzkwLCAxODc5NCwgMTg3OTgsIDE4ODAxLCAxODgwNiwgMTg4MTMsIDE4ODIxLCAKKyAgICAxNTY5OSwgMTg4MjgsIDE4ODM4LCAxODg0NiwgMTg4NTMsIDE4ODYxLCAxODg3MSwgMTg4ODAsIDkyMjAsIDE4ODkzLCAKKyAgICAxODg5OCwgMTg5MDMsIDE4OTExLCAxODkxOCwgMTQzNzEsIDE0MzgwLCAxODkyNSwgMTg5MzUsIDE4OTUwLCAxODk1NiwgCisgICAgMTg5NjMsIDE4OTcwLCAxODk3NiwgMTg5ODIsIDE4OTkzLCAxOTAwMSwgMTkwMDksIDE5MDE5LCAxOTAyOSwgMTU3MDQsIAorICAgIDE5MDM4LCAxOTA0NCwgMTkwNTAsIDE5MDU4LCAxOTA2NiwgMTkwNzEsIDE5MDgwLCAxOTA4OCwgMTkxMDAsIDE5MTEwLCAKKyAgICAxOTEyMCwgMTkxMzAsIDE5MTM5LCAxOTE1MSwgMTkxNjEsIDE5MTcxLCAxOTE4MiwgMTkxODcsIDE5MTk5LCAxOTIxMSwgCisgICAgMTkyMjMsIDE5MjM1LCAxOTI0NywgMTkyNTksIDE5MjcxLCAxOTI4MywgMTkyOTUsIDE5MzA3LCAxOTMxOCwgMTkzMzAsIAorICAgIDE5MzQyLCAxOTM1NCwgMTkzNjYsIDE5Mzc4LCAxOTM5MCwgMTk0MDIsIDE5NDE0LCAxOTQyNiwgMTk0MzgsIDE5NDQ5LCAKKyAgICAxOTQ2MSwgMTk0NzMsIDE5NDg1LCAxOTQ5NywgMTk1MDksIDE5NTIxLCAxOTUzMywgMTk1NDUsIDE5NTU3LCAxOTU2OSwgCisgICAgMTk1ODAsIDE5NTkyLCAxOTYwNCwgMTk2MTYsIDE5NjI4LCAxOTY0MCwgMTk2NTIsIDE5NjY0LCAxOTY3NiwgMTk2ODgsIAorICAgIDE5NzAwLCAxOTcxMSwgMTk3MjMsIDE5NzM1LCAxOTc0NywgMTk3NTksIDE5NzcxLCAxOTc4MywgMTk3OTUsIDE5ODA3LCAKKyAgICAxOTgxOSwgMTk4MzEsIDE5ODQyLCAxOTg1NCwgMTk4NjYsIDE5ODc4LCAxOTg5MCwgMTk5MDIsIDE5OTE0LCAxOTkyNiwgCisgICAgMTk5MzgsIDE5OTUwLCAxOTk2MiwgMTk5NzMsIDE5OTg1LCAxOTk5NywgMjAwMDksIDIwMDIxLCAyMDAzMywgMjAwNDUsIAorICAgIDIwMDU3LCAyMDA2OSwgMjAwODEsIDIwMDkzLCAyMDEwNCwgMjAxMTYsIDIwMTI4LCAyMDE0MCwgMjAxNTIsIDIwMTY1LCAKKyAgICAyMDE3OCwgMjAxOTEsIDIwMjA0LCAyMDIxNywgMjAyMzAsIDIwMjQzLCAyMDI1NSwgMjAyNjgsIDIwMjgxLCAyMDI5NCwgCisgICAgMjAzMDcsIDIwMzIwLCAyMDMzMywgMjAzNDYsIDIwMzU5LCAyMDM3MiwgMjAzODUsIDIwMzk3LCAyMDQxMCwgMjA0MjMsIAorICAgIDIwNDM2LCAyMDQ0OSwgMjA0NjIsIDIwNDc1LCAyMDQ4OCwgMjA1MDEsIDIwNTE0LCAyMDUyNywgMjA1MzksIDIwNTUyLCAKKyAgICAyMDU2NSwgMjA1NzgsIDIwNTkxLCAyMDYwNCwgMjA2MTcsIDIwNjMwLCAyMDY0MywgMjA2NTYsIDIwNjY5LCAyMDY4MSwgCisgICAgMjA2OTQsIDIwNzA3LCAyMDcyMCwgMjA3MzMsIDIwNzQ2LCAyMDc1OSwgMjA3NzIsIDIwNzg1LCAyMDc5OCwgMjA4MTEsIAorICAgIDIwODIzLCAyMDgzNiwgMjA4NDksIDIwODYyLCAyMDg3NSwgMjA4ODgsIDIwOTAxLCAyMDkxNCwgMjA5MjcsIDIwOTQwLCAKKyAgICAyMDk1MywgMjA5NjUsIDIwOTc2LCAyMDk4OSwgMjEwMDIsIDIxMDE1LCAyMTAyOCwgMjEwNDEsIDIxMDU0LCAyMTA2NywgCisgICAgMjEwODAsIDIxMDkzLCAyMTEwNiwgMjExMTgsIDIxMTMxLCAyMTE0NCwgMjExNTcsIDIxMTcwLCAyMTE4MywgMjExOTYsIAorICAgIDIxMjA5LCAyMTIyMiwgMjEyMzUsIDIxMjQ4LCAyMTI2MCwgMjEyNzMsIDIxMjg2LCAyMTI5OSwgMjEzMTIsIDIxMzI1LCAKKyAgICAyMTMzOCwgMjEzNTEsIDIxMzY0LCAyMTM3NywgMjEzOTAsIDIxNDAyLCAyMTQxNSwgMjE0MjgsIDIxNDQxLCAyMTQ1NCwgCisgICAgMjE0NjcsIDIxNDgwLCAyMTQ5MywgMjE1MDYsIDIxNTE5LCAyMTUzMiwgMjE1NDQsIDIxNTU3LCAyMTU3MCwgMjE1ODMsIAorICAgIDIxNTk2LCAyMTYwOSwgMjE2MjIsIDIxNjM1LCAyMTY0OCwgMjE2NjEsIDIxNjc0LCAyMTY4NiwgMjE2OTksIDIxNzEyLCAKKyAgICAyMTcyNSwgMjE3MzgsIDIxNzUxLCAyMTc2NCwgMjE3NzcsIDIxNzkwLCAyMTgwMywgMjE4MTYsIDIxODI4LCAyMTg0MSwgCisgICAgMjE4NTQsIDIxODY3LCAyMTg4MCwgMjE4OTMsIDIxOTA2LCAyMTkxOSwgMjE5MzIsIDIxOTQ1LCAyMTk1OCwgMjE5NzAsIAorICAgIDIxOTgzLCAyMTk5NiwgMjIwMDksIDIyMDIyLCAyMjAzNSwgMjIwNDgsIDIyMDYxLCAyMjA3NCwgMjIwODcsIDIyMTAwLCAKKyAgICAyMjExMiwgMjIxMjUsIDIyMTM4LCAyMjE1MSwgMjIxNjQsIDIyMTc3LCAyMjE5MCwgMjIyMDMsIDIyMjE2LCAyMjIyOSwgCisgICAgMjIyNDIsIDIyMjU0LCAyMjI2NywgMjIyODAsIDIyMjkzLCAyMjMwNiwgMjIzMTksIDIyMzMyLCAyMjM0NSwgMjIzNTgsIAorICAgIDIyMzcxLCAyMjM4NCwgMjIzOTYsIDIyNDA3LCAyMjQxNiwgMjI0MjQsIDIyNDMyLCAyMjQzOSwgMjI0NDUsIDIyNDQ5LCAKKyAgICAyMjQ1NSwgMjI0NjEsIDIyNDY5LCAyMjQ3NCwgMjI0ODAsIDIyNDg1LCAyMjQ4OSwgMjI0OTgsIDk2NTQsIDIyNTA5LCAKKyAgICAyMjUxNiwgMjI1MjQsIDIyNTMxLCAyMjUzOCwgMTE5MzYsIDIyNTQ1LCAyMjU1MiwgMjI1NjEsIDIyNTY2LCAyMjU3MSwgCisgICAgODE0NSwgMjI1NzgsIDIyNTgzLCAyMjU4NiwgMjI1OTEsIDIyNTk5LCAyMjYwNiwgMjI2MTMsIDIyNjIwLCAyMjYyNiwgCisgICAgMjI2MzUsIDIyNjQ0LCAyMjY1MywgMjI2NTksIDIyNjY4LCAyMjY3MiwgMjI2NzgsIDIyNjgzLCAyMjY5MywgMjI3MDAsIAorICAgIDIyNzA2LCAyMjcxNCwgMjI3MjAsIDIyNzI3LCAyMjczNywgMjI3NDYsIDIyNzUwLCAyMjc1NywgMjI3NjEsIDIyNzY2LCAKKyAgICAyMjc3MiwgMjI3ODAsIDIyNzg0LCAyMjc5NCwgMTU3MTQsIDIyODAzLCAyMjgwOSwgMjI4MTMsIDIyODIyLCAyMjgzMiwgCisgICAgMTU3MTksIDIyODM4LCAyMjg0NSwgMjI4NTYsIDIyODY0LCAyMjg3NCwgMjI4ODMsIDIyODkxLCA5NDEwLCAyMjg5OSwgCisgICAgMjI5MDQsIDIyOTEwLCAyMjkxNSwgMjI5MTksIDIyOTIzLCAyMjkyNywgMTAzNzksIDIyOTMyLCAyMjk0MCwgMjI5NDcsIAorICAgIDIyOTU2LCAyMjk2MywgMjI5NzAsIDIyOTc2LCAxMTg1NiwgMjI5ODMsIDIyOTg5LCAyMjk5MywgMjI5OTksIDIzMDA2LCAKKyAgICAyMzAxMiwgMjMwMjAsIDIzMDI2LCAyMzAzMywgMjMwMzksIDIzMDQ1LCAyMzA1NCwgMjMwNTgsIDIzMDY2LCAyMzA3NSwgCisgICAgMjMwODIsIDIzMDg3LCAyMzA5MSwgMjMxMDIsIDIzMTA3LCAyMzExMiwgMjMxMTcsIDIzMTMwLCA4MzQ5LCAyMzEzNCwgCisgICAgMjMxNDAsIDIzMTQ1LCAyMzE1MywgMjMxNTcsIDIzMTY0LCAyMzE3MywgMjMxNzgsIDE1OTkwLCAyMzE4NiwgMjMxOTAsIAorICAgIDIzMjAyLCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIyMCwgMjMyMjYsIDIzMjMyLCAyMzIzNywgMjMyNDEsIDIzMjQ0LCAKKyAgICAyMzI1NSwgMjMyNjAsIDk5MjYsIDIzMjY3LCAyMzI3MiwgMTI0MywgOTkzMSwgMjMyNzcsIDIzMjgyLCAyMzI4NywgMjMyOTIsIAorICAgIDIzMjk3LCAyMzMwMiwgMjMzMDcsIDIzMzEyLCAyMzMxNywgMjMzMjIsIDIzMzI3LCAyMzMzMiwgMjMzMzgsIDIzMzQzLCAKKyAgICAyMzM0OCwgMjMzNTMsIDIzMzU4LCAyMzM2MywgMjMzNjgsIDIzMzczLCAyMzM3OCwgMjMzODMsIDIzMzg5LCAyMzM5NSwgCisgICAgMjM0MDAsIDIzNDA1LCAyMzQxMCwgMjM0MTUsIDIzNDIwLCAyMzQyNSwgMjM0MzAsIDIzNDM1LCAyMzQ0MCwgMjM0NDYsIAorICAgIDIzNDUxLCAyMzQ1NiwgMjM0NjEsIDIzNDY3LCAyMzQ3MywgMjM0NzgsIDIzNDgzLCAyMzQ4OCwgMjM0OTMsIDIzNDk4LCAKKyAgICAyMzUwMywgMjM1MDgsIDIzNTEzLCAyMzUxOSwgMjM1MjQsIDIzNTI5LCAyMzUzNCwgMjM1MzksIDIzNTQ1LCAyMzU1MCwgCisgICAgMjM1NTUsIDIzNTU5LCAxMzQsIDIzNTY3LCAyMzU3MSwgMjM1NzUsIDIzNTc5LCAyMzU4NCwgMjM1ODgsIDE0MjgxLCAyMzQ2LCAKKyAgICAyMzU5MiwgMjM1OTcsIDIzNjAxLCAyMzYwNiwgMjM2MTAsIDIzNjE1LCAyMzYxOSwgMjM2MjUsIDIzNjMwLCAyMzYzNCwgCisgICAgMjM2MzgsIDIzNjQ2LCAyMzY1MCwgMjM2NTQsIDIzNjU5LCAyMzY2NCwgMjM2NjgsIDIzNjc0LCAyMzY3OSwgMjM2ODMsIAorICAgIDIzNjg4LCAyMzY5MywgMjM2OTcsIDIzNzA0LCAyMzcxMSwgMjM3MTgsIDIzNzIyLCAyMzcyNiwgMjM3MzEsIDIzNzM1LCAKKyAgICAyMzczOCwgMjM3NDQsIDIzNzU3LCAyMzc2MiwgMjM3NjgsIDIzNzc3LCAyMzc4MiwgMTAxNTEsIDIzNzg3LCAyMzc5NiwgCisgICAgMjM4MDEsIDIzODA0LCAyNzUxLCAyNzU2LCAyMzgwOCwgMjM4MTQsIDIzODIwLCA3NTM4LCAyMzgyNSwgMjM4MzAsIDIzODM1LCAKKyAgICAyMzg0MSwgMjM4NDYsIDE1MTM0LCAyMzg1MSwgMjM4NTYsIDIzODYxLCAyMzg2NiwgMjM4NzIsIDIzODc3LCAyMzg4MiwgCisgICAgMjM4ODgsIDIzODkzLCAyMzg5NywgMjM5MDIsIDIzOTA3LCAyMzkxMiwgMjM5MTcsIDIzOTIyLCAyMzkyNiwgMjM5MzEsIAorICAgIDIzOTM1LCAyMzk0MCwgMjM5NDUsIDIzOTUwLCAyMzk1NSwgMjM5NTksIDIzOTY0LCAyMzk2OCwgMjM5NzMsIDIzOTc4LCAKKyAgICAyMzk4MywgMjM4OTgsIDI5NDUsIDIzOTAzLCAyMzk4OCwgMjM5OTYsIDI0MDAzLCAxMDQ3MywgMjQwMTUsIDI0MDIzLCAKKyAgICAyNDAzMywgMjQwNTEsIDI0MDcwLCAyNDA3OSwgMjQwODcsIDIzOTA4LCAyNDA5NCwgMjQwOTksIDI0MTA3LCAyMzkxMywgCisgICAgMjQxMTIsIDI0MTE3LCAyNDEyNSwgMjQxMzAsIDIzOTE4LCAyNDEzNSwgMjQxNDMsIDI0MTQ4LCAyNDE1MiwgMjQxNTksIAorICAgIDI0MTY1LCAyNDE3NCwgMjQxODIsIDI0MTg2LCAyNDE4OSwgMjQxOTYsIDI0MjAwLCAyNDIwNCwgMjQyMDksIDI0MjE1LCAKKyAgICAyNDIyMiwgMjQyMjcsIDk0MzcsIDE3NDIsIDE3NDcsIDI0MjMxLCAyNDIzNywgMjQyNDMsIDI0MjQ4LCAyNDI1MiwgMjQyNTYsIAorICAgIDI0MjYwLCAyNDI2NCwgMjQyNjgsIDI0MjcyLCAyNDI3NiwgMjQyODAsIDI0MjgzLCAyNDI4OSwgMjQyOTYsIDI0MzA0LCAKKyAgICAyNDMxMCwgMjQzMTYsIDI0MzIxLCAyNDMyNiwgMjQzMzIsIDI0MzM2LCAyNDM0MSwgMTUwNDAsIDE1MDQ3LCAyNDM0OCwgCisgICAgMjQzNjAsIDI0MzYzLCAyNDM3MCwgMjQzNzQsIDE3ODgxLCAyNDM4MSwgMjQzODksIDI0NDAwLCAyNDQwOSwgMjQ0MjIsIAorICAgIDI0NDMyLCAyNDQ0NiwgMjQ0NTgsIDI0NDcyLCAyNDQ4NSwgMjQ0OTcsIDI0NTA3LCAyNDUxOSwgMjQ1MjUsIDI0NTQwLCAKKyAgICAyNDU2NCwgMjQ1ODIsIDI0NjAxLCAyNDYxNCwgMjQ2MjgsIDI0NjQ2LCAyNDY2MiwgMjQ2NzksIDI0Njk3LCAyNDcwOCwgCisgICAgMjQ3MjcsIDI0NzQ0LCAyNDc2NCwgMjQ3ODIsIDI0Nzk0LCAyNDgwOCwgMjQ4MjIsIDI0ODM0LCAyNDg1MSwgMjQ4NzAsIAorICAgIDI0ODg4LCAyNDkwMCwgMjQ5MTgsIDI0OTM3LCAxNTg1OCwgMjQ5NTAsIDI0OTcwLCAyNDk4MiwgMTE0NDgsIDI0OTk0LCAKKyAgICAyNDk5OSwgMjUwMDQsIDI1MDA5LCAyNTAxNSwgMjUwMjAsIDI1MDI0LCAyNTAzMSwgMjUwMzcsIDI0MzcsIDI1MDQxLCAKKyAgICAyNTA0NywgMjUwNTEsIDI1MDU0LCAyNTA1OCwgMjUwNjEsIDI1MDY5LCAyNTA3NSwgMjM5MzYsIDI1MDc5LCAyNTA4OCwgCisgICAgMjUwOTksIDI1MTA1LCAyNTExMSwgMjUxMjYsIDI1MTM1LCAyNTE0MywgMjUxNTAsIDI1MTU1LCAyNTE1OSwgMjUxNjYsIAorICAgIDI1MTcyLCAyNTE4MSwgMjUxODksIDI1MTk2LCAyNTIwNiwgMjUyMTUsIDI1MjI1LCAyNTIzMCwgMjUyMzksIDI1MjQ4LCAKKyAgICAyNTI1OSwgMjUyNzAsIDQxOTIsIDI1MjgwLCAyNTI4NCwgMjUyOTQsIDI1MzAyLCAyNTMxMiwgMjUzMjMsIDI1MzI4LCAKKyAgICAyNTMzOCwgMjUzNDYsIDI1MzUzLCAyNTM1OSwgMjUzNjYsIDI1MzcxLCAyMzk0NiwgMjUzNzUsIDI1Mzg0LCAyNTM4OCwgCisgICAgMjUzOTEsIDI1Mzk2LCAyNTQwNCwgMjU0MTEsIDI1NDIwLCAyNTQyOCwgMjU0MzYsIDI1NDQ0LCAyNTQ1NCwgMjU0NjMsIAorICAgIDI1NDY5LCAyNTQ3NSwgMjU0NzksIDIzOTUxLCAyMzk1NiwgMjU0ODMsIDI1NDkzLCAyNTUwMywgMjU1MTMsIDI1NTIxLCAKKyAgICAyNTUyOCwgMjU1MzgsIDI1NTQ2LCAyNTU1NCwgMjU1NjAsIDI1NTY4LCA4NjUsIDI1NTc3LCAxNjA2NSwgNjE1LCAyNTU5MSwgCisgICAgMjU2MDAsIDI1NjA4LCAyNTYxOSwgMjU2MzAsIDI1NjQwLCAyNTY0OSwgMjU2NjEsIDI1NjcwLCAyNTY3OSwgMjU2ODYsIAorICAgIDI1NjkyLCAyNTcwMiwgMjU3MTEsIDI1NzIwLCAyNTcyOCwgMjU3MzgsIDI1NzQ2LCAyNTc1NCwgOTg5MiwgMjU3NjAsIAorICAgIDI1NzYzLCAyNTc2NywgMjU3NzIsIDI1Nzc3LCAyNTc4MSwgMTA1ODgsIDIzOTY5LCAyMzk3NCwgMjU3ODksIDI1Nzk1LCAKKyAgICAyNTgwMSwgMjU4MDYsIDI1ODExLCAyNTgxNSwgMjU4MjMsIDI1ODI5LCAyNTgzNSwgMjU4MzksIDM2NzUsIDI1ODQ3LCAKKyAgICAyNTg1MiwgMjU4NTcsIDI1ODYxLCAyNTg2NSwgMTA3MDEsIDI1ODcyLCAyNTg4MCwgMjU4OTQsIDI1OTAxLCAyNTkwNywgCisgICAgMTA3MTAsIDEwNzE2LCAyNTkxNSwgMjU5MjMsIDI1OTMwLCAyNTkzNSwgMjU5NDAsIDIzOTc5LCAyNTk0NiwgMjU5NTcsIAorICAgIDI1OTYxLCAyNTk2NiwgMjY0MCwgMjU5NzEsIDI1OTgyLCAyNTk4OCwgMjU5OTMsIDI1OTk3LCAyNjAwMSwgMjYwMDQsIAorICAgIDI2MDExLCAyNjAxOCwgMjYwMjQsIDI2MDMxLCAyNjAzNywgMjYwNDEsIDIzOTg0LCAyNjA0NiwgMjYwNTAsIDI2MDU0LCAKKyAgICAxNDMxLCA4NTQ0LCAyNjA1OSwgMjYwNjQsIDI2MDY5LCAyNjA3NCwgMjYwNzksIDI2MDg0LCAyNjA4OSwgMjYwOTQsIAorICAgIDI2MDk5LCAyNjEwNCwgMjYxMDksIDI2MTE0LCAyNjExOSwgMjYxMjQsIDI2MTMwLCAyNjEzNSwgMjYxNDAsIDI2MTQ1LCAKKyAgICAyNjE1MCwgMjYxNTUsIDI2MTYwLCAyNjE2NiwgMjYxNzEsIDI2MTc2LCAyNjE4MSwgMjYxODYsIDI2MTkxLCAyNjE5NiwgCisgICAgMjYyMDEsIDI2MjA3LCAyNjIxMywgMjYyMTgsIDI2MjI0LCAyNjIyOSwgMjYyMzQsIDUsIDI2MjQwLCAyNjI0NCwgMjYyNDgsIAorICAgIDI2MjUyLCAyNjI1NywgMjYyNjEsIDI2MjY1LCAyNjI2OSwgMjYyNzMsIDI2Mjc4LCAyNjI4MiwgMjYyODcsIDI2MjkxLCAKKyAgICAyNjI5NCwgMjYyOTgsIDI2MzAzLCAyNjMwNywgMjYzMTIsIDI2MzE2LCAyNjMyMCwgMjYzMjQsIDI2MzI5LCAyNjMzMywgCisgICAgMjYzMzcsIDI2MzQ3LCAyNjM1MiwgMjYzNTYsIDI2MzYwLCAyNjM2NSwgMjYzNzAsIDI2Mzc5LCAyNjM4NCwgMjYzODksIAorICAgIDI2MzkzLCAyNjM5NywgMjY0MTAsIDI2NDIyLCAyNjQzMSwgMjY0NDAsIDI2NDQ1LCAyNjQ1MSwgMjY0NTYsIDI2NDYwLCAKKyAgICAyNjQ2NCwgMjY0NzQsIDI2NDgzLCAyNjQ5MSwgMjY0OTcsIDI2NTAyLCAyNjUwNiwgMjY1MTMsIDI2NTIzLCAyNjUzMiwgCisgICAgMjY1NDAsIDExNzcwLCAyNjU0OCwgMjY1NTYsIDI2NTY1LCAyNjU3NCwgMjY1ODIsIDI2NTkyLCAyNjU5NywgMjY2MDEsIAorICAgIDI2NjA1LCAyNjYwOCwgMjY2MTAsIDI2NjE0LCAyNjYxOCwgMjY2MjMsIDI2NjI4LCAyNjYzMiwgMjY2MzYsIDI2NjM5LCAKKyAgICAyNjY0MywgMjY2NDYsIDI2NjUwLCAyNjY1MywgMjY2NTYsIDI2NjYwLCAyNjY2NiwgMjY2NzAsIDI2Njc0LCAyNjY3OCwgCisgICAgMjY2ODMsIDI2Njg4LCAyNjY5MywgMjY2OTcsIDI2NzAwLCAyNjcwNSwgMjY3MTEsIDI2NzE2LCAyNjcyMiwgMjY3MjcsIAorICAgIDI2NzMxLCAyNjczNywgMjY3NDEsIDI2NzQ1LCAyNjc1MCwgMjY3NTQsIDI2NzU5LCAyNjc2NCwgMjY3NjgsIDI2NzcyLCAKKyAgICAyNjc3OSwgMjY3ODMsIDI2Nzg2LCAyNjc5MCwgMjY3OTQsIDI2ODAwLCAyNjgwNiwgMjY4MTAsIDI2ODE0LCAyNjgxOSwgCisgICAgMjY4MjYsIDI2ODMyLCAyNjgzNiwgMjY4NDUsIDI2ODQ5LCAyNjg1MywgMjY4NTYsIDI2ODYyLCAyNjg2NywgMjY4NzMsIAorICAgIDE0NzUsIDE4MDYsIDI2ODc4LCAyNjg4MywgMjY4ODgsIDI2ODkzLCAyNjg5OCwgMjY5MDMsIDI2OTA4LCAyMTc0LCAyMjIwLCAKKyAgICAyNjkxMywgMjY5MTYsIDI2OTIwLCAyNjkyNCwgMjY5MjksIDI2OTMzLCAxNjA3NywgMjY5MzcsIDI2OTQyLCAyNjk0NywgCisgICAgMjY5NTEsIDI2OTU0LCAyNjk1OSwgMjY5NjMsIDI2OTY4LCAyNjk3MiwgMTYwODEsIDI2OTc3LCAyNjk4MCwgMjY5ODMsIAorICAgIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDA5LCAyNzAxMywgMjcwMTYsIDI3MDI0LCAyNzAzMywgMjcwNDAsIDI3MDQ1LCAKKyAgICAyNzA1MSwgMjcwNTcsIDI3MDY1LCAyNzA3MiwgMjcwNzksIDI3MDgzLCAyNzA4NywgMjcwOTEsIDI3MDk2LCAyNzEwMSwgCisgICAgMjcxMDUsIDI3MTEzLCAyNzExOCwgMjcxMzAsIDI3MTQxLCAyNzE0NiwgMjcxNTAsIDI3MTU3LCAyNzE2MSwgMjcxNjYsIAorICAgIDI3MTcyLCAyNzE3NSwgMjcxODAsIDI3MTg1LCAyNzE4OSwgMjcxOTMsIDI3MTk2LCAyNzIwMiwgODI0OCwgMjM1MCwgCisgICAgMjcyMDYsIDI3MjExLCAyNzIyNywgMTAxOTgsIDI3MjQ3LCAyNzI1NiwgMjcyNzIsIDI3Mjc2LCAyNzI4MywgMjcyODYsIAorICAgIDI3MjkyLCAyNzMwMiwgMjczMDgsIDI3MzE3LCAyNzMzMiwgMjczNDQsIDI3MzU1LCAyNzM2MywgMjczNzIsIDI3Mzc4LCAKKyAgICAyNzM4NywgMjczOTcsIDI3NDA3LCAyNzQxOCwgMjc0MjksIDI3NDM5LCAyNzQ0OCwgMjc0NTUsIDI3NDY0LCAyNzQ3MiwgCisgICAgMjc0NzksIDI3NDg3LCAyNzQ5NCwgMjc1MDEsIDI3NTE0LCAyNzUyMSwgMjc1MjksIDI3NTM2LCAyNzU0MiwgMjc1NDcsIAorICAgIDI3NTU2LCAyNzU2MiwgMjc1NjcsIDI3NTc1LCAyNzU4MiwgMjc1ODksIDI1MzA0LCAyNzYwMSwgMjc2MTMsIDI3NjI3LCAKKyAgICAyNzYzNSwgMjc2NDIsIDI3NjU0LCAyNzY2MywgMjc2NzIsIDI3NjgwLCAyNzY4OCwgMjc2OTYsIDI3NzAzLCAyNzcwOSwgCisgICAgMjc3MTgsIDI3NzI2LCAyNzczNiwgMjc3NDUsIDI3NzU1LCAyNzc2NCwgMjc3NzMsIDI3NzgxLCAyNzc4NiwgMjc3OTAsIAorICAgIDI3NzkzLCAyNzc5NywgMjc4MDEsIDI3ODA1LCAyNzgwOSwgMjc4MTMsIDI3ODE5LCAyNzgyNSwgMjc4MzMsIDE2MTM5LCAKKyAgICAyNzg0MCwgMjc4NDUsIDI3ODUyLCAyNzg1OCwgMjc4NjUsIDE2MTQ3LCAyNzg3MiwgMjc4NzUsIDI3ODg3LCAyNzg5NSwgCisgICAgMjc5MDEsIDI3OTA2LCAyNzkxMCwgMjc5MjEsIDEwNjUxLCAyNzkzMSwgMjc5MzksIDI3OTQ5LCAyNzk1OCwgMjc5NjUsIAorICAgIDI3OTcyLCAyNzk4MCwgMjc5ODQsIDE2MTU4LCAyNzk4NywgMjc5OTQsIDI3OTk4LCAyODAwNCwgMjgwMDcsIDI4MDE0LCAKKyAgICAyODAyMCwgMjgwMjcsIDI4MDMzLCAyODAzNywgMjgwNDIsIDI4MDQ2LCAyODA1NSwgMjgwNjIsIDI4MDY4LCA4MzA2LCAKKyAgICAyODA3NSwgMjgwODMsIDI4MDkwLCAyODA5NiwgMjgxMDEsIDI4MTA3LCAyODExMywgMjgxMjEsIDI4MTI3LCAyODEzMSwgCisgICAgMjgxMzQsIDI4MTM2LCAyNzc5OCwgMjgxNDUsIDI4MTUxLCAyODE1NywgMjgxNjcsIDI4MTcyLCAyODE3OSwgMjgxODUsIAorICAgIDI4MTkwLCAyODE5NSwgMjgyMDAsIDI4MjA0LCAyODIwOSwgMjgyMTYsIDI4MjIyLCAyODIzMSwgMjgyMzUsIDI4MjQyLCAKKyAgICAyODI0OCwgMjgyNTcsIDQzNzgsIDI4MjYzLCAyODI2OSwgMjgyNzQsIDI4MjgxLCAyODI5MiwgMjgyOTcsIDI4MzAxLCAKKyAgICAyODMxMSwgMjgzMTcsIDI4MzIxLCAyODMyNiwgMjgzMzYsIDI4MzQ1LCAyODM0OSwgMjgzNTYsIDI4MzY0LCAyODM3MSwgCisgICAgMjgzNzcsIDI4MzgyLCAyODM5MCwgMjgzOTcsIDI4NDAyLCAyODQwOSwgMjg0MjEsIDI4NDMwLCAyODQzNCwgMTQyMTIsIAorICAgIDI4NDQyLCAyODQ1MiwgMjg0NTYsIDI3MDIwLCAyODQ2NywgMjg0NzIsIDI4NDc2LCAyODQ4MywgMjg0OTAsIDIzNjcwLCAKKyAgICAyNzcyMywgMjg0OTUsIDI4NDk5LCAyODUwMiwgMjQ3MTQsIDI4NTA3LCAyODUyMSwgMjg1MzcsIDI4NTU1LCAyODU3NCwgCisgICAgMjg1OTEsIDI4NjA5LCAyNDczMywgMjg2MjYsIDI4NjQ2LCAyNDc1MCwgMjg2NTgsIDI4NjcwLCAxNzE3OCwgMjg2ODIsIAorICAgIDI0NzcwLCAyODY5NiwgMjg3MDgsIDExNDYxLCAyODcyMiwgMjg3MjcsIDI4NzMyLCAyODczNywgMjg3NDMsIDI4NzQ5LCAKKyAgICAyODc1NSwgMjg3NTksIDI4NzY3LCAyODc3NCwgMjg3NzksIDI4Nzg5LCAyODc5NSwgMTEwNTksIDI4ODAxLCAyODgwMywgCisgICAgMjg4MDgsIDI4ODE2LCAyODgyMCwgMjgyMTIsIDI4ODI2LCAyODgzMywgMTI2MDEsIDEyNjExLCAyODg0MCwgMjg4NTAsIAorICAgIDI4ODU1LCAyODg1OSwgMjg4NjIsIDI4ODY4LCAyODg3NiwgMjg4ODgsIDI4ODk4LCAyODkxNCwgMjg5MjcsIDI4OTQxLCAKKyAgICAxNzE5NiwgMjg5NTUsIDI4OTYyLCAyODk2NiwgMjg5NjksIDI4OTc0LCAyODk3OCwgMjg5ODUsIDI4OTkyLCAyODk5OSwgCisgICAgMjkwMDksIDI5MDE0LCAyOTAxOSwgMjkwMjQsIDI5MDMyLCAyOTA0MCwgMjkwNDUsIDI5MDU0LCAyOTA1OSwgMzM1MywgCisgICAgMjkwNjMsIDI5MDY2LCAyOTA2OSwgMjkwNzQsIDI5MDgxLCAyOTA4NiwgMjkxMDIsIDI5MTEwLCAyOTExOCwgOTk2NiwgCisgICAgMjkxMjYsIDI5MTMxLCAyOTEzNSwgMjkxNDEsIDI5MTQ2LCAyOTE1MiwgMjkxNTUsIDI5MTYxLCAyOTE3MywgMjkxODEsIAorICAgIDI5MTg4LCAyOTE5NCwgMjkyMDEsIDI5MjEyLCAyOTIyNiwgMjkyMzksIDI5MjQ1LCAyOTI1NCwgMjkyNjAsIDI5MjY5LCAKKyAgICAyOTI4MSwgMjkyOTIsIDI5MzAyLCAyOTMxMSwgMjkzMjAsIDI5MzI4LCAyOTMzOSwgODI4OCwgMjkzNDYsIDI5MzUzLCAKKyAgICAyOTM1OSwgMjkzNjQsIDI5MzcwLCAyOTM3NywgMjkzODcsIDI5Mzk3LCAyOTQwNiwgMjk0MTIsIDI5NDE5LCAyOTQyNCwgCisgICAgMjk0MzIsIDI5NDM5LCAyOTQ0NywgMjk0NTUsIDI5NDY3LCA2NTYzLCA5OTUsIDI5NDc0LCAyOTQ4MywgMjk0OTEsIDI5NDk3LCAKKyAgICAyOTUwMywgMjk1MDgsIDI5NTEyLCAyOTUxNSwgMjk1MjEsIDI5NTI4LCAyOTUzMywgMjk1MzgsIDI5NTQzLCAyOTU0NywgCisgICAgMjk1NTksIDI5NTcwLCAyOTU3OSwgMjk1ODcsIDE2MzIzLCAyOTU5MiwgMjk1OTcsIDI5NjAzLCAyOTYwOSwgMTI1OTQsIAorICAgIDkwNTgsIDI5NjE0LCAyOTYxOCwgMjk2MjIsIDI5NjI1LCAyOTYyOCwgMjk2MzQsIDI5NjQyLCAyOTY1MCwgMjk2NTQsIAorICAgIDI5NjU4LCAyOTY2MywgMjk2NjYsIDI5Njc1LCAyOTY3OSwgMjk2ODIsIDI5NjkwLCAyOTcwMSwgMjk3MDUsIDI5NzExLCAKKyAgICAyOTcxNywgMjk3MjEsIDI5NzI3LCAyOTczNSwgMjk3NTcsIDI5NzgxLCAyOTc5MCwgMjk3OTcsIDI5ODA0LCAyOTgxMCwgCisgICAgMjk4MTgsIDI5ODI0LCAyOTgyOSwgMjk4NDAsIDI5ODU4LCAyOTg2NSwgMjk4NzMsIDI5ODc3LCAyOTg4MiwgMjk4OTEsIAorICAgIDI5OTA0LCAyOTkxMiwgMjk5MjQsIDI5OTM1LCAyOTk0NiwgMjk5NTYsIDI5OTcwLCAyOTk3OSwgMjk5ODcsIDI5OTk5LCAKKyAgICAxMDIxNSwgMzAwMTAsIDMwMDIxLCAzMDAzMywgMzAwNDMsIDMwMDUyLCAzMDA1NywgMzAwNjEsIDMwMDY5LCAzMDA4MCwgCisgICAgMzAwOTAsIDMwMDk1LCAzMDA5OSwgMzAxMDIsIDMwMTA1LCAzMDExMywgMzAxMjEsIDMwMTMwLCAzMDE0MCwgMzAxNDksIAorICAgIDMwMTU1LCAzMDE2OSwgMjcwMiwgMzAxOTEsIDMwMjAyLCAzMDIxMSwgMzAyMjEsIDMwMjMzLCAzMDI0MiwgMzAyNTEsIAorICAgIDMwMjYxLCAzMDI2OSwgMzAyNzcsIDMwMjg2LCAzMDI5MSwgMzAzMDIsIDMwMzA3LCAzMDMxOCwgMzAzMjIsIDMwMzMyLCAKKyAgICAzMDM0MSwgMzAzNDksIDMwMzU5LCAzMDM2OSwgMzAzNzcsIDMwMzg2LCAzMDM5MywgMzA0MDEsIDMwNDA4LCAzMDQxNywgCisgICAgMzA0MjYsIDMwNDMwLCAzMDQzOCwgMzA0NDUsIDMwNDUzLCAzMDQ2MCwgMzA0NzEsIDMwNDg2LCAzMDQ5MywgMzA0OTksIAorICAgIDMwNTA5LCAzMDUxOCwgMzA1MjQsIDMwNTM1LCAzMDUzOSwgMzA1NDYsIDMwNTUwLCAzMDU1NiwgMTUyNjUsIDMwNTYyLCAKKyAgICAzMDU2NiwgMzA1NzEsIDMwNTc3LCAzMDU4NCwgMzA1ODgsIDMwNTkyLCAzMDYwMCwgMzA2MDgsIDMwNjE0LCAzMDYyMywgCisgICAgMzA2MzAsIDMwNjM1LCAzMDY0MCwgMzA2NTAsIDI1MzczLCAzMDY1NCwgMzA2NTcsIDMwNjYyLCAzMDY2NywgMzA2NzIsIAorICAgIDMwNjc3LCAzMDY4MiwgMzA2ODcsIDMwNjkyLCAzMDY5NywgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTksIDExOTksIDY2MCwgCisgICAgMzA3MjQsIDMwNzMzLCAyMzk4LCAzMDc0MCwgMzA3NDUsIDMwNzQ5LCAzMDc1NSwgMTI0OCwgNTc4LCAyOTAsIDMwNzYwLCAKKyAgICAzMDc2OSwgMzA3NzcsIDMwNzg2LCAzMDc5NCwgMzA4MDUsIDMwODEzLCAzMDgyMiwgMzA4MzAsIDMwODM1LCAxMDc5NywgCisgICAgMzA4MzksIDMwODQ3LCAzMDg1NSwgMzA4NjAsIDE2MDk0LCAzODI0LCAzMDg2NiwgMzA4NzIsIDMwODc4LCA2MTQ4LCAKKyAgICAzMDg4MywgMzA4ODcsIDMwODkzLCAzMDg5NywgMzA5MDMsIDMwOTA4LCAzMDkxNSwgMTQ0MSwgMzA5MjEsIDMwOTI4LCAKKyAgICAxMzQ4LCA2MTU2LCAzMDkzMiwgMzA5NDIsIDMwOTUwLCAzMDk1NiwgMzA5NjYsIDMwOTc1LCAzMDk4MywgMzA5ODksIAorICAgIDMwOTk3LCAzMTAwNCwgMTIxMzYsIDMxMDEwLCAzMTAxNywgMzEwMjIsIDMxMDI5LCAxNDk0LCAyMTksIDIxNzMsIDMxMDM1LCAKKyAgICAzMTA0MSwgMzEwNDgsIDMxMDU5LCAzMTA3MCwgMzEwNzgsIDMxMDg1LCAzMTA5NSwgMzExMDQsIDMxMTEyLCAzMTEyMSwgCisgICAgMzExMjgsIDMxMTM1LCAzMTE0OCwgMzExNTUsIDMxMTYxLCAzMTE3MiwgMzExOTEsIDEyNTMsIDMxMTk2LCAzMTIwMSwgCisgICAgMzEyMDksIDM3NDIsIDMxMjEzLCAzMTIxOCwgMzEyMjIsIDMxMjI2LCAxNDQ1LCAyNjYzNywgMzEyMzYsIDMxMjQwLCAKKyAgICAzMTI0NSwgMzEyNDksIDM2MTksIDMxMjU1LCAzMTI2MywgMzEyNzAsIDMxMjgxLCAzMTI4OSwgMzEyOTcsIDM3NDMsIDM0NiwgCisgICAgMzEzMDIsIDMxMzEwLCAzMTMxOCwgMzEzMjUsIDMxMzMxLCAzMTMzNiwgMjI0MiwgMTE2MjgsIDMxMzQzLCAzMTM0OSwgCisgICAgMjgwMzgsIDI4Mjg3LCAzMTM1NSwgNTc0LCAxMDYsIDMxMzU5LCAzMTM2MywgMzEzNjksIDY2MywgOTg0MSwgMzEzNzQsIAorICAgIDMxMzgxLCAzMTM4NywgMzEzOTEsIDE2MzksIDMxMzk0LCAzMTM5OCwgMTY1NzYsIDMxNDAxLCAzMTQwNiwgMzE0MTMsIAorICAgIDMxNDE5LCAzMTQyNCwgMzE0MzIsIDMxNDM5LCAzMTQ0NSwgMjQxMzIsIDMxNDQ5LCAzMTQ1MywgMzE0NTcsIDM4MTMsIAorICAgIDE4MTgwLCAzMTQ2MSwgMzE0NjYsIDMxNDcwLCAzMTQ3MywgMzE0ODEsIDMxNDg5LCAzMTQ5NCwgMzE1MDIsIDMxNTA1LCAKKyAgICAzMTUxMiwgMzE1MjIsIDMxNTM0LCAzMTUzOSwgMzE1NDMsIDMxNTUxLCAzMTU1OCwgMzE1NjQsIDMxNTcxLCAzMTU3OCwgCisgICAgMzE1ODEsIDMxNTg1LCAzMTU4OSwgMTQ0OSwgMzE1OTksIDMxNjAxLCAzMTYwNiwgMzE2MTIsIDMxNjE4LCAzMTYyMywgCisgICAgMzE2MjgsIDMxNjMzLCAzMTYzOCwgMzE2NDMsIDMxNjQ4LCAzMTY1MywgMzE2NTgsIDMxNjYzLCAzMTY2OCwgMzE2NzMsIAorICAgIDMxNjc4LCAzMTY4MywgMzE2ODgsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEyLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKKyAgICAzMTczMywgMzE3MzgsIDMxNzQzLCAzMTc0OCwgMzE3NTQsIDMxNzU5LCAzMTc2NSwgMzE3NzAsIDMxNzc1LCAzMTc4MCwgCisgICAgMzE3ODUsIDMxNzkxLCAzMTc5NiwgMzE4MDIsIDMxODA3LCAzMTgxMiwgMzE4MTcsIDMxODIyLCAzMTgyOCwgMzE4MzMsIAorICAgIDMxODM5LCAzMTg0NCwgMzE4NDksIDMxODU0LCAzMTg1OSwgMzE4NjQsIDMxODY5LCAzMTg3NCwgMzE4NzksIDMxODg0LCAKKyAgICAzMTg5MCwgMzE4OTYsIDMxOTAyLCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjgsIDMxOTM0LCAzMTk0MCwgCisgICAgMzE5NDYsIDMxOTUyLCAzMTk1OCwgMzE5NjMsIDMxOTY5LCAzMTk3NCwgMzE5NzksIDMxOTg0LCAzMTk4OSwgMzE5OTUsIAorICAgIDI0ODIsIDMyMDAwLCAyNDg5LCAyNDk2LCAyNzkzLCAzMjAwNSwgMjUwMiwgMjUxMiwgMzIwMTEsIDMyMDE1LCAzMjAyMCwgCisgICAgMzIwMjUsIDMyMDMxLCAzMjAzNiwgMzIwNDEsIDMyMDQ1LCAzMjA1MCwgMzIwNTYsIDMyMDYxLCAzMjA2NiwgMzIwNzEsIAorICAgIDMyMDc3LCAzMjA4MiwgMzIwODYsIDMyMDkwLCAzMjA5NSwgMzIxMDAsIDMyMTA1LCAzMjExMCwgMzIxMTUsIDMyMTIxLCAKKyAgICAzMjEyNywgMzIxMzIsIDMyMTM2LCAzMjE0MSwgMzIxNDcsIDMyMTUxLCAzMjE1NiwgMzIxNjEsIDMyMTY2LCAzMjE3MSwgCisgICAgMzIxNzUsIDMyMTc4LCAzMjE4MywgMzIxODgsIDMyMTkzLCAzMjE5OCwgMzIyMDMsIDMyMjA5LCAzMjIxNSwgMzIyMjAsIAorICAgIDMyMjI1LCAzMjIzMCwgMzIyMzQsIDMyMjM5LCAzMjI0NCwgMzIyNDksIDMyMjU0LCAzMjI1OSwgMzIyNjQsIDMyMjY4LCAKKyAgICAzMjI3MywgMzIyNzgsIDMyMjgzLCAzMjI4NywgMzIyOTEsIDMyMjk1LCAzMjMwMCwgMzIzMDgsIDMyMzEzLCAzMjMxOCwgCisgICAgMzIzMjQsIDMyMzMwLCAzMjMzNiwgMzIzNDEsIDMyMzQ1LCAzMjM0OCwgMzIzNTMsIDMyMzU4LCAzMjM2MiwgMzIzNjcsIAorICAgIDMyMzcyLCAzMjM3NiwgMzIzODEsIDMyMzg1LCAzMjM4OCwgMzIzOTMsIDM5MTQsIDE4OTA2LCAzMjM5OCwgMzI0MDMsIAorICAgIDMyNDA4LCAzMjQxNiwgMjI5NTksIDMwOTI1LCA5NTE4LCAzMjQyMSwgMzI0MjYsIDMyNDMwLCAzMjQzNSwgMzI0MzksIAorICAgIDMyNDQzLCAzMjQ0OCwgMzI0NTIsIDMyNDU1LCAzMjQ1OCwgMzI0NjIsIDMyNDY3LCAzMjQ3MSwgMzI0NzksIDMyNDgzLCAKKyAgICAzMjQ4NiwgMzI0OTEsIDMyNDk1LCAzMjQ5OSwgMzI1MDQsIDMyNTA5LCAzMjUxMywgMzI1MTksIDMyNTI0LCAzMjUyOSwgCisgICAgMzI1MzYsIDMyNTQzLCAzMjU0NywgMzI1NTAsIDMyNTU2LCAzMjU2NSwgMzI1NzIsIDMyNTgwLCAzMjU4NywgMzI1OTEsIAorICAgIDMyNTk2LCAzMjYwMCwgMzI2MDQsIDMyNjEwLCAzMjYxNiwgMzI2MjAsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAKKyAgICAzMjY0NywgMzI2NTMsIDMyNjU5LCAzMjY2NSwgMzI2NzEsIDMyNjc4LCAzMjY4NCwgMzI2OTAsIDMyNjk2LCAzMjcwMiwgCisgICAgMzI3MDgsIDMyNzE0LCAzMjcyMCwgMzI3MjcsIDMyNzMzLCAzMjc0MCwgMzI3NDYsIDMyNzUyLCAzMjc1OCwgMzI3NjQsIAorICAgIDMyNzcwLCAzMjc3NiwgMzI3ODIsIDMyNzg4LCAzMjc5NCwgMTI0NzksIDMyODAwLCAzMjgwNiwgMzI4MTEsIDMyODE2LCAKKyAgICAzMjgyMSwgMzI4MjQsIDMyODMwLCAzMjgzOCwgMzI4NDMsIDMyODQ3LCAzMjg1MiwgMzI4NTgsIDMyODY3LCAzMjg3MywgCisgICAgMzI4NzgsIDMyODgzLCAzMjg4OCwgMzI4OTIsIDMyODk3LCAzMjkwMiwgMzI5MDcsIDMyOTEyLCAzMjkxNywgMzI5MjQsIAorICAgIDMyOTMxLCAzMjkzNywgMzI5NDMsIDMyOTQ4LCAxNzgyMiwgMzI5NTUsIDMyOTYxLCAzMjk2OCwgMzI5NzQsIDMyOTgwLCAKKyAgICAzMjk4NSwgMzI5OTMsIDMyOTk4LCAxMDM3MiwgMzMwMDIsIDMzMDA3LCAzMzAxMiwgMzMwMTgsIDMzMDIzLCAzMzAyOCwgCisgICAgMzMwMzIsIDMzMDM3LCAzMzA0MiwgMzMwNDgsIDMzMDUzLCAzMzA1OCwgMzMwNjMsIDMzMDY3LCAzMzA3MiwgMzMwNzcsIAorICAgIDMzMDgxLCAzMzA4NiwgMzMwOTEsIDMzMDk1LCAzMzEwMCwgMzMxMDQsIDMzMTA5LCAzMzExNCwgMzMxMTksIDMzMTIzLCAKKyAgICAzMzEyOCwgMzMxMzIsIDMzMTM2LCAxNjY4MiwgMzMxNDEsIDMzMTUwLCAzMzE1NiwgMzMxNjIsIDMzMTcxLCAzMzE3OSwgCisgICAgMzMxODgsIDMzMTk2LCAzMzIwMSwgMzMyMDUsIDMzMjEyLCAzMzIxOCwgMzMyMjYsIDMzMjMwLCAzMzIzMywgMzMyMzgsIAorICAgIDMzMjQyLCAzMzI1MSwgMzMyNTksIDMzMjc3LCAzMzI4MywgMTQ5MywgMzMyODksIDMzMjkyLCAzMzI5NiwgMjQyMzgsIAorICAgIDI0MjQ0LCAzMzMwMiwgMzMzMDYsIDMzMzE3LCAzMzMyOCwgMzMzMzksIDMzMzUxLCAzMzM1NSwgMzMzNjIsIDMzMzY5LCAKKyAgICAzMzM3NCwgMzMzNzgsIDYyMDQsIDkyOCwgMjI5NTgsIDMzMzg2LCAzMzM5MSwgMzMzOTUsIDMzNDAwLCAzMzQwNCwgMzM0MTAsIAorICAgIDMzNDE1LCAzMzQyMSwgMzM0MjYsIDMzNDMyLCAzMzQzNywgMzM0NDMsIDMzNDQ4LCAzMzQ1NCwgMzM0NjAsIDMzNDY2LCAKKyAgICAzMzQ3MSwgMzM0MjcsIDMzNDMzLCAzMzQ3NSwgMzM0ODAsIDMzNDg2LCAzMzQ5MSwgMzM0OTcsIDMzNTAyLCAzMzUwOCwgCisgICAgMzM1MTMsIDMzNDM4LCAxMTMxNCwgMzM1MTcsIDMzNDQ5LCAzMzQ1NSwgMzM0NjEsIDI4ODUsIDM1MzMsIDMzNTIzLCAKKyAgICAzMzUyNiwgMzM1MzEsIDMzNTM3LCAzMzU0MywgMzM1NDksIDMzNTU2LCAzMzU2MiwgMzM1NjgsIDMzNTc0LCAzMzU4MCwgCisgICAgMzM1ODYsIDMzNTkyLCAzMzU5OCwgMzM2MDQsIDMzNjEwLCAzMzYxNiwgMzM2MjIsIDMzNjI4LCAzMzYzNSwgMzM2NDEsIAorICAgIDMzNjQ3LCAzMzY1MywgMzM2NTksIDMzNjY1LCAzMzY2OCwgMzM2NzMsIDMzNjc2LCAzMzY4MywgMzM2ODgsIDMzNjk2LCAKKyAgICAzMzcwMSwgMzM3MDYsIDMzNzEyLCAzMzcxNywgMzM3MjIsIDMzNzI2LCAzMzczMSwgMzM3MzcsIDMzNzQyLCAzMzc0OCwgCisgICAgMzM3NTMsIDMzNzU5LCAzMzc2NCwgMzM3NzAsIDMzNzc2LCAzMzc4MCwgMzM3ODUsIDMzNzkwLCAzMzc5NSwgMzM4MDAsIAorICAgIDMzODA0LCAzMzgwOSwgMzM4MTQsIDMzODE5LCAzMzgyNSwgMzM4MzEsIDMzODM3LCAzMzg0MywgMzM4NDgsIDMzODUyLCAKKyAgICAzMzg1NSwgMzM4NjEsIDMzODY3LCAzMzg3NiwgMzM4ODQsIDMzODkxLCAzMzg5NiwgMzM5MDAsIDMzOTA0LCAzMzkwOSwgCisgICAgMTY1MzAsIDMzOTE0LCAzMzkyMiwgMzM5MjgsIDM4NjYsIDEzNTgsIDMzOTMzLCAzMzkzNywgODM1OSwgMzM5NDMsIDMzOTQ5LCAKKyAgICAzMzk1NiwgODM2OCwgMzM5NjAsIDMzOTY2LCAzMzk3MywgMzM5NzksIDMzOTg4LCAzMzk5NiwgOTI0NCwgMzQwMDgsIAorICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNCwgMzQwMzgsIDM0MDQxLCAzNDA1MSwgMzQwNjAsIDM0MDY4LCAKKyAgICAzMzQyOCwgMzQwNzMsIDM0MDgzLCAzNDA5MywgMzQxMDMsIDM0MTA5LCAzNDExNCwgMzQxMjQsIDM0MTI5LCAzNDE0MiwgCisgICAgMzQxNTYsIDM0MTY3LCAzNDE3OSwgMzQxOTEsIDM0MjA1LCAzNDIxOCwgMzQyMzAsIDM0MjQyLCAxNTg5OSwgMzQyNTYsIAorICAgIDM0MjYxLCAzNDI2NiwgMzQyNzAsIDM0Mjc0LCAzNDI3OCwgMTc5NSwgMjkyOTAsIDM0MjgyLCAzNDI4NywgMzM0NzYsIAorICAgIDM0MjkyLCAzNDI5NSwgMzQzMDAsIDM0MzA1LCAzNDMxMCwgMzQzMTYsIDM0MzIyLCAxMDk3NCwgMzQzMjcsIDM0MzMzLCAKKyAgICAzNDM0MCwgMTcxMzAsIDM0MzQ2LCAzNDM1MSwgMzQzNTYsIDM0MzYwLCAzNDM2NSwgMzQzNzAsIDMzNDgxLCAzNDM3NSwgCisgICAgMzQzODAsIDM0Mzg1LCAzNDM5MSwgMzM0ODcsIDM0Mzk2LCAzNDM5OSwgMzQ0MDYsIDM0NDE0LCAzNDQyMCwgMzQ0MjYsIAorICAgIDM0NDMyLCAzNDQ0MywgMzQ0NDgsIDM0NDU1LCAzNDQ2MiwgMzQ0NjksIDM0NDc3LCAzNDQ4NiwgMzQ0OTUsIDM0NTAxLCAKKyAgICAzNDUwNywgMzQ1MTUsIDMzNDkyLCAzNDUyMCwgMzQ1MjYsIDM0NTMyLCAzMzQ5OCwgMzQ1MzcsIDM0NTQyLCAzNDU1MCwgCisgICAgMzQ1NTgsIDM0NTY0LCAzNDU3MSwgMzQ1NzcsIDM0NTg0LCAzNDU5MSwgMzQ1OTcsIDM0NjA1LCAzNDYxNSwgMzQ2MjIsIAorICAgIDM0NjI4LCAzNDYzMywgMzQ2MzksIDM0NjQ0LCAzNDY0OSwgMzQ2NTYsIDM0NjY1LCAzNDY3MywgMzQ2NzgsIDM0Njg0LCAKKyAgICAzNDY5MSwgMzQ2OTksIDM0NzA1LCAzNDcxMCwgMzQ3MTYsIDM0NzI1LCAzNDczMiwgMzAxMzUsIDM0NzM4LCAzNDc0MiwgCisgICAgMzQ3NDcsIDM0NzU2LCAzNDc2MSwgMzQ3NjYsIDM0NzcxLCAxMzU0OCwgMzQ3NzksIDM0Nzg0LCAzNDc4OSwgMzQ3OTQsIAorICAgIDM0Nzk4LCAzNDgwMywgMzQ4MDgsIDM0ODE1LCAzNDgyMCwgMzQ4MjUsIDM0ODMwLCAzMzUwMywgMjI4OTUsIDM0ODM2LCAKKyAgICAyNTU4LCAxNDQsIDM0ODM5LCAzNDg0MiwgMzQ4NDYsIDM0ODUwLCAzNDg2MCwgMzQ4NjgsIDM0ODc1LCAzNDg3OSwgMzQ4ODIsIAorICAgIDM0ODkwLCAzNDg5NywgMzQ5MDQsIDM0OTEzLCAzNDkxNywgMzQ5MjAsIDM0OTI2LCAzNDkzMCwgMzQ5MzgsIDM0OTQ2LCAKKyAgICAzNDk1MCwgMzQ5NTQsIDM0OTU3LCAzNDk2MywgMzQ5NzAsIDM0OTc0LCAzNDk3OCwgMzQ5ODUsIDM0OTkzLCAzMzQzOSwgCisgICAgMzUwMDAsIDM1MDA4LCAzNTAxMywgMTEwMzQsIDYyMywgMzY5LCAzNTAyNSwgMzUwMzAsIDM1MDM1LCAzNTA0MSwgMzUwNDYsIAorICAgIDM1MDUxLCAzODg3LCAzNTA1NiwgMzUwNTksIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAzNTA4NCwgMzUwOTEsIAorICAgIDI0MzU2LCAzNTA5NiwgMzUxMDEsIDM1MTA2LCAzNTExMSwgMzUxMTYsIDM1MTIyLCAzNTEyNywgMzUxMzMsIDMzNjc5LCAKKyAgICAzNTEzOSwgMzUxNDQsIDM1MTUwLCAzNTE1NiwgMzUxNjYsIDM1MTcxLCAzNTE3NiwgMzUxODAsIDM1MTg1LCAzNTE5MCwgCisgICAgMzUxOTUsIDM1MjAwLCAzNTIxMywgMzUyMTgsIDI0MDE5LCAxODI1NSwgMzkwMCwgMzUyMjIsIDM1MjI4LCAzNTIzMywgCisgICAgMzUyMzgsIDM1MjQ0LCAzNTI0OSwgMzUyNTQsIDM1MjU4LCAzNTI2MywgMzUyNjgsIDM1Mjc0LCAzNTI3OSwgMzUyODQsIAorICAgIDEzNjMsIDM1Mjg4LCAzNTI5MywgMzUyOTgsIDM1MzAzLCAzNTMwNywgMzUzMTIsIDM1MzE3LCAzNTMyMiwgMzUzMjgsIAorICAgIDM1MzM0LCAzNTMzOSwgMzUzNDMsIDM1MzQ3LCAzNTM1MiwgMzUzNTcsIDM1MzYyLCAzNTM2NiwgMzUzNzQsIDM1Mzc4LCAKKyAgICAzNTM4NCwgMzUzODgsIDM1Mzk1LCAxODAzOSwgMzM0NTAsIDM1NDAxLCAzNTQwOCwgMzU0MTYsIDM1NDIzLCAzNTQyOSwgCisgICAgMzU0NDIsIDM1NDU0LCAzNTQ1OSwgMzU0NjUsIDM1NDY5LCAyODEyLCAzNTQ3MywgMzU0NzcsIDM0OTY1LCAzNTQ4NiwgCisgICAgMzU0OTcsIDM1NTAyLCAzMDE5OCwgMzU1MDcsIDM1NTEyLCAzNTUxNiwgMzU1MjEsIDI0MjQ5LCAzNTUyNSwgMzU1MjksIAorICAgIDM1NTM0LCAzMzQ1NiwgMjI5ODUsIDM1NTM4LCAzNTU0MywgMzU1NDksIDM1NTU0LCAzNTU1OCwgMzU1NjIsIDM1NTY1LCAKKyAgICAzNTU2OSwgMzU1NzUsIDM1NTg0LCAzNTU5NSwgMzU2MDcsIDMzNDYyLCAzNTYxMiwgMzU2MTUsIDM1NjE5LCAzNTYyMywgCisgICAgNDA2LCAzNTYyOCwgMzU2MzMsIDM1NjM4LCAzNTY0MywgMzU2NDgsIDM1NjUzLCAzNTY1OSwgMzU2NjQsIDM1NjY5LCAKKyAgICAzNTY3NSwgMzU2ODAsIDM1Njg2LCAzNTY5MSwgMzU2OTcsIDM1NzAyLCAzNTcwNywgMzU3MTIsIDM1NzE3LCAzNTcyMiwgCisgICAgMzU3MjcsIDM1NzMyLCAzNTczNywgMzU3NDMsIDM1NzQ4LCAzNTc1MywgMzU3NTgsIDM1NzYzLCAzNTc2OCwgMzU3NzMsIAorICAgIDM1Nzc4LCAzNTc4NCwgMzU3OTAsIDM1Nzk1LCAzNTgwMCwgMzU4MDUsIDM1ODEwLCAzNTgxNSwgMzU4MjAsIDM1ODI1LCAKKyAgICAzNTgzMCwgMzU4MzUsIDM1ODQwLCAzNTg0NSwgMzU4NTAsIDM1ODU1LCAzNTg2MCwgMzU4NjUsIDM1ODcwLCAzNTg3NSwgCisgICAgMzU4ODAsIDM1ODg2LCAzMjUsIDksIDM1ODkxLCAzNTg5NSwgMzU4OTksIDM1OTA3LCAzNTkxMSwgMzU5MTUsIDM1OTE4LCAKKyAgICAzNTkyMSwgMzU5MjMsIDM1OTI4LCAzNTkzMiwgMzU5MzcsIDM1OTQxLCAzNTk0NiwgMzU5NTAsIDM1OTU1LCAzNTk1OSwgCisgICAgMzU5NjIsIDM1OTY0LCAzNTk2OCwgMzU5NzMsIDM1OTc3LCAzNTk4OCwgMzU5OTEsIDM1OTkzLCAzNTk5NywgMzYwMDksIAorICAgIDM2MDE4LCAzNjAyMiwgMzYwMjYsIDM2MDMyLCAzNjAzNywgMzYwNDYsIDM2MDUyLCAzNjA1NywgMzYwNjIsIDM2MDY2LCAKKyAgICAzNjA3MCwgMzYwNzUsIDM2MDgyLCAzNjA4NywgMzYwOTMsIDM2MDk4LCAzNjEwMiwgMzYxMDksIDI3NzMxLCAyNzc0MSwgCisgICAgMzYxMTMsIDM2MTE4LCAzNjEyMywgMzYxMjgsIDM2MTM1LCAzNjEzOSwgMzYxNDYsIDM2MTUyLCA4NDkxLCAzNjE1NiwgCisgICAgMzYxNjUsIDM2MTczLCAzNjE4OCwgMzYyMDIsIDM2MjExLCAzNjIxOSwgMzYyMzAsIDM2MjM5LCAzNjI0NCwgMzYyNTEsIAorICAgIDc1NTYsIDM2MjYxLCAzNjI2NiwgMzYyNzEsIDM2Mjc1LCAzNjI3OCwgMzYyODMsIDM2Mjg3LCAzNjI5MiwgMzYyOTYsIAorICAgIDM2MzAzLCAzNjMwOCwgMzYzMTMsIDM2MzE4LCA5MzkxLCAzNjMyOCwgMzYzMzAsIDM2MzMzLCAzNjMzNiwgMzYzNDAsIAorICAgIDM2MzQ2LCAzNjM1MCwgMzYzNTUsIDM2MzYwLCAzNjM3OCwgMzYzOTIsIDM2NDExLCAzNjQyOCwgMzY0MzcsIDM2NDQ1LCAKKyAgICAzNjQ1MCwgMzY0NTUsIDE0ODYsIDM2NDYxLCAzNjQ2NywgMzY0NzIsIDM2NDgyLCAzNjQ5MSwgMzY0OTksIDM2NTA0LCAKKyAgICAzNjUxMCwgMzY1MTUsIDM2NTI0LCAzNjUzNSwgMzY1NDAsIDM2NTQ3LCAzNjU1MSwgMzY1NTgsIDM2NTY2LCAzNjU3MywgCisgICAgMzY1ODYsIDM2NTk0LCAzNjU5OCwgMzY2MDgsIDM2NjEzLCAzNjYxNywgMzY2MjUsIDM2NjMzLCAzNjYzOCwgMzY2NDIsIAorICAgIDM2NjQ2LCAzNjY1NSwgMzY2NjEsIDM2NjY2LCAzNjY3NCwgMzY2ODQsIDM2NjkzLCAzNjcwMiwgMzY3MTEsIDM2NzIyLCAKKyAgICAzNjczMCwgMzY3NDEsIDM2NzUwLCAzNjc1NywgMzY3NjMsIDM2NzY4LCAzNjc3OSwgMzY3OTAsIDM2Nzk1LCAzNjc5OSwgCisgICAgMzY4MDIsIDM2ODA2LCAzNjgxNCwgMzY4MjAsIDM2ODMxLCAzNjg0MiwgMzY4NTMsIDM2ODY0LCAzNjg3NSwgMzY4ODYsIAorICAgIDM2ODk3LCAzNjkwOCwgMzY5MjAsIDM2OTMyLCAzNjk0NCwgMzY5NTYsIDM2OTY4LCAzNjk4MCwgMzY5OTIsIDM2OTk2LCAKKyAgICAzNzAwNCwgMzcwMTAsIDM3MDE3LCAzNzAyMywgMzcwMjgsIDM3MDM0LCAyNDU3LCAzNzAzOCwgMzcwNDAsIDM3MDQ1LCAKKyAgICAzNzA1MCwgMzcwNTUsIDM3MDU4LCAzNzA2MCwgMzcwNjQsIDM3MDY3LCAzNzA3NCwgMzcwNzgsIDEwNjY0LCAzNzA4MiwgCisgICAgMzcwODgsIDM3MDk4LCAzNzEwMywgMzcxMDksIDM3MTEzLCAzNzExOCwgMzcxMzEsIDI4MTYyLCAzNzEzNywgMzcxNDYsIAorICAgIDM3MTU1LCAxOTEwNCwgMzcxNjIsIDM3MTcxLCAzNDA4OSwgMzcxNzksIDM3MTg0LCAzNzE4OCwgMzcxOTcsIDM3MjA1LCAKKyAgICAzNzIxMiwgMzcyMTcsIDM3MjIxLCAzNzIyNiwgMzcyMzQsIDM3MjM4LCAzNzI0NiwgMzcyNTIsIDM3MjU4LCAzNzI2MywgCisgICAgMzcyNjcsIDM3MjcwLCAzNzI3NSwgMzcyODgsIDM3MzA0LCAyNDg0MCwgMzczMjEsIDM3MzMzLCAzNzM1MCwgMzczNjIsIAorICAgIDM3Mzc2LCAyNDg1NywgMjQ4NzYsIDM3Mzg4LCAzNzQwMCwgMjcxOSwgMzc0MTQsIDM3NDE5LCAzNzQyNCwgMzc0MjksIAorICAgIDM3NDMzLCAzNzQ0MCwgMzc0NTIsIDM3NDU5LCAzNzQ2OCwgMzc0NzEsIDM3NDgyLCAzNzQ5MywgMzc0OTgsIDM0NTEyLCAKKyAgICA4NTIsIDM3NTAyLCAzNzUwNiwgMzc1MTAsIDM3NTEzLCAzNzUxOCwgMzc1MjMsIDM3NTI5LCAzNzUzNCwgMzc1MzksIAorICAgIDM3NTQ1LCAzNzU1MSwgMzc1NTYsIDM3NTYwLCAzNzU2NSwgMzc1NzAsIDM3NTc1LCAzNzU3OSwgMzc1ODIsIDM3NTg4LCAKKyAgICAzNzU5MywgMzc1OTgsIDM3NjAzLCAzNzYwNywgMzc2MTIsIDM3NjE4LCAzNzYyNiwgMjg0MTQsIDM3NjMxLCAzNzYzNiwgCisgICAgMzc2NDMsIDM3NjQ5LCAzNzY1NSwgMzc2NjAsIDM3NjY4LCAyNDM2NSwgMzc2NzUsIDM3NjgwLCAzNzY4NSwgMzc2OTAsIAorICAgIDM3Njk0LCAzNzY5NywgMzc3MDIsIDM3NzA2LCAzNzcxMCwgMzc3MTcsIDM3NzIzLCAzNzcyOSwgMzc3MzUsIDM3NzQyLCAKKyAgICAzNzc0NywgMzc3NTMsIDM2NjI4LCAzNzc1NywgMzc3NjEsIDM3NzY2LCAzNzc3OSwgMzc3ODQsIDM3NzkwLCAzNzc5OCwgCisgICAgMzc4MDUsIDM3ODEzLCAzNzgyMywgMzc4MjksIDM3ODM1LCAzNzg0MSwgMzc4NDUsIDM3ODU0LCAzNzg2MiwgMzc4NjksIAorICAgIDM3ODc0LCAzNzg3OSwgMTEzMzcsIDM3ODg0LCAzNzg5MSwgMzc4OTcsIDM3OTA3LCAzNzkxMiwgMzc5MTgsIDM3OTI2LCAKKyAgICAzNzc1LCAzNzkzMywgMzc5NDAsIDM3OTQ2LCAzNzk1MywgMzc4MSwgMzc5NTcsIDM3OTYyLCAzNzk3MywgMzc5ODAsIAorICAgIDM3OTg2LCAzNzk5NSwgMzc5OTksIDQyNDQsIDM4MDAyLCAzODAwOSwgMzgwMTUsIDM4MDIxLCAzODAyOSwgMzgwMzksIAorICAgIDMxMzI2LCAzODA0NiwgMzgwNTQsIDM4MDYwLCAzODA2NSwgMzgwNzEsIDM4MDc2LCAzODA4MCwgMjgwMTAsIDM4MDg2LCAKKyAgICAzODA5MywgMzgwOTksIDM4MTA4LCAzODExNSwgMjU1NjUsIDM4MTIxLCAzODEyNiwgMzgxMzAsIDM4MTM4LCAzODE0NiwgCisgICAgMTAzMzAsIDYxNzksIDM4MTUzLCAzODE1NywgMzgxNTksIDM4MTYzLCAzODE2OCwgMzgxNzAsIDM4MTc1LCAzODE4MSwgCisgICAgMzgxODYsIDM4MTkxLCAzODE5OCwgMzUwODcsIDM4MjA0LCAzODIwOSwgMzgyMTMsIDM4MjE4LCAzODIyMiwgMzgyMzEsIAorICAgIDM4MjM1LCAzODI0MSwgMzgyNDgsIDM4MjU0LCAzODI2MSwgMzgyNjYsIDM4Mjc1LCAzODI4MCwgMzgyODQsIDM4Mjg5LCAKKyAgICAzODI5NiwgMzgzMDQsIDM4MzEyLCAzODMxNywgMjMwNDEsIDM4MzIxLCAzODMyNCwgMzgzMjgsIDM4MzMyLCAxMTcyNSwgCisgICAgODcyLCAzODMzNiwgMzgzNDEsIDM4MzQ5LCAzODM1MywgMzgzNjIsIDM4MzY5LCAzODM3MywgMzgzNzcsIDM4Mzg1LCAKKyAgICAzODM5MiwgMzg0MDIsIDM4NDA2LCAzODQxMCwgMzg0MTgsIDM4NDI2LCAzODQzMiwgMzg0MzcsIDM4NDQ2LCAxNDUzMCwgCisgICAgMzg0NTIsIDM4NDYxLCAzODQ2NiwgMzg0NzMsIDM4NDgwLCAzODQ4OCwgMzg0OTYsIDM4NTA0LCAzODUwOSwgMzg1MTYsIAorICAgIDM4NTIzLCAzODUzMCwgMzg1MzcsIDM4NTQ0LCAzODU0OSwgMzg1NTUsIDM4NTcyLCAzODU4MCwgMzg1OTAsIDM4NTk4LCAKKyAgICAzODYwNSwgNDE0LCAzODYwOSwgMzg2MTUsIDM4NjE5LCAzODYyNCwgMzYyMzUsIDM4NjMwLCAzODYzMywgMzg2MzcsIAorICAgIDM4NjQ4LCAzODY1NiwgMzc4NiwgMzg2NjQsIDM4NjcwLCAzODY3NiwgMzg2ODYsIDM4Njk1LCAzODcwNSwgMzg3MTIsIAorICAgIDM4NzE4LCAzODcyMywgMzc5MiwgMzc5OCwgMzg3MzIsIDM4NzM5LCAzODc0NywgMzg3NTIsIDM4NzU2LCAzODc2MywgCisgICAgMzg3NzEsIDM4Nzc4LCAzODc4NCwgMzg3OTMsIDM4ODAzLCAzODgwOSwgMzg4MTcsIDM4ODI2LCAzODgzMywgMzg4NDEsIAorICAgIDM4ODQ4LCAyMzcyOCwgMzg4NTIsIDM4ODU5LCAzODg2NSwgMzg4NzUsIDM4ODg0LCAzODg5MiwgMzg5MDMsIDM4OTA3LCAKKyAgICAzODkxNywgMzg5MjMsIDM4OTMwLCAzODkzOCwgMzg5NDcsIDM4OTU2LCAzODk2NiwgMzg5NzcsIDM4OTg0LCAzODk4OSwgCisgICAgMzg5OTYsIDMwODgsIDM5MDA0LCAzOTAxMCwgMzkwMTUsIDM5MDIxLCAzOTAyNywgMzkwMzIsIDM5MDQ1LCAzOTA1OCwgCisgICAgMzkwNzEsIDM5MDc4LCAzOTA4NCwgMzkwOTIsIDM5MTAwLCAzOTEwNSwgMzkxMDksIDE0NTUsIDM5MTEzLCAzOTExNywgCisgICAgMzkxMjEsIDM5MTI1LCAzOTEyOSwgMzkxMzMsIDM5MTM3LCAzOTE0MSwgMzkxNDUsIDM5MTQ5LCAzOTE1MywgMzkxNTcsIAorICAgIDM5MTYxLCAzOTE2NSwgMzkxNjksIDM5MTczLCAzOTE3NywgMzkxODEsIDM5MTg1LCAzOTE4OSwgMzkxOTMsIDM5MTk3LCAKKyAgICAzOTIwMSwgMzkyMDUsIDM5MjA5LCAzOTIxMywgMzkyMTcsIDM5MjIxLCAzOTIyNSwgMzkyMjksIDM5MjMzLCAzOTIzNywgCisgICAgMzkyNDEsIDM5MjQ1LCAzOTI0OSwgMzkyNTMsIDM5MjU3LCAzOTI2MSwgMzkyNjUsIDM5MjY5LCAzOTI3MywgMzkyNzcsIAorICAgIDM5MjgxLCAzOTI4NSwgMzkyODksIDM5MjkzLCAzOTI5NywgMzkzMDEsIDM5MzA1LCAzOTMwOSwgMzkzMTMsIDM5MzE3LCAKKyAgICAzOTMyMSwgMzkzMjUsIDM5MzI5LCAzOTMzMywgMzkzMzcsIDM5MzQxLCAzOTM0NSwgMzkzNDksIDM5MzUzLCAzOTM1NywgCisgICAgMzkzNjEsIDM5MzY1LCAzOTM2OSwgMzkzNzMsIDM5Mzc3LCAzOTM4MSwgMzkzODUsIDM5Mzg5LCAzOTM5MywgMzkzOTcsIAorICAgIDM5NDAxLCAzOTQwNSwgMzk0MDksIDM5NDEzLCAzOTQxNywgMzk0MjEsIDM5NDI1LCAzOTQyOSwgMzk0MzMsIDM5NDM3LCAKKyAgICAzOTQ0MSwgMzk0NDUsIDM5NDQ5LCAzOTQ1MywgMzk0NTcsIDM5NDYxLCAzOTQ2NSwgMzk0NjksIDM5NDczLCAzOTQ3NywgCisgICAgMzk0ODEsIDM5NDg1LCAzOTQ4OSwgMzk0OTMsIDM5NDk3LCAzOTUwMSwgMzk1MDUsIDM5NTA5LCAzOTUxMywgMzk1MTcsIAorICAgIDM5NTIxLCAzOTUyNSwgMzk1MjksIDM5NTMzLCAzOTUzNywgMzk1NDEsIDM5NTQ1LCAzOTU0OSwgMzk1NTMsIDM5NTU3LCAKKyAgICAzOTU2MSwgMzk1NjUsIDM5NTY5LCAzOTU3MywgMzk1NzcsIDM5NTgxLCAzOTU4NSwgMzk1ODksIDM5NTkzLCAzOTU5NywgCisgICAgMzk2MDEsIDM5NjA1LCAzOTYwOSwgMzk2MTMsIDM5NjE3LCAzOTYyMSwgMzk2MjUsIDM5NjI5LCAzOTYzMywgMzk2MzcsIAorICAgIDM5NjQxLCAzOTY0NSwgMzk2NDksIDM5NjUzLCAzOTY1NywgMzk2NjEsIDM5NjY1LCAzOTY2OSwgMzk2NzMsIDM5Njc3LCAKKyAgICAzOTY4MSwgMzk2ODUsIDM5Njg5LCAzOTY5MywgMzk2OTcsIDM5NzAxLCAzOTcwNSwgMzk3MDksIDM5NzEzLCAzOTcxNywgCisgICAgMzk3MjEsIDM5NzI1LCAzOTczMCwgMzk3MzQsIDM5NzM5LCAzOTc0MywgMzk3NDgsIDM5NzUyLCAzOTc1NywgMzk3NjEsIAorICAgIDM5NzY3LCAzOTc3MiwgMzk3NzYsIDM5NzgxLCAzOTc4NSwgMzk3OTAsIDM5Nzk0LCAzOTc5OSwgMzk4MDMsIDM5ODA4LCAKKyAgICAzOTgxMiwgMzk4MTcsIDM5ODIxLCAzOTgyNiwgMzk4MzAsIDM5ODM2LCAzOTg0MiwgMzk4NDcsIDM5ODUxLCAzOTg1NiwgCisgICAgMzk4NjAsIDM5ODY2LCAzOTg3MSwgMzk4NzUsIDM5ODgwLCAzOTg4NCwgMzk4ODksIDM5ODkzLCAzOTg5OSwgMzk5MDQsIAorICAgIDM5OTA4LCAzOTkxMywgMzk5MTcsIDM5OTIyLCAzOTkyNiwgMzk5MzEsIDM5OTM1LCAzOTk0MSwgMzk5NDYsIDM5OTUwLCAKKyAgICAzOTk1NSwgMzk5NTksIDM5OTY1LCAzOTk3MCwgMzk5NzQsIDM5OTc5LCAzOTk4MywgMzk5ODgsIDM5OTkyLCAzOTk5NywgCisgICAgNDAwMDEsIDQwMDA2LCA0MDAxMCwgNDAwMTYsIDQwMDIxLCA0MDAyNSwgNDAwMzEsIDQwMDM2LCA0MDA0MCwgNDAwNDYsIAorICAgIDQwMDUxLCA0MDA1NSwgNDAwNjAsIDQwMDY0LCA0MDA2OSwgNDAwNzMsIDQwMDc5LCA0MDA4NSwgNDAwOTEsIDQwMDk3LCAKKyAgICA0MDEwMywgNDAxMDksIDQwMTE1LCA0MDEyMSwgNDAxMjYsIDQwMTMwLCA0MDEzNSwgNDAxMzksIDQwMTQ1LCA0MDE1MCwgCisgICAgNDAxNTQsIDQwMTU5LCA0MDE2MywgNDAxNjgsIDQwMTcyLCA0MDE3NywgNDAxODEsIDQwMTg2LCA0MDE5MCwgNDAxOTUsIAorICAgIDQwMTk5LCA0MDIwNCwgNDAyMDgsIDQwMjE0LCA0MDIxOSwgNDAyMjMsIDQwMjI4LCA0MDIzMiwgNDAyMzgsIDQwMjQ0LCAKKyAgICA0MDI0OSwgMTE2LCA1NywgNDAyNTMsIDQwMjU1LCA0MDI1OSwgNDAyNjMsIDQwMjY3LCA0MDI3MiwgNDAyNzYsIDQwMjgwLCAKKyAgICAxMDI1MSwgNDAyODUsIDQwMjkxLCAxNzU2LCA2NTk3LCA0MDI5NywgNDAzMDAsIDQwMzA1LCA0MDMwOSwgNDAzMTQsIAorICAgIDQwMzE4LCA0MDMyMiwgNDAzMjcsIDExMTIxLCA0MDMzMSwgNDAzMzUsIDQwMzM5LCA1MjUsIDQwMzQzLCAxNjc4MywgCisgICAgNDAzNDgsIDQwMzUyLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MSwgNDAzNzgsIDI4MTg2LCA0MDM4NCwgNDAzODcsIAorICAgIDQwMzkxLCA0MDM5NiwgNDA0MDIsIDQwNDA2LCA0MDQwOSwgNDA0MTcsIDQwNDIzLCA0MDQyOCwgNDA0MzIsIDQwNDM1LCAKKyAgICA0MDQzOSwgNDA0NDUsIDQwNDQ5LCA0MDQ1MywgMzU4NCwgMzU4OSwgMzE1MzcsIDQwNDU2LCA0MDQ2MCwgNDA0NjQsIAorICAgIDQwNDY4LCA0MDQ3MiwgNDA0ODAsIDQwNDg3LCA0MDQ5MSwgMTQ0ODAsIDQwNDk4LCA0MDUwMywgNDA1MTcsIDQwNTI0LCAKKyAgICA0MDUzNSwgMzM1LCA0MDU0MCwgNDA1NDQsIDQwNTUwLCA0MDU2MiwgNDA1NjgsIDQwNTc0LCAzMTU3NCwgNDA1NzgsIAorICAgIDQwNTg0LCA0MDU5MywgNDA1OTcsIDQwNjAxLCA0MDYwNiwgNDA2MTIsIDQwNjE3LCA0MDYyMSwgNDA2MjYsIDQwNjMwLCAKKyAgICA0MDYzNCwgNDA2NDEsIDQwNjQ3LCA0MDY1MiwgNDA2NjcsIDQwNjgyLCA0MDY5NywgNDA3MTMsIDQwNzMxLCAxMTA3MSwgCisgICAgNDA3NDUsIDQwNzUyLCA0MDc1NiwgNDA3NTksIDQwNzY4LCA0MDc3MywgNDA3NzcsIDQwNzg1LCAxNzMzMywgNDA3OTMsIAorICAgIDQwNzk3LCA0MDgwNywgNDA4MTgsIDMxNTA3LCA0MDgzMSwgNDA4MzUsIDQwODQ0LCA0MDg2MiwgNDA4ODEsIDQwODg5LCAKKyAgICAxMDUyNSwgMTEyMzQsIDQwODkzLCAyNDI2MSwgNDA4OTYsIDMyNDc1LCA0MDkwMSwgMTA1MjQsIDQwOTA2LCA0MDkxMiwgCisgICAgNDA5MTcsIDQwOTIzLCA0MDkyOCwgNDA5MzQsIDQwOTM5LCA0MDk0NSwgNDA5NTAsIDQwOTU2LCA0MDk2MiwgNDA5NjgsIAorICAgIDQwOTczLCA0MDkyOSwgNDA5MzUsIDQwOTQwLCA0MDk0NiwgNDA5NTEsIDQwOTU3LCA0MDk2MywgODUwNCwgNDA4OSwgCisgICAgNDA5NzcsIDQwOTg1LCA0MDk4OSwgNDA5OTIsIDQwOTk2LCA0MTAwMSwgNDEwMDYsIDQxMDEzLCA0MTAxOSwgNDEwMjUsIAorICAgIDQxMDMwLCAxNjE3NCwgNDEwMzQsIDI4MDIyLCA0MTAzOCwgNDEwNDIsIDQxMDQ2LCA0MTA1MiwgNDEwNTYsIDMwMDc1LCAKKyAgICA0MTA2NSwgOTU0NCwgNDEwNjksIDk5MzcsIDQxMDcyLCA0MTA3OSwgNDEwODUsIDQxMDg5LCAxMzAwNCwgNDEwOTYsIAorICAgIDQxMTAyLCA0MTEwNywgNDExMTQsIDQxMTIxLCA0MTEyOCwgMzA3ODEsIDg0MTAsIDQxMTM1LCA0MTE0MiwgNDExNDksIAorICAgIDQxMTU1LCA0MTE2MCwgNDExNjcsIDQxMTc4LCA0MTE4NCwgNDExODksIDQxMTk0LCA0MTE5OSwgNDEyMDMsIDQxMjA4LCAKKyAgICA0MTIxNSwgNDA5MzAsIDQxMjE5LCA0MTIyOSwgNDEyMzgsIDQxMjQ5LCA0MTI1NSwgNDEyNjMsIDQxMjcwLCA0MTI3NSwgCisgICAgNDEyODAsIDQxMjg1LCA0MTI5MCwgNDEyOTUsIDQxMjk5LCA0MTMwMywgNDEzMTAsIDQxMzE2LCA0MTMyNCwgMjM1MywgCisgICAgMTA1MCwgMTExMzcsIDExMTQ5LCAxMTE1NCwgMTExNjAsIDQxMzMzLCAxMTE2NSwgMTExNzAsIDExMTc2LCA0MTMzOCwgCisgICAgNDEzNDgsIDQxMzUyLCAxMTE4MSwgNDEzNTcsIDE4NDUzLCA0MTM2MCwgNDEzNjUsIDQxMzY5LCAzNzQ2MywgNDEzODAsIAorICAgIDQxMzg1LCA0MTM5MiwgNDEzOTksIDQxNDAzLCA0MTQwNiwgNDE0MTQsIDExMDg0LCA0MTQyMSwgNDE0MjQsIDQxNDMwLCAKKyAgICA0MTQ0MCwgNjIzMSwgNDE0NDksIDQxNDU1LCA0MTQ1OSwgNDE0NjcsIDQxNDcxLCA0MTQ4MSwgNDE0ODcsIDQxNDkyLCAKKyAgICA0MTUwMywgNDE1MTIsIDQxNTIxLCA0MTUzMCwgNDE1MzksIDQxNTQ4LCA0MTU1NywgNDE1NjYsIDQxNTcyLCA0MTU3OCwgCisgICAgNDE1ODMsIDQxNTg5LCA0MTU5NSwgNDE2MDEsIDQxNjA2LCA0MTYwOSwgNDE2MTYsIDQxNjIyLCA0MTYyNiwgNDE2MzEsIAorICAgIDQxNjM4LCA0MTY0NSwgNDE2NDksIDQxNjUyLCA0MTY2MiwgNDE2NzUsIDQxNjg0LCA0MTY5MywgNDE3MDQsIDQxNzE3LCAKKyAgICA0MTcyOSwgNDE3NDAsIDQxNzQ5LCA0MTc2MCwgNDE3NjUsIDQxNzc0LCA0MTc3OSwgMTExODYsIDQxNzg1LCA0MTc5MiwgCisgICAgNDE4MDAsIDQxODA1LCA0MTgwOSwgNDE4MTYsIDQxODIzLCA0MDQxLCAyMCwgNDE4MjcsIDQxODMyLCAxODMwMiwgNDE4MzYsIAorICAgIDQxODM5LCA0MTg0MiwgMzAyNTUsIDQxODQ2LCAzMDc5MCwgNDE4NTQsIDQxODU4LCA0MTg2MiwgNDE4NjUsIDQxODcxLCAKKyAgICA0MTg3NywgMzM1MjcsIDQxODgyLCA0MTg5MCwgNDE4OTYsIDQxOTAzLCAzMDIzOCwgNDE5MDcsIDMwNDQxLCA0MTkxMSwgCisgICAgNDE5MjAsIDQxOTI0LCA0MTkzMiwgNDE5MzgsIDQxOTQ0LCA0MTk0OSwgNDE5NTMsIDMwODA5LCA0MTk1OSwgNDE5NjIsIAorICAgIDQxOTcwLCA0MTk3OCwgNDM3OSwgNDE5ODQsIDQxOTg4LCA0MTk5MywgNDIwMDAsIDQyMDA2LCA0MjAxMSwgNDIwMTYsIAorICAgIDQyMDIwLCA0MjAyNiwgNDIwMzEsIDQyMDM3LCA0Mjk3LCA5NDQsIDQyMDQ0LCA0MjA0OCwgNDIwNTEsIDE2NjY0LCA0MjA2MywgCisgICAgNDIwNzEsIDQyMDc5LCA0MjA4NywgNDIwOTUsIDQyMTAyLCA0MjExMCwgNDIxMTgsIDQyMTI1LCA0MjEzMywgNDIxNDEsIAorICAgIDQyMTQ5LCA0MjE1NywgNDIxNjUsIDQyMTczLCA0MjE4MSwgNDIxODksIDQyMTk3LCA0MjIwNSwgNDIyMTMsIDQyMjIwLCAKKyAgICA0MjIyOCwgNDIyMzYsIDQyMjQ0LCA0MjI1MiwgNDIyNjAsIDQyMjY4LCA0MjI3NiwgNDIyODQsIDQyMjkyLCA0MjMwMCwgCisgICAgNDIzMDgsIDQyMzE2LCA0MjMyNCwgNDIzMzIsIDQyMzQwLCA0MjM0OCwgNDIzNTYsIDQyMzY0LCA0MjM3MiwgNDIzNzksIAorICAgIDQyMzg3LCA0MjM5NCwgNDI0MDIsIDQyNDEwLCA0MjQxOCwgNDI0MjYsIDQyNDM0LCA0MjQ0MiwgNDI0NTAsIDQyNDU4LCAKKyAgICA0MjQ2OSwgMjM3NjQsIDQyNDc0LCA0MjQ3NywgNDI0ODQsIDQyNDg4LCA0MjQ5NCwgNDI0OTgsIDQyNTA0LCA0MjUwOSwgCisgICAgNDI1MTUsIDQyNTIwLCA0MjUyNSwgNDI1MjksIDQyNTMzLCA0MjUzOCwgNDI1NDMsIDQyNTUzLCA0MjU1OSwgNDI1NzIsIAorICAgIDQyNTc4LCA0MjU4NCwgNDI1OTAsIDQyNTk3LCA0MjYwMiwgNDI2MDgsIDQyNjEzLCAxODE5OCwgMTQ1OCwgODMxLCA0MjYxOCwgCisgICAgNDI2MjEsIDQyNjI0LCA0MjYyNywgMzM2MTEsIDMzNjE3LCA0MjYzMCwgMzM2MjMsIDMzNjM2LCAzMzY0MiwgMzM2NDgsIAorICAgIDQyNjM2LCAzMzY1NCwgMzM2NjAsIDQyNjQyLCA0MjY0OCwgMjYsIDQyNjU2LCA0MjY2MywgNDI2NjcsIDQyNjcxLCA0MjY3OSwgCisgICAgMzQ0MDEsIDQyNjgzLCA0MjY4NywgNDI2OTQsIDQyNjk5LCA0MjcwMywgNDI3MDgsIDQyNzE0LCA0MjcxOSwgNDI3MjUsIAorICAgIDQyNzMwLCA0MjczNCwgNDI3MzgsIDQyNzQyLCA0Mjc0NywgNDI3NTEsIDQyNzU2LCA0Mjc2MCwgNDI3NjQsIDQyNzcxLCAKKyAgICA0Mjc3NiwgNDI3ODAsIDQyNzg0LCA0Mjc4OSwgNDI3OTMsIDQyNzk4LCA0MjgwMiwgNDI4MDYsIDQyODExLCA0MjgxNywgCisgICAgMTY5MjQsIDE2OTI5LCA0MjgyMiwgNDI4MjYsIDQyODI5LCA0MjgzMywgNDI4MzcsIDIyODUyLCA0Mjg0MiwgNDI4NDYsIAorICAgIDQyODUyLCA0Mjg1OSwgNDI4NjUsIDQyODcwLCA0Mjg4MCwgNDI4ODUsIDQyODkzLCA0Mjg5NywgNDI5MDAsIDM0NDE2LCAKKyAgICA0MjkwNCwgNDM1NiwgNDI5MDksIDQyOTE0LCA0MjkxOCwgNDI5MjMsIDQyOTI3LCA0MjkzMiwgMTQ1NDgsIDQyOTQzLCAKKyAgICA0Mjk0NywgNDI5NTAsIDQyOTU0LCA0Mjk1OSwgNDI5NjMsIDQyOTY4LCA0Mjk3MywgNDI5NzcsIDQyOTgxLCA0Mjk4NSwgCisgICAgNDI5ODgsIDQyOTkyLCA4NTIzLCAxNDU2NCwgNDI5OTUsIDQyOTk4LCA0MzAwNCwgNDMwMDksIDQzMDE1LCA0MzAyMCwgCisgICAgNDMwMjYsIDQzMDMxLCA0MzAzNywgNDMwNDIsIDQzMDQ4LCA0MzA1NCwgNDMwNjAsIDQzMDY1LCA0MzA2OSwgNDMwNzMsIAorICAgIDQzMDgyLCA0MzA5OCwgNDMxMTQsIDQzMTI0LCAzMDE0NSwgNDMxMzEsIDQzMTM1LCA0MzE0MCwgNDMxNDUsIDQzMTQ5LCAKKyAgICA0MzE1MywgMzg5NTEsIDQzMTU5LCA0MzE2NCwgNDMxNjgsIDQzMTc1LCA0MzE4MCwgNDMxODUsIDQzMTg5LCA0MzE5MywgCisgICAgNDMxOTksIDI5MDkzLCA0MzIwMywgMjMxMzYsIDQzMjA4LCA0MzIxNSwgNDMyMjMsIDQzMjI5LCA0MzIzNiwgNDMyNDQsIAorICAgIDQzMjUwLCA0MzI1NCwgNDMyNTksIDQzMjY1LCA0MzI3MywgNDMyNzgsIDQzMjgyLCA0MzI5MSwgMTAyMzIsIDQzMjk5LCAKKyAgICA0MzMwMywgNDMzMTEsIDQzMzE4LCA0MzMyMywgNDMzMjgsIDQzMzMzLCA0MzMzNywgNDMzNDAsIDQzMzQ0LCA0MzM0NywgCisgICAgNDMzNTEsIDQzMzU4LCA0MzM2MywgNDMzNjcsIDQzMzczLCAyODQ5MiwgMzM2NzQsIDQzMzc3LCA0MzM4NiwgNDMzOTQsIAorICAgIDQzNDAwLCA0MzQwNywgNDM0MTMsIDQzNDE5LCA0MzQyNCwgNDM0MjcsIDQzNDI5LCA0MzQzNiwgNDM0NDMsIDQzNDQ5LCAKKyAgICA0MzQ1MywgNDM0NTYsIDQzNDYwLCA0MzQ2NCwgNDM0NjgsIDQzNDczLCA0MzQ3NywgNDM0ODEsIDQzNDg0LCA0MzQ4OCwgCisgICAgNDM1MDIsIDI0OTA2LCA0MzUyMSwgNDM1MzQsIDQzNTQ3LCA0MzU2MCwgMjQ5MjQsIDQzNTc1LCAxMTQyMiwgNDM1OTAsIAorICAgIDQzNTk2LCA0MzYwMCwgNDM2MDQsIDQzNjA4LCA0MzYxMiwgNDM2MTksIDQzNjI0LCA0MzYyOCwgNDM2MzUsIDQzNjQxLCAKKyAgICA0MzY0NiwgNDM2NTIsIDQzNjYyLCA0MzY3NCwgNDM2ODUsIDQzNjkwLCA0MzY5NywgNDM3MDEsIDQzNzA1LCA0MzcwOCwgCisgICAgMTczNDMsIDM4NTUsIDQzNzE2LCAxNjk1MSwgNDM3MjksIDQzNzM2LCA0Mzc0MywgNDM3NDcsIDQzNzUxLCA0Mzc1NiwgCisgICAgNDM3NjIsIDQzNzY3LCA0Mzc3MywgNDM3NzcsIDQzNzgxLCA0Mzc4NCwgNDM3ODksIDQzNzkzLCA0Mzc5OCwgODA4MiwgCisgICAgMTY5NjIsIDQzODAzLCA0MzgwNywgNDM4MTMsIDQzODIyLCA0MzgyNywgNDM4MzYsIDQzODQzLCAzODc5OSwgNDM4NDksIAorICAgIDQzODU0LCA0Mzg1OCwgNDM4NjMsIDQzODcwLCA0Mzg3NiwgNDM4ODAsIDQzODgzLCA0Mzg4NywgNDM4OTIsIDE1ODY0LCAKKyAgICA0Mzg5OSwgNDM5MDYsIDQzOTEwLCA0MzkxMywgNDM5MTgsIDQzOTIzLCA0MzkyOSwgNDM5MzQsIDQzOTM5LCA0Mzk0MywgCisgICAgNDM5NDgsIDQzOTU4LCA0Mzk2MywgNDM5NjksIDQzOTc0LCA0Mzk4MCwgNDM5ODUsIDQzOTkxLCA0NDAwMSwgNDQwMDYsIAorICAgIDQ0MDExLCA0NDAxNSwgNDQwMjAsIDc1NTgsIDc1NzAsIDQ0MDI1LCA0NDAyOCwgNDQwMzUsIDQ0MDQxLCA0NDA1MCwgOTQ3NywgCisgICAgMzY3NjAsIDQ0MDU4LCA0NDA2MiwgNDQwNjYsIDM0NDY0LCA0NDA3NCwgNDQwODUsIDQ0MDkzLCAzODk5OSwgNDQxMDAsIAorICAgIDQ0MTA1LCA0NDExMCwgNDQxMjEsIDQ0MTI4LCA0NDEzOSwgMzQ0ODgsIDIzMTQ3LCA0NDE0NywgOTA3LCA0NDE1MiwgCisgICAgMTQ5MTMsIDQ0MTU4LCAzMDIyOSwgNDQxNjQsIDQ0MTY5LCA0NDE3OSwgNDQxODgsIDQ0MTk1LCA0NDIwMSwgNDQyMDUsIAorICAgIDQ0MjA4LCA0NDIxNSwgNDQyMjEsIDQ0MjI4LCA0NDIzNCwgNDQyNDQsIDQ0MjUyLCA0NDI1OCwgNDQyNjQsIDQ0MjY5LCAKKyAgICA0NDI3MywgNDQyODAsIDQ0Mjg1LCA0NDI5MSwgNDQyOTgsIDQ0MzA0LCA0MzQ2OSwgNDQzMDksIDQ0MzEzLCA1NTgsIAorICAgIDE1MDI5LCA0NDMxOSwgNDQzMjQsIDQ0MzI3LCA0NDMzMywgNDQzNDEsIDEzODAsIDQ0MzQ2LCA0NDM1MCwgNDQzNTUsIAorICAgIDQ0MzYwLCA0NDM2NSwgNDQzNzIsIDQ0Mzc2LCA0NDM4MSwgNDQzODcsIDQ0MzkxLCAzMzY4NCwgNDQzOTYsIDQ0NDAxLCAKKyAgICA0NDQxMCwgNDQ0MTcsIDQ0NDI3LCA0NDQzMywgMzAyNzMsIDQ0NDUwLCA0NDQ1OSwgNDQ0NjcsIDQ0NDczLCA0NDQ3OCwgCisgICAgNDQ0ODUsIDQ0NDkxLCA0NDQ5OSwgNDQ1MDgsIDQ0NTE2LCA0NDUyMCwgNDQ1MjUsIDQ0NTMzLCAzMTI1MSwgMzQ0OTcsIAorICAgIDQ0NTM5LCA0NDU1OCwgMTcyNTcsIDQ0NTcyLCA0NDU4OCwgNDQ2MDIsIDQ0NjA4LCA0NDYxMywgNDQ2MTgsIDQ0NjIzLCAKKyAgICA0NDYyOSwgMzQ1MDMsIDQ0NjM0LCA0NDYzNywgNDQ2NDQsIDQ0NjQ5LCA0NDY1MywgNDA0LCAyOTk1LCA0NDY2MCwgNDQ2NjUsIAorICAgIDQ0NjcwLCAyOTQ1MSwgNDQ0ODgsIDQ0Njc0LCA0NDY3OSwgNDQ2ODcsIDQ0NjkxLCA0NDY5NCwgNDQ2OTksIDQ0NzA1LCAKKyAgICA0NDcxMSwgNDQ3MTYsIDQ0NzIwLCAzMDMyOCwgNDQ3MjMsIDQ0NzI4LCA0NDczMiwgNDQ3MzUsIDQ0NzQwLCA0NDc0NCwgCisgICAgNDQ3NDksIDQ0NzU0LCA0NDc1OCwgNDQ3NjMsIDQ0NzY3LCA0NDc3MSwgNDQ3NzUsIDIyODQ4LCAyMjg1OSwgNDQ3ODAsIAorICAgIDQ0Nzg1LCA0NDc5MSwgNDQ3OTYsIDQ0ODAyLCAyOTA1MCwgNDQ4MDcsIDQ0ODExLCAyMjk0NSwgMTc1NDksIDQ0ODE0LCAKKyAgICA0NDgxOSwgNDQ4MjQsIDQ0ODI5LCA0NDgzNCwgNDQ4MzksIDQ0ODQ0LCA0NDg0OSwgNDc0LCA2OCwgMzM2OTcsIDMzNzAyLCAKKyAgICAzMzcwNywgMzM3MTMsIDMzNzE4LCAzMzcyMywgNDQ4NTQsIDMzNzI3LCA0NDg1OCwgNDQ4NjIsIDQ0ODY2LCAzMzczMiwgCisgICAgMzM3MzgsIDQ0ODgwLCAzMzc0OSwgMzM3NTQsIDQ0ODg4LCA0NDg5MywgMzM3NjAsIDQ0ODk4LCA0NDkwMywgNDQ5MDgsIAorICAgIDQ0OTEzLCA0NDkxOSwgNDQ5MjUsIDQ0OTMxLCAzMzc3NywgNDQ5NDQsIDQ0OTUzLCA0NDk1OSwgMzM3ODEsIDQ0OTYzLCAKKyAgICAzMzc4NiwgNDQ5NjgsIDMzNzkxLCAzMzc5NiwgNDQ5NzEsIDQ0OTc2LCA0NDk4MCwgNDQ5ODYsIDMzMzMyLCA0NDk5MywgCisgICAgMTQ3OTQsIDQ1MDAwLCA0NTAwNSwgMzM4MDEsIDQ1MDA5LCA0NTAxNCwgNDUwMTksIDQ1MDI0LCA0NTAyOCwgNDUwMzMsIAorICAgIDQ1MDM4LCA0NTA0NCwgNDUwNDksIDQ1MDU0LCA0NTA2MCwgNDUwNjYsIDQ1MDcxLCA0NTA3NSwgNDUwODAsIDQ1MDg1LCAKKyAgICA0NTA5MCwgNDUwOTQsIDQ1MDk5LCA0NTEwNCwgNDUxMDksIDQ1MTE1LCA0NTEyMSwgNDUxMjcsIDQ1MTMyLCA0NTEzNiwgCisgICAgNDUxNDEsIDQ1MTQ1LCAzMzgwNSwgMzM4MTAsIDMzODE1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCAzMzgyMCwgMzM4MjYsIAorICAgIDMzODMyLCAzMzg0NCwgNDUxNjksIDI4MDU5LCA0NTE3MywgNDUxNzgsIDQ1MTgyLCA0NTE4NywgNDUxOTQsIDQ1MTk5LCAKKyAgICA0NTIwNCwgNDUyMDksIDQ1MjEzLCA0NTIxNywgNDUyMjcsIDQ1MjMyLCA0NTIzNywgNDUyNDEsIDQ1MjQ1LCA0NTI0OCwgCisgICAgNDUyNTYsIDMzODkyLCA0NTI2MSwgMTQ2NSwgNDUyNjcsIDQ1MjcyLCA0NTI3OCwgNDUyODYsIDQ1MjkwLCA0NTI5OSwgCisgICAgNDUzMDMsIDQ1MzA3LCA0NTMxNSwgNDUzMjEsIDQ1MzI5LCA0NTM0NSwgNDUzNDksIDQ1MzUzLCA0NTM1NywgNDUzNjIsIAorICAgIDQ1MzY4LCA0NTM4MywgMzM5MjksIDE3NjQsIDEzMTk4LCA0NTM4NywgMTM1OSwgMTM3NCwgNDUzOTksIDQ1NDA3LCA0NTQxNCwgCisgICAgNDU0MTksIDQ1NDI2LCA0NTQzMSwgOTkyMiwgMTEzOSwgMjU0NCwgMTEyMTMsIDQ1NDM4LCA5ODIwLCA0NTQ0MywgNDU0NDYsIAorICAgIDQ1NDU1LCAxMjY3LCA0NTQ2MCwgNDM2MjUsIDQ1NDY3LCA0NTQ3NiwgNDU0ODEsIDQ1NDg1LCA0NTQ5MywgMjQzMTcsIAorICAgIDI1OTYsIDQ1NTAwLCAxMTY3OCwgNDU1MTAsIDQ1NTE2LCAyMzcxLCAyMzgxLCA0NTUyNSwgNDU1MzQsIDQ1NTQ0LCA0NTU1NSwgCisgICAgMzM3NiwgMzcwOTksIDQ1NTYwLCAxMTI3NywgNDAxOSwgMTgyMzYsIDEyNzIsIDQ1NTY0LCA0NTU3MiwgNDU1NzksIDQ1NTg0LCAKKyAgICA0NTU4OCwgNDU1OTIsIDI1NzkyLCA0Mzg5NCwgMTEzMDQsIDQ1NjAwLCA0NTYwOSwgNDU2MTgsIDQ1NjI2LCA0NTYzMywgCisgICAgNDU2NDQsIDQ1NjQ5LCA0NTY2MiwgNDU2NzUsIDQ1Njg3LCA0NTY5OSwgNDU3MTEsIDQ1NzIyLCA0NTczNSwgNDU3NDYsIAorICAgIDQ1NzU3LCA0NTc2NywgNDU3NzUsIDQ1NzgzLCA0NTc5NSwgNDU4MDcsIDQ1ODE4LCA0NTgyNywgNDU4MzUsIDQ1ODQyLCAKKyAgICA0NTg1NCwgNDU4NjEsIDQ1ODY3LCA0NTg3NiwgNDU4ODMsIDQ1ODk2LCA0NTkwMSwgNDU5MTEsIDQ1OTE2LCA0NTkyMiwgCisgICAgNDU5MjcsIDQxMDg2LCA0NTkzMSwgNDU5MzgsIDQ1OTQyLCA0NTk0OSwgNDU5NTcsIDQ1OTY0LCAyNTU3LCA0NTk3MSwgCisgICAgNDU5ODIsIDQ1OTkyLCA0NjAwMSwgNDYwMDksIDQ2MDE5LCA0NjAyNywgNDYwMzcsIDQ2MDQ2LCA0NjA1MSwgNDYwNTcsIAorICAgIDQ2MDYzLCAzODk5LCA0NjA3NCwgNDYwODQsIDQ2MDkzLCA0NjEwMiwgNDYxMTAsIDQ2MTIwLCA0NjEyOCwgNDYxMzcsIAorICAgIDQ2MTQyLCA0NjE0NywgNDYxNTIsIDE2OTQsIDQ3LCA0NjE2MCwgNDYxNjgsIDQ2MTc5LCA0NjE5MCwgMTc4NzUsIDQ2MjAwLCAKKyAgICA0NjIwNCwgNDYyMTEsIDQ2MjE3LCA0NjIyMiwgNDYyMjYsIDQ2MjM3LCA0NjI0NywgNDYyNTYsIDQ2MjY3LCAxODI3NSwgCisgICAgMTgyODAsIDQ2MjcyLCA0NjI4MSwgNDYyODYsIDQ2Mjk2LCA0NjMwMSwgNDYzMDksIDQ2MzE3LCA0NjMyNCwgNDYzMzAsIAorICAgIDE2NTYsIDI3NywgNDYzMzQsIDQ2MzQwLCA0NjM0NSwgNDYzNDgsIDIxNDMsIDQzNzQ4LCA0NjM1NiwgNDYzNjAsIDQ2MzYzLCAKKyAgICAxNTEwLCA0NjM2OSwgMTUyMTQsIDEyNzcsIDQ2Mzc0LCA0NjM4NywgNDY0MDEsIDI2ODIsIDQ2NDE5LCA0NjQzMSwgNDY0NDMsIAorICAgIDI2OTYsIDI3MTMsIDQ2NDU3LCA0NjQ3MCwgMjcyOCwgNDY0ODQsIDQ2NDk2LCAyNzQzLCA0NjUxMCwgMTI4MywgMTI4OSwgCisgICAgMTI5NSwgMTE1ODQsIDQ2NTE1LCA0NjUyMCwgNDY1MjUsIDQ2NTI5LCA0NjU0NCwgNDY1NTksIDQ2NTc0LCA0NjU4OSwgCisgICAgNDY2MDQsIDQ2NjE5LCA0NjYzNCwgNDY2NDksIDQ2NjY0LCA0NjY3OSwgNDY2OTQsIDQ2NzA5LCA0NjcyNCwgNDY3MzksIAorICAgIDQ2NzU0LCA0Njc2OSwgNDY3ODQsIDQ2Nzk5LCA0NjgxNCwgNDY4MjksIDQ2ODQ0LCA0Njg1OSwgNDY4NzQsIDQ2ODg5LCAKKyAgICA0NjkwNCwgNDY5MTksIDQ2OTM0LCA0Njk0OSwgNDY5NjQsIDQ2OTc5LCA0Njk5NCwgNDcwMDksIDQ3MDI0LCA0NzAzOSwgCisgICAgNDcwNTQsIDQ3MDY5LCA0NzA4NCwgNDcwOTksIDQ3MTE0LCA0NzEyOSwgNDcxNDQsIDQ3MTU5LCA0NzE3NCwgNDcxODksIAorICAgIDQ3MjA0LCA0NzIxOSwgNDcyMzQsIDQ3MjQ5LCA0NzI2NCwgNDcyNzksIDQ3Mjk0LCA0NzMwOSwgNDczMjQsIDQ3MzM5LCAKKyAgICA0NzM1NCwgNDczNjksIDQ3Mzg0LCA0NzM5OSwgNDc0MTQsIDQ3NDI5LCA0NzQ0NCwgNDc0NTksIDQ3NDc0LCA0NzQ4OSwgCisgICAgNDc1MDQsIDQ3NTE5LCA0NzUzNCwgNDc1NDksIDQ3NTY0LCA0NzU3OSwgNDc1OTQsIDQ3NjA5LCA0NzYyNCwgNDc2MzksIAorICAgIDQ3NjU0LCA0NzY2OSwgNDc2ODQsIDQ3Njk5LCA0NzcxNCwgNDc3MjksIDQ3NzQ0LCA0Nzc1OSwgNDc3NzQsIDQ3Nzg5LCAKKyAgICA0NzgwNCwgNDc4MTksIDQ3ODM0LCA0Nzg0OSwgNDc4NjQsIDQ3ODc5LCA0Nzg5NCwgNDc5MDksIDQ3OTI0LCA0NzkzOSwgCisgICAgNDc5NTQsIDQ3OTY5LCA0Nzk4NCwgNDc5OTksIDQ4MDE0LCA0ODAyOSwgNDgwNDQsIDQ4MDU5LCA0ODA3NCwgNDgwODksIAorICAgIDQ4MTA0LCA0ODExOSwgNDgxMzQsIDQ4MTQ5LCA0ODE2NCwgNDgxNzksIDQ4MTk0LCA0ODIwOSwgNDgyMjQsIDQ4MjM5LCAKKyAgICA0ODI1NCwgNDgyNjksIDQ4Mjg0LCA0ODI5OSwgNDgzMTQsIDQ4MzI5LCA0ODM0NCwgNDgzNTksIDQ4Mzc0LCA0ODM4OSwgCisgICAgNDg0MDQsIDQ4NDE5LCA0ODQzNCwgNDg0NDksIDQ4NDY0LCA0ODQ3OSwgNDg0OTQsIDQ4NTA5LCA0ODUyNCwgNDg1MzksIAorICAgIDQ4NTU0LCA0ODU2OSwgNDg1ODQsIDQ4NTk5LCA0ODYxNCwgNDg2MjksIDQ4NjQ0LCA0ODY1OSwgNDg2NzQsIDQ4Njg5LCAKKyAgICA0ODcwNCwgNDg3MTksIDQ4NzM0LCA0ODc0OSwgNDg3NjQsIDQ4Nzc5LCA0ODc5NCwgNDg4MDksIDQ4ODI0LCA0ODgzOSwgCisgICAgNDg4NTQsIDQ4ODY5LCA0ODg4NCwgNDg4OTksIDQ4OTE0LCA0ODkyOSwgNDg5NDQsIDQ4OTU5LCA0ODk3NCwgNDg5ODksIAorICAgIDQ5MDA0LCA0OTAxOSwgNDkwMzQsIDQ5MDQ5LCA0OTA2NCwgNDkwNzksIDQ5MDk0LCA0OTEwOSwgNDkxMjQsIDQ5MTM5LCAKKyAgICA0OTE1NCwgNDkxNjksIDQ5MTg0LCA0OTE5OSwgNDkyMTQsIDQ5MjI5LCA0OTI0NCwgNDkyNTksIDQ5Mjc0LCA0OTI4OSwgCisgICAgNDkzMDQsIDQ5MzE5LCA0OTMzNCwgNDkzNDksIDQ5MzY0LCA0OTM3OSwgNDkzOTQsIDQ5NDA5LCA0OTQyNCwgNDk0MzksIAorICAgIDQ5NDU0LCA0OTQ2OSwgNDk0ODQsIDQ5NDk5LCA0OTUxNCwgNDk1MjksIDQ5NTQ0LCA0OTU1OSwgNDk1NzQsIDQ5NTg5LCAKKyAgICA0OTYwNCwgNDk2MTksIDQ5NjM0LCA0OTY0OSwgNDk2NjQsIDQ5Njc5LCA0OTY5NCwgNDk3MDksIDQ5NzI0LCA0OTczOSwgCisgICAgNDk3NTQsIDQ5NzY5LCA0OTc4NCwgNDk3OTksIDQ5ODE0LCA0OTgyOSwgNDk4NDQsIDQ5ODU5LCA0OTg3NCwgNDk4ODksIAorICAgIDQ5OTA0LCA0OTkxOSwgNDk5MzQsIDQ5OTQ5LCA0OTk2NCwgNDk5NzksIDQ5OTk0LCA1MDAwOSwgNTAwMjQsIDUwMDM5LCAKKyAgICA1MDA1NCwgNTAwNjksIDUwMDg0LCA1MDA5OSwgNTAxMTQsIDUwMTI5LCA1MDE0NCwgNTAxNTksIDUwMTc0LCA1MDE4OSwgCisgICAgNTAyMDQsIDUwMjE5LCA1MDIzNCwgNTAyNDksIDUwMjY0LCA1MDI3OSwgNTAyOTQsIDUwMzA5LCA1MDMyNCwgNTAzMzksIAorICAgIDUwMzU0LCA1MDM2OSwgNTAzODQsIDUwMzk5LCA1MDQxNCwgNTA0MjksIDUwNDQ0LCA1MDQ1OSwgNTA0NzQsIDUwNDg5LCAKKyAgICA1MDUwNCwgNTA1MTksIDUwNTM0LCA1MDU0OSwgNTA1NjQsIDUwNTc5LCA1MDU5NCwgNTA2MDksIDUwNjI0LCA1MDYzOSwgCisgICAgNTA2NTQsIDUwNjY5LCA1MDY4NCwgNTA2OTksIDUwNzE0LCA1MDcyOSwgNTA3NDQsIDUwNzU5LCA1MDc3NCwgNTA3ODksIAorICAgIDUwODA0LCA1MDgxOSwgNTA4MzQsIDUwODQ5LCA1MDg2NCwgNTA4NzksIDUwODk0LCA1MDkwOSwgNTA5MjQsIDUwOTM5LCAKKyAgICA1MDk1NCwgNTA5NjksIDUwOTg0LCA1MDk5OSwgNTEwMTQsIDUxMDI5LCA1MTA0NCwgNTEwNTksIDUxMDc0LCA1MTA4OSwgCisgICAgNTExMDQsIDUxMTE5LCA1MTEzNCwgNTExNDksIDUxMTY0LCA1MTE3OSwgNTExOTQsIDUxMjA5LCA1MTIyNCwgNTEyMzksIAorICAgIDUxMjU0LCA1MTI2OSwgNTEyODQsIDUxMjk5LCA1MTMxNCwgNTEzMjksIDUxMzQ0LCA1MTM1OSwgNTEzNzQsIDUxMzg5LCAKKyAgICA1MTQwNCwgNTE0MTksIDUxNDM0LCA1MTQ0OSwgNTE0NjQsIDUxNDc5LCA1MTQ5NCwgNTE1MDksIDUxNTI0LCA1MTUzOSwgCisgICAgNTE1NTQsIDUxNTY5LCA1MTU4NCwgNTE1OTksIDUxNjE0LCA1MTYyOSwgNTE2NDQsIDUxNjU5LCA1MTY3NCwgNTE2ODksIAorICAgIDUxNzA0LCA1MTcxOSwgNTE3MzQsIDUxNzQ5LCA1MTc2NCwgNTE3NzksIDUxNzk0LCA1MTgwOSwgNTE4MjQsIDUxODM5LCAKKyAgICA1MTg1NCwgNTE4NjksIDUxODg0LCA1MTg5OSwgNTE5MTQsIDUxOTI5LCA1MTk0NCwgNTE5NTksIDUxOTc0LCA1MTk4OSwgCisgICAgNTIwMDQsIDUyMDE5LCA1MjAzNCwgNTIwNDksIDUyMDY0LCA1MjA3OSwgNTIwOTQsIDUyMTA5LCA1MjEyNCwgNTIxMzksIAorICAgIDUyMTU0LCA1MjE2OSwgNTIxODQsIDUyMTk5LCA1MjIxNCwgNTIyMjksIDUyMjQ0LCA1MjI1OSwgNTIyNzQsIDUyMjg5LCAKKyAgICA1MjMwNCwgNTIzMTksIDUyMzM0LCA1MjM0OSwgNTIzNjQsIDUyMzc5LCA1MjM5NCwgNTI0MDksIDUyNDI0LCA1MjQzOSwgCisgICAgNTI0NTQsIDUyNDY5LCA1MjQ4NCwgNTI0OTksIDUyNTE0LCA1MjUyOSwgNTI1NDQsIDUyNTU5LCA1MjU3NCwgNTI1ODksIAorICAgIDUyNjA0LCA1MjYxOSwgNTI2MzQsIDUyNjQ5LCA1MjY2NCwgNTI2NzksIDUyNjk0LCA1MjcwOSwgNTI3MjQsIDUyNzM5LCAKKyAgICA1Mjc1NCwgNTI3NjksIDUyNzg0LCA1Mjc5OSwgNTI4MTQsIDUyODI5LCA1Mjg0NCwgNTI4NTksIDUyODc0LCA1Mjg4OSwgCisgICAgNTI5MDQsIDUyOTE5LCA1MjkzNCwgNTI5NDksIDUyOTY0LCA1Mjk3OSwgNTI5OTQsIDUzMDA5LCA1MzAyNCwgNTMwMzksIAorICAgIDUzMDU0LCA1MzA2OSwgNTMwODQsIDUzMDk5LCA1MzExNCwgNTMxMjksIDUzMTQ0LCA1MzE1OSwgNTMxNzQsIDUzMTg5LCAKKyAgICA1MzIwNCwgNTMyMTksIDUzMjM0LCA1MzI0OSwgNTMyNjQsIDUzMjc5LCA1MzI5NCwgNTMzMDksIDUzMzI0LCA1MzMzOSwgCisgICAgNTMzNTQsIDUzMzY5LCA1MzM4NCwgNTMzOTksIDUzNDE0LCA1MzQyOSwgNTM0NDQsIDUzNDU5LCA1MzQ3NCwgNTM0ODksIAorICAgIDUzNTA0LCA1MzUxOSwgNTM1MzQsIDUzNTQ5LCA1MzU2NCwgNTM1NzksIDUzNTk0LCA1MzYwOSwgNTM2MjQsIDUzNjM5LCAKKyAgICA1MzY1NCwgNTM2NjksIDUzNjg0LCA1MzY5OSwgNTM3MTQsIDUzNzI5LCA1Mzc0NCwgNTM3NTksIDUzNzc0LCA1Mzc4OSwgCisgICAgNTM4MDQsIDUzODE5LCA1MzgzNCwgNTM4NDksIDUzODY0LCA1Mzg3OSwgNTM4OTQsIDUzOTA5LCA1MzkyNCwgNTM5MzksIAorICAgIDUzOTU0LCA1Mzk2OSwgNTM5ODQsIDUzOTk5LCA1NDAxNCwgNTQwMjksIDU0MDQ0LCA1NDA1OSwgNTQwNzQsIDU0MDg5LCAKKyAgICA1NDEwNCwgNTQxMTksIDU0MTM0LCA1NDE0OSwgNTQxNjQsIDU0MTc5LCA1NDE5NCwgNTQyMDksIDU0MjI0LCA1NDIzOSwgCisgICAgNTQyNTQsIDU0MjY5LCA1NDI4NCwgNTQyOTksIDU0MzE0LCA1NDMyOSwgNTQzNDUsIDU0MzYxLCA1NDM3NywgNTQzOTMsIAorICAgIDU0NDA5LCA1NDQyNSwgNTQ0NDEsIDU0NDU3LCA1NDQ3MywgNTQ0ODksIDU0NTA1LCA1NDUyMSwgNTQ1MzcsIDU0NTUzLCAKKyAgICA1NDU2OSwgNTQ1ODUsIDU0NjAxLCA1NDYxNywgNTQ2MzMsIDU0NjQ5LCA1NDY2NSwgNTQ2ODEsIDU0Njk3LCA1NDcxMywgCisgICAgNTQ3MjksIDU0NzQ1LCA1NDc2MSwgNTQ3NzcsIDU0NzkzLCA1NDgwOSwgNTQ4MjUsIDU0ODQxLCA1NDg1NywgNTQ4NzMsIAorICAgIDU0ODg5LCA1NDkwNSwgNTQ5MjEsIDU0OTM3LCA1NDk1MywgNTQ5NjksIDU0OTg1LCA1NTAwMSwgNTUwMTcsIDU1MDMzLCAKKyAgICA1NTA0OSwgNTUwNjUsIDU1MDgxLCA1NTA5NywgNTUxMTMsIDU1MTI5LCA1NTE0NSwgNTUxNjEsIDU1MTc3LCA1NTE5MywgCisgICAgNTUyMDksIDU1MjI1LCA1NTI0MSwgNTUyNTcsIDU1MjczLCA1NTI4OSwgNTUzMDUsIDU1MzIxLCA1NTMzNywgNTUzNTMsIAorICAgIDU1MzY5LCA1NTM4NSwgNTU0MDEsIDU1NDE3LCA1NTQzMywgNTU0NDksIDU1NDY1LCA1NTQ4MSwgNTU0OTcsIDU1NTEzLCAKKyAgICA1NTUyOSwgNTU1NDUsIDU1NTYxLCA1NTU3NywgNTU1OTMsIDU1NjA5LCA1NTYyNSwgNTU2NDEsIDU1NjU3LCA1NTY3MywgCisgICAgNTU2ODksIDU1NzA1LCA1NTcyMSwgNTU3MzcsIDU1NzUzLCA1NTc2OSwgNTU3ODUsIDU1ODAxLCA1NTgxNywgNTU4MzMsIAorICAgIDU1ODQ5LCA1NTg2NSwgNTU4ODEsIDU1ODk3LCA1NTkxMywgNTU5MjksIDU1OTQ1LCA1NTk2MSwgNTU5NzcsIDU1OTkzLCAKKyAgICA1NjAwOSwgNTYwMjUsIDU2MDQxLCA1NjA1NywgNTYwNzMsIDU2MDg5LCA1NjEwNSwgNTYxMjEsIDU2MTM3LCA1NjE1MywgCisgICAgNTYxNjksIDU2MTg1LCA1NjIwMSwgNTYyMTcsIDU2MjMzLCA1NjI0OSwgNTYyNjUsIDU2MjgxLCA1NjI5NywgNTYzMTMsIAorICAgIDU2MzI5LCA1NjM0NSwgNTYzNjEsIDU2Mzc3LCA1NjM5MywgNTY0MDksIDU2NDI1LCA1NjQ0MSwgNTY0NTcsIDU2NDczLCAKKyAgICA1NjQ4OSwgNTY1MDUsIDU2NTIxLCA1NjUzNywgNTY1NTMsIDU2NTY5LCA1NjU4NSwgNTY2MDEsIDU2NjE3LCA1NjYzMywgCisgICAgNTY2NDksIDU2NjY1LCA1NjY4MSwgNTY2OTcsIDU2NzEzLCA1NjcyOSwgNTY3NDUsIDU2NzYxLCA1Njc3NywgNTY3OTMsIAorICAgIDU2ODA5LCA1NjgyNSwgNTY4NDEsIDU2ODU3LCA1Njg3MywgNTY4ODksIDU2OTA1LCA1NjkyMSwgNTY5MzcsIDU2OTUzLCAKKyAgICA1Njk2OSwgNTY5ODUsIDU3MDAxLCA1NzAxNywgNTcwMzMsIDU3MDQ5LCA1NzA2NSwgNTcwODEsIDU3MDk3LCA1NzExMywgCisgICAgNTcxMjksIDU3MTQ1LCA1NzE2MSwgNTcxNzcsIDU3MTkzLCA1NzIwOSwgNTcyMjUsIDU3MjQxLCA1NzI1NywgNTcyNzMsIAorICAgIDU3Mjg5LCA1NzMwNSwgNTczMjEsIDU3MzM3LCA1NzM1MywgNTczNjksIDU3Mzg1LCA1NzQwMSwgNTc0MTcsIDU3NDMzLCAKKyAgICA1NzQ0OSwgNTc0NjUsIDU3NDgxLCA1NzQ5NywgNTc1MTMsIDU3NTI5LCA1NzU0NSwgNTc1NjEsIDU3NTc3LCA1NzU5MywgCisgICAgNTc2MDksIDU3NjI1LCA1NzY0MSwgNTc2NTcsIDU3NjczLCA1NzY4OSwgNTc3MDUsIDU3NzIxLCA1NzczNywgNTc3NTMsIAorICAgIDU3NzY5LCA1Nzc4NSwgNTc4MDEsIDU3ODE3LCA1NzgzMywgNTc4NDksIDU3ODY1LCA1Nzg4MSwgNTc4OTcsIDU3OTEzLCAKKyAgICA1NzkyOSwgNTc5NDUsIDU3OTYxLCA1Nzk3NywgNTc5OTMsIDU4MDA5LCA1ODAyNSwgNTgwNDEsIDU4MDU3LCA1ODA3MywgCisgICAgNTgwODksIDU4MTA1LCA1ODEyMSwgNTgxMzcsIDU4MTUzLCA1ODE2OSwgNTgxODUsIDU4MjAxLCA1ODIxNywgNTgyMzMsIAorICAgIDU4MjQ5LCA1ODI2NSwgNTgyODEsIDU4Mjk3LCA1ODMxMywgNTgzMjksIDU4MzQ1LCA1ODM2MSwgNTgzNzcsIDU4MzkzLCAKKyAgICA1ODQwOSwgNTg0MjUsIDU4NDQxLCA1ODQ1NywgNTg0NzMsIDU4NDg5LCA1ODUwNSwgNTg1MjEsIDU4NTM3LCA1ODU1MywgCisgICAgNTg1NjksIDU4NTg1LCA1ODYwMSwgNTg2MTcsIDU4NjMzLCA1ODY0OSwgNTg2NjUsIDU4NjgxLCA1ODY5NywgNTg3MTMsIAorICAgIDU4NzI5LCA1ODc0NSwgNTg3NjEsIDU4Nzc3LCA1ODc5MywgNTg4MDksIDU4ODI1LCA1ODg0MSwgNTg4NTcsIDU4ODczLCAKKyAgICA1ODg4OSwgNTg5MDUsIDU4OTIxLCA1ODkzNywgNTg5NTMsIDU4OTY5LCA1ODk4NSwgNTkwMDEsIDU5MDE3LCA1OTAzMywgCisgICAgNTkwNDksIDU5MDY1LCA1OTA4MSwgNTkwOTcsIDU5MTEzLCA1OTEyOSwgNTkxNDUsIDU5MTYxLCA1OTE3NywgNTkxOTMsIAorICAgIDU5MjA5LCA1OTIyNSwgNTkyNDEsIDU5MjU3LCA1OTI3MywgNTkyODksIDU5MzA1LCA1OTMyMSwgNTkzMzcsIDU5MzUzLCAKKyAgICA1OTM2OSwgNTkzODUsIDU5NDAxLCA1OTQxNywgNTk0MzMsIDU5NDQ5LCA1OTQ2NSwgNTk0ODEsIDU5NDk3LCA1OTUxMywgCisgICAgNTk1MjksIDU5NTQ1LCA1OTU2MSwgNTk1NzcsIDU5NTkzLCA1OTYwOSwgNTk2MjUsIDU5NjQxLCA1OTY1NywgNTk2NzMsIAorICAgIDU5Njg5LCA1OTcwNSwgNTk3MjEsIDU5NzM3LCA1OTc1MywgNTk3NjksIDU5Nzg1LCA1OTgwMSwgNTk4MTcsIDU5ODMzLCAKKyAgICA1OTg0OSwgNTk4NjUsIDU5ODgxLCA1OTg5NywgNTk5MTMsIDU5OTI5LCA1OTk0NSwgNTk5NjEsIDU5OTc3LCA1OTk5MywgCisgICAgNjAwMDksIDYwMDI1LCA2MDA0MSwgNjAwNTcsIDYwMDczLCA2MDA4OSwgNjAxMDUsIDYwMTIxLCA2MDEzNywgNjAxNTMsIAorICAgIDYwMTY5LCA2MDE4NSwgNjAyMDEsIDYwMjE3LCA2MDIzMywgNjAyNDksIDYwMjY1LCA2MDI4MSwgNjAyOTcsIDYwMzEzLCAKKyAgICA2MDMyOSwgNjAzNDUsIDYwMzYxLCA2MDM3NywgNjAzOTMsIDYwNDA5LCA2MDQyNSwgNjA0NDEsIDYwNDU3LCA2MDQ3MywgCisgICAgNjA0ODksIDYwNTA1LCA2MDUyMSwgNjA1MzcsIDYwNTUzLCA2MDU2OSwgNjA1ODUsIDYwNjAxLCA2MDYxNywgNjA2MzMsIAorICAgIDYwNjQ5LCA2MDY2NSwgNjA2ODEsIDYwNjk3LCA2MDcxMywgNjA3MjksIDYwNzQ1LCA2MDc2MSwgNjA3NzcsIDYwNzkzLCAKKyAgICA2MDgwOSwgNjA4MjUsIDYwODQxLCA2MDg1NywgNjA4NzMsIDYwODg5LCA2MDkwNSwgNjA5MjEsIDYwOTM3LCA2MDk1MywgCisgICAgNjA5NjksIDYwOTg1LCA2MTAwMSwgNjEwMTcsIDYxMDMzLCA2MTA0OSwgNjEwNjUsIDYxMDgxLCA2MTA5NywgNjExMTMsIAorICAgIDYxMTI5LCA2MTE0NSwgNjExNjEsIDYxMTc3LCA2MTE5MywgNjEyMDksIDYxMjI1LCA2MTI0MSwgNjEyNTcsIDYxMjczLCAKKyAgICA2MTI4OSwgNjEzMDUsIDYxMzIxLCA2MTMzNywgNjEzNTMsIDYxMzY5LCA2MTM4NSwgNjE0MDEsIDYxNDE3LCA2MTQzMywgCisgICAgNjE0NDksIDYxNDY1LCA2MTQ4MSwgNjE0OTcsIDYxNTEzLCA2MTUyOSwgNjE1NDUsIDYxNTYxLCA2MTU3NywgNjE1OTMsIAorICAgIDYxNjA5LCA2MTYyNSwgNjE2NDEsIDYxNjU3LCA2MTY3MywgNjE2ODksIDYxNzA1LCA2MTcyMSwgNjE3MzcsIDYxNzUzLCAKKyAgICA2MTc2OSwgNjE3ODUsIDYxODAxLCA2MTgxNywgNjE4MzMsIDYxODQ5LCA2MTg2NSwgNjE4ODEsIDYxODk3LCA2MTkxMywgCisgICAgNjE5MjksIDYxOTQ1LCA2MTk2MSwgNjE5NzcsIDYxOTkzLCA2MjAwOSwgNjIwMjUsIDYyMDQxLCA2MjA1NywgNjIwNzMsIAorICAgIDYyMDg5LCA2MjEwNSwgNjIxMjEsIDYyMTM3LCA2MjE1MywgNjIxNjksIDYyMTg1LCA2MjIwMSwgNjIyMTcsIDYyMjMzLCAKKyAgICA2MjI0OSwgNjIyNjUsIDYyMjgxLCA2MjI5NywgNjIzMTMsIDYyMzI5LCA2MjM0NSwgNjIzNjEsIDYyMzc3LCA2MjM5MywgCisgICAgNjI0MDksIDYyNDI1LCA2MjQ0MSwgNjI0NTcsIDYyNDczLCA2MjQ4OSwgNjI1MDUsIDYyNTIxLCA2MjUzNywgNjI1NTMsIAorICAgIDYyNTY5LCA2MjU4NSwgNjI2MDEsIDYyNjE3LCA2MjYzMywgNjI2NDksIDYyNjY1LCA2MjY4MSwgNjI2OTcsIDYyNzEzLCAKKyAgICA2MjcyOSwgNjI3NDUsIDYyNzYxLCA2Mjc3NywgNjI3OTMsIDYyODA5LCA2MjgyNSwgNjI4NDEsIDYyODU3LCA2Mjg3MywgCisgICAgNjI4ODksIDYyOTA1LCA2MjkyMSwgNjI5MzcsIDYyOTUzLCA2Mjk2OSwgNjI5ODUsIDYzMDAxLCA2MzAxNiwgMTgzMDcsIAorICAgIDYzMDI1LCA2MzAzMCwgNjMwMzYsIDYzMDQyLCA2MzA1MiwgNjMwNjAsIDE2MjcwLCAxNjg2OCwgMTA3MzMsIDYzMDczLCAKKyAgICAxNTE4LCAxNTIyLCA2MzA4MSwgMzk3MywgMjk1NjYsIDc1MTIsIDYzMDg3LCA2MzA5MiwgNjMwOTcsIDYzMTAyLCA2MzEwNywgCisgICAgNjMxMTMsIDYzMTE4LCA2MzEyNCwgNjMxMjksIDYzMTM1LCA2MzE0MCwgNjMxNDUsIDYzMTUwLCA2MzE1NSwgNjMxNjEsIAorICAgIDYzMTY2LCA2MzE3MSwgNjMxNzYsIDYzMTgxLCA2MzE4NiwgNjMxOTEsIDYzMTk2LCA2MzIwMiwgNjMyMDcsIDYzMjEzLCAKKyAgICA2MzIyMCwgMjYwMCwgNjMyMjUsIDYzMjMxLCA4OTEyLCA2MzIzNSwgNjMyNDAsIDYzMjQ3LCA2MzI1NSwgNjUsIDYzMjU5LCAKKyAgICA2MzI2NSwgNjMyNzAsIDYzMjc1LCA2MzI3OSwgNjMyODQsIDYzMjg4LCA2MzI5MiwgMTE2MjEsIDYzMjk2LCA2MzMwNiwgCisgICAgNjMzMTksIDYzMzMwLCA2MzM0MywgNjMzNTAsIDYzMzU2LCA2MzM2NCwgNjMzNjksIDYzMzc1LCA2MzM4MSwgNjMzODcsIAorICAgIDYzMzkyLCA2MzM5NywgNjM0MDIsIDYzNDA3LCA2MzQxMSwgNjM0MTYsIDYzNDIxLCA2MzQyNiwgNjM0MzIsIDYzNDM4LCAKKyAgICA2MzQ0NCwgNjM0NDksIDYzNDUzLCA2MzQ1OCwgNjM0NjMsIDYzNDY3LCA2MzQ3MiwgNjM0NzcsIDYzNDgyLCA2MzQ4NiwgCisgICAgMTE2MzcsIDExNjQ4LCAxMTY1MywgMTU2MSwgNjM0OTAsIDYzNDk2LCAxNTY2LCA2MzUwMSwgNjM1MDQsIDE3NzQxLCAKKyAgICA2MzUwOSwgNjM1MTUsIDYzNTIwLCAxNTk3LCA2MzUyNiwgMTYwMywgMTYwOSwgMTE2ODMsIDYzNTMxLCA2MzU0MCwgNjM1NDgsIAorICAgIDYzNTU1LCA2MzU1OSwgNjM1NjMsIDYzNTY5LCA2MzU3NCwgMzMzNjUsIDYzNTc5LCA2MzU4NiwgNjM1OTMsIDYzNTk4LCAKKyAgICA2MzYwMiwgNjM2MDYsIDYzNjE1LCAxNjE0LCAxNzg1MCwgNjM2MjAsIDYzNjI0LCAxNzg2MSwgMTE2MiwgNjM2MjgsIAorICAgIDYzNjM1LCA2MzY0MCwgNjM2NDQsIDE3ODkxLCAxNjE4LCA0MTI0MywgNjM2NDcsIDYzNjUyLCA2MzY2MiwgNjM2NzEsIAorICAgIDYzNjc2LCA2MzY4MCwgNjM2ODYsIDE2MjMsIDQzODU1LCA2MzY5MSwgNjM3MDAsIDYzNzA2LCA2MzcxMSwgNjM3MTYsIAorICAgIDExODgyLCAxMTg4OCwgNjM3MjIsIDYzNzM0LCA2Mzc1MSwgNjM3NjgsIDYzNzg1LCA2MzgwMiwgNjM4MTksIDYzODM2LCAKKyAgICA2Mzg1MywgNjM4NzAsIDYzODg3LCA2MzkwNCwgNjM5MjEsIDYzOTM4LCA2Mzk1NSwgNjM5NzIsIDYzOTg5LCA2NDAwNiwgCisgICAgNjQwMjMsIDY0MDQwLCA2NDA1NywgNjQwNzQsIDY0MDkxLCA2NDEwOCwgNjQxMjUsIDY0MTQyLCA2NDE1OSwgNjQxNzYsIAorICAgIDY0MTkzLCA2NDIxMCwgNjQyMjcsIDY0MjQ0LCA2NDI2MSwgNjQyNzgsIDY0Mjk1LCA2NDMxMiwgNjQzMjksIDY0MzQ2LCAKKyAgICA2NDM2MywgNjQzODAsIDY0Mzk3LCA2NDQxNCwgNjQ0MzEsIDY0NDQ4LCA2NDQ2NSwgNjQ0ODIsIDY0NDk5LCA2NDUxNiwgCisgICAgNjQ1MzMsIDY0NTUwLCA2NDU2NywgNjQ1NzgsIDY0NTg4LCA2NDU5MywgMTYyOCwgNjQ1OTcsIDY0NjAyLCA2NDYwOCwgCisgICAgNjQ2MTMsIDY0NjE4LCA2NDYyNSwgOTgzOSwgMTYzMywgNjQ2MzEsIDY0NjQwLCAyOTg4NywgNjQ2NDUsIDY0NjU2LCAKKyAgICAxMTg5OSwgNjQ2NjYsIDY0NjcxLCA2NDY3NywgNjQ2ODIsIDY0Njg5LCA2NDY5NSwgNjQ3MDAsIDE2MzgsIDE4MTc0LCAKKyAgICA2NDcwNSwgNjQ3MTEsIDExOTA5LCAxNjQzLCAxMTkxNCwgNjQ3MTcsIDY0NzIyLCA2NDcyOCwgNjQ3MzMsIDY0NzM4LCAKKyAgICA2NDc0MywgNjQ3NDgsIDY0NzUzLCA2NDc1OCwgNjQ3NjMsIDY0NzY4LCA2NDc3NCwgNjQ3ODAsIDY0Nzg2LCA2NDc5MSwgCisgICAgNjQ3OTUsIDY0ODAwLCA2NDgwNSwgNjQ4MDksIDY0ODE0LCA2NDgxOSwgNjQ4MjQsIDY0ODI5LCA2NDgzMywgNjQ4MzgsIAorICAgIDY0ODQ0LCA2NDg0OSwgNjQ4NTQsIDY0ODU4LCA2NDg2MywgNjQ4NjgsIDY0ODc0LCA2NDg3OSwgNjQ4ODQsIDY0ODkwLCAKKyAgICA2NDg5NiwgNjQ5MDEsIDY0OTA1LCA2NDkxMCwgNjQ5MTUsIDY0OTIwLCA2NDkyNCwgNjQ5MjksIDY0OTM0LCA2NDkzOSwgCisgICAgNjQ5NDUsIDY0OTUxLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCA2NDk2OSwgNjQ5NzQsIDY0OTc5LCAzMTM5NSwgNjQ5ODMsIAorICAgIDY0OTg4LCA2NDk5MywgNjQ5OTksIDY1MDA0LCA2NTAwOSwgNjUwMTMsIDY1MDE4LCA2NTAyMywgNjUwMjksIDY1MDM0LCAKKyAgICA2NTAzOSwgNjUwNDUsIDY1MDUxLCA2NTA1NiwgNjUwNjAsIDY1MDY1LCA2NTA3MCwgNjUwNzQsIDY1MDc5LCA2NTA4NCwgCisgICAgNjUwODksIDY1MDk1LCA2NTEwMSwgNjUxMDYsIDY1MTEwLCA2NTExNSwgNjUxMjAsIDY1MTI0LCA2NTEyOSwgNjUxMzQsIAorICAgIDY1MTM5LCA2NTE0NCwgNjUxNDgsIDY1MTUxLCA2NTE1NCwgNjUxNTksIDY1MTY0LCAzNDA1NiwgNjUxNzEsIDY1MTc5LCAKKyAgICAzNjkxLCAyOTgzNywgNjUxODUsIDY1MTkyLCA2NTE5OCwgMzgzMCwgMTIwMjAsIDY1MjA0LCA2NTIxNCwgNjUyMjksIAorICAgIDY1MjM3LCAxMjAyNSwgNjUyNDgsIDY1MjUzLCA2NTI2NCwgNjUyNzYsIDY1Mjg4LCA2NTMwMCwgMjczNCwgNjUzMTIsIAorICAgIDY1MzE3LCA2NTMyOSwgNjUzMzMsIDY1MzM5LCA2NTM0NSwgNjUzNTAsIDE2NjAsIDE3NDE4LCA2NTM1OSwgNjUzNjQsIAorICAgIDQzOTE0LCA2NTM2OCwgNjUzNzIsIDY1Mzc3LCA2NTM4MSwgMTgzMTUsIDY1Mzg2LCA2NTM4OSwgNjUzOTQsIDY1NDAyLCAKKyAgICA2NTQxMCwgMTY2NCwgMTIwNjEsIDEyMDY3LCAxNjY5LCA2NTQxOCwgNjU0MjUsIDY1NDMwLCA2NTQzOSwgNjU0NDksIAorICAgIDY1NDU2LCA2NTQ2MSwgNjU0NjYsIDE2NzQsIDY1NDczLCA2NTQ3OCwgMTg0MzUsIDY1NDgyLCA2NTQ4NywgNjU0OTQsIAorICAgIDY1NTAwLCA2NTUwNCwgNjU1MTUsIDY1NTI1LCA2NTUzMiwgMTg0NTcsIDk3MzMsIDk3NDAsIDQwMjIsIDQwMjgsIDY1NTM5LCAKKyAgICAxNjc5LCA2NTU0NCwgNjU1NTAsIDY1NTU4LCA2NTU2NSwgNjU1NzEsIDY1NTc4LCA2NTU5MCwgNjU1OTYsIDY1NjAxLCAKKyAgICA2NTYxMywgNjU2MjQsIDY1NjMzLCA2NTY0MywgMzk1MiwgNjU2NTEsIDMzMTY2LCAzMzE3NSwgMTg0OTcsIDE2ODQsIDE2ODgsIAorICAgIDY1NjY0LCA2NTY3NSwgNjU2ODAsIDE2OTgsIDY1Njg4LCA2NTY5MywgNjU2OTgsIDE4NTU2LCA2NTcxMCwgNjU3MTMsIAorICAgIDY1NzE5LCA2NTcyNSwgNjU3MzAsIDY1NzM4LCAxNzAzLCA2NTc0MywgNjU3NDgsIDY1NzU2LCA2NTc2NCwgNjU3NzEsIAorICAgIDY1NzgwLCA2NTc4OCwgNjU3OTcsIDE3MDgsIDY1ODAxLCAxNzEzLCAyMzAxNiwgNjU4MDYsIDY1ODEzLCAxODYzMCwgCisgICAgNjU4MjEsIDY1ODI3LCA2NTgzMiwgNjU4NDAsIDY1ODQ3LCA2NTg1NSwgNjU4NjUsIDY1ODc0LCA2NTg4NCwgNjU4OTMsIAorICAgIDY1OTA0LCA2NTkxNCwgNjU5MjQsIDY1OTMzLCA2NTk0MywgNjU5NTcsIDY1OTcwLCA2NTk3OSwgNjU5ODcsIDY1OTk3LCAKKyAgICA2NjAwNiwgNjYwMTgsIDY2MDI5LCA2NjA0MCwgNjYwNTAsIDE3OTQ4LCA2NjA1NSwgMTIyMTMsIDY2MDY0LCA2NjA3MCwgCisgICAgNjYwNzUsIDY2MDgyLCA2NjA4OSwgNjYwOTUsIDE3NjE3LCA2NjEwNSwgNjYxMTEsIDY2MTE2LCA2NjEyNywgNjYxMzIsIAorICAgIDY2MTQwLCAxMjIzMCwgMTIyMzUsIDY2MTQ4LCA2NjE1NCwgNjYxNTgsIDY2MTY2LCA0MDE3LCAxODY5MiwgNDQwMDcsIAorICAgIDY2MTcxLCA2NjE3NywgNjYxODIsIDY2MTkwLCA2NjE5NywgMTMxNzksIDY2MjAyLCA2NjIwOCwgMTcyNCwgNjYyMTMsIAorICAgIDY2MjE2LCAxNDM4LCA2NjIyMiwgNjYyMjcsIDY2MjMyLCA2NjIzOCwgNjYyNDMsIDY2MjQ4LCA2NjI1MywgNjYyNTgsIAorICAgIDY2MjYzLCA2NjI2OCwgMTczMywgMTMsIDY2Mjc0LCA2NjI3OCwgNjYyODMsIDY2Mjg3LCA2NjI5MSwgNjYyOTUsIDM0Mjk2LCAKKyAgICA2NjMwMCwgMjUwNzAsIDY2MzA1LCA2NjMxMCwgNjYzMTQsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzMwLCA2NjMzNCwgCisgICAgNjYzMzksIDY2MzQzLCA2NjM0OSwgMzc1MTQsIDM3NTE5LCAzNzUyNCwgNjYzNTIsIDY2MzU5LCA2NjM2NSwgNjYzNzMsIAorICAgIDQzNjc4LCA2NjM4MywgMzc1MzAsIDM0NTYwLCAzNDMxMSwgMzQzMTcsIDM3NTQ2LCAzNDMyMywgNjYzODgsIDY2MzkzLCAKKyAgICAzNDU5MywgNjYzOTcsIDY2NDAwLCA2NjQwNCwgNjY0MTIsIDY2NDE5LCA2NjQyMiwgNjY0MjcsIDY2NDMyLCA2NjQzNiwgCisgICAgNjY0NDAsIDY2NDQzLCA2NjQ1MywgNjY0NjUsIDY2NDcyLCA2NjQ3OCwgMzQzMjgsIDY2NDg1LCAzNjA3OCwgNjY0ODgsIAorICAgIDg5MjksIDEwMTksIDY2NDkxLCA2NjQ5NSwgNjY1MDAsIDM4NzMsIDY2NTA0LCA2NjUwNywgMTQ4MjcsIDY2NTE0LCA2NjUyMSwgCisgICAgNjY1MzQsIDY2NTQyLCA2NjU1MSwgNjY1NjAsIDY2NTY1LCA2NjU3NSwgNjY1ODgsIDY2NjAwLCA2NjYwNywgNjY2MTIsIAorICAgIDY2NjIxLCA2NjYzNCwgMzkwMzksIDY2NjUyLCA2NjY1NywgNjY2NjQsIDY2NjcwLCA2NjY3NSwgODE5LCA2NjY4MCwgCisgICAgNjY2ODgsIDY2Njk1LCA2NjcwMiwgMjkzOTIsIDc4MywgNjY3MDgsIDY2NzE0LCA2NjcyNCwgNjY3MzIsIDY2NzM4LCAKKyAgICA2Njc0MywgMzQzNDcsIDYzMTAsIDM0MzYxLCA2Njc0NywgNjY3NTcsIDY2NzYyLCA2Njc3MiwgNjY3ODcsIDY2NzkzLCAKKyAgICA2Njc5OSwgMzQzNzEsIDY2ODA0LCAzMzQ4MiwgNjY4MDgsIDY2ODEzLCA2NjgyMCwgNjY4MjUsIDY2ODI5LCA2NjgzNCwgCisgICAgMTg1MDAsIDY2ODQxLCA2Njg0NiwgNjY4NTAsIDYzNTEsIDM0Mzk3LCA2Njg1NCwgNjY4NjAsIDMyNCwgNjY4NzAsIDY2ODc3LCAKKyAgICA2Njg4NCwgNjY4ODksIDY2ODk4LCA2MzY1NiwgNjY5MDQsIDY2OTEyLCA2NjkxNiwgNjY5MjAsIDY2OTI0LCA2NjkyOCwgCisgICAgNjY5MzMsIDY2OTM3LCA2Njk0MywgNjY5NTEsIDY2OTU2LCA2Njk2MSwgNjY5NjYsIDY2OTcwLCA2Njk3NSwgNjY5NzksIAorICAgIDY2OTgzLCA2Njk4OSwgNjY5OTUsIDY3MDAwLCA2NzAwNCwgNjcwMDksIDM0NTIxLCA2NzAxMywgMzQ1MjcsIDM0NTMzLCAKKyAgICA2NzAxOCwgNjcwMjQsIDY3MDMxLCA2NzAzNiwgNjcwNDAsIDMzNDk5LCAxODE2NywgNjcwNDMsIDY3MDQ3LCA2NzA1MiwgCisgICAgNjcwNTksIDY3MDY1LCA2NzA2OSwgNjcwNzQsIDQzMzUzLCA2NzA4MCwgNjcwODQsIDY3MDkxLCA2NzA5NSwgNjcxMDAsIAorICAgIDY3MTA2LCA2NzExMiwgNjcxMTgsIDY3MTMwLCA2NzEzOSwgNjcxNDksIDY3MTU1LCA2NzE2MiwgNjcxNjcsIDY3MTcyLCAKKyAgICA2NzE3NiwgNjcxNzksIDY3MTg1LCA2NzE5MiwgNjcxOTcsIDY3MjAyLCA2NzIwOSwgNjcyMTYsIDY3MjIzLCA2NzIyOSwgCisgICAgNjcyMzQsIDY3MjM5LCA2NzI0NywgMzQ1MzgsIDI0NjIsIDY3MjUyLCA2NzI1NywgNjcyNjMsIDY3MjY4LCA2NzI3NCwgCisgICAgNjcyNzksIDY3Mjg0LCA2NzI4OSwgNjcyOTUsIDM0NTU5LCA2NzMwMCwgNjczMDYsIDY3MzEyLCA2NzMxOCwgMzQ2MjksIAorICAgIDY3MzIzLCA2NzMyOCwgNjczMzMsIDM0NjQwLCA2NzMzOCwgNjczNDMsIDY3MzQ4LCA2NzM1NCwgNjczNjAsIDM0NjQ1LCAKKyAgICA2NzM2NSwgNjczNzAsIDY3Mzc1LCAzNDcwMCwgMzQ3MDYsIDY3MzgwLCA2NzM4NSwgMzQ3MTEsIDM0NzMzLCAzMDEzNiwgCisgICAgMzQ3MzksIDM0NzQzLCA2NzM5MCwgMTI5MDksIDY3Mzk0LCA2NzQwMiwgNjc0MDgsIDY3NDE2LCA2NzQyMywgNjc0MjksIAorICAgIDY3NDM5LCA2NzQ0NSwgNjc0NTIsIDExNTU2LCAzNDc1NywgNjc0NTgsIDY3NDcxLCA2NzQ4MCwgNjc0ODYsIDY3NDk1LCAKKyAgICA2NzUwMSwgMjUzODAsIDY3NTA4LCA2NzUxNSwgNjc1MjUsIDY3NTI4LCAzNDcwMSwgNjc1MzMsIDY3NTQwLCA2NzU0NSwgCisgICAgNjc1NDksIDY3NTUzLCA2NzU1OCwgNjc1NjIsIDQxMzMsIDY3NTY3LCA2NzU3MiwgNjc1NzcsIDM3NjA4LCAzNzYxMywgCisgICAgNjc1ODEsIDM3NjI3LCA2NzU4NiwgMzc2MzIsIDY3NTkxLCA2NzU5NywgMzc2NDQsIDM3NjUwLCAzNzY1NiwgNjc2MDIsIAorICAgIDY3NjA4LCAyNDM2NiwgNjc2MTksIDY3NjIyLCA2NzYzNCwgNjc2NDIsIDM0NzgwLCA2NzY0NiwgNjc2NTUsIDY3NjY1LCAKKyAgICA2NzY3NCwgMzQ3OTAsIDY3Njc5LCA2NzY4NiwgNjc2OTUsIDY3NzAxLCA2NzcwOSwgNjc3MTYsIDY0MDIsIDQ2NzMsIAorICAgIDY3NzIxLCAzNDcxMiwgNjc3MjcsIDY3NzMwLCA2NzczNiwgNjc3NDMsIDY3NzQ4LCA2Nzc1MywgMjUyOTAsIDY3NzU3LCAKKyAgICA2Nzc2MywgNjc3NjksIDY3Nzc0LCA2Nzc3OSwgNjc3ODMsIDY3Nzg5LCA2Nzc5NSwgMzU5ODQsIDEwNDgsIDM4Njg5LCAKKyAgICA0MDQxOSwgNDA0MjUsIDM0ODIxLCAzNDgyNiwgNjc4MDAsIDY3ODA0LCA2NzgwOCwgNjc4MTEsIDY3ODI0LCA2NzgzMCwgCisgICAgNjc4MzQsIDY3ODM3LCA2Nzg0MiwgMzYzMjEsIDY3ODQ2LCAzMzUwNCwgMjI5NjYsIDY3ODUyLCA2MzMxLCA2MzM5LCA5NTcwLCAKKyAgICA2Nzg1NSwgNjc4NjAsIDY3ODY1LCA2Nzg3MCwgNjc4NzUsIDY3ODgwLCA2Nzg4NSwgNjc4OTAsIDY3ODk1LCA2NzkwMCwgCisgICAgNjc5MDYsIDY3OTExLCA2NzkxNiwgNjc5MjIsIDY3OTI3LCA2NzkzMiwgNjc5MzcsIDY3OTQyLCA2Nzk0NywgNjc5NTIsIAorICAgIDY3OTU4LCA2Nzk2MywgNjc5NjksIDY3OTc0LCA2Nzk3OSwgNjc5ODQsIDY3OTg5LCA2Nzk5NCwgNjc5OTksIDY4MDA0LCAKKyAgICA2ODAwOSwgNjgwMTQsIDY4MDE5LCA2ODAyNSwgNjgwMzAsIDY4MDM1LCA2ODA0MCwgNjgwNDUsIDY4MDUwLCA2ODA1NSwgCisgICAgNjgwNjEsIDY4MDY2LCA2ODA3MSwgNjgwNzYsIDY4MDgxLCA2ODA4NiwgNjgwOTEsIDY4MDk2LCA2ODEwMSwgNjgxMDYsIAorICAgIDY4MTEyLCA2ODExNywgNjgxMjIsIDY4MTI3LCA2ODEzMiwgNjgxMzgsIDY4MTQ0LCA2ODE0OSwgNjgxNTUsIDY4MTYwLCAKKyAgICA2ODE2NSwgNjgxNzAsIDY4MTc1LCA2ODE4MCwgMTUxMSwgMTQ1LCA2ODE4NSwgNjgxODksIDY4MTkzLCA2ODE5NywgMjcwNzYsIAorICAgIDY4MjAxLCA2ODIwNSwgNjgyMTAsIDY4MjE0LCA2ODIxOSwgNjgyMjMsIDY4MjI4LCA2ODIzMywgNjgyMzgsIDY4MjQyLCAKKyAgICA2ODI0NiwgNjgyNTEsIDY4MjU1LCAxNDU0MiwgNjgyNjAsIDY4MjY0LCA2ODI3MSwgNjgyODEsIDE2NTk1LCA2ODI5MCwgCisgICAgNjgyOTksIDY4MzAzLCA2ODMwOCwgNjgzMTMsIDY4MzE3LCA2ODMyMSwgMjY4NzAsIDMwNzgsIDY4MzI1LCA2ODMzMSwgCisgICAgMTg5NjcsIDY4MzM1LCA2ODM0NCwgNjgzNTIsIDY4MzU4LCA2ODM2MywgNjgzNzUsIDY4Mzg3LCA2ODM5MiwgNjgzOTYsIAorICAgIDY4NDAxLCA2ODQwNSwgNjg0MTEsIDY4NDE3LCA2ODQyMiwgNjg0MzIsIDY4NDQyLCA2ODQ0OCwgNjg0NTMsIDY4NDU3LCAKKyAgICA2ODQ2MywgNjg0NjgsIDY4NDc1LCA2ODQ4MSwgNjg0ODYsIDY4NDk1LCA2ODUwNCwgNjg1MTIsIDE2OTkzLCA2ODUxNiwgCisgICAgNjg1MjUsIDY4NTMzLCA2ODU0NSwgNjg1NTYsIDY4NTY3LCA2ODU3NiwgNjg1ODAsIDY4NTg5LCA2ODU5NywgNjg2MDcsIAorICAgIDY4NjE1LCA2ODYyMiwgNjg2MjgsIDY4NjMzLCA2ODYzOSwgNjg2NDQsIDY4NjU1LCA1NCwgMzMzMDksIDY4NjYxLCAyODMzMSwgCisgICAgMjgzNDEsIDY4NjY3LCA2ODY3NSwgNjg2ODIsIDY4Njg4LCA2ODY5MiwgNjg3MDIsIDY4NzEzLCA2ODcyMSwgNjg3MzAsIAorICAgIDY4NzM1LCA2ODc0MCwgNjg3NDUsIDY4NzQ5LCA2ODc1MywgMTg5MjEsIDY4NzYxLCA2ODc2NSwgNjg3NzEsIDY4NzgxLCAKKyAgICA2ODc4OCwgNjg3OTQsIDY4ODAwLCAzNzcwNywgNjg4MDQsIDY4ODA2LCA2ODgwOSwgNjg4MTUsIDY4ODE5LCA2ODgzMCwgCisgICAgNjg4NDAsIDY4ODQ2LCA2ODg1MywgNjg4NjAsIDE0NDc5LCA2ODg2OCwgNjg4NzQsIDY4ODgzLCA2ODg5MiwgNjg4OTgsIAorICAgIDEwNjE1LCA2ODkwNCwgNjg5MTAsIDY4OTE1LCA2ODkyMCwgNjg5MjcsIDY4OTMyLCA2ODkzOSwgNjg5NDUsIDY4OTUwLCAKKyAgICA2ODk1OCwgNjg5NzEsIDY4OTgwLCA2NTkxOSwgNjU5MjksIDY4OTg5LCA2ODk5NSwgNjkwMDEsIDY5MDA4LCA2OTAxNSwgCisgICAgNjkwMjIsIDY5MDI5LCA2OTAzNiwgNjkwNDEsIDY5MDQ1LCA2OTA0OSwgNjkwNTIsIDY5MDYyLCA2OTA2NiwgNjkwNzgsIAorICAgIDY5MDg3LCA2OTA5MSwgNjkxMDIsIDY5MTA3LCA2OTExMSwgNjU5MzgsIDY5MTE3LCA2OTEyNCwgNjkxMzMsIDY5MTQxLCAKKyAgICA2OTE0OSwgNjkxNTQsIDY5MTU4LCA2OTE2MywgNjkxNjgsIDY5MTc4LCA2OTE4NiwgNjkxOTEsIDY5MTk1LCA2OTE5OSwgCisgICAgNjkyMDUsIDY5MjEzLCA2OTIyMCwgNjkyMzIsIDY5MjQwLCA2OTI1MSwgNjkyNTgsIDY5MjY0LCA2OTI3NCwgNjkyODAsIAorICAgIDY5Mjg0LCA2OTI5MSwgNjkyOTcsIDY5MzAyLCA2OTMwNiwgNjkzMTAsIDY5MzE0LCA2OTMyMywgNjkzMzIsIDY5MzQxLCAKKyAgICA2OTM0NywgNjkzNTMsIDY5MzU5LCA2OTM2NCwgNjkzNzEsIDY5Mzc3LCA2OTM4NSwgNjkzOTIsIDY5Mzk4LCAxMzYyMiwgCisgICAgNjk0MDMsIDY5NDA5LCA2OTQxMywgMTU1MjksIDY5NDE3LCA2OTQyMiwgNjk0MzIsIDY5NDQxLCA2OTQ0NywgNjk0NTMsIAorICAgIDY5NDYxLCA2OTQ2OCwgNjk0NzIsIDY5NDc2LCA2OTQ4MiwgNjk0OTAsIDY5NDk3LCA2OTUwMywgNjk1MTQsIDY5NTE4LCAKKyAgICA2OTUyMiwgNjk1MjYsIDY5NTI5LCA2OTUzNSwgNjk1NDAsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIDY5NTYyLCA2OTU3MCwgCisgICAgNjk1NzcsIDY5NTgzLCA2OTU5MCwgMjU5NjMsIDQzNDIyLCA2OTU5NSwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTQsIAorICAgIDY5NjIyLCA2OTYyOSwgNjk2MzUsIDY5NjQ0LCA2OTY1MiwgNjk2NTgsIDY5NjYzLCA2OTY2NywgNjk2NzIsIDY5Njc3LCAKKyAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5NCwgNjk3MDMsIDY5NzA3LCA2OTcxNCwgNDA1MjgsIDY5NzE4LCA2OTcyNCwgCisgICAgNjk3MjgsIDY5NzM2LCA2OTc0MiwgNjk3NDcsIDY5NzU4LCA2OTc2NiwgNjk3NzIsIDY5NzgxLCAyNDUxMywgNjk3ODksIAorICAgIDY5Nzk2LCA2OTgwMywgNjk4MTAsIDY5ODE3LCA2OTgyNCwgNDY3MDQsIDE0MzE3LCA2OTgzMSwgNjk4MzgsIDY5ODQzLCAKKyAgICAzNzc0MywgNjUyOSwgNjk4NDksIDY5ODU0LCA2OTg1OSwgNjk4NjUsIDY5ODcxLCA2OTg3NywgNjk4ODIsIDY5ODg3LCAKKyAgICA2OTg5MiwgNjk4OTcsIDY5OTAzLCA2OTkwOCwgNjk5MTQsIDY5OTE5LCA2OTkyNSwgNjk5MzAsIDY5OTM1LCA2OTk0MCwgCisgICAgNjk5NDUsIDY5OTUwLCA2OTk1NSwgNjk5NjAsIDY5OTY2LCA2OTk3MSwgNjk5NzcsIDY5OTgyLCA2OTk4NywgNjk5OTIsIAorICAgIDY5OTk3LCA3MDAwMiwgNzAwMDcsIDcwMDEzLCA3MDAxOCwgNzAwMjMsIDcwMDI4LCA3MDAzMywgNzAwMzgsIDcwMDQzLCAKKyAgICA3MDA0OCwgNzAwNTMsIDcwMDU4LCA3MDA2MywgNzAwNjksIDcwMDc0LCA3MDA3OSwgNzAwODQsIDcwMDg5LCA3MDA5NCwgCisgICAgNzAwOTksIDcwMTA0LCA3MDEwOSwgNzAxMTUsIDcwMTIwLCA3MDEyNSwgNzAxMzAsIDcwMTM1LCA3MDE0MCwgNzAxNDUsIAorICAgIDcwMTUwLCA3MDE1NSwgNzAxNjAsIDcwMTY1LCA3MDE3MCwgNzAxNzUsIDcwMTgxLCAxODU0LCAyNjAsIDcwMTg2LCA0MTM2MSwgCisgICAgNzAxOTAsIDcwMTkzLCA3MDE5OCwgNzAyMDIsIDcwMjA1LCAzNDE1LCA3MDIxMCwgNzAyMTUsIDcwMjE5LCA3MDIyOCwgCisgICAgNzAyMzksIDcwMjU2LCA3MDI3NCwgNjkxNDUsIDcwMjgyLCA3MDI4NSwgNzAyOTUsIDcwMzAyLCA3MDMxMSwgNzAzMjcsIAorICAgIDcwMzM2LCA3MDM0NiwgNzAzNTEsIDcwMzYxLCA3MDM3MCwgNzAzNzgsIDcwMzkyLCA3MDQwMCwgNzA0MDQsIDcwNDA3LCAKKyAgICA3MDQxNCwgNzA0MjAsIDcwNDMxLCA3MDQzOCwgNzA0NTAsIDcwNDYxLCA3MDQ3MiwgNzA0ODEsIDcwNDg4LCAxMjc4LCA3MTAsIAorICAgIDcwNDk4LCAyNjI5LCA3MDUwMiwgNzA1MDcsIDcwNTE2LCA5MjIxLCAxODg5NCwgMjI0NzEsIDcwNTI0LCA3MDUzMiwgCisgICAgNzA1NDYsIDcwNTU5LCA3MDU2MywgNzA1NjgsIDcwNTczLCA3MDU3OCwgNzA1ODQsIDcwNTkwLCA3MDU5NSwgODkyMSwgCisgICAgMTY2MjMsIDcwNjAwLCA3MDYwNCwgNzA2MTIsIDEyMDYyLCA3MDYxNywgNzA2MjMsIDcwNjMyLCA3MDY0MCwgMTczNiwgCisgICAgMTIwNzQsIDkwOCwgNjQ2NSwgNzA2NDQsIDcwNjQ4LCA3MDY1NywgNzA2NjcsIDI0MTksIDI5MTI3LCA3MDY3NiwgNzA2ODIsIAorICAgIDE4NDA3LCAyOTE0MiwgNzA2ODgsIDQxOTMsIDEyNDUyLCA3MDY5NCwgNzA3MDEsIDY1NjcwLCA3MDcwNSwgNzA3MDksIAorICAgIDcwNzE1LCA3MDcyMCwgNzA3MjUsIDM2MzQsIDE1NCwgMTU0MzcsIDcwNzMwLCA3MDc0MiwgNzA3NDYsIDcwNzUyLCA3MDc1NywgCisgICAgMjk5MDcsIDcwNzYxLCAxMjQ0MCwgMjc2OSwgNCwgNzA3NjYsIDcwNzc2LCA3MDc4NywgNzA3OTMsIDcwODA0LCA3MDgxMSwgCisgICAgNzA4MTcsIDcwODIzLCA3MDgzMSwgNzA4MzgsIDcwODQ0LCA3MDg1NCwgNzA4NjQsIDcwODc0LCA3MDg4MywgMjUzNjcsIAorICAgIDEyOTAsIDcwODg4LCA3MDg5MiwgNzA4OTYsIDcwOTAyLCA3MDkwNiwgMjc5MiwgMjc5OCwgODkxOCwgMjI5NCwgNzA5MTAsIAorICAgIDcwOTE0LCA3MDkyMywgNzA5MzEsIDcwOTQyLCA3MDk1MCwgNzA5NTgsIDcwOTY0LCA3MDk2OSwgNzA5ODAsIDcwOTkxLCAKKyAgICA3MDk5OSwgNzEwMDUsIDcxMDEwLCAxMDQzNCwgNzEwMjAsIDcxMDI4LCA3MTAzMiwgNzEwMzYsIDcxMDQxLCA3MTA0NSwgCisgICAgNzEwNTcsIDMwMzE0LCAxNjU0OCwgNzEwNjQsIDcxMDc0LCA3MTA4MCwgNzEwODYsIDEwNTM2LCA3MTA5NiwgNzExMDcsIAorICAgIDcxMTE4LCA3MTEyOCwgNzExMzcsIDcxMTQxLCA3MTE0OCwgMTc1MCwgOTk2LCA3MTE1OCwgNzExNjMsIDcxMTcxLCA2NTQ4MywgCisgICAgNzExNzksIDcxMTg0LCA3MTE5NSwgNzEyMDIsIDcxMjE2LCAxNTM2NiwgNDc4LCA3MTIyNiwgNzEyMzAsIDcxMjM0LCAKKyAgICA3MTI0MiwgNzEyNTEsIDcxMjU5LCA3MTI2NSwgNzEyNzksIDcxMjg2LCA3MTI5MiwgNzEzMDEsIDcxMzA4LCA3MTMxOCwgCisgICAgNzEzMjYsIDcxMzMzLCA3MTM0MSwgNzEzNDgsIDQwMjQsIDE0OSwgNzEzNTYsIDcxMzY3LCA3MTM3MSwgNzEzODMsIDcxMzg5LCAKKyAgICAxMjYzMywgMTkyLCA3MTM5NCwgOTg3MSwgNzEzOTksIDcxNDAzLCA3MTQxMCwgNzE0MTYsIDcxNDI0LCA3MTQzMSwgOTI4MCwgCisgICAgNzE0MzgsIDcxNDQ3LCA3MTQ1NSwgNDA5MywgNzE0NjgsIDQxMTAsIDcxNDcyLCAyODQyLCA1MTQsIDcxNDc3LCA3MTQ5MCwgCisgICAgNzE0OTQsIDcxNDk5LCAyODQ3LCAxODUzLCA4MDksIDcxNTAzLCA0MTE0LCA3MTUxMSwgNzE1MTcsIDcxNTIxLCA4NjYsIAorICAgIDcxNTMxLCA3MTU0MCwgNzE1NDUsIDM2NTEsIDcxNTQ5LCAxNjMwNCwgMTYzMTEsIDUwMDY2LCA3MTU1MywgNDE0NSwgNDAzNCwgCisgICAgMTQyMDAsIDcxNTYxLCA3MTU2OCwgNzE1NzMsIDI1NDMxLCA3MTU3NywgNzE1ODQsIDcxNTkwLCA3MTU5NSwgNzE2MDAsIAorICAgIDE2MzI0LCAxODYsIDcxNjA1LCA3MTYxNywgNzE2MjMsIDcxNjMxLCAyODU5LCAxNzY4LCA3MTYzOSwgNzE2NDEsIDcxNjQ2LCAKKyAgICA3MTY1MSwgNzE2NTYsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MiwgNzE2ODcsIDcxNjkyLCA3MTY5OCwgCisgICAgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MTgsIDcxNzIzLCA3MTcyOCwgNzE3MzMsIDcxNzM4LCA3MTc0NCwgNzE3NDksIAorICAgIDcxNzU0LCA3MTc1OSwgNzE3NjUsIDcxNzcwLCA3MTc3NiwgNzE3ODEsIDcxNzg2LCA3MTc5MSwgNzE3OTYsIDcxODAxLCAKKyAgICA3MTgwNiwgNzE4MTEsIDcxODE3LCA3MTgyMiwgNzE4MjgsIDcxODMzLCA3MTgzOCwgNzE4NDMsIDcxODQ4LCA3MTg1MywgCisgICAgNzE4NTgsIDcxODYzLCA3MTg2OCwgNzE4NzQsIDcxODgwLCA3MTg4NSwgNzE4OTAsIDcxODk2LCA3MTkwMSwgNzE5MDUsIAorICAgIDcxOTA5LCA3MTkxNCwgNzE5MjAsIDcxOTI0LCA3MTkzMCwgNzE5MzUsIDcxOTQwLCA3MTk0NiwgNzE5NTEsIDcxOTU1LCAKKyAgICA3MTk2MCwgNzE5NjUsIDcxOTY5LCA3MTk3MiwgNzE5NzQsIDcxOTc4LCA3MTk4MSwgNzE5ODgsIDcxOTkzLCA3MTk5NywgCisgICAgNzIwMDIsIDcyMDA2LCA3MjAxMCwgNzIwMTQsIDcyMDIzLCA3MjAyNywgMzUwMjYsIDcyMDMwLCAzNTAzMSwgNzIwMzcsIAorICAgIDcyMDQyLCAzNTAzNiwgNzIwNTEsIDcyMDYwLCAzNTA0MiwgNzIwNjUsIDM1MDQ3LCA3MjA3NCwgNzIwNzksIDEyNjc2LCAKKyAgICA3MjA4MywgNzIwODgsIDcyMDkzLCAzNTA1MiwgNzIwOTcsIDQ0OTIxLCA3MjEwMSwgNzIxMDQsIDcyMTA4LCA4NTg5LCAKKyAgICA3MjExNCwgNzIxMTcsIDcyMTIyLCA3MjEyNiwgMzg4OCwgMzUwNTcsIDcyMTI5LCA3MjEzMywgNzIxMzYsIDcyMTQxLCAKKyAgICA3MjE0NSwgNzIxNTEsIDcyMTU5LCA3MjE3MiwgNzIxODEsIDcyMTg3LCA3MjE5MiwgNzIxOTgsIDcyMjAyLCA3MjIwOCwgCisgICAgNzIyMTQsIDcyMjIyLCA3MjIyNywgNzIyMzEsIDcyMjM4LCA3MjI0NCwgNzIyNTIsIDcyMjYxLCA3MjI2OSwgMzUwNjAsIAorICAgIDcyMjc2LCA3MjI4NiwgNzIyOTksIDcyMzA0LCA3MjMwOSwgNzIzMTMsIDcyMzIyLCA3MjMyOCwgNzIzMzUsIDcyMzQ2LCAKKyAgICA3MjM1OCwgNzIzNjUsIDcyMzc0LCA3MjM4MywgNzIzOTIsIDcyMzk5LCA3MjQwNSwgNzI0MTIsIDcyNDIwLCA3MjQyNywgCisgICAgNzI0MzUsIDcyNDQ0LCA3MjQ1MiwgNzI0NTksIDcyNDY3LCA3MjQ3NiwgNzI0ODQsIDcyNDkzLCA3MjUwMywgNzI1MTIsIAorICAgIDcyNTIwLCA3MjUyNywgNzI1MzUsIDcyNTQ0LCA3MjU1MiwgNzI1NjEsIDcyNTcxLCA3MjU4MCwgNzI1ODgsIDcyNTk3LCAKKyAgICA3MjYwNywgNzI2MTYsIDcyNjI2LCA3MjYzNywgNzI2NDcsIDcyNjU2LCA3MjY2NCwgNzI2NzEsIDcyNjc5LCA3MjY4OCwgCisgICAgNzI2OTYsIDcyNzA1LCA3MjcxNSwgNzI3MjQsIDcyNzMyLCA3Mjc0MSwgNzI3NTEsIDcyNzYwLCA3Mjc3MCwgNzI3ODEsIAorICAgIDcyNzkxLCA3MjgwMCwgNzI4MDgsIDcyODE3LCA3MjgyNywgNzI4MzYsIDcyODQ2LCA3Mjg1NywgNzI4NjcsIDcyODc2LCAKKyAgICA3Mjg4NiwgNzI4OTcsIDcyOTA3LCA3MjkxOCwgNzI5MzAsIDcyOTQxLCA3Mjk1MSwgNzI5NjAsIDcyOTY4LCA3Mjk3NSwgCisgICAgNzI5ODMsIDcyOTkyLCA3MzAwMCwgNzMwMDksIDczMDE5LCA3MzAyOCwgNzMwMzYsIDczMDQ1LCA3MzA1NSwgNzMwNjQsIAorICAgIDczMDc0LCA3MzA4NSwgNzMwOTUsIDczMTA0LCA3MzExMiwgNzMxMjEsIDczMTMxLCA3MzE0MCwgNzMxNTAsIDczMTYxLCAKKyAgICA3MzE3MSwgNzMxODAsIDczMTkwLCA3MzIwMSwgNzMyMTEsIDczMjIyLCA3MzIzNCwgNzMyNDUsIDczMjU1LCA3MzI2NCwgCisgICAgNzMyNzIsIDczMjgxLCA3MzI5MSwgNzMzMDAsIDczMzEwLCA3MzMyMSwgNzMzMzEsIDczMzQwLCA3MzM1MCwgNzMzNjEsIAorICAgIDczMzcxLCA3MzM4MiwgNzMzOTQsIDczNDA1LCA3MzQxNSwgNzM0MjQsIDczNDM0LCA3MzQ0NSwgNzM0NTUsIDczNDY2LCAKKyAgICA3MzQ3OCwgNzM0ODksIDczNDk5LCA3MzUxMCwgNzM1MjIsIDczNTMzLCA3MzU0NSwgNzM1NTgsIDczNTcwLCA3MzU4MSwgCisgICAgNzM1OTEsIDczNjAwLCA3MzYwOCwgNzM2MTUsIDczNjIzLCA3MzYzMiwgNzM2NDAsIDczNjQ5LCA3MzY1OSwgNzM2NjgsIAorICAgIDczNjc2LCA3MzY4NSwgNzM2OTUsIDczNzA0LCA3MzcxNCwgNzM3MjUsIDczNzM1LCA3Mzc0NCwgNzM3NTIsIDczNzYxLCAKKyAgICA3Mzc3MSwgNzM3ODAsIDczNzkwLCA3MzgwMSwgNzM4MTEsIDczODIwLCA3MzgzMCwgNzM4NDEsIDczODUxLCA3Mzg2MiwgCisgICAgNzM4NzQsIDczODg1LCA3Mzg5NSwgNzM5MDQsIDczOTEyLCA3MzkyMSwgNzM5MzEsIDczOTQwLCA3Mzk1MCwgNzM5NjEsIAorICAgIDczOTcxLCA3Mzk4MCwgNzM5OTAsIDc0MDAxLCA3NDAxMSwgNzQwMjIsIDc0MDM0LCA3NDA0NSwgNzQwNTUsIDc0MDY0LCAKKyAgICA3NDA3NCwgNzQwODUsIDc0MDk1LCA3NDEwNiwgNzQxMTgsIDc0MTI5LCA3NDEzOSwgNzQxNTAsIDc0MTYyLCA3NDE3MywgCisgICAgNzQxODUsIDc0MTk4LCA3NDIxMCwgNzQyMjEsIDc0MjMxLCA3NDI0MCwgNzQyNDgsIDc0MjU3LCA3NDI2NywgNzQyNzYsIAorICAgIDc0Mjg2LCA3NDI5NywgNzQzMDcsIDc0MzE2LCA3NDMyNiwgNzQzMzcsIDc0MzQ3LCA3NDM1OCwgNzQzNzAsIDc0MzgxLCAKKyAgICA3NDM5MSwgNzQ0MDAsIDc0NDEwLCA3NDQyMSwgNzQ0MzEsIDc0NDQyLCA3NDQ1NCwgNzQ0NjUsIDc0NDc1LCA3NDQ4NiwgCisgICAgNzQ0OTgsIDc0NTA5LCA3NDUyMSwgNzQ1MzQsIDc0NTQ2LCA3NDU1NywgNzQ1NjcsIDc0NTc2LCA3NDU4NiwgNzQ1OTcsIAorICAgIDc0NjA3LCA3NDYxOCwgNzQ2MzAsIDc0NjQxLCA3NDY1MSwgNzQ2NjIsIDc0Njc0LCA3NDY4NSwgNzQ2OTcsIDc0NzEwLCAKKyAgICA3NDcyMiwgNzQ3MzMsIDc0NzQzLCA3NDc1NCwgNzQ3NjYsIDc0Nzc3LCA3NDc4OSwgNzQ4MDIsIDc0ODE0LCA3NDgyNSwgCisgICAgNzQ4MzcsIDc0ODUwLCA3NDg2MiwgNzQ4NzUsIDc0ODg5LCA3NDkwMiwgNzQ5MTQsIDc0OTI1LCA3NDkzNSwgNzQ5NDQsIAorICAgIDc0OTUyLCA3NDk1OSwgNzQ5NjQsIDg0MTksIDc0OTcxLCAzNTA3MCwgNzQ5NzYsIDc0OTgxLCAzNTA3NSwgNzQ5ODcsIAorICAgIDIyNTc5LCAzNTA4MCwgNzQ5OTIsIDc0OTk4LCA3NTAwNiwgNzUwMTIsIDc1MDE4LCA3NTAyNSwgNzUwMzIsIDc1MDM3LCAKKyAgICA3NTA0MSwgNzUwNDUsIDc1MDQ4LCA3NTA1MiwgNzUwNjEsIDc1MDcwLCA3NTA3OCwgNzUwODQsIDc1MDk2LCA3NTEwNywgCisgICAgNzUxMTEsIDMxNDAsIDgzOTQsIDc1MTE2LCA3NTExOSwgNzUxMjEsIDc1MTI1LCA3NTEyOSwgNzUxMzMsIDc1MTM5LCAKKyAgICA3NTE0NCwgMjc5OTAsIDc1MTQ5LCA3NTE1MywgNzUxNTYsIDc1MTYxLCA3NTE2NSwgNzUxNzIsIDc1MTc4LCA3NTE4MiwgCisgICAgNjQ4NSwgNzUxODYsIDM1MDk3LCA3NTE5MSwgNzUxOTgsIDc1MjA3LCA3NTIxNSwgNzUyMjYsIDc1MjM0LCA3NTI0MywgCisgICAgNzUyNTEsIDc1MjU4LCA3NTI2NSwgNzUyNzEsIDc1MjgyLCAzNTEwMiwgNzUyODcsIDc1Mjk4LCA3NTMxMCwgNzUzMTgsIAorICAgIDc1MzI5LCA3NTMzOCwgNzUzNDksIDc1MzU0LCA3NTM2MiwgMjU5NSwgNzUzNjcsIDM3MTY2LCA3NTM4MCwgNzUzODQsIAorICAgIDc1Mzk2LCA3NTQwNCwgNzU0MDksIDc1NDE3LCA3NTQyOCwgMTkxMTQsIDc1NDM3LCA3NTQ0MywgNzU0NTAsIDc1NDU4LCAKKyAgICA3NTQ2NCwgMzUxMTIsIDc1NDY5LCA0MTM5LCA2MzA1NiwgNzU0NzYsIDc1NDc5LCA3NTQ4NywgNzU1MDAsIDc1NTEzLCAKKyAgICA3NTUyNiwgNzU1MzksIDc1NTQ2LCA3NTU1NywgNzU1NjYsIDc1NTcxLCA0NjUyMSwgNDY1MjYsIDc1NTc1LCA3NTU3OSwgCisgICAgNzU1ODcsIDc1NTk0LCA3NTYwMywgNzU2MTEsIDc1NjE3LCA3NTYyNiwgNzU2MzQsIDc1NjQxLCA3NTY0OSwgNzU2NTMsIAorICAgIDc1NjYyLCA3NTY3MSwgNzU2ODEsIDc1Njk0LCA3NTcwNywgNzU3MTcsIDM1MTE3LCA3NTcyMywgNzU3MzAsIDc1NzM2LCAKKyAgICA3NTc0MiwgMzUxMjMsIDc1NzQ3LCA3NTc1MCwgNzU3NTQsIDc1NzYyLCA3NTc3MSwgNDYyNTksIDc1Nzc5LCA3NTc4OCwgCisgICAgNzU3OTYsIDc1ODAzLCA3NTgxMSwgNzU4MjEsIDc1ODMwLCA3NTgzOSwgMzY0MjAsIDc1ODQ4LCA3NTg1OSwgNzU4NzQsIAorICAgIDc1ODg0LCA5OTA0LCAyMzI2MywgNzU4OTMsIDc1ODk4LCA3NTkwMywgNzU5MDcsIDc1OTEyLCA3NTkxNiwgNzU5MjEsIAorICAgIDc1OTI3LCA3NTkzMiwgNzU5MzcsIDc1OTQzLCA3NTk0OCwgNzU5NTMsIDIzMjI4LCA3NTk1OCwgNzU5NjUsIDc1OTczLCAKKyAgICA3NTk4MSwgNzU5ODksIDc1OTk0LCA3NjAwMSwgNzYwMDgsIDc2MDEzLCAyMjcyLCA3NjAxNywgNzYwMjEsIDc2MDI5LCAKKyAgICA3NjAzNywgMzUxNDAsIDc2MDQzLCA3NjA0OSwgNzYwNjEsIDc2MDY3LCA3NjA3NCwgNzYwNzgsIDc2MDg1LCA3NjA5MCwgCisgICAgNzYwOTcsIDc2MTAzLCA3NjExMCwgNzYxMjEsIDc2MTMxLCA3NjE0MSwgNzYxNTMsIDc2MTU5LCA3NjE2NywgNzYxNzMsIAorICAgIDc2MTgzLCA3NjE5MywgMzUxNjcsIDc2MjAyLCA3NjIxMSwgNzYyMTcsIDc2MjI5LCA3NjI0MCwgNzYyNDcsIDc2MjUyLCAKKyAgICA3NjI1NiwgNzYyNjQsIDc2MjcwLCA3NjI3NSwgNzYyODAsIDc2Mjg3LCA3NjI5NSwgNzYzMDcsIDc2MzE3LCA3NjMyNiwgCisgICAgNzYzMzUsIDc2MzQyLCAzNzAxOSwgMjU3NjQsIDc2MzQ4LCA3NjM1MywgNzYzNTcsIDc2MzYxLCA3NjM2NiwgNzYzNzQsIAorICAgIDc2MzgwLCA3NjM5MSwgNzY0MDQsIDc2NDA5LCA3NjQxNiwgMzUxNzIsIDc2NDIxLCA3NjQzMywgNzY0NDIsIDc2NDUwLCAKKyAgICA3NjQ2MCwgNzY0NzEsIDc2NDg0LCA3NjQ5MSwgNzY1MDAsIDc2NTA5LCA3NjUxNywgNzY1MjIsIDc2NTI4LCAxNTAwLCAKKyAgICA3NjUzMywgNzY1MzgsIDc2NTQzLCA3NjU0OCwgNzY1NTQsIDc2NTU5LCA3NjU2NCwgNzY1NzAsIDc2NTc2LCA3NjU4MSwgCisgICAgNzY1ODUsIDc2NTkwLCA3NjU5NSwgNzY2MDAsIDYzNjExLCA3NjYwNSwgNzY2MTAsIDc2NjE1LCA3NjYyMCwgNzY2MjYsIAorICAgIDc2NjMyLCA3NjYzNywgNzY2NDEsIDc2NjQ2LCA3NjY1MSwgNzY2NTYsIDc2NjYyLCA3NjY2NywgNzY2NzMsIDc2Njc4LCAKKyAgICA3NjY4MywgNzY2ODgsIDc2NjkzLCA3NjY5NywgNzY3MDMsIDc2NzA4LCA3NjcxNywgNzY3MjIsIDc2NzI3LCA3NjczMiwgCisgICAgNzY3MzcsIDc2NzQxLCA3Njc0OCwgNzY3NTQsIDQ0MzAsIDE4NzM3LCAzMTA1LCA3Njc1OSwgNzY3NjMsIDc2NzY4LCAKKyAgICA3Njc3MiwgNzY3NzYsIDc2NzgwLCA1MDMyMSwgNzY3ODQsIDc2NzA5LCA3Njc4NiwgNzY3OTYsIDM1MTgxLCA3Njc5OSwgCisgICAgNzY4MDQsIDc2ODEzLCA3NjgxOSwgNjQ1NCwgMzUxODYsIDc2ODIzLCA3NjgyOSwgNzY4MzQsIDc2ODQwLCA3Njg0NSwgCisgICAgNzY4NDksIDc2ODU2LCA3Njg2MSwgNzY4NzEsIDc2ODgwLCA3Njg4NCwgNzY4OTAsIDc2ODk2LCA3NjkwMiwgNzY5MDYsIAorICAgIDc2OTE0LCA3NjkyMSwgNzY5MjksIDc2OTM3LCAzNTE5MSwgNzY5NDQsIDc2OTQ3LCA3Njk1NCwgNzY5NjAsIDc2OTY1LCAKKyAgICA3Njk2OSwgNzY5NzUsIDc2OTgyLCA3Njk4NywgNzY5OTEsIDc3MDAwLCA3NzAwOCwgNzcwMTQsIDc3MDE5LCAzNTE5NiwgCisgICAgNzcwMjYsIDc3MDM4LCA3NzA0NSwgNzcwNTEsIDc3MDU2LCA3NzA2MiwgNzcwNjksIDc3MDc1LCAyMjk3OSwgMjk1ODksIAorICAgIDc3MDgxLCA3NzA4NiwgNzcwOTIsIDc3MDk2LCA3NzEwOCwgNzY3NDIsIDc2NzQ5LCAyMzE2MCwgNzcxMTgsIDc3MTIzLCAKKyAgICA3NzEzMCwgNzcxMzYsIDc3MTQzLCA3NzE0OSwgNzcxNjAsIDc3MTY1LCA3NzE3MywgOTYwOSwgNzcxNzgsIDc3MTgxLCAKKyAgICA3NzE4NywgNzcxOTEsIDc3MTk1LCA3NzE5OCwgNzcyMDQsIDM0OTM0LCA0NDMxLCAxMDY3LCAxNDU5NiwgNzcyMTEsIAorICAgIDc3MjE3LCA3NzIyMywgNzcyMjksIDc3MjM1LCA3NzI0MSwgNzcyNDcsIDc3MjUzLCA3NzI1OSwgNzcyNjQsIDc3MjY5LCAKKyAgICA3NzI3NCwgNzcyNzksIDc3Mjg0LCA3NzI4OSwgNzcyOTQsIDc3Mjk5LCA3NzMwNCwgNzczMDksIDc3MzE0LCA3NzMxOSwgCisgICAgNzczMjQsIDc3MzMwLCA3NzMzNSwgNzczNDAsIDc3MzQ2LCA3NzM1MSwgNzczNTYsIDc3MzYyLCA3NzM2OCwgNzczNzQsIAorICAgIDc3MzgwLCA3NzM4NiwgNzczOTIsIDc3Mzk4LCA3NzQwNCwgNzc0MTAsIDc3NDE1LCA3NzQyMCwgNzc0MjYsIDc3NDMxLCAKKyAgICA3NzQzNiwgNzc0NDIsIDc3NDQ3LCA3NzQ1MiwgNzc0NTcsIDc3NDYyLCA3NzQ2NywgNzc0NzIsIDc3NDc3LCA3NzQ4MiwgCisgICAgNzc0ODcsIDc3NDkyLCA3NzQ5NywgNzc1MDIsIDc3NTA4LCA3NzUxMywgNzc1MTgsIDc3NTIzLCA3NzUyOSwgNzc1MzQsIAorICAgIDc3NTM5LCA3NzU0NCwgNzc1NDksIDc3NTU1LCA3NzU2MCwgNzc1NjUsIDc3NTcwLCA3NzU3NSwgNzc1ODAsIDc3NTg1LCAKKyAgICA3NzU5MCwgNzc1OTUsIDc3NjAwLCA3NzYwNSwgNzc2MTAsIDc3NjE1LCA3NzYyMCwgNzc2MjUsIDc3NjMwLCA3NzYzNSwgCisgICAgNzc2NDAsIDc3NjQ1LCA3NzY1MCwgNzc2NTYsIDc3NjYxLCA3NzY2NiwgNzc2NzEsIDc3Njc2LCA3NzY4MSwgNzc2ODYsIAorICAgIDc3NjkxLCAxODkwLCAxNjMsIDc3Njk2LCA3NzcwMCwgNzc3MDQsIDc3NzA5LCA3NzcxNywgNzc3MjEsIDc3NzI4LCA3NzczNiwgCisgICAgNzc3NDAsIDc3NzUzLCA3Nzc2MSwgNzc3NjYsIDc3NzcxLCAyODM5NCwgNzc3NzUsIDc3NzgwLCA3Nzc4NCwgNzc3ODksIAorICAgIDc3NzkzLCA3NzgwMSwgNzc4MDUsIDIyNTg3LCA3NzgxMCwgNzc4MTQsIDY2MTYyLCA3NzgxOCwgNzc4MjEsIDc3ODI5LCAKKyAgICA3NzgzNywgNzc4NDUsIDc3ODUwLCA3Nzg1NSwgNzc4NjIsIDc3ODY5LCA3Nzg3NSwgNzc4ODEsIDc3ODg2LCA3Nzg5MSwgCisgICAgNzc4OTksIDcwNTUxLCA3NzkwNiwgNjU5NDgsIDc3OTExLCA3NzkxNiwgNzc5MjAsIDc3OTI3LCA2NTk3NSwgMTI3NDMsIAorICAgIDc3OTMzLCA3NzkzOCwgNzc5NDMsIDc3OTQ3LCA3Nzk1MCwgNzc5NTYsIDc3OTYwLCA3Nzk3MCwgNzc5NzksIDc3OTgzLCAKKyAgICA3Nzk4NiwgNzc5OTAsIDc3OTk3LCA3ODAxMCwgNzgwMTYsIDc4MDI0LCA3ODAzMywgNzgwNDQsIDc4MDU1LCA3ODA2NiwgCisgICAgNzgwNzcsIDc4MDg2LCA3ODA5MiwgNzgxMDEsIDc4MTA5LCA3ODExOSwgNzgxMzIsIDc4MTQwLCA3ODE0NywgNzgxNTgsIAorICAgIDc4MTY0LCA3ODE2OSwgNzgxNzQsIDc4MTgwLCA3ODE4NiwgNzgxOTYsIDc4MjAzLCA3ODIxMywgNzgyMjIsIDc2NDIzLCAKKyAgICA3ODIzMCwgNzgyMzYsIDc4MjQ0LCA3ODI1MCwgNzgyNTcsIDc4MjY1LCA3ODI3MCwgNzgyNzMsIDc4Mjc3LCA3ODI4MSwgCisgICAgNzgyODQsIDc4MjkwLCA3ODI5NiwgNzgzMDQsIDc4MzE2LCA3ODMyOCwgNzgzMzUsIDc4MzQwLCA3ODM0NCwgNzgzNTUsIAorICAgIDc4MzYzLCA3ODM3MCwgNzgzODIsIDc4MzkwLCA3ODM5OCwgNzg0MDUsIDc4NDExLCA3ODQxNiwgNzg0MjYsIDc4NDM1LCAKKyAgICA3ODQ0MCwgNzg0NTAsIDc4NDU5LCA0NTU0OSwgNzg0NjYsIDc4NDcwLCA3ODQ3NSwgNzg0ODMsIDc4NDkwLCA3ODQ5NiwgCisgICAgNzg1MDAsIDc4NTEwLCA3ODUyMSwgNzg1MjksIDc4NTM2LCA3ODU0OCwgNzg1NjAsIDc4NTY5LCA3NTM3MCwgNzg1NzYsIAorICAgIDc4NTg2LCA3ODU5OCwgNzg2MDksIDc4NjIzLCA3ODYzMSwgNzg2NDEsIDc4NjQ4LCA3ODY1NiwgNzg2NjksIDc4NjgxLCAKKyAgICA3ODY5MCwgNzg2OTgsIDc4NzA4LCA3ODcxOSwgNzg3MzEsIDc4NzQwLCA3ODc1MCwgNzg3NjAsIDc4NzY5LCA3ODc3NiwgCisgICAgNzg3ODUsIDc4ODAwLCA3ODgwOCwgNzg4MTgsIDc4ODI3LCA3ODgzNSwgNzg4NDgsIDYzMDI2LCA3ODg2MywgNzg4NzMsIAorICAgIDc4ODgyLCA3ODg5NCwgNzg5MDQsIDc4OTE2LCA3ODkyNywgNzg5MzgsIDc4OTQ5LCA3ODk1OSwgNzg5NzAsIDc4OTc4LCAKKyAgICA3ODk4NCwgNzg5OTQsIDc5MDAyLCA3OTAwOCwgMzEyOTEsIDc5MDEzLCA3OTAxOSwgNzkwMjgsIDc5MDQwLCA3OTA0NSwgCisgICAgNzkwNTIsIDEwNDQ4LCAxOTEzNCwgNzkwNTgsIDc5MDY3LCA3OTA3MiwgNzkwNzYsIDc5MDgzLCA3OTA4OSwgNzkwOTQsIAorICAgIDc5MDk5LCA3OTEwNywgNzkxMTUsIDEzMTE5LCA3OTExOSwgNzkxMjIsIDc5MTI0LCA3OTEzMSwgNzkxMzcsIDc5MTQ4LCAKKyAgICA3OTE1MywgNzkxNTcsIDc5MTY0LCA3OTE3MCwgNzkxNzUsIDc5MTgzLCA3MTEyMCwgNzExMzAsIDc5MTg5LCA3OTE5NiwgCisgICAgNzkyMDYsIDExNTQzLCA3OTIxMywgNzkyMTgsIDMxNTA2LCA3OTIyNywgNzkyMzIsIDc5MjM5LCA3OTI0OSwgNzkyNTcsIAorICAgIDc5MjY1LCA3OTI3NCwgNzkyODAsIDc5Mjg2LCA3OTI5MywgNzkzMDAsIDc5MzA1LCA3OTMwOSwgNzkzMTcsIDY1OTkyLCAKKyAgICA3OTMyMiwgNzkzMzEsIDc5MzM5LCA3OTM0NiwgNzkzNTEsIDc5MzU1LCA3OTM2NCwgNzkzNzAsIDc5MzczLCA3OTM3NywgCisgICAgNzkzODYsIDc5Mzk2LCA3Nzc0OCwgNzk0MDUsIDc5NDA5LCA3OTQxNywgNzk0MjEsIDc5NDI3LCA3OTQzOCwgNzk0NDgsIAorICAgIDE5MTQzLCA3OTQ1OSwgNzk0NjgsIDc5NDc2LCA3OTQ4NCwgNzk0OTEsIDY2MDExLCA5MTQ3LCA3OTQ5OSwgNzk1MDMsIAorICAgIDc5NTEyLCA3OTUxOSwgNzk1MjIsIDI5NDcwLCA3OTUyNSwgNzk1MjksIDc5NTM0LCA3OTU1MSwgNzk1NjMsIDExNTAxLCAKKyAgICA3OTU3NSwgNzk1ODAsIDc5NTg1LCA3OTU5MCwgMjI2NjksIDc5NTk0LCA3OTU5OSwgNzk2MDQsIDc5NjEwLCA3OTYxNSwgCisgICAgNjEyMiwgNzk2MjAsIDIyNjczLCA3OTYyNSwgNzk2MzAsIDc5NjM2LCA3OTY0MywgNzk2NDgsIDc5NjUzLCA3OTY1OSwgCisgICAgNzk2NjUsIDc5NjcxLCA3OTY3NiwgNzk2ODIsIDc5Njg2LCA3OTcwMCwgNzk3MDgsIDc5NzE2LCA3OTcyMiwgNzk3MjcsIAorICAgIDc5NzM0LCA3OTc0NCwgNzk3NTMsIDc5NzU4LCA3OTc2MywgNzk3NjgsIDc5Nzc2LCA3OTc4MSwgNzk3ODcsIDc5NzkyLCAKKyAgICA3OTgwMSwgNjQ3MTMsIDc5ODA2LCA3OTgwOSwgNzk4MjcsIDc5ODQ2LCA3OTg1OSwgNzk4NzMsIDc5ODg5LCA3OTg5NiwgCisgICAgNzk5MDMsIDc5OTEyLCA3OTkxOSwgNzk5MjUsIDc5OTMyLCA3OTkzNywgNzk5NDMsIDc5OTQ5LCA3OTk1NywgNzk5NjMsIAorICAgIDc5OTY4LCA3OTk3MywgNzk5ODksIDExNTE0LCA4MDAwMywgODAwMTAsIDgwMDE4LCA4MDAyNCwgODAwMjgsIDgwMDMxLCAKKyAgICA4MDAzNiwgODAwNDEsIDgwMDQ4LCA4MDA1MywgODAwNjIsIDgwMDY4LCA4MDA3MywgODAwNzksIDgwMDg1LCA4MDA5NCwgCisgICAgODAxMDMsIDgwMTA4LCA4MDExMiwgODAxMjAsIDgwMTI5LCAxMjc3MiwgODAxMzgsIDgwMTQ0LCA4MDE1MiwgODAxNTgsIAorICAgIDgwMTY0LCA4MDE3MCwgODAxNzUsIDgwMTgyLCA4MDE4OCwgMTI3ODMsIDgwMTkzLCA4MDE5NiwgODAyMDEsIDM1MjIzLCAKKyAgICA4MDIxMSwgODAyMjAsIDgwMjI1LCA4MDIzMSwgODAyMzYsIDgwMjQ0LCA4MDI1MSwgODAyNjIsIDgwMjcyLCA4MDI3NywgCisgICAgODAyODUsIDcwNDc0LCA4MDI5MCwgODAyOTYsIDgwMzAxLCA4MDMwOCwgODAzMTcsIDgwMzI1LCA4MDMyOSwgODAzMzUsIAorICAgIDgwMzQxLCA4MDM0OCwgODAzNTQsIDgwMzU4LCAxODUxOCwgMzExNCwgODAzNjMsIDgwMzY3LCA4MDM3MSwgODAzNzcsIAorICAgIDgwMzg2LCA4MDM5MiwgODAzOTksIDgwNDAzLCA4MDQyNCwgODA0NDYsIDgwNDYyLCA4MDQ3OSwgODA0OTgsIDgwNTA3LCAKKyAgICA4MDUxNywgODA1MjUsIDgwNTMyLCA4MDUzOSwgODA1NDUsIDI5MzQyLCA4MDU1OSwgODA1NjMsIDgwNTY5LCA4MDU3NywgCisgICAgODA1ODksIDgwNTk1LCA4MDYwMywgODA2MTAsIDgwNjE1LCA4MDYyMCwgODA2MjQsIDgwNjMyLCA4MDYzOSwgODA2NDMsIAorICAgIDgwNjQ5LCA4MDY1NSwgODA2NjAsIDM3MzAsIDQ2NzIxLCA4MDY2NiwgODA2NzAsIDgwNjc0LCA4MDY3OCwgODA2ODMsIAorICAgIDgwNjg4LCA4MDY5MywgODA2OTksIDgwNzA1LCA4MDcxMSwgODA3MTgsIDgwNzI0LCA4MDczMSwgODA3MzcsIDgwNzQzLCAKKyAgICA4MDc0OCwgODA3NTQsIDgwNzU5LCA4MDc2MywgODA3NjgsIDgwNzcyLCA4MDc3NywgNDY3MzYsIDgwNzgxLCA4MDc4NiwgCisgICAgODA3OTQsIDgwNzk4LCA4MDgwMywgODA4MTAsIDgwODE5LCA4MDgyNSwgODA4MzQsIDgwODM4LCA4MDg0NSwgODA4NDksIAorICAgIDgwODUyLCA4MDg1OSwgODA4NjUsIDgwODc0LCA4MDg4NCwgODA4ODksIDgwODkzLCA4MDkwMSwgODA5MTAsIDgwOTE0LCAKKyAgICA4MDkyMiwgODA5MjgsIDgwOTMzLCA4MDkzOCwgODA5NDQsIDgwOTUwLCA4MDk1NSwgODA5NTksIDgwOTY1LCA4MDk3MCwgCisgICAgODA5NzQsIDgwOTc4LCA4MDk4MSwgODA5ODYsIDgwOTk0LCA4MTAwNCwgODEwMTAsIDgxMDE1LCA4MTAyNSwgNDQwMzEsIAorICAgIDgxMDMzLCA4MTA0NSwgODEwNDksIDgxMDU1LCA4MTA2NywgODEwNzgsIDgxMDg1LCA4MTA5MSwgODEwOTgsIDgxMTA1LCAKKyAgICA4MTExNywgODExMjQsIDgxMTMwLCAyMjc0NywgODExMzQsIDgxMTQyLCA4MTE0OCwgODExNTUsIDgxMTYxLCA4MTE2NywgCisgICAgODExNzMsIDgxMTc4LCA4MTE4MywgODExODgsIDgxMTk3LCA4MTIwNSwgODEyMTYsIDczNTAsIDgxMjIxLCAxNzk2NywgCisgICAgODEyMjcsIDgxMjMxLCA4MTIzNSwgODEyMzksIDgxMjQ3LCA4MTI1NiwgODEyNjAsIDgxMjY3LCA4MTI3NiwgODEyODQsIAorICAgIDgxMjk3LCA4MTMwMywgODA3NzMsIDMyMzkwLCA4MTMwOCwgODEzMTAsIDgxMzE1LCA4MTMyMCwgODEzMjUsIDgxMzMwLCAKKyAgICA4MTMzNSwgODEzNDAsIDgxMzQ1LCA4MTM1MCwgODEzNTUsIDgxMzYwLCA4MTM2NSwgODEzNzAsIDgxMzc1LCA4MTM4MCwgCisgICAgODEzODYsIDgxMzkxLCA4MTM5NiwgODE0MDEsIDgxNDA2LCA4MTQxMSwgODE0MTYsIDgxNDIxLCA4MTQyNiwgODE0MzIsIAorICAgIDgxNDM4LCA4MTQ0NCwgODE0NDksIDgxNDU0LCA4MTQ2NiwgODE0NzEsIDE4OTYsIDYzLCA4MTQ3NiwgODE0ODEsIDM1MjI5LCAKKyAgICA4MTQ4NSwgMzUyMzQsIDM1MjM5LCAzNTI0NSwgMzUyNTAsIDgxNDg5LCAzNTI1NSwgMjM3ODUsIDgxNTExLCA4MTUxNSwgCisgICAgODE1MTksIDgxNTI0LCA4MTUyOCwgMzUyNTksIDgxNTMyLCA4MTU0MCwgODE1NDcsIDM1MjY0LCA4MTU1MywgODE1NTYsIAorICAgIDgxNTYxLCA4MTU2NSwgODE1NzQsIDEwMjY2LCA4MTU4MiwgMzUyNjksIDIzNjQxLCA4MTU4NSwgODE1ODksIDgxNTk3LCAKKyAgICAxNDEyLCA4MTYwMiwgMzUyODAsIDgxNjA1LCA4MTYxMCwgMjc3NTAsIDI3NzYwLCAzODE4MiwgODE2MTUsIDgxNjIwLCAKKyAgICA4MTYyNSwgODE2MzAsIDgxNjM2LCA4MTY0MSwgODE2NTAsIDgxNjU1LCA4MTY2NCwgODE2NzIsIDgxNjc5LCA4MTY4NSwgCisgICAgODE2OTAsIDgxNjk1LCA4MTcwMCwgODE3MTAsIDgxNzE5LCA4MTcyNywgODE3MzIsIDgxNzQwLCA4MTc0NCwgODE3NTIsIAorICAgIDgxNzU2LCA4MTc2MywgODE3NzEsIDM1MDg4LCA0MTE5MiwgODE3NzgsIDgxNzg0LCA4MTc4OSwgODE3OTQsIDEzMTU0LCAKKyAgICAzMDUyOSwgODE3OTksIDgxODA0LCA4MTgxMSwgODE4MTcsIDgxODIyLCA4MTgzMCwgODE4NDAsIDgxODUwLCA4MTg1NiwgCisgICAgODE4NjEsIDgxODY3LCAxOTE2NSwgODE4NzQsIDM5MDUyLCA4MTg4NywgODE4OTIsIDgxODk4LCAzMzM4MSwgODE5MTEsIAorICAgIDgxOTE3LCA4MTkyMSwgODE5MzAsIDgxOTM5LCA4MTk0NiwgODE5NTIsIDgxOTYwLCA4MTk2OSwgODE5NzYsIDgxOTgyLCAKKyAgICA4MTk4NSwgODE5ODksIDgxOTkzLCAyNzg5MSwgODE5OTcsIDgyMDA0LCA4MjAxMCwgODIwMTgsIDgyMDIzLCA4MjAyNywgCisgICAgMjU5MTEsIDgyMDMzLCA4MjAzNiwgODIwNDQsIDgyMDUxLCA4MjA1OSwgODIwNzIsIDgyMDg2LCA4MjA5MywgODIwOTksIAorICAgIDgyMTA2LCA4MjExMiwgMzUyOTQsIDgyMTE2LCA4MjEyMywgODIxMzEsIDgyMTM5LCA4MjE0NSwgMzUyOTksIDgyMTUzLCAKKyAgICA4MjE1OSwgODIxNjQsIDgyMTc0LCA4MjE4MCwgODIxODksIDMzMTgzLCAzNzYxNCwgODIxOTcsIDgyMjAyLCA4MjIwNywgCisgICAgODIyMTEsIDgyMjE2LCA4MjIyMCwgODIyMjgsIDgyMjMzLCAxNjI5NiwgNDQwNDQsIDgyMjM3LCA4MjI0MiwgMzUzMDQsIAorICAgIDY3NTQ3LCA4MjI0NiwgODIyNTEsIDgyMjU1LCA4MjI2MiwgODIyNzEsIDgyMjc1LCA4MjI4MywgODIyODksIDgyMjk0LCAKKyAgICA4MjMwMCwgODIzMDUsIDgyMzEyLCA4MjMxOCwgODIzMjMsIDgyMzI4LCA4MjMzOSwgODIzNDgsIDgyMzYwLCA4MjM3NSwgCisgICAgMzU1NzEsIDgyMzgxLCAxODA4NiwgMzUzMDgsIDgyMzg1LCA4MjM5MiwgODIzOTgsIDI2MDI3LCA4MjQwMiwgODI0MDksIAorICAgIDgyNDE4LCA4MjQyNSwgODI0MzQsIDgyNDQwLCA4MjQ0NSwgODI0NTMsIDgyNDU5LCAzNTMxOCwgODI0NjQsIDgyNDczLCAKKyAgICA4MTA3MywgODI0ODIsIDgyNDg5LCA4MjQ5NSwgODI1MDEsIDgyNTEwLCA4MjUyMCwgODI1MjgsIDgyNTM1LCA4MjUzOSwgCisgICAgMzUzMjMsIDgyNTQyLCAzNTMyOSwgMzUzMzUsIDgyNTQ3LCA4MjU1NSwgODI1NjMsIDgyNTczLCA4MjU4MiwgODI1OTAsIAorICAgIDgyNTk3LCA4MjYwNywgMzUzNDAsIDgyNjExLCA4MjYxMywgODI2MTcsIDgyNjIyLCA4MjYyNiwgODI2MzAsIDgyNjM2LCAKKyAgICA4MjY0MSwgODI2NDUsIDgyNjU2LCA4MjY2MSwgODI2NjYsIDMxMTksIDgyNjcwLCA4MjY3NywgODI2ODEsIDgyNjkwLCAKKyAgICA4MjY5OCwgODI3MDUsIDgyNzEwLCA4MjcxNSwgNjc1OTgsIDgyNzE5LCA4MjcyMiwgODI3MjgsIDgyNzM2LCA4Mjc0MiwgCisgICAgODI3NDYsIDgyNzUxLCA4Mjc1OCwgODI3NjMsIDgyNzY4LCA4Mjc3MiwgODI3NzgsIDgyNzgzLCAzNzY0NSwgODI3ODcsIAorICAgIDgyNzkwLCA4Mjc5NSwgODI3OTksIDgyODA0LCA4MjgxMSwgODI4MTYsIDgyODIwLCA0MjU4MCwgODI4MjgsIDI3NzY5LCAKKyAgICAyNzc3OCwgODI4MzQsIDgyODQwLCA4Mjg0NiwgODI4NTEsIDgyODU1LCA4Mjg1OCwgODI4NjgsIDgyODc3LCA4Mjg4MiwgCisgICAgODI4ODgsIDgyODk1LCA4MjkwMSwgODI5MDUsIDgyOTEzLCA4MjkxOCwgMzc2NTEsIDc3OTUyLCA4MjkyMiwgODI5MzAsIAorICAgIDgyOTM2LCA4Mjk0MywgODI5NDgsIDgyOTUyLCA4Mjk1NywgNjMyNDIsIDgyOTYzLCA4Mjk2OSwgMzc2NTcsIDgyOTc0LCAKKyAgICA4Mjk3OSwgODI5ODMsIDgyOTg4LCA4Mjk5MywgODI5OTgsIDgzMDAyLCA4MzAwNywgODMwMTIsIDgzMDE4LCA4MzAyMywgCisgICAgODMwMjgsIDgzMDM0LCA4MzA0MCwgODMwNDUsIDgzMDQ5LCA4MzA1NCwgODMwNTksIDgzMDY0LCA4MzA2OCwgMjYwMjYsIAorICAgIDgzMDczLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDEsIDgzMTA1LCA4MzExMCwgODMxMTUsIDgzMTIwLCAKKyAgICA4MzEyNCwgODMxMjksIDgzMTM0LCA4MzEzOSwgODMxNDQsIDQ2OTkxLCA4MzE0OCwgMzUzNDgsIDgzMTU2LCA4MzE2MCwgCisgICAgODMxNjgsIDgzMTc2LCA4MzE4NywgODMxOTIsIDgzMTk2LCAyNDIxMSwgNzU0NzMsIDgzMjAxLCA4MzIwNywgODMyMTIsIAorICAgIDgzMjIyLCA4MzIyOSwgODMyMzQsIDgzMjQyLCA4MzI1MSwgODMyNTYsIDgzMjYwLCA4MzI2NSwgODMyNzMsIDgzMjgxLCAKKyAgICA4MzI4OCwgNzA3MzYsIDgzMjk0LCA4MzMwMiwgODMzMDksIDgzMzIwLCA4MzMyNiwgODMzMzIsIDM1MzU4LCA4MzMzNSwgCisgICAgODMzNDIsIDgzMzUwLCA4MzM1NSwgNDQyNDcsIDgzMzU5LCA4MzM2NCwgODMzNzEsIDgzMzc2LCA5NDg0LCA4MzM4MCwgCisgICAgODMzODgsIDgzMzk1LCA4MzQwMiwgODM0MTEsIDgzNDE4LCA4MzQyNCwgODM0MzgsIDYxOTQsIDgzNDQ2LCA4MzQ1MiwgCisgICAgODM0NTYsIDgzNDU5LCA4MzQ2NywgODM0NzQsIDgzNDc5LCA4MzQ5MiwgODM0OTksIDgzNTA1LCA4MzUwOSwgODM1MTQsIAorICAgIDgzNTIxLCA4MzUyNiwgNjU4NTEsIDgzNTMxLCA4MzUzNCwgODM1NDMsIDgzNTUwLCA4MzU1NiwgODM1NjAsIDgzNTYzLCAKKyAgICA4MzU3MSwgODM1ODAsIDgzNTkwLCA4MzYwMCwgODM2MDksIDgzNjIwLCA4MzYyOCwgODM2MzksIDgzNjQ0LCA4MzY0OCwgCisgICAgODM2NTMsIDgzNjU3LCAzODMxMywgODM2NjUsIDIzMDQyLCAzODMyMiwgODM2NzAsIDgzNjc1LCA4MzY4MCwgODM2ODUsIAorICAgIDgzNjkwLCA4MzY5NSwgODM3MDAsIDgzNzA0LCA4MzcwOSwgODM3MTQsIDgzNzE5LCA4MzcyNCwgODM3MjksIDgzNzM0LCAKKyAgICA4MzczOCwgODM3NDMsIDgzNzQ4LCA4Mzc1MiwgODM3NTYsIDgzNzYwLCA4Mzc2NCwgODM3NjksIDgzNzc0LCA4Mzc3OCwgCisgICAgODM3ODMsIDgzNzg3LCA4Mzc5MSwgODM3OTYsIDgzODAxLCA4MzgwNiwgODM4MTEsIDgzODE1LCA4MzgyMCwgODM4MjUsIAorICAgIDgzODI5LCA4MzgzNCwgODM4MzksIDgzODQ0LCA4Mzg0OSwgODM4NTQsIDgzODU5LCA4Mzg2NCwgODM4NjksIDgzODc0LCAKKyAgICA4Mzg3OSwgODM4ODQsIDgzODg5LCA4Mzg5NCwgODM4OTksIDgzOTA0LCA4MzkwOSwgODM5MTQsIDgzOTE5LCA4MzkyNCwgCisgICAgODM5MjksIDgzOTMzLCA4MzkzOCwgODM5NDMsIDgzOTQ4LCA4Mzk1MywgODM5NTgsIDgzOTYzLCA4Mzk2OCwgODM5NzMsIAorICAgIDgzOTc4LCA4Mzk4MywgODM5ODgsIDgzOTkyLCA4Mzk5NywgODQwMDEsIDg0MDA2LCA4NDAxMSwgODQwMTYsIDg0MDIxLCAKKyAgICA4NDAyNiwgODQwMzEsIDg0MDM2LCA4NDA0MSwgODQwNDYsIDg0MDUwLCA4NDA1NCwgODQwNTksIDg0MDY0LCA4NDA2OCwgCisgICAgODQwNzMsIDg0MDc4LCA4NDA4MiwgODQwODcsIDg0MDkyLCA4NDA5NywgODQxMDIsIDg0MTA2LCA4NDExMSwgODQxMTYsIAorICAgIDg0MTIwLCA4NDEyNSwgODQxMjksIDg0MTMzLCA4NDEzNywgODQxNDEsIDg0MTQ2LCA4NDE1MCwgODQxNTQsIDg0MTU4LCAKKyAgICA4NDE2MiwgODQxNjYsIDg0MTcwLCA4NDE3NCwgODQxNzgsIDg0MTgyLCA4NDE4NywgODQxOTIsIDg0MTk3LCA4NDIwMiwgCisgICAgODQyMDcsIDg0MjEyLCA4NDIxNywgODQyMjIsIDg0MjI3LCA4NDIzMiwgODQyMzYsIDg0MjQwLCA4NDI0NCwgODQyNDgsIAorICAgIDg0MjUyLCA4NDI1NiwgODQyNjEsIDg0MjY1LCA4NDI3MCwgODQyNzQsIDg0Mjc5LCA4NDI4NCwgODQyODgsIDg0MjkyLCAKKyAgICA4NDI5NywgODQzMDEsIDg0MzA1LCA4NDMwOSwgODQzMTMsIDg0MzE3LCA4NDMyMSwgODQzMjUsIDg0MzI5LCA4NDMzMywgCisgICAgODQzMzcsIDg0MzQxLCA4NDM0NSwgODQzNDksIDg0MzUzLCA4NDM1OCwgODQzNjMsIDg0MzY3LCA4NDM3MSwgODQzNzUsIAorICAgIDg0Mzc5LCA4NDM4MywgODQzODcsIDg0MzkyLCA4NDM5NiwgODQ0MDAsIDg0NDA0LCA4NDQwOCwgODQ0MTIsIDg0NDE2LCAKKyAgICA4NDQyMSwgODQ0MjUsIDg0NDMwLCA4NDQzNCwgODQ0MzgsIDg0NDQyLCA4NDQ0NiwgODQ0NTAsIDg0NDU0LCA4NDQ1OCwgCisgICAgODQ0NjIsIDg0NDY2LCA4NDQ3MCwgODQ0NzQsIDg0NDc5LCA4NDQ4MywgODQ0ODcsIDg0NDkxLCA4NDQ5NSwgODQ0OTksIAorICAgIDg0NTAzLCA4NDUwNywgODQ1MTEsIDg0NTE1LCA4NDUxOSwgODQ1MjMsIDg0NTI4LCA4NDUzMiwgODQ1MzYsIDg0NTQxLCAKKyAgICA4NDU0NiwgODQ1NTAsIDg0NTU0LCA4NDU1OCwgODQ1NjIsIDg0NTY2LCA4NDU3MCwgODQ1NzQsIDg0NTc4LCA4NDU4MywgCisgICAgODQ1ODcsIDg0NTkyLCA4NDU5NiwgODQ2MDEsIDg0NjA1LCA4NDYxMCwgODQ2MTQsIDg0NjIwLCA4NDYyNSwgODQ2MjksIAorICAgIDg0NjM0LCA4NDYzOCwgODQ2NDMsIDg0NjQ3LCA4NDY1MiwgODQ2NTYsIDg0NjYxLCAxNTE5LCA4NDY2NSwgMjg3MywgMTc3NCwgCisgICAgMTY5MiwgMjc3MDUsIDg0NjY5LCAyODgyLCA4NDY3MywgMTM4MSwgODQ2NzgsIDEzMjMsIDg0NjgyLCA4NDY4NiwgMjg5OSwgCisgICAgODQ2OTAsIDg0Njk3LCA4NDcwNCwgODQ3MTgsIDI5MDMsIDc0NTIsIDg0NzI3LCA4NDczNSwgODQ3NDIsIDg0NzUzLCAKKyAgICA4NDc2MiwgODQ3NjksIDg0NzgxLCA4NDc5NCwgODQ4MDcsIDg0ODE4LCA4NDgyMywgODQ4MzAsIDg0ODQyLCA4NDg0NiwgCisgICAgMjkwNywgMTI4NTAsIDg0ODU2LCA4NDg2MSwgODQ4NzAsIDg0ODgwLCA4NDg4NSwgMjkxMSwgODQ4OTMsIDg0ODk3LCAKKyAgICA4NDkwMiwgODQ5MDksIDg0OTE1LCA4NDkyMywgODQ5MzUsIDEzMjgsIDE0MjAxLCA4NDk0NSwgODQ5NDksIDg0OTU1LCAKKyAgICA4NDk2OSwgODQ5ODEsIDg0OTkzLCA4NTAwMywgODUwMTIsIDg1MDIxLCA4NTAzMCwgODUwMzgsIDg1MDQ5LCA4NTA1NywgCisgICAgNDI5MiwgODUwNjcsIDg1MDc4LCA4NTA4NywgODUwOTMsIDg1MTA4LCA4NTExNSwgODUxMjEsIDg1MTI2LCAzODQ0NywgCisgICAgODUxMzEsIDI5MzUsIDE0MjA1LCA4NTEzNSwgODUxNDIsIDk0MDksIDg1MTUxLCAyOTQwLCAzNDc5NiwgODUxNTcsIDY1NTczLCAKKyAgICA4NTE2NCwgODUxNzAsIDg1MTgxLCA4NTE4NywgODUxOTQsIDg1MjAwLCA4NTIwOCwgODUyMTUsIDg1MjIxLCA4NTIzMiwgCisgICAgODUyNDIsIDg1MjUxLCA4NTI2MiwgODUyNzEsIDg1Mjc4LCA4NTI4NCwgODUyOTQsIDg1MzAyLCA4NTMwOCwgODUzMjMsIAorICAgIDg1MzI5LCA4NTMzNCwgODUzNDEsIDg1MzQ0LCA4NTM1MCwgODUzNTcsIDg1MzYzLCA4NTM3MSwgODUzODAsIDg1Mzg4LCAKKyAgICA4NTM5NCwgODU0MDMsIDQ2MjYxLCA4NTQxNywgODU0MjIsIDg1NDI4LCAxNjA3MiwgODU0MzMsIDg1NDQ2LCA4NTQ1OCwgCisgICAgODU0NjcsIDg1NDc1LCA4NTQ4MiwgODU0ODYsIDg1NDkwLCA4NTQ5MywgODU1MDAsIDg1NTA3LCA4NTUxNSwgODU1MjMsIAorICAgIDg1NTMyLCA4NTU0MCwgMTU5ODMsIDg1NTQ4LCA4NTU1MywgODU1NTcsIDg1NTY5LCA4NTU3NiwgODU1ODUsIDg0MSwgCisgICAgODU1OTUsIDg1NjA0LCA4NTYxNSwgMjk1NiwgODU2MTksIDg1NjIzLCA4NTYyOSwgODU2NDIsIDg1NjU0LCA4NTY2NCwgCisgICAgODU2NzMsIDg1Njg1LCAyODQ0NiwgODU2OTYsIDg1NzA0LCA4NTcxMywgODU3MjQsIDg1NzM1LCA4NTc0NSwgODU3NTUsIAorICAgIDg1NzY0LCA4NTc3MiwgMTIzNjQsIDg1Nzc5LCA4NTc4MywgODU3ODYsIDg1NzkxLCA4NTc5NiwgODU4MDAsIDg1ODA2LCAKKyAgICAxMzMzLCA4NTgxMywgODU4MTcsIDEyOTMyLCA4NTgyMSwgODU4MzIsIDg1ODQxLCA4NTg0OSwgODU4NTgsIDg1ODY2LCAKKyAgICA4NTg4MiwgODU4OTMsIDg1OTAyLCA4NTkxMCwgODU5MjIsIDg1OTMzLCA4NTk0OSwgODU5NTksIDg1OTgwLCA4NTk5NCwgCisgICAgODYwMDcsIDg2MDE1LCA4NjAyMiwgNzQ5OCwgODYwMzUsIDg2MDQwLCA4NjA0NiwgNjIwMywgODYwNTIsIDg2MDU1LCAKKyAgICA4NjA2MiwgODYwNzIsIDg1NTQsIDg2MDc5LCA4NjA4NCwgODYwODksIDg2MDk0LCA4NjEwMiwgODYxMTEsIDg2MTE5LCAKKyAgICA4NjEyNCwgODYxMzEsIDEwNDk2LCAxMDUwNSwgODYxMzcsIDg2MTQ4LCA4NjE1MywgODYxNTksIDI5NzIsIDI5NzcsIAorICAgIDg2MTY1LCAxMTg1NywgODYxNzEsIDg2MTc4LCA4NjE4NSwgODYxOTgsIDIyODEsIDg3LCA4NjIwMywgODYyMDgsIDg2MjE2LCAKKyAgICA4NjIyNiwgODYyMzUsIDg2MjQxLCA4NjI1MCwgODYyNTgsIDg2MjY4LCA4NjI3MiwgODYyNzYsIDg2MjgxLCA4NjI4NSwgCisgICAgODYyOTcsIDMwMDAsIDg2MzA1LCA4NjMxMywgODYzMTgsIDg2MzI5LCA4NjM0MCwgODYzNTIsIDg2MzYzLCA4NjM3MywgCisgICAgODYzODIsIDIzMDgzLCA4NjM4NywgODYzOTMsIDg2Mzk4LCA4NjQwOCwgODY0MTgsIDg2NDIzLCA4NjQyOSwgODY0MzMsIAorICAgIDg2NDM4LCA4NjQ0NywgMjMwOTUsIDg2NDUxLCA0Mzg0LCAyNCwgODY0NTYsIDg2NDY1LCA4NjQ3MiwgODY0NzksIDg2NDg1LCAKKyAgICA4NjQ5MSwgMTA0OSwgODY0OTYsIDg2NTAxLCA2NjEyOCwgODY1MDYsIDg2NTExLCA4NjUxNywgODY1MjMsIDg2NTMxLCAKKyAgICA4NjUzNiwgODY1NDQsIDg2NTUxLCA4NjU1NywgODY1NjIsIDQyNDY0LCA0NjE1NSwgODY1NjgsIDMwMDQsIDMyLCA4NjU3OCwgCisgICAgODY1OTEsIDg2NTk2LCA4NjYwNCwgODY2MDksIDg2NjE1LCAzMDI2LCAzMDQ5NywgODY2MjAsIDg2NjI4LCA4NjYzNSwgCisgICAgODY2NDAsIDg2NjQ5LCA2MzQ5MiwgNDAxOCwgNjcyMTgsIDg2NjU3LCA4NjY2MSwgMTcxOSwgMTgzMywgODY2NjYsIDg2NjcxLCAKKyAgICA4NjY3OCwgMTgzNywgMjgwLCA4NjY4NSwgODY2OTEsIDg2Njk2LCAzMDQ4LCA4NjcwMCwgODY3MDUsIDg2NzEyLCAxODQxLCAKKyAgICA4NjcxNywgODY3MjMsIDg2NzI4LCA4Njc0MCwgNjQzMCwgODY3NTAsIDg2NzU3LCAxODQ4LCA4Njc2MywgODY3NjgsIAorICAgIDg2Nzc1LCA4Njc4MiwgODY3OTcsIDg2ODA0LCA4NjgxNSwgODY4MjAsIDg2ODI4LCAyNjU3LCA4NjgzMiwgODY4NDQsIAorICAgIDg2ODQ5LCA4Njg1MywgODY4NTksIDMwMzEzLCAyMjg2LCA4Njg2MywgODY4NzQsIDg2ODc4LCA4Njg4MiwgODY4ODgsIAorICAgIDg2ODkyLCA4NjkwMSwgODY5MDUsIDg2OTE2LCA4NjkyMCwgMjMzMiwgMzQ2MTMsIDg2OTI0LCA4NjkzNCwgMzEzOSwgCisgICAgODY5NDIsIDk5MDksIDg2OTUxLCA4Njk1NiwgODY5NjAsIDg2OTY5LCA4Njk3NiwgODY5ODIsIDMxMDksIDE2MTM2LCAKKyAgICA4Njk4NiwgODY5OTksIDg3MDE3LCA4NzAyMiwgODcwMzAsIDg3MDM4LCA4NzA0OCwgMTA3NjgsIDE0MzE4LCA4NzA2MCwgCisgICAgODcwNzMsIDg3MDgwLCA4NzA5NCwgODcxMDEsIDg3MTE3LCA4NzEyNCwgODcxMzAsIDIzMTI3LCAxMzU1NiwgODcxMzcsIAorICAgIDg3MTQ0LCA4NzE1NCwgODcxNjMsIDQ2OTkwLCA4NzE3NSwgNDcxMjUsIDg3MTgzLCA4NzE4NiwgODcxOTIsIDg3MTk4LCAKKyAgICA4NzIwNCwgODcyMTAsIDg3MjE2LCA4NzIyMywgODcyMzAsIDg3MjM2LCA4NzI0MiwgODcyNDgsIDg3MjU0LCA4NzI2MCwgCisgICAgODcyNjYsIDg3MjcyLCA4NzI3OCwgODcyODQsIDg3MjkwLCA4NzI5NiwgODczMDIsIDg3MzA4LCA4NzMxNCwgODczMjAsIAorICAgIDg3MzI2LCA4NzMzMiwgODczMzgsIDg3MzQ0LCA4NzM1MCwgODczNTYsIDg3MzYyLCA4NzM2OCwgODczNzQsIDg3MzgwLCAKKyAgICA4NzM4NiwgODczOTIsIDg3Mzk4LCA4NzQwNCwgODc0MTAsIDg3NDE2LCA4NzQyMiwgODc0MjgsIDg3NDM0LCA4NzQ0MCwgCisgICAgODc0NDYsIDg3NDUyLCA4NzQ1OCwgODc0NjQsIDg3NDcwLCA4NzQ3NiwgODc0ODIsIDg3NDg4LCA4NzQ5NCwgODc1MDAsIAorICAgIDg3NTA2LCA4NzUxMiwgODc1MTgsIDg3NTI0LCA4NzUzMCwgODc1MzYsIDg3NTQzLCA4NzU0OSwgODc1NTYsIDg3NTYzLCAKKyAgICA4NzU2OSwgODc1NzYsIDg3NTgzLCA4NzU4OSwgODc1OTUsIDg3NjAxLCA4NzYwNywgODc2MTMsIDg3NjE5LCA4NzYyNSwgCisgICAgODc2MzEsIDg3NjM3LCA4NzY0MywgODc2NDksIDg3NjU1LCA4NzY2MSwgODc2NjcsIDg3NjczLCAzMTIzLCA5ODgyLCAKKyAgICA4NzY3OSwgODc2ODUsIDg3NjkzLCA4NzY5NywgODQ5MDUsIDMxMjcsIDg3NzAxLCAyMjg2MCwgMTMxODksIDM5NjgsIAorICAgIDg3NzA1LCAzMTMzLCA4NzcwOSwgODc3MTksIDg3NzI1LCA4NzczMSwgODc3MzcsIDg3NzQzLCA4Nzc0OSwgODc3NTUsIAorICAgIDg3NzYxLCA4Nzc2NywgODc3NzMsIDg3Nzc5LCA4Nzc4NSwgODc3OTEsIDg3Nzk3LCA4NzgwMywgODc4MDksIDg3ODE1LCAKKyAgICA4NzgyMSwgODc4MjcsIDg3ODMzLCA4NzgzOSwgODc4NDUsIDg3ODUxLCA4Nzg1NywgODc4NjMsIDg3ODY5LCA4Nzg3NiwgCisgICAgODc4ODMsIDg3ODg5LCA4Nzg5NSwgODc5MDEsIDg3OTA3LCA4NzkxMywgODc5MTksIDEzMzgsIDg3OTI1LCA4NzkzMCwgCisgICAgODc5MzUsIDg3OTQwLCA4Nzk0NSwgODc5NTAsIDg3OTU1LCA4Nzk2MCwgODc5NjUsIDg3OTY5LCA4Nzk3MywgODc5NzcsIAorICAgIDg3OTgxLCA4Nzk4NSwgODc5ODksIDg3OTkzLCA4Nzk5NywgODgwMDEsIDg4MDA3LCA4ODAxMywgODgwMTksIDg4MDI1LCAKKyAgICA4ODAyOSwgODgwMzMsIDg4MDM3LCA4ODA0MSwgODgwNDUsIDg4MDQ5LCA4ODA1MywgODgwNTcsIDg4MDYxLCA4ODA2NiwgCisgICAgODgwNzEsIDg4MDc2LCA4ODA4MSwgODgwODYsIDg4MDkxLCA4ODA5NiwgODgxMDEsIDg4MTA2LCA4ODExMSwgODgxMTYsIAorICAgIDg4MTIxLCA4ODEyNiwgODgxMzEsIDg4MTM2LCA4ODE0MSwgODgxNDYsIDg4MTUxLCA4ODE1NiwgODgxNjEsIDg4MTY2LCAKKyAgICA4ODE3MSwgODgxNzYsIDg4MTgxLCA4ODE4NiwgODgxOTEsIDg4MTk2LCA4ODIwMSwgODgyMDYsIDg4MjExLCA4ODIxNiwgCisgICAgODgyMjEsIDg4MjI2LCA4ODIzMSwgODgyMzYsIDg4MjQxLCA4ODI0NiwgODgyNTEsIDg4MjU2LCA4ODI2MSwgODgyNjYsIAorICAgIDg4MjcxLCA4ODI3NiwgODgyODEsIDg4Mjg2LCA4ODI5MSwgODgyOTYsIDg4MzAxLCA4ODMwNiwgODgzMTEsIDg4MzE2LCAKKyAgICA4ODMyMSwgODgzMjYsIDg4MzMxLCA4ODMzNiwgODgzNDEsIDg4MzQ2LCA4ODM1MSwgODgzNTYsIDg4MzYxLCA4ODM2NiwgCisgICAgODgzNzEsIDg4Mzc2LCA4ODM4MSwgODgzODYsIDg4MzkxLCA4ODM5NiwgODg0MDEsIDg4NDA2LCA4ODQxMSwgODg0MTYsIAorICAgIDg4NDIxLCA4ODQyNiwgODg0MzEsIDg4NDM2LCA4ODQ0MSwgODg0NDYsIDg4NDUxLCA4ODQ1NiwgODg0NjEsIDg4NDY2LCAKKyAgICA4ODQ3MSwgODg0NzYsIDg4NDgxLCA4ODQ4NiwgODg0OTEsIDg4NDk2LCA4ODUwMSwgODg1MDYsIDg4NTExLCA4ODUxNiwgCisgICAgODg1MjEsIDg4NTI2LCA4ODUzMSwgODg1MzYsIDg4NTQxLCA4ODU0NiwgODg1NTEsIDg4NTU2LCA4ODU2MSwgODg1NjYsIAorICAgIDg4NTcxLCA4ODU3NiwgODg1ODEsIDg4NTg2LCA4ODU5MSwgODg1OTYsIDg4NjAxLCA4ODYwNiwgODg2MTEsIDg4NjE2LCAKKyAgICA4ODYyMSwgODg2MjYsIDg4NjMxLCA4ODYzNiwgODg2NDEsIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgCisgICAgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODYsIDg4NjkxLCA4ODY5NiwgODg3MDEsIDg4NzA2LCA4ODcxMSwgODg3MTYsIAorICAgIDg4NzIxLCA4ODcyNiwgODg3MzEsIDg4NzM2LCA4ODc0MSwgODg3NDYsIDg4NzUxLCA4ODc1NiwgODg3NjEsIDg4NzY2LCAKKyAgICA4ODc3MSwgODg3NzYsIDg4NzgxLCA4ODc4NiwgODg3OTEsIDg4Nzk2LCA4ODgwMSwgODg4MDYsIDg4ODExLCA4ODgxNiwgCisgICAgODg4MjEsIDg4ODI2LCA4ODgzMSwgODg4MzYsIDg4ODQxLCA4ODg0NiwgODg4NTEsIDg4ODU2LCA4ODg2MSwgODg4NjYsIAorICAgIDg4ODcxLCA4ODg3NiwgODg4ODEsIDg4ODg2LCA4ODg5MSwgODg4OTYsIDg4OTAxLCA4ODkwNiwgODg5MTEsIDg4OTE2LCAKKyAgICA4ODkyMSwgODg5MjYsIDg4OTMxLCA4ODkzNiwgODg5NDEsIDg4OTQ2LCA4ODk1MSwgODg5NTcsIDg4OTYyLCA4ODk2NywgCisgICAgODg5NzIsIDg4OTc3LCA4ODk4MiwgODg5ODcsIDg4OTkyLCA4ODk5OCwgODkwMDMsIDg5MDA4LCA4OTAxMywgODkwMTgsIAorICAgIDg5MDIzLCA4OTAyOCwgODkwMzMsIDg5MDM4LCA4OTA0MywgODkwNDgsIDg5MDUzLCA4OTA1OCwgODkwNjMsIDg5MDY4LCAKKyAgICA4OTA3MywgODkwNzgsIDg5MDgzLCA4OTA4OCwgODkwOTMsIDg5MDk4LCA4OTEwMywgODkxMDgsIDg5MTEzLCA4OTExOCwgCisgICAgODkxMjMsIDg5MTI4LCA4OTEzMywgODkxMzgsIDg5MTQzLCA4OTE0OCwgODkxNTMsIDg5MTU4LCA4OTE2NywgODkxNzIsIAorICAgIDg5MTgxLCA4OTE4NiwgODkxOTUsIDg5MjAwLCA4OTIwOSwgODkyMTQsIDg5MjIzLCA4OTIyOCwgODkyMzcsIDg5MjQyLCAKKyAgICA4OTI1MSwgODkyNTYsIDg5MjY1LCA4OTI3MCwgODkyNzUsIDg5Mjg0LCA4OTI4OCwgODkyOTcsIDg5MzAyLCA4OTMxMSwgCisgICAgODkzMTYsIDg5MzI1LCA4OTMzMCwgODkzMzksIDg5MzQ0LCA4OTM1MywgODkzNTgsIDg5MzY3LCA4OTM3MiwgODkzODEsIAorICAgIDg5Mzg2LCA4OTM5NSwgODk0MDAsIDg5NDA5LCA4OTQxNCwgODk0MjMsIDg5NDI4LCA4OTQzMywgODk0MzgsIDg5NDQzLCAKKyAgICA4OTQ0OCwgODk0NTMsIDg5NDU4LCA4OTQ2MiwgODk0NjcsIDg5NDcyLCA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgCisgICAgODk0OTgsIDg5NTAzLCA4OTUwOCwgODk1MTMsIDg5NTE5LCA4OTUyMywgODk1MjgsIDg5NTM0LCA4OTUzOSwgODk1NDQsIAorICAgIDg5NTQ5LCA4OTU1NCwgODk1NTksIDg5NTY0LCA4OTU2OSwgODk1NzQsIDg5NTc5LCA4OTU4NCwgODk1OTAsIDg5NTk1LCAKKyAgICA4OTYwMCwgODk2MDUsIDg5NjExLCA4OTYxNiwgODk2MjEsIDg5NjI2LCA4OTYzMSwgODk2MzcsIDg5NjQyLCA4OTY0NywgCisgICAgODk2NTIsIDg5NjU3LCA4OTY2MiwgODk2NjgsIDg5NjczLCA4OTY3OCwgODk2ODMsIDg5Njg4LCA4OTY5MywgODk2OTgsIAorICAgIDg5NzAzLCA4OTcwOCwgODk3MTMsIDg5NzE4LCA4OTcyMywgODk3MjgsIDg5NzMzLCA4OTczOCwgODk3NDMsIDg5NzQ4LCAKKyAgICA4OTc1MywgODk3NTgsIDg5NzYzLCA4OTc2OCwgODk3NzMsIDg5Nzc4LCA4OTc4MywgODk3ODksIDg5Nzk1LCA4OTgwMSwgCisgICAgODk4MDYsIDg5ODExLCA4OTgxNiwgODk4MjEsIDg5ODI3LCA4OTgzMywgODk4MzksIDg5ODQ0LCA4OTg0OSwgODk4NTQsIAorICAgIDg5ODYwLCA4OTg2NSwgODk4NzAsIDg5ODc1LCA4OTg4MCwgODk4ODUsIDg5ODkwLCA4OTg5NSwgODk5MDAsIDg5OTA1LCAKKyAgICA4OTkxMCwgODk5MTUsIDg5OTIwLCA4OTkyNSwgODk5MzAsIDg5OTM1LCA4OTk0MCwgODk5NDYsIDg5OTUyLCA4OTk1OCwgCisgICAgODk5NjMsIDg5OTY4LCA4OTk3MywgODk5NzgsIDg5OTg0LCA4OTk5MCwgODk5OTYsIDkwMDAxLCA5MDAwNiwgOTAwMTEsIAorICAgIDkwMDE2LCA5MDAyMSwgOTAwMjYsIDkwMDMxLCA5MDAzNiwgOTAwNDEsIDE3NTM5LCA5MDA0NiwgOTAwNTIsIDkwMDU3LCAKKyAgICA5MDA2MiwgOTAwNjcsIDkwMDcyLCA5MDA3NywgOTAwODMsIDkwMDg4LCA5MDA5MywgOTAwOTgsIDkwMTAzLCA5MDEwOCwgCisgICAgOTAxMTQsIDkwMTE5LCA5MDEyNCwgOTAxMjksIDkwMTM0LCA5MDEzOSwgOTAxNDQsIDkwMTQ5LCA5MDE1NCwgOTAxNTksIAorICAgIDkwMTY0LCA5MDE2OSwgOTAxNzQsIDkwMTc5LCA5MDE4NCwgOTAxODksIDkwMTk0LCA5MDE5OSwgOTAyMDQsIDkwMjA5LCAKKyAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIzMCwgOTAyMzUsIDkwMjQwLCA5MDI0NSwgOTAyNTAsIDkwMjU1LCA5MDI2MCwgCisgICAgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgOTAyOTUsIDkwMzAwLCA5MDMwNSwgOTAzMTAsIAorICAgIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIDkwMzQ1LCA5MDM1MCwgOTAzNTUsIDkwMzYwLCAKKyAgICA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCA5MDM5NSwgOTA0MDAsIDkwNDA1LCA5MDQxMCwgCisgICAgOTA0MTUsIDkwNDIwLCA5MDQyNSwgOTA0MzAsIDkwNDM2LCA5MDQ0MSwgOTA0NDYsIDkwNDUxLCA5MDQ1NiwgOTA0NjEsIAorICAgIDkwNDY2LCA5MDQ3MSwgOTA0NzYsIDkwNDgxLCA5MDQ4NiwgOTA0OTEsIDkwNDk3LCA5MDUwMiwgOTA1MDgsIDkwNTEzLCAKKyAgICA5MDUxOCwgOTA1MjMsIDkwNTI4LCA5MDUzMywgOTA1MzgsIDkwNTQ0LCA5MDU0OSwgOTA1NTQsIDkwNTYwLCA5MDU2NSwgCisgICAgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkxLCA5MDU5NywgOTA2MDIsIDkwNjA3LCAxMzIxMSwgOTA2MTIsIAorICAgIDkwNjE3LCA5MDYyMiwgOTA2MjcsIDkwNjMyLCA5MDYzNywgOTA2NDIsIDkwNjQ3LCA5MDY1MiwgOTA2NTcsIDkwNjYyLCAKKyAgICA5MDY2NywgOTA2NzIsIDkwNjc3LCA5MDY4MiwgOTA2ODcsIDkwNjkyLCA5MDY5NywgOTA3MDIsIDkwNzA3LCA5MDcxMiwgCisgICAgOTA3MTcsIDkwNzIyLCA5MDcyNywgOTA3MzIsIDkwNzM3LCA5MDc0MiwgOTA3NDcsIDkwNzUyLCA5MDc1NywgOTA3NjIsIAorICAgIDkwNzY3LCA5MDc3MiwgOTA3NzcsIDkwNzgyLCA5MDc4NywgOTA3OTIsIDkwNzk3LCA5MDgwMiwgOTA4MDcsIDkwODEyLCAKKyAgICA5MDgxNywgOTA4MjIsIDkwODI3LCA5MDgzMiwgOTA4MzcsIDkwODQyLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MiwgCisgICAgOTA4NjcsIDkwODcyLCA5MDg3NywgOTA4ODIsIDkwODg3LCA5MDg5MiwgOTA4OTcsIDkwOTAyLCA5MDkwNywgOTA5MTIsIAorICAgIDkwOTE3LCA5MDkyMiwgOTA5MjcsIDkwOTMyLCA5MDkzOCwgOTA5NDMsIDkwOTQ4LCA5MDk1MywgOTA5NTgsIDkwOTY0LCAKKyAgICA5MDk2OSwgOTA5NzQsIDkwOTc5LCA5MDk4NCwgOTA5ODksIDkwOTk0LCA5MTAwMCwgOTEwMDUsIDkxMDEwLCA5MTAxNSwgCisgICAgOTEwMjAsIDkxMDI1LCA5MTAzMSwgOTEwMzYsIDkxMDQxLCA5MTA0NiwgOTEwNTEsIDkxMDU2LCA5MTA2MiwgOTEwNjcsIAorICAgIDkxMDcyLCA5MTA3NywgOTEwODIsIDkxMDg3LCA5MTA5MywgOTEwOTksIDkxMTA0LCA5MTEwOSwgOTExMTQsIDkxMTIwLCAKKyAgICA5MTEyNiwgOTExMzIsIDkxMTM3LCA5MTE0MiwgOTExNDgsIDkxMTU0LCA5MTE1OSwgOTExNjUsIDkxMTcxLCA5MTE3NywgCisgICAgOTExODIsIDkxMTg3LCA5MTE5MywgOTExOTgsIDkxMjA0LCA5MTIwOSwgOTEyMTUsIDkxMjI0LCA5MTIyOSwgOTEyMzQsIAorICAgIDkxMjQwLCA5MTI0NSwgOTEyNTEsIDkxMjU2LCA5MTI2MSwgOTEyNjYsIDkxMjcxLCA5MTI3NiwgOTEyODEsIDkxMjg2LCAKKyAgICA5MTI5MSwgOTEyOTYsIDkxMzAxLCA5MTMwNiwgOTEzMTEsIDkxMzE2LCA5MTMyMSwgOTEzMjYsIDkxMzMxLCA5MTMzNiwgCisgICAgOTEzNDEsIDkxMzQ2LCA5MTM1MSwgOTEzNTYsIDkxMzYxLCA5MTM2NiwgOTEzNzEsIDkxMzc2LCA5MTM4MSwgOTEzODYsIAorICAgIDkxMzkxLCA5MTM5NiwgOTE0MDEsIDkxNDA2LCA5MTQxMiwgOTE0MTgsIDkxNDI0LCA5MTQyOSwgOTE0MzQsIDkxNDM5LCAKKyAgICA5MTQ0NCwgOTE0NDksIDkxNDU0LCA5MTQ1OSwgOTE0NjQsIDkxNDY5LCA5MTQ3NCwgOTE0NzksIDkxNDg0LCA5MTQ4OSwgCisgICAgOTE0OTQsIDkxNDk5LCA5MTUwNCwgOTE1MDksIDkxNTE0LCA5MTUxOSwgOTE1MjQsIDkxNTMwLCA5MTUzNiwgOTE1NDEsIAorICAgIDkxNTQ3LCA5MTU1MiwgOTE1NTcsIDkxNTYzLCA5MTU2OCwgOTE1NzQsIDkxNTc5LCA5MTU4NSwgOTE1OTAsIDkxNTk2LCAKKyAgICA5MTYwMSwgOTE2MDcsIDkxNjEyLCA5MTYxNywgOTE2MjIsIDkxNjI3LCA5MTYzMiwgOTE2MzcsIDkxNjQyLCA4NzcyMCwgCisgICAgODc3MjYsIDg3NzMyLCA4NzczOCwgOTE2NDgsIDg3NzQ0LCA4Nzc1MCwgOTE2NTQsIDg3NzU2LCA4Nzc2MiwgODc3NjgsIAorICAgIDg3Nzc0LCA4Nzc4MCwgODc3ODYsIDg3NzkyLCA4Nzc5OCwgODc4MDQsIDkxNjYwLCA4NzgxMCwgODc4MTYsIDg3ODIyLCAKKyAgICA5MTY2NiwgODc4MjgsIDg3ODM0LCA4Nzg0MCwgODc4NDYsIDkxNjcyLCA4Nzg1MiwgODc4NTgsIDg3ODY0LCA4Nzg4NCwgCisgICAgOTE2NzgsIDkxNjg0LCA4Nzg5MCwgOTE2OTAsIDg3ODk2LCA4NzkwMiwgODc5MDgsIDg3OTE0LCA4NzkyMCwgMzE1MCwgCisgICAgMzE1NSwgOTE2OTYsIDkxNzAxLCA5MTcwNCwgOTE3MTAsIDkxNzE2LCA5MTcyMywgOTE3MjgsIDkxNzMzLCAyMzM3LCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwotI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDcKLSNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDkKKyNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA4CisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjAxCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjE5LCAyMCwgMjQ1LCAzOSwgNzksIDIyNCwgMSwgNzksIDU0LCA1MCwgMjQ3LCAxNDAsIDUwLCAyMjUsIDE4NSwgNTAsIAotICAgIDI1NCwgMTM0LCAyNTQsIDY1LCA0MywgMjI2LCA3LCA0NCwgMjI2LCA3LCAyNTMsIDIyNCwgOTYsIDUwLCAyNDksIDIyNywgCi0gICAgMjQwLCAxNzQsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjE5LCA0OCwgMjEsIDIxMCwgODYsIDIxLCAxMTEsIDIxLCAxMDUsIDIxLCAKLSAgICAxNTgsIDIxLCAxNjEsIDIxLCAxOTAsIDIxLCAxOTUsIDIxLCAxOTksIDIxLCAxOTYsIDIxLCAyMDEsIDI0OSwgMjM0LCAyMjAsIAotICAgIDE1MiwgMjMzLCAyMSwgNTAsIDI0NSwgMTA2LCA1MCwgMjQyLCAxMzcsIDUwLCAyMjQsIDE2LCA3OSwgMjQ5LCAyMjUsIDI1MywgCi0gICAgMjE0LCA3LCA2LCAxLCA2MSwgNywgNiwgMSwgMjUzLCAxNjYsIDcsIDYsIDEsIDI1MSwgNzQsIDcsIDYsIDEsIDI0OSwgNjgsIAotICAgIDcsIDYsIDEsIDc2LCA3LCA2LCAxLCAyNDUsIDE0LCA3LCA2LCAxLCAyNDMsIDIwOSwgNywgNiwgMSwgMjQyLCA2NywgNywgNiwgCi0gICAgMSwgNzQsIDcsIDYsIDEsIDIzNSwgMTUwLCA3LCA2LCAxLCAyMzUsIDI5LCA3LCA2LCAxLCAxNTYsIDcsIDYsIDEsIDE5NCwgCi0gICAgNywgNiwgMSwgMjMwLCAzMCwgNywgNiwgMSwgNzgsIDcsIDYsIDEsIDIyNiwgMTA5LCA3LCA2LCAxLCAyMjQsIDk5LCA3LCA2LCAKLSAgICAxLCAxNTMsIDcsIDYsIDEsIDIyMiwgOTMsIDcsIDYsIDEsIDIxNywgMTUzLCA3LCA2LCAxLCA2OSwgNywgNiwgMSwgMjE0LCAKLSAgICAxMDUsIDcsIDYsIDEsIDIxMiwgOTgsIDcsIDYsIDEsIDIxMSwgMTc4LCA3LCA2LCAxLCAyMTEsIDExNywgNywgNiwgMSwgCi0gICAgMjEwLCAxNTksIDQzLCA0MiwgMTI3LCAyMjMsIDUzLCAyMTksIDQ4LCA0NCwgNDIsIDEyNywgMjUwLCAzOSwgMjU1LCAyMywgCi0gICAgMTIxLCAyMzIsIDIxOSwgMjQyLCAxNDQsIDI1NSwgMjMsIDcsIDQsIDEsIDYxLCA3LCA0LCAxLCAyNTMsIDE2NiwgNywgNCwgCi0gICAgMSwgMjUxLCA3NCwgNywgNCwgMSwgMjQ5LCA2OCwgNywgNCwgMSwgNzYsIDcsIDQsIDEsIDI0NSwgMTQsIDcsIDQsIDEsIAotICAgIDI0MywgMjA5LCA3LCA0LCAxLCAyNDIsIDY3LCA3LCA0LCAxLCA3NCwgNywgNCwgMSwgMjM1LCAxNTAsIDcsIDQsIDEsIDIzNSwgCi0gICAgMjksIDcsIDQsIDEsIDE1NiwgNywgNCwgMSwgMTk0LCA3LCA0LCAxLCAyMzAsIDMwLCA3LCA0LCAxLCA3OCwgNywgNCwgMSwgCi0gICAgMjI2LCAxMDksIDcsIDQsIDEsIDIyNCwgOTksIDcsIDQsIDEsIDE1MywgNywgNCwgMSwgMjIyLCA5MywgNywgNCwgMSwgMjE3LCAKLSAgICAxNTMsIDcsIDQsIDEsIDY5LCA3LCA0LCAxLCAyMTQsIDEwNSwgNywgNCwgMSwgMjEyLCA5OCwgNywgNCwgMSwgMjExLCAxNzgsIAotICAgIDcsIDQsIDEsIDIxMSwgMTE3LCA3LCA0LCAxLCAyMTAsIDE1OSwgNDMsIDI0OSwgMTA3LCAxMjcsIDY3LCAyMzIsIDIxOSwgCi0gICAgNDQsIDI0OSwgMTA3LCAxMjcsIDE4NCwgMjI4LCA3OCwgMjE5LCAyMCwgMjM1LCAyMDAsIDI0NSwgMzksIDc5LCAyNTAsIAotICAgIDE4NCwgNTAsIDIyNCwgMjMxLCA1MCwgMjQ5LCAxMDYsIDUwLCAyMTEsIDQwLCA1MCwgMjUxLCAxNDMsIDEzMCwgMjIxLCAKLSAgICAxNzUsIDUwLCAyNDgsIDksIDI0OSwgMTcxLCA1MCwgMjQ0LCAxNDQsIDIyNiwgMTU4LCAyMzUsIDI0NSwgMjMzLCA0OCwgNTIsIAotICAgIDI1NCwgMTE4LCAyMjQsIDEsIDc5LCAyMjgsIDU3LCA1MCwgMjE5LCA1NCwgMjQwLCAxNzUsIDIyMywgMTA1LCA1MCwgMjMxLCAKLSAgICAyMzcsIDI0OCwgNzksIDUwLCAyMjUsIDI0LCA1MCwgMjE4LCAyNCwgMTA1LCAyMTgsIDI0LCAxNTgsIDI1NSwgMTIsIDI1NSwgCi0gICAgMjMsIDIzMCwgMjMzLCA1MCwgMjI1LCA3MSwgNTAsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjUwLCAxOTEsIDIxOCwgMjQsIAotICAgIDExMSwgMjMxLCAxNTMsIDIyNiwgMTU4LCAyMzUsIDI0NSwgMjIyLCAyNTAsIDUyLCAyNTQsIDExOCwgMjI0LCAxLCA3OSwgCi0gICAgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjI0LCAyNCwgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgMjEyLCAKLSAgICAxMTQsIDI0NCwgMTAsIDEzNCwgMjI0LCAyMiwgMjM1LCAyMDAsIDIyNCwgMTYsIDc5LCA3LCA2LCAxLCAxMTYsIDIsIDI0MiwgCi0gICAgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxMTYsIDIsIAotICAgIDE4NCwgNywgNiwgMSwgMTE2LCAyLCAyNDgsIDksIDcsIDYsIDEsIDExNiwgMiwgMjIyLCAyMzcsIDQ4LCA3LCA2LCAxLCAKLSAgICAyNTQsIDI1MiwgNywgNiwgMSwgMjUxLCA3NSwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDE2MCwgMiwgMjQyLCAxNDMsIDcsIDYsIAotICAgIDEsIDE2MCwgMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDE2MCwgMiwgMjQ4LCA5LCA3LCA2LCAKLSAgICAxLCAyNDAsIDE2MSwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAxNDIsIDcsIDYsIDEsIDI0MCwgMTYxLCAKLSAgICAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAyNDUsIDY3LCA3LCA2LCAxLCAyMzAsIAotICAgIDMxLCAyLCAxODQsIDcsIDYsIDEsIDE0NCwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMTQyLCA3LCA2LCAxLCAKLSAgICAxNDQsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDE0NCwgMiwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgOSwgMjMwLCA4OSwgCi0gICAgNTAsIDcsIDYsIDEsIDE0NCwgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDEwNCwgMiwgMTQyLCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgCi0gICAgMTQyLCA3LCA2LCAxLCAyMTYsIDE1MiwgNywgNCwgMSwgMjIwLCA3OCwgMjIyLCA5MywgNywgNCwgMSwgMTE2LCAyLCAyNDIsIAotICAgIDE0MywgNywgNCwgMSwgMTE2LCAyLCAxNDIsIDcsIDQsIDEsIDExNiwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTE2LCAyLCAKLSAgICAxODQsIDcsIDQsIDEsIDExNiwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA0OCwgNywgNCwgMSwgCi0gICAgMjU0LCAyNTIsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAxNjAsIDIsIDI0MiwgMTQzLCA3LCA0LCAKLSAgICAxLCAxNjAsIDIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAxNjAsIDIsIDI0OCwgOSwgNywgNCwgCi0gICAgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE2MSwgCi0gICAgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDI0OCwgOSwgNywgNCwgMSwgMjQ1LCA2NywgNywgNCwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAxNDQsIDIsIDE4NCwgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDksIDI0NywgMTc3LCAKLSAgICA1MCwgNywgNCwgMSwgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMTA0LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAxNDIsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDksIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAKLSAgICAxNDIsIDcsIDQsIDEsIDIxNiwgMTUyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAxMTYsIDIsIAotICAgIDIzMSwgMjM3LCA3LCA0LCAxLCAxMTYsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMTYsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAKLSAgICAxMTYsIDIsIDI1MSwgMTU0LCA3LCA2LCAxLCAxMTYsIDIsIDIyNiwgMjI4LCA3LCA0LCAxLCAxMTYsIDIsIDIyNiwgMjI4LCAKLSAgICA3LCA2LCAxLCAyNTEsIDc1LCAyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDE0MiwgNywgNiwgMSwgMjUxLCA3NSwgMiwgCi0gICAgMjUwLCAzOCwgNywgNCwgMSwgMjUxLCA3NSwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjUxLCA3NSwgMiwgNTksIDQ4LCA3LCA0LCAKLSAgICAxLCAyNTEsIDc1LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNTEsIDc1LCAKLSAgICAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDI1MCwgCi0gICAgMjQyLCA3LCA2LCAxLCAyNDksIDY5LCAyLCA5MSwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgOTEsIDcsIDYsIDEsIDE2MCwgMiwgCi0gICAgMjMxLCAyMzcsIDcsIDQsIDEsIDE2MCwgMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDE2MCwgMiwgMjUxLCAxNTQsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjUxLCAxNTQsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNiwgCi0gICAgMSwgMTYwLCAyLCAyMjYsIDIyOCwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIAotICAgIDI0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIAotICAgIDI0MywgMjEwLCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgMjUxLCAxNTQsIDcsIDQsIDEsIDI0MywgMjEwLCAKLSAgICAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDU5LCA0OCwgCi0gICAgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIAotICAgIDkxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCA5MSwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDE4NCwgNywgNCwgMSwgMjQwLCAKLSAgICAxNjEsIDIsIDE4NCwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjMxLCAKLSAgICAyMzcsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNTEsIDE1NCwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDI1MSwgMTU0LCA3LCAKLSAgICA2LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjgsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyMjYsIDIyOCwgNywgNiwgMSwgCi0gICAgMjQwLCAxNjEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ3LCAxMjcsIDc0LCA3LCA2LCAyNywgMjM2LCAzOCwgNywgNCwgMjcsIAotICAgIDIzNiwgMzgsIDcsIDYsIDEsIDIzNSwgMTUxLCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMzUsIDE1MSwgMiwgMjUwLCAzOCwgNywgCi0gICAgNiwgMSwgMjM1LCAzMCwgMiwgMjUwLCAxOTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyMzMsIAotICAgIDI0NSwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDE0MiwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDE0MiwgNywgNiwgMSwgMjMzLCAKLSAgICAxNTUsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAKLSAgICAyNTAsIDI0MiwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMjMwLCAyMjksIAotICAgIDI0NywgMTI4LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjMwLCAyMjksIDI0NywgMTI4LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgOTEsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA5MSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgMTQyLCA3LCA0LCAxLCAyMzAsIDMxLCAKLSAgICAyLCAxNDIsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDE5MSwgNywgCi0gICAgNiwgMSwgMjMwLCAzMSwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzAsIAotICAgIDMxLCAyMjQsIDIwNywgMjUxLCA4NiwgMjU0LCA2NSwgNywgNiwgMSwgMjQ1LCAxNDYsIDcsIDQsIDEsIDI0NSwgMTQ2LCA3LCAKLSAgICA2LCAxLCAxNDQsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxNDQsIDIsIDI1MSwgCi0gICAgMTU0LCA3LCA0LCAxLCAxNDQsIDIsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAxNDIsIDcsIDQsIDEsIDE0NCwgCi0gICAgMiwgNTIsIDE0MiwgNywgNiwgMjcsIDIyNiwgMjM4LCA3LCA0LCAyNywgMjI2LCAyMzgsIDcsIDYsIDEsIDIyMywgMjI3LCAyLCAKLSAgICAxNDIsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAxNDIsIDcsIDYsIDEsIDIyMywgMjI3LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgCi0gICAgMjIzLCAyMjcsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDIyMywgMjI3LCAKLSAgICAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMTQyLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAxNDIsIDcsIDYsIDEsIAotICAgIDIyMiwgOTQsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIAotICAgIDI1MCwgMTkxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDE5MSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjUwLCAyNDIsIAotICAgIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjUwLCAxOTEsIDcsIDQsIDEsIAotICAgIDIxNywgMTU0LCAyLCAyNTAsIDE5MSwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMTcsIDE1NCwgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDkxLCA3LCA2LCAxLCAKLSAgICAxMDQsIDIsIDE4NCwgNywgNCwgMSwgMTA0LCAyLCAxODQsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzcsIDcsIDQsIDEsIAotICAgIDEwNCwgMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDEwNCwgMiwgMjUxLCAxNTQsIDcsIDQsIDEsIDEwNCwgMiwgMjUxLCAxNTQsIAotICAgIDcsIDYsIDEsIDEwNCwgMiwgMjIyLCAyMzcsIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDIyMiwgMjM3LCA0OCwgNywgNiwgMSwgCi0gICAgMTA0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjgsIDcsIAotICAgIDQsIDEsIDEwNCwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDIxMiwgOTksIAotICAgIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzOCwgCi0gICAgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDE0MiwgNywgNCwgMSwgMjEwLCAKLSAgICAxNjAsIDIsIDE0MiwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA0OCwgCi0gICAgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIAotICAgIDIwMCwgMjIyLCA5MywgNywgNCwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCA1NywgMiwgMTAzLCA3LCA2LCAxLCA1NywgMiwgCi0gICAgMjE2LCAxMiwgNywgNCwgMSwgNTcsIDIsIDIxNiwgMTIsIDcsIDYsIDEsIDEzOCwgMTk1LCA3LCA0LCAxLCAxMzgsIDE5NSwgCi0gICAgNywgNiwgMSwgMjA0LCA3OCwgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTAzLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAxMDMsIDcsIAotICAgIDYsIDEsIDI1NCwgMjI4LCAyNDksIDY4LCA3LCA2LCAxLCAyNDksIDY5LCAyLCAxMDMsIDcsIDYsIDEsIDI0OSwgNjksIDIsIAotICAgIDIxNiwgMTIsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDIxNiwgMTIsIDcsIDQsIDEsIDIxNSwgOTQsIDI0OCwgNjIsIDcsIDYsIAotICAgIDEsIDIyMywgNTIsIDc2LCA3LCA2LCAxLCAyMjEsIDE5NywgNywgNiwgMSwgMjA0LCA3NiwgNywgNiwgMSwgMjQ1LCAxNSwgMiwgCi0gICAgMTAzLCA3LCA0LCAxLCAyNDUsIDE1LCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgCi0gICAgMTE0LCA3LCA0LCAxLCAyNDAsIDIwOCwgNywgNiwgMSwgMjM1LCAxOTIsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCA5MSwgNywgCi0gICAgNiwgMSwgMjM1LCAzMCwgMiwgMTAzLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAxMDMsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAKLSAgICAxMzAsIDcsIDQsIDEsIDIzMywgMTA2LCAyLCA5MSwgNywgNiwgMSwgMjE1LCA5NCwgMTk0LCA3LCA2LCAxLCAyMzAsIDMxLCAKLSAgICAyLCA0MywgMTAzLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyMDAsIDQ0LCAyMzMsIDQyLCA3LCA2LCAxLCAxNDQsIDIsIDIzMCwgCi0gICAgMjI5LCAxODQsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNTUsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNTUsIDcsIDYsIDEsIAotICAgIDIyNiwgMjIzLCA3LCA0LCAxLCAyMjYsIDIyMywgNywgNiwgMSwgMjI2LCAxMTAsIDIsIDEwMywgNywgNCwgMSwgMjI2LCAKLSAgICAxMTAsIDIsIDEwMywgNywgMSwgMjEwLCAyMTQsIDcsIDYsIDEsIDEzOCwgMTA1LCA3LCA0LCAxLCAxMzgsIDEwNSwgNywgNiwgCi0gICAgMSwgMjQ1LCA4MywgNywgMSwgMjIzLCA1MiwgMjQ1LCA4NCwgMjMyLCAxMjksIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAyMjYsIAotICAgIDcwLCAxMDMsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAxMDMsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAxMDMsIDcsIDYsIDEsIAotICAgIDIxNywgMTU0LCAyLCAyMjMsIDU4LCAxMDMsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNTUsIDcsIDQsIDEsIDEwNCwgMiwgCi0gICAgMjQwLCAyNTUsIDcsIDYsIDEsIDIxNCwgMTU3LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMTAzLCA3LCA2LCAxLCAyMTEsIAotICAgIDExOCwgMiwgMTAzLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTAzLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDQsIAotICAgIDEsIDIxMCwgMTYwLCAyLCA5MSwgNywgNiwgMSwgMjQ1LCAxNiwgNywgNiwgMSwgMjQ1LCAxNywgMjIzLCA1MSwgNywgNCwgMSwgCi0gICAgMjQ1LCAxNywgMjIzLCA1MSwgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjE3LCA3OCwgNywgMSwgMTEzLCAyLCA5MSwgNywgNiwgCi0gICAgMSwgMTM4LCAxOTAsIDcsIDQsIDEsIDEzOCwgMTkwLCA3LCAxLCAyMzUsIDIwMCwgMjQyLCAxODcsIDIxOCwgMTMyLCAyLCAKLSAgICA5MSwgNywgMSwgMjExLCAxODEsIDcsIDEsIDI0OCwgNTUsIDI1MCwgMTksIDcsIDEsIDIzMywgODMsIDI1MCwgMTksIDcsIDEsIAotICAgIDI1NCwgMTQ1LCAyNTAsIDE5LCA3LCAxLCAyMjMsIDU4LCAyNTAsIDE5LCA3LCA2LCAxLCAyNDYsIDQ4LCAyLCAyNTAsIDI0MiwgCi0gICAgNywgNiwgMSwgMjQ5LCA2OSwgMiwgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDYsIDQ4LCAyLCAKLSAgICAyNTAsIDI0MiwgNywgNiwgMSwgMjMyLCAxOTQsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCA0LCAxLCAyMzUsIDE1MCwgNywgNCwgCi0gICAgMSwgMjMyLCAxOTQsIDcsIDYsIDEsIDIyOCwgMTkxLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCA0LCAxLCAyMzUsIDE1MCwgNywgCi0gICAgNCwgMSwgMjI4LCAxOTEsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDExNiwgMiwgMjUwLCAyNDIsIDcsIAotICAgIDYsIDEsIDI0MCwgMTYxLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAKLSAgICAxNDQsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAxMDQsIDIsIDI1MCwgMjQyLCAKLSAgICA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgCi0gICAgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAyNTAsIDI0MiwgCi0gICAgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIAotICAgIDI0MiwgMTQzLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgNzYsIAotICAgIDcsIDYsIDEsIDExNiwgMiwgMjQ4LCAxMCwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxMTYsIDIsIDI0OCwgMTAsIDIyLCAKLSAgICAyMzEsIDIzNywgNywgNiwgMSwgMTE2LCAyLCA1OSwgNzIsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCA1OSwgNzIsIAotICAgIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMjU0LCAyNTMsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyNTQsIDI1MywgMiwgMjMxLCAKLSAgICAyMzcsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCA5MSwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDkxLCA3LCA2LCAxLCAyNDMsIAotICAgIDIxMCwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjM1LCAzMCwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAxNDQsIDIsIDIyNiwgMjI4LCA3LCA0LCAKLSAgICAxLCAxNDQsIDIsIDIyNiwgMjI4LCA3LCA2LCAxLCAxNDQsIDIsIDIyNiwgMjI5LCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgMjI2LCAyMjksIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMjQ1LCAxNywgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIAotICAgIDI0NSwgMTcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzUsIDE1MSwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0NiwgNDcsIAotICAgIDcsIDYsIDEsIDI0OSwgNjksIDIsIDQsIDEsIDIxMCwgMTU5LCA3LCA0LCAxLCAyNDYsIDQ3LCA3LCA2LCAxLCAyNDMsIDIxMCwgCi0gICAgMiwgMTQyLCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDIwNiwgNywgNiwgMSwgMjExLCAxODEsIAotICAgIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNDIsIDE0MywgNywgNiwgMSwgCi0gICAgMTE2LCAyLCAyMjIsIDIzNywgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDExNiwgMiwgMjIyLCAyMzcsIDcyLCAyMiwgMTQyLCA3LCAKLSAgICA2LCAxLCAyNTQsIDI1MywgMiwgMTQyLCA3LCA0LCAxLCAyNTQsIDI1MywgMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDIxOCwgCi0gICAgMTA1LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxOCwgMTA1LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTYsIDIsIDUyLCAKLSAgICAyNDIsIDE0MywgNywgNCwgMSwgMTE2LCAyLCA1MiwgMjQyLCAxNDMsIDcsIDYsIDEsIDExNiwgMiwgMjM1LCAyMDAsIDI1MSwgCi0gICAgMTU0LCA3LCA0LCAxLCAxMTYsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMTYwLCAyLCA1MiwgMjQyLCAxNDMsIAotICAgIDcsIDQsIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNjAsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNCwgCi0gICAgMSwgMTYwLCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCA1MiwgMjQyLCAxNDMsIDcsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCA1MiwgMjQyLCAxNDMsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIAotICAgIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDQsIAotICAgIDEsIDE0NCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgNTIsIDI0MiwgMTQzLCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCAKLSAgICA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxNDMsIDcsIDYsIDEsIDEwNCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA0LCAKLSAgICAxLCAxMDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA0LCAKLSAgICAxLCAyMjIsIDk0LCAyLCAyNDksIDIyOCwgNTEsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAyNDksIDIyOCwgNTEsIDcsIDQsIDEsIAotICAgIDIxNywgMTU0LCAyLCAyNDksIDIyOCwgNTEsIDcsIDYsIDEsIDIxMCwgMjMxLCA3LCA0LCAxLCAyMTAsIDIzMSwgNywgNiwgMSwgCi0gICAgMjQyLCA2OCwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAKLSAgICAyMDAsIDQ0LCAyMzMsIDQyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyNDksIDEwOCwgNywgNiwgMSwgMjI2LCAxMzgsIDcsIDQsIAotICAgIDEsIDIyNiwgMTM4LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMTAzLCA3LCA2LCAKLSAgICAxLCAxMTYsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTE2LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxOTEsIDcsIAotICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDE0NCwgMiwgMjQ4LCAxMCwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxNDQsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAyMiwgMjMxLCAyMzcsIDcsIAotICAgIDQsIDEsIDE0NCwgMiwgMjE2LCA5MCwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNCwgMSwgCi0gICAgMTQ0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDcyLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDE0NCwgMiwgCi0gICAgNTksIDcyLCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjExLCAxMTgsIAotICAgIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDI0OSwgCi0gICAgMTA4LCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDI0NywgMTI3LCAyMzUsIDE1MCwgNywgNCwgCi0gICAgMSwgMjQ4LCAxNTEsIDI0NywgMjI4LCA3LCA0LCAxLCAyMjQsIDM0LCAyNDcsIDIyOCwgNywgNiwgMSwgMTE2LCAyLCA5MSwgCi0gICAgNywgNiwgMSwgMjUxLCA3NSwgMiwgOTEsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDkxLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMTMwLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMjE3LCAyNTEsIAotICAgIDIxNywgNzgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgNywgNiwgMSwgMjQyLCAxODcsIDIxOCwgCi0gICAgMTMxLCA3LCA0LCAxLCAyNDIsIDE4NywgMjE4LCAxMzEsIDcsIDYsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgMTA0LCAxMzAsIAotICAgIDcsIDYsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCA2LCAxLCAxNjAsIDIsIDkxLCA3LCA0LCAxLCAxNjAsIDIsIDkxLCA3LCAKLSAgICA2LCAxLCAyMzUsIDE1MSwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTUxLCAyLCA5MSwgNywgNiwgMSwgNCwgMjI0LCAxMDAsIDIsIAotICAgIDI0MSwgNTksIDIxNywgNzgsIDcsIDQsIDEsIDIyNCwgMTAwLCAyLCAyNDEsIDU5LCAyMTcsIDc4LCA3LCA2LCAxLCAyMjMsIAotICAgIDIyNywgMiwgOTEsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCA5MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAKLSAgICAyMTEsIDExOCwgMiwgOTEsIDcsIDQsIDEsIDIxNSwgOTQsIDYxLCA3LCA0LCAxLCAyNTQsIDE1MSwgNywgNCwgMSwgMjE1LCAKLSAgICA5NCwgMjU0LCAxNTEsIDcsIDQsIDEsIDU3LCAyLCAxMDMsIDcsIDQsIDEsIDIwNCwgNzgsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIAotICAgIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAyNDksIDY5LCAyLCAxMDMsIDcsIDQsIAotICAgIDEsIDIyMywgNTIsIDc2LCA3LCA0LCAxLCAyMjEsIDE5NywgNywgNCwgMSwgMjIxLCAxOTgsIDIsIDEwMywgNywgNCwgMSwgCi0gICAgMjA0LCA3NiwgNywgNCwgMSwgMjIzLCA1MiwgMjA0LCA3NiwgNywgNCwgMSwgMjIzLCA1MiwgMjA0LCAxNjAsIDIsIDEwMywgCi0gICAgNywgNCwgMSwgMjUwLCA4LCAyMjMsIDUyLCAyMDQsIDc2LCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTEsIDIsIDkxLCA3LCAKLSAgICA0LCAxLCAyNDMsIDIxMCwgMiwgMTAzLCA3LCA0LCAxLCAxMTksIDI0MywgMjA5LCA3LCAxLCA0LCA2LCAyNDMsIDIwOSwgNywgCi0gICAgNCwgMSwgMjQzLCAxMTQsIDcsIDQsIDEsIDIyMywgMTU0LCAyNDAsIDI1NSwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2NywgCi0gICAgNywgNCwgMSwgMjQyLCA2OCwgMiwgMTAzLCA3LCA0LCAxLCAyNDEsIDIxNSwgMiwgMTAzLCA3LCA0LCAxLCAyNDAsIDE2MSwgCi0gICAgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTkyLCA3LCAxLCA0LCA2LCA3NCwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAKLSAgICAxODQsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyNTIsIDQ5LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjIzLCA1OCwgMTAzLCAKLSAgICA3LCA0LCAxLCAyMzMsIDcsIDcsIDQsIDEsIDIxNSwgOTQsIDE5NCwgNywgNCwgMSwgMjE1LCA5NCwgMjMyLCA1NSwgMiwgCi0gICAgMjAwLCAyMzMsIDQyLCA3LCA0LCAxLCAyMzIsIDU1LCAyLCAxMDMsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDQzLCAxMDMsIDcsIAotICAgIDQsIDEsIDIzMCwgMzEsIDIsIDIyMywgNTgsIDEwMywgNywgMSwgNCwgNiwgMjMwLCAzMCwgNywgNCwgMSwgMjUyLCAxNDIsIAotICAgIDc4LCA3LCAxLCA0LCA2LCAyMjYsIDIzOCwgNywgNCwgMSwgMjUwLCA4LCAyMjYsIDIwNSwgNywgNCwgMSwgMjI1LCAxMzYsIAotICAgIDcsIDQsIDEsIDIxNSwgOTQsIDE1MywgNywgNCwgMSwgMjE1LCA5NCwgMjIzLCAyMjcsIDIsIDIwMCwgMjMzLCA0MiwgNywgNCwgCi0gICAgMSwgMjE1LCA5NCwgMjIzLCAyMjcsIDIsIDEwMywgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDIwMCwgMjMzLCA0MiwgNywgNCwgCi0gICAgMSwgMjIzLCAyMjcsIDIsIDIxNywgNzgsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyNDQsIDk1LCA3LCA0LCAxLCAyMjMsIDUyLCAKLSAgICAyMjMsIDIyNywgMiwgMjQ0LCA5NSwgNywgMSwgNCwgNiwgMTUzLCA3LCAxLCA0LCA2LCAyMzUsIDIwMCwgMTUzLCA3LCA0LCAKLSAgICAxLCAyMjIsIDk0LCAyLCAxMDMsIDcsIDQsIDEsIDI0NSwgODMsIDcsIDQsIDEsIDI0NywgMTI3LCAyMzUsIDE1MSwgMiwgCi0gICAgMjE4LCAxMDUsIDIyLCAxMDMsIDcsIDQsIDEsIDIxOCwgMjMzLCAyMjMsIDUyLCAyNDUsIDgzLCA3LCA0LCAxLCAyNDUsIDg0LCAKLSAgICAyLCAyNDksIDEwOCwgNywgNCwgMSwgMjE1LCA5NCwgMjE3LCAxNTMsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAyMjMsIDU4LCAKLSAgICAxMDMsIDcsIDQsIDEsIDEwNCwgMTMwLCA3LCA0LCAxLCAyMTQsIDE1NywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgCi0gICAgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxNSwgOTQsIDIxMiwgOTgsIDcsIDQsIDEsIDIxNSwgOTQsIAotICAgIDIxMSwgMTE3LCA3LCAxLCA0LCA2LCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjEwLCAxNjAsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDUsIDE2LCA3LCA0LCAxLCAyNDUsIDE3LCAyLCAyNDksIAotICAgIDEwOCwgNywgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA3LCAxLCAyMjUsIDE0MiwgMjEzLCAxMzUsIDI0NCwgMSwgNywgMSwgCi0gICAgMjM1LCAyMDAsIDI0MiwgMTg3LCAyMTgsIDEzMSwgNywgMSwgMjE4LCAxMTIsIDI1MSwgNzQsIDcsIDEsIDI1MSwgMjU0LCAKLSAgICAyNTAsIDE5LCA3LCAxLCA0LCA2LCAyNTMsIDE2NiwgNywgNCwgMSwgMjUwLCA4LCAyMDQsIDc2LCA3LCAxLCA0LCA2LCAyNDMsIAotICAgIDIxMCwgMiwgMTAzLCA3LCAxLCA0LCA2LCAyNDIsIDY3LCA3LCA0LCAxLCAyMzUsIDE1MSwgMiwgMjQ5LCAxMzUsIDcsIDQsIAotICAgIDEsIDIxNSwgOTQsIDIzNSwgMjksIDcsIDEsIDQsIDYsIDE1NiwgNywgNCwgMSwgMjI0LCAxMDAsIDIsIDEwMywgNywgMSwgCi0gICAgMjQyLCAxODcsIDIxOCwgMTMyLCAyLCA5MSwgNywgMSwgMjIzLCA1MiwgMjQyLCAxODcsIDIxOCwgMTMyLCAyLCA5MSwgNywgCi0gICAgNCwgMSwgMjQ2LCA0OCwgMjQ3LCAyMjgsIDcsIDQsIDEsIDI0OCwgMzQsIDI0NywgMjI4LCA3LCA0LCAxLCAyNDYsIDQ4LCAKLSAgICAyNDcsIDIyOSwgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDIxNSwgMTg2LCAyNDcsIDIyOCwgNywgNCwgMSwgMjE2LCAyMzYsIAotICAgIDI0NywgMjI4LCA3LCA0LCAxLCAyMTcsIDMwLCAyNDcsIDIyOSwgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDI0NCwgMTQyLCAKLSAgICAyNDcsIDIyOCwgNywgNCwgMSwgMjMyLCAxMDUsIDI0NywgMjI4LCA3LCA0LCAxLCAyMzIsIDU2LCAyNDcsIDIyOCwgNywgMSwgCi0gICAgMjUxLCAyNTQsIDIyNSwgMTg0LCA3LCAxLCAyNTIsIDYsIDIyNSwgMTg0LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDY4LCAyLCAKLSAgICAyNDQsIDk1LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDY4LCAyLCAyNDQsIDk2LCAyMiwgMjE3LCA3OCwgNTgsIDEsIDQsIAotICAgIDI0MiwgNjcsIDU4LCAxLCA0LCAyNDIsIDY4LCAyLCAxMDMsIDU4LCAxLCA0LCAyMzUsIDE1MCwgNTgsIDEsIDQsIDE1MywgCi0gICAgNTgsIDEsIDQsIDIxNSwgOTQsIDE1MywgNTgsIDEsIDQsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAxMDMsIDU4LCAxLCA0LCA2LCAKLSAgICAyMzUsIDIwMCwgMTUzLCA1OCwgMSwgNCwgMjEyLCA5OCwgNTgsIDEsIDQsIDIxMSwgMTE3LCA1OCwgMSwgMjI0LCAxOTMsIAotICAgIDU4LCAxLCA1MiwgMjI0LCAxOTMsIDU4LCAxLCAyMTUsIDk0LCAyNDksIDIyNywgNTgsIDEsIDI1NCwgNjUsIDU4LCAxLCAKLSAgICAyMjMsIDUyLCAyNDksIDIyNywgNTgsIDEsIDQ0LCAxNjMsIDIyMiwgMjM2LCA1OCwgMSwgNDMsIDE2MywgMjIyLCAyMzYsIAotICAgIDU4LCAxLCAyNDIsIDE4NywgMjE4LCAxMzEsIDU4LCAxLCAyMjMsIDUyLCAyNDIsIDE4NywgMjE4LCAxMzEsIDU4LCAxLCA0MywgCi0gICAgMjU0LCAxLCA1OCwgMSwgNDQsIDI1NCwgMSwgNTgsIDEsIDEyMCwgMjU0LCAxLCA1OCwgMSwgMTI0LCAyNTQsIDEsIDU4LCAxLCAKLSAgICAyNTAsIDM5LCAyNTUsIDIzLCAyNTAsIDI0MiwgNTgsIDEsIDY3LCAyMzIsIDIxOSwgNTgsIDEsIDIzMSwgMjM3LCA1OCwgMSwgCi0gICAgMjU1LCAxMiwgMjU1LCAyMywgNTgsIDEsIDI0MiwgMTQ0LCAyNTUsIDIzLCA1OCwgMSwgMTIxLCA2NywgMjMyLCAyMTksIDU4LCAKLSAgICAxLCAxMjEsIDIzMSwgMjM3LCA1OCwgMSwgMTIxLCAyNDIsIDE0NCwgMjU1LCAyMywgNTgsIDEsIDEyMSwgMjU1LCAxMiwgCi0gICAgMjU1LCAyMywgNTgsIDEsIDIxNSwgMjIzLCAyNDksIDIzNCwgNTgsIDEsIDE2MywgMjE1LCAyMjMsIDI0OSwgMjM0LCA1OCwgCi0gICAgMSwgMjUwLCAxODEsIDQ0LCAxNjMsIDIyMiwgMjM2LCA1OCwgMSwgMjUwLCAxODEsIDQzLCAxNjMsIDIyMiwgMjM2LCA1OCwgCi0gICAgMSwgMTIwLCAyMTcsIDg4LCA1OCwgMSwgMTI0LCAyMTcsIDg4LCA1OCwgMSwgOTYsIDUwLCA1OCwgMSwgMjMwLCAxODcsIDUwLCAKLSAgICAyNTEsIDE1NCwgNTksIDQ4LCAyMjIsIDIzNywgNDgsIDIyNiwgMjI4LCA0LCAxODQsIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCAKLSAgICA1OCwgMSwgMjIzLCAzOSwgMTAzLCA1OCwgMSwgMjQ5LCAxMzksIDI1NSwgMjMsIDU4LCAxLCA0LCAyNDMsIDExNCwgNTgsIDEsIAotICAgIDQsIDE1NiwgNTgsIDEsIDQsIDIyMiwgOTMsIDU4LCAxLCA0LCAyMTEsIDE3OCwgNTgsIDEsIDQsIDIyMywgNTIsIDI0MiwgCi0gICAgMTg3LCAyMTgsIDEzMSwgNTgsIDEsIDI0NSwgMjgsIDEzOCwgMTMwLCA1OCwgMSwgMTI1LCAxMzgsIDEzMCwgNTgsIDEsIAotICAgIDIzMCwgMjMwLCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDI3LCAxMzgsIDEzMCwgNTgsIAotICAgIDEsIDIxMCwgMjU0LCAyNDgsIDUyLCAxMzgsIDc5LCA1OCwgMSwgMjExLCA3MCwgMjQ4LCA1MiwgMTM4LCA3OSwgNTgsIDEsIAotICAgIDIxMywgMTMzLCA1OCwgMSwgMjE0LCAxODYsIDU4LCAxLCA1MiwgMjU0LCA2NSwgNTgsIDEsIDEyMSwgMTI0LCAyNTQsIDEsIAotICAgIDU4LCAxLCAxMjEsIDEyMCwgMjU0LCAxLCA1OCwgMSwgMTIxLCA0MywgMjU0LCAxLCA1OCwgMSwgMTIxLCA0NCwgMjU0LCAxLCAKLSAgICA1OCwgMSwgMTIxLCAyMjIsIDIzNiwgNTgsIDEsIDIzMCwgMjI5LCAyNDIsIDE0NCwgMjU1LCAyMywgNTgsIDEsIDIzMCwgCi0gICAgMjI5LCA1MiwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAyMzAsIDIyOSwgNTIsIDI1NSwgMTIsIDI1NSwgMjMsIDU4LCAxLCAKLSAgICAxMjEsIDE4NCwgNTgsIDEsIDIyMywgMTYwLCAyNDksIDIzNCwgNTgsIDEsIDI1MiwgNjYsIDEyNSwgMjE2LCAzMSwgNTgsIDEsIAotICAgIDI0NSwgMTUxLCAxMjUsIDIxNiwgMzEsIDU4LCAxLCAyNTIsIDY2LCAxMjEsIDIxNiwgMzEsIDU4LCAxLCAyNDUsIDE1MSwgCi0gICAgMTIxLCAyMTYsIDMxLCA1OCwgMSwgMjIwLCA1NiwgNTgsIDEsIDIwNCwgMjIwLCA1NiwgNTgsIDEsIDEyMSwgNDMsIDc1LCAKLSAgICAzOCwgMjQyLCAxNDQsIDI1NSwgMjMsIDM4LCAyNTUsIDEyLCAyNTUsIDIzLCAzOCwgMjUwLCAzOSwgMjU1LCAyMywgMzgsIAotICAgIDE4NCwgMzgsIDIzMSwgMjM3LCAzOCwgMjI2LCAxMjMsIDM4LCAyNTEsIDE1NCwgMzgsIDU5LCA0OCwgMzgsIDI0OCwgOSwgCi0gICAgMzgsIDI0MSwgNTksIDQ4LCAzOCwgMjIyLCAyMzcsIDQ4LCAzOCwgNTIsIDI1NSwgMTIsIDI1NSwgMjMsIDM4LCAyNTAsIAotICAgIDI0MiwgMzgsIDY3LCAyMzIsIDIyMCwgNDgsIDM4LCA1MiwgNjcsIDIzMiwgMjIwLCA0OCwgMzgsIDUyLCAyNDIsIDE0NCwgCi0gICAgMjU1LCAyMywgMzgsIDI1MSwgNywgMzgsIDIzNSwgMjAwLCAyNTEsIDE1NCwgMzgsIDIxNSwgOTQsIDI0OSwgMjI4LCA0OCwgCi0gICAgMzgsIDI0OSwgMjI4LCA0OCwgMzgsIDIyMywgNTIsIDI0OSwgMjI4LCA0OCwgMzgsIDI0OSwgMjI4LCA3MiwgMjIyLCAyNTQsIAotICAgIDM4LCAyNDIsIDE0NCwgMjU1LCAyNCwgNTEsIDM4LCAyNTUsIDEyLCAyNTUsIDI0LCA1MSwgMzgsIDQzLCAyMTcsIDg5LCA1MSwgCi0gICAgMzgsIDQ0LCAyMTcsIDg5LCA1MSwgMzgsIDQzLCAyNTQsIDExOCwgNDgsIDM4LCAyNDAsIDI1NSwgMzgsIDQzLCAxNjMsIAotICAgIDIyMiwgMjM3LCA1MSwgMzgsIDEyMCwgMjE3LCA4OSwgNTEsIDM4LCAxMjQsIDIxNywgODksIDUxLCAzOCwgOTYsIDUsIDUxLCAKLSAgICAzOCwgMjMwLCAxODcsIDUsIDUxLCAzOCwgMjI2LCA2OCwgMjQxLCA1OSwgNTEsIDM4LCAyMjMsIDU4LCAyNDEsIDU5LCA1MSwgCi0gICAgMzgsIDU5LCA1MSwgMzgsIDI0OCwgMTAsIDUxLCAzOCwgMjIyLCAyMzcsIDUxLCAzOCwgMjQ5LCAyMjgsIDUxLCAzOCwgMjUwLCAKLSAgICAxOTEsIDM4LCAyMjYsIDIyOCwgMzgsIDY3LCAyMzIsIDIyMCwgNTEsIDM4LCAyNTEsIDE0OCwgNTEsIDM4LCAyMzUsIDIwMCwgCi0gICAgNTIsIDI1NCwgMzIsIDUxLCAzOCwgMjUwLCAyNDMsIDUxLCAzOCwgMjUwLCAzOSwgMjU1LCAyNCwgNTEsIDM4LCAyNTEsIAotICAgIDE1NSwgNTEsIDM4LCAyMzUsIDIwMCwgMjUxLCAxNTUsIDUxLCAzOCwgMjE2LCA5MCwgNTEsIDM4LCAyMzEsIDIzOCwgNTEsIAotICAgIDM4LCAxMjEsIDIzMiwgMjE5LCAzOCwgNTIsIDEyMSwgMjMyLCAyMTksIDM4LCAyMTYsIDkwLCAyMjYsIDEyNCwgMzgsIDIxOSwgCi0gICAgMjUzLCAyMTgsIDEwNSwgMjI2LCAxMjQsIDM4LCAyMDAsIDIxOCwgMTA1LCAyMjYsIDEyNCwgMzgsIDIxOSwgMjUzLCAyMTksIAotICAgIDQ5LCAyMjYsIDEyNCwgMzgsIDIwMCwgMjE5LCA0OSwgMjI2LCAxMjQsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNywgNTEsIDM4LCAKLSAgICAyMzUsIDIwMCwgMjUxLCAxNDgsIDUxLCAzOCwgNDIsIDUxLCAzOCwgMjIxLCAxODIsIDUxLCAzOCwgMjExLCAxNzksIDQ4LCAKLSAgICAzOCwgNjcsIDE4NCwgMzgsIDUyLCAyMjYsIDEyMywgMzgsIDI0MiwgMTQ0LCAxMzgsIDc5LCAzOCwgMjU1LCAxMiwgMTM4LCAKLSAgICA3OSwgMzgsIDI2LCAyMjUsIDE3OCwgMzgsIDI2LCAyMzQsIDgsIDM4LCAyNiwgMjQ4LCA0LCAyMTYsIDE5LCAzOCwgMjYsIAotICAgIDIxMCwgMjE5LCAzOCwgMjUxLCAxNDgsIDQ4LCAzOCwgMjQ1LCAxMDYsIDUsIDUxLCAzOCwgNTIsIDY3LCAyMzIsIDIyMCwgCi0gICAgNTEsIDM4LCA0MywgMjU0LCAxMTgsIDUxLCAzOCwgMjI4LCA1NywgMjE2LCA5MCwgNDgsIDM4LCAyNDEsIDY1LCA0OCwgMzgsIAotICAgIDI1NCwgMTU2LCAxMjgsIDIxNiwgNDMsIDQ4LCAzOCwgNDMsIDQ0LCA4MCwgNTEsIDM4LCAyMTQsIDE1MywgODAsIDUxLCAzOCwgCi0gICAgMjQyLCAxNDksIDIzNSwgNjksIDM4LCA0NCwgMjU0LCAyLCA0OCwgMzgsIDQzLCAxNjMsIDIyMiwgMjM3LCA0OCwgMzgsIAotICAgIDI0NCwgMTM5LCAzOCwgMjExLCAxNzksIDUxLCAzOCwgNDMsIDI1NCwgMiwgNTEsIDM4LCA0NCwgMjU0LCAyLCA1MSwgMzgsIAotICAgIDQ0LCAyNTQsIDIsIDIyLCAxMjAsIDI1NCwgMiwgNTEsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNywgNDgsIDM4LCA1OSwgNzIsIAotICAgIDIyMiwgMjU0LCAzOCwgMjUzLCAyMjUsIDUxLCAzOCwgNTIsIDIyMiwgMjM3LCA1MSwgMzgsIDIxMCwgMzUsIDQ4LCAzOCwgCi0gICAgNTIsIDI1MSwgMTU1LCA1MSwgMzgsIDUyLCAyNTEsIDE1NCwgMzgsIDUyLCAyMzEsIDIzNywgMzgsIDUyLCAyMzEsIDIzOCwgCi0gICAgNTEsIDM4LCA1MiwgMTg0LCAzOCwgNTIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgMzgsIDUyLCA5NywgODAsIDUxLCAzOCwgNywgCi0gICAgNCwgMSwgNjEsIDM4LCA3LCA0LCAxLCA3NiwgMzgsIDcsIDQsIDEsIDc0LCAzOCwgNywgNCwgMSwgNzgsIDM4LCA3LCA0LCAxLCAKLSAgICA2OSwgMzgsIDcsIDQsIDEsIDI1MSwgNzQsIDM4LCA3LCA0LCAxLCAyNDksIDY4LCAzOCwgNywgNCwgMSwgMjQyLCA2NywgMzgsIAotICAgIDcsIDQsIDEsIDE5NCwgMzgsIDcsIDQsIDEsIDE1MywgMzgsIDcsIDQsIDEsIDIxNywgMTUzLCAzOCwgNywgNCwgMSwgMjE0LCAKLSAgICAxMDUsIDM4LCA3LCA0LCAxLCAyMTEsIDE3OCwgMjYsIDYsIDEsIDI0MSwgMjAzLCAyNiwgNCwgMSwgMjQxLCAyMDMsIDI2LCAKLSAgICA2LCAxLCAyNTQsIDMxLCAyMjEsIDI0OCwgMjYsIDQsIDEsIDI1NCwgMzEsIDIyMSwgMjQ4LCAyNiwgMjI3LCAyMDIsIDUwLCAKLSAgICAyNiwgMjMyLCAxMTQsIDIyNywgMjAyLCA1MCwgMjYsIDYsIDEsIDIyNiwgNTUsIDI0NywgMjM1LCAyNiwgNCwgMSwgMjI2LCAKLSAgICA1NSwgMjQ3LCAyMzUsIDI2LCAyMTAsIDIxOSwgMjYsIDQsIDIyMywgNTIsIDIzMiwgODgsIDIxOSwgMTgwLCA4NywgMjYsIDQsIAotICAgIDI0NiwgMTI2LCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA0LCAyMjMsIDUyLCAyNDYsIDEyNiwgMjMyLCA4OCwgMjE5LCAKLSAgICAxODAsIDg3LCAyNiwgMjI0LCAxNiwgNzksIDI2LCAyMTYsIDE5LCAyNiwgMjQ4LCA0LCAyMTYsIDE5LCAyNiwgNiwgMSwgCi0gICAgMjU0LCAxNTIsIDIsIDIxNiwgMTksIDI2LCAyNTQsIDEwNSwgMjE3LCAzLCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDIxNiwgCi0gICAgMTksIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMTYsIDE5LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxNiwgMTksIDI2LCA2LCAKLSAgICAxLCAyMjYsIDIwNCwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTYsIDE5LCAyNiwgNiwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCA0LCAyMiwgMjE2LCAxOSwgMjYsIDYsIDEsIAotICAgIDI1NCwgMTUxLCAyNiwgNiwgMSwgMjUyLCAzNCwgMjYsIDYsIDEsIDI0MywgMTE0LCAyNiwgNiwgMSwgMjQ4LCA2MiwgMjYsIAotICAgIDYsIDEsIDI0NSwgMTA4LCAyNiwgNiwgMSwgMjEwLCA4NSwgMjYsIDYsIDEsIDI0NSwgNzEsIDI2LCA2LCAxLCAyMTYsIDE4MCwgCi0gICAgMjYsIDYsIDEsIDIzNSwgMTkyLCAyNiwgNiwgMSwgMjM0LCAyMjgsIDI2LCA2LCAxLCAyMzMsIDEwNCwgMjYsIDYsIDEsIAotICAgIDIzMCwgMTA3LCAyNiwgNiwgMSwgMjI3LCAyNDIsIDI2LCA2LCAxLCAyMTEsIDE1NywgMjYsIDYsIDEsIDIyNiwgMjAzLCAyNiwgCi0gICAgNiwgMSwgMjI1LCAxMTEsIDI2LCA2LCAxLCAyMjMsIDQwLCAyNiwgNiwgMSwgMjE5LCAxNzksIDI2LCA2LCAxLCAyMTcsIDQyLCAKLSAgICAyNiwgNiwgMSwgMjE0LCAxNTcsIDI2LCA2LCAxLCAyMjUsIDEzNiwgMjYsIDYsIDEsIDI1MCwgMTE4LCAyNiwgNiwgMSwgCi0gICAgMjI0LCAxNjQsIDI2LCA2LCAxLCAyMjYsIDIwNSwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDMsIDI2LCA2LCAxLCAKLSAgICAyMTQsIDE1OCwgMiwgMjQ4LCAzLCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyNDUsIDEwOSwgCi0gICAgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjE2LCAKLSAgICAxOSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjU0LCAxNTEsIDI2LCAKLSAgICA0LCAxLCAyNTIsIDM0LCAyNiwgNCwgMSwgMjQzLCAxMTQsIDI2LCA0LCAxLCAyNDgsIDYyLCAyNiwgNCwgMSwgMjQ1LCAxMDgsIAotICAgIDI2LCA0LCAxLCAyMTAsIDg1LCAyNiwgNCwgMSwgMjQ1LCA3MSwgMjYsIDQsIDEsIDIxNiwgMTgwLCAyNiwgNCwgMSwgMjM1LCAKLSAgICAxOTIsIDI2LCA0LCAxLCAyMzQsIDIyOCwgMjYsIDQsIDEsIDIzMywgMTA0LCAyNiwgNCwgMSwgMjMwLCAxMDcsIDI2LCA0LCAKLSAgICAxLCAyMjcsIDI0MiwgMjYsIDQsIDEsIDIxMSwgMTU3LCAyNiwgNCwgMSwgMjI2LCAyMDMsIDI2LCA0LCAxLCAyMjUsIDExMSwgCi0gICAgMjYsIDQsIDEsIDIyMywgNDAsIDI2LCA0LCAxLCA0MCwgMjE5LCAxNzksIDI2LCA0LCAxLCAyMTksIDE3OSwgMjYsIDQsIDEsIAotICAgIDIxNywgNDIsIDI2LCA0LCAxLCAyMTQsIDE1NywgMjYsIDQsIDEsIDIyNSwgMTM2LCAyNiwgNCwgMSwgMjUwLCAxMTgsIDI2LCAKLSAgICA0LCAxLCAyMjQsIDE2NCwgMjYsIDQsIDEsIDIyNiwgMjA1LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMywgMjYsIDQsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDMsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDIxNCwgCi0gICAgMTU4LCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNiwgMTksIDI2LCA2LCAyMzQsIDI1MywgODcsIDI2LCAKLSAgICAyNTIsIDM1LCA4NywgMjYsIDIxNiwgMTgxLCA4NywgMjYsIDIxNCwgMTU4LCAyLCAyNDEsIDU5LCA4NywgMjYsIDIxNCwgCi0gICAgMTU4LCAyLCAyNTUsIDEyLCAyMiwgMjQxLCA1OSwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQ4LCAxMCwgMjIsIDI0MSwgNTksIAotICAgIDg3LCAyNiwgMjI1LCAxMzcsIDg3LCAyNiwgMjI1LCAxMTIsIDg3LCAyNiwgMjM0LCAyNTMsIDg3LCAyNiwgMSwgMjU0LCAzMSwgCi0gICAgMjM0LCAxMiwgMjYsIDQsIDEsIDI1NCwgMzEsIDIzNCwgMTIsIDI2LCAxLCAyMTgsIDEzOSwgMjYsIDQsIDEsIDIxOCwgMTM5LCAKLSAgICAyNiwgMSwgMjQ3LCAyMzUsIDI2LCA0LCAxLCAyNDcsIDIzNSwgMjYsIDEsIDIzNCwgMTIsIDI2LCA0LCAxLCAyMzQsIDEyLCAKLSAgICAyNiwgMSwgMjIxLCAyNDgsIDI2LCA0LCAxLCAyMjEsIDI0OCwgODEsIDYsIDEsIDIyMCwgNTcsIDgxLCA0LCAxLCAyMjAsIAotICAgIDU3LCA4MSwgNiwgMSwgMjQ0LCAxNDgsIDgxLCA0LCAxLCAyNDQsIDE0OCwgODEsIDYsIDEsIDIzNCwgMTIzLCA4MSwgNCwgMSwgCi0gICAgMjM0LCAxMjMsIDgxLCA2LCAxLCAyNDEsIDUyLCA4MSwgNCwgMSwgMjQxLCA1MiwgODEsIDYsIDEsIDI0MywgMTA5LCA4MSwgCi0gICAgNCwgMSwgMjQzLCAxMDksIDgxLCA2LCAxLCAyMjAsIDI0LCA4MSwgNCwgMSwgMjIwLCAyNCwgODEsIDYsIDEsIDI0OCwgNzcsIAotICAgIDgxLCA0LCAxLCAyNDgsIDc3LCAyNiwgMjM0LCAyMjksIDg3LCAyNiwgMjIzLCA0MSwgODcsIDI2LCAyMzIsIDg4LCAyMTksIAotICAgIDE4MCwgODcsIDI2LCAxLCAyMTAsIDIyNCwgMjYsIDYsIDIxNiwgMTgxLCA4NywgMjYsIDIzMiwgODgsIDI0NSwgMTA5LCA4NywgCi0gICAgMjYsIDIyMywgNTIsIDIzMiwgODgsIDI0NSwgMTA5LCA4NywgMjYsIDYsIDEsIDIyMCwgOSwgMjYsIDQsIDEsIDIyMCwgOSwgCi0gICAgMjYsIDYsIDIzMiwgODgsIDIxOSwgMTgwLCA4NywgMjYsIDYsIDEsIDIyMSwgMjQ1LCAyNiwgNCwgMSwgMjIxLCAyNDUsIDI2LCAKLSAgICAyMjMsIDQxLCAyLCAyMTgsIDEwNSwgODcsIDI2LCA2LCAyMjMsIDUyLCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA2LCAKLSAgICAyNDYsIDEyNiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNiwgMjIzLCA1MiwgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgCi0gICAgMTgwLCA4NywgMzMsIDYsIDEsIDIzNiwgNjgsIDIsIDI0MiwgMTQzLCAzMywgNiwgMSwgMjM1LCAxOTYsIDMzLCA2LCAxLCAKLSAgICAyNDcsIDE3MCwgMzMsIDYsIDEsIDI0MiwgMTk0LCAzMywgNiwgMSwgMjE0LCAyMDIsIDIzNiwgNjcsIDMzLCA2LCAxLCAyNDYsIAotICAgIDQ0LCAzMywgNiwgMSwgMjUxLCA4NCwgNzQsIDMzLCA2LCAxLCAyMTEsIDgsIDMzLCA2LCAxLCAyMzUsIDEzMiwgMzMsIDYsIAotICAgIDEsIDIzMiwgMTkzLCAzMywgNiwgMSwgMjI4LCAxODMsIDMzLCA2LCAxLCAyMTUsIDE3NSwgMzMsIDYsIDEsIDIzNCwgNTQsIAotICAgIDMzLCA2LCAxLCAyNDAsIDE2MSwgMiwgMjQyLCAxNDMsIDMzLCA2LCAxLCAyMTksIDI1MywgNjksIDMzLCA2LCAxLCAyNDYsIAotICAgIDQwLCAzMywgNiwgMSwgNjEsIDMzLCA2LCAxLCAyNTIsIDgzLCAzMywgNiwgMSwgMjEzLCAyNTUsIDMzLCA2LCAxLCAyNDIsIAotICAgIDI0MywgMzMsIDYsIDEsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMzYsIDY3LCAzMywgNiwgMSwgMjEwLCA3NCwgMzMsIDYsIDEsIAotICAgIDIxMCwgOTQsIDMzLCA2LCAxLCA3NCwgMzMsIDYsIDEsIDIxOSwgMjUzLCA3NCwgMzMsIDYsIDEsIDE3NiwgMzMsIDYsIDEsIAotICAgIDI0NSwgMTgyLCAzMywgNiwgMSwgMjQ1LCAxNjcsIDMzLCA2LCAxLCAyNDUsIDE1OCwgMzMsIDYsIDEsIDc4LCAzMywgNiwgMSwgCi0gICAgMjI1LCAyMjQsIDMzLCA2LCAxLCAyNDUsIDEwMCwgMzMsIDYsIDEsIDI0NSwgOTAsIDMzLCA2LCAxLCAyMTcsIDIzLCAzMywgCi0gICAgNiwgMSwgNjksIDMzLCA2LCAxLCAyNDUsIDIxMCwgMzMsIDYsIDEsIDE2MiwgMzMsIDYsIDEsIDIxNSwgMTc5LCAzMywgNiwgCi0gICAgMSwgMjUwLCAxMzksIDMzLCA2LCAxLCAyMjAsIDEwNCwgMzMsIDYsIDEsIDIyMCwgNjcsIDMzLCA2LCAxLCAyNDIsIDEwLCAKLSAgICA1MCwgMzMsIDYsIDEsIDIxMSwgMjcsIDMzLCA2LCAxLCAyMTksIDU0LCA1MCwgMzMsIDYsIDEsIDc2LCAzMywgNiwgMSwgCi0gICAgMjEwLCAyMTIsIDMzLCA2LCAxLCAxOTIsIDMzLCA0LCAxLCA2MSwgMzMsIDQsIDEsIDI1MiwgODMsIDMzLCA0LCAxLCAyMTMsIAotICAgIDI1NSwgMzMsIDQsIDEsIDI0MiwgMjQzLCAzMywgNCwgMSwgMjQ4LCA5OCwgMzMsIDQsIDEsIDIzNiwgNjcsIDMzLCA0LCAxLCAKLSAgICAyMTAsIDc0LCAzMywgNCwgMSwgMjEwLCA5NCwgMzMsIDQsIDEsIDc0LCAzMywgNCwgMSwgMjE5LCAyNTMsIDc0LCAzMywgNCwgCi0gICAgMSwgMTc2LCAzMywgNCwgMSwgMjQ1LCAxODIsIDMzLCA0LCAxLCAyNDUsIDE2NywgMzMsIDQsIDEsIDI0NSwgMTU4LCAzMywgCi0gICAgNCwgMSwgNzgsIDMzLCA0LCAxLCAyMjUsIDIyNCwgMzMsIDQsIDEsIDI0NSwgMTAwLCAzMywgNCwgMSwgMjQ1LCA5MCwgMzMsIAotICAgIDQsIDEsIDIxNywgMjMsIDMzLCA0LCAxLCA2OSwgMzMsIDQsIDEsIDI0NSwgMjEwLCAzMywgNCwgMSwgMTYyLCAzMywgNCwgMSwgCi0gICAgMjE1LCAxNzksIDMzLCA0LCAxLCAyNTAsIDEzOSwgMzMsIDQsIDEsIDIyMCwgMTA0LCAzMywgNCwgMSwgMjIwLCA2NywgMzMsIAotICAgIDQsIDEsIDI0MiwgMTAsIDUwLCAzMywgNCwgMSwgMjExLCAyNywgMzMsIDQsIDEsIDIxOSwgNTQsIDUwLCAzMywgNCwgMSwgCi0gICAgNzYsIDMzLCA0LCAxLCAyMTAsIDIxMiwgMzMsIDQsIDEsIDE5MiwgMzMsIDQsIDEsIDIzNiwgNjgsIDIsIDI0MiwgMTQzLCAKLSAgICAzMywgNCwgMSwgMjM1LCAxOTYsIDMzLCA0LCAxLCAyNDcsIDE3MCwgMzMsIDQsIDEsIDI0MiwgMTk0LCAzMywgNCwgMSwgCi0gICAgMjE0LCAyMDIsIDIzNiwgNjcsIDMzLCA0LCAxLCAyNDYsIDQ0LCAzMywgNCwgMSwgMjUxLCA4NCwgNzQsIDMzLCA0LCAxLCAKLSAgICAyMTEsIDgsIDMzLCA0LCAxLCAyMzUsIDEzMiwgMzMsIDQsIDEsIDIzMiwgMTkzLCAzMywgNCwgMSwgMjI4LCAxODMsIDMzLCAKLSAgICA0LCAxLCAyMTUsIDE3NSwgMzMsIDQsIDEsIDIzNCwgNTQsIDMzLCA0LCAxLCAyNDAsIDE2MSwgMiwgMjQyLCAxNDMsIDMzLCAKLSAgICA0LCAxLCAyMTksIDI1MywgNjksIDMzLCA0LCAxLCAyNDYsIDQwLCAzMywgNiwgMSwgMjI2LCAyMDUsIDMzLCA0LCAxLCAyMjYsIAotICAgIDIwNSwgMzMsIDYsIDEsIDIxMSwgNTksIDMzLCA0LCAxLCAyMTEsIDU5LCAzMywgNiwgMSwgMjM1LCAxOTAsIDc2LCAzMywgNCwgCi0gICAgMSwgMjM1LCAxOTAsIDc2LCAzMywgNiwgMSwgMjMyLCAxOTgsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjMyLCAxOTgsIDIxMCwgCi0gICAgMTgzLCAzMywgNiwgMSwgMjM1LCAxOTAsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAyMzIsIAotICAgIDE5OCwgMjEwLCAxODMsIDMzLCA2LCAxLCAyNTIsIDEsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUyLCAxLCAyMTAsIDE4MywgCi0gICAgMzMsIDYsIDEsIDIzNSwgMTkwLCAyNTIsIDEsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxOTAsIDI1MiwgMSwgMjEwLCAKLSAgICAxODMsIDMzLCA2LCAxLCAyMzMsIDIzOSwgMzMsIDQsIDEsIDIzMywgMjM5LCAzMywgNiwgMSwgMjI0LCAxNjQsIDMzLCA0LCAKLSAgICAxLCAyMjQsIDE2NCwgMzMsIDYsIDEsIDI0NCwgOTAsIDMzLCA0LCAxLCAyNDQsIDkwLCAzMywgNiwgMSwgMjM1LCAxNTIsIAotICAgIDMzLCA0LCAxLCAyMzUsIDE1MiwgMzMsIDYsIDEsIDIzNSwgMTUzLCAyLCA1MiwgMjQyLCAxNDQsIDI1NSwgMjMsIDMzLCA0LCAKLSAgICAxLCAyMzUsIDE1MywgMiwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzMywgNiwgMSwgMjE0LCAyMDUsIDMzLCA0LCAxLCAyMTQsIAotICAgIDIwNSwgMzMsIDYsIDEsIDIyMiwgMTg3LCAyMjYsIDIwNSwgMzMsIDQsIDEsIDIyMiwgMTg3LCAyMjYsIDIwNSwgMzMsIDYsIAotICAgIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDY2LCAzMywgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNiwgNjYsIDMzLCA2LCAxLCAyMjYsIAotICAgIDE0NCwgMzMsIDQsIDEsIDIyNiwgMTQ0LCAzMywgNiwgMSwgMjM0LCAxMiwgMzMsIDQsIDEsIDIzNCwgMTIsIDMzLCAyMTYsIAotICAgIDE0NywgNTAsIDM4LCAzMywgMjE2LCA2NiwgMzgsIDMzLCAyMjYsIDY5LCAzOCwgMzMsIDI0OCwgMTYyLCAyMjUsIDIxLCAzOCwgCi0gICAgMzMsIDIyNCwgMTU4LCAyMjUsIDIxLCAzOCwgMzMsIDIyNSwgNiwgMzgsIDMzLCAyNDAsIDIxOCwgMjE2LCAxNDcsIDUwLCAKLSAgICAzOCwgMzMsIDIzMCwgMTk2LCA1MCwgMzMsIDYsIDEsIDIxOSwgMjUzLCAyNDAsIDE2MSwgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIAotICAgIDIxOSwgMjUzLCAyNDAsIDE2MSwgMiwgMjE3LCA3OCwgMzMsIDYsIDEsIDIyMCwgMTQ4LCA1MCwgMzMsIDQsIDEsIDIyMCwgCi0gICAgMTQ4LCA1MCwgMzMsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIDExNSwgMzMsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIAotICAgIDExNSwgMzMsIDYsIDEsIDI0MiwgMjQ0LCAyLCAyMTQsIDE1NiwgMzMsIDQsIDEsIDI0MiwgMjQ0LCAyLCAyMTQsIDE1NiwgCi0gICAgMzMsIDYsIDEsIDI0MiwgMjQ0LCAyLCA5MSwgMzMsIDQsIDEsIDI0MiwgMjQ0LCAyLCA5MSwgMzMsIDYsIDEsIDI0MiwgMjQ0LCAKLSAgICAyLCAyMzAsIDIyOSwgMTAzLCAzMywgNCwgMSwgMjQyLCAyNDQsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA2LCAxLCAyMTAsIAotICAgIDc1LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIDIxMCwgOTUsIDIsIDI0OCwgCi0gICAgNDcsIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgMjQ4LCA0NywgMzMsIDQsIAotICAgIDEsIDIzNSwgMTksIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMzUsIDE5LCAyLCA2NywgOTEsIDMzLCA0LCAxLCAyMzUsIDE5LCAKLSAgICAyLCA2NywgOTEsIDMzLCA2LCAxLCAyMzUsIDE5LCAyLCA5MSwgMzMsIDQsIDEsIDIzNSwgMTksIDIsIDkxLCAzMywgNiwgMSwgCi0gICAgMjUyLCAxMzIsIDE3NiwgMzMsIDQsIDEsIDI1MiwgMTMyLCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE1OSwgMiwgMjQ4LCA0NywgCi0gICAgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAyNDgsIDQ3LCAzMywgNiwgMjcsIDI0NSwgMTU5LCAyNDIsIDI0MywgMzMsIDQsIDI3LCAKLSAgICAyNDUsIDE1OSwgMjQyLCAyNDMsIDMzLCA2LCAxLCAyMjUsIDIyNSwgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDIyNSwgCi0gICAgMjI1LCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjU1LCAyOSwgMTYyLCAzMywgNCwgMSwgMjU1LCAyOSwgMTYyLCAKLSAgICAzMywgNiwgMSwgMjQ1LCA5MSwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI0NSwgOTEsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAKLSAgICAyMTcsIDI0LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjE3LCAyNCwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIDIxOCwgMTIzLCAKLSAgICA2OSwgMzMsIDQsIDEsIDIxOCwgMTIzLCA2OSwgMzMsIDYsIDEsIDIxOCwgMTIzLCAxMDQsIDIsIDkxLCAzMywgNCwgMSwgCi0gICAgMjE4LCAxMjMsIDEwNCwgMiwgOTEsIDMzLCA2LCAxLCAyNDIsIDU2LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjQyLCA1NiwgCi0gICAgMiwgMjQ4LCA0NywgMzMsIDYsIDI3LCAyMTcsIDI0LCAyMTUsIDE3OSwgMzMsIDQsIDI3LCAyMTcsIDI0LCAyMTUsIDE3OSwgCi0gICAgMzMsIDYsIDEsIDI1MCwgMTQwLCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjUwLCAxNDAsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAKLSAgICAyNTAsIDE0MCwgMiwgNjcsIDkxLCAzMywgNCwgMSwgMjUwLCAxNDAsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIDIyMCwgMzUsIAotICAgIDMzLCA0LCAxLCAyMjAsIDM1LCAzMywgNiwgMSwgMjU1LCAyOSwgMjUwLCAxMzksIDMzLCA0LCAxLCAyNTUsIDI5LCAyNTAsIAotICAgIDEzOSwgMzMsIDYsIDEsIDI1NSwgMjksIDI1MCwgMTQwLCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjU1LCAyOSwgMjUwLCAKLSAgICAxNDAsIDIsIDI0OCwgNDcsIDMzLCAxLCAyMjYsIDYyLCAzMywgNiwgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNTQsIDMzLCA0LCAKLSAgICAxLCAyMTAsIDc1LCAyLCAyNTEsIDE1NCwgMzMsIDYsIDEsIDIzNSwgMTksIDIsIDEwMywgMzMsIDQsIDEsIDIzNSwgMTksIDIsIAotICAgIDEwMywgMzMsIDYsIDEsIDI0NSwgMTgzLCAyLCAyMTcsIDc4LCAzMywgNCwgMSwgMjQ1LCAxODMsIDIsIDIxNywgNzgsIDMzLCAKLSAgICA2LCAxLCAyNDUsIDE1OSwgMiwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNTksIDIsIDEwMywgMzMsIDYsIDEsIDI0NSwgMTU5LCAKLSAgICAyLCAyMTcsIDc4LCAzMywgNCwgMSwgMjQ1LCAxNTksIDIsIDIxNywgNzgsIDMzLCA2LCAxLCAyMzQsIDEzMywgMjUwLCAxMzksIAotICAgIDMzLCA0LCAxLCAyMzQsIDEzMywgMjUwLCAxMzksIDMzLCA2LCAxLCAyNDUsIDE2OCwgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIAotICAgIDI0NSwgMTY4LCAyLCAyMTcsIDc4LCAzMywgNCwgMSwgMjI2LCA2MiwgMzMsIDYsIDEsIDExNiwgMiwgMjUxLCAxNTQsIDMzLCAKLSAgICA0LCAxLCAxMTYsIDIsIDI1MSwgMTU0LCAzMywgNiwgMSwgMTE2LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAxMTYsIDIsIDI0OCwgCi0gICAgOSwgMzMsIDYsIDI3LCAxMTYsIDIzNiwgNjcsIDMzLCA0LCAyNywgMTE2LCAyMzYsIDY3LCAzMywgNiwgMSwgMjM2LCA2OCwgCi0gICAgMiwgMjUxLCAxNTQsIDMzLCA0LCAxLCAyMzYsIDY4LCAyLCAyNTEsIDE1NCwgMzMsIDYsIDEsIDIyMSwgMTk3LCAzMywgNCwgCi0gICAgMSwgMjIxLCAxOTcsIDMzLCA2LCAxLCAyMjEsIDE5OCwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMjIxLCAxOTgsIDIsIDI0OCwgCi0gICAgOSwgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIAotICAgIDIxMCwgOTUsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDI1NSwgMjksIDI0NiwgCi0gICAgNDQsIDMzLCA0LCAxLCAyNTUsIDI5LCAyNDYsIDQ0LCAzMywgNiwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgMjM3LCAzMywgNCwgCi0gICAgMSwgMjQwLCAxNjEsIDIsIDIzMSwgMjM3LCAzMywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDI0MCwgCi0gICAgMTYxLCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxNDQsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDE0NCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNiwgMSwgMjUyLCAxNDIsIDc4LCAzMywgNCwgMSwgMjUyLCAxNDIsIDc4LCAzMywgNiwgMSwgMjUyLCAxNDIsIDE0NCwgMiwgCi0gICAgMjQ4LCA5LCAzMywgNCwgMSwgMjUyLCAxNDIsIDE0NCwgMiwgMjQ4LCA5LCAzMywgNiwgMSwgMTYwLCAyLCAyNDgsIDksIDMzLCAKLSAgICA0LCAxLCAxNjAsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzcsIDMzLCA0LCAxLCAxMDQsIDIsIDIzMSwgCi0gICAgMjM3LCAzMywgNiwgMSwgMTA0LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAxMDQsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDEwNCwgCi0gICAgMiwgNTIsIDE0MiwgMzMsIDQsIDEsIDEwNCwgMiwgNTIsIDE0MiwgMzMsIDYsIDEsIDI1MCwgMTQwLCAyLCAyNDgsIDksIDMzLCAKLSAgICA0LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA5LCAzMywgNiwgMSwgMjQyLCAyNDQsIDIsIDI0OCwgNDcsIDMzLCA0LCAxLCAyNDIsIAotICAgIDI0NCwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIDIxMSwgMjgsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDIxMSwgMjgsIDIsIDI0OCwgCi0gICAgOSwgMzMsIDYsIDEsIDI0MiwgMjQ0LCAyLCAyMTgsIDEwNSwgMjIsIDEwMywgMzMsIDQsIDEsIDI0MiwgMjQ0LCAyLCAyMTgsIAotICAgIDEwNSwgMjIsIDEwMywgMzMsIDYsIDEsIDI0MiwgNTYsIDIsIDEwMywgMzMsIDQsIDEsIDI0MiwgNTYsIDIsIDEwMywgMzMsIAotICAgIDYsIDEsIDI0MiwgNTYsIDIsIDkxLCAzMywgNCwgMSwgMjQyLCA1NiwgMiwgOTEsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDgsIAotICAgIDk4LCAzMywgNCwgMSwgMjM0LCAyMCwgMjQ4LCA5OCwgMzMsIDYsIDEsIDIzNCwgMjAsIDI0NywgMTcwLCAzMywgNCwgMSwgCi0gICAgMjM0LCAyMCwgMjQ3LCAxNzAsIDMzLCA2LCAxLCAyMzQsIDIwLCAyMTAsIDI3LCAzMywgNCwgMSwgMjM0LCAyMCwgMjEwLCAKLSAgICAyNywgMzMsIDYsIDEsIDIzNCwgMjAsIDI0NiwgMzgsIDMzLCA0LCAxLCAyMzQsIDIwLCAyNDYsIDM4LCAzMywgNiwgMSwgCi0gICAgMjM0LCAyMCwgMjMyLCAxOTMsIDMzLCA0LCAxLCAyMzQsIDIwLCAyMzIsIDE5MywgMzMsIDYsIDEsIDIzNCwgMjAsIDIyOCwgCi0gICAgMTgzLCAzMywgNCwgMSwgMjM0LCAyMCwgMjI4LCAxODMsIDMzLCA2LCAxLCAyMzQsIDIwLCAyMTksIDExMSwgMzMsIDQsIDEsIAotICAgIDIzNCwgMjAsIDIxOSwgMTExLCAzMywgNiwgMSwgMjM0LCAyMCwgMjE2LCA2MSwgMzMsIDQsIDEsIDIzNCwgMjAsIDIxNiwgCi0gICAgNjEsIDMzLCA2LCAxLCAyMjMsIDUyLCAyMTAsIDk0LCAzMywgNCwgMSwgMjIzLCA1MiwgMjEwLCA5NCwgMzMsIDYsIDEsIAotICAgIDI0NSwgMTgzLCAyLCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE4MywgMiwgMTAzLCAzMywgNiwgMSwgMjMzLCA0LCAzMywgNCwgMSwgCi0gICAgMjMzLCA0LCAzMywgNiwgMSwgMjIzLCA0MiwgMzMsIDQsIDEsIDIyMywgNDIsIDMzLCA2LCAxLCAyMTEsIDkyLCAzMywgNCwgCi0gICAgMSwgMjExLCA5MiwgMzMsIDYsIDEsIDIyNCwgOTEsIDMzLCA0LCAxLCAyMjQsIDkxLCAzMywgNiwgMSwgMjEyLCAyMiwgMzMsIAotICAgIDQsIDEsIDIxMiwgMjIsIDMzLCA2LCAxLCAyNTQsIDE3NSwgMTc2LCAzMywgNCwgMSwgMjU0LCAxNzUsIDE3NiwgMzMsIDYsIAotICAgIDEsIDI0NSwgMTgzLCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxODMsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCAKLSAgICA2LCAxLCAyNDUsIDE1OSwgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAyMzAsIDIyOSwgMTAzLCAKLSAgICAzMywgNiwgMSwgMjI1LCAyMjUsIDIsIDI0OCwgNDcsIDMzLCA0LCAxLCAyMjUsIDIyNSwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIAotICAgIDIyMCwgMzYsIDIsIDI0OCwgNDcsIDMzLCA0LCAxLCAyMjAsIDM2LCAyLCAyNDgsIDQ3LCAxNTAsIDYsIDEsIDI1MywgMTcyLCAKLSAgICAxNTAsIDYsIDEsIDI1MiwgNDcsIDE1MCwgNiwgMSwgMjQyLCAyMTAsIDE1MCwgNiwgMSwgMjQ4LCAyMjksIDE1MCwgNiwgMSwgCi0gICAgMjQ1LCAyMjEsIDE1MCwgNiwgMSwgMjEwLCAxMTYsIDE1MCwgNiwgMSwgMjQ1LCAyMDUsIDE1MCwgNiwgMSwgMjQ1LCA3MywgCi0gICAgMTUwLCA2LCAxLCAxMTIsIDE1MCwgNiwgMSwgMjEwLCA3NCwgMTUwLCA2LCAxLCAyMzUsIDIzNCwgMTUwLCA2LCAxLCAyMzIsIAotICAgIDE5NiwgMTUwLCA2LCAxLCAyMTEsIDE2MCwgMTUwLCA2LCAxLCAyNTEsIDQxLCAxNTAsIDYsIDEsIDIzNCwgMTcxLCAxNTAsIAotICAgIDYsIDEsIDI0MSwgNzUsIDE1MCwgNiwgMSwgMjM1LCAxNDcsIDE1MCwgNiwgMSwgMjQyLCAyNTMsIDE1MCwgNiwgMSwgMjUwLCAKLSAgICAxMzQsIDE1MCwgNiwgMSwgMjMxLCA2MywgMTUwLCA2LCAxLCAyMTEsIDgsIDE1MCwgNiwgMSwgMjI4LCA0NCwgMTUwLCA2LCAKLSAgICAxLCAyMjAsIDEwNCwgMTUwLCA2LCAxLCAyMTMsIDEzOCwgMTUwLCA2LCAxLCAyNTAsIDE2NSwgMTUwLCA2LCAxLCAyMjUsIAotICAgIDIwOCwgMTUwLCA2LCAxLCAyMzUsIDExNiwgMTUwLCA2LCAxLCAyMDUsIDE1MCwgNiwgMSwgMjIxLCAxNjMsIDE1MCwgNiwgMSwgCi0gICAgMjEzLCAxNzksIDE1MCwgNiwgMSwgMjE2LCA2MywgMTUwLCA2LCAxLCAyMjMsIDk4LCAxNTAsIDYsIDEsIDI0OSwgMjQ2LCAKLSAgICAxNTAsIDYsIDEsIDIxMCwgMjQ5LCAxNTAsIDYsIDEsIDIyNSwgNDksIDE1MCwgNiwgMSwgMjM0LCAxODIsIDE1MCwgNiwgMSwgCi0gICAgMjI2LCAyMjYsIDE1MCwgNiwgMSwgMjQ0LCAxNTAsIDE1MCwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjM2LCAxNTAsIDI1NCwgCi0gICAgNjUsIDE1MCwgMjQ1LCAxNjIsIDc5LCAxNTAsIDI0NSwgMzksIDc5LCAxNTAsIDI0OSwgMjI3LCAxNTAsIDIyNCwgMTYsIDc5LCAKLSAgICAxNTAsIDI1NSwgMzAsIDc5LCAxNTAsIDQsIDEsIDI1MywgMTcyLCAxNTAsIDQsIDEsIDI1MiwgNDcsIDE1MCwgNCwgMSwgCi0gICAgMjQyLCAyMTAsIDE1MCwgNCwgMSwgMjQ4LCAyMjksIDE1MCwgNCwgMSwgMjQ1LCAyMjEsIDE1MCwgNCwgMSwgMjEwLCAxMTYsIAotICAgIDE1MCwgNCwgMSwgMjQ1LCAyMDUsIDE1MCwgNCwgMSwgMjQ1LCA3MywgMTUwLCA0LCAxLCAxMTIsIDE1MCwgNCwgMSwgMjEwLCAKLSAgICA3NCwgMTUwLCA0LCAxLCAyMzUsIDIzNCwgMTUwLCA0LCAxLCAyMzIsIDE5NiwgMTUwLCA0LCAxLCAyMTEsIDE2MCwgMTUwLCAKLSAgICA0LCAxLCAyNTEsIDQxLCAxNTAsIDQsIDEsIDIzNCwgMTcxLCAxNTAsIDQsIDEsIDI0MSwgNzUsIDE1MCwgNCwgMSwgMjM1LCAKLSAgICAxNDcsIDE1MCwgNCwgMSwgMjQyLCAyNTMsIDE1MCwgNCwgMSwgMjUwLCAxMzQsIDE1MCwgNCwgMSwgMjMxLCA2MywgMTUwLCAKLSAgICA0LCAxLCAyMTEsIDgsIDE1MCwgNCwgMSwgMjI4LCA0NCwgMTUwLCA0LCAxLCAyMjAsIDEwNCwgMTUwLCA0LCAxLCAyMTMsIAotICAgIDEzOCwgMTUwLCA0LCAxLCAyNTAsIDE2NSwgMTUwLCA0LCAxLCAyMjUsIDIwOCwgMTUwLCA0LCAxLCAyMzUsIDExNiwgMTUwLCAKLSAgICA0LCAxLCAyMDUsIDE1MCwgNCwgMSwgMjIxLCAxNjMsIDE1MCwgNCwgMSwgMjEzLCAxNzksIDE1MCwgNCwgMSwgMjE2LCA2MywgCi0gICAgMTUwLCA0LCAxLCAyMjMsIDk4LCAxNTAsIDQsIDEsIDI0OSwgMjQ2LCAxNTAsIDQsIDEsIDIxMCwgMjQ5LCAxNTAsIDQsIDEsIAotICAgIDIyNSwgNDksIDE1MCwgNCwgMSwgMjM0LCAxODIsIDE1MCwgNCwgMSwgMjI2LCAyMjYsIDE1MCwgNCwgMSwgMjQ0LCAxNTAsIAotICAgIDE1MCwgNCwgMjcsIDI0NSwgMjIyLCAyMTAsIDI0OSwgMTUwLCAyNDMsIDIzNiwgMjE4LCAxMzEsIDE1MCwgMjQwLCAxNzUsIAotICAgIDE1MCwgMjQ2LCAxMDMsIDUwLCA5NCwgMjU1LCAyNCwgMjQ1LCA2NSwgOTQsIDI1NSwgMjQsIDIyMSwgMTY0LCA5NCwgMjU1LCAKLSAgICAyNCwgMjIwLCA5MCwgOTQsIDI1NSwgMjQsIDIxMCwgMTA0LCAyMjQsIDc0LCA5NCwgMjU1LCAyNCwgMjEwLCAxMDQsIDI0MywgCi0gICAgMTMyLCA5NCwgMjU1LCAyNCwgMjE2LCA3NiwgOTQsIDI1NSwgMjQsIDIyMywgNTAsIDk0LCAyNTUsIDI0LCAyMTAsIDEwMywgCi0gICAgOTQsIDI1NSwgMjQsIDIyNSwgMjQ5LCA5NCwgMjU1LCAyNCwgMjExLCAyMCwgOTQsIDI1NSwgMjQsIDIxNiwgMjE1LCA5NCwgCi0gICAgMjU1LCAyNCwgMjQzLCA0OCwgOTQsIDI1NSwgMjQsIDI0MywgNDksIDIzMCwgNzQsIDk0LCAyNTUsIDI0LCAyNDMsIDQ2LCAKLSAgICA5NCwgMjU1LCAyNCwgMjI0LCA3NSwgMjI2LCAyMCwgOTQsIDI1NSwgMjQsIDIxNiwgMjU0LCAyNDMsIDYzLCA5NCwgMjU1LCAKLSAgICAyNCwgMjI1LCAyMzAsIDk0LCAyNTUsIDI0LCAyNTMsIDIwOCwgMjQyLCA0OCwgOTQsIDI1NSwgMjQsIDIzMCwgODQsIDk0LCAKLSAgICAyNTUsIDI0LCAyMzEsIDIxMywgOTQsIDI1NSwgMjQsIDIzMSwgNTQsIDk0LCAyNTUsIDI0LCAyMzEsIDU1LCAyMzQsIDE4MywgCi0gICAgOTQsIDI1NSwgMjQsIDI0OCwgMTcxLCA5NCwgMjU1LCAyNCwgMjI0LCA4NiwgOTQsIDI1NSwgMjQsIDIxNiwgMjU0LCAyMjQsIAotICAgIDcwLCA5NCwgMjU1LCAyNCwgMjExLCAzMCwgMjUyLCA0OCwgMjEwLCAyMzAsIDk0LCAyNTUsIDI0LCAyMjYsIDIxMSwgOTQsIAotICAgIDI1NSwgMjQsIDIzNiwgMjYsIDk0LCAyNTUsIDI0LCAyNDgsIDc4LCA5NCwgMjU1LCAyNCwgMjEwLCAzMywgOTQsIDE2NCwgCi0gICAgMjMxLCAxNDgsIDI1MCwgNDMsIDk0LCAyMjUsIDE0LCAyMjAsIDM4LCA5NCwgMjI1LCAxNCwgMjQyLCAxLCAyMjEsIDE2NCwgCi0gICAgOTQsIDIyNSwgMTQsIDI0MiwgMSwgMjI1LCAyNDMsIDk0LCAyMjUsIDE0LCAyNDIsIDEsIDIyNCwgNzksIDk0LCAyMjUsIDE0LCAKLSAgICAyNDEsIDE2NSwgOTQsIDIyNSwgMTQsIDIxNSwgMTc3LCA5NCwgMjI1LCAxNCwgMjIxLCAxNjQsIDk0LCAyMjUsIDE0LCAyMjUsIAotICAgIDI0MywgOTQsIDIyNSwgMTQsIDIyNCwgNzksIDk0LCAyMjUsIDE0LCAyNDEsIDY4LCA5NCwgMjI1LCAxNCwgMjQxLCA2OSwgCi0gICAgMjQyLCAzLCAzMSwgMjE0LCAzLCA5NCwgMjI1LCAxNCwgMjI0LCAyMCwgOTQsIDIyNSwgMTQsIDI0OCwgMjE2LCAxNzcsIAotICAgIDIzMSwgMTc2LCA5NCwgMjI1LCAxNCwgMjMxLCA0MywgOTQsIDIyNCwgMTQ0LCAyMzEsIDE3MywgOTQsIDIyNSwgMTQsIDIyMywgCi0gICAgMTcyLCA5NCwgMjI0LCAxNDQsIDIyNSwgMjUxLCA5NCwgMjI1LCAxNCwgMjIwLCAyMywgMjQ3LCAxMjgsIDk0LCAyMjUsIDE0LCAKLSAgICAyMTksIDE2MSwgMjQ3LCAxMjgsIDk0LCAyMjQsIDE0NCwgMjE5LCA1NSwgMjI1LCAyNDUsIDk0LCAxNjQsIDIxNCwgMTYwLCAKLSAgICAyNDcsIDEyOCwgOTQsIDE2NCwgMjMyLCAxMTQsIDI0NywgMTI4LCA5NCwgMjI0LCAxNDQsIDIyNywgMTk5LCAyNDIsIDQ3LCAKLSAgICA5NCwgMjI1LCAxNCwgMjI0LCA4MCwgMjI0LCA3NCwgOTQsIDEsIDI1NCwgMTc5LCA5NCwgMSwgMjUyLCAzNiwgOTQsIDEsIAotICAgIDI0MiwgMjA4LCA5NCwgMSwgMjQ4LCAxOTcsIDk0LCAxLCAyNDEsIDI0NSwgOTQsIDEsIDIxNCwgMywgOTQsIDEsIDIxMCwgCi0gICAgOTcsIDk0LCAxLCAyNDEsIDIwNCwgOTQsIDEsIDIxNiwgMjMxLCA5NCwgMSwgMjEwLCAyMzMsIDk0LCAxLCA0MCwgMjM1LCAwLCAKLSAgICA5NCwgMSwgMjM1LCAwLCA5NCwgMSwgMjMzLCAxMDAsIDk0LCAxLCA0MCwgMjMxLCA3MCwgOTQsIDEsIDIzMSwgNzAsIDk0LCAKLSAgICAxLCA0MCwgMjI3LCAxOTgsIDk0LCAxLCAyMjcsIDE5OCwgOTQsIDEsIDIyMSwgMjUxLCA5NCwgMSwgMjUzLCAxNzAsIDk0LCAKLSAgICAxLCA0MCwgMjI1LCAyMjQsIDk0LCAxLCAyMjUsIDIyNCwgOTQsIDEsIDQwLCAyMTUsIDE4MCwgOTQsIDEsIDIxNSwgMTgwLCAKLSAgICA5NCwgMSwgMjI0LCA0MiwgOTQsIDEsIDIyMywgNzAsIDk0LCAxLCAyMjAsIDIyLCA5NCwgMSwgMjE3LCAzOSwgOTQsIDI3LCAKLSAgICAyMTEsIDYsIDUyLCAyMTQsIDMsIDk0LCAyNywgMjExLCA2LCAyMTQsIDQsIDIxMCwgMjMzLCA5NCwgMjcsIDIxMSwgNiwgNTIsIAotICAgIDIxMCwgMjMzLCA5NCwgMjI0LCAxNDQsIDI0MywgNDgsIDk0LCAyMjQsIDE0NCwgMjQzLCA0NiwgOSwgNTQsIDUwLCA5LCA1LCAKLSAgICAyMjEsIDI0NCwgOSwgMjQ0LCAzOCwgMjMxLCAxNTksIDksIDUsIDIyMiwgMjUsIDksIDUsIDIyMSwgMjQ3LCAyNTQsIDQ1LCAKLSAgICAyNDksIDExNywgMjIyLCAxOTUsIDI1NCwgNDUsIDI0NCwgMTIsIDIyMiwgMTk1LCA5LCAyMjMsIDEzNywgMjU0LCA0NSwgCi0gICAgMjI1LCAxODYsIDIzMCwgMTk4LCA1MCwgMjU0LCA0NSwgMjI1LCAxODYsIDIxNiwgMjQ5LCAyMTYsIDE0OSwgNTAsIDI1NCwgCi0gICAgMjMwLCA1MCwgOSwgMjQ5LCAyMjcsIDksIDI0OCwgMTU4LCAyMjAsIDEzOSwgOSwgMjI1LCAxNiwgMjEzLCAyNDEsIDUwLCA5LCAKLSAgICA1LCAyMzAsIDE3OSwgOSwgNSwgMjIyLCA1LCAyNTQsIDE4MSwgMjEyLCA0NSwgOSwgNSwgMjU0LCAxODEsIDI1MywgMjI5LCAKLSAgICA5LCA1LCAyMjMsIDE3MCwgMjU0LCAxODAsIDksIDUsIDIyMywgMTc4LCAyNTQsIDE2MSwgMjU0LCAxMTIsIDksIDUsIDIxNywgCi0gICAgNzEsIDksIDQsIDEyNSwgMjE3LCA4MSwgOSwgNCwgMTI1LCAyNywgMTA5LCAyLCAyMzMsIDEwOSwgMiwgMjExLCA0MywgOSwgCi0gICAgNCwgMTI1LCAyMTAsIDEwOCwgOSwgNCwgMjQ0LCAxNzMsIDksIDQsIDI0OCwgMTkyLCA5LCA0LCAyMzQsIDIxMSwgOSwgMjIwLCAKLSAgICAxNTIsIDksIDEsIDc5LCA5LCAyMTUsIDIxMiwgNTksIDIyNCwgMTQ0LCA3OSwgOSwgMjI0LCAxNiwgNzksIDksIDEsIDIzNCwgCi0gICAgMjE1LCAyMTEsIDQzLCA5LCAxLCAyNDIsIDI2LCA5LCAxLCAxMDksIDIsIDIzMSwgMjMzLCA0OCwgOSwgMSwgMTA5LCAyLCAKLSAgICAxODIsIDQ4LCA5LCAxLCAyMTIsIDMxLCAyLCAxODIsIDQ4LCA5LCAxLCAxMDksIDIsIDE4MiwgNTEsIDksIDEsIDc3LCAyLCAKLSAgICAxODIsIDQ4LCA5LCAxLCAyNTQsIDE3OSwgOSwgMSwgMjUyLCA2MiwgOSwgMSwgMjE3LCA5LCAyMzEsIDE2OSwgOSwgMSwgCi0gICAgMjE3LCA4LCA5LCAxLCAyMTYsIDE5MywgOSwgMSwgMjM1LCAxMjksIDksIDEsIDI0MiwgNDQsIDksIDEsIDIzNCwgMTM1LCA5LCAKLSAgICAxLCAyNDgsIDIwMywgOSwgMSwgMjE2LCAyMDMsIDksIDEsIDIyMywgOTgsIDksIDEsIDIxMCwgMTA4LCA5LCAxLCAyMjEsIAotICAgIDE2OCwgOSwgMSwgMjIwLCA2MSwgOSwgMSwgMjIyLCAyOCwgOSwgMSwgMjQ4LCAyMjQsIDksIDEsIDIxNywgODEsIDksIDEsIAotICAgIDIxMCwgMTExLCA5LCAxLCAyNTQsIDIwNSwgOSwgMSwgMjQyLCAyNTEsIDksIDEsIDIzNCwgMTgxLCAyLCAxMTMsIDE3MCwgCi0gICAgNDgsIDksIDEsIDIzNCwgMTgxLCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjM1LCAyMDAsIAotICAgIDIxNCwgMTA1LCA5LCAxLCAyNDQsIDE3NiwgNzcsIDIsIDExMywgMTcwLCA0OCwgOSwgMSwgMjQ0LCAxNzYsIDc3LCAyLCAKLSAgICAxMzQsIDE3MCwgNDgsIDksIDIxNywgNDQsIDksIDEsIDI0NCwgMTUwLCA5LCAxLCAyMjQsIDg0LCA5LCAxLCAyMzUsIDAsIDksIAotICAgIDEsIDIzMywgMTA4LCA5LCAxLCAyMzEsIDgzLCA5LCAxLCAyMjgsIDY3LCA5LCAxLCAyNDEsIDIyNSwgOSwgMSwgMjEyLCAzMCwgCi0gICAgOSwgMSwgMTA5LCAyMzEsIDE5NywgOSwgMSwgMjExLCA0MywgOSwgMjQ0LCAxNzEsIDksIDI0OCwgMTkwLCA5LCAyMzQsIAotICAgIDIwOSwgOSwgMjQ0LCAxNzMsIDksIDI0OCwgMTkyLCA5LCAyMzQsIDIxMSwgOSwgMjIwLCA5NSwgOSwgMjE4LCA0NiwgOSwgCi0gICAgMjMxLCAyMzEsIDQ4LCA5LCAxODIsIDQ4LCA5LCAxODIsIDUxLCA5LCAyMTgsIDY2LCAyNTQsIDE3OSwgOSwgMjM1LCAyMDAsIAotICAgIDI0OCwgMTkyLCA5LCAxNjQsIDIyOCwgNjgsIDI0MiwgMjI1LCA5LCAyMDksIDI1NSwgOSwgMjUsIDUsIDQsIDIxNCwgMTA2LCAKLSAgICA0OCwgOSwgMjUsIDUsIDIzNSwgMjAwLCA0LCAyMTQsIDEwNiwgNDgsIDksIDI1LCA1LCA1OSwgNTEsIDksIDIyMywgNTIsIAotICAgIDI0OCwgMTkyLCA5LCAyNDQsIDE3NCwgMiwgMTEzLCAyNDcsIDEyNiwgOSwgMjEyLCAzMiwgMTgyLCA1MSwgMjU0LCA0NSwgCi0gICAgMjEsIDIxMCwgODYsIDI1NCwgNDUsIDIxLCAxMTEsIDI1NCwgNDUsIDIxLCAxMDUsIDI1NCwgNDUsIDIxLCAxNTgsIDI1NCwgCi0gICAgNDUsIDIxLCAxNjEsIDI1NCwgNDUsIDIxLCAxOTAsIDI1NCwgNDUsIDIxLCAxOTUsIDI1NCwgNDUsIDIxLCAxOTksIDI1NCwgCi0gICAgNDUsIDIxLCAxOTYsIDI1NCwgNDUsIDIxLCAyMDEsIDksIDIyNSwgMTg1LCA1MCwgOSwgMjQ4LCA5MSwgMjIwLCAxMzksIDksIAotICAgIDIxNiwgMTQ3LCAyMjAsIDEzOSwgOSwgMjQ0LCA4OSwgMjI1LCAxMiwgMjE4LCAxNTgsIDksIDEsIDI0NywgMTI3LCAyNTIsIAotICAgIDYyLCA5LCAxLCAyNDcsIDEyNywgMjI0LCA4NCwgOSwgMSwgMjE4LCAyNCwgMjU0LCAxNzksIDksIDEsIDEwOSwgMjEyLCA0NiwgCi0gICAgOSwgMSwgMTA5LCAyLCAyMTIsIDMyLCAxODIsIDQ4LCA5LCAxLCAxMDksIDIsIDIxMiwgMzIsIDE4MiwgNTEsIDksIDEsIAotICAgIDEyNSwgMjQyLCAyNiwgOSwgMSwgMTI1LCAxODIsIDI1NCwgMTc5LCA5LCAxLCAxMjUsIDE4MiwgMjEyLCAzMCwgOSwgMSwgCi0gICAgMTA0LCAyLCAxODIsIDQ4LCA5LCAxLCAxMjUsIDE4MiwgMjExLCA0MywgOSwgMSwgMjE1LCAxNDksIDksIDEsIDIxNSwgMTQ3LCAKLSAgICA5LCAxLCAyNTIsIDcyLCA5LCAxLCAyMTcsIDksIDIsIDIyMiwgMjM2LCA5LCAxLCAyMTcsIDksIDIsIDEzNCwgMTcwLCA3MiwgCi0gICAgMjQ2LCAxMTEsIDksIDEsIDIyNSwgMjA4LCA5LCAxLCAyMTcsIDYsIDksIDEsIDI1MiwgNjAsIDksIDEsIDEyMiwgMiwgMTgyLCAKLSAgICA0OCwgOSwgMSwgMTIyLCAyLCAxMTMsIDE3MCwgNjcsIDQ4LCA5LCAxLCAyMjcsIDE1NywgOSwgMSwgMjQ2LCA1MSwgOSwgMSwgCi0gICAgMTIyLCAyLCAxMzQsIDE3MCwgNDgsIDksIDEsIDIxNywgMjcsIDksIDEsIDIxNywgMjUsIDksIDEsIDI0OCwgMTM4LCA5LCAxLCAKLSAgICAyNDgsIDIwNCwgMiwgMjIyLCAyMzYsIDksIDEsIDI0OCwgMjA0LCAyLCA1OSwgNTEsIDksIDEsIDI0OCwgMjA0LCAyLCA1OSwgCi0gICAgMjUyLCA1MSwgMjIsIDQsIDIxNywgODEsIDksIDEsIDI0OCwgMjA5LCA5LCAxLCAyNDgsIDE0MCwgOSwgMSwgMjQ2LCA3OCwgCi0gICAgOSwgMSwgMjQ4LCAyMDQsIDIsIDEzNCwgMTcwLCA3MiwgMjQ2LCAxMTEsIDksIDEsIDI0OCwgMjA0LCAyLCAyNDQsIDE5LCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAyMjIsIDE3MywgOSwgMSwgMjIzLCA5OSwgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDIyMywgOTksIDIsIAotICAgIDIyMiwgMjM2LCA5LCAxLCAyMjMsIDk5LCAyLCA1OSwgNTEsIDksIDEsIDIyMywgOTksIDIsIDQsIDIxNCwgMTA2LCA1MSwgOSwgCi0gICAgMSwgMjIzLCA5OSwgMiwgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDksIDEsIDIyMywgOTksIDIsIDExMywgMTcwLCA0OCwgCi0gICAgOSwgMSwgMjM1LCAxMjYsIDksIDEsIDIyMywgOTksIDIsIDI0NCwgMTksIDE3MCwgNDgsIDksIDEsIDIyMSwgMTY5LCAyLCAKLSAgICA1OSwgMjUyLCA1MSwgMjIsIDU5LCA0OCwgOSwgMSwgMjIxLCAxNjksIDIsIDEzNCwgMTcwLCA1MSwgOSwgMSwgMjIxLCAxNjksIAotICAgIDIsIDEzNCwgMTcwLCAyNTIsIDUxLCAyMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMjIsIDI5LCAyLCAxMTMsIDE3MCwgNTEsIAotICAgIDksIDEsIDIyMiwgMjksIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjE3LCA4MiwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAKLSAgICAyNTQsIDIwNiwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyNDcsIDEyNywgMjQ0LCAxNTAsIDksIDEsIDI0NCwgMTUxLCAyLCAKLSAgICA1OSwgMjMwLCAxMTQsIDUxLCA5LCAxLCAyNDQsIDE1MSwgMiwgNTksIDUxLCA5LCAxLCAyMTMsIDI0OCwgOSwgMSwgMjQ0LCAKLSAgICAxNTEsIDIsIDEzNCwgMTcwLCA1MSwgOSwgMSwgMjI1LCAyMDYsIDksIDEsIDIyNCwgODUsIDIsIDU5LCA0OCwgOSwgMSwgCi0gICAgMjI0LCA4NSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMzQsIDE4MCwgOSwgMSwgMjE3LCAyNTEsIDIzNSwgMCwgOSwgMSwgCi0gICAgMjM1LCAxLCAyLCAyMjIsIDIzNiwgOSwgMSwgMjM1LCAxLCAyLCA1OSwgNDgsIDksIDEsIDIyOSwgODQsIDksIDEsIDIzNSwgCi0gICAgMSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAxLCAyNDMsIDEyOSwgOSwgMSwgMjQzLCAxMzAsIDIsIDIyMiwgMjM2LCA5LCAxLCAKLSAgICAyMjksIDcsIDksIDEsIDI0MywgMTMwLCAyLCAxMTMsIDE3MCwgNTEsIDksIDEsIDI0MiwgMTA4LCA5LCAxLCAyNDMsIDEzMCwgCi0gICAgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDIzMywgMTA5LCAyLCA1OSwgCi0gICAgNDgsIDksIDEsIDIzMywgMTA5LCAyLCAxMzQsIDE3MCwgNDgsIDksIDEsIDIzMywgMTA5LCAyLCAxMzQsIDE3MCwgNTEsIDksIAotICAgIDEsIDIyOCwgNjgsIDIsIDU5LCA1MSwgOSwgMSwgMjI4LCA2OCwgMjQyLCAyMjUsIDksIDEsIDIyMiwgMjE2LCA5LCAxLCAKLSAgICAyMjgsIDY4LCAyLCAyMjIsIDIzNiwgOSwgMSwgMjI4LCA2OCwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyNDEsIDIyNiwgCi0gICAgMjQ3LCAxNDksIDksIDEsIDIxNywgMjgsIDIsIDU5LCA0OCwgOSwgMSwgMjQxLCAyMjYsIDIsIDc3LCA0OCwgOSwgMSwgMjQxLCAKLSAgICAyMjYsIDI0MiwgMTc4LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDIsIDE4MiwgNDgsIDksIDEsIDIxNywgOSwgMjMxLCAKLSAgICAxNzAsIDI0MiwgMTc4LCA5LCAxLCAyMTIsIDMxLCAyLCAyMjIsIDIzNiwgOSwgMSwgMjM0LCA3OSwgMjI2LCAyMzgsIDksIDEsIAotICAgIDIyNiwgMjM4LCA5LCAxLCA2OSwgOSwgMSwgMjEwLCAyMTIsIDksIDEsIDIzNCwgNzksIDIxMCwgMjEyLCA5LCAxLCAyMTIsIAotICAgIDMxLCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDIxMywgMjU1LCA5LCAxLCAyNDQsIDE3NiwgMjExLCA0MywgOSwgMSwgNzcsIAotICAgIDIsIDIxNywgNzgsIDksIDEsIDc3LCAyLCA0LCAyMTQsIDEwNSwgOSwgMSwgMjEyLCAzMSwgMiwgNTksIDQ4LCA5LCAxLCA3NiwgCi0gICAgOSwgMSwgNzcsIDIsIDEzNCwgMTcwLCA1MSwgOSwgMSwgNzcsIDI1MiwgMTQwLCA5LCAxLCA3NywgMjUyLCAxNDEsIDIsIAotICAgIDE4MiwgNDgsIDksIDI0MywgMjM2LCAyMTgsIDEzMSwgOSwgMSwgMjU0LCAyNTIsIDksIDQsIDEyNSwgMjcsIDIyMiwgMjksIAotICAgIDIsIDIzMywgMTA5LCAyLCAxMDksIDIzMSwgMTk3LCA5LCA0LCAxMjUsIDI3LCAyMjQsIDg1LCAyLCAyMzMsIDEwOSwgMiwgCi0gICAgMTA5LCAyMzEsIDE5NywgOSwgNCwgMTI1LCA2NiwgNjUsIDE3LCA5LCA0LCAxMjUsIDIzMywgMTA5LCAyNTQsIDE3OSwgOSwgCi0gICAgNCwgMTI1LCAyMzUsIDEyOSwgOSwgNCwgMTI1LCAxMzQsIDI0NywgMTI2LCA5LCA0LCAxMjUsIDIyMSwgMTY4LCA5LCAyNDUsIAotICAgIDE1MSwgNjQsIDI1MywgMTc0LCA5LCAyMTgsIDE1NCwgNjQsIDIyMiwgMTQwLCAyNDUsIDE4MywgMjQxLCAxNjIsIDksIDQsIAotICAgIDEyNSwgMjIyLCAxODUsIDIxMCwgODYsIDksIDQsIDEyNSwgMjE0LCAxNTksIDIyMywgMTE4LCAyMTAsIDg2LCA5LCA0LCAKLSAgICAxMjUsIDI0NywgMTI3LCAyNDEsIDI0MywgNjQsIDIzNCwgMTM1LCA5LCA0LCAxMjUsIDY2LCA1MywgMTcsIDksIDQsIDEyMSwgCi0gICAgMjIxLCAxNjgsIDksIDQsIDEyNSwgMjMxLCAyMzIsIDksIDQsIDIxMiwgMzAsIDksIDQsIDIxMSwgNDMsIDksIDQsIDEyNSwgCi0gICAgMjExLCA0MywgOSwgNCwgMTI1LCAyMjgsIDY3LCA5LCAyMjUsIDQ0LCA2NCwgMjIyLCAxNSwgOSwgMjQ1LCAxNjAsIDI1MCwgCi0gICAgMTgzLCAxMjEsIDIxOCwgMTMxLCA5LCAyNDUsIDE2MCwgMjUwLCAxODMsIDEyNSwgMjE4LCAxMzEsIDksIDIyMiwgMTg1LCAKLSAgICAxMjUsIDIxOCwgMTMyLCAyLCAyNDQsIDExMiwgMjUwLCAxODIsIDksIDQsIDEyMSwgMjMxLCA4MywgOSwgMSwgMjQ4LCAyMDQsIAotICAgIDIsIDIzNSwgMjAwLCAyMTQsIDEwNSwgOSwgMSwgMjIzLCA5OSwgMiwgMjM1LCAyMDAsIDIxNCwgMTA1LCAyNDUsIDMwLCAKLSAgICAyNTQsIDQ1LCAyMSwgMjEwLCA4NiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDExMSwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIAotICAgIDEwNSwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDE1OCwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDE2MSwgMjQ1LCAzMCwgMjU0LCAKLSAgICA0NSwgMjEsIDE5MCwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDE5NSwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDE5OSwgMjQ1LCAKLSAgICAzMCwgMjU0LCA0NSwgMjEsIDE5NiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDIwMSwgOSwgMSwgMjIwLCA2MiwgMiwgNTksIAotICAgIDUxLCA5LCAxLCAyNDgsIDIyNSwgMiwgNTksIDUxLCA5LCAxLCAyNDIsIDI1MiwgMiwgNTksIDUxLCA5LCA1LCAyMTksIDE2MCwgCi0gICAgMjU0LCAxMzQsIDksIDUsIDIxOSwgMTYwLCAyMjQsIDIzOCwgMjMxLCA2MywgOSwgMSwgMjQxLCAyMjYsIDIsIDIzNSwgMjAwLCAKLSAgICAyMTQsIDEwNSwgMTgzLCAyNDUsIDE1MSwgNjQsIDIyNiwgMTgsIDE4MywgMjE4LCAyMCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAKLSAgICAxODMsIDIxOCwgNjgsIDI0MywgMjM2LCAyMTgsIDEzMSwgMTgzLCAyMTgsIDIwLCAyNDksIDIzNCwgMTgzLCAyMTgsIDY4LCAKLSAgICAyNDksIDIzNCwgMTgzLCAyMDMsIDI0OSwgMjM0LCAxODMsIDI0OSwgMjM1LCAyMTksIDEwOCwgMjMzLCA1MiwgMTgzLCAyNDksIAotICAgIDIzNSwgMjE5LCAxMDgsIDIyMiwgMjU0LCAxODMsIDIxOCwgMjAsIDI0OSwgMjM1LCAyMTksIDEwOCwgMjMzLCA1MiwgMTgzLCAKLSAgICAyMTgsIDY4LCAyNDksIDIzNSwgMjE5LCAxMDgsIDIyMiwgMjU0LCAxODMsIDI0OSwgMTg4LCAxODMsIDI0MiwgOCwgMjI2LCAKLSAgICAyNTQsIDE4MywgMjQyLCA4LCAyMzEsIDQxLCAxODMsIDI0MiwgOCwgMjUzLCAyMjYsIDE4MywgMjU1LCAzMCwgNzksIDE4MywgCi0gICAgMSwgMjU0LCAxODMsIDE4MywgMSwgMjE4LCAyNCwgMjU0LCAxODMsIDE4MywgMSwgMjUyLCAzMywgMTgzLCAxLCAyNDMsIAotICAgIDEyMCwgMTgzLCAxLCAyNDMsIDEyMSwgMjQzLCA5OCwgMTgzLCAxLCAyNDgsIDIwMCwgMTgzLCAxLCAyNDcsIDEyNywgMjQ4LCAKLSAgICAyMDEsIDIyMiwgMjMyLCAxODMsIDEsIDI0MSwgMjQ1LCAxODMsIDEsIDIxMiwgMzAsIDE4MywgMSwgMjEwLCAxMDgsIDE4MywgCi0gICAgMSwgMjQxLCAyMDIsIDE4MywgMSwgMjE2LCAyMjcsIDE4MywgMSwgMjE2LCAyMjgsIDI0MywgOTgsIDE4MywgMSwgMjEwLCAKLSAgICAxOTksIDE4MywgMSwgMjEwLCAyMDAsIDI0MSwgMjQ1LCAxODMsIDEsIDIzNCwgMjMxLCAxODMsIDEsIDIzMywgMTA3LCAxODMsIAotICAgIDEsIDIzMCwgMTk1LCAxODMsIDEsIDIyNywgMTk4LCAxODMsIDEsIDIyMCwgMTQ1LCAxODMsIDEsIDQwLCAyMjAsIDE0NSwgCi0gICAgMTgzLCAxLCA3NiwgMTgzLCAxLCAyMjUsIDIyNCwgMTgzLCAxLCAyMjMsIDUyLCAyMjUsIDIyNCwgMTgzLCAxLCAyMjIsIDI2LCAKLSAgICAxODMsIDEsIDIyNCwgNzgsIDE4MywgMSwgMjIyLCAyMzIsIDE4MywgMSwgMjIwLCAyMiwgMTgzLCAxLCAyMTcsIDM3LCAxODMsIAotICAgIDEsIDIyNSwgMTcyLCAyNTIsIDIwLCAxODMsIDEsIDIyNSwgMTcyLCAyNDIsIDI0OSwgMTgzLCAxLCAyMjUsIDE3MiwgMjQ4LCAKLSAgICAyOCwgMTgzLCAyMjQsIDE1NCwgNDgsIDE4MywgMjI0LCAxNTQsIDUxLCAxODMsIDIyNCwgMTU0LCAyNDYsIDEyNSwgMTgzLCAKLSAgICAyMTAsIDE3LCA0OCwgMTgzLCAyMTAsIDE3LCA1MSwgMTgzLCAyMTAsIDE3LCAyNDYsIDEyNSwgMTgzLCAyMjMsIDEzNCwgNDgsIAotICAgIDE4MywgMjIzLCAxMzQsIDUxLCAxODMsIDI0NiwgMTI2LCAyMTAsIDI0LCAyNDEsIDUxLCAxODMsIDI0NiwgMTI2LCAyMTAsIAotICAgIDI0LCAyNTQsIDExMywgMTgzLCAyNDEsIDI0OCwgNDgsIDE4MywgMjQxLCAyNDgsIDUxLCAxODMsIDI0MSwgMjQ3LCAyNDYsIAotICAgIDEyNSwgMTgzLCAyNDUsIDg3LCA0OCwgMTgzLCAyNDUsIDg3LCA1MSwgMTgzLCAyMjIsIDEwOSwgMTgzLCAyNDQsIDE0NCwgCi0gICAgMjQ3LCAxMjgsIDE4MywgMjIzLCAyNTEsIDE4MywgMjIyLCAxMzYsIDE4MywgMTEzLCA2NywgMTcwLCA0OCwgMTgzLCAxMTMsIAotICAgIDY3LCAxNzAsIDUxLCAxODMsIDEzNCwgMTcwLCA0OCwgMTgzLCAxMzQsIDE3MCwgNTEsIDE4MywgMjI2LCAyNTIsIDIzMiwgCi0gICAgMjIwLCA0OCwgMTgzLCAyMjYsIDI1MiwgMjMyLCAyMjAsIDUxLCAxODMsIDIzMCwgNjEsIDE4MywgMjUyLCAxMzksIDE4MywgCi0gICAgMSwgMjE5LCA1MSwgMjEwLCA4MCwgMTgzLCAxLCAyMTksIDUxLCAyMzQsIDEyOCwgMTgzLCAxLCAyMTksIDUxLCAyNDQsIAotICAgIDE2MiwgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDI0MSwgMSwgNTEsIDksIDEsIDI1MiwgNjMsIDIsIDU5LCAyNTIsIAotICAgIDUxLCAyMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyNTIsIDYzLCAyLCAxMzQsIDE3MCwgMjI1LCAxMCwgMjE0LCAxNTMsIDUxLCAKLSAgICA5LCAxLCAyNTIsIDYzLCAyLCAxMzQsIDE3MCwgMjI1LCAxMCwgMjE0LCAxNTMsIDI1MiwgNTEsIDIyLCAxMTMsIDE3MCwgNDgsIAotICAgIDksIDEsIDI1MiwgNjMsIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyNTIsIDYzLCAyLCAyMzUsIAotICAgIDIwMCwgNCwgMjE0LCAxMDYsIDUxLCA5LCAxLCAyNTIsIDYzLCAyLCA0LCAyMTQsIDEwNSwgOSwgMSwgMTIyLCAyLCAxMTMsIAotICAgIDE3MCwgNDgsIDksIDEsIDEyMiwgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgOSwgMSwgMjQ4LCAyMDQsIAotICAgIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgMjUyLCA1MSwgMjIsIDQsIDIxNywgODEsIDksIDEsIDI0OCwgMjA0LCAyLCAyMzUsIAotICAgIDIwMCwgNCwgMjE0LCAxMDYsIDUxLCA5LCAxLCAyMjMsIDk5LCAyLCA5MSwgOSwgMSwgMjIxLCAxNjksIDIsIDI0NCwgMTksIAotICAgIDE3MCwgNDgsIDksIDEsIDI1NCwgMjA2LCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI1NCwgMjA2LCAyLCAxMzQsIDE3MCwgCi0gICAgMjI1LCAxMCwgMjQ2LCAxMTIsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgOSwgMSwgCi0gICAgMjQ0LCAxNTEsIDIsIDExMywgMTcwLCA1MSwgOSwgMSwgMjQ0LCAxNTEsIDIsIDEzNCwgMTcwLCAyMjUsIDEwLCAyMTQsIAotICAgIDE1MywgNTEsIDksIDEsIDIzNCwgMTgxLCAyLCA1OSwgNDgsIDksIDEsIDIzNCwgMTgxLCAyLCAxMzQsIDE3MCwgNDgsIDksIAotICAgIDEsIDIzNCwgMTgxLCAyLCAxMzQsIDE3MCwgMjI1LCAxMCwgMjE0LCAxNTMsIDUxLCA5LCAxLCA2NiwgMiwgNTksIDQ4LCA5LCAKLSAgICAxLCA2NiwgMiwgNTksIDUxLCA5LCAxLCAyMjgsIDY4LCAyLCAxMTMsIDE3MCwgNTEsIDksIDEsIDIyOCwgNjgsIDIsIDQsIAotICAgIDIxNywgODEsIDksIDEsIDIyOCwgNjgsIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTMwLCA5LCAxLCAKLSAgICAyMjMsIDk5LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAxODIsIDQ4LCA5LCAxLCAyMjEsIAotICAgIDE2OSwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgOSwgMSwgMTIyLCAyLCA0LCA5LCAxLCAyMTcsIDgyLCA1MSwgOSwgMSwgCi0gICAgMTIyLCAyLCA0LCA5LCAxLCAyMTcsIDgyLCAyMiwgMTEzLCAyNDcsIDEyNiwgOSwgMSwgMjIxLCAxNjksIDIsIDQsIDksIDEsIAotICAgIDIxNywgODIsIDIyLCAxMTMsIDI0NywgMTI2LCA5LCAxLCAyMjMsIDk5LCAyLCA0LCA5LCAxLCAyMTcsIDgyLCAyMiwgMTEzLCAKLSAgICAyNDcsIDEyNiwgOSwgMSwgMTIyLCAyLCA0LCA5LCAxLCAyMTcsIDgyLCA0OCwgOSwgMSwgMTA5LCAyLCAyNDUsIDMwLCAyNTQsIAotICAgIDQ1LCAyMSwgMTEzLCA0OCwgOSwgMSwgMTA5LCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTM0LCA0OCwgOSwgMSwgMjQ0LCAKLSAgICAxNzYsIDc3LCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTEzLCA0OCwgOSwgMSwgMjQ0LCAxNzYsIDc3LCAyLCAyNDUsIAotICAgIDMwLCAyNTQsIDQ1LCAyMSwgMTM0LCA0OCwgOSwgMSwgMjQ0LCAxNzYsIDc3LCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgCi0gICAgMjQ0LCAxOSwgNTEsIDksIDEsIDIxMiwgMzEsIDIsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxMTMsIDQ4LCA5LCAxLCAyMTIsIAotICAgIDMxLCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTM0LCA0OCwgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAyNDUsIDMwLCAKLSAgICAyNTQsIDQ1LCAyMSwgMTEzLCA0OCwgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTM0LCAKLSAgICA0OCwgOSwgMSwgMTIyLCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMjQ0LCAxOSwgNTEsIDksIDEsIDIyMSwgMTY5LCAyLCAKLSAgICAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMjQ0LCAxOSwgNDgsIDksIDEsIDIyMSwgMTY5LCAyLCAyMzUsIDIwMCwgMjE0LCAxMDUsIAotICAgIDksIDEsIDIzNSwgMSwgMiwgMTEzLCAxNzAsIDQ4LCAyMTYsIDIwNiwgMSwgMjQyLCA1MywgMjE2LCAyMDYsIDEsIDIyMCwgCi0gICAgNzAsIDIxNiwgMjA2LCAxLCAyMjgsIDY2LCAyMTYsIDIwNiwgMSwgMjIzLCAxODcsIDIxNiwgMjA2LCAxLCAyNTIsIDE5NywgCi0gICAgMjE2LCAyMDYsIDEsIDIzMywgMSwgMjE2LCAyMDYsIDEsIDIzNSwgMTQsIDIxNiwgMjA2LCAxLCAyNTQsIDE2OCwgMjE2LCAKLSAgICAyMDYsIDEsIDIxNCwgMjUsIDIxNiwgMjA2LCAxLCAyMzEsIDgyLCAyMTYsIDIwNiwgMSwgMjQ0LCAyMDIsIDIxNiwgMjA2LCAKLSAgICAxLCAyNDgsIDMxLCAyMTYsIDIwNiwgMSwgMjE2LCAyMDgsIDIxNiwgMjA2LCAxLCAyMzMsIDEzNywgMjE2LCAyMDYsIDEsIAotICAgIDI0MywgMTM4LCAyMTYsIDIwNiwgMSwgMjQyLCAxODQsIDIxNiwgMjA2LCAxLCAyMjEsIDE2NywgMjE2LCAyMDYsIDEsIDI0OCwgCi0gICAgMTU2LCAyMTYsIDIwNiwgMSwgMjEwLCAxMDAsIDIxNiwgMjA2LCAxLCAyMTcsIDM4LCAyMTYsIDIwNiwgMSwgMjExLCAxMDMsIAotICAgIDIxNiwgMjA2LCAxLCAyMjUsIDIzNywgMjE2LCAyMDYsIDEsIDIzNSwgMTM0LCAyMTYsIDIwNiwgMSwgMjUwLCAxNDIsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTUsIDE1NiwgMjE2LCAyMDYsIDEsIDI0MSwgMTk1LCAyMTYsIDIwNiwgMSwgMjM0LCAxMzcsIDIxNiwgMjA2LCAKLSAgICAxLCAyMTYsIDIwNywgMjE2LCAyMDYsIDEsIDIxMCwgMTE1LCAyMTYsIDIwNiwgMSwgMjIwLCA2MCwgMjE2LCAyMDYsIDEsIAotICAgIDIyMiwgMzIsIDIxNiwgMjA2LCAxLCAyNDgsIDIyNywgMjE2LCAyMDYsIDEsIDExMiwgMjE2LCAyMDYsIDEsIDIxMCwgMjMsIAotICAgIDIxNiwgMjA2LCAxLCAyNTQsIDIwMiwgMjE2LCAyMDYsIDEsIDI0MiwgMjUwLCAyMTYsIDIwNiwgMSwgMjI0LCA4OCwgMjE2LCAKLSAgICAyMDYsIDEsIDIxMiwgNjMsIDIxNiwgMjA2LCAyNTUsIDMxLCAyMTYsIDIwNiwgMjU1LCA0NywgMjE2LCAyMDYsIDI0MCwgCi0gICAgMTIxLCAyMTYsIDIwNiwgMjQ1LCAyMTYsIDIxNiwgMjA2LCAyMTQsIDIyMiwgMjE2LCAyMDYsIDIyNiwgMTg2LCAyMTYsIAotICAgIDIwNiwgMjQ1LCAyMjQsIDIxNiwgMjA2LCAyNDUsIDI0LCAyMTYsIDIwNiwgMjI2LCAyNTEsIDIxNiwgMjA2LCAyMjcsIDMsIAotICAgIDIxNiwgMjA2LCAyMTgsIDQ2LCAyMTYsIDIwNiwgMSwgMjI5LCAyMzAsIDIyOCwgMTQyLCAyMSwgMjEwLCA4NiwgMjI4LCAKLSAgICAxNDIsIDIxLCAxMTEsIDIyOCwgMTQyLCAyMSwgMTA1LCAyMjgsIDE0MiwgMjEsIDE1OCwgMjI4LCAxNDIsIDIxLCAxNjEsIAotICAgIDIyOCwgMTQyLCAyMSwgMTkwLCAyMjgsIDE0MiwgMjEsIDE5NSwgMjI4LCAxNDIsIDIxLCAxOTksIDIyOCwgMTQyLCAyMSwgCi0gICAgMTk2LCAyMjgsIDE0MiwgMjEsIDIwMSwgMjI4LCAxNDIsIDEsIDYxLCAyMjgsIDE0MiwgMSwgMjQ1LCAyMTcsIDIyOCwgMTQyLCAKLSAgICAxLCA3NCwgMjI4LCAxNDIsIDEsIDc2LCAyMjgsIDE0MiwgMSwgNjksIDIyOCwgMTQyLCAxLCAyMjYsIDE4NywgMjI4LCAxNDIsIAotICAgIDEsIDc4LCAyMjgsIDE0MiwgMSwgMjQ4LCAyMTcsIDIyOCwgMTQyLCAxLCAyMzAsIDMwLCAyMjgsIDE0MiwgMSwgMjUyLCAKLSAgICAxOTksIDIyOCwgMTQyLCAxLCAxOTEsIDIyOCwgMTQyLCAxLCAyMTcsIDEwNiwgMjI4LCAxNDIsIDEsIDIzNSwgMTQ3LCAyMjgsIAotICAgIDE0MiwgMSwgMjUwLCAxNjUsIDIyOCwgMTQyLCAxLCAyNDgsIDIyOSwgMjI4LCAxNDIsIDEsIDIwNSwgMjI4LCAxNDIsIDEsIAotICAgIDIyMiwgMTgxLCAyMjgsIDE0MiwgMSwgMjA2LCAyMjgsIDE0MiwgMSwgMjQzLCA4NiwgMjI4LCAxNDIsIDEsIDI0NCwgMjA0LCAKLSAgICAyMjgsIDE0MiwgMSwgMTc2LCAyMjgsIDE0MiwgMSwgMjMzLCAxNDEsIDIyOCwgMTQyLCAxLCAyMjksIDIzNCwgMjExLCAyMjMsIAotICAgIDIyOCwgMTQyLCAxLCAxODYsIDIyOCwgMTQyLCAxLCAyMjcsIDE2OSwgMjI4LCAxNDIsIDEsIDE5OCwgMjI4LCAxNDIsIDEsIAotICAgIDE2MiwgMjI4LCAxNDIsIDEsIDIxMiwgNjUsIDIyOCwgMTQyLCAxLCAxOTIsIDIyOCwgMTQyLCAxLCAyMjcsIDE3MCwgMjExLCAKLSAgICAyMjMsIDIyOCwgMTQyLCAxLCAyMzUsIDY3LCAyMzUsIDE0NywgMjI4LCAxNDIsIDEsIDIzNSwgNjcsIDI1MCwgMTY1LCAyMjgsIAotICAgIDE0MiwgMSwgMjM1LCA2NywgMjA1LCAyMjgsIDE0MiwgMzgsIDIxOSwgMjUzLCAxMjUsIDIxNiwgMzEsIDIyOCwgMTQyLCAzOCwgCi0gICAgMjE5LCAyNTMsIDEyMSwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMTksIDI1MywgMjIyLCAyMzEsIDIxNiwgMzEsIDIyOCwgCi0gICAgMTQyLCAzOCwgMjAwLCAyNDgsIDQ2LCAyMTYsIDMxLCAyMjgsIDE0MiwgMzgsIDIwMCwgMTI1LCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIwMCwgMTIxLCAyMTYsIDMxLCAyMjgsIDE0MiwgMzgsIDIwMCwgMjIyLCAyMzEsIDIxNiwgMzEsIDIyOCwgCi0gICAgMTQyLCAzOCwgMjI5LCAxOTgsIDc5LCAyMjgsIDE0MiwgMzgsIDUyLCA1OSwgNDgsIDIyOCwgMTQyLCAxMjUsIDEzOCwgMjU0LCAKLSAgICA2NSwgMjI4LCAxNDIsIDEyMSwgMTM4LCAyNTQsIDY1LCAyMjgsIDE0MiwgMTYsIDIyNiwgMTg4LCAyNDgsIDU4LCAyMjgsIAotICAgIDE0MiwgMTYsIDI0MywgODUsIDIyOCwgMTQyLCAyNDksIDIyNywgMjI4LCAxNDIsIDI0NSwgMzksIDc5LCAyMjgsIDE0MiwgCi0gICAgMjMzLCAxMTQsIDIyMSwgMjU0LCAxLCAyNTQsIDE4NSwgMjIxLCAyNTQsIDEsIDI1MSwgMjM2LCAyMjEsIDI1NCwgMSwgMjQzLCAKLSAgICAxMTksIDIyMSwgMjU0LCAxLCAyNDgsIDIwMiwgMjIxLCAyNTQsIDEsIDIzNSwgMTU4LCAyMjEsIDI1NCwgMSwgMjUyLCAxOTcsIAotICAgIDIyMSwgMjU0LCAxLCAyMTAsIDg5LCAyMjEsIDI1NCwgMSwgMjM1LCAxNjYsIDIyMSwgMjU0LCAxLCAyMTYsIDY4LCAyMjEsIAotICAgIDI1NCwgMSwgMjEwLCAxODIsIDIyMSwgMjU0LCAxLCAyMzUsIDE1LCAyMjEsIDI1NCwgMSwgMjMzLCAxMzQsIDIyMSwgMjU0LCAKLSAgICAxLCAyMzAsIDE5NSwgMjIxLCAyNTQsIDEsIDIyNywgMTk4LCAyMjEsIDI1NCwgMSwgMjE5LCAxNTgsIDIyMSwgMjU0LCAxLCAKLSAgICAyMzYsIDYsIDIyMSwgMjU0LCAxLCAyNDQsIDEyOSwgMjIxLCAyNTQsIDEsIDIxNSwgMTgyLCAyMjEsIDI1NCwgMSwgMjI0LCAKLSAgICAxMywgMjIxLCAyNTQsIDEsIDIyMiwgMjMyLCAyMjEsIDI1NCwgMSwgMjIwLCA4NywgMjIxLCAyNTQsIDEsIDIxNywgMTAxLCAKLSAgICAyMjEsIDI1NCwgMTY0LCAyMzYsIDYsIDIyMSwgMjU0LCAxNjQsIDIzNiwgNSwgMjIxLCAyNTQsIDE2NCwgMjI2LCAyNDcsIAotICAgIDIyMSwgMjU0LCAxNjQsIDI0OCwgMjE1LCAyMjEsIDI1NCwgNTgsIDEsIDI0NSwgMTEzLCAyMTAsIDE4MiwgMjIxLCAyNTQsIAotICAgIDE2NCwgMjQ1LCAxMTMsIDIxMCwgMTgyLCAyMjEsIDI1NCwgMjUsIDUsIDIwMCwgNzYsIDIyMSwgMjU0LCAyNSwgNSwgNzYsIAotICAgIDIyMSwgMjU0LCAyNSwgNSwgMjI2LCAxMjIsIDI1NSwgODIsIDIyMSwgMjU0LCAyNSwgNSwgMjAwLCAyNTUsIDgyLCAyMjEsIAotICAgIDI1NCwgMjUsIDUsIDI1NSwgODIsIDIyMSwgMjU0LCAyNSwgNSwgMjI2LCAxMjIsIDYxLCAyMjEsIDI1NCwgMjUsIDUsIDIwMCwgCi0gICAgNjEsIDIyMSwgMjU0LCAyNSwgNSwgNjEsIDIyMSwgMjU0LCA1OCwgMSwgMjE5LCAyNTMsIDYxLCAyMjEsIDI1NCwgMjUsIDUsIAotICAgIDIxOSwgMjUzLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDY5LCAyMjEsIDI1NCwgMjUsIDUsIDY5LCAyMjEsIDI1NCwgCi0gICAgNTgsIDEsIDc0LCAyMjEsIDI1NCwgMjUsIDUsIDIwMCwgNzQsIDIyMSwgMjU0LCAyNSwgNSwgNzQsIDIyMSwgMjU0LCAyNSwgCi0gICAgNSwgNzgsIDIyMSwgMjU0LCAyNSwgNSwgMjE4LCA0NiwgMjIxLCAyNTQsIDE2NCwgMjI5LCA5NywgMjIxLCAyNTQsIDIyNCwgCi0gICAgMTQ0LCAyMjksIDk3LCAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1NCwgMjI3LCAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1NCwgMTIyLCAKLSAgICAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1MiwgMTIyLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1MywgMjA5LCAyMjEsIDI1NCwgCi0gICAgMjI0LCAxNDQsIDIyMCwgMTAsIDIyMSwgMjU0LCAyNTUsIDMwLCA3OSwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyMzEsIDczLCAKLSAgICAyMjQsIDQ4LCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIxMCwgMzEsIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjI0LCA0OCwgMjIxLCAKLSAgICAyNTQsIDIyNCwgMTQ0LCAyMTAsIDExNCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyMTUsIDkwLCAyMjEsIDI1NCwgMjI0LCAxNDQsIAotICAgIDI1NCwgMTcsIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjE5LCA1NSwgMjMxLCAxNTAsIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjU0LCAKLSAgICAxMDgsIDIzMSwgMTg3LCAxLCAyNDIsIDMxLCAyMzEsIDE4NywgMSwgMjU1LCAzNCwgMjMxLCAxODcsIDEsIDI1NCwgMjI1LCAKLSAgICAyMzEsIDE4NywgMSwgMjU1LCA4LCAyMzEsIDE4NywgMSwgMjU0LCAyMTgsIDIzMSwgMTg3LCAxLCAyMTQsIDEyNCwgMjMxLCAKLSAgICAxODcsIDEsIDI1MywgMTY4LCAyMzEsIDE4NywgMSwgMjM1LCAxNjYsIDIzMSwgMTg3LCAxLCAyNTMsIDIwNiwgMjMxLCAxODcsIAotICAgIDEsIDI1NCwgMTkwLCAyMzEsIDE4NywgMSwgMjU0LCAxOTUsIDIzMSwgMTg3LCAxLCAyNTQsIDE4NywgMjMxLCAxODcsIDEsIAotICAgIDI1NCwgMTQ0LCAyMzEsIDE4NywgMSwgMjU0LCAxMzEsIDIzMSwgMTg3LCAxLCAyNTMsIDI0NSwgMjMxLCAxODcsIDEsIDIzNiwgCi0gICAgNiwgMjMxLCAxODcsIDEsIDI1NCwgODAsIDIzMSwgMTg3LCAxLCAyNTMsIDIxNiwgMjMxLCAxODcsIDEsIDI1NCwgNTMsIAotICAgIDIzMSwgMTg3LCAxLCAyNTQsIDQ5LCAyMzEsIDE4NywgMSwgMjUzLCAyMzksIDIzMSwgMTg3LCAxLCAyNTMsIDIxNCwgMjMxLCAKLSAgICAxODcsIDEsIDI0NiwgNjMsIDIzMSwgMTg3LCAxLCAyMzUsIDgsIDIzMSwgMTg3LCAxLCAyNTQsIDIwNSwgMjMxLCAxODcsIAotICAgIDI1NCwgMjMxLCA3OSwgMjMxLCAxODcsIDIxMywgMTM2LCA3OSwgMjMxLCAxODcsIDI0MywgNjAsIDc5LCAyMzEsIDE4NywgCi0gICAgMjI0LCAxNDMsIDksIDEsIDI1MiwgNjMsIDIsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMTUxLCAyLCAxMTMsIDE3MCwgNDgsIAotICAgIDksIDEsIDIxNywgODIsIDIsIDExMywgMTcwLCA0OCwgOSwgMSwgMjQ0LCAxNTEsIDIsIDU5LCAyNTIsIDUxLCAyMiwgMTM0LCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAyMjQsIDg1LCAyLCA1OSwgNTEsIDksIDEsIDIzMywgMTA5LCAyLCA1MiwgMTMwLCA5LCAxLCA2NiwgCi0gICAgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCA3NywgMiwgMTEzLCAxNzAsIDI1MiwgNTEsIDIyLCAxODIsIDQ4LCA5LCAxLCA3NywgCi0gICAgMiwgMTEzLCAxNzAsIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDksIDEsIDIyMywgOTksIDIsIDIzMiwgMTI5LCA5LCAxLCAyMTIsIAotICAgIDMxLCAyLCA1OSwgMjExLCAyMzEsIDksIDEsIDIyMiwgMjAzLCAyMTEsIDQzLCA5LCAyNDksIDEwNywgMjQ0LCAxNzMsIDksIAotICAgIDI0OSwgMTA3LCAyNDgsIDE5MiwgOSwgMjQ5LCAxMDcsIDIzNCwgMjExLCA5LCAyNDksIDEwNywgMjQ0LCAxNzEsIDksIDI0OSwgCi0gICAgMTA3LCAyNDgsIDE5MCwgOSwgMjQ5LCAxMDcsIDIzNCwgMjA5LCA5LCAxMzgsIDEyMywgNTksIDQ4LCA5LCAxMzgsIDExMywgCi0gICAgMTcwLCA0OCwgOSwgMTM4LCAyMzIsIDEzMCwgNDgsIDksIDEzOCwgMTIzLCA1OSwgNTEsIDksIDEzOCwgMTEzLCAxNzAsIDUxLCAKLSAgICA5LCAxMzgsIDIzMiwgMTMwLCA1MSwgOSwgMjA0LCAyNDQsIDE3MSwgOSwgMjA0LCAyNDgsIDE5MCwgOSwgMjA0LCAyMzQsIAotICAgIDIwOSwgOSwgNCwgMTI1LCAyMTIsIDMwLCA5LCAyNDQsIDE3NCwgMiwgMjIyLCAyMzYsIDksIDI0NCwgMTc0LCAyLCA1OSwgCi0gICAgNDgsIDksIDIzNCwgMjEyLCAyLCA1OSwgNTEsIDksIDQzLCAyNTQsIDIsIDQ4LCA5LCA0NCwgMjU0LCAyLCA0OCwgOSwgNDMsIAotICAgIDI1NCwgMiwgNTEsIDksIDQ0LCAyNTQsIDIsIDUxLCA5LCA1MiwgNDQsIDI1NCwgMiwgNDgsIDksIDUyLCA0NCwgMjU0LCAyLCAKLSAgICA3MiwgMiwgMjQ3LCAxMjgsIDksIDQ0LCAyNTQsIDIsIDcyLCAyLCAyNDcsIDEyOCwgOSwgMjQ4LCAxOTMsIDIsIDI0NywgCi0gICAgMTI4LCA4NCwgNSwgMjM1LCAyMDAsIDI1MSwgNywgODQsIDUsIDI1MSwgNywgODQsIDUsIDI1NCwgODMsIDg0LCA1LCAyMTMsIAotICAgIDE0NywgODQsIDEsIDIxOSwgMjUzLCA2MSwgODQsIDEsIDYxLCA4NCwgMSwgMjU1LCA4MiwgODQsIDEsIDc0LCA4NCwgMSwgCi0gICAgMjM2LCA0MCwgODQsIDEsIDY5LCA4NCwgMSwgMjE0LCAxMTgsIDg0LCAxLCAxNDksIDE1MywgODQsIDEsIDE0OSwgMTU2LCAKLSAgICA4NCwgMSwgMjUxLCAxMCwgNzYsIDg0LCAxLCAyMTksIDI1MywgNzYsIDg0LCAxLCA3NiwgODQsIDEsIDI1NCwgMjEwLCA4NCwgCi0gICAgMSwgMjUxLCAxMCwgNzgsIDg0LCAxLCAyMTksIDI1MywgNzgsIDg0LCAxLCA3OCwgODQsIDEsIDI1MywgMjAwLCA4NCwgMSwgCi0gICAgMTc2LCA4NCwgMSwgMjM0LCAxMzgsIDg0LCAxLCAyNDMsIDE0MiwgODQsIDEsIDI0MywgMCwgODQsIDEsIDIyOSwgODIsIDg0LCAKLSAgICAxLCAyNTEsIDQxLCA4NCwgMSwgMjUwLCAxNjUsIDg0LCAxLCAyMzUsIDE0NywgODQsIDEsIDIzNSwgMTIwLCA4NCwgMSwgCi0gICAgMjI3LCAxNjksIDg0LCAxLCAyMTUsIDE1NywgODQsIDEsIDIxNSwgMTQ1LCA4NCwgMSwgMjQ4LCAxNDMsIDg0LCAxLCAyNDgsIAotICAgIDEyNywgODQsIDEsIDIyOCwgMTE1LCA4NCwgMSwgMjE3LCAxMDYsIDg0LCAxLCAyMTYsIDIwOSwgODQsIDEsIDI0OCwgMjI5LCAKLSAgICA4NCwgMSwgMjQ4LCAzMywgODQsIDEsIDE5OCwgODQsIDEsIDIyOCwgOTcsIDg0LCAxLCAxOTEsIDg0LCAxLCAyMjUsIDE1MCwgCi0gICAgODQsIDEsIDI1MiwgMTk5LCA4NCwgMSwgMjUyLCAyNiwgODQsIDEsIDE4NiwgODQsIDEsIDE5MiwgODQsIDEsIDIwNSwgODQsIAotICAgIDEsIDIyMiwgMTgxLCA4NCwgMSwgMjMzLCAxNDEsIDg0LCAxLCAyMzIsIDE5MCwgODQsIDEsIDIzMiwgMTgxLCA4NCwgMSwgCi0gICAgMjE0LCAyNywgODQsIDEsIDIyMCwgMTA0LCA4NCwgMSwgMjE4LCAyMjUsIDg0LCAxLCAyMDYsIDg0LCAxLCAxNjIsIDg0LCAKLSAgICAyNSwgNSwgMjI2LCAyMzgsIDg0LCAyNSwgNSwgMjI2LCAxODUsIDg0LCA1LCAyMjcsIDIwOSwgODQsIDUsIDI1MywgMTgzLCAKLSAgICA4NCwgMjUsIDUsIDI1NSwgODIsIDg0LCAyNSwgNSwgNzQsIDg0LCAyNSwgNSwgMjM2LCA0MCwgODQsIDI1LCA1LCA2OSwgODQsIAotICAgIDI1LCA1LCAyMTQsIDExOCwgODQsIDI1LCA1LCAxNDksIDE1MywgODQsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCA4NCwgMjUsIAotICAgIDUsIDI1MSwgMTAsIDc2LCA4NCwgMjUsIDUsIDIxOSwgMjUzLCA3NiwgODQsIDI1LCA1LCA3NiwgODQsIDI1LCA1LCAyNTQsIAotICAgIDIxMCwgODQsIDI1LCA1LCAyNTEsIDEwLCA3OCwgODQsIDI1LCA1LCAyMTksIDI1MywgNzgsIDg0LCAyNSwgNSwgNzgsIDg0LCAKLSAgICAyNSwgNSwgMjUzLCAyMDAsIDg0LCA1LCAyMTMsIDE1MiwgODQsIDI1LCA1LCAyMjQsIDE4OCwgNzYsIDg0LCAyNSwgNSwgCi0gICAgMjUzLCAxNzksIDg0LCAyMjYsIDIwOCwgODQsIDIxOCwgMTEzLCA1LCAyMTQsIDIxNiwgODQsIDIxOCwgMTEzLCA1LCAyNTQsIAotICAgIDg1LCA4NCwgMjQyLCAxNDQsIDI1NSwgMjMsIDg0LCAyNTUsIDEyLCAyNTUsIDIzLCA4NCwgMjUsIDUsIDI1MSwgMTAsIDIwMCwgCi0gICAgNzYsIDg0LCAyNSwgNSwgMjE0LCAyMTQsIDg0LCAyNSwgNSwgMjE0LCAxMTcsIDg0LCAxLCAyMjQsIDkxLCA4NCwgMSwgMjM0LCAKLSAgICAxMjEsIDg0LCAxLCAyNDIsIDIzMywgODQsIDEsIDIxMCwgMTE2LCA4NCwgMSwgMjQ4LCAxMzIsIDg0LCAxLCAyMjMsIDQyLCAKLSAgICA4NCwgMSwgMjQ0LCAyMDQsIDg0LCAxLCAyMTAsIDE2OCwgODQsIDEsIDE0OSwgMjIyLCAxODIsIDg0LCAxLCAxNDksIDIzMiwgCi0gICAgMTkxLCA4NCwgMjUsIDUsIDE0OSwgMTU2LCA4NCwgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDg0LCAyNDgsIDE4NiwgODQsIDUyLCAKLSAgICAyNDgsIDE4NiwgODQsIDIxLCAyMTAsIDg2LCA4NCwgMjEsIDExMSwgODQsIDIxLCAxMDUsIDg0LCAyMSwgMTU4LCA4NCwgMjEsIAotICAgIDE2MSwgODQsIDIxLCAxOTAsIDg0LCAyMSwgMTk1LCA4NCwgMjEsIDE5OSwgODQsIDIxLCAxOTYsIDg0LCAyMSwgMjAxLCA4NCwgCi0gICAgMjU1LCAzMCwgNTAsIDg0LCA1LCAxMjUsIDIxOSwgMTksIDI0NywgMTI4LCA4NCwgMSwgMjUxLCAxMCwgNjEsIDg0LCAxLCAKLSAgICAyMjYsIDIzOCwgODQsIDEsIDIyNiwgMTg1LCA4NCwgMSwgMjUzLCAxNzksIDg0LCAxLCAyMTQsIDIxNCwgODQsIDEsIDIxNCwgCi0gICAgMTE3LCA4NCwgMSwgMjEwLCA4MiwgODQsIDEsIDExNCwgMTkyLCA4NCwgMSwgMjQzLCAzNiwgODQsIDEsIDIzNSwgMTAyLCAKLSAgICA4NCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA4NCwgMSwgMjQ4LCAxMzMsIDg0LCAxLCAyNTIsIDExOSwgMTQ2LCA1LCAyNTEsIAotICAgIDcsIDE0NiwgNSwgMjU0LCA4MywgMTQ2LCA1LCAyMTMsIDE0NywgMTQ2LCAxLCA2MSwgMTQ2LCAxLCAyNTUsIDgyLCAxNDYsIAotICAgIDEsIDc0LCAxNDYsIDEsIDIzNiwgNDAsIDE0NiwgMSwgNjksIDE0NiwgMSwgMjE0LCAxMTgsIDE0NiwgMSwgMTQ5LCAxNTMsIAotICAgIDE0NiwgMSwgMTQ5LCAxNTYsIDE0NiwgMSwgNzYsIDE0NiwgMSwgMjU0LCAyMTAsIDE0NiwgMSwgNzgsIDE0NiwgMSwgMjUzLCAKLSAgICAyMDAsIDE0NiwgMSwgMTc2LCAxNDYsIDEsIDIzNCwgMTM4LCAxNDYsIDEsIDI0MywgMTQyLCAxNDYsIDEsIDI0MywgMCwgCi0gICAgMTQ2LCAxLCAyMjksIDgyLCAxNDYsIDEsIDI1MSwgNDEsIDE0NiwgMSwgMjUwLCAxNjUsIDE0NiwgMSwgMjM1LCAxNDcsIAotICAgIDE0NiwgMSwgMjM1LCAxMjAsIDE0NiwgMSwgMjI3LCAxNjksIDE0NiwgMSwgMjE1LCAxNTcsIDE0NiwgMSwgMjE1LCAxNDUsIAotICAgIDE0NiwgMSwgMjQ4LCAxNDMsIDE0NiwgMSwgMjQ4LCAxMjcsIDE0NiwgMSwgMjI4LCAxMTUsIDE0NiwgMSwgMjE3LCAxMDYsIAotICAgIDE0NiwgMSwgMjE2LCAyMDksIDE0NiwgMSwgMjQ4LCAyMjksIDE0NiwgMSwgMjQ4LCAzMywgMTQ2LCAxLCAxOTgsIDE0NiwgMSwgCi0gICAgMTkxLCAxNDYsIDEsIDIyNSwgMTUwLCAxNDYsIDEsIDI1MiwgMTk5LCAxNDYsIDEsIDI1MiwgMjYsIDE0NiwgMSwgMTg2LCAKLSAgICAxNDYsIDEsIDE5MiwgMTQ2LCAxLCAyMDUsIDE0NiwgMSwgMjMzLCAxNDEsIDE0NiwgMSwgMjIwLCAxMDQsIDE0NiwgMSwgCi0gICAgMjE4LCAyMjUsIDE0NiwgMSwgMjA2LCAxNDYsIDEsIDE2MiwgMTQ2LCA1LCAyMjcsIDIwOSwgMTQ2LCA1LCAyNTMsIDE4MywgCi0gICAgMTQ2LCAyNSwgNSwgMjU1LCA4MiwgMTQ2LCAyNSwgNSwgNzQsIDE0NiwgMjUsIDUsIDIzNiwgNDAsIDE0NiwgMjUsIDUsIDY5LCAKLSAgICAxNDYsIDI1LCA1LCAyMTQsIDExOCwgMTQ2LCAyNSwgNSwgMTQ5LCAxNTMsIDE0NiwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIAotICAgIDE0NiwgMjUsIDUsIDc2LCAxNDYsIDI1LCA1LCAyNTQsIDIxMCwgMTQ2LCAyNSwgNSwgNzgsIDE0NiwgMjUsIDUsIDI1MywgCi0gICAgMjAwLCAxNDYsIDUsIDIxMywgMTUyLCAxNDYsIDEsIDIzNCwgMTMwLCAyMTcsIDEwNiwgMTQ2LCAyNTMsIDIwMSwgMjMzLCAKLSAgICAyOSwgNzksIDE0NiwgMSwgMjIyLCAxODEsIDE0NiwgMSwgMjIzLCA0MiwgMTQ2LCAxLCAyMTAsIDE2OCwgMTQ2LCAxLCAxNDksIAotICAgIDIyMiwgMTgyLCAxNDYsIDEsIDE0OSwgMjMyLCAxOTEsIDE0NiwgMjUsIDUsIDE0OSwgMTU2LCAxNDYsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxNDYsIDIxLCAyMTAsIDg2LCAxNDYsIDIxLCAxMTEsIDE0NiwgMjEsIDEwNSwgMTQ2LCAyMSwgMTU4LCAKLSAgICAxNDYsIDIxLCAxNjEsIDE0NiwgMjEsIDE5MCwgMTQ2LCAyMSwgMTk1LCAxNDYsIDIxLCAxOTksIDE0NiwgMjEsIDE5NiwgCi0gICAgMTQ2LCAyMSwgMjAxLCAxNDYsIDEsIDIyMywgMTkxLCAyLCAyMzAsIDIyOSwgMjQ4LCA2LCAxNDYsIDEsIDIyMywgMTkxLCAyLCAKLSAgICAyMzIsIDExNCwgMjQ4LCA2LCAxNDYsIDIyMiwgMTIwLCA3OSwgMTQ2LCAyMjIsIDEyMCwgNTAsIDE0NiwgMjQ5LCAxMDYsIAotICAgIDIyNywgMjAxLCAxMTEsIDE0NiwgMjQ5LCAxMDYsIDIyNywgMjAxLCAxMDUsIDE0NiwgMjQ5LCAxMDYsIDIyNywgMjAxLCAKLSAgICAxNTgsIDE0NiwgMjQ5LCAxMDYsIDIyNywgMjAxLCAxNjEsIDE0NiwgMjQ5LCAxMDYsIDIyNywgMjAxLCAxMjMsIDIzMywgMjIsIAotICAgIDIxNiwgMjAyLCAyMTYsIDE5NywgMjQ4LCA1NiwgMTQ2LCAyNDksIDEwNiwgMjQ4LCA1NywgMjE5LCAxMjEsIDE0NiwgMjM1LCAKLSAgICAxNjcsIDE0NiwgMjQzLCAxMTAsIDc5LCAxODUsIDUsIDI1NSwgNywgMjUxLCAyNTEsIDE4NSwgNSwgMjUxLCAyNTEsIDE4NSwgCi0gICAgNSwgMjEzLCAxNDcsIDE4NSwgMSwgNjEsIDE4NSwgMSwgMjU1LCA4MiwgMTg1LCAxLCA3NCwgMTg1LCAxLCAyMzYsIDQwLCAKLSAgICAxODUsIDEsIDY5LCAxODUsIDEsIDIxNCwgMTE4LCAxODUsIDEsIDI0NSwgMjE3LCAxODUsIDEsIDI1NCwgMjEwLCAxODUsIDEsIAotICAgIDIyNiwgMTg3LCAxODUsIDEsIDI1MywgMjAwLCAxODUsIDEsIDE3NiwgMTg1LCAxLCAyMzQsIDEzOCwgMTg1LCAxLCAyNDMsIAotICAgIDE0MiwgMTg1LCAxLCAyNDMsIDAsIDE4NSwgMSwgMjI5LCA4MiwgMTg1LCAxLCAyNTEsIDQxLCAxODUsIDEsIDI1MCwgMTY1LCAKLSAgICAxODUsIDEsIDIzNSwgMTQ3LCAxODUsIDEsIDIzNSwgMTIwLCAxODUsIDEsIDIyNywgMTY5LCAxODUsIDEsIDIxNSwgMTU3LCAKLSAgICAxODUsIDEsIDIxNSwgMTQ1LCAxODUsIDEsIDI0OCwgMTQzLCAxODUsIDEsIDI0OCwgMTI3LCAxODUsIDEsIDIyOCwgMTE1LCAKLSAgICAxODUsIDEsIDIxNywgMTA2LCAxODUsIDEsIDIxNiwgMjA5LCAxODUsIDEsIDI0OCwgMjI5LCAxODUsIDEsIDI0OCwgMzMsIAotICAgIDE4NSwgMSwgMTk4LCAxODUsIDEsIDE5MSwgMTg1LCAxLCAyMjUsIDE1MCwgMTg1LCAxLCAyNTIsIDE5OSwgMTg1LCAxLCAKLSAgICAyNTIsIDI2LCAxODUsIDEsIDE4NiwgMTg1LCAxLCAxOTIsIDE4NSwgMSwgMjA1LCAxODUsIDEsIDIzMywgMTQxLCAxODUsIDEsIAotICAgIDIzMiwgMTkwLCAxODUsIDEsIDIxNCwgMjcsIDE4NSwgMSwgMjIwLCAxMDQsIDE4NSwgMSwgMjA2LCAxODUsIDEsIDE2MiwgCi0gICAgMTg1LCA1LCAyMjcsIDIwOSwgMTg1LCAyNSwgNSwgMjU1LCA4MiwgMTg1LCAyNSwgNSwgNzQsIDE4NSwgMjUsIDUsIDIzNiwgCi0gICAgNDAsIDE4NSwgMjUsIDUsIDY5LCAxODUsIDI1LCA1LCAyMTQsIDExOCwgMTg1LCAyNSwgNSwgMjQ1LCAyMTcsIDE4NSwgMjUsIAotICAgIDUsIDI1NCwgMjEwLCAxODUsIDI1LCA1LCAyMjYsIDE4NywgMTg1LCAyNSwgNSwgMjUzLCAyMDAsIDE4NSwgNSwgMjEzLCAKLSAgICAxNTIsIDE4NSwgNSwgMjE0LCAyMTgsIDE4NSwgMSwgMjM0LCAxMjEsIDE4NSwgMSwgMjQyLCAyMzMsIDE4NSwgMSwgMjEwLCAKLSAgICAxMTYsIDE4NSwgMSwgMjIyLCAxODEsIDE4NSwgMSwgMjQ0LCAyMDQsIDE4NSwgMjEsIDIxMCwgODYsIDE4NSwgMjEsIDExMSwgCi0gICAgMTg1LCAyMSwgMTA1LCAxODUsIDIxLCAxNTgsIDE4NSwgMjEsIDE2MSwgMTg1LCAyMSwgMTkwLCAxODUsIDIxLCAxOTUsIAotICAgIDE4NSwgMjEsIDE5OSwgMTg1LCAyMSwgMTk2LCAxODUsIDIxLCAyMDEsIDE4NSwgMjE2LCA3NSwgMTg1LCAyNTUsIDYsIDE4NSwgCi0gICAgMjM1LCAxODUsIDE4NSwgMjE0LCAxNDYsIDE4NSwgMjQ1LCAxODksIDIyNiwgMTkyLCAxODUsIDUsIDIxMSwgNzgsIDE3MSwgCi0gICAgNSwgMjUxLCA3LCAxNzEsIDUsIDI1NCwgODMsIDE3MSwgNSwgMjEzLCAxNDcsIDE3MSwgMSwgNjEsIDE3MSwgMSwgMjU1LCAKLSAgICA4MiwgMTcxLCAxLCA3NCwgMTcxLCAxLCAyMzYsIDQwLCAxNzEsIDEsIDY5LCAxNzEsIDEsIDIxNCwgMTE4LCAxNzEsIDEsIAotICAgIDE0OSwgMTUzLCAxNzEsIDEsIDE0OSwgMTU2LCAxNzEsIDI1LCAyNTEsIDEwLCA3NiwgMTcxLCAxLCA3NiwgMTcxLCAxLCAKLSAgICAyNTQsIDIxMCwgMTcxLCAyNSwgMjUxLCAxMCwgNzgsIDE3MSwgMSwgNzgsIDE3MSwgMSwgMjUzLCAyMDAsIDE3MSwgMSwgCi0gICAgMTc2LCAxNzEsIDEsIDIzNCwgMTM4LCAxNzEsIDEsIDI0MywgMTQyLCAxNzEsIDEsIDI0MywgMCwgMTcxLCAxLCAyMjksIDgyLCAKLSAgICAxNzEsIDEsIDI1MSwgNDEsIDE3MSwgMSwgMjUwLCAxNjUsIDE3MSwgMSwgMjM1LCAxNDcsIDE3MSwgMSwgMjM1LCAxMjAsIAotICAgIDE3MSwgMSwgMjI3LCAxNjksIDE3MSwgMSwgMjE1LCAxNTcsIDE3MSwgMSwgMjE1LCAxNDUsIDE3MSwgMSwgMjQ4LCAxNDMsIAotICAgIDE3MSwgMSwgMjQ4LCAxMjcsIDE3MSwgMSwgMjI4LCAxMTUsIDE3MSwgMSwgMjE3LCAxMDYsIDE3MSwgMSwgMjE2LCAyMDksIAotICAgIDE3MSwgMSwgMjQ4LCAyMjksIDE3MSwgMSwgMjQ4LCAzMywgMTcxLCAxLCAxOTgsIDE3MSwgMSwgMTkxLCAxNzEsIDEsIDIyNSwgCi0gICAgMTUwLCAxNzEsIDEsIDI1MiwgMTk5LCAxNzEsIDEsIDI1MiwgMjYsIDE3MSwgMSwgMTg2LCAxNzEsIDEsIDE5MiwgMTcxLCAxLCAKLSAgICAyMDUsIDE3MSwgMSwgMjMzLCAxNDEsIDE3MSwgMSwgMjMyLCAxOTAsIDE3MSwgMSwgMjE0LCAyNywgMTcxLCAxLCAyMjAsIAotICAgIDEwNCwgMTcxLCAxLCAyMTgsIDIyNSwgMTcxLCAxLCAyMDYsIDE3MSwgMSwgMTYyLCAxNzEsIDUsIDIyNywgMjA5LCAxNzEsIAotICAgIDUsIDI1MywgMTgzLCAxNzEsIDI1LCA1LCAyNTUsIDgyLCAxNzEsIDI1LCA1LCA3NCwgMTcxLCAyNSwgNSwgMjM2LCA0MCwgCi0gICAgMTcxLCAyNSwgNSwgNjksIDE3MSwgMjUsIDUsIDIxNCwgMTE4LCAxNzEsIDI1LCA1LCAxNDksIDE1MywgMTcxLCAyNSwgNSwgCi0gICAgMTQ5LCAyMjIsIDE4MiwgMTcxLCAyNSwgNSwgMjUxLCAxMCwgNzYsIDE3MSwgMjUsIDUsIDc2LCAxNzEsIDI1LCA1LCAyNTQsIAotICAgIDIxMCwgMTcxLCAyNSwgNSwgMjUxLCAxMCwgNzgsIDE3MSwgMjUsIDUsIDc4LCAxNzEsIDI1LCA1LCAyNTMsIDIwMCwgMTcxLCAKLSAgICA1LCAyMTMsIDE1MiwgMTcxLCAyMjYsIDIwOCwgMTcxLCAxLCAxNDksIDIyMiwgMTgyLCAxNzEsIDEsIDE0OSwgMjMyLCAxOTEsIAotICAgIDE3MSwgMjUsIDUsIDE0OSwgMTU2LCAxNzEsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCAxNzEsIDIxLCAyMTAsIDg2LCAxNzEsIAotICAgIDIxLCAxMTEsIDE3MSwgMjEsIDEwNSwgMTcxLCAyMSwgMTU4LCAxNzEsIDIxLCAxNjEsIDE3MSwgMjEsIDE5MCwgMTcxLCAyMSwgCi0gICAgMTk1LCAxNzEsIDIxLCAxOTksIDE3MSwgMjEsIDE5NiwgMTcxLCAyMSwgMjAxLCAxNzEsIDI1NSwgMzAsIDUwLCAxNzEsIAotICAgIDIyMiwgMTIwLCA1MCwgMTU3LCA1LCAyNTEsIDcsIDE1NywgNSwgMjU0LCA4MywgMTU3LCA1LCAyMTMsIDE0NywgMTU3LCAxLCAKLSAgICA2MSwgMTU3LCAxLCAyNTUsIDgyLCAxNTcsIDEsIDc0LCAxNTcsIDEsIDIzNiwgNDAsIDE1NywgMSwgNjksIDE1NywgMSwgCi0gICAgMjE0LCAxMTgsIDE1NywgMSwgMTQ5LCAxNTMsIDE1NywgMSwgMTQ5LCAxNTYsIDE1NywgMSwgNzYsIDE1NywgMSwgMjU0LCAKLSAgICAyMTAsIDE1NywgMSwgNzgsIDE1NywgMSwgMjUzLCAyMDAsIDE1NywgMSwgMTc2LCAxNTcsIDEsIDIzNCwgMTM4LCAxNTcsIDEsIAotICAgIDI0MywgMTQyLCAxNTcsIDEsIDI0MywgMCwgMTU3LCAxLCAyMjksIDgyLCAxNTcsIDEsIDI1MSwgNDEsIDE1NywgMSwgMjUwLCAKLSAgICAxNjUsIDE1NywgMSwgMjM1LCAxNDcsIDE1NywgMSwgMjM1LCAxMjAsIDE1NywgMSwgMjI3LCAxNjksIDE1NywgMSwgMjE1LCAKLSAgICAxNTcsIDE1NywgMSwgMjE1LCAxNDUsIDE1NywgMSwgMjQ4LCAxNDMsIDE1NywgMSwgMjQ4LCAxMjcsIDE1NywgMSwgMjI4LCAKLSAgICAxMTUsIDE1NywgMSwgMjE3LCAxMDYsIDE1NywgMSwgMjE2LCAyMDksIDE1NywgMSwgMjQ4LCAyMjksIDE1NywgMSwgMjQ4LCAKLSAgICAzMywgMTU3LCAxLCAxOTgsIDE1NywgMSwgMTkxLCAxNTcsIDEsIDIyNSwgMTUwLCAxNTcsIDEsIDI1MiwgMTk5LCAxNTcsIDEsIAotICAgIDI1MiwgMjYsIDE1NywgMSwgMTg2LCAxNTcsIDEsIDE5MiwgMTU3LCAxLCAyMDUsIDE1NywgMSwgMjMzLCAxNDEsIDE1NywgMSwgCi0gICAgMjMyLCAxOTAsIDE1NywgMSwgMjE0LCAyNywgMTU3LCAxLCAyMjAsIDEwNCwgMTU3LCAxLCAyMTgsIDIyNSwgMTU3LCAxLCAKLSAgICAyMDYsIDE1NywgMSwgMTYyLCAxNTcsIDUsIDIyNywgMjA5LCAxNTcsIDUsIDI1MywgMTgzLCAxNTcsIDI1LCA1LCAyNTUsIAotICAgIDgyLCAxNTcsIDI1LCA1LCA3NCwgMTU3LCAyNSwgNSwgMjM2LCA0MCwgMTU3LCAyNSwgNSwgNjksIDE1NywgMjUsIDUsIDIxNCwgCi0gICAgMTE4LCAxNTcsIDI1LCA1LCAxNDksIDE1MywgMTU3LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgMTU3LCAyNSwgNSwgNzYsIAotICAgIDE1NywgMjUsIDUsIDI1NCwgMjEwLCAxNTcsIDI1LCA1LCA3OCwgMTU3LCAyNSwgNSwgMjUzLCAyMDAsIDE1NywgNSwgMjEzLCAKLSAgICAxNTIsIDE1NywgMjU0LCAyMTEsIDIzMywgMjksIDc5LCAxNTcsIDI1MywgMjAxLCAyMzMsIDI5LCA3OSwgMTU3LCAxLCAyMjIsIAotICAgIDE4MSwgMTU3LCAxLCAyMjMsIDQyLCAxNTcsIDEsIDIxMCwgMTY4LCAxNTcsIDEsIDE0OSwgMjIyLCAxODIsIDE1NywgMSwgCi0gICAgMTQ5LCAyMzIsIDE5MSwgMTU3LCAyNSwgNSwgMTQ5LCAxNTYsIDE1NywgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDE1NywgMjEsIAotICAgIDIxMCwgODYsIDE1NywgMjEsIDExMSwgMTU3LCAyMSwgMTA1LCAxNTcsIDIxLCAxNTgsIDE1NywgMjEsIDE2MSwgMTU3LCAyMSwgCi0gICAgMTkwLCAxNTcsIDIxLCAxOTUsIDE1NywgMjEsIDE5OSwgMTU3LCAyMSwgMTk2LCAxNTcsIDIxLCAyMDEsIDE1NywgMjM1LCAKLSAgICAxNjcsIDE1NywgMSwgMjEyLCA2NSwgMTU3LCAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDE1NywgMjQ0LCAxMCwgMTIzLCAyNDIsIAotICAgIDM0LCAxNTcsIDI0NCwgMTAsIDEzNCwgMjI0LCAyMiwgMTU3LCAyNDQsIDEwLCAxMjMsIDIxOSwgMTE5LCAxNTcsIDI0NCwgCi0gICAgMTAsIDEyMywgMjQ1LCAxOTYsIDE1NywgMjQ0LCAxMCwgMTM0LCAyMTksIDExOCwgMzYsIDUsIDI1NCwgODMsIDM2LCA1LCAKLSAgICAyMTMsIDE0NywgMzYsIDEsIDYxLCAzNiwgMSwgMjU1LCA4MiwgMzYsIDEsIDc0LCAzNiwgMSwgMjM2LCA0MCwgMzYsIDEsIAotICAgIDY5LCAzNiwgMSwgMjE0LCAxMTgsIDM2LCAxLCA3NiwgMzYsIDEsIDI0NSwgMjE3LCAzNiwgMSwgMjU0LCAyMTAsIDM2LCAxLCAKLSAgICA3OCwgMzYsIDEsIDIyNiwgMTg3LCAzNiwgMSwgMjUzLCAyMDAsIDM2LCAxLCAxNzYsIDM2LCAxLCAyMjksIDgyLCAzNiwgMSwgCi0gICAgMjUxLCA0MSwgMzYsIDEsIDIzNSwgMTQ3LCAzNiwgMSwgMjI3LCAxNjksIDM2LCAxLCAyMTUsIDE1NywgMzYsIDEsIDIyOCwgCi0gICAgMTE1LCAzNiwgMSwgMjE3LCAxMDYsIDM2LCAxLCAxOTgsIDM2LCAxLCAyMjgsIDk3LCAzNiwgMSwgMTkxLCAzNiwgMSwgMTg2LCAKLSAgICAzNiwgMSwgMTkyLCAzNiwgMSwgMjA1LCAzNiwgMSwgMjIyLCAxODEsIDM2LCAxLCAyMzMsIDE0MSwgMzYsIDEsIDIzMiwgCi0gICAgMTkwLCAzNiwgMSwgMjMyLCAxODEsIDM2LCAxLCAyMTQsIDI3LCAzNiwgMSwgMjIwLCAxMDQsIDM2LCAxLCAyMTgsIDIyNSwgCi0gICAgMzYsIDEsIDIwNiwgMzYsIDEsIDE2MiwgMzYsIDI1LCA1LCAyNTUsIDgyLCAzNiwgMjUsIDUsIDc0LCAzNiwgMjUsIDUsIAotICAgIDIzNiwgNDAsIDM2LCAyNSwgNSwgNjksIDM2LCAyNSwgNSwgMjE0LCAxMTgsIDM2LCAyNSwgNSwgNzYsIDM2LCAyNSwgNSwgCi0gICAgMjQ1LCAyMTcsIDM2LCAyNSwgNSwgMjU0LCAyMTAsIDM2LCAyNSwgNSwgNzgsIDM2LCAyNSwgNSwgMjI2LCAxODcsIDM2LCAKLSAgICAyNSwgNSwgMjUzLCAyMDAsIDM2LCA1LCAyMTMsIDE1MiwgMzYsIDIyNiwgMjA4LCAzNiwgMjUzLCAyMDEsIDIzMywgMjksIAotICAgIDc5LCAzNiwgMjEsIDIxMCwgODYsIDM2LCAyMSwgMTExLCAzNiwgMjEsIDEwNSwgMzYsIDIxLCAxNTgsIDM2LCAyMSwgMTYxLCAKLSAgICAzNiwgMjEsIDE5MCwgMzYsIDIxLCAxOTUsIDM2LCAyMSwgMTk5LCAzNiwgMjEsIDE5NiwgMzYsIDIxLCAyMDEsIDM2LCA1NCwgCi0gICAgMjE2LCAyNDgsIDM2LCA1NCwgMTIzLCAyNDAsIDIxNywgMzYsIDU0LCAxMjMsIDIxNiwgMTQ4LCAzNiwgMjQ4LCAxNTQsIDUwLCAKLSAgICAzNiwgMjMwLCAxNDAsIDUwLCAzNiwgMjExLCA0NSwgNTAsIDM2LCAyNDgsIDk1LCA1MCwgMzYsIDI0OSwgMTQ3LCA1MCwgMzYsIAotICAgIDI1MywgMjQ2LCA3MiwgNTAsIDM2LCAyMjIsIDEyMCwgNTAsIDM2LCA1NCwgNTAsIDE0OCwgNSwgMjUxLCA3LCAxNDgsIDUsIAotICAgIDI1NCwgODMsIDE0OCwgNSwgMjEzLCAxNDcsIDE0OCwgMSwgNjEsIDE0OCwgMSwgMjU1LCA4MiwgMTQ4LCAxLCA3NCwgMTQ4LCAKLSAgICAxLCAyMzYsIDQwLCAxNDgsIDEsIDY5LCAxNDgsIDEsIDIxNCwgMTE4LCAxNDgsIDEsIDE0OSwgMTUzLCAxNDgsIDEsIDE0OSwgCi0gICAgMTU2LCAxNDgsIDEsIDc2LCAxNDgsIDEsIDI0NSwgMjE3LCAxNDgsIDEsIDI1NCwgMjEwLCAxNDgsIDEsIDc4LCAxNDgsIDEsIAotICAgIDIyNiwgMTg3LCAxNDgsIDEsIDI1MywgMjAwLCAxNDgsIDEsIDE3NiwgMTQ4LCAxLCAyMzQsIDEzOCwgMTQ4LCAxLCAyNDMsIAotICAgIDE0MiwgMTQ4LCAxLCAyNDMsIDAsIDE0OCwgMSwgMjI5LCA4MiwgMTQ4LCAxLCAyNTEsIDQxLCAxNDgsIDEsIDI1MCwgMTY1LCAKLSAgICAxNDgsIDEsIDIzNSwgMTQ3LCAxNDgsIDEsIDIzNSwgMTIwLCAxNDgsIDEsIDIyNywgMTY5LCAxNDgsIDEsIDIxNSwgMTU3LCAKLSAgICAxNDgsIDEsIDIxNSwgMTQ1LCAxNDgsIDEsIDI0OCwgMTQzLCAxNDgsIDEsIDI0OCwgMTI3LCAxNDgsIDEsIDIyOCwgMTE1LCAKLSAgICAxNDgsIDEsIDIxNywgMTA2LCAxNDgsIDEsIDIxNiwgMjA5LCAxNDgsIDEsIDI0OCwgMjI5LCAxNDgsIDEsIDI0OCwgMzMsIAotICAgIDE0OCwgMSwgMTk4LCAxNDgsIDEsIDE5MSwgMTQ4LCAxLCAyMjUsIDE1MCwgMTQ4LCAxLCAyNTIsIDE5OSwgMTQ4LCAxLCAKLSAgICAyNTIsIDI2LCAxNDgsIDEsIDE4NiwgMTQ4LCAxLCAxOTIsIDE0OCwgMSwgMjA1LCAxNDgsIDEsIDIyMiwgMTgxLCAxNDgsIDEsIAotICAgIDIzMywgMTQxLCAxNDgsIDEsIDIzMiwgMTkwLCAxNDgsIDEsIDIxNCwgMjcsIDE0OCwgMSwgMjIwLCAxMDQsIDE0OCwgMSwgCi0gICAgMjE4LCAyMjUsIDE0OCwgMSwgMjA2LCAxNDgsIDEsIDE2MiwgMTQ4LCA1LCAyNTMsIDE4MywgMTQ4LCAyNSwgNSwgMjU1LCAKLSAgICA4MiwgMTQ4LCAyNSwgNSwgNzQsIDE0OCwgMjUsIDUsIDIzNiwgNDAsIDE0OCwgMjUsIDUsIDY5LCAxNDgsIDI1LCA1LCAyMTQsIAotICAgIDExOCwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTMsIDE0OCwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDE0OCwgMjUsIDUsIDc2LCAKLSAgICAxNDgsIDI1LCA1LCAyNDUsIDIxNywgMTQ4LCAyNSwgNSwgMjU0LCAyMTAsIDE0OCwgMjUsIDUsIDc4LCAxNDgsIDI1LCA1LCAKLSAgICAyMjYsIDE4NywgMTQ4LCAyNSwgNSwgMjUzLCAyMDAsIDE0OCwgNSwgMjEzLCAxNTIsIDE0OCwgMjMzLCAyOSwgNzksIDE0OCwgCi0gICAgMjU0LCAyMTEsIDIzMywgMjksIDc5LCAxNDgsIDEsIDIxNSwgMTg0LCAxNDgsIDEsIDI0NiwgNDYsIDE0OCwgMSwgMTQ5LCAKLSAgICAyMjIsIDE4MiwgMTQ4LCAxLCAxNDksIDIzMiwgMTkxLCAxNDgsIDI1LCA1LCAxNDksIDE1NiwgMTQ4LCAyNSwgNSwgMTQ5LCAKLSAgICAyMzIsIDE5MSwgMTQ4LCAyMSwgMjEwLCA4NiwgMTQ4LCAyMSwgMTExLCAxNDgsIDIxLCAxMDUsIDE0OCwgMjEsIDE1OCwgCi0gICAgMTQ4LCAyMSwgMTYxLCAxNDgsIDIxLCAxOTAsIDE0OCwgMjEsIDE5NSwgMTQ4LCAyMSwgMTk5LCAxNDgsIDIxLCAxOTYsIAotICAgIDE0OCwgMjEsIDIwMSwgMTQ4LCAyNDQsIDEwLCAyMSwgMjEwLCA4NywgMzEsIDIyNiwgMjQxLCAyMjQsIDIyNiwgNjQsIDE2MSwgCi0gICAgMTQ4LCAyNDQsIDEwLCAyMSwgMTIzLCAzMSwgMjI2LCAyNDEsIDIyNCwgMjI2LCA2NCwgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAKLSAgICAxMTMsIDMxLCAyMjYsIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgMjQ0LCAxMCwgMjEsIDEzNCwgMzEsIDIyNiwgCi0gICAgMjQxLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAyMSwgMTIzLCAzMSwgMjQ1LCA1MCwgMjI0LCAyMjYsIDY0LCAKLSAgICAxNjEsIDE0OCwgMjQ0LCAxMCwgMjEsIDExMywgMzEsIDI0NSwgNTAsIDIyNCwgMjI2LCA2NCwgMTYxLCAxNDgsIDI0NCwgMTAsIAotICAgIDIxLCAxMzQsIDMxLCAyNDUsIDUwLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCA1LCAyMTUsIDg0LCAxNjUsIDUsIDI1NCwgCi0gICAgODMsIDE2NSwgNSwgMjEzLCAxNDcsIDE2NSwgMSwgNjEsIDE2NSwgMSwgMjU1LCA4MiwgMTY1LCAxLCA3NCwgMTY1LCAxLCAKLSAgICAyMzYsIDQwLCAxNjUsIDEsIDY5LCAxNjUsIDEsIDIxNCwgMTE4LCAxNjUsIDEsIDE0OSwgMTUzLCAxNjUsIDEsIDE0OSwgCi0gICAgMTU2LCAxNjUsIDEsIDc2LCAxNjUsIDEsIDI0NSwgMjE3LCAxNjUsIDEsIDI1NCwgMjEwLCAxNjUsIDEsIDc4LCAxNjUsIDEsIAotICAgIDIyNiwgMTg3LCAxNjUsIDEsIDI1MywgMjAwLCAxNjUsIDEsIDE3NiwgMTY1LCAxLCAyMzQsIDEzOCwgMTY1LCAxLCAyNDMsIAotICAgIDE0MiwgMTY1LCAxLCAyNDMsIDAsIDE2NSwgMSwgMjI5LCA4MiwgMTY1LCAxLCAyNTEsIDQxLCAxNjUsIDEsIDI1MCwgMTY1LCAKLSAgICAxNjUsIDEsIDIzNSwgMTQ3LCAxNjUsIDEsIDIzNSwgMTIwLCAxNjUsIDEsIDIyNywgMTY5LCAxNjUsIDEsIDIxNSwgMTU3LCAKLSAgICAxNjUsIDEsIDIxNSwgMTQ1LCAxNjUsIDEsIDI0OCwgMTQzLCAxNjUsIDEsIDI0OCwgMTI3LCAxNjUsIDEsIDIyOCwgMTE1LCAKLSAgICAxNjUsIDEsIDIxNywgMTA2LCAxNjUsIDEsIDIxNiwgMjA5LCAxNjUsIDEsIDI0OCwgMjI5LCAxNjUsIDEsIDI0OCwgMzMsIAotICAgIDE2NSwgMSwgMTk4LCAxNjUsIDEsIDE5MSwgMTY1LCAxLCAyMjUsIDE1MCwgMTY1LCAxLCAyNTIsIDE5OSwgMTY1LCAxLCAKLSAgICAyNTIsIDI2LCAxNjUsIDEsIDE4NiwgMTY1LCAxLCAxOTIsIDE2NSwgMSwgMjA1LCAxNjUsIDEsIDIyMiwgMTgxLCAxNjUsIDEsIAotICAgIDIzMywgMTQxLCAxNjUsIDEsIDIzMiwgMTkwLCAxNjUsIDEsIDIxNCwgMjcsIDE2NSwgMSwgMjIwLCAxMDQsIDE2NSwgMSwgCi0gICAgMjE4LCAyMjUsIDE2NSwgMSwgMjA2LCAxNjUsIDEsIDE2MiwgMTY1LCA1LCAyMjcsIDIwOSwgMTY1LCA1LCAyNTMsIDE4MywgCi0gICAgMTY1LCAyNSwgNSwgMjU1LCA4MiwgMTY1LCAyNSwgNSwgNzQsIDE2NSwgMjUsIDUsIDIzNiwgNDAsIDE2NSwgMjUsIDUsIDY5LCAKLSAgICAxNjUsIDI1LCA1LCAyMTQsIDExOCwgMTY1LCAyNSwgNSwgMTQ5LCAxNTMsIDE2NSwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIAotICAgIDE2NSwgMjUsIDUsIDc2LCAxNjUsIDI1LCA1LCAyNDUsIDIxNywgMTY1LCAyNSwgNSwgMjU0LCAyMTAsIDE2NSwgMjUsIDUsIAotICAgIDc4LCAxNjUsIDI1LCA1LCAyMjYsIDE4NywgMTY1LCAyNSwgNSwgMjUzLCAyMDAsIDE2NSwgNSwgMjEzLCAxNTIsIDE2NSwgCi0gICAgMjMzLCAyOSwgNzksIDE2NSwgMjU0LCAyMTEsIDIzMywgMjksIDc5LCAxNjUsIDEsIDI0NCwgMjA0LCAxNjUsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDE2NSwgMSwgMTQ5LCAyMzIsIDE5MSwgMTY1LCAyNSwgNSwgMTQ5LCAxNTYsIDE2NSwgMjUsIDUsIDE0OSwgCi0gICAgMjMyLCAxOTEsIDE2NSwgMjEsIDIxMCwgODYsIDE2NSwgMjEsIDExMSwgMTY1LCAyMSwgMTA1LCAxNjUsIDIxLCAxNTgsIAotICAgIDE2NSwgMjEsIDE2MSwgMTY1LCAyMSwgMTkwLCAxNjUsIDIxLCAxOTUsIDE2NSwgMjEsIDE5OSwgMTY1LCAyMSwgMTk2LCAKLSAgICAxNjUsIDIxLCAyMDEsIDE2NSwgNSwgMjM1LCAxMDgsIDE2NSwgNSwgMjE0LCAxNjEsIDEzNiwgNSwgMjU0LCA4MywgMTM2LCAKLSAgICA1LCAyMTMsIDE0NywgMTM2LCAxLCA2MSwgMTM2LCAxLCAyNTUsIDgyLCAxMzYsIDEsIDc0LCAxMzYsIDEsIDIzNiwgNDAsIAotICAgIDEzNiwgMSwgNjksIDEzNiwgMSwgMjE0LCAxMTgsIDEzNiwgMSwgMTQ5LCAxNTMsIDEzNiwgMSwgMTQ5LCAxNTYsIDEzNiwgMSwgCi0gICAgNzYsIDEzNiwgMSwgMjQ1LCAyMTcsIDEzNiwgMSwgMjU0LCAyMTAsIDEzNiwgMSwgNzgsIDEzNiwgMSwgMjI2LCAxODcsIAotICAgIDEzNiwgMSwgMjUzLCAyMDAsIDEzNiwgMSwgMTc2LCAxMzYsIDEsIDIzNCwgMTM4LCAxMzYsIDEsIDI0MywgMTQyLCAxMzYsIAotICAgIDEsIDI0MywgMCwgMTM2LCAxLCAyMjksIDgyLCAxMzYsIDEsIDI1MSwgNDEsIDEzNiwgMSwgMjUwLCAxNjUsIDEzNiwgMSwgCi0gICAgMjM1LCAxNDcsIDEzNiwgMSwgMjM1LCAxMjAsIDEzNiwgMSwgMjI3LCAxNjksIDEzNiwgMSwgMjE1LCAxNTcsIDEzNiwgMSwgCi0gICAgMjE1LCAxNDUsIDEzNiwgMSwgMjQ4LCAxNDMsIDEzNiwgMSwgMjQ4LCAxMjcsIDEzNiwgMSwgMjI4LCAxMTUsIDEzNiwgMSwgCi0gICAgMjE3LCAxMDYsIDEzNiwgMSwgMjE2LCAyMDksIDEzNiwgMSwgMjQ4LCAyMjksIDEzNiwgMSwgMjQ4LCAzMywgMTM2LCAxLCAKLSAgICAxOTgsIDEzNiwgMSwgMjI4LCA5NywgMTM2LCAxLCAxOTEsIDEzNiwgMSwgMjI1LCAxNTAsIDEzNiwgMSwgMjUyLCAxOTksIAotICAgIDEzNiwgMSwgMjUyLCAyNiwgMTM2LCAxLCAxODYsIDEzNiwgMSwgMTkyLCAxMzYsIDEsIDIwNSwgMTM2LCAxLCAyMjIsIDE4MSwgCi0gICAgMTM2LCAxLCAyMzMsIDE0MSwgMTM2LCAxLCAyMzIsIDE5MCwgMTM2LCAxLCAyMzIsIDE4MSwgMTM2LCAxLCAyMTQsIDI3LCAKLSAgICAxMzYsIDEsIDIyMCwgMTA0LCAxMzYsIDEsIDIxOCwgMjI1LCAxMzYsIDEsIDIwNiwgMTM2LCAxLCAxNjIsIDEzNiwgMSwgCi0gICAgMjE1LCAxMjYsIDEzNiwgNSwgMjUzLCAxODMsIDEzNiwgMjUsIDUsIDI1NSwgODIsIDEzNiwgMjUsIDUsIDc0LCAxMzYsIDI1LCAKLSAgICA1LCAyMzYsIDQwLCAxMzYsIDI1LCA1LCA2OSwgMTM2LCAyNSwgNSwgMjE0LCAxMTgsIDEzNiwgMjUsIDUsIDE0OSwgMTUzLCAKLSAgICAxMzYsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAxMzYsIDI1LCA1LCA3NiwgMTM2LCAyNSwgNSwgMjQ1LCAyMTcsIDEzNiwgMjUsIAotICAgIDUsIDI1NCwgMjEwLCAxMzYsIDI1LCA1LCA3OCwgMTM2LCAyNSwgNSwgMjI2LCAxODcsIDEzNiwgMjUsIDUsIDI1MywgMjAwLCAKLSAgICAxMzYsIDUsIDIxMywgMTUyLCAxMzYsIDEsIDU5LCAyMjMsIDc2LCAxMzYsIDI1MywgMjAxLCAyMzMsIDI5LCA3OSwgMTM2LCAKLSAgICAxLCAxNDksIDIyMiwgMTgyLCAxMzYsIDEsIDE0OSwgMjMyLCAxOTEsIDEzNiwgMjUsIDUsIDE0OSwgMTU2LCAxMzYsIDI1LCAKLSAgICA1LCAxNDksIDIzMiwgMTkxLCAxMzYsIDIxLCAyMTAsIDg2LCAxMzYsIDIxLCAxMTEsIDEzNiwgMjEsIDEwNSwgMTM2LCAyMSwgCi0gICAgMTU4LCAxMzYsIDIxLCAxNjEsIDEzNiwgMjEsIDE5MCwgMTM2LCAyMSwgMTk1LCAxMzYsIDIxLCAxOTksIDEzNiwgMjEsIAotICAgIDE5NiwgMTM2LCAyMSwgMjAxLCAxMzYsIDU0LCAyMTYsIDI0OCwgMTM2LCA1NCwgMTIzLCAyNDAsIDIxNywgMTM2LCA1NCwgCi0gICAgMTIzLCAyMTYsIDE0OCwgMTM2LCAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDEzNiwgMjQ0LCAxMCwgMTIzLCAyNDIsIDM0LCAKLSAgICAxMzYsIDI0NCwgMTAsIDEzNCwgMjI0LCAyMiwgMTM2LCAyNDgsIDE1OCwgNzksIDEzNiwgMSwgMjUwLCAxMDcsIDIyOCwgCi0gICAgMTE2LCAxMzYsIDEsIDI1MCwgMTA3LCAyMzAsIDMwLCAxMzYsIDEsIDI1MCwgMTA3LCAyMjIsIDE4MiwgMTM2LCAxLCAyNTAsIAotICAgIDEwNywgMTU2LCAxMzYsIDEsIDI1MCwgMTA3LCAyMzIsIDE5MSwgMTM2LCAxLCAyNTAsIDEwNywgMjM1LCAyOSwgMTc1LCA1LCAKLSAgICAyNTQsIDgyLCAxNzUsIDUsIDIxMywgMTQ2LCAxNzUsIDEsIDI1MywgMTczLCAxNzUsIDEsIDI1NSwgMzYsIDE3NSwgMSwgCi0gICAgMjU0LCAyMzIsIDE3NSwgMSwgMjU0LCAyNDcsIDE3NSwgMSwgMjM1LCAxNTcsIDE3NSwgMSwgMjM2LCAzOSwgMTc1LCAxLCAKLSAgICAyMTQsIDExMCwgMTc1LCAxLCAyMTQsIDExMiwgMTc1LCAxLCAyMzUsIDE4MCwgMTc1LCAxLCAyMzUsIDE4MSwgMTc1LCAxLCAKLSAgICAyMzYsIDI1LCAxNzUsIDEsIDIzNiwgMjcsIDE3NSwgMSwgMjQ1LCAyNSwgMTc1LCAxLCAyNDUsIDIxMiwgMTc1LCAxLCAyNTQsIAotICAgIDE5NywgMTc1LCAxLCAyMjYsIDExMiwgMTc1LCAxLCAyMjYsIDE4MSwgMTc1LCAxLCAyNTMsIDE4NiwgMTc1LCAxLCAyNTQsIAotICAgIDE1NCwgMjM0LCAxOTMsIDE3NSwgMSwgMjMxLCAyMTQsIDIzNCwgMTkzLCAxNzUsIDEsIDI1NCwgMTU0LCAyNDMsIDg5LCAKLSAgICAxNzUsIDEsIDIzMSwgMjE0LCAyNDMsIDg5LCAxNzUsIDEsIDIzNCwgMjM1LCAyMjksIDIyNywgMTc1LCAxLCAyMjEsIDIzOCwgCi0gICAgMjQzLCA4OSwgMTc1LCAxLCAyNTQsIDE1NCwgMjUwLCAyMjQsIDE3NSwgMSwgMjMxLCAyMTQsIDI1MCwgMjI0LCAxNzUsIDEsIAotICAgIDI1NCwgMTU0LCAyMzUsIDEzMywgMTc1LCAxLCAyMzEsIDIxNCwgMjM1LCAxMzMsIDE3NSwgMSwgMjE3LCA5OSwgMjI5LCAKLSAgICAyMjcsIDE3NSwgMSwgMjE3LCA5OSwgMjIxLCAyMzcsIDIyOSwgMjI4LCAxNzUsIDEsIDIyMSwgMjM4LCAyMzUsIDEzMywgCi0gICAgMTc1LCAxLCAyNTQsIDE1NCwgMjE1LCAxNTMsIDE3NSwgMSwgMjMxLCAyMTQsIDIxNSwgMTUzLCAxNzUsIDEsIDI1NCwgMTU0LCAKLSAgICAyNDgsIDEzNCwgMTc1LCAxLCAyMzEsIDIxNCwgMjQ4LCAxMzQsIDE3NSwgMSwgMjMwLCA1OCwgMjI5LCAxODUsIDE3NSwgMSwgCi0gICAgMjIxLCAyMzgsIDI0OCwgMTM0LCAxNzUsIDEsIDI1NCwgMTU0LCAyMTcsIDMxLCAxNzUsIDEsIDIzMSwgMjE0LCAyMTcsIDMxLCAKLSAgICAxNzUsIDEsIDI1NCwgMTU0LCAyNDgsIDE1MiwgMTc1LCAxLCAyMzEsIDIxNCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjQ4LCAxODIsIAotICAgIDIyOSwgMTg1LCAxNzUsIDEsIDIyMSwgMjM4LCAyNDgsIDE1MiwgMTc1LCAxLCAyNTQsIDE1NCwgMjI1LCAyMzIsIDE3NSwgMSwgCi0gICAgMjMxLCAyMTQsIDIyNSwgMjMyLCAxNzUsIDEsIDI1NCwgMTU0LCAyNTIsIDEyMCwgMTc1LCAxLCAyMzEsIDIxNCwgMjUyLCAKLSAgICAxMjAsIDE3NSwgMSwgMjMxLCAxMzYsIDE3NSwgMSwgMjU0LCAxMzksIDI1MiwgMTIwLCAxNzUsIDEsIDIxMSwgNTEsIDE3NSwgCi0gICAgMSwgMjIzLCAxMzYsIDE3NSwgMSwgMjQ4LCAxODIsIDIzMywgNzMsIDE3NSwgMSwgMjE0LCAxLCAxNzUsIDEsIDIxNywgOTksIAotICAgIDIyMSwgMjEyLCAxNzUsIDEsIDIzMCwgNTgsIDIyMSwgMjEyLCAxNzUsIDEsIDI0OCwgMTgyLCAyMjEsIDIxMiwgMTc1LCAxLCAKLSAgICAyNDEsIDI0OSwgMTc1LCAxLCAyMzAsIDU4LCAyMzMsIDczLCAxNzUsIDEsIDI0NCwgMTY0LCAxNzUsIDUsIDI1NCwgMTg2LCAKLSAgICAxNzUsIDI1LCA1LCAyNTQsIDI0MiwgMTc1LCAyNSwgNSwgMjM0LCAxNjEsIDI1NCwgMjQ5LCAxNzUsIDI1LCA1LCAyNDcsIAotICAgIDIzNiwgMjU0LCAyNDksIDE3NSwgMjUsIDUsIDIzNCwgMTYxLCAyMzUsIDE3NywgMTc1LCAyNSwgNSwgMjQ3LCAyMzYsIDIzNSwgCi0gICAgMTc3LCAxNzUsIDI1LCA1LCAyMzQsIDE2MSwgMjI2LCA5MiwgMTc1LCAyNSwgNSwgMjQ3LCAyMzYsIDIyNiwgOTIsIDE3NSwgCi0gICAgMjUsIDUsIDI0MywgMTMxLCAxNzUsIDI1LCA1LCAyMzQsIDIxLCAxNzUsIDI1LCA1LCAyNDcsIDIzNiwgMjM0LCAyMSwgMTc1LCAKLSAgICAyNSwgNSwgMjM0LCAyMywgMjQ4LCA3NSwgMTc1LCAyNSwgNSwgMjM0LCAyMiwgMjQyLCA1NCwgMjU0LCAyNDIsIDE3NSwgMjUsIAotICAgIDUsIDIzNCwgMjIsIDI0MiwgNTQsIDI0NywgMjM2LCAyNTQsIDI0MiwgMTc1LCAyNSwgNSwgMjM0LCAyMiwgMjQyLCA1NCwgCi0gICAgMjQzLCA4OCwgMTc1LCAyNSwgNSwgMjQzLCA4OCwgMTc1LCAyNSwgNSwgMjQ3LCAyMzYsIDI0MywgMTMxLCAxNzUsIDI1LCA1LCAKLSAgICAyNDcsIDIzNiwgMjQzLCA4OCwgMTc1LCAyMjQsIDE0NCwgMjMzLCAyMTMsIDE2OCwgMTM1LCAyMzQsIDM1LCAyMzQsIDI1MiwgCi0gICAgMTY4LCAxMzUsIDIzNCwgMTEyLCAyMzQsIDEzNCwgMTY4LCAxMzUsIDIzNCwgMTEyLCAyMzQsIDEwNSwgMTY4LCAxMzUsIAotICAgIDIzNCwgMTEyLCAyMzQsIDEwMSwgMTY4LCAxMzUsIDIzNCwgMTEyLCAyMzQsIDEwOSwgMTY4LCAxMzUsIDIzNCwgMTEyLCAKLSAgICAyMjMsIDE1NywgMTY4LCAxMzUsIDIyOSwgMTAsIDIyOCwgMjUzLCAxNjgsIDEzNSwgMjUwLCA5NSwgMjUwLCAxNTUsIDE2OCwgCi0gICAgMTM1LCAyNTAsIDk1LCAyNTAsIDEwMywgMTY4LCAxMzUsIDI1MCwgOTUsIDI1MCwgMTU0LCAxNjgsIDEzNSwgMjE5LCA2MSwgCi0gICAgMjE5LCA2MCwgMTY4LCAxMzUsIDI1MCwgOTUsIDI1MCwgOTEsIDE2OCwgMTM1LCAyMTAsIDI0NSwgMjEwLCAyNTIsIDE2OCwgCi0gICAgMTM1LCAyNDcsIDE1NCwgMjUwLCAxNjIsIDE2OCwgMTM1LCAyMTYsIDQzLCAyMjUsIDI0MiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAKLSAgICAyMTYsIDIwMSwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMjksIDIwNiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMjUsIDExNCwgCi0gICAgMTY4LCAxMzUsIDIyOCwgODAsIDIyOSwgMTAzLCAxNjgsIDEzNSwgMjQ3LCAxNTQsIDI0OCwgNzYsIDE2OCwgMTM1LCAyMTYsIAotICAgIDQzLCAyMTcsIDU2LCAxNjgsIDEzNSwgMjE2LCAxNTgsIDIxNiwgMTMyLCAxNjgsIDEzNSwgMjE2LCAxNTgsIDIxNiwgMjA1LCAKLSAgICAxNjgsIDEzNSwgMjE2LCAxNTgsIDIxNiwgMTU1LCAxNjgsIDEzNSwgMjI4LCA4MCwgMjI3LCAyNDIsIDE2OCwgMTM1LCAyNTEsIAotICAgIDIxNCwgMjUyLCAxNzIsIDE2OCwgMTM1LCAyMjUsIDIwLCAyMjUsIDQ1LCAxNjgsIDEzNSwgMjI1LCAxMjUsIDIyNSwgMTE2LCAKLSAgICAxNjgsIDEzNSwgMjQ0LCA1MiwgMjQ0LCAyMDQsIDE2OCwgMTM1LCAyMjUsIDEyNSwgMjI1LCAxNDQsIDE2OCwgMTM1LCAyNDQsIAotICAgIDUyLCAyNDQsIDE4MSwgMTY4LCAxMzUsIDIyNSwgMTI1LCAyMjEsIDI0OSwgMTY4LCAxMzUsIDIzMCwgMTY3LCAxODYsIDE2OCwgCi0gICAgMTM1LCAyMTAsIDI0NSwgMjExLCA3OSwgMTY4LCAxMzUsIDIyMiwgMjE0LCAyMjIsIDE0MSwgMTY4LCAxMzUsIDIyMiwgMTQyLCAKLSAgICAxNjgsIDEzNSwgMjMyLCAxNjMsIDIzMiwgMjEyLCAxNjgsIDEzNSwgMjMyLCAxMDMsIDE2OCwgMTM1LCAyMTEsIDIyOCwgCi0gICAgMjEyLCA2MSwgMTY4LCAxMzUsIDIxOSwgNjEsIDIyMiwgOCwgMTY4LCAxMzUsIDIxOSwgNjEsIDIyMiwgMTE2LCAxNjgsIAotICAgIDEzNSwgMjE5LCA2MSwgMjE4LCA4MywgMTY4LCAxMzUsIDI0MSwgNzYsIDI0MSwgMTY2LCAxNjgsIDEzNSwgMjMyLCAxNjMsIAotICAgIDI1MCwgNzYsIDE2OCwgMTM1LCAxNDQsIDI1NCwgMTIzLCAxNjgsIDEzNSwgMjQxLCA3NiwgMjI4LCA3NSwgMTY4LCAxMzUsIAotICAgIDIyNiwgNzIsIDE2OCwgMTM1LCAyMjEsIDIzMiwgNjEsIDE2OCwgMTM1LCAyMzEsIDIwOSwgMjQyLCAyNCwgMTY4LCAxMzUsIAotICAgIDIyMSwgMjMyLCAyNTUsIDgyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDI1NCwgMTQ0LCAxNjgsIDEzNSwgMjIxLCAyMzIsIDc0LCAKLSAgICAxNjgsIDEzNSwgMjIxLCAyMzIsIDIzNiwgNDAsIDE2OCwgMTM1LCAyMjEsIDIzMiwgMjE0LCAyMTQsIDE2OCwgMTM1LCAyMjEsIAotICAgIDIzMiwgMjE0LCAyMTIsIDE2OCwgMTM1LCAyMjEsIDIzMiwgNjksIDE2OCwgMTM1LCAyMjEsIDIzMiwgMjE0LCAxMTgsIDE2OCwgCi0gICAgMTM1LCAyMjUsIDEyNywgMTY4LCAyNDksIDEwNiwgMTYsIDI1MiwgMTczLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDc2LCAxNjgsIAotICAgIDEzNSwgMjIxLCAyMzIsIDI1NCwgMjUyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDc4LCAxNjgsIDEzNSwgMjIxLCAyMzIsIDI1NCwgCi0gICAgMjExLCAyMzEsIDIwMywgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIDIxMSwgMjMxLCAyMDQsIDE2OCwgMTM1LCAyMzMsIAotICAgIDExMiwgMTY4LCAxMzUsIDIzMSwgMjAwLCAxNjgsIDEzNSwgMjMxLCAyMDEsIDE2OCwgMTM1LCAyMzEsIDIwOSwgMjQ1LCAKLSAgICAxODgsIDE2OCwgMTM1LCAyMzEsIDIwOSwgMjE2LCAxNTcsIDE2OCwgMTM1LCAyMzEsIDIwOSwgMjE1LCAyMjksIDE2OCwgCi0gICAgMTM1LCAyMzEsIDIwOSwgMjUwLCAxNDMsIDE2OCwgMTM1LCAyMTYsIDE5OSwgMTY4LCAxMzUsIDIyOCwgMjEwLCAxNjgsIAotICAgIDEzNSwgMjExLCA3MywgMTY4LCAxMzUsIDI0NCwgNDMsIDE2OCwgMjEsIDIxMCwgODYsIDE2OCwgMjEsIDExMSwgMTY4LCAyMSwgCi0gICAgMTA1LCAxNjgsIDIxLCAxNTgsIDE2OCwgMjEsIDE2MSwgMTY4LCAyMSwgMTkwLCAxNjgsIDIxLCAxOTUsIDE2OCwgMjEsIAotICAgIDE5OSwgMTY4LCAyMSwgMTk2LCAxNjgsIDIxLCAyMDEsIDE2OCwgMTM1LCAyNTQsIDExOSwgMTY4LCAxMzUsIDIzNCwgMTEwLCAKLSAgICAyMDksIDIwOSwgMSwgMjM0LCAzNCwgMjA5LCAyMDksIDEsIDIzNCwgMTEyLCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjM0LCAKLSAgICAxMTIsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyMjksIDksIDIwOSwgMjA5LCAxLCAyNDksIDI0NiwgMjA5LCAyMDksIDEsIAotICAgIDIxOSwgNjEsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyMjcsIDEzOCwgMjA5LCAyMDksIDEsIDI0NywgMTUzLCAyMDksIDIwOSwgCi0gICAgMSwgMTEyLCAyMDksIDIwOSwgMSwgMjE2LCAxNTgsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyMTYsIDE1OCwgMjE3LCA2MywgCi0gICAgMjA5LCAyMDksIDEsIDIyOCwgNzksIDIwOSwgMjA5LCAxLCAyNTEsIDIxMywgMjA5LCAyMDksIDEsIDIyNSwgMTksIDIwOSwgCi0gICAgMjA5LCAxLCAyMjUsIDEyNSwgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDI0NCwgNTIsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAKLSAgICAyMjUsIDEyNSwgMjE3LCA2MywgMjA5LCAyMDksIDEsIDI0NCwgNTIsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyMzAsIDE2NiwgCi0gICAgMjA5LCAyMDksIDEsIDIxMCwgMjQ0LCAyMDksIDIwOSwgMSwgMjMyLCAxNjMsIDIzMiwgMjEyLCAyMDksIDIwOSwgMSwgMjMyLCAKLSAgICAxNjMsIDIzMiwgMTI3LCAyMDksIDIwOSwgMSwgMjExLCAyMjcsIDIwOSwgMjA5LCAxLCAyMTksIDYxLCAyMTgsIDM2LCAyMDksIAotICAgIDIwOSwgMSwgMjQxLCA3NiwgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDc4LCAyMDksIDIwOSwgMSwgMjQxLCA3NiwgMjE3LCA2MywgCi0gICAgMjA5LCAyMDksIDI0NSwgMTcxLCAyMDksIDIwOSwgMjUsIDUsIDYxLCAyMDksIDIwOSwgMjUsIDUsIDIzMSwgMjA5LCAyMzQsIAotICAgIDI0MCwgMjA5LCAyMDksIDI1LCA1LCAyNTUsIDgyLCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMTQ0LCAyMDksIDIwOSwgMjUsIAotICAgIDUsIDc0LCAyMDksIDIwOSwgMjUsIDUsIDIzNiwgNDAsIDIwOSwgMjA5LCAyNSwgNSwgMjExLCAxMTcsIDIwOSwgMjA5LCAyNSwgCi0gICAgNSwgMjEwLCAxNjksIDIwOSwgMjA5LCAyNSwgNSwgNjksIDIwOSwgMjA5LCAyNSwgNSwgMjE0LCAxMTgsIDIwOSwgMjA5LCAKLSAgICAyNSwgNSwgMjMxLCAyMDksIDIzNCwgMTksIDIwOSwgMjA5LCAyMjAsIDE0NywgNSwgMjMyLCAxNjIsIDIwOSwgMjA5LCAyMjAsIAotICAgIDE0NywgNSwgMjI3LCAxMzgsIDIwOSwgMjA5LCAyNSwgNSwgNzYsIDIwOSwgMjA5LCAyNSwgNSwgMjQ1LCAyMDMsIDIwOSwgCi0gICAgMjA5LCAyNSwgNSwgNzgsIDIwOSwgMjA5LCAyNSwgNSwgMjUzLCAxNzUsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAyMTAsIAotICAgIDIwOSwgMjA5LCAyMzQsIDM1LCAyMzMsIDE0MSwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDksIDI0NSwgMTg4LCAyMDksIDIwOSwgCi0gICAgMTM4LCAyMzEsIDIwOSwgMjE2LCAxNTcsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA5LCAyMTYsIDExOCwgMjA5LCAyMDksIAotICAgIDEzOCwgMjMxLCAyMDksIDI1MCwgMjMxLCAyMDksIDIwOSwgMjUxLCAxMiwgNzksIDIwOSwgMjA5LCAyMjgsIDIxOSwgMjA5LCAKLSAgICAyMDksIDIxLCAyMTAsIDg2LCAyMDksIDIwOSwgMjEsIDExMSwgMjA5LCAyMDksIDIxLCAxMDUsIDIwOSwgMjA5LCAyMSwgCi0gICAgMTU4LCAyMDksIDIwOSwgMjEsIDE2MSwgMjA5LCAyMDksIDIxLCAxOTAsIDIwOSwgMjA5LCAyMSwgMTk1LCAyMDksIDIwOSwgCi0gICAgMjEsIDE5OSwgMjA5LCAyMDksIDIxLCAxOTYsIDIwOSwgMjA5LCAyMSwgMjAxLCAyMDksIDIwOSwgMjQxLCA3NiwgMjI4LCAKLSAgICA3OSwgMjA5LCAyMDksIDI0MSwgNzYsIDIzMCwgMTY2LCAyMDksIDIwOSwgMSwgMjM0LCAxMTMsIDI0MiwgMTgxLCAyMDksIAotICAgIDIwOSwgMSwgMjM0LCAxMTMsIDIyNywgMTM4LCA2MywgMywgMjI2LCAyMDgsIDYzLCAxNjQsIDI0MiwgMTIyLCAyMTEsIDAsIAotICAgIDIzMCwgMjUzLCAyMTUsIDE5MCwgNjEsIDYzLCAxNjQsIDI0MiwgMTIyLCAyMTEsIDAsIDIzMCwgMjUzLCAyNTUsIDE2OCwgCi0gICAgMjIyLCAyMTgsIDI1MiwgODUsIDE4NiwgNjMsIDE2NCwgMjQyLCAxMjIsIDIxMSwgMCwgMjMwLCAyNTMsIDI1NSwgMTY4LCAKLSAgICAyNDIsIDEyMiwgMjE1LCAxNzQsIDE4NiwgNjMsIDE2NCwgNjUsIDIxMSwgMCwgMjMwLCAyNTMsIDIzMSwgOTgsIDE4NiwgNjMsIAotICAgIDE2NCwgMjUwLCA0LCAyMTEsIDAsIDIzMCwgMjUzLCAyMjAsIDExMSwgMTg2LCA2MywgMTY0LCAyNTAsIDI0NywgMjExLCAwLCAKLSAgICAyMzAsIDI1MywgMjI1LCAxMTUsIDIyMCwgOTgsIDE4NiwgNjMsIDE2NCwgMjExLCAwLCAyMzAsIDI1MywgMjE1LCAxNzQsIAotICAgIDIyMCwgOTgsIDE4NiwgNjMsIDE2NCwgMjIxLCAyMTAsIDIyMCwgOTcsIDYzLCAxNjQsIDI1MSwgMTM2LCAyMTEsIDAsIDIzMCwgCi0gICAgMjUyLCA2MywgMTY0LCAyNTEsIDIzMSwgMjIwLCA1LCAyMTEsIDAsIDIzMCwgMjUyLCA2MywgMTY0LCAyMzUsIDIwNCwgMjE1LCAKLSAgICAxNzMsIDYzLCAxNjQsIDI0OCwgNjksIDIxNSwgMTc0LCAyNTEsIDEzNSwgNjMsIDE2NCwgMjIwLCA5NywgNjMsIDE2NCwgCi0gICAgMjI3LCAxNDMsIDIyMCwgOTcsIDYzLCAxNjQsIDIxNSwgMTc0LCAyMjAsIDk3LCA2MywgMTY0LCAyMjcsIDE0MywgMjE1LCAKLSAgICAxNzQsIDIyMCwgOTcsIDYzLCAxNjQsIDIyMiwgMjM5LCAyNTAsIDEzMCwgMjE4LCAyMzgsIDIyMCwgOTcsIDYzLCAxNjQsIAotICAgIDIyMywgNDUsIDI0MiwgMTUzLCAyMjAsIDk3LCA2MywgMTY0LCAyNTAsIDI0NywgMjU1LCAxNzIsIDIyMiwgMTQ2LCAyMzEsIAotICAgIDk3LCAyMDAsIDI1MSwgMTUsIDYzLCAxNjQsIDI0MiwgMTIyLCAyMTUsIDE3MywgNjMsIDIzMiwgMTUwLCA1LCAyNTAsIDE2MywgCi0gICAgMjIyLCAxNDUsIDYzLCAyMzIsIDE1MCwgNSwgMjMzLCAyLCAyMjIsIDE0NSwgNjMsIDI1MywgMjIwLCA1LCAyMjAsIDEwNywgCi0gICAgMjQzLCA3MiwgMjU1LCAxNzMsIDIyMiwgMTQ1LCA2MywgMjUzLCAyMjAsIDUsIDI1NSwgMTcwLCAxOTEsIDYzLCAyNTMsIAotICAgIDIyMCwgNSwgMjIxLCAxODQsIDIxNSwgMTY5LCA2MywgNSwgMjIzLCAxMzMsIDI0NywgMTY3LCAyNDMsIDcxLCA2MywgNSwgCi0gICAgMjIzLCAxMzMsIDI0NywgMTY3LCAyNDIsIDE4MywgNjMsIDUsIDIyMywgMTMzLCAyNDcsIDE2NywgMjQyLCAxMjMsIDYzLCA1LCAKLSAgICAyMjMsIDEzMywgMjI5LCAyMjQsIDI0MywgNzEsIDYzLCA1LCAyMjMsIDEzMywgMjI5LCAyMjQsIDI0MiwgMTgzLCA2MywgNSwgCi0gICAgMjIzLCAxMzMsIDI0NywgMTY3LCAyMjMsIDEzMywgMjI5LCAyMjMsIDYzLCAyMSwgMjEwLCA4NiwgNjMsIDIxLCAxMTEsIDYzLCAKLSAgICAyMSwgMTA1LCA2MywgMjEsIDE1OCwgNjMsIDIxLCAxNjEsIDYzLCAyMSwgMTkwLCA2MywgMjEsIDE5NSwgNjMsIDIxLCAxOTksIAotICAgIDYzLCAyMSwgMTk2LCA2MywgMjEsIDIwMSwgNjMsIDIxLCAxNjMsIDExMSwgNjMsIDIxLCAxNjMsIDEwNSwgNjMsIDIxLCAKLSAgICAxNjMsIDE1OCwgNjMsIDIxLCAxNjMsIDE2MSwgNjMsIDIxLCAxNjMsIDE5MCwgNjMsIDIxLCAxNjMsIDE5NSwgNjMsIDIxLCAKLSAgICAxNjMsIDE5OSwgNjMsIDIxLCAxNjMsIDE5NiwgNjMsIDIxLCAxNjMsIDIwMSwgNjMsIDIxLCAxNjMsIDIxMCwgODYsIDYzLCAKLSAgICAxNjQsIDI1MSwgMTM4LCAyMjIsIDE0NSwgNjMsIDE2NCwgMjI5LCA3MywgMjUxLCA3NiwgMjI3LCAxNTMsIDIxMCwgMjUsIAotICAgIDYzLCAxNjQsIDI1MCwgMjQ3LCAyNTUsIDE3MiwgMjIyLCAxNDYsIDI1MSwgNzcsIDIzMCwgMjA3LCAyNTEsIDE1LCA2MywgCi0gICAgMTY0LCAyMjksIDczLCAyNTEsIDc2LCAyMjAsIDEwOCwgMjIyLCAxNDUsIDYzLCAxNjQsIDI1MCwgMTQwLCAyMzAsIDI1MiwgCi0gICAgNjMsIDE2NCwgMjE1LCAxODUsIDI1NSwgMTY5LCA2MywgMTY0LCAyNDIsIDEwNywgMjIyLCAxNDYsIDI0MiwgNzAsIDYzLCAKLSAgICAxNjQsIDI0MiwgMTA3LCAyMjIsIDE0NiwgMjQyLCA3NiwgNjMsIDE2NCwgMjU0LCAxMjQsIDIzNCwgMTI5LCAyNDIsIDcwLCAKLSAgICA2MywgMTY0LCAyNTQsIDEyNCwgMjM0LCAxMjksIDI0MiwgNzYsIDYzLCA1LCAyMTEsIDY1LCAyMTUsIDE3MiwgNjMsIDUsIAotICAgIDIzMSwgMTcyLCAyMTUsIDE3MiwgNjMsIDEsIDE3NiwgNjMsIDEsIDIzNCwgMTM4LCA2MywgMSwgMjQzLCAxNDIsIDYzLCAxLCAKLSAgICAyNDMsIDAsIDYzLCAxLCAyMjksIDgyLCA2MywgMSwgMjUxLCA0MSwgNjMsIDEsIDI1MCwgMTY1LCA2MywgMSwgMjM1LCAxNDcsIAotICAgIDYzLCAxLCAyMjcsIDE2OSwgNjMsIDEsIDIxNSwgMTU3LCA2MywgMSwgMjE1LCAxNDUsIDYzLCAxLCAyNDgsIDE0MywgNjMsIAotICAgIDEsIDI0OCwgMTI3LCA2MywgMSwgMjI4LCAxMTUsIDYzLCAxLCAyMTcsIDEwNiwgNjMsIDEsIDIxNiwgMjA5LCA2MywgMSwgCi0gICAgMjQ4LCAyMjksIDYzLCAxLCAyNDgsIDMzLCA2MywgMSwgMTk4LCA2MywgMSwgMTkxLCA2MywgMSwgMjI1LCAxNTAsIDYzLCAxLCAKLSAgICAyNTIsIDE5OSwgNjMsIDEsIDI1MiwgMjYsIDYzLCAxLCAxODYsIDYzLCAxLCAyMTUsIDE4NCwgNjMsIDEsIDIxNSwgMTc2LCAKLSAgICA2MywgMSwgMjQ2LCA0NiwgNjMsIDEsIDI0NiwgNDEsIDYzLCAxLCAyMTIsIDY1LCA2MywgMSwgMjEwLCA4MiwgNjMsIDEsIAotICAgIDIxMCwgMTE2LCA2MywgMSwgMjU1LCAxNzUsIDYzLCAxLCAxOTIsIDYzLCAxLCAyMDUsIDYzLCAxLCAyMzMsIDE0MSwgNjMsIAotICAgIDEsIDIyMCwgMTA0LCA2MywgMSwgMjE4LCAyMjUsIDYzLCAxLCAyMDYsIDYzLCAxLCAxNjIsIDYzLCAxLCA2MSwgNjMsIDEsIAotICAgIDIzMywgMjM3LCA2MywgMSwgMjQ0LCA4NSwgMjA1LCA2MywgMSwgMjM0LCA1MiwgNjMsIDEsIDIyMiwgMTgxLCA2MywgMjUsIAotICAgIDUsIDI1NSwgODIsIDYzLCAyNSwgNSwgNzQsIDYzLCAyNSwgNSwgMjM2LCA0MCwgNjMsIDI1LCA1LCA2OSwgNjMsIDI1LCA1LCAKLSAgICAyMTQsIDExOCwgNjMsIDI1LCA1LCAxNDksIDE1MywgNjMsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCA2MywgMjUsIDUsIDE0OSwgCi0gICAgMTU2LCA2MywgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDYzLCAyNSwgNSwgNzYsIDYzLCAyNSwgNSwgMjQ1LCAyMTcsIDYzLCAKLSAgICAyNSwgNSwgNzgsIDYzLCAyNSwgNSwgMjI2LCAxODcsIDYzLCA1LCAyMjIsIDIyNCwgMjE4LCA4NSwgMjI5LCA4MywgMjIyLCAKLSAgICAyMTMsIDYzLCA1LCAyMjIsIDIxOCwgMjUyLCA4NCwgNjMsIDI1LCA1LCAyMjMsIDUyLCA3NCwgNjMsIDI1LCA1LCAyMjMsIAotICAgIDUyLCAyMzYsIDQwLCA2MywgNSwgMjI3LCAxNTMsIDIxMCwgMjYsIDIyOSwgMjMxLCAyNDgsIDIyOSwgNjMsIDUsIDIxOSwgCi0gICAgNzMsIDIzMywgNjYsIDYzLCAxNjQsIDI0MiwgMzYsIDYzLCAxNjQsIDIyNiwgNjEsIDYzLCA1LCAyMzMsIDY5LCAyMjIsIAotICAgIDE0NSwgNjMsIDUsIDIxMSwgNzAsIDIyMiwgMTQ1LCA2MywgNSwgMjMzLCA3MCwgMjE1LCAxODUsIDI1MSwgMTUsIDYzLCA1LCAKLSAgICAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDUsIDI0MiwgMTI2LCAyNTEsIDE2LCAyMjMsIDQzLCA2MywgNSwgMjQyLCAxMjYsIAotICAgIDIzMSwgOTAsIDIyMywgNDMsIDYzLCA1LCAyMzUsIDIwMCwgMjMxLCAxMDAsIDI1MSwgMTUsIDYzLCAyMTgsIDc0LCA1LCAKLSAgICAyMzMsIDcwLCAyMTUsIDE4NSwgMjUxLCAxNSwgNjMsIDIxOCwgNzQsIDUsIDIzMSwgMTAwLCAyNTEsIDE1LCA2MywgMjE4LCAKLSAgICA3NCwgNSwgMjM1LCAyMDAsIDIzMSwgMTAwLCAyNTEsIDE1LCA2MywgMjE4LCA3NCwgMSwgMTc2LCA2MywgMjE4LCA3NCwgMSwgCi0gICAgMjM0LCAxMzgsIDYzLCAyMTgsIDc0LCAxLCAyNDMsIDE0MiwgNjMsIDIxOCwgNzQsIDEsIDI0MywgMCwgNjMsIDIxOCwgNzQsIAotICAgIDEsIDIyOSwgODIsIDYzLCAyMTgsIDc0LCAxLCAyNTEsIDQxLCA2MywgMjE4LCA3NCwgMSwgMjUwLCAxNjUsIDYzLCAyMTgsIAotICAgIDc0LCAxLCAyMzUsIDE0NywgNjMsIDIxOCwgNzQsIDEsIDIyNywgMTY5LCA2MywgMjE4LCA3NCwgMSwgMjE1LCAxNTcsIDYzLCAKLSAgICAyMTgsIDc0LCAxLCAyMTUsIDE0NSwgNjMsIDIxOCwgNzQsIDEsIDI0OCwgMTQzLCA2MywgMjE4LCA3NCwgMSwgMjQ4LCAxMjcsIAotICAgIDYzLCAyMTgsIDc0LCAxLCAyMjgsIDExNSwgNjMsIDIxOCwgNzQsIDEsIDIxNywgMTA2LCA2MywgMjE4LCA3NCwgMSwgMjE2LCAKLSAgICAyMDksIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDIyOSwgNjMsIDIxOCwgNzQsIDEsIDI0OCwgMzMsIDYzLCAyMTgsIDc0LCAxLCAKLSAgICAxOTgsIDYzLCAyMTgsIDc0LCAxLCAxOTEsIDYzLCAyMTgsIDc0LCAxLCAyMjUsIDE1MCwgNjMsIDIxOCwgNzQsIDEsIDI1MiwgCi0gICAgMTk5LCA2MywgMjE4LCA3NCwgMSwgMjUyLCAyNiwgNjMsIDIxOCwgNzQsIDEsIDE4NiwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgCi0gICAgMTg0LCA2MywgMjE4LCA3NCwgMSwgMjE1LCAxNzYsIDYzLCAyMTgsIDc0LCAxLCAyNDYsIDQ2LCA2MywgMjE4LCA3NCwgMSwgCi0gICAgMjQ2LCA0MSwgNjMsIDIxOCwgNzQsIDEsIDIxMiwgNjUsIDYzLCAyMTgsIDc0LCAxLCAyMTAsIDgyLCA2MywgMjE4LCA3NCwgCi0gICAgMSwgMjEwLCAxMTYsIDYzLCAyMTgsIDc0LCAxLCAyNTUsIDE3NSwgNjMsIDIxOCwgNzQsIDEsIDE5MiwgNjMsIDIxOCwgNzQsIAotICAgIDEsIDIwNSwgNjMsIDIxOCwgNzQsIDEsIDIzMywgMTQxLCA2MywgMjE4LCA3NCwgMSwgMjIwLCAxMDQsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMTgsIDIyNSwgNjMsIDIxOCwgNzQsIDEsIDIwNiwgNjMsIDIxOCwgNzQsIDEsIDE2MiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDYxLCA2MywgMjE4LCA3NCwgMSwgMjMzLCAyMzcsIDYzLCAyMTgsIDc0LCAxLCAyNDQsIDg1LCAyMTIsIDY1LCA2MywgMjE4LCAKLSAgICA3NCwgMSwgMjQ0LCA4NSwgMTkyLCA2MywgMjE4LCA3NCwgMSwgMjQ0LCA4NSwgMjA1LCA2MywgMjMzLCAyMjQsIDIyMiwgCi0gICAgMTQzLCAyMzQsIDEzOCwgNjMsIDIzMywgMjI0LCAyMjIsIDE0MywgMjM0LCAxMzksIDI1MSwgNzcsIDIzMCwgMjA3LCAyNTEsIAotICAgIDE1LCA2MywgMjUxLCA0LCA1LCAxMTQsIDI1MiwgNzgsIDYzLCAyNTEsIDQsIDUsIDE5MywgMjUyLCA3OCwgNjMsIDI1MSwgNCwgCi0gICAgNSwgMjUxLCA1LCAyMTcsIDIxLCA2MywgMjUxLCA0LCA1LCAyMjEsIDIwOSwgMjU1LCAxNzQsIDYzLCAxNiwgMjQ2LCA5OSwgCi0gICAgMjUxLCAxMzMsIDYzLCAxNiwgMjIzLCAxMzIsIDIyMiwgMjI1LCA2MywgMTYsIDIyNiwgODEsIDI0MywgNzAsIDYzLCAxNiwgCi0gICAgMjIzLCAxMzIsIDIyMiwgMjI2LCAyMjMsIDQ1LCAyNDIsIDE1MiwgNjMsIDE2LCAyMjUsIDExNSwgMTkxLCA2MywgMTYsIAotICAgIDIyOCwgNjQsIDI1MSwgMTMzLCA2MywgMTYsIDIyOCwgNjQsIDI1MSwgMTM0LCAyMjcsIDE0MywgMjU1LCAxNzEsIDYzLCAxNiwgCi0gICAgMjI4LCA2NCwgMjUxLCAxMzQsIDI0MiwgMTI0LCAyNTUsIDE3MSwgNjMsIDE2LCAyMjgsIDY0LCAyNTEsIDEzNCwgMjUxLCAKLSAgICA3NywgMjU1LCAxNzEsIDYzLCA1LCAyMjMsIDEzMywgMjI5LCAyMjQsIDIyMywgMTMzLCAyNDcsIDE2NiwgNjMsIDUsIDIyMywgCi0gICAgMTMzLCAyMjksIDIyNCwgMjQyLCAxMjMsIDYzLCAxNjQsIDI1MSwgMTM3LCAyMjAsIDUsIDI0MiwgMjIyLCAyMzAsIDI1MywgCi0gICAgMjIzLCA0NCwgNjMsIDE2NCwgMjMwLCAxNjgsIDIxMSwgMCwgMjQyLCAyMjIsIDIzMCwgMjUzLCAyMjMsIDQ0LCA2MywgMTY0LCAKLSAgICAyMjcsIDE0MywgMjE1LCAxNzMsIDYzLCAxNjQsIDY1LCAyNTEsIDE2MCwgMjIyLCAyMTUsIDIxMSwgMCwgMjMwLCAyNTMsIAotICAgIDIzMSwgOTgsIDE4NiwgNjMsIDE2NCwgMjUwLCA0LCAyNTEsIDE2MCwgMjIyLCAyMTUsIDIxMSwgMCwgMjMwLCAyNTMsIDIyMCwgCi0gICAgMTExLCAxODYsIDIyMiwgMjUzLCAyMTgsIDAsIDUwLCAyMzMsIDUxLCAyMTgsIDAsIDUwLCAyMjIsIDI1MywgMjE4LCAwLCA1LCAKLSAgICAyLCAyNDcsIDEyNiwgMjMzLCA1MSwgMjE4LCAwLCA1LCAyLCAyNDcsIDEyNiwgNjMsIDE2NCwgMjMzLCA2MSwgMjMxLCAxMDEsIAotICAgIDIyMiwgMTQ1LCA2MywgMTY0LCAyMTUsIDI1MSwgMjMxLCAxMDEsIDIyMiwgMTQ1LCA2OCwgMSwgMTc2LCA2OCwgMSwgMjM0LCAKLSAgICAxMzgsIDY4LCAxLCAyNDMsIDE0MiwgNjgsIDEsIDI0MywgMCwgNjgsIDEsIDIyOSwgODIsIDY4LCAxLCAyNTEsIDQxLCA2OCwgCi0gICAgMSwgMjUwLCAxNjUsIDY4LCAxLCAyMzUsIDE0NywgNjgsIDEsIDIzNSwgMTIwLCA2OCwgMSwgMjI3LCAxNjksIDY4LCAxLCAKLSAgICAyMjgsIDgxLCA2OCwgMSwgMjE1LCAxNTcsIDY4LCAxLCAyMTUsIDE0NSwgNjgsIDEsIDI0OCwgMTQzLCA2OCwgMSwgMjQ4LCAKLSAgICAxMjcsIDY4LCAxLCAyMjgsIDExNSwgNjgsIDEsIDIxNywgMTA2LCA2OCwgMSwgMjE2LCAyMDksIDY4LCAxLCAyNDgsIDIyOSwgCi0gICAgNjgsIDEsIDI0OCwgMzMsIDY4LCAxLCAxOTgsIDY4LCAxLCAxOTEsIDY4LCAxLCAyMjUsIDE1MCwgNjgsIDEsIDI1MiwgMTk5LCAKLSAgICA2OCwgMSwgMjUyLCAyNiwgNjgsIDEsIDE4NiwgNjgsIDEsIDE5MiwgNjgsIDEsIDIwNSwgNjgsIDEsIDIzMywgMTQxLCA2OCwgCi0gICAgMSwgMjEyLCA2NSwgNjgsIDEsIDIwNiwgNjgsIDEsIDE2MiwgNjgsIDEsIDIzMiwgMTkwLCA2OCwgMSwgNjEsIDY4LCAxLCAKLSAgICAyMjAsIDg4LCA2MSwgNjgsIDEsIDc0LCA2OCwgMSwgMjM2LCA0MCwgNjgsIDEsIDY5LCA2OCwgMSwgMjE0LCAxMTgsIDY4LCAKLSAgICAxLCA3NiwgNjgsIDEsIDIzMCwgMTU2LCA3NiwgNjgsIDEsIDc4LCA2OCwgMSwgMjUzLCAyMDAsIDY4LCAyNSwgNSwgMjE3LCAKLSAgICA2NSwgMjU1LCA4MiwgNjgsIDI1LCA1LCAyNTUsIDgyLCA2OCwgMjUsIDUsIDc0LCA2OCwgMjUsIDUsIDIzNiwgNDAsIDY4LCAKLSAgICAyNSwgNSwgNjksIDY4LCAyNSwgNSwgMjE0LCAxMTgsIDY4LCAyNSwgNSwgNzYsIDY4LCAyNSwgNSwgMjU0LCAyMTAsIDY4LCAKLSAgICAyNSwgNSwgMjMwLCAxNTYsIDIzNiwgNDAsIDY4LCAyNSwgNSwgMjMwLCAxNTYsIDc4LCA2OCwgMjUsIDUsIDE2MCwgNDgsIAotICAgIDY4LCA1LCAyNTQsIDgzLCA2OCwgNSwgNTksIDUxLCA2OCwgNSwgMjEzLCAxNDcsIDY4LCA1LCAyMTMsIDE1MiwgNjgsIDUsIAotICAgIDI1MywgMjQzLCA2OCwgMTE3LCA1LCAxNDcsIDE5MiwgNjgsIDExNywgNSwgMTQ3LCAyMDUsIDY4LCAxMTcsIDUsIDE0NywgCi0gICAgMjEyLCA2NSwgNjgsIDExNywgNSwgMTQ3LCAxNjIsIDY4LCAxLCAyNDIsIDEzOSwgMjA2LCA2OCwgMjEsIDIxMCwgODYsIDY4LCAKLSAgICAyMSwgMTExLCA2OCwgMjEsIDEwNSwgNjgsIDIxLCAxNTgsIDY4LCAyMSwgMTYxLCA2OCwgMjEsIDE5MCwgNjgsIDIxLCAxOTUsIAotICAgIDY4LCAyMSwgMTk5LCA2OCwgMjEsIDE5NiwgNjgsIDIxLCAyMDEsIDY4LCA1LCAyMzIsIDE5OCwgMjIxLCAxNzQsIDY4LCA1LCAKLSAgICAyMjEsIDE3NCwgNjgsIDE2LCAyMzIsIDE1OSwgNjgsIDE2LCAyNDksIDIyMSwgNjgsIDE2LCAyNTQsIDIyOSwgNjgsIDE2LCAKLSAgICAyNDMsIDU1LCA2OCwgMSwgMjIwLCAxMDQsIDY4LCAxLCAyMTgsIDIyNSwgNjgsIDEsIDE0OSwgMTUzLCA2OCwgMSwgMTQ5LCAKLSAgICAyMjIsIDE4MiwgNjgsIDEsIDE0OSwgMTU2LCA2OCwgMSwgMTQ5LCAyMzIsIDE5MSwgNjgsIDI1LCA1LCAxNDksIDE1MywgNjgsIAotICAgIDI1LCA1LCAxNDksIDIyMiwgMTgyLCA2OCwgMjUsIDUsIDE0OSwgMTU2LCA2OCwgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDY4LCAKLSAgICAxLCAyMzAsIDE1NiwgMjI5LCA4MiwgNjgsIDEsIDIzMCwgMTU2LCAyMzUsIDEyMCwgNjgsIDEsIDIzMCwgMTU2LCAyNTIsIAotICAgIDExOSwgNjgsIDEsIDIzMCwgMTU2LCAyNTIsIDExNCwgNjgsIDExNywgNSwgMjMwLCAxNTYsIDE0NywgMTk4LCA2OCwgMTE3LCAKLSAgICA1LCAyMzAsIDE1NiwgMTQ3LCAxODYsIDY4LCAxMTcsIDUsIDIzMCwgMTU2LCAxNDcsIDIzMywgMTQxLCA2OCwgMSwgMjIwLCAKLSAgICAxMTAsIDIzNCwgMjE5LCAyMjAsIDEwNCwgNjgsIDI1LCA1LCAyMjAsIDExMCwgMjM0LCAyMTksIDI0NSwgNjMsIDY4LCAxMzgsIAotICAgIDE2NCwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyNDEsIDI1NCwgNjgsIDEzOCwgMTY0LCAyMjAsIDExMCwgMjM0LCAyMTksIDIzNCwgCi0gICAgMTg5LCAyMjUsIDEyNCwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMTYsIDIwOSwgNjgsIDEsIDIxMiwgCi0gICAgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMjQsIDExNywgNjgsIDI1LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgCi0gICAgMjQ1LCA2MywgNjgsIDI1LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE0LCAyMTQsIDY4LCA1LCAyMTIsIDcsIAotICAgIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAzMCwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMTYsIDI5LCAKLSAgICA2OCwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIxNiwgMjgsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIAotICAgIDIxOSwgMjE2LCAyNywgNjgsIDUsIDIxMiwgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMTYsIDI2LCA2OCwgMSwgMjQ1LCAKLSAgICAyMjcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjI4LCAxMTUsIDY4LCAxLCAyNDUsIDIyNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAKLSAgICAyMTAsIDE3NiwgNjgsIDEsIDI0NSwgMjI3LCAyMjQsIDExMSwgMjM0LCAyMTksIDI0MiwgMjI0LCA2OCwgMjUsIDUsIDI0MywgCi0gICAgNjYsIDIzNCwgMjE5LCA3NCwgNjgsIDI1LCA1LCAyMzQsIDE5NCwgMjI2LCAyMzgsIDY4LCAyNSwgNSwgMjM0LCAxOTQsIDY5LCAKLSAgICA2OCwgMjUsIDUsIDIzNCwgMTk0LCAyNDUsIDIxNywgNjgsIDEsIDIyMCwgODgsIDE3NiwgNjgsIDEsIDIyMCwgODgsIDIzNCwgCi0gICAgMTM4LCA2OCwgMSwgMjIwLCA4OCwgMjQzLCAxNDIsIDY4LCAxLCAyMjAsIDg4LCAyNTEsIDQxLCA2OCwgMSwgMjIwLCA4OCwgCi0gICAgMjEwLCAxMTYsIDY4LCAxLCAyMjAsIDg4LCAyMjcsIDE2OSwgNjgsIDEsIDIyMCwgODgsIDI0OCwgMjI5LCA2OCwgMSwgMjIwLCAKLSAgICA4OCwgMTk4LCA2OCwgMSwgMjIwLCA4OCwgMjI1LCAxNTAsIDY4LCAxLCAyMjAsIDg4LCAyNDQsIDIwNCwgNjgsIDEsIDIyMCwgCi0gICAgODgsIDI1MiwgMTk5LCA2OCwgMSwgMjIwLCA4OCwgMjE2LCAyMDksIDY4LCAxLCAyMjAsIDg4LCAxNjIsIDY4LCAxMTcsIDUsIAotICAgIDIyMCwgODgsIDE0NywgMjEyLCA2NSwgNjgsIDI1LCA1LCAyMjAsIDg4LCAyNTUsIDgyLCA2OCwgMjUsIDUsIDIyMCwgODgsIAotICAgIDc2LCA2OCwgMjUsIDUsIDIyMCwgODgsIDE2MCwgNDgsIDY4LCAyNSwgNSwgMjIwLCA4OCwgNDAsIDIxMSwgMTE3LCA2OCwgNSwgCi0gICAgMjIwLCA4OCwgMjE2LCAyOSwgNjgsIDUsIDIyMCwgODgsIDIxNiwgMjgsIDY4LCA1LCAyMjAsIDg4LCAyMTYsIDI2LCA2OCwgCi0gICAgNSwgMjIwLCA4OCwgMjE2LCAyNSwgNjgsIDUsIDIyMCwgODgsIDI0OSwgMTYwLCAyMTYsIDI5LCA2OCwgNSwgMjIwLCA4OCwgCi0gICAgMjQ5LCAxNjAsIDIxNiwgMjgsIDY4LCA1LCAyMjAsIDg4LCAyNDksIDE2MCwgMjQ1LCAxNjEsIDIxNiwgMzEsIDY4LCAxLCAKLSAgICAyMjIsIDEzMCwgMjI2LCA2NywgMjQ0LCAyMDQsIDY4LCA1LCAyMjIsIDEzMCwgMjI2LCA2NywgMjE2LCAyNiwgNjgsIDIyMCwgCi0gICAgODgsIDIxLCAyMTAsIDg2LCA2OCwgMjIwLCA4OCwgMjEsIDExMSwgNjgsIDIyMCwgODgsIDIxLCAxMDUsIDY4LCAyMjAsIDg4LCAKLSAgICAyMSwgMTU4LCA2OCwgMjIwLCA4OCwgMjEsIDE2MSwgNjgsIDIyMCwgODgsIDIxLCAxOTAsIDY4LCAyMjAsIDg4LCAyMSwgCi0gICAgMTk1LCA2OCwgMjIwLCA4OCwgMjEsIDE5OSwgNjgsIDIyMCwgODgsIDIxLCAxOTYsIDY4LCAyMjAsIDg4LCAyMSwgMjAxLCAKLSAgICA2OCwgNSwgMjM0LCAxMzIsIDIxNiwgMzAsIDY4LCA1LCAyMzQsIDEzMiwgMjE2LCAyOCwgNjgsIDI1LCA1LCAyNTQsIDE5OSwgCi0gICAgNjEsIDY4LCAyNSwgNSwgMjU0LCAxOTksIDI1NCwgMjEwLCA2OCwgMTYsIDIyMCwgODgsIDExMSwgNjgsIDE2LCAyMjAsIDg4LCAKLSAgICAyNDUsIDM4LCA5OCwgNiwgMSwgMjU0LCAxMzEsIDk4LCA2LCAxLCAyNTIsIDE2MCwgOTgsIDYsIDEsIDI0MywgMTEzLCA5OCwgCi0gICAgNiwgMSwgMjQ3LCAxMzYsIDk4LCA2LCAxLCAyNDUsIDE1OCwgOTgsIDYsIDEsIDIxMywgMTYwLCA5OCwgNiwgMSwgMjEwLCAKLSAgICA4OSwgOTgsIDYsIDEsIDIxNywgNjEsIDk4LCA2LCAxLCAyMzYsIDYsIDk4LCA2LCAxLCAyMzQsIDI0MCwgOTgsIDYsIDEsIAotICAgIDIzMywgODcsIDk4LCA2LCAxLCAyMzEsIDE5MCwgOTgsIDYsIDEsIDIyOSwgMjAwLCA5OCwgNiwgMSwgMjI2LCAyMDAsIDk4LCAKLSAgICA2LCAxLCAyMjYsIDIxLCA5OCwgNiwgMSwgMjEwLCA3OCwgOTgsIDYsIDEsIDIyMywgMTc0LCA5OCwgNiwgMSwgMjIxLCAyNDUsIAotICAgIDk4LCA2LCAxLCAyMTcsIDUxLCA5OCwgNiwgMSwgMjE0LCAxOTAsIDk4LCA2LCAxLCAyMjUsIDE0MywgOTgsIDYsIDEsIDIzNCwgCi0gICAgMTI3LCA5OCwgNiwgMSwgMjQyLCAyNDgsIDk4LCA2LCAxLCAyMjQsIDc2LCA5OCwgNiwgMSwgMjIwLCAyMiwgOTgsIDYsIDEsIAotICAgIDI1MCwgMTA1LCA5OCwgNiwgMSwgMjUxLCAxNSwgOTgsIDYsIDEsIDIzNSwgMTA2LCA5OCwgNiwgMSwgMjUwLCA0OCwgOTgsIAotICAgIDYsIDEsIDI1MCwgMTUxLCA5OCwgNiwgMSwgMjExLCAxNjMsIDk4LCA2LCAxLCAyMzUsIDExNywgOTgsIDYsIDEsIDI0MiwgCi0gICAgNTAsIDk4LCA2LCAxLCAyNDEsIDI0NSwgOTgsIDYsIDEsIDI0MSwgMTgyLCA5OCwgNiwgMSwgMjEyLCAyMiwgOTgsIDYsIDEsIAotICAgIDI0MiwgMTEsIDk4LCA2LCAxLCAyNDEsIDcyLCA5OCwgNiwgMSwgMjEwLCAyNDYsIDk4LCA2LCAxLCAyNTQsIDI0MSwgOTgsIAotICAgIDEsIDI1NCwgMTMxLCA5OCwgMSwgMjUyLCAxNjAsIDk4LCAxLCAyNDMsIDExMywgOTgsIDEsIDI0NywgMTM2LCA5OCwgMSwgCi0gICAgMjQ1LCAxNTgsIDk4LCAxLCAyMTMsIDE2MCwgOTgsIDEsIDIxMCwgODksIDk4LCAxLCAyMTcsIDYxLCA5OCwgMSwgMjM2LCA2LCAKLSAgICA5OCwgMSwgMjM0LCAyNDAsIDk4LCAxLCAyMzMsIDg3LCA5OCwgMSwgMjMxLCAxOTAsIDk4LCAxLCAyMjksIDIwMCwgOTgsIDEsIAotICAgIDIyNiwgMjAwLCA5OCwgMSwgMjI2LCAyMSwgOTgsIDEsIDIxMCwgNzgsIDk4LCAxLCAyMjMsIDE3NCwgOTgsIDEsIDIyMSwgCi0gICAgMjQ1LCA5OCwgMSwgMjE3LCA1MSwgOTgsIDEsIDIxNCwgMTkwLCA5OCwgMSwgMjI1LCAxNDMsIDk4LCAxLCAyMzQsIDEyNywgCi0gICAgOTgsIDEsIDI0MiwgMjQ4LCA5OCwgMSwgMjI0LCA3NiwgOTgsIDEsIDIyMCwgMjIsIDk4LCAxLCAyNTAsIDEwNSwgOTgsIDEsIAotICAgIDI1MSwgMTUsIDk4LCAxLCAyMzUsIDEwNiwgOTgsIDEsIDI1MCwgNDgsIDk4LCAxLCAyNTAsIDE1MSwgOTgsIDEsIDIxMSwgCi0gICAgMTYzLCA5OCwgMSwgMjM1LCAxMTcsIDk4LCAxLCAyNDIsIDUwLCA5OCwgMSwgMjQxLCAyNDUsIDk4LCAxLCAyNDEsIDE4MiwgCi0gICAgOTgsIDEsIDIxMiwgMjIsIDk4LCAxLCAyNDIsIDExLCA5OCwgMSwgMjQxLCA3MiwgOTgsIDEsIDI0NCwgMTI5LCA5OCwgMSwgCi0gICAgMjEwLCAyNDYsIDk4LCAxLCAyNDUsIDE3MywgOTgsIDEsIDIxNSwgOTQsIDI0MywgMTEzLCA5OCwgMSwgMjU0LCAyMDUsIDk4LCAKLSAgICAyMjYsIDE5LCAyMjAsIDEzOSwgNTgsIDEsIDk4LCAyMjksIDIwMCwgOTgsIDEsIDI1NCwgMjQxLCA5OCwgMSwgMjQyLCAxMCwgCi0gICAgNTAsIDk4LCAxLCAyMzMsIDEzMywgNTAsIDI0LCAxMDAsIDIzNCwgNjQsIDI0LCAxMDAsIDIxOCwgMjE3LCAyNCwgMTAwLCAKLSAgICAyMjgsIDIzMSwgMjQsIDEwMCwgMjE2LCAxMDIsIDI0LCAxMDAsIDIxOCwgMjA2LCAyNCwgMTAwLCAyMjMsIDI5LCAyNCwgCi0gICAgMTAwLCAyMzAsIDIyMiwgMjQsIDEwMCwgMjI1LCA5OCwgMjQsIDEwMCwgMjE4LCAyMTQsIDI0LCAxMDAsIDIxOSwgMTUwLCAKLSAgICAyNCwgMTAwLCAyMTgsIDIxMSwgMjQsIDEwMCwgMjM2LCA2MywgMjQsIDEwMCwgMjUwLCA1NCwgMjQsIDEwMCwgMjE4LCAyMjEsIAotICAgIDI0LCAxMDAsIDI1MCwgMTE0LCAyNCwgMTAwLCAyMzQsIDExNiwgMjQsIDEwMCwgMjE2LCAxNzQsIDI0LCAxMDAsIDIyNSwgCi0gICAgMTM0LCAyNCwgMTAwLCAyNDEsIDE3OSwgMjQsIDEwMCwgMjI4LCAyMjcsIDI0LCAxMDAsIDIxOCwgMjE1LCAyNCwgMTAwLCAKLSAgICAyMjgsIDIyMSwgMjQsIDEwMCwgMjI4LCAyMjUsIDI0LCAxMDAsIDIxNiwgOTksIDI0LCAxMDAsIDIyMywgMTcsIDI0LCAxMDAsIAotICAgIDIxOCwgMjEzLCAyNCwgMTAwLCAyMjMsIDI3LCAyNCwgMTAwLCAyMzQsIDIyNCwgMjQsIDEwMCwgMjMwLCAyMTUsIDI0LCAKLSAgICAxMDAsIDIzNCwgMjI3LCAyNCwgMTAwLCAyMjUsIDkzLCAyNCwgMTAwLCAyMjUsIDkxLCAyNCwgMTAwLCAyMjUsIDc5LCAyNCwgCi0gICAgMTAwLCAyMjUsIDg3LCAyNCwgMTAwLCAyMjUsIDg1LCAyNCwgMTAwLCAyMjUsIDgyLCAyNCwgMTAwLCAyMjUsIDg0LCAyNCwgCi0gICAgMTAwLCAyMjUsIDgxLCAyNCwgMTAwLCAyMjUsIDg2LCAyNCwgMTAwLCAyMjUsIDk2LCAyNCwgMTAwLCAyMjUsIDk3LCAyNCwgCi0gICAgMTAwLCAyMjUsIDgwLCAyNCwgMTAwLCAyMjUsIDkwLCAyNCwgMTAwLCAyMzQsIDIyNSwgMjQsIDEwMCwgMjM0LCAyMjMsIDI0LCAKLSAgICAxMDAsIDIxOSwgMTQzLCAyNCwgMTAwLCAyMTksIDE0MSwgMjQsIDEwMCwgMjE5LCAxMzMsIDI0LCAxMDAsIDIxOSwgMTM2LCAKLSAgICAyNCwgMTAwLCAyMTksIDE0MiwgMjQsIDEwMCwgMjE5LCAxMzgsIDI0LCAxMDAsIDIxOSwgMTM3LCAyNCwgMTAwLCAyMTksIAotICAgIDEzNSwgMjQsIDEwMCwgMjE5LCAxNDYsIDI0LCAxMDAsIDIxOSwgMTQ4LCAyNCwgMTAwLCAyMTksIDE0OSwgMjQsIDEwMCwgCi0gICAgMjE5LCAxNDQsIDI0LCAxMDAsIDIxOSwgMTM0LCAyNCwgMTAwLCAyMTksIDEzOSwgMjQsIDEwMCwgMjE5LCAxNDcsIDI0LCAKLSAgICAxMDAsIDI1MCwgOTgsIDI0LCAxMDAsIDI1MCwgOTYsIDI0LCAxMDAsIDI1MCwgMTc2LCAyNCwgMTAwLCAyNTAsIDE3NCwgMjQsIAotICAgIDEwMCwgMjI2LCAzNiwgMjQsIDEwMCwgMjM2LCA1OCwgMjQsIDEwMCwgMjM2LCA0OSwgMjQsIDEwMCwgMjM2LCA1NywgMjQsIAotICAgIDEwMCwgMjM2LCA1NCwgMjQsIDEwMCwgMjM2LCA1MiwgMjQsIDEwMCwgMjM2LCA1NiwgMjQsIDEwMCwgMjE4LCAyMTgsIDI0LCAKLSAgICAxMDAsIDIzNiwgNjEsIDI0LCAxMDAsIDIzNiwgNjIsIDI0LCAxMDAsIDIzNiwgNTAsIDI0LCAxMDAsIDIzNiwgNTUsIDI0LCAKLSAgICAxMDAsIDIxMSwgMjYsIDI0LCAxMDAsIDI1MCwgNTMsIDI0LCAxMDAsIDI1MCwgOTksIDI0LCAxMDAsIDI1MCwgOTcsIDI0LCAKLSAgICAxMDAsIDI1MCwgMTc3LCAyNCwgMTAwLCAyNTAsIDE3NSwgMjQsIDEwMCwgMjUwLCAxMTIsIDI0LCAxMDAsIDI1MCwgMTEzLCAKLSAgICAyNCwgMTAwLCAyNTAsIDEwMCwgMjQsIDEwMCwgMjUwLCAxNzgsIDI0LCAxMDAsIDIyNSwgMTMyLCAyNCwgMTAwLCAyMzQsIAotICAgIDIyNiwgMjQsIDEwMCwgMjE4LCAyMTksIDI0LCAxMDAsIDIxMSwgMzIsIDI0LCAxMDAsIDIzNCwgNTUsIDI0LCAxMDAsIDIyOCwgCi0gICAgMjIzLCAyNCwgMTAwLCAyMjgsIDIyOSwgMjQsIDEwMCwgMjI4LCAyMjgsIDI0LCAxMDAsIDIxNiwgOTYsIDI0LCAxMDAsIAotICAgIDI0NCwgMTExLCAyNCwgMTQzLCAyNDQsIDExMSwgMjQsIDE0MywgNjEsIDI0LCAxNDMsIDI1NCwgMjUyLCAyNCwgMTQzLCAKLSAgICAxOTIsIDI0LCAxNDMsIDIxMSwgOTIsIDI0LCAxNDMsIDI0NSwgMTI1LCAyNCwgMTQzLCA3NiwgMjQsIDE0MywgMjExLCAzNiwgCi0gICAgMjQsIDE0MywgMjExLCA0NywgMjQsIDE0MywgNzgsIDI0LCAxNDMsIDIxMiwgNjUsIDI0LCAxNDMsIDIxMiwgNjIsIDI0LCAKLSAgICAxNDMsIDIyNiwgMjM4LCAyNCwgMTQzLCAyMTAsIDI0NCwgMjQsIDE0MywgNjksIDI0LCAxNDMsIDIxMiwgMTEsIDI0LCAxNDMsIAotICAgIDIxMiwgMjIsIDI0LCAxNDMsIDIxMSwgMjUwLCAyNCwgMTQzLCAyMTAsIDIxMiwgMjQsIDE0MywgMjQ1LCA2MywgMjQsIDE0MywgCi0gICAgMjExLCA4LCAyNCwgMTQzLCA3NCwgMjQsIDE0MywgMjU1LCAxNjYsIDI0LCAxNDMsIDI1NSwgMTY1LCAyNCwgMTQzLCAyMTEsIAotICAgIDEwNiwgMjQsIDE0MywgMjExLCAxMDQsIDI0LCAxNDMsIDI0NSwgMTIzLCAyNCwgMTQzLCAyNDUsIDEyMiwgMjQsIDE0MywgCi0gICAgMjQ1LCAxMjQsIDI0LCAxNDMsIDIxMSwgMzUsIDI0LCAxNDMsIDIxMSwgMzQsIDI0LCAxNDMsIDIyNywgODgsIDI0LCAxNDMsIAotICAgIDIyNywgODksIDI0LCAxNDMsIDIyNywgODIsIDI0LCAxNDMsIDIyNywgODcsIDI0LCAxNDMsIDIyNywgODUsIDI0LCAxNDMsIAotICAgIDIxMCwgMjM4LCAyNCwgMTQzLCAyMTAsIDIzNywgMjQsIDE0MywgMjEwLCAyMzYsIDI0LCAxNDMsIDIxMCwgMjM5LCAyNCwgCi0gICAgMTQzLCAyMTAsIDI0MCwgMjQsIDE0MywgMjE1LCAzMCwgMjQsIDE0MywgMjE1LCAyOSwgMjQsIDE0MywgMjE1LCAyNywgMjQsIAotICAgIDE0MywgMjE1LCAyNCwgMjQsIDE0MywgMjE1LCAyNSwgMjQsIDE0MywgMjEwLCAyMTEsIDI0LCAxNDMsIDIxMCwgMjA4LCAyNCwgCi0gICAgMTQzLCAyMTAsIDIwOSwgMjQsIDE0MywgMjEwLCAyMDMsIDI0LCAxNDMsIDIxMCwgMjA0LCAyNCwgMTQzLCAyMTAsIDIwNSwgCi0gICAgMjQsIDE0MywgMjEwLCAyMDcsIDI0LCAxNDMsIDI0NSwgNTcsIDI0LCAxNDMsIDI0NSwgNTksIDI0LCAxNDMsIDIxMSwgNywgCi0gICAgMjQsIDE0MywgMjQwLCAxNjAsIDI0LCAxNDMsIDI0MCwgMTUyLCAyNCwgMTQzLCAyNDAsIDE1NSwgMjQsIDE0MywgMjQwLCAKLSAgICAxNTMsIDI0LCAxNDMsIDI0MCwgMTU3LCAyNCwgMTQzLCAyNDAsIDE1OSwgMjQsIDE0MywgMjU0LCA0MiwgMjQsIDE0MywgCi0gICAgMjU0LCAzOSwgMjQsIDE0MywgMjU0LCAzNywgMjQsIDE0MywgMjU0LCAzOCwgMjQsIDE0MywgMjE4LCAyMjIsIDI0LCAxNDMsIAotICAgIDI1NSwgMTY3LCAyNCwgMTQzLCAyMTEsIDEwNSwgMjQsIDE0MywgMjExLCAzMywgMjQsIDE0MywgMjI3LCA4NCwgMjQsIDE0MywgCi0gICAgMjI3LCA4MywgMjQsIDkwLCAyMzQsIDY0LCAyNCwgOTAsIDIxOCwgMjE3LCAyNCwgOTAsIDIzNCwgNTcsIDI0LCA5MCwgMjI4LCAKLSAgICAyMzEsIDI0LCA5MCwgMjI4LCAyMjksIDI0LCA5MCwgMjI4LCAyMjgsIDI0LCA5MCwgMjE2LCAxMDIsIDI0LCA5MCwgMjIzLCAKLSAgICAyOSwgMjQsIDkwLCAyMjMsIDI0LCAyNCwgOTAsIDIyMywgMjEsIDI0LCA5MCwgMjIzLCAxNCwgMjQsIDkwLCAyMjMsIDksIAotICAgIDI0LCA5MCwgMjIzLCA0LCAyNCwgOTAsIDIyMywgMTUsIDI0LCA5MCwgMjIzLCAyNywgMjQsIDkwLCAyMzAsIDIyMiwgMjQsIAotICAgIDkwLCAyMjUsIDk4LCAyNCwgOTAsIDIyNSwgODcsIDI0LCA5MCwgMjE5LCAxNTAsIDI0LCA5MCwgMjE4LCAyMTEsIDI0LCA5MCwgCi0gICAgMjM2LCA2MywgMjQsIDkwLCAyNTAsIDU0LCAyNCwgOTAsIDI1MCwgMTE0LCAyNCwgOTAsIDIzNCwgMTE2LCAyNCwgOTAsIAotICAgIDIxNiwgMTc0LCAyNCwgOTAsIDIyNSwgMTM0LCAyNCwgOTAsIDI0MSwgMTc5LCAyNCwgOTAsIDIzNCwgNTgsIDI0LCA5MCwgCi0gICAgMjM0LCA1NiwgMjQsIDkwLCAyMjgsIDIyNywgMjQsIDkwLCAyMjgsIDIyMSwgMjQsIDkwLCAyMjgsIDIyMywgMjQsIDkwLCAKLSAgICAyMjgsIDIyNiwgMjQsIDkwLCAyMjgsIDIyMiwgMjQsIDkwLCAyMTYsIDk5LCAyNCwgOTAsIDIxNiwgOTYsIDI0LCA5MCwgCi0gICAgMjIzLCAyMiwgMjQsIDkwLCAyMjMsIDE3LCAyNCwgOTAsIDIyMywgMywgMjQsIDkwLCAyMjMsIDIsIDI0LCA5MCwgMjE4LCAKLSAgICAyMTMsIDI0LCA5MCwgMjIzLCAxOSwgMjQsIDkwLCAyMjMsIDE4LCAyNCwgOTAsIDIyMywgMTEsIDI0LCA5MCwgMjIzLCAxMywgCi0gICAgMjQsIDkwLCAyMjMsIDI2LCAyNCwgOTAsIDIyMywgNiwgMjQsIDkwLCAyMjMsIDE2LCAyNCwgOTAsIDIyMywgMjUsIDI0LCAKLSAgICA5MCwgMjIzLCAxLCAyNCwgOTAsIDIzMCwgMjE4LCAyNCwgOTAsIDIzMCwgMjEzLCAyNCwgOTAsIDIzMCwgMjE1LCAyNCwgOTAsIAotICAgIDIzMCwgMjEyLCAyNCwgOTAsIDIzMCwgMjEwLCAyNCwgOTAsIDIzMCwgMjE2LCAyNCwgOTAsIDIzMCwgMjIxLCAyNCwgOTAsIAotICAgIDIzMCwgMjE5LCAyNCwgOTAsIDIzNCwgMjI3LCAyNCwgOTAsIDIyNSwgODksIDI0LCA5MCwgMjI1LCA5MCwgMjQsIDkwLCAKLSAgICAyMjUsIDk1LCAyNCwgOTAsIDIzNCwgMjI1LCAyNCwgOTAsIDIxOSwgMTQzLCAyNCwgOTAsIDIxOSwgMTMzLCAyNCwgOTAsIAotICAgIDIxOSwgMTM2LCAyNCwgOTAsIDIxOSwgMTM4LCAyNCwgOTAsIDIyNiwgMzYsIDI0LCA5MCwgMjM2LCA1OCwgMjQsIDkwLCAKLSAgICAyMzYsIDUxLCAyNCwgOTAsIDIxOCwgMjE4LCAyNCwgOTAsIDIzNiwgNTksIDI0LCA5MCwgMjExLCAyNiwgMjQsIDkwLCAyMTEsIAotICAgIDIyLCAyNCwgOTAsIDIxMSwgMjMsIDI0LCA5MCwgMjI1LCAxMzIsIDI0LCA5MCwgMjM0LCAyMjYsIDI0LCA5MCwgMjQxLCAKLSAgICAxNzcsIDI0LCA5MCwgMjQxLCAxNzUsIDI0LCA5MCwgMjQxLCAxNzgsIDI0LCA5MCwgMjQxLCAxNzYsIDI0LCA5MCwgMjExLCAKLSAgICAzMiwgMjQsIDkwLCAyMzQsIDYwLCAyNCwgOTAsIDIzNCwgNTksIDI0LCA5MCwgMjM0LCA2MywgMjQsIDkwLCAyMzQsIDYxLCAKLSAgICAyNCwgOTAsIDIzNCwgNjIsIDI0LCA5MCwgMjE4LCAyMTUsIDI5LCAzLCAxNjIsIDI5LCAzLCAyNDAsIDIyOSwgMjksIDMsIAotICAgIDI0MSwgMTg3LCAyOSwgMywgMjQyLCA1MywgMjksIDMsIDI0MSwgMjI3LCAyOSwgMywgMjQxLCAyNDUsIDI5LCAzLCAyNDEsIAotICAgIDc1LCAyOSwgMywgMjQxLCA3NCwgMjksIDMsIDIzMywgMTQxLCAyOSwgMywgMjMyLCAxMDMsIDI5LCAzLCAyMzIsIDI0NywgCi0gICAgMjksIDMsIDIzMywgMTQwLCAyOSwgMywgMjMzLCA1NiwgMjksIDMsIDIzMywgNjQsIDI5LCAzLCAyMzIsIDE2MiwgMjksIDMsIAotICAgIDIzMiwgNzUsIDI5LCAzLCAyNDEsIDE5NiwgMjksIDMsIDI0MSwgMTkwLCAyOSwgMywgMjQxLCAxOTIsIDI5LCAzLCAyNDEsIAotICAgIDE5NSwgMjksIDMsIDI0MSwgMTkzLCAyOSwgMywgMjQxLCAxOTQsIDI5LCAzLCAyNDEsIDE5MSwgMjksIDMsIDI0MSwgMTg5LCAKLSAgICAyOSwgMywgMTg2LCAyOSwgMywgMjMwLCAxMDcsIDI5LCAzLCAyMzAsIDIzNSwgMjksIDMsIDIzMSwgMjQyLCAyOSwgMywgCi0gICAgMjMxLCA4NSwgMjksIDMsIDIzMSwgOTYsIDI5LCAzLCAyMzAsIDE2NiwgMjksIDMsIDIzMCwgNDcsIDI5LCAzLCAyMTcsIAotICAgIDE2NCwgMjksIDMsIDIxNywgMTU4LCAyOSwgMywgMjE3LCAxNjAsIDI5LCAzLCAyMTcsIDE2MywgMjksIDMsIDIxNywgMTYxLCAKLSAgICAyOSwgMywgMjE3LCAxNjIsIDI5LCAzLCAyMTcsIDE1OSwgMjksIDMsIDIxNywgMTU3LCAyOSwgMywgMjA1LCAyOSwgMywgCi0gICAgMjIyLCAxNDIsIDI5LCAzLCAyMjMsIDM4LCAyOSwgMywgMjIzLCAxODcsIDI5LCAzLCAyMjMsIDExMSwgMjksIDMsIDIyMywgCi0gICAgMTMxLCAyOSwgMywgMjIyLCAyMTMsIDI5LCAzLCAyMjIsIDExMSwgMjksIDMsIDIwNiwgMjksIDMsIDIxOCwgODQsIDI5LCAzLCAKLSAgICAyMTksIDE5MywgMjksIDMsIDIyMiwgMzMsIDI5LCAzLCAyMjEsIDE3MiwgMjksIDMsIDIyMSwgMTgzLCAyOSwgMywgMjE5LCAKLSAgICA2MCwgMjksIDMsIDIxNywgMjU0LCAyOSwgMywgMjIwLCAxMDQsIDI5LCAzLCAyMTksIDIyNywgMjksIDMsIDIyMCwgMzQsIAotICAgIDI5LCAzLCAyMjAsIDEwMCwgMjksIDMsIDIyMCwgNjMsIDI5LCAzLCAyMjAsIDY1LCAyOSwgMywgMjIwLCA5LCAyOSwgMywgCi0gICAgMjE5LCAyMTAsIDI5LCAzLCAyMjQsIDkxLCAyOSwgMywgMjI0LCAzMywgMjksIDMsIDIyNCwgNTYsIDI5LCAzLCAyMjQsIDkwLCAKLSAgICAyOSwgMywgMjI0LCA3MSwgMjksIDMsIDIyNCwgNzIsIDI5LCAzLCAyMjQsIDQ1LCAyOSwgMywgMjI0LCA0NCwgMjksIDMsIAotICAgIDIyMywgMjQ1LCAyOSwgMywgMjIzLCAyNDEsIDI5LCAzLCAyMjMsIDI0NCwgMjksIDMsIDIyMywgMjQyLCAyOSwgMywgMjIzLCAKLSAgICAyNDMsIDI5LCAzLCAyMjQsIDY4LCAyOSwgMywgMjI0LCA2MiwgMjksIDMsIDIyNCwgNjQsIDI5LCAzLCAyMjQsIDY3LCAyOSwgCi0gICAgMywgMjI0LCA2NSwgMjksIDMsIDIyNCwgNjYsIDI5LCAzLCAyMjQsIDYzLCAyOSwgMywgMjI0LCA2MSwgMjksIDMsIDIyNCwgCi0gICAgNTcsIDI5LCAzLCAyMjQsIDYwLCAyOSwgMywgMjI0LCA1OCwgMjksIDMsIDIyNCwgNTksIDI5LCAzLCAyNTIsIDE5OSwgMjksIAotICAgIDMsIDI1MSwgMTMzLCAyOSwgMywgMjUyLCAxNCwgMjksIDMsIDI1MiwgMTk3LCAyOSwgMywgMjUyLCA3NCwgMjksIDMsIDI1MiwgCi0gICAgODMsIDI5LCAzLCAyNTEsIDIxMywgMjksIDMsIDI1MSwgOTEsIDI5LCAzLCAyMTQsIDI3LCAyOSwgMywgMjEyLCAxMTYsIDI5LCAKLSAgICAzLCAyMTMsIDE3NiwgMjksIDMsIDIxNCwgMjYsIDI5LCAzLCAyMTMsIDI1MCwgMjksIDMsIDIxMywgMjU1LCAyOSwgMywgCi0gICAgMjEzLCAxMzgsIDI5LCAzLCAyMTIsIDEwNywgMjksIDMsIDIxNywgMTA2LCAyOSwgMywgMjE1LCAxMTksIDI5LCAzLCAyMTYsIAotICAgIDExOCwgMjksIDMsIDIxNywgMTAyLCAyOSwgMywgMjE3LCAxMiwgMjksIDMsIDIxNywgMjMsIDI5LCAzLCAxMTIsIDI5LCAzLCAKLSAgICAyMTUsIDgwLCAyOSwgMywgMjUxLCA0MSwgMjksIDMsIDI0OSwgMTIwLCAyOSwgMywgMjUwLCA1OSwgMjksIDMsIDI1MSwgNDAsIAotICAgIDI5LCAzLCAyNTAsIDE5MCwgMjksIDMsIDI1MCwgMTk4LCAyOSwgMywgMjQ5LCAyNDYsIDI5LCAzLCAyNDksIDg5LCAyOSwgMywgCi0gICAgMjExLCAxNjUsIDI5LCAzLCAyMTEsIDE0MSwgMjksIDMsIDIxMSwgMTU3LCAyOSwgMywgMjExLCAxNjQsIDI5LCAzLCAyMTEsIAotICAgIDE2MSwgMjksIDMsIDIxMSwgMTYyLCAyOSwgMywgMjExLCAxNDgsIDI5LCAzLCAyMTEsIDE0NywgMjksIDMsIDIxMSwgMTM2LCAKLSAgICAyOSwgMywgMjExLCAxMzIsIDI5LCAzLCAyMTEsIDEzNSwgMjksIDMsIDIxMSwgMTMzLCAyOSwgMywgMjExLCAxMzQsIDI5LCAKLSAgICAzLCAxOTgsIDI5LCAzLCAyMjcsIDI0MiwgMjksIDMsIDIyOCwgMjM4LCAyOSwgMywgMjI5LCAyMzAsIDI5LCAzLCAyMjksIAotICAgIDEwOCwgMjksIDMsIDIyOSwgMTEyLCAyOSwgMywgMjI4LCA3OSwgMjksIDMsIDIyNywgMTc4LCAyOSwgMywgMjI3LCAxNjksIAotICAgIDI5LCAzLCAyMjcsIDEzMiwgMjksIDMsIDIyNywgMTUyLCAyOSwgMywgMjI3LCAxNjgsIDI5LCAzLCAyMjcsIDE1OSwgMjksIAotICAgIDMsIDIyNywgMTYwLCAyOSwgMywgMjI3LCAxMzgsIDI5LCAzLCAyMjcsIDEyMywgMjksIDMsIDI0MiwgMTg3LCA2MSwgMjksIAotICAgIDMsIDI0MiwgMTg3LCA2OSwgMjksIDMsIDI0MiwgMTg3LCA3NCwgMjksIDMsIDI0MiwgMTg3LCAyNTUsIDgyLCAyOSwgMywgCi0gICAgMjQyLCAxODcsIDI0NSwgMjE3LCAyOSwgMywgMjQyLCAxODcsIDc2LCAyOSwgMywgMjQyLCAxODcsIDc4LCAyOSwgMywgMjQyLCAKLSAgICAxODcsIDIxMiwgNjUsIDI5LCAzLCAxNzYsIDI5LCAzLCAyMzMsIDIyMywgMjksIDMsIDIzNCwgOTgsIDI5LCAzLCAyMzUsIAotICAgIDE2LCAyOSwgMywgMjM0LCAxODcsIDI5LCAzLCAyMzQsIDE4OCwgMjksIDMsIDIzNCwgMzQsIDI5LCAzLCAyMzQsIDMzLCAyOSwgCi0gICAgMywgMjMzLCAxODgsIDI5LCAzLCAyMzMsIDE4MiwgMjksIDMsIDIzMywgMTg3LCAyOSwgMywgMjMzLCAxODMsIDI5LCAzLCAKLSAgICAyMzMsIDE4NCwgMjksIDMsIDIzMywgMTc3LCAyOSwgMywgMjMzLCAxNzEsIDI5LCAzLCAyMzMsIDE3MywgMjksIDMsIDIzMywgCi0gICAgMTc2LCAyOSwgMywgMjMzLCAxNzQsIDI5LCAzLCAyMzMsIDE3NSwgMjksIDMsIDIzMywgMTcyLCAyOSwgMywgMjMzLCAxNzAsIAotICAgIDI5LCAzLCAyMzMsIDE2NiwgMjksIDMsIDIzMywgMTY5LCAyOSwgMywgMjMzLCAxNjcsIDI5LCAzLCAyMzMsIDE2OCwgMjksIAotICAgIDMsIDIxMiwgNjUsIDI5LCAzLCAyMTEsIDE5NSwgMjksIDMsIDIxMSwgMjUwLCAyOSwgMywgMjEyLCA2NCwgMjksIDMsIDIxMiwgCi0gICAgMTcsIDI5LCAzLCAyMTIsIDIyLCAyOSwgMywgMjExLCAyMjcsIDI5LCAzLCAyMTEsIDIyNiwgMjksIDMsIDIyNSwgMTQyLCAKLSAgICA2MSwgMjksIDMsIDIyNSwgMTQyLCA2OSwgMjksIDMsIDIyNSwgMTQyLCA3NCwgMjksIDMsIDIyNSwgMTQyLCAyNTUsIDgyLCAKLSAgICAyOSwgMywgMjI1LCAxNDIsIDI0NSwgMjE3LCAyOSwgMywgMjI1LCAxNDIsIDc2LCAyOSwgMywgMjI1LCAxNDIsIDc4LCAyOSwgCi0gICAgMywgMjEwLCAxMTYsIDI5LCAzLCAyMTAsIDEzLCAyOSwgMywgMjEwLCA0NCwgMjksIDMsIDIxMCwgMTE1LCAyOSwgMywgMjEwLCAKLSAgICA5MiwgMjksIDMsIDIxMCwgOTQsIDI5LCAzLCAyMTAsIDIzLCAyOSwgMywgMjEwLCAwLCAyOSwgMywgMjEwLCA4MiwgMjksIDMsIAotICAgIDIxMCwgNjIsIDI5LCAzLCAyMTAsIDY5LCAyOSwgMywgMjEwLCA4MSwgMjksIDMsIDIxMCwgNzMsIDI5LCAzLCAyMTAsIDc0LCAKLSAgICAyOSwgMywgMjEwLCA2NywgMjksIDMsIDIxMCwgNTMsIDI5LCAzLCAxOTIsIDI5LCAzLCAyMTAsIDIxMiwgMjksIDMsIDIxMSwgCi0gICAgOCwgMjksIDMsIDIxMSwgMTAzLCAyOSwgMywgMjExLCA0NCwgMjksIDMsIDIxMSwgNDcsIDI5LCAzLCAyMTAsIDI0NCwgMjksIAotICAgIDMsIDIxMCwgMjM1LCAyOSwgMywgMjQ4LCAyMjksIDI5LCAzLCAyNDYsIDg2LCAyOSwgMywgMjQ4LCAxMSwgMjksIDMsIDI0OCwgCi0gICAgMjI4LCAyOSwgMywgMjQ4LCA4NSwgMjksIDMsIDI0OCwgOTgsIDI5LCAzLCAyNDcsIDE1MywgMjksIDMsIDI0NiwgNTUsIDI5LCAKLSAgICAzLCAyNDgsIDE0MywgMjksIDMsIDI0OCwgMTA4LCAyOSwgMywgMjQ4LCAxMjAsIDI5LCAzLCAyNDgsIDE0MiwgMjksIDMsIAotICAgIDI0OCwgMTMwLCAyOSwgMywgMjQ4LCAxMzEsIDI5LCAzLCAyNDgsIDExMywgMjksIDMsIDI0OCwgOTksIDI5LCAzLCAyMzUsIAotICAgIDE0NywgMjksIDMsIDIzNSwgNTcsIDI5LCAzLCAyMzUsIDExNCwgMjksIDMsIDIzNSwgMTQ2LCAyOSwgMywgMjM1LCAxMzAsIAotICAgIDI5LCAzLCAyMzUsIDEzMiwgMjksIDMsIDIzNSwgNzQsIDI5LCAzLCAyMzUsIDM3LCAyOSwgMywgMjQzLCAxNDIsIDI5LCAzLCAKLSAgICAyNDIsIDEyMCwgMjksIDMsIDI0MiwgMjIxLCAyOSwgMywgMjQzLCAxMzksIDI5LCAzLCAyNDMsIDYyLCAyOSwgMywgMjQzLCAKLSAgICA2OSwgMjksIDMsIDI0MiwgMTgxLCAyOSwgMywgMjQyLCAxODAsIDI5LCAzLCAyNDIsIDg1LCAyOSwgMywgMjQyLCA4MSwgMjksIAotICAgIDMsIDI0MiwgODQsIDI5LCAzLCAyNDIsIDgyLCAyOSwgMywgMjQyLCA4MywgMjksIDMsIDI0MywgMzYsIDI5LCAzLCAyNDMsIAotICAgIDE2LCAyOSwgMywgMjQzLCAyNiwgMjksIDMsIDI0MywgMzUsIDI5LCAzLCAyNDMsIDMwLCAyOSwgMywgMjQzLCAzMSwgMjksIAotICAgIDMsIDI0MywgMjAsIDI5LCAzLCAyNDMsIDUsIDI5LCAzLCAyMTYsIDIwOSwgMjksIDMsIDIxNiwgMTM3LCAyOSwgMywgMjE2LCAKLSAgICAxNzYsIDI5LCAzLCAyMTYsIDIwOCwgMjksIDMsIDIxNiwgMTk1LCAyOSwgMywgMjE2LCAxOTYsIDI5LCAzLCAyMTYsIDE1NywgCi0gICAgMjksIDMsIDIxNiwgMTI5LCAyOSwgMywgMjUwLCAxNjUsIDI5LCAzLCAyNTAsIDc3LCAyOSwgMywgMjUwLCAxMTgsIDI5LCAzLCAKLSAgICAyNTAsIDE2NCwgMjksIDMsIDI1MCwgMTM2LCAyOSwgMywgMjUwLCAxMzksIDI5LCAzLCAyNTAsIDk0LCAyOSwgMywgMjUwLCAKLSAgICA2NiwgMjksIDMsIDIyNSwgMTUwLCAyOSwgMywgMjI1LCAxMTcsIDI5LCAzLCAyMjUsIDEzNiwgMjksIDMsIDIyNSwgMTQ5LCAKLSAgICAyOSwgMywgMjI1LCAxMzgsIDI5LCAzLCAyMjUsIDEzOSwgMjksIDMsIDIyNSwgMTI0LCAyOSwgMywgMjI1LCAxMTMsIDI5LCAKLSAgICAzLCAyMTUsIDE4NCwgMjksIDMsIDIxNSwgMTY0LCAyOSwgMywgMjE1LCAxNjgsIDI5LCAzLCAyMTUsIDE4MywgMjksIDMsIAotICAgIDIxNSwgMTc4LCAyOSwgMywgMjE1LCAxNzksIDI5LCAzLCAyMTUsIDE2NywgMjksIDMsIDIxNSwgMTYyLCAyOSwgMywgMjE1LCAKLSAgICAzOSwgMjksIDMsIDIxNSwgMzEsIDI5LCAzLCAyMTUsIDM1LCAyOSwgMywgMjE1LCAzOCwgMjksIDMsIDIxNSwgMzYsIDI5LCAKLSAgICAzLCAyMTUsIDM3LCAyOSwgMywgMjE1LCAzMywgMjksIDMsIDIxNSwgMzIsIDI5LCAzLCAyNDQsIDIwNCwgMjksIDMsIDI0MywgCi0gICAgMjQxLCAyOSwgMywgMjQ0LCAxMjksIDI5LCAzLCAyNDQsIDIwMywgMjksIDMsIDI0NCwgMTU1LCAyOSwgMywgMjQ0LCAxNjIsIAotICAgIDI5LCAzLCAyNDQsIDUxLCAyOSwgMywgMjQzLCAyMjAsIDI5LCAzLCAxOTEsIDI5LCAzLCAyMjQsIDE1MywgMjksIDMsIDIyNSwgCi0gICAgMTExLCAyOSwgMywgMjI2LCA5MywgMjksIDMsIDIyNSwgMjE0LCAyOSwgMywgMjI1LCAyMjQsIDI5LCAzLCAyMjUsIDE5LCAKLSAgICAyOSwgMywgMjI0LCAxMTcsIDI5LCAzLCAyMjIsIDEwMSwgMjksIDMsIDIzMCwgMzYsIDI5LCAzLCAyNDMsIDIxNCwgMjksIAotICAgIDM4LCAyNDMsIDYwLCAyMiwgMjUsIDIzMywgMjksIDc5LCAyOSwgMzgsIDI1LCAyMzMsIDI5LCA3OSwgMjksIDM4LCAyNDMsIAotICAgIDYwLCA3OSwgMjksIDIyMSwgMTc1LCA3OSwgMjksIDIxMSwgMjA4LCAyOSwgMjQzLCAyMzYsIDIxOCwgMTMxLCAyOSwgMjQ5LCAKLSAgICAyMjcsIDI5LCAyMjAsIDE1MiwgMjksIDI0OSwgMjM0LCAyOSwgMjI0LCAyMDIsIDI0OSwgMjM0LCAyOSwgMjI0LCAxNiwgNzksIAotICAgIDI5LCAyMjYsIDE5LCAyMjAsIDEzOSwgMjksIDIxLCAxMTEsIDI5LCAyMSwgMTA1LCAyOSwgMjEsIDE1OCwgMjksIDIxLCAKLSAgICAxNjEsIDI5LCAyMSwgMTkwLCAyOSwgMjEsIDE5NSwgMjksIDIxLCAxOTksIDI5LCAyMSwgMTk2LCAyOSwgMjEsIDIwMSwgMjksIAotICAgIDU0LCAyMTYsIDI0OCwgMjksIDU0LCAyMTUsIDczLCAyOSwgNTQsIDIxNiwgMTYzLCAyOSwgNTQsIDI0NCwgMjMsIDI5LCA1NCwgCi0gICAgMjQ0LCAxMjIsIDI5LCA1NCwgMjE5LCAxMTMsIDI5LCA1NCwgMjIwLCAxMTgsIDI5LCA1NCwgMjQ1LCAxOTIsIDI5LCA1NCwgCi0gICAgMjI4LCAyMDAsIDI5LCA1NCwgMjQwLCAyMTcsIDI5LCA1NCwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyOSwgMywgMjIxLCAxNzksIAotICAgIDIzMCwgNDcsIDI5LCAzLCAyMzAsIDQzLCAyOSwgMywgMjMwLCA0NCwgMjksIDMsIDIzMCwgNDUsIDI5LCAzLCAyMjEsIDE3OSwgCi0gICAgMjUxLCA5MSwgMjksIDMsIDI1MSwgODgsIDI5LCAzLCAyNTEsIDg5LCAyOSwgMywgMjUxLCA5MCwgMjksIDMsIDIyMSwgMTc5LCAKLSAgICAyNDMsIDIyMCwgMjksIDMsIDI0MywgMjE2LCAyOSwgMywgMjQzLCAyMTcsIDI5LCAzLCAyNDMsIDIxOCwgMjksIDMsIDIyMSwgCi0gICAgMTc5LCAyMjQsIDExNywgMjksIDMsIDIyNCwgMTEzLCAyOSwgMywgMjI0LCAxMTQsIDI5LCAzLCAyMjQsIDExNSwgMjksIAotICAgIDIxNiwgMzIsIDE2NCwgMjEwLCAyNDcsIDI5LCAyMTYsIDMyLCAxNjQsIDI0OCwgNDksIDI5LCAyMTYsIDMyLCAxNjQsIDIyMiwgCi0gICAgMjQxLCAyOSwgMjE2LCAzMiwgMTY0LCAyMTksIDI1MywgMjIyLCAyNDEsIDI5LCAyMTYsIDMyLCAxNjQsIDI0NywgMjQzLCAKLSAgICAyOSwgMjE2LCAzMiwgMTY0LCAyMzQsIDE3MCwgMjksIDIxNiwgMzIsIDE2NCwgMjUwLCAxMDIsIDI5LCAyMTYsIDMyLCAxNjQsIAotICAgIDI0MSwgMTg0LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDgsIDQ4LCAyOSwgMjE2LCAzMiwgMTY0LCAyMzMsIDIwMCwgMTY5LCAxLCAKLSAgICA2MSwgMTY5LCAxLCA3NiwgMTY5LCAxLCA3NCwgMTY5LCAxLCA3OCwgMTY5LCAxLCA2OSwgMTY5LCAxLCAyMTQsIDEwNSwgCi0gICAgMTY5LCAxLCAyNDMsIDE0MiwgMTY5LCAxLCAxNzYsIDE2OSwgMSwgMjQzLCA2OSwgMTY5LCAxLCAyNDIsIDIyMSwgMTY5LCAxLCAKLSAgICAyNDIsIDE4MSwgMTY5LCAxLCAyNDIsIDEyMCwgMTY5LCAxLCAyNDIsIDg2LCAxNjksIDEsIDE2MiwgMTY5LCAxLCAyNDEsIAotICAgIDI0NSwgMTY5LCAxLCAyNDEsIDE4NywgMTY5LCAxLCAyNDEsIDc1LCAxNjksIDEsIDI0MCwgMjI5LCAxNjksIDEsIDI0MCwgCi0gICAgMjA4LCAxNjksIDEsIDIzMywgMTQxLCAxNjksIDEsIDIzMywgNjQsIDE2OSwgMSwgMjMyLCAyNDcsIDE2OSwgMSwgMjMyLCAKLSAgICAxNjIsIDE2OSwgMSwgMjMyLCAxMDMsIDE2OSwgMSwgMjMyLCA3NiwgMTY5LCAxLCAxODYsIDE2OSwgMSwgMjMxLCA5NiwgCi0gICAgMTY5LCAxLCAyMzAsIDIzNSwgMTY5LCAxLCAyMzAsIDE2NiwgMTY5LCAxLCAyMzAsIDEwNywgMTY5LCAxLCAxOTgsIDE2OSwgCi0gICAgMSwgMjQxLCA5NywgMTY5LCAxLCAyMjksIDIxOCwgMTY5LCAxLCAyMjksIDExMiwgMTY5LCAxLCAyMjgsIDIzOCwgMTY5LCAxLCAKLSAgICAyMjgsIDc5LCAxNjksIDEsIDIyNywgMjQyLCAxNjksIDEsIDIyNywgMTgwLCAxNjksIDEsIDIyNCwgMzIsIDE2OSwgMSwgCi0gICAgMjI0LCAxOSwgMTY5LCAxLCAyMjQsIDEyLCAxNjksIDEsIDIyNCwgNCwgMTY5LCAxLCAyMjMsIDI0OSwgMTY5LCAxLCAyMjMsIAotICAgIDI0NywgMTY5LCAxLCAyMDYsIDE2OSwgMSwgMjIyLCA5MywgMTY5LCAxLCAyMjEsIDE4MywgMTY5LCAxLCAyMTksIDE5MywgCi0gICAgMTY5LCAxLCAyMTksIDYwLCAxNjksIDEsIDIxOCwgODQsIDE2OSwgMSwgMjE4LCAzLCAxNjksIDEsIDI0OCwgMjI5LCAxNjksIAotICAgIDEsIDIxNywgMTA2LCAxNjksIDEsIDI0OCwgOTgsIDE2OSwgMSwgMjE3LCAyMywgMTY5LCAxLCAyNDgsIDExLCAxNjksIDEsIAotICAgIDIxNiwgMTE4LCAxNjksIDEsIDI0NywgMTUzLCAxNjksIDEsIDI0NiwgODYsIDE2OSwgMSwgMjQ2LCA1OCwgMTY5LCAxLCAKLSAgICAyNDcsIDE2NCwgMTY5LCAxLCAyMTYsIDYwLCAxNjksIDEsIDIxNiwgNTksIDE2OSwgMSwgMjE2LCA0OCwgMTY5LCAxLCAyMTYsIAotICAgIDQ3LCAxNjksIDEsIDIxNiwgNDYsIDE2OSwgMSwgMjE2LCA0NSwgMTY5LCAxLCAyMTUsIDE4NCwgMTY5LCAxLCAyMTUsIDE3OSwgCi0gICAgMTY5LCAxLCAyMTUsIDE2OCwgMTY5LCAxLCAyMTUsIDE2NywgMTY5LCAxLCAyMTUsIDE2NCwgMTY5LCAxLCAyMTUsIDE2MywgCi0gICAgMTY5LCAxLCAyMTIsIDY1LCAxNjksIDEsIDIxMiwgMjIsIDE2OSwgMSwgMjExLCAyNTAsIDE2OSwgMSwgMjExLCAyMjcsIAotICAgIDE2OSwgMSwgMjExLCAxOTUsIDE2OSwgMSwgMjExLCAxODMsIDE2OSwgMSwgMTkyLCAxNjksIDEsIDIxMSwgNDcsIDE2OSwgMSwgCi0gICAgMjExLCA4LCAxNjksIDEsIDIxMCwgMjQ0LCAxNjksIDEsIDIxMCwgMjEyLCAxNjksIDEsIDIxMCwgMTc3LCAxOCwgMTksIAotICAgIDI0MCwgMTc1LCAxOCwgMTksIDc2LCAxOCwgMTksIDI1NSwgNDYsIDE4LCAxOSwgNzQsIDE4LCAxOSwgMjM2LCA0MCwgMTgsIAotICAgIDE5LCA3OCwgMTgsIDE5LCAyMjYsIDE4NywgMTgsIDE5LCAyMTEsIDExNiwgMjI2LCAxODcsIDE4LCAxOSwgNzMsIDI0NSwgCi0gICAgMjE3LCAxOCwgMTksIDczLCA3NCwgMTgsIDE5LCA2MSwgMTgsIDE5LCAyNTUsIDgyLCAxOCwgMTksIDIxMiwgMjIsIDE4LCAKLSAgICAxOSwgMTU5LCAyMTIsIDIyLCAxOCwgMTksIDIxMSwgMjUwLCAxOCwgMTksIDE1OSwgMjExLCAyNTAsIDE4LCAxOSwgMjExLCAKLSAgICAyNDIsIDE4LCAxOSwgMTU5LCAyMTEsIDI0MiwgMTgsIDE5LCAyMTEsIDIyNywgMTgsIDE5LCAxNTksIDIxMSwgMjI3LCAxOCwgCi0gICAgMTksIDIxMSwgMjE1LCAxOCwgMTksIDE1OSwgMjExLCAyMTUsIDE4LCAxOSwgMjI5LCAxOTUsIDIxMSwgMjE1LCAxOCwgMTksIAotICAgIDIxMiwgNjUsIDE4LCAxOSwgMTU5LCAyMTIsIDY1LCAxOCwgMTksIDIxMiwgNjQsIDE4LCAxOSwgMTU5LCAyMTIsIDY0LCAxOCwgCi0gICAgMTksIDIyOSwgMTk1LCAyMTIsIDY0LCAxOCwgMTksIDI1NCwgMjEwLCAxOCwgMTksIDIxMSwgMTE2LCAyMTIsIDk4LCAxOCwgCi0gICAgMTksIDI0MiwgMTg3LCAyMTgsIDEzMSwgMTgsIDE5LCA0MCwgMTQyLCAxOCwgMTksIDQwLCAyNDIsIDE0MywgMTgsIDE5LCAKLSAgICA0MCwgMjUxLCAxODMsIDE2MywgMjIyLCAyMzYsIDE4LCAxOSwgNDAsIDIxNiwgMTUsIDE2MywgMjIyLCAyMzYsIDE4LCAxOSwgCi0gICAgNDAsIDQ0LCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIDQwLCAyMjIsIDIzNiwgMTgsIDE5LCA0MCwgNTIsIDE0MiwgMTgsIDE5LCAKLSAgICA0MCwgNTIsIDIxOSwgMjUzLCA2NywgMjE4LCA5MiwgMTgsIDE5LCA0MCwgMjMwLCAyMjksIDI0NywgMTI4LCAxOCwgMTksIAotICAgIDQwLCAyMTksIDI1MywgMjAzLCA5MSwgMTgsIDE5LCA0MCwgMjI1LCAyNSwgMTgsIDE5LCA0MCwgMTI0LCAyMTcsIDg4LCAxOCwgCi0gICAgMTksIDI0NSwgMTU4LCAxOCwgMTksIDIzNiwgNiwgMTgsIDE5LCAyMjYsIDIwMCwgMTgsIDE5LCAyNTQsIDEzMSwgMTgsIDE5LCAKLSAgICAyMjUsIDIyNCwgMTgsIDE5LCAyMjYsIDkxLCAxOCwgMTksIDIyNSwgMTExLCAxOCwgMTksIDIyNSwgNzQsIDE4LCAxOSwgCi0gICAgMjI1LCAxOSwgMTgsIDE5LCAyMjQsIDI1MiwgMTgsIDE5LCAyMTEsIDExNiwgMjI0LCAyNTIsIDE4LCAxOSwgNzMsIDI0MSwgCi0gICAgMjI3LCAxOCwgMTksIDczLCAyNDEsIDE4NywgMTgsIDE5LCAxOTEsIDE4LCAxOSwgMjI2LCA5MywgMTgsIDE5LCAyMjQsIAotICAgIDExNSwgMTgsIDE5LCAxNTksIDIyNCwgMTE1LCAxOCwgMTksIDIyNCwgMTEzLCAxOCwgMTksIDE1OSwgMjI0LCAxMTMsIDE4LCAKLSAgICAxOSwgMjI0LCAxMTIsIDE4LCAxOSwgMTU5LCAyMjQsIDExMiwgMTgsIDE5LCAyMjQsIDExMCwgMTgsIDE5LCAxNTksIDIyNCwgCi0gICAgMTEwLCAxOCwgMTksIDIyNCwgMTA5LCAxOCwgMTksIDE1OSwgMjI0LCAxMDksIDE4LCAxOSwgMjI0LCAxMTcsIDE4LCAxOSwgCi0gICAgMTU5LCAyMjQsIDExNywgMTgsIDE5LCAyMjQsIDExNiwgMTgsIDE5LCAxNTksIDIyNCwgMTE2LCAxOCwgMTksIDIxMSwgMTE2LCAKLSAgICAyMjQsIDExNiwgMTgsIDE5LCAyMjYsIDEwOSwgMTgsIDE5LCAxNTksIDIyNiwgMTA5LCAxOCwgMTksIDczLCAyNDIsIDY3LCAKLSAgICAxOCwgMTksIDIxNywgMjMsIDE4LCAxOSwgMjE3LCAxMDAsIDE4LCAxOSwgMjE2LCAxMTgsIDE4LCAxOSwgMjE2LCAxMDQsIAotICAgIDE4LCAxOSwgMTEyLCAxOCwgMTksIDIxNiwgMTgsIDE4LCAxOSwgMjExLCAxMTYsIDIxNiwgMTgsIDE4LCAxOSwgNzMsIDI0OCwgCi0gICAgODUsIDE4LCAxOSwgNzMsIDI0OCwgMTEsIDE4LCAxOSwgMjE3LCAxMDYsIDE4LCAxOSwgMjE3LCAxMDIsIDE4LCAxOSwgMjE1LCAKLSAgICA3OCwgMTgsIDE5LCAxNTksIDIxNSwgNzgsIDE4LCAxOSwgMjE1LCA2MiwgMTgsIDE5LCAxNTksIDIxNSwgNjIsIDE4LCAxOSwgCi0gICAgMjE1LCA2MSwgMTgsIDE5LCAxNTksIDIxNSwgNjEsIDE4LCAxOSwgMTA1LCAxOCwgMTksIDE1OSwgMTA1LCAxOCwgMTksIAotICAgIDIxNSwgNTQsIDE4LCAxOSwgMTU5LCAyMTUsIDU0LCAxOCwgMTksIDIxNSwgODAsIDE4LCAxOSwgMTU5LCAyMTUsIDgwLCAxOCwgCi0gICAgMTksIDIxNSwgNzksIDE4LCAxOSwgMTU5LCAyMTUsIDc5LCAxOCwgMTksIDIyOSwgMTk1LCAyMTUsIDc5LCAxOCwgMTksIAotICAgIDIxNywgMTUzLCAxOCwgMTksIDIxNSwgMTUyLCAxOCwgMTksIDIxNSwgMTM2LCAxOCwgMTksIDIxNSwgMTM0LCAxOCwgMTksIAotICAgIDIxNSwgMTU3LCAxOCwgMTksIDIzNCwgMTg4LCAxOCwgMTksIDIzNSwgMTMsIDE4LCAxOSwgMjM0LCA5OCwgMTgsIDE5LCAKLSAgICAyMzQsIDg5LCAxOCwgMTksIDIzNCwgMzQsIDE4LCAxOSwgMjM0LCAxNiwgMTgsIDE5LCAyMTEsIDExNiwgMjM0LCAxNiwgMTgsIAotICAgIDE5LCAxNzYsIDE4LCAxOSwgMjM1LCAxNiwgMTgsIDE5LCAyMzMsIDE4NCwgMTgsIDE5LCAxNTksIDIzMywgMTg0LCAxOCwgCi0gICAgMTksIDIzMywgMTgyLCAxOCwgMTksIDE1OSwgMjMzLCAxODIsIDE4LCAxOSwgMjMzLCAxODEsIDE4LCAxOSwgMTU5LCAyMzMsIAotICAgIDE4MSwgMTgsIDE5LCAyMzMsIDE4MCwgMTgsIDE5LCAxNTksIDIzMywgMTgwLCAxOCwgMTksIDIzMywgMTc5LCAxOCwgMTksIAotICAgIDE1OSwgMjMzLCAxNzksIDE4LCAxOSwgMjMzLCAxODgsIDE4LCAxOSwgMTU5LCAyMzMsIDE4OCwgMTgsIDE5LCAyMzMsIDE4NywgCi0gICAgMTgsIDE5LCAxNTksIDIzMywgMTg3LCAxOCwgMTksIDIyOSwgMTk1LCAyMzMsIDE4NywgMTgsIDE5LCAyMzUsIDI5LCAxOCwgCi0gICAgMTksIDIzMywgMTg5LCAxOCwgMTksIDIxOSwgMjksIDIzNCwgMTgyLCAxOCwgMTksIDIxOSwgMjksIDIzNCwgOTAsIDE4LCAKLSAgICAxOSwgMjE5LCAyOSwgMjM0LCAyOSwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDI1NCwgMTgsIDE5LCAyNTAsIDE5OCwgMTgsIAotICAgIDE5LCAyNTEsIDM5LCAxOCwgMTksIDI1MCwgNTksIDE4LCAxOSwgMjUwLCA0OSwgMTgsIDE5LCAyNDksIDI0NiwgMTgsIDE5LCAKLSAgICAyNDksIDE4MiwgMTgsIDE5LCAyMTEsIDExNiwgMjQ5LCAxODIsIDE4LCAxOSwgMjUxLCA0MSwgMTgsIDE5LCAyNTEsIDQwLCAKLSAgICAxOCwgMTksIDI0OSwgODcsIDE4LCAxOSwgMTU5LCAyNDksIDg3LCAxOCwgMTksIDI0OSwgODUsIDE4LCAxOSwgMTU5LCAyNDksIAotICAgIDg1LCAxOCwgMTksIDI0OSwgODQsIDE4LCAxOSwgMTU5LCAyNDksIDg0LCAxOCwgMTksIDI0OSwgODMsIDE4LCAxOSwgMTU5LCAKLSAgICAyNDksIDgzLCAxOCwgMTksIDI0OSwgODIsIDE4LCAxOSwgMTU5LCAyNDksIDgyLCAxOCwgMTksIDI0OSwgODksIDE4LCAxOSwgCi0gICAgMTU5LCAyNDksIDg5LCAxOCwgMTksIDI0OSwgODgsIDE4LCAxOSwgMTU5LCAyNDksIDg4LCAxOCwgMTksIDIyOSwgMTk1LCAKLSAgICAyNDksIDg4LCAxOCwgMTksIDI1MSwgNzQsIDE4LCAxOSwgMjIxLCAyMTEsIDIxNiwgMjExLCAxOCwgMTksIDIzMSwgOTYsIAotICAgIDE4LCAxOSwgMjMxLCAyNDEsIDE4LCAxOSwgMjMwLCAyMzUsIDE4LCAxOSwgMjMwLCAyMDYsIDE4LCAxOSwgMjMwLCAxNjYsIAotICAgIDE4LCAxOSwgMjMwLCAxMzcsIDE4LCAxOSwgMjExLCAxMTYsIDIzMCwgMTM3LCAxOCwgMTksIDE4NiwgMTgsIDE5LCAyMzEsIAotICAgIDI0MiwgMTgsIDE5LCAyMzAsIDQ1LCAxOCwgMTksIDE1OSwgMjMwLCA0NSwgMTgsIDE5LCAyMzAsIDQzLCAxOCwgMTksIDE1OSwgCi0gICAgMjMwLCA0MywgMTgsIDE5LCAyMzAsIDQyLCAxOCwgMTksIDE1OSwgMjMwLCA0MiwgMTgsIDE5LCAyMzAsIDQxLCAxOCwgMTksIAotICAgIDE1OSwgMjMwLCA0MSwgMTgsIDE5LCAyMzAsIDQwLCAxOCwgMTksIDE1OSwgMjMwLCA0MCwgMTgsIDE5LCAyMzAsIDQ3LCAxOCwgCi0gICAgMTksIDE1OSwgMjMwLCA0NywgMTgsIDE5LCAyMzAsIDQ2LCAxOCwgMTksIDE1OSwgMjMwLCA0NiwgMTgsIDE5LCAyMjksIAotICAgIDE5NSwgMjMwLCA0NiwgMTgsIDE5LCAxOTQsIDE4LCAxOSwgMTU5LCAxOTQsIDE4LCAxOSwgMjMwLCAyMzksIDE4LCAxOSwgCi0gICAgMjUzLCAyMTMsIDE5NCwgMTgsIDE5LCAyMjEsIDIxMSwgMTk0LCAxOCwgMTksIDIyOSwgMTEyLCAxOCwgMTksIDIyOSwgMjI5LCAKLSAgICAxOCwgMTksIDIyOCwgMjM4LCAxOCwgMTksIDIyOCwgMjEzLCAxOCwgMTksIDIyOCwgNzksIDE4LCAxOSwgMjI4LCA2OSwgMTgsIAotICAgIDE5LCAyMTEsIDExNiwgMjI4LCA2OSwgMTgsIDE5LCAxOTgsIDE4LCAxOSwgMjI5LCAyMzAsIDE4LCAxOSwgMjI3LCAxNzYsIAotICAgIDE4LCAxOSwgMTU5LCAyMjcsIDE3NiwgMTgsIDE5LCAyMjcsIDE3OCwgMTgsIDE5LCAxNTksIDIyNywgMTc4LCAxOCwgMTksIAotICAgIDIyNywgMTc3LCAxOCwgMTksIDE1OSwgMjI3LCAxNzcsIDE4LCAxOSwgMjI5LCAxOTUsIDIyNywgMTc3LCAxOCwgMTksIDIzMCwgCi0gICAgMzAsIDE4LCAxOSwgNzMsIDIyOSwgODQsIDE4LCAxOSwgMjI4LCAyNDMsIDE4LCAxOSwgMjMzLCA2NCwgMTgsIDE5LCAyMzMsIAotICAgIDEzOSwgMTgsIDE5LCAyMzIsIDI0NywgMTgsIDE5LCAyMzIsIDIzMywgMTgsIDE5LCAyMzIsIDE2MiwgMTgsIDE5LCAyMzIsIAotICAgIDEzMywgMTgsIDE5LCAyMTEsIDExNiwgMjMyLCAxMzMsIDE4LCAxOSwgMjMzLCAxNDEsIDE4LCAxOSwgMjMzLCAxNDAsIDE4LCAKLSAgICAxOSwgMjMyLCA3MywgMTgsIDE5LCAxNTksIDIzMiwgNzMsIDE4LCAxOSwgMjMyLCA3MiwgMTgsIDE5LCAxNTksIDIzMiwgNzIsIAotICAgIDE4LCAxOSwgMjMyLCA3MSwgMTgsIDE5LCAxNTksIDIzMiwgNzEsIDE4LCAxOSwgMjMyLCA3MCwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgNzAsIDE4LCAxOSwgMjMyLCA2OSwgMTgsIDE5LCAxNTksIDIzMiwgNjksIDE4LCAxOSwgMjMyLCA3NSwgMTgsIDE5LCAxNTksIAotICAgIDIzMiwgNzUsIDE4LCAxOSwgMjMyLCA3NCwgMTgsIDE5LCAxNTksIDIzMiwgNzQsIDE4LCAxOSwgMTU2LCAxOCwgMTksIDE1OSwgCi0gICAgMTU2LCAxOCwgMTksIDE0NywgMTU2LCAxOCwgMTksIDIyMSwgMTgzLCAxOCwgMTksIDIyMiwgMzEsIDE4LCAxOSwgMjE5LCAKLSAgICAxOTMsIDE4LCAxOSwgMjE5LCAxNzcsIDE4LCAxOSwgMjE5LCA2MCwgMTgsIDE5LCAyMTksIDQyLCAxOCwgMTksIDIxMSwgCi0gICAgMTE2LCAyMTksIDQyLCAxOCwgMTksIDIwNiwgMTgsIDE5LCAyMjIsIDMzLCAxOCwgMTksIDIxNywgMjUwLCAxOCwgMTksIAotICAgIDE1OSwgMjE3LCAyNTAsIDE4LCAxOSwgMjE3LCAyNDQsIDE4LCAxOSwgMTU5LCAyMTcsIDI0NCwgMTgsIDE5LCAyMTcsIDI0MywgCi0gICAgMTgsIDE5LCAxNTksIDIxNywgMjQzLCAxOCwgMTksIDIxNywgMjM5LCAxOCwgMTksIDE1OSwgMjE3LCAyMzksIDE4LCAxOSwgCi0gICAgMjE3LCAyMzgsIDE4LCAxOSwgMTU5LCAyMTcsIDIzOCwgMTgsIDE5LCAyMTcsIDI1NCwgMTgsIDE5LCAxNTksIDIxNywgMjU0LCAKLSAgICAxOCwgMTksIDIxNywgMjUzLCAxOCwgMTksIDE1OSwgMjE3LCAyNTMsIDE4LCAxOSwgMjI5LCAxOTUsIDIxNywgMjUzLCAxOCwgCi0gICAgMTksIDIyMiwgOTMsIDE4LCAxOSwgMjUzLCAyMTMsIDIyMiwgOTMsIDE4LCAxOSwgMjE3LCAyNTUsIDE4LCAxOSwgMjUxLCAKLSAgICAyMjYsIDIyMiwgOTMsIDE4LCAxOSwgMjMwLCAxMzIsIDIxOSwgMTEwLCAxOCwgMTksIDIyOSwgMTk1LCAyMTksIDEwMSwgMTgsIAotICAgIDE5LCAyMjksIDE5NSwgMjIyLCA5MSwgMTgsIDE5LCAyMjksIDE5NSwgMjE4LCAyMzcsIDE4LCAxOSwgMjI5LCAxOTUsIDIxOCwgCi0gICAgODcsIDE4LCAxOSwgMjI5LCAxOTUsIDIxOSwgMTAwLCAxOCwgMTksIDIyOSwgMTk1LCAyMjEsIDE4NiwgMTgsIDE5LCAyMjAsIAotICAgIDY1LCAxOCwgMTksIDIyMCwgMzQsIDE4LCAxOSwgMjIwLCAyOSwgMTgsIDE5LCAyMjAsIDksIDE4LCAxOSwgMjIwLCAzLCAxOCwgCi0gICAgMTksIDIyMCwgMTA0LCAxOCwgMTksIDIyMCwgMTAwLCAxOCwgMTksIDIxOSwgMjA4LCAxOCwgMTksIDE1OSwgMjE5LCAyMDgsIAotICAgIDE4LCAxOSwgMjE5LCAyMDcsIDE4LCAxOSwgMTU5LCAyMTksIDIwNywgMTgsIDE5LCAyMTksIDIwNiwgMTgsIDE5LCAxNTksIAotICAgIDIxOSwgMjA2LCAxOCwgMTksIDIxOSwgMjA1LCAxOCwgMTksIDE1OSwgMjE5LCAyMDUsIDE4LCAxOSwgMjE5LCAyMDQsIDE4LCAKLSAgICAxOSwgMTU5LCAyMTksIDIwNCwgMTgsIDE5LCAyMTksIDIxMCwgMTgsIDE5LCAxNTksIDIxOSwgMjEwLCAxOCwgMTksIDIxOSwgCi0gICAgMjA5LCAxOCwgMTksIDE1OSwgMjE5LCAyMDksIDE4LCAxOSwgMjIwLCAxMDYsIDE4LCAxOSwgMjExLCA0NywgMTgsIDE5LCAKLSAgICAyMTEsIDEwMSwgMTgsIDE5LCAyMTEsIDgsIDE4LCAxOSwgMjEwLCAyNTUsIDE4LCAxOSwgMjEwLCAyNDQsIDE4LCAxOSwgCi0gICAgMjEwLCAyMjksIDE4LCAxOSwgMjExLCAxMTYsIDIxMCwgMjI5LCAxOCwgMTksIDE5MiwgMTgsIDE5LCAyMTEsIDEwMywgMTgsIAotICAgIDE5LCAyMTAsIDE3NCwgMTgsIDE5LCAxNTksIDIxMCwgMTc0LCAxOCwgMTksIDIxMCwgMTczLCAxOCwgMTksIDE1OSwgMjEwLCAKLSAgICAxNzMsIDE4LCAxOSwgMjEwLCAxNzIsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MiwgMTgsIDE5LCAyMTAsIDE3MSwgMTgsIDE5LCAKLSAgICAxNTksIDIxMCwgMTcxLCAxOCwgMTksIDIxMCwgMTcwLCAxOCwgMTksIDE1OSwgMjEwLCAxNzAsIDE4LCAxOSwgMjEwLCAxNzYsIAotICAgIDE4LCAxOSwgMTU5LCAyMTAsIDE3NiwgMTgsIDE5LCAyMTAsIDE3NSwgMTgsIDE5LCAxNTksIDIxMCwgMTc1LCAxOCwgMTksIAotICAgIDIyOSwgMTk1LCAyMTAsIDE3NSwgMTgsIDE5LCAyMTEsIDExNywgMTgsIDE5LCAyNTIsIDEyLCAyMTEsIDExNywgMTgsIDE5LCAKLSAgICAxNTksIDIxMSwgMTE3LCAxOCwgMTksIDIyMSwgMjExLCAyMTEsIDgsIDE4LCAxOSwgMjIzLCAxMzEsIDE4LCAxOSwgMjIzLCAKLSAgICAyMjYsIDIyMywgMTMxLCAxOCwgMTksIDE1OSwgMjMzLCA2NCwgMTgsIDE5LCAyMjMsIDE4NiwgMTgsIDE5LCAyMjMsIDM4LCAKLSAgICAxOCwgMTksIDIyMiwgMjQyLCAxOCwgMTksIDIyMiwgMjEzLCAxOCwgMTksIDIyMiwgMTk5LCAxOCwgMTksIDE1OSwgMjMyLCAKLSAgICAxNjIsIDE4LCAxOSwgMjA1LCAxOCwgMTksIDIyMywgMTg3LCAxOCwgMTksIDE1OSwgMjMzLCAxNDEsIDE4LCAxOSwgMjIyLCAKLSAgICAxMTAsIDE4LCAxOSwgMTU5LCAyMjIsIDExMCwgMTgsIDE5LCAxNTMsIDE4LCAxOSwgMTU5LCAxNTMsIDE4LCAxOSwgMTQ3LCAKLSAgICAxNTMsIDE4LCAxOSwgMjQ0LCAxNjIsIDE4LCAxOSwgMjQ0LCAyMDEsIDE4LCAxOSwgMjQ0LCAxMjksIDE4LCAxOSwgMjQ0LCAKLSAgICAxMTYsIDE4LCAxOSwgMjQ0LCA1MSwgMTgsIDE5LCAyNDQsIDQyLCAxOCwgMTksIDI0NCwgMjA0LCAxOCwgMTksIDI0NCwgCi0gICAgMjAzLCAxOCwgMTksIDI0MywgMjE5LCAxOCwgMTksIDE1OSwgMjQzLCAyMTksIDE4LCAxOSwgMjQ1LCAxNCwgMTgsIDE5LCAKLSAgICAyMTYsIDE5NiwgMTgsIDE5LCAyMzAsIDI4LCAyMTYsIDE5NiwgMTgsIDE5LCAyMTYsIDE3NiwgMTgsIDE5LCAyMzAsIDI4LCAKLSAgICAyMTYsIDE3NiwgMTgsIDE5LCAyMTYsIDE3MiwgMTgsIDE5LCAyMzAsIDI4LCAyMTYsIDE3MiwgMTgsIDE5LCAyMTYsIDE1NywgCi0gICAgMTgsIDE5LCAyMTYsIDE1NCwgMTgsIDE5LCAyMTYsIDIwOSwgMTgsIDE5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDEyOCwgCi0gICAgMTgsIDE5LCAxNTksIDIxNiwgMTI4LCAxOCwgMTksIDIxNiwgMjExLCAxOCwgMTksIDIxNSwgMTQzLCAxOCwgMTksIDIxNSwgCi0gICAgMTQxLCAxOCwgMTksIDIxNSwgMTQwLCAxOCwgMTksIDIxNSwgMTQ1LCAxOCwgMTksIDIxNSwgMTQ2LCAxOCwgMTksIDIxNSwgCi0gICAgNTIsIDE4LCAxOSwgMjE1LCA1MSwgMTgsIDE5LCAyMTUsIDUwLCAxOCwgMTksIDIxNSwgNTMsIDE4LCAxOSwgMjI3LCAxOTcsIAotICAgIDI0MSwgMjQ1LCAxOCwgMTksIDIyNywgMTk3LCAyNDEsIDE4NywgMTgsIDE5LCAyMjcsIDE5NywgMjQxLCAxNjgsIDE4LCAxOSwgCi0gICAgMjI3LCAxOTcsIDI0MSwgNzUsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MSwgNjAsIDE4LCAxOSwgMjI3LCAxOTcsIDE2MiwgMTgsIAotICAgIDE5LCAyMjcsIDE5NywgMjQyLCA1MywgMTgsIDE5LCAyMjcsIDE5NywgMjQyLCA2NywgMTgsIDE5LCAyMjcsIDE5NiwgMjQyLCAKLSAgICA2NywgMTgsIDE5LCAyNDEsIDE2MSwgMTgsIDE5LCAyMjQsIDg3LCAxOCwgMTksIDIyNCwgNTYsIDE4LCAxOSwgMjI0LCA1MSwgCi0gICAgMTgsIDE5LCAyMjQsIDQ1LCAxOCwgMTksIDIyNCwgNDAsIDE4LCAxOSwgMjI0LCA5MSwgMTgsIDE5LCAyMjQsIDkwLCAxOCwgCi0gICAgMTksIDIyNCwgOTksIDE4LCAxOSwgMjE2LCA1NiwgMTgsIDE5LCAyMTYsIDU0LCAxOCwgMTksIDIxNiwgNTMsIDE4LCAxOSwgCi0gICAgMjE2LCA1NywgMTgsIDE5LCAxNTksIDIyMywgMTMxLCAxOCwgMTksIDE1OSwgMjIzLCAzOCwgMTgsIDE5LCAxNTksIDIyMiwgCi0gICAgMjEzLCAxOCwgMTksIDE1OSwgMjA1LCAxOCwgMTksIDIyOSwgODAsIDE4LCAxOSwgMjI5LCAzMiwgMTgsIDE5LCAyMjksIDI4LCAKLSAgICAxOCwgMTksIDIyOSwgOSwgMTgsIDE5LCAyMjksIDQsIDE4LCAxOSwgMjI5LCA4MiwgMTgsIDE5LCAyMjksIDgxLCAxOCwgMTksIAotICAgIDIyOSwgODQsIDE4LCAxOSwgMjI4LCAxMDgsIDE4LCAxOSwgMjIxLCAyMTEsIDIyMCwgNjUsIDE4LCAxOSwgMjIxLCAyMTEsIAotICAgIDIyMCwgMzQsIDE4LCAxOSwgMjIxLCAyMTEsIDIyMCwgOSwgMTgsIDE5LCAyMjEsIDIxMSwgMjIwLCAxMDQsIDE4LCAxOSwgCi0gICAgMjExLCAyMTMsIDIxNiwgMTk2LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDE3NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAKLSAgICAxNTcsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMjA5LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDIxMSwgMTgsIDE5LCAyMzIsIAotICAgIDI1NCwgMTgsIDE5LCAyMzIsIDI1MywgMTgsIDE5LCAyMzIsIDI1MiwgMTgsIDE5LCAyMzIsIDI1MSwgMTgsIDE5LCAyMzMsIAotICAgIDQsIDE4LCAxOSwgMjMzLCAzLCAxOCwgMTksIDIzMywgNSwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAxOTYsIDE4LCAxOSwgCi0gICAgMjE2LCAyMTAsIDIxNiwgMTc2LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDE3MiwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAKLSAgICAxNTcsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMTU0LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDIwOSwgMTgsIDE5LCAyMTYsIAotICAgIDIxMCwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMjExLCAxOCwgMTksIDI1NCwgMTk4LCAyNTMsIDE2NiwgCi0gICAgMTgsIDE5LCAyNTEsIDIyNiwgNzYsIDE4LCAxOSwgMjUxLCAyMjYsIDc0LCAxOCwgMTksIDI1MSwgMjI2LCA3OCwgMTgsIDE5LCAKLSAgICAyNTEsIDIyNiwgNjEsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgMjIsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMSwgMjUwLCAxOCwgCi0gICAgMTksIDI1MSwgMjI2LCAyMTEsIDIyNywgMTgsIDE5LCAyNTEsIDIyNiwgMjEyLCA2NSwgMTgsIDE5LCAyNTEsIDIyNiwgMjI5LCAKLSAgICAxMTIsIDE4LCAxOSwgMjUxLCAyMjYsIDIyOCwgMjM4LCAxOCwgMTksIDI1MSwgMjI2LCAyMjgsIDc5LCAxOCwgMTksIDI1MSwgCi0gICAgMjI2LCAxOTgsIDE4LCAxOSwgMjUxLCAyMjYsIDIzNCwgMTg4LCAxOCwgMTksIDI1MSwgMjI2LCAyMzQsIDk4LCAxOCwgMTksIAotICAgIDI1MSwgMjI2LCAyMzQsIDM0LCAxOCwgMTksIDI1MSwgMjI2LCAxNzYsIDE4LCAxOSwgMjIxLCAyMTEsIDI0MSwgMjQ1LCAxOCwgCi0gICAgMTksIDIyMSwgMjExLCAyNDEsIDE4NywgMTgsIDE5LCAyMjEsIDIxMSwgMjQxLCA3NSwgMTgsIDE5LCAyMjEsIDIxMSwgMTYyLCAKLSAgICAxOCwgMTksIDczLCAyNDIsIDIyNywgMTgsIDE5LCA3MywgMjQyLCAyMzEsIDE4LCAxOSwgNzMsIDI0MiwgMjQzLCAxOCwgMTksIAotICAgIDczLCAyNDIsIDI0MiwgMTgsIDE5LCA3MywgMjQyLCAyMzIsIDE4LCAxOSwgNzMsIDI0MywgMCwgMTgsIDE5LCA3MywgMjIyLCAKLSAgICAxNDIsIDE4LCAxOSwgNzMsIDIyMiwgMjEzLCAxOCwgMTksIDczLCAyMjMsIDEzMSwgMTgsIDE5LCA3MywgMjIzLCAxMTEsIAotICAgIDE4LCAxOSwgNzMsIDIyMywgMzgsIDE4LCAxOSwgNzMsIDIwNSwgMTgsIDE5LCA3MywgMjExLCAxOTUsIDE4LCAxOSwgNzMsIAotICAgIDIxMSwgMjI3LCAxOCwgMTksIDczLCAyMTIsIDIyLCAxOCwgMTksIDczLCAyMTIsIDE3LCAxOCwgMTksIDczLCAyMTEsIDI1MCwgCi0gICAgMTgsIDE5LCA3MywgMjEyLCA2NSwgMTgsIDE5LCA3MywgMjQwLCAyMDEsIDE4LCAxOSwgNzMsIDI0MCwgMjAyLCAxOCwgMTksIAotICAgIDczLCAyNDAsIDIwNSwgMTgsIDE5LCA3MywgMjQwLCAyMDQsIDE4LCAxOSwgNzMsIDI0MCwgMjAzLCAxOCwgMTksIDczLCAKLSAgICAyNDAsIDIwNywgMTgsIDE5LCA3MywgMjE2LCAxMzcsIDE4LCAxOSwgNzMsIDIxNiwgMTU3LCAxOCwgMTksIDczLCAyMTYsIAotICAgIDE5NiwgMTgsIDE5LCA3MywgMjE2LCAxOTUsIDE4LCAxOSwgNzMsIDIxNiwgMTc2LCAxOCwgMTksIDczLCAyMTYsIDIwOSwgCi0gICAgMTgsIDE5LCA3MywgMjE1LCAxMjQsIDE4LCAxOSwgNzMsIDIxNSwgMTM0LCAxOCwgMTksIDczLCAyMTUsIDE1MiwgMTgsIDE5LCAKLSAgICA3MywgMjE1LCAxNTEsIDE4LCAxOSwgNzMsIDIxNSwgMTM2LCAxOCwgMTksIDczLCAyMTUsIDE1NywgMTgsIDE5LCA3MywgCi0gICAgMjI0LCAxNTMsIDE4LCAxOSwgNzMsIDIyNSwgMTksIDE4LCAxOSwgNzMsIDIyNSwgMjI0LCAxOCwgMTksIDczLCAyMjUsIAotICAgIDIxNCwgMTgsIDE5LCA3MywgMjI1LCAxMTEsIDE4LCAxOSwgNzMsIDE5MSwgMTgsIDE5LCA3MywgMjI2LCAxMDksIDE4LCAxOSwgCi0gICAgNzMsIDI0MiwgMTIwLCAxOCwgMTksIDczLCAyNDIsIDE4MSwgMTgsIDE5LCA3MywgMjQzLCA2OSwgMTgsIDE5LCA3MywgMjQzLCAKLSAgICA2MiwgMTgsIDE5LCA3MywgMjQyLCAyMjEsIDE4LCAxOSwgNzMsIDI0MywgMTQyLCAxOCwgMTksIDczLCAyMzQsIDEwNiwgMTgsIAotICAgIDE5LCA3MywgMjM0LCAxMTEsIDE4LCAxOSwgNzMsIDIzNCwgMTI1LCAxOCwgMTksIDczLCAyMzQsIDEyNCwgMTgsIDE5LCA3MywgCi0gICAgMjM0LCAxMTgsIDE4LCAxOSwgNzMsIDIzNCwgMTM4LCAxOCwgMTksIDczLCAyMzQsIDQ3LCAxOCwgMTksIDczLCAyMzQsIDQ4LCAKLSAgICAxOCwgMTksIDczLCAyMzQsIDUxLCAxOCwgMTksIDczLCAyMzQsIDUwLCAxOCwgMTksIDczLCAyMzQsIDQ5LCAxOCwgMTksIAotICAgIDczLCAyMzQsIDUyLCAxOCwgMTksIDczLCAyMzQsIDUzLCAxOCwgMTksIDczLCAyMjcsIDI0MiwgMTgsIDE5LCA3MywgMjI4LCAKLSAgICA3OSwgMTgsIDE5LCA3MywgMjI5LCAxMTIsIDE4LCAxOSwgNzMsIDIyOSwgMTA4LCAxOCwgMTksIDczLCAyMjgsIDIzOCwgMTgsIAotICAgIDE5LCA3MywgMTk4LCAxOCwgMTksIDczLCAyMzAsIDEwNywgMTgsIDE5LCA3MywgMjMwLCAxNjYsIDE4LCAxOSwgNzMsIDIzMSwgCi0gICAgOTYsIDE4LCAxOSwgNzMsIDIzMSwgODUsIDE4LCAxOSwgNzMsIDIzMCwgMjM1LCAxOCwgMTksIDczLCAxODYsIDE4LCAxOSwgCi0gICAgNzMsIDIxMCwgMjEyLCAxOCwgMTksIDczLCAyMTAsIDI0NCwgMTgsIDE5LCA3MywgMjExLCA0NywgMTgsIDE5LCA3MywgMjExLCAKLSAgICA0NCwgMTgsIDE5LCA3MywgMjExLCA4LCAxOCwgMTksIDczLCAxOTIsIDE4LCAxOSwgNzMsIDIzNSwgNTcsIDE4LCAxOSwgCi0gICAgMjIxLCAyMTEsIDIzNSwgNTcsIDE4LCAxOSwgNzMsIDIzNSwgNzQsIDE4LCAxOSwgNzMsIDIzNSwgMTMyLCAxOCwgMTksIDczLCAKLSAgICAyMzUsIDEzMCwgMTgsIDE5LCA3MywgMjM1LCAxMTQsIDE4LCAxOSwgMjIxLCAyMTEsIDIzNSwgMTE0LCAxOCwgMTksIDczLCAKLSAgICAyMzUsIDE0NywgMTgsIDE5LCA3MywgMjM1LCA4NywgMTgsIDE5LCA3MywgMjM1LCA5MSwgMTgsIDE5LCA3MywgMjM1LCAxMDEsIAotICAgIDE4LCAxOSwgNzMsIDIzNSwgMTAwLCAxOCwgMTksIDczLCAyMzUsIDk5LCAxOCwgMTksIDczLCAyMzUsIDEwMiwgMTgsIDE5LCAKLSAgICA3MywgMjMyLCAxMDMsIDE4LCAxOSwgNzMsIDIzMiwgMTYyLCAxOCwgMTksIDczLCAyMzMsIDY0LCAxOCwgMTksIDczLCAyMzMsIAotICAgIDU2LCAxOCwgMTksIDczLCAyMzIsIDI0NywgMTgsIDE5LCA3MywgMjMzLCAxNDEsIDE4LCAxOSwgNzMsIDI0NywgMTU3LCAxOCwgCi0gICAgMTksIDczLCAyNDcsIDE1OCwgMTgsIDE5LCA3MywgMjQ3LCAxNjMsIDE4LCAxOSwgNzMsIDI0NywgMTYyLCAxOCwgMTksIDczLCAKLSAgICAyNDcsIDE1OSwgMTgsIDE5LCA3MywgMjQ3LCAxNjQsIDE4LCAxOSwgNzMsIDIzMiwgMjUwLCAxOCwgMTksIDczLCAyMzIsIAotICAgIDI1MiwgMTgsIDE5LCA3MywgMjMzLCAwLCAxOCwgMTksIDczLCAyMzIsIDI1NSwgMTgsIDE5LCA3MywgMjMyLCAyNTQsIDE4LCAKLSAgICAxOSwgNzMsIDIzMywgNCwgMTgsIDE5LCA3MywgMjE2LCA1MSwgMTgsIDE5LCA3MywgMjE2LCA1MywgMTgsIDE5LCA3MywgCi0gICAgMjE2LCA1NiwgMTgsIDE5LCA3MywgMjE2LCA1NSwgMTgsIDE5LCA3MywgMjE2LCA1NCwgMTgsIDE5LCA3MywgMjE2LCA1NywgCi0gICAgMTgsIDE5LCA3MywgMjE2LCA0NiwgMTgsIDE5LCA3MywgMjE2LCA0NywgMTgsIDE5LCA3MywgMjE2LCA1OSwgMTgsIDE5LCAKLSAgICA3MywgMjE2LCA1OCwgMTgsIDE5LCA3MywgMjE2LCA0OCwgMTgsIDE5LCA3MywgMjE2LCA2MCwgMTgsIDE5LCA3MywgMjEwLCAKLSAgICAxMywgMTgsIDE5LCA3MywgMjEwLCAyMywgMTgsIDE5LCA3MywgMjEwLCA5NCwgMTgsIDE5LCA3MywgMjEwLCA5MiwgMTgsIAotICAgIDE5LCA3MywgMjEwLCA0NCwgMTgsIDE5LCA3MywgMjEwLCAxMTYsIDE4LCAxOSwgNzMsIDIxMCwgMTU5LCAxOCwgMTksIDczLCAKLSAgICA2NSwgMjEwLCAxNTksIDE4LCAxOSwgNzMsIDI0NiwgMzYsIDE4LCAxOSwgNzMsIDI0NiwgMzcsIDE4LCAxOSwgNzMsIDI0NiwgCi0gICAgNDQsIDE4LCAxOSwgNzMsIDI0NiwgNDMsIDE4LCAxOSwgNzMsIDI0NiwgMzksIDE4LCAxOSwgNzMsIDI0NiwgNDYsIDE4LCAKLSAgICAxOSwgNzMsIDIxOCwgODQsIDE4LCAxOSwgNzMsIDIxOSwgNjAsIDE4LCAxOSwgNzMsIDIyMSwgMTgzLCAxOCwgMTksIDczLCAKLSAgICAyMjEsIDE3MiwgMTgsIDE5LCA3MywgMjE5LCAxOTMsIDE4LCAxOSwgNzMsIDIwNiwgMTgsIDE5LCA3MywgMjE5LCAyMjcsIAotICAgIDE4LCAxOSwgNzMsIDIyMCwgOSwgMTgsIDE5LCA3MywgMjIwLCA2NSwgMTgsIDE5LCA3MywgMjIwLCA2MywgMTgsIDE5LCA3MywgCi0gICAgMjIwLCAzNCwgMTgsIDE5LCA3MywgMjIwLCAxMDQsIDE4LCAxOSwgNzMsIDIyMCwgMTA2LCAxOCwgMTksIDczLCAyMTUsIAotICAgIDE2NCwgMTgsIDE5LCA3MywgMjE1LCAxNjcsIDE4LCAxOSwgNzMsIDIxNSwgMTc5LCAxOCwgMTksIDczLCAyMTUsIDE3OCwgCi0gICAgMTgsIDE5LCA3MywgMjE1LCAxNjgsIDE4LCAxOSwgNzMsIDIxNSwgMTg0LCAxOCwgMTksIDczLCAyNTAsIDc3LCAxOCwgMTksIAotICAgIDczLCAyNTAsIDk0LCAxOCwgMTksIDczLCAyNTAsIDEzOSwgMTgsIDE5LCA3MywgMjUwLCAxMzYsIDE4LCAxOSwgNzMsIDI1MCwgCi0gICAgMTE4LCAxOCwgMTksIDczLCAyNTAsIDE2NSwgMTgsIDE5LCA3MywgMjE1LCAxMjcsIDE4LCAxOSwgNzMsIDIxNSwgMTI4LCAKLSAgICAxOCwgMTksIDczLCAyMTUsIDEzMSwgMTgsIDE5LCA3MywgMjE1LCAxMzAsIDE4LCAxOSwgNzMsIDIxNSwgMTI5LCAxOCwgMTksIAotICAgIDczLCAyMTUsIDEzMiwgMTgsIDE5LCAyNTAsIDExOSwgNTAsIDE4LCAxOSwgMjQzLCAyMzYsIDIxOCwgMTMxLCAxOCwgMTksIAotICAgIDIyNCwgODMsIDE4LCAxOSwgMjI5LCA3OCwgMTgsIDE5LCAyMjgsIDEwNSwgMTgsIDE5LCAyMjgsIDEwNCwgMTgsIDE5LCAKLSAgICAyMjgsIDEwMywgMTgsIDE5LCAyMjgsIDEwMiwgMTgsIDE5LCAyMjgsIDEwNywgMTgsIDE5LCAyMjgsIDEwNiwgMTgsIDE5LCAKLSAgICAyMTEsIDIxMywgMjE2LCAxMjYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIAotICAgIDEyNCwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjMsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIyLCAxOCwgMTksIDIxMSwgCi0gICAgMjEzLCAyMTYsIDEyOSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjgsIDE4LCAxOSwgMjExLCAyMTMsIDQwLCAyMTYsIAotICAgIDIxMSwgMTgsIDE5LCAyNTEsIDIyNiwgMjEyLCA5OCwgMjI2LCAyMzAsIDIxOSwgMjEsIDc5LCAyMjYsIDIzMCwgMSwgMjUyLCAKLSAgICA1NiwgMjI2LCAyMzAsIDEsIDIzMiwgOTIsIDIyNiwgMjMwLCAxLCAyNDQsIDE1OSwgMjI2LCAyMzAsIDEsIDIyMiwgMTcsIAotICAgIDIyNiwgMjMwLCAxLCAyMjgsIDE5OCwgMjI2LCAyMzAsIDEsIDIxNCwgMjI2LCAyMjYsIDIzMCwgMSwgMjQ4LCAyMDUsIDIyNiwgCi0gICAgMjMwLCAxLCAyMTYsIDgxLCAyMjYsIDIzMCwgMSwgMjQ5LCAyMzcsIDIyNiwgMjMwLCAxLCAyNTAsIDE4OCwgMjI2LCAyMzAsIAotICAgIDEsIDIzMCwgOTYsIDIyNiwgMjMwLCAxLCAyNDIsIDE2MywgMjI2LCAyMzAsIDEsIDIyOSwgNjgsIDIyNiwgMjMwLCAxLCAKLSAgICAyMTgsIDEyNCwgMjI2LCAyMzAsIDEsIDIyMiwgMTM3LCAyMjYsIDIzMCwgMSwgMjU0LCAyMDcsIDIyNiwgMjMwLCAxLCAyMjYsIAotICAgIDE5MSwgMjI2LCAyMzAsIDEsIDIxNCwgMTUwLCAyMjYsIDIzMCwgMSwgMjQ1LCAyMzksIDIyNiwgMjMwLCAxLCAyMzUsIDE5NSwgCi0gICAgMjI2LCAyMzAsIDEsIDI0NSwgMjQwLCAyMjYsIDIzMCwgMSwgMjI2LCAxNjIsIDIyNiwgMjMwLCAxLCAyMTQsIDIwNiwgMjI2LCAKLSAgICAyMzAsIDEsIDIzNiwgNDYsIDIyNiwgMjMwLCAxLCAyNDUsIDIzNywgMjI2LCAyMzAsIDEsIDIyNSwgMjA1LCAyMjYsIDIzMCwgCi0gICAgMjQ0LCAxNTgsIDc5LCAyMjYsIDIzMCwgMjIzLCA1MiwgMjQ0LCAxNTgsIDc5LCAxNzgsIDEsIDI0NCwgMTQ5LCAyNDQsIAotICAgIDE0MSwgMjQ0LCAxNjMsIDI0NSwgMTQsIDE3OCwgMSwgMjE0LCAxMDUsIDE3OCwgMSwgMjE0LCAxMzUsIDIxNCwgMTUxLCA2OSwgCi0gICAgMTc4LCAxLCAyMTAsIDIxNCwgMTc4LCAxLCAyMTEsIDExNywgMTc4LCAxLCAyMTIsIDk4LCAxNzgsIDEsIDIxNiwgMTMxLCAKLSAgICAyMTYsIDEzMCwgMjE2LCAxNTIsIDE3OCwgMSwgMjQ1LCA2NywgMTc4LCAxLCAyNTQsIDEwMSwgNjEsIDE3OCwgMSwgMjI2LCAKLSAgICAxNDcsIDc4LCAxNzgsIDEsIDI1NSwgMjYsIDYxLCAxNzgsIDEsIDI1NCwgMjM2LCAxNzgsIDEsIDIzMiwgMTM5LCA3OCwgCi0gICAgMTc4LCAxLCAyMTksIDI0NiwgNzgsIDE3OCwgMSwgNzgsIDE3OCwgMSwgMjI2LCAyMzgsIDE3OCwgMSwgMjI2LCAyMDAsIAotICAgIDE3OCwgMSwgMjIzLCAxNjcsIDIyMywgMTgwLCAyMjMsIDk3LCAxNTMsIDE3OCwgMSwgMjM0LCAxOTksIDE3OCwgMSwgMjUwLCAKLSAgICAxODUsIDE3OCwgMSwgMjM0LCAyMDAsIDIzNSwgMjksIDE3OCwgMSwgMjQzLCAyMDksIDE3OCwgMSwgMjQ1LCAxNDYsIDE3OCwgCi0gICAgMSwgMjQzLCA2NSwgMjQyLCA3MywgMjQzLCAyMDksIDE3OCwgMSwgMjQzLCAxMDMsIDE3OCwgMSwgMjExLCAxODgsIDIxMSwgCi0gICAgMTgyLCAyMTIsIDk4LCAxNzgsIDEsIDI0MiwgNDUsIDI0MiwgNjcsIDE3OCwgMSwgMjQyLCA0OSwgMjQyLCA2NywgMTc4LCAxLCAKLSAgICAyMzIsIDE0MSwgMjQyLCA2NywgMTc4LCAxLCAyMTksIDI0OSwgMjQyLCA2NywgMTc4LCAxLCAyMjksIDE5MCwgMjI3LCAxNjEsIAotICAgIDIyOSwgMTkxLCAyMzAsIDMwLCAxNzgsIDEsIDIxOSwgMjQ3LCAyMzAsIDMwLCAxNzgsIDEsIDI0NiwgMTIzLCAxNzgsIDEsIAotICAgIDIzNSwgMTc1LCAyMzUsIDE3OSwgMjM1LCAxNjgsIDc0LCAxNzgsIDEsIDc2LCAxNzgsIDEsIDIzNSwgMTIzLCAyMzUsIDE1MCwgCi0gICAgMTc4LCAxLCAyNDMsIDUwLCAxNzgsIDEsIDIzMiwgMTQyLCAyNTQsIDI1MiwgMTc4LCAxLCAyMTksIDI1MSwgNjEsIDE3OCwgCi0gICAgMSwgMjM1LCAxNjAsIDI0NSwgMTIxLCAxNzgsIDEsIDIyNSwgMTY3LCAyMjUsIDE4OSwgMjI2LCAxMDksIDE3OCwgMSwgMjU0LCAKLSAgICAxNzIsIDI0NSwgMTE5LCAxNzgsIDEsIDIxOSwgMjYsIDIyMiwgOTMsIDE3OCwgMSwgMjE5LCAxODEsIDIzMiwgMTM4LCAyMjIsIAotICAgIDkzLCAxNzgsIDEsIDIxOSwgMjQ1LCAyMjIsIDkzLCAxNzgsIDEsIDI1MSwgNzQsIDE3OCwgMSwgMjEwLCAxNTksIDE3OCwgMSwgCi0gICAgMjE2LCA2NCwgMjE2LCA3NCwgMjE1LCA0MSwgMjE3LCAxNTMsIDE3OCwgMSwgMjE5LCAyNDQsIDIxNywgMTUzLCAxNzgsIDEsIAotICAgIDI0OSwgNjgsIDE3OCwgMSwgMjUyLCAzOSwgMjUyLCA0MiwgMjUxLCAyMzIsIDI1MywgMTY2LCAxNzgsIDEsIDIxOSwgMjUwLCAKLSAgICAyNTMsIDE2NiwgMTc4LCAxLCAyNDYsIDEyMiwgMTc4LCAxLCAyMjYsIDE3NSwgMTc4LCAxLCAyNDUsIDIwNCwgMjQ1LCAyMDYsIAotICAgIDc2LCAxNzgsIDEsIDIzMSwgMTgzLCAyMzEsIDE5MSwgMTk0LCAxNzgsIDEsIDIzMiwgMTQwLCAxOTQsIDE3OCwgMSwgMjE5LCAKLSAgICAyNDgsIDE5NCwgMTc4LCAxLCAyMzMsIDc5LCAyMzMsIDEyMCwgMjMyLCAxNDksIDE1NiwgMTc4LCAxLCAyNDYsIDEyNCwgCi0gICAgMTc4LCAxLCAyMzUsIDIzNywgMTc4LCAxLCAyMzUsIDIzOCwgMTc4LCAxLCAyNDgsIDIxOCwgMjQ4LCAyMjMsIDI0OSwgNjgsIAotICAgIDE3OCwgMSwgMjI2LCAxNDIsIDI0NSwgNjYsIDc4LCAxNzgsIDEsIDI0NSwgMjM1LCAxNzgsIDEsIDIzNSwgMTk0LCAxNzgsIAotICAgIDEsIDI0OSwgODYsIDE3OCwgMSwgMjUxLCAyNSwgMTc4LCAxLCAyNTAsIDE5NywgMTc4LCAxLCAyMTgsIDE2MywgMTc4LCAxLCAKLSAgICAyMzIsIDEzNywgMTc4LCAxLCAyMTksIDI0MywgMTc4LCAxLCAyNDAsIDExNywgMTc4LCAxLCAyMjQsIDk5LCAxNzgsIDEsIAotICAgIDIxMSwgMTc4LCAxNzgsIDIxOSwgMTU3LCAyMjQsIDE0MywgMTc4LCAyMzAsIDkwLCAyMjQsIDE0MywgMTc4LCAyNDksIDEzOSwgCi0gICAgMjI0LCAxNDMsIDE3OCwgMjU0LCAxNCwgODcsIDE3OCwgMjE1LCA4MiwgODcsIDE3OCwgMjUyLCA1NCwgODcsIDIxNywgODQsIAotICAgIDEsIDYxLCAyMTcsIDg0LCAxLCA3NCwgMjE3LCA4NCwgMSwgNjksIDIxNywgODQsIDEsIDE3NiwgMjE3LCA4NCwgMSwgMjQzLCAKLSAgICAxNDIsIDIxNywgODQsIDEsIDIyOSwgODIsIDIxNywgODQsIDEsIDIxNywgMTA2LCAyMTcsIDg0LCAxLCAyNDgsIDIyOSwgCi0gICAgMjE3LCA4NCwgMSwgMTk4LCAyMTcsIDg0LCAxLCAxOTEsIDIxNywgODQsIDEsIDI1MiwgMTk5LCAyMTcsIDg0LCAxLCAxODYsIAotICAgIDIxNywgODQsIDEsIDE5MiwgMjE3LCA4NCwgMSwgMjMzLCAxNDEsIDIxNywgODQsIDEsIDIxMiwgNjUsIDIxNywgODQsIDEsIAotICAgIDIwNiwgMjE3LCA4NCwgMSwgMTYyLCAyMTcsIDg0LCAyNSwgNSwgNzQsIDIxNywgODQsIDI1LCA1LCA2OSwgMjE3LCA4NCwgNSwgCi0gICAgMjEzLCAxNTIsIDI0MiwgMTQsIDEsIDYxLCAyNDIsIDE0LCAxLCA3NCwgMjQyLCAxNCwgMSwgNjksIDI0MiwgMTQsIDEsIAotICAgIDE3NiwgMjQyLCAxNCwgMSwgMjQzLCAxNDIsIDI0MiwgMTQsIDEsIDIyOSwgODIsIDI0MiwgMTQsIDEsIDIxNywgMTA2LCAKLSAgICAyNDIsIDE0LCAxLCAyNDgsIDIyOSwgMjQyLCAxNCwgMSwgMTk4LCAyNDIsIDE0LCAxLCAxOTEsIDI0MiwgMTQsIDEsIDI1MiwgCi0gICAgMTk5LCAyNDIsIDE0LCAxLCAxODYsIDI0MiwgMTQsIDEsIDE5MiwgMjQyLCAxNCwgMSwgMjA1LCAyNDIsIDE0LCAxLCAyMzMsIAotICAgIDE0MSwgMjQyLCAxNCwgMSwgMjEyLCA2NSwgMjQyLCAxNCwgMSwgMjA2LCAyNDIsIDE0LCAxLCAxNjIsIDI0MiwgMTQsIDI1LCAKLSAgICA1LCA3NCwgMjQyLCAxNCwgMjUsIDUsIDY5LCAyNDIsIDE0LCA1LCAyMjYsIDUzLCAyMjUsIDEyOSwgMjE5LCAxNTcsIDIyNCwgCi0gICAgMTQzLCAyMjUsIDEyOSwgNTIsIDIyNCwgMTQzLCAyNTEsIDEyOCwgMSwgNjEsIDI1MSwgMTI4LCAxLCA3NCwgMjUxLCAxMjgsIAotICAgIDEsIDY5LCAyNTEsIDEyOCwgMSwgMTc2LCAyNTEsIDEyOCwgMSwgMjQzLCAxNDIsIDI1MSwgMTI4LCAxLCAyMjksIDgyLCAKLSAgICAyNTEsIDEyOCwgMSwgMjE3LCAxMDYsIDI1MSwgMTI4LCAxLCAyNDgsIDIyOSwgMjUxLCAxMjgsIDEsIDE5OCwgMjUxLCAxMjgsIAotICAgIDEsIDE5MSwgMjUxLCAxMjgsIDEsIDI1MiwgMTk5LCAyNTEsIDEyOCwgMSwgMTg2LCAyNTEsIDEyOCwgMSwgMTkyLCAyNTEsIAotICAgIDEyOCwgMSwgMjA1LCAyNTEsIDEyOCwgMSwgMjMzLCAxNDEsIDI1MSwgMTI4LCAxLCAyMTIsIDY1LCAyNTEsIDEyOCwgMSwgCi0gICAgMjA2LCAyNTEsIDEyOCwgMSwgMTYyLCAyNTEsIDEyOCwgMjUsIDUsIDc0LCAyNTEsIDEyOCwgMjUsIDUsIDY5LCAyMTcsIDgzLCAKLSAgICAxLCA2MSwgMjE3LCA4MywgMSwgNzQsIDIxNywgODMsIDEsIDY5LCAyMTcsIDgzLCAxLCAxNzYsIDIxNywgODMsIDEsIDI0MywgCi0gICAgMTQyLCAyMTcsIDgzLCAxLCAyMjksIDgyLCAyMTcsIDgzLCAxLCAyMTcsIDEwNiwgMjE3LCA4MywgMSwgMjQ4LCAyMjksIAotICAgIDIxNywgODMsIDEsIDE5OCwgMjE3LCA4MywgMSwgMTkxLCAyMTcsIDgzLCAxLCAyNTIsIDE5OSwgMjE3LCA4MywgMSwgMTg2LCAKLSAgICAyMTcsIDgzLCAxLCAxOTIsIDIxNywgODMsIDEsIDIzMywgMTQxLCAyMTcsIDgzLCAxLCAyMTIsIDY1LCAyMTcsIDgzLCAxLCAKLSAgICAyMDYsIDIxNywgODMsIDI1LCA1LCA3NCwgMjE3LCA4MywgMjUsIDUsIDY5LCA3MCwgMSwgMTc2LCA3MCwgMSwgMjM0LCAxMzgsIAotICAgIDcwLCAxLCAyMzQsIDM0LCA3MCwgMSwgMjM0LCAxMTEsIDcwLCAxLCAyMjksIDksIDcwLCAxLCAyNTEsIDQxLCA3MCwgMSwgCi0gICAgMjUwLCAxNjUsIDcwLCAxLCAyNDksIDI0NiwgNzAsIDEsIDI1MCwgOTQsIDcwLCAxLCAyMjcsIDEzOCwgNzAsIDEsIDI0OCwgCi0gICAgMjI5LCA3MCwgMSwgMjE1LCAxNDUsIDcwLCAxLCAyNDcsIDE1MywgNzAsIDEsIDIxNSwgMTQwLCA3MCwgMSwgMjI4LCA4NSwgCi0gICAgNzAsIDEsIDIxNywgMTA2LCA3MCwgMSwgMjE2LCAyMDksIDcwLCAxLCAxMTIsIDcwLCAxLCAyMTYsIDE1NywgNzAsIDEsIAotICAgIDIyOCwgNzksIDcwLCAxLCAyNTIsIDE5OSwgNzAsIDEsIDIyNSwgMTUwLCA3MCwgMSwgMjI1LCAxOSwgNzAsIDEsIDIyNSwgCi0gICAgMTI0LCA3MCwgMSwgMjMwLCAxNjYsIDcwLCAxLCAyMTAsIDI0NCwgNzAsIDEsIDIyMiwgMjEzLCA3MCwgMSwgMjMyLCAxNjIsIAotICAgIDcwLCAxLCAyMTMsIDEzOCwgNzAsIDEsIDIyMCwgMTA0LCA3MCwgMSwgMjE4LCAxODYsIDcwLCAxLCAyMDYsIDcwLCAxLCAKLSAgICAxNjIsIDcwLCAxLCAyMzMsIDE0MSwgNzAsIDEsIDIyNCwgOTEsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNzcsIDcwLCAyMzUsIAotICAgIDI1MCwgMjUsIDIyNCwgOTAsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNTYsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNTEsIAotICAgIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgMzMsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNSwgNzAsIDIzNSwgMjUwLCAyNSwgCi0gICAgMjIzLCAyNDksIDcwLCAyMzUsIDI1MCwgMjUsIDIyMywgMjQ4LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjIsIDEwMiwgNzAsIAotICAgIDIzNSwgMjUwLCAyNSwgMjIyLCA5NSwgNzAsIDIzNSwgMjUwLCAyNSwgMjMyLCA2NywgNzAsIDIzNSwgMjUwLCAyNSwgMjMyLCAKLSAgICA1NywgNzAsIDIzNSwgMjUwLCAyNSwgMjI0LCA3MiwgNzAsIDIzNSwgMjUwLCAyNSwgMjI0LCA4MywgNzAsIDIzNSwgMjUwLCAKLSAgICAyNSwgMjI0LCA0MSwgMjE1LCA0OSwgMTExLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDQxLCAyMTUsIDQ5LCAxMDUsIDcwLCAKLSAgICAyMzUsIDI1MCwgMjUsIDIyNCwgNzMsIDcwLCAyNSwgMjM1LCAyMzYsIDI1NCwgNTMsIDcwLCAyNSwgMjM1LCAyMzYsIDI1NSwgCi0gICAgODIsIDcwLCAyNSwgNSwgMjU1LCA4MiwgNzAsIDI1LCA1LCA3NCwgNzAsIDI1LCA1LCAyMzYsIDQwLCA3MCwgMjUsIDUsIAotICAgIDIxMSwgMTE3LCA3MCwgMjUsIDUsIDIxMCwgMTY5LCA3MCwgMjUsIDUsIDY5LCA3MCwgMjUsIDUsIDIxNCwgMTE4LCA3MCwgCi0gICAgMjUsIDUsIDIxNCwgMjI5LCA3MCwgMjUsIDUsIDIyNiwgMjM4LCA3MCwgMjUsIDUsIDE5MiwgNzAsIDI1LCA1LCAyMzYsIDY3LCAKLSAgICA3MCwgMjUsIDUsIDc2LCA3MCwgMjUsIDUsIDI1NCwgMjUyLCA3MCwgMjUsIDUsIDI1NCwgMjEwLCA3MCwgMjUsIDUsIDIyNiwgCi0gICAgMTg3LCA3MCwgMjUsIDUsIDI1MywgMjAwLCA3MCwgNSwgMjI4LCAyMTEsIDcwLCA1LCAyMjMsIDEyOSwgNzAsIDUsIDIxMCwgCi0gICAgMTgwLCA3MCwgNSwgMjMwLCA1NywgNzAsIDUsIDIxNSwgMjE0LCA3MCwgNSwgMjUyLCAxNTEsIDcwLCA1LCAyMjIsIDIwOCwgCi0gICAgNzAsIDUsIDIxNiwgNDEsIDcwLCA1LCAyMzQsIDI0NywgNzAsIDUsIDI1NCwgMjEyLCA3MCwgNSwgMjIxLCAyNDYsIDIyMSwgCi0gICAgMjQwLCA3MCwgNSwgMjEzLCAxNDksIDcwLCA1LCAyNDksIDI0MCwgNzAsIDUsIDI1MiwgMTI1LCA3MCwgNSwgMjM0LCAxMzEsIAotICAgIDcwLCA1LCAyNTIsIDE0NSwgNzAsIDUsIDI1MSwgMTcsIDIyNSwgNzUsIDIzMywgMTkzLCA3MCwgNSwgMjMzLCAzNiwgMjE2LCAKLSAgICAxOCwgNzAsIDUsIDI1MiwgMjgsIDcwLCA1LCAyMjUsIDEyNiwgMjMwLCAxMDQsIDcwLCA1LCAyMzQsIDE1LCA3MCwgMjQ5LCAKLSAgICAxMDYsIDE2LCAyMjMsIDMxLCA3MCwgNSwgMjUzLCAxODIsIDcwLCA1LCAyNTMsIDIwMywgNzAsIDIxLCAyMTAsIDg2LCA3MCwgCi0gICAgMjEsIDExMSwgNzAsIDIxLCAxMDUsIDcwLCAyMSwgMTU4LCA3MCwgMjEsIDE2MSwgNzAsIDIxLCAxOTAsIDcwLCAyMSwgMTk1LCAKLSAgICA3MCwgMjEsIDE5OSwgNzAsIDIxLCAxOTYsIDcwLCAyMSwgMjAxLCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMTksIAotICAgIDQ1LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMzAsIDc2LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjUsIAotICAgIDc0LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyNTIsIDU3LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyNTEsIAotICAgIDExMSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI0LCAyMTgsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgCi0gICAgMjEyLCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIDIxMCwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI0LCAKLSAgICAyMTYsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgMjE0LCA4MywgMjUxLCAyNDQsIDgzLCAyNDUsIDE3MSwgODMsIAotICAgIDI0OSwgMjI3LCA4MywgMjQzLCAyMzYsIDIxOCwgMTMxLCA4MywgMjQ5LCAyMzQsIDgzLCAyNDQsIDE5LCAyNDcsIDEyNiwgCi0gICAgODMsIDIxNiwgNDAsIDIxOSwgNTQsIDI0MCwgMTc1LCA4MywgMjE5LCAxOTIsIDMsIDI1MSwgMTgwLCAyMzEsIDE1OSwgODMsIAotICAgIDIzMSwgMTg4LCAyNDksIDIyNywgODMsIDIzMSwgMTg4LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDgzLCAyMjgsIDE5NiwgODMsIAotICAgIDI0NCwgNSwgNDUsIDIyMSwgMTU5LCAxMTEsIDgzLCAyNDQsIDUsIDQ1LCAyMjEsIDE1OSwgMTA1LCA4MywgMjQ0LCA1LCA0NSwgCi0gICAgMjIxLCAxNTksIDE1OCwgODMsIDI1LCAyMjAsIDEzOSwgODMsIDIxLCAyMTAsIDg2LCA4MywgMjEsIDExMSwgODMsIDIxLCAKLSAgICAxMDUsIDgzLCAyMSwgMTU4LCA4MywgMjEsIDE2MSwgODMsIDIxLCAxOTAsIDgzLCAyMSwgMTk1LCA4MywgMjEsIDE5OSwgODMsIAotICAgIDIxLCAxOTYsIDgzLCAyMSwgMjAxLCA4MywgMSwgNjEsIDgzLCAxLCA3NiwgODMsIDEsIDc0LCA4MywgMSwgNzgsIDgzLCAxLCAKLSAgICA2OSwgODMsIDEsIDIyNiwgMjM4LCA4MywgMSwgMjE0LCAyMTQsIDgzLCAxLCAyNDUsIDIxNywgODMsIDEsIDE5OCwgODMsIDEsIAotICAgIDI1NCwgMTIzLCA4MywgMSwgMjUyLCAxOTksIDgzLCAxLCAxOTEsIDgzLCAxLCAyMjQsIDkxLCA4MywgMSwgMjQzLCAxNDIsIAotICAgIDgzLCAxLCAxODYsIDgzLCAxLCAyMzMsIDE0MSwgODMsIDEsIDIwNiwgODMsIDEsIDIyMCwgMTA0LCA4MywgMSwgMjE3LCAKLSAgICAxMDYsIDgzLCAxLCAyNDgsIDIyOSwgODMsIDEsIDI1MCwgMTY1LCA4MywgMSwgMjM1LCAxNDcsIDgzLCAxLCAxOTIsIDgzLCAKLSAgICAxLCAyMDUsIDgzLCAxLCAyMTIsIDY1LCA4MywgMSwgMjQ0LCAyMDQsIDgzLCAxLCAxNzYsIDgzLCAxLCAyMzQsIDEzOCwgODMsIAotICAgIDEsIDIxNSwgMTg0LCA4MywgMSwgMjEwLCAxMTYsIDgzLCAxLCAyNDIsIDUzLCA4MywgMSwgMjEwLCAxNiwgODMsIDEsIDIzMywgCi0gICAgNCwgODMsIDEsIDIxMCwgNjksIDgzLCAxLCAyNTAsIDExOCwgODMsIDEsIDIxNiwgNDAsIDIwMCwgMjUsIDUwLCA4MywgMSwgCi0gICAgMjE2LCA0MCwgNzYsIDgzLCAxLCAyMTYsIDQwLCA3NCwgODMsIDEsIDIxNiwgNDAsIDc4LCA4MywgMSwgMjE2LCA0MCwgNjksIAotICAgIDgzLCAxLCAyMTYsIDQwLCAyMjYsIDIzOCwgODMsIDEsIDIxNiwgNDAsIDIxNCwgMjE0LCA4MywgMSwgMjE2LCA0MCwgMjU0LCAKLSAgICAxMjMsIDgzLCAxLCAyMTYsIDQwLCAyNTIsIDE5OSwgODMsIDEsIDIxNiwgNDAsIDE5MSwgODMsIDEsIDIxNiwgNDAsIDIyNCwgCi0gICAgOTEsIDgzLCAxLCAyMTYsIDQwLCAyNDMsIDE0MiwgODMsIDEsIDIxNiwgNDAsIDE4NiwgODMsIDEsIDIxNiwgNDAsIDIxNywgCi0gICAgMTA2LCA4MywgMSwgMjE2LCA0MCwgMjQ4LCAyMjksIDgzLCAxLCAyMTYsIDQwLCAyNTAsIDE2NSwgODMsIDEsIDIxNiwgNDAsIAotICAgIDIzNSwgMTQ3LCA4MywgMSwgMjE2LCA0MCwgMjE1LCAxODQsIDgzLCAxLCAyMTYsIDQwLCAxOTIsIDgzLCAxLCAyMTYsIDQwLCAKLSAgICAyMTIsIDY1LCA4MywgMSwgMjE2LCA0MCwgMTc2LCA4MywgMSwgMjE2LCA0MCwgMjQzLCAxMzksIDgzLCAxLCAyMTYsIDQwLCAKLSAgICAyNDIsIDUzLCA4MywgMSwgMjE2LCA0MCwgMjM1LCAxMTMsIDgzLCAxLCAyMTYsIDQwLCAyMjgsIDIzNiwgODMsIDEsIDIxNiwgCi0gICAgNDAsIDI0NiwgNDYsIDgzLCAxLCAyMTksIDE5MiwgNzYsIDgzLCAxLCAyMTksIDE5MiwgNzQsIDgzLCAxLCAyMTksIDE5MiwgCi0gICAgMjM1LCAxNTgsIDgzLCAxLCAyMTksIDE5MiwgMjE0LCAyMTQsIDgzLCAxLCAyMTksIDE5MiwgNjksIDgzLCAxLCAyMTksIAotICAgIDE5MiwgMjU0LCAxMjMsIDgzLCAxLCAyMTksIDE5MiwgMTc2LCA4MywgMSwgMjE5LCAxOTIsIDI0MywgMTQyLCA4MywgMSwgCi0gICAgMjE5LCAxOTIsIDE2MiwgODMsIDEsIDIxOSwgMTkyLCAxOTEsIDgzLCAxLCAyMTksIDE5MiwgMjIwLCAxMDQsIDgzLCAxLCAKLSAgICAyMTksIDE5MiwgMjE3LCAxMDYsIDgzLCAxLCAyMTksIDE5MiwgMjQ4LCAyMjksIDgzLCAxLCAyMTksIDE5MiwgMjM1LCAxNDcsIAotICAgIDgzLCAxLCAyMTksIDE5MiwgMjQ0LCAyMDQsIDgzLCAxLCAyMTksIDE5MiwgMjQzLCAxMzksIDgzLCAxLCAyMTksIDE5MiwgCi0gICAgMjQyLCA1MywgODMsIDEsIDIxOSwgMTkyLCAyMTUsIDE4NCwgODMsIDEsIDIxOSwgMTkyLCAyMTAsIDExNiwgODMsIDEsIAotICAgIDIxOSwgMTkyLCAyMjMsIDE4NywgODMsIDEsIDIxOSwgMTkyLCAyNTAsIDE2NSwgODMsIDEsIDIxOSwgMTkyLCAyMTAsIDgyLCAKLSAgICA4MywgMSwgMjMxLCAxODgsIDc0LCA4MywgMSwgMjMxLCAxODgsIDE3NiwgODMsIDEsIDIzMSwgMTg4LCAyMDUsIDgzLCAxLCAKLSAgICAyMzEsIDE4OCwgMjQ0LCAyMDQsIDgzLCAxLCAyMzEsIDE4OCwgMjEwLCA4MiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMjU0LCA4NCwgMTExLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMTMsIDE0OCwgMTExLCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNDgsIDE5NCwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE3MSwgCi0gICAgMjQzLCAxMjMsIDIzNSwgMjAwLCAyMTQsIDIyNCwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUyLCAxNjMsIDgzLCAxLCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDEzNCwgMjUyLCAxNjMsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDYxLCA4MywgMSwgCi0gICAgMjU0LCAxNzEsIDI0MywgMTIzLCA3NCwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMTc2LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyMjksIDgyLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNTEsIDQxLCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyMTUsIDE1NywgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjE1LCAxNDUsIDgzLCAxLCAyNTQsIDE3MSwgCi0gICAgMjQzLCAxMjMsIDI0OCwgMTQzLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMjgsIDExNSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjE3LCAxMDYsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI0OCwgMjI5LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAxOTEsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIyNSwgMTUwLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgCi0gICAgMTIzLCAyMTgsIDIyNSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjEwLCA4MiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIAotICAgIDEyMywgMjEwLCAxMTYsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI1NCwgMjE4LCA4MywgMSwgMjE2LCA0MCwgMjU0LCAKLSAgICAxNzEsIDI0MywgMTIzLCAyMTcsIDEwNiwgODMsIDEsIDIxNiwgNDAsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjEwLCA4MiwgODMsIAotICAgIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI0MywgMCwgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAKLSAgICAxMjMsIDIyOSwgODIsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNTEsIDQxLCA4MywgMSwgMjMxLCAKLSAgICAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjM1LCAxMjAsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAKLSAgICAyMTUsIDE1NywgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI0OCwgMTI3LCA4MywgMSwgMjMxLCAxODgsIAotICAgIDI1NCwgMTcxLCAyNDMsIDEyMywgMjE3LCAxMDYsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIAotICAgIDMzLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjE4LCAyMjUsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAKLSAgICAxNzEsIDI0MywgMTIzLCAyNDksIDgwLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjEwLCA4MiwgODMsIAotICAgIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAKLSAgICAxNjMsIDY5LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAxNjMsIDE5MiwgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgCi0gICAgMjQzLCAxMjMsIDI1MiwgMjYsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI0OCwgMjE5LCA4MywgMSwgMjMxLCAxODgsIAotICAgIDI1NCwgMTcxLCAyNDMsIDEyMywgMjMzLCA0LCAxOCwgMTksIDIyNiwgMTEzLCAxOCwgMTksIDI1MywgMTc1LCAxOCwgMTksIAotICAgIDI1NSwgMzcsIDE4LCAxOSwgMjEyLCAyNSwgMTgsIDE5LCAyMjQsIDIyNCwgMTgsIDE5LCAyMjUsIDIzMywgMTgsIDE5LCAKLSAgICAyMjQsIDEwOCwgMTgsIDE5LCAyMTcsIDMyLCAxOCwgMTksIDIzNCwgMTk1LCAxOCwgMTksIDIzMywgMTg1LCAxOCwgMTksIAotICAgIDIzMSwgMTM3LCAxOCwgMTksIDIyOCwgNDIsIDE4LCAxOSwgMjI5LCAxODYsIDE4LCAxOSwgMjMzLCA3NCwgMTgsIDE5LCAKLSAgICAyMTksIDI0LCAxOCwgMTksIDIyMSwgMjEzLCAxOCwgMTksIDIxOSwgMjM0LCAxOCwgMTksIDIyMCwgNjgsIDE4LCAxOSwgCi0gICAgMjE5LCAyMDMsIDE4LCAxOSwgMjEwLCAyMjAsIDE4LCAxOSwgMjExLCA1MiwgMTgsIDE5LCAyMjMsIDEzNywgMTgsIDE5LCAKLSAgICAyMjcsIDE3NSwgMTgsIDE5LCAyMjYsIDIyMCwgMjI3LCAxNzUsIDE4LCAxOSwgMjI3LCAxNzQsIDE4LCAxOSwgMjI2LCAyMjAsIAotICAgIDIyNywgMTc0LCAxOCwgMTksIDIyNywgMTczLCAxOCwgMTksIDIyNiwgMjIwLCAyMjcsIDE3MywgMTgsIDE5LCAyMjcsIDE3MiwgCi0gICAgMTgsIDE5LCAyMjYsIDIyMCwgMjI3LCAxNzIsIDE4LCAxOSwgMjIyLCAxMDcsIDE4LCAxOSwgMjIyLCAxMDYsIDE4LCAxOSwgCi0gICAgMjIyLCAxMDUsIDE4LCAxOSwgMjIyLCAxMDQsIDE4LCAxOSwgMjIyLCAxMDMsIDE4LCAxOSwgMjIyLCAxMTEsIDE4LCAxOSwgCi0gICAgMjI2LCAyMjAsIDIyNiwgMTA5LCAxOCwgMTksIDIyNiwgMjIwLCAyMTcsIDE1MywgMTgsIDE5LCAyMjYsIDIyMCwgMjM1LCAKLSAgICAyOSwgMTgsIDE5LCAyMjYsIDIyMCwgMjUxLCA3NCwgMTgsIDE5LCAyMjYsIDIyMCwgMTk0LCAxOCwgMTksIDIyNiwgMjIwLCAKLSAgICAyMzAsIDMwLCAxOCwgMTksIDIyNiwgMjIwLCAyMjIsIDkzLCAxOCwgMTksIDIyNiwgMjIwLCAyMjAsIDEwNiwgMTgsIDE5LCAKLSAgICAyNDUsIDIyNywgMjEyLCA5OCwgMTgsIDE5LCAyMTIsIDcsIDIxMiwgOTgsIDE4LCAxOSwgNDAsIDQsIDIyMiwgMjM2LCAxOCwgCi0gICAgMTksIDQwLCAyMjMsIDE2MCwgMjQ3LCAxMjgsIDE4LCAxOSwgMjIzLCAyMjYsIDIyMiwgMTA4LCAxOCwgMTksIDE1OSwgMjMyLCAKLSAgICAxMzMsIDE4LCAxOSwgMTU5LCAyMzMsIDE0MCwgMTgsIDE5LCAyMTYsIDEyNywgMTgsIDE5LCAyMTYsIDEyOSwgMTgsIDE5LCAKLSAgICAyMTUsIDEzNywgMTgsIDE5LCAyMTUsIDEzOSwgMTgsIDE5LCAyMTUsIDE0NCwgMTgsIDE5LCAyMTYsIDUwLCAxOCwgMTksIAotICAgIDIxNiwgNTIsIDE4LCAxOSwgMjIxLCAyMTEsIDIxOSwgMjA4LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDMsIDE4LCAxOSwgCi0gICAgMjIxLCAyMTEsIDI0MSwgNjAsIDE4LCAxOSwgNzMsIDI0MiwgODAsIDE4LCAxOSwgNzMsIDI0OCwgNjAsIDI0MywgNjIsIDE4LCAKLSAgICAxOSwgNzMsIDI0MywgMTM5LCAxOCwgMTksIDczLCAyNDIsIDg1LCAxOCwgMTksIDIyMSwgMjExLCAyMzUsIDM5LCAxOCwgMTksIAotICAgIDczLCAyMzUsIDM3LCAxOCwgMTksIDI1MiwgNzYsIDI0OCwgNjAsIDE1NiwgMTgsIDE5LCAyNTIsIDc2LCAyNDgsIDYwLCAKLSAgICAxNTMsIDE4LCAxOSwgNzMsIDI0OCwgNTUsIDIyMiwgOTMsIDIzMiwgMjI5LCAyMTMsIDEyMiwgMjMzLCAxNiwgMjMyLCAyMjksIAotICAgIDEsIDE3NiwgMjMyLCAyMjksIDEsIDIzNCwgMTM4LCAyMzIsIDIyOSwgMSwgMjQzLCAxNDIsIDIzMiwgMjI5LCAxLCAyNDMsIAotICAgIDAsIDIzMiwgMjI5LCAxLCAyMjksIDgyLCAyMzIsIDIyOSwgMSwgMjUxLCA0MSwgMjMyLCAyMjksIDEsIDI1MCwgMTY1LCAKLSAgICAyMzIsIDIyOSwgMSwgMjM1LCAxNDcsIDIzMiwgMjI5LCAxLCAyMzUsIDEyMCwgMjMyLCAyMjksIDEsIDIxMSwgNzEsIDIzMiwgCi0gICAgMjI5LCAxLCAyMTcsIDEwNiwgMjMyLCAyMjksIDEsIDIxNiwgMjA5LCAyMzIsIDIyOSwgMSwgMjQ4LCAyMjksIDIzMiwgMjI5LCAKLSAgICAxLCAyNDgsIDMzLCAyMzIsIDIyOSwgMSwgMTk4LCAyMzIsIDIyOSwgMSwgMTkxLCAyMzIsIDIyOSwgMSwgMjI1LCAxNTAsIAotICAgIDIzMiwgMjI5LCAxLCAyNTIsIDE5OSwgMjMyLCAyMjksIDEsIDI1MiwgMjYsIDIzMiwgMjI5LCAxLCAxODYsIDIzMiwgMjI5LCAKLSAgICAxLCAxOTIsIDIzMiwgMjI5LCAxLCAyMDUsIDIzMiwgMjI5LCAxLCAyMzMsIDE0MSwgMjMyLCAyMjksIDEsIDIxMiwgNjUsIAotICAgIDIzMiwgMjI5LCAxLCAyMjAsIDEwNCwgMjMyLCAyMjksIDEsIDIxOCwgMjI1LCAyMzIsIDIyOSwgMSwgMjA2LCAyMzIsIDIyOSwgCi0gICAgMSwgMTYyLCAyMzIsIDIyOSwgMjUsIDUsIDYxLCAyMzIsIDIyOSwgMjUsIDUsIDc0LCAyMzIsIDIyOSwgMjUsIDUsIDY5LCAKLSAgICAyMzIsIDIyOSwgMjUsIDUsIDI0NSwgMjE3LCAyMzIsIDIyOSwgMjUsIDUsIDI1NCwgMjEwLCAyMzIsIDIyOSwgMjUsIDUsIAotICAgIDIyNiwgMTg3LCAyMzIsIDIyOSwgMjUsIDUsIDI1MywgMjAwLCAyMzIsIDIyOSwgMjUsIDUsIDc2LCAyMzIsIDIyOSwgMjUsIAotICAgIDUsIDc4LCAyMzIsIDIyOSwgMjE4LCA3NCwgMSwgMTkyLCAyMzIsIDIyOSwgMjE4LCA3NCwgMSwgMjA1LCAyMzIsIDIyOSwgCi0gICAgMjE4LCA3NCwgMSwgMjEyLCA2NSwgMjMyLCAyMjksIDQsIDEsIDE3NiwgMjMyLCAyMjksIDQsIDEsIDIyOSwgODIsIDIzMiwgCi0gICAgMjI5LCA0LCAxLCAyNTQsIDgzLCAyMzIsIDIyOSwgNCwgMSwgMjE3LCAxMDYsIDIzMiwgMjI5LCA0LCAxLCAxOTgsIDIzMiwgCi0gICAgMjI5LCA0LCAxLCAxOTEsIDIzMiwgMjI5LCA0LCAxLCAxODYsIDIzMiwgMjI5LCA0LCAxLCAyMDUsIDIzMiwgMjI5LCA0LCAxLCAKLSAgICAyMzMsIDE0MSwgMjMyLCAyMjksIDUsIDIzMCwgOTQsIDIzMiwgMjI5LCA1LCAyMzQsIDE3NywgMjMyLCAyMjksIDUsIDIyMiwgCi0gICAgMzQsIDIzMiwgMjI5LCA1LCAyMzIsIDEzMywgMjMyLCAyMjksIDI0NSwgMzksIDc5LCAyMzIsIDIyOSwgMjI0LCAxNiwgNzksIAotICAgIDIzMiwgMjI5LCAyMSwgMjEwLCA4NiwgMjMyLCAyMjksIDIxLCAxMTEsIDIzMiwgMjI5LCAyMSwgMTA1LCAyMzIsIDIyOSwgCi0gICAgMjEsIDE1OCwgMjMyLCAyMjksIDIxLCAxNjEsIDIzMiwgMjI5LCAyMSwgMTkwLCAyMzIsIDIyOSwgMjEsIDE5NSwgMjMyLCAKLSAgICAyMjksIDIxLCAxOTksIDIzMiwgMjI5LCAyMSwgMTk2LCAyMzIsIDIyOSwgMjEsIDIwMSwgMzksIDIzMywgNjUsIDEsIDE3NiwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIxMSwgMTY1LCAzOSwgMjMzLCA2NSwgMSwgMjI5LCA4MiwgMzksIDIzMywgNjUsIDEsIDIxNSwgCi0gICAgMTg0LCAzOSwgMjMzLCA2NSwgMSwgMjA2LCAzOSwgMjMzLCA2NSwgMSwgMTkyLCAzOSwgMjMzLCA2NSwgMSwgMjE3LCAxMDYsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTYsIDIwOSwgMzksIDIzMywgNjUsIDEsIDIzMywgMTQxLCAzOSwgMjMzLCA2NSwgMSwgMTkxLCAKLSAgICAzOSwgMjMzLCA2NSwgMSwgMjI1LCAxNTAsIDM5LCAyMzMsIDY1LCAxLCAxODYsIDM5LCAyMzMsIDY1LCAxLCAyNDQsIDIwNCwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIxNCwgMjcsIDM5LCAyMzMsIDY1LCAxLCAxNjIsIDM5LCAyMzMsIDY1LCAxLCAyMjQsIDkxLCAKLSAgICAzOSwgMjMzLCA2NSwgMSwgMjM0LCAxMzgsIDM5LCAyMzMsIDY1LCAxLCAyMTUsIDE3NiwgMzksIDIzMywgNjUsIDEsIDE5OCwgCi0gICAgMzksIDIzMywgNjUsIDEsIDYxLCAzOSwgMjMzLCA2NSwgMSwgNzQsIDM5LCAyMzMsIDY1LCAxLCAyNDUsIDIxNywgMzksIAotICAgIDIzMywgNjUsIDEsIDI0NSwgMjA1LCAzOSwgMjMzLCA2NSwgMSwgNjksIDM5LCAyMzMsIDY1LCAxLCAyMjYsIDE4NywgMzksIAotICAgIDIzMywgNjUsIDEsIDc4LCAzOSwgMjMzLCA2NSwgMSwgMjE0LCAyMTQsIDM5LCAyMzMsIDY1LCAxLCA3NiwgMzksIDIzMywgCi0gICAgNjUsIDEsIDI1MywgMTk4LCAzOSwgMjMzLCA2NSwgMSwgMjU0LCAyMTAsIDM5LCAyMzMsIDY1LCAxLCAyMTYsIDI5LCAzOSwgCi0gICAgMjMzLCA2NSwgMSwgMjE2LCAyOCwgMzksIDIzMywgNjUsIDEsIDIxNiwgMjcsIDM5LCAyMzMsIDY1LCAxLCAyMTYsIDI2LCAKLSAgICAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyNSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyNCwgOTEsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgMTIxLCAyMjQsIDkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTc2LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjExLCAxNjUsIAotICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjksIDgyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTc2LCAxNjYsIDM5LCAxNzMsIAotICAgIDEsIDEyMSwgMjExLCAxNjUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMjksIDgyLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgCi0gICAgMjE1LCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMDYsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTIsIDE2NiwgMzksIAotICAgIDE3MywgMSwgMTIxLCAyMTUsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAotICAgIDE5MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNywgMTA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE2LCAyMDksIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAxOTgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTcsIDEwNiwgMTY2LCAzOSwgMTczLCAxLCAKLSAgICAxMjEsIDIxNiwgMjA5LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTk4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTkxLCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMjI1LCAxNTAsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxODYsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgMTIxLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMjUsIDE1MCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE4NiwgMTY2LCAKLSAgICAzOSwgMTczLCAxLCAxMjUsIDI0NCwgMjA0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjUsIDIzMywgMTQxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjQ0LCAyMDQsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKLSAgICAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxNDEsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNjIsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAyNDgsIDIyOSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI1MiwgMTk5LCAxNjYsIDM5LCAxNzMsIAotICAgIDEsIDEyMSwgMTYyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjQ4LCAyMjksIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNTIsIAotICAgIDE5OSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIzMywgMTkwLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjExLCAxMzgsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTIxLCAyMzMsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxMSwgMTM4LCAxNjYsIDM5LCAxNzMsIAotICAgIDEsIDEyNSwgMjE4LCA4MywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxOCwgODMsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1LCAKLSAgICAyMTksIDI0MSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU1LCA4MiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjM2LCA0MCwgCi0gICAgMTY2LCAzOSwgMTczLCAyNSwgNSwgNjksIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMTE4LCAxNjYsIDM5LCAxNzMsIDI1LCAKLSAgICA1LCA3NiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU0LCAyNTIsIDE2NiwgMzksIDE3MywgMjUsIDUsIDc4LCAxNjYsIDM5LCAKLSAgICAxNzMsIDI1LCA1LCAyMjcsIDQsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMjE0LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAKLSAgICAyNTMsIDE3NSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjU1LCAzNywgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjE0LCAxMTEsIAotICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNiwgMTEzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjcsIDEsIDE2NiwgMzksIDE3MywgCi0gICAgMjUsIDUsIDIxNCwgMjEwLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMzUsIDE1OCwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjE0LCAKLSAgICAxMDUsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIyOSwgODQsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIzMCwgMzAsIDE2NiwgMzksIAotICAgIDE3MywgMSwgNDAsIDE5NCwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjM1LCAyOSwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjQ5LCAKLSAgICA2OCwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjUzLCAxNjYsIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE2MywgMTY2LCAzOSwgCi0gICAgMTczLCAxMzgsIDIzMSwgMTYyLCAxNjYsIDM5LCAxNzMsIDIxLCAyMTAsIDg2LCAxNjYsIDM5LCAxNzMsIDIxLCAxMTEsIAotICAgIDE2NiwgMzksIDE3MywgMjEsIDEwNSwgMTY2LCAzOSwgMTczLCAyMSwgMTU4LCAxNjYsIDM5LCAxNzMsIDIxLCAxNjEsIDE2NiwgCi0gICAgMzksIDE3MywgMjEsIDE5MCwgMTY2LCAzOSwgMTczLCAyMSwgMTk1LCAxNjYsIDM5LCAxNzMsIDIxLCAxOTksIDE2NiwgMzksIAotICAgIDE3MywgMjEsIDE5NiwgMTY2LCAzOSwgMTczLCAyMSwgMjAxLCAxNjYsIDM5LCAxNzMsIDg5LCAyMSwgMTExLCAxNjYsIDM5LCAKLSAgICAxNzMsIDUsIDIzMywgMTI2LCAxNjYsIDM5LCAxNzMsIDUsIDIzMywgMTI1LCA3MCwgMTYsIDIyNSwgMjQwLCA3MCwgMTYsIAotICAgIDIzMCwgNzcsIDIzNCwgMzEsIDcwLCAxNiwgMjI1LCA3NSwgMjM0LCAzMSwgNzAsIDE2LCAyNTIsIDU4LCAyMzQsIDMxLCA3MCwgCi0gICAgMTYsIDI1MSwgMTEyLCAyMzQsIDMxLCA3MCwgMTYsIDIyNCwgMjE5LCAyMzQsIDMxLCA3MCwgMTYsIDIyNCwgMjEzLCAyMzQsIAotICAgIDMxLCA3MCwgMTYsIDIyNCwgMjExLCAyMzQsIDMxLCA3MCwgMTYsIDIyNCwgMjE3LCAyMzQsIDMxLCA3MCwgMTYsIDIyNCwgCi0gICAgMjE1LCAyMzQsIDMxLCA3MCwgMTYsIDI0OCwgMTgxLCAyMzQsIDMxLCA3MCwgMTYsIDI0OCwgMTc3LCAyMzQsIDMxLCA3MCwgCi0gICAgMTYsIDI0OCwgMTc2LCAyMzQsIDMxLCA3MCwgMTYsIDI0OCwgMTc5LCAyMzQsIDMxLCA3MCwgMTYsIDI0OCwgMTc4LCAyMzQsIAotICAgIDMxLCA3MCwgMTYsIDI0OCwgMTc1LCAyMzQsIDMxLCA3MCwgMTYsIDIxNSwgODcsIDcwLCAxNiwgMjMwLCA3NywgMjIyLCAKLSAgICAyMDcsIDcwLCAxNiwgMjI1LCA3NSwgMjIyLCAyMDcsIDcwLCAxNiwgMjUyLCA1OCwgMjIyLCAyMDcsIDcwLCAxNiwgMjUxLCAKLSAgICAxMTIsIDIyMiwgMjA3LCA3MCwgMTYsIDIyNCwgMjE5LCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxMywgMjIyLCAyMDcsIAotICAgIDcwLCAxNiwgMjI0LCAyMTEsIDIyMiwgMjA3LCA3MCwgMTYsIDIyNCwgMjE3LCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxNSwgCi0gICAgMjIyLCAyMDcsIDcwLCAxNiwgMjQ4LCAxODEsIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTc3LCAyMjIsIDIwNywgNzAsIDE2LCAKLSAgICAyNDgsIDE3NiwgMjIyLCAyMDcsIDcwLCAxNiwgMjQ4LCAxNzksIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTc4LCAyMjIsIAotICAgIDIwNywgNzAsIDE2LCAyNDgsIDE3NSwgMjIyLCAyMDcsIDI1MSwgMTI5LCAxLCAxNzYsIDI1MSwgMTI5LCAxLCAyNDMsIDE0MiwgCi0gICAgMjUxLCAxMjksIDEsIDIyOSwgODIsIDI1MSwgMTI5LCAxLCAyMjksIDI3LCAyNTEsIDEyOSwgMSwgMTkxLCAyNTEsIDEyOSwgCi0gICAgMSwgMjUyLCAxOTksIDI1MSwgMTI5LCAxLCAxODYsIDI1MSwgMTI5LCAxLCAyMzAsIDExMCwgMjUxLCAxMjksIDEsIDIxNywgCi0gICAgMTA2LCAyNTEsIDEyOSwgMSwgMjQ4LCAyMjksIDI1MSwgMTI5LCAxLCAxOTgsIDI1MSwgMTI5LCAxLCAyMjgsIDQxLCAyNTEsIAotICAgIDEyOSwgMSwgMjUxLCA0MSwgMjUxLCAxMjksIDEsIDIzNSwgMTQ3LCAyNTEsIDEyOSwgMSwgMjI3LCAxNjksIDI1MSwgMTI5LCAKLSAgICAxLCAyMjcsIDE2MiwgMjUxLCAxMjksIDEsIDE5MiwgMjUxLCAxMjksIDEsIDIwNSwgMjUxLCAxMjksIDEsIDIzMywgMTQxLCAKLSAgICAyNTEsIDEyOSwgMSwgMjE0LCAyNywgMjUxLCAxMjksIDEsIDIwNiwgMjUxLCAxMjksIDEsIDYxLCAyNTEsIDEyOSwgMSwgCi0gICAgMTYyLCAyNTEsIDEyOSwgMjUsIDUsIDc0LCAyNTEsIDEyOSwgMjUsIDUsIDY5LCAyNTEsIDEyOSwgMjUsIDUsIDc2LCAyNTEsIAotICAgIDEyOSwgMjUsIDUsIDc4LCAyNTEsIDEyOSwgMjUsIDUsIDI1NCwgMjUyLCAyNTEsIDEyOSwgMjI2LCA2NCwgMjUxLCAxMjksIAotICAgIDI0NSwgMTUxLCA2NCwgMjIxLCAxNzQsIDM5LCA4OSwgMSwgMTI1LCAxNzYsIDM5LCA4OSwgMSwgMTI1LCAyMzQsIDEzOCwgCi0gICAgMzksIDg5LCAxLCAxMjUsIDIzMywgMTc3LCAzOSwgODksIDEsIDEyMSwgMTc2LCAzOSwgODksIDEsIDEyMSwgMjMzLCAxNzcsIAotICAgIDM5LCA4OSwgMSwgMTIxLCAyMzQsIDEzOCwgMzksIDg5LCAxLCAyMjksIDgyLCAzOSwgODksIDEsIDEyNSwgMjUxLCA0MSwgCi0gICAgMzksIDg5LCAxLCAxMjUsIDI1MCwgMTY1LCAzOSwgODksIDEsIDEyMSwgMjUxLCA0MSwgMzksIDg5LCAxLCAxMjEsIDIwNiwgCi0gICAgMzksIDg5LCAxLCAxMjEsIDI1MCwgMTY1LCAzOSwgODksIDEsIDIyNywgMTY5LCAzOSwgODksIDEsIDIyMywgMTQzLCAzOSwgCi0gICAgODksIDEsIDEyNSwgMjIzLCAxNDEsIDM5LCA4OSwgMSwgMjQ4LCAyMjksIDM5LCA4OSwgMSwgMTIxLCAyMjMsIDE0MSwgMzksIAotICAgIDg5LCAxLCAyMjMsIDE1MiwgMzksIDg5LCAxLCAxMjUsIDIxNywgMTA2LCAzOSwgODksIDEsIDEyNSwgMjE2LCAyMDksIDM5LCAKLSAgICA4OSwgMSwgMTIxLCAyMTcsIDEwNiwgMzksIDg5LCAxLCAxMjEsIDIxNiwgMjA5LCAzOSwgODksIDEsIDE5OCwgMzksIDg5LCAKLSAgICAxLCAyNTIsIDE5OSwgMzksIDg5LCAxLCAxMjUsIDE5MSwgMzksIDg5LCAxLCAxMjUsIDIyNSwgMTUwLCAzOSwgODksIDEsIAotICAgIDEyNSwgMjQ0LCAyMDQsIDM5LCA4OSwgMSwgMTIxLCAxOTEsIDM5LCA4OSwgMSwgMTIxLCAyNDQsIDIwNCwgMzksIDg5LCAxLCAKLSAgICAxMjEsIDIyNSwgMTUwLCAzOSwgODksIDEsIDE4NiwgMzksIDg5LCAxLCAxMjEsIDE5MiwgMzksIDg5LCAxLCAxMjUsIDE5MiwgCi0gICAgMzksIDg5LCAxLCAyMDUsIDM5LCA4OSwgMSwgMjIyLCAxMzksIDM5LCA4OSwgMSwgMjMzLCAxNDEsIDM5LCA4OSwgMSwgMjMyLCAKLSAgICA5OCwgMzksIDg5LCAxLCAyMTIsIDY1LCAzOSwgODksIDEsIDEyNSwgMjIwLCAxMDQsIDM5LCA4OSwgMSwgMTI1LCAyMTgsIAotICAgIDIyNSwgMzksIDg5LCAxLCAxMjUsIDIwNiwgMzksIDg5LCAxLCAxMjUsIDE2MiwgMzksIDg5LCAxLCAyMzIsIDE5MCwgMzksIAotICAgIDg5LCAxLCA2MSwgMzksIDg5LCAxLCAxMjEsIDE2MiwgMzksIDg5LCAxLCA3NCwgMzksIDg5LCAxLCAyMzYsIDQwLCAzOSwgCi0gICAgODksIDEsIDY5LCAzOSwgODksIDEsIDIxNCwgMTE4LCAzOSwgODksIDEsIDI0NSwgMjE3LCAzOSwgODksIDEsIDIyNiwgMTg3LCAKLSAgICAzOSwgODksIDEsIDIzMywgMTI2LCAzOSwgODksIDEsIDI0MiwgMTM5LCAyMDYsIDM5LCA4OSwgMTE3LCA1LCAxNDcsIDIwNSwgCi0gICAgMzksIDg5LCAxMTcsIDUsIDE0NywgMjMzLCAxNDEsIDM5LCA4OSwgMTE3LCA1LCAyMzMsIDE0MiwgMjE3LCA1OSwgMjMzLCAKLSAgICAxMTUsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIzNCwgMjM3LCAyMzMsIDExNSwgMzksIDg5LCAxMTcsIDUsIDQwLCAyMjksIAotICAgIDgyLCAzOSwgODksIDExNywgNSwgMTIxLCAxOTEsIDM5LCA4OSwgMTE3LCA1LCAxMjUsIDIyMywgMTQyLCAxNzcsIDEyMSwgCi0gICAgMTkxLCAzOSwgODksIDExNywgNSwgMTg2LCAzOSwgODksIDExNywgNSwgMjUyLCAxOTksIDM5LCA4OSwgMTE3LCA1LCAyMDYsIAotICAgIDM5LCA4OSwgNSwgMjIyLCAxMiwgMzksIDg5LCAyNSwgNSwgNjEsIDM5LCA4OSwgMjUsIDUsIDIzMSwgMjA5LCAyMjEsIDIyOCwgCi0gICAgMzksIDg5LCAyNSwgNSwgMjU1LCA4MiwgMzksIDg5LCAyNSwgNSwgMjE3LCA2NSwgMjU1LCA4MiwgMzksIDg5LCAyNSwgNSwgCi0gICAgNzQsIDM5LCA4OSwgMjUsIDUsIDIzNiwgNDAsIDM5LCA4OSwgMjUsIDUsIDIxNCwgMjE0LCAzOSwgODksIDI1LCA1LCAyMTQsIAotICAgIDExNywgMzksIDg5LCAyNSwgNSwgNjksIDM5LCA4OSwgMjUsIDUsIDIxNCwgMTE4LCAzOSwgODksIDI1LCA1LCA3OCwgMzksIAotICAgIDg5LCAyNSwgNSwgMjI3LCA1LCA1MSwgMzksIDg5LCAyNSwgNSwgMjI2LCAxMTMsIDM5LCA4OSwgMjUsIDUsIDc2LCAzOSwgCi0gICAgODksIDI1LCA1LCAyNTQsIDI1MiwgMzksIDg5LCAyNSwgNSwgMjI2LCAxODcsIDM5LCA4OSwgMjUsIDUsIDI1NCwgMjEwLCAKLSAgICAzOSwgODksIDI1LCA1LCA4OSwgMjU0LCAyMTAsIDM5LCA4OSwgMjUsIDUsIDIyNywgNSwgNDgsIDM5LCA4OSwgNSwgMjMxLCAKLSAgICAyMDksIDIzNCwgMjM2LCAzOSwgODksIDUsIDIxNiwgMzAsIDM5LCA4OSwgNSwgMjE2LCAyOSwgMzksIDg5LCA1LCAyMzQsIAotICAgIDEwMywgMjE2LCAyOCwgMzksIDg5LCA1LCAyMzQsIDEwMywgMjE2LCAyNywgMzksIDg5LCA1LCAyMzQsIDEwMywgMjE2LCAyNiwgCi0gICAgMzksIDg5LCA1LCAyMjMsIDE5MSwgMjQyLCA1MiwgMzksIDg5LCA1LCAyMzEsIDIwOSwgMjIxLCAyNTUsIDM5LCA4OSwgNSwgCi0gICAgMjM0LCAxMDIsIDIzNCwgMjIxLCAzOSwgODksIDM4LCAyNDksIDEyMywgMjQ3LCAxMjgsIDM5LCA4OSwgMjQxLCA1MywgMjEsIAotICAgIDIxMCwgODYsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDExMSwgMzksIDg5LCAyNDEsIDUzLCAyMSwgMTA1LCAzOSwgODksIDI0MSwgCi0gICAgNTMsIDIxLCAxNTgsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE2MSwgMzksIDg5LCAyNDEsIDUzLCAyMSwgMTkwLCAzOSwgODksIAotICAgIDI0MSwgNTMsIDIxLCAxOTUsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5OSwgMzksIDg5LCAyNDEsIDUzLCAyMSwgMTk2LCAzOSwgCi0gICAgODksIDI0MSwgNTMsIDIxLCAyMDEsIDM5LCA4OSwgODksIDIxLCAyMTAsIDg2LCAzOSwgODksIDg5LCAyMSwgMTExLCAzOSwgCi0gICAgODksIDg5LCAyMSwgMTA1LCAzOSwgODksIDg5LCAyMSwgMTU4LCAzOSwgODksIDg5LCAyMSwgMTYxLCAzOSwgODksIDg5LCAKLSAgICAyMSwgMTkwLCAzOSwgODksIDg5LCAyMSwgMTk1LCAzOSwgODksIDg5LCAyMSwgMTk5LCAzOSwgODksIDg5LCAyMSwgMTk2LCAKLSAgICAzOSwgODksIDg5LCAyMSwgMjAxLCAzOSwgODksIDUsIDIxMSwgMjQ5LCAzOSwgODksIDUsIDIxMSwgMjQ4LCAzOSwgODksIDUsIAotICAgIDIyMSwgMjE3LCAzOSwgODksIDUsIDIzNCwgMTY2LCAzOSwgODksIDUsIDI0MCwgMjM5LCAzOSwgODksIDUsIDI0NywgMTQyLCAKLSAgICAzOSwgODksIDUsIDIyMywgNTIsIDIyMiwgMTg5LCAyMjMsIDE1MiwgMzksIDg5LCA1LCAyMzEsIDIwOSwgMjExLCA3MiwgMzksIAotICAgIDg5LCA1LCAyMzUsIDEyLCAzOSwgODksIDUsIDIzNSwgMTEsIDM5LCA4OSwgNSwgMjIxLCAyMjQsIDM5LCA4OSwgNSwgMjIxLCAKLSAgICAyMjMsIDM5LCA4OSwgNSwgMjQyLCAxNiwgMzksIDg5LCA1LCAyNTEsIDM4LCAxMDIsIDUsIDIxNCwgMjAwLCAyMjMsIDMzLCAKLSAgICAxMDIsIDUsIDIxNCwgMjAwLCAyNTEsIDksIDEwMiwgNSwgMjUwLCAxOTQsIDEwMiwgNSwgMjE4LCAxNiwgMTAyLCA1LCAyNTEsIAotICAgIDI0MSwgMTAyLCAxLCAyNTQsIDE5MywgMTAyLCAxLCAyNTQsIDE5NCwgMjE3LCAxNCwgMTAyLCAxLCAyMzYsIDM2LCAxMDIsIAotICAgIDEsIDIzNiwgMzcsIDIxNywgMTQsIDEwMiwgMSwgMjE0LCAyMDMsIDEwMiwgMSwgMjE0LCAyMDQsIDIxNywgMTQsIDEwMiwgMSwgCi0gICAgMjIzLCAxOTEsIDIyMywgODIsIDEwMiwgMSwgMjIzLCAxOTEsIDIyMywgODMsIDIxNywgMTQsIDEwMiwgMSwgMjMzLCAxNDIsIAotICAgIDIzMywgMzAsIDEwMiwgMSwgMjMzLCAxNDIsIDIzMywgMzEsIDIxNywgMTQsIDEwMiwgMSwgMjQ1LCAxODcsIDEwMiwgMSwgCi0gICAgMjU0LCAyMDgsIDEwMiwgMSwgMjI2LCAyMTYsIDEwMiwgMSwgMjI2LCAyMTcsIDIxNywgMTQsIDEwMiwgMSwgMTc2LCAxMDIsIAotICAgIDEsIDIzNSwgMTksIDIzMSwgMjEyLCAxMDIsIDEsIDI0MywgMTQyLCAxMDIsIDEsIDI0MywgMTQzLCAyNDIsIDE2OCwgMTAyLCAKLSAgICAxLCAyMjksIDgyLCAxMDIsIDEsIDI1MSwgNDEsIDEwMiwgMSwgMjUxLCA0MiwgMjMzLCAxMjksIDEwMiwgMSwgMjM1LCAxNDcsIAotICAgIDEwMiwgMSwgMjM1LCAxNDgsIDIzNSwgMTI0LCAxMDIsIDEsIDIyNywgMTY5LCAxMDIsIDEsIDIxNywgMTA3LCAyMzMsIDgyLCAKLSAgICAxMDIsIDEsIDIxNywgMTA3LCAyMzAsIDcyLCAyMzEsIDIxMiwgMTAyLCAxLCAyNDgsIDIzMCwgMjMwLCA3MiwgMjU0LCAxNTMsIAotICAgIDEwMiwgMSwgMjQ4LCAyMzAsIDIzMCwgNzIsIDIzMSwgMjEyLCAxMDIsIDEsIDIyOSwgMjM0LCAyMjMsIDE1NSwgMTAyLCAxLCAKLSAgICAyMTcsIDEwNiwgMTAyLCAxLCAyMTcsIDEwNywgMjE3LCAzNiwgMTAyLCAxLCAyNDgsIDIyOSwgMTAyLCAxLCAyNDgsIDIzMCwgCi0gICAgMjMxLCAyMzAsIDEwMiwgMSwgMTk4LCAxMDIsIDEsIDE5MSwgMTAyLCAxLCAyMjYsIDk0LCAyMzQsIDIzMiwgMTAyLCAxLCAKLSAgICAyNTIsIDE5OSwgMTAyLCAxLCAyNTIsIDIwMCwgMjM0LCAxNzgsIDEwMiwgMSwgMTg2LCAxMDIsIDEsIDE5MiwgMTAyLCAxLCAKLSAgICAyMDUsIDEwMiwgMSwgMjMzLCAxNDEsIDEwMiwgMSwgMjEyLCA2NSwgMTAyLCAxLCAyMjIsIDM2LCAyMjIsIDIyLCAxMDIsIDEsIAotICAgIDIyMiwgMzYsIDIyMSwgMjM1LCAxMDIsIDEsIDIwNiwgMTAyLCAxLCAxNjIsIDEwMiwgNSwgMjIzLCA3MywgMTAyLCAyNSwgNSwgCi0gICAgMjE3LCAxNCwgMTAyLCAyNSwgNSwgMjE0LCAxOTksIDEwMiwgMjUsIDUsIDIxNCwgMjAwLCAyMjEsIDIzMSwgMTAyLCAyNSwgCi0gICAgNSwgMjE4LCA0OCwgMTAyLCAyNSwgNSwgMjE4LCA0OSwgMjM2LCAyOCwgMTAyLCAyNSwgNSwgMjIzLCAxOTEsIDIyMywgODIsIAotICAgIDEwMiwgMjUsIDUsIDIyMywgMTkxLCAyMjMsIDgzLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMzMsIDE0MiwgMjMzLCAzMCwgCi0gICAgMTAyLCAyNSwgNSwgMjMzLCAxNDIsIDIzMywgMzEsIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDEwMiwgMjUsIDUsIAotICAgIDIxNywgNjcsIDIyMywgODIsIDEwMiwgMjUsIDUsIDIxNywgNjcsIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIxNywgNjcsIDIyMywgCi0gICAgODMsIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIyNSwgMTg3LCAxMDIsIDI1LCA1LCAyMjUsIDE4OCwgMjE3LCAxNCwgMTAyLCAKLSAgICAyNTUsIDMsIDI1NSwgMiwgMTAyLCAxLCAyMzUsIDEsIDIyMSwgMjMwLCAxMDIsIDEsIDIzNCwgMTA4LCAyMjEsIDIzMCwgCi0gICAgMTAyLCAxLCAyMTUsIDM0LCAyMjEsIDIzMCwgMTAyLCAxLCAyNDUsIDIxMSwgMjIxLCAyMzAsIDEwMiwgMSwgMjE0LCAwLCAKLSAgICAyMjEsIDIzMCwgMTAyLCAxLCAyMTAsIDEwNywgMjIxLCAyMzAsIDEwMiwgMSwgMjUzLCAyMTcsIDIyMSwgMjMwLCAxMDIsIAotICAgIDIxLCAyMTAsIDg2LCAxMDIsIDIxLCAxMTEsIDEwMiwgMjEsIDEwNSwgMTAyLCAyMSwgMTU4LCAxMDIsIDIxLCAxNjEsIDEwMiwgCi0gICAgMjEsIDE5MCwgMTAyLCAyMSwgMTk1LCAxMDIsIDIxLCAxOTksIDEwMiwgMjEsIDE5NiwgMTAyLCAyMSwgMjAxLCAxMDIsIAotICAgIDIyNiwgMzMsIDEwMiwgMjI2LCA1OSwgMTAyLCAyMTEsIDIzOCwgMTAyLCAyNTAsIDI0NCwgMjI2LCA1MiwgMTAyLCAyNTAsIAotICAgIDI0NCwgMjE5LCAxNzQsIDEwMiwgMjUwLCAyNDQsIDIyNiwgNiwgMTAyLCAyMjYsIDU4LCAxMDIsIDI4LCAxNiwgMjQ3LCAKLSAgICAxMzQsIDEwMiwgMjgsIDE2LCAyNDgsIDU5LCAxMDIsIDI4LCAxNiwgMjQ2LCA3MiwgMTAyLCAyOCwgMTYsIDI0OCwgMTg0LCAKLSAgICAxMDIsIDI4LCAxNiwgMjQ4LCAxODUsIDIxOCwgMTYsIDEwMiwgMjgsIDE2LCAyNDcsIDIxMywgMTAyLCAyOCwgMTYsIDI0OCwgCi0gICAgMjIyLCAxMDIsIDI4LCAxNiwgMjQ4LCA0MSwgMTAyLCAyOCwgMTYsIDI0OCwgMjA2LCAxMDIsIDI4LCAxNiwgMjQ4LCAxODUsIAotICAgIDI0MywgNjQsIDEwMiwgMjgsIDE2LCAzOCwgMjE3LCAxMCwgMTAyLCAyOCwgMTYsIDM4LCAyNDUsIDE0OSwgMTAyLCAyOCwgCi0gICAgMTYsIDM4LCAyMzQsIDE3MywgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE3NSwgMTAyLCAyOCwgMTYsIDM4LCAyMzUsIDEyOCwgCi0gICAgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE3NCwgMiwgMjM1LCAxMjgsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzYsIDIsIAotICAgIDIzNSwgMTI4LCAxMDIsIDI4LCAxNiwgMzgsIDI1MiwgNDUsIDEwMiwgMjgsIDE2LCAzOCwgMjQyLCAxNzIsIDEwMiwgMjgsIAotICAgIDE2LCAyMjIsIDI1MiwgMjA0LCAyNDYsIDgyLCAxMDIsIDI4LCAxNiwgMjIyLCAyNTIsIDIwNCwgMjQ4LCAyMjAsIDEwMiwgCi0gICAgMjgsIDE2LCAyMjIsIDI1MiwgMjUwLCA4LCAyMTUsIDExMiwgMTAyLCAyOCwgMTYsIDIyMiwgMjUyLCAyNTAsIDgsIDIxNywgCi0gICAgNzQsIDEwMiwgMjgsIDE2LCAyMzMsIDUwLCAyMDQsIDIyNiwgNDcsIDEwMiwgMjgsIDE2LCAyMzMsIDUwLCAyMDQsIDIyNCwgCi0gICAgMTQyLCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjUwLCA4LCAyMjUsIDQxLCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjUwLCA4LCAKLSAgICAyMjUsIDI5LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjUsIDY0LCAyMDcsIDUsIDIyNiwgMzAsIDIwNywgNSwgCi0gICAgMjI2LCA0MywgMjA3LCA1LCAyMjYsIDM5LCAyMDcsIDEsIDYxLCAyMDcsIDEsIDc0LCAyMDcsIDEsIDY5LCAyMDcsIDEsIAotICAgIDI1NCwgMjUyLCAyMDcsIDEsIDc4LCAyMDcsIDEsIDc2LCAyMDcsIDEsIDI0NSwgNjMsIDIwNywgMSwgMTc2LCAyMDcsIDEsIAotICAgIDIyNCwgOTEsIDIwNywgMSwgMjQzLCAxNDIsIDIwNywgMSwgMjI5LCA4MiwgMjA3LCAxLCAyNTEsIDQxLCAyMDcsIDEsIDIzNSwgCi0gICAgMTQ3LCAyMDcsIDEsIDIxMCwgMTE2LCAyMDcsIDEsIDIyNywgMTY5LCAyMDcsIDEsIDIxNywgMTA2LCAyMDcsIDEsIDI0OCwgCi0gICAgMjI5LCAyMDcsIDEsIDE5OCwgMjA3LCAxLCAxOTEsIDIwNywgMSwgMjQ0LCAyMDQsIDIwNywgMSwgMjE0LCAyNywgMjA3LCAxLCAKLSAgICAyNTIsIDE5OSwgMjA3LCAxLCAxODYsIDIwNywgMSwgMTkyLCAyMDcsIDEsIDIwNSwgMjA3LCAxLCAyMzMsIDE0MSwgMjA3LCAKLSAgICAxLCAyMTIsIDY1LCAyMDcsIDEsIDIwNiwgMjA3LCAxLCAyMTEsIDE2NSwgMjA3LCAxLCAxNjIsIDIwNywgMTE3LCA1LCAyMjYsIAotICAgIDU2LCAyMDcsIDExNywgNSwgMjI2LCAzMiwgMjA3LCAxMTcsIDUsIDIyNiwgMjksIDIwNywgMjUsIDUsIDIyNiwgNDYsIDIwNywgCi0gICAgMjUsIDUsIDIyNiwgMjgsIDIwNywgMjUsIDUsIDIyNiwgNTAsIDIwNywgMjUsIDUsIDIyNiwgMzgsIDIwNywgMjUsIDUsIAotICAgIDIyNiwgNTcsIDIwNywgMjUsIDUsIDIyNiwgNDgsIDIwNywgNSwgMjI2LCA2MCwgMjA3LCA1LCAyMTMsIDE1MiwgMjA3LCAKLSAgICAxMTcsIDUsIDIyNSwgMjUyLCAxODYsIDIwNywgMTE3LCA1LCAyMjUsIDI1MiwgMjEyLCA2NSwgMjA3LCAxLCAyMzQsIDEzOCwgCi0gICAgMjA3LCAxLCAyMTcsIDIzMiwgMjA3LCAyMSwgMjEwLCA4NiwgMjA3LCAyMSwgMTExLCAyMDcsIDIxLCAxMDUsIDIwNywgMjEsIAotICAgIDE1OCwgMjA3LCAyMSwgMTYxLCAyMDcsIDIxLCAxOTAsIDIwNywgMjEsIDE5NSwgMjA3LCAyMSwgMTk5LCAyMDcsIDIxLCAKLSAgICAxOTYsIDIwNywgMjEsIDIwMSwgMjA3LCAyNTMsIDE4MywgMjA3LCAxLCAyMjMsIDU1LCAyMDcsIDEsIDIzMywgMTMsIDIwNywgCi0gICAgMSwgMjUyLCAyNiwgMjA3LCAxLCA0MCwgMjM1LCAyOSwgMjA3LCAxLCA0MCwgMTk0LCAyNTIsIDEyOCwgMSwgNjEsIDI1MiwgCi0gICAgMTI4LCAxLCAyMTksIDE2NiwgNjEsIDI1MiwgMTI4LCAxLCAxNjIsIDI1MiwgMTI4LCAxLCAyMTksIDE2NiwgMTYyLCAyNTIsIAotICAgIDEyOCwgMSwgMjMxLCAxODYsIDE2MiwgMjUyLCAxMjgsIDEsIDI1MiwgMTk5LCAyNTIsIDEyOCwgMSwgMjM0LCAyMTgsIDI1MiwgCi0gICAgMTk5LCAyNTIsIDEyOCwgMSwgMTkxLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE5MSwgMjUyLCAxMjgsIDEsIDE5OCwgMjUyLCAKLSAgICAxMjgsIDEsIDIzMSwgMTg2LCAxOTgsIDI1MiwgMTI4LCAxLCAyMTIsIDY1LCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDIxMiwgCi0gICAgNjUsIDI1MiwgMTI4LCAxLCAyMjYsIDcxLCAyMTIsIDY1LCAyNTIsIDEyOCwgMSwgMjQzLCAxNDIsIDI1MiwgMTI4LCAxLCAKLSAgICAyMTksIDE2NiwgMjQzLCAxNDIsIDI1MiwgMTI4LCAxLCAyMzUsIDE0NywgMjUyLCAxMjgsIDEsIDI0OCwgMjI5LCAyNTIsIAotICAgIDEyOCwgMSwgMjA1LCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDIwNSwgMjUyLCAxMjgsIDEsIDE4NiwgMjUyLCAxMjgsIDEsIAotICAgIDIxOSwgMTY2LCAxODYsIDI1MiwgMTI4LCAxLCAyMTksIDI4LCAyMTcsIDEwNiwgMjUyLCAxMjgsIDEsIDIyOCwgNjAsIDIxNywgCi0gICAgMTA2LCAyNTIsIDEyOCwgMSwgMjA2LCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDIwNiwgMjUyLCAxMjgsIDEsIDIzMSwgMTg2LCAKLSAgICAyMDYsIDI1MiwgMTI4LCAxLCAxOTIsIDI1MiwgMTI4LCAxLCAyMTksIDE2NiwgMTkyLCAyNTIsIDEyOCwgMSwgMjI5LCA4MiwgCi0gICAgMjUyLCAxMjgsIDEsIDIzMywgMTQxLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDIzMywgMTQxLCAyNTIsIDEyOCwgMSwgMjI3LCAKLSAgICAxNjksIDI1MiwgMTI4LCAxLCAyNTEsIDQxLCAyNTIsIDEyOCwgMSwgMjI5LCAxNTMsIDI1MiwgMTI4LCAxLCAyMzEsIDEyOSwgCi0gICAgMjUyLCAxMjgsIDEsIDc0LCAyNTIsIDEyOCwgMSwgNjksIDI1MiwgMTI4LCA1LCAyMTYsIDM0LCAyNTIsIDEyOCwgMjUsIDUsIAotICAgIDc2LCAyNTIsIDEyOCwgMjUsIDUsIDIyNiwgNzEsIDc2LCAyNTIsIDEyOCwgMjUsIDUsIDI0NSwgMjE3LCAyNTIsIDEyOCwgCi0gICAgMjUsIDUsIDc0LCAyNTIsIDEyOCwgMjUsIDUsIDIzNCwgMjE4LCA3NCwgMjUyLCAxMjgsIDI1LCA1LCA3OCwgMjUyLCAxMjgsIAotICAgIDI1LCA1LCAyMzQsIDIxOCwgNzgsIDI1MiwgMTI4LCAyNSwgNSwgNjksIDI1MiwgMTI4LCAyNSwgNSwgMTA0LCAzMSwgMjE5LCAKLSAgICAxNjYsIDIwNiwgMjUyLCAxMjgsIDExNywgNSwgMjI5LCA4NCwgMjUyLCAxMjgsIDExNywgNSwgMjQyLCA2NywgMjUyLCAxMjgsIAotICAgIDIyNiwgNDEsIDI1MiwgMTI4LCAyMjYsIDM3LCAyNTIsIDEyOCwgMTYsIDI1MSwgMjQ5LCAyMjksIDIzNCwgMjMxLCA0MiwgCi0gICAgMjUyLCAxMjgsIDE2LCAyNTEsIDI0OSwgMjI1LCA2NywgMjUyLCAxMjgsIDE2LCAyNTEsIDI0OSwgMjM1LCA1NCwgMjUyLCAKLSAgICAxMjgsIDE2LCAyNTEsIDI0OSwgMjI2LCA0MSwgMTk3LCAxLCAxNzYsIDE5NywgMSwgMjM0LCA0NSwgMTk3LCAxLCAyMzQsIAotICAgIDEzOCwgMTk3LCAxLCAyNDMsIDE0MiwgMTk3LCAxLCAyNDIsIDE5MywgMTk3LCAxLCAyMjksIDgyLCAxOTcsIDEsIDI1MSwgCi0gICAgNDEsIDE5NywgMSwgMjUwLCAxNjUsIDE5NywgMSwgMjM1LCAxNDcsIDE5NywgMSwgMjI3LCAxNjksIDE5NywgMSwgMjE3LCAKLSAgICAxMDYsIDE5NywgMSwgMjE2LCAyMDksIDE5NywgMSwgMjQ4LCAyMjksIDE5NywgMSwgMTk4LCAxOTcsIDEsIDE5MSwgMTk3LCAKLSAgICAxLCAyMjUsIDQ1LCAxOTcsIDEsIDIyNSwgMTUwLCAxOTcsIDEsIDI0NCwgMjA0LCAxOTcsIDEsIDI0NCwgODMsIDE5NywgMSwgCi0gICAgMjUyLCAxOTksIDE5NywgMSwgMjUxLCAyMzAsIDE5NywgMSwgMTg2LCAxOTcsIDEsIDIzMCwgMTczLCAxOTcsIDEsIDIxNSwgCi0gICAgMTg0LCAxOTcsIDEsIDIxNSwgMTc2LCAxOTcsIDEsIDI0NiwgNDYsIDE5NywgMSwgMTkyLCAxOTcsIDEsIDIwNSwgMTk3LCAxLCAKLSAgICAyMzMsIDE0MSwgMTk3LCAxLCAxNjIsIDE5NywgMSwgMjQxLCAxNjAsIDE5NywgMSwgMjE0LCAyNywgMTk3LCAxLCAyMDYsIAotICAgIDE5NywgMSwgMjIwLCAxMDQsIDE5NywgMSwgMjEyLCA2NSwgMTk3LCAxLCA2MSwgMTk3LCAyMTgsIDc0LCAxLCAxOTIsIDE5NywgCi0gICAgMjE4LCA3NCwgMSwgMjA1LCAxOTcsIDI1LCA1LCAyNTUsIDgyLCAxOTcsIDI1LCA1LCA3NCwgMTk3LCAyNSwgNSwgNzgsIAotICAgIDE5NywgMjUsIDUsIDIyNiwgMTg3LCAxOTcsIDI1LCA1LCA2OSwgMTk3LCAyNSwgNSwgMjE0LCAxMTgsIDE5NywgMjUsIDUsIAotICAgIDc2LCAxOTcsIDExNywgNSwgMjM1LCAyOSwgMTk3LCAxMTcsIDUsIDE5NCwgMTk3LCAxMTcsIDUsIDE1NiwgMTk3LCAxMTcsIAotICAgIDUsIDIzMCwgMzAsIDE5NywgMTE3LCA1LCAyMjYsIDEwOSwgMTk3LCAxMTcsIDUsIDE1MywgMTk3LCAxMTcsIDUsIDIxNywgCi0gICAgMTUzLCAxOTcsIDExNywgNSwgMjI3LCAxNDYsIDE5NywgMTE3LCA1LCAyMzQsIDIzNiwgMTk3LCA1LCAyMjMsIDE1MywgMTk3LCAKLSAgICA1LCAyMjcsIDIwOSwgMTk3LCAyMjQsIDE0NCwgMjE3LCAxMDQsIDE5NywgMjI0LCAxNDQsIDIyNywgMTU2LCAyMTYsIDEyMSwgCi0gICAgMjE3LCAxMDQsIDE5NywgMjI0LCAxNDQsIDI1MCwgMTcyLCAxOTcsIDIyNCwgMTQ0LCAyMTUsIDE3MSwgMjUwLCAxNzIsIAotICAgIDE5NywgMjI0LCAxNDQsIDIxNSwgMTcwLCAxOTcsIDIxLCAyMTAsIDg2LCAxOTcsIDIxLCAxMTEsIDE5NywgMjEsIDEwNSwgCi0gICAgMTk3LCAyMSwgMTU4LCAxOTcsIDIxLCAxNjEsIDE5NywgMjEsIDE5MCwgMTk3LCAyMSwgMTk1LCAxOTcsIDIxLCAxOTksIAotICAgIDE5NywgMjEsIDE5NiwgMTk3LCAyMSwgMjAxLCAxOTcsIDEsIDIxNSwgMTU3LCAxOTcsIDEsIDIxNSwgMTQ1LCAxOTcsIDEsIAotICAgIDI0OCwgMTQzLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAyMTAsIDg2LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxMTEsIAotICAgIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDEwNSwgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTU4LCAyMjYsIDIxNCwgMjUwLCAKLSAgICAxMTEsIDIxLCAxNjEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE5MCwgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTk1LCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTksIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE5NiwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAyMSwgMjAxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzMywgMTQxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIAotICAgIDI1MywgMjE0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NCwgMjI1LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NCwgCi0gICAgMTIzLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NCwgMTg3LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzMywgMTQwLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NSwgNDQsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjU1LCA0NSwgMjI2LCAyMTQsIAotICAgIDI1MCwgMTExLCAxLCAyNTUsIDQzLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NSwgMzgsIDIyNiwgMjE0LCAyNTAsIDExMSwgCi0gICAgMSwgMjMyLCAyNDcsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxNzgsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM2LCAKLSAgICA0MSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzUsIDE5NywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzUsIDE4NiwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzIsIDEwMywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMTQsIDIyMSwgMjI2LCAKLSAgICAyMTQsIDI1MCwgMTExLCAxLCAyMTQsIDIxOSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMTQsIDE2OCwgMjI2LCAyMTQsIAotICAgIDI1MCwgMTExLCAxLCAyMTQsIDExMSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDY0LCAyMjYsIDIxNCwgMjUwLCAKLSAgICAxMTEsIDEsIDI0NSwgMTE2LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI0NSwgMjIwLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIAotICAgIDI0NSwgMTU4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI0NSwgOTQsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMyLCAKLSAgICAxNjIsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjI2LCAxNDEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjI3LCAwLCAyMjYsIAotICAgIDIxNCwgMjUwLCAxMTEsIDEsIDIyNiwgMTI5LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNiwgMjI2LCAyMjYsIDIxNCwgCi0gICAgMjUwLCAxMTEsIDIzMCwgMTA4LCAyMTUsIDEyMiwgMjI2LCAyMTQsIDI1MCwgMTExLCAyNDMsIDEzNywgMjE1LCAxMjMsIAotICAgIDIyNiwgMjE0LCAyNTAsIDExMSwgMjMwLCAxMDYsIDIxNSwgMTIzLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIyMywgOTUsIDIyNiwgCi0gICAgMjE0LCAyNTAsIDExMSwgMjI1LCAxNDgsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjU0LCAyMTcsIDIyNiwgMjE0LCAyNTAsIAotICAgIDExMSwgMjI0LCAxNDQsIDIzMCwgMTAzLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIyNCwgMTQ0LCA1MiwgMjMwLCAxMDMsIDIwNywgCi0gICAgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyMTgsIDksIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyMjYsIDQyLCAyMDcsIDIyNCwgCi0gICAgMTQ0LCAyNTEsIDI0OSwgMjI0LCAxMzIsIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyNTEsIDI3LCAyMDcsIDIyNCwgMTQ0LCAKLSAgICAyNTEsIDI0OSwgMjMzLCAxNCwgMjIxLCAyMjcsIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyMzUsIDE5LCAyMjEsIDIyNywgCi0gICAgMjA3LCAyMjQsIDE0NCwgMjUxLCAyNDksIDI0OCwgMjMwLCAyMjEsIDIyNywgMjA3LCAyMjQsIDE0NCwgMjUxLCAyNDksIAotICAgIDI1MiwgMjAwLCAyMjEsIDIyNywgMjEzLCAyNTIsIDEzOCwgMjM0LCAyMTYsIDIxMywgMjUyLCAxMzgsIDIyMCwgNzksIDIxMywgCi0gICAgMjUyLCAxMzgsIDIyNCwgMjAxLCAyMTMsIDI1MiwgNSwgMjI4LCAyMTQsIDIxMywgMjUyLCA1LCAyMTEsIDgwLCAyMzAsIAotICAgIDIyNywgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyNTQsIDIyMiwgMjM1LCAyNTAsIDIxOCwgMSwgMjEzLCAKLSAgICAyNTIsIDEzOCwgMjExLCA4MCwgMjM1LCAyNTAsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjM0LCAyMDQsIAotICAgIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDI1MSwgMTAsIDUxLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAKLSAgICAyMzQsIDIwNCwgMjM1LCAyNTAsIDIxOCwgMiwgMjIxLCAxOTksIDIxMywgMjUyLCAxMzgsIDUyLCAyMTgsIDEsIDIxMywgCi0gICAgMjUyLCAxMzgsIDIxNSwgMjEyLCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDIzNCwgMjA0LCAyNTQsIDg1LCAyMTMsIDI1MiwgCi0gICAgMTM4LCA1OSwgNTEsIDIxMywgMjUyLCAxMzgsIDExMywgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMTM0LCAxNzAsIDUxLCAKLSAgICAyMTMsIDI1MiwgMTM4LCAyMjIsIDI0MywgMjM0LCAyMTUsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDI1MywgCi0gICAgMjEyLCAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxOCwgMSwgMjEzLCAyNTIsIDUsIDIxMywgCi0gICAgMTQ4LCAyMTQsIDIxNiwgMjEzLCAyNTIsIDUsIDIyMywgNTIsIDIxMywgMTQ4LCAyMTQsIDIxNiwgMjEzLCAyNTIsIDUsIAotICAgIDIxMywgMTQ4LCAyNTQsIDg1LCAyMTMsIDI1MiwgNSwgMjIzLCA1MiwgMjEzLCAxNDgsIDI1NCwgODUsIDIxMywgMjUyLCA1LCAKLSAgICAyMTMsIDE0OCwgMjE0LCAyMTcsIDIsIDIxNywgNzgsIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCA4NiwgMiwgMjE3LCAKLSAgICA3OCwgMjEzLCAyNTIsIDUsIDI1NCwgODQsIDI1NCwgOTksIDIxMywgMjUyLCA1LCAyNTQsIDg0LCAyNTIsIDE3NCwgMjEzLCAKLSAgICAyNTIsIDUsIDI1NCwgODQsIDIxNCwgMjAsIDIxMywgMjUyLCA1LCAyNTQsIDg0LCAyMTQsIDIxLCAyLCAyMTcsIDc4LCAyMTMsIAotICAgIDI1MiwgNSwgMjE2LCA2OSwgMjEzLCAyNTIsIDUsIDI0MSwgMTk4LCAyMDAsIDI1NCwgODMsIDIxMywgMjUyLCA1LCAyMDAsIAotICAgIDI1NCwgODMsIDIxMywgMjUyLCA1LCAyMjIsIDE0NCwgMjAwLCAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjE0LCAKLSAgICAyMjMsIDIzMCwgOTUsIDIxMywgMjUyLCA1LCAyNTQsIDI4LCAyMTMsIDI1MiwgNSwgMjIyLCAxODksIDI1NCwgMjgsIDIxMywgCi0gICAgMjUyLCAxMzgsIDI1MSwgMTAsIDQ4LCAyMTMsIDI1MiwgNSwgMjM1LCAxMDgsIDIxMywgMjUyLCA1LCAyMTQsIDE2MSwgNywgCi0gICAgMSwgNCwgNiwgNjEsIDcsIDEsIDQsIDYsIDI1NCwgMjUyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIDI1MiwgNywgMSwgNCwgCi0gICAgNiwgMjUyLCAxNDIsIDI1MywgMTY2LCA3LCAxLCA0LCA2LCAyNTEsIDc0LCA3LCAxLCA0LCA2LCAyNDksIDY4LCA3LCAxLCA0LCAKLSAgICA2LCAyNDUsIDY3LCA3LCAxLCA0LCA2LCA3NiwgNywgNCwgMSwgMjE1LCA5NCwgMjA0LCA3NiwgNywgNCwgMSwgMjE1LCA5NCwgCi0gICAgNzQsIDcsIDEsIDQsIDYsIDIzNSwgMTUwLCA3LCAxLCA0LCA2LCAyMzUsIDI5LCA3LCAxLCA0LCA2LCAyMzMsIDE1NSwgMiwgCi0gICAgOTEsIDcsIDEsIDQsIDYsIDE5NCwgNywgMSwgNCwgNiwgMjIzLCA1MiwgMjMwLCAzMCwgNywgMSwgNCwgNiwgNzgsIDcsIDEsIAotICAgIDQsIDYsIDIwNCwgNzgsIDcsIDQsIDEsIDIxOSwgMTg5LCA3OCwgNywgNCwgMSwgMjE5LCAxODksIDIwNCwgNzgsIDcsIDQsIAotICAgIDEsIDIxOSwgMTg5LCAxNDQsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCAyMjYsIDIzOCwgNywgMSwgNCwgNiwgMjI2LCAKLSAgICAxMzgsIDcsIDQsIDEsIDIxNiwgMTUsIDE2MywgNzgsIDcsIDQsIDEsIDI1MSwgMTgzLCAxNjMsIDc4LCA3LCAxLCA0LCA2LCAKLSAgICAyMjYsIDEwOSwgNywgMSwgNCwgNiwgMjIzLCA1MiwgMTUzLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxNTMsIDcsIDEsIDQsIDYsIAotICAgIDIxNywgMTUzLCA3LCAxLCA0LCA2LCA2OSwgNywgNCwgMSwgMjE5LCAxODksIDY5LCA3LCA0LCAxLCAyMTksIDE4OSwgMjQ4LCAKLSAgICA4LCA2OSwgNywgNCwgMSwgMjE5LCAxODksIDIxNSwgOTQsIDE5NCwgNywgMSwgNCwgNiwgMjE0LCAxMDUsIDcsIDEsIDQsIDYsIAotICAgIDIxMiwgOTgsIDcsIDEsIDQsIDYsIDIxMCwgMTU5LCA3LCAxLCA0LCA2LCAyNDUsIDE2LCA3LCAxLCAyMTMsIDEzNSwgMjMzLCAKLSAgICA4OCwgMjE4LCAyNTIsIDcsIDEsIDI1NCwgMjA1LCAyNiwgMSwgNCwgNiwgMjQzLCAxMTQsIDI2LCAxLCA0LCA2LCAyMzMsIAotICAgIDEwNCwgMjYsIDEsIDQsIDYsIDIyNSwgMTExLCAyNiwgMSwgNCwgNiwgMjIzLCA0MCwgMjYsIDEsIDQsIDYsIDIyNCwgMTY0LCAKLSAgICAzMywgMSwgNCwgNiwgMjQ1LCAxODIsIDU4LCAxLCA2LCA2MSwgNTgsIDEsIDYsIDI1NCwgMjUyLCA1OCwgMSwgNiwgMjUzLCAKLSAgICAxNjYsIDU4LCAxLCA2LCAyNTIsIDE0MiwgMjUzLCAxNjYsIDU4LCAxLCA2LCAyNDksIDY4LCA1OCwgMSwgNiwgNzYsIDU4LCAKLSAgICAxLCA2LCAyMjMsIDUyLCA3NiwgNTgsIDEsIDYsIDI0MywgMjA5LCA1OCwgMSwgNiwgMjQyLCA2NywgNTgsIDEsIDYsIDc0LCAKLSAgICA1OCwgMSwgNiwgMjM1LCAxNTAsIDU4LCAxLCA2LCAyMzUsIDI5LCA1OCwgMSwgNiwgMTU2LCA1OCwgMSwgNiwgMTk0LCA1OCwgCi0gICAgMSwgNiwgMjMwLCAzMCwgNTgsIDEsIDYsIDIyMywgNTIsIDIzMCwgMzAsIDU4LCAxLCA2LCA3OCwgNTgsIDEsIDYsIDIyNiwgCi0gICAgMTM4LCA1OCwgMSwgNiwgMjI2LCAxMDksIDU4LCAxLCA2LCAxNTMsIDU4LCAxLCA2LCAyMTcsIDE1MywgNTgsIDEsIDYsIDY5LCAKLSAgICA1OCwgMSwgNiwgMjEyLCA5OCwgNTgsIDEsIDQsIDYxLCA1OCwgMSwgNCwgMjE1LCA5NCwgNjEsIDU4LCAxLCA0LCAyNTQsIAotICAgIDE1MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDI1NCwgMjUyLCA1OCwgMSwgNCwgMjUzLCAxNjYsIDU4LCAxLCA0LCAyNDksIDY4LCAKLSAgICA1OCwgMSwgNCwgNzYsIDU4LCAxLCA0LCAyMjEsIDE5NywgNTgsIDEsIDQsIDIwNCwgNzYsIDU4LCAxLCA0LCAyMTUsIDk0LCAKLSAgICAyMDQsIDc2LCA1OCwgMSwgNCwgMjQzLCAyMDksIDU4LCAxLCA0LCAyMTUsIDk0LCA3NCwgNTgsIDEsIDQsIDIzNSwgMjksIAotICAgIDU4LCAxLCA0LCAxOTQsIDU4LCAxLCA0LCAyNDUsIDE0NiwgNTgsIDEsIDQsIDc4LCA1OCwgMSwgNCwgMjA0LCA3OCwgNTgsIAotICAgIDEsIDQsIDIxNiwgMTUsIDE2MywgNzgsIDU4LCAxLCA0LCAyNTEsIDE4MywgMTYzLCA3OCwgNTgsIDEsIDQsIDIyNiwgMTA5LCAKLSAgICA1OCwgMSwgNCwgMjE3LCAxNTMsIDU4LCAxLCA0LCA2OSwgNTgsIDEsIDQsIDIxOSwgMTg5LCA2OSwgNTgsIDEsIDQsIDIxNSwgCi0gICAgOTQsIDE5NCwgNTgsIDEsIDQsIDIxNCwgMTA1LCA1OCwgMSwgNCwgMjU0LCAyMDUsIDU4LCAxLCA0LCAyNTIsIDM0LCA1OCwgCi0gICAgMSwgNCwgMjYsIDI0MywgMTE0LCA1OCwgMSwgNCwgMjQ4LCA2MiwgNTgsIDEsIDQsIDI2LCAyMjUsIDEzNiwgNTgsIDEsIDQsIAotICAgIDI1MCwgMTE4LCA3LCAyMTgsIDY2LCA0LCAxLCA3NCwgNywgMjE4LCA2NiwgNCwgMSwgMTUzLCA3LCAyMTgsIDY2LCA0LCAxLCAKLSAgICA2OSwgNywgMjE4LCA2NiwgNCwgMSwgMjE0LCAxMDUsIDI2LCAyMTgsIDY2LCA0LCAxLCAyNTIsIDM0LCAyNiwgMjE4LCA2NiwgCi0gICAgNCwgMSwgMjQzLCAxMTQsIDI2LCAyMTgsIDY2LCA0LCAxLCAyMjMsIDQwLCAyNiwgMjE4LCA2NiwgNCwgMSwgMjI1LCAxMzYsIAotICAgIDI2LCAyMTgsIDY2LCA0LCAxLCAyNTAsIDExOCwgNywgNCwgMSwgMjE0LCAyMTQsIDcsIDQsIDEsIDU3LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyMzAsIDIyOSwgMTg0LCA3LCA0LCAxLCAyNDUsIDE1LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMzIsIDU1LCAyLCAyMzAsIDIyOSwgMTg0LCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMjYsIDExMCwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDIzMCwgMjI5LCAKLSAgICAxODQsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyNDQsIDk2LCAyMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjIyLCA5NCwgCi0gICAgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIxMCwgMTYwLCAKLSAgICAyLCAyMzAsIDIyOSwgMTg0LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDMsIDIwOSwgNTgsIDEsIDMzLCAyNDUsIDE1OCwgNywgNCwgCi0gICAgMSwgMjM1LCAyMjAsIDI0MywgMjA5LCA3LCA0LCAxLCAyMTYsIDIxMiwgMiwgMjE4LCAxMDksIDcsIDQsIDYsIDEsIDI0MCwgCi0gICAgMTYxLCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxOTMsIDIsIDkxLCA3LCA0LCAxLCAyMjYsIDExMCwgMiwgOTEsIDcsIDQsIDYsIAotICAgIDEsIDEwNCwgMiwgOTEsIDcsIDQsIDEsIDIxNCwgMTU4LCAyLCA5MSwgNywgNCwgMSwgNTcsIDIsIDIyNiwgNzAsIDEwMywgNywgCi0gICAgNCwgMSwgMjQ5LCA2OSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyNDUsIDE1LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIAotICAgIDEsIDI0MywgMjEwLCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjMyLCA1NSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAKLSAgICAyMzAsIDMxLCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIDIyNiwgMTEwLCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDIyMywgMjI3LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjQ1LCA4NCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAKLSAgICAyMTEsIDE3OSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAKLSAgICAxMTYsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjU0LCAxNTIsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ5LCAKLSAgICA2OSwgMiwgMjQxLCA1OSwgMjIsIDIxNywgNzgsIDcsIDQsIDEsIDE2MCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAyMDQsIAotICAgIDE2MCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAyMjMsIDUyLCAyMDQsIDE2MCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAKLSAgICAxLCAyMjEsIDE5OCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAKLSAgICAxLCAyMDQsIDE0NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAyNDUsIDg0LCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIAotICAgIDEwNCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAyNDUsIDE3LCAyLCAyMjMsIDU4LCAxMDMsIDU4LCAxLCA0LCAyMTUsIAotICAgIDk0LCAyNTQsIDE1MSwgNTgsIDEsIDQsIDI1MSwgNzQsIDU4LCAxLCA0LCAyNTEsIDc1LCAyLCAyNDksIDEwOCwgNTgsIDEsIAotICAgIDQsIDI0NSwgNjcsIDU4LCAxLCA0LCAyMjMsIDUyLCAyMDQsIDc2LCA1OCwgMSwgNCwgMjQ1LCAxNCwgNTgsIDEsIDQsIDI0NywgCi0gICAgMTI3LCAyMzUsIDE1MSwgMiwgOTEsIDU4LCAxLCA0LCAxMTksIDI0MywgMjA5LCA1OCwgMSwgNCwgMjE1LCA5NCwgMjQyLCAKLSAgICA2NywgNTgsIDEsIDQsIDI0MCwgMTYxLCAyLCA5MSwgNTgsIDEsIDQsIDIzNSwgMTkyLCA1OCwgMSwgNCwgNiwgNzQsIDU4LCAKLSAgICAxLCA0LCA2LCAyNDAsIDE2MSwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE1MSwgMiwgMjQ5LCAxMzUsIDU4LCAxLCA0LCAyMzMsIAotICAgIDE1NSwgMiwgMjIzLCA1OCwgMTAzLCA1OCwgMSwgNCwgMjMzLCAxNTUsIDIsIDIyNiwgNzAsIDEwMywgNTgsIDEsIDQsIDYsIAotICAgIDE1NiwgNTgsIDEsIDQsIDIzMiwgNTUsIDIsIDEwMywgNTgsIDEsIDQsIDIxNSwgOTQsIDIzMiwgNTUsIDIsIDIwMCwgMjMzLCAKLSAgICA0MiwgNTgsIDEsIDQsIDIzMCwgMzEsIDIsIDQzLCAxMDMsIDU4LCAxLCA0LCAyMzAsIDMxLCAyLCAyMjMsIDU4LCAxMDMsIAotICAgIDU4LCAxLCA0LCA2LCAyMzAsIDMwLCA1OCwgMSwgNCwgMjUyLCAxNDIsIDc4LCA1OCwgMSwgNCwgMjI1LCAxMzYsIDU4LCAxLCAKLSAgICA0LCAyMjIsIDk0LCAyLCAxMDMsIDU4LCAxLCA0LCAyNDUsIDgzLCA1OCwgMSwgNCwgMjE3LCAxNTQsIDIsIDIyNiwgNzAsIAotICAgIDEwMywgNTgsIDEsIDQsIDEwNCwgMTMwLCA1OCwgMSwgNCwgMjE0LCAxNTcsIDU4LCAxLCA0LCA2LCA2OSwgNTgsIDEsIDQsIAotICAgIDIxNCwgMTA2LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDIxMCwgMTU5LCA1OCwgMSwgCi0gICAgNCwgMjEwLCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNTgsIDEsIDQsIDIxMCwgMTYwLCAyLCAyNDksIDEwOCwgNTgsIDEsIDQsIAotICAgIDI0NSwgMTYsIDU4LCAxLCA0LCAyMTYsIDE4MCwgMzgsIDI0NiwgMTI2LCAyNDIsIDE0NCwgMjU1LCAyMywgMzgsIDI0NiwgCi0gICAgMTI2LCAyNTUsIDEyLCAyNTUsIDIzLCAzOCwgMjE5LCA3MSwgNTEsIDM4LCAyMTgsIDcsIDc5LCAzOCwgMjMxLCAyMzYsIDM4LCAKLSAgICAyNDIsIDE0MSwgMzgsIDIzMSwgMjM0LCAzOCwgMjU1LCAxMCwgMzgsIDI0MiwgMTQyLCAzOCwgMjU1LCAxMSwgMzgsIDcsIDQsIAotICAgIDEsIDIyMywgMjI3LCA1MSwgMzgsIDI1MSwgMTUzLCAzOCwgMjMxLCAyMzUsIDM4LCA1MiwgMjUwLCAzOSwgNDgsIDM4LCAKLSAgICAyMjYsIDIyOSwgNDgsIDM4LCAyMTAsIDM1LCA1MSwgMzgsIDIzNSwgMTc5LCA1MSwgMzgsIDIxNCwgMTUxLCA0OCwgMzgsIAotICAgIDIxNCwgMTM0LCA0OCwgMzgsIDcsIDQsIDEsIDI0NCwgNzEsIDIwNCwgMTE2LCA0OCwgMzgsIDcsIDQsIDEsIDI1NCwgMjUyLCAKLSAgICAzOCwgNywgNCwgMSwgMjU0LCA4MSwgMzgsIDcsIDQsIDEsIDI1MywgMTg0LCAzOCwgNywgNCwgMSwgMjUxLCA3NSwgMjUwLCAKLSAgICAxOTEsIDM4LCA3LCA0LCAxLCAyMzUsIDIyMCwgMjQ5LCA2OCwgMzgsIDcsIDQsIDEsIDI0NSwgNjcsIDM4LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIwOSwgMzgsIDcsIDEsIDQsIDYsIDI0MywgMjA5LCAzOCwgNywgNCwgMSwgMjM1LCAyOSwgMzgsIDcsIDQsIDEsIAotICAgIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE1NiwgMzgsIDcsIDEsIDQsIDYsIDE5NCwgMzgsIDcsIDQsIDEsIDIzMCwgMzAsIDM4LCAKLSAgICA3LCAxLCA0LCA2LCAyMzAsIDMwLCAzOCwgNywgMSwgNCwgNiwgMTUzLCAzOCwgNywgNCwgMSwgMjIzLCAyMjcsIDIyMiwgCi0gICAgMTg4LCAzOCwgNywgNCwgMSwgMjIyLCA5MywgMzgsIDcsIDQsIDEsIDIwMCwgMjIyLCA5MywgMzgsIDcsIDQsIDEsIDIxMCwgCi0gICAgMTU5LCAzOCwgNTIsIDIzNSwgMjAwLCAyNTEsIDE1NSwgNTEsIDM4LCAyNTQsIDE1NiwgMTI4LCAyMTYsIDQzLCA1MSwgMzgsIAotICAgIDQzLCAyNTQsIDIsIDQ4LCAzOCwgNDQsIDI1NCwgMiwgMjIsIDEyNCwgMjU0LCAyLCA1MSwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAyMjIsIDIzNywgNTEsIDcsIDQsIDEsIDExNiwgMiwgMjIyLCAyMzcsIDUxLCA3LCA2LCAxLCA1NywgMiwgNTksIDQ4LCA3LCAKLSAgICA0LCAxLCA1NywgMiwgNTksIDQ4LCA3LCA2LCAxLCA1NywgMiwgNTksIDUxLCA3LCA0LCAxLCA1NywgMiwgNTksIDUxLCA3LCAKLSAgICA2LCAxLCA1NywgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCA1NywgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyNTEsIAotICAgIDc1LCAyLCAyNTAsIDE5MiwgMjIsIDE0MiwgNywgNCwgMSwgMjUxLCA3NSwgMiwgMjUwLCAxOTIsIDIyLCAxNDIsIDcsIDYsIAotICAgIDEsIDI0OSwgNjksIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDksIDY5LCAyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgMjMyLCAyMjAsIDUxLCAKLSAgICA3LCA0LCAxLCAyNDksIDY5LCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMTkxLCA3LCA0LCAKLSAgICAxLCAyNDksIDY5LCAyLCAyNTAsIDE5MSwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDI0OSwgCi0gICAgNjksIDIsIDI1MCwgMzksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTYwLCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCA1MSwgNywgNCwgMSwgMTYwLCAKLSAgICAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMTYwLCAyLCAyMTYsIDkwLCAKLSAgICA1MSwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE5MiwgMjIsIDI1MSwgMTU0LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMTkyLCAKLSAgICAyMiwgMjUxLCAxNTQsIDcsIDYsIDEsIDI0NSwgMTUsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ1LCAxNSwgMiwgNTksIDQ4LCAKLSAgICA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCAyMzEsIDIzNywgNywgNiwgMSwgCi0gICAgMjQyLCA2OCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDIsIDY4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDU5LCAKLSAgICA1MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDIsIDY4LCAyLCAyNDgsIDksIDcsIDQsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjUwLCAxOTEsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIAotICAgIDI1MCwgMTkxLCA3LCA2LCAxLCAyNDIsIDY4LCAyLCAyNTEsIDE1NSwgNTEsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDI1MSwgCi0gICAgMTU1LCA1MSwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDIxNiwgOTAsIDUxLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjE2LCAKLSAgICA5MCwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDEwLCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgCi0gICAgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNiwgMSwgMjM1LCAzMCwgMiwgMTQyLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAxNDIsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMzUsIDMwLCAKLSAgICAyLCAyMzIsIDIyMCwgNTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDU5LCA1MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDU5LCAyNTIsIDUxLCAKLSAgICAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1OSwgMjUyLCA1MSwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAKLSAgICAyMzMsIDE1NSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAKLSAgICAyMzMsIDE1NSwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgCi0gICAgMjMyLCA1NSwgMiwgMTQyLCA3LCA0LCAxLCAyMzIsIDU1LCAyLCAxNDIsIDcsIDYsIDEsIDIzMiwgNTUsIDIsIDU5LCA0OCwgCi0gICAgNywgNCwgMSwgMjMyLCA1NSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMzIsIDU1LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMiwgCi0gICAgNTUsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMzAsIDMxLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjMwLCAzMSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMzAsIAotICAgIDMxLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMjMwLCAzMSwgCi0gICAgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDI1MCwgMzksIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDIxNiwgCi0gICAgOTAsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA5MCwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAKLSAgICAyMiwgMjQ4LCA5LCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAyNDgsIDksIDcsIDYsIDEsIDE0NCwgMiwgMjMxLCAKLSAgICAyMzgsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNDQsIAotICAgIDIsIDIzMSwgMjM4LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjM4LCAyMiwgMTQyLCA3LCA2LCAxLCAyMjYsIAotICAgIDExMCwgMiwgMTQyLCA3LCA0LCAxLCAyMjYsIDExMCwgMiwgMTQyLCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgNTksIDQ4LCA3LCAKLSAgICA0LCAxLCAyMjYsIDExMCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjMsIAotICAgIDIyNywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgNTksIDI1MiwgNTEsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgMjIzLCAyMjcsIAotICAgIDIsIDU5LCAyNTIsIDUxLCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDIyMywgMjI3LCAyLCAyMzIsIDIyMCwgNTEsIDcsIDQsIAotICAgIDEsIDIyMywgMjI3LCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCAKLSAgICA5NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDU5LCA1MSwgCi0gICAgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjU1LCAxMiwgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMjU1LCAxMiwgCi0gICAgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjUwLCAyNDMsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTQsIAotICAgIDIsIDI1MCwgMjQzLCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA1OSwgMjUyLCA1MSwgMjIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjIyLCA5NCwgMiwgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCA1OSwgNDgsIAotICAgIDcsIDQsIDEsIDIxNywgMTU0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxNywgCi0gICAgMTU0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAyMzIsIDIyMCwgNTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAKLSAgICAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAyNTAsIDM5LCA1MSwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIAotICAgIDI1MCwgMzksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDUxLCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDUxLCA3LCA2LCAxLCAxMDQsIAotICAgIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIxNiwgOTAsIAotICAgIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA5MCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgCi0gICAgMjIsIDI0OCwgOSwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDI0OCwgOSwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIAotICAgIDE4NCwgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDE4NCwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDU5LCA1MSwgNywgNCwgMSwgCi0gICAgMjE0LCAxMDYsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIxMiwgOTksIDIsIAotICAgIDI0MiwgMTQzLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNiwgMSwgCi0gICAgMjEyLCA5OSwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDgsIDksIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCAKLSAgICA0OCwgNywgNCwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAotICAgIDIxMiwgOTksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxNzksIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxNzksIDIsIAotICAgIDU5LCA0OCwgNywgNiwgMSwgMjExLCAxNzksIDIsIDI0OCwgOSwgNywgNCwgMSwgMjExLCAxNzksIDIsIDI0OCwgOSwgNywgNiwgCi0gICAgMSwgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEwLCAxNjAsIAotICAgIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCAKLSAgICA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAKLSAgICAxLCAyMTAsIDE2MCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyMzIsIDIyMCwgNTEsIDcsIDQsIDEsIAotICAgIDIxNywgMTU0LCAyLCAyNDgsIDksIDcsIDQsIDEsIDIxMiwgOTksIDIsIDIyMiwgMjM3LCA0OCwgNywgNCwgMSwgMjExLCAKLSAgICAxMTgsIDIsIDIyMiwgMjM3LCA0OCwgNywgNCwgMSwgMTE2LCAyLCA0NCwgMTYzLCAyMjIsIDIzNiwgNywgNCwgMSwgMjAwLCAKLSAgICAyMjIsIDk0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIwMCwgMjIyLCA5NCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjAwLCAKLSAgICAyMjIsIDk0LCAyLCAxMjUsIDkxLCA3LCA2LCAxLCAyMjAsIDc4LCAyMjIsIDkzLCA3LCA0LCAxLCAyNDgsIDYyLCA3LCA2LCAKLSAgICAxLCAxMTYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTE2LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDExNiwgMiwgMjQxLCA1OSwgNDgsIAotICAgIDcsIDQsIDEsIDExNiwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDE0MiwgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIAotICAgIDQ4LCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMTE2LCAyLCAyNTAsIDM5LCAKLSAgICAyMiwgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAxODQsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIAotICAgIDU5LCA1MSwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAKLSAgICAyMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAKLSAgICAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDExNiwgMiwgMjUxLCAxNTUsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAyNTEsIDE1NSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMjQxLCA1OSwgNDgsIDcsIAotICAgIDYsIDEsIDExNiwgMiwgMjUxLCAxNTUsIDIyLCAxODQsIDcsIDQsIDEsIDExNiwgMiwgMjUxLCAxNTUsIDIyLCAxODQsIDcsIAotICAgIDYsIDEsIDExNiwgMiwgMjUxLCAxNTUsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgMjUxLCAxNTUsIDIyLCA1OSwgCi0gICAgNTEsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAKLSAgICAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTYwLCAyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAxODQsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMTg0LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzOSwgCi0gICAgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAKLSAgICAzOSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgCi0gICAgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDE4NCwgNywgCi0gICAgNCwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCA1OSwgNTEsIDcsIAotICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0MSwgNTksIDQ4LCA3LCAKLSAgICA0LCAxLCAyNDAsIDE2MSwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIAotICAgIDI0MCwgMTYxLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgCi0gICAgNiwgMSwgMTQ0LCAyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAKLSAgICAyNTAsIDM5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIAotICAgIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAxODQsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDE4NCwgCi0gICAgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCA1OSwgCi0gICAgNTEsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgCi0gICAgNywgNiwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAyNDIsIAotICAgIDE0MywgNywgNiwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDAsIAotICAgIDIyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAxODQsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAKLSAgICAwLCAyMiwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MSwgMCwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDAsIAotICAgIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNiwgMSwgCi0gICAgMTA0LCAyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDEsIAotICAgIDAsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCAwLCAyMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0MSwgMCwgCi0gICAgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIAotICAgIDI0MSwgMCwgMjIsIDI0MSwgNTksIDQ4LCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDI0MSwgNTksIDQ4LCA3LCA2LCAKLSAgICAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDE4NCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAxODQsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgMjQxLCAwLCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDU5LCA1MSwgNywgNiwgMSwgCi0gICAgMjExLCAxMTgsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDIxMSwgMTE4LCAKLSAgICAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTg0LCA3LCA0LCAKLSAgICAxLCAyMTEsIDExOCwgMiwgMTg0LCA3LCA2LCAxLCAyMzAsIDIyOCwgMjMyLCAxOTEsIDcsIDQsIDEsIDIzMCwgMjI4LCAyMzIsIAotICAgIDE5MSwgNywgNiwgMSwgMjMwLCAyMjgsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMzAsIDIyOCwgMjE0LCAxMDUsIDcsIDYsIDEsIAotICAgIDIxMSwgMTE4LCAyLCAyMzIsIDEyOSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTI5LCAyNiwgNCwgMSwgMjU0LCAKLSAgICAxNTIsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIAotICAgIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCAKLSAgICA0LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIAotICAgIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAKLSAgICAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1NywgCi0gICAgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MSwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIAotICAgIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAKLSAgICAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIAotICAgIDExNCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNiwgMSwgMjU0LCAxNTIsIAotICAgIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAKLSAgICAyNDUsIDEwOSwgMiwgMjQ4LCAxNjEsIDI2LCA0LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgCi0gICAgNCwgMSwgMjQ1LCAxMDksIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTA5LCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyNDUsIDEwOSwgMiwgMjI0LCAxNTcsIDI2LCA2LCAxLCAyNDUsIDEwOSwgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyNDUsIAotICAgIDEwOSwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAKLSAgICAxMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIAotICAgIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1NywgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCi0gICAgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNDUsIAotICAgIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjEsIDI2LCAKLSAgICA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAKLSAgICAxNzgsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIAotICAgIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAKLSAgICAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MiwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMzUsIAotICAgIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIDE1NywgMjYsIDYsIAotICAgIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MSwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIAotICAgIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIAotICAgIDEsIDIzNSwgMTkzLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgCi0gICAgMjQ4LCAxNjEsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDQsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjA0LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgCi0gICAgMTE0LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyMjYsIDIwNCwgCi0gICAgMiwgMjI0LCAxNTcsIDI2LCA2LCAxLCAyMjYsIDIwNCwgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyMjYsIDIwNCwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIAotICAgIDIyNiwgMjA0LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDI0OCwgMTYyLCAyMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAKLSAgICAxNjEsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIAotICAgIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgCi0gICAgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNiwgCi0gICAgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIAotICAgIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyMjYsIAotICAgIDIwNiwgMiwgMjQ4LCAxNjEsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCi0gICAgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMjYsIAotICAgIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYxLCAKLSAgICAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIAotICAgIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIAotICAgIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAKLSAgICAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIAotICAgIDI1NCwgMTUyLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCAKLSAgICAxMDksIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwOSwgMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAKLSAgICAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjE0LCAxMywgCi0gICAgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA0LCAyLCAyMTQsIDEzLCAyNiwgNCwgCi0gICAgMSwgMjI2LCAyMDQsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIAotICAgIDE1OCwgMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAKLSAgICAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIAotICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc5LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI0LCAKLSAgICAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE1LCAKLSAgICAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzksIDIyLCAyMjQsIDE3MCwgMjYsIDYsIAotICAgIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc5LCAyMiwgMjI0LCAxNzAsIDI2LCA0LCAxLCAyNDUsIDcyLCAKLSAgICAyLCAyMjQsIDE1OCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTAsIDIxOSwgCi0gICAgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgCi0gICAgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc5LCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc5LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAKLSAgICAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAKLSAgICAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIAotICAgIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE1LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyNDgsIAotICAgIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgCi0gICAgMTc5LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc5LCAyMiwgMjI0LCAKLSAgICAxNzAsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAKLSAgICAyLCAyNDgsIDE2MiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxNCwgCi0gICAgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAKLSAgICAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgCi0gICAgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyMjYsIDIwNiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgCi0gICAgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTUsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc5LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNCwgMSwgMjU0LCAxNTIsIAotICAgIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIzMSwgMjM3LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIxNCwgCi0gICAgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAKLSAgICAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjU0LCAKLSAgICAxNTIsIDIsIDIyNSwgMTc5LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjEzLCAxMjAsIDI2LCA2LCAKLSAgICAxLCAyNTQsIDE1MiwgMiwgMjMxLCAyMzcsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE3MCwgMjYsIDIzNCwgOCwgMjYsIDIyNCwgCi0gICAgMTcwLCAyNiwgMjI0LCAxNTcsIDI2LCAyMjUsIDE3OCwgMjYsIDI0OCwgNCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAKLSAgICAyNDUsIDcyLCAyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI1LCAxNzgsIDI2LCAKLSAgICA0LCAxLCAyNDUsIDcyLCAyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDIxNCwgMTMsIAotICAgIDI2LCA2LCAxLCAyNDUsIDEwOSwgMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgCi0gICAgMjQ1LCA3MiwgMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE3MCwgMjYsIDIyNCwgMTU4LCAyMiwgCi0gICAgMjE0LCAxMywgMjYsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgCi0gICAgMSwgMjM1LCAxOTMsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIzMSwgMjM3LCAyNiwgNCwgMSwgMjM1LCAKLSAgICAxOTMsIDIsIDI0OCwgNCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCA0LCAyMiwgMjI2LCAxMTQsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCA0LCAyMiwgMjI1LCAKLSAgICAxNzgsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjMxLCAyMzcsIAotICAgIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMjYsIDExNCwgMjYsIDI0OCwgCi0gICAgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAKLSAgICAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIzMSwgMjM3LCAyNiwgNCwgCi0gICAgMSwgMjE0LCAxNTgsIDIsIDI0OCwgNCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCA0LCAyMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMjMsIDQxLCAyLCAyMjQsIDE1NywgMjYsIDQsIDEsIDIyMywgNDEsIDIsIDI0OCwgMTYxLCAKLSAgICAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgNCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIzMSwgMjM3LCAKLSAgICAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMjMsIDQxLCAyLCAyNDgsIDE2MSwgMjYsIDI0OCwgNCwgMjIsIDIxNCwgMTMsIDI2LCAyNDgsIDQsIDIyLCAyMjYsIAotICAgIDExNCwgMjYsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgCi0gICAgMjI2LCAyMDYsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCAKLSAgICA0LCAxLCAyMjYsIDIwNiwgMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI1LCAxNzksIDIyLCAyMTAsIAotICAgIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDIyNiwgMTE0LCAyNiwgCi0gICAgNiwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAKLSAgICAyMjYsIDIwNiwgMiwgMjI0LCAxNzAsIDI2LCAyMjYsIDExNCwgMjYsIDI0OCwgMTYxLCAyNDUsIDE1OSwgMjI0LCAzMCwgCi0gICAgMjQ1LCAxNjgsIDIyNCwgMzAsIDI0NSwgMTU5LCAyMTksIDIwLCAyNDUsIDE2OCwgMjE5LCAyMCwgMjE2LCAxNDIsIDIxOSwgCi0gICAgMjAsIDI0NCwgMTcsIDIxOSwgMjAsIDIxOSwgMTI1LCAyMTksIDIwLCAyNDQsIDEyMCwgMjE5LCAyMCwgMjI0LCAxNDQsIAotICAgIDIxOSwgMjAsIDIxNiwgMTcxLCAyMTksIDIwLCAyNDIsIDQyLCAyMTksIDIwLCAyMTAsIDg3LCAyMTEsIDI0NSwgMjE5LCAyMCwgCi0gICAgMjEwLCA4NywgMjExLCAyNDUsIDIyOCwgNzIsIDIxMCwgODcsIDIxMSwgMjQ1LCAyMzUsIDY5LCAyMzMsIDQ0LCA3OSwgMjIyLCAKLSAgICAyNDYsIDc5LCAyNDAsIDE3NSwgMjI4LCA3MywgMjQwLCAxNzUsIDI0NCwgMTIwLCAyNDgsIDE2NCwgMjQ1LCAxNTksIDI0OCwgCi0gICAgMTY0LCAyNDUsIDE2OCwgMjQ4LCAxNjQsIDIwMywgMTMwLCA1MiwgNjcsIDIzMiwgMjE5LCA1MiwgMTIxLCAyMzIsIDIxOSwgCi0gICAgNDMsIDIxOSwgMTU3LCAyMjQsIDEsIDc5LCA0NCwgMjE5LCAxNTcsIDIyNCwgMSwgNzksIDIxOSwgMTU3LCAyMzIsIDExNSwgCi0gICAgMjI0LCAxLCA3OSwgMjE5LCAxNTcsIDI0MSwgMTcwLCAyMjQsIDEsIDc5LCA0MywgNTIsIDIyNCwgMSwgNzksIDQ0LCA1MiwgCi0gICAgMjI0LCAxLCA3OSwgNTIsIDIzMiwgMTE1LCAyMjQsIDEsIDc5LCA1MiwgMjQxLCAxNzAsIDIyNCwgMSwgNzksIDI0OCwgMjEzLCAKLSAgICA1MiwgMjQ4LCAyMTMsIDI1MSwgMTIxLCAyMTUsIDIyMywgMjUxLCAxMjEsIDEyMywgNTksIDIzMywgNjIsIDExMywgNTksIAotICAgIDIzMywgNjIsIDIwMywgMjQ1LCAxNzEsIDI0MCwgMTczLCAyMjUsIDEzLCAyMzIsIDIyMCwgMjIwLCAxMzksIDIyNiwgMTksIAotICAgIDIyMCwgMTM5LCAyMzMsIDQ0LCAyNDUsIDE2NiwgMjIyLCAyNDYsIDI0NSwgMTY2LCAyMjQsIDI0OSwgMjQ3LCAyMDQsIDI0NCwgCi0gICAgMjcsIDIzMywgNDQsIDIyNiwgMTIxLCAyMjIsIDI0NiwgMjI2LCAxMjEsIDIyOSwgMTk5LCAyMjgsIDc4LCAyMTksIDIwLCAKLSAgICAyMjUsIDE4NiwgMjMwLCAxOTgsIDUwLCAyMjUsIDE4NiwgMjE2LCAyNDksIDIxNiwgMTQ5LCA1MCwgMjI0LCAxOTMsIDUyLCAKLSAgICAyMjQsIDE5MywgMjE1LCAyMTIsIDIyNCwgMTkzLCAyMjMsIDUyLCAyMjQsIDE5MywgMjIzLCA1MiwgNTIsIDIyNCwgMTkzLCAKLSAgICAyMjMsIDUyLCAyMTUsIDIxMiwgMjI0LCAxOTMsIDI1MCwgMjQ2LCAyMTksIDE1NywgMjMzLCA0OCwgMjU0LCAxMTgsIDIyNCwgCi0gICAgMSwgNzksIDIxOSwgMTU3LCAyMjIsIDI1MCwgMjU0LCAxMTgsIDIyNCwgMSwgNzksIDIyMywgMTEwLCA3OSwgNTIsIDI0NSwgCi0gICAgMzksIDc5LCAyMzUsIDIwOCwgMjI2LCAxMjMsIDIxNCwgMTgwLCAxMzUsIDIxNiwgMTEyLCAyNTAsIDI0NywgMjM1LCAyMjMsIAotICAgIDIyNSwgMTMsIDI1MywgMjIyLCAyNDAsIDE3NiwgMjUxLCAxMjEsIDI0NCwgMTAsIDIxOSwgOTcsIDQzLCA0MiwgMjUxLCAKLSAgICAxNjYsIDIsIDIyNCwgMTAsIDQ0LCA0MiwgMjUxLCAxNjYsIDIsIDIyNCwgMTAsIDUyLCAyMjQsIDE2LCA3OSwgMjI0LCAxNiwgCi0gICAgMjQ1LCAzOSwgNzksIDI0NSwgMzksIDIyNCwgMTYsIDc5LCAyMTYsIDcxLCA1LCAyNDUsIDczLCAyMjMsIDUyLCAyMjUsIDcxLCAKLSAgICA1MCwgODUsIDE0MCwgMjUxLCAxMjEsIDg1LCA5NywgMjUxLCAxMjEsIDEyMSwgMjUzLCAyMjQsIDIyMywgNTIsIDIyMCwgCi0gICAgMTUyLCAyNTAsIDksIDIxNCwgMTYzLCAxMTMsIDI1MywgMjIzLCAyNTQsIDE2NywgMjEzLCAxODgsIDI0OSwgMjI1LCAyMzAsIAotICAgIDE4NywgNTAsIDIxNywgMjM1LCAyNDgsIDE2NCwgMjM1LCAyMDAsIDIxNCwgMTgwLCAyNDQsIDYwLCAyMjQsIDE0NCwgNzksIAotICAgIDEzNCwgNTksIDIyNCwgMTQzLCAyMjQsIDI3LCAyMjQsIDE5MywgMjQ0LCAxOSwgNTksIDIyNCwgMTQzLCAyNDQsIDg5LCA1OSwgCi0gICAgMjI0LCAxNDMsIDExMywgNTksIDIyNCwgMTQzLCAyNDQsIDE5LCA1OSwgNzksIDI0NiwgMTI2LCAyNDksIDEzOCwgMjE1LCAKLSAgICAyMjIsIDY3LCAyNDQsIDE5LCAyNDcsIDEyNiwgMjMxLCA4NywgMTEsIDIxOSwgMjAsIDIxMSwgMjA5LCAyMzUsIDY5LCAyNDMsIAotICAgIDIzNCwgMjU0LCA2MCwgMjM1LCAxOTgsIDIxNiwgODYsIDIzNSwgMTk4LCAyMjAsIDEzOSwgMjM1LCAxOTgsIDIyNSwgMjUsIAotICAgIDIzMywgNDQsIDIzNSwgMTcxLCAyMjIsIDI0NiwgMjM1LCAxNzEsIDI0NCwgMTAwLCAyMTgsIDkxLCAyMzUsIDE3MSwgMjI0LCAKLSAgICAyNDksIDI0NywgMjA0LCAyMzUsIDE3MSwgMjM1LCAyMzUsIDIxNywgMTgzLCAyMTcsIDI1MiwgMjU1LCAxNCwgMjE3LCAxODMsIAotICAgIDIxNywgMjUyLCAyMzUsIDIzNSwgOSwgMjQ0LCAyOCwgMjIwLCA4MiwgMjU1LCAxNCwgOSwgMjQ0LCAyOCwgMjIwLCA4MiwgCi0gICAgMjI5LCAxOTQsIDIxLCAyMjAsIDgzLCAyMjgsIDc0LCAyMSwgMjIwLCA4MywgMjE4LCAyNCwgMjEwLCA4NiwgMjE4LCAyNCwgCi0gICAgNywgNCwgMSwgNzQsIDIxOCwgMjQsIDE2MSwgMjE4LCAyNCwgMTkwLCAyMTgsIDI0LCAxOTUsIDIxOCwgMjQsIDE5OSwgMjE4LCAKLSAgICAyNCwgMTk2LCAyMTgsIDI0LCAyMDEsIDIxOCwgMjQsIDk2LCA1MCwgMjE4LCAyNCwgMjMwLCAxODYsIDIxOCwgMjQsIDI0NSwgCi0gICAgMTA2LCA1MCwgMjE4LCAyNCwgNDMsIDIyNiwgNywgMjE4LCAyNCwgNDQsIDIyNiwgNywgMjE4LCAyNCwgNywgNCwgMSwgMjMwLCAKLSAgICAzMCwgMjE4LCA2NiwgMjEwLCA4NiwgMjE4LCA2NiwgMTExLCAyMTgsIDY2LCAxMDUsIDIxOCwgNjYsIDE1OCwgMjE4LCA2NiwgCi0gICAgMTYxLCAyMTgsIDY2LCAxOTAsIDIxOCwgNjYsIDE5NSwgMjE4LCA2NiwgMTk5LCAyMTgsIDY2LCAxOTYsIDIxOCwgNjYsIAotICAgIDIwMSwgMjE4LCA2NiwgOTYsIDUwLCAyMTgsIDY2LCAyMzAsIDE4NiwgMjE4LCA2NiwgMjQ1LCAxMDYsIDUwLCAyMTgsIDY2LCAKLSAgICA0MywgMjI2LCA3LCAyMTgsIDY2LCA0NCwgMjI2LCA3LCA3LCAyMTgsIDY2LCA0LCAxLCA2MSwgNywgMjE4LCA2NiwgNCwgMSwgCi0gICAgNzYsIDcsIDIxOCwgNjYsIDQsIDEsIDc4LCA3LCAyMTgsIDY2LCA0LCAxLCAyMTEsIDE3OCwgNywgMjE4LCA2NiwgNCwgMSwgCi0gICAgMjIxLCAxOTcsIDcsIDIxOCwgNjYsIDQsIDEsIDI0MiwgNjcsIDcsIDIxOCwgNjYsIDQsIDEsIDIzNSwgMjksIDcsIDIxOCwgCi0gICAgNjYsIDQsIDEsIDE1NiwgNywgMjE4LCA2NiwgNCwgMSwgMTk0LCA3LCAyMTgsIDY2LCA0LCAxLCAyMzAsIDMwLCA3LCAyMTgsIAotICAgIDY2LCA0LCAxLCAyMjYsIDEwOSwgNywgMjE4LCA2NiwgNCwgMSwgMjIyLCA5MywgNywgMjE4LCA2NiwgNCwgMSwgMjE3LCAKLSAgICAxNTMsIDI0NSwgNTQsIDUwLCAyNDksIDIzNSwgNTAsIDI0OSwgMTI1LCA1MCwgMjQ0LCAzLCAyNDQsIDYsIDUwLCAyMzIsIAotICAgIDIwNCwgNTAsIDIzMCwgMTk5LCA1MCwgMjI5LCAyMTUsIDUwLCAyMjUsIDE2NSwgNTAsIDIyMiwgMTIwLCA1MCwgMjExLCAKLSAgICAyMTcsIDUwLCAxNjYsIDIyMCwgNTEsIDUwLCAyNDcsIDEzNSwgNTAsIDI0NSwgNTUsIDUwLCAyMzQsIDgyLCA1MCwgMjE1LCAKLSAgICAxMTMsIDUwLCAyNDYsIDEwOSwgNTAsIDI0MywgNDcsIDIyNSwgMTk2LCA1MCwgMjI1LCAxNjMsIDUwLCAyNDIsIDExNiwgNTAsIAotICAgIDI1MywgMTkwLCA1MCwgMjQwLCAyMzUsIDUwLCAyNTAsIDE5MywgNTAsIDIzMiwgMTk3LCAyMTYsIDQsIDUwLCAyMTksIDIsIAotICAgIDUwLCAyMTYsIDI0NiwgNTAsIDIzNSwgMjQ4LCAyMjIsIDEyMCwgNTAsIDIxNSwgOTcsIDIzMiwgMjA0LCA1MCwgMzgsIDQzLCAKLSAgICAyNDIsIDYsIDQ4LCAzOCwgNDQsIDI0MiwgNiwgNDgsIDM4LCAyMDAsIDY3LCAyMzIsIDIyMCwgMjI2LCAxMjQsIDM4LCAyMTksIAotICAgIDI1MywgNjcsIDIzMiwgMjIwLCAyMjYsIDEyNCwgMzgsIDI1NCwgOTYsIDgwLCA0OCwgMzgsIDI1MCwgMTAsIDgwLCA0OCwgCi0gICAgMzgsIDQzLCA4MCwgNDgsIDM4LCA0NCwgODAsIDQ4LCAzOCwgMjIyLCAyMzcsIDIyNiwgMTI0LCAzOCwgMjUwLCAxMCwgMjIyLCAKLSAgICAyMzcsIDIyNiwgMTI0LCAzOCwgMjU0LCA5NiwgMjIyLCAyMzcsIDIyNiwgMTI0LCAzOCwgMTM0LCAxNzAsIDQ4LCAzOCwgCi0gICAgMjQ0LCAxOSwgMTcwLCA0OCwgMzgsIDI0NSwgMTU0LCAyNTAsIDQzLCAzOCwgMjQ1LCAxNTQsIDIxOCwgMjM2LCAzOCwgMjQ1LCAKLSAgICAxNTQsIDI0OCwgMCwgMzgsIDI0NSwgMTU0LCAyNTAsIDQ0LCAyNTIsIDE4OCwgMzgsIDQzLCA0NCwgODAsIDQ4LCAzOCwgCi0gICAgMjQ1LCAxNTQsIDIyMSwgMTkwLCAzOCwgMjQ1LCAxNTQsIDIzNCwgMTQxLCAzOCwgMjQ1LCAxNTQsIDIxNCwgMTU1LCAyMjUsIAotICAgIDEwLCAyMTUsIDIyNiwgMzgsIDIyMywgNTMsIDIxOSwgNDksIDIyNiwgMTI0LCAzOCwgNTIsIDY3LCAyMTgsIDEwNSwgMjI2LCAKLSAgICAxMjQsIDM4LCAyNTQsIDEwNiwgODcsIDM4LCAyMTUsIDIxMiwgMjE0LCAxODIsIDM4LCAyMTEsIDI0NywgMjUxLCAxNDgsIAotICAgIDQ4LCAzOCwgMTQwLCA4MCwgMjI2LCAxMjQsIDM4LCAyMDAsIDUyLCAyMTksIDQ5LCAyMjYsIDEyNCwgMzgsIDk3LCAyNDIsIAotICAgIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExMSwgMzgsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIDM4LCA0MywgCi0gICAgODAsIDUxLCAzOCwgNDQsIDgwLCA1MSwgMzgsIDI1MywgMjI1LCA0OCwgMjU1LCAyMCwgMjI2LCAyMzUsIDI1NSwgNCwgMjE2LCAKLSAgICA0MywgMjE2LCAxOTcsIDIxOCwgNzUsIDEzOSwgNiwgMjUxLCA3NCwgMjQ4LCA3OSwgMjUwLCAxODYsIDI1MCwgMTgzLCAyMzIsIAotICAgIDIyMCwgODcsIDI1MCwgMjQ4LCAyMjYsIDIzNSwgMjUxLCAzNCwgMjE0LCAxODksIDI0NSwgNTYsIDI0OSwgMTk5LCAyMjEsIAotICAgIDE4NywgMjQ4LCA3OSwgMjQ0LCAxODcsIDExOSwgNCwgMjQzLCAyMDksIDExOSwgNiwgMjQyLCA2NywgMjUxLCAyMjcsIDYsIAotICAgIDI0MiwgNjcsIDEzOSwgNiwgMjQyLCA2NywgMjI1LCA0MCwgMjQ5LCAxOTksIDIyNSwgNDAsIDI0OSwgMjAwLCAxMTUsIDExMywgCi0gICAgMjI1LCAxMTEsIDExOSwgNiwgNzQsIDI1MSwgMjI3LCA2LCA3NCwgMTE5LCA2LCAxNTYsIDExOSwgNCwgMTU2LCAyMzMsIAotICAgIDE1NSwgNTcsIDI1MiwgMTQ5LCA4NywgMTM5LCA2LCAyMzAsIDMwLCAyMjcsIDIwMCwgNTAsIDIxOSwgMzMsIDIyMywgMTIyLCAKLSAgICAyNDksIDE3MCwgMTE5LCA2LCAyMjYsIDEwOSwgMTM5LCA2LCAyMjYsIDEwOSwgMTM5LCA2LCAyMjQsIDk5LCAxMTksIDYsIAotICAgIDE1MywgMjUxLCAyMjcsIDYsIDE1MywgMTM5LCA2LCAxNTMsIDIyNCwgMTk5LCAyMTcsIDcyLCAyMjMsIDY1LCAyMjAsIDEzNCwgCi0gICAgNzksIDIxNywgMiwgNTAsIDIxNSwgMjU0LCAxNjQsIDUwLCAyMTMsIDI0MCwgMTM5LCA2LCAyMTAsIDE1OSwgMjI2LCAxMzcsIAotICAgIDUwLCAyMjYsIDIyNSwgNTAsIDIzNSwgMjAwLCAyMjYsIDIyNSwgNTAsIDI1MSwgMjI3LCA2LCAyMTAsIDE1OSwgMjE1LCA5NCwgCi0gICAgMjYsIDQsIDEsIDIzNSwgMTkyLCAyMzQsIDE3OSwgNTAsIDI1NCwgMTE1LCA1MCwgMTE5LCA2LCAyNTMsIDE2NiwgMjUxLCAKLSAgICAyMjcsIDYsIDI1MSwgNzQsIDI0NSwgNzYsIDg3LCAxMTksIDQsIDc2LCAxMTksIDYsIDc2LCAxMTksIDYsIDI0NSwgMTQsIAotICAgIDIxNSwgOTQsIDYsIDI0NSwgMTQsIDExOSwgNiwgMTk0LCAxMTksIDQsIDc4LCAxMDksIDg3LCAyNTIsIDM3LCA4NywgMjQyLCAKLSAgICAyMDksIDg3LCAyNDgsIDE5OCwgODcsIDIzNSwgMjM5LCAyMTksIDMxLCAyMjIsIDE4OSwgNiwgMjI0LCA5OSwgMjQ0LCAxOTAsIAotICAgIDUwLCAxMzksIDQsIDIyNSwgMTExLCAxMzksIDQsIDI0MywgMTE0LCAxMzksIDYsIDI0MywgMTE0LCAxMzksIDYsIDIyNSwgCi0gICAgMTExLCAxMzksIDIzMCwgMjksIDIxOCwgNDEsIDIxNSwgOTQsIDM1LCA2LCAyNDMsIDIwOSwgMjE1LCA5NCwgMzUsIDYsIAotICAgIDE1NiwgMjIzLCA1MiwgMzUsIDYsIDE1NiwgMjE1LCA5NCwgMzUsIDYsIDIxMSwgMTE3LCAxMzksIDMyLCA2LCAyNDksIDY4LCAKLSAgICAxMzksIDMyLCA0LCAyNDksIDY4LCAxMzksIDMyLCA0LCA3NiwgMTM5LCAzMiwgNCwgNzQsIDEzOSwgMzIsIDQsIDIzNSwgCi0gICAgMTUwLCAyMjQsIDE3MywgMjMyLCAyMTksIDIxNSwgOTQsIDI1NCwgMTM0LCAyMjUsIDE4NiwgNTAsIDI1NCwgMTg5LCAyMTUsIAotICAgIDk0LCA0LCAyNDUsIDE0LCAxNiwgMzEsIDIyMSwgMjU0LCAyMTksIDMxLCAyMTIsIDExNCwgMjQ0LCAxMCwgMTIzLCAyMjAsIAotICAgIDEyMCwgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjI4LCAxOTksIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIxNiwgMjQyLCAKLSAgICAyMTIsIDExNCwgMjQ0LCAxMCwgMTIzLCAyMTYsIDE2OSwgMjEyLCAxMTQsIDI0NCwgMTAsIDExMywgMjE2LCAxNjcsIDIxMiwgCi0gICAgMTE0LCAyNDQsIDEwLCAxMjMsIDI0NCwgMTI1LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTEzLCAyNDQsIDEyNCwgMjEyLCAxMTQsIAotICAgIDI0NCwgMTAsIDEzNCwgMjQ0LCAxMjQsIDIxMiwgMTE0LCAyNDQsIDEwLCAyNDQsIDE5LCAyNDQsIDEyNCwgMjEyLCAxMTQsIAotICAgIDI0NCwgMTAsIDEyMywgMjE5LCAxMTcsIDIxMiwgMTE0LCAyNDQsIDEwLCAyNDQsIDg5LCAyMTksIDExNSwgMjEyLCAxMTQsIAotICAgIDI0NCwgMTAsIDEyMywgMjQ1LCAxOTYsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMzQsIDI0NSwgMTk0LCAyMTIsIDExNCwgMjQ0LCAKLSAgICAxMCwgMjQ0LCA4OSwgMjQ1LCAxOTQsIDIxMiwgMTE0LCAyNDQsIDEwLCAyMjAsIDEyNCwgMjQ1LCAxOTQsIDI0NCwgMTAsIAotICAgIDIyNywgMjAxLCAxMTEsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTExLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEwNSwgMjIyLCAKLSAgICAyMDAsIDIyNywgMjAyLCAxNTgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTYxLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE5MCwgCi0gICAgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTUsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk5LCAyMjIsIDIwMCwgMjI3LCAyMDIsIAotICAgIDE5NiwgMjIyLCAyMDAsIDIyNywgMjAyLCAyMDEsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE2LCAyNDgsIDIyMiwgMjAwLCAKLSAgICAyMjcsIDIwMiwgMjQ1LCAxNzUsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE1LCA3NiwgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIAotICAgIDEyMiwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDI0MCwgMjE3LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDI0NCwgODksIDI0MCwgCi0gICAgMjE3LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjE2LCAxNDgsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTExLCA0LCAKLSAgICAyMjIsIDIwMCwgMjI3LCAyMDIsIDEwNSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxNTgsIDQsIDIyMiwgMjAwLCAyMjcsIAotICAgIDIwMiwgMTYxLCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE5MCwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTUsIDQsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTk5LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE5NiwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAKLSAgICAyMDEsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE2LCAyNDgsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ1LCAxNzUsIDQsIAotICAgIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE1LCA3NiwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDEyMiwgNCwgMjIyLCAKLSAgICAyMDAsIDIyNywgMjAyLCAxMjMsIDI0MCwgMjE3LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDI0NCwgODksIDI0MCwgMjE3LCAKLSAgICA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjE2LCAxNDgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTIzLCAyMTYsIDE0OSwgCi0gICAgMjUxLCA3NSwgMjQ5LCA2OCwgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyMTYsIDE0OCwgMjIyLCAyMDAsIDIyNywgCi0gICAgMjAyLCAyMTYsIDI0OSwgMjE2LCAxNDgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjIzLCA1MiwgMTIzLCAyNDAsIDIxNywgNywgCi0gICAgNCwgMSwgMjIzLCA1MiwgMjUxLCA3NCwgMjIyLCAyMDAsIDIyNywgMjAyLCAyMTksIDEyNywgMjMzLCA4NCwgMTcsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjMsIDI0NSwgMjM0LCAxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDEyMywgMjE2LCAKLSAgICAxNDgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxOCwgMjE2LCAxNDgsIDIxMiwgMTE0LCAyNDQsIDEwLCAyMTAsIAotICAgIDg3LCAyMTYsIDE2NywgMTQwLCA3NSwgMjE0LCAxNTMsIDc1LCA5NywgNzUsIDI0NiwgMTEyLCA3NSwgNDMsIDQ0LCA3NSwgCi0gICAgMTIwLCAxMjQsIDc1LCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDIxOSwgMzAsIDI0NSwgCi0gICAgMjI4LCA3NSwgMjE5LCAzMCwgMjEyLCA5LCA3NSwgMTQwLCA4MCwgMiwgOTEsIDk3LCA4MCwgMiwgOTEsIDE0MCwgMjEyLCAKLSAgICAzNiwgNzUsIDk3LCAyMTIsIDM2LCA3NSwgMTQwLCAxMTMsIDI0MSwgMjQxLCA3NSwgMjE0LCAxNTMsIDExMywgMjQxLCAyNDEsIAotICAgIDc1LCA5NywgMTEzLCAyNDEsIDI0MSwgNzUsIDI0NiwgMTEyLCAxMTMsIDI0MSwgMjQxLCA3NSwgMTQwLCA4MCwgMiwgMjE3LCAKLSAgICA3OCwgOTcsIDgwLCAyLCAyMTcsIDc4LCAxNDAsIDgwLCAyNDMsIDI1MSwgMTMwLCAyMTQsIDE1MywgODAsIDI0MywgMjUxLCAKLSAgICAxMzAsIDk3LCA4MCwgMjQzLCAyNTEsIDEzMCwgMjQ2LCAxMTIsIDgwLCAyNDMsIDI1MSwgMTMwLCAxMjAsIDEyNCwgODAsIDIsIAotICAgIDI1MiwgMTM1LCAxNDAsIDgwLCAyLCAxMDMsIDk3LCA4MCwgMiwgMTAzLCAxNDAsIDgwLCAyLCAyMzIsIDEyOSwgOTcsIDgwLCAKLSAgICAyLCAyMzIsIDEyOSwgNDMsIDQ0LCAyMTIsIDM2LCA3NSwgNDMsIDQ0LCA4MCwgMiwgOTEsIDI0NiwgMTEyLCAyMTAsIDM1LCAKLSAgICA3NSwgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc4LCAyMzMsIDQzLCAyMTQsIDE1MywgODAsIDIsIDIxNiwgNzgsIDIyMiwgCi0gICAgMjQ0LCAyNDYsIDExMiwgODAsIDIsIDIxNiwgNzgsIDIzMywgNDMsIDI0NiwgMTEyLCA4MCwgMiwgMjE2LCA3OCwgMjIyLCAKLSAgICAyNDQsIDk3LCA4MCwgMiwgMjQ5LCAxNjksIDI0NiwgMTExLCAyNDYsIDExMiwgODAsIDIsIDI0OSwgMTY5LCAyMzMsIDQzLCAKLSAgICAyNTQsIDk2LCAyMTYsIDE1LCAyMjAsIDE1NSwgNzUsIDI1MCwgMTAsIDIxNiwgMTUsIDIyMCwgMTU1LCA3NSwgMjI4LCA2MSwgCi0gICAgMjEyLCA5LCA4MCwgMjE2LCA0MywgMjAwLCAxMzAsIDE0MCwgODAsIDIxNiwgNDMsIDI1MiwgMTQ5LCAxMTUsIDk3LCA4MCwgCi0gICAgMjE2LCA0MywgMTMwLCAyNTQsIDk2LCAyMDQsIDI1MCwgNDQsIDc1LCAyNTAsIDEwLCAyMDQsIDI1MCwgNDQsIDc1LCAxNDAsIAotICAgIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIxNCwgMTUyLCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTExLCAyMTQsIAotICAgIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjIyLCAyNDQsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMzMsIAotICAgIDQzLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjE0LCAxNTIsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExMSwgCi0gICAgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjQ0LCAyNDYsIDExMiwgMjQyLCA2LCAyLCAyNTIsIDE0NywgCi0gICAgMjMzLCA0MywgOTcsIDgwLCAxMTUsIDE0MCwgNzUsIDIxNCwgMTUzLCA4MCwgMTQwLCA2NCwgMjQ2LCAxMTIsIDc1LCAxNDAsIAotICAgIDgwLCAxMTUsIDk3LCA3NSwgMTQwLCAyMjYsIDc0LCAyNTMsIDI1NSwgMjE0LCAxNTMsIDIyNiwgNzQsIDI1MywgMjU1LCA5NywgCi0gICAgMjI2LCA3NCwgMjUzLCAyNTUsIDI0NiwgMTEyLCAyMjYsIDc0LCAyNTMsIDI1NSwgMTQwLCAyNDIsIDYsIDExNSwgOTcsIAotICAgIDI0MiwgNSwgOTcsIDI0MiwgNiwgMTE1LCAxNDAsIDI0MiwgNSwgMTQwLCA1MiwgODAsIDIsIDkxLCA0MywgNDQsIDUyLCA4MCwgCi0gICAgMiwgOTEsIDk3LCA1MiwgODAsIDIsIDkxLCAxNDAsIDUyLCA3NSwgMjE0LCAxNTMsIDUyLCA3NSwgOTcsIDUyLCA3NSwgMjQ2LCAKLSAgICAxMTIsIDUyLCA3NSwgNDMsIDQ0LCA1MiwgNzUsIDEyMCwgMTI0LCA1MiwgNzUsIDIyOCwgNjEsIDIxMiwgOSwgNTIsIDc1LCAKLSAgICAyMjgsIDYxLCAyNDUsIDIyOCwgNTIsIDc1LCAyMTksIDMwLCAyNDUsIDIyOCwgNTIsIDc1LCAyMTksIDMwLCAyMTIsIDksIAotICAgIDUyLCA3NSwgMTQwLCAyMTUsIDIxMiwgNzUsIDk3LCAyMTUsIDIxMiwgNzUsIDE0MCwgMjE4LCAyMzIsIDc1LCA5NywgMjE4LCAKLSAgICAyMzIsIDc1LCAyMTQsIDE1MywgODAsIDIsIDUyLCA5MSwgMjQ2LCAxMTIsIDgwLCAyLCA1MiwgOTEsIDE0MCwgMjQ4LCAxNjMsIAotICAgIDc1LCAyMTQsIDE1MywgMjQ4LCAxNjMsIDc1LCA5NywgMjQ4LCAxNjMsIDc1LCAyNDYsIDExMiwgMjQ4LCAxNjMsIDc1LCAKLSAgICAxNDAsIDgwLCAyMTYsIDQzLCAxMzAsIDk3LCA4MCwgMjE2LCA0MywgMTMwLCAxNDAsIDcxLCA3NSwgMjE0LCAxNTMsIDcxLCAKLSAgICA3NSwgOTcsIDcxLCA3NSwgMjQ2LCAxMTIsIDcxLCA3NSwgMjE0LCAxNTMsIDcxLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjE0LCAKLSAgICAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE3LCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDIwMSwgMjI1LCAyMTgsIDIsIAotICAgIDIwMywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDIwMSwgMjI1LCAyMTgsIDIsIDY3LCAxMzAsIDIxNCwgMTUzLCA3MSwgCi0gICAgNTIsIDc1LCAyMTQsIDE1MywgNzEsIDUyLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE3LCA5NywgNzEsIDgwLCAyNDMsIDI1MSwgCi0gICAgMjEyLCA1NiwgMjI4LCA2MSwgMjEyLCA5LCA4MCwgMjE2LCA0MywgMjQ5LCAxNjgsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgCi0gICAgMjE2LCA0MywgMjQ5LCAxNjgsIDEyMCwgMTI0LCA3MSwgNzUsIDQ0LCA4MCwgMiwgNCwgMjUwLCA0MywgMjQ2LCAxMTIsIDgwLCAKLSAgICAxNDAsIDY0LCAyMTQsIDE1MywgNzUsIDEzNCwgOTcsIDI1MywgMjU1LCAxNDAsIDgwLCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgCi0gICAgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA2NywgOTEsIDE0MCwgODAsIDIsIDUyLCA2NywgOTEsIDk3LCA4MCwgMiwgNTIsIDY3LCAKLSAgICA5MSwgNDMsIDQ0LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyMjYsIDE3NywgNzUsIDk3LCAyMjYsIDE3NywgNzUsIDQzLCAKLSAgICA0NCwgMjI2LCAxNzcsIDc1LCAzMSwgMjU0LCAxNjMsIDI0OSwgMjIyLCAyMjYsIDEsIDI0NywgMjQxLCAyMTYsIDE4OCwgCi0gICAgMjQ1LCAzNSwgMjE2LCAxODgsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDUsIDM2LCAyNDUsIDE2MCwgMjIwLCAxMjksIDIzNSwgCi0gICAgMjUyLCAyMjksIDIyNiwgMjQ1LCAxNzgsIDIyNiwgMjM1LCAyMjgsIDU3LCAyNTQsIDEzMiwgMjQ1LCAxNzgsIDIyNiwgMjM1LCAKLSAgICA0LCAyNDUsIDE3OCwgMjI2LCAyMzUsIDI0OSwgMTk0LCAyNTMsIDI0NiwgMjMxLCA2NywgMjQ3LCAxNDYsIDIyOCwgNTcsIAotICAgIDI0OSwgMTk2LCAyNTMsIDI0NiwgMjMxLCA2NywgNCwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAyMzEsIDY3LCAyNDUsIDE1MSwgCi0gICAgNjQsIDIyNCwgMTc1LCAyMzAsIDI5LCAyMjQsIDE4MywgMjMwLCAyOSwgMjQ5LCAxNzMsIDIzMCwgMjksIDIxOCwgNDEsIAotICAgIDIzMCwgMTg3LCA1MCwgMjMwLCAxODUsIDUwLCA1OSwgMjI1LCAyNSwgMjQ3LCAxNzcsIDIxOSwgOTcsIDIyMCwgMTMwLCAKLSAgICAyMzAsIDE4NiwgMjUzLCAyMjUsIDIyNiwgMTcxLCAyMjIsIDIzNywgMjI2LCAxNzEsIDI1MSwgMTIyLCAyMjYsIDE3MSwgNDIsIAotICAgIDIyMiwgMTk1LCAyNDksIDExNywgMjIyLCAxOTUsIDI0NCwgMTIsIDIyMiwgMTk1LCAyMjQsIDE3MSwgMTEyLCAyMzUsIDI0MSwgCi0gICAgNDQsIDI1NCwgMTE3LCAyNTQsIDExNywgMjMxLCA5MywgMjU0LCAxMTcsIDIxOSwgMSwgMjU0LCAxMTcsIDI0NywgMTc5LCAKLSAgICAyNDcsIDE0NiwgMjI4LCA1NywgMjQ3LCAxODIsIDIyNiwgMTIsIDExMiwgMjI4LCA1NywgMjI2LCAxMiwgMTEyLCAyMzIsIAotICAgIDE1MiwgMjU0LCAxMjYsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjM1LCAyMDUsIDIxNCwgMTc1LCAyMzUsIDIxOCwgNTIsIDIzNSwgCi0gICAgMjE4LCAyMTUsIDIxMiwgMjM1LCAyMTgsIDI0OSwgMTkwLCAyMzUsIDIxOCwgMjE4LCAxNCwgMjM1LCAyMTgsIDIxMywgMTI5LCAKLSAgICAyMzUsIDIxOCwgMjUwLCAxMCwgMjM1LCAyMTgsIDI1MCwgMTAsIDI0OSwgMTkwLCAyMzUsIDIxOCwgMjU0LCA5NiwgMjQ5LCAKLSAgICAxOTAsIDIzNSwgMjE4LCAyMTYsIDE4NywgMjUyLCA3NSwgMjIzLCAxNDAsIDIyNCwgMTcyLCA1OSwgMjMwLCAxODYsIDI0NSwgCi0gICAgNDEsIDI0MywgNTMsIDIyNCwgMTcyLCAyNDEsIDY0LCAyMTYsIDkwLCAyMjYsIDE3MSwgMjIzLCA1MiwgMTg0LCAyMzUsIAotICAgIDIwMCwgMjMzLCA3MSwgMjIyLCA5MywgMjE5LCAxNTksIDIxMiwgMzUsIDIxMSwgMjAwLCAyMjQsIDE4MywgMjI4LCA1NywgCi0gICAgMTg0LCAyMzAsIDE4NywgMTg0LCAyNTMsIDIxOCwgMTI4LCAxMTIsIDIyOCwgNTcsIDI1MywgMjE4LCAxMjgsIDExMiwgMjU0LCAKLSAgICA1NiwgMTI4LCAxMTIsIDI1NCwgNTYsIDI1MSwgOTYsIDIyOCwgNTcsIDI1NSwgMTMsIDEyOCwgMTEyLCAyMjksIDEwNSwgCi0gICAgMjU0LCA1NiwgMjI4LCA2NCwgMjU1LCAxMywgMTI4LCAxMTIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjI4LCA1NywgMjU0LCAKLSAgICAxNTYsIDEyOCwgMTEyLCAyNTQsIDE1NiwgMTI4LCAxNzcsIDEyOCwgMTEyLCAyMTUsIDIxMiwgMTg0LCAyNTQsIDE2NCwgCi0gICAgMTI4LCAxMTIsIDI0NSwgMTAyLCAxMTIsIDI0MywgNTIsIDI0NSwgMTAyLCAxMTIsIDI0NywgMjQyLCAyNTIsIDMxLCAyNTQsIAotICAgIDU4LCAyMTYsIDE5NywgMjMyLCAyMjcsIDI0MywgNTIsIDEyOCwgMTEyLCAyNTQsIDU2LCAxMjgsIDIxNiwgNDMsIDE3NywgCi0gICAgMjE2LCAxOTcsIDIzNiwgMjIsIDIyNiwgMjM1LCAyMzYsIDIyLCA2NCwgMTc3LCAyNTQsIDU2LCAxMjgsIDExMiwgMjQ5LCAKLSAgICAyMzUsIDI0NSwgMTA1LCAyNDUsIDEwNiwgMjQ5LCAyMzQsIDIyMiwgMjM3LCAyMzYsIDcsIDEyOCwgMTEyLCAyMjIsIDIzNywgCi0gICAgMTI4LCAxMTIsIDI0OSwgMTYyLCAxMTIsIDI0NSwgNzUsIDI0NSwgMTA0LCAxMTIsIDIxOCwgMTU5LCAyNDUsIDEwNSwgMjQ4LCAKLSAgICA2MywgMTI4LCAxMTIsIDEyOCwgMjE2LCA0MywgMjUxLCA4NiwgMjQ4LCA4MCwgMjMxLCA5MywgMjUxLCA4NSwgMjI0LCAxNCwgCi0gICAgMTI4LCAxMTIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyNDAsIDExMSwgMTEyLCAyMjgsIDU3LCAyNDAsIDExMSwgMTEyLCAyMTgsIAotICAgIDExMSwgMjQ1LCAxMDIsIDExMiwgMjMzLCAyMSwgMTc3LCAxMjgsIDExMiwgMjQyLCAxMzcsIDE3NywgMTI4LCAxMTIsIDIzMywgCi0gICAgMjEsIDExNSwgMTI4LCAxMTIsIDI0MiwgMTM3LCAxMTUsIDEyOCwgMTEyLCAyMzMsIDIxLCAyNTEsIDk2LCAyMjgsIDU3LCAKLSAgICAxMjgsIDExMiwgMjQyLCAxMzcsIDI1MSwgOTYsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMzAsIDEwMiwgMjMzLCAyMCwgMjMwLCAKLSAgICAxMDIsIDI0MiwgMTM2LCAyNTIsIDMxLCAyMjgsIDU3LCAyNDUsIDEwMiwgMTEyLCAyMjgsIDU3LCAyMzMsIDIwLCAyMjgsIAotICAgIDU3LCAyNDIsIDEzNiwgMjI5LCAxMDUsIDIzMywgMjEsIDIyOCwgNjQsIDEyOCwgMTEyLCAyMjksIDEwNSwgMjQyLCAxMzcsIAotICAgIDIyOCwgNjQsIDEyOCwgMTEyLCAyMzMsIDIxLCAxNzcsIDI0NSwgMTAyLCAxMTIsIDI0MiwgMTM3LCAxNzcsIDI0NSwgMTAyLCAKLSAgICAxMTIsIDIyOSwgMTA1LCAyMzMsIDIxLCAyMjgsIDY0LCAyNDUsIDEwMiwgMTEyLCAyMjksIDEwNSwgMjQyLCAxMzcsIDIyOCwgCi0gICAgNjQsIDI0NSwgMTAyLCAxMTIsIDIzMywgMjEsIDE3NywgMjQyLCAxMzYsIDI0MiwgMTM3LCAxNzcsIDIzMywgMjAsIDIyOSwgCi0gICAgMTA1LCAyMzMsIDIxLCAyMjgsIDY0LCAyNDIsIDEzNiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAyMjgsIDY0LCAyMzMsIDIwLCAKLSAgICAyMjQsIDIwNSwgMjE4LCA1NiwgMjI0LCAyMDYsIDE3NywgMTI4LCAxMTIsIDIxOCwgNTcsIDE3NywgMTI4LCAxMTIsIDIyNCwgCi0gICAgMjA2LCAxNzcsIDI0NSwgMTAyLCAxMTIsIDIxOCwgNTcsIDE3NywgMjQ1LCAxMDIsIDExMiwgMjQ3LCAxNDYsIDIyOCwgNTcsIAotICAgIDIyNCwgMjA4LCAyNDcsIDE0NiwgMjI4LCA1NywgMjE4LCA1OCwgMjE4LCA2NSwgMjI2LCAyMzUsIDIxOCwgMjMsIDIyNiwgCi0gICAgMjM1LCAyMjgsIDU3LCAxMTYsIDIxOCwgNjUsIDIyNiwgMjM1LCAyMjgsIDU3LCAxMTYsIDIxOCwgMjMsIDIyNiwgMjM1LCAKLSAgICAyMTgsIDY1LCA2NCwgMTc3LCAxMjgsIDExMiwgMjE4LCAyMywgNjQsIDE3NywgMTI4LCAxMTIsIDIyOSwgMTA1LCAxMTYsIAotICAgIDIxOCwgNjUsIDY0LCAyMjgsIDY0LCAxMjgsIDExMiwgMjI5LCAxMDUsIDExNiwgMjE4LCAyMywgNjQsIDIyOCwgNjQsIDEyOCwgCi0gICAgMTEyLCAyMTgsIDY1LCA2NCwgMiwgMjI4LCA1NywgMTI4LCAxMTIsIDIxOCwgMjMsIDY0LCAyLCAyMjgsIDU3LCAxMjgsIAotICAgIDExMiwgMjMwLCA4NiwgMjMwLCA4NywgMjMwLCA4OCwgMjMwLCA4NywgMjE0LCAxNzUsIDQyLCAyMzYsIDIyLCAyMjYsIDIzNSwgCi0gICAgNDIsIDIyNiwgMTU0LCAyMjYsIDIzNSwgNDIsIDIzNiwgMjIsIDY0LCAxNzcsIDEyOCwgMTEyLCA0MiwgMjI2LCAxNTQsIDY0LCAKLSAgICAxNzcsIDEyOCwgMTEyLCA0MiwgMjUxLCAzLCA0MiwgMjQ5LCAxMTAsIDM3LCAyMjUsIDI1LCAzNywgMjMwLCAxODYsIDM3LCAKLSAgICAyMTYsIDg2LCAzNywgMjQ3LCAxNzcsIDIxOSwgOTcsIDM3LCA1OSwgMjI2LCAxNzEsIDM3LCAyMjIsIDIzNywgMjI2LCAxNzEsIAotICAgIDM3LCAyNTMsIDIyNSwgMjI2LCAxNzEsIDM3LCAyNDUsIDEwNSwgMzcsIDI0OCwgMTY0LCA5MiwgMjI1LCAyNSwgOTIsIDIzMCwgCi0gICAgMTg2LCA5MiwgMjE2LCA4NiwgOTIsIDU5LCAyMjYsIDE3MSwgNDQsIDIxNywgODgsIDQzLCAyMTcsIDg4LCAxMjQsIDIxNywgCi0gICAgODgsIDEyMCwgMjE3LCA4OCwgMjUzLCAyMjgsIDIzMCwgMTYxLCAyMTUsIDE5MiwgMjQ0LCAzMywgMjE1LCAyMTIsIDY3LCAKLSAgICAyNTIsIDE0OSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDksIDUyLCA0NCwgMjE1LCA5MywgMjQ3LCAxNDYsIDIyOCwgCi0gICAgNTcsIDIyNCwgMTY2LCAyMjgsIDU3LCAyMTUsIDE5MiwgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NCwgMzQsIDIyOSwgMTA3LCAKLSAgICA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDQsIDIxNSwgOTMsIDIyNCwgMjA2LCAyMTQsIDE4NCwgMjIzLCA5NCwgMjE4LCA1NywgCi0gICAgMjE0LCAxODQsIDIyMywgOTQsIDIyOCwgNjIsIDIxOCwgNzgsIDIyNiwgMjM1LCAyNDksIDE5NCwgMjUzLCAyNDYsIDIyOCwgCi0gICAgNjIsIDIxOCwgNzcsIDIyOCwgNjIsIDIxOCwgNzgsIDY0LCAxNzcsIDEyOCwgMTEyLCAyNDksIDE5NCwgMjUzLCAyNDYsIAotICAgIDIyOCwgNjIsIDIxOCwgNzgsIDE3NywgMTI4LCAxMTIsIDIyNiwgMTU0LCAyMjYsIDIzNSwgMjM2LCAyMiwgMjI2LCAyMzUsIAotICAgIDIzMCwgOTIsIDI0MSwgMjA3LCAyNDksIDIwNCwgMjMxLCAxNDIsIDIzNSwgMjE1LCAyMTEsIDE0NSwgMjI5LCAyMDcsIDIyOCwgCi0gICAgNjMsIDQ0LCAyNTQsIDExOCwgMiwgMjU0LCAzMywgNDQsIDIxNSwgMjI2LCAyMzAsIDI5LCAyMzIsIDE1MiwgMjU0LCAxMjYsIAotICAgIDIzMCwgMjksIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjMwLCAyOSwgMjM1LCAyMDUsIDIzMCwgMjksIDIxNCwgMTc1LCAyNDgsIAotICAgIDEsIDIyNiwgMTcxLCA1OSwgMjI2LCAxNzEsIDIxOCwgMTU5LCAyMjYsIDE3MSwgMjQ3LCAxNzcsIDIxNiwgODYsIDI1MSwgCi0gICAgMTcyLCA0MywgMjI4LCA2MiwgMjQ0LCAxODksIDIyMCwgMTUxLCAyMjQsIDE4MywgNDQsIDIyOCwgNjIsIDI0NCwgMTg5LCAKLSAgICAyMjAsIDE1MSwgMjI0LCAxODMsIDQzLCAyMjAsIDE1MSwgMjI0LCAxODMsIDQ0LCAyMjAsIDE1MSwgMjI0LCAxODMsIDIyMywgCi0gICAgNTIsIDIxNiwgOTAsIDI0NSwgMTA1LCAyNDksIDEwNywgMjMyLCAxNTIsIDIyNiwgMTYyLCAyNDksIDEwNywgMjMyLCAxNTIsIAotICAgIDI1NCwgMTI2LCA1MiwgMjE4LCA2NCwgNTIsIDIxOCwgMjIsIDUyLCAyMzUsIDIwNSwgNTIsIDIxNCwgMTc1LCAyMjUsIDUwLCAKLSAgICAxMjgsIDIyLCAyMjYsIDEyLCAxMTIsIDIzMywgMjEsIDIsIDI0NywgMTI4LCAyNDIsIDEzNywgMiwgMjQ3LCAxMjgsIDIxMywgCi0gICAgMTg3LCAyMzAsIDEwMiwgMjMzLCAyMCwgMjEzLCAxODcsIDIzMCwgMTAyLCAyNDIsIDEzNiwgMjMzLCAyMSwgMTI4LCAyMTYsIAotICAgIDQzLCAxNzcsIDI0MiwgMTM2LCAyNDIsIDEzNywgMTI4LCAyMTYsIDQzLCAxNzcsIDIzMywgMjAsIDEyOCwgMjE2LCA0MywgCi0gICAgMTc3LCAyMzMsIDIwLCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzYsIDEyOCwgMjE2LCA0MywgMTc3LCAyMjQsIDIwNSwgCi0gICAgMTI4LCAyMTYsIDQzLCAxNzcsIDIxOCwgNTYsIDI0NywgMTQ2LCAyMjgsIDU3LCAyMjQsIDIwOSwgMTc3LCAyNDUsIDEwNywgCi0gICAgMjQ3LCAxNDYsIDIyOCwgNTcsIDIxOCwgNTksIDE3NywgMjQ1LCAxMDcsIDIyOCwgNTcsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAKLSAgICAxMjgsIDExMiwgMjI4LCA1NywgNDIsIDIyNiwgMTU0LCA2NCwgMTc3LCAxMjgsIDExMiwgNDIsIDIzNiwgMjIsIDY0LCAxNzcsIAotICAgIDIyOCwgNTcsIDEyOCwgMTEyLCA0MiwgMjI2LCAxNTQsIDY0LCAxNzcsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMzMsIDIxLCAKLSAgICAyNTEsIDk2LCAyMjgsIDU3LCAyNDUsIDEwMiwgMTEyLCAyNDIsIDEzNywgMjUxLCA5NiwgMjI4LCA1NywgMjQ1LCAxMDIsIAotICAgIDExMiwgMjI0LCAyMDYsIDI1MSwgOTYsIDIyOCwgNTcsIDI0NSwgMTAyLCAxMTIsIDIxOCwgNTcsIDI1MSwgOTYsIDIyOCwgCi0gICAgNTcsIDI0NSwgMTAyLCAxMTIsIDIyOCwgNTcsIDIyOCwgNjIsIDIxOCwgNzgsIDIyNiwgMjM1LCAyNDcsIDE0NiwgMjI4LCAKLSAgICA1NywgMjQ5LCAxOTYsIDI1MywgMjQ2LCAyMjgsIDYyLCAyMTgsIDc3LCAyMjgsIDU3LCAyMjgsIDYyLCAyMTgsIDc4LCA2NCwgCi0gICAgMTc3LCAxMjgsIDExMiwgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0OSwgMTk2LCAyNTMsIDI0NiwgMjI4LCA2MiwgMjE4LCA3OCwgCi0gICAgMTc3LCAyNDUsIDEwNywgNjcsIDI0NSwgMTcxLCAyMzAsIDIyNywgMjAzLCAyNDUsIDE3MSwgMTIwLCA0NCwgMjQ4LCA3LCAKLSAgICAyNDUsIDE3MSwgMTI0LCA0NCwgMjQ4LCA3LCAyNDUsIDE3MSwgMjQ1LCAxNzgsIDY0LCAyLCAyMDAsIDIwMywgOTEsIDI0NSwgCi0gICAgMTc4LCA2NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCA0LCAyNDUsIDE3OCwgCi0gICAgNjQsIDIsIDY3LCAyNTIsIDE0OSwgMjUzLCAyMTUsIDI0NSwgMTUxLCA2NCwgMjAzLCA5MSwgMjQ1LCAxNzgsIDY0LCAyLCAKLSAgICA1OSwgNDgsIDI0NSwgMTc4LCA2NCwgMiwgMjI2LCAxMjcsIDQsIDI0NSwgMTc4LCA2NCwgMiwgMjI2LCAxMjcsIDI0NSwgCi0gICAgMTc4LCA2NCwgMiwgMjE0LCAxODMsIDI0NSwgMTc4LCA2NCwgMiwgMTEzLCAyMDMsIDIxOCwgOTIsIDI0OSwgMTk0LCAyLCAKLSAgICAyMDAsIDIwMywgOTEsIDI0OSwgMTk0LCAyLCA2NywgMjUyLCAxNDksIDI1MywgMjE1LCAyNDUsIDE1MSwgNjQsIDIwMywgOTEsIAotICAgIDQsIDI0OSwgMTk0LCAyLCA2NywgMjUyLCAxNDksIDI1MywgMjE1LCAyNDUsIDE1MSwgNjQsIDIwMywgOTEsIDI0OSwgMTk0LCAKLSAgICAyLCAyMjYsIDEyNywgNCwgMjQ5LCAxOTQsIDIsIDIyNiwgMTI3LCAyMTAsIDE2MCwgMTg5LCAyNTIsIDE4MSwgMjMxLCA2NiwgCi0gICAgMjQ4LCAyLCA1MCwgMjQ1LCAxODAsIDc1LCAyNDAsIDI0MSwgMTIwLCAyNTQsIDEsIDEyNCwgMjU0LCAxLCAyMjQsIDE3OCwgCi0gICAgMjI1LCAxNjgsIDIxMiwgMzIsIDIzMiwgMjE5LCA0MywgMjUwLCAxODksIDQ0LCAyNTAsIDE4OSwgNDMsIDI0NCwgNjUsIDQ0LCAKLSAgICAyNDQsIDY1LCAyNTEsIDE4MywgNDQsIDI0OSwgMTQwLCAyNTEsIDE4MywgNDMsIDI0OSwgMTQwLCAyMTYsIDE1LCA0NCwgCi0gICAgMjQ5LCAxNDAsIDIxNiwgMTUsIDQzLCAyNDksIDE0MCwgMjIzLCA1MiwgMjI4LCA1NywgNTAsIDQyLCAyMzIsIDExMCwgMjU0LCAKLSAgICAzMywgMjIxLCAxNjYsIDIyMSwgMTczLCAyMTcsIDIsIDIyMywgMTIzLCAyMjQsIDI0NCwgMjM1LCAyNDUsIDIxMywgMTY1LCAKLSAgICAyMTgsIDIzNiwgMjI1LCA0NCwgNjQsIDIzNSwgMjE0LCA1MCwgMjE1LCA5NCwgMjI4LCA1NywgNTAsIDIxMiwgNDIsIDI0MCwgCi0gICAgMjQzLCAyMTYsIDE1LCA0MywgMjQ5LCAxNjgsIDIxNiwgMTUsIDQ0LCAyNDksIDE2OCwgMjUxLCAxODMsIDQzLCAyNDksIAotICAgIDE2OCwgMjUxLCAxODMsIDQ0LCAyNDksIDE2OCwgMjE2LCAxNSwgMTYzLCAyMzUsIDIxOCwgMjUxLCAxODMsIDE2MywgMjM1LCAKLSAgICAyMTgsIDI0MywgMjQ4LCAyMTksIDc3LCAxMjAsIDI1NCwgMiwgMjUyLCAzMiwgMTEzLCAyMDMsIDI1MiwgMTM3LCAyMjYsIAotICAgIDE2NCwgMjM0LCAxNDQsIDI0NSwgOTgsIDIxNiwgNDMsIDIxNiwgMTk3LCAyMjIsIDI1NCwgMjExLCAxNzksIDIzNiwgNywgCi0gICAgMTE2LCAyMjMsIDEyMCwgMjUxLCAxNzEsIDIzNCwgMTQzLCAyMzMsIDQ4LCAyNTQsIDExOCwgMTI3LCAyMjIsIDI1MCwgMjU0LCAKLSAgICAxMTgsIDEyNywgMjQ1LCA5OCwgMjE2LCA0MywgMjE2LCAxOTcsIDIzMywgNTIsIDI1MiwgNDMsIDIyMiwgMjM2LCAyNDksIAotICAgIDc4LCAyNTQsIDE2NCwgMjU0LCA5LCAyMTcsIDE4MiwgMjE2LCA1LCAyMjIsIDEyNSwgMjQ3LCAyMjMsIDIyNiwgMTU1LCAKLSAgICAyNDksIDIwNiwgMjE3LCA1MywgMjE5LCA4OCwgMjQ5LCAxNTksIDI0OSwgMTU4LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDI0MCwgMTU4LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIxOCwgMjMwLCAyMjQsIDMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgCi0gICAgMTYsIDIyNCwgMzEsIDI0NSwgMTA3LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI0NywgMTgyLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI0OCwgMCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyMzUsIDYyLCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI1MCwgNDMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjUwLCA0NCwgCi0gICAgMjE4LCAxMzcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjUwLCA0NCwgMjM1LCA2MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyMTksIDk4LCAxMzAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjUyLCAxODksIDEzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMjQsIDMxLCAyMTksIDk3LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI1MiwgMTg4LCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIzMywgMjAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjQyLCAxMzYsIAotICAgIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTQwLCAyMTQsIDE5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDk3LCAyMTQsIDE5LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDE0MCwgNzUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgCi0gICAgOTcsIDc1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDI1MiwgMTg4LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDEyNCwgMjE3LCA4OSwgMjE0LCAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQ4LCA2MywgMjE4LCAxMzcsIDI1NCwgCi0gICAgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMTI0LCAyNTAsIDI0NiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAKLSAgICAyNDgsIDYyLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyNCwgMjE3LCA4OSwgMjM1LCA2MiwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMTQsIDE1MywgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyMTQsIDE1MywgNzUsIDI1NCwgCi0gICAgNzQsIDI0MywgMjMyLCAxNiwgMTIwLCAyMTcsIDg5LCAyMjYsIDEyNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDc0LCAKLSAgICAyMTgsIDEzNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAxMjAsIDI1MCwgMjQ2LCAyNTQsIDc0LCAyNDMsIAotICAgIDIzMiwgMTYsIDIyNCwgMzEsIDI0OCwgNzMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTIwLCAyMTcsIDg5LCAyMzUsIDYyLCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0NiwgMTEyLCAyMTQsIDE5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIAotICAgIDI0NiwgMTEyLCA3NSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDAsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgCi0gICAgMTYsIDI0OCwgNjMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgMSwgMjE0LCAxODMsIDI1NCwgNzQsIAotICAgIDI0MywgMjMyLCAxNiwgMjM1LCA2MywgMjE0LCAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjUwLCA0NCwgMjE0LCAKLSAgICAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTIwLCAyMjAsIDcsIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjI0LCAwLCAyMjQsIDMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIxOCwgMTU4LCAyNTQsIDc0LCAyNDMsIAotICAgIDIzMiwgMTYsIDIyNCwgMzEsIDI0OSwgMjM0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjQ4LCA5LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNzQsIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTgsIDE1OSwgCi0gICAgMjQ4LCA5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIzNSwgNjMsIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNTAsIDQ0LCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTI0LCAyMjAsIDcsIDIxOCwgMTM3LCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDQzLCAyMjAsIDcsIDIxOCwgMTM3LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIxNiwgOTAsIDI0OCwgCi0gICAgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDIsIDEzNywgMjQ4LCA5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OSwgCi0gICAgMjI4LCAxMzAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQ4LCA3NCwgMTg0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDIxMCwgMzQsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjE4LCAxMzgsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyMjAsIDE1MywgMjE0LCAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjI4LCA1NywgMjQ1LCAxMDcsIAotICAgIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjI0LCAxNSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjQsIDI1MCwgCi0gICAgMjQ3LCAxODQsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTIwLCAyNTAsIDI0NywgMTg0LCAyNTQsIDc0LCAyNDMsIDIzMiwgCi0gICAgMTYsIDIzNSwgMTkyLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyMywgNDAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI2LCAKLSAgICAyMDUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjU0LCAxNTIsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDI0NSwgMTA5LCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMzUsIDE5MywgMjE0LCAxODMsIDI1NCwgNzQsIAotICAgIDI0MywgMjMyLCAxNiwgMjI2LCAyMDYsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1NCwgMTUxLCAyMjgsIAotICAgIDU3LCAyNTAsIDEzOCwgNzksIDQ0LCAyNTQsIDExOCwgMiwgMjQ2LCAxMTIsIDIxMCwgMzUsIDc1LCAyMTksIDIzNywgMjA0LCAKLSAgICAyNTEsIDE3MSwgMjUyLCA1MywgODcsIDY3LCAyMzIsIDIyMCwgMiwgMjMwLCAyMjksIDI0NywgMTI4LCAyMzUsIDIyMywgODcsIAotICAgIDI0OSwgMTkxLCAyMTQsIDE4MSwgODcsIDI0NywgMTk3LCAyMTQsIDE4MSwgODcsIDI0NSwgMTYyLCA4NywgMjQ5LCAyMTgsIAotICAgIDg3LCA3MSwgNDIsIDIsIDI1MCwgMTgzLCA2NywgMjMyLCAyMTksIDI0NSwgMTM4LCA4NywgMjU0LCAxNDcsIDIzNCwgMTQ1LCAKLSAgICA4NywgMjQxLCAyMjAsIDg3LCAzNywgMjAzLCAyNTIsIDE0OSwgMiwgMjI4LCA1NSwgMzcsIDIxNSwgMjI3LCAyNDYsIDExNCwgCi0gICAgMjUxLCAxNDMsIDI1MCwgNDQsIDIsIDIyOCwgNTksIDc1LCAyMTQsIDE3OSwgODcsIDIzMCwgMTQyLCA4NywgMjQwLCAxNzEsIAotICAgIDg3LCAyMjYsIDE3OCwgMjQyLCA2NiwgODcsIDIyNiwgMTc4LCAyMzMsIDE1MywgODcsIDIyNSwgMjQ4LCA4NywgMjI1LCAKLSAgICAyNDcsIDg3LCAyNDcsIDIwNSwgMjQ5LCAxMDUsIDE2LCAyNDQsIDI4LCAxMDUsIDIxOSwgNTIsIDg3LCAyNTQsIDc0LCAyNDMsIAotICAgIDIzMiwgMTYsIDIyNCwgMzAsIDI0OCwgOTEsIDIyMCwgMTQwLCAyMzQsIDE0NSwgODcsIDIyNCwgMTk1LCAyMjYsIDc5LCAKLSAgICAyMjksIDg3LCAyMjYsIDc5LCAyMjQsIDE5MSwgMjIxLCAxOTEsIDg3LCAyNTAsIDI1LCAyMjEsIDE5MSwgODcsIDQzLCAyMjYsIAotICAgIDgsIDIxNCwgMTYwLCAxMDMsIDQzLCAyMjYsIDgsIDI0NSwgMjksIDQzLCAyMjYsIDgsIDIzMiwgMTE0LCAxMDMsIDQ0LCAKLSAgICAyMjYsIDgsIDIxNCwgMTYwLCAxMDMsIDQ0LCAyMjYsIDgsIDI0NSwgMjksIDQ0LCAyMjYsIDgsIDIzMiwgMTE0LCAxMDMsIAotICAgIDQzLCA0MiwgMjUxLCAxNjYsIDIxNCwgMTYwLCAyNDksIDE2OCwgNDMsIDQyLCAyNTEsIDE2NiwgMjQ1LCAyOSwgNDMsIDQyLCAKLSAgICAyNTEsIDE2NiwgMjMyLCAxMTQsIDI0OSwgMTY4LCA0NCwgNDIsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMjQ5LCAxNjgsIDQ0LCAKLSAgICA0MiwgMjUxLCAxNjYsIDI0NSwgMjksIDQ0LCA0MiwgMjUxLCAxNjYsIDIzMiwgMTE0LCAyNDksIDE2OCwgNDMsIDI0OSwgCi0gICAgMTA3LCAyNTEsIDE2NiwgMjE0LCAxNjAsIDEwMywgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjMwLCAyMjksIDIyNSwgMTA0LCAKLSAgICA0MywgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMzIsIDExNCwgMTAzLCAyNDksIDEwNywgMjUxLCAxNjYsIDI0NSwgMjksIDQ0LCAKLSAgICAyNDksIDEwNywgMjUxLCAxNjYsIDIxNCwgMTYwLCAxMDMsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMCwgMjI5LCAyMjUsIAotICAgIDEwNCwgNDQsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjMyLCAxMTQsIDEwMywgMjM1LCAyMTksIDI0NSwgMjksIDIwMywgMjMyLCAKLSAgICAyMjAsIDI0NSwgMjksIDIxNCwgMTYwLCA0MywgMTc3LCAyMzIsIDExNCwgNDQsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjIxLCAKLSAgICAxNzQsIDIxNCwgMTYwLCA0NCwgMTc3LCAyMzIsIDExNCwgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjIxLCAxNzQsIDIxOCwgCi0gICAgNDIsIDIxNiwgMTQsIDIxOCwgNDIsIDI1MSwgMTgyLCAyMTYsIDE1LCA0MiwgMTI3LCAyNTEsIDE4MywgNDIsIDEyNywgMjUxLCAKLSAgICAxODMsIDQyLCAyNTEsIDE2NiwgMTE1LCAyMTYsIDE1LCA0MiwgMTI3LCAzNCwgMTYsIDI1MSwgMTgyLCA0MywgNjcsIDkzLCAKLSAgICAyMzIsIDIxOSwgNDQsIDY3LCA5MywgMjMyLCAyMTksIDIwMywgMjIxLCAyMDcsIDIzMiwgMjE4LCAyMDMsIDIyMSwgMjA3LCAKLSAgICAyMzIsIDIxNywgMjAzLCAyMjEsIDIwNywgMjMyLCAyMTYsIDIwMywgMjIxLCAyMDcsIDIzMiwgMjE1LCAyNDgsIDU0LCAxNiwgCi0gICAgMTkzLCA2NywgMjIsIDIxNiwgMTUsIDIyMiwgMjU0LCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDI1MSwgMTgzLCAyMjIsIAotICAgIDI1NCwgMjQ4LCA1NCwgMTYsIDE5MywgNjcsIDIsIDI1MCwgNDMsIDI0OCwgNTQsIDE2LCAxOTMsIDEyNCwgMjIsIDIwMywgMiwgCi0gICAgMjUwLCA0MywgMjQ4LCA1NCwgMTYsIDE5MywgMTIwLCAyMiwgMjAzLCAyLCAyNTAsIDQzLCAyNDgsIDU0LCAxNiwgMTkzLCAKLSAgICA2NywgMiwgMjE1LCAyMjYsIDI0OCwgNTQsIDE2LCAxOTMsIDEyNCwgMjIsIDIwMywgMiwgMjE1LCAyMjYsIDI0OCwgNTQsIAotICAgIDE2LCAxOTMsIDEyMCwgMjIsIDIwMywgMiwgMjE1LCAyMjYsIDI0OCwgNTQsIDE2LCAxOTMsIDY3LCAyMiwgMjEyLCAzNSwgCi0gICAgMjQ4LCA1NCwgMTYsIDE5MywgMTI0LCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjAsIDIyLCAKLSAgICAyMDMsIDIsIDIxMiwgMzUsIDI0OCwgNTQsIDE2LCAxOTMsIDEyNCwgMjIsIDI0MSwgNTEsIDI0OCwgNTQsIDE2LCAxOTMsIAotICAgIDEyMCwgMjIsIDI0MSwgNTEsIDI0OCwgNTQsIDE2LCAxOTMsIDY3LCAyMiwgMjE2LCAxNSwgMjMzLCA1MiwgMjQ4LCA1NCwgCi0gICAgMTYsIDE5MywgNjcsIDIyLCAyNTEsIDE4MywgMjMzLCA1MiwgNDIsIDI0NCwgNDAsIDIyMywgNTcsIDg3LCAyNDUsIDE5MCwgCi0gICAgODcsIDY3LCAyMzIsIDIyMCwgMjQ1LCAyOSwgMjMxLCAzOCwgMjUxLCAxNTQsIDIzMSwgMzgsIDIwMCwgMTE1LCAyMTksIAotICAgIDI1MiwgMjMxLCAzOCwgMjE5LCAyNTMsIDExNSwgMjMyLCAxNDMsIDIzMSwgMzgsIDIwMCwgMTE1LCAxMTMsIDIxOSwgMjM5LCAKLSAgICAyMzEsIDM4LCAxMTMsIDIxOSwgMjQwLCAxMTUsIDIzMiwgMTQzLCAyMzEsIDM4LCAxMTMsIDIxOSwgMjQwLCAyMzUsIDcwLCAKLSAgICAyMzEsIDM4LCAyMTUsIDIwOSwgMjMxLCAzOCwgMjE2LCAyMjQsIDIzMSwgMzgsIDIyNSwgMTkxLCAyNDUsIDIzMiwgMjQyLCAKLSAgICAxMjksIDI0MywgMjI2LCAyMTYsIDE1LCAyMjYsIDcsIDI1MSwgMTgzLCAyMjYsIDcsIDIxNiwgMTUsIDI0OSwgMTA3LCAxMjcsIAotICAgIDI1MSwgMTgzLCAyNDksIDEwNywgMTI3LCAyMTYsIDE1LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjUxLCAxODMsIDIxNiwgNywgCi0gICAgMjIwLCA1NSwgMTI3LCA3MSwgMjE1LCAyNDAsIDI1MiwgNDMsIDIyMiwgMjM3LCAyLCAyNTAsIDQzLCAyMTgsIDEyMiwgMjQ0LCAKLSAgICA3MiwgMjU1LCAyNiwgMjQ5LCAxMDQsIDI0NSwgMTc5LCAyMzUsIDIwNSwgMjQ4LCA5MSwgMjQ1LCAzMiwgODcsIDg1LCAyMjIsIAotICAgIDI1MCwgNTIsIDIxNSwgMjI2LCA4NSwgMjMzLCA0OCwgNTIsIDIxNSwgMjI2LCA4NSwgMjE0LCAxNjIsIDUyLCAyMTUsIDIyNiwgCi0gICAgODUsIDI0NiwgMTEzLCA1MiwgMjE1LCAyMjYsIDg1LCAyMjIsIDI1MCwgNTIsIDIxNSwgMjI3LCAyLCA2NywgMTMwLCA4NSwgCi0gICAgMjMzLCA0OCwgNTIsIDIxNSwgMjI3LCAyLCA2NywgMTMwLCA4NSwgMjIyLCAyNTAsIDIxNSwgMjI3LCAyLCA1MiwgNjcsIAotICAgIDEzMCwgMjU0LCAxODIsIDI1MCwgMTEsIDIxOCwgMTI4LCAyMTYsIDg3LCAyNTAsIDExLCAyNDAsIDI0NCwgMiwgMjQ0LCA1OCwgCi0gICAgMjIxLCAyNDMsIDE2LCAzMSwgMjI3LCAyMDYsIDE2LCAzMSwgMjE4LCAxNTQsIDY0LCAyNDEsIDI0MCwgMTYsIDMxLCAyMTgsIAotICAgIDE1NCwgNjQsIDIxNiwgMjEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgMjE2LCAyMTMsIDE2LCAzMSwgMjQ1LCAxNTEsIDY0LCAKLSAgICAyMTUsIDI0NCwgMTYsIDMxLCAyNDUsIDE0MCwgMTYsIDMxLCAyNTUsIDE2LCAxNiwgMzEsIDI1MiwgNTIsIDE2LCAzMSwgCi0gICAgMjUyLCAxODcsIDE2LCAzMSwgMjAzLCAyMTcsIDkwLCAxNiwgMzEsIDIzMiwgMjIwLCAyNDQsIDE1MywgMTYsIDMxLCA2NywgCi0gICAgMjE3LCA5MCwgMTYsIDMxLCAyNDQsIDI4LCAyNDQsIDE1MywgMTYsIDMxLCAyNTAsIDIzOCwgMjIzLCA1NiwgMTYsIDMxLCAKLSAgICAyMjAsIDMwLCAyMjYsIDEzNCwgMTYsIDMxLCAyMjAsIDMwLCAyMzYsIDYsIDE2LCAzMSwgMjQ4LCAxNTksIDIzMiwgMjEwLCAKLSAgICAyNDUsIDg1LCAxNiwgMzEsIDI0OCwgMzksIDI0OSwgMTg2LCAxMTEsIDE2LCAzMSwgMjQ4LCAzOSwgMjQ5LCAxODYsIDEwNSwgCi0gICAgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTU4LCAxNiwgMzEsIDI0OCwgMzksIDI0OSwgMTg2LCAxNjEsIDE2LCAzMSwgCi0gICAgMTUyLCAyNTUsIDE2LCAxNiwgMzEsIDIxNywgMTc4LCAyMzYsIDY5LCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgMjE1LCAyNDUsIAotICAgIDI1MSwgMjIxLCAxNiwgMzEsIDI1MSwgMTMsIDE2LCAzMSwgMjQ1LCAxNTEsIDY0LCAyMzEsIDg2LCAxNiwgMzEsIDIxOCwgCi0gICAgNjIsIDE2LCAzMSwgMjQ1LCA4NSwgMTYsIDMxLCAyNDQsIDExNSwgMjIwLCAxMzksIDE2LCAzMSwgMjQyLCAxMjgsIDIyMCwgCi0gICAgMTM5LCAxNiwgMzEsIDIyMywgMTI0LCAyMjAsIDEzOSwgMTYsIDMxLCAyMTQsIDE3NCwgMjIwLCAxMzksIDE2LCAzMSwgMjE5LCAKLSAgICAyMCwgMTYsIDMxLCAyNDgsIDcxLCAyNTEsIDIyNCwgODcsIDIwNCwgMjUxLCAxNzEsIDE2LCAzMSwgMjI5LCA5MCwgMTYsIAotICAgIDMxLCAyNDgsIDcyLCAyNDQsIDI4LCAxMDUsIDE2LCAzMSwgMjE4LCA2MywgMjQ0LCAyOCwgMTA1LCAyMjYsIDI0NSwgMTAzLCAKLSAgICAyMjYsIDI0NSwgMjUwLCAxNjAsIDIyNiwgMjQ1LCAyNDQsIDMxLCAyMjYsIDI0NSwgMjM1LCAyMDAsIDI0NCwgMzEsIDIyNiwgCi0gICAgMjQ1LCAyNTIsIDUwLCAyNTEsIDEzMiwgMjI2LCAyNDUsIDI1MSwgMTc4LCAyMTYsIDExMiwgMjI2LCAyNDUsIDI1MSwgMTYzLCAKLSAgICAyNTIsIDE1NCwgMjQwLCAxMTAsIDIyNiwgMjQ1LCAyNTQsIDEzNSwgNjQsIDI1MCwgMTM3LCAyMjYsIDI0NSwgMjQ4LCAxNjQsIAotICAgIDIyNiwgMjQ1LCAyNDksIDk1LCAyNTUsIDIwLCAyMjcsIDIwNCwgMjI2LCAyNDUsIDUyLCAyNTIsIDE4OCwgMzcsIDIxLCAKLSAgICAxMTEsIDM3LCAyMSwgMTA1LCAzNywgMjEsIDE1OCwgMzcsIDIxLCAxNjEsIDM3LCAyMSwgMTkwLCAzNywgMjEsIDE5NSwgMzcsIAotICAgIDIxLCAxOTksIDM3LCAyMSwgMTk2LCAzNywgMjEsIDIwMSwgMzcsIDU0LCAyMTYsIDI0OCwgMzcsIDU0LCAyNDUsIDE3NSwgCi0gICAgMzcsIDU0LCAyMTUsIDc2LCAzNywgNTQsIDIxNiwgMTY1LCAzNywgNTQsIDI0NCwgMTMsIDM3LCA1NCwgMjQ0LCAxMjYsIDM3LCAKLSAgICA1NCwgMjE5LCAxMjEsIDM3LCA1NCwgMjIwLCAxMjEsIDM3LCA1NCwgMjQ1LCAxOTgsIDM3LCA1NCwgMjI4LCAyMDIsIDM3LCAKLSAgICA1NCwgMjE1LCA3MywgODgsIDIxLCAxMTEsIDg4LCAyMSwgMTA1LCA4OCwgMjEsIDE1OCwgODgsIDIxLCAxNjEsIDg4LCAyMSwgCi0gICAgMTkwLCA4OCwgMjEsIDE5NSwgODgsIDIxLCAxOTksIDg4LCAyMSwgMTk2LCA4OCwgMjEsIDIwMSwgODgsIDU0LCAyMTYsIAotICAgIDI0OCwgODgsIDU0LCAyNDUsIDE3NSwgODgsIDU0LCAyMTUsIDc2LCA4OCwgNTQsIDIxNiwgMTY1LCA4OCwgNTQsIDI0NCwgCi0gICAgMTMsIDg4LCA1NCwgMjQ0LCAxMjYsIDg4LCA1NCwgMjE5LCAxMjEsIDg4LCA1NCwgMjIwLCAxMjEsIDg4LCA1NCwgMjQ1LCAKLSAgICAxOTgsIDg4LCA1NCwgMjI4LCAyMDIsIDg4LCA1NCwgMjE1LCA3MywgMjEsIDEyMywgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMSwgCi0gICAgMTEzLCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAxMzQsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIDI0NCwgMTksIDI0MywgCi0gICAgMjM2LCAyMTgsIDEzMSwgMjEsIDI0NCwgODksIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIDIxOSwgMTI3LCAyNDMsIDIzNiwgCi0gICAgMjE4LCAxMzEsIDIxLCAyMjAsIDEyNCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMSwgMjQ1LCAyMDEsIDI0MywgMjM2LCAyMTgsIAotICAgIDEzMSwgMjEsIDIyOCwgMjA1LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTYsIDI0OSwgMjQzLCAyMzYsIDIxOCwgMTMxLCAKLSAgICA1NCwgMjQ1LCAxNzYsIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIxNSwgNzcsIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIAotICAgIDIxNiwgMTY2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyNDQsIDE0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyNDQsIAotICAgIDEyNywgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjE5LCAxMjIsIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIyMCwgMTIyLCAKLSAgICAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyNDUsIDE5OSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjI4LCAyMDMsIDI0MywgCi0gICAgMjM2LCAyMTgsIDEzMSwgNTQsIDIxNSwgNzQsIDI0MywgMjM2LCAyMTgsIDEzMSwgODgsIDcsIDQsIDEsIDYxLCA4OCwgNywgCi0gICAgNCwgMSwgMjUzLCAxNjYsIDg4LCA3LCA0LCAxLCAyNTEsIDc0LCA4OCwgNywgNCwgMSwgMjQ5LCA2OCwgODgsIDcsIDQsIDEsIAotICAgIDc2LCA4OCwgNywgNCwgMSwgMjQ1LCAxNCwgODgsIDcsIDQsIDEsIDI0MywgMjA5LCA4OCwgNywgNCwgMSwgMjQyLCA2NywgCi0gICAgODgsIDcsIDQsIDEsIDc0LCA4OCwgNywgNCwgMSwgMjM1LCAxNTAsIDg4LCA3LCA0LCAxLCAyMzUsIDI5LCA4OCwgNywgNCwgCi0gICAgMSwgMTU2LCA4OCwgNywgNCwgMSwgMTk0LCA4OCwgNywgNCwgMSwgMjMwLCAzMCwgODgsIDcsIDQsIDEsIDc4LCA4OCwgNywgCi0gICAgNCwgMSwgMjI2LCAxMDksIDg4LCA3LCA0LCAxLCAyMjQsIDk5LCA4OCwgNywgNCwgMSwgMTUzLCA4OCwgNywgNCwgMSwgMjIyLCAKLSAgICA5MywgODgsIDcsIDQsIDEsIDIxNywgMTUzLCA4OCwgNywgNCwgMSwgNjksIDg4LCA3LCA0LCAxLCAyMTQsIDEwNSwgODgsIDcsIAotICAgIDQsIDEsIDIxMiwgOTgsIDg4LCA3LCA0LCAxLCAyMTEsIDE3OCwgODgsIDcsIDQsIDEsIDIxMSwgMTE3LCA4OCwgNywgNCwgMSwgCi0gICAgMjEwLCAxNTksIDM3LCA3LCA2LCAxLCA2MSwgMzcsIDcsIDYsIDEsIDI1MywgMTY2LCAzNywgNywgNiwgMSwgMjUxLCA3NCwgCi0gICAgMzcsIDcsIDYsIDEsIDI0OSwgNjgsIDM3LCA3LCA2LCAxLCA3NiwgMzcsIDcsIDYsIDEsIDI0NSwgMTQsIDM3LCA3LCA2LCAxLCAKLSAgICAyNDMsIDIwOSwgMzcsIDcsIDYsIDEsIDI0MiwgNjcsIDM3LCA3LCA2LCAxLCA3NCwgMzcsIDcsIDYsIDEsIDIzNSwgMTUwLCAKLSAgICAzNywgNywgNiwgMSwgMjM1LCAyOSwgMzcsIDcsIDYsIDEsIDE1NiwgMzcsIDcsIDYsIDEsIDE5NCwgMzcsIDcsIDYsIDEsIAotICAgIDIzMCwgMzAsIDM3LCA3LCA2LCAxLCA3OCwgMzcsIDcsIDYsIDEsIDIyNiwgMTA5LCAzNywgNywgNiwgMSwgMjI0LCA5OSwgCi0gICAgMzcsIDcsIDYsIDEsIDE1MywgMzcsIDcsIDYsIDEsIDIyMiwgOTMsIDM3LCA3LCA2LCAxLCAyMTcsIDE1MywgMzcsIDcsIDYsIAotICAgIDEsIDY5LCAzNywgNywgNiwgMSwgMjE0LCAxMDUsIDM3LCA3LCA2LCAxLCAyMTIsIDk4LCAzNywgNywgNiwgMSwgMjExLCAKLSAgICAxNzgsIDM3LCA3LCA2LCAxLCAyMTEsIDExNywgMzcsIDcsIDYsIDEsIDIxMCwgMTU5LCAzNywgNywgNCwgMSwgNjEsIDM3LCAKLSAgICA3LCA0LCAxLCAyNTMsIDE2NiwgMzcsIDcsIDQsIDEsIDI1MSwgNzQsIDM3LCA3LCA0LCAxLCAyNDksIDY4LCAzNywgNywgNCwgCi0gICAgMSwgNzYsIDM3LCA3LCA0LCAxLCAyNDUsIDE0LCAzNywgNywgNCwgMSwgMjQzLCAyMDksIDM3LCA3LCA0LCAxLCAyNDIsIDY3LCAKLSAgICAzNywgNywgNCwgMSwgNzQsIDM3LCA3LCA0LCAxLCAyMzUsIDE1MCwgMzcsIDcsIDQsIDEsIDIzNSwgMjksIDM3LCA3LCA0LCAKLSAgICAxLCAxNTYsIDM3LCA3LCA0LCAxLCAxOTQsIDM3LCA3LCA0LCAxLCAyMzAsIDMwLCAzNywgNywgNCwgMSwgNzgsIDM3LCA3LCAKLSAgICA0LCAxLCAyMjYsIDEwOSwgMzcsIDcsIDQsIDEsIDIyNCwgOTksIDM3LCA3LCA0LCAxLCAxNTMsIDM3LCA3LCA0LCAxLCAyMjIsIAotICAgIDkzLCAzNywgNywgNCwgMSwgMjE3LCAxNTMsIDM3LCA3LCA0LCAxLCA2OSwgMzcsIDcsIDQsIDEsIDIxNCwgMTA1LCAzNywgNywgCi0gICAgNCwgMSwgMjEyLCA5OCwgMzcsIDcsIDQsIDEsIDIxMSwgMTc4LCAzNywgNywgNCwgMSwgMjExLCAxMTcsIDM3LCA3LCA0LCAxLCAKLSAgICAyMTAsIDE1OSwgMzcsIDIxLCAyMTAsIDg2LCAxNTIsIDM3LCA1NCwgMjQ1LCAxNzUsIDE1MiwgMzcsIDU0LCAyMTUsIDc2LCAKLSAgICAxNTIsIDM3LCA1NCwgMjE2LCAxNjUsIDE1MiwgMzcsIDU0LCAyNDQsIDEzLCAxNTIsIDM3LCA1NCwgMjQ0LCAxMjYsIDE1MiwgCi0gICAgMzcsIDU0LCAyMTksIDEyMSwgMTUyLCAzNywgNTQsIDIyMCwgMTIxLCAxNTIsIDM3LCA1NCwgMjQ1LCAxOTgsIDE1MiwgMzcsIAotICAgIDU0LCAyMjgsIDIwMiwgMTUyLCAzNywgNTQsIDIxNSwgNzMsIDUyLCAzNywgMjEsIDExMSwgNTIsIDM3LCAyMSwgMTA1LCA1MiwgCi0gICAgMzcsIDIxLCAxNTgsIDUyLCAzNywgMjEsIDE2MSwgNTIsIDM3LCAyMSwgMTkwLCA1MiwgMzcsIDIxLCAxOTUsIDUyLCAzNywgCi0gICAgMjEsIDE5OSwgNTIsIDM3LCAyMSwgMTk2LCA1MiwgMzcsIDIxLCAyMDEsIDUyLCAzNywgNTQsIDIxNiwgMjQ4LCAxNTIsIDM3LCAKLSAgICAyMSwgMjEwLCA4NiwgOTMsIDk5LCAxOTMsIDI0MSwgNTEsIDkzLCA5OSwgMTE0LCAyNDEsIDUxLCA5MywgOTksIDE5MywgCi0gICAgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTMsIDIxNSwgMjEyLCAyNDgsIDE2NSwgMjQxLCAKLSAgICA1MSwgOTMsIDk5LCAxMTQsIDIxNSwgMjEyLCAyNDgsIDE2NSwgMjQxLCA1MSwgOTMsIDk5LCAxOTMsIDIxNSwgMjEyLCAyNDgsIAotICAgIDE2NSwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDIxMywgMjM5LCA5MywgOTksIDE5MywgCi0gICAgMjI0LCAyNywgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTE0LCAyMjQsIDI3LCAyNDgsIDE2NSwgMjQxLCA1MSwgOTMsIAotICAgIDk5LCAxOTMsIDIyNCwgMjcsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAxMTQsIDIyNCwgMjcsIDI0OCwgMTY1LCAKLSAgICAyMTMsIDIzOSwgOTMsIDk5LCAxOTMsIDEyNCwgMjIsIDIyMiwgMjU0LCA5MywgOTksIDEyNCwgMTkzLCAyMiwgNDQsIDI0MSwgCi0gICAgMjI4LCA5MywgOTksIDEyNCwgMTE0LCAyMiwgNDQsIDIzMiwgMjM2LCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjIyLCAyNTQsIAotICAgIDkzLCA5OSwgMTkzLCAxMjQsIDIyLCAyMzMsIDUyLCA5MywgOTksIDEyNCwgMTkzLCAyMiwgNDMsIDI0MSwgMjI4LCA5MywgCi0gICAgOTksIDEyNCwgMTE0LCAyMiwgNDMsIDIzMiwgMjM2LCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAKLSAgICAxOTMsIDEyMCwgMjIsIDIyMiwgMjU0LCA5MywgOTksIDEyMCwgMTkzLCAyMiwgNDQsIDI0MSwgMjI4LCA5MywgOTksIDEyMCwgCi0gICAgMTE0LCAyMiwgNDQsIDIzMiwgMjM2LCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjIyLCAyNTQsIDkzLCA5OSwgMTkzLCAxMjAsIAotICAgIDIyLCAyMzMsIDUyLCA5MywgOTksIDEyMCwgMTkzLCAyMiwgNDMsIDI0MSwgMjI4LCA5MywgOTksIDEyMCwgMTE0LCAyMiwgCi0gICAgNDMsIDIzMiwgMjM2LCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxOTMsIDY3LCAyMiwgMjIyLCAKLSAgICAyNTQsIDkzLCA5OSwgNjcsIDE5MywgMjIsIDQ0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIAotICAgIDIzMiwgMjM2LCA5MywgOTksIDEyNCwgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDExNCwgMjIsIAotICAgIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQ0LCAxMjAsIDI0MSwgMjI4LCA5MywgOTksIDEyMCwgMTkzLCAKLSAgICAyMiwgNDQsIDEyNCwgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgNjcsIAotICAgIDIyLCAyMzMsIDUyLCA5MywgOTksIDY3LCAxOTMsIDIyLCA0MywgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0MywgCi0gICAgMTI0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDY3LCAxMTQsIAotICAgIDIyLCA0MywgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCA0MywgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIAotICAgIDE5MywgMjIsIDQzLCAxMjQsIDI0MSwgMjI4LCA5MywgOTksIDExNCwgNjcsIDIyLCAyMzMsIDUyLCA5MywgOTksIDE5MywgCi0gICAgMTI0LCAyMiwgMjQxLCA1MSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIAotICAgIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjM2LCA5MywgOTksIDEyNCwgMTkzLCAyMiwgMjAzLCAyNDEsIDIyOCwgOTMsIDk5LCAKLSAgICAxMjQsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCAxMjQsIDI0MSwgMjI4LCA5MywgCi0gICAgOTksIDQzLCAxOTMsIDIyLCA0NCwgMTI0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCAKLSAgICA5OSwgMTkzLCAxMjAsIDIyLCAyNDEsIDUxLCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzNiwgOTMsIAotICAgIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgMTIwLCAxOTMsIDIyLCAyMDMsIDI0MSwgMjI4LCAKLSAgICA5MywgOTksIDEyMCwgMTE0LCAyMiwgMjAzLCAyMzIsIDIzNiwgOTMsIDk5LCA0NCwgMTkzLCAyMiwgNDMsIDEyMCwgMjQxLCAKLSAgICAyMjgsIDkzLCA5OSwgNDMsIDE5MywgMjIsIDQ0LCAxMjAsIDI0MSwgMjI4LCA5MywgOTksIDExNCwgMTIwLCAyMiwgMjQxLCAKLSAgICA1MSwgOTMsIDk5LCAxOTMsIDY3LCAyMiwgMjQxLCA1MSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDY3LCAyMzIsIDIzNiwgCi0gICAgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDY3LCAyMzIsIDIzNiwgOTMsIDk5LCA2NywgMTkzLCAyMiwgMjAzLCAyNDEsIAotICAgIDIyOCwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDEyNCwgMjAzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDEyMCwgCi0gICAgMjAzLCAyMzIsIDIzNiwgOTMsIDk5LCA2NywgMTE0LCAyMiwgMjAzLCAyMzIsIDIzNiwgOTMsIDk5LCA0MywgMTIwLCAxMTQsIAotICAgIDIyLCA0NCwgMTI0LCAyMzIsIDIzNiwgOTMsIDk5LCA0NCwgMTIwLCAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzNiwgOTMsIAotICAgIDk5LCA0MywgMTI0LCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzNiwgOTMsIDk5LCA0NCwgMTI0LCAxMTQsIDIyLCA0MywgCi0gICAgMTIwLCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDEyMCwgMjAzLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIAotICAgIDE5MywgMjIsIDEyNCwgMjAzLCAyNDEsIDIyOCwgOTMsIDk5LCA0NCwgMTkzLCAyMiwgNDMsIDY3LCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCA0MywgMTkzLCAyMiwgNDQsIDY3LCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjQxLCA1MSwgOTMsIDk5LCAKLSAgICAxOTMsIDUyLCAyNDgsIDE2NSwgMjQxLCA1MSwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE2NSwgMjQxLCA1MSwgOTMsIDk5LCAKLSAgICAxOTMsIDUyLCAyNDgsIDE2NSwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNjUsIDIxMywgMjM5LCA5MywgOTksIAotICAgIDUyLCAyNDEsIDUxLCA5MywgOTksIDUyLCAyMTMsIDIzOSwgOTMsIDk5LCAxMjQsIDIxOSwgMTU3LCAyMiwgNDQsIDI0NiwgCi0gICAgMTIxLCA5MywgOTksIDEyNCwgNTIsIDIyLCA0NCwgMjE5LCAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDIyMiwgMjU0LCAKLSAgICA5MywgOTksIDEyNCwgMjE5LCAxNTcsIDIyLCA0MywgMjQ2LCAxMjEsIDkzLCA5OSwgMTI0LCA1MiwgMjIsIDQzLCAyMTksIAotICAgIDE1NiwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjAsIDIxOSwgMTU3LCAyMiwgNDQsIDI0NiwgCi0gICAgMTIxLCA5MywgOTksIDEyMCwgNTIsIDIyLCA0NCwgMjE5LCAxNTYsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDIyMiwgMjU0LCAKLSAgICA5MywgOTksIDEyMCwgMjE5LCAxNTcsIDIyLCA0MywgMjQ2LCAxMjEsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDQzLCAyMTksIAotICAgIDE1NiwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjMzLCA1MiwgOTMsIDk5LCA2NywgMjE5LCAxNTcsIDIyLCA0NCwgMjQ2LCAKLSAgICAxMjEsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCA2NywgMjIsIDIyMiwgMjU0LCA5MywgCi0gICAgOTksIDY3LCAyMTksIDE1NywgMjIsIDQzLCAyNDYsIDEyMSwgOTMsIDk5LCA2NywgNTIsIDIyLCA0MywgMjE5LCAxNTYsIDkzLCAKLSAgICA5OSwgNTIsIDY3LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjQsIDIxOSwgMTU3LCAyMiwgMjAzLCAyNDYsIDEyMSwgOTMsIAotICAgIDk5LCAxMjQsIDUyLCAyMiwgMjAzLCAyMTksIDE1NiwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjQxLCA1MSwgOTMsIDk5LCAKLSAgICAxMjAsIDIxOSwgMTU3LCAyMiwgMjAzLCAyNDYsIDEyMSwgOTMsIDk5LCAxMjAsIDUyLCAyMiwgMjAzLCAyMTksIDE1NiwgOTMsIAotICAgIDk5LCA1MiwgMTIwLCAyMiwgMjQxLCA1MSwgOTMsIDk5LCA2NywgMjE5LCAxNTcsIDIyLCAyMDMsIDI0NiwgMTIxLCA5MywgCi0gICAgOTksIDY3LCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjQxLCA1MSwgOTMsIDk5LCAxOTMsIAotICAgIDI1NCwgMzQsIDEyNCwgMjIsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMjU0LCAzNCwgMTI0LCAyMiwgMjMzLCA1MiwgOTMsIAotICAgIDk5LCAxOTMsIDI1NCwgMzQsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCAyNTQsIDM0LCAxMjAsIDIyLCAyMjIsIAotICAgIDI1NCwgOTMsIDk5LCAxOTMsIDI0OCwgNywgMjE0LCAxNjAsIDQ0LCAyMTYsIDQzLCAyMzIsIDExNCwgMjMzLCA1MiwgOTMsIAotICAgIDk5LCAxOTMsIDI0OCwgNywgMjE0LCAxNjAsIDQzLCAyMTYsIDQzLCAyMzIsIDExNCwgMjIyLCAyNTQsIDkzLCA5OSwgMTkzLCAKLSAgICAyNDgsIDcsIDI0OSwgMTM4LCA5MywgOTksIDE5MywgMjMzLCA1MiwgOTMsIDk5LCAxOTMsIDIxNCwgMTYzLCA5MywgOTksIAotICAgIDE5MywgMjIyLCAyNTQsIDkzLCA5OSwgMTkzLCAyNDYsIDExNCwgOTMsIDk5LCAxMTQsIDIzMywgNTIsIDkzLCA5OSwgMTE0LCAKLSAgICAyMTQsIDE2MywgOTMsIDk5LCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDExNCwgMjQ2LCAxMTQsIDkzLCA5OSwgMTkzLCA0MywgCi0gICAgMjIsIDExNCwgMjIyLCAyNTQsIDkzLCA5OSwgMTkzLCAxMjAsIDIyLCAxMTQsIDI0NiwgMTE0LCA5MywgOTksIDExNCwgNDMsIAotICAgIDIyLCAxOTMsIDIyMiwgMjU0LCA5MywgOTksIDExNCwgMTIwLCAyMiwgMTkzLCAyNDYsIDExNCwgMjE0LCAxNjAsIDE2MywgCi0gICAgMjUxLCAyMjEsIDIzMiwgMTE0LCAxMjMsIDI0NSwgMTk3LCAyNTEsIDIyMSwgMjMyLCAxMTQsIDEyMywgMjI0LCAyNSwgMjUxLCAKLSAgICAyMjEsIDIzMiwgMTE0LCAxMzQsIDI0NSwgMTk1LCAyNTEsIDIyMSwgMjMyLCAxMTQsIDE2MywgMjUxLCAyMjEsIDIzMiwgCi0gICAgMTE0LCAyNDQsIDg5LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDIzMiwgMTE0LCAxMzQsIDIyNCwgMjMsIDI1MSwgMjIxLCAyMzIsIAotICAgIDExNCwgMjIwLCAxMjQsIDI0NSwgMTk1LCAyNTEsIDIyMSwgMjQzLCAyMzYsIDI1MSwgMjIxLCA0MywgMjIwLCAxMjQsIDI0NSwgCi0gICAgMTk1LCAyNTEsIDIyMSwgNDMsIDEzNCwgMjI0LCAyMywgMjUxLCAyMjEsIDQzLCAyNDQsIDg5LCAyNDUsIDE5NSwgMjUxLCAKLSAgICAyMjEsIDQzLCAxNjMsIDI1MSwgMjIxLCA0MywgMTM0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDQzLCAxMjMsIDIyNCwgMjUsIAotICAgIDI1MSwgMjIxLCA0MywgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDQ0LCAxNjMsIDI1MSwgMjIxLCAxOTMsIDIyMCwgOTQsIAotICAgIDIzMSwgODcsIDIyMCwgOTQsIDI0OCwgMTcwLCAyMjAsIDk0LCAyMTQsIDE2MCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIAotICAgIDQ0LCAxMjMsIDI0NSwgMTk3LCAyNTEsIDIyMSwgMjI0LCAyOSwgMjMyLCAxMTQsIDIzMywgNTIsIDIyNCwgMjksIDIzMiwgCi0gICAgMTE0LCAyMjIsIDI1NCwgMjI0LCAyOSwgMjE0LCAxNjAsIDIzMywgNTIsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIAotICAgIDIzMiwgMTE0LCA0MywgMjIsIDIzMiwgMTE0LCAyMjIsIDI1NCwgMjI0LCAyOSwgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAKLSAgICAxMTQsIDIyMiwgMjU0LCAyMjQsIDI5LCAyMTQsIDE2MCwgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDExNCwgCi0gICAgMjMzLCA1MiwgMjI0LCAyOSwgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIDIyMiwgMjU0LCAKLSAgICAyMjQsIDI5LCAyMTQsIDE2MCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTE0LCAyMzMsIAotICAgIDUyLCAyMjQsIDI5LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDExNCwgNDMsIDIyLCAyMzIsIDExNCwgMjIyLCAyNTQsIDg1LCAKLSAgICAyMTgsIDIzNiwgNzEsIDIxOCwgMjM2LCA3MSwgNDIsIDIsIDIyMiwgMTg1LCAyNDksIDE2NywgNzEsIDQyLCAyNDksIDE5NSwgCi0gICAgODUsIDQsIDIxOCwgMjM2LCA0MiwgMiwgMjAzLCAyNDQsIDExMywgNDIsIDIsIDY3LCAyNDQsIDExMywgNDIsIDIsIDIyNiwgCi0gICAgMTQ4LCAyNDksIDEzNCwgMjQ0LCAxMTMsIDQyLCAyLCAyMTQsIDE2MCwgNDMsIDIxNiwgNDMsIDIzMiwgMTE0LCA0NCwgMjQ0LCAKLSAgICAxMTMsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIDIxNiwgNDMsIDIzMiwgMTE0LCA0MywgMjQ0LCAxMTMsIDQyLCAyLCAyNDgsIDcsIAotICAgIDI0OSwgMTM0LCAyNDQsIDExMywgODUsIDQsIDIxOCwgMjM2LCA3MSwgNCwgMjE4LCAyMzYsIDg1LCAyMjMsIDExOSwgNzEsIAotICAgIDIyMywgMTE5LCA4NSwgNjcsIDIyMywgMTE5LCA3MSwgNjcsIDIyMywgMTE5LCA4NSwgMjI2LCAxMCwgNzEsIDIyNiwgMTAsIAotICAgIDg1LCAyMTQsIDE2MiwgMjE1LCAyMjYsIDcxLCAyMTQsIDE2MiwgMjE1LCAyMjYsIDg1LCAyMTQsIDE2MiwgNCwgMjE1LCAKLSAgICAyMjYsIDcxLCAyMTQsIDE2MiwgNCwgMjE1LCAyMjYsIDg1LCAyMjIsIDI1MCwgMjE1LCAyMjYsIDcxLCAyMjIsIDI1MCwgCi0gICAgMjE1LCAyMjYsIDg1LCAyMjIsIDI1MCwgNCwgMjE1LCAyMjYsIDcxLCAyMjIsIDI1MCwgNCwgMjE1LCAyMjYsIDg1LCAyMjIsIAotICAgIDI1MCwgMjI1LCAxMSwgNzEsIDIyMiwgMjUwLCAyMjUsIDExLCA4NSwgMjQ2LCAxMTMsIDIxNSwgMjI2LCA3MSwgMjQ2LCAKLSAgICAxMTMsIDIxNSwgMjI2LCA4NSwgMjQ2LCAxMTMsIDQsIDIxNSwgMjI2LCA3MSwgMjQ2LCAxMTMsIDQsIDIxNSwgMjI2LCA4NSwgCi0gICAgMjMzLCA0OCwgMjE1LCAyMjYsIDcxLCAyMzMsIDQ4LCAyMTUsIDIyNiwgODUsIDIzMywgNDgsIDQsIDIxNSwgMjI2LCA3MSwgCi0gICAgMjMzLCA0OCwgNCwgMjE1LCAyMjYsIDg1LCAyMzMsIDQ4LCAyMjUsIDExLCA3MSwgMjMzLCA0OCwgMjI1LCAxMSwgODUsIAotICAgIDI0OCwgMCwgNzEsIDI0OCwgMCwgNzEsIDI0OCwgMSwgMjQ5LCAxOTUsIDg1LCA0LCAyNDgsIDAsIDI0NCwgOTcsIDIzMiwgCi0gICAgMTEwLCA3MSwgMjUwLCA0MywgMjQ2LCAxMjYsIDI1MCwgNDMsIDI1MCwgNDQsIDIsIDY3LCAyNDQsIDExMywgMjUxLCAxMTksIAotICAgIDg1LCAyNTAsIDQzLCAyNTAsIDQ0LCAyLCA0MywgMTYzLCAyNTEsIDIyOSwgMjUwLCA0NCwgMiwgNDQsIDE2MywgMjUxLCAKLSAgICAyMjksIDI1MCwgNDQsIDIsIDIzMiwgMTE0LCAxNjMsIDI1MSwgMjI5LCAyNTAsIDQ0LCAyLCAyMTQsIDE2MCwgMTYzLCAyNTEsIAotICAgIDIyOSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI5LCAyNTEsIDIyOSwgMjUwLCA0NCwgMiwgMjU0LCAxNjQsIAotICAgIDI1MSwgOTYsIDIxNCwgMTYwLCA0MywgMjI0LCAyOSwgMjUxLCAyMjksIDQzLCAxNjMsIDg1LCAyNTAsIDQzLCA0NCwgMTYzLCAKLSAgICA4NSwgMjUwLCA0MywgMjM1LCAyMDEsIDI1MSwgMTIxLCAyMzUsIDIwMSwgNzEsIDI1MCwgNDMsIDIxNCwgMTYwLCAxNjMsIAotICAgIDIzNSwgMjAxLCA3MSwgMjUwLCA0MywgMjMyLCAxMTQsIDE2MywgMjM1LCAyMDEsIDcxLCAyNTAsIDQzLCAyMTQsIDE2MCwgCi0gICAgNDMsIDIyNCwgMjksIDI1MCwgNDEsIDI1NCwgMzMsIDIxNCwgMTYwLCA0NCwgMjI0LCAyOSwgMjUwLCA0MSwgMjU0LCAzMywgCi0gICAgMjMyLCAxMTQsIDQ0LCAyMjQsIDI5LCAyNTAsIDQxLCAyNTQsIDMzLCAyMzIsIDExNCwgNDMsIDIyNCwgMjksIDI1MCwgNDEsIAotICAgIDI1NCwgMzMsIDIxNCwgMTYwLCAxNjMsIDI1MCwgNDMsIDIzMiwgMTE0LCAxNjMsIDI1MCwgNDMsIDg1LCAyMzIsIDExNCwgCi0gICAgNDQsIDIxNSwgMjI2LCA4NSwgMjMyLCAxMTQsIDQzLCAyMTUsIDIyNiwgODUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjYsIDg1LCAKLSAgICAyMTQsIDE2MCwgNDQsIDIxNSwgMjI2LCA3MSwgMjUxLCAxMjEsIDQyLCAyLCA0MywgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIAotICAgIDQ0LCAxNjMsIDI1MSwgMjI5LCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDQyLCAyLCAKLSAgICAyMzIsIDExNCwgNDQsIDI0OCwgNywgMTYzLCAyNTEsIDIyOSwgNzEsIDQyLCAyLCA2NywgMjUxLCAyNDAsIDIzMiwgMjE5LCAKLSAgICA3MSwgMjE0LCAxNjIsIDIxNSwgMjI3LCAyLCAyNDcsIDEyOCwgMjE0LCAxNjIsIDIxNSwgMjI3LCAyLCA0MywgMTYzLCAyNTEsIAotICAgIDIyOSwgMjE0LCAxNjIsIDIxNSwgMjI3LCAyLCA0NCwgMTYzLCAyNTEsIDIyOSwgMjMzLCA5MSwgMjUwLCA0MywgNzEsIDQyLCAKLSAgICAyLCAyMTQsIDE2MCwgNDMsIDIyNCwgMjgsIDcxLCA0MiwgMiwgMjMyLCAxMTQsIDQzLCAyMjQsIDI4LCA3MSwgNDIsIDIsIAotICAgIDIzMiwgMTE0LCA0NCwgMjI0LCAyOCwgNzEsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjgsIDcxLCAyNTAsIDQ0LCAyLCAKLSAgICAyMTQsIDE2MCwgNDMsIDIyNCwgMjgsIDcxLCAyNTAsIDQ0LCAyLCAyMzIsIDExNCwgNDMsIDIyNCwgMjgsIDcxLCAyNTAsIAotICAgIDQ0LCAyLCAyMzIsIDExNCwgNDQsIDIyNCwgMjgsIDcxLCAyNTAsIDQ0LCAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjgsIDIxNCwgCi0gICAgMTYwLCA0MywgMjE1LCAyMjYsIDIxNCwgMTYwLCA0NCwgMjE1LCAyMjYsIDIzMiwgMTE0LCA0MywgMjE1LCAyMjYsIDcxLCAKLSAgICAyMzEsIDg3LCAyMTgsIDIzNiwgODUsIDIzMSwgODcsIDIxOCwgMjM2LCA3MSwgMjMxLCA4NywgNCwgMjE4LCAyMzYsIDg1LCAKLSAgICAyMzEsIDg3LCA0LCAyMTgsIDIzNiwgMjMyLCAxMTQsIDQ0LCAyMTUsIDIyNiwgODUsIDIxOCwgMzksIDIsIDIyMywgMTM1LCAKLSAgICAyNDksIDI1NSwgMjE0LCAxOTQsIDIxOSwgNjIsIDI0OSwgMjMwLCA4NSwgMjE4LCAxNTgsIDcxLCAyMTgsIDE1OCwgMjMyLCAKLSAgICAyMzQsIDIxNiwgMTMzLCAyMTgsIDM4LCAyNTMsIDI0MiwgMjI4LCA3NiwgMjQ4LCA0NiwgMjI4LCA3NiwgMjQ5LCAyMDMsIAotICAgIDIyNiwgMTY3LCA4NSwgMjE3LCAxLCA3MSwgMjE3LCAxLCAyNTIsIDE2NCwgMjUxLCAxNzEsIDI1MiwgMTY0LCA5MywgMiwgCi0gICAgMjUwLCAxMzcsIDI1MiwgMTY0LCA5MywgMiwgMjExLCAxNzgsIDIyMiwgMCwgMjE0LCAxOTUsIDIsIDIyMywgMTYzLCAyNDYsIAotICAgIDkyLCAyNDAsIDI1MCwgMjUyLCAzMCwgNzEsIDIyMCwgNCwgMjI1LCAxMDQsIDg1LCAyMjAsIDQsIDIyNSwgMTA0LCAyMjAsIAotICAgIDg5LCAyMjMsIDUyLCAyMjIsIDE4OSwgMjQ0LCA2MywgMjQxLCAyMzUsIDI1MSwgMTIxLCA4NSwgNDMsIDIyNSwgMTAsIDIzNSwgCi0gICAgMjQ5LCA4NSwgNDQsIDIyNSwgMTAsIDIzNSwgMjQ5LCA3MSwgNDMsIDIyNSwgMTAsIDIzNSwgMjQ5LCA3MSwgMTIwLCAyMjUsIAotICAgIDEwLCAyMzUsIDI0OSwgNzEsIDQ0LCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDEyNCwgMjI1LCAxMCwgMjM1LCAyNDksIDIxOSwgCi0gICAgMTAzLCAyMiwgMjQ5LCAxMzcsIDI1MCwgMjI3LCA1MCwgMjIzLCAxNzUsIDUwLCAyNTEsIDI0NywgNTAsIDI1MSwgMzMsIAotICAgIDI1NCwgMTEwLCAyMjYsIDE0OSwgMjQ5LCAxMzgsIDI1MCwgMTE5LCAyMjMsIDQwLCAyNDksIDEzOSwgNjQsIDIzMiwgMTI0LCAKLSAgICAyNDksIDEzOSwgNjQsIDIzNSwgMTIyLCAyMTgsIDE1OSwgMjIsIDI0OSwgMTQ0LCAyNDQsIDE3NiwgODcsIDI1NSwgMSwgCi0gICAgMjIwLCA5MSwgMjQyLCAyOSwgMjIsIDIxOSwgMTkxLCAyMjUsIDIyMywgODcsIDIxMCwgMjU0LCAyMTEsIDY5LCAyMTUsIAotICAgIDIxNiwgMzEsIDI0MSwgMjMwLCAyMTUsIDIxNiwgMzEsIDIzMywgMTEzLCAyMTUsIDIxNiwgMzEsIDI0NCwgMTA0LCAyMTUsIAotICAgIDIxNiwgMzEsIDIxNiwgMTM0LCAyMTUsIDIxNiwgMzEsIDIxMSwgMjM5LCAyMTUsIDIxNiwgMzEsIDIxMiwgNDAsIDIxNSwgCi0gICAgMjE2LCAzMSwgMjMwLCAxMjAsIDIxNSwgMjE2LCAzMSwgMjQ1LCAyMzEsIDIxMiwgMSwgNjQsIDI0OCwgMjYsIDcxLCAyNDMsIAotICAgIDI0NywgMjQ0LCAxOTgsIDcxLCAyMTksIDc2LCAyNDQsIDE5OCwgODUsIDIxOSwgNzYsIDI0NCwgMTk4LCA3MSwgMjE4LCAzOSwgCi0gICAgMiwgMjIzLCAxMzUsIDI0NCwgMTAwLCAyMjQsIDI1LCAyMzAsIDEzMywgMjMzLCA4NiwgMjI0LCAyNSwgMjMwLCAxMzMsIAotICAgIDIzMSwgNTksIDI0NCwgMTQ2LCA1MCwgMjQ1LCAyMzEsIDIzMSwgMTk1LCA1MCwgMjM1LCA0NCwgMjIxLCAyMjIsIDIxNCwgCi0gICAgMTQ1LCAyMjksIDk4LCAyMjUsIDIzLCAyNTQsIDIwLCAyMTcsIDQxLCAyNDMsIDU5LCAyNTEsIDExLCAyMzMsIDI1LCAyMTMsIAotICAgIDE1MCwgMjMyLCAyNDQsIDIyMSwgMTkzLCAyMjIsIDIxLCAyNTEsIDAsIDI1NCwgNTAsIDIyNSwgNTUsIDcxLCAyNTAsIDEyNSwgCi0gICAgMjM0LCA4NCwgNzEsIDI1MCwgMTI1LCAyMjQsIDE3LCA3MSwgMjUwLCAxMjUsIDIyMiwgMTk3LCA3MSwgMjUwLCAxMjUsIAotICAgIDI1MSwgMjM5LCA3MSwgMjUwLCAxMjUsIDIzNCwgMzYsIDcxLCAyNTAsIDEyNSwgMjI1LCAyMzUsIDg1LCAyNTAsIDEyNSwgCi0gICAgMjM0LCA4NCwgODUsIDI1MCwgMTI1LCAyMjQsIDE3LCA4NSwgMjUwLCAxMjUsIDIyMiwgMTk3LCA4NSwgMjUwLCAxMjUsIAotICAgIDI1MSwgMjM5LCA4NSwgMjUwLCAxMjUsIDIzNCwgMzYsIDg1LCAyNTAsIDEyNSwgMjI1LCAyMzUsIDg1LCAyMTksIDE4LCAKLSAgICAyMTgsIDUxLCA3MSwgMjQxLCAyMzUsIDIxOCwgNTEsIDcxLCAyNDgsIDEsIDIxOCwgNTEsIDg1LCAyNDksIDI1MywgMjE4LCAKLSAgICA1MSwgNzEsIDIxOSwgMTgsIDIxOCwgNTEsIDg1LCAyNDEsIDIzNSwgMjE4LCA1MSwgODUsIDI0OCwgMSwgMjE4LCA1MSwgNzEsIAotICAgIDI0OSwgMjUzLCAyMTgsIDUxLCAyNDAsIDI1MCwgMjE4LCAyNDAsIDIyNCwgMjUsIDIyOCwgNTIsIDI0NSwgMTk3LCAyMjgsIAotICAgIDUyLCAyNTIsIDgxLCAyNDUsIDE5NywgMjI4LCA0NywgMjUyLCA4MSwgMjE5LCAxMjAsIDIyOCwgNDcsIDIzMCwgNjIsIDI0NCwgCi0gICAgNzQsIDUwLCAyMzAsIDYyLCAyMjksIDE5MywgNTAsIDIzMCwgNjIsIDIyMCwgNzgsIDUwLCAyMTIsIDksIDE4MywgMjQ5LCAKLSAgICAxMzgsIDI0NSwgMjI4LCAxODMsIDI0OSwgMTM4LCAyMTQsIDE3MSwgMjIzLCAxMTUsIDg3LCAyMjMsIDExNSwgMTYsIDMxLCAKLSAgICAyMTUsIDQ4LCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAyMTUsIDQ3LCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAKLSAgICAyMTUsIDQ2LCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAyMTUsIDQ1LCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAKLSAgICAyMTUsIDQ0LCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAyMTUsIDQzLCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAKLSAgICAyMTUsIDQyLCAyMjUsIDM3LCAyMjMsIDExNSwgMTYsIDMxLCAyNDMsIDU3LCAyMzEsIDE0MywgODUsIDIxNCwgMTcxLCAyMjMsIAotICAgIDExNSwgODcsIDIyMywgMTE2LCAyMjYsIDI0LCA4NywgMjI2LCAwLCAyMjYsIDI0LCA4NywgMjI1LCAxNzcsIDIyNiwgMjQsIAotICAgIDUwLCAyMTEsIDI1NSwgODcsIDI0NywgMjQ5LCAyNDQsIDE5NywgMjQ3LCAyNDksIDI0NCwgMTk2LCAyNDcsIDI0OSwgMjQ0LCAKLSAgICAxOTUsIDI0NywgMjQ5LCAyNDQsIDE5NCwgMjQ3LCAyNDksIDI0NCwgMTkzLCAyNDcsIDI0OSwgMjQ0LCAxOTIsIDcxLCAyNTAsIAotICAgIDQ0LCAyLCA1OSwgMjIyLCAyNTQsIDcxLCAyNTAsIDQ0LCAyLCAxMTMsIDI0NywgMTI2LCA4NSwgMjUwLCA0NCwgMiwgNzEsIAotICAgIDU5LCAyMjIsIDI1NCwgODUsIDI1MCwgNDQsIDIsIDExMywgNzEsIDI0NywgMTI2LCAyMzAsIDE0NywgMzEsIDIxMSwgNjksIAotICAgIDIzMCwgMTQ3LCAzMSwgMjEwLCAyNTMsIDI0NywgMjMyLCAzMSwgMjQyLCAxMzgsIDIxMSwgNjksIDI0NywgMjMyLCAzMSwgCi0gICAgMjMzLCAxOSwgMjEwLCAyNTMsIDI0NywgMjMyLCAzMSwgMjMzLCAxOSwgMjExLCA2OSwgMjQ3LCAyMzIsIDMxLCAyNDIsIAotICAgIDEzOCwgMjEwLCAyNTMsIDcxLCAyNDQsIDgxLCA4NSwgMjQ0LCA4MSwgMjQyLCAyOSwgMjIsIDIyNSwgMTA3LCAyNTQsIDEyOCwgCi0gICAgMjQ5LCAxMzYsIDIxNywgMjM2LCAyMTgsIDE2NiwgNjQsIDI1NCwgMjM1LCAyMjEsIDIwOCwgMjU0LCAxNzgsIDI0NCwgNTksIAotICAgIDI0MywgNjcsIDIxOCwgMTY2LCA2NCwgMjQxLCAyMDksIDI1MywgMjA3LCA4NywgMjQ0LCA3MCwgMjI2LCAxMzAsIDcxLCAKLSAgICAyMTgsIDE1OCwgMTM0LCAyMzIsIDIxNCwgMjQ5LCAxODMsIDIyMiwgMjU0LCAxMzQsIDIzMiwgMjE0LCAyNDksIDE4MywgCi0gICAgMjMzLCA1MiwgMjEyLCA1MCwgNTAsIDEyNSwgMjEzLCAxMzAsIDUwLCAyNDYsIDExOCwgMjQ0LCAxNDYsIDUwLCAyNDYsIAotICAgIDExOCwgMjMxLCAxOTUsIDUwLCAyMzUsIDIxMCwgMjQ0LCAxNDYsIDIyLCAyMzEsIDE5NSwgNTAsIDIzMSwgMTk1LCAyMiwgCi0gICAgMjQ0LCAxNDYsIDUwLCAyMzEsIDE5NSwgMiwgMjE4LCAxMDUsIDUwLCAyMzEsIDE5NSwgMiwgMjE4LCAxMDUsIDIyLCAyMzEsIAotICAgIDE5NSwgMjIsIDI0NCwgMTQ2LCA1MCwgNjcsIDIzMSwgMTk1LCAyLCAyMTgsIDEwNSwgNTAsIDIwMywgMjMxLCAxOTUsIDIsIAotICAgIDIxOCwgMTA1LCA1MCwgMjMxLCA4NywgNzEsIDI1MCwgNDMsIDIzMSwgODcsIDg1LCAyNTAsIDQzLCAyMzEsIDg3LCA0LCA3MSwgCi0gICAgMjUwLCA0MywgMjMxLCAxNTgsIDg3LCAyNDcsIDE3NSwgODcsIDIxNCwgMTY5LCAyMjUsIDI1NSwgODcsIDI0OSwgMjM5LCAKLSAgICAyNDMsIDIzMSwgMjE0LCAxNDEsIDIyOSwgOTMsIDI1MCwgMTY5LCAyMjYsIDY1LCAyMzUsIDUwLCAyMTMsIDE4NSwgMjUwLCAKLSAgICAxMDEsIDg1LCAyMzAsIDEzNCwgMjMyLCAyMzEsIDIyMCwgMTE0LCAyMjAsIDE0OSwgMjI0LCA4LCAyMjAsIDEzMiwgMjE5LCAKLSAgICA1NywgMjUyLCAxNjcsIDI1MiwgMTM0LCA5MiwgMjM0LCAxNDQsIDcxLCAyNDYsIDEwMSwgMjMxLCAxOTAsIDcxLCAyNDYsIAotICAgIDEwMSwgMjM0LCA4NCwgODUsIDI0NiwgMTAxLCAyMzEsIDE5MCwgODUsIDI0NiwgMTAxLCAyMzQsIDg0LCAyMTksIDYzLCAKLSAgICAyMTEsIDIzMCwgMjE5LCA2NiwgMjE4LCAzOSwgMjUyLCA1OSwgMjQ5LCAyNTUsIDIyMywgMTYyLCA4NSwgMjE5LCA2MiwgCi0gICAgMjE2LCAxMzUsIDI1MCwgMCwgMjIsIDIyMywgMTYyLCAyMTUsIDk0LCA3MSwgMjIwLCA0LCAyMjUsIDEwNCwgMjE1LCA5NCwgCi0gICAgODUsIDIyMCwgNCwgMjI1LCAxMDQsIDcxLCAyNDgsIDEsIDIzNiwgNywgMjE4LCAyMzYsIDI0OSwgMTMzLCAyMzMsIDk3LCAKLSAgICAyNDcsIDIwMSwgMjUwLCAyNTIsIDIyNiwgMTcwLCAyMjUsIDEwNywgMjUwLCAyNTMsIDIxOSwgOTAsIDI0MSwgMjE5LCAyLCAKLSAgICA3MSwgMjQ5LCAxMzgsIDM3LCAyNDksIDEzMywgMjMzLCA5NywgMjUwLCAxNjEsIDIyOCwgODAsIDI0NSwgMTMyLCAyNTQsIAotICAgIDE0OSwgMjI2LCAxOTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MiwgODUsIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MiwgCi0gICAgNzEsIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MiwgODUsIDQzLCAyMzMsIDk4LCAyMzEsIDU4LCA3MSwgNDMsIAotICAgIDIzMywgOTgsIDIzMSwgNTgsIDI0NiwgOTcsIDIxOSwgODQsIDUwLCAxMTQsIDcxLCAyNDYsIDExMywgMjE1LCAyMjYsIDQzLCAKLSAgICAyNTAsIDgsIDI0NSwgMTMyLCA5MiwgMjIyLCAwLCAyNDQsIDE4MywgMjQ4LCA3LCAyMzYsIDcsIDcxLCAyNTAsIDQ0LCAyMzYsIAotICAgIDcsIDg1LCAyMTgsIDIzNiwgODUsIDIxNSwgMTkzLCAyMjMsIDYzLCA0MywgMjQ1LCAxMzEsIDIyMywgNjMsIDQzLCAyNDUsIAotICAgIDEzMCwgMjUzLCAyMTksIDE2LCAzMSwgMjE0LCAxNDUsIDExNCwgMjUwLCA0NCwgMiwgMjE4LCAxMDUsIDIyLCAxMTMsIDE3MCwgCi0gICAgNDgsIDIyNSwgMTkyLCAyMjIsIDI1MSwgMjM1LCAyMTIsIDIyNSwgMTkyLCAyMzMsIDQ5LCAyMzUsIDIxMiwgMjI1LCAxOTIsIAotICAgIDIzNSwgMjAwLCAyMjUsIDE5MiwgODUsIDI0OSwgMTM5LCAyMjYsIDIwMSwgMjIwLCAzMSwgMjIwLCAxOSwgMjE5LCAyMzEsIAotICAgIDI1MCwgNjksIDI1MCwgMjM0LCAyNDEsIDE2NCwgMjE5LCAxMjgsIDI0MywgNjgsIDIxMSwgMjMwLCAyNDAsIDIyNywgMjQzLCAKLSAgICA2OCwgMiwgMjQyLCAxOSwgMjMxLCAxNzgsIDE2LCAzMSwgMjMyLCAyMzUsIDIzMCwgMTIwLCAyMTQsIDE5NSwgMjI2LCAyMDEsIAotICAgIDI0MiwgMTI5LCAyNDQsIDIwLCAyNDQsIDgyLCAyMzYsIDcsIDI0MSwgNjYsIDI0NCwgMTM3LCAyMjIsIDE2LCA0MiwgMjQ0LCAKLSAgICAxOSwgMjQ5LCAxNjcsIDIxOSwgMTA2LCAyNDAsIDExOSwgMjE5LCAxMDksIDIyNSwgMTcxLCAyLCAyNTIsIDE2NywgMjE2LCAKLSAgICAyNDMsIDIzNSwgMTM3LCAyNTIsIDE1NCwgODcsIDI0MSwgMjM4LCAyNDIsIDE0MCwgODcsIDI0MywgMjM5LCAyMjQsIDE0NSwgCi0gICAgMjQ5LCAxMTEsIDIyNiwgMjAxLCA4NSwgMjE4LCAyMzYsIDcxLCAyNDQsIDgyLCAyLCAyMDMsIDIzMCwgMjI5LCA4NSwgMjE4LCAKLSAgICAxMDYsIDIxNCwgMTYwLCAyNTEsIDIyNSwgMjIxLCAxOTUsIDg1LCAyMjEsIDE5NSwgMjMyLCAxMTQsIDI1MSwgMjI1LCAyMjEsIAotICAgIDE5NSwgNzEsIDIyMSwgMTk1LCA3MSwgMTE0LCAyNTAsIDEzOCwgNzksIDIxNywgMiwgMjMyLCAxNjAsIDUwLCAyMTcsIDU0LCAKLSAgICAyNDYsIDk2LCAyNTQsIDIwMCwgMjQ1LCAxMjcsIDIyMywgMTYwLCAyNDQsIDkzLCAyMjMsIDE2MCwgMjQyLCAyMiwgMjEzLCAKLSAgICAxNzQsIDI0MiwgMjIsIDIxMSwgMTk4LCAyNDIsIDIyLCAyMzIsIDExNCwgNDQsIDIyNSwgMjAxLCAyMjUsIDIwMSwgMjE0LCAKLSAgICAxNjAsIDQ0LCAyMjUsIDIwMSwgNzEsIDIyOCwgMjM1LCA4NSwgMjI4LCAyMzUsIDI1MCwgMTM4LCA3OSwgMTE0LCAyNTAsIAotICAgIDEzOCwgNzksIDIzMCwgODksIDIxMSwgMTc4LCAxMTQsIDIzMCwgODksIDIxMSwgMTc4LCAyNTIsIDE2NCwgMjExLCAxNzgsIAotICAgIDExNCwgMjUyLCAxNjQsIDIxMSwgMTc4LCAyMjYsIDEzMCwgMjYsIDI0OSwgMTM4LCAxMTQsIDI2LCAyNDksIDEzOCwgMjA0LCAKLSAgICAyNTAsIDE4MywgMjQ5LCAxMzgsIDExNCwgMjA0LCAyNTAsIDE4MywgMjQ5LCAxMzgsIDcsIDI0OSwgMTM4LCAyMjAsIDkzLCAKLSAgICA3MSwgNywgMjQ5LCAxMzgsIDIyNiwgMTMwLCA3LCAyNDksIDEzOCwgMjMxLCAxOTIsIDI0OSwgMTM4LCAyMTgsIDE1OSwgNjQsIAotICAgIDI0OCwgMTU3LCAyNDQsIDE5LCAyMTcsIDE2LCAyNTMsIDIyNCwgMjQ0LCAxOSwgMjUyLCAxNjUsIDI1MywgMjI0LCAxMTQsIAotICAgIDI0NCwgMTksIDI1MiwgMTY1LCAyNTMsIDIyNCwgMjQ0LCAxOSwgMjQ5LCAyNTEsIDI1MywgMjI0LCA4NSwgMjQ0LCAxOSwgCi0gICAgMjI1LCAxMiwgMjE4LCAxNTgsIDcxLCAyNDQsIDE5LCAyMjUsIDEyLCAyMTgsIDE1OCwgMjE5LCAxMywgMjE4LCAxMTMsIAotICAgIDIyNiwgMTMwLCA3MSwgMjE4LCAxNTgsIDM3LCA3MSwgMjE4LCAxNTgsIDIwNCwgMjUwLCAxODMsIDg1LCAyMTgsIDE1OCwgCi0gICAgODUsIDI1MCwgMTgzLCA3MSwgMjE4LCAxNTgsIDIyNiwgMTMwLCA4NSwgMjE4LCAxNTgsIDExNCwgMjI2LCAxMzAsIDg1LCAKLSAgICAyMTgsIDE1OCwgMjI1LCA2MywgMjE4LCAxNTgsIDIyMCwgOTMsIDcxLCAyMTgsIDE1OCwgMTE0LCAyNTMsIDIyNCwgMjA0LCAKLSAgICAyNTAsIDE4MywgMjUzLCAyMjQsIDI0NSwgMjAxLCAyMTgsIDI0NiwgMjUzLCAyMjQsIDI0NSwgMjAxLCAyMjUsIDEyLCA4NSwgCi0gICAgMjE4LCAxNTgsIDI0NSwgMjAxLCAyMjUsIDEyLCAyMjUsIDYzLCAyMTgsIDE1OCwgMjE5LCAxMjcsIDIyNSwgMTIsIDg1LCAKLSAgICAyMTgsIDE1OCwgMjQ1LCAyMDEsIDIyNSwgMTIsIDIyMywgMTE3LCA4NSwgMjE4LCAxNTgsIDExNCwgMjQ1LCAyMDEsIDIyNSwgCi0gICAgMTIsIDIyMywgMTE3LCA4NSwgMjE4LCAxNTgsIDIxNSwgNzcsIDIyNSwgMTIsIDg1LCAyMTgsIDE1OCwgMjE5LCAxMjIsIAotICAgIDIyNSwgMTIsIDI1MywgMjI0LCAyMTcsIDE2LCAyNTMsIDIyNCwgMjA0LCAyNTAsIDE4MywgMjE3LCAxNiwgMjUzLCAyMjQsIAotICAgIDExNCwgMjE3LCAxNiwgMjUzLCAyMjQsIDIxOSwgMTI3LCAyMjUsIDE2MCwgODUsIDIyLCA3MSwgMjQ0LCA2MiwgODUsIDI0NCwgCi0gICAgNjIsIDcxLCAyNDQsIDYyLCAyNDUsIDIwMSwgMjI1LCAxNjAsIDIyNiwgMTMwLCA4NSwgMjQ0LCA2MiwgMzcsIDIwNCwgMjUwLCAKLSAgICAxODMsIDI0NSwgMjAxLCAyMjUsIDEyLCAyMTgsIDE1OCwgMTE0LCAyMTcsIDE2LCAyMjUsIDYzLCAyNTMsIDIyNCwgMjE5LCAKLSAgICA2NCwgMjE2LCAxMDYsIDIxNSwgMjE5LCAyMTksIDY0LCAxMTQsIDI1MCwgMTIyLCAyMTksIDY0LCAyMTksIDE1LCAxMTQsIAotICAgIDIxOSwgMTUsIDI1MiwgMTY1LCAyNTMsIDIyNCwgMjQ1LCAyMDEsIDIxNywgMTYsIDIyNCwgMTc0LCAyNTMsIDIyNCwgMTE0LCAKLSAgICAyNDUsIDIwMSwgMjE3LCAxNiwgMjI0LCAxNzQsIDI1MywgMjI0LCAyNDksIDEzOSwgNzksIDIyMCwgOTMsIDcxLCAyNTAsIAotICAgIDQzLCAxNTIsIDkyLCAyNDksIDEzOSwgNzksIDIzMiwgMTE0LCA0NCwgMjQ2LCA5NCwgNzEsIDIxOCwgMjM2LCAyMTQsIDE2MCwgCi0gICAgNDQsIDI0NiwgOTQsIDcxLCAyMTgsIDIzNiwgMjMyLCAxMTQsIDQ0LCAyMjAsIDkzLCA3MSwgMjE4LCAyMzYsIDIxNCwgMTYwLCAKLSAgICA0NCwgMjIwLCA5MywgNzEsIDIxOCwgMjM2LCA4NSwgMjI0LCAxNiwgMTY0LCAyMjYsIDE1MSwgNzEsIDIyNCwgMTYsIDE2NCwgCi0gICAgMjI2LCAxNTEsIDcxLCAyNDUsIDM5LCAxNjQsIDIyNiwgMTUxLCA4NSwgMjQ4LCAxLCAyMzAsIDE4NywgNzEsIDIxMSwgMTc4LCAKLSAgICAxMTQsIDI0NSwgMzksIDE2NCwgODcsIDE5MywgNjcsIDEzMCwgMjMxLCA4NywgNjcsIDEzMCwgMTE0LCA2NywgMTMwLCAxMTQsIAotICAgIDIxOSwgMTU3LCAyMTUsIDk0LCAyNDksIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDIxOSwgMTU3LCAyNDksIAotICAgIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDUyLCAyMTUsIDk0LCAyNDksIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgCi0gICAgMTUxLCAxMTQsIDUyLCAyNDksIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDEyMSwgMjE5LCAxNTcsIDI0OSwgCi0gICAgMjI4LCAyMjQsIDEsIDE2NCwgMjI2LCAxNTEsIDExNCwgMTIxLCA1MiwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIAotICAgIDE1MSwgMjQ5LCA5OSwgMjE4LCAxNDIsIDIyNiwgMTksIDUsIDIyNiwgMTUxLCAxMTQsIDI0NSwgMzksIDE2NCwgMjI2LCAKLSAgICAxNTEsIDExNCwgMjQxLCAyMzUsIDI0NSwgMzksIDE2NCwgMjI2LCAxNTEsIDExNCwgODUsIDI0MSwgMjM0LCAyMjIsIDE4OSwgCi0gICAgMTE0LCA4NSwgMjQxLCAyMzUsIDI1MSwgMTIxLCAyNDQsIDYzLCAyNDEsIDIzNCwgMjIyLCAxODksIDI0NCwgNjMsIDI0MSwgCi0gICAgMjM1LCAyNTEsIDEyMSwgMjMxLCA4NywgNDMsIDIyNiwgOCwgMjI2LCAxNTEsIDIzMSwgODcsIDQ0LCAyMjYsIDgsIDIyNiwgCi0gICAgMTUxLCAyMzEsIDg3LCAyNDQsIDcxLCA0MywgMjI2LCA4LCAyMjYsIDE1MSwgMjMxLCA4NywgMjQ0LCA3MSwgNDQsIDIyNiwgCi0gICAgOCwgMjI2LCAxNTEsIDIzMSwgODcsIDIzMywgNDgsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDIzMSwgODcsIAotICAgIDIyMiwgMjUwLCAyNTQsIDExOCwgMjUxLCAxNjYsIDIyNiwgMTUxLCAxMTQsIDIzMywgNDgsIDI1NCwgMTE4LCAyMjQsIDEsIAotICAgIDE2NCwgMjI2LCAxNTEsIDExNCwgMjIyLCAyNTAsIDI1NCwgMTE4LCAyMjQsIDEsIDE2NCwgMjI2LCAxNTEsIDExNCwgMjMzLCAKLSAgICA0OCwgMjU0LCAxMTgsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMTE0LCAyMjIsIDI1MCwgMjU0LCAxMTgsIDI1MSwgMTY2LCAyMjYsIAotICAgIDE1MSwgMTkzLCA0MywgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDE5MywgNDQsIDIxNiwgNywgMjIwLCAKLSAgICA1NSwgMjUxLCAxNjYsIDIyNiwgMTUxLCAyMzEsIDg3LCA0MywgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMjMxLCAKLSAgICA4NywgNDQsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTExLCAyNDcsIAotICAgIDIxMiwgMTUyLCAzNywgMjEsIDEwNSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxNTgsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgCi0gICAgMTYxLCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIDE5MCwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTUsIDI0NywgMjEyLCAKLSAgICAxNTIsIDM3LCAyMSwgMTk5LCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIDE5NiwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAyMDEsIAotICAgIDI0NywgMjEyLCAxNTIsIDM3LCA1NCwgMjE2LCAyNDgsIDI0NywgMjEyLCAzNywgMzUsIDIxLCAxMTEsIDI0NywgMjEyLCAzNywgCi0gICAgMzUsIDIxLCAxMDUsIDI0NywgMjEyLCAzNywgMzUsIDIxLCAxNTgsIDI0NywgMjEyLCAzNywgMzUsIDIxLCAxNjEsIDI0NywgCi0gICAgMjEyLCAzNywgMzUsIDIxLCAxOTAsIDI0NywgMjEyLCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjEyLCAzNywgMzUsIDIxLCAKLSAgICAxOTksIDI0NywgMjEyLCAzNywgMzUsIDIxLCAxOTYsIDI0NywgMjEyLCAzNywgMzUsIDIxLCAyMDEsIDI0NywgMjEyLCAzNywgCi0gICAgMzUsIDU0LCAyMTYsIDI0OCwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTExLCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIAotICAgIDIxLCAxMDUsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDE1OCwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTYxLCAKLSAgICAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxOTAsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDE5NSwgMjQ3LCAyMTIsIAotICAgIDE1MiwgMzcsIDM1LCAyMSwgMTk5LCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxOTYsIDI0NywgMjEyLCAxNTIsIDM3LCAKLSAgICAzNSwgMjEsIDIwMSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCA1NCwgMjE2LCAyNDgsIDExNCwgMjExLCAyNDYsIDk3LCA3NSwgCi0gICAgMTE0LCA5NiwgNTAsIDExNCwgMjMwLCAxODcsIDUwLCAxMTQsIDI0NywgMTc3LCA1MCwgMTE0LCAyMTksIDMwLCAyNDUsIAotICAgIDIyOCwgNzUsIDExNCwgOTcsIDc1LCAxMTQsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjQ2LCAxMDYsIDIyNSwgMTQsIDk3LCAKLSAgICA3NSwgMTE0LCAyMjIsIDE4NiwgOTcsIDc1LCAyMTUsIDIyNSwgOTcsIDc1LCAxMTQsIDIxNSwgMjI1LCA5NywgNzUsIDI0OCwgCi0gICAgMTYzLCAyMTUsIDIyNSwgOTcsIDc1LCAxMTQsIDI0OCwgMTYzLCAyMTUsIDIyNSwgOTcsIDc1LCA4NSwgOTcsIDc1LCAyMTYsIAotICAgIDE0NSwgMjE2LCAxMywgOTcsIDI1NCwgMSwgMjE2LCAxNDUsIDI1MSwgMTgxLCA5NywgMjU0LCAxLCA4NSwgOTcsIDI1NCwgMSwgCi0gICAgMTE0LCA4NSwgMjQ5LCA5OSwgMjQ2LCAxMTIsIDIyLCA5NywgNzUsIDExNCwgODUsIDI0OSwgOTksIDIxNCwgMTUzLCAyMiwgCi0gICAgOTcsIDc1LCAyMTgsIDIzMywgODUsIDk3LCA3NSwgMTE0LCAyNDksIDIxNCwgODUsIDk3LCA3NSwgMjIyLCAyNDksIDcxLCAKLSAgICA5NywgNzUsIDIzMywgNDcsIDcxLCA5NywgNzUsIDI1MiwgMTkxLCAyMjAsIDkzLCA3MSwgOTcsIDc1LCAyNDMsIDI0OSwgCi0gICAgMjIwLCA5MywgNzEsIDk3LCA3NSwgMTE0LCAyMzIsIDExNCwgMjIyLCAyNDgsIDcxLCA5NywgNzUsIDExNCwgMjE0LCAxNjAsIAotICAgIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAyMjgsIDU0LCAyMzIsIDExNCwgMjIyLCAyNDgsIDcxLCA5NywgNzUsIDI0OSwgMTA3LCAKLSAgICAyMzIsIDEyOSwgMjI4LCA1NCwgMjE0LCAxNjAsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAzNywgMTE0LCA3MSwgOTcsIDc1LCAKLSAgICAyMTEsIDI1MiwgOTcsIDc1LCAyNTEsIDIyOCwgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAyNTEsIDIyOCwgOTcsIDc1LCAyNTEsIAotICAgIDIyOCwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAxMTQsIDI1MSwgMjI4LCAyMTksIDMwLCAyNDUsIDIyOCwgNzUsIDExNCwgCi0gICAgMjUxLCAyMjgsIDk3LCA3NSwgMTE0LCAyNTEsIDIyOCwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTcsIDE4LCA5NywgNzUsIAotICAgIDExNCwgMjE3LCAxNywgOTcsIDc1LCAyMTIsIDE4LCA5NywgNzUsIDExNCwgMjEyLCAxOCwgOTcsIDc1LCAyMjYsIDE3NiwgCi0gICAgOTcsIDc1LCA1MiwgMjQ5LCAxMDcsIDIzMiwgMTI5LCAxMzQsIDI0NywgMjIyLCAyNTQsIDExNywgNzEsIDIxNSwgMjI3LCAKLSAgICAyNDksIDE5NSwgNCwgNzEsIDIxNSwgMjI2LCAyMjUsIDE3NCwgMjA0LCAyMTgsIDY0LCAyMDQsIDIxOCwgMjIsIDQzLCAyMjIsIAotICAgIDkyLCAyNTIsIDE4MSwgMjQ4LCA2OCwgNDQsIDIyMiwgOTIsIDI1MiwgMTgxLCAyNDgsIDY4LCAxNzcsIDIsIDU5LCAyMzUsIAotICAgIDIyMiwgMjIzLCA1MywgMjE5LCA0OSwgMjI0LCAyMDQsIDIxOCwgNjQsIDIxOCwgMjMsIDIyNCwgMjA0LCAyMTksIDQ4LCA2NywgCi0gICAgMjUyLCAxNDksIDIsIDIwMywgOTEsIDExLCAyMjIsIDIzMSwgMjQ4LCA2LCAyMDAsIDI0NywgMTc2LCAxMSwgMjQ0LCAxODMsIAotICAgIDI0OCwgNiwgOTIsIDIzMiwgMTUyLCAyNTQsIDEyNiwgOTIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgNzEsIDI0OCwgMSwgMiwgCi0gICAgMjUwLCAxODEsIDI0NywgMTI4LCAyMiwgMiwgMjQ3LCAxMjgsIDI0NSwgMTc4LCA2NCwgMjI2LCAxNzQsIDIxNCwgMTUyLCAKLSAgICAyMzIsIDExNCwgNDQsIDI0OSwgMTY5LCAyLCAyNDcsIDEyOCwgMjE0LCAxNjAsIDQzLCAyNDksIDE2OSwgMiwgMjQ3LCAxMjgsIAotICAgIDQzLCAyMjYsIDEzMiwgMjM1LCA3MiwgNDQsIDIyNiwgMTMyLCAyMzUsIDcyLCAyNDMsIDIzNiwgMjI2LCAxMzIsIDIzNSwgCi0gICAgNzIsIDIzMywgOTEsIDEyMCwgMjE3LCA4OCwgMjMzLCA5MSwgMTI0LCAyMTcsIDg4LCA0MywgMjIsIDQ0LCA1MiwgMjE1LCAKLSAgICA5MywgNDMsIDIyLCA0NCwgMjE3LCA4OCwgNDMsIDIzMCwgOTIsIDIwMCwgNDQsIDIxNywgODgsIDIwMCwgNDMsIDIxNywgODgsIAotICAgIDEyMCwgMjE3LCA4OSwgMiwgMjUwLCA0NCwgNDgsIDIzMiwgMTExLCAyNDcsIDE4MSwgMjUxLCA4NiwgMjAzLCAyMjIsIDEzNSwgCi0gICAgNzEsIDI0OSwgMjEzLCAyNDgsIDAsIDcxLCAyNDksIDIxMywgMjQ4LCAxLCAyLCAxNDAsIDIxNiwgMTE1LCA3MSwgMjQ5LCAKLSAgICAyMTMsIDI0OCwgMSwgMiwgOTcsIDIxNiwgMTE1LCA3MSwgNDIsIDIsIDE0MCwgMjE2LCAxMTUsIDcxLCA0MiwgMiwgOTcsIAotICAgIDIxNiwgMTE1LCAxMSwgNDMsIDcxLCA0MiwgMTI3LCAxMSwgNDQsIDcxLCA0MiwgMTI3LCAxMSwgNDMsIDI1NCwgMTE4LCAKLSAgICAxMjcsIDExLCA0NCwgMjU0LCAxMTgsIDEyNywgMTEsIDQzLCA1MiwgMjU0LCAxMTgsIDEyNywgMTEsIDQ0LCA1MiwgMjU0LCAKLSAgICAxMTgsIDEyNywgMTEsIDQzLCA3MSwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDExLCA0NCwgNzEsIDIxNiwgNywgMjIwLCA1NSwgCi0gICAgMTI3LCAxMSwgNDMsIDI0NCwgNzEsIDIyNiwgNywgMTEsIDQ0LCAyNDQsIDcxLCAyMjYsIDcsIDIxNCwgMTUzLCAyMjQsIDI3LCAKLSAgICA3NSwgMjQ2LCAxMTIsIDIyNCwgMjcsIDc1LCAyNTQsIDk2LCAyNDMsIDEwNSwgMjUwLCA0NCwgNzUsIDI1MCwgMTAsIDI0MywgCi0gICAgMTA1LCAyNTAsIDQ0LCA3NSwgNDQsIDgwLCAyLCAzNywgMjI1LCAyNSwgMjAwLCAxNDAsIDc1LCAyMDAsIDk3LCA3NSwgMjAwLCAKLSAgICA0MywgNDQsIDc1LCAyMDAsIDE0MCwgNTIsIDc1LCAyMDAsIDk3LCA1MiwgNzUsIDIwMCwgNDMsIDQ0LCA1MiwgNzUsIDIwMCwgCi0gICAgMTQwLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjAwLCA5NywgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgMTQwLCA1MiwgODAsIAotICAgIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDUyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjAwLCA5NywgMjE4LCAyMzIsIDc1LCA0NiwgCi0gICAgNDcsIDI1MSwgMjIzLCA0NiwgNDcsIDI0NywgMTI1LCA0NiwgNDcsIDI0NiwgMjUzLCA0NiwgNDcsIDI0NywgMTI0LCA0NiwgCi0gICAgNDcsIDI0NiwgMTg5LCA0NiwgNDcsIDI0NywgNjAsIDQ2LCA0NywgMjQ2LCAyNTIsIDQ2LCA0NywgMjQ3LCAxMjMsIDQ2LCAKLSAgICA0NywgMjQ2LCAxNTcsIDQ2LCA0NywgMjQ3LCAyOCwgNDYsIDQ3LCAyNDYsIDIyMCwgNDYsIDQ3LCAyNDcsIDkxLCA0NiwgNDcsIAotICAgIDI0NiwgMTg4LCA0NiwgNDcsIDI0NywgNTksIDQ2LCA0NywgMjQ2LCAyNTEsIDQ2LCA0NywgMjQ3LCAxMjIsIDQ2LCA0NywgCi0gICAgMjQ2LCAxNDEsIDQ2LCA0NywgMjQ3LCAxMiwgNDYsIDQ3LCAyNDYsIDIwNCwgNDYsIDQ3LCAyNDcsIDc1LCA0NiwgNDcsIAotICAgIDI0NiwgMTcyLCA0NiwgNDcsIDI0NywgNDMsIDQ2LCA0NywgMjQ2LCAyMzUsIDQ2LCA0NywgMjQ3LCAxMDYsIDQ2LCA0NywgCi0gICAgMjQ2LCAxNTYsIDQ2LCA0NywgMjQ3LCAyNywgNDYsIDQ3LCAyNDYsIDIxOSwgNDYsIDQ3LCAyNDcsIDkwLCA0NiwgNDcsIAotICAgIDI0NiwgMTg3LCA0NiwgNDcsIDI0NywgNTgsIDQ2LCA0NywgMjQ2LCAyNTAsIDQ2LCA0NywgMjQ3LCAxMjEsIDQ2LCA0NywgCi0gICAgMjQ2LCAxMzMsIDQ2LCA0NywgMjQ3LCA0LCA0NiwgNDcsIDI0NiwgMTk2LCA0NiwgNDcsIDI0NywgNjcsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNjQsIDQ2LCA0NywgMjQ3LCAzNSwgNDYsIDQ3LCAyNDYsIDIyNywgNDYsIDQ3LCAyNDcsIDk4LCA0NiwgNDcsIDI0NiwgCi0gICAgMTQ4LCA0NiwgNDcsIDI0NywgMTksIDQ2LCA0NywgMjQ2LCAyMTEsIDQ2LCA0NywgMjQ3LCA4MiwgNDYsIDQ3LCAyNDYsIAotICAgIDE3OSwgNDYsIDQ3LCAyNDcsIDUwLCA0NiwgNDcsIDI0NiwgMjQyLCA0NiwgNDcsIDI0NywgMTEzLCA0NiwgNDcsIDI0NiwgCi0gICAgMTQwLCA0NiwgNDcsIDI0NywgMTEsIDQ2LCA0NywgMjQ2LCAyMDMsIDQ2LCA0NywgMjQ3LCA3NCwgNDYsIDQ3LCAyNDYsIAotICAgIDE3MSwgNDYsIDQ3LCAyNDcsIDQyLCA0NiwgNDcsIDI0NiwgMjM0LCA0NiwgNDcsIDI0NywgMTA1LCA0NiwgNDcsIDI0NiwgCi0gICAgMTU1LCA0NiwgNDcsIDI0NywgMjYsIDQ2LCA0NywgMjQ2LCAyMTgsIDQ2LCA0NywgMjQ3LCA4OSwgNDYsIDQ3LCAyNDYsIAotICAgIDE4NiwgNDYsIDQ3LCAyNDcsIDU3LCA0NiwgNDcsIDI0NiwgMjQ5LCA0NiwgNDcsIDI0NywgMTIwLCA0NiwgNDcsIDI0NiwgCi0gICAgMTI5LCA0NiwgNDcsIDI0NywgMCwgNDYsIDQ3LCAyNDYsIDE5MiwgNDYsIDQ3LCAyNDcsIDYzLCA0NiwgNDcsIDI0NiwgMTYwLCAKLSAgICA0NiwgNDcsIDI0NywgMzEsIDQ2LCA0NywgMjQ2LCAyMjMsIDQ2LCA0NywgMjQ3LCA5NCwgNDYsIDQ3LCAyNDYsIDE0NCwgNDYsIAotICAgIDQ3LCAyNDcsIDE1LCA0NiwgNDcsIDI0NiwgMjA3LCA0NiwgNDcsIDI0NywgNzgsIDQ2LCA0NywgMjQ2LCAxNzUsIDQ2LCA0NywgCi0gICAgMjQ3LCA0NiwgNDYsIDQ3LCAyNDYsIDIzOCwgNDYsIDQ3LCAyNDcsIDEwOSwgNDYsIDQ3LCAyNDYsIDEzNiwgNDYsIDQ3LCAKLSAgICAyNDcsIDcsIDQ2LCA0NywgMjQ2LCAxOTksIDQ2LCA0NywgMjQ3LCA3MCwgNDYsIDQ3LCAyNDYsIDE2NywgNDYsIDQ3LCAyNDcsIAotICAgIDM4LCA0NiwgNDcsIDI0NiwgMjMwLCA0NiwgNDcsIDI0NywgMTAxLCA0NiwgNDcsIDI0NiwgMTUxLCA0NiwgNDcsIDI0NywgCi0gICAgMjIsIDQ2LCA0NywgMjQ2LCAyMTQsIDQ2LCA0NywgMjQ3LCA4NSwgNDYsIDQ3LCAyNDYsIDE4MiwgNDYsIDQ3LCAyNDcsIDUzLCAKLSAgICA0NiwgNDcsIDI0NiwgMjQ1LCA0NiwgNDcsIDI0NywgMTE2LCA0NiwgNDcsIDI0NiwgMTMyLCA0NiwgNDcsIDI0NywgMywgNDYsIAotICAgIDQ3LCAyNDYsIDE5NSwgNDYsIDQ3LCAyNDcsIDY2LCA0NiwgNDcsIDI0NiwgMTYzLCA0NiwgNDcsIDI0NywgMzQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjYsIDQ2LCA0NywgMjQ3LCA5NywgNDYsIDQ3LCAyNDYsIDE0NywgNDYsIDQ3LCAyNDcsIDE4LCA0NiwgNDcsIAotICAgIDI0NiwgMjEwLCA0NiwgNDcsIDI0NywgODEsIDQ2LCA0NywgMjQ2LCAxNzgsIDQ2LCA0NywgMjQ3LCA0OSwgNDYsIDQ3LCAKLSAgICAyNDYsIDI0MSwgNDYsIDQ3LCAyNDcsIDExMiwgNDYsIDQ3LCAyNDYsIDEzOSwgNDYsIDQ3LCAyNDcsIDEwLCA0NiwgNDcsIAotICAgIDI0NiwgMjAyLCA0NiwgNDcsIDI0NywgNzMsIDQ2LCA0NywgMjQ2LCAxNzAsIDQ2LCA0NywgMjQ3LCA0MSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIzMywgNDYsIDQ3LCAyNDcsIDEwNCwgNDYsIDQ3LCAyNDYsIDE1NCwgNDYsIDQ3LCAyNDcsIDI1LCA0NiwgNDcsIAotICAgIDI0NiwgMjE3LCA0NiwgNDcsIDI0NywgODgsIDQ2LCA0NywgMjQ2LCAxODUsIDQ2LCA0NywgMjQ3LCA1NiwgNDYsIDQ3LCAKLSAgICAyNDYsIDI0OCwgNDYsIDQ3LCAyNDcsIDExOSwgNDYsIDQ3LCAyNDYsIDEyNywgNDYsIDQ3LCAyNDYsIDI1NCwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5MCwgNDYsIDQ3LCAyNDcsIDYxLCA0NiwgNDcsIDI0NiwgMTU4LCA0NiwgNDcsIDI0NywgMjksIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjEsIDQ2LCA0NywgMjQ3LCA5MiwgNDYsIDQ3LCAyNDYsIDE0MiwgNDYsIDQ3LCAyNDcsIDEzLCA0NiwgNDcsIAotICAgIDI0NiwgMjA1LCA0NiwgNDcsIDI0NywgNzYsIDQ2LCA0NywgMjQ2LCAxNzMsIDQ2LCA0NywgMjQ3LCA0NCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIzNiwgNDYsIDQ3LCAyNDcsIDEwNywgNDYsIDQ3LCAyNDYsIDEzNCwgNDYsIDQ3LCAyNDcsIDUsIDQ2LCA0NywgCi0gICAgMjQ2LCAxOTcsIDQ2LCA0NywgMjQ3LCA2OCwgNDYsIDQ3LCAyNDYsIDE2NSwgNDYsIDQ3LCAyNDcsIDM2LCA0NiwgNDcsIAotICAgIDI0NiwgMjI4LCA0NiwgNDcsIDI0NywgOTksIDQ2LCA0NywgMjQ2LCAxNDksIDQ2LCA0NywgMjQ3LCAyMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMiwgNDYsIDQ3LCAyNDcsIDgzLCA0NiwgNDcsIDI0NiwgMTgwLCA0NiwgNDcsIDI0NywgNTEsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDMsIDQ2LCA0NywgMjQ3LCAxMTQsIDQ2LCA0NywgMjQ2LCAxMzAsIDQ2LCA0NywgMjQ3LCAxLCA0NiwgNDcsIAotICAgIDI0NiwgMTkzLCA0NiwgNDcsIDI0NywgNjQsIDQ2LCA0NywgMjQ2LCAxNjEsIDQ2LCA0NywgMjQ3LCAzMiwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyNCwgNDYsIDQ3LCAyNDcsIDk1LCA0NiwgNDcsIDI0NiwgMTQ1LCA0NiwgNDcsIDI0NywgMTYsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDgsIDQ2LCA0NywgMjQ3LCA3OSwgNDYsIDQ3LCAyNDYsIDE3NiwgNDYsIDQ3LCAyNDcsIDQ3LCA0NiwgNDcsIAotICAgIDI0NiwgMjM5LCA0NiwgNDcsIDI0NywgMTEwLCA0NiwgNDcsIDI0NiwgMTM3LCA0NiwgNDcsIDI0NywgOCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMCwgNDYsIDQ3LCAyNDcsIDcxLCA0NiwgNDcsIDI0NiwgMTY4LCA0NiwgNDcsIDI0NywgMzksIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzEsIDQ2LCA0NywgMjQ3LCAxMDIsIDQ2LCA0NywgMjQ2LCAxNTIsIDQ2LCA0NywgMjQ3LCAyMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNSwgNDYsIDQ3LCAyNDcsIDg2LCA0NiwgNDcsIDI0NiwgMTgzLCA0NiwgNDcsIDI0NywgNTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDYsIDQ2LCA0NywgMjQ3LCAxMTcsIDQ2LCA0NywgMjQ2LCAxMjgsIDQ2LCA0NywgMjQ2LCAyNTUsIDQ2LCA0NywgCi0gICAgMjQ2LCAxOTEsIDQ2LCA0NywgMjQ3LCA2MiwgNDYsIDQ3LCAyNDYsIDE1OSwgNDYsIDQ3LCAyNDcsIDMwLCA0NiwgNDcsIAotICAgIDI0NiwgMjIyLCA0NiwgNDcsIDI0NywgOTMsIDQ2LCA0NywgMjQ2LCAxNDMsIDQ2LCA0NywgMjQ3LCAxNCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwNiwgNDYsIDQ3LCAyNDcsIDc3LCA0NiwgNDcsIDI0NiwgMTc0LCA0NiwgNDcsIDI0NywgNDUsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzcsIDQ2LCA0NywgMjQ3LCAxMDgsIDQ2LCA0NywgMjQ2LCAxMzUsIDQ2LCA0NywgMjQ3LCA2LCA0NiwgNDcsIAotICAgIDI0NiwgMTk4LCA0NiwgNDcsIDI0NywgNjksIDQ2LCA0NywgMjQ2LCAxNjYsIDQ2LCA0NywgMjQ3LCAzNywgNDYsIDQ3LCAKLSAgICAyNDYsIDIyOSwgNDYsIDQ3LCAyNDcsIDEwMCwgNDYsIDQ3LCAyNDYsIDE1MCwgNDYsIDQ3LCAyNDcsIDIxLCA0NiwgNDcsIAotICAgIDI0NiwgMjEzLCA0NiwgNDcsIDI0NywgODQsIDQ2LCA0NywgMjQ2LCAxODEsIDQ2LCA0NywgMjQ3LCA1MiwgNDYsIDQ3LCAKLSAgICAyNDYsIDI0NCwgNDYsIDQ3LCAyNDcsIDExNSwgNDYsIDQ3LCAyNDYsIDEzMSwgNDYsIDQ3LCAyNDcsIDIsIDQ2LCA0NywgCi0gICAgMjQ2LCAxOTQsIDQ2LCA0NywgMjQ3LCA2NSwgNDYsIDQ3LCAyNDYsIDE2MiwgNDYsIDQ3LCAyNDcsIDMzLCA0NiwgNDcsIAotICAgIDI0NiwgMjI1LCA0NiwgNDcsIDI0NywgOTYsIDQ2LCA0NywgMjQ2LCAxNDYsIDQ2LCA0NywgMjQ3LCAxNywgNDYsIDQ3LCAKLSAgICAyNDYsIDIwOSwgNDYsIDQ3LCAyNDcsIDgwLCA0NiwgNDcsIDI0NiwgMTc3LCA0NiwgNDcsIDI0NywgNDgsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDAsIDQ2LCA0NywgMjQ3LCAxMTEsIDQ2LCA0NywgMjQ2LCAxMzgsIDQ2LCA0NywgMjQ3LCA5LCA0NiwgNDcsIAotICAgIDI0NiwgMjAxLCA0NiwgNDcsIDI0NywgNzIsIDQ2LCA0NywgMjQ2LCAxNjksIDQ2LCA0NywgMjQ3LCA0MCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIzMiwgNDYsIDQ3LCAyNDcsIDEwMywgNDYsIDQ3LCAyNDYsIDE1MywgNDYsIDQ3LCAyNDcsIDI0LCA0NiwgNDcsIAotICAgIDI0NiwgMjE2LCA0NiwgNDcsIDI0NywgODcsIDQ2LCA0NywgMjQ2LCAxODQsIDQ2LCA0NywgMjQ3LCA1NSwgNDYsIDQ3LCAKLSAgICAyNDYsIDI0NywgNDYsIDQ3LCAyNDcsIDExOCwgOTcsIDIxNSwgNTgsIDgwLCAyLCA2NywgOTEsIDk3LCAyMTUsIDU4LCA4MCwgCi0gICAgMiwgNTIsIDY3LCA5MSwgMTQwLCA1MiwgODAsIDIsIDY3LCA5MSwgOTcsIDUyLCA4MCwgMiwgNjcsIDkxLCA0MywgNDQsIDUyLCAKLSAgICA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIDI0MywgMjUxLCAxMzAsIDE0MCwgNTIsIDgwLCAyNDMsIDI1MSwgCi0gICAgMTMwLCA5NywgNTIsIDgwLCAyNDMsIDI1MSwgMTMwLCAyNDYsIDExMiwgODAsIDIsIDIwMywgOTEsIDIxNCwgMTUzLCA4MCwgCi0gICAgMiwgMjAzLCA5MSwgMjE0LCAxNTMsIDIxNSwgMjEyLCA3NSwgMjQ2LCAxMTIsIDIxNSwgMjEyLCA3NSwgMTQwLCA1MiwgMjQ4LCAKLSAgICAxNjUsIDc1LCA5NywgNTIsIDI0OCwgMTY1LCA3NSwgMTQwLCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDc1LCA5NywgMjE1LCAyMTIsIAotICAgIDI0OCwgMTY1LCA3NSwgOTcsIDIxNSwgNTgsIDIxNSwgMjEyLCAyNDgsIDE2NSwgNzUsIDk3LCA4MCwgMiwgMjQ2LCAxMjYsIAotICAgIDIxOCwgMTQxLCAyMTQsIDE1MywgODAsIDIxNiwgNDMsIDEzMCwgMjQ2LCAxMTIsIDgwLCAyMTYsIDQzLCAxMzAsIDk3LCA4MCwgCi0gICAgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCA5NywgODAsIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDk3LCAyMTUsIDU4LCAKLSAgICA4MCwgMiwgMjE3LCA3OCwgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc5LCAyLCA2NywgOTEsIDk3LCAyMTUsIDU4LCA4MCwgCi0gICAgMiwgMjE3LCA3OSwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyNTQsIDMsIDk3LCAyNTQsIDMsIDE0MCwgNTIsIDI1NCwgMywgOTcsIAotICAgIDUyLCAyNTQsIDMsIDE0MCwgODAsIDIxNiwgNDMsIDg1LCAyNDgsIDAsIDk3LCA4MCwgMjE2LCA0MywgODUsIDI0OCwgMCwgCi0gICAgMTQwLCA4MCwgMjQzLCAyNTEsIDI1MiwgMTQ5LCAyMTYsIDQzLCA4NSwgMjQ4LCAwLCA5NywgODAsIDI0MywgMjUxLCAyNTIsIAotICAgIDE0OSwgMjE2LCA0MywgODUsIDI0OCwgMCwgMjI4LCA2MSwgMjEyLCA5LCAyMiwgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAKLSAgICAyMjgsIDYxLCAyNDUsIDIyOCwgMjIsIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDIyOCwgNjEsIDIxMiwgOSwgODAsIDIsIDEwMywgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDgwLCAyLCAxMDMsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMiwgMTAzLCAyMTksIDMwLCAKLSAgICAyMTIsIDksIDgwLCAyLCAxMDMsIDIyOCwgNjEsIDIxMiwgOSwgODAsIDIyLCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDIyOCwgCi0gICAgNjEsIDI0NSwgMjI4LCA4MCwgMjIsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgMjE5LCAzMCwgMjQ1LCAyMjgsIDgwLCAyMiwgCi0gICAgMjE5LCAzMCwgMjEyLCA5LCA3NSwgMjE5LCAzMCwgMjEyLCA5LCA4MCwgMjIsIDIyOCwgNjEsIDIxMiwgOSwgNzUsIDIyMiwgCi0gICAgMjMxLCAyNDgsIDcsIDI0OSwgMTMzLCAyNDQsIDE4MywgMjQ4LCA2LCAyNDQsIDE4MywgMjQ4LCA3LCAyNDksIDEzMywgMjIyLCAKLSAgICAyMzEsIDI0OCwgNiwgMjE5LCAzMCwgMjQ1LCAyMjgsIDgwLCAyNDksIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjgsIAotICAgIDYxLCAyNDUsIDIyOCwgODAsIDI0OSwgMTMzLCAyMTksIDMwLCAyNDUsIDIyOCwgNzUsIDI0NCwgMTgzLCAyNDgsIDcsIDI0OSwgCi0gICAgMTMzLCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDIyMiwgMjMxLCAyNDgsIDcsIDI0OSwgMTMzLCAyMTksIDMwLCAyNDUsIAotICAgIDIyOCwgNzUsIDIyOCwgNjEsIDI0NSwgMjI4LCA4MCwgMjQ5LCAxMzMsIDIyOCwgNjEsIDIxMiwgOSwgNzUsIDIyOCwgNjEsIAotICAgIDIxMiwgOSwgODAsIDI0OSwgMTMzLCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDIxMiwgMzYsIDgwLCAyMjUsIDEwLCAyNDcsIAotICAgIDIwMywgMjIyLCAyNTQsIDgwLCAyMjUsIDEwLCA5NywgMjE2LCAxODksIDI0OSwgOTgsIDIxNCwgMTUyLCA4MCwgMjI1LCAxMCwgCi0gICAgOTcsIDIxNiwgMTg5LCAyNDksIDk4LCAyNDYsIDExMSwgODAsIDIyNSwgMTAsIDI0NiwgMTEyLCAyMTYsIDE4OSwgMjQ5LCAKLSAgICA5OCwgMjMzLCA0MywgODAsIDIyNSwgMTAsIDI0NiwgMTEyLCAyMTYsIDE4OSwgMjQ5LCA5OCwgMjIyLCAyNDQsIDIyMiwgCi0gICAgMjQ3LCAyNTQsIDM0LCAyNTAsIDEwLCA3NSwgMjMzLCA0NiwgMjU0LCAzNCwgMjU0LCA5NiwgNzUsIDIxNiwgMTUsIDI1NCwgCi0gICAgMzQsIDI1NCwgOTYsIDc1LCAyNTEsIDE4MywgMjU0LCAzNCwgMjU0LCA5NiwgNzUsIDIxNiwgMTUsIDI1NCwgMzQsIDI1MCwgCi0gICAgMTAsIDgwLCAyLCAyMzAsIDE4NiwgMjE2LCAxNSwgMjU0LCAzNCwgMjU0LCA5NiwgODAsIDIsIDIyNSwgMjUsIDIzMiwgMTE0LCAKLSAgICA0NCwgMjIwLCAxNTQsIDI1MCwgMTAsIDc1LCAyMzIsIDExNCwgNDMsIDIyMCwgMTU0LCAyNTQsIDk2LCA3NSwgMjU0LCA5NiwgCi0gICAgMjUwLCA4LCAyNTAsIDQ0LCA3NSwgMjUwLCAxMCwgMjUwLCA4LCAyNTAsIDQ0LCA3NSwgOTcsIDgwLCA3MiwgMjE5LCAyNTMsIAotICAgIDE0MCwgNzUsIDE0MCwgODAsIDcyLCAyMTksIDI1MywgOTcsIDc1LCAyMTksIDI1MywgOTcsIDgwLCA3MiwgMTQwLCA3NSwgCi0gICAgOTcsIDgwLCAyLCA5NiwgNTEsIDE0MCwgODAsIDIsIDk2LCA1MSwgOTcsIDgwLCAyMTYsIDE0MCwgMjExLCAxNzgsIDQzLCAKLSAgICA0NCwgODAsIDIxNiwgMTQwLCA0LCAyNTAsIDQzLCAyMTQsIDE1MywgMjE1LCA1OCwgODAsIDI0MywgMjUxLCA0LCAyNTAsIAotICAgIDQzLCA0MywgMjUyLCAxNDcsIDEyMCwgNDQsIDI1MiwgMTQ3LCAxMjQsIDI0MiwgNSwgNDMsIDI1MiwgMTQ3LCAxMjQsIDQ0LCAKLSAgICAyNTIsIDE0NywgMTIwLCAyNDIsIDUsIDEyMCwgMjUyLCAxNDcsIDQ0LCAxMjQsIDI1MiwgMTQ3LCA0MywgMjQyLCA1LCAxMjAsIAotICAgIDI1MiwgMTQ3LCA0MywgMTI0LCAyNTIsIDE0NywgNDQsIDI0MiwgNSwgNDMsIDI1MiwgMTQ3LCAxMjAsIDQ0LCAyNTIsIDE0NywgCi0gICAgMTIwLCAyNDIsIDUsIDEyMCwgMjUyLCAxNDcsIDQ0LCAxMjQsIDI1MiwgMTQ3LCA0NCwgMjQyLCA1LCA0MywgMjUyLCAxNDcsIAotICAgIDEyNCwgNDQsIDI1MiwgMTQ3LCAxMjQsIDI0MiwgNSwgMTIwLCAyNTIsIDE0NywgNDMsIDEyNCwgMjUyLCAxNDcsIDQzLCAKLSAgICAyNDIsIDUsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyMTYsIDQzLCAxMzAsIDk3LCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCAxMjAsIDIxNiwgNDMsIDEzMCwgMjE0LCAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDQ0LCAyMTYsIDQzLCAxMzAsIAotICAgIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjE2LCA0MywgMTMwLCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAKLSAgICAxNDcsIDEyNCwgMjE2LCA0MywgMTMwLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTI0LCAyMTYsIDQzLCAxMzAsIDIxNCwgCi0gICAgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0MywgMjE2LCA0MywgMTMwLCAyNDYsIDExMiwgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgNDMsIDIxNiwgNDMsIDEzMCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDI0MywgMjUxLCAxMzAsIDk3LCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDI0MywgMjUxLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAKLSAgICA0NCwgMjQzLCAyNTEsIDEzMCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDQ0LCAyNDMsIDI1MSwgMTMwLCAxNDAsIAotICAgIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyNCwgMjQzLCAyNTEsIDEzMCwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyNCwgCi0gICAgMjQzLCAyNTEsIDEzMCwgMjE0LCAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNDMsIDI1MSwgMTMwLCAyNDYsIAotICAgIDExMiwgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDMsIDI0MywgMjUxLCAxMzAsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgCi0gICAgMTIwLCA3MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExNCwgMjE0LCAxNTMsIDI0MiwgNiwgMiwgMjUyLCAKLSAgICAxNDcsIDQzLCAyNTIsIDM4LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjIyLCAyNTQsIDk3LCAyNDIsIDYsIDIsIAotICAgIDI1MiwgMTQ3LCAxMjAsIDcyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDI0NiwgMTEyLCAyNDIsIDYsIAotICAgIDIsIDI1MiwgMTQ3LCA0MywgMjUyLCAzOCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjU0LCAxNDAsIAotICAgIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyMCwgNzIsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE2MywgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDcyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDk3LCAyNDIsIAotICAgIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIxNCwgMTYzLCA5NywgMjQyLCA2LCAKLSAgICAyLCAyNTIsIDE0NywgMTI0LCA3MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExNCwgMTQwLCAyNDIsIDYsIDIsIAotICAgIDI1MiwgMTQ3LCAxMjAsIDcyLCAyMDAsIDI0OCwgMTY0LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyNCwgMjUyLCA1MSwgCi0gICAgMjAwLCAyNDgsIDE2NCwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyMCwgNzIsIDIwMCwgMjQ4LCAxNjQsIDk3LCAyNDIsIAotICAgIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI1MiwgNTEsIDIwMCwgMjQ4LCAxNjQsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCA0MywgMjUyLCAzOCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjU0LCAyNDYsIDExMiwgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgNDMsIDI1MiwgMzgsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgNDQsIAotICAgIDUyLCA4MCwgMiwgMjIyLCAxODUsIDI0MSwgMjQyLCAyNDUsIDEwNiwgNSwgNzIsIDk3LCA3NSwgMjE2LCA5MCwgMjI2LCAKLSAgICAxNzIsIDcyLCA5NywgNzUsIDE0MCwgODAsIDcyLCAyMTYsIDkwLCAyMjYsIDE3MSwgOTcsIDgwLCA3MiwgMjE2LCA5MCwgCi0gICAgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjMzLCAyMSwgNzIsIDE0MCwgNzUsIDE0MCwgODAsIAotICAgIDIxNiwgMTQwLCAyMzMsIDIwLCAyNDIsIDEzNywgNzIsIDk3LCA3NSwgMjE4LCA2NSwgNzIsIDk3LCA3NSwgMTQwLCA4MCwgCi0gICAgMjE2LCAxNDAsIDIxOCwgNjQsIDIxOCwgMjMsIDcyLCAxNDAsIDc1LCA0MywgMjQ0LCA5OSwgMjE3LCA3OCwgNDQsIDI0NCwgCi0gICAgOTksIDIxNywgNzgsIDEyMCwgMjQ0LCA5OSwgMjE3LCA3OCwgMTI0LCAyNDQsIDk5LCAyMTcsIDc4LCAyMTUsIDIxMiwgNjcsIAotICAgIDI1MiwgMTQ5LCAyNDgsIDY4LCAyMTAsIDE2MCwgMTg5LCAyMTgsIDI0NCwgMjEwLCAxNjAsIDE4OSwgMjE1LCA0OSwgMjQ5LCAKLSAgICAyMzQsIDQzLCA3MSwgMjQ5LCAxMDcsIDEyNywgNDQsIDcxLCAyNDksIDEwNywgMTI3LCA0MywgNzEsIDIyNiwgNywgNDQsIAotICAgIDcxLCAyMjYsIDcsIDIxMCwgMTYwLCAxODksIDQzLCAyMzYsIDIyLCAxMjcsIDIxMCwgMTYwLCAxODksIDQ0LCAyMzYsIDIyLCAKLSAgICAxMjcsIDIxMCwgMTYwLCAxODksIDQzLCAyNTEsIDI1MCwgMTI3LCAyMTAsIDE2MCwgMTg5LCA0NCwgMjUxLCAyNTAsIDEyNywgCi0gICAgNDMsIDQyLCAyNTEsIDE2NiwgMiwgMjE0LCAxODMsIDQ0LCA0MiwgMjUxLCAxNjYsIDIsIDIxNCwgMTgzLCA0MywgNDIsIAotICAgIDI1MSwgMTY2LCAyLCAyMTYsIDExNiwgMjM2LCA3LCAyMTYsIDE1LCAyNDksIDE2OCwgNDQsIDQyLCAyNTEsIDE2NiwgMiwgCi0gICAgMjE2LCAxMTYsIDIzNiwgNywgMjUxLCAxODMsIDI0OSwgMTY4LCA0MywgNDIsIDI1MSwgMTY2LCAyLCAyMTYsIDExNiwgMjM2LCAKLSAgICA3LCAyNTEsIDE4MywgMjQ5LCAxNjgsIDQ0LCA0MiwgMjUxLCAxNjYsIDIsIDIxNiwgMTE2LCAyMzYsIDcsIDIxNiwgMTUsIAotICAgIDI0OSwgMTY4LCA0MywgMjU0LCAxMTgsIDI1MSwgMTY2LCAyLCAyNDcsIDEyOCwgNDQsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMiwgCi0gICAgMjQ3LCAxMjgsIDQzLCAyNTQsIDM0LCAyMzMsIDIxLCAxMjcsIDQ0LCAyNTQsIDM0LCAyNDIsIDEzNywgMTI3LCA1MiwgNDMsIAotICAgIDI1NCwgMzQsIDI0MiwgMTM3LCAxMjcsIDUyLCA0NCwgMjU0LCAzNCwgMjMzLCAyMSwgMTI3LCA0MywgODUsIDIxNiwgNywgCi0gICAgMjIwLCA1NSwgMTI3LCA0NCwgODUsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCAyNDYsIDEyNiwgMjQ0LCAxNDMsIDY3LCAyMTAsIAotICAgIDM1LCAyMzIsIDIxOSwgMjMxLCA5MywgMjU0LCAxMTgsIDIyNiwgMTc0LCAyMzMsIDUyLCA0NCwgMjU0LCAxMTgsIDIxNCwgCi0gICAgMTIsIDIsIDIxOCwgMjM2LCAyMzEsIDkzLCA0NCwgMjU0LCAxMTgsIDIsIDI0NywgMTI4LCAyNTQsIDExOCwgMiwgMjIyLCAKLSAgICA5NCwgMjM1LCAyMjIsIDI1NSwgMTIsIDI1NCwgMTE3LCAyMTksIDEsIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjMzLCA1MiwgCi0gICAgMjE5LCAxLCAyNTQsIDExOCwgMjI2LCAxNzQsIDIxNCwgMTYzLCAyMTUsIDk0LCAyNTQsIDExNywgMjIzLCA1MiwgMjU0LCAKLSAgICAxMTcsIDI1NCwgMTE4LCAyLCAyMTQsIDE4MywgMjIzLCA1MiwgMjU0LCAxMTgsIDIsIDIxNCwgMTgzLCAyMjYsIDI1MiwgCi0gICAgMjU0LCAxMTgsIDIyNiwgMTc0LCAyMTQsIDE2MywgMjI2LCAyNTIsIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjQ2LCAxMTQsIAotICAgIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIDEwLCAxMjAsIAotICAgIDIyLCAyMjIsIDI1NCwgMjMxLCA5MywgMjU0LCAxMTgsIDIsIDIwNCwgMjU0LCAxMywgMjQ1LCAxNDgsIDIzNiwgNywgODAsIAotICAgIDIyNSwgMTAsIDEyMCwgMjIsIDIzMywgNTIsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAKLSAgICAyMzYsIDcsIDgwLCAyMjUsIDEwLCAxMjQsIDIyLCAyMjIsIDI1NCwgMjMxLCA5MywgMjU0LCAxMTgsIDIsIDIwNCwgMjU0LCAKLSAgICAxMywgMjQ1LCAxNDgsIDIzNiwgNywgODAsIDIyNSwgMTAsIDEyNCwgMjIsIDIzMywgNTIsIDIzMSwgOTMsIDI1NCwgMTE4LCAKLSAgICAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIDEwLCA0NCwgMjIsIDIxNCwgMTYzLCAyMzEsIAotICAgIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgNDMsIDIyLCAKLSAgICAyMTQsIDE2MywgMjMxLCA5MywgMjU0LCAxMTgsIDIsIDIwNCwgMjU0LCAxMywgMjQ1LCAxNDgsIDIzNiwgNywgODAsIDIyNSwgCi0gICAgMTAsIDQ0LCAyMiwgMjQ2LCAxMTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIAotICAgIDcsIDgwLCAyMjUsIDEwLCA0MywgMjIsIDI0NiwgMTE0LCAyMjMsIDUyLCAyNDUsIDE2MCwgMjIwLCAxMjksIDI0NSwgMTYwLCAKLSAgICAyMjAsIDEzMCwgMiwgMjI2LCAxMjcsIDI0NSwgMTYwLCAyMjAsIDEzMCwgMiwgNCwgMjUwLCA0NCwgNDgsIDI0NSwgMTYwLCAKLSAgICAyMjAsIDEzMCwgMiwgNDQsIDgwLCA0OCwgMjQ1LCAxNjAsIDIyMCwgMTMwLCAyLCA0MywgODAsIDQ4LCAyNTAsIDQ0LCAyLCAKLSAgICAyMDMsIDEzMCwgMzcsIDY3LCAxMzAsIDM3LCAyMjYsIDExLCAzNywgMjIzLCA1MywgMjE5LCA0OCwgMzcsIDIyNSwgMTc0LCAKLSAgICAyNTAsIDQ0LCAyNDcsIDE4MSwgMjUxLCA4NiwgMjAzLCAyNTIsIDE0OSwgMjIsIDIxNiwgMTUsIDE2MywgMjQ3LCAxODEsIAotICAgIDI1MSwgODYsIDY3LCAxMzAsIDI1MCwgNDQsIDIsIDIxOCwgMjUsIDIxMSwgMTc4LCAzNywgMjU0LCA5NSwgMjQ3LCAxNzcsIAotICAgIDUwLCAxMjAsIDgwLCAyMTYsIDE0MCwgMjUwLCA0MywgMzcsIDcxLCAyNTEsIDEyMSwgMzcsIDI1MSwgMTIxLCAzNywgMjMzLCAKLSAgICAyMCwgMzcsIDI0MiwgMTM2LCAyNTAsIDQ0LCAyLCA0LCAyNTAsIDQ0LCAyMTYsIDQzLCAyMTYsIDE5NywgMjIyLCAyNTQsIAotICAgIDI1MCwgNDQsIDIsIDExMywgMjAzLCAyMTgsIDkzLCAyMTYsIDQzLCAyMTYsIDE5NywgMjIyLCAyNTQsIDkyLCAyMjIsIDIzMSwgCi0gICAgMjQ4LCA3LCAyMTksIDk3LCA5MiwgMjQ0LCAxODMsIDI0OCwgNywgMjE5LCA5NywgOTIsIDI1MywgMjI0LCA5MiwgNCwgMjUwLCAKLSAgICA0MywgOTIsIDIxOCwgMjM2LCAxMTMsIDIzNSwgNzEsIDIxOCwgMjM0LCAyMTUsIDIyNywgMiwgNTksIDQ4LCAyMTUsIDIyNywgCi0gICAgMiwgMjE0LCAxODMsIDIyMiwgOTQsIDIzNiwgNywgMjE1LCAyMjYsIDIxNSwgMjI3LCAyLCAyMjAsIDEzNiwgMjUzLCAyMTUsIAotICAgIDI1MSwgMTgyLCA0NCwgMjE1LCAyMjcsIDcyLCA0MywgMjE1LCAyMjYsIDQzLCAyMTUsIDIyNywgMjUyLCAzOCwgNjcsIDEzMCwgCi0gICAgNjcsIDI1MiwgMTQ5LCAyNTIsIDM4LCA0NCwgMjE1LCAyMjYsIDI1MSwgMTczLCAyLCA0MywgMTYzLCAyNTEsIDIyOSwgMjUxLCAKLSAgICAxNzMsIDIsIDQ0LCAxNjMsIDI1MSwgMjI5LCA4NSwgMjUxLCAxNzIsIDMwLCAyLCA0MywgMTYzLCAyNTEsIDIyOSwgMzAsIDIsIAotICAgIDQ0LCAxNjMsIDI1MSwgMjI5LCA3MSwgMjQwLCAyNDMsIDg1LCAyNDAsIDI0MywgNDMsIDIxMSwgMjQ0LCAyNDQsIDE0MywgCi0gICAgNDQsIDIxMSwgMjQ0LCAyNDQsIDE0MywgNDMsIDUyLCAyMTEsIDI0NCwgMjQ0LCAxNDMsIDQ0LCA1MiwgMjExLCAyNDQsIAotICAgIDI0NCwgMTQzLCAyMzUsIDI1NSwgMjM1LCAyNDEsIDIxNiwgMTEzLCAxMTUsIDIzNSwgMjQxLCAyMzUsIDI0MiwgMjI5LCAKLSAgICAxMDcsIDIsIDY3LCAxMzAsIDI0NiwgMTIwLCAyMzAsIDkyLCA0MiwgMiwgMjQ5LCAxODksIDIyNiwgMTMxLCAyMzUsIDI1MywgCi0gICAgMjUzLCAyNDUsIDIxOSwgMjIxLCAyMjQsIDE4MywgMjQ1LCAxMDYsIDUsIDIyLCAyMTksIDk5LCAyMjYsIDExLCAyNDUsIAotICAgIDEwNiwgNSwgMjIsIDIxOSwgOTksIDIyNiwgMTIsIDIsIDIxNiwgOTAsIDQ4LCAyNDAsIDExMSwgMjE2LCA0MywgMjIsIDIxOSwgCi0gICAgOTksIDIyNiwgMTEsIDI0MiwgMTkwLCAyMTgsIDE1NywgMjE2LCAxODYsIDI0NiwgMTEzLCAyMTUsIDIyNywgMiwgNDMsIAotICAgIDE2MywgMjUxLCAyMjksIDI0NiwgMTEzLCAyMTUsIDIyNywgMiwgNDQsIDE2MywgMjUxLCAyMjksIDg1LCAyNDgsIDEsIDIsIAotICAgIDEyNCwgNzUsIDg1LCAyMzIsIDExMCwgNzEsIDI1MCwgNDQsIDIsIDEyNCwgNzUsIDg1LCAyNTAsIDQ0LCAyLCAxMjQsIDc1LCAKLSAgICAyNDUsIDkzLCA3MSwgMjE4LCAyMzYsIDI0NSwgOTMsIDg1LCAyMTgsIDIzNiwgMjQ1LCA5MywgNzEsIDI0OCwgMCwgMjQ1LCAKLSAgICA5MywgODUsIDI0OCwgMCwgMjQ1LCA5MywgNzEsIDI1MCwgNDMsIDI0NSwgOTMsIDg1LCAyNTAsIDQzLCAyMjIsIDEzNCwgCi0gICAgMjIzLCA1MywgMjE5LCA0OSwgMjI2LCAxNzEsIDIxOSwgNDksIDIsIDIyNiwgMTI3LCAyMjMsIDUzLCAyMTksIDQ5LCAyLCAKLSAgICAyMDMsIDkxLCAyNTIsIDEsIDIxOSwgNDgsIDI1MiwgMSwgMjIzLCA1MywgMjE5LCA0OCwgNTIsIDIyNSwgMjUsIDIxNSwgCi0gICAgMjEyLCAyMjUsIDI1LCAyMzMsIDQ4LCAyNDksIDk5LCAyNTQsIDExOCwgMTI3LCAyMjIsIDI1MCwgMjQ5LCA5OSwgMjU0LCAKLSAgICAxMTgsIDEyNywgMjE2LCA3OSwgMjMwLCAxODQsIDIzMCwgMjksIDM3LCA1OSwgMjI2LCAxNzEsIDIzMCwgMjksIDM3LCA5NiwgCi0gICAgMjI2LCAxNzEsIDIzMCwgMjksIDM3LCAzMCwgMjI2LCAxNzEsIDIzMCwgMjksIDIxNCwgMTc2LCAyMjYsIDE3MiwgMiwgMjQ3LCAKLSAgICAxMjgsIDIzMCwgMjksIDIxNCwgMTc2LCAyMjYsIDE3MiwgMiwgMjI1LCAyNSwgMjMwLCAyOSwgNDIsIDIzNSwgMjA2LCAyMjYsIAotICAgIDE3MSwgMjMwLCAyOSwgNDIsIDIxNCwgMTc2LCAyMjYsIDE3MSwgMTEzLCAyMzIsIDE1MiwgMjIsIDIyNiwgMTcxLCAxMTMsIAotICAgIDIzMiwgMTUyLCAxNzcsIDIyNiwgMTcxLCAyMzAsIDI5LCAzMCwgMjI2LCAxNzEsIDIzMCwgMTU5LCAxMTMsIDIxOCwgNDQsIAotICAgIDIxOCwgNDIsIDIsIDIzNSwgMjE4LCAyMjQsIDI3LCAyMzUsIDIxOSwgMjI2LCAxNzEsIDI0NCwgMTA3LCAyMjYsIDMsIDIzNSwgCi0gICAgMjE4LCAyMzUsIDIxOSwgMiwgNTIsIDkxLCAyMzUsIDIxOSwgMjUzLCAxODEsIDIsIDIxOSwgOTcsIDI1MCwgNDAsIDI0MywgCi0gICAgMjMzLCAyNTQsIDk2LCAyMzUsIDIxNiwgMjMyLCAyMjAsIDIzNSwgMjE3LCAyLCAyMjMsIDExOCwgMjI1LCAyNDEsIDI1NCwgCi0gICAgMTAsIDIyNSwgNCwgMjMyLCAyMjAsIDIzNSwgMjE3LCAyLCAyMjAsIDE1NCwgMjI1LCAyNDEsIDI1NCwgMTAsIDIyNSwgNCwgCi0gICAgMjMyLCAyMjAsIDIzNSwgMjE3LCAyMjgsIDU3LCAyMzYsIDEsIDIxNiwgMTk3LCAyMjUsIDQsIDIzNSwgMjE5LCAyNTQsIDEwLCAKLSAgICAxMTYsIDIyNSwgMTQsIDIyNiwgMTcxLCAyMjQsIDIxLCAyMzUsIDIxOSwgMjI2LCAxNzEsIDIzNSwgMjE5LCAyLCAxNDAsIAotICAgIDgwLCAyLCAxMDMsIDIzNSwgMjE5LCAyLCAzMCwgNTAsIDIzNSwgMjE5LCAyLCAyMzUsIDIwNSwgMjM1LCAyMTksIDIsIDIxNCwgCi0gICAgMTc1LCAyMzUsIDIxOSwgMiwgMjI2LCAxMjcsIDIzNSwgMjE5LCAyLCAyMTQsIDE4MywgMjM1LCA3MiwgMjMzLCA5MSwgNDMsIAotICAgIDIxNSwgMjI3LCAyMjYsIDE3MSwgMjEwLCAxNjAsIDE4OSwgMjIxLCAyMDMsIDI0OSwgMjE3LCAyMTAsIDE2MCwgMTg5LCAKLSAgICAyMjEsIDIwMywgMjI1LCA1OSwgMjEwLCAxNjAsIDE4OSwgMjIxLCAyMDMsIDIyNCwgMTc5LCA5NiwgNSwgMiwgNCwgMjUwLCAKLSAgICA0NCwgNDgsIDk2LCA1LCAyLCAyNTAsIDM5LCAyNTUsIDI0LCA0OCwgOTYsIDUsIDIsIDIxNiwgOTAsIDQ4LCA5NiwgNSwgMiwgCi0gICAgNTksIDUxLCA5NiwgNSwgMiwgMjE2LCA5MCwgNTEsIDk2LCA1LCAyLCAyMTgsIDY2LCAxMDUsIDk2LCA1LCAyLCA4NSwgMjE1LCAKLSAgICAyMjYsIDIzMCwgMTg3LCA1LCAyLCAyNDksIDIyOCwgNDgsIDIzMCwgMTg3LCA1LCAyLCA1OSwgNTEsIDIzMCwgMTg3LCA1LCAKLSAgICAyLCAyNDQsIDE4MywgMjQ3LCAxMjYsIDIzMCwgMTg3LCA1LCAyLCAyMjIsIDIzMSwgMjQ3LCAxMjYsIDk2LCA1LCAyMzYsIDcsIAotICAgIDQzLCAxNjMsIDI1MCwgNDMsIDk2LCA1LCAyMzYsIDcsIDQ0LCAxNjMsIDI1MCwgNDMsIDIxMywgMjU0LCAxNzcsIDI0OSwgCi0gICAgMTM5LCAyMjQsIDE4MywgMjMwLCA4OSwgNSwgMiwgNTksIDQ4LCAyMzAsIDg5LCA1LCAyLCAyMTQsIDE4MywgMjIwLCAxNTEsIAotICAgIDIyNCwgMTg0LCAyLCAyNTEsIDE4MywgMjUwLCA3LCAyMTksIDc5LCAyMjQsIDE4MywgMjMwLCA4OSwgNSwgMjM2LCA3LCA0MywgCi0gICAgMTYzLCAyNTAsIDQzLCAyMzAsIDg5LCA1LCAyMzYsIDcsIDQ0LCAxNjMsIDI1MCwgNDMsIDM3LCAyMzAsIDg5LCA1LCAyLCAKLSAgICAyNTAsIDM5LCAyNTUsIDIzLCAyMzAsIDg5LCA1LCAyMzYsIDcsIDUyLCAyNTAsIDQzLCAzNywgMjQ3LCAxNzcsIDUwLCA5NiwgCi0gICAgNSwgMjM2LCA3LCAyMTUsIDIyNiwgMjMwLCAxODcsIDUsIDIzNiwgNywgMjE1LCAyMjYsIDIzMCwgODksIDUsIDIzNiwgNywgCi0gICAgMjE1LCAyMjYsIDIzNSwgMjEzLCAyMjQsIDE4MywgMjIyLCAyNDUsIDIzNSwgMjEzLCAyMjQsIDE4MywgMjEwLCAxNjAsIAotICAgIDE4OSwgMjIzLCA5MywgMjQ5LCAyMTcsIDI1NCwgMTQyLCAxNzcsIDI0OSwgMTczLCAyMzUsIDIwNiwgMiwgMjQ3LCAxMjgsIAotICAgIDIxNCwgMTc2LCAyLCAyMzAsIDE4NywgNTAsIDIxNCwgMTc2LCAyLCAyMjYsIDEyNywgMjM1LCAyMDYsIDIsIDIyNiwgMTI3LCAKLSAgICAyMzUsIDIwNiwgMiwgMjMyLCAxNTIsIDI1NCwgMTI2LCAyMTQsIDE3NiwgMiwgMjMyLCAxNTIsIDIyNiwgMTYyLCAyMTQsIAotICAgIDE3NiwgNzIsIDIzNSwgMjA1LCAyMzUsIDIwNiwgNzIsIDIxNCwgMTc1LCAyMTQsIDE3NiwgNzIsIDI1MiwgMTQ5LCA3MiwgCi0gICAgMjM1LCAyMDUsIDIzNSwgMjA2LCA3MiwgMjUyLCAxNDksIDcyLCAyMTQsIDE3NSwgMjE0LCAxNzYsIDI1MiwgMzgsIDIyLCAKLSAgICAyMzUsIDcxLCAyLCAyMTQsIDE3NSwgMjM1LCAyMDYsIDI1MiwgMzgsIDIyLCAyMzUsIDcxLCAyLCAyMzUsIDIwNSwgMjUwLCAKLSAgICA4LCAyMTQsIDE3NiwgMiwgMjIwLCAxMzUsIDI1MCwgOCwgMjM1LCAyMDYsIDIsIDIyMCwgMTM1LCA1MiwgNDIsIDIzNSwgCi0gICAgMjA1LCA1MiwgNDIsIDIxNCwgMTc1LCAyNTAsIDgsIDIxNCwgMTc2LCAyLCAyMjAsIDEzNiwgMjIsIDIxOSwgNzksIDIyNCwgCi0gICAgMTgzLCAyMzIsIDE1MiwgMjIsIDIsIDU5LCA0OCwgMjMyLCAxNTIsIDE3NywgMiwgNTksIDQ4LCA1MiwgMjMyLCAxNTIsIAotICAgIDI1NCwgMTI2LCA1MiwgMjMyLCAxNTIsIDIyNiwgMTYyLCAxMTMsIDIzNSwgMjA3LCAyMzIsIDE1MiwgMjU0LCAxMjYsIDExMywgCi0gICAgMjM1LCAyMDcsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjE5LCA4NywgMjMzLCA5MSwgMjI2LCAxNjIsIDIxOSwgODcsIDIzMywgCi0gICAgOTEsIDI1NCwgMTI2LCAyMzIsIDE1MiwgMTc3LCAyMjYsIDEyNSwgMjMyLCAxNTIsIDI1NCwgMTI2LCAyMzIsIDE1MiwgMjIsIAotICAgIDIsIDIzMCwgMjI5LCAyMTgsIDE0MSwgMjMyLCAxNTIsIDE3NywgMiwgMjMwLCAyMjksIDIxOCwgMTQxLCAyMzIsIDE1MiwgCi0gICAgMjIsIDIsIDIwMywgMjQ4LCAxNjQsIDIzMiwgMTUyLCAxNzcsIDIsIDIwMywgMjQ4LCAxNjQsIDIzMiwgMTUyLCAyMiwgMiwgCi0gICAgNTIsIDIyNiwgMTI3LCAyMzIsIDE1MiwgMjIsIDIsIDIxNCwgMTgzLCAyMzIsIDE1MiwgMjIsIDIsIDUyLCAyMTQsIDE4MywgCi0gICAgNCwgMjEzLCAyNTEsIDIsIDIxNCwgMTgzLCAyMzIsIDE1MiwgMTc3LCAyLCA1MiwgMjI2LCAxMjcsIDIzMiwgMTUyLCAxNzcsIAotICAgIDIsIDUyLCAyMTQsIDE4MywgMjEwLCAxNjAsIDE4OSwgMjQ3LCAxMzcsIDI1NCwgODcsIDIxMCwgMTYwLCAxODksIDIyMywgCi0gICAgMTUxLCAyNTQsIDg3LCAyNDUsIDEwNiwgNSwgMiwgNTksIDUxLCAyNDAsIDExMSwgMiwgNTksIDQ4LCAyMTUsIDIxMiwgMjAzLCAKLSAgICAyNTIsIDE0OSwgMiwgNTIsIDY3LCA5MSwgMjE1LCAyMTIsIDIwMywgMjUyLCAxNDksIDIsIDIxNSwgMjEyLCA2NywgOTEsIAotICAgIDIxNiwgOTAsIDIyNiwgMTcyLCAyLCA1OSwgNDgsIDIxNiwgOTAsIDIyNiwgMTcyLCAyLCAyMjIsIDIzMSwgMjQ3LCAxMjYsIAotICAgIDIxOSwgMTY0LCAyMzAsIDE4NywgMjE5LCAxNjMsIDI0OSwgMjA3LCAyLCA1OSwgNDgsIDI0NSwgMTA2LCAyLCAyNTMsIDIyNCwgCi0gICAgMjU0LCAxNTYsIDEyOCwgMjE2LCA0MywgMiwgMjUwLCAzOSwgMjU1LCAyMywgMjU0LCA1NiwgMTI4LCAxNzcsIDEyOCwgMTEyLCAKLSAgICAyNDUsIDEwNiwgNSwgNzIsIDk2LCA1MCwgOTYsIDUsIDcyLCAyNDUsIDEwNiwgNTAsIDI0NSwgMTA2LCA1LCA3MiwgMjE2LCAKLSAgICA5MCwgMjI2LCAxNzEsIDUyLCAyNDksIDIzNSwgMjQ1LCAxMDcsIDExMywgMjQ5LCAyMDIsIDI0NSwgMTA2LCAyMTksIDE3OCwgCi0gICAgMTM0LCAyNDksIDIwMiwgMjQ1LCAxMDYsIDIxOSwgMTc4LCAyNDUsIDEwNiwgNSwgMiwgMTEzLCAxNzAsIDcyLCAyMiwgMTEzLCAKLSAgICAxNzAsIDUxLCAyNDUsIDEwMiwgMiwgMjQ0LCAxOSwgMTcwLCA0OCwgMjMzLCAyMSwgMiwgMjUwLCA0NCwgMjM1LCAyMjIsIAotICAgIDI0MiwgMTM3LCAyLCAyNTAsIDQ0LCAyMzUsIDIyMiwgMjMzLCAyMSwgMiwgMjI0LCAxNiwgMTY0LCA0OCwgMjQyLCAxMzcsIAotICAgIDIsIDIyNCwgMTYsIDE2NCwgNDgsIDIzMywgMjEsIDE3NywgMjE5LCA5OSwgMTI4LCAxMTIsIDI0MiwgMTM3LCAxNzcsIDIxOSwgCi0gICAgOTksIDEyOCwgMTEyLCAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDIzNSwgMjIyLCAyNDIsIAotICAgIDEzNywgMTc3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCAyMzUsIDIyMiwgMjMzLCAyMSwgMTc3LCAyMTksIDk5LCAKLSAgICAxMjgsIDIxNiwgNDMsIDIsIDU5LCA0OCwgMjQyLCAxMzcsIDE3NywgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIAotICAgIDIzMywgMjEsIDE3NywgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNzIsIDIyMiwgMjU0LCAyNDIsIDEzNywgMTc3LCAKLSAgICAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCA3MiwgMjMzLCA1MiwgMjMzLCAyMSwgMTc3LCAyNTQsIDU3LCAyNDIsIAotICAgIDEzNywgMTc3LCAyNTQsIDU3LCAyMzMsIDIxLCAyMiwgMjE5LCAxNTUsIDIyOCwgNTcsIDEyOCwgMTEyLCAyNDIsIDEzNywgCi0gICAgMjIsIDIxOSwgMTU1LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMzLCAyMSwgMjIsIDIyOCwgNTcsIDI1NCwgNTcsIDI0MiwgMTM3LCAKLSAgICAyMiwgMjI4LCA1NywgMjU0LCA1NywgMjMzLCAyMSwgNzIsIDI0NiwgMTE5LCAxMjgsIDcyLCAyNDIsIDEzNiwgMjQyLCAxMzcsIAotICAgIDcyLCAyNDYsIDExOSwgMTI4LCA3MiwgMjMzLCAyMCwgMjMzLCAyMSwgNzIsIDIxOSwgMTY0LCAxNzcsIDI0NSwgMTA3LCAKLSAgICAyNDIsIDEzNywgNzIsIDIxOSwgMTY0LCAxNzcsIDI0NSwgMTA3LCAyMzMsIDIxLCA3MiwgMjE5LCAxNjQsIDcyLCAyNDIsIAotICAgIDEzNiwgMjQyLCAxMzcsIDcyLCAyMTksIDE2NCwgNzIsIDIzMywgMjAsIDIzMywgMjEsIDcyLCAyNDIsIDEzNywgNzIsIDI0NiwgCi0gICAgMTE5LCAyNDUsIDEwNywgMjQyLCAxMzcsIDcyLCAyMzMsIDIxLCA3MiwgMjQ2LCAxMTksIDI0NSwgMTA3LCAyMzMsIDIxLCAKLSAgICA3MiwgMjE5LCA5OSwgMTI4LCA3MiwgMjQyLCAxMzcsIDcyLCAyMTksIDk5LCAyNDUsIDEwNywgMjQyLCAxMzcsIDcyLCAyMTksIAotICAgIDk5LCAxMjgsIDcyLCAyMzMsIDIxLCA3MiwgMjE5LCA5OSwgMjQ1LCAxMDcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMTc3LCAKLSAgICAyMzMsIDIwLCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzYsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgCi0gICAgMTc3LCAyMzMsIDIxLCAyLCA1OSwgMjM1LCAyMjIsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMTc3LCAyNDIsIDEzNywgMiwgCi0gICAgNTksIDIzNSwgMjIyLCAyNDYsIDExOSwgMTI4LCAyMTYsIDQzLCAxNzcsIDIzMywgMjAsIDI0NiwgMTE5LCAxMjgsIDIxNiwgCi0gICAgNDMsIDE3NywgMjQyLCAxMzYsIDI0NiwgMTE5LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjMzLCAyMCwgMjQ2LCAKLSAgICAxMTksIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMTc3LCAyNDIsIDEzNiwgMjE5LCAxNjQsIDE3NywgMjMzLCAyMCwgMjE5LCAKLSAgICAxNjQsIDE3NywgMjQyLCAxMzYsIDIxOSwgMTY0LCA3MiwgMjMzLCAyMSwgNzIsIDI0NSwgMTA2LCA1MCwgMjE5LCAxNjQsIAotICAgIDcyLCAyNDIsIDEzNywgNzIsIDI0NSwgMTA2LCA1MCwgNTIsIDIyOSwgOTYsIDIzMywgMjAsIDUyLCAyMjksIDk2LCAyNDIsIAotICAgIDEzNiwgNTIsIDIyOSwgOTYsIDIzMywgMjEsIDIsIDIxNCwgMTgzLCAyNDIsIDEzNywgMjI2LCAxMjUsIDIzMywgMjAsIDI0MiwgCi0gICAgMTM3LCAyNTIsIDM4LCAyMzMsIDIwLCAyMzMsIDIxLCAyNTAsIDgsIDI1MSwgODYsIDI0OSwgMTAwLCAyNDIsIDEzNywgMjUwLCAKLSAgICA4LCAyNTEsIDg2LCAyNDksIDEwMCwgMjMzLCAyMSwgMjUwLCA4LCAyNTEsIDg2LCAyNDksIDEwMSwgNzIsIDIxOSwgOTksIAotICAgIDI0NSwgMTA3LCAyNDIsIDEzNywgMjUwLCA4LCAyNTEsIDg2LCAyNDksIDEwMSwgNzIsIDIxOSwgOTksIDI0NSwgMTA3LCAKLSAgICAyMTksIDgwLCAyMTYsIDIwMSwgMjMzLCA4OSwgMjE2LCAyMDEsIDIxOSwgODAsIDIxNiwgMjAyLCAxNzcsIDEyOCwgMTEyLCAKLSAgICAyMzMsIDg5LCAyMTYsIDIwMiwgMTc3LCAxMjgsIDExMiwgMjQ1LCAxMDYsIDUsIDIsIDI1MSwgMTE2LCA0OCwgMjI0LCAyMDYsIAotICAgIDcyLCAyMTksIDE1NSwgMjQ1LCAxMDYsIDUwLCAyMTgsIDU3LCA3MiwgMjE5LCAxNTUsIDI0NSwgMTA2LCA1MCwgMjI0LCAKLSAgICAyMDYsIDcyLCAyMTksIDE1NSwgMjI4LCA1NywgMTI4LCAxMTIsIDIxOCwgNTcsIDcyLCAyMTksIDE1NSwgMjI4LCA1NywgCi0gICAgMTI4LCAxMTIsIDIyNCwgMjA2LCA3MiwgMjQ1LCAxMDYsIDUwLCAyMTgsIDU3LCA3MiwgMjQ1LCAxMDYsIDUwLCAyMjQsIAotICAgIDIwNiwgNzIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDU3LCA3MiwgMjI4LCA1NywgMTI4LCAxMTIsIDIyNCwgMjA2LCA3MiwgCi0gICAgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMTgsIDU3LCA3MiwgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIDIyOCwgCi0gICAgNTcsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDIyOCwgNTcsIDI1NCwgMTU2LCAxMjgsIDExMiwgNTIsIAotICAgIDIyNCwgMjA1LCA1MiwgMjE4LCA1NiwgMjE4LCA2NSwgMiwgMjQ3LCAxMjgsIDIxOCwgMjMsIDIsIDI0NywgMTI4LCAyMTgsIAotICAgIDY1LCAyLCA5NiwgNSwgNTEsIDIxOCwgMjMsIDIsIDk2LCA1LCA1MSwgMjE4LCA2NSwgMiwgMjMwLCA4OSwgNSwgNTEsIDIxOCwgCi0gICAgMjMsIDIsIDIzMCwgODksIDUsIDUxLCAyMTgsIDY1LCA2NCwgMTc3LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCA0OCwgMjE4LCAKLSAgICAyMywgNjQsIDE3NywgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDIxOCwgNjUsIDY0LCA3MiwgMjQ1LCAxMDYsIDUwLCAyMTgsIAotICAgIDIzLCA2NCwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCA2NSwgNjQsIDcyLCAyMTYsIDkwLCAyMjYsIDE3MSwgMjE4LCAyMywgCi0gICAgNjQsIDcyLCAyMTYsIDkwLCAyMjYsIDE3MSwgMjE4LCA2NSwgNjQsIDcyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIxOCwgMjMsIAotICAgIDY0LCA3MiwgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMTgsIDY1LCA2NCwgNzIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDIzLCAKLSAgICA2NCwgNzIsIDIyOCwgNTcsIDEyOCwgMTEyLCA0MiwgNDMsIDIwNCwgOTMsIDIyNiwgMTcxLCA0MiwgNDQsIDIwNCwgOTMsIAotICAgIDIyNiwgMTcxLCAyNTAsIDgsIDIxOCwgNjQsIDI1MCwgOCwgMjE4LCAyMiwgMjUwLCA4LCAyMTgsIDY1LCAxNzcsIDEyOCwgCi0gICAgMTEyLCAyNTAsIDgsIDIxOCwgMjMsIDE3NywgMTI4LCAxMTIsIDIxOCwgNjUsIDcyLCAyMTgsIDIyLCAyMTgsIDIzLCA3MiwgCi0gICAgMjE4LCA2NCwgMjE4LCA2NSwgNzIsIDIxOCwgNjQsIDIxOCwgMjMsIDcyLCAyMTgsIDIyLCAyMTgsIDIzLCAyNTIsIDM4LCAKLSAgICAyMTgsIDY0LCAyMTgsIDIzLCAyNTIsIDM4LCAyMiwgMjM1LCA3MSwgMjUxLCA4NiwgMjQ4LCAxNjUsIDIsIDIxOCwgNjQsIAotICAgIDI0NSwgMTc4LCA2NCwgMjI2LCAxNzQsIDI0NiwgMTExLCAyMjUsIDUxLCAyLCAyMTcsIDEzLCAyMTYsIDE0LCAyMTUsIDI0MSwgCi0gICAgMjM1LCAyMDUsIDI0NCwgMjksIDIyOCwgNzAsIDIxOSwgMjUzLCA0MywgMjE3LCA4OCwgMjE5LCAyNTMsIDEyNCwgMjE3LCAKLSAgICA4OCwgMjE5LCAyNTMsIDEyMCwgMjE3LCA4OCwgMjI1LCAxNzUsIDIsIDIyMiwgOTMsIDY3LCAyNTIsIDE0OSwgMjE1LCAyMTIsIAotICAgIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA0MywgMjE1LCA5MywgNjcsIDI1MiwgMTQ5LCA1MiwgNDMsIDIxNSwgCi0gICAgOTMsIDUyLCA2NywgMjUyLCAxNDksIDUyLCA0MywgMjE1LCA5MywgMjAwLCAyNDgsIDE2NSwgMjQzLCAyNTEsIDQzLCAyMzEsIAotICAgIDY4LCA2NCwgNTIsIDIxMywgMjM5LCAyMTksIDI1MywgMTI0LCAyMTcsIDg5LCAyLCAyMjYsIDEyNywgMjE5LCAyNTMsIDEyMCwgCi0gICAgMjE3LCA4OSwgMiwgMjE0LCAxODMsIDIxOSwgMjUzLCAxMjAsIDIxNywgODksIDcyLCAyMTksIDI1MywgMTI0LCAyMTcsIDg4LCAKLSAgICA1MiwgMTI0LCAyMTcsIDg4LCA1MiwgMTIwLCAyMTcsIDg4LCA1MiwgMjE4LCAxMDUsIDIyOCwgNTcsIDUwLCAyMjMsIDUyLCAKLSAgICA1MiwgMjE4LCAxMDUsIDIyOCwgNTcsIDUwLCAyNDcsIDE0NiwgMjI4LCA1NywgMjQ3LCAxODMsIDIsIDIyMywgNTIsIDIyOSwgCi0gICAgMTA2LCAyMTksIDk3LCA2NywgMjMyLCAyMjAsIDIsIDI1MCwgNDQsIDQ4LCA2NywgMjMyLCAyMjAsIDIsIDI1MCwgNDQsIDUxLCAKLSAgICAxMjQsIDIxNywgODksIDIsIDI1MCwgNDQsIDUxLCAyMjYsIDEyLCAyLCAyMDMsIDkxLCAyMjYsIDEyLCAyLCAyMTYsIDkwLCAKLSAgICAyMjYsIDE3MSwgMjE1LCAyMTIsIDY3LCAyNTIsIDE0OSwgMjUxLCAyNTIsIDIyMywgOTQsIDIxNSwgMjEyLCA2NywgMjUyLCAKLSAgICAxNDksIDIsIDIwMywgOTEsIDIxNSwgMjEyLCAyNDksIDIzNSwgMjI2LCAxNzEsIDIxNSwgMjEyLCAyMjksIDk2LCAyMzMsIAotICAgIDIwLCAyMTUsIDIxMiwgMjI5LCA5NiwgMjQyLCAxMzYsIDI0NiwgMTE5LCAyMTksIDk5LCAyMzMsIDIxLCAxNzcsIDEyOCwgCi0gICAgMTEyLCAyNDYsIDExOSwgMjE5LCA5OSwgMjQyLCAxMzcsIDE3NywgMTI4LCAxMTIsIDIxNSwgMjEyLCAyMTksIDQ5LCAyNTEsIAotICAgIDI1MiwgMjIzLCA5NCwgMjMzLCA5MSwgMjE1LCAyMTIsIDY3LCAyNTIsIDE0OSwgMjI2LCAxNzEsIDUyLCAyMTksIDQ5LCAKLSAgICAyMjYsIDE3MSwgNzEsIDY3LCAxMzAsIDIzMCwgMjksIDcxLCA2NywgMTMwLCAyMjgsIDYxLCAyNDUsIDIyOCwgNzEsIDc1LCAKLSAgICAyMjgsIDYxLCAyMTIsIDksIDcxLCA3NSwgMjE5LCAzMCwgMjQ1LCAyMjgsIDcxLCA3NSwgMjE5LCAzMCwgMjEyLCA5LCA3MSwgCi0gICAgNzUsIDQzLCA0NCwgNzEsIDc1LCAxNDAsIDg1LCA3NSwgMjE0LCAxNTMsIDg1LCA3NSwgMjQ2LCAxMTIsIDg1LCA3NSwgMjI4LCAKLSAgICA2MSwgMjQ1LCAyMjgsIDg1LCA3NSwgMjI4LCA2MSwgMjEyLCA5LCA4NSwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA4NSwgNzUsIAotICAgIDIxOSwgMzAsIDIxMiwgOSwgODUsIDc1LCA0MywgNDQsIDg1LCA3NSwgMTIwLCAxMjQsIDg1LCA3NSwgOTcsIDgwLCAyLCAKLSAgICAyMTYsIDc4LCAyNDYsIDExMSwgOTcsIDgwLCAyLCAyMTYsIDc4LCAyMTQsIDE1MiwgMTQwLCA4MCwgMiwgMjE2LCA3OCwgCi0gICAgMjQ2LCAxMTEsIDE0MCwgODAsIDIsIDIxNiwgNzgsIDIxNCwgMTUyLCA0MiwgMiwgMjE2LCAxNSwgMTYzLCAyNTEsIDIyOSwgCi0gICAgNDIsIDIsIDI1MSwgMTgzLCAxNjMsIDI1MSwgMjI5LCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyNDgsIDcsIDE2MywgMjUxLCAKLSAgICAyMjksIDQyLCAyLCAyMzIsIDExNCwgNDMsIDI0OCwgNywgMTYzLCAyNTEsIDIyOSwgMjQ4LCAxLCAyLCA0MywgMTYzLCAyNTEsIAotICAgIDIyOSwgMjQ4LCAxLCAyLCA0NCwgMTYzLCAyNTEsIDIyOSwgMjQ4LCAxLCAyLCAyMTYsIDE1LCAxNjMsIDI1MSwgMjI5LCAKLSAgICAyNDgsIDEsIDIsIDI1MSwgMTgzLCAxNjMsIDI1MSwgMjI5LCAyNDYsIDEyNiwgMjE4LCAyMzYsIDg1LCAyMzMsIDkxLCAyMTgsIAotICAgIDIzNiwgNzEsIDIzMywgOTEsIDIxOCwgMjM2LCA4NSwgMjEzLCAxODcsIDQsIDIxOCwgMjM2LCA3MSwgMjEzLCAxODcsIDQsIAotICAgIDIxOCwgMjM2LCA4NSwgMjI1LCAxOTMsIDcxLCAyMjUsIDE5MywgNzEsIDI0MSwgMjAwLCA4NSwgMjQxLCAyMDAsIDIwMywgCi0gICAgODUsIDI0MSwgMjAwLCA4NSwgMjMzLCA5MSwgMjUwLCA0MywgODUsIDIzMSwgODcsIDI0OCwgMCwgNzEsIDIzMSwgODcsIAotICAgIDI0OCwgMCwgODUsIDIzMSwgODcsIDIzMiwgMTEwLCA3MSwgMjMxLCA4NywgMjMyLCAxMTAsIDg1LCA0LCAyNDgsIDAsIDg1LCAKLSAgICA0LCAyMzIsIDExMCwgNzEsIDQsIDIzMiwgMTEwLCA4NSwgMjAzLCAyNDUsIDE3MiwgNzEsIDIwMywgMjQ1LCAxNzIsIDg1LCAKLSAgICA2NywgMjQ1LCAxNzIsIDcxLCA2NywgMjQ1LCAxNzIsIDQzLCA4MCwgMiwgNCwgMjUwLCA0MywgMTM0LCAxNDAsIDI1MywgCi0gICAgMjU1LCA0MywgODAsIDIsIDM3LCAyMjUsIDI1LCAyMDAsIDE0MCwgMjE4LCAyMzIsIDc1LCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAKLSAgICA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDI0MywgMjUxLCAxMzAsIAotICAgIDE0MCwgMjE1LCA1OCwgMjE1LCAyMTIsIDI0OCwgMTY1LCA3NSwgMTQwLCA4MCwgMiwgMjQ2LCAxMjYsIDIxOCwgMTQxLCAKLSAgICAxNDAsIDgwLCAyLCAyMTcsIDc5LCAyLCA2NywgOTEsIDE0MCwgODAsIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgCi0gICAgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDIxNywgNzksIDIsIDY3LCA5MSwgMTQwLCAKLSAgICAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OSwgMiwgNTIsIDY3LCA5MSwgMTQwLCA4MCwgMjE2LCAxNDAsIDIxMSwgMTc4LCAyMTIsIAotICAgIDM2LCA4MCwgMjI1LCAxMCwgMjQ3LCAyMDMsIDIzMywgNTIsIDI0NSwgMTA2LCA1LCA3MiwgMTQwLCA3NSwgMjIzLCA1MywgCi0gICAgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjIzLCA1MywgMjU0LCAxNTYsIDEyOCwgMTEyLCAKLSAgICA5NywgODAsIDIxNiwgMTQwLCAyNDIsIDEzNiwgOTcsIDgwLCAyMTYsIDE0MCwgMjE4LCAyMiwgMTQwLCAyMjQsIDI3LCA3NSwgCi0gICAgOTcsIDIyNCwgMjcsIDc1LCAyMjMsIDUzLCAyMTYsIDkwLCAyMjYsIDE3MiwgNzIsIDk3LCA3NSwgOTcsIDgwLCA3MiwgMjIzLCAKLSAgICA1MywgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMTYsIDkwLCAyMjYsIDE3MiwgNzIsIDE0MCwgNzUsIDE0MCwgODAsIDcyLCAyNTQsIAotICAgIDE1NiwgMTI4LCAxMTIsIDE0MCwgODAsIDcyLCAyMjMsIDUzLCAyMTYsIDkwLCAyMjYsIDE3MSwgOTcsIDgwLCA3MiwgMjIzLCAKLSAgICA1MywgMjE2LCA5MCwgMjI2LCAxNzEsIDcxLCAyMzEsIDg3LCAyMTgsIDE1OCwgODUsIDQsIDIxOCwgMTU4LCA3MSwgNCwgCi0gICAgMjE4LCAxNTgsIDg1LCAyMjIsIDI1MCwgMjI1LCAxOTMsIDcxLCAyMjIsIDI1MCwgMjI1LCAxOTMsIDExNCwgMjMzLCA5MSwgCi0gICAgMjUwLCA0MywgMTE0LCAyMjYsIDEyOCwgMiwgMjI2LCAxMjgsIDIzNSwgMjIyLCAxMTQsIDI1MCwgNDQsIDIsIDI1MCwgNDQsIAotICAgIDIzNSwgMjIyLCAxMTQsIDI1MCwgNDMsIDExNCwgMzcsIDIyMiwgMCwgMTQ1LCA2LCAxLCAyNTMsIDE2NywgMTQ1LCA2LCAxLCAKLSAgICAyNTEsIDEyNSwgMTQ1LCA2LCAxLCAyMTMsIDI1MywgMTQ1LCA2LCAxLCAyNDIsIDE5MiwgMTQ1LCA2LCAxLCAyNDcsIDE0OCwgCi0gICAgMTQ1LCA2LCAxLCAyMTEsIDIxLCAxNDUsIDYsIDEsIDIxMCwgNjgsIDE0NSwgNiwgMSwgMjQ2LCA0MiwgMTQ1LCA2LCAxLCAKLSAgICAyMTAsIDkxLCAxNDUsIDYsIDEsIDIzNSwgMTU0LCAxNDUsIDYsIDEsIDY1LCAyMzUsIDE1NCwgMTQ1LCA2LCAxLCA3NCwgCi0gICAgMTQ1LCA2LCAxLCAyNDcsIDE2OCwgMTQ1LCA2LCAxLCAyMzQsIDI0NiwgMTQ1LCA2LCAxLCAyMzIsIDE5MiwgMTQ1LCA2LCAxLCAKLSAgICAyMzAsIDM0LCAxNDUsIDYsIDEsIDIyOSwgMTk2LCAxNDUsIDYsIDEsIDIyNiwgMTg5LCAxNDUsIDYsIDEsIDIyNSwgNywgCi0gICAgMTQ1LCA2LCAxLCAyMjIsIDIzMCwgMTQ1LCA2LCAxLCAyMTksIDg1LCAxNDUsIDYsIDEsIDIxNSwgODEsIDE0NSwgNiwgMSwgCi0gICAgMjE0LCAyMDEsIDE0NSwgNiwgMSwgMjQzLCAyNTQsIDE0NSwgNiwgMSwgMjQxLCAyMDYsIDE0NSwgNiwgMSwgMjI2LCAxMzksIAotICAgIDE0NSwgNiwgMSwgMjI1LCAyMjQsIDE0NSwgNiwgMSwgMjE5LCAyMzAsIDE0NSwgNiwgMSwgMjE1LCAxNjgsIDE0NSwgNiwgMSwgCi0gICAgMjUwLCA4MywgMTQ1LCA2LCAxLCAyMjAsIDEwNCwgMTQ1LCA2LCAxLCAyMTEsIDI3LCAxNDUsIDYsIDEsIDIxMSwgMjksIAotICAgIDE0NSwgNiwgMSwgMjExLCA1NywgMTQ1LCA2LCAxLCAyMTgsIDI1NSwgMTYyLCAxNDUsIDYsIDEsIDIxMCwgMjEyLCAxNDUsIAotICAgIDYsIDEsIDQsIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDQsIDIxMCwgMTg0LCAyLCAyMTcsIDc4LCAxNDUsIDYsIDEsIDIxMCwgCi0gICAgMjQ0LCAxNDUsIDYsIDEsIDIzNSwgMTkxLCA0LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyNTIsIDEsIDIxMCwgMTgzLCAxNDUsIAotICAgIDYsIDEsIDIzNSwgMTkxLCAyNTIsIDEsIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDI0NCwgOTAsIDE0NSwgNiwgMSwgMjM1LCAKLSAgICAxNTIsIDE0NSwgNiwgMSwgMjE5LCAyMjksIDE0NSwgNiwgMSwgMjE1LCAyMDMsIDYxLCAxNDUsIDYsIDEsIDIzMywgODEsIAotICAgIDIzMCwgMzQsIDE0NSwgNCwgMSwgMjUzLCAxNjcsIDE0NSwgNCwgMSwgMjUxLCAxMjUsIDE0NSwgNCwgMSwgMjEzLCAyNTMsIAotICAgIDE0NSwgNCwgMSwgMjQyLCAxOTIsIDE0NSwgNCwgMSwgMjQ3LCAxNDgsIDE0NSwgNCwgMSwgMjExLCAyMSwgMTQ1LCA0LCAxLCAKLSAgICAyMTAsIDY4LCAxNDUsIDQsIDEsIDI0NiwgNDIsIDE0NSwgNCwgMSwgMjEwLCA5MSwgMTQ1LCA0LCAxLCAyMzUsIDE1NCwgCi0gICAgMTQ1LCA0LCAxLCA2NSwgMjM1LCAxNTQsIDE0NSwgNCwgMSwgNzQsIDE0NSwgNCwgMSwgMjQ3LCAxNjgsIDE0NSwgNCwgMSwgCi0gICAgMjM0LCAyNDYsIDE0NSwgNCwgMSwgMjMyLCAxOTIsIDE0NSwgNCwgMSwgMjMwLCAzNCwgMTQ1LCA0LCAxLCAyMjksIDE5NiwgCi0gICAgMTQ1LCA0LCAxLCAyMjYsIDE4OSwgMTQ1LCA0LCAxLCAyMjUsIDcsIDE0NSwgNCwgMSwgMjIyLCAyMzAsIDE0NSwgNCwgMSwgCi0gICAgMjE5LCA4NSwgMTQ1LCA0LCAxLCAyMTUsIDgxLCAxNDUsIDQsIDEsIDIxNCwgMjAxLCAxNDUsIDQsIDEsIDI0MywgMjU0LCAKLSAgICAxNDUsIDQsIDEsIDI0MSwgMjA2LCAxNDUsIDQsIDEsIDIyNiwgMTM5LCAxNDUsIDQsIDEsIDIyNSwgMjI0LCAxNDUsIDQsIDEsIAotICAgIDIxOSwgMjMwLCAxNDUsIDQsIDEsIDIxNSwgMTY4LCAxNDUsIDQsIDEsIDI1MCwgODMsIDE0NSwgNCwgMSwgMjIwLCAxMDQsIAotICAgIDE0NSwgNCwgMSwgMjExLCAyNywgMTQ1LCA0LCAxLCAyMTEsIDI5LCAxNDUsIDQsIDEsIDIxMSwgNTcsIDE0NSwgNCwgMSwgCi0gICAgMjE4LCAyNTUsIDE2MiwgMTQ1LCA0LCAxLCAyMTAsIDIxMiwgMTQ1LCA0LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCA0LCAKLSAgICAyMTAsIDE4NCwgMiwgMjE3LCA3OCwgMTQ1LCA0LCAxLCAyMTAsIDI0NCwgMTQ1LCA0LCAxLCAyMzUsIDE5MSwgNCwgMjEwLCAKLSAgICAxODMsIDE0NSwgNCwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCA0LCAxLCAyMzUsIDE5MSwgMjUyLCAxLCAyMTAsIDE4MywgCi0gICAgMTQ1LCA0LCAxLCAyNDQsIDkwLCAxNDUsIDQsIDEsIDIzNSwgMTUyLCAxNDUsIDQsIDEsIDIxOSwgMjI5LCAxNDUsIDQsIDEsIAotICAgIDIxNSwgMjAzLCA2MSwgMTQ1LCA0LCAxLCAyMzMsIDgxLCAyMzAsIDM0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgNTIsIDEzMCwgCi0gICAgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDUyLCAxMzAsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAyMzAsIDIyOSwgMTg0LCA3LCA2LCAKLSAgICAxLCAyMjYsIDExMCwgMiwgOTEsIDcsIDYsIDEsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAxMTYsIDIsIDkxLCAKLSAgICA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjQ4LCA3LCA5MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjQ4LCA0NywgNywgNCwgMSwgCi0gICAgMjQyLCA2OCwgMiwgMjQ4LCA0NywgNywgNiwgMSwgMjM1LCAzMCwgMiwgMjQ4LCA0NywgNywgNCwgMSwgMjM1LCAzMCwgMiwgCi0gICAgMjQ4LCA0NywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDQ3LCA3LCAKLSAgICA2LCAxLCAyNTQsIDE1MSwgNywgNiwgMSwgMjMyLCA1NSwgMiwgMTAzLCA3LCA2LCAxLCAyMTUsIDk0LCA2MSwgNywgNiwgMSwgCi0gICAgMjE1LCA5NCwgMjU0LCAxNTEsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCA0NCwgMTAzLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAKLSAgICAxMDMsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0OSwgMTA4LCA3LCA2LCAxLCAKLSAgICAxNjMsIDI0MiwgNjcsIDcsIDQsIDEsIDE2MywgMjQyLCA2NywgNywgNCwgMSwgMjE3LCA3NiwgMjI1LCAxMzYsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjI4LCA1NSwgNywgNCwgMSwgMjE1LCA5NCwgMjIzLCAyMjcsIDIsIDIxNywgNzgsIDcsIDQsIDEsIDE0NCwgMiwgCi0gICAgMTIxLCAyMjIsIDIzNywgMjM1LCAyMjIsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDc2LCA3LCAyMTgsIDY2LCA0LCAxLCAyMzUsIAotICAgIDE1MCwgNTgsIDEsIDYsIDIxNCwgMTA1LCA3LCA2LCAxLCAyMjIsIDk0LCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgNywgNiwgMSwgCi0gICAgMjEwLCAxNjAsIDIsIDIxNywgMjUxLCAyMTcsIDc4LCA4MSwgNiwgMSwgMjU0LCAxNzMsIDgxLCA0LCAxLCAyNTQsIDE3MywgCi0gICAgODEsIDYsIDEsIDIxMywgMTczLCA4MSwgNCwgMSwgMjEzLCAxNzMsIDgxLCA2LCAxLCAyNDMsIDExNCwgODEsIDQsIDEsIAotICAgIDI0MywgMTE0LCA4MSwgNiwgMSwgMjQ4LCAxOTksIDgxLCA0LCAxLCAyNDgsIDE5OSwgODEsIDYsIDEsIDI0NSwgMjAyLCA4MSwgCi0gICAgNCwgMSwgMjQ1LCAyMDIsIDgxLCA2LCAxLCAyMTksIDM1LCA4MSwgNCwgMSwgMjE5LCAzNSwgODEsIDYsIDEsIDIxMCwgMTAxLCAKLSAgICA4MSwgNCwgMSwgMjEwLCAxMDEsIDgxLCA2LCAxLCAyNDEsIDI1NSwgODEsIDQsIDEsIDI0MSwgMjU1LCA4MSwgNiwgMSwgCi0gICAgMjE2LCAxNzgsIDgxLCA0LCAxLCAyMTYsIDE3OCwgODEsIDYsIDEsIDI0MCwgMTIzLCA4MSwgNCwgMSwgMjQwLCAxMjMsIDgxLCAKLSAgICA2LCAxLCAyMzQsIDIzMywgODEsIDQsIDEsIDIzNCwgMjMzLCA4MSwgNiwgMSwgMjMzLCA3OCwgODEsIDQsIDEsIDIzMywgNzgsIAotICAgIDgxLCA2LCAxLCAyMzAsIDIzNSwgODEsIDQsIDEsIDIzMCwgMjM1LCA4MSwgNiwgMSwgMjI4LCAyMzgsIDgxLCA0LCAxLCAKLSAgICAyMjgsIDIzOCwgODEsIDYsIDEsIDIzMywgMjM5LCA4MSwgNCwgMSwgMjMzLCAyMzksIDgxLCA2LCAxLCA3OCwgODEsIDQsIDEsIAotICAgIDc4LCA4MSwgNiwgMSwgMjI1LCAxMTEsIDgxLCA0LCAxLCAyMjUsIDExMSwgODEsIDYsIDEsIDIyMiwgMjEzLCA4MSwgNCwgMSwgCi0gICAgMjIyLCAyMTMsIDgxLCA2LCAxLCAyMTksIDE2NywgODEsIDQsIDEsIDIxOSwgMTY3LCA4MSwgNiwgMSwgMjE3LCA0MiwgODEsIAotICAgIDQsIDEsIDIxNywgNDIsIDgxLCA2LCAxLCAyMTQsIDIyOSwgODEsIDQsIDEsIDIxNCwgMjI5LCA4MSwgNiwgMSwgMjQ0LCAKLSAgICAxMjksIDgxLCA0LCAxLCAyNDQsIDEyOSwgODEsIDYsIDEsIDIzNCwgMTE4LCA4MSwgNCwgMSwgMjM0LCAxMTgsIDgxLCA2LCAKLSAgICAxLCAyMjQsIDE2NCwgODEsIDQsIDEsIDIyNCwgMTY0LCA4MSwgNiwgMSwgMjI2LCAxODIsIDgxLCA0LCAxLCAyMjYsIDE4MiwgCi0gICAgODEsIDYsIDEsIDI0OCwgNSwgMjU0LCAxNzksIDgxLCA0LCAxLCAyNDgsIDUsIDI1NCwgMTc5LCA4MSwgNiwgMSwgNTUsIDgxLCAKLSAgICAyNTQsIDIwNSwgODEsIDQsIDEsIDU1LCA4MSwgMjU0LCAyMDUsIDgxLCA2LCAxLCAyNDksIDEyMywgMjQ1LCAyMDIsIDgxLCAKLSAgICA0LCAxLCAyNDksIDEyMywgMjQ1LCAyMDIsIDgxLCA2LCAxLCAyNDgsIDUsIDIzNCwgMjMzLCA4MSwgNCwgMSwgMjQ4LCA1LCAKLSAgICAyMzQsIDIzMywgODEsIDYsIDEsIDI0OCwgNSwgMjI4LCAyMzgsIDgxLCA0LCAxLCAyNDgsIDUsIDIyOCwgMjM4LCA4MSwgNiwgCi0gICAgMSwgMjQ5LCAxMjMsIDIyOCwgMjM4LCA4MSwgNCwgMSwgMjQ5LCAxMjMsIDIyOCwgMjM4LCA4MSwgNiwgMSwgNTUsIDgxLCAKLSAgICAyMjYsIDE4MiwgODEsIDQsIDEsIDU1LCA4MSwgMjI2LCAxODIsIDgxLCA2LCAxLCAyMjEsIDI0OCwgODEsIDQsIDEsIDIyMSwgCi0gICAgMjQ4LCA4MSwgNiwgMSwgMjQ5LCAxMzYsIDIyMCwgNTcsIDgxLCA0LCAxLCAyNDksIDEzNiwgMjIwLCA1NywgODEsIDYsIDEsIAotICAgIDU1LCA4MSwgMjIwLCA1NywgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCA1NywgODEsIDYsIDEsIDU1LCA4MSwgMjQ1LCA4MywgCi0gICAgODEsIDQsIDEsIDU1LCA4MSwgMjQ1LCA4MywgODEsIDYsIDEsIDI1NCwgMTkxLCAyMzQsIDEyMywgODEsIDQsIDEsIDI1NCwgCi0gICAgMTkxLCAyMzQsIDEyMywgODEsIDYsIDEsIDI0OCwgNSwgMjQxLCA1MiwgODEsIDQsIDEsIDI0OCwgNSwgMjQxLCA1MiwgODEsIAotICAgIDYsIDEsIDU1LCA4MSwgMjQxLCA1MiwgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCA1MiwgODEsIDYsIDEsIDU1LCA4MSwgMTYyLCAKLSAgICA4MSwgNCwgMSwgNTUsIDgxLCAxNjIsIDgxLCA2LCAxLCAyMzMsIDE1NCwgMTYyLCA4MSwgNCwgMSwgMjMzLCAxNTQsIDE2MiwgCi0gICAgODEsIDYsIDEsIDU1LCA4MSwgMjQxLCAyMjQsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgMjI0LCA4MSwgNiwgMSwgNTUsIDgxLCAKLSAgICAyNDIsIDIsIDgxLCA0LCAxLCA1NSwgODEsIDI0MiwgMiwgODEsIDYsIDEsIDU1LCA4MSwgMjQzLCAxMDksIDgxLCA0LCAxLCAKLSAgICA1NSwgODEsIDI0MywgMTA5LCA4MSwgNiwgMSwgNTUsIDgxLCAyNDcsIDE3MSwgODEsIDQsIDEsIDU1LCA4MSwgMjQ3LCAxNzEsIAotICAgIDgxLCA2LCAxLCA1NSwgODEsIDIyMCwgMjQsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgMjQsIDgxLCA2LCAxLCA1NSwgMjI3LCAKLSAgICAyMTIsIDIyMCwgMjQsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMTIsIDIyMCwgMjQsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMTIsIAotICAgIDIyOSwgMzIsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMTIsIDIyOSwgMzIsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMTIsIDIyNywgCi0gICAgMTUyLCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjcsIDE1MiwgODEsIDYsIDEsIDU1LCAyMjcsIDIxMiwgMjEyLCAzNywgCi0gICAgODEsIDQsIDEsIDU1LCAyMjcsIDIxMiwgMjEyLCAzNywgODEsIDE2LCAyMzQsIDI1MiwgODEsIDE2LCAyMzAsIDIzNiwgMjIyLCAKLSAgICAyMTMsIDgxLCAxNiwgMjI1LCAxMTIsIDIyMiwgMjEzLCA4MSwgMTYsIDIxOCwgMTQ5LCA4MSwgMTYsIDIxNywgNDMsIDIyMiwgCi0gICAgMjEzLCA4MSwgMTYsIDIzNCwgMTE5LCAyMjIsIDIxMywgODEsIDE2LCAyMjAsIDI1LCAyMTksIDE2NywgODEsIDYsIDEsIAotICAgIDI0OSwgMTIzLCAyMjAsIDU3LCA4MSwgNCwgMSwgMjQ5LCAxMjMsIDIyMCwgNTcsIDgxLCA2LCAxLCAyNDksIDEyMywgMjQzLCAKLSAgICAxMDksIDgxLCA0LCAxLCAyNDksIDEyMywgMjQzLCAxMDksIDgxLCAzOCwgMjI4LCAyMzksIDQ4LCA4MSwgMzgsIDIxOCwgCi0gICAgMjQ5LCAyNTMsIDIzMiwgODEsIDM4LCAyMTgsIDI0OSwgMjMzLCAyNywgODEsIDYsIDEsIDI1MSwgMjA3LCAyMzQsIDEyMywgCi0gICAgODEsIDQsIDEsIDI1MSwgMjA3LCAyMzQsIDEyMywgODEsIDU1LCAyMjcsIDIxMiwgMjQzLCAyMzYsIDIxOCwgMTMxLCA4MSwgCi0gICAgNTUsIDIyNywgMjEyLCAyNDcsIDIwNSwgMjI0LCAxNiwgNzksIDgxLCA1NSwgMjI3LCAyMTIsIDIzNSwgMjQ0LCAyMjQsIDE2LCAKLSAgICA3OSwgODEsIDU1LCAyMjcsIDIxMiwgMjEzLCAyNDEsIDI0NywgMTgwLCA4MSwgMjQ0LCAxMCwgMTIzLCAyNDIsIDM0LCA4MSwgCi0gICAgMjQzLCAyMzYsIDIxOCwgMTMxLCA4MSwgMjMwLCAxMjksIDI0NywgMTgwLCA5OCwgNCwgMSwgMjU0LCAxMzEsIDk4LCA0LCAxLCAKLSAgICAyNTIsIDE2MCwgOTgsIDQsIDEsIDI0MywgMTEzLCA5OCwgNCwgMSwgMjQ3LCAxMzYsIDk4LCA0LCAxLCAyNDUsIDE1OCwgOTgsIAotICAgIDQsIDEsIDIxMywgMTYwLCA5OCwgNCwgMSwgMjEwLCA4OSwgOTgsIDQsIDEsIDIxNywgNjEsIDk4LCA0LCAxLCAyMzYsIDYsIAotICAgIDk4LCA0LCAxLCAyMzQsIDI0MCwgOTgsIDQsIDEsIDIzMywgODcsIDk4LCA0LCAxLCAyMzEsIDE5MCwgOTgsIDQsIDEsIDIyOSwgCi0gICAgMjAwLCA5OCwgNCwgMSwgMjI2LCAyMDAsIDk4LCA0LCAxLCAyMjYsIDIxLCA5OCwgNCwgMSwgMjEwLCA3OCwgOTgsIDQsIDEsIAotICAgIDIyMywgMTc0LCA5OCwgNCwgMSwgMjIxLCAyNDUsIDk4LCA0LCAxLCAyMTcsIDUxLCA5OCwgNCwgMSwgMjE0LCAxOTAsIDk4LCAKLSAgICA0LCAxLCAyMjUsIDE0MywgOTgsIDQsIDEsIDIzNCwgMTI3LCA5OCwgNCwgMSwgMjQyLCAyNDgsIDk4LCA0LCAxLCAyMjQsIAotICAgIDc2LCA5OCwgNCwgMSwgMjIwLCAyMiwgOTgsIDQsIDEsIDI1MCwgMTA1LCA5OCwgNCwgMSwgMjUxLCAxNSwgOTgsIDQsIDEsIAotICAgIDIzNSwgMTA2LCA5OCwgNCwgMSwgMjUwLCA0OCwgOTgsIDQsIDEsIDI1MCwgMTUxLCA5OCwgNCwgMSwgMjExLCAxNjMsIDk4LCAKLSAgICA0LCAxLCAyMzUsIDExNywgOTgsIDQsIDEsIDI0MiwgNTAsIDk4LCA0LCAxLCAyNDEsIDI0NSwgOTgsIDQsIDEsIDI0MSwgCi0gICAgMTgyLCA5OCwgNCwgMSwgMjEyLCAyMiwgOTgsIDQsIDEsIDI0MiwgMTEsIDk4LCA0LCAxLCAyNDEsIDcyLCA5OCwgNCwgMSwgCi0gICAgMjEwLCAyNDYsIDk4LCA0LCAxLCAyNTQsIDI0MSwgMjE2LCAxMDksIDEsIDE5MiwgMjE2LCAxMDksIDEsIDIxMSwgOTksIAotICAgIDIxNiwgMTA5LCAxLCAyMTEsIDk4LCAyMTYsIDEwOSwgMSwgMjExLCA4OCwgMjE2LCAxMDksIDEsIDIxMSwgODYsIDIxNiwgCi0gICAgMTA5LCAxLCAyNTIsIDQwLCAyNTUsIDI1LCAyMTEsIDgxLCAyMTYsIDEwOSwgMSwgMjExLCA4MSwgMjE2LCAxMDksIDEsIAotICAgIDIxMSwgOTYsIDIxNiwgMTA5LCAxLCAyMTEsIDkzLCAyMTYsIDEwOSwgMSwgMjExLCA5NSwgMjE2LCAxMDksIDEsIDIxMSwgCi0gICAgOTQsIDIxNiwgMTA5LCAxLCAyMTEsIDEyLCAyMTYsIDEwOSwgMSwgMjExLCA5MCwgMjE2LCAxMDksIDEsIDIxMSwgNzksIAotICAgIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA3OSwgMjE2LCAxMDksIDEsIDIxMSwgNzYsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDg0LCAyMTYsIDEwOSwgMSwgMjUyLCA0MCwgMjU1LCAyNSwgMjExLCA4NCwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIAotICAgIDg0LCAyMTYsIDEwOSwgMSwgMjExLCA4MywgMjE2LCAxMDksIDEsIDIxMSwgMTAzLCAyMTYsIDEwOSwgMSwgMjExLCA3NywgCi0gICAgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDc3LCAyMTYsIDEwOSwgMSwgMjExLCA2NiwgMjE2LCAxMDksIDEsIDIxNSwgCi0gICAgMTE2LCAyMTEsIDY2LCAyMTYsIDEwOSwgMSwgMjExLCA4LCAyMTYsIDEwOSwgMSwgMjExLCA0OSwgMjE2LCAxMDksIDEsIAotICAgIDI1NCwgMjE2LCAyMTEsIDQ5LCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgNDksIDIxNiwgMTA5LCAxLCAyMTEsIDc1LCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA3NCwgMjE2LCAxMDksIDEsIDIxMSwgNzEsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCAKLSAgICA4NSwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDY5LCAyMTYsIDEwOSwgMSwgMjExLCA2NywgMjE2LCAxMDksIDEsIAotICAgIDIxMCwgMjEyLCAyMTYsIDEwOSwgMSwgMjExLCA2NCwgMjE2LCAxMDksIDEsIDIxMSwgNjMsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDg3LCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgODcsIDIxNiwgMTA5LCAxLCAyNTMsIDE3MSwgMjExLCA4NywgMjE2LCAKLSAgICAxMDksIDEsIDIxMSwgNjIsIDIxNiwgMTA5LCAxLCAyMTEsIDYwLCAyMTYsIDEwOSwgMSwgMjExLCA2MSwgMjE2LCAxMDksIDEsIAotICAgIDIxMSwgNTksIDIxNiwgMTA5LCAxLCAyMTEsIDU4LCAyMTYsIDEwOSwgMSwgMjExLCA5NywgMjE2LCAxMDksIDEsIDIxMSwgCi0gICAgNTYsIDIxNiwgMTA5LCAxLCAyMTEsIDU0LCAyMTYsIDEwOSwgMSwgMjExLCA1MywgMjE2LCAxMDksIDEsIDIxMSwgNTIsIAotICAgIDIxNiwgMTA5LCAxLCAyMTEsIDUwLCAyMTYsIDEwOSwgMSwgMjE3LCAzNSwgMjExLCA1MCwgMjE2LCAxMDksIDEsIDIxMSwgCi0gICAgNDgsIDIxNiwgMTA5LCAxLCAyMTEsIDQ3LCAyMTYsIDEwOSwgMSwgMjEwLCAyNDQsIDIxNiwgMTA5LCA1OCwgMSwgMjMzLCAKLSAgICAxMzIsIDc5LCAyMTYsIDEwOSwgMjIwLCAxNDAsIDc5LCAyMTYsIDEwOSwgMTE3LCAyMzUsIDY5LCAyOSwgMywgMjMyLCAxNjEsIAotICAgIDI5LCAzLCAyMzAsIDE2NSwgMjksIDMsIDIyMiwgMjExLCAyOSwgMywgMjE5LCA1OSwgMjksIDMsIDIyMCwgOCwgMjksIDMsIAotICAgIDI1MSwgMjEyLCAyOSwgMywgMjE2LCA0MiwgMjksIDMsIDI0OSwgMjQ1LCAyOSwgMywgMjI4LCA3NywgMjksIDMsIDIyNywgCi0gICAgMTM3LCAyOSwgMywgMjQyLCAxODcsIDIyNywgNCwgMjksIDMsIDIxMCwgMjIsIDI5LCAzLCAyNDcsIDE1MSwgMjksIDMsIAotICAgIDI0OCwgMTEyLCAyOSwgMywgMjM1LCA3MywgMjksIDMsIDIxNiwgMTU2LCAyOSwgMywgMjUwLCA5MywgMjksIDMsIDIyNSwgCi0gICAgMTIzLCAyOSwgMywgMjI1LCAxOCwgMjksIDMsIDI0MywgNiwgMjksIDMsIDI0MywgMiwgMjksIDMsIDI0MywgMywgMjksIDMsIAotICAgIDI0MywgNCwgMjksIDMsIDIxOCwgMjI1LCAyOSwgMywgMjE4LCAxODEsIDI5LCAzLCAyMTgsIDE5NCwgMjksIDMsIDIxOCwgCi0gICAgMjI0LCAyOSwgMywgMjE4LCAxOTgsIDI5LCAzLCAyMTgsIDE5OSwgMjksIDMsIDIxOCwgMTg2LCAyOSwgMywgMjUwLCAyMjEsIAotICAgIDI5LCAzLCAyNTAsIDIwMCwgMjksIDMsIDI1MCwgMjAyLCAyOSwgMywgMjUwLCAyMjAsIDI5LCAzLCAyNTAsIDIxOCwgMjksIAotICAgIDMsIDI1MCwgMjE5LCAyOSwgMywgMjUwLCAyMDEsIDI5LCAzLCAyMDksIDI0MywgMjksIDMsIDIwOSwgMjIxLCAyOSwgMywgCi0gICAgMjA5LCAyMzQsIDI5LCAzLCAyMDksIDI0MiwgMjksIDMsIDIwOSwgMjM3LCAyOSwgMywgMjA5LCAyMzgsIDI5LCAzLCAyMDksIAotICAgIDIyNiwgMjksIDMsIDI1MCwgMjE2LCAyOSwgMywgMjUwLCAyMDMsIDI5LCAzLCAyNTAsIDIwNSwgMjksIDMsIDI1MCwgMjE1LCAKLSAgICAyOSwgMywgMjUwLCAyMTMsIDI5LCAzLCAyNTAsIDIxNCwgMjksIDMsIDI1MCwgMjA0LCAyOSwgMywgMjIzLCAyMzksIDI5LCAKLSAgICAzLCAyMjMsIDIyOSwgMjksIDMsIDIyMywgMjM1LCAyOSwgMywgMjIzLCAyMzgsIDI5LCAzLCAyMjMsIDIzNiwgMjksIDMsIAotICAgIDIyMywgMjM3LCAyOSwgMywgMjIzLCAyMzQsIDI5LCAzLCAyMzMsIDE2NSwgMjksIDMsIDIzMywgMTU3LCAyOSwgMywgMjMzLCAKLSAgICAxNjAsIDI5LCAzLCAyMzMsIDE2NCwgMjksIDMsIDIzMywgMTYxLCAyOSwgMywgMjMzLCAxNjIsIDI5LCAzLCAyMzMsIDE1OCwgCi0gICAgMjksIDMsIDIxMSwgMTMwLCAyOSwgMywgMjExLCAxMjAsIDI5LCAzLCAyMTEsIDEyNiwgMjksIDMsIDIxMSwgMTI5LCAyOSwgCi0gICAgMywgMjExLCAxMjcsIDI5LCAzLCAyMTEsIDEyOCwgMjksIDMsIDIxMSwgMTI1LCAyOSwgMywgMjQyLCA3OCwgMjksIDMsIAotICAgIDI0MiwgNjksIDI5LCAzLCAyNDIsIDcyLCAyOSwgMywgMjQyLCA3NywgMjksIDMsIDI0MiwgNzQsIDI5LCAzLCAyNDIsIDc1LCAKLSAgICAyOSwgMywgMjQyLCA3MSwgMzgsIDMzLCAxLCAyNTIsIDgzLCAzOCwgMzMsIDEsIDIxMywgMjU1LCAzOCwgMzMsIDEsIDI0MiwgCi0gICAgMjQzLCAzOCwgMzMsIDEsIDI0OCwgOTgsIDM4LCAzMywgMSwgMjEwLCA3NCwgMzgsIDMzLCAxLCAyMTAsIDk0LCAzOCwgMzMsIAotICAgIDEsIDE3NiwgMzgsIDMzLCAxLCAyNDUsIDE4MiwgMzgsIDMzLCAxLCAyNDUsIDE2NywgMzgsIDMzLCAxLCAyNDUsIDE1OCwgCi0gICAgMzgsIDMzLCAxLCA3OCwgMzgsIDMzLCAxLCAyMjUsIDIyNCwgMzgsIDMzLCAxLCAyNDUsIDEwMCwgMzgsIDMzLCAxLCAyNDUsIAotICAgIDkwLCAzOCwgMzMsIDEsIDIxNywgMjMsIDM4LCAzMywgMSwgMTYyLCAzOCwgMzMsIDEsIDIxNSwgMTc5LCAzOCwgMzMsIDEsIAotICAgIDI1MCwgMTM5LCAzOCwgMzMsIDEsIDIyMCwgMTA0LCAzOCwgMzMsIDEsIDIyMCwgNjcsIDM4LCAzMywgMSwgMjQ0LCA5MCwgCi0gICAgMzgsIDMzLCAxLCAyNDUsIDg5LCAzOCwgMzMsIDEsIDYxLCAzOCwgMzMsIDEsIDIzNiwgNjcsIDM4LCAzMywgMSwgMjQ3LCAKLSAgICAxNjksIDM4LCAzMywgMSwgMjMwLCAxNDUsIDIxNCwgMjA1LCAzOCwgMzMsIDEsIDIxMSwgNTksIDM4LCAzMywgMSwgMjEwLCAKLSAgICAyMTIsIDM4LCAzMywgMSwgMjM1LCAxOTAsIDYxLCAzOCwgMzMsIDEsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzgsIDMzLCAxLCAKLSAgICAyNTIsIDEsIDIxMCwgMTgzLCAzOCwgMzMsIDEsIDIzNSwgMTkwLCAyNTIsIDEsIDIxMCwgMTgzLCA0NCwgMjU0LCAxMTgsIAotICAgIDIxOCwgNjEsIDIzMSwgMTU5LCA0NCwgMjU0LCAxMTgsIDI0NiwgMTI2LCAyMTgsIDYxLCAyMzEsIDE1OSwgNDMsIDIxOCwgCi0gICAgNjEsIDEyNywgNDQsIDIxOCwgNjEsIDEyNywgNDMsIDI0NiwgMTI2LCAyMTgsIDYxLCAxMjcsIDQ0LCAyNDYsIDEyNiwgMjE4LCAKLSAgICA2MSwgMTI3LCAyMjMsIDE2MCwgMjM1LCAyMDksIDIzMSwgMTU5LCAyMjMsIDE2MCwgMjQ2LCAxMjYsIDIzNSwgMjA5LCAyMzEsIAotICAgIDE1OSwgMjQ2LCAxMjYsIDIxNSwgMjQyLCAyMzEsIDE1OSwgNDMsIDIxNSwgMjQyLCAxMjcsIDQ0LCAyMTUsIDI0MiwgMTI3LCAKLSAgICAyMjMsIDE2MCwgMjE4LCAyMzYsIDQzLCAyMjMsIDE2MCwgMjI2LCAyMDIsIDEyNywgNDQsIDIyMywgMTYwLCAyMjYsIDIwMiwgCi0gICAgMTI3LCAyNDUsIDIxOCwgMjQ5LCAxNjYsIDIyNiwgMTcsIDI0NCwgMzAsIDIyNiwgMTcsIDIyMywgNTIsIDI0NCwgMzAsIAotICAgIDIyNiwgMTcsIDI0MCwgMTcyLCAyNDYsIDEyNiwgMjI2LCAyNTUsIDI0NiwgMTEyLCAyNTQsIDEyNywgMjE0LCAxNTMsIDI1NCwgCi0gICAgMTI3LCAyNDYsIDEyNiwgMjIyLCAyNTAsIDI1NCwgMTE3LCA1MiwgMjI2LCAyNTIsIDI0MCwgMTc1LCAyMzUsIDIwMCwgMjM1LCAKLSAgICAyMDgsIDIyNiwgNjMsIDI1MSwgMTYyLCAyNDAsIDE3NiwgMiwgMjQ4LCA5LCAyMTYsIDkwLCAyLCAyMjIsIDIzNywgNDgsIAotICAgIDQzLCAxMjEsIDIyNiwgOSwgMTI3LCA0NCwgMTIxLCAyMjYsIDksIDEyNywgMjE2LCA5MCwgMiwgNTksIDQ4LCAyMTYsIDkwLCAKLSAgICAyLCA1OSwgNTEsIDQzLCA2NywgMjUyLCAxNDksIDIsIDIyNCwgMTAsIDQ0LCA2NywgMjUyLCAxNDksIDIsIDIyNCwgMTAsIAotICAgIDIxNiwgMTUsIDQzLCAxNjMsIDEyNywgMjE2LCAxNSwgNDQsIDE2MywgMTI3LCAyNTEsIDE4MywgNDMsIDE2MywgMTI3LCAKLSAgICAyNTEsIDE4MywgNDQsIDE2MywgMTI3LCA0MywgMjE5LCAxODksIDEwNCwgMTI3LCA0NCwgMjE5LCAxODksIDEwNCwgMTI3LCAKLSAgICA0MywgNTIsIDIyNiwgNywgNDQsIDUyLCAyMjYsIDcsIDExMywgMTcwLCAxMTUsIDEyMywgNTksIDIyNCwgMTQzLCAxMjMsIAotICAgIDU5LCAxMTUsIDExMywgMTcwLCAyMjQsIDE0MywgOTIsIDI0NCwgMTksIDU5LCAyMjQsIDE0MywgMjQ0LCA4OSwgNTksIDc5LCAKLSAgICAyMjMsIDUyLCAyMjQsIDE2LCA3OSwgNjcsIDE4NCwgMjIyLCAyMzcsIDIyNSwgMTMsIDIxMSwgMjA5LCAyMjAsIDE0MCwgCi0gICAgMjMwLCAyMjksIDI0NywgMTI4LCAyMTUsIDk0LCAyNDksIDIyNywgMjIzLCAxNjAsIDI0NywgMTI4LCAyMjMsIDE2MCwgMjQ5LCAKLSAgICAyMjcsIDIxNSwgOTQsIDIyMCwgMTUyLCAyNDgsIDIxNCwgMiwgNDMsIDI0MiwgMTE1LCAyNDgsIDIxNCwgMiwgNDQsIDI0MiwgCi0gICAgMTE1LCAyMTUsIDk0LCAyNDgsIDIxMywgMjE2LCAxNSwgMTYzLCAyMjEsIDE3NSwgNTAsIDIxNSwgNTksIDI0OCwgMTY0LCAKLSAgICAyMTYsIDE0NCwgMjQ4LCAxNjQsIDEwLCAzNCwgMjIzLCA3OSwgMTAsIDM0LCAyNTAsIDE4LCAxMCwgMzQsIDIyMSwgMTc4LCAKLSAgICAxMTEsIDEwLCAzNCwgMjIxLCAxNzgsIDEwNSwgMTAsIDM0LCAyMjEsIDE3OCwgMTU4LCAxMCwgMzQsIDIyNSwgMTcwLCAxMCwgCi0gICAgMzQsIDI1MSwgMTcxLCAxMCwgMzQsIDIxNywgOTMsIDEwLCAzNCwgMjM0LCAzOSwgMTExLCAxMCwgMzQsIDIzNCwgMzksIAotICAgIDEwNSwgMTAsIDM0LCAyNDcsIDE3OCwgMTAsIDM0LCAyMjEsIDE4MSwgMTAsIDM0LCA0LCAxMTEsIDEwLCAzNCwgNCwgMTA1LCAKLSAgICAxMCwgMzQsIDIzMywgMTAzLCAxMTEsIDEwLCAzNCwgMjMzLCAxMDMsIDEwNSwgMTAsIDM0LCAyMzMsIDEwMywgMTU4LCAxMCwgCi0gICAgMzQsIDIzMywgMTAzLCAxNjEsIDEwLCAzNCwgMjE5LCA3MCwgMTAsIDM0LCAyMTYsIDE0NiwgMTAsIDM0LCAyMTksIDY4LCAKLSAgICAxMTEsIDEwLCAzNCwgMjE5LCA2OCwgMTA1LCAxMCwgMzQsIDI0MSwgMjM1LCAxMTEsIDEwLCAzNCwgMjQxLCAyMzUsIDEwNSwgCi0gICAgMTAsIDM0LCAyNDIsIDIyLCAxMCwgMzQsIDIyMywgMTUwLCAxMCwgMzQsIDI1MCwgOTAsIDEwLCAzNCwgMjE4LCAzOCwgMTAsIAotICAgIDM0LCAyMzAsIDEzMywgMTAsIDM0LCAyNDgsIDk2LCAxMCwgMzQsIDIzMCwgMTI1LCAxMCwgMzQsIDI1MCwgMzMsIDEwLCAzNCwgCi0gICAgMjEyLCA0MSwgMTExLCAxMCwgMzQsIDIxMiwgNDEsIDEwNSwgMTAsIDM0LCAyNDQsIDEwNCwgMTAsIDM0LCAyMjUsIDIzNiwgCi0gICAgMTExLCAxMCwgMzQsIDIyNSwgMjM2LCAxMDUsIDEwLCAzNCwgMjE5LCAxNjIsIDE2MywgMjE1LCAyMzcsIDIxNSwgMTg5LCAKLSAgICAxMCwgMzQsIDI0OSwgMTUzLCAxMCwgMzQsIDI0NywgMTQ0LCAxMCwgMzQsIDIzNSwgMTQzLCAxMCwgMzQsIDI1MSwgMjA2LCAKLSAgICA2NCwgMjUwLCAyLCAxMCwgMzQsIDI0NSwgMjMsIDEwLCAzNCwgMjE4LCAyNTEsIDExMSwgMTAsIDM0LCAyMTgsIDI1MSwgCi0gICAgMTA1LCAxMCwgMzQsIDI1MiwgMTYyLCAxMCwgMzQsIDIxOSwgMTY5LCAxMCwgMzQsIDI1MSwgNzEsIDIxOSwgMTY5LCAxMCwgCi0gICAgMzQsIDIyOSwgOTUsIDExMSwgMTAsIDM0LCAyMjksIDk1LCAxMDUsIDEwLCAzNCwgMjI5LCA5NSwgMTU4LCAxMCwgMzQsIAotICAgIDIyOSwgOTUsIDE2MSwgMTAsIDM0LCAyMzEsIDUxLCAxMCwgMzQsIDIyMCwgNTksIDEwLCAzNCwgMjIzLCAxNTYsIDEwLCAzNCwgCi0gICAgMjQ1LCA0NSwgMTAsIDM0LCAyMjYsIDIxMywgMTAsIDM0LCAyNTEsIDE0MSwgMTExLCAxMCwgMzQsIDI1MSwgMTQxLCAxMDUsIAotICAgIDEwLCAzNCwgMjMxLCA5MSwgMTAsIDM0LCAyMzAsIDEyOCwgMTAsIDM0LCAyNDIsIDE0NywgMTExLCAxMCwgMzQsIDI0MiwgCi0gICAgMTQ3LCAxMDUsIDEwLCAzNCwgMjQyLCAxNDcsIDE1OCwgMTAsIDM0LCAyMTYsIDEwNywgMTAsIDM0LCAyNTAsIDEsIDEwLCAKLSAgICAzNCwgMjEyLCA5LCAxMTEsIDEwLCAzNCwgMjEyLCA5LCAxMDUsIDEwLCAzNCwgMjUxLCA3MSwgMjIxLCAxNzIsIDEwLCAzNCwgCi0gICAgMjE5LCAxNjIsIDI0MCwgMjU1LCAxMCwgMzQsIDI0MCwgMjU1LCAxMCwgMzQsIDI1MSwgNzEsIDIxOSwgNCwgMTAsIDM0LCAKLSAgICAyNTEsIDcxLCAyMjAsIDU0LCAxMCwgMzQsIDI0NCwgNDAsIDEwLCAzNCwgMjUxLCA3MSwgMjUwLCAyMzYsIDEwLCAzNCwgCi0gICAgMjE5LCAxNjIsIDIxMiwgNTcsIDEwLCAzNCwgMjEyLCA1OCwgMTExLCAxMCwgMzQsIDIxMiwgNTgsIDEwNSwgMTAsIDM0LCAKLSAgICAyNTAsIDM1LCAxMCwgMzQsIDI1MSwgNzEsIDI0MiwgMTczLCAxMCwgMzQsIDIwMCwgMTExLCAxMCwgMzQsIDIwMCwgMTA1LCAKLSAgICAxMCwgMzQsIDI1MSwgNzEsIDIzMiwgMTQzLCAxMCwgMzQsIDI1MSwgNzEsIDI0MywgOTUsIDEwLCAzNCwgMjMwLCAxMjQsIAotICAgIDExMSwgMTAsIDM0LCAyMzAsIDEyNCwgMTA1LCAxMCwgMzQsIDIyMywgMTYyLCAxMCwgMzQsIDI1MSwgMjE1LCAxMCwgMzQsIAotICAgIDI1MSwgNzEsIDIxNywgNTcsIDIzMywgNTgsIDEwLCAzNCwgMjUxLCA3MSwgMjMzLCA1OSwgMTAsIDM0LCAyNTEsIDcxLCAKLSAgICAyMTEsIDIzOSwgMTAsIDM0LCAyNTEsIDcxLCAyNDQsIDU0LCAxMCwgMzQsIDI0NSwgMjI2LCAxMTEsIDEwLCAzNCwgMjQ1LCAKLSAgICAyMjYsIDEwNSwgMTAsIDM0LCAyNDUsIDIyNiwgMTU4LCAxMCwgMzQsIDI1MSwgNzEsIDI0NSwgMjI1LCAxMCwgMzQsIDI0MSwgCi0gICAgMjQyLCAxMCwgMzQsIDI1MSwgNzEsIDI0MCwgMjUyLCAxMCwgMzQsIDI1MSwgMjAyLCAxMCwgMzQsIDI0MiwgMjI5LCAxMCwgCi0gICAgMzQsIDI1MSwgNzEsIDI0NCwgOTgsIDEwLCAzNCwgMjUxLCA3MSwgMjUxLCAyNDUsIDEwLCAzNCwgMjUxLCA3MSwgMjIyLCAzLCAKLSAgICAxMCwgMzQsIDIxOSwgMTYyLCAyMTIsIDIsIDEwLCAzNCwgMjE5LCAxNjIsIDIxMSwgNDEsIDEwLCAzNCwgMjUxLCA3MSwgCi0gICAgMjQzLCAyNTIsIDEwLCAzNCwgMjM1LCAxNDksIDI0NSwgNDksIDEwLCAzNCwgMjUxLCA3MSwgMjQ1LCA0OSwgMTAsIDM0LCAKLSAgICAyMzUsIDE0OSwgMjE2LCAxNiwgMTAsIDM0LCAyNTEsIDcxLCAyMTYsIDE2LCAxMCwgMzQsIDIzNSwgMTQ5LCAyNDYsIDEwNCwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyNDYsIDEwNCwgMTAsIDM0LCAyMTUsIDkxLCAxMCwgMzQsIDIzNSwgMTQ5LCAyMTUsIDkxLCAKLSAgICAxMCwgMzQsIDI1MSwgNzEsIDIxNSwgOTEsIDYwLCAzNCwgMTExLCA2MCwgMzQsIDIzMiwgMjE5LCA2MCwgMzQsIDI0NywgCi0gICAgMTI4LCA2MCwgMzQsIDIxOSwgOTcsIDYwLCAzNCwgMjIxLCAxNzcsIDYwLCAzNCwgMTAzLCA2MCwgMzQsIDEwNSwgNjAsIDM0LCAKLSAgICAyMzIsIDI0MywgNjAsIDM0LCAyMzEsIDE5MCwgNjAsIDM0LCAyMzMsIDM5LCA2MCwgMzQsIDI0NSwgMTM3LCA2MCwgMzQsIAotICAgIDE5NiwgNjAsIDM0LCAxMjQsIDI1MSwgMTcxLCA2MCwgMzQsIDI0OSwgMTU1LCA2MCwgMzQsIDI0MCwgMTE4LCA2MCwgMzQsIAotICAgIDIxNywgOTMsIDYwLCAzNCwgMjA0LCAyNTEsIDE3MSwgNjAsIDM0LCAyMzQsIDM4LCA2MCwgMzQsIDIyNCwgMjI3LCA2MCwgCi0gICAgMzQsIDIxMSwgMjAyLCA2MCwgMzQsIDIxOCwgMjQ1LCA2MCwgMzQsIDQ0LCAyMDQsIDI1MSwgMTcxLCA2MCwgMzQsIDI0MSwgCi0gICAgMTgzLCAyNDUsIDE1MywgNjAsIDM0LCAyMTYsIDI0OCwgNjAsIDM0LCAyNDcsIDE3OCwgNjAsIDM0LCAyMjEsIDE4MSwgNjAsIAotICAgIDM0LCAyNTAsIDE4LCA2MCwgMzQsIDIyNCwgMTg1LCA2MCwgMzQsIDI1NCwgMjI0LCA2MCwgMzQsIDIzMCwgMTE1LCA2MCwgCi0gICAgMzQsIDI0NSwgMTUzLCA2MCwgMzQsIDI0NSwgMjMxLCA2MCwgMzQsIDIyMSwgMjAyLCA2MCwgMzQsIDI0MiwgMTgxLCA2MCwgCi0gICAgMzQsIDI0MiwgMTgyLCAyMTksIDgzLCA2MCwgMzQsIDI0NSwgNDgsIDYwLCAzNCwgMjUyLCAwLCA2MCwgMzQsIDIxMSwgMjIxLCAKLSAgICA2MCwgMzQsIDI1MCwgMTA5LCA2MCwgMzQsIDIyMiwgMTk4LCA2MCwgMzQsIDIzNiwgMiwgNjAsIDM0LCAyMTksIDgxLCA2MCwgCi0gICAgMzQsIDIzMywgMTAyLCA2MCwgMzQsIDI0OSwgMTY0LCA2MCwgMzQsIDIxOCwgMjM5LCA2MCwgMzQsIDIzMCwgMTIwLCA2MCwgCi0gICAgMzQsIDIyMiwgMjI3LCA2MCwgMzQsIDIxMSwgMjA2LCA2MCwgMzQsIDIyNiwgMTk0LCA2MCwgMzQsIDIxNSwgOTgsIDYwLCAKLSAgICAzNCwgMjQ2LCA4OCwgNjAsIDM0LCAyMTksIDI1MywgMjE2LCAxNDYsIDYwLCAzNCwgMjQ2LCAxMjYsIDI1MCwgMTgsIDYwLCAKLSAgICAzNCwgMjAwLCAyMTgsIDExMCwgNjAsIDM0LCAxMTMsIDI0MiwgMTcsIDYwLCAzNCwgMjIwLCAyLCA2MCwgMzQsIDI1MSwgCi0gICAgMTc3LCA2MCwgMzQsIDIxOSwgNjcsIDYwLCAzNCwgMjUxLCAxNDUsIDYwLCAzNCwgMjE4LCAxNDAsIDYwLCAzNCwgMjQxLCAKLSAgICAyMzQsIDYwLCAzNCwgMjQyLCAzNSwgNjAsIDM0LCAyNDcsIDEzMSwgNjAsIDM0LCAyNDIsIDIyLCA2MCwgMzQsIDI1MSwgCi0gICAgMTYyLCA2MCwgMzQsIDIyMywgMTUwLCA2MCwgMzQsIDIyMSwgMTg5LCA2MCwgMzQsIDI0NywgMjA3LCA2MCwgMzQsIDI1MywgCi0gICAgMTc2LCA2MCwgMzQsIDIxOCwgMjM2LCA2MCwgMzQsIDIyOCwgNTYsIDYwLCAzNCwgMjE4LCAzOCwgNjAsIDM0LCAyMjEsIAotICAgIDIxMywgNjAsIDM0LCAyMzAsIDEzMywgNjAsIDM0LCAyMTUsIDIzNiwgNjAsIDM0LCAyMzMsIDEyOCwgNjAsIDM0LCAyMTgsIAotICAgIDEzMSwgNjAsIDM0LCAyNDgsIDk2LCA2MCwgMzQsIDIxMiwgMjEsIDYwLCAzNCwgMjQ3LCAxNTQsIDIyOCwgNTYsIDYwLCAzNCwgCi0gICAgMjQ5LCAyMjMsIDYwLCAzNCwgMjQzLCAyMjksIDYwLCAzNCwgMjUwLCAyOSwgNjAsIDM0LCAyMTgsIDE0NCwgNjAsIDM0LCAKLSAgICAyMTIsIDQwLCA2MCwgMzQsIDI0NCwgMTA0LCA2MCwgMzQsIDI1MCwgMjYsIDYwLCAzNCwgMjQ0LCAxNjksIDYwLCAzNCwgNTIsIAotICAgIDIxMSwgMTc4LCA2MCwgMzQsIDE2MywgMjE1LCAyMzcsIDIxNSwgMTg5LCA2MCwgMzQsIDIxOSwgOTEsIDYwLCAzNCwgMjQ0LCAKLSAgICAxNzksIDYwLCAzNCwgMjQ5LCAxNTMsIDYwLCAzNCwgMjQ3LCAxNDQsIDYwLCAzNCwgMjI0LCAxODIsIDYwLCAzNCwgMjM1LCAKLSAgICAxNDMsIDYwLCAzNCwgMjMxLCA3MiwgNjAsIDM0LCAyMTYsIDg5LCA2MCwgMzQsIDIxNywgMjQ2LCA2MCwgMzQsIDIzMiwgCi0gICAgMjM3LCA2MCwgMzQsIDIxNCwgMTMxLCA2MCwgMzQsIDI0NCwgMTI4LCA2MCwgMzQsIDI1MSwgMjA2LCA2NCwgMjUwLCAyLCAKLSAgICA2MCwgMzQsIDIxOSwgMTkwLCA2MCwgMzQsIDI0NiwgMTI2LCAyMTYsIDI0MywgNjAsIDM0LCAyMTEsIDI1MywgNjAsIDM0LCAKLSAgICAyMTksIDEwNSwgNjAsIDM0LCAyNDcsIDE5NSwgNjAsIDM0LCAyNDUsIDIzLCA2MCwgMzQsIDIxOSwgNywgNjAsIDM0LCA3NSwgCi0gICAgNjAsIDM0LCAyMTgsIDEzMywgNjAsIDM0LCAyMTgsIDI1MCwgNjAsIDM0LCAyMTYsIDAsIDYwLCAzNCwgMjQyLCAxNTQsIDYwLCAKLSAgICAzNCwgMjUwLCAyMjYsIDYwLCAzNCwgMjE4LCAxNjIsIDYwLCAzNCwgMjUyLCAxNjIsIDYwLCAzNCwgMjIzLCAzNCwgNjAsIAotICAgIDM0LCAyMTksIDE2OSwgNjAsIDM0LCAyMzUsIDEzNiwgNjAsIDM0LCAyMjksIDk0LCA2MCwgMzQsIDIyMCwgNTksIDYwLCAzNCwgCi0gICAgMjQ0LCAxNTcsIDYwLCAzNCwgMjI2LCAyMTMsIDYwLCAzNCwgMjU0LCAxMjYsIDYwLCAzNCwgMjI1LCAzMiwgNjAsIDM0LCAKLSAgICAyNDUsIDIzNSwgNjAsIDM0LCAyNTEsIDE0MCwgNjAsIDM0LCAyMzEsIDkxLCA2MCwgMzQsIDIzMCwgMTg4LCA2MCwgMzQsIAotICAgIDIyMCwgMTU4LCA2MCwgMzQsIDI1NCwgNCwgNjAsIDM0LCAyMzAsIDEyOCwgNjAsIDM0LCAyMTYsIDIwLCA2MCwgMzQsIDIyNiwgCi0gICAgMTY5LCA2MCwgMzQsIDI1MSwgMjA5LCA2MCwgMzQsIDIxOCwgMTI5LCA2MCwgMzQsIDI0OSwgMjMzLCA2MCwgMzQsIDI0MiwgCi0gICAgMTQ2LCA2MCwgMzQsIDIxNiwgMTA3LCA2MCwgMzQsIDIzNSwgMjI0LCA2MCwgMzQsIDI1MSwgMjE5LCA2MCwgMzQsIDIxMiwgCi0gICAgNTgsIDI0NSwgMTUzLCA2MCwgMzQsIDI1MCwgMSwgNjAsIDM0LCAyMTIsIDgsIDYwLCAzNCwgMjIxLCAxNzIsIDYwLCAzNCwgCi0gICAgMjQwLCAyNTUsIDYwLCAzNCwgMjE5LCA0LCA2MCwgMzQsIDIxNCwgMjIsIDYwLCAzNCwgMjUyLCA4MCwgNjAsIDM0LCAyMjUsIAotICAgIDc2LCA2MCwgMzQsIDI1MiwgMTgyLCA2MCwgMzQsIDIyMCwgNTQsIDYwLCAzNCwgMjIzLCAxMTMsIDYwLCAzNCwgMjIyLCAKLSAgICAxMjgsIDYwLCAzNCwgMjQ0LCA0MCwgNjAsIDM0LCAyNTEsIDIwOCwgNjAsIDM0LCAyNTAsIDIzNiwgNjAsIDM0LCAyNTEsIAotICAgIDIzNCwgNjAsIDM0LCAyMzAsIDEzMCwgNjAsIDM0LCAyMTIsIDU3LCA2MCwgMzQsIDI1MCwgMzUsIDYwLCAzNCwgMjExLCAKLSAgICAyMzYsIDYwLCAzNCwgMjQ3LCAxODgsIDYwLCAzNCwgMjEzLCAxNjEsIDYwLCAzNCwgMjQyLCAxNzMsIDYwLCAzNCwgMjMyLCAKLSAgICAxNDMsIDYwLCAzNCwgMjQzLCA5NSwgNjAsIDM0LCAyMzAsIDEyMywgNjAsIDM0LCAyMTksIDk2LCA2MCwgMzQsIDIxOSwgCi0gICAgMjUzLCAyMTcsIDc3LCAyNTEsIDI0NSwgNjAsIDM0LCAyMjMsIDE2MiwgNjAsIDM0LCAyNTEsIDIxNSwgNjAsIDM0LCAyMTEsIAotICAgIDE5NywgNjAsIDM0LCAyNDQsIDE5OCwgNjAsIDM0LCAyMzMsIDU4LCA2MCwgMzQsIDIxNywgNTcsIDIzMywgNTgsIDYwLCAzNCwgCi0gICAgMjMzLCA1NCwgNjAsIDM0LCAyMTksIDMyLCA2MCwgMzQsIDIzMywgNTksIDYwLCAzNCwgMjExLCAyMzksIDYwLCAzNCwgMjQ0LCAKLSAgICA1NCwgNjAsIDM0LCAyNDUsIDIyNSwgNjAsIDM0LCAyNDEsIDI0MiwgNjAsIDM0LCAyNDQsIDgsIDYwLCAzNCwgMjQwLCAyNTIsIAotICAgIDYwLCAzNCwgMjUxLCAyMDIsIDYwLCAzNCwgMjE3LCA2NCwgNjAsIDM0LCAyNDIsIDQxLCA2MCwgMzQsIDI0NCwgMTIxLCA2MCwgCi0gICAgMzQsIDIyMiwgMzAsIDIxMSwgMjM2LCA2MCwgMzQsIDI1MCwgMjI4LCA2MCwgMzQsIDI0MiwgMjI5LCA2MCwgMzQsIDI0NCwgCi0gICAgOTgsIDYwLCAzNCwgMjUxLCAyNDUsIDYwLCAzNCwgMjIyLCAzLCA2MCwgMzQsIDI0OCwgODIsIDYwLCAzNCwgMjEyLCAyLCAKLSAgICA2MCwgMzQsIDI0MSwgMjE3LCA2MCwgMzQsIDIxMSwgNDEsIDYwLCAzNCwgMjMwLCAxOTcsIDYwLCAzNCwgMjUxLCAyMjksIAotICAgIDYwLCAzNCwgMjQ1LCAxNjMsIDYwLCAzNCwgMjQzLCAyNTIsIDYwLCAzNCwgMjE1LCAyMTAsIDYwLCAzNCwgMjQ2LCA5MCwgCi0gICAgNjAsIDM0LCAyMjMsIDE0NCwgNjAsIDM0LCAyMjgsIDU4LCA2MCwgMzQsIDI0NSwgNDksIDYwLCAzNCwgMjE2LCAxNiwgNjAsIAotICAgIDM0LCAyNDYsIDEwNCwgNjAsIDM0LCAyMTUsIDkxLCA2MCwgMzQsIDI0NCwgNTYsIDExMCwgMjQ4LCA0NSwgMTM1LCA0MywgCi0gICAgMjE2LCA0MywgMjIyLCAyNTQsIDExMCwgMjQ4LCA0NSwgMTM1LCA3MiwgMjE2LCA0MywgNTEsIDExMCwgMjQ4LCA0NSwgMTM1LCAKLSAgICA0MywgMjE2LCA0MywgMjMwLCAyMjksIDIyLCAyMjIsIDI1NCwgMTEwLCAyNDgsIDQ1LCAxMzUsIDcyLCAyMTYsIDQzLCAyMzAsIAotICAgIDIyOSwgMjIsIDUxLCAxMTAsIDI0OCwgNDUsIDEzNSwgMjQzLCAyMzYsIDIxOCwgMTEsIDExMCwgMjQ4LCA0NSwgMTM1LCAKLSAgICAyMTgsIDEyLCAyNDMsIDI1MSwgNDgsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAyNDMsIDI1MSwgNTEsIDExMCwgCi0gICAgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAyNDMsIDI1MSwgMjMzLCA1MiwgMTEwLCAyNDgsIDQ1LCAxMzUsIDIxOCwgMTIsIAotICAgIDI0MywgMjUxLCAyMTQsIDE2MCwgMjMzLCA1MiwgMTEwLCAyNDgsIDQ1LCAxMzUsIDIxOCwgMTIsIDI0MywgMjUxLCAyMTQsIAotICAgIDE2MCwgMjIyLCAyNTQsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAyNDMsIDI1MSwgMjMyLCAxMTQsIDIzMywgNTIsIAotICAgIDExMCwgMjQ4LCA0NSwgMTM1LCAyMjYsIDEyNiwgMTEwLCAyMTksIDIwLCAxMTAsIDI0OSwgMjI3LCAxMTAsIDI0MywgMjM2LCAKLSAgICAyMTgsIDEzMSwgMjQ3LCAxODUsIDc5LCAyMzUsIDEzNywgMjM1LCAyNDMsIDIxOCwgMTYxLCA4NywgMTEwLCAyMzUsIDE2NCwgCi0gICAgNzksIDExMCwgMjUwLCA0LCA3OSwgMTEwLCA1NCwgMjEwLCA4NiwgNDMsIDI1NCwgMTE4LCAxMjcsIDQ0LCAyNTQsIDExOCwgCi0gICAgMTI3LCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDQ0LCA1MiwgMjU0LCAxMTgsIDEyNywgNDMsIDI0OSwgMTY5LCAxMjcsIDQ0LCAKLSAgICAyNDksIDE2OSwgMTI3LCA0MywgNzEsIDI0OSwgMTY5LCAxMjcsIDQ0LCA3MSwgMjQ5LCAxNjksIDEyNywgNDMsIDg1LCAyMzMsIAotICAgIDI2LCAxMjcsIDQ0LCA4NSwgMjMzLCAyNiwgMTI3LCAyMjQsIDI0MCwgNzksIDI0MywgMzksIDc5LCA0MywgMjE2LCA3LCAKLSAgICAyMjAsIDU1LCAxMjcsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNDMsIDcxLCAyMzMsIDI2LCAxMjcsIDQ0LCA3MSwgCi0gICAgMjMzLCAyNiwgMTI3LCA0MywgNzEsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCA0NCwgNzEsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCAKLSAgICA0MywgNzEsIDQyLCAxMjcsIDQ0LCA3MSwgNDIsIDEyNywgMjEyLCAzNiwgMjQ4LCAxNjQsIDIyMywgNTIsIDUyLCAyMjQsIAotICAgIDE5NCwgMjI0LCAxLCA3OSwgNTIsIDIyNCwgMTk0LCAyMjQsIDEsIDc5LCAxMjEsIDUyLCAyMjQsIDE5NCwgMjI0LCAxLCA3OSwgCi0gICAgMjI0LCAyNDAsIDE2NCwgMjQ0LCAxOTgsIDI0MiwgMTUsIDIyNywgMjAyLCAxMTEsIDI0MiwgMTUsIDIyNywgMjAyLCAxMDUsIAotICAgIDI0MiwgMTUsIDIyNywgMjAyLCAxNTgsIDI0MiwgMTUsIDIyNywgMjAyLCAxNjEsIDI0MiwgMTUsIDIyNywgMjAyLCAxOTAsIAotICAgIDI0MiwgMTUsIDIyNywgMjAyLCAxOTUsIDI0MiwgMTUsIDIyNywgMjAyLCAxOTksIDI0MiwgMTUsIDIyNywgMjAyLCAxOTYsIAotICAgIDI0MiwgMTUsIDIyNywgMjAyLCAyMDEsIDExMCwgMjMzLCA5LCAxMzgsIDc5LCAxMTAsIDIyMiwgMjMxLCAxMzgsIDc5LCAKLSAgICAxMTAsIDI0OCwgNTIsIDEzOCwgNzksIDExMCwgMjQ1LCAxMzYsIDEzOCwgNzksIDI0LCAyMTksIDE1NywgNTksIDEzOCwgNzksIAotICAgIDI0LCA1MiwgNTksIDEzOCwgNzksIDIxMiwgMzIsIDI0OCwgMTY0LCA2NywgMjM0LCAyMzksIDIyMywgODAsIDc5LCA2NywgCi0gICAgMjM0LCAyMzksIDIyMywgODAsIDIsIDIxMywgMTM1LCAyMTksIDMzLCA3OSwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAxNjQsIAotICAgIDIxNCwgMTYwLCAyNDIsIDM0LCA2NywgMjM0LCAyMzksIDIyMywgODAsIDIsIDIxMywgMTM1LCAyMTksIDMzLCAxNjQsIDIxNCwgCi0gICAgMTYwLCAyNDIsIDM0LCA2NywgMjM0LCAyMzksIDIyMywgODAsIDE2NCwgMjMyLCAxMTQsIDI0MiwgMzQsIDM3LCAyMjQsIAotICAgIDI0MCwgNzksIDExMCwgMjE3LCA0LCAyMzIsIDIyMCwgMjQ0LCAxNTQsIDIyMCwgMTQwLCA4NywgMjQyLCAxNSwgMjI3LCAKLSAgICAyMDIsIDIxNiwgMjQ4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMjE1LCA3MywgMjQyLCAxNSwgMjI3LCAyMDIsIDIxNiwgMTYzLCAKLSAgICA2NywgMTEwLCAyMzUsIDE2NCwgNzksIDIzMSwgMTQ1LCA3OSwgMjI2LCAzLCAyNTQsIDE0OCwgNzksIDExMCwgNDUsIDIzNSwgCi0gICAgMjQ1LCAxMTAsIDE2MywgMjQ0LCAxMTQsIDIxOSwgMjAsIDE0MSwgMSwgNCwgNjEsIDE0MSwgMSwgNjEsIDE0MSwgMSwgNCwgCi0gICAgNzQsIDE0MSwgMSwgNzQsIDE0MSwgMSwgNCwgNjksIDE0MSwgMSwgNjksIDE0MSwgMSwgNCwgNzYsIDE0MSwgMSwgNzYsIAotICAgIDE0MSwgMSwgNCwgNzgsIDE0MSwgMSwgNzgsIDE0MSwgMSwgMTc2LCAxNDEsIDEsIDI0MywgMTQyLCAxNDEsIDEsIDIzNCwgCi0gICAgOTgsIDE0MSwgMSwgMjQyLCAyMjEsIDE0MSwgMSwgMjMzLCAyMjMsIDE0MSwgMSwgMjQyLCAxMjAsIDE0MSwgMSwgMjM0LCAKLSAgICAxODgsIDE0MSwgMSwgMjQzLCA2OSwgMTQxLCAxLCAyMzQsIDM0LCAxNDEsIDEsIDI0MiwgMTgxLCAxNDEsIDEsIDIwNiwgCi0gICAgMTQxLCAxLCAyMTAsIDExNiwgMTQxLCAxLCAyMTksIDE5MywgMTQxLCAxLCAyMTAsIDQ0LCAxNDEsIDEsIDIxOCwgODQsIAotICAgIDE0MSwgMSwgMjEwLCAxMywgMTQxLCAxLCAyMjEsIDE4MywgMTQxLCAxLCAyMTAsIDk0LCAxNDEsIDEsIDIxOSwgNjAsIDE0MSwgCi0gICAgMSwgMjEwLCAyMywgMTQxLCAxLCAyMTcsIDEwNiwgMTQxLCAxLCAyNDgsIDIyOSwgMTQxLCAxLCAyMTYsIDExOCwgMTQxLCAxLCAKLSAgICAyNDgsIDExLCAxNDEsIDEsIDQsIDIxNSwgMTE5LCAxNDEsIDEsIDIxNSwgMTE5LCAxNDEsIDEsIDI0NiwgODYsIDE0MSwgMSwgCi0gICAgMjE3LCAyMywgMTQxLCAxLCAyNDgsIDk4LCAxNDEsIDEsIDExMiwgMTQxLCAxLCAyNDcsIDE1MywgMTQxLCAxLCAxOTgsIAotICAgIDE0MSwgMSwgMjI4LCAyMzgsIDE0MSwgMSwgMjI3LCAyNDIsIDE0MSwgMSwgMjI5LCAxMTIsIDE0MSwgMSwgMjI4LCA3OSwgCi0gICAgMTQxLCAxLCAxNjIsIDE0MSwgMSwgMjUyLCAxOTksIDE0MSwgMSwgMTkxLCAxNDEsIDEsIDI0MSwgMTg3LCAxNDEsIDEsIAotICAgIDI1MiwgMTQsIDE0MSwgMSwgMjI1LCAxMTEsIDE0MSwgMSwgMjQwLCAyMjksIDE0MSwgMSwgMjUxLCAxMzMsIDE0MSwgMSwgCi0gICAgMjI0LCAxNTMsIDE0MSwgMSwgMjQxLCAyNDUsIDE0MSwgMSwgMjUyLCA4MywgMTQxLCAxLCAyMjUsIDIyNCwgMTQxLCAxLCAKLSAgICAyNDEsIDc1LCAxNDEsIDEsIDI1MSwgMjEzLCAxNDEsIDEsIDIyNSwgMTksIDE0MSwgMSwgMTg2LCAxNDEsIDEsIDIzMCwgCi0gICAgMjM1LCAxNDEsIDEsIDIzMCwgMTA3LCAxNDEsIDEsIDIzMSwgOTYsIDE0MSwgMSwgMjMwLCAxNjYsIDE0MSwgMSwgNCwgMTkyLCAKLSAgICAxNDEsIDEsIDE5MiwgMTQxLCAxLCA0LCAyMTAsIDIxMiwgMTQxLCAxLCAyMTAsIDIxMiwgMTQxLCAxLCA0LCAyMTAsIDI0NCwgCi0gICAgMTQxLCAxLCAyMTAsIDI0NCwgMTQxLCAxLCAyMDUsIDE0MSwgMSwgMjIzLCAzOCwgMTQxLCAxLCAyMjIsIDE0MiwgMTQxLCAxLCAKLSAgICAyMjMsIDEzMSwgMTQxLCAxLCAyMjIsIDIxMywgMTQxLCAxLCA0LCAyMTIsIDY1LCAxNDEsIDEsIDIxMiwgNjUsIDE0MSwgMSwgCi0gICAgMjExLCAyNTAsIDE0MSwgMSwgMjEyLCAyMiwgMTQxLCAxLCAyMTEsIDIyNywgMTQxLCAxLCAyMzAsIDMwLCAxNDEsIDEsIAotICAgIDIxMiwgMTE2LCAxNDEsIDEsIDQsIDE3NiwgMTQxLCAxLCA0LCAyMzQsIDE4OCwgMzgsIDIzNCwgMjA3LCAyMTMsIDEzNSwgCi0gICAgMjE5LCAzMywgNzksIDM4LCAyMzQsIDIwNywgMjIwLCAxNTcsIDIxOSwgMzMsIDc5LCAyMzQsIDIwNywgMjEzLCAxMzUsIAotICAgIDIxOSwgMzMsIDc5LCAyMzQsIDIwNywgMjIwLCAxNTcsIDIxOSwgMzMsIDc5LCAxNDEsIDIzNSwgMTY0LCA3OSwgMTQxLCAKLSAgICAyMTMsIDEzNSwgMjM1LCAxNjQsIDc5LCAxNDEsIDI0NywgMjI5LCAyMTAsIDIyNSwgMjM0LCAyMDcsIDUyLCAyNDAsIDE3NSwgCi0gICAgNTYsIDEsIDQsIDYxLCA1NiwgMSwgNjEsIDU2LCAxLCA0LCA3NCwgNTYsIDEsIDc0LCA1NiwgMSwgNCwgNjksIDU2LCAxLCAKLSAgICA2OSwgNTYsIDEsIDQsIDc2LCA1NiwgMSwgNzYsIDU2LCAxLCA0LCA3OCwgNTYsIDEsIDc4LCA1NiwgMSwgMTc2LCA1NiwgMSwgCi0gICAgMjQzLCAxNDIsIDU2LCAxLCAyMzQsIDk4LCA1NiwgMSwgMjQyLCAyMjEsIDU2LCAxLCAyMzMsIDIyMywgNTYsIDEsIDI0MiwgCi0gICAgMTIwLCA1NiwgMSwgMjM0LCAxODgsIDU2LCAxLCAyNDMsIDY5LCA1NiwgMSwgMjM0LCAzNCwgNTYsIDEsIDI0MiwgMTgxLCAKLSAgICA1NiwgMSwgMjA2LCA1NiwgMSwgMjEwLCAxMTYsIDU2LCAxLCAyMTksIDE5MywgNTYsIDEsIDIxMCwgNDQsIDU2LCAxLCAyMTgsIAotICAgIDg0LCA1NiwgMSwgMjEwLCAxMywgNTYsIDEsIDIyMSwgMTgzLCA1NiwgMSwgMjEwLCA5NCwgNTYsIDEsIDIxOSwgNjAsIDU2LCAKLSAgICAxLCAyMTAsIDIzLCA1NiwgMSwgMjE3LCAxMDYsIDU2LCAxLCAyNDgsIDIyOSwgNTYsIDEsIDIxNiwgMTE4LCA1NiwgMSwgCi0gICAgMjQ4LCAxMSwgNTYsIDEsIDQsIDIxNSwgMTE5LCA1NiwgMSwgMjE1LCAxMTksIDU2LCAxLCAyNDYsIDg2LCA1NiwgMSwgMjE3LCAKLSAgICAyMywgNTYsIDEsIDI0OCwgOTgsIDU2LCAxLCAxMTIsIDU2LCAxLCAyNDcsIDE1MywgNTYsIDEsIDE5OCwgNTYsIDEsIDIyOCwgCi0gICAgMjM4LCA1NiwgMSwgMjI3LCAyNDIsIDU2LCAxLCAyMjksIDExMiwgNTYsIDEsIDIyOCwgNzksIDU2LCAxLCAxNjIsIDU2LCAxLCAKLSAgICAyNTIsIDE5OSwgNTYsIDEsIDE5MSwgNTYsIDEsIDI0MSwgMTg3LCA1NiwgMSwgMjUyLCAxNCwgNTYsIDEsIDIyNSwgMTExLCAKLSAgICA1NiwgMSwgMjQwLCAyMjksIDU2LCAxLCAyNTEsIDEzMywgNTYsIDEsIDIyNCwgMTUzLCA1NiwgMSwgMjQxLCAyNDUsIDU2LCAKLSAgICAxLCAyNTIsIDgzLCA1NiwgMSwgMjI1LCAyMjQsIDU2LCAxLCAyNDEsIDc1LCA1NiwgMSwgMjUxLCAyMTMsIDU2LCAxLCAyMjUsIAotICAgIDE5LCA1NiwgMSwgMTg2LCA1NiwgMSwgMjMwLCAyMzUsIDU2LCAxLCAyMzAsIDEwNywgNTYsIDEsIDIzMSwgOTYsIDU2LCAxLCAKLSAgICAyMzAsIDE2NiwgNTYsIDEsIDQsIDE5MiwgNTYsIDEsIDE5MiwgNTYsIDEsIDQsIDIxMCwgMjEyLCA1NiwgMSwgMjEwLCAyMTIsIAotICAgIDU2LCAxLCA0LCAyMTAsIDI0NCwgNTYsIDEsIDIxMCwgMjQ0LCA1NiwgMSwgMjA1LCA1NiwgMSwgMjIzLCAzOCwgNTYsIDEsIAotICAgIDIyMiwgMTQyLCA1NiwgMSwgMjIzLCAxMzEsIDU2LCAxLCAyMjIsIDIxMywgNTYsIDEsIDQsIDIxMiwgNjUsIDU2LCAxLCAKLSAgICAyMTIsIDY1LCA1NiwgMSwgMjExLCAyNTAsIDU2LCAxLCAyMTIsIDIyLCA1NiwgMSwgMjExLCAyMjcsIDU2LCAxLCAyMzAsIAotICAgIDMwLCA1NiwgMSwgMjEyLCAxMTYsIDU2LCAxLCA0LCAxNzYsIDU2LCAxLCA0LCAyMzQsIDE4OCwgNTYsIDEsIDIxNCwgMjcsIAotICAgIDU2LCAxLCAyMTMsIDE3NiwgNTYsIDEsIDIxMywgMjU1LCA1NiwgMSwgMjEzLCAxMzgsIDU2LCAyMzAsIDIyOSwgMjQ3LCAKLSAgICAxMjgsIDIzNCwgMjA3LCAyMjQsIDE3NiwgMjE5LCAzMywgNzksIDU2LCAyMzUsIDE2NCwgNzksIDU2LCAyMTMsIDEzNSwgCi0gICAgMjM1LCAxNjQsIDc5LCA1NiwgMjQ3LCAyMjksIDIzNCwgNSwgMjUxLCAxOTIsIDEsIDI1MywgMTY2LCAyNTEsIDE5MiwgMSwgCi0gICAgMjI2LCAxMDksIDI1MSwgMTkyLCAxLCAxOTQsIDI1MSwgMTkyLCAxLCAyNDUsIDE0LCAyNTEsIDE5MiwgMSwgMjQ5LCA2OCwgCi0gICAgMjUxLCAxOTIsIDEsIDIxNywgMTUzLCAyNTEsIDE5MiwgMSwgMjMwLCAzMCwgMjUxLCAxOTIsIDEsIDE1NiwgMjUxLCAxOTIsIAotICAgIDEsIDI0MywgMjA5LCAyNTEsIDE5MiwgMSwgMjM1LCAyOSwgMjUxLCAxOTIsIDEsIDI0MiwgNjcsIDI1MSwgMTkyLCAxLCAKLSAgICAyMzUsIDE1MCwgMjUxLCAxOTIsIDEsIDIyNCwgOTksIDI1MSwgMTkyLCAxLCAyMTEsIDE3OCwgMjUxLCAxOTIsIDEsIDIxMCwgCi0gICAgODMsIDI1MSwgMTkyLCAxLCAyNTAsIDE2NiwgMjUxLCAxOTIsIDEsIDIyMCwgMTA2LCAyNTEsIDE5MiwgMSwgMTUzLCAyNTEsIAotICAgIDE5MiwgMSwgMjEwLCAxNTksIDI1MSwgMTkyLCAxLCAyNTEsIDc0LCAyNTEsIDE5MiwgMSwgMjIyLCA5MywgMjUxLCAxOTIsIAotICAgIDEsIDYxLCAyNTEsIDE5MiwgMSwgNzgsIDI1MSwgMTkyLCAxLCA3NiwgMjUxLCAxOTIsIDEsIDI0NSwgMjA1LCAyNTEsIDE5MiwgCi0gICAgMSwgMjU0LCAyMTAsIDI1MSwgMTkyLCAxLCAyNDUsIDIwMywgMjUxLCAxOTIsIDEsIDI1MywgMjAwLCAyNTEsIDE5MiwgMSwgCi0gICAgMjI2LCAxMzgsIDI1MSwgMTkyLCAxLCAyNTQsIDEzMSwgMjUxLCAxOTIsIDEsIDI0NSwgMTU4LCAyNTEsIDE5MiwgMSwgMjU0LCAKLSAgICAxMjMsIDI1MSwgMTkyLCAxLCAyNDUsIDE0NiwgMjUxLCAxOTIsIDEsIDI0NSwgMTAwLCAyNTEsIDE5MiwgMSwgNzQsIDI1MSwgCi0gICAgMTkyLCAxLCA2OSwgMjUxLCAxOTIsIDEsIDIzNSwgMTYyLCAyNTEsIDE5MiwgMSwgMjE0LCAxMDUsIDI1MSwgMTkyLCAxLCAKLSAgICAyMjksIDg0LCAyNTEsIDE5MiwgMSwgMjQyLCAxODUsIDI1MSwgMTkyLCAxLCAyMzYsIDQxLCAyNCwgMSwgMjM0LCA2NCwgMjQsIAotICAgIDEsIDIxOCwgMjE3LCAyNCwgMSwgMjM0LCA1NywgMjQsIDEsIDIyOCwgMjMxLCAyNCwgMSwgMjI4LCAyMjksIDI0LCAxLCAKLSAgICAyMjgsIDIyOCwgMjQsIDEsIDIxNiwgMTAyLCAyNCwgMSwgMjE4LCAyMDYsIDI0LCAxLCAyMjMsIDI5LCAyNCwgMSwgMjIzLCAKLSAgICAyNCwgMjQsIDEsIDIyMywgMjEsIDI0LCAxLCAyMjMsIDE0LCAyNCwgMSwgMjIzLCA5LCAyNCwgMSwgMjIzLCA0LCAyNCwgMSwgCi0gICAgMjIzLCAxNSwgMjQsIDEsIDIyMywgMjcsIDI0LCAxLCAyMzAsIDIyMiwgMjQsIDEsIDIyNSwgOTgsIDI0LCAxLCAyMTgsIAotICAgIDIxNCwgMjQsIDEsIDIyNSwgODcsIDI0LCAxLCAyMTksIDE1MCwgMjQsIDEsIDIxOCwgMjExLCAyNCwgMSwgMjM2LCA2MywgCi0gICAgMjQsIDEsIDI1MCwgNTQsIDI0LCAxLCAyMTgsIDIyMSwgMjQsIDEsIDI1MCwgMTE0LCAyNCwgMSwgMjM0LCAxMTYsIDI0LCAxLCAKLSAgICAyMTYsIDE3NCwgMjQsIDEsIDIyNSwgMTM0LCAyNCwgMSwgMjQxLCAxNzksIDI0LCAxLCA2MSwgMjQsIDEsIDI1NCwgMjUyLCAKLSAgICAyNCwgMSwgMTkyLCAyNCwgMSwgMjExLCA5MiwgMjQsIDEsIDI0NSwgMTI1LCAyNCwgMSwgNzYsIDI0LCAxLCAyMTEsIDM2LCAKLSAgICAyNCwgMSwgMjExLCA0NywgMjQsIDEsIDc4LCAyNCwgMSwgMjEyLCA2NSwgMjQsIDEsIDIxMiwgNjIsIDI0LCAxLCAyMjYsIAotICAgIDIzOCwgMjQsIDEsIDIxMCwgMjQ0LCAyNCwgMSwgNjksIDI0LCAxLCAyMTIsIDExLCAyNCwgMSwgMjEyLCAyMiwgMjQsIDEsIAotICAgIDIxMSwgMjUwLCAyNCwgMSwgMjEwLCAyMTIsIDI0LCAxLCAyNDUsIDYzLCAyNCwgMSwgMjExLCA4LCAyNCwgMSwgNzQsIDI0LCAKLSAgICAyNDQsIDExMSwgMjQsIDEsIDIxOCwgMjE1LCAyNCwgMSwgMjI4LCAyMjEsIDI0LCAxLCAyMjgsIDIyMywgMjQsIDEsIDIyOCwgCi0gICAgMjI2LCAyNCwgMSwgMjIzLCAyMiwgMjQsIDEsIDIyMywgMywgMjQsIDEsIDIyMywgMTEsIDI0LCAxLCAyMjMsIDE2LCAyNCwgCi0gICAgMSwgMjIzLCAxLCAyNCwgMSwgMjMwLCAyMTUsIDI0LCAxLCAyMzAsIDIxMiwgMjQsIDEsIDIzMCwgMjE2LCAyNCwgMSwgMjM0LCAKLSAgICAyMjcsIDI0LCAxLCAyMjUsIDkzLCAyNCwgMSwgMjI1LCA3OSwgMjQsIDEsIDIyNSwgODUsIDI0LCAxLCAyMjUsIDgyLCAyNCwgCi0gICAgMSwgMjI1LCA5NiwgMjQsIDEsIDIyNSwgODAsIDI0LCAxLCAyMzQsIDIyNSwgMjQsIDEsIDIzNCwgMjIzLCAyNCwgMSwgMjE5LCAKLSAgICAxNDMsIDI0LCAxLCAyMTksIDE0MSwgMjQsIDEsIDIxOSwgMTMzLCAyNCwgMSwgMjE5LCAxMzgsIDI0LCAxLCAyMTksIDE0OCwgCi0gICAgMjQsIDEsIDIyNiwgMzYsIDI0LCAxLCAyMTgsIDIxOCwgMjQsIDEsIDIxMSwgMjYsIDI0LCAxLCAyMTEsIDIyLCAyNCwgMSwgCi0gICAgMjExLCAyMywgMjQsIDEsIDIzNCwgMjI2LCAyNCwgMSwgMjE4LCAyMTksIDI0LCAxLCAyMTEsIDMyLCAyNCwgMSwgMjEwLCAKLSAgICAyMzgsIDI0LCAxLCAyMTAsIDIzNywgMjQsIDEsIDIxMCwgMjQwLCAyNCwgMSwgMjEwLCAyMDMsIDI0LCAxLCAyMTAsIDIwNCwgCi0gICAgMjQsIDEsIDIxMCwgMjA3LCAyNCwgMSwgMjU0LCA0MiwgMjQsIDEsIDI1NCwgMzYsIDExMCwgMjU0LCAxMDcsIDIzMiwgMjA5LCAKLSAgICA3OSwgMTEwLCAyNTQsIDEwNywgMjIzLCA1MywgNzksIDExMCwgMjU0LCAxMDcsIDEyMywgNzksIDExMCwgMjU0LCAxMDcsIAotICAgIDExMywgNzksIDExMCwgMjU0LCAxMDcsIDEzNCwgNzksIDExMCwgMjU0LCAxMDcsIDI0NCwgMTksIDc5LCAxMTAsIDI1NCwgCi0gICAgMTA3LCAyMTYsIDE1LCA3OSwgMTEwLCAyNTQsIDEwNywgMjMwLCAyMjksIDc5LCAxMTAsIDI1NCwgMTA3LCAyNTEsIDE4MywgCi0gICAgNzksIDExMCwgMjU0LCAxMDcsIDI0NCwgMTAwLCA3OSwgMTEwLCAyNTQsIDEwNywgMjIxLCAxNzgsIDc5LCAxMTAsIDI1NCwgCi0gICAgMTA3LCAyMTYsIDE3MCwgNzksIDExMCwgMjU0LCAxMDcsIDI0NCwgMTIsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDEsIDIzMSwgCi0gICAgNzksIDExMCwgMjU0LCAxMDcsIDI0NSwgMjMyLCA3OSwgMTEwLCAyNTQsIDEwNywgMjMxLCAxOTEsIDc5LCAyNTEsIDE5MiwgCi0gICAgMSwgMjUxLCAxMzMsIDI1MSwgMTkyLCAxLCAyMTAsIDQ0LCAyNTEsIDE5MiwgMSwgMjM1LCAxMTQsIDI1MSwgMTkyLCAxLCAKLSAgICAyNDIsIDEyMCwgMjUxLCAxOTIsIDEsIDI0NSwgMjE3LCAyNTEsIDE5MiwgMSwgMjQ1LCAxNDMsIDI1MSwgMTkyLCAxLCAyMjYsIAotICAgIDE4NywgMjUxLCAxOTIsIDEsIDIyNiwgMTkxLCAyNTEsIDE5MiwgMSwgMjM1LCAxODYsIDI1MSwgMTkyLCAxLCAyNTQsIDEwOSwgCi0gICAgMjUxLCAxOTIsIDEsIDIzNSwgMjMxLCAyNTEsIDE5MiwgMSwgMjE0LCAxNjgsIDI1MSwgMTkyLCAxLCAyMzYsIDIzLCAyNTEsIAotICAgIDE5MiwgMSwgMjI5LCA2MiwgMjUxLCAxOTIsIDEsIDI1NCwgMjA0LCAyNTEsIDE5MiwgMSwgMjUzLCAxOTUsIDI1MSwgMTkyLCAKLSAgICAxLCAyNTQsIDE0NCwgMjUxLCAxOTIsIDEsIDIyNiwgMjA4LCAyNTEsIDE5MiwgMSwgMjI2LCAxOTMsIDI1MSwgMTkyLCAxLCAKLSAgICAyMzUsIDIyOCwgMjUxLCAxOTIsIDQwLCAxLCAyMjYsIDEwOSwgMjUxLCAxOTIsIDQwLCAxLCAyMTcsIDE1MywgMjUxLCAxOTIsIAotICAgIDQwLCAxLCAyMzUsIDI5LCAyNTEsIDE5MiwgNDAsIDEsIDI0MiwgNjcsIDI1MSwgMTkyLCAxLCAyNDMsIDEsIDI1MSwgMTkyLCAKLSAgICAxLCAyMzMsIDUsIDI1MSwgMTkyLCAxLCAyMDksIDI1MCwgMTAsIDIxOCwgMTA1LCAyMTcsIDE1MywgMTAsIDIxOCwgMTA1LCAKLSAgICAyMTIsIDQsIDEwLCAyMTgsIDEwNSwgMjExLCAxNTgsIDEwLCAyMTgsIDEwNSwgMjUxLCA4NywgMTAsIDIxOCwgMTA1LCAyMTcsIAotICAgIDI1NSwgMTAsIDIxOCwgMTA1LCAyNDAsIDE2NSwgMTAsIDIxOCwgMTA1LCAyNDAsIDE2OSwgMTAsIDIxOCwgMTA1LCAyNDAsIAotICAgIDIzOCwgMTAsIDIxOCwgMTA1LCAyNDAsIDE2NiwgMTAsIDIxOCwgMTA1LCAyMTcsIDE1NiwgMTAsIDIxOCwgMTA1LCAyNDAsIAotICAgIDE2OCwgMTAsIDIxOCwgMTA1LCAyNDAsIDE2NCwgMTAsIDIxOCwgMTA1LCAyNDAsIDIzNiwgMTAsIDIxOCwgMTA1LCAyNDAsIAotICAgIDE2NywgMTAsIDIxOCwgMTA1LCAyNDAsIDE2MywgMTAsIDIxOCwgMTA1LCAyMzAsIDMwLCAxMCwgMjE4LCAxMDUsIDI0MiwgCi0gICAgNjcsIDEwLCAyMTgsIDEwNSwgMjIyLCA5MywgMTAsIDIxOCwgMTA1LCAyMjYsIDEwOSwgMTAsIDIxOCwgMTA1LCAyMTksIDIzLCAKLSAgICAxMCwgMjE4LCAxMDUsIDI0OSwgNjgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNzAsIDEwLCAyMTgsIDEwNSwgMjQxLCAxOTcsIAotICAgIDEwLCAyMTgsIDEwNSwgMjE3LCAxNjUsIDEwLCAyMTgsIDEwNSwgMjE3LCAyMzQsIDEwLCAyMTgsIDEwNSwgMjE4LCAxNzAsIAotICAgIDEwLCAyMTgsIDEwNSwgMjIwLCAxMTIsIDEwLCAyMTgsIDEwNSwgMjI1LCAyMjgsIDEwLCAyMTgsIDEwNSwgMjI0LCAxMDEsIAotICAgIDEwLCAyMTgsIDEwNSwgMjE2LCA0NCwgMTAsIDIxOCwgMTA1LCAyMTcsIDE1NSwgMTAsIDIxOCwgMTA1LCAyMTcsIDI0NSwgCi0gICAgMTAsIDIxOCwgMTA1LCAyNDAsIDE3NywgMTAsIDIxOCwgMTA1LCAyNDAsIDE2MiwgMTAsIDIxOCwgMTA1LCAyMjUsIDE1MiwgCi0gICAgMTAsIDIxOCwgMTA1LCAyMjQsIDk5LCA1NiwgMSwgNCwgMjMzLCAyMjMsIDU2LCAxLCA0LCAyMTksIDE5MywgNTYsIDEsIDQsIAotICAgIDIxOCwgODQsIDU2LCAxLCA0LCAxMTIsIDU2LCAxLCA0LCAyMjcsIDI0MiwgNTYsIDEsIDQsIDE2MiwgNTYsIDEsIDQsIDI0MSwgCi0gICAgMTg3LCA1NiwgMSwgNCwgMjQwLCAyMjksIDU2LCAxLCA0LCAyNDEsIDI0NSwgNTYsIDEsIDQsIDI0MSwgNzUsIDU2LCAxLCA0LCAKLSAgICAyMzAsIDEwNywgNTYsIDEsIDQsIDIwNSwgNTYsIDEsIDQsIDIyMywgMzgsIDU2LCAxLCA0LCAyMjIsIDE0MiwgNTYsIDEsIDQsIAotICAgIDIyMywgMTMxLCA1NiwgMSwgNCwgMjIyLCAyMTMsIDg4LCAyNCwgMjM0LCA2NCwgODgsIDI0LCAyMjgsIDIzMSwgODgsIDI0LCAKLSAgICAyMTYsIDEwMiwgODgsIDI0LCAyMjMsIDI5LCA4OCwgMjQsIDIzMCwgMjIyLCA4OCwgMjQsIDIyNSwgOTgsIDg4LCAyNCwgCi0gICAgMjE5LCAxNTAsIDg4LCAyNCwgMjM2LCA2MywgODgsIDI0LCAyNTAsIDU0LCA4OCwgMjQsIDI1MCwgMTE0LCA4OCwgMjQsIAotICAgIDIzNCwgMTE2LCA4OCwgMjQsIDIxNiwgMTc0LCA4OCwgMjQsIDIyNSwgMTM0LCA4OCwgMjQsIDI0MSwgMTc5LCA4OCwgMjQsIAotICAgIDIzNCwgNjUsIDYxLCA4OCwgMjQsIDIyOCwgMjMyLCA2MSwgODgsIDI0LCAyMTYsIDEwMywgNjEsIDg4LCAyNCwgMjIzLCAzMCwgCi0gICAgNjEsIDg4LCAyNCwgMjMwLCAyMjMsIDYxLCA4OCwgMjQsIDIyNSwgOTksIDYxLCA4OCwgMjQsIDIxOSwgMTUxLCA2MSwgODgsIAotICAgIDI0LCAyMzYsIDY0LCA2MSwgODgsIDI0LCAyNTAsIDU1LCA2MSwgODgsIDI0LCAyNTAsIDExNSwgNjEsIDg4LCAyNCwgMjM0LCAKLSAgICAxMTcsIDYxLCA4OCwgMjQsIDIxNiwgMTc1LCA2MSwgODgsIDI0LCAyMjUsIDEzNSwgNjEsIDg4LCAyNCwgMjQxLCAxODAsIAotICAgIDYxLCA4OCwgMjQsIDI1MCwgNTUsIDY5LCA4OCwgMjM0LCA5LCAxMzUsIDIyNiwgMjIxLCA4OCwgMjM0LCA5LCAxMzUsIDE0NCwgCi0gICAgMjQwLCAyMjksIDg4LCAxNTQsIDExMSwgODgsIDE1NCwgMTA1LCA4OCwgMTU0LCAxNTgsIDg4LCAxNTQsIDE2MSwgODgsIAotICAgIDE1NCwgMTkwLCA4OCwgMTU0LCAxOTUsIDg4LCAxNTQsIDE5OSwgODgsIDE1NCwgMTk2LCA4OCwgMTU0LCAyMDEsIDg4LCAKLSAgICAxNTQsIDIxNiwgMjQ4LCA4OCwgMTU0LCAyMzAsIDEzMywgODgsIDE1NCwgMjQ0LCAxMDQsIDg4LCAxNTQsIDIxMiwgNDAsIAotICAgIDg4LCAxNTQsIDIxMSwgMjE0LCA4OCwgMTU0LCAyMzEsIDQ0LCA4OCwgMTU0LCAyNDUsIDIzMSwgODgsIDE1NCwgMjE4LCAzOCwgCi0gICAgODgsIDE1NCwgMjE4LCAxMzQsIDg4LCAxNTQsIDI0MSwgMjUxLCA4OCwgMTU0LCAyMTksIDU2LCA4OCwgMTU0LCAyMjksIAotICAgIDIwOSwgODgsIDE1NCwgMjE5LCA2LCA4OCwgMTU0LCAyNDQsIDExMCwgODgsIDE1NCwgMjQ5LCAyMDgsIDg4LCAxNTQsIDIzMywgCi0gICAgMTMxLCA4OCwgMTU0LCAyMjMsIDc0LCA4OCwgMTU0LCAyNTEsIDIzLCA4OCwgMTU0LCAyMTgsIDg4LCA4OCwgMTU0LCAyMTgsIAotICAgIDIxLCA4OCwgMTU0LCAyNDUsIDEzNSwgODgsIDE1NCwgMjIzLCA2NiwgODgsIDE1NCwgMjU0LCAxNTksIDg4LCAxNTQsIDI0NCwgCi0gICAgMTM2LCA4OCwgMTU0LCAyMjMsIDY0LCA4OCwgMTU0LCAyMjAsIDE1OCwgODgsIDE1NCwgMjIzLCAxMzAsIDM3LCAxNTQsIAotICAgIDIyNCwgMTUsIDM3LCAxNTQsIDIzNCwgODYsIDM3LCAxNTQsIDIyMSwgMjAwLCAzNywgMTU0LCAyMzQsIDUsIDM3LCA1NCwgCi0gICAgMjE2LCAyNDksIDIyNiwgMjAxLCA4NSwgMjE4LCAyMzYsIDM3LCA1NCwgMjE1LCA3NCwgMjI2LCAyMDEsIDg1LCAyMTgsIAotICAgIDIzNiwgMzcsIDU0LCAyMTYsIDE2NCwgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyNDQsIDI0LCAyMjYsIDIwMSwgCi0gICAgODUsIDIxOCwgMjM2LCAzNywgNTQsIDI0NCwgMTIzLCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAzNywgNTQsIDIxOSwgMTE0LCAKLSAgICAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAzNywgNTQsIDIyMCwgMTE5LCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAzNywgNTQsIAotICAgIDI0NSwgMTkzLCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAyMjUsIDI1NSwgNTAsIDM3LCA1NCwgMjE1LCA3NCwgMTExLCAzNywgCi0gICAgNTQsIDIxNSwgNzQsIDEwNSwgMzcsIDU0LCAyMTUsIDc0LCAxNTgsIDM3LCA1NCwgMjE1LCA3NCwgMTYxLCAzNywgNTQsIAotICAgIDIxNSwgNzQsIDE5MCwgMzcsIDU0LCAyMTUsIDc0LCAxOTUsIDM3LCA1NCwgMjE1LCA3NCwgMTk5LCAzNywgNTQsIDIxNSwgCi0gICAgNzQsIDE5NiwgMzcsIDU0LCAyMTUsIDc0LCAyMDEsIDM3LCA1NCwgMjE2LCAxNjMsIDM3LCA1NCwgMjE2LCAxNjQsIDExMSwgCi0gICAgMzcsIDU0LCAyMTYsIDE2NCwgMTA1LCAzNywgNTQsIDIxNiwgMTY0LCAxNTgsIDM3LCA1NCwgMjE2LCAxNjQsIDE2MSwgMzcsIAotICAgIDU0LCAyMTYsIDE2NCwgMTkwLCAzNywgMjQsIDIzNCwgNjQsIDM3LCAyNCwgMjI4LCAyMzEsIDM3LCAyNCwgMjE2LCAxMDIsIAotICAgIDM3LCAyNCwgMjIzLCAyOSwgMzcsIDI0LCAyMzAsIDIyMiwgMzcsIDI0LCAyMjUsIDk4LCAzNywgMjQsIDIxOSwgMTUwLCAzNywgCi0gICAgMjQsIDIzNiwgNjMsIDM3LCAyNCwgMjUwLCA1NCwgMzcsIDI0LCAyNTAsIDExNCwgMzcsIDI0LCAyMzQsIDExNiwgMzcsIDI0LCAKLSAgICAyMTYsIDE3NCwgMzcsIDI0LCAyMjUsIDEzNCwgMzcsIDI0LCAyNDEsIDE3OSwgMzcsIDI0LCAyMzQsIDY1LCA2MSwgMzcsIAotICAgIDI0LCAyMjgsIDIzMiwgNjEsIDM3LCAyNCwgMjE2LCAxMDMsIDYxLCAzNywgMjQsIDIyMywgMzAsIDYxLCAzNywgMjQsIDIzMCwgCi0gICAgMjIzLCA2MSwgMzcsIDI0LCAyMjUsIDk5LCA2MSwgMzcsIDI0LCAyMTksIDE1MSwgNjEsIDM3LCAyNCwgMjM2LCA2NCwgNjEsIAotICAgIDM3LCAyNCwgMjUwLCA1NSwgNjEsIDM3LCAyNCwgMjUwLCAxMTUsIDYxLCAzNywgMjQsIDIzNCwgMTE3LCA2MSwgMzcsIDI0LCAKLSAgICAyMTYsIDE3NSwgNjEsIDM3LCAyNCwgMjI1LCAxMzUsIDYxLCAzNywgMjQsIDI0MSwgMTgwLCA2MSwgMzcsIDIzNCwgOSwgCi0gICAgMTM1LCAyNTAsIDE1NiwgMzcsIDIzNCwgOSwgMTM1LCAyMzUsIDUzLCAzNywgMjQsIDIzNiwgNjQsIDY5LCAyMzQsIDksIAotICAgIDIxOCwgMTYxLCA4NywgMzcsIDE1NCwgMTExLCAzNywgMTU0LCAxMDUsIDM3LCAxNTQsIDE1OCwgMzcsIDE1NCwgMTYxLCAzNywgCi0gICAgMTU0LCAxOTAsIDM3LCAxNTQsIDE5NSwgMzcsIDE1NCwgMTk5LCAzNywgMTU0LCAxOTYsIDM3LCAxNTQsIDIwMSwgMzcsIAotICAgIDE1NCwgMjE2LCAyNDgsIDM3LCAxNTQsIDIzMCwgMTMzLCAzNywgMTU0LCAyNDQsIDEwNCwgMzcsIDE1NCwgMjEyLCA0MCwgCi0gICAgMzcsIDE1NCwgMjExLCAyMTQsIDM3LCAxNTQsIDIzMSwgNDQsIDM3LCAxNTQsIDI0NSwgMjMxLCAzNywgMTU0LCAyMTgsIDM4LCAKLSAgICAzNywgMTU0LCAyMTgsIDEzNCwgMzcsIDE1NCwgMjQxLCAyNTEsIDM3LCAxNTQsIDIxOSwgNTYsIDM3LCAxNTQsIDIyOSwgCi0gICAgMjA5LCAzNywgMTU0LCAyMTksIDYsIDM3LCAxNTQsIDI0NCwgMTEwLCAzNywgMTU0LCAyNDksIDIwOCwgMzcsIDE1NCwgMjMzLCAKLSAgICAxMzEsIDM3LCAxNTQsIDIyMSwgMTc2LCAzNywgMTU0LCAyMzEsIDE5NCwgMzcsIDE1NCwgMjQ0LCAxNDUsIDM3LCAxNTQsIAotICAgIDIxOCwgNTAsIDM3LCAxNTQsIDI0NSwgNDIsIDM3LCAxNTQsIDIyNCwgMTkwLCAzNywgMTU0LCAyNTMsIDIwNCwgMzcsIDE1NCwgCi0gICAgMjM1LCAxNjUsIDM3LCAxNTQsIDIyMywgNjQsIDM3LCAxNTQsIDI0OSwgMTcyLCAzNywgMTU0LCAyNDksIDE2MywgMzcsIAotICAgIDE1NCwgMjQxLCAxNzIsIDM3LCAxNTQsIDI1MCwgMTgyLCAzNywgMTU0LCAyMzIsIDExNiwgMzcsIDE1NCwgMjMzLCA1MiwgCi0gICAgMzcsIDE1NCwgMjIyLCAyNTQsIDM3LCAxNTQsIDIzMSwgODgsIDM3LCAxNTQsIDIyMywgOTAsIDM3LCAxNTQsIDIxOCwgODgsIAotICAgIDM3LCAxNTQsIDIxOCwgMjEsIDM3LCAxNTQsIDI0NSwgMTM1LCAzNywgMTU0LCAyMjMsIDY2LCAzNywgMTU0LCAyNTQsIDE1OSwgCi0gICAgMzcsIDE1NCwgMjI4LCAyMTcsIDM3LCA1NCwgMjE2LCAxNjQsIDE5NSwgMzcsIDU0LCAyMTYsIDE2NCwgMTk5LCAzNywgNTQsIAotICAgIDIxNiwgMTY0LCAxOTYsIDM3LCA1NCwgMjE2LCAxNjQsIDIwMSwgMzcsIDU0LCAyNDQsIDIzLCAzNywgNTQsIDI0NCwgMjQsIAotICAgIDExMSwgMzcsIDU0LCAyNDQsIDI0LCAxMDUsIDM3LCA1NCwgMjQ0LCAyNCwgMTU4LCAzNywgNTQsIDI0NCwgMjQsIDE2MSwgCi0gICAgMzcsIDU0LCAyNDQsIDI0LCAxOTAsIDM3LCA1NCwgMjQ0LCAyNCwgMTk1LCAzNywgNTQsIDI0NCwgMjQsIDE5OSwgMzcsIDU0LCAKLSAgICAyNDQsIDI0LCAxOTYsIDM3LCA1NCwgMjQ0LCAyNCwgMjAxLCAzNywgNTQsIDI0NCwgMTIyLCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyMzUsIDEzOSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ0LCAxNTYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIzMSwgCi0gICAgMTY1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNTQsIDU1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMzEsIDEzNywgMTEwLCAKLSAgICAyMTcsIDQsIDE2LCAzMSwgMjM1LCA1MSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjM1LCA1MiwgMTEwLCAyMTcsIDQsIDE2LCAKLSAgICAzMSwgMjUzLCAxOTYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIyMCwgMTM4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMjYsIAotICAgIDI0MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjI4LCA0NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCA5MywgNDIsIDI0MSwgCi0gICAgMTk3LCA0MiwgMjQ1LCA5NiwgNDIsIDI0NSwgNTEsIDIzMiwgMjI1LCAyMzIsIDI0NiwgNTAsIDM3LCA1NiwgNjEsIDM3LCAKLSAgICA1NiwgNzQsIDM3LCA1NiwgNjksIDM3LCA1NiwgNzYsIDM3LCA1NiwgNzgsIDM3LCA1NiwgMTc2LCAzNywgNTYsIDIzNCwgOTgsIAotICAgIDM3LCA1NiwgMjMzLCAyMjMsIDM3LCA1NiwgMjM0LCAxODgsIDM3LCA1NiwgMjM0LCAzNCwgMzcsIDU2LCAyMDYsIDM3LCA1NiwgCi0gICAgMjE5LCAxOTMsIDM3LCA1NiwgMjE4LCA4NCwgMzcsIDU2LCAyMjEsIDE4MywgMzcsIDU2LCAyMTksIDYwLCAzNywgNTYsIAotICAgIDIxNywgMTA2LCAzNywgNTYsIDIxNiwgMTE4LCAzNywgNTYsIDIxNSwgMTE5LCAzNywgNTYsIDIxNywgMjMsIDM3LCA1NiwgCi0gICAgMTEyLCAzNywgNTYsIDE5OCwgMzcsIDU2LCAyMjgsIDIzOCwgMzcsIDU2LCAyMjcsIDI0MiwgMzcsIDU2LCAyMjksIDExMiwgCi0gICAgMzcsIDU2LCAyMjgsIDc5LCAzNywgNTYsIDE2MiwgMzcsIDU2LCAyNDEsIDE4NywgMzcsIDU2LCAyNDAsIDIyOSwgMzcsIDU2LCAKLSAgICAyNDEsIDI0NSwgMzcsIDU2LCAyNDEsIDc1LCAzNywgNTYsIDE4NiwgMzcsIDU2LCAyMzAsIDIzNSwgMzcsIDU2LCAyMzAsIAotICAgIDEwNywgMzcsIDU2LCAyMzEsIDk2LCAzNywgNTYsIDIzMCwgMTY2LCAzNywgNTYsIDE5MiwgMzcsIDU2LCAyMTAsIDIxMiwgCi0gICAgMzcsIDU2LCAyMTAsIDI0NCwgMzcsIDU2LCAyMDUsIDM3LCA1NiwgMjIzLCAzOCwgMzcsIDU2LCAyMjIsIDE0MiwgMzcsIDU2LCAKLSAgICAyMjMsIDEzMSwgMzcsIDU2LCAyMjIsIDIxMywgMzcsIDU2LCAyMTIsIDY1LCAzNywgNTYsIDIxMSwgMjUwLCAzNywgNTYsIAotICAgIDIxMiwgMjIsIDM3LCA1NiwgMjExLCAyMjcsIDQyLCAyNTQsIDc5LCA0MiwgMjUzLCAyNDcsIDQyLCAyNTQsIDEwMywgNDIsIAotICAgIDI1NSwgNDAsIDQyLCAyMzUsIDIzMywgNDIsIDIzNSwgMjAzLCA0MiwgMjE0LCAxNjYsIDQyLCAyNDUsIDc0LCA0MiwgMjQ1LCAKLSAgICAyMTQsIDQyLCAyMjYsIDE5MCwgNDIsIDIyNiwgMTg0LCA0MiwgMjM0LCAyNTEsIDQyLCAyMzQsIDIyMCwgNDIsIDIzNCwgCi0gICAgMjE3LCA0MiwgMjQzLCA5OSwgNDIsIDI0MywgMTA4LCA0MiwgMjQyLCAyMTEsIDQyLCAyNDIsIDIwNywgNDIsIDIzMywgMTU2LCAKLSAgICA0MiwgMjQyLCAyMDAsIDQyLCAyMzQsIDc4LCA0MiwgMjM0LCA3NywgNDIsIDIzNCwgNzYsIDQyLCAyMzQsIDc1LCA0MiwgCi0gICAgMjQyLCA5MywgNDIsIDI0MiwgOTIsIDQyLCAyMzMsIDE5OSwgNDIsIDIzMywgMjAxLCA0MiwgMjM0LCAxODQsIDQyLCAyMzQsIAotICAgIDcsIDQyLCAyMzQsIDE0LCA0MiwgMjIyLCAxOCwgNDIsIDIyMSwgMjM5LCA0MiwgMjE5LCAxMzEsIDQyLCAyMjAsIDE0MywgCi0gICAgNDIsIDIyMCwgMTQyLCA0MiwgMjQ4LCAyMjYsIDQyLCAyNDgsIDQ0LCA0MiwgMjQ3LCAxMjksIDQyLCAyMTYsIDMzLCA0MiwgCi0gICAgMjI5LCAyMDUsIDQyLCAyMjgsIDQ2LCA0MiwgMjQyLCAzOSwgNDIsIDIyNiwgODgsIDQyLCAyMjYsIDg3LCA0MiwgMjUyLCAKLSAgICAxOTYsIDQyLCAyMjUsIDEwOCwgNDIsIDIyNSwgNzIsIDQyLCAyMjUsIDczLCA0MiwgMjUxLCAyNDIsIDQyLCAyNDAsIDIyOCwgCi0gICAgNDIsIDI0MCwgMjI0LCA0MiwgMjUxLCA5OSwgNDIsIDI0MCwgMjExLCA0MiwgMjQxLCAyMjIsIDQyLCAyMjUsIDE2MiwgNDIsIAotICAgIDIyNSwgMTk3LCA0MiwgMjQxLCAyMDUsIDQyLCAyMjUsIDE5NCwgNDIsIDIyNSwgMjEwLCA0MiwgMjUyLCA2OSwgNDIsIDIyNSwgCi0gICAgOSwgNDIsIDI1MSwgMTg4LCA0MiwgMjQxLCA2MywgNDIsIDIyNCwgMjUzLCA0MiwgMjQxLCA1NSwgNDIsIDI0MSwgNTcsIDQyLCAKLSAgICAyMzEsIDIwNiwgNDIsIDIzMSwgMjAyLCA0MiwgMjMxLCAyMTEsIDQyLCAyMzEsIDE1NSwgNDIsIDIzMSwgMTgwLCA0MiwgCi0gICAgMjMwLCAyMDIsIDQyLCAyMzAsIDE4MSwgNDIsIDIzMCwgMTgwLCA0MiwgMjMxLCA3OSwgNDIsIDIzMSwgNzYsIDQyLCAyMzEsIAotICAgIDgwLCA0MiwgMjExLCAxMDIsIDQyLCAyMTEsIDEwMCwgNDIsIDIxMCwgMjAxLCA0MiwgMjIyLCAyMjksIDQyLCAyMjIsIDIzMywgCi0gICAgNDIsIDIyMiwgMTE5LCA0MiwgMjIyLCAxMTMsIDQyLCAyMjMsIDg4LCA0MiwgMjIzLCA4NSwgNDIsIDIxMiwgMzgsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTAsIDg2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTExLCAKLSAgICAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTA1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTU4LCAKLSAgICAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTYxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTkwLCAKLSAgICAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTk1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTk5LCAKLSAgICAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjAxLCAKLSAgICAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjE2LCAyNDgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAKLSAgICAyNDUsIDE3NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNSwgNzYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIAotICAgIDI0MCwgMjQ2LCAyMTYsIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDI0NCwgMTMsIDExMCwgMjE3LCA0LCAKLSAgICAxNiwgMzEsIDI0MCwgMjQ2LCAyNDQsIDEyNiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxOSwgMTIxLCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjIwLCAxMjEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyNDUsIAotICAgIDE5OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIyOCwgMjAyLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIAotICAgIDI0NiwgMjE1LCA3MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNSwgNjcsIDExMCwgMjE3LCA0LCAxNiwgCi0gICAgMzEsIDI0MCwgMjQ2LCAyMTUsIDYzLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjE1LCA2NCwgMTEwLCAyMTcsIAotICAgIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNSwgNjksIDQyLCAyNDAsIDIzNywgNDIsIDI0OCwgMjI5LCA0MiwgMjUzLCAyMDAsIAotICAgIDQyLCAxMzAsIDQyLCAyMjYsIDEyOSwgNDIsIDIyNSwgMjI5LCA0MiwgMjQ3LCAxNTUsIDQyLCAyNDcsIDE1NiwgMjE4LCAKLSAgICAyMzUsIDQyLCAyNDcsIDE1NiwgMjQ5LCAxMTYsIDQyLCAyMzUsIDE2MiwgNDIsIDI0NSwgOTksIDIyOSwgMjEwLCAyNDEsIAotICAgIDIyMywgNDIsIDI0NSwgOTksIDIyOSwgMjEwLCAyMTcsIDE3NSwgNDIsIDI0NSwgOTksIDIyOSwgMjEwLCAyMTcsIDc1LCA0MiwgCi0gICAgMjQ1LCA5OSwgMjI5LCAyMTAsIDIzMSwgNzUsIDQyLCAyNDksIDE2NSwgNDIsIDIyNiwgOTQsIDI1NCwgMTMzLCA0MiwgMTk4LCAKLSAgICA0MiwgMjMwLCAxMDgsIDYxLCA0MiwgMTg2LCA0MiwgMTc2LCA0MiwgMjM0LCAxOTEsIDQyLCAyMzEsIDEzNCwgNDIsIDI0MywgCi0gICAgODcsIDQyLCAyNTEsIDI2LCA0MiwgMjM0LCAxOTAsIDQyLCAyMjUsIDE1MywgNDIsIDIyOSwgODYsIDQyLCAyMzAsIDEwOCwgCi0gICAgMjQ1LCAxNCwgNDIsIDIzMCwgMTA4LCAyNDMsIDIwOSwgNDIsIDIzMSwgMjAsIDQyLCAyMzQsIDE0MCwgNDIsIDI0MCwgMTcwLCAKLSAgICA0MiwgMjM0LCAxMDAsIDQyLCAyMzAsIDIzNywgNDIsIDI0MiwgMjIzLCA0MiwgMjE2LCAxMjAsIDQyLCAyMzAsIDEwOCwgCi0gICAgMTU2LCA0MiwgMjMwLCAxNzQsIDQyLCAyNDcsIDE2NSwgNDIsIDIzNCwgNDYsIDQyLCAyNDQsIDUzLCA0MiwgMjI4LCAxMTcsIAotICAgIDQyLCAyMzAsIDEwOCwgMTk0LCA0MiwgMjMwLCAxNzEsIDQyLCAyNDksIDI0NywgNDIsIDIzNCwgNDAsIDQyLCAyMzAsIDE3MiwgCi0gICAgMjE4LCAyMzUsIDQyLCAyNDksIDI0OCwgMjE4LCAyMzUsIDQyLCAyMzIsIDU1LCAyMTgsIDIzNSwgNDIsIDIzNCwgNDEsIAotICAgIDIxOCwgMjM1LCA0MiwgMjMwLCAxNzIsIDI0OSwgMTE2LCA0MiwgMjQ5LCAyNDgsIDI0OSwgMTE2LCA0MiwgMjMyLCA1NSwgCi0gICAgMjQ5LCAxMTYsIDQyLCAyMzQsIDQxLCAyNDksIDExNiwgNDIsIDIzMiwgNTUsIDExNSwgMjIyLCA5MywgNDIsIDIzMiwgNTUsIAotICAgIDExNSwgMjIyLCA5NCwgMjE4LCAyMzUsIDQyLCAxOTEsIDQyLCAyMzQsIDEsIDQyLCAyMzAsIDExMCwgNDIsIDI0MiwgMTU4LCAKLSAgICA0MiwgMjIzLCAxNzksIDQyLCAyMjMsIDE4MCwgMTE1LCAyMjIsIDkzLCA0MiwgMjIzLCAxODAsIDExNSwgMjIyLCA5NCwgCi0gICAgMjE4LCAyMzUsIDQyLCAyMjQsIDE2NSwgNDIsIDIyOCwgMTgsIDQyLCAyMzAsIDEwOCwgMjIyLCA5MywgNDIsIDIzMCwgMTA5LCAKLSAgICA0MiwgMjI0LCAxMTksIDQyLCAyMjcsIDE4MCwgNDIsIDIzMCwgMTA4LCAyMTQsIDEwNSwgNDIsIDIzMCwgNTQsIDQyLCAyMzMsIAotICAgIDE5MSwgNDIsIDIzMCwgNTUsIDIzMSwgNzksIDQyLCAyMjQsIDExOCwgNDIsIDIyNywgMTc5LCA0MiwgMjMwLCAxMDgsIDIxMiwgCi0gICAgOTgsIDQyLCAyMzAsIDQ4LCA0MiwgMjMzLCAxODksIDQyLCAyMzAsIDQ5LCAyMzEsIDc5LCA0MiwgMjM1LCAzMCwgMjI2LCAKLSAgICAyMjQsIDQyLCAyMzIsIDU1LCAyMjYsIDIyNCwgNDIsIDI1NCwgMTQ0LCA0MiwgMjUxLCAxNjgsIDQyLCAyNTAsIDIyMiwgNDIsIAotICAgIDI1MCwgMTk5LCA0MiwgMjUxLCA3NSwgMTE1LCAyMzQsIDE0MCwgNDIsIDI0OSwgMjQ2LCA0MiwgMjQ4LCAxNTAsIDQyLCAKLSAgICAyNDIsIDc5LCA0MiwgMTYyLCA0MiwgMjQwLCAyMzgsIDQyLCAyMzYsIDYsIDQyLCAyMzQsIDUzLCA0MiwgMjM0LCA0MSwgCi0gICAgMjUxLCAyLCA0MiwgMjMzLCAyMjUsIDQyLCAyMzIsIDE2NSwgNDIsIDIzMiwgMTY0LCA0MiwgMjMyLCAxNTMsIDQyLCAyMzIsIAotICAgIDY4LCA0MiwgMjMxLCAxMzUsIDIxOSwgODEsIDQyLCAyMzAsIDIwMSwgNDIsIDIzMCwgMTU3LCA0MiwgMjI1LCAxNTEsIDQyLCAKLSAgICAyMjUsIDIyLCA0MiwgMjI0LCAyMjIsIDQyLCAyMjQsIDIyMCwgNDIsIDIxOCwgMjI5LCA0MiwgMjE4LCAzLCA0MiwgMjEyLCAKLSAgICAyNCwgNDIsIDIxNCwgMTA2LCAxMTUsIDE5NCwgNDIsIDExNiwgMTE1LCAxOTQsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAxMTEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAxMDUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAxNTgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAxNjEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAxOTAsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAxOTUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAxOTksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAxOTYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAyMDEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTYsIDI0OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgCi0gICAgMjQ4LCAxNTQsIDI0NSwgMTc1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA3NiwgMTEwLCAyMTcsIDQsIAotICAgIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNiwgMTY1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjQ0LCAxMywgMTEwLCAKLSAgICAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDI0NCwgMTI2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE5LCAKLSAgICAxMjEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMjAsIDEyMSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAKLSAgICAxNTQsIDI0NSwgMTk4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjI4LCAyMDIsIDExMCwgMjE3LCA0LCAxNiwgCi0gICAgMzEsIDI0OCwgMTU0LCAyMTUsIDczLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NywgMTEwLCAyMTcsIAotICAgIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDY0LCAKLSAgICAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2OSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIAotICAgIDIxNSwgNzAsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDY1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAKLSAgICAyNDgsIDE1NCwgMjE1LCA2NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNzIsIDExMCwgMjE3LCA0LCAKLSAgICAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDY4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAxNjMsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTYsIDE2MiwgNDIsIDI0MywgMTI1LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAKLSAgICAyNDksIDE0OCwgMjQxLCAyMzAsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIyMywgMTI1LCAyNDUsIDIzMSwgMjQxLCAxOTksIAotICAgIDMxLCAyNDcsIDIzOSwgMjUzLCAyMTUsIDIxNiwgMTk3LCAyNTIsIDY0LCAyNDEsIDE5OSwgMzEsIDIxMCwgMjIzLCAyNDQsIAotICAgIDQ2LCAyNDEsIDE5OSwgMzEsIDIxMiwgNTksIDI0MSwgMTk5LCAzMSwgMjQ5LCAyMTEsIDI0MSwgMTk5LCAzMSwgMjE2LCAKLSAgICAxOTcsIDI1NCwgMTEsIDI0MSwgMTk5LCAzMSwgMjQxLCA2NywgMjE2LCAzOSwgMjQxLCAxOTksIDMxLCA0LCAyMTcsIDYyLCAKLSAgICAyNDEsIDE5OSwgMzEsIDIxNSwgMjM4LCAyNDEsIDE5OSwgMzEsIDIyNSwgMjIyLCAyNDEsIDE5OSwgMzEsIDIxOCwgMTYwLCAKLSAgICAyNDEsIDE5OSwgMzEsIDI0NCwgMTQ3LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTM5LCAyMjQsIDI0MywgMjQxLCAxOTksIDMxLCAKLSAgICAyMzAsIDE2MCwgMjQxLCAxOTksIDMxLCAyNDUsIDEzNCwgMjQxLCAxOTksIDMxLCAyNDQsIDQ3LCAyNDEsIDE5OSwgMzEsIAotICAgIDIxMSwgMjA3LCAyMjYsIDIwMSwgMjE2LCAxOTcsIDI0OCwgOTQsIDI0MSwgMTk5LCAzMSwgMjU0LCA1OSwgMjQxLCAxOTksIAotICAgIDMxLCAyNDksIDE5MywgMjQxLCAxOTksIDMxLCAyNTEsIDIzNSwgMjE2LCAxMzksIDI0MSwgMTk5LCAzMSwgMjQyLCAxNTYsIAotICAgIDI0MSwgMTk5LCAzMSwgMjE4LCAyNDcsIDI1NCwgNzgsIDI0MSwgMTk5LCAzMSwgMjIzLCA1NiwgMjQxLCAxOTksIDMxLCAKLSAgICAyMzUsIDIyNywgMjQxLCAxOTksIDMxLCAyNDIsIDEzOSwgMjE3LCA2MiwgMjQxLCAxOTksIDMxLCAyMzAsIDExNiwgMjQ5LCAKLSAgICAxNjcsIDI0MSwgMTk5LCAzMSwgMjQyLCAxMzksIDIyNCwgMjAwLCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyNTUsIDI3LCAKLSAgICAyMTIsIDQwLCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyNTAsIDE2LCAyNDQsIDEwNCwgMjQxLCAxOTksIDMxLCAyMzUsIAotICAgIDI0MCwgMjQxLCAxOTksIDMxLCAyNDYsIDY1LCAyNDEsIDE5OSwgMzEsIDIyMywgNTksIDI0MSwgMTk5LCAzMSwgMjQyLCAKLSAgICAxMzksIDIyNCwgMjI3LCAyNDEsIDE5OSwgMzEsIDIyNCwgMTgwLCAyNDEsIDE5OSwgMzEsIDI0OCwgMTY5LCA2NCwgMjE2LCAKLSAgICAxOTcsIDIzMiwgMjM2LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyNDQsIDE4MiwgMjQxLCAxOTksIDMxLCAyMjYsIDE2NywgCi0gICAgMjQxLCAxOTksIDMxLCAyMjYsIDI0OCwgMjQxLCAxOTksIDMxLCAyNDgsIDY3LCAyNDEsIDE5OSwgMzEsIDI0OCwgODcsIAotICAgIDI0MSwgMTk5LCAzMSwgMjM1LCAyNTQsIDI0MSwgMTk5LCAzMSwgMjUxLCAxNTcsIDI0MSwgMTk5LCAzMSwgMjQ5LCAyMjksIAotICAgIDIxNiwgNDMsIDIzMSwgODEsIDI0MSwgMTk5LCAzMSwgMjQzLCA5NCwgMjE2LCAzOSwgMjQxLCAxOTksIDMxLCAyMjQsIDEyOCwgCi0gICAgMjE0LCAxNTQsIDI0MSwgMTk5LCAzMSwgMjI2LCAxNjYsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIxMiwgMTMsIDI0MSwgCi0gICAgMTk5LCAzMSwgMjIzLCA0OCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjUwLCAyMjgsIDI0MSwgMTk5LCAzMSwgMjE2LCAKLSAgICAxOTcsIDI1NCwgNywgMjE2LCAxMzQsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIzNCwgMTg1LCAyMTgsIDEzNiwgMjMwLCAKLSAgICAxMjAsIDI0MSwgMTk5LCAzMSwgMjQ4LCA0MCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjMxLCAxNTcsIDIzMSwgMjA3LCAKLSAgICAyNDEsIDE5OSwgMzEsIDI1NSwgMjgsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIxMiwgNTQsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjE2LCAxOTcsIDI0MywgNTQsIDIxMSwgMjM5LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMzUsIDU4LCAyMzMsIDExMywgCi0gICAgMjQxLCAxOTksIDMxLCAyNDcsIDE5MiwgMjQxLCAxOTksIDMxLCAyMzIsIDIyNiwgMjQxLCAxOTksIDMxLCAyMzUsIDIzMCwgCi0gICAgMjE1LCAxODgsIDI0MSwgMTk5LCAzMSwgNCwgMjI0LCAyMDAsIDI0MSwgMTk5LCAzMSwgMjU0LCAyMjYsIDI0OSwgMjIwLCAKLSAgICAyNDEsIDE5OSwgMzEsIDI1MiwgNjcsIDI0OSwgMjIwLCA4LCAzLCAyMzUsIDE2NiwgOCwgMywgMjM1LCAxNTksIDgsIDMsIAotICAgIDc0LCA4LCAzLCAyMzUsIDE4OSwgOCwgMywgMjM2LCA2NSwgOCwgMywgMjM2LCA0OCwgOCwgMywgMjM2LCA2NywgOCwgMywgCi0gICAgMjM2LCA2NiwgOCwgMywgMjUzLCAyMTQsIDgsIDMsIDI1MywgMTc3LCA4LCAzLCA2MSwgOCwgMywgMjU0LCA4MCwgOCwgMywgCi0gICAgMjE0LCAxNjQsIDgsIDMsIDIxNCwgMTY3LCA4LCAzLCAyMTQsIDE2NSwgOCwgMywgMjI2LCAxNDQsIDgsIDMsIDIyNiwgMTE4LCAKLSAgICA4LCAzLCA3OCwgOCwgMywgMjI2LCAxNzksIDgsIDMsIDI0NSwgNDMsIDgsIDMsIDc2LCA4LCAzLCAyMTEsIDE5NSwgOCwgMywgCi0gICAgMjUxLCAyMzYsIDgsIDMsIDI1MSwgMjMzLCA4LCAzLCAyNTIsIDE0LCA4LCAzLCAyNTEsIDI0NiwgOCwgMywgMjUyLCAzLCA4LCAKLSAgICAzLCAyNTIsIDIsIDgsIDMsIDI1MiwgNSwgOCwgMywgMjUyLCA0LCA4LCAzLCAyNTIsIDEyOSwgOCwgMywgMjUyLCAxMjEsIDgsIAotICAgIDMsIDI1MiwgMTk5LCA4LCAzLCAyNTIsIDE1MCwgOCwgMywgMjUxLCAxMDksIDgsIDMsIDI1MSwgMTEzLCA4LCAzLCAyNTEsIAotICAgIDExMCwgOCwgMywgMjUxLCAxODcsIDgsIDMsIDI1MSwgMTcxLCA4LCAzLCAyNTEsIDIxMywgOCwgMywgMjUxLCAxOTMsIDgsIAotICAgIDMsIDI1MiwgMjksIDgsIDMsIDI1MiwgODMsIDgsIDMsIDI1MiwgNDEsIDgsIDMsIDI1MSwgOTUsIDgsIDMsIDI1MSwgOTIsIAotICAgIDgsIDMsIDI1MSwgMTMzLCA4LCAzLCAyNTEsIDEwOCwgOCwgMywgMjUxLCAxMDIsIDgsIDMsIDI1MSwgMTA2LCA4LCAzLCAKLSAgICAyNTEsIDgwLCA4LCAzLCAyNTEsIDc4LCA4LCAzLCAyNTEsIDg1LCA4LCAzLCAyNTEsIDgzLCA4LCAzLCAyNTEsIDgxLCA4LCAKLSAgICAzLCAyNTEsIDgyLCA4LCAzLCAyMjUsIDUyLCA4LCAzLCAyMjUsIDQ4LCA4LCAzLCAyMjUsIDExMSwgOCwgMywgMjI1LCA2MiwgCi0gICAgOCwgMywgMjI1LCA3OCwgOCwgMywgMjI1LCAxMDUsIDgsIDMsIDIyNSwgMTAxLCA4LCAzLCAyMjUsIDI0NCwgOCwgMywgMjI1LCAKLSAgICAyMzQsIDgsIDMsIDE5MSwgOCwgMywgMjI2LCAyNSwgOCwgMywgMjI0LCAxMzgsIDgsIDMsIDIyNCwgMTQwLCA4LCAzLCAyMjQsIAotICAgIDEzOSwgOCwgMywgMjI0LCAyMzYsIDgsIDMsIDIyNCwgMjI1LCA4LCAzLCAyMjUsIDE5LCA4LCAzLCAyMjQsIDI0OCwgOCwgMywgCi0gICAgMjI0LCAxMjQsIDgsIDMsIDIyNCwgMTIwLCA4LCAzLCAyMjQsIDE1MywgOCwgMywgMjI0LCAxMzcsIDgsIDMsIDIyNCwgMTI5LCAKLSAgICA4LCAzLCAyMjQsIDEzNSwgOCwgMywgMjI0LCAxMDMsIDgsIDMsIDIyNCwgMTAyLCA4LCAzLCAyMjQsIDEwNywgOCwgMywgCi0gICAgMjI0LCAxMDYsIDgsIDMsIDIyNCwgMTA0LCA4LCAzLCAyMjQsIDEwNSwgOCwgMywgMjUyLCAxMDQsIDgsIDMsIDI1MiwgMTAzLCAKLSAgICA4LCAzLCAyNTIsIDExMCwgOCwgMywgMjUyLCAxMDUsIDgsIDMsIDI1MiwgMTA3LCA4LCAzLCAyNTIsIDEwNiwgOCwgMywgCi0gICAgMjUyLCAxMDksIDgsIDMsIDI1MiwgMTA4LCA4LCAzLCAyNTIsIDExNiwgOCwgMywgMjUyLCAxMTUsIDgsIDMsIDI1MiwgMTE5LCAKLSAgICA4LCAzLCAyNTIsIDExNywgOCwgMywgMjUyLCA5NSwgOCwgMywgMjUyLCA5NywgOCwgMywgMjUyLCA5NiwgOCwgMywgMjUyLCAKLSAgICAxMDAsIDgsIDMsIDI1MiwgOTksIDgsIDMsIDI1MiwgMTAyLCA4LCAzLCAyNTIsIDEwMSwgOCwgMywgMjUyLCAxMTEsIDgsIDMsIAotICAgIDI1MiwgMTE0LCA4LCAzLCAyNTIsIDExMiwgOCwgMywgMjUyLCA5MSwgOCwgMywgMjUyLCA5MCwgOCwgMywgMjUyLCA5OCwgOCwgCi0gICAgMywgMjUyLCA5NCwgOCwgMywgMjUyLCA5MiwgOCwgMywgMjUyLCA5MywgOCwgMywgMjUyLCA4NywgOCwgMywgMjUyLCA4NiwgCi0gICAgOCwgMywgMjUyLCA4OSwgOCwgMywgMjUyLCA4OCwgOCwgMywgMjI5LCAxNzQsIDgsIDMsIDIyOSwgMTczLCA4LCAzLCAyMjksIAotICAgIDE3OSwgOCwgMywgMjI5LCAxNzUsIDgsIDMsIDIyOSwgMTc2LCA4LCAzLCAyMjksIDE3OCwgOCwgMywgMjI5LCAxNzcsIDgsIAotICAgIDMsIDIyOSwgMTgyLCA4LCAzLCAyMjksIDE4MSwgOCwgMywgMjI5LCAxODQsIDgsIDMsIDIyOSwgMTgzLCA4LCAzLCAyMjksIAotICAgIDE3MCwgOCwgMywgMjI5LCAxNjksIDgsIDMsIDIyOSwgMTcyLCA4LCAzLCAyMjksIDE3MSwgOCwgMywgMjI5LCAxNjMsIDgsIAotICAgIDMsIDIyOSwgMTYyLCA4LCAzLCAyMjksIDE2NywgOCwgMywgMjI5LCAxNjYsIDgsIDMsIDIyOSwgMTY0LCA4LCAzLCAyMjksIAotICAgIDE2NSwgOCwgMywgMjI5LCAxNTcsIDgsIDMsIDIyOSwgMTU2LCA4LCAzLCAyMjksIDE2MSwgOCwgMywgMjI5LCAxNjAsIDgsIAotICAgIDMsIDIyOSwgMTU4LCA4LCAzLCAyMjksIDE1OSwgOCwgMywgMjQxLCAxMTcsIDgsIDMsIDI0MSwgMTE2LCA4LCAzLCAyNDEsIAotICAgIDEyMiwgOCwgMywgMjQxLCAxMTgsIDgsIDMsIDI0MSwgMTE5LCA4LCAzLCAyNDEsIDEyMSwgOCwgMywgMjQxLCAxMjAsIDgsIAotICAgIDMsIDI0MSwgMTI1LCA4LCAzLCAyNDEsIDEyNCwgOCwgMywgMjQxLCAxMjcsIDgsIDMsIDI0MSwgMTI2LCA4LCAzLCAyNDEsIAotICAgIDEwOCwgOCwgMywgMjQxLCAxMTAsIDgsIDMsIDI0MSwgMTA5LCA4LCAzLCAyNDEsIDExMywgOCwgMywgMjQxLCAxMTIsIDgsIAotICAgIDMsIDI0MSwgMTE1LCA4LCAzLCAyNDEsIDExNCwgOCwgMywgMjQxLCAxMDQsIDgsIDMsIDI0MSwgMTAzLCA4LCAzLCAyNDEsIAotICAgIDExMSwgOCwgMywgMjQxLCAxMDcsIDgsIDMsIDI0MSwgMTA1LCA4LCAzLCAyNDEsIDEwNiwgOCwgMywgMjQxLCA5OCwgOCwgMywgCi0gICAgMjQxLCAxMDIsIDgsIDMsIDI0MSwgMTAxLCA4LCAzLCAyNDEsIDk5LCA4LCAzLCAyNDEsIDEwMCwgOCwgMywgMjMwLCAxNzcsIAotICAgIDgsIDMsIDIzMCwgMTc2LCA4LCAzLCAyMzAsIDIzNSwgOCwgMywgMjMwLCAxODMsIDgsIDMsIDIzMCwgMjA4LCA4LCAzLCAKLSAgICAyMzAsIDIyNiwgOCwgMywgMjMwLCAyMjQsIDgsIDMsIDIzMSwgMTQ0LCA4LCAzLCAyMzEsIDEzOSwgOCwgMywgMTg2LCA4LCAKLSAgICAzLCAyMzEsIDE3NywgOCwgMywgMjMwLCA3OSwgOCwgMywgMjMwLCA3OCwgOCwgMywgMjMwLCA4MiwgOCwgMywgMjMwLCA4MCwgCi0gICAgOCwgMywgMjMwLCAxMjYsIDgsIDMsIDIzMCwgMTEyLCA4LCAzLCAyMzAsIDE2NiwgOCwgMywgMjMwLCAxMzEsIDgsIDMsIAotICAgIDIzMSwgMzEsIDgsIDMsIDIzMSwgOTYsIDgsIDMsIDIzMCwgNjAsIDgsIDMsIDIzMCwgNTYsIDgsIDMsIDIzMCwgMTA3LCA4LCAKLSAgICAzLCAyMzAsIDc1LCA4LCAzLCAyMzAsIDY4LCA4LCAzLCAyMzAsIDczLCA4LCAzLCAyMzAsIDMzLCA4LCAzLCAyMzAsIDMyLCAKLSAgICA4LCAzLCAyMzAsIDM4LCA4LCAzLCAyMzAsIDM1LCA4LCAzLCAyNDQsIDkxLCA4LCAzLCAyNDQsIDg2LCA4LCAzLCAyNDQsIAotICAgIDEyOSwgOCwgMywgMjQ0LCAxMDYsIDgsIDMsIDI0NCwgMTc1LCA4LCAzLCAyNDQsIDE2NiwgOCwgMywgMjQ0LCAyMDQsIDgsIAotICAgIDMsIDI0NCwgMTc4LCA4LCAzLCAyNDQsIDExLCA4LCAzLCAyNDQsIDUxLCA4LCAzLCAyNDQsIDM1LCA4LCAzLCAyNDMsIDIyNSwgCi0gICAgOCwgMywgMjQzLCAyMjQsIDgsIDMsIDI0MywgMjQxLCA4LCAzLCAyNDMsIDIzMCwgOCwgMywgMjQzLCAyMjgsIDgsIDMsIAotICAgIDI0MywgMjI5LCA4LCAzLCAyNDMsIDIxMiwgOCwgMywgMjQzLCAyMTEsIDgsIDMsIDI0MywgMjE1LCA4LCAzLCAyNDMsIDIxMywgCi0gICAgOCwgMywgMjEzLCAxNDQsIDgsIDMsIDIxMywgMTM5LCA4LCAzLCAyMTMsIDE3NiwgOCwgMywgMjEzLCAxNTMsIDgsIDMsIAotICAgIDIxMywgMTY2LCA4LCAzLCAyMTMsIDE2MywgOCwgMywgMjEzLCAxNjgsIDgsIDMsIDIxMywgMTY3LCA4LCAzLCAyMTQsIDcsIAotICAgIDgsIDMsIDIxNCwgMiwgOCwgMywgMjE0LCAyNywgOCwgMywgMjE0LCAxOCwgOCwgMywgMjEzLCAxMjUsIDgsIDMsIDIxMywgCi0gICAgMTIxLCA4LCAzLCAyMTMsIDEzOCwgOCwgMywgMjEzLCAxMjYsIDgsIDMsIDIxMywgMTc4LCA4LCAzLCAyMTMsIDI0NCwgOCwgCi0gICAgMywgMjEyLCAxMTAsIDgsIDMsIDIxMiwgMTA4LCA4LCAzLCAyMTIsIDExNiwgOCwgMywgMjEyLCAxMTMsIDgsIDMsIDIxMiwgCi0gICAgMTExLCA4LCAzLCAyMTIsIDExMiwgOCwgMywgMjEyLCAxMDIsIDgsIDMsIDIxMiwgMTAxLCA4LCAzLCAyMTIsIDEwNiwgOCwgCi0gICAgMywgMjEyLCAxMDUsIDgsIDMsIDIxMiwgMTAzLCA4LCAzLCAyMTIsIDEwNCwgOCwgMywgMjQ3LCAxODYsIDgsIDMsIDI0NywgCi0gICAgMTc0LCA4LCAzLCAyNDgsIDExLCA4LCAzLCAyNDcsIDIxMSwgOCwgMywgMjQ3LCAyNDQsIDgsIDMsIDI0NywgMjQ4LCA4LCAzLCAKLSAgICAyNDcsIDI0NywgOCwgMywgMjQ4LCAxNjAsIDgsIDMsIDI0OCwgMTU1LCA4LCAzLCAyNDgsIDIyOSwgOCwgMywgMjQ4LCAxODAsIAotICAgIDgsIDMsIDI0NiwgNzAsIDgsIDMsIDI0NiwgNzEsIDgsIDMsIDI0NywgMTI4LCA4LCAzLCAyNDYsIDExMCwgOCwgMywgMjQ3LCAKLSAgICAxNTMsIDgsIDMsIDI0NywgMTMwLCA4LCAzLCAyNDgsIDM4LCA4LCAzLCAyNDgsIDk4LCA4LCAzLCAyNDgsIDUzLCA4LCAzLCAKLSAgICAyNDYsIDYxLCA4LCAzLCAyNDYsIDU5LCA4LCAzLCAyNDYsIDg2LCA4LCAzLCAyNDYsIDY5LCA4LCAzLCAyNDYsIDY0LCA4LCAKLSAgICAzLCAyNDYsIDY3LCA4LCAzLCAyMTYsIDY4LCA4LCAzLCAyMTYsIDYyLCA4LCAzLCAyMTYsIDExOCwgOCwgMywgMjE2LCA3NywgCi0gICAgOCwgMywgMjE2LCAxMTAsIDgsIDMsIDIxNiwgMTEyLCA4LCAzLCAyMTYsIDExMSwgOCwgMywgMjE3LCA0NywgOCwgMywgMjE3LCAKLSAgICAzNCwgOCwgMywgMjE3LCAxMDYsIDgsIDMsIDIxNywgNTUsIDgsIDMsIDIxNSwgMTAzLCA4LCAzLCAyMTUsIDEwMiwgOCwgMywgCi0gICAgMjE1LCAxMDUsIDgsIDMsIDIxNSwgMTA0LCA4LCAzLCAyMTYsIDYsIDgsIDMsIDIxNiwgMiwgOCwgMywgMTEyLCA4LCAzLCAKLSAgICAyMTYsIDE0LCA4LCAzLCAyMTYsIDIxNCwgOCwgMywgMjE3LCAyMywgOCwgMywgMjE2LCAyMzgsIDgsIDMsIDIxNSwgODgsIDgsIAotICAgIDMsIDIxNSwgODMsIDgsIDMsIDIxNSwgMTE5LCA4LCAzLCAyMTUsIDEwMSwgOCwgMywgMjE1LCA4OSwgOCwgMywgMjE1LCA5OSwgCi0gICAgOCwgMywgMjQ4LCAxMTUsIDgsIDMsIDI0OCwgMTE0LCA4LCAzLCAyNDgsIDEyMCwgOCwgMywgMjQ4LCAxMTYsIDgsIDMsIAotICAgIDI0OCwgMTE3LCA4LCAzLCAyNDgsIDExOSwgOCwgMywgMjQ4LCAxMTgsIDgsIDMsIDI0OCwgMTM2LCA4LCAzLCAyNDgsIDEzNSwgCi0gICAgOCwgMywgMjQ4LCAxNDMsIDgsIDMsIDI0OCwgMTM3LCA4LCAzLCAyNDgsIDEwNSwgOCwgMywgMjQ4LCAxMDcsIDgsIDMsIAotICAgIDI0OCwgMTA2LCA4LCAzLCAyNDgsIDExMCwgOCwgMywgMjQ4LCAxMDksIDgsIDMsIDI0OCwgMTEzLCA4LCAzLCAyNDgsIDExMSwgCi0gICAgOCwgMywgMjQ4LCAxMjgsIDgsIDMsIDI0OCwgMTMxLCA4LCAzLCAyNDgsIDEyOSwgOCwgMywgMjQ4LCAxMDEsIDgsIDMsIAotICAgIDI0OCwgMTAwLCA4LCAzLCAyNDgsIDEwOCwgOCwgMywgMjQ4LCAxMDQsIDgsIDMsIDI0OCwgMTAyLCA4LCAzLCAyNDgsIDEwMywgCi0gICAgOCwgMywgMjI5LCAxMzEsIDgsIDMsIDIyOSwgMTMwLCA4LCAzLCAyMjksIDEzOCwgOCwgMywgMjI5LCAxMzMsIDgsIDMsIAotICAgIDIyOSwgMTM0LCA4LCAzLCAyMjksIDEzNSwgOCwgMywgMjI5LCAxNDcsIDgsIDMsIDIyOSwgMTQ2LCA4LCAzLCAyMjksIDE1MywgCi0gICAgOCwgMywgMjI5LCAxNDgsIDgsIDMsIDIyOSwgMTIzLCA4LCAzLCAyMjksIDEyMiwgOCwgMywgMjI5LCAxMjksIDgsIDMsIAotICAgIDIyOSwgMTI0LCA4LCAzLCAyMjksIDEzOSwgOCwgMywgMjI5LCAxNDUsIDgsIDMsIDIyOSwgMTQzLCA4LCAzLCAyMjksIDExNSwgCi0gICAgOCwgMywgMjI5LCAxMTQsIDgsIDMsIDIyOSwgMTIwLCA4LCAzLCAyMjksIDExOCwgOCwgMywgMjI5LCAxMTYsIDgsIDMsIAotICAgIDIyOSwgMTE3LCA4LCAzLCAyNDEsIDg0LCA4LCAzLCAyNDEsIDgzLCA4LCAzLCAyNDEsIDkwLCA4LCAzLCAyNDEsIDg1LCA4LCAKLSAgICAzLCAyNDEsIDg3LCA4LCAzLCAyNDEsIDg2LCA4LCAzLCAyNDEsIDg5LCA4LCAzLCAyNDEsIDg4LCA4LCAzLCAyNDEsIDk1LCAKLSAgICA4LCAzLCAyNDEsIDk0LCA4LCAzLCAyNDEsIDk3LCA4LCAzLCAyNDEsIDk2LCA4LCAzLCAyNDEsIDc4LCA4LCAzLCAyNDEsIAotICAgIDc5LCA4LCAzLCAyNDEsIDgxLCA4LCAzLCAyNDEsIDgwLCA4LCAzLCAyNDEsIDgyLCA4LCAzLCAyNDEsIDkxLCA4LCAzLCAKLSAgICAyNDEsIDkzLCA4LCAzLCAyNDEsIDkyLCA4LCAzLCAyNDEsIDc3LCA4LCAzLCAyMjgsIDE5NCwgOCwgMywgMjI4LCAxOTIsIDgsIAotICAgIDMsIDIyOCwgMjM4LCA4LCAzLCAyMjgsIDE5NywgOCwgMywgMjI4LCAyMjAsIDgsIDMsIDIyOCwgMjM0LCA4LCAzLCAyMjgsIAotICAgIDIzMywgOCwgMywgMjI5LCAxODgsIDgsIDMsIDE5OCwgOCwgMywgMjI5LCAyMDIsIDgsIDMsIDIyNywgMTkwLCA4LCAzLCAKLSAgICAyMjcsIDE5MiwgOCwgMywgMjI3LCAxOTEsIDgsIDMsIDIyOCwgNTYsIDgsIDMsIDIyOCwgNDMsIDgsIDMsIDIyOCwgNzksIDgsIAotICAgIDMsIDIyOCwgNjUsIDgsIDMsIDIyOSwgODgsIDgsIDMsIDIyOSwgMTEyLCA4LCAzLCAyMjksIDk5LCA4LCAzLCAyMjcsIDE4NSwgCi0gICAgOCwgMywgMjI3LCAxODEsIDgsIDMsIDIyNywgMjQyLCA4LCAzLCAyMjcsIDE4OSwgOCwgMywgMjI3LCAxODcsIDgsIDMsIAotICAgIDIyNywgMTg4LCA4LCAzLCAyNDEsIDE0OCwgOCwgMywgMjQxLCAxNDcsIDgsIDMsIDI0MSwgMTUzLCA4LCAzLCAyNDEsIDE0OSwgCi0gICAgOCwgMywgMjQxLCAxNTAsIDgsIDMsIDI0MSwgMTUyLCA4LCAzLCAyNDEsIDE1MSwgOCwgMywgMjQxLCAxNTgsIDgsIDMsIAotICAgIDI0MSwgMTU3LCA4LCAzLCAyNDEsIDE2MCwgOCwgMywgMjQxLCAxNTksIDgsIDMsIDI0MSwgMTQwLCA4LCAzLCAyNDEsIDE0MiwgCi0gICAgOCwgMywgMjQxLCAxNDEsIDgsIDMsIDI0MSwgMTQ0LCA4LCAzLCAyNDEsIDE0NiwgOCwgMywgMjQxLCAxNDUsIDgsIDMsIAotICAgIDI0MSwgMTU0LCA4LCAzLCAyNDEsIDE1NiwgOCwgMywgMjQxLCAxNTUsIDgsIDMsIDI0MSwgMTM2LCA4LCAzLCAyNDEsIDEzNSwgCi0gICAgOCwgMywgMjQxLCAxNDMsIDgsIDMsIDI0MSwgMTM5LCA4LCAzLCAyNDEsIDEzNywgOCwgMywgMjQxLCAxMzgsIDgsIDMsIAotICAgIDI0MSwgMTMwLCA4LCAzLCAyNDEsIDEyOSwgOCwgMywgMjQxLCAxMzQsIDgsIDMsIDI0MSwgMTMzLCA4LCAzLCAyNDEsIDEzMSwgCi0gICAgOCwgMywgMjQxLCAxMzIsIDgsIDMsIDIzMiwgMjAxLCA4LCAzLCAyMzIsIDE5NSwgOCwgMywgMjMyLCAyNDcsIDgsIDMsIAotICAgIDIzMiwgMjA4LCA4LCAzLCAyMzIsIDIzOSwgOCwgMywgMjMyLCAyMzgsIDgsIDMsIDIzMiwgMjQyLCA4LCAzLCAyMzIsIDI0MCwgCi0gICAgOCwgMywgMjMzLCA4NSwgOCwgMywgMjMzLCA3NSwgOCwgMywgMjMzLCAxNDEsIDgsIDMsIDIzMywgOTQsIDgsIDMsIDIzMiwgCi0gICAgODQsIDgsIDMsIDIzMiwgODMsIDgsIDMsIDIzMiwgODYsIDgsIDMsIDIzMiwgODUsIDgsIDMsIDIzMiwgMTIyLCA4LCAzLCAKLSAgICAyMzIsIDExMiwgOCwgMywgMjMyLCAxNjIsIDgsIDMsIDIzMiwgMTI2LCA4LCAzLCAyMzMsIDgsIDgsIDMsIDIzMywgNjQsIDgsIAotICAgIDMsIDIzMywgMjMsIDgsIDMsIDIzMiwgNzksIDgsIDMsIDIzMiwgNzcsIDgsIDMsIDIzMiwgMTAzLCA4LCAzLCAyMzIsIDgyLCAKLSAgICA4LCAzLCAyMzIsIDgwLCA4LCAzLCAyMzIsIDgxLCA4LCAzLCAyMzIsIDU5LCA4LCAzLCAyMzIsIDU4LCA4LCAzLCAyMzIsIAotICAgIDY3LCA4LCAzLCAyMzIsIDYyLCA4LCAzLCAyMzIsIDYwLCA4LCAzLCAyMzIsIDYxLCA4LCAzLCAyNDIsIDE5NiwgOCwgMywgCi0gICAgMjQyLCAxOTUsIDgsIDMsIDI0MiwgMjIxLCA4LCAzLCAyNDIsIDIwNiwgOCwgMywgMjQyLCAyMTMsIDgsIDMsIDI0MiwgMjEyLCAKLSAgICA4LCAzLCAyNDIsIDIxNSwgOCwgMywgMjQyLCAyMTQsIDgsIDMsIDI0MywgOTYsIDgsIDMsIDI0MywgOTEsIDgsIDMsIDI0MywgCi0gICAgMTQyLCA4LCAzLCAyNDMsIDEwNiwgOCwgMywgMjQyLCA5OCwgOCwgMywgMjQyLCA5NywgOCwgMywgMjQyLCAxMDAsIDgsIDMsIAotICAgIDI0MiwgOTksIDgsIDMsIDI0MiwgMTYxLCA4LCAzLCAyNDIsIDE1OSwgOCwgMywgMjQyLCAxODEsIDgsIDMsIDI0MiwgMTY5LCAKLSAgICA4LCAzLCAyNDMsIDQwLCA4LCAzLCAyNDMsIDM4LCA4LCAzLCAyNDMsIDY5LCA4LCAzLCAyNDMsIDUxLCA4LCAzLCAyNDIsIAotICAgIDg4LCA4LCAzLCAyNDIsIDg3LCA4LCAzLCAyNDIsIDEyMCwgOCwgMywgMjQyLCA5NiwgOCwgMywgMjQyLCA4OSwgOCwgMywgCi0gICAgMjQyLCA5NSwgOCwgMywgMjM0LCA2NywgOCwgMywgMjM0LCA2NiwgOCwgMywgMjM0LCA5OCwgOCwgMywgMjM0LCA4MSwgOCwgCi0gICAgMywgMjM0LCA5MSwgOCwgMywgMjM0LCA5NCwgOCwgMywgMjM0LCA5MiwgOCwgMywgMjM0LCAyMDgsIDgsIDMsIDIzNCwgMTk2LCAKLSAgICA4LCAzLCAxNzYsIDgsIDMsIDIzNCwgMjM0LCA4LCAzLCAyMzMsIDIwNiwgOCwgMywgMjMzLCAyMTEsIDgsIDMsIDIzMywgCi0gICAgMjA4LCA4LCAzLCAyMzQsIDYsIDgsIDMsIDIzNCwgMiwgOCwgMywgMjM0LCAzNCwgOCwgMywgMjM0LCAxMywgOCwgMywgMjM0LCAKLSAgICAxNjIsIDgsIDMsIDIzNCwgMTQ2LCA4LCAzLCAyMzQsIDE4OCwgOCwgMywgMjM0LCAxNjUsIDgsIDMsIDIzMywgMTk1LCA4LCAKLSAgICAzLCAyMzMsIDE5MiwgOCwgMywgMjMzLCAyMjMsIDgsIDMsIDIzMywgMjA1LCA4LCAzLCAyMzMsIDE5OCwgOCwgMywgMjMzLCAKLSAgICAyMDIsIDgsIDMsIDI0MywgMjIsIDgsIDMsIDI0MywgMjEsIDgsIDMsIDI0MywgMjYsIDgsIDMsIDI0MywgMjMsIDgsIDMsIAotICAgIDI0MywgMjUsIDgsIDMsIDI0MywgMjQsIDgsIDMsIDI0MywgMzMsIDgsIDMsIDI0MywgMzIsIDgsIDMsIDI0MywgMzYsIDgsIAotICAgIDMsIDI0MywgMzQsIDgsIDMsIDI0MywgMTMsIDgsIDMsIDI0MywgMTIsIDgsIDMsIDI0MywgMTUsIDgsIDMsIDI0MywgMTQsIAotICAgIDgsIDMsIDI0MywgMTgsIDgsIDMsIDI0MywgMTcsIDgsIDMsIDI0MywgMjAsIDgsIDMsIDI0MywgMTksIDgsIDMsIDI0MywgCi0gICAgMjgsIDgsIDMsIDI0MywgMjcsIDgsIDMsIDI0MywgMzEsIDgsIDMsIDI0MywgMjksIDgsIDMsIDI0MywgOCwgOCwgMywgMjQzLCAKLSAgICA3LCA4LCAzLCAyNDMsIDE2LCA4LCAzLCAyNDMsIDExLCA4LCAzLCAyNDMsIDksIDgsIDMsIDI0MywgMTAsIDgsIDMsIDIzMCwgCi0gICAgMjU0LCA4LCAzLCAyMzAsIDI1NSwgOCwgMywgMjMxLCAxNywgOCwgMywgMjMxLCAxNiwgOCwgMywgMjMxLCAxOSwgOCwgMywgCi0gICAgMjMxLCAxOCwgOCwgMywgMjMwLCAyNDUsIDgsIDMsIDIzMCwgMjQ3LCA4LCAzLCAyMzAsIDI0NiwgOCwgMywgMjMwLCAyNTAsIAotICAgIDgsIDMsIDIzMCwgMjQ5LCA4LCAzLCAyMzAsIDI1MiwgOCwgMywgMjMwLCAyNTEsIDgsIDMsIDIzMSwgMCwgOCwgMywgMjMxLCAKLSAgICAyLCA4LCAzLCAyMzEsIDEsIDgsIDMsIDIzMCwgMjQxLCA4LCAzLCAyMzAsIDI0MCwgOCwgMywgMjMwLCAyNDgsIDgsIDMsIAotICAgIDIzMCwgMjQ0LCA4LCAzLCAyMzAsIDI0MiwgOCwgMywgMjMwLCAyNDMsIDgsIDMsIDI0MCwgMTg3LCA4LCAzLCAyNDAsIDE4NiwgCi0gICAgOCwgMywgMjQwLCAxOTMsIDgsIDMsIDI0MCwgMTg4LCA4LCAzLCAyNDAsIDE5MCwgOCwgMywgMjQwLCAxODksIDgsIDMsIAotICAgIDI0MCwgMTkyLCA4LCAzLCAyNDAsIDE5MSwgOCwgMywgMjQwLCAxOTgsIDgsIDMsIDI0MCwgMTk3LCA4LCAzLCAyNDAsIDIwMCwgCi0gICAgOCwgMywgMjQwLCAxOTksIDgsIDMsIDI0MCwgMTc5LCA4LCAzLCAyNDAsIDE3OCwgOCwgMywgMjQwLCAxODEsIDgsIDMsIAotICAgIDI0MCwgMTgwLCA4LCAzLCAyNDAsIDE4MywgOCwgMywgMjQwLCAxODIsIDgsIDMsIDI0MCwgMTg1LCA4LCAzLCAyNDAsIDE4NCwgCi0gICAgOCwgMywgMjQwLCAxOTQsIDgsIDMsIDI0MCwgMTk2LCA4LCAzLCAyNDAsIDE5NSwgOCwgMywgMjI5LCAyOSwgOCwgMywgMjI5LCAKLSAgICAzMSwgOCwgMywgMjI5LCAzMCwgOCwgMywgMjI5LCA3MiwgOCwgMywgMjI5LCA3MCwgOCwgMywgMjI5LCA4MiwgOCwgMywgCi0gICAgMjI5LCA3NSwgOCwgMywgMjI4LCAyNDgsIDgsIDMsIDIyOCwgMjQ3LCA4LCAzLCAyMjgsIDI0OSwgOCwgMywgMjI5LCAxLCA4LCAKLSAgICAzLCAyMjgsIDI1NCwgOCwgMywgMjI5LCA5LCA4LCAzLCAyMjksIDMsIDgsIDMsIDIyOSwgNjMsIDgsIDMsIDIyOSwgNjksIDgsIAotICAgIDMsIDIyOSwgNjUsIDgsIDMsIDI0MSwgMTYzLCA4LCAzLCAyNDEsIDE3MywgOCwgMywgMjQxLCAxODIsIDgsIDMsIDI0MiwgMiwgCi0gICAgOCwgMywgMjQxLCAyNTAsIDgsIDMsIDE2MiwgOCwgMywgMjQyLCAxMywgOCwgMywgMjQwLCAyMTMsIDgsIDMsIDI0MCwgMjEyLCAKLSAgICA4LCAzLCAyNDAsIDIxNSwgOCwgMywgMjQwLCAyMTQsIDgsIDMsIDI0MCwgMjQ5LCA4LCAzLCAyNDAsIDI0MCwgOCwgMywgCi0gICAgMjQxLCA3NSwgOCwgMywgMjQxLCA1NCwgOCwgMywgMjQxLCAyMDEsIDgsIDMsIDI0MSwgMjQ1LCA4LCAzLCAyNDEsIDIxMywgCi0gICAgOCwgMywgMjEyLCA0MywgOCwgMywgMjEyLCAyOCwgOCwgMywgMjEyLCA2NSwgOCwgMywgMjEyLCA1MSwgOCwgMywgMjExLCAKLSAgICAxODUsIDgsIDMsIDIxMSwgMTg3LCA4LCAzLCAyMTEsIDE4NiwgOCwgMywgMjExLCAyMDMsIDgsIDMsIDIxMSwgMjI3LCA4LCAKLSAgICAzLCAyMTEsIDIxMCwgOCwgMywgMjEyLCA1LCA4LCAzLCAyMTIsIDIyLCA4LCAzLCAyMTIsIDEwLCA4LCAzLCAyMTAsIDMwLCAKLSAgICA4LCAzLCAyMTAsIDI5LCA4LCAzLCAyMTAsIDQ0LCA4LCAzLCAyMTAsIDMyLCA4LCAzLCAyMTAsIDM3LCA4LCAzLCAyMTAsIAotICAgIDM5LCA4LCAzLCAyMTAsIDM4LCA4LCAzLCAyMTAsIDEwMiwgOCwgMywgMjEwLCA5OSwgOCwgMywgMjEwLCAxMTYsIDgsIDMsIAotICAgIDIxMCwgMTA1LCA4LCAzLCAyMTAsIDYsIDgsIDMsIDIxMCwgOCwgOCwgMywgMjEwLCA3LCA4LCAzLCAyMTAsIDE5LCA4LCAzLCAKLSAgICAyMTAsIDE4LCA4LCAzLCAyMTAsIDIzLCA4LCAzLCAyMTAsIDIwLCA4LCAzLCAyMTAsIDg0LCA4LCAzLCAyMTAsIDk0LCA4LCAKLSAgICAzLCAyMTAsIDg4LCA4LCAzLCAyMTAsIDIsIDgsIDMsIDIxMCwgMSwgOCwgMywgMjEwLCAxMywgOCwgMywgMjEwLCA1LCA4LCAKLSAgICAzLCAyMTAsIDMsIDgsIDMsIDIxMCwgNCwgOCwgMywgMjA5LCAyNDUsIDgsIDMsIDIwOSwgMjQ0LCA4LCAzLCAyMDksIDI1MCwgCi0gICAgOCwgMywgMjA5LCAyNDgsIDgsIDMsIDIwOSwgMjQ2LCA4LCAzLCAyMDksIDI0NywgOCwgMywgMjUwLCAzNiwgOCwgMywgMjUwLCAKLSAgICAzMiwgOCwgMywgMjUwLCA1OSwgOCwgMywgMjUwLCA0NSwgOCwgMywgMjUwLCA1NiwgOCwgMywgMjUwLCA1MCwgOCwgMywgCi0gICAgMjUwLCA1OCwgOCwgMywgMjUwLCA1NywgOCwgMywgMjUwLCAyMzIsIDgsIDMsIDI1MCwgMjI1LCA4LCAzLCAyNTEsIDQxLCA4LCAKLSAgICAzLCAyNTEsIDMsIDgsIDMsIDI0OSwgMTEyLCA4LCAzLCAyNDksIDExNCwgOCwgMywgMjQ5LCAxMTMsIDgsIDMsIDI0OSwgCi0gICAgMTYxLCA4LCAzLCAyNDksIDE1MiwgOCwgMywgMjQ5LCAyNDYsIDgsIDMsIDI0OSwgMTc3LCA4LCAzLCAyNTAsIDE2OCwgOCwgCi0gICAgMywgMjUwLCAxOTgsIDgsIDMsIDI1MCwgMTczLCA4LCAzLCAyNDksIDkyLCA4LCAzLCAyNDksIDkwLCA4LCAzLCAyNDksIAotICAgIDEyMCwgOCwgMywgMjQ5LCAxMTAsIDgsIDMsIDI0OSwgOTcsIDgsIDMsIDI0OSwgMTA5LCA4LCAzLCAyNDksIDcxLCA4LCAzLCAKLSAgICAyNDksIDcwLCA4LCAzLCAyNDksIDgxLCA4LCAzLCAyNDksIDc3LCA4LCAzLCAyNDksIDcyLCA4LCAzLCAyNDksIDc0LCA4LCAKLSAgICAzLCAyMDksIDIyOCwgOCwgMywgMjA5LCAyMjcsIDgsIDMsIDIwOSwgMjM0LCA4LCAzLCAyMDksIDIyOSwgOCwgMywgMjA5LCAKLSAgICAyMzEsIDgsIDMsIDIwOSwgMjMwLCA4LCAzLCAyMDksIDIzMywgOCwgMywgMjA5LCAyMzIsIDgsIDMsIDIwOSwgMjQwLCA4LCAKLSAgICAzLCAyMDksIDIzOSwgOCwgMywgMjA5LCAyNDMsIDgsIDMsIDIwOSwgMjQxLCA4LCAzLCAyMDksIDIyNCwgOCwgMywgMjA5LCAKLSAgICAyMjYsIDgsIDMsIDIwOSwgMjI1LCA4LCAzLCAyMDksIDIzNSwgOCwgMywgMjA5LCAyMzgsIDgsIDMsIDIwOSwgMjM2LCA4LCAKLSAgICAzLCAyMDksIDIxNywgOCwgMywgMjA5LCAyMjEsIDgsIDMsIDIwOSwgMjIwLCA4LCAzLCAyMDksIDIxOCwgOCwgMywgMjA5LCAKLSAgICAyMTksIDgsIDMsIDIwOSwgMjExLCA4LCAzLCAyMDksIDIxMCwgOCwgMywgMjA5LCAyMTYsIDgsIDMsIDIwOSwgMjE0LCA4LCAKLSAgICAzLCAyMDksIDIxMiwgOCwgMywgMjA5LCAyMTMsIDgsIDMsIDIyNywgMTA4LCA4LCAzLCAyMjcsIDEwNywgOCwgMywgMjI3LCAKLSAgICAxMTMsIDgsIDMsIDIyNywgMTA5LCA4LCAzLCAyMjcsIDExMCwgOCwgMywgMjI3LCAxMTIsIDgsIDMsIDIyNywgMTExLCA4LCAKLSAgICAzLCAyMjcsIDExOCwgOCwgMywgMjI3LCAxMTcsIDgsIDMsIDIyNywgMTIxLCA4LCAzLCAyMjcsIDEyMCwgOCwgMywgMjI3LCAKLSAgICAxMDEsIDgsIDMsIDIyNywgMTAyLCA4LCAzLCAyMjcsIDEwNSwgOCwgMywgMjI3LCAxMDYsIDgsIDMsIDIyNywgMTE0LCA4LCAKLSAgICAzLCAyMjcsIDExNiwgOCwgMywgMjI3LCA5NiwgOCwgMywgMjI3LCAxMDQsIDgsIDMsIDIyNywgMTAwLCA4LCAzLCAyMjcsIAotICAgIDk3LCA4LCAzLCAyMjcsIDk4LCA4LCAzLCAyMjcsIDkxLCA4LCAzLCAyMjcsIDkwLCA4LCAzLCAyMjcsIDk1LCA4LCAzLCAKLSAgICAyMjcsIDk0LCA4LCAzLCAyMjcsIDkyLCA4LCAzLCAyMjcsIDkzLCA4LCAzLCAyMTksIDEyOSwgOCwgMywgMTk1LCA4LCAzLCAKLSAgICAyMTksIDE5MywgOCwgMywgMjE5LCAxMzIsIDgsIDMsIDIxOSwgMTg1LCA4LCAzLCAyMTksIDE4OCwgOCwgMywgMjE5LCAxODYsIAotICAgIDgsIDMsIDIyMSwgMjI4LCA4LCAzLCAyMjEsIDIxNiwgOCwgMywgMjA2LCA4LCAzLCAyMjEsIDIzNiwgOCwgMywgMjE4LCAyOSwgCi0gICAgOCwgMywgMjE4LCAzMSwgOCwgMywgMjE4LCAzMCwgOCwgMywgMjE5LCAzNiwgOCwgMywgMjE5LCAyNSwgOCwgMywgMjE5LCAKLSAgICA2MCwgOCwgMywgMjE5LCA0MCwgOCwgMywgMjIwLCAxMTYsIDgsIDMsIDIyMSwgMTgzLCA4LCAzLCAyMjAsIDE0MSwgOCwgMywgCi0gICAgMjE4LCA2LCA4LCAzLCAyMTgsIDQsIDgsIDMsIDIxOCwgODQsIDgsIDMsIDIxOCwgMjgsIDgsIDMsIDIxOCwgMTAsIDgsIDMsIAotICAgIDIxOCwgMTgsIDgsIDMsIDIxNywgMTY3LCA4LCAzLCAyMTcsIDE2NiwgOCwgMywgMjE3LCAyMzMsIDgsIDMsIDIxNywgMTc0LCAKLSAgICA4LCAzLCAyMTcsIDE2OSwgOCwgMywgMjE3LCAxNzMsIDgsIDMsIDIxOCwgMTg4LCA4LCAzLCAyMTgsIDE4NywgOCwgMywgCi0gICAgMjE4LCAxOTQsIDgsIDMsIDIxOCwgMTg5LCA4LCAzLCAyMTgsIDE5MSwgOCwgMywgMjE4LCAxOTMsIDgsIDMsIDIxOCwgMTkyLCAKLSAgICA4LCAzLCAyMTgsIDIwMiwgOCwgMywgMjE4LCAyMDAsIDgsIDMsIDIxOCwgMjI1LCA4LCAzLCAyMTgsIDIwMywgOCwgMywgCi0gICAgMjE4LCAxODMsIDgsIDMsIDIxOCwgMTgyLCA4LCAzLCAyMTgsIDE4NiwgOCwgMywgMjE4LCAxODQsIDgsIDMsIDIxOCwgMTk2LCAKLSAgICA4LCAzLCAyMTgsIDE5OSwgOCwgMywgMjE4LCAxOTcsIDgsIDMsIDIxOCwgMTc5LCA4LCAzLCAyMTgsIDE3NywgOCwgMywgCi0gICAgMjE4LCAxODEsIDgsIDMsIDIxOCwgMTgwLCA4LCAzLCAyMTgsIDE3MiwgOCwgMywgMjE4LCAxNzEsIDgsIDMsIDIxOCwgMTc2LCAKLSAgICA4LCAzLCAyMTgsIDE3NSwgOCwgMywgMjE4LCAxNzMsIDgsIDMsIDIxOCwgMTc0LCA4LCAzLCAyMTAsIDc3LCA4LCAzLCAyMTAsIAotICAgIDc2LCA4LCAzLCAyMTAsIDgyLCA4LCAzLCAyMTAsIDc5LCA4LCAzLCAyMTAsIDU5LCA4LCAzLCAyMTAsIDYxLCA4LCAzLCAKLSAgICAyMTAsIDYwLCA4LCAzLCAyMTAsIDY0LCA4LCAzLCAyMTAsIDYzLCA4LCAzLCAyMTAsIDY3LCA4LCAzLCAyMTAsIDY1LCA4LCAKLSAgICAzLCAyMTAsIDcxLCA4LCAzLCAyMTAsIDcwLCA4LCAzLCAyMTAsIDc0LCA4LCAzLCAyMTAsIDcyLCA4LCAzLCAyMTAsIDU1LCAKLSAgICA4LCAzLCAyMTAsIDU0LCA4LCAzLCAyMTAsIDYyLCA4LCAzLCAyMTAsIDU4LCA4LCAzLCAyMTAsIDU2LCA4LCAzLCAyMTAsIAotICAgIDU3LCA4LCAzLCAyMTAsIDQ3LCA4LCAzLCAyMTAsIDQ2LCA4LCAzLCAyMTAsIDUxLCA4LCAzLCAyMTAsIDUwLCA4LCAzLCAKLSAgICAyMTAsIDQ4LCA4LCAzLCAyMTAsIDQ5LCA4LCAzLCAyNTAsIDE0NCwgOCwgMywgMjUwLCAxNDEsIDgsIDMsIDI1MCwgMTY1LCAKLSAgICA4LCAzLCAyNTAsIDE1MiwgOCwgMywgMjUwLCA3MywgOCwgMywgMjUwLCA3MiwgOCwgMywgMjUwLCA3NSwgOCwgMywgMjUwLCAKLSAgICA3NCwgOCwgMywgMjUwLCA4NywgOCwgMywgMjUwLCA4NiwgOCwgMywgMjUwLCA5NCwgOCwgMywgMjUwLCA4OSwgOCwgMywgCi0gICAgMjUwLCAxMjMsIDgsIDMsIDI1MCwgMTIxLCA4LCAzLCAyNTAsIDEzOSwgOCwgMywgMjUwLCAxMjksIDgsIDMsIDI1MCwgNjcsIAotICAgIDgsIDMsIDI1MCwgNzcsIDgsIDMsIDI1MCwgNzEsIDgsIDMsIDI1MCwgNjgsIDgsIDMsIDI1MCwgNzAsIDgsIDMsIDI1MCwgCi0gICAgNjEsIDgsIDMsIDI1MCwgNjAsIDgsIDMsIDI1MCwgNjUsIDgsIDMsIDI1MCwgNjQsIDgsIDMsIDI1MCwgNjIsIDgsIDMsIAotICAgIDI1MCwgNjMsIDgsIDMsIDIyMiwgMTc3LCA4LCAzLCAyMjIsIDE4MSwgOCwgMywgMjIyLCAxNjAsIDgsIDMsIDIyMiwgMTYxLCAKLSAgICA4LCAzLCAyMjIsIDE2NCwgOCwgMywgMjIyLCAxNjMsIDgsIDMsIDIyMiwgMTY3LCA4LCAzLCAyMjIsIDE2NSwgOCwgMywgCi0gICAgMjIyLCAxNzEsIDgsIDMsIDIyMiwgMTcwLCA4LCAzLCAyMjIsIDE3NiwgOCwgMywgMjIyLCAxNzIsIDgsIDMsIDIyMiwgMTU2LCAKLSAgICA4LCAzLCAyMjIsIDE1NCwgOCwgMywgMjIyLCAxNjIsIDgsIDMsIDIyMiwgMTU5LCA4LCAzLCAyMjIsIDE1NywgOCwgMywgCi0gICAgMjIyLCAxNTgsIDgsIDMsIDIyMiwgMTQ5LCA4LCAzLCAyMjIsIDE0OCwgOCwgMywgMjIyLCAxNTMsIDgsIDMsIDIyMiwgMTUyLCAKLSAgICA4LCAzLCAyMjIsIDE1MCwgOCwgMywgMjIyLCAxNTEsIDgsIDMsIDIyOCwgMzksIDgsIDMsIDIyOCwgMzgsIDgsIDMsIDIyOCwgCi0gICAgNDEsIDgsIDMsIDIyOCwgNDAsIDgsIDMsIDIyOCwgMzEsIDgsIDMsIDIyOCwgMzMsIDgsIDMsIDIyOCwgMzIsIDgsIDMsIAotICAgIDIyOCwgMzUsIDgsIDMsIDIyOCwgMzQsIDgsIDMsIDIyOCwgMzcsIDgsIDMsIDIyOCwgMzYsIDgsIDMsIDIyOCwgMjYsIDgsIAotICAgIDMsIDIyOCwgMjUsIDgsIDMsIDIyOCwgMzAsIDgsIDMsIDIyOCwgMjksIDgsIDMsIDIyOCwgMjcsIDgsIDMsIDIyOCwgMjgsIAotICAgIDgsIDMsIDIyOCwgMjAsIDgsIDMsIDIyOCwgMTksIDgsIDMsIDIyOCwgMjQsIDgsIDMsIDIyOCwgMjMsIDgsIDMsIDIyOCwgCi0gICAgMjEsIDgsIDMsIDIyOCwgMjIsIDgsIDMsIDIyMCwgNzQsIDgsIDMsIDIyMCwgNjksIDgsIDMsIDIyMCwgMTA0LCA4LCAzLCAKLSAgICAyMjAsIDg1LCA4LCAzLCAyMTksIDIxNywgOCwgMywgMjE5LCAyMTksIDgsIDMsIDIxOSwgMjE4LCA4LCAzLCAyMTksIDIzOCwgCi0gICAgOCwgMywgMjE5LCAyMzUsIDgsIDMsIDIyMCwgOSwgOCwgMywgMjIwLCAwLCA4LCAzLCAyMjAsIDQ0LCA4LCAzLCAyMjAsIDM3LCAKLSAgICA4LCAzLCAyMjAsIDY1LCA4LCAzLCAyMjAsIDUyLCA4LCAzLCAyMTksIDIxMywgOCwgMywgMjE5LCAyMTEsIDgsIDMsIDIxOSwgCi0gICAgMjI3LCA4LCAzLCAyMTksIDIxNiwgOCwgMywgMjE5LCAyMTQsIDgsIDMsIDIxOSwgMjE1LCA4LCAzLCAyMTksIDE5NiwgOCwgCi0gICAgMywgMjE5LCAxOTUsIDgsIDMsIDIxOSwgMjAyLCA4LCAzLCAyMTksIDE5OSwgOCwgMywgMjE5LCAxOTcsIDgsIDMsIDIxOSwgCi0gICAgMTk4LCA4LCAzLCAyMjMsIDE0NCwgOCwgMywgMjIzLCAxMzgsIDgsIDMsIDIwNSwgOCwgMywgMjIzLCAxNTAsIDgsIDMsIAotICAgIDIyMiwgMTIyLCA4LCAzLCAyMjIsIDEyNCwgOCwgMywgMjIyLCAxMjMsIDgsIDMsIDIyMiwgMTkwLCA4LCAzLCAyMjIsIDE4MywgCi0gICAgOCwgMywgMjIyLCAyMTMsIDgsIDMsIDIyMiwgMTk0LCA4LCAzLCAyMjMsIDQ2LCA4LCAzLCAyMjMsIDEzMSwgOCwgMywgMjIzLCAKLSAgICA4NCwgOCwgMywgMjIyLCAxMTUsIDgsIDMsIDIyMiwgMTEyLCA4LCAzLCAyMjIsIDE0MiwgOCwgMywgMjIyLCAxMjEsIDgsIDMsIAotICAgIDIyMiwgMTE3LCA4LCAzLCAyMjIsIDExOCwgOCwgMywgMjIyLCA5NywgOCwgMywgMjIyLCA5NiwgOCwgMywgMjIyLCAxMDIsIAotICAgIDgsIDMsIDIyMiwgMTAwLCA4LCAzLCAyMjIsIDk4LCA4LCAzLCAyMjIsIDk5LCA4LCAzLCAyMzUsIDEwNCwgOCwgMywgMjM1LCAKLSAgICAxMDMsIDgsIDMsIDIzNSwgMTE0LCA4LCAzLCAyMzUsIDEwNSwgOCwgMywgMjM1LCAxMTAsIDgsIDMsIDIzNSwgMTA5LCA4LCAKLSAgICAzLCAyMzUsIDExMiwgOCwgMywgMjM1LCAxMTEsIDgsIDMsIDIzNSwgNDcsIDgsIDMsIDIzNSwgNDYsIDgsIDMsIDIzNSwgNDksIAotICAgIDgsIDMsIDIzNSwgNDgsIDgsIDMsIDIzNSwgNjIsIDgsIDMsIDIzNSwgNjAsIDgsIDMsIDIzNSwgNzQsIDgsIDMsIDIzNSwgCi0gICAgNjQsIDgsIDMsIDIzNSwgNDAsIDgsIDMsIDIzNSwgMzgsIDgsIDMsIDIzNSwgNTcsIDgsIDMsIDIzNSwgNDUsIDgsIDMsIAotICAgIDIzNSwgNDIsIDgsIDMsIDIzNSwgNDMsIDgsIDMsIDIzNSwgMzIsIDgsIDMsIDIzNSwgMzEsIDgsIDMsIDIzNSwgMzYsIDgsIAotICAgIDMsIDIzNSwgMzUsIDgsIDMsIDIzNSwgMzMsIDgsIDMsIDIzNSwgMzQsIDgsIDMsIDIyNCwgNDksIDgsIDMsIDIyNCwgNDcsIAotICAgIDgsIDMsIDIyNCwgNTYsIDgsIDMsIDIyNCwgNTAsIDgsIDMsIDIyNCwgNTMsIDgsIDMsIDIyNCwgNTIsIDgsIDMsIDIyNCwgCi0gICAgNTUsIDgsIDMsIDIyNCwgNTQsIDgsIDMsIDIyNCwgMiwgOCwgMywgMjIzLCAyNTUsIDgsIDMsIDIyNCwgNCwgOCwgMywgMjI0LCAKLSAgICAzLCA4LCAzLCAyMjQsIDM2LCA4LCAzLCAyMjQsIDM1LCA4LCAzLCAyMjQsIDQ1LCA4LCAzLCAyMjQsIDM5LCA4LCAzLCAyMjMsIAotICAgIDI1MCwgOCwgMywgMjIzLCAyNDYsIDgsIDMsIDIyNCwgMzMsIDgsIDMsIDIyMywgMjU0LCA4LCAzLCAyMjMsIDI1MiwgOCwgMywgCi0gICAgMjIzLCAyNTMsIDgsIDMsIDIyMywgMjMwLCA4LCAzLCAyMjMsIDIyOCwgOCwgMywgMjIzLCAyNDAsIDgsIDMsIDIyMywgMjMzLCAKLSAgICA4LCAzLCAyMjMsIDIzMSwgOCwgMywgMjIzLCAyMzIsIDgsIDMsIDIzNSwgOTMsIDgsIDMsIDIzNSwgOTIsIDgsIDMsIDIzNSwgCi0gICAgOTksIDgsIDMsIDIzNSwgOTQsIDgsIDMsIDIzNSwgOTYsIDgsIDMsIDIzNSwgOTUsIDgsIDMsIDIzNSwgOTgsIDgsIDMsIAotICAgIDIzNSwgOTcsIDgsIDMsIDIzNSwgODQsIDgsIDMsIDIzNSwgODYsIDgsIDMsIDIzNSwgODUsIDgsIDMsIDIzNSwgODksIDgsIAotICAgIDMsIDIzNSwgODgsIDgsIDMsIDIzNSwgOTEsIDgsIDMsIDIzNSwgOTAsIDgsIDMsIDIzNSwgODAsIDgsIDMsIDIzNSwgNzksIAotICAgIDgsIDMsIDIzNSwgODcsIDgsIDMsIDIzNSwgODMsIDgsIDMsIDIzNSwgODEsIDgsIDMsIDIzNSwgODIsIDgsIDMsIDIzNSwgCi0gICAgNzYsIDgsIDMsIDIzNSwgNzUsIDgsIDMsIDIzNSwgNzgsIDgsIDMsIDIzNSwgNzcsIDgsIDMsIDIyOCwgMTY3LCA4LCAzLCAKLSAgICAyMjgsIDE2NiwgOCwgMywgMjI4LCAxNzQsIDgsIDMsIDIyOCwgMTY4LCA4LCAzLCAyMjgsIDE3MCwgOCwgMywgMjI4LCAxNjksIAotICAgIDgsIDMsIDIyOCwgMTczLCA4LCAzLCAyMjgsIDE3MSwgOCwgMywgMjI4LCAxNTYsIDgsIDMsIDIyOCwgMTU3LCA4LCAzLCAKLSAgICAyMjgsIDE2MiwgOCwgMywgMjI4LCAxNjEsIDgsIDMsIDIyOCwgMTY1LCA4LCAzLCAyMjgsIDE2MywgOCwgMywgMjI4LCAxNTEsIAotICAgIDgsIDMsIDIyOCwgMTYwLCA4LCAzLCAyMjgsIDE1NSwgOCwgMywgMjI4LCAxNTIsIDgsIDMsIDIyOCwgMTUzLCA4LCAzLCAKLSAgICAyMjgsIDE0NiwgOCwgMywgMjI4LCAxNDUsIDgsIDMsIDIyOCwgMTUwLCA4LCAzLCAyMjgsIDE0OSwgOCwgMywgMjI4LCAxNDcsIAotICAgIDgsIDMsIDIyOCwgMTQ4LCA4LCAzLCAyMjcsIDE0MSwgOCwgMywgMjI3LCAxNDAsIDgsIDMsIDIyNywgMTUyLCA4LCAzLCAKLSAgICAyMjcsIDE0NSwgOCwgMywgMjI3LCAxNDksIDgsIDMsIDIyNywgMTQ4LCA4LCAzLCAyMjcsIDE1MSwgOCwgMywgMjI3LCAxNTAsIAotICAgIDgsIDMsIDIyNywgMTI4LCA4LCAzLCAyMjcsIDEzMCwgOCwgMywgMjI3LCAxMjksIDgsIDMsIDIyNywgMTM0LCA4LCAzLCAKLSAgICAyMjcsIDEzMywgOCwgMywgMjI3LCAxMzgsIDgsIDMsIDIyNywgMTM1LCA4LCAzLCAyMjcsIDEyNiwgOCwgMywgMjI3LCAxMjQsIAotICAgIDgsIDMsIDIyNywgMTMyLCA4LCAzLCAyMjcsIDEyNywgOCwgMywgMjExLCAxNTAsIDgsIDMsIDIxMSwgMTQ5LCA4LCAzLCAKLSAgICAyMTEsIDE1NywgOCwgMywgMjExLCAxNTIsIDgsIDMsIDIxMSwgMTU0LCA4LCAzLCAyMTEsIDE1MywgOCwgMywgMjExLCAxNTYsIAotICAgIDgsIDMsIDIxMSwgMTU1LCA4LCAzLCAyMTEsIDEzOSwgOCwgMywgMjExLCAxNDAsIDgsIDMsIDIxMSwgMTQ0LCA4LCAzLCAKLSAgICAyMTEsIDE0MywgOCwgMywgMjExLCAxNDgsIDgsIDMsIDIxMSwgMTQ2LCA4LCAzLCAyMTEsIDEyMSwgOCwgMywgMjExLCAxMTksIAotICAgIDgsIDMsIDIxMSwgMTMxLCA4LCAzLCAyMTEsIDEyNCwgOCwgMywgMjExLCAxMjIsIDgsIDMsIDIxMSwgMTIzLCA4LCAzLCAKLSAgICAyMTAsIDI1MCwgOCwgMywgMjEwLCAyNDgsIDgsIDMsIDIxMSwgOCwgOCwgMywgMjEwLCAyNTEsIDgsIDMsIDIxMSwgMiwgOCwgCi0gICAgMywgMjExLCAxLCA4LCAzLCAyMTEsIDUsIDgsIDMsIDIxMSwgMywgOCwgMywgMjEwLCAxOTEsIDgsIDMsIDIxMCwgMTkwLCA4LCAKLSAgICAzLCAyMTAsIDE5NCwgOCwgMywgMjEwLCAxOTIsIDgsIDMsIDIxMCwgMjI0LCA4LCAzLCAyMTAsIDIyMSwgOCwgMywgMjEwLCAKLSAgICAyNDQsIDgsIDMsIDIxMCwgMjI4LCA4LCAzLCAyMTAsIDE4MiwgOCwgMywgMjEwLCAxNzgsIDgsIDMsIDIxMCwgMjEyLCA4LCAKLSAgICAzLCAyMTAsIDE4OSwgOCwgMywgMjEwLCAxODUsIDgsIDMsIDIxMCwgMTg2LCA4LCAzLCAyMTAsIDE2MiwgOCwgMywgMjEwLCAKLSAgICAxNjEsIDgsIDMsIDIxMCwgMTY5LCA4LCAzLCAyMTAsIDE2NSwgOCwgMywgMjEwLCAxNjMsIDgsIDMsIDIxMCwgMTY0LCA4LCAKLSAgICAzNCwgMjI0LCAzNiwgOCwgMzQsIDIzMiwgMjQ3LCA4LCAzNCwgMjM0LCA2NywgOCwgMzQsIDIyNywgMTQ1LCA4LCAzNCwgCi0gICAgMjQ5LCA3NywgOCwgMzQsIDIxOCwgMTk0LCA4LCAzNCwgMjQzLCAxOSwgOCwgMzQsIDI0MywgNTEsIDgsIDM0LCAyMzAsIAotICAgIDIzNSwgOCwgMzQsIDI0MCwgMTg3LCA4LCAzNCwgMjMyLCA2MSwgOCwgMzQsIDI1MiwgOTEsIDgsIDM0LCAyMzAsIDEzMSwgOCwgCi0gICAgMzQsIDIxMCwgMjQ0LCA4LCAzNCwgMjI0LCAxMjQsIDgsIDM0LCAyNDAsIDE4MSwgOCwgMzQsIDIxNywgNDcsIDgsIDM0LCAKLSAgICAyNDMsIDE0MiwgOCwgMzQsIDIxMCwgNSwgOCwgMzQsIDI0OSwgNzEsIDgsIDM0LCAyNDgsIDEwMywgOCwgMzQsIDI1MSwgCi0gICAgMTA2LCA4LCAzNCwgMjQzLCAxNSwgOCwgMzQsIDIyNywgMTM1LCA4LCAzNCwgMjE1LCAxMTksIDgsIDM0LCAyMjYsIDE3OSwgCi0gICAgOCwgMzQsIDIzNSwgODAsIDgsIDM0LCAyMTAsIDE5LCA4LCAzNCwgMjI0LCAxMDMsIDgsIDM0LCAyNDEsIDExNSwgOCwgMzQsIAotICAgIDIxMCwgMjUwLCA4LCAzNCwgMjEyLCAxMTIsIDgsIDM0LCAyMTksIDIwMiwgOCwgMzQsIDIxMywgMjQ0LCA4LCAzNCwgMjEwLCAKLSAgICAxMTYsIDgsIDM0LCAyMzUsIDc0LCA4LCAzNCwgMjI3LCAxMDAsIDgsIDM0LCAyMzUsIDc4LCA4LCAzNCwgMjQyLCAxNjEsIDgsIAotICAgIDM0LCAyMzUsIDk4LCA4LCAzNCwgMjExLCAyMjcsIDgsIDM0LCAyNDYsIDg2LCA4LCAzNCwgMjE5LCAyMTUsIDgsIDM0LCAKLSAgICAyMzIsIDI0MiwgOCwgMzQsIDI0OSwgODEsIDgsIDM0LCAyNDksIDExMywgOCwgMzQsIDI1MCwgNDUsIDgsIDM0LCAyNDAsIAotICAgIDE4NCwgOCwgMzQsIDIyMCwgNzQsIDgsIDM0LCAyMTAsIDQsIDgsIDM0LCAyMjAsIDAsIDgsIDM0LCAyNTAsIDEzOSwgOCwgCi0gICAgMzQsIDIwOSwgMjMxLCA4LCAzNCwgMjI5LCAxNzgsIDgsIDM0LCAyMzQsIDE4OCwgMjMyLCAyMDIsIDEsIDI1MiwgMTk5LCAKLSAgICAyMzIsIDIwMiwgMSwgMTkxLCAyMzIsIDIwMiwgMSwgMjI1LCAxNTAsIDIzMiwgMjAyLCAxLCAyNDgsIDIyOSwgMjMyLCAyMDIsIAotICAgIDEsIDIxNywgMTA2LCAyMzIsIDIwMiwgMSwgMjE2LCAyMDksIDIzMiwgMjAyLCAxLCAyNDMsIDE0MiwgMjMyLCAyMDIsIDEsIAotICAgIDE3NiwgMjMyLCAyMDIsIDEsIDIzNCwgMTM4LCAyMzIsIDIwMiwgMSwgMjM1LCAxNDcsIDIzMiwgMjAyLCAxLCAyNTEsIDQxLCAKLSAgICAyMzIsIDIwMiwgMSwgMjUwLCAxNjUsIDIzMiwgMjAyLCAxLCAyNDYsIDQ2LCAyMzIsIDIwMiwgMSwgMjE1LCAxODQsIDIzMiwgCi0gICAgMjAyLCAxLCAyMTUsIDE3NiwgMjMyLCAyMDIsIDEsIDE4NiwgMjMyLCAyMDIsIDEsIDE5OCwgMjMyLCAyMDIsIDEsIDIzMywgCi0gICAgMTQxLCAyMzIsIDIwMiwgMSwgMjA2LCAyMzIsIDIwMiwgMSwgMjEwLCA4MiwgMjMyLCAyMDIsIDEsIDIxMCwgMTE2LCAyMzIsIAotICAgIDIwMiwgMSwgMjI5LCA4MiwgMjMyLCAyMDIsIDEsIDE2MiwgMjMyLCAyMDIsIDEsIDIxMSwgMTY1LCAyMzIsIDIwMiwgMSwgCi0gICAgMjQxLCAxOTYsIDIzMiwgMjAyLCAxLCAyNDQsIDIwNCwgMjMyLCAyMDIsIDEsIDIxMiwgNjUsIDIzMiwgMjAyLCAxLCAyMjAsIAotICAgIDEwNCwgMjMyLCAyMDIsIDEsIDE5MiwgMjMyLCAyMDIsIDEsIDI0MywgMCwgMjMyLCAyMDIsIDEsIDYxLCAyMzIsIDIwMiwgMSwgCi0gICAgMjU0LCAyNTIsIDIzMiwgMjAyLCAxLCA3NiwgMjMyLCAyMDIsIDEsIDI0NSwgNjMsIDIzMiwgMjAyLCAxLCA3NCwgMjMyLCAKLSAgICAyMDIsIDEsIDc4LCAyMzIsIDIwMiwgMSwgNjksIDIzMiwgMjAyLCAxLCAyMTQsIDIxNCwgMjMyLCAyMDIsIDEsIDIxNCwgCi0gICAgMjA4LCAyMzIsIDIwMiwgMSwgMjI2LCAyMzgsIDIzMiwgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDIxNiwgMTE4LCAyMzIsIAotICAgIDIwMiwgMSwgMTM4LCAyMjksIDIzNCwgMjI1LCAxOSwgMjMyLCAyMDIsIDEsIDEzOCwgMjMwLCAzNywgMjQ5LCA4MCwgMjMyLCAKLSAgICAyMDIsIDEsIDEzOCwgMjMwLCAzNywgMjUxLCAyMTMsIDIzMiwgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDE5OCwgMjMyLCAyMDIsIAotICAgIDEsIDEzOCwgMjMwLCAzNywgMjM1LCAxMjEsIDIzMiwgMjAyLCAyMjQsIDE0NCwgMjQ5LCAyMjcsIDIzMiwgMjAyLCAyMjQsIAotICAgIDE0NCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA0MSwgMywgMjQ1LCAyMTcsIDQxLCAzLCAyNDUsIDIxMywgNDEsIDMsIDI0MSwgCi0gICAgMjI3LCA0MSwgMywgMjEyLCAxNywgNDEsIDMsIDIxMiwgMTYsIDQxLCAzLCAyMjUsIDIxNCwgNDEsIDMsIDI1MiwgMjEsIDQxLCAKLSAgICAzLCAyNTIsIDc0LCA0MSwgMywgMjMxLCAxMjEsIDQxLCAzLCAyMzMsIDI1MywgNDEsIDMsIDIzMSwgMTEsIDQxLCAzLCAyNDMsIAotICAgIDgyLCA0MSwgMywgMjQ0LCAxNTUsIDQxLCAzLCAyMTMsIDI1MCwgNDEsIDMsIDIxNywgMTIsIDQxLCAzLCAyMTYsIDE5NSwgCi0gICAgNDEsIDMsIDI0OCwgMjQsIDQxLCAzLCAyNDgsIDIxLCA0MSwgMywgMjMzLCA1NiwgNDEsIDMsIDIyMywgMTExLCA0MSwgMywgCi0gICAgMjQ4LCA4NSwgNDEsIDMsIDIyOSwgMTQ0LCA0MSwgMywgMjIxLCAxNzIsIDQxLCAzLCAyMjAsIDYzLCA0MSwgMywgMjEwLCAKLSAgICA5MiwgNDEsIDMsIDIxMCwgNzMsIDQxLCAzLCAyNTAsIDE5MCwgNDEsIDMsIDIzNSwgMTMwLCA0MSwgMywgMjI4LCAxODEsIAotICAgIDQxLCAzLCAyMTEsIDQ0LCA0MSwgMywgMjM0LCAxODcsIDQxLCAzLCAyMjksIDU2LCA0MSwgMywgMjQzLCA2MiwgNDEsIDMsIAotICAgIDIzMSwgODUsIDQxLCAzLCAyMjksIDEwOCwgNDEsIDMsIDIyNywgMTU5LCA0MSwgMywgNzQsIDQxLCAzLCAyMzYsIDYsIDQxLCAKLSAgICAzLCAyNDEsIDE4NywgNDEsIDMsIDI0MSwgMTY3LCA0MSwgMywgMjExLCAyNTAsIDQxLCAzLCAyMTEsIDI0MSwgNDEsIDMsIAotICAgIDIyNSwgMTExLCA0MSwgMywgMjUyLCAxOSwgNDEsIDMsIDI1MiwgMTQsIDQxLCAzLCAyMzEsIDExNCwgNDEsIDMsIDIzMywgCi0gICAgMjUwLCA0MSwgMywgMjMxLCA4LCA0MSwgMywgMjQzLCA3OCwgNDEsIDMsIDI0NCwgMTI5LCA0MSwgMywgMjEzLCAxNzYsIDQxLCAKLSAgICAzLCAyMTYsIDExOCwgNDEsIDMsIDIxNiwgMTc2LCA0MSwgMywgMjQ4LCAxNiwgNDEsIDMsIDI0OCwgMjAsIDQxLCAzLCAyMzIsIAotICAgIDI0NywgNDEsIDMsIDIyMywgMzgsIDQxLCAzLCAyNDgsIDExLCA0MSwgMywgMjI5LCAxMzgsIDQxLCAzLCAyMTksIDE5MywgCi0gICAgNDEsIDMsIDIyMCwgMzQsIDQxLCAzLCAyMTAsIDQ0LCA0MSwgMywgMjEwLCA2OSwgNDEsIDMsIDI1MCwgNTksIDQxLCAzLCAKLSAgICAyMzUsIDExNCwgNDEsIDMsIDIyOCwgMTc0LCA0MSwgMywgMjExLCA4LCA0MSwgMywgMjM0LCA5OCwgNDEsIDMsIDIyOSwgNDgsIAotICAgIDQxLCAzLCAyNDIsIDIyMSwgNDEsIDMsIDIzMCwgMjM1LCA0MSwgMywgMjI4LCAyMzgsIDQxLCAzLCAyMjcsIDE1MiwgNDEsIAotICAgIDMsIDYxLCA0MSwgMywgMjU0LCAxMzEsIDQxLCAzLCAyMjksIDc3LCA0MSwgMywgMTYyLCA0MSwgMywgMjQyLCAyNSwgNDEsIAotICAgIDMsIDIxMiwgNjUsIDQxLCAzLCAyMTIsIDU1LCA0MSwgMywgMTkxLCA0MSwgMywgMjUyLCAyNiwgNDEsIDMsIDI1MiwgMTk5LCAKLSAgICA0MSwgMywgMjMxLCAxMjksIDQxLCAzLCAyMzQsIDEsIDQxLCAzLCAyMzQsIDAsIDQxLCAzLCAyMzEsIDE1LCA0MSwgMywgCi0gICAgMjQzLCA4NiwgNDEsIDMsIDI0NCwgMjA0LCA0MSwgMywgMjE0LCAyNywgNDEsIDMsIDIxNywgMTA2LCA0MSwgMywgMjE2LCAKLSAgICAyMDksIDQxLCAzLCAyNDgsIDMzLCA0MSwgMywgMjQ4LCAyMywgNDEsIDMsIDIzMywgMTQxLCA0MSwgMywgMjA1LCA0MSwgMywgCi0gICAgMjQ4LCAyMjksIDQxLCAzLCAyMjksIDE1MywgNDEsIDMsIDIwNiwgNDEsIDMsIDIyMCwgMTA0LCA0MSwgMywgMjEwLCAxMTYsIAotICAgIDQxLCAzLCAyMTAsIDgyLCA0MSwgMywgMjUxLCA0MSwgNDEsIDMsIDIzNSwgMTQ3LCA0MSwgMywgMjI4LCAxOTAsIDQxLCAzLCAKLSAgICAxOTIsIDQxLCAzLCAxNzYsIDQxLCAzLCAyMzQsIDI0MCwgNDEsIDMsIDIyOSwgNjEsIDQxLCAzLCAyNDMsIDE0MiwgNDEsIDMsIAotICAgIDE4NiwgNDEsIDMsIDE5OCwgNDEsIDMsIDIyNywgMTY5LCA0MSwgMywgMjI2LCAxODcsIDQxLCAzLCAyMjYsIDE4MywgNDEsIAotICAgIDMsIDI0MSwgNjAsIDQxLCAzLCAyMTEsIDIxNSwgNDEsIDMsIDIxMSwgMjExLCA0MSwgMywgMjI0LCAyNTIsIDQxLCAzLCAKLSAgICAyNTIsIDE3LCA0MSwgMywgMjUxLCAyMDEsIDQxLCAzLCAyMzEsIDEwOSwgNDEsIDMsIDIzMywgMjQ4LCA0MSwgMywgMjMxLCAKLSAgICA0LCA0MSwgMywgMjQzLCA3NCwgNDEsIDMsIDI0NCwgNDIsIDQxLCAzLCAyMTMsIDEyNywgNDEsIDMsIDIxNiwgMTgsIDQxLCAKLSAgICAzLCAyMTYsIDE1NCwgNDEsIDMsIDI0OCwgMTQsIDQxLCAzLCAyNDgsIDE4LCA0MSwgMywgMjMyLCAxMzMsIDQxLCAzLCAyMjIsIAotICAgIDE5OSwgNDEsIDMsIDI0NywgMTMzLCA0MSwgMywgMjI5LCAxMjUsIDQxLCAzLCAyMTksIDQyLCA0MSwgMywgMjIwLCAzLCA0MSwgCi0gICAgMywgMjEwLCAyMSwgNDEsIDMsIDIxMCwgNjYsIDQxLCAzLCAyNDksIDE4MiwgNDEsIDMsIDIzNSwgNjUsIDQxLCAzLCAyMjgsIAotICAgIDE2NCwgNDEsIDMsIDIxMCwgMjI5LCA0MSwgMywgMjM0LCAxNiwgNDEsIDMsIDIyOSwgNDYsIDQxLCAzLCAyNDIsIDE3MSwgCi0gICAgNDEsIDMsIDIzMCwgMTM3LCA0MSwgMywgMjI4LCA2OSwgNDEsIDMsIDIyNywgMTM2LCA0MSwgMywgNjksIDQxLCAzLCAyMTQsIAotICAgIDE5MCwgNDEsIDMsIDI0MCwgMjI5LCA0MSwgMywgMjQwLCAyMTksIDQxLCAzLCAyMTEsIDE5NSwgNDEsIDMsIDIxMSwgMTg5LCAKLSAgICA0MSwgMywgMjI0LCAxNTMsIDQxLCAzLCAyNTIsIDE2LCA0MSwgMywgMjUxLCAxMzMsIDQxLCAzLCAyMzEsIDEwOCwgNDEsIDMsIAotICAgIDIzMywgMjQ2LCA0MSwgMywgMjMxLCAzLCA0MSwgMywgMjQzLCA3MywgNDEsIDMsIDI0MywgMjQxLCA0MSwgMywgMjEyLCAKLSAgICAxMTYsIDQxLCAzLCAyMTUsIDExOSwgNDEsIDMsIDIxNiwgMTM3LCA0MSwgMywgMjQ4LCAxMiwgNDEsIDMsIDI0OCwgMTcsIAotICAgIDQxLCAzLCAyMzIsIDEwMywgNDEsIDMsIDIyMiwgMTQyLCA0MSwgMywgMjQ2LCA4NiwgNDEsIDMsIDIyOSwgMTIwLCA0MSwgMywgCi0gICAgMjE4LCA4NCwgNDEsIDMsIDIxOSwgMjI3LCA0MSwgMywgMjEwLCAxMywgNDEsIDMsIDIxMCwgNjIsIDQxLCAzLCAyNDksIAotICAgIDEyMCwgNDEsIDMsIDIzNSwgNTcsIDQxLCAzLCAyMjgsIDE2MCwgNDEsIDMsIDIxMCwgMjEyLCA0MSwgMywgMjMzLCAyMjMsIAotICAgIDQxLCAzLCAyMjksIDQ1LCA0MSwgMywgMjQyLCAxMjAsIDQxLCAzLCAyMzAsIDEwNywgNDEsIDMsIDIyNywgMjQyLCA0MSwgMywgCi0gICAgMjI3LCAxMzIsIDQxLCAzLCA3OCwgNDEsIDMsIDIyNiwgMjAwLCA0MSwgMywgMjI5LCA1LCA0MSwgMywgMjQxLCA3NSwgNDEsIAotICAgIDMsIDI0MSwgNjMsIDQxLCAzLCAyMTEsIDIyNywgNDEsIDMsIDIxMSwgMjE2LCA0MSwgMywgMjI1LCAxOSwgNDEsIDMsIDI1MiwgCi0gICAgMTgsIDQxLCAzLCAyNTEsIDIxMywgNDEsIDMsIDIzMSwgMTEwLCA0MSwgMywgMjMzLCAyNDksIDQxLCAzLCAyMzEsIDYsIDQxLCAKLSAgICAzLCAyNDMsIDc2LCA0MSwgMywgMjQzLCA3NSwgNDEsIDMsIDI0NCwgNTEsIDQxLCAzLCAyMTMsIDEzOCwgNDEsIDMsIDExMiwgCi0gICAgNDEsIDMsIDIxNiwgMTU3LCA0MSwgMywgMjQ4LCAxNSwgNDEsIDMsIDI0OCwgMTksIDQxLCAzLCAyMzIsIDE2MiwgNDEsIDMsIAotICAgIDIyMiwgMjEzLCA0MSwgMywgMjQ3LCAxNTMsIDQxLCAzLCAyMjksIDEyOSwgNDEsIDMsIDIxOSwgNjAsIDQxLCAzLCAyMjAsIAotICAgIDksIDQxLCAzLCAyMTAsIDIzLCA0MSwgMywgMjEwLCA2NywgNDEsIDMsIDI0OSwgMjQ2LCA0MSwgMywgMjM1LCA3NCwgNDEsIAotICAgIDMsIDIyOCwgMTY1LCA0MSwgMywgMjEwLCAyNDQsIDQxLCAzLCAyMzQsIDM0LCA0MSwgMywgMjI5LCA0NywgNDEsIDMsIDI0MiwgCi0gICAgMTgxLCA0MSwgMywgMjMwLCAxNjYsIDQxLCAzLCAyMjgsIDc5LCA0MSwgMywgMjI3LCAxMzgsIDQxLCAzLCA3NiwgNDEsIDMsIAotICAgIDI0NSwgMTU4LCA0MSwgMywgMjI5LCA2NiwgNDEsIDMsIDI0MSwgMjQ1LCA0MSwgMywgMjQxLCAyMTYsIDQxLCAzLCAyMTIsIAotICAgIDIyLCA0MSwgMywgMjEyLCAxMiwgNDEsIDMsIDIyNSwgMjI0LCA0MSwgMywgMjUyLCAyMiwgNDEsIDMsIDI1MiwgODMsIDQxLCAKLSAgICAzLCAyMzEsIDEyMiwgNDEsIDMsIDIzMywgMjU0LCA0MSwgMywgMjMzLCAyNTIsIDQxLCAzLCAyMzEsIDEyLCA0MSwgMywgCi0gICAgMjQzLCA4MywgNDEsIDMsIDI0MywgODEsIDQxLCAzLCAyNDQsIDE2MiwgNDEsIDMsIDIxMywgMjU1LCA0MSwgMywgMjE3LCAKLSAgICAyMywgNDEsIDMsIDIxNiwgMTk2LCA0MSwgMywgMjQ4LCAyNSwgNDEsIDMsIDI0OCwgMjIsIDQxLCAzLCAyMzMsIDY0LCA0MSwgCi0gICAgMywgMjIzLCAxMzEsIDQxLCAzLCAyNDgsIDk4LCA0MSwgMywgMjI5LCAxNDUsIDQxLCAzLCAyMjEsIDE4MywgNDEsIDMsIAotICAgIDIyMCwgNjUsIDQxLCAzLCAyMTAsIDk0LCA0MSwgMywgMjEwLCA3NCwgNDEsIDMsIDI1MCwgMTk4LCA0MSwgMywgMjM1LCAKLSAgICAxMzIsIDQxLCAzLCAyMjgsIDE4MywgNDEsIDMsIDIxMSwgNDcsIDQxLCAzLCAyMzQsIDE4OCwgNDEsIDMsIDIyOSwgNTcsIAotICAgIDQxLCAzLCAyMjksIDUzLCA0MSwgMywgMjQzLCA2OSwgNDEsIDMsIDI0MywgNTgsIDQxLCAzLCAyMzEsIDk2LCA0MSwgMywgCi0gICAgMjI5LCAxMTIsIDQxLCAzLCAyMjcsIDE2MCwgNDEsIDMsIDIyOSwgODQsIDQxLCAzLCAyMzMsIDI4LCA0MSwgMjQ5LCAyMjcsIAotICAgIDQxLCAyNDMsIDIzNiwgMjE4LCAxMzEsIDQxLCAyMjQsIDE2LCA3OSwgNDEsIDMsIDIyOSwgMTI4LCAyNDQsIDIwNCwgNDEsIAotICAgIDMsIDIyOSwgMTI4LCAxNzYsIDQxLCAzLCAyMjksIDEyOCwgMjE5LCA0MiwgNDEsIDE2LCAyNDQsIDE1MiwgNDEsIDE2LCAKLSAgICAyMzQsIDE4NiwgNDEsIDE2LCAyMTYsIDgyLCA0MSwgMTYsIDIyOCwgMjEzLCA0MSwgMTYsIDI1MiwgMTU1LCA0MSwgMTYsIAotICAgIDI0NCwgMjAzLCA0MSwgMTYsIDIxNywgMTAyLCA0MSwgMTYsIDI0OCwgMTg0LCA0MSwgMTYsIDI0NywgMTMyLCA0MSwgMTYsIAotICAgIDIzMywgMjEyLCA0MSwgMTYsIDIxNiwgMjIsIDQxLCAxNiwgMjQ3LCAxNTIsIDQxLCAxNiwgMjM1LCA2NiwgNDEsIDIxLCAKLSAgICAyMTAsIDg2LCA0MSwgMjEsIDExMSwgNDEsIDIxLCAxMDUsIDQxLCAyMSwgMTU4LCA0MSwgMjEsIDE2MSwgNDEsIDIxLCAxOTAsIAotICAgIDQxLCAyMSwgMTk1LCA0MSwgMjEsIDE5OSwgNDEsIDIxLCAxOTYsIDQxLCAyMSwgMjAxLCA0MSwgMywgMjI5LCAxMjgsIDE4NiwgCi0gICAgNDEsIDMsIDIyOSwgMTI4LCAyNDcsIDE1MywgMzMsIDYsIDEsIDIxMCwgOTAsIDMzLCA0LCAxLCAyMTAsIDkwLCAzMywgNiwgCi0gICAgMSwgMjQ2LCA0MiwgMzMsIDQsIDEsIDI0NiwgNDIsIDMzLCA2LCAxLCAyMjMsIDUyLCAyNDYsIDQ0LCAzMywgNCwgMSwgMjIzLCAKLSAgICA1MiwgMjQ2LCA0NCwgMzMsIDYsIDEsIDIzNSwgMTkyLCAzMywgNCwgMSwgMjM1LCAxOTIsIDMzLCA2LCAxLCAyNDcsIDE2OSwgCi0gICAgMzMsIDQsIDEsIDI0NywgMTY5LCAzMywgNiwgMSwgMjMwLCAxNDUsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjMwLCAxNDUsIAotICAgIDIxNCwgMjA1LCAzMywgNiwgMSwgMjUxLCAxNDQsIDIyNiwgMjA1LCAzMywgNCwgMSwgMjUxLCAxNDQsIDIyNiwgMjA1LCAzMywgCi0gICAgNiwgMSwgMjI5LCA5MiwgMjExLCAzMSwgMzMsIDQsIDEsIDIyOSwgOTIsIDIxMSwgMzEsIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAKLSAgICAyNTIsIDE5MywgMjExLCAzMSwgMzMsIDQsIDEsIDIxMSwgMjgsIDIsIDI1MiwgMTkzLCAyMTEsIDMxLCAzMywgNiwgMSwgCi0gICAgMjM1LCAxOTAsIDIxMSwgNTksIDMzLCA0LCAxLCAyMzUsIDE5MCwgMjExLCA1OSwgMzMsIDYsIDEsIDIyMywgNTIsIDIxMCwgCi0gICAgMjEyLCAzMywgNCwgMSwgMjIzLCA1MiwgMjEwLCAyMTIsIDMzLCA2LCAxLCAyMzUsIDE5MCwgNjEsIDMzLCA0LCAxLCAyMzUsIAotICAgIDE5MCwgNjEsIDMzLCA2LCAxLCAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MCwgOCwgMjMyLCAKLSAgICAxOTgsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUxLCAyMjIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUxLCAyMjIsIDIxMCwgCi0gICAgMTgzLCAzMywgNiwgMSwgMjM1LCAxOTAsIDI1MCwgOCwgMjMyLCAxOTgsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxOTAsIAotICAgIDI1MCwgOCwgMjMyLCAxOTgsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjEwLCAyNDYsIDMzLCA0LCAxLCAyMTAsIDI0NiwgMzMsIAotICAgIDYsIDEsIDIyMywgNTIsIDIxNSwgMTc5LCAzMywgNCwgMSwgMjIzLCA1MiwgMjE1LCAxNzksIDMzLCA2LCAxLCAyMTksIDU0LCAKLSAgICAyNDgsIDk4LCAzMywgNCwgMSwgMjE5LCA1NCwgMjQ4LCA5OCwgMzMsIDYsIDEsIDIxOSwgNTQsIDI0NSwgMTgyLCAzMywgNCwgCi0gICAgMSwgMjE5LCA1NCwgMjQ1LCAxODIsIDMzLCA2LCAxLCAyMTksIDU0LCAyNDUsIDE2NywgMzMsIDQsIDEsIDIxOSwgNTQsIAotICAgIDI0NSwgMTY3LCAzMywgNiwgMSwgMjMwLCAxNDksIDc4LCAzMywgNCwgMSwgMjMwLCAxNDksIDc4LCAzMywgNiwgMSwgMjUxLCAKLSAgICAyNDgsIDc4LCAzMywgNCwgMSwgMjUxLCAyNDgsIDc4LCAzMywgNiwgMSwgNTIsIDIzMCwgMTQ5LCA3OCwgMzMsIDQsIDEsIAotICAgIDUyLCAyMzAsIDE0OSwgNzgsIDMzLCAxLCAyMzAsIDkxLCA3OCwgMzgsIDMzLCAyMTIsIDEwMCwgMzgsIDMzLCAyMTYsIDI0OSwgCi0gICAgMjMwLCAxOTYsIDUwLCAzOCwgMzMsIDI0MCwgMjE4LCAyMzAsIDE5NiwgNTAsIDM4LCAzMywgMjE2LCAxNDksIDIzMCwgMTk2LCAKLSAgICA1MCwgMjE5LCA5NSwgMjUzLCAyMjQsIDM4LCAzMywgMSwgMjE0LCAyMDIsIDIzNiwgNjcsIDM4LCAzMywgMSwgNzQsIDM4LCAKLSAgICAzMywgMSwgMjExLCA4LCAzOCwgMzMsIDEsIDY5LCAzOCwgMzMsIDEsIDI0MiwgMTAsIDUwLCAzOCwgMzMsIDEsIDIxMSwgMjcsIAotICAgIDM4LCAzMywgMSwgMjE5LCA1NCwgNTAsIDM4LCAzMywgMSwgMjI2LCAyMDUsIDM4LCAzMywgMjM0LCAxOTgsIDM4LCAzMywgCi0gICAgMjI1LCAyMzEsIDMzLCAyMzQsIDE5OCwgMzMsIDIyNSwgMjMxLCAzMywgNiwgMSwgMjQ2LCA1NCwgMzMsIDQsIDEsIDI0NiwgCi0gICAgNTQsIDMzLCA2LCAxLCAyNDYsIDM1LCAzMywgNCwgMSwgMjQ2LCAzNSwgMzMsIDYsIDEsIDIxMCwgNTIsIDMzLCA0LCAxLCAKLSAgICAyMTAsIDUyLCAzMywgNiwgMSwgMjUwLCAyMTQsIDMzLCA0LCAxLCAyNTAsIDIxNCwgMzMsIDYsIDEsIDI0NiwgMzMsIDMzLCAKLSAgICA0LCAxLCAyNDYsIDMzLCAzMywgNiwgMSwgMjE3LCAyNCwgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDIxNywgMjQsIDIsIAotICAgIDIzMCwgMjI5LCAxMDMsIDMzLCA2LCAxLCAyMTUsIDc4LCAzMywgNCwgMSwgMjE1LCA3OCwgMzMsIDYsIDEsIDIxNSwgMTYxLCAKLSAgICAzMywgNCwgMSwgMjE1LCAxNjEsIDMzLCA2LCAxLCAyMTUsIDE2NSwgMzMsIDQsIDEsIDIxNSwgMTY1LCAzMywgNiwgMSwgCi0gICAgMjE3LCAyOSwgMzMsIDQsIDEsIDIxNywgMjksIDMzLCA2LCAxLCAyNDAsIDIwNSwgMzMsIDQsIDEsIDI0MCwgMjA1LCAzMywgCi0gICAgNiwgMSwgMjE5LCAyMDgsIDMzLCA0LCAxLCAyMTksIDIwOCwgMzgsIDMzLCAxLCAyMzUsIDE5MCwgNzYsIDIwLCAxLCA2MSwgCi0gICAgMjAsIDEsIDE3NiwgMjAsIDEsIDY5LCAyMCwgMSwgMjMzLCAyMjMsIDIwLCAxLCAyNDUsIDIxNywgMjAsIDEsIDIyMywgMTExLCAKLSAgICAyMCwgMSwgMjE3LCA4NywgMjAsIDEsIDc4LCAyMCwgMSwgMjI3LCAxNTIsIDIwLCAxLCA3NCwgMjAsIDEsIDIzMywgMTQxLCAKLSAgICAyMCwgMSwgMTkxLCAyMCwgMSwgMjIyLCAyNDIsIDIwLCAxLCAyMjMsIDMyLCAyMCwgMSwgMjMzLCA1NSwgMjAsIDEsIDIzMSwgCi0gICAgODQsIDIwLCAxLCAyMTcsIDEwMiwgMjAsIDEsIDIyOSwgMTUxLCAyMCwgMSwgMjI4LCAxODgsIDIwLCAxLCAxOTQsIDIwLCAxLCAKLSAgICAyMTgsIDUsIDIwLCAxLCAyMzAsIDEwNywgMjAsIDEsIDIyMCwgMjksIDIwLCAxLCAyMTksIDE5MywgMjAsIDEsIDIyMCwgMzksIAotICAgIDIwLCAxLCAyMjAsIDEyNSwgMjAsIDEsIDIzMywgMTYxLCAyMCwgMSwgMjM0LCAxNjIsIDIwLCAxLCAyMjcsIDIxMywgMjAsIAotICAgIDEsIDIyNywgMjQyLCAyMCwgMSwgMjI4LCAxNTksIDIwLCAxLCAyMTAsIDIyNiwgMjAsIDEsIDIxOSwgMjI3LCAyMCwgMSwgCi0gICAgMjEwLCAxODcsIDIwLCAxLCAxOTIsIDIwLCAxLCAyMjgsIDE0LCAyMCwgMSwgMjM0LCAxNDgsIDIwLCAxLCAyMjUsIDE1NCwgCi0gICAgMjAsIDEsIDIyOCwgMTgxLCAyMCwgMSwgMjI3LCAyNTEsIDIwLCAxLCAyMjQsIDE0NywgMjAsIDEsIDIxMSwgMTkyLCAyMCwgCi0gICAgMSwgMjI1LCAyMTQsIDIwLCAxLCAyNDQsIDE1NSwgMjAsIDEsIDIyMiwgMTQyLCAyMCwgMSwgMjMyLCAxMDMsIDIwLCAxLCAKLSAgICAyMzAsIDIzNSwgMjAsIDEsIDIyOCwgMjM4LCAyMCwgMSwgMjIzLCA1NCwgMjAsIDEsIDIyMywgMTc0LCAyMCwgMSwgMjM0LCAKLSAgICAxNzEsIDIwLCAxLCAyMjksIDEyLCAyMCwgMSwgMjI5LCA2MSwgMjAsIDEsIDIyOSwgODIsIDIwLCAxLCAyMjAsIDksIDIwLCAKLSAgICAxLCAyMjQsIDE1MCwgMjAsIDEsIDI0MywgMjQxLCAyMCwgMSwgMjQ0LCA0NSwgMjAsIDEsIDIxMiwgNjUsIDIwLCAxLCAxOTgsIAotICAgIDIwLCAxLCAyMzIsIDI0NywgMjAsIDEsIDIyNSwgMTExLCAyMCwgMSwgMjMyLCAxMjUsIDIwLCAxLCAyMzQsIDM0LCAyMCwgMSwgCi0gICAgMjMxLCAxMTksIDIwLCAxLCAyMjMsIDg2LCAyMCwgMSwgMjMxLCA2MywgMjAsIDEsIDE4NiwgMjAsIDEsIDIxNiwgMTE4LCAKLSAgICAyMCwgMSwgMjM0LCA5OCwgMjAsIDEsIDIzMCwgMTY2LCAyMCwgMSwgMjMxLCAxMjcsIDIwLCAxLCAyMTYsIDIzMSwgMjAsIDEsIAotICAgIDIzNCwgMSwgMjAsIDEsIDIxNiwgMjQ4LCAyMCwgMSwgMjI3LCAyNDMsIDIwLCAxLCAyMjEsIDI1MywgMjAsIDEsIDI0NCwgCi0gICAgMjAwLCAyMCwgMSwgMjM0LCAzLCAyMCwgMSwgMjM0LCAzMCwgMjAsIDM4LCAxNjQsIDIzNCwgMTEsIDIwLCAzOCwgMTY0LCAKLSAgICAyMTUsIDExMSwgMjAsIDIyOCwgMTg3LCAyMCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMCwgMjQ5LCAyMzQsIDIwLCAyNDksIAotICAgIDIyNywgMjAsIDIyMCwgMTUyLCAyMCwgMjI0LCAxNiwgNzksIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTAsIDI1NCwgMjI1LCAKLSAgICA2NCwgNTgsIDEsIDI1MCwgMTA0LCAxMzgsIDIxMSwgNzAsIDIyNSwgNjQsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTAsIAotICAgIDI1NCwgMjIwLCA4NiwgNTgsIDEsIDI1MCwgMTA0LCAxMzgsIDIxMSwgNzAsIDIyMCwgODYsIDU4LCAxLCAyNTAsIDEwNCwgCi0gICAgMTM4LCAyMTAsIDI1NCwgMjI0LCAzMywgNTgsIDEsIDI1MCwgMTA0LCAxMzgsIDIxMSwgNzAsIDIyNCwgMzMsIDU4LCAxLCAKLSAgICAyNTAsIDEwNCwgMTM4LCAyMTAsIDI1NCwgMjIyLCAxNDIsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjIsIAotICAgIDE0MiwgNTgsIDEsIDI0NSwgMjgsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMjYsIDEzOCwgMTMwLCAKLSAgICA1OCwgMSwgMjMwLCAyMzAsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMjYsIDEzOCwgMTMwLCA1OCwgCi0gICAgMSwgMjQ1LCAyNywgMjQ2LCAxMjYsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyOCwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgCi0gICAgMTMwLCA1OCwgMSwgMTI1LCAyNDYsIDEyNiwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIzMCwgMjQ2LCAxMjYsIAotICAgIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyNDYsIDEyNiwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIAotICAgIDI3LCAyNDYsIDEyNiwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDI4LCAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIAotICAgIDEsIDEyNSwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIzMCwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAxLCAKLSAgICAxMjEsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyNywgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAxLCA1OSwgNjcsIAotICAgIDEzMCwgNTgsIDEsIDU5LCAyMTksIDk3LCA1OCwgMSwgNTksIDIwMywgMTMwLCA1OCwgMSwgMjMyLCAxMTQsIDQ0LCAyNDksIAotICAgIDE2OSwgMjU0LCAxMTcsIDU4LCAxLCAyMjMsIDE2MCwgMTIwLCA3NSwgNTgsIDEsIDIyMywgMTYwLCAxMjQsIDc1LCA1OCwgMSwgCi0gICAgMjIzLCAxNjAsIDI0NSwgMzksIDc5LCA1OCwgMSwgMjIzLCAxNjAsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIAotICAgIDEyMSwgMjM1LCAyMDAsIDI0NSwgMzksIDc5LCA1OCwgMSwgMjE4LCAxMTMsIDIyLCAxMjUsIDIxNiwgMzEsIDU4LCAxLCAKLSAgICAyMTgsIDExMywgMjIsIDEyMSwgMjE2LCAzMSwgNywgNiwgMSwgMjQ1LCAyMDcsIDI1NCwgMTc5LCA3LCA0LCAxLCAyNDUsIAotICAgIDIwNywgMjU0LCAxNzksIDcsIDYsIDEsIDI0NSwgMjA3LCAyNTQsIDIwNSwgNywgNCwgMSwgMjQ1LCAyMDcsIDI1NCwgMjA1LCAKLSAgICA3LCA2LCAxLCAyNDEsIDIxNCwgNywgNCwgMSwgMjQxLCAyMTQsIDcsIDYsIDEsIDIxNSwgNDAsIDcsIDQsIDEsIDIxNSwgNDAsIAotICAgIDcsIDYsIDEsIDIxNSwgMjMwLCA3LCA0LCAxLCAyMTUsIDIzMCwgNywgNiwgMSwgMjQ5LCAxMTgsIDcsIDQsIDEsIDI0OSwgCi0gICAgMTE4LCA3LCA2LCAxLCAyNDksIDExOSwgMiwgMjQ5LCAyMjcsIDcsIDQsIDEsIDI0OSwgMTE5LCAyLCAyNDksIDIyNywgNywgCi0gICAgMSwgNCwgNiwgMjQ1LCAxNCwgNywgMSwgNCwgNiwgMjIyLCA5MywgNywgNiwgMSwgMjU1LCA4MiwgNywgNCwgMSwgMjU1LCAKLSAgICA4MiwgNywgNiwgMSwgMjU0LCA4MSwgNywgNCwgMSwgMjU0LCA4MSwgNywgNiwgMSwgMjUzLCAyMDAsIDcsIDQsIDEsIDI1MywgCi0gICAgMjAwLCA3LCA2LCAxLCAyNTMsIDE4NCwgNywgNCwgMSwgMjUzLCAxODQsIDcsIDYsIDEsIDI1MywgMTg1LCAyLCAyMDMsIAotICAgIDEzMCwgNywgNCwgMSwgMjUzLCAxODUsIDIsIDIwMywgMTMwLCA3LCA2LCAxLCAyNTMsIDE3NSwgNywgNCwgMSwgMjUzLCAKLSAgICAxNzUsIDcsIDYsIDEsIDIyMywgNTIsIDI1MSwgNzUsIDIsIDI0NywgMTI4LCA3LCA0LCAxLCAyMjMsIDUyLCAyNTEsIDc1LCAKLSAgICAyLCAyNDcsIDEyOCwgNywgNiwgMSwgMjM1LCAzMCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDkxLCA3LCA2LCAxLCAKLSAgICAyMzUsIDMwLCAyLCAyNDgsIDcsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNDgsIDcsIDkxLCA3LCA2LCAxLCAyMzUsIAotICAgIDMwLCAyLCAyMTgsIDEwNSwgMjIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDIxOCwgMTA1LCAyMiwgMjQ4LCAKLSAgICA3LCA5MSwgNywgNiwgMSwgMjUxLCAxNDMsIDE1NiwgNywgNCwgMSwgMjUxLCAxNDMsIDE1NiwgNywgNiwgMSwgMjMzLCAxNTUsIAotICAgIDIsIDEyNSwgOTEsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAxMjUsIDkxLCA3LCA2LCAxLCAxNDQsIDIsIDIwMCwgMjE4LCAKLSAgICAxMDUsIDIyNiwgMTI0LCA3LCA0LCAxLCAxNDQsIDIsIDIwMCwgMjE4LCAxMDUsIDIyNiwgMTI0LCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDIzMiwgMTI5LCA3LCA0LCAxLCAxNDQsIDIsIDIzMiwgMTI5LCA3LCA2LCAxLCAyMjYsIDE4NywgNywgNCwgMSwgMjI2LCAKLSAgICAxODcsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAyMTgsIDEwNSwgMjE2LCAxNDAsIDI0OCwgNDcsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTEwLCAyLCAyMTgsIDEwNSwgMjE2LCAxNDAsIDI0OCwgNDcsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAyNDQsIDYxLCA3LCA0LCAKLSAgICAxLCAyMjYsIDExMCwgMiwgMjQ0LCA2MSwgNywgNiwgMSwgMjI2LCAxMTAsIDIsIDIxOCwgMjMxLCAyMTcsIDc4LCA3LCA0LCAKLSAgICAxLCAyMjYsIDExMCwgMiwgMjE4LCAyMzEsIDIxNywgNzgsIDcsIDYsIDEsIDIyNCwgMTAwLCAyLCAyMTgsIDEwNSwgMjE2LCAKLSAgICAxNDAsIDI0OCwgNDcsIDcsIDQsIDEsIDIyNCwgMTAwLCAyLCAyMTgsIDEwNSwgMjE2LCAxNDAsIDI0OCwgNDcsIDcsIDYsIDEsIAotICAgIDIyNCwgMTAwLCAyLCAyNDgsIDcsIDkxLCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjQ4LCA3LCA5MSwgNywgNiwgMSwgMjIzLCAKLSAgICAyMjcsIDIyMiwgMTg4LCA3LCA0LCAxLCAyMjMsIDIyNywgMjIyLCAxODgsIDcsIDYsIDEsIDIyMiwgMTMyLCAyMjIsIDE4OCwgCi0gICAgNywgNCwgMSwgMjIyLCAxMzIsIDIyMiwgMTg4LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgCi0gICAgMjE0LCAxMDYsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDIxMiwgMTA2LCA3LCA0LCAxLCAyMTIsIDEwNiwgNywgNiwgMSwgCi0gICAgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA0LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDYsIDEsIDIxNiwgMTUzLCAyLCAKLSAgICA5MSwgNywgNCwgMSwgMjE2LCAxNTMsIDIsIDkxLCA3LCA2LCAxLCAyMTYsIDE1MywgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAKLSAgICAyNDgsIDQ3LCA3LCA0LCAxLCAyMTYsIDE1MywgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAyMTMsIAotICAgIDI0NSwgNywgNCwgMSwgMjEzLCAyNDUsIDcsIDYsIDEsIDI0NSwgNzMsIDcsIDQsIDEsIDI0NSwgNzMsIDcsIDYsIDEsIDIzNSwgCi0gICAgMTc4LCA3LCA0LCAxLCAyMzUsIDE3OCwgNywgNiwgMSwgMjQ5LCAyMTUsIDcsIDQsIDEsIDI0OSwgMjE1LCA1OCwgMSwgMjE0LCAKLSAgICAxMzMsIDcsIDQsIDEsIDI0NiwgNzcsIDcsIDQsIDEsIDIzMiwgODksIDcsIDQsIDEsIDIzMCwgODUsIDcsIDQsIDEsIDIyNywgCi0gICAgMjA1LCA3LCA0LCAxLCAyMjIsIDEzMSwgNywgMSwgNCwgNiwgMjIyLCAxMzEsIDcsIDQsIDEsIDIxNSwgMTA5LCA3LCA0LCAxLCAKLSAgICAyMTQsIDE5NywgNywgNiwgMSwgMjM1LCAyMjAsIDI0OSwgNjgsIDcsIDQsIDEsIDIzNSwgMjIwLCAyNDksIDY4LCA3LCA2LCAKLSAgICAxLCAyMzUsIDIyMCwgMjQ1LCAxNCwgNywgNCwgMSwgMjM1LCAyMjAsIDI0NSwgMTQsIDcsIDYsIDEsIDIzNSwgMjIwLCAyNDMsIAotICAgIDIwOSwgNywgNiwgMSwgMjE1LCA5NCwgMjM1LCAyMjAsIDI0MywgMjA5LCA3LCA0LCAxLCAyMTUsIDk0LCAyMzUsIDIyMCwgCi0gICAgMjQzLCAyMDksIDcsIDYsIDEsIDIxNSwgOTQsIDE1NiwgNywgNCwgMSwgMjE1LCA5NCwgMTU2LCA3LCA2LCAxLCAyMzUsIAotICAgIDIyMCwgMTUzLCA3LCA0LCAxLCAyMzUsIDIyMCwgMTUzLCA3LCA2LCAxLCAyMzUsIDIyMCwgMjIyLCA5MywgNywgNCwgMSwgCi0gICAgMjM1LCAyMjAsIDIyMiwgOTMsIDcsIDYsIDEsIDIzNSwgMjIwLCAyMTcsIDE1MywgNywgNCwgMSwgMjM1LCAyMjAsIDIxNywgCi0gICAgMTUzLCA1OCwgMSwgMTIxLCAyNTAsIDM5LCAyNTUsIDIzLCA1OCwgMSwgMjQ5LCAyMzQsIDU4LCAxLCAyMTksIDI1MywgMjQ1LCAKLSAgICAxMDYsIDUwLCA3LCA2LCAxLCAyMjIsIDEsIDcsIDQsIDEsIDIyMiwgMSwgNywgNiwgMSwgMjE1LCA5NCwgMjQyLCA2NywgNywgCi0gICAgNCwgMSwgMjMzLCAxNTUsIDIsIDIyMywgNTgsIDI0MSwgNTksIDIyLCAyNTIsIDQ5LCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAKLSAgICAyNDgsIDQ3LCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNDgsIDQ3LCA3LCA2LCAxLCAyNTEsIDc1LCAyLCAxMzAsIDcsIDQsIDEsIAotICAgIDI1MSwgNzUsIDIsIDEzMCwgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjQzLCAyMTAsIAotICAgIDIsIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjM1LCAzMCwgMiwgMjI2LCAyNTIsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAKLSAgICAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjI2LCAyNTIsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjI2LCAyNTIsIDkxLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgCi0gICAgMjI2LCAyNTIsIDkxLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMTAzLCA1OCwgMSwgNiwgMjQyLCA2OCwgMiwgOTEsIDU4LCAxLCAKLSAgICA0LCAyNywgMjI2LCAyMzgsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDE5NCwgNywgMjQ1LCAxMTEsIDEsIDIyMywgNTIsIDI0NSwgCi0gICAgMTQsIDcsIDI0NSwgMTExLCAxLCAyMjMsIDUyLCAyMjYsIDEwOSwgNywgMjQ1LCAxMTEsIDEsIDIzNSwgMjAwLCAxOTQsIDcsIAotICAgIDI0NSwgMTExLCAxLCAyNDAsIDE2MSwgMjMyLCAxMzUsIDcsIDI0NSwgMTExLCAxLCAyNTQsIDMxLCAxOTQsIDIxNywgMjMxLCAKLSAgICAyMjksIDIxOSwgMSwgNjEsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjQ2LCAKLSAgICA1NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCA2OSwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCA3NiwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAxLCA3OCwgMjE3LCAyMzEsIDIyOSwgMjE5LCA1LCAyNDIsIDQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM0LCAKLSAgICAzNCwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMzQsIDExMSwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyNDIsIDE4MSwgCi0gICAgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyNDIsIDIzMSwgMjE3LCAyMzEsIDIyOSwgMjE5LCA1LCAyNTQsIDgzLCAyMTcsIAotICAgIDIzMSwgMjI5LCAyMTksIDEsIDI0OSwgMjQ2LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI1MCwgOTQsIDIxNywgMjMxLCAKLSAgICAyMjksIDIxOSwgMSwgMjM1LCA3NCwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMzUsIDExNSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAxLCAyMTUsIDEzNCwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMTUsIDE0MCwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAKLSAgICAyNDgsIDExMywgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyNDgsIDEyMiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAxMTIsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE2LCAxNTcsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQ3LCAxNTMsIDIxNywgCi0gICAgMjMxLCAyMjksIDIxOSwgMSwgMjQ4LCAxNSwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMjgsIDc5LCAyMTcsIDIzMSwgMjI5LCAKLSAgICAyMTksIDEsIDIyNSwgMTksIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjI1LCAxMjQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgCi0gICAgMjUxLCAyMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjUyLCAxOCwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMzAsIAotICAgIDE2NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMjIsIDIxMywgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMzIsIDE2MiwgCi0gICAgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMjIsIDE2NywgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyMTksIDYwLCAyMTcsIAotICAgIDIzMSwgMjI5LCAyMTksIDEsIDI0MSwgNzUsIDIxNywgMjMxLCAyMjksIDIxOSwgMjUsIDUsIDYxLCAyMTcsIDIzMSwgMjI5LCAKLSAgICAyMTksIDI1LCA1LCA3NCwgMjE3LCAyMzEsIDIyOSwgMjE5LCAyNSwgNSwgNjksIDIxNywgMjMxLCAyMjksIDIxOSwgMjUsIDUsIAotICAgIDc2LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCAyMjYsIDE4NywgMjE3LCAyMzEsIDIyOSwgMjE5LCAyMjUsIDE1LCAKLSAgICAyMzEsIDE2MywgMjE3LCAyMzEsIDIyOSwgMjE5LCAyMjUsIDE1LCAyMzEsIDE2MiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAyMjUsIAotICAgIDE1LCAyMzEsIDE2MSwgMjE3LCAyMzEsIDIyOSwgMjE5LCAyMjUsIDE1LCAyMzEsIDE2MCwgMjI4LCA2MSwgMjM1LCAyNDcsIAotICAgIDI0NCwgMTAsIDEyMywgMjI0LCAyNCwgMjI4LCA2MSwgMjM1LCAyNDcsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgMjI4LCA2MSwgCi0gICAgMjM1LCAyNDcsIDI0NCwgMTAsIDEzNCwgMjI0LCAyMiwgMjI4LCA2MSwgMjM1LCAyNDcsIDI0NCwgMTAsIDEyMywgMjE5LCAKLSAgICAxMTksIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDI0NSwgMTk2LCAyMjgsIDYxLCAyMzUsIDI0NywgMjQ0LCAKLSAgICAxMCwgMTM0LCAyMTksIDExOCwgMjI4LCA2MSwgMjM1LCAyNDcsIDIyNCwgMjUsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgCi0gICAgMjI1LCA0MywgNzksIDIyOCwgNjEsIDIzNSwgMjQ3LCAyMjIsIDEyMCwgNzksIDIyOCwgNjEsIDIzNSwgMjQ3LCAyMjQsIDI2LCAKLSAgICA3OSwgMjI1LCAxNDcsIDEsIDE3NiwgMjI1LCAxNDcsIDEsIDIzNCwgMTM4LCAyMjUsIDE0NywgMSwgMjQzLCAxNDIsIDIyNSwgCi0gICAgMTQ3LCAxLCAyMjksIDgyLCAyMjUsIDE0NywgMSwgMjUxLCA0MSwgMjI1LCAxNDcsIDEsIDI1MCwgMTY1LCAyMjUsIDE0NywgCi0gICAgMSwgMjM1LCAxNDcsIDIyNSwgMTQ3LCAxLCAyMjcsIDE2OSwgMjI1LCAxNDcsIDEsIDIxNywgMTA2LCAyMjUsIDE0NywgMSwgCi0gICAgMjE2LCAyMDksIDIyNSwgMTQ3LCAxLCAyNDgsIDIyOSwgMjI1LCAxNDcsIDEsIDE5OCwgMjI1LCAxNDcsIDEsIDE5MSwgMjI1LCAKLSAgICAxNDcsIDEsIDIyNSwgMTUwLCAyMjUsIDE0NywgMSwgMjUyLCAxOTksIDIyNSwgMTQ3LCAxLCAxODYsIDIyNSwgMTQ3LCAxLCAKLSAgICAyMTUsIDE4NCwgMjI1LCAxNDcsIDEsIDIxNSwgMTc2LCAyMjUsIDE0NywgMSwgMjQ2LCA0NiwgMjI1LCAxNDcsIDEsIDIxMiwgCi0gICAgNjUsIDIyNSwgMTQ3LCAxLCAyMTAsIDgyLCAyMjUsIDE0NywgMSwgMjEwLCAxMTYsIDIyNSwgMTQ3LCAxLCA0LCA2MSwgMjI1LCAKLSAgICAxNDcsIDEsIDE5MiwgMjI1LCAxNDcsIDEsIDIwNSwgMjI1LCAxNDcsIDEsIDIzMywgMTQxLCAyMjUsIDE0NywgMSwgMjIwLCAKLSAgICAxMDQsIDIyNSwgMTQ3LCAxLCAyMDYsIDIyNSwgMTQ3LCAxLCAxNjIsIDIyNSwgMTQ3LCAxLCA2MSwgMjI1LCAxNDcsIDEsIAotICAgIDc0LCAyMjUsIDE0NywgMSwgNjksIDIyNSwgMTQ3LCAxLCA3NiwgMjI1LCAxNDcsIDEsIDc4LCAyMjUsIDE0NywgMSwgMjI0LCAKLSAgICA5MSwgMjI1LCAxNDcsIDEsIDIxMSwgMTY1LCAyMjUsIDE0NywgMSwgMjQ0LCAyMDQsIDIyNSwgMTQ3LCAxLCAyNDMsIDM2LCAKLSAgICAyMjUsIDE0NywgMSwgMjQ1LCAyMTcsIDIyNSwgMTQ3LCAyMTgsIDc0LCAxLCAyMTIsIDY1LCAyMjUsIDE0NywgMjE4LCA3NCwgCi0gICAgMSwgMTkyLCAyMjUsIDE0NywgMSwgMjE1LCAxNTcsIDIyNSwgMTQ3LCAxLCAyMTUsIDE0NSwgMjI1LCAxNDcsIDEsIDI0OCwgCi0gICAgMTQzLCAyMjUsIDE0NywgMSwgMjI4LCAxMTUsIDIyNSwgMTQ3LCAxLCAyNTQsIDE0OSwgMTkyLCAyMjUsIDE0NywgMSwgMjEzLCAKLSAgICAxMzQsIDIyMCwgMTA0LCAyMjUsIDE0NywgMSwgMjEzLCAxMzUsIDE2MiwgMjI1LCAxNDcsIDEsIDI1MywgMjMxLCAyNDQsIAotICAgIDIwNCwgMjI1LCAxNDcsIDIxOCwgNzQsIDEsIDIwNSwgMjI1LCAxNDcsIDIxOCwgMjYsIDEsIDIwNSwgMjI1LCAxNDcsIDEsIAotICAgIDI1MSwgNywgMjI1LCAxNDcsIDIxOSwgMTU3LCAyNDEsIDI0MywgNzksIDIyNSwgMTQ3LCA1MiwgMjQxLCAyNDMsIDc5LCAKLSAgICAyMjUsIDE0NywgMTY0LCAyMjAsIDk3LCAyMjUsIDE0NywgMTY0LCA1MiwgMjIwLCA5NywgMTc5LCA1LCAyNTQsIDgzLCAxNzksIAotICAgIDUsIDIxMywgMTQ3LCAxNzksIDEsIDYxLCAxNzksIDEsIDI1NSwgODIsIDE3OSwgMSwgNzQsIDE3OSwgMSwgMjM2LCA0MCwgCi0gICAgMTc5LCAxLCA2OSwgMTc5LCAxLCAyMTQsIDExOCwgMTc5LCAxLCAxNDksIDE1MywgMTc5LCAxLCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNzksIDEsIDE0OSwgMTU2LCAxNzksIDEsIDE0OSwgMjMyLCAxOTEsIDE3OSwgMSwgNzYsIDE3OSwgMSwgMjQ1LCAyMTcsIAotICAgIDE3OSwgMSwgMjU0LCAyMTAsIDE3OSwgMSwgNzgsIDE3OSwgMSwgMjI2LCAxODcsIDE3OSwgMSwgMjUzLCAyMDAsIDE3OSwgMSwgCi0gICAgMTc2LCAxNzksIDEsIDIzNCwgMTM4LCAxNzksIDEsIDI0MywgMTQyLCAxNzksIDEsIDI0MywgMCwgMTc5LCAxLCAyMjksIDgyLCAKLSAgICAxNzksIDEsIDI1MSwgNDEsIDE3OSwgMSwgMjUwLCAxNjUsIDE3OSwgMSwgMjM1LCAxNDcsIDE3OSwgMSwgMjM1LCAxMjAsIAotICAgIDE3OSwgMSwgMjI3LCAxNjksIDE3OSwgMSwgMjE1LCAxNTcsIDE3OSwgMSwgMjE1LCAxNDUsIDE3OSwgMSwgMjQ4LCAxNDMsIAotICAgIDE3OSwgMSwgMjQ4LCAxMjcsIDE3OSwgMSwgMjI4LCAxMTUsIDE3OSwgMSwgMjE3LCAxMDYsIDE3OSwgMSwgMjE2LCAyMDksIAotICAgIDE3OSwgMSwgMjQ4LCAyMjksIDE3OSwgMSwgMjQ4LCAzMywgMTc5LCAxLCAxOTgsIDE3OSwgMSwgMTkxLCAxNzksIDEsIDIyNSwgCi0gICAgMTUwLCAxNzksIDEsIDI1MiwgMTk5LCAxNzksIDEsIDI1MiwgMjYsIDE3OSwgMSwgMTg2LCAxNzksIDEsIDE5MiwgMTc5LCAxLCAKLSAgICAyMDUsIDE3OSwgMSwgMjMzLCAxNDEsIDE3OSwgMSwgMjE0LCAyNywgMTc5LCAxLCAyMjAsIDEwNCwgMTc5LCAxLCAyMTgsIAotICAgIDIyNSwgMTc5LCAxLCAyMDYsIDE3OSwgMSwgMTYyLCAxNzksIDEsIDIzMiwgMTkwLCAxNzksIDExNywgNSwgMjQyLCA1MSwgCi0gICAgMTc5LCAyNSwgNSwgMjU1LCA4MiwgMTc5LCAyNSwgNSwgNzQsIDE3OSwgMjUsIDUsIDIzNiwgNDAsIDE3OSwgMjUsIDUsIDY5LCAKLSAgICAxNzksIDI1LCA1LCAyMTQsIDExOCwgMTc5LCAyNSwgNSwgMTQ5LCAxNTMsIDE3OSwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIAotICAgIDE3OSwgMjUsIDUsIDE0OSwgMTU2LCAxNzksIDI1LCA1LCAxNDksIDIzMiwgMTkxLCAxNzksIDI1LCA1LCA3NiwgMTc5LCAyNSwgCi0gICAgNSwgMjQ1LCAyMTcsIDE3OSwgMjUsIDUsIDI1NCwgMjEwLCAxNzksIDI1LCA1LCA3OCwgMTc5LCAyNSwgNSwgMjI2LCAxODcsIAotICAgIDE3OSwgMjUsIDUsIDI1MywgMjAwLCAxNzksIDUsIDIxMywgMTUyLCAxNzksIDI0OCwgMTg2LCAxNzksIDUyLCAyNDgsIDE4NiwgCi0gICAgMTc5LCAyMSwgMjEwLCA4NiwgMTc5LCAyMSwgMTExLCAxNzksIDIxLCAxMDUsIDE3OSwgMjEsIDE1OCwgMTc5LCAyMSwgMTYxLCAKLSAgICAxNzksIDIxLCAxOTAsIDE3OSwgMjEsIDE5NSwgMTc5LCAyMSwgMTk5LCAxNzksIDIxLCAxOTYsIDE3OSwgMjEsIDIwMSwgMzgsIAotICAgIDg0LCAyMSwgMjEwLCA4NiwgMzgsIDg0LCAyMSwgMTExLCAzOCwgODQsIDIxLCAxMDUsIDM4LCA4NCwgMjEsIDE1OCwgMzgsIAotICAgIDg0LCAyMSwgMTYxLCAzOCwgODQsIDIxLCAxOTAsIDM4LCA4NCwgMjEsIDE5NSwgMzgsIDg0LCAyMSwgMTk5LCAzOCwgODQsIAotICAgIDIxLCAxOTYsIDM4LCA4NCwgMjEsIDIwMSwgMzgsIDg0LCAxLCA2MSwgMzgsIDg0LCAxLCA2OSwgMzgsIDg0LCAxLCAxNzYsIAotICAgIDM4LCA4NCwgMSwgMTk4LCAzOCwgODQsIDEsIDE5MSwgMzgsIDg0LCAxLCAyMDUsIDM4LCA4NCwgMSwgMjEzLCAxNzYsIDM4LCAKLSAgICA4NCwgNSwgMjUzLCAxODMsIDg0LCA1LCAyMTksIDE5LCAyNTEsIDcsIDg0LCA1LCAyNTEsIDgsIDIxMywgMTUyLCA4NCwgNSwgCi0gICAgNTIsIDI1MSwgOCwgMjEzLCAxNTIsIDg0LCA1LCAyNTEsIDgsIDEwNSwgODQsIDUsIDI1MSwgOCwgMTU4LCA4NCwgNSwgMjUxLCAKLSAgICA4LCAyNTMsIDE4MywgODQsIDUsIDIyNCwgMTI3LCA4NCwgMjQzLCAxMDcsIDI0NCwgMTExLCA4NCwgMjUwLCAyNDYsIDg0LCAKLSAgICAyNDEsIDIzNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMjEwLCA4NiwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTExLCAKLSAgICAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxMDUsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDE1OCwgMjM0LCAxOTQsIDIzMiwgCi0gICAgMjQ4LCAyMSwgMTYxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxOTAsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDE5NSwgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTk5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxOTYsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMjEsIDIwMSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxNzYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjM0LCAKLSAgICAxMzgsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjQzLCAxNDIsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjI5LCA4MiwgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyMDYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjIwLCAxMDQsIDIzNCwgMTk0LCAKLSAgICAyMzIsIDI0OCwgMSwgMjEwLCAxMTYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjI3LCAxNjksIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMSwgMjE3LCAxMDYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjQwLCAyMzMsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgCi0gICAgMTk4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDE5MSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyMjUsIDE1MCwgMjM0LCAKLSAgICAxOTQsIDIzMiwgMjQ4LCAxLCAxODYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjQ4LCAyMjksIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMSwgMjUyLCAxOTksIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjA1LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDE5MiwgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyMzMsIDE0MSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyMTIsIDY1LCAyMzQsIAotICAgIDE5NCwgMjMyLCAyNDgsIDEsIDIxNiwgMjA5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDE2MiwgMjM0LCAxOTQsIDIzMiwgCi0gICAgMjQ4LCAxLCAyMTQsIDI3LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI1MSwgNDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgCi0gICAgNjEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjI2LCAyMzgsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgNzQsIDIzNCwgMTk0LCAKLSAgICAyMzIsIDI0OCwgMSwgMjI2LCAxODcsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjUsIDIxNCwgMjE0LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDI1LCA3NiwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyNSwgNjksIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjUsIDI0NSwgCi0gICAgMjE3LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCA3OCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxMzgsIDIyNSwgMzMsIDIzNCwgCi0gICAgMTk0LCAyMzIsIDI0OCwgMTM4LCAyNTEsIDIwLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEzOCwgMjUxLCAyMSwgMjI1LCAzMywgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCA1LCAyNDksIDg1LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDUsIDIxOSwgMjAxLCAyMjMsIDk2LCAKLSAgICAxLCAxNzYsIDIyMywgOTYsIDEsIDI0MywgMTQyLCAyMjMsIDk2LCAxLCAyMjksIDgyLCAyMjMsIDk2LCAxLCAyMTcsIDEwNiwgCi0gICAgMjIzLCA5NiwgMSwgMjQ4LCAyMjksIDIyMywgOTYsIDEsIDE5OCwgMjIzLCA5NiwgMSwgMTkxLCAyMjMsIDk2LCAxLCAyNTIsIAotICAgIDE5OSwgMjIzLCA5NiwgMSwgMTg2LCAyMjMsIDk2LCAxLCAyNTEsIDQxLCAyMjMsIDk2LCAxLCAyMzUsIDE0NywgMjIzLCA5NiwgCi0gICAgMSwgMjI3LCAxNjksIDIyMywgOTYsIDEsIDIwNiwgMjIzLCA5NiwgMSwgMjA1LCAyMjMsIDk2LCAxLCAyMzMsIDE0MSwgMjIzLCAKLSAgICA5NiwgMSwgMTkyLCAyMjMsIDk2LCAxLCAyMTIsIDY1LCAyMjMsIDk2LCAxLCAxNjIsIDIyMywgOTYsIDEsIDIzMSwgMTI5LCAKLSAgICAyMjMsIDk2LCAxLCAyMjksIDYxLCAyMjMsIDk2LCAxLCAyMjksIDE1MywgMjIzLCA5NiwgMSwgMjI3LCAxMzksIDIyMywgOTYsIAotICAgIDEsIDYxLCAyMjMsIDk2LCAyNSwgNSwgNzQsIDIyMywgOTYsIDI1LCA1LCA2OSwgMjIzLCA5NiwgMjUsIDUsIDc2LCAyMjMsIAotICAgIDk2LCAyNSwgNSwgMjU0LCAyMTAsIDIyMywgOTYsIDI1LCA1LCA3OCwgMjIzLCA5NiwgMjUsIDUsIDI1MywgMjAwLCAyMjMsIAotICAgIDk2LCAyNSwgNSwgMjQ1LCA2MywgMjIzLCA5NiwgMjUsIDUsIDI0NSwgMjQxLCAyMjMsIDk2LCAxMTcsIDUsIDIyOSwgODQsIAotICAgIDIyMywgOTYsIDExNywgNSwgMjMwLCAzMCwgMjIzLCA5NiwgMTE3LCA1LCAxNTMsIDIyMywgOTYsIDExNywgNSwgMjQyLCA2NywgCi0gICAgMjIzLCA5NiwgMjEzLCAxNTIsIDIyMywgOTYsIDIyMSwgMTc1LCA3OSwgMjQsIDEwMCwgMjE2LCA5OCwgMjQsIDEwMCwgMjE2LCAKLSAgICA5NywgMjQsIDEwMCwgMjE2LCA5NSwgMjQsIDEwMCwgMjE2LCAxMDAsIDI0LCAxMDAsIDIyMywgMjQsIDI0LCAxMDAsIDIyMywgCi0gICAgOCwgMjQsIDEwMCwgMjIzLCAzLCAyNCwgMTAwLCAyMjMsIDUsIDI0LCAxMDAsIDIyMywgMjEsIDI0LCAxMDAsIDIyMywgMTQsIAotICAgIDI0LCAxMDAsIDIyMywgNywgMjQsIDEwMCwgMjIzLCAyNiwgMjQsIDEwMCwgMjIzLCA5LCAyNCwgMTAwLCAyMjMsIDI4LCAyNCwgCi0gICAgMTAwLCAyMjMsIDI1LCAyNCwgMTAwLCAyMzAsIDIxOCwgMjQsIDEwMCwgMjMwLCAyMDksIDI0LCAxMDAsIDIzMCwgMjEyLCAKLSAgICAyNCwgMTAwLCAyMjUsIDgzLCAyNCwgMTAwLCAyMjUsIDk0LCAyNCwgMTAwLCAyMjUsIDk1LCAyNCwgMTAwLCAyMTgsIDIwOSwgCi0gICAgMjQsIDEwMCwgMjM2LCA1MywgMjQsIDEwMCwgMjM2LCA2MCwgMjQsIDEwMCwgMjE4LCAyMjAsIDI0LCAxMDAsIDIxOCwgMjA3LCAKLSAgICAyNCwgMTAwLCAyMjUsIDEzMywgMjQsIDEwMCwgMjQxLCAxNzQsIDI0LCAxMDAsIDIxOCwgMjA0LCAxNTUsIDUsIDIyNiwgMzEsIAotICAgIDE1NSwgNSwgMjUwLCAxOTUsIDE1NSwgNSwgMjMzLCA3MiwgMTU1LCA1LCAyMTEsIDI0MywgMTU1LCAxLCA2MSwgMTU1LCAxLCAKLSAgICAyNDAsIDE2MSwgMjM0LCAxOTcsIDE1NSwgMSwgNzQsIDE1NSwgMSwgMjM2LCA0MCwgMTU1LCAxLCA2OSwgMTU1LCAxLCAyMjYsIAotICAgIDk0LCAyNTAsIDE3MSwgMTU1LCAxLCAyMjksIDgzLCAyMzMsIDM0LCAxNTUsIDEsIDIyOSwgODMsIDIzMywgMzUsIDIyMywgCi0gICAgMTQ1LCAxNTUsIDEsIDc2LCAxNTUsIDEsIDI1NCwgMjEwLCAxNTUsIDEsIDc4LCAxNTUsIDEsIDE3NiwgMTU1LCAxLCAyMzUsIAotICAgIDE5LCAyMjEsIDIzMCwgMTU1LCAxLCAyMzUsIDE5LCAyMzAsIDcxLCAxNTUsIDEsIDI0MywgMTQyLCAxNTUsIDEsIDI0MywgCi0gICAgMTQzLCAyMzAsIDcxLCAxNTUsIDEsIDIyOSwgODIsIDE1NSwgMSwgMjUxLCA0MSwgMTU1LCAxLCAyNTEsIDQyLCAyMzAsIDcxLCAKLSAgICAxNTUsIDEsIDIzNSwgMTQ3LCAxNTUsIDEsIDIyNywgMTcwLCAyMzAsIDcxLCAxNTUsIDEsIDIzNSwgMTQ4LCAyMzEsIDIxMiwgCi0gICAgMTU1LCAxLCAyMjcsIDE2OSwgMTU1LCAxLCAyMTUsIDE1NywgMTU1LCAxLCAyMTUsIDE1OCwgMjMxLCAyMTIsIDE1NSwgMSwgCi0gICAgMjQ4LCAxNDMsIDE1NSwgMSwgMjQ4LCAxNDQsIDIzMSwgMjEyLCAxNTUsIDEsIDIyOSwgMjM0LCAyMzAsIDcxLCAxNTUsIDEsIAotICAgIDIxNywgMTA2LCAxNTUsIDEsIDIxNywgMTA3LCAyMzAsIDcxLCAxNTUsIDEsIDI0OCwgMjI5LCAxNTUsIDEsIDI0OCwgMjMwLCAKLSAgICAyMzEsIDIxMiwgMTU1LCAxLCAxOTgsIDE1NSwgMSwgMTkxLCAxNTUsIDEsIDIyNiwgOTQsIDIzMCwgNzEsIDE1NSwgMSwgCi0gICAgMjUyLCAxOTksIDE1NSwgMSwgMjUyLCAyMDAsIDIzMCwgNzEsIDE1NSwgMSwgMTg2LCAxNTUsIDEsIDE5MiwgMTU1LCAxLCAKLSAgICAyMDUsIDE1NSwgMSwgMjIzLCAxOTEsIDI1NCwgMjE5LCAxNTUsIDEsIDIzMywgMTQxLCAxNTUsIDEsIDIxMiwgNjUsIDE1NSwgCi0gICAgMSwgMjIyLCAzNiwgMjMwLCA3MSwgMTU1LCAxLCAyMjIsIDM2LCAyMzEsIDIxMiwgMTU1LCAxLCAyMDYsIDE1NSwgMSwgMTYyLCAKLSAgICAxNTUsIDUsIDI1MCwgMTk2LCAyMTYsIDI1MSwgMTU1LCAyNSwgNSwgMjE3LCA0OCwgMTU1LCAyNSwgNSwgMjE2LCAzNiwgCi0gICAgMTU1LCAyNSwgNSwgMjExLCAxOTAsIDE1NSwgMjUsIDUsIDIxMSwgMTkxLCAyMzEsIDc0LCAxNTUsIDI1LCA1LCAyMTgsIDQ4LCAKLSAgICAxNTUsIDI1LCA1LCAyMTgsIDQ5LCAyMzEsIDYyLCAxNTUsIDI1LCA1LCAyMTcsIDY2LCAxNTUsIDI1LCA1LCAyNDcsIDIwMiwgCi0gICAgMjMwLCA3MCwgMTU1LCAyNSwgNSwgMjI1LCAxODcsIDE1NSwgMTE3LCA1LCAyMzQsIDE2NCwgMTU1LCAxMTcsIDUsIDIyNSwgCi0gICAgMTk5LCAxNTUsIDExNywgNSwgMjUxLCAyNywgMTU1LCAyMjYsIDQ0LCAxNTUsIDQzLCAyMjMsIDcyLCAxNTUsIDQ0LCAyMjMsIAotICAgIDcyLCAxNTUsIDIyNiwgODMsIDI1NCwgMTI1LCAxNTUsIDIyNiwgODMsIDIzMSwgMjI5LCAxNTUsIDIyNiwgODMsIDIzMiwgCi0gICAgOTMsIDE1NSwgMjI2LCA4MywgMjExLCAyMzgsIDE1NSwgMjI2LCA4MywgMjI2LCA0NSwgMTU1LCAyMjYsIDgzLCAyMzIsIAotICAgIDIxMSwgMTU1LCAyMjYsIDgzLCAyMzIsIDg3LCAxNTUsIDIyNiwgODMsIDI1NSwgMiwgMTU1LCAyMjYsIDgzLCAyNTUsIDMsIAotICAgIDI1NSwgMiwgMTU1LCAyMjYsIDgzLCAyMjUsIDU0LCAxNTUsIDIxNSwgOTQsIDIyNiwgODMsIDIyNSwgNTQsIDE1NSwgMjI2LCAKLSAgICA0MCwgMTU1LCAyMSwgMjEwLCA4NiwgMTU1LCAyMSwgMTExLCAxNTUsIDIxLCAxMDUsIDE1NSwgMjEsIDE1OCwgMTU1LCAyMSwgCi0gICAgMTYxLCAxNTUsIDIxLCAxOTAsIDE1NSwgMjEsIDE5NSwgMTU1LCAyMSwgMTk5LCAxNTUsIDIxLCAxOTYsIDE1NSwgMjEsIAotICAgIDIwMSwgMTU1LCAyMjYsIDgzLCAyMTYsIDcwLCAyMTUsIDEwNywgMTU1LCAyMjYsIDgzLCAyMzUsIDE3NCwgMTcyLCAxLCA2MSwgCi0gICAgMTcyLCAxLCA3NCwgMTcyLCAxLCA2OSwgMTcyLCAxLCA3NiwgMTcyLCAxLCAyNTQsIDIxMCwgMTcyLCAxLCA3OCwgMTcyLCAxLCAKLSAgICAxNzYsIDE3MiwgMSwgMjM0LCAxMzgsIDE3MiwgMSwgMjQzLCAxNDIsIDE3MiwgMSwgMjQzLCAwLCAxNzIsIDEsIDIyOCwgCi0gICAgMjUwLCAxNzIsIDEsIDIyOSwgODIsIDE3MiwgMSwgMjUwLCAxNjUsIDE3MiwgMSwgMjUwLCAxMjAsIDE3MiwgMSwgMjM1LCAKLSAgICAxNDcsIDE3MiwgMSwgMjM1LCAxMjAsIDE3MiwgMSwgMjI4LCAyNDAsIDE3MiwgMSwgMjI4LCAyNDIsIDE3MiwgMSwgMjI4LCAKLSAgICAyNDEsIDE3MiwgMSwgMjE3LCAxMDYsIDE3MiwgMSwgMjE2LCAyMDksIDE3MiwgMSwgMjQ4LCAyMjksIDE3MiwgMSwgMjQ4LCAKLSAgICAzMywgMTcyLCAxLCAyMjcsIDIxMSwgMTcyLCAxLCAxOTgsIDE3MiwgMSwgMjQ4LCAxNDMsIDE3MiwgMSwgMTkxLCAxNzIsIDEsIAotICAgIDIyNCwgMjIzLCAxNzIsIDEsIDIyNSwgMTUwLCAxNzIsIDEsIDI1MiwgMTk5LCAxNzIsIDEsIDI1MiwgMjYsIDE3MiwgMSwgCi0gICAgMjMwLCAxMDAsIDE3MiwgMSwgMTg2LCAxNzIsIDEsIDI1MiwgMTE5LCAxNzIsIDEsIDE5MiwgMTcyLCAxLCAyMDUsIDE3MiwgCi0gICAgMSwgMjMzLCAxNDEsIDE3MiwgMSwgMjE0LCAyNywgMTcyLCAxLCAyMTgsIDIyNSwgMTcyLCAxLCAyMDYsIDE3MiwgMSwgMTYyLCAKLSAgICAxNzIsIDI1LCA1LCAyNTUsIDgyLCAxNzIsIDI1LCA1LCA3NCwgMTcyLCAyNSwgNSwgMjM2LCA0MCwgMTcyLCAyNSwgNSwgCi0gICAgMjQ1LCAyMDMsIDE3MiwgMjUsIDUsIDY5LCAxNzIsIDI1LCA1LCAyMjYsIDIzOCwgMTcyLCAyNSwgNSwgNzgsIDE3MiwgMjUsIAotICAgIDUsIDI1NCwgMjEwLCAxNzIsIDI1LCA1LCAyNTMsIDIwMCwgMTcyLCAyNSwgNSwgMjE0LCAyMTQsIDE3MiwgMTE3LCA1LCAKLSAgICAxOTIsIDE3MiwgMTE3LCA1LCAyMDUsIDE3MiwgMTE3LCA1LCAyMzMsIDE0MSwgMTcyLCAxMTcsIDUsIDIxMiwgNjUsIDE3MiwgCi0gICAgMSwgNDAsIDIzNSwgMjksIDE3MiwgMSwgNDAsIDI0MywgMjA5LCAxNzIsIDEsIDQwLCAyMjksIDg0LCAxNzIsIDExNywgNSwgCi0gICAgNDAsIDIyOSwgODQsIDE3MiwgMSwgNDAsIDI1MCwgMTY2LCAxNzIsIDEsIDQwLCAyMTcsIDE1MywgMTcyLCAxLCA0MCwgMjMwLCAKLSAgICAzMCwgMTcyLCAxLCA0MCwgMjI2LCAxMDksIDE3MiwgMSwgNDAsIDIxMSwgMTE3LCAxNzIsIDEsIDQwLCAxNTMsIDE3MiwgMSwgCi0gICAgNDAsIDE1NiwgMTcyLCAxLCA0MCwgMjE4LCAyMjgsIDE3MiwgMTE3LCA1LCA0MCwgMTk0LCAxNzIsIDExNywgNSwgNDAsIAotICAgIDI0MiwgNjcsIDE3MiwgMjEsIDIxMCwgODYsIDE3MiwgMjEsIDExMSwgMTcyLCAyMSwgMTA1LCAxNzIsIDIxLCAxNTgsIDE3MiwgCi0gICAgMjEsIDE2MSwgMTcyLCAyMSwgMTkwLCAxNzIsIDIxLCAxOTUsIDE3MiwgMjEsIDE5OSwgMTcyLCAyMSwgMTk2LCAxNzIsIDIxLCAKLSAgICAyMDEsIDE3MiwgMjI0LCAxNDQsIDIxOCwgMjUzLCAxNzIsIDIyNCwgMTQ0LCAyNDgsIDE4NiwgMTcyLCAyMjQsIDE0NCwgNTIsIAotICAgIDI0OCwgMTg2LCAxNzIsIDIyNCwgMTQ0LCAyMTUsIDIxMiwgMjQ4LCAxODYsIDY4LCAxLCAyMzQsIDEzMiwgMjQzLCAxNDIsIAotICAgIDY4LCAxLCAyMzQsIDEzMiwgMjUxLCA0MSwgNjgsIDEsIDIzNCwgMTMyLCAyNTAsIDE2NSwgNjgsIDEsIDIzNCwgMTMyLCAKLSAgICAyMzUsIDE0NywgNjgsIDEsIDIzNCwgMTMyLCAyMzUsIDEyMCwgNjgsIDEsIDIzNCwgMTMyLCAyMjcsIDE2OSwgNjgsIDEsIAotICAgIDIzNCwgMTMyLCAyMTUsIDE1NywgNjgsIDEsIDIzNCwgMTMyLCAyMTUsIDE0NSwgNjgsIDEsIDIzNCwgMTMyLCAyNDgsIDE0MywgCi0gICAgNjgsIDEsIDIzNCwgMTMyLCAyNDgsIDEyNywgNjgsIDEsIDIzNCwgMTMyLCAyNDgsIDMzLCA2OCwgMSwgMjM0LCAxMzIsIAotICAgIDE5OCwgNjgsIDEsIDIzNCwgMTMyLCAyMDYsIDY4LCAxLCAyMzQsIDEzMiwgMTYyLCA2OCwgMSwgMjM0LCAxMzIsIDI0MSwgCi0gICAgMTk2LCA2OCwgMSwgMjM0LCAxMzIsIDI0NCwgMjA0LCA2OCwgNTgsIDEsIDIzNCwgMTMyLCAyMjMsIDExMiwgNjgsIDEsIAotICAgIDIzNCwgMTMyLCAyMTEsIDE2NSwgNjgsIDEsIDIzNCwgMTMyLCAyMTAsIDExNiwgNjgsIDEsIDIzNCwgMTMyLCAyMDUsIDY4LCAKLSAgICAyMzIsIDE1MSwgMjM0LCAxMzIsIDIyNywgMSwgNjgsIDIzMiwgMTUxLCAyMzQsIDEzMiwgMjI0LCA0NiwgNjgsIDIzMiwgCi0gICAgMTUxLCAyMzQsIDEzMiwgMjQxLCAxMjgsIDY4LCAxNiwgMjU0LCAxOTksIDI0NSwgMzgsIDY4LCAxNiwgMjU0LCAxOTksIAotICAgIDExMSwgNjgsIDE2LCAyNTQsIDE5OSwgMTA1LCA2OCwgMSwgMjU0LCAxOTksIDIwNSwgNjgsIDUsIDIyNiwgMjcsIDIzNCwgCi0gICAgMjE5LCAyMTYsIDMxLCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMzQsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAzNCwgMzksIAotICAgIDIwOCwgMSwgMTIxLCAyMzQsIDExMSwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDExMSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIAotICAgIDEyMCwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDEyMCwgMzksIDIwOCwgMSwgMTIxLCAyNDIsIDE4MSwgMzksIDIwOCwgMSwgCi0gICAgMTI1LCAyNDIsIDE4MSwgMzksIDIwOCwgMSwgMTIxLCAyMjksIDksIDM5LCAyMDgsIDEsIDEyNSwgMjI5LCA5LCAzOSwgMjA4LCAKLSAgICAxLCAxMjEsIDI0OSwgMjQ2LCAzOSwgMjA4LCAxLCAxMjUsIDI0OSwgMjQ2LCAzOSwgMjA4LCAxLCAxMjEsIDI1MCwgOTQsIAotICAgIDM5LCAyMDgsIDEsIDEyNSwgMjUwLCA5NCwgMzksIDIwOCwgMSwgMTIxLCAyMTksIDYwLCAzOSwgMjA4LCAxLCAxMjUsIDIxOSwgCi0gICAgNjAsIDM5LCAyMDgsIDEsIDEyMSwgMjI3LCAxMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjI3LCAxMzgsIDM5LCAyMDgsIDEsIAotICAgIDEyMSwgMjQ3LCAxNTMsIDM5LCAyMDgsIDEsIDEyNSwgMjQ3LCAxNTMsIDM5LCAyMDgsIDEsIDEyMSwgMTEyLCAzOSwgMjA4LCAKLSAgICAxLCAxMjUsIDExMiwgMzksIDIwOCwgMSwgMTIxLCAyMTYsIDE1NywgMzksIDIwOCwgMSwgMTI1LCAyMTYsIDE1NywgMzksIAotICAgIDIwOCwgMSwgMTIxLCAyMjgsIDc5LCAzOSwgMjA4LCAxLCAxMjUsIDIyOCwgNzksIDM5LCAyMDgsIDEsIDEyMSwgMjUxLCAKLSAgICAyMTMsIDM5LCAyMDgsIDEsIDEyNSwgMjUxLCAyMTMsIDM5LCAyMDgsIDEsIDEyMSwgMjI1LCAxOSwgMzksIDIwOCwgMSwgCi0gICAgMTI1LCAyMjUsIDE5LCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTI0LCAzOSwgMjA4LCAxLCAxMjUsIDIyNSwgMTI0LCAzOSwgCi0gICAgMjA4LCAxLCAxMjEsIDI0NCwgNTEsIDM5LCAyMDgsIDEsIDEyNSwgMjQ0LCA1MSwgMzksIDIwOCwgMSwgMTIxLCAyMzAsIAotICAgIDE2NiwgMzksIDIwOCwgMSwgMTI1LCAyMzAsIDE2NiwgMzksIDIwOCwgMSwgMTIxLCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgCi0gICAgMTI1LCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTIxLCAyMjIsIDIxMywgMzksIDIwOCwgMSwgMTI1LCAyMjIsIDIxMywgMzksIAotICAgIDIwOCwgMSwgMTIxLCAyMzIsIDE2MiwgMzksIDIwOCwgMSwgMTI1LCAyMzIsIDE2MiwgMzksIDIwOCwgMSwgMTIxLCAyMTMsIAotICAgIDEzOCwgMzksIDIwOCwgMSwgMTI1LCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgMTIxLCAyNDEsIDc1LCAzOSwgMjA4LCAxLCAKLSAgICAxMjUsIDI0MSwgNzUsIDM5LCAyMDgsIDEsIDEyMSwgNzgsIDM5LCAyMDgsIDEsIDEyNSwgNzgsIDM5LCAyMDgsIDIzMSwgCi0gICAgMjA5LCAyMzQsIDIzNiwgMzksIDIwOCwgMjUsIDI1NSwgODIsIDM5LCAyMDgsIDI1LCA3NCwgMzksIDIwOCwgMjUsIDIxNCwgCi0gICAgMjE0LCAzOSwgMjA4LCAyNSwgNjksIDM5LCAyMDgsIDI1LCA3NiwgMzksIDIwOCwgMjUsIDc4LCAzOSwgMjA4LCAyMzEsIAotICAgIDIwOSwgMjM0LCAxMTQsIDM5LCAyMDgsIDI1LCAyNDAsIDEyNiwgMzksIDIwOCwgMjUsIDIxNCwgMjEzLCAzOSwgMjA4LCAyNSwgCi0gICAgMjE0LCAyMjksIDM5LCAyMDgsIDI1LCAyNTMsIDE5OCwgMzksIDIwOCwgMjUsIDI1MywgMTc1LCAzOSwgMjA4LCAyNSwgMjU0LCAKLSAgICAxMzEsIDM5LCAyMDgsIDI1LCAyNTQsIDE0NCwgMzksIDIwOCwgMTM4LCAyMzEsIDIwOSwgMjQ1LCAxODgsIDM5LCAyMDgsIAotICAgIDEzOCwgMjMxLCAyMDksIDIyNywgMjEwLCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA5LCAyMTYsIDE1NywgMzksIDIwOCwgMTM4LCAKLSAgICAyMzEsIDIwOSwgMjE5LCA0NCwgMzksIDIwOCwgMTYsIDIzNCwgMTksIDM5LCAyMDgsIDE2LCAyMjcsIDIxMCwgMzksIDIwOCwgCi0gICAgMTYsIDIyMSwgMjU1LCAzOSwgMjA4LCAxNiwgMjQxLCA3NiwgMjQxLCA3MSwgMzksIDIwOCwgMTYsIDIzNCwgMjgsIDIzNCwgCi0gICAgMjcsIDE4OCwgMTg3LCAxLCA3NiwgMTg4LCAxODcsIDEsIDc4LCAxODgsIDE4NywgMSwgMjUwLCAxNjUsIDE4OCwgMTg3LCAxLCAKLSAgICAyMjcsIDE2OSwgMTg4LCAxODcsIDEsIDIxNSwgMTU3LCAxODgsIDE4NywgMSwgMjE1LCAxNDUsIDE4OCwgMTg3LCAxLCAyNDgsIAotICAgIDE0MywgMTg4LCAxODcsIDEsIDI0OCwgMTI3LCAxODgsIDE4NywgMSwgMjI4LCAxMTUsIDE4OCwgMTg3LCAxLCAyMjAsIDEwNCwgCi0gICAgMTg4LCAxODcsIDEsIDIxOCwgMjI1LCAxODgsIDE4NywgMjUsIDUsIDIzNiwgNDAsIDE4OCwgMTg3LCAyNSwgNSwgMjE0LCAKLSAgICAxMTgsIDE4OCwgMTg3LCAyNSwgNSwgMjU1LCA0NiwgMTg4LCAxODcsIDI1LCA1LCAyNTMsIDIwMCwgMTg4LCAxODcsIDI1LCAKLSAgICA1LCAyNTUsIDM5LCAxODgsIDE4NywgMjUwLCAxMzMsIDE4OCwgMTg3LCAyNTQsIDIxNSwgMjM0LCAxMDQsIDE4OCwgMTg3LCAKLSAgICAyNTQsIDExMSwgMTg4LCAxODcsIDMsIDIyMywgNzcsIDc5LCAxODgsIDE4NywgMjExLCAyMDksIDIyMywgNzcsIDc5LCAxODgsIAotICAgIDE4NywgMjUsIDUsIDIxMywgMTQ3LCAxODgsIDE4NywgMjEzLCAxNTIsIDI5LCAzLCAyMTUsIDEzOCwgMjksIDMsIDIxNSwgCi0gICAgMTQxLCAyOSwgMywgMjE1LCAxNDQsIDI5LCAzLCAyMTUsIDE0MiwgMjksIDMsIDIxNSwgMTQzLCAyOSwgMywgMjE1LCAxNDAsIAotICAgIDI5LCAzLCAyNDgsIDEyMSwgMjksIDMsIDI0OCwgMTIzLCAyOSwgMywgMjQ4LCAxMjYsIDI5LCAzLCAyNDgsIDEyNCwgMjksIAotICAgIDMsIDI0OCwgMTI1LCAyOSwgMywgMjQ4LCAxMjIsIDI5LCAzLCAyNDYsIDM2LCAyOSwgMywgMjQ2LCAzOSwgMjksIDMsIDI0NiwgCi0gICAgNDUsIDI5LCAzLCAyNDYsIDQzLCAyOSwgMywgMjQ2LCA0NCwgMjksIDMsIDI0NiwgMzcsIDI5LCAzLCAyNTAsIDIxMiwgMjksIAotICAgIDMsIDI1MCwgMjA2LCAyOSwgMywgMjUwLCAyMDgsIDI5LCAzLCAyNTAsIDIxMSwgMjksIDMsIDI1MCwgMjA5LCAyOSwgMywgCi0gICAgMjUwLCAyMTAsIDI5LCAzLCAyNTAsIDIwNywgMjksIDMsIDI1MiwgMTE5LCAyOSwgMywgMjUyLCA5OCwgMjksIDMsIDI1MiwgCi0gICAgMTEwLCAyOSwgMywgMjUyLCAxMTgsIDI5LCAzLCAyNTIsIDExMywgMjksIDMsIDI1MiwgMTE0LCAyOSwgMywgMjUyLCAxMDIsIAotICAgIDE4OCwgMTg3LCAxLCAyMzQsIDI1LCAxODgsIDE4NywgMSwgMjIxLCAyNTUsIDE4OCwgMTg3LCAxLCAyMzMsIDExNSwgMTg4LCAKLSAgICAxODcsIDEsIDIzMCwgMTc3LCAxODgsIDE4NywgMSwgMTkxLCAxODgsIDE4NywgMSwgMTk4LCAxODgsIDE4NywgMSwgMjUwLCAKLSAgICAxMTAsIDE4OCwgMTg3LCAxLCAyMTYsIDkxLCAxODgsIDE4NywgMSwgMjM0LCAxMDcsIDE4OCwgMTg3LCAxLCAyMjgsIDI1NSwgCi0gICAgMTg4LCAxODcsIDEsIDIxNiwgMTUxLCAxODgsIDE4NywgMSwgMjEyLCA2MCwgMTg4LCAxODcsIDEsIDIxMSwgNjksIDE4OCwgCi0gICAgMTg3LCAxLCAyNDAsIDIyMywgMTg4LCAxODcsIDEsIDIxNCwgMTkwLCAxODgsIDE4NywgMSwgNzQsIDE4OCwgMTg3LCAxLCAKLSAgICAyMjUsIDE0NSwgMTg4LCAxODcsIDEsIDI1MywgMjEwLCAxODgsIDE4NywgMSwgMjQyLCAxNzQsIDE4OCwgMTg3LCAxLCAyMzUsIAotICAgIDExOCwgMTg4LCAxODcsIDEsIDIyMywgMTY5LCAxODgsIDE4NywgMSwgMjUyLCAxOTksIDE4OCwgMTg3LCAxLCAyMzUsIDEwNiwgCi0gICAgMTg4LCAxODcsIDEsIDI0NywgMjI3LCAxODgsIDE4NywgMSwgMjQyLCAyMjgsIDE4OCwgMTg3LCAxLCAyNDgsIDEzLCAxODgsIAotICAgIDE4NywgMSwgMjUyLCAyNCwgMTg4LCAxODcsIDEsIDIzNCwgMjYsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjMzLCAxMTYsIAotICAgIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjMwLCAxNzgsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjI2LCA5NCwgMjMyLCAKLSAgICAxMzQsIDE4OCwgMTg3LCAxLCAyMjksIDIzNCwgMjMyLCAxMzQsIDE4OCwgMTg3LCAxLCAyMTYsIDkyLCAyMzIsIDEzNCwgCi0gICAgMTg4LCAxODcsIDEsIDIyOSwgMCwgMjMyLCAxMzQsIDE4OCwgMTg3LCAxLCAyNDAsIDE2MSwgMjMyLCAxMzQsIDE4OCwgMTg3LCAKLSAgICAyNSwgNSwgMjI2LCAxOTksIDE4OCwgMTg3LCAyNSwgNSwgMjM2LCA0LCAxODgsIDE4NywgMjUsIDUsIDI1NCwgMTMwLCAxODgsIAotICAgIDE4NywgMjUsIDUsIDIxMSwgMzgsIDE4OCwgMTg3LCAyNSwgNSwgMjE5LCAzNCwgMTg4LCAxODcsIDI1LCA1LCAyMTQsIDE4NywgCi0gICAgMTg4LCAxODcsIDI1LCA1LCAyNTAsIDEzMSwgMTg4LCAxODcsIDI1LCA1LCAyMjcsIDE5NSwgMTg4LCAxODcsIDI1MCwgMTMyLCAKLSAgICAxODgsIDE4NywgMjMyLCA5MCwgMjM1LCAxNTYsIDE4OCwgMTg3LCAyNTQsIDU0LCAyMzUsIDE1NiwgMTg4LCAxODcsIDIxLCAKLSAgICAyMTAsIDg2LCAxODgsIDE4NywgMjEsIDExMSwgMTg4LCAxODcsIDIxLCAxMDUsIDE4OCwgMTg3LCAyMSwgMTU4LCAxODgsIAotICAgIDE4NywgMjEsIDE2MSwgMTg4LCAxODcsIDIxLCAxOTAsIDE4OCwgMTg3LCAyMSwgMTk1LCAxODgsIDE4NywgMjEsIDE5OSwgCi0gICAgMTg4LCAxODcsIDIxLCAxOTYsIDE4OCwgMTg3LCAyMSwgMjAxLCAyNCwgMTQzLCAyMjcsIDgxLCAyNCwgMTQzLCAyMjcsIDg2LCAKLSAgICAyNCwgMTQzLCAyMTAsIDI0MywgMjQsIDE0MywgMjEwLCAyNDIsIDI0LCAxNDMsIDIxMCwgMjQxLCAyNCwgMTQzLCAyMTUsIAotICAgIDIzLCAyNCwgMTQzLCAyMTUsIDI2LCAyNCwgMTQzLCAyMTAsIDIxMCwgMjQsIDE0MywgMjEwLCAyMDYsIDI0LCAxNDMsIDI0NSwgCi0gICAgNjIsIDI0LCAxNDMsIDI0NSwgNjAsIDI0LCAxNDMsIDI0NSwgNjEsIDI0LCAxNDMsIDI0NSwgNTgsIDI0LCAxNDMsIDI0MCwgCi0gICAgMTUxLCAyNCwgMTQzLCAyNDAsIDE1MCwgMjQsIDE0MywgMjQwLCAxNDgsIDI0LCAxNDMsIDI0MCwgMTQ5LCAyNCwgMTQzLCAKLSAgICAyNDAsIDE1NCwgMjQsIDE0MywgMjQwLCAxNDcsIDI0LCAxNDMsIDI0MCwgMTQ2LCAyNCwgMTQzLCAyNDAsIDE1NiwgMjQsIAotICAgIDE0MywgMjU0LCA0MSwgMjQsIDE0MywgMjU0LCA0MCwgMjQsIDkwLCAyMjgsIDIyNCwgMjQsIDkwLCAyMjgsIDIzMCwgMjQsIAotICAgIDkwLCAyMTgsIDIwNiwgMjQsIDkwLCAyMTgsIDIwNSwgMjQsIDkwLCAyMTYsIDk3LCAyNCwgOTAsIDIxNiwgOTUsIDI0LCA5MCwgCi0gICAgMjE2LCA5NCwgMjQsIDkwLCAyMTYsIDEwMCwgMjQsIDkwLCAyMTYsIDEwMSwgMjQsIDkwLCAyMTYsIDkzLCAyNCwgOTAsIAotICAgIDIyMywgOCwgMjQsIDkwLCAyMjMsIDIzLCAyNCwgOTAsIDIxOCwgMjEyLCAyNCwgOTAsIDIyMywgMjAsIDI0LCA5MCwgMjIzLCAKLSAgICAxMCwgMjQsIDkwLCAyMjMsIDEyLCAyNCwgOTAsIDIyMiwgMjU1LCAyNCwgOTAsIDIyMywgMCwgMjQsIDkwLCAyMzQsIDIyNCwgCi0gICAgMjQsIDkwLCAyMzAsIDIxNywgMjQsIDkwLCAyMzAsIDIxMSwgMjQsIDkwLCAyMTgsIDIxNiwgMjQsIDkwLCAyMzAsIDIxNCwgCi0gICAgMjQsIDkwLCAyMzAsIDIyMCwgMjQsIDkwLCAyMjUsIDc5LCAyNCwgOTAsIDIyNSwgODgsIDI0LCA5MCwgMjI1LCA5MiwgMjQsIAotICAgIDkwLCAyMTgsIDIxNCwgMjQsIDkwLCAyMjUsIDgyLCAyNCwgOTAsIDIyNSwgOTYsIDI0LCA5MCwgMjI1LCA5NywgMjQsIDkwLCAKLSAgICAyMTksIDE0MiwgMjQsIDkwLCAyMTksIDE0NSwgMjQsIDkwLCAyMTgsIDIxMCwgMjQsIDkwLCAyMTgsIDIwOCwgMjQsIDkwLCAKLSAgICAyMTksIDE0MCwgMjQsIDkwLCAyMTksIDE0OCwgMjQsIDkwLCAyMTksIDE0OSwgMjQsIDkwLCAyMTksIDEzNCwgMjQsIDkwLCAKLSAgICAyMTksIDE0NywgMjQsIDkwLCAyMjYsIDM0LCAyNCwgOTAsIDIyNiwgMzUsIDI0LCA5MCwgMjExLCAyNCwgMjQsIDkwLCAyMTEsIAotICAgIDI1LCAyNCwgOTAsIDI1MCwgNTIsIDI0LCA5MCwgMjUwLCA1MSwgMjQsIDkwLCAyMTgsIDIyMSwgMjQsIDkwLCAyMjUsIDEzMSwgCi0gICAgMjQsIDkwLCAyMjUsIDEzMCwgMTAsIDE0LCAyMzgsIDMxLCAxMCwgMTQsIDIzOCwgMzAsIDEwLCAxNCwgMjM4LCAyOSwgMTAsIAotICAgIDE0LCAyMzgsIDI4LCAxMCwgMTQsIDIzOCwgMjcsIDEwLCAxNCwgMjM4LCAyNiwgMTAsIDE0LCAyMzgsIDI1LCAxMCwgMTQsIAotICAgIDIzOCwgMjQsIDEwLCAxNCwgMjM4LCAyMywgMTAsIDE0LCAyMzgsIDIyLCAxMCwgMTQsIDIzOCwgMjEsIDEwLCAxNCwgMjM4LCAKLSAgICAyMCwgMTAsIDE0LCAyMzgsIDE5LCAxMCwgMTQsIDIzOCwgMTgsIDEwLCAxNCwgMjM4LCAxNywgMTAsIDE0LCAyMzgsIDE2LCAKLSAgICAxMCwgMTQsIDIzOCwgMTUsIDEwLCAxNCwgMjM4LCAxNCwgMTAsIDE0LCAyMzgsIDEzLCAxMCwgMTQsIDIzOCwgMTIsIDEwLCAKLSAgICAxNCwgMjM4LCAxMSwgMTAsIDE0LCAyMzgsIDEwLCAxMCwgMTQsIDIzOCwgOSwgMTAsIDE0LCAyMzgsIDgsIDEwLCAxNCwgCi0gICAgMjM4LCA3LCAxMCwgMTQsIDIzOCwgNiwgMTAsIDE0LCAyMzgsIDUsIDEwLCAxNCwgMjM4LCA0LCAxMCwgMTQsIDIzOCwgMywgCi0gICAgMTAsIDE0LCAyMzgsIDIsIDEwLCAxNCwgMjM4LCAxLCAxMCwgMTQsIDIzOCwgMCwgMTAsIDE0LCAyMzcsIDI1NSwgMTAsIDE0LCAKLSAgICAyMzcsIDI1NCwgMTAsIDE0LCAyMzcsIDI1MywgMTAsIDE0LCAyMzcsIDI1MiwgMTAsIDE0LCAyMzcsIDI1MSwgMTAsIDE0LCAKLSAgICAyMzcsIDI1MCwgMTAsIDE0LCAyMzcsIDI0OSwgMTAsIDE0LCAyMzcsIDI0OCwgMTAsIDE0LCAyMzcsIDI0NywgMTAsIDE0LCAKLSAgICAyMzcsIDI0NiwgMTAsIDE0LCAyMzcsIDI0NSwgMTAsIDE0LCAyMzcsIDI0NCwgMTAsIDE0LCAyMzcsIDI0MywgMTAsIDE0LCAKLSAgICAyMzcsIDI0MiwgMTAsIDE0LCAyMzcsIDI0MSwgMTAsIDE0LCAyMzcsIDI0MCwgMTAsIDE0LCAyMzcsIDIzOSwgMTAsIDE0LCAKLSAgICAyMzcsIDIzOCwgMTAsIDE0LCAyMzcsIDIzNywgMTAsIDE0LCAyMzcsIDIzNiwgMTAsIDE0LCAyMzcsIDIzNSwgMTAsIDE0LCAKLSAgICAyMzcsIDIzNCwgMTAsIDE0LCAyMzcsIDIzMywgMTAsIDE0LCAyMzcsIDIzMiwgMTAsIDE0LCAyMzcsIDIzMSwgMTAsIDE0LCAKLSAgICAyMzcsIDIzMCwgMTAsIDE0LCAyMzcsIDIyOSwgMTAsIDE0LCAyMzcsIDIyOCwgMTAsIDE0LCAyMzcsIDIyNywgMTAsIDE0LCAKLSAgICAyMzcsIDIyNiwgMTAsIDE0LCAyMzcsIDIyNSwgMTAsIDE0LCAyMzcsIDIyNCwgMTAsIDE0LCAyMzcsIDIyMywgMTAsIDE0LCAKLSAgICAyMzcsIDIyMiwgMTAsIDE0LCAyMzcsIDIyMSwgMTAsIDE0LCAyMzcsIDIyMCwgMTAsIDE0LCAyMzcsIDIxOSwgMTAsIDE0LCAKLSAgICAyMzcsIDIxOCwgMTAsIDE0LCAyMzcsIDIxNywgMTAsIDE0LCAyMzcsIDIxNiwgMTAsIDE0LCAyMzcsIDIxNSwgMTAsIDE0LCAKLSAgICAyMzcsIDIxNCwgMTAsIDE0LCAyMzcsIDIxMywgMTAsIDE0LCAyMzcsIDIxMiwgMTAsIDE0LCAyMzcsIDIxMSwgMTAsIDE0LCAKLSAgICAyMzcsIDIxMCwgMTAsIDE0LCAyMzcsIDIwOSwgMTAsIDE0LCAyMzcsIDIwOCwgMTAsIDE0LCAyMzcsIDIwNywgMTAsIDE0LCAKLSAgICAyMzcsIDIwNiwgMTAsIDE0LCAyMzcsIDIwNSwgMTAsIDE0LCAyMzcsIDIwNCwgMTAsIDE0LCAyMzcsIDIwMywgMTAsIDE0LCAKLSAgICAyMzcsIDIwMiwgMTAsIDE0LCAyMzcsIDIwMSwgMTAsIDE0LCAyMzcsIDIwMCwgMTAsIDE0LCAyMzcsIDE5OSwgMTAsIDE0LCAKLSAgICAyMzcsIDE5OCwgMTAsIDE0LCAyMzcsIDE5NywgMTAsIDE0LCAyMzcsIDE5NiwgMTAsIDE0LCAyMzcsIDE5NSwgMTAsIDE0LCAKLSAgICAyMzcsIDE5NCwgMTAsIDE0LCAyMzcsIDE5MywgMTAsIDE0LCAyMzcsIDE5MiwgMTAsIDE0LCAyMzcsIDE5MSwgMTAsIDE0LCAKLSAgICAyMzcsIDE5MCwgMTAsIDE0LCAyMzcsIDE4OSwgMTAsIDE0LCAyMzcsIDE4OCwgMTAsIDE0LCAyMzcsIDE4NywgMTAsIDE0LCAKLSAgICAyMzcsIDE4NiwgMTAsIDE0LCAyMzcsIDE4NSwgMTAsIDE0LCAyMzcsIDE4NCwgMTAsIDE0LCAyMzcsIDE4MywgMTAsIDE0LCAKLSAgICAyMzcsIDE4MiwgMTAsIDE0LCAyMzcsIDE4MSwgMTAsIDE0LCAyMzcsIDE4MCwgMTAsIDE0LCAyMzcsIDE3OSwgMTAsIDE0LCAKLSAgICAyMzcsIDE3OCwgMTAsIDE0LCAyMzcsIDE3NywgMTAsIDE0LCAyMzcsIDE3NiwgMTAsIDE0LCAyMzcsIDE3NSwgMTAsIDE0LCAKLSAgICAyMzcsIDE3NCwgMTAsIDE0LCAyMzcsIDE3MywgMTAsIDE0LCAyMzcsIDE3MiwgMTAsIDE0LCAyMzcsIDE3MSwgMTAsIDE0LCAKLSAgICAyMzcsIDE3MCwgMTAsIDE0LCAyMzcsIDE2OSwgMTAsIDE0LCAyMzcsIDE2OCwgMTAsIDE0LCAyMzcsIDE2NywgMTAsIDE0LCAKLSAgICAyMzcsIDE2NiwgMTAsIDE0LCAyMzcsIDE2NSwgMTAsIDE0LCAyMzcsIDE2NCwgMTAsIDE0LCAyMzcsIDE2MywgMTAsIDE0LCAKLSAgICAyMzcsIDE2MiwgMTAsIDE0LCAyMzcsIDE2MSwgMTAsIDE0LCAyMzcsIDE2MCwgMTAsIDE0LCAyMzcsIDE1OSwgMTAsIDE0LCAKLSAgICAyMzcsIDE1OCwgMTAsIDE0LCAyMzcsIDE1NywgMTAsIDE0LCAyMzcsIDE1NiwgMTAsIDE0LCAyMzcsIDE1NSwgMTAsIDE0LCAKLSAgICAyMzcsIDE1NCwgMTAsIDE0LCAyMzcsIDE1MywgMTAsIDE0LCAyMzcsIDE1MiwgMTAsIDE0LCAyMzcsIDE1MSwgMTAsIDE0LCAKLSAgICAyMzcsIDE1MCwgMTAsIDE0LCAyMzcsIDE0OSwgMTAsIDE0LCAyMzcsIDE0OCwgMTAsIDE0LCAyMzcsIDE0NywgMTAsIDE0LCAKLSAgICAyMzcsIDE0NiwgMTAsIDE0LCAyMzcsIDE0NSwgMTAsIDE0LCAyMzcsIDE0NCwgMTAsIDE0LCAyMzcsIDE0MywgMTAsIDE0LCAKLSAgICAyMzcsIDE0MiwgMTAsIDE0LCAyMzcsIDE0MSwgMTAsIDE0LCAyMzcsIDE0MCwgMTAsIDE0LCAyMzcsIDEzOSwgMTAsIDE0LCAKLSAgICAyMzcsIDEzOCwgMTAsIDE0LCAyMzcsIDEzNywgMTAsIDE0LCAyMzcsIDEzNiwgMTAsIDE0LCAyMzcsIDEzNSwgMTAsIDE0LCAKLSAgICAyMzcsIDEzNCwgMTAsIDE0LCAyMzcsIDEzMywgMTAsIDE0LCAyMzcsIDEzMiwgMTAsIDE0LCAyMzcsIDEzMSwgMTAsIDE0LCAKLSAgICAyMzcsIDEzMCwgMTAsIDE0LCAyMzcsIDEyOSwgMTAsIDE0LCAyMzcsIDEyOCwgMTAsIDE0LCAyMzcsIDEyNywgMTAsIDE0LCAKLSAgICAyMzcsIDEyNiwgMTAsIDE0LCAyMzcsIDEyNSwgMTAsIDE0LCAyMzcsIDEyNCwgMTAsIDE0LCAyMzcsIDEyMywgMTAsIDE0LCAKLSAgICAyMzcsIDEyMiwgMTAsIDE0LCAyMzcsIDEyMSwgMTAsIDE0LCAyMzcsIDEyMCwgMTAsIDE0LCAyMzcsIDExOSwgMTAsIDE0LCAKLSAgICAyMzcsIDExOCwgMTAsIDE0LCAyMzcsIDExNywgMTAsIDE0LCAyMzcsIDExNiwgMTAsIDE0LCAyMzcsIDExNSwgMTAsIDE0LCAKLSAgICAyMzcsIDExNCwgMTAsIDE0LCAyMzcsIDExMywgMTAsIDE0LCAyMzcsIDExMiwgMTAsIDE0LCAyMzcsIDExMSwgMTAsIDE0LCAKLSAgICAyMzcsIDExMCwgMTAsIDE0LCAyMzcsIDEwOSwgMTAsIDE0LCAyMzcsIDEwOCwgMTAsIDE0LCAyMzcsIDEwNywgMTAsIDE0LCAKLSAgICAyMzcsIDEwNiwgMTAsIDE0LCAyMzcsIDEwNSwgMTAsIDE0LCAyMzcsIDEwNCwgMTAsIDE0LCAyMzcsIDEwMywgMTAsIDE0LCAKLSAgICAyMzcsIDEwMiwgMTAsIDE0LCAyMzcsIDEwMSwgMTAsIDE0LCAyMzcsIDEwMCwgMTAsIDE0LCAyMzcsIDk5LCAxMCwgMTQsIAotICAgIDIzNywgOTgsIDEwLCAxNCwgMjM3LCA5NywgMTAsIDE0LCAyMzcsIDk2LCAxMCwgMTQsIDIzNywgOTUsIDEwLCAxNCwgMjM3LCAKLSAgICA5NCwgMTAsIDE0LCAyMzcsIDkzLCAxMCwgMTQsIDIzNywgOTIsIDEwLCAxNCwgMjM3LCA5MSwgMTAsIDE0LCAyMzcsIDkwLCAKLSAgICAxMCwgMTQsIDIzNywgODksIDEwLCAxNCwgMjM3LCA4OCwgMTAsIDE0LCAyMzcsIDg3LCAxMCwgMTQsIDIzNywgODYsIDEwLCAKLSAgICAxNCwgMjM3LCA4NSwgMTAsIDE0LCAyMzcsIDg0LCAxMCwgMTQsIDIzNywgODMsIDEwLCAxNCwgMjM3LCA4MiwgMTAsIDE0LCAKLSAgICAyMzcsIDgxLCAxMCwgMTQsIDIzNywgODAsIDEwLCAxNCwgMjM3LCA3OSwgMTAsIDE0LCAyMzcsIDc4LCAxMCwgMTQsIDIzNywgCi0gICAgNzcsIDEwLCAxNCwgMjM3LCA3NiwgMTAsIDE0LCAyMzcsIDc1LCAxMCwgMTQsIDIzNywgNzQsIDEwLCAxNCwgMjM3LCA3MywgCi0gICAgMTAsIDE0LCAyMzcsIDcyLCAxMCwgMTQsIDIzNywgNzEsIDEwLCAxNCwgMjM3LCA3MCwgMTAsIDE0LCAyMzcsIDY5LCAxMCwgCi0gICAgMTQsIDIzNywgNjgsIDEwLCAxNCwgMjM3LCA2NywgMTAsIDE0LCAyMzcsIDY2LCAxMCwgMTQsIDIzNywgNjUsIDEwLCAxNCwgCi0gICAgMjM3LCA2NCwgMTAsIDE0LCAyMzcsIDYzLCAxMCwgMTQsIDIzNywgNjIsIDEwLCAxNCwgMjM3LCA2MSwgMTAsIDE0LCAyMzcsIAotICAgIDYwLCAxMCwgMTQsIDIzNywgNTksIDEwLCAxNCwgMjM3LCA1OCwgMTAsIDE0LCAyMzcsIDU3LCAxMCwgMTQsIDIzNywgNTYsIAotICAgIDEwLCAxNCwgMjM3LCA1NSwgMTAsIDE0LCAyMzcsIDU0LCAxMCwgMTQsIDIzNywgNTMsIDEwLCAxNCwgMjM3LCA1MiwgMTAsIAotICAgIDE0LCAyMzcsIDUxLCAxMCwgMTQsIDIzNywgNTAsIDEwLCAxNCwgMjM3LCA0OSwgMTAsIDE0LCAyMzcsIDQ4LCAxMCwgMTQsIAotICAgIDIzNywgNDcsIDEwLCAxNCwgMjM3LCA0NiwgMTAsIDE0LCAyMzcsIDQ1LCAxMCwgMTQsIDIzNywgNDQsIDEwLCAxNCwgMjM3LCAKLSAgICA0MywgMTAsIDE0LCAyMzcsIDQyLCAxMCwgMTQsIDIzNywgNDEsIDEwLCAxNCwgMjM3LCA0MCwgMTAsIDE0LCAyMzcsIDM5LCAKLSAgICAxMCwgMTQsIDIzNywgMzgsIDEwLCAxNCwgMjM3LCAzNywgMTAsIDE0LCAyMzcsIDM2LCAxMCwgMTQsIDIzNywgMzUsIDEwLCAKLSAgICAxNCwgMjM3LCAzNCwgMTAsIDE0LCAyMzcsIDMzLCAxMCwgMTQsIDIzNywgMzIsIDEwLCAxNCwgMjM3LCAzMSwgMTAsIDE0LCAKLSAgICAyMzcsIDMwLCAxMCwgMTQsIDIzNywgMjksIDEwLCAxNCwgMjM3LCAyOCwgMTAsIDE0LCAyMzcsIDI3LCAxMCwgMTQsIDIzNywgCi0gICAgMjYsIDEwLCAxNCwgMjM3LCAyNSwgMTAsIDE0LCAyMzcsIDI0LCAxMCwgMTQsIDIzNywgMjMsIDEwLCAxNCwgMjM3LCAyMiwgCi0gICAgMTAsIDE0LCAyMzcsIDIxLCAxMCwgMTQsIDIzNywgMjAsIDEwLCAxNCwgMjM3LCAxOSwgMTAsIDE0LCAyMzcsIDE4LCAxMCwgCi0gICAgMTQsIDIzNywgMTcsIDEwLCAxNCwgMjM3LCAxNiwgMTAsIDE0LCAyMzcsIDE1LCAxMCwgMTQsIDIzNywgMTQsIDEwLCAxNCwgCi0gICAgMjM3LCAxMywgMTAsIDE0LCAyMzcsIDEyLCAxMCwgMTQsIDIzNywgMTEsIDEwLCAxNCwgMjM3LCAxMCwgMTAsIDE0LCAyMzcsIAotICAgIDksIDEwLCAxNCwgMjM3LCA4LCAxMCwgMTQsIDIzNywgNywgMTAsIDE0LCAyMzcsIDYsIDEwLCAxNCwgMjM3LCA1LCAxMCwgCi0gICAgMTQsIDIzNywgNCwgMTAsIDE0LCAyMzcsIDMsIDEwLCAxNCwgMjM3LCAyLCAxMCwgMTQsIDIzNywgMSwgMTAsIDE0LCAyMzcsIAotICAgIDAsIDEwLCAxNCwgMjM2LCAyNTUsIDEwLCAxNCwgMjM2LCAyNTQsIDEwLCAxNCwgMjM2LCAyNTMsIDEwLCAxNCwgMjM2LCAKLSAgICAyNTIsIDEwLCAxNCwgMjM2LCAyNTEsIDEwLCAxNCwgMjM2LCAyNTAsIDEwLCAxNCwgMjM2LCAyNDksIDEwLCAxNCwgMjM2LCAKLSAgICAyNDgsIDEwLCAxNCwgMjM2LCAyNDcsIDEwLCAxNCwgMjM2LCAyNDYsIDEwLCAxNCwgMjM2LCAyNDUsIDEwLCAxNCwgMjM2LCAKLSAgICAyNDQsIDEwLCAxNCwgMjM2LCAyNDMsIDEwLCAxNCwgMjM2LCAyNDIsIDEwLCAxNCwgMjM2LCAyNDEsIDEwLCAxNCwgMjM2LCAKLSAgICAyNDAsIDEwLCAxNCwgMjM2LCAyMzksIDEwLCAxNCwgMjM2LCAyMzgsIDEwLCAxNCwgMjM2LCAyMzcsIDEwLCAxNCwgMjM2LCAKLSAgICAyMzYsIDEwLCAxNCwgMjM2LCAyMzUsIDEwLCAxNCwgMjM2LCAyMzQsIDEwLCAxNCwgMjM2LCAyMzMsIDEwLCAxNCwgMjM2LCAKLSAgICAyMzIsIDEwLCAxNCwgMjM2LCAyMzEsIDEwLCAxNCwgMjM2LCAyMzAsIDEwLCAxNCwgMjM2LCAyMjksIDEwLCAxNCwgMjM2LCAKLSAgICAyMjgsIDEwLCAxNCwgMjM2LCAyMjcsIDEwLCAxNCwgMjM2LCAyMjYsIDEwLCAxNCwgMjM2LCAyMjUsIDEwLCAxNCwgMjM2LCAKLSAgICAyMjQsIDEwLCAxNCwgMjM2LCAyMjMsIDEwLCAxNCwgMjM2LCAyMjIsIDEwLCAxNCwgMjM2LCAyMjEsIDEwLCAxNCwgMjM2LCAKLSAgICAyMjAsIDEwLCAxNCwgMjM2LCAyMTksIDEwLCAxNCwgMjM2LCAyMTgsIDEwLCAxNCwgMjM2LCAyMTcsIDEwLCAxNCwgMjM2LCAKLSAgICAyMTYsIDEwLCAxNCwgMjM2LCAyMTUsIDEwLCAxNCwgMjM2LCAyMTQsIDEwLCAxNCwgMjM2LCAyMTMsIDEwLCAxNCwgMjM2LCAKLSAgICAyMTIsIDEwLCAxNCwgMjM2LCAyMTEsIDEwLCAxNCwgMjM2LCAyMTAsIDEwLCAxNCwgMjM2LCAyMDksIDEwLCAxNCwgMjM2LCAKLSAgICAyMDgsIDEwLCAxNCwgMjM2LCAyMDcsIDEwLCAxNCwgMjM2LCAyMDYsIDEwLCAxNCwgMjM2LCAyMDUsIDEwLCAxNCwgMjM2LCAKLSAgICAyMDQsIDEwLCAxNCwgMjM2LCAyMDMsIDEwLCAxNCwgMjM2LCAyMDIsIDEwLCAxNCwgMjM2LCAyMDEsIDEwLCAxNCwgMjM2LCAKLSAgICAyMDAsIDEwLCAxNCwgMjM2LCAxOTksIDEwLCAxNCwgMjM2LCAxOTgsIDEwLCAxNCwgMjM2LCAxOTcsIDEwLCAxNCwgMjM2LCAKLSAgICAxOTYsIDEwLCAxNCwgMjM2LCAxOTUsIDEwLCAxNCwgMjM2LCAxOTQsIDEwLCAxNCwgMjM2LCAxOTMsIDEwLCAxNCwgMjM2LCAKLSAgICAxOTIsIDEwLCAxNCwgMjM2LCAxOTEsIDEwLCAxNCwgMjM2LCAxOTAsIDEwLCAxNCwgMjM2LCAxODksIDEwLCAxNCwgMjM2LCAKLSAgICAxODgsIDEwLCAxNCwgMjM2LCAxODcsIDEwLCAxNCwgMjM2LCAxODYsIDEwLCAxNCwgMjM2LCAxODUsIDEwLCAxNCwgMjM2LCAKLSAgICAxODQsIDEwLCAxNCwgMjM2LCAxODMsIDEwLCAxNCwgMjM2LCAxODIsIDEwLCAxNCwgMjM2LCAxODEsIDEwLCAxNCwgMjM2LCAKLSAgICAxODAsIDEwLCAxNCwgMjM2LCAxNzksIDEwLCAxNCwgMjM2LCAxNzgsIDEwLCAxNCwgMjM2LCAxNzcsIDEwLCAxNCwgMjM2LCAKLSAgICAxNzYsIDEwLCAxNCwgMjM2LCAxNzUsIDEwLCAxNCwgMjM2LCAxNzQsIDEwLCAxNCwgMjM2LCAxNzMsIDEwLCAxNCwgMjM2LCAKLSAgICAxNzIsIDEwLCAxNCwgMjM2LCAxNzEsIDEwLCAxNCwgMjM2LCAxNzAsIDEwLCAxNCwgMjM2LCAxNjksIDEwLCAxNCwgMjM2LCAKLSAgICAxNjgsIDEwLCAxNCwgMjM2LCAxNjcsIDEwLCAxNCwgMjM2LCAxNjYsIDEwLCAxNCwgMjM2LCAxNjUsIDEwLCAxNCwgMjM2LCAKLSAgICAxNjQsIDEwLCAxNCwgMjM2LCAxNjMsIDEwLCAxNCwgMjM2LCAxNjIsIDEwLCAxNCwgMjM2LCAxNjEsIDEwLCAxNCwgMjM2LCAKLSAgICAxNjAsIDEwLCAxNCwgMjM2LCAxNTksIDEwLCAxNCwgMjM2LCAxNTgsIDEwLCAxNCwgMjM2LCAxNTcsIDEwLCAxNCwgMjM2LCAKLSAgICAxNTYsIDEwLCAxNCwgMjM2LCAxNTUsIDEwLCAxNCwgMjM2LCAxNTQsIDEwLCAxNCwgMjM2LCAxNTMsIDEwLCAxNCwgMjM2LCAKLSAgICAxNTIsIDEwLCAxNCwgMjM2LCAxNTEsIDEwLCAxNCwgMjM2LCAxNTAsIDEwLCAxNCwgMjM2LCAxNDksIDEwLCAxNCwgMjM2LCAKLSAgICAxNDgsIDEwLCAxNCwgMjM2LCAxNDcsIDEwLCAxNCwgMjM2LCAxNDYsIDEwLCAxNCwgMjM2LCAxNDUsIDEwLCAxNCwgMjM2LCAKLSAgICAxNDQsIDEwLCAxNCwgMjM2LCAxNDMsIDEwLCAxNCwgMjM2LCAxNDIsIDEwLCAxNCwgMjM2LCAxNDEsIDEwLCAxNCwgMjM2LCAKLSAgICAxNDAsIDEwLCAxNCwgMjM2LCAxMzksIDEwLCAxNCwgMjM2LCAxMzgsIDEwLCAxNCwgMjM2LCAxMzcsIDEwLCAxNCwgMjM2LCAKLSAgICAxMzYsIDEwLCAxNCwgMjM2LCAxMzUsIDEwLCAxNCwgMjM2LCAxMzQsIDEwLCAxNCwgMjM2LCAxMzMsIDEwLCAxNCwgMjM2LCAKLSAgICAxMzIsIDEwLCAxNCwgMjM2LCAxMzEsIDEwLCAxNCwgMjM2LCAxMzAsIDEwLCAxNCwgMjM2LCAxMjksIDEwLCAxNCwgMjM2LCAKLSAgICAxMjgsIDEwLCAxNCwgMjM2LCAxMjcsIDEwLCAxNCwgMjM2LCAxMjYsIDEwLCAxNCwgMjM2LCAxMjUsIDEwLCAxNCwgMjM2LCAKLSAgICAxMjQsIDEwLCAxNCwgMjM2LCAxMjMsIDEwLCAxNCwgMjM2LCAxMjIsIDEwLCAxNCwgMjM2LCAxMjEsIDEwLCAxNCwgMjM2LCAKLSAgICAxMjAsIDEwLCAxNCwgMjM2LCAxMTksIDEwLCAxNCwgMjM2LCAxMTgsIDEwLCAxNCwgMjM2LCAxMTcsIDEwLCAxNCwgMjM2LCAKLSAgICAxMTYsIDEwLCAxNCwgMjM2LCAxMTUsIDEwLCAxNCwgMjM2LCAxMTQsIDEwLCAxNCwgMjM2LCAxMTMsIDEwLCAxNCwgMjM2LCAKLSAgICAxMTIsIDEwLCAxNCwgMjM2LCAxMTEsIDEwLCAxNCwgMjM2LCAxMTAsIDEwLCAxNCwgMjM2LCAxMDksIDEwLCAxNCwgMjM2LCAKLSAgICAxMDgsIDEwLCAxNCwgMjM2LCAxMDcsIDEwLCAxNCwgMjM2LCAxMDYsIDEwLCAxNCwgMjM2LCAxMDUsIDEwLCAxNCwgMjM2LCAKLSAgICAxMDQsIDEwLCAxNCwgMjM2LCAxMDMsIDEwLCAxNCwgMjM2LCAxMDIsIDEwLCAxNCwgMjM2LCAxMDEsIDEwLCAxNCwgMjM2LCAKLSAgICAxMDAsIDEwLCAxNCwgMjM2LCA5OSwgMTAsIDE0LCAyMzYsIDk4LCAxMCwgMTQsIDIzNiwgOTcsIDEwLCAxNCwgMjM2LCA5NiwgCi0gICAgMTAsIDE0LCAyMzYsIDk1LCAxMCwgMTQsIDIzNiwgOTQsIDEwLCAxNCwgMjM2LCA5MywgMTAsIDE0LCAyMzYsIDkyLCAxMCwgCi0gICAgMTQsIDIzNiwgOTEsIDEwLCAxNCwgMjM2LCA5MCwgMTAsIDE0LCAyMzYsIDg5LCAxMCwgMTQsIDIzNiwgODgsIDEwLCAxNCwgCi0gICAgMjM2LCA4NywgMTAsIDE0LCAyMzYsIDg2LCAxMCwgMTQsIDIzNiwgODUsIDEwLCAxNCwgMjM2LCA4NCwgMTAsIDE0LCAyMzYsIAotICAgIDgzLCAxMCwgMTQsIDIzNiwgODIsIDEwLCAxNCwgMjM2LCA4MSwgMTAsIDE0LCAyMzYsIDgwLCAxMCwgMTQsIDIzNiwgNzksIAotICAgIDEwLCAxNCwgMjM2LCA3OCwgMTAsIDE0LCAyMzYsIDc3LCAxMCwgMTQsIDIzNiwgNzYsIDEwLCAxNCwgMjM2LCA3NSwgMTAsIAotICAgIDE0LCAyMzYsIDc0LCAxMCwgMTQsIDIzNiwgNzMsIDEwLCAxNCwgMjM2LCA3MiwgNywgNCwgMjcsIDI0NCwgMTMzLCA3LCA0LCAKLSAgICAyNywgMjQ0LCAxMjksIDcsIDQsIDI3LCAyNDQsIDg0LCA3LCA0LCAyNywgMjQ0LCAxMzIsIDcsIDQsIDI3LCAyNDQsIDEzMSwgCi0gICAgNywgNCwgMjcsIDIwMCwgMjIyLCA5NCwgMjE3LCAxNTMsIDcsIDQsIDI3LCAyMTgsIDE3MCwgMTUwLCA0LCAyNywgMjMxLCAKLSAgICA2NCwgMjI4LCA0NCwgMTUwLCA0LCAyNywgMjMxLCA2NCwgMjQ1LCAyMjEsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDIzNSwgCi0gICAgMjM0LCAxNTAsIDQsIDI3LCAyMTMsIDE4MCwgMjI4LCA0NCwgMTUwLCA0LCAyNywgMjMxLCA2NCwgMjExLCAxNjAsIDk0LCAxLCAKLSAgICAyMTAsIDIzNCwgMiwgMjQxLCAxNjUsIDk0LCAyMjUsIDE0LCAyMzUsIDU2LCAyMTQsIDExLCA5NCwgMjcsIDIxMSwgNiwgCi0gICAgMjEwLCAyMzQsIDIxMCwgMjM0LCAyMjUsIDI0MywgOTQsIDEsIDI1NCwgMTQ3LCAyNTMsIDE3MCwgOTQsIDEsIDIxMSwgMjQ3LCAKLSAgICAyNTQsIDE3OSwgOTQsIDEsIDIxMSwgMjQ3LCAyNDgsIDE5NywgOTQsIDEsIDIxMSwgMjQ3LCAyNDEsIDI0NSwgOTQsIDEsIAotICAgIDIxMSwgMjQ3LCAyMzUsIDAsIDk0LCAxLCAyMTEsIDI0NywgMjMzLCAxMDAsIDk0LCAxLCAyMTEsIDI0NywgNDAsIDIzMSwgCi0gICAgNzAsIDk0LCAxLCAyMTEsIDI0NywgMjIzLCA3MCwgOTQsIDEsIDIxMSwgMjQ3LCAyMTcsIDM5LCA5NCwgMSwgMjU0LCAxNDcsIAotICAgIDk2LCA1MCwgOTQsIDEsIDIyMCwgMjMsIDIsIDIyMCwgMjMsIDI0NywgMTI4LCA5NCwgMSwgMjIwLCAyMywgMiwgMjE5LCAKLSAgICAxNjEsIDI0NywgMTI4LCA5NCwgMSwgMjIwLCAyMywgMiwgMjQ4LCAyMTYsIDIyLCAyMjAsIDIzLCAyNDcsIDEyOCwgOTQsIDEsIAotICAgIDIyMCwgMjMsIDIsIDI0OCwgMjE2LCAyMiwgMjE5LCAxNjEsIDI0NywgMTI4LCA5NCwgMSwgMTA5LCAyLCAyMjUsIDI0MywgCi0gICAgOTQsIDEsIDEwOSwgMiwgMjI0LCA3OSwgOTQsIDEsIDEwOSwgMiwgMjMxLCAxNzYsIDk0LCAxLCAyNTIsIDM3LCAyLCAyNDgsIAotICAgIDIxNSwgOTQsIDEsIDI0MiwgMjA5LCAyLCAyNDgsIDIxNSwgOTQsIDEsIDI0OCwgMTk4LCAyLCAyNDgsIDIxNSwgOTQsIDEsIAotICAgIDI0MSwgMjQ2LCAyLCAyMzEsIDE3NiwgOTQsIDEsIDIxNCwgNCwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTAsIDk4LCAyLCAKLSAgICAyNDgsIDIxNSwgOTQsIDEsIDIxNiwgMjMyLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDgsIDIxNSwgOTQsIAotICAgIDEsIDQwLCAyMzUsIDEsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjM1LCAxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIzMywgMTAxLCAKLSAgICAyLCAyNDgsIDIxNSwgOTQsIDEsIDIzMSwgNzEsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjI3LCAxOTksIDIsIDI0OCwgMjE1LCAKLSAgICA5NCwgMSwgMjIxLCAyNTIsIDIsIDI0OCwgMjE1LCA5NCwgMSwgNDAsIDIyNSwgMjI1LCAyLCAyNDgsIDIxNSwgOTQsIDEsIAotICAgIDIyNSwgMjI1LCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIxNSwgMTgxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIyNCwgNDMsIDIsIAotICAgIDI0OCwgMjE1LCA5NCwgMSwgMjIzLCA3MSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMjAsIDIzLCAyLCAyNDgsIDIxNSwgOTQsIAotICAgIDEsIDIxNywgNDAsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjE0LCA0LCAyLCAyNDEsIDY4LCA5NCwgMSwgMjUyLCAzNywgMiwgCi0gICAgMjIzLCAxNzIsIDk0LCAxLCAyMzUsIDEsIDIsIDIyMywgMTcyLCA5NCwgMSwgMjI1LCAyMjUsIDIsIDIyMywgMTcyLCA5NCwgCi0gICAgMjcsIDEwOSwgMjMzLCAxMDAsIDksIDEsIDEwOSwgMjEyLCA0NywgNTMsIDE3LCA5LCAxLCAxMDksIDIxMiwgNDcsIDQwLCAKLSAgICAxNywgOSwgMSwgMjUyLCA3MywgNTMsIDE3LCA5LCAxLCAyNTIsIDczLCA0MCwgMTcsIDksIDEsIDI1MiwgNzMsIDY1LCAxNywgCi0gICAgOSwgMSwgMjUyLCA3MywgMTQ3LCAxNywgOSwgMSwgMjI1LCAyMDksIDUzLCAxNywgOSwgMSwgMjI1LCAyMDksIDQwLCAxNywgCi0gICAgOSwgMSwgMjI1LCAyMDksIDY1LCAxNywgOSwgMSwgMjI1LCAyMDksIDE0NywgMTcsIDksIDEsIDI1MiwgNjEsIDUzLCAxNywgCi0gICAgOSwgMSwgMjUyLCA2MSwgNDAsIDE3LCA5LCAxLCAyNTIsIDYxLCA2NSwgMTcsIDksIDEsIDI1MiwgNjEsIDE0NywgMTcsIDksIAotICAgIDEsIDIxNSwgMTQ4LCA1MywgMTcsIDksIDEsIDIxNSwgMTQ4LCA0MCwgMTcsIDksIDEsIDIxNSwgMTQ4LCA2NSwgMTcsIDksIAotICAgIDEsIDIxNSwgMTQ4LCAxNDcsIDE3LCA5LCAxLCAyMTcsIDcsIDUzLCAxNywgOSwgMSwgMjE3LCA3LCA0MCwgMTcsIDksIDEsIAotICAgIDIxNywgNywgNjUsIDE3LCA5LCAxLCAyMTcsIDcsIDE0NywgMTcsIDksIDEsIDIxNSwgMTUwLCA1MywgMTcsIDksIDEsIDIxNSwgCi0gICAgMTUwLCA0MCwgMTcsIDksIDEsIDIxNSwgMTUwLCA2NSwgMTcsIDksIDEsIDIxNSwgMTUwLCAxNDcsIDE3LCA5LCAxLCAyMTMsIAotICAgIDI0OSwgNTMsIDE3LCA5LCAxLCAyMTMsIDI0OSwgNDAsIDE3LCA5LCAxLCAyMTMsIDI0OSwgNjUsIDE3LCA5LCAxLCAyMTMsIAotICAgIDI0OSwgMTQ3LCAxNywgOSwgMSwgMjI1LCAyMDcsIDUzLCAxNywgOSwgMSwgMjI1LCAyMDcsIDQwLCAxNywgOSwgMSwgMjI1LCAKLSAgICAyMDcsIDY1LCAxNywgOSwgMSwgMjI1LCAyMDcsIDE0NywgMTcsIDksIDEsIDI0NiwgNTIsIDUzLCAxNywgOSwgMSwgMjQ2LCAKLSAgICA1MiwgNDAsIDE3LCA5LCAxLCAyNDYsIDUyLCA2NSwgMTcsIDksIDEsIDI0NiwgNTIsIDE0NywgMTcsIDksIDEsIDIyNywgCi0gICAgMTU4LCA1MywgMTcsIDksIDEsIDIyNywgMTU4LCA0MCwgMTcsIDksIDEsIDIyNywgMTU4LCA2NSwgMTcsIDksIDEsIDIyNywgCi0gICAgMTU4LCAxNDcsIDE3LCA5LCAxLCAyMTcsIDI4LCA1MywgMTcsIDksIDEsIDIxNywgMjgsIDQwLCAxNywgOSwgMSwgMjE3LCAKLSAgICAyOCwgNjUsIDE3LCA5LCAxLCAyMTcsIDI4LCAxNDcsIDE3LCA5LCAxLCAyMTcsIDI2LCA1MywgMTcsIDksIDEsIDIxNywgMjYsIAotICAgIDQwLCAxNywgOSwgMSwgMjE3LCAyNiwgNjUsIDE3LCA5LCAxLCAyMTcsIDI2LCAxNDcsIDE3LCA5LCAxLCAyNDgsIDE0MSwgCi0gICAgNTMsIDE3LCA5LCAxLCAyNDgsIDE0MSwgNDAsIDE3LCA5LCAxLCAyNDgsIDIxMCwgNTMsIDE3LCA5LCAxLCAyNDgsIDIxMCwgCi0gICAgNDAsIDE3LCA5LCAxLCAyNDYsIDc5LCA1MywgMTcsIDksIDEsIDI0NiwgNzksIDQwLCAxNywgOSwgMSwgMjQ4LCAxMzksIDUzLCAKLSAgICAxNywgOSwgMSwgMjQ4LCAxMzksIDQwLCAxNywgOSwgMSwgMjM1LCAxMjcsIDUzLCAxNywgOSwgMSwgMjM1LCAxMjcsIDQwLCAKLSAgICAxNywgOSwgMSwgMjIyLCAxNzQsIDUzLCAxNywgOSwgMSwgMjIyLCAxNzQsIDQwLCAxNywgOSwgMSwgMjM0LCAxODEsIDUzLCAKLSAgICAxNywgOSwgMSwgMjM0LCAxODEsIDQwLCAxNywgOSwgMSwgMjM0LCAxODEsIDY1LCAxNywgOSwgMSwgMjM0LCAxODEsIDE0NywgCi0gICAgMTcsIDksIDEsIDI0MywgMTMwLCA1MywgMTcsIDksIDEsIDI0MywgMTMwLCA0MCwgMTcsIDksIDEsIDI0MywgMTMwLCA2NSwgCi0gICAgMTcsIDksIDEsIDI0MywgMTMwLCAxNDcsIDE3LCA5LCAxLCAyNDIsIDEwOSwgNTMsIDE3LCA5LCAxLCAyNDIsIDEwOSwgNDAsIAotICAgIDE3LCA5LCAxLCAyNDIsIDEwOSwgNjUsIDE3LCA5LCAxLCAyNDIsIDEwOSwgMTQ3LCAxNywgOSwgMSwgMjI5LCA4LCA1MywgCi0gICAgMTcsIDksIDEsIDIyOSwgOCwgNDAsIDE3LCA5LCAxLCAyMjksIDgsIDY1LCAxNywgOSwgMSwgMjI5LCA4LCAxNDcsIDE3LCA5LCAKLSAgICAxLCAyMjgsIDY4LCAyNDIsIDIyNiwgNTMsIDE3LCA5LCAxLCAyMjgsIDY4LCAyNDIsIDIyNiwgNDAsIDE3LCA5LCAxLCAyMjIsIAotICAgIDIxNywgNTMsIDE3LCA5LCAxLCAyMjIsIDIxNywgNDAsIDE3LCA5LCAxLCAyMjIsIDIxNywgNjUsIDE3LCA5LCAxLCAyMjIsIAotICAgIDIxNywgMTQ3LCAxNywgOSwgMSwgMjQxLCAyMjYsIDIsIDc3LCA3MiwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMiwgNzcsIAotICAgIDcyLCA0MCwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDIsIDE3OSwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIAotICAgIDQwLCAxNywgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCA2NSwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDIsIDE3OSwgMTQ3LCAKLSAgICAxNywgOSwgMSwgMjQxLCAyMjYsIDI0NywgMTUwLCA1MywgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgNDAsIDE3LCAKLSAgICA5LCAxLCAyNDEsIDIyNiwgMjQ3LCAxNTAsIDY1LCAxNywgOSwgMSwgMjQxLCAyMjYsIDI0NywgMTUwLCAxNDcsIDE3LCA5LCAKLSAgICAxLCA3NywgMjUyLCAxNDEsIDUzLCAxNywgOSwgMSwgNzcsIDI1MiwgMTQxLCA0MCwgMTcsIDksIDEsIDc3LCAyNTIsIDE0MSwgCi0gICAgMiwgMTgyLCA3MiwgNTMsIDE3LCA5LCAxLCA3NywgMjUyLCAxNDEsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMTYsIDU5LCAKLSAgICA0OCwgOSwgMTYsIDU5LCA1MSwgOSwgMTYsIDExMywgMTcwLCA0OCwgOSwgMTYsIDExMywgMTcwLCA1MSwgOSwgMTYsIDEzNCwgCi0gICAgMTcwLCA0OCwgOSwgMTYsIDEzNCwgMTcwLCA1MSwgOSwgMTYsIDEzNCwgMTcwLCAyMjUsIDEwLCAyNDYsIDExMiwgNDgsIDksIAotICAgIDE2LCAxMzQsIDE3MCwgMjI1LCAxMCwgMjQ2LCAxMTIsIDUxLCA5LCAxNiwgMjQ0LCAxOSwgMTcwLCA0OCwgOSwgMTYsIDI0NCwgCi0gICAgMTksIDE3MCwgNTEsIDksIDE2LCA1MiwgNjcsIDI1MiwgMTQ5LCA1MSwgOSwgMTYsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIAotICAgIDksIDE2LCAxMTMsIDE3MCwgMjEzLCAxODksIDUxLCA5LCAxNiwgMjIyLCAyMzYsIDksIDE2LCA0LCAyMTcsIDgyLCA0OCwgOSwgCi0gICAgMTYsIDQsIDIxNywgODIsIDUxLCA5LCAxLCAyMjksIDg1LCA1MywgMTcsIDksIDEsIDIyOSwgODUsIDQwLCAxNywgOSwgMSwgCi0gICAgMjI5LCA4NSwgNjUsIDE3LCA5LCAxLCAyMjksIDg1LCAxNDcsIDE3LCA5LCAxLCAxMDQsIDUzLCAxNywgOSwgMSwgMTA0LCAKLSAgICA0MCwgMTcsIDksIDEsIDIyNiwgMjM5LCA1MywgMTcsIDksIDEsIDIyNiwgMjM5LCA0MCwgMTcsIDksIDEsIDIxMCwgMjEzLCAKLSAgICA1MywgMTcsIDksIDEsIDIxMCwgMjEzLCA0MCwgMTcsIDksIDEsIDEwNCwgMiwgMTgyLCA3MiwgNTMsIDE3LCA5LCAxLCAyMTQsIAotICAgIDAsIDUzLCAxNywgOSwgMSwgMjE0LCAwLCA0MCwgMTcsIDksIDEsIDIzNCwgNzksIDIyNiwgMjM5LCA1MywgMTcsIDksIDEsIAotICAgIDIzNCwgNzksIDIyNiwgMjM5LCA0MCwgMTcsIDksIDEsIDIzNCwgNzksIDIxMCwgMjEzLCA1MywgMTcsIDksIDEsIDIzNCwgCi0gICAgNzksIDIxMCwgMjEzLCA0MCwgMTcsIDksIDEsIDE2MCwgNTMsIDE3LCA5LCAxLCAxNjAsIDQwLCAxNywgOSwgMSwgMTYwLCAKLSAgICA2NSwgMTcsIDksIDEsIDE2MCwgMTQ3LCAxNywgOSwgMSwgMjE0LCAyMDcsIDIzNCwgMTkyLCAyMzQsIDc5LCAxMDksIDIzMSwgCi0gICAgMTk4LCA2NSwgMTcsIDksIDEsIDIxNCwgMjA3LCAyMzQsIDE5MiwgMjM0LCA3OSwgMTA5LCAyMzEsIDE5OCwgMTQ3LCAxNywgCi0gICAgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMDksIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMDksIDQwLCAKLSAgICAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyNTQsIDI1MywgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIAotICAgIDI1NCwgMjUzLCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEyLCAzMSwgNTMsIDE3LCA5LCAyNywgNzcsIAotICAgIDIsIDE4MiwgNzIsIDIsIDIxMiwgMzEsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMDQsIDUzLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMDQsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMjYsIDIzOSwgCi0gICAgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIyNiwgMjM5LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCAKLSAgICA3MiwgMiwgMjEwLCAyMTMsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMTAsIDIxMywgNDAsIDE3LCA5LCAKLSAgICAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDE2MCwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDE2MCwgNDAsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDE2MCwgNjUsIDE3LCA5LCAyNywgMjE0LCAyMDcsIDIzNCwgNzksIDc3LCAKLSAgICAyLCAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAyMTQsIDIwNywgMjM0LCA3OSwgNzcsIDIsIAotICAgIDE4MiwgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIxNCwgMjA3LCAyMzQsIDc5LCA3NywgMiwgMTgyLCAKLSAgICA3MiwgMiwgMTA5LCAyMzEsIDE5OCwgNjUsIDE3LCA5LCAxLCAyNDQsIDE3NiwgNzcsIDUzLCAxNywgOSwgMSwgMjQ0LCAxNzYsIAotICAgIDc3LCA0MCwgMTcsIDksIDEsIDI0NCwgMTc2LCA3NywgNjUsIDE3LCA5LCAxLCAyNDQsIDE3NiwgNzcsIDE0NywgMTcsIDksIAotICAgIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTIyLCA1MywgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMDksIAotICAgIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIAotICAgIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAyMzQsIAotICAgIDEzNiwgNTMsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDEwOSwgMjMxLCAKLSAgICAxOTgsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgNTMsIAotICAgIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIxNywgOSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjE3LCA5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjE2LCAKLSAgICAxOTQsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjE2LCAxOTQsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgCi0gICAgNTMsIDE3LCA5LCAyNywgMTIyLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIAotICAgIDIzNCwgMTM2LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIzNCwgMTM2LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIzNCwgCi0gICAgMTM2LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIAotICAgIDEyMiwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgCi0gICAgNjYsIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgNjYsIDUzLCAKLSAgICAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAxMjIsIDUzLCAxNywgOSwgCi0gICAgMjcsIDI0OCwgMjI1LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMTcsIDgyLCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMTAsIDExMiwgCi0gICAgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCA2NiwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDY2LCA1MywgMTcsIAotICAgIDksIDI3LCAyNDQsIDE1MSwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAKLSAgICAyNDQsIDE1MSwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDI0NCwgMTUxLCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjQ0LCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDI0NCwgMTUxLCAyLCA3NywgNTMsIDE3LCA5LCAKLSAgICAyNywgMjI0LCA4NSwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjI0LCAKLSAgICA4NSwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIzNSwgCi0gICAgMSwgMiwgMTA5LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAxMjIsIAotICAgIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMjMzLCAxMDksIAotICAgIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIAotICAgIDI3LCAyMzMsIDEwOSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIAotICAgIDksIDI3LCAyMzMsIDEwOSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxMjIsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAyNywgNjYsIDIsIDY2LCA1MywgMTcsIDksIAotICAgIDI3LCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgNjYsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjgsIAotICAgIDY4LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgCi0gICAgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMDksIAotICAgIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQxLCAyMjYsIDIsIDE1MSwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjQxLCAyMjYsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgMTA5LCAyMzEsIAotICAgIDE5OCwgNTMsIDE3LCA5LCAyNywgMjQxLCAyMjYsIDIsIDc3LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTUxLCA1MywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTIyLCA1MywgMTcsIDksIDI3LCA3NywgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAKLSAgICA2NiwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCA3NywgNTMsIAotICAgIDE3LCA5LCAyNywgMjE2LCAyMDQsIDIsIDIxOCwgMjQsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjIzLCA5OSwgMiwgMjE4LCAyNCwgCi0gICAgMTA5LCA1MywgMTcsIDksIDI3LCAxMDksIDIzMSwgMTk4LCAyLCAyMTgsIDI0LCAxMDksIDUzLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgOTYsIDIsIDI0OCwgMTkxLCA1MywgMTcsIDksIDI3LCAyMjAsIDk2LCAyLCAyMzQsIDIxMCwgNTMsIDE3LCA5LCAyNywgMjIwLCAKLSAgICA5NiwgMiwgMjQ0LCAxNzQsIDUzLCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDI0OCwgMTkzLCA1MywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyMzQsIDIxMiwgNTMsIDE3LCA5LCAyNywgMjIwLCA5NiwgMiwgMjE4LCAyNCwgMTA5LCA1MywgMTcsIDksIDI3LCAKLSAgICA3NywgMiwgMTgyLCA3MiwgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIxMCwgMTA5LCAKLSAgICA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAKLSAgICAyMjgsIDY4LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgNzcsIDIsIDE4MiwgNzIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNTIsIDYzLCAyLCAyMTAsIDEwOSwgNDAsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDI1MiwgCi0gICAgNjMsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDI1MiwgNjMsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgCi0gICAgMiwgMjEwLCAxMDksIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMjI4LCAKLSAgICA2OCwgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDIxMCwgCi0gICAgMTA5LCA0MCwgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyMjgsIDY4LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIAotICAgIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAxMDksIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMjMzLCAxMDksIAotICAgIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDY2LCA0MCwgMTcsIDksIAotICAgIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDc3LCA0MCwgMTcsIAotICAgIDksIDI3LCA2NiwgMiwgMTA5LCA0MCwgMTcsIDksIDI3LCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIAotICAgIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAKLSAgICA2NiwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMjI4LCA2OCwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDEwOSwgMjMxLCAxOTgsIDIsIAotICAgIDIxOCwgMjQsIDEwOSwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAyMTAsIAotICAgIDEwOSwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMjI4LCA2OCwgNDAsIDE3LCA5LCAKLSAgICAyNywgNzcsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIAotICAgIDE4MiwgNzIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgCi0gICAgNzcsIDIsIDE4MiwgNzIsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgNjYsIDY1LCAKLSAgICAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMTUxLCAKLSAgICA2NSwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDIzNCwgMTM2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjQxLCAyMjYsIDY1LCAxNywgCi0gICAgOSwgMjcsIDIxNywgOSwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjE3LCAKLSAgICA5LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAKLSAgICAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAxNTEsIDIsIDEyMiwgNjUsIAotICAgIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDEyMiwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIzNCwgMTM2LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEyMiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIAotICAgIDIyMiwgMjksIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIyMiwgCi0gICAgMjksIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgCi0gICAgMTIyLCA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAKLSAgICA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMTAsIDExMiwgMiwgNjYsIDY1LCAKLSAgICAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjQyLCAyNTIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyNDQsIAotICAgIDE1MSwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgCi0gICAgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDI0NCwgMTUxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgMTIyLCAKLSAgICA2NSwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAxNTEsIDY1LCAxNywgOSwgCi0gICAgMjcsIDIzNSwgMSwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMzUsIDEsIDIsIDIzMywgMTA5LCA2NSwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMzMsIAotICAgIDEwOSwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgCi0gICAgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIAotICAgIDI0MSwgMjI2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMTIyLCA2NSwgMTcsIAotICAgIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgCi0gICAgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDIzNCwgCi0gICAgMTM2LCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMjQxLCAyMjYsIAotICAgIDY1LCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA2NiwgNjUsIDE3LCAKLSAgICA5LCAyNywgMjQxLCAyMjYsIDIsIDIxOCwgMjQsIDEwOSwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDE1MSwgNjUsIDE3LCA5LCAKLSAgICAyNywgNzcsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCA3NywgMiwgNjYsIAotICAgIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDI0MSwgMjI2LCAxNDcsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgCi0gICAgNjYsIDE0NywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIAotICAgIDE0NywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDI0MSwgMjI2LCAxNDcsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDI0MSwgMjI2LCAxNDcsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDI0MSwgMjI2LCAxNDcsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNjYsIAotICAgIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMjMzLCAKLSAgICAxMDksIDE0NywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDY2LCAxNDcsIAotICAgIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNjYsIDE0NywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgCi0gICAgOSwgMjcsIDc3LCAyLCA2NiwgMTQ3LCAxNywgOSwgMjcsIDc3LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgCi0gICAgOTYsIDIsIDI0NCwgMTc0LCAxNDcsIDE3LCA5LCAyNywgMjIwLCA5NiwgMiwgMjQ4LCAxOTMsIDE0NywgMTcsIDksIDI3LCAKLSAgICAyMjAsIDk2LCAyLCAyMzQsIDIxMiwgMTQ3LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgCi0gICAgOSwgMjcsIDIxNywgODIsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjU0LCAyMDYsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyNDIsIDI1MiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIAotICAgIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMDksIDIzMSwgMTk4LCAKLSAgICA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTIyLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgCi0gICAgMTcsIDksIDI3LCAxMjIsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgCi0gICAgMjcsIDE1MSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIzNCwgMTM2LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzQsIDEzNiwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDIyMiwgMjksIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjQ4LCAyMjUsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIyMCwgNjIsIAotICAgIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIAotICAgIDY2LCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAyMjMsIDk5LCA1MywgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMjIzLCAKLSAgICA5OSwgNTMsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMjIzLCA5OSwgNTMsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIyMywgCi0gICAgOTksIDUzLCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIxNywgODIsIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjU0LCAyMDYsIAotICAgIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNDIsIDI1MiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQyLCAKLSAgICAyNTIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIxLCAxNjksIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyMjAsIDYyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMTIyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAxMjIsIAotICAgIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDE1MSwgMiwgNzcsIAotICAgIDQwLCAxNywgOSwgMjcsIDIzNCwgMTM2LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgCi0gICAgNzcsIDQwLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIAotICAgIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxNTEsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjM0LCAxMzYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCA0MCwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMjIzLCA5OSwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIyMywgOTksIDQwLCAKLSAgICAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTIyLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMjAsIDYyLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIAotICAgIDIyMSwgMTY5LCAyLCAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgCi0gICAgMjcsIDIxNywgODIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTUxLCAxNDcsIDE3LCA5LCAyNywgMjIxLCAKLSAgICAxNjksIDIsIDEyMiwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgCi0gICAgNjIsIDIsIDE1MSwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIAotICAgIDIzNCwgMTM2LCAxNDcsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDE0NywgMTcsIDksIDI3LCAyMTAsIDExMiwgMiwgCi0gICAgNjYsIDE0NywgMTcsIDksIDI3LCAxMDksIDIsIDI0NCwgMTcyLCA0MCwgMTcsIDksIDI3LCAxMDksIDIsIDI0NCwgMTcyLCAKLSAgICA1MywgMTcsIDIyNiwgMTUwLCA0MywgMjI2LCA3LCAyMjYsIDE1MCwgNDQsIDIyNiwgNywgOSwgMjcsIDIxNywgOSwgMiwgCi0gICAgMTUxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMjIsIDIsIDE1MSwgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAKLSAgICAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMTcsIAotICAgIDksIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMTcsIDksIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIDIzNCwgMTM2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICA5LCAyNywgMTIyLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDEyMiwgMiwgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgCi0gICAgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyMjEsIDE2OSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCi0gICAgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgNjYsIDIsIDY2LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMjIsIDIsIAotICAgIDEyMiwgNDAsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMTIyLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIAotICAgIDY2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTIyLCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgCi0gICAgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCAKLSAgICA2MiwgMiwgNjYsIDIsIDIzNCwgMTM2LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgMiwgMjM0LCAxMzYsIDY1LCAKLSAgICAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNjYsIDIsIDY2LCAKLSAgICA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTIyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyNDgsIAotICAgIDIyNSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgMTIyLCAKLSAgICA2NSwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDY2LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCAKLSAgICA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDI1NCwgCi0gICAgMjA2LCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDY2LCAyLCA2NiwgNDAsIAotICAgIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDY2LCAyLCAKLSAgICAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA0MCwgMTcsIDksIAotICAgIDI3LCAyNDQsIDE1MSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgMiwgMTIyLCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMjIsIDIsIAotICAgIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIAotICAgIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgMTUxLCA2NSwgMTcsIAotICAgIDksIDI3LCAyMzMsIDEwOSwgMiwgMTUxLCAyLCAxNTEsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAyMzQsIDEzNiwgMiwgCi0gICAgNjYsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzMywgMTA5LCAKLSAgICAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgNjYsIAotICAgIDIsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIAotICAgIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDY2LCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgCi0gICAgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAyMzQsIDEzNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAKLSAgICAxMzYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgMjQxLCAKLSAgICAyMjYsIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIAotICAgIDIyOCwgNjgsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCAKLSAgICA2NiwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjgsIAotICAgIDY4LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDY2LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIAotICAgIDI3LCAyNTIsIDYzLCAyLCAyMzQsIDEzNiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCA3NywgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgCi0gICAgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIzNCwgMTM2LCAyLCAxMDksIDIzMSwgMTk4LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCA2NiwgMiwgCi0gICAgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDE1MSwgMiwgCi0gICAgMTIyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDY2LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgCi0gICAgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMjM0LCAxMzYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIyMiwgCi0gICAgMjksIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIAotICAgIDI0OCwgMjI1LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTUxLCAyLCA3NywgNDAsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgCi0gICAgOSwgMjcsIDc3LCAyLCAxNTEsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICA2NiwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIAotICAgIDIyOCwgNjgsIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgOSwgCi0gICAgMjcsIDIzMywgMTA5LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDIsIDc3LCA0MCwgCi0gICAgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCAxMjIsIAotICAgIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAyMzQsIDEzNiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIAotICAgIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIAotICAgIDE1MSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTIyLCA0MCwgMTcsIDksIDI3LCAxNTEsIAotICAgIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgNjYsIDIsIAotICAgIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDI0NCwgMTUxLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDI1MiwgCi0gICAgNjMsIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyNTQsIDIwNiwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIAotICAgIDI3LCAyMjEsIDE2OSwgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxNTEsIDIsIDc3LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMjIsIDYsIDIxNCwgMTI4LCAyNTMsIDI0NiwgMjM0LCAxMCwgMjE4LCAxMzIsIDUsIDUzLCAxNywgCi0gICAgOSwgMjcsIDIyNCwgODEsIDIxNCwgMTI4LCAyNTMsIDI0NiwgMjM0LCAxMCwgMjE4LCAxMzIsIDUsIDUzLCAxNywgOSwgMjcsIAotICAgIDI1NCwgMTYyLCA1MywgMTcsIDksIDI3LCAyNTQsIDE5MiwgNTMsIDE3LCA5LCAyNywgMjMwLCAxNTgsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIyMiwgNywgNTMsIDE3LCA5LCAyNywgMjIzLCAxNDYsIDUzLCAxNywgOSwgMjcsIDI1NCwgMTgxLCA1MywgMTcsIDksIAotICAgIDI3LCAyMTIsIDQ5LCA1MywgMTcsIDksIDI3LCAyMjIsIDYsIDUzLCAxNywgOSwgMjcsIDIyMiwgNSwgMjU0LCAxODEsIDIxMiwgCi0gICAgNDgsIDksIDI3LCAyMzUsIDE0MCwgMjIzLCAzNywgNTAsIDksIDI3LCAyNTEsIDIzOCwgMjU0LCA0NywgMjU0LCA0OCwgNDUsIAotICAgIDIyMSwgMTU4LCA0NSwgMjIxLCA0NywgNDUsIDIyMCwgMjM1LCA0NSwgMjIwLCAyMjQsIDQ1LCAyMjAsIDIxMywgNDUsIDIyMCwgCi0gICAgMjAyLCA0NSwgMjIwLCAxOTEsIDQ1LCAyMjAsIDE4MCwgNDUsIDIyMCwgMTY5LCA0NSwgMjIxLCAxNTcsIDQ1LCAyMjEsIAotICAgIDE0NiwgNDUsIDIyMSwgMTM1LCA0NSwgMjIxLCAxMjQsIDQ1LCAyMjEsIDExMywgNDUsIDIyMSwgMTAyLCA0NSwgMjIxLCA5MSwgCi0gICAgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjQ5LCAyMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDExMCwgMjQ5LCAKLSAgICAyMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDExMCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMjQsIDE5NywgMjQ0LCAKLSAgICAyOCwgMzEsIDY3LCAyNDksIDIzNCwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjIwLCAxNTIsIDIyNCwgMTk3LCAyNDQsIAotICAgIDI4LCAzMSwgNjcsIDI0NSwgMzksIDc5LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyMjQsIDE2LCA3OSwgMjI0LCAKLSAgICAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDcxLCAyMzMsIDI2LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIAotICAgIDQ0LCA3MSwgMjMzLCAyNiwgMjUxLCAxNjQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDIwMywgMjQ1LCAxNzEsIDM4LCAKLSAgICAyNywgNDMsIDI0MiwgMzQsIDM4LCAyNywgNDQsIDI0MiwgMzQsIDM4LCA1MiwgMjE2LCA5MCwgNDMsIDI0MiwgMzQsIDM4LCAKLSAgICA1MiwgMjE2LCA5MCwgNDQsIDI0MiwgMzQsIDM4LCAyMzEsIDIzOCwgNDMsIDI0MiwgMzQsIDM4LCAyMzEsIDIzOCwgNDQsIAotICAgIDI0MiwgMzQsIDM4LCAyNDksIDIwNSwgMjMxLCAyMzcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDExMywgNTksIDIzMywgCi0gICAgNjIsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDI0NSwgMTY4LCAyNDgsIDE2NCwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgMjQ1LCAxNTksIDI0OCwgMTY0LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMjEsIDIzMiwgMjE5LCAyMjQsIAotICAgIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyMTIsIDMyLCAxMjEsIDIzMiwgMjE5LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAKLSAgICA0MywgMjI2LCA3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0NCwgMjI2LCA3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIAotICAgIDY3LCA0MywgMjQ5LCAxMDcsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDI0OSwgMTA3LCAxMjcsIDIyNCwgCi0gICAgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQzLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgNDQsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgODUsIDIzMywgMjYsIAotICAgIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDg1LCAyMzMsIDI2LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAKLSAgICAzMSwgNjcsIDQzLCA1MiwgMjU0LCAxMTgsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDUyLCAyNTQsIAotICAgIDExOCwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjU0LCAxMTgsIDEyNywgMjI0LCAxOTcsIDI0NCwgCi0gICAgMjgsIDMxLCA2NywgNDQsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQzLCAyNDksIDE2OSwgCi0gICAgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0NCwgMjQ5LCAxNjksIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgNDMsIDcxLCAyNDksIDE2OSwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0NCwgNzEsIDI0OSwgMTY5LCAKLSAgICAxMjcsIDIyMCwgMTMzLCAyNDcsIDEyOCwgNzEsIDIyMCwgMTMzLCAyNDcsIDEyOCwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgNDMsIDQyLCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA0MiwgMTI3LCAyNDgsIDE2MywgMjI2LCAKLSAgICAxMjMsIDI1MCwgMTgwLCAyMjYsIDEyMywgMjEyLCAzMiwgMjI2LCAxMjMsIDUyLCAyMTIsIDMyLCAyMjYsIDEyMywgMjQ4LCAKLSAgICAxNjMsIDEyMSwgMjMyLCAyMTksIDI1MCwgMTgwLCAxMjEsIDIzMiwgMjE5LCAyMTIsIDMyLCAxMjEsIDIzMiwgMjE5LCA0LCAKLSAgICAyNDksIDIyNywgNCwgMTEwLCAyNDksIDIyNywgNCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA0LCAyMjAsIDE1MiwgNCwgMjQ5LCAKLSAgICAyMzQsIDQsIDIyNCwgMTYsIDc5LCA0LCAyNDUsIDM5LCA3OSwgNCwgMjQ1LCAxNjgsIDI0OCwgMTY0LCA0LCA0MywgMjI2LCAKLSAgICA3LCA0LCA0NCwgMjI2LCA3LCA0LCA0MywgMjQ5LCAxMDcsIDEyNywgNCwgNDQsIDI0OSwgMTA3LCAxMjcsIDQsIDQzLCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDEyNywgNCwgNDQsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCA0LCA1NCwgNTAsIDQsIDI1NCwgMTM0LCA0LCAKLSAgICAyNTMsIDIyNCwgNCwgOTYsIDUwLCA0LCAyNDAsIDE3NCwgNCwgMjMzLCAyMSwgNTAsIDQsIDI0MiwgMTM3LCA1MCwgNCwgCi0gICAgMjQ1LCAxMDYsIDUwLCA0LCAyMjMsIDUzLCAyMTksIDQ4LCA0LCAyNDcsIDE0MCwgNTAsIDQsIDIyNSwgMTg1LCA1MCwgNCwgCi0gICAgMjQ5LCAyMjUsIDI1MywgMjE0LCA5LCAyNDQsIDE3MiwgNTMsIDE3LCA5LCAyMTcsIDQ1LCAyLCAyNDQsIDE3MiwgNDgsIDksIAotICAgIDI0OCwgMTkxLCA1MywgMTcsIDksIDIxNywgNzksIDI0NCwgOSwgOSwgMjM0LCAyMTAsIDUzLCAxNywgOSwgMjQ0LCAxNzQsIAotICAgIDUzLCAxNywgOSwgMjQ0LCAxNzQsIDE0NywgMTcsIDksIDI0OCwgMTkzLCA1MywgMTcsIDksIDI0OCwgMTkzLCAxNDcsIDE3LCAKLSAgICA5LCAyMzQsIDIxMiwgNTMsIDE3LCA5LCAyMzQsIDIxMiwgMTQ3LCAxNywgOSwgMjIwLCA5NiwgNTMsIDE3LCA5LCAyMjAsIAotICAgIDk2LCAxNDcsIDE3LCA5LCAyMTgsIDQ3LCA1MywgMTcsIDksIDIxOCwgNDcsIDE0NywgMTcsIDksIDEsIDE4MiwgNTMsIDE3LCAKLSAgICA5LCAxLCAxMDksIDIsIDIzMSwgMjMzLCA3MiwgNTMsIDE3LCA5LCAxLCAxMDksIDIsIDIzMSwgMjMzLCA3MiwgNDAsIDE3LCAKLSAgICA5LCAxLCAxMDksIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDEsIDIxMiwgCi0gICAgMzEsIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgMjEyLCAzMSwgMiwgMTgyLCA3MiwgNDAsIDE3LCA5LCAxLCAxMDksIDIsIAotICAgIDE4MiwgMjUyLCA1MSwgNTMsIDE3LCA5LCAxLCAxMDksIDIsIDE4MiwgMjUyLCA1MSwgNDAsIDE3LCA5LCAxLCA3NywgMiwgCi0gICAgMTgyLCA3MiwgNTMsIDE3LCA5LCAxLCA3NywgMiwgMTgyLCA3MiwgNDAsIDE3LCA5LCAxLCA3NywgMiwgMTgyLCA3MiwgNjUsIAotICAgIDE3LCA5LCAxLCA3NywgMiwgMTgyLCA3MiwgMTQ3LCAxNywgOSwgMSwgMTA5LCA1MywgMTcsIDksIDEsIDEwOSwgNDAsIDE3LCAKLSAgICA5LCAxLCAyNTIsIDYzLCA1MywgMTcsIDksIDEsIDI1MiwgNjMsIDQwLCAxNywgOSwgMSwgMjUyLCA2MywgNjUsIDE3LCA5LCAKLSAgICAxLCAyNTIsIDYzLCAxNDcsIDE3LCA5LCAxLCAyMTcsIDksIDIzMSwgMTcwLCA1MywgMTcsIDksIDEsIDIxNywgOSwgMjMxLCAKLSAgICAxNzAsIDQwLCAxNywgOSwgMSwgMjE3LCA5LCA1MywgMTcsIDksIDEsIDIxNywgOSwgNDAsIDE3LCA5LCAxLCAyMTcsIDksIAotICAgIDY1LCAxNywgOSwgMSwgMjE3LCA5LCAxNDcsIDE3LCA5LCAxLCAyMTYsIDE5NCwgNTMsIDE3LCA5LCAxLCAyMTYsIDE5NCwgCi0gICAgNDAsIDE3LCA5LCAxLCAyMTYsIDE5NCwgNjUsIDE3LCA5LCAxLCAyMTYsIDE5NCwgMTQ3LCAxNywgOSwgMSwgMTUxLCA1MywgCi0gICAgMTcsIDksIDEsIDE1MSwgNDAsIDE3LCA5LCAxLCAxNTEsIDY1LCAxNywgOSwgMSwgMTUxLCAxNDcsIDE3LCA5LCAxLCAxMjIsIAotICAgIDUzLCAxNywgOSwgMSwgMTIyLCA0MCwgMTcsIDksIDEsIDEyMiwgNjUsIDE3LCA5LCAxLCAxMjIsIDE0NywgMTcsIDksIDEsIAotICAgIDIzNCwgMTM2LCA1MywgMTcsIDksIDEsIDIzNCwgMTM2LCA0MCwgMTcsIDksIDEsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDEsIAotICAgIDIzNCwgMTM2LCAxNDcsIDE3LCA5LCAxLCAyNDgsIDIwNCwgNTMsIDE3LCA5LCAxLCAyNDgsIDIwNCwgNDAsIDE3LCA5LCAxLCAKLSAgICAyMTYsIDIwNCwgNTMsIDE3LCA5LCAxLCAyMTYsIDIwNCwgNDAsIDE3LCA5LCAxLCAyMjMsIDk5LCA1MywgMTcsIDksIDEsIAotICAgIDIyMywgOTksIDQwLCAxNywgOSwgMSwgMjEwLCAxMDksIDUzLCAxNywgOSwgMSwgMjEwLCAxMDksIDQwLCAxNywgOSwgMSwgCi0gICAgMjIxLCAxNjksIDUzLCAxNywgOSwgMSwgMjIxLCAxNjksIDQwLCAxNywgOSwgMSwgMjIxLCAxNjksIDY1LCAxNywgOSwgMSwgCi0gICAgMjIxLCAxNjksIDE0NywgMTcsIDksIDEsIDIyMCwgNjIsIDUzLCAxNywgOSwgMSwgMjIwLCA2MiwgNDAsIDE3LCA5LCAxLCAKLSAgICAyMjAsIDYyLCA2NSwgMTcsIDksIDEsIDIyMCwgNjIsIDE0NywgMTcsIDksIDEsIDIyMiwgMjksIDUzLCAxNywgOSwgMSwgCi0gICAgMjIyLCAyOSwgNDAsIDE3LCA5LCAxLCAyMjIsIDI5LCA2NSwgMTcsIDksIDEsIDIyMiwgMjksIDE0NywgMTcsIDksIDEsIAotICAgIDI0OCwgMjI1LCA1MywgMTcsIDksIDEsIDI0OCwgMjI1LCA0MCwgMTcsIDksIDEsIDI0OCwgMjI1LCA2NSwgMTcsIDksIDEsIAotICAgIDI0OCwgMjI1LCAxNDcsIDE3LCA5LCAxLCAyMTcsIDgyLCA1MywgMTcsIDksIDEsIDIxNywgODIsIDQwLCAxNywgOSwgMSwgCi0gICAgMjE3LCA4MiwgNjUsIDE3LCA5LCAxLCAyMTcsIDgyLCAxNDcsIDE3LCA5LCAxLCAyMTAsIDExMiwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMTAsIDExMiwgNDAsIDE3LCA5LCAxLCAyMTAsIDExMiwgNjUsIDE3LCA5LCAxLCAyMTAsIDExMiwgMTQ3LCAxNywgOSwgMSwgCi0gICAgMjU0LCAyMDYsIDUzLCAxNywgOSwgMSwgMjU0LCAyMDYsIDQwLCAxNywgOSwgMSwgMjU0LCAyMDYsIDY1LCAxNywgOSwgMSwgCi0gICAgMjU0LCAyMDYsIDE0NywgMTcsIDksIDEsIDI0MiwgMjUyLCA1MywgMTcsIDksIDEsIDI0MiwgMjUyLCA0MCwgMTcsIDksIDEsIAotICAgIDI0MiwgMjUyLCA2NSwgMTcsIDksIDEsIDI0MiwgMjUyLCAxNDcsIDE3LCA5LCAxLCAyNDQsIDE1MSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyNDQsIDE1MSwgNDAsIDE3LCA5LCAxLCAyNDQsIDE1MSwgNjUsIDE3LCA5LCAxLCAyNDQsIDE1MSwgMTQ3LCAxNywgOSwgMSwgCi0gICAgMjI0LCA4NSwgNTMsIDE3LCA5LCAxLCAyMjQsIDg1LCA0MCwgMTcsIDksIDEsIDIyNCwgODUsIDY1LCAxNywgOSwgMSwgMjI0LCAKLSAgICA4NSwgMTQ3LCAxNywgOSwgMSwgMjM1LCAxLCA1MywgMTcsIDksIDEsIDIzNSwgMSwgNDAsIDE3LCA5LCAxLCAyMzUsIDEsIAotICAgIDY1LCAxNywgOSwgMSwgMjM1LCAxLCAxNDcsIDE3LCA5LCAxLCAyMzMsIDEwOSwgNTMsIDE3LCA5LCAxLCAyMzMsIDEwOSwgCi0gICAgNDAsIDE3LCA5LCAxLCAyMzMsIDEwOSwgNjUsIDE3LCA5LCAxLCAyMzMsIDEwOSwgMTQ3LCAxNywgOSwgMSwgNjYsIDUzLCAKLSAgICAxNywgOSwgMSwgNjYsIDQwLCAxNywgOSwgMSwgNjYsIDY1LCAxNywgOSwgMSwgNjYsIDE0NywgMTcsIDksIDEsIDIyOCwgNjgsIAotICAgIDUzLCAxNywgOSwgMSwgMjI4LCA2OCwgNDAsIDE3LCA5LCAxLCAyMjgsIDY4LCA2NSwgMTcsIDksIDEsIDIyOCwgNjgsIDE0NywgCi0gICAgMTcsIDksIDEsIDI0MSwgMjI2LCA1MywgMTcsIDksIDEsIDI0MSwgMjI2LCA0MCwgMTcsIDksIDEsIDI0MSwgMjI2LCA2NSwgCi0gICAgMTcsIDksIDEsIDI0MSwgMjI2LCAxNDcsIDE3LCA5LCAxLCAyMTIsIDMxLCA1MywgMTcsIDksIDEsIDIxMiwgMzEsIDQwLCAKLSAgICAxNywgOSwgMSwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAxLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDEsIDc3LCAKLSAgICA1MywgMTcsIDksIDEsIDc3LCA0MCwgMTcsIDksIDEsIDc3LCA2NSwgMTcsIDksIDEsIDc3LCAxNDcsIDE3LCA5LCAyNywgCi0gICAgMjMzLCAxMDksIDIsIDEwOSwgMiwgMjMxLCAyMzMsIDcyLCA1MywgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAKLSAgICAyMzEsIDIzMywgNzIsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMDksIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMjcsIAotICAgIDIzMywgMTA5LCAyLCAxMDksIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMDksIDIsIDE4MiwgCi0gICAgMjUyLCA1MSwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgMiwgMTgyLCAyNTIsIDUxLCA0MCwgMTcsIDksIDI3LCAKLSAgICAyMzMsIDEwOSwgMiwgMTA5LCA1MywgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCA0MCwgMTcsIDIxMCwgODcsIDIxMSwgCi0gICAgMjQ1LCAyMjgsIDc4LCAyMTksIDIwLCAxMjYsIDI0NSwgMzksIDc5LCAxMjYsIDIyNCwgMSwgNzksIDEyNiwgNTQsIDUwLCAKLSAgICAxMjYsIDI0NywgMTQwLCA1MCwgMTI2LCAyMjUsIDE4NSwgNTAsIDEyNiwgMjU0LCAxMzQsIDEyNiwgMjU0LCA2NSwgMTI2LCAKLSAgICA0MywgMjI2LCA3LCAxMjYsIDQ0LCAyMjYsIDcsIDEyNiwgMjUzLCAyMjQsIDEyNiwgOTYsIDUwLCAxMjYsIDI0OSwgMjI3LCAKLSAgICAxMjYsIDI0MCwgMTc0LCAxMjYsIDI0MywgMjM2LCAyMTgsIDEzMSwgMTI2LCAyMTksIDQ4LCAxMjYsIDIxLCAyMTAsIDg2LCAKLSAgICAxMjYsIDIxLCAxMTEsIDEyNiwgMjEsIDEwNSwgMTI2LCAyMSwgMTU4LCAxMjYsIDIxLCAxNjEsIDEyNiwgMjEsIDE5MCwgCi0gICAgMTI2LCAyMSwgMTk1LCAxMjYsIDIxLCAxOTksIDEyNiwgMjEsIDE5NiwgMTI2LCAyMSwgMjAxLCAxMjYsIDI0OSwgMjM0LCAKLSAgICAxMjYsIDIyMCwgMTUyLCAxMjYsIDIzMywgMjEsIDUwLCAxMjYsIDI0NSwgMTA2LCA1MCwgMTI2LCAyNDIsIDEzNywgNTAsIAotICAgIDEyNiwgMjI0LCAxNiwgNzksIDEyNiwgMjQ5LCAyMjUsIDI1MywgMjE0LCAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIAotICAgIDEsIDI1MywgMTY2LCAxMjYsIDcsIDYsIDEsIDI1MSwgNzQsIDEyNiwgNywgNiwgMSwgMjQ5LCA2OCwgMTI2LCA3LCA2LCAxLCAKLSAgICA3NiwgMTI2LCA3LCA2LCAxLCAyNDUsIDE0LCAxMjYsIDcsIDYsIDEsIDI0MywgMjA5LCAxMjYsIDcsIDYsIDEsIDI0MiwgNjcsIAotICAgIDEyNiwgNywgNiwgMSwgNzQsIDEyNiwgNywgNiwgMSwgMjM1LCAxNTAsIDEyNiwgNywgNiwgMSwgMjM1LCAyOSwgMTI2LCA3LCAKLSAgICA2LCAxLCAxNTYsIDEyNiwgNywgNiwgMSwgMTk0LCAxMjYsIDcsIDYsIDEsIDIzMCwgMzAsIDEyNiwgNywgNiwgMSwgNzgsIAotICAgIDEyNiwgNywgNiwgMSwgMjI2LCAxMDksIDEyNiwgNywgNiwgMSwgMjI0LCA5OSwgMTI2LCA3LCA2LCAxLCAxNTMsIDEyNiwgNywgCi0gICAgNiwgMSwgMjIyLCA5MywgMTI2LCA3LCA2LCAxLCAyMTcsIDE1MywgMTI2LCA3LCA2LCAxLCA2OSwgMTI2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDEwNSwgMTI2LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjYsIDcsIDYsIDEsIDIxMSwgMTc4LCAxMjYsIDcsIDYsIDEsIAotICAgIDIxMSwgMTE3LCAxMjYsIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjYsIDQzLCA0MiwgMTI3LCAxMjYsIDIyMywgNTMsIDIxOSwgCi0gICAgNDgsIDEyNiwgNDQsIDQyLCAxMjcsIDEyNiwgMjUwLCAzOSwgMjU1LCAyMywgMTI2LCAxMjEsIDIzMiwgMjE5LCAxMjYsIAotICAgIDI0MiwgMTQ0LCAyNTUsIDIzLCAxMjYsIDcsIDQsIDEsIDYxLCAxMjYsIDcsIDQsIDEsIDI1MywgMTY2LCAxMjYsIDcsIDQsIAotICAgIDEsIDI1MSwgNzQsIDEyNiwgNywgNCwgMSwgMjQ5LCA2OCwgMTI2LCA3LCA0LCAxLCA3NiwgMTI2LCA3LCA0LCAxLCAyNDUsIAotICAgIDE0LCAxMjYsIDcsIDQsIDEsIDI0MywgMjA5LCAxMjYsIDcsIDQsIDEsIDI0MiwgNjcsIDEyNiwgNywgNCwgMSwgNzQsIDEyNiwgCi0gICAgNywgNCwgMSwgMjM1LCAxNTAsIDEyNiwgNywgNCwgMSwgMjM1LCAyOSwgMTI2LCA3LCA0LCAxLCAxNTYsIDEyNiwgNywgNCwgCi0gICAgMSwgMTk0LCAxMjYsIDcsIDQsIDEsIDIzMCwgMzAsIDEyNiwgNywgNCwgMSwgNzgsIDEyNiwgNywgNCwgMSwgMjI2LCAxMDksIAotICAgIDEyNiwgNywgNCwgMSwgMjI0LCA5OSwgMTI2LCA3LCA0LCAxLCAxNTMsIDEyNiwgNywgNCwgMSwgMjIyLCA5MywgMTI2LCA3LCAKLSAgICA0LCAxLCAyMTcsIDE1MywgMTI2LCA3LCA0LCAxLCA2OSwgMTI2LCA3LCA0LCAxLCAyMTQsIDEwNSwgMTI2LCA3LCA0LCAxLCAKLSAgICAyMTIsIDk4LCAxMjYsIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjYsIDcsIDQsIDEsIDIxMSwgMTE3LCAxMjYsIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAxMjYsIDQzLCAyNDksIDEwNywgMTI3LCAxMjYsIDY3LCAyMzIsIDIxOSwgMTI2LCA0NCwgMjQ5LCAxMDcsIAotICAgIDEyNywgMTI2LCAxODQsIDEyNiwgNDMsIDcxLCAyMjYsIDcsIDEyNiwgNDQsIDcxLCAyMjYsIDcsIDEwMSwgMTEwLCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDEwMSwgNDMsIDI0OSwgMTY5LCAxMjcsIDEwMSwgNDQsIDI0OSwgMTY5LCAxMjcsIDEwMSwgMTEwLCAKLSAgICAyNDksIDIyNywgMTAxLCA1NiwgMjMwLCAyMjksIDI0NywgMTI4LCAxMDEsIDU2LCAxLCAyMTEsIDIyNywgMTAxLCA1NiwgMSwgCi0gICAgNCwgNjEsIDEwMSwgNTYsIDEsIDQsIDc0LCAxMDEsIDU2LCAxLCA0LCA2OSwgMTAxLCA1NiwgMSwgNCwgNzYsIDEwMSwgNTYsIAotICAgIDEsIDQsIDc4LCAxMDEsIDU2LCAxLCA0LCAxOTIsIDEwMSwgNTYsIDEsIDQsIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCA0LCAKLSAgICAyMTAsIDI0NCwgMTAxLCA1NiwgMSwgNCwgMjE1LCAxMTksIDEwMSwgMjM0LCAyMDcsIDIyNCwgMTc2LCAyMTksIDMzLCA3OSwgCi0gICAgMTAxLCA1NiwgMSwgNjEsIDEwMSwgNTYsIDEsIDc0LCAxMDEsIDU2LCAxLCA2OSwgMTAxLCA1NiwgMSwgNzYsIDEwMSwgNTYsIAotICAgIDEsIDc4LCAxMDEsIDU2LCAxLCAxNzYsIDEwMSwgNTYsIDEsIDIzNCwgOTgsIDEwMSwgNTYsIDEsIDIzMywgMjIzLCAxMDEsIAotICAgIDU2LCAxLCAyMzQsIDE4OCwgMTAxLCA1NiwgMSwgMjM0LCAzNCwgMTAxLCA1NiwgMSwgMjA2LCAxMDEsIDU2LCAxLCAyMTksIAotICAgIDE5MywgMTAxLCA1NiwgMSwgMjE4LCA4NCwgMTAxLCA1NiwgMSwgMjIxLCAxODMsIDEwMSwgNTYsIDEsIDIxOSwgNjAsIDEwMSwgCi0gICAgNTYsIDEsIDIxNywgMTA2LCAxMDEsIDU2LCAxLCAyMTYsIDExOCwgMTAxLCA1NiwgMSwgMjE1LCAxMTksIDEwMSwgNTYsIDEsIAotICAgIDIxNywgMjMsIDEwMSwgNTYsIDEsIDExMiwgMTAxLCA1NiwgMSwgMTk4LCAxMDEsIDU2LCAxLCAyMjgsIDIzOCwgMTAxLCA1NiwgCi0gICAgMSwgMjI3LCAyNDIsIDEwMSwgNTYsIDEsIDIyOSwgMTEyLCAxMDEsIDU2LCAxLCAyMjgsIDc5LCAxMDEsIDU2LCAxLCAxNjIsIAotICAgIDEwMSwgNTYsIDEsIDI0MSwgMTg3LCAxMDEsIDU2LCAxLCAyNDAsIDIyOSwgMTAxLCA1NiwgMSwgMjQxLCAyNDUsIDEwMSwgCi0gICAgNTYsIDEsIDI0MSwgNzUsIDEwMSwgNTYsIDEsIDE4NiwgMTAxLCA1NiwgMSwgMjMwLCAyMzUsIDEwMSwgNTYsIDEsIDIzMCwgCi0gICAgMTA3LCAxMDEsIDU2LCAxLCAyMzEsIDk2LCAxMDEsIDU2LCAxLCAyMzAsIDE2NiwgMTAxLCA1NiwgMSwgMTkyLCAxMDEsIDU2LCAKLSAgICAxLCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDIwNSwgMTAxLCA1NiwgMSwgMjIzLCAzOCwgCi0gICAgMTAxLCA1NiwgMSwgMjIyLCAxNDIsIDEwMSwgNTYsIDEsIDIyMywgMTMxLCAxMDEsIDU2LCAxLCAyMjIsIDIxMywgMTAxLCAKLSAgICA1NiwgMSwgMjEyLCA2NSwgMTAxLCA1NiwgMSwgMjMwLCAzMCwgMTAxLCA1NiwgMjEzLCAxMzUsIDIxOSwgMzMsIDc5LCAxMDEsIAotICAgIDU2LCAyMjAsIDE1NywgMjE5LCAzMywgNzksIDEwMSwgMjQsIDI0NCwgMTExLCAxMDEsIDI0LCAxLCAyMzQsIDY0LCAxMDEsIAotICAgIDI0LCAxLCAyMTgsIDIxNywgMTAxLCAyNCwgMSwgMjM0LCA1NywgMTAxLCAyNCwgMSwgMjI4LCAyMzEsIDEwMSwgMjQsIDEsIAotICAgIDIyOCwgMjI5LCAxMDEsIDI0LCAxLCAyMjgsIDIyOCwgMTAxLCAyNCwgMSwgMjE2LCAxMDIsIDEwMSwgMjQsIDEsIDIxOCwgCi0gICAgMjA2LCAxMDEsIDI0LCAxLCAyMjMsIDI5LCAxMDEsIDI0LCAxLCAyMjMsIDI0LCAxMDEsIDI0LCAxLCAyMjMsIDIxLCAxMDEsIAotICAgIDI0LCAxLCAyMjMsIDE0LCAxMDEsIDI0LCAxLCAyMjMsIDksIDEwMSwgMjQsIDEsIDIyMywgNCwgMTAxLCAyNCwgMSwgMjIzLCAKLSAgICAxNSwgMTAxLCAyNCwgMSwgMjIzLCAyNywgMTAxLCAyNCwgMSwgMjMwLCAyMjIsIDEwMSwgMjQsIDEsIDIyNSwgOTgsIDEwMSwgCi0gICAgMjQsIDEsIDIxOCwgMjE0LCAxMDEsIDI0LCAxLCAyMjUsIDg3LCAxMDEsIDI0LCAxLCAyMTksIDE1MCwgMTAxLCAyNCwgMSwgCi0gICAgMjE4LCAyMTEsIDEwMSwgMjQsIDEsIDIzNiwgNjMsIDEwMSwgMjQsIDEsIDI1MCwgNTQsIDEwMSwgMjQsIDEsIDIxOCwgMjIxLCAKLSAgICAxMDEsIDI0LCAxLCAyNTAsIDExNCwgMTAxLCAyNCwgMSwgMjM0LCAxMTYsIDEwMSwgMjQsIDEsIDIxNiwgMTc0LCAxMDEsIAotICAgIDI0LCAxLCAyMjUsIDEzNCwgMTAxLCAyNCwgMSwgMjQxLCAxNzksIDEwMSwgMjQsIDEsIDYxLCAxMDEsIDI0LCAxLCAyNTQsIAotICAgIDI1MiwgMTAxLCAyNCwgMSwgMTkyLCAxMDEsIDI0LCAxLCAyMTEsIDkyLCAxMDEsIDI0LCAxLCAyNDUsIDEyNSwgMTAxLCAyNCwgCi0gICAgMSwgNzYsIDEwMSwgMjQsIDEsIDIxMSwgMzYsIDEwMSwgMjQsIDEsIDIxMSwgNDcsIDEwMSwgMjQsIDEsIDc4LCAxMDEsIDI0LCAKLSAgICAxLCAyMTIsIDY1LCAxMDEsIDI0LCAxLCAyMTIsIDYyLCAxMDEsIDI0LCAxLCAyMjYsIDIzOCwgMTAxLCAyNCwgMSwgMjEwLCAKLSAgICAyNDQsIDEwMSwgMjQsIDEsIDY5LCAxMDEsIDI0LCAxLCAyMTIsIDExLCAxMDEsIDI0LCAxLCAyMTIsIDIyLCAxMDEsIDI0LCAKLSAgICAxLCAyMTEsIDI1MCwgMTAxLCAyNCwgMSwgMjEwLCAyMTIsIDEwMSwgMjQsIDEsIDI0NSwgNjMsIDEwMSwgMjQsIDEsIDIxMSwgCi0gICAgOCwgMTAxLCAyNCwgMSwgNzQsIDEyNiwgMjUwLCAxODQsIDUwLCAxMjYsIDIyNCwgMjMxLCA1MCwgMTI2LCAyMjgsIDU3LCAKLSAgICA1MCwgMTI2LCAyMzEsIDIzNywgMTI2LCAyNTEsIDE0MywgMTMwLCAxMjYsIDIxMSwgNDAsIDUwLCAxMjYsIDIxMSwgMjE3LCAKLSAgICA1MCwgMTAxLCAyNDQsIDI2LCAxOTMsIDIxMywgMjM5LCAxMDEsIDE0MCwgNzUsIDEwMSwgMjE0LCAxNTMsIDc1LCAxMDEsIAotICAgIDk3LCA3NSwgMTAxLCAyNDYsIDExMiwgNzUsIDEwMSwgODUsIDIxOCwgMjM2LCAxMDEsIDcxLCAyNTAsIDQzLCAyMzUsIDIxMSwgCi0gICAgMjU0LCAxMDcsIDI1NCwgMTI4LCAyMzUsIDIxMSwgMjU0LCAxMDcsIDIyMCwgMTM5LCAyMzUsIDIxMSwgMjU0LCAxMDcsIAotICAgIDIxNiwgMjM3LCAyMjYsIDI1MywgMjIzLCA3NSwgMjUwLCAxNTAsIDIyMywgNzUsIDI1MCwgMTUwLCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTUwLCA2MSwgNjIsIDU3LCAzLCAyNTMsIDExOSwgNzYsIDYyLCA1NywgMywgMjUzLCAxMjgsIDc0LCA2MiwgNTcsIDMsIAotICAgIDI1MywgOTYsIDc4LCA2MiwgNTcsIDMsIDI1MywgMTQ2LCA2OSwgNjIsIDU3LCAzLCAyNTMsIDE2NSwgMjQ4LCAyMjksIDYyLCAKLSAgICA1NywgMywgMjUzLCAxMTIsIDI0OCwgOTgsIDYyLCA1NywgMywgMjUzLCAxNTIsIDI0OCwgMTEsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxNDIsIDI0NywgMTUzLCA2MiwgNTcsIDMsIDI1MywgMTA2LCAyNDYsIDg2LCA2MiwgNTcsIDMsIDI1MywgMTAwLCAyMzUsIAotICAgIDE0NywgNjIsIDU3LCAzLCAyNTMsIDExMSwgMjM1LCAxMzIsIDYyLCA1NywgMywgMjUzLCAxMjEsIDIzNSwgNzQsIDYyLCA1NywgCi0gICAgMywgMjUzLCA5MiwgMjM1LCA1NywgNjIsIDU3LCAzLCAyNTMsIDgwLCAxNzYsIDYyLCA1NywgMywgMjUzLCAxMTMsIDIzNCwgCi0gICAgMTg4LCA2MiwgNTcsIDMsIDI1MywgOTAsIDIzNCwgOTgsIDYyLCA1NywgMywgMjUzLCA4NywgMjM0LCAzNCwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDc2LCAyMzMsIDIyMywgNjIsIDU3LCAzLCAyNTMsIDc3LCAxODYsIDYyLCA1NywgMywgMjUzLCAxNDMsIDIzMSwgOTYsIAotICAgIDYyLCA1NywgMywgMjUzLCA4NCwgMjMwLCAyMzUsIDYyLCA1NywgMywgMjUzLCAxNDEsIDIzMCwgMTY2LCA2MiwgNTcsIDMsIAotICAgIDI1MywgMTMzLCAyMzAsIDEwNywgNjIsIDU3LCAzLCAyNTMsIDE1NCwgMTk4LCA2MiwgNTcsIDMsIDI1MywgMTMyLCAyMjksIAotICAgIDExMiwgNjIsIDU3LCAzLCAyNTMsIDEyNiwgMjI4LCAyMzgsIDYyLCA1NywgMywgMjUzLCAxMDUsIDIyOCwgNzksIDYyLCA1NywgCi0gICAgMywgMjUzLCAxMDIsIDIyNywgMjQyLCA2MiwgNTcsIDMsIDI1MywgMTYxLCAxOTEsIDYyLCA1NywgMywgMjUzLCA4NSwgMjI1LCAKLSAgICAyMjQsIDYyLCA1NywgMywgMjUzLCAxMTgsIDIyNSwgMTExLCA2MiwgNTcsIDMsIDI1MywgMTQ1LCAyMjUsIDE5LCA2MiwgNTcsIAotICAgIDMsIDI1MywgMTA3LCAyMjQsIDE1MywgNjIsIDU3LCAzLCAyNTMsIDE0MCwgMjI0LCA5MSwgNjIsIDU3LCAzLCAyNTMsIDc5LCAKLSAgICAyMjQsIDcyLCA2MiwgNTcsIDMsIDI1MywgMTM1LCAyMjQsIDU2LCA2MiwgNTcsIDMsIDI1MywgMTI0LCAyMjQsIDQ1LCA2MiwgCi0gICAgNTcsIDMsIDI1MywgOTcsIDIwNSwgNjIsIDU3LCAzLCAyNTMsIDEyOSwgMjIzLCAxMzEsIDYyLCA1NywgMywgMjUzLCAxMDQsIAotICAgIDIyMywgMzgsIDYyLCA1NywgMywgMjUzLCAxNjMsIDIyMiwgMjEzLCA2MiwgNTcsIDMsIDI1MywgMTMwLCAyMjIsIDE0MiwgCi0gICAgNjIsIDU3LCAzLCAyNTMsIDEyNSwgMjA2LCA2MiwgNTcsIDMsIDI1MywgMTQ4LCAyMjEsIDE4MywgNjIsIDU3LCAzLCAyNTMsIAotICAgIDExNiwgMjE5LCAxOTMsIDYyLCA1NywgMywgMjUzLCAxNDQsIDIxOSwgNjAsIDYyLCA1NywgMywgMjUzLCA5OSwgMjE4LCA4NCwgCi0gICAgNjIsIDU3LCAzLCAyNTMsIDk4LCAyMTcsIDEwNiwgNjIsIDU3LCAzLCAyNTMsIDE1OSwgMjE3LCAyMywgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDEyMCwgMjE2LCAxMTgsIDYyLCA1NywgMywgMjUzLCAxNTcsIDExMiwgNjIsIDU3LCAzLCAyNTMsIDg4LCAyMTUsIAotICAgIDExOSwgNjIsIDU3LCAzLCAyNTMsIDEwMywgMjEyLCA2NSwgNjIsIDU3LCAzLCAyNTMsIDgyLCAyMTIsIDIyLCA2MiwgNTcsIAotICAgIDMsIDI1MywgMTE3LCAyMTEsIDI1MCwgNjIsIDU3LCAzLCAyNTMsIDExNSwgMjExLCAyMjcsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxMzksIDIxMCwgMTE2LCA2MiwgNTcsIDMsIDI1MywgODMsIDIxMCwgOTQsIDYyLCA1NywgMywgMjUzLCAxMzYsIDIxMCwgMjMsIAotICAgIDYyLCA1NywgMywgMjUzLCAxMzEsIDI1NSwgODQsIDYyLCA1NywgMywgMjUzLCAxMTQsIDI1NSwgODMsIDYyLCA1NywgMywgCi0gICAgMjUzLCA3MywgMjUzLCAyMDAsIDYyLCA1NywgMywgMjUzLCA4NiwgMjQ2LCA1NCwgNjIsIDU3LCAzLCAyNTMsIDY5LCAyNDYsIAotICAgIDUzLCA2MiwgNTcsIDMsIDI1MywgMTA5LCAyMjcsIDE3OCwgNjIsIDU3LCAzLCAyNTMsIDEyNywgMjI0LCAxNTEsIDYyLCA1NywgCi0gICAgMywgMjUzLCA5NSwgMjI0LCAxNTUsIDYyLCA1NywgMywgMjUzLCA4MSwgMjIzLCAxODksIDYyLCA1NywgMywgMjUzLCAxMjMsIAotICAgIDIyMywgMTg4LCA2MiwgNTcsIDMsIDI1MywgODksIDIyMiwgMjEyLCA2MiwgNTcsIDMsIDI1MywgOTEsIDIxNywgMTAzLCA2MiwgCi0gICAgNTcsIDMsIDI1MywgNzEsIDIxNSwgNzgsIDYyLCA1NywgMywgMjUzLCA2OCwgMTA1LCA2MiwgNTcsIDE2LCAyNTMsIDEzOCwgCi0gICAgNjIsIDU3LCAxNiwgMjUzLCAxMzcsIDYyLCA1NywgMTYsIDI1MywgMTM0LCA2MiwgNTcsIDE2LCAyNTMsIDEyMiwgNjIsIDU3LCAKLSAgICAxNiwgMjUzLCAxMTAsIDYyLCA1NywgMTYsIDI1MywgMTA4LCA2MiwgNTcsIDE2LCAyNTMsIDEwMSwgNjIsIDU3LCAxNiwgCi0gICAgMjUzLCA5NCwgNjIsIDU3LCAxNiwgMjUzLCA5MywgNjIsIDU3LCAxNiwgMjUzLCA3OCwgNjIsIDU3LCAxNiwgMjUzLCA3NSwgCi0gICAgNjIsIDU3LCAxNiwgMjUzLCA3NCwgNjIsIDU3LCAxNiwgMjUzLCA3MiwgNjIsIDU3LCAxNiwgMjUzLCA3MCwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgNjcsIDIzMSwgMTkwLCA2MiwgNTcsIDEwNiwgMjUzLCA2NiwgMjExLCAyMjEsIDYyLCA1NywgMTA2LCAyNTMsIAotICAgIDY1LCAyNDgsIDgyLCA2MiwgNTcsIDEwNiwgMjUzLCA2NCwgMjQ1LCAxMDMsIDYyLCA1NywgMTA2LCAyNTMsIDYzLCAyMzEsIAotICAgIDE2NCwgNjIsIDU3LCAxMDYsIDI1MywgNjIsIDIxOCwgMTY0LCA2MiwgNTcsIDEwNiwgMjUzLCA2MSwgMjQ1LCA0NSwgNjIsIAotICAgIDU3LCAxMDYsIDI1MywgNjAsIDIyMywgMTU2LCA2MiwgNTcsIDEwNiwgMjUzLCA1OSwgMjIwLCA2NCwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgNTgsIDI0MSwgMjQ0LCA2MiwgNTcsIDEwNiwgMjUzLCA1NywgMjE5LCAyNywgNjIsIDU3LCAxMDYsIDI1MywgNTYsIAotICAgIDI1MSwgMjExLCA2MiwgNTcsIDEwNiwgMjUzLCA1NSwgMjQ5LCAxNTMsIDYyLCA1NywgMTA2LCAyNTMsIDU0LCAyNTEsIDEyMywgCi0gICAgNjIsIDU3LCAxMDYsIDI1MywgNTMsIDIxMiwgMiwgNjIsIDU3LCAxMDYsIDI1MywgNTIsIDI1MiwgMTQ0LCA2MiwgNTcsIAotICAgIDEwNiwgMjUzLCA1MSwgMjI2LCAyMDksIDYyLCA1NywgMTA2LCAyNTMsIDUwLCAyMTksIDAsIDYyLCA1NywgMTA2LCAyNTMsIAotICAgIDQ5LCAyNDksIDc2LCA2MiwgNTcsIDIzMCwgMTQ3LCAyNTMsIDQ4LCAyMzQsIDIzMCwgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCAKLSAgICA0NywgMjM0LCAyMzgsIDYyLCA1NywgMTA2LCAyNTMsIDQ2LCAyMjYsIDIyMiwgNjIsIDU3LCAxMDYsIDI1MywgNDUsIDIxMSwgCi0gICAgMjM2LCA2MiwgNTcsIDEwNiwgMjUzLCA0NCwgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCA0MywgMjU0LCAyNSwgNjIsIDU3LCAKLSAgICAyMzAsIDE0NywgMjUzLCA0MiwgMjMxLCA1NywgNjIsIDU3LCAxMDYsIDI1MywgNDEsIDI1MSwgMTQyLCA2MiwgNTcsIDEwNiwgCi0gICAgMjUzLCA0MCwgMjQyLCAxNzMsIDYyLCA1NywgMTA2LCAyNTMsIDM5LCA2MiwgNTcsIDEwNiwgMjUzLCAzOCwgMjExLCAyMTIsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDM3LCA2MiwgNTcsIDEwNiwgMjUzLCAzNiwgNjIsIDU3LCAxMDYsIDI1MywgMzUsIDI0MCwgCi0gICAgMjU1LCA2MiwgNTcsIDEwNiwgMjUzLCAzNCwgNjIsIDU3LCAxMDYsIDI1MywgMzMsIDYyLCA1NywgMTA2LCAyNTMsIDMyLCAKLSAgICA2MiwgNTcsIDIzMCwgMTQ3LCAyNTMsIDMwLCAyMTUsIDkyLCA2MiwgNTcsIDEwNiwgMjUzLCAyOSwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgMjgsIDYyLCA1NywgMTA2LCAyNTMsIDI3LCAyNTAsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDI2LCA2MiwgNTcsIDEwNiwgCi0gICAgMjUzLCAyNSwgNjIsIDU3LCAxMDYsIDI1MywgMjQsIDI0MywgMTAwLCA2MiwgNTcsIDEwNiwgMjUzLCAyMywgMjU0LCAxMiwgCi0gICAgNjIsIDU3LCAxMDYsIDI1MywgMjIsIDYyLCA1NywgMTA2LCAyNTMsIDIxLCA2MiwgNTcsIDEwNiwgMjUzLCAyMCwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgMTksIDYyLCA1NywgMTA2LCAyNTMsIDE4LCA2MiwgNTcsIDEwNiwgMjUzLCAxNywgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgMTYsIDYyLCA1NywgMTA2LCAyNTMsIDE1LCA2MiwgNTcsIDEwNiwgMjUzLCAxNCwgNjIsIDU3LCAxMDYsIDI1MywgCi0gICAgMTMsIDIzMCwgMTM5LCA2MiwgNTcsIDEwNiwgMjUzLCAxMiwgNjIsIDU3LCAxMDYsIDI1MywgMTEsIDIxNSwgMjM2LCA2MiwgCi0gICAgNTcsIDEwNiwgMjUzLCAxMCwgNjIsIDU3LCAxMDYsIDI1MywgOSwgNjIsIDU3LCAxMDYsIDI1MywgOCwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgNywgNjIsIDU3LCAxMDYsIDI1MywgNiwgNjIsIDU3LCAxMDYsIDI1MywgNSwgNjIsIDU3LCAxMDYsIDI1MywgNCwgCi0gICAgNjIsIDU3LCAxMDYsIDI1MywgMywgNjIsIDU3LCAxMDYsIDI1MywgMiwgNjIsIDU3LCAxMDYsIDI1MywgMSwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgMCwgNjIsIDU3LCAxMDYsIDI1MiwgMjU1LCAyNDEsIDIxOCwgNjIsIDU3LCAxMDYsIDI1MiwgMjM0LCAyNDQsIAotICAgIDM2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMzEsIDI1MiwgMTI0LCA2MiwgNTcsIDEwNiwgMjUyLCAyMjYsIDIxOSwgNywgNjIsIAotICAgIDU3LCAxMDYsIDI1MiwgMjI1LCA3NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjI0LCA2MiwgNTcsIDEwNiwgMjUyLCAyMjMsIDIxNywgCi0gICAgMjM3LCA2MiwgNTcsIDEwNiwgMjUyLCAyMjIsIDYyLCA1NywgMTA2LCAyNTIsIDIyMSwgNjIsIDU3LCAxMDYsIDI1MiwgMjIwLCAKLSAgICAyMTEsIDI1NCwgMjUwLCAxNDcsIDYyLCA1NywgMTA2LCAyNTIsIDIxOSwgMjUwLCAxNDcsIDYyLCA1NywgMTA2LCAyNTIsIAotICAgIDIxOCwgMjUwLCAxNDgsIDI0NCwgNywgNjIsIDU3LCAxMDYsIDI1MiwgMjE3LCAyMTIsIDAsIDYyLCA1NywgMTA2LCAyNTIsIAotICAgIDIxNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjE1LCA2MiwgNTcsIDIzMCwgMTQ3LCAyNTIsIDIxNCwgMjQ3LCAyMDYsIDYyLCA1NywgCi0gICAgMTA2LCAyNTIsIDIxMywgNjIsIDU3LCAxMDYsIDI1MiwgMjEyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMTAsIDYyLCA1NywgMTA2LCAKLSAgICAyNTIsIDIwOSwgNjIsIDU3LCAxMDYsIDI1MiwgMjA4LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDcsIDI0OCwgMTY3LCA2MiwgNTcsIAotICAgIDEwNiwgMjUyLCAyMDYsIDYyLCA1NywgMTA2LCAyNTIsIDIwNSwgNjIsIDU3LCAxMDYsIDI1MiwgMjA0LCA2MiwgNTcsIDEwNiwgCi0gICAgMjUyLCAyMDMsIDYyLCA1NywgMTA2LCAyNTIsIDIwMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTMsIDMxLCA2MiwgNTcsIAotICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjU0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjUzLCA2MiwgNTcsIDEwNiwgCi0gICAgMjEzLCAxODYsIDI1MiwgMjUyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjUxLCA2MiwgNTcsIDEwNiwgMjEzLCAKLSAgICAxODYsIDI1MiwgMjUwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAotICAgIDI1MiwgMjQ4LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ3LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCi0gICAgMjQ2LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ0LCAKLSAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQyLCA2MiwgNTcsIAotICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQwLCA2MiwgNTcsIDEwNiwgCi0gICAgMjEzLCAxODYsIDI1MiwgMjM5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM4LCA2MiwgNTcsIDEwNiwgMjEzLCAKLSAgICAxODYsIDI1MiwgMjM3LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM2LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAotICAgIDI1MiwgMjM1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCi0gICAgMjMyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI5LCAKLSAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI4LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI3LCA2MiwgNTcsIAotICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjExLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjAxLCAyNTQsIDI0NSwgMjExLCAKLSAgICAyMDksIDIyMCwgMTQwLCAyMzIsIDIxOSwgMjU0LCAyNDUsIDIxMSwgMjA5LCAyMjAsIDE0MCwgMjQ3LCAxMjgsIDI1NCwgCi0gICAgMjQ1LCAyNTAsIDEzOCwgNzksIDI1NCwgMjQ1LCA1NCwgMTExLCAyNTQsIDI0NSwgNTQsIDEwNSwgMjU0LCAyNDUsIDU0LCAKLSAgICAxNTgsIDI1NCwgMjQ1LCA1NCwgMTYxLCAyNTQsIDI0NSwgNTQsIDE5MCwgMjU0LCAyNDUsIDU0LCAxOTUsIDI1NCwgMjQ1LCAKLSAgICA1NCwgMTk5LCAyNTQsIDI0NSwgNTQsIDE5NiwgMjU0LCAyNDUsIDU0LCAyMDEsIDI1NCwgMjQ1LCA1NCwgMjE2LCAyNDgsIAotICAgIDI1NCwgMjQ1LCA1NCwgMjE1LCA3MywgMjU0LCAyNDUsIDU0LCAyMTYsIDE2MywgMjU0LCAyNDUsIDU0LCAyNDQsIDIzLCAKLSAgICAyNTQsIDI0NSwgNTQsIDI0NCwgMTIyLCAyNTQsIDI0NSwgNTQsIDIxOSwgMTEzLCAyNTQsIDI0NSwgNTQsIDIyMCwgMTE4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDI0NSwgMTkyLCAyNTQsIDI0NSwgNTQsIDIyOCwgMjAwLCAyNTQsIDI0NSwgNTQsIDEyMywgMjQwLCAKLSAgICAyMTcsIDI1NCwgMjQ1LCA1NCwgMTEzLCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAxMzQsIDI0MCwgMjE3LCAyNTQsIDI0NSwgCi0gICAgNTQsIDI0NCwgMTksIDI0MCwgMjE3LCAyNTQsIDI0NSwgNTQsIDI0NCwgODksIDI0MCwgMjE3LCAyNTQsIDI0NSwgNTQsIAotICAgIDIxOSwgMTI3LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyMjAsIDEyNCwgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMjQ1LCAKLSAgICAyMDEsIDI0MCwgMjE3LCAyNTQsIDI0NSwgNTQsIDIyOCwgMjA1LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAxMjMsIDIxNiwgCi0gICAgMTQ4LCAyNTQsIDI0NSwgNTQsIDExMywgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMTM0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIAotICAgIDU0LCAyNDQsIDE5LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyNDQsIDg5LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAKLSAgICAyMTksIDEyNywgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjIwLCAxMjQsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDI0NSwgCi0gICAgMjAxLCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMjgsIDIwNSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjE2LCAyNDksIAotICAgIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIxNSwgNzQsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIxNiwgMTY0LCAyMTYsIAotICAgIDE0OCwgMjU0LCAyNDUsIDU0LCAyNDQsIDI0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyNDQsIDEyMywgMjE2LCAxNDgsIAotICAgIDI1NCwgMjQ1LCA1NCwgMjE5LCAxMTQsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyMCwgMTE5LCAyMTYsIDE0OCwgMjU0LCAKLSAgICAyNDUsIDU0LCAyNDUsIDE5MywgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjI4LCAyMDEsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgCi0gICAgMjEyLCAxNCwgMjUyLCAxMzYsIDIxNCwgMTczLCAyNTQsIDI0NSwgMjEyLCAxNCwgMjQ0LCAxMDAsIDIxOCwgNjAsIDI1NCwgCi0gICAgMjQ1LCAyMTIsIDE0LCAyMjEsIDE3OCwgMjE4LCA2MCwgMjU0LCAyNDUsIDIxMiwgMTQsIDIxNiwgMTcwLCAyMTgsIDYwLCAKLSAgICAyNTQsIDI0NSwgMjEyLCAxNCwgMjQ0LCAxMiwgMjE4LCA2MCwgMjU0LCAyNDUsIDI0NiwgODksIDIzMSwgOTUsIDI0NCwgCi0gICAgMTAwLCAyMTgsIDYwLCAyNTQsIDI0NSwgMjMyLCAyMDUsIDIzMSwgOTUsIDI0NCwgMTAwLCAyMTgsIDYwLCAyNTQsIDI0NSwgCi0gICAgMjMxLCA5NSwgMjIxLCAxNzgsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyMzEsIDk1LCAyMTYsIDE3MCwgMjE4LCA2MCwgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDIyNCwgMjQsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMTIzLCAyNDIsIDM0LCAyNiwgCi0gICAgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjQ2LCAxMDgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMTkwLCAyNiwgMjU1LCAKLSAgICAxNSwgMjUzLCAyMDIsIDI0NCwgMTIyLCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgODksIDI0MCwgMjE3LCAyNiwgCi0gICAgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgODksIDIxNiwgMTQ4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgMTIzLCAKLSAgICAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIAotICAgIDIxNiwgMjQ5LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgMTIzLCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgCi0gICAgMjUzLCAyMDIsIDEyMywgMjQwLCAyMTgsIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgMjQwLCAKLSAgICAyMTgsIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMTIzLCAyMTYsIDE0OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIAotICAgIDI1MywgMjAyLCAyNDQsIDg5LCAyMTYsIDE0OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAKLSAgICAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyMTYsIDI0OSwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIAotICAgIDIwMiwgMjQ0LCAxMjMsIDIxOCwgMTUyLCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjQwLCAyMTgsIDIxOCwgMTUyLCAKLSAgICAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgODksIDI0MCwgMjE4LCAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgCi0gICAgMjAyLCAxMjMsIDIxNiwgMTQ5LCAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyMTYsIDI0OSwgMjE2LCAxNDksIAotICAgIDIxOCwgMTUyLCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgMTIzLCAyMTYsIDE0OSwgMjE4LCAxNTIsIDI2LCAyNTUsIAotICAgIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIzMCwgMTY5LCAyNiwgMjU1LCAxNSwgMjQxLCAyMTIsIDEyMywgMjI1LCAzNCwgCi0gICAgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAxMTEsIDI2LCAyNTUsIDE1LCAyNDEsIDIwOCwgMTExLCAyNiwgMjU1LCAxNSwgMjQ1LCAKLSAgICAxMTIsIDEwNSwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAxMDUsIDI2LCAyNTUsIDE1LCAyNDksIDczLCAxMTMsIDI0NiwgCi0gICAgMTA3LCAyNiwgMjU1LCAxNSwgMjQ1LCAxMTIsIDExMywgMjQ2LCAxMDcsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMTkwLCAKLSAgICAyNiwgMjU1LCAxNSwgMjE1LCAyMDQsIDIxNiwgMjQ4LCAyNiwgMjU1LCAxNSwgMjE1LCAyMDQsIDIxNiwgMjQ5LCAyNTQsIAotICAgIDE0OSwgMTcsIDI2LCAyNTUsIDE1LCAyNDEsIDIwOCwgMjE2LCAyNDgsIDI2LCAyNTUsIDE1LCAyMzEsIDQ2LCAyMTYsIDI0OCwgCi0gICAgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyMTYsIDI0OCwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyMTYsIDE2MywgMjYsIAotICAgIDI1NSwgMTUsIDIxNSwgMjA0LCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyNDQsIDEyMywgMjU0LCAxNDksIAotICAgIDE3LCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDI0NCwgMTIyLCAyNiwgMjU1LCAxNSwgMjE2LCAxODIsIDI0NCwgMTIyLCAyNiwgCi0gICAgMjU1LCAxNSwgMjE2LCAxODIsIDEyMywgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTM0LCAyNDAsIDIxNywgCi0gICAgMjYsIDI1NSwgMTUsIDI0NSwgMTEyLCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyNDQsIDg5LCAKLSAgICAyNDAsIDIxNywgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIDI1NSwgMTUsIDI1MCwgCi0gICAgMjM1LCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIDI1NSwgMTUsIDIyOSwgMTg3LCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIAotICAgIDI1NSwgMTUsIDIxNiwgMTgyLCAxMjMsIDIxNiwgMTQ4LCAyNiwgMjU1LCAxNSwgMjE2LCAxODIsIDI0NCwgODksIDIxNiwgCi0gICAgMTQ4LCAyNiwgMjU1LCAxNSwgMjQ4LCA2NSwgMjQ0LCA4OSwgMjMwLCAxNjksIDI2LCAyNTUsIDE1LCAyMTgsIDEyMCwgMjQ0LCAKLSAgICAxMjMsIDIzMCwgMTY5LCAyNiwgMTIzLCAxNjMsIDUwLCAyNiwgMTIzLCAxNjMsIDUsIDI1NCwgMTQ5LCAxNywgMjYsIDExMywgCi0gICAgMjE2LCAxNjgsIDUwLCAyNiwgMTM0LCAyMjQsIDIzLCA1MCwgMjYsIDIxMSwgNDUsIDUwLCAyNiwgMjE3LCA2OSwgNTAsIDI2LCAKLSAgICAyNDYsIDEwOSwgNTAsIDI2LCAyMjYsIDI1MCwgNTAsIDI2LCAxMTMsIDIyNiwgMjQ5LCA1MCwgMjYsIDEzNCwgMjI2LCAyNDksIAotICAgIDUwLCAyNiwgMjQ0LCAxOSwgMjI2LCAyNDksIDUwLCAyNiwgMjQ0LCA4OSwgMjI2LCAyNDksIDUwLCAyNiwgMjMxLCA0MCwgCi0gICAgNTAsIDI2LCAyMzMsIDE2MywgMjUyLCAxMzYsIDUwLCAyNiwgMjMyLCAyMDAsIDUwLCAyNiwgMjI2LCAxMzUsIDUwLCAyNiwgCi0gICAgMjExLCAxNTksIDUwLCAyNiwgMjUzLCAyNTEsIDUwLCAyNiwgMjU0LCA4LCA1MCwgMjYsIDI0MiwgMTUxLCA1MCwgMjYsIAotICAgIDIxNSwgMTg3LCAyNTIsIDEzNiwgNTAsIDI2LCAyMTAsIDg3LCA1MCwgMjIyLCAyMDAsIDIyMCwgMTE1LCA1MCwgMjIyLCAKLSAgICAyMDAsIDIxNCwgMTg1LCA1MCwgMjIyLCAyMDAsIDIyMCwgMTQ0LCA1MCwgMjIyLCAyMDAsIDIyMCwgMTEzLCA1MCwgMjIyLCAKLSAgICAyMDAsIDI0NywgMjIxLCAyMjAsIDExMywgNTAsIDIyMiwgMjAwLCAyMTksIDE3MCwgNTAsIDIyMiwgMjAwLCAyNDgsIDYxLCAKLSAgICA1MCwgMjIyLCAyMDAsIDIyNCwgOSwgNTAsIDIyMiwgMjAwLCAyMjAsIDEzMSwgNTAsIDIyMiwgMjAwLCAyNDYsIDY4LCA1MCwgCi0gICAgMjIyLCAyMDAsIDI1MywgMjQ2LCA1MCwgMjIyLCAyMDAsIDI1MCwgMTc5LCA1MCwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAKLSAgICAyMjUsIDIxNiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjUsIDI3LCAyNDEsIDI0MiwgMjI1LCAxNDYsIDI0NywgMTk5LCAKLSAgICA1LCAyMTcsIDQ2LCAyNDEsIDI0MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNTAsIDI1NSwgMjI1LCAxNDYsIDI0NywgCi0gICAgMTk5LCA1LCAyNTAsIDEwOSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTEsIDIyMSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAKLSAgICAyNDEsIDIxOCwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNDMsIDkyLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIxNiwgCi0gICAgMTE3LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDc1LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MSwgMTc3LCAyMjUsIAotICAgIDE0NiwgMjQ3LCAxOTksIDUsIDIyMCwgMzEsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQ5LCAyNTIsIDIyNSwgMTQ2LCAKLSAgICAyNDcsIDE5OSwgNSwgMjMxLCAxODksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjMxLCAxNDEsIDIyNSwgMTQ2LCAyNDcsIAotICAgIDE5OSwgNSwgMjIxLCAyMTgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjMyLCAyNDMsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjUxLCAxOTYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUwLCAyMzksIDIyNSwgMzgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjQ3LCAxNDEsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQ5LCAyMzEsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjE5LCAKLSAgICA4OSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNDksIDIzMiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNTIsIDcxLCAyMjUsIAotICAgIDE0NiwgMjQ3LCAxOTksIDUsIDIyMCwgMTgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQwLCAyNTUsIDIyNSwgMTQ2LCAKLSAgICAyNDcsIDE5OSwgNSwgMjQxLCAxODUsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUxLCAxMjAsIDIzMywgNDIsIDIyNSwgCi0gICAgMTQ2LCAyNDcsIDE5OSwgNSwgMjUwLCAyMzIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjIzLCAxNTYsIDIyNSwgMTQ2LCAKLSAgICAyNDcsIDE5OSwgNSwgMjQ1LCAyMzgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQ2LCAxMTUsIDIyNSwgMTQ2LCAyNDcsIAotICAgIDE5OSwgNSwgMjE1LCAxMDYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUyLCA3NCwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAKLSAgICAyMjUsIDM5LCAyMTUsIDIzNiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTMsIDE1OSwgMjI1LCAxNDYsIDI0NywgMTk5LCAKLSAgICA1LCAyMjYsIDIyLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIyMiwgMTkyLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMiwgCi0gICAgMjMwLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIyNiwgMTE5LCAyNTIsIDE5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAKLSAgICAyNDQsIDU2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0MiwgMTQ1LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIxOCwgCi0gICAgMTIxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDQsIDI1MywgMTc2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIxMiwgMzIsIAotICAgIDI1MiwgMTU2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDM4LCAyMjYsIDI1MiwgOTEsIDIzMiwgNjUsIDEsIDYxLCAyMzIsIAotICAgIDY1LCAxLCA3NiwgMjMyLCA2NSwgMSwgMjUzLCAxNjYsIDIzMiwgNjUsIDEsIDI1MiwgMjcsIDIzMiwgNjUsIDEsIDI0MywgCi0gICAgMjA5LCAyMzIsIDY1LCAxLCAyNDksIDY4LCAyMzIsIDY1LCAxLCA3NCwgMjMyLCA2NSwgMSwgMjEyLCA5OCwgMjMyLCA2NSwgCi0gICAgMSwgMjEwLCAxNTksIDIzMiwgNjUsIDEsIDIxNiwgMjExLCAyMzIsIDY1LCAxLCAyMzUsIDE1MCwgMjMyLCA2NSwgMSwgMjM1LCAKLSAgICAyOSwgMjMyLCA2NSwgMSwgMjI0LCA5OSwgMjMyLCA2NSwgMSwgMTU2LCAyMzIsIDY1LCAxLCAxOTQsIDIzMiwgNjUsIDEsIAotICAgIDIzMCwgMzAsIDIzMiwgNjUsIDEsIDIzMCwgMTcxLCAyMzIsIDY1LCAxLCAyMjgsIDExNiwgMjMyLCA2NSwgMSwgNjksIDIzMiwgCi0gICAgNjUsIDEsIDIyNiwgMTA5LCAyMzIsIDY1LCAxLCAyMzQsIDUzLCAyMzIsIDY1LCAxLCAxNTMsIDIzMiwgNjUsIDEsIDIyMiwgCi0gICAgOTMsIDIzMiwgNjUsIDEsIDIxNywgMTUzLCAyMzIsIDY1LCAxLCAyMTUsIDE2MCwgMjMyLCA2NSwgMSwgMjU0LCAxMzEsIAotICAgIDIzMiwgNjUsIDEsIDI0NSwgMTU4LCAyMzIsIDY1LCAxLCAyNDIsIDY3LCAyMzIsIDY1LCAxLCAyMTEsIDE3OCwgMjUwLCAKLSAgICAyNDUsIDEsIDYxLCAyNTAsIDI0NSwgMSwgMjI2LCA5NSwgMjUwLCAyNDUsIDEsIDI0OSwgNjgsIDI1MCwgMjQ1LCAxLCAxNTYsIAotICAgIDI1MCwgMjQ1LCAxLCAyMTQsIDExNiwgMjUwLCAyNDUsIDEsIDE1MywgMjUwLCAyNDUsIDEsIDIzMywgNjgsIDI1MCwgMjQ1LCAKLSAgICAxLCAyNTUsIDg0LCAyNTAsIDI0NSwgMSwgMjI0LCA5OSwgMjUwLCAyNDUsIDEsIDI1MywgMTY2LCAyNTAsIDI0NSwgMSwgCi0gICAgMTk0LCAyNTAsIDI0NSwgMSwgNzgsIDI1MCwgMjQ1LCAxLCAyNDgsIDIzMSwgMjUwLCAyNDUsIDEsIDIxNywgMTUzLCAyNTAsIAotICAgIDI0NSwgMSwgMjIwLCAxMDYsIDI1MCwgMjQ1LCAxLCAyMjAsIDEwNSwgMjUwLCAyNDUsIDEsIDIyMiwgOTMsIDI1MCwgMjQ1LCAKLSAgICAxLCAyNTEsIDczLCAyNTAsIDI0NSwgMSwgNjksIDI1MCwgMjQ1LCAxLCAyMjgsIDExNiwgMjUwLCAyNDUsIDEsIDIxMSwgCi0gICAgMTc4LCAyNTAsIDI0NSwgMSwgMjMwLCAzMCwgMjUwLCAyNDUsIDEsIDIxNSwgMTU5LCAyNTAsIDI0NSwgMSwgMjI2LCAxMDksIAotICAgIDI1MCwgMjQ1LCAxLCAyMTgsIDIyOCwgMjUwLCAyNDUsIDEsIDc0LCAyNTAsIDI0NSwgMSwgNzYsIDI1MCwgMjQ1LCAxLCAKLSAgICAyMTQsIDExMywgMjUwLCAyNDUsIDEsIDIzNSwgMjksIDI1MCwgMjQ1LCAxLCAyMzUsIDIwLCAyNTAsIDI0NSwgMSwgMjI5LCAKLSAgICAxNTUsIDI1MCwgMjQ1LCAxLCAyMTQsIDExOCwgMjUwLCAyNDUsIDEsIDI0MywgMjA5LCAyNTAsIDI0NSwgMSwgMjQzLCAxNDQsIAotICAgIDI1MCwgMjQ1LCAxLCAyMTgsIDE3MCwgMjUwLCAyNDUsIDEsIDIxOCwgMTY5LCAyNTAsIDI0NSwgMSwgMjI5LCA4NCwgMjUwLCAKLSAgICAyNDUsIDEsIDIzNiwgNDAsIDI1MCwgMjQ1LCAxLCAyNTEsIDcyLCAyNTAsIDI0NSwgMSwgMjE1LCAxNjAsIDI1MCwgMjQ1LCAKLSAgICAxLCAyMTQsIDExNSwgMjUwLCAyNDUsIDEsIDIyMiwgMTgyLCAyNTAsIDI0NSwgMSwgMjMxLCAxMzQsIDI1MCwgMjQ1LCAxLCAKLSAgICAyMzEsIDEzMywgMjUwLCAyNDUsIDEsIDIzMSwgMTMyLCAyNTAsIDI0NSwgMSwgMjMxLCAxMzEsIDI1MCwgMjQ1LCAxLCAyMzMsIAotICAgIDY3LCAyNTAsIDI0NSwgMSwgMjQ1LCAyNDIsIDI1MCwgMjQ1LCAxLCAyMTQsIDExNCwgNTUsIDMyLCAxLCA2MSwgNTUsIDMyLCAKLSAgICAxLCAyNTIsIDgzLCA1NSwgMzIsIDEsIDIzNCwgMTg4LCA1NSwgMzIsIDEsIDI0OCwgOTgsIDU1LCAzMiwgMSwgNzYsIDU1LCAKLSAgICAzMiwgMSwgMjEzLCAyNTUsIDU1LCAzMiwgMSwgMjEwLCA5NCwgNTUsIDMyLCAxLCAyNDEsIDI0NSwgNTUsIDMyLCAxLCAyMTYsIAotICAgIDE5NiwgNTUsIDMyLCAxLCA3NCwgNTUsIDMyLCAxLCAxNzYsIDU1LCAzMiwgMSwgMjQ1LCAxODIsIDU1LCAzMiwgMSwgMjQ1LCAKLSAgICAxNjcsIDU1LCAzMiwgMSwgMjQ1LCAxNTgsIDU1LCAzMiwgMSwgMjQ1LCA4MywgNTUsIDMyLCAxLCA3OCwgNTUsIDMyLCAxLCAKLSAgICAyMjUsIDIyNCwgNTUsIDMyLCAxLCAyMjAsIDY1LCA1NSwgMzIsIDEsIDIzMywgMjIzLCA1NSwgMzIsIDEsIDI0NSwgMTAwLCAKLSAgICA1NSwgMzIsIDEsIDI0NSwgOTAsIDU1LCAzMiwgMSwgMjE3LCAyMywgNTUsIDMyLCAxLCA2OSwgNTUsIDMyLCAxLCAyNDUsIAotICAgIDE4NSwgNTUsIDMyLCAxLCAyMjUsIDEzOSwgNTUsIDMyLCAxLCAyMzQsIDEyNSwgNTUsIDMyLCAxLCAyNDUsIDIxMCwgNTUsIAotICAgIDMyLCAxLCAyNDUsIDkyLCA1NSwgMzIsIDEsIDI1MCwgMTM5LCA1NSwgMzIsIDEsIDIzNiwgNDAsIDU1LCAzMiwgMSwgMjE0LCAKLSAgICAxMTgsIDU1LCAzMiwgMjI3LCAyMDIsIDExMSwgNTUsIDMyLCAyMjcsIDIwMiwgMTkwLCA1NSwgMzIsIDIyNywgMjAyLCAyMTYsIAotICAgIDI0OCwgNTUsIDMyLCAyMjcsIDIwMiwgMjQ0LCAxMjIsIDI0MiwgMTYwLCAxLCAyNTQsIDIxMywgMjQyLCAxNjAsIDEsIDI1MiwgCi0gICAgMTcxLCAyNDIsIDE2MCwgMSwgMjQyLCAyMTgsIDI0MiwgMTYwLCAxLCAyNDgsIDIxMiwgMjQyLCAxNjAsIDEsIDI1NCwgMjA5LCAKLSAgICAyNDIsIDE2MCwgMSwgMjI0LCA4MiwgMjQyLCAxNjAsIDEsIDIzNSwgMTYxLCAyNDIsIDE2MCwgMSwgMjQyLCA0NiwgMjQyLCAKLSAgICAxNjAsIDEsIDIxNiwgMTU5LCAyNDIsIDE2MCwgMSwgMjQ1LCAxOTEsIDI0MiwgMTYwLCAxLCAyMzMsIDE5NiwgMjQyLCAxNjAsIAotICAgIDEsIDIzMywgMTE5LCAyNDIsIDE2MCwgMSwgMjMxLCAxODQsIDI0MiwgMTYwLCAxLCAyMjksIDE4OSwgMjQyLCAxNjAsIDEsIAotICAgIDIzNSwgMTI1LCAyNDIsIDE2MCwgMSwgMjE0LCAxMzYsIDI0MiwgMTYwLCAxLCAyMjYsIDczLCAyNDIsIDE2MCwgMSwgMjI4LCAKLSAgICAyMDAsIDI0MiwgMTYwLCAxLCAyMjMsIDE2OCwgMjQyLCAxNjAsIDEsIDIyMSwgMjIwLCAyNDIsIDE2MCwgMSwgMjE3LCA1LCAKLSAgICAyNDIsIDE2MCwgMSwgMjExLCAyMzQsIDI0MiwgMTYwLCAxLCAyNDQsIDE4NiwgMjQyLCAxNjAsIDEsIDIzNiwgNDQsIDI0MiwgCi0gICAgMTYwLCAxLCAyNDAsIDIwNiwgMjQyLCAxNjAsIDEsIDIyNiwgMTQzLCAyNDIsIDE2MCwgMSwgMjI4LCAyMDUsIDI0MCwgMjE3LCAKLSAgICAyMTQsIDIwOSwgMSwgMjU0LCAxNTUsIDIxNCwgMjA5LCAxLCAyNTIsIDM0LCAyMTQsIDIwOSwgMSwgMjQzLCAxMTUsIDIxNCwgCi0gICAgMjA5LCAxLCAyMzQsIDEzOCwgMjE0LCAyMDksIDEsIDI0OCwgNjIsIDIxNCwgMjA5LCAxLCAyNDEsIDc1LCAyMTQsIDIwOSwgCi0gICAgMSwgMjExLCAyMjcsIDIxNCwgMjA5LCAxLCAyMTAsIDg1LCAyMTQsIDIwOSwgMSwgMjQwLCAyNDgsIDIxNCwgMjA5LCAxLCAKLSAgICAyMTYsIDIzMSwgMjE0LCAyMDksIDEsIDIxMCwgMjMzLCAyMTQsIDIwOSwgMSwgMjM1LCAwLCAyMTQsIDIwOSwgMSwgMjIwLCAKLSAgICAyMiwgMjE0LCAyMDksIDEsIDIzMywgMTA0LCAyMTQsIDIwOSwgMSwgMjMxLCA3MCwgMjE0LCAyMDksIDEsIDI0OCwgMjksIAotICAgIDIxNCwgMjA5LCAxLCAyMjcsIDE5OCwgMjE0LCAyMDksIDEsIDIxMCwgMTMsIDIxNCwgMjA5LCAxLCAyMjEsIDI1MCwgMjE0LCAKLSAgICAyMDksIDEsIDI1NCwgMjA1LCAyMTQsIDIwOSwgMSwgMjI0LCAxNTMsIDIxNCwgMjA5LCAxLCAyMjIsIDI3LCAyMTQsIDIwOSwgCi0gICAgMSwgMjI0LCAzOCwgMjE0LCAyMDksIDEsIDIyMywgMTQ3LCAyMTQsIDIwOSwgMSwgMjE2LCAyMDAsIDIxNCwgMjA5LCAxLCAKLSAgICAyNDIsIDI1MSwgMjE0LCAyMDksIDEsIDExMiwgMjE0LCAyMDksIDEsIDc0LCAyMTQsIDIwOSwgMSwgNjksIDIxNCwgMjA5LCAKLSAgICAxLCAyMTgsIDE4MSwgMjE0LCAyMDksIDIxMSwgMjA5LCAyNDcsIDE4MCwgNTUsIDIyNSwgMTcyLCA1LCA2MSwgNTUsIDIyNSwgCi0gICAgMTcyLCA1LCA3NCwgNTUsIDIyNSwgMTcyLCA1LCA2OSwgNTUsIDIyNSwgMTcyLCA1LCAxNzYsIDU1LCAyMjUsIDE3MiwgNSwgCi0gICAgMjMzLCAyMjMsIDU1LCAyMjUsIDE3MiwgNSwgMjQzLCAxNDIsIDU1LCAyMjUsIDE3MiwgNSwgMjQyLCAxMjAsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgMjExLCAxNjUsIDU1LCAyMjUsIDE3MiwgNSwgMjUxLCA0MSwgNTUsIDIyNSwgMTcyLCA1LCAyMzUsIDE0NywgCi0gICAgNTUsIDIyNSwgMTcyLCA1LCAyMzUsIDExNCwgNTUsIDIyNSwgMTcyLCA1LCAyMTcsIDEwNiwgNTUsIDIyNSwgMTcyLCA1LCAKLSAgICAyMTUsIDExOSwgNTUsIDIyNSwgMTcyLCA1LCAyNDgsIDIyOSwgNTUsIDIyNSwgMTcyLCA1LCAyNDgsIDExLCA1NSwgMjI1LCAKLSAgICAxNzIsIDUsIDI0NiwgODYsIDU1LCAyMjUsIDE3MiwgNSwgMjE2LCAyMDksIDU1LCAyMjUsIDE3MiwgNSwgMTkxLCA1NSwgCi0gICAgMjI1LCAxNzIsIDUsIDI1MiwgMTk5LCA1NSwgMjI1LCAxNzIsIDUsIDI0NCwgMjA0LCA1NSwgMjI1LCAxNzIsIDUsIDE5OCwgCi0gICAgNTUsIDIyNSwgMTcyLCA1LCAyMjcsIDI0MiwgNTUsIDIyNSwgMTcyLCA1LCAxODYsIDU1LCAyMjUsIDE3MiwgNSwgMjMwLCAKLSAgICAyMzUsIDU1LCAyMjUsIDE3MiwgNSwgMjMwLCAxMDcsIDU1LCAyMjUsIDE3MiwgNSwgMTkyLCA1NSwgMjI1LCAxNzIsIDUsIAotICAgIDIxNCwgMjcsIDU1LCAyMjUsIDE3MiwgNSwgMjEzLCAxNzYsIDU1LCAyMjUsIDE3MiwgNSwgMjA1LCA1NSwgMjI1LCAxNzIsIAotICAgIDUsIDIyMiwgMTQyLCA1NSwgMjI1LCAxNzIsIDUsIDIzMywgMTQxLCA1NSwgMjI1LCAxNzIsIDUsIDIwNiwgNTUsIDIyNSwgCi0gICAgMTcyLCA1LCAyMTAsIDExNiwgNTUsIDIyNSwgMTcyLCA1LCAyMjAsIDEwNCwgNTUsIDIyNSwgMTcyLCA1LCAyMTgsIDIyNSwgCi0gICAgNTUsIDIyNSwgMTcyLCA1LCAxNjIsIDU1LCAyMjUsIDE3MiwgNSwgMjUzLCAxOTQsIDU1LCAyMjUsIDE3MiwgNSwgMjUzLCAKLSAgICAxOTMsIDU1LCAyMjUsIDE3MiwgNSwgMjUzLCAxOTIsIDU1LCAyMjUsIDE3MiwgNSwgMjExLCAxNDIsIDU1LCAyMjUsIDE3MiwgCi0gICAgNSwgMjQ4LCAyMDgsIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAyMDcsIDU1LCAyMjUsIDE3MiwgNSwgMjUyLCAxNzgsIDU1LCAKLSAgICAyMjUsIDE3MiwgNSwgMjUxLCA5MywgNTUsIDIyNSwgMTcyLCAyMTEsIDIwOSwgMjQ3LCAxODAsIDU1LCAyMjUsIDE3MiwgNTQsIAotICAgIDExMSwgNTUsIDIyNSwgMTcyLCA1NCwgMTA1LCA1NSwgMjI1LCAxNzIsIDU0LCAyMTYsIDI0OCwgNTUsIDIyNSwgMTcyLCA1NCwgCi0gICAgMjE1LCA3MywgNTUsIDIyNSwgMTcyLCA1NCwgMjQwLCAyMTcsIDE4MSwgNiwgMSwgMjAwLCA3NCwgMTgxLCA2LCAxLCAyMDAsIAotICAgIDc2LCAxODEsIDYsIDEsIDIwMCwgNjEsIDE4MSwgNiwgMSwgMjAwLCAyNTQsIDIxOCwgMTgxLCA2LCAxLCAyMDAsIDc4LCAKLSAgICAxODEsIDYsIDEsIDIwMCwgMjI2LCAxODcsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDc0LCAxODEsIDYsIDEsIDIxOSwgMjUzLCAKLSAgICA3NiwgMTgxLCA2LCAxLCAyMTksIDI1MywgNjEsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDI1NCwgMjE4LCAxODEsIDYsIDEsIAotICAgIDIxOSwgMjUzLCA3OCwgMTgxLCA2LCAxLCAyMTksIDI1MywgMjI2LCAxODcsIDE4MSwgNiwgMSwgMjUzLCAxNzUsIDE4MSwgNiwgCi0gICAgMSwgMjI2LCAxMjAsIDE4MSwgNiwgMSwgMjExLCAxOTUsIDE4MSwgNiwgMSwgMjExLCA0NCwgMTgxLCA2LCAxLCAyNDIsIDY3LCAKLSAgICAxODEsIDYsIDEsIDIyNSwgMjE0LCAxODEsIDYsIDEsIDI1MiwgNzQsIDE4MSwgNiwgMSwgMjE3LCAxMiwgMTgxLCA2LCAxLCAKLSAgICAyNDgsIDg1LCAxODEsIDYsIDEsIDI1MCwgMTM2LCAxODEsIDYsIDEsIDIzNSwgMTMwLCAxODEsIDYsIDEsIDIzNCwgMTk1LCAKLSAgICAxODEsIDYsIDEsIDI0MywgOTAsIDE4MSwgNiwgMSwgMjQ1LCAyMTAsIDE4MSwgNiwgMSwgMjEzLCAyNTAsIDE4MSwgNiwgMSwgCi0gICAgMjQ1LCA2NywgMTgxLCA2LCAxLCAyMTYsIDE5NSwgMTgxLCA2LCAxLCAyNDUsIDkwLCAxODEsIDYsIDEsIDIxMCwgOTIsIAotICAgIDE4MSwgNiwgMSwgMjQ1LCA4MywgMTgxLCA2LCAxLCAyMTAsIDczLCAxODEsIDYsIDEsIDI0NSwgMTAwLCAxODEsIDYsIDEsIAotICAgIDI0NSwgMTgyLCAxODEsIDYsIDEsIDI0NSwgMTY3LCAxODEsIDYsIDEsIDI0NSwgMTU4LCAxODEsIDYsIDEsIDI0NSwgMTQ2LCAKLSAgICAxODEsIDYsIDEsIDIyNiwgMjIzLCAxODEsIDYsIDEsIDI0NSwgNDYsIDE4MSwgNCwgMSwgMjAwLCA3NCwgMTgxLCA0LCAxLCAKLSAgICAyMDAsIDc2LCAxODEsIDQsIDEsIDIwMCwgNjEsIDE4MSwgNCwgMSwgMjAwLCAyNTQsIDIxOCwgMTgxLCA0LCAxLCAyMDAsIAotICAgIDc4LCAxODEsIDQsIDEsIDIwMCwgMjI2LCAxODcsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDc0LCAxODEsIDQsIDEsIDIxOSwgCi0gICAgMjUzLCA3NiwgMTgxLCA0LCAxLCAyMTksIDI1MywgNjEsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDI1NCwgMjE4LCAxODEsIDQsIAotICAgIDEsIDIxOSwgMjUzLCA3OCwgMTgxLCA0LCAxLCAyMTksIDI1MywgMjI2LCAxODcsIDE4MSwgNCwgMSwgMjUzLCAxNzUsIDE4MSwgCi0gICAgNCwgMSwgMjI2LCAxMjAsIDE4MSwgNCwgMSwgMjExLCAxOTUsIDE4MSwgNCwgMSwgMjExLCA0NCwgMTgxLCA0LCAxLCAyNDIsIAotICAgIDY3LCAxODEsIDQsIDEsIDIyNSwgMjE0LCAxODEsIDQsIDEsIDI1MiwgNzQsIDE4MSwgNCwgMSwgMjE3LCAxMiwgMTgxLCA0LCAKLSAgICAxLCAyNDgsIDg1LCAxODEsIDQsIDEsIDI1MCwgMTM2LCAxODEsIDQsIDEsIDIzNSwgMTMwLCAxODEsIDQsIDEsIDIzNCwgCi0gICAgMTk1LCAxODEsIDQsIDEsIDI0MywgOTAsIDE4MSwgNCwgMSwgMjQ1LCAyMTAsIDE4MSwgNCwgMSwgMjEzLCAyNTAsIDE4MSwgCi0gICAgNCwgMSwgMjQ1LCA2NywgMTgxLCA0LCAxLCAyMTYsIDE5NSwgMTgxLCA0LCAxLCAyNDUsIDkwLCAxODEsIDQsIDEsIDIxMCwgCi0gICAgOTIsIDE4MSwgNCwgMSwgMjQ1LCA4MywgMTgxLCA0LCAxLCAyMTAsIDczLCAxODEsIDQsIDEsIDI0NSwgMTAwLCAxODEsIDQsIAotICAgIDEsIDI0NSwgMTgyLCAxODEsIDQsIDEsIDI0NSwgMTY3LCAxODEsIDQsIDEsIDI0NSwgMTU4LCAxODEsIDQsIDEsIDI0NSwgCi0gICAgMTQ2LCAxODEsIDQsIDEsIDIyNiwgMjIzLCAxODEsIDQsIDEsIDI0NSwgNDYsIDIyMCwgNzEsIDEsIDIyNSwgMjEyLCAyMjAsIAotICAgIDcxLCAxLCAyMTYsIDYsIDIyMCwgNzEsIDEsIDIzNCwgOTcsIDIyMCwgNzEsIDEsIDI0NCwgMTU1LCAyMjAsIDcxLCAxLCAKLSAgICAyMTYsIDE3MywgMjIwLCA3MSwgMSwgMjE5LCA2MCwgMjIwLCA3MSwgMSwgMjE4LCAxNSwgMjIwLCA3MSwgMSwgMjUwLCA2OSwgCi0gICAgMjIwLCA3MSwgMSwgMjExLCA0NiwgMjIwLCA3MSwgMSwgMjQwLCAyMTYsIDIyMCwgNzEsIDEsIDI1MiwgMTMsIDIyMCwgNzEsIAotICAgIDEsIDI0OCwgOTcsIDIyMCwgNzEsIDEsIDI0MywgMTI4LCAyMjAsIDcxLCAxLCAyMTMsIDEyMywgMjIwLCA3MSwgMSwgMjE2LCAKLSAgICAxNzcsIDIyMCwgNzEsIDEsIDIxMCwgMjEsIDIyMCwgNzEsIDEsIDIzMSwgOTQsIDIyMCwgNzEsIDEsIDIzNSwgNTUsIDIyMCwgCi0gICAgNzEsIDEsIDIxMSwgMjI1LCAyMjAsIDcxLCAxLCAyNDIsIDU1LCAyMjAsIDcxLCAxLCAyMzIsIDE0OCwgMjIwLCA3MSwgMSwgCi0gICAgMjMwLCAxOTQsIDIyMCwgNzEsIDEsIDIzNiwgNDcsIDIyMCwgNzEsIDEsIDI0NSwgMjA5LCAyMjAsIDcxLCAxLCAyNTMsIAotICAgIDIzOSwgMjIwLCA3MSwgMSwgMjU1LCAwLCAyMjAsIDcxLCAxLCAyMjYsIDIwMCwgMjIwLCA3MSwgMSwgMjExLCAyMTIsIDIyMCwgCi0gICAgNzEsIDEsIDIyNiwgMTM0LCAyMjAsIDcxLCAxLCAyNTQsIDIxOCwgMjIwLCA3MSwgMSwgMjIyLCAyMTAsIDIyMCwgNzEsIDEsIAotICAgIDIyNywgMTk4LCAyMjAsIDcxLCAxLCAyNDUsIDIyNSwgMjIwLCA3MSwgMSwgMjU0LCAyMjMsIDIyMCwgNzEsIDEsIDI0MCwgCi0gICAgMTE4LCAyMjAsIDcxLCAxLCAyMTQsIDE2MywgMjIwLCA3MSwgMSwgMjI3LCAyLCAyMjAsIDcxLCAxLCAyMjYsIDE4MCwgMjIwLCAKLSAgICA3MSwgMSwgMjI2LCAyMjIsIDIyMCwgNzEsIDEsIDI1MywgMTc4LCAyMjAsIDcxLCAxLCAyNTQsIDI3LCAyMjAsIDcxLCAxLCAKLSAgICAyMjYsIDE2MiwgMjIwLCA3MSwgMSwgMjU0LCAyMDEsIDIyMCwgNzEsIDEsIDI0NSwgOTQsIDIyMCwgNzEsIDEsIDI1NCwgNSwgCi0gICAgMjIwLCA3MSwgMSwgMjQ1LCAyMzUsIDIyMCwgNzEsIDEsIDI0MCwgMTI1LCAyMjAsIDcxLCAxLCAyMTEsIDEzLCAyMjYsIAotICAgIDE0NSwgMSwgMjU0LCAxNzksIDIyNiwgMTQ1LCAxLCAyNTIsIDE5OSwgMjI2LCAxNDUsIDEsIDIxNywgMTA2LCAyMjYsIDE0NSwgCi0gICAgMSwgMjM1LCAxNDcsIDIyNiwgMTQ1LCAxLCAyMTEsIDE2NSwgMjI2LCAxNDUsIDEsIDIzNCwgMTM4LCAyMjYsIDE0NSwgMSwgCi0gICAgMjQ4LCA4NCwgMjI2LCAxNDUsIDEsIDIwNSwgMjI2LCAxNDUsIDEsIDIwNiwgMjI2LCAxNDUsIDEsIDIyMCwgMjgsIDIyNiwgCi0gICAgMTQ1LCAxLCAyNDgsIDMzLCAyMjYsIDE0NSwgMSwgMjUwLCAyMjMsIDIyNiwgMTQ1LCAxLCAyNDMsIDE0MiwgMjI2LCAxNDUsIAotICAgIDEsIDI0NCwgMjA0LCAyMjYsIDE0NSwgMSwgMjI0LCA4OSwgMjI2LCAxNDUsIDEsIDIzNSwgMTUsIDIyNiwgMTQ1LCAxLCAKLSAgICAyMzMsIDEzNiwgMjI2LCAxNDUsIDEsIDIzMCwgMjA1LCAyMjYsIDE0NSwgMSwgMjI3LCAxODIsIDIyNiwgMTQ1LCAxLCAyMTIsIAotICAgIDMwLCAyMjYsIDE0NSwgMSwgMTYyLCAyMjYsIDE0NSwgMSwgMTkyLCAyMjYsIDE0NSwgMSwgNjEsIDIyNiwgMTQ1LCAxLCA3NiwgCi0gICAgMjI2LCAxNDUsIDEsIDc0LCAyMjYsIDE0NSwgMSwgNzgsIDIyNiwgMTQ1LCAxLCA2OSwgMjI2LCAxNDUsIDEsIDI1NSwgODIsIAotICAgIDIyNiwgMTQ1LCAxLCAyNDUsIDIxNywgMjI2LCAxNDUsIDEsIDIyNiwgMTg3LCAyMjYsIDE0NSwgMjEsIDIxMCwgODYsIDIyNiwgCi0gICAgMTQ1LCAyMSwgMTExLCAyMjYsIDE0NSwgMjEsIDEwNSwgMjI2LCAxNDUsIDIxLCAxNTgsIDIyNiwgMTQ1LCAyMSwgMTYxLCAKLSAgICAyMjYsIDE0NSwgMjEsIDE5MCwgMjI2LCAxNDUsIDIxLCAxOTUsIDIyNiwgMTQ1LCAyMSwgMTk5LCAyMjYsIDE0NSwgMjEsIAotICAgIDE5NiwgMjI2LCAxNDUsIDIxLCAyMDEsIDI0OSwgNzUsIDMsIDYxLCAyNDksIDc1LCAzLCA3NiwgMjQ5LCA3NSwgMywgNzQsIAotICAgIDI0OSwgNzUsIDMsIDc4LCAyNDksIDc1LCAzLCA2OSwgMjQ5LCA3NSwgMywgMjM1LCAxNDcsIDI0OSwgNzUsIDMsIDIzNSwgCi0gICAgNzQsIDI0OSwgNzUsIDMsIDE3NiwgMjQ5LCA3NSwgMywgMjM0LCAxODgsIDI0OSwgNzUsIDMsIDIzNCwgOTgsIDI0OSwgNzUsIAotICAgIDMsIDIzNCwgMzQsIDI0OSwgNzUsIDMsIDIzMywgMjIzLCAyNDksIDc1LCAzLCAyMzMsIDE0MSwgMjQ5LCA3NSwgMywgMjMzLCAKLSAgICA2NCwgMjQ5LCA3NSwgMywgMjMyLCAyNDcsIDI0OSwgNzUsIDMsIDIzMiwgMTYyLCAyNDksIDc1LCAzLCAyMzIsIDEwMywgCi0gICAgMjQ5LCA3NSwgMywgMTg2LCAyNDksIDc1LCAzLCAyMzEsIDk2LCAyNDksIDc1LCAzLCAyMzAsIDIzNSwgMjQ5LCA3NSwgMywgCi0gICAgMjMwLCAxNjYsIDI0OSwgNzUsIDMsIDIzMCwgMTA3LCAyNDksIDc1LCAzLCAxOTgsIDI0OSwgNzUsIDMsIDIyOSwgMTEyLCAKLSAgICAyNDksIDc1LCAzLCAyMjgsIDIzOCwgMjQ5LCA3NSwgMywgMjI4LCA3OSwgMjQ5LCA3NSwgMywgMjI3LCAyNDIsIDI0OSwgNzUsIAotICAgIDMsIDE5MSwgMjQ5LCA3NSwgMywgMjI1LCAyMjQsIDI0OSwgNzUsIDMsIDIyNSwgMTExLCAyNDksIDc1LCAzLCAyMjUsIDE5LCAKLSAgICAyNDksIDc1LCAzLCAyMjQsIDE1MywgMjQ5LCA3NSwgMywgMjA1LCAyNDksIDc1LCAzLCAyMjMsIDEzMSwgMjQ5LCA3NSwgMywgCi0gICAgMjIzLCAzOCwgMjQ5LCA3NSwgMywgMjIyLCAyMTMsIDI0OSwgNzUsIDMsIDIyMiwgMTQyLCAyNDksIDc1LCAzLCAyMDYsIAotICAgIDI0OSwgNzUsIDMsIDIyMSwgMTgzLCAyNDksIDc1LCAzLCAyMTksIDE5MywgMjQ5LCA3NSwgMywgMjE5LCA2MCwgMjQ5LCA3NSwgCi0gICAgMywgMjE4LCA4NCwgMjQ5LCA3NSwgMywgMjE3LCAxMDYsIDI0OSwgNzUsIDMsIDIxNywgMjMsIDI0OSwgNzUsIDMsIDIxNiwgCi0gICAgMTE4LCAyNDksIDc1LCAzLCAxMTIsIDI0OSwgNzUsIDMsIDIxNSwgMTE5LCAyNDksIDc1LCAzLCAyMTIsIDY1LCAyNDksIDc1LCAKLSAgICAzLCAyMTIsIDIyLCAyNDksIDc1LCAzLCAyMTEsIDI1MCwgMjQ5LCA3NSwgMywgMjExLCAyMjcsIDI0OSwgNzUsIDMsIDIxMSwgCi0gICAgMTY1LCAyNDksIDc1LCAzLCAyMTEsIDE2MiwgMjQ5LCA3NSwgMywgMjEwLCAxMTYsIDI0OSwgNzUsIDMsIDIxMCwgMjMsIAotICAgIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjU0LCAxNzcsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjUyLCAzMywgMjM2LCA4LCAyNTQsIAotICAgIDM1LCAxLCAyNDIsIDIwOCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyNDgsIDE5NiwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyNDEsIAotICAgIDI0NSwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMTIsIDMwLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxMCwgOTcsIDIzNiwgOCwgCi0gICAgMjU0LCAzNSwgMSwgMjQxLCAyMDIsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjE2LCAyMjcsIDIzNiwgOCwgMjU0LCAzNSwgMSwgCi0gICAgMjEwLCAyMzIsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjM0LCAyMzEsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjMzLCA5OSwgMjM2LCAKLSAgICA4LCAyNTQsIDM1LCAxLCAyMzEsIDcwLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyNywgMTk4LCAyMzYsIDgsIDI1NCwgMzUsIDEsIAotICAgIDIyMSwgMjUxLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1MywgMTcwLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyNSwgMjI0LCAKLSAgICAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyMiwgMjYsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjI0LCAzNywgMjM2LCA4LCAyNTQsIAotICAgIDM1LCAxLCAyMjMsIDcwLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyMCwgMjIsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjE3LCAzNywgCi0gICAgMjM2LCA4LCAyNTQsIDM1LCAyMjEsIDE3NSwgNTAsIDIzNiwgOCwgMjU0LCAzNSwgNTQsIDExMSwgMjM2LCA4LCAyNTQsIDM1LCAKLSAgICA1NCwgMTA1LCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAxNTgsIDIzNiwgOCwgMjU0LCAzNSwgNTQsIDIxNiwgMjQ4LCAyMzYsIDgsIAotICAgIDI1NCwgMzUsIDU0LCAyMTUsIDczLCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzYsIDgsIDI1NCwgCi0gICAgMzUsIDU0LCAxMjMsIDIxNiwgMTQ4LCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAyMTYsIDI0OSwgMjE2LCAxNDgsIDIyNSwgMTIyLCAKLSAgICAxLCAyNTQsIDE3NCwgMjI1LCAxMjIsIDEsIDI1MiwgMzYsIDIyNSwgMTIyLCAxLCAyNDMsIDExNiwgMjI1LCAxMjIsIDEsIAotICAgIDI0OCwgNjQsIDIyNSwgMTIyLCAxLCAyNDEsIDI0NSwgMjI1LCAxMjIsIDEsIDIxMiwgMzcsIDIyNSwgMTIyLCAxLCAyMTAsIAotICAgIDExMCwgMjI1LCAxMjIsIDEsIDI0MSwgMjA0LCAyMjUsIDEyMiwgMSwgMjE2LCAyMzEsIDIyNSwgMTIyLCAxLCAyMTAsIDIzMywgCi0gICAgMjI1LCAxMjIsIDEsIDIzNSwgMCwgMjI1LCAxMjIsIDEsIDIzMywgMTA1LCAyMjUsIDEyMiwgMSwgMjMxLCA3MCwgMjI1LCAKLSAgICAxMjIsIDEsIDIyNywgMTk4LCAyMjUsIDEyMiwgMSwgMjIwLCAxNDYsIDIyNSwgMTIyLCAxLCAyNTQsIDIwNSwgMjI1LCAxMjIsIAotICAgIDEsIDIyNSwgMjI0LCAyMjUsIDEyMiwgMSwgMjIyLCAyNywgMjI1LCAxMjIsIDEsIDIyNCwgNDIsIDIyNSwgMTIyLCAxLCAKLSAgICAyMjIsIDE5MSwgMjI1LCAxMjIsIDEsIDIyMCwgMjIsIDIyNSwgMTIyLCAxLCAyMTcsIDQyLCAyMjUsIDEyMiwgNTQsIDExMSwgCi0gICAgMjI1LCAxMjIsIDU0LCAyMTYsIDI0OCwgMjI1LCAxMjIsIDU0LCAyMTUsIDczLCAyMjUsIDEyMiwgNTQsIDEyMywgMjQwLCAKLSAgICAyMTcsIDIyNSwgMTIyLCA1NCwgMTA1LCAyMjUsIDEyMiwgNTQsIDE1OCwgMjI1LCAxMjIsIDIxMSwgMjA5LCAyMjAsIDEzOSwgCi0gICAgMjMyLCA2NCwgMSwgNjEsIDIzMiwgNjQsIDEsIDI1MywgMTY2LCAyMzIsIDY0LCAxLCAyNDMsIDIwOSwgMjMyLCA2NCwgMSwgCi0gICAgMjQ5LCA2OCwgMjMyLCA2NCwgMSwgNzYsIDIzMiwgNjQsIDEsIDIxNCwgMTA1LCAyMzIsIDY0LCAxLCA3NCwgMjMyLCA2NCwgCi0gICAgMSwgMjExLCAxMTcsIDIzMiwgNjQsIDEsIDIzNSwgMjksIDIzMiwgNjQsIDEsIDE1NiwgMjMyLCA2NCwgMSwgMTk0LCAyMzIsIAotICAgIDY0LCAxLCAyMzAsIDMwLCAyMzIsIDY0LCAxLCA3OCwgMjMyLCA2NCwgMSwgMTUzLCAyMzIsIDY0LCAxLCAyMTgsIDIyOCwgCi0gICAgMjMyLCA2NCwgMSwgMjE3LCAxNTMsIDIzMiwgNjQsIDEsIDY5LCAyMzIsIDY0LCAxLCAyNDUsIDE0LCAyMzIsIDY0LCAxLCAKLSAgICAyMjQsIDk5LCAyMzIsIDY0LCAxLCAyMjIsIDkzLCAyMzIsIDY0LCAxLCAyMTUsIDE2MCwgMjMyLCA2NCwgMSwgMjU0LCAxMzEsIAotICAgIDIzMiwgNjQsIDEsIDI0NSwgMTU4LCAyMzIsIDY0LCAxLCAyMzIsIDY3LCAyMzIsIDY0LCAxLCAyMjgsIDExNiwgMjMyLCA2NCwgCi0gICAgMSwgMjUxLCA3NCwgMjMyLCA2NCwgMjE1LCAyMjMsIDc5LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgNjEsIDIzMSwgNTMsIAotICAgIDI0MSwgMTgxLCAxLCA3NiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDc0LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgNzgsIDIzMSwgCi0gICAgNTMsIDI0MSwgMTgxLCAxLCAxOTIsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMTIsIDY1LCAyMzEsIDUzLCAyNDEsIDE4MSwgCi0gICAgMSwgMjUyLCAxOTksIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyNTIsIDE5OCwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDE5MSwgCi0gICAgMjMxLCA1MywgMjQxLCAxODEsIDEsIDE4NiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDE5OCwgMjMxLCA1MywgMjQxLCAxODEsIAotICAgIDEsIDIyOSwgMjMzLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjI5LCAxMTIsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjksIAotICAgIDExMSwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIwNSwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyMywgMTkwLCAyMzEsIDUzLCAKLSAgICAyNDEsIDE4MSwgMSwgMjMzLCAxNDEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMzQsIDEzOCwgMjMxLCA1MywgMjQxLCAxODEsIAotICAgIDEsIDI0MSwgMTk2LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjA2LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjIyLCAzNSwgCi0gICAgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyMSwgMTgzLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMTc2LCAyMzEsIDUzLCAyNDEsIAotICAgIDE4MSwgMSwgMjI0LCA5MSwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIxNywgMTA2LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgCi0gICAgMjE3LCAxMDUsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMTcsIDIzLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjE3LCAyMiwgCi0gICAgMjMxLCA1MywgMjQxLCAxODEsIDEsIDExMiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDI0OCwgMjI5LCAyMzEsIDUzLCAyNDEsIAotICAgIDE4MSwgMTYsIDIxMywgMTcwLCAyMzEsIDUzLCAyNDEsIDE4MSwgMTYsIDIxMywgMTY5LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgCi0gICAgNjEsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCA3NiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDc0LCAyMzEsIDUzLCAyNDksIAotICAgIDEwMiwgMSwgNzgsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAxOTIsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMTIsIDY1LCAKLSAgICAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjUyLCAxOTksIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAxOTEsIDIzMSwgNTMsIDI0OSwgCi0gICAgMTAyLCAxLCAxODYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAxOTgsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMjksIDExMiwgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIwNSwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIzMywgMTQxLCAyMzEsIDUzLCAyNDksIAotICAgIDEwMiwgMSwgMjM0LCAxMzgsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNDEsIDE5NiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIAotICAgIDIwNiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDI1NCwgMzEsIDIwNiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIyMSwgMTgzLCAKLSAgICAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTc2LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjI0LCA5MSwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDIxNywgMTA2LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjE3LCAyMywgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIAotICAgIDExMiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDI0OCwgMjI5LCAyMzEsIDUzLCAyNDksIDEwMiwgMjMyLCAxNTEsIDIyMiwgCi0gICAgMjE5LCAyMzEsIDUzLCAyNDksIDEwMiwgMjMyLCAxNTEsIDIzNiwgMTMsIDIzNCwgMTI2LCAxLCA2MSwgMjM0LCAxMjYsIDI1LCAKLSAgICA1LCA3NCwgMjM0LCAxMjYsIDI1LCA1LCA2OSwgMjM0LCAxMjYsIDI1LCA1LCAxNDksIDE1MywgMjM0LCAxMjYsIDI1LCA1LCAKLSAgICA3NiwgMjM0LCAxMjYsIDI1LCA1LCA3OCwgMjM0LCAxMjYsIDI1LCAyMzMsIDI5LCA3OSwgMjM0LCAxMjYsIDUsIDUyLCAyMjIsIAotICAgIDIzNywgNTEsIDIzNCwgMTI2LCA1LCAyNTQsIDgzLCAyMzQsIDEyNiwgNSwgMjEzLCAxNDcsIDIzNCwgMTI2LCAxLCAxNzYsIAotICAgIDIzNCwgMTI2LCAxLCAyMzQsIDEzOCwgMjM0LCAxMjYsIDEsIDI0MywgMTQyLCAyMzQsIDEyNiwgMSwgMjQzLCAwLCAyMzQsIAotICAgIDEyNiwgMSwgMjUxLCA0MSwgMjM0LCAxMjYsIDEsIDI1MCwgMTY1LCAyMzQsIDEyNiwgMSwgMjM1LCAxNDcsIDIzNCwgMTI2LCAKLSAgICAxLCAyMjcsIDE2OSwgMjM0LCAxMjYsIDEsIDIxNSwgMTU3LCAyMzQsIDEyNiwgMSwgMjE1LCAxNDUsIDIzNCwgMTI2LCAxLCAKLSAgICAyNDgsIDE0MywgMjM0LCAxMjYsIDEsIDI0OCwgMTI3LCAyMzQsIDEyNiwgMSwgMjI4LCAxMTUsIDIzNCwgMTI2LCAxLCAyMTcsIAotICAgIDEwNiwgMjM0LCAxMjYsIDEsIDIxNiwgMjA5LCAyMzQsIDEyNiwgMSwgMjQ4LCAyMjksIDIzNCwgMTI2LCAxLCAyNDgsIDMzLCAKLSAgICAyMzQsIDEyNiwgMSwgMTk4LCAyMzQsIDEyNiwgMSwgMTkxLCAyMzQsIDEyNiwgMSwgMjI1LCAxNTAsIDIzNCwgMTI2LCAxLCAKLSAgICAyNTIsIDE5OSwgMjM0LCAxMjYsIDEsIDI1MiwgMjYsIDIzNCwgMTI2LCAxLCAxODYsIDIzNCwgMTI2LCAxLCAxOTIsIDIzNCwgCi0gICAgMTI2LCAxLCAyMDUsIDIzNCwgMTI2LCAxLCAyMzMsIDE0MSwgMjM0LCAxMjYsIDEsIDIxNCwgMjcsIDIzNCwgMTI2LCAxLCAKLSAgICAyMjAsIDEwNCwgMjM0LCAxMjYsIDEsIDIxOCwgMjI1LCAyMzQsIDEyNiwgMSwgMjA2LCAyMzQsIDEyNiwgMSwgMjEwLCAxMTYsIAotICAgIDIzNCwgMTI2LCAxLCAxNjIsIDIzNCwgMTI2LCAxLCAyMzQsIDUyLCAyMzQsIDEyNiwgMSwgMjE1LCAxMjUsIDIzNCwgMTI2LCAKLSAgICA1LCAyNTIsIDE0OSwgNDgsIDIzNCwgMTI2LCA1LCAyNTAsIDIyOSwgMjM0LCAxMjYsIDUsIDU5LCA1MSwgMjM0LCAxMjYsIAotICAgIDIxMywgMTUyLCAyMzQsIDEyNiwgMjEsIDExMSwgMjM0LCAxMjYsIDIxLCAxMDUsIDIzNCwgMTI2LCAyMSwgMTU4LCAyMzQsIAotICAgIDEyNiwgMjEsIDE2MSwgMjM0LCAxMjYsIDU0LCAyMTYsIDI0OCwgMjM0LCAxMjYsIDU0LCAyMTUsIDczLCAyMzQsIDEyNiwgCi0gICAgNTQsIDEyMywgMjQwLCAyMTcsIDIzNCwgMTI2LCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM0LCAxMjYsIDIyNCwgMTQ0LCAyNDcsIAotICAgIDEyOCwgMjM0LCAxMjYsIDIyNCwgMTQ0LCA0LCAyNTAsIDQzLCAyMzQsIDEyNiwgMjI0LCAxNDQsIDI1MCwgNDMsIDIzNCwgCi0gICAgMTI2LCAyMjQsIDE0NCwgMjQ5LCAxNDUsIDEzMCwgMjM0LCAxMjYsIDIyNCwgMTQ0LCAyMzEsIDE4NSwgMjM0LCAxMjYsIAotICAgIDIyNCwgMTQ0LCAyMzIsIDEyMSwgMjM0LCAxMjYsIDIyNCwgMTQ0LCAyNDgsIDE4NiwgMjM0LCAxMjYsIDIyNCwgMTQ0LCA1MiwgCi0gICAgMjQ4LCAxODYsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjMyLCAyMTMsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDEsIAotICAgIDI0NSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIzMywgOTksIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDEsIDIwMiwgCi0gICAgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIzMSwgNzAsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjQsIDM3LCA1NSwgCi0gICAgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjEyLCAzMCwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIyMCwgMjIsIDU1LCAyMTksIAotICAgIDMwLCAyNTQsIDQ2LCAxLCAyMjMsIDcwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjUyLCAzMywgNTUsIDIxOSwgMzAsIAotICAgIDI1NCwgNDYsIDEsIDIxNywgMzcsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjEsIDIyOCwgNTUsIDIxOSwgMzAsIDI1NCwgCi0gICAgNDYsIDEsIDIzNCwgMjMxLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjI3LCAxOTgsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAKLSAgICAxLCAyMzQsIDEyMiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIyMiwgMjYsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAKLSAgICAyMjEsIDI1MSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI0NCwgMTYyLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgCi0gICAgMjU0LCAxNzksIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNTMsIDE2OSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIAotICAgIDI0OCwgMzAsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDIsIDIwOCwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI0OCwgCi0gICAgMTk2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQyLCAyNDUsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTYsIAotICAgIDIyNywgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMCwgOTYsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDgsIDI3LCAKLSAgICA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjEwLCAyMzIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTYsIDE5OCwgNTUsIAotICAgIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxNiwgMTc5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgNTQsIDExMSwgNTUsIDIxOSwgCi0gICAgMzAsIDI1NCwgNDYsIDU0LCAyNDQsIDEyMiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEzMiwgMjM1LCAyNDUsIDI1MywgMTgwLCAKLSAgICAxLCA2MSwgMjUzLCAxODAsIDEsIDI1NSwgODIsIDI1MywgMTgwLCAxLCAyNTQsIDgxLCAyNTMsIDE4MCwgMSwgMjU1LCA0MSwgCi0gICAgMjUzLCAxODAsIDEsIDI1NCwgMTMxLCAyNTMsIDE4MCwgMSwgMjU1LCA0MiwgMjUzLCAxODAsIDEsIDI1NCwgMjUyLCAyNTMsIAotICAgIDE4MCwgMSwgMjU0LCAyNDgsIDI1MywgMTgwLCAxLCA3NiwgMjUzLCAxODAsIDEsIDI0NSwgMjE3LCAyNTMsIDE4MCwgMSwgCi0gICAgNzgsIDI1MywgMTgwLCAxLCAyMjYsIDE4NywgMjUzLCAxODAsIDEsIDc0LCAyNTMsIDE4MCwgMSwgMjM2LCA0MCwgMjUzLCAKLSAgICAxODAsIDEsIDY5LCAyNTMsIDE4MCwgMSwgMjE0LCAxMTgsIDI1MywgMTgwLCAxLCAyMzQsIDE4OCwgMjUzLCAxODAsIDEsIAotICAgIDIxMSwgMTYyLCAyNTMsIDE4MCwgMSwgMjExLCAxMjgsIDI1MywgMTgwLCAxLCAyMTEsIDEzNywgMjUzLCAxODAsIDEsIDI0MywgCi0gICAgNjksIDI1MywgMTgwLCAxLCAyNDMsIDMxLCAyNTMsIDE4MCwgMSwgMjQyLCAyNDMsIDI1MywgMTgwLCAxLCAyNTAsIDE5OCwgCi0gICAgMjUzLCAxODAsIDEsIDIzNSwgMTMyLCAyNTMsIDE4MCwgMSwgMjE3LCAyMywgMjUzLCAxODAsIDEsIDIxNiwgMTk2LCAyNTMsIAotICAgIDE4MCwgMSwgMjQ4LCA5OCwgMjUzLCAxODAsIDEsIDI0OCwgMjUsIDI1MywgMTgwLCAxLCAyMTUsIDE1MiwgMjUzLCAxODAsIAotICAgIDEsIDIyNSwgMjI0LCAyNTMsIDE4MCwgMSwgMjQ0LCAxNjIsIDI1MywgMTgwLCAxLCAyNTIsIDgzLCAyNTMsIDE4MCwgMSwgCi0gICAgMjUyLCAyMiwgMjUzLCAxODAsIDEsIDIyOSwgNjksIDI1MywgMTgwLCAxLCAyMjgsIDI0NCwgMjUzLCAxODAsIDEsIDIyOCwgCi0gICAgMjQ1LCAyNTMsIDE4MCwgMSwgMjI5LCAxMTIsIDI1MywgMTgwLCAxLCAyMjcsIDE2MCwgMjUzLCAxODAsIDEsIDIyOCwgMTEwLCAKLSAgICAyNTMsIDE4MCwgMSwgMjMxLCA5NiwgMjUzLCAxODAsIDEsIDI0MSwgMTIzLCAyNTMsIDE4MCwgMSwgMjEwLCAxNjYsIDI1MywgCi0gICAgMTgwLCAxLCAyMTEsIDQ3LCAyNTMsIDE4MCwgMSwgMjEzLCAyNTUsIDI1MywgMTgwLCAxLCAyMjMsIDEzMSwgMjUzLCAxODAsIAotICAgIDEsIDIzMywgNjQsIDI1MywgMTgwLCAxLCAyMjEsIDE4MywgMjUzLCAxODAsIDEsIDIxMCwgOTQsIDI1MywgMTgwLCAxLCAKLSAgICAyMjAsIDY1LCAyNTMsIDE4MCwgMSwgMjEwLCA3NCwgMjUzLCAxODAsIDEsIDIxOSwgMjAwLCAyNTMsIDE4MCwgMSwgMjE4LCAKLSAgICAxOTUsIDI1MywgMTgwLCAxLCAyNDEsIDI0NSwgMjUzLCAxODAsIDI1NSwgMzAsIDc5LCAyMTYsIDgwLCAxMTMsIDE3MCwgCi0gICAgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgNCwgMTEzLCAxNzAsIDExNSwgMTIzLCA1OSwgMjI0LCAxNDMsIDIzMywgOTEsIAotICAgIDExMywgMTcwLCAxMTUsIDEyMywgNTksIDIyNCwgMTQzLCAyMzMsIDkxLCAxMjMsIDU5LCAxMTUsIDExMywgMTcwLCAyMjQsIAotICAgIDE0MywgMjMzLCA5MSwgMTEzLCAyMjIsIDIzNSwgMTE1LCAxMjMsIDIyMiwgMjM3LCAyMjQsIDE0MywgMjMzLCA5MSwgMTIzLCAKLSAgICAyMjIsIDIzNywgMTE1LCAxMTMsIDIyMiwgMjM1LCAyMjQsIDE0MywgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjU0LCAxNzcsIAotICAgIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI1MiwgMzMsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI0MiwgMjA4LCAyMzUsIDIyNSwgCi0gICAgMjI2LCAyLCAxLCAyNDgsIDE5NiwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjQxLCAyNDUsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIAotICAgIDIxMiwgMzAsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxMCwgOTcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI0MSwgMjAyLCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMTYsIDIyNywgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjEwLCAyMzIsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDIsIDEsIDIzNCwgMjMxLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMzMsIDk5LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAKLSAgICAyMzEsIDcwLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMjcsIDE5OCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjIxLCAyNTEsIAotICAgIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI1MywgMTcwLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMjUsIDIyNCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgMSwgMjIyLCAyNiwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI0LCAzNywgMjM1LCAyMjUsIDIyNiwgMiwgMSwgCi0gICAgMjIzLCA3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjIwLCAyMiwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjE3LCAzNywgMjM1LCAKLSAgICAyMjUsIDIyNiwgMiwgNTQsIDExMSwgMjM1LCAyMjUsIDIyNiwgMiwgNTQsIDEwNSwgMjM1LCAyMjUsIDIyNiwgMiwgNTQsIAotICAgIDE1OCwgMjM1LCAyMjUsIDIyNiwgMiwgNTQsIDE2MSwgMjM1LCAyMjUsIDIyNiwgMiwgNTQsIDIxNiwgMjQ4LCAyMzUsIDIyNSwgCi0gICAgMjI2LCAyLCA1NCwgMjE1LCA3MywgMjM1LCAyMjUsIDIyNiwgMiwgNTQsIDEyMywgMjQwLCAyMTcsIDIzNSwgMjI1LCAyMjYsIAotICAgIDIsIDU0LCAxMjMsIDIxNiwgMTQ4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjU0LCAxNzcsIDIzNSwgMjI1LCAyMjYsIDc2LCAKLSAgICAxLCAyNTIsIDMzLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQyLCAyMDgsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyNDgsIAotICAgIDE5NiwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI0MSwgMjQ1LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjEyLCAyOSwgMjM1LCAKLSAgICAyMjUsIDIyNiwgNzYsIDEsIDIxMCwgOTcsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyNDEsIDIwMiwgMjM1LCAyMjUsIDIyNiwgCi0gICAgNzYsIDEsIDIxNiwgMjI3LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjEwLCAyMzIsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAKLSAgICAyMzQsIDIzMSwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIzMywgOTksIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyMzEsIDY5LCAKLSAgICAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjI3LCAxOTgsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyMjEsIDI1MSwgMjM1LCAyMjUsIAotICAgIDIyNiwgNzYsIDEsIDIyNSwgMjI0LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjIyLCAyNiwgMjM1LCAyMjUsIDIyNiwgNzYsIAotICAgIDEsIDIyMCwgMjIsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyMTcsIDM3LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDExMSwgCi0gICAgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMDUsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMTU4LCAyMzUsIDIyNSwgMjI2LCAKLSAgICA3NiwgNTQsIDE2MSwgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAyMTYsIDI0OCwgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAyMTUsIAotICAgIDczLCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDEyMywgMjQwLCAyMTcsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMTIzLCAKLSAgICAyMTYsIDE0OCwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDYxLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCA2MSwgNTUsIDIwMiwgMSwgCi0gICAgMjExLCAzNywgMjU0LCAyNTIsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCA3NCwgNTUsIDIwMiwgMSwgMjExLCAzNywgNzQsIDU1LCAKLSAgICAyMDIsIDEsIDIxMSwgMzcsIDc2LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgNzgsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyMjYsIAotICAgIDIzOCwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjI2LCAyMzgsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTUsIDM0LCA1NSwgCi0gICAgMjAyLCAxLCAyMTEsIDM3LCAyNTUsIDM0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyNTEsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI1NCwgMjUxLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMjUsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIAotICAgIDI1NCwgMjI1LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyNDYsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjQ2LCAKLSAgICA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU1LCA4LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNTUsIDgsIDU1LCAyMDIsIDEsIAotICAgIDIyNiwgMTUzLCAyNTQsIDI1MCwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMjAsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIAotICAgIDI0NSwgMjAsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTMsIDE3NSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjUzLCAxNzUsIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDIzMywgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU0LCAyMzMsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNTQsIDI0NCwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU0LCAyNDQsIDU1LCAyMDIsIDEsIDIyNiwgCi0gICAgMTUzLCAyMjYsIDIzNywgNTUsIDIwMiwgMSwgMjExLCAzNywgMjI2LCAyMzcsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIAotICAgIDE4NywgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU0LCAxODcsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDI0MywgNTUsIAotICAgIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMTY5LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxNjcsIDU1LCAyMDIsIDEsIAotICAgIDIyNiwgMTUzLCAyNTQsIDEzMSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjQxLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNTQsIDI0MSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMTM5LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNDUsIDEzOSwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMTU1LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNDUsIDE1NSwgNTUsIDIwMiwgCi0gICAgMSwgMjI2LCAxNTMsIDI0NSwgMTI2LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNDUsIDEyNiwgNTUsIDIwMiwgMSwgMjExLCAKLSAgICAzNywgMjU0LCAxMjMsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE0NiwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU0LCAKLSAgICAyNDAsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDExNiwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIyNiwgMTc5LCA1NSwgCi0gICAgMjAyLCAxLCAyMjYsIDE1MywgMjQwLCAxMjAsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDIyMywgNTUsIDIwMiwgMSwgCi0gICAgMjExLCAzNywgMjQ1LCAyMjMsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDUzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNTQsIDUzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjM1LCAxODgsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIzNSwgMTg4LCAKLSAgICA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAxNjMsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMTYzLCA1NSwgMjAyLCAKLSAgICAxLCAyMjYsIDE1MywgMjU0LCA0OSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU0LCA0OSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIAotICAgIDI1NCwgMjM5LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjUzLCAyNDUsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDIzNywgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1MywgMjM5LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNTMsIDIzOSwgNTUsIDIwMiwgCi0gICAgMSwgMjI2LCAxNTMsIDI0NSwgODMsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI0NSwgODMsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAKLSAgICAyNTMsIDIxNCwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjUzLCAyMTQsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDIzNCwgCi0gICAgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU0LCAyMzQsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyMjYsIDE0NCwgNTUsIDIwMiwgCi0gICAgMSwgMjI2LCAxNTMsIDI1MiwgMTMzLCAyMjIsIDEyOSwgMjEsIDExMSwgMjIyLCAxMjksIDIxLCAxMDUsIDIyMiwgMTI5LCAKLSAgICAyMSwgMTU4LCAyMjIsIDEyOSwgMjEsIDE2MSwgMjIyLCAxMjksIDIxLCAxOTAsIDIyMiwgMTI5LCAyMSwgMTk1LCAyMjIsIAotICAgIDEyOSwgMjEsIDE5OSwgMjIyLCAxMjksIDIxLCAxOTYsIDIyMiwgMTI5LCAyMSwgMjAxLCAyMjIsIDEyOSwgNTQsIDIxNiwgCi0gICAgMjQ4LCAyMjIsIDEyOSwgNTQsIDIxNSwgNzMsIDIyMiwgMTI5LCA1NCwgMjE2LCAxNjMsIDIyMiwgMTI5LCA1NCwgMjQ0LCAKLSAgICAyMywgMjIyLCAxMjksIDU0LCAyNDQsIDEyMiwgMjIyLCAxMjksIDU0LCAyMTksIDExMywgMjIyLCAxMjksIDU0LCAyMjAsIAotICAgIDExOCwgMjIyLCAxMjksIDU0LCAyNDUsIDE5MiwgMjIyLCAxMjksIDU0LCAyMjgsIDIwMCwgMjIyLCAxMjksIDU0LCAxMjMsIAotICAgIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDExMywgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMTM0LCAyNDAsIDIxNywgMjIyLCAKLSAgICAxMjksIDU0LCAyNDQsIDE5LCAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAyNDQsIDg5LCAyNDAsIDIxNywgMjIyLCAxMjksIAotICAgIDU0LCAyMTksIDEyNywgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjIwLCAxMjQsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIAotICAgIDI0NSwgMjAxLCAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAyMjgsIDIwNSwgMjQwLCAyMTcsIDIyMiwgMTI5LCAyNDQsIDEwLCAKLSAgICAxMjMsIDI0MiwgMzQsIDIyMiwgMTI5LCAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIyMiwgMTI5LCAyNDQsIDEwLCAxMjMsIAotICAgIDIxNiwgMTY5LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTEzLCAyMTYsIDE2NywgMTE4LCA1LCAyNTEsIDcsIDExOCwgNSwgMjU0LCAKLSAgICA4MywgMTE4LCA1LCAyMTMsIDE0NywgMTE4LCA1LCAyMzUsIDEwOCwgMTE4LCA1LCAyMTQsIDE2MSwgMTE4LCAxLCA2MSwgCi0gICAgMTE4LCAxLCAyNTUsIDgyLCAxMTgsIDEsIDc0LCAxMTgsIDEsIDIzNiwgNDAsIDExOCwgMSwgNjksIDExOCwgMSwgMjE0LCAKLSAgICAxMTgsIDExOCwgMSwgMTQ5LCAxNTMsIDExOCwgMSwgMTQ5LCAyMjIsIDE4MiwgMTE4LCAxLCAxNDksIDE1NiwgMTE4LCAxLCAKLSAgICAxNDksIDIzMiwgMTkxLCAxMTgsIDEsIDc2LCAxMTgsIDEsIDI1NCwgMjEwLCAxMTgsIDEsIDc4LCAxMTgsIDEsIDI1MywgCi0gICAgMjAwLCAxMTgsIDEsIDE3NiwgMTE4LCAxLCAyMzQsIDEzOCwgMTE4LCAxLCAyNDMsIDE0MiwgMTE4LCAxLCAyNDMsIDAsIAotICAgIDExOCwgMSwgMjI5LCA4MiwgMTE4LCAxLCAyNTEsIDQxLCAxMTgsIDEsIDI1MCwgMTY1LCAxMTgsIDEsIDIzNSwgMTQ3LCAKLSAgICAxMTgsIDEsIDIzNSwgMTIwLCAxMTgsIDEsIDIyNywgMTY5LCAxMTgsIDEsIDIxNSwgMTU3LCAxMTgsIDEsIDIxNSwgMTQ1LCAKLSAgICAxMTgsIDEsIDI0OCwgMTQzLCAxMTgsIDEsIDI0OCwgMTI3LCAxMTgsIDEsIDIyOCwgMTE1LCAxMTgsIDEsIDIxNywgMTA2LCAKLSAgICAxMTgsIDEsIDIxNiwgMjA5LCAxMTgsIDEsIDI0OCwgMjI5LCAxMTgsIDEsIDI0OCwgMzMsIDExOCwgMSwgMTk4LCAxMTgsIDEsIAotICAgIDE5MSwgMTE4LCAxLCAyMjUsIDE1MCwgMTE4LCAxLCAyNTIsIDE5OSwgMTE4LCAxLCAyNTIsIDI2LCAxMTgsIDEsIDE4NiwgCi0gICAgMTE4LCAxLCAxOTIsIDExOCwgMSwgMjA1LCAxMTgsIDEsIDIzMywgMTQxLCAxMTgsIDEsIDIxNCwgMjcsIDExOCwgMSwgMjIwLCAKLSAgICAxMDQsIDExOCwgMSwgMjE4LCAyMjUsIDExOCwgMSwgMjA2LCAxMTgsIDEsIDE2MiwgMTE4LCAxLCAyMzIsIDE5MCwgMTE4LCAKLSAgICAxLCA1NSwgMzYsIDIzMiwgMTgxLCAxMTgsIDEsIDU1LCAzNiwgMjIyLCAxODEsIDExOCwgMSwgNTUsIDM2LCAyMjgsIDk3LCAKLSAgICAxMTgsIDI1LCA1LCAyNTUsIDgyLCAxMTgsIDI1LCA1LCAyNTIsIDIzLCAyNTUsIDgyLCAxMTgsIDI1LCA1LCA3NCwgMTE4LCAKLSAgICAyNSwgNSwgMjM2LCA0MCwgMTE4LCAyNSwgNSwgNjksIDExOCwgMjUsIDUsIDIxNCwgMTE4LCAxMTgsIDI1LCA1LCAxNDksIAotICAgIDE1MywgMTE4LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgMTE4LCAyNSwgNSwgMTQ5LCAxNTYsIDExOCwgMjUsIDUsIDE0OSwgCi0gICAgMjMyLCAxOTEsIDExOCwgMjUsIDUsIDc2LCAxMTgsIDI1LCA1LCAyNTQsIDIxMCwgMTE4LCAyNSwgNSwgNzgsIDExOCwgMjUsIAotICAgIDUsIDI1MywgMjAwLCAxMTgsIDIxMywgMTUyLCAxMTgsIDI0OCwgMTg2LCAxMTgsIDUyLCAyNDgsIDE4NiwgMTE4LCAyMjQsIAotICAgIDE0NCwgMjQ3LCAxMjgsIDExOCwgMjI0LCAxNDQsIDUyLCAyNDcsIDEyOCwgMTE4LCAyMjQsIDE0NCwgMjMyLCAyMTksIDExOCwgCi0gICAgMjI0LCAxNDQsIDI0OSwgMTQ1LCAxMzAsIDExOCwgMjI0LCAxNDQsIDIzMiwgMTIxLCAxMTgsIDU0LCAxMTEsIDExOCwgNTQsIAotICAgIDEwNSwgMTE4LCA1NCwgMTU4LCAxMTgsIDU0LCAxNjEsIDExOCwgNTQsIDE5MCwgMTE4LCA1NCwgMTk1LCAxMTgsIDU0LCAKLSAgICAxOTksIDExOCwgNTQsIDE5NiwgMTE4LCA1NCwgMjAxLCAxMTgsIDU0LCAyMTYsIDI0OCwgMTE4LCA1NCwgMjE1LCA3MywgCi0gICAgMTE4LCA1NCwgMjE2LCAxNjMsIDExOCwgNTQsIDI0NCwgMjMsIDExOCwgNTQsIDI0NCwgMTIyLCAxMTgsIDU0LCAyMTksIAotICAgIDExMywgMTE4LCA1NCwgMjIwLCAxMTgsIDExOCwgNTQsIDI0NSwgMTkyLCAxMTgsIDU0LCAyMjgsIDIwMCwgMTE4LCA1NCwgCi0gICAgMTIzLCAyNDAsIDIxNywgMTE4LCA1NCwgMTIzLCAyMTYsIDE0OCwgMTE4LCAyMSwgMjEwLCA4NiwgMTE4LCAyMSwgMTExLCAKLSAgICAxMTgsIDIxLCAxMDUsIDExOCwgMjEsIDE1OCwgMTE4LCAyMSwgMTYxLCAxMTgsIDIxLCAxOTAsIDExOCwgMjEsIDE5NSwgCi0gICAgMTE4LCAyMSwgMTk5LCAxMTgsIDIxLCAxOTYsIDExOCwgMjEsIDIwMSwgMjM0LCAyNTAsIDUsIDI1MSwgNywgMjM0LCAyNTAsIAotICAgIDUsIDI1NCwgODMsIDIzNCwgMjUwLCA1LCAyMTMsIDE0NywgMjM0LCAyNTAsIDEsIDYxLCAyMzQsIDI1MCwgMSwgMjU1LCA4MiwgCi0gICAgMjM0LCAyNTAsIDEsIDc0LCAyMzQsIDI1MCwgMSwgMjM2LCA0MCwgMjM0LCAyNTAsIDEsIDY5LCAyMzQsIDI1MCwgMSwgMjE0LCAKLSAgICAxMTgsIDIzNCwgMjUwLCAxLCA3NiwgMjM0LCAyNTAsIDEsIDI1NCwgMjEwLCAyMzQsIDI1MCwgMSwgNzgsIDIzNCwgMjUwLCAKLSAgICAxLCAyNTMsIDIwMCwgMjM0LCAyNTAsIDEsIDE3NiwgMjM0LCAyNTAsIDEsIDIzNCwgMTM4LCAyMzQsIDI1MCwgMSwgMjQzLCAKLSAgICAxNDIsIDIzNCwgMjUwLCAxLCAyNDMsIDAsIDIzNCwgMjUwLCAxLCAyMjksIDgyLCAyMzQsIDI1MCwgMSwgMjUxLCA0MSwgCi0gICAgMjM0LCAyNTAsIDEsIDI1MCwgMTY1LCAyMzQsIDI1MCwgMSwgMjM1LCAxNDcsIDIzNCwgMjUwLCAxLCAyMzUsIDEyMCwgMjM0LCAKLSAgICAyNTAsIDEsIDIyNywgMTY5LCAyMzQsIDI1MCwgMSwgMjE1LCAxNTcsIDIzNCwgMjUwLCAxLCAyMTUsIDE0NSwgMjM0LCAyNTAsIAotICAgIDEsIDI0OCwgMTQzLCAyMzQsIDI1MCwgMSwgMjQ4LCAxMzIsIDIzNCwgMjUwLCAxLCAyNDgsIDEyNywgMjM0LCAyNTAsIDEsIAotICAgIDIyMywgNDIsIDIzNCwgMjUwLCAxLCAyMjgsIDExNSwgMjM0LCAyNTAsIDEsIDIxNywgMTA2LCAyMzQsIDI1MCwgMSwgMjE2LCAKLSAgICAyMDksIDIzNCwgMjUwLCAxLCAyNDgsIDIyOSwgMjM0LCAyNTAsIDEsIDI0OCwgMzMsIDIzNCwgMjUwLCAxLCAxOTgsIDIzNCwgCi0gICAgMjUwLCAxLCAxOTEsIDIzNCwgMjUwLCAxLCAyMjUsIDE1MCwgMjM0LCAyNTAsIDEsIDI1MiwgMTk5LCAyMzQsIDI1MCwgMSwgCi0gICAgMjUyLCAyNiwgMjM0LCAyNTAsIDEsIDE4NiwgMjM0LCAyNTAsIDEsIDE5MiwgMjM0LCAyNTAsIDEsIDIwNSwgMjM0LCAyNTAsIAotICAgIDEsIDIzMywgMTQxLCAyMzQsIDI1MCwgMSwgMjE0LCAyNywgMjM0LCAyNTAsIDEsIDIyMCwgMTA0LCAyMzQsIDI1MCwgMSwgCi0gICAgMjE4LCAyMjUsIDIzNCwgMjUwLCAxLCAyMDYsIDIzNCwgMjUwLCAxLCAxNjIsIDIzNCwgMjUwLCAyNSwgNSwgMjU1LCA4MiwgCi0gICAgMjM0LCAyNTAsIDI1LCA1LCA3NCwgMjM0LCAyNTAsIDI1LCA1LCAyMzYsIDQwLCAyMzQsIDI1MCwgMjUsIDUsIDY5LCAyMzQsIAotICAgIDI1MCwgMjUsIDUsIDIxNCwgMTE4LCAyMzQsIDI1MCwgMjUsIDUsIDc2LCAyMzQsIDI1MCwgMjUsIDUsIDI1NCwgMjEwLCAKLSAgICAyMzQsIDI1MCwgMjUsIDUsIDc4LCAyMzQsIDI1MCwgMjUsIDUsIDI1MywgMjAwLCAyMzQsIDI1MCwgNSwgMjEzLCAxNTIsIAotICAgIDIzNCwgMjUwLCA1LCAyMjcsIDIwOSwgMjM0LCAyNTAsIDI1NSwgMzAsIDUwLCAyMzQsIDI1MCwgMjQ1LCAxMjksIDUwLCAKLSAgICAyMzQsIDI1MCwgNTQsIDUwLCAyMzQsIDI1MCwgMjIxLCAxNzUsIDc5LCAyMzQsIDI1MCwgNTIsIDIyMSwgMTc1LCA3OSwgCi0gICAgMjM0LCAyNTAsIDI0OCwgMTg2LCAyMzQsIDI1MCwgNTIsIDI0OCwgMTg2LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMjIsIDIwLCAKLSAgICAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMTcsIDgxLCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyNTIsIDE3NiwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjUxLCAzMSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjQ4LCAyMTEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIAotICAgIDI0MywgMTI3LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMzEsIDIxNSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjI5LCA3OSwgCi0gICAgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjMzLCAxMTgsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyOSwgMjE4LCAyMTksIDM4LCAKLSAgICAyMTksIDQ2LCAxLCAyMTQsIDI0LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMjYsIDc3LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyMTEsIDg0LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMjMsIDE3MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjQyLCA0NCwgCi0gICAgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjM0LCAyNTQsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzNSwgMTQyLCAyMTksIDM4LCAKLSAgICAyMTksIDQ2LCAxLCAyMjcsIDE2NiwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjU0LCAyMTgsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIAotICAgIDI0NSwgMjE1LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMzYsIDQxLCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMTQsIDIwOCwgCi0gICAgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjI2LCAyMjYsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0NSwgMjA1LCAyMTksIDM4LCAKLSAgICAyMTksIDQ2LCAxLCAyMzEsIDIyOCwgMjE5LCAzOCwgMjE5LCA0NiwgMjEsIDIxMCwgODYsIDIxOSwgMzgsIDIxOSwgNDYsIAotICAgIDIxLCAxMTEsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAxMDUsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAxNTgsIDIxOSwgMzgsIAotICAgIDIxOSwgNDYsIDIxLCAxNjEsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAxOTAsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAxOTUsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAxOTksIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAxOTYsIDIxOSwgMzgsIDIxOSwgNDYsIAotICAgIDIxLCAyMDEsIDI1MCwgMTU5LCA1LCAyNTEsIDcsIDI1MCwgMTU5LCA1LCAyNTQsIDgzLCAyNTAsIDE1OSwgNSwgMjEzLCAKLSAgICAxNDcsIDI1MCwgMTU5LCAxLCAyNTUsIDgyLCAyNTAsIDE1OSwgMSwgNzQsIDI1MCwgMTU5LCAxLCA2OSwgMjUwLCAxNTksIDEsIAotICAgIDc2LCAyNTAsIDE1OSwgMSwgMjM1LCAxNiwgMjUwLCAxNTksIDEsIDIzNCwgMTM3LCAyNTAsIDE1OSwgMSwgMjQzLCAxMzksIAotICAgIDI1MCwgMTU5LCAxLCAyNDIsIDI1NSwgMjUwLCAxNTksIDEsIDIyOSwgODEsIDI1MCwgMTU5LCAxLCAyNTEsIDQwLCAyNTAsIAotICAgIDE1OSwgMSwgMjUwLCAxNjQsIDI1MCwgMTU5LCAxLCAyMzUsIDE0NiwgMjUwLCAxNTksIDEsIDIzNSwgMTE5LCAyNTAsIDE1OSwgCi0gICAgMSwgMjI3LCAxNjgsIDI1MCwgMTU5LCAxLCAyMTUsIDE1NiwgMjUwLCAxNTksIDEsIDIxNSwgMTQ0LCAyNTAsIDE1OSwgMSwgCi0gICAgMjQ4LCAxNDIsIDI1MCwgMTU5LCAxLCAyNDgsIDEyNiwgMjUwLCAxNTksIDEsIDIyOCwgMTE0LCAyNTAsIDE1OSwgMSwgMjE3LCAKLSAgICAxMDIsIDI1MCwgMTU5LCAxLCAyMTYsIDIwOCwgMjUwLCAxNTksIDEsIDI0OCwgMjI4LCAyNTAsIDE1OSwgMSwgMjQ4LCAzMiwgCi0gICAgMjUwLCAxNTksIDEsIDIyOSwgMjMwLCAyNTAsIDE1OSwgMSwgMjI2LCA5MywgMjUwLCAxNTksIDEsIDIyNSwgMTQ5LCAyNTAsIAotICAgIDE1OSwgMSwgMjUyLCAxOTcsIDI1MCwgMTU5LCAxLCAyNTIsIDI1LCAyNTAsIDE1OSwgMSwgMjMxLCAyNDIsIDI1MCwgMTU5LCAKLSAgICAxLCAyMTAsIDE2NywgMjUwLCAxNTksIDEsIDIxMSwgMTAzLCAyNTAsIDE1OSwgMSwgMjIzLCAxODcsIDI1MCwgMTU5LCAxLCAKLSAgICAyMzMsIDE0MCwgMjUwLCAxNTksIDEsIDIxMiwgNjQsIDI1MCwgMTU5LCAxLCAyMjIsIDMzLCAyNTAsIDE1OSwgMSwgMjQyLCAKLSAgICA1MywgMjUwLCAxNTksIDI1LCA1LCA2MSwgMjUwLCAxNTksIDI1LCA1LCA3NCwgMjUwLCAxNTksIDI1LCA1LCAyMzYsIDQwLCAKLSAgICAyNTAsIDE1OSwgMjUsIDUsIDY5LCAyNTAsIDE1OSwgMjUsIDUsIDIxNCwgMTE4LCAyNTAsIDE1OSwgMjUsIDUsIDc2LCAyNTAsIAotICAgIDE1OSwgMjUsIDUsIDI1NCwgMjEwLCAyNTAsIDE1OSwgMjUsIDUsIDc4LCAyNTAsIDE1OSwgMjUsIDUsIDI1MywgMjAwLCAKLSAgICAyNTAsIDE1OSwgMjUsIDUsIDIyNiwgMjIzLCAyNTAsIDE1OSwgMTQ0LCA3OSwgMjUwLCAxNTksIDI1MywgMjAxLCA3OSwgCi0gICAgMjUwLCAxNTksIDIxMywgMTUyLCAyNTAsIDE1OSwgMjMxLCAyNDAsIDI1MCwgMTU5LCAyMSwgMjEwLCA4NiwgMjUwLCAxNTksIAotICAgIDIxLCAxMTEsIDI1MCwgMTU5LCAyMSwgMTA1LCAyNTAsIDE1OSwgMjEsIDE1OCwgMjUwLCAxNTksIDIxLCAxNjEsIDI1MCwgCi0gICAgMTU5LCAyMSwgMTkwLCAyNTAsIDE1OSwgMjEsIDE5NSwgMjUwLCAxNTksIDIxLCAxOTksIDI1MCwgMTU5LCAyMSwgMTk2LCAKLSAgICAyNTAsIDE1OSwgMjEsIDIwMSwgMjUwLCAxNTksIDIyMSwgMTc1LCA3OSwgMjUwLCAxNTksIDI0OCwgMTg2LCAyNTAsIDE1OSwgCi0gICAgNTIsIDI0OCwgMTg2LCAyNTAsIDE1OSwgMjI0LCAxNiwgNzksIDE3NCwgNSwgMjUxLCA3LCAxNzQsIDUsIDI1NCwgODMsIAotICAgIDE3NCwgNSwgMjEzLCAxNDcsIDE3NCwgMSwgNjEsIDE3NCwgMSwgMjU1LCA4MiwgMTc0LCAxLCA3NCwgMTc0LCAxLCAyMzYsIAotICAgIDQwLCAxNzQsIDEsIDY5LCAxNzQsIDEsIDIxNCwgMTE4LCAxNzQsIDEsIDE0OSwgMTUzLCAxNzQsIDEsIDE0OSwgMjIyLCAKLSAgICAxODIsIDE3NCwgMSwgMTQ5LCAxNTYsIDE3NCwgMSwgMTQ5LCAyMzIsIDE5MSwgMTc0LCAxLCA3NiwgMTc0LCAxLCAyNTQsIAotICAgIDIxMCwgMTc0LCAxLCA3OCwgMTc0LCAxLCAyNTMsIDIwMCwgMTc0LCAxLCAxNzYsIDE3NCwgMSwgMjM0LCAxMzgsIDE3NCwgMSwgCi0gICAgMjQzLCAxNDIsIDE3NCwgMSwgMjQzLCAwLCAxNzQsIDEsIDIyOSwgODIsIDE3NCwgMSwgMjUxLCA0MSwgMTc0LCAxLCAyNTAsIAotICAgIDE2NSwgMTc0LCAxLCAyMzUsIDE0NywgMTc0LCAxLCAyMzUsIDEyMCwgMTc0LCAxLCAyMjcsIDE2OSwgMTc0LCAxLCAyMTUsIAotICAgIDE1NywgMTc0LCAxLCAyMTUsIDE0NSwgMTc0LCAxLCAyNDgsIDE0MywgMTc0LCAxLCAyNDgsIDEyNywgMTc0LCAxLCAyMjgsIAotICAgIDExNSwgMTc0LCAxLCAyMTcsIDEwNiwgMTc0LCAxLCAyMTYsIDIwOSwgMTc0LCAxLCAyNDgsIDIyOSwgMTc0LCAxLCAyNDgsIAotICAgIDMzLCAxNzQsIDEsIDE5OCwgMTc0LCAxLCAxOTEsIDE3NCwgMSwgMjI1LCAxNTAsIDE3NCwgMSwgMjUyLCAxOTksIDE3NCwgMSwgCi0gICAgMjUyLCAyNiwgMTc0LCAxLCAxODYsIDE3NCwgMSwgMTkyLCAxNzQsIDEsIDIwNSwgMTc0LCAxLCAyMzMsIDE0MSwgMTc0LCAxLCAKLSAgICAyMzIsIDE5MCwgMTc0LCAxLCAyMTQsIDI3LCAxNzQsIDEsIDIyMCwgMTA0LCAxNzQsIDEsIDIxOCwgMjI1LCAxNzQsIDEsIAotICAgIDIwNiwgMTc0LCAxLCAxNjIsIDE3NCwgMjUsIDUsIDI1NSwgODIsIDE3NCwgMjUsIDUsIDc0LCAxNzQsIDI1LCA1LCAyMzYsIAotICAgIDQwLCAxNzQsIDI1LCA1LCA2OSwgMTc0LCAyNSwgNSwgMjE0LCAxMTgsIDE3NCwgMjUsIDUsIDE0OSwgMTUzLCAxNzQsIDI1LCAKLSAgICA1LCAxNDksIDIyMiwgMTgyLCAxNzQsIDI1LCA1LCAxNDksIDE1NiwgMTc0LCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTc0LCAKLSAgICAyNSwgNSwgNzYsIDE3NCwgMjUsIDUsIDI1NCwgMjEwLCAxNzQsIDI1LCA1LCA3OCwgMTc0LCAyNSwgNSwgMjUzLCAyMDAsIAotICAgIDE3NCwgNSwgMjEzLCAxNTIsIDE3NCwgNSwgMjUzLCAxODMsIDE3NCwgNSwgMjM1LCAxMDgsIDE3NCwgNSwgMjE0LCAxNjEsIAotICAgIDE3NCwgMjI2LCAyMDgsIDE3NCwgMjQ4LCAxODYsIDE3NCwgNTIsIDI0OCwgMTg2LCAxNzQsIDI1NSwgMzAsIDUwLCAxNzQsIAotICAgIDIyMCwgMTM5LCAxNzQsIDIxLCAyMTAsIDg2LCAxNzQsIDIxLCAxMTEsIDE3NCwgMjEsIDEwNSwgMTc0LCAyMSwgMTU4LCAKLSAgICAxNzQsIDIxLCAxNjEsIDE3NCwgMjEsIDE5MCwgMTc0LCAyMSwgMTk1LCAxNzQsIDIxLCAxOTksIDE3NCwgMjEsIDE5NiwgCi0gICAgMTc0LCAyMSwgMjAxLCAyMTcsIDcwLCAxLCA2MSwgMjE3LCA3MCwgMSwgMjU1LCA4MiwgMjE3LCA3MCwgMSwgNzQsIDIxNywgCi0gICAgNzAsIDEsIDIzNiwgNDAsIDIxNywgNzAsIDEsIDY5LCAyMTcsIDcwLCAxLCAyMTQsIDExOCwgMjE3LCA3MCwgMSwgNzYsIAotICAgIDIxNywgNzAsIDEsIDI1NCwgMjEwLCAyMTcsIDcwLCAxLCA3OCwgMjE3LCA3MCwgMSwgMjUzLCAyMDAsIDIxNywgNzAsIDEsIAotICAgIDE3NiwgMjE3LCA3MCwgMSwgMjM0LCAxMzgsIDIxNywgNzAsIDEsIDI0MywgMTQyLCAyMTcsIDcwLCAxLCAyNDMsIDAsIDIxNywgCi0gICAgNzAsIDEsIDIyOSwgODIsIDIxNywgNzAsIDEsIDI1MSwgNDEsIDIxNywgNzAsIDEsIDI1MCwgMTY1LCAyMTcsIDcwLCAxLCAKLSAgICAyMzUsIDE0NywgMjE3LCA3MCwgMSwgMjM1LCAxMjAsIDIxNywgNzAsIDEsIDIyNywgMTY5LCAyMTcsIDcwLCAxLCAyMTUsIAotICAgIDE1NywgMjE3LCA3MCwgMSwgMjE1LCAxNDUsIDIxNywgNzAsIDEsIDI0OCwgMTQzLCAyMTcsIDcwLCAxLCAyNDgsIDEyNywgCi0gICAgMjE3LCA3MCwgMSwgMjI4LCAxMTUsIDIxNywgNzAsIDEsIDIxNywgMTA2LCAyMTcsIDcwLCAxLCAyMTYsIDIwOSwgMjE3LCAKLSAgICA3MCwgMSwgMjQ4LCAyMjksIDIxNywgNzAsIDEsIDI0OCwgMzMsIDIxNywgNzAsIDEsIDE5OCwgMjE3LCA3MCwgMSwgMTkxLCAKLSAgICAyMTcsIDcwLCAxLCAyMjUsIDE1MCwgMjE3LCA3MCwgMSwgMjUyLCAxOTksIDIxNywgNzAsIDEsIDI1MiwgMjYsIDIxNywgNzAsIAotICAgIDEsIDE4NiwgMjE3LCA3MCwgMSwgMTkyLCAyMTcsIDcwLCAxLCAyMDUsIDIxNywgNzAsIDEsIDIzMywgMTQxLCAyMTcsIDcwLCAKLSAgICAxLCAyMTQsIDI3LCAyMTcsIDcwLCAxLCAyMjAsIDEwNCwgMjE3LCA3MCwgMSwgMjA2LCAyMTcsIDcwLCAxLCAxNjIsIDIxNywgCi0gICAgNzAsIDEsIDIyMiwgMTgxLCAyMTcsIDcwLCA1LCAyNTQsIDgzLCAyMTcsIDcwLCA1LCAyMTMsIDE0NywgMjE3LCA3MCwgMjUsIAotICAgIDUsIDI1NSwgODIsIDIxNywgNzAsIDI1LCA1LCA3NCwgMjE3LCA3MCwgMjUsIDUsIDIzNiwgNDAsIDIxNywgNzAsIDI1LCA1LCAKLSAgICA2OSwgMjE3LCA3MCwgMjUsIDUsIDIxNCwgMTE4LCAyMTcsIDcwLCAyNSwgNSwgNzYsIDIxNywgNzAsIDI1LCA1LCAyNTQsIAotICAgIDIxMCwgMjE3LCA3MCwgMjUsIDUsIDc4LCAyMTcsIDcwLCAyNSwgNSwgMjUzLCAyMDAsIDIxNywgNzAsIDUsIDIxMywgMTUyLCAKLSAgICAyMTcsIDcwLCA1LCAyMjcsIDIwOSwgMjE3LCA3MCwgMjEsIDIxMCwgODYsIDIxNywgNzAsIDIxLCAxMTEsIDIxNywgNzAsIAotICAgIDIxLCAxMDUsIDIxNywgNzAsIDIxLCAxNTgsIDIxNywgNzAsIDIxLCAxNjEsIDIxNywgNzAsIDIxLCAxOTAsIDIxNywgNzAsIAotICAgIDIxLCAxOTUsIDIxNywgNzAsIDIxLCAxOTksIDIxNywgNzAsIDIxLCAxOTYsIDIxNywgNzAsIDIxLCAyMDEsIDE1LCA1LCA2MSwgCi0gICAgMTUsIDUsIDExNiwgMzAsIDYxLCAxNSwgNSwgMTE2LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAxMTYsIDMwLCAyNDMsIDExMiwgCi0gICAgMjE2LCAyNDAsIDE1LCA1LCAxMTYsIDMwLCAxNjIsIDE1LCA1LCAxMTYsIDMwLCAyMzYsIDQyLCAxNSwgNSwgMTE2LCAzMCwgCi0gICAgMjMzLCAxMjIsIDI0MiwgMTAxLCAxNSwgNSwgMTE2LCAzMCwgMjMwLCA2NiwgMTUsIDUsIDExNiwgMzAsIDIyMiwgMjMsIDE1LCAKLSAgICA1LCAyNTUsIDg0LCAxNSwgNSwgMjU1LCAzNCwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDI1NSwgMzUsIAotICAgIDMwLCAyNDYsIDc1LCAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyNDMsIDEyNSwgMTUsIDUsIDI1NSwgMzUsIDMwLCAKLSAgICAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMTYyLCAxNSwgNSwgMjU1LCAzNSwgMzAsIDIzNiwgNDMsIAotICAgIDI0MiwgMTAxLCAxNSwgNSwgMjU1LCAzNSwgMzAsIDIzNiwgMTYsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjMzLCAxMjMsIDE1LCAKLSAgICA1LCAyNTUsIDM1LCAzMCwgMjIwLCA1MCwgMTUsIDUsIDI1NSwgMzUsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA2OSwgMTUsIDUsIAotICAgIDI1NSwgMzUsIDI0MiwgMTAxLCAxNSwgNSwgMjU1LCAzMiwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyNTIsIDE2OCwgMTUsIDUsIAotICAgIDI1NSwgMzMsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNTUsIDMzLCAzMCwgMjMxLCA5NywgOTYsIDI0NSwgCi0gICAgMTU4LCAxNSwgNSwgMjU1LCAzMywgMzAsIDIyMCwgMTAyLCAxNSwgNSwgMjU1LCAzMywgMzAsIDIxNywgNzMsIDE1LCA1LCAKLSAgICAyNTUsIDgsIDE1LCA1LCAyNTQsIDE5NSwgMTUsIDUsIDI1NCwgMTk2LCAzMCwgMjQ1LCA5NSwgMTUsIDUsIDI1NCwgMTk2LCAKLSAgICAzMCwgMjIwLCAxMiwgOTYsIDI0MiwgMTk3LCAxNSwgNSwgMjU0LCAxODcsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDI1NCwgCi0gICAgMTg3LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyNDcsIDIyNCwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAKLSAgICAyNTQsIDE4OCwgMzAsIDE2MiwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjM1LCA1LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyMzQsIAotICAgIDk4LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIAotICAgIDI1NCwgMTg0LCAxNSwgNSwgMjU0LCAxNzcsIDE1LCA1LCAyNTQsIDE0MCwgMTUsIDUsIDI1NCwgMTQxLCAzMCwgMjIwLCA2NSwgCi0gICAgMTUsIDUsIDI1NCwgMTMxLCAxNSwgNSwgMjU0LCAxMzIsIDExNSwgMjU0LCAxMzEsIDE1LCA1LCAyNTQsIDEzMiwgMTM0LCAKLSAgICAyMTYsIDg2LCAxNSwgNSwgMjU0LCAxMzIsIDk2LCAyMjksIDIyMiwgMjI2LCAxNjgsIDI1NCwgMTMyLCA5NiwgMjI5LCAyMjEsIAotICAgIDE1LCA1LCAyNTQsIDEzMiwgOTYsIDIyOSwgMjIyLCAyMTgsIDIzNSwgMTUsIDUsIDI1NCwgMTAyLCAxNSwgNSwgMjU0LCA3NSwgCi0gICAgMTUsIDUsIDI1NCwgNDMsIDE1LCA1LCAyNTQsIDQ0LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyNTQsIDE2LCAxNSwgNSwgMjUzLCAKLSAgICAyNDQsIDE1LCA1LCAyNTMsIDIzOSwgMTUsIDUsIDI1MywgMjQwLCAyMTAsIDQwLCAyMTYsIDI0MCwgMTUsIDUsIDI1MywgCi0gICAgMjQwLCAyMzUsIDksIDIxNiwgMjQwLCAxNSwgNSwgMjUzLCAyNDAsIDExNSwgMjUzLCAyNDAsIDIxNSwgMTE1LCAxMTUsIAotICAgIDIxNSwgMTE1LCAyMTUsIDExNSwgMTE1LCAyMTUsIDExNSwgMjI2LCAyNSwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgCi0gICAgMjQwLCAxMTUsIDI1MywgMjM5LCAxNSwgNSwgMjUzLCAyNDAsIDExNSwgMjUzLCAyNDAsIDExNSwgMjUzLCAyNDAsIDI0OSwgCi0gICAgMTMzLCAyNTMsIDI0MCwgMTE1LCAyNTMsIDI0MCwgMTE1LCAyNTMsIDIzOSwgMTUsIDUsIDI1MywgMjM3LCAxNSwgNSwgMjUzLCAKLSAgICAyMzQsIDE1LCA1LCAyNTIsIDE5OSwgMTUsIDUsIDI1MiwgMTg0LCAxNSwgNSwgMjUyLCAxNzksIDE1LCA1LCAyNTIsIDE3NSwgCi0gICAgMTUsIDUsIDI1MiwgMTY5LCAxNSwgNSwgMjUyLCAxNzAsIDExNSwgMjUyLCAxNjksIDE1LCA1LCAyNTIsIDE2OCwgMTUsIDUsIAotICAgIDEzMCwgMTUsIDUsIDI1MiwgMTQ4LCAxNSwgNSwgMjUyLCAxNCwgMTUsIDUsIDI1MiwgMTUsIDMwLCA2MSwgMTUsIDUsIDI1MiwgCi0gICAgMTUsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDI1MiwgMTUsIDMwLCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIDUsIDI1MSwgMTMzLCAKLSAgICAxNSwgNSwgMjUxLCAxMzQsIDExNSwgMjUxLCAxMzQsIDI1NSwgMzQsIDE1LCA1LCAyNTEsIDEzNCwgMTE1LCAyNTEsIDEzNCwgCi0gICAgMjE0LCAxOTAsIDE1LCA1LCAyNTEsIDEzNCwgMjQ5LCAxMzMsIDI1MSwgMTMzLCAxNSwgNSwgMjUxLCAxMTcsIDE1LCA1LCAKLSAgICAyNTEsIDExOCwgMTE1LCAyNTEsIDExNywgMTUsIDUsIDI1MSwgMTA2LCAxNSwgNSwgMjUxLCAxMDUsIDE1LCA1LCAyNDgsIAotICAgIDIyOSwgMTUsIDUsIDI0OCwgMjIwLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAxMTYsIDk2LCAyMzEsIDE1MiwgCi0gICAgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjU0LCAxNDAsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIAotICAgIDI1MiwgMTY4LCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyNTIsIDE0LCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgCi0gICAgNzIsIDMwLCAyNDMsIDE0MiwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjQzLCAxNDMsIDk2LCAyMzEsIDE1MiwgCi0gICAgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjQyLCAyMjEsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIAotICAgIDI0MiwgMjA0LCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyNDIsIDExMCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIAotICAgIDcyLCAzMCwgMTYyLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMzUsIDE4NiwgMTUsIDUsIDI0OCwgMjIxLCAKLSAgICAyMzQsIDcyLCAzMCwgMjM1LCAxODcsIDk2LCAyMzIsIDEwMywgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjM0LCAKLSAgICAyNDgsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMywgMTQxLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIAotICAgIDMwLCAyMzIsIDEwMywgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjMyLCAxMDQsIDk2LCAyMzEsIDE1MSwgMTUsIAotICAgIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjMyLCA4OSwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjI5LCAKLSAgICAxMTIsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIyNiwgMjYsIDk2LCAyMjYsIDI1LCAxNSwgNSwgMjQ4LCAyMjEsIAotICAgIDIzNCwgNzIsIDMwLCAyMTksIDE5MywgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjE3LCA3MywgMTUsIDUsIDI0OCwgCi0gICAgMjIxLCAyMzQsIDcyLCAzMCwgMjE0LCAyMzEsIDk2LCAyNDIsIDIwNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgCi0gICAgMjE0LCAxMjYsIDE1LCA1LCAyNDgsIDE5NSwgMTUsIDUsIDI0OCwgMTc0LCAxNSwgNSwgMjQ4LCAxNzMsIDE1LCA1LCAyNDgsIAotICAgIDE3MiwgMTUsIDUsIDI0OCwgMTEsIDE1LCA1LCAyNDcsIDI1MCwgMTUsIDUsIDI0NywgMjI1LCAxNSwgNSwgMjQ3LCAyMjYsIAotICAgIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQ3LCAyMjQsIDE1LCA1LCAyNDcsIDIxNCwgMTUsIDUsIDI0NywgMjE1LCAyMzQsIDIxNCwgCi0gICAgMTA0LCAyNDIsIDEwMiwgMjQ3LCAxOTUsIDE1LCA1LCAyNDcsIDE5NSwgMTUsIDUsIDI0NiwgODYsIDE1LCA1LCAyNDYsIDg3LCAKLSAgICAxMTUsIDI0NiwgODYsIDE1LCA1LCAyNDYsIDg3LCAyNDIsIDEwMSwgMTUsIDUsIDI0NiwgODcsIDIyMCwgNDcsIDE1LCA1LCAKLSAgICAyNDYsIDg0LCAxNSwgNSwgMjQ2LCA4NSwgMzAsIDI0NSwgODAsIDE1LCA1LCAyNDYsIDgzLCAxNSwgNSwgMjQ2LCA4MiwgMTUsIAotICAgIDUsIDI0NiwgODEsIDE1LCA1LCAyNDYsIDgwLCAxNSwgNSwgMjQ2LCA3NiwgMTUsIDUsIDI0NiwgNzQsIDE1LCA1LCAyNDYsIAotICAgIDc1LCAyNDIsIDEwMSwgMTUsIDUsIDI0NiwgNzUsIDI0MiwgMTAyLCAyNDIsIDEwMSwgMTUsIDUsIDI0NiwgNzMsIDE1LCA1LCAKLSAgICAyNDYsIDY2LCAxNSwgNSwgNzYsIDE1LCA1LCAxNjAsIDMwLCAyMjYsIDI1LCAxNSwgNSwgMTYwLCAxMTUsIDE2MCwgMjI3LCAKLSAgICAxOTksIDExNSwgMjI3LCAxOTgsIDE1LCA1LCAyNDUsIDI0MiwgMTUsIDUsIDI0NSwgMjQzLCAzMCwgMTE2LCA5NiwgMjQyLCAKLSAgICA1NiwgOTYsIDI0OCwgMjI5LCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDI0NSwgMjQzLCAzMCwgCi0gICAgMjMwLCAyMzUsIDE1LCA1LCAyNDUsIDI0MywgMzAsIDIyMiwgMTAsIDE1LCA1LCAyNDUsIDI0MywgMzAsIDIyMCwgNjUsIDE1LCAKLSAgICA1LCAyNDUsIDI0MywgMzAsIDY5LCAxNSwgNSwgMjQ1LCAyMTksIDE1LCA1LCAyNDUsIDIwOCwgMTUsIDUsIDI0NSwgMTgyLCAKLSAgICAxNSwgNSwgMjQ1LCAxNTgsIDE1LCA1LCAyNDUsIDE1OSwgMzAsIDI0MywgMTExLCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyNDMsIAotICAgIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDUsIDE1OSwgMzAsIDIzMSwgOTYsIDE1LCA1LCAyNDUsIDE1OSwgMjQ5LCAxMzMsIAotICAgIDI0NSwgMTU4LCAxNSwgNSwgMjQ1LCAxNTksIDIyNiwgMTY4LCAyNDUsIDE1OCwgMTUsIDUsIDI0NSwgMTU5LCAyMTgsIDIzNSwgCi0gICAgMTUsIDUsIDI0NSwgOTcsIDE1LCA1LCAyNDUsIDk1LCAxNSwgNSwgMjQ1LCA4MCwgMTUsIDUsIDI0NSwgMTgsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgNjEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMTE2LCA5NiwgMjMzLCAxMTAsIDE1LCA1LCAyNDUsIDE5LCAKLSAgICAzMCwgMTE2LCA5NiwgMjMzLCAxMTEsIDMwLCAyMzMsIDExMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyNTQsIDEzMSwgMTUsIDUsIAotICAgIDI0NSwgMTksIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyNDYsIDc1LCAyNDIsIDEwMSwgMTUsIDUsIDI0NSwgCi0gICAgMTksIDMwLCAyNDYsIDc1LCAyNDIsIDEwMiwgMjQyLCAxMDEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMTYyLCAxNSwgNSwgMjQ1LCAKLSAgICAxOSwgMzAsIDI0MiwgNTYsIDI0MiwgMTAxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgCi0gICAgMjQ1LCAxOSwgMzAsIDIzNCwgMjEzLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDIzNCwgMjE0LCAyMTgsIDIzNSwgMTUsIDUsIAotICAgIDI0NSwgMTksIDMwLCAyMzMsIDIyMSwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzMsIDE0MSwgMTUsIDUsIDI0NSwgMTksIDMwLCAKLSAgICAyMzMsIDExMSwgMzAsIDIzMywgMTEwLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDIzMiwgMjQ3LCAxNSwgNSwgMjQ1LCAxOSwgMzAsIAotICAgIDIzMiwgMTAzLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDIxNCwgMjE5LCAxNSwgCi0gICAgNSwgMjQzLCAxNDIsIDE1LCA1LCAyNDMsIDE0MywgMjQyLCAxMDEsIDE1LCA1LCAyNDMsIDE0MCwgMTUsIDUsIDI0MywgMTQxLCAKLSAgICAzMCwgMTE2LCA5NiwgMjQ4LCAyMzAsIDk2LCAxNjIsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDExNiwgOTYsIDE2MiwgMTUsIDUsIAotICAgIDI0MywgMTQxLCAzMCwgMTE2LCA5NiwgMjM2LCA0MiwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjU1LCAzMywgMjE2LCAyNDEsIAotICAgIDk2LCAyMTcsIDk0LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjUzLCAKLSAgICAyMzksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1MywgMjM4LCA5NiwgMjQzLCAxMjUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDI1MiwgMTg0LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTIsIDE0OSwgOTYsIDIwNSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjUxLCAxMDYsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1MSwgMTA3LCA5NiwgMjA1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNDgsIDIyOSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ4LCAxMSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ3LCAyMjYsIAotICAgIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDYsIDg0LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDUsIDE4MiwgCi0gICAgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ1LCAxODMsIDk2LCAyMzMsIDE0MSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ1LCAKLSAgICAxNTgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgMTU5LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQzLCAKLSAgICAxNDEsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAKLSAgICAxNDEsIDMwLCAyNDIsIDIyMSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQyLCAyMTksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDI0MiwgMjIwLCA5NiwgNjEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMjA1LCA5NiwgMjE4LCA4NCwgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQyLCA1NiwgOTYsIDIzMiwgMTA0LCA5NiwgMjQ1LCA4MCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQyLCAKLSAgICAzNywgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQyLCAzOCwgOTYsIDIzMywgMTQxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDEsIAotICAgIDE4OCwgOTYsIDIzMiwgMjQ3LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDAsIDIyNSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzNSwgMTczLCA5NiwgMjQwLCAyMzAsIDk2LCAyNTMsIAotICAgIDIzOSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjM0LCAyNDgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzNCwgMjEzLCAxNSwgNSwgCi0gICAgMjQzLCAxNDEsIDMwLCAyMzQsIDk1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzQsIDk2LCA5NiwgMjMzLCAxMTAsIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDIzMywgMjIyLCA5NiwgMjU0LCAxMzEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzMywgMTQxLCAxNSwgCi0gICAgNSwgMjQzLCAxNDEsIDMwLCAyMzEsIDk3LCA5NiwgMjQ1LCAxNTgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzMCwgMjM1LCAKLSAgICAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjI3LCAxOTksIDExNSwgMjI3LCAKLSAgICAxOTgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDE5MSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjIyLCAxMCwgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjIxLCAyMzMsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDIyMCwgNjYsIDk2LCAyMTUsIDk5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMjAsIDMyLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyMTgsIDQ0LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCA2OSwgMTUsIDUsIAotICAgIDI0MywgMTQxLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIxNCwgMjIwLCA5NiwgMjQ2LCA4NiwgMTUsIAotICAgIDUsIDI0MywgMTQxLCAxMTUsIDI0MywgMTQwLCAxNSwgNSwgMjQzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNiwgMjQ5LCAxMzMsIAotICAgIDI0MywgMTM1LCAxNSwgNSwgMjQzLCAxMzMsIDE1LCA1LCAyNDMsIDEzNCwgMTE1LCAyNDMsIDEzNCwgMjQzLCAxMDQsIDExNSwgCi0gICAgMjQzLCAxMDMsIDE1LCA1LCAyNDMsIDEyNSwgMTUsIDUsIDI0MywgMTI2LCAyNDMsIDEzNCwgMTE1LCAyNDMsIDEzNCwgMjQzLCAKLSAgICAxMDQsIDExNSwgMjQzLCAxMDMsIDE1LCA1LCAyNDMsIDEyNCwgMTUsIDUsIDI0MywgMTIyLCAxNSwgNSwgMjQzLCAxMTMsIAotICAgIDE1LCA1LCAyNDMsIDExMSwgMTUsIDUsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDI0MywgMTEyLCAxMTUsIDI0MywgCi0gICAgMTExLCAxNSwgNSwgMjQzLCAxMTIsIDI0OSwgMTMzLCAyNDMsIDExMSwgMTUsIDUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAKLSAgICAxMDIsIDE1LCA1LCAyNDMsIDk3LCAxNSwgNSwgMjQzLCA0MywgMTUsIDUsIDI0MywgNDQsIDMwLCAyMzMsIDIwMiwgMTUsIDUsIAotICAgIDI0MiwgMjIxLCAxNSwgNSwgMjQyLCAyMjIsIDMwLCA3NiwgMTUsIDUsIDI0MiwgMjIyLCAzMCwgNjksIDE1LCA1LCAyNDIsIAotICAgIDIyMiwgMjQ5LCAxMzMsIDI0MiwgMjIxLCAxNSwgNSwgMjQyLCAyMTksIDE1LCA1LCAyNDIsIDIyMCwgMTE1LCAyNDIsIDIxOSwgCi0gICAgMTUsIDUsIDI0MiwgMjIwLCAyNDksIDEzMywgMjQyLCAyMTksIDE1LCA1LCAyNDIsIDIxNiwgMTUsIDUsIDI0MiwgMjA0LCAKLSAgICAxNSwgNSwgMjQyLCAyMDUsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAyMDIsIDE1LCA1LCAyNDIsIDIwMywgMzAsIDExNiwgOTYsIAotICAgIDIzNiwgNDIsIDE1LCA1LCAyNDIsIDIwMywgMzAsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDI0MiwgMjAzLCAzMCwgCi0gICAgMjM2LCA0MiwgMTUsIDUsIDI0MiwgMjAzLCAzMCwgMjMyLCAxMDQsIDk2LCAyMzYsIDQyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAKLSAgICAxOTEsIDE1LCA1LCAyNDIsIDE5OSwgMTUsIDUsIDI0MiwgMTk3LCAxNSwgNSwgMjQyLCAxOTgsIDI0OSwgMTMzLCAyNDIsIAotICAgIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyNDIsIDE5OCwgMzAsIDIxNywgNzMsIDE1LCA1LCAKLSAgICAyNDIsIDE5OCwgMjE2LCAyNDAsIDE1LCA1LCAyNDIsIDEyMCwgMTUsIDUsIDI0MiwgMTIxLCAyNDksIDEzMywgMjQyLCAxMjAsIAotICAgIDE1LCA1LCAyNDIsIDExOCwgMTUsIDUsIDI0MiwgMTE5LCAzMCwgMjM0LCAyNDgsIDE1LCA1LCAyNDIsIDExOSwgMzAsIDIzNCwgCi0gICAgMjQ5LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyNDIsIDExOSwgMzAsIDIyNywgMTk4LCAxNSwgNSwgMjQyLCAKLSAgICAxMTksIDMwLCAyMjIsIDExLCA5NiwgMjE1LCAxMTQsIDE1LCA1LCAyNDIsIDExOSwgMjQyLCAxMDEsIDE1LCA1LCAyNDIsIAotICAgIDExMCwgMTUsIDUsIDI0MiwgMTExLCAzMCwgMTE2LCA5NiwgMjMzLCAyMDIsIDE1LCA1LCAyNDIsIDExMSwgMzAsIDIzMywgCi0gICAgMjAyLCAxNSwgNSwgMjQyLCAxMTEsIDExNSwgMjQyLCAxMTEsIDIzMiwgOTYsIDE1LCA1LCAyNDIsIDEwNSwgMTUsIDUsIAotICAgIDI0MiwgMTAzLCAxNSwgNSwgMjQyLCAxMDQsIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQyLCA5NSwgMTUsIDUsIDI0MiwgOTQsIAotICAgIDE1LCA1LCAyNDIsIDkxLCAxNSwgNSwgMjQyLCA5MCwgMTUsIDUsIDE2MiwgMTUsIDUsIDI0MiwgNTYsIDIxNiwgMjQwLCAxNSwgCi0gICAgNSwgMjQyLCA1NiwgMjQyLCAxMDEsIDE1LCA1LCAyNDIsIDM3LCAxNSwgNSwgMjQxLCAxODcsIDE1LCA1LCAyNDEsIDE4OCwgCi0gICAgMzAsIDI1MywgMjM5LCAxNSwgNSwgMjQxLCAxODgsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjUyLCAKLSAgICAxODQsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDI0NywgMTk1LCAxNSwgNSwgMjQxLCAxODgsIDMwLCAyNDMsIDEzMywgMTUsIDUsIAotICAgIDI0MSwgMTg4LCAzMCwgMjM0LCA4NywgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyNDEsIDE4OCwgCi0gICAgMzAsIDIyMCwgNjUsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDY5LCAxNSwgNSwgMjQwLCAyMjksIDE1LCA1LCAyNDAsIDIyNSwgCi0gICAgMTUsIDUsIDI0MCwgMjI2LCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAyNDAsIDIyNiwgMzAsIDI0MiwgMzcsIDE1LCA1LCAyNDAsIAotICAgIDIyNiwgMzAsIDIzNCwgMjEzLCAxNSwgNSwgMjQwLCAyMjYsIDMwLCAyMzIsIDIwMywgMTUsIDUsIDI0MCwgMjI2LCAzMCwgCi0gICAgMjE0LCAyMTksIDE1LCA1LCAyNDAsIDIyMiwgMTUsIDUsIDc0LCAxNSwgNSwgMjQwLCAxNjEsIDYxLCAxNSwgNSwgMjQwLCAKLSAgICAxMjIsIDE1LCA1LCAyMzYsIDcwLCAxNSwgNSwgMjM2LCA3MSwgMTE1LCAyMzYsIDcxLCAyNTEsIDEwNiwgMTUsIDUsIDIzNiwgCi0gICAgNzEsIDExNSwgMjM2LCA3MSwgMjE4LCAyMzUsIDE1LCA1LCAyMzYsIDQ1LCAxNSwgNSwgMjM2LCA0MiwgMTUsIDUsIDIzNiwgCi0gICAgNDMsIDI0NywgMjUwLCAxNSwgNSwgMjM2LCA0MywgMjIzLCAzOCwgMTUsIDUsIDIzNiwgNDMsIDExNSwgMjM2LCA0MywgMjIwLCAKLSAgICAxNiwgMTE1LCAyMjAsIDE2LCAyMTQsIDIyMCwgMTE1LCAyMTQsIDIxOSwgMTUsIDUsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgCi0gICAgNSwgMjM2LCAzNCwgMTUsIDUsIDIzNiwgMzUsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMzYsIDMzLCAxNSwgCi0gICAgNSwgMjM2LCAyMywgMTUsIDUsIDIzNiwgMjQsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjM2LCAyNCwgMjQ5LCAxMzMsIDIzNiwgCi0gICAgMjMsIDE1LCA1LCAyMzYsIDI0LCAyMjYsIDE2OCwgMjM2LCAyMywgMTUsIDUsIDIzNiwgMjQsIDIxOCwgMjM1LCAxNSwgNSwgCi0gICAgMjM2LCAxNiwgMTUsIDUsIDIzNiwgNiwgMTUsIDUsIDIzNSwgMTg2LCAxNSwgNSwgMjM1LCAxNzIsIDE1LCA1LCAxNzYsIDE1LCAKLSAgICA1LCAyMzUsIDE5LCAzMCwgNjEsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjU1LCA4LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1NSwgCi0gICAgOSwgOTYsIDIzMywgMjIxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1MywgMjM3LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1MiwgMTY4LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDEzMCwgMTUsIDUsIDIzNSwgCi0gICAgMTksIDMwLCAyNTIsIDE0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0NSwgOTUsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQ1LCAKLSAgICA4MCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDMsIDE0MiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDMsIDEyNSwgMTUsIDUsIAotICAgIDIzNSwgMTksIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjQzLCAxMDQsIDk2LCAyMjAsIDEwMywgOTYsIDYxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MiwgCi0gICAgMjIxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MiwgMjA0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MiwgMTk4LCA5NiwgMjIxLCAKLSAgICAyMzMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQyLCAxOTgsIDI0OSwgMTMzLCAyNDIsIDE5NywgMTUsIDUsIDIzNSwgMTksIAotICAgIDMwLCAyNDIsIDEyMCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDk0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzNiwgNDIsIAotICAgIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjM2LCAyMywgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzQsIDI0OCwgMTUsIDUsIDIzNSwgCi0gICAgMTksIDMwLCAyMzQsIDk4LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzNCwgOTUsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMyLCAKLSAgICAyNDcsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMyLCAxMDMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMxLCA5NiwgMTUsIDUsIAotICAgIDIzNSwgMTksIDMwLCAyMzEsIDk3LCA5NiwgMjQ2LCA4NiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzEsIDk3LCA5NiwgMjQyLCAKLSAgICAyMjEsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDIxNywgMjMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMwLCAKLSAgICAyMzUsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMwLCAyMzYsIDk2LCAyMjcsIDE5MywgMTUsIDUsIDIzNSwgMTksIDMwLCAyMjksIAotICAgIDExMiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMjUsIDExMSwgMTUsIDUsIAotICAgIDIzNSwgMTksIDMwLCAyMjIsIDE0MiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMDYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjIxLCAKLSAgICAyMzMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjIwLCAxMDQsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjIwLCA2NSwgMTUsIDUsIAotICAgIDIzNSwgMTksIDMwLCAyMjAsIDMyLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIxOSwgMjI3LCAxNSwgNSwgMjM1LCAxOSwgMzAsIAotICAgIDIxOSwgMTg0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIxOCwgNTIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE3LCA1MSwgMTUsIAotICAgIDUsIDIzNSwgMTksIDMwLCA2OSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIzNSwgMTksIDMwLCAKLSAgICAyMTQsIDIxOSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTQsIDE5MywgMzAsIDE5MSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTQsIAotICAgIDEyNiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTAsIDQ0LCAxNSwgNSwgMjM1LCAxNywgMTUsIDUsIDIzNSwgMTgsIDI0OSwgCi0gICAgMTMzLCAyMzUsIDE3LCAxNSwgNSwgMjM1LCAxMCwgMTUsIDUsIDIzNSwgNywgMTUsIDUsIDIzNSwgNSwgMTUsIDUsIDIzNSwgCi0gICAgNCwgMTUsIDUsIDIzNSwgMiwgMTUsIDUsIDIzNSwgMywgMTE1LCAyMzUsIDIsIDE1LCA1LCAyMzQsIDI0OCwgMTUsIDUsIAotICAgIDIzNCwgMjQ5LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyMzQsIDI0NCwgMTUsIDUsIDIzNCwgMjQ1LCAzMCwgCi0gICAgMjUyLCAxODQsIDE1LCA1LCAyMzQsIDI0NSwgMjQ5LCAxMzMsIDIzNCwgMjQ0LCAxNSwgNSwgMjM0LCAyNDIsIDE1LCA1LCAKLSAgICAyMzQsIDI0MSwgMTUsIDUsIDIzNCwgMjEzLCAxNSwgNSwgMjM0LCAyMTQsIDIzMywgMTI0LCAzMCwgMTA0LCAxMTUsIDIzMywgCi0gICAgMTI0LCAzMCwgNjksIDE1LCA1LCAyMzQsIDIxNCwgMTE1LCAyMzQsIDIxNCwgMjMzLCAxMjQsIDMwLCAxMDQsIDExNSwgMjMzLCAKLSAgICAxMjQsIDMwLCA2OSwgMTUsIDUsIDIzNCwgMTYzLCAxNSwgNSwgMjM0LCA5OCwgMTUsIDUsIDIzNCwgOTksIDMwLCAyNTIsIAotICAgIDE4NCwgMTUsIDUsIDIzNCwgOTksIDMwLCA2OSwgMTUsIDUsIDIzNCwgOTksIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzNCwgCi0gICAgOTUsIDE1LCA1LCAyMzQsIDg3LCAxNSwgNSwgMjM0LCA3NCwgMTUsIDUsIDIzNCwgNzMsIDE1LCA1LCAyMzQsIDcxLCAxNSwgCi0gICAgNSwgMjM0LCA3MiwgMTE1LCAyMzQsIDcxLCAxNSwgNSwgMjMzLCAyMjMsIDE1LCA1LCAyMzMsIDIyNCwgMTE1LCAyNDEsIAotICAgIDE4OCwgMzAsIDI1MywgMjM4LCAyMzMsIDIyNCwgMTE1LCAyNDEsIDE4OCwgMzAsIDI1MywgMjM3LCAxNSwgNSwgMjMzLCAKLSAgICAyMjEsIDE1LCA1LCAyMzMsIDIxOSwgMTUsIDUsIDIzMywgMjIwLCAyMTQsIDEyLCAxNywgMTUsIDUsIDIzMywgMjE4LCAxNSwgCi0gICAgNSwgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDIxNiwgMjQyLCAxMDEsIDE1LCA1LCAyMzMsIDIxNCwgMTUsIDUsIDIzMywgMjAyLCAKLSAgICAxNSwgNSwgMjMzLCAyMDMsIDIyNiwgMTY4LCAyMzMsIDIwMiwgMTUsIDUsIDIzMywgMTk3LCAxNSwgNSwgMjMzLCAxNzgsIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMTUsIDUsIDIzMywgMTIzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCA2MSwgMTUsIDUsIDIzMywgCi0gICAgMTI0LCAzMCwgMTE2LCA5NiwgMjQ4LCAyMzAsIDk2LCAxNjIsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDExNiwgOTYsIDI0MywgCi0gICAgMTAzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAxMTYsIDk2LCAyMzMsIDExMCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjU0LCAKLSAgICAxODcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI1NCwgMTMxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTMsIDI0MCwgMjEwLCAKLSAgICA0MCwgMjE2LCAyNDAsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTIsIAotICAgIDE0LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNDgsIDE3NCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQ1LCAxNTgsIDE1LCA1LCAKLSAgICAyMzMsIDEyNCwgMzAsIDI0MywgMTQyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDIzMywgMTI0LCAKLSAgICAzMCwgMjQyLCAxMTAsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MiwgMTExLCA5NiwgMjQyLCAxMTAsIDE1LCA1LCAyMzMsIAotICAgIDEyNCwgMzAsIDE2MiwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQyLCAzNywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQxLCAKLSAgICAxODgsIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyMzMsIAotICAgIDEyNCwgMzAsIDIzNiwgMjMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNiwgMjQsIDk2LCAxNjIsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIzNiwgMjQsIDk2LCAyMzIsIDEwMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzMywgMTI0LCAKLSAgICAzMCwgMjM0LCA4NywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMzLCAyMjEsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMywgCi0gICAgMjE1LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzMsIDIxNiwgOTYsIDI0MSwgMTg4LCA5NiwgNjEsIDE1LCA1LCAyMzMsIAotICAgIDEyNCwgMzAsIDIzMywgMTIzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzIsIDIwMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgCi0gICAgMjMyLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMiwgOTEsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMSwgOTYsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIDE1OCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMwLCA2NiwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMjI5LCAxMTIsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIyMCwgNjYsIDk2LCAyMTgsIDQ0LCAxNSwgCi0gICAgNSwgMjMzLCAxMjQsIDMwLCAyMjAsIDEyLCA5NiwgMjQyLCAxOTgsIDk2LCAyNDUsIDk1LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAKLSAgICAyMjAsIDEyLCA5NiwgMjQyLCAxOTgsIDIxNiwgMjQwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTksIDIyNSwgMTUsIDUsIAotICAgIDIzMywgMTI0LCAzMCwgMjE5LCAyMjYsIDk2LCAyMTksIDIyNSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE4LCA0NCwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMjE3LCA4NSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE3LCA3MywgMTUsIDUsIDIzMywgMTI0LCAKLSAgICAzMCwgMjE3LCAyNCwgOTYsIDExNiwgOTYsIDIxOCwgODUsIDk2LCAxOTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDY5LCAxNSwgCi0gICAgNSwgMjMzLCAxMjQsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNjksIAotICAgIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxNCwgCi0gICAgMjE5LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIzMywgMTI0LCAyMTgsIDIzNSwgMTUsIDUsIAotICAgIDIzMywgMTIxLCAxNSwgNSwgMjMzLCAxMjIsIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjMzLCAxMjIsIDMwLCAyMjAsIDY2LCA5NiwgCi0gICAgMjE4LCA0NCwgMTUsIDUsIDIzMywgMTIyLCAyNDIsIDEwMSwgMTUsIDUsIDIzMywgMTIyLCAyNDIsIDEwMiwgMTE1LCAyMzMsIAotICAgIDEyMiwgMjQyLCAxMDIsIDIyMCwgNjUsIDE1LCA1LCAyMzMsIDExNywgMTUsIDUsIDIzMywgMTEwLCAxNSwgNSwgMjMzLCAKLSAgICAxMTEsIDMwLCAyMzMsIDExMCwgMTUsIDUsIDIzMywgMTA4LCAxNSwgNSwgMjMzLCAxMDksIDMwLCAyMzMsIDIwMiwgMTUsIDUsIAotICAgIDIzMywgMTA5LCAzMCwgMjMzLCAyMDMsIDk2LCAyMjIsIDE0MiwgMTUsIDUsIDIzMiwgMjQ3LCAxNSwgNSwgMjMyLCAyMzIsIAotICAgIDE1LCA1LCAyMzIsIDIyMiwgMTUsIDUsIDIzMiwgMjAzLCAxNSwgNSwgMjMyLCAxMDMsIDE1LCA1LCAyMzIsIDEwNCwgMzAsIAotICAgIDI1MiwgMTg0LCAxNSwgNSwgMjMyLCAxMDEsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDI1NCwgMTg3LCAxNSwgNSwgMjMyLCAKLSAgICAxMDIsIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjQ1LCA4MCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgCi0gICAgMjQ1LCA4MSwgMjE2LCAyNDAsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDIzMiwgCi0gICAgMTAyLCAzMCwgMjQxLCAxODgsIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM2LCAyMywgMTUsIDUsIAotICAgIDIzMiwgMTAyLCAzMCwgMjM1LCA3LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMzUsIDUsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIAotICAgIDIzNSwgNiwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMzQsIDk4LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAKLSAgICAyMzMsIDE0MiwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMzMsIDEyMywgMTUsIDUsIDIzMiwgMTAyLCAKLSAgICAzMCwgMjMxLCA5NywgOTYsIDI0NSwgMTU4LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMjksIDExMiwgMTUsIDUsIDIzMiwgCi0gICAgMTAyLCAzMCwgMjI3LCAyNDIsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDIxOSwgMTk0LCA5NiwgMjUzLCAyMzksIDE1LCA1LCAKLSAgICAyMzIsIDEwMiwgMzAsIDIxOSwgMTc2LCA5NiwgMjUxLCAxMzMsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDIxNSwgMTE0LCAxNSwgCi0gICAgNSwgMjMyLCAxMDIsIDIxNiwgMjQwLCAxNSwgNSwgMjMyLCAxMDIsIDI0OSwgMTMzLCAyMzIsIDEwMSwgMTUsIDUsIDIzMiwgCi0gICAgMTAyLCAyMjYsIDE2OCwgMjMyLCAxMDEsIDE1LCA1LCAyMzIsIDEwMiwgMjE4LCAyMzUsIDE1LCA1LCAyMzIsIDEwMiwgMjIwLCAKLSAgICA0NywgMTUsIDUsIDIzMiwgMTAwLCAxNSwgNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDExNSwgMjMyLCA5NiwgMTUsIDUsIAotICAgIDIzMiwgOTcsIDIyNiwgMTY4LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMjIwLCA0NywgMTUsIDUsIDIzMiwgOTQsIDE1LCAKLSAgICA1LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA4OSwgMTUsIDUsIDIzMiwgOTAsIDExNSwgMjMyLCA4OSwgMTUsIDUsIDIzMiwgOTAsIAotICAgIDExNSwgMjMyLCA5MCwgMjQzLCAxMDQsIDExNSwgMjQzLCAxMDMsIDE1LCA1LCAxODYsIDE1LCA1LCAyMzEsIDI0NCwgMzAsIAotICAgIDIxNywgNzMsIDE1LCA1LCAyMzEsIDI0NCwgMjQyLCAxMDEsIDE1LCA1LCAyMzEsIDI0MywgMTUsIDUsIDIzMSwgMjE1LCAxNSwgCi0gICAgNSwgMjMxLCAxNzEsIDE1LCA1LCAyMzEsIDE1MiwgMTUsIDUsIDIzMSwgMTUxLCAxNSwgNSwgMjMxLCA5NiwgMTUsIDUsIAotICAgIDIzMSwgNTIsIDE1LCA1LCAyMzAsIDIzNSwgMTUsIDUsIDIzMCwgMTkzLCAxNSwgNSwgMjMwLCAxMDcsIDE1LCA1LCAyMzAsIAotICAgIDEwOCwgMTE1LCAyMzAsIDEwNywgMTUsIDUsIDIzMCwgOTgsIDE1LCA1LCAyMzAsIDk5LCAyNDIsIDEwMSwgMTUsIDUsIDIzMCwgCi0gICAgODMsIDE1LCA1LCAyMzAsIDY5LCAxNSwgNSwgMjMwLCA2NiwgMTUsIDUsIDIzMCwgNjcsIDMwLCA2MSwgMTUsIDUsIDIzMCwgCi0gICAgNjcsIDMwLCAyMzMsIDIwMiwgMTUsIDUsIDIzMCwgNjcsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIzMCwgNjcsIDExNSwgMjMwLCAKLSAgICA2NiwgMTUsIDUsIDIzMCwgNjcsIDExNSwgMjMwLCA2NywgMzAsIDExNiwgOTYsIDE5OCwgMTUsIDUsIDIzMCwgNjcsIDI0OSwgCi0gICAgMTMzLCAyMzAsIDY2LCAxNSwgNSwgMjMwLCA2NCwgMTUsIDUsIDIzMCwgNjUsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjUsIDMwLCAKLSAgICAxMTYsIDk2LCAyNDgsIDExLCAxNSwgNSwgMjMwLCA2NSwgMzAsIDI0OCwgMTEsIDE1LCA1LCAyMzAsIDY1LCAyNDIsIDEwMSwgCi0gICAgMTUsIDUsIDE5OCwgMTUsIDUsIDIyOSwgMjMyLCAxNSwgNSwgMjI5LCAyMjEsIDE1LCA1LCAyMjksIDIyMiwgMjM1LCAxOTksIAotICAgIDE1LCA1LCAyMjksIDIyMiwgMzAsIDIxOSwgMjI4LCAyMTYsIDI0MCwgMTUsIDUsIDIyOSwgMjIyLCAyMjYsIDE2OCwgMjI5LCAKLSAgICAyMjEsIDE1LCA1LCAyMjksIDIyMCwgMTUsIDUsIDIyOSwgMjEzLCAyMjcsIDE4NCwgMTUsIDUsIDIyOSwgMjEyLCAxNSwgNSwgCi0gICAgMjI5LCAyMTEsIDE1LCA1LCAyMjksIDExMiwgMTUsIDUsIDIyOSwgMTEzLCAzMCwgNjEsIDE1LCA1LCAyMjksIDExMywgMzAsIAotICAgIDIxNCwgMjE5LCAxNSwgNSwgMjI5LCAxMTMsIDIyMCwgNDcsIDE1LCA1LCAyMjgsIDIzOCwgMTUsIDUsIDIyOCwgMjM5LCAzMCwgCi0gICAgNzYsIDE1LCA1LCAyMjgsIDIzNywgMTUsIDUsIDIyOCwgMjA4LCAxNSwgNSwgMjI4LCAyMDksIDMwLCAyNDMsIDExMiwgMjE2LCAKLSAgICAyNDAsIDE1LCA1LCAyMjgsIDIwOSwgMzAsIDI0MywgMTA0LCA5NiwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjI4LCAKLSAgICAyMDYsIDE1LCA1LCAyMjgsIDIwNywgMzAsIDI1NCwgMTMxLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyNTMsIDIzOSwgMTUsIDUsIAotICAgIDIyOCwgMjA3LCAzMCwgMjUzLCAyNDAsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjQyLCAxMTAsIDE1LCAKLSAgICA1LCAyMjgsIDIwNywgMzAsIDIzMSwgOTcsIDk2LCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMjgsIDIwNywgMzAsIAotICAgIDIyOSwgMTEyLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjIwLCA2NSwgCi0gICAgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjIwLCA2NiwgOTYsIDExNiwgMjU0LCAxMzEsIDE1LCA1LCAyMjgsIDIwNywgMzAsIAotICAgIDIyMCwgNjYsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjIwLCA2NiwgOTYsIDI1MywgMjQwLCA5NiwgCi0gICAgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgCi0gICAgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjI4LCAxOTUsIDE1LCA1LCAyMjcsIDI0MiwgMTUsIDUsIDIyNywgMjE0LCAxNSwgNSwgCi0gICAgMjI3LCAxOTgsIDE1LCA1LCAyMjcsIDE5OSwgMjMzLCAxMjIsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDIyNywgMTk5LCAyMzMsIAotICAgIDEyMiwgMzAsIDIzMSwgMTUyLCAxNSwgNSwgMjI3LCAxOTksIDIzMywgMTIyLCAzMCwgMjIyLCAxMCwgMTUsIDUsIDIyNywgCi0gICAgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTEsIDExNSwgMjI3LCAxOTksIDIzMywgMTIyLCAzMCwgMjIyLCAxMCwgMTUsIDUsIAotICAgIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjI3LCAxOTksIDIxNiwgMjQwLCAxNSwgNSwgMjI3LCAKLSAgICAxOTksIDExNSwgMjI3LCAxOTgsIDE1LCA1LCAyMjcsIDE5OSwgMjQ5LCAxMzMsIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIAotICAgIDI0OSwgMTMzLCAyMjcsIDE5OSwgMjMzLCAxMjIsIDExNSwgMjMzLCAxMjEsIDE1LCA1LCAyMjcsIDE5MywgMTUsIDUsIDIyNywgCi0gICAgMTk0LCAyNTUsIDMzLCAzMCwgMjUzLCAyMzQsIDE1LCA1LCAyMjcsIDE5NCwgMjU1LCAzMywgMzAsIDI1MiwgMTQsIDE1LCA1LCAKLSAgICAyMjcsIDE5NCwgMjU1LCAzMywgMzAsIDI0NiwgODIsIDE1LCA1LCAyMjcsIDE5NCwgMjU1LCAzMywgMzAsIDI0MiwgMTEwLCAKLSAgICAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIDUsIDIyNywgMTk0LCAyNTUsIAotICAgIDMzLCAzMCwgMjM1LCA1LCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyMzMsIDE0MSwgMTUsIDUsIDIyNywgMTk0LCAKLSAgICAyNTUsIDMzLCAzMCwgMjI5LCAxMTIsIDE1LCA1LCAyMjcsIDE5NCwgMjU1LCAzMywgMzAsIDIxOSwgMTczLCAxNSwgNSwgCi0gICAgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyNywgMTk0LCAyMzQsIDcyLCAzMCwgMjUyLCAxNCwgCi0gICAgMTUsIDUsIDIyNywgMTk0LCAyMzQsIDcyLCAzMCwgMjUyLCAxNSwgNjksIDE1LCA1LCAxOTEsIDE1LCA1LCAyMjYsIDg0LCAKLSAgICAxNSwgNSwgMjI2LCA1MSwgMTUsIDUsIDIyNiwgMjUsIDE1LCA1LCAyMjUsIDE2NCwgMTUsIDUsIDIyNSwgMTExLCAxNSwgNSwgCi0gICAgMjI1LCAxMTIsIDMwLCA2MSwgMTUsIDUsIDIyNSwgMTEyLCAzMCwgMjU1LCAzNCwgMTUsIDUsIDIyNSwgMTEyLCAzMCwgMjUyLCAKLSAgICAxNCwgMTUsIDUsIDIyNSwgMTEyLCAzMCwgMjUxLCAxMzMsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDc2LCAxNSwgNSwgMjI1LCAKLSAgICAxMTIsIDMwLCA3NCwgMTUsIDUsIDIyNSwgMTEyLCAzMCwgMjQwLCAxMjIsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDY5LCAxNSwgCi0gICAgNSwgMjI1LCAxMTIsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyNSwgMTEyLCAyNDksIDEzMywgMjI1LCAxMTEsIDE1LCA1LCAKLSAgICAyMjUsIDU2LCAxNSwgNSwgMjI1LCA1NywgMzAsIDIzNCwgMjQ0LCAxNSwgNSwgMjI1LCA1NywgMzAsIDIxNCwgMjE5LCAxNSwgCi0gICAgNSwgMjI1LCA1NywgMzAsIDIxMCwgMTE2LCAxNSwgNSwgMjI1LCA1NywgMjI2LCAxNjgsIDIyNSwgNTYsIDE1LCA1LCAyMDUsIAotICAgIDE1LCA1LCAyMjMsIDE4NSwgMTUsIDUsIDIyMywgMzgsIDE1LCA1LCAyMjIsIDE0MiwgMTUsIDUsIDIwNiwgMTUsIDUsIDIyMiwgCi0gICAgMjQsIDIyNywgMTg0LCAxNSwgNSwgMjIyLCAyMywgMTUsIDUsIDIyMiwgMjQsIDMwLCA2MSwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyNDYsIDg2LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDI0NiwgODQsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMTYyLCAxNSwgNSwgCi0gICAgMjIyLCAyNCwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjIyLCAyNCwgMzAsIAotICAgIDIzMiwgODksIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjMwLCAyMzUsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjI3LCAxOTgsIDE1LCAKLSAgICA1LCAyMjIsIDI0LCAzMCwgMjIyLCAxMCwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyMjAsIDMyLCAxNSwgNSwgMjIyLCAyNCwgMzAsIAotICAgIDIxNywgOTQsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjE0LCAyMjUsIDE1LCAKLSAgICA1LCAyMjIsIDI0LCAzMCwgMjE0LCAxOTcsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjE0LCAxNTAsIDE1LCA1LCAyMjIsIDI0LCAKLSAgICAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMjIsIDI0LCAxMTUsIDIyMiwgMjMsIDE1LCA1LCAyMjIsIDI0LCAyNDIsIDEwMSwgMTUsIAotICAgIDUsIDIyMiwgMTAsIDE1LCA1LCAyMjIsIDExLCAyMzMsIDEyNCwgMzAsIDI1MywgMjM3LCAxNSwgNSwgMjIxLCAyNDEsIDE1LCAKLSAgICA1LCAyMjEsIDIzMywgMTUsIDUsIDIyMCwgMTA0LCAxNSwgNSwgMjIwLCAxMDIsIDE1LCA1LCAyMjAsIDEwMywgMzAsIDYxLCAKLSAgICAxNSwgNSwgMjIwLCAxMDMsIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyMjAsIAotICAgIDEwMywgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjIwLCAxMDMsIDMwLCAyMTksIDIyNSwgMTUsIDUsIDIyMCwgMTAzLCAzMCwgCi0gICAgMjE1LCA5OSwgMTUsIDUsIDIyMCwgMTAzLCAzMCwgNjksIDE1LCA1LCAyMjAsIDEwMywgMzAsIDEwNCwgOTYsIDYxLCAxNSwgCi0gICAgNSwgMjIwLCAxMDEsIDE1LCA1LCAyMjAsIDk5LCAxNSwgNSwgMjIwLCA4MCwgMTUsIDUsIDIyMCwgNjUsIDE1LCA1LCAyMjAsIAotICAgIDY2LCAyNDAsIDIyOSwgMTUsIDUsIDIyMCwgNjYsIDExNSwgMjIwLCA2NiwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgCi0gICAgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjIwLCA2NiwgMTE1LCAyMjAsIDY2LCAyMTcsIDk1LCAxMTUsIDIxNywgOTUsIAotICAgIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjIwLCA1OCwgMTUsIDUsIDIyMCwgNTMsIDE1LCA1LCAyMjAsIDUwLCAKLSAgICAxNSwgNSwgMjIwLCA0OSwgMTUsIDUsIDIyMCwgNDYsIDE1LCA1LCAyMjAsIDMyLCAxNSwgNSwgMjIwLCAzMywgMzAsIDYxLCAKLSAgICAxNSwgNSwgMjIwLCAzMywgMzAsIDIzNiwgMjMsIDE1LCA1LCAyMjAsIDI2LCAxNSwgNSwgMjIwLCAyNywgMzAsIDYxLCAxNSwgCi0gICAgNSwgMjIwLCAyNywgMzAsIDI1MiwgMTY5LCAxNSwgNSwgMjIwLCAyNywgMzAsIDI1MSwgMTE3LCAxNSwgNSwgMjIwLCAyNywgCi0gICAgMzAsIDI0NywgMjE0LCAxNSwgNSwgMjIwLCAyNywgMzAsIDI0MywgMTAzLCAxNSwgNSwgMjIwLCAyNywgMzAsIDIzNiwgNDIsIAotICAgIDE1LCA1LCAyMjAsIDI3LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyMjAsIDI3LCAzMCwgMjMzLCAxOTcsIDE1LCAKLSAgICA1LCAyMjAsIDI3LCAzMCwgMjMyLCA5MSwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyMzAsIDk4LCAxNSwgNSwgMjIwLCAyNywgMzAsIAotICAgIDIyMiwgMTAsIDE1LCA1LCAyMjAsIDIwLCAxNSwgNSwgMjIwLCAxNSwgMTUsIDUsIDIyMCwgMTYsIDIxNiwgMjQwLCAxNSwgNSwgCi0gICAgMjIwLCAxNiwgMTE1LCAyMjAsIDE2LCAyNTEsIDEwNywgMTE1LCAyNTEsIDEwNiwgMTUsIDUsIDIyMCwgMTEsIDE1LCA1LCAKLSAgICAyMTksIDIyNywgMTUsIDUsIDIxOSwgMjI4LCAxMTUsIDIzNSwgMjAwLCAyMTksIDIyNywgMTUsIDUsIDIxOSwgMjI1LCAxNSwgCi0gICAgNSwgMjE5LCAyMjQsIDE1LCA1LCAyMTksIDE5MywgMTUsIDUsIDIxOSwgMTk0LCAyNDIsIDEwMSwgMTUsIDUsIDIxOSwgMTg0LCAKLSAgICAxNSwgNSwgMjE5LCAxODIsIDE1LCA1LCAyMTksIDE4MywgMTE1LCAyMTksIDE4MywgMjE5LCAyMjUsIDE1LCA1LCAyMTksIAotICAgIDE3NSwgMTUsIDUsIDIxOSwgMTczLCAxNSwgNSwgMjE4LCA4NCwgMTUsIDUsIDIxOCwgODUsIDExNSwgMjE4LCA4NCwgMTUsIAotICAgIDUsIDIxOCwgNTUsIDE1LCA1LCAyMTgsIDU0LCAxNSwgNSwgMjE4LCA1MiwgMTUsIDUsIDIxOCwgNDQsIDE1LCA1LCAyMTgsIAotICAgIDQzLCAxNSwgNSwgMjE4LCAxOCwgMTUsIDUsIDIxOCwgMTcsIDE1LCA1LCAyMTcsIDEwNiwgMTUsIDUsIDIxNywgMTA3LCAKLSAgICAyNTMsIDIyNCwgMTUsIDUsIDIxNywgMTA3LCAzMCwgMjQxLCAxODcsIDE1LCA1LCAyMTcsIDEwNywgMzAsIDIzMCwgMjM1LCAKLSAgICAxNSwgNSwgMjE3LCAxMDcsIDI0MiwgMTAxLCAxNSwgNSwgMjE3LCA5NCwgMTUsIDUsIDIxNywgOTUsIDExNSwgMjE3LCA5NSwgCi0gICAgMjI4LCAyMzksIDExNSwgMjI4LCAyMzksIDI0NywgMTk2LCAxMTUsIDI0NywgMTk1LCAxNSwgNSwgMjE3LCA5NSwgMjE4LCAKLSAgICAyMzUsIDE1LCA1LCAyMTcsIDg1LCAxNSwgNSwgMTI5LCAzMCwgMjUyLCAxNCwgMTUsIDUsIDEyOSwgMzAsIDI0MiwgMTEwLCAKLSAgICAxNSwgNSwgMTI5LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDEyOSwgMzAsIDIxOSwgMjI3LCAxNSwgNSwgMTI5LCAzMCwgMjE1LCAKLSAgICAxMTQsIDE1LCA1LCAxMjksIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIxNywgNzMsIDE1LCA1LCAyMTcsIDUxLCAxNSwgNSwgCi0gICAgMjE3LCAyMywgMTUsIDUsIDIxNywgMjQsIDI0MiwgMTAxLCAxNSwgNSwgMjE2LCAxMTgsIDE1LCA1LCAyMTYsIDExOSwgMjE2LCAKLSAgICAyNDAsIDE1LCA1LCAyMTYsIDkxLCAxNSwgNSwgMjE2LCA3MywgMTUsIDUsIDIxNiwgNzQsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjE2LCA3NCwgMTE1LCAyMTYsIDczLCAxNSwgNSwgMjE2LCA3NCwgMTE1LCAyMTYsIDc0LCAyNDMsIDEzNCwgMTE1LCAyNDMsIAotICAgIDEzNCwgMjQzLCAxMDQsIDExNSwgMjQzLCAxMDMsIDE1LCA1LCAyMTUsIDExOSwgMTUsIDUsIDIxNSwgMTE0LCAxNSwgNSwgCi0gICAgMjE1LCAxMTIsIDE1LCA1LCAyMTUsIDEwOSwgMTUsIDUsIDIxNSwgOTksIDE1LCA1LCAyMTUsIDEwMCwgMTE1LCAyMTUsIAotICAgIDEwMCwgMjEwLCAxMTcsIDExNSwgMjEwLCAxMTYsIDE1LCA1LCA2OSwgMTUsIDUsIDEwNCwgMjQyLCAxMTAsIDE1LCA1LCAKLSAgICAxMDQsIDEwNCwgNjksIDE1LCA1LCAxMDQsIDExNSwgMTA0LCAyMjYsIDk0LCAxMTUsIDIyNiwgOTQsIDI0MywgMTA0LCAxMTUsIAotICAgIDI0MywgMTAzLCAxNSwgNSwgMTA0LCAxMTUsIDEwNCwgMjE4LCAxOSwgMTE1LCAyMTgsIDE4LCAxNSwgNSwgMTA0LCAxMTUsIAotICAgIDEwNCwgMTA0LCAyMjMsIDUyLCAxMTUsIDEwNCwgMjIzLCA1MSwgMTUsIDUsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAyMjUsIAotICAgIDE1LCA1LCAyMTQsIDIxOSwgMTUsIDUsIDIxNCwgMjIwLCAyMzMsIDE5NywgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMjUyLCAKLSAgICAxODQsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDIzMCwgMjM1LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAxMDQsIDk2LCAxMDQsIAotICAgIDk2LCA2OSwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgMTA0LCAyNDIsIDEwMSwgMTUsIDUsIDIxNCwgCi0gICAgMjIwLCAyNDIsIDEwMSwgMTUsIDUsIDIxNCwgMjIwLCAyMjAsIDQ3LCAxNSwgNSwgMjE0LCAyMjAsIDIyMCwgNDgsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDIxNCwgMjE1LCAxNSwgNSwgMjE0LCAxOTcsIDE1LCA1LCAyMTQsIDE5OCwgMzAsIDIzMywgCi0gICAgMTIzLCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAyMzEsIDk3LCA5NiwgMjQ4LCAyMjksIDE1LCA1LCAyMTQsIDE5OCwgMzAsIAotICAgIDIyMCwgMTAyLCAxNSwgNSwgMjE0LCAxOTgsIDMwLCA2OSwgMTUsIDUsIDIxNCwgMTk2LCAxNSwgNSwgMjE0LCAxOTIsIDE1LCAKLSAgICA1LCAyMTQsIDE5MywgMzAsIDIzNCwgMjEzLCAxNSwgNSwgMjE0LCAxOTMsIDMwLCAxOTEsIDE1LCA1LCAyMTQsIDE5MCwgMTUsIAotICAgIDUsIDIxNCwgMTkxLCAyNDIsIDEwMSwgMTUsIDUsIDIxNCwgMTUwLCAxNSwgNSwgMjE0LCAxNTEsIDI0OSwgMTMzLCAyMTQsIAotICAgIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyMjAsIDQ3LCAxNSwgNSwgMjE0LCAxNDgsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNiwgCi0gICAgOTYsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTE2LCA5NiwgMTk4LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyNTQsIAotICAgIDE4NywgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTYyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDIxNCwgCi0gICAgMTQ5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCA5NiwgMjUzLCAyMzksIDE1LCA1LCAKLSAgICAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCA5NiwgMjUyLCAxNCwgMTUsIDUsIDIxNCwgMTQ3LCAxNSwgNSwgMjE0LCAxNDQsIAotICAgIDE1LCA1LCAyMTQsIDE0MywgMTUsIDUsIDIxNCwgMTM5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCA2MSwgMTUsIDUsIDIxNCwgCi0gICAgMTQwLCAzMCwgMjUzLCAyMzQsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDEzMCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQ2LCAKLSAgICA3NiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTI1LCAxNSwgNSwgCi0gICAgMjE0LCAxNDAsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTAzLCAxNSwgNSwgCi0gICAgMjE0LCAxNDAsIDMwLCAyNDIsIDEyMCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTYyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKLSAgICAyMzYsIDQyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzUsIDE3MiwgMTUsIAotICAgIDUsIDIxNCwgMTQwLCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjMyLCA4OSwgMTUsIDUsIDIxNCwgMTQwLCAKLSAgICAzMCwgMjMwLCAxOTMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE5MSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjIwLCA2NSwgMTUsIAotICAgIDUsIDIxNCwgMTQwLCAzMCwgMjE5LCAxODIsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNSwgMTE5LCAxNSwgNSwgMjE0LCAKLSAgICAxNDAsIDMwLCAxMDQsIDk2LCAyNDIsIDExMCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIAotICAgIDE0MCwgMzAsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzcsIDE1LCA1LCAyMTQsIDEzOCwgMzAsIDY5LCAxNSwgNSwgMjE0LCAKLSAgICAxMjYsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDYxLCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMzMsIDIyMywgMTUsIDUsIDIxNCwgCi0gICAgMTI3LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIxNywgNzMsIDE1LCA1LCAyMTQsIDEyMiwgMTUsIDUsIAotICAgIDIxNCwgMTI1LCAxNSwgNSwgMjE0LCAxMjMsIDE1LCA1LCAyMTQsIDExOSwgMTUsIDUsIDIxNCwgMTA4LCAxNSwgNSwgMjE0LCAKLSAgICAxMDksIDMwLCAyMzQsIDIxMywgMTUsIDUsIDIxNCwgMTA3LCAxNSwgNSwgMjEwLCAxMTYsIDE1LCA1LCAyMTAsIDExNywgCi0gICAgMjE2LCAyNDAsIDE1LCA1LCAyMTAsIDExNywgOTIsIDMwLCAyMzMsIDIwMiwgMTUsIDUsIDIxMCwgMTEzLCAxNSwgNSwgMjEwLCAKLSAgICAxMDYsIDE1LCA1LCAyMTAsIDkzLCAxNSwgNSwgMjEwLCA0NCwgMTUsIDUsIDIxMCwgNDUsIDExNSwgMjEwLCA0NCwgMTUsIDUsIAotICAgIDIxMCwgNDMsIDE1LCA1LCAyMTAsIDQxLCAxNSwgNSwgMjEwLCA0MiwgMjM1LCA5LCAyMTYsIDI0MCwgMTUsIDUsIDIxMCwgCi0gICAgMzYsIDE1LCA1LCAyMTAsIDI4LCAxNSwgNSwgMjEwLCAxMywgMTUsIDUsIDIxMCwgMTEsIDE1LCA1LCAyMTAsIDEyLCAzMCwgCi0gICAgNjEsIDE1LCA1LCAyMTAsIDEwLCAxNSwgNSwgMjEwLCA5LCAxNSwgMTMyLCA1LCAxMTMsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAKLSAgICAxMzQsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjUzLCAKLSAgICAyMzksIDE1LCAxMzIsIDUsIDIxOSwgMTI3LCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgMjIwLCAxMjQsIDI1MywgMjM5LCAxNSwgCi0gICAgMTMyLCA1LCAyNDUsIDIwMSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyNDcsIDE5NSwgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI0NywgCi0gICAgMTk1LCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNDcsIDE5NSwgMTUsIAotICAgIDEzMiwgNSwgMjQ1LCAyMDEsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIAotICAgIDI0NCwgMTksIDY5LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCA2OSwgMTUsIDEzMiwgNSwgMjE5LCAxMjcsIDY5LCAxNSwgMTMyLCAKLSAgICA1LCAyMjAsIDEyNCwgNjksIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCA2OSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDY5LCAxNSwgCi0gICAgMTMyLCA1LCAxMjMsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDExMywgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMTM0LCAyNDMsIDQ1LCAKLSAgICAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAKLSAgICAyMTksIDEyNywgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjIwLCAxMjQsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAKLSAgICAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMTIzLCAyNDMsIDQyLCAxNSwgCi0gICAgMTMyLCA1LCAxMTMsIDI0MywgNDIsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCA0MiwgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjQzLCAKLSAgICA0MiwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjQzLCA0MiwgMTUsIDEzMiwgNSwgMTEzLCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAKLSAgICAxMzQsIDIyMCwgODAsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA4MSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDI0NCwgMTksIAotICAgIDIyMCwgODAsIDE1LCAxMzIsIDUsIDI0NCwgODksIDIyMCwgODAsIDE1LCAxMzIsIDUsIDIxOSwgMTI3LCAyMjAsIDgwLCAxNSwgCi0gICAgMTMyLCA1LCAyMjAsIDEyNCwgMjIwLCA4MCwgMTUsIDEzMiwgNSwgMjQ1LCAyMDEsIDIyMCwgODAsIDE1LCAxMzIsIDUsIAotICAgIDIyOCwgMjA1LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAxMjMsIDIyMCwgNzUsIDE1LCAxMzIsIDUsIDExMywgMjIwLCA3NSwgCi0gICAgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc1LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzYsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCAKLSAgICA1LCAyNDQsIDE5LCAyMjAsIDc1LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyMjAsIDc1LCAxNSwgMTMyLCA1LCAyMjAsIDgxLCAKLSAgICAzMCwgMjQzLCAxMjYsIDk2LCAyNDcsIDE5NSwgMTUsIDEzMiwgNSwgMjIwLCA4MSwgMzAsIDI0MywgMTI2LCA5NiwgMjMwLCAKLSAgICAxOTMsIDE1LCAxMzIsIDUsIDEyMywgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIDExMywgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIAotICAgIDEzNCwgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIDEzNCwgMjUxLCAxMDQsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIAotICAgIDE5LCAyNTEsIDEwMywgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgCi0gICAgMjQ0LCAyOCwgMjQ1LCA4MiwgMTUsIDEzMiwgNSwgMTM0LCAyMTQsIDEyLCAyNDQsIDI4LCAyNDUsIDc5LCAxNSwgMTMyLCA1LCAKLSAgICAyNDQsIDE5LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzIsIDIyMywgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjE0LCAxMiwgMjQ0LCAKLSAgICAyOCwgMjMyLCAyMjEsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgMjgsIDIzMiwgMjI0LCA2MSwgMTUsIAotICAgIDEzMiwgNSwgMjQ0LCAxOSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjMyLCAyMjQsIDI1MywgMTY2LCAxNSwgMTMyLCA1LCAyMTksIAotICAgIDEyNywgMjE0LCAxMiwgMjQ0LCAyOCwgMjUzLCAyMzYsIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyMTQsIDEyLCAyNDQsIDI4LCAKLSAgICAyMzYsIDE1LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAxNywgNjEsIDE1LCAxMzIsIDUsIAotICAgIDIyMCwgMTI0LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzYsIDE3LCAyNTMsIDE2NiwgMTUsIDEzMiwgNSwgMjQ1LCAyMDEsIDIxNCwgCi0gICAgMTIsIDI0NCwgMjgsIDIxNCwgMTIxLCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjE0LCAxMjAsIAotICAgIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzYsIDMxLCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgCi0gICAgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMCwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgCi0gICAgMjksIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzYsIDMyLCA2MSwgMTUsIDEzMiwgNSwgMTEzLCAKLSAgICAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIDUsIDEzNCwgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAyNDQsIAotICAgIDE5LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MywgMjQwLCAyMTYsIDI0MCwgMTUsIDEzMiwgCi0gICAgNSwgMjE5LCAxMjcsIDI1MywgMjQwLCAyMTYsIDI0MCwgMTUsIDEzMiwgNSwgMTIzLCAyNTIsIDE1OCwgMTUsIDEzMiwgNSwgCi0gICAgMTEzLCAyNTIsIDE1OCwgMTUsIDEzMiwgNSwgMTM0LCAyNTIsIDE1OCwgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjUyLCAxNTgsIAotICAgIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI1MiwgMTU5LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjUyLCAKLSAgICAxNTgsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MiwgMTU5LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjI4LCAyMTUsIAotICAgIDE1LCAxMzIsIDUsIDIyOCwgMjE2LCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgNzgsIDE1LCAxMzIsIDUsIDExMywgMjQ1LCA3OCwgCi0gICAgMTUsIDEzMiwgNSwgMTIzLCAyMTYsIDE3MCwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDExMywgMjE2LCAxNjgsIDI0NywgMTk1LCAKLSAgICAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyMTksIDExNiwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDEyMywgMjE2LCAxNzAsIDIxNCwgCi0gICAgMTIsIDI0NCwgMjgsIDYxLCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY4LCAyMTQsIDEyLCAyNDQsIDI4LCA2MSwgMTUsIAotICAgIDEzMiwgNSwgMTIzLCAyNDUsIDE5NywgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDEyMywgMjI0LCAyNSwgMjUzLCAyMzksIDE1LCAKLSAgICAxMzIsIDUsIDU1LCAyNTMsIDIyNywgMTIzLCAyMTksIDExNywgMTUsIDEzMiwgNSwgNTUsIDI1MywgMjI3LCAxMjMsIDIyNCwgCi0gICAgMjQsIDE1LCAyMjQsIDE0NCwgNSwgNTUsIDI1MywgMjI3LCAyMTEsIDIwOSwgMjQ3LCAxODAsIDE1LCAyMjQsIDE0NCwgNSwgCi0gICAgNjcsIDI0OSwgMjM0LCAxNSwgMjI0LCAxNDQsIDUsIDI0OCwgNywgMjQ5LCAyMzQsIDE1LCAyMjQsIDE0NCwgNSwgMjQ4LCA3LCAKLSAgICAyMTUsIDIyMiwgMTIsIDEzLCAyNTUsIDE2NCwgMTIsIDEzLCAyNTUsIDE2MywgMTIsIDEzLCAyNTUsIDE2MiwgMTIsIDEzLCAKLSAgICAyNTUsIDE2MSwgMTIsIDEzLCAyNTUsIDE2MCwgMTIsIDEzLCAyNTUsIDE1OSwgMTIsIDEzLCAyNTUsIDE1OCwgMTIsIDEzLCAKLSAgICAyNTUsIDE1NywgMTIsIDEzLCAyNTUsIDE1NiwgMTIsIDEzLCAyNTUsIDE1NSwgMTIsIDEzLCAyNTUsIDE1NCwgMTIsIDEzLCAKLSAgICAyNTUsIDE1MywgMTIsIDEzLCAyNTUsIDE1MiwgMTIsIDEzLCAyNTUsIDE1MSwgMTIsIDEzLCAyNTUsIDE1MCwgMTIsIDEzLCAKLSAgICAyNTUsIDE0OSwgMTIsIDEzLCAyNTUsIDE0OCwgMTIsIDEzLCAyNTUsIDE0NywgMTIsIDEzLCAyNTUsIDE0NiwgMTIsIDEzLCAKLSAgICAyNTUsIDE0NSwgMTIsIDEzLCAyNTUsIDE0NCwgMTIsIDEzLCAyNTUsIDE0MywgMTIsIDEzLCAyNTUsIDE0MiwgMTIsIDEzLCAKLSAgICAyNTUsIDE0MSwgMTIsIDEzLCAyNTUsIDE0MCwgMTIsIDEzLCAyNTUsIDEzOSwgMTIsIDEzLCAyNTUsIDEzOCwgMTIsIDEzLCAKLSAgICAyNTUsIDEzNywgMTIsIDEzLCAyNTUsIDEzNiwgMTIsIDEzLCAyNTUsIDEzNSwgMTIsIDEzLCAyNTUsIDEzNCwgMTIsIDEzLCAKLSAgICAyNTUsIDEzMywgMTIsIDEzLCAyNTUsIDEzMiwgMTIsIDEzLCAyNTUsIDEzMSwgMTIsIDEzLCAyNTUsIDEzMCwgMTIsIDEzLCAKLSAgICAyNTUsIDEyOSwgMTIsIDEzLCAyNTUsIDEyOCwgMTIsIDEzLCAyNTUsIDEyNywgMTIsIDEzLCAyNTUsIDEyNiwgMTIsIDEzLCAKLSAgICAyNTUsIDEyNSwgMTIsIDEzLCAyNTUsIDEyNCwgMTIsIDEzLCAyNTUsIDEyMywgMTIsIDEzLCAyNTUsIDEyMiwgMTIsIDEzLCAKLSAgICAyNTUsIDEyMSwgMTIsIDEzLCAyNTUsIDEyMCwgMTIsIDEzLCAyNTUsIDExOSwgMTIsIDEzLCAyNTUsIDExOCwgMTIsIDEzLCAKLSAgICAyNTUsIDExNywgMTIsIDEzLCAyNTUsIDExNiwgMTIsIDEzLCAyNTUsIDExNSwgMTIsIDEzLCAyNTUsIDExNCwgMTIsIDEzLCAKLSAgICAyNTUsIDExMywgMTIsIDEzLCAyNTUsIDExMiwgMTIsIDEzLCAyNTUsIDExMSwgMTIsIDEzLCAyNTUsIDExMCwgMTIsIDEzLCAKLSAgICAyNTUsIDEwOSwgMTIsIDEzLCAyNTUsIDEwOCwgMTIsIDEzLCAyNTUsIDEwNywgMTIsIDEzLCAyNTUsIDEwNiwgMTIsIDEzLCAKLSAgICAyNTUsIDEwNSwgMTIsIDEzLCAyNTUsIDEwNCwgMTIsIDEzLCAyNTUsIDEwMywgMTIsIDEzLCAyNTUsIDEwMiwgMTIsIDEzLCAKLSAgICAyNTUsIDEwMSwgMTIsIDEzLCAyNTUsIDEwMCwgMTIsIDEzLCAyNTUsIDk5LCAxMiwgMTMsIDI1NSwgOTgsIDEyLCAxMywgCi0gICAgMjU1LCA5NywgMTIsIDEzLCAyNTUsIDk2LCAxMiwgMTMsIDI1NSwgOTUsIDEyLCAxMywgMjU1LCA5NCwgMTIsIDEzLCAyNTUsIAotICAgIDkzLCAxMiwgMTMsIDI1NSwgOTIsIDEyLCAxMywgMjU1LCA5MSwgMTIsIDEzLCAyNTUsIDkwLCAxMiwgMTMsIDI1NSwgODksIAotICAgIDEyLCAxMywgMjU1LCA4OCwgMTIsIDEzLCAyNTUsIDg3LCAxMiwgMTMsIDI1NSwgODYsIDEyLCAxMywgMjU1LCA4NSwgMTIsIAotICAgIDEzLCAyNTMsIDE2NCwgMTIsIDEzLCAyNTMsIDE2MiwgMTIsIDEzLCAyNTMsIDE2MCwgMTIsIDEzLCAyNTMsIDE1OCwgMTIsIAotICAgIDEzLCAyNTMsIDE1NiwgMTIsIDEzLCAyNTMsIDE1NSwgMTIsIDEzLCAyNTMsIDE1MywgMTIsIDEzLCAyNTMsIDE1MSwgMTIsIAotICAgIDEzLCAyNTMsIDE0OSwgMTIsIDEzLCAyNTMsIDE0NywgMTIsIDEzLCAyNTEsIDcwLCAxMiwgMTMsIDI1MSwgNjksIDEyLCAxMywgCi0gICAgMjUxLCA2OCwgMTIsIDEzLCAyNTEsIDY3LCAxMiwgMTMsIDI1MSwgNjYsIDEyLCAxMywgMjUxLCA2NSwgMTIsIDEzLCAyNTEsIAotICAgIDY0LCAxMiwgMTMsIDI1MSwgNjMsIDEyLCAxMywgMjUxLCA2MiwgMTIsIDEzLCAyNTEsIDYxLCAxMiwgMTMsIDI1MSwgNjAsIAotICAgIDEyLCAxMywgMjUxLCA1OSwgMTIsIDEzLCAyNTEsIDU4LCAxMiwgMTMsIDI1MSwgNTcsIDEyLCAxMywgMjUxLCA1NiwgMTIsIAotICAgIDEzLCAyNTEsIDU1LCAxMiwgMTMsIDI1MSwgNTQsIDEyLCAxMywgMjUxLCA1MywgMTIsIDEzLCAyNTEsIDUyLCAxMiwgMTMsIAotICAgIDI1MSwgNTEsIDEyLCAxMywgMjUxLCA1MCwgMTIsIDEzLCAyNTEsIDQ5LCAxMiwgMTMsIDI1MSwgNDgsIDEyLCAxMywgMjUxLCAKLSAgICA0NywgMTIsIDEzLCAyNTEsIDQ2LCAxMiwgMTMsIDI1MSwgNDUsIDEyLCAxMywgMjUxLCA0NCwgMTIsIDEzLCAyNTEsIDQzLCAKLSAgICAxMiwgMTMsIDI0OSwgNjcsIDEyLCAxMywgMjQ5LCA2NiwgMTIsIDEzLCAyNDksIDY1LCAxMiwgMTMsIDI0OSwgNjQsIDEyLCAKLSAgICAxMywgMjQ5LCA2MywgMTIsIDEzLCAyNDksIDYyLCAxMiwgMTMsIDI0OSwgNjEsIDEyLCAxMywgMjQ5LCA2MCwgMTIsIDEzLCAKLSAgICAyNDksIDU5LCAxMiwgMTMsIDI0OSwgNTgsIDEyLCAxMywgMjQ5LCA1NywgMTIsIDEzLCAyNDksIDU2LCAxMiwgMTMsIDI0OSwgCi0gICAgNTUsIDEyLCAxMywgMjQ5LCA1NCwgMTIsIDEzLCAyNDksIDUzLCAxMiwgMTMsIDI0OSwgNTIsIDEyLCAxMywgMjQ5LCA1MSwgCi0gICAgMTIsIDEzLCAyNDksIDUwLCAxMiwgMTMsIDI0OSwgNDksIDEyLCAxMywgMjQ5LCA0OCwgMTIsIDEzLCAyNDksIDQ3LCAxMiwgCi0gICAgMTMsIDI0OSwgNDYsIDEyLCAxMywgMjQ5LCA0NSwgMTIsIDEzLCAyNDksIDQ0LCAxMiwgMTMsIDI0OSwgNDMsIDEyLCAxMywgCi0gICAgMjQ5LCA0MiwgMTIsIDEzLCAyNDksIDQxLCAxMiwgMTMsIDI0OSwgNDAsIDEyLCAxMywgMjQ5LCAzOSwgMTIsIDEzLCAyNDksIAotICAgIDM4LCAxMiwgMTMsIDI0OSwgMzcsIDEyLCAxMywgMjQ5LCAzNiwgMTIsIDEzLCAyNDksIDM1LCAxMiwgMTMsIDI0OSwgMzQsIAotICAgIDEyLCAxMywgMjQ5LCAzMywgMTIsIDEzLCAyNDksIDMyLCAxMiwgMTMsIDI0OSwgMzEsIDEyLCAxMywgMjQ5LCAzMCwgMTIsIAotICAgIDEzLCAyNDksIDI5LCAxMiwgMTMsIDI0OSwgMjgsIDEyLCAxMywgMjQ5LCAyNywgMTIsIDEzLCAyNDksIDI2LCAxMiwgMTMsIAotICAgIDI0OSwgMjUsIDEyLCAxMywgMjQ5LCAyNCwgMTIsIDEzLCAyNDksIDIzLCAxMiwgMTMsIDI0OSwgMjIsIDEyLCAxMywgMjQ5LCAKLSAgICAyMSwgMTIsIDEzLCAyNDksIDIwLCAxMiwgMTMsIDI0OSwgMTksIDEyLCAxMywgMjQ5LCAxOCwgMTIsIDEzLCAyNDksIDE3LCAKLSAgICAxMiwgMTMsIDI0OSwgMTYsIDEyLCAxMywgMjQ5LCAxNSwgMTIsIDEzLCAyNDksIDE0LCAxMiwgMTMsIDI0OSwgMTMsIDEyLCAKLSAgICAxMywgMjQ5LCAxMiwgMTIsIDEzLCAyNDksIDExLCAxMiwgMTMsIDI0OSwgMTAsIDEyLCAxMywgMjQ5LCA5LCAxMiwgMTMsIAotICAgIDI0OSwgOCwgMTIsIDEzLCAyNDksIDcsIDEyLCAxMywgMjQ5LCA2LCAxMiwgMTMsIDI0OSwgNSwgMTIsIDEzLCAyNDksIDQsIAotICAgIDEyLCAxMywgMjQ5LCAzLCAxMiwgMTMsIDI0OSwgMiwgMTIsIDEzLCAyNDksIDEsIDEyLCAxMywgMjQ5LCAwLCAxMiwgMTMsIAotICAgIDI0OCwgMjU1LCAxMiwgMTMsIDI0OCwgMjU0LCAxMiwgMTMsIDI0OCwgMjUzLCAxMiwgMTMsIDI0OCwgMjUyLCAxMiwgMTMsIAotICAgIDI0OCwgMjUxLCAxMiwgMTMsIDI0OCwgMjUwLCAxMiwgMTMsIDI0OCwgMjQ5LCAxMiwgMTMsIDI0OCwgMjQ4LCAxMiwgMTMsIAotICAgIDI0OCwgMjQ3LCAxMiwgMTMsIDI0OCwgMjQ2LCAxMiwgMTMsIDI0OCwgMjQ1LCAxMiwgMTMsIDI0OCwgMjQ0LCAxMiwgMTMsIAotICAgIDI0OCwgMjQzLCAxMiwgMTMsIDI0OCwgMjQyLCAxMiwgMTMsIDI0OCwgMjQxLCAxMiwgMTMsIDI0OCwgMjQwLCAxMiwgMTMsIAotICAgIDI0OCwgMjM5LCAxMiwgMTMsIDI0OCwgMjM4LCAxMiwgMTMsIDI0OCwgMjM3LCAxMiwgMTMsIDI0OCwgMjM2LCAxMiwgMTMsIAotICAgIDI0OCwgMjM1LCAxMiwgMTMsIDI0OCwgMjM0LCAxMiwgMTMsIDI0OCwgMjMzLCAxMiwgMTMsIDI0OCwgMjMyLCAxMiwgMTMsIAotICAgIDI0NiwgMzEsIDEyLCAxMywgMjQ2LCAzMCwgMTIsIDEzLCAyNDYsIDI5LCAxMiwgMTMsIDI0NiwgMjgsIDEyLCAxMywgMjQ2LCAKLSAgICAyNywgMTIsIDEzLCAyNDYsIDI2LCAxMiwgMTMsIDI0NiwgMjUsIDEyLCAxMywgMjQ2LCAyNCwgMTIsIDEzLCAyNDYsIDIzLCAKLSAgICAxMiwgMTMsIDI0NiwgMjIsIDEyLCAxMywgMjQ2LCAyMSwgMTIsIDEzLCAyNDYsIDIwLCAxMiwgMTMsIDI0NiwgMTksIDEyLCAKLSAgICAxMywgMjQ2LCAxOCwgMTIsIDEzLCAyNDYsIDE3LCAxMiwgMTMsIDI0NiwgMTYsIDEyLCAxMywgMjQ2LCAxNSwgMTIsIDEzLCAKLSAgICAyNDYsIDE0LCAxMiwgMTMsIDI0NiwgMTMsIDEyLCAxMywgMjQ2LCAxMiwgMTIsIDEzLCAyNDYsIDExLCAxMiwgMTMsIDI0NiwgCi0gICAgMTAsIDEyLCAxMywgMjQ2LCA5LCAxMiwgMTMsIDI0NiwgOCwgMTIsIDEzLCAyNDYsIDcsIDEyLCAxMywgMjQ2LCA2LCAxMiwgCi0gICAgMTMsIDI0NiwgNSwgMTIsIDEzLCAyNDYsIDQsIDEyLCAxMywgMjQ2LCAzLCAxMiwgMTMsIDI0NiwgMiwgMTIsIDEzLCAyNDYsIAotICAgIDEsIDEyLCAxMywgMjQ2LCAwLCAxMiwgMTMsIDI0NSwgMjU1LCAxMiwgMTMsIDI0NSwgMjU0LCAxMiwgMTMsIDI0NSwgMjUzLCAKLSAgICAxMiwgMTMsIDI0NSwgMjUyLCAxMiwgMTMsIDI0NSwgMjUxLCAxMiwgMTMsIDI0NSwgMjUwLCAxMiwgMTMsIDI0NSwgMjQ5LCAKLSAgICAxMiwgMTMsIDI0NSwgMjQ4LCAxMiwgMTMsIDI0NSwgMjQ3LCAxMiwgMTMsIDI0NSwgMjQ2LCAxMiwgMTMsIDI0NSwgMjQ1LCAKLSAgICAxMiwgMTMsIDI0NSwgMjQ0LCAxMiwgMTMsIDI0NSwgMTMsIDEyLCAxMywgMjQ1LCAxMiwgMTIsIDEzLCAyNDUsIDExLCAxMiwgCi0gICAgMTMsIDI0NSwgMTAsIDEyLCAxMywgMjQ1LCA5LCAxMiwgMTMsIDI0NSwgOCwgMTIsIDEzLCAyNDUsIDcsIDEyLCAxMywgMjQ1LCAKLSAgICA2LCAxMiwgMTMsIDI0NSwgNSwgMTIsIDEzLCAyNDUsIDQsIDEyLCAxMywgMjQ1LCAzLCAxMiwgMTMsIDI0NSwgMiwgMTIsIAotICAgIDEzLCAyNDUsIDEsIDEyLCAxMywgMjQ1LCAwLCAxMiwgMTMsIDI0NCwgMjU1LCAxMiwgMTMsIDI0NCwgMjU0LCAxMiwgMTMsIAotICAgIDI0NCwgMjUzLCAxMiwgMTMsIDI0NCwgMjUyLCAxMiwgMTMsIDI0NCwgMjUxLCAxMiwgMTMsIDI0NCwgMjUwLCAxMiwgMTMsIAotICAgIDI0NCwgMjQ5LCAxMiwgMTMsIDI0NCwgMjQ4LCAxMiwgMTMsIDI0NCwgMjQ3LCAxMiwgMTMsIDI0NCwgMjQ2LCAxMiwgMTMsIAotICAgIDI0NCwgMjQ1LCAxMiwgMTMsIDI0NCwgMjQ0LCAxMiwgMTMsIDI0NCwgMjQzLCAxMiwgMTMsIDI0NCwgMjQyLCAxMiwgMTMsIAotICAgIDI0NCwgMjQxLCAxMiwgMTMsIDI0NCwgMjQwLCAxMiwgMTMsIDI0NCwgMjM5LCAxMiwgMTMsIDI0NCwgMjM4LCAxMiwgMTMsIAotICAgIDI0NCwgMjM3LCAxMiwgMTMsIDI0NCwgMjM2LCAxMiwgMTMsIDI0NCwgMjM1LCAxMiwgMTMsIDI0NCwgMjM0LCAxMiwgMTMsIAotICAgIDI0NCwgMjMzLCAxMiwgMTMsIDI0NCwgMjMyLCAxMiwgMTMsIDI0NCwgMjMxLCAxMiwgMTMsIDI0NCwgMjMwLCAxMiwgMTMsIAotICAgIDI0NCwgMjI5LCAxMiwgMTMsIDI0NCwgMjI4LCAxMiwgMTMsIDI0NCwgMjI3LCAxMiwgMTMsIDI0NCwgMjI2LCAxMiwgMTMsIAotICAgIDI0NCwgMjI1LCAxMiwgMTMsIDI0NCwgMjI0LCAxMiwgMTMsIDI0NCwgMjIzLCAxMiwgMTMsIDI0NCwgMjIyLCAxMiwgMTMsIAotICAgIDI0NCwgMjIxLCAxMiwgMTMsIDI0NCwgMjIwLCAxMiwgMTMsIDI0NCwgMjE5LCAxMiwgMTMsIDI0NCwgMjE4LCAxMiwgMTMsIAotICAgIDI0NCwgMjE3LCAxMiwgMTMsIDI0NCwgMjE2LCAxMiwgMTMsIDI0NCwgMjE1LCAxMiwgMTMsIDI0NCwgMjE0LCAxMiwgMTMsIAotICAgIDI0NCwgMjEzLCAxMiwgMTMsIDI0NCwgMjEyLCAxMiwgMTMsIDI0NCwgMjExLCAxMiwgMTMsIDI0NCwgMjEwLCAxMiwgMTMsIAotICAgIDI0NCwgMjA5LCAxMiwgMTMsIDI0NCwgMjA4LCAxMiwgMTMsIDI0NCwgMjA3LCAxMiwgMTMsIDI0NCwgMjA2LCAxMiwgMTMsIAotICAgIDI0NCwgMjA1LCAxMiwgMTMsIDI0MywgMjA4LCAxMiwgMTMsIDI0MywgMjA3LCAxMiwgMTMsIDI0MywgMjA2LCAxMiwgMTMsIAotICAgIDI0MywgMjA1LCAxMiwgMTMsIDI0MywgMjA0LCAxMiwgMTMsIDI0MywgMjAzLCAxMiwgMTMsIDI0MywgMjAyLCAxMiwgMTMsIAotICAgIDI0MywgMjAxLCAxMiwgMTMsIDI0MywgMjAwLCAxMiwgMTMsIDI0MywgMTk5LCAxMiwgMTMsIDI0MywgMTk4LCAxMiwgMTMsIAotICAgIDI0MywgMTk3LCAxMiwgMTMsIDI0MywgMTk2LCAxMiwgMTMsIDI0MywgMTk1LCAxMiwgMTMsIDI0MywgMTk0LCAxMiwgMTMsIAotICAgIDI0MywgMTkzLCAxMiwgMTMsIDI0MywgMTkyLCAxMiwgMTMsIDI0MywgMTkxLCAxMiwgMTMsIDI0MywgMTkwLCAxMiwgMTMsIAotICAgIDI0MywgMTg5LCAxMiwgMTMsIDI0MywgMTg4LCAxMiwgMTMsIDI0MywgMTg3LCAxMiwgMTMsIDI0MywgMTg2LCAxMiwgMTMsIAotICAgIDI0MywgMTg1LCAxMiwgMTMsIDI0MywgMTg0LCAxMiwgMTMsIDI0MywgMTgzLCAxMiwgMTMsIDI0MywgMTgyLCAxMiwgMTMsIAotICAgIDI0MywgMTgxLCAxMiwgMTMsIDI0MywgMTgwLCAxMiwgMTMsIDI0MywgMTc5LCAxMiwgMTMsIDI0MywgMTc4LCAxMiwgMTMsIAotICAgIDI0MywgMTc3LCAxMiwgMTMsIDI0MywgMTc2LCAxMiwgMTMsIDI0MywgMTc1LCAxMiwgMTMsIDI0MywgMTc0LCAxMiwgMTMsIAotICAgIDI0MywgMTczLCAxMiwgMTMsIDI0MywgMTcyLCAxMiwgMTMsIDI0MywgMTcxLCAxMiwgMTMsIDI0MywgMTcwLCAxMiwgMTMsIAotICAgIDI0MywgMTY5LCAxMiwgMTMsIDI0MywgMTY4LCAxMiwgMTMsIDI0MywgMTY3LCAxMiwgMTMsIDI0MywgMTY2LCAxMiwgMTMsIAotICAgIDI0MywgMTY1LCAxMiwgMTMsIDI0MywgMTY0LCAxMiwgMTMsIDI0MywgMTYzLCAxMiwgMTMsIDI0MywgMTYyLCAxMiwgMTMsIAotICAgIDI0MywgMTYxLCAxMiwgMTMsIDI0MywgMTYwLCAxMiwgMTMsIDI0MywgMTU5LCAxMiwgMTMsIDI0MywgMTU4LCAxMiwgMTMsIAotICAgIDI0MywgMTU3LCAxMiwgMTMsIDI0MywgMTU2LCAxMiwgMTMsIDI0MywgMTU1LCAxMiwgMTMsIDI0MywgMTU0LCAxMiwgMTMsIAotICAgIDI0MywgMTUzLCAxMiwgMTMsIDI0MywgMTUyLCAxMiwgMTMsIDI0MywgMTUxLCAxMiwgMTMsIDI0MywgMTUwLCAxMiwgMTMsIAotICAgIDI0MywgMTQ5LCAxMiwgMTMsIDI0MywgMTQ4LCAxMiwgMTMsIDI0MywgMTQ3LCAxMiwgMTMsIDI0MywgMTQ2LCAxMiwgMTMsIAotICAgIDI0MywgMTQ1LCAxMiwgMTMsIDI0MiwgNjUsIDEyLCAxMywgMjQyLCA2NCwgMTIsIDEzLCAyNDIsIDYzLCAxMiwgMTMsIDI0MiwgCi0gICAgNjIsIDEyLCAxMywgMjQyLCA2MSwgMTIsIDEzLCAyNDIsIDYwLCAxMiwgMTMsIDI0MiwgNTksIDEyLCAxMywgMjQyLCA1OCwgCi0gICAgMTIsIDEzLCAyNDIsIDU3LCAxMiwgMTMsIDI0MCwgMTQ1LCAxMiwgMTMsIDI0MCwgMTQ0LCAxMiwgMTMsIDI0MCwgMTQzLCAKLSAgICAxMiwgMTMsIDI0MCwgMTQyLCAxMiwgMTMsIDI0MCwgMTQxLCAxMiwgMTMsIDI0MCwgMTQwLCAxMiwgMTMsIDI0MCwgMTM5LCAKLSAgICAxMiwgMTMsIDI0MCwgMTM4LCAxMiwgMTMsIDI0MCwgMTM3LCAxMiwgMTMsIDI0MCwgMTM2LCAxMiwgMTMsIDI0MCwgMTM1LCAKLSAgICAxMiwgMTMsIDI0MCwgMTM0LCAxMiwgMTMsIDI0MCwgMTMzLCAxMiwgMTMsIDI0MCwgMTMyLCAxMiwgMTMsIDI0MCwgMTMxLCAKLSAgICAxMiwgMTMsIDI0MCwgMTMwLCAxMiwgMTMsIDI0MCwgMTI5LCAxMiwgMTMsIDI0MCwgMTI4LCAxMiwgMTMsIDI0MCwgMTI3LCAKLSAgICAxMiwgMTMsIDIzNSwgMjgsIDEyLCAxMywgMjM1LCAyNywgMTIsIDEzLCAyMzUsIDI2LCAxMiwgMTMsIDIzNSwgMjUsIDEyLCAKLSAgICAxMywgMjM1LCAyNCwgMTIsIDEzLCAyMzUsIDIzLCAxMiwgMTMsIDIzNSwgMjIsIDEyLCAxMywgMjM1LCAyMSwgMTIsIDEzLCAKLSAgICAyMzMsIDE1MiwgMTIsIDEzLCAyMzMsIDE1MSwgMTIsIDEzLCAyMzMsIDE1MCwgMTIsIDEzLCAyMzMsIDE0OSwgMTIsIDEzLCAKLSAgICAyMzMsIDE0OCwgMTIsIDEzLCAyMzMsIDE0NywgMTIsIDEzLCAyMzMsIDE0NiwgMTIsIDEzLCAyMzMsIDE0NSwgMTIsIDEzLCAKLSAgICAyMzMsIDE0NCwgMTIsIDEzLCAyMzMsIDE0MywgMTIsIDEzLCAyMzIsIDU0LCAxMiwgMTMsIDIzMiwgNTMsIDEyLCAxMywgCi0gICAgMjMyLCA1MiwgMTIsIDEzLCAyMzIsIDUxLCAxMiwgMTMsIDIzMiwgNTAsIDEyLCAxMywgMjMyLCA0OSwgMTIsIDEzLCAyMzIsIAotICAgIDQ4LCAxMiwgMTMsIDIzMiwgNDcsIDEyLCAxMywgMjMyLCA0NiwgMTIsIDEzLCAyMzIsIDQ1LCAxMiwgMTMsIDIzMiwgNDQsIAotICAgIDEyLCAxMywgMjMyLCA0MywgMTIsIDEzLCAyMzIsIDQyLCAxMiwgMTMsIDIzMiwgNDEsIDEyLCAxMywgMjMyLCA0MCwgMTIsIAotICAgIDEzLCAyMzIsIDM5LCAxMiwgMTMsIDIzMiwgMzgsIDEyLCAxMywgMjMyLCAzNywgMTIsIDEzLCAyMzIsIDM2LCAxMiwgMTMsIAotICAgIDIzMiwgMzUsIDEyLCAxMywgMjMyLCAzNCwgMTIsIDEzLCAyMzIsIDMzLCAxMiwgMTMsIDIzMiwgMzIsIDEyLCAxMywgMjMyLCAKLSAgICAzMSwgMTIsIDEzLCAyMzIsIDMwLCAxMiwgMTMsIDIzMiwgMjksIDEyLCAxMywgMjMyLCAyOCwgMTIsIDEzLCAyMzIsIDI3LCAKLSAgICAxMiwgMTMsIDIzMiwgMjYsIDEyLCAxMywgMjMyLCAyNSwgMTIsIDEzLCAyMzIsIDI0LCAxMiwgMTMsIDIzMiwgMjMsIDEyLCAKLSAgICAxMywgMjMyLCAyMiwgMTIsIDEzLCAyMzIsIDIxLCAxMiwgMTMsIDIzMiwgMjAsIDEyLCAxMywgMjMyLCAxOSwgMTIsIDEzLCAKLSAgICAyMzIsIDE4LCAxMiwgMTMsIDIzMiwgMTcsIDEyLCAxMywgMjMyLCAxNiwgMTIsIDEzLCAyMzIsIDE1LCAxMiwgMTMsIDIzMiwgCi0gICAgMTQsIDEyLCAxMywgMjMyLCAxMywgMTIsIDEzLCAyMzIsIDEyLCAxMiwgMTMsIDIzMiwgMTEsIDEyLCAxMywgMjMyLCAxMCwgCi0gICAgMTIsIDEzLCAyMzIsIDksIDEyLCAxMywgMjMyLCA4LCAxMiwgMTMsIDIzMiwgNywgMTIsIDEzLCAyMzIsIDYsIDEyLCAxMywgCi0gICAgMjMyLCA1LCAxMiwgMTMsIDIzMiwgNCwgMTIsIDEzLCAyMzIsIDMsIDEyLCAxMywgMjMyLCAyLCAxMiwgMTMsIDIzMiwgMSwgCi0gICAgMTIsIDEzLCAyMzIsIDAsIDEyLCAxMywgMjMxLCAyNTUsIDEyLCAxMywgMjMxLCAyNTQsIDEyLCAxMywgMjMxLCAyNTMsIDEyLCAKLSAgICAxMywgMjMxLCAyNTIsIDEyLCAxMywgMjMxLCAyNTEsIDEyLCAxMywgMjMxLCAyNTAsIDEyLCAxMywgMjMxLCAyNDksIDEyLCAKLSAgICAxMywgMjMxLCAyNDgsIDEyLCAxMywgMjMxLCAyNDcsIDEyLCAxMywgMjMxLCAyNDYsIDEyLCAxMywgMjMxLCAyNDUsIDEyLCAKLSAgICAxMywgMjMwLCAyNywgMTIsIDEzLCAyMzAsIDI2LCAxMiwgMTMsIDIzMCwgMjUsIDEyLCAxMywgMjMwLCAyNCwgMTIsIDEzLCAKLSAgICAyMzAsIDIzLCAxMiwgMTMsIDIzMCwgMjIsIDEyLCAxMywgMjMwLCAyMSwgMTIsIDEzLCAyMzAsIDIwLCAxMiwgMTMsIDIzMCwgCi0gICAgMTksIDEyLCAxMywgMjMwLCAxOCwgMTIsIDEzLCAyMzAsIDE3LCAxMiwgMTMsIDIzMCwgMTYsIDEyLCAxMywgMjMwLCAxNSwgCi0gICAgMTIsIDEzLCAyMzAsIDE0LCAxMiwgMTMsIDIzMCwgMTMsIDEyLCAxMywgMjMwLCAxMiwgMTIsIDEzLCAyMzAsIDExLCAxMiwgCi0gICAgMTMsIDIzMCwgMTAsIDEyLCAxMywgMjMwLCA5LCAxMiwgMTMsIDIzMCwgOCwgMTIsIDEzLCAyMzAsIDcsIDEyLCAxMywgMjMwLCAKLSAgICA2LCAxMiwgMTMsIDIzMCwgNSwgMTIsIDEzLCAyMzAsIDQsIDEyLCAxMywgMjMwLCAzLCAxMiwgMTMsIDIzMCwgMiwgMTIsIAotICAgIDEzLCAyMzAsIDEsIDEyLCAxMywgMjMwLCAwLCAxMiwgMTMsIDIyOSwgMjU1LCAxMiwgMTMsIDIyOSwgMjU0LCAxMiwgMTMsIAotICAgIDIyOSwgMjUzLCAxMiwgMTMsIDIyOSwgMjUyLCAxMiwgMTMsIDIyOSwgMjUxLCAxMiwgMTMsIDIyOSwgMjUwLCAxMiwgMTMsIAotICAgIDIyOSwgMjQ5LCAxMiwgMTMsIDIyOSwgMjQ4LCAxMiwgMTMsIDIyOSwgMjQ3LCAxMiwgMTMsIDIyOSwgMjQ2LCAxMiwgMTMsIAotICAgIDIyOSwgMjQ1LCAxMiwgMTMsIDIyOSwgMjQ0LCAxMiwgMTMsIDIyOSwgMjQzLCAxMiwgMTMsIDIyOSwgMjQyLCAxMiwgMTMsIAotICAgIDIyOSwgMjQxLCAxMiwgMTMsIDIyOSwgMjQwLCAxMiwgMTMsIDIyOSwgMjM5LCAxMiwgMTMsIDIyOSwgMjM4LCAxMiwgMTMsIAotICAgIDIyOSwgMjM3LCAxMiwgMTMsIDIyOSwgMjM2LCAxMiwgMTMsIDIyOSwgMjM1LCAxMiwgMTMsIDIyOCwgMTM5LCAxMiwgMTMsIAotICAgIDIyOCwgMTM4LCAxMiwgMTMsIDIyOCwgMTM3LCAxMiwgMTMsIDIyOCwgMTM2LCAxMiwgMTMsIDIyOCwgMTM1LCAxMiwgMTMsIAotICAgIDIyOCwgMTM0LCAxMiwgMTMsIDIyOCwgMTMzLCAxMiwgMTMsIDIyOCwgMTMyLCAxMiwgMTMsIDIyOCwgMTMxLCAxMiwgMTMsIAotICAgIDIyOCwgMTMwLCAxMiwgMTMsIDIyOCwgMTI5LCAxMiwgMTMsIDIyOCwgMTI4LCAxMiwgMTMsIDIyOCwgMTI3LCAxMiwgMTMsIAotICAgIDIyOCwgMTI2LCAxMiwgMTMsIDIyOCwgMTI1LCAxMiwgMTMsIDIyOCwgMTI0LCAxMiwgMTMsIDIyOCwgMTIzLCAxMiwgMTMsIAotICAgIDIyOCwgMTIyLCAxMiwgMTMsIDIyOCwgMTIxLCAxMiwgMTMsIDIyOCwgMTIwLCAxMiwgMTMsIDIyOCwgMTE5LCAxMiwgMTMsIAotICAgIDIyOCwgMTE4LCAxMiwgMTMsIDIyNywgMjQxLCAxMiwgMTMsIDIyNywgMjQwLCAxMiwgMTMsIDIyNywgMjM5LCAxMiwgMTMsIAotICAgIDIyNywgMjM4LCAxMiwgMTMsIDIyNywgMjM3LCAxMiwgMTMsIDIyNywgMjM2LCAxMiwgMTMsIDIyNywgMjM1LCAxMiwgMTMsIAotICAgIDIyNywgMjM0LCAxMiwgMTMsIDIyNywgMjMzLCAxMiwgMTMsIDIyNywgMjMyLCAxMiwgMTMsIDIyNywgMjMxLCAxMiwgMTMsIAotICAgIDIyNywgMjMwLCAxMiwgMTMsIDIyNywgMjI5LCAxMiwgMTMsIDIyNywgMjI4LCAxMiwgMTMsIDIyNywgMjI3LCAxMiwgMTMsIAotICAgIDIyNywgMjI2LCAxMiwgMTMsIDIyNywgMjI1LCAxMiwgMTMsIDIyNywgMjI0LCAxMiwgMTMsIDIyNywgMjIzLCAxMiwgMTMsIAotICAgIDIyNywgMjIyLCAxMiwgMTMsIDIyNywgMjIxLCAxMiwgMTMsIDIyNywgMjIwLCAxMiwgMTMsIDIyNywgMjE5LCAxMiwgMTMsIAotICAgIDIyNywgMjE4LCAxMiwgMTMsIDIyNywgMjE3LCAxMiwgMTMsIDIyNywgMjE2LCAxMiwgMTMsIDIyNywgODAsIDEyLCAxMywgCi0gICAgMjI3LCA3OSwgMTIsIDEzLCAyMjcsIDc4LCAxMiwgMTMsIDIyNywgNzcsIDEyLCAxMywgMjI3LCA3NiwgMTIsIDEzLCAyMjcsIAotICAgIDc1LCAxMiwgMTMsIDIyNywgNzQsIDEyLCAxMywgMjI3LCA3MywgMTIsIDEzLCAyMjcsIDcyLCAxMiwgMTMsIDIyNywgNzEsIAotICAgIDEyLCAxMywgMjI3LCA3MCwgMTIsIDEzLCAyMjcsIDY5LCAxMiwgMTMsIDIyNywgNjgsIDEyLCAxMywgMjI3LCA2NywgMTIsIAotICAgIDEzLCAyMjcsIDY2LCAxMiwgMTMsIDIyNywgNjUsIDEyLCAxMywgMjI3LCA2NCwgMTIsIDEzLCAyMjcsIDYzLCAxMiwgMTMsIAotICAgIDIyNywgNjIsIDEyLCAxMywgMjI3LCA2MSwgMTIsIDEzLCAyMjcsIDYwLCAxMiwgMTMsIDIyNywgNTksIDEyLCAxMywgMjI3LCAKLSAgICA1OCwgMTIsIDEzLCAyMjcsIDU3LCAxMiwgMTMsIDIyNywgNTYsIDEyLCAxMywgMjI3LCA1NSwgMTIsIDEzLCAyMjcsIDU0LCAKLSAgICAxMiwgMTMsIDIyNywgNTMsIDEyLCAxMywgMjI3LCA1MiwgMTIsIDEzLCAyMjcsIDUxLCAxMiwgMTMsIDIyNywgNTAsIDEyLCAKLSAgICAxMywgMjI3LCA0OSwgMTIsIDEzLCAyMjcsIDQ4LCAxMiwgMTMsIDIyNywgNDcsIDEyLCAxMywgMjI3LCA0NiwgMTIsIDEzLCAKLSAgICAyMjcsIDQ1LCAxMiwgMTMsIDIyNywgNDQsIDEyLCAxMywgMjI3LCA0MywgMTIsIDEzLCAyMjcsIDQyLCAxMiwgMTMsIDIyNywgCi0gICAgNDEsIDEyLCAxMywgMjI3LCA0MCwgMTIsIDEzLCAyMjcsIDM5LCAxMiwgMTMsIDIyNywgMzgsIDEyLCAxMywgMjI3LCAzNywgCi0gICAgMTIsIDEzLCAyMjcsIDM2LCAxMiwgMTMsIDIyNywgMzUsIDEyLCAxMywgMjI3LCAzNCwgMTIsIDEzLCAyMjcsIDMzLCAxMiwgCi0gICAgMTMsIDIyNywgMzIsIDEyLCAxMywgMjI3LCAzMSwgMTIsIDEzLCAyMjcsIDMwLCAxMiwgMTMsIDIyNywgMjksIDEyLCAxMywgCi0gICAgMjI3LCAyOCwgMTIsIDEzLCAyMjcsIDI3LCAxMiwgMTMsIDIyNywgMjYsIDEyLCAxMywgMjI3LCAyNSwgMTIsIDEzLCAyMjcsIAotICAgIDI0LCAxMiwgMTMsIDIyNywgMjMsIDEyLCAxMywgMjI3LCAyMiwgMTIsIDEzLCAyMjcsIDIxLCAxMiwgMTMsIDIyNywgMjAsIAotICAgIDEyLCAxMywgMjI3LCAxOSwgMTIsIDEzLCAyMjcsIDE4LCAxMiwgMTMsIDIyNywgMTcsIDEyLCAxMywgMjI3LCAxNiwgMTIsIAotICAgIDEzLCAyMjcsIDE1LCAxMiwgMTMsIDIyNywgMTQsIDEyLCAxMywgMjI3LCAxMywgMTIsIDEzLCAyMjcsIDEyLCAxMiwgMTMsIAotICAgIDIyNywgMTEsIDEyLCAxMywgMjI3LCAxMCwgMTIsIDEzLCAyMjcsIDksIDEyLCAxMywgMjI3LCA4LCAxMiwgMTMsIDIyNywgNywgCi0gICAgMTIsIDEzLCAyMjcsIDYsIDEyLCAxMywgMjI2LCAxMDgsIDEyLCAxMywgMjI2LCAxMDcsIDEyLCAxMywgMjI2LCAxMDYsIDEyLCAKLSAgICAxMywgMjI2LCAxMDUsIDEyLCAxMywgMjI2LCAxMDQsIDEyLCAxMywgMjI2LCAxMDMsIDEyLCAxMywgMjI2LCAxMDIsIDEyLCAKLSAgICAxMywgMjI2LCAxMDEsIDEyLCAxMywgMjI2LCAxMDAsIDEyLCAxMywgMjI2LCA5OSwgMTIsIDEzLCAyMjYsIDk4LCAxMiwgMTMsIAotICAgIDIyNiwgOTcsIDEyLCAxMywgMjI2LCA5NiwgMTIsIDEzLCAyMjQsIDk4LCAxMiwgMTMsIDIyNCwgOTcsIDEyLCAxMywgMjI0LCAKLSAgICA5NiwgMTIsIDEzLCAyMjQsIDk1LCAxMiwgMTMsIDIyNCwgOTQsIDEyLCAxMywgMjI0LCA5MywgMTIsIDEzLCAyMjQsIDkyLCAKLSAgICAxMiwgMTMsIDIyMywgMjI1LCAxMiwgMTMsIDIyMywgMjI0LCAxMiwgMTMsIDIyMywgMjIzLCAxMiwgMTMsIDIyMywgMjIyLCAKLSAgICAxMiwgMTMsIDIyMywgMjIxLCAxMiwgMTMsIDIyMywgMjIwLCAxMiwgMTMsIDIyMywgMjE5LCAxMiwgMTMsIDIyMywgMjE4LCAKLSAgICAxMiwgMTMsIDIyMywgMjE3LCAxMiwgMTMsIDIyMywgMjE2LCAxMiwgMTMsIDIyMywgMjE1LCAxMiwgMTMsIDIyMywgMjE0LCAKLSAgICAxMiwgMTMsIDIyMywgMjEzLCAxMiwgMTMsIDIyMywgMjEyLCAxMiwgMTMsIDIyMywgMjExLCAxMiwgMTMsIDIyMywgMjEwLCAKLSAgICAxMiwgMTMsIDIyMywgMjA5LCAxMiwgMTMsIDIyMywgMjA4LCAxMiwgMTMsIDIyMywgMjA3LCAxMiwgMTMsIDIyMywgMjA2LCAKLSAgICAxMiwgMTMsIDIyMywgMjA1LCAxMiwgMTMsIDIyMywgMjA0LCAxMiwgMTMsIDIyMywgMjAzLCAxMiwgMTMsIDIyMywgMjAyLCAKLSAgICAxMiwgMTMsIDIyMywgMjAxLCAxMiwgMTMsIDIyMywgMjAwLCAxMiwgMTMsIDIyMywgMTk5LCAxMiwgMTMsIDIyMywgMTk4LCAKLSAgICAxMiwgMTMsIDIyMywgMTk3LCAxMiwgMTMsIDIyMywgMTk2LCAxMiwgMTMsIDIyMywgMTk1LCAxMiwgMTMsIDIyMywgMTk0LCAKLSAgICAxMiwgMTMsIDIyMywgMTkzLCAxMiwgMTMsIDIyMywgMTkyLCAxMiwgMTMsIDIyMiwgOTAsIDEyLCAxMywgMjIyLCA4OSwgMTIsIAotICAgIDEzLCAyMjIsIDg4LCAxMiwgMTMsIDIyMiwgODcsIDEyLCAxMywgMjIyLCA4NiwgMTIsIDEzLCAyMjIsIDg1LCAxMiwgMTMsIAotICAgIDIyMiwgODQsIDEyLCAxMywgMjIyLCA4MywgMTIsIDEzLCAyMjIsIDgyLCAxMiwgMTMsIDIyMiwgODEsIDEyLCAxMywgMjIyLCAKLSAgICA4MCwgMTIsIDEzLCAyMjIsIDc5LCAxMiwgMTMsIDIyMiwgNzgsIDEyLCAxMywgMjIyLCA3NywgMTIsIDEzLCAyMjIsIDc2LCAKLSAgICAxMiwgMTMsIDIyMiwgNzUsIDEyLCAxMywgMjIyLCA3NCwgMTIsIDEzLCAyMjIsIDczLCAxMiwgMTMsIDIyMiwgNzIsIDEyLCAKLSAgICAxMywgMjIyLCA3MSwgMTIsIDEzLCAyMjIsIDcwLCAxMiwgMTMsIDIyMiwgNjksIDEyLCAxMywgMjIyLCA2OCwgMTIsIDEzLCAKLSAgICAyMjIsIDY3LCAxMiwgMTMsIDIyMiwgNjYsIDEyLCAxMywgMjIyLCA2NSwgMTIsIDEzLCAyMjIsIDY0LCAxMiwgMTMsIDIyMiwgCi0gICAgNjMsIDEyLCAxMywgMjIyLCA2MiwgMTIsIDEzLCAyMjIsIDYxLCAxMiwgMTMsIDIyMiwgNjAsIDEyLCAxMywgMjIyLCA1OSwgCi0gICAgMTIsIDEzLCAyMjIsIDU4LCAxMiwgMTMsIDIyMiwgNTcsIDEyLCAxMywgMjIyLCA1NiwgMTIsIDEzLCAyMjIsIDU1LCAxMiwgCi0gICAgMTMsIDIyMiwgNTQsIDEyLCAxMywgMjIyLCA1MywgMTIsIDEzLCAyMjIsIDUyLCAxMiwgMTMsIDIyMiwgNTEsIDEyLCAxMywgCi0gICAgMjIyLCA1MCwgMTIsIDEzLCAyMjIsIDQ5LCAxMiwgMTMsIDIyMiwgNDgsIDEyLCAxMywgMjIyLCA0NywgMTIsIDEzLCAyMjIsIAotICAgIDQ2LCAxMiwgMTMsIDIyMiwgNDUsIDEyLCAxMywgMjIyLCA0NCwgMTIsIDEzLCAyMjIsIDQzLCAxMiwgMTMsIDIyMiwgNDIsIAotICAgIDEyLCAxMywgMjIyLCA0MSwgMTIsIDEzLCAyMjIsIDQwLCAxMiwgMTMsIDIyMiwgMzksIDEyLCAxMywgMjIyLCAzOCwgMTIsIAotICAgIDEzLCAyMjIsIDM3LCAxMiwgMTMsIDIxNywgMTUxLCAxMiwgMTMsIDIxNywgMTUwLCAxMiwgMTMsIDIxNywgMTQ5LCAxMiwgCi0gICAgMTMsIDIxNywgMTQ4LCAxMiwgMTMsIDIxNywgMTQ3LCAxMiwgMTMsIDIxNywgMTQ2LCAxMiwgMTMsIDIxNywgMTQ1LCAxMiwgCi0gICAgMTMsIDIxNywgMTQ0LCAxMiwgMTMsIDIxNywgMTQzLCAxMiwgMTMsIDIxNywgMTQyLCAxMiwgMTMsIDIxNywgMTQxLCAxMiwgCi0gICAgMTMsIDIxNywgMTQwLCAxMiwgMTMsIDIxNywgMTM5LCAxMiwgMTMsIDIxNywgMTM4LCAxMiwgMTMsIDIxNywgMTM3LCAxMiwgCi0gICAgMTMsIDIxNywgMTM2LCAxMiwgMTMsIDIxNywgMTM1LCAxMiwgMTMsIDIxNywgMTM0LCAxMiwgMTMsIDIxNywgMTMzLCAxMiwgCi0gICAgMTMsIDIxNywgMTMyLCAxMiwgMTMsIDIxNywgMTMxLCAxMiwgMTMsIDIxNywgMTMwLCAxMiwgMTMsIDIxNywgMTI5LCAxMiwgCi0gICAgMTMsIDIxNywgMTI4LCAxMiwgMTMsIDIxNywgMTI3LCAxMiwgMTMsIDIxNywgMTI2LCAxMiwgMTMsIDIxNywgMTI1LCAxMiwgCi0gICAgMTMsIDIxNywgMTI0LCAxMiwgMTMsIDIxNywgMTIzLCAxMiwgMTMsIDIxNywgMTIyLCAxMiwgMTMsIDIxNywgMTIxLCAxMiwgCi0gICAgMTMsIDIxNywgMTIwLCAxMiwgMTMsIDIxNywgMTE5LCAxMiwgMTMsIDIxNywgMTE4LCAxMiwgMTMsIDIxNywgMTE3LCAxMiwgCi0gICAgMTMsIDIxNywgMTE2LCAxMiwgMTMsIDIxNywgMTE1LCAxMiwgMTMsIDIxNywgMTE0LCAxMiwgMTMsIDIxNywgMTEzLCAxMiwgCi0gICAgMTMsIDIxNywgMTEyLCAxMiwgMTMsIDIxNywgMTExLCAxMiwgMTMsIDIxNywgMTEwLCAxMiwgMTMsIDIxNywgMTA5LCAxMiwgCi0gICAgMTMsIDIxNywgMTA4LCAxMiwgMTMsIDIxNSwgMjIsIDEyLCAxMywgMjE1LCAyMSwgMTIsIDEzLCAyMTUsIDIwLCAxMiwgMTMsIAotICAgIDIxNSwgMTksIDEyLCAxMywgMjE1LCAxOCwgMTIsIDEzLCAyMTUsIDE3LCAxMiwgMTMsIDIxNSwgMTYsIDEyLCAxMywgMjE1LCAKLSAgICAxNSwgMTIsIDEzLCAyMTUsIDE0LCAxMiwgMTMsIDIxNSwgMTMsIDEyLCAxMywgMjE1LCAxMiwgMTIsIDEzLCAyMTUsIDExLCAKLSAgICAxMiwgMTMsIDIxNSwgMTAsIDEyLCAxMywgMjE1LCA5LCAxMiwgMTMsIDIxNSwgOCwgMTIsIDEzLCAyMTUsIDcsIDEyLCAxMywgCi0gICAgMjE1LCA2LCAxMiwgMTMsIDIxNSwgNSwgMTIsIDEzLCAyMTUsIDQsIDEyLCAxMywgMjE1LCAzLCAxMiwgMTMsIDIxNSwgMiwgCi0gICAgMTIsIDEzLCAyMTUsIDEsIDEyLCAxMywgMjE1LCAwLCAxMiwgMTMsIDIxNCwgMjU1LCAxMiwgMTMsIDIxNCwgMjU0LCAxMiwgCi0gICAgMTMsIDIxNCwgMjUzLCAxMiwgMTMsIDIxNCwgMjUyLCAxMiwgMTMsIDIxNCwgMjUxLCAxMiwgMTMsIDIxNCwgMjUwLCAxMiwgCi0gICAgMTMsIDIxNCwgMjQ5LCAxMiwgMTMsIDIxNCwgMjQ4LCAxMiwgMTMsIDIxNCwgMjQ3LCAxMiwgMTMsIDIxNCwgMjQ2LCAxMiwgCi0gICAgMTMsIDIxNCwgMjQ1LCAxMiwgMTMsIDIxNCwgMjQ0LCAxMiwgMTMsIDIxNCwgMjQzLCAxMiwgMTMsIDIxNCwgMjQyLCAxMiwgCi0gICAgMTMsIDIxNCwgMjQxLCAxMiwgMTMsIDIxNCwgMjQwLCAxMiwgMTMsIDIxNCwgMjM5LCAxMiwgMTMsIDIxNCwgMjM4LCAxMiwgCi0gICAgMTMsIDIxNCwgMjM3LCAxMiwgMTMsIDIxNCwgMjM2LCAxMiwgMTMsIDIxNCwgMjM1LCAxMiwgMTMsIDIxNCwgMjM0LCAxMiwgCi0gICAgMTMsIDIxNCwgMjMzLCAxMiwgMTMsIDIxNCwgMjMyLCAxMiwgMTMsIDIxNCwgMTA0LCAxMiwgMTMsIDIxNCwgMTAzLCAxMiwgCi0gICAgMTMsIDIxNCwgMTAyLCAxMiwgMTMsIDIxNCwgMTAxLCAxMiwgMTMsIDIxNCwgMTAwLCAxMiwgMTMsIDIxNCwgOTksIDEyLCAKLSAgICAxMywgMjE0LCA5OCwgMTIsIDEzLCAyMTQsIDk3LCAxMiwgMTMsIDIxNCwgOTYsIDEyLCAxMywgMjE0LCA5NSwgMTIsIDEzLCAKLSAgICAyMTQsIDk0LCAxMiwgMTMsIDIxNCwgOTMsIDEyLCAxMywgMjE0LCA5MiwgMTIsIDEzLCAyMTQsIDkxLCAxMiwgMTMsIDIxNCwgCi0gICAgOTAsIDEyLCAxMywgMjE0LCA4OSwgMTIsIDEzLCAyMTQsIDg4LCAxMiwgMTMsIDIxNCwgODcsIDEyLCAxMywgMjE0LCA4NiwgCi0gICAgMTIsIDEzLCAyMTQsIDg1LCAxMiwgMTMsIDIxNCwgODQsIDEyLCAxMywgMjE0LCA4MywgMTIsIDEzLCAyMTQsIDgyLCAxMiwgCi0gICAgMTMsIDIxNCwgODEsIDEyLCAxMywgMjE0LCA4MCwgMTIsIDEzLCAyMTQsIDc5LCAxMiwgMTMsIDIxNCwgNzgsIDEyLCAxMywgCi0gICAgMjE0LCA3NywgMTIsIDEzLCAyMTQsIDc2LCAxMiwgMTMsIDIxNCwgNzUsIDEyLCAxMywgMjE0LCA3NCwgMTIsIDEzLCAyMTQsIAotICAgIDczLCAxMiwgMTMsIDIxNCwgNzIsIDEyLCAxMywgMjE0LCA3MSwgMTIsIDEzLCAyMTQsIDcwLCAxMiwgMTMsIDIxNCwgNjksIAotICAgIDEyLCAxMywgMjE0LCA2OCwgMTIsIDEzLCAyMTQsIDY3LCAxMiwgMTMsIDIxNCwgNjYsIDEyLCAxMywgMjE0LCA2NSwgMTIsIAotICAgIDEzLCAyMTQsIDY0LCAxMiwgMTMsIDIxNCwgNjMsIDEyLCAxMywgMjE0LCA2MiwgMTIsIDEzLCAyMTQsIDYxLCAxMiwgMTMsIAotICAgIDIxNCwgNjAsIDEyLCAxMywgMjE0LCA1OSwgMTIsIDEzLCAyMTQsIDU4LCAxMiwgMTMsIDIxNCwgNTcsIDEyLCAxMywgMjE0LCAKLSAgICA1NiwgMTIsIDEzLCAyMTQsIDU1LCAxMiwgMTMsIDIxNCwgNTQsIDEyLCAxMywgMjE0LCA1MywgMTIsIDEzLCAyMTQsIDUyLCAKLSAgICAxMiwgMTMsIDIxNCwgNTEsIDEyLCAxMywgMjE0LCA1MCwgMTIsIDEzLCAyMTQsIDQ5LCAxMiwgMTMsIDIxNCwgNDgsIDEyLCAKLSAgICAxMywgMjE0LCA0NywgMTIsIDEzLCAyMTQsIDQ2LCAxMiwgMTMsIDIxNCwgNDUsIDEyLCAxMywgMjE0LCA0NCwgMTIsIDEzLCAKLSAgICAyMTQsIDQzLCAxMiwgMTMsIDIxNCwgNDIsIDEyLCAxMywgMjE0LCA0MSwgMTIsIDEzLCAyMTQsIDQwLCAxMiwgMTMsIDIxNCwgCi0gICAgMzksIDEyLCAxMywgMjE0LCAzOCwgMTIsIDEzLCAyMTQsIDM3LCAxMiwgMTMsIDIxNCwgMzYsIDEyLCAxMywgMjE0LCAzNSwgCi0gICAgMTIsIDEzLCAyMTQsIDM0LCAxMiwgMTMsIDIxNCwgMzMsIDEyLCAxMywgMjE0LCAzMiwgMTIsIDEzLCAyMTQsIDMxLCAxMiwgCi0gICAgMTMsIDIxNCwgMzAsIDEyLCAxMywgMjE0LCAyOSwgMTIsIDEzLCAyMTQsIDI4LCAxMiwgMTMsIDIxMiwgOTcsIDEyLCAxMywgCi0gICAgMjEyLCA5NiwgMTIsIDEzLCAyMTIsIDk1LCAxMiwgMTMsIDIxMiwgOTQsIDEyLCAxMywgMjEyLCA5MywgMTIsIDEzLCAyMTIsIAotICAgIDkyLCAxMiwgMTMsIDIxMiwgOTEsIDEyLCAxMywgMjEyLCA5MCwgMTIsIDEzLCAyMTIsIDg5LCAxMiwgMTMsIDIxMiwgODgsIAotICAgIDEyLCAxMywgMjEyLCA4NywgMTIsIDEzLCAyMTIsIDg2LCAxMiwgMTMsIDIxMiwgODUsIDEyLCAxMywgMjEyLCA4NCwgMTIsIAotICAgIDEzLCAyMTIsIDgzLCAxMiwgMTMsIDIxMiwgODIsIDEyLCAxMywgMjEyLCA4MSwgMTIsIDEzLCAyMTIsIDgwLCAxMiwgMTMsIAotICAgIDIxMiwgNzksIDEyLCAxMywgMjEyLCA3OCwgMTIsIDEzLCAyMTIsIDc3LCAxMiwgMTMsIDIxMiwgNzYsIDEyLCAxMywgMjEyLCAKLSAgICA3NSwgMTIsIDEzLCAyMTIsIDc0LCAxMiwgMTMsIDIxMiwgNzMsIDEyLCAxMywgMjEyLCA3MiwgMTIsIDEzLCAyMTIsIDcxLCAKLSAgICAxMiwgMTMsIDIxMiwgNzAsIDEyLCAxMywgMjEyLCA2OSwgMTIsIDEzLCAyMTIsIDY4LCAxMiwgMTMsIDIxMiwgNjcsIDEyLCAKLSAgICAxMywgMjEyLCA2NiwgMTIsIDEzLCAyMTEsIDE3NywgMTIsIDEzLCAyMTEsIDE3NiwgMTIsIDEzLCAyMTEsIDE3NSwgMTIsIAotICAgIDEzLCAyMTEsIDE3NCwgMTIsIDEzLCAyMTEsIDE3MywgMTIsIDEzLCAyMTEsIDE3MiwgMTIsIDEzLCAyMTEsIDE3MSwgMTIsIAotICAgIDEzLCAyMTEsIDE3MCwgMTIsIDEzLCAyMTEsIDE2OSwgMTIsIDEzLCAyMTEsIDE2OCwgMTIsIDEzLCAyMTEsIDE2NywgMTIsIAotICAgIDEzLCAyMTEsIDE2NiwgMTIsIDEzLCAyMTEsIDExNSwgMTIsIDEzLCAyMTEsIDExNCwgMTIsIDEzLCAyMTEsIDExMywgMTIsIAotICAgIDEzLCAyMTEsIDExMiwgMTIsIDEzLCAyMTEsIDExMSwgMTIsIDEzLCAyMTEsIDExMCwgMTIsIDEzLCAyMTEsIDEwOSwgMTIsIAotICAgIDEzLCAyMTEsIDEwOCwgMTIsIDEzLCAyMTEsIDEwNywgMTIsIDEzLCAyMTAsIDE1OCwgMTIsIDEzLCAyMTAsIDE1NywgMTIsIAotICAgIDEzLCAyMTAsIDE1NiwgMTIsIDEzLCAyMTAsIDE1NSwgMTIsIDEzLCAyMTAsIDE1NCwgMTIsIDEzLCAyMTAsIDE1MywgMTIsIAotICAgIDEzLCAyMTAsIDE1MiwgMTIsIDEzLCAyMTAsIDE1MSwgMTIsIDEzLCAyMTAsIDE1MCwgMTIsIDEzLCAyMTAsIDE0OSwgMTIsIAotICAgIDEzLCAyMTAsIDE0OCwgMTIsIDEzLCAyMTAsIDE0NywgMTIsIDEzLCAyMTAsIDE0NiwgMTIsIDEzLCAyMTAsIDE0NSwgMTIsIAotICAgIDEzLCAyMTAsIDE0NCwgMTIsIDEzLCAyMTAsIDE0MywgMTIsIDEzLCAyMTAsIDE0MiwgMTIsIDEzLCAyMTAsIDE0MSwgMTIsIAotICAgIDEzLCAyMTAsIDE0MCwgMTIsIDEzLCAyMTAsIDEzOSwgMTIsIDEzLCAyMTAsIDEzOCwgMTIsIDEzLCAyMTAsIDEzNywgMTIsIAotICAgIDEzLCAyMTAsIDEzNiwgMTIsIDEzLCAyMTAsIDEzNSwgMTIsIDEzLCAyMTAsIDEzNCwgMTIsIDEzLCAyMTAsIDEzMywgMTIsIAotICAgIDEzLCAyMTAsIDEzMiwgMTIsIDEzLCAyMTAsIDEzMSwgMTIsIDEzLCAyMTAsIDEzMCwgMTIsIDEzLCAyMTAsIDEyOSwgMTIsIAotICAgIDEzLCAyMTAsIDEyOCwgMTIsIDEzLCAyMTAsIDEyNywgMTIsIDEzLCAyMTAsIDEyNiwgMTIsIDEzLCAyMTAsIDEyNSwgMTIsIAotICAgIDEzLCAyMTAsIDEyNCwgMTIsIDEzLCAyMTAsIDEyMywgMTIsIDEzLCAyMTAsIDEyMiwgMTIsIDEzLCAyMTAsIDEyMSwgMTIsIAotICAgIDEzLCAyMTAsIDEyMCwgMTIsIDEzLCAyMTAsIDExOSwgMTIsIDEzLCAyMTAsIDExOCwgMTIsIDEzLCAyNTUsIDgxLCAxMiwgCi0gICAgMTMsIDI1NSwgODAsIDEyLCAxMywgMjU1LCA3OSwgMTIsIDEzLCAyNTUsIDc4LCAxMiwgMTMsIDI1NSwgNzcsIDEyLCAxMywgCi0gICAgMjU1LCA3NiwgMTIsIDEzLCAyNTUsIDc1LCAxMiwgMTMsIDI1NSwgNzQsIDEyLCAxMywgMjU1LCA3MywgMTIsIDEzLCAyNTUsIAotICAgIDcyLCAxMiwgMTMsIDI1NSwgNzEsIDEyLCAxMywgMjU1LCA3MCwgMTIsIDEzLCAyNTUsIDY5LCAxMiwgMTMsIDI1NSwgNjgsIAotICAgIDEyLCAxMywgMjU1LCA2NywgMTIsIDEzLCAyNTUsIDY2LCAxMiwgMTMsIDI1NSwgNjUsIDEyLCAxMywgMjU1LCA2NCwgMTIsIAotICAgIDEzLCAyNTUsIDYzLCAxMiwgMTMsIDI1NSwgNjIsIDEyLCAxMywgMjU1LCA2MSwgMTIsIDEzLCAyNTUsIDYwLCAxMiwgMTMsIAotICAgIDI1NSwgNTksIDEyLCAxMywgMjU1LCA1OCwgMTIsIDEzLCAyNTUsIDU3LCAxMiwgMTMsIDI1NSwgNTYsIDEyLCAxMywgMjU1LCAKLSAgICA1NSwgMTIsIDEzLCAyNTUsIDU0LCAxMiwgMTMsIDI1NSwgNTMsIDEyLCAxMywgMjU1LCA1MiwgMTIsIDEzLCAyNTUsIDUxLCAKLSAgICAxMiwgMTMsIDI1NSwgNTAsIDEyLCAxMywgMjU1LCA0OSwgMTIsIDEzLCAyNTUsIDQ4LCAyMCwgMSwgMTY3LCAyMjksIDE3LCAKLSAgICAyMzEsIDIxLCAyMCwgMSwgMTY3LCAyNDMsIDc3LCAyNDQsIDQ0LCAyMCwgMSwgMTY3LCAyMjQsIDI1NCwgMjMxLCAyMiwgCi0gICAgMjI1LCA2MCwgMjAsIDEsIDE2NywgMjI0LCAyNTQsIDIzMSwgMjIsIDIyNSwgNjEsIDIwLCAxLCAxNjcsIDIyOSwgMjMxLCAKLSAgICAyMzEsIDIxLCAyMCwgMSwgMTY3LCAyMTksIDIyMywgMjAsIDEsIDE2NywgMjE2LCA2NywgMjMxLCAyMSwgMjAsIDEsIDE2NywgCi0gICAgMjI3LCAxMjIsIDIzMSwgMjEsIDIwLCAxLCAxNjcsIDIyMCwgMjEsIDIyNiwgOTQsIDIyOCwgMTc0LCAyMCwgMSwgMTY3LCAKLSAgICAyMjQsIDI1NCwgMjI2LCA5NCwgMjI4LCAxNzUsIDIyNSwgNjAsIDIwLCAxLCAxNjcsIDIyNCwgMjU0LCAyMjYsIDk0LCAyMjgsIAotICAgIDE3NSwgMjI1LCA2MSwgMjAsIDEsIDE2NywgMjMxLCAyMjMsIDIwLCAxLCAxNjcsIDIxNSwgMTIwLCAyMzEsIDIyNCwgMjAsIAotICAgIDEsIDE2NywgMjI5LCA3NiwgMjAsIDEsIDE2NywgMjMxLCAyMjAsIDIwLCAxLCAxNjcsIDIzMSwgMTgxLCAyMCwgMSwgMTY3LCAKLSAgICAyMzAsIDUzLCAyMCwgMSwgMTY3LCAyMjAsIDEyNiwgMjAsIDEsIDE2NywgMjI3LCAyNDYsIDIwLCAxLCAxNjcsIDIzNCwgCi0gICAgMTU1LCAyMCwgMSwgMTY3LCAyMjgsIDE0MywgMjAsIDEsIDE2NywgMjE4LCA1LCAyMCwgMSwgMTY3LCAyMjksIDE2LCAyMCwgCi0gICAgMSwgMTY3LCAyMzMsIDkzLCAyMCwgMSwgMTY3LCAyMzMsIDE4LCAyMzMsIDE5NSwgMjAsIDEsIDE2NywgMjI3LCAyNTMsIAotICAgIDIzMSwgMjksIDIwLCAxLCAxNjcsIDIzMSwgMjI3LCAyMCwgMSwgMTY3LCAyMjUsIDI1MCwgMjAsIDEsIDE2NywgMjQyLCAKLSAgICAyMzgsIDIwLCAxLCAxNjcsIDIyNiwgNTQsIDIwLCAxLCAxNjcsIDIzMCwgMTU2LCAyMjksIDUwLCAyMCwgMSwgMTY3LCAyMjcsIAotICAgIDEwMywgMjMxLCAzMiwgMjAsIDEsIDE2NywgMTA0LCAyMTAsIDE4OCwgMjI5LCAyMjUsIDIwLCAxLCAxNjcsIDI0MiwgMjM5LCAKLSAgICAyMCwgMSwgMTY3LCAyMjcsIDI1MywgMjI3LCAyNTQsIDIwLCAxLCAxNjcsIDIxOSwgMTMwLCAyMCwgMSwgMTY3LCAyMzEsIAotICAgIDE0LCAyMCwgMSwgMTY3LCAyMzEsIDM1LCAyMCwgMSwgMTY3LCAyMzAsIDEzNSwgMjAsIDEsIDE2NywgMjM0LCAyNTUsIDIwLCAKLSAgICAxLCAxNjcsIDIyNiwgOTQsIDIzMywgNTMsIDIwLCAxLCAxNjcsIDIyOSwgMTU0LCAyMzMsIDUzLCAyMCwgMSwgMTY3LCAyMjUsIAotICAgIDE2MSwgMjAsIDEsIDE2NywgMjMxLCAyMjEsIDIwLCAxLCAxNjcsIDIyOCwgMjEyLCAyMCwgMSwgMTY3LCAyMjQsIDEzNywgCi0gICAgMjAsIDEsIDE2NywgMjE1LCAxMTcsIDIwLCAxLCAxNjcsIDIzMiwgOTksIDIwLCAxLCAxNjcsIDIxOSwgNDMsIDIwLCAxLCAKLSAgICAxNjcsIDIxNiwgMjE3LCAyMCwgMSwgMTY3LCAyMzEsIDIxOCwgMjAsIDEsIDE2NywgMjM0LCAxNjIsIDIwLCAxLCAxNjcsIAotICAgIDIyOSwgMTUwLCAyMCwgMSwgMTY3LCAyMzMsIDIwNywgMjAsIDEsIDE2NywgMjMwLCAxMzYsIDIwLCAxLCAxNjcsIDIxOSwgCi0gICAgMjIwLCAyMCwgMSwgMTY3LCAyMzIsIDE0NCwgMjAsIDEsIDE2NywgMjQ0LCAxMDEsIDIwLCAxLCAxNjcsIDIyMiwgMjAxLCAKLSAgICAyMCwgMSwgMTY3LCAyMzMsIDI0NywgMjAsIDEsIDE2NywgMjE5LCAzOSwgMjAsIDEsIDE2NywgMjMxLCAxNzgsIDIyNSwgCi0gICAgMTAyLCAyMCwgMSwgMTY3LCAyMjAsIDE0LCAyMCwgMSwgMTY3LCAyMjcsIDI1MiwgMjAsIDEsIDE2NywgMjE5LCAyNTUsIAotICAgIDIyOCwgNywgMjEwLCAxOTYsIDIwLCAxLCAxNjcsIDIyNywgMTQyLCAyMzAsIDE1MywgMjAsIDEsIDE2NywgMjI2LCA4OSwgCi0gICAgMjAsIDEsIDE2NywgMjI4LCAxNDQsIDIwLCAxLCAxNjcsIDIxNCwgMTcwLCAyMCwgMSwgMTY3LCAyMjksIDUzLCAyMCwgMSwgCi0gICAgMTY3LCAyMzEsIDIxNywgMjAsIDEsIDE2NywgMjI4LCAxODYsIDIwLCAxLCAxNjcsIDIzMSwgMTI0LCAyMCwgMSwgMTY3LCAKLSAgICAyMjcsIDE1NSwgMjAsIDEsIDE2NywgMjE2LCAyMjEsIDIwLCAxLCAxNjcsIDIxOSwgMzYsIDIwLCAxLCAxNjcsIDIyNiwgOTAsIAotICAgIDIwLCAxLCAxNjcsIDIyOCwgMTEsIDIwLCAxLCAxNjcsIDIzMSwgMjI1LCAyMCwgMSwgMTY3LCAyMjcsIDE1MiwgMjAsIDEsIAotICAgIDE2NywgMjM0LCAyMjIsIDIwLCAxLCAxNjcsIDIyOCwgMTQsIDIwLCAxLCAxNjcsIDIxMywgMjUwLCAyMCwgMSwgMTY3LCAKLSAgICAyMzIsIDEwMywgMjAsIDEsIDE2NywgMjI5LCAxMDMsIDIwLCAxLCAxNjcsIDIyOSwgMjAxLCAyMCwgMSwgMTY3LCAyMzEsIAotICAgIDEyMywgMjAsIDEsIDIyNSwgMTQxLCAyMjgsIDksIDIwLCAxLCAyMjUsIDE0MSwgMjE1LCAxMjAsIDIzMSwgMjIyLCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIxOSwgMTg3LCAyMCwgMSwgMjI1LCAxNDEsIDIyMCwgMTMwLCAyMTUsIDExOSwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMzIsIDE0NiwgMjI3LCAyNDksIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMzAsIDIzMSwgMjI2LCAyMCwgMSwgMjI1LCAxNDEsIAotICAgIDIzNCwgOTMsIDIwLCAxLCAyMjUsIDE0MSwgMjExLCAxNSwgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDEyNSwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzQsIDI0MywgMjAsIDEsIDIyNSwgMTQxLCAyMjUsIDIxMSwgMjAsIDEsIDIyNSwgMTQxLCAyMTEsIDg5LCAyMzMsIAotICAgIDUzLCAyMCwgMSwgMjI1LCAxNDEsIDIzMywgMTA5LCAyMjgsIDcsIDIyNywgMTY0LCAyMCwgMSwgMjI1LCAxNDEsIDIyNywgCi0gICAgMjQ3LCAyMjAsIDQwLCAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgMTIxLCAyMjgsIDE4OSwgMjAsIDEsIDIyNSwgMTQxLCAyNDIsIAotICAgIDIzNiwgMjAsIDEsIDIyNSwgMTQxLCAyMjUsIDUyLCAyMCwgMSwgMjI1LCAxNDEsIDIxNSwgMTIwLCAyMjgsIDUsIDIwLCAxLCAKLSAgICAyMjUsIDE0MSwgMjIwLCA0NSwgMjI4LCAxODQsIDIwLCAxLCAyMjUsIDE0MSwgMjIwLCA0MSwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMzEsIDIyLCAyMTYsIDIyMCwgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDExMiwgMjMxLCAxMjYsIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjI3LCAxNTMsIDIyNywgMjQ5LCAyMCwgMSwgMjI1LCAxNDEsIDIzNCwgMTUxLCAyMCwgMSwgMjI1LCAxNDEsIDI0MiwgMjM3LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIzNCwgMTQ3LCAyMCwgMSwgMjI1LCAxNDEsIDIzMywgMTM1LCAyMCwgMSwgMjI1LCAxNDEsIAotICAgIDIyNSwgMjUzLCAyMCwgMSwgMjI1LCAxNDEsIDIxMywgMTgyLCAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgMTgsIDIzMCwgNTEsIAotICAgIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCA1MiwgMjMxLCAxMDgsIDIwLCAxLCAyMjUsIDE0MSwgMjExLCAxOTMsIDIwLCAxLCAKLSAgICAyMjUsIDE0MSwgMjIyLCAxMywgMjAsIDEsIDIyNSwgMTQxLCAyMTcsIDk4LCAyMCwgMSwgMjI1LCAxNDEsIDIzMSwgMzQsIAotICAgIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCAzNywgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDM4LCAyMzMsIDkwLCAyMCwgMSwgMjI1LCAKLSAgICAxNDEsIDIzMSwgMjQsIDIwLCAxLCAyMjUsIDE0MSwgMjE4LCA1MywgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDExNiwgMjAsIDEsIAotICAgIDIyNSwgMTQxLCAyMzAsIDEzOCwgMjAsIDEsIDIyNSwgMTQxLCAyMjcsIDE2NywgMjAsIDEsIDIyNSwgMTQxLCAyMjQsIDE0MSwgCi0gICAgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDMzLCAyMjksIDU0LCAyMCwgMSwgMjI1LCAxNDEsIDI0NCwgMTM0LCAyMCwgMSwgMjI1LCAKLSAgICAxNDEsIDIzMSwgMTAzLCAyMCwgMSwgMjI1LCAxNDEsIDI0NCwgMTU1LCAyMCwgMSwgMjI1LCAxNDEsIDIzNCwgMTU5LCAyMCwgCi0gICAgMSwgMjI1LCAxNDEsIDIzMSwgMjQ0LCAyMjgsIDE3OCwgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDI0NCwgMjI4LCAxNTQsIDIwLCAKLSAgICAxLCAyMjUsIDE0MSwgMjMzLCAxNywgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDYwLCAyMCwgMSwgMjI1LCAxNDEsIDIyOCwgMTYsIAotICAgIDIwLCAxLCAyMjUsIDE0MSwgMTg2LCAyMCwgMSwgMjI1LCAxNDEsIDIzNCwgODAsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCA2LCAKLSAgICAyMCwgMSwgMTM3LCAyMjksIDE3LCAyMzEsIDIyNCwgMjAsIDEsIDEzNywgMjI3LCAxMjEsIDIwLCAxLCAxMzcsIDIxMCwgCi0gICAgMTk2LCAyMCwgMSwgMTM3LCAyMTIsIDUzLCAyMCwgMSwgMTM3LCAyMjksIDUzLCAyMCwgMSwgMTM3LCAyMjksIDE0MiwgMjAsIAotICAgIDEsIDEzNywgMjI5LCAyNCwgMjAsIDEsIDEzNywgMjQyLCAyNDYsIDIwLCAxLCAxMzcsIDIzMSwgMTIwLCAyMCwgMSwgMTM3LCAKLSAgICAyNDMsIDg0LCAyMCwgMSwgMTM3LCAyMjcsIDE0NCwgMjMwLCAxNzUsIDIzMSwgMzYsIDIwLCAxLCAxMzcsIDIyNywgMjQ1LCAKLSAgICAyMzEsIDExMSwgMjAsIDEsIDEzNywgMjMxLCAxMTcsIDIwLCAxLCAxMzcsIDIyNSwgNTgsIDIwLCAxLCAxMzcsIDIyOSwgCi0gICAgMTI3LCAyMCwgMSwgMTM3LCAyMzEsIDEyOCwgMjUxLCAzNywgMjAsIDEsIDEzNywgMjM0LCAxNDksIDIwLCAxLCAxMzcsIAotICAgIDI0MiwgMjQ3LCAyMCwgMSwgMTM3LCAyMzQsIDE1NiwgMjAsIDEsIDEzNywgMjEwLCAyMTMsIDIzMCwgODEsIDIwLCAxLCAKLSAgICAxMzcsIDIyNywgMTE1LCAyMCwgMSwgMTM3LCAyMzEsIDEwNSwgMjAsIDEsIDEzNywgMjI4LCAxNSwgMjAsIDEsIDEzNywgCi0gICAgMjMxLCAxMTEsIDIwLCAxLCAxMzcsIDIxMSwgMTYsIDIwLCAxLCAxMzcsIDIzMywgMjU1LCAyMCwgMSwgMTM3LCAyMzUsIDE2LCAKLSAgICAyMCwgMSwgMTM3LCAyMjAsIDEyNSwgMjAsIDEsIDEzNywgMjI5LCAxMzYsIDIwLCAxLCAxMzcsIDIxNywgOTYsIDIwLCAxLCAKLSAgICAxMzcsIDIyOCwgMTU4LCAyMCwgMSwgMTM3LCAyMTYsIDY3LCAyMTAsIDE5OCwgMjAsIDEsIDEzNywgMjE4LCA4MCwgMjAsIDEsIAotICAgIDEzNywgMjI5LCA0NCwgMjI3LCAxNjQsIDIwLCAxLCAxMzcsIDIxMywgMTgxLCAyMCwgMSwgMTM3LCAyMjksIDIwNCwgMjAsIAotICAgIDEsIDEzNywgMjMxLCAyNDQsIDIzNCwgMTU4LCAyMCwgMSwgMTM3LCAyMjcsIDI1NCwgMjAsIDEsIDEzNywgMjI5LCAzOSwgCi0gICAgMjAsIDEsIDEzNywgMjMzLCA5NCwgMjAsIDEsIDEzNywgMjMxLCAxMTMsIDIwLCAxLCAxMzcsIDIzMSwgMTMsIDIwLCAxLCAKLSAgICAxMzcsIDIyNywgMjQ4LCAyMCwgMSwgMTM3LCAyMTYsIDIxNiwgMjAsIDEsIDEzNywgMjI5LCA0MSwgMjAsIDEsIDEzNywgCi0gICAgMjQzLCAyNDAsIDIwLCAxLCAxMzcsIDIyOSwgMTQxLCAyMCwgMSwgMTM3LCAyMjgsIDE3LCAyMCwgMSwgMTM3LCAyMjgsIDEzLCAKLSAgICAyMCwgMSwgMTM3LCAyNTEsIDExNSwgMjAsIDEsIDEzNywgMjEzLCAxODMsIDIwLCAxLCAxMzcsIDIzMSwgMTE4LCAyMCwgMSwgCi0gICAgMTM3LCAyMjIsIDE0MiwgMjAsIDEsIDEzNywgMjI4LCAxODgsIDIwLCAxLCAxMzcsIDIzMywgMTA4LCAyMCwgMSwgMTM3LCAKLSAgICAyMTYsIDY1LCAyMCwgMSwgMTM3LCAyMjcsIDI1NSwgMjI5LCA2LCAyMCwgMSwgMTM3LCAyMjgsIDE4MCwgMjAsIDEsIDEzNywgCi0gICAgMjM0LCAxNjIsIDIwLCAxLCAxMzcsIDIyOSwgNDUsIDIwLCAxLCAxMzcsIDIzMSwgMjE3LCAyMCwgMSwgMTM3LCAyMzEsIAotICAgIDEwNiwgMjAsIDEsIDEzNywgMjMyLCAxMDMsIDIwLCAxLCAxMzcsIDIzMywgMTk1LCAyMCwgMSwgMTM3LCAyMjgsIDE4NiwgCi0gICAgMjAsIDEsIDEzNywgMjI5LCA2LCAyMCwgMSwgMTM3LCAyMTEsIDE4NCwgMjAsIDEsIDEzNywgMjI5LCA0MiwgMjAsIDEsIAotICAgIDEzNywgMjI4LCAyLCAyMCwgMSwgMTM3LCAyMjcsIDI1MCwgMjAsIDEsIDEzNywgMjMzLCAyMDksIDIyOCwgMTQ0LCAyMCwgMSwgCi0gICAgMTM3LCAyMjgsIDAsIDIwLCAxLCAxMzcsIDIyOSwgMTQ5LCAyMCwgMSwgMTM3LCAyMzEsIDI0NCwgMjI4LCA1LCAyMCwgMSwgCi0gICAgMTM3LCAyMTEsIDEwMywgMjAsIDEsIDEzNywgMjI5LCAxNDgsIDIwLCAxLCAxMzcsIDIxOSwgMjIyLCAyMCwgMSwgMTM3LCAKLSAgICAyMjAsIDEyOCwgMjAsIDEsIDEzNywgMjMxLCAxMTQsIDIwLCAxLCAxMzcsIDIzMSwgMjI0LCAyMCwgMSwgMTM3LCAyMzEsIAotICAgIDEyNCwgMjAsIDEsIDEzNywgMjM0LCAxNTAsIDIwLCAxLCAxMzcsIDIzMSwgMTE1LCAyMCwgMSwgMTM3LCAyMzQsIDE1NCwgCi0gICAgMjAsIDEsIDEzNywgMjMxLCAxMjgsIDIyNSwgMTA2LCAyMCwgMSwgMTM3LCAyMTAsIDE3OSwgMjAsIDEsIDEzNywgMjI4LCAKLSAgICAxNzYsIDIwLCAxLCAxMzcsIDIzMCwgMjI1LCAyMCwgMSwgMTM3LCAyMzAsIDEwNSwgMjAsIDEsIDEzNywgMjIwLCAxNywgMjAsIAotICAgIDEsIDEzNywgMjM0LCAxNzIsIDIzMywgNzYsIDIwLCAxLCAxMzcsIDIzNCwgMTcyLCAyNDQsIDE2OCwgMjAsIDEsIDEzNywgCi0gICAgMjI5LCA3NCwgMjAsIDEsIDEzNywgMjI5LCAyMDEsIDIwLCAxLCAxMzcsIDIzMiwgMjA2LCAyMCwgMSwgMTM3LCAyMjUsIDY4LCAKLSAgICAyMCwgMSwgMTM3LCAyMjUsIDIwMiwgMjAsIDEsIDEzNywgMjE2LCAyMzEsIDIwLCAxLCAxMDcsIDIzMSwgMTA0LCAyMCwgMSwgCi0gICAgMTA3LCAyMTIsIDUxLCAyMCwgMSwgMTA3LCAyMjgsIDE3NCwgMjAsIDEsIDEwNywgMjMxLCAyMSwgMjAsIDEsIDEwNywgMjI4LCAKLSAgICAxNzIsIDIwLCAxLCAxMDcsIDIzMiwgMjQxLCAyMCwgMSwgMTA3LCAyMjgsIDE3NywgMjAsIDEsIDEwNywgMjI4LCAxMiwgMjAsIAotICAgIDEsIDEwNywgMjI5LCA1OSwgMjAsIDEsIDEwNywgMjI3LCAxNjQsIDIwLCAxLCAxMDcsIDIxMSwgMTk0LCAyMCwgMSwgMTA3LCAKLSAgICAyMjksIDE0LCAyMCwgMSwgMTA3LCAyMjAsIDYzLCAyMCwgMSwgMTA3LCAyMjksIDI1LCAyMCwgMSwgMTA3LCAyMzQsIDE1NywgCi0gICAgMjAsIDEsIDEwNywgMjE2LCAyMTgsIDIwLCAxLCAxMDcsIDIyMCwgNDMsIDIwLCAxLCAxMDcsIDIyOCwgMTg1LCAyMCwgMSwgCi0gICAgMTA3LCAyMTgsIDUzLCAyMCwgMSwgMTA3LCAyMzQsIDE2MiwgMjAsIDEsIDEwNywgMjExLCA5MSwgMjAsIDEsIDEwNywgMjMzLCAKLSAgICAyMTAsIDIwLCAxLCAxMDcsIDIyMSwgMjM2LCAyMCwgMSwgMTA3LCAyMzEsIDI2LCAyMCwgMSwgMTA3LCAyMjksIDE0MCwgMjAsIAotICAgIDEsIDEwNywgMjMxLCAxOTMsIDIwLCAxLCAxMDcsIDIzMSwgMzIsIDIwLCAxLCAxMDcsIDIyMCwgMTI3LCAyMCwgMSwgMTA3LCAKLSAgICAyMTEsIDM5LCAyMCwgMSwgMTA3LCAyMjgsIDE3OSwgMjAsIDEsIDEwNywgMjM0LCAxNTMsIDIzMSwgMTA3LCAyMCwgMSwgCi0gICAgMTA3LCAyMjksIDIxLCAyMCwgMSwgMTA3LCAyMTUsIDExOSwgMjAsIDEsIDEwNywgMjQyLCAyNTUsIDIwLCAxLCAxMDcsIAotICAgIDIyOSwgMTEsIDIwLCAxLCAxMDcsIDI0NCwgMTM1LCAyMCwgMSwgMTA3LCAyMjksIDE0NCwgMjAsIDEsIDEwNywgMjMxLCA1LCAKLSAgICAyMCwgMSwgMTA3LCAyMzMsIDExLCAyMCwgMSwgMTA3LCAyMjksIDEyNiwgMjAsIDEsIDEwNywgMjMwLCAxNTIsIDIwLCAxLCAKLSAgICAxMDcsIDIzMSwgOSwgMjAsIDEsIDEwNywgMjI0LCAxMjEsIDIwLCAxLCAxMDcsIDIzMSwgNywgMjAsIDEsIDEwNywgMjMxLCAKLSAgICAyMywgMjAsIDEsIDEwNywgMjMyLCA4OSwgMjAsIDEsIDEwNywgMjI4LCA0LCAyMCwgMSwgMTA3LCAyMzEsIDEyNywgMjAsIDEsIAotICAgIDEwNywgMjMzLCAxODYsIDIwLCAxLCAxMDcsIDIyNywgMTU1LCAyMCwgMSwgMTA3LCAyMTYsIDIyMSwgMjAsIDEsIDEwNywgCi0gICAgMjE5LCAzNiwgMjAsIDEsIDEwNywgMjEwLCAxNzksIDIwLCAxLCAxMDcsIDIzNCwgMTU0LCAyMCwgMSwgMTA3LCAyMjMsIAotICAgIDE3MywgMjAsIDEsIDEwNywgMjE3LCAxMSwgMjAsIDEsIDEwNywgMjI5LCAyMiwgMjAsIDEsIDEwNywgMjMxLCAyOCwgMjAsIAotICAgIDEsIDEwNywgMjI4LCAzLCAyMCwgMSwgMTA3LCAyMzQsIDE1MiwgMjAsIDEsIDEwNywgMjI1LCA2MiwgMjAsIDEsIDEwNywgCi0gICAgMjI1LCAxNTUsIDIwLCAxLCAxMDcsIDIyNywgMTMxLCAyMCwgMSwgMTA3LCAyMzMsIDE3LCAyMCwgMSwgMTA3LCAyMjksIDYwLCAKLSAgICAyMCwgMSwgMTA3LCAyMzEsIDI1LCAyMCwgMSwgMTA3LCAyMjksIDM0LCAyMCwgMSwgMTA3LCAyMTAsIDE5MywgMjAsIDEsIAotICAgIDEwNywgMjI2LCAyNSwgMjAsIDEsIDEwNywgMjEwLCAxOTIsIDIwLCAxLCAxMDcsIDIyOSwgMTQ5LCAyMCwgMSwgMTA3LCAKLSAgICAyMjcsIDI0OSwgMjAsIDEsIDEwNywgMjE4LCA4MiwgMjAsIDEsIDEwNywgMjMzLCAyMTQsIDIwLCAxLCAxMDcsIDIyOSwgNDksIAotICAgIDIwLCAxLCAxMDcsIDIyOSwgMTksIDIwLCAxLCAxMDcsIDIxNSwgMTAzLCAyMCwgMSwgMTA3LCAyMzEsIDM2LCAyMCwgMSwgCi0gICAgMTA3LCAyMzMsIDIwNCwgMjAsIDEsIDEwNywgMjI4LCAxLCAyMCwgMSwgMTA3LCAyMTYsIDIxOSwgMjAsIDEsIDEwNywgMjMxLCAKLSAgICAyMTksIDIwLCAxLCAxMDcsIDIyOSwgNTgsIDIwLCAxLCAxMDcsIDIzMywgMTAsIDIwLCAxLCAxMDcsIDIyOSwgNDAsIDIwLCAKLSAgICAxLCAxMDcsIDIyOCwgNiwgMjAsIDEsIDEwNywgMjI4LCAxNTgsIDIwLCAxLCAxMDcsIDI0MiwgMjQwLCAyMCwgMSwgMTA3LCAKLSAgICAyMzMsIDIyMywgMjAsIDEsIDEwNywgMjIzLCA4NywgMjI2LCAyMTMsIDIwLCAxLCAxMDcsIDIxNywgODcsIDIwLCAxLCAxMDcsIAotICAgIDIxNiwgMTEsIDIwLCAxLCAxMDcsIDIyNywgMTUyLCAyMCwgMSwgMTA3LCAyMjIsIDI0MiwgMjAsIDEsIDEwNywgMjMzLCA1NSwgCi0gICAgMjAsIDEsIDEwNywgMjMxLCA4NCwgMjAsIDEsIDEwNywgMTk0LCAyMCwgMSwgMTA3LCAyMTgsIDUsIDIwLCAxLCAxMDcsIAotICAgIDIzMCwgMTA3LCAyMCwgMSwgMTA3LCAyMjAsIDI5LCAyMCwgMSwgMTA3LCAyMjAsIDM5LCAyMCwgMSwgMTA3LCAyMzMsIDE2MSwgCi0gICAgMjAsIDEsIDEwNywgMjI3LCAyNDIsIDIwLCAxLCAxMDcsIDIxOSwgMjI3LCAyMCwgMSwgMTA3LCAyMjcsIDI1MSwgMjAsIDEsIAotICAgIDEwNywgMjI1LCAyMTQsIDIwLCAxLCAxMDcsIDIyOCwgMjM4LCAyMCwgMSwgMTA3LCAyMTksIDI1NCwgMjAsIDEsIDEwNywgCi0gICAgMjI0LCAxMzYsIDIwLCAxLCAxMDcsIDIzMCwgNTEsIDIwLCAxLCAxMDcsIDIzMiwgMTI1LCAyMCwgMSwgMTA3LCAyMjMsIDg3LCAKLSAgICAyMzAsIDEwMSwgMjAsIDEsIDEwNywgMjE2LCAxMTgsIDIwLCAxLCAxMDcsIDIyNywgMjQzLCAyMCwgMSwgMTA3LCAyMzEsIAotICAgIDEyOCwgMTk5LCAyMCwgMSwgMTA3LCAyMjEsIDIzNCwgMjAsIDEsIDEwNywgMjQ0LCAyMDMsIDIwLCAxLCA4MiwgMjI5LCAKLSAgICAxNDgsIDIwLCAxLCA4MiwgMjE2LCAxNywgMjAsIDEsIDgyLCAyMzEsIDExNywgMjAsIDEsIDgyLCAyMzMsIDk0LCAyMCwgMSwgCi0gICAgODIsIDIxMywgMTI4LCAyMCwgMSwgODIsIDIzMiwgMTMxLCAyMCwgMSwgODIsIDIyNiwgOTMsIDIwLCAxLCA4MiwgMjE5LCAKLSAgICA0NywgMjAsIDEsIDgyLCAyMjMsIDE0OCwgMjAsIDEsIDgyLCAyMjgsIDgsIDIwLCAxLCA4MiwgMjI5LCAxMTksIDIwLCAxLCAKLSAgICA4MiwgMjI0LCAxNTAsIDIwLCAxLCA4MiwgMjE3LCA2MywgMjAsIDEsIDgyLCAyMjksIDI3LCAyMCwgMSwgODIsIDIzMywgCi0gICAgMjUxLCAyMCwgMSwgODIsIDIxMSwgMTg3LCAyMCwgMSwgODIsIDIyMSwgMTcyLCAyMCwgMSwgODIsIDIyOSwgNTAsIDIwLCAxLCAKLSAgICA4MiwgMjI2LCA5MCwgMjAsIDEsIDgyLCAyMTYsIDE4LCAyMCwgMSwgODIsIDIzMywgMjA4LCAyMCwgMSwgODIsIDIzMiwgCi0gICAgMTQ1LCAyMCwgMSwgODIsIDIyOCwgMTEsIDIwLCAxLCA4MiwgMjI5LCAzLCAyMCwgMSwgODIsIDIzMSwgMjI1LCAyMCwgMSwgCi0gICAgODIsIDIyOSwgMjAsIDIwLCAxLCA4MiwgMjI5LCAyLCAyMCwgMSwgODIsIDIyOCwgMTAsIDIwLCAxLCA4MiwgMjIyLCAyNDAsIAotICAgIDIwLCAxLCA4MiwgMjI4LCAxNzYsIDIwLCAxLCA4MiwgMjI1LCAyMTMsIDIwLCAxLCA4MiwgMjIyLCAzMywgMjAsIDEsIDgyLCAKLSAgICAyMjksIDM1LCAyMCwgMSwgODIsIDIzMSwgMTUsIDIwLCAxLCA4MiwgMjQyLCAyMzQsIDIwLCAxLCA4MiwgMjI5LCAyMywgMjAsIAotICAgIDEsIDgyLCAyMjgsIDE4NywgMjAsIDEsIDgyLCAyMzEsIDE3NywgMjAsIDEsIDgyLCAyMzIsIDEyNywgMjAsIDEsIDgyLCAKLSAgICAyMjksIDU1LCAyMCwgMSwgODIsIDIyOSwgMTMyLCAyMCwgMSwgODIsIDIxNywgODYsIDIyNywgMjQ5LCAyMCwgMSwgODIsIAotICAgIDIyMCwgMTI5LCAyMCwgMSwgODIsIDIyNCwgMTQ2LCAyMCwgMSwgODIsIDIyOSwgMTUyLCAyMTksIDUzLCAyMCwgMSwgODIsIAotICAgIDIyOSwgNDMsIDIyNywgMTY0LCAyMCwgMSwgODIsIDIxMSwgNCwgMjAsIDEsIDgyLCAyNDIsIDIzNSwgMjAsIDEsIDgyLCAKLSAgICAyMTUsIDExOCwgMjAsIDEsIDgyLCAyMTEsIDE5LCAyMCwgMSwgODIsIDIyNSwgMTksIDIwLCAxLCA4MiwgMjE1LCAxMDgsIAotICAgIDIwLCAxLCA4MiwgMjM0LCAxNjAsIDIwLCAxLCA4MiwgMjE4LCA4MSwgMjAsIDEsIDgyLCAyMTYsIDIyMCwgMjAsIDEsIDgyLCAKLSAgICAyMTMsIDE4NCwgMjAsIDEsIDgyLCAyMTIsIDYsIDIwLCAxLCA4MiwgMjMzLCAxMzgsIDIwLCAxLCA4MiwgMjI0LCAxNTMsIAotICAgIDIwLCAxLCA4MiwgMjE3LCA5NywgMjAsIDEsIDgyLCAyNDIsIDI1NCwgMjAsIDEsIDgyLCAyMjksIDY0LCAyMCwgMSwgODIsIAotICAgIDIyMCwgNDIsIDIwLCAxLCA4MiwgMjMxLCAxMCwgMjAsIDEsIDgyLCAyMzEsIDEyMSwgMjAsIDEsIDgyLCAyMjcsIDExOSwgCi0gICAgMjAsIDEsIDgyLCAyMjgsIDE0MSwgMjAsIDEsIDgyLCAyNDMsIDgwLCAyMCwgMSwgODIsIDIxNSwgMTA5LCAyMCwgMSwgODIsIAotICAgIDIzMywgMjE3LCAyMCwgMSwgODIsIDIxMSwgNjcsIDIwLCAxLCA4MiwgMjI3LCAxNTMsIDI1MCwgMjQsIDIwLCAxLCA4MiwgCi0gICAgMjEwLCAyNTAsIDIwLCAxLCA4MiwgMjMxLCAyNywgMjAsIDEsIDgyLCAyMjksIDEzNywgMjAsIDEsIDgyLCAyMjUsIDEwMywgCi0gICAgMjAsIDEsIDgyLCAyMTAsIDE5NywgMjAsIDEsIDgyLCAyMzMsIDEyLCAyMCwgMSwgODIsIDI0MywgMjQwLCAyMCwgMSwgODIsIAotICAgIDI0MywgNzksIDIwLCAxLCA4MiwgMjI5LCAxMywgMjAsIDEsIDgyLCAyMzQsIDE2MiwgMjAsIDEsIDgyLCAyMzEsIDIyOCwgCi0gICAgMjAsIDEsIDgyLCAyMjksIDI2LCAyMCwgMSwgODIsIDI0MiwgMjQxLCAyMCwgMSwgODIsIDI0NCwgMjA0LCAyMCwgMSwgODIsIAotICAgIDIyNywgMjQ0LCAyMCwgMSwgODIsIDIyNSwgMTU2LCAyMCwgMSwgODIsIDIxMSwgMTcsIDIwLCAxLCA4MiwgMjI5LCA1MSwgCi0gICAgMjAsIDEsIDgyLCAyMjcsIDE1MywgMjUyLCAzMSwgMjAsIDEsIDgyLCAyMjcsIDk5LCAyMCwgMSwgODIsIDIyNCwgMjUwLCAKLSAgICAyMCwgMSwgODIsIDIzMCwgMjI1LCAyMCwgMSwgODIsIDI0MywgMjM4LCAyMCwgMSwgODIsIDIyOSwgMjI1LCAyMCwgMSwgODIsIAotICAgIDIzMCwgMTA1LCAyMCwgMSwgODIsIDI0MiwgMjQwLCAyMCwgMSwgODIsIDI0MywgMjQyLCA3NCwgMjAsIDEsIDgyLCAyMzAsIAotICAgIDUyLCAyMCwgMSwgODIsIDIyNCwgMTQ5LCAyMCwgMSwgODIsIDIyOSwgMTUsIDIwLCAxLCA4MiwgMjMzLCAxOTUsIDIwLCAxLCAKLSAgICA4MiwgMjI1LCAxMDAsIDIwLCAxLCA4MiwgMjI3LCAyNTIsIDIwLCAxLCA4MiwgMjExLCAxOCwgMjAsIDEsIDgyLCAyMjksIAotICAgIDM2LCAyMCwgMSwgODIsIDIyNiwgOTQsIDIyNSwgMTkwLCAyMCwgMSwgODIsIDI0MywgMjQyLCAyNTEsIDIzLCAyMCwgMSwgCi0gICAgODIsIDI0NCwgNDUsIDIwLCAxLCA4MiwgMjI4LCAxODEsIDIwLCAxLCA4MiwgNjEsIDIwLCAxLCA4MiwgMjE2LCAxMSwgMjAsIAotICAgIDEsIDgyLCA3OCwgMjAsIDEsIDgyLCA3NCwgMjAsIDEsIDgyLCAyMzMsIDkyLCAyMCwgMSwgODIsIDIyNiwgOTQsIDIyNSwgCi0gICAgMjYsIDIwLCAxLCA4MiwgMjE3LCAxMDIsIDIwLCAxLCA4MiwgMjE3LCA1MiwgMjAsIDEsIDgyLCAyMjksIDE1MiwgMjMwLCAKLSAgICAzOSwgMjQwLCAyNDEsIDIwLCAxLCA4MiwgMjIwLCAxNywgMjAsIDEsIDgyLCAyMTEsIDE0LCAyMCwgMSwgODIsIDIyOCwgCi0gICAgMjUyLCAyMCwgMSwgODIsIDIxMCwgMjAyLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyMTcsIDI0MSwgMjAsIDEsIDgyLCAyMTAsIAotICAgIDIyNywgMjQ5LCAxNTUsIDIwLCAxLCA4MiwgMjEwLCAxODcsIDIwLCAxLCA4MiwgMjEwLCAxOTUsIDIwLCAxLCA4MiwgMjM0LCAKLSAgICAxNDgsIDIwLCAxLCA4MiwgMjI1LCAxNTQsIDIwLCAxLCA4MiwgMjI4LCAxODIsIDI0NSwgMTEwLCAyMCwgMSwgODIsIDIyNCwgCi0gICAgMTQ3LCAyMCwgMSwgODIsIDIxMSwgMTkyLCAyMCwgMSwgODIsIDI0NCwgMTU1LCAyMCwgMSwgODIsIDIxMywgMjUwLCAyMCwgCi0gICAgMSwgODIsIDIzMiwgMTAzLCAyMCwgMSwgODIsIDIzMCwgMjM1LCAyMCwgMSwgODIsIDIyMywgNTQsIDIwLCAxLCA4MiwgMjIzLCAKLSAgICAxNzQsIDIwLCAxLCA4MiwgMjI4LCAyNTEsIDIwLCAxLCA4MiwgMjI5LCA4MiwgMjAsIDEsIDgyLCAyMjAsIDksIDIwLCAxLCAKLSAgICA4MiwgMjE5LCAyNTQsIDIwLCAxLCA4MiwgMjQzLCAyNDIsIDIyMywgODksIDIwLCAxLCA4MiwgMTk4LCAyMCwgMSwgODIsIAotICAgIDIyNSwgMTExLCAyMCwgMSwgODIsIDIzMiwgMTI1LCAyMCwgMSwgODIsIDIzNCwgMzQsIDIwLCAxLCA4MiwgMjMxLCA2MywgCi0gICAgMjAsIDEsIDgyLCAxODYsIDIwLCAxLCA4MiwgMjMxLCAxNzQsIDIwLCAxLCA4MiwgMjE2LCAyMjIsIDIwLCAxLCA4MiwgMjM0LCAKLSAgICA5OCwgMjAsIDEsIDgyLCAyMzAsIDE1NSwgMjAsIDEsIDgyLCAyMTYsIDI0OCwgMjAsIDEsIDgyLCAyNDQsIDE3NywgMjAsIDEsIAotICAgIDgyLCAyNDIsIDIzMCwgMjAsIDEsIDIyNSwgMTQwLCAxNzYsIDIwLCAxLCAyMjUsIDE0MCwgNjksIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjMzLCAyMjMsIDIwLCAxLCAyMjUsIDE0MCwgMjQ1LCAyMTcsIDIwLCAxLCAyMjUsIDE0MCwgMjIzLCAxMTEsIDIwLCAxLCAKLSAgICAyMjUsIDE0MCwgMjE3LCA4NywgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIDE1MiwgMjAsIDEsIDIyNSwgMTQwLCAyMzMsIDE0MSwgCi0gICAgMjAsIDEsIDIyNSwgMTQwLCAyMjIsIDI0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjMsIDMyLCAyMCwgMSwgMjI1LCAxNDAsIAotICAgIDIzMSwgODQsIDIwLCAxLCAyMjUsIDE0MCwgMjE3LCAxMDIsIDIwLCAxLCAyMjUsIDE0MCwgMjI5LCAxNTEsIDIwLCAxLCAKLSAgICAyMjUsIDE0MCwgMjI4LCAxODgsIDIwLCAxLCAyMjUsIDE0MCwgMTk0LCAyMCwgMSwgMjI1LCAxNDAsIDIxOCwgNSwgMjAsIDEsIAotICAgIDIyNSwgMTQwLCAyMjAsIDI5LCAyMCwgMSwgMjI1LCAxNDAsIDIxOSwgMTkzLCAyMCwgMSwgMjI1LCAxNDAsIDIyMCwgMTI1LCAKLSAgICAyMCwgMSwgMjI1LCAxNDAsIDIzMywgMTYxLCAyMCwgMSwgMjI1LCAxNDAsIDIzNCwgMTYyLCAyMCwgMSwgMjI1LCAxNDAsIAotICAgIDIyNywgMjEzLCAyMCwgMSwgMjI1LCAxNDAsIDIyNywgMjQyLCAyMCwgMSwgMjI1LCAxNDAsIDIyOCwgMTU5LCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIxMCwgMjI2LCAyMCwgMSwgMjI1LCAxNDAsIDIxOSwgMjI3LCAyMCwgMSwgMjI1LCAxNDAsIDE5MiwgMjAsIAotICAgIDEsIDIyNSwgMTQwLCAyMjgsIDE0LCAyMCwgMSwgMjI1LCAxNDAsIDIyNSwgMTU0LCAyMCwgMSwgMjI1LCAxNDAsIDIyNywgCi0gICAgMjUxLCAyMCwgMSwgMjI1LCAxNDAsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAxNDAsIDIyNSwgMjE0LCAyMCwgMSwgMjI1LCAKLSAgICAxNDAsIDIyMiwgMTQyLCAyMCwgMSwgMjI1LCAxNDAsIDIyOCwgMjM4LCAyMCwgMSwgMjI1LCAxNDAsIDIyMywgNTQsIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjM0LCAxNzEsIDIwLCAxLCAyMjUsIDE0MCwgMjI5LCAxMiwgMjAsIDEsIDIyNSwgMTQwLCAyMjksIAotICAgIDYxLCAyMCwgMSwgMjI1LCAxNDAsIDIyMCwgOSwgMjAsIDEsIDIyNSwgMTQwLCAyMjQsIDE1MCwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyNDQsIDQ1LCAyMCwgMSwgMjI1LCAxNDAsIDIxMiwgNjUsIDIwLCAxLCAyMjUsIDE0MCwgMjMyLCAyNDcsIDIwLCAxLCAyMjUsIAotICAgIDE0MCwgMjMyLCAxMjUsIDIwLCAxLCAyMjUsIDE0MCwgMjM0LCAzNCwgMjAsIDEsIDIyNSwgMTQwLCAyMzEsIDExOSwgMjAsIAotICAgIDEsIDIyNSwgMTQwLCAyMjMsIDg2LCAyMCwgMSwgMjI1LCAxNDAsIDE4NiwgMjAsIDEsIDIyNSwgMTQwLCAyMzAsIDE2NiwgCi0gICAgMjAsIDEsIDIyNSwgMTQwLCAyMzEsIDEyNywgMjAsIDEsIDIyNSwgMTQwLCAyMTYsIDIzMSwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMzQsIDEsIDIwLCAxLCAyMjUsIDE0MCwgMjIxLCAyNTMsIDIwLCAxLCAyMjUsIDE0MCwgMjEyLCAxMTUsIDk1LCAxLCAxOTEsIAotICAgIDk1LCAxLCAyNTIsIDE5OSwgOTUsIDEsIDgsIDE5MSwgOTUsIDEsIDIyNSwgNDUsIDk1LCAxLCAxODYsIDk1LCAxLCAyMzAsIAotICAgIDIzOCwgOTUsIDEsIDI1NCwgMzEsIDE4NiwgOTUsIDEsIDI0NCwgMjA0LCA5NSwgMSwgMjE0LCAyNywgOTUsIDEsIDIxMywgCi0gICAgMTc3LCA5NSwgMSwgMjE3LCAxMDYsIDk1LCAxLCAyNDgsIDIyOSwgOTUsIDEsIDgsIDIxNSwgMTU3LCA5NSwgMSwgOCwgMjE3LCAKLSAgICAxMDYsIDk1LCAxLCAyMTUsIDE1NywgOTUsIDEsIDI0OCwgMTQzLCA5NSwgMSwgMTk4LCA5NSwgMSwgMjI4LCAyNDIsIDk1LCAKLSAgICAxLCA4LCAyMjgsIDExNSwgOTUsIDEsIDI1NCwgMzEsIDE5OCwgOTUsIDEsIDIyOCwgMTE1LCA5NSwgMSwgMjI4LCAxMDEsIAotICAgIDk1LCAxLCAyMzMsIDE0MSwgOTUsIDEsIDIzMiwgNjYsIDk1LCAxLCAyMzMsIDQsIDk1LCAxLCAyMzIsIDI0OSwgOTUsIDEsIAotICAgIDIxNiwgNTcsIDk1LCAxLCAyNDcsIDE2MSwgOTUsIDEsIDIxNiwgNDksIDk1LCAxLCAyNDcsIDE2MCwgOTUsIDEsIDE3NiwgCi0gICAgOTUsIDEsIDI0MywgMTQyLCA5NSwgMSwgOCwgMTc2LCA5NSwgMSwgMjI0LCA5MSwgOTUsIDEsIDIyNCwgNjksIDk1LCAxLCAKLSAgICAyMjksIDgyLCA5NSwgMSwgMjI5LCAzMywgOTUsIDEsIDI1NCwgMzEsIDIyOSwgODIsIDk1LCAxLCAxNjIsIDk1LCAxLCAyMTEsIAotICAgIDE2NSwgOTUsIDEsIDI0MywgMCwgOTUsIDEsIDI0MiwgMjMzLCA5NSwgMSwgMjE1LCAxNjYsIDk1LCAxLCAyNDYsIDM0LCA5NSwgCi0gICAgMSwgMjI3LCAxNjksIDk1LCAxLCAyMjcsIDE1NCwgOTUsIDEsIDIxNSwgMTc2LCA5NSwgMSwgMjQ2LCA0MSwgOTUsIDEsIDgsIAotICAgIDIxNSwgMTc2LCA5NSwgMSwgOCwgMjQ2LCA0MSwgOTUsIDEsIDIyMywgMTA5LCAyMTUsIDE3NiwgOTUsIDEsIDIyMCwgMTA0LCAKLSAgICA5NSwgMSwgMjE4LCAyMjUsIDk1LCAxLCAyMTAsIDgyLCA5NSwgMSwgMjEwLCAxNCwgOTUsIDEsIDIxNSwgMTg0LCA5NSwgMSwgCi0gICAgMjQ2LCA0NiwgOTUsIDEsIDgsIDIxNSwgMTg0LCA5NSwgMSwgMjA2LCA5NSwgMSwgMjEwLCAxMTYsIDk1LCAxLCAyMTAsIDE1LCAKLSAgICA5NSwgMSwgMjA5LCAyNDMsIDk1LCAxLCAyMDksIDIyMywgOTUsIDEsIDI1NCwgMzEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAKLSAgICAyMTUsIDk1LCAxLCAyMDksIDIyMiwgOTUsIDEsIDIxMiwgNjUsIDk1LCAxLCAyNTQsIDIxOCwgOTUsIDEsIDI0MSwgMTk2LCAKLSAgICA5NSwgMSwgMjI5LCAxOTcsIDk1LCA1LCAyNTMsIDIzMCwgOTUsIDUsIDIyMywgMTA5LCAyMTMsIDEzMywgOTUsIDUsIDIyMywgCi0gICAgMTA5LCAyNTMsIDIzMCwgOTUsIDI1LCA1LCA2MSwgOTUsIDI1LCA1LCAyNTUsIDgyLCA5NSwgMjUsIDUsIDI1NCwgMjE0LCAKLSAgICA5NSwgMjUsIDUsIDI1NCwgMTMxLCA5NSwgMjUsIDUsIDI1NCwgMTIzLCA5NSwgMjUsIDUsIDc4LCA5NSwgMjUsIDUsIDIyNiwgCi0gICAgMTg3LCA5NSwgMjUsIDUsIDIxMSwgMjI3LCA5NSwgMjUsIDUsIDIxMiwgOTgsIDk1LCAyNSwgNSwgNzYsIDk1LCAyNSwgNSwgCi0gICAgMjQ1LCAxNTgsIDk1LCAyNSwgNSwgMjQ1LCAxNDYsIDk1LCAyNSwgNSwgMjI2LCAyMzYsIDk1LCAyNSwgNSwgNzQsIDk1LCAKLSAgICAyNSwgNSwgMjQwLCAxMjYsIDk1LCAyNSwgNSwgMjQwLCAxMjUsIDk1LCAyNSwgNSwgMjQwLCAxMjQsIDk1LCAyNSwgNSwgCi0gICAgMjM1LCAxOTYsIDk1LCAyNSwgNSwgMjM2LCA2NywgOTUsIDI1LCA1LCAyMzYsIDQwLCA5NSwgMjUsIDUsIDIzNSwgMTYyLCAKLSAgICA5NSwgMjUsIDUsIDIzNSwgMjM4LCA5NSwgMjUsIDUsIDY5LCA5NSwgMjUsIDUsIDIxNCwgMjI5LCA5NSwgMjUsIDUsIDIxNCwgCi0gICAgMjI4LCA5NSwgMjUsIDUsIDIxNCwgMjI3LCA5NSwgMjUsIDUsIDIxNCwgMTE4LCA5NSwgMjUsIDUsIDIxNCwgMjExLCA5NSwgCi0gICAgMjUsIDUsIDIxNCwgMTc4LCA5NSwgMjUsIDUsIDIxMSwgMTE3LCA5NSwgMjUsIDUsIDIxMSwgOCwgOTUsIDI1LCA1LCAyNTQsIAotICAgIDI1MiwgOTUsIDI1LCA1LCAyNTQsIDI0OCwgOTUsIDI1LCA1LCAyNDUsIDk0LCA5NSwgMjUsIDUsIDIyMiwgMTg1LCAyNDUsIAotICAgIDk0LCA5NSwgMjUsIDUsIDI0NSwgMTAwLCA5NSwgMjUsIDUsIDIyMiwgMTg1LCAyNDUsIDEwMCwgOTUsIDI1LCA1LCAyNTQsIAotICAgIDIxMCwgOTUsIDI1LCA1LCAyNDUsIDIwMywgOTUsIDI1LCA1LCAyNTMsIDIwMCwgOTUsIDI1LCA1LCAyMjYsIDEzOCwgOTUsIAotICAgIDI1LCA1LCAyMzAsIDMwLCA5NSwgMjUsIDUsIDIyOSwgODQsIDk1LCAxMzgsIDIyMiwgMjU0LCA5NSwgMTM4LCAyMTYsIDE1LCAKLSAgICAyMjIsIDI1NCwgOTUsIDEzOCwgNDgsIDk1LCAxMzgsIDUxLCA5NSwgMSwgMjE2LCAyOSwgOTUsIDEsIDIxNiwgMjgsIDk1LCAKLSAgICAxLCAyMTYsIDI3LCA5NSwgMSwgMjE2LCAyNiwgOTUsIDEsIDIxNiwgMjUsIDk1LCAxLCAyMTYsIDI0LCA5NSwgMSwgMjE2LCAKLSAgICAyMywgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDMwLCA5NSwgMSwgMjIzLCAxMDksIDIxNiwgMjksIDk1LCAxLCAyMjMsIDEwOSwgCi0gICAgMjE2LCAyNywgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI2LCA5NSwgMSwgMjIzLCAxMDksIDIxNiwgMjUsIDk1LCAxLCAyMjMsIAotICAgIDEwOSwgMjE2LCAyMywgNTYsIDEsIDI1NCwgMzEsIDc2LCAxNDEsIDEsIDI1NCwgMzEsIDIxMSwgNDcsIDQ5LCAyOCwgMTYsIAotICAgIDIyNCwgMTU3LCA0OSwgMjgsIDE2LCAyNDgsIDE2NiwgNDksIDI4LCAxNiwgMjI1LCAxNzgsIDQ5LCAyOCwgMTYsIDIyNiwgCi0gICAgMTE3LCAyNDUsIDE4NiwgNDksIDI4LCAxNiwgMjI2LCAxMTcsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyNDUsIAotICAgIDE4NiwgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDIzNCwgMjAzLCA0OSwgMjgsIDE2LCAKLSAgICAyMTcsIDE3MCwgNDksIDI4LCAxNiwgMjI2LCAxMywgNDksIDI4LCAxNiwgMjEwLCAyMTcsIDQ5LCAyOCwgMTYsIDIxMCwgCi0gICAgMjE4LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjMzLCAyNDAsIDQ5LCAyOCwgMTYsIDI1NCwgNzYsIDI0NSwgMTg2LCA0OSwgCi0gICAgMjgsIDE2LCAyNDUsIDM0LCAyNDUsIDE4NiwgNDksIDI4LCAxNiwgMjE3LCAzLCA0OSwgMjgsIDE2LCAyMzQsIDE2NywgNDksIAotICAgIDI4LCAxNiwgMjU0LCA2NiwgNDksIDI4LCAxNiwgMjU0LCA2NywgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDIxNywgMTc2LCA0OSwgCi0gICAgMjgsIDE2LCAyMTYsIDE2MCwgNDksIDI4LCAxNiwgMjI2LCAyMTAsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAKLSAgICAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMjQsIDE1NiwgNDksIDI4LCAxNiwgMjUwLCAxNTcsIDQ5LCAyOCwgMTYsIDIxNCwgNiwgCi0gICAgNDksIDI4LCAxNiwgMjM1LCAxNzAsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAKLSAgICAyMzQsIDE2OCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjIxLCAyMTUsIDQ5LCAyOCwgMTYsIDIyNiwgNCwgNDksIDI4LCAxNiwgCi0gICAgMjE4LCAxNDgsIDI1NCwgNjksIDQ5LCAyOCwgMTYsIDIyNiwgMTE2LCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMTQsIDE1LCAKLSAgICAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyNTQsIDcwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyNTQsIDY0LCA0OSwgMjgsIDE2LCAKLSAgICAyMzQsIDQzLCA0OSwgMjgsIDE2LCAyMjMsIDQ5LCA0OSwgMjgsIDE2LCAyMjUsIDEwOSwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjE2LCA4NCwgNDksIDI4LCAxNiwgMjU0LCAxMjksIDQ5LCAyOCwgMTYsIDIyMSwgMTYxLCA0OSwgMjgsIDE2LCAyMTcsIAotICAgIDE3OSwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjE3LCAxNzksIDIzMSwgNDUsIDIxOCwgMTQ2LCA0OSwgMjgsIDE2LCAyMjYsIAotICAgIDExMSwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjE2LCAxOTEsIDQ5LCAyOCwgMTYsIDIzMywgMzMsIDQ5LCAyOCwgMTYsIDI0NiwgCi0gICAgNDksIDQ5LCAyOCwgMTYsIDIxNSwgMjI4LCA0OSwgMjgsIDE2LCAyMTYsIDIzMywgNDksIDI4LCAxNiwgMjMzLCAyNDMsIDQ5LCAKLSAgICAyOCwgMTYsIDI1NCwgNzYsIDI0NSwgMzQsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjU0LCAyOSwgNDksIAotICAgIDI4LCAxNiwgMjM2LCAxOSwgNDksIDI4LCAxNiwgMjE1LCAyMDAsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIzNCwgMjA2LCAKLSAgICAyMTUsIDE5OSwgNDksIDI4LCAxNiwgMjI1LCAyMDMsIDQ5LCAyOCwgMTYsIDIyNCwgMTYxLCA0OSwgMjgsIDE2LCAyMzQsIAotICAgIDE3LCA0OSwgMjgsIDE2LCAyNTAsIDg4LCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMjMsIDE0OSwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxNiwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjI2LCAxNCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjQwLCAxMTYsIDQ5LCAyOCwgCi0gICAgMTYsIDIyOSwgMjA4LCA0OSwgMjgsIDE2LCAyMjUsIDE1OSwgNDksIDI4LCAxNiwgMjM0LCAxOCwgMjU0LCAxNTgsIDQ5LCAKLSAgICAyOCwgMTYsIDIxNSwgMjAwLCAyNTQsIDE1OCwgNDksIDI4LCAxNiwgMjE4LCAxMjUsIDQ5LCAyOCwgMTYsIDI0MiwgMTMwLCAKLSAgICA0OSwgMjgsIDE2LCAyMzUsIDE3MCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIyNiwgMjEwLCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjI2LCAxMTcsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMjUsIDE1OCwgNDksIDI4LCAxNiwgMjM0LCA0LCA0OSwgMjgsIAotICAgIDE2LCAyMjUsIDE1NywgNDksIDI4LCAxNiwgMjMzLCAyNDIsIDQ5LCAyOCwgMTYsIDIyNSwgMjA0LCAyMjksIDEwMCwgNDksIAotICAgIDI4LCAxNiwgMjM0LCAxNjgsIDIyOSwgMTAxLCAyNTQsIDEwNCwgNDksIDI4LCAxNiwgMjM0LCAxNjksIDIyOSwgMTAxLCAKLSAgICAyNTQsIDEwNCwgNDksIDI4LCAxNiwgMjEwLCAyMTUsIDQ5LCAyOCwgMTYsIDI1NCwgNjcsIDIyOSwgMTAwLCA0OSwgMjgsIAotICAgIDE2LCAyNTQsIDY4LCAyMTcsIDE3NywgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIxMCwgMjE2LCA0OSwgMjgsIDE2LCAyMzMsIAotICAgIDI0MSwgNDksIDI4LCAxNiwgMjQ1LCAxODEsIDQ5LCAyOCwgMTYsIDI1MCwgMTU4LCA0OSwgMjgsIDE2LCAyMzAsIDIwMywgCi0gICAgMjM1LCAxNjksIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMjUsIDEwOSwgMjI5LCAxMDAsIAotICAgIDQ5LCAyOCwgMTYsIDIyNCwgMTYyLCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI2LCAyMDcsIDQ5LCAyOCwgMTYsIDI1NCwgCi0gICAgOTIsIDQ5LCAyOCwgMTYsIDIzMiwgNjMsIDQ5LCAyOCwgMTYsIDIyNiwgMTQsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMjYsIAotICAgIDE2LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQ1LCA2OCwgMjI2LCAxNSwgNDksIDI4LCAxNiwgMjMzLCAxNTksIDQ5LCAyOCwgCi0gICAgMTYsIDI1NCwgOTMsIDQ5LCAyOCwgMTYsIDIxNSwgMjAwLCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQ1LCAxODQsIDQ5LCAKLSAgICAyOCwgMTYsIDIxNywgMTc5LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjE3LCAxNzEsIDQ5LCAyOCwgMTYsIDI1MCwgODgsIAotICAgIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyNDUsIDExNCwgNDksIDI4LCAxNiwgMjIxLCAxNjIsIDIyOSwgMTAwLCA0OSwgMjgsIAotICAgIDE2LCAyMTEsIDE1MSwgMjM0LCA0MywgNDksIDI4LCAxNiwgMjE1LCAxOTcsIDQ5LCAyOCwgMTYsIDIyNCwgMTYzLCA0OSwgCi0gICAgMjgsIDE2LCAyMTUsIDIwMSwgNDksIDI4LCAxNiwgMjE1LCAxOTgsIDQ5LCAyOCwgMTYsIDIyNCwgMTYwLCA0OSwgMjgsIDE2LCAKLSAgICAyMTUsIDE5NiwgNDksIDI4LCAxNiwgMjI0LCAxNTksIDQ5LCAyOCwgMTYsIDI0MiwgMTY1LCA0OSwgMjgsIDE2LCAyNTQsIAotICAgIDIyLCA0OSwgMjgsIDE2LCAyNDUsIDY4LCAyNTQsIDIyLCA0OSwgMjgsIDE2LCAyMjYsIDExMSwgMjI5LCAxMDAsIDQ5LCAyOCwgCi0gICAgMTYsIDIxNiwgMTkwLCAyNDUsIDc3LCA0OSwgMjgsIDE2LCAyMTYsIDE5MCwgMjQ1LCAzMywgNDksIDI4LCAxNiwgMjE2LCAKLSAgICAxOTIsIDI1NCwgNzEsIDQ5LCAyOCwgMTYsIDIxNiwgMTg1LCAyMzQsIDI1MywgMjU0LCA2MywgNDksIDI4LCAxNiwgMjM0LCAKLSAgICAyMDUsIDQ5LCAyOCwgMTYsIDI0NSwgMTQ3LCA0OSwgMjgsIDE2LCAyMTEsIDExLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgCi0gICAgMjExLCAxMSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ3LCA0OSwgMjgsIDE2LCAyMzQsIDQ0LCAyNTQsIDEwNCwgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMTAsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIzMywgMjQ0LCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAKLSAgICAyMzMsIDI0NCwgMjU0LCAxNTgsIDQ5LCAyOCwgMTYsIDIzMywgMjQ0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjU0LCA3MCwgCi0gICAgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI1NCwgNzIsIDQ5LCAyOCwgMTYsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMTUsIAotICAgIDIxMSwgNDksIDI4LCAxNiwgMjE2LCAyMjUsIDQ5LCAyOCwgMTYsIDIzNCwgOCwgNDksIDI4LCAxNiwgMjMzLCAzOCwgMjQ1LCAKLSAgICAxNDIsIDI1MCwgNzksIDQ5LCAyOCwgMTYsIDIzMywgMzgsIDI0NiwgNTAsIDI1MCwgODAsIDQ5LCAyOCwgMTYsIDIzMywgMzgsIAotICAgIDIxNSwgMjEzLCAyNTAsIDgwLCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAyMTYsIDIzNSwgMjUwLCA4MCwgNDksIDI4LCAxNiwgCi0gICAgMjMzLCAzOCwgMjM2LCAxNCwgMjUwLCA3OSwgNDksIDI4LCAxNiwgMjQyLCAxNjYsIDIyOSwgMTAxLCAyNTQsIDEwNCwgNDksIAotICAgIDI4LCAxNiwgMjQyLCAxNjYsIDIyNiwgNSwgMjU0LCAxOCwgNDksIDI4LCAxNiwgMjQyLCAxNjYsIDIyNiwgNSwgMjQ4LCAzNywgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMzMsIDQ5LCAyOCwgMTYsIDI0NywgMjM0LCAyMjYsIDUsIDI1NCwgMTksIDIzNCwgMjAyLCAKLSAgICA0OSwgMjgsIDE2LCAyNDcsIDIzNCwgMjI2LCA1LCAyNTQsIDE5LCAyNTQsIDEwNCwgNDksIDI4LCAxNiwgMjQ3LCAyMzQsIAotICAgIDIyNiwgNSwgMjQ4LCAzNywgNDksIDI4LCAxNiwgMjE1LCAyMTcsIDQ5LCAyOCwgMTYsIDI1NCwgMjMsIDQ5LCAyOCwgMTYsIAotICAgIDIzNiwgMjEsIDQ5LCAyOCwgMTYsIDI0NywgMjU0LCA0OSwgMjgsIDE2LCAyNTQsIDIyMCwgMjI1LCAzLCAyNTQsIDI0LCA0OSwgCi0gICAgMjgsIDE2LCAyNTQsIDIyMCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDI1NCwgMjQsIDQ5LCAyOCwgMTYsIAotICAgIDI1NCwgMjIwLCAyMzEsIDM5LCA0OSwgMjgsIDE2LCAyNTQsIDIyMCwgMjMxLCA1MCwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIAotICAgIDI0MiwgMTY3LCA0OSwgMjgsIDE2LCAyNTQsIDIyMCwgMjQyLCAxNjQsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAyMjUsIDMsIAotICAgIDI0MiwgMTY3LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjI0LCAxNjgsIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgCi0gICAgMjU0LCAxNjAsIDIyNCwgMTY4LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDI0OCwgMzYsIDI0MCwgMTE0LCAKLSAgICA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjU0LCAxNjAsIDI0OCwgMzYsIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgCi0gICAgMjE1LCAyMDYsIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE1LCAyMTgsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAKLSAgICAyMTYsIDIyOSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMTYsIDIyOSwgMjMzLCA0MSwgMjQwLCAxMTQsIAotICAgIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMzMsIDQxLCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIyNSwgNDIsIAotICAgIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzUsIDE3NiwgMjE2LCAyNTIsIDI0MCwgMTE1LCA0OSwgMjgsIDE2LCAyNTQsIDY4LCAKLSAgICAyMTYsIDI1MiwgMjQwLCAxMTUsIDQ5LCAyOCwgMTYsIDI0NCwgMTgwLCAyMTYsIDIyNiwgNDksIDI4LCAxNiwgMjQ0LCAxODAsIAotICAgIDIzMCwgMTQ4LCA0OSwgMjgsIDE2LCAyNDQsIDE4MCwgMjQ3LCAyMzgsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMTQsIDEwLCAKLSAgICAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIyNCwgMTY3LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDIyNSwgNDIsIDIxNiwgMjI5LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjQyLCAxNjIsIDIzMCwgMzEsIDI1NCwgNzEsIDQ5LCAKLSAgICAyOCwgMTYsIDI0MiwgMTYyLCAyMzAsIDMxLCAyNDcsIDIwOCwgNDksIDI4LCAxNiwgMjQ1LCAxNTYsIDIzNCwgMjUzLCAyNDMsIAotICAgIDI0MywgMjEzLCAxMjQsIDQ5LCAyOCwgMTYsIDIzNiwgMjAsIDQ5LCAyOCwgMTYsIDIzNiwgMTgsIDQ5LCAyOCwgMTYsIDI0MywgCi0gICAgMjQzLCAyNTQsIDMwLCAyNDgsIDM1LCAyNDAsIDExMywgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAxOTEsIDQ5LCAKLSAgICAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjI5LCAyMDgsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyMjksIDIwMywgCi0gICAgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjQ4LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIAotICAgIDIxOSwgMTA0LCAyNDcsIDI1MSwgMjQ4LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAyMzQsIDE4OCwgCi0gICAgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAyMTAsIDIzLCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIAotICAgIDIyOCwgMjM5LCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAyMjgsIDIzOSwgMjU0LCAxMDQsIAotICAgIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyMzEsIDE5NiwgMjUwLCA4MSwgMjQ3LCAyMzgsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAKLSAgICAyMzEsIDE5NiwgMjUwLCA4MSwgMjMwLCAxNDgsIDQ5LCAyOCwgMTYsIDI0NCwgMTMwLCAyMTksIDEwNCwgMjUwLCA4MSwgCi0gICAgMjE0LCA5LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjE5LCAxMDQsIDI1MCwgODEsIDIxNywgMTgwLCA0OSwgMjgsIDE2LCAKLSAgICAyNDMsIDI0MywgMjI5LCAxMDIsIDQ5LCAyOCwgMTYsIDI1MCwgODIsIDIwOSwgMjQ5LCA0OSwgMjgsIDE2LCAyNTAsIDgyLCAKLSAgICAyMzQsIDQyLCA0OSwgMjgsIDE2LCAyNTAsIDgyLCAyMTksIDExLCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjQwLCAxNjEsIAotICAgIDIxMSwgMTAsIDIxNiwgMjMwLCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjQ1LCAxNTcsIDI1NCwgOTQsIDQ5LCAyOCwgMTYsIAotICAgIDIxMSwgMTAsIDIxNSwgMjA3LCA0OSwgMjgsIDE2LCAyNDcsIDI0NiwgMjE1LCAyMDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAKLSAgICAyMTYsIDIzMCwgNDksIDI4LCAxNiwgMjQ3LCAyNDYsIDI1NCwgNzMsIDI0NiwgNTAsIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyNDcsIDI0NiwgMjMwLCAxNDYsIDIxNiwgMjM0LCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjQ3LCAyNDYsIDI0NywgMjMwLCAKLSAgICAyNDUsIDQ0LCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjQ3LCAyNDYsIDIxNSwgMjE1LCAyMjYsIDIxNSwgMjQ3LCAxNDcsIAotICAgIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDI1NCwgNzMsIDI0NiwgNTAsIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAKLSAgICAyMzAsIDE0NiwgMjE2LCAyMzQsIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNDcsIDIzMCwgMjQ1LCA0NCwgCi0gICAgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIxNSwgMjE1LCAyMjYsIDIxNSwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIAotICAgIDI0MywgNTYsIDI0NywgMjQ1LCA0OSwgMjgsIDE2LCAyNDMsIDU2LCAyMTEsIDksIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAKLSAgICAyNTQsIDczLCAyMzAsIDIwNCwgNDksIDI4LCAxNiwgMjQ3LCAyNTMsIDI1NCwgNzMsIDIzMSwgNzgsIDQ5LCAyOCwgMTYsIAotICAgIDI0NywgMjUzLCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjQ3LCAyNTMsIDIxNiwgMTgzLCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgCi0gICAgMjE2LCAxODMsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyMTYsIDE4NCwgMjQ3LCAxOTQsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAKLSAgICAyMTYsIDE4NCwgMjE1LCAyMDgsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyMTYsIDE4NCwgMjE2LCAyMjMsIDQ5LCAyOCwgMTYsIAotICAgIDIxOSwgMTY1LCAyNTMsIDI1MiwgNDksIDI4LCAxNiwgMjE5LCAxNjUsIDI1MywgMjUzLCAyNDcsIDE5NCwgNDksIDI4LCAxNiwgCi0gICAgMjE5LCAxNjUsIDI1MywgMjUzLCAyMTUsIDIwOCwgNDksIDI4LCAxNiwgMjE5LCAxNjUsIDI1MywgMjUzLCAyMTYsIDIyMywgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMzEsIDI0MywgMzcsIDQ5LCAyOCwgMTYsIDI0NywgMjM3LCAyMjYsIDEzOCwgNDksIDI4LCAKLSAgICAxNiwgMjE4LCAxMzksIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDE5MSwgNDksIDI4LCAxNiwgMjU0LCAxNSwgMjEzLCAxMjQsIAotICAgIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDI0MywgMTQyLCA0OSwgMjgsIDE2LCAyNTQsIDE1LCAyNDgsIDExLCA0OSwgMjgsIDE2LCAKLSAgICAyNTQsIDE1LCAyMzQsIDE4OCwgNDksIDI4LCAxNiwgMjU0LCAxNSwgMjEwLCAyMywgNDksIDI4LCAxNiwgMjU0LCAxNSwgCi0gICAgMjI4LCAyMzgsIDQ5LCAyOCwgMTYsIDIzNCwgMTY4LCAyMjksIDEwMSwgMjMxLCA0OSwgNDksIDI4LCAxNiwgMjM0LCAxNjksIAotICAgIDIyOSwgMTAxLCAyMzEsIDQ5LCA0OSwgMjgsIDE2LCAyMzQsIDE2OCwgMjI5LCAxMDEsIDIzNCwgMjAyLCA0OSwgMjgsIDE2LCAKLSAgICAyMzQsIDE2OSwgMjI5LCAxMDEsIDIzNCwgMjAyLCA0OSwgMjgsIDE2LCAyMzQsIDQ0LCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgCi0gICAgMjQyLCAxNjYsIDIyOSwgMTAxLCAyMzQsIDIwMiwgMjgsIDE2LCAyMTksIDE1NywgMjUyLCAxNDMsIDI4LCAxNiwgNTIsIAotICAgIDI1MiwgMTQzLCAyOCwgMTYsIDQwLCAyNTIsIDE0MywgMjgsIDE2LCAyMjMsIDUzLCA0MCwgMjUyLCAxNDMsIDI4LCAxNiwgCi0gICAgMjQ4LCAxNjMsIDI1MiwgMTQzLCAyOCwgMTYsIDIxOSwgMjUzLCAyNTIsIDE0MywgMjgsIDE2LCA0MywgMjIzLCA4MCwgNTAsIAotICAgIDI4LCAxNiwgNDQsIDIyMywgODAsIDUwLCAyOCwgMTYsIDIyMywgODAsIDI0NywgMTI2LCAyOCwgMTYsIDI0OCwgMjA0LCAKLSAgICAyMjEsIDE2NSwgMjgsIDE2LCAyNDgsIDIzMCwgMjUxLCAxLCAyOCwgMTYsIDIyMSwgMTY1LCAyOCwgMTYsIDI0OSwgMjQyLCAKLSAgICAyOCwgMTYsIDIyMywgNzgsIDI0NCwgMTE5LCAyOCwgMTYsIDIyMywgNzgsIDI0NCwgMTE4LCAyOCwgMTYsIDIyMywgNzgsIAotICAgIDI0NCwgMTE3LCAyOCwgMTYsIDI0NCwgMTM5LCAyOCwgMTYsIDI0NCwgMTQwLCA1MSwgMjgsIDE2LCAyNTEsIDE1NiwgNzksIAotICAgIDI4LCAxNiwgMjUxLCAzMiwgMjgsIDE2LCAyNTEsIDE2NywgMjgsIDE2LCAxMjcsIDI4LCAxNiwgMjI2LCAxOTcsIDIxOCwgCi0gICAgMTY1LCAyOCwgMTYsIDIxNSwgNTcsIDIxOCwgMTY1LCAyOCwgMTYsIDIxNiwgMTQzLCAyMTgsIDE2NSwgMjgsIDE2LCAyNDQsIAotICAgIDE4LCAyMTgsIDE2NSwgMjgsIDE2LCAyNDQsIDg4LCAyMTgsIDE2NSwgMjgsIDE2LCAyMTksIDEyNiwgMjE4LCAxNjUsIDI4LCAKLSAgICAxNiwgMjE5LCAxMjQsIDI0NCwgMiwgMjgsIDE2LCAyNDQsIDE2LCAyNDQsIDIsIDI4LCAxNiwgMjQzLCAyMTAsIDI1MCwgMjIsIAotICAgIDI4LCAxNiwgMjQzLCAyMTAsIDI1MCwgMjMsIDIyNiwgMTQwLCAyNTQsIDE1MCwgMjgsIDE2LCAyNDMsIDIxMCwgMjUwLCAyMywgCi0gICAgMjI2LCAxNDAsIDI1MiwgMTMwLCAyOCwgMTYsIDI1MSwgNzUsIDI1MCwgMjIsIDI4LCAxNiwgMjQ1LCAxNSwgMjUwLCAyMiwgCi0gICAgMjgsIDE2LCAyNDUsIDE1LCAyNTAsIDIzLCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjQ1LCAxNSwgMjUwLCAyMywgCi0gICAgMjI2LCAxNDAsIDI1MiwgMTMwLCAyOCwgMTYsIDI0NiwgOTEsIDI1MCwgMjEsIDI4LCAxNiwgMjQ2LCA5MSwgMjUwLCAyMCwgCi0gICAgMjgsIDE2LCAyMzAsIDkwLCAyMzEsIDk1LCAyMjMsIDY0LCAyOCwgMTYsIDUyLCAyMjAsIDc3LCAyOCwgMTYsIDUyLCAyNDQsIAotICAgIDczLCAyOCwgMTYsIDI0NCwgNzQsIDIxNCwgMTYzLCAyOCwgMTYsIDI0NCwgNzQsIDI0NiwgMTE0LCAyOCwgMTYsIDIyOSwgCi0gICAgMTkzLCAyMTQsIDE2MywgMjgsIDE2LCAyMjksIDE5MywgMjQ2LCAxMTQsIDI4LCAxNiwgMjIwLCA3OCwgMjE0LCAxNjMsIDI4LCAKLSAgICAxNiwgMjIwLCA3OCwgMjQ2LCAxMTQsIDI4LCAxNiwgMjI0LCAyNSwgMTM4LCAyMjAsIDc3LCAyOCwgMTYsIDIyNCwgMjUsIAotICAgIDEzOCwgMjQ0LCA3MywgMjgsIDE2LCAyNDksIDIyNCwgMjE2LCA4OCwgMjgsIDE2LCAyNDksIDkzLCAyMTYsIDg4LCAyOCwgCi0gICAgMTYsIDIyNiwgMTQwLCAyNTQsIDE1MCwgMjgsIDE2LCAyMjYsIDE0MCwgMjUyLCAxMzAsIDI4LCAxNiwgMjI0LCA3LCAyNTQsIAotICAgIDE1MCwgMjgsIDE2LCAyMjQsIDcsIDI1MiwgMTMwLCAyOCwgMTYsIDIzMCwgOTMsIDIyMywgNjQsIDI4LCAxNiwgMjExLCAKLSAgICAyNTEsIDIyMywgNjQsIDI4LCAxNiwgMTYzLCAyMjMsIDY0LCAyOCwgMTYsIDIyNCwgMjUsIDIyMywgNjQsIDI4LCAxNiwgCi0gICAgMjQ1LCAxOTcsIDIyMywgNjQsIDI4LCAxNiwgMjE5LCAxMjAsIDIyMywgNjQsIDI4LCAxNiwgMjE2LCAxNjEsIDIyMywgNjQsIAotICAgIDI4LCAxNiwgMjE5LCAxMTIsIDIyMywgNjQsIDI4LCAxNiwgMTIzLCAyNDAsIDIxOCwgMjE1LCA3MSwgMjIzLCA2NCwgMjgsIAotICAgIDE2LCAyMTEsIDE3OSwgMjI4LCA0OCwgMjgsIDE2LCA5NiwgMjI4LCA0OCwgMjgsIDE2LCAyNTAsIDQ0LCAyMTEsIDE3OSwgCi0gICAgMjI4LCA0OCwgMjgsIDE2LCA0MiwgMjI4LCA0OSwgMjExLCAyNTMsIDI4LCAxNiwgNDIsIDIyOCwgNDksIDI1MSwgMjI5LCAKLSAgICAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjAsIAotICAgIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCA0MywgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgCi0gICAgNDksIDQzLCAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgCi0gICAgMjI3LCAyMjgsIDQ5LCA0NCwgMjUxLCAyMjksIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgNDksIDEyNCwgMjExLCAyNTMsIDI4LCAKLSAgICAxNiwgMjE1LCAyMjcsIDIyOCwgNDksIDEyNCwgMjUxLCAyMjksIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgNDksIDEyMCwgNDQsIAotICAgIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjAsIDQ0LCAyNTEsIDIyOSwgMjgsIDE2LCAyMzAsIDEzNCwgCi0gICAgMjI4LCA0OSwgMjExLCAyNTMsIDI4LCAxNiwgMjMwLCAxMzQsIDIyOCwgNDksIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI0LCAKLSAgICAyMjgsIDQ5LCAxMjQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI0LCAyMjgsIDQ5LCAxMjQsIDI1MSwgMjI5LCAyOCwgMTYsIAotICAgIDIyNiwgOCwgMjI4LCA0OCwgMjgsIDE2LCAyMTMsIDEzMiwgMjI4LCA0OCwgMjgsIDE2LCAyMjgsIDQ5LCAyNTEsIDIyOSwgCi0gICAgMjgsIDE2LCAyMjcsIDIwNywgMjI4LCA0OCwgMjgsIDE2LCAyNDksIDI0OSwgMjI4LCA0OSwgMjExLCAyNTMsIDI4LCAxNiwgCi0gICAgMjQ5LCAyNDksIDIyOCwgNDksIDI1MSwgMjI5LCAyOCwgMTYsIDI1MSwgMTU0LCAyOCwgMTYsIDIxMSwgMjUxLCAyMjgsIDUyLCAKLSAgICAyOCwgMTYsIDE2MywgMjI4LCA1MiwgMjgsIDE2LCAyMjQsIDI1LCAyMjgsIDUyLCAyOCwgMTYsIDI0NSwgMTk3LCAyMjgsIAotICAgIDUyLCAyOCwgMTYsIDIxOSwgMTIwLCAyMjgsIDUyLCAyOCwgMTYsIDIxNiwgMTYxLCAyMjgsIDUyLCAyOCwgMTYsIDIxOSwgCi0gICAgMTEyLCAyMjgsIDUyLCAyOCwgMTYsIDEyMywgMjQwLCAyMTgsIDIxNSwgNzEsIDIyOCwgNTIsIDI4LCAxNiwgMzgsIDIxOCwgCi0gICAgMTQxLCAyOCwgMTYsIDM4LCAyMTgsIDI0MiwgMjE4LCAxNDEsIDI4LCAxNiwgMzgsIDIxNSwgMjM1LCAyOCwgMTYsIDM4LCAKLSAgICAyMTUsIDIzNCwgMjgsIDE2LCAzOCwgMjE1LCAyMzMsIDI4LCAxNiwgMjQ0LCAxMDksIDIxNSwgMjM1LCAyOCwgMTYsIDI0NCwgCi0gICAgMTA5LCAyMTUsIDIzNCwgMjgsIDE2LCAyNDQsIDEwOSwgMjE1LCAyMzMsIDI4LCAxNiwgMzgsIDI1MywgMTk3LCAyNDcsIAotICAgIDEyOCwgMjgsIDE2LCAzOCwgMjQ0LCA4MCwgMjgsIDE2LCAzOCwgMjQ0LCA3OSwgMjgsIDE2LCAzOCwgMjQ0LCA3OCwgMjgsIAotICAgIDE2LCAzOCwgMjQ0LCA3NywgMjgsIDE2LCAzOCwgMjQ0LCA3NiwgMjgsIDE2LCAyNTIsIDY2LCAyNTIsIDgyLCAyOCwgMTYsIAotICAgIDI0NSwgMTUxLCAyNTIsIDgyLCAyOCwgMTYsIDI1MiwgNjYsIDIxNiwgMTEyLCAyOCwgMTYsIDI0NSwgMTUxLCAyMTYsIDExMiwgCi0gICAgMjgsIDE2LCAyNTIsIDY2LCAyMTksIDgyLCAyOCwgMTYsIDI0NSwgMTUxLCAyMTksIDgyLCAyOCwgMTYsIDI1MiwgNjYsIAotICAgIDIyNSwgMTE4LCAyOCwgMTYsIDI0NSwgMTUxLCAyMjUsIDExOCwgMjgsIDE2LCAzOCwgMjU1LCAyMywgMjgsIDE2LCAzOCwgCi0gICAgMjE4LCAxNjcsIDI4LCAxNiwgMzgsIDIxNiwgMjM5LCAyOCwgMTYsIDM4LCAyMTgsIDE2OCwgMjgsIDE2LCAzOCwgMjMxLCAKLSAgICAxNjcsIDI4LCAxNiwgMzgsIDIzMSwgMTY2LCAyOCwgMTYsIDM4LCAyNTUsIDIyLCAyOCwgMTYsIDM4LCAyMzIsIDExOCwgMjgsIAotICAgIDE2LCAyNTQsIDYsIDIxNCwgMTYzLCAyOCwgMTYsIDI1NCwgNiwgMjQ2LCAxMTQsIDI4LCAxNiwgMzgsIDI0NywgMTQzLCAyOCwgCi0gICAgMTYsIDM4LCAyMjIsIDIzNCwgMjgsIDE2LCAzOCwgMjQ0LCA2NiwgMjgsIDE2LCAzOCwgMjE5LCA3OCwgMjgsIDE2LCAzOCwgCi0gICAgMjUyLCA0NiwgMjgsIDE2LCAzOCwgNTIsIDIxNiwgMjAsIDI4LCAxNiwgMzgsIDIxNSwgMjEyLCAyMTYsIDIwLCAyOCwgMTYsIAotICAgIDIyMiwgMjM4LCAyOCwgMTYsIDIxOCwgNzYsIDI4LCAxNiwgMjEwLCAxNTksIDI4LCAxNiwgMjI1LCAxMTAsIDI4LCAxNiwgCi0gICAgMjMxLCAzMCwgMjgsIDE2LCAyNDQsIDI1LCAyOCwgMTYsIDI0OSwgMTQ2LCAyOCwgMTYsIDI0OCwgODYsIDI4LCAxNiwgMjQyLCAKLSAgICAxNTcsIDIyOCwgNTMsIDIxOSwgOTcsIDI4LCAxNiwgMjQyLCAxNTcsIDIyOCwgNTMsIDIyOCwgODAsIDIxOSwgOTcsIDI4LCAKLSAgICAxNiwgMjE2LCAxLCAyOCwgMTYsIDIxNSwgOTUsIDI4LCAxNiwgMjM1LCAyMDAsIDIxNSwgOTUsIDI4LCAxNiwgMjE1LCA5NiwgCi0gICAgMjE5LCA5NywgMjgsIDE2LCAyMTUsIDk2LCAyMTQsIDE2MywgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCAxMDQsIDI4LCAxNiwgCi0gICAgMjI2LCAxNTIsIDIxOCwgMTAxLCAyOCwgMTYsIDIyNiwgMTUyLCAyMTgsIDEwMCwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCAKLSAgICA5OSwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCA5OCwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCA5NywgMjgsIDE2LCAyMjYsIAotICAgIDE1MiwgMjE4LCA5NiwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCA5NSwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCA5NCwgMjgsIAotICAgIDE2LCAyMjYsIDE1MiwgMjE4LCAxMDMsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgMTAyLCAyOCwgMTYsIDI0MSwgMjUyLCAyOCwgCi0gICAgMTYsIDIyOSwgMTEwLCAyOCwgMTYsIDI0NSwgMTUxLCA2NCwgMjE4LCAxMzUsIDI4LCAxNiwgMjQ4LCA3OSwgMjE5LCA5NywgCi0gICAgMjgsIDE2LCAzOCwgMTI0LCAyNTEsIDE3NywgMjgsIDE2LCAzOCwgMTIwLCAyNTEsIDE3NywgMjgsIDE2LCAzOCwgMjQyLCA3LCAKLSAgICAyOCwgMTYsIDM4LCAyMTksIDY5LCAyMjUsIDQ2LCAyOCwgMTYsIDIyNSwgMjE5LCA3OSwgMjgsIDE2LCAyMjUsIDIxOSwgCi0gICAgMTIwLCA3OSwgMjgsIDE2LCAxNjMsIDIyNSwgMjE5LCA3OSwgMjgsIDE2LCAyNDIsIDE4OSwgMjE0LCAxNjMsIDI4LCAxNiwgCi0gICAgMjQyLCAxODksIDI0NiwgMTE0LCAyOCwgMTYsIDIsIDI0NCwgMTA4LCAyOCwgMTYsIDI0OCwgMTg4LCAyOCwgMTYsIDI0OCwgCi0gICAgMTg5LCAyNTQsIDE2MywgMjgsIDE2LCAyMzEsIDEzOCwgMjgsIDE2LCAyMzIsIDEzNSwgMjgsIDE2LCAyNTEsIDE1MSwgMjgsIAotICAgIDE2LCAyMjAsIDE1NiwgMjExLCAyNTMsIDI4LCAxNiwgMjIwLCAxNTYsIDI1MSwgMjI5LCAyOCwgMTYsIDIzMCwgMTg5LCAyOCwgCi0gICAgMTYsIDIzMCwgMTkwLCAyNTEsIDIyOSwgMjgsIDE2LCAyMjAsIDE1MCwgMjExLCAyNTMsIDI4LCAxNiwgMjIwLCAxNTAsIAotICAgIDI1MSwgMjI5LCAyOCwgMTYsIDI0MywgMjI3LCAyMTEsIDI1MywgMjgsIDE2LCAyNDMsIDIyNywgMjUxLCAyMjksIDI4LCAxNiwgCi0gICAgMjMyLCAxMzYsIDIyNSwgMTgzLCAyMjMsIDY0LCAyOCwgMTYsIDIzMiwgMTM2LCAyMzYsIDExLCAyMjMsIDY0LCAyOCwgMTYsIAotICAgIDI1MSwgMTUyLCAyMjMsIDY0LCAyOCwgMTYsIDIyMCwgMTU2LCAyMjMsIDY0LCAyOCwgMTYsIDIzMCwgMTkwLCAyMjMsIDY0LCAKLSAgICAyOCwgMTYsIDIyMCwgMTUwLCAyMjMsIDY0LCAyOCwgMTYsIDIxNiwgMjUwLCAyMjUsIDE4MSwgMjQ5LCAxMTUsIDIyNCwgCi0gICAgMTc3LCAyMjUsIDE4MiwgMjgsIDE2LCAyMTYsIDI1MCwgMjI1LCAxODEsIDI0OSwgMTE1LCAyMjQsIDE3NywgMjM2LCAxMCwgCi0gICAgMjgsIDE2LCAyMTYsIDI1MCwgMjI1LCAxODEsIDI0OSwgMTE1LCAyMjQsIDE3NywgMjI1LCAxODMsIDI0NywgMjE5LCAyOCwgCi0gICAgMTYsIDIxNiwgMjUwLCAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIDE3NywgMjI1LCAxODIsIDI4LCAxNiwgMjE2LCAyNTAsIAotICAgIDIzNiwgOSwgMjQ5LCAxMTUsIDIyNCwgMTc3LCAyMzYsIDEwLCAyOCwgMTYsIDIxNiwgMjUwLCAyMzYsIDksIDI0OSwgMTE1LCAKLSAgICAyMjQsIDE3NywgMjM2LCAxMSwgMjQ3LCAyMTksIDI4LCAxNiwgMjE2LCAyNTAsIDIzNiwgOSwgMjQ5LCAxMTUsIDIyNCwgCi0gICAgMTc3LCAyMzYsIDExLCAyNDcsIDIxOCwgMjgsIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgMjI0LCAxNzcsIAotICAgIDIzNiwgMTEsIDI0NywgMjE3LCAyOCwgMTYsIDI0OSwgMTQxLCAyOCwgMTYsIDI0MiwgMTMzLCAyNTEsIDc1LCAyNTAsIDIyLCAKLSAgICAyOCwgMTYsIDI0MiwgMTMzLCAyNDUsIDE1LCAyNTAsIDIyLCAyOCwgMTYsIDQyLCAyNTMsIDE2NiwgMjgsIDE2LCAyMTMsIAotICAgIDE1MSwgMjgsIDE2LCAyMjUsIDE3LCAyOCwgMTYsIDI1MCwgMTMsIDI4LCAxNiwgMjIxLCAyMDUsIDI4LCAxNiwgMjUwLCAxNywgCi0gICAgMjgsIDE2LCAyMTYsIDgsIDI4LCAxNiwgMjI0LCAyNDUsIDI4LCAxNiwgMjI0LCAyNDYsIDI0NCwgNjgsIDI4LCAxNiwgMjIxLCAKLSAgICAyMDYsIDI0NCwgNjgsIDI4LCAxNiwgMjE2LCA5LCAyMjMsIDYxLCAyOCwgMTYsIDIyNSwgMTY2LCAyMTgsIDY3LCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMzAsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIxOSwgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMjA5LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMDIsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE5NCwgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMTg4LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxODcsIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDE4NiwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTg1LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjksIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDIyOCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjI3LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAyMjYsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjI0LCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjMsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyMiwgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMjIxLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjAsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIxOCwgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjE3LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTYsIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIxNSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjE0LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTMsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDE5MiwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTkxLCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAxOTAsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE4OSwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjMwLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTksIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwMiwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMTk0LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxODcsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE4NiwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjI4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMjcsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDIyNiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjI1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMjIsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyMSwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjIwLCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMTUsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIxNCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjEzLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTIsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIxMSwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMjEwLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDgsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwNywgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjA2LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDUsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDIwNCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjAzLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDEsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwMCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTk5LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAxOTgsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5NywgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTk2LCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTUsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5MywgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMTkyLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTEsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5MCwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMTg5LCAzOCwgMjYsIDI4LCAyMTUsIDIwOSwgMzgsIDI2LCAyOCwgMjE2LCAyMjQsIDM4LCAKLSAgICAyNiwgMjgsIDIyNSwgMTkxLCAyNiwgMjgsIDIzMywgMzcsIDIzMCwgMTQ3LCAzMSwgMjQ1LCAyMzEsIDI0NywgMjMyLCAzMSwgCi0gICAgMjQxLCAyMjksIDI0NSwgMjMxLCAyNDcsIDIzMiwgMzEsIDI0MCwgMjIxLCAyNDUsIDIzMSwgMjQ3LCAyMzIsIDMxLCAyNDUsIAotICAgIDIzMCwgMjQxLCAyMzAsIDI0NywgMjMyLCAzMSwgMjQ1LCAyMzAsIDI0MCwgMjIwLCAyNDcsIDIzMiwgMzEsIDI0NSwgMjMxLCAKLSAgICAxODAsIDMxLCAyNTAsIDE4MiwgMTgwLCAzMSwgMjQzLCAyMzYsIDI1MCwgNDMsIDE4MCwgMzEsIDIzMCwgMTgyLCAxODAsIAotICAgIDMxLCAyNTIsIDEzOCwgMTgwLCAzMSwgMjM0LCAxODUsIDIxOSwgODEsIDE4MCwgMzEsIDI0OSwgMTg3LCAxODAsIDMxLCAKLSAgICAyNTMsIDI0MSwgMTgwLCAzMSwgMjI2LCAxNjcsIDE4MCwgMzEsIDI1MSwgMTYxLCAyMjYsIDEzNCwgMTgwLCAzMSwgMjQ4LCAKLSAgICA4MSwgMTc3LCAyNDcsIDE4NywgMTgwLCAzMSwgMjQ3LCAxODQsIDE4MCwgMzEsIDIxMCwgMjIyLCAxODAsIDMxLCAyMzUsIAotICAgIDI1NCwgMTgwLCAzMSwgMjI1LCAyMDAsIDE4MCwgMzEsIDIyMywgMTMwLCAxODAsIDMxLCAyNDksIDE5NywgMTgwLCAzMSwgCi0gICAgMjQxLCA2NywgMjUyLCAxOTIsIDE4MCwgMzEsIDIxMiwgNTksIDE4MCwgMzEsIDI0NCwgNDcsIDE4MCwgMzEsIDI1NCwgMjU1LCAKLSAgICAxODAsIDMxLCAyMjMsIDkyLCAxODAsIDMxLCAyMjMsIDY4LCAxODAsIDMxLCAyNDUsIDIyOSwgMTgwLCAzMSwgMjM1LCA1OSwgCi0gICAgMTgwLCAzMSwgMjQ5LCAxOTIsIDE4MCwgMzEsIDI0NSwgMTUwLCAxODAsIDMxLCAyNDYsIDYwLCAxODAsIDMxLCAyNTAsIAotICAgIDE1MywgMTgwLCAzMSwgMjQ4LCA5MCwgMTgwLCAzMSwgMjMsIDIyMywgNjcsIDE4MCwgMzEsIDIyNiwgODUsIDE4MCwgMzEsIAotICAgIDIzMywgNDAsIDE4MCwgMzEsIDI1MCwgNiwgMTgwLCAzMSwgMjM0LCA4MywgMTgwLCAzMSwgMjQzLCA5MywgMTgwLCAzMSwgCi0gICAgMjE4LCAxMTQsIDE4MCwgMzEsIDIyNCwgMTMzLCAxODAsIDMxLCAyNDMsIDIzNSwgMTgwLCAzMSwgMjIzLCA2OSwgMTgwLCAKLSAgICAzMSwgMjMzLCA3NywgMTc3LCAyMzAsIDE2MiwgMTgwLCAzMSwgMjIzLCA2NSwgMTgwLCAzMSwgMjQyLCAxNzUsIDIxNiwgNDMsIAotICAgIDIzMSwgODEsIDE4MCwgMzEsIDI0NSwgMTUyLCAxODAsIDMxLCAyMTgsIDEyNiwgMTgwLCAzMSwgMjQyLCAxMzUsIDE4MCwgCi0gICAgMzEsIDI0NSwgMTQ0LCAxODAsIDMxLCAyMjUsIDIzOSwgMTgwLCAzMSwgMjIyLCAyMjgsIDE4MCwgMzEsIDI0NCwgNjcsIAotICAgIDE4MCwgMzEsIDIxNCwgOCwgMTc3LCAyMTIsIDQ0LCAxODAsIDMxLCAyNDksIDIwMSwgMTgwLCAzMSwgMjMxLCA5NCwgMTgwLCAKLSAgICAzMSwgMjQ1LCA2OSwgMTgwLCAzMSwgMjE0LCAxNzIsIDE4MCwgMzEsIDI0NywgMjIwLCAxODAsIDMxLCAyNTAsIDgsIDIzMCwgCi0gICAgMTE1LCAxODAsIDMxLCAyNDIsIDExMywgMTgwLCAzMSwgMjQzLCA5NCwgMjM2LCA2LCAxODAsIDMxLCAyMzEsIDE0NiwgMTgwLCAKLSAgICAzMSwgMjU1LCAxOSwgMTgwLCAzMSwgMjQ1LCAxNjUsIDE4MCwgMzEsIDI0NiwgMTE3LCAxODAsIDMxLCAyMTIsIDQyLCAxODAsIAotICAgIDMxLCAyMTksIDE1MiwgMTgwLCAzMSwgMjM1LCAyMjksIDE4MCwgMzEsIDI0OCwgNTAsIDE4MCwgMzEsIDI0OCwgMTY4LCAKLSAgICAxODAsIDMxLCAyNDcsIDIxNiwgMTgwLCAzMSwgMjQ1LCAzNywgMTgwLCAzMSwgMjIwLCAxMTcsIDE4MCwgMzEsIDIxOCwgCi0gICAgMTMwLCAxODAsIDMxLCAyNDIsIDksIDE4MCwgMzEsIDI0OSwgMjIwLCAxODAsIDMxLCAyNTAsIDMsIDE4MCwgMzEsIDI0NCwgCi0gICAgMTg1LCAxODAsIDMxLCAyNTQsIDIyMSwgMTgwLCAzMSwgMjQ5LCAyMTksIDE4MCwgMzEsIDIyNiwgMjAxLCAyMTYsIDE5NywgCi0gICAgMjEzLCAyNDIsIDE4MCwgMzEsIDI0NywgMjQwLCAxODAsIDMxLCAyMzMsIDEzMCwgMTgwLCAzMSwgMjQ0LCAyMSwgMjQ5LCAKLSAgICAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIDExMSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIDEwNSwgCi0gICAgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIDE1OCwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIAotICAgIDE2MSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIDE5MCwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgCi0gICAgMjEsIDE5NSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIDE5OSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIAotICAgIDE3NCwgMjEsIDE5NiwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTQsIDE3NCwgMjEsIDIwMSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAKLSAgICAyMTYsIDI0NCwgMjEsIDExMSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDEwNSwgMjQ5LCAxNTcsIDIyMiwgCi0gICAgMjA0LCAyMTYsIDI0NCwgMjEsIDE1OCwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDE2MSwgMjQ5LCAxNTcsIAotICAgIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDE5MCwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDE5NSwgMjQ5LCAKLSAgICAxNTcsIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDE5OSwgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDE5NiwgCi0gICAgMjQ5LCAxNTcsIDIyMiwgMjA0LCAyMTYsIDI0NCwgMjEsIDIwMSwgMTEsIDIzLCA2LCA2MSwgMTEsIDIzLCA2LCAyNTMsIAotICAgIDE2NiwgMTEsIDIzLCA2LCAyNTEsIDc0LCAxMSwgMjMsIDYsIDI0OSwgNjgsIDExLCAyMywgNiwgNzYsIDExLCAyMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDIzLCA2LCAyNDMsIDIwOSwgMTEsIDIzLCA2LCAyNDIsIDY3LCAxMSwgMjMsIDYsIDc0LCAxMSwgMjMsIAotICAgIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDYsIDIzNSwgMjksIDExLCAyMywgNiwgMTU2LCAxMSwgMjMsIDYsIDE5NCwgMTEsIDIzLCAKLSAgICA2LCAyMzAsIDMwLCAxMSwgMjMsIDYsIDc4LCAxMSwgMjMsIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDYsIDIyNCwgOTksIDExLCAKLSAgICAyMywgNiwgMTUzLCAxMSwgMjMsIDYsIDIyMiwgOTMsIDExLCAyMywgNiwgMjE3LCAxNTMsIDExLCAyMywgNiwgNjksIDExLCAKLSAgICAyMywgNiwgMjE0LCAxMDUsIDExLCAyMywgNiwgMjEyLCA5OCwgMTEsIDIzLCA2LCAyMTEsIDE3OCwgMTEsIDIzLCA2LCAyMTEsIAotICAgIDExNywgMTEsIDIzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCA0LCA2MSwgMTEsIDIzLCA0LCAyNTMsIDE2NiwgMTEsIDIzLCA0LCAKLSAgICAyNTEsIDc0LCAxMSwgMjMsIDQsIDI0OSwgNjgsIDExLCAyMywgNCwgNzYsIDExLCAyMywgNCwgMjQ1LCAxNCwgMTEsIDIzLCAKLSAgICA0LCAyNDMsIDIwOSwgMTEsIDIzLCA0LCAyNDIsIDY3LCAxMSwgMjMsIDQsIDc0LCAxMSwgMjMsIDQsIDIzNSwgMTUwLCAxMSwgCi0gICAgMjMsIDQsIDIzNSwgMjksIDExLCAyMywgNCwgMTU2LCAxMSwgMjMsIDQsIDE5NCwgMTEsIDIzLCA0LCAyMzAsIDMwLCAxMSwgCi0gICAgMjMsIDQsIDc4LCAxMSwgMjMsIDQsIDIyNiwgMTA5LCAxMSwgMjMsIDQsIDIyNCwgOTksIDExLCAyMywgNCwgMTUzLCAxMSwgCi0gICAgMjMsIDQsIDIyMiwgOTMsIDExLCAyMywgNCwgMjE3LCAxNTMsIDExLCAyMywgNCwgNjksIDExLCAyMywgNCwgMjE0LCAxMDUsIAotICAgIDExLCAyMywgNCwgMjEyLCA5OCwgMTEsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCA0LCAyMTEsIDExNywgMTEsIDIzLCA0LCAKLSAgICAyMTAsIDE1OSwgMTEsIDMyLCA2LCA2MSwgMTEsIDMyLCA2LCAyNTMsIDE2NiwgMTEsIDMyLCA2LCAyNTEsIDc0LCAxMSwgMzIsIAotICAgIDYsIDI0OSwgNjgsIDExLCAzMiwgNiwgNzYsIDExLCAzMiwgNiwgMjQ1LCAxNCwgMTEsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIAotICAgIDMyLCA2LCAyNDIsIDY3LCAxMSwgMzIsIDYsIDc0LCAxMSwgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMzIsIDYsIDIzNSwgMjksIAotICAgIDExLCAzMiwgNiwgMTU2LCAxMSwgMzIsIDYsIDE5NCwgMTEsIDMyLCA2LCAyMzAsIDMwLCAxMSwgMzIsIDYsIDc4LCAxMSwgCi0gICAgMzIsIDYsIDIyNiwgMTA5LCAxMSwgMzIsIDYsIDIyNCwgOTksIDExLCAzMiwgNiwgMTUzLCAxMSwgMzIsIDYsIDIyMiwgOTMsIAotICAgIDExLCAzMiwgNiwgMjE3LCAxNTMsIDExLCAzMiwgNiwgNjksIDExLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzMiwgNiwgMjEyLCAKLSAgICA5OCwgMTEsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDMyLCA2LCAyMTEsIDExNywgMTEsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIAotICAgIDMyLCA0LCA2MSwgMTEsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDMyLCA0LCAyNTEsIDc0LCAxMSwgMzIsIDQsIDI0OSwgNjgsIAotICAgIDExLCAzMiwgNCwgNzYsIDExLCAzMiwgNCwgMjQ1LCAxNCwgMTEsIDMyLCA0LCAyNDMsIDIwOSwgMTEsIDMyLCA0LCA3NCwgCi0gICAgMTEsIDMyLCA0LCAyMzUsIDE1MCwgMTEsIDMyLCA0LCAyMzUsIDI5LCAxMSwgMzIsIDQsIDE1NiwgMTEsIDMyLCA0LCAxOTQsIAotICAgIDExLCAzMiwgNCwgMjMwLCAzMCwgMTEsIDMyLCA0LCA3OCwgMTEsIDMyLCA0LCAyMjYsIDEwOSwgMTEsIDMyLCA0LCAyMjQsIAotICAgIDk5LCAxMSwgMzIsIDQsIDE1MywgMTEsIDMyLCA0LCAyMjIsIDkzLCAxMSwgMzIsIDQsIDIxNywgMTUzLCAxMSwgMzIsIDQsIAotICAgIDY5LCAxMSwgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzIsIDQsIDIxMiwgOTgsIDExLCAzMiwgNCwgMjExLCAxNzgsIDExLCAzMiwgCi0gICAgNCwgMjExLCAxMTcsIDExLCAzMiwgNCwgMjEwLCAxNTksIDExLCAyMywgMzIsIDYsIDYxLCAxMSwgMjMsIDMyLCA2LCAyNTMsIAotICAgIDE2NiwgMTEsIDIzLCAzMiwgNiwgMjUxLCA3NCwgMTEsIDIzLCAzMiwgNiwgMjQ5LCA2OCwgMTEsIDIzLCAzMiwgNiwgNzYsIAotICAgIDExLCAyMywgMzIsIDYsIDI0NSwgMTQsIDExLCAyMywgMzIsIDYsIDI0MywgMjA5LCAxMSwgMjMsIDMyLCA2LCAyNDIsIDY3LCAKLSAgICAxMSwgMjMsIDMyLCA2LCA3NCwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxNTAsIDExLCAyMywgMzIsIDYsIDIzNSwgMjksIDExLCAKLSAgICAyMywgMzIsIDYsIDE1NiwgMTEsIDIzLCAzMiwgNiwgMTk0LCAxMSwgMjMsIDMyLCA2LCAyMzAsIDMwLCAxMSwgMjMsIDMyLCAKLSAgICA2LCA3OCwgMTEsIDIzLCAzMiwgNiwgMjI2LCAxMDksIDExLCAyMywgMzIsIDYsIDIyNCwgOTksIDExLCAyMywgMzIsIDYsIAotICAgIDE1MywgMTEsIDIzLCAzMiwgNiwgMjIyLCA5MywgMTEsIDIzLCAzMiwgNiwgMjE3LCAxNTMsIDExLCAyMywgMzIsIDYsIDY5LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNiwgMjEyLCA5OCwgMTEsIDIzLCAzMiwgNiwgMjExLCAxNzgsIAotICAgIDExLCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgNCwgNjEsIDExLCAKLSAgICAyMywgMzIsIDQsIDI1MywgMTY2LCAxMSwgMjMsIDMyLCA0LCAyNTEsIDc0LCAxMSwgMjMsIDMyLCA0LCAyNDksIDY4LCAxMSwgCi0gICAgMjMsIDMyLCA0LCA3NiwgMTEsIDIzLCAzMiwgNCwgMjQ1LCAxNCwgMTEsIDIzLCAzMiwgNCwgMjQzLCAyMDksIDExLCAyMywgCi0gICAgMzIsIDQsIDI0MiwgNjcsIDExLCAyMywgMzIsIDQsIDc0LCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE1MCwgMTEsIDIzLCAzMiwgCi0gICAgNCwgMjM1LCAyOSwgMTEsIDIzLCAzMiwgNCwgMTU2LCAxMSwgMjMsIDMyLCA0LCAxOTQsIDExLCAyMywgMzIsIDQsIDIzMCwgCi0gICAgMzAsIDExLCAyMywgMzIsIDQsIDc4LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDEwOSwgMTEsIDIzLCAzMiwgNCwgMjI0LCA5OSwgCi0gICAgMTEsIDIzLCAzMiwgNCwgMTUzLCAxMSwgMjMsIDMyLCA0LCAyMjIsIDkzLCAxMSwgMjMsIDMyLCA0LCAyMTcsIDE1MywgMTEsIAotICAgIDIzLCAzMiwgNCwgNjksIDExLCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMjMsIAotICAgIDMyLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAzMiwgNCwgMjExLCAxMTcsIDExLCAyMywgMzIsIDQsIDIxMCwgMTU5LCAxMSwgCi0gICAgMTE5LCA2LCA2MSwgMTEsIDExOSwgNiwgMjUxLCA3NCwgMTEsIDExOSwgNiwgMjQ5LCA2OCwgMTEsIDExOSwgNiwgMjQzLCAKLSAgICAyMDksIDExLCAxMTksIDYsIDIzNSwgMTUwLCAxMSwgMTE5LCA2LCAyMzUsIDI5LCAxMSwgMTE5LCA2LCAyMzAsIDMwLCAxMSwgCi0gICAgMTE5LCA2LCA3OCwgMTEsIDExOSwgNiwgMjI2LCAxMDksIDExLCAxMTksIDYsIDIyNCwgOTksIDExLCAxMTksIDYsIDIyMiwgCi0gICAgOTMsIDExLCAxMTksIDYsIDIxNywgMTUzLCAxMSwgMTE5LCA2LCA2OSwgMTEsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAxMTksIAotICAgIDYsIDIxMiwgOTgsIDExLCAxMTksIDYsIDIxMSwgMTc4LCAxMSwgMTE5LCA2LCAyMTEsIDExNywgMTEsIDExOSwgNiwgMjEwLCAKLSAgICAxNTksIDExLCAxMTksIDQsIDYxLCAxMSwgMTE5LCA0LCAyNTMsIDE2NiwgMTEsIDExOSwgNCwgMjUxLCA3NCwgMTEsIDExOSwgCi0gICAgNCwgMjQ5LCA2OCwgMTEsIDExOSwgNCwgMjQ1LCAxNCwgMTEsIDExOSwgNCwgMjQyLCA2NywgMTEsIDExOSwgNCwgNzQsIDExLCAKLSAgICAxMTksIDQsIDIzNSwgMTUwLCAxMSwgMTE5LCA0LCAyMzUsIDI5LCAxMSwgMTE5LCA0LCAxNTYsIDExLCAxMTksIDQsIDE5NCwgCi0gICAgMTEsIDExOSwgNCwgMjMwLCAzMCwgMTEsIDExOSwgNCwgMjI2LCAxMDksIDExLCAxMTksIDQsIDIyNCwgOTksIDExLCAxMTksIAotICAgIDQsIDE1MywgMTEsIDExOSwgNCwgMjIyLCA5MywgMTEsIDExOSwgNCwgMjE3LCAxNTMsIDExLCAxMTksIDQsIDY5LCAxMSwgCi0gICAgMTE5LCA0LCAyMTQsIDEwNSwgMTEsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDExOSwgNCwgMjExLCAxNzgsIDExLCAxMTksIDQsIAotICAgIDIxMSwgMTE3LCAxMSwgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDIzLCAxMTksIDYsIDYxLCAxMSwgMjMsIDExOSwgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgMTE5LCA2LCAyNTEsIDc0LCAxMSwgMjMsIDExOSwgNiwgMjQ5LCA2OCwgMTEsIDIzLCAxMTksIDYsIAotICAgIDc2LCAxMSwgMjMsIDExOSwgNiwgMjQ1LCAxNCwgMTEsIDIzLCAxMTksIDYsIDI0MywgMjA5LCAxMSwgMjMsIDExOSwgNiwgCi0gICAgMjQyLCA2NywgMTEsIDIzLCAxMTksIDYsIDc0LCAxMSwgMjMsIDExOSwgNiwgMjM1LCAxNTAsIDExLCAyMywgMTE5LCA2LCAKLSAgICAyMzUsIDI5LCAxMSwgMjMsIDExOSwgNiwgMTU2LCAxMSwgMjMsIDExOSwgNiwgMTk0LCAxMSwgMjMsIDExOSwgNiwgMjMwLCAKLSAgICAzMCwgMTEsIDIzLCAxMTksIDYsIDc4LCAxMSwgMjMsIDExOSwgNiwgMjI2LCAxMDksIDExLCAyMywgMTE5LCA2LCAyMjQsIAotICAgIDk5LCAxMSwgMjMsIDExOSwgNiwgMTUzLCAxMSwgMjMsIDExOSwgNiwgMjIyLCA5MywgMTEsIDIzLCAxMTksIDYsIDIxNywgCi0gICAgMTUzLCAxMSwgMjMsIDExOSwgNiwgNjksIDExLCAyMywgMTE5LCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDYsIDIxMiwgCi0gICAgOTgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDIzLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgNiwgCi0gICAgMjEwLCAxNTksIDExLCAyMywgMTE5LCA0LCA2MSwgMTEsIDIzLCAxMTksIDQsIDI1MywgMTY2LCAxMSwgMjMsIDExOSwgNCwgCi0gICAgMjUxLCA3NCwgMTEsIDIzLCAxMTksIDQsIDI0OSwgNjgsIDExLCAyMywgMTE5LCA0LCA3NiwgMTEsIDIzLCAxMTksIDQsIAotICAgIDI0NSwgMTQsIDExLCAyMywgMTE5LCA0LCAyNDMsIDIwOSwgMTEsIDIzLCAxMTksIDQsIDI0MiwgNjcsIDExLCAyMywgMTE5LCAKLSAgICA0LCA3NCwgMTEsIDIzLCAxMTksIDQsIDIzNSwgMTUwLCAxMSwgMjMsIDExOSwgNCwgMjM1LCAyOSwgMTEsIDIzLCAxMTksIDQsIAotICAgIDE1NiwgMTEsIDIzLCAxMTksIDQsIDE5NCwgMTEsIDIzLCAxMTksIDQsIDIzMCwgMzAsIDExLCAyMywgMTE5LCA0LCA3OCwgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIyNiwgMTA5LCAxMSwgMjMsIDExOSwgNCwgMjI0LCA5OSwgMTEsIDIzLCAxMTksIDQsIDE1MywgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIyMiwgOTMsIDExLCAyMywgMTE5LCA0LCAyMTcsIDE1MywgMTEsIDIzLCAxMTksIDQsIDY5LCAKLSAgICAxMSwgMjMsIDExOSwgNCwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMTIsIDk4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAKLSAgICAxNzgsIDExLCAyMywgMTE5LCA0LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDQsIDIxMCwgMTU5LCAxMSwgMTMzLCA2LCA2MSwgCi0gICAgMTEsIDEzMywgNiwgMjUzLCAxNjYsIDExLCAxMzMsIDYsIDI0OSwgNjgsIDExLCAxMzMsIDYsIDc2LCAxMSwgMTMzLCA2LCAKLSAgICAyNDUsIDE0LCAxMSwgMTMzLCA2LCAyNDMsIDIwOSwgMTEsIDEzMywgNiwgMjM1LCAxNTAsIDExLCAxMzMsIDYsIDIzNSwgMjksIAotICAgIDExLCAxMzMsIDYsIDE1NiwgMTEsIDEzMywgNiwgMTk0LCAxMSwgMTMzLCA2LCAyMzAsIDMwLCAxMSwgMTMzLCA2LCA3OCwgCi0gICAgMTEsIDEzMywgNiwgMjI2LCAxMDksIDExLCAxMzMsIDYsIDIyNCwgOTksIDExLCAxMzMsIDYsIDIyMiwgOTMsIDExLCAxMzMsIAotICAgIDYsIDIxNywgMTUzLCAxMSwgMTMzLCA2LCA2OSwgMTEsIDEzMywgNiwgMjE0LCAxMDUsIDExLCAxMzMsIDYsIDIxMiwgOTgsIAotICAgIDExLCAxMzMsIDYsIDIxMSwgMTc4LCAxMSwgMTMzLCA2LCAyMTEsIDExNywgMTEsIDEzMywgNCwgNjEsIDExLCAxMzMsIDQsIAotICAgIDI1MywgMTY2LCAxMSwgMTMzLCA0LCAyNTEsIDc0LCAxMSwgMTMzLCA0LCAyNDksIDY4LCAxMSwgMTMzLCA0LCA3NiwgMTEsIAotICAgIDEzMywgNCwgMjQ1LCAxNCwgMTEsIDEzMywgNCwgMjQzLCAyMDksIDExLCAxMzMsIDQsIDI0MiwgNjcsIDExLCAxMzMsIDQsIAotICAgIDc0LCAxMSwgMTMzLCA0LCAyMzUsIDE1MCwgMTEsIDEzMywgNCwgMjM1LCAyOSwgMTEsIDEzMywgNCwgMTU2LCAxMSwgMTMzLCAKLSAgICA0LCAxOTQsIDExLCAxMzMsIDQsIDIzMCwgMzAsIDExLCAxMzMsIDQsIDc4LCAxMSwgMTMzLCA0LCAyMjYsIDEwOSwgMTEsIAotICAgIDEzMywgNCwgMjI0LCA5OSwgMTEsIDEzMywgNCwgMTUzLCAxMSwgMTMzLCA0LCAyMjIsIDkzLCAxMSwgMTMzLCA0LCAyMTcsIAotICAgIDE1MywgMTEsIDEzMywgNCwgNjksIDExLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMTMzLCAKLSAgICA0LCAyMTEsIDE3OCwgMTEsIDEzMywgNCwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMTM5LCA2LCA2MSwgCi0gICAgMTEsIDEzOSwgNiwgMjUzLCAxNjYsIDExLCAxMzksIDYsIDI0OSwgNjgsIDExLCAxMzksIDYsIDc2LCAxMSwgMTM5LCA2LCAKLSAgICAyNDUsIDE0LCAxMSwgMTM5LCA2LCAyNDMsIDIwOSwgMTEsIDEzOSwgNiwgNzQsIDExLCAxMzksIDYsIDIzNSwgMTUwLCAxMSwgCi0gICAgMTM5LCA2LCAyMzUsIDI5LCAxMSwgMTM5LCA2LCAxNTYsIDExLCAxMzksIDYsIDE5NCwgMTEsIDEzOSwgNiwgNzgsIDExLCAKLSAgICAxMzksIDYsIDIyMiwgOTMsIDExLCAxMzksIDYsIDIxNywgMTUzLCAxMSwgMTM5LCA2LCA2OSwgMTEsIDEzOSwgNiwgMjE0LCAKLSAgICAxMDUsIDExLCAxMzksIDYsIDIxMiwgOTgsIDExLCAxMzksIDYsIDIxMSwgMTc4LCAxMSwgMTM5LCA2LCAyMTEsIDExNywgMTEsIAotICAgIDEzOSwgNCwgNjEsIDExLCAxMzksIDQsIDI1MywgMTY2LCAxMSwgMTM5LCA0LCAyNTEsIDc0LCAxMSwgMTM5LCA0LCAyNDksIAotICAgIDY4LCAxMSwgMTM5LCA0LCA3NiwgMTEsIDEzOSwgNCwgMjQ1LCAxNCwgMTEsIDEzOSwgNCwgMjQzLCAyMDksIDExLCAxMzksIAotICAgIDQsIDI0MiwgNjcsIDExLCAxMzksIDQsIDc0LCAxMSwgMTM5LCA0LCAyMzUsIDE1MCwgMTEsIDEzOSwgNCwgMjM1LCAyOSwgCi0gICAgMTEsIDEzOSwgNCwgMTU2LCAxMSwgMTM5LCA0LCAxOTQsIDExLCAxMzksIDQsIDIzMCwgMzAsIDExLCAxMzksIDQsIDc4LCAKLSAgICAxMSwgMTM5LCA0LCAyMjYsIDEwOSwgMTEsIDEzOSwgNCwgMjI0LCA5OSwgMTEsIDEzOSwgNCwgMTUzLCAxMSwgMTM5LCA0LCAKLSAgICAyMjIsIDkzLCAxMSwgMTM5LCA0LCAyMTcsIDE1MywgMTEsIDEzOSwgNCwgNjksIDExLCAxMzksIDQsIDIxNCwgMTA1LCAxMSwgCi0gICAgMTM5LCA0LCAyMTIsIDk4LCAxMSwgMTM5LCA0LCAyMTEsIDE3OCwgMTEsIDEzOSwgNCwgMjExLCAxMTcsIDExLCAxMzksIDQsIAotICAgIDIxMCwgMTU5LCAxMSwgMjMsIDEzMywgNiwgNjEsIDExLCAyMywgMTMzLCA2LCAyNTMsIDE2NiwgMTEsIDIzLCAxMzMsIDYsIAotICAgIDI1MSwgNzQsIDExLCAyMywgMTMzLCA2LCAyNDksIDY4LCAxMSwgMjMsIDEzMywgNiwgNzYsIDExLCAyMywgMTMzLCA2LCAKLSAgICAyNDUsIDE0LCAxMSwgMjMsIDEzMywgNiwgMjQzLCAyMDksIDExLCAyMywgMTMzLCA2LCAyNDIsIDY3LCAxMSwgMjMsIDEzMywgCi0gICAgNiwgNzQsIDExLCAyMywgMTMzLCA2LCAyMzUsIDE1MCwgMTEsIDIzLCAxMzMsIDYsIDIzNSwgMjksIDExLCAyMywgMTMzLCA2LCAKLSAgICAxNTYsIDExLCAyMywgMTMzLCA2LCAxOTQsIDExLCAyMywgMTMzLCA2LCAyMzAsIDMwLCAxMSwgMjMsIDEzMywgNiwgNzgsIAotICAgIDExLCAyMywgMTMzLCA2LCAyMjYsIDEwOSwgMTEsIDIzLCAxMzMsIDYsIDIyNCwgOTksIDExLCAyMywgMTMzLCA2LCAxNTMsIAotICAgIDExLCAyMywgMTMzLCA2LCAyMjIsIDkzLCAxMSwgMjMsIDEzMywgNiwgMjE3LCAxNTMsIDExLCAyMywgMTMzLCA2LCA2OSwgCi0gICAgMTEsIDIzLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDEzMywgNiwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgCi0gICAgMTc4LCAxMSwgMjMsIDEzMywgNiwgMjExLCAxMTcsIDExLCAyMywgMTMzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDYxLCAxMSwgMjMsIDEzMywgNCwgMjUzLCAxNjYsIDExLCAyMywgMTMzLCA0LCAyNTEsIDc0LCAxMSwgMjMsIDEzMywgNCwgCi0gICAgMjQ5LCA2OCwgMTEsIDIzLCAxMzMsIDQsIDc2LCAxMSwgMjMsIDEzMywgNCwgMjQ1LCAxNCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDI0MywgMjA5LCAxMSwgMjMsIDEzMywgNCwgMjQyLCA2NywgMTEsIDIzLCAxMzMsIDQsIDc0LCAxMSwgMjMsIDEzMywgNCwgCi0gICAgMjM1LCAxNTAsIDExLCAyMywgMTMzLCA0LCAyMzUsIDI5LCAxMSwgMjMsIDEzMywgNCwgMTU2LCAxMSwgMjMsIDEzMywgNCwgCi0gICAgMTk0LCAxMSwgMjMsIDEzMywgNCwgMjMwLCAzMCwgMTEsIDIzLCAxMzMsIDQsIDc4LCAxMSwgMjMsIDEzMywgNCwgMjI2LCAKLSAgICAxMDksIDExLCAyMywgMTMzLCA0LCAyMjQsIDk5LCAxMSwgMjMsIDEzMywgNCwgMTUzLCAxMSwgMjMsIDEzMywgNCwgMjIyLCAKLSAgICA5MywgMTEsIDIzLCAxMzMsIDQsIDIxNywgMTUzLCAxMSwgMjMsIDEzMywgNCwgNjksIDExLCAyMywgMTMzLCA0LCAyMTQsIAotICAgIDEwNSwgMTEsIDIzLCAxMzMsIDQsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNCwgMjEwLCAxNTksIDExLCAzNSwgNiwgNjEsIDExLCAzNSwgNiwgMjUzLCAxNjYsIAotICAgIDExLCAzNSwgNiwgMjUxLCA3NCwgMTEsIDM1LCA2LCAyNDksIDY4LCAxMSwgMzUsIDYsIDc2LCAxMSwgMzUsIDYsIDI0NSwgCi0gICAgMTQsIDExLCAzNSwgNiwgMjQzLCAyMDksIDExLCAzNSwgNiwgMjQyLCA2NywgMTEsIDM1LCA2LCA3NCwgMTEsIDM1LCA2LCAKLSAgICAyMzUsIDE1MCwgMTEsIDM1LCA2LCAyMzUsIDI5LCAxMSwgMzUsIDYsIDE1NiwgMTEsIDM1LCA2LCAxOTQsIDExLCAzNSwgNiwgCi0gICAgMjMwLCAzMCwgMTEsIDM1LCA2LCA3OCwgMTEsIDM1LCA2LCAyMjYsIDEwOSwgMTEsIDM1LCA2LCAyMjQsIDk5LCAxMSwgMzUsIAotICAgIDYsIDE1MywgMTEsIDM1LCA2LCAyMjIsIDkzLCAxMSwgMzUsIDYsIDIxNywgMTUzLCAxMSwgMzUsIDYsIDY5LCAxMSwgMzUsIAotICAgIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDYsIDIxMiwgOTgsIDExLCAzNSwgNiwgMjExLCAxNzgsIDExLCAzNSwgNiwgMjExLCAKLSAgICAxMTcsIDExLCAzNSwgNiwgMjEwLCAxNTksIDExLCAzNSwgNCwgNjEsIDExLCAzNSwgNCwgMjUzLCAxNjYsIDExLCAzNSwgNCwgCi0gICAgMjUxLCA3NCwgMTEsIDM1LCA0LCAyNDksIDY4LCAxMSwgMzUsIDQsIDc2LCAxMSwgMzUsIDQsIDI0NSwgMTQsIDExLCAzNSwgCi0gICAgNCwgMjQzLCAyMDksIDExLCAzNSwgNCwgMjQyLCA2NywgMTEsIDM1LCA0LCA3NCwgMTEsIDM1LCA0LCAyMzUsIDE1MCwgMTEsIAotICAgIDM1LCA0LCAyMzUsIDI5LCAxMSwgMzUsIDQsIDE1NiwgMTEsIDM1LCA0LCAxOTQsIDExLCAzNSwgNCwgMjMwLCAzMCwgMTEsIAotICAgIDM1LCA0LCA3OCwgMTEsIDM1LCA0LCAyMjYsIDEwOSwgMTEsIDM1LCA0LCAyMjQsIDk5LCAxMSwgMzUsIDQsIDE1MywgMTEsIAotICAgIDM1LCA0LCAyMjIsIDkzLCAxMSwgMzUsIDQsIDIxNywgMTUzLCAxMSwgMzUsIDQsIDY5LCAxMSwgMzUsIDQsIDIxNCwgMTA1LCAKLSAgICAxMSwgMzUsIDQsIDIxMiwgOTgsIDExLCAzNSwgNCwgMjExLCAxNzgsIDExLCAzNSwgNCwgMjExLCAxMTcsIDExLCAzNSwgNCwgCi0gICAgMjEwLCAxNTksIDExLCAzNSwgMjMsIDYsIDYxLCAxMSwgMzUsIDIzLCA2LCAyNTMsIDE2NiwgMTEsIDM1LCAyMywgNiwgMjUxLCAKLSAgICA3NCwgMTEsIDM1LCAyMywgNiwgMjQ5LCA2OCwgMTEsIDM1LCAyMywgNiwgNzYsIDExLCAzNSwgMjMsIDYsIDI0NSwgMTQsIAotICAgIDExLCAzNSwgMjMsIDYsIDI0MywgMjA5LCAxMSwgMzUsIDIzLCA2LCAyNDIsIDY3LCAxMSwgMzUsIDIzLCA2LCA3NCwgMTEsIAotICAgIDM1LCAyMywgNiwgMjM1LCAxNTAsIDExLCAzNSwgMjMsIDYsIDIzNSwgMjksIDExLCAzNSwgMjMsIDYsIDE1NiwgMTEsIDM1LCAKLSAgICAyMywgNiwgMTk0LCAxMSwgMzUsIDIzLCA2LCAyMzAsIDMwLCAxMSwgMzUsIDIzLCA2LCA3OCwgMTEsIDM1LCAyMywgNiwgCi0gICAgMjI2LCAxMDksIDExLCAzNSwgMjMsIDYsIDIyNCwgOTksIDExLCAzNSwgMjMsIDYsIDE1MywgMTEsIDM1LCAyMywgNiwgMjIyLCAKLSAgICA5MywgMTEsIDM1LCAyMywgNiwgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDYsIDY5LCAxMSwgMzUsIDIzLCA2LCAyMTQsIDEwNSwgCi0gICAgMTEsIDM1LCAyMywgNiwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTE3LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgNCwgNjEsIDExLCAzNSwgMjMsIDQsIDI1MywgMTY2LCAxMSwgCi0gICAgMzUsIDIzLCA0LCAyNTEsIDc0LCAxMSwgMzUsIDIzLCA0LCAyNDksIDY4LCAxMSwgMzUsIDIzLCA0LCA3NiwgMTEsIDM1LCAKLSAgICAyMywgNCwgMjQ1LCAxNCwgMTEsIDM1LCAyMywgNCwgMjQzLCAyMDksIDExLCAzNSwgMjMsIDQsIDI0MiwgNjcsIDExLCAzNSwgCi0gICAgMjMsIDQsIDc0LCAxMSwgMzUsIDIzLCA0LCAyMzUsIDE1MCwgMTEsIDM1LCAyMywgNCwgMjM1LCAyOSwgMTEsIDM1LCAyMywgCi0gICAgNCwgMTU2LCAxMSwgMzUsIDIzLCA0LCAxOTQsIDExLCAzNSwgMjMsIDQsIDIzMCwgMzAsIDExLCAzNSwgMjMsIDQsIDc4LCAKLSAgICAxMSwgMzUsIDIzLCA0LCAyMjYsIDEwOSwgMTEsIDM1LCAyMywgNCwgMjI0LCA5OSwgMTEsIDM1LCAyMywgNCwgMTUzLCAxMSwgCi0gICAgMzUsIDIzLCA0LCAyMjIsIDkzLCAxMSwgMzUsIDIzLCA0LCAyMTcsIDE1MywgMTEsIDM1LCAyMywgNCwgNjksIDExLCAzNSwgCi0gICAgMjMsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDM1LCAKLSAgICAyMywgNCwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCA2LCA2MSwgMTEsIDM1LCAzMiwgCi0gICAgNiwgMjUzLCAxNjYsIDExLCAzNSwgMzIsIDYsIDI1MSwgNzQsIDExLCAzNSwgMzIsIDYsIDI0OSwgNjgsIDExLCAzNSwgMzIsIAotICAgIDYsIDc2LCAxMSwgMzUsIDMyLCA2LCAyNDUsIDE0LCAxMSwgMzUsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAzMiwgNiwgCi0gICAgMjQyLCA2NywgMTEsIDM1LCAzMiwgNiwgNzQsIDExLCAzNSwgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDMyLCA2LCAyMzUsIAotICAgIDI5LCAxMSwgMzUsIDMyLCA2LCAxNTYsIDExLCAzNSwgMzIsIDYsIDE5NCwgMTEsIDM1LCAzMiwgNiwgMjMwLCAzMCwgMTEsIAotICAgIDM1LCAzMiwgNiwgNzgsIDExLCAzNSwgMzIsIDYsIDIyNiwgMTA5LCAxMSwgMzUsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMzUsIAotICAgIDMyLCA2LCAxNTMsIDExLCAzNSwgMzIsIDYsIDIyMiwgOTMsIDExLCAzNSwgMzIsIDYsIDIxNywgMTUzLCAxMSwgMzUsIDMyLCAKLSAgICA2LCA2OSwgMTEsIDM1LCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDYsIDIxMiwgOTgsIDExLCAzNSwgMzIsIDYsIAotICAgIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA2LCAyMTEsIDExNywgMTEsIDM1LCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMzIsIAotICAgIDQsIDYxLCAxMSwgMzUsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDM1LCAzMiwgNCwgMjUxLCA3NCwgMTEsIDM1LCAzMiwgNCwgCi0gICAgMjQ5LCA2OCwgMTEsIDM1LCAzMiwgNCwgNzYsIDExLCAzNSwgMzIsIDQsIDI0NSwgMTQsIDExLCAzNSwgMzIsIDQsIDI0MywgCi0gICAgMjA5LCAxMSwgMzUsIDMyLCA0LCAyNDIsIDY3LCAxMSwgMzUsIDMyLCA0LCA3NCwgMTEsIDM1LCAzMiwgNCwgMjM1LCAxNTAsIAotICAgIDExLCAzNSwgMzIsIDQsIDIzNSwgMjksIDExLCAzNSwgMzIsIDQsIDE1NiwgMTEsIDM1LCAzMiwgNCwgMTk0LCAxMSwgMzUsIAotICAgIDMyLCA0LCAyMzAsIDMwLCAxMSwgMzUsIDMyLCA0LCA3OCwgMTEsIDM1LCAzMiwgNCwgMjI2LCAxMDksIDExLCAzNSwgMzIsIAotICAgIDQsIDIyNCwgOTksIDExLCAzNSwgMzIsIDQsIDE1MywgMTEsIDM1LCAzMiwgNCwgMjIyLCA5MywgMTEsIDM1LCAzMiwgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAzNSwgMzIsIDQsIDY5LCAxMSwgMzUsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjEyLCAKLSAgICA5OCwgMTEsIDM1LCAzMiwgNCwgMjExLCAxNzgsIDExLCAzNSwgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDMyLCA0LCAyMTAsIAotICAgIDE1OSwgMTEsIDM1LCAyMywgMzIsIDYsIDYxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUzLCAxNjYsIDExLCAzNSwgMjMsIDMyLCAKLSAgICA2LCAyNTEsIDc0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ5LCA2OCwgMTEsIDM1LCAyMywgMzIsIDYsIDc2LCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNiwgMjQ1LCAxNCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MywgMjA5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQyLCAKLSAgICA2NywgMTEsIDM1LCAyMywgMzIsIDYsIDc0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM1LCAxNTAsIDExLCAzNSwgMjMsIDMyLCAKLSAgICA2LCAyMzUsIDI5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMTU2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMTk0LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNiwgMjMwLCAzMCwgMTEsIDM1LCAyMywgMzIsIDYsIDc4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAxMDksIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMTUzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIyLCAKLSAgICA5MywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNywgMTUzLCAxMSwgMzUsIDIzLCAzMiwgNiwgNjksIDExLCAzNSwgMjMsIDMyLCAKLSAgICA2LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIAotICAgIDM1LCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDMyLCA0LCAKLSAgICA2MSwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MywgMTY2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDMyLCA0LCA3NiwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgMTQsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA0LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0MiwgNjcsIDExLCAzNSwgMjMsIDMyLCA0LCAKLSAgICA3NCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAyOSwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDE1NiwgMTEsIDM1LCAyMywgMzIsIDQsIDE5NCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMzAsIDExLCAzNSwgCi0gICAgMjMsIDMyLCA0LCA3OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgMTA5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCA5OSwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDQsIDE1MywgMTEsIDM1LCAyMywgMzIsIDQsIDIyMiwgOTMsIDExLCAzNSwgMjMsIDMyLCA0LCAKLSAgICAyMTcsIDE1MywgMTEsIDM1LCAyMywgMzIsIDQsIDY5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDExNywgCi0gICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMwLCAxNDMsIDYsIDYxLCAxMSwgMjMwLCAxNDMsIDYsIDI1MywgCi0gICAgMTY2LCAxMSwgMjMwLCAxNDMsIDYsIDI1MSwgNzQsIDExLCAyMzAsIDE0MywgNiwgMjQ5LCA2OCwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICA3NiwgMTEsIDIzMCwgMTQzLCA2LCAyNDUsIDE0LCAxMSwgMjMwLCAxNDMsIDYsIDI0MywgMjA5LCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDI0MiwgNjcsIDExLCAyMzAsIDE0MywgNiwgNzQsIDExLCAyMzAsIDE0MywgNiwgMjM1LCAxNTAsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgMjM1LCAyOSwgMTEsIDIzMCwgMTQzLCA2LCAxNTYsIDExLCAyMzAsIDE0MywgNiwgMTk0LCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIzMCwgMzAsIDExLCAyMzAsIDE0MywgNiwgNzgsIDExLCAyMzAsIDE0MywgNiwgMjI2LCAxMDksIDExLCAyMzAsIDE0MywgNiwgCi0gICAgMjI0LCA5OSwgMTEsIDIzMCwgMTQzLCA2LCAxNTMsIDExLCAyMzAsIDE0MywgNiwgMjIyLCA5MywgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyMTcsIDE1MywgMTEsIDIzMCwgMTQzLCA2LCA2OSwgMTEsIDIzMCwgMTQzLCA2LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTQzLCAKLSAgICA2LCAyMTIsIDk4LCAxMSwgMjMwLCAxNDMsIDYsIDIxMSwgMTc4LCAxMSwgMjMwLCAxNDMsIDYsIDIxMSwgMTE3LCAxMSwgCi0gICAgMjMwLCAxNDMsIDYsIDIxMCwgMTU5LCAxMSwgMjMwLCAxNDMsIDQsIDYxLCAxMSwgMjMwLCAxNDMsIDQsIDI1MywgMTY2LCAKLSAgICAxMSwgMjMwLCAxNDMsIDQsIDI1MSwgNzQsIDExLCAyMzAsIDE0MywgNCwgMjQ5LCA2OCwgMTEsIDIzMCwgMTQzLCA0LCA3NiwgCi0gICAgMTEsIDIzMCwgMTQzLCA0LCAyNDUsIDE0LCAxMSwgMjMwLCAxNDMsIDQsIDI0MywgMjA5LCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDI0MiwgNjcsIDExLCAyMzAsIDE0MywgNCwgNzQsIDExLCAyMzAsIDE0MywgNCwgMjM1LCAxNTAsIDExLCAyMzAsIDE0MywgNCwgCi0gICAgMjM1LCAyOSwgMTEsIDIzMCwgMTQzLCA0LCAxNTYsIDExLCAyMzAsIDE0MywgNCwgMTk0LCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIzMCwgMzAsIDExLCAyMzAsIDE0MywgNCwgNzgsIDExLCAyMzAsIDE0MywgNCwgMjI2LCAxMDksIDExLCAyMzAsIDE0MywgNCwgCi0gICAgMjI0LCA5OSwgMTEsIDIzMCwgMTQzLCA0LCAxNTMsIDExLCAyMzAsIDE0MywgNCwgMjIyLCA5MywgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyMTcsIDE1MywgMTEsIDIzMCwgMTQzLCA0LCA2OSwgMTEsIDIzMCwgMTQzLCA0LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTQzLCAKLSAgICA0LCAyMTIsIDk4LCAxMSwgMjMwLCAxNDMsIDQsIDIxMSwgMTc4LCAxMSwgMjMwLCAxNDMsIDQsIDIxMSwgMTE3LCAxMSwgCi0gICAgMjMwLCAxNDMsIDQsIDIxMCwgMTU5LCAxMSwgMzIsIDQsIDI0NywgMTI3LCA3NCwgMTEsIDMyLCA0LCAyNDcsIDEyNywgMjM1LCAKLSAgICAxNTAsIDExLCAyMywgNiwgMjU0LCAxNTEsIDExLCAyMywgNiwgMjUyLCAzNCwgMTEsIDIzLCA2LCAyNDMsIDExNCwgMTEsIAotICAgIDIzLCA2LCAyNDgsIDYyLCAxMSwgMjMsIDYsIDI0NSwgMTA4LCAxMSwgMjMsIDYsIDIxMCwgODUsIDExLCAyMywgNiwgMjQ1LCAKLSAgICA3MSwgMTEsIDIzLCA2LCAyMTYsIDE4MCwgMTEsIDIzLCA2LCAyMzUsIDE5MiwgMTEsIDIzLCA2LCAyMzQsIDIyOCwgMTEsIAotICAgIDIzLCA2LCAyMzMsIDEwNCwgMTEsIDIzLCA2LCAyMzAsIDEwNywgMTEsIDIzLCA2LCAyMjcsIDI0MiwgMTEsIDIzLCA2LCAKLSAgICAyMTEsIDE1NywgMTEsIDIzLCA2LCAyMjYsIDIwMywgMTEsIDIzLCA2LCAyMjUsIDExMSwgMTEsIDIzLCA2LCAyMjMsIDQwLCAKLSAgICAxMSwgMjMsIDYsIDIxNiwgMTgxLCA4NywgMTEsIDIzLCA2LCAyMTksIDE3OSwgMTEsIDIzLCA2LCAyMTcsIDQyLCAxMSwgMjMsIAotICAgIDYsIDIxNCwgMTU3LCAxMSwgMjMsIDYsIDIyNSwgMTM2LCAxMSwgMjMsIDYsIDI1MCwgMTE4LCAxMSwgMjMsIDYsIDIyNCwgCi0gICAgMTY0LCAxMSwgMjMsIDYsIDIyNiwgMjA1LCAxMSwgMjMsIDIyOSwgMjI2LCAxMSwgMjMsIDQsIDI1NCwgMTUxLCAxMSwgMjMsIAotICAgIDQsIDI1MiwgMzQsIDExLCAyMywgNCwgMjQzLCAxMTQsIDExLCAyMywgNCwgMjQ4LCA2MiwgMTEsIDIzLCA0LCAyNDUsIDEwOCwgCi0gICAgMTEsIDIzLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDQsIDI0NSwgNzEsIDExLCAyMywgNCwgMjE2LCAxODAsIDExLCAyMywgNCwgCi0gICAgMjM1LCAxOTIsIDExLCAyMywgNCwgMjM0LCAyMjgsIDExLCAyMywgNCwgMjMzLCAxMDQsIDExLCAyMywgNCwgMjMwLCAxMDcsIAotICAgIDExLCAyMywgNCwgMjI3LCAyNDIsIDExLCAyMywgNCwgMjExLCAxNTcsIDExLCAyMywgNCwgMjI2LCAyMDMsIDExLCAyMywgNCwgCi0gICAgMjI1LCAxMTEsIDExLCAyMywgNCwgMjIzLCA0MCwgMTEsIDIzLCA0LCA0MCwgMjE5LCAxNzksIDExLCAyMywgNCwgMjE5LCAKLSAgICAxNzksIDExLCAyMywgNCwgMjE3LCA0MiwgMTEsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDIzLCA0LCAyMjUsIDEzNiwgMTEsIAotICAgIDIzLCA0LCAyNTAsIDExOCwgMTEsIDIzLCA0LCAyMjQsIDE2NCwgMTEsIDIzLCA0LCAyMjYsIDIwNSwgMTEsIDIzLCAyMjYsIAotICAgIDEsIDI0NywgMjQxLCAxMSwgMjMsIDI0NSwgMTA5LCA4NywgMTEsIDIzLCAyMTYsIDE4MSwgODcsIDExLCAyMywgMjM0LCAKLSAgICAyMjksIDg3LCAxMSwgMjMsIDIyNSwgMTM3LCA4NywgMTEsIDIzLCAyMjMsIDQxLCA4NywgMTEsIDIzLCAyMjUsIDExMiwgODcsIAotICAgIDExLCAzMiwgNiwgMjU0LCAxNTEsIDExLCAzMiwgNiwgMjUyLCAzNCwgMTEsIDMyLCA2LCAyNDMsIDExNCwgMTEsIDMyLCA2LCAKLSAgICAyNDgsIDYyLCAxMSwgMzIsIDYsIDI0NSwgMTA4LCAxMSwgMzIsIDYsIDIxMCwgODUsIDExLCAzMiwgNiwgMjQ1LCA3MSwgMTEsIAotICAgIDMyLCA2LCAyMTYsIDE4MCwgMTEsIDMyLCA2LCAyMzUsIDE5MiwgMTEsIDMyLCA2LCAyMzQsIDIyOCwgMTEsIDMyLCA2LCAKLSAgICAyMzMsIDEwNCwgMTEsIDMyLCA2LCAyMzAsIDEwNywgMTEsIDMyLCA2LCAyMjcsIDI0MiwgMTEsIDMyLCA2LCAyMTEsIDE1NywgCi0gICAgMTEsIDMyLCA2LCAyMjYsIDIwMywgMTEsIDMyLCA2LCAyMjUsIDExMSwgMTEsIDMyLCA2LCAyMjMsIDQwLCAxMSwgMzIsIDYsIAotICAgIDIxNiwgMTgxLCA4NywgMTEsIDMyLCA2LCAyMTksIDE3OSwgMTEsIDMyLCA2LCAyMTcsIDQyLCAxMSwgMzIsIDYsIDIxNCwgCi0gICAgMTU3LCAxMSwgMzIsIDYsIDIyNSwgMTM2LCAxMSwgMzIsIDYsIDI1MCwgMTE4LCAxMSwgMzIsIDYsIDIyNCwgMTY0LCAxMSwgCi0gICAgMzIsIDYsIDIyNiwgMjA1LCAxMSwgMzIsIDIyOSwgMjI2LCAxMSwgMzIsIDQsIDI1NCwgMTUxLCAxMSwgMzIsIDQsIDI1MiwgCi0gICAgMzQsIDExLCAzMiwgNCwgMjQzLCAxMTQsIDExLCAzMiwgNCwgMjQ4LCA2MiwgMTEsIDMyLCA0LCAyNDUsIDEwOCwgMTEsIDMyLCAKLSAgICA0LCAyMTAsIDg1LCAxMSwgMzIsIDQsIDI0NSwgNzEsIDExLCAzMiwgNCwgMjE2LCAxODAsIDExLCAzMiwgNCwgMjM1LCAxOTIsIAotICAgIDExLCAzMiwgNCwgMjM0LCAyMjgsIDExLCAzMiwgNCwgMjMzLCAxMDQsIDExLCAzMiwgNCwgMjMwLCAxMDcsIDExLCAzMiwgNCwgCi0gICAgMjI3LCAyNDIsIDExLCAzMiwgNCwgMjExLCAxNTcsIDExLCAzMiwgNCwgMjI2LCAyMDMsIDExLCAzMiwgNCwgMjI1LCAxMTEsIAotICAgIDExLCAzMiwgNCwgMjIzLCA0MCwgMTEsIDMyLCA0LCA0MCwgMjE5LCAxNzksIDExLCAzMiwgNCwgMjE5LCAxNzksIDExLCAzMiwgCi0gICAgNCwgMjE3LCA0MiwgMTEsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDMyLCA0LCAyMjUsIDEzNiwgMTEsIDMyLCA0LCAyNTAsIAotICAgIDExOCwgMTEsIDMyLCA0LCAyMjQsIDE2NCwgMTEsIDMyLCA0LCAyMjYsIDIwNSwgMTEsIDMyLCAyMjYsIDEsIDI0NywgMjQxLCAKLSAgICAxMSwgMzIsIDI0NSwgMTA5LCA4NywgMTEsIDMyLCAyMTYsIDE4MSwgODcsIDExLCAzMiwgMjM0LCAyMjksIDg3LCAxMSwgMzIsIAotICAgIDIyNSwgMTM3LCA4NywgMTEsIDMyLCAyMjMsIDQxLCA4NywgMTEsIDMyLCAyMjUsIDExMiwgODcsIDExLCAyMywgMzIsIDYsIAotICAgIDI1NCwgMTUxLCAxMSwgMjMsIDMyLCA2LCAyNTIsIDM0LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDExNCwgMTEsIDIzLCAzMiwgNiwgCi0gICAgMjQ4LCA2MiwgMTEsIDIzLCAzMiwgNiwgMjQ1LCAxMDgsIDExLCAyMywgMzIsIDYsIDIxMCwgODUsIDExLCAyMywgMzIsIDYsIAotICAgIDI0NSwgNzEsIDExLCAyMywgMzIsIDYsIDIxNiwgMTgwLCAxMSwgMjMsIDMyLCA2LCAyMzUsIDE5MiwgMTEsIDIzLCAzMiwgNiwgCi0gICAgMjM0LCAyMjgsIDExLCAyMywgMzIsIDYsIDIzMywgMTA0LCAxMSwgMjMsIDMyLCA2LCAyMzAsIDEwNywgMTEsIDIzLCAzMiwgCi0gICAgNiwgMjI3LCAyNDIsIDExLCAyMywgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA2LCAyMjYsIDIwMywgMTEsIDIzLCAKLSAgICAzMiwgNiwgMjI1LCAxMTEsIDExLCAyMywgMzIsIDYsIDIyMywgNDAsIDExLCAyMywgMzIsIDYsIDIxNiwgMTgxLCA4NywgMTEsIAotICAgIDIzLCAzMiwgNiwgMjE5LCAxNzksIDExLCAyMywgMzIsIDYsIDIxNywgNDIsIDExLCAyMywgMzIsIDYsIDIxNCwgMTU3LCAxMSwgCi0gICAgMjMsIDMyLCA2LCAyMjUsIDEzNiwgMTEsIDIzLCAzMiwgNiwgMjUwLCAxMTgsIDExLCAyMywgMzIsIDYsIDIyNCwgMTY0LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyMjYsIDIwNSwgMTEsIDIzLCAzMiwgMjI5LCAyMjYsIDExLCAyMywgMzIsIDQsIDI1NCwgMTUxLCAKLSAgICAxMSwgMjMsIDMyLCA0LCAyNTIsIDM0LCAxMSwgMjMsIDMyLCA0LCAyNDMsIDExNCwgMTEsIDIzLCAzMiwgNCwgMjQ4LCA2MiwgCi0gICAgMTEsIDIzLCAzMiwgNCwgMjQ1LCAxMDgsIDExLCAyMywgMzIsIDQsIDIxMCwgODUsIDExLCAyMywgMzIsIDQsIDI0NSwgNzEsIAotICAgIDExLCAyMywgMzIsIDQsIDIxNiwgMTgwLCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE5MiwgMTEsIDIzLCAzMiwgNCwgMjM0LCAKLSAgICAyMjgsIDExLCAyMywgMzIsIDQsIDIzMywgMTA0LCAxMSwgMjMsIDMyLCA0LCAyMzAsIDEwNywgMTEsIDIzLCAzMiwgNCwgCi0gICAgMjI3LCAyNDIsIDExLCAyMywgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA0LCAyMjYsIDIwMywgMTEsIDIzLCAzMiwgCi0gICAgNCwgMjI1LCAxMTEsIDExLCAyMywgMzIsIDQsIDIyMywgNDAsIDExLCAyMywgMzIsIDQsIDQwLCAyMTksIDE3OSwgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjE5LCAxNzksIDExLCAyMywgMzIsIDQsIDIxNywgNDIsIDExLCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIAotICAgIDMyLCA0LCAyMjUsIDEzNiwgMTEsIDIzLCAzMiwgNCwgMjUwLCAxMTgsIDExLCAyMywgMzIsIDQsIDIyNCwgMTY0LCAxMSwgCi0gICAgMjMsIDMyLCA0LCAyMjYsIDIwNSwgMTEsIDIzLCAzMiwgMjI2LCAxLCAyNDcsIDI0MSwgMTEsIDIzLCAzMiwgMjQ1LCAxMDksIAotICAgIDg3LCAxMSwgMjMsIDMyLCAyMTYsIDE4MSwgODcsIDExLCAyMywgMzIsIDIzNCwgMjI5LCA4NywgMTEsIDIzLCAzMiwgMjI1LCAKLSAgICAxMzcsIDg3LCAxMSwgMjMsIDMyLCAyMjMsIDQxLCA4NywgMTEsIDIzLCAzMiwgMjI1LCAxMTIsIDg3LCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyNTQsIDE1MSwgMTEsIDM1LCAyMywgNiwgMjUyLCAzNCwgMTEsIDM1LCAyMywgNiwgMjQzLCAxMTQsIDExLCAzNSwgMjMsIAotICAgIDYsIDI0OCwgNjIsIDExLCAzNSwgMjMsIDYsIDI0NSwgMTA4LCAxMSwgMzUsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyNDUsIDcxLCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE4MCwgMTEsIDM1LCAyMywgNiwgMjM1LCAxOTIsIDExLCAzNSwgMjMsIAotICAgIDYsIDIzNCwgMjI4LCAxMSwgMzUsIDIzLCA2LCAyMzMsIDEwNCwgMTEsIDM1LCAyMywgNiwgMjMwLCAxMDcsIDExLCAzNSwgCi0gICAgMjMsIDYsIDIyNywgMjQyLCAxMSwgMzUsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNiwgMjI2LCAyMDMsIDExLCAKLSAgICAzNSwgMjMsIDYsIDIyNSwgMTExLCAxMSwgMzUsIDIzLCA2LCAyMjMsIDQwLCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE4MSwgODcsIAotICAgIDExLCAzNSwgMjMsIDYsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCA2LCAyMTcsIDQyLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDE1NywgCi0gICAgMTEsIDM1LCAyMywgNiwgMjI1LCAxMzYsIDExLCAzNSwgMjMsIDYsIDI1MCwgMTE4LCAxMSwgMzUsIDIzLCA2LCAyMjQsIAotICAgIDE2NCwgMTEsIDM1LCAyMywgNiwgMjI2LCAyMDUsIDExLCAzNSwgMjMsIDIyOSwgMjI2LCAxMSwgMzUsIDIzLCA0LCAyNTQsIAotICAgIDE1MSwgMTEsIDM1LCAyMywgNCwgMjUyLCAzNCwgMTEsIDM1LCAyMywgNCwgMjQzLCAxMTQsIDExLCAzNSwgMjMsIDQsIDI0OCwgCi0gICAgNjIsIDExLCAzNSwgMjMsIDQsIDI0NSwgMTA4LCAxMSwgMzUsIDIzLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIAotICAgIDcxLCAxMSwgMzUsIDIzLCA0LCAyMTYsIDE4MCwgMTEsIDM1LCAyMywgNCwgMjM1LCAxOTIsIDExLCAzNSwgMjMsIDQsIDIzNCwgCi0gICAgMjI4LCAxMSwgMzUsIDIzLCA0LCAyMzMsIDEwNCwgMTEsIDM1LCAyMywgNCwgMjMwLCAxMDcsIDExLCAzNSwgMjMsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMzUsIDIzLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNCwgMjI2LCAyMDMsIDExLCAzNSwgMjMsIAotICAgIDQsIDIyNSwgMTExLCAxMSwgMzUsIDIzLCA0LCAyMjMsIDQwLCAxMSwgMzUsIDIzLCA0LCA0MCwgMjE5LCAxNzksIDExLCAzNSwgCi0gICAgMjMsIDQsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCA0LCAyMTcsIDQyLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAKLSAgICAyMywgNCwgMjI1LCAxMzYsIDExLCAzNSwgMjMsIDQsIDI1MCwgMTE4LCAxMSwgMzUsIDIzLCA0LCAyMjQsIDE2NCwgMTEsIAotICAgIDM1LCAyMywgNCwgMjI2LCAyMDUsIDExLCAzNSwgMjMsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAzNSwgMjMsIDI0NSwgMTA5LCAKLSAgICA4NywgMTEsIDM1LCAyMywgMjE2LCAxODEsIDg3LCAxMSwgMzUsIDIzLCAyMzQsIDIyOSwgODcsIDExLCAzNSwgMjMsIDIyNSwgCi0gICAgMTM3LCA4NywgMTEsIDM1LCAyMywgMjIzLCA0MSwgODcsIDExLCAzNSwgMjMsIDIyNSwgMTEyLCA4NywgMTEsIDM1LCAyMywgCi0gICAgMzIsIDYsIDI1NCwgMTUxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUyLCAzNCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MywgMTE0LCAKLSAgICAxMSwgMzUsIDIzLCAzMiwgNiwgMjQ4LCA2MiwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgNzEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgMTEsIAotICAgIDM1LCAyMywgMzIsIDYsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM0LCAyMjgsIDExLCAzNSwgMjMsIDMyLCA2LCAKLSAgICAyMzMsIDEwNCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMTA3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI3LCAyNDIsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMjAzLCAxMSwgMzUsIDIzLCAzMiwgNiwgCi0gICAgMjI1LCAxMTEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjMsIDQwLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODEsIDg3LCAKLSAgICAxMSwgMzUsIDIzLCAzMiwgNiwgMjE5LCAxNzksIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDQyLCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjUsIDEzNiwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MCwgMTE4LCAKLSAgICAxMSwgMzUsIDIzLCAzMiwgNiwgMjI0LCAxNjQsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwNSwgMTEsIDM1LCAyMywgMzIsIAotICAgIDIyOSwgMjI2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjU0LCAxNTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTIsIDM0LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNCwgMjQzLCAxMTQsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDgsIDYyLCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgMjQ1LCAxMDgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA3MSwgMTEsIDM1LCAKLSAgICAyMywgMzIsIDQsIDIxNiwgMTgwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAxOTIsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzQsIAotICAgIDIyOCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMywgMTA0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjMwLCAxMDcsIDExLCAzNSwgCi0gICAgMjMsIDMyLCA0LCAyMjcsIDI0MiwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAKLSAgICAyMDMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyMywgNDAsIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCA0MCwgMjE5LCAxNzksIDExLCAzNSwgMjMsIDMyLCA0LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNywgCi0gICAgNDIsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgMjUwLCAxMTgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjQsIDE2NCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgCi0gICAgMjA1LCAxMSwgMzUsIDIzLCAzMiwgMjI2LCAxLCAyNDcsIDI0MSwgMTEsIDM1LCAyMywgMzIsIDI0NSwgMTA5LCA4NywgMTEsIAotICAgIDM1LCAyMywgMzIsIDIxNiwgMTgxLCA4NywgMTEsIDM1LCAyMywgMzIsIDIzNCwgMjI5LCA4NywgMTEsIDM1LCAyMywgMzIsIAotICAgIDIyNSwgMTM3LCA4NywgMTEsIDM1LCAyMywgMzIsIDIyMywgNDEsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAxMTIsIDg3LCAKLSAgICAxMSwgMjMsIDYsIDI0NywgMjM1LCAxMSwgMjMsIDQsIDI0NywgMjM1LCAxMSwgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMjMsIAotICAgIDIxLCAxMTEsIDExLCAyMywgMjEsIDEwNSwgMTEsIDIzLCAyMSwgMTU4LCAxMSwgMjMsIDIxLCAxNjEsIDExLCAyMywgMjEsIAotICAgIDE5MCwgMTEsIDIzLCAyMSwgMTk1LCAxMSwgMjMsIDIxLCAxOTksIDExLCAyMywgMjEsIDE5NiwgMTEsIDIzLCAyMSwgMjAxLCAKLSAgICAxMSwgMTM5LCAyMSwgMjEwLCA4NiwgMTEsIDEzOSwgMjEsIDExMSwgMTEsIDEzOSwgMjEsIDEwNSwgMTEsIDEzOSwgMjEsIAotICAgIDE1OCwgMTEsIDEzOSwgMjEsIDE2MSwgMTEsIDEzOSwgMjEsIDE5MCwgMTEsIDEzOSwgMjEsIDE5NSwgMTEsIDEzOSwgMjEsIAotICAgIDE5OSwgMTEsIDEzOSwgMjEsIDE5NiwgMTEsIDEzOSwgMjEsIDIwMSwgMTEsIDM1LCAyMSwgMjEwLCA4NiwgMTEsIDM1LCAyMSwgCi0gICAgMTExLCAxMSwgMzUsIDIxLCAxMDUsIDExLCAzNSwgMjEsIDE1OCwgMTEsIDM1LCAyMSwgMTYxLCAxMSwgMzUsIDIxLCAxOTAsIAotICAgIDExLCAzNSwgMjEsIDE5NSwgMTEsIDM1LCAyMSwgMTk5LCAxMSwgMzUsIDIxLCAxOTYsIDExLCAzNSwgMjEsIDIwMSwgMTEsIAotICAgIDM1LCAyMywgMjEsIDIxMCwgODYsIDExLCAzNSwgMjMsIDIxLCAxMTEsIDExLCAzNSwgMjMsIDIxLCAxMDUsIDExLCAzNSwgCi0gICAgMjMsIDIxLCAxNTgsIDExLCAzNSwgMjMsIDIxLCAxNjEsIDExLCAzNSwgMjMsIDIxLCAxOTAsIDExLCAzNSwgMjMsIDIxLCAKLSAgICAxOTUsIDExLCAzNSwgMjMsIDIxLCAxOTksIDExLCAzNSwgMjMsIDIxLCAxOTYsIDExLCAzNSwgMjMsIDIxLCAyMDEsIDExLCAKLSAgICAyMzAsIDE0MywgMjEsIDIxMCwgODYsIDExLCAyMzAsIDE0MywgMjEsIDExMSwgMTEsIDIzMCwgMTQzLCAyMSwgMTA1LCAxMSwgCi0gICAgMjMwLCAxNDMsIDIxLCAxNTgsIDExLCAyMzAsIDE0MywgMjEsIDE2MSwgMTEsIDIzMCwgMTQzLCAyMSwgMTkwLCAxMSwgMjMwLCAKLSAgICAxNDMsIDIxLCAxOTUsIDExLCAyMzAsIDE0MywgMjEsIDE5OSwgMTEsIDIzMCwgMTQzLCAyMSwgMTk2LCAxMSwgMjMwLCAxNDMsIAotICAgIDIxLCAyMDEsIDksIDExLCAyNTQsIDE3OSwgOSwgMTEsIDI1MiwgNjIsIDksIDExLCAyMzUsIDEyOSwgOSwgMTEsIDI0OCwgCi0gICAgMjAzLCA5LCAxMSwgMjEyLCAzMCwgOSwgMTEsIDIxMCwgMTA4LCA5LCAxMSwgMjQyLCA0NCwgOSwgMTEsIDIxNywgODEsIDksIAotICAgIDExLCAyMTEsIDQzLCA5LCAxMSwgMjM1LCAwLCA5LCAxMSwgMjMzLCAxMDgsIDksIDExLCAyMzEsIDgzLCA5LCAxMSwgMjI4LCAKLSAgICA2NywgOSwgMTEsIDIyMSwgMTY4LCA5LCAxMSwgMjU0LCAyMDUsIDksIDExLCAyNDQsIDE1MCwgOSwgMTEsIDIyMiwgMjgsIDksIAotICAgIDExLCAyMjQsIDg0LCA5LCAxMSwgMjIzLCA5OCwgOSwgMTEsIDIyMCwgNjEsIDksIDExLCAyMTcsIDgsIDksIDExLCAyMTYsIAotICAgIDE5MywgOSwgMTEsIDIzNCwgMTM1LCA5LCAxMSwgMjE2LCAyMDMsIDksIDExLCAyNDgsIDIyNCwgOSwgMTEsIDIxMCwgMTExLCAKLSAgICA5LCAxMSwgMjQyLCAyNTEsIDksIDExLCAyNDcsIDEyNywgMjUyLCA2MiwgOSwgMTEsIDI0NywgMTI3LCAyMjgsIDY3LCA5LCAKLSAgICAxMSwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxMSwgMjQ3LCAxMjcsIDIyNCwgODQsIDksIDExLCA2NSwgMjUyLCA2MiwgOSwgCi0gICAgMTEsIDY1LCAyMzUsIDEyOSwgOSwgMTEsIDY1LCAyNDEsIDIyNSwgOSwgMTEsIDY1LCAyNDIsIDQ0LCA5LCAxMSwgNjUsIAotICAgIDIxMSwgNDMsIDksIDExLCA2NSwgMjM1LCAwLCA5LCAxMSwgNjUsIDIzMywgMTA4LCA5LCAxMSwgNjUsIDIzMSwgODMsIDksIAotICAgIDExLCA2NSwgMjI4LCA2NywgOSwgMTEsIDY1LCAyMjEsIDE2OCwgOSwgMTEsIDY1LCAyNTQsIDIwNSwgOSwgMTEsIDY1LCAKLSAgICAyNDQsIDE1MCwgOSwgMTEsIDY1LCAyMjIsIDI4LCA5LCAxMSwgNjUsIDIyNCwgODQsIDksIDExLCA2NSwgMjIwLCA2MSwgOSwgCi0gICAgMTEsIDY1LCAyMTcsIDgsIDksIDExLCA2NSwgMjE2LCAxOTMsIDksIDExLCA2NSwgMjM0LCAxMzUsIDksIDExLCA2NSwgMjQ4LCAKLSAgICAyMjQsIDksIDExLCA2NSwgMjQyLCAyNTEsIDksIDExLCAyMTcsIDc3LCAyMzUsIDEyOSwgOSwgMTEsIDIxNywgNzcsIDI0MiwgCi0gICAgNDQsIDksIDExLCAyMTcsIDc3LCAyMTEsIDQzLCA5LCAxMSwgMjE3LCA3NywgMjMzLCAxMDgsIDksIDExLCAyMTcsIDc3LCAKLSAgICAyMjgsIDY3LCA5LCAxMSwgMjE3LCA3NywgMjIxLCAxNjgsIDksIDExLCAyMTcsIDc3LCAyNTQsIDIwNSwgOSwgMTEsIDIxNywgCi0gICAgNzcsIDIyMiwgMjgsIDksIDExLCAyMTcsIDc3LCAyMjQsIDg0LCA5LCAxMSwgMjE3LCA3NywgMjIwLCA2MSwgOSwgMTEsIAotICAgIDIxNywgNzcsIDIzNCwgMTM1LCA5LCAxMSwgMjE3LCA3NywgMjQ4LCAyMjQsIDksIDExLCAyMTcsIDc3LCAyNDIsIDI1MSwgOSwgCi0gICAgMTEsIDIxNywgNzcsIDI0NywgMTI3LCAyMjgsIDY3LCA5LCAxMSwgMjE3LCA3NywgMjQ3LCAxMjcsIDIyNCwgODQsIDksIDExLCAKLSAgICAyMTgsIDExMiwgMjUyLCA2MiwgOSwgMTEsIDIxOCwgMTEyLCAyMzUsIDEyOSwgOSwgMTEsIDIxOCwgMTEyLCAyNDEsIDIyNSwgCi0gICAgOSwgMTEsIDIxOCwgMTEyLCAyNDIsIDQ0LCA5LCAxMSwgMjE4LCAxMTIsIDIxNywgODEsIDksIDExLCAyMTgsIDExMiwgMjExLCAKLSAgICA0MywgOSwgMTEsIDIxOCwgMTEyLCAyMzUsIDAsIDksIDExLCAyMTgsIDExMiwgMjMxLCA4MywgOSwgMTEsIDIxOCwgMTEyLCAKLSAgICAyMjgsIDY3LCA5LCAxMSwgMjE4LCAxMTIsIDIyMSwgMTY4LCA5LCAxMSwgMjE4LCAxMTIsIDI1NCwgMjA1LCA5LCAxMSwgCi0gICAgMjE4LCAxMTIsIDI0NCwgMTUwLCA5LCAxMSwgMjE4LCAxMTIsIDIyMiwgMjgsIDksIDExLCAyMTgsIDExMiwgMjI0LCA4NCwgCi0gICAgOSwgMTEsIDIxOCwgMTEyLCAyMjAsIDYxLCA5LCAxMSwgMjE4LCAxMTIsIDIxNywgOCwgOSwgMTEsIDIxOCwgMTEyLCAyMTYsIAotICAgIDE5MywgOSwgMTEsIDIxOCwgMTEyLCAyMzQsIDEzNSwgOSwgMTEsIDIxOCwgMTEyLCAyNDgsIDIyNCwgOSwgMTEsIDIxOCwgCi0gICAgMTEyLCAyMTAsIDExMSwgOSwgMTEsIDIxOCwgMTEyLCAyNDIsIDI1MSwgOSwgMTEsIDIxOCwgMTEyLCAyNDcsIDEyNywgMjUyLCAKLSAgICA2MiwgOSwgMTEsIDIxOCwgMTEyLCAyNDcsIDEyNywgMjQ0LCAxNTAsIDksIDExLCAyMzIsIDEyOCwgMjU0LCAxNzksIDksIAotICAgIDExLCAyMzIsIDEyOCwgMjUyLCA2MiwgOSwgMTEsIDIzMiwgMTI4LCAyMzUsIDEyOSwgOSwgMTEsIDIzMiwgMTI4LCAyNDgsIAotICAgIDIwMywgOSwgMTEsIDIzMiwgMTI4LCAyNDEsIDIyNSwgOSwgMTEsIDIzMiwgMTI4LCAyMTIsIDMwLCA5LCAxMSwgMjMyLCAKLSAgICAxMjgsIDIxMCwgMTA4LCA5LCAxMSwgMjMyLCAxMjgsIDI0MiwgNDQsIDksIDExLCAyMzIsIDEyOCwgMjE3LCA4MSwgOSwgMTEsIAotICAgIDIzMiwgMTI4LCAyMTEsIDQzLCA5LCAxMSwgMjMyLCAxMjgsIDIzMywgMTA4LCA5LCAxMSwgMjMyLCAxMjgsIDIzMSwgODMsIAotICAgIDksIDExLCAyMzIsIDEyOCwgMjI4LCA2NywgOSwgMTEsIDIzMiwgMTI4LCAyMjEsIDE2OCwgOSwgMTEsIDIzMiwgMTI4LCAKLSAgICAyNTQsIDIwNSwgOSwgMTEsIDIzMiwgMTI4LCAyNDQsIDE1MCwgOSwgMTEsIDIzMiwgMTI4LCAyMjIsIDI4LCA5LCAxMSwgCi0gICAgMjMyLCAxMjgsIDIyNCwgODQsIDksIDExLCAyMzIsIDEyOCwgMjIzLCA5OCwgOSwgMTEsIDIzMiwgMTI4LCAyMjAsIDYxLCA5LCAKLSAgICAxMSwgMjMyLCAxMjgsIDIxNywgOCwgOSwgMTEsIDIzMiwgMTI4LCAyMTYsIDE5MywgOSwgMTEsIDIzMiwgMTI4LCAyMzQsIAotICAgIDEzNSwgOSwgMTEsIDIzMiwgMTI4LCAyMTYsIDIwMywgOSwgMTEsIDIzMiwgMTI4LCAyNDgsIDIyNCwgOSwgMTEsIDIzMiwgCi0gICAgMTI4LCAyMTAsIDExMSwgOSwgMTEsIDIzMiwgMTI4LCAyNDIsIDI1MSwgOSwgMTEsIDEzOSwgMjUyLCA2MiwgOSwgMTEsIAotICAgIDEzOSwgMjM1LCAxMjksIDksIDExLCAxMzksIDI0OCwgMjAzLCA5LCAxMSwgMTM5LCAyMTIsIDMwLCA5LCAxMSwgMTM5LCAKLSAgICAyMTAsIDEwOCwgOSwgMTEsIDEzOSwgMjQyLCA0NCwgOSwgMTEsIDEzOSwgMjE3LCA4MSwgOSwgMTEsIDEzOSwgMjExLCA0MywgCi0gICAgOSwgMTEsIDEzOSwgMjMzLCAxMDgsIDksIDExLCAxMzksIDIzMSwgODMsIDksIDExLCAxMzksIDIyOCwgNjcsIDksIDExLCAKLSAgICAxMzksIDIyMSwgMTY4LCA5LCAxMSwgMTM5LCAyNTQsIDIwNSwgOSwgMTEsIDEzOSwgMjQ0LCAxNTAsIDksIDExLCAxMzksIAotICAgIDIyMiwgMjgsIDksIDExLCAxMzksIDIyNCwgODQsIDksIDExLCAxMzksIDIyMywgOTgsIDksIDExLCAxMzksIDIyMCwgNjEsIAotICAgIDksIDExLCAxMzksIDIxNywgOCwgOSwgMTEsIDEzOSwgMjE2LCAxOTMsIDksIDExLCAxMzksIDIzNCwgMTM1LCA5LCAxMSwgCi0gICAgMTM5LCAyMTYsIDIwMywgOSwgMTEsIDEzOSwgMjQ4LCAyMjQsIDksIDExLCAxMzksIDIxMCwgMTExLCA5LCAxMSwgMTM5LCAKLSAgICAyNDIsIDI1MSwgOSwgMTEsIDIyNiwgMTcyLCA2NiwgMiwgMTIyLCAyLCAyMTcsIDQ0LCA5LCAxMSwgMjI2LCAxNzIsIDEyMiwgCi0gICAgMiwgMjQ4LCAyMDMsIDIzMSwgMjEwLCA4NiwgMjQ1LCAyMjgsIDIxMSwgMjM5LCAyMzEsIDIxMCwgODYsIDIxOSwgMzAsIAotICAgIDIxMSwgMjM5LCAyMzEsIDIxMCwgODYsIDIxMiwgOSwgMjExLCAyMzksIDIzMSwgMjEwLCA4NiwgMjI4LCA2MSwgMjExLCAKLSAgICAyMzksIDIzMSwgMjEwLCA4NiwgMjIzLCAxMTQsIDI0NiwgMTA0LCAyMzEsIDIxMCwgODYsIDI0MiwgMTM0LCAyNDYsIDEwNCwgCi0gICAgMjMxLCAyMTAsIDg2LCA3MSwgMjQ2LCAxMDQsIDIzMSwgMjEwLCA4NiwgMTIzLCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCAKLSAgICA4NiwgMTEzLCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgMTM0LCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCAxOSwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIDI0NCwgODksIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAKLSAgICAyMTksIDEyNywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIDIyMCwgMTI0LCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCAKLSAgICA4NiwgMjQ1LCAyMDEsIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyMjgsIDIwNSwgNjQsIDI1MCwgMTQ5LCAyMzEsIAotICAgIDIxMCwgODYsIDEyMywgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgODYsIDExMywgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgCi0gICAgODYsIDEzNCwgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgODYsIDI0NCwgMTksIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNDQsIDg5LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgMjE5LCAxMjcsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIAotICAgIDg2LCAyMjAsIDEyNCwgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgODYsIDI0NSwgMjAxLCA2NCwgMjUyLCAxNjEsIDIzMSwgCi0gICAgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAxMjMsIDY0LCAyNTAsIDQyLCAyMzEsIAotICAgIDIxMCwgODYsIDExMywgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMTM0LCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNDQsIDE5LCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAyNDQsIDg5LCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAKLSAgICAyMTksIDEyNywgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjIwLCAxMjQsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIAotICAgIDI0NSwgMjAxLCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAyMjgsIDIwNSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjI1LCAyOCwgMjMxLCAyMTAsIDg2LCAyMjYsIDE2MCwgMjMxLCAyMTAsIDg2LCAyNTIsIDE2MiwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNTAsIDc4LCAyMzEsIDIxMCwgODYsIDIxOCwgMjQxLCAyMzEsIDIxMCwgODYsIDIxOCwgNDAsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUzLCAxODcsIDIzMSwgMjEwLCA4NiwgMjExLCAyMzIsIDIzMSwgMjEwLCA4NiwgMjM1LCA2OCwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNTIsIDE5MiwgMTMxLCA4NiwgMjAzLCAyNTIsIDE5MiwgMTMxLCA4NiwgMjQxLCA1MCwgMTMxLCA4NiwgMjQxLCA0OSwgCi0gICAgMTMxLCA4NiwgMjQxLCA0OCwgMTMxLCA4NiwgMjQxLCA0NywgMTMxLCA4NiwgMjQxLCA0NiwgMTMxLCA4NiwgMjQxLCA0NSwgCi0gICAgMTMxLCA4NiwgMjQxLCA0NCwgMTMxLCA4NiwgMjQxLCA0MywgMTMxLCA4NiwgMjQxLCA0MiwgMTMxLCA4NiwgMjQxLCA0MSwgCi0gICAgMTMxLCA4NiwgMjQxLCA0MCwgMTMxLCA4NiwgMjQxLCAzOSwgMTMxLCA4NiwgMjQxLCAzOCwgMTMxLCA4NiwgMjQxLCAzNywgCi0gICAgMTMxLCA4NiwgMjQxLCAzNiwgMTMxLCA4NiwgMjQxLCAzNSwgMTMxLCA4NiwgMjQxLCAzNCwgMTMxLCA4NiwgMjQxLCAzMywgCi0gICAgMTMxLCA4NiwgMjQxLCAzMiwgMTMxLCA4NiwgMjQxLCAzMSwgMTMxLCA4NiwgMjQxLCAzMCwgMTMxLCA4NiwgMjQxLCAyOSwgCi0gICAgMTMxLCA4NiwgMjQxLCAyOCwgMTMxLCA4NiwgMjQxLCAyNywgMTMxLCA4NiwgMjQxLCAyNiwgMTMxLCA4NiwgMjQxLCAyNSwgCi0gICAgMTMxLCA4NiwgMjQxLCAyNCwgMTMxLCA4NiwgMjQxLCAyMywgMTMxLCA4NiwgMjQxLCAyMiwgMTMxLCA4NiwgMjQxLCAyMSwgCi0gICAgMTMxLCA4NiwgMjQxLCAyMCwgMTMxLCA4NiwgMjQxLCAxOSwgMTMxLCA4NiwgMjQxLCAxOCwgMTMxLCA4NiwgMjQxLCAxNywgCi0gICAgMTMxLCA4NiwgMjQxLCAxNiwgMTMxLCA4NiwgMjQxLCAxNSwgMTMxLCA4NiwgMjQxLCAxNCwgMTMxLCA4NiwgMjQxLCAxMywgCi0gICAgMTMxLCA4NiwgMjQxLCAxMiwgMTMxLCA4NiwgMjQxLCAxMSwgMTMxLCA4NiwgMjQxLCAxMCwgMTMxLCA4NiwgMjQxLCA5LCAKLSAgICAxMzEsIDg2LCAyNDEsIDgsIDEzMSwgODYsIDI0MSwgNywgMTMxLCA4NiwgMjQxLCA2LCAxMzEsIDg2LCAyNDEsIDUsIDEzMSwgCi0gICAgODYsIDI0MSwgNCwgMTMxLCA4NiwgMjQxLCAzLCAxMzEsIDg2LCAyNDEsIDIsIDEzMSwgODYsIDY3LCAyNTIsIDE5MiwgMTMxLCAKLSAgICA4NiwgMjEzLCAyMzgsIDEzMSwgODYsIDIxMywgMjM3LCAxMzEsIDg2LCAyMTMsIDIzNiwgMTMxLCA4NiwgMjEzLCAyMzUsIAotICAgIDEzMSwgODYsIDIxMywgMjM0LCAxMzEsIDg2LCAyMTMsIDIzMywgMTMxLCA4NiwgMjEzLCAyMzIsIDEzMSwgODYsIDIxMywgCi0gICAgMjMxLCAxMzEsIDg2LCAyMTMsIDIzMCwgMTMxLCA4NiwgMjEzLCAyMjksIDEzMSwgODYsIDIxMywgMjI4LCAxMzEsIDg2LCAKLSAgICAyMTMsIDIyNywgMTMxLCA4NiwgMjEzLCAyMjYsIDEzMSwgODYsIDIxMywgMjI1LCAxMzEsIDg2LCAyMTMsIDIyNCwgMTMxLCAKLSAgICA4NiwgMjEzLCAyMjMsIDEzMSwgODYsIDIxMywgMjIyLCAxMzEsIDg2LCAyMTMsIDIyMSwgMTMxLCA4NiwgMjEzLCAyMjAsIAotICAgIDEzMSwgODYsIDIxMywgMjE5LCAxMzEsIDg2LCAyMTMsIDIxOCwgMTMxLCA4NiwgMjEzLCAyMTcsIDEzMSwgODYsIDIxMywgCi0gICAgMjE2LCAxMzEsIDg2LCAyMTMsIDIxNSwgMTMxLCA4NiwgMjEzLCAyMTQsIDEzMSwgODYsIDIxMywgMjEzLCAxMzEsIDg2LCAKLSAgICAyMTMsIDIxMiwgMTMxLCA4NiwgMjEzLCAyMTEsIDEzMSwgODYsIDIxMywgMjEwLCAxMzEsIDg2LCAyMTMsIDIwOSwgMTMxLCAKLSAgICA4NiwgMjEzLCAyMDgsIDEzMSwgODYsIDIxMywgMjA3LCAxMzEsIDg2LCAyMTMsIDIwNiwgMTMxLCA4NiwgMjEzLCAyMDUsIAotICAgIDEzMSwgODYsIDIxMywgMjA0LCAxMzEsIDg2LCAyMTMsIDIwMywgMTMxLCA4NiwgMjEzLCAyMDIsIDEzMSwgODYsIDIxMywgCi0gICAgMjAxLCAxMzEsIDg2LCAyMTMsIDIwMCwgMTMxLCA4NiwgMjEzLCAxOTksIDEzMSwgODYsIDIxMywgMTk4LCAxMzEsIDg2LCAKLSAgICAyMTMsIDE5NywgMTMxLCA4NiwgMjEzLCAxOTYsIDEzMSwgODYsIDIxMywgMTk1LCAxMzEsIDg2LCAyMTMsIDE5NCwgMTMxLCAKLSAgICA4NiwgMjEzLCAxOTMsIDEzMSwgODYsIDIxMywgMTkyLCAxMzEsIDg2LCAyMTMsIDE5MSwgMTMxLCA4NiwgMjEzLCAxOTAsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTIsIDE5MiwgMjI1LCAzNiwgMjUwLCAyNTEsIDI1NSwgMTgsIDY0LCAyMTksIDE3LCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMTEzLCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDIxOSwgMTcsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDE5LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NCwgODksIDY0LCAKLSAgICAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgCi0gICAgMjIwLCAxMjQsIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ1LCAyMDEsIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAKLSAgICAyNTAsIDI1MSwgMjI4LCAyMDUsIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE2LCAyNDksIDY0LCAyMTksIAotICAgIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM1LCAxNDUsIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCAzNywgCi0gICAgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjQsIDE4LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIAotICAgIDIzNCwgODUsIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjU1LCAxOCwgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAKLSAgICAyNTAsIDI1MSwgMTEzLCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAxMzQsIDY0LCAyNDEsIDIzMiwgMjI1LCAKLSAgICAzNiwgMjUwLCAyNTEsIDI0NCwgMTksIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NCwgODksIDY0LCAyNDEsIAotICAgIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxOSwgMTI3LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjAsIAotICAgIDEyNCwgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ1LCAyMDEsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyOCwgMjA1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMTYsIDI0OSwgNjQsIDI0MSwgCi0gICAgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM1LCAxNDUsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNCwgCi0gICAgMzcsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDIyNCwgMTgsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAKLSAgICAyNTEsIDIzNCwgODUsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDI1NSwgMTgsIDY0LCAyNDcsIDI1NSwgCi0gICAgMjI1LCAzNiwgMjUwLCAyNTEsIDExMywgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMTM0LCA2NCwgMjQ3LCAKLSAgICAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDE5LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIAotICAgIDg5LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMTksIDEyNywgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAKLSAgICAyNTAsIDI1MSwgMjIwLCAxMjQsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjQ3LCAKLSAgICAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjgsIDIwNSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE2LCAKLSAgICAyNDksIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIAotICAgIDI1MCwgMjUxLCAyMzQsIDM3LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjQsIDE4LCA2NCwgMjQ3LCAKLSAgICAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzQsIDg1LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCA4NSwgCi0gICAgMjM1LCA2OCwgMjI1LCAzNiwgMjUwLCAyNTEsIDI1NSwgMTgsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIAotICAgIDExMywgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMTM0LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgCi0gICAgMjUxLCAyNDQsIDE5LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgMjQ5LCAyNTAsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAyMTksIDEyNywgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjIwLCAxMjQsIAotICAgIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgCi0gICAgMjUxLCAyMjgsIDIwNSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE2LCAyNDksIDY0LCAyNDksIDI1MCwgCi0gICAgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzQsIDM3LCAKLSAgICA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjQsIDE4LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgCi0gICAgMjUxLCAyMzQsIDg1LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCA3MSwgMjM1LCA2OCwgMjEsIDIxMCwgODcsIAotICAgIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIDIxMCwgODcsIDI0OSwgMjI3LCAyMSwgMTIzLCAyNDksIDIyNywgMjEsIDExMywgCi0gICAgMjQ5LCAyMjcsIDIxLCAxMzQsIDI0OSwgMjI3LCAyMSwgMjQ0LCAxOSwgMjQ5LCAyMjcsIDIxLCAyNDQsIDg5LCAyNDksIAotICAgIDIyNywgMjEsIDIxOSwgMTI3LCAyNDksIDIyNywgMjEsIDIyMCwgMTI0LCAyNDksIDIyNywgMjEsIDI0NSwgMjAxLCAyNDksIAotICAgIDIyNywgMjEsIDIyOCwgMjA1LCAyNDksIDIyNywgODgsIDcsIDYsIDEsIDYxLCA4OCwgNywgNiwgMSwgMjUzLCAxNjYsIDg4LCAKLSAgICA3LCA2LCAxLCAyNTEsIDc0LCA4OCwgNywgNiwgMSwgMjQ5LCA2OCwgODgsIDcsIDYsIDEsIDc2LCA4OCwgNywgNiwgMSwgCi0gICAgMjQ1LCAxNCwgODgsIDcsIDYsIDEsIDI0MywgMjA5LCA4OCwgNywgNiwgMSwgMjQyLCA2NywgODgsIDcsIDYsIDEsIDc0LCAKLSAgICA4OCwgNywgNiwgMSwgMjM1LCAxNTAsIDg4LCA3LCA2LCAxLCAyMzUsIDI5LCA4OCwgNywgNiwgMSwgMTU2LCA4OCwgNywgNiwgCi0gICAgMSwgMTk0LCA4OCwgNywgNiwgMSwgMjMwLCAzMCwgODgsIDcsIDYsIDEsIDc4LCA4OCwgNywgNiwgMSwgMjI2LCAxMDksIDg4LCAKLSAgICA3LCA2LCAxLCAyMjQsIDk5LCA4OCwgNywgNiwgMSwgMTUzLCA4OCwgNywgNiwgMSwgMjIyLCA5MywgODgsIDcsIDYsIDEsIAotICAgIDIxNywgMTUzLCA4OCwgNywgNiwgMSwgNjksIDg4LCA3LCA2LCAxLCAyMTQsIDEwNSwgODgsIDcsIDYsIDEsIDIxMiwgOTgsIAotICAgIDg4LCA3LCA2LCAxLCAyMTEsIDE3OCwgODgsIDcsIDYsIDEsIDIxMSwgMTE3LCA4OCwgNywgNiwgMSwgMjEwLCAxNTksIDIxNiwgCi0gICAgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDcsIDYsIDEsIDIyMiwgOTMsIDM3LCAzMiwgNywgNiwgMSwgMjUxLCA3NCwgMzcsIDMyLCAKLSAgICA3LCA2LCAxLCAxNTMsIDM3LCAyNTAsIDE5OSwgMzcsIDIxMSwgMTgwLCA5MiwgNywgNiwgMSwgNjEsIDkyLCA3LCA2LCAxLCAKLSAgICAyNTMsIDE2NiwgOTIsIDcsIDYsIDEsIDI1MSwgNzQsIDkyLCA3LCA2LCAxLCAyNDksIDY4LCA5MiwgNywgNiwgMSwgNzYsIAotICAgIDkyLCA3LCA2LCAxLCAyNDUsIDE0LCA5MiwgNywgNiwgMSwgMjQzLCAyMDksIDkyLCA3LCA2LCAxLCAyNDIsIDY3LCA5MiwgNywgCi0gICAgNiwgMSwgNzQsIDkyLCA3LCA2LCAxLCAyMzUsIDE1MCwgOTIsIDcsIDYsIDEsIDIzNSwgMjksIDkyLCA3LCA2LCAxLCAxNTYsIAotICAgIDkyLCA3LCA2LCAxLCAxOTQsIDkyLCA3LCA2LCAxLCAyMzAsIDMwLCA5MiwgNywgNiwgMSwgNzgsIDkyLCA3LCA2LCAxLCAKLSAgICAyMjYsIDEwOSwgOTIsIDcsIDYsIDEsIDIyNCwgOTksIDkyLCA3LCA2LCAxLCAxNTMsIDkyLCA3LCA2LCAxLCAyMjIsIDkzLCAKLSAgICA5MiwgNywgNiwgMSwgMjE3LCAxNTMsIDkyLCA3LCA2LCAxLCA2OSwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCA5MiwgNywgNiwgCi0gICAgMSwgMjEyLCA5OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIDkyLCA3LCA2LCAxLCAKLSAgICAyMTAsIDE1OSwgOTIsIDI0MCwgMjA4LCA5MiwgMjMwLCA1NCwgOTIsIDIyMSwgMTg1LCA5MiwgMjE4LCAyMjgsIDkyLCAyMjQsIAotICAgIDIyMSwgOTIsIDIxMiwgMjMsIDE1MiwgMzcsIDcsIDYsIDEsIDYxLCAxNTIsIDM3LCA3LCA2LCAxLCAyNTMsIDE2NiwgMTUyLCAKLSAgICAzNywgNywgNiwgMSwgMjUxLCA3NCwgMTUyLCAzNywgNywgNiwgMSwgMjQ5LCA2OCwgMTUyLCAzNywgNywgNiwgMSwgNzYsIAotICAgIDE1MiwgMzcsIDcsIDYsIDEsIDI0NSwgMTQsIDE1MiwgMzcsIDcsIDYsIDEsIDI0MywgMjA5LCAxNTIsIDM3LCA3LCA2LCAxLCAKLSAgICAyNDIsIDY3LCAxNTIsIDM3LCA3LCA2LCAxLCA3NCwgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAxNTAsIDE1MiwgMzcsIDcsIDYsIAotICAgIDEsIDIzNSwgMjksIDE1MiwgMzcsIDcsIDYsIDEsIDE1NiwgMTUyLCAzNywgNywgNiwgMSwgMTk0LCAxNTIsIDM3LCA3LCA2LCAKLSAgICAxLCAyMzAsIDMwLCAxNTIsIDM3LCA3LCA2LCAxLCA3OCwgMTUyLCAzNywgNywgNiwgMSwgMjI2LCAxMDksIDE1MiwgMzcsIDcsIAotICAgIDYsIDEsIDIyNCwgOTksIDE1MiwgMzcsIDcsIDYsIDEsIDE1MywgMTUyLCAzNywgNywgNiwgMSwgMjIyLCA5MywgMTUyLCAzNywgCi0gICAgNywgNiwgMSwgMjE3LCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIDY5LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTQsIDEwNSwgMTUyLCAKLSAgICAzNywgNywgNiwgMSwgMjEyLCA5OCwgMTUyLCAzNywgNywgNiwgMSwgMjExLCAxNzgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgCi0gICAgMTE3LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMjIzLCAxNjAsIDIzMSwgMTAyLCA1MCwgMjIzLCAxNjAsIDIzMSwgCi0gICAgOTksIDUwLCAxNTIsIDkyLCA3LCA2LCAxLCA2MSwgMTUyLCA5MiwgNywgNiwgMSwgMjUzLCAxNjYsIDE1MiwgOTIsIDcsIDYsIAotICAgIDEsIDI1MSwgNzQsIDE1MiwgOTIsIDcsIDYsIDEsIDI0OSwgNjgsIDE1MiwgOTIsIDcsIDYsIDEsIDc2LCAxNTIsIDkyLCA3LCAKLSAgICA2LCAxLCAyNDUsIDE0LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDMsIDIwOSwgMTUyLCA5MiwgNywgNiwgMSwgMjQyLCA2NywgCi0gICAgMTUyLCA5MiwgNywgNiwgMSwgNzQsIDE1MiwgOTIsIDcsIDYsIDEsIDIzNSwgMTUwLCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIAotICAgIDI5LCAxNTIsIDkyLCA3LCA2LCAxLCAxNTYsIDE1MiwgOTIsIDcsIDYsIDEsIDE5NCwgMTUyLCA5MiwgNywgNiwgMSwgMjMwLCAKLSAgICAzMCwgMTUyLCA5MiwgNywgNiwgMSwgNzgsIDE1MiwgOTIsIDcsIDYsIDEsIDIyNiwgMTA5LCAxNTIsIDkyLCA3LCA2LCAxLCAKLSAgICAyMjQsIDk5LCAxNTIsIDkyLCA3LCA2LCAxLCAxNTMsIDE1MiwgOTIsIDcsIDYsIDEsIDIyMiwgOTMsIDE1MiwgOTIsIDcsIDYsIAotICAgIDEsIDIxNywgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCA2OSwgMTUyLCA5MiwgNywgNiwgMSwgMjE0LCAxMDUsIDE1MiwgOTIsIAotICAgIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDExNywgCi0gICAgMTUyLCA5MiwgNywgNiwgMSwgMjEwLCAxNTksIDI0OSwgMTM2LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwOSwgMTUyLCAKLSAgICA5MiwgMjQwLCAxMjAsIDE1MiwgOTIsIDE5MSwgMTUyLCA5MiwgMjA2LCAxNTIsIDkyLCAyNTUsIDM0LCAxNTIsIDkyLCAyMTIsIAotICAgIDIzLCA0MiwgMjQ3LCAxNzIsIDkyLCAyNTAsIDMxLCA5MiwgMjQ5LCAxNzgsIDkyLCAyNDQsIDQsIDkyLCAyNDAsIDExMiwgCi0gICAgOTIsIDIyOSwgOTEsIDkyLCAyMjksIDg0LCA5MiwgMjI2LCAyMTgsIDkyLCAyMTksIDM3LCA5MiwgMTIwLCAyLCAyNDUsIDM5LCAKLSAgICA3OSwgOTIsIDIxMywgMTE5LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCA2MSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgCi0gICAgMSwgMjUzLCAxNjYsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDI1MSwgNzQsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIAotICAgIDEsIDI0OSwgNjgsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc2LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAKLSAgICAyNDUsIDE0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyNDMsIDIwOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgCi0gICAgMjQyLCA2NywgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgNzQsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIzNSwgCi0gICAgMTUwLCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMzUsIDI5LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAxNTYsIAotICAgIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDE5NCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjMwLCAzMCwgMjIzLCAKLSAgICAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgNzgsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIyNiwgMTA5LCAyMjMsIDEwNiwgCi0gICAgMjM1LCAyNDYsIDE2LCAxLCAyMjQsIDk5LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAxNTMsIDIyMywgMTA2LCAyMzUsIAotICAgIDI0NiwgMTYsIDEsIDIyMiwgOTMsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxNywgMTUzLCAyMjMsIDEwNiwgMjM1LCAKLSAgICAyNDYsIDE2LCAxLCA2OSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjE0LCAxMDUsIDIyMywgMTA2LCAyMzUsIDI0NiwgCi0gICAgMTYsIDEsIDIxMiwgOTgsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxMSwgMTc4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIAotICAgIDE2LCAxLCAyMTEsIDExNywgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjEwLCAxNTksIDQyLCAxNDEsIDI0MSwgNzAsIAotICAgIDkyLCA1NiwgMjM0LCAyNCwgOTIsIDU2LCAyMDYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTcsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjksIDkyLCA1NiwgMjQ4LCA5OCwgOTIsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA3NiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA2MywgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAzNSwgOTIsIAotICAgIDEwLCAyMTQsIDE3NywgMjM4LCA2MiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA3NSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAKLSAgICA0OSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA0MiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA1MSwgOTIsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA3MiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA1OCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA3NCwgOTIsIAotICAgIDEwLCAyMTQsIDE3NywgMjM4LCA1MCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA3MywgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAKLSAgICAzNiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA0MSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAzNCwgOTIsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA2NCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA2NiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA0NCwgOTIsIAotICAgIDEwLCAyMTQsIDE3NywgMjM4LCA1NSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA1MywgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAKLSAgICA3OSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA3OCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAzMiwgOTIsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA1OSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA3NywgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA2OCwgOTIsIAotICAgIDEwLCAyMTQsIDE3NywgMjM4LCA1NCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAzMywgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAKLSAgICA1NiwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAzOCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAzNywgOTIsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA2NywgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA0NSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA0NywgOTIsIAotICAgIDEwLCAyMTQsIDE3NywgMjM4LCA0OCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA0MCwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCAKLSAgICA3MSwgOTIsIDEwLCAyMTQsIDE3NywgMjM4LCA2NSwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAKLSAgICAyMzgsIDQ2LCAyMTYsIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNzgsIDIxNiwgNywgMjIwLCAKLSAgICA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIDE3NywgMjM4LCA3NiwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgCi0gICAgMTc3LCAyMzgsIDYwLCAyMTYsIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNDMsIDIxNiwgNywgCi0gICAgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIDE3NywgMjM4LCA1NiwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIAotICAgIDIxNCwgMTc3LCAyMzgsIDM5LCAyMTYsIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNzAsIDIxNiwgCi0gICAgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIDE3NywgMjM4LCA1MiwgMzcsIDE1NCwgMjU0LCAyNTQsIDM3LCAxNTQsIAotICAgIDI1NSwgMjEsIDI0OSwgNzksIDI0NCwgNTAsIDI1MCwgOCwgMjE0LCAxOTQsIDIyOCwgMjE4LCAyLCAyMTgsIDE1NSwgMjE4LCAKLSAgICAzNCwgMTE1LCAyMzAsIDExOSwgMjE4LCAzMywgMjUwLCAzNCwgMjUzLCAyMTUsIDI0NiwgNjIsIDIxOCwgMzIsIDExNSwgCi0gICAgMjUxLCAxMjYsIDIyMywgMTYxLCAyNTEsIDE0OCwgMjUzLCAyMTUsIDIyOCwgMjE3LCAyMTIsIDQxLCAyMTIsIDM1LCAyMTMsIAotICAgIDEzMSwgMjMwLCAyMDAsIDIxMiwgMjUsIDI0NSwgMjMyLCAyNDIsIDE4OCwgMjQ1LCA1MywgMjQ1LCAyMzIsIDI0MiwgMTg4LCAKLSAgICAyNTQsIDEzNiwgMjQ1LCAyMzIsIDI0MiwgMTg4LCAyNTMsIDIzMywgMjQyLCAxODgsIDIsIDIzMSwgNTYsIDE2NiwgMjMwLCAKLSAgICAxMzQsIDg3LCAyMTIsIDI3LCAyNDksIDE0NSwgMjMwLCAxMzQsIDg3LCAyNDQsIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzQsIAotICAgIDg3LCAyMTIsIDI3LCAyNDIsIDIxNywgMjMwLCAxMzQsIDg3LCAyNDMsIDIzNiwgMjMwLCAxMzQsIDg3LCAyMTIsIDUyLCAKLSAgICAyNDIsIDIxNywgMjMwLCAxMzQsIDg3LCAyMzMsIDg2LCAyMjQsIDI1LCAyMzAsIDEzNCwgODcsIDIxMiwgNTIsIDI0OSwgCi0gICAgMTQ1LCAyMzAsIDEzNCwgODcsIDI0OSwgMTQ1LCAyMzAsIDEzMywgMTY2LCAyMzAsIDEzNCwgMiwgMjQ0LCAxOTgsIDI0NCwgCi0gICAgMTAwLCAyMjQsIDI1LCAyMzAsIDEzNCwgMiwgMjQ0LCAxOTgsIDIzMywgODYsIDIyNCwgMjUsIDIzMCwgMTM0LCAyLCAyNDQsIAotICAgIDE5OCwgMjQzLCAyMzYsIDIzMCwgMTM0LCAyLCAyNDQsIDE5OCwgMjE4LCAzOSwgMiwgMjQ0LCAxOTgsIDI0MiwgMTg2LCAKLSAgICAyMTgsIDE1OCwgMjIwLCAxLCAyMTgsIDE1OCwgMjUwLCAxMjQsIDIyMSwgMTcwLCAyNDUsIDQ3LCAyMTUsIDIzNiwgMjQ4LCAKLSAgICA5MiwgMjE1LCAyMzYsIDIyNiwgNjMsIDIxNSwgMjM2LCAyNTEsIDM1LCAyMTUsIDExMCwgMjUwLCAxMjYsIDI1MSwgMjE4LCAKLSAgICAyMjIsIDE5MywgMjQxLCAxODYsIDIxOCwgMzcsIDI1MSwgMjE4LCAyNDUsIDIzNiwgNjQsIDIzMSwgMTk5LCAyNDUsIDIzNiwgCi0gICAgNjQsIDIyMywgMzQsIDI0MSwgMjExLCAyNDQsIDE5LCAyMzMsIDYwLCAyNDksIDI1NCwgMjMxLCAxNzUsIDIzMywgNTksIAotICAgIDI0NCwgMTg0LCAyMzMsIDU5LCAyMzMsIDYwLCAyNDQsIDU1LCAyMzYsIDcsIDIxMSwgMjM5LCAyMzAsIDYzLCAyMTYsIDM1LCAKLSAgICAyNTMsIDE5OSwgMjQyLCAxNTAsIDIzMSwgNzIsIDIxMiwgMzksIDIxNywgNTgsIDIzMywgMzIsIDI1MiwgMTU3LCAyMjUsIAotICAgIDY1LCAyMjMsIDExNCwgMjU0LCA2MiwgMjQyLCAxMzQsIDI1NCwgNjIsIDIyNSwgMjIwLCAyMjUsIDIyMSwgMjUwLCAxMjcsIAotICAgIDIxOCwgMTE2LCAyNDIsIDMwLCAyMTksIDkyLCA2NCwgMjI1LCA0NywgMjMxLCA5MiwgMjI2LCAyMDEsIDI1MSwgMjAyLCAKLSAgICAyMjQsIDIzMiwgMjMzLCA0MiwgMjIzLCAzNSwgMjQ5LCAxNTAsIDIyMywgMzUsIDI1MiwgMTY3LCAyNDksIDE4MSwgMjIzLCAKLSAgICAzNCwgMjQ5LCAxMDMsIDIyLCAyMjMsIDM0LCAyMTgsIDE0MywgMjUxLCAxNzUsIDIxOSwgMTYsIDI1MSwgMTU5LCAyNDQsIDMsIAotICAgIDI0MywgMjU1LCAyMjIsIDIwOSwgMjE3LCAyNDcsIDIyNCwgMjM0LCAyNDgsIDE4MywgMjI2LCAyNDAsIDIxOCwgOCwgMjQ0LCAKLSAgICAwLCAyMTksIDIzMiwgMjQ0LCA5OSwgMjUxLCAyOSwgMiwgMjE3LCAyNDAsIDI0OCwgNDMsIDIxOSwgNTQsIDI0MCwgMTE5LCAKLSAgICAyNDksIDE0OSwgMjIwLCA3MiwgMjQwLCAxMTgsIDI0MCwgMTE5LCAyNDksIDE0OSwgMjQ2LCAxMTYsIDI0OSwgMTgwLCAyNTAsIAotICAgIDkyLCAxMzAsIDI1MSwgNiwgMjMyLCAxNDcsIDI0OSwgOTYsIDI0MSwgNjIsIDIyNCwgMjM2LCAyMTksIDI0MiwgMjUyLCA0NCwgCi0gICAgMjUxLCAxNzEsIDIyNCwgMjM3LCA2NCwgMjQ0LCA0MSwgMjQ5LCAxNzksIDI0NCwgMzIsIDIyLCAyMzQsIDM4LCAyMTcsIDIwLCAKLSAgICAyMTEsIDIzMCwgMjQyLCAyMCwgMjIyLCAxNCwgMjUxLCAxODUsIDIyLCAyNDksIDExMCwgMjExLCAyMzcsIDI0MiwgMTkxLCAKLSAgICAyNDksIDI0MywgMjQyLCAxOTEsIDIxNSwgMTk0LCAyNDYsIDk4LCAyNTIsIDcwLCAyMzAsIDk4LCAyNTAsIDE1LCAyNTIsIAotICAgIDcwLCAyMzAsIDk3LCAyNTIsIDE5NSwgMjUxLCAxODQsIDIyMywgMzYsIDIxMSwgMjAxLCAyMjQsIDE5OCwgMjUxLCAyNDMsIAotICAgIDI1MSwgMjgsIDIzNSwgMTQ0LCAyNTAsIDg1LCAyMTUsIDIzNiwgMjQ0LCAxNzAsIDI1MCwgODQsIDI0NCwgMTAyLCAyNDQsIAotICAgIDEwMywgMjE5LCAxNCwgMjUyLCAxNjYsIDIyNSwgMjU0LCAyMjQsIDI0NywgMjQ5LCAyMTIsIDI1MiwgMTY3LCAyMTcsIDYwLCAKLSAgICAyMTUsIDIzNiwgMjQ5LCAxMzYsIDI0NCwgNzUsIDIyNSwgNjYsIDI0OCwgODksIDIzNSwgMTM3LCAyNDcsIDEzOSwgMjUwLCAKLSAgICAyNDAsIDIxOCwgMTE1LCAyMTEsIDI0MCwgMjUwLCAxMDYsIDIzMCwgMTM0LCAyMTMsIDE2NCwgMjUwLCAxNzAsIDIyMSwgCi0gICAgMjAxLCAyMjEsIDIyNiwgMjQyLCAxNTUsIDI1MSwgMywgMjUwLCAyNDEsIDI0MCwgMjUyLCAyNDQsIDEzOCwgMjEyLCAwLCAKLSAgICAyMjIsIDIwMiwgMjQ5LCAyNDQsIDI0NCwgOTQsIDIyNSwgNSwgMjIsIDI0NCwgOTgsIDIzMCwgMjMyLCAyMzAsIDExMywgCi0gICAgMjUxLCAxOCwgMjUwLCA0NywgMjQxLCAyMzksIDI1MywgMjQ5LCAyMjYsIDY2LCAyMTYsIDE1LCAyNDIsIDIsIDI1MCwgMzcsIAotICAgIDIxNiwgMjQzLCAyMTYsIDExNCwgMjUwLCAyOCwgMjUxLCAyMTAsIDIyNSwgMTgwLCAyNTMsIDI0OCwgMjEzLCAxNzIsIDI0MywgCi0gICAgMTE3LCAyNDcsIDIwNSwgMjQxLCAxNjMsIDIxOSwgODYsIDIzMSwgMjM5LCAyNTEsIDI1MywgMjQzLCAxMTgsIDI0NywgMjQ4LCAKLSAgICAyNTEsIDE3NCwgMjQ0LCA2MCwgMjI1LCAzNiwgMjUwLCAyNDksIDI4LCAyMjgsIDUyLCAyMzAsIDkwLCAyOCwgMjI4LCA0NywgCi0gICAgMjIxLCAyMTQsIDI0MiwgMTA2LCAyOCwgMjM0LCAxNDMsIDIxNSwgMTkxLCAyMTMsIDE1NCwgMjgsIDIyMSwgMTk0LCAyMjIsIAotICAgIDEyNiwgMjIwLCAxMywgMiwgMjIxLCAyMjksIDIxNiwgMjQ1LCAyMjMsIDE4MSwgMjIsIDI1MiwgMTY3LCAyMTksIDEwNywgCi0gICAgMjIsIDIxOSwgMTA3LCAyNTEsIDE5NSwgMjUyLCAxMzEsIDIyLCAyNDEsIDU2LCAyNTAsIDEyOCwgMjQ0LCA4MSwgMjE5LCAKLSAgICA2NSwgMjIyLCAxMjcsIDIxOCwgMTMsIDIxNSwgMTk1LCAyNDAsIDI1MywgMjIzLCAxODIsIDI1NCwgMTM3LCAyNDQsIDM5LCAKLSAgICAyMjIsIDEzOCwgMjQ0LCAzOSwgMjE3LCAyNDIsIDI0MCwgMjQyLCAyNTEsIDEyNywgMjQwLCAyNDIsIDIsIDI0MywgMTAxLCAKLSAgICAyMjYsIDIzMywgMjUxLCAxMjcsIDIzNSwgMTM3LCAyMjQsIDI0MiwgMjI2LCAyMzIsIDI0NSwgNTIsIDIyNCwgMjQyLCAyMjYsIAotICAgIDIzMiwgMjQwLCAyNTEsIDI1MiwgMTUzLCAyNTMsIDE4OSwgMjE2LCAyNTMsIDIzMSwgMjM5LCAyNDAsIDI0NywgMjMyLCAKLSAgICAxMTcsIDI0MCwgMjQ3LCAyNDksIDE4NCwgMjE4LCAxMjcsIDIyMSwgMjAwLCAyNDgsIDUxLCAyMTgsIDEyNywgMjQ0LCAxODgsIAotICAgIDIzNSwgMTU1LCAyMzMsIDk1LCAyMzUsIDEzNywgMjUwLCAyMzQsIDI0NSwgNTIsIDI1MCwgMjM0LCAyMjMsIDE0NCwgMjMwLCAKLSAgICAxMTcsIDIyNiwgMTE4LCAyMTIsIDQxLCAyNTEsIDEzMSwgMjQ5LCAxNTMsIDIxNiwgMTA3LCAyMzMsIDI0LCAyMjMsIDE4MywgCi0gICAgMjUwLCAyMzIsIDI0NiwgMTA0LCAyNDksIDE0MywgMjEyLCAzLCAyMTksIDcyLCAyMTksIDcwLCAyNDAsIDI1MiwgMjIzLCAKLSAgICAxNTYsIDI0MiwgMTc3LCAyMjAsIDU5LCAyMzAsIDE1MCwgMjIyLCAxOTYsIDI1MCwgMTE2LCAyNDcsIDE0NCwgMjI1LCA3NiwgCi0gICAgMjUxLCAyMTEsIDI0NSwgMTc3LCAyMjYsIDI0MiwgMjE4LCAyNTQsIDIyMCwgNTQsIDI1MSwgMTMwLCAyNTQsIDEwMCwgMjQxLCAKLSAgICA2MSwgMjMzLCAxMjcsIDI1MiwgNjgsIDI0NCwgOTgsIDIxNSwgMTk0LCAyNDQsIDk4LCAyNTEsIDIxNywgMjE1LCA5MSwgCi0gICAgMjQyLCAwLCAyNTAsIDExNywgMjUyLCAxOTUsIDI1MCwgMTE3LCAyNDMsIDI1MCwgMjUyLCAxOTUsIDI1MCwgMTE3LCAyNTEsIAotICAgIDI0NSwgMjI1LCAxOTgsIDIzNCwgMzIsIDIyNCwgMjUxLCAyNDYsIDk1LCAyNTEsIDE5LCAyNTIsIDE4NSwgMjUxLCAxOSwgCi0gICAgMjQ3LCAxMzgsIDIzMCwgMTE4LCAyNDQsIDE5OCwgMjQ5LCAxNTQsIDI0NCwgMTk4LCAyMTYsIDEwOCwgMjQ0LCAxOTgsIAotICAgIDIyMywgMTg0LCAyNDQsIDE5OCwgMjUwLCAyMzMsIDI0NCwgMTk4LCAyNDYsIDEwNSwgMjQ0LCAxOTgsIDIxOCwgMjQzLCAKLSAgICAyMTIsIDMsIDI0MCwgMjUzLCAyNDQsIDE5OCwgMjMwLCAxNTEsIDI0NCwgMTk4LCAyNDcsIDE0NSwgMjQ0LCAxOTgsIDIyNSwgCi0gICAgNzcsIDI0NCwgMTk4LCAyNDMsIDI1MywgMjQ0LCAxOTgsIDI0MiwgMjcsIDI0NCwgMTk4LCAyMTEsIDIyNCwgMjQ0LCAxOTgsIAotICAgIDI1MiwgNzksIDI0NCwgMTk4LCAyMjYsIDQ5LCAyNDQsIDE5OCwgMjI1LCA3NywgMjI4LCA1OCwgMjI1LCAyMzYsIDIyNCwgCi0gICAgMTg5LCAyNDUsIDIxLCAyNDUsIDIzNSwgMjI4LCA1OCwgMjMwLCAxMTUsIDIxNiwgMjAsIDcxLCAxMjAsIDIyNSwgMTAsIAotICAgIDI1MiwgMTkwLCAyMzUsIDI0OSwgNzEsIDEyNCwgMjI1LCAxMCwgMjUyLCAxOTAsIDIzNSwgMjQ5LCA3MSwgNDMsIDIyNSwgCi0gICAgMTAsIDI1MiwgMTkwLCAyMzUsIDI0OSwgNzEsIDQ0LCAyMjUsIDEwLCAyNTIsIDE5MCwgMjM1LCAyNDksIDI0NCwgOTIsIAotICAgIDI0MiwgMjMsIDUwLCAyMTIsIDMzLCAyNDIsIDIzLCA1MCwgMjI2LCAyMTksIDI0MiwgMjMsIDUwLCAyMTYsIDEzNiwgMTIwLCAKLSAgICA1MCwgMjE2LCAxMzYsIDEyNCwgNTAsIDI1MCwgMjcsIDI0MiwgMTgsIDUwLCAyMDQsIDI0MiwgMTgsIDUwLCAyNDksIDEzMSwgCi0gICAgMjExLCAyMjAsIDI0MiwgMiwgMjQ1LCAyMiwgMjI5LCAxMDksIDIxNywgMTUyLCAyMzUsIDEzMSwgMjQ2LCAxMDAsIDIzNCwgCi0gICAgODgsIDI1MSwgMjU1LCAyMTEsIDIyMCwgMjUwLCAxLCAyMjQsIDEzMCwgMjQyLCAyMSwgMjI0LCAyMzMsIDIzMSwgMTgyLCAKLSAgICAyMjAsIDYsIDI1MywgMjExLCAyMjAsIDYsIDI0MSwgMTcxLCAyMjAsIDYsIDIxMSwgMjIwLCAyMjEsIDI0MiwgMjExLCAyMjAsIAotICAgIDI1MSwgMTk0LCAyNDQsIDM3LCAyNTEsIDk4LCAyMzYsIDcsIDIxOSwgMTcxLCAyNTEsIDk3LCAyMzYsIDcsIDIxOSwgMTcxLCAKLSAgICAyNTEsIDE3MCwgMjQyLCAyMDEsIDIzMSwgMTkwLCAyMTEsIDIyMSwgMjQ0LCAxODIsIDIzMSwgMTkxLCAyMiwgMjExLCAyMjIsIAotICAgIDI0MSwgNjcsIDI0MiwgMTcsIDExMywgMjMxLCA2NCwgMjQxLCA2NywgMjQyLCAxNywgMTEzLCAyMTEsIDIxOSwgMjQxLCA2NywgCi0gICAgMjQyLCAxNywgMjI1LCAyLCAyMjYsIDIzMSwgMjExLCAyMjIsIDIsIDI1MSwgMTE0LCAyNDUsIDIzMywgMjUxLCAxNDksIDIsIAotICAgIDIxMywgMjQ2LCAyMjUsIDE3MSwgMiwgMjUxLCAyMjAsIDI0MiwgNDEsIDIzMSwgMTkxLCAyLCAyNDIsIDExNywgMjI1LCAKLSAgICAxMTIsIDIzMSwgMTc5LCAyMzEsIDE5MSwgMiwgMjE1LCA5OCwgMjI2LCAyMTIsIDIzMSwgMTkwLCAyMjYsIDIxMiwgMjExLCAKLSAgICAyMjEsIDI1MiwgMTk0LCAyNDksIDE5OCwgMjExLCAyMDUsIDIyNCwgMTkyLCAyMzUsIDEzNywgMjI2LCAyMjcsIDIzNSwgCi0gICAgMTM3LCAyNDIsIDE3NiwgMjQyLCAyMjksIDI1MiwgMTk1LCAyNTQsIDEyMSwgMjQ1LCAyNiwgMjU0LCAxNjksIDI1NCwgMTcwLCAKLSAgICAyMzAsIDE0MSwgMjM2LCAxMiwgMjE5LCAxMDIsIDIzNSwgMjM5LCAyNDgsIDQyLCAyMjUsIDE3MCwgMjQyLCAxMTIsIDI0OCwgCi0gICAgMTg3LCAyMzIsIDIwNywgMjI5LCAyMTYsIDIyNSwgMSwgMjQ0LCAxOTksIDIzMSwgMTQ3LCAyNDIsIDQwLCAyNTIsIDE0NiwgCi0gICAgMjI1LCA0LCAyMTcsIDE3MiwgMjI1LCA2OSwgMjM0LCA3MCwgNzksIDIzMiwgMTE3LCAyMzMsIDE2LCAyMjIsIDIzNiwgMjQzLCAKLSAgICA2MSwgMjE4LCAxMzMsIDIzNCwgNjksIDI1MSwgMTc5LCAyNDksIDE1NiwgMiwgMjQxLCAyMzQsIDIxMiwgMTksIDI1MiwgNzcsIAotICAgIDI0MSwgMjM0LCAyNTEsIDE0MywgMjQxLCAyMzQsIDExMywgMjQxLCAyMzIsIDIxOSwgMTIsIDI0MSwgMjM0LCAyNDIsIDEyNywgCi0gICAgMjQxLCAyMzQsIDI0MSwgMjM1LCAyLCA3NSwgMjUxLCAyMTYsIDI0MSwgMjM0LCAyNDIsIDEzNCwgMjQxLCAyMzQsIDIxMSwgCi0gICAgNDIsIDI0MSwgMjM0LCAyMjQsIDEzMSwgMjQxLCAyMzQsIDI0MSwgMjM1LCAyLCAyMjMsIDM2LCAyMjMsIDQ3LCAyNDEsIAotICAgIDIzMiwgMjQxLCAyMzUsIDI0OCwgODksIDI0OCwgMSwgMjIwLCA4NCwgMiwgMTE2LCA1OSwgMjM1LCAyMjIsIDI0NSwgMTgwLCAKLSAgICAxOTMsIDI1MSwgMTI0LCAyNTQsIDEyMCwgODcsIDI1MSwgMjAzLCAyMTksIDk0LCA4NywgMjQ5LCAyMzYsIDg3LCAyMTgsIAotICAgIDI0OCwgMjE3LCAyNDksIDg3LCAyNDYsIDkzLCAyNDgsIDE2NSwgODcsIDIyNSwgNzAsIDY0LCAyMjQsIDI1MiwgMjQ0LCA2OSwgCi0gICAgMjUyLCAxMSwgMjQ3LCAxNzMsIDg3LCAyMTksIDUsIDI1MiwgMTY2LCAyMTYsIDE1MCwgMjUyLCAxNjYsIDcxLCAyNDQsIDU5LCAKLSAgICAyNDAsIDIxOCwgMjI1LCA4LCA4NywgMjMwLCAxNTQsIDI1MiwgMTgwLCAyNDksIDEwNiwgMjQ1LCA0MCwgMTE0LCAyNDcsIAotICAgIDE0MCwgNTAsIDI0OSwgMTQ3LCAyNTAsIDI1MCwgMjUyLCAxNTIsIDIsIDIxMSwgNDAsIDUwLCAyNTIsIDE1MiwgMiwgMjQ3LCAKLSAgICAxNDAsIDUwLCAyNTIsIDE1MiwgMiwgMjQ1LCA1NSwgNTAsIDI1MiwgMTUyLCAyLCAyMjQsIDIzMSwgNTAsIDIzMCwgMTU0LCAKLSAgICAyLCAyMTEsIDIzNSwgMjUwLCAxNDYsIDIsIDIxNCwgMTUzLCAyMTUsIDIzMiwgMjIsIDIxMSwgNDAsIDUwLCAyMjEsIDE4MCwgCi0gICAgMjI1LCAxNjksIDI0OSwgMjE2LCAyNTEsIDE0NywgMjMwLCAxOTEsIDI0NCwgNjQsIDI0NywgMTkzLCAyMjYsIDE2NSwgMjQ3LCAKLSAgICAxOTgsIDI0NiwgNTcsIDI0NCwgMTE1LCAyNDQsIDQ4LCAyMDQsIDI0NCwgMTE1LCAyNDQsIDQ4LCAyMjYsIDgwLCAyLCAyNDksIAotICAgIDEwOCwgMjI2LCA4MCwgMjQ0LCAxOTEsIDIxNCwgMTYzLCAyNTEsIDI0LCAyMTcsIDE5LCAyNTEsIDI0LCAyNTAsIDI1MSwgCi0gICAgMjM1LCAyNDksIDI1MCwgMTQ2LCAyLCAyMTQsIDE1MywgMjE1LCAyMzEsIDI1MCwgMTQ2LCAyLCAyNDYsIDExMiwgMjE1LCAKLSAgICAyMzEsIDI1MiwgMTQ5LCAyNTAsIDE0NSwgMjUwLCAxNCwgMjI0LCAxMjYsIDIyMiwgMTg3LCAyMjQsIDEyNiwgMjI2LCAyMywgCi0gICAgMjE4LCAxMjMsIDIyMiwgMTMzLCAyMTUsIDIyMywgMjIyLCAxMzMsIDI1MSwgMTk5LCAyMTcsIDkyLCAyMzMsIDU3LCAyMjgsIAotICAgIDUwLCAyMjgsIDUxLCAyLCAyNDgsIDg4LCAyNDksIDE1NSwgMjUwLCA4LCAyNTEsIDIwMCwgMjA0LCAyNTEsIDIwMCwgMjQyLCAKLSAgICAxMzQsIDI1MSwgMjAwLCAyNTEsIDIxNiwgMjUxLCAyMDAsIDIyNiwgMTYxLCAyNTEsIDIwMCwgMjUxLCAxOTcsIDIyOSwgCi0gICAgMjEwLCAyNTIsIDE4MywgMjIxLCAxODgsIDIzMSwgNjUsIDIxNywgMiwgMjIzLCAxMjYsIDIyNiwgNzgsIDI0NCwgMTY3LCAKLSAgICAyMzEsIDIzOSwgMjIxLCAyMjUsIDI1NCwgOTcsIDIyNCwgMTQ4LCAyNTUsIDUsIDIzMiwgMTE5LCAyNTAsIDEzNSwgMjMxLCAKLSAgICA3NywgMjI2LCAxMzMsIDIxNSwgMjM5LCAyMzYsIDMsIDIxNSwgMjM5LCAyMjYsIDg2LCAyNDYsIDMyLCA4NywgMjM2LCAwLCAKLSAgICAyNDUsIDEyNywgMjQ1LCAxMjgsIDIsIDI0NiwgMTEyLCA4MCwgNDgsIDI1MCwgOCwgMjMxLCAyMDUsIDIsIDIzMiwgMTEzLCAKLSAgICAyNDQsIDgxLCAyNTAsIDgsIDIzMSwgMjA1LCAyLCAyMjMsIDE2MCwgMjQ0LCA4MSwgMjA0LCAyMzEsIDIwNSwgMiwgMjIzLCAKLSAgICAxNjAsIDI0NCwgODEsIDIwNCwgMjMxLCAyMDUsIDIsIDIzMiwgMTEzLCAyNDQsIDgxLCAyMjQsIDIzOSwgMjI0LCAyNDAsIAotICAgIDI0MCwgMjU1LCAyMjksIDg5LCAyMzAsIDE2NCwgMjI1LCAxMjAsIDIzMCwgMTY0LCAyMjUsIDEyMSwgMiwgOTcsIDgwLCAKLSAgICAyNTMsIDIxNSwgMjMzLCA1MiwgMjEzLCAxNzUsIDIzMCwgMTYzLCAyMzAsIDE2NCwgMjI1LCAxMjEsIDIyNiwgMjM0LCAyMjgsIAotICAgIDgwLCAyMzAsIDE2NCwgMjI1LCAxMTksIDI1NCwgOTgsIDIsIDI1MiwgMTM3LCAyNTEsIDE4LCAyMTMsIDE3MiwgMjUxLCAxOCwgCi0gICAgMjE2LCAyNTUsIDIyMywgMTc2LCAyMTMsIDE3MSwgMjE1LCA2MCwgOTcsIDI1MywgMjU1LCAyNTAsIDEwLCA5NywgMjIsIAotICAgIDE0MCwgMjA0LCAyNTAsIDQ0LCAyNTMsIDI1NSwgMjUwLCAxMCwgOTcsIDIyLCAxNDAsIDIwNCwgMjUwLCA0NCwgMjU0LCAwLCAKLSAgICAyLCAzNywgMTIzLCAyMjYsIDEyNCwgMjUwLCAxMCwgMjQ2LCAxMTIsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDQ0LCAyNTMsIAotICAgIDI1NSwgMjU0LCA5NiwgMjQ2LCAxMTIsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDQ0LCAyNTMsIDI1NSwgMTIxLCAyNTEsIAotICAgIDE0NiwgODcsIDEyNSwgMjUxLCAxNDYsIDg3LCAyMTksIDksIDIsIDI1MSwgMTIsIDkxLCAyMTksIDgsIDIxOSwgOSwgMiwgCi0gICAgMTIzLCAyMTksIDMzLCAyMTIsIDM1LCAyMTksIDksIDIsIDEzNCwgMjE5LCAzMywgMjEyLCAzNCwgMjUyLCAxMjMsIDI0NSwgCi0gICAgMTgwLCAyMjUsIDMwLCAyMzMsIDQ4LCAyMzEsIDIxNiwgMjQyLCAxOTEsIDIyMiwgMjUwLCAyMzEsIDIxNiwgMjQyLCAxOTEsIAotICAgIDIzMiwgMTU4LCAyLCAyMzUsIDIzMiwgMjI1LCAyMDIsIDI1MCwgOCwgMjMyLCAxNTgsIDIsIDIzNCwgMTQ0LCAyMzQsIDE0NCwgCi0gICAgMjMyLCAxNTcsIDIwNCwgMjMyLCAxNTcsIDI1MiwgNTIsIDI1MiwgNTMsIDIsIDI1MSwgMTIsIDkxLCAyNTEsIDE5OCwgMjMyLCAKLSAgICAyMTAsIDg3LCAyMjMsIDE3NywgMjUxLCA5NCwgMjUyLCAxOTMsIDIsIDE0MCwgODAsIDQ4LCAyNDUsIDE1MSwgMiwgMTQwLCAKLSAgICA4MCwgNDgsIDIyNiwgMjAxLCAyLCAyNDUsIDM5LCAxNjQsIDIsIDQzLCA0NCwgODAsIDQ4LCAyMTksIDQxLCAyLCA5NywgODAsIAotICAgIDQ4LCAyMTYsIDE1LCAyLCAyMTQsIDE1MywgODAsIDQ4LCAyMjgsIDgwLCAxMjMsIDIxNCwgMTg0LCAyNDUsIDE5OSwgODcsIAotICAgIDIzNCwgMTQyLCAyMTYsIDI0OCwgMjM1LCAyMjYsIDE2LCAzMSwgNywgNiwgMjMzLCAxNSwgMjM1LCAyMjYsIDE2LCAzMSwgNywgCi0gICAgNCwgMjMzLCAxNSwgMjM1LCAyMjYsIDE2LCAzMSwgMjI3LCAyMDMsIDIzNSwgMjI2LCAxNiwgMzEsIDIxNywgMTg0LCAyMzUsIAotICAgIDIyNiwgMTYsIDMxLCA3LCAyMzMsIDE1LCAyNDQsIDEwNCwgMjQ1LCAxODAsIDIxNiwgMTAsIDIxMSwgMTk5LCAyNDIsIDI4LCAKLSAgICAyMjcsIDE4NiwgMjIsIDI1MSwgMjA1LCAyNDEsIDczLCAyMjUsIDUzLCAyMzAsIDIzMSwgMjE3LCAwLCAyNDksIDEyMiwgCi0gICAgMjUyLCAxNjcsIDIxOSwgMTI3LCAyMjUsIDEyLCAyMTgsIDE1OSwgMiwgMjMwLCAyMjksIDI0NywgMTI4LCAyMzUsIDEzNywgCi0gICAgMTYsIDMxLCAyNTIsIDY1LCAyMTUsIDIyMSwgMjQ1LCAxNjQsIDg1LCA0MiwgMjUxLCA5NCwgNzEsIDQyLCAyNTEsIDk0LCAKLSAgICAyMzMsIDkxLCAyMjMsIDExNCwgMjUwLCA0MywgMjMzLCA5MSwgMjUxLCAyMTYsIDI1MCwgNDMsIDIzMywgOTEsIDIyNiwgCi0gICAgMTYxLCAyNDgsIDAsIDIzMywgOTEsIDI1MSwgMjE2LCAyNDgsIDAsIDQsIDIyNiwgMTYxLCAyNDgsIDAsIDQsIDI1MSwgMjE2LCAKLSAgICAyNDgsIDAsIDIxNCwgMTYyLCAyMjMsIDExNCwgMjE1LCAyMjYsIDI0NiwgMTEzLCAyMjMsIDExNCwgMjE1LCAyMjYsIDIxNCwgCi0gICAgMTYyLCA0LCAyMjMsIDExNCwgMjE1LCAyMjYsIDI0NiwgMTEzLCA0LCAyMjMsIDExNCwgMjE1LCAyMjYsIDM3LCAyNDksIAotICAgIDEzOSwgMjI0LCAyNTUsIDI0OSwgMTM5LCAyMjUsIDAsIDIsIDI0MiwgMzMsIDUxLCAyNDksIDEzOSwgMjI0LCAyNTUsIDIyOCwgCi0gICAgNTQsIDQzLCAyMjAsIDE1NSwgMiwgMTM0LCAyNDcsIDEyNiwgMjUwLCAxMiwgMjQ0LCAxOTksIDEyMywgMjI2LCAyNDYsIAotICAgIDI1MCwgMTIsIDI0NCwgMTk5LCAxMTMsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMTM0LCAyMjYsIDI0NiwgMjUwLCAKLSAgICAxMiwgMjQ0LCAxOTksIDI0NCwgMTksIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ0LCA4OSwgMjI2LCAyNDYsIAotICAgIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTksIDEyNywgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMjAsIDEyNCwgMjI2LCAKLSAgICAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyNDUsIDIwMSwgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMjgsIDIwNSwgCi0gICAgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDI0OSwgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyNDUsIAotICAgIDE3NiwgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTUsIDc3LCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIAotICAgIDIyNiwgMTk2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA1NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDIxNiwgMTQxLCAyNTAsIAotICAgIDEyLCAyNDQsIDE5OSwgMjQ0LCAxNSwgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NCwgODcsIDI1MCwgMTIsIDI0NCwgMTk5LCAKLSAgICAyMTksIDEyMywgMjUwLCAxMiwgMjQ0LCAxOTksIDIyMCwgMTIzLCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAyMDAsIDI1MCwgCi0gICAgMTIsIDI0NCwgMTk5LCAyMjgsIDIwNCwgMjUwLCAxMiwgMjQ0LCAxOTksIDIxNiwgMjQ3LCAyNTAsIDEyLCAyNDQsIDE5OSwgCi0gICAgMjQ1LCAxNzQsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTUsIDc1LCAyMzAsIDEyMiwgMjQzLCAyMzcsIDIxNiwgMzcsIDIxNiwgCi0gICAgMywgMjE4LCAxNTAsIDY0LCAyMzIsIDI0NSwgMjE5LCAxNzIsIDY0LCAyMzUsIDEzOCwgMjMwLCAxMTEsIDI0MiwgMTMxLCAKLSAgICAyNDQsIDE5OCwgMjQyLCAxMzEsIDI0NCwgMTk5LCAyLCAyMTksIDc2LCAyNDUsIDIxLCAyNDQsIDE5OSwgMiwgMjE3LCAxNSwgCi0gICAgNjQsIDIzNSwgNTksIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyMDQsIDIzMCwgMTE1LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgCi0gICAgMjA0LCAyMzAsIDExNiwgMjIsIDIxOSwgNzYsIDI0NSwgMjEsIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyMDQsIDIzMCwgMTE2LCAKLSAgICAyMiwgMjQ5LCAyMzgsIDIxNywgMjQ4LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNiwgMjIsIDIxNiwgCi0gICAgMTA1LCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjQyLCAzMiwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDI0MCwgCi0gICAgMjU0LCAyMTEsIDIzMywgMjQ0LCAxOTgsIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyMTksIDc2LCAyNDUsIDIxLCAyNDQsIAotICAgIDE5OSwgMjIxLCAyMTksIDI0OCwgNzAsIDI0NCwgNDEsIDIyMywgOTEsIDI0NCwgMTk4LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgCi0gICAgMjQxLCAyMzMsIDI0NSwgMjEsIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyMTgsIDM1LCAyMTksIDc1LCAyNDQsIDE5OCwgMjI5LCAKLSAgICA5MiwgMjQ0LCAxOTgsIDI0NSwgMzEsIDI0NCwgMTk4LCAyMTQsIDE4OCwgMjQ0LCAxOTgsIDI0NCwgMTk5LCAyLCAyNDksIAotICAgIDIzOCwgMjE3LCAyNDgsIDIyNSwgMTk1LCAyNDQsIDE5OCwgMjQ5LCAyMDksIDI0NCwgMTk4LCAyNDksIDIxMCwgMjQ0LCAKLSAgICAxOTgsIDIzNCwgNjgsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMjE2LCAxMzgsIDExNiwgMjM0LCA2OSwgMjM0LCA2OCwgMjQ0LCAKLSAgICAxOTksIDIsIDIxOSwgNzYsIDI0NSwgMjEsIDIzNCwgNjgsIDI0NCwgMTk5LCAyLCAyNTAsIDgsIDI0NSwgMjEsIDI0NCwgCi0gICAgMTk5LCAyLCAyMTgsIDg5LCAyMTYsIDIwLCAyNDQsIDE5OSwgMiwgMjE4LCA4OSwgMjE2LCAyMSwgMjIsIDIxMSwgMjMzLCAKLSAgICAyNDUsIDIzLCAyNDQsIDE5OSwgMiwgMjE4LCA4OSwgMjE2LCAyMSwgMjIsIDIxNiwgMTA1LCAyNDUsIDIxLCAyNDcsIDIwMCwgCi0gICAgMjQ0LCAxOTgsIDIxMSwgMjA0LCAyNDQsIDE5OCwgMjU0LCAxMTYsIDI0NCwgMTk4LCAyMjQsIDIzMCwgMjQ0LCAxOTgsIAotICAgIDI0OSwgMTI0LCAyNDQsIDE5OCwgMjI1LCAxNzMsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjMyLCAxMzIsIDY0LCAyMTUsIAotICAgIDIwNSwgMjQ3LCAyMDAsIDI1MSwgOTYsIDIyMywgOTEsIDI0NCwgMTk4LCAyNDMsIDI0NywgMjQ0LCAxOTksIDIsIDIwNCwgCi0gICAgMjMwLCAxMTUsIDI1NCwgMTE0LCAyNDQsIDE5OCwgMjQ0LCAxNjAsIDI0NCwgMTk4LCAyMTIsIDIwLCAyNDQsIDE5OCwgMjE5LCAKLSAgICA5MywgMjQ0LCAxOTgsIDIxNiwgNzIsIDI0NCwgMTk4LCAyNDIsIDEzMiwgMjQ0LCAxOTgsIDIzMiwgMTIwLCAyNDksIDEyNCwgCi0gICAgMjQ0LCAxOTgsIDI0NCwgMTk5LCAyLCAyMDQsIDIzMCwgMTE1LCAyNDAsIDIxMCwgMjQ0LCAxOTgsIDI0NCwgMTk5LCAyLCAKLSAgICAyMDQsIDIzMCwgMTE2LCAyMiwgMjQ5LCAyMzgsIDIxNywgMjQ4LCAyNDQsIDE5OSwgMjIxLCAxOTIsIDIzNiwgNywgMjQ0LCAKLSAgICAxNjEsIDI1MywgMjIxLCAyNDQsIDE5OCwgMjQ0LCA1NywgMjQ0LCAxOTgsIDIxOSwgOTQsIDI0NCwgMTk4LCAyNDcsIDE3MywgCi0gICAgMjQ0LCAxOTgsIDI0NCwgMTk5LCAyMTEsIDIzMCwgMjMwLCAxMTUsIDI0NCwgMTk5LCAyLCAyMzEsIDg5LCAyMzEsIDE0OSwgCi0gICAgMjQyLCAxMzEsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAKLSAgICAyMTcsIDE1LCA2NCwgMjM1LCA1OSwgMjE5LCA3NiwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyMDQsIDIzMCwgMTE1LCAyMTksIAotICAgIDc2LCAyNTAsIDIzMywgMjQ0LCAxOTksIDIsIDI0MSwgMjMzLCAyNDUsIDIxLCAyNTAsIDIzMywgMjQ0LCAxOTksIDIsIDIxMSwgCi0gICAgMTk2LCAyMTksIDc3LCAyMzQsIDY4LCAyNTAsIDIzMywgMjQ0LCAxOTksIDIsIDI1MCwgOCwgMjQ1LCAyMSwgMjI0LCAyMzAsIAotICAgIDI1MCwgMjMzLCAyNDQsIDE5OCwgMjQ5LCAxMjQsIDI1MCwgMjMzLCAyNDQsIDE5OCwgMjEyLCAyMCwgMjUwLCAyMzMsIDI0NCwgCi0gICAgMTk4LCAyNDQsIDE5OSwgMiwgMjI4LCA4MCwgMjQyLCAxNzAsIDI0MywgNDEsIDI0NCwgMTk5LCAyLCAyMjYsIDIxOSwgMjQzLCAKLSAgICA0MSwgMjI1LCAxNzEsIDI1MSwgMTc2LCAyNDgsIDgzLCAyMjEsIDE3MSwgMjMwLCAxNTAsIDI0MSwgMjM2LCAyMzAsIDE1MCwgCi0gICAgMjE5LCAxMCwgMjMwLCAxNTAsIDI0MiwgMTIsIDIyNSwgMTcxLCAyMjMsIDE1OSwgMTIzLCAyNDIsIDIyLCAyMjUsIDE3MSwgCi0gICAgMjIzLCAxNTksIDI1MSwgMTg2LCAyNDIsIDE4LCAyMzYsIDcsIDI1MCwgMTg3LCAyMjUsIDE3MSwgMjQzLCAyNDYsIDIyNSwgCi0gICAgMTcxLCAyLCAyMjQsIDIzMCwgMjQ0LCAxOTgsIDIyNSwgMTcxLCAyLCAyNDQsIDQ5LCAyNDIsIDE3LCAyMjIsIDIwNSwgMjQxLCAKLSAgICAyMjEsIDIxOCwgMTQ1LCAyMzIsIDE1NSwgMjIzLCAxNjUsIDI1MCwgMjUyLCAyNDEsIDE2OSwgMjE1LCAyNDksIDI0MSwgCi0gICAgMTY5LCAyMTUsIDI1MCwgMiwgMjUxLCAxMjIsIDIyOCwgNTgsIDIxNSwgMjQ5LCAyMzEsIDM3LCAxOTMsIDIyMywgMTY2LCAKLSAgICAyMTgsIDE1MSwgMjE1LCAyNDcsIDIxNSwgMjQ4LCAyNTAsIDI1MiwgMjUxLCAxMDAsIDIyNiwgMTk4LCAyNTEsIDEwMCwgCi0gICAgMjE1LCAyMDIsIDI1MSwgMTAxLCAyMTgsIDEzMSwgMjMwLCAxOTIsIDI1NCwgMTM4LCAyNDQsIDEwNSwgMjQ1LCAxNDUsIAotICAgIDIyNSwgMiwgMjUwLCAyNTIsIDIyNiwgMTk4LCAyMjUsIDIsIDI1MCwgMjUyLCAyMTcsIDMzLCAyMjYsIDE5OCwgMjE3LCAzMywgCi0gICAgMjUzLCAxODgsIDIyNiwgMTk4LCAyNTMsIDE4OCwgMjIzLCAxMjEsIDIxMywgMjQ3LCAyNDgsIDY2LCAyMTUsIDE5MywgMjUzLCAKLSAgICAyNTAsIDIzMiwgMTIzLCAyMTUsIDI1NSwgMjMwLCAxNDQsIDIzMCwgMTIxLCAyMjMsIDE2NCwgMjE4LCA3LCAyMjMsIDE2NCwgCi0gICAgMjMwLCAxMjEsIDI1MSwgMzYsIDI1NCwgMjM4LCAyMTUsIDI0NiwgMjIwLCAxOCwgMjIyLCAxODQsIDIxOSwgMywgMjAzLCAKLSAgICAyMTUsIDI1MywgMjMyLCAyMzYsIDY3LCAyMTUsIDI1MywgMjMyLCAyMzYsIDI0OSwgMTk4LCA1MCwgMjI1LCAyLCAyNTAsIAotICAgIDIzNywgMjIzLCA0NywgMjMyLCAyMzYsIDIxNSwgMjIzLCAyNDQsIDgyLCAyMjYsIDIwMSwgMjI0LCAyNDEsIDI0NywgMTMxLCAKLSAgICAyMjgsIDgwLCAyNDUsIDEzMywgNTAsIDIxOSwgNzQsIDg3LCAyMjgsIDgwLCAyMTksIDc0LCA4NywgMjI0LCAxMjUsIDIzMiwgCi0gICAgMTk5LCAyMzYsIDcsIDIzNSwgMTYzLCAyMjUsIDQ0LCA4NywgMjQ3LCAxNTQsIDIyOCwgNTcsIDIzMiwgMTk5LCA4NywgMjI0LCAKLSAgICAyMzUsIDIxMiwgNDEsIDg3LCAyMjgsIDcxLCAyMTIsIDQxLCA4NywgMjUyLCAxMCwgMjI4LCA4MCwgMjUyLCA5LCAyNTIsIDgsIAotICAgIDIzMCwgMTIxLCAyNTIsIDgsIDIyNSwgMjE2LCAyMjgsIDgwLCAyMjUsIDIxNSwgMjUwLCAxMDgsIDI0OSwgMTMyLCAyMzEsIAotICAgIDYxLCA4NywgMjExLCAyMTgsIDg3LCAyMjMsIDYyLCAyNTIsIDE5NSwgODcsIDIxNiwgMzgsIDIxMiwgNDEsIDI1MCwgNSwgCi0gICAgMjE5LCAyMzYsIDI1MiwgMTI2LCAyNTIsIDEyNCwgMjI1LCAyNDYsIDI0OSwgMTg1LCAyNDksIDk0LCAyNTIsIDE3NywgMjUwLCAKLSAgICAzMCwgNDMsIDIzMiwgOTUsIDEwOCwgMTYsIDMxLCAyMjQsIDYsIDEwOCwgMTYsIDMxLCAyNTQsIDIwMSwgMTA4LCAxNiwgMzEsIAotICAgIDI0NCwgMTA0LCAxMDgsIDE2LCAzMSwgMjQ1LCAyMzEsIDEwOCwgMTYsIDMxLCAyMTIsIDQwLCAxMDgsIDE2LCAzMSwgMjU0LCAKLSAgICA1MSwgMTA4LCAxNiwgMzEsIDI1NCwgNTIsIDIyMywgMTA4LCAxMDgsIDE2LCAzMSwgMjU0LCA1MiwgMjIzLCAxMDcsIDEwOCwgCi0gICAgMTYsIDMxLCAyNTQsIDUyLCAyMTMsIDE0MywgMTA4LCAxNiwgMzEsIDI1NCwgNTIsIDIxMywgMTQyLCAxMDgsIDE2LCAzMSwgCi0gICAgMjEzLCAxNTcsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NiwgMTA4LCAxNiwgMzEsIDIxMywgMTU1LCAxMDgsIDE2LCAzMSwgMjE4LCAKLSAgICA0NSwgMTA4LCAxNiwgMzEsIDIyNSwgMTI4LCAyMTgsIDQ1LCAxMDgsIDE2LCAzMSwgODUsIDIxOCwgNDUsIDEwOCwgMTYsIAotICAgIDMxLCAyMzEsIDYwLCAyMTgsIDcyLCAxMDgsIDE2LCAzMSwgMjMxLCA2MCwgMjE4LCA3MSwgMTA4LCAxNiwgMzEsIDIzMSwgCi0gICAgNjAsIDIxOCwgNzAsIDEwOCwgMTYsIDMxLCAyNTAsIDQ2LCAxMDgsIDE2LCAzMSwgMjIyLCAzLCAxMDgsIDE2LCAzMSwgMjI4LCAKLSAgICAxOTMsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MSwgMTA4LCAxNiwgMzEsIDIxMywgMTQwLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDYsIAotICAgIDIyMiwgMywgMTA4LCAxNiwgMzEsIDIyMiwgMjA2LCAyMjIsIDIsIDEwOCwgMTYsIDMxLCAyNDIsIDE3MywgMTA4LCAxNiwgCi0gICAgMzEsIDIxOSwgMTY4LCAxMDgsIDE2LCAzMSwgMjM1LCAxODQsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjM1LCAxODQsIAotICAgIDIyNiwgMTU2LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNDIsIDY0LCAyMzUsIDE4MywgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgCi0gICAgMjM1LCAxODMsIDEwOCwgMTYsIDMxLCAyNDksIDE3NiwgMjI2LCAxNTcsIDEwOCwgMTYsIDMxLCAyMzUsIDE4MiwgMjI2LCAKLSAgICAxNTcsIDEwOCwgMTYsIDMxLCAyMTgsIDczLCA2NCwgMjQ5LCAxNzUsIDEwOCwgMTYsIDMxLCAyNDksIDE0MiwgNjQsIDI0OSwgCi0gICAgMTc1LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNDIsIDY0LCAyNDksIDE3NCwgMTA4LCAxNiwgMzEsIDI0OSwgMTc2LCAyNTQsIDkxLCAKLSAgICAxMDgsIDE2LCAzMSwgMjIyLCA0LCA2NCwgMjQ5LCAxNzYsIDI1NCwgOTEsIDEwOCwgMTYsIDMxLCAyMTgsIDczLCA2NCwgCi0gICAgMjIyLCA0LCA2NCwgMjQ5LCAxNzUsIDEwOCwgMTYsIDMxLCAyMTMsIDI0MywgMTA4LCAxNiwgMzEsIDIxNiwgODUsIDIyNiwgCi0gICAgMTU3LCAxMDgsIDE2LCAzMSwgMjMzLCA2MywgMjI2LCAxNTcsIDEwOCwgMTYsIDMxLCAyNTQsIDkwLCAyMjYsIDE1NywgMTA4LCAKLSAgICAxNiwgMzEsIDIxOCwgNzMsIDY0LCAyNTQsIDg5LCAxMDgsIDE2LCAzMSwgMjIyLCA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgCi0gICAgMzEsIDIxOCwgNzMsIDY0LCAyMjIsIDQsIDY0LCAyNTQsIDg5LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTgsIDY0LCAyNTQsIDg5LCAKLSAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDQsIDY0LCAyNTQsIDg5LCAxMDgsIDE2LCAzMSwgMjIzLCAxMDQsIDY0LCAyNTQsIDg4LCAKLSAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDMsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMiwgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCAxMDgsIAotICAgIDE2LCAzMSwgMjIzLCAxMDAsIDEwOCwgMTYsIDMxLCAyNTQsIDE2NiwgMTA4LCAxNiwgMzEsIDI1NCwgMTY1LCAxMDgsIDE2LCAKLSAgICAzMSwgMjMxLCAxNjgsIDEwOCwgMTYsIDMxLCAyMjIsIDksIDEwOCwgMTYsIDMxLCAyNTMsIDI1NCwgMTA4LCAxNiwgMzEsIAotICAgIDIyMywgMTI4LCAxMDgsIDE2LCAzMSwgMjIzLCAxMjcsIDEwOCwgMTYsIDMxLCAyNTMsIDE5MSwgMTA4LCAxNiwgMzEsIDI1MSwgCi0gICAgMjM3LCAyMjYsIDE1NywgMTA4LCAxNiwgMzEsIDIxNywgNTAsIDEwOCwgMTYsIDMxLCAyMTcsIDQ5LCAxMDgsIDE2LCAzMSwgCi0gICAgMjI0LCAxMSwgMjMyLCAyMjgsIDEwOCwgMTYsIDMxLCAyNTEsIDE5MSwgMTA4LCAxNiwgMzEsIDI1MSwgMTkwLCAxMDgsIDE2LCAKLSAgICAzMSwgMjUxLCAxODksIDEwOCwgMTYsIDMxLCAyNTQsIDE0NiwgMTA4LCAxNiwgMzEsIDIyNiwgMjIyLCAxMDgsIDE2LCAzMSwgCi0gICAgMjE4LCAyNTAsIDEwOCwgMTYsIDMxLCAyMTYsIDgzLCAxMDgsIDE2LCAzMSwgMjQyLCAxMDMsIDEwOCwgMTYsIDMxLCAyMTIsIAotICAgIDI4LCAxMDgsIDE2LCAzMSwgMjI0LCAyMjksIDEwOCwgMTYsIDMxLCAyNTEsIDIyLCAxMDgsIDE2LCAzMSwgMjE1LCA4NiwgCi0gICAgMTA4LCAxNiwgMzEsIDI1MCwgMjU0LCAyMzAsIDEyNywgMTA4LCAxNiwgMzEsIDIyMSwgMjA0LCA2NCwgMjM1LCA2MSwgMTA4LCAKLSAgICAxNiwgMzEsIDI1MSwgMzMsIDEwOCwgMTYsIDMxLCAyMTUsIDIyMCwgMTA4LCAxNiwgMzEsIDIxOCwgMTU2LCAyMTUsIDIyMCwgCi0gICAgMTA4LCAxNiwgMzEsIDIzMiwgMTU0LCAxMDgsIDE2LCAzMSwgMjE5LCA1OCwgMTA4LCAxNiwgMzEsIDIxNCwgMTQyLCAxMDgsIAotICAgIDE2LCAzMSwgMjQwLCAyNTMsIDI0NiwgNzIsIDEwOCwgMTYsIDMxLCAyNTMsIDIzNSwgMTA4LCAxNiwgMzEsIDIyNCwgMjM3LCAKLSAgICAyNTMsIDIzNSwgMTA4LCAxNiwgMzEsIDI1MSwgMTUwLCAxMDgsIDE2LCAzMSwgMjI0LCAyMjgsIDI1MSwgMTUwLCAxMDgsIAotICAgIDE2LCAzMSwgMjU0LCAxNDMsIDEwOCwgMTYsIDMxLCAyMTgsIDExOSwgMjE4LCAyNywgMjE4LCAxMTgsIDEwOCwgMTYsIDMxLCAKLSAgICAyMTgsIDExOSwgMjE4LCAyNywgMjE4LCAxMTcsIDEwOCwgMTYsIDMxLCAyMTgsIDY5LCAxMDgsIDE2LCAzMSwgMjI0LCAyMDMsIAotICAgIDEwOCwgMTYsIDMxLCAyNDcsIDE4OSwgMTA4LCAxNiwgMzEsIDI0NywgMTkxLCAxMDgsIDE2LCAzMSwgMjQ3LCAxOTAsIDEwOCwgCi0gICAgMTYsIDMxLCAyMjQsIDEzNCwgMTA4LCAxNiwgMzEsIDIyNCwgMTIzLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzAsIDEwOCwgMTYsIAotICAgIDMxLCAyNDksIDEyOSwgMTA4LCAxNiwgMzEsIDI0OSwgMTI4LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMjcsIDEwOCwgMTYsIDMxLCAKLSAgICAyNDksIDEyNiwgMTA4LCAxNiwgMzEsIDI1NCwgMTc4LCAxMDgsIDE2LCAzMSwgMjUyLCAxMjcsIDY0LCAyMzEsIDE1NCwgCi0gICAgMTA4LCAxNiwgMzEsIDI1MiwgMTI3LCA2NCwgMjE0LCAxNywgMTA4LCAxNiwgMzEsIDIyMywgNjAsIDEwOCwgMTYsIDMxLCAKLSAgICAyNDAsIDI0NSwgMTA4LCAxNiwgMzEsIDIyOCwgMjE3LCAxMDgsIDE2LCAzMSwgMjQ4LCAxNTMsIDEwOCwgMTYsIDMxLCAyMzAsIAotICAgIDEzOSwgMTA4LCAxNiwgMzEsIDE2MywgMjQ2LCAxMDIsIDEwOCwgMTYsIDMxLCAxNjMsIDIyNiwgMTM2LCAxMCwgMTQsIDI0MCwgCi0gICAgMTA5LCAxMCwgMTQsIDI0MCwgMTA4LCAxMCwgMTQsIDI0MCwgMTA3LCAxMCwgMTQsIDI0MCwgMTA2LCAxMCwgMTQsIDI0MCwgCi0gICAgMTA1LCAxMCwgMTQsIDI0MCwgMTA0LCAxMCwgMTQsIDI0MCwgMTAzLCAxMCwgMTQsIDI0MCwgMTAyLCAxMCwgMTQsIDI0MCwgCi0gICAgMTAxLCAxMCwgMTQsIDI0MCwgMTAwLCAxMCwgMTQsIDI0MCwgOTksIDEwLCAxNCwgMjQwLCA5OCwgMTAsIDE0LCAyNDAsIDk3LCAKLSAgICAxMCwgMTQsIDI0MCwgOTYsIDEwLCAxNCwgMjQwLCA5NSwgMTAsIDE0LCAyNDAsIDk0LCAxMCwgMTQsIDI0MCwgOTMsIDEwLCAKLSAgICAxNCwgMjQwLCA5MiwgMTAsIDE0LCAyNDAsIDkxLCAxMCwgMTQsIDI0MCwgOTAsIDEwLCAxNCwgMjQwLCA4OSwgMTAsIDE0LCAKLSAgICAyNDAsIDg4LCAxMCwgMTQsIDI0MCwgODcsIDEwLCAxNCwgMjQwLCA4NiwgMTAsIDE0LCAyNDAsIDg1LCAxMCwgMTQsIDI0MCwgCi0gICAgODQsIDEwLCAxNCwgMjQwLCA4MywgMTAsIDE0LCAyNDAsIDgyLCAxMCwgMTQsIDI0MCwgODEsIDEwLCAxNCwgMjQwLCA4MCwgCi0gICAgMTAsIDE0LCAyNDAsIDc5LCAxMCwgMTQsIDI0MCwgNzgsIDEwLCAxNCwgMjQwLCA3NywgMTAsIDE0LCAyNDAsIDc2LCAxMCwgCi0gICAgMTQsIDI0MCwgNzUsIDEwLCAxNCwgMjQwLCA3NCwgMTAsIDE0LCAyNDAsIDczLCAxMCwgMTQsIDI0MCwgNzIsIDEwLCAxNCwgCi0gICAgMjQwLCA3MSwgMTAsIDE0LCAyNDAsIDcwLCAxMCwgMTQsIDI0MCwgNjksIDEwLCAxNCwgMjQwLCA2OCwgMTAsIDE0LCAyNDAsIAotICAgIDY3LCAxMCwgMTQsIDI0MCwgNjYsIDEwLCAxNCwgMjQwLCA2NSwgMTAsIDE0LCAyNDAsIDY0LCAxMCwgMTQsIDI0MCwgNjMsIAotICAgIDEwLCAxNCwgMjQwLCA2MiwgMTAsIDE0LCAyNDAsIDYxLCAxMCwgMTQsIDI0MCwgNjAsIDEwLCAxNCwgMjQwLCA1OSwgMTAsIAotICAgIDE0LCAyNDAsIDU4LCAxMCwgMTQsIDI0MCwgNTcsIDEwLCAxNCwgMjQwLCA1NiwgMTAsIDE0LCAyNDAsIDU1LCAxMCwgMTQsIAotICAgIDI0MCwgNTQsIDEwLCAxNCwgMjQwLCA1MywgMTAsIDE0LCAyNDAsIDUyLCAxMCwgMTQsIDI0MCwgNTEsIDEwLCAxNCwgMjQwLCAKLSAgICA1MCwgMTAsIDE0LCAyNDAsIDQ5LCAxMCwgMTQsIDI0MCwgNDgsIDEwLCAxNCwgMjQwLCA0NywgMTAsIDE0LCAyNDAsIDQ2LCAKLSAgICAxMCwgMTQsIDI0MCwgNDUsIDEwLCAxNCwgMjQwLCA0NCwgMTAsIDE0LCAyNDAsIDQzLCAxMCwgMTQsIDI0MCwgNDIsIDEwLCAKLSAgICAxNCwgMjQwLCA0MSwgMTAsIDE0LCAyNDAsIDQwLCAxMCwgMTQsIDI0MCwgMzksIDEwLCAxNCwgMjQwLCAzOCwgMTAsIDE0LCAKLSAgICAyNDAsIDM3LCAxMCwgMTQsIDI0MCwgMzYsIDEwLCAxNCwgMjQwLCAzNSwgMTAsIDE0LCAyNDAsIDM0LCAxMCwgMTQsIDI0MCwgCi0gICAgMzMsIDEwLCAxNCwgMjQwLCAzMiwgMTAsIDE0LCAyNDAsIDMxLCAxMCwgMTQsIDI0MCwgMzAsIDEwLCAxNCwgMjQwLCAyOSwgCi0gICAgMTAsIDE0LCAyNDAsIDI4LCAxMCwgMTQsIDI0MCwgMjcsIDEwLCAxNCwgMjQwLCAyNiwgMTAsIDE0LCAyNDAsIDI1LCAxMCwgCi0gICAgMTQsIDI0MCwgMjQsIDEwLCAxNCwgMjQwLCAyMywgMTAsIDE0LCAyNDAsIDIyLCAxMCwgMTQsIDI0MCwgMjEsIDEwLCAxNCwgCi0gICAgMjQwLCAyMCwgMTAsIDE0LCAyNDAsIDE5LCAxMCwgMTQsIDI0MCwgMTgsIDEwLCAxNCwgMjQwLCAxNywgMTAsIDE0LCAyNDAsIAotICAgIDE2LCAxMCwgMTQsIDI0MCwgMTUsIDEwLCAxNCwgMjQwLCAxNCwgMTAsIDE0LCAyNDAsIDEzLCAxMCwgMTQsIDI0MCwgMTIsIAotICAgIDEwLCAxNCwgMjQwLCAxMSwgMTAsIDE0LCAyNDAsIDEwLCAxMCwgMTQsIDI0MCwgOSwgMTAsIDE0LCAyNDAsIDgsIDEwLCAxNCwgCi0gICAgMjQwLCA3LCAxMCwgMTQsIDI0MCwgNiwgMTAsIDE0LCAyNDAsIDUsIDEwLCAxNCwgMjQwLCA0LCAxMCwgMTQsIDI0MCwgMywgCi0gICAgMTAsIDE0LCAyNDAsIDIsIDEwLCAxNCwgMjQwLCAxLCAxMCwgMTQsIDI0MCwgMCwgMTAsIDE0LCAyMzksIDI1NSwgMTAsIDE0LCAKLSAgICAyMzksIDI1NCwgMTAsIDE0LCAyMzksIDI1MywgMTAsIDE0LCAyMzksIDI1MiwgMTAsIDE0LCAyMzksIDI1MSwgMTAsIDE0LCAKLSAgICAyMzksIDI1MCwgMTAsIDE0LCAyMzksIDI0OSwgMTAsIDE0LCAyMzksIDI0OCwgMTAsIDE0LCAyMzksIDI0NywgMTAsIDE0LCAKLSAgICAyMzksIDI0NiwgMTAsIDE0LCAyMzksIDI0NSwgMTAsIDE0LCAyMzksIDI0NCwgMTAsIDE0LCAyMzksIDI0MywgMTAsIDE0LCAKLSAgICAyMzksIDI0MiwgMTAsIDE0LCAyMzksIDI0MSwgMTAsIDE0LCAyMzksIDI0MCwgMTAsIDE0LCAyMzksIDIzOSwgMTAsIDE0LCAKLSAgICAyMzksIDIzOCwgMTAsIDE0LCAyMzksIDIzNywgMTAsIDE0LCAyMzksIDIzNiwgMTAsIDE0LCAyMzksIDIzNSwgMTAsIDE0LCAKLSAgICAyMzksIDIzNCwgMTAsIDE0LCAyMzksIDIzMywgMTAsIDE0LCAyMzksIDIzMiwgMTAsIDE0LCAyMzksIDIzMSwgMTAsIDE0LCAKLSAgICAyMzksIDIzMCwgMTAsIDE0LCAyMzksIDIyOSwgMTAsIDE0LCAyMzksIDIyOCwgMTAsIDE0LCAyMzksIDIyNywgMTAsIDE0LCAKLSAgICAyMzksIDIyNiwgMTAsIDE0LCAyMzksIDIyNSwgMTAsIDE0LCAyMzksIDIyNCwgMTAsIDE0LCAyMzksIDIyMywgMTAsIDE0LCAKLSAgICAyMzksIDIyMiwgMTAsIDE0LCAyMzksIDIyMSwgMTAsIDE0LCAyMzksIDIyMCwgMTAsIDE0LCAyMzksIDIxOSwgMTAsIDE0LCAKLSAgICAyMzksIDIxOCwgMTAsIDE0LCAyMzksIDIxNywgMTAsIDE0LCAyMzksIDIxNiwgMTAsIDE0LCAyMzksIDIxNSwgMTAsIDE0LCAKLSAgICAyMzksIDIxNCwgMTAsIDE0LCAyMzksIDIxMywgMTAsIDE0LCAyMzksIDIxMiwgMTAsIDE0LCAyMzksIDIxMSwgMTAsIDE0LCAKLSAgICAyMzksIDIxMCwgMTAsIDE0LCAyMzksIDIwOSwgMTAsIDE0LCAyMzksIDIwOCwgMTAsIDE0LCAyMzksIDIwNywgMTAsIDE0LCAKLSAgICAyMzksIDIwNiwgMTAsIDE0LCAyMzksIDIwNSwgMTAsIDE0LCAyMzksIDIwNCwgMTAsIDE0LCAyMzksIDIwMywgMTAsIDE0LCAKLSAgICAyMzksIDIwMiwgMTAsIDE0LCAyMzksIDIwMSwgMTAsIDE0LCAyMzksIDIwMCwgMTAsIDE0LCAyMzksIDE5OSwgMTAsIDE0LCAKLSAgICAyMzksIDE5OCwgMTAsIDE0LCAyMzksIDE5NywgMTAsIDE0LCAyMzksIDE5NiwgMTAsIDE0LCAyMzksIDE5NSwgMTAsIDE0LCAKLSAgICAyMzksIDE5NCwgMTAsIDE0LCAyMzksIDE5MywgMTAsIDE0LCAyMzksIDE5MiwgMTAsIDE0LCAyMzksIDE5MSwgMTAsIDE0LCAKLSAgICAyMzksIDE5MCwgMTAsIDE0LCAyMzksIDE4OSwgMTAsIDE0LCAyMzksIDE4OCwgMTAsIDE0LCAyMzksIDE4NywgMTAsIDE0LCAKLSAgICAyMzksIDE4NiwgMTAsIDE0LCAyMzksIDE4NSwgMTAsIDE0LCAyMzksIDE4NCwgMTAsIDE0LCAyMzksIDE4MywgMTAsIDE0LCAKLSAgICAyMzksIDE4MiwgMTAsIDE0LCAyMzksIDE4MSwgMTAsIDE0LCAyMzksIDE4MCwgMTAsIDE0LCAyMzksIDE3OSwgMTAsIDE0LCAKLSAgICAyMzksIDE3OCwgMTAsIDE0LCAyMzksIDE3NywgMTAsIDE0LCAyMzksIDE3NiwgMTAsIDE0LCAyMzksIDE3NSwgMTAsIDE0LCAKLSAgICAyMzksIDE3NCwgMTAsIDE0LCAyMzksIDE3MywgMTAsIDE0LCAyMzksIDE3MiwgMTAsIDE0LCAyMzksIDE3MSwgMTAsIDE0LCAKLSAgICAyMzksIDE3MCwgMTAsIDE0LCAyMzksIDE2OSwgMTAsIDE0LCAyMzksIDE2OCwgMTAsIDE0LCAyMzksIDE2NywgMTAsIDE0LCAKLSAgICAyMzksIDE2NiwgMTAsIDE0LCAyMzksIDE2NSwgMTAsIDE0LCAyMzksIDE2NCwgMTAsIDE0LCAyMzksIDE2MywgMTAsIDE0LCAKLSAgICAyMzksIDE2MiwgMTAsIDE0LCAyMzksIDE2MSwgMTAsIDE0LCAyMzksIDE2MCwgMTAsIDE0LCAyMzksIDE1OSwgMTAsIDE0LCAKLSAgICAyMzksIDE1OCwgMTAsIDE0LCAyMzksIDE1NywgMTAsIDE0LCAyMzksIDE1NiwgMTAsIDE0LCAyMzksIDE1NSwgMTAsIDE0LCAKLSAgICAyMzksIDE1NCwgMTAsIDE0LCAyMzksIDE1MywgMTAsIDE0LCAyMzksIDE1MiwgMTAsIDE0LCAyMzksIDE1MSwgMTAsIDE0LCAKLSAgICAyMzksIDE1MCwgMTAsIDE0LCAyMzksIDE0OSwgMTAsIDE0LCAyMzksIDE0OCwgMTAsIDE0LCAyMzksIDE0NywgMTAsIDE0LCAKLSAgICAyMzksIDE0NiwgMTAsIDE0LCAyMzksIDE0NSwgMTAsIDE0LCAyMzksIDE0NCwgMTAsIDE0LCAyMzksIDE0MywgMTAsIDE0LCAKLSAgICAyMzksIDE0MiwgMTAsIDE0LCAyMzksIDE0MSwgMTAsIDE0LCAyMzksIDE0MCwgMTAsIDE0LCAyMzksIDEzOSwgMTAsIDE0LCAKLSAgICAyMzksIDEzOCwgMTAsIDE0LCAyMzksIDEzNywgMTAsIDE0LCAyMzksIDEzNiwgMTAsIDE0LCAyMzksIDEzNSwgMTAsIDE0LCAKLSAgICAyMzksIDEzNCwgMTAsIDE0LCAyMzksIDEzMywgMTAsIDE0LCAyMzksIDEzMiwgMTAsIDE0LCAyMzksIDEzMSwgMTAsIDE0LCAKLSAgICAyMzksIDEzMCwgMTAsIDE0LCAyMzksIDEyOSwgMTAsIDE0LCAyMzksIDEyOCwgMTAsIDE0LCAyMzksIDEyNywgMTAsIDE0LCAKLSAgICAyMzksIDEyNiwgMTAsIDE0LCAyMzksIDEyNSwgMTAsIDE0LCAyMzksIDEyNCwgMTAsIDE0LCAyMzksIDEyMywgMTAsIDE0LCAKLSAgICAyMzksIDEyMiwgMTAsIDE0LCAyMzksIDEyMSwgMTAsIDE0LCAyMzksIDEyMCwgMTAsIDE0LCAyMzksIDExOSwgMTAsIDE0LCAKLSAgICAyMzksIDExOCwgMTAsIDE0LCAyMzksIDExNywgMTAsIDE0LCAyMzksIDExNiwgMTAsIDE0LCAyMzksIDExNSwgMTAsIDE0LCAKLSAgICAyMzksIDExNCwgMTAsIDE0LCAyMzksIDExMywgMTAsIDE0LCAyMzksIDExMiwgMTAsIDE0LCAyMzksIDExMSwgMTAsIDE0LCAKLSAgICAyMzksIDExMCwgMTAsIDE0LCAyMzksIDEwOSwgMTAsIDE0LCAyMzksIDEwOCwgMTAsIDE0LCAyMzksIDEwNywgMTAsIDE0LCAKLSAgICAyMzksIDEwNiwgMTAsIDE0LCAyMzksIDEwNSwgMTAsIDE0LCAyMzksIDEwNCwgMTAsIDE0LCAyMzksIDEwMywgMTAsIDE0LCAKLSAgICAyMzksIDEwMiwgMTAsIDE0LCAyMzksIDEwMSwgMTAsIDE0LCAyMzksIDEwMCwgMTAsIDE0LCAyMzksIDk5LCAxMCwgMTQsIAotICAgIDIzOSwgOTgsIDEwLCAxNCwgMjM5LCA5NywgMTAsIDE0LCAyMzksIDk2LCAxMCwgMTQsIDIzOSwgOTUsIDEwLCAxNCwgMjM5LCAKLSAgICA5NCwgMTAsIDE0LCAyMzksIDkzLCAxMCwgMTQsIDIzOSwgOTIsIDEwLCAxNCwgMjM5LCA5MSwgMTAsIDE0LCAyMzksIDkwLCAKLSAgICAxMCwgMTQsIDIzOSwgODksIDEwLCAxNCwgMjM5LCA4OCwgMTAsIDE0LCAyMzksIDg3LCAxMCwgMTQsIDIzOSwgODYsIDEwLCAKLSAgICAxNCwgMjM5LCA4NSwgMTAsIDE0LCAyMzksIDg0LCAxMCwgMTQsIDIzOSwgODMsIDEwLCAxNCwgMjM5LCA4MiwgMTAsIDE0LCAKLSAgICAyMzksIDgxLCAxMCwgMTQsIDIzOSwgODAsIDEwLCAxNCwgMjM5LCA3OSwgMTAsIDE0LCAyMzksIDc4LCAxMCwgMTQsIDIzOSwgCi0gICAgNzcsIDEwLCAxNCwgMjM5LCA3NiwgMTAsIDE0LCAyMzksIDc1LCAxMCwgMTQsIDIzOSwgNzQsIDEwLCAxNCwgMjM5LCA3MywgCi0gICAgMTAsIDE0LCAyMzksIDcyLCAxMCwgMTQsIDIzOSwgNzEsIDEwLCAxNCwgMjM5LCA3MCwgMTAsIDE0LCAyMzksIDY5LCAxMCwgCi0gICAgMTQsIDIzOSwgNjgsIDEwLCAxNCwgMjM5LCA2NywgMTAsIDE0LCAyMzksIDY2LCAxMCwgMTQsIDIzOSwgNjUsIDEwLCAxNCwgCi0gICAgMjM5LCA2NCwgMTAsIDE0LCAyMzksIDYzLCAxMCwgMTQsIDIzOSwgNjIsIDEwLCAxNCwgMjM5LCA2MSwgMTAsIDE0LCAyMzksIAotICAgIDYwLCAxMCwgMTQsIDIzOSwgNTksIDEwLCAxNCwgMjM5LCA1OCwgMTAsIDE0LCAyMzksIDU3LCAxMCwgMTQsIDIzOSwgNTYsIAotICAgIDEwLCAxNCwgMjM5LCA1NSwgMTAsIDE0LCAyMzksIDU0LCAxMCwgMTQsIDIzOSwgNTMsIDEwLCAxNCwgMjM5LCA1MiwgMTAsIAotICAgIDE0LCAyMzksIDUxLCAxMCwgMTQsIDIzOSwgNTAsIDEwLCAxNCwgMjM5LCA0OSwgMTAsIDE0LCAyMzksIDQ4LCAxMCwgMTQsIAotICAgIDIzOSwgNDcsIDEwLCAxNCwgMjM5LCA0NiwgMTAsIDE0LCAyMzksIDQ1LCAxMCwgMTQsIDIzOSwgNDQsIDEwLCAxNCwgMjM5LCAKLSAgICA0MywgMTAsIDE0LCAyMzksIDQyLCAxMCwgMTQsIDIzOSwgNDEsIDEwLCAxNCwgMjM5LCA0MCwgMTAsIDE0LCAyMzksIDM5LCAKLSAgICAxMCwgMTQsIDIzOSwgMzgsIDEwLCAxNCwgMjM5LCAzNywgMTAsIDE0LCAyMzksIDM2LCAxMCwgMTQsIDIzOSwgMzUsIDEwLCAKLSAgICAxNCwgMjM5LCAzNCwgMTAsIDE0LCAyMzksIDMzLCAxMCwgMTQsIDIzOSwgMzIsIDEwLCAxNCwgMjM5LCAzMSwgMTAsIDE0LCAKLSAgICAyMzksIDMwLCAxMCwgMTQsIDIzOSwgMjksIDEwLCAxNCwgMjM5LCAyOCwgMTAsIDE0LCAyMzksIDI3LCAxMCwgMTQsIDIzOSwgCi0gICAgMjYsIDEwLCAxNCwgMjM5LCAyNSwgMTAsIDE0LCAyMzksIDI0LCAxMCwgMTQsIDIzOSwgMjMsIDEwLCAxNCwgMjM5LCAyMiwgCi0gICAgMTAsIDE0LCAyMzksIDIxLCAxMCwgMTQsIDIzOSwgMjAsIDEwLCAxNCwgMjM5LCAxOSwgMTAsIDE0LCAyMzksIDE4LCAxMCwgCi0gICAgMTQsIDIzOSwgMTcsIDEwLCAxNCwgMjM5LCAxNiwgMTAsIDE0LCAyMzksIDE1LCAxMCwgMTQsIDIzOSwgMTQsIDEwLCAxNCwgCi0gICAgMjM5LCAxMywgMTAsIDE0LCAyMzksIDEyLCAxMCwgMTQsIDIzOSwgMTEsIDEwLCAxNCwgMjM5LCAxMCwgMTAsIDE0LCAyMzksIAotICAgIDksIDEwLCAxNCwgMjM5LCA4LCAxMCwgMTQsIDIzOSwgNywgMTAsIDE0LCAyMzksIDYsIDEwLCAxNCwgMjM5LCA1LCAxMCwgCi0gICAgMTQsIDIzOSwgNCwgMTAsIDE0LCAyMzksIDMsIDEwLCAxNCwgMjM5LCAyLCAxMCwgMTQsIDIzOSwgMSwgMTAsIDE0LCAyMzksIAotICAgIDAsIDEwLCAxNCwgMjM4LCAyNTUsIDEwLCAxNCwgMjM4LCAyNTQsIDEwLCAxNCwgMjM4LCAyNTMsIDEwLCAxNCwgMjM4LCAKLSAgICAyNTIsIDEwLCAxNCwgMjM4LCAyNTEsIDEwLCAxNCwgMjM4LCAyNTAsIDEwLCAxNCwgMjM4LCAyNDksIDEwLCAxNCwgMjM4LCAKLSAgICAyNDgsIDEwLCAxNCwgMjM4LCAyNDcsIDEwLCAxNCwgMjM4LCAyNDYsIDEwLCAxNCwgMjM4LCAyNDUsIDEwLCAxNCwgMjM4LCAKLSAgICAyNDQsIDEwLCAxNCwgMjM4LCAyNDMsIDEwLCAxNCwgMjM4LCAyNDIsIDEwLCAxNCwgMjM4LCAyNDEsIDEwLCAxNCwgMjM4LCAKLSAgICAyNDAsIDEwLCAxNCwgMjM4LCAyMzksIDEwLCAxNCwgMjM4LCAyMzgsIDEwLCAxNCwgMjM4LCAyMzcsIDEwLCAxNCwgMjM4LCAKLSAgICAyMzYsIDEwLCAxNCwgMjM4LCAyMzUsIDEwLCAxNCwgMjM4LCAyMzQsIDEwLCAxNCwgMjM4LCAyMzMsIDEwLCAxNCwgMjM4LCAKLSAgICAyMzIsIDEwLCAxNCwgMjM4LCAyMzEsIDEwLCAxNCwgMjM4LCAyMzAsIDEwLCAxNCwgMjM4LCAyMjksIDEwLCAxNCwgMjM4LCAKLSAgICAyMjgsIDEwLCAxNCwgMjM4LCAyMjcsIDEwLCAxNCwgMjM4LCAyMjYsIDEwLCAxNCwgMjM4LCAyMjUsIDEwLCAxNCwgMjM4LCAKLSAgICAyMjQsIDEwLCAxNCwgMjM4LCAyMjMsIDEwLCAxNCwgMjM4LCAyMjIsIDEwLCAxNCwgMjM4LCAyMjEsIDEwLCAxNCwgMjM4LCAKLSAgICAyMjAsIDEwLCAxNCwgMjM4LCAyMTksIDEwLCAxNCwgMjM4LCAyMTgsIDEwLCAxNCwgMjM4LCAyMTcsIDEwLCAxNCwgMjM4LCAKLSAgICAyMTYsIDEwLCAxNCwgMjM4LCAyMTUsIDEwLCAxNCwgMjM4LCAyMTQsIDEwLCAxNCwgMjM4LCAyMTMsIDEwLCAxNCwgMjM4LCAKLSAgICAyMTIsIDEwLCAxNCwgMjM4LCAyMTEsIDEwLCAxNCwgMjM4LCAyMTAsIDEwLCAxNCwgMjM4LCAyMDksIDEwLCAxNCwgMjM4LCAKLSAgICAyMDgsIDEwLCAxNCwgMjM4LCAyMDcsIDEwLCAxNCwgMjM4LCAyMDYsIDEwLCAxNCwgMjM4LCAyMDUsIDEwLCAxNCwgMjM4LCAKLSAgICAyMDQsIDEwLCAxNCwgMjM4LCAyMDMsIDEwLCAxNCwgMjM4LCAyMDIsIDEwLCAxNCwgMjM4LCAyMDEsIDEwLCAxNCwgMjM4LCAKLSAgICAyMDAsIDEwLCAxNCwgMjM4LCAxOTksIDEwLCAxNCwgMjM4LCAxOTgsIDEwLCAxNCwgMjM4LCAxOTcsIDEwLCAxNCwgMjM4LCAKLSAgICAxOTYsIDEwLCAxNCwgMjM4LCAxOTUsIDEwLCAxNCwgMjM4LCAxOTQsIDEwLCAxNCwgMjM4LCAxOTMsIDEwLCAxNCwgMjM4LCAKLSAgICAxOTIsIDEwLCAxNCwgMjM4LCAxOTEsIDEwLCAxNCwgMjM4LCAxOTAsIDEwLCAxNCwgMjM4LCAxODksIDEwLCAxNCwgMjM4LCAKLSAgICAxODgsIDEwLCAxNCwgMjM4LCAxODcsIDEwLCAxNCwgMjM4LCAxODYsIDEwLCAxNCwgMjM4LCAxODUsIDEwLCAxNCwgMjM4LCAKLSAgICAxODQsIDEwLCAxNCwgMjM4LCAxODMsIDEwLCAxNCwgMjM4LCAxODIsIDEwLCAxNCwgMjM4LCAxODEsIDEwLCAxNCwgMjM4LCAKLSAgICAxODAsIDEwLCAxNCwgMjM4LCAxNzksIDEwLCAxNCwgMjM4LCAxNzgsIDEwLCAxNCwgMjM4LCAxNzcsIDEwLCAxNCwgMjM4LCAKLSAgICAxNzYsIDEwLCAxNCwgMjM4LCAxNzUsIDEwLCAxNCwgMjM4LCAxNzQsIDEwLCAxNCwgMjM4LCAxNzMsIDEwLCAxNCwgMjM4LCAKLSAgICAxNzIsIDEwLCAxNCwgMjM4LCAxNzEsIDEwLCAxNCwgMjM4LCAxNzAsIDEwLCAxNCwgMjM4LCAxNjksIDEwLCAxNCwgMjM4LCAKLSAgICAxNjgsIDEwLCAxNCwgMjM4LCAxNjcsIDEwLCAxNCwgMjM4LCAxNjYsIDEwLCAxNCwgMjM4LCAxNjUsIDEwLCAxNCwgMjM4LCAKLSAgICAxNjQsIDEwLCAxNCwgMjM4LCAxNjMsIDEwLCAxNCwgMjM4LCAxNjIsIDEwLCAxNCwgMjM4LCAxNjEsIDEwLCAxNCwgMjM4LCAKLSAgICAxNjAsIDEwLCAxNCwgMjM4LCAxNTksIDEwLCAxNCwgMjM4LCAxNTgsIDEwLCAxNCwgMjM4LCAxNTcsIDEwLCAxNCwgMjM4LCAKLSAgICAxNTYsIDEwLCAxNCwgMjM4LCAxNTUsIDEwLCAxNCwgMjM4LCAxNTQsIDEwLCAxNCwgMjM4LCAxNTMsIDEwLCAxNCwgMjM4LCAKLSAgICAxNTIsIDEwLCAxNCwgMjM4LCAxNTEsIDEwLCAxNCwgMjM4LCAxNTAsIDEwLCAxNCwgMjM4LCAxNDksIDEwLCAxNCwgMjM4LCAKLSAgICAxNDgsIDEwLCAxNCwgMjM4LCAxNDcsIDEwLCAxNCwgMjM4LCAxNDYsIDEwLCAxNCwgMjM4LCAxNDUsIDEwLCAxNCwgMjM4LCAKLSAgICAxNDQsIDEwLCAxNCwgMjM4LCAxNDMsIDEwLCAxNCwgMjM4LCAxNDIsIDEwLCAxNCwgMjM4LCAxNDEsIDEwLCAxNCwgMjM4LCAKLSAgICAxNDAsIDEwLCAxNCwgMjM4LCAxMzksIDEwLCAxNCwgMjM4LCAxMzgsIDEwLCAxNCwgMjM4LCAxMzcsIDEwLCAxNCwgMjM4LCAKLSAgICAxMzYsIDEwLCAxNCwgMjM4LCAxMzUsIDEwLCAxNCwgMjM4LCAxMzQsIDEwLCAxNCwgMjM4LCAxMzMsIDEwLCAxNCwgMjM4LCAKLSAgICAxMzIsIDEwLCAxNCwgMjM4LCAxMzEsIDEwLCAxNCwgMjM4LCAxMzAsIDEwLCAxNCwgMjM4LCAxMjksIDEwLCAxNCwgMjM4LCAKLSAgICAxMjgsIDEwLCAxNCwgMjM4LCAxMjcsIDEwLCAxNCwgMjM4LCAxMjYsIDEwLCAxNCwgMjM4LCAxMjUsIDEwLCAxNCwgMjM4LCAKLSAgICAxMjQsIDEwLCAxNCwgMjM4LCAxMjMsIDEwLCAxNCwgMjM4LCAxMjIsIDEwLCAxNCwgMjM4LCAxMjEsIDEwLCAxNCwgMjM4LCAKLSAgICAxMjAsIDEwLCAxNCwgMjM4LCAxMTksIDEwLCAxNCwgMjM4LCAxMTgsIDEwLCAxNCwgMjM4LCAxMTcsIDEwLCAxNCwgMjM4LCAKLSAgICAxMTYsIDEwLCAxNCwgMjM4LCAxMTUsIDEwLCAxNCwgMjM4LCAxMTQsIDEwLCAxNCwgMjM4LCAxMTMsIDEwLCAxNCwgMjM4LCAKLSAgICAxMTIsIDEwLCAxNCwgMjM4LCAxMTEsIDEwLCAxNCwgMjM4LCAxMTAsIDEwLCAxNCwgMjM4LCAxMDksIDEwLCAxNCwgMjM4LCAKLSAgICAxMDgsIDEwLCAxNCwgMjM4LCAxMDcsIDEwLCAxNCwgMjM4LCAxMDYsIDEwLCAxNCwgMjM4LCAxMDUsIDEwLCAxNCwgMjM4LCAKLSAgICAxMDQsIDEwLCAxNCwgMjM4LCAxMDMsIDEwLCAxNCwgMjM4LCAxMDIsIDEwLCAxNCwgMjM4LCAxMDEsIDEwLCAxNCwgMjM4LCAKLSAgICAxMDAsIDEwLCAxNCwgMjM4LCA5OSwgMTAsIDE0LCAyMzgsIDk4LCAxMCwgMTQsIDIzOCwgOTcsIDEwLCAxNCwgMjM4LCA5NiwgCi0gICAgMTAsIDE0LCAyMzgsIDk1LCAxMCwgMTQsIDIzOCwgOTQsIDEwLCAxNCwgMjM4LCA5MywgMTAsIDE0LCAyMzgsIDkyLCAxMCwgCi0gICAgMTQsIDIzOCwgOTEsIDEwLCAxNCwgMjM4LCA5MCwgMTAsIDE0LCAyMzgsIDg5LCAxMCwgMTQsIDIzOCwgODgsIDEwLCAxNCwgCi0gICAgMjM4LCA4NywgMTAsIDE0LCAyMzgsIDg2LCAxMCwgMTQsIDIzOCwgODUsIDEwLCAxNCwgMjM4LCA4NCwgMTAsIDE0LCAyMzgsIAotICAgIDgzLCAxMCwgMTQsIDIzOCwgODIsIDEwLCAxNCwgMjM4LCA4MSwgMTAsIDE0LCAyMzgsIDgwLCAyMzMsIDk2LCAyMTcsIDg1LCAKLSAgICAxMjksIDIxOSwgMjAsIDEyOSwgMjQ1LCAzOSwgNzksIDEyOSwgMjI0LCAxLCA3OSwgMTI5LCA1NCwgNTAsIDEyOSwgMjQ3LCAKLSAgICAxNDAsIDUwLCAxMjksIDIyNSwgMTg1LCA1MCwgMTI5LCAyNTQsIDEzNCwgMTI5LCAyNTQsIDY1LCAxMjksIDQzLCAyMjYsIDcsIAotICAgIDEyOSwgNDQsIDIyNiwgNywgMTI5LCAyNTMsIDIyNCwgMTI5LCA5NiwgNTAsIDEyOSwgMjQ5LCAyMjcsIDEyOSwgMjQwLCAKLSAgICAxNzQsIDEyOSwgMjQzLCAyMzYsIDIxOCwgMTMxLCAxMjksIDIxOSwgNDgsIDEyOSwgMjEsIDIxMCwgODYsIDEyOSwgMjEsIAotICAgIDExMSwgMTI5LCAyMSwgMTA1LCAxMjksIDIxLCAxNTgsIDEyOSwgMjEsIDE2MSwgMTI5LCAyMSwgMTkwLCAxMjksIDIxLCAKLSAgICAxOTUsIDEyOSwgMjEsIDE5OSwgMTI5LCAyMSwgMTk2LCAxMjksIDIxLCAyMDEsIDEyOSwgMjQ5LCAyMzQsIDEyOSwgMjIwLCAKLSAgICAxNTIsIDEyOSwgMjMzLCAyMSwgNTAsIDEyOSwgMjQ1LCAxMDYsIDUwLCAxMjksIDI0MiwgMTM3LCA1MCwgMTI5LCAyMjQsIAotICAgIDE2LCA3OSwgMTI5LCAyNDksIDIyNSwgMjUzLCAyMTQsIDEyOSwgNywgNiwgMSwgNjEsIDEyOSwgNywgNiwgMSwgMjUzLCAKLSAgICAxNjYsIDEyOSwgNywgNiwgMSwgMjUxLCA3NCwgMTI5LCA3LCA2LCAxLCAyNDksIDY4LCAxMjksIDcsIDYsIDEsIDc2LCAxMjksIAotICAgIDcsIDYsIDEsIDI0NSwgMTQsIDEyOSwgNywgNiwgMSwgMjQzLCAyMDksIDEyOSwgNywgNiwgMSwgMjQyLCA2NywgMTI5LCA3LCAKLSAgICA2LCAxLCA3NCwgMTI5LCA3LCA2LCAxLCAyMzUsIDE1MCwgMTI5LCA3LCA2LCAxLCAyMzUsIDI5LCAxMjksIDcsIDYsIDEsIAotICAgIDE1NiwgMTI5LCA3LCA2LCAxLCAxOTQsIDEyOSwgNywgNiwgMSwgMjMwLCAzMCwgMTI5LCA3LCA2LCAxLCA3OCwgMTI5LCA3LCAKLSAgICA2LCAxLCAyMjYsIDEwOSwgMTI5LCA3LCA2LCAxLCAyMjQsIDk5LCAxMjksIDcsIDYsIDEsIDE1MywgMTI5LCA3LCA2LCAxLCAKLSAgICAyMjIsIDkzLCAxMjksIDcsIDYsIDEsIDIxNywgMTUzLCAxMjksIDcsIDYsIDEsIDY5LCAxMjksIDcsIDYsIDEsIDIxNCwgCi0gICAgMTA1LCAxMjksIDcsIDYsIDEsIDIxMiwgOTgsIDEyOSwgNywgNiwgMSwgMjExLCAxNzgsIDEyOSwgNywgNiwgMSwgMjExLCAKLSAgICAxMTcsIDEyOSwgNywgNiwgMSwgMjEwLCAxNTksIDEyOSwgNDMsIDQyLCAxMjcsIDEyOSwgMjIzLCA1MywgMjE5LCA0OCwgCi0gICAgMTI5LCA0NCwgNDIsIDEyNywgMTI5LCAyNTAsIDM5LCAyNTUsIDIzLCAxMjksIDEyMSwgMjMyLCAyMTksIDEyOSwgMjQyLCAKLSAgICAxNDQsIDI1NSwgMjMsIDEyOSwgNywgNCwgMSwgNjEsIDEyOSwgNywgNCwgMSwgMjUzLCAxNjYsIDEyOSwgNywgNCwgMSwgCi0gICAgMjUxLCA3NCwgMTI5LCA3LCA0LCAxLCAyNDksIDY4LCAxMjksIDcsIDQsIDEsIDc2LCAxMjksIDcsIDQsIDEsIDI0NSwgMTQsIAotICAgIDEyOSwgNywgNCwgMSwgMjQzLCAyMDksIDEyOSwgNywgNCwgMSwgMjQyLCA2NywgMTI5LCA3LCA0LCAxLCA3NCwgMTI5LCA3LCAKLSAgICA0LCAxLCAyMzUsIDE1MCwgMTI5LCA3LCA0LCAxLCAyMzUsIDI5LCAxMjksIDcsIDQsIDEsIDE1NiwgMTI5LCA3LCA0LCAxLCAKLSAgICAxOTQsIDEyOSwgNywgNCwgMSwgMjMwLCAzMCwgMTI5LCA3LCA0LCAxLCA3OCwgMTI5LCA3LCA0LCAxLCAyMjYsIDEwOSwgCi0gICAgMTI5LCA3LCA0LCAxLCAyMjQsIDk5LCAxMjksIDcsIDQsIDEsIDE1MywgMTI5LCA3LCA0LCAxLCAyMjIsIDkzLCAxMjksIDcsIAotICAgIDQsIDEsIDIxNywgMTUzLCAxMjksIDcsIDQsIDEsIDY5LCAxMjksIDcsIDQsIDEsIDIxNCwgMTA1LCAxMjksIDcsIDQsIDEsIAotICAgIDIxMiwgOTgsIDEyOSwgNywgNCwgMSwgMjExLCAxNzgsIDEyOSwgNywgNCwgMSwgMjExLCAxMTcsIDEyOSwgNywgNCwgMSwgCi0gICAgMjEwLCAxNTksIDEyOSwgNDMsIDI0OSwgMTA3LCAxMjcsIDEyOSwgNjcsIDIzMiwgMjE5LCAxMjksIDQ0LCAyNDksIDEwNywgCi0gICAgMTI3LCAxMjksIDE4NCwgMjUxLCAxNCwgMjE3LCA4NSwgNDUsIDIyMSwgODAsIDQ1LCAyMjEsIDY5LCA0NSwgMjIxLCA1OCwgCi0gICAgNDUsIDIyMSwgNDYsIDQ1LCAyMjEsIDM1LCA0NSwgMjIxLCAyNCwgNDUsIDIyMSwgMTMsIDQ1LCAyMjEsIDIsIDQ1LCAyMjAsIAotICAgIDI0NywgNDUsIDIyMCwgMjM5LCA0NSwgMjIwLCAyMzgsIDQ1LCAyMjAsIDIzNywgNDUsIDIyMCwgMjM2LCA0NSwgMjIwLCAKLSAgICAyMzQsIDQ1LCAyMjAsIDIzMywgNDUsIDIyMCwgMjMyLCA0NSwgMjIwLCAyMzEsIDQ1LCAyMjAsIDIzMCwgNDUsIDIyMCwgCi0gICAgMjI5LCA0NSwgMjIwLCAyMjgsIDQ1LCAyMjAsIDIyNywgNDUsIDIyMCwgMjI2LCA0NSwgMjIwLCAyMjUsIDQ1LCAyMjAsIAotICAgIDIyMywgNDUsIDIyMCwgMjIyLCA0NSwgMjIwLCAyMjEsIDQ1LCAyMjAsIDIyMCwgNDUsIDIyMCwgMjE5LCA0NSwgMjIwLCAKLSAgICAyMTgsIDQ1LCAyMjAsIDIxNywgNDUsIDIyMCwgMjE2LCA0NSwgMjIwLCAyMTUsIDQ1LCAyMjAsIDIxNCwgNDUsIDIyMCwgCi0gICAgMjEyLCA0NSwgMjIwLCAyMTEsIDQ1LCAyMjAsIDIxMCwgNDUsIDIyMCwgMjA5LCA0NSwgMjIwLCAyMDgsIDQ1LCAyMjAsIAotICAgIDIwNywgNDUsIDIyMCwgMjA2LCA0NSwgMjIwLCAyMDUsIDQ1LCAyMjAsIDIwNCwgNDUsIDIyMCwgMjAzLCA0NSwgMjIwLCAKLSAgICAyMDEsIDQ1LCAyMjAsIDIwMCwgNDUsIDIyMCwgMTk5LCA0NSwgMjIwLCAxOTgsIDQ1LCAyMjAsIDE5NywgNDUsIDIyMCwgCi0gICAgMTk2LCA0NSwgMjIwLCAxOTUsIDQ1LCAyMjAsIDE5NCwgNDUsIDIyMCwgMTkzLCA0NSwgMjIwLCAxOTIsIDQ1LCAyMjAsIAotICAgIDE5MCwgNDUsIDIyMCwgMTg5LCA0NSwgMjIwLCAxODgsIDQ1LCAyMjAsIDE4NywgNDUsIDIyMCwgMTg2LCA0NSwgMjIwLCAKLSAgICAxODUsIDQ1LCAyMjAsIDE4NCwgNDUsIDIyMCwgMTgzLCA0NSwgMjIwLCAxODIsIDQ1LCAyMjAsIDE4MSwgNDUsIDIyMCwgCi0gICAgMTc5LCA0NSwgMjIwLCAxNzgsIDQ1LCAyMjAsIDE3NywgNDUsIDIyMCwgMTc2LCA0NSwgMjIwLCAxNzUsIDQ1LCAyMjAsIAotICAgIDE3NCwgNDUsIDIyMCwgMTczLCA0NSwgMjIwLCAxNzIsIDQ1LCAyMjAsIDE3MSwgNDUsIDIyMCwgMTcwLCA0NSwgMjIwLCAKLSAgICAxNjgsIDQ1LCAyMjAsIDE2NywgNDUsIDIyMCwgMTY2LCA0NSwgMjIwLCAxNjUsIDQ1LCAyMjAsIDE2NCwgNDUsIDIyMCwgCi0gICAgMTYzLCA0NSwgMjIwLCAxNjIsIDQ1LCAyMjAsIDE2MSwgNDUsIDIyMCwgMTYwLCA0NSwgMjIwLCAxNTksIDQ1LCAyMjEsIAotICAgIDE1NiwgNDUsIDIyMSwgMTU1LCA0NSwgMjIxLCAxNTQsIDQ1LCAyMjEsIDE1MywgNDUsIDIyMSwgMTUyLCA0NSwgMjIxLCAKLSAgICAxNTEsIDQ1LCAyMjEsIDE1MCwgNDUsIDIyMSwgMTQ5LCA0NSwgMjIxLCAxNDgsIDQ1LCAyMjEsIDE0NywgNDUsIDIyMSwgCi0gICAgMTQ1LCA0NSwgMjIxLCAxNDQsIDQ1LCAyMjEsIDE0MywgNDUsIDIyMSwgMTQyLCA0NSwgMjIxLCAxNDEsIDQ1LCAyMjEsIAotICAgIDE0MCwgNDUsIDIyMSwgMTM5LCA0NSwgMjIxLCAxMzgsIDQ1LCAyMjEsIDEzNywgNDUsIDIyMSwgMTM2LCA0NSwgMjIxLCAKLSAgICAxMzQsIDQ1LCAyMjEsIDEzMywgNDUsIDIyMSwgMTMyLCA0NSwgMjIxLCAxMzEsIDQ1LCAyMjEsIDEzMCwgNDUsIDIyMSwgCi0gICAgMTI5LCA0NSwgMjIxLCAxMjgsIDQ1LCAyMjEsIDEyNywgNDUsIDIyMSwgMTI2LCA0NSwgMjIxLCAxMjUsIDQ1LCAyMjEsIAotICAgIDEyMywgNDUsIDIyMSwgMTIyLCA0NSwgMjIxLCAxMjEsIDQ1LCAyMjEsIDEyMCwgNDUsIDIyMSwgMTE5LCA0NSwgMjIxLCAKLSAgICAxMTgsIDQ1LCAyMjEsIDExNywgNDUsIDIyMSwgMTE2LCA0NSwgMjIxLCAxMTUsIDQ1LCAyMjEsIDExNCwgNDUsIDIyMSwgCi0gICAgMTEyLCA0NSwgMjIxLCAxMTEsIDQ1LCAyMjEsIDExMCwgNDUsIDIyMSwgMTA5LCA0NSwgMjIxLCAxMDgsIDQ1LCAyMjEsIAotICAgIDEwNywgNDUsIDIyMSwgMTA2LCA0NSwgMjIxLCAxMDUsIDQ1LCAyMjEsIDEwNCwgNDUsIDIyMSwgMTAzLCA0NSwgMjIxLCAKLSAgICAxMDEsIDQ1LCAyMjEsIDEwMCwgNDUsIDIyMSwgOTksIDQ1LCAyMjEsIDk4LCA0NSwgMjIxLCA5NywgNDUsIDIyMSwgOTYsIAotICAgIDQ1LCAyMjEsIDk1LCA0NSwgMjIxLCA5NCwgNDUsIDIyMSwgOTMsIDQ1LCAyMjEsIDkyLCA0NSwgMjIxLCA5MCwgNDUsIDIyMSwgCi0gICAgODksIDQ1LCAyMjEsIDg4LCA0NSwgMjIxLCA4NywgNDUsIDIyMSwgODYsIDQ1LCAyMjEsIDg1LCA0NSwgMjIxLCA4NCwgNDUsIAotICAgIDIyMSwgODMsIDQ1LCAyMjEsIDgyLCA0NSwgMjIxLCA4MSwgNDUsIDIyMSwgNzksIDQ1LCAyMjEsIDc4LCA0NSwgMjIxLCA3NywgCi0gICAgNDUsIDIyMSwgNzYsIDQ1LCAyMjEsIDc1LCA0NSwgMjIxLCA3NCwgNDUsIDIyMSwgNzMsIDQ1LCAyMjEsIDcyLCA0NSwgMjIxLCAKLSAgICA3MSwgNDUsIDIyMSwgNzAsIDQ1LCAyMjEsIDY4LCA0NSwgMjIxLCA2NywgNDUsIDIyMSwgNjYsIDQ1LCAyMjEsIDY1LCA0NSwgCi0gICAgMjIxLCA2NCwgNDUsIDIyMSwgNjMsIDQ1LCAyMjEsIDYyLCA0NSwgMjIxLCA2MSwgNDUsIDIyMSwgNjAsIDQ1LCAyMjEsIDU5LCAKLSAgICA0NSwgMjIxLCA1NywgNDUsIDIyMSwgNTYsIDQ1LCAyMjEsIDU1LCA0NSwgMjIxLCA1NCwgNDUsIDIyMSwgNTMsIDQ1LCAyMjEsIAotICAgIDUyLCA0NSwgMjIxLCA1MSwgNDUsIDIyMSwgNTAsIDQ1LCAyMjEsIDQ5LCA0NSwgMjIxLCA0OCwgNDUsIDIyMSwgNDUsIDQ1LCAKLSAgICAyMjEsIDQ0LCA0NSwgMjIxLCA0MywgNDUsIDIyMSwgNDIsIDQ1LCAyMjEsIDQxLCA0NSwgMjIxLCA0MCwgNDUsIDIyMSwgMzksIAotICAgIDQ1LCAyMjEsIDM4LCA0NSwgMjIxLCAzNywgNDUsIDIyMSwgMzYsIDQ1LCAyMjEsIDM0LCA0NSwgMjIxLCAzMywgNDUsIDIyMSwgCi0gICAgMzIsIDQ1LCAyMjEsIDMxLCA0NSwgMjIxLCAzMCwgNDUsIDIyMSwgMjksIDQ1LCAyMjEsIDI4LCA0NSwgMjIxLCAyNywgNDUsIAotICAgIDIyMSwgMjYsIDQ1LCAyMjEsIDI1LCA0NSwgMjIxLCAyMywgNDUsIDIyMSwgMjIsIDQ1LCAyMjEsIDIxLCA0NSwgMjIxLCAyMCwgCi0gICAgNDUsIDIyMSwgMTksIDQ1LCAyMjEsIDE4LCA0NSwgMjIxLCAxNywgNDUsIDIyMSwgMTYsIDQ1LCAyMjEsIDE1LCA0NSwgMjIxLCAKLSAgICAxNCwgNDUsIDIyMSwgMTIsIDQ1LCAyMjEsIDExLCA0NSwgMjIxLCAxMCwgNDUsIDIyMSwgOSwgNDUsIDIyMSwgOCwgNDUsIAotICAgIDIyMSwgNywgNDUsIDIyMSwgNiwgNDUsIDIyMSwgNSwgNDUsIDIyMSwgNCwgNDUsIDIyMSwgMywgNDUsIDIyMSwgMSwgNDUsIAotICAgIDIyMSwgMCwgNDUsIDIyMCwgMjU1LCA0NSwgMjIwLCAyNTQsIDQ1LCAyMjAsIDI1MywgNDUsIDIyMCwgMjUyLCA0NSwgMjIwLCAKLSAgICAyNTEsIDQ1LCAyMjAsIDI1MCwgNDUsIDIyMCwgMjQ5LCA0NSwgMjIwLCAyNDgsIDQ1LCAyMjAsIDI0NiwgNDUsIDIyMCwgCi0gICAgMjQ1LCA0NSwgMjIwLCAyNDQsIDQ1LCAyMjAsIDI0MywgNDUsIDIyMCwgMjQyLCA0NSwgMjIwLCAyNDEsIDQ1LCAyMjAsIAotICAgIDI0MCwgMjI3LCAyMDYsIDIyNywgMjA4LCAyMTgsIDE1NCwgNjQsIDI0MSwgMjQwLCAyMTksIDUwLCAyMTgsIDE1NCwgNjQsIAotICAgIDIxNiwgMjEzLCAyMTgsIDg2LCAyNDUsIDE1MSwgNjQsIDIxNiwgMjEzLCAyNDUsIDY0LCAyNDUsIDE1MSwgNjQsIDIxNSwgCi0gICAgMjQ0LCAyNDUsIDExNywgMjQ1LCAxNDAsIDI0NSwgMTQxLCAyNTUsIDE2LCAyNTUsIDE3LCAyNTQsIDE3NiwgMjUyLCA1NSwgCi0gICAgMjUyLCAxODcsIDI1MSwgMTM5LCAxMzUsIDIxNywgOTAsIDIwMywgMjE3LCA5MCwgMjQwLCAyMzQsIDIxNywgOTQsIDIzMiwgCi0gICAgMjIwLCAyNDQsIDE1MywgMTY2LCAyMzIsIDIxOSwgMjQ1LCAxNTEsIDY0LCAyMzIsIDIxOSwgMjMzLCA2LCAyMjgsIDE0MCwgCi0gICAgMjQ1LCAxMjAsIDIzMiwgMjIwLCAyMTcsIDkwLCA2NywgMjE3LCA5MCwgMjEyLCAxMTgsIDI0NCwgMjgsIDI0NCwgMTUzLCAKLSAgICAyNDQsIDEzMywgMjUwLCAyMzgsIDIyMywgNTYsIDI0OSwgMTUxLCAyMjAsIDMwLCAyMjYsIDEzNCwgMjMyLCAxNTYsIDExMSwgCi0gICAgMjE5LCA2MCwgMjIwLCAzMCwgMjM2LCA2LCAyMzIsIDE1NiwgMjEwLCA4NiwgMjE5LCAxOTMsIDI0OCwgMTU5LCAyMzIsIAotICAgIDIxMCwgMjQ1LCA4NSwgMjQ3LCAxNjMsIDI0OCwgMzksIDI0OSwgMTg2LCAxMTEsIDI0OCwgMTQ5LCAyNDgsIDM5LCAyNDksIAotICAgIDE4NiwgMTA1LCAyNDgsIDE0OCwgMjQ4LCAzOSwgMjQ5LCAxODYsIDE1OCwgMjQ4LCAxNDcsIDI0OCwgMzksIDI0OSwgMTg2LCAKLSAgICAxNjEsIDI0OCwgMTQ2LCAxNTIsIDI1NSwgMTYsIDIyOSwgMjE0LCAyMTcsIDE3OCwgMjM2LCA2OSwgMjE3LCAxODEsIDI0NSwgCi0gICAgMTUxLCA2NCwgMjE1LCAyNDUsIDI1MSwgMjIxLCAyNDUsIDcwLCAyNTEsIDEzLCAyNTEsIDE1LCAyNDUsIDE1MSwgNjQsIAotICAgIDIzMSwgODYsIDI0NSwgMTE4LCAyMTgsIDYyLCAyMTgsIDc5LCAyNDUsIDg1LCAyNDUsIDg2LCAyMzUsIDIzOSwgMjIwLCAKLSAgICAxNDAsIDE2MSwgMjQ0LCAxMTUsIDIyMCwgMTM5LCAyNDMsIDI0NSwgMjM1LCAyMzksIDIyMCwgMTQwLCAxNTgsIDI0MiwgCi0gICAgMTI4LCAyMjAsIDEzOSwgMjQyLCAxMjUsIDIzNSwgMjM5LCAyMjAsIDE0MCwgMTA1LCAyMjMsIDEyNCwgMjIwLCAxMzksIAotICAgIDIyMiwgMTQ3LCAyMzUsIDIzOSwgMjIwLCAxNDAsIDExMSwgMjE0LCAxNzQsIDIyMCwgMTM5LCAyMTQsIDEzMywgMjE5LCAyMywgCi0gICAgMjQ4LCA3MSwgMjQ4LCA3MywgMjI2LCA4MiwgMjUwLCAxNTAsIDIyNiwgODQsIDEyNSwgMjI2LCAyNDQsIDIyNCwgMTk2LCAKLSAgICAyNDEsIDU0LCAyNTEsIDE1OCwgMjI1LCAxNzYsIDI0MSwgMjEwLCAyNTEsIDE2OSwgMjI4LCA4MCwgMjUxLCAxNTgsIDI0MSwgCi0gICAgMjEwLCAyMjksIDE4MCwgMjM1LCAyNDksIDIzNSwgMjUxLCAyMjksIDg3LCAyMzIsIDIxOSwgMjI5LCAxMDQsIDIxOCwgMTU0LCAKLSAgICA2NCwgMjIxLCAxNjAsIDI1NCwgMjYsIDIxOCwgMjI1LCAyNDUsIDE1MSwgNjQsIDIyMSwgMTYwLCAyNTQsIDI2LCAyNDUsIAotICAgIDg4LCAxMzUsIDIxNywgOTEsIDIyMCwgMTI5LCAyMDMsIDIxNywgOTEsIDIyMCwgMTI5LCAyNDAsIDIzMSwgMTM1LCAyMTcsIAotICAgIDkxLCAyLCAyMzUsIDQxLCAyMDMsIDIxNywgOTEsIDIsIDIzNSwgNDEsIDI0MCwgMjMyLCAyMzIsIDIyMCwgMjE3LCA5MSwgCi0gICAgMjIwLCAxMjksIDY3LCAyMTcsIDkxLCAyMjAsIDEyOSwgMjEyLCAxMTcsIDIyNiwgMSwgMjMyLCAyMjAsIDI0NCwgMjIsIAotICAgIDIyNiwgMSwgMjMyLCAyMjAsIDI0NiwgMTE0LCAyMjUsIDM1LCAyMjYsIDEsIDIzMiwgMjIwLCAyNTIsIDE4NiwgMjI2LCAxLCAKLSAgICAyMzIsIDIyMCwgMjE0LCAxNjMsIDIyNSwgMzEsIDIyMywgNTMsIDIzMiwgMjIwLCAyNDQsIDE1MywgMjIzLCA1MywgMjM1LCAKLSAgICAyNDksIDIyMywgMzgsIDIxOSwgMTU3LCAyMjAsIDMwLCAxMDUsIDIxOSwgMTU0LCAyMTgsIDIyNywgMjE5LCAxNTcsIDIyMCwgCi0gICAgMzAsIDE1OCwgMjE5LCAxNTMsIDIxOCwgMjI2LCAyNDgsIDM5LCAyNDksIDE4NiwgMjE4LCAxMDcsIDI0OCwgMTQ1LCAyMjQsIAotICAgIDE4NiwgMjE0LCAxMzIsIDExMSwgMjI0LCAxODYsIDIxNCwgMTMwLCAyMjQsIDE1MiwgMjI0LCAxODYsIDIxNCwgMTMyLCAKLSAgICAxMDUsIDIyNCwgMTg2LCAyMTQsIDEyOSwgMjI0LCAxNTEsIDIyMCwgMTMwLCAyMTUsIDI0MywgMjE4LCAxNTMsIDIxOCwgOTAsIAotICAgIDI1MSwgMTQsIDI1MCwgMTUwLCAyNTAsIDIxNywgMjMxLCA0OCwgMjEyLCA1OSwgMjMwLCA0OCwgMjE4LCAxNTQsIDY0LCAKLSAgICAyNDIsIDExNCwgMjU0LCAyNiwgMjE4LCAxNTQsIDY0LCAyMjQsIDE2OSwgMjU0LCAyNiwgMjE5LCAyMiwgMjQ1LCAxNTEsIAotICAgIDY0LCAyNDIsIDExNCwgMjU0LCAyNiwgMjQ1LCAxNTEsIDY0LCAyMjQsIDE2OSwgMjU0LCAyNiwgMjQ1LCAxMTUsIDIxOCwgCi0gICAgMTU0LCA2NCwgMjE4LCAxMDcsIDIxOSwgMzcsIDIxOSwgMTU3LCAyNDIsIDE0OCwgMTM1LCAyMzUsIDIwMiwgMjIwLCAxMDksIAotICAgIDIxOSwgMTU3LCAxMzUsIDIzNSwgMjAyLCAyMjEsIDE5NiwgMjQ5LCAxODYsIDIyMCwgMTM3LCAyMzUsIDIwMiwgMjQ5LCAKLSAgICAxMjEsIDIxOCwgMTA4LCAyMTYsIDIzNywgMjE4LCAxNzAsIDIyNiwgMTczLCAyMTcsIDE2OCwgMjQ5LCAyMjYsIDIyNiwgCi0gICAgMTQ2LCAyMjQsIDE4NywgMjMxLCA0NywgMjI1LCAyMiwgMjU0LCA2MSwgMjI0LCAxODEsIDI0OSwgMjI2LCAyNTQsIDc3LCAKLSAgICAyMjksIDE2OCwgMjE5LCAyMDIsIDcsIDYsIDEsIDI0MywgMCwgNywgNCwgMSwgMjQzLCAwLCAyNTAsIDE2NywgMjU0LCAxNTcsIAotICAgIDE4MywgMjE4LCA2OCwgMjQ5LCAyMzUsIDIxOSwgMTA4LCAyMzMsIDUyLCAxNjUsIDEsIDIzMiwgMTgxLCAyMDksIDIwOSwgMSwgCi0gICAgMjQ0LCA1MiwgMjQ0LCA0NCwgMjA5LCAyMDksIDEsIDI0NCwgNTIsIDI0NCwgMTY1LCAyMDksIDIwOSwgMSwgMjIyLCAyMTMsIAotICAgIDIwOSwgMjA5LCAxLCAyMzIsIDE2MiwgNjMsIDE2NCwgMjUxLCAyMzEsIDIyMCwgNSwgMjQyLCAyMjIsIDIzMCwgMjUzLCAKLSAgICAyMjMsIDQ0LCAyNDMsIDIyMywgMjQzLCAyMjIsIDI0MywgMjIxLCAyMzAsIDUwLCAyMDksIDI1MSwgMjA5LCAyNTIsIDIwOSwgCi0gICAgMjU0LCAyMzIsIDEwNywgMjIyLCAyMjEsIDIzMiwgMTA5LCAyMjIsIDIyMywgMjI1LCAyMjcsIDIzMiwgMTA2LCAyMjIsIAotICAgIDIyMCwgMjI4LCAxMTEsIDIzMCwgMTcwLCAyMTEsIDIyOSwgMjMyLCAxMDgsIDIyMiwgMjIyLCAyNDMsIDI0NCwgMjI1LCAKLSAgICAyMjYsIDIxMiwgMTUsIDI0NSwgMTcwLCAyNDMsIDIzMywgMjMwLCAyMzQsIDIyNiwgMjAxLCAyMTQsIDEzNCwgODcsIDIzMCwgCi0gICAgMjM0LCAyNDgsIDE2NSwgODcsIDgsIDMsIDIzNSwgMTY0LCA3OSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDcxLCAKLSAgICAyMzMsIDI2LCAxMjcsIDIxMywgMTE4LCAyMTMsIDcsIDIxMiwgMTk1LCAyMTIsIDE4NCwgMjEyLCAxNzMsIDIxMiwgMTYyLCAKLSAgICAyMTIsIDE1MSwgMjEyLCAxNDAsIDIxMiwgMTI5LCAyMTMsIDExNywgMjEzLCAxMDYsIDIxMywgOTUsIDIxMywgODQsIDIxMywgCi0gICAgNzMsIDIxMywgNjIsIDIxMywgNTEsIDI1MSwgNzksIDIyNiwgMTU5LCA3OSwgMjUxLCAyMDQsIDIwOSwgMjUzLCAxNSwgNSwgCi0gICAgMjI3LCAyMTUsIDIxNiwgMjQwLCAxNSwgNSwgMjI3LCAyMTUsIDExNSwgMjI3LCAyMTUsIDI1MSwgMTA3LCAxMTUsIDI1MSwgCi0gICAgMTA2LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjE5LCAxMDQsIDI1MCwgODEsIDIxNCwgOSwgMjEzLCA0MCwgMjEzLCAyOSwgCi0gICAgMjEzLCAxOCwgMjEzLCA2LCAyMTIsIDI1MSwgMjEyLCAyNDAsIDIxMiwgMjI5LCAyMTIsIDIxOCwgMjEyLCAyMDcsIDIxMiwgCi0gICAgMTk5LCAyMTIsIDE5OCwgMjEyLCAxOTcsIDIxMiwgMTk2LCAyMTIsIDE5NCwgMjEyLCAxOTMsIDIxMiwgMTkyLCAyMTIsIAotICAgIDE5MSwgMjEyLCAxOTAsIDIxMiwgMTg5LCAyMTIsIDE4OCwgMjEyLCAxODcsIDIxMiwgMTg2LCAyMTIsIDE4NSwgMjEyLCAKLSAgICAxODMsIDIxMiwgMTgyLCAyMTIsIDE4MSwgMjEyLCAxODAsIDIxMiwgMTc5LCAyMTIsIDE3OCwgMjEyLCAxNzcsIDIxMiwgCi0gICAgMTc2LCAyMTIsIDE3NSwgMjEyLCAxNzQsIDIxMiwgMTcyLCAyMTIsIDE3MSwgMjEyLCAxNzAsIDIxMiwgMTY5LCAyMTIsIAotICAgIDE2OCwgMjEyLCAxNjcsIDIxMiwgMTY2LCAyMTIsIDE2NSwgMjEyLCAxNjQsIDIxMiwgMTYzLCAyMTIsIDE2MSwgMjEyLCAKLSAgICAxNjAsIDIxMiwgMTU5LCAyMTIsIDE1OCwgMjEyLCAxNTcsIDIxMiwgMTU2LCAyMTIsIDE1NSwgMjEyLCAxNTQsIDIxMiwgCi0gICAgMTUzLCAyMTIsIDE1MiwgMjEyLCAxNTAsIDIxMiwgMTQ5LCAyMTIsIDE0OCwgMjEyLCAxNDcsIDIxMiwgMTQ2LCAyMTIsIAotICAgIDE0NSwgMjEyLCAxNDQsIDIxMiwgMTQzLCAyMTIsIDE0MiwgMjEyLCAxNDEsIDIxMiwgMTM5LCAyMTIsIDEzOCwgMjEyLCAKLSAgICAxMzcsIDIxMiwgMTM2LCAyMTIsIDEzNSwgMjEyLCAxMzQsIDIxMiwgMTMzLCAyMTIsIDEzMiwgMjEyLCAxMzEsIDIxMiwgCi0gICAgMTMwLCAyMTIsIDEyOCwgMjEyLCAxMjcsIDIxMiwgMTI2LCAyMTIsIDEyNSwgMjEyLCAxMjQsIDIxMiwgMTIzLCAyMTIsIAotICAgIDEyMiwgMjEyLCAxMjEsIDIxMiwgMTIwLCAyMTIsIDExOSwgMjEzLCAxMTYsIDIxMywgMTE1LCAyMTMsIDExNCwgMjEzLCAKLSAgICAxMTMsIDIxMywgMTEyLCAyMTMsIDExMSwgMjEzLCAxMTAsIDIxMywgMTA5LCAyMTMsIDEwOCwgMjEzLCAxMDcsIDIxMywgCi0gICAgMTA1LCAyMTMsIDEwNCwgMjEzLCAxMDMsIDIxMywgMTAyLCAyMTMsIDEwMSwgMjEzLCAxMDAsIDIxMywgOTksIDIxMywgOTgsIAotICAgIDIxMywgOTcsIDIxMywgOTYsIDIxMywgOTQsIDIxMywgOTMsIDIxMywgOTIsIDIxMywgOTEsIDIxMywgOTAsIDIxMywgODksIAotICAgIDIxMywgODgsIDIxMywgODcsIDIxMywgODYsIDIxMywgODUsIDIxMywgODMsIDIxMywgODIsIDIxMywgODEsIDIxMywgODAsIAotICAgIDIxMywgNzksIDIxMywgNzgsIDIxMywgNzcsIDIxMywgNzYsIDIxMywgNzUsIDIxMywgNzQsIDIxMywgNzIsIDIxMywgNzEsIAotICAgIDIxMywgNzAsIDIxMywgNjksIDIxMywgNjgsIDIxMywgNjcsIDIxMywgNjYsIDIxMywgNjUsIDIxMywgNjQsIDIxMywgNjMsIAotICAgIDIxMywgNjEsIDIxMywgNjAsIDIxMywgNTksIDIxMywgNTgsIDIxMywgNTcsIDIxMywgNTYsIDIxMywgNTUsIDIxMywgNTQsIAotICAgIDIxMywgNTMsIDIxMywgNTIsIDIxMywgNTAsIDIxMywgNDksIDIxMywgNDgsIDIxMywgNDcsIDIxMywgNDYsIDIxMywgNDUsIAotICAgIDIxMywgNDQsIDIxMywgNDMsIDIxMywgNDIsIDIxMywgNDEsIDIxMywgMzksIDIxMywgMzgsIDIxMywgMzcsIDIxMywgMzYsIAotICAgIDIxMywgMzUsIDIxMywgMzQsIDIxMywgMzMsIDIxMywgMzIsIDIxMywgMzEsIDIxMywgMzAsIDIxMywgMjgsIDIxMywgMjcsIAotICAgIDIxMywgMjYsIDIxMywgMjUsIDIxMywgMjQsIDIxMywgMjMsIDIxMywgMjIsIDIxMywgMjEsIDIxMywgMjAsIDIxMywgMTksIAotICAgIDIxMywgMTcsIDIxMywgMTYsIDIxMywgMTUsIDIxMywgMTQsIDIxMywgMTMsIDIxMywgMTIsIDIxMywgMTEsIDIxMywgMTAsIAotICAgIDIxMywgOSwgMjEzLCA4LCAyMTMsIDUsIDIxMywgNCwgMjEzLCAzLCAyMTMsIDIsIDIxMywgMSwgMjEzLCAwLCAyMTIsIDI1NSwgCi0gICAgMjEyLCAyNTQsIDIxMiwgMjUzLCAyMTIsIDI1MiwgMjEyLCAyNTAsIDIxMiwgMjQ5LCAyMTIsIDI0OCwgMjEyLCAyNDcsIAotICAgIDIxMiwgMjQ2LCAyMTIsIDI0NSwgMjEyLCAyNDQsIDIxMiwgMjQzLCAyMTIsIDI0MiwgMjEyLCAyNDEsIDIxMiwgMjM5LCAKLSAgICAyMTIsIDIzOCwgMjEyLCAyMzcsIDIxMiwgMjM2LCAyMTIsIDIzNSwgMjEyLCAyMzQsIDIxMiwgMjMzLCAyMTIsIDIzMiwgCi0gICAgMjEyLCAyMzEsIDIxMiwgMjMwLCAyMTIsIDIyOCwgMjEyLCAyMjcsIDIxMiwgMjI2LCAyMTIsIDIyNSwgMjEyLCAyMjQsIAotICAgIDIxMiwgMjIzLCAyMTIsIDIyMiwgMjEyLCAyMjEsIDIxMiwgMjIwLCAyMTIsIDIxOSwgMjEyLCAyMTcsIDIxMiwgMjE2LCAKLSAgICAyMTIsIDIxNSwgMjEyLCAyMTQsIDIxMiwgMjEzLCAyMTIsIDIxMiwgMjEyLCAyMTEsIDIxMiwgMjEwLCAyMTIsIDIwOSwgCi0gICAgMjEyLCAyMDgsIDIxMiwgMjA2LCAyMTIsIDIwNSwgMjEyLCAyMDQsIDIxMiwgMjAzLCAyMTIsIDIwMiwgMjEyLCAyMDEsIAotICAgIDIxMiwgMjAwLCA3LCA2LCAxLCAxMTYsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDExNiwgMiwgMjMxLCAKLSAgICAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAxNjAsIDIsIAotICAgIDY3LCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjIwLCAyNTIsIDUxLCAyMiwgMjQyLCAxNDMsIAotICAgIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjIwLCAyNTIsIDUxLCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgCi0gICAgNjcsIDIzMiwgMjIwLCAyNTIsIDUxLCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgCi0gICAgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAKLSAgICAzOSwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCAyNTAsIDI0MiwgNywgNCwgMSwgMTYwLCAKLSAgICAyLCAyNTAsIDM5LCAyMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDU5LCAKLSAgICA3MiwgMjIsIDE0MiwgNywgNCwgMSwgMjI5LCA4NSwgMiwgMjE2LCA5MCwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgCi0gICAgMjIwLCA1MSwgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIAotICAgIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIAotICAgIDI0MiwgMTQzLCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAKLSAgICAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDY3LCAyMzIsIDIyMCwgNTEsIAotICAgIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDY3LCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTYsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDIyNiwgMjI5LCAyMiwgMTg0LCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgMTg0LCA3LCA0LCAxLCAxNjAsIDIsIDIyNiwgMjI5LCAyMiwgMTg0LCA3LCA2LCAxLCAxNjAsIDIsIDU5LCAKLSAgICA3MiwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNzIsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDcyLCAKLSAgICAyMiwgMTg0LCA3LCA0LCAxLCAxNjAsIDIsIDU5LCA3MiwgMjIsIDE4NCwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDU5LCA3MiwgCi0gICAgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyNDAsIDE2MSwgCi0gICAgMiwgMjI2LCAyMjksIDIyLCAxNDIsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyMjYsIDIyOSwgMjIsIDU5LCA3MiwgMjIsIAotICAgIDE0MiwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgMjI5LCAyMiwgMTg0LCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAKLSAgICAyMjksIDIyLCA1OSwgNzIsIDIyLCAxODQsIDcsIDYsIDEsIDIzNSwgMTUxLCAyLCAxODQsIDcsIDQsIDEsIDIzNSwgMTUxLCAKLSAgICAyLCA1OSwgNzIsIDIyLCAxODQsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAxODQsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAxODQsIAotICAgIDcsIDYsIDEsIDIzMiwgNTUsIDIsIDE4NCwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTg0LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMTg0LCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA0LCAKLSAgICAxLCAxMDQsIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI5LCAyMiwgMTg0LCA3LCA0LCAKLSAgICAxLCAxMDQsIDIsIDIyNiwgMjI5LCAyMiwgMTg0LCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgMTQyLCA3LCA0LCAKLSAgICAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgMTg0LCA3LCA0LCAKLSAgICAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgMTg0LCA3LCA0LCAxLCAyNTQsIDI1MywgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIAotICAgIDIwNCwgMTQ0LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjA0LCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAKLSAgICAxMDYsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyMTQsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjEsIDE5OCwgCi0gICAgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIyMSwgMTk4LCAyLCAxNDIsIDcsIDQsIDEsIDI0MSwgNTgsIDIyMSwgMTk4LCAyLCAKLSAgICAyNDIsIDE0MywgNywgNCwgMSwgMjQxLCA1OCwgMjIxLCAxOTgsIDIsIDE0MiwgOSwgMjIwLCAxMzcsIDc3LCAyLCAxODIsIAotICAgIDcyLCAyLCAyNTQsIDE3OSwgOSwgMjIwLCAxMzcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMTIsIDMwLCA5LCAyMjAsIDEzNywgCi0gICAgNzcsIDIsIDE4MiwgNzIsIDIsIDEwOSwgMjMxLCAxOTcsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjI2LCAKLSAgICAyMzgsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgNjksIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgCi0gICAgMjEwLCAyMTIsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgNzYsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCAKLSAgICA3MiwgMiwgMjU0LCAyNTIsIDksIDIyMCwgMTM3LCAyMjgsIDY4LCAyLCAyMzQsIDE4MCwgMTQ2LCAxLCAyMzQsIDExNSwgMzYsIAotICAgIDExNywgMjM1LCAyOSwgMzYsIDExNywgMjI5LCA4NCwgMzYsIDExNywgMjUxLCA3NCwgMzYsIDExNywgMjI3LCAxNzEsIDM2LCAKLSAgICAxMTcsIDIxNSwgMTYwLCAzNiwgMTE3LCAyMjgsIDExNiwgMzYsIDExNywgMjE3LCAxNTMsIDM2LCAxMTcsIDIzMCwgMzAsIAotICAgIDM2LCAxMTcsIDIyNiwgMTA5LCAzNiwgMTE3LCAxOTQsIDM2LCAxMTcsIDIxMSwgMTE3LCAzNiwgMTE3LCAxNTMsIDM2LCAKLSAgICAxMTcsIDE1NiwgMzYsIDExNywgMjE0LCAxMDUsIDM2LCAxMTcsIDIzMiwgMTgyLCAzNiwgMTE3LCAyMzIsIDE5MSwgMzYsIAotICAgIDExNywgMjIyLCAxODIsIDM2LCAxMTcsIDIyOCwgOTgsIDM2LCAxMTcsIDIzNSwgMTUwLCAzNiwgMTE3LCAyMjAsIDEwNiwgCi0gICAgMzYsIDExNywgMjE4LCAyMjgsIDM2LCAxMTcsIDIyMiwgOTMsIDM2LCAxMTcsIDI0MiwgNjcsIDM2LCAxMTcsIDIzMywgMjM4LCAKLSAgICAzNiwgMywgMjM1LCAxNiwgMzYsIDMsIDIzNCwgOTgsIDM2LCAzLCAyMzQsIDg5LCAzNiwgMywgMjMzLCAyMjMsIDM2LCAzLCAKLSAgICAyMzMsIDE5NCwgMzYsIDMsIDIzNCwgMTg4LCAzNiwgMywgMjM0LCAxODcsIDM2LCAzLCAyMzQsIDI1MiwgMzYsIDMsIDIzNCwgCi0gICAgMzQsIDM2LCAzLCAyMzQsIDE2LCAzNiwgMywgMjM0LCAyMDEsIDM2LCAzLCAyMjksIDgxLCAzNiwgMywgMjI5LCAzMiwgMzYsIAotICAgIDMsIDIyOSwgMjgsIDM2LCAzLCAyMjgsIDI1MywgMzYsIDMsIDIyOCwgMjQ2LCAzNiwgMywgMjI5LCA2OSwgMzYsIDMsIDIyOSwgCi0gICAgNjcsIDM2LCAzLCAyMjksIDc4LCAzNiwgMywgMjI5LCA5LCAzNiwgMywgMjI5LCA0LCAzNiwgMywgMjI5LCA3MSwgMzYsIDMsIAotICAgIDI1MSwgNDAsIDM2LCAzLCAyNTAsIDU5LCAzNiwgMywgMjUwLCA0OSwgMzYsIDMsIDI0OSwgMTIwLCAzNiwgMywgMjQ5LCA5MSwgCi0gICAgMzYsIDMsIDI1MCwgMTk4LCAzNiwgMywgMjUwLCAxOTAsIDM2LCAzLCAyNTEsIDMwLCAzNiwgMywgMjQ5LCAyNDYsIDM2LCAzLCAKLSAgICAyNDksIDE4MiwgMzYsIDMsIDI1MCwgMjMwLCAzNiwgMywgMjI3LCAxNjgsIDM2LCAzLCAyMjcsIDE1MiwgMzYsIDMsIDIyNywgCi0gICAgMTQ3LCAzNiwgMywgMjI3LCAxMzIsIDM2LCAzLCAyMjcsIDEyNSwgMzYsIDMsIDIyNywgMTYwLCAzNiwgMywgMjI3LCAxNTksIAotICAgIDM2LCAzLCAyMjcsIDE2NSwgMzYsIDMsIDIyNywgMTM4LCAzNiwgMywgMjI3LCAxMzYsIDM2LCAzLCAyMjcsIDE2MywgMzYsIAotICAgIDMsIDIxNSwgMTU2LCAzNiwgMywgMjE1LCAxMzYsIDM2LCAzLCAyMTUsIDEzNSwgMzYsIDMsIDIxNSwgMTI0LCAzNiwgMywgCi0gICAgMjE1LCAxMjEsIDM2LCAzLCAyMTUsIDE1MiwgMzYsIDMsIDIxNSwgMTUxLCAzNiwgMywgMjE1LCAxNTUsIDM2LCAzLCAyMTUsIAotICAgIDEzNCwgMzYsIDMsIDIxNSwgMTMzLCAzNiwgMywgMjE1LCAxNTQsIDM2LCAzLCAyMjgsIDExNCwgMzYsIDMsIDIyOCwgMTAwLCAKLSAgICAzNiwgMywgMjI4LCA5OSwgMzYsIDMsIDIyOCwgODMsIDM2LCAzLCAyMjgsIDgyLCAzNiwgMywgMjI4LCAxMTAsIDM2LCAzLCAKLSAgICAyMjgsIDEwOSwgMzYsIDMsIDIyOCwgMTEzLCAzNiwgMywgMjI4LCA4NSwgMzYsIDMsIDIyOCwgODQsIDM2LCAzLCAyMjgsIAotICAgIDExMiwgMzYsIDMsIDIxNywgMTAyLCAzNiwgMywgMjE2LCAxMTgsIDM2LCAzLCAyMTYsIDEwNCwgMzYsIDMsIDIxNSwgMTE5LCAKLSAgICAzNiwgMywgMjE1LCA4NSwgMzYsIDMsIDIxNywgMjMsIDM2LCAzLCAyMTcsIDEyLCAzNiwgMywgMjE3LCA4MCwgMzYsIDMsIAotICAgIDExMiwgMzYsIDMsIDIxNiwgMTgsIDM2LCAzLCAyMTcsIDQyLCAzNiwgMywgMjI5LCAyMzAsIDM2LCAzLCAyMjgsIDIzOCwgCi0gICAgMzYsIDMsIDIyOCwgMjEzLCAzNiwgMywgMjI3LCAyNDIsIDM2LCAzLCAyMjcsIDE4MywgMzYsIDMsIDIyOSwgMTEyLCAzNiwgCi0gICAgMywgMjI5LCAxMDgsIDM2LCAzLCAyMjksIDIxNywgMzYsIDMsIDIyOCwgNzksIDM2LCAzLCAyMjgsIDY5LCAzNiwgMywgMjI5LCAKLSAgICAxOTIsIDM2LCAzLCAyMjYsIDkzLCAzNiwgMywgMjI1LCAxMTEsIDM2LCAzLCAyMjUsIDc0LCAzNiwgMywgMjI0LCAxNTMsIAotICAgIDM2LCAzLCAyMjQsIDEyMiwgMzYsIDMsIDIyNSwgMjI0LCAzNiwgMywgMjI1LCAyMTQsIDM2LCAzLCAyMjYsIDc1LCAzNiwgMywgCi0gICAgMjI1LCAxOSwgMzYsIDMsIDIyNCwgMjUyLCAzNiwgMywgMjI1LCAyMzgsIDM2LCAzLCAyMzEsIDI0MiwgMzYsIDMsIDIzMCwgCi0gICAgMjM1LCAzNiwgMywgMjMwLCAyMDYsIDM2LCAzLCAyMzAsIDEwNywgMzYsIDMsIDIzMCwgNTksIDM2LCAzLCAyMzEsIDk2LCAKLSAgICAzNiwgMywgMjMxLCA4NSwgMzYsIDMsIDIzMSwgMjA4LCAzNiwgMywgMjMwLCAxNjYsIDM2LCAzLCAyMzAsIDEzNywgMzYsIDMsIAotICAgIDIzMSwgMTQwLCAzNiwgMywgMjExLCAxMDMsIDM2LCAzLCAyMTEsIDgsIDM2LCAzLCAyMTAsIDI1NSwgMzYsIDMsIDIxMCwgCi0gICAgMjEyLCAzNiwgMywgMjEwLCAxODEsIDM2LCAzLCAyMTEsIDQ3LCAzNiwgMywgMjExLCA0NCwgMzYsIDMsIDIxMSwgODIsIDM2LCAKLSAgICAzLCAyMTAsIDI0NCwgMzYsIDMsIDIxMCwgMjI5LCAzNiwgMywgMjExLCA1NSwgMzYsIDMsIDIyMywgMTg3LCAzNiwgMywgCi0gICAgMjIzLCAzOCwgMzYsIDMsIDIyMiwgMjQyLCAzNiwgMywgMjIyLCAxNDIsIDM2LCAzLCAyMjIsIDExNCwgMzYsIDMsIDIyMywgCi0gICAgMTMxLCAzNiwgMywgMjIzLCAxMTEsIDM2LCAzLCAyMjMsIDE2OSwgMzYsIDMsIDIyMiwgMjEzLCAzNiwgMywgMjIyLCAxOTksIAotICAgIDM2LCAzLCAyMjMsIDEzOSwgMzYsIDMsIDIzMywgMTQwLCAzNiwgMywgMjMyLCAyNDcsIDM2LCAzLCAyMzIsIDIzMywgMzYsIAotICAgIDMsIDIzMiwgMTAzLCAzNiwgMywgMjMyLCA3OCwgMzYsIDMsIDIzMywgNjQsIDM2LCAzLCAyMzMsIDU2LCAzNiwgMywgMjMzLCAKLSAgICAxMTUsIDM2LCAzLCAyMzIsIDE2MiwgMzYsIDMsIDIzMiwgMTMzLCAzNiwgMywgMjMzLCA4MCwgMzYsIDMsIDIxNCwgMjYsIAotICAgIDM2LCAzLCAyMTMsIDE3NiwgMzYsIDMsIDIxMywgMTYyLCAzNiwgMywgMjEyLCAxMTYsIDM2LCAzLCAyMTIsIDEwOSwgMzYsIAotICAgIDMsIDIxMywgMjU1LCAzNiwgMywgMjEzLCAyNTAsIDM2LCAzLCAyMTQsIDIzLCAzNiwgMywgMjEzLCAxMzgsIDM2LCAzLCAKLSAgICAyMTMsIDEyNywgMzYsIDMsIDIxNCwgNSwgMzYsIDMsIDIzMiwgMTgwLCAzNiwgMywgMjMyLCAxNzUsIDM2LCAzLCAyMzIsIAotICAgIDE3NCwgMzYsIDMsIDIzMiwgMTcxLCAzNiwgMywgMjMyLCAxNzAsIDM2LCAzLCAyMzIsIDE3NywgMzYsIDMsIDIzMiwgMTc2LCAKLSAgICAzNiwgMywgMjMyLCAxNzksIDM2LCAzLCAyMzIsIDE3MywgMzYsIDMsIDIzMiwgMTcyLCAzNiwgMywgMjMyLCAxNzgsIDM2LCAKLSAgICAzLCAyMzIsIDE4OSwgMzYsIDMsIDIzMiwgMTg0LCAzNiwgMywgMjMyLCAxODMsIDM2LCAzLCAyMzIsIDE2NywgMzYsIDMsIAotICAgIDIzMiwgMTY2LCAzNiwgMywgMjMyLCAxODYsIDM2LCAzLCAyMzIsIDE4NSwgMzYsIDMsIDIzMiwgMTg4LCAzNiwgMywgMjMyLCAKLSAgICAxNjksIDM2LCAzLCAyMzIsIDE2OCwgMzYsIDMsIDIzMiwgMTg3LCAzNiwgMywgMjIyLCAxODAsIDM2LCAzLCAyMjIsIDE2OSwgCi0gICAgMzYsIDMsIDIyMiwgMTY4LCAzNiwgMywgMjIyLCAxNjIsIDM2LCAzLCAyMjIsIDE1NSwgMzYsIDMsIDIyMiwgMTc2LCAzNiwgCi0gICAgMywgMjIyLCAxNzUsIDM2LCAzLCAyMjIsIDE3OSwgMzYsIDMsIDIyMiwgMTY3LCAzNiwgMywgMjIyLCAxNjYsIDM2LCAzLCAKLSAgICAyMjIsIDE3OCwgMzYsIDMsIDIyOCwgOTYsIDM2LCAzLCAyMjgsIDkxLCAzNiwgMywgMjI4LCA5MCwgMzYsIDMsIDIyOCwgODcsIAotICAgIDM2LCAzLCAyMjgsIDg2LCAzNiwgMywgMjI4LCA5MywgMzYsIDMsIDIyOCwgOTIsIDM2LCAzLCAyMjgsIDk1LCAzNiwgMywgCi0gICAgMjI4LCA4OSwgMzYsIDMsIDIyOCwgODgsIDM2LCAzLCAyMjgsIDk0LCAzNiwgMywgMjM1LCAxNDYsIDM2LCAzLCAyMzUsIAotICAgIDExNCwgMzYsIDMsIDIzNSwgMTA3LCAzNiwgMywgMjM1LCA1NywgMzYsIDMsIDIzNSwgMzksIDM2LCAzLCAyMzUsIDEzMiwgCi0gICAgMzYsIDMsIDIzNSwgMTMwLCAzNiwgMywgMjM1LCAxNDEsIDM2LCAzLCAyMzUsIDc0LCAzNiwgMywgMjM1LCA2NSwgMzYsIDMsIAotICAgIDIzNSwgMTM1LCAzNiwgMywgMjIwLCAxMDAsIDM2LCAzLCAyMjAsIDM0LCAzNiwgMywgMjIwLCAyOSwgMzYsIDMsIDIxOSwgCi0gICAgMjI3LCAzNiwgMywgMjE5LCAyMTIsIDM2LCAzLCAyMjAsIDY1LCAzNiwgMywgMjIwLCA2MywgMzYsIDMsIDIyMCwgOTIsIDM2LCAKLSAgICAzLCAyMjAsIDksIDM2LCAzLCAyMjAsIDMsIDM2LCAzLCAyMjAsIDczLCAzNiwgMywgMjE4LCAyMjQsIDM2LCAzLCAyMTgsIAotICAgIDE5NCwgMzYsIDMsIDIxOCwgMTkwLCAzNiwgMywgMjE4LCAxODEsIDM2LCAzLCAyMTgsIDE3OCwgMzYsIDMsIDIxOCwgMTk5LCAKLSAgICAzNiwgMywgMjE4LCAxOTgsIDM2LCAzLCAyMTgsIDIyMywgMzYsIDMsIDIxOCwgMTg2LCAzNiwgMywgMjE4LCAxODUsIDM2LCAKLSAgICAzLCAyMTgsIDIwMSwgMzYsIDMsIDIyMiwgMzMsIDM2LCAzLCAyMTksIDE5MywgMzYsIDMsIDIxOSwgMTc3LCAzNiwgMywgCi0gICAgMjE4LCA4NCwgMzYsIDMsIDIxOCwgNSwgMzYsIDMsIDIyMSwgMTgzLCAzNiwgMywgMjIxLCAxNzIsIDM2LCAzLCAyMjIsIDE5LCAKLSAgICAzNiwgMywgMjE5LCA2MCwgMzYsIDMsIDIxOSwgNDIsIDM2LCAzLCAyMjEsIDIyMSwgMzYsIDMsIDI0MiwgNTMsIDM2LCAzLCAKLSAgICAyNDEsIDE4NywgMzYsIDMsIDI0MSwgMTY4LCAzNiwgMywgMjQwLCAyMjksIDM2LCAzLCAyNDAsIDIwOSwgMzYsIDMsIDI0MSwgCi0gICAgMjQ1LCAzNiwgMywgMjQxLCAyMjcsIDM2LCAzLCAyNDIsIDQzLCAzNiwgMywgMjQxLCA3NSwgMzYsIDMsIDI0MSwgNjAsIDM2LCAKLSAgICAzLCAyNDEsIDI1MywgMzYsIDMsIDIzMywgMjM3LCAzNiwgMywgMjMzLCAyMzYsIDM2LCAzLCAyMzMsIDIzMSwgMzYsIDMsIAotICAgIDIzMywgMjMwLCAzNiwgMywgMjMzLCAyMjcsIDM2LCAzLCAyMzMsIDIyNiwgMzYsIDMsIDIzMywgMjMzLCAzNiwgMywgMjMzLCAKLSAgICAyMzIsIDM2LCAzLCAyMzMsIDIzNSwgMzYsIDMsIDIzMywgMjI5LCAzNiwgMywgMjMzLCAyMjgsIDM2LCAzLCAyMzMsIDIzNCwgCi0gICAgMzYsIDMsIDIxOSwgMjMzLCAxNzUsIDExNywgNSwgMjExLCA2OCwgMTc1LCAxMTcsIDUsIDIyMywgMTU4LCAxNzUsIDExNywgCi0gICAgNSwgMjIzLCA4MSwgOTgsIDEsIDIxNSwgMjgsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAxNzYsIDcwLCAxMTcsIDUsIDI0OSwgCi0gICAgMjQxLCAyMzQsIDEzOCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIzNCwgMzQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzQsIAotICAgIDExMSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIyOSwgOSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDI1MSwgNDEsIDcwLCAKLSAgICAxMTcsIDUsIDI0OSwgMjQxLCAyNTAsIDE2NSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDI0OSwgMjQ2LCA3MCwgMTE3LCA1LCAKLSAgICAyNDksIDI0MSwgMjUwLCA5NCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIyNywgMTM4LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgCi0gICAgMjQ4LCAyMjksIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTUsIDE0NSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDI0NywgMTUzLCAKLSAgICA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjE1LCAxNDAsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAxOTgsIDcwLCAxMTcsIDUsIAotICAgIDI0OSwgMjQxLCAyMTcsIDEwNiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNiwgMjA5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgCi0gICAgMTEyLCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjE2LCAxNTcsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjgsIDc5LCA3MCwgCi0gICAgMTE3LCA1LCAyNDksIDI0MSwgMjUyLCAxOTksIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjUsIDE1MCwgNzAsIDExNywgNSwgCi0gICAgMjQ5LCAyNDEsIDIyNSwgMTksIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjUsIDEyNCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDIzMCwgMTY2LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjEwLCAyNDQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjIsIDIxMywgCi0gICAgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIzMiwgMTYyLCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjEzLCAxMzgsIDcwLCAxMTcsIAotICAgIDUsIDI0OSwgMjQxLCAyMjAsIDEwNCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxOCwgMjI1LCA3MCwgMTE3LCA1LCAyNDksIAotICAgIDI0MSwgMjA2LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTYyLCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjMzLCAxNDEsIDcwLCAKLSAgICAyNSwgNSwgMjQ5LCAyNDEsIDIyNCwgOTEsIDcwLCAyMzUsIDI1MCwgMjUsIDUsIDI0OSwgMjQxLCAyMjQsIDMzLCA3MCwgCi0gICAgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjIyLCAxMDIsIDcwLCAyMzUsIDI1MCwgMjUsIDUsIDI0OSwgMjQxLCAyMjIsIAotICAgIDk1LCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjI0LCA3MiwgNzAsIDI1LCA1LCAyMjYsIDIwOCwgNzAsIDI1LCAKLSAgICA1LCAyNTUsIDQzLCAxNDEsIDEsIDI1MiwgNywgMjI5LCA4MiwgMTQxLCAxLCAyNTIsIDcsIDIyOSwgMzIsIDE0MSwgMSwgCi0gICAgMjUyLCA3LCAyMjgsIDI1MywgMTQxLCAxLCAyNTIsIDcsIDIyOSwgNjksIDE0MSwgMSwgMjUyLCA3LCAyMjksIDksIDU2LCAxLCAKLSAgICAyNTIsIDcsIDIyOSwgODIsIDU2LCAxLCAyNTIsIDcsIDIyOSwgMzIsIDU2LCAxLCAyNTIsIDcsIDIyOCwgMjUzLCA1NiwgMSwgCi0gICAgMjUyLCA3LCAyMjksIDY5LCA1NiwgMSwgMjUyLCA3LCAyMjksIDksIDU2LCAxLCAyNTQsIDIwMywgMjUwLCAxOTgsIDU2LCAxLCAKLSAgICAyNTQsIDIwMywgMjE1LCAxMTksIDU2LCAxLCAyNTQsIDIwMywgMTEyLCA1NiwgMSwgMjU0LCAyMDMsIDIyNiwgMTA5LCA1OCwgCi0gICAgMSwgMjQ1LCAyOCwgMjQ1LCAyNywgMjQ5LCAxOTAsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyNywgMjQ1LCAyOCwgMjQ5LCAKLSAgICAxOTAsIDEzOCwgMTMwLCAKKyAgICAwLCAyMTEsIDIyOCwgMjQwLCAyMTIsIDgyLCAyMTcsIDMxLCA4MiwgNDIsIDU0LCAyNDMsIDk3LCA1NCwgMjE4LCAyNDYsIAorICAgIDU0LCAyNTAsIDIzNSwgMjUwLCAxNjAsIDQ5LCAyMTksIDc2LCA1MCwgMjE5LCA3NiwgMjUwLCA1OSwgOTEsIDU0LCAyNDUsIAorICAgIDIzMywgMjM1LCAyMTksIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDAsIDE3LCAyMDIsIDg0LCAxNywgMTA1LCAxNywgMTA4LCAKKyAgICAxNywgMTQ3LCAxNywgMTQ5LCAxNywgMTcwLCAxNywgMTk1LCAxNywgMjEzLCAxMTEsIDE3LCAxOTksIDE3LCAyMjIsIDYzLCAKKyAgICAyNDUsIDI0MiwgMjEzLCAxNDMsIDIyNywgMTc5LCA1NCwgMjQxLCAzNSwgNTQsIDIzNywgMjQ3LCA1NCwgMjE3LCA0NywgODIsIAorICAgIDI0NSwgMjMxLCAyNTAsIDQ5LCA4LCA2LCAxLCA2MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDgsIDYsIDEsIDI0NywgMTI1LCA4LCAKKyAgICA2LCAxLCAyNDUsIDUxLCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzQsIDgsIDYsIDEsIDIzOSwgNzUsIDgsIDYsIDEsIAorICAgIDIzNywgMTcxLCA4LCA2LCAxLCA3NSwgOCwgNiwgMSwgMjMwLCAxODQsIDgsIDYsIDEsIDIzMCwgNTQsIDgsIDYsIDEsIDE1OSwgCisgICAgOCwgNiwgMSwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTYzLCA4LCA2LCAxLCA3OCwgOCwgNiwgMSwgMjE5LCAxODQsIDgsIAorICAgIDYsIDEsIDIxNywgMTM0LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDE5NCwgOCwgNiwgMSwgMjEwLCA2OSwgOCwgNiwgMSwgCisgICAgNjgsIDgsIDYsIDEsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMDQsIDE0NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDgsIDYsIDEsIAorICAgIDIwMywgMTI0LCA4LCA2LCAxLCAyMDIsIDE1OSwgNDksIDUxLCAxNTUsIDIxNiwgNzQsIDIxMiwgMCwgNTAsIDUxLCAxNTUsIAorICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAxMjQsIDIyNywgMTE0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIDgsIDUsIDEsIDYzLCA4LCA1LCAKKyAgICAxLCAyNDksIDI1NSwgOCwgNSwgMSwgMjQ3LCAxMjUsIDgsIDUsIDEsIDI0NSwgNTEsIDgsIDUsIDEsIDc0LCA4LCA1LCAxLCAKKyAgICAyNDAsIDE3NCwgOCwgNSwgMSwgMjM5LCA3NSwgOCwgNSwgMSwgMjM3LCAxNzEsIDgsIDUsIDEsIDc1LCA4LCA1LCAxLCAyMzAsIAorICAgIDE4NCwgOCwgNSwgMSwgMjMwLCA1NCwgOCwgNSwgMSwgMTU5LCA4LCA1LCAxLCAyMjYsIDE4NSwgOCwgNSwgMSwgMjIzLCAKKyAgICAxNjMsIDgsIDUsIDEsIDc4LCA4LCA1LCAxLCAyMTksIDE4NCwgOCwgNSwgMSwgMjE3LCAxMzQsIDgsIDUsIDEsIDE0NiwgOCwgCisgICAgNSwgMSwgMTk0LCA4LCA1LCAxLCAyMTAsIDY5LCA4LCA1LCAxLCA2OCwgOCwgNSwgMSwgMjA2LCAxNjQsIDgsIDUsIDEsIAorICAgIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDMsIDE5NiwgOCwgNSwgMSwgMjAzLCAxMjQsIDgsIDUsIDEsIDIwMiwgMTU5LCA0OSwgCisgICAgMjQ1LCA5MywgMTU1LCA4MCwgMjI3LCAxMTQsIDUwLCAyNDUsIDkzLCAxNTUsIDIwOCwgMjI3LCAyMjEsIDE5MCwgMjExLCAKKyAgICAyMjgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDI0NiwgMjIwLCA1NCwgMjE4LCAyMCwgNTQsIDI0NSwgOTIsIDU0LCAyMDMsIAorICAgIDQzLCA1NCwgMjQ3LCAyMDMsIDE0MiwgMjE0LCAxNjgsIDU0LCAyNDMsIDIzMSwgMjQ1LCAxNjksIDU0LCAyNDAsIDQxLCAKKyAgICAyMTksIDI0MCwgMjMxLCAzMSwgMjI3LCAyMTcsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIyMSwgMTY2LCA1NCwgCisgICAgMjEyLCA3LCAyMzUsIDIyMCwgMjE2LCAxMjksIDU0LCAyMjUsIDE3MCwgMjQ0LCA1NSwgNTQsIDIxOCwgNzUsIDU0LCAyMTAsIAorICAgIDE5OSwgMTA4LCAyMTAsIDE5OSwgMTQ3LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDIyNCwgMTUzLCA1NCwgMjE4LCAxMjYsIDU0LCAKKyAgICAxMDEsIDI0MywgODUsIDI0NiwgMjMxLCAyMTAsIDE5OSwgMTA1LCAyMjUsIDgwLCAyMTksIDI0MCwgMjMxLCAzMSwgMjE2LCAKKyAgICAxMSwgNTIsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIxNywgNTUsIDIwNCwgCisgICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDIzMCwgMjM5LCAKKyAgICAyMTcsIDQ3LCA4MiwgOCwgNiwgMSwgMzQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMTY1LCA4LCA2LCAxLCAzNCwgCisgICAgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMzQsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIAorICAgIDM0LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDI1MSwgMTA5LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzEsIAorICAgIDgsIDYsIDEsIDE4OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgCisgICAgNTIsIDgsIDYsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgCisgICAgMjM1LCAyMDYsIDMsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAKKyAgICAyNDMsIDIzMSwgOCwgNiwgMSwgMjQwLCAyNDMsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgCisgICAgMTU4LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MiwgOCwgNiwgCisgICAgMSwgMTU4LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMjIzLCAyMjQsIDU0LCA4LCA2LCAxLCAKKyAgICAxNTgsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDE2NSwgOCwgNiwgMSwgCisgICAgMTA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTY1LCA4LCAKKyAgICA2LCAxLCAyMDksIDQwLCA4LCA1LCAxLCAyMTMsIDU3LCAxOTQsIDgsIDUsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCisgICAgMzQsIDMsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMzQsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAyNTEsIDEwOSwgOCwgNSwgCisgICAgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIAorICAgIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzUsIAorICAgIDIwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIAorICAgIDUyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDI0MCwgMjQzLCA4LCA1LCAxLCAyMjMsIDE2NCwgCisgICAgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAKKyAgICAxNTgsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIAorICAgIDI0MywgMTM3LCA1NCwgOCwgNSwgMSwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCisgICAgMTA2LCAzLCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNSwgCisgICAgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgNSwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0MywgMjMxLCA4LCAKKyAgICA2LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMzQsIDMsIDI0NywgCisgICAgMjE0LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAzNCwgMywgCisgICAgMjIwLCA2MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNiwgMSwgCisgICAgMjQ3LCAxMjYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyNDcsIDEyNiwgCisgICAgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ3LCAyOSwgCisgICAgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDUsIDEsIAorICAgIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgCisgICAgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTg4LCAzLCAyNDcsIAorICAgIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE4OCwgMywgCisgICAgNzAsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTg4LCAKKyAgICAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDUsIAorICAgIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzksIDc2LCAKKyAgICAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA3MCwgNTUsIDgsIAorICAgIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjM3LCAKKyAgICAxNzIsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgOTUsIAorICAgIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA5NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzUsIAorICAgIDIwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAorICAgIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDIxNCwgCisgICAgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAKKyAgICAyMzUsIDIwNiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDMsIDg0LCA3NSwgOCwgNiwgMzIsIDIzMSwgODEsIDgsIDUsIDMyLCAKKyAgICAyMzEsIDgxLCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIAorICAgIDYsIDEsIDIzMCwgNTUsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAKKyAgICAyMzEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDYsIDEsIDIyOCwgCisgICAgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgCisgICAgMjQ3LCAyOSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgCisgICAgODUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgODUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNSwgCisgICAgMSwgMjI4LCAxMzEsIDMsIDk1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTY1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTY1LCAKKyAgICA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgCisgICAgMjIzLCAxNjQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgCisgICAgMjE3LCAyNTEsIDI0NywgMTM3LCAyNTAsIDE2MCwgOCwgNiwgMSwgMjQxLCA3OCwgOCwgNSwgMSwgMjQxLCA3OCwgOCwgNiwgCisgICAgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIAorICAgIDIxNCwgOCwgNSwgMSwgMTU4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTU4LCAzLCA1MiwgMTY1LCA4LCA1LCAxLCAxNTgsIAorICAgIDMsIDUyLCAxNjUsIDgsIDYsIDMyLCAyMjAsIDczLCA4LCA1LCAzMiwgMjIwLCA3MywgOCwgNiwgMSwgMjE3LCAxLCAzLCAKKyAgICAxNjUsIDgsIDUsIDEsIDIxNywgMSwgMywgMTY1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTcsIAorICAgIDEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNywgMSwgMywgMjQ3LCAyOSwgCisgICAgOCwgNiwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAorICAgIDI0NiwgNTIsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NiwgMjMxLCA4LCAKKyAgICA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjE1LCAKKyAgICA5NCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NiwgCisgICAgMjMxLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKKyAgICAyMTAsIDcwLCAzLCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDUsIAorICAgIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAKKyAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCisgICAgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNiwgMSwgMTA2LCAzLCA1MiwgMTY1LCAKKyAgICA4LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTA2LCAzLCAyMjAsIAorICAgIDYyLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDYsIAorICAgIDEsIDIwMywgMTI1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjAzLCAKKyAgICAxMjUsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTY1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMTY1LCAKKyAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDIsIAorICAgIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDE2MywgMTk0LCA4LCA1LCAKKyAgICAxLCA2NiwgMywgOTUsIDgsIDYsIDEsIDY2LCAzLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgNjYsIAorICAgIDMsIDIwOCwgMTQyLCA4LCA2LCAxLCAxNDMsIDE5NSwgOCwgNSwgMSwgMTQzLCAxOTUsIDgsIDYsIDEsIDE3MSwgNzgsIDgsIAorICAgIDYsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDYsIDEsIDI1MSwgODQsIDI0NSwgCisgICAgNTEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIAorICAgIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjQ0LCAzNywgOCwgNiwgMSwgMjE2LCA3MywgNzQsIAorICAgIDgsIDYsIDEsIDIxNCwgMTkyLCA4LCA2LCAxLCAxNzEsIDc0LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgMTEzLCA4LCA1LCAxLCAKKyAgICAyNDAsIDE3NSwgMywgMTEzLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxMTMsIDgsIDYsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAKKyAgICAyMzUsIDI1NSwgOCwgNiwgMSwgMjMwLCAyMzAsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgCisgICAgMywgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxMTMsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDUsIDEsIAorICAgIDIyOCwgMjYsIDMsIDk1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA0OSwgCisgICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDYsIDEsIDE1OCwgMywgMTAxLCAyMDgsIAorICAgIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTMsIDgsIDYsIDEsIDIyMCwgCisgICAgNTcsIDgsIDUsIDEsIDIyMCwgNTcsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAxMTMsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAKKyAgICAxMTMsIDgsIDEsIDIwMiwgMjE2LCA4LCA2LCAxLCAxNDMsIDEwOCwgOCwgNSwgMSwgMTQzLCAxMDgsIDgsIDYsIDEsIDI0MSwgCisgICAgNywgOCwgMSwgMjE2LCA3MywgMjQxLCA4LCAyMjcsIDE0LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCAKKyAgICA2LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDExMywgOCwgNiwgMSwgMjEwLCA3MCwgMywgCisgICAgMjE2LCA3OSwgMTEzLCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1MywgOCwgNiwgCisgICAgMSwgMjA2LCAyMTYsIDgsIDYsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDUsIAorICAgIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA5NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDk1LCAKKyAgICA4LCA2LCAxLCAyNDAsIDE3NywgOCwgNiwgMSwgMjQwLCAxNzgsIDIxNiwgNzIsIDgsIDUsIDEsIDI0MCwgMTc4LCAyMTYsIAorICAgIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjA5LCAyNDgsIDgsIDEsIDEyMCwgMywgOTUsIDgsIDYsIDEsIDE0MywgMTcwLCAKKyAgICA4LCA1LCAxLCAxNDMsIDE3MCwgOCwgMSwgMjMwLCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMDMsIAorICAgIDE5OSwgOCwgMSwgMjQ0LCAzMCwgMjQ2LCAyNywgOCwgMSwgMjI3LCAyNTQsIDI0NiwgMjcsIDgsIDEsIDI1MCwgMjQ4LCAKKyAgICAyNDYsIDI3LCA4LCAxLCAyMTYsIDc5LCAyNDYsIDI3LCA4LCA2LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIDYsIDEsIAorICAgIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIAorICAgIDYsIDEsIDIyNywgODEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjI3LCA4MSwgOCwgCisgICAgNiwgMSwgMjIyLCA0OSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDUsIDEsIDIzMCwgMTg0LCA4LCA1LCAxLCAyMjIsIDQ5LCA4LCAKKyAgICA2LCAxLCAzNCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIAorICAgIDI5LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKKyAgICAxNTgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDcsIDI5LCA4LCAKKyAgICA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIAorICAgIDE3MCwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIAorICAgIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIAorICAgIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgCisgICAgMjQzLCAyMzIsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDc0LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzIsIAorICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCA3MCwgCisgICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDcwLCA4NywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyNTEsIAorICAgIDExMCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgCisgICAgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDk1LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzksIAorICAgIDc2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDcsIAorICAgIDI5LCA4LCA2LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTU4LCAzLCAKKyAgICAyMjAsIDYzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKKyAgICAyNDAsIDE3OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzMCwgMTg1LCAKKyAgICAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDIsIDAsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTU5LCA4LCA1LCAKKyAgICAxLCAyNDIsIDAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTY1LCA4LCA2LCAxLCAKKyAgICAyMzUsIDI1MiwgOCwgNiwgMSwgMjAzLCAxOTksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCisgICAgMjIzLCAxNjQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAKKyAgICAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAyNTEsIDExMCwgMywgMTY1LCA4LCA1LCAxLCAyNTEsIAorICAgIDExMCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDIxMSwgMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjExLCAzMiwgCisgICAgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgCisgICAgNiwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgCisgICAgNiwgMSwgMTg4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIAorICAgIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzNSwgCisgICAgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIzNSwgCisgICAgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAorICAgIDYsIDEsIDE1OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAKKyAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTcsIAorICAgIDEsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE3LCAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIxNywgMSwgMywgCisgICAgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMTA2LCAKKyAgICAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDIzMCwgCisgICAgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAorICAgIDI0NSwgMjM0LCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjQ1LCAyMzQsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAKKyAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjAyLCAyMzQsIDgsIDUsIAorICAgIDEsIDIwMiwgMjM0LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgCisgICAgMjksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAxNjMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ1LCAKKyAgICA5NSwgOCwgNiwgMSwgMjE5LCAyMTYsIDgsIDUsIDEsIDIxOSwgMjE2LCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCAKKyAgICA1LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCA2LCAxLCAzNCwgMywgNzAsIDU1LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU1LCAKKyAgICA4LCA2LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAxNTgsIDMsIAorICAgIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCisgICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjI1LCAxNzAsIAorICAgIDgsIDYsIDEsIDE1OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgCisgICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjAzLCAKKyAgICAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAKKyAgICAyNDUsIDk1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ1LCA5NSwgOCwgCisgICAgNSwgMSwgMjQzLCA4NCwgMjMwLCAxODQsIDgsIDUsIDEsIDI0NCwgMTMwLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjE3LCA2NiwgCisgICAgMjQzLCAxOTEsIDgsIDYsIDEsIDM0LCAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDk1LCA4LCA1LCAxLCAyNDcsIAorICAgIDEyNiwgMywgOTUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0MywgMjI4LCA5NSwgCisgICAgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIAorICAgIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA2LCAxLCAKKyAgICA2NiwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMTQyLCA4LCA2LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjQsIDgsIDYsIDEsIDE4OCwgCisgICAgMywgOTUsIDgsIDUsIDEsIDE4OCwgMywgOTUsIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAxODUsIAorICAgIDMsIDk1LCA4LCA2LCAxLCA1LCAyMTcsIDEzNSwgMywgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTcsIDEzNSwgMywgCisgICAgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA2LCAKKyAgICAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDYzLCA4LCAKKyAgICA1LCAxLCAyNTEsIDIsIDgsIDUsIDEsIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDY2LCAzLCAxMTMsIDgsIDUsIDEsIAorICAgIDE3MSwgNzgsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMDksIDI0OCwgOCwgCisgICAgNSwgMSwgMjQ1LCA1MiwgMywgMTEzLCA4LCA1LCAxLCAyMTYsIDczLCA3NCwgOCwgNSwgMSwgMjE0LCAxOTIsIDgsIDUsIDEsIAorICAgIDIxNCwgMTkzLCAzLCAxMTMsIDgsIDUsIDEsIDE3MSwgNzQsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAorICAgIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAxMTMsIDgsIDUsIDEsIDI0NiwgMTYsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAorICAgIDI0MywgODQsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA1LCAxLCAxMzIsIDIzOSwgCisgICAgNzUsIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDgsIDUsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAyMTYsIDE4MiwgMjM2LCA1MywgCisgICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMTEzLCA4LCA1LCAxLCAyMzcsIDMyLCAKKyAgICAzLCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAyMzAsIDgsIDEsIDUsIDYsIDc1LCA4LCAKKyAgICA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA1LCAKKyAgICAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMjcsIDE2NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgCisgICAgMTg1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjI2LCAxODYsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAKKyAgICAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgMTEzLCAKKyAgICA4LCAxLCA1LCA2LCAyMjMsIDE2MywgOCwgNSwgMSwgMjQ4LCAyMjUsIDc4LCA4LCAxLCA1LCA2LCAyMjAsIDczLCA4LCA1LCAKKyAgICAxLCAyNDYsIDE2LCAyMjAsIDM2LCA4LCA1LCAxLCAyMTgsIDE5MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDE0NiwgOCwgNSwgMSwgCisgICAgMjA3LCAxNzQsIDIxNywgMSwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIxNywgMSwgMywgMTEzLCA4LCAKKyAgICA1LCAxLCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIAorICAgIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDUsIDEsIDIxNiwgNzMsIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDEsIDUsIDYsIAorICAgIDE0NiwgOCwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTEzLCA4LCA1LCAxLCAyNDEsIAorICAgIDcsIDgsIDUsIDEsIDI0MywgODQsIDIzMCwgMTg1LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCA4LCA1LCAxLCAyMTEsIDE3NCwgCisgICAgMjE2LCA3MywgMjQxLCA3LCA4LCA1LCAxLCAyNDEsIDgsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTAsIDY5LCAKKyAgICA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMTQyLCA4LCA1LCAxLCAyMDYsIDIxNiwgCisgICAgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDExMywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMDcsIAorICAgIDE3NCwgMjA0LCAxNDQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDMsIDEyNCwgOCwgMSwgNSwgNiwgMjAzLCAxMjQsIDgsIDUsIAorICAgIDEsIDIwMiwgMTYwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAKKyAgICAyNDAsIDE3NywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NSwgOTUsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDEsIAorICAgIDIxOCwgMTk5LCAyMDUsIDE4NiwgMjM5LCAxMjYsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKKyAgICAyMTEsIDQwLCAyNDcsIDEyNSwgOCwgMSwgMjQ4LCA3MCwgMjQ2LCAyNywgOCwgMSwgNSwgNiwgMjQ5LCAyNTUsIDgsIDUsIDEsIAorICAgIDI0NiwgMTYsIDE3MSwgNzQsIDgsIDEsIDUsIDYsIDIzOSwgNzYsIDMsIDExMywgOCwgMSwgNSwgNiwgMjM3LCAxNzEsIDgsIAorICAgIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzMCwgNTQsIDgsIDEsIDUsIDYsIDE1OSwgCisgICAgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDExMywgOCwgMSwgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDEsIDIxNiwgNzMsIAorICAgIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyNDQsIDMsIDI0MywgCisgICAgMTkxLCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDgsIDIyLCAyNDMsIDE5MSwgCisgICAgOCwgNSwgMSwgMjA5LCAxMzcsIDI0MywgMTkxLCA4LCA1LCAxLCAyMDksIDE5NCwgMjQzLCAxOTIsIDMsIDI0NSwgOTUsIDgsIAorICAgIDUsIDEsIDI0MCwgMzksIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDI0MSwgMjQzLCAxOTEsIDgsIDUsIDEsIDIyNiwgMTg3LCAKKyAgICAyNDMsIDE5MSwgOCwgMSwgMjQ4LCA3MCwgMjE4LCAyNDUsIDgsIDEsIDI0OCwgNzgsIDIxOCwgMjQ1LCA4LCA1LCAxLCAyMDcsIAorICAgIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQxLCAyNSwgCisgICAgMjA5LCAyNDgsIDY1LCAxLCA1LCAyMzcsIDE3MSwgNjUsIDEsIDUsIDIzNywgMTcyLCAzLCAxMTMsIDY1LCAxLCA1LCAyMzAsIAorICAgIDE4NCwgNjUsIDEsIDUsIDE0NiwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjE3LCAxLCAKKyAgICAzLCAxMTMsIDY1LCAxLCA1LCA2LCAyMzAsIDIzOSwgMTQ2LCA2NSwgMSwgNSwgMjA0LCAxNDQsIDY1LCAxLCA1LCAyMDMsIAorICAgIDEyNCwgNjUsIDEsIDIxNywgMjM2LCA2NSwgMSwgNTIsIDIxNywgMjM2LCA2NSwgMSwgMjA3LCAxNzQsIDI0NSwgMjMzLCA2NSwgCisgICAgMSwgMjUwLCAxNjAsIDY1LCAxLCAyMTYsIDczLCAyNDUsIDIzMywgNjUsIDEsIDUwLCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgCisgICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA2NSwgMSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCAKKyAgICA2MSwgNjUsIDEsIDQ5LCAyNTAsIDk0LCA2NSwgMSwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMTIsIDI1MCwgOTQsIDY1LCAxLCAKKyAgICAxMjEsIDI1MCwgOTQsIDY1LCAxLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjQ3LCAyOSwgNjUsIDEsIDgwLCAyMjcsIDExNCwgNjUsIAorICAgIDEsIDIyNSwgMTcwLCA2NSwgMSwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgCisgICAgMTI0LCA4MCwgMjI3LCAxMTQsIDY1LCAxLCAxMjQsIDIyNSwgMTcwLCA2NSwgMSwgMTI0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIAorICAgIDY1LCAxLCAxMjQsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIwOCwgODIsIDI0NSwgMjQyLCA2NSwgMSwgMTYyLCAKKyAgICAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDI0NiwgMjE2LCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDI0NiwgMjE2LCAKKyAgICA0OSwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDExMiwgMjEwLCAzLCA2NSwgMSwgMTIxLCAyMTAsIDMsIDY1LCAxLCA5MSwgNTQsIAorICAgIDY1LCAxLCAyMjQsIDEwMywgNTQsIDI0NywgMjE0LCA3MCwgNTUsIDIxNSwgMjUzLCA1NSwgMjIwLCA2MiwgNSwgMjA4LCAKKyAgICAyMjcsIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMTYsIDU4LCAxMTMsIDY1LCAxLCAyNDUsIDEzMSwgMjUxLCAKKyAgICAxMzgsIDY1LCAxLCA1LCAyMzgsIDIzNSwgNjUsIDEsIDUsIDE1OSwgNjUsIDEsIDUsIDE5NCwgNjUsIDEsIDUsIDIwMywgCisgICAgMTk2LCA2NSwgMSwgNSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDI0MCwgMTk4LCAxNDMsIDE0MiwgNjUsIAorICAgIDEsIDEzOCwgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDE0MywgMTQyLCA2NSwgMSwgCisgICAgMjQwLCAxOTcsIDE0MywgMTQyLCA2NSwgMSwgMjAzLCAxLCAyNDQsIDI3LCAxNDMsIDgyLCA2NSwgMSwgMjAzLCA3NywgMjQ0LCAKKyAgICAyNywgMTQzLCA4MiwgNjUsIDEsIDIwNSwgMTg0LCA2NSwgMSwgMjA2LCAyNTEsIDY1LCAxLCA1MiwgMjUwLCAxNjAsIDY1LCAKKyAgICAxLCAxMjQsIDEyMSwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCA0OSwgMjUwLCA5NCwgCisgICAgNjUsIDEsIDEyNCwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDIxNSwgMjUyLCA2NSwgMSwgMTAxLCAyMzcsIDI1NCwgMjUxLCAKKyAgICAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyNTEsIDEyNiwgMjUxLCAKKyAgICAxMzgsIDY1LCAxLCAxMjQsIDIwOCwgMjI3LCA2NSwgMSwgMjE2LCAxODgsIDI0NSwgMjQyLCA2NSwgMSwgMjQ4LCAxNDIsIAorICAgIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQ4LCAxNDIsIDEyNCwgMjA4LCAKKyAgICAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMjQsIDIwOCwgMTYxLCA2NSwgMSwgMjEzLCAzNCwgNjUsIDEsIDE3MSwgMjEzLCAzNCwgCisgICAgNjUsIDEsIDEyNCwgNDksIDQ3LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgCisgICAgMjQ2LCA1MywgMjUxLCAxMzgsIDM5LCAyMDgsIDIyNywgMzksIDIyNSwgMTcwLCAzOSwgMjE5LCAxOTgsIDM5LCAyNDcsIAorICAgIDIxNCwgMzksIDcwLCA1NSwgMzksIDI0MywgMjMxLCAzOSwgMjM2LCAxMTYsIDU1LCAzOSwgMjE1LCAyNTMsIDU1LCAzOSwgCisgICAgNTIsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIDI0NywgMjksIDM5LCA4MCwgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDgwLCAKKyAgICAyMjcsIDExNSwgNTUsIDM5LCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjQ3LCA1MiwgMzksIDIzMCwgMjM5LCAyNDcsIAorICAgIDIxNCwgMzksIDIwNywgMTc0LCAyNDUsIDIzNCwgNTUsIDM5LCAyNDUsIDIzNCwgNTUsIDM5LCAyMTYsIDczLCAyNDUsIDIzNCwgCisgICAgNTUsIDM5LCAyNDUsIDIzNCwgODcsIDIxNiwgMTYsIDM5LCAyMzcsIDI1NCwgMjUxLCAxMzksIDU2LCAzOSwgMjUxLCAxMjYsIAorICAgIDI1MSwgMTM5LCA1NiwgMzksIDQ5LCAyMTAsIDQsIDU2LCAzOSwgNTAsIDIxMCwgNCwgNTYsIDM5LCA0OSwgMjUwLCAyMTgsIAorICAgIDU1LCAzOSwgMjM2LCA1MywgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NiwgMzksIDExMiwgMjEwLCA0LCA1NiwgMzksIDEyMSwgCisgICAgMjEwLCA0LCA1NiwgMzksIDkxLCAyLCA1NiwgMzksIDIyNCwgMTAzLCAyLCA1NiwgMzksIDIxOSwgMTQwLCAyMzYsIDExNiwgCisgICAgNTYsIDM5LCAyMTYsIDc5LCAyMzYsIDExNiwgNTYsIDM5LCA3MCwgNTYsIDM5LCAyNDMsIDIzMiwgNTYsIDM5LCAyMTUsIAorICAgIDI1MywgNTYsIDM5LCAyNDUsIDIzNCwgNTYsIDM5LCAyNDYsIDIzMSwgMzksIDIyMCwgNjIsIDM5LCA4MCwgMjI3LCAxMTUsIAorICAgIDU2LCAzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgMjMwLCAyMzksIDUyLCAyNTAsIDEyNywgNTYsIDM5LCAyNDcsIDMwLCA1NiwgCisgICAgMzksIDI0NiwgNTMsIDI1MSwgMTM5LCA1NiwgMzksIDI0NywgMjE1LCA1NiwgMzksIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIAorICAgIDM5LCAyMDgsIDIyOCwgNTYsIDM5LCAyMjUsIDE3MSwgNTYsIDM5LCAxMjQsIDIyNywgMTE0LCAzOSwgNTIsIDEyNCwgMjI3LCAKKyAgICAxMTQsIDM5LCAyMDgsIDIyOCwgMjE5LCAxOTksIDM5LCAyMTIsIDIyOCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAxNjMsIAorICAgIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCAxNjMsIDIxMiwgMSwgMjE5LCAKKyAgICAxOTksIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgNTEsIDU2LCAKKyAgICAzOSwgMjE0LCAxNzYsIDU2LCAzOSwgMjAzLCAxOTcsIDU1LCAzOSwgODAsIDIwOCwgMjI3LCAzOSwgNTIsIDIxOSwgMTk4LCAKKyAgICAzOSwgMjM3LCAyNTQsIDE0MywgODIsIDM5LCAyNTEsIDEyNiwgMTQzLCA4MiwgMzksIDMwLCAyMTgsIDIzOSwgMzksIDMwLCAKKyAgICAyMjgsIDI1MiwgMzksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDM5LCAzMCwgMjAyLCAyMjEsIDM5LCAyNDcsIDIwOCwgNTUsIAorICAgIDM5LCAyNDEsIDM1LCAyLCA1NiwgMzksIDUyLCA4MCwgMjI3LCAxMTUsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCA1NiwgMzksIAorICAgIDIyMSwgMTY2LCAyMDgsIDIyOCwgNTUsIDM5LCAyMzYsIDEyMiwgNTUsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU1LCAKKyAgICAzOSwgNDksIDUwLCA1MywgNTYsIDM5LCAxNzcsIDUzLCA1NiwgMzksIDIzOCwgNCwgMjMwLCA5NiwgMzksIDUwLCAyNTAsIAorICAgIDk1LCA1NSwgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NSwgMzksIDI0MCwgMzYsIDM5LCAyMDMsIDE5NywgNTYsIDM5LCA0OSwgCisgICAgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDExMiwgMjUwLCA5NSwgNTYsIAorICAgIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCA3MCwgODcsIDIxNiwgMTYsIDM5LCAyNTAsIDYwLCA1NiwgMzksIDUyLCAKKyAgICAyMTUsIDI1MywgNTYsIDM5LCAyMDIsIDMwLCA1NSwgMzksIDUyLCAyNDcsIDIxNSwgNTYsIDM5LCA1MiwgMjQ3LCAyMTQsIAorICAgIDM5LCA1MiwgMjI1LCAxNzAsIDM5LCA1MiwgMjI1LCAxNzEsIDU2LCAzOSwgNTIsIDIwOCwgMjI3LCAzOSwgNTIsIDIzMCwgCisgICAgMjM5LCAyNDcsIDIxNCwgMzksIDUyLCA4NiwgNTMsIDU2LCAzOSwgOCwgNSwgMSwgNjMsIDM5LCA4LCA1LCAxLCA3NCwgMzksIAorICAgIDgsIDUsIDEsIDc1LCAzOSwgOCwgNSwgMSwgNzgsIDM5LCA4LCA1LCAxLCA2OCwgMzksIDgsIDUsIDEsIDI0NywgMTI1LCAzOSwgCisgICAgOCwgNSwgMSwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDIzNywgMTcxLCAzOSwgOCwgNSwgMSwgMjI2LCAxODUsIDM5LCA4LCA1LCAKKyAgICAxLCAxNDYsIDM5LCA4LCA1LCAxLCAyMTAsIDY5LCAzOSwgOCwgNSwgMSwgMjA2LCAxNjQsIDM5LCA4LCA1LCAxLCAyMDMsIAorICAgIDE5NiwgMzAsIDYsIDEsIDIzNywgMjAsIDMwLCA1LCAxLCAyMzcsIDIwLCAzMCwgNiwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAKKyAgICAzMCwgNSwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAzMCwgMjIxLCA0NCwgNTQsIDMwLCAyMjYsIDI1MSwgMjIxLCA0NCwgNTQsIAorICAgIDMwLCA2LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCA1LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCAyMDIsIDIyMSwgCisgICAgMzAsIDUsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA1LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAKKyAgICAxNDUsIDk3LCAzMCwgNSwgMjE2LCA3MywgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDIxNywgNDcsIAorICAgIDgyLCAzMCwgNiwgMSwgMjAyLCAyMjcsIDMwLCAyMDgsIDE0OSwgMzAsIDI0MywgMjI1LCAyMDgsIDE0OSwgMzAsIDYsIDEsIAorICAgIDI1MSwgMywgMywgMjA4LCAxNDksIDMwLCAyNTAsIDIwMywgMjA5LCAxNjMsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMDgsIAorICAgIDE0OSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDgsIDE0OSwgCisgICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgCisgICAgMSwgMjIwLCAzNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgCisgICAgMzAsIDYsIDEsIDI1MSwgMiwgMzAsIDYsIDEsIDI0OCwgMTA2LCAzMCwgNiwgMSwgMjM4LCAyMzUsIDMwLCA2LCAxLCAyNDQsIAorICAgIDM3LCAzMCwgNiwgMSwgMjQxLCAzNywgMzAsIDYsIDEsIDIwMiwgODMsIDMwLCA2LCAxLCAyNDAsIDI0OCwgMzAsIDYsIDEsIAorICAgIDIwOSwgNzQsIDMwLCA2LCAxLCAyMzAsIDIzMCwgMzAsIDYsIDEsIDIyOSwgMjQ3LCAzMCwgNiwgMSwgMjI4LCAyNCwgMzAsIAorICAgIDYsIDEsIDIyMywgMjQ2LCAzMCwgNiwgMSwgMjIxLCA4NCwgMzAsIDYsIDEsIDIwMywgMTcwLCAzMCwgNiwgMSwgMjIwLCAzNCwgCisgICAgMzAsIDYsIDEsIDIxOCwgMTY3LCAzMCwgNiwgMSwgMjE2LCA1OSwgMzAsIDYsIDEsIDIxMiwgMTQ0LCAzMCwgNiwgMSwgMjA5LCAKKyAgICAyMDcsIDMwLCA2LCAxLCAyMDYsIDIxNiwgMzAsIDYsIDEsIDIxOCwgMTkyLCAzMCwgNiwgMSwgMjQ2LCAxNDIsIDMwLCA2LCAKKyAgICAxLCAyMTcsIDIwMiwgMzAsIDYsIDEsIDIyMCwgMzYsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjQsIDMwLCA2LCAKKyAgICAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQxLCAKKyAgICAzOCwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgCisgICAgMjA4LCAxNDksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI1MSwgCisgICAgMiwgMzAsIDUsIDEsIDI0OCwgMTA2LCAzMCwgNSwgMSwgMjM4LCAyMzUsIDMwLCA1LCAxLCAyNDQsIDM3LCAzMCwgNSwgMSwgCisgICAgMjQxLCAzNywgMzAsIDUsIDEsIDIwMiwgODMsIDMwLCA1LCAxLCAyNDAsIDI0OCwgMzAsIDUsIDEsIDIwOSwgNzQsIDMwLCA1LCAKKyAgICAxLCAyMzAsIDIzMCwgMzAsIDUsIDEsIDIyOSwgMjQ3LCAzMCwgNSwgMSwgMjI4LCAyNCwgMzAsIDUsIDEsIDIyMywgMjQ2LCAKKyAgICAzMCwgNSwgMSwgMjIxLCA4NCwgMzAsIDUsIDEsIDIwMywgMTcwLCAzMCwgNSwgMSwgMjIwLCAzNCwgMzAsIDUsIDEsIDIxOCwgCisgICAgMTY3LCAzMCwgNSwgMSwgMjE2LCA1OSwgMzAsIDUsIDEsIDQ2LCAyMTIsIDE0NCwgMzAsIDUsIDEsIDIxMiwgMTQ0LCAzMCwgCisgICAgNSwgMSwgMjA5LCAyMDcsIDMwLCA1LCAxLCAyMDYsIDIxNiwgMzAsIDUsIDEsIDIxOCwgMTkyLCAzMCwgNSwgMSwgMjQ2LCAKKyAgICAxNDIsIDMwLCA1LCAxLCAyMTcsIDIwMiwgMzAsIDUsIDEsIDIyMCwgMzYsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAKKyAgICAyMjQsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIAorICAgIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMjMwLCAKKyAgICAxOSwgOTcsIDMwLCAyNDgsIDEwNywgOTcsIDMwLCAyMDksIDc1LCA5NywgMzAsIDIwNiwgMjE3LCAzLCAyMzYsIDExNiwgOTcsIAorICAgIDMwLCAyMDYsIDIxNywgMywgMjUxLCAxMjYsIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjQzLCAyMzIsIAorICAgIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMTgsIDE5MywgOTcsIDMwLCAyMTgsIDE2OCwgOTcsIDMwLCAyMzAsIDE5LCA5NywgCisgICAgMzAsIDEsIDI1MCwgMTI2LCAyMjksIDAsIDMwLCA1LCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgMSwgMjExLCA3MSwgMzAsIAorICAgIDUsIDEsIDIxMSwgNzEsIDMwLCAxLCAyNDMsIDE5OSwgMzAsIDUsIDEsIDI0MywgMTk5LCAzMCwgMSwgMjI5LCAwLCAzMCwgNSwgCisgICAgMSwgMjI5LCAwLCAzMCwgMSwgMjE0LCAyNDYsIDMwLCA1LCAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDIxMywgMzUsIDg0LCA1LCAKKyAgICAxLCAyMTMsIDM1LCA4NCwgNiwgMSwgMjQwLCA0NSwgODQsIDUsIDEsIDI0MCwgNDUsIDg0LCA2LCAxLCAyMjksIDEyNywgODQsIAorICAgIDUsIDEsIDIyOSwgMTI3LCA4NCwgNiwgMSwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyMzYsIDEwNywgODQsIDYsIDEsIDIzOCwgCisgICAgMjMwLCA4NCwgNSwgMSwgMjM4LCAyMzAsIDg0LCA2LCAxLCAyMTMsIDEsIDg0LCA1LCAxLCAyMTMsIDEsIDg0LCA2LCAxLCAKKyAgICAyNDQsIDUyLCA4NCwgNSwgMSwgMjQ0LCA1MiwgMzAsIDIyOSwgMjQ4LCA5NywgMzAsIDIxNiwgNjAsIDk3LCAzMCwgMjI2LCAKKyAgICAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDEsIDIwMiwgMjI3LCAzMCwgNiwgMjA5LCA3NSwgOTcsIDMwLCAyMjYsIDIyMSwgCisgICAgMjQxLCAzOCwgOTcsIDMwLCAyMTYsIDczLCAyMjYsIDIyMSwgMjQxLCAzOCwgOTcsIDMwLCA2LCAxLCAyMTIsIDI0MiwgMzAsIAorICAgIDUsIDEsIDIxMiwgMjQyLCAzMCwgNiwgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDEsIDIxNCwgMjQzLCAzMCwgNSwgCisgICAgMSwgMjE0LCAyNDMsIDMwLCAyMTYsIDYwLCAzLCAyMTEsIDMyLCA5NywgMzAsIDYsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIAorICAgIDE0NSwgOTcsIDMwLCA2LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNiwgMjE2LCA3MywgMjQyLCA4MywgCisgICAgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzYsIDYsIDEsIDIzMSwgMTExLCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIzMCwgCisgICAgMjM0LCAzNiwgNiwgMSwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMzgsIDUyLCAzNiwgNiwgMSwgMjA3LCAxMSwgMjMxLCAxMTAsIAorICAgIDM2LCA2LCAxLCAyNDEsIDI1MiwgMzYsIDYsIDEsIDI0NywgMTM1LCA3NSwgMzYsIDYsIDEsIDIwMywgMTEsIDM2LCA2LCAxLCAKKyAgICAyMzAsIDE2MSwgMzYsIDYsIDEsIDIyNywgODAsIDM2LCA2LCAxLCAyMjIsIDQxLCAzNiwgNiwgMSwgMjA4LCA4LCAzNiwgNiwgCisgICAgMSwgMjI5LCA0OSwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIxMiwgMjI4LCA2OCwgMzYsIAorICAgIDYsIDEsIDI0MSwgMjQ4LCAzNiwgNiwgMSwgNjMsIDM2LCA2LCAxLCAyNDgsIDE2MiwgMzYsIDYsIDEsIDIwNiwgNTUsIDM2LCAKKyAgICA2LCAxLCAyMzgsIDEwNSwgMzYsIDYsIDEsIDI0NCwgNzUsIDM2LCA2LCAxLCAyMzEsIDExMCwgMzYsIDYsIDEsIDIwMiwgNzEsIAorICAgIDM2LCA2LCAxLCAyMDIsIDkyLCAzNiwgNiwgMSwgNzUsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDM2LCA2LCAxLCAxNzMsIAorICAgIDM2LCA2LCAxLCAyNDEsIDEyMiwgMzYsIDYsIDEsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjQxLCA5MiwgMzYsIDYsIDEsIDc4LCAKKyAgICAzNiwgNiwgMSwgMjE5LCAzNCwgMzYsIDYsIDEsIDI0MSwgMjgsIDM2LCA2LCAxLCAyNDEsIDE3LCAzNiwgNiwgMSwgMjA5LCAKKyAgICAxODcsIDM2LCA2LCAxLCA2OCwgMzYsIDYsIDEsIDI0MSwgMTU0LCAzNiwgNiwgMSwgMTUyLCAzNiwgNiwgMSwgMjA4LCAxNCwgCisgICAgMzYsIDYsIDEsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjEzLCA5MCwgMzYsIDYsIDEsIDIxMywgNDYsIDM2LCA2LCAxLCAyMzcsIAorICAgIDkxLCA1NCwgMzYsIDYsIDEsIDIwMywgMzAsIDM2LCA2LCAxLCAyMTIsIDcsIDU0LCAzNiwgNiwgMSwgNzQsIDM2LCA2LCAxLCAKKyAgICAyMDIsIDIxMywgMzYsIDYsIDEsIDE5OCwgMzYsIDUsIDEsIDYzLCAzNiwgNSwgMSwgMjQ4LCAxNjIsIDM2LCA1LCAxLCAyMDYsIAorICAgIDU1LCAzNiwgNSwgMSwgMjM4LCAxMDUsIDM2LCA1LCAxLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjMxLCAxMTAsIDM2LCA1LCAxLCAKKyAgICAyMDIsIDcxLCAzNiwgNSwgMSwgMjAyLCA5MiwgMzYsIDUsIDEsIDc1LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNSwgCisgICAgMSwgMTczLCAzNiwgNSwgMSwgMjQxLCAxMjIsIDM2LCA1LCAxLCAyNDEsIDEwMywgMzYsIDUsIDEsIDI0MSwgOTIsIDM2LCA1LCAKKyAgICAxLCA3OCwgMzYsIDUsIDEsIDIxOSwgMzQsIDM2LCA1LCAxLCAyNDEsIDI4LCAzNiwgNSwgMSwgMjQxLCAxNywgMzYsIDUsIDEsIAorICAgIDIwOSwgMTg3LCAzNiwgNSwgMSwgNjgsIDM2LCA1LCAxLCAyNDEsIDE1NCwgMzYsIDUsIDEsIDE1MiwgMzYsIDUsIDEsIDIwOCwgCisgICAgMTQsIDM2LCA1LCAxLCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIxMywgOTAsIDM2LCA1LCAxLCAyMTMsIDQ2LCAzNiwgNSwgMSwgCisgICAgMjM3LCA5MSwgNTQsIDM2LCA1LCAxLCAyMDMsIDMwLCAzNiwgNSwgMSwgMjEyLCA3LCA1NCwgMzYsIDUsIDEsIDc0LCAzNiwgCisgICAgNSwgMSwgMjAyLCAyMTMsIDM2LCA1LCAxLCAxOTgsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAKKyAgICAyMzAsIDIzNCwgMzYsIDUsIDEsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjM4LCA1MiwgMzYsIDUsIDEsIDIwNywgMTEsIDIzMSwgCisgICAgMTEwLCAzNiwgNSwgMSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA1LCAxLCAyMDMsIDExLCAzNiwgCisgICAgNSwgMSwgMjMwLCAxNjEsIDM2LCA1LCAxLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjIyLCA0MSwgMzYsIDUsIDEsIDIwOCwgOCwgCisgICAgMzYsIDUsIDEsIDIyOSwgNDksIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAyMTIsIDIyOCwgCisgICAgNjgsIDM2LCA1LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMjAsIDM2LCAzNiwgNiwgMSwgCisgICAgMjAzLCA2NiwgMzYsIDUsIDEsIDIwMywgNjYsIDM2LCA2LCAxLCAyMzAsIDIyOCwgNzQsIDM2LCA1LCAxLCAyMzAsIDIyOCwgCisgICAgNzQsIDM2LCA2LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNiwgMSwgCisgICAgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgCisgICAgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIzMCwgMjI4LCAKKyAgICAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIyOCwgCisgICAgMjI1LCAzNiwgNSwgMSwgMjI4LCAyMjUsIDM2LCA2LCAxLCAyMTcsIDIwMiwgMzYsIDUsIDEsIDIxNywgMjAyLCAzNiwgNiwgCisgICAgMSwgMjM5LCAyMzUsIDM2LCA1LCAxLCAyMzksIDIzNSwgMzYsIDYsIDEsIDIzMCwgMTg2LCAzNiwgNSwgMSwgMjMwLCAxODYsIAorICAgIDM2LCA2LCAxLCAyMzAsIDE4NywgMywgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDUsIDEsIDIzMCwgMTg3LCAzLCA1MiwgCisgICAgMjM3LCAyNTQsIDI1MSwgMTM4LCAzNiwgNiwgMSwgMjA3LCAxNCwgMzYsIDUsIDEsIDIwNywgMTQsIDM2LCA2LCAxLCAyMTUsIAorICAgIDE5MSwgMjIwLCAzNiwgMzYsIDUsIDEsIDIxNSwgMTkxLCAyMjAsIDM2LCAzNiwgNiwgMSwgMjIwLCAzNywgMywgMjA4LCAKKyAgICAxOTcsIDM2LCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE5NywgMzYsIDYsIDEsIDIxOSwgMjI0LCAzNiwgNSwgMSwgMjE5LCAKKyAgICAyMjQsIDM2LCA2LCAxLCAyMjksIDAsIDM2LCA1LCAxLCAyMjksIDAsIDM2LCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMDgsIAorICAgIDE5NywgMzksIDM2LCAyMTksIDE0MSwgMzksIDM2LCAyNDQsIDE0MiwgMjE4LCA3MSwgMzksIDM2LCAyMTcsIDE5NiwgMjE4LCAKKyAgICA3MSwgMzksIDM2LCAyMTgsIDU1LCAzOSwgMzYsIDIzNiwgMTIsIDIwOSwgMzUsIDU0LCAzOSwgMzYsIDIyNCwgMTE0LCA1NCwgCisgICAgMzYsIDYsIDEsIDIxMiwgMjI4LCAyMzUsIDIwNiwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIAorICAgIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNSwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNiwgMSwgCisgICAgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA1LCAxLCAyNDEsIDI5LCAzLCAyMDgsIDI1NCwgMzYsIDYsIDEsIDIzOCwgMTA2LCAKKyAgICAzLCAyMDYsIDIxNSwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyMDYsIDIxNSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCA5NSwgCisgICAgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIAorICAgIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDcyLCAKKyAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAyLCA5MywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIAorICAgIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAorICAgIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIzMCwgNDQsIDMsIAorICAgIDk1LCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgOTUsIDM2LCA2LCAxLCAyNDgsIDIxNCwgMTczLCAzNiwgNSwgMSwgMjQ4LCAKKyAgICAyMTQsIDE3MywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAKKyAgICAzNiwgNiwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNSwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNiwgMSwgCisgICAgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDI1MSwgMTQ1LCAKKyAgICAxNTIsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMTUyLCAzNiwgNiwgMSwgMjQxLCAxOCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAorICAgIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDksIDE4OCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwOSwgMTg4LCAKKyAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjExLCA1MywgNjgsIDM2LCA1LCAxLCAyMTEsIDUzLCA2OCwgMzYsIDYsIDEsIDIxMSwgCisgICAgNTMsIDEwNiwgMywgOTUsIDM2LCA1LCAxLCAyMTEsIDUzLCAxMDYsIDMsIDk1LCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIAorICAgIDI0NCwgMjAsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgMjQ0LCAyMCwgMzYsIDYsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgCisgICAgMzYsIDUsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgCisgICAgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgODAsIDk1LCAzNiwgNSwgMSwgMjQ2LCAxNzEsIAorICAgIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIxMywgMTIsIDM2LCA1LCAxLCAyMTMsIDEyLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgCisgICAgMTcwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIAorICAgIDIwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgMSwgMjE5LCAxMzMsIDM2LCA2LCAxLCAKKyAgICAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDIwMiwgNzIsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMjMwLCA0NCwgCisgICAgMywgMTEzLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgCisgICAgNSwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAKKyAgICA5MywgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyMDksIAorICAgIDI0OCwgMzYsIDYsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDYsIAorICAgIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDIxOSwgCisgICAgMTMzLCAzNiwgNiwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMzQsIAorICAgIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzNiwgNiwgMzIsIDM0LCAyMzEsIDExMCwgMzYsIDUsIAorICAgIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgCisgICAgMjQ3LCAyMTQsIDM2LCA2LCAxLCAyMTQsIDE5MiwgMzYsIDUsIDEsIDIxNCwgMTkyLCAzNiwgNiwgMSwgMjE0LCAxOTMsIDMsIAorICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjE0LCAxOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjAyLCA3MiwgMywgMjQzLCAKKyAgICAyMzEsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgCisgICAgNSwgMSwgMjAyLCA5MywgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNTEsIAorICAgIDE0NSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgCisgICAgMjI1LCAxNzAsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKKyAgICAyMzEsIDM2LCA2LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIAorICAgIDI0OCwgMjI1LCA3OCwgMzYsIDUsIDEsIDI0OCwgMjI1LCA3OCwgMzYsIDYsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgCisgICAgMjMxLCAzNiwgNSwgMSwgMjQ4LCAyMjUsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCAKKyAgICAzNiwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAxMDYsIDMsIAorICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA2LCAKKyAgICAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgCisgICAgMjQzLCAyMzEsIDM2LCA1LCAxLCAyNDYsIDE3MSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAKKyAgICAyMCwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCAKKyAgICA1LCAxLCAyMDMsIDMxLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgCisgICAgNSwgMSwgMjM4LCAxMDYsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgMTEzLCAzNiwgNSwgCisgICAgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCA5NSwgMzYsIDUsIDEsIDIzNywgMTYwLCAzLCAKKyAgICA5NSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNiwgMSwgCisgICAgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDMsIDEzMCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwMiwgCisgICAgMjEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMDIsIDIxLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA1LCAxLCAKKyAgICAyMjksIDEwLCAyNDEsIDI0NCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyNywgODAsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjcsIAorICAgIDgwLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjIyLCA0MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA2LCAxLCAKKyAgICAyMjksIDEwLCAyMTIsIDcxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwOCwgCisgICAgMTkxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjA4LCAxOTEsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDkyLCAzNiwgNSwgMSwgCisgICAgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMTEzLCAKKyAgICAzNiwgNiwgMSwgMjI3LCAxNjEsIDM2LCA1LCAxLCAyMjcsIDE2MSwgMzYsIDYsIDEsIDIxNiwgNjEsIDM2LCA1LCAxLCAyMTYsIAorICAgIDYxLCAzNiwgNiwgMSwgMjAzLCA5OSwgMzYsIDUsIDEsIDIwMywgOTksIDM2LCA2LCAxLCAyMTcsIDEyNiwgMzYsIDUsIDEsIAorICAgIDIxNywgMTI2LCAzNiwgNiwgMSwgMjA0LCA2MiwgMzYsIDUsIDEsIDIwNCwgNjIsIDM2LCA2LCAxLCAyNTEsIDI2LCAxNzMsIAorICAgIDM2LCA1LCAxLCAyNTEsIDI2LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIAorICAgIDEyMywgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIAorICAgIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjE5LCAzNSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIAorICAgIDM2LCA2LCAxLCAyMTMsIDEzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAorICAgIDI0MSwgOTMsIDMsIDQ5LCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNiwgMSwgMjQxLCAyMzcsIAorICAgIDM2LCA1LCAxLCAyNDEsIDIzNywgMzYsIDYsIDEsIDI0NCwgMTI0LCAzNiwgNSwgMSwgMjQ0LCAxMjQsIDM2LCA2LCAxLCAKKyAgICAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDI0MSwgMTIzLCAzLCAyNDQsIDIwLCAxNzgsIDYsIDEsIDI1MCwgNSwgCisgICAgMTc4LCA2LCAxLCAyNDgsIDEyMiwgMTc4LCA2LCAxLCAyMzgsIDY5LCAxNzgsIDYsIDEsIDI0NCwgMjEyLCAxNzgsIDYsIDEsIAorICAgIDI0MSwgMTY3LCAxNzgsIDYsIDEsIDIwMiwgMTE2LCAxNzgsIDYsIDEsIDI0MSwgMTQ3LCAxNzgsIDYsIDEsIDI0MCwgMjUwLCAKKyAgICAxNzgsIDYsIDEsIDEzNSwgMTc4LCA2LCAxLCAyMDIsIDcxLCAxNzgsIDYsIDEsIDIzMSwgMTksIDE3OCwgNiwgMSwgMjI3LCAKKyAgICA4MywgMTc4LCA2LCAxLCAyMDMsIDE3NCwgMTc4LCA2LCAxLCAyNDcsIDkyLCAxNzgsIDYsIDEsIDIyOSwgMTgwLCAxNzgsIDYsIAorICAgIDEsIDIzNiwgMTM2LCAxNzgsIDYsIDEsIDIzMCwgMTgxLCAxNzgsIDYsIDEsIDIzOCwgMTE2LCAxNzgsIDYsIDEsIDI0NiwgCisgICAgMTYwLCAxNzgsIDYsIDEsIDIyNCwgMjQwLCAxNzgsIDYsIDEsIDIwMywgMTEsIDE3OCwgNiwgMSwgMjIxLCAxNTIsIDE3OCwgCisgICAgNiwgMSwgMjEzLCA5MCwgMTc4LCA2LCAxLCAyMDUsIDE4OSwgMTc4LCA2LCAxLCAyNDYsIDE5OSwgMTc4LCA2LCAxLCAyMTksIAorICAgIDE2LCAxNzgsIDYsIDEsIDIzMCwgMTQ0LCAxNzgsIDYsIDEsIDIxNiwgMjIwLCAxNzgsIDYsIDEsIDIxNCwgMTU1LCAxNzgsIAorICAgIDYsIDEsIDIwNSwgMjM0LCAxNzgsIDYsIDEsIDIwOCwgMTk0LCAxNzgsIDYsIDEsIDIxNiwgMTIyLCAxNzgsIDYsIDEsIDI0NSwgCisgICAgMjU0LCAxNzgsIDYsIDEsIDIwMiwgMjUyLCAxNzgsIDYsIDEsIDIxOCwgMTAyLCAxNzgsIDYsIDEsIDIyOSwgMTkxLCAxNzgsIAorICAgIDYsIDEsIDIyMCwgNjAsIDE3OCwgNiwgMSwgMjQwLCA0NywgMTc4LCA2NSwgMSwgNDksIDE2MiwgMjE1LCAyNTIsIDE3OCwgCisgICAgMjUwLCAxNjAsIDE3OCwgMjQxLCA5NiwgODIsIDE3OCwgMjQwLCAyMTIsIDgyLCAxNzgsIDI0NSwgMjMzLCAxNzgsIDIxNywgCisgICAgNDcsIDgyLCAxNzgsIDI1MSwgMTQ2LCA4MiwgMTc4LCA1LCAxLCAyNTAsIDUsIDE3OCwgNSwgMSwgMjQ4LCAxMjIsIDE3OCwgCisgICAgNSwgMSwgMjM4LCA2OSwgMTc4LCA1LCAxLCAyNDQsIDIxMiwgMTc4LCA1LCAxLCAyNDEsIDE2NywgMTc4LCA1LCAxLCAyMDIsIAorICAgIDExNiwgMTc4LCA1LCAxLCAyNDEsIDE0NywgMTc4LCA1LCAxLCAyNDAsIDI1MCwgMTc4LCA1LCAxLCAxMzUsIDE3OCwgNSwgMSwgCisgICAgMjAyLCA3MSwgMTc4LCA1LCAxLCAyMzEsIDE5LCAxNzgsIDUsIDEsIDIyNywgODMsIDE3OCwgNSwgMSwgMjAzLCAxNzQsIAorICAgIDE3OCwgNSwgMSwgMjQ3LCA5MiwgMTc4LCA1LCAxLCAyMjksIDE4MCwgMTc4LCA1LCAxLCAyMzYsIDEzNiwgMTc4LCA1LCAxLCAKKyAgICAyMzAsIDE4MSwgMTc4LCA1LCAxLCAyMzgsIDExNiwgMTc4LCA1LCAxLCAyNDYsIDE2MCwgMTc4LCA1LCAxLCAyMjQsIDI0MCwgCisgICAgMTc4LCA1LCAxLCAyMDMsIDExLCAxNzgsIDUsIDEsIDIyMSwgMTUyLCAxNzgsIDUsIDEsIDIxMywgOTAsIDE3OCwgNSwgMSwgCisgICAgMjA1LCAxODksIDE3OCwgNSwgMSwgMjQ2LCAxOTksIDE3OCwgNSwgMSwgMjE5LCAxNiwgMTc4LCA1LCAxLCAyMzAsIDE0NCwgCisgICAgMTc4LCA1LCAxLCAyMTYsIDIyMCwgMTc4LCA1LCAxLCAyMTQsIDE1NSwgMTc4LCA1LCAxLCAyMDUsIDIzNCwgMTc4LCA1LCAxLCAKKyAgICAyMDgsIDE5NCwgMTc4LCA1LCAxLCAyMTYsIDEyMiwgMTc4LCA1LCAxLCAyNDUsIDI1NCwgMTc4LCA1LCAxLCAyMDIsIDI1MiwgCisgICAgMTc4LCA1LCAxLCAyMTgsIDEwMiwgMTc4LCA1LCAxLCAyMjksIDE5MSwgMTc4LCA1LCAxLCAyMjAsIDYwLCAxNzgsIDUsIDEsIAorICAgIDI0MCwgNDcsIDE3OCwgNSwgMzIsIDI0MSwgMTY4LCAyMDIsIDI1MiwgMTc4LCAyMzksIDEwMiwgMjExLCA2MSwgMTc4LCAKKyAgICAyMzUsIDIyMCwgMjE2LCAxNSwgMTc4LCAyNDAsIDI0NiwgNTQsIDIyNywgMjIxLCAxNzgsIDI0MCwgMjQ2LCA1NCwgMTc4LCAKKyAgICAyNDIsIDYwLCA1NCwgMTEwLCAyNTEsIDEzOSwgMjQwLCAyNDEsIDExMCwgMjUxLCAxMzksIDIxNCwgMTU2LCAxMTAsIDI1MSwgCisgICAgMTM5LCAyMTMsIDY5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgMjE3LCAxMDksIDExMCwgMjUxLCAxMzksIDIwMiwgMTAzLCAKKyAgICAyMzgsIDI1NCwgMTEwLCAyNTEsIDEzOSwgMjA4LCAyMDksIDExMCwgMjUxLCAxMzksIDIxNiwgNzAsIDExMCwgMjUxLCAxMzksIAorICAgIDIwMiwgMTAxLCAxMTAsIDI1MSwgMTM5LCAyMTksIDYxLCAxMTAsIDI1MSwgMTM5LCAyMDMsIDIzLCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMDksIDExNSwgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjcsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY4LCAyMjMsIDIwOCwgCisgICAgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjUsIDExMCwgMjUxLCAxMzksIDIxNywgMTEwLCAyMTksIDkwLCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMDksIDE1OCwgMjM4LCAxODMsIDExMCwgMjUxLCAxMzksIDIxOSwgNDAsIDExMCwgMjUxLCAxMzksIDI1MCwgNDMsIDIzNywgCisgICAgMTUyLCAxMTAsIDI1MSwgMTM5LCAyMjMsIDIxOCwgMTEwLCAyNTEsIDEzOSwgMjI1LCAxNDUsIDExMCwgMjUxLCAxMzksIAorICAgIDIyNCwgMjI5LCAxMTAsIDI1MSwgMTM5LCAyMjQsIDIzMCwgMjI5LCAxOTIsIDExMCwgMjUxLCAxMzksIDI0NCwgMTUxLCAKKyAgICAxMTAsIDI1MSwgMTM5LCAyMTcsIDEyMSwgMTEwLCAyNTEsIDEzOSwgMjA5LCAxNTgsIDIxNywgMTA0LCAxMTAsIDI1MSwgCisgICAgMTM5LCAyMDMsIDMzLCAyNDgsIDEyMywgMjAyLCAyMzMsIDExMCwgMjUxLCAxMzksIDIyMCwgNDMsIDExMCwgMjUxLCAxMzksIAorICAgIDIzMSwgNjksIDExMCwgMjUxLCAxMzksIDI0NCwgNTMsIDExMCwgMjUxLCAxMzksIDIwMiwgMjgsIDExMCwgMTMxLCAyMjUsIAorICAgIDc1LCAyNDYsIDYxLCAxMTAsIDIxOCwgNjMsIDIxMywgMTUsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE0LCAxNTYsIDExMCwgCisgICAgMjE4LCA2MywgMjM3LCA4MiwgMjE5LCA1NCwgMTEwLCAyMTgsIDYzLCAyMzcsIDgyLCAyMTcsIDExNCwgMTEwLCAyMTgsIDYzLCAKKyAgICAyMzYsIDIzMiwgMTEwLCAyMTgsIDYzLCAyMDgsIDExLCAxMTAsIDIxOCwgNjMsIDIxNCwgMTU2LCAxMTAsIDIxOCwgNjMsIAorICAgIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgMjM2LCAxMjgsIDExMCwgMjE4LCA2MywgCisgICAgMjM2LCAxMjksIDIzNywgODQsIDM1LCAyMDYsIDU5LCAxMTAsIDIxOCwgNjMsIDIxNywgNTEsIDExMCwgMjE4LCA2MywgMjQ0LCAKKyAgICAxOTgsIDIxOSwgMjQ1LCAyMjUsIDEwNSwgMTEwLCAyMTgsIDYzLCAyMjQsIDIxOSwgMTEwLCAyMTcsIDE3OSwgMjI1LCAxMDIsIAorICAgIDExMCwgMjE4LCA2MywgMjE2LCAyMDAsIDExMCwgMjE3LCAxNzksIDIxOSwgNjMsIDExMCwgMjE4LCA2MywgMjEzLCAwLCAKKyAgICAyNDMsIDg1LCAxMTAsIDIxOCwgNjMsIDIxMiwgMTI0LCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAyMTIsIDgsIDIxOSwgNTYsIAorICAgIDExMCwgMTMxLCAyMDYsIDIyMSwgMjQzLCA4NSwgMTEwLCAxMzEsIDIyNiwgMjUxLCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAKKyAgICAyMjEsIDQxLCAyMzcsIDE1MSwgMTEwLCAyMTgsIDYzLCAyMTcsIDExNSwgMjE3LCAxMDksIDExMCwgMSwgMjUxLCAzMCwgCisgICAgMTEwLCAxLCAyNDgsIDEwOCwgMTEwLCAxLCAyMzgsIDY3LCAxMTAsIDEsIDI0NCwgMTc4LCAxMTAsIDEsIDIzNywgNjcsIAorICAgIDExMCwgMSwgMjA2LCA1OSwgMTEwLCAxLCAyMDIsIDk1LCAxMTAsIDEsIDIzNywgMjEsIDExMCwgMSwgMjA5LCAxMzIsIDExMCwgCisgICAgMSwgMjAyLCAyMzYsIDExMCwgMSwgNDYsIDIzMCwgMjIsIDExMCwgMSwgMjMwLCAyMiwgMTEwLCAxLCAyMjgsIDIwLCAxMTAsIAorICAgIDEsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMjQsIDI0NywgMTEwLCAxLCA0NiwgMjIxLCA0MCwgMTEwLCAxLCAyMjEsIDQwLCAKKyAgICAxMTAsIDEsIDIxNCwgMjQ5LCAxMTAsIDEsIDI1MCwgMywgMTEwLCAxLCA0NiwgMjE5LCAzNCwgMTEwLCAxLCAyMTksIDM0LCAKKyAgICAxMTAsIDEsIDQ2LCAyMDgsIDE1LCAxMTAsIDEsIDIwOCwgMTUsIDExMCwgMSwgMjE3LCA3NCwgMTEwLCAxLCAyMTYsIDkxLCAKKyAgICAxMTAsIDEsIDIxMiwgMjU1LCAxMTAsIDEsIDIwOSwgMjAzLCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDYsIDU5LCAxMTAsIAorICAgIDMyLCAyMDMsIDksIDIwNiwgNjAsIDIwMiwgMjM2LCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDIsIDIzNiwgMTEwLCAyMTcsIAorICAgIDE3OSwgMjM4LCAxNjcsIDExMCwgMjE3LCAxNzksIDIzOCwgMTY1LCAxMCwgNDIsIDU0LCAxMCwgMiwgMjE0LCAyNDIsIDEwLCAKKyAgICAyMzksIDE3MCwgMjI1LCA4OCwgMTAsIDIsIDIxNSwgMjQsIDEwLCAyLCAyMTQsIDI0NSwgMTAsIDQyLCAxMzEsIDU1LCAyNTAsIAorICAgIDE0MCwgMjQ1LCAxMDYsIDIxNSwgMjA0LCAyNTAsIDE0MCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAxMCwgMjE2LCAxNjUsIDI1MCwgCisgICAgMTQwLCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyNTAsIDE0MCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgCisgICAgMjUxLCA4NiwgNTQsIDEwLCAyNDUsIDIzMywgMTAsIDI0NCwgMTM4LCAyMTMsIDEzMCwgMTAsIDIxOCwgNjUsIDIwNiwgNDAsIAorICAgIDU0LCAxMCwgMiwgMjI0LCA5NSwgMTAsIDIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4NiwgMTAsIDIsIDI1MSwgMzMsIDI1MCwgCisgICAgNjQsIDEwLCAyLCAyMTYsIDE5OCwgMjUxLCAzMiwgMTAsIDIsIDIxNiwgMjA2LCAyNTEsIDEyLCAyNTAsIDIxMCwgMTAsIDIsIAorICAgIDIwOSwgMjQwLCAxMCwgNSwgMTM4LCAyMDksIDI1MSwgMTAsIDUsIDEzOCwgMzIsIDEzNywgMywgMjI4LCAyOSwgMywgMjAzLCAKKyAgICA0NywgMTAsIDUsIDEzOCwgMjAyLCAxMDcsIDEwLCA1LCAyNDAsIDcxLCAxMCwgNSwgMjQ0LCAxNzIsIDEwLCA1LCAyMjksIAorICAgIDIyOSwgMTAsIDIxMywgMTQzLCAxMCwgMSwgODIsIDEwLCAyMDgsIDcwLCA3MCwgMjE3LCAxNzksIDgyLCAxMCwgMjE3LCA0NywgCisgICAgODIsIDEwLCAxLCAyMjksIDIzMywgMjAzLCA0NywgMTAsIDEsIDIzNywgMTI3LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgCisgICAgNTUsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIAorICAgIDEzNywgMywgMjM3LCAxMjgsIDU2LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDI1MSwgMzAsIDEwLCAxLCAKKyAgICAyNDgsIDEzOCwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk4LCAxMCwgMSwgMjA5LCAxNjksIDEwLCAxLCAyMDksIDg4LCAxMCwgCisgICAgMSwgMjMwLCAxNTgsIDEwLCAxLCAyMzcsIDE0OCwgMTAsIDEsIDIyOSwgMTQwLCAxMCwgMSwgMjQ0LCAxODQsIDEwLCAxLCAKKyAgICAyMDksIDEwMCwgMTAsIDEsIDIxNiwgMTIyLCAxMCwgMSwgMjAyLCAxMDcsIDEwLCAxLCAyMTQsIDE2MSwgMTAsIDEsIDIxMywgCisgICAgMzksIDEwLCAxLCAyMTUsIDI4LCAxMCwgMSwgMjQ0LCAyMDcsIDEwLCAxLCAyMDksIDI1MSwgMTAsIDEsIDIwMiwgMTEwLCAKKyAgICAxMCwgMSwgMjUxLCA1OSwgMTAsIDEsIDIzOCwgMTE0LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIAorICAgIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgCisgICAgMSwgMjQwLCA3NSwgODksIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAKKyAgICAyMDksIDIwOSwgMTAsIDEsIDI0MCwgNDcsIDEwLCAxLCAyMTcsIDExOSwgMTAsIDEsIDIzMCwgMjIsIDEwLCAxLCAyMjgsIAorICAgIDI4LCAxMCwgMSwgMjI1LCA1LCAxMCwgMSwgMjIxLCAxNzgsIDEwLCAxLCAyMzcsIDQzLCAxMCwgMSwgMjA0LCA3MCwgMTAsIAorICAgIDEsIDEzNywgMjI1LCAxMjksIDEwLCAxLCAyMDMsIDQ3LCAxMCwgMjQwLCA2OSwgMTAsIDI0NCwgMTcwLCAxMCwgMjI5LCAKKyAgICAyMjcsIDEwLCAyNDAsIDcxLCAxMCwgMjQ0LCAxNzIsIDEwLCAyMjksIDIyOSwgMTAsIDIxMywgODAsIDEwLCAyMTAsIDIyMiwgCisgICAgMTAsIDIyNSwgMTY0LCA1NSwgMTAsIDIzNywgMTI4LCA1NSwgMTAsIDIzNywgMTI4LCA1NiwgMTAsIDIxMCwgMjQ2LCAyNTEsIAorICAgIDMwLCAxMCwgMjMwLCAyMzksIDI0NCwgMTcyLCAxMCwgMTMxLCAyMjEsIDE3OSwgMjM4LCA4NSwgMTAsIDIwMSwgMjQ4LCAxMCwgCisgICAgMjIsIDIsIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAyMzAsIDIzOSwgNSwgMjA2LCAxNjUsIDU1LCAxMCwgMjIsIDIsIAorICAgIDcwLCA1NiwgMTAsIDIxNiwgNzMsIDI0NCwgMTcyLCAxMCwgMjQwLCA3MiwgMywgMTIwLCAyNDMsIDgzLCAxMCwgMjA0LCA3MiwgCisgICAgMjM3LCAxMjgsIDU2LCAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI1MCwgMTQwLCAxNywgMTA1LCAyNTAsIDE0MCwgMTcsIAorICAgIDEwOCwgMjUwLCAxNDAsIDE3LCAxNDcsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNTAsIDE0MCwgMTcsIDE3MCwgMjUwLCAxNDAsIAorICAgIDE3LCAxOTUsIDI1MCwgMTQwLCAxNywgMjEzLCAxMTEsIDI1MCwgMTQwLCAxNywgMTk5LCAyNTAsIDE0MCwgMTcsIDIyMiwgCisgICAgNjMsIDEwLCAyMTgsIDI0NiwgNTQsIDEwLCAyNDQsIDY4LCAyMTMsIDEzMCwgMTAsIDIwOSwgMzUsIDIxMywgMTMwLCAxMCwgCisgICAgMjM5LCAyMzMsIDIxOCwgNjEsIDIxMSwgOTQsIDEwLCAxLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEsIDI0MywgODQsIAorICAgIDIxNywgMTE5LCAxMCwgMSwgMjEwLCAxOTksIDI1MSwgMzAsIDEwLCAxLCAxMzcsIDIwNCwgODcsIDEwLCAxLCAxMzcsIDMsIAorICAgIDIwNCwgNzIsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDEzNywgMywgMjA0LCA3MiwgMjM3LCAxMjgsIDU2LCAxMCwgMSwgMTM4LCAKKyAgICAyMzcsIDEyNywgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDI1MSwgMzAsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDQsIDcwLCAKKyAgICAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDMsIDQ3LCAxMCwgMSwgMjA3LCAKKyAgICAyMzMsIDEwLCAxLCAyMDcsIDIzMSwgMTAsIDEsIDI0OCwgMTQ4LCAxMCwgMSwgMjA5LCAxNzAsIDMsIDIxNSwgMjUyLCAxMCwgCisgICAgMSwgMjA5LCAxNzAsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDIxOSwgMTYsIDEwLCAxLCAyMDksIDE2NywgCisgICAgMTAsIDEsIDI0OCwgMTM2LCAxMCwgMSwgMTUxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxNTEsIDMsIDEyMCwgMTg3LCAKKyAgICA4MCwgNTUsIDEwLCAxLCAyMjAsIDI1NCwgMTAsIDEsIDI0MiwgNSwgMTAsIDEsIDE1MSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCisgICAgMSwgMjA5LCAxOTEsIDEwLCAxLCAyMDksIDE4OSwgMTAsIDEsIDI0NCwgMTE1LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIxNSwgCisgICAgMjUyLCAxMCwgMSwgMjQ0LCAxODUsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA1LCAKKyAgICAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTkxLCAxMCwgMSwgMjQ0LCAxMTcsIDEwLCAxLCAyNDIsIDMzLCAxMCwgMSwgMjQ0LCAKKyAgICAxODUsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIAorICAgIDEsIDIxNSwgMTc3LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIxNSwgCisgICAgMjUyLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDcwLCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAKKyAgICAxLCAyMTYsIDEyMywgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDEyMCwgMTg3LCAKKyAgICA1NSwgMTAsIDEsIDIzMCwgMTU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMSwgMjE0LCAKKyAgICAxNjIsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAKKyAgICAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE1LCAyOSwgMywgCisgICAgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjE1LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjA5LCAyNTIsIDMsIDEyNiwgCisgICAgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxLCAKKyAgICAyNDAsIDQ4LCAzLCA3MCwgMjI0LCA1LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDcwLCA1NiwgMTAsIDEsIDIwNiwgNDgsIAorICAgIDEwLCAxLCAyNDAsIDQ4LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTksIDE0LCAxMCwgMSwgMjE3LCAxMjAsIDMsIDcwLCAKKyAgICA1NSwgMTAsIDEsIDIxNywgMTIwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE4OSwgMTAsIDEsIDIxMCwgMTY5LCAKKyAgICAyMzAsIDIyLCAxMCwgMSwgMjMwLCAyMywgMywgMjE1LCAyNTIsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTUsIDEwLCAxLCAKKyAgICAyMjIsIDIwNSwgMTAsIDEsIDIzMCwgMjMsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUxLCAxMCwgMSwgMjM4LCAKKyAgICAyNTIsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjIyLCAxMjYsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTIwLCAxODcsIDU2LCAxMCwgCisgICAgMSwgMjM3LCAyMTcsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgNSwgMjA2LCAKKyAgICAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCA3MCwgNTUsIDEwLCAxLCAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAKKyAgICAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNzAsIDU2LCAxMCwgMSwgMjIxLCAxNzksIAorICAgIDIzOCwgODUsIDEwLCAxLCAyMTUsIDIzMCwgMTAsIDEsIDIyMSwgMTc5LCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMSwgMTc5LCAKKyAgICAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDEwOSwgMTAsIDEsIDIwOSwgMTkyLCAzLCA3MCwgNTUsIAorICAgIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM2LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAKKyAgICAzNywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDIzOCwgMzYsIDEwLCAxLCAyMDQsIDcxLCAKKyAgICAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzMsIDEwLCAxLCAyMjAsIDczLCAxMCwgMSwgNjgsIDEwLCAxLCAKKyAgICAyMDIsIDIxMywgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjEzLCAxMCwgMSwgMjA0LCA3MSwgMywgMTIwLCAxODcsIDU1LCAxMCwgCisgICAgMSwgMjA2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDIwMywgNDcsIDEwLCAxLCA4OSwgMywgMjA5LCAyNDgsIDEwLCAxLCA4OSwgCisgICAgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMDQsIDcxLCAzLCA3MCwgNTUsIDEwLCAxLCA3NCwgMTAsIDEsIDg5LCAzLCAxMjYsIAorICAgIDE4NywgNTYsIDEwLCAxLCA4OSwgMjQ4LCAyMjMsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA1NSwgMTAsIAorICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxMCwgMSwgMjUxLCAxMDksIDEwLCA1LCAxMzgsIDMyLCAyMTUsIDI5LCAzLCAyMjgsIDI5LCAKKyAgICAzLCAxMzcsIDIyNSwgMTI5LCAxMCwgNSwgMTM4LCAzMiwgMjE3LCAxMjAsIDMsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMjksIAorICAgIDEwLCA1LCAxMzgsIDgzLCA4MSwgMTgsIDEwLCA1LCAxMzgsIDIyOCwgMjksIDI1MSwgMzAsIDEwLCA1LCAxMzgsIDIzMCwgCisgICAgMTU4LCAxMCwgNSwgMTM4LCAxMjYsIDI0MywgODMsIDEwLCA1LCAxMzgsIDIxNCwgMTYxLCAxMCwgMjQxLCA4NCwgNzYsIAorICAgIDI1MCwgNywgMTAsIDIxMSwgOTAsIDc2LCAyMTUsIDE0MywgMjQxLCAxMjMsIDIzNiwgMjI3LCAxMCwgNSwgMTM4LCAyMTUsIAorICAgIDE4OSwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjA2LCAyMTksIDIxNiwgMTQyLCAyMDIsIDg0LCAxMCwgNSwgMTM4LCAyNDMsIAorICAgIDg0LCAyMzcsIDY1LCA3NiwgMjI5LCAxNDAsIDEwLCA1LCAxMzgsIDgzLCA2NCwgMTgsIDEwLCA1LCAxMjQsIDIxNCwgMTYxLCAKKyAgICAxMCwgNSwgMTM4LCAyMjUsIDE2NSwgMTAsIDUsIDIwNCwgNzAsIDEwLCA1LCAyMDMsIDQ3LCAxMCwgNSwgMTM4LCAyMDMsIAorICAgIDQ3LCAxMCwgNSwgMTM4LCAyMjEsIDE3OCwgMTAsIDIxOCwgOTcsIDc2LCAyMTUsIDE0LCAxMCwgMjQxLCA5NCwgMjQ2LCAKKyAgICAyMTgsIDEyNCwgMjExLCA2MSwgMTAsIDI0MSwgOTQsIDI0NiwgMjE4LCAxMzgsIDIxMSwgNjEsIDEwLCAyMTUsIDE4OSwgCisgICAgMTM4LCAyMTEsIDYyLCAzLCAyNDAsIDgsIDI0NiwgMjE3LCAxMCwgNSwgMTI0LCAyMjUsIDUsIDEwLCAxLCAyNDQsIDE4NSwgCisgICAgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjQwLCAyMDIsIAorICAgIDI1MCwgMTQwLCAxNywgMjAyLCA4NCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTA1LCAyNDAsIDIwMiwgMjUwLCAxNDAsIAorICAgIDE3LCAxMDgsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0NywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNDAsIAorICAgIDIwMiwgMjUwLCAxNDAsIDE3LCAxNzAsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5NSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKKyAgICAxNywgMjEzLCAxMTEsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjIyLCAKKyAgICA2MywgMTAsIDEsIDIxMywgNDAsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMjA4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMzgsIAorICAgIDExNSwgMywgNzAsIDU2LCAxMCwgMiwgMjEyLCAxMjMsIDI1MCwgMjM1LCAxMCwgMiwgMjEyLCAxMjMsIDIxOCwgMjcsIDIyNCwgCisgICAgMjQwLCAxMCwgMSwgMjM3LCA0NCwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAyMTAsIDg5LCAyNDEsIDg0LCA3NiwgMjE5LCAKKyAgICA4OCwgMjEwLCA4OSwgMjEwLCAxOTUsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjM5LCAxMDIsIAorICAgIDIxMSwgNjEsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MiwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQyLCAyMTAsIAorICAgIDg5LCAyMzYsIDEwNiwgMjQ1LCAyNDIsIDIxMCwgODksIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjEwLCA4OSwgCisgICAgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAKKyAgICAyMjIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjE2LCAxNiwgMjEwLCA4OSwgMjQ1LCAxODYsIAorICAgIDIxMCwgODksIDIzNywgODksIDIyMCwgOTEsIDIxMCwgODksIDIzNywgODksIDIyNCwgMjE3LCAyMTAsIDg5LCAyMzcsIDg5LCAKKyAgICAyNTAsIDYxLCAyMTAsIDg5LCAyNTEsIDE0NiwgODIsIDIxMCwgODksIDEsIDI1MSwgMzUsIDIxMCwgODksIDEsIDIxMCwgCisgICAgMTk5LCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyNDgsIDEwNSwgMjEwLCA4OSwgMSwgMjM4LCAyNDEsIDIxMCwgODksIDEsIAorICAgIDIzOCwgMjQyLCAyMzgsIDIxOSwgMjEwLCA4OSwgMSwgMjQ0LCAxODEsIDIxMCwgODksIDEsIDI0MywgODQsIDI0NCwgMTgyLCAKKyAgICAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgMjA0LCA3MCwgMjEwLCA4OSwgMSwgMjAyLCAxMDcsIAorICAgIDIxMCwgODksIDEsIDIzNywgMTksIDIxMCwgODksIDEsIDIwOSwgMTI4LCAyMTAsIDg5LCAxLCAyMDksIDEyOSwgMjM4LCAKKyAgICAyMTksIDIxMCwgODksIDEsIDIwMiwgMjAwLCAyMTAsIDg5LCAxLCAyMDIsIDIwMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgCisgICAgMjI5LCAyNTAsIDIxMCwgODksIDEsIDIyOCwgMjcsIDIxMCwgODksIDEsIDIyNCwgMTEyLCAyMTAsIDg5LCAxLCAyMjEsIDQwLCAKKyAgICAyMTAsIDg5LCAxLCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNDYsIDIxMywgMTM2LCAyMTAsIDg5LCAxLCA3NCwgMjEwLCA4OSwgCisgICAgMSwgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE2LCA3MywgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE1LCAyNiwgMjEwLCA4OSwgCisgICAgMSwgMjE3LCAxMTMsIDIxMCwgODksIDEsIDIxNSwgMjQ2LCAyMTAsIDg5LCAxLCAyMTIsIDI1NSwgMjEwLCA4OSwgMSwgMjA5LCAKKyAgICAyMDEsIDIxMCwgODksIDEsIDIxOCwgMjMxLCAyNDgsIDkyLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjM4LCAxMTIsIDIxMCwgCisgICAgODksIDEsIDIxOCwgMjMxLCAyNDMsIDI1MiwgMjEwLCA4OSwgMjE3LCAxOTIsIDU1LCAyMTAsIDg5LCAyMTcsIDE5MiwgNTYsIAorICAgIDIxMCwgODksIDIxNywgMTkyLCAyNDIsIDgyLCAyMTAsIDg5LCAyMDIsIDExLCA1NSwgMjEwLCA4OSwgMjAyLCAxMSwgNTYsIAorICAgIDIxMCwgODksIDIwMiwgMTEsIDI0MiwgODIsIDIxMCwgODksIDIxNiwgMTYxLCA1NSwgMjEwLCA4OSwgMjE2LCAxNjEsIDU2LCAKKyAgICAyMTAsIDg5LCAyNDIsIDgzLCAyMDIsIDE4LCAyMzYsIDEwNSwgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjUwLCAyMTEsIAorICAgIDIxMCwgODksIDIzNywgNzAsIDU1LCAyMTAsIDg5LCAyMzcsIDcwLCA1NiwgMjEwLCA4OSwgMjM3LCA2OSwgMjQyLCA4MiwgCisgICAgMjEwLCA4OSwgMjQxLCAxMSwgNTUsIDIxMCwgODksIDI0MSwgMTEsIDU2LCAyMTAsIDg5LCAyMTUsIDEwOSwgMjEwLCA4OSwgCisgICAgMjQwLCA0MSwgMjQzLCA4NSwgMjEwLCA4OSwgMjE3LCAyNSwgMjEwLCA4OSwgMjE1LCAxMzcsIDIxMCwgODksIDEyMCwgODAsIAorICAgIDE4NywgNTUsIDIxMCwgODksIDEyMCwgODAsIDE4NywgNTYsIDIxMCwgODksIDEyNiwgMTg3LCA1NSwgMjEwLCA4OSwgMTI2LCAKKyAgICAxODcsIDU2LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTUsIDIxMCwgODksIDIyMCwgODksIDIyNywgMTE1LCA1NiwgCisgICAgMjEwLCA4OSwgMjIzLCAxOTQsIDIxMCwgODksIDI0OCwgMjIyLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDIwMiwgNzgsIDIxMCwgCisgICAgODksIDEsIDIxMiwgNCwgMjI5LCAxMzMsIDIxMCwgODksIDEsIDIxMiwgNCwgMjQwLCA2MCwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKKyAgICAxMjYsIDE4NywgMjM2LCA1NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIAorICAgIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAorICAgIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDI0OCwgMTI2LCAyNSwgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAorICAgIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAyMzAsIDIzOSwgNSwgMjA2LCAKKyAgICAxNjUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgNTUsIAorICAgIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDEyMCwgMTg3LCAKKyAgICAyMDUsIDI0NCwgMjQ4LCAxMjYsIDI1LCA1LCAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzAsIDIzOSwgNSwgCisgICAgMjA2LCAxNjUsIDU2LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDk1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzOSwgMTQ3LCAxODcsIAorICAgIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDIxOCwgCisgICAgNTksIDE4MywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjQwLCA0OCwgCisgICAgMywgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAKKyAgICAyMjksIDE5MCwgMywgNzAsIDU1LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAKKyAgICAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDgzLCAzLCA3MCwgNTUsIDEwLCAxLCA4MywgMywgNzAsIAorICAgIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDksIDI1MSwgCisgICAgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIyOCwgMjksIDMsIDE0MiwgMTAsIDEsIDIxNiwgMTIzLCAKKyAgICAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIxNCwgCisgICAgMTYyLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDU2LCAKKyAgICAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAyMTQsIDE2MiwgMywgCisgICAgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDEwLCAxLCAyMDksIAorICAgIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NSwgMTAsIDEsIDEzNywgCisgICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDEzNywgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAKKyAgICAxNywgMTI2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgCisgICAgMSwgMjQwLCA3NSwgODksIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgCisgICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjM5LCAxNDcsIDU2LCAxMCwgMSwgMjA0LCA3MSwgMywgMjQwLCAyMDIsIAorICAgIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgCisgICAgNTUsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCA4OSwgCisgICAgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAxNTEsIDMsIDI0MCwgMjAyLCAKKyAgICAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAKKyAgICAyMzksIDE0NywgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjMwLCAyMywgMywgCisgICAgMTIwLCAxODcsIDU1LCAyMDksIDEwNSwgMSwgMjM3LCAxNTcsIDIwOSwgMTA1LCAxLCAyMTMsIDQ5LCAyMDksIDEwNSwgMSwgCisgICAgMjIxLCAxNzcsIDIwOSwgMTA1LCAxLCAyMTYsIDIxNiwgMjA5LCAxMDUsIDEsIDI0OSwgMzAsIDIwOSwgMTA1LCAxLCAyMjcsIAorICAgIDE1OCwgMjA5LCAxMDUsIDEsIDIzMCwgMzcsIDIwOSwgMTA1LCAxLCAyNTEsIDE5LCAyMDksIDEwNSwgMSwgMjA2LCA4NCwgCisgICAgMjA5LCAxMDUsIDEsIDIyNSwgNCwgMjA5LCAxMDUsIDEsIDI0MCwgMTA2LCAyMDksIDEwNSwgMSwgMjQzLCAyNTUsIDIwOSwgCisgICAgMTA1LCAxLCAyMDksIDEwNywgMjA5LCAxMDUsIDEsIDIyOCwgMTA5LCAyMDksIDEwNSwgMSwgMjM5LCA0LCAyMDksIDEwNSwgCisgICAgMSwgMjM4LCA0MiwgMjA5LCAxMDUsIDEsIDIxNCwgMTYwLCAyMDksIDEwNSwgMSwgMjQ0LCAxMzYsIDIwOSwgMTA1LCAxLCAKKyAgICAyMDIsIDk4LCAyMDksIDEwNSwgMSwgMjA5LCAyMDIsIDIwOSwgMTA1LCAxLCAyMDMsIDExMCwgMjA5LCAxMDUsIDEsIDIxOSwgCisgICAgNDcsIDIwOSwgMTA1LCAxLCAyMzAsIDE2NiwgMjA5LCAxMDUsIDEsIDI0NiwgMTczLCAyMDksIDEwNSwgMSwgMjA3LCAyNDAsIAorICAgIDIwOSwgMTA1LCAxLCAyMzcsIDExLCAyMDksIDEwNSwgMSwgMjI5LCAxNDMsIDIwOSwgMTA1LCAxLCAyMDksIDEwNiwgMjA5LCAKKyAgICAxMDUsIDEsIDIwMiwgMTE0LCAyMDksIDEwNSwgMSwgMjEzLCAzOCwgMjA5LCAxMDUsIDEsIDIxNSwgMzIsIDIwOSwgMTA1LCAKKyAgICAxLCAyNDQsIDIxMCwgMjA5LCAxMDUsIDEsIDEzNSwgMjA5LCAxMDUsIDEsIDIwMiwgMTcsIDIwOSwgMTA1LCAxLCAyNTEsIAorICAgIDU2LCAyMDksIDEwNSwgMSwgMjM4LCAxMTMsIDIwOSwgMTA1LCAxLCAyMTcsIDEyMywgMjA5LCAxMDUsIDEsIDIwNCwgMTA5LCAKKyAgICAyMDksIDEwNSwgMjUxLCAxNDgsIDIwOSwgMTA1LCAyNTEsIDI0NiwgMjA5LCAxMDUsIDIzNSwgMTY1LCAyMDksIDEwNSwgCisgICAgMjQxLCAxNjAsIDIwOSwgMTA1LCAyMDcsIDMyLCAyMDksIDEwNSwgMjIwLCAxNywgMjA5LCAxMDUsIDI0MSwgMTcwLCAyMDksIAorICAgIDEwNSwgMjQwLCAxOTMsIDIwOSwgMTA1LCAyMjAsIDg4LCAyMDksIDEwNSwgMjIwLCA5NiwgMjA5LCAxMDUsIDIxMCwgMjIyLCAKKyAgICAyMDksIDEwNSwgMSwgMjIzLCAxMDYsIDIyMSwgMjU1LCAxNywgMjAyLCA4NCwgMjIxLCAyNTUsIDE3LCAxMDUsIDIyMSwgCisgICAgMjU1LCAxNywgMTA4LCAyMjEsIDI1NSwgMTcsIDE0NywgMjIxLCAyNTUsIDE3LCAxNDksIDIyMSwgMjU1LCAxNywgMTcwLCAKKyAgICAyMjEsIDI1NSwgMTcsIDE5NSwgMjIxLCAyNTUsIDE3LCAyMTMsIDExMSwgMjIxLCAyNTUsIDE3LCAxOTksIDIyMSwgMjU1LCAKKyAgICAxNywgMjIyLCA2MywgMjIxLCAyNTUsIDEsIDYzLCAyMjEsIDI1NSwgMSwgMjQxLCAxNjEsIDIyMSwgMjU1LCAxLCA3NSwgCisgICAgMjIxLCAyNTUsIDEsIDc0LCAyMjEsIDI1NSwgMSwgNjgsIDIyMSwgMjU1LCAxLCAyMjAsIDE4LCAyMjEsIDI1NSwgMSwgNzgsIAorICAgIDIyMSwgMjU1LCAxLCAyNDQsIDE5OSwgMjIxLCAyNTUsIDEsIDIyMywgMTYzLCAyMjEsIDI1NSwgMSwgMjQ5LCAzMiwgMjIxLCAKKyAgICAyNTUsIDEsIDE4NSwgMjIxLCAyNTUsIDEsIDIxMCwgMjIsIDIyMSwgMjU1LCAxLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIAorICAgIDI0NiwgMTk5LCAyMjEsIDI1NSwgMSwgMjQ0LCAyMTIsIDIyMSwgMjU1LCAxLCAyMTYsIDIyMCwgMjIxLCAyNTUsIDEsIDIxNSwgCisgICAgMTg1LCAyMjEsIDI1NSwgMSwgMjE1LCAzNiwgMjIxLCAyNTUsIDEsIDIzOCwgMjA3LCAyMjEsIDI1NSwgMSwgMjQwLCAxMDgsIAorICAgIDIyMSwgMjU1LCAxLCAxNzMsIDIyMSwgMjU1LCAxLCAyMjgsIDExMywgMjIxLCAyNTUsIDEsIDIyMywgMTExLCAyMDMsIDI1MiwgCisgICAgMjIxLCAyNTUsIDEsIDE5MiwgMjIxLCAyNTUsIDEsIDIyMSwgMTEsIDIyMSwgMjU1LCAxLCAyMDEsIDIwMSwgMjIxLCAyNTUsIAorICAgIDEsIDE1MiwgMjIxLCAyNTUsIDEsIDIwNCwgMTExLCAyMjEsIDI1NSwgMSwgMTk4LCAyMjEsIDI1NSwgMSwgMjIxLCAxMiwgCisgICAgMjAzLCAyNTIsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDI0NiwgMTk5LCAKKyAgICAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjE2LCAyMjAsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEzOCwgMjA4LCAxNjEsIAorICAgIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDIxNSwgMjQ1LCAKKyAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDI0NCwgMTksIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMTM4LCAKKyAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyMTUsIDI0NSwgCisgICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjIzLCA3MSwgODIsIDIyMSwgMjU1LCAzOSwgNTIsIDcwLCA1NSwgMjIxLCAyNTUsIAorICAgIDEzOCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDEyNCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDE2LCAyMjAsIDE5LCAKKyAgICAyNDQsIDMzLCAyMjEsIDI1NSwgMTYsIDIzOCwgMjA2LCAyMjEsIDI1NSwgMjQ1LCAyMzMsIDIyMSwgMjU1LCAyNDAsIDIxMiwgCisgICAgODIsIDIyMSwgMjU1LCAyMjgsIDg0LCAyMTQsIDI1MiwgMSwgMjUxLCAzNywgMjE0LCAyNTIsIDEsIDI0OCwgNTEsIDIxNCwgCisgICAgMjUyLCAxLCAyMzgsIDI0MCwgMjE0LCAyNTIsIDEsIDI0NCwgMTgzLCAyMTQsIDI1MiwgMSwgMjMwLCAxOTIsIDIxNCwgMjUyLCAKKyAgICAxLCAyNDksIDMwLCAyMTQsIDI1MiwgMSwgMjAyLCA4NywgMjE0LCAyNTIsIDEsIDIzMCwgMjAxLCAyMTQsIDI1MiwgMSwgCisgICAgMjA4LCAyMDAsIDIxNCwgMjUyLCAxLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDEsIDIzMCwgMzgsIDIxNCwgMjUyLCAxLCAyMjgsIAorICAgIDEwNiwgMjE0LCAyNTIsIDEsIDIyNCwgMTEyLCAyMTQsIDI1MiwgMSwgMjIxLCA0MCwgMjE0LCAyNTIsIDEsIDIxMiwgMTIxLCAKKyAgICAyMTQsIDI1MiwgMSwgMjMxLCA0OSwgMjE0LCAyNTIsIDEsIDI0MCwgMjYsIDIxNCwgMjUyLCAxLCAyMDgsIDE4LCAyMTQsIAorICAgIDI1MiwgMSwgMjE3LCA0NCwgMjE0LCAyNTIsIDEsIDIxNSwgMjQ2LCAyMTQsIDI1MiwgMSwgMjEzLCA2NiwgMjE0LCAyNTIsIAorICAgIDEsIDIxMCwgMTcsIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDksIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDgsIDIxNCwgMjUyLCAKKyAgICAxMzEsIDIyMCwgODQsIDIxNCwgMjUyLCAxMzEsIDI0NCwgMTk3LCAyMTQsIDI1MiwgNjUsIDEsIDI0MSwgNDIsIDIwMiwgCisgICAgMTgyLCAyMTQsIDI1MiwgMTMxLCAyNDEsIDQyLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc0LCAyMTQsIAorICAgIDI1MiwgMjIsIDIsIDc0LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgCisgICAgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCA2MywgMjE0LCAKKyAgICAyNTIsIDIyLCAyLCAxNjMsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDYzLCAyMTQsIDI1MiwgNjUsIDEsIDIxMiwgMjI4LCA2MywgCisgICAgMjE0LCAyNTIsIDIyLCAyLCAyMTIsIDIyOCwgNjMsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA2OCwgMjE0LCAyNTIsIDIyLCAyLCAKKyAgICA2OCwgMjE0LCAyNTIsIDY1LCAxLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc1LCAyMTQsIDI1MiwgMjIsIDIsIDc1LCAKKyAgICAyMTQsIDI1MiwgMjIsIDIsIDc4LCAyMTQsIDI1MiwgMjIsIDIsIDIxMCwgMjIyLCAyMTQsIDI1MiwgMTMxLCAyMjIsIDIyMywgCisgICAgMjE0LCAyNTIsIDIxNywgMTc5LCAyMjIsIDIyMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTEsIDgzLCAyMTQsIDI1MiwgMjE3LCAKKyAgICAxNzksIDI1MCwgMjIyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI0OCwgMjAyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI1MCwgNDQsIAorICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjEyLCAyNDMsIDIxNCwgMjUyLCAyNTEsIDE0NiwgODIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgCisgICAgMjI0LCAyNTAsIDIxNywgODAsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjAyLCAyNSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTcsIAorICAgIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMTEzLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwNywgMTcwLCAyMTQsIDI1MiwgCisgICAgMjE3LCAxNzksIDI1MCwgMTExLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgOCwgMjI1LCA3NywgMjE0LCAyNTIsIDIxNywgCisgICAgMTc5LCAyNTAsIDIwNiwgMjI1LCAxMTgsIDEsIDIzNywgMTM0LCAyMjUsIDExOCwgMSwgMjUxLCAyMzIsIDIyNSwgMTE4LCAxLCAKKyAgICAyNTEsIDgxLCAyMjUsIDExOCwgMSwgMjUxLCAxMjIsIDIyNSwgMTE4LCAxLCAyNTEsIDczLCAyMjUsIDExOCwgMSwgMjA2LCAKKyAgICAxODQsIDIyNSwgMTE4LCAxLCAyNTAsIDEsIDIyNSwgMTE4LCAxLCAyMzAsIDIwMSwgMjI1LCAxMTgsIDEsIDI1MCwgNDEsIAorICAgIDIyNSwgMTE4LCAxLCAyNTEsIDQyLCAyMjUsIDExOCwgMSwgMjUxLCA0NywgMjI1LCAxMTgsIDEsIDI1MSwgMzksIDIyNSwgCisgICAgMTE4LCAxLCAyNTAsIDI0NywgMjI1LCAxMTgsIDEsIDI1MCwgMjMxLCAyMjUsIDExOCwgMSwgMjUwLCA4MSwgMjI1LCAxMTgsIAorICAgIDEsIDIzMSwgNDksIDIyNSwgMTE4LCAxLCAyNTAsIDE3NSwgMjI1LCAxMTgsIDEsIDI1MCwgNTEsIDIyNSwgMTE4LCAxLCAKKyAgICAyNTAsIDE0OCwgMjI1LCAxMTgsIDEsIDI1MCwgMTQ0LCAyMjUsIDExOCwgMSwgMjUwLCA3NSwgMjI1LCAxMTgsIDEsIDI1MCwgCisgICAgNDksIDIyNSwgMTE4LCAxLCAyNDIsIDE4LCAyMjUsIDExOCwgMSwgMjMwLCAzMCwgMjI1LCAxMTgsIDEsIDI1MSwgNTksIAorICAgIDIyNSwgMTE4LCAyNTEsIDg3LCA4MiwgMjI1LCAxMTgsIDIwNSwgMTg3LCA4MiwgMjI1LCAxMTgsIDIzOCwgMTc5LCA4MiwgCisgICAgMjI1LCAxMTgsIDIxNywgMTc4LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAKKyAgICAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxODQsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjAsIAorICAgIDE4NywgNTUsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMTcsIAorICAgIDEyMCwgMywgNzAsIDU2LCAxMCwgMSwgMjI4LCAyOSwgMywgNTIsIDE0MiwgMTAsIDEsIDgzLCAzLCAxMjYsIDE4NywgNTUsIAorICAgIDEwLCAxLCA4OSwgMywgMTIwLCAxODcsIDI0OCwgMTI2LCAyNSwgMjM3LCAxMjgsIDU1LCAxMCwgMSwgODksIDMsIDEyMCwgCisgICAgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMjcsIDE0LCAxMCwgMSwgMjA0LCA3MSwgCisgICAgMywgNzAsIDIwNCwgNCwgMTAsIDEsIDIxNSwgMjE1LCAyMDMsIDQ3LCAxMCwgMSwgMTI0LCAyNTEsIDMwLCAxMCwgMSwgMjQ0LCAKKyAgICAxODUsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUyLCAKKyAgICAzLCAyMzAsIDIzOSwgOTUsIDEwLCAxLCAyMTEsIDUzLCAyMDQsIDcwLCAxMCwgMSwgMjAyLCAxMDgsIDMsIDIzMCwgMjM5LCAKKyAgICAyMDYsIDE2NSwgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTYsIAorICAgIDEwLCAyMDcsIDE3NCwgMjQ0LCAxNzMsIDU2LCAxMCwgMjQ1LCA5MywgMjQwLCA3MSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcyLCAKKyAgICAxMCwgMjQ1LCA5MywgMjI5LCAyMjksIDEwLCAyNDUsIDkzLCAyNDAsIDY5LCAxMCwgMjQ1LCA5MywgMjQ0LCAxNzAsIDEwLCAKKyAgICAyNDUsIDkzLCAyMjksIDIyNywgMTAsIDE0MywgMTE4LCA3MCwgNTUsIDEwLCAxNDMsIDEyMCwgMTg3LCA1NSwgMTAsIDE0MywgCisgICAgMjI3LCAxNSwgNTUsIDEwLCAxNDMsIDExOCwgNzAsIDU2LCAxMCwgMTQzLCAxMjAsIDE4NywgNTYsIDEwLCAxNDMsIDIyNywgCisgICAgMTUsIDU2LCAxMCwgMTcxLCAyNDAsIDY5LCAxMCwgMTcxLCAyNDQsIDE3MCwgMTAsIDE3MSwgMjI5LCAyMjcsIDEwLCA1LCAKKyAgICAxMzgsIDIwNCwgNzAsIDEwLCAyNDAsIDcyLCAzLCAyMTUsIDI1MiwgMTAsIDI0MCwgNzIsIDMsIDcwLCA1NSwgMTAsIDIyOSwgCisgICAgMjMwLCAzLCA3MCwgNTYsIDEwLCA0OSwgMjUwLCA5NSwgNTUsIDEwLCA1MCwgMjUwLCA5NSwgNTUsIDEwLCA0OSwgMjUwLCAKKyAgICA5NSwgNTYsIDEwLCA1MCwgMjUwLCA5NSwgNTYsIDEwLCA1MiwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNTIsIDUwLCAyNTAsIAorICAgIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDUwLCAyNTAsIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDI0NCwgMTczLCAzLCAKKyAgICAyNDMsIDg1LCAxMCwgMTMxLCAyMTIsIDE1NCwgMjIxLCAxNzksIDIzOCwgODUsIDkyLCAyLCAyMzAsIDIzOSwgMjQ3LCA1MiwgCisgICAgOTIsIDIsIDI0NywgNTIsIDkyLCAyLCAyNTAsIDE4MCwgOTIsIDIsIDIwNSwgMTk5LCA5MiwgMSwgMjEyLCAyMjgsIDYzLCAKKyAgICA5MiwgMSwgNjMsIDkyLCAxLCAyNTIsIDI1LCA5MiwgMSwgNzUsIDkyLCAxLCAyMzEsIDgzLCA5MiwgMSwgNjgsIDkyLCAxLCAKKyAgICAyMDYsIDE3OCwgOTIsIDEsIDEyNSwgMTQ2LCA5MiwgMSwgMTI1LCAxNTksIDkyLCAxLCAyNDcsIDU1LCA3NCwgOTIsIDEsIAorICAgIDIxMiwgMjI4LCA3NCwgOTIsIDEsIDc0LCA5MiwgMSwgMjUxLCA2NCwgOTIsIDEsIDI0NywgNTUsIDc4LCA5MiwgMSwgMjEyLCAKKyAgICAyMjgsIDc4LCA5MiwgMSwgNzgsIDkyLCAxLCAyNTAsIDM0LCA5MiwgMSwgMTczLCA5MiwgMSwgMjI5LCAxNDQsIDkyLCAxLCAKKyAgICAyMzksIDgsIDkyLCAxLCAyMzgsIDExOSwgOTIsIDEsIDIyMiwgMjAzLCA5MiwgMSwgMjQ3LCA5MiwgOTIsIDEsIDI0NiwgCisgICAgMTk5LCA5MiwgMSwgMjMwLCAxODEsIDkyLCAxLCAyMzAsIDE0OSwgOTIsIDEsIDIyMSwgMTEsIDkyLCAxLCAyMDcsIDI0MSwgCisgICAgOTIsIDEsIDIwNywgMjI5LCA5MiwgMSwgMjQ0LCAxMjAsIDkyLCAxLCAyNDQsIDEwNCwgOTIsIDEsIDIyMSwgMjI3LCA5MiwgCisgICAgMSwgMjEwLCAyMiwgOTIsIDEsIDIwOSwgMTA4LCA5MiwgMSwgMjQ0LCAyMTIsIDkyLCAxLCAyNDQsIDEsIDkyLCAxLCAyMDEsIAorICAgIDIwMSwgOTIsIDEsIDIyMSwgMjA5LCA5MiwgMSwgMTg1LCA5MiwgMSwgMjE4LCAyMDgsIDkyLCAxLCAyNDksIDMyLCA5MiwgMSwgCisgICAgMjQ4LCA5OCwgOTIsIDEsIDE5MiwgOTIsIDEsIDE5OCwgOTIsIDEsIDIxNiwgMjIwLCA5MiwgMSwgMjE1LCAxODUsIDkyLCAxLCAKKyAgICAyMjgsIDExMywgOTIsIDEsIDIyNywgNzcsIDkyLCAxLCAyMjcsIDY4LCA5MiwgMSwgMjA2LCA4NiwgOTIsIDEsIDIxMywgOTAsIAorICAgIDkyLCAxLCAyMTEsIDE2NCwgOTIsIDEsIDIxNSwgMzYsIDkyLCAxLCAxNTIsIDkyLCAyMiwgMiwgMjIwLCA3MywgOTIsIDIyLCAKKyAgICAyLCAyMjAsIDE2LCA5MiwgMiwgMjIxLCA1MSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyMiwgMiwgMjUyLCAyNSwgOTIsIDIyLCAKKyAgICAyLCA3NSwgOTIsIDIyLCAyLCAyMzEsIDgzLCA5MiwgMjIsIDIsIDY4LCA5MiwgMjIsIDIsIDIwNiwgMTc4LCA5MiwgMjIsIDIsIAorICAgIDEyNSwgMTQ2LCA5MiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzQsIDkyLCAyMiwgMiwgCisgICAgMjEyLCAyMjgsIDc0LCA5MiwgMjIsIDIsIDc0LCA5MiwgMjIsIDIsIDI1MSwgNjQsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIAorICAgIDkyLCAyMiwgMiwgMjEyLCAyMjgsIDc4LCA5MiwgMjIsIDIsIDc4LCA5MiwgMjIsIDIsIDI1MCwgMzQsIDkyLCAyLCAyMDUsIAorICAgIDIwNCwgOTIsIDIyLCAyLCAyMTcsIDIyOSwgNzQsIDkyLCAyMiwgMiwgMjUwLCAxMywgOTIsIDIyMCwgMzksIDkyLCAyMTEsIAorICAgIDQyLCAyLCAyMDcsIDI2LCA5MiwgMjExLCA0MiwgMiwgMjUwLCAxODIsIDkyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDkyLCAKKyAgICAyNTEsIDEyNiwgMjUxLCAxMzgsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgMTYzLCA3NCwgOTIsIDIyLCAyLCAyMDcsIDI0LCA5MiwgCisgICAgMjIsIDIsIDIwNiwgMTc3LCA5MiwgMSwgMjE3LCAxMjYsIDkyLCAxLCAyMjksIDEyNSwgOTIsIDEsIDIzOCwgOTQsIDkyLCAxLCAKKyAgICAyMDIsIDExNiwgOTIsIDEsIDI0NCwgMTA5LCA5MiwgMSwgMjE2LCA2MSwgOTIsIDEsIDI0MCwgMTA4LCA5MiwgMSwgMjAyLCAKKyAgICAxNjgsIDkyLCAxLCAxMjUsIDIxNSwgMTg2LCA5MiwgMSwgMTI1LCAyMjcsIDc4LCA5MiwgMjIsIDIsIDEyNSwgMTU5LCA5MiwgCisgICAgMjIsIDIsIDEyNSwgMjI3LCA3OCwgOTIsIDI0NCwgMTY2LCA5MiwgNTIsIDI0NCwgMTY2LCA5MiwgMTcsIDIwMiwgODQsIDkyLCAKKyAgICAxNywgMTA1LCA5MiwgMTcsIDEwOCwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE3MCwgOTIsIDE3LCAxOTUsIAorICAgIDkyLCAxNywgMjEzLCAxMTEsIDkyLCAxNywgMTk5LCA5MiwgMTcsIDIyMiwgNjMsIDkyLCAyNTEsIDE0NiwgNTQsIDkyLCAyLCAKKyAgICAxMzgsIDIxMSwgMjI3LCAyNDMsIDg1LCA5MiwgMSwgMjQ3LCA1NSwgNjMsIDkyLCAxLCAyMjAsIDczLCA5MiwgMSwgMjIwLCAKKyAgICAxNiwgOTIsIDEsIDI1MCwgMTMsIDkyLCAxLCAyMDcsIDI0LCA5MiwgMSwgMjA2LCAxNzcsIDkyLCAxLCAyMjUsIDgyLCAyNDQsIAorICAgIDEyMCwgOTIsIDEsIDIwMiwgODAsIDkyLCAxLCA3OSwgMTk4LCA5MiwgMSwgMjM4LCAxNTUsIDkyLCAxLCAyMzAsIDEyOSwgCisgICAgOTIsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDkyLCAxLCAyNDQsIDExMCwgOTIsIDEsIDI0OCwgMTk4LCAxNzksIDI1MCwgMjA5LCAKKyAgICAxNzksIDIsIDI0NywgNTIsIDE3OSwgMiwgMjUwLCAxODAsIDE3OSwgMiwgMjA1LCAxOTksIDE3OSwgMSwgNjMsIDE3OSwgMSwgCisgICAgMjUyLCAyNSwgMTc5LCAxLCA3NSwgMTc5LCAxLCAyMzEsIDgzLCAxNzksIDEsIDY4LCAxNzksIDEsIDIwNiwgMTc4LCAxNzksIAorICAgIDEsIDEyNSwgMTQ2LCAxNzksIDEsIDEyNSwgMTU5LCAxNzksIDEsIDc0LCAxNzksIDEsIDI1MSwgNjQsIDE3OSwgMSwgNzgsIAorICAgIDE3OSwgMSwgMjUwLCAzNCwgMTc5LCAxLCAxNzMsIDE3OSwgMSwgMjI5LCAxNDQsIDE3OSwgMSwgMjM5LCA4LCAxNzksIDEsIAorICAgIDIzOCwgMTE5LCAxNzksIDEsIDIyMiwgMjAzLCAxNzksIDEsIDI0NywgOTIsIDE3OSwgMSwgMjQ2LCAxOTksIDE3OSwgMSwgCisgICAgMjMwLCAxODEsIDE3OSwgMSwgMjMwLCAxNDksIDE3OSwgMSwgMjIxLCAxMSwgMTc5LCAxLCAyMDcsIDI0MSwgMTc5LCAxLCAKKyAgICAyMDcsIDIyOSwgMTc5LCAxLCAyNDQsIDEyMCwgMTc5LCAxLCAyNDQsIDEwNCwgMTc5LCAxLCAyMjEsIDIyNywgMTc5LCAxLCAKKyAgICAyMTAsIDIyLCAxNzksIDEsIDIwOSwgMTA4LCAxNzksIDEsIDI0NCwgMjEyLCAxNzksIDEsIDI0NCwgMSwgMTc5LCAxLCAyMDEsIAorICAgIDIwMSwgMTc5LCAxLCAxODUsIDE3OSwgMSwgMjE4LCAyMDgsIDE3OSwgMSwgMjQ5LCAzMiwgMTc5LCAxLCAyNDgsIDk4LCAKKyAgICAxNzksIDEsIDE5MiwgMTc5LCAxLCAxOTgsIDE3OSwgMSwgMjE2LCAyMjAsIDE3OSwgMSwgMjI4LCAxMTMsIDE3OSwgMSwgCisgICAgMjEzLCA5MCwgMTc5LCAxLCAyMTEsIDE2NCwgMTc5LCAxLCAyMTUsIDM2LCAxNzksIDEsIDE1MiwgMTc5LCAyLCAyMjEsIDUxLCAKKyAgICAxNzksIDIsIDI1MCwgMTcsIDE3OSwgMjIsIDIsIDI1MiwgMjUsIDE3OSwgMjIsIDIsIDc1LCAxNzksIDIyLCAyLCAyMzEsIAorICAgIDgzLCAxNzksIDIyLCAyLCA2OCwgMTc5LCAyMiwgMiwgMjA2LCAxNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzksIDIyLCAKKyAgICAyLCAxMjUsIDIxNSwgMTg2LCAxNzksIDIyLCAyLCA3NCwgMTc5LCAyMiwgMiwgMjUxLCA2NCwgMTc5LCAyMiwgMiwgNzgsIAorICAgIDE3OSwgMjIsIDIsIDI1MCwgMzQsIDE3OSwgMiwgMjA1LCAyMDQsIDE3OSwgMSwgMjI5LCAxMzUsIDIxMCwgMjIsIDE3OSwgCisgICAgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNzksIDEsIDIxNSwgMTg1LCAxNzksIDEsIDIxNiwgNjEsIDE3OSwgMSwgMjAyLCAKKyAgICAxNjgsIDE3OSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc5LCAxLCAxMjUsIDIyNywgNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTU5LCAKKyAgICAxNzksIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3OSwgMTcsIDIwMiwgODQsIDE3OSwgMTcsIDEwNSwgMTc5LCAxNywgMTA4LCAKKyAgICAxNzksIDE3LCAxNDcsIDE3OSwgMTcsIDE0OSwgMTc5LCAxNywgMTcwLCAxNzksIDE3LCAxOTUsIDE3OSwgMTcsIDIxMywgCisgICAgMTExLCAxNzksIDE3LCAxOTksIDE3OSwgMTcsIDIyMiwgNjMsIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDEwMSwgMjQzLCAyMjcsIAorICAgIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDIyNiwgMjUxLCAyNDMsIDIyNywgMTc5LCAyMTUsIDEyMCwgODIsIDE3OSwgMjE1LCAKKyAgICAxMjAsIDU0LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDEwNSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDgsIDE3OSwgCisgICAgMjQ1LCA5MiwgMjIxLCA0MywgMTQ3LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDE0OSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAKKyAgICAxMTgsIDIyNywgMTgwLCAyMDksIDk4LCAyMDksIDkzLCAyNDQsIDMxLCAxNzksIDI0NSwgOTIsIDI0NCwgMzIsIDIxMiwgODIsIAorICAgIDE3OSwgMjMwLCAyMDIsIDE3OSwgMjM4LCAyMzEsIDgyLCAyMzcsIDE5OCwgMiwgMjUxLCAxMjEsIDI0OCwgNjYsIDIzNywgCisgICAgMTk4LCAyLCAyNDgsIDY2LCAyMzcsIDE5OCwgMiwgMjA1LCAxOTksIDIzNywgMTk4LCAxLCA2MywgMjM3LCAxOTgsIDEsIAorICAgIDI1MiwgMjUsIDIzNywgMTk4LCAxLCA3NSwgMjM3LCAxOTgsIDEsIDIzMSwgODMsIDIzNywgMTk4LCAxLCA2OCwgMjM3LCAKKyAgICAxOTgsIDEsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMSwgMjQxLCAxNjEsIDIzNywgMTk4LCAxLCAyNTEsIDY0LCAyMzcsIDE5OCwgCisgICAgMSwgMjIwLCAxOCwgMjM3LCAxOTgsIDEsIDI1MCwgMzQsIDIzNywgMTk4LCAxLCAxNzMsIDIzNywgMTk4LCAxLCAyMjksIAorICAgIDE0NCwgMjM3LCAxOTgsIDEsIDIzOSwgOCwgMjM3LCAxOTgsIDEsIDIzOCwgMTE5LCAyMzcsIDE5OCwgMSwgMjIyLCAyMDMsIAorICAgIDIzNywgMTk4LCAxLCAyNDcsIDkyLCAyMzcsIDE5OCwgMSwgMjQ2LCAxOTksIDIzNywgMTk4LCAxLCAyMzAsIDE4MSwgMjM3LCAKKyAgICAxOTgsIDEsIDIzMCwgMTQ5LCAyMzcsIDE5OCwgMSwgMjIxLCAxMSwgMjM3LCAxOTgsIDEsIDIwNywgMjQxLCAyMzcsIDE5OCwgCisgICAgMSwgMjA3LCAyMjksIDIzNywgMTk4LCAxLCAyNDQsIDEyMCwgMjM3LCAxOTgsIDEsIDI0NCwgMTA0LCAyMzcsIDE5OCwgMSwgCisgICAgMjIxLCAyMjcsIDIzNywgMTk4LCAxLCAyMTAsIDIyLCAyMzcsIDE5OCwgMSwgMjA5LCAxMDgsIDIzNywgMTk4LCAxLCAyNDQsIAorICAgIDIxMiwgMjM3LCAxOTgsIDEsIDI0NCwgMSwgMjM3LCAxOTgsIDEsIDIwMSwgMjAxLCAyMzcsIDE5OCwgMSwgMTg1LCAyMzcsIAorICAgIDE5OCwgMSwgMjE4LCAyMDgsIDIzNywgMTk4LCAxLCAyNDksIDMyLCAyMzcsIDE5OCwgMSwgMjQ4LCA5OCwgMjM3LCAxOTgsIAorICAgIDEsIDE5MiwgMjM3LCAxOTgsIDEsIDE5OCwgMjM3LCAxOTgsIDEsIDIxNiwgMjIwLCAyMzcsIDE5OCwgMSwgMjI4LCAxMTMsIAorICAgIDIzNywgMTk4LCAxLCAyMjcsIDc3LCAyMzcsIDE5OCwgMSwgMjA2LCA4NiwgMjM3LCAxOTgsIDEsIDIxMywgOTAsIDIzNywgCisgICAgMTk4LCAxLCAyMTUsIDM2LCAyMzcsIDE5OCwgMSwgMTUyLCAyMzcsIDE5OCwgMiwgMjIxLCA1MSwgMjM3LCAxOTgsIDIyLCAyLCAKKyAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMjIsIDIsIDc1LCAyMzcsIDE5OCwgMjIsIDIsIDIzMSwgODMsIDIzNywgMTk4LCAyMiwgMiwgCisgICAgNjgsIDIzNywgMTk4LCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMTk4LCAyMiwgMiwgMjQxLCAxNjEsIDIzNywgMTk4LCAyMiwgCisgICAgMiwgMjUxLCA2NCwgMjM3LCAxOTgsIDIyLCAyLCAyMjAsIDE4LCAyMzcsIDE5OCwgMjIsIDIsIDI1MCwgMzQsIDIzNywgMTk4LCAKKyAgICAyLCAyMDUsIDIwNCwgMjM3LCAxOTgsIDIsIDIwNywgMjgsIDIzNywgMTk4LCAxLCAyMjksIDEyNSwgMjM3LCAxOTgsIDEsIAorICAgIDIzOCwgOTQsIDIzNywgMTk4LCAxLCAyMDIsIDExNiwgMjM3LCAxOTgsIDEsIDIxNSwgMTg1LCAyMzcsIDE5OCwgMSwgMjQwLCAKKyAgICAxMDgsIDIzNywgMTk4LCAxNywgMjAyLCA4NCwgMjM3LCAxOTgsIDE3LCAxMDUsIDIzNywgMTk4LCAxNywgMTA4LCAyMzcsIAorICAgIDE5OCwgMTcsIDE0NywgMjM3LCAxOTgsIDE3LCAxNDksIDIzNywgMTk4LCAxNywgMTcwLCAyMzcsIDE5OCwgMTcsIDE5NSwgCisgICAgMjM3LCAxOTgsIDE3LCAyMTMsIDExMSwgMjM3LCAxOTgsIDE3LCAxOTksIDIzNywgMTk4LCAxNywgMjIyLCA2MywgMjM3LCAKKyAgICAxOTgsIDIwOCwgMjA4LCAyMzcsIDE5OCwgMjUxLCAxMjAsIDIzNywgMTk4LCAyMzAsIDIyMiwgMjM3LCAxOTgsIDIwNiwgCisgICAgMjA2LCAyMzcsIDE5OCwgMjQxLCAxMzAsIDIyMCwgMjMsIDIzNywgMTk4LCAyLCAyMDMsIDg1LCAyMzcsIDIxMywgMiwgMjQ3LCAKKyAgICA1MiwgMjM3LCAyMTMsIDIsIDI1MCwgMTgwLCAyMzcsIDIxMywgMiwgMjA1LCAxOTksIDIzNywgMjEzLCAxLCA2MywgMjM3LCAKKyAgICAyMTMsIDEsIDI1MiwgMjUsIDIzNywgMjEzLCAxLCA3NSwgMjM3LCAyMTMsIDEsIDIzMSwgODMsIDIzNywgMjEzLCAxLCA2OCwgCisgICAgMjM3LCAyMTMsIDEsIDIwNiwgMTc4LCAyMzcsIDIxMywgMSwgMTI1LCAxNDYsIDIzNywgMjEzLCAxLCAxMjUsIDE1OSwgMjM3LCAKKyAgICAyMTMsIDIyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDEsIDc0LCAyMzcsIDIxMywgMSwgMjUxLCA2NCwgMjM3LCAyMTMsIAorICAgIDIyLCAyNDcsIDU1LCA3OCwgMjM3LCAyMTMsIDEsIDc4LCAyMzcsIDIxMywgMSwgMjUwLCAzNCwgMjM3LCAyMTMsIDEsIDE3MywgCisgICAgMjM3LCAyMTMsIDEsIDIyOSwgMTQ0LCAyMzcsIDIxMywgMSwgMjM5LCA4LCAyMzcsIDIxMywgMSwgMjM4LCAxMTksIDIzNywgCisgICAgMjEzLCAxLCAyMjIsIDIwMywgMjM3LCAyMTMsIDEsIDI0NywgOTIsIDIzNywgMjEzLCAxLCAyNDYsIDE5OSwgMjM3LCAyMTMsIAorICAgIDEsIDIzMCwgMTgxLCAyMzcsIDIxMywgMSwgMjMwLCAxNDksIDIzNywgMjEzLCAxLCAyMjEsIDExLCAyMzcsIDIxMywgMSwgCisgICAgMjA3LCAyNDEsIDIzNywgMjEzLCAxLCAyMDcsIDIyOSwgMjM3LCAyMTMsIDEsIDI0NCwgMTIwLCAyMzcsIDIxMywgMSwgMjQ0LCAKKyAgICAxMDQsIDIzNywgMjEzLCAxLCAyMjEsIDIyNywgMjM3LCAyMTMsIDEsIDIxMCwgMjIsIDIzNywgMjEzLCAxLCAyMDksIDEwOCwgCisgICAgMjM3LCAyMTMsIDEsIDI0NCwgMjEyLCAyMzcsIDIxMywgMSwgMjQ0LCAxLCAyMzcsIDIxMywgMSwgMjAxLCAyMDEsIDIzNywgCisgICAgMjEzLCAxLCAxODUsIDIzNywgMjEzLCAxLCAyMTgsIDIwOCwgMjM3LCAyMTMsIDEsIDI0OSwgMzIsIDIzNywgMjEzLCAxLCAKKyAgICAyNDgsIDk4LCAyMzcsIDIxMywgMSwgMTkyLCAyMzcsIDIxMywgMSwgMTk4LCAyMzcsIDIxMywgMSwgMjE2LCAyMjAsIDIzNywgCisgICAgMjEzLCAxLCAyMjgsIDExMywgMjM3LCAyMTMsIDEsIDIyNywgNzcsIDIzNywgMjEzLCAxLCAyMDYsIDg2LCAyMzcsIDIxMywgCisgICAgMSwgMjEzLCA5MCwgMjM3LCAyMTMsIDEsIDIxMSwgMTY0LCAyMzcsIDIxMywgMSwgMjE1LCAzNiwgMjM3LCAyMTMsIDEsIAorICAgIDE1MiwgMjM3LCAyMTMsIDIsIDIyMSwgNTEsIDIzNywgMjEzLCAyLCAyNTAsIDE3LCAyMzcsIDIxMywgMjIsIDIsIDI1MiwgCisgICAgMjUsIDIzNywgMjEzLCAyMiwgMiwgNzUsIDIzNywgMjEzLCAyMiwgMiwgMjMxLCA4MywgMjM3LCAyMTMsIDIyLCAyLCA2OCwgCisgICAgMjM3LCAyMTMsIDIyLCAyLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIDE0NiwgMjM3LCAyMTMsIDIyLCAyLCAKKyAgICAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc0LCAyMzcsIDIxMywgMjIsIDIsIDc0LCAyMzcsIAorICAgIDIxMywgMjIsIDIsIDI1MSwgNjQsIDIzNywgMjEzLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAyMiwgMiwgNzgsIAorICAgIDIzNywgMjEzLCAyMiwgMiwgMjUwLCAzNCwgMjM3LCAyMTMsIDIsIDIwNSwgMjA0LCAyMzcsIDIxMywgMjIwLCAzOSwgMjM3LCAKKyAgICAyMTMsIDEsIDEyNSwgMjE1LCAxODYsIDIzNywgMjEzLCAxLCAxMjUsIDIyNywgNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAKKyAgICAxNTksIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMTcsIDIwMiwgODQsIDIzNywgMjEzLCAxNywgCisgICAgMTA1LCAyMzcsIDIxMywgMTcsIDEwOCwgMjM3LCAyMTMsIDE3LCAxNDcsIDIzNywgMjEzLCAxNywgMTQ5LCAyMzcsIDIxMywgCisgICAgMTcsIDE3MCwgMjM3LCAyMTMsIDE3LCAxOTUsIDIzNywgMjEzLCAxNywgMjEzLCAxMTEsIDIzNywgMjEzLCAxNywgMTk5LCAKKyAgICAyMzcsIDIxMywgMTcsIDIyMiwgNjMsIDIzNywgMjEzLCAyNTEsIDE0NiwgNTQsIDIzNywgMjEzLCAyMTUsIDEyMCwgNTQsIAorICAgIDIzNywgMjEzLCAxLCAyMDIsIDgwLCAxOTMsIDIsIDI0NywgNTIsIDE5MywgMiwgMjUwLCAxODAsIDE5MywgMiwgMjA1LCAKKyAgICAxOTksIDE5MywgMSwgNjMsIDE5MywgMSwgMjUyLCAyNSwgMTkzLCAxLCA3NSwgMTkzLCAxLCAyMzEsIDgzLCAxOTMsIDEsIAorICAgIDY4LCAxOTMsIDEsIDIwNiwgMTc4LCAxOTMsIDEsIDEyNSwgMTQ2LCAxOTMsIDEsIDEyNSwgMTU5LCAxOTMsIDEsIDc0LCAKKyAgICAxOTMsIDEsIDI1MSwgNjQsIDE5MywgMSwgNzgsIDE5MywgMSwgMjUwLCAzNCwgMTkzLCAxLCAxNzMsIDE5MywgMSwgMjI5LCAKKyAgICAxNDQsIDE5MywgMSwgMjM5LCA4LCAxOTMsIDEsIDIzOCwgMTE5LCAxOTMsIDEsIDIyMiwgMjAzLCAxOTMsIDEsIDI0NywgOTIsIAorICAgIDE5MywgMSwgMjQ2LCAxOTksIDE5MywgMSwgMjMwLCAxODEsIDE5MywgMSwgMjMwLCAxNDksIDE5MywgMSwgMjIxLCAxMSwgCisgICAgMTkzLCAxLCAyMDcsIDI0MSwgMTkzLCAxLCAyMDcsIDIyOSwgMTkzLCAxLCAyNDQsIDEyMCwgMTkzLCAxLCAyNDQsIDEwNCwgCisgICAgMTkzLCAxLCAyMjEsIDIyNywgMTkzLCAxLCAyMTAsIDIyLCAxOTMsIDEsIDIwOSwgMTA4LCAxOTMsIDEsIDI0NCwgMjEyLCAKKyAgICAxOTMsIDEsIDI0NCwgMSwgMTkzLCAxLCAyMDEsIDIwMSwgMTkzLCAxLCAxODUsIDE5MywgMSwgMjE4LCAyMDgsIDE5MywgMSwgCisgICAgMjQ5LCAzMiwgMTkzLCAxLCAyNDgsIDk4LCAxOTMsIDEsIDE5MiwgMTkzLCAxLCAxOTgsIDE5MywgMSwgMjE2LCAyMjAsIAorICAgIDE5MywgMSwgMjI4LCAxMTMsIDE5MywgMSwgMjI3LCA3NywgMTkzLCAxLCAyMDYsIDg2LCAxOTMsIDEsIDIxMywgOTAsIDE5MywgCisgICAgMSwgMjExLCAxNjQsIDE5MywgMSwgMjE1LCAzNiwgMTkzLCAxLCAxNTIsIDE5MywgMiwgMjIxLCA1MSwgMTkzLCAyLCAyNTAsIAorICAgIDE3LCAxOTMsIDIyLCAyLCAyNTIsIDI1LCAxOTMsIDIyLCAyLCA3NSwgMTkzLCAyMiwgMiwgMjMxLCA4MywgMTkzLCAyMiwgMiwgCisgICAgNjgsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAxOTMsIDIyLCAyLCAxMjUsIDE0NiwgMTkzLCAyMiwgMiwgMTI1LCAyMTUsIAorICAgIDE4NiwgMTkzLCAyMiwgMiwgNzQsIDE5MywgMjIsIDIsIDI1MSwgNjQsIDE5MywgMjIsIDIsIDc4LCAxOTMsIDIyLCAyLCAKKyAgICAyNTAsIDM0LCAxOTMsIDIsIDIwNSwgMjA0LCAxOTMsIDI1MSwgNjUsIDIyNywgMTk2LCA4MiwgMTkzLCAyNTAsIDM1LCAyMjcsIAorICAgIDE5NiwgODIsIDE5MywgMSwgMjE1LCAxODUsIDE5MywgMSwgMjE2LCA2MSwgMTkzLCAxLCAyMDIsIDE2OCwgMTkzLCAxLCAKKyAgICAxMjUsIDIxNSwgMTg2LCAxOTMsIDEsIDEyNSwgMjI3LCA3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNTksIDE5MywgMjIsIDIsIAorICAgIDEyNSwgMjI3LCA3OCwgMTkzLCAxNywgMjAyLCA4NCwgMTkzLCAxNywgMTA1LCAxOTMsIDE3LCAxMDgsIDE5MywgMTcsIDE0NywgCisgICAgMTkzLCAxNywgMTQ5LCAxOTMsIDE3LCAxNzAsIDE5MywgMTcsIDE5NSwgMTkzLCAxNywgMjEzLCAxMTEsIDE5MywgMTcsIAorICAgIDE5OSwgMTkzLCAxNywgMjIyLCA2MywgMTkzLCAyMzAsIDIwMiwgMTkzLCAxLCAyMDQsIDExMSwgMTkzLCAyMzksIDEzOCwgCisgICAgMTE4LCAyMTcsIDU1LCAxOTMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxOTMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIAorICAgIDE5MywgMjM5LCAxMzgsIDExOCwgMjEyLCA4MCwgMTkzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTkzLCAyMzksIDEzOCwgCisgICAgMTI2LCAyMTIsIDc5LCA0NCwgMiwgMjUwLCAxODAsIDQ0LCAyLCAyMDUsIDE5OSwgNDQsIDEsIDYzLCA0NCwgMSwgMjUyLCAKKyAgICAyNSwgNDQsIDEsIDc1LCA0NCwgMSwgMjMxLCA4MywgNDQsIDEsIDY4LCA0NCwgMSwgMjA2LCAxNzgsIDQ0LCAxLCA3NCwgNDQsIAorICAgIDEsIDI0MSwgMTYxLCA0NCwgMSwgMjUxLCA2NCwgNDQsIDEsIDc4LCA0NCwgMSwgMjIwLCAxOCwgNDQsIDEsIDI1MCwgMzQsIAorICAgIDQ0LCAxLCAxNzMsIDQ0LCAxLCAyMjIsIDIwMywgNDQsIDEsIDI0NywgOTIsIDQ0LCAxLCAyMzAsIDE4MSwgNDQsIDEsIDIyMSwgCisgICAgMTEsIDQ0LCAxLCAyMDcsIDI0MSwgNDQsIDEsIDIyMSwgMjI3LCA0NCwgMSwgMjEwLCAyMiwgNDQsIDEsIDIwMSwgMjAxLCAKKyAgICA0NCwgMSwgMjIxLCAyMDksIDQ0LCAxLCAxODUsIDQ0LCAxLCAxOTIsIDQ0LCAxLCAxOTgsIDQ0LCAxLCAyMTYsIDIyMCwgNDQsIAorICAgIDEsIDIxNSwgMTg1LCA0NCwgMSwgMjI4LCAxMTMsIDQ0LCAxLCAyMjcsIDc3LCA0NCwgMSwgMjI3LCA2OCwgNDQsIDEsIDIwNiwgCisgICAgODYsIDQ0LCAxLCAyMTMsIDkwLCA0NCwgMSwgMjExLCAxNjQsIDQ0LCAxLCAyMTUsIDM2LCA0NCwgMSwgMTUyLCA0NCwgMjIsIAorICAgIDIsIDI1MiwgMjUsIDQ0LCAyMiwgMiwgNzUsIDQ0LCAyMiwgMiwgMjMxLCA4MywgNDQsIDIyLCAyLCA2OCwgNDQsIDIyLCAyLCAKKyAgICAyMDYsIDE3OCwgNDQsIDIyLCAyLCA3NCwgNDQsIDIyLCAyLCAyNDEsIDE2MSwgNDQsIDIyLCAyLCAyNTEsIDY0LCA0NCwgMjIsIAorICAgIDIsIDc4LCA0NCwgMjIsIDIsIDIyMCwgMTgsIDQ0LCAyMiwgMiwgMjUwLCAzNCwgNDQsIDIsIDIwNSwgMjA0LCA0NCwgMjIwLCAKKyAgICAzOSwgNDQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgNDQsIDE3LCAyMDIsIDg0LCA0NCwgMTcsIDEwNSwgNDQsIDE3LCAxMDgsIAorICAgIDQ0LCAxNywgMTQ3LCA0NCwgMTcsIDE0OSwgNDQsIDE3LCAxNzAsIDQ0LCAxNywgMTk1LCA0NCwgMTcsIDIxMywgMTExLCA0NCwgCisgICAgMTcsIDE5OSwgNDQsIDE3LCAyMjIsIDYzLCA0NCwgNDIsIDIwOSwgMTUyLCA0NCwgNDIsIDExOCwgMjM2LCAxMSwgNDQsIDQyLCAKKyAgICAxMTgsIDIwOSwgMzYsIDQ0LCAyNDQsIDEzMywgNTQsIDQ0LCAyMjQsIDM4LCA1NCwgNDQsIDIwMywgNTAsIDU0LCA0NCwgCisgICAgMjQ0LCA3MiwgNTQsIDQ0LCAyNDUsIDE0MSwgNTQsIDQ0LCAyNTAsIDgyLCA4NywgNTQsIDQ0LCAyMTUsIDEyMCwgNTQsIDQ0LCAKKyAgICA0MiwgNTQsIDE3NSwgMiwgMzksIDI0NywgNTMsIDU1LCAxNzUsIDIsIDI0NywgNTIsIDE3NSwgMiwgMjUwLCAxODAsIDE3NSwgCisgICAgMiwgMjA1LCAxOTksIDE3NSwgMSwgNjMsIDE3NSwgMSwgMjUyLCAyNSwgMTc1LCAxLCA3NSwgMTc1LCAxLCAyMzEsIDgzLCAKKyAgICAxNzUsIDEsIDY4LCAxNzUsIDEsIDIwNiwgMTc4LCAxNzUsIDEsIDEyNSwgMTQ2LCAxNzUsIDEsIDEyNSwgMTU5LCAxNzUsIDEsIAorICAgIDc0LCAxNzUsIDEsIDI0MSwgMTYxLCAxNzUsIDEsIDI1MSwgNjQsIDE3NSwgMSwgNzgsIDE3NSwgMSwgMjIwLCAxOCwgMTc1LCAKKyAgICAxLCAyNTAsIDM0LCAxNzUsIDEsIDE3MywgMTc1LCAxLCAyMjksIDE0NCwgMTc1LCAxLCAyMzksIDgsIDE3NSwgMSwgMjM4LCAKKyAgICAxMTksIDE3NSwgMSwgMjIyLCAyMDMsIDE3NSwgMSwgMjQ3LCA5MiwgMTc1LCAxLCAyNDYsIDE5OSwgMTc1LCAxLCAyMzAsIAorICAgIDE4MSwgMTc1LCAxLCAyMzAsIDE0OSwgMTc1LCAxLCAyMjEsIDExLCAxNzUsIDEsIDIwNywgMjQxLCAxNzUsIDEsIDIwNywgCisgICAgMjI5LCAxNzUsIDEsIDI0NCwgMTIwLCAxNzUsIDEsIDI0NCwgMTA0LCAxNzUsIDEsIDIyMSwgMjI3LCAxNzUsIDEsIDIxMCwgCisgICAgMjIsIDE3NSwgMSwgMjA5LCAxMDgsIDE3NSwgMSwgMjQ0LCAyMTIsIDE3NSwgMSwgMjQ0LCAxLCAxNzUsIDEsIDIwMSwgMjAxLCAKKyAgICAxNzUsIDEsIDE4NSwgMTc1LCAxLCAyMTgsIDIwOCwgMTc1LCAxLCAyNDksIDMyLCAxNzUsIDEsIDI0OCwgOTgsIDE3NSwgMSwgCisgICAgMTkyLCAxNzUsIDEsIDE5OCwgMTc1LCAxLCAyMTYsIDIyMCwgMTc1LCAxLCAyMTUsIDE4NSwgMTc1LCAxLCAyMjgsIDExMywgCisgICAgMTc1LCAxLCAyMjcsIDc3LCAxNzUsIDEsIDIyNywgNjgsIDE3NSwgMSwgMjA2LCA4NiwgMTc1LCAxLCAyMTMsIDkwLCAxNzUsIAorICAgIDEsIDIxMSwgMTY0LCAxNzUsIDEsIDIxNSwgMzYsIDE3NSwgMSwgMTUyLCAxNzUsIDIsIDI1MCwgMTcsIDE3NSwgMjIsIDIsIAorICAgIDI1MiwgMjUsIDE3NSwgMjIsIDIsIDc1LCAxNzUsIDIyLCAyLCAyMzEsIDgzLCAxNzUsIDIyLCAyLCA2OCwgMTc1LCAyMiwgMiwgCisgICAgMjA2LCAxNzgsIDE3NSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzUsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDIyLCAyLCAKKyAgICA3NCwgMTc1LCAyMiwgMiwgMjQxLCAxNjEsIDE3NSwgMjIsIDIsIDI1MSwgNjQsIDE3NSwgMjIsIDIsIDc4LCAxNzUsIDIyLCAKKyAgICAyLCAyMjAsIDE4LCAxNzUsIDIyLCAyLCAyNTAsIDM0LCAxNzUsIDIsIDIwNSwgMjA0LCAxNzUsIDIyNywgMTk2LCA4MiwgCisgICAgMTc1LCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE3NSwgMSwgMjA4LCAyMCwgMTc1LCAxLCAyNDEsIDI1NSwgMTc1LCAxLCAKKyAgICAyMTUsIDE2NiwgMTc1LCAxLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDEsIDEyNSwgMjI3LCA3OCwgMTc1LCAyMiwgMiwgMTI1LCAKKyAgICAxNTksIDE3NSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTc1LCAxNywgMjAyLCA4NCwgMTc1LCAxNywgMTA1LCAxNzUsIDE3LCAKKyAgICAxMDgsIDE3NSwgMTcsIDE0NywgMTc1LCAxNywgMTQ5LCAxNzUsIDE3LCAxNzAsIDE3NSwgMTcsIDE5NSwgMTc1LCAxNywgCisgICAgMjEzLCAxMTEsIDE3NSwgMTcsIDE5OSwgMTc1LCAxNywgMjIyLCA2MywgMTc1LCAyMzksIDEzOCwgMTcsIDIwMiwgODUsIDM1LCAKKyAgICAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgCisgICAgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyMCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAKKyAgICAxMzgsIDE3LCAxMjYsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgCisgICAgMjQwLCAyMjUsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyNDAsIDIyNSwgMjE4LCAKKyAgICAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyNiwgMzUsIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIAorICAgIDIsIDIwNywgMTY0LCAyMDAsIDIsIDI0NywgNTIsIDIwMCwgMiwgMjUwLCAxODAsIDIwMCwgMiwgMjA1LCAxOTksIDIwMCwgMSwgCisgICAgNjMsIDIwMCwgMSwgMjUyLCAyNSwgMjAwLCAxLCA3NSwgMjAwLCAxLCAyMzEsIDgzLCAyMDAsIDEsIDY4LCAyMDAsIDEsIAorICAgIDIwNiwgMTc4LCAyMDAsIDEsIDEyNSwgMTQ2LCAyMDAsIDEsIDEyNSwgMTU5LCAyMDAsIDEsIDc0LCAyMDAsIDEsIDI0MSwgCisgICAgMTYxLCAyMDAsIDEsIDI1MSwgNjQsIDIwMCwgMSwgNzgsIDIwMCwgMSwgMjIwLCAxOCwgMjAwLCAxLCAyNTAsIDM0LCAyMDAsIAorICAgIDEsIDE3MywgMjAwLCAxLCAyMjksIDE0NCwgMjAwLCAxLCAyMzksIDgsIDIwMCwgMSwgMjM4LCAxMTksIDIwMCwgMSwgMjIyLCAKKyAgICAyMDMsIDIwMCwgMSwgMjQ3LCA5MiwgMjAwLCAxLCAyNDYsIDE5OSwgMjAwLCAxLCAyMzAsIDE4MSwgMjAwLCAxLCAyMzAsIAorICAgIDE0OSwgMjAwLCAxLCAyMjEsIDExLCAyMDAsIDEsIDIwNywgMjQxLCAyMDAsIDEsIDIwNywgMjI5LCAyMDAsIDEsIDI0NCwgCisgICAgMTIwLCAyMDAsIDEsIDI0NCwgMTA0LCAyMDAsIDEsIDIyMSwgMjI3LCAyMDAsIDEsIDIxMCwgMjIsIDIwMCwgMSwgMjA5LCAKKyAgICAxMDgsIDIwMCwgMSwgMjQ0LCAyMTIsIDIwMCwgMSwgMjQ0LCAxLCAyMDAsIDEsIDIwMSwgMjAxLCAyMDAsIDEsIDE4NSwgCisgICAgMjAwLCAxLCAyMTgsIDIwOCwgMjAwLCAxLCAyNDksIDMyLCAyMDAsIDEsIDI0OCwgOTgsIDIwMCwgMSwgMTkyLCAyMDAsIDEsIAorICAgIDE5OCwgMjAwLCAxLCAyMTYsIDIyMCwgMjAwLCAxLCAyMTUsIDE4NSwgMjAwLCAxLCAyMjgsIDExMywgMjAwLCAxLCAyMjcsIAorICAgIDc3LCAyMDAsIDEsIDIwNiwgODYsIDIwMCwgMSwgMjEzLCA5MCwgMjAwLCAxLCAyMTEsIDE2NCwgMjAwLCAxLCAyMTUsIDM2LCAKKyAgICAyMDAsIDEsIDE1MiwgMjAwLCAyLCAyMjEsIDUxLCAyMDAsIDIsIDI1MCwgMTcsIDIwMCwgMjIsIDIsIDI1MiwgMjUsIDIwMCwgCisgICAgMjIsIDIsIDc1LCAyMDAsIDIyLCAyLCAyMzEsIDgzLCAyMDAsIDIyLCAyLCA2OCwgMjAwLCAyMiwgMiwgMjA2LCAxNzgsIAorICAgIDIwMCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDAsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMDAsIDIyLCAyLCA3NCwgMjAwLCAyMiwgCisgICAgMiwgMjQxLCAxNjEsIDIwMCwgMjIsIDIsIDI1MSwgNjQsIDIwMCwgMjIsIDIsIDc4LCAyMDAsIDIyLCAyLCAyMjAsIDE4LCAKKyAgICAyMDAsIDIyLCAyLCAyNTAsIDM0LCAyMDAsIDIsIDIwNSwgMjA0LCAyMDAsIDIyNywgMTk2LCA4MiwgMjAwLCAyNTEsIDY1LCAKKyAgICAyMjcsIDE5NiwgODIsIDIwMCwgMSwgMjQwLCAxMDgsIDIwMCwgMSwgMTI1LCAyMTUsIDE4NiwgMjAwLCAxLCAxMjUsIDIyNywgCisgICAgNzgsIDIwMCwgMjIsIDIsIDEyNSwgMTU5LCAyMDAsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIwMCwgMTcsIDIwMiwgODQsIAorICAgIDIwMCwgMTcsIDEwNSwgMjAwLCAxNywgMTA4LCAyMDAsIDE3LCAxNDcsIDIwMCwgMTcsIDE0OSwgMjAwLCAxNywgMTcwLCAKKyAgICAyMDAsIDE3LCAxOTUsIDIwMCwgMTcsIDIxMywgMTExLCAyMDAsIDE3LCAxOTksIDIwMCwgMTcsIDIyMiwgNjMsIDIwMCwgMiwgCisgICAgMjMwLCAxMzUsIDIwMCwgMiwgMjA2LCAyMjIsIDE2NCwgMiwgMjQ3LCA1MiwgMTY0LCAyLCAyNTAsIDE4MCwgMTY0LCAyLCAKKyAgICAyMDUsIDE5OSwgMTY0LCAxLCA2MywgMTY0LCAxLCAyNTIsIDI1LCAxNjQsIDEsIDc1LCAxNjQsIDEsIDIzMSwgODMsIDE2NCwgCisgICAgMSwgNjgsIDE2NCwgMSwgMjA2LCAxNzgsIDE2NCwgMSwgMTI1LCAxNDYsIDE2NCwgMSwgMTI1LCAxNTksIDE2NCwgMSwgNzQsIAorICAgIDE2NCwgMSwgMjQxLCAxNjEsIDE2NCwgMSwgMjUxLCA2NCwgMTY0LCAxLCA3OCwgMTY0LCAxLCAyMjAsIDE4LCAxNjQsIDEsIAorICAgIDI1MCwgMzQsIDE2NCwgMSwgMTczLCAxNjQsIDEsIDIyOSwgMTQ0LCAxNjQsIDEsIDIzOSwgOCwgMTY0LCAxLCAyMzgsIDExOSwgCisgICAgMTY0LCAxLCAyMjIsIDIwMywgMTY0LCAxLCAyNDcsIDkyLCAxNjQsIDEsIDI0NiwgMTk5LCAxNjQsIDEsIDIzMCwgMTgxLCAKKyAgICAxNjQsIDEsIDIzMCwgMTQ5LCAxNjQsIDEsIDIyMSwgMTEsIDE2NCwgMSwgMjA3LCAyNDEsIDE2NCwgMSwgMjA3LCAyMjksIAorICAgIDE2NCwgMSwgMjQ0LCAxMjAsIDE2NCwgMSwgMjQ0LCAxMDQsIDE2NCwgMSwgMjIxLCAyMjcsIDE2NCwgMSwgMjEwLCAyMiwgCisgICAgMTY0LCAxLCAyMDksIDEwOCwgMTY0LCAxLCAyNDQsIDIxMiwgMTY0LCAxLCAyNDQsIDEsIDE2NCwgMSwgMjAxLCAyMDEsIAorICAgIDE2NCwgMSwgMjIxLCAyMDksIDE2NCwgMSwgMTg1LCAxNjQsIDEsIDIxOCwgMjA4LCAxNjQsIDEsIDI0OSwgMzIsIDE2NCwgMSwgCisgICAgMjQ4LCA5OCwgMTY0LCAxLCAxOTIsIDE2NCwgMSwgMTk4LCAxNjQsIDEsIDIxNiwgMjIwLCAxNjQsIDEsIDIxNSwgMTg1LCAKKyAgICAxNjQsIDEsIDIyOCwgMTEzLCAxNjQsIDEsIDIyNywgNzcsIDE2NCwgMSwgMjI3LCA2OCwgMTY0LCAxLCAyMDYsIDg2LCAxNjQsIAorICAgIDEsIDIxMywgOTAsIDE2NCwgMSwgMjExLCAxNjQsIDE2NCwgMSwgMjE1LCAzNiwgMTY0LCAxLCAxNTIsIDE2NCwgMSwgMjA3LCAKKyAgICAyMTAsIDE2NCwgMiwgMjUwLCAxNywgMTY0LCAyMiwgMiwgMjUyLCAyNSwgMTY0LCAyMiwgMiwgNzUsIDE2NCwgMjIsIDIsIAorICAgIDIzMSwgODMsIDE2NCwgMjIsIDIsIDY4LCAxNjQsIDIyLCAyLCAyMDYsIDE3OCwgMTY0LCAyMiwgMiwgMTI1LCAxNDYsIDE2NCwgCisgICAgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE2NCwgMjIsIDIsIDc0LCAxNjQsIDIyLCAyLCAyNDEsIDE2MSwgMTY0LCAyMiwgMiwgCisgICAgMjUxLCA2NCwgMTY0LCAyMiwgMiwgNzgsIDE2NCwgMjIsIDIsIDIyMCwgMTgsIDE2NCwgMjIsIDIsIDI1MCwgMzQsIDE2NCwgCisgICAgMiwgMjA1LCAyMDQsIDE2NCwgMSwgNzAsIDIxNiwgOTcsIDE2NCwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNjQsIDEsIAorICAgIDI1MCwgMTI2LCAyMzEsIDgzLCAxNjQsIDEsIDEyNSwgMjE1LCAxODYsIDE2NCwgMSwgMTI1LCAyMjcsIDc4LCAxNjQsIDIyLCAKKyAgICAyLCAxMjUsIDE1OSwgMTY0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNjQsIDE3LCAyMDIsIDg0LCAxNjQsIDE3LCAxMDUsIAorICAgIDE2NCwgMTcsIDEwOCwgMTY0LCAxNywgMTQ3LCAxNjQsIDE3LCAxNDksIDE2NCwgMTcsIDE3MCwgMTY0LCAxNywgMTk1LCAKKyAgICAxNjQsIDE3LCAyMTMsIDExMSwgMTY0LCAxNywgMTk5LCAxNjQsIDE3LCAyMjIsIDYzLCAxNjQsIDQyLCAyMDksIDE1MiwgCisgICAgMTY0LCA0MiwgMTE4LCAyMzYsIDExLCAxNjQsIDQyLCAxMTgsIDIwOSwgMzYsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjE3LCAKKyAgICA1NSwgMTY0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTY0LCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNjQsIDI0NCwgCisgICAgMTM4LCA4MiwgMTY0LCAxLCAyNDYsIDEzMSwgMjIxLCAyMjgsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMywgMTYzLCAxNjQsIDEsIAorICAgIDI0NiwgMTMxLCAyMTUsIDE4NiwgMTY0LCAxLCAyNDYsIDEzMSwgMTU5LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjcsIDc4LCAKKyAgICAxNjQsIDEsIDI0NiwgMTMxLCAyMzAsIDU0LCAxNDAsIDIsIDI1MCwgMTc5LCAxNDAsIDIsIDIwNSwgMTk4LCAxNDAsIDEsIAorICAgIDI1MCwgNiwgMTQwLCAxLCAyNTEsIDIzNSwgMTQwLCAxLCAyNTEsIDg5LCAxNDAsIDEsIDI1MSwgMTA0LCAxNDAsIDEsIDIzMCwgCisgICAgMTkxLCAxNDAsIDEsIDIzMSwgODIsIDE0MCwgMSwgMjA2LCAxNjksIDE0MCwgMSwgMjA2LCAxNzIsIDE0MCwgMSwgMjMwLCAKKyAgICAyMTcsIDE0MCwgMSwgMjMwLCAyMTgsIDE0MCwgMSwgMjMxLCA2OCwgMTQwLCAxLCAyMzEsIDcwLCAxNDAsIDEsIDI0MCwgCisgICAgMTk0LCAxNDAsIDEsIDI0MSwgMTU2LCAxNDAsIDEsIDI1MSwgNDksIDE0MCwgMSwgMjE5LCAxODcsIDE0MCwgMSwgMjIwLCAKKyAgICAxMSwgMTQwLCAxLCAyNTAsIDIwLCAxNDAsIDEsIDI1MSwgNSwgMjI5LCAyMDYsIDE0MCwgMSwgMjI1LCAxNDcsIDIyOSwgCisgICAgMjA2LCAxNDAsIDEsIDI1MSwgNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjI1LCAxNDcsIDIzOCwgMjEwLCAxNDAsIDEsIDIyOSwgCisgICAgMjU1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTQsIDIzNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjUxLCA1LCAyNDcsIDgsIDE0MCwgCisgICAgMSwgMjI1LCAxNDcsIDI0NywgOCwgMTQwLCAxLCAyNTEsIDUsIDIzMCwgMTY0LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzAsIAorICAgIDE2NCwgMTQwLCAxLCAyMTAsIDE1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTAsIDE1LCAyMTQsIDIzNCwgMjIzLCAxMDQsIDE0MCwgCisgICAgMSwgMjE0LCAyMzUsIDIzMCwgMTY0LCAxNDAsIDEsIDI1MSwgNSwgMjA3LCAyMzcsIDE0MCwgMSwgMjI1LCAxNDcsIDIwNywgCisgICAgMjM3LCAxNDAsIDEsIDI1MSwgNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjI1LCAxNDcsIDI0NCwgMTExLCAxNDAsIDEsIDIyMywgCisgICAgMTkxLCAyMjMsIDU4LCAxNDAsIDEsIDIxNCwgMjM1LCAyNDQsIDExMSwgMTQwLCAxLCAyNTEsIDUsIDIwOSwgMTk1LCAxNDAsIAorICAgIDEsIDIyNSwgMTQ3LCAyMDksIDE5NSwgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTMxLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIAorICAgIDEzMSwgMTQwLCAxLCAyNDQsIDE2MiwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMzEsIDE0MCwgMSwgMjUxLCAKKyAgICA1LCAyMTksIDQyLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMTksIDQyLCAxNDAsIDEsIDI1MSwgNSwgMjQ4LCAyMDAsIDE0MCwgMSwgCisgICAgMjI1LCAxNDcsIDI0OCwgMjAwLCAxNDAsIDEsIDIyNSwgNjIsIDE0MCwgMSwgMjUwLCAyNDEsIDI0OCwgMjAwLCAxNDAsIDEsIAorICAgIDIwMywgNTcsIDE0MCwgMSwgMjE2LCAxNjQsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyNywgMjQzLCAxNDAsIDEsIDIwNiwgNTcsIAorICAgIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMDcsIDE0MCwgMSwgMjIzLCAxOTEsIDIxNCwgMjA3LCAxNDAsIDEsIDI0NCwgMTYyLCAKKyAgICAyMTQsIDIwNywgMTQwLCAxLCAyMzcsIDcxLCAxNDAsIDEsIDIyMywgMTkxLCAyMjcsIDI0MywgMTQwLCAxLCAyNDAsIDYyLCAKKyAgICAxNDAsIDIsIDI1MSwgMzgsIDE0MCwgMjIsIDIsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyNTEsIDEwNiwgCisgICAgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDI1MSwgMTA2LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjMwLCAyMTQsIDE0MCwgMjIsIAorICAgIDIsIDI0MywgMjAwLCAyMzAsIDIxNCwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyNDMsIAorICAgIDIwMCwgMjE5LCAxNjcsIDE0MCwgMjIsIDIsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyMjksIDExLCAxNDAsIDIyLCAyLCAKKyAgICAyNDMsIDIwMCwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgMjI5LCAxMywgMjQ0LCA1MCwgMTQwLCAyMiwgMiwgMjI5LCAxMiwgCisgICAgMjM3LCAxNTgsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyNDMsIDIwMCwgMjUxLCA5OSwgMTQwLCAKKyAgICAyMiwgMiwgMjI5LCAxMiwgMjM3LCAxNTgsIDIzOCwgMjA5LCAxNDAsIDIyLCAyLCAyMzgsIDIwOSwgMTQwLCAyMjcsIDg5LCAKKyAgICAxNywgMjAyLCA4NCwgMTQwLCAyMjcsIDg5LCAxNywgMTA1LCAxNDAsIDIyNywgODksIDE3LCAxMDgsIDE0MCwgMjI3LCA4OSwgCisgICAgMTcsIDE0NywgMTQwLCAyMjcsIDg5LCAxNywgMTQ5LCAxNDAsIDIyNywgODksIDE3LCAxNzAsIDE0MCwgMjI3LCA4OSwgMTcsIAorICAgIDE5NSwgMTQwLCAyMjcsIDg5LCAxNywgMjEzLCAxMTEsIDE0MCwgMjI3LCA4OSwgMTcsIDE5OSwgMTQwLCAyMjcsIDg5LCAxNywgCisgICAgMjIyLCA2MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjM4LCAyMDksIAorICAgIDE0MCwgMjE3LCAxNzksIDIyOCwgMTk0LCAyMDksIDEwMywgMTY3LCAyMjksIDI3LCAyMzAsIDE4LCAyMDksIDEwMywgMTY3LCAKKyAgICAyMjksIDExNiwgMjI5LCAxMzksIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTE2LCAyMjksIDEwOCwgMjA5LCAxMDMsIDE2NywgCisgICAgMjI5LCAxMTYsIDIyOSwgMTAzLCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMTIsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIyOSwgMTE2LCAyMTYsIDE4NSwgMjA5LCAxMDMsIDE2NywgMjIyLCAxMjksIDIyMiwgMTE2LCAyMDksIDEwMywgMTY3LCAKKyAgICAyNDYsIDExNywgMjQ2LCAxODgsIDIwOSwgMTAzLCAxNjcsIDI0NiwgMTE3LCAyNDYsIDEyNywgMjA5LCAxMDMsIDE2NywgCisgICAgMjQ2LCAxMTcsIDI0NiwgMTg3LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTIsIDEzLCAyMDksIDEwMywgMTY3LCAyNDYsIAorICAgIDExNywgMjQ2LCAxMTMsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDIsIDI1NSwgMjA5LCAxMDMsIDE2NywgMjQzLCAKKyAgICAxMTQsIDI0NiwgMTk2LCAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjE5LCA1MywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgCisgICAgMjA5LCA5NywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjIzLCA4MCwgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjE4LCAKKyAgICAxNzAsIDIwOSwgMTAzLCAxNjcsIDIyMSwgMTkyLCAyMjIsIDIzMCwgMjA5LCAxMDMsIDE2NywgMjQzLCAxMTQsIDI0NCwgNTEsIAorICAgIDIwOSwgMTAzLCAxNjcsIDIwOCwgMTczLCAyMDksIDIyMywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxNiwgMjA5LCAKKyAgICAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxMDQsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgNDMsIDIwOSwgMTAzLCAKKyAgICAxNjcsIDIyMSwgMTkyLCAyMjEsIDg0LCAyMDksIDEwMywgMTY3LCAyNDgsIDI0LCAyNDksIDAsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIxOCwgNzAsIDIxOCwgOTgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTgsIDE3MiwgMjA5LCAxMDMsIDE2NywgMjM5LCAKKyAgICAxODcsIDI0MCwgMTA4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAyMDEsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCisgICAgMTg3LCAyNDAsIDgxLCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE0LCAyNDcsIDIwOSwgMTAzLCAxNjcsIDIyNCwgODMsIAorICAgIDE5MiwgMjA5LCAxMDMsIDE2NywgMjAyLCAyNDgsIDIwMywgODYsIDIwOSwgMTAzLCAxNjcsIDIxNSwgMjI4LCAyMTUsIDE0NCwgCisgICAgMjA5LCAxMDMsIDE2NywgMjE1LCAxNDUsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDIyNywgMTA3LCAyMDksIDEwMywgMTY3LCAKKyAgICAyMjYsIDIzOSwgMjA5LCAxMDMsIDE2NywgMjA0LCAxLCAyMDQsIDEwNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAKKyAgICA2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTUsIDExNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjExLCA5LCAyMDksIAorICAgIDEwMywgMTY3LCAyMzYsIDEzNywgMjM2LCAyMzMsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDI0NiwgOTcsIDIwOSwgMTAzLCAKKyAgICAxNjcsIDE1OCwgMjUwLCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIzNiwgMTM3LCAyMjEsIDE4NywgMjA5LCAxMDMsIDE2NywgCisgICAgMjE5LCAxNDQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA2MywgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIzNywgMTI1LCAKKyAgICAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUyLCAyNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MCwgMjQ3LCAyMDksIAorICAgIDEwMywgMTY3LCAyMTQsIDIyOSwgNzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMzEsIDgzLCAyMDksIDEwMywgMTY3LCAKKyAgICAyMTQsIDIyOSwgMjA3LCAyNCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNywgMjIsIDIwOSwgMTAzLCAxNjcsIDIxNCwgCisgICAgMjI5LCA2OCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNiwgMTc4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MywgMjA5LCAKKyAgICAxMDMsIDI0NSwgOTIsIDE2LCAyNDksIDEsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA3NCwgMjA5LCAxMDMsIDE2NywgCisgICAgMjE0LCAyMjksIDI1MSwgMTA5LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAKKyAgICAyNTEsIDY1LCAyMjUsIDEzNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MSwgNjUsIDIyNSwgMTM2LCAyMDksIDEwMywgCisgICAgMTY3LCAyMjgsIDMyLCAyMDksIDEwMywgMTY3LCAyMjUsIDEzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzMsIDIwOSwgMTAzLCAKKyAgICAxNjcsIDIyNSwgMTQxLCAyNDEsIDEyOSwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIwOSwgNDcsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIyNSwgMTQxLCAyMDgsIDg4LCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjQ2LCAxNzUsIDIwOSwgMTAzLCAxNjcsIDIwOSwgCisgICAgOTUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgNzIsIDIwOSwgMTAzLCAxNjcsIDIwMywgODAsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCisgICAgMTc3LCAyMDksIDEwMywgMTcsIDIwMiwgODQsIDIwOSwgMTAzLCAxNywgMTA1LCAyMDksIDEwMywgMTcsIDEwOCwgMjA5LCAKKyAgICAxMDMsIDE3LCAxNDcsIDIwOSwgMTAzLCAxNywgMTQ5LCAyMDksIDEwMywgMTcsIDE3MCwgMjA5LCAxMDMsIDE3LCAxOTUsIAorICAgIDIwOSwgMTAzLCAxNywgMjEzLCAxMTEsIDIwOSwgMTAzLCAxNywgMTk5LCAyMDksIDEwMywgMTcsIDIyMiwgNjMsIDIwOSwgCisgICAgMTAzLCAxNjcsIDI1MCwgMjE5LCAyMDksIDEwMywgMTY3LCAyMjksIDExMywgMjI4LCAxMiwgMSwgMjI5LCAyNiwgMjI4LCAKKyAgICAxMiwgMSwgMjI5LCAxMTYsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjksIDExNiwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIAorICAgIDIyMiwgMTI4LCAyMjgsIDEyLCAxLCAyNDUsIDI1NCwgMjI4LCAxMiwgMSwgMjEyLCAxNCwgMjA5LCAyMzIsIDIyOCwgMTIsIAorICAgIDEsIDIyMCwgMjMzLCAyMjgsIDEyLCAxLCAyNDMsIDExMywgMjI4LCAxMiwgMSwgMTM1LCAyMjgsIDEyLCAxLCAyMDksIDQ4LCAKKyAgICAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIyMSwgMTkxLCAyMjgsIDEyLCAKKyAgICAxLCAyNDgsIDIzLCAyMjgsIDEyLCAxLCAyMTgsIDY5LCAyMjgsIDEyLCAxLCAyMTgsIDE4MSwgMjEwLCAyMTEsIDIyOCwgMTIsIAorICAgIDEsIDIzOSwgMTg3LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMzksIAorICAgIDE4NywgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIwMiwgMjQ3LCAyMjgsIDEyLCAxLCAKKyAgICAyMjcsIDUwLCAyMjcsIDEwNywgMjI4LCAxMiwgMSwgMjI3LCA1MCwgMjI3LCAxMiwgMjI4LCAxMiwgMSwgMjA0LCAwLCAyMjgsIAorICAgIDEyLCAxLCAyMTIsIDE0LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCA3OCwgCisgICAgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIwOSwgMjMyLCAyMjgsIDEyLCAyNDEsIDEwOCwgMjI4LCAxMiwgMjIsIDIsIDYzLCAKKyAgICAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIzMCwgNCwgMjI4LCAxMiwgMjIsIDIsIDI1MiwgMjUsIDIyOCwgMTIsIDIyLCAKKyAgICAyLCAyNTAsIDI0NywgMjI4LCAxMiwgMjIsIDIsIDc1LCAyMjgsIDEyLCAyMiwgMiwgMjMxLCA4MywgMjI4LCAxMiwgMjIsIDIsIAorICAgIDIwMywgMTI0LCAyMjgsIDEyLCAyMiwgMiwgMjAyLCAxNjksIDIyOCwgMTIsIDIyLCAyLCA2OCwgMjI4LCAxMiwgMjIsIDIsIAorICAgIDIwNiwgMTc4LCAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIyOSwgOSwgMjI4LCAxMiwgMjEzLCAxMzgsIDIsIDIyNywgCisgICAgNDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjAsIDIzMywgMjI4LCAxMiwgMjIsIDIsIDc0LCAyMjgsIDEyLCAyMiwgMiwgCisgICAgMjQxLCAxNDUsIDIyOCwgMTIsIDIyLCAyLCA3OCwgMjI4LCAxMiwgMjIsIDIsIDI1MCwgOCwgMjI4LCAxMiwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDIyOCwgMTIsIDIyOSwgMjcsIDIyOCwgMTEzLCAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyNDEsIDEyOSwgCisgICAgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCAyLCAyMjgsIDEyLCAKKyAgICAxNDMsIDIyNSwgMTQxLCAyNDcsIDE2LCAyMjgsIDEyLCAyNDcsIDU4LCA4MiwgMjI4LCAxMiwgMjIyLCA4MSwgMjI4LCAxMiwgCisgICAgMTcsIDIwMiwgODQsIDIyOCwgMTIsIDE3LCAxMDUsIDIyOCwgMTIsIDE3LCAxMDgsIDIyOCwgMTIsIDE3LCAxNDcsIDIyOCwgCisgICAgMTIsIDE3LCAxNDksIDIyOCwgMTIsIDE3LCAxNzAsIDIyOCwgMTIsIDE3LCAxOTUsIDIyOCwgMTIsIDE3LCAyMTMsIDExMSwgCisgICAgMjI4LCAxMiwgMTcsIDE5OSwgMjI4LCAxMiwgMTcsIDIyMiwgNjMsIDIyOCwgMTIsIDIzNiwgMTM3LCAyMjEsIDE5MSwgMjI4LCAKKyAgICAxMiwgMjM2LCAxMzcsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIyOSwgMTE3LCAyMzgsIDM5LCAyMjgsIDEyLCAxLCAyMjksIAorICAgIDExNywgMjIwLCAyMzMsIDc3LCA0LCAyMjAsIDM5LCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCAKKyAgICAyNiwgNjMsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMTUsIDIzMiwgMjQ4LCAxNjQsIAorICAgIDE5MiwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDI1NSwgMjIsIDIzNywgMjMyLCAyMDgsIDYsIDE5MiwgCisgICAgNzcsIDEzMSwgODEsIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIDEzMSwgMjQ2LCAxMiwgMjAzLCAzLCAKKyAgICAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCA3NywgMTMxLCAyNDcsIDM0LCAyMDMsIDMsIDIyNCwgMTczLCAyMTgsIDE3MSwgCisgICAgMjEzLCA4MywgMTkyLCA3NywgMTMxLCAyMDMsIDMsIDIyNCwgMTczLCAyMDgsIDYsIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgCisgICAgMjE0LCAyMDUsIDIxMywgODIsIDc3LCAxMzEsIDI0NywgMTk2LCAyMDMsIDMsIDIyNCwgMTcyLCA3NywgMTMxLCAyNDgsIDQ1LCAKKyAgICAyMTIsIDIzOCwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjMwLCAyNDMsIDIwOCwgNSwgNzcsIDEzMSwgMjQ0LCA0NCwgCisgICAgMjA4LCA2LCAyNDcsIDE5NSwgNzcsIDEzMSwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIxMywgODIsIDc3LCAxMzEsIAorICAgIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjE1LCAyNTUsIAorICAgIDI0NiwgMTU2LCAyMTEsIDE4MCwgMjEzLCA4MiwgNzcsIDEzMSwgMjE2LCA2NSwgMjM4LCA5LCAyMTMsIDgyLCA3NywgMTMxLCAKKyAgICAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIDE0OSwgMjI1LCAyMSwgMTYzLCAyNDcsIDYxLCA3NywgMTMxLCAyMzcsIDIzMiwgCisgICAgMjA4LCA1LCA3NywgMjI3LCAzNSwgMiwgMjQ2LCAxOTcsIDIxNSwgMTQ4LCA3NywgMjI3LCAzNSwgMiwgMjI3LCAxNTksIAorICAgIDIxNSwgMTQ4LCA3NywgMjUwLCA1NSwgMiwgMjEzLCA5MywgMjM4LCAxOTMsIDI1NSwgMjcsIDIxNSwgMTQ4LCA3NywgMjUwLCAKKyAgICA1NSwgMiwgMjU1LCAyNCwgMTg1LCA3NywgMjUwLCA1NSwgMiwgMjE0LCAxNzgsIDIwOCwgMCwgNzcsIDIsIDIxNiwgMTYwLCAKKyAgICAyNDMsIDEyNywgMjM4LCAxOTIsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgCisgICAgMjQzLCAxMjcsIDIzNywgMjMzLCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIAorICAgIDIyMywgOTksIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIxNiwgMTYwLCAyMjMsIDk4LCA3NywgMTcsIAorICAgIDIwMiwgODQsIDc3LCAxNywgMTA1LCA3NywgMTcsIDEwOCwgNzcsIDE3LCAxNDcsIDc3LCAxNywgMTQ5LCA3NywgMTcsIDE3MCwgCisgICAgNzcsIDE3LCAxOTUsIDc3LCAxNywgMjEzLCAxMTEsIDc3LCAxNywgMTk5LCA3NywgMTcsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAKKyAgICAxMDUsIDc3LCAxNywgMTYyLCAxMDgsIDc3LCAxNywgMTYyLCAxNDcsIDc3LCAxNywgMTYyLCAxNDksIDc3LCAxNywgMTYyLCAKKyAgICAxNzAsIDc3LCAxNywgMTYyLCAxOTUsIDc3LCAxNywgMTYyLCAyMTMsIDExMSwgNzcsIDE3LCAxNjIsIDE5OSwgNzcsIDE3LCAKKyAgICAxNjIsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAyMDIsIDg0LCA3NywgMTMxLCAyNDcsIDE5OCwgMjE1LCAxNDgsIDc3LCAxMzEsIAorICAgIDIyMiwgMTk0LCAyNDcsIDEyNywgMjIwLCAyNDksIDIwMiwgMTksIDc3LCAxMzEsIDI0NywgMzQsIDI1NSwgMjYsIDIxNSwgCisgICAgMTQ5LCAyNDcsIDEyOCwgMjI0LCAxMjYsIDI0NywgNjEsIDc3LCAxMzEsIDIyMiwgMTk0LCAyNDcsIDEyNywgMjEzLCA5NCwgCisgICAgMjE1LCAxNDgsIDc3LCAxMzEsIDI0NiwgMTcxLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjA4LCAyMSwgMjU1LCAyMywgNzcsIAorICAgIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE4MCwgCisgICAgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIAorICAgIDE4MCwgNzcsIDIsIDIwMywgNzIsIDIwOCwgNCwgNzcsIDIsIDIyNSwgMTAxLCAyMDgsIDQsIDc3LCAxLCAxNzMsIDc3LCAxLCAKKyAgICAyMjksIDE0NCwgNzcsIDEsIDIzOSwgOCwgNzcsIDEsIDIzOCwgMTE5LCA3NywgMSwgMjIyLCAyMDMsIDc3LCAxLCAyNDcsIAorICAgIDkyLCA3NywgMSwgMjQ2LCAxOTksIDc3LCAxLCAyMzAsIDE4MSwgNzcsIDEsIDIyMSwgMTEsIDc3LCAxLCAyMDcsIDI0MSwgCisgICAgNzcsIDEsIDIwNywgMjI5LCA3NywgMSwgMjQ0LCAxMjAsIDc3LCAxLCAyNDQsIDEwNCwgNzcsIDEsIDIyMSwgMjI3LCA3NywgCisgICAgMSwgMjEwLCAyMiwgNzcsIDEsIDIwOSwgMTA4LCA3NywgMSwgMjQ0LCAyMTIsIDc3LCAxLCAyNDQsIDEsIDc3LCAxLCAyMDEsIAorICAgIDIwMSwgNzcsIDEsIDE4NSwgNzcsIDEsIDIxOCwgMjA4LCA3NywgMSwgMjQ5LCAzMiwgNzcsIDEsIDI0OCwgOTgsIDc3LCAxLCAKKyAgICAxOTIsIDc3LCAxLCAyMDgsIDIwLCA3NywgMSwgMjA4LCAxMCwgNzcsIDEsIDI0MSwgMjU1LCA3NywgMSwgMjQxLCAyNDksIAorICAgIDc3LCAxLCAyMDQsIDExMSwgNzcsIDEsIDIwMiwgODAsIDc3LCAxLCAyMDIsIDExNiwgNzcsIDEsIDI1NSwgMjksIDc3LCAxLCAKKyAgICAxOTgsIDc3LCAxLCAyMTYsIDIyMCwgNzcsIDEsIDIyOCwgMTEzLCA3NywgMSwgMjEzLCA5MCwgNzcsIDEsIDIxMSwgMTY0LCAKKyAgICA3NywgMSwgMjE1LCAzNiwgNzcsIDEsIDE1MiwgNzcsIDEsIDYzLCA3NywgMSwgMjI4LCAyMjMsIDc3LCAxLCAyMzksIDIyOSwgCisgICAgMjE2LCAyMjAsIDc3LCAxLCAyMjksIDQ3LCA3NywgMSwgMjE1LCAxODUsIDc3LCAyMiwgMiwgMjUyLCAyNSwgNzcsIDIyLCAyLCAKKyAgICA3NSwgNzcsIDIyLCAyLCAyMzEsIDgzLCA3NywgMjIsIDIsIDY4LCA3NywgMjIsIDIsIDIwNiwgMTc4LCA3NywgMjIsIDIsIAorICAgIDEyNSwgMTQ2LCA3NywgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDc3LCAyMiwgMiwgMTI1LCAxNTksIDc3LCAyMiwgMiwgMTI1LCAKKyAgICAyMjcsIDc4LCA3NywgMjIsIDIsIDc0LCA3NywgMjIsIDIsIDI0MSwgMTYxLCA3NywgMjIsIDIsIDc4LCA3NywgMjIsIDIsIAorICAgIDIyMCwgMTgsIDc3LCAyLCAyMTUsIDIzOCwgMjExLCAxMSwgMjIyLCAyMDQsIDIxNSwgMjI3LCA3NywgMiwgMjE1LCAyMzIsIAorICAgIDI0OCwgMTYzLCA3NywgMjIsIDIsIDIxNiwgNzMsIDc1LCA3NywgMjIsIDIsIDIxNiwgNzMsIDIzMSwgODMsIDc3LCAyLCAKKyAgICAyMjAsIDI0OSwgMjAyLCAyMCwgMjIzLCAxMDcsIDI0NCwgMjEyLCA3NywgMiwgMjEyLCAyNywgMjI3LCAyMzYsIDc3LCAxMzEsIAorICAgIDIzNywgMTM5LCA3NywgMTMxLCAyMTksIDEzMiwgNzcsIDIsIDIyNywgMjM5LCAyMTUsIDE0OCwgNzcsIDIsIDIwMywgNzcsIAorICAgIDIxNSwgMTQ4LCA3NywgMiwgMjI3LCAyNDAsIDIwOCwgMjEsIDI0NywgNjEsIDc3LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgCisgICAgMiwgMjM3LCAyMzYsIDI0NywgNjIsIDIxNiwgNjMsIDc3LCAyLCAyMzcsIDIzNiwgMjI1LCAxNCwgMjE2LCA2MywgNzcsIDIsIAorICAgIDIzMCwgMjM5LCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCAKKyAgICA3NywgMjEwLCAyNTQsIDIsIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMiwgMjMwLCAyMzksIDIyNSwgMjQsIAorICAgIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMSwgMTczLCA3NywgMjEwLCAyNTQsIDEsIDIyOSwgMTQ0LCA3NywgMjEwLCAyNTQsIAorICAgIDEsIDIzOSwgOCwgNzcsIDIxMCwgMjU0LCAxLCAyMzgsIDExOSwgNzcsIDIxMCwgMjU0LCAxLCAyMjIsIDIwMywgNzcsIDIxMCwgCisgICAgMjU0LCAxLCAyNDcsIDkyLCA3NywgMjEwLCAyNTQsIDEsIDI0NiwgMTk5LCA3NywgMjEwLCAyNTQsIDEsIDIzMCwgMTgxLCAKKyAgICA3NywgMjEwLCAyNTQsIDEsIDIyMSwgMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjA3LCAyNDEsIDc3LCAyMTAsIDI1NCwgMSwgCisgICAgMjA3LCAyMjksIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMDQsIDc3LCAyMTAsIAorICAgIDI1NCwgMSwgMjIxLCAyMjcsIDc3LCAyMTAsIDI1NCwgMSwgMjEwLCAyMiwgNzcsIDIxMCwgMjU0LCAxLCAyMDksIDEwOCwgCisgICAgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDIxMiwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEsIDc3LCAyMTAsIDI1NCwgMSwgMjAxLCAKKyAgICAyMDEsIDc3LCAyMTAsIDI1NCwgMSwgMTg1LCA3NywgMjEwLCAyNTQsIDEsIDIxOCwgMjA4LCA3NywgMjEwLCAyNTQsIDEsIAorICAgIDI0OSwgMzIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ4LCA5OCwgNzcsIDIxMCwgMjU0LCAxLCAxOTIsIDc3LCAyMTAsIDI1NCwgMSwgCisgICAgMjA4LCAyMCwgNzcsIDIxMCwgMjU0LCAxLCAyMDgsIDEwLCA3NywgMjEwLCAyNTQsIDEsIDI0MSwgMjU1LCA3NywgMjEwLCAKKyAgICAyNTQsIDEsIDI0MSwgMjQ5LCA3NywgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIwMiwgODAsIAorICAgIDc3LCAyMTAsIDI1NCwgMSwgMjAyLCAxMTYsIDc3LCAyMTAsIDI1NCwgMSwgMjU1LCAyOSwgNzcsIDIxMCwgMjU0LCAxLCAKKyAgICAxOTgsIDc3LCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAxMTMsIDc3LCAyMTAsIDI1NCwgCisgICAgMSwgMjEzLCA5MCwgNzcsIDIxMCwgMjU0LCAxLCAyMTEsIDE2NCwgNzcsIDIxMCwgMjU0LCAxLCAyMTUsIDM2LCA3NywgMjEwLCAKKyAgICAyNTQsIDEsIDE1MiwgNzcsIDIxMCwgMjU0LCAxLCA2MywgNzcsIDIxMCwgMjU0LCAxLCAyMjgsIDIyMywgNzcsIDIxMCwgCisgICAgMjU0LCAxLCAyMzksIDIyOSwgMjA0LCAxMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjM5LCAyMjksIDE5OCwgNzcsIDIxMCwgMjU0LCAKKyAgICAxLCAyMzksIDIyOSwgMjE2LCAyMjAsIDc3LCAyMjgsIDIxMCwgMjE1LCAxNDYsIDIyOSwgMTQ0LCA3NywgMjI4LCAyMTAsIAorICAgIDIxNSwgMTQ2LCAyMjksIDE0NSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMjQ3LCA0OSwgMiwgNzksIDI0OCwgCisgICAgMTU1LCA3NywgMjQ3LCA0OSwgMiwgMTU3LCAyNDgsIDE1NSwgNzcsIDI0NywgNDksIDIsIDI0NywgNTAsIDIwOSwgMTg1LCAKKyAgICA3NywgMjQ3LCA0OSwgMiwgMjE0LCAyMDQsIDI1NSwgMjgsIDc3LCAxNiwgMjQyLCA1NSwgMjQ3LCAxOTMsIDc3LCAxNiwgCisgICAgMjE2LCAxNTksIDIxNSwgMjM5LCA3NywgMTYsIDIxOSwgMTU1LCAyMzgsIDE5MSwgNzcsIDE2LCAyMTYsIDE1OSwgMjE1LCAKKyAgICAyNDAsIDIxNiwgNjUsIDIzOCwgOCwgNzcsIDE2LCAyMTgsIDE3MSwgMTg1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5MywgCisgICAgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTQsIDIyMCwgMjM4LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIAorICAgIDE5NCwgMjM3LCAyMzQsIDI1NSwgMjUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyNDcsIDEyOCwgMjU1LCAyNSwgCisgICAgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMTYsIDE2MCwgMjQzLCAxMjYsIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgCisgICAgMjM3LCAyMzMsIDc3LCAxMzEsIDI0NywgMTk3LCAyMTIsIDIzOCwgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAKKyAgICAxMzEsIDIyNCwgODQsIDIwMywgMywgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIAorICAgIDUsIDc3LCAxMzEsIDgxLCAyNDcsIDIyMCwgMjE1LCAyMjksIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIAorICAgIDEzMSwgMjQ2LCAxMiwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMTMsIDk3LCAxOTIsIDIxNiwgCisgICAgMTUsIDIxMCwgMTc0LCA1NCwgMjI3LCAyMjEsIDIxMCwgMTc0LCA1NCwgMjE2LCAxNSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgCisgICAgODMsIDIyNywgMjIxLCAyMTAsIDE3NCwgMiwgMywgMjQzLCA4MywgNzcsIDEzMSwgMjI3LCAyMzEsIDIyNSwgMjUsIDIxNSwgCisgICAgMTQ4LCA3NywgMTMxLCAyMDgsIDExMiwgMjI1LCAyNSwgMjE1LCAxNDgsIDY5LCAxLCAxNzMsIDY5LCAxLCAyMjksIDE0NCwgCisgICAgNjksIDEsIDIzOSwgOCwgNjksIDEsIDIzOCwgMTE5LCA2OSwgMSwgMjIyLCAyMDMsIDY5LCAxLCAyNDcsIDkyLCA2OSwgMSwgCisgICAgMjQ2LCAxOTksIDY5LCAxLCAyMzAsIDE4MSwgNjksIDEsIDIzMCwgMTQ5LCA2OSwgMSwgMjIxLCAxMSwgNjksIDEsIDIyMSwgCisgICAgMTkzLCA2OSwgMSwgMjA3LCAyNDEsIDY5LCAxLCAyMDcsIDIyOSwgNjksIDEsIDI0NCwgMTIwLCA2OSwgMSwgMjQ0LCAxMDQsIAorICAgIDY5LCAxLCAyMjEsIDIyNywgNjksIDEsIDIxMCwgMjIsIDY5LCAxLCAyMDksIDEwOCwgNjksIDEsIDI0NCwgMjEyLCA2OSwgMSwgCisgICAgMjQ0LCAxLCA2OSwgMSwgMjAxLCAyMDEsIDY5LCAxLCAxODUsIDY5LCAxLCAyMTgsIDIwOCwgNjksIDEsIDI0OSwgMzIsIDY5LCAKKyAgICAxLCAyNDgsIDk4LCA2OSwgMSwgMTkyLCA2OSwgMSwgMTk4LCA2OSwgMSwgMjE2LCAyMjAsIDY5LCAxLCAyMjgsIDExMywgNjksIAorICAgIDEsIDIwNCwgMTExLCA2OSwgMSwgMjE1LCAzNiwgNjksIDEsIDE1MiwgNjksIDEsIDIyNywgNzcsIDY5LCAxLCA2MywgNjksIAorICAgIDEsIDIxMywgNjcsIDYzLCA2OSwgMSwgNzUsIDY5LCAxLCAyMzEsIDgzLCA2OSwgMSwgNjgsIDY5LCAxLCAyMDYsIDE3OCwgCisgICAgNjksIDEsIDc0LCA2OSwgMSwgMjI0LCA1NSwgNzQsIDY5LCAxLCA3OCwgNjksIDEsIDI1MCwgMzQsIDY5LCAyMiwgMiwgMjA5LCAKKyAgICAyMzQsIDI1MiwgMjUsIDY5LCAyMiwgMiwgMjUyLCAyNSwgNjksIDIyLCAyLCA3NSwgNjksIDIyLCAyLCAyMzEsIDgzLCA2OSwgCisgICAgMjIsIDIsIDY4LCA2OSwgMjIsIDIsIDIwNiwgMTc4LCA2OSwgMjIsIDIsIDc0LCA2OSwgMjIsIDIsIDI1MSwgNjQsIDY5LCAKKyAgICAyMiwgMiwgMjI0LCA1NSwgMjMxLCA4MywgNjksIDIyLCAyLCAyMjQsIDU1LCA3OCwgNjksIDIyLCAyLCAxODgsIDU1LCA2OSwgCisgICAgMiwgMjUwLCAxODAsIDY5LCAyLCA3MCwgNTYsIDY5LCAyLCAyMDUsIDE5OSwgNjksIDIsIDIwNSwgMjA0LCA2OSwgMiwgMjUwLCAKKyAgICA3OSwgNjksIDEwOSwgMiwgMTc0LCAxOTgsIDY5LCAxMDksIDIsIDE3NCwgMjE2LCAyMjAsIDY5LCAxMDksIDIsIDE3NCwgCisgICAgMjA0LCAxMTEsIDY5LCAxMDksIDIsIDE3NCwgMTUyLCA2OSwgMSwgMjM3LCAyNDksIDIxNSwgMzYsIDY5LCAxNywgMjAyLCAKKyAgICA4NCwgNjksIDE3LCAxMDUsIDY5LCAxNywgMTA4LCA2OSwgMTcsIDE0NywgNjksIDE3LCAxNDksIDY5LCAxNywgMTcwLCA2OSwgCisgICAgMTcsIDE5NSwgNjksIDE3LCAyMTMsIDExMSwgNjksIDE3LCAxOTksIDY5LCAxNywgMjIyLCA2MywgNjksIDIsIDIyNywgODYsIAorICAgIDIxNCwgMTY3LCA2OSwgMiwgMjE0LCAxNjcsIDY5LCAxNiwgMjI3LCA0NCwgNjksIDE2LCAyNDUsIDIyNywgNjksIDE2LCAKKyAgICAyNTEsIDg1LCA2OSwgMTYsIDIzOCwgMTc0LCA2OSwgMSwgMjEzLCA5MCwgNjksIDEsIDIxMSwgMTY0LCA2OSwgMSwgMTI1LCAKKyAgICAxNDYsIDY5LCAxLCAxMjUsIDIxNSwgMTg2LCA2OSwgMSwgMTI1LCAxNTksIDY5LCAxLCAxMjUsIDIyNywgNzgsIDY5LCAyMiwgCisgICAgMiwgMTI1LCAxNDYsIDY5LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgNjksIDIyLCAyLCAxMjUsIDE1OSwgNjksIDIyLCAyLCAKKyAgICAxMjUsIDIyNywgNzgsIDY5LCAxLCAyMjQsIDU1LCAyMjIsIDIwMywgNjksIDEsIDIyNCwgNTUsIDIzMCwgMTQ5LCA2OSwgMSwgCisgICAgMjI0LCA1NSwgMjQ4LCAxOTgsIDY5LCAxLCAyMjQsIDU1LCAyNDgsIDE5MywgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAKKyAgICAyMDEsIDIwMSwgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAxOTIsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMjI4LCAKKyAgICAxMTMsIDY5LCAxLCAyMTMsIDk2LCAyMjksIDIzNywgMjEzLCA5MCwgNjksIDIyLCAyLCAyMTMsIDk2LCAyMjksIDIzNywgCisgICAgMjQwLCAyMzgsIDY5LCAxNDMsIDEzMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIzNywgNzksIDY5LCAxNDMsIDEzMSwgMjEzLCAKKyAgICA5NiwgMjI5LCAyMzcsIDIyOSwgMjAyLCAyMTgsIDE4MCwgNjksIDEsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCisgICAgMjA5LCAxMDgsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIxNywgMTUyLCA2OSwgMjIsIDIsIDIwNCwgCisgICAgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjQwLCAyMzgsIDY5LCAyMiwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAKKyAgICAyMDcsIDI0LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE2MCwgNjksIDIsIDIwNCwgNDQsIAorICAgIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTksIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgCisgICAgMTU4LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1NywgNjksIDIsIDIwNCwgNDQsIDIxNywgCisgICAgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTYsIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMjEsIDIyNywgCisgICAgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwMiwgMTc2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAKKyAgICAyMjksIDIzNywgMjM4LCA4NCwgNjksIDIyLCAyLCAyMzgsIDE4NiwgMjI5LCAyMzcsIDc1LCA2OSwgMjIsIDIsIDIyOSwgCisgICAgMjA3LCAyMjAsIDczLCA2OSwgMjIsIDIsIDIyOSwgMjA3LCA2OCwgNjksIDIyLCAyLCAyMjksIDIwNywgMjQxLCAxNjEsIDY5LCAKKyAgICAxLCAyMTMsIDY3LCAxNzMsIDY5LCAxLCAyMTMsIDY3LCAyMjksIDE0NCwgNjksIDEsIDIxMywgNjcsIDIzOSwgOCwgNjksIDEsIAorICAgIDIxMywgNjcsIDI0NywgOTIsIDY5LCAxLCAyMTMsIDY3LCAyMDIsIDExNiwgNjksIDEsIDIxMywgNjcsIDIyMSwgMTEsIDY5LCAKKyAgICAxLCAyMTMsIDY3LCAyNDQsIDIxMiwgNjksIDEsIDIxMywgNjcsIDIwMSwgMjAxLCA2OSwgMSwgMjEzLCA2NywgMjE4LCAyMDgsIAorICAgIDY5LCAxLCAyMTMsIDY3LCAyNDAsIDEwOCwgNjksIDEsIDIxMywgNjcsIDI0OSwgMzIsIDY5LCAxLCAyMTMsIDY3LCAyMDksIAorICAgIDEwOCwgNjksIDEsIDIxMywgNjcsIDE1MiwgNjksIDEwOSwgMiwgMjEzLCA2NywgMTc0LCAyMDQsIDExMSwgNjksIDIyLCAyLCAKKyAgICAyMTMsIDY3LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDIxMywgNjcsIDc0LCA2OSwgMjIsIDIsIDIxMywgNjcsIDE4OCwgNTUsIAorICAgIDY5LCAyMiwgMiwgMjEzLCA2NywgNDYsIDIwMywgMTI0LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTksIDY5LCAyLCAyMTMsIAorICAgIDY3LCAyMDgsIDE1OCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU2LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTUsIDY5LCAyLCAKKyAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTksIDY5LCAyLCAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTgsIDY5LCAyLCAKKyAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjQxLCA5NSwgMjA4LCAxNjEsIDY5LCAxLCAyMTUsIDEzMCwgMjE5LCAxMzksIDI0MCwgCisgICAgMTA4LCA2OSwgMiwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyMDgsIDE1NiwgNjksIDIxMywgNjcsIDE3LCAyMDIsIDg0LCA2OSwgCisgICAgMjEzLCA2NywgMTcsIDEwNSwgNjksIDIxMywgNjcsIDE3LCAxMDgsIDY5LCAyMTMsIDY3LCAxNywgMTQ3LCA2OSwgMjEzLCAKKyAgICA2NywgMTcsIDE0OSwgNjksIDIxMywgNjcsIDE3LCAxNzAsIDY5LCAyMTMsIDY3LCAxNywgMTk1LCA2OSwgMjEzLCA2NywgMTcsIAorICAgIDIxMywgMTExLCA2OSwgMjEzLCA2NywgMTcsIDE5OSwgNjksIDIxMywgNjcsIDE3LCAyMjIsIDYzLCA2OSwgMiwgMjI5LCAKKyAgICAxMzcsIDIwOCwgMTYwLCA2OSwgMiwgMjI5LCAxMzcsIDIwOCwgMTU4LCA2OSwgMjIsIDIsIDI1MSwgNTEsIDYzLCA2OSwgMjIsIAorICAgIDIsIDI1MSwgNTEsIDI1MSwgNjQsIDY5LCAxNiwgMjEzLCA2NywgMTA1LCA2OSwgMTYsIDIxMywgNjcsIDI0MCwgMjExLCAKKyAgICAxMTQsIDYsIDEsIDI1MCwgMjMxLCAxMTQsIDYsIDEsIDI0OCwgMjQyLCAxMTQsIDYsIDEsIDIzOCwgMjM0LCAxMTQsIDYsIDEsIAorICAgIDI0MywgOTMsIDExNCwgNiwgMSwgMjQxLCA5MiwgMTE0LCA2LCAxLCAyMDUsIDIxMywgMTE0LCA2LCAxLCAyMDIsIDg3LCAKKyAgICAxMTQsIDYsIDEsIDIwOSwgMjMwLCAxMTQsIDYsIDEsIDIzMSwgNDksIDExNCwgNiwgMSwgMjMwLCA0LCAxMTQsIDYsIDEsIAorICAgIDIyOCwgMiwgMTE0LCA2LCAxLCAyMjUsIDEyMiwgMTE0LCA2LCAxLCAyMjMsIDc0LCAxMTQsIDYsIDEsIDIyMCwgMzEsIDExNCwgCisgICAgNiwgMSwgMjE5LCA5MSwgMTE0LCA2LCAxLCAyMDIsIDc2LCAxMTQsIDYsIDEsIDIxNiwgMjAyLCAxMTQsIDYsIDEsIDIxNCwgCisgICAgMjQzLCAxMTQsIDYsIDEsIDIwOSwgMjE4LCAxMTQsIDYsIDEsIDIwNiwgMjU1LCAxMTQsIDYsIDEsIDIxOCwgMjAwLCAxMTQsIAorICAgIDYsIDEsIDIyOSwgMTMyLCAxMTQsIDYsIDEsIDIzOCwgMTEwLCAxMTQsIDYsIDEsIDIxNywgMTExLCAxMTQsIDYsIDEsIDIxMiwgCisgICAgMjU1LCAxMTQsIDYsIDEsIDI0NiwgMTI5LCAxMTQsIDYsIDEsIDI0NywgNjEsIDExNCwgNiwgMSwgMjMwLCAxMzMsIDExNCwgCisgICAgNiwgMSwgMjQ2LCA2OCwgMTE0LCA2LCAxLCAyNDYsIDE4MywgMTE0LCA2LCAxLCAyMDMsIDE4MCwgMTE0LCA2LCAxLCAyMzAsIAorICAgIDE0NiwgMTE0LCA2LCAxLCAyMzcsIDE1NCwgMTE0LCA2LCAxLCAyMzcsIDY3LCAxMTQsIDYsIDEsIDIzNiwgMjU0LCAxMTQsIAorICAgIDYsIDEsIDIwNCwgNjIsIDExNCwgNiwgMSwgMjM3LCA5MiwgMTE0LCA2LCAxLCAyMzYsIDEzMiwgMTE0LCA2LCAxLCAyMDIsIAorICAgIDI0OSwgMTE0LCA2LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDI1MCwgMjMxLCAxMTQsIDEsIDI0OCwgMjQyLCAxMTQsIDEsIDIzOCwgCisgICAgMjM0LCAxMTQsIDEsIDI0MywgOTMsIDExNCwgMSwgMjQxLCA5MiwgMTE0LCAxLCAyMDUsIDIxMywgMTE0LCAxLCAyMDIsIDg3LCAKKyAgICAxMTQsIDEsIDIwOSwgMjMwLCAxMTQsIDEsIDIzMSwgNDksIDExNCwgMSwgMjMwLCA0LCAxMTQsIDEsIDIyOCwgMiwgMTE0LCAKKyAgICAxLCAyMjUsIDEyMiwgMTE0LCAxLCAyMjMsIDc0LCAxMTQsIDEsIDIyMCwgMzEsIDExNCwgMSwgMjE5LCA5MSwgMTE0LCAxLCAKKyAgICAyMDIsIDc2LCAxMTQsIDEsIDIxNiwgMjAyLCAxMTQsIDEsIDIxNCwgMjQzLCAxMTQsIDEsIDIwOSwgMjE4LCAxMTQsIDEsIAorICAgIDIwNiwgMjU1LCAxMTQsIDEsIDIxOCwgMjAwLCAxMTQsIDEsIDIyOSwgMTMyLCAxMTQsIDEsIDIzOCwgMTEwLCAxMTQsIDEsIAorICAgIDIxNywgMTExLCAxMTQsIDEsIDIxMiwgMjU1LCAxMTQsIDEsIDI0NiwgMTI5LCAxMTQsIDEsIDI0NywgNjEsIDExNCwgMSwgCisgICAgMjMwLCAxMzMsIDExNCwgMSwgMjQ2LCA2OCwgMTE0LCAxLCAyNDYsIDE4MywgMTE0LCAxLCAyMDMsIDE4MCwgMTE0LCAxLCAKKyAgICAyMzAsIDE0NiwgMTE0LCAxLCAyMzcsIDE1NCwgMTE0LCAxLCAyMzcsIDY3LCAxMTQsIDEsIDIzNiwgMjU0LCAxMTQsIDEsIAorICAgIDIwNCwgNjIsIDExNCwgMSwgMjM3LCA5MiwgMTE0LCAxLCAyMzYsIDEzMiwgMTE0LCAxLCAyNDAsIDI2LCAxMTQsIDEsIDIwMiwgCisgICAgMjQ5LCAxMTQsIDEsIDI0MSwgMTEwLCAxMTQsIDEsIDIwNywgMTc0LCAyMzgsIDIzNCwgMTE0LCAxLCAyNTEsIDU5LCAxMTQsIAorICAgIDIxOSwgODksIDIxMywgMTMwLCA2NSwgMSwgMTE0LCAyMjMsIDc0LCAxMTQsIDEsIDI1MSwgOTgsIDExNCwgMSwgMjM3LCA5MSwgCisgICAgNTQsIDExNCwgMSwgMjI4LCAxMDQsIDU0LCAyOCwgMTIzLCAyMjksIDU5LCAyOCwgMTIzLCAyMTEsIDE1NiwgMjgsIDEyMywgCisgICAgMjIyLCA5MywgMjgsIDEyMywgMjA4LCAyNDAsIDI4LCAxMjMsIDIxMSwgMTQ1LCAyOCwgMTIzLCAyMTYsIDQ3LCAyOCwgMTIzLCAKKyAgICAyMjQsIDE0MSwgMjgsIDEyMywgMjE4LCAxNTMsIDI4LCAxMjMsIDIxMSwgMTUzLCAyOCwgMTIzLCAyMTIsIDExMSwgMjgsIAorICAgIDEyMywgMjExLCAxNTAsIDI4LCAxMjMsIDIzMSwgMTA2LCAyOCwgMTIzLCAyNDYsIDc0LCAyOCwgMTIzLCAyMTEsIDE2MCwgCisgICAgMjgsIDEyMywgMjQ2LCAxMzgsIDI4LCAxMjMsIDIyOSwgMTIwLCAyOCwgMTIzLCAyMDksIDY2LCAyOCwgMTIzLCAyMTgsIAorICAgIDE5MCwgMjgsIDEyMywgMjM2LCAyNTEsIDI4LCAxMjMsIDIyMiwgODksIDI4LCAxMjMsIDIxMSwgMTU0LCAyOCwgMTIzLCAKKyAgICAyMjIsIDgzLCAyOCwgMTIzLCAyMjIsIDg3LCAyOCwgMTIzLCAyMDgsIDIzNywgMjgsIDEyMywgMjE2LCAzNSwgMjgsIDEyMywgCisgICAgMjExLCAxNTIsIDI4LCAxMjMsIDIxNiwgNDUsIDI4LCAxMjMsIDIyOSwgMjQzLCAyOCwgMTIzLCAyMjQsIDEzNCwgMjgsIAorICAgIDEyMywgMjI5LCAyNDYsIDI4LCAxMjMsIDIxOCwgMTQ4LCAyOCwgMTIzLCAyMTgsIDE0NiwgMjgsIDEyMywgMjE4LCAxMzQsIAorICAgIDI4LCAxMjMsIDIxOCwgMTQyLCAyOCwgMTIzLCAyMTgsIDE0MCwgMjgsIDEyMywgMjE4LCAxMzcsIDI4LCAxMjMsIDIxOCwgCisgICAgMTM5LCAyOCwgMTIzLCAyMTgsIDEzNiwgMjgsIDEyMywgMjE4LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUxLCAyOCwgMTIzLCAKKyAgICAyMTgsIDE1MiwgMjgsIDEyMywgMjE4LCAxMzUsIDI4LCAxMjMsIDIxOCwgMTQ1LCAyOCwgMTIzLCAyMjksIDI0NCwgMjgsIAorICAgIDEyMywgMjI5LCAyNDIsIDI4LCAxMjMsIDIxMiwgMTA0LCAyOCwgMTIzLCAyMTIsIDEwMiwgMjgsIDEyMywgMjEyLCA5NCwgCisgICAgMjgsIDEyMywgMjEyLCA5NywgMjgsIDEyMywgMjEyLCAxMDMsIDI4LCAxMjMsIDIxMiwgOTksIDI4LCAxMjMsIDIxMiwgOTgsIAorICAgIDI4LCAxMjMsIDIxMiwgOTYsIDI4LCAxMjMsIDIxMiwgMTA3LCAyOCwgMTIzLCAyMTIsIDEwOSwgMjgsIDEyMywgMjEyLCAKKyAgICAxMTAsIDI4LCAxMjMsIDIxMiwgMTA1LCAyOCwgMTIzLCAyMTIsIDk1LCAyOCwgMTIzLCAyMTIsIDEwMCwgMjgsIDEyMywgCisgICAgMjEyLCAxMDgsIDI4LCAxMjMsIDI0NiwgMTIwLCAyOCwgMTIzLCAyNDYsIDExOCwgMjgsIDEyMywgMjQ2LCAyMTAsIDI4LCAKKyAgICAxMjMsIDI0NiwgMjA4LCAyOCwgMTIzLCAyMTksIDEwNywgMjgsIDEyMywgMjMxLCAxMDEsIDI4LCAxMjMsIDIzMSwgOTIsIAorICAgIDI4LCAxMjMsIDIzMSwgMTAwLCAyOCwgMTIzLCAyMzEsIDk3LCAyOCwgMTIzLCAyMzEsIDk1LCAyOCwgMTIzLCAyMzEsIDk5LCAKKyAgICAyOCwgMTIzLCAyMTEsIDE1NywgMjgsIDEyMywgMjMxLCAxMDQsIDI4LCAxMjMsIDIzMSwgMTA1LCAyOCwgMTIzLCAyMzEsIAorICAgIDkzLCAyOCwgMTIzLCAyMzEsIDk4LCAyOCwgMTIzLCAyMDMsIDI5LCAyOCwgMTIzLCAyNDYsIDczLCAyOCwgMTIzLCAyNDYsIAorICAgIDEyMSwgMjgsIDEyMywgMjQ2LCAxMTksIDI4LCAxMjMsIDI0NiwgMjExLCAyOCwgMTIzLCAyNDYsIDIwOSwgMjgsIDEyMywgCisgICAgMjQ2LCAxMzYsIDI4LCAxMjMsIDI0NiwgMTM3LCAyOCwgMTIzLCAyNDYsIDEyMiwgMjgsIDEyMywgMjQ2LCAyMTIsIDI4LCAKKyAgICAxMjMsIDIxOCwgMTg4LCAyOCwgMTIzLCAyMjksIDI0NSwgMjgsIDEyMywgMjExLCAxNTgsIDI4LCAxMjMsIDIwMywgMzUsIAorICAgIDI4LCAxMjMsIDIyOSwgNTAsIDI4LCAxMjMsIDIyMiwgODUsIDI4LCAxMjMsIDIyMiwgOTEsIDI4LCAxMjMsIDIyMiwgOTAsIAorICAgIDI4LCAxMjMsIDIwOCwgMjM0LCAyOCwgMTIzLCAyNDAsIDcsIDI4LCAxNzYsIDI0MCwgNywgMjgsIDE3NiwgNjMsIDI4LCAKKyAgICAxNzYsIDI1MSwgMTA5LCAyOCwgMTc2LCAxOTgsIDI4LCAxNzYsIDIwMywgOTksIDI4LCAxNzYsIDI0MSwgNTUsIDI4LCAxNzYsIAorICAgIDc0LCAyOCwgMTc2LCAyMDMsIDM5LCAyOCwgMTc2LCAyMDMsIDUyLCAyOCwgMTc2LCA3OCwgMjgsIDE3NiwgMjA0LCAxMTEsIAorICAgIDI4LCAxNzYsIDIwNCwgMTA3LCAyOCwgMTc2LCAyMjAsIDczLCAyOCwgMTc2LCAyMDIsIDI0NywgMjgsIDE3NiwgNjgsIDI4LCAKKyAgICAxNzYsIDIwNCwgNDgsIDI4LCAxNzYsIDIwNCwgNjIsIDI4LCAxNzYsIDIwNCwgMzAsIDI4LCAxNzYsIDIwMiwgMjEzLCAyOCwgCisgICAgMTc2LCAyNDAsIDIzOCwgMjgsIDE3NiwgMjAzLCAxMSwgMjgsIDE3NiwgNzUsIDI4LCAxNzYsIDI1NSwgMjAsIDI4LCAxNzYsIAorICAgIDI1NSwgMTksIDI4LCAxNzYsIDIwMywgMTEzLCAyOCwgMTc2LCAyMDMsIDExMSwgMjgsIDE3NiwgMjQxLCA1MywgMjgsIDE3NiwgCisgICAgMjQxLCA1MiwgMjgsIDE3NiwgMjQxLCA1NCwgMjgsIDE3NiwgMjAzLCAzOCwgMjgsIDE3NiwgMjAzLCAzNywgMjgsIDE3NiwgCisgICAgMjIwLCAxODEsIDI4LCAxNzYsIDIyMCwgMTgyLCAyOCwgMTc2LCAyMjAsIDE3NSwgMjgsIDE3NiwgMjIwLCAxODAsIDI4LCAKKyAgICAxNzYsIDIyMCwgMTc4LCAyOCwgMTc2LCAyMDIsIDI0MSwgMjgsIDE3NiwgMjAyLCAyNDAsIDI4LCAxNzYsIDIwMiwgMjM5LCAKKyAgICAyOCwgMTc2LCAyMDIsIDI0MiwgMjgsIDE3NiwgMjAyLCAyNDMsIDI4LCAxNzYsIDIwNywgOTcsIDI4LCAxNzYsIDIwNywgOTYsIAorICAgIDI4LCAxNzYsIDIwNywgOTQsIDI4LCAxNzYsIDIwNywgOTAsIDI4LCAxNzYsIDIwNywgOTEsIDI4LCAxNzYsIDIwMiwgMjEyLCAKKyAgICAyOCwgMTc2LCAyMDIsIDIwOSwgMjgsIDE3NiwgMjAyLCAyMTAsIDI4LCAxNzYsIDIwMiwgMjA0LCAyOCwgMTc2LCAyMDIsIAorICAgIDIwNSwgMjgsIDE3NiwgMjAyLCAyMDYsIDI4LCAxNzYsIDIwMiwgMjA4LCAyOCwgMTc2LCAyNDAsIDIzMiwgMjgsIDE3NiwgCisgICAgMjQwLCAyMzQsIDI4LCAxNzYsIDIwMywgMTAsIDI4LCAxNzYsIDIzNSwgMjA1LCAyOCwgMTc2LCAyMzUsIDE5NywgMjgsIAorICAgIDE3NiwgMjM1LCAyMDAsIDI4LCAxNzYsIDIzNSwgMTk4LCAyOCwgMTc2LCAyMzUsIDIwMiwgMjgsIDE3NiwgMjM1LCAyMDQsIAorICAgIDI4LCAxNzYsIDI1MCwgMTM3LCAyOCwgMTc2LCAyNTAsIDEzNCwgMjgsIDE3NiwgMjUwLCAxMzIsIDI4LCAxNzYsIDI1MCwgCisgICAgMTMzLCAyOCwgMTc2LCAyMTEsIDE2MSwgMjgsIDE3NiwgMjU1LCAyMSwgMjgsIDE3NiwgMjAzLCAxMTIsIDI4LCAxNzYsIAorICAgIDIwMywgMzYsIDI4LCAxNzYsIDIyMCwgMTc3LCAyOCwgMTc2LCAyMjAsIDE3NiwgMjgsIDEwNywgMjI5LCA1OSwgMjgsIDEwNywgCisgICAgMjExLCAxNTYsIDI4LCAxMDcsIDIyOSwgNTIsIDI4LCAxMDcsIDIyMiwgOTMsIDI4LCAxMDcsIDIyMiwgOTEsIDI4LCAxMDcsIAorICAgIDIyMiwgOTAsIDI4LCAxMDcsIDIwOCwgMjQwLCAyOCwgMTA3LCAyMTYsIDQ3LCAyOCwgMTA3LCAyMTYsIDQyLCAyOCwgMTA3LCAKKyAgICAyMTYsIDM5LCAyOCwgMTA3LCAyMTYsIDMyLCAyOCwgMTA3LCAyMTYsIDI3LCAyOCwgMTA3LCAyMTYsIDIyLCAyOCwgMTA3LCAKKyAgICAyMTYsIDMzLCAyOCwgMTA3LCAyMTYsIDQ1LCAyOCwgMTA3LCAyMjQsIDE0MSwgMjgsIDEwNywgMjE4LCAxNTMsIDI4LCAxMDcsIAorICAgIDIxOCwgMTQyLCAyOCwgMTA3LCAyMTIsIDExMSwgMjgsIDEwNywgMjExLCAxNTAsIDI4LCAxMDcsIDIzMSwgMTA2LCAyOCwgCisgICAgMTA3LCAyNDYsIDc0LCAyOCwgMTA3LCAyNDYsIDEzOCwgMjgsIDEwNywgMjI5LCAxMjAsIDI4LCAxMDcsIDIwOSwgNjYsIDI4LCAKKyAgICAxMDcsIDIxOCwgMTkwLCAyOCwgMTA3LCAyMzYsIDI1MSwgMjgsIDEwNywgMjI5LCA1MywgMjgsIDEwNywgMjI5LCA1MSwgMjgsIAorICAgIDEwNywgMjIyLCA4OSwgMjgsIDEwNywgMjIyLCA4MywgMjgsIDEwNywgMjIyLCA4NSwgMjgsIDEwNywgMjIyLCA4OCwgMjgsIAorICAgIDEwNywgMjIyLCA4NCwgMjgsIDEwNywgMjA4LCAyMzcsIDI4LCAxMDcsIDIwOCwgMjM0LCAyOCwgMTA3LCAyMTYsIDQwLCAyOCwgCisgICAgMTA3LCAyMTYsIDM1LCAyOCwgMTA3LCAyMTYsIDIxLCAyOCwgMTA3LCAyMTYsIDIwLCAyOCwgMTA3LCAyMTEsIDE1MiwgMjgsIAorICAgIDEwNywgMjE2LCAzNywgMjgsIDEwNywgMjE2LCAzNiwgMjgsIDEwNywgMjE2LCAyOSwgMjgsIDEwNywgMjE2LCAzMSwgMjgsIAorICAgIDEwNywgMjE2LCA0NCwgMjgsIDEwNywgMjE2LCAyNCwgMjgsIDEwNywgMjE2LCAzNCwgMjgsIDEwNywgMjE2LCA0MywgMjgsIAorICAgIDEwNywgMjE2LCAxOSwgMjgsIDEwNywgMjI0LCAxMzcsIDI4LCAxMDcsIDIyNCwgMTMyLCAyOCwgMTA3LCAyMjQsIDEzNCwgCisgICAgMjgsIDEwNywgMjI0LCAxMzEsIDI4LCAxMDcsIDIyNCwgMTI5LCAyOCwgMTA3LCAyMjQsIDEzNSwgMjgsIDEwNywgMjI0LCAKKyAgICAxNDAsIDI4LCAxMDcsIDIyNCwgMTM4LCAyOCwgMTA3LCAyMjksIDI0NiwgMjgsIDEwNywgMjE4LCAxNDQsIDI4LCAxMDcsIAorICAgIDIxOCwgMTQ1LCAyOCwgMTA3LCAyMTgsIDE1MCwgMjgsIDEwNywgMjI5LCAyNDQsIDI4LCAxMDcsIDIxMiwgMTA0LCAyOCwgCisgICAgMTA3LCAyMTIsIDk0LCAyOCwgMTA3LCAyMTIsIDk3LCAyOCwgMTA3LCAyMTIsIDk5LCAyOCwgMTA3LCAyMTksIDEwNywgMjgsIAorICAgIDEwNywgMjMxLCAxMDEsIDI4LCAxMDcsIDIzMSwgOTQsIDI4LCAxMDcsIDIxMSwgMTU3LCAyOCwgMTA3LCAyMzEsIDEwMiwgCisgICAgMjgsIDEwNywgMjAzLCAyOSwgMjgsIDEwNywgMjAzLCAyNSwgMjgsIDEwNywgMjAzLCAyNiwgMjgsIDEwNywgMjE4LCAxODgsIAorICAgIDI4LCAxMDcsIDIyOSwgMjQ1LCAyOCwgMTA3LCAyMzYsIDI0OSwgMjgsIDEwNywgMjM2LCAyNDcsIDI4LCAxMDcsIDIzNiwgCisgICAgMjUwLCAyOCwgMTA3LCAyMzYsIDI0OCwgMjgsIDEwNywgMjAzLCAzNSwgMjgsIDEwNywgMjI5LCA1NSwgMjgsIDEwNywgMjI5LCAKKyAgICA1NCwgMjgsIDEwNywgMjI5LCA1OCwgMjgsIDEwNywgMjI5LCA1NiwgMjgsIDEwNywgMjI5LCA1NywgMjgsIDEwNywgMjExLCAKKyAgICAxNTQsIDMzLCA0LCAxNTIsIDMzLCA0LCAyMzYsIDI2LCAzMywgNCwgMjM3LCAzLCAzMywgNCwgMjM3LCAxNTcsIDMzLCA0LCAKKyAgICAyMzcsIDQ4LCAzMywgNCwgMjM3LCA2NywgMzMsIDQsIDIzNiwgMTM2LCAzMywgNCwgMjM2LCAxMzUsIDMzLCA0LCAyMjgsIAorICAgIDExMywgMzMsIDQsIDIyNiwgMjM5LCAzMywgNCwgMjI3LCAxNDgsIDMzLCA0LCAyMjgsIDExMiwgMzMsIDQsIDIyNywgMjI2LCAKKyAgICAzMywgNCwgMjI3LCAyMzQsIDMzLCA0LCAyMjcsIDQ5LCAzMywgNCwgMjI2LCAyMDcsIDMzLCA0LCAyMzcsIDEyLCAzMywgNCwgCisgICAgMjM3LCA2LCAzMywgNCwgMjM3LCA4LCAzMywgNCwgMjM3LCAxMSwgMzMsIDQsIDIzNywgOSwgMzMsIDQsIDIzNywgMTAsIDMzLCAKKyAgICA0LCAyMzcsIDcsIDMzLCA0LCAyMzcsIDUsIDMzLCA0LCAxOTIsIDMzLCA0LCAyMjMsIDI0NiwgMzMsIDQsIDIyNCwgMTU1LCAKKyAgICAzMywgNCwgMjI1LCAxNzUsIDMzLCA0LCAyMjUsIDgsIDMzLCA0LCAyMjUsIDIwLCAzMywgNCwgMjI0LCA4MiwgMzMsIDQsIAorICAgIDIyMywgMTgwLCAzMywgNCwgMjEwLCA4MCwgMzMsIDQsIDIxMCwgNzQsIDMzLCA0LCAyMTAsIDc2LCAzMywgNCwgMjEwLCA3OSwgCisgICAgMzMsIDQsIDIxMCwgNzcsIDMzLCA0LCAyMTAsIDc4LCAzMywgNCwgMjEwLCA3NSwgMzMsIDQsIDIxMCwgNzMsIDMzLCA0LCAKKyAgICAyMTYsIDIyMCwgMzMsIDQsIDIxNSwgMTQ1LCAzMywgNCwgMjE2LCA1NywgMzMsIDQsIDIxNiwgMjE2LCAzMywgNCwgMjE2LCAKKyAgICAxMzUsIDMzLCA0LCAyMTYsIDE1OCwgMzMsIDQsIDIxNSwgMjI3LCAzMywgNCwgMjE1LCAxMTEsIDMzLCA0LCAyMTUsIDM2LCAKKyAgICAzMywgNCwgMjExLCAxMCwgMzMsIDQsIDIxMiwgMTYyLCAzMywgNCwgMjE1LCAzMywgMzMsIDQsIDIxNCwgMTY1LCAzMywgNCwgCisgICAgMjE0LCAxNzcsIDMzLCA0LCAyMTIsIDEzLCAzMywgNCwgMjEwLCAxNzIsIDMzLCA0LCAyMTMsIDkwLCAzMywgNCwgMjEyLCAKKyAgICAxOTksIDMzLCA0LCAyMTMsIDExLCAzMywgNCwgMjEzLCA4NSwgMzMsIDQsIDIxMywgNDEsIDMzLCA0LCAyMTMsIDQzLCAzMywgCisgICAgNCwgMjEyLCAyNDIsIDMzLCA0LCAyMTIsIDE4MCwgMzMsIDQsIDIxNywgMTI2LCAzMywgNCwgMjE3LCA2NSwgMzMsIDQsIAorICAgIDIxNywgODgsIDMzLCA0LCAyMTcsIDEyNSwgMzMsIDQsIDIxNywgMTA1LCAzMywgNCwgMjE3LCAxMDYsIDMzLCA0LCAyMTcsIAorICAgIDc3LCAzMywgNCwgMjE3LCA3NiwgMzMsIDQsIDIxNywgMTksIDMzLCA0LCAyMTcsIDE1LCAzMywgNCwgMjE3LCAxOCwgMzMsIAorICAgIDQsIDIxNywgMTYsIDMzLCA0LCAyMTcsIDE3LCAzMywgNCwgMjE3LCAxMDIsIDMzLCA0LCAyMTcsIDk0LCAzMywgNCwgMjE3LCAKKyAgICA5NywgMzMsIDQsIDIxNywgMTAxLCAzMywgNCwgMjE3LCA5OCwgMzMsIDQsIDIxNywgOTksIDMzLCA0LCAyMTcsIDk2LCAzMywgCisgICAgNCwgMjE3LCA5MywgMzMsIDQsIDIxNywgODksIDMzLCA0LCAyMTcsIDkyLCAzMywgNCwgMjE3LCA5MCwgMzMsIDQsIDIxNywgCisgICAgOTEsIDMzLCA0LCAyNDksIDMyLCAzMywgNCwgMjQ3LCAxOTMsIDMzLCA0LCAyNDgsIDg2LCAzMywgNCwgMjQ5LCAzMCwgMzMsIAorICAgIDQsIDI0OCwgMTUwLCAzMywgNCwgMjQ4LCAxNjIsIDMzLCA0LCAyNDgsIDIzLCAzMywgNCwgMjQ3LCAxNDIsIDMzLCA0LCAKKyAgICAyMDYsIDg2LCAzMywgNCwgMjA0LCAxNjMsIDMzLCA0LCAyMDUsIDIzMCwgMzMsIDQsIDIwNiwgODUsIDMzLCA0LCAyMDYsIAorICAgIDUwLCAzMywgNCwgMjA2LCA1NSwgMzMsIDQsIDIwNSwgMTg5LCAzMywgNCwgMjA0LCAxNTQsIDMzLCA0LCAyMTAsIDIyLCAzMywgCisgICAgNCwgMjA3LCAyMDMsIDMzLCA0LCAyMDksIDIsIDMzLCA0LCAyMTAsIDE4LCAzMywgNCwgMjA5LCAxNzYsIDMzLCA0LCAyMDksIAorICAgIDE4NywgMzMsIDQsIDEzNSwgMzMsIDQsIDIwNywgMTYwLCAzMywgNCwgMjQ3LCA5MiwgMzMsIDQsIDI0NSwgMTEwLCAzMywgNCwgCisgICAgMjQ2LCA3OSwgMzMsIDQsIDI0NywgOTEsIDMzLCA0LCAyNDYsIDIzMCwgMzMsIDQsIDI0NiwgMjM4LCAzMywgNCwgMjQ1LCAKKyAgICAyNTQsIDMzLCA0LCAyNDUsIDc0LCAzMywgNCwgMjAzLCAxODIsIDMzLCA0LCAyMDMsIDE1MiwgMzMsIDQsIDIwMywgMTcwLCAKKyAgICAzMywgNCwgMjAzLCAxODEsIDMzLCA0LCAyMDMsIDE3NSwgMzMsIDQsIDIwMywgMTc2LCAzMywgNCwgMjAzLCAxNjAsIDMzLCAKKyAgICA0LCAyMDMsIDE1OSwgMzMsIDQsIDIwMywgMTQ2LCAzMywgNCwgMjAzLCAxNDIsIDMzLCA0LCAyMDMsIDE0NSwgMzMsIDQsIAorICAgIDIwMywgMTQzLCAzMywgNCwgMjAzLCAxNDQsIDMzLCA0LCAyMDEsIDIwMSwgMzMsIDQsIDIyMSwgODQsIDMzLCA0LCAyMjIsIAorICAgIDEwMCwgMzMsIDQsIDIyMywgMTA2LCAzMywgNCwgMjIyLCAyMzUsIDMzLCA0LCAyMjIsIDI0MCwgMzMsIDQsIDIyMSwgMTkxLCAKKyAgICAzMywgNCwgMjIxLCAyMCwgMzMsIDQsIDIyMSwgMTEsIDMzLCA0LCAyMjAsIDIyNiwgMzMsIDQsIDIyMCwgMjQ4LCAzMywgNCwgCisgICAgMjIxLCAxMCwgMzMsIDQsIDIyMSwgMCwgMzMsIDQsIDIyMSwgMSwgMzMsIDQsIDIyMCwgMjMzLCAzMywgNCwgMjIwLCAyMTYsIAorICAgIDMzLCA0LCAyMzgsIDQ1LCA2MywgMzMsIDQsIDIzOCwgNDUsIDY4LCAzMywgNCwgMjM4LCA0NSwgNzUsIDMzLCA0LCAyMzgsIAorICAgIDQ1LCAyNTIsIDI1LCAzMywgNCwgMjM4LCA0NSwgMjQxLCAxNjEsIDMzLCA0LCAyMzgsIDQ1LCA3NCwgMzMsIDQsIDIzOCwgCisgICAgNDUsIDc4LCAzMywgNCwgMjM4LCA0NSwgMjA0LCAxMTEsIDMzLCA0LCAxNzMsIDMzLCA0LCAyMjgsIDIwOSwgMzMsIDQsIAorICAgIDIyOSwgMTAwLCAzMywgNCwgMjMwLCA0MSwgMzMsIDQsIDIyOSwgMTk4LCAzMywgNCwgMjI5LCAyMDEsIDMzLCA0LCAyMjksIAorICAgIDI2LCAzMywgNCwgMjI5LCAyNSwgMzMsIDQsIDIyOCwgMTY3LCAzMywgNCwgMjI4LCAxNjAsIDMzLCA0LCAyMjgsIDE2NiwgCisgICAgMzMsIDQsIDIyOCwgMTYxLCAzMywgNCwgMjI4LCAxNjIsIDMzLCA0LCAyMjgsIDE1MywgMzMsIDQsIDIyOCwgMTQ3LCAzMywgCisgICAgNCwgMjI4LCAxNDksIDMzLCA0LCAyMjgsIDE1MiwgMzMsIDQsIDIyOCwgMTUwLCAzMywgNCwgMjI4LCAxNTEsIDMzLCA0LCAKKyAgICAyMjgsIDE0OCwgMzMsIDQsIDIyOCwgMTQ2LCAzMywgNCwgMjI4LCAxNDIsIDMzLCA0LCAyMjgsIDE0NSwgMzMsIDQsIDIyOCwgCisgICAgMTQzLCAzMywgNCwgMjI4LCAxNDQsIDMzLCA0LCAyMDQsIDExMSwgMzMsIDQsIDIwMywgMjE3LCAzMywgNCwgMjA0LCAzMCwgCisgICAgMzMsIDQsIDIwNCwgMTEwLCAzMywgNCwgMjA0LCA1NSwgMzMsIDQsIDIwNCwgNjIsIDMzLCA0LCAyMDQsIDAsIDMzLCA0LCAKKyAgICAyMDMsIDI1NSwgMzMsIDQsIDIxOCwgMTk5LCA2MywgMzMsIDQsIDIxOCwgMTk5LCA2OCwgMzMsIDQsIDIxOCwgMTk5LCA3NSwgCisgICAgMzMsIDQsIDIxOCwgMTk5LCAyNTIsIDI1LCAzMywgNCwgMjE4LCAxOTksIDI0MSwgMTYxLCAzMywgNCwgMjE4LCAxOTksIDc0LCAKKyAgICAzMywgNCwgMjE4LCAxOTksIDc4LCAzMywgNCwgMjAyLCAxMTYsIDMzLCA0LCAyMDIsIDYsIDMzLCA0LCAyMDIsIDM5LCAzMywgCisgICAgNCwgMjAyLCAxMTQsIDMzLCA0LCAyMDIsIDkwLCAzMywgNCwgMjAyLCA5MiwgMzMsIDQsIDIwMiwgMTcsIDMzLCA0LCAyMDEsIAorICAgIDI0OSwgMzMsIDQsIDIwMiwgODAsIDMzLCA0LCAyMDIsIDU3LCAzMywgNCwgMjAyLCA2NiwgMzMsIDQsIDIwMiwgNzksIDMzLCAKKyAgICA0LCAyMDIsIDcwLCAzMywgNCwgMjAyLCA3MSwgMzMsIDQsIDIwMiwgNjMsIDMzLCA0LCAyMDIsIDQ4LCAzMywgNCwgMTk4LCAKKyAgICAzMywgNCwgMjAyLCAyMTMsIDMzLCA0LCAyMDMsIDExLCAzMywgNCwgMjAzLCAxMTAsIDMzLCA0LCAyMDMsIDQ5LCAzMywgNCwgCisgICAgMjAzLCA1MiwgMzMsIDQsIDIwMiwgMjQ3LCAzMywgNCwgMjAyLCAyMzgsIDMzLCA0LCAyNDQsIDIxMiwgMzMsIDQsIDI0MiwgCisgICAgNDIsIDMzLCA0LCAyNDMsIDIzMywgMzMsIDQsIDI0NCwgMjExLCAzMywgNCwgMjQ0LCA2MSwgMzMsIDQsIDI0NCwgNzUsIDMzLCAKKyAgICA0LCAyNDMsIDExMywgMzMsIDQsIDI0MiwgMTAsIDMzLCA0LCAyNDQsIDEyMCwgMzMsIDQsIDI0NCwgODUsIDMzLCA0LCAyNDQsIAorICAgIDk3LCAzMywgNCwgMjQ0LCAxMTksIDMzLCA0LCAyNDQsIDEwNywgMzMsIDQsIDI0NCwgMTA4LCAzMywgNCwgMjQ0LCA5MCwgCisgICAgMzMsIDQsIDI0NCwgNzYsIDMzLCA0LCAyMzAsIDE4MSwgMzMsIDQsIDIzMCwgODIsIDMzLCA0LCAyMzAsIDE0MSwgMzMsIDQsIAorICAgIDIzMCwgMTgwLCAzMywgNCwgMjMwLCAxNTksIDMzLCA0LCAyMzAsIDE2MSwgMzMsIDQsIDIzMCwgMTAxLCAzMywgNCwgMjMwLCAKKyAgICA2MiwgMzMsIDQsIDIzOSwgOCwgMzMsIDQsIDIzNywgMjMwLCAzMywgNCwgMjM4LCA4MSwgMzMsIDQsIDIzOSwgNSwgMzMsIDQsIAorICAgIDIzOCwgMTgyLCAzMywgNCwgMjM4LCAxOTAsIDMzLCA0LCAyMzgsIDM5LCAzMywgNCwgMjM4LCAzOCwgMzMsIDQsIDIzNywgCisgICAgMTkwLCAzMywgNCwgMjM3LCAxODYsIDMzLCA0LCAyMzcsIDE4OSwgMzMsIDQsIDIzNywgMTg3LCAzMywgNCwgMjM3LCAxODgsIAorICAgIDMzLCA0LCAyMzgsIDE1NSwgMzMsIDQsIDIzOCwgMTM1LCAzMywgNCwgMjM4LCAxNDUsIDMzLCA0LCAyMzgsIDE1NCwgMzMsIAorICAgIDQsIDIzOCwgMTQ5LCAzMywgNCwgMjM4LCAxNTAsIDMzLCA0LCAyMzgsIDEzOSwgMzMsIDQsIDIzOCwgMTI0LCAzMywgNCwgCisgICAgMjA5LCAxMDgsIDMzLCA0LCAyMDksIDIyLCAzMywgNCwgMjA5LCA3MCwgMzMsIDQsIDIwOSwgMTA3LCAzMywgNCwgMjA5LCAKKyAgICA5MCwgMzMsIDQsIDIwOSwgOTIsIDMzLCA0LCAyMDksIDQ3LCAzMywgNCwgMjA5LCAxMywgMzMsIDQsIDI0NiwgMTk5LCAzMywgCisgICAgNCwgMjQ2LCA5OCwgMzMsIDQsIDI0NiwgMTQyLCAzMywgNCwgMjQ2LCAxOTgsIDMzLCA0LCAyNDYsIDE2NiwgMzMsIDQsIAorICAgIDI0NiwgMTcwLCAzMywgNCwgMjQ2LCAxMTYsIDMzLCA0LCAyNDYsIDg3LCAzMywgNCwgMjE4LCAyMDgsIDMzLCA0LCAyMTgsIAorICAgIDE3MywgMzMsIDQsIDIxOCwgMTkyLCAzMywgNCwgMjE4LCAyMDcsIDMzLCA0LCAyMTgsIDE5NCwgMzMsIDQsIDIxOCwgMTk1LCAKKyAgICAzMywgNCwgMjE4LCAxODAsIDMzLCA0LCAyMTgsIDE2OSwgMzMsIDQsIDIwOCwgMjAsIDMzLCA0LCAyMDcsIDI0OSwgMzMsIDQsIAorICAgIDIwNywgMjU1LCAzMywgNCwgMjA4LCAxOSwgMzMsIDQsIDIwOCwgMTMsIDMzLCA0LCAyMDgsIDE0LCAzMywgNCwgMjA3LCAKKyAgICAyNTMsIDMzLCA0LCAyMDcsIDI0NywgMzMsIDQsIDIwNywgMTA2LCAzMywgNCwgMjA3LCA5OCwgMzMsIDQsIDIwNywgMTAyLCAKKyAgICAzMywgNCwgMjA3LCAxMDUsIDMzLCA0LCAyMDcsIDEwMywgMzMsIDQsIDIwNywgMTA0LCAzMywgNCwgMjA3LCAxMDAsIDMzLCAKKyAgICA0LCAyMDcsIDk5LCAzMywgNCwgMjQwLCAxMDgsIDMzLCA0LCAyMzksIDEwOCwgMzMsIDQsIDI0MCwgMjYsIDMzLCA0LCAyNDAsIAorICAgIDEwNywgMzMsIDQsIDI0MCwgNTMsIDMzLCA0LCAyNDAsIDYwLCAzMywgNCwgMjM5LCAxODYsIDMzLCA0LCAyMzksIDg2LCAzMywgCisgICAgNCwgMTg1LCAzMywgNCwgMjE3LCAxOTEsIDMzLCA0LCAyMTgsIDE2NywgMzMsIDQsIDIxOSwgMTY4LCAzMywgNCwgMjE5LCAKKyAgICAyMywgMzMsIDQsIDIxOSwgMzQsIDMzLCA0LCAyMTgsIDY5LCAzMywgNCwgMjE3LCAxNTIsIDMzLCA0LCAyMTUsIDEwMSwgMzMsIAorICAgIDQsIDIyMywgMTY5LCAzMywgNCwgMjM5LCA4MCwgMzMsIDM5LCAyMzgsIDE3OSwgMjUsIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAKKyAgICAzOSwgMjIsIDIyNywgMTk2LCA4MiwgMzMsIDM5LCAyMzgsIDE3OSwgODIsIDMzLCAyMTQsIDE2OCwgODIsIDMzLCAyMDMsIAorICAgIDIzNywgMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAzMywgMjQ1LCAyMzMsIDMzLCAyMTMsIDE0MywgMzMsIDI0NSwgMjQyLCAzMywgCisgICAgMjE3LCAyNDYsIDI0NSwgMjQyLCAzMywgMjE3LCA0NywgODIsIDMzLCAyMTksIDg5LCAyMTMsIDEzMCwgMzMsIDE3LCAxMDUsIAorICAgIDMzLCAxNywgMTA4LCAzMywgMTcsIDE0NywgMzMsIDE3LCAxNDksIDMzLCAxNywgMTcwLCAzMywgMTcsIDE5NSwgMzMsIDE3LCAKKyAgICAyMTMsIDExMSwgMzMsIDE3LCAxOTksIDMzLCAxNywgMjIyLCA2MywgMzMsIDQyLCAyMDksIDE1MiwgMzMsIDQyLCAyMDcsIAorICAgIDE1MSwgMzMsIDQyLCAyMDksIDUzLCAzMywgNDIsIDIzOSwgMTUzLCAzMywgNDIsIDI0MCwgMTgsIDMzLCA0MiwgMjEyLCA3NCwgCisgICAgMzMsIDQyLCAyMTMsIDEwNSwgMzMsIDQyLCAyNDEsIDEzNCwgMzMsIDQyLCAyMjIsIDU4LCAzMywgNDIsIDIzNiwgMTEsIDMzLCAKKyAgICA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDMzLCA0LCAyMTQsIDE3MywgMjIzLCAxODAsIDMzLCA0LCAyMjMsIDE3NiwgMzMsIDQsIAorICAgIDIyMywgMTc3LCAzMywgNCwgMjIzLCAxNzgsIDMzLCA0LCAyMTQsIDE3MywgMjQ3LCAxNDIsIDMzLCA0LCAyNDcsIDEzOSwgCisgICAgMzMsIDQsIDI0NywgMTQwLCAzMywgNCwgMjQ3LCAxNDEsIDMzLCA0LCAyMTQsIDE3MywgMjM5LCA4NiwgMzMsIDQsIDIzOSwgCisgICAgODIsIDMzLCA0LCAyMzksIDgzLCAzMywgNCwgMjM5LCA4NCwgMzMsIDQsIDIxNCwgMTczLCAyMTcsIDE1MiwgMzMsIDQsIAorICAgIDIxNywgMTQ4LCAzMywgNCwgMjE3LCAxNDksIDMzLCA0LCAyMTcsIDE1MCwgMzMsIDIwOCwgMTYyLCAxMzEsIDIwMiwgMjUwLCAKKyAgICAzMywgMjA4LCAxNjIsIDEzMSwgMjQ0LCAyMiwgMzMsIDIwOCwgMTYyLCAxMzEsIDIxNiwgMiwgMzMsIDIwOCwgMTYyLCAxMzEsIAorICAgIDIxMiwgMjI4LCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDMsIDIwNywgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOSwgCisgICAgMTc5LCAzMywgMjA4LCAxNjIsIDEzMSwgMjQ2LCAxMjQsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMzcsIDAsIDMzLCAyMDgsIAorICAgIDE2MiwgMTMxLCAyNDQsIDIxLCAzMywgMjA4LCAxNjIsIDEzMSwgMjI4LCAxODEsIDkwLCAxLCA2MywgOTAsIDEsIDc0LCA5MCwgCisgICAgMSwgNzUsIDkwLCAxLCA3OCwgOTAsIDEsIDY4LCA5MCwgMSwgMjA2LCAxNjQsIDkwLCAxLCAyMzksIDgsIDkwLCAxLCAxNzMsIAorICAgIDkwLCAxLCAyMzgsIDE5MCwgOTAsIDEsIDIzOCwgODEsIDkwLCAxLCAyMzgsIDM5LCA5MCwgMSwgMjM3LCAyMzAsIDkwLCAxLCAKKyAgICAyMzcsIDE5MiwgOTAsIDEsIDE1MiwgOTAsIDEsIDIzNywgNjcsIDkwLCAxLCAyMzcsIDMsIDkwLCAxLCAyMzYsIDEzNiwgOTAsIAorICAgIDEsIDIzNiwgMjYsIDkwLCAxLCAyMzUsIDI1NSwgOTAsIDEsIDIyOCwgMTEzLCA5MCwgMSwgMjI3LCAyMzQsIDkwLCAxLCAKKyAgICAyMjcsIDE0OCwgOTAsIDEsIDIyNywgNDksIDkwLCAxLCAyMjYsIDIzOSwgOTAsIDEsIDIyNiwgMjA4LCA5MCwgMSwgMTkyLCAKKyAgICA5MCwgMSwgMjI1LCAyMCwgOTAsIDEsIDIyNCwgMTU1LCA5MCwgMSwgMjI0LCA4MiwgOTAsIDEsIDIyMywgMjQ2LCA5MCwgMSwgCisgICAgMjAxLCAyMDEsIDkwLCAxLCAyMzYsIDE2MCwgOTAsIDEsIDIyMywgOTMsIDkwLCAxLCAyMjIsIDI0MCwgOTAsIDEsIDIyMiwgCisgICAgMTAwLCA5MCwgMSwgMjIxLCAxOTEsIDkwLCAxLCAyMjEsIDg0LCA5MCwgMSwgMjIxLCAyMiwgOTAsIDEsIDIxNywgNjQsIDkwLCAKKyAgICAxLCAyMTcsIDUwLCA5MCwgMSwgMjE3LCA0MywgOTAsIDEsIDIxNywgMzQsIDkwLCAxLCAyMTcsIDIzLCA5MCwgMSwgMjE3LCAKKyAgICAyMSwgOTAsIDEsIDIxNSwgMzYsIDkwLCAxLCAxOTQsIDkwLCAxLCAyMTQsIDE3NywgOTAsIDEsIDIxMiwgMTYyLCA5MCwgMSwgCisgICAgMjEyLCAxMywgOTAsIDEsIDIxMSwgMTAsIDkwLCAxLCAyMTAsIDE3NywgOTAsIDEsIDI0NCwgMjEyLCA5MCwgMSwgMjEwLCAKKyAgICAyMiwgOTAsIDEsIDI0NCwgNzUsIDkwLCAxLCAyMDksIDE4NywgOTAsIDEsIDI0MywgMjMzLCA5MCwgMSwgMjA5LCAyLCA5MCwgCisgICAgMSwgMjQzLCAxMTMsIDkwLCAxLCAyNDIsIDQyLCA5MCwgMSwgMjQyLCAxMywgOTAsIDEsIDI0MywgMTI0LCA5MCwgMSwgMjA4LCAKKyAgICAxOTAsIDkwLCAxLCAyMDgsIDE4OSwgOTAsIDEsIDIwOCwgMTc4LCA5MCwgMSwgMjA4LCAxNzcsIDkwLCAxLCAyMDgsIDE3NiwgCisgICAgOTAsIDEsIDIwOCwgMTc1LCA5MCwgMSwgMjA4LCAyMCwgOTAsIDEsIDIwOCwgMTQsIDkwLCAxLCAyMDcsIDI1NSwgOTAsIDEsIAorICAgIDIwNywgMjUzLCA5MCwgMSwgMjA3LCAyNDksIDkwLCAxLCAyMDcsIDI0OCwgOTAsIDEsIDIwNCwgMTExLCA5MCwgMSwgMjA0LCAKKyAgICA2MiwgOTAsIDEsIDIwNCwgMzAsIDkwLCAxLCAyMDQsIDAsIDkwLCAxLCAyMDMsIDIxNywgOTAsIDEsIDIwMywgMjA0LCA5MCwgCisgICAgMSwgMTk4LCA5MCwgMSwgMjAzLCA1MiwgOTAsIDEsIDIwMywgMTEsIDkwLCAxLCAyMDIsIDI0NywgOTAsIDEsIDIwMiwgMjEzLCAKKyAgICA5MCwgMSwgMjAyLCAxNzcsIDkwLCAxLCAyMjMsIDE4NywgOTAsIDUsIDEsIDIwMywgNTIsIDkwLCA1LCAxLCAyMDMsIDExLCAKKyAgICA5MCwgNSwgMSwgMjAyLCAyNDcsIDkwLCA1LCAxLCAyMDIsIDIxMywgOTAsIDUsIDEsIDIwMiwgMTc3LCA5MCwgNSwgMSwgCisgICAgMjIzLCAxODcsIDE5LCAyMCwgMjM1LCAyMjAsIDE5LCAyMCwgNzQsIDE5LCAyMCwgMjUxLCAyNDUsIDE5LCAyMCwgNzUsIDE5LCAKKyAgICAyMCwgMjMxLCA4MywgMTksIDIwLCA3OCwgMTksIDIwLCAyMjAsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjAsIDE4LCAxOSwgCisgICAgMjAsIDg4LCAyNDEsIDE2MSwgMTksIDIwLCA4OCwgNzUsIDE5LCAyMCwgNjMsIDE5LCAyMCwgMjUyLCAyNSwgMTksIDIwLCAKKyAgICAyMDQsIDYyLCAxOSwgMjAsIDE5NiwgMjA0LCA2MiwgMTksIDIwLCAyMDQsIDMwLCAxOSwgMjAsIDE5NiwgMjA0LCAzMCwgMTksIAorICAgIDIwLCAyMDQsIDE5LCAxOSwgMjAsIDE5NiwgMjA0LCAxOSwgMTksIDIwLCAyMDQsIDAsIDE5LCAyMCwgMTk2LCAyMDQsIDAsIAorICAgIDE5LCAyMCwgMjAzLCAyNDQsIDE5LCAyMCwgMTk2LCAyMDMsIDI0NCwgMTksIDIwLCAyMjMsIDY4LCAyMDMsIDI0NCwgMTksIAorICAgIDIwLCAyMDQsIDExMSwgMTksIDIwLCAxOTYsIDIwNCwgMTExLCAxOSwgMjAsIDIwNCwgMTEwLCAxOSwgMjAsIDE5NiwgMjA0LCAKKyAgICAxMTAsIDE5LCAyMCwgMjIzLCA2OCwgMjA0LCAxMTAsIDE5LCAyMCwgMjUxLCA2NCwgMTksIDIwLCAyMDMsIDEyMywgMjA0LCAKKyAgICAxNDQsIDE5LCAyMCwgMjM4LCA0NSwgMjExLCA2MSwgMTksIDIwLCA0NiwgMTY1LCAxOSwgMjAsIDQ2LCAyMzcsIDI1MywgMTksIAorICAgIDIwLCA0NiwgMjQ3LCAyNDgsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIwOCwgMTQ1LCAxNjIsIDIxNSwgMjUyLCAxOSwgCisgICAgMjAsIDQ2LCA1MCwgMTYyLCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDUyLCAxNjUsIDE5LCAKKyAgICAyMCwgNDYsIDUyLCAyMTIsIDIyOCwgODAsIDIxMSwgMTksIDE5LCAyMCwgNDYsIDEwMSwgMjQzLCA4NSwgMTksIDIwLCA0NiwgCisgICAgMjEyLCAyMjgsIDIzNiwgMTA2LCA5NSwgMTksIDIwLCA0NiwgMjE4LCA3NiwgMTksIDIwLCA0NiwgMTIxLCAyMTAsIDMsIDE5LCAKKyAgICAyMCwgMjQxLCA5MiwgMTksIDIwLCAyMzEsIDQ5LCAxOSwgMjAsIDIyMCwgMzEsIDE5LCAyMCwgMjUwLCAyMzEsIDE5LCAyMCwgCisgICAgMjE5LCAzNCwgMTksIDIwLCAyMTksIDE2NiwgMTksIDIwLCAyMTgsIDE2NywgMTksIDIwLCAyMTgsIDEyOSwgMTksIDIwLCAKKyAgICAyMTgsIDY5LCAxOSwgMjAsIDIxOCwgNDUsIDE5LCAyMCwgMjAzLCAxMjMsIDIxOCwgNDUsIDE5LCAyMCwgODgsIDIzNywgNDgsIAorICAgIDE5LCAyMCwgODgsIDIzNywgMywgMTksIDIwLCAxODUsIDE5LCAyMCwgMjE5LCAxNjgsIDE5LCAyMCwgMjE3LCAxNTAsIDE5LCAKKyAgICAyMCwgMTk2LCAyMTcsIDE1MCwgMTksIDIwLCAyMTcsIDE0OCwgMTksIDIwLCAxOTYsIDIxNywgMTQ4LCAxOSwgMjAsIDIxNywgCisgICAgMTQ3LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDcsIDE5LCAyMCwgMjE3LCAxNDUsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NSwgMTksIAorICAgIDIwLCAyMTcsIDE0NCwgMTksIDIwLCAxOTYsIDIxNywgMTQ0LCAxOSwgMjAsIDIxNywgMTUyLCAxOSwgMjAsIDE5NiwgMjE3LCAKKyAgICAxNTIsIDE5LCAyMCwgMjE3LCAxNTEsIDE5LCAyMCwgMTk2LCAyMTcsIDE1MSwgMTksIDIwLCAyMDMsIDEyMywgMjE3LCAxNTEsIAorICAgIDE5LCAyMCwgMjE5LCAxODQsIDE5LCAyMCwgMTk2LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAxNzEsIDE5LCAyMCwgCisgICAgMjA5LCAxODcsIDE5LCAyMCwgMjEwLCAxNiwgMTksIDIwLCAyMDksIDIsIDE5LCAyMCwgMjA4LCAyNDIsIDE5LCAyMCwgMTM1LCAKKyAgICAxOSwgMjAsIDIwOCwgMTQ4LCAxOSwgMjAsIDIwMywgMTIzLCAyMDgsIDE0OCwgMTksIDIwLCA4OCwgMjQ0LCA2MSwgMTksIAorICAgIDIwLCA4OCwgMjQzLCAyMzMsIDE5LCAyMCwgMjEwLCAyMiwgMTksIDIwLCAyMTAsIDE4LCAxOSwgMjAsIDIwNywgMTU4LCAxOSwgCisgICAgMjAsIDE5NiwgMjA3LCAxNTgsIDE5LCAyMCwgMjA3LCAxNDAsIDE5LCAyMCwgMTk2LCAyMDcsIDE0MCwgMTksIDIwLCAyMDcsIAorICAgIDEzOSwgMTksIDIwLCAxOTYsIDIwNywgMTM5LCAxOSwgMjAsIDEwOCwgMTksIDIwLCAxOTYsIDEwOCwgMTksIDIwLCAyMDcsIAorICAgIDEzMCwgMTksIDIwLCAxOTYsIDIwNywgMTMwLCAxOSwgMjAsIDIwNywgMTYwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNjAsIDE5LCAKKyAgICAyMCwgMjA3LCAxNTksIDE5LCAyMCwgMTk2LCAyMDcsIDE1OSwgMTksIDIwLCAyMjMsIDY4LCAyMDcsIDE1OSwgMTksIDIwLCAKKyAgICAyMTAsIDY5LCAxOSwgMjAsIDIwNywgMjM2LCAxOSwgMjAsIDIwNywgMjIwLCAxOSwgMjAsIDIwNywgMjE4LCAxOSwgMjAsIAorICAgIDIwNywgMjQxLCAxOSwgMjAsIDIyOSwgMjAxLCAxOSwgMjAsIDIzMCwgMzYsIDE5LCAyMCwgMjI5LCAxMDAsIDE5LCAyMCwgCisgICAgMjI5LCA4NywgMTksIDIwLCAyMjksIDI2LCAxOSwgMjAsIDIyOSwgNiwgMTksIDIwLCAyMDMsIDEyMywgMjI5LCA2LCAxOSwgCisgICAgMjAsIDE3MywgMTksIDIwLCAyMzAsIDQxLCAxOSwgMjAsIDIyOCwgMTYyLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjIsIDE5LCAKKyAgICAyMCwgMjI4LCAxNjAsIDE5LCAyMCwgMTk2LCAyMjgsIDE2MCwgMTksIDIwLCAyMjgsIDE1OSwgMTksIDIwLCAxOTYsIDIyOCwgCisgICAgMTU5LCAxOSwgMjAsIDIyOCwgMTU3LCAxOSwgMjAsIDE5NiwgMjI4LCAxNTcsIDE5LCAyMCwgMjI4LCAxNTYsIDE5LCAyMCwgCisgICAgMTk2LCAyMjgsIDE1NiwgMTksIDIwLCAyMjgsIDE2NywgMTksIDIwLCAxOTYsIDIyOCwgMTY3LCAxOSwgMjAsIDIyOCwgMTY2LCAKKyAgICAxOSwgMjAsIDE5NiwgMjI4LCAxNjYsIDE5LCAyMCwgMjIzLCA2OCwgMjI4LCAxNjYsIDE5LCAyMCwgMjMwLCA1NCwgMTksIAorICAgIDIwLCAyMjgsIDE2OCwgMTksIDIwLCAyMTEsIDIzNywgMjI5LCAxOTEsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgODgsIDE5LCAKKyAgICAyMCwgMjExLCAyMzcsIDIyOSwgMjAsIDE5LCAyMCwgMjExLCAyMzcsIDIzMCwgMjAsIDE5LCAyMCwgMjQ2LCAyMzgsIDE5LCAKKyAgICAyMCwgMjQ3LCA5MCwgMTksIDIwLCAyNDYsIDc5LCAxOSwgMjAsIDI0NiwgNjksIDE5LCAyMCwgMjQ1LCAyNTQsIDE5LCAyMCwgCisgICAgMjQ1LCAxODAsIDE5LCAyMCwgMjAzLCAxMjMsIDI0NSwgMTgwLCAxOSwgMjAsIDI0NywgOTIsIDE5LCAyMCwgMjQ3LCA5MSwgCisgICAgMTksIDIwLCAyNDUsIDcyLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MiwgMTksIDIwLCAyNDUsIDcwLCAxOSwgMjAsIDE5NiwgMjQ1LCAKKyAgICA3MCwgMTksIDIwLCAyNDUsIDY5LCAxOSwgMjAsIDE5NiwgMjQ1LCA2OSwgMTksIDIwLCAyNDUsIDY4LCAxOSwgMjAsIDE5NiwgCisgICAgMjQ1LCA2OCwgMTksIDIwLCAyNDUsIDY3LCAxOSwgMjAsIDE5NiwgMjQ1LCA2NywgMTksIDIwLCAyNDUsIDc0LCAxOSwgMjAsIAorICAgIDE5NiwgMjQ1LCA3NCwgMTksIDIwLCAyNDUsIDczLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MywgMTksIDIwLCAyMjMsIDY4LCAKKyAgICAyNDUsIDczLCAxOSwgMjAsIDI0NywgMTI1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMDksIDExMCwgMTksIDIwLCAyMjUsIDIwLCAKKyAgICAxOSwgMjAsIDIyNSwgMTc0LCAxOSwgMjAsIDIyNCwgMTU1LCAxOSwgMjAsIDIyNCwgMTI1LCAxOSwgMjAsIDIyNCwgODIsIAorICAgIDE5LCAyMCwgMjI0LCAzNSwgMTksIDIwLCAyMDMsIDEyMywgMjI0LCAzNSwgMTksIDIwLCAxOTIsIDE5LCAyMCwgMjI1LCAKKyAgICAxNzUsIDE5LCAyMCwgMjIzLCAxNzgsIDE5LCAyMCwgMTk2LCAyMjMsIDE3OCwgMTksIDIwLCAyMjMsIDE3NiwgMTksIDIwLCAKKyAgICAxOTYsIDIyMywgMTc2LCAxOSwgMjAsIDIyMywgMTc1LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzUsIDE5LCAyMCwgMjIzLCAxNzQsIAorICAgIDE5LCAyMCwgMTk2LCAyMjMsIDE3NCwgMTksIDIwLCAyMjMsIDE3MywgMTksIDIwLCAxOTYsIDIyMywgMTczLCAxOSwgMjAsIAorICAgIDIyMywgMTgwLCAxOSwgMjAsIDE5NiwgMjIzLCAxODAsIDE5LCAyMCwgMjIzLCAxNzksIDE5LCAyMCwgMTk2LCAyMjMsIDE3OSwgCisgICAgMTksIDIwLCAyMjMsIDY4LCAyMjMsIDE3OSwgMTksIDIwLCAyMjYsIDE4NSwgMTksIDIwLCAxOTYsIDIyNiwgMTg1LCAxOSwgCisgICAgMjAsIDIyNCwgMTU5LCAxOSwgMjAsIDI1MCwgNDgsIDIyNiwgMTg1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMjYsIDE4NSwgMTksIAorICAgIDIwLCAyMjIsIDI0MCwgMTksIDIwLCAyMjMsIDEwNSwgMTksIDIwLCAyMjIsIDEwMCwgMTksIDIwLCAyMjIsIDc1LCAxOSwgCisgICAgMjAsIDIyMSwgMTkxLCAxOSwgMjAsIDIyMSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyMjEsIDE4MCwgMTksIDIwLCAyMDEsIAorICAgIDIwMSwgMTksIDIwLCAyMjMsIDEwNiwgMTksIDIwLCAyMjEsIDE4LCAxOSwgMjAsIDE5NiwgMjIxLCAxOCwgMTksIDIwLCAKKyAgICAyMjEsIDIwLCAxOSwgMjAsIDE5NiwgMjIxLCAyMCwgMTksIDIwLCAyMjEsIDE5LCAxOSwgMjAsIDE5NiwgMjIxLCAxOSwgMTksIAorICAgIDIwLCAyMjMsIDY4LCAyMjEsIDE5LCAxOSwgMjAsIDIyMywgMTYzLCAxOSwgMjAsIDg4LCAyMjIsIDIwNSwgMTksIDIwLCAKKyAgICAyMjIsIDEwNSwgMTksIDIwLCAyMjcsIDIzNCwgMTksIDIwLCAyMjgsIDExMSwgMTksIDIwLCAyMjcsIDE0OCwgMTksIDIwLCAKKyAgICAyMjcsIDEzMCwgMTksIDIwLCAyMjcsIDQ5LCAxOSwgMjAsIDIyNywgMTgsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNywgMTgsIAorICAgIDE5LCAyMCwgMjI4LCAxMTMsIDE5LCAyMCwgMjI4LCAxMTIsIDE5LCAyMCwgMjI2LCAyMDUsIDE5LCAyMCwgMTk2LCAyMjYsIAorICAgIDIwNSwgMTksIDIwLCAyMjYsIDIwNCwgMTksIDIwLCAxOTYsIDIyNiwgMjA0LCAxOSwgMjAsIDIyNiwgMjAzLCAxOSwgMjAsIAorICAgIDE5NiwgMjI2LCAyMDMsIDE5LCAyMCwgMjI2LCAyMDIsIDE5LCAyMCwgMTk2LCAyMjYsIDIwMiwgMTksIDIwLCAyMjYsIDIwMSwgCisgICAgMTksIDIwLCAxOTYsIDIyNiwgMjAxLCAxOSwgMjAsIDIyNiwgMjA3LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDcsIDE5LCAyMCwgCisgICAgMjI2LCAyMDYsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNiwgMTksIDIwLCAxNTksIDE5LCAyMCwgMTk2LCAxNTksIDE5LCAyMCwgCisgICAgMTc0LCAxNTksIDE5LCAyMCwgMjE0LCAxNzcsIDE5LCAyMCwgMjE1LCAzMSwgMTksIDIwLCAyMTIsIDE2MiwgMTksIDIwLCAKKyAgICAyMTIsIDE0MiwgMTksIDIwLCAyMTIsIDEzLCAxOSwgMjAsIDIxMSwgMjUwLCAxOSwgMjAsIDIwMywgMTIzLCAyMTEsIDI1MCwgCisgICAgMTksIDIwLCAyMTUsIDM2LCAxOSwgMjAsIDIxNSwgMzMsIDE5LCAyMCwgMjEwLCAxNjgsIDE5LCAyMCwgMTk2LCAyMTAsIAorICAgIDE2OCwgMTksIDIwLCAyMTAsIDE2MiwgMTksIDIwLCAxOTYsIDIxMCwgMTYyLCAxOSwgMjAsIDIxMCwgMTYxLCAxOSwgMjAsIAorICAgIDE5NiwgMjEwLCAxNjEsIDE5LCAyMCwgMjEwLCAxNTcsIDE5LCAyMCwgMTk2LCAyMTAsIDE1NywgMTksIDIwLCAyMTAsIDE1NiwgCisgICAgMTksIDIwLCAxOTYsIDIxMCwgMTU2LCAxOSwgMjAsIDIxMCwgMTcyLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzIsIDE5LCAyMCwgCisgICAgMjEwLCAxNzEsIDE5LCAyMCwgMTk2LCAyMTAsIDE3MSwgMTksIDIwLCAyMjMsIDY4LCAyMTAsIDE3MSwgMTksIDIwLCAxOTQsIAorICAgIDE5LCAyMCwgMjUwLCA0OCwgMTk0LCAxOSwgMjAsIDIxMCwgMTczLCAxOSwgMjAsIDI0OCwgNDAsIDE5NCwgMTksIDIwLCAKKyAgICAyMjQsIDI4LCAyMTIsIDcwLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgNjEsIDE5LCAyMCwgMjIzLCA2OCwgMjE1LCA5MiwgMTksIAorICAgIDIwLCAyMjMsIDY4LCAyMTEsIDE3OSwgMTksIDIwLCAyMjMsIDY4LCAyMTEsIDEzLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgCisgICAgNjAsIDE5LCAyMCwgMjIzLCA2OCwgMjE0LCAxODAsIDE5LCAyMCwgMjEzLCA0MywgMTksIDIwLCAyMTMsIDExLCAxOSwgMjAsIAorICAgIDIxMywgNiwgMTksIDIwLCAyMTIsIDI0MiwgMTksIDIwLCAyMTIsIDIzNiwgMTksIDIwLCAyMTMsIDkwLCAxOSwgMjAsIDIxMywgCisgICAgODUsIDE5LCAyMCwgMjEyLCAxNzcsIDE5LCAyMCwgMTk2LCAyMTIsIDE3NywgMTksIDIwLCAyMTIsIDE3NiwgMTksIDIwLCAKKyAgICAxOTYsIDIxMiwgMTc2LCAxOSwgMjAsIDIxMiwgMTc1LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzUsIDE5LCAyMCwgMjEyLCAxNzQsIAorICAgIDE5LCAyMCwgMTk2LCAyMTIsIDE3NCwgMTksIDIwLCAyMTIsIDE3MywgMTksIDIwLCAxOTYsIDIxMiwgMTczLCAxOSwgMjAsIAorICAgIDIxMiwgMTgwLCAxOSwgMjAsIDE5NiwgMjEyLCAxODAsIDE5LCAyMCwgMjEyLCAxNzksIDE5LCAyMCwgMTk2LCAyMTIsIDE3OSwgCisgICAgMTksIDIwLCAyMTMsIDkyLCAxOSwgMjAsIDIwMywgNTIsIDE5LCAyMCwgMjAzLCAxMDgsIDE5LCAyMCwgMjAzLCAxMSwgMTksIAorICAgIDIwLCAyMDMsIDIsIDE5LCAyMCwgMjAyLCAyNDcsIDE5LCAyMCwgMjAyLCAyMzIsIDE5LCAyMCwgMjAzLCAxMjMsIDIwMiwgCisgICAgMjMyLCAxOSwgMjAsIDE5OCwgMTksIDIwLCAyMDMsIDExMCwgMTksIDIwLCAyMDIsIDE3NCwgMTksIDIwLCAxOTYsIDIwMiwgCisgICAgMTc0LCAxOSwgMjAsIDIwMiwgMTczLCAxOSwgMjAsIDE5NiwgMjAyLCAxNzMsIDE5LCAyMCwgMjAyLCAxNzIsIDE5LCAyMCwgCisgICAgMTk2LCAyMDIsIDE3MiwgMTksIDIwLCAyMDIsIDE3MSwgMTksIDIwLCAxOTYsIDIwMiwgMTcxLCAxOSwgMjAsIDIwMiwgMTcwLCAKKyAgICAxOSwgMjAsIDE5NiwgMjAyLCAxNzAsIDE5LCAyMCwgMjAyLCAxNzYsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NiwgMTksIDIwLCAKKyAgICAyMDIsIDE3NSwgMTksIDIwLCAxOTYsIDIwMiwgMTc1LCAxOSwgMjAsIDIyMywgNjgsIDIwMiwgMTc1LCAxOSwgMjAsIDIwMywgCisgICAgMTI0LCAxOSwgMjAsIDI0OCwgODQsIDIwMywgMTI0LCAxOSwgMjAsIDE5NiwgMjAzLCAxMjQsIDE5LCAyMCwgMjE0LCAyMDYsIAorICAgIDIwMywgMTEsIDE5LCAyMCwgMjE2LCAxNTgsIDE5LCAyMCwgMjE3LCAwLCAyMTYsIDE1OCwgMTksIDIwLCAxOTYsIDIyNywgCisgICAgMjM0LCAxOSwgMjAsIDIxNiwgMjE1LCAxOSwgMjAsIDIxNiwgNTcsIDE5LCAyMCwgMjE2LCAzLCAxOSwgMjAsIDIxNSwgMjI3LCAKKyAgICAxOSwgMjAsIDIxNSwgMjA4LCAxOSwgMjAsIDE5NiwgMjI3LCA0OSwgMTksIDIwLCAyMTYsIDIyMCwgMTksIDIwLCAyMTYsIAorICAgIDIxNiwgMTksIDIwLCAxOTYsIDIyOCwgMTEzLCAxOSwgMjAsIDIxNSwgMTEwLCAxOSwgMjAsIDE5NiwgMjE1LCAxMTAsIDE5LCAKKyAgICAyMCwgMTQ2LCAxOSwgMjAsIDE5NiwgMTQ2LCAxOSwgMjAsIDE3NCwgMTQ2LCAxOSwgMjAsIDI0MCwgNjAsIDE5LCAyMCwgCisgICAgMjQwLCAxMDUsIDE5LCAyMCwgMjQwLCAyNiwgMTksIDIwLCAyNDAsIDEyLCAxOSwgMjAsIDIzOSwgMTg2LCAxOSwgMjAsIAorICAgIDIzOSwgMTc1LCAxOSwgMjAsIDI0MCwgMTA4LCAxOSwgMjAsIDI0MCwgMTA3LCAxOSwgMjAsIDIzOSwgODUsIDE5LCAyMCwgCisgICAgMTk2LCAyMzksIDg1LCAxOSwgMjAsIDI0MCwgMTc0LCAxOSwgMjAsIDIwOSwgOTIsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgCisgICAgOTIsIDE5LCAyMCwgMjA5LCA3MCwgMTksIDIwLCAyMjMsIDE2MSwgMjA5LCA3MCwgMTksIDIwLCAyMDksIDY0LCAxOSwgMjAsIAorICAgIDIyMywgMTYxLCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgNDcsIDE5LCAyMCwgMjA5LCA0MiwgMTksIDIwLCAyMDksIDEwOCwgCisgICAgMTksIDIwLCAyMDksIDEwNywgMTksIDIwLCAyMDksIDEyLCAxOSwgMjAsIDE5NiwgMjA5LCAxMiwgMTksIDIwLCAyMDksIAorICAgIDExMCwgMTksIDIwLCAyMDcsIDIyNywgMTksIDIwLCAyMDcsIDIyNSwgMTksIDIwLCAyMDcsIDIyNCwgMTksIDIwLCAyMDcsIAorICAgIDIyOSwgMTksIDIwLCAyMDcsIDIzMCwgMTksIDIwLCAyMDcsIDEyNCwgMTksIDIwLCAyMDcsIDEyMywgMTksIDIwLCAyMDcsIAorICAgIDEyMiwgMTksIDIwLCAyMDcsIDEyNiwgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDY3LCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMywgCisgICAgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDIzOSwgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDEzNiwgMTksIDIwLCAyMjEsIDM5LCAKKyAgICAyMzYsIDExNywgMTksIDIwLCAyMjEsIDM5LCAxNTIsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCAxNTcsIDE5LCAyMCwgMjIxLCAKKyAgICAzOSwgMjM3LCAxNzEsIDE5LCAyMCwgMjIxLCAzOCwgMjM3LCAxNzEsIDE5LCAyMCwgMjM2LCAyMjYsIDE5LCAyMCwgMjE3LCAKKyAgICAxMjIsIDE5LCAyMCwgMjE3LCA4OCwgMTksIDIwLCAyMTcsIDgzLCAxOSwgMjAsIDIxNywgNzcsIDE5LCAyMCwgMjE3LCA3MiwgCisgICAgMTksIDIwLCAyMTcsIDEyNiwgMTksIDIwLCAyMTcsIDEyNSwgMTksIDIwLCAyMTcsIDEzNCwgMTksIDIwLCAyMDgsIDE4NiwgCisgICAgMTksIDIwLCAyMDgsIDE4NCwgMTksIDIwLCAyMDgsIDE4MywgMTksIDIwLCAyMDgsIDE4NywgMTksIDIwLCAxOTYsIDIxNiwgCisgICAgMTU4LCAxOSwgMjAsIDE5NiwgMjE2LCA1NywgMTksIDIwLCAxOTYsIDIxNSwgMjI3LCAxOSwgMjAsIDE5NiwgMjE2LCAyMjAsIAorICAgIDE5LCAyMCwgMjIyLCAyMDEsIDE5LCAyMCwgMjIyLCAxNTEsIDE5LCAyMCwgMjIyLCAxNDcsIDE5LCAyMCwgMjIyLCAxMjgsIAorICAgIDE5LCAyMCwgMjIyLCAxMjMsIDE5LCAyMCwgMjIyLCAyMDMsIDE5LCAyMCwgMjIyLCAyMDIsIDE5LCAyMCwgMjIyLCAyMDUsIAorICAgIDE5LCAyMCwgMjIxLCAyMjAsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgNDMsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgMTEsIAorICAgIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjQyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDkwLCAxOSwgMjAsIDIwMywgMjQyLCAKKyAgICAyMDksIDkyLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDcwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDQ3LCAxOSwgMjAsIAorICAgIDIwMywgMjQyLCAyMDksIDEwOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI3LCAxNTUsIDE5LCAyMCwgCisgICAgMjI3LCAxNTQsIDE5LCAyMCwgMjI3LCAxNTMsIDE5LCAyMCwgMjI3LCAxNTIsIDE5LCAyMCwgMjI3LCAxNjEsIDE5LCAyMCwgCisgICAgMjI3LCAxNjAsIDE5LCAyMCwgMjI3LCAxNjIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgOTIsIDE5LCAyMCwgMjA5LCAxMDksIAorICAgIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNjQsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNDcsIDE5LCAyMCwgCisgICAgMjA5LCAxMDksIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTA4LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIAorICAgIDEwNywgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAxMTAsIDE5LCAyMCwgMjUxLCA1MCwgMjQ5LCAyNTUsIDE5LCAyMCwgMjQ4LCAKKyAgICA0MCwgNzQsIDE5LCAyMCwgMjQ4LCA0MCwgNzUsIDE5LCAyMCwgMjQ4LCA0MCwgNzgsIDE5LCAyMCwgMjQ4LCA0MCwgNjMsIAorICAgIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCA2MiwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDMwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgCisgICAgMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDExMSwgMTksIDIwLCAyNDgsIDQwLCAyMjIsIDI0MCwgMTksIDIwLCAyNDgsIDQwLCAKKyAgICAyMjIsIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjEsIDE5MSwgMTksIDIwLCAyNDgsIDQwLCAyMDEsIDIwMSwgMTksIDIwLCAKKyAgICAyNDgsIDQwLCAyMjksIDIwMSwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDI2LCAKKyAgICAxOSwgMjAsIDI0OCwgNDAsIDE3MywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCA2NywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCAKKyAgICAzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDEzNiwgMTksIDIwLCAyMTQsIDIwNiwgMTUyLCAxOSwgMjAsIDg4LCAyMzgsIAorICAgIDg3LCAxOSwgMjAsIDg4LCAyMzgsIDkxLCAxOSwgMjAsIDg4LCAyMzgsIDEwNSwgMTksIDIwLCA4OCwgMjM4LCAxMDQsIDE5LCAKKyAgICAyMCwgODgsIDIzOCwgOTMsIDE5LCAyMCwgODgsIDIzOCwgMTE5LCAxOSwgMjAsIDg4LCAyMTUsIDE0NSwgMTksIDIwLCA4OCwgCisgICAgMjE1LCAyMjcsIDE5LCAyMCwgODgsIDIxNiwgMTU4LCAxOSwgMjAsIDg4LCAyMTYsIDEzNSwgMTksIDIwLCA4OCwgMjE2LCAKKyAgICA1NywgMTksIDIwLCA4OCwgMjE2LCAyMjAsIDE5LCAyMCwgODgsIDIwMywgMjE3LCAxOSwgMjAsIDg4LCAyMDQsIDAsIDE5LCAKKyAgICAyMCwgODgsIDIwNCwgNjIsIDE5LCAyMCwgODgsIDIwNCwgNTUsIDE5LCAyMCwgODgsIDIwNCwgMzAsIDE5LCAyMCwgODgsIAorICAgIDIwNCwgMTExLCAxOSwgMjAsIDg4LCAyMzUsIDI0NywgMTksIDIwLCA4OCwgMjM1LCAyNDgsIDE5LCAyMCwgODgsIDIzNSwgCisgICAgMjUxLCAxOSwgMjAsIDg4LCAyMzUsIDI1MCwgMTksIDIwLCA4OCwgMjM1LCAyNDksIDE5LCAyMCwgODgsIDIzNSwgMjU0LCAKKyAgICAxOSwgMjAsIDg4LCAyMDksIDIyLCAxOSwgMjAsIDg4LCAyMDksIDQ3LCAxOSwgMjAsIDg4LCAyMDksIDkyLCAxOSwgMjAsIAorICAgIDg4LCAyMDksIDkwLCAxOSwgMjAsIDg4LCAyMDksIDcwLCAxOSwgMjAsIDg4LCAyMDksIDEwOCwgMTksIDIwLCA4OCwgMjA3LCAKKyAgICAyMDgsIDE5LCAyMCwgODgsIDIwNywgMjE4LCAxOSwgMjAsIDg4LCAyMDcsIDIzNiwgMTksIDIwLCA4OCwgMjA3LCAyMzUsIAorICAgIDE5LCAyMCwgODgsIDIwNywgMjIwLCAxOSwgMjAsIDg4LCAyMDcsIDI0MSwgMTksIDIwLCA4OCwgMjE3LCAxOTEsIDE5LCAyMCwgCisgICAgODgsIDIxOCwgNjksIDE5LCAyMCwgODgsIDIxOSwgMzQsIDE5LCAyMCwgODgsIDIxOSwgMjMsIDE5LCAyMCwgODgsIDIxOCwgCisgICAgMTY3LCAxOSwgMjAsIDg4LCAxODUsIDE5LCAyMCwgODgsIDIxOSwgMTg0LCAxOSwgMjAsIDg4LCAyMzcsIDIzMCwgMTksIDIwLCAKKyAgICA4OCwgMjM4LCAzOSwgMTksIDIwLCA4OCwgMjM4LCAxOTAsIDE5LCAyMCwgODgsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzgsIAorICAgIDgxLCAxOSwgMjAsIDg4LCAyMzksIDgsIDE5LCAyMCwgODgsIDIyOSwgMTA5LCAxOSwgMjAsIDg4LCAyMjksIDExNSwgMTksIAorICAgIDIwLCA4OCwgMjI5LCAxMjksIDE5LCAyMCwgODgsIDIyOSwgMTI4LCAxOSwgMjAsIDg4LCAyMjksIDEyMiwgMTksIDIwLCA4OCwgCisgICAgMjI5LCAxNDQsIDE5LCAyMCwgODgsIDIyOSwgNDIsIDE5LCAyMCwgODgsIDIyOSwgNDMsIDE5LCAyMCwgODgsIDIyOSwgNDYsIAorICAgIDE5LCAyMCwgODgsIDIyOSwgNDUsIDE5LCAyMCwgODgsIDIyOSwgNDQsIDE5LCAyMCwgODgsIDIyOSwgNDcsIDE5LCAyMCwgCisgICAgODgsIDIyOSwgNDgsIDE5LCAyMCwgODgsIDIyMSwgODQsIDE5LCAyMCwgODgsIDIyMSwgMTkxLCAxOSwgMjAsIDg4LCAyMjIsIAorICAgIDI0MCwgMTksIDIwLCA4OCwgMjIyLCAyMzUsIDE5LCAyMCwgODgsIDIyMiwgMTAwLCAxOSwgMjAsIDg4LCAyMDEsIDIwMSwgCisgICAgMTksIDIwLCA4OCwgMjIzLCAyNDYsIDE5LCAyMCwgODgsIDIyNCwgODIsIDE5LCAyMCwgODgsIDIyNSwgMjAsIDE5LCAyMCwgCisgICAgODgsIDIyNSwgOCwgMTksIDIwLCA4OCwgMjI0LCAxNTUsIDE5LCAyMCwgODgsIDE5MiwgMTksIDIwLCA4OCwgMjAyLCAyMTMsIAorICAgIDE5LCAyMCwgODgsIDIwMiwgMjQ3LCAxOSwgMjAsIDg4LCAyMDMsIDUyLCAxOSwgMjAsIDg4LCAyMDMsIDQ5LCAxOSwgMjAsIAorICAgIDg4LCAyMDMsIDExLCAxOSwgMjAsIDg4LCAxOTgsIDE5LCAyMCwgODgsIDIzMCwgODIsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgCisgICAgODIsIDE5LCAyMCwgODgsIDIzMCwgMTAxLCAxOSwgMjAsIDg4LCAyMzAsIDE2MSwgMTksIDIwLCA4OCwgMjMwLCAxNTksIDE5LCAKKyAgICAyMCwgODgsIDIzMCwgMTQxLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDE0MSwgMTksIDIwLCA4OCwgMjMwLCAxODEsIDE5LCAKKyAgICAyMCwgODgsIDIzMCwgMTE0LCAxOSwgMjAsIDg4LCAyMzAsIDExOCwgMTksIDIwLCA4OCwgMjMwLCAxMjgsIDE5LCAyMCwgODgsIAorICAgIDIzMCwgMTI3LCAxOSwgMjAsIDg4LCAyMzAsIDEyNiwgMTksIDIwLCA4OCwgMjMwLCAxMjksIDE5LCAyMCwgODgsIDIyNiwgCisgICAgMjM5LCAxOSwgMjAsIDg4LCAyMjcsIDQ5LCAxOSwgMjAsIDg4LCAyMjcsIDIzNCwgMTksIDIwLCA4OCwgMjI3LCAyMjYsIDE5LCAKKyAgICAyMCwgODgsIDIyNywgMTQ4LCAxOSwgMjAsIDg4LCAyMjgsIDExMywgMTksIDIwLCA4OCwgMjQzLCAxMTcsIDE5LCAyMCwgODgsIAorICAgIDI0MywgMTE4LCAxOSwgMjAsIDg4LCAyNDMsIDEyMywgMTksIDIwLCA4OCwgMjQzLCAxMjIsIDE5LCAyMCwgODgsIDI0MywgCisgICAgMTE5LCAxOSwgMjAsIDg4LCAyNDMsIDEyNCwgMTksIDIwLCA4OCwgMjI3LCAxNTEsIDE5LCAyMCwgODgsIDIyNywgMTUzLCAKKyAgICAxOSwgMjAsIDg4LCAyMjcsIDE1NywgMTksIDIwLCA4OCwgMjI3LCAxNTYsIDE5LCAyMCwgODgsIDIyNywgMTU1LCAxOSwgMjAsIAorICAgIDg4LCAyMjcsIDE2MSwgMTksIDIwLCA4OCwgMjA4LCAxODEsIDE5LCAyMCwgODgsIDIwOCwgMTgzLCAxOSwgMjAsIDg4LCAKKyAgICAyMDgsIDE4NiwgMTksIDIwLCA4OCwgMjA4LCAxODUsIDE5LCAyMCwgODgsIDIwOCwgMTg0LCAxOSwgMjAsIDg4LCAyMDgsIAorICAgIDE4NywgMTksIDIwLCA4OCwgMjA4LCAxNzYsIDE5LCAyMCwgODgsIDIwOCwgMTc3LCAxOSwgMjAsIDg4LCAyMDgsIDE4OSwgCisgICAgMTksIDIwLCA4OCwgMjA4LCAxODgsIDE5LCAyMCwgODgsIDIwOCwgMTc4LCAxOSwgMjAsIDg4LCAyMDgsIDE5MCwgMTksIDIwLCAKKyAgICA4OCwgMjAyLCA2LCAxOSwgMjAsIDg4LCAyMDIsIDE3LCAxOSwgMjAsIDg4LCAyMDIsIDkyLCAxOSwgMjAsIDg4LCAyMDIsIAorICAgIDkwLCAxOSwgMjAsIDg4LCAyMDIsIDM5LCAxOSwgMjAsIDg4LCAyMDIsIDExNiwgMTksIDIwLCA4OCwgMjAyLCAxNTksIDE5LCAKKyAgICAyMCwgODgsIDgxLCAyMDIsIDE1OSwgMTksIDIwLCA4OCwgMjQxLCAyNDIsIDE5LCAyMCwgODgsIDI0MSwgMjQzLCAxOSwgMjAsIAorICAgIDg4LCAyNDEsIDI1MiwgMTksIDIwLCA4OCwgMjQxLCAyNTEsIDE5LCAyMCwgODgsIDI0MSwgMjQ2LCAxOSwgMjAsIDg4LCAKKyAgICAyNDEsIDI1NSwgMTksIDIwLCA4OCwgMjExLCAxMCwgMTksIDIwLCA4OCwgMjEyLCAxMywgMTksIDIwLCA4OCwgMjE0LCAxNzcsIAorICAgIDE5LCAyMCwgODgsIDIxNCwgMTY1LCAxOSwgMjAsIDg4LCAyMTIsIDE2MiwgMTksIDIwLCA4OCwgMjE1LCAzNiwgMTksIDIwLCAKKyAgICA4OCwgMjEyLCAxOTksIDE5LCAyMCwgODgsIDIxMiwgMjQyLCAxOSwgMjAsIDg4LCAyMTMsIDQzLCAxOSwgMjAsIDg4LCAyMTMsIAorICAgIDQxLCAxOSwgMjAsIDg4LCAyMTMsIDExLCAxOSwgMjAsIDg4LCAyMTMsIDkwLCAxOSwgMjAsIDg4LCAyMTMsIDkyLCAxOSwgCisgICAgMjAsIDg4LCAyMDcsIDI0OSwgMTksIDIwLCA4OCwgMjA3LCAyNTMsIDE5LCAyMCwgODgsIDIwOCwgMTQsIDE5LCAyMCwgODgsIAorICAgIDIwOCwgMTMsIDE5LCAyMCwgODgsIDIwNywgMjU1LCAxOSwgMjAsIDg4LCAyMDgsIDIwLCAxOSwgMjAsIDg4LCAyNDYsIDk4LCAKKyAgICAxOSwgMjAsIDg4LCAyNDYsIDExNiwgMTksIDIwLCA4OCwgMjQ2LCAxNzAsIDE5LCAyMCwgODgsIDI0NiwgMTY2LCAxOSwgMjAsIAorICAgIDg4LCAyNDYsIDE0MiwgMTksIDIwLCA4OCwgMjQ2LCAxOTksIDE5LCAyMCwgODgsIDIwNywgMjExLCAxOSwgMjAsIDg4LCAKKyAgICAyMDcsIDIxMiwgMTksIDIwLCA4OCwgMjA3LCAyMTUsIDE5LCAyMCwgODgsIDIwNywgMjE0LCAxOSwgMjAsIDg4LCAyMDcsIAorICAgIDIxMywgMTksIDIwLCA4OCwgMjA3LCAyMTYsIDE5LCAyMCwgMjQ2LCAxNDMsIDU0LCAxOSwgMjAsIDIzOSwgMTAyLCAyMTEsIAorICAgIDYxLCAxOSwgMjAsIDIxNywgMTE4LCAxOSwgMjAsIDIyMiwgMTk5LCAxOSwgMjAsIDIyMSwgMjE3LCAxOSwgMjAsIDIyMSwgCisgICAgMjE2LCAxOSwgMjAsIDIyMSwgMjE1LCAxOSwgMjAsIDIyMSwgMjE0LCAxOSwgMjAsIDIyMSwgMjE5LCAxOSwgMjAsIDIyMSwgCisgICAgMjE4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDksIDE5LCAyMCwgMjAzLCAKKyAgICAyNDIsIDIwOSwgOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDYsIDE5LCAyMCwgCisgICAgMjAzLCAyNDIsIDIwOSwgMTMsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTIsIDE5LCAyMCwgMjAzLCAyNDIsIDQ2LCAyMDksIAorICAgIDExMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDE0NCwgMjIwLCA2NCwgMjExLCAyMjksIDgyLCAyMjAsIDY0LCAxLCAyNDgsIAorICAgIDEzMiwgMjIwLCA2NCwgMSwgMjI2LCAyMjUsIDIyMCwgNjQsIDEsIDI0MCwgNTcsIDIyMCwgNjQsIDEsIDIxNSwgMTYsIDIyMCwgCisgICAgNjQsIDEsIDIyMiwgNTYsIDIyMCwgNjQsIDEsIDIwNywgMzYsIDIyMCwgNjQsIDEsIDI0NCwgMTg2LCAyMjAsIDY0LCAxLCAKKyAgICAyMDgsIDIxNCwgMjIwLCA2NCwgMSwgMjQ1LCAyNDUsIDIyMCwgNjQsIDEsIDI0NiwgMjI1LCAyMjAsIDY0LCAxLCAyMjMsIAorICAgIDIzMywgMjIwLCA2NCwgMSwgMjM4LCAyMCwgMjIwLCA2NCwgMSwgMjIyLCAxODksIDIyMCwgNjQsIDEsIDIxMSwgNTQsIDIyMCwgCisgICAgNjQsIDEsIDIxNSwgMTM4LCAyMjAsIDY0LCAxLCAyNTEsIDYxLCAyMjAsIDY0LCAxLCAyMjAsIDIyLCAyMjAsIDY0LCAxLCAKKyAgICAyMDYsIDIxMCwgMjIwLCA2NCwgMSwgMjQxLCAxODcsIDIyMCwgNjQsIDEsIDIzMCwgMjMzLCAyMjAsIDY0LCAxLCAyNDEsIAorICAgIDE4OCwgMjIwLCA2NCwgMSwgMjE5LCAyNDQsIDIyMCwgNjQsIDEsIDIwNywgMTUsIDIyMCwgNjQsIDEsIDIzMSwgODksIDIyMCwgCisgICAgNjQsIDEsIDI0MSwgMTg1LCAyMjAsIDY0LCAxLCAyMTksIDEzLCAyMjAsIDY0LCAyNDAsIDU2LCA4MiwgMjIwLCA2NCwgMjE2LCAKKyAgICA3MywgMjQwLCA1NiwgODIsIDE5NywgMSwgMjQwLCA0NiwgMjQwLCAzOCwgMjQwLCA2MSwgMjQwLCAxNzQsIDE5NywgMSwgCisgICAgMjA2LCAxNjQsIDE5NywgMSwgMjA2LCAxOTUsIDIwNiwgMjExLCA2OCwgMTk3LCAxLCAyMDIsIDIxNiwgMTk3LCAxLCAyMDMsIAorICAgIDEyNCwgMTk3LCAxLCAyMDQsIDE0NCwgMTk3LCAxLCAyMDksIDE1LCAyMDksIDE0LCAyMDksIDQwLCAxOTcsIDEsIDI0MCwgCisgICAgMjQzLCAxOTcsIDEsIDI1MCwgMTk5LCA2MywgMTk3LCAxLCAyMTksIDIyOCwgNzgsIDE5NywgMSwgMjUxLCAxNDIsIDYzLCAKKyAgICAxOTcsIDEsIDI1MSwgOTMsIDE5NywgMSwgMjI3LCAyNCwgNzgsIDE5NywgMSwgMjEyLCAyMjEsIDc4LCAxOTcsIDEsIDc4LCAKKyAgICAxOTcsIDEsIDIyMCwgNzMsIDE5NywgMSwgMjIwLCAzMSwgMTk3LCAxLCAyMTYsIDE5NSwgMjE2LCAyMDgsIDIxNiwgMTIwLCAKKyAgICAxNDYsIDE5NywgMSwgMjI5LCAyMTYsIDE5NywgMSwgMjQ2LCAyMjEsIDE5NywgMSwgMjI5LCAyMTcsIDIzMCwgNTQsIDE5NywgCisgICAgMSwgMjM5LCA3NSwgMTk3LCAxLCAyNDEsIDc4LCAxOTcsIDEsIDIzOCwgMTg1LCAyMzcsIDE3NywgMjM5LCA3NSwgMTk3LCAxLCAKKyAgICAyMzgsIDIyNCwgMTk3LCAxLCAyMDMsIDIwOSwgMjAzLCAyMDAsIDIwNCwgMTQ0LCAxOTcsIDEsIDIzNywgMTQ5LCAyMzcsIAorICAgIDE3MSwgMTk3LCAxLCAyMzcsIDE1MywgMjM3LCAxNzEsIDE5NywgMSwgMjI3LCAyNiwgMjM3LCAxNzEsIDE5NywgMSwgMjEyLCAKKyAgICAyMjQsIDIzNywgMTcxLCAxOTcsIDEsIDIyMywgNjMsIDIyMSwgMiwgMjIzLCA2NCwgMjIzLCAxNjMsIDE5NywgMSwgMjEyLCAKKyAgICAyMjIsIDIyMywgMTYzLCAxOTcsIDEsIDI0MiwgODAsIDE5NywgMSwgMjMwLCAyMTIsIDIzMCwgMjE2LCAyMzAsIDIwMywgNzUsIAorICAgIDE5NywgMSwgNzQsIDE5NywgMSwgMjMwLCAxNTIsIDIzMCwgMTg0LCAxOTcsIDEsIDIzOCwgMTY5LCAxOTcsIDEsIDIyNywgCisgICAgMjcsIDI1MSwgMTA5LCAxOTcsIDEsIDIxMiwgMjI2LCA2MywgMTk3LCAxLCAyMzAsIDE5NSwgMjQxLCA1MSwgMTk3LCAxLCAKKyAgICAyMTgsIDIyNiwgMjE4LCAyNTEsIDIxOSwgMTg0LCAxOTcsIDEsIDI1MSwgMjMsIDI0MSwgNDksIDE5NywgMSwgMjExLCAyMzQsIAorICAgIDE5NCwgMTk3LCAxLCAyMTIsIDE0NiwgMjI3LCAyMywgMTk0LCAxOTcsIDEsIDIxMiwgMjIwLCAxOTQsIDE5NywgMSwgMjQ3LCAKKyAgICAxMjUsIDE5NywgMSwgMjAyLCAxNTksIDE5NywgMSwgMjA4LCAxOTUsIDIwOCwgMjA3LCAyMDcsIDEwOCwgMjEwLCA2OSwgCisgICAgMTk3LCAxLCAyMTIsIDIxOSwgMjEwLCA2OSwgMTk3LCAxLCAyNDUsIDUxLCAxOTcsIDEsIDI0OCwgMTExLCAyNDgsIDExNCwgCisgICAgMjQ4LCA0NiwgMjQ5LCAyNTUsIDE5NywgMSwgMjEyLCAyMjUsIDI0OSwgMjU1LCAxOTcsIDEsIDI0MiwgNzksIDE5NywgMSwgCisgICAgMjIwLCAyLCAxOTcsIDEsIDI0MSwgMTQ2LCAyNDEsIDE0OCwgNzQsIDE5NywgMSwgMjI1LCAxMTMsIDIyNSwgMTIzLCAyMjYsIAorICAgIDE4NSwgMTk3LCAxLCAyMjcsIDI1LCAyMjYsIDE4NSwgMTk3LCAxLCAyMTIsIDIyMywgMjI2LCAxODUsIDE5NywgMSwgMjI3LCAKKyAgICAyNDksIDIyOCwgOTEsIDIyNywgMzQsIDE1OSwgMTk3LCAxLCAyNDIsIDgxLCAxOTcsIDEsIDIzMSwgMjMsIDE5NywgMSwgCisgICAgMjMxLCAyNCwgMTk3LCAxLCAyNDQsIDIwMCwgMjQ0LCAyMDYsIDI0NSwgNTEsIDE5NywgMSwgMjE5LCAyMjIsIDI0MCwgMjQyLCAKKyAgICA3OCwgMTk3LCAxLCAyNDEsIDE4MywgMTk3LCAxLCAyMzAsIDIzMiwgMTk3LCAxLCAyNDUsIDcxLCAxOTcsIDEsIDI0NywgNzUsIAorICAgIDE5NywgMSwgMjQ2LCAyMzcsIDE5NywgMSwgMjExLCA5OSwgMTk3LCAxLCAyMjcsIDIyLCAxOTcsIDEsIDIxMiwgMjE4LCAKKyAgICAxOTcsIDEsIDIzNSwgMTYxLCAxOTcsIDEsIDIxNywgMTM0LCAxOTcsIDEsIDIwMywgMTk2LCAxOTcsIDIxMiwgMTIwLCAyMTcsIAorICAgIDE3OCwgMTk3LCAyMjMsIDIyNiwgMjE3LCAxNzgsIDE5NywgMjQ1LCAxMzEsIDIxNywgMTc4LCAxOTcsIDI1MCwgMTA4LCA5NywgCisgICAgMTk3LCAyMDcsIDE2MiwgOTcsIDE5NywgMjQ4LCAxMzAsIDk3LCAxOTcsIDEsIDIzMCwgNTQsIDE5NywgMSwgMjEzLCA5MiwgCisgICAgMTk3LCAxLCAyMjAsIDE4LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyMTksIDIyNywgMTk3LCAxLCAyMzksIDEzMSwgCisgICAgMjQ3LCAyMCwgMjMwLCAyMTUsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI0MSwgMTQ3LCAxOTcsIDEsIDIzOSwgMTMxLCAKKyAgICAyNDcsIDIwLCAyNTEsIDE0MSwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjUxLCA5MywgMjA5LCAyNTQsIDEsIDYzLCAKKyAgICAyMDksIDI1NCwgMSwgNzUsIDIwOSwgMjU0LCAxLCA2OCwgMjA5LCAyNTQsIDEsIDE3MywgMjA5LCAyNTQsIDEsIDIzOSwgOCwgCisgICAgMjA5LCAyNTQsIDEsIDIyMiwgMjAzLCAyMDksIDI1NCwgMSwgMjEwLCAyMiwgMjA5LCAyNTQsIDEsIDI0NCwgMjEyLCAyMDksIAorICAgIDI1NCwgMSwgMjAxLCAyMDEsIDIwOSwgMjU0LCAxLCAxODUsIDIwOSwgMjU0LCAxLCAyNDksIDMyLCAyMDksIDI1NCwgMSwgCisgICAgMTkyLCAyMDksIDI1NCwgMSwgMTk4LCAyMDksIDI1NCwgMSwgMjI4LCAxMTMsIDIwOSwgMjU0LCAxLCAyMDQsIDExMSwgMjA5LCAKKyAgICAyNTQsIDEsIDIxNSwgMzYsIDIwOSwgMjU0LCAxLCAxNTIsIDIwOSwgMjU0LCAyMiwgMiwgNzUsIDIwOSwgMjU0LCAyMiwgMiwgCisgICAgNjgsIDIwOSwgMjU0LCAyLCAyMDUsIDIwNCwgMjM3LCA5NiwgMSwgNjMsIDIzNywgOTYsIDEsIDc1LCAyMzcsIDk2LCAxLCAKKyAgICA2OCwgMjM3LCA5NiwgMSwgMTczLCAyMzcsIDk2LCAxLCAyMzksIDgsIDIzNywgOTYsIDEsIDIyMiwgMjAzLCAyMzcsIDk2LCAKKyAgICAxLCAyMTAsIDIyLCAyMzcsIDk2LCAxLCAyNDQsIDIxMiwgMjM3LCA5NiwgMSwgMjAxLCAyMDEsIDIzNywgOTYsIDEsIDE4NSwgCisgICAgMjM3LCA5NiwgMSwgMjQ5LCAzMiwgMjM3LCA5NiwgMSwgMTkyLCAyMzcsIDk2LCAxLCAxOTgsIDIzNywgOTYsIDEsIDIxNiwgCisgICAgMjIwLCAyMzcsIDk2LCAxLCAyMjgsIDExMywgMjM3LCA5NiwgMSwgMjA0LCAxMTEsIDIzNywgOTYsIDEsIDIxNSwgMzYsIAorICAgIDIzNywgOTYsIDEsIDE1MiwgMjM3LCA5NiwgMjIsIDIsIDc1LCAyMzcsIDk2LCAyMiwgMiwgNjgsIDIzNywgOTYsIDIsIDIxOSwgCisgICAgMTI0LCAyMTgsIDE4NSwgMjEyLCAxMjAsIDIxNywgMTc4LCAyMTgsIDE4NSwgNTIsIDIxNywgMTc4LCAyNDcsIDE4NSwgMSwgCisgICAgNjMsIDI0NywgMTg1LCAxLCA3NSwgMjQ3LCAxODUsIDEsIDY4LCAyNDcsIDE4NSwgMSwgMTczLCAyNDcsIDE4NSwgMSwgMjM5LCAKKyAgICA4LCAyNDcsIDE4NSwgMSwgMjIyLCAyMDMsIDI0NywgMTg1LCAxLCAyMTAsIDIyLCAyNDcsIDE4NSwgMSwgMjQ0LCAyMTIsIAorICAgIDI0NywgMTg1LCAxLCAyMDEsIDIwMSwgMjQ3LCAxODUsIDEsIDE4NSwgMjQ3LCAxODUsIDEsIDI0OSwgMzIsIDI0NywgMTg1LCAKKyAgICAxLCAxOTIsIDI0NywgMTg1LCAxLCAxOTgsIDI0NywgMTg1LCAxLCAyMTYsIDIyMCwgMjQ3LCAxODUsIDEsIDIyOCwgMTEzLCAKKyAgICAyNDcsIDE4NSwgMSwgMjA0LCAxMTEsIDI0NywgMTg1LCAxLCAyMTUsIDM2LCAyNDcsIDE4NSwgMSwgMTUyLCAyNDcsIDE4NSwgCisgICAgMjIsIDIsIDc1LCAyNDcsIDE4NSwgMjIsIDIsIDY4LCAyMDksIDI1MywgMSwgNjMsIDIwOSwgMjUzLCAxLCA3NSwgMjA5LCAKKyAgICAyNTMsIDEsIDY4LCAyMDksIDI1MywgMSwgMTczLCAyMDksIDI1MywgMSwgMjM5LCA4LCAyMDksIDI1MywgMSwgMjIyLCAyMDMsIAorICAgIDIwOSwgMjUzLCAxLCAyMTAsIDIyLCAyMDksIDI1MywgMSwgMjQ0LCAyMTIsIDIwOSwgMjUzLCAxLCAyMDEsIDIwMSwgMjA5LCAKKyAgICAyNTMsIDEsIDE4NSwgMjA5LCAyNTMsIDEsIDI0OSwgMzIsIDIwOSwgMjUzLCAxLCAxOTIsIDIwOSwgMjUzLCAxLCAxOTgsIAorICAgIDIwOSwgMjUzLCAxLCAyMjgsIDExMywgMjA5LCAyNTMsIDEsIDIwNCwgMTExLCAyMDksIDI1MywgMSwgMjE1LCAzNiwgMjA5LCAKKyAgICAyNTMsIDIyLCAyLCA3NSwgMjA5LCAyNTMsIDIyLCAyLCA2OCwgODUsIDEsIDE3MywgODUsIDEsIDIyOSwgMTQ0LCA4NSwgMSwgCisgICAgMjI5LCAyNiwgODUsIDEsIDIyOSwgMTE1LCA4NSwgMSwgMjIyLCAxMjgsIDg1LCAxLCAyNDcsIDkyLCA4NSwgMSwgMjQ2LCAKKyAgICAxOTksIDg1LCAxLCAyNDUsIDI1NCwgODUsIDEsIDI0NiwgMTE2LCA4NSwgMSwgMjIwLCAyMzMsIDg1LCAxLCAyNDQsIDIxMiwgCisgICAgODUsIDEsIDIwNywgMjI5LCA4NSwgMSwgMjQzLCAxMTMsIDg1LCAxLCAyMDcsIDIyNCwgODUsIDEsIDIyMSwgMTk3LCA4NSwgCisgICAgMSwgMjEwLCAyMiwgODUsIDEsIDIwOSwgMTA4LCA4NSwgMSwgMTM1LCA4NSwgMSwgMjA5LCA0NywgODUsIDEsIDIyMSwgMTkxLCAKKyAgICA4NSwgMSwgMjQ5LCAzMiwgODUsIDEsIDIxOCwgMjA4LCA4NSwgMSwgMjE4LCA2OSwgODUsIDEsIDIxOCwgMTgwLCA4NSwgMSwgCisgICAgMjI0LCA4MiwgODUsIDEsIDIwMiwgMjQ3LCA4NSwgMSwgMjE1LCAyMjcsIDg1LCAxLCAyMjcsIDQ5LCA4NSwgMSwgMjA1LCAKKyAgICAxODksIDg1LCAxLCAyMTMsIDkwLCA4NSwgMSwgMjExLCAxMjQsIDg1LCAxLCAyMTUsIDM2LCA4NSwgMSwgMTUyLCA4NSwgMSwgCisgICAgMjI4LCAxMTMsIDg1LCAxLCAyMTcsIDEyNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExMiwgODUsIDIzMSwgMzYsIDIyLCAKKyAgICAyMTcsIDEyNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDg4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgODMsIDg1LCAyMzEsIAorICAgIDM2LCAyMiwgMjE3LCA2NSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDM1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMjMsIDg1LCAKKyAgICAyMzEsIDM2LCAyMiwgMjE3LCAyMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIAorICAgIDk1LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTk5LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTg4LCA4NSwgMjMxLCAzNiwgCisgICAgMjIsIDIxNywgMTA2LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMTE4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgCisgICAgMTIxLCAxMDUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA3MywgMjA3LCAxMjEsIDEwOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIAorICAgIDEwOCwgODUsIDIyLCAyMzEsIDIxLCAyNTAsIDE0OCwgODUsIDIyLCAyMzEsIDIxLCAyNTIsIDI1LCA4NSwgMjIsIDIsIDI1MiwgCisgICAgMjUsIDg1LCAyMiwgMiwgNzUsIDg1LCAyMiwgMiwgMjMxLCA4MywgODUsIDIyLCAyLCAyMDMsIDEyNCwgODUsIDIyLCAyLCAKKyAgICAyMDIsIDE2OSwgODUsIDIyLCAyLCA2OCwgODUsIDIyLCAyLCAyMDYsIDE3OCwgODUsIDIyLCAyLCAyMDcsIDM5LCA4NSwgMjIsIAorICAgIDIsIDIyMCwgNzMsIDg1LCAyMiwgMiwgMTk4LCA4NSwgMjIsIDIsIDIzMSwgMTEwLCA4NSwgMjIsIDIsIDc0LCA4NSwgMjIsIAorICAgIDIsIDI1MSwgMTA5LCA4NSwgMjIsIDIsIDI1MSwgNjQsIDg1LCAyMiwgMiwgMjIwLCAxOCwgODUsIDIyLCAyLCAyNTAsIDM0LCAKKyAgICA4NSwgMiwgMjIyLCA3MywgODUsIDIsIDIxNiwgMTU2LCA4NSwgMiwgMjAyLCAxODAsIDg1LCAyLCAyMjMsIDE5MCwgODUsIDIsIAorICAgIDIwOCwgNzMsIDg1LCAyLCAyNDgsIDIzMywgODUsIDIsIDIxNSwgMjIyLCA4NSwgMiwgMjA4LCAxNzEsIDg1LCAyLCAyMzAsIAorICAgIDExLCA4NSwgMiwgMjUxLCA2NiwgODUsIDIsIDIxNCwgMjQ0LCAyMTQsIDIzNywgODUsIDIsIDIwNSwgMjAxLCA4NSwgMiwgCisgICAgMjQ1LCAyNDgsIDg1LCAyLCAyNDgsIDIwNSwgODUsIDIsIDIyOSwgMTM2LCA4NSwgMiwgMjQ4LCAyMjgsIDg1LCAyLCAyNDcsIAorICAgIDY0LCAyMTgsIDEzMCwgMjI4LCAxNzMsIDg1LCAyLCAyMjcsIDIwMywgMjA4LCAxNDgsIDg1LCAyLCAyNDgsIDEwMCwgODUsIAorICAgIDIsIDIxOCwgMTgyLCAyMjMsIDI0MywgODUsIDIsIDIyOSwgNCwgODUsIDI0NSwgOTIsIDE2LCAyMTYsIDQ5LCA4NSwgMiwgCisgICAgMjUwLCAxNiwgODUsIDIsIDI1MCwgMzcsIDg1LCAxNywgMjAyLCA4NCwgODUsIDE3LCAxMDUsIDg1LCAxNywgMTA4LCA4NSwgCisgICAgMTcsIDE0NywgODUsIDE3LCAxNDksIDg1LCAxNywgMTcwLCA4NSwgMTcsIDE5NSwgODUsIDE3LCAyMTMsIDExMSwgODUsIDE3LCAKKyAgICAxOTksIDg1LCAxNywgMjIyLCA2MywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjExLCAyNTMsIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDIyMywgMjEwLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEyOSwgODUsIDE2LCAyMjcsIAorICAgIDIwMywgMjUwLCAzOSwgMjQ4LCAxMzMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDI0NywgMTY1LCA4NSwgMTYsIDIyNywgCisgICAgMjAzLCAyNTAsIDM5LCAyMTgsIDcsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgMSwgODUsIDE2LCAyMjcsIAorICAgIDIwMywgMjUwLCAzOSwgMjE3LCAyNTUsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgNSwgODUsIDE2LCAyMjcsIAorICAgIDIwMywgMjUwLCAzOSwgMjE4LCAzLCA5NCwgMjQ4LCA1OSwgOTQsIDI0MSwgMTA4LCA5NCwgMjQ1LCAyMzMsIDk0LCAyMzksIAorICAgIDEwMiwgMjExLCA2MSwgOTQsIDI0NSwgMjQyLCA5NCwgMjM5LCAxNDcsIDI0MywgODMsIDk0LCAyMDgsIDE3MCwgMjEyLCA3LCAKKyAgICAyMzUsIDIyMCwgOTQsIDIxMiwgMTYwLCA0LCAyNDcsIDI0NCwgMjI1LCA4OCwgOTQsIDIyNSwgMTE5LCAyNDUsIDIzMywgOTQsIAorICAgIDIyNSwgMTE5LCAyMzksIDEwMiwgMjExLCA2MSwgOTQsIDIyMiwgNTQsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAKKyAgICAxMDUsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxMDgsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxNDcsIAorICAgIDk0LCAyMiwgMjEzLCAxMzAsIDk0LCAxNywgMjAyLCA4NCwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTA4LCA5NCwgMTcsIDE0NywgCisgICAgOTQsIDE3LCAxNDksIDk0LCAxNywgMTcwLCA5NCwgMTcsIDE5NSwgOTQsIDE3LCAyMTMsIDExMSwgOTQsIDE3LCAxOTksIDk0LCAKKyAgICAxNywgMjIyLCA2MywgOTQsIDEsIDYzLCA5NCwgMSwgNzQsIDk0LCAxLCA3NSwgOTQsIDEsIDc4LCA5NCwgMSwgNjgsIDk0LCAKKyAgICAxLCAyMjAsIDczLCA5NCwgMSwgMjA3LCAyNCwgOTQsIDEsIDI0MSwgMTYxLCA5NCwgMSwgMjAxLCAyMDEsIDk0LCAxLCAyNTAsIAorICAgIDIyMywgOTQsIDEsIDI0OSwgMzIsIDk0LCAxLCAxODUsIDk0LCAxLCAyMTcsIDEyNiwgOTQsIDEsIDIzOSwgOCwgOTQsIDEsIAorICAgIDE5MiwgOTQsIDEsIDIyOCwgMTEzLCA5NCwgMSwgMjE1LCAzNiwgOTQsIDEsIDIxMywgOTAsIDk0LCAxLCAyMTAsIDIyLCA5NCwgCisgICAgMSwgMjQ0LCAyMTIsIDk0LCAxLCAyNDYsIDE5OSwgOTQsIDEsIDIzMCwgMTgxLCA5NCwgMSwgMTk4LCA5NCwgMSwgMjE2LCAKKyAgICAyMjAsIDk0LCAxLCAyMDQsIDExMSwgOTQsIDEsIDI0MCwgMTA4LCA5NCwgMSwgMTczLCA5NCwgMSwgMjI5LCAxNDQsIDk0LCAKKyAgICAxLCAyMDgsIDIwLCA5NCwgMSwgMjAyLCAxMTYsIDk0LCAxLCAyMzcsIDE1NywgOTQsIDEsIDIwMiwgMTAsIDk0LCAxLCAyMjcsIAorICAgIDE2MSwgOTQsIDEsIDIwMiwgNjYsIDk0LCAxLCAyNDYsIDE0MiwgOTQsIDEsIDIwOCwgMTcwLCAxNjMsIDIyLCA1NCwgOTQsIAorICAgIDEsIDIwOCwgMTcwLCA3NCwgOTQsIDEsIDIwOCwgMTcwLCA3NSwgOTQsIDEsIDIwOCwgMTcwLCA3OCwgOTQsIDEsIDIwOCwgCisgICAgMTcwLCA2OCwgOTQsIDEsIDIwOCwgMTcwLCAyMjAsIDczLCA5NCwgMSwgMjA4LCAxNzAsIDIwNywgMjQsIDk0LCAxLCAyMDgsIAorICAgIDE3MCwgMjUwLCAyMjMsIDk0LCAxLCAyMDgsIDE3MCwgMjQ5LCAzMiwgOTQsIDEsIDIwOCwgMTcwLCAxODUsIDk0LCAxLCAKKyAgICAyMDgsIDE3MCwgMjE3LCAxMjYsIDk0LCAxLCAyMDgsIDE3MCwgMjM5LCA4LCA5NCwgMSwgMjA4LCAxNzAsIDE5MiwgOTQsIDEsIAorICAgIDIwOCwgMTcwLCAyMTAsIDIyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NCwgMjEyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NiwgMTk5LCAKKyAgICA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTgxLCA5NCwgMSwgMjA4LCAxNzAsIDIwOCwgMjAsIDk0LCAxLCAyMDgsIDE3MCwgCisgICAgMTk4LCA5NCwgMSwgMjA4LCAxNzAsIDIwNCwgMTExLCA5NCwgMSwgMjA4LCAxNzAsIDE3MywgOTQsIDEsIDIwOCwgMTcwLCAKKyAgICAyMzksIDUsIDk0LCAxLCAyMDgsIDE3MCwgMjM3LCAxNTcsIDk0LCAxLCAyMDgsIDE3MCwgMjMwLCAxNDAsIDk0LCAxLCAyMDgsIAorICAgIDE3MCwgMjIyLCA5OCwgOTQsIDEsIDIwOCwgMTcwLCAyNDEsIDI1NSwgOTQsIDEsIDIxMiwgMTYwLCA3NCwgOTQsIDEsIDIxMiwgCisgICAgMTYwLCA3NSwgOTQsIDEsIDIxMiwgMTYwLCAyMzAsIDE5MiwgOTQsIDEsIDIxMiwgMTYwLCAyMDcsIDI0LCA5NCwgMSwgMjEyLCAKKyAgICAxNjAsIDY4LCA5NCwgMSwgMjEyLCAxNjAsIDI1MCwgMjIzLCA5NCwgMSwgMjEyLCAxNjAsIDE3MywgOTQsIDEsIDIxMiwgCisgICAgMTYwLCAyMzksIDgsIDk0LCAxLCAyMTIsIDE2MCwgMTUyLCA5NCwgMSwgMjEyLCAxNjAsIDE4NSwgOTQsIDEsIDIxMiwgMTYwLCAKKyAgICAyMTMsIDkwLCA5NCwgMSwgMjEyLCAxNjAsIDIxMCwgMjIsIDk0LCAxLCAyMTIsIDE2MCwgMjQ0LCAyMTIsIDk0LCAxLCAyMTIsIAorICAgIDE2MCwgMjMwLCAxODEsIDk0LCAxLCAyMTIsIDE2MCwgMjQwLCAxMDgsIDk0LCAxLCAyMTIsIDE2MCwgMjM5LCA1LCA5NCwgMSwgCisgICAgMjEyLCAxNjAsIDIzNywgMTU3LCA5NCwgMSwgMjEyLCAxNjAsIDIwOCwgMjAsIDk0LCAxLCAyMTIsIDE2MCwgMjAyLCAxMTYsIAorICAgIDk0LCAxLCAyMTIsIDE2MCwgMjE2LCAyMTYsIDk0LCAxLCAyMTIsIDE2MCwgMjQ2LCAxOTksIDk0LCAxLCAyMTIsIDE2MCwgCisgICAgMjAyLCA4MCwgOTQsIDEsIDIyNSwgMTE5LCA3NSwgOTQsIDEsIDIyNSwgMTE5LCAxNzMsIDk0LCAxLCAyMjUsIDExOSwgMjE2LCAKKyAgICAyMjAsIDk0LCAxLCAyMjUsIDExOSwgMjQwLCAxMDgsIDk0LCAxLCAyMjUsIDExOSwgMjAyLCA4MCwgOTQsIDEsIDI1MSwgMjIsIAorICAgIDIzOCwgMjQ0LCAyNTAsIDE4MSwgMTA1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNSwgMjAwLCAxMDUsIDk0LCAxLCAKKyAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAxNzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA3LCAzNCwgOTQsIDEsIAorICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDIzOSwgMjA3LCAzNCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDgsIDI0NSwgCisgICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxMjYsIDI0OCwgMjQ1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDYzLCAKKyAgICA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDc1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE3MywgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgMjUxLCAKKyAgICAyMiwgMjM4LCAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMjI5LCA5NCwgMSwgMjUxLCAKKyAgICAyMiwgMjM4LCAyNDQsIDI0NCwgMTIwLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIyMSwgMjI3LCA5NCwgMSwgMjUxLCAKKyAgICAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAyMTIsIDk0LCAxLCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMTg1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxOCwgMjA4LCA5NCwgMSwgMjUxLCAyMiwgCisgICAgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKKyAgICAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjUxLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAKKyAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgCisgICAgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjM4LCAxMTksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgCisgICAgMjM4LCAyNDQsIDIyMiwgMjAzLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgCisgICAgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDE0OSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAorICAgIDI0NCwgMjA3LCAyNDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTA0LCA5NCwgMSwgMjI1LCAKKyAgICAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIAorICAgIDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyNDUsIDY1LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgCisgICAgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDExNiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIAorICAgIDY4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE2MiwgMTk4LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgCisgICAgMjQ0LCAyNDgsIDk4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyMjcsIDE2MSwgMTksIDIwLCAyMTksIDE4OCwgMTksIDIwLCAyNTAsIDgsIDE5LCAyMCwgMjUxLCAKKyAgICAyMzYsIDE5LCAyMCwgMjA0LCA2NSwgMTksIDIwLCAyMTgsIDEzLCAxOSwgMjAsIDIxOSwgNDMsIDE5LCAyMCwgMjE3LCAxNDMsIAorICAgIDE5LCAyMCwgMjA5LCAxOTYsIDE5LCAyMCwgMjI5LCAyMDgsIDE5LCAyMCwgMjI4LCAxNjQsIDE5LCAyMCwgMjI1LCA2MywgCisgICAgMTksIDIwLCAyMjEsIDE0OSwgMTksIDIwLCAyMjMsIDU5LCAxOSwgMjAsIDIyNywgMjQ0LCAxOSwgMjAsIDIxMSwgMjMyLCAKKyAgICAxOSwgMjAsIDIxNCwgMjA4LCAxOSwgMjAsIDIxMiwgMjA3LCAxOSwgMjAsIDIxMywgNDcsIDE5LCAyMCwgMjEyLCAxNzIsIAorICAgIDE5LCAyMCwgMjAyLCAyMjIsIDE5LCAyMCwgMjAzLCA1OCwgMTksIDIwLCAyMTYsIDE2NSwgMTksIDIwLCAyMjEsIDE3LCAxOSwgCisgICAgMjAsIDIyMCwgNTMsIDIyMSwgMTcsIDE5LCAyMCwgMjIxLCAxNiwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIDE2LCAxOSwgMjAsIAorICAgIDIyMSwgMTUsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNSwgMTksIDIwLCAyMjEsIDE0LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgCisgICAgMTQsIDE5LCAyMCwgMjE1LCAxMDcsIDE5LCAyMCwgMjE1LCAxMDYsIDE5LCAyMCwgMjE1LCAxMDUsIDE5LCAyMCwgMjE1LCAKKyAgICAxMDQsIDE5LCAyMCwgMjE1LCAxMDMsIDE5LCAyMCwgMjE1LCAxMTEsIDE5LCAyMCwgMjIwLCA1MywgMjE5LCAxODQsIDE5LCAKKyAgICAyMCwgMjIwLCA1MywgMjEwLCA2OSwgMTksIDIwLCAyMjAsIDUzLCAyMzAsIDU0LCAxOSwgMjAsIDIyMCwgNTMsIDI0NywgCisgICAgMTI1LCAxOSwgMjAsIDIyMCwgNTMsIDIyNiwgMTg1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMywgMTYzLCAxOSwgMjAsIDIyMCwgCisgICAgNTMsIDE5NCwgMTksIDIwLCAyMjAsIDUzLCAyMTMsIDkyLCAxOSwgMjAsIDI0MSwgMTc0LCAyMDQsIDE0NCwgMTksIDIwLCAKKyAgICAyMDQsIDQ0LCAyMDQsIDE0NCwgMTksIDIwLCA0NiwgNSwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNiwgMTg4LCAyNDMsIAorICAgIDg1LCAxOSwgMjAsIDIxNywgMCwgMjE1LCAxMDgsIDE5LCAyMCwgMTk2LCAyMjcsIDE4LCAxOSwgMjAsIDE5NiwgMjI4LCAKKyAgICAxMTIsIDE5LCAyMCwgMjA5LCAxMSwgMTksIDIwLCAyMDksIDEzLCAxOSwgMjAsIDIwNywgMjIxLCAxOSwgMjAsIDIwNywgCisgICAgMjIzLCAxOSwgMjAsIDIwNywgMjI4LCAxOSwgMjAsIDIwOCwgMTgwLCAxOSwgMjAsIDIwOCwgMTgyLCAxOSwgMjAsIDIxNCwgCisgICAgMjA2LCAyMTIsIDE3NywgMTksIDIwLCAyMTQsIDIwNiwgMjEyLCAyMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNiwgMTE3LCAKKyAgICAxOSwgMjAsIDg4LCAyMzcsIDE4NSwgMTksIDIwLCA4OCwgMjQ0LCAzNSwgMjM4LCAxODIsIDE5LCAyMCwgODgsIDIzOSwgNSwgCisgICAgMTksIDIwLCA4OCwgMjM3LCAxOTAsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgNjQsIDE5LCAyMCwgODgsIDIzMCwgNjIsIDE5LCAKKyAgICAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE1OSwgMTksIDIwLCAyNDgsIDE1MywgMjQ0LCAzNSwgMTQ2LCAxOSwgMjAsIDg4LCAKKyAgICAyNDQsIDMwLCAxOTQsIDIyNywgMTI0LCAyMDUsIDE2OSwgMjI3LCAxNzQsIDIyNywgMTI0LCAxLCAxNzMsIDIyNywgMTI0LCAKKyAgICAxLCAyMjksIDE0NCwgMjI3LCAxMjQsIDEsIDIzOSwgOCwgMjI3LCAxMjQsIDEsIDIzOCwgMTE5LCAyMjcsIDEyNCwgMSwgCisgICAgMjIyLCAyMDMsIDIyNywgMTI0LCAxLCAyNDcsIDkyLCAyMjcsIDEyNCwgMSwgMjQ2LCAxOTksIDIyNywgMTI0LCAxLCAyMzAsIAorICAgIDE4MSwgMjI3LCAxMjQsIDEsIDIzMCwgMTQ5LCAyMjcsIDEyNCwgMSwgMjAzLCA3OCwgMjI3LCAxMjQsIDEsIDIxMCwgMjIsIAorICAgIDIyNywgMTI0LCAxLCAyMDksIDEwOCwgMjI3LCAxMjQsIDEsIDI0NCwgMjEyLCAyMjcsIDEyNCwgMSwgMjQ0LCAxLCAyMjcsIAorICAgIDEyNCwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCAxLCAxODUsIDIyNywgMTI0LCAxLCAyMTgsIDIwOCwgMjI3LCAxMjQsIDEsIAorICAgIDI0OSwgMzIsIDIyNywgMTI0LCAxLCAyNDgsIDk4LCAyMjcsIDEyNCwgMSwgMTkyLCAyMjcsIDEyNCwgMSwgMTk4LCAyMjcsIAorICAgIDEyNCwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCAxLCAyMjgsIDExMywgMjI3LCAxMjQsIDEsIDIwNCwgMTExLCAyMjcsIDEyNCwgCisgICAgMSwgMjEzLCA5MCwgMjI3LCAxMjQsIDEsIDIxMSwgMTY0LCAyMjcsIDEyNCwgMSwgMjE1LCAzNiwgMjI3LCAxMjQsIDEsIAorICAgIDE1MiwgMjI3LCAxMjQsIDEsIDIzNywgMTgxLCAyMjcsIDEyNCwgMSwgMjA4LCAxMTksIDIyNywgMTI0LCAyMiwgMiwgNjMsIAorICAgIDIyNywgMTI0LCAyMiwgMiwgNzUsIDIyNywgMTI0LCAyMiwgMiwgNjgsIDIyNywgMTI0LCAyMiwgMiwgMjQxLCAxNjEsIDIyNywgCisgICAgMTI0LCAyMiwgMiwgMjUxLCA2NCwgMjI3LCAxMjQsIDIyLCAyLCAyMjAsIDE4LCAyMjcsIDEyNCwgMjIsIDIsIDI1MCwgMzQsIAorICAgIDIyNywgMTI0LCAyMiwgMiwgNzQsIDIyNywgMTI0LCAyMiwgMiwgNzgsIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMTk4LCAKKyAgICAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCAyMjcsIAorICAgIDEyNCwgNSwgMSwgMTczLCAyMjcsIDEyNCwgNSwgMSwgMjIyLCAyMDMsIDIyNywgMTI0LCA1LCAxLCAyNTAsIDE4MCwgMjI3LCAKKyAgICAxMjQsIDUsIDEsIDIxMCwgMjIsIDIyNywgMTI0LCA1LCAxLCAyMDEsIDIwMSwgMjI3LCAxMjQsIDUsIDEsIDE4NSwgMjI3LCAKKyAgICAxMjQsIDUsIDEsIDE5MiwgMjI3LCAxMjQsIDUsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgNSwgMSwgMjI4LCAxMTMsIDIyNywgCisgICAgMTI0LCAyLCAyMjMsIDIzMSwgMjI3LCAxMjQsIDIsIDIyOSwgMTg2LCAyMjcsIDEyNCwgMiwgMjE1LCAzNCwgMjI3LCAxMjQsIAorICAgIDIsIDIyNywgMTgsIDIyNywgMTI0LCAyNDAsIDIxMiwgODIsIDIyNywgMTI0LCAyMTcsIDQ3LCA4MiwgMjI3LCAxMjQsIDE3LCAKKyAgICAyMDIsIDg0LCAyMjcsIDEyNCwgMTcsIDEwNSwgMjI3LCAxMjQsIDE3LCAxMDgsIDIyNywgMTI0LCAxNywgMTQ3LCAyMjcsIAorICAgIDEyNCwgMTcsIDE0OSwgMjI3LCAxMjQsIDE3LCAxNzAsIDIyNywgMTI0LCAxNywgMTk1LCAyMjcsIDEyNCwgMTcsIDIxMywgCisgICAgMTExLCAyMjcsIDEyNCwgMTcsIDE5OSwgMjI3LCAxMjQsIDE3LCAyMjIsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDE3MywgNDUsIAorICAgIDIyNywgMjM1LCAxLCAyMDMsIDE4MiwgNDUsIDIyNywgMjM1LCAxLCAyMjIsIDIwMywgNDUsIDIyNywgMjM1LCAxLCAyMDgsIAorICAgIDIwLCA0NSwgMjI3LCAyMzUsIDEsIDIxNSwgMzYsIDQ1LCAyMjcsIDIzNSwgMSwgMTk4LCA0NSwgMjI3LCAyMzUsIDEsIDIxMCwgCisgICAgMjIsIDQ1LCAyMjcsIDIzNSwgMSwgMjA5LCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjI4LCAxMTMsIDQ1LCAyMjcsIDIzNSwgCisgICAgMSwgMTg1LCA0NSwgMjI3LCAyMzUsIDEsIDIxOCwgMjA4LCA0NSwgMjI3LCAyMzUsIDEsIDE5MiwgNDUsIDIyNywgMjM1LCAxLCAKKyAgICAyNDAsIDEwOCwgNDUsIDIyNywgMjM1LCAxLCAyMDYsIDg2LCA0NSwgMjI3LCAyMzUsIDEsIDE1MiwgNDUsIDIyNywgMjM1LCAKKyAgICAxLCAyMTcsIDEyNiwgNDUsIDIyNywgMjM1LCAxLCAyMjksIDE0NCwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDEwLCA0NSwgCisgICAgMjI3LCAyMzUsIDEsIDIwMSwgMjAxLCA0NSwgMjI3LCAyMzUsIDEsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDc1LCA0NSwgMjI3LCAKKyAgICAyMzUsIDEsIDI0MSwgMTYxLCA0NSwgMjI3LCAyMzUsIDEsIDI0MSwgMTQ3LCA0NSwgMjI3LCAyMzUsIDEsIDY4LCA0NSwgCisgICAgMjI3LCAyMzUsIDEsIDIyMCwgMTgsIDQ1LCAyMjcsIDIzNSwgMSwgNzgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA3LCAyNCwgNDUsIAorICAgIDIyNywgMjM1LCAxLCA3NCwgNDUsIDIyNywgMjM1LCAxLCAyNTAsIDMyLCA0NSwgMjI3LCAyMzUsIDEsIDI1MSwgNjQsIDQ1LCAKKyAgICAyMjcsIDIzNSwgMSwgMjA4LCAxNTksIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKKyAgICAxNTcsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTYsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTUsIDIyMiwgMjE0LCA0NSwgCisgICAgMjI2LCAyMzMsIDEsIDEzOCwgMjE3LCAxMjYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE3LCAxMjYsIAorICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTczLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgCisgICAgMTgyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyMiwgMjAzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKKyAgICAxMjQsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDMsIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMSwgMTI0LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDgsIDIwLCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxNSwgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTk4LCAyMjIsIAorICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOCwgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE1LCAKKyAgICAzNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAxOTgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCisgICAgMjEwLCAyMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMSwgMTM4LCAyMDEsIDIwMSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTAsIDIyLCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOSwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwMSwgMjAxLCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTgsIAorICAgIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCisgICAgMTg1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxOCwgMjA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKKyAgICAxMjQsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMSwgMTM4LCAyMDYsIDg2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTEzLCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0MCwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwNiwgODYsIAorICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxMTMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCisgICAgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKKyAgICAxMzgsIDI0OSwgMzIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgCisgICAgMjMzLCAxLCAxMjQsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0OSwgMzIsIDIyMiwgMjE0LCAKKyAgICA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjAzLCAxNDksIAorICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCisgICAgMjAzLCAxNDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjExLCA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKKyAgICAxLCAxMjQsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyLCAyMTIsIDIxNiwgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MiwgMjUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzEsIDgzLCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNjgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIAorICAgIDE3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDc0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgCisgICAgMjUxLCAxMDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIAorICAgIDIsIDIyMCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDcsIDI0LCAyMjIsIDIxNCwgNDUsIDIyNiwgCisgICAgMjMzLCAyMiwgMiwgMjUwLCA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjUxLCAyMzYsIDIyMiwgMjE0LCAKKyAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIxOSwgMTg4LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjIwLCA5NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAorICAgIDIwNywgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzAsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCisgICAgMSwgNDYsIDIwNiwgMTY0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjIyLCAyMDUsIDIyMiwgMjE0LCA0NSwgCisgICAgMjI2LCAyMzMsIDEsIDQ2LCAyMjMsIDE2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyNiwgMTg1LCAyMjIsIAorICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjMwLCA1NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDI0NSwgCisgICAgNTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDksIDI1NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAKKyAgICAyMjUsIDkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNDMsIDIyNSwgOTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAorICAgIDE3LCAyMDIsIDg0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTA1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgCisgICAgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ5LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTcwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk1LCAyMjIsIAorICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjEzLCAxMTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxOTksIDIyMiwgCisgICAgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAyMjIsIDYzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxMDQsIDE3LCAxMDUsIAorICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTYsIAorICAgIDg1LCAxNiwgMjE5LCA1MSwgODUsIDE2LCAyMjMsIDIxMSwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDEzMCwgMjI5LCAyMiwgCisgICAgODUsIDE2LCAyNDgsIDEzNCwgMjI5LCAyMiwgODUsIDE2LCAyNDcsIDE2NiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDgsIAorICAgIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAyLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMCwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIAorICAgIDYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA0LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTYxLCAyMjksIDIyLCA4NSwgMTYsIAorICAgIDI0NCwgMTU3LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU2LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU5LCAyMjksIDIyLCAKKyAgICA4NSwgMTYsIDI0NCwgMTU4LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU1LCAyMjksIDIyLCA4NSwgMTYsIDIwNywgMTY3LCAKKyAgICA4NSwgMTYsIDIyMywgMjExLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDEzMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ4LCAxMzQsIAorICAgIDIxNSwgMjIwLCA4NSwgMTYsIDI0NywgMTY2LCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDgsIDIxNSwgMjIwLCA4NSwgMTYsIAorICAgIDIxOCwgMiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAwLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDYsIDIxNSwgMjIwLCA4NSwgCisgICAgMTYsIDIxOCwgNCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNjEsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU3LCAyMTUsIAorICAgIDIyMCwgODUsIDE2LCAyNDQsIDE1NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTksIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgCisgICAgMTU4LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NSwgMjE1LCAyMjAsIDI0NywgMTg2LCAxLCAxNzMsIDI0NywgMTg2LCAxLCAKKyAgICAyMzksIDgsIDI0NywgMTg2LCAxLCAyMjIsIDIwMywgMjQ3LCAxODYsIDEsIDIyMiwgMTQ2LCAyNDcsIDE4NiwgMSwgMTg1LCAKKyAgICAyNDcsIDE4NiwgMSwgMjQ5LCAzMiwgMjQ3LCAxODYsIDEsIDE5MiwgMjQ3LCAxODYsIDEsIDIyMywgMjUwLCAyNDcsIDE4NiwgCisgICAgMSwgMjEwLCAyMiwgMjQ3LCAxODYsIDEsIDI0NCwgMjEyLCAyNDcsIDE4NiwgMSwgMjAxLCAyMDEsIDI0NywgMTg2LCAxLCAKKyAgICAyMjEsIDE0NywgMjQ3LCAxODYsIDEsIDI0NywgOTIsIDI0NywgMTg2LCAxLCAyMzAsIDE4MSwgMjQ3LCAxODYsIDEsIDIyMSwgCisgICAgMTEsIDI0NywgMTg2LCAxLCAyMjEsIDMsIDI0NywgMTg2LCAxLCAxOTgsIDI0NywgMTg2LCAxLCAyMTYsIDIyMCwgMjQ3LCAKKyAgICAxODYsIDEsIDIyOCwgMTEzLCAyNDcsIDE4NiwgMSwgMjA2LCA4NiwgMjQ3LCAxODYsIDEsIDIxNSwgMzYsIDI0NywgMTg2LCAKKyAgICAxLCA2MywgMjQ3LCAxODYsIDEsIDE1MiwgMjQ3LCAxODYsIDIyLCAyLCA3NSwgMjQ3LCAxODYsIDIyLCAyLCA2OCwgMjQ3LCAKKyAgICAxODYsIDIyLCAyLCA3NCwgMjQ3LCAxODYsIDIyLCAyLCA3OCwgMjQ3LCAxODYsIDIyLCAyLCAyNTEsIDEwOSwgMjQ3LCAxODYsIAorICAgIDIxOSwgMTM2LCAyNDcsIDE4NiwgMjQxLCA4NCwgNzYsIDIxNCwgMTY3LCA0NSwgMTA0LCAxLCAxMzgsIDE3MywgNDUsIDEwNCwgCisgICAgMSwgMTM4LCAyMjksIDE0NCwgNDUsIDEwNCwgMSwgMTM4LCAyMjgsIDE1MywgNDUsIDEwNCwgMSwgMTI0LCAxNzMsIDQ1LCAKKyAgICAxMDQsIDEsIDEyNCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDIyMiwgMjAzLCAKKyAgICA0NSwgMTA0LCAxLCAxMzgsIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEzOCwgMjQ2LCAxOTksIDQ1LCAxMDQsIDEsIDEyNCwgCisgICAgMjQ3LCA5MiwgNDUsIDEwNCwgMSwgMTI0LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMjQsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAKKyAgICAyMjEsIDExLCA0NSwgMTA0LCAxLCAyMTYsIDE3MSwgNDUsIDEwNCwgMSwgMTM4LCAyMTYsIDE2OSwgNDUsIDEwNCwgMSwgCisgICAgMjQ0LCAyMTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIDIxNiwgMTgwLCA0NSwgMTA0LCAxLCAKKyAgICAxMzgsIDIxMCwgMjIsIDQ1LCAxMDQsIDEsIDEzOCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjEwLCAyMiwgNDUsIAorICAgIDEwNCwgMSwgMTI0LCAyMDksIDEwOCwgNDUsIDEwNCwgMSwgMjAxLCAyMDEsIDQ1LCAxMDQsIDEsIDI0OSwgMzIsIDQ1LCAKKyAgICAxMDQsIDEsIDEzOCwgMTg1LCA0NSwgMTA0LCAxLCAxMzgsIDIxOCwgMjA4LCA0NSwgMTA0LCAxLCAxMzgsIDI0MCwgMTA4LCAKKyAgICA0NSwgMTA0LCAxLCAxMjQsIDE4NSwgNDUsIDEwNCwgMSwgMTI0LCAyNDAsIDEwOCwgNDUsIDEwNCwgMSwgMTI0LCAyMTgsIAorICAgIDIwOCwgNDUsIDEwNCwgMSwgMTkyLCA0NSwgMTA0LCAxLCAxMjQsIDE5OCwgNDUsIDEwNCwgMSwgMTM4LCAxOTgsIDQ1LCAKKyAgICAxMDQsIDEsIDIxNiwgMjIwLCA0NSwgMTA0LCAxLCAyMTUsIDE0MCwgNDUsIDEwNCwgMSwgMjI4LCAxMTMsIDQ1LCAxMDQsIDEsIAorICAgIDIyNiwgMjMyLCA0NSwgMTA0LCAxLCAyMDQsIDExMSwgNDUsIDEwNCwgMSwgMTM4LCAyMTMsIDkwLCA0NSwgMTA0LCAxLCAKKyAgICAxMzgsIDIxMSwgMTY0LCA0NSwgMTA0LCAxLCAxMzgsIDIxNSwgMzYsIDQ1LCAxMDQsIDEsIDEzOCwgMTUyLCA0NSwgMTA0LCAKKyAgICAxLCAyMjcsIDc3LCA0NSwgMTA0LCAxLCA2MywgNDUsIDEwNCwgMSwgMTI0LCAxNTIsIDQ1LCAxMDQsIDEsIDc1LCA0NSwgCisgICAgMTA0LCAxLCAyMzEsIDgzLCA0NSwgMTA0LCAxLCA2OCwgNDUsIDEwNCwgMSwgMjA2LCAxNzgsIDQ1LCAxMDQsIDEsIDI0MSwgCisgICAgMTYxLCA0NSwgMTA0LCAxLCAyMjAsIDE4LCA0NSwgMTA0LCAxLCAyMjgsIDk3LCA0NSwgMTA0LCAxLCAyMzcsIDI0OSwgMjE1LCAKKyAgICAzNiwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA0NSwgMTA0LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDQ1LCAKKyAgICAxMDQsIDEwOSwgMiwgMjI4LCAxMTQsIDIwOSwgMjI4LCAyMjgsIDg2LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjMwLCAxLCAKKyAgICAyMjgsIDg2LCA0NSwgMTA0LCAxMDksIDIsIDQ2LCAyMjIsIDIwMywgNDUsIDEwNCwgMTA5LCAyLCAxMjQsIDE4NSwgNDUsIAorICAgIDEwNCwgMTA5LCAyLCAxMzgsIDIxNiwgMTcwLCAyMTksIDI0NSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEwOSwgMiwgMTkyLCA0NSwgCisgICAgMTA0LCAxMDksIDIsIDI0OSwgMzIsIDQ1LCAxMDQsIDEwOSwgMiwgMjE1LCAzNiwgNDUsIDEwNCwgMiwgMjE1LCAxMCwgNDUsIAorICAgIDEwNCwgMjIsIDIsIDYzLCA0NSwgMTA0LCAyMiwgMiwgMjI1LCAxNDEsIDIxNCwgMjI1LCA0NSwgMTA0LCAyMiwgMiwgMjUyLCAKKyAgICAyNSwgNDUsIDEwNCwgMjIsIDIsIDIwOSwgMjM0LCAyNTIsIDI1LCA0NSwgMTA0LCAyMiwgMiwgNzUsIDQ1LCAxMDQsIDIyLCAKKyAgICAyLCAyMzEsIDgzLCA0NSwgMTA0LCAyMiwgMiwgMjA3LCAyNCwgNDUsIDEwNCwgMjIsIDIsIDIwNiwgMTc3LCA0NSwgMTA0LCAKKyAgICAyMiwgMiwgNjgsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3OCwgNDUsIDEwNCwgMjIsIDIsIDc4LCA0NSwgMTA0LCAyMiwgMiwgCisgICAgMjIwLCA5OCwgNTYsIDQ1LCAxMDQsIDIyLCAyLCAyMTksIDE4OCwgNDUsIDEwNCwgMjIsIDIsIDc0LCA0NSwgMTA0LCAyMiwgCisgICAgMiwgMjUxLCAxMDksIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDE4LCA0NSwgMTA0LCAyMiwgMiwgMjUxLCA2NCwgNDUsIDEwNCwgCisgICAgMjIsIDIsIDEwNCwgMjUxLCA2NCwgNDUsIDEwNCwgMjIsIDIsIDIyMCwgOTgsIDU1LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgCisgICAgMjMwLCAwLCA0NSwgMTA0LCAyLCAyMDgsIDE2MCwgNDUsIDEwNCwgMiwgMjA4LCAxNTksIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAKKyAgICAyMDgsIDE1OCwgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU3LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgMjA4LCAxNTYsIAorICAgIDQ1LCAxMDQsIDIsIDIxNiwgMjIxLCAyMzcsIDE1NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIxNCwgMjUzLCA0NSwgMTA0LCAKKyAgICAyLCAyMjksIDEwNCwgMjI5LCAyMzksIDQ1LCAxMDQsIDM5LCAyNDUsIDExMywgMjQzLCA4NSwgNDUsIDEwNCwgMjM2LCAxMDgsIAorICAgIDE3LCAyMDIsIDg0LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDEwNSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDgsIDQ1LCAKKyAgICAxMDQsIDIzNiwgMTA4LCAxNywgMTQ3LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE0OSwgNDUsIDEwNCwgMjM2LCAxMDgsIAorICAgIDE3LCAxNzAsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTk1LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDIxMywgMTExLCA0NSwgCisgICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE5OSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMjIsIDYzLCA0NSwgMTA0LCAxMDQsIDE3LCAKKyAgICAyMDIsIDg0LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDUsIDQ1LCAxMDQsIDEwNCwgMTcsIDEwOCwgNDUsIDEwNCwgMTA0LCAxNywgCisgICAgMTQ3LCA0NSwgMTA0LCAxMDQsIDE3LCAxNDksIDQ1LCAxMDQsIDEwNCwgMTcsIDE3MCwgNDUsIDEwNCwgMTA0LCAxNywgMTk1LCAKKyAgICA0NSwgMTA0LCAxMDQsIDE3LCAyMTMsIDExMSwgNDUsIDEwNCwgMTA0LCAxNywgMTk5LCA0NSwgMTA0LCAxMDQsIDE3LCAyMjIsIAorICAgIDYzLCA0NSwgMTA0LCAyLCAyMDQsIDI5LCA0NSwgMTA0LCAyLCAyMDQsIDI4LCA0NSwgMTA0LCAyLCAyMTQsIDIxMiwgNDUsIAorICAgIDEwNCwgMiwgMjI5LCAxNzUsIDQ1LCAxMDQsIDIsIDIzNiwgMzYsIDQ1LCAxMDQsIDIsIDI0MywgOTksIDQ1LCAxMDQsIDIsIAorICAgIDIxNiwgNzMsIDIxNSwgMTk4LCAyMTYsIDE4MCwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIwMywgNzksIDQ1LCAxMDQsIDIsIAorICAgIDIzMCwgMzUsIDQ1LCAxMDQsIDIsIDIzMCwgMzQsIDQ1LCAxMDQsIDIsIDIxNCwgMjIwLCA0NSwgMTA0LCAyLCAyMTQsIDIxOSwgCisgICAgNDUsIDEwNCwgMiwgMjM3LCA5OCwgNDUsIDEwNCwgMiwgMjQ3LCA4OSwgMzksIDI0MiwgNzUsIDI0NiwgNTMsIDI1MSwgMTM4LCAKKyAgICAzOSwgMjQzLCAyMzAsIDM5LCAyMzEsIDI3LCAzOSwgMTgzLCA0NywgMzksIDIwOCwgNzAsIDI0MywgODUsIDM5LCAyMDMsIAorICAgIDE5NSwgNTYsIDM5LCAyMDQsIDIxLCAyMjcsIDExNSwgNTYsIDM5LCAxNzEsIDEzMSwgNTYsIDM5LCA1MiwgMTcxLCAxMzEsIAorICAgIDU2LCAzOSwgMTU3LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIDM5LCAyMTEsIDE4LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIAorICAgIDM5LCAyMTksIDc4LCA1NSwgMzksIDUyLCAyMTksIDc4LCA1NSwgMzksIDIxOSwgNzgsIDU2LCAzOSwgMjE5LCA3OCwgMjE5LCAKKyAgICAxOTksIDEzMCwgMiwgMjA3LCA5LCAyMTYsIDUxLCAxMzAsIDIsIDIwNywgOSwgMjQ3LCA1NCwgMTMwLCAyLCAyNDYsIDIzNCwgCisgICAgMTMwLCAyLCAyMTAsIDE5MSwgMTMwLCAyLCAyNDgsIDU2LCAxMzAsIDEsIDI1MSwgNDUsIDEzMCwgMSwgMjUxLCA0NiwgMjA5LCAKKyAgICAxNzgsIDEzMCwgMSwgMjMxLCA3OSwgMTMwLCAxLCAyMzEsIDgwLCAyMDksIDE3OCwgMTMwLCAxLCAyMDcsIDEyLCAxMzAsIDEsIAorICAgIDIwNywgMTMsIDIwOSwgMTc4LCAxMzAsIDEsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAKKyAgICAxMDQsIDIwOSwgMTc4LCAxMzAsIDEsIDIyOCwgMTE0LCAyMjcsIDE5NywgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTgsIAorICAgIDIwOSwgMTc4LCAxMzAsIDEsIDI0MSwgMTI3LCAxMzAsIDEsIDI1MSwgNjIsIDEzMCwgMSwgMjIwLCA0OSwgMTMwLCAxLCAKKyAgICAyMjAsIDUwLCAyMDksIDE3OCwgMTMwLCAxLCAxNzMsIDEzMCwgMSwgMjMwLCA0NCwgMjI1LCAxNDQsIDEzMCwgMSwgMjM5LCAKKyAgICA4LCAxMzAsIDEsIDIzOSwgOSwgMjM4LCAyNSwgMTMwLCAxLCAyMjIsIDIwMywgMTMwLCAxLCAyNDcsIDkyLCAxMzAsIDEsIAorICAgIDI0NywgOTMsIDIyOCwgMTAwLCAxMzAsIDEsIDIzMCwgMTgxLCAxMzAsIDEsIDIzMCwgMTgyLCAyMzAsIDE1MywgMTMwLCAxLCAKKyAgICAyMjEsIDExLCAxMzAsIDEsIDIxMCwgMjMsIDIyNywgMjUzLCAxMzAsIDEsIDIxMCwgMjMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCisgICAgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDI1MSwgNCwgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDIyNSwgMTQ0LCAKKyAgICAxMzAsIDEsIDIyMywgMTExLCAyMTYsIDE4MywgMTMwLCAxLCAyMTAsIDIyLCAxMzAsIDEsIDIxMCwgMjMsIDIwOSwgMjAwLCAKKyAgICAxMzAsIDEsIDI0NCwgMjEyLCAxMzAsIDEsIDI0NCwgMjEzLCAyMjUsIDE2MywgMTMwLCAxLCAyMDEsIDIwMSwgMTMwLCAxLCAKKyAgICAxODUsIDEzMCwgMSwgMjE5LCAxNjksIDIyOSwgMjUxLCAxMzAsIDEsIDI0OSwgMzIsIDEzMCwgMSwgMjQ5LCAzMywgMjI5LCAKKyAgICAxODcsIDEzMCwgMSwgMTkyLCAxMzAsIDEsIDE5OCwgMTMwLCAxLCAyMTYsIDIyMCwgMTMwLCAxLCAyMjgsIDExMywgMTMwLCAKKyAgICAxLCAyMDQsIDExMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTUsIDIxLCAxMzAsIDEsIDIxNSwgMzcsIDIxNCwgMjMyLCAxMzAsIDEsIAorICAgIDIxNSwgMzYsIDEzMCwgMSwgMTUyLCAxMzAsIDIsIDIxNiwgOTQsIDEzMCwgMjIsIDIsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAKKyAgICAyMDcsIDgsIDEzMCwgMjIsIDIsIDIwNywgOSwgMjE0LCAyMjgsIDEzMCwgMjIsIDIsIDIxMCwgMjI0LCAxMzAsIDIyLCAyLCAKKyAgICAyMTAsIDIyNSwgMjMxLCA3MSwgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIDIxNiwgMTAzLCAxMzAsIDIyLCAyLCAyMTYsIDIyMSwgCisgICAgMjE2LCAxMDQsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMjIsIDIsIDIyOCwgMTE0LCAKKyAgICAyMjcsIDE5OCwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM1LCAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjE2LCAxMDMsIAorICAgIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTA0LCAyMDksIDE3OCwgCisgICAgMTMwLCAyMiwgMiwgMjE4LCAyNDksIDEzMCwgMjIsIDIsIDIxOCwgMjUwLCAyMDksIDE3OCwgMTMwLCAyNTEsIDExNywgMjUxLCAKKyAgICAxMTYsIDEzMCwgMSwgMjMwLCAyMywgMjE0LCAyMjcsIDEzMCwgMSwgMjI5LCAxMTEsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNywgCisgICAgMTAxLCAyMTQsIDIyNywgMTMwLCAxLCAyNDEsIDE1NSwgMjE0LCAyMjcsIDEzMCwgMSwgMjA2LCA1NiwgMjE0LCAyMjcsIAorICAgIDEzMCwgMSwgMjAyLCAxMDYsIDIxNCwgMjI3LCAxMzAsIDEsIDI1MCwgNTIsIDIxNCwgMjI3LCAxMzAsIDE3LCAyMDIsIDg0LCAKKyAgICAxMzAsIDE3LCAxMDUsIDEzMCwgMTcsIDEwOCwgMTMwLCAxNywgMTQ3LCAxMzAsIDE3LCAxNDksIDEzMCwgMTcsIDE3MCwgCisgICAgMTMwLCAxNywgMTk1LCAxMzAsIDE3LCAyMTMsIDExMSwgMTMwLCAxNywgMTk5LCAxMzAsIDE3LCAyMjIsIDYzLCAxMzAsIAorICAgIDIxOSwgMTA0LCAxMzAsIDIxOSwgMTMwLCAxMzAsIDIwNCwgMTQsIDEzMCwgMjQ3LCAzMSwgMjE5LCAxMjMsIDEzMCwgMjQ3LCAKKyAgICAzMSwgMjEyLCAxMzksIDEzMCwgMjQ3LCAzMSwgMjE5LCA3NSwgMTMwLCAyMTksIDEyOSwgMTMwLCAzMSwgMTYsIDI0MywgOTEsIAorICAgIDEzMCwgMzEsIDE2LCAyNDQsIDM0LCAxMzAsIDMxLCAxNiwgMjQyLCAyNywgMTMwLCAzMSwgMTYsIDI0NCwgMTY0LCAxMzAsIAorICAgIDMxLCAxNiwgMjQ0LCAxNjUsIDIxMCwgMTkxLCAxMzAsIDMxLCAxNiwgMjQzLCAxNzUsIDEzMCwgMzEsIDE2LCAyNDQsIDIwNSwgCisgICAgMTMwLCAzMSwgMTYsIDI0NCwgMTAsIDEzMCwgMzEsIDE2LCAyNDQsIDE4NywgMTMwLCAzMSwgMTYsIDI0NCwgMTY1LCAyMzgsIAorICAgIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMDksIDE3MSwgMTMwLCAzMSwgMTYsIDM5LCAyNDEsIDgyLCAxMzAsIDMxLCAxNiwgCisgICAgMzksIDIyOSwgMTgyLCAxMzAsIDMxLCAxNiwgMzksIDIyOSwgMTg0LCAxMzAsIDMxLCAxNiwgMzksIDIzMCwgMTU3LCAxMzAsIAorICAgIDMxLCAxNiwgMzksIDIyOSwgMTgzLCAzLCAyMzAsIDE1NywgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NSwgMywgMjMwLCAKKyAgICAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjQ4LCAxMTksIDEzMCwgMzEsIDE2LCAzOSwgMjM4LCAyOSwgMTMwLCAzMSwgMTYsIAorICAgIDIxNiwgMTQsIDE3MSwgMjQyLCAzNywgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDE3MSwgMjQ0LCAyMDMsIDEzMCwgMzEsIDE2LCAKKyAgICAyMTYsIDE0LCAyNDYsIDE2LCAyMDcsIDE5NSwgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDI0NiwgMTYsIDIwOSwgMjQ0LCAxMzAsIAorICAgIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE5LCAxMTgsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTcsIDE3NywgCisgICAgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAyMTgsIDk0LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDI0NiwgMTYsIAorICAgIDIxOCwgODAsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTgsIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTAxLCAKKyAgICAyMTAsIDIxMywgMiwgMjE5LCAxMTQsIDIxMCwgMjEzLCAyLCAyMTksIDExMCwgMjEwLCAyMTMsIDEsIDYzLCAyMTAsIDIxMywgCisgICAgMSwgNzUsIDIxMCwgMjEzLCAxLCA2OCwgMjEwLCAyMTMsIDEsIDI1MSwgMTA5LCAyMTAsIDIxMywgMSwgNzgsIDIxMCwgMjEzLCAKKyAgICAxLCA3NCwgMjEwLCAyMTMsIDEsIDI0MCwgMjM4LCAyMTAsIDIxMywgMSwgMTczLCAyMTAsIDIxMywgMSwgMjE3LCAxMjYsIAorICAgIDIxMCwgMjEzLCAxLCAyMzksIDgsIDIxMCwgMjEzLCAxLCAyMjIsIDIwMywgMjEwLCAyMTMsIDEsIDI0NywgOTIsIDIxMCwgCisgICAgMjEzLCAxLCAyMzAsIDE4MSwgMjEwLCAyMTMsIDEsIDIwMiwgMTE2LCAyMTAsIDIxMywgMSwgMjIxLCAxMSwgMjEwLCAyMTMsIAorICAgIDEsIDIxMCwgMjIsIDIxMCwgMjEzLCAxLCAyNDQsIDIxMiwgMjEwLCAyMTMsIDEsIDIwMSwgMjAxLCAyMTAsIDIxMywgMSwgCisgICAgMTg1LCAyMTAsIDIxMywgMSwgMjQwLCAxMDgsIDIxMCwgMjEzLCAxLCAyMDYsIDg2LCAyMTAsIDIxMywgMSwgMjQ5LCAzMiwgCisgICAgMjEwLCAyMTMsIDEsIDE5MiwgMjEwLCAyMTMsIDEsIDE5OCwgMjEwLCAyMTMsIDEsIDIxNiwgMjIwLCAyMTAsIDIxMywgMSwgCisgICAgMjI4LCAxMTMsIDIxMCwgMjEzLCAxLCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIxNSwgMzYsIDIxMCwgMjEzLCAxLCAyMDMsIAorICAgIDE4MiwgMjEwLCAyMTMsIDEsIDE1MiwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMjcsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgCisgICAgMTAzLCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDEwMCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExNywgMjEwLCAyMTMsIDIyLCAKKyAgICAyLCAyMTksIDk5LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTIxLCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTA5LCAyMTAsIAorICAgIDIxMywgMjIsIDIsIDIxOSwgMTI4LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTE5LCAyMTAsIDIxMywgMiwgMjE5LCAxMzEsIAorICAgIDIxMCwgMjEzLCAyLCAyMDUsIDIwNCwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCA2NCwgMTkyLCAyMTAsIDIxMywgMTA5LCAyLCAKKyAgICAyMTksIDY0LCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIyOSwgMTQ0LCAyMTAsIDIxMywgMSwgMjEwLCAxNTAsIDIxMCwgCisgICAgMjEzLCAxNywgMjAyLCA4NCwgMjEwLCAyMTMsIDE3LCAxMDUsIDIxMCwgMjEzLCAxNywgMTA4LCAyMTAsIDIxMywgMTcsIAorICAgIDE0NywgMjEwLCAyMTMsIDE3LCAxNDksIDIxMCwgMjEzLCAxNywgMTcwLCAyMTAsIDIxMywgMTcsIDE5NSwgMjEwLCAyMTMsIAorICAgIDE3LCAyMTMsIDExMSwgMjEwLCAyMTMsIDE3LCAxOTksIDIxMCwgMjEzLCAxNywgMjIyLCA2MywgMjEwLCAyMTMsIDI1MCwgCisgICAgMTcsIDIxMCwgMjEzLCAxLCAyMTYsIDc2LCAyMTAsIDIxMywgMSwgMjI3LCAxNzEsIDIxMCwgMjEzLCAxLCAyNDgsIDk4LCAKKyAgICAyMTAsIDIxMywgMSwgNDYsIDIzMCwgNTQsIDIxMCwgMjEzLCAxLCA0NiwgMjI2LCAxODUsIDI0OCwgMjA4LCAxLCA2MywgCisgICAgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCA2MywgMjQ4LCAyMDgsIDEsIDE1MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxNTIsIAorICAgIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMTUyLCAyNDgsIDIwOCwgMSwgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDIyOSwgMjM2LCAKKyAgICAyNDksIDMyLCAyNDgsIDIwOCwgMSwgMTg1LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIwMSwgCisgICAgMjAxLCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIwMSwgMjAxLCAyNDgsIDIwOCwgMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAKKyAgICAyMTIsIDEzMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMTksIDE0MywgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMzksIDgsIAorICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMjM5LCA4LCAyNDgsIDIwOCwgMSwgMjMwLCAxODEsIDI0OCwgMjA4LCAxLCAyNDQsIAorICAgIDIxMiwgMjQ4LCAyMDgsIDEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgCisgICAgMTkyLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMSwgMjM2LCAyMTAsIDIyLCAyNDgsIAorICAgIDIwOCwgMSwgMjIxLCAxNzAsIDIxMCwgMjIsIDI0OCwgMjA4LCAxLCAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIAorICAgIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDE5OCwgMjQ4LCAyMDgsIDEsIAorICAgIDIxMiwgMTMxLCAxOTgsIDI0OCwgMjA4LCAxLCAyMjIsIDIwMywgMjQ4LCAyMDgsIDEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgCisgICAgMjEyLCAxMzEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgMjIxLCAxMSwgMjQ4LCAyMDgsIDEsIDI0NywgOTIsIDI0OCwgMjA4LCAKKyAgICAxLCAyMjMsIDI1LCAyNDgsIDIwOCwgMSwgMjI1LCA1NCwgMjQ4LCAyMDgsIDEsIDc1LCAyNDgsIDIwOCwgMSwgNjgsIDI0OCwgCisgICAgMjA4LCAyLCAyMDgsIDE2NCwgMjQ4LCAyMDgsIDIyLCAyLCA3NCwgMjQ4LCAyMDgsIDIyLCAyLCAyMTksIDE0MywgNzQsIAorICAgIDI0OCwgMjA4LCAyMiwgMiwgMjQxLCAxNjEsIDI0OCwgMjA4LCAyMiwgMiwgNzUsIDI0OCwgMjA4LCAyMiwgMiwgMjI5LCAKKyAgICAyMzYsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDc4LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgMjM2LCA3OCwgMjQ4LCAyMDgsIAorICAgIDIyLCAyLCA2OCwgMjQ4LCAyMDgsIDIyLCAyLCAxMDYsIDM1LCAyMTIsIDEzMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEwOSwgMiwgCisgICAgMjIyLCAyMDUsIDI0OCwgMjA4LCAxMDksIDIsIDIzNywgMTcxLCAyNDgsIDIwOCwgMjE5LCAxMTIsIDI0OCwgMjA4LCAyMTksIAorICAgIDEwOCwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMjMsIDExMSwgMjI0LCAyMTgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgCisgICAgMjE4LCAxMjIsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjMwLCA3OSwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMTksIAorICAgIDExMiwgMjI3LCAxODEsIDEsIDE3MywgMjI3LCAxODEsIDEsIDIyOSwgNDAsIDIyNywgMTgxLCAxLCAyMjksIDE0NCwgMjI3LCAKKyAgICAxODEsIDEsIDIzOSwgOCwgMjI3LCAxODEsIDEsIDIzOCwgNTEsIDIyNywgMTgxLCAxLCAyMjIsIDIwMywgMjI3LCAxODEsIDEsIAorICAgIDI0NywgOTIsIDIyNywgMTgxLCAxLCAyNDYsIDE5OSwgMjI3LCAxODEsIDEsIDIzMCwgMTgxLCAyMjcsIDE4MSwgMSwgMjIxLCAKKyAgICAxMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDIyNywgMTgxLCAxLCAyMDksIDEwOCwgMjI3LCAxODEsIDEsIDI0NCwgMjEyLCAKKyAgICAyMjcsIDE4MSwgMSwgMjAxLCAyMDEsIDIyNywgMTgxLCAxLCAxODUsIDIyNywgMTgxLCAxLCAyMTgsIDk4LCAyMjcsIDE4MSwgCisgICAgMSwgMjE4LCAyMDgsIDIyNywgMTgxLCAxLCAyNDAsIDEwOCwgMjI3LCAxODEsIDEsIDIzOSwgMjI3LCAyMjcsIDE4MSwgMSwgCisgICAgMjQ5LCAzMiwgMjI3LCAxODEsIDEsIDI0OCwgNDQsIDIyNywgMTgxLCAxLCAxOTIsIDIyNywgMTgxLCAxLCAyMjQsIDg5LCAKKyAgICAyMjcsIDE4MSwgMSwgMjA4LCAyMCwgMjI3LCAxODEsIDEsIDIwOCwgMTAsIDIyNywgMTgxLCAxLCAyNDEsIDI1NSwgMjI3LCAKKyAgICAxODEsIDEsIDE5OCwgMjI3LCAxODEsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMSwgMjI4LCAxMTMsIDIyNywgMTgxLCAxLCAKKyAgICAxNTIsIDIyNywgMTgxLCAxLCAyMzYsIDIyNCwgMjI3LCAxODEsIDEsIDIwNiwgODYsIDIyNywgMTgxLCAxLCAyMTUsIDM2LCAKKyAgICAyMjcsIDE4MSwgMSwgMjEzLCA5MCwgMjI3LCAxODEsIDEsIDIwNCwgMTExLCAyMjcsIDE4MSwgMSwgNjMsIDIyNywgMTgxLCAKKyAgICAyMTAsIDI1NCwgMSwgMTk4LCAyMjcsIDE4MSwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMjIsIDIsIDI1MiwgCisgICAgMjUsIDIyNywgMTgxLCAyMiwgMiwgNzUsIDIyNywgMTgxLCAyMiwgMiwgNzgsIDIyNywgMTgxLCAyMiwgMiwgMjIwLCAxOCwgCisgICAgMjI3LCAxODEsIDIyLCAyLCA2OCwgMjI3LCAxODEsIDIyLCAyLCAyMDYsIDE3OCwgMjI3LCAxODEsIDIyLCAyLCA3NCwgMjI3LCAKKyAgICAxODEsIDEwOSwgMiwgMjMwLCA1NCwgMjI3LCAxODEsIDEwOSwgMiwgMjI2LCAxODUsIDIyNywgMTgxLCAxMDksIDIsIDE1OSwgCisgICAgMjI3LCAxODEsIDEwOSwgMiwgMjIzLCAxNjMsIDIyNywgMTgxLCAxMDksIDIsIDIxOSwgMTg0LCAyMjcsIDE4MSwgMTA5LCAyLCAKKyAgICAxNDYsIDIyNywgMTgxLCAxMDksIDIsIDIxMCwgNjksIDIyNywgMTgxLCAxMDksIDIsIDIyMCwgMjQxLCAyMjcsIDE4MSwgCisgICAgMTA5LCAyLCAyMzAsIDAsIDIyNywgMTgxLCAyLCAyMTYsIDE4MSwgMjI3LCAxODEsIDIsIDIyMSwgNTEsIDIyNywgMTgxLCAKKyAgICAyMTcsIDE3OSwgMjEwLCAyMCwgMjI3LCAxODEsIDIxNywgMTc5LCAyMjAsIDI1MiwgMjA5LCA1LCAyMTAsIDIwLCAyMjcsIAorICAgIDE4MSwgMjE3LCAxNzksIDI0NiwgMjA2LCAyMjcsIDE4MSwgMjE3LCAxNzksIDIwOCwgMiwgMjQ2LCAyMDYsIDIyNywgMTgxLCAKKyAgICAyMTcsIDE3OSwgMjA4LCAxLCAyMjcsIDE4MSwgMTcsIDIwMiwgODQsIDIyNywgMTgxLCAxNywgMTA1LCAyMjcsIDE4MSwgMTcsIAorICAgIDEwOCwgMjI3LCAxODEsIDE3LCAxNDcsIDIyNywgMTgxLCAxNywgMTQ5LCAyMjcsIDE4MSwgMTcsIDE3MCwgMjI3LCAxODEsIAorICAgIDE3LCAxOTUsIDIyNywgMTgxLCAxNywgMjEzLCAxMTEsIDIyNywgMTgxLCAxNywgMTk5LCAyMjcsIDE4MSwgMTcsIDIyMiwgCisgICAgNjMsIDIyNywgMTgxLCAxLCAyMDcsIDI0MSwgMjI3LCAxODEsIDEsIDIwNywgMjI5LCAyMjcsIDE4MSwgMSwgMjQ0LCAxMjAsIAorICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMjAyLCA4NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxMDUsIDIyMCwgNDcsIDI0NiwgCisgICAgMTM1LCAxNywgMTA4LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE0NywgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDksIAorICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTcwLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE5NSwgMjIwLCA0NywgMjQ2LCAKKyAgICAxMzUsIDE3LCAyMTMsIDExMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTksIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgCisgICAgMjIyLCA2MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyOCwgMTEzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCA0OSwgCisgICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgODEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTAsIDIyMywgMjIwLCA0NywgCisgICAgMjQ2LCAxMzUsIDEsIDI1MSwgMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMiwgMjIwLCA0NywgMjQ2LCAxMzUsIAorICAgIDEsIDI1MSwgMjQzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAyNDQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIAorICAgIDI0MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjM3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCAxNDgsIDIyMCwgCisgICAgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIxNSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMSwgODQsIDIyMCwgNDcsIDI0NiwgCisgICAgMTM1LCAxLCAyMzAsIDIzNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMCwgMjI0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgCisgICAgMjI2LCAyMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDcsIDMxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAyOSwgCisgICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMjI5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA2LCAxNzAsIDIyMCwgNDcsIAorICAgIDI0NiwgMTM1LCAxLCAyMjcsIDIzNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgNDYsIDIyMCwgNDcsIDI0NiwgMTM1LCAKKyAgICAxLCAyNDEsIDE2NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgOTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIAorICAgIDIxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCA0OSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjE5LCAyMjAsIAorICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjIwLCA5MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjA2LCAyMjAsIDQ3LCAyNDYsIAorICAgIDEzNSwgMSwgMjIwLCA2MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIyMywgMjQ3LCAyMDcsIDIwNiwgMjIwLCA0NywgMjQ2LCAKKyAgICAxMzUsIDIzOSwgMywgMjA3LCAyMDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NSwgMjA3LCAyMDcsIDIyMCwgNDcsIAorICAgIDI0NiwgMTM1LCAyMTYsIDExOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxOCwgMjA2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjUxLCAKKyAgICA3MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAyMjMsIDI0MSwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAKKyAgICA1MiwgMjIzLCAyNDEsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjEwLCAxODQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgCisgICAgMjQ4LCA2NCwgMjE5LCAxMTMsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjE3LCAxNjcsIDIxMCwgMjEzLCAyMTcsIAorICAgIDE3OSwgMjQ4LCA2NCwgMjQ3LCA3NywgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMjcsIDE3MiwgMjE0LCAyMjQsIAorICAgIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjMwLCA0NCwgMjE0LCAyMjQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCAKKyAgICA2NCwgMjQ0LCAyMTMsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDI0OSwgMzMsIDIxNCwgMjI0LCAKKyAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjM0LCAyMDYsIDUyLCAxNDMsIDIxMywgNTgsIDIwNiwgNTIsIDE0MywgMjE3LCAyNDUsIAorICAgIDIwNiwgNTIsIDIsIDIyMiwgNzYsIDIwNiwgNTIsIDIsIDIwMywgODcsIDIyNCwgMTQ2LCAyMTAsIDE3NSwgMjA2LCA1MiwgCisgICAgMTQzLCAyMDMsIDg3LCAyNTEsIDc3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMzEsIDM2LCAKKyAgICAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMjksIDIyMiwgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIAorICAgIDE0MywgMjQ3LCA1NSwgNTYsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc2LCAKKyAgICAyMTQsIDE5NCwgMjA2LCA1MiwgMTQzLCA1MiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjA4LCA3MCwgMjEwLCAxNzUsIAorICAgIDIwNiwgNTIsIDE0MywgMjI5LCAyMjIsIDI1MCwgMTgyLCAyMDYsIDUyLCAxNDMsIDcwLCA1NiwgMjA2LCA1MiwgMTQzLCAKKyAgICAxMjAsIDE4NywgNTYsIDIwNiwgNTIsIDE0MywgMTI2LCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDIxNiwgNCwgMjI5LCAyMzMsIAorICAgIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDI1MCwgNDcsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAKKyAgICAyMDUsIDIwMCwgMjEwLCAxNzUsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI2LCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKKyAgICAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKKyAgICAyMDUsIDIwMCwgMjUwLCAxODIsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI3LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgCisgICAgMiwgMjA1LCAyMDAsIDI1MCwgMTgzLCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDI1MCwgMTk3LCAyMDYsIAorICAgIDUyLCAyLCAyNTAsIDE4MSwgMjQ5LCAyLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA2LCA3NywgMjA2LCA1MiwgMiwgMjUwLCAKKyAgICAxODEsIDIwNiwgNzgsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAyLCAyMDgsIDIwMSwgMjA2LCA1MiwgMiwgMjM3LCAxNSwgCisgICAgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMjE1LCAxNDcsIDE2MywgMjUwLCAKKyAgICAxODAsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyMDcsIDMzLCAyMjMsIDIzMiwgMjA2LCA1MiwgMiwgMjUwLCAxMjIsIDIwNiwgCisgICAgNTIsIDIsIDIxNSwgMTk4LCAyNTAsIDEyMiwgMjA2LCA1MiwgMTQzLCAyNDcsIDU1LCA1NSwgMjA2LCA1MiwgMiwgMjMwLCAKKyAgICAxMzUsIDIwNiwgNTIsIDIsIDIwNiwgMjIyLCAyMDYsIDUyLCAxNDMsIDIxNSwgMjUzLCA1NSwgMjA2LCA1MiwgMTQzLCA1MiwgCisgICAgMjE1LCAyNTMsIDU1LCA4LCAxLCA1LCA2LCA2MywgOCwgMSwgNSwgNiwgMjUxLCAxMDksIDgsIDUsIDEsIDIwNywgMTc0LCAKKyAgICAyNTEsIDEwOSwgOCwgMSwgNSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA4LCAxLCA1LCA2LCAyNDcsIDEyNSwgOCwgMSwgNSwgCisgICAgNiwgMjQ1LCA1MSwgOCwgMSwgNSwgNiwgMjQwLCAyNDMsIDgsIDEsIDUsIDYsIDc0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMTcxLCAKKyAgICA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDc1LCA4LCAxLCA1LCA2LCAyMzAsIDE4NCwgOCwgMSwgNSwgNiwgMjMwLCA1NCwgOCwgCisgICAgMSwgNSwgNiwgMjI4LCAxMzEsIDMsIDk1LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMjIzLCAKKyAgICAxNjMsIDgsIDEsIDUsIDYsIDc4LCA4LCAxLCA1LCA2LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNzgsIDgsIDUsIDEsIAorICAgIDIxMiwgMTU0LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyMCwgCisgICAgNzMsIDgsIDEsIDUsIDYsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMDgsIDE0NSwgMTYyLCA3OCwgOCwgNSwgMSwgMjQ3LCAyNDgsIAorICAgIDE2MiwgNzgsIDgsIDEsIDUsIDYsIDIxOSwgMTg0LCA4LCAxLCA1LCA2LCAyMTYsIDczLCAxNDYsIDgsIDEsIDUsIDYsIDIwNywgCisgICAgMTc0LCAxNDYsIDgsIDEsIDUsIDYsIDIxMCwgNjksIDgsIDEsIDUsIDYsIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNjgsIDgsIAorICAgIDUsIDEsIDIxMiwgMTU0LCAyNDMsIDIyOSwgNjgsIDgsIDUsIDEsIDIxMiwgMTU0LCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIAorICAgIDEsIDUsIDYsIDIwNiwgMTY0LCA4LCAxLCA1LCA2LCAyMDQsIDE0NCwgOCwgMSwgNSwgNiwgMjAyLCAxNTksIDgsIDEsIDUsIAorICAgIDYsIDI0MCwgMTc3LCA4LCAxLCAyMDUsIDE4NiwgMjI4LCAzLCAyMTEsIDIwMCwgOCwgMSwgMjUxLCA1OSwgMzAsIDEsIDUsIAorICAgIDYsIDIzOCwgMjM1LCAzMCwgMSwgNSwgNiwgMjI4LCAyNCwgMzAsIDEsIDUsIDYsIDIxOCwgMTY3LCAzMCwgMSwgNSwgNiwgCisgICAgMjE2LCA1OSwgMzAsIDEsIDUsIDYsIDIxNywgMjAyLCAzNiwgMSwgNSwgNiwgMjQxLCAxMjIsIDY1LCAxLCA2LCA2MywgNjUsIAorICAgIDEsIDYsIDI1MSwgMTA5LCA2NSwgMSwgNiwgMjQ5LCAyNTUsIDY1LCAxLCA2LCAyNDgsIDIyNSwgMjQ5LCAyNTUsIDY1LCAxLCAKKyAgICA2LCAyNDUsIDUxLCA2NSwgMSwgNiwgNzQsIDY1LCAxLCA2LCAyMTYsIDczLCA3NCwgNjUsIDEsIDYsIDIzOSwgNzUsIDY1LCAKKyAgICAxLCA2LCAyMzcsIDE3MSwgNjUsIDEsIDYsIDc1LCA2NSwgMSwgNiwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMzAsIDU0LCA2NSwgCisgICAgMSwgNiwgMTU5LCA2NSwgMSwgNiwgMjI2LCAxODUsIDY1LCAxLCA2LCAyMjMsIDE2MywgNjUsIDEsIDYsIDIxNiwgNzMsIAorICAgIDIyMywgMTYzLCA2NSwgMSwgNiwgNzgsIDY1LCAxLCA2LCAyMTksIDIxNiwgNjUsIDEsIDYsIDIxOSwgMTg0LCA2NSwgMSwgNiwgCisgICAgMTQ2LCA2NSwgMSwgNiwgMjEwLCA2OSwgNjUsIDEsIDYsIDY4LCA2NSwgMSwgNiwgMjA0LCAxNDQsIDY1LCAxLCA1LCA2MywgCisgICAgNjUsIDEsIDUsIDIwNywgMTc0LCA2MywgNjUsIDEsIDUsIDI1MSwgMiwgNjUsIDEsIDUsIDIwNywgMTc0LCAyNTEsIDEwOSwgCisgICAgNjUsIDEsIDUsIDI0OSwgMjU1LCA2NSwgMSwgNSwgMjQ1LCA1MSwgNjUsIDEsIDUsIDc0LCA2NSwgMSwgNSwgMjE0LCAxOTIsIAorICAgIDY1LCAxLCA1LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDE3MSwgNzQsIDY1LCAxLCA1LCAyMzksIDc1LCA2NSwgMSwgCisgICAgNSwgMjA3LCAxNzQsIDc1LCA2NSwgMSwgNSwgMjMwLCA1NCwgNjUsIDEsIDUsIDIyNiwgMTg1LCA2NSwgMSwgNSwgMjQxLCAKKyAgICA3OCwgNjUsIDEsIDUsIDc4LCA2NSwgMSwgNSwgMTcxLCA3OCwgNjUsIDEsIDUsIDIwOCwgMTQ1LCAxNjIsIDc4LCA2NSwgMSwgCisgICAgNSwgMjQ3LCAyNDgsIDE2MiwgNzgsIDY1LCAxLCA1LCAyMTksIDE4NCwgNjUsIDEsIDUsIDIxMCwgNjksIDY1LCAxLCA1LCAKKyAgICA2OCwgNjUsIDEsIDUsIDIxMiwgMTU0LCA2OCwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDIwNiwgCisgICAgMTY0LCA2NSwgMSwgNSwgMjUxLCA1OSwgNjUsIDEsIDUsIDI0OCwgMTA2LCA2NSwgMSwgNSwgMzAsIDIzOCwgMjM1LCA2NSwgCisgICAgMSwgNSwgMjQ0LCAzNywgNjUsIDEsIDUsIDMwLCAyMTgsIDE5MiwgNjUsIDEsIDUsIDI0NiwgMTQyLCA4LCAyMTAsIDI0NiwgCisgICAgNSwgMSwgNzUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxNDYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2OCwgOCwgMjEwLCAyNDYsIDUsIAorICAgIDEsIDIwNiwgMTY0LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDI0OCwgMTA2LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIzOCwgMjM1LCAKKyAgICAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxNiwgNTksIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjE4LCAxOTIsIDMwLCAyMTAsIDI0NiwgCisgICAgNSwgMSwgMjQ2LCAxNDIsIDgsIDUsIDEsIDIwNywgMjQsIDgsIDUsIDEsIDY2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKKyAgICAyNDUsIDUyLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjI2LCAxODYsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKKyAgICAyMTksIDE4NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE3LCAxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKKyAgICAyMTcsIDEsIDMsIDIzOSwgMjQxLCAyNSwgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTAxLCAyMDgsIAorICAgIDIyNywgOCwgNSwgMSwgMjEwLCA3MCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDEwMSwgMjA4LCAKKyAgICAyMjcsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzksIDc1LCA2NSwgMSwgMzYsIDI0MSwgOTIsIDgsIDUsIDEsIDIzMSwgNCwgCisgICAgMjM5LCA3NSwgOCwgNSwgMSwgMjA5LCAxMTEsIDMsIDIxMSwgMzYsIDgsIDUsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgCisgICAgNSwgMSwgMjMwLCAyMzEsIDMsIDk1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgOTUsIDgsIDUsIDYsIDEsIDEwNiwgMywgOTUsIAorICAgIDgsIDUsIDEsIDIwNiwgMjE3LCAzLCA5NSwgOCwgNSwgMSwgNjYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0NSwgCisgICAgNTIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzksIAorICAgIDc2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjgsIAorICAgIDEzMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyMywgCisgICAgMTY0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE3LCAKKyAgICAxLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDEsIDgsIAorICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDMsIDE5NywgCisgICAgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDM0LCAzLCAKKyAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI1MSwgMywgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMzYsIAorICAgIDExNiwgMjUsIDIwOSwgMjQ4LCA4LCA1LCAxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAxODgsIDMsIAorICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE2LCA3MywgMTcxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE0LCAKKyAgICAxOTMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAKKyAgICAxNTgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMywgCisgICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIAorICAgIDI1MSwgMiwgNjUsIDEsIDUsIDI0NywgMTI1LCA2NSwgMSwgNSwgMjQ3LCAxMjYsIDMsIDI0NSwgOTUsIDY1LCAxLCA1LCAKKyAgICAyNDAsIDI0MywgNjUsIDEsIDUsIDIxNiwgNzMsIDE3MSwgNzQsIDY1LCAxLCA1LCAyNDAsIDE3NCwgNjUsIDEsIDUsIDI0MywgCisgICAgODQsIDIzMCwgMTg1LCAzLCA5NSwgNjUsIDEsIDUsIDEzMiwgMjM5LCA3NSwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMzcsIAorICAgIDE3MSwgNjUsIDEsIDUsIDIzNSwgMjA2LCAzLCA5NSwgNjUsIDEsIDUsIDIzMCwgMjMwLCA2NSwgMSwgNSwgNiwgNzUsIDY1LCAKKyAgICAxLCA1LCA2LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDY1LCAxLCA1LCAyMjgsIAorICAgIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjI4LCAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDY1LCAxLCA1LCA2LCAKKyAgICAxNTksIDY1LCAxLCA1LCAyMjYsIDE4NiwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIAorICAgIDIyNywgMjEwLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDQ5LCAxMTMsIDY1LCAxLCA1LCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgCisgICAgMTEzLCA2NSwgMSwgNSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA1LCAyNDgsIDIyNSwgNzgsIDY1LCAxLCA1LCAyMTgsIDE5MiwgCisgICAgNjUsIDEsIDUsIDIxNSwgOTQsIDMsIDExMywgNjUsIDEsIDUsIDI0MSwgNywgNjUsIDEsIDUsIDIxMCwgNzAsIDMsIDIxOSwgCisgICAgMTQyLCAxMTMsIDY1LCAxLCA1LCAxMDYsIDE0MiwgNjUsIDEsIDUsIDIwNiwgMjE2LCA2NSwgMSwgNSwgNiwgNjgsIDY1LCAxLCAKKyAgICA1LCAyMDYsIDE2NSwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA2NSwgMSwgNSwgMjAyLCAxNTksIAorICAgIDY1LCAxLCA1LCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDI0NSwgOTUsIDY1LCAKKyAgICAxLCA1LCAyNDAsIDE3NywgNjUsIDEsIDUsIDIwOSwgNzQsIDM5LCAyNDIsIDgzLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAKKyAgICAyNDIsIDgzLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyMTIsIDI1LCA1NiwgMzksIDIxMCwgMTgyLCA4MiwgMzksIDIyNSwgCisgICAgMTY5LCAzOSwgMjM3LCAyNTEsIDM5LCAyMjUsIDE2NywgMzksIDI1MSwgMTI0LCAzOSwgMjM3LCAyNTIsIDM5LCAyNTEsIAorICAgIDEyNSwgMzksIDgsIDUsIDEsIDIxNywgMSwgNTYsIDM5LCAyNDcsIDIxMywgMzksIDIyNSwgMTY4LCAzOSwgNTIsIDI0NiwgCisgICAgNTMsIDU1LCAzOSwgMjIwLCA2MywgNTUsIDM5LCAyMDIsIDMwLCA1NiwgMzksIDIzMCwgMjE2LCA1NiwgMzksIDIwNiwgMjExLCAKKyAgICA1NSwgMzksIDIwNiwgMTk0LCA1NSwgMzksIDgsIDUsIDEsIDIzOSwgMjE0LCAxNzEsIDM0LCA1NSwgMzksIDgsIDUsIDEsIAorICAgIDI1MSwgMTA5LCAzOSwgOCwgNSwgMSwgMjUwLCAxNzgsIDM5LCA4LCA1LCAxLCAyNTAsIDE4LCAzOSwgOCwgNSwgMSwgMjQ3LCAKKyAgICAxMjYsIDI0NiwgMjMxLCAzOSwgOCwgNSwgMSwgMjMxLCA0LCAyNDUsIDUxLCAzOSwgOCwgNSwgMSwgMjQwLCAyNDMsIDM5LCAKKyAgICA4LCA1LCAxLCAyMzksIDc1LCAzOSwgOCwgMSwgNSwgNiwgMjM5LCA3NSwgMzksIDgsIDUsIDEsIDIzMCwgNTQsIDM5LCA4LCAKKyAgICA1LCAxLCAxNTksIDM5LCA4LCAxLCA1LCA2LCAxNTksIDM5LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgMzksIDgsIDUsIDEsIAorICAgIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDM5LCA4LCAxLCA1LCA2LCAxNDYsIDM5LCA4LCA1LCAxLCAKKyAgICAyMTcsIDEsIDIxNSwgMTkyLCAzOSwgOCwgNSwgMSwgMTk0LCAzOSwgOCwgNSwgMSwgMTYzLCAxOTQsIDM5LCA4LCA1LCAxLCAKKyAgICAyMDIsIDE1OSwgMzksIDgsIDUsIDEsIDI1MSwgMiwgMzksIDgsIDUsIDEsIDI0OSwgMjU1LCAzOSwgOCwgNSwgMSwgMjQ4LCAKKyAgICAxMDYsIDM5LCA4LCA1LCAxLCAyMTQsIDE5MiwgMzksIDgsIDUsIDEsIDI0MCwgMTc0LCAzOSwgOCwgNSwgMSwgMjI4LCAxMzEsIAorICAgIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgMzksIDgsIDUsIAorICAgIDEsIDIxOSwgMTg0LCAzOSwgOCwgNSwgMSwgMjQxLCA3LCAzOSwgOCwgNSwgMSwgMTA2LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgCisgICAgMzksIDgsIDUsIDEsIDIwNCwgMTQ0LCAzOSwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAKKyAgICAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM5LCAxMTIsIDIxMCwgNCwgNTUsIDM5LCA1MiwgCisgICAgMjMwLCAyMzksIDI0NywgMjE1LCA1NiwgMzksIDI1MSwgNywgMTU2LCAyMDgsIDE3MywgNTYsIDM5LCA0OSwgMjUwLCA5NSwgCisgICAgNTUsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDEyMSwgMjUwLCA5NSwgNTYsIDgsIDYsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIAorICAgIDgsIDUsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDY2LCAzLCA3MCwgCisgICAgNTUsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDY2LCAzLCAyMjcsIAorICAgIDExNSwgNTYsIDgsIDUsIDEsIDY2LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgCisgICAgMjUsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMyLCAyNSwgMTY1LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAKKyAgICA3MCwgNTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA1LCAKKyAgICAxLCAyNDUsIDUyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjQ1LCAKKyAgICA1MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgCisgICAgMjQ2LCAyMzEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCAKKyAgICA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAKKyAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAKKyAgICAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIAorICAgIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNiwgMSwgCisgICAgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMyLCAyNSwgMjQ3LCAyMTQsIAorICAgIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzOSwgCisgICAgNzYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCAKKyAgICA1NSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCisgICAgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzcsIDE3MiwgCisgICAgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgCisgICAgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIDU2LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIAorICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIAorICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIAorICAgIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxNjUsIDgsIDYsIAorICAgIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjMwLCA1NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKKyAgICAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAorICAgIDcwLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgCisgICAgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAorICAgIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIAorICAgIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAKKyAgICAyMjYsIDE4NiwgMywgMTY1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMTY1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIAorICAgIDU1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKKyAgICAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgCisgICAgNzAsIDU1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA2LCAKKyAgICAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAKKyAgICAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCisgICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNiwgMSwgCisgICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjQzLCAyMzEsIAorICAgIDgsIDYsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIAorICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAKKyAgICAyNSwgMTY1LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA2LCAxLCAKKyAgICAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIAorICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDU2LCA4LCA1LCAxLCAKKyAgICAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNSwgCisgICAgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMjcsIDExNSwgCisgICAgNTYsIDgsIDUsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIAorICAgIDEsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKKyAgICA3MCwgNTYsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI1MSwgMTI2LCAyNSwgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKKyAgICAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgCisgICAgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgCisgICAgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxMCwgNzAsIAorICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIAorICAgIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKKyAgICAyMTAsIDcwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMTAsIAorICAgIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAKKyAgICAyMzIsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIAorICAgIDYsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgCisgICAgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgCisgICAgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDI0MywgMjMxLCA4LCA2LCAxLCAKKyAgICAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjA2LCAxNjUsIAorICAgIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCAKKyAgICA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAxNjUsIDgsIDUsIDEsIDIwNCwgCisgICAgMTQ1LCAzLCAxNjUsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0MywgCisgICAgMjMxLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAKKyAgICAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgCisgICAgNzAsIDU1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIAorICAgIDUsIDEsIDIwMywgMTk3LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAKKyAgICAxMjUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIAorICAgIDUyLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA2LCAxLCAKKyAgICAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKKyAgICAyMzcsIDE3MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAKKyAgICAxNDUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMzQsIDMsIAorICAgIDUwLCAxNjIsIDIxNSwgMjUyLCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTYzLCAyMTUsIAorICAgIDk0LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDE2MywgMjE1LCA5NCwgMywgMTM4LCA5NSwgOCwgNiwgMSwgMjEzLCA1NywgCisgICAgMTk0LCA4LCA1LCAxLCAyNDQsIDM3LCA4LCA2LCAxLCAzNCwgMywgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU2LCA4LCAKKyAgICA2LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAzNCwgMywgCisgICAgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIAorICAgIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAKKyAgICAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIAorICAgIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgCisgICAgNzAsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIAorICAgIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgCisgICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAKKyAgICAyNDcsIDIxNSwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAorICAgIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIAorICAgIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAorICAgIDE4OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyMzYsIDExNiwgCisgICAgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgCisgICAgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAorICAgIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIAorICAgIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAKKyAgICAxMTYsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIAorICAgIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAKKyAgICAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMzUsIAorICAgIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgCisgICAgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDE1OCwgCisgICAgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAKKyAgICAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIAorICAgIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIAorICAgIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIAorICAgIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgCisgICAgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgCisgICAgNTYsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKKyAgICA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgCisgICAgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAKKyAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCisgICAgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCisgICAgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCisgICAgMTA2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCAKKyAgICA1NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIAorICAgIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAKKyAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIAorICAgIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKKyAgICAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCAKKyAgICA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgCisgICAgNSwgMSwgMjAzLCAxMjUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDMsIAorICAgIDEyNSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgCisgICAgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMDgsIAorICAgIDIyNywgOCwgNiwgMSwgMjI0LCAxNDcsIDIyNywgNzgsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA2LCAxLCAKKyAgICAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIAorICAgIDIyNywgMTQsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMjcsIDE0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgCisgICAgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKKyAgICA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIAorICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgCisgICAgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIAorICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIAorICAgIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAKKyAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCisgICAgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIAorICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCisgICAgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIAorICAgIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIAorICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgCisgICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDI0NCwgCisgICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAKKyAgICAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk1LCAzMCwgCisgICAgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKKyAgICA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCisgICAgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKKyAgICAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI0MCwgCisgICAgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAKKyAgICAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCisgICAgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgCisgICAgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKKyAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDEsIAorICAgIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgCisgICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCisgICAgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIAorICAgIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgCisgICAgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjMwLCAKKyAgICAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgCisgICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAKKyAgICAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIAorICAgIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIxNywgCisgICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIAorICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAKKyAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCisgICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAKKyAgICAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIAorICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNSwgCisgICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIAorICAgIDIwNiwgMjE3LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAKKyAgICA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAorICAgIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAKKyAgICAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCAKKyAgICA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgCisgICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIAorICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAKKyAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCisgICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIAorICAgIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKKyAgICAyNDQsIDE0MSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIAorICAgIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIAorICAgIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKKyAgICAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAKKyAgICAxLCAyNTEsIDMsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCisgICAgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA2LCA3MCwgMzAsIAorICAgIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAKKyAgICAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIAorICAgIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgCisgICAgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAKKyAgICAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKKyAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCAKKyAgICA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCisgICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgCisgICAgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIAorICAgIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgCisgICAgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAKKyAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAKKyAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAorICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAKKyAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCisgICAgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAorICAgIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAKKyAgICAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgCisgICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIAorICAgIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKKyAgICAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIAorICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCisgICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAKKyAgICAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIAorICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAKKyAgICAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgCisgICAgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAKKyAgICAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgCisgICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAKKyAgICAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKKyAgICAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIAorICAgIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgCisgICAgMjIxLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKKyAgICAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgCisgICAgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAKKyAgICAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKKyAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAorICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIDI1MSwgMywgMywgCisgICAgMjI1LCAxNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCisgICAgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIAorICAgIDMsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgCisgICAgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDI1MSwgMywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIAorICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDIwOSwgCisgICAgMzAsIDIyOCwgMjUyLCAzMCwgMjE3LCAyMDksIDMwLCAyMTcsIDE5NSwgMzAsIDIxOCwgMjM5LCAzMCwgMjQzLCAyMjUsIDI1LCAKKyAgICAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIAorICAgIDI0OSwgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAorICAgIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAKKyAgICAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCisgICAgMjQwLCAyNDksIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAorICAgIDI0OSwgMywgMjE3LCAyMDksIDMwLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKKyAgICAzMCwgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIAorICAgIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAKKyAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTgsIAorICAgIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIAorICAgIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgCisgICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCAyNDQsIAorICAgIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAKKyAgICAyMDUsIDE2NywgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIAorICAgIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAorICAgIDEsIDIxNiwgNjAsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjE2LCA2MCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIAorICAgIDIxNywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIAorICAgIDEsIDIwNiwgMjE3LCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIwNiwgCisgICAgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjE2LCA2MCwgMywgCisgICAgMjQ0LCAxNDEsIDMwLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgMjA2LCAKKyAgICA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIAorICAgIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCisgICAgMzcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAorICAgIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIAorICAgIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCisgICAgMjA5LCAzMCwgMjE5LCAxODksIDMwLCAyNDQsIDE0MSwgMjQxLCA5MywgMjE3LCA2MiwgMjQxLCAxMDQsIDIxNywgNjIsIAorICAgIDI0MSwgOTMsIDIxMSwgMjI4LCAyNDEsIDEwNCwgMjExLCAyMjgsIDIwOSwgMjgsIDIxMSwgMjI4LCAyMzksIDE0NSwgMjExLCAKKyAgICAyMjgsIDIxMiwgODYsIDIxMSwgMjI4LCAyNDAsIDE2LCAyMTEsIDIyOCwgMjE3LCAxNzksIDIxMSwgMjI4LCAyMDksIDYzLCAKKyAgICAyMTEsIDIyOCwgMjM3LCAxNDYsIDIxMSwgMjI4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAKKyAgICAyNCwgMjIxLCAxODMsIDIwMiwgODUsIDIwNCwgMjQsIDIzMCwgOTYsIDIyNywgMjEzLCA4MiwgMjE2LCA3LCA4MiwgMjM1LCAKKyAgICAyMjAsIDIyMSwgMTg0LCAyMzUsIDIyMCwgMjQwLCAxNiwgMjQ0LCAxNDQsIDI0MSwgOTMsIDI0NCwgMTQ0LCAyNDEsIDEwNCwgCisgICAgMjQ0LCAxNDQsIDIzNiwgMTA2LCAxNDIsIDUyLCA4MCwgMjI3LCAxMTQsIDUyLCAxMjQsIDIyNywgMTE0LCA0OSwgMjEyLCAKKyAgICAxMjAsIDIxNywgMzEsIDgyLCA1MCwgMjEyLCAxMjAsIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjI2LCAyNTUsIDIxNywgMzEsIAorICAgIDgyLCAyMTIsIDEyMCwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCA0OSwgNTIsIDIxNywgMzEsIDgyLCA1MCwgNTIsIDIxNywgCisgICAgMzEsIDgyLCA1MiwgMjI2LCAyNTUsIDIxNywgMzEsIDgyLCA1MiwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCAyNDQsIDE5NSwgCisgICAgNTIsIDI0NCwgMTk1LCAyNDcsIDE3NywgMjA4LCA4MiwgMjQ3LCAxNzcsIDExOCwgNzAsIDIyNywgMjMyLCAxMjAsIDcwLCAKKyAgICAyMjcsIDIzMiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAyMzUsIDIxOCwgMjE4LCA2MiwgMjI3LCAxMTUsIDIxMywgMTMwLCAyMTksIAorICAgIDg5LCAyMTMsIDEzMCwgMjI3LCAyMTMsIDI0MSwgMTAyLCAyMTYsIDcsIDI0MSwgMTAyLCAyMTgsIDQyLCAyNDMsIDE2NSwgCisgICAgMjM5LCAxNTcsIDIyNywgMjEzLCAyMTksIDE5NiwgMjE2LCA3LCAyMTksIDE5NiwgMjIzLCA3MywgMjIxLCAxOTAsIDIxMSwgCisgICAgMjI4LCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyMTgsIDI0NywgMjA5LCAxNTMsIDIwOSwgMzcsIDU0LCAyMTcsIDIzNiwgCisgICAgNTIsIDIxNywgMjM2LCAyMDgsIDcwLCAyMTcsIDIzNiwgMjE2LCA3MywgMjE3LCAyMzYsIDIxNiwgNzMsIDUyLCAyMTcsIAorICAgIDIzNiwgMjE2LCA3MywgMjA4LCA3MCwgMjE3LCAyMzYsIDI0NywgMzMsIDIxMiwgMTIwLCAyMjcsIDIxNywgMjUwLCAyMTgsIAorICAgIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjE2LCAxMSwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMTYsIDEzNCwgODIsIDUyLCAKKyAgICAyNDAsIDIxMiwgODIsIDIzMCwgMjQ3LCAyMTksIDE5OCwgMjA2LCAyNDMsIDE2NywgMjA4LCAyNTAsIDI0NywgMzQsIDIzMSwgCisgICAgOCwgMjE4LCA2MiwgMjUwLCA1NywgMjM1LCAyMjEsIDI0NywgMTc3LCAyMzksIDEzOCwgMjEyLCA1NywgNDksIDUxLCAyNDcsIAorICAgIDIyNywgMywgMjE3LCA0MSwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjE3LCA0MSwgNTIsIDIxNywgNDcsIDgyLCAyMTcsIDQ3LCAKKyAgICAyNDAsIDIxMiwgODIsIDI0MCwgMjEyLCAyMTcsIDQ3LCA4MiwgMjA4LCAyMDMsIDIsIDI0MCwgMjUwLCAyMTYsIDczLCAyMTgsIAorICAgIDEyNiwgNTQsIDYyLCA5NiwgMjQ3LCAxNzcsIDYyLCA4NiwgMjQ3LCAxNzcsIDEyNCwgMjUwLCA1OSwgMjE2LCA3MywgMjEzLCAKKyAgICAxNDMsIDI0NiwgMTcsIDIwNiwgMjI0LCAxMjAsIDI1MCwgNTgsIDI1MSwgMTgsIDIwNSwgMjQzLCAyNDUsIDIzMSwgMjI0LCAKKyAgICAxMDMsIDU0LCAyMTAsIDE1MywgMjQ0LCAxNDQsIDIzMCwgMjM5LCAyMDYsIDI0MywgMjM5LCAxOTgsIDIxNywgMTc5LCA4MiwgCisgICAgMTI2LCA3MCwgMjE3LCAxNzgsIDIxNywgNTgsIDIxNywgMjM2LCAyMzksIDE0NywgNzAsIDIxNywgMTc4LCAyMzksIDIzMywgCisgICAgNzAsIDIxNywgMTc4LCAxMjAsIDcwLCAyMTcsIDE3OCwgMjM5LCAxNDcsIDcwLCA4MiwgMjQyLCA4MywgMjQ1LCAxMzAsIAorICAgIDIwOCwgODEsIDgwLCAyMzksIDE0NywgMjQzLCA4MywgMjI1LCAxMCwgMTMsIDIxMSwgMjI4LCAyMDMsIDIzOCwgMjMwLCA5NiwgCisgICAgMjM5LCAxMDAsIDI1MCwgMTU1LCAyMzAsIDIzNywgMjA4LCAyMTksIDIzMCwgMjM3LCAyMTMsIDEzMCwgMjMwLCAyMzcsIAorICAgIDIxOCwgNzYsIDIyNywgMjEzLCAyMzAsIDIwNywgMjE2LCA3LCAyMzAsIDIwNywgMjM5LCAyNDUsIDIxMSwgMTgsIDIzMCwgCisgICAgMjA3LCAyMTgsIDQyLCAyNDMsIDE2NSwgMjMwLCAyMDcsIDIzMSwgMjAsIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjUxLCAxMjgsIAorICAgIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjMxLCAyMCwgMTAsIDIzOSwgMTU5LCAyMTMsIDYxLCAyNTEsIDEyOCwgMTAsIDIzOSwgCisgICAgMTU5LCAyMTMsIDYxLCAyMjMsIDY3LCAxNywgMjEzLCA2MiwgMjIxLCAxODYsIDE3LCAyMTMsIDYyLCAyMTAsIDE5OSwgMjAyLCAKKyAgICA4NCwgMjEwLCAxOTksIDgsIDUsIDEsIDc1LCAyMTAsIDE5OSwgMTQ5LCAyMTAsIDE5OSwgMTcwLCAyMTAsIDE5OSwgMTk1LCAKKyAgICAyMTAsIDE5OSwgMjEzLCAxMTEsIDIxMCwgMTk5LCAxOTksIDIxMCwgMTk5LCAyMjIsIDYzLCAyMTAsIDE5OSwgOTEsIDU0LCAKKyAgICAyMTAsIDE5OSwgMjI0LCAxMDIsIDIxMCwgMTk5LCAyNDEsIDM1LCA1NCwgMjEwLCAxOTksIDQ5LCAyMTksIDc2LCAyMTAsIAorICAgIDE5OSwgNTAsIDIxOSwgNzYsIDIxMCwgMTk5LCA4LCA1LCAxLCAyMjMsIDE2MywgMjEwLCAyNDYsIDIwMiwgODQsIDIxMCwgCisgICAgMjQ2LCAxMDUsIDIxMCwgMjQ2LCAxMDgsIDIxMCwgMjQ2LCAxNDcsIDIxMCwgMjQ2LCAxNDksIDIxMCwgMjQ2LCAxNzAsIAorICAgIDIxMCwgMjQ2LCAxOTUsIDIxMCwgMjQ2LCAyMTMsIDExMSwgMjEwLCAyNDYsIDE5OSwgMjEwLCAyNDYsIDIyMiwgNjMsIDIxMCwgCisgICAgMjQ2LCA5MSwgNTQsIDIxMCwgMjQ2LCAyMjQsIDEwMiwgMjEwLCAyNDYsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NiwgNDksIAorICAgIDIxOSwgNzYsIDIxMCwgMjQ2LCA1MCwgMjE5LCA3NiwgOCwgMjEwLCAyNDYsIDUsIDEsIDYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgCisgICAgNzQsIDgsIDIxMCwgMjQ2LCA1LCAxLCA3OCwgOCwgMjEwLCAyNDYsIDUsIDEsIDIwMywgMTk2LCA4LCAyMTAsIDI0NiwgNSwgCisgICAgMSwgMjE0LCAxOTIsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzcsIDE3MSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIzMCwgNTQsIDgsIAorICAgIDIxMCwgMjQ2LCA1LCAxLCAxNTksIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjYsIDE4NSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIyMywgCisgICAgMTYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjE5LCAxODQsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxOTQsIDgsIDIxMCwgMjQ2LCA1LCAKKyAgICAxLCAyMTAsIDY5LCAyNDAsIDIyOSwgNTQsIDI0NSwgMjQzLCA1NCwgMjQ1LCAxMTUsIDU0LCAyMzksIDEyOCwgMjM5LCAxMzIsIAorICAgIDU0LCAyMjcsIDk0LCA1NCwgMjI0LCAxMTcsIDU0LCAyMjMsIDkwLCA1NCwgMjE4LCAyMjQsIDU0LCAyMTUsIDEyMCwgNTQsIAorICAgIDIwMywgMjQ2LCA1NCwgMjIyLCAyMTQsIDIxMywgMjksIDU0LCAyNDMsIDkyLCA1NCwgMjQwLCAyMzAsIDU0LCAyMjksIDc5LCAKKyAgICA1NCwgMjA3LCAxOTYsIDU0LCAyNDIsIDY2LCA1NCwgMjM4LCAxNjYsIDIxOSwgMiwgNTQsIDIxOCwgMjIxLCA1NCwgMjM3LCAKKyAgICAyMjUsIDU0LCAyNTAsIDI0LCA1NCwgMjM2LCAzMiwgNTQsIDI0NiwgMjMzLCA1NCwgMjI3LCA4NCwgMjA4LCAxMjUsIDU0LCAKKyAgICAyMTEsIDIwOSwgNTQsIDIwOSwgMTUwLCA1NCwgMjMxLCAzNCwgMjE1LCAxMjAsIDU0LCAyMDcsIDE3NywgMjI3LCA5NCwgNTQsIAorICAgIDIyMSwgMTczLCAxMzEsIDU0LCAyMjUsIDEyMCwgNTQsIDIxNSwgMTQyLCA1NCwgMjI4LCA0LCA1NCwgMzksIDQ5LCAyMzcsIAorICAgIDg3LCA1NSwgMzksIDUwLCAyMzcsIDg3LCA1NSwgMzksIDE2MywgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDIxMiwgCisgICAgMjI4LCA4MCwgMjI3LCAxMTUsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDUzLCA1NSwgMzksIDI0NiwgMTgsIDUzLCA1NSwgCisgICAgMzksIDQ5LCA1MywgNTUsIDM5LCA1MCwgNTMsIDU1LCAzOSwgMjE1LCAyNTMsIDIxOSwgMTk5LCAzOSwgMjQ2LCAxOCwgMjE1LCAKKyAgICAyNTMsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDEyNiwgMTg3LCA1NSwgMzksIAorICAgIDIzOSwgMTQ3LCAxODcsIDU1LCAzOSwgMjQxLCA4OCwgMjQ2LCA2MSwgMzksIDI0MSwgODgsIDIxMSwgMTc3LCAzOSwgMjQxLCAKKyAgICA4OCwgMjQzLCAyMjEsIDM5LCAyNDEsIDg4LCAyNDYsIDYyLCAyNDksIDIwLCAzOSwgNDksIDUwLCA1MywgNTUsIDM5LCAyNDEsIAorICAgIDg4LCAyMTQsIDE4NCwgMzksIDI0MSwgODgsIDIyOSwgMTQ3LCAzOSwgMjQxLCA4OCwgMjA2LCAyMTQsIDIxOCwgNTksIDIwOCwgCisgICAgODUsIDM5LCAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgNTIsIDgwLCAyMTEsIDMyLCAyMTksIDE5OSwgMzksIAorICAgIDI1MCwgMjA0LCA5NywgMzksIDIwOCwgNzAsIDIwNiwgMjQ1LCAzOSwgMjA0LCAyNywgMjQ3LCAyMDgsIDU1LCAzOSwgOTYsIAorICAgIDUzLCAyMTksIDE5OSwgMzksIDE2MywgNTIsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCA4NiwgMjM3LCA4NywgMywgMTUwLCAKKyAgICAyNDIsIDY4LCAzOSwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMzksIDQ5LCA1MywgNTYsIDM5LCA1MCwgNTMsIAorICAgIDU2LCAzOSwgMjUwLCA2MCwgNTUsIDI1MSwgMTM0LCAyMjAsIDY5LCAyNTEsIDExOCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxMCwgCisgICAgMjU1LCAxNjksIDYsIDI0NywgMTI1LCAyNDQsIDU1LCAyNDYsIDIyMywgMjQ2LCAyMTgsIDIyNywgMTE1LCA5NywgMjQ3LCAKKyAgICAzNSwgMjIwLCA2OSwgMjQ3LCA4NCwgMjA2LCAyNTQsIDI0MCwgMjMxLCAyNDUsIDIwMCwgMjE0LCAxODEsIDI0NCwgNTUsIAorICAgIDI0MCwgOTAsIDEzMiwgNSwgMjM5LCA3NSwgMTMyLCA2LCAyMzcsIDE3MSwgMjQ4LCA0MSwgNiwgMjM3LCAxNzEsIDE2OSwgNiwgCisgICAgMjM3LCAxNzEsIDIxOCwgOTMsIDI0NSwgMjAwLCAyMTgsIDkzLCAyNDUsIDIwMSwgMTE1LCAxMjAsIDIxOCwgMTY3LCAxMzIsIAorICAgIDYsIDc1LCAyNDgsIDQxLCA2LCA3NSwgMTMyLCA2LCAxNTksIDEzMiwgNSwgMTU5LCAyMjgsIDEzMSwgNjYsIDI0OCwgMjMxLCAKKyAgICA5NywgMTY5LCA2LCAyMjMsIDE2MywgMjIxLCA0MiwgNTQsIDIxMSwgMjQxLCAyMTYsIDE0NiwgMjQ1LCAxNjgsIDEzMiwgNiwgCisgICAgMjE5LCAxODQsIDE2OSwgNiwgMjE5LCAxODQsIDE2OSwgNiwgMjE3LCAxMzQsIDEzMiwgNiwgMTQ2LCAyNDgsIDQxLCA2LCAKKyAgICAxNDYsIDE2OSwgNiwgMTQ2LCAyMTcsIDI0MywgMjA5LCAyNDEsIDIxNiwgODYsIDIxMywgMTIyLCA4MiwgMjA5LCAxNjIsIAorICAgIDU0LCAyMDgsIDExNSwgMTMxLCA1NCwgMjA2LCAzOSwgMTY5LCA2LCAyMDIsIDE1OSwgMjE5LCAyMTUsIDU0LCAyMjAsIDU5LCAKKyAgICA1NCwgMjMwLCAyMzksIDIyMCwgNTksIDU0LCAyNDgsIDQxLCA2LCAyMDIsIDE1OSwgMjA3LCAxNzQsIDMwLCA1LCAxLCAyMzAsIAorICAgIDIzMCwgMjI5LCAxODgsIDU0LCAyNTAsIDIxMywgNTQsIDEzMiwgNiwgMjQ5LCAyNTUsIDI0OCwgNDEsIDYsIDI0NywgMTI1LCAKKyAgICAyNDAsIDI1NSwgOTcsIDEzMiwgNSwgNzQsIDEzMiwgNiwgNzQsIDEzMiwgNiwgMjQwLCAxNzQsIDIwNywgMTc0LCA2LCAyNDAsIAorICAgIDE3NCwgMTMyLCA2LCAyMjYsIDE4NSwgMTMyLCA1LCA3OCwgMTM3LCA5NywgMjQ4LCAxMDksIDk3LCAyMzgsIDY4LCA5NywgCisgICAgMjQ0LCAxNzksIDk3LCAyMzEsIDI1LCAyMTEsIDIzOSwgMjE1LCAxOTgsIDYsIDIxNywgMTM0LCAyNDAsIDkzLCA1NCwgMTY5LCAKKyAgICA1LCAyMTgsIDE2NywgMTY5LCA1LCAyMzgsIDIzNSwgMTY5LCA2LCAyMzgsIDIzNSwgMTY5LCA2LCAyMTgsIDE2NywgMTY5LCAKKyAgICAyMjMsIDE2MiwgMjEwLCAyMTcsIDIwNywgMTc0LCA0MSwgNiwgMjM5LCA3NSwgMjA3LCAxNzQsIDQxLCA2LCAxNTksIDIxNiwgCisgICAgNzMsIDQxLCA2LCAxNTksIDIwNywgMTc0LCA0MSwgNiwgMjAzLCAxMjQsIDE2OSwgMzcsIDYsIDI0NSwgNTEsIDE2OSwgMzcsIAorICAgIDUsIDI0NSwgNTEsIDE2OSwgMzcsIDUsIDc0LCAxNjksIDM3LCA1LCA3NSwgMTY5LCAzNywgNSwgMjMwLCAxODQsIDIxNywgCisgICAgMjEyLCAyMjcsIDExNCwgMjA3LCAxNzQsIDI1MCwgMjM1LCAyMTgsIDI0NywgNTQsIDI1MSwgNDEsIDIwNywgMTc0LCA1LCAKKyAgICAyNDAsIDE3NCwgMTYsIDM1LCAyMTQsIDI1MiwgMjExLCAyMzksIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTMsIDEwNywgCisgICAgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIyMiwgNTcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDE0MywgMjA0LCAKKyAgICAxNjEsIDIzOSwgMTM4LCAxMTgsIDIwOSwgNjAsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyMDksIDU3LCAyMDQsIDE2MSwgCisgICAgMjM5LCAxMzgsIDExOCwgMjQwLCAyMSwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjAsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIAorICAgIDEzOCwgMTI2LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIzOSwgMTQ3LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKKyAgICAxMzgsIDExOCwgMjEyLCA3OCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDIzMywgMjEyLCA3NiwgMjA0LCAxNjEsIDIzOSwgCisgICAgMTM4LCAxMTgsIDI0MSwgMTM4LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyNiwgMjQxLCAxMzYsIDIwNCwgMTYxLCAyMzksIAorICAgIDEzOCwgMjM5LCAyMzMsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyNDEsIDEzNiwgMjM5LCAKKyAgICAxMzgsIDIyMSwgNDMsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwOCwgMjE1LCAKKyAgICAyMTAsIDIyMSwgNDQsIDE0NywgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgMjE1LCAKKyAgICAyMTAsIDIyMSwgNDQsIDE5NSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMywgMTExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCAKKyAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCAyMTUsIDIxMCwgMjIxLCAKKyAgICA0NCwgMjQxLCAxMTIsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDcsIDE1NCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIzNiwgMTEsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgCisgICAgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgNSwgMjE1LCAyMTAsIAorICAgIDIyMSwgNDQsIDEwOCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0NywgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgNSwgCisgICAgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5NSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIAorICAgIDIxMywgMTExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgNSwgCisgICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQxLCAxMTIsIDUsIDIxNSwgMjEwLCAKKyAgICAyMjEsIDQ0LCAyMDcsIDE1NCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKKyAgICAxMTgsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgNSwgMjE1LCAyMTAsIDIyMSwgCisgICAgNDQsIDExOCwgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNywgMjQ3LCAxMjYsIDI0NSwgNTEsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUzLCAyMDksIAorICAgIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjE2LCA3MywgMTE4LCAyMzYsIDExLCA4LCA1LCAxLCAyMTYsIDczLCAyNDcsIDEyNSwgCisgICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMiwgODgsIDIyNywgMjU1LCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIAorICAgIDI0MSwgMTgyLCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKKyAgICAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjAyLCA4NSwgMjA5LCA1NywgMjA3LCAxNzQsIAorICAgIDE3LCAxMDgsIDIwNywgMTc0LCAxNywgMTQ3LCA5NiwgNDcsIDE3NywgNDcsIDg2LCA0NywgMTgzLCA0NywgNDksIDUwLCA0NywgCisgICAgMTEyLCAxMjEsIDQ3LCAxNTMsIDIwNCwgNDYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAKKyAgICA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCA5NiwgNTMsIDMsIDk1LCA4NiwgNTMsIDMsIDk1LCA5NiwgMjA0LCA3NiwgNDcsIAorICAgIDg2LCAyMDQsIDc2LCA0NywgOTYsIDEyMCwgMjM3LCA2MiwgNDcsIDE3NywgMTIwLCAyMzcsIDYyLCA0NywgODYsIDEyMCwgCisgICAgMjM3LCA2MiwgNDcsIDE4MywgMTIwLCAyMzcsIDYyLCA0NywgOTYsIDUzLCAzLCAyMDksIDI0OCwgODYsIDUzLCAzLCAyMDksIAorICAgIDI0OCwgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDUzLCAyMzksIDEyMCwgMTQyLCA4NiwgNTMsIDIzOSwgMTIwLCAKKyAgICAxNDIsIDE4MywgNTMsIDIzOSwgMTIwLCAxNDIsIDExMiwgMTIxLCA1MywgMywgMjQ4LCAyMTgsIDk2LCA1MywgMywgMTEzLCAKKyAgICA4NiwgNTMsIDMsIDExMywgOTYsIDUzLCAzLCAyMjcsIDE0LCA4NiwgNTMsIDMsIDIyNywgMTQsIDQ5LCA1MCwgMjA0LCA3NiwgCisgICAgNDcsIDQ5LCA1MCwgNTMsIDMsIDk1LCAxODMsIDIwMiwgMzAsIDQ3LCAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIAorICAgIDE3NywgNTMsIDMsIDIwOCwgMjExLCAyMTYsIDUsIDE4MywgNTMsIDMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTgzLCA1MywgMywgCisgICAgMjA4LCAyMTEsIDIxNiwgNSwgODYsIDUzLCAzLCAyNDUsIDE2NiwgMjQyLCA2OCwgMTgzLCA1MywgMywgMjQ1LCAxNjYsIAorICAgIDIyNywgMjEyLCAyNTAsIDE5NCwgMjA4LCAxNDUsIDIxMywgMTQ2LCA0NywgMjQ2LCAxOCwgMjA4LCAxNDUsIDIxMywgMTQ2LCAKKyAgICA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjA4LCAxNzMsIDE2MywgMTQyLCA5NiwgNTMsIDIwOCwgMTczLCAyNDgsIDIzMSwgCisgICAgMTE1LCA4NiwgNTMsIDIwOCwgMTczLCAxNDIsIDI1MCwgMTk0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAxNzEsIAorICAgIDI0NiwgNjIsIDQ3LCA5NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIxMiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgCisgICAgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgNSwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgMjM3LCAKKyAgICA4NywgMywgMTUwLCAyMDYsIDIxMiwgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIAorICAgIDIxNiwgNSwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgNTMsIDExNSwgOTYsIDQ3LCAxNzcsIDUzLCA5NiwgCisgICAgNzYsIDE4MywgNDcsIDk2LCA1MywgMTE1LCA4NiwgNDcsIDk2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMTksIDE0NiwgCisgICAgMjUwLCA5MSwgODYsIDIxOSwgMTQ2LCAyNTAsIDkxLCAxODMsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgMjM3LCA4NywgMTE1LCAKKyAgICA4NiwgMjM3LCA4NiwgODYsIDIzNywgODcsIDExNSwgOTYsIDIzNywgODYsIDk2LCA1MiwgNTMsIDMsIDk1LCA0OSwgNTAsIAorICAgIDUyLCA1MywgMywgOTUsIDg2LCA1MiwgNTMsIDMsIDk1LCA5NiwgNTIsIDQ3LCAxNzcsIDUyLCA0NywgODYsIDUyLCA0NywgCisgICAgMTgzLCA1MiwgNDcsIDQ5LCA1MCwgNTIsIDQ3LCAxMTIsIDEyMSwgNTIsIDQ3LCAxNTMsIDIwNCwgNDYsIDUyLCA0NywgMTUzLCAKKyAgICAyNDEsIDE3NiwgNTIsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDUyLCA0NywgCisgICAgOTYsIDIwOCwgNzAsIDQ3LCA4NiwgMjA4LCA3MCwgNDcsIDk2LCAyMTEsIDE3MSwgNDcsIDg2LCAyMTEsIDE3MSwgNDcsIAorICAgIDE3NywgNTMsIDMsIDUyLCA5NSwgMTgzLCA1MywgMywgNTIsIDk1LCA5NiwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDI0NCwgMTQzLCAKKyAgICA0NywgODYsIDI0NCwgMTQzLCA0NywgMTgzLCAyNDQsIDE0MywgNDcsIDk2LCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAKKyAgICAyMDgsIDE3MywgMTQyLCA5NiwgNjEsIDQ3LCAxNzcsIDYxLCA0NywgODYsIDYxLCA0NywgMTgzLCA2MSwgNDcsIDE3NywgNjEsIAorICAgIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIAorICAgIDIxOSwgMjcsIDMsIDIzNiwgMTA2LCAxNDIsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAyMTksIDI3LCAzLCA4MCwgMTQyLCAKKyAgICAxNzcsIDYxLCA1MiwgNDcsIDE3NywgNjEsIDUyLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgODYsIDYxLCA1MywgMjM5LCAxMjAsIAorICAgIDIwNCwgOTksIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAyNDUsIDE2NSwgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgCisgICAgMjA4LCAxNzMsIDI0NSwgMTY1LCAxMTIsIDEyMSwgNjEsIDQ3LCA1MCwgNTMsIDMsIDUsIDI0NiwgNjEsIDE4MywgNTMsIDk2LCAKKyAgICA3NiwgMTc3LCA0NywgMTI2LCA4NiwgMjUwLCA5MSwgOTYsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MywgMywgODAsIDk1LCA0OSwgCisgICAgNTAsIDUzLCAzLCA4MCwgOTUsIDk2LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDUzLCAzLCA1MiwgODAsIDk1LCA0OSwgNTAsIAorICAgIDUzLCAzLCA1MiwgODAsIDk1LCA5NiwgMjIwLCA2LCA0NywgODYsIDIyMCwgNiwgNDcsIDQ5LCA1MCwgMjIwLCA2LCA0NywgCisgICAgMzUsIDI1MSwgMTQsIDI0NSwgMjI4LCAyMTksIDY5LCAyNDMsIDIwNSwgMjA5LCA4MywgMjQwLCAyMDcsIDIwOSwgODMsIAorICAgIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQwLCAyMDgsIDI0MSwgOTQsIDIxMywgMTE3LCAyMzEsIDM4LCAyMjMsIDEwMSwgMjQxLCAKKyAgICAxMTUsIDIyMCwgNjksIDIyMSwgMTY2LCAyNTAsIDIzMiwgMjQxLCAxMTUsIDIyMCwgNjksIDUsIDI0MSwgMTE1LCAyMjAsIAorICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIDI1MCwgODIsIAorICAgIDIyNCwgMjQ0LCA1LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MSwgODQsIDc2LCAyMTcsIDIxNCwgMjIzLCAKKyAgICAxNjIsIDIxNywgMjI0LCAyMjMsIDE2MiwgMjQ1LCAxNzEsIDIyMywgMTYyLCAyMTAsIDIxNywgMjI0LCAxMDMsIDU0LCAyMjQsIAorICAgIDEwMSwgNTQsIDcwLCAyMTgsIDc2LCAyNDMsIDEzNywgMjEyLCA1NywgMjEzLCAxMTgsIDIyNCwgMTAyLCAyNTAsIDYwLCAKKyAgICAyMTksIDI1NCwgMjE1LCAyNTMsIDIxOSwgMjU0LCAyNDcsIDE3OCwgMjE5LCAyNTQsIDUxLCAyMTUsIDIwNCwgMjQ1LCAxMDYsIAorICAgIDIxNSwgMjA0LCAyMzksIDE0MCwgMjE1LCAyMDQsIDIxNywgMjEwLCAxMzUsIDIzMSwgMjcsIDUwLCAyNTAsIDIxNywgMjUwLCAKKyAgICAyMTcsIDIyNSwgMTcsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTcsIDI0MywgMTM5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAorICAgIDI0MywgMTQzLCAyMTksIDgyLCAxMzUsIDIyMSwgMTY2LCAyMTksIDgyLCAxMzUsIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIAorICAgIDM3LCAyMTksIDI0NCwgMjMwLCAyNDQsIDIwNiwgMjM3LCAyMzEsIDIsIDUyLCAyMzEsIDIsIDIwOCwgNzAsIDIzMSwgMiwgCisgICAgMjQ1LCAxODgsIDIzMSwgMiwgMjEwLCAxODksIDIzMSwgMiwgMjA1LCAxNzgsIDIzMSwgMiwgMjQ2LCAxOCwgMjMxLCAyLCAKKyAgICAyNDYsIDE4LCAyNDUsIDE4OCwgMjMxLCAyLCAyNTAsIDE5NCwgMjQ1LCAxODgsIDIzMSwgMiwgMjA5LCA4MiwgMjQ4LCAxNTIsIAorICAgIDIxNiwgMTY4LCAyMTcsIDIxMSwgNzAsIDIyNCwgMTAyLCAyNDAsIDIxNSwgMjM4LCAxNzIsIDIxNywgMjExLCAyMzYsIDEyMSwgCisgICAgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTYsIDczLCAyMDgsIDIyNywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDIxMiwgMTIyLCAKKyAgICAyMDQsIDc1LCAyMDMsIDIyNiwgMjE3LCAyMjQsIDIyMSwgMTY2LCAyMDgsIDIyNywgMjI0LCAxMDMsIDIwOCwgMjI3LCAyNTAsIAorICAgIDUzLCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MCwgNTMsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAKKyAgICAyNDcsIDE0OCwgMjIxLCAxNjYsIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDI1MCwgMTUxLCAyMjEsIDE3NSwgCisgICAgMjUxLCAxMjcsIDE1NiwgMTM1LCAyNTEsIDcsIDE1NiwgMTM1LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgMjUxLCA3LCAKKyAgICAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjA4LCA3MCwgMjA4LCAyMjcsIDI1MSwgMTUsIDE1NiwgMTM1LCAyNDEsIDMwLCAKKyAgICAxMzUsIDIzOCwgMTcxLCAyNDEsIDMwLCAxMzUsIDI0MywgMjA2LCAyNDgsIDEwMywgMjUwLCAxNTMsIDIwOSwgOTMsIDIyNywgCisgICAgMTIyLCAyMzgsIDE3MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjA5LCA5MywgMjMxLCAKKyAgICA2NSwgMjIwLCA2OSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI0NSwgMjQzLCAyNDEsIAorICAgIDM0LCAyNDEsIDM1LCAyNDUsIDI0MiwgMjE1LCAyNTMsIDIzMSwgNTAsIDE1NiwgMTM1LCAyMTUsIDI1MywgMTU2LCAxMzUsIAorICAgIDI0NSwgMTU5LCAxMzUsIDI0MCwgMjU0LCAyNDEsIDMzLCAxMzUsIDIxMSwgOTUsIDI0MSwgMzQsIDI0NCwgMzgsIDE1NiwgCisgICAgMTM1LCAxNTYsIDIwOCwgMTczLCAyNDcsIDEzNywgMjQ0LCA1NiwgMjI1LCAxNywgMjQ3LCAxMzYsIDIxNywgNDUsIDE1NiwgCisgICAgMTM1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNSwgMTU0LCAxMzUsIDIyMSwgMTY2LCAyMzUsIDE1NCwgMTM1LCAyMTEsIDM5LCAKKyAgICAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMTU2LCAxMzUsIAorICAgIDIyNywgMTc5LCAxMTUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMTE1LCAxNTYsIDEzNSwgMjI3LCAxNzksIDI0NywgMTQ4LCAKKyAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDI0MCwgCisgICAgMjI3LCAxNzgsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjQ4LCAxMDMsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIyMSwgMTY2LCAKKyAgICAyMjcsIDE3OCwgMjIxLCAxNjYsIDIzNywgMjQ2LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAxNTYsIDEzNSwgCisgICAgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAKKyAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMjQxLCAzMCwgCisgICAgMTM1LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjM3LCAKKyAgICAyNDYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDIzNywgCisgICAgMjQ2LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyMjcsIDE3OCwgMjE3LCAyNDksIDIxMCwgMjM2LCAyMTcsIAorICAgIDI1MCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDIzNywgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTcsIDI1MCwgMjE5LCAKKyAgICAyNDUsIDI0MSwgMzAsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDI0MywgMTA0LCAyMjEsIDE2NiwgCisgICAgMjE3LCAyNTIsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjEwLCAyMzgsIDIxMCwgMjQ1LCAyMjAsIDY5LCAyMTAsIDE5OCwgMjIwLCAKKyAgICA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDE5OCwgMjIwLCA2OSwgCisgICAgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjIsIAorICAgIDIzMiwgMzQsIDIxMCwgMjQ1LCA3NiwgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjIsIDIzMiwgMzQsIDIxMCwgMTk4LCA3NiwgCisgICAgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMTAsIDI0NSwgNzYsIDMsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIDc2LCAzLCAKKyAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyMywgMjIxLCAyMjMsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIyLCAyMDYsIDIzNywgNTEsIAorICAgIDIzMSwgNjUsIDIyMCwgNjksIDUxLCAyMTksIDIzNiwgMjIwLCA2OSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMTU2LCAKKyAgICAxMzUsIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDI0NywgNDgsIDUxLCAyNDUsIDk5LCA0MywgCisgICAgMjE4LCA3NiwgNDMsIDIyNCwgMTAyLCA0MywgMjA4LCAyMTksIDQzLCAyNDMsIDEzNywgMjEyLCA1NywgNDMsIDcwLCAyMTksIAorICAgIDI1NCwgNDMsIDIxNSwgMjUzLCAyMTksIDI1NCwgNDMsIDI1MCwgNjAsIDIxOSwgMjU0LCA0MywgMjQxLCAzNCwgNDMsIDI0NCwgCisgICAgMTQ0LCAxMDMsIDIxOCwgNzYsIDEwMywgMjI0LCAxMDIsIDEwMywgMjA4LCAyMTksIDEwMywgNzAsIDIxOSwgMjU0LCA1MCwgCisgICAgMjEwLCAzLCA0OSwgMjEwLCAzLCAxMjEsIDIxMCwgMywgMTEyLCAyMTAsIDMsIDI1MCwgNjMsIDIyNCwgNzcsIDIwOCwgNDksIAorICAgIDIzOSwgMTY1LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAKKyAgICAyMDcsIDE3MywgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTcsIDIwNSwgMjIxLCAxNjYsIDIwOCwgNDksIDI0MywgMTA0LCAyMjEsIAorICAgIDE2NiwgMjM5LCAxNjYsIDIyMiwgMjM0LCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNTAsIDIwNywgMTczLCAyMTcsIDI1MCwgCisgICAgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMTAsIDIzNywgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIAorICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMSwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAKKyAgICAxNTYsIDEzNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDIsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE5LCAKKyAgICAyMzYsIDIyMCwgNjksIDIzMSwgNjUsIDIyMCwgNjksIDIyMywgMjI4LCAyMzcsIDI0LCAyNDUsIDIwNSwgMjI1LCA2OSwgCisgICAgMjMwLCAyNTUsIDIwMywgMTU2LCAyMjMsIDgxLCAyMjEsIDE3NCwgNTAsIDI1MCwgMjE4LCAzLCAyNTAsIDEyOCwgNTAsIAorICAgIDIwOCwgODUsIDIyMywgMTYyLCAyMjcsIDM3LCAyNTAsIDIyNiwgMjIzLCAxNjIsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMjMsIAorICAgIDE2MiwgMjMwLCAyNDQsIDIyMywgMTYyLCAyMDYsIDIzNywgMjQzLCAyMjIsIDIxOSwgMjU0LCA3MCwgMjE5LCAyNTQsIDIxMSwgCisgICAgOTUsIDIxOSwgMjU0LCAyNDMsIDEzNywgMjA4LCAyMTksIDI0NywgMjM0LCA0OSwgMjIxLCAxNzIsIDI0MCwgOTIsIDIxMywgCisgICAgMTQyLCAyMTcsIDIyNCwgNTAsIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDQ5LCAyMTMsIDE0MiwgCisgICAgMjE3LCAyMjQsIDUwLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDIxNiwgNzMsIDIwOCwgMjI4LCAyNDEsIDM0LCAyNDUsIDkzLCAKKyAgICAyMjcsIDM3LCAyMTksIDI0NCwgMjQ1LCA5MywgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMTAsIDI0NCwgNTIsIDIxMCwgCisgICAgMTk3LCA1MiwgMjMwLCAyNDQsIDUyLCAyMDYsIDIzNywgMjE4LCAxMDMsIDE1NiwgMjUsIDIxOSwgODIsIDEzNSwgMjI3LCAKKyAgICAxNzksIDMsIDI0MywgODUsIDIzNywgMjQ3LCAzLCAyNDMsIDg1LCAyMDUsIDI0MiwgMjIzLCAyNDAsIDIyNywgMTc4LCAyMDUsIAorICAgIDI0MiwgMjIzLCAyNDAsIDIzNywgMjQ2LCAyMjcsIDE3OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAKKyAgICAyMzcsIDI0NywgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgCisgICAgMjI3LCAxNzgsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAorICAgIDIxNywgMjQ5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjEwLCAyMzYsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAKKyAgICAyNTMsIDIxOSwgMjQ1LCAyNDEsIDM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM5LCAyMTksIDI0NSwgMjQxLCAzNiwgCisgICAgMjIxLCAxNjYsIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjEsIDE2NiwgNTEsIDIxOSwgMjM2LCAKKyAgICA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIAorICAgIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgMjIxLCAKKyAgICAxNjYsIDI0MSwgMzAsIDEzNSwgMjM3LCAyNDcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTcsIDI1MCwgCisgICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIAorICAgIDEzNSwgMjIxLCAxNjYsIDIyMSwgMTcyLCAyMTEsIDIsIDIyMCwgNjksIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIAorICAgIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCA3NiwgMjE5LCAyNDUsIDE1NiwgCisgICAgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgCisgICAgMjQxLCAzNiwgODAsIDI0MSwgMTA4LCAyMjQsIDE0NiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAxMTIsIDUwLCAyNDMsIDIyOCwgCisgICAgMjQxLCAxMDgsIDEyMSwgNTAsIDI0MywgMjI4LCAyNDEsIDEwOCwgMjQxLCAxMTUsIDc2LCAzLCAxNjMsIDIzNiwgMTA2LCAKKyAgICA5NSwgMjQxLCAxMTUsIDc2LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIAorICAgIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCAyNDEsIAorICAgIDExNSwgNzYsIDMsIDcwLCA1NSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIDIwMywgNSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIAorICAgIDIwMywgMjQxLCAxMTUsIDc2LCAzLCAyMDYsIDI0NiwgMjQxLCAxMTUsIDc2LCAzLCAxMjAsIDIzNiwgMTA2LCAyMTEsIDE5LCAKKyAgICAyNDUsIDE5NCwgMywgMTYzLCAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgCisgICAgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAKKyAgICAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgNSwgMjQ1LCAxOTQsIDMsIDIxOSwgMjAzLCAyMDIsIDE2MCwgCisgICAgMjIxLCAxNjQsIDI0OSwgMTEsIDIyNCwgMjQzLCAyNDMsIDIyMywgNTQsIDI0MSwgMTE3LCA0NywgMjM2LCAzOCwgMTEyLCAKKyAgICAyNTAsIDk0LCAxMjEsIDI1MCwgOTQsIDIxNywgMjE4LCAyMTgsIDIyNywgMjA0LCA3MiwgMjI3LCAxMTQsIDQ5LCAyNDYsIAorICAgIDIyNiwgNTAsIDI0NiwgMjI2LCA0OSwgMjM5LCAyMDQsIDUwLCAyMzksIDIwNCwgMjQ3LCAyNDgsIDUwLCAyNDUsIDEzMiwgCisgICAgMjQ3LCAyNDgsIDQ5LCAyNDUsIDEzMiwgMjA4LCAxNDUsIDUwLCAyNDUsIDEzMiwgMjA4LCAxNDUsIDQ5LCAyNDUsIDEzMiwgCisgICAgMjE2LCA3MywgMjIxLCAxNjYsIDU0LCA1MSwgMjI2LCAyNDYsIDI1MCwgMTI4LCAyMTQsIDE1OCwgMjE0LCAxNjYsIDIwOSwgCisgICAgMTYyLCAyMTYsIDE0NywgMjE4LCAzNCwgMjMxLCAzMSwgMjA1LCAyMTgsIDIxMSwgMTc3LCAyMTgsIDk3LCA3NiwgMjMwLCAKKyAgICAyNTQsIDU0LCAyMDcsIDE3NCwgMjIxLCAxNjYsIDU0LCAyMDQsIDgyLCAyMzYsIDQwLCAyMDgsIDE0NSwgNDksIDI0NSwgCisgICAgMTY1LCAyMDgsIDE0NSwgNTAsIDI0NSwgMTY1LCAyNDcsIDI0OCwgNDksIDI0NSwgMTY1LCAyNDcsIDI0OCwgNTAsIDI0NSwgCisgICAgMTY1LCAyMDgsIDE0NSwgMTYyLCAyMzEsIDIsIDI0NywgMjQ4LCAxNjIsIDIzMSwgMiwgMjM5LCAxMTUsIDIxMiwgMzEsIAorICAgIDExMiwgMjUwLCA5NSwgMjQ4LCAxMDQsIDEyMCwgMjM2LCAxMDYsIDI0OCwgMjIwLCAyMTksIDI0NywgMjI5LCAxNTEsIDI0MSwgCisgICAgMjYsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIDE2LCAyMDMsIDE5NywgMjMxLCA1MCwgMzQsIDIxNiwgMTQ0LCAyNDcsIAorICAgIDIzMywgMjI5LCAxNDksIDIyNywgMjE3LCAyNTAsIDIxOCwgMTU1LCAyMTYsIDExLCAyNTAsIDIxOCwgMTU1LCAyNDEsIDI2LCAKKyAgICAyMDgsIDE3MywgMjA5LCA5MywgMjI3LCAyMjIsIDI0OCwgMTE1LCAyMTUsIDI1MiwgMjQ1LCA2MSwgMjUxLCAxNSwgMjUwLCAKKyAgICAxMDMsIDIxMCwgMTAwLCAyMDgsIDEzMCwgMjE1LCAxMjUsIDI0MywgMTg1LCAyMTksIDIzNywgMjQ1LCAyMDksIDIwOSwgCisgICAgMjIwLCAyMTIsIDQ0LCAyNDUsIDE1NSwgMjQ1LCAxNTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjM1LCAyMDMsIDI1MCwgCisgICAgMTY5LCAyMzksIDk4LCAxNiwgMjExLCAxNjksIDIxNywgNjIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQxLCAKKyAgICAzNiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDMsIDE0MywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAorICAgIDYzLCAyNDMsIDIyMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgCisgICAgMTYsIDIxNywgNjMsIDI0NiwgNjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjExLCA2OSwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMiwgNTgsIDE0MiwgMjUwLCAKKyAgICAxNjksIDIzOSwgOTgsIDE2LCAyNDksIDIxLCAxNDIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjEyLCA1NywgCisgICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDksIDIwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIAorICAgIDIyNywgMTc4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIzNywgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCisgICAgMTYsIDk2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDg2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCisgICAgMTYsIDIxNywgNjMsIDk2LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCA4NiwgNDcsIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjA2LCAKKyAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAorICAgIDYzLCAxMjEsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCAzNywgMjUwLCAxNjksIDIzOSwgCisgICAgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxNzcsIDIwNiwgNzYsIDI1MCwgCisgICAgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTc3LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgCisgICAgMjE5LCAyMDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKKyAgICAyMTcsIDYzLCAxMTIsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCA0OCwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxODMsIDIwNiwgNzYsIAorICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTgzLCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAKKyAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDM4LCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyNDMsIDIyMiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCA4OSwgMjA2LCAyNDYsIDI1MCwgCisgICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTIsIAorICAgIDI0MCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgCisgICAgMTYsIDI0NiwgNjIsIDIxMSwgOTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ1LCAyNDIsIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDI0MywgCisgICAgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgOTUsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAorICAgIDIzMCwgODksIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0MywgMjMxLCAyNTAsIDE2OSwgCisgICAgMjM5LCA5OCwgMTYsIDEyMSwgMjEyLCAyNDAsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgNDksIDIxMiwgMjQwLCAKKyAgICAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIwOCwgMjI4LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyMzcsIDI0NywgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ1LCAyMzQsIDE0MiwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDIsIDI5LCAyNTAsIDE2OSwgCisgICAgMjM5LCA5OCwgMTYsIDIxMSwgNzAsIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMywgMTQ0LCAyMDYsIAorICAgIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMjEsIDE2NiwgMjQxLCAzNiwgMjUwLCAxNjksIDIzOSwgCisgICAgOTgsIDE2LCAyMTcsIDYzLCAyMTcsIDQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDEyMSwgMjQ3LCAzNCwgMjA4LCAyMjcsIAorICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyNDcsIDM0LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKKyAgICAyMzAsIDIzMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTYsIDU5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIyMCwgMzYsIAorICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAzLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDEsIDM4LCAKKyAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzAsIDIzMSwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKKyAgICAxNiwgMjIwLCAzNywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAyLCAyMjEsIDE2NiwgMjQ2LCAxNjksIAorICAgIDgyLCA1MCwgMjUwLCAyMTgsIDMsIDE4MywgMjAyLCAzMCwgNDcsIDIxMiwgMjEwLCAxNzEsIDI0NywgMjMzLCAyNDgsIDEyOSwgCisgICAgOTcsIDgwLCAyMjcsIDExNSwgMywgMTAxLCAyNDMsIDg1LCAyMzEsIDgsIDk3LCAyNDUsIDE4OSwgMjA2LCAyNDQsIDk3LCAKKyAgICAyNDMsIDE1OCwgMjA2LCAyNDQsIDk3LCAyNDEsIDk2LCA5NywgMjQ1LCAyMjQsIDk3LCA2MSwgNTEsIDMsIDI0NiwgMjE4LCAKKyAgICA4MCwgMjI3LCAxMTQsIDI0MSwgNjgsIDk3LCAyNTAsIDI1MCwgMjI5LCAxNTIsIDk3LCAyMzcsIDM3LCA5NywgNDMsIDIzNiwgCisgICAgMTA2LCAyNDgsIDIzMSwgMywgMjIxLCAxNjMsIDQzLCAyMDgsIDg2LCAyNDIsIDcwLCAyNDcsIDIwMywgMjQ2LCA2MiwgMywgCisgICAgMjIxLCAxNjksIDQ3LCAyMDYsIDI0MiwgOTcsIDIyNCwgNDAsIDk3LCAyMzUsIDIxNiwgOTcsIDIyMCwgNywgMjM3LCAxNzAsIAorICAgIDk3LCAyMjAsIDcsIDIyOCwgMTI5LCA5NywgMjE5LCA1OSwgOTcsIDIxOSwgNTgsIDk3LCAyNDMsIDE2NywgMjQ1LCA5MSwgCisgICAgMTYsIDIzOSwgMTU5LCAxMDgsIDIxMiwgNSwgOTcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MiwgMjQ0LCA2OCwgCisgICAgMjEzLCAxMzEsIDIyOSwgMTUyLCA5NywgMjE3LCAyMzgsIDIxOSwgMTUzLCAyMjIsIDIwOCwgMjE5LCAxNTMsIDIxNywgMjM0LCAKKyAgICAyMTQsIDE4NSwgOTcsIDI0NiwgMzMsIDIxNCwgMTg1LCA5NywgNDksIDIxOSwgNzcsIDIwNiwgMjIxLCAxMTMsIDQ5LCAyMTksIAorICAgIDc3LCAyNDAsIDIwMCwgNDksIDIxOSwgNzcsIDIyNiwgMjUxLCAxMTMsIDUwLCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA1MCwgCisgICAgMjE5LCA3NywgMjQwLCAyMDAsIDUwLCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA0OSwgNTEsIDI0NywgMjI3LCAyMDYsIAorICAgIDIyMSwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDI0MCwgMjAwLCA0OSwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgCisgICAgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDIwNiwgMjIxLCAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMjQwLCAKKyAgICAyMDAsIDUwLCA1MSwgMjQ3LCAyMjcsIDIyNiwgMjUxLCAyNDUsIDE2NSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAorICAgIDIyMSwgMTEzLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgCisgICAgMjI2LCAyNTEsIDExMywgMjQ1LCA5MywgMjQ3LCAyMjcsIDI0MCwgMjAwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIwNiwgCisgICAgMjIxLCAxMTMsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMTAxLCAyMTgsIDE1OSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAKKyAgICAyMjYsIDI1MSwgMTEzLCAyMzEsIDMsIDI0MCwgMjAwLCAyMzYsIDEwNiwgMjI3LCAxMTUsIDI0MCwgMjAwLCAyMDYsIDIyMSwgCisgICAgNDksIDIxOSwgMjQ1LCAyMjYsIDI1MSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTQsIDE2NywgMjA2LCAyMjEsIDUwLCAKKyAgICAyMTksIDI0NSwgMjI2LCAyNTEsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIxMCwgMjE4LCAyMDgsIDE0NCwgCisgICAgMjEwLCAyMTgsIDI0NywgMjQ3LCAyMDgsIDE0NSwgNTEsIDE1NSwgMjQ3LCAyNDgsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgCisgICAgMjQ3LCAyMjcsIDExNSwgMjA4LCAxNDUsIDUxLCAxNTUsIDQwLCAxNiwgMjQ3LCAyNDcsIDQ5LCA4MCwgOTgsIDIyNywgMTE0LCAKKyAgICA1MCwgODAsIDk4LCAyMjcsIDExNCwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMywgMjM2LCAxMDYsIDIxNCwgMjAyLCAKKyAgICAyMjcsIDExMiwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMSwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMCwgCisgICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAKKyAgICAyNDcsIDI0OCwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIAorICAgIDEyMSwgMjUsIDIzNiwgMTA2LCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgCisgICAgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDIwOCwgODUsIDI0NCwgMjksIDE2LCAxNTcsIDEyMSwgMjUsIAorICAgIDIzNiwgMTA2LCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgMjA4LCA4NSwgCisgICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNiwgCisgICAgMywgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAKKyAgICAxNTcsIDEyMSwgMjUsIDIzNiwgMTA1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIAorICAgIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjI3LCAyMjIsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjQ3LCAyNDgsIDIyNywgCisgICAgMjIyLCA1MSwgMjM5LCAxNzIsIDIxNiwgNzgsIDk3LCAyNDEsIDEzMSwgOTcsIDgwLCAyMjcsIDExNSwgMjQwLCAyMDAsIAorICAgIDIyNCwgMjE0LCAyNDcsIDIxNCwgMjI0LCAyMTQsIDE2MywgMTE1LCAyMTIsIDIyNywgMjI0LCAyMTQsIDIxMiwgMjI4LCAKKyAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxNjMsIDExNSwgMTIwLCAyMTIsIDIxMywgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIAorICAgIDExNSwgMjI3LCAyOCwgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIDIzMCwgOTcsIDIyNCwgMjE0LCAyMDgsIDY2LCAyMjQsIAorICAgIDIxNCwgMjA5LCAxMjQsIDIyNCwgMjE0LCAyMTgsIDI1MywgMjQxLCAxODAsIDIzNywgMjM5LCAyMzksIDkyLCAyMDgsIDE0NSwgCisgICAgMjE5LCA3NiwgMjQ3LCAyNDgsIDIxOSwgNzYsIDIwOCwgMTQ1LCAyNDUsIDkzLCAxNTUsIDI0NywgMjQ4LCAyNDUsIDkzLCAKKyAgICAxNTUsIDIwOCwgMTQ1LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAyNDcsIDI0OCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCisgICAgNjEsIDIwOCwgMTAxLCAyNDgsIDExNSwgMjE1LCAyNTMsIDMsIDI0NiwgNjEsIDIxMSwgNTEsIDIzOSwgMjE1LCAyNTEsIAorICAgIDE0MiwgMjQ1LCA5MCwgMjQxLCAxMTYsIDIzMCwgMjQ0LCAyNDQsIDY4LCAyNDAsIDIwNCwgOTcsIDYyLCAyMTYsIDExLCA1MiwgCisgICAgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCA1MiwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCA1MiwgMjA4LCA4NSwgNjIsIDI0MiwgCisgICAgNjksIDUyLCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgNTIsIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMjcsIDIxNywgNTIsIAorICAgIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMTYsIDExLCAyMDgsIDg2LCAzLCA1MiwgODAsIDE0MiwgMjUxLCAzNCwgMjQ2LCAKKyAgICAxOSwgMjExLCA1OCwgMjA4LCAyMjAsIDI0NiwgMTksIDIzNiwgNDEsIDMsIDIzOSwgMTk1LCAyMTQsIDI0MSwgNjIsIDIyNSwgCisgICAgMTAsIDIyNywgMjE3LCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIwNiwgCisgICAgMjIzLCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NSwgNTIsIDgwLCAxNDIsIDYyLCA1MSwgMzUsIAorICAgIDIxMSwgNjEsIDYyLCAyNDYsIDYyLCAzNSwgMjE2LCAxNDgsIDE2LCAzNSwgMjIxLCA0OCwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgCisgICAgMjM3LCA2MSwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgMjA5LCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAKKyAgICAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDgsIDEwNSwgMTYsIDM1LCAyNDEsIDcxLCAxNiwgMzUsIDI1MSwgMTMwLCAxNiwgMzUsIAorICAgIDI0OCwgMTI4LCAxNiwgMzUsIDI0OSwgMTksIDE2LCAzNSwgMjM2LCAxMDYsIDIxMCwgNSwgMTYsIDM1LCAyMjcsIDExNSwgCisgICAgMjQwLCA1MSwgMTYsIDM1LCA4MCwgMjEwLCA1LCAxNiwgMzUsIDIzOSwgMTU5LCAyNDAsIDUxLCAxNiwgMzUsIDI0NywgMjUsIAorICAgIDIxNiwgNzcsIDE2LCAzNSwgMjEzLCA3LCAyMTksIDIxMSwgMTYsIDM1LCAyMTMsIDcsIDIzMSwgNDksIDE2LCAzNSwgMjQ0LCAKKyAgICAxMzksIDIyNywgMTA1LCAyNDEsIDksIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAxNiwgMzUsIDI0NCwgOCwgCisgICAgMjQ1LCAxODQsIDEwOCwgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDcsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgCisgICAgMTQ5LCAxNiwgMzUsIDE4MiwgMjUxLCAxMzAsIDE2LCAzNSwgMjEwLCA5NSwgMjMxLCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgCisgICAgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAxNiwgMzUsIDI0NywgNTksIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMTYsIAorICAgIDM1LCAyMTAsIDI0MiwgMTYsIDM1LCAyNDEsIDksIDE2LCAzNSwgMjQwLCAxMSwgMjEzLCAxMzAsIDE2LCAzNSwgMjM3LCAKKyAgICAyMzgsIDIxMywgMTMwLCAxNiwgMzUsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMTYsIDM1LCAyMDYsIDIzNiwgMjEzLCAxMzAsIAorICAgIDE2LCAzNSwgMjExLCAyMjgsIDE2LCAzNSwgMjQ0LCA0NiwgMjQ4LCAzNywgOTcsIDE3MSwgMjQ3LCAyMzMsIDE2LCAzNSwgCisgICAgMjIyLCAyMTEsIDE2LCAzNSwgMjQ0LCA0NywgMjM5LCAxNTksIDEwOCwgMTYsIDM1LCAyMTAsIDI0MywgMjM5LCAxNTksIAorICAgIDEwOCwgMjIwLCA4MiwgMTEzLCAyMjAsIDgyLCAyNDYsIDE5NCwgMjIwLCA4MiwgMjM5LCAxNjIsIDIyMCwgODIsIDIzMCwgCisgICAgMjM5LCAyMzksIDE2MiwgMjIwLCA4MiwgMjQ4LCAxMjUsIDI0NywgMTkwLCAyMjAsIDgyLCAyNDcsIDI0MSwgMjA4LCAyNTAsIAorICAgIDIyMCwgODIsIDI0NywgMjI0LCAyNDgsIDIzNiwgMjM1LCAxNTMsIDIyMCwgODIsIDI1MCwgMjM3LCA3NiwgMjQ2LCAxNjgsIAorICAgIDIyMCwgODIsIDI0NCwgMTQ0LCAyMjAsIDgyLCAyNDUsIDgwLCAyNTEsIDEzNCwgMjIxLCA0NiwgMjIwLCA4MiwgNTIsIDI0OSwgCisgICAgMjAsIDQzLCAxNywgMTA1LCA0MywgMTcsIDEwOCwgNDMsIDE3LCAxNDcsIDQzLCAxNywgMTQ5LCA0MywgMTcsIDE3MCwgNDMsIAorICAgIDE3LCAxOTUsIDQzLCAxNywgMjEzLCAxMTEsIDQzLCAxNywgMTk5LCA0MywgMTcsIDIyMiwgNjMsIDQzLCA0MiwgMjA5LCAKKyAgICAxNTIsIDQzLCA0MiwgMjQxLCAxMTIsIDQzLCA0MiwgMjA3LCAxNTQsIDQzLCA0MiwgMjA5LCA1NSwgNDMsIDQyLCAyMzksIAorICAgIDE0MSwgNDMsIDQyLCAyNDAsIDIyLCA0MywgNDIsIDIxMiwgODIsIDQzLCA0MiwgMjEzLCAxMDgsIDQzLCA0MiwgMjQxLCAKKyAgICAxNDAsIDQzLCA0MiwgMjIyLCA2MCwgNDMsIDQyLCAyMDcsIDE1MSwgMTAyLCAxNywgMTA1LCAxMDIsIDE3LCAxMDgsIDEwMiwgCisgICAgMTcsIDE0NywgMTAyLCAxNywgMTQ5LCAxMDIsIDE3LCAxNzAsIDEwMiwgMTcsIDE5NSwgMTAyLCAxNywgMjEzLCAxMTEsIAorICAgIDEwMiwgMTcsIDE5OSwgMTAyLCAxNywgMjIyLCA2MywgMTAyLCA0MiwgMjA5LCAxNTIsIDEwMiwgNDIsIDI0MSwgMTEyLCAKKyAgICAxMDIsIDQyLCAyMDcsIDE1NCwgMTAyLCA0MiwgMjA5LCA1NSwgMTAyLCA0MiwgMjM5LCAxNDEsIDEwMiwgNDIsIDI0MCwgMjIsIAorICAgIDEwMiwgNDIsIDIxMiwgODIsIDEwMiwgNDIsIDIxMywgMTA4LCAxMDIsIDQyLCAyNDEsIDE0MCwgMTAyLCA0MiwgMjIyLCA2MCwgCisgICAgMTAyLCA0MiwgMjA3LCAxNTEsIDE3LCAxMTgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMTIwLCAyMzksIDEwMiwgMjExLCAKKyAgICA2MSwgMTcsIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIDE0NywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIAorICAgIDIzMywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTIsIDg4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIxMywgMTEyLCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDI0MSwgMTQzLCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIyMiwgNjQsIDIzOSwgCisgICAgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCAxNTMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxMTMsIDIzOSwgMTAyLCAKKyAgICAyMTEsIDYxLCA0MiwgMjA3LCAxNTUsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCA1NiwgMjM5LCAxMDIsIDIxMSwgNjEsIAorICAgIDQyLCAyMzksIDE0MiwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDAsIDIzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMiwgCisgICAgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjEzLCAxMDksIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxNDEsIAorICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjIyLCA2MSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMDcsIDE1MiwgMjM5LCAKKyAgICAxMDIsIDIxMSwgNjEsIDEwMiwgOCwgNSwgMSwgNjMsIDEwMiwgOCwgNSwgMSwgMjQ5LCAyNTUsIDEwMiwgOCwgNSwgMSwgCisgICAgMjQ3LCAxMjUsIDEwMiwgOCwgNSwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA1LCAxLCA3NCwgMTAyLCA4LCA1LCAxLCAyNDAsIAorICAgIDE3NCwgMTAyLCA4LCA1LCAxLCAyMzksIDc1LCAxMDIsIDgsIDUsIDEsIDIzNywgMTcxLCAxMDIsIDgsIDUsIDEsIDc1LCAKKyAgICAxMDIsIDgsIDUsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDUsIDEsIDIzMCwgNTQsIDEwMiwgOCwgNSwgMSwgMTU5LCAxMDIsIDgsIAorICAgIDUsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDUsIDEsIDIyMywgMTYzLCAxMDIsIDgsIDUsIDEsIDc4LCAxMDIsIDgsIDUsIDEsIAorICAgIDIxOSwgMTg0LCAxMDIsIDgsIDUsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDUsIDEsIDE0NiwgMTAyLCA4LCA1LCAxLCAxOTQsIAorICAgIDEwMiwgOCwgNSwgMSwgMjEwLCA2OSwgMTAyLCA4LCA1LCAxLCA2OCwgMTAyLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCAKKyAgICA1LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTAyLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCAKKyAgICA1LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDYsIDEsIDYzLCA0MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA2LCAxLCAyNDcsIAorICAgIDEyNSwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDQzLCA4LCA2LCAxLCA3NCwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCA0MywgOCwgCisgICAgNiwgMSwgMjM5LCA3NSwgNDMsIDgsIDYsIDEsIDIzNywgMTcxLCA0MywgOCwgNiwgMSwgNzUsIDQzLCA4LCA2LCAxLCAyMzAsIAorICAgIDE4NCwgNDMsIDgsIDYsIDEsIDIzMCwgNTQsIDQzLCA4LCA2LCAxLCAxNTksIDQzLCA4LCA2LCAxLCAyMjYsIDE4NSwgNDMsIAorICAgIDgsIDYsIDEsIDIyMywgMTYzLCA0MywgOCwgNiwgMSwgNzgsIDQzLCA4LCA2LCAxLCAyMTksIDE4NCwgNDMsIDgsIDYsIDEsIAorICAgIDIxNywgMTM0LCA0MywgOCwgNiwgMSwgMTQ2LCA0MywgOCwgNiwgMSwgMTk0LCA0MywgOCwgNiwgMSwgMjEwLCA2OSwgNDMsIAorICAgIDgsIDYsIDEsIDY4LCA0MywgOCwgNiwgMSwgMjA2LCAxNjQsIDQzLCA4LCA2LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDYsIDEsIAorICAgIDIwMywgMTk2LCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDQzLCA4LCA2LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDUsIDEsIDYzLCAKKyAgICA0MywgOCwgNSwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA1LCAxLCAyNDcsIDEyNSwgNDMsIDgsIDUsIDEsIDI0NSwgNTEsIDQzLCAKKyAgICA4LCA1LCAxLCA3NCwgNDMsIDgsIDUsIDEsIDI0MCwgMTc0LCA0MywgOCwgNSwgMSwgMjM5LCA3NSwgNDMsIDgsIDUsIDEsIAorICAgIDIzNywgMTcxLCA0MywgOCwgNSwgMSwgNzUsIDQzLCA4LCA1LCAxLCAyMzAsIDE4NCwgNDMsIDgsIDUsIDEsIDIzMCwgNTQsIAorICAgIDQzLCA4LCA1LCAxLCAxNTksIDQzLCA4LCA1LCAxLCAyMjYsIDE4NSwgNDMsIDgsIDUsIDEsIDIyMywgMTYzLCA0MywgOCwgNSwgCisgICAgMSwgNzgsIDQzLCA4LCA1LCAxLCAyMTksIDE4NCwgNDMsIDgsIDUsIDEsIDIxNywgMTM0LCA0MywgOCwgNSwgMSwgMTQ2LCAKKyAgICA0MywgOCwgNSwgMSwgMTk0LCA0MywgOCwgNSwgMSwgMjEwLCA2OSwgNDMsIDgsIDUsIDEsIDY4LCA0MywgOCwgNSwgMSwgCisgICAgMjA2LCAxNjQsIDQzLCA4LCA1LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDUsIDEsIDIwMywgMTk2LCA0MywgOCwgNSwgMSwgMjAzLCAKKyAgICAxMjQsIDQzLCA4LCA1LCAxLCAyMDIsIDE1OSwgNDMsIDE3LCAyMDIsIDg0LCAxODIsIDQzLCA0MiwgMjQxLCAxMTIsIDE4MiwgCisgICAgNDMsIDQyLCAyMDcsIDE1NCwgMTgyLCA0MywgNDIsIDIwOSwgNTUsIDE4MiwgNDMsIDQyLCAyMzksIDE0MSwgMTgyLCA0MywgCisgICAgNDIsIDI0MCwgMjIsIDE4MiwgNDMsIDQyLCAyMTIsIDgyLCAxODIsIDQzLCA0MiwgMjEzLCAxMDgsIDE4MiwgNDMsIDQyLCAKKyAgICAyNDEsIDE0MCwgMTgyLCA0MywgNDIsIDIyMiwgNjAsIDE4MiwgNDMsIDQyLCAyMDcsIDE1MSwgNTIsIDQzLCAxNywgMTA1LCAKKyAgICA1MiwgNDMsIDE3LCAxMDgsIDUyLCA0MywgMTcsIDE0NywgNTIsIDQzLCAxNywgMTQ5LCA1MiwgNDMsIDE3LCAxNzAsIDUyLCAKKyAgICA0MywgMTcsIDE5NSwgNTIsIDQzLCAxNywgMjEzLCAxMTEsIDUyLCA0MywgMTcsIDE5OSwgNTIsIDQzLCAxNywgMjIyLCA2MywgCisgICAgNTIsIDQzLCA0MiwgMjA5LCAxNTIsIDE4MiwgNDMsIDE3LCAyMDIsIDg0LCA5OCwgMTE2LCAxNTcsIDIzNiwgMTA1LCA5OCwgCisgICAgMTE2LCA3OSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwNiwgMzgsIDk4LCAxMTYsIAorICAgIDE1NywgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgCisgICAgMTA1LCA5OCwgMTE2LCAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAKKyAgICAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgCisgICAgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCAKKyAgICA5OCwgMTE2LCA3OSwgMjE3LCA1OCwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjE2LCAxNiwgCisgICAgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgCisgICAgOTgsIDExNiwgNzksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAorICAgIDEyMSwgMTU3LCAyNSwgNDksIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIAorICAgIDc5LCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDE1NywgCisgICAgMjUsIDUwLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCA3OSwgMTEyLCAKKyAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgCisgICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgMjUsIDIyNywgCisgICAgMjIyLCA5OCwgMTE2LCAxNTcsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDUwLCAyMzcsIDQ5LCAKKyAgICA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMTEyLCAKKyAgICAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDUwLCAKKyAgICAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNTAsIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDgwLCAKKyAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgNDksIAorICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAorICAgIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAKKyAgICAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCAKKyAgICA3OSwgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAKKyAgICAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAKKyAgICAxMjEsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgCisgICAgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCAKKyAgICAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMzYsIAorICAgIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAKKyAgICAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIAorICAgIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIAorICAgIDExNiwgNDksIDE1NywgMjUsIDUwLCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIAorICAgIDExNiwgMTU3LCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA0OSwgNzksIDI1LCA1MCwgODAsIDIyNywgMTM0LCA5OCwgCisgICAgMTE2LCA1MCwgNzksIDI1LCA0OSwgODAsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgCisgICAgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCAxMjEsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAorICAgIDExMiwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAKKyAgICAxMTYsIDQ5LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAxMTIsIDc5LCAyNSwgNDksIAorICAgIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDQ5LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAKKyAgICAxMjEsIDc5LCAyNSwgNDksIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgMTEyLCAyMzYsIDEwNiwgCisgICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAxMjEsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCA1MCwgMTU3LCAKKyAgICAyNSwgNDksIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgCisgICAgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgNTIsIAorICAgIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCA1MiwgCisgICAgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDUyLCAyMzYsIDEwNSwgOTgsIDExNiwgNTIsIDIwNiwgMzgsIDk4LCAxMTYsIAorICAgIDEyMSwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAorICAgIDExNiwgNTIsIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDEyMSwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAorICAgIDExNiwgMTIxLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKKyAgICAxMTIsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKKyAgICAxMTYsIDUyLCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKKyAgICAxMTYsIDExMiwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCisgICAgODAsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDgwLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAorICAgIDExNiwgNTIsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKKyAgICAxMTYsIDgwLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAorICAgIDEyMSwgMjEyLCAxMjAsIDI1LCAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDIzNiwgMTA2LCAKKyAgICAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgCisgICAgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAKKyAgICAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIAorICAgIDgwLCA1MiwgMjUsIDIzNiwgMTA2LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIAorICAgIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIyNywgCisgICAgMjIyLCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgCisgICAgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAKKyAgICAyNTEsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyMDYsIDIyMSwgNDksIDIwOCwgMTczLCAyMjYsIDI1MSwgCisgICAgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjQ1LCAxMzAsIDk4LCAxMTYsIDE1NywgMjI3LCAyMjIsIDk4LCAKKyAgICAxMTYsIDE1NywgMjA2LCAyMjQsIDk4LCAxMTYsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDIsIDcwLCA5OCwgCisgICAgMTE2LCA3OSwgMjI3LCAyMjIsIDk4LCAxMTYsIDc5LCAyMDYsIDIyNCwgOTgsIDExNiwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIAorICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCAxNTcsIDQ5LCAyNSwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgCisgICAgNzksIDI0MiwgNzAsIDk4LCAxMTYsIDc5LCA0OSwgMjUsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgNzksIDExMiwgMjUsIAorICAgIDE1NywgMjQyLCA3MCwgMjA2LCAyMjEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIAorICAgIDIyNiwgMjUxLCAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIAorICAgIDI1MSwgMTYyLCAyNDgsIDMzLCAyMjYsIDI1MSwgMjM5LCAyMzMsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAKKyAgICAyMTcsIDU0LCAyNDgsIDMzLCAyMjYsIDI1MSwgMjEzLCAxMTIsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMzksIDEwMiwgMjQ4LCAKKyAgICAzMywgNDksIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDEyNiwgMjE3LCA1NCwgMjQ4LCAzMywgNDksIDIzOSwgCisgICAgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDE2MiwgMjQ4LCAzMywgNDksIDEyNiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAKKyAgICAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDQ5LCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCA1MCwgMTYyLCAyNDgsIDMzLCAxNTcsIAorICAgIDIxMywgNzksIDIyNSwgMTAsIDIxMywgNzksIDI0NCwgMTUwLCAyMTMsIDc5LCAyMDYsIDIyMSwgMTE4LCAyNDEsIDEzOSwgCisgICAgMjQ4LCAzMywgNTAsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIDIxNywgNjAsIDIyNiwgMjUxLCAyMjcsIDIyMiwgMjE3LCAKKyAgICA2MCwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCAyMjcsIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIAorICAgIDQ5LCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIAorICAgIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgCisgICAgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAKKyAgICAyMTcsIDYwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDIyNywgCisgICAgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgNDksIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgNjIsIAorICAgIDIxMSwgMTc3LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMywgMjE1LCAxODksIDI0NSwgMTY0LCA2MSwgNTEsIDI0NSwgMTk1LCAKKyAgICA2MiwgNSwgMjExLCAxNzcsIDUxLCAzLCAyMzYsIDEwNiwgMjQwLCA5LCA1MSwgMywgODAsIDI0MCwgOSwgNTEsIDMsIDIxOSwgCisgICAgMjI5LCAyNDUsIDEyNSwgMjQwLCA5LCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIDUwLCAyNDAsIAorICAgIDksIDUxLCAzLCAyMDYsIDIyMSwgNTAsIDIwOCwgMTczLCAyMjYsIDI1MSwgNDksIDI0MCwgOSwgNTEsIDMsIDI0MywgMjI4LCAKKyAgICAyNDUsIDEyNSwgMjQwLCA5LCA2MiwgNSwgMjExLCAxNzcsIDYxLCA1LCAyMTEsIDE3NywgNjIsIDIxNiwgMTQzLCA2MSwgCisgICAgMjE2LCAxNDMsIDYyLCA4MCwgMjE2LCAxNDMsIDYxLCA4MCwgMjE2LCAxNDMsIDYyLCAyMTksIDgwLCA2MSwgMjE5LCA4MCwgCisgICAgNjIsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MSwgMjA2LCAyMjMsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgCisgICAgNjEsIDIwNiwgMjIzLCA1LCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAKKyAgICAyMTYsIDExLCA1LCAyMDgsIDg1LCA2MSwgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIxOCwgNjAsIDYxLCAKKyAgICAyMTYsIDExLCAyMTgsIDYwLCA2MiwgMjQyLCA2OSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDYyLCAyNDIsIAorICAgIDY5LCA1LCAyMDgsIDg1LCA2MSwgMjQyLCA2OSwgNSwgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCAyMDgsIDg1LCA2MSwgMjI3LCAKKyAgICAyMTcsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjEsIDIyNywgMjE3LCA1LCAyMDgsIDg1LCA2MiwgCisgICAgMjI3LCAyMTcsIDIxOCwgNjAsIDYxLCAyMjcsIDIxNywgMjE4LCA2MCwgNjIsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjEsIDYxLCAKKyAgICAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDMsIDIyMSwgMjM5LCAyNDIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MSwgCisgICAgMjQyLCA4MywgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgODAsIDI0MCwgOSwgMjQ3LCAxNzMsIDYyLCAyNDYsIDYxLCAyNDYsIDYyLCAKKyAgICAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMjYsIDI1MSwgCisgICAgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgCisgICAgNTAsIDIxNywgNjAsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDI1MSwgMTUsIDI0NywgMTQ4LCAyMDYsIDIyMSwgNDksIDIxNywgCisgICAgNjAsIDI0OCwgNDMsIDQ5LCAxNjIsIDYyLCAyNDYsIDYxLCA1MCwgMTYyLCA2MiwgMjQ2LCA2MSwgMjMwLCAyNDAsIDI0NywgCisgICAgMTc3LCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjI2LCAKKyAgICAyNTEsIDE2MiwgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgCisgICAgMTI4LCAyMDYsIDIyMSwgNTAsIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNTAsIDIxNywgNjAsIAorICAgIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMDYsIDIyMSwgCisgICAgMTYyLCAyNDYsIDYxLCAyMjYsIDI1MSwgMTYyLCAyNDYsIDYxLCA2MiwgMjI2LCAyNTEsIDUwLCAyMDgsIDg1LCA2MiwgMjI2LCAKKyAgICAyNTEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDUwLCAyMDgsIDg1LCAKKyAgICA2MSwgMjQ3LCAxNzcsIDUxLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCA1MSwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIAorICAgIDIwNiwgMjIxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA1MCwgMjQzLCAyMjgsIDE2MiwgCisgICAgMjQ4LCA0MywgNjEsIDUxLCAzLCA4MCwgMjQ4LCA1NSwgMjI3LCAxMTQsIDYxLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgMjQzLCAKKyAgICA4NSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA1MCwgCisgICAgMTYyLCAyNDgsIDQzLCAyMjgsIDgsIDI0NiwgNjEsIDYxLCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgNTEsIAorICAgIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDIxNywgNTksIDYxLCA1MSwgMywgCisgICAgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCAKKyAgICA2MiwgMywgMjI2LCAyNTEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgCisgICAgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCAyMDYsIDIyMSwgNDksIDIwOCwgODUsIDIwNiwgMjIxLCA1MCwgCisgICAgMjA4LCA4NSwgMjI2LCAyNTEsIDQ5LCAyMDgsIDg1LCA2MSwgMjI1LCAxMCwgMjExLCAxNzcsIDYyLCAyMjUsIDEwLCAyMTEsIAorICAgIDE3NywgNjEsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgNSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgCisgICAgMjA4LCA4NSwgNjIsIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjQ2LCA3LCAyMDcsIDMsIDIxMiwgMTUsIDI0NSwgMjM2LCAKKyAgICA2MiwgMjExLCA5NCwgNjEsIDIxMSwgOTQsIDIyNywgMTMxLCAyMDksIDE3LCAyMTAsIDIxNCwgMjUwLCA3OCwgMjIxLCAxODgsIAorICAgIDI0NCwgMTksIDIyMSwgMTg4LCAyNDUsIDIwNCwgMjE5LCAyNTAsIDYyLCAyMDksIDE2MSwgNjEsIDIwOSwgMTYxLCAyNDgsIAorICAgIDI0OCwgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMjQ2LCAxNjgsIDI0OCwgMjQ4LCA5OCwgMywgMjAzLCAxOTYsIDIxNCwgCisgICAgMjU0LCAyMDcsIDQsIDMsIDIxNiwgMTkxLCAyNDIsIDQ4LCAyMzYsIDQ3LCAyNDgsIDEwMiwgNjEsIDIxMiwgMjM3LCAyMTgsIAorICAgIDE1OSwgNjIsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjEzLCA2OCwgMjE2LCA3MywgMjE1LCAxOTgsIDIzOSwgMjAxLCAyMzcsIAorICAgIDU2LCAyNDcsIDE3NywgNjIsIDQ5LCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA0OSwgCisgICAgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDExMiwgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCAKKyAgICA2MSwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIDI0NywgMTEsIDU0LCAyMTYsIDIwMywgCisgICAgNTQsIDI0OCwgNjIsIDU0LCAyNDcsIDgzLCAyNTAsIDIwOCwgMjE5LCAyMzAsIDI0NSwgMTMwLCAyNDYsIDE0MywgMjE2LCAKKyAgICA1OSwgMjQ1LCAxMzEsIDc2LCAyMjcsIDksIDI0NSwgMTMxLCA3NiwgMjMwLCAxNTEsIDIxMSwgOTUsIDI1LCAyNDUsIDEzOCwgCisgICAgMjQwLCA3NSwgOTcsIDI1MSwgMTE1LCAyMTMsIDcwLCAyMzcsIDEzMSwgMjUsIDIxMiwgMTU5LCAyMTksIDMzLCA5NywgMjAzLCAKKyAgICAxLCAyMDMsIDc2LCAyMDgsIDc1LCAzNSwgMjM3LCA1MSwgMjA4LCA3NSwgMzUsIDIyOCwgMzMsIDIwOCwgNzUsIDM1LCAyMzksIAorICAgIDI0OSwgMjA4LCA3NSwgMzUsIDIwOSwgMTgsIDIwOCwgNzUsIDM1LCAyMDQsIDE2LCAyMDgsIDc1LCAzNSwgMjA0LCA4MCwgCisgICAgMjA4LCA3NSwgMzUsIDIyNCwgMTIsIDIwOCwgNzUsIDM1LCAyNDEsIDE3OSwgMjA0LCAzNywgNzYsIDI0MywgMjQ5LCA2MSwgCisgICAgMjM5LCAxMTQsIDI0MCwgMTAyLCA2MSwgMjEyLCAzMCwgMjQwLCAxMDIsIDYyLCAyMTIsIDMwLCAyNDAsIDEwMiwgNjEsIAorICAgIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMjksIDIyOCwgMSwgMjE3LCA1NiwgMjI0LCAKKyAgICAyOSwgMjI0LCAyMzQsIDI0MCwgNDMsIDU0LCAyNDEsIDE3OSwgMjI1LCAxMjcsIDU0LCAyMzAsIDY5LCAyMTQsIDIxOCwgCisgICAgMjA2LCAyMDUsIDIyMiwgMjI0LCAyMTgsIDczLCAyNTAsIDExNCwgMjA5LCAyMDUsIDIzOCwgMTc4LCAyNDcsIDU3LCAyMjcsIAorICAgIDE4NCwgMjA1LCAyMDIsIDIyNywgMTQ1LCAyMTQsIDE4NywgMjE1LCAyMCwgMjQ3LCA0MywgMjUwLCAxNDUsIDIxOCwgMTA4LCAKKyAgICA2MSwgMjQ2LCAxNTAsIDIyOSwgODEsIDYxLCAyNDYsIDE1MCwgMjE3LCA0OCwgNjEsIDI0NiwgMTUwLCAyMTUsIDIwNiwgNjEsIAorICAgIDI0NiwgMTUwLCAyNDgsIDU0LCA2MSwgMjQ2LCAxNTAsIDIyOSwgMzEsIDYxLCAyNDYsIDE1MCwgMjE5LCA0NSwgNjIsIDI0NiwgCisgICAgMTUwLCAyMjksIDgxLCA2MiwgMjQ2LCAxNTAsIDIxNywgNDgsIDYyLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYyLCAyNDYsIAorICAgIDE1MCwgMjQ4LCA1NCwgNjIsIDI0NiwgMTUwLCAyMjksIDMxLCA2MiwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyMTEsIDIyNiwgCisgICAgMjEwLCAyMjcsIDYxLCAyMzcsIDU2LCAyMTAsIDIyNywgNjEsIDI0MywgMjIyLCAyMTAsIDIyNywgNjIsIDI0NiwgNSwgMjEwLCAKKyAgICAyMjcsIDYxLCAyMTEsIDIyNiwgMjEwLCAyMjcsIDYyLCAyMzcsIDU2LCAyMTAsIDIyNywgNjIsIDI0MywgMjIyLCAyMTAsIAorICAgIDIyNywgNjEsIDI0NiwgNSwgMjEwLCAyMjcsIDIzNiwgNDcsIDIxMSwgMTgyLCAyMTcsIDU2LCAyMjEsIDE2MCwgMjQxLCAKKyAgICAxMzksIDIyMSwgMTYwLCAyNDgsIDE1OCwgMjQxLCAxMzksIDIyMSwgMTU1LCAyNDgsIDE1OCwgMjEyLCA4MSwgMjIxLCAxNTUsIAorICAgIDIyMywgMTk1LCAyMzksIDIxNywgNTQsIDIyMywgMTk1LCAyMjMsIDY2LCA1NCwgMjIzLCAxOTUsIDIxMywgNTcsIDU0LCAKKyAgICAyMDQsIDQ2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjQxLCAxNzYsIDIxMCwgODksIDI0NSwgMTMwLCAyMDYsIDIzMywgMjE2LCAKKyAgICAxMzksIDk3LCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEyMCwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTgsIAorICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE3LCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNSwgCisgICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTMsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTExLCAKKyAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEwOSwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjM4LCAxNzYsIAorICAgIDIyNSwgNzAsIDYyLCAyMDYsIDIzMywgMjE2LCAxMzksIDk3LCAyMTYsIDE0MCwgMjE5LCA5NSwgOTcsIDIxOSwgNjgsIDIxOSwgCisgICAgOTUsIDk3LCAyMTgsIDIzOCwgMjE5LCA5NSwgNTQsIDIwNCwgMzUsIDk3LCAyNDMsIDIxNCwgMjQwLCAxMDEsIDI0MywgMjE0LCAKKyAgICAyNDAsIDEwMCwgMjQzLCAyMTQsIDI0MCwgOTksIDI0MywgMjE0LCAyNDAsIDk4LCAyNDMsIDIxNCwgMjQwLCA5NywgMjQzLCAKKyAgICAyMTQsIDI0MCwgOTYsIDYxLCAyNDYsIDYyLCAzLCA3MCwgMjE2LCAxNiwgNjEsIDI0NiwgNjIsIDMsIDEyMCwgMjQzLCA4MywgCisgICAgNjIsIDI0NiwgNjIsIDMsIDYxLCA3MCwgMjE2LCAxNiwgNjIsIDI0NiwgNjIsIDMsIDEyMCwgNjEsIDI0MywgODMsIDIyNCwgCisgICAgNDUsIDM1LCAyMDMsIDc2LCAyMjQsIDQ1LCAzNSwgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDc2LCAKKyAgICAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDAsIDI0MywgMTk1LCAzNSwgMjI3LCAxNzcsIDIwMywgNzYsIDI0MywgCisgICAgMTk1LCAzNSwgMjM3LCAyNDgsIDIwMywgMCwgNjEsIDIzOSwgMjI1LCA2MiwgMjM5LCAyMjUsIDIzNywgMTMxLCAyNSwgMjE4LCAKKyAgICAxNjMsIDI1MCwgMjI4LCAyNDUsIDEyOCwgMjEwLCAxNTQsIDIxMSwgMTAzLCA3NiwgMjUxLCA5MiwgMjE0LCAyMDMsIDI1MSwgCisgICAgMjksIDIzOSwgMTk3LCAyMzgsIDE4NywgMjExLCAxMDMsIDc2LCAyMzcsIDI2LCAyNTAsIDQyLCA5NywgMjM5LCAyMTMsIAorICAgIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgMTI2LCAyMjcsIDEwOSwgMjQ1LCAxODEsIDIxNiwgMTYsIDEyNiwgMjI3LCAxMDksIAorICAgIDI0NSwgMTgxLCAyMjcsIDIyMiwgMjA0LCA5MSwgNTQsIDEzOCwgMjA1LCAxNzksIDU0LCAyNDIsIDc1LCAyNDAsIDQzLCA1NCwgCisgICAgMjQyLCA3NSwgMjI1LCAxMjcsIDU0LCAyMzAsIDI1MCwgMjQwLCA0MywgMjUsIDIyNSwgMTI3LCA1NCwgMjI1LCAxMjcsIDI1LCAKKyAgICAyNDAsIDQzLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEyNywgMywgMjExLCAzMiwgMjUsIDIyNSwgCisgICAgMTI3LCAyNSwgMjQwLCA0MywgNTQsIDgwLCAyMjUsIDEyNywgMywgMjExLCAzMiwgNTQsIDIzNiwgMTA2LCAyMjUsIDEyNywgCisgICAgMywgMjExLCAzMiwgNTQsIDIyNSwgMTAsIDYxLCAyNDYsIDYxLCAyMjUsIDEwLCA2MiwgMjQ2LCA2MSwgMjI1LCAxMCwgNSwgCisgICAgNjEsIDI0NiwgNjEsIDIyNSwgODYsIDk3LCAyNDMsIDEzNSwgOTcsIDIwNiwgMjMwLCAyMTksIDY3LCA5NywgMjQ1LCAyNDcsIAorICAgIDIzOSwgOTcsIDIwNiwgMjAxLCAyMjIsIDIxNywgMjQ2LCAyMDMsIDIxOSwgMTM3LCAyMzAsIDc1LCAyMDUsIDI0MCwgMjQ2LCAKKyAgICAxMjMsIDYyLCAyMjQsIDMwLCAyMjcsIDEyOCwgMjEzLCAxMDEsIDIxMywgMTQwLCAyMTcsIDM4LCAyMTMsIDEyMCwgMjEyLCAKKyAgICAxMCwgMjQ4LCAyNTEsIDI0OCwgMjE3LCAxMDMsIDIyOSwgMTUxLCA2MSwgMjQyLCA1OCwgMjI1LCAxMjIsIDYxLCAyNDIsIAorICAgIDU4LCAyMjksIDgxLCA2MiwgMjQyLCA1OCwgMjI1LCAxMjIsIDYyLCAyNDIsIDU4LCAyMjksIDgxLCAyMTIsIDE2LCAyMDQsIAorICAgIDMsIDIxMiwgMTksIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA3LCAyMTYsIDE5MCwgNjIsIDIxMiwgMTUsIDIwOSwgMTksIAorICAgIDI0NiwgOCwgMjUsIDIxNiwgMTkwLCAyMDcsIDE3NCwgNjEsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjA3LCAxNzQsIDYyLCAKKyAgICAyMTIsIDIzNywgMjE4LCAxNTksIDYxLCAyNDMsIDIyMiwgMjMxLCA1MCwgMjExLCAxNzcsIDI0NSwgMTI0LCAyMjgsIDE1LCAKKyAgICAyNDMsIDE2MiwgMjQ3LCAzOSwgMjE5LCAyNTMsIDIxOCwgMTYzLCAyNDcsIDQwLCAyMTIsIDQ4LCAyMzcsIDM2LCAzLCA2MSwgCisgICAgMjQ1LCAxMzAsIDQzLCAyNDUsIDEyNCwgMjI4LCAxNSwgMjQ2LCAxOTUsIDIyMSwgMTkyLCAyNDEsIDYyLCAyNTAsIDI1NSwgCisgICAgMjIwLCAyNiwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgMjA3LCAxMzEsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjEsIAorICAgIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYyLCA0OSwgMjI4LCAxNiwgMjI0LCAyMzMsIDYxLCA0OSwgMjI4LCAKKyAgICAxNiwgMjI0LCAyMzMsIDI0MiwgNTMsIDIxMiwgNDAsIDU0LCA3OSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDQ5LCAyNDYsIAorICAgIDE2LCAyNDEsIDYyLCAxMDMsIDIxNCwgMjU0LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjMxLCA1MCwgNjEsIDI0NiwgNjIsIDIzMSwgCisgICAgNTAsIDYyLCAyMTEsIDE3NywgNjIsIDIwOCwgNTAsIDIxNiwgODQsIDQ5LCAyNDEsIDYxLCAyMTYsIDg0LCA0OSwgMjQxLCAKKyAgICA2MCwgMjUwLCA1NCwgMTYsIDM1LCAyMDYsIDIwNSwgNzksIDI0NiwgNjIsIDMsIDIxMSwgMzIsIDI1LCAxMjAsIDE4NywgNTUsIAorICAgIDIxOCwgMjU0LCAyMTYsIDEzLCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIyNywgMjE5LCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIzMCwgCisgICAgMjM5LCAyMTgsIDI1NCwgNjIsIDI0NSwgMTMxLCAyMjAsIDMyLCAyMTMsIDgsIDIxMiwgMjUyLCAyMTIsIDIwMywgMjQ2LCAKKyAgICA5MCwgMjQ3LCAxOSwgMjM2LCAyMzEsIDIxMiwgODksIDIzOCwgMTg4LCAyMDQsIDMsIDIzNiwgMjMsIDIzOCwgMTg4LCAzLCAKKyAgICAyMzcsIDEwMSwgMjI1LCAxMDcsIDE2LCAzNSwgMjI3LCAxMzMsIDIyNCwgMTIsIDIwNywgNCwgMjIwLCAzMiwgMjM3LCAyMzksIAorICAgIDIzOSwgMTQ4LCAyMzksIDIyNiwgMjMxLCA1MCwgMjM2LCAxMjYsIDI0MCwgMzQsIDIxNSwgMTUsIDUxLCAyMzksIDE0NywgCisgICAgMjQ1LCAxNjQsIDIxMiwgNjYsIDIzNSwgMTYzLCAyMTIsIDY5LCAyMTgsIDIzMCwgMywgMjQ4LCAyNTEsIDIwOSwgMTQ0LCAKKyAgICAyMzAsIDE2OSwgMjQ4LCAyMzYsIDk3LCAyMzcsIDU5LCAyMzcsIDI1MCwgOTcsIDIzOSwgMTA1LCAyMTcsIDE4MCwgMjQ1LCAKKyAgICAxMDAsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNjEsIDIzOSwgMjI2LCAzLCAyMzYsIDEwNiwgMTAxLCA2MiwgMjExLCAzMywgCisgICAgNjIsIDIxNSwgMjUsIDIxNCwgMTkwLCAyMDYsIDIyMSwgMjQ4LCAzOCwgMjE0LCAxOTAsIDYyLCAyMTQsIDE5MCwgMjI2LCAKKyAgICAyNTEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MSwgMjE0LCAxOTAsIDYxLCA3OSwgMjQ2LCAxNjksIDgyLCAyMDksIDE2MiwgCisgICAgMjI3LCA0NywgNTQsIDIwOSwgMjIxLCAyNDIsIDUyLCAyNTEsIDUyLCAyNDEsIDU3LCAyMTYsIDE4OCwgMjM5LCAyMzgsIAorICAgIDIxNiwgMTg4LCAyMzcsIDEyMywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIyNiwgMjUxLCA1MCwgCisgICAgMjE5LCA4LCAyMTksIDgsIDIwNiwgMjIxLCA1MCwgMjE5LCA4LCA2MSwgMjIyLCA5NywgNjIsIDIyMiwgOTcsIDI0NiwgMTY5LCAKKyAgICA4MiwgNzksIDI0NiwgMTY5LCA4MiwgMjIzLCAyMjQsIDIwMywgMTk2LCA3OSwgMjIzLCAyMjQsIDIwMywgMTk2LCAyNDgsIAorICAgIDI0OCwgMjAzLCAxOTYsIDc5LCAyNDgsIDI0OCwgMjAzLCAxOTYsIDIxOSwgMjA3LCAzMCwgMjQ1LCAxMzAsIDc5LCAzMCwgCisgICAgMjQ1LCAxMzAsIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA3OSwgMTcxLCAyNDYsIDIxOCwgMjQ1LCAxMzAsIDgsIDI0NSwgCisgICAgMTMwLCAyMTMsIDc3LCA2MSwgOCwgMjQ1LCAxMzAsIDIxOSwgMjA3LCA4LCAyNDUsIDEzMCwgMjI1LCAxMjQsIDI0NSwgMTMwLCAKKyAgICAyMTEsIDk1LCA3NiwgMjQ0LCAxMzcsIDIzOSwgMTQ3LCAyMDksIDE4MCwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAKKyAgICAyNTAsIDU5LCA3OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAyNTAsIDU5LCAyMzksIDE0NywgMjQ2LCAzLCAyNTAsIDU5LCA2MiwgCisgICAgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgMjExLCA5NCwgMjExLCAyMjEsIAorICAgIDIxMSwgNDIsIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgNDMsIDYxLCAyMTEsIDk0LCAxNzEsIDI0NiwgMjE4LCA2MiwgMjExLCAKKyAgICA5NCwgNjIsIDI0NiwgMjE4LCA2MSwgMjExLCA5NCwgMjE5LCAyMDcsIDYyLCAyMTEsIDk0LCA3OSwgMjE5LCAyMDcsIDYyLCAKKyAgICAyMTEsIDk0LCAyMTgsIDExOCwgMjExLCA5NCwgMjEzLCA3NywgNjEsIDIxMSwgOTQsIDc5LCAyNTAsIDU5LCAxNzEsIDI0NiwgCisgICAgMjE4LCAyNTAsIDU5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCAKKyAgICA5NCwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgCisgICAgMjQxLCAxNDMsIDIxOCwgNjEsIDIxNiwgMTQxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIAorICAgIDE0MSwgNjIsIDIxMSwgOTQsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4MywgMjE4LCA2MSwgMjUwLCAKKyAgICA1OSwgMjA5LCAxODAsIDI1MCwgNTksIDE3MSwgMjQ2LCAyMTgsIDIwOSwgMTgwLCAyNTAsIDU5LCA3OSwgMjA5LCAxODAsIAorICAgIDI1MCwgNTksIDIxMiwgODgsIDIxOCwgMjE4LCA2MiwgMjUsIDYxLCAyMzksIDIwMCwgNjIsIDIzOSwgMjAwLCA2MSwgMjM5LCAKKyAgICAyMDAsIDI0MSwgMTQzLCAyMTgsIDIxOCwgMjE5LCAyMDcsIDYyLCAyMzksIDIwMCwgNDMsIDE3MSwgMjQ2LCAyMTgsIDI0MSwgCisgICAgMTQzLCAyMTgsIDYxLCAyMTEsIDk0LCA3OSwgMjA5LCAxODAsIDIxOCwgMTE4LCAyNTAsIDU5LCAyMTIsIDE3LCAyMDgsIAorICAgIDI0NCwgMjA4LCA3OCwgMjEyLCAxNywgNzksIDI0NiwgMTQ2LCAyMTIsIDE3LCAyMTEsIDIyMywgNzksIDIxMSwgMjIzLCAKKyAgICAyNDgsIDI0OSwgMjUwLCA1OSwgMjQxLCAxNDMsIDIwOSwgMTgwLCAyMTcsIDIxMywgMjUwLCA1OSwgNzksIDI0MSwgMTQzLCAKKyAgICAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDI0NSwgMTMxLCA4MiwgMjEzLCA3NywgNjEsIDI0NiwgNjEsIDE4MiwgCisgICAgMTAzLCAyNDUsIDEzMSwgODIsIDIyNiwgMjUxLCA1MCwgMjQyLCA1MCwgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAorICAgIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjExLCAxNzcsIDIwNiwgMjIxLCA1MCwgCisgICAgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCA2MiwgMjE3LCA0NywgMTMxLCAyMTksIDIzMywgNjEsIDIxNywgNDcsIDEzMSwgMjE5LCAKKyAgICAyMzMsIDYxLCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNjIsIDI0MywgMjIyLCAyMjQsIDEwMywgNjEsIDIwMywgMTk2LCAKKyAgICA3OSwgMjQwLCAyMTIsIDEzMSwgOTcsIDE1NywgODAsIDE0MiwgMjI1LCAxMCwgODAsIDE0MiwgNzksIDgwLCAxNDIsIDc5LCAKKyAgICAyMTIsIDEyMCwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjEyLCAxMjAsIDI0NSwgCisgICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAKKyAgICAyMTksIDIzMywgNzksIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgMjEyLCAxMjAsIAorICAgIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMTI0LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCisgICAgMjE5LCAyMzMsIDI0NSwgODYsIDIxMSwgNzgsIDIxOSwgODksIDIsIDIxOSwgMjMzLCA3OSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAKKyAgICAyMzMsIDc5LCAyMzcsIDU2LCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNzksIDYyLCAyMzcsIDU1LCAyMTUsIDE5OCwgNzksIAorICAgIDYyLCAyMzcsIDU2LCAyNDcsIDE3NywgMjM5LCAyMDEsIDIzNywgNTUsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCA1NiwgCisgICAgMjQ3LCAxNzcsIDIyNSwgMTAsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgNTAsIDIxOSwgNzcsIDIxOSwgMjMzLCAKKyAgICAyMjUsIDEwLCAyMzksIDIxNCwgNDksIDIxOSwgNzcsIDIxOSwgMjMzLCAyMjUsIDEwLCAyMzksIDIxNCwgNTAsIDIxOSwgNzcsIAorICAgIDIxOSwgMjMzLCAyMjUsIDEwLCAyMjcsIDIxNywgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgMjE2LCAKKyAgICAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAKKyAgICAyMTksIDIzMywgNzksIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjI3LCAyMTcsIAorICAgIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCAKKyAgICAxNTcsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAxNTcsIDUwLCAyMDgsIDEzMywgMjEzLCAKKyAgICAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIDEwLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIAorICAgIDEwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDEwNSwgMjQzLCAKKyAgICAxNzQsIDE4MiwgNDMsIDE3LCAxMDgsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIAorICAgIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxNzAsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTk1LCAyNDMsIDE3NCwgCisgICAgMTgyLCA0MywgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKKyAgICAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTA1LCAyNDMsIAorICAgIDE3NCwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgCisgICAgMTQ5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk1LCAyNDMsIDE3NCwgNDMsIAorICAgIDQxLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxOTksIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMjIsIAorICAgIDYzLCAyNDMsIDE3NCwgNDMsIDQxLCA0MiwgMjA5LCAxNTIsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKKyAgICAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxNDcsIDI0MywgMTc0LCAxODIsIAorICAgIDQzLCA0MSwgMTcsIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIAorICAgIDE3LCAxOTUsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAKKyAgICAxOTksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIyMiwgNjMsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgNDIsIDIwOSwgCisgICAgMTUyLCA3OSwgMjA0LCAyNiwgODYsIDQ3LCA3OSwgOTEsIDU0LCA3OSwgMjI0LCAxMDMsIDU0LCA3OSwgMjQzLCAxMzcsIDU0LCAKKyAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDg2LCA0NywgNzksIDE1MywgMjQxLCAxNzYsIDQ3LCAyNDIsIDYzLCAKKyAgICAyMTgsIDYzLCA4NiwgNDcsIDc5LCAyMTUsIDE5MCwgODYsIDQ3LCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyMDgsIDg0LCA4NiwgCisgICAgNDcsIDI0NCwgMTQzLCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA2MiwgODYsIDQ3LCAKKyAgICAyMDksIDMxLCAyMDgsIDE0MywgODYsIDI1MCwgOTQsIDIwOSwgMzEsIDI0NywgMjQ2LCA4NiwgMjUwLCA5NCwgNjIsIDg2LCAKKyAgICAyNTAsIDk0LCA3OSwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDg2LCA0NywgNzksIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCA4NiwgCisgICAgNDcsIDIxMSwgMTc0LCA2MiwgODYsIDQ3LCA3OSwgMjQ1LCAyMTcsIDYyLCA4NiwgNDcsIDIxNiwgMTAsIDYxLCA4NiwgNDcsIAorICAgIDIyNywgMjE2LCA2MSwgODYsIDQ3LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgODYsIDQ3LCAyMzksIDExNywgMjEzLCA3NywgCisgICAgNjEsIDg2LCA0NywgNzksIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDc5LCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgCisgICAgODYsIDQ3LCAyMjEsIDE2MiwgMjI2LCAyNTEsIDIxNiwgOSwgNjEsIDg2LCA0NywgMjQ1LCA5MywgMjI3LCAxNCwgMjIxLCAKKyAgICAxNjIsIDIwNiwgMjIxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDQzLCA3OSwgNjEsIDg2LCA0NywgMjA0LCAzMiwgODYsIDQ3LCAKKyAgICAyNDgsIDQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAyNDgsIDQyLCA4NiwgNDcsIDI0OCwgNDIsIDE1MywgMjQxLCAxNzYsIAorICAgIDQ3LCA3OSwgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDI0OCwgNDIsIDg2LCA0NywgNzksIDI0OCwgCisgICAgNDIsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDksIDE4MiwgODYsIDQ3LCA3OSwgMjA5LCAxODEsIDg2LCA0NywgMjA0LCA1NiwgCisgICAgODYsIDQ3LCA3OSwgMjA0LCA1NiwgODYsIDQ3LCAyMjAsIDMsIDg2LCA0NywgNTIsIDI0NSwgOTMsIDIyNywgMTQsIDEyNiwgCisgICAgMjQzLCAxODQsIDI1MCwgMjE3LCA2MSwgMjA4LCA4NiwgMjQ1LCAxOTUsIDUsIDYxLCAyMDgsIDg1LCAyMTgsIDIzMywgMTcxLCAKKyAgICAyMTAsIDI0NCwgMTcxLCAyMTAsIDE5NywgNDksIDIxNSwgOTMsIDI0OSwgMTEsIDI0NCwgNDMsIDUwLCAyMTUsIDkzLCAyNDksIAorICAgIDExLCAyNDQsIDQzLCAyMTksIDI0NSwgMywgNzAsIDIzMSwgNiwgMjE2LCA3NCwgMjEyLCAxLCAyMTcsIDI0OCwgMjEwLCAKKyAgICAyNDQsIDIxMCwgMTk4LCAyMTcsIDI0OCwgMjEyLCAwLCA4MCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCA5NSwgMTMsIDIxNSwgCisgICAgMjQ1LCAyNDMsIDIyNywgMTYzLCAyNDMsIDEzNiwgMTMsIDI0MCwgODQsIDI0MywgMjI3LCAxMDMsIDIyNywgMzcsIDI1MCwgCisgICAgMjI2LCAxMDMsIDIyNywgMzcsIDIxOSwgMjQ0LCA2MSwgMjQzLCAyMjIsIDMsIDI0NiwgMjE2LCAyNDMsIDg1LCAyNSwgMywgCisgICAgMjQzLCA4NSwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDIwNiwgMjEyLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAzLCAyNDMsIAorICAgIDg1LCAyMDYsIDIyMSwgNDksIDI0NSwgMTY2LCAzLCAyNDMsIDg1LCA0OSwgMjE5LCAyMDksIDIzMCwgOTksIDUwLCAyMTksIAorICAgIDIwOSwgMjMwLCA5OSwgMjM5LCAxMDIsIDIxOSwgMjA5LCAyMzAsIDk5LCAyMjgsIDgsIDExMiwgMjEwLCAzLCAyMjgsIDgsIAorICAgIDEyMSwgMjEwLCAzLCA0OSwgMjUsIDUwLCA1MiwgMjA3LCAxNzMsIDQ5LCAyNSwgNTAsIDIxMCwgMywgNDksIDIyMywgMjI4LCAKKyAgICAxNjMsIDUwLCAyMTAsIDMsIDE2MywgNDksIDIxMCwgMywgMTEyLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU1LCAyMjYsIDI0NywgCisgICAgMjQzLCAxNDIsIDI0NywgMTM3LCAyMzYsIDEwNiwgMjE1LCAxMzUsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjEsIDYxLCAyNDUsIAorICAgIDIxNiwgMjQzLCAyMjIsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDI0NSwgMjE2LCAyNDMsIDIyMiwgMywgODYsIDIwOCwgMjU0LCAKKyAgICA2MSwgNTEsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDUxLCAzLCA4NiwgMjA4LCAyNTQsIDEzLCA0OSwgNjEsIDUxLCAxNTUsIAorICAgIDEzLCA1MCwgNjEsIDUxLCAxNTUsIDEzLCA0OSwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCAyNTAsIDIxOCwgMTU1LCAxMywgCisgICAgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNDksIDYxLCAyMDgsIDEzMywgCisgICAgMjEzLCAzMywgMTU1LCAxMywgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAxMywgNDksIDIzOSwgMjE0LCAyMTksIAorICAgIDc2LCAxMywgNTAsIDIzOSwgMjE0LCAyMTksIDc2LCAxNzcsIDIxNywgNTgsIDQ3LCAxODMsIDIxNywgNTgsIDQ3LCAyNTAsIAorICAgIDE5NCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyMzgsIDIyNiwgMjQ2LCA2MiwgNDcsIDUwLCA1MywgMywgCisgICAgNDMsIDIxOCwgNzYsIDE2MywgOTYsIDQ3LCAxNjMsIDg2LCA0NywgMTYzLCA0OSwgNTAsIDQ3LCAxNjMsIDk2LCA1MiwgNDcsIAorICAgIDE2MywgODYsIDUyLCA0NywgMTYzLCA0OSwgNTAsIDUyLCA0NywgMTYzLCA5NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgCisgICAgODYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDUyLCA1MywgCisgICAgMjM5LCAxMjAsIDE0MiwgMTYzLCA4NiwgMjExLCAxNzEsIDQ3LCA1OCwgNTksIDI0OCwgMzYsIDU4LCA1OSwgMjQzLCA4MiwgCisgICAgNTgsIDU5LCAyNDIsIDIxMCwgNTgsIDU5LCAyNDMsIDgxLCA1OCwgNTksIDI0MiwgMTQ2LCA1OCwgNTksIDI0MywgMTcsIDU4LCAKKyAgICA1OSwgMjQyLCAyMDksIDU4LCA1OSwgMjQzLCA4MCwgNTgsIDU5LCAyNDIsIDExNCwgNTgsIDU5LCAyNDIsIDI0MSwgNTgsIAorICAgIDU5LCAyNDIsIDE3NywgNTgsIDU5LCAyNDMsIDQ4LCA1OCwgNTksIDI0MiwgMTQ1LCA1OCwgNTksIDI0MywgMTYsIDU4LCA1OSwgCisgICAgMjQyLCAyMDgsIDU4LCA1OSwgMjQzLCA3OSwgNTgsIDU5LCAyNDIsIDk4LCA1OCwgNTksIDI0MiwgMjI1LCA1OCwgNTksIAorICAgIDI0MiwgMTYxLCA1OCwgNTksIDI0MywgMzIsIDU4LCA1OSwgMjQyLCAxMjksIDU4LCA1OSwgMjQzLCAwLCA1OCwgNTksIDI0MiwgCisgICAgMTkyLCA1OCwgNTksIDI0MywgNjMsIDU4LCA1OSwgMjQyLCAxMTMsIDU4LCA1OSwgMjQyLCAyNDAsIDU4LCA1OSwgMjQyLCAKKyAgICAxNzYsIDU4LCA1OSwgMjQzLCA0NywgNTgsIDU5LCAyNDIsIDE0NCwgNTgsIDU5LCAyNDMsIDE1LCA1OCwgNTksIDI0MiwgCisgICAgMjA3LCA1OCwgNTksIDI0MywgNzgsIDU4LCA1OSwgMjQyLCA5MCwgNTgsIDU5LCAyNDIsIDIxNywgNTgsIDU5LCAyNDIsIAorICAgIDE1MywgNTgsIDU5LCAyNDMsIDI0LCA1OCwgNTksIDI0MiwgMTIxLCA1OCwgNTksIDI0MiwgMjQ4LCA1OCwgNTksIDI0MiwgCisgICAgMTg0LCA1OCwgNTksIDI0MywgNTUsIDU4LCA1OSwgMjQyLCAxMDUsIDU4LCA1OSwgMjQyLCAyMzIsIDU4LCA1OSwgMjQyLCAKKyAgICAxNjgsIDU4LCA1OSwgMjQzLCAzOSwgNTgsIDU5LCAyNDIsIDEzNiwgNTgsIDU5LCAyNDMsIDcsIDU4LCA1OSwgMjQyLCAxOTksIAorICAgIDU4LCA1OSwgMjQzLCA3MCwgNTgsIDU5LCAyNDIsIDk3LCA1OCwgNTksIDI0MiwgMjI0LCA1OCwgNTksIDI0MiwgMTYwLCA1OCwgCisgICAgNTksIDI0MywgMzEsIDU4LCA1OSwgMjQyLCAxMjgsIDU4LCA1OSwgMjQyLCAyNTUsIDU4LCA1OSwgMjQyLCAxOTEsIDU4LCAKKyAgICA1OSwgMjQzLCA2MiwgNTgsIDU5LCAyNDIsIDExMiwgNTgsIDU5LCAyNDIsIDIzOSwgNTgsIDU5LCAyNDIsIDE3NSwgNTgsIAorICAgIDU5LCAyNDMsIDQ2LCA1OCwgNTksIDI0MiwgMTQzLCA1OCwgNTksIDI0MywgMTQsIDU4LCA1OSwgMjQyLCAyMDYsIDU4LCA1OSwgCisgICAgMjQzLCA3NywgNTgsIDU5LCAyNDIsIDg2LCA1OCwgNTksIDI0MiwgMjEzLCA1OCwgNTksIDI0MiwgMTQ5LCA1OCwgNTksIAorICAgIDI0MywgMjAsIDU4LCA1OSwgMjQyLCAxMTcsIDU4LCA1OSwgMjQyLCAyNDQsIDU4LCA1OSwgMjQyLCAxODAsIDU4LCA1OSwgCisgICAgMjQzLCA1MSwgNTgsIDU5LCAyNDIsIDEwMSwgNTgsIDU5LCAyNDIsIDIyOCwgNTgsIDU5LCAyNDIsIDE2NCwgNTgsIDU5LCAKKyAgICAyNDMsIDM1LCA1OCwgNTksIDI0MiwgMTMyLCA1OCwgNTksIDI0MywgMywgNTgsIDU5LCAyNDIsIDE5NSwgNTgsIDU5LCAyNDMsIAorICAgIDY2LCA1OCwgNTksIDI0MiwgOTMsIDU4LCA1OSwgMjQyLCAyMjAsIDU4LCA1OSwgMjQyLCAxNTYsIDU4LCA1OSwgMjQzLCAyNywgCisgICAgNTgsIDU5LCAyNDIsIDEyNCwgNTgsIDU5LCAyNDIsIDI1MSwgNTgsIDU5LCAyNDIsIDE4NywgNTgsIDU5LCAyNDMsIDU4LCAKKyAgICA1OCwgNTksIDI0MiwgMTA4LCA1OCwgNTksIDI0MiwgMjM1LCA1OCwgNTksIDI0MiwgMTcxLCA1OCwgNTksIDI0MywgNDIsIAorICAgIDU4LCA1OSwgMjQyLCAxMzksIDU4LCA1OSwgMjQzLCAxMCwgNTgsIDU5LCAyNDIsIDIwMiwgNTgsIDU5LCAyNDMsIDczLCA1OCwgCisgICAgNTksIDI0MiwgODksIDU4LCA1OSwgMjQyLCAyMTYsIDU4LCA1OSwgMjQyLCAxNTIsIDU4LCA1OSwgMjQzLCAyMywgNTgsIDU5LCAKKyAgICAyNDIsIDEyMCwgNTgsIDU5LCAyNDIsIDI0NywgNTgsIDU5LCAyNDIsIDE4MywgNTgsIDU5LCAyNDMsIDU0LCA1OCwgNTksIAorICAgIDI0MiwgMTA0LCA1OCwgNTksIDI0MiwgMjMxLCA1OCwgNTksIDI0MiwgMTY3LCA1OCwgNTksIDI0MywgMzgsIDU4LCA1OSwgCisgICAgMjQyLCAxMzUsIDU4LCA1OSwgMjQzLCA2LCA1OCwgNTksIDI0MiwgMTk4LCA1OCwgNTksIDI0MywgNjksIDU4LCA1OSwgMjQyLCAKKyAgICA5NiwgNTgsIDU5LCAyNDIsIDIyMywgNTgsIDU5LCAyNDIsIDE1OSwgNTgsIDU5LCAyNDMsIDMwLCA1OCwgNTksIDI0MiwgCisgICAgMTI3LCA1OCwgNTksIDI0MiwgMjU0LCA1OCwgNTksIDI0MiwgMTkwLCA1OCwgNTksIDI0MywgNjEsIDU4LCA1OSwgMjQyLCAKKyAgICAxMTEsIDU4LCA1OSwgMjQyLCAyMzgsIDU4LCA1OSwgMjQyLCAxNzQsIDU4LCA1OSwgMjQzLCA0NSwgNTgsIDU5LCAyNDIsIAorICAgIDE0MiwgNTgsIDU5LCAyNDMsIDEzLCA1OCwgNTksIDI0MiwgMjA1LCA1OCwgNTksIDI0MywgNzYsIDU4LCA1OSwgMjQyLCA4NCwgCisgICAgNTgsIDU5LCAyNDIsIDIxMSwgNTgsIDU5LCAyNDIsIDE0NywgNTgsIDU5LCAyNDMsIDE4LCA1OCwgNTksIDI0MiwgMTE1LCAKKyAgICA1OCwgNTksIDI0MiwgMjQyLCA1OCwgNTksIDI0MiwgMTc4LCA1OCwgNTksIDI0MywgNDksIDU4LCA1OSwgMjQyLCA5OSwgNTgsIAorICAgIDU5LCAyNDIsIDIyNiwgNTgsIDU5LCAyNDIsIDE2MiwgNTgsIDU5LCAyNDMsIDMzLCA1OCwgNTksIDI0MiwgMTMwLCA1OCwgCisgICAgNTksIDI0MywgMSwgNTgsIDU5LCAyNDIsIDE5MywgNTgsIDU5LCAyNDMsIDY0LCA1OCwgNTksIDI0MiwgOTEsIDU4LCA1OSwgCisgICAgMjQyLCAyMTgsIDU4LCA1OSwgMjQyLCAxNTQsIDU4LCA1OSwgMjQzLCAyNSwgNTgsIDU5LCAyNDIsIDEyMiwgNTgsIDU5LCAKKyAgICAyNDIsIDI0OSwgNTgsIDU5LCAyNDIsIDE4NSwgNTgsIDU5LCAyNDMsIDU2LCA1OCwgNTksIDI0MiwgMTA2LCA1OCwgNTksIAorICAgIDI0MiwgMjMzLCA1OCwgNTksIDI0MiwgMTY5LCA1OCwgNTksIDI0MywgNDAsIDU4LCA1OSwgMjQyLCAxMzcsIDU4LCA1OSwgCisgICAgMjQzLCA4LCA1OCwgNTksIDI0MiwgMjAwLCA1OCwgNTksIDI0MywgNzEsIDU4LCA1OSwgMjQyLCA4NywgNTgsIDU5LCAyNDIsIAorICAgIDIxNCwgNTgsIDU5LCAyNDIsIDE1MCwgNTgsIDU5LCAyNDMsIDIxLCA1OCwgNTksIDI0MiwgMTE4LCA1OCwgNTksIDI0MiwgCisgICAgMjQ1LCA1OCwgNTksIDI0MiwgMTgxLCA1OCwgNTksIDI0MywgNTIsIDU4LCA1OSwgMjQyLCAxMDIsIDU4LCA1OSwgMjQyLCAKKyAgICAyMjksIDU4LCA1OSwgMjQyLCAxNjUsIDU4LCA1OSwgMjQzLCAzNiwgNTgsIDU5LCAyNDIsIDEzMywgNTgsIDU5LCAyNDMsIDQsIAorICAgIDU4LCA1OSwgMjQyLCAxOTYsIDU4LCA1OSwgMjQzLCA2NywgNTgsIDU5LCAyNDIsIDk0LCA1OCwgNTksIDI0MiwgMjIxLCA1OCwgCisgICAgNTksIDI0MiwgMTU3LCA1OCwgNTksIDI0MywgMjgsIDU4LCA1OSwgMjQyLCAxMjUsIDU4LCA1OSwgMjQyLCAyNTIsIDU4LCAKKyAgICA1OSwgMjQyLCAxODgsIDU4LCA1OSwgMjQzLCA1OSwgNTgsIDU5LCAyNDIsIDEwOSwgNTgsIDU5LCAyNDIsIDIzNiwgNTgsIAorICAgIDU5LCAyNDIsIDE3MiwgNTgsIDU5LCAyNDMsIDQzLCA1OCwgNTksIDI0MiwgMTQwLCA1OCwgNTksIDI0MywgMTEsIDU4LCA1OSwgCisgICAgMjQyLCAyMDMsIDU4LCA1OSwgMjQzLCA3NCwgNTgsIDU5LCAyNDIsIDg1LCA1OCwgNTksIDI0MiwgMjEyLCA1OCwgNTksIAorICAgIDI0MiwgMTQ4LCA1OCwgNTksIDI0MywgMTksIDU4LCA1OSwgMjQyLCAxMTYsIDU4LCA1OSwgMjQyLCAyNDMsIDU4LCA1OSwgCisgICAgMjQyLCAxNzksIDU4LCA1OSwgMjQzLCA1MCwgNTgsIDU5LCAyNDIsIDEwMCwgNTgsIDU5LCAyNDIsIDIyNywgNTgsIDU5LCAKKyAgICAyNDIsIDE2MywgNTgsIDU5LCAyNDMsIDM0LCA1OCwgNTksIDI0MiwgMTMxLCA1OCwgNTksIDI0MywgMiwgNTgsIDU5LCAyNDIsIAorICAgIDE5NCwgNTgsIDU5LCAyNDMsIDY1LCA1OCwgNTksIDI0MiwgOTIsIDU4LCA1OSwgMjQyLCAyMTksIDU4LCA1OSwgMjQyLCAKKyAgICAxNTUsIDU4LCA1OSwgMjQzLCAyNiwgNTgsIDU5LCAyNDIsIDEyMywgNTgsIDU5LCAyNDIsIDI1MCwgNTgsIDU5LCAyNDIsIAorICAgIDE4NiwgNTgsIDU5LCAyNDMsIDU3LCA1OCwgNTksIDI0MiwgMTA3LCA1OCwgNTksIDI0MiwgMjM0LCA1OCwgNTksIDI0MiwgCisgICAgMTcwLCA1OCwgNTksIDI0MywgNDEsIDU4LCA1OSwgMjQyLCAxMzgsIDU4LCA1OSwgMjQzLCA5LCA1OCwgNTksIDI0MiwgMjAxLCAKKyAgICA1OCwgNTksIDI0MywgNzIsIDU4LCA1OSwgMjQyLCA4OCwgNTgsIDU5LCAyNDIsIDIxNSwgNTgsIDU5LCAyNDIsIDE1MSwgNTgsIAorICAgIDU5LCAyNDMsIDIyLCA1OCwgNTksIDI0MiwgMTE5LCA1OCwgNTksIDI0MiwgMjQ2LCA1OCwgNTksIDI0MiwgMTgyLCA1OCwgCisgICAgNTksIDI0MywgNTMsIDU4LCA1OSwgMjQyLCAxMDMsIDU4LCA1OSwgMjQyLCAyMzAsIDU4LCA1OSwgMjQyLCAxNjYsIDU4LCAKKyAgICA1OSwgMjQzLCAzNywgNTgsIDU5LCAyNDIsIDEzNCwgNTgsIDU5LCAyNDMsIDUsIDU4LCA1OSwgMjQyLCAxOTcsIDU4LCA1OSwgCisgICAgMjQzLCA2OCwgNTgsIDU5LCAyNDIsIDk1LCA1OCwgNTksIDI0MiwgMjIyLCA1OCwgNTksIDI0MiwgMTU4LCA1OCwgNTksIAorICAgIDI0MywgMjksIDU4LCA1OSwgMjQyLCAxMjYsIDU4LCA1OSwgMjQyLCAyNTMsIDU4LCA1OSwgMjQyLCAxODksIDU4LCA1OSwgCisgICAgMjQzLCA2MCwgNTgsIDU5LCAyNDIsIDExMCwgNTgsIDU5LCAyNDIsIDIzNywgNTgsIDU5LCAyNDIsIDE3MywgNTgsIDU5LCAKKyAgICAyNDMsIDQ0LCA1OCwgNTksIDI0MiwgMTQxLCA1OCwgNTksIDI0MywgMTIsIDU4LCA1OSwgMjQyLCAyMDQsIDU4LCA1OSwgCisgICAgMjQzLCA3NSwgODYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIDk1LCAKKyAgICA5NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MiwgNTMsIDMsIDgwLCA5NSwgNDksIDUwLCA1MiwgNTMsIDMsIDgwLCA5NSwgCisgICAgODYsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIDE0MiwgOTYsIDUyLCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUyLCA1MywgCisgICAgMjM5LCAxMjAsIDE0MiwgMTgzLCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIDUzLCAzLCAyMzYsIDEwNiwgOTUsIDE3NywgCisgICAgMjA4LCA3MCwgNDcsIDE4MywgMjA4LCA3MCwgNDcsIDk2LCA1MiwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTIsIDI0NCwgMTQ1LCAKKyAgICA0NywgOTYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwNywgMTM0LCAKKyAgICAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCA1MywgMywgMjQyLCA4MywgMjExLCA3NywgMTc3LCA1MywgMjA4LCAxNzMsIAorICAgIDE0MiwgMTgzLCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA4NiwgNTMsIDMsIAorICAgIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OCwgODYsIDIwNywgMTM0LCA1MywgCisgICAgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAKKyAgICAyNTAsIDk2LCA4NiwgMjUwLCA5NiwgOTYsIDUyLCAyNTAsIDk2LCA4NiwgNTIsIDI1MCwgOTYsIDk2LCA1MywgMjA4LCAxNzMsIAorICAgIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMDgsIDE3MywgNjIsIDI0MywgMjIxLCA5NiwgNTMsIDIzOSwgMTIwLCAyNDgsIDIzMSwgCisgICAgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIDIwOCwgMTczLCA2MiwgMjQzLCAKKyAgICAyMjEsIDE1MywgMjA0LCA0NiwgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDI1LCAyMTEsIAorICAgIDIzOCwgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyNDEsIDE3NiwgNTMsIDMsIDExMywgCisgICAgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgMywgMTEzLCAyMTEsIDIzOCwgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyMDQsIAorICAgIDQ2LCA1MywgMjUsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCisgICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAKKyAgICA1MywgMjUsIDE1MywgMjA0LCA0NiwgNDcsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDI0MCwgODQsIDI0MywgCisgICAgMjI3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxNSwgMjQ1LCAyNDMsIDIyNywgMjExLCAyMzgsIDI0MSwgMTc2LCAKKyAgICA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIDIxMSwgMjM4LCAKKyAgICAyNDEsIDE3NiwgNDcsIDI0MCwgODQsIDI0MywgMjI4LCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDIxNSwgMjQ1LCAKKyAgICAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNDUsIDEyNCwgCisgICAgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDQsIDc2LCAKKyAgICA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIxNiwgMTYsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjA2LCAKKyAgICAyMTIsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjQyLCA2OCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCAKKyAgICA4NCwgMjQ1LCA4NCwgMjI3LCAyMTIsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDI0NSwgODQsIDIxNiwgNSwgMjE2LCAKKyAgICA4LCAyNTAsIDEyOSwgMjQ2LCAxOCwgNDcsIDIyNywgMjE1LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgCisgICAgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjQ3LCAyNDgsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDIwOCwgMTQ1LCAyNTAsIAorICAgIDEyOSwgMjQ2LCAxOCwgNTMsIDMsIDIyNCwgMTAyLCAyMDgsIDE0NSwgMjUwLCAxMjksIDI1MCwgMTk0LCA1MywgMywgMjE4LCAKKyAgICA3NiwgMjI2LCAyNTEsIDUwLCAyMTMsIDE0NSwgMjQ2LCAxOCwgNDcsIDIyNiwgMjUxLCA0OSwgMjEzLCAxNDUsIDI1MCwgCisgICAgMTk0LCA0NywgMjUwLCAxOTQsIDI0NiwgMTYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgCisgICAgODYsIDUzLCA4NywgMjEyLCAyMjgsIDk2LCA0NywgOTYsIDUzLCA4NywgMjEyLCAyMjgsIDg2LCA0NywgMjEyLCAyMjgsIDg2LCAKKyAgICA1MywgODcsIDk2LCA0NywgODYsIDUzLCAzLCA5MSwgNTYsIDk2LCA1MywgMywgOTEsIDU2LCA4NiwgNTMsIDIwOSwgMjUsIAorICAgIDIwMywgMTk2LCA0OSwgNTAsIDUzLCAyMDksIDI1LCA1LCAyNDYsIDYxLCAxNzcsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIAorICAgIDUsIDI0NiwgNjEsIDQ5LCAxNTAsIDExMiwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIAorICAgIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIDE1MCwgNDksIDIzNywgODYsIDExMiwgMTUwLCA0OSwgMTIxLCAKKyAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIAorICAgIDE1MCwgNTAsIDIzNywgODYsIDQ5LCAxNTAsIDEyMSwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCisgICAgMTUwLCA0OSwgMjM3LCA4NiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCA4NiwgMjM3LCA4NywgCisgICAgMywgMTUwLCAxMTIsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgMTgzLCAKKyAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAKKyAgICAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAKKyAgICAyMDgsIDE3MywgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNDksIDIwOCwgMTczLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAKKyAgICAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMzksIDEyMCwgMTQyLCAxNzcsIAorICAgIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjM5LCAxMjAsIAorICAgIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMzksIDEyMCwgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIAorICAgIDIzOSwgMTIwLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAKKyAgICAxNTAsIDQ5LCAyMzksIDEyMCwgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgMjM3LCA4NywgMywgCisgICAgMTUwLCAyNDIsIDcwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgCisgICAgMjE2LCAxNiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgMTgzLCAKKyAgICAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDk2LCAyMzcsIAorICAgIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjI0LCA5NiwgMjM3LCA4NywgMywgMTUwLCAKKyAgICAxMjEsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDcwLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgCisgICAgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCA4NywgOTYsIDIzNywgODcsIDMsIAorICAgIDE1MCwgMjQyLCA3MCwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAyNDQsIDE0NCwgOTYsIDIzNywgODcsIAorICAgIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAKKyAgICAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgMTc3LCAyMzcsIAorICAgIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDE4MywgMjM3LCA4NywgMywgCisgICAgMTUwLCA0OSwgMjQ4LCAxMTAsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA1MCwgNTIsIDUzLCAzLCAyMTUsIAorICAgIDE4OSwgMjM3LCA2NCwgMjQxLCAzNSwgMiwgODcsIDg2LCA0NywgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgODYsIDQ3LCA5NiwgCisgICAgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgODYsIDUzLCA4NywgCisgICAgMjUxLCA3LCAxNTYsIDEzNSwgMjI3LCAxNzksIDg3LCA5NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjI3LCAxNzgsIDIzNywgCisgICAgMjQ3LCA4NywgODYsIDQ3LCAyMTAsIDI0NSwgODcsIDg2LCA0NywgOTYsIDUzLCAyMDksIDI1LCAyMTAsIDI0NCwgMjEwLCAKKyAgICAxOTgsIDg3LCA5NiwgNDcsIDQ5LCAyMzksIDI0NCwgMjA5LCAyNDgsIDUwLCAyMzksIDI0NCwgMjA5LCAyNDgsIDExMiwgCisgICAgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMjEsIDIzOSwgMjQ0LCAyMDksIDI0OCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDQsIAorICAgIDQzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxMSwgMTg4LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIwNywgMTIxLCAyNDUsIDI0MiwgCisgICAgNDksIDYxLCAyNDUsIDkzLCAxNTUsIDUwLCA2MSwgMjQ1LCA5MywgMTU1LCA0OSwgNjEsIDIxOSwgNzYsIDUwLCA2MSwgMjE5LCAKKyAgICA3NiwgMjAyLCAxNjAsIDIyMSwgMTY0LCA0OSwgMjMxLCA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDUwLCAyMzEsIAorICAgIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDI0OCwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgCisgICAgMjQ4LCA2NSwgMTU1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDYsIDI0NiwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjA2LCAKKyAgICAyNDYsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDUwLCA1MSwgCisgICAgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIAorICAgIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAKKyAgICAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDQ5LCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDUwLCAyNTAsIAorICAgIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDQ5LCAyNTAsIDEyOSwgMjI3LCAxNzksIDE1NSwgNTAsIDI1MCwgMTI5LCAKKyAgICAyMzcsIDI0NywgMTU1LCA1MiwgNDksIDI1MCwgMTI5LCAyMzcsIDI0NywgMTU1LCA1MiwgNTAsIDI1MCwgMTI5LCAyMjcsIAorICAgIDE3OSwgMTU1LCA0OSwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCA2MiwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCisgICAgMjQyLCA4MywgMjQwLCA0MCwgODAsIDIwMiwgMzAsIDIyNywgMTE0LCAyMjUsIDE3LCAyNTAsIDIxOCwgMjIwLCAxLCAyMjcsIAorICAgIDIyMiwgNTAsIDI1MCwgMjE4LCAyMDYsIDY5LCAzLCAyMTEsIDE3NywgMjI1LCAxNywgNTAsIDI1MCwgMjE4LCAzLCAyNDMsIAorICAgIDg1LCAyNTAsIDIxOCwgMywgMjE1LCA5NCwgMjMxLCA2LCAyNTEsIDEyNiwgMjUwLCAyMTcsIDIxMSwgMjA4LCAyNTAsIDIxOCwgCisgICAgMjIwLCAxLCAyMjcsIDIyMiwgMjExLCAyMDgsIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMDcsIDE3NCwgMjUwLCAKKyAgICAyMTcsIDIxNiwgNzMsIDI1MCwgMjE3LCAyNTAsIDIxOCwgMywgMjA2LCAyNDYsIDIxNiwgNzMsIDI1MCwgMjE4LCAzLCAyMDYsIAorICAgIDI0NiwgMjIwLCA4OSwgMjUwLCAyMTgsIDIyMCwgMSwgMjA2LCAyMjQsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDI0MiwgCisgICAgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgCisgICAgMTEyLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIAorICAgIDUzLCAyMTgsIDU5LCAxMTIsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgCisgICAgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMTYsIDE2LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAKKyAgICAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDEyMSwgMjUsIDIyNywgMjIyLCAyMjUsIDE3LCAyNTAsIAorICAgIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDUwLCAyNSwgMjA2LCAyMjQsIAorICAgIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIAorICAgIDI1LCAyMDYsIDIyNCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAKKyAgICAyMTgsIDU5LCA1MCwgMjUsIDI0MiwgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAKKyAgICAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIDI1LCAyNDIsIDcwLCAyMTYsIDczLCAyNDEsIDk0LCAyMTMsIDExNywgMjQxLCAKKyAgICA5NCwgMjEzLCAxMTgsIDMsIDIxOSwgMjAzLCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNSwgMjQ2LCA2MiwgNTUsIDI0MSwgOTQsIAorICAgIDIxMywgMTE4LCAzLCA1MCwgNTMsIDU1LCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNDksIDUzLCA1NSwgMjQ2LCA2MiwgMywgCisgICAgMjM2LCAxMDYsIDE0MiwgNDMsIDgwLCAxNDIsIDQzLCAyMTksIDgxLCA0MywgMjE2LCA3NCwgMjEyLCAwLCA0MywgMjE4LCAKKyAgICAyMzMsIDI0NiwgNjIsIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDI0OCwgMjMxLCAyNSwgMjA4LCAxNDUsIDE2MiwgCisgICAgMjQzLCAxNDIsIDI0NywgMTM3LCA4MCwgMTQyLCAyNDYsIDYyLCAzLCAyMTAsIDIwMCwgMjAzLCAxOTYsIDQzLCAyNTAsIAorICAgIDE5MiwgMjQzLCAxMzcsIDU0LCAxMTIsIDUzLCAyMDksIDI1LCAyNDYsIDYxLCA0MywgNjEsIDI0NywgMTc3LCA0MywgMjQ3LCAKKyAgICAxNzcsIDQzLCAyMjcsIDE3OCwgNDMsIDIzNywgMjQ2LCAyNDYsIDYyLCAzLCA1LCAyNDYsIDYyLCAyMDgsIDE3MywgMjA5LCAKKyAgICA5MywgMjE2LCAxNiwgMjQ2LCA2MiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAyMCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxNiwgCisgICAgMTYsIDEwMywgMjE1LCAyNDUsIDI0MywgMjI4LCAyMTIsIDU3LCAxMDMsIDI0MCwgODQsIDI0MywgMjI4LCAyMTIsIDU3LCAKKyAgICAxMDMsIDI1MCwgNTksIDEwMywgNSwgMjQ2LCA2MSwgMTAzLCAyMTEsIDE3NywgMTIwLCAyMzAsIDk4LCAyMTEsIDE3NSwgCisgICAgMjA4LCA4NiwgMywgNzAsIDU1LCAyMDgsIDg2LCAzLCAyMDYsIDI0NiwgMjE1LCA5NCwgMjMxLCA1MCwgMjA4LCA4NSwgMjA4LCAKKyAgICA4NiwgMywgMjEzLCAxMjQsIDI1MCwgNTAsIDI0NywgMjQ3LCA1MCwgMjA4LCA4NiwgODcsIDQ5LCAyMDgsIDg1LCA0OSwgCisgICAgMjA4LCA4NiwgMjQ4LCAxMTAsIDgwLCAxNDIsIDgwLCAyNDgsIDIzMSwgMjQ4LCAxMTAsIDUwLCAyMDgsIDg1LCAyNDcsIAorICAgIDIzNSwgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ3LCAyMzUsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDcsIDIzNCwgCisgICAgMjMsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIzLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MSwgMjM2LCA0MCwgNjIsIDIzNiwgCisgICAgNDAsIDQ5LCAyMDQsIDIxLCAyNDAsIDQwLCA1MCwgMjA0LCAyMSwgMjQwLCA0MCwgNDksIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAKKyAgICA1MCwgNTIsIDIwNCwgMjEsIDI0MCwgNDAsIDIzMSwgNDIsIDIzMSwgMjcsIDIwOCwgMjUxLCAxMTUsIDIzMSwgMjcsIDIzMSwgCisgICAgMjgsIDIyMiwgMjM0LCAzLCA4MCwgMTQyLCAyNDIsIDc3LCAyMjMsIDIyOCwgNTEsIDMsIDI0NSwgMTg3LCAyMTksIDIwOCwgCisgICAgMjMxLCAzOSwgMjUwLCA4MSwgMjEyLCAxOTMsIDIxNywgMjI0LCAyNDEsIDM1LCAyLCAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgCisgICAgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODIsIDMsIDIwOCwgMjI4LCA1NSwgMjM1LCAxNTQsIDIwOCwgMTczLCAKKyAgICAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgMjM4LCA0OCwgMjExLCA5MywgMjA5LCA4MSwgMjQyLCA2OSwgMjA4LCA4NiwgMywgNDksIAorICAgIDE2MiwgMjQ4LCA0MywgMjQyLCA2OSwgMjA4LCA4NiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjIsIDI0MywgMjIyLCAzLCAKKyAgICAxMjEsIDQ3LCA2MiwgMjI2LCAyNDYsIDYxLCAyNDYsIDYyLCAzLCAxMjEsIDQ3LCA2MiwgMjQ2LCA2MiwgMywgMTIxLCA0NywgCisgICAgMjQxLCAyMCwgNjEsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MiwgMjExLCAxNzcsIDI0MSwgMjAsIDYxLCAyNDMsIDIyMSwgMjQxLCAKKyAgICAyMCwgNjIsIDI0MywgMjIxLCAyNDEsIDIwLCA2MSwgMjQ2LCA2MSwgMjQxLCAyMCwgNjIsIDI0NiwgNjEsIDIxNSwgMTM0LCAKKyAgICAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMjU0LCAyMTIsIDEsIDMsIDIxOSwgMjAzLCAyMTYsIDc0LCAyMTIsIDEsIDMsIDIzNiwgCisgICAgMTA2LCA5NSwgMjQ4LCA3MywgMjEyLCAwLCAyNDgsIDczLCAyMTYsIDc0LCAyMTIsIDAsIDUyLCAyMTgsIDc2LCAyMDgsIDcwLCAKKyAgICAyMTgsIDc2LCAyMjcsIDIxNywgMjQ1LCA4NiwgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjQ1LCA4NiwgMjUwLCAyMTgsIAorICAgIDE1NSwgMjA4LCAyMTIsIDIyNCwgMTAwLCAyMjMsIDE2MiwgNDMsIDcwLCAyMTksIDI1NCwgMjIzLCAxNjIsIDQzLCA5MSwgCisgICAgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgMjMsIDIxOSwgMjU0LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAKKyAgICAyNDMsIDg1LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAyMTgsIDc2LCAyMjMsIDE2MiwgNTEsIDIzMCwgCisgICAgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDUxLCAyMDYsIDIzOCwgMjE5LCAyNTQsIDEyMCwgMjI3LCAzNywgMjUsIDIxOSwgCisgICAgMjU0LCAxMjAsIDIyNywgMzcsIDIxOSwgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDIzLCAyMTksIDI1NCwgMjI0LCA1OCwgCisgICAgMTIwLCAyMTAsIDIyMCwgMjEwLCAyMTgsIDMsIDIzMSwgMiwgMjE3LCA1OCwgMjMxLCAzLCAyMTksIDI1NCwgMjM5LCAyNTIsIAorICAgIDIxOSwgNzEsIDIzMSwgMiwgMjMxLCAzLCAzLCA1MiwgOTUsIDIzMSwgMywgMjUwLCAxNSwgMywgMjEyLCA1NywgMjQ2LCA1NCwgCisgICAgMjM5LCA5OSwgMjUwLCAxOTQsIDIzMSwgMCwgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjE2LCAxNDIsIDIxOSwgNTIsIDI1MCwgCisgICAgMTA0LCAyMTgsIDUzLCAyMjcsIDExNSwgMjMxLCAxLCAzLCAyMTMsIDE0NSwgMjE5LCA1MiwgMjUwLCAxMDQsIDIxOCwgNTMsIAorICAgIDIyNywgMTE1LCAyMzEsIDEsIDIyMSwgMTY2LCAyMzEsIDQ0LCAyMDksIDkzLCAyMTgsIDUzLCAyMzEsIDMsIDI1MCwgMTA0LCAKKyAgICAzNCwgMjE4LCA2MywgMjE5LCAyNTQsIDIxNywgNTIsIDIzMSwgMywgMjE5LCAyNTQsIDIzMSwgMywgMywgOTYsIDUzLCAzLCAKKyAgICAxMTMsIDIzMSwgMywgMywgMjMsIDU0LCAyMzEsIDMsIDMsIDIzMCwgMjQ0LCAyMzEsIDMsIDMsIDIwNiwgMjM3LCAyMzEsIDMsIAorICAgIDMsIDIxOSwgMjAzLCAyMzEsIDMsIDMsIDIwNiwgMjQ2LCAyMzAsIDk5LCAyMjgsIDgsIDQ5LCAyMDgsIDg2LCAyMTksIDI1NCwgCisgICAgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjQ1LCAyMjMsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIAorICAgIDIxOCwgMTE0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAyMTcsIDIxOSwgOTEsIDIsIDMsIDUsIDI0NiwgNjIsIAorICAgIDU1LCA5MSwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzksIDU1LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU1LCA5MSwgMiwgMywgCisgICAgNzAsIDU2LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU2LCA5MSwgMiwgMywgMjEwLCAyNDYsIDEwOCwgOTEsIDIsIDMsIDYyLCAKKyAgICAyMDgsIDg1LCAyMjQsIDEwMywgMiwgMywgMjQ1LCAyMzQsIDU1LCAyMjQsIDEwMywgMiwgMywgNzAsIDU2LCAyMjQsIDEwMywgCisgICAgMiwgMywgMjQwLCA4NCwgMjQzLCA4MywgMjI0LCAxMDMsIDIsIDMsIDIxNSwgMjQ1LCAyNDMsIDgzLCA5MSwgMiwgMjMxLCAKKyAgICA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgOTEsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgNjEsIDIwNiwgNTQsIDIxOSwgCisgICAgMjQ1LCAyNDUsIDEzMSwgMjE3LCAyMjQsIDIyMywgMjI0LCAyLCAzLCA3MCwgNTUsIDIyMywgMjI0LCAyLCAzLCAyMDYsIAorICAgIDI0NiwgMjEzLCAxNDIsIDIxNywgMjI1LCAzLCAyNDcsIDI0OCwgMjQ2LCAxNSwgMjEyLCAzNCwgMjE3LCAyMjQsIDIyMywgCisgICAgMjI0LCAyLCAyMzEsIDUwLCA0OSwgMTYyLCAyNDYsIDYxLCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgNTAsIDE2MiwgMjQ2LCAKKyAgICA2MSwgNDMsIDIyMywgMjI0LCAyLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUyLCAyNDYsIAorICAgIDYxLCA0MywgMjQzLCAxMzcsIDU0LCA5MSwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDIzMSwgNTAsIDIwOCwgCisgICAgODUsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCAyMDgsIDg1LCAyMzAsIDI1MywgMjE3LCAyMjQsIDIxNiwgNiwgMjMwLCAyNTMsIAorICAgIDIxNywgMjI0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTE2LCAyNDUsIDIyMywgMjUwLCAyNDUsIDIxOSwgMjQ1LCAKKyAgICAyNDUsIDE3MSwgMjMwLCAyNDUsIDMsIDI0MywgODUsIDIwNiwgMjM4LCAzLCAyMjQsIDEwMywgNTQsIDIwNiwgMjM4LCAzLCAKKyAgICAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIxOSwgMjAzLCAyMzAsIDI0NSwgMywgMjI3LCAzNywgMjUwLCAyMjYsIDIwNiwgCisgICAgMjM4LCAzLCAyMjcsIDM3LCAyMTksIDI0NCwgMjA2LCAyMzgsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyMDYsIAorICAgIDIzNywgMjA2LCAyMzgsIDg3LCAyNDgsIDIzMSwgODcsIDIzMCwgMjQ0LCAyMzAsIDI0NSwgODcsIDI0OCwgMjMxLCA4NywgCisgICAgMjA2LCAyMzcsIDIwNiwgMjM4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDMsIDIwNiwgMjM3LCAyMzAsIDI0NSwgMjQ4LCAKKyAgICAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMzAsIDI0NCwgMjQ2LCAxNiwgMjA2LCAyMzgsIDMsIDIxMywgMTIzLCAyNDYsIDE2LCAKKyAgICAyMzAsIDI0NSwgMywgMjEzLCAxMjMsIDUyLCA1MSwgMjMwLCAyNDQsIDUyLCA1MSwgMjA2LCAyMzcsIDI0NiwgMTYsIDIwNiwgCisgICAgMjM4LCAzLCAyMTMsIDEyNCwgMjUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjcsIDM3LCAyNSwgMywgNzAsIDU1LCAyMjcsIDM3LCAKKyAgICAyMTksIDI0NSwgMywgNzAsIDU1LCA1MiwgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMjcsIDM3LCAyMTksIDI0NCwgMTIwLCAKKyAgICAyMzAsIDI0NiwgMjI3LCAzNywgMjUwLCAyMjYsIDEyMCwgMjMwLCAyNDYsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMTIsIDQzLCAKKyAgICAyMjgsIDgsIDIxOSwgMjQ0LCAyMTIsIDQzLCAyMjgsIDgsIDI1MCwgMjI2LCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyMDAsIAorICAgIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIDM3LCAyNSwgMywgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCisgICAgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyNSwgMywgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCisgICAgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyNSwgMywgMjA2LCAKKyAgICAyNDYsIDIyNywgMzcsIDI1LCAzLCA1MiwgMjA2LCAyNDYsIDUsIDIwNiwgNTEsIDMsIDIwNiwgMjQ2LCAyMjcsIDM3LCAyMTksIAorICAgIDI0NSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyMTksIDI0NSwgMywgNTIsIDIwNiwgMjQ2LCAyMDIsIDE2MCwgMjIxLCAKKyAgICAxNjQsIDI0MywgOTQsIDI1MCwgMTg0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTc5LCAyNTAsIDE4NCwgMjQxLCAzNSwgCisgICAgMiwgMywgNzAsIDU2LCAyMzUsIDE1NCwgMywgNzAsIDU1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDUyLCAKKyAgICA4MCwgOTUsIDIwOCwgNzAsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMywgMjA4LCA3MCwgODAsIDk1LCAyMDgsIDIyOCwgMjE5LCAKKyAgICAyNTUsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDIxOSwgMjU1LCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgMjEyLCAxMjksIDIyNCwgCisgICAgMTAzLCAyMTIsIDEyOCwgMjQ1LCAyMTAsIDMsIDcwLCA1NSwgMjQxLCAzNSwgMywgMjUwLCA1OSwgMjUxLCA3LCAxNTYsIAorICAgIDIwOCwgMTczLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjUwLCAxNTEsIDE1NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDEsIAorICAgIDM1LCAyLCA4NywgOTEsIDU0LCA5MSwgMiwgODcsIDI0MSwgMzUsIDU0LCAyNDEsIDM1LCAyLCA4NywgMjA4LCAyMjgsIDIxOSwgCisgICAgMjU0LCA1MiwgMjQ1LCAyNDMsIDI0MSwgMzYsIDEyMCwgMjQ1LCAyMDMsIDI0MSwgMzUsIDIxMiwgMTQzLCAxMjYsIDI0NSwgCisgICAgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMjQxLCAzNSwgMiwgMywgMTIwLCAxODcsIDg3LCAyNSwgMTIwLCAxODcsIDU2LCAKKyAgICAyNDEsIDMwLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMjI3LCAxNzksIDMsIDI0NiwgNjIsIDIzMSwgNiwgMjM3LCAyNDcsIDMsIAorICAgIDI0NiwgNjIsIDIzMSwgNiwgMjI3LCAxNzksIDMsIDIxNywgNDcsIDEzMSwgNTUsIDIzNywgMjQ3LCAzLCAyMTcsIDQ3LCAKKyAgICAxMzEsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgCisgICAgNTksIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIAorICAgIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDIzMSwgNiwgMjI3LCAxNzksIDIxOSwgCisgICAgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAKKyAgICAyMDgsIDE3MywgMywgNzAsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAKKyAgICA4NywgMjE2LCAxNiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgODcsIDIyNywgCisgICAgMjIyLCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMjcsIAorICAgIDE3OSwgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNSwgMjEyLCAxMTgsIDIyMSwgMTY2LCAKKyAgICAxNTYsIDEzNSwgMjI3LCAxNzksIDI1LCAyMjEsIDE2NiwgMjUwLCAxNTIsIDIzNywgMjQ3LCAyNSwgMjIxLCAxNjYsIDI1MCwgCisgICAgMTUyLCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDE1NiwgODcsIDIzNywgMjQ2LCAyMzcsIDI0NywgODcsIDI0MiwgNzYsIAorICAgIDE1NiwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjQxLCAzNiwgMjM3LCAyNDcsIAorICAgIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgMjEyLCAxMjksIDg3LCAyMzcsIDI0NiwgCisgICAgMjM3LCAyNDcsIDg3LCAyMTIsIDEyOSwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIzNywgMjQ3LCA4NywgMjQyLCAKKyAgICA3NiwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgCisgICAgMjEyLCA1OSwgMTU2LCA4NywgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIDI0NywgODcsIDIxMiwgNTksIAorICAgIDE1NiwgODcsIDIyNywgMTc5LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKKyAgICAyNDUsIDIyNywgMTc4LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgNTksIDE1NiwgCisgICAgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OSwgMywgNzAsIDIzMSwgNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKKyAgICAyNDUsIDIzNywgMjQ3LCAzLCA3MCwgMjMxLCA2LCAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIAorICAgIDI0MiwgNzYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIAorICAgIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAyNDIsIDc2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAKKyAgICAyNDYsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgCisgICAgMTI5LCA4NywgMjI3LCAxNzksIDg3LCAyNDEsIDM1LCA1NCwgMjEyLCAxMjksIDg3LCAyMzcsIDI0NywgODcsIDI0MSwgMzUsIAorICAgIDU0LCA1MiwgMjIyLCAyMjEsIDIyNywgMTc4LCA1MiwgMjIyLCAyMjEsIDIzNywgMjQ2LCA1MiwgMjIyLCAyMjEsIDIyNywgCisgICAgMTc5LCAzLCAyMDYsIDI0NiwgMjM3LCAyNDcsIDIxOSwgMjAwLCAyMjcsIDE3OCwgMjM3LCAyNDcsIDI0OCwgMTEwLCAyMjcsIAorICAgIDE3OCwgMjI3LCAxNzksIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg3LCAyMzcsIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIAorICAgIDI0NSwgODcsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIzNywgCisgICAgMjQ3LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgMzUsIDIwOSwgOTcsIAorICAgIDIyOCwgNiwgMjA5LCA5NywgMjEyLCAzNSwgMjA5LCA5OCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjgsIDYsIDIwOSwgOTgsIAorICAgIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAzNSwgMiwgMywgMjQ3LCAxNzAsIDU1LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKKyAgICAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjQxLCAzNSwgNTQsIDIxNywgMjUwLCA4NywgMjEyLCAxMTgsIAorICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgCisgICAgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDIzNywgODcsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAxNTYsIAorICAgIDEzNSwgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxNywgMjUwLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgCisgICAgMjEwLCAyMzcsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCAKKyAgICAyMTAsIDIzNywgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCA1MiwgMjE3LCAyNDksIDUyLCAyMTAsIDIzNiwgCisgICAgMjEwLCAyNDUsIDMsIDI0MywgODUsIDIxMCwgMTk4LCAzLCAyNDMsIDg1LCAyMTAsIDI0NSwgMywgOTEsIDIsIDU2LCAyMTAsIAorICAgIDE5OCwgMywgOTEsIDIsIDU2LCAyMTAsIDI0NSwgMywgMjIzLCAyMjQsIDIsIDU2LCAyMTAsIDE5OCwgMywgMjIzLCAyMjQsIAorICAgIDIsIDU2LCAyMTAsIDI0NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMTk4LCA3NiwgCisgICAgMjE5LCAyNDUsIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjEwLCAyNDUsIDc2LCA4NywgMjQxLCAzNSwgNTQsIDIxMCwgCisgICAgMTk4LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NSwgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMTk4LCAKKyAgICA3NiwgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAorICAgIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDE5OCwgCisgICAgNzYsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDUxLCA0OSwgMTcxLCA5OCwgMjE5LCAyNTQsIDUxLCA1MCwgMTcxLCA5OCwgCisgICAgMjE5LCAyNTQsIDI0NiwgMTYsIDIxMCwgMjQ0LCAyNDYsIDE2LCAyMTAsIDE5NywgMjQ2LCAxNiwgMjEwLCAyNDUsIDIxOSwgCisgICAgMjQ1LCAxNTYsIDEzNSwgMjQ2LCAxNiwgMjEwLCAxOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDg3LCAyMTAsIAorICAgIDE5NywgMjEwLCAxOTgsIDg3LCAyMTAsIDI0NCwgMjEwLCAyNDUsIDg3LCAyMTAsIDI0NCwgMjEwLCAxOTgsIDg3LCAyMTAsIAorICAgIDE5NywgMjEwLCAxOTgsIDI0OCwgMTEwLCAyMTAsIDI0NCwgMjEwLCAxOTgsIDI0OCwgMTEwLCAyNSwgMjMwLCA5OCwgMjQ3LCAKKyAgICAxMzcsIDI0NCwgMTQ1LCAzLCAyMTAsIDI0NCwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDI0MiwgNjgsIDIxOCwgMTA0LCAzLCAKKyAgICAyMDksIDE3NywgMjA4LCAxNDQsIDIwOCwgMTAyLCAyMzAsIDI0NCwgMjM5LCAxNjAsIDIyMSwgMTgxLCAyMTIsIDIyOCwgNDksIAorICAgIDIxMCwgMywgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDMsIDIxOCwgMjM0LCAzLCAxOTQsIAorICAgIDgwLCAyNDgsIDIzMSwgMjA4LCA3MCwgNTAsIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA0OSwgMjA3LCAxNzMsIDgwLCAKKyAgICAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgMTYzLCAyNDQsIAorICAgIDE0NSwgMjM5LCAxMjAsIDQ5LCAyMjQsIDI0NSwgNzYsIDUyLCAyMDYsIDM4LCAyMTIsIDIyOCwgMTIxLCAyMTAsIDQsIDMsIAorICAgIDIxOSwgMjAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDMsIDIwNiwgMjQ2LCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDg3LCAKKyAgICAyMTIsIDIyOCwgMTIxLCAyMTAsIDMsIDUyLCAxMjEsIDIxMCwgMywgNTIsIDExMiwgMjEwLCAzLCA1MiwgMjExLCAzMiwgCisgICAgMjIxLCAxNjYsIDU0LCAyMTYsIDczLCA1MiwgMjExLCAzMiwgMjIxLCAxNjYsIDU0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAorICAgIDI0MywgMTQ0LCAzLCAyMTYsIDczLCAyMjIsIDIzMywgMjEyLCA1NywgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NSwgCisgICAgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NiwgMTIxLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU2LCAyMTksIDgyLCAzLCAKKyAgICAyMzYsIDEwNiwgOTUsIDIxOSwgODIsIDMsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDgsIAorICAgIDY3LCAyMTYsIDExNywgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDIwOCwgNzAsIDI0NSwgMjQzLCAKKyAgICAyMTksIDI1NCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIyNywgMTc4LCAyMDgsIDcwLCAyMjIsIDIyMSwgMjM3LCAyNDYsIDI0MiwgCisgICAgNzYsIDIxMiwgNTksIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MiwgNzYsIDIxMiwgNTksIDIzNywgMjQ3LCAKKyAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIxMiwgMSwgMjQ4LCA2NywgMjE2LCAxMTcsIDIyOCwgOCwgMjA4LCA3MCwgCisgICAgODAsIDI0OCwgMjMxLCAyMTksIDI1NCwgNTIsIDIxMiwgMSwgMjE5LCAyNTQsIDYxLCA4MCwgMTQyLCAyMjMsIDE2MiwgNjEsIAorICAgIDgwLCAxNDIsIDE1MywgMjQxLCAxNzYsIDYxLCA0NywgMTUzLCAyMDQsIDQ2LCA2MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCisgICAgNjEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNjEsIDQ3LCA0OSwgNTAsIDYxLCA0NywgOTYsIDYyLCA0NywgMTc3LCA2MiwgCisgICAgNDcsIDE4MywgNjIsIDQ3LCAxNTMsIDI0MSwgMTc2LCA2MiwgNDcsIDE1MywgMjA0LCA0NiwgNjIsIDQ3LCAyMTEsIDIzOCwgCisgICAgMjQxLCAxNzYsIDYyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYyLCA0NywgNDksIDUwLCA2MiwgNDcsIDExMiwgMTIxLCAKKyAgICA2MiwgNDcsIDg2LCA1MywgMywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCA1MywgMywgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgCisgICAgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA5NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgNTEsIDMsIDIwOCwgMTQ1LCAKKyAgICAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyNDcsIDI0OCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyNDMsIAorICAgIDIyOCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjI2LCAyNTEsIDQ5LCAyNDMsIDIyOCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgCisgICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCAyMDgsIAorICAgIDE0NSwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgMjQyLCA4MywgMjExLCAKKyAgICAxNzcsIDYyLCAyMjgsIDgsIDIxMSwgMTc3LCA2MSwgMjI4LCA4LCAyMTEsIDE3NywgNjIsIDIwNSwgMjQyLCA1LCAyMTEsIAorICAgIDE3NywgNjEsIDIwNSwgMjQyLCA1LCAyMTEsIDE3NywgNjIsIDIxOCwgMjU1LCA2MSwgMjE4LCAyNTUsIDYxLCAyMzcsIDE3LCAKKyAgICA2MiwgMjM3LCAxNywgMjM2LCAxMDYsIDYyLCAyMzcsIDE3LCA2MiwgMjI4LCA4LCAyNDYsIDYxLCA2MiwgMjI1LCAxMCwgCisgICAgMjQzLCAyMjEsIDYxLCAyMjUsIDEwLCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDIyNiwgMjQ2LCA2MSwgMjI1LCAxMCwgMjI2LCAKKyAgICAyNDYsIDYyLCA1LCAyNDMsIDIyMSwgNjIsIDUsIDIyNiwgMjQ2LCA2MSwgNSwgMjI2LCAyNDYsIDYyLCAyMzYsIDEwNiwgCisgICAgMjQxLCAxMDksIDYxLCAyMzYsIDEwNiwgMjQxLCAxMDksIDYyLCA4MCwgMjQxLCAxMDksIDYxLCA4MCwgMjQxLCAxMDksIDQ5LCAKKyAgICA1MywgMywgNSwgMjQ2LCA2MSwgMTI2LCA5NiwgMjUwLCA5MSwgNDksIDUzLCAzLCA0MywgMjE4LCA3NiwgMTYzLCA5NiwgCisgICAgMjExLCAxNzEsIDQ3LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDUyLCA4MCwgCisgICAgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCAyMDcsIDEzNCwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCAKKyAgICA5NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDk2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgOTYsIDUzLCAzLCAKKyAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDk2LCAyMDcsIDEzNCwgNTMsIAorICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCisgICAgNTMsIDIwOSwgMjUsIDIwMywgMTk2LCAyMDQsIDc2LCA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIyNywgMjIyLCAyNDEsIDM1LCAKKyAgICAyLCA4NywgOTYsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxNiwgCisgICAgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDg2LCA1MywgMjA5LCAyNSwgMjM3LCAyNDYsIDg2LCA1MywgMjA5LCAyNSwgMjEwLCAKKyAgICAxOTcsIDk2LCAyMTcsIDU4LCA0NywgODYsIDIxNywgNTgsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKKyAgICA4NiwgNDcsIDg2LCA1MywgODcsIDIxNiwgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIAorICAgIDk2LCA0NywgOTYsIDUzLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgOTYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgCisgICAgMjU0LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDE4MywgMjA4LCA4NCwgMjAyLCAzMCwgNDcsIAorICAgIDIxMiwgMjI4LCAyMTIsIDU5LCAxNTMsIDQ3LCAyMTIsIDIyOCwgMjQ5LCAyMiwgMjExLCAyMzgsIDQ3LCA2MSwgMjI1LCAxMCwgCisgICAgMjExLCA5NCwgNjIsIDUsIDIxMSwgOTQsIDYxLCA1LCAyMTEsIDk0LCA2MiwgMjE2LCAxMSwgMjE4LCAyNTUsIDYxLCAyMTYsIAorICAgIDExLCAyMTgsIDI1NSwgNzksIDIyOCwgOCwgMjQ2LCA2MSwgNzksIDIxOSwgMjA1LCAzLCAyMTksIDIwNSwgMjMxLCA2LCA3OSwgCisgICAgMjQ2LCA2MiwgMywgMjQ2LCA2MiwgMjMxLCA2LCA3OSwgMjQ2LCA2MSwgNzksIDQzLCAyMTQsIDI1NCwgMjEyLCA1OSwgMTUzLCAKKyAgICA1MywgMywgMjM2LCAxMTUsIDIzNywgNjQsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAxMTUsIDIwOSwgMjQ4LCAKKyAgICAyMTIsIDU5LCAxNTMsIDUzLCAzLCAyMzYsIDEwNiwgMjA5LCAyNDgsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAKKyAgICAxMDYsIDIwOSwgMjQ4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgMjEyLCAKKyAgICAyMjgsIDI0OCwgMTE4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAxNTMsIDI0MSwgMTc1LCA5NiwgMjA4LCA4NCwgNDcsIAorICAgIDE3NywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA0NywgMTgzLCAyMDgsIDg0LCA0NywgNDksIDUwLCAyMDgsIDg0LCA0NywgCisgICAgMTEyLCAxMjEsIDIwOCwgODQsIDQ3LCAxNTMsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyMDgsIDg0LCAKKyAgICA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDgsIDg0LCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCA5NiwgCisgICAgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgODYsIDIwOCwgODQsIDI0NCwgMTQzLCAKKyAgICA0NywgMTgzLCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDI0NiwgMTgsIDIwOCwgODQsIDE3MSwgMjQ2LCA2MiwgNDcsIDI1MCwgCisgICAgMTk0LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCA5NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE3NywgMjA4LCAKKyAgICA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMDgsIDg0LCA1MywgCisgICAgMjA4LCAxNzMsIDE0MiwgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTUzLCAyNDEsIDE3NiwgCisgICAgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAKKyAgICAxNDIsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgOTYsIDIwOCwgODQsIDUzLCAzLCAKKyAgICA1MiwgMjM2LCAxMDYsIDk1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCA4NiwgMjA4LCA4NCwgNTMsIAorICAgIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDIzNiwgMTA2LCAKKyAgICAyMTAsIDExLCAyMjksIDE1MSwgODAsIDIxMCwgMTEsIDIyOSwgMTUxLCA5NiwgMjA4LCA4NCwgNTMsIDExNSwgODYsIDIwOCwgCisgICAgODQsIDQ3LCAxNzcsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE4MywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA1MywgMTE1LCAKKyAgICA5NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNTMsIDk2LCA3NiwgMTc3LCAyMDgsIDg0LCA0NywgOTYsIDIwOCwgODQsIAorICAgIDIxOSwgMTQ2LCAyNTAsIDkxLCAxNzcsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA4NiwgMjA4LCA4NCwgMjE5LCAKKyAgICAxNDYsIDI1MCwgOTEsIDE4MywgMjA4LCA4NCwgMjE5LCAxNDYsIDI1MCwgOTEsIDk2LCA2MiwgNDMsIDYxLCA0NywgMTc3LCAKKyAgICA2MiwgNDMsIDYxLCA0NywgODYsIDYyLCA0MywgNjEsIDQ3LCAxODMsIDYyLCA0MywgNjEsIDQ3LCAyNTAsIDE5NCwgMjA4LCAKKyAgICA4NCwgNTAsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjQ3LCAyNDgsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgCisgICAgMjA4LCA4NCwgNDksIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjA4LCAxNDUsIDIwNywgOTIsIDQ3LCAyMTYsIAorICAgIDc4LCAyMjcsIDIyMiwgMjE2LCA3OCwgMjE2LCAxNiwgMjIyLCAyMTIsIDIyNywgMjIyLCAyMjIsIDIxMiwgMjE2LCAxNiwgCisgICAgMjM5LCAxNDcsIDI0NSwgMTY2LCAyNTAsIDkyLCAyNDYsIDU3LCAyNTAsIDE5MywgODYsIDYyLCA0NywgMjA5LCAzMSwgMjA4LCAKKyAgICAxNDMsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIDMxLCAyMTYsIDEyLCAxNzcsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgCisgICAgMzEsIDIwOCwgMTQzLCA4NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjI3LCAyMTgsIDE4MywgMjQxLCAzMSwgMjUwLCAKKyAgICA5NCwgNjIsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgODYsIDI0MSwgMzEsIAorICAgIDI1MCwgOTQsIDYyLCAxODMsIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIAorICAgIDIyNywgMjEyLCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIDE3NywgMjA4LCA4NCwgNTMsIAorICAgIDMsIDE2MywgMjA4LCAyMTEsIDIyNywgMjEyLCAxNzcsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIAorICAgIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDg2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAKKyAgICAyMDgsIDIxMSwgMjA2LCAyMTIsIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgODYsIDIwOCwgCisgICAgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyNDIsIDY4LCA2MiwgMjQ1LCA4NiwgMTgzLCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCAKKyAgICA4NiwgMTgzLCAyNSwgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgCisgICAgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgOTYsIDI1LCAxNzcsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxNzcsIDQ3LCA2MiwgCisgICAgMjQ1LCA4NiwgOTYsIDI1LCAxODMsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxODMsIDQ3LCAyMTYsIDU1LCA1MywgMTIxLCAKKyAgICAyMjcsIDIyMiwgMjE2LCA1NSwgNTMsIDEyMSwgMjE2LCAxNiwgMjE2LCA1NSwgNTMsIDExMiwgMjI3LCAyMjIsIDIxNiwgNTUsIAorICAgIDUzLCAxMTIsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCA0OSwgMjA2LCAyMjQsIDIxNiwgNTUsIDUzLCA1MCwgMjA2LCAyMjQsIAorICAgIDIxNiwgNTUsIDUzLCA0OSwgMjQyLCA3MCwgMjE2LCA1NSwgNTMsIDUwLCAyNDIsIDcwLCAxNzcsIDYxLCA1MywgMjM5LCAKKyAgICAxMjAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgMTQyLCAxMTIsIDI1MCwgOTUsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgCisgICAgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMTU3LCAyMDMsIDE5NiwgNDMsIDIwMywgMTk2LCA0MywgMjYsIDIwMywgMTk2LCAKKyAgICA2MiwgNTEsIDI0NiwgMjE1LCA2MiwgMjQzLCAyMjIsIDI0NiwgMjE1LCAyMDcsIDE3NCwgNjIsIDIxOCwgMjU1LCAyMzYsIAorICAgIDEwNiwgNjIsIDIyMCwgODEsIDYyLCAyMjAsIDgxLCA2MiwgMjI1LCAxMCwgMjA2LCAyMjMsIDIwOCwgODYsIDI0NiwgMjE1LCAKKyAgICA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMjcsIDIxNywgMjA4LCA4NiwgCisgICAgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMTYsIDExLCAyMDgsIDg2LCAyNDYsIDIxNSwgMjA4LCAxNDUsIDE2MiwgNjIsIAorICAgIDI0NiwgNjEsIDI0NywgMjQ4LCAxNjIsIDYyLCAyNDYsIDYxLCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgCisgICAgMjE1LCAxOTgsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyNDUsIDgyLCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIAorICAgIDI0NSwgODIsIDIxNSwgMTk4LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDI0NSwgODIsIDUxLCAyMTgsIDM0LCAyMzEsIDMxLCAKKyAgICAyMDYsIDI1MCwgNTQsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE3NywgMjA3LCAxMzQsIDUzLCAKKyAgICAzLCAyMDgsIDg2LCAyNTAsIDkzLCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxODMsIDIwNywgCisgICAgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgwLCA2LCAxLCAyNTAsIDAsIDE4MCwgNiwgMSwgMjQ3LCAxODEsIAorICAgIDE4MCwgNiwgMSwgMjA2LCA1MywgMTgwLCA2LCAxLCAyMzgsIDUwLCAxODAsIDYsIDEsIDI0MywgMTA4LCAxODAsIDYsIDEsIAorICAgIDIwMywgMjQsIDE4MCwgNiwgMSwgMjAyLCA2NCwgMTgwLCA2LCAxLCAyNDEsIDI1MCwgMTgwLCA2LCAxLCAyMDIsIDg5LCAKKyAgICAxODAsIDYsIDEsIDIzMCwgMTg4LCAxODAsIDYsIDEsIDgxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA3NSwgMTgwLCA2LCAxLCAKKyAgICAyNDMsIDEyOCwgMTgwLCA2LCAxLCAyMzAsIDEwLCAxODAsIDYsIDEsIDIyNywgNzksIDE4MCwgNiwgMSwgMjIzLCAxNjcsIAorICAgIDE4MCwgNiwgMSwgMjIzLCA2OSwgMTgwLCA2LCAxLCAyMjAsIDIwLCAxODAsIDYsIDEsIDIxOCwgNTYsIDE4MCwgNiwgMSwgCisgICAgMjE1LCAyNDQsIDE4MCwgNiwgMSwgMjEyLCA0MSwgMTgwLCA2LCAxLCAyMDcsIDE2MSwgMTgwLCA2LCAxLCAyMDcsIDEwLCAKKyAgICAxODAsIDYsIDEsIDIzOSwgMTIzLCAxODAsIDYsIDEsIDIzNywgMjMsIDE4MCwgNiwgMSwgMjE5LCAyMTcsIDE4MCwgNiwgMSwgCisgICAgMjE5LCAzNCwgMTgwLCA2LCAxLCAyMTIsIDIwMiwgMTgwLCA2LCAxLCAyMDcsIDI1NSwgMTgwLCA2LCAxLCAyNDYsIDEwNCwgCisgICAgMTgwLCA2LCAxLCAyMTMsIDkwLCAxODAsIDYsIDEsIDIwMywgMzAsIDE4MCwgNiwgMSwgMjAzLCAzMiwgMTgwLCA2LCAxLCAKKyAgICAyMDMsIDY0LCAxODAsIDYsIDEsIDIxMSwgMjA0LCAxNTIsIDE4MCwgNiwgMSwgMjAyLCAyMTMsIDE4MCwgNiwgMSwgNSwgCisgICAgMjAyLCAxODMsIDE4MCwgNiwgMSwgNSwgMjAyLCAxODQsIDMsIDIwOSwgMjQ4LCAxODAsIDYsIDEsIDIwMiwgMjQ3LCAxODAsIAorICAgIDYsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCA2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA2LCAxLCAKKyAgICAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjM5LCAyMzUsIDE4MCwgNiwgMSwgMjMwLCAxODYsIAorICAgIDE4MCwgNiwgMSwgMjEyLCAyMDEsIDE4MCwgNiwgMSwgMjA4LCA2MCwgNjMsIDE4MCwgNiwgMSwgMjI3LCAyNTIsIDIyMywgCisgICAgMTY3LCAxODAsIDUsIDEsIDI1MCwgMCwgMTgwLCA1LCAxLCAyNDcsIDE4MSwgMTgwLCA1LCAxLCAyMDYsIDUzLCAxODAsIDUsIAorICAgIDEsIDIzOCwgNTAsIDE4MCwgNSwgMSwgMjQzLCAxMDgsIDE4MCwgNSwgMSwgMjAzLCAyNCwgMTgwLCA1LCAxLCAyMDIsIDY0LCAKKyAgICAxODAsIDUsIDEsIDI0MSwgMjUwLCAxODAsIDUsIDEsIDIwMiwgODksIDE4MCwgNSwgMSwgMjMwLCAxODgsIDE4MCwgNSwgMSwgCisgICAgODEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIDc1LCAxODAsIDUsIDEsIDI0MywgMTI4LCAxODAsIDUsIDEsIDIzMCwgMTAsIAorICAgIDE4MCwgNSwgMSwgMjI3LCA3OSwgMTgwLCA1LCAxLCAyMjMsIDE2NywgMTgwLCA1LCAxLCAyMjMsIDY5LCAxODAsIDUsIDEsIAorICAgIDIyMCwgMjAsIDE4MCwgNSwgMSwgMjE4LCA1NiwgMTgwLCA1LCAxLCAyMTUsIDI0NCwgMTgwLCA1LCAxLCAyMTIsIDQxLCAKKyAgICAxODAsIDUsIDEsIDIwNywgMTYxLCAxODAsIDUsIDEsIDIwNywgMTAsIDE4MCwgNSwgMSwgMjM5LCAxMjMsIDE4MCwgNSwgMSwgCisgICAgMjM3LCAyMywgMTgwLCA1LCAxLCAyMTksIDIxNywgMTgwLCA1LCAxLCAyMTksIDM0LCAxODAsIDUsIDEsIDIxMiwgMjAyLCAKKyAgICAxODAsIDUsIDEsIDIwNywgMjU1LCAxODAsIDUsIDEsIDI0NiwgMTA0LCAxODAsIDUsIDEsIDIxMywgOTAsIDE4MCwgNSwgMSwgCisgICAgMjAzLCAzMCwgMTgwLCA1LCAxLCAyMDMsIDMyLCAxODAsIDUsIDEsIDIwMywgNjQsIDE4MCwgNSwgMSwgMjExLCAyMDQsIAorICAgIDE1MiwgMTgwLCA1LCAxLCAyMDIsIDIxMywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4MywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4NCwgCisgICAgMywgMjA5LCAyNDgsIDE4MCwgNSwgMSwgMjAyLCAyNDcsIDE4MCwgNSwgMSwgMjMwLCAyMjksIDUsIDIwMiwgMTgzLCAxODAsIAorICAgIDUsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDUsIDEsIDIzMCwgMjI5LCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAKKyAgICAxLCAyMzksIDIzNSwgMTgwLCA1LCAxLCAyMzAsIDE4NiwgMTgwLCA1LCAxLCAyMTIsIDIwMSwgMTgwLCA1LCAxLCAyMDgsIAorICAgIDYwLCA2MywgMTgwLCA1LCAxLCAyMjcsIDI1MiwgMjIzLCAxNjcsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTQyLCA4LCAKKyAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDYsIDEsIAorICAgIDIxOSwgMTg1LCAzLCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgMzQsIDMsIDk1LCA4LCA1LCAKKyAgICAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMzcsIAorICAgIDE3MiwgMywgMjQ0LCAyMCwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ0LCAKKyAgICAyMCwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA2LCAKKyAgICAxLCAyNTEsIDIsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCAxMTMsIDgsIDYsIDEsIDIwNywgMTc0LCA2MywgOCwgNiwgMSwgCisgICAgMjA3LCAxNzQsIDI1MSwgMiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDUwLCAxMTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAKKyAgICAxMTMsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyNDUsIDk1LCA4LCA2LCAxLCAKKyAgICAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAyMDksIDI0NiwgMjE4LCAxOTIsIDgsIDUsIAorICAgIDEsIDE4OCwgMywgMjIxLCAxNjMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKKyAgICAxNTgsIDMsIDEyNCwgMjE1LCAyNTMsIDIzMSwgNiwgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDc0LCA4LCAyMTAsIDI0NiwgNSwgCisgICAgMSwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCAKKyAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4NCwgNiwgMSwgMjUxLCAyNCwgODQsIDUsIDEsIAorICAgIDI1MSwgMjQsIDg0LCA2LCAxLCAyMDUsIDIyNywgODQsIDUsIDEsIDIwNSwgMjI3LCA4NCwgNiwgMSwgMjM4LCAyMzUsIDg0LCAKKyAgICA1LCAxLCAyMzgsIDIzNSwgODQsIDYsIDEsIDI0NCwgMTgwLCA4NCwgNSwgMSwgMjQ0LCAxODAsIDg0LCA2LCAxLCAyNDEsIAorICAgIDE0NCwgODQsIDUsIDEsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjExLCAyNDMsIDg0LCA1LCAxLCAyMTEsIDI0MywgODQsIDYsIAorICAgIDEsIDIwMiwgOTksIDg0LCA1LCAxLCAyMDIsIDk5LCA4NCwgNiwgMSwgMjM3LCA4MCwgODQsIDUsIDEsIDIzNywgODAsIDg0LCAKKyAgICA2LCAxLCAyMDksIDcyLCA4NCwgNSwgMSwgMjA5LCA3MiwgODQsIDYsIDEsIDIzNSwgMTY4LCA4NCwgNSwgMSwgMjM1LCAxNjgsIAorICAgIDg0LCA2LCAxLCAyMjksIDI1MiwgODQsIDUsIDEsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjI3LCAyNDgsIDg0LCA1LCAxLCAKKyAgICAyMjcsIDI0OCwgODQsIDYsIDEsIDIyNCwgMTU1LCA4NCwgNSwgMSwgMjI0LCAxNTUsIDg0LCA2LCAxLCAyMjIsIDEwMCwgODQsIAorICAgIDUsIDEsIDIyMiwgMTAwLCA4NCwgNiwgMSwgMjI4LCAyMjUsIDg0LCA1LCAxLCAyMjgsIDIyNSwgODQsIDYsIDEsIDc4LCA4NCwgCisgICAgNSwgMSwgNzgsIDg0LCA2LCAxLCAyMTgsIDE2NywgODQsIDUsIDEsIDIxOCwgMTY3LCA4NCwgNiwgMSwgMjE1LCAyMjcsIDg0LCAKKyAgICA1LCAxLCAyMTUsIDIyNywgODQsIDYsIDEsIDIxMiwgMTMyLCA4NCwgNSwgMSwgMjEyLCAxMzIsIDg0LCA2LCAxLCAyMDksIAorICAgIDIwNywgODQsIDUsIDEsIDIwOSwgMjA3LCA4NCwgNiwgMSwgMjA3LCAzOSwgODQsIDUsIDEsIDIwNywgMzksIDg0LCA2LCAxLCAKKyAgICAyNDAsIDI2LCA4NCwgNSwgMSwgMjQwLCAyNiwgODQsIDYsIDEsIDIyOSwgMTIyLCA4NCwgNSwgMSwgMjI5LCAxMjIsIDg0LCAKKyAgICA2LCAxLCAyMTcsIDIwMiwgODQsIDUsIDEsIDIxNywgMjAyLCA4NCwgNiwgMSwgMjIwLCAxMiwgODQsIDUsIDEsIDIyMCwgMTIsIAorICAgIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyNTEsIDMwLCA4NCwgNiwgMSwgMzgsIAorICAgIDg0LCAyNTEsIDU5LCA4NCwgNSwgMSwgMzgsIDg0LCAyNTEsIDU5LCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgCisgICAgNSwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyOSwgMjUyLCA4NCwgNSwgMSwgMjQzLCAKKyAgICAyMjYsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQzLCAyMjYsIDIyMiwgCisgICAgMTAwLCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNiwgCisgICAgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNiwgMSwgMjE0LCAyNDYsIDg0LCA1LCAKKyAgICAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMjgsIDIxMywgMzUsIAorICAgIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA1LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA2LCAxLCAzOCwgODQsIAorICAgIDI0MSwgNywgODQsIDUsIDEsIDM4LCA4NCwgMjQxLCA3LCA4NCwgNiwgMSwgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA1LCAxLCAKKyAgICAyNTEsIDQzLCAyMjksIDEyNywgODQsIDYsIDEsIDI0MywgMjI2LCAyMzYsIDEwNywgODQsIDUsIDEsIDI0MywgMjI2LCAyMzYsIAorICAgIDEwNywgODQsIDYsIDEsIDM4LCA4NCwgMjM2LCAxMDcsIDg0LCA1LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNiwgMSwgCisgICAgMzgsIDg0LCAxNTIsIDg0LCA1LCAxLCAzOCwgODQsIDE1MiwgODQsIDYsIDEsIDIyOCwgMTMwLCAxNTIsIDg0LCA1LCAxLCAKKyAgICAyMjgsIDEzMCwgMTUyLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgCisgICAgNiwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzgsIAorICAgIDIzMCwgODQsIDUsIDEsIDM4LCA4NCwgMjM4LCAyMzAsIDg0LCA2LCAxLCAzOCwgODQsIDI0MywgMTMxLCA4NCwgNSwgMSwgCisgICAgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDYsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDEsIDg0LCAKKyAgICA2LCAxLCAzOCwgMjIxLCA1NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDYsIDEsIDM4LCAKKyAgICAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDYsIDEsIDM4LCAyMjEsIAorICAgIDU0LCAyMjAsIDI0OCwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjAsIDI0OCwgODQsIDYsIDEsIDM4LCAyMjEsIDU0LCAKKyAgICAyMDQsIDc3LCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIwNCwgNzcsIDg0LCAxNiwgMjMwLCAxOCwgODQsIDE2LCAyMjQsIAorICAgIDE1NiwgMjE1LCAyMjcsIDg0LCAxNiwgMjE4LCAxNjgsIDIxNSwgMjI3LCA4NCwgMTYsIDIxMSwgODUsIDg0LCAxNiwgMjA5LCAKKyAgICAyMDgsIDIxNSwgMjI3LCA4NCwgMTYsIDIyOSwgMTIzLCAyMTUsIDIyNywgODQsIDE2LCAyMTMsIDIsIDIxMiwgMTMyLCA4NCwgCisgICAgNiwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA1LCAxLCAyNDUsIDExMywgMjEzLCAzNSwgODQsIDYsIDEsIDI0NSwgMTEzLCAKKyAgICAyMzgsIDIzMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMzgsIDIzMCwgODQsIDM5LCAyMjIsIDEwMSwgNTUsIDg0LCAzOSwgCisgICAgMjExLCAxOTcsIDI1MCwgNjcsIDg0LCAzOSwgMjExLCAxOTcsIDIyNywgMTg2LCA4NCwgNiwgMSwgMjQ4LCAxNiwgMjI5LCAKKyAgICAxMjcsIDg0LCA1LCAxLCAyNDgsIDE2LCAyMjksIDEyNywgODQsIDM4LCAyMjEsIDU0LCAyMzksIDEwMiwgMjExLCA2MSwgODQsIAorICAgIDM4LCAyMjEsIDU0LCAyNDMsIDE2NywgMjE3LCA0NywgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjMxLCAzMCwgMjE3LCA0NywgCisgICAgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjA2LCA0MCwgMjQzLCAxNDEsIDg0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgODQsIAorICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA4NCwgMjI0LCAyNSwgMjQzLCAxNDEsIDExNCwgNSwgMSwgMjUwLCAyMzEsIDExNCwgNSwgMSwgCisgICAgMjQ4LCAyNDIsIDExNCwgNSwgMSwgMjM4LCAyMzQsIDExNCwgNSwgMSwgMjQzLCA5MywgMTE0LCA1LCAxLCAyNDEsIDkyLCAKKyAgICAxMTQsIDUsIDEsIDIwNSwgMjEzLCAxMTQsIDUsIDEsIDIwMiwgODcsIDExNCwgNSwgMSwgMjA5LCAyMzAsIDExNCwgNSwgMSwgCisgICAgMjMxLCA0OSwgMTE0LCA1LCAxLCAyMzAsIDQsIDExNCwgNSwgMSwgMjI4LCAyLCAxMTQsIDUsIDEsIDIyNSwgMTIyLCAxMTQsIAorICAgIDUsIDEsIDIyMywgNzQsIDExNCwgNSwgMSwgMjIwLCAzMSwgMTE0LCA1LCAxLCAyMTksIDkxLCAxMTQsIDUsIDEsIDIwMiwgCisgICAgNzYsIDExNCwgNSwgMSwgMjE2LCAyMDIsIDExNCwgNSwgMSwgMjE0LCAyNDMsIDExNCwgNSwgMSwgMjA5LCAyMTgsIDExNCwgCisgICAgNSwgMSwgMjA2LCAyNTUsIDExNCwgNSwgMSwgMjE4LCAyMDAsIDExNCwgNSwgMSwgMjI5LCAxMzIsIDExNCwgNSwgMSwgMjM4LCAKKyAgICAxMTAsIDExNCwgNSwgMSwgMjE3LCAxMTEsIDExNCwgNSwgMSwgMjEyLCAyNTUsIDExNCwgNSwgMSwgMjQ2LCAxMjksIDExNCwgCisgICAgNSwgMSwgMjQ3LCA2MSwgMTE0LCA1LCAxLCAyMzAsIDEzMywgMTE0LCA1LCAxLCAyNDYsIDY4LCAxMTQsIDUsIDEsIDI0NiwgCisgICAgMTgzLCAxMTQsIDUsIDEsIDIwMywgMTgwLCAxMTQsIDUsIDEsIDIzMCwgMTQ2LCAxMTQsIDUsIDEsIDIzNywgMTU0LCAxMTQsIAorICAgIDUsIDEsIDIzNywgNjcsIDExNCwgNSwgMSwgMjM2LCAyNTQsIDExNCwgNSwgMSwgMjA0LCA2MiwgMTE0LCA1LCAxLCAyMzcsIAorICAgIDkyLCAxMTQsIDUsIDEsIDIzNiwgMTMyLCAxMTQsIDUsIDEsIDIwMiwgMjQ5LCAxMTQsIDUsIDEsIDI1MSwgOTgsIDIwOCwgCisgICAgMjQ3LCAxLCAxOTgsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNiwgMjA4LCAyNDcsIDEsIDIwMywgMTA1LCAyMDgsIDI0NywgMSwgCisgICAgMjAzLCA5NSwgMjA4LCAyNDcsIDEsIDIwMywgOTMsIDIwOCwgMjQ3LCAxLCAyNDgsIDExMiwgMjUxLCAxNDAsIDIwMywgODgsIAorICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDg4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDMsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMCwgMjA4LCAKKyAgICAyNDcsIDEsIDIwMywgMTAyLCAyMDgsIDI0NywgMSwgMjAzLCAxMDEsIDIwOCwgMjQ3LCAxLCAyMDMsIDE1LCAyMDgsIDI0NywgCisgICAgMSwgMjAzLCA5NywgMjA4LCAyNDcsIDEsIDIwMywgODYsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA4NiwgMjA4LCAKKyAgICAyNDcsIDEsIDIwMywgODMsIDIwOCwgMjQ3LCAxLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAKKyAgICAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyMDMsIDkwLCAyMDgsIDI0NywgCisgICAgMSwgMjAzLCAxMTAsIDIwOCwgMjQ3LCAxLCAyMDMsIDg0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODQsIDIwOCwgCisgICAgMjQ3LCAxLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzMsIDIwOCwgMjQ3LCAxLCAyMDMsIDExLCAKKyAgICAyMDgsIDI0NywgMSwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDI1MSwgNzEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDcsIAorICAgIDIwMCwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDIwMywgODIsIDIwOCwgMjQ3LCAxLCAyMDMsIDgxLCAyMDgsIDI0NywgMSwgCisgICAgMjAzLCA3OCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkyLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzYsIAorICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDc0LCAyMDgsIDI0NywgMSwgMjAyLCAyMTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDcxLCAyMDgsIAorICAgIDI0NywgMSwgMjAzLCA3MCwgMjA4LCAyNDcsIDEsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5NCwgCisgICAgMjA4LCAyNDcsIDEsIDI1MCwgNCwgMjAzLCA5NCwgMjA4LCAyNDcsIDEsIDIwMywgNjksIDIwOCwgMjQ3LCAxLCAyMDMsIDY3LCAKKyAgICAyMDgsIDI0NywgMSwgMjAzLCA2OCwgMjA4LCAyNDcsIDEsIDIwMywgNjYsIDIwOCwgMjQ3LCAxLCAyMDMsIDY1LCAyMDgsIAorICAgIDI0NywgMSwgMjAzLCAxMDQsIDIwOCwgMjQ3LCAxLCAyMDMsIDYzLCAyMDgsIDI0NywgMSwgMjAzLCA2MSwgMjA4LCAyNDcsIAorICAgIDEsIDIwMywgNjAsIDIwOCwgMjQ3LCAxLCAyMDMsIDU4LCAyMDgsIDI0NywgMSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwOSwgCisgICAgMTk5LCAyMDMsIDU1LCAyMDgsIDI0NywgMSwgMjAzLCA1MywgMjA4LCAyNDcsIDEsIDIwMywgNTIsIDIwOCwgMjQ3LCAxLCAKKyAgICAyMDIsIDI0NywgMjA4LCAyNDcsIDY1LCAxLCAyMjgsIDEwMywgODIsIDIwOCwgMjQ3LCAyMTMsIDEzMSwgODIsIDIwOCwgCisgICAgMjQ3LCAxMDksIDIzMCwgOTYsIDMzLCA0LCAyMjcsIDQ4LCAzMywgNCwgMjI0LCA4MSwgMzMsIDQsIDIxNSwgMjI1LCAzMywgCisgICAgNCwgMjEyLCAxMiwgMzMsIDQsIDIxMiwgMjQxLCAzMywgNCwgMjQ4LCAyMiwgMzMsIDQsIDIwOCwgMTcyLCAzMywgNCwgMjQ1LCAKKyAgICAyNTMsIDMzLCA0LCAyMjEsIDE4OSwgMzMsIDQsIDIyMCwgMjMyLCAzMywgNCwgMjM4LCA0NSwgMjIwLCA5NywgMzMsIDQsIAorICAgIDIwMiwgMTYsIDMzLCA0LCAyNDMsIDExMSwgMzMsIDQsIDI0NCwgODksIDMzLCA0LCAyMzAsIDEwMCwgMzMsIDQsIDIwOSwgCisgICAgNDYsIDMzLCA0LCAyNDYsIDExNSwgMzMsIDQsIDIxOCwgMTc5LCAzMywgNCwgMjE4LCA2OCwgMzMsIDQsIDIzOCwgMTI1LCAKKyAgICAzMywgNCwgMjM4LCAxMjEsIDMzLCA0LCAyMzgsIDEyMiwgMzMsIDQsIDIzOCwgMTIzLCAzMywgNCwgMjExLCAxNjQsIDMzLCAKKyAgICA0LCAyMTEsIDExOSwgMzMsIDQsIDIxMSwgMTMyLCAzMywgNCwgMjExLCAxNjMsIDMzLCA0LCAyMTEsIDEzNywgMzMsIDQsIAorICAgIDIxMSwgMTM4LCAzMywgNCwgMjExLCAxMjQsIDMzLCA0LCAyNDcsIDUsIDMzLCA0LCAyNDYsIDI0MCwgMzMsIDQsIDI0NiwgCisgICAgMjQyLCAzMywgNCwgMjQ3LCA0LCAzMywgNCwgMjQ3LCAyLCAzMywgNCwgMjQ3LCAzLCAzMywgNCwgMjQ2LCAyNDEsIDMzLCA0LCAKKyAgICAyMDEsIDIzNSwgMzMsIDQsIDIwMSwgMjEzLCAzMywgNCwgMjAxLCAyMjYsIDMzLCA0LCAyMDEsIDIzNCwgMzMsIDQsIDIwMSwgCisgICAgMjI5LCAzMywgNCwgMjAxLCAyMzAsIDMzLCA0LCAyMDEsIDIxOCwgMzMsIDQsIDI0NywgMCwgMzMsIDQsIDI0NiwgMjQzLCAKKyAgICAzMywgNCwgMjQ2LCAyNDUsIDMzLCA0LCAyNDYsIDI1NSwgMzMsIDQsIDI0NiwgMjUzLCAzMywgNCwgMjQ2LCAyNTQsIDMzLCAKKyAgICA0LCAyNDYsIDI0NCwgMzMsIDQsIDIxNywgMTMsIDMzLCA0LCAyMTcsIDMsIDMzLCA0LCAyMTcsIDksIDMzLCA0LCAyMTcsIAorICAgIDEyLCAzMywgNCwgMjE3LCAxMCwgMzMsIDQsIDIxNywgMTEsIDMzLCA0LCAyMTcsIDgsIDMzLCA0LCAyMjgsIDE0MSwgMzMsIAorICAgIDQsIDIyOCwgMTMzLCAzMywgNCwgMjI4LCAxMzYsIDMzLCA0LCAyMjgsIDE0MCwgMzMsIDQsIDIyOCwgMTM3LCAzMywgNCwgCisgICAgMjI4LCAxMzgsIDMzLCA0LCAyMjgsIDEzNCwgMzMsIDQsIDIwMywgMTQwLCAzMywgNCwgMjAzLCAxMjcsIDMzLCA0LCAyMDMsIAorICAgIDEzNSwgMzMsIDQsIDIwMywgMTM5LCAzMywgNCwgMjAzLCAxMzcsIDMzLCA0LCAyMDMsIDEzOCwgMzMsIDQsIDIwMywgMTM0LCAKKyAgICAzMywgNCwgMjM3LCAxODMsIDMzLCA0LCAyMzcsIDE3MywgMzMsIDQsIDIzNywgMTc2LCAzMywgNCwgMjM3LCAxODIsIDMzLCAKKyAgICA0LCAyMzcsIDE3OCwgMzMsIDQsIDIzNywgMTc5LCAzMywgNCwgMjM3LCAxNzUsIDM5LCAzNiwgMSwgMjQ4LCAxNjIsIDM5LCAKKyAgICAzNiwgMSwgMjA2LCA1NSwgMzksIDM2LCAxLCAyMzgsIDEwNSwgMzksIDM2LCAxLCAyNDQsIDc1LCAzOSwgMzYsIDEsIDIwMiwgCisgICAgNzEsIDM5LCAzNiwgMSwgMjAyLCA5MiwgMzksIDM2LCAxLCAxNzMsIDM5LCAzNiwgMSwgMjQxLCAxMjIsIDM5LCAzNiwgMSwgCisgICAgMjQxLCAxMDMsIDM5LCAzNiwgMSwgMjQxLCA5MiwgMzksIDM2LCAxLCA3OCwgMzksIDM2LCAxLCAyMTksIDM0LCAzOSwgMzYsIAorICAgIDEsIDI0MSwgMjgsIDM5LCAzNiwgMSwgMjQxLCAxNywgMzksIDM2LCAxLCAyMDksIDE4NywgMzksIDM2LCAxLCAxNTIsIDM5LCAKKyAgICAzNiwgMSwgMjA4LCAxNCwgMzksIDM2LCAxLCAyNDYsIDE3MCwgMzksIDM2LCAxLCAyMTMsIDkwLCAzOSwgMzYsIDEsIDIxMywgCisgICAgNDYsIDM5LCAzNiwgMSwgMjM5LCAyMzUsIDM5LCAzNiwgMSwgMjQxLCAxMywgMzksIDM2LCAxLCA2MywgMzksIDM2LCAxLCAKKyAgICAyMzEsIDExMCwgMzksIDM2LCAxLCAyNDMsIDEyOSwgMzksIDM2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzOSwgMzYsIDEsIAorICAgIDIwMywgNjYsIDM5LCAzNiwgMSwgMjAyLCAyMTMsIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDYzLCAzOSwgMzYsIDEsIDIyNywgCisgICAgODYsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAKKyAgICAyMDIsIDE4MywgNTAsIDI1MCwgMjE4LCAyMTAsIDI0MSwgMjI1LCA4OCwgNTAsIDI1MCwgMjE4LCAyNDIsIDgzLCAyMTAsIAorICAgIDI0MSwgMjI1LCA4OCwgNDksIDIxMCwgMjQxLCAxNTUsIDUwLCAyMTAsIDI0MSwgMTU1LCA0OSwgMjQyLCA4MywgMjEwLCAKKyAgICAyNDEsIDE1NSwgNTAsIDI0MiwgODMsIDIxMCwgMjQxLCAxNTUsIDIxNiwgMTg4LCAyMzAsIDI0OSwgMjI1LCA4OCwgMjE2LCAKKyAgICAxODgsIDI0MiwgODMsIDIzMCwgMjQ5LCAyMjUsIDg4LCAyNDIsIDgzLCAyMDgsIDEwMywgMjI1LCA4OCwgNDksIDIwOCwgCisgICAgMTAzLCAxNTUsIDUwLCAyMDgsIDEwMywgMTU1LCAyMTYsIDE4OCwgMjExLCAxNzcsIDQ5LCAyMTYsIDE4OCwgMjIwLCAzMywgCisgICAgMTU1LCA1MCwgMjE2LCAxODgsIDIyMCwgMzMsIDE1NSwgMjQxLCAxNjIsIDI0NSwgMTYzLCAyMTksIDg3LCAyMzksIDE2MSwgCisgICAgMjE5LCA4NywgMjE2LCA3MywgMjM5LCAxNjEsIDIxOSwgODcsIDIzNSwgMjE3LCAyNDIsIDgzLCAyMjAsIDkyLCAxODMsIAorICAgIDI1MCwgMjI3LCAxNzcsIDI1MCwgMjI3LCAyNDIsIDgzLCAyMTYsIDExLCAyNTAsIDIxNywgNTIsIDIyMCwgODksIDIzNSwgCisgICAgMjIwLCAyMzAsIDIzOSwgMjMwLCAyNDcsIDIxOSwgMTM1LCAyNDcsIDIyMywgMjM1LCAyMjEsIDMsIDI0MywgMjMxLCAyMDgsIAorICAgIDIyOCwgMywgMjE1LCAyNTMsIDU1LCA0OSwgMTI0LCAyMTksIDc5LCAxNTUsIDUwLCAxMjQsIDIxOSwgNzksIDE1NSwgMjA4LCAKKyAgICAyMjgsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDMsIDcwLCA1NiwgNDksIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgNTAsIAorICAgIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgMjA4LCAxNDUsIDQ5LCAxNjIsIDE1NSwgMjA4LCAxNDUsIDUwLCAxNjIsIDE1NSwgCisgICAgMjQ3LCAyNDgsIDQ5LCAxNjIsIDE1NSwgMjQ3LCAyNDgsIDUwLCAxNjIsIDE1NSwgNDksIDIxMiwgMTU0LCAxMDYsIDE1NSwgCisgICAgNTAsIDIxMiwgMTU0LCAxMDYsIDE1NSwgNDksIDUyLCAyMTksIDc2LCA1MCwgNTIsIDIxOSwgNzYsIDEyMCwgMTg3LCAxMTUsIAorICAgIDExOCwgNzAsIDIxNywgMTc4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAyMTcsIDE3OCwgMTAzLCAyMzksIDE0NywgNzAsIAorICAgIDIxNywgMTc4LCAyMzksIDIzMywgNzAsIDgyLCAyMTYsIDczLCAyMTcsIDQ3LCA4MiwgODAsIDIwOCwgMjI3LCAyMTUsIDI1MywgCisgICAgMjE4LCA2MiwgMjAzLCAyMzgsIDIxMywgMTMxLCAxMDEsIDI0MywgODUsIDIwNywgMTc0LCAyNDUsIDIzMywgMjE2LCAxODgsIAorICAgIDI0MywgODUsIDIxNiwgMTg4LCAyNDUsIDIzMywgMjA3LCAxNzQsIDIxMywgMTQzLCAyNDQsIDE5NiwgMywgNDksIDIzNywgCisgICAgMjI0LCAyNDQsIDE5NiwgMywgNTAsIDIzNywgMjI0LCAyMDcsIDE3NCwgMjQ0LCAxOTUsIDIwOCwgMTQ1LCAxNjIsIDIxNCwgCisgICAgMTY4LCA1NCwgMjA3LCAxMzUsIDI0NCwgMTQ0LCAyMDksIDMwLCAyNDQsIDE0NCwgMjExLCA3NiwgMjM5LCAxMDIsIDIxMSwgCisgICAgNjEsIDgwLCAyMTIsIDg4LCAyNDMsIDgzLCAyMDQsIDIxLCA4MCwgMjI3LCAxMTQsIDI0NywgNDYsIDUyLCAyMzUsIDIyMCwgCisgICAgMjE2LCA3MywgMjQ1LCAyMzMsIDUyLCAyMjYsIDI1MiwgMjE3LCAzMSwgODIsIDEyLCA0MCwgMjE2LCAxMDAsIDEyLCA0MCwgCisgICAgMjQ2LCAyNiwgMTIsIDQwLCAyMTQsIDE3MSwgMTA1LCAxMiwgNDAsIDIxNCwgMTcxLCAxMDgsIDEyLCA0MCwgMjE0LCAxNzEsIAorICAgIDE0NywgMTIsIDQwLCAyMTgsIDIyOSwgMTIsIDQwLCAyNDcsIDIzMywgMTIsIDQwLCAyMTAsIDgsIDEyLCA0MCwgMjI5LCAzNCwgCisgICAgMTA1LCAxMiwgNDAsIDIyOSwgMzQsIDEwOCwgMTIsIDQwLCAyNDMsIDEzOCwgMTIsIDQwLCAyMTQsIDE3NSwgMTIsIDQwLCA1LCAKKyAgICAxMDUsIDEyLCA0MCwgNSwgMTA4LCAxMiwgNDAsIDIyOCwgMjMsIDEwNSwgMTIsIDQwLCAyMjgsIDIzLCAxMDgsIDEyLCA0MCwgCisgICAgMjI4LCAyMywgMTQ3LCAxMiwgNDAsIDIyOCwgMjMsIDE0OSwgMTIsIDQwLCAyMTIsIDI0LCAxMiwgNDAsIDIwOSwgMzMsIDEyLCAKKyAgICA0MCwgMjEyLCAyMiwgMTA1LCAxMiwgNDAsIDIxMiwgMjIsIDEwOCwgMTIsIDQwLCAyMzcsIDU2LCAxMDUsIDEyLCA0MCwgCisgICAgMjM3LCA1NiwgMTA4LCAxMiwgNDAsIDIzNywgMTIzLCAxMiwgNDAsIDIxNiwgMTc4LCAxMiwgNDAsIDI0NiwgMTEyLCAxMiwgCisgICAgNDAsIDIxMCwgMjE0LCAxMiwgNDAsIDIyNCwgMjksIDEyLCA0MCwgMjQ0LCA3MywgMTIsIDQwLCAyMjQsIDIwLCAxMiwgNDAsIAorICAgIDI0NiwgNDQsIDEyLCA0MCwgMjA0LCA4MSwgMTA1LCAxMiwgNDAsIDIwNCwgODEsIDEwOCwgMTIsIDQwLCAyMzksIDI0OSwgCisgICAgMTIsIDQwLCAyMTksIDQ2LCAxMDUsIDEyLCA0MCwgMjE5LCA0NiwgMTA4LCAxMiwgNDAsIDIxMiwgMTI3LCAxNjIsIDIwOCwgCisgICAgOTYsIDIwOCwgMjUsIDEyLCA0MCwgMjQ1LCAxNDksIDEyLCA0MCwgMjQzLCAxMDIsIDEyLCA0MCwgMjMwLCAxNzYsIDEyLCAKKyAgICA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDEyLCA0MCwgMjQwLCAxOTEsIDEyLCA0MCwgMjExLCAxOTksIDEwNSwgMTIsIAorICAgIDQwLCAyMTEsIDE5OSwgMTA4LCAxMiwgNDAsIDI0OCwgMjQ0LCAxMiwgNDAsIDIxMiwgMTM0LCAxMiwgNDAsIDI0NywgMTIyLCAKKyAgICAyMTIsIDEzNCwgMTIsIDQwLCAyMjIsIDIyMCwgMTA1LCAxMiwgNDAsIDIyMiwgMjIwLCAxMDgsIDEyLCA0MCwgMjIyLCAyMjAsIAorICAgIDE0NywgMTIsIDQwLCAyMjIsIDIyMCwgMTQ5LCAxMiwgNDAsIDIyNCwgMjI3LCAxMiwgNDAsIDIxMywgMzcsIDEyLCA0MCwgCisgICAgMjE2LCAxODQsIDEyLCA0MCwgMjQwLCAyMTksIDEyLCA0MCwgMjIwLCA0NSwgMTIsIDQwLCAyNDcsIDIwMSwgMTA1LCAxMiwgCisgICAgNDAsIDI0NywgMjAxLCAxMDgsIDEyLCA0MCwgMjI1LCAxNSwgMTIsIDQwLCAyMjQsIDI0LCAxMiwgNDAsIDIzOCwgMSwgMTA1LCAKKyAgICAxMiwgNDAsIDIzOCwgMSwgMTA4LCAxMiwgNDAsIDIzOCwgMSwgMTQ3LCAxMiwgNDAsIDIwOCwgMjQ1LCAxMiwgNDAsIDI0NiwgCisgICAgOSwgMTIsIDQwLCAyMDQsIDQ2LCAxMDUsIDEyLCA0MCwgMjA0LCA0NiwgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMTQsIAorICAgIDE2NSwgMTIsIDQwLCAyMTIsIDEyNywgMjM2LCA1MywgMTIsIDQwLCAyMzYsIDUzLCAxMiwgNDAsIDI0NywgMTIyLCAyMTEsIAorICAgIDIxMSwgMTIsIDQwLCAyNDcsIDEyMiwgMjEzLCAzMiwgMTIsIDQwLCAyMzksIDE3MiwgMTIsIDQwLCAyNDcsIDEyMiwgMjQ3LCAKKyAgICAyMywgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAxMDEsIDEyLCA0MCwgMjA0LCAxMDIsIDEwNSwgMTIsIDQwLCAyMDQsIDEwMiwgCisgICAgMTA4LCAxMiwgNDAsIDI0NiwgNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMzEsIDEyLCA0MCwgMTYzLCAxMDUsIDEyLCAKKyAgICA0MCwgMTYzLCAxMDgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIyNywgMjgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMjE2LCAxMiwgCisgICAgNDAsIDIyNCwgMTYsIDEwNSwgMTIsIDQwLCAyMjQsIDE2LCAxMDgsIDEyLCA0MCwgMjE2LCAxOTAsIDEyLCA0MCwgMjQ4LCAKKyAgICAyNSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA5LCAyMjQsIDIyNywgMjI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDIyOSwgMTIsIAorICAgIDQwLCAyNDcsIDEyMiwgMjA0LCAxNiwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAxOTAsIDEyLCA0MCwgMjQxLCAxNzMsIDEwNSwgCisgICAgMTIsIDQwLCAyNDEsIDE3MywgMTA4LCAxMiwgNDAsIDI0MSwgMTczLCAxNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MSwgMTcyLCAKKyAgICAxMiwgNDAsIDIzNywgNjQsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzNiwgNDksIDEyLCA0MCwgMjQ4LCAxMSwgMTIsIDQwLCAyMzgsIAorICAgIDg5LCAxMiwgNDAsIDI0NywgMTIyLCAyMzksIDI0MywgMTIsIDQwLCAyNDcsIDEyMiwgMjQ4LCA2MCwgMTIsIDQwLCAyNDcsIAorICAgIDEyMiwgMjE1LCAxLCAxMiwgNDAsIDIxMiwgMTI3LCAyMDQsIDM4LCAxMiwgNDAsIDIxMiwgMTI3LCAyMDMsIDQ0LCAxMiwgCisgICAgNDAsIDI0NywgMTIyLCAyMzksIDEyMSwgMTIsIDQwLCAyMzAsIDE4MywgMjQwLCAyMjQsIDEyLCA0MCwgMjQ3LCAxMjIsIAorICAgIDI0MCwgMjI0LCAxMiwgNDAsIDIzMCwgMTgzLCAyMDgsIDE0NiwgMTIsIDQwLCAyNDcsIDEyMiwgMjA4LCAxNDYsIDEyLCA0MCwgCisgICAgMjMwLCAxODMsIDI0MiwgNjEsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MiwgNjEsIDEyLCA0MCwgMjA3LCAxNzEsIDEyLCA0MCwgCisgICAgMjMwLCAxODMsIDIwNywgMTcxLCAxMiwgNDAsIDI0NywgMTIyLCAyMDcsIDE3MSwgNzEsIDQwLCAxMDUsIDcxLCA0MCwgMjI3LCAKKyAgICAxMTQsIDcxLCA0MCwgMjQzLCA4NSwgNzEsIDQwLCAyMTIsIDU3LCA3MSwgNDAsIDIxNCwgMTcwLCA3MSwgNDAsIDExMywgNzEsIAorICAgIDQwLCAxMDgsIDcxLCA0MCwgMjI3LCAxNDMsIDcxLCA0MCwgMjI1LCAxMjIsIDcxLCA0MCwgMjI3LCAyMDcsIDcxLCA0MCwgCisgICAgMjQxLCA2NywgNzEsIDQwLCAxOTksIDcxLCA0MCwgMTIxLCAyNDcsIDIzMywgNzEsIDQwLCAyNDUsIDE1MSwgNzEsIDQwLCAKKyAgICAyMzUsIDE2MiwgNzEsIDQwLCAyMTAsIDgsIDcxLCA0MCwgMTcxLCAyNDcsIDIzMywgNzEsIDQwLCAyMjksIDMzLCA3MSwgNDAsIAorICAgIDIxOCwgMTYsIDcxLCA0MCwgMjAzLCAyMjgsIDcxLCA0MCwgMjExLCAxOTAsIDcxLCA0MCwgNTAsIDE3MSwgMjQ3LCAyMzMsIAorICAgIDcxLCA0MCwgMjM2LCAyNTUsIDI0MSwgODcsIDcxLCA0MCwgMjA5LCAxNTIsIDcxLCA0MCwgMjQzLCAxMzgsIDcxLCA0MCwgCisgICAgMjE0LCAxNzUsIDcxLCA0MCwgMjQ2LCAyNiwgNzEsIDQwLCAyMTcsIDIyNiwgNzEsIDQwLCAyNTEsIDgwLCA3MSwgNDAsIAorICAgIDIyNCwgNywgNzEsIDQwLCAyNDEsIDg3LCA3MSwgNDAsIDI0MSwgMTc5LCA3MSwgNDAsIDIxNCwgMTk3LCA3MSwgNDAsIDIzOCwgCisgICAgMzksIDcxLCA0MCwgMjM4LCA0MCwgMjEyLCAzOCwgNzEsIDQwLCAyNDAsIDIyMywgNzEsIDQwLCAyNDgsIDcyLCA3MSwgNDAsIAorICAgIDIwMywgMjUwLCA3MSwgNDAsIDI0NiwgMTMzLCA3MSwgNDAsIDIxNSwgMjA3LCA3MSwgNDAsIDIzMSwgNDUsIDcxLCA0MCwgCisgICAgMjEyLCAzNiwgNzEsIDQwLCAyMjgsIDIyLCA3MSwgNDAsIDI0NSwgMTYxLCA3MSwgNDAsIDIxMSwgMTgxLCA3MSwgNDAsIAorICAgIDIyNCwgMTIsIDcxLCA0MCwgMjE1LCAyNDEsIDcxLCA0MCwgMjAzLCAyMzUsIDcxLCA0MCwgMjIwLCAyNSwgNzEsIDQwLCAKKyAgICAyMDcsIDE4MCwgNzEsIDQwLCAyNDIsIDQ0LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDMzLCA3MSwgNDAsIDI0MiwgODMsIAorICAgIDI0NiwgMjYsIDcxLCA0MCwgMTYzLCAyMTEsIDM4LCA3MSwgNDAsIDEyMCwgMjM3LCA5OSwgNzEsIDQwLCAyMTIsIDIzNCwgCisgICAgNzEsIDQwLCAyNDcsIDI0MCwgNzEsIDQwLCAyMTIsIDIxLCA3MSwgNDAsIDI0NywgMjA1LCA3MSwgNDAsIDIxMSwgNzUsIDcxLCAKKyAgICA0MCwgMjM3LCA1NSwgNzEsIDQwLCAyMzcsIDEzOCwgNzEsIDQwLCAyNDMsIDg4LCA3MSwgNDAsIDIzNywgMTIzLCA3MSwgNDAsIAorICAgIDI0NywgMjIzLCA3MSwgNDAsIDIxNiwgMTc4LCA3MSwgNDAsIDIxNCwgMTgzLCA3MSwgNDAsIDI0MywgMTY5LCA3MSwgNDAsIAorICAgIDI1MCwgOSwgNzEsIDQwLCAyMTEsIDE3NywgNzEsIDQwLCAyMjEsIDE2NSwgNzEsIDQwLCAyMTAsIDIxNCwgNzEsIDQwLCAKKyAgICAyMTQsIDIwOCwgNzEsIDQwLCAyMjQsIDI5LCA3MSwgNDAsIDIwOCwgOTUsIDcxLCA0MCwgMjI4LCA5OSwgNzEsIDQwLCAyMTEsIAorICAgIDYxLCA3MSwgNDAsIDI0NCwgNzMsIDcxLCA0MCwgMjA0LCA2MSwgNzEsIDQwLCAyNDMsIDExNCwgMjIxLCAxNjUsIDcxLCA0MCwgCisgICAgMjQ1LCAyMjksIDcxLCA0MCwgMjM5LCA5NSwgNzEsIDQwLCAyNDYsIDM4LCA3MSwgNDAsIDIxMSwgODAsIDcxLCA0MCwgMjA0LCAKKyAgICA4MCwgNzEsIDQwLCAyMzksIDI0OSwgNzEsIDQwLCAyNDYsIDM0LCA3MSwgNDAsIDI0MCwgNjcsIDcxLCA0MCwgNTIsIDIwMywgCisgICAgMTk2LCA3MSwgNDAsIDE2MiwgMjA4LCA5NiwgMjA4LCAyNSwgNzEsIDQwLCAyMTIsIDUwLCA3MSwgNDAsIDI0MCwgNzksIDcxLCAKKyAgICA0MCwgMjQ1LCAxNDksIDcxLCA0MCwgMjQzLCAxMDIsIDcxLCA0MCwgMjE3LCAyMjMsIDcxLCA0MCwgMjMwLCAxNzYsIDcxLCAKKyAgICA0MCwgMjI0LCAyNDksIDcxLCA0MCwgMjA4LCAyMjYsIDcxLCA0MCwgMjEwLCAxNjQsIDcxLCA0MCwgMjI3LCAxMzcsIDcxLCAKKyAgICA0MCwgMjA2LCAxOTEsIDcxLCA0MCwgMjQwLCAyNCwgNzEsIDQwLCAyNDgsIDE1LCA3NiwgMjQ2LCAxMCwgNzEsIDQwLCAyMTIsIAorICAgIDE1OCwgNzEsIDQwLCAyNDIsIDgzLCAyMDksIDE0NCwgNzEsIDQwLCAyMDQsIDMzLCA3MSwgNDAsIDIxMiwgNjUsIDcxLCA0MCwgCisgICAgMjQzLCAxNTYsIDcxLCA0MCwgMjQwLCAxOTEsIDcxLCA0MCwgMjExLCAyMTQsIDcxLCA0MCwgNDcsIDcxLCA0MCwgMjExLCAKKyAgICA2MywgNzEsIDQwLCAyMTEsIDE5OCwgNzEsIDQwLCAyMDgsIDExOCwgNzEsIDQwLCAyMzgsIDEwLCA3MSwgNDAsIDI0NywgMTAsIAorICAgIDcxLCA0MCwgMjExLCA5OCwgNzEsIDQwLCAyNDgsIDI0NCwgNzEsIDQwLCAyMTYsIDUyLCA3MSwgNDAsIDIxMiwgMTM0LCA3MSwgCisgICAgNDAsIDIzMCwgMTY4LCA3MSwgNDAsIDIyMiwgMjE5LCA3MSwgNDAsIDIxMywgMzcsIDcxLCA0MCwgMjQwLCA1NSwgNzEsIDQwLCAKKyAgICAyMjAsIDQ1LCA3MSwgNDAsIDI1MCwgMjI2LCA3MSwgNDAsIDIxOCwgODMsIDcxLCA0MCwgMjQxLCAxODMsIDcxLCA0MCwgCisgICAgMjQ3LCAyMDAsIDcxLCA0MCwgMjI1LCAxNSwgNzEsIDQwLCAyMjQsIDEwNCwgNzEsIDQwLCAyMTMsIDE0OSwgNzEsIDQwLCAKKyAgICAyNTAsIDk4LCA3MSwgNDAsIDIyNCwgMjQsIDcxLCA0MCwgMjA4LCAxNTAsIDcxLCA0MCwgMjE5LCAyNTIsIDcxLCA0MCwgCisgICAgMjQ4LCAxOSwgNzEsIDQwLCAyMTEsIDU5LCA3MSwgNDAsIDI0NSwgMjQxLCA3MSwgNDAsIDIzOCwgMCwgNzEsIDQwLCAyMDgsIAorICAgIDI0NSwgNzEsIDQwLCAyMzEsIDksIDcxLCA0MCwgMjQ4LCAzMSwgNzEsIDQwLCAyMDQsIDEwMiwgMjQxLCA4NywgNzEsIDQwLCAKKyAgICAyNDYsIDksIDcxLCA0MCwgMjA0LCA0NSwgNzEsIDQwLCAyMTQsIDE2NSwgNzEsIDQwLCAyMzYsIDUzLCA3MSwgNDAsIDIxMSwgCisgICAgMjExLCA3MSwgNDAsIDIwNiwgNzksIDcxLCA0MCwgMjQ4LCAxNTcsIDcxLCA0MCwgMjE4LCAxMzEsIDcxLCA0MCwgMjQ5LCAKKyAgICAxMywgNzEsIDQwLCAyMTMsIDMyLCA3MSwgNDAsIDIxNiwgMTM3LCA3MSwgNDAsIDIxNSwgMTI4LCA3MSwgNDAsIDIzOSwgCisgICAgMTcyLCA3MSwgNDAsIDI0OCwgMTcsIDcxLCA0MCwgMjQ3LCAyMywgNzEsIDQwLCAyNDgsIDQ4LCA3MSwgNDAsIDIyNCwgMjYsIAorICAgIDcxLCA0MCwgMjA0LCAxMDEsIDcxLCA0MCwgMjQ2LCA0NywgNzEsIDQwLCAyMDQsIDEyLCA3MSwgNDAsIDI0MywgMTQ5LCA3MSwgCisgICAgNDAsIDIwNSwgMjE0LCA3MSwgNDAsIDIzOCwgMzEsIDcxLCA0MCwgMjI3LCAyOCwgNzEsIDQwLCAyMzgsIDIxNiwgNzEsIDQwLCAKKyAgICAyMjQsIDE1LCA3MSwgNDAsIDIxMiwgNTYsIDcxLCA0MCwgMjEyLCAyMjgsIDIwOSwgMjQ3LCAyNDgsIDYwLCA3MSwgNDAsIAorICAgIDIxNiwgMTkwLCA3MSwgNDAsIDI0OCwgMjUsIDcxLCA0MCwgMjAzLCAyMTksIDcxLCA0MCwgMjQwLCAxMDIsIDcxLCA0MCwgCisgICAgMjI3LCAyMjgsIDcxLCA0MCwgMjA5LCAyMjQsIDIyNywgMjI4LCA3MSwgNDAsIDIyNywgMjI0LCA3MSwgNDAsIDIxMSwgMjQwLCAKKyAgICA3MSwgNDAsIDIyNywgMjI5LCA3MSwgNDAsIDIwNCwgMTYsIDcxLCA0MCwgMjM5LCAxOTAsIDcxLCA0MCwgMjQxLCAxNzIsIAorICAgIDcxLCA0MCwgMjM3LCA2NCwgNzEsIDQwLCAyMzksIDEzNiwgNzEsIDQwLCAyMzYsIDQ5LCA3MSwgNDAsIDI0OCwgMTEsIDcxLCAKKyAgICA0MCwgMjA5LCAyMzMsIDcxLCA0MCwgMjM3LCAxNDUsIDcxLCA0MCwgMjQwLCAxNywgNzEsIDQwLCAyMTUsIDMwLCAyMDQsIAorICAgIDEyLCA3MSwgNDAsIDI0NywgMTIsIDcxLCA0MCwgMjM4LCA4OSwgNzEsIDQwLCAyMzksIDI0MywgNzEsIDQwLCAyNDgsIDYwLCAKKyAgICA3MSwgNDAsIDIxNSwgMSwgNzEsIDQwLCAyNDQsIDU4LCA3MSwgNDAsIDIwNCwgMzgsIDcxLCA0MCwgMjM3LCAzNCwgNzEsIAorICAgIDQwLCAyMDMsIDQ0LCA3MSwgNDAsIDIyNCwgMTE1LCA3MSwgNDAsIDI0OCwgNDMsIDcxLCA0MCwgMjQxLCA5OSwgNzEsIDQwLCAKKyAgICAyMzksIDEyMSwgNzEsIDQwLCAyMDgsIDY3LCA3MSwgNDAsIDI0MiwgNDYsIDcxLCA0MCwgMjE2LCAxNzIsIDcxLCA0MCwgCisgICAgMjIxLCAxNjcsIDcxLCA0MCwgMjQwLCAyMjQsIDcxLCA0MCwgMjA4LCAxNDYsIDcxLCA0MCwgMjQyLCA2MSwgNzEsIDQwLCAKKyAgICAyMDcsIDE3MSwgNzEsIDQwLCAyMzksIDE5MywgMTM5LCAyNDQsIDE4LCAxNjcsIDQ5LCAyMDgsIDE3MywgMjE2LCAxNiwgCisgICAgMTM5LCAyNDQsIDE4LCAxNjcsIDg3LCAyMDgsIDE3MywgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIAorICAgIDEwMSwgMjUsIDIxNiwgMTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDEwMSwgMjUsIDU2LCAxMzksIDI0NCwgCisgICAgMTgsIDE2NywgMjM5LCAxMDIsIDIxMCwgMTg2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCA1NSwgCisgICAgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgCisgICAgMjM5LCAxMjAsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjI3LCAKKyAgICAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIwNiwgMjIxLCAyMTYsIDE2LCAxMzksIDI0NCwgCisgICAgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTksIAorICAgIDIwMiwgMTM5LCAyMTEsIDIyOCwgMTM5LCAyNDUsIDIzMywgMTM5LCAyMzksIDEwMiwgMjExLCA2MSwgMjQzLCAxNDYsIDgyLCAKKyAgICAyMzAsIDE2OSwgMjMxLCAyOSwgMjExLCA5NywgOTcsIDEzOSwgMjMwLCAxOTksIDgyLCAxMzksIDI0NiwgMTIsIDgyLCAxMzksIAorICAgIDQyLCAyMDIsIDg0LCA0OSwgMjUwLCAyMTgsIDE1NSwgNTAsIDI1MCwgMjE4LCAxNTUsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCisgICAgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCA0OSwgMjQ1LCAxNjYsIDE1NSwgNTAsIDI0NSwgMTY2LCAxNTUsIDQ5LCA2MSwgMjQ1LCAKKyAgICAxNjYsIDE1NSwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDUwLCA2MiwgMjI3LCAxODUsIAorICAgIDE1NSwgMjE4LCAyOSwgODIsIDIzOCwgMTU4LCA4MiwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCAyMDgsIDEzMywgCisgICAgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDIyNywgMTg1LCAxNTUsIDUwLCA2MSwgMjI3LCAxODUsIDE1NSwgNDksIDYxLCAyMDgsIAorICAgIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDQ5LCA2MSwgNTEsIDE1NSwgNTAsIAorICAgIDYxLCA1MSwgMTU1LCAyMDQsIDc2LCAyNDQsIDE0NCwgMjE2LCA3MywgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgNTIsIAorICAgIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMTI0LCA1MiwgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCAyMTgsIDI5LCAxMzEsIDI0MCwgCisgICAgMTAyLCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDUsIDIzNywgOTcsIDIyMSwgNDQsIDEwOCwgMjM3LCA5NywgMjIxLCA0NCwgMTQ3LCAKKyAgICAyMzcsIDk3LCAyMjEsIDQ0LCAxNDksIDIzNywgOTcsIDIyMSwgNDQsIDE3MCwgMjM3LCA5NywgMjIxLCA0NCwgMTk1LCAyMzcsIAorICAgIDk3LCAyMjEsIDQ0LCAyMTMsIDExMSwgMjM3LCA5NywgMjIxLCA0NCwgMTk5LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMjIsIDYzLCAKKyAgICAxMzksIDIyNywgMTY3LCAxNDMsIDgyLCAxMzksIDIxNSwgMjQ1LCAxNDMsIDgyLCAxMzksIDI0NCwgMjcsIDE0MywgODIsIAorICAgIDEzOSwgMjQxLCA2NiwgMTQzLCA4MiwgMjgsIDIxMiwgMTIwLCA3MCwgMTQzLCA4MiwgMjgsIDUyLCA3MCwgMTQzLCA4MiwgCisgICAgMjA0LCA3MiwgMjQ0LCAxNDQsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCA4MiwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIAorICAgIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIwNiwgMjIxLCAyMzcsIDEzNywgCisgICAgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIDIwNSwgMTg2LCAyMTEsIDI0MSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIDgwLCAKKyAgICAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIyNiwgMjUxLCAyMzcsIDEzNywgNDMsIDIxOCwgMjksIDgyLCAxMzksIDIwOSwgCisgICAgMTY0LCAyMjcsIDExNSwgMjQwLCA1MiwgMjEzLCAxMzEsIDk3LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDE1MiwgMjM3LCAKKyAgICA5NywgMjIxLCA0NCwgMjA3LCAxNTEsIDIzNywgOTcsIDIyMSwgNDQsIDIwOSwgNTMsIDgwLCAxMzksIDIzMCwgMTk5LCA4MiwgCisgICAgMjI1LCA3MiwgODIsIDIxOSwgNzEsIDI1MCwgMjUxLCA4MiwgMTM5LCA1NywgMjMxLCAzMSwgMTM5LCAxNjIsIDI0MCwgMTAsIAorICAgIDIxMSwgMjI4LCAxNzIsIDEsIDUsIDYzLCAxNzIsIDEsIDYzLCAxNzIsIDEsIDUsIDc1LCAxNzIsIDEsIDc1LCAxNzIsIDEsIAorICAgIDUsIDY4LCAxNzIsIDEsIDY4LCAxNzIsIDEsIDUsIDc0LCAxNzIsIDEsIDc0LCAxNzIsIDEsIDUsIDc4LCAxNzIsIDEsIDc4LCAKKyAgICAxNzIsIDEsIDE3MywgMTcyLCAxLCAyMzksIDgsIDE3MiwgMSwgMjI5LCAxMDAsIDE3MiwgMSwgMjM4LCA4MSwgMTcyLCAxLCAKKyAgICAyMjgsIDIwOSwgMTcyLCAxLCAyMzcsIDIzMCwgMTcyLCAxLCAyMjksIDIwMSwgMTcyLCAxLCAyMzgsIDE5MCwgMTcyLCAxLCAKKyAgICAyMjksIDI2LCAxNzIsIDEsIDIzOCwgMzksIDE3MiwgMSwgMjE1LCAzNiwgMTcyLCAxLCAyMDIsIDExNiwgMTcyLCAxLCAyMTIsIAorICAgIDE2MiwgMTcyLCAxLCAyMDIsIDM5LCAxNzIsIDEsIDIxMSwgMTAsIDE3MiwgMSwgMjAyLCA2LCAxNzIsIDEsIDIxNCwgMTc3LCAKKyAgICAxNzIsIDEsIDIwMiwgOTIsIDE3MiwgMSwgMjEyLCAxMywgMTcyLCAxLCAyMDIsIDE3LCAxNzIsIDEsIDIxMCwgMjIsIDE3MiwgCisgICAgMSwgMjQ0LCAyMTIsIDE3MiwgMSwgMjA5LCAyLCAxNzIsIDEsIDI0MywgMjMzLCAxNzIsIDEsIDUsIDIwNywgMjAzLCAxNzIsIAorICAgIDEsIDIwNywgMjAzLCAxNzIsIDEsIDI0MiwgNDIsIDE3MiwgMSwgMjA5LCAxODcsIDE3MiwgMSwgMjQ0LCA3NSwgMTcyLCAxLCAKKyAgICAxMzUsIDE3MiwgMSwgMjQzLCAxMTMsIDE3MiwgMSwgMjAxLCAyMDEsIDE3MiwgMSwgMjIyLCAxMDAsIDE3MiwgMSwgMjIxLCAKKyAgICA4NCwgMTcyLCAxLCAyMjIsIDI0MCwgMTcyLCAxLCAyMjEsIDE5MSwgMTcyLCAxLCAxNTIsIDE3MiwgMSwgMjQ5LCAzMiwgCisgICAgMTcyLCAxLCAxODUsIDE3MiwgMSwgMjM3LCAzLCAxNzIsIDEsIDI0OCwgODYsIDE3MiwgMSwgMjE4LCAxNjcsIDE3MiwgMSwgCisgICAgMjM2LCAyNiwgMTcyLCAxLCAyNDcsIDE5MywgMTcyLCAxLCAyMTcsIDE5MSwgMTcyLCAxLCAyMzcsIDY3LCAxNzIsIDEsIAorICAgIDI0OCwgMTYyLCAxNzIsIDEsIDIxOSwgMzQsIDE3MiwgMSwgMjM2LCAxMzYsIDE3MiwgMSwgMjQ4LCAyMywgMTcyLCAxLCAKKyAgICAyMTgsIDY5LCAxNzIsIDEsIDE5MiwgMTcyLCAxLCAyMjQsIDE1NSwgMTcyLCAxLCAyMjMsIDI0NiwgMTcyLCAxLCAyMjUsIAorICAgIDIwLCAxNzIsIDEsIDIyNCwgODIsIDE3MiwgMSwgNSwgMTk4LCAxNzIsIDEsIDE5OCwgMTcyLCAxLCA1LCAyMDIsIDIxMywgCisgICAgMTcyLCAxLCAyMDIsIDIxMywgMTcyLCAxLCA1LCAyMDIsIDI0NywgMTcyLCAxLCAyMDIsIDI0NywgMTcyLCAxLCAyMTYsIAorICAgIDIyMCwgMTcyLCAxLCAyMTYsIDU3LCAxNzIsIDEsIDIxNSwgMTQ1LCAxNzIsIDEsIDIxNiwgMTU4LCAxNzIsIDEsIDIxNSwgCisgICAgMjI3LCAxNzIsIDEsIDUsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMzAsIDE3MiwgMSwgMjA0LCAKKyAgICA2MiwgMTcyLCAxLCAyMDQsIDAsIDE3MiwgMSwgMjIzLCAxNjMsIDE3MiwgMSwgMjA0LCAxNjMsIDE3MiwgMSwgNSwgMTczLCAKKyAgICAxNzIsIDEsIDUsIDIyOSwgMjAxLCAzOSwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDM5LCAyMjksIDIyNSwgCisgICAgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMTMsIAorICAgIDE0OCwgMjExLCAyNDEsIDgyLCAxNzIsIDIzMCwgMTk5LCA4MiwgMTcyLCAyMDUsIDE4NiwgMjMwLCAxOTksIDgyLCAxNzIsIAorICAgIDI0MywgMTkyLCAyMDIsIDIyOCwgMjI5LCAyMjUsIDUyLCAyMzUsIDIyMCwgNjcsIDEsIDUsIDYzLCA2NywgMSwgNjMsIDY3LCAKKyAgICAxLCA1LCA3NSwgNjcsIDEsIDc1LCA2NywgMSwgNSwgNjgsIDY3LCAxLCA2OCwgNjcsIDEsIDUsIDc0LCA2NywgMSwgNzQsIAorICAgIDY3LCAxLCA1LCA3OCwgNjcsIDEsIDc4LCA2NywgMSwgMTczLCA2NywgMSwgMjM5LCA4LCA2NywgMSwgMjI5LCAxMDAsIDY3LCAKKyAgICAxLCAyMzgsIDgxLCA2NywgMSwgMjI4LCAyMDksIDY3LCAxLCAyMzcsIDIzMCwgNjcsIDEsIDIyOSwgMjAxLCA2NywgMSwgCisgICAgMjM4LCAxOTAsIDY3LCAxLCAyMjksIDI2LCA2NywgMSwgMjM4LCAzOSwgNjcsIDEsIDIxNSwgMzYsIDY3LCAxLCAyMDIsIAorICAgIDExNiwgNjcsIDEsIDIxMiwgMTYyLCA2NywgMSwgMjAyLCAzOSwgNjcsIDEsIDIxMSwgMTAsIDY3LCAxLCAyMDIsIDYsIDY3LCAKKyAgICAxLCAyMTQsIDE3NywgNjcsIDEsIDIwMiwgOTIsIDY3LCAxLCAyMTIsIDEzLCA2NywgMSwgMjAyLCAxNywgNjcsIDEsIDIxMCwgCisgICAgMjIsIDY3LCAxLCAyNDQsIDIxMiwgNjcsIDEsIDIwOSwgMiwgNjcsIDEsIDI0MywgMjMzLCA2NywgMSwgNSwgMjA3LCAyMDMsIAorICAgIDY3LCAxLCAyMDcsIDIwMywgNjcsIDEsIDI0MiwgNDIsIDY3LCAxLCAyMDksIDE4NywgNjcsIDEsIDI0NCwgNzUsIDY3LCAxLCAKKyAgICAxMzUsIDY3LCAxLCAyNDMsIDExMywgNjcsIDEsIDIwMSwgMjAxLCA2NywgMSwgMjIyLCAxMDAsIDY3LCAxLCAyMjEsIDg0LCAKKyAgICA2NywgMSwgMjIyLCAyNDAsIDY3LCAxLCAyMjEsIDE5MSwgNjcsIDEsIDE1MiwgNjcsIDEsIDI0OSwgMzIsIDY3LCAxLCAxODUsIAorICAgIDY3LCAxLCAyMzcsIDMsIDY3LCAxLCAyNDgsIDg2LCA2NywgMSwgMjE4LCAxNjcsIDY3LCAxLCAyMzYsIDI2LCA2NywgMSwgCisgICAgMjQ3LCAxOTMsIDY3LCAxLCAyMTcsIDE5MSwgNjcsIDEsIDIzNywgNjcsIDY3LCAxLCAyNDgsIDE2MiwgNjcsIDEsIDIxOSwgCisgICAgMzQsIDY3LCAxLCAyMzYsIDEzNiwgNjcsIDEsIDI0OCwgMjMsIDY3LCAxLCAyMTgsIDY5LCA2NywgMSwgMTkyLCA2NywgMSwgCisgICAgMjI0LCAxNTUsIDY3LCAxLCAyMjMsIDI0NiwgNjcsIDEsIDIyNSwgMjAsIDY3LCAxLCAyMjQsIDgyLCA2NywgMSwgNSwgMTk4LCAKKyAgICA2NywgMSwgMTk4LCA2NywgMSwgNSwgMjAyLCAyMTMsIDY3LCAxLCAyMDIsIDIxMywgNjcsIDEsIDUsIDIwMiwgMjQ3LCA2NywgCisgICAgMSwgMjAyLCAyNDcsIDY3LCAxLCAyMTYsIDIyMCwgNjcsIDEsIDIxNiwgNTcsIDY3LCAxLCAyMTUsIDE0NSwgNjcsIDEsIAorICAgIDIxNiwgMTU4LCA2NywgMSwgMjE1LCAyMjcsIDY3LCAxLCA1LCAyMDQsIDExMSwgNjcsIDEsIDIwNCwgMTExLCA2NywgMSwgCisgICAgMjA0LCAzMCwgNjcsIDEsIDIwNCwgNjIsIDY3LCAxLCAyMDQsIDAsIDY3LCAxLCAyMjMsIDE2MywgNjcsIDEsIDIwNCwgMTYzLCAKKyAgICA2NywgMSwgNSwgMTczLCA2NywgMSwgNSwgMjI5LCAyMDEsIDY3LCAxLCAyMDYsIDg2LCA2NywgMSwgMjA1LCAyMzAsIDY3LCAKKyAgICAxLCAyMDYsIDU1LCA2NywgMSwgMjA1LCAxODksIDY3LCAxMDEsIDI0MywgODUsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAKKyAgICAyNDEsIDgyLCA2NywgMjMwLCAxOTksIDgyLCA2NywgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgNjcsIDI0MywgMTkyLCAyMjgsIAorICAgIDI0OSwgMjQ4LCAxLCAxLCAyNDksIDI1NSwgMjQ4LCAxLCAxLCAyMTksIDE4NCwgMjQ4LCAxLCAxLCAyMjYsIDE4NSwgMjQ4LCAKKyAgICAxLCAxLCAyNDAsIDE3NCwgMjQ4LCAxLCAxLCAyNDUsIDUxLCAyNDgsIDEsIDEsIDIxMCwgNjksIDI0OCwgMSwgMSwgMjIzLCAKKyAgICAxNjMsIDI0OCwgMSwgMSwgMTU5LCAyNDgsIDEsIDEsIDIzOSwgNzUsIDI0OCwgMSwgMSwgMjMwLCA1NCwgMjQ4LCAxLCAxLCAKKyAgICAyMzcsIDE3MSwgMjQ4LCAxLCAxLCAyMzAsIDE4NCwgMjQ4LCAxLCAxLCAyMTcsIDEzNCwgMjQ4LCAxLCAxLCAyMDMsIDE5NiwgCisgICAgMjQ4LCAxLCAxLCAyMDIsIDgxLCAyNDgsIDEsIDEsIDI0NiwgMjAwLCAyNDgsIDEsIDEsIDIxMywgOTIsIDI0OCwgMSwgMSwgCisgICAgMTQ2LCAyNDgsIDEsIDEsIDIwMiwgMTU5LCAyNDgsIDEsIDEsIDI0NywgMTI1LCAyNDgsIDEsIDEsIDE5NCwgMjQ4LCAxLCAxLCAKKyAgICA2MywgMjQ4LCAxLCAxLCA3OCwgMjQ4LCAxLCAxLCA3NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NywgMjQ4LCAxLCAxLCAyNTEsIAorICAgIDY0LCAyNDgsIDEsIDEsIDI0MSwgMTQ1LCAyNDgsIDEsIDEsIDI1MCwgMzQsIDI0OCwgMSwgMSwgMjE5LCAyMTYsIDI0OCwgMSwgCisgICAgMSwgMjUwLCAyMzEsIDI0OCwgMSwgMSwgMjQxLCA5MiwgMjQ4LCAxLCAxLCAyNTAsIDIyMywgMjQ4LCAxLCAxLCAyNDEsIDc4LCAKKyAgICAyNDgsIDEsIDEsIDI0MSwgMjgsIDI0OCwgMSwgMSwgNzUsIDI0OCwgMSwgMSwgNjgsIDI0OCwgMSwgMSwgMjMwLCAxOTcsIAorICAgIDI0OCwgMSwgMSwgMjA2LCAxNjQsIDI0OCwgMSwgMSwgMjIyLCAyMDUsIDI0OCwgMSwgMSwgMjM4LCA0MywgMjQ4LCAxLCAxLCAKKyAgICAyMzEsIDg0LCAyOCwgMSwgMjI5LCA1OSwgMjgsIDEsIDIxMSwgMTU2LCAyOCwgMSwgMjI5LCA1MiwgMjgsIDEsIDIyMiwgOTMsIAorICAgIDI4LCAxLCAyMjIsIDkxLCAyOCwgMSwgMjIyLCA5MCwgMjgsIDEsIDIwOCwgMjQwLCAyOCwgMSwgMjExLCAxNDUsIDI4LCAxLCAKKyAgICAyMTYsIDQ3LCAyOCwgMSwgMjE2LCA0MiwgMjgsIDEsIDIxNiwgMzksIDI4LCAxLCAyMTYsIDMyLCAyOCwgMSwgMjE2LCAyNywgCisgICAgMjgsIDEsIDIxNiwgMjIsIDI4LCAxLCAyMTYsIDMzLCAyOCwgMSwgMjE2LCA0NSwgMjgsIDEsIDIyNCwgMTQxLCAyOCwgMSwgCisgICAgMjE4LCAxNTMsIDI4LCAxLCAyMTEsIDE1MywgMjgsIDEsIDIxOCwgMTQyLCAyOCwgMSwgMjEyLCAxMTEsIDI4LCAxLCAyMTEsIAorICAgIDE1MCwgMjgsIDEsIDIzMSwgMTA2LCAyOCwgMSwgMjQ2LCA3NCwgMjgsIDEsIDIxMSwgMTYwLCAyOCwgMSwgMjQ2LCAxMzgsIAorICAgIDI4LCAxLCAyMjksIDEyMCwgMjgsIDEsIDIwOSwgNjYsIDI4LCAxLCAyMTgsIDE5MCwgMjgsIDEsIDIzNiwgMjUxLCAyOCwgMSwgCisgICAgNjMsIDI4LCAxLCAyNTEsIDEwOSwgMjgsIDEsIDE5OCwgMjgsIDEsIDIwMywgOTksIDI4LCAxLCAyNDEsIDU1LCAyOCwgMSwgCisgICAgNzQsIDI4LCAxLCAyMDMsIDM5LCAyOCwgMSwgMjAzLCA1MiwgMjgsIDEsIDc4LCAyOCwgMSwgMjA0LCAxMTEsIDI4LCAxLCAKKyAgICAyMDQsIDEwNywgMjgsIDEsIDIyMCwgNzMsIDI4LCAxLCAyMDIsIDI0NywgMjgsIDEsIDY4LCAyOCwgMSwgMjA0LCA0OCwgMjgsIAorICAgIDEsIDIwNCwgNjIsIDI4LCAxLCAyMDQsIDMwLCAyOCwgMSwgMjAyLCAyMTMsIDI4LCAxLCAyNDAsIDIzOCwgMjgsIDEsIDIwMywgCisgICAgMTEsIDI4LCAxLCA3NSwgMjgsIDI0MCwgNywgMjgsIDEsIDIxMSwgMTU0LCAyOCwgMSwgMjIyLCA4MywgMjgsIDEsIDIyMiwgCisgICAgODUsIDI4LCAxLCAyMjIsIDg4LCAyOCwgMSwgMjE2LCA0MCwgMjgsIDEsIDIxNiwgMjEsIDI4LCAxLCAyMTYsIDI5LCAyOCwgCisgICAgMSwgMjE2LCAzNCwgMjgsIDEsIDIxNiwgMTksIDI4LCAxLCAyMjQsIDEzNCwgMjgsIDEsIDIyNCwgMTMxLCAyOCwgMSwgMjI0LCAKKyAgICAxMzUsIDI4LCAxLCAyMjksIDI0NiwgMjgsIDEsIDIxOCwgMTQ4LCAyOCwgMSwgMjE4LCAxMzQsIDI4LCAxLCAyMTgsIDE0MCwgCisgICAgMjgsIDEsIDIxOCwgMTM3LCAyOCwgMSwgMjE4LCAxNTEsIDI4LCAxLCAyMTgsIDEzNSwgMjgsIDEsIDIyOSwgMjQ0LCAyOCwgCisgICAgMSwgMjI5LCAyNDIsIDI4LCAxLCAyMTIsIDEwNCwgMjgsIDEsIDIxMiwgMTAyLCAyOCwgMSwgMjEyLCA5NCwgMjgsIDEsIAorICAgIDIxMiwgOTksIDI4LCAxLCAyMTIsIDEwOSwgMjgsIDEsIDIxOSwgMTA3LCAyOCwgMSwgMjExLCAxNTcsIDI4LCAxLCAyMDMsIAorICAgIDI5LCAyOCwgMSwgMjAzLCAyNSwgMjgsIDEsIDIwMywgMjYsIDI4LCAxLCAyMjksIDI0NSwgMjgsIDEsIDIxMSwgMTU4LCAyOCwgCisgICAgMSwgMjAzLCAzNSwgMjgsIDEsIDIwMiwgMjQxLCAyOCwgMSwgMjAyLCAyNDAsIDI4LCAxLCAyMDIsIDI0MywgMjgsIDEsIAorICAgIDIwMiwgMjA0LCAyOCwgMSwgMjAyLCAyMDUsIDI4LCAxLCAyMDIsIDIwOCwgMjgsIDEsIDI1MCwgMTM3LCAyOCwgMSwgMjUwLCAKKyAgICAxMzEsIDEzOSwgMjUwLCAyMDUsIDIyNywgMTAzLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjE2LCA3NCwgODIsIDEzOSwgMjUwLCAKKyAgICAyMDUsIDExOCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyMCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyNiwgODIsIDEzOSwgMjUwLCAKKyAgICAyMDUsIDIzOSwgMTQ3LCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA4LCAxNDUsIDgyLCAxMzksIDI1MCwgMjA1LCAxMDEsIDgyLCAKKyAgICAxMzksIDI1MCwgMjA1LCAyNDcsIDI0OCwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMjQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgCisgICAgMjE0LCAxNzEsIDgyLCAxMzksIDI1MCwgMjA1LCAyMDksIDYxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjM5LCAxNDAsIDgyLCAKKyAgICAxMzksIDI1MCwgMjA1LCAyMzcsIDUyLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjQxLCAxODAsIDgyLCAxMzksIDI1MCwgMjA1LCAKKyAgICAyMjUsIDEyMywgODIsIDI0OCwgMSwgMSwgMjQ3LCAxOTMsIDI0OCwgMSwgMSwgMjAyLCAzOSwgMjQ4LCAxLCAxLCAyMzAsIAorICAgIDE0MSwgMjQ4LCAxLCAxLCAyMzcsIDIzMCwgMjQ4LCAxLCAxLCAyNDEsIDE2MSwgMjQ4LCAxLCAxLCAyNDEsIDc1LCAyNDgsIAorICAgIDEsIDEsIDIyMCwgMTgsIDI0OCwgMSwgMSwgMjIwLCAyMiwgMjQ4LCAxLCAxLCAyMzAsIDIyNCwgMjQ4LCAxLCAxLCAyNTAsIAorICAgIDIwNywgMjQ4LCAxLCAxLCAyMzEsIDE2LCAyNDgsIDEsIDEsIDIwNiwgMjI5LCAyNDgsIDEsIDEsIDIzMSwgNjYsIDI0OCwgMSwgCisgICAgMSwgMjIyLCAxODMsIDI0OCwgMSwgMSwgMjUxLCA1OCwgMjQ4LCAxLCAxLCAyNTAsIDI5LCAyNDgsIDEsIDEsIDI1MCwgMjQ3LCAKKyAgICAyNDgsIDEsIDEsIDIyMCwgMzksIDI0OCwgMSwgMSwgMjIwLCAyNCwgMjQ4LCAxLCAxLCAyMzEsIDEzLCAyNDgsIDEsIDQ2LCAKKyAgICAxLCAyMTksIDE4NCwgMjQ4LCAxLCA0NiwgMSwgMjEwLCA2OSwgMjQ4LCAxLCA0NiwgMSwgMjMwLCA1NCwgMjQ4LCAxLCA0NiwgCisgICAgMSwgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjM4LCAxMjAsIDI0OCwgMSwgMSwgMjI3LCAxNjIsIDI0OCwgMSwgMSwgMjAxLCAKKyAgICAyNDIsIDEyLCAyMTEsIDMyLCAyMTAsIDY5LCAxMiwgMjExLCAzMiwgMjA0LCA0MSwgMTIsIDIxMSwgMzIsIDIwMywgMTcxLCAKKyAgICAxMiwgMjExLCAzMiwgMjQ3LCAxMzgsIDEyLCAyMTEsIDMyLCAyMTAsIDE3MywgMTIsIDIxMSwgMzIsIDIzNSwgMjEwLCAxMiwgCisgICAgMjExLCAzMiwgMjM1LCAyMTQsIDEyLCAyMTEsIDMyLCAyMzYsIDM1LCAxMiwgMjExLCAzMiwgMjM1LCAyMTEsIDEyLCAyMTEsIAorICAgIDMyLCAyMTAsIDcyLCAxMiwgMjExLCAzMiwgMjM1LCAyMTMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOSwgMTIsIDIxMSwgMzIsIAorICAgIDIzNiwgMzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMiwgMTIsIDIxMSwgMzIsIDIzNSwgMjA4LCAxMiwgMjExLCAzMiwgMjIzLCAKKyAgICAxNjMsIDEyLCAyMTEsIDMyLCAyMzcsIDE3MSwgMTIsIDIxMSwgMzIsIDE5NCwgMTIsIDIxMSwgMzIsIDIxOSwgMTg0LCAxMiwgCisgICAgMjExLCAzMiwgMjExLCAyMzEsIDEyLCAyMTEsIDMyLCAyNDUsIDUxLCAxMiwgMjExLCAzMiwgMjM1LCAyMTUsIDEyLCAyMTEsIAorICAgIDMyLCAyMzcsIDEzLCAxMiwgMjExLCAzMiwgMjEwLCA4MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTUyLCAxMiwgMjExLCAzMiwgCisgICAgMjExLCAxMDgsIDEyLCAyMTEsIDMyLCAyMTMsIDk4LCAxMiwgMjExLCAzMiwgMjE5LCAzOCwgMTIsIDIxMSwgMzIsIDIxNywgCisgICAgMTM2LCAxMiwgMjExLCAzMiwgMjA4LCAxNzQsIDEyLCAyMTEsIDMyLCAyMTAsIDcxLCAxMiwgMjExLCAzMiwgMjEwLCAxNjMsIAorICAgIDEyLCAyMTEsIDMyLCAyMzUsIDIyMywgMTIsIDIxMSwgMzIsIDIzNSwgMjA3LCAxMiwgMjExLCAzMiwgMjE4LCAyMTAsIDEyLCAKKyAgICAyMTEsIDMyLCAyMTcsIDEzNCwgNjcsIDEsIDUsIDIyOCwgMjA5LCA2NywgMSwgNSwgMjEyLCAxNjIsIDY3LCAxLCA1LCAyMTEsIAorICAgIDEwLCA2NywgMSwgNSwgMTM1LCA2NywgMSwgNSwgMjIxLCA4NCwgNjcsIDEsIDUsIDE1MiwgNjcsIDEsIDUsIDIzNywgMywgCisgICAgNjcsIDEsIDUsIDIzNiwgMjYsIDY3LCAxLCA1LCAyMzcsIDY3LCA2NywgMSwgNSwgMjM2LCAxMzYsIDY3LCAxLCA1LCAyMjMsIAorICAgIDI0NiwgNjcsIDEsIDUsIDIxNiwgMjIwLCA2NywgMSwgNSwgMjE2LCA1NywgNjcsIDEsIDUsIDIxNSwgMTQ1LCA2NywgMSwgNSwgCisgICAgMjE2LCAxNTgsIDY3LCAxLCA1LCAyMTUsIDIyNywgMTAyLCAyOCwgMjI5LCA1OSwgMTAyLCAyOCwgMjIyLCA5MywgMTAyLCAKKyAgICAyOCwgMjA4LCAyNDAsIDEwMiwgMjgsIDIxNiwgNDcsIDEwMiwgMjgsIDIyNCwgMTQxLCAxMDIsIDI4LCAyMTgsIDE1MywgCisgICAgMTAyLCAyOCwgMjEyLCAxMTEsIDEwMiwgMjgsIDIzMSwgMTA2LCAxMDIsIDI4LCAyNDYsIDc0LCAxMDIsIDI4LCAyNDYsIAorICAgIDEzOCwgMTAyLCAyOCwgMjI5LCAxMjAsIDEwMiwgMjgsIDIwOSwgNjYsIDEwMiwgMjgsIDIxOCwgMTkwLCAxMDIsIDI4LCAKKyAgICAyMzYsIDI1MSwgMTAyLCAyOCwgMjI5LCA2MCwgNjMsIDEwMiwgMjgsIDIyMiwgOTQsIDYzLCAxMDIsIDI4LCAyMDgsIDI0MSwgCisgICAgNjMsIDEwMiwgMjgsIDIxNiwgNDgsIDYzLCAxMDIsIDI4LCAyMjQsIDE0MiwgNjMsIDEwMiwgMjgsIDIxOCwgMTU0LCA2MywgCisgICAgMTAyLCAyOCwgMjEyLCAxMTIsIDYzLCAxMDIsIDI4LCAyMzEsIDEwNywgNjMsIDEwMiwgMjgsIDI0NiwgNzUsIDYzLCAxMDIsIAorICAgIDI4LCAyNDYsIDEzOSwgNjMsIDEwMiwgMjgsIDIyOSwgMTIxLCA2MywgMTAyLCAyOCwgMjA5LCA2NywgNjMsIDEwMiwgMjgsIAorICAgIDIxOCwgMTkxLCA2MywgMTAyLCAyOCwgMjM2LCAyNTIsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2OCwgMTAyLCAyMjgsIDI1MywgCisgICAgMTY3LCAyMjAsIDU0LCAxMDIsIDIyOCwgMjUzLCAxNjcsIDE1OCwgMjM2LCAyNiwgMTAyLCAxODksIDEwNSwgMTAyLCAxODksIAorICAgIDEwOCwgMTAyLCAxODksIDE0NywgMTAyLCAxODksIDE0OSwgMTAyLCAxODksIDE3MCwgMTAyLCAxODksIDE5NSwgMTAyLCAKKyAgICAxODksIDIxMywgMTExLCAxMDIsIDE4OSwgMTk5LCAxMDIsIDE4OSwgMjIyLCA2MywgMTAyLCAxODksIDIwOSwgMTUyLCAxMDIsIAorICAgIDE4OSwgMjI0LCAyOSwgMTAyLCAxODksIDIzOSwgMjQ5LCAxMDIsIDE4OSwgMjA0LCA4MCwgMTAyLCAxODksIDIwMywgMjQzLCAKKyAgICAxMDIsIDE4OSwgMjI0LCAyMjAsIDEwMiwgMTg5LCAyNDEsIDE3OSwgMTAyLCAxODksIDIxMCwgMjE0LCAxMDIsIDE4OSwgCisgICAgMjExLCA2NCwgMTAyLCAxODksIDIzNywgNzQsIDEwMiwgMTg5LCAyMTIsIDksIDEwMiwgMTg5LCAyMjMsIDg0LCAxMDIsIAorICAgIDE4OSwgMjExLCAyMTMsIDEwMiwgMTg5LCAyNDAsIDQsIDEwMiwgMTg5LCAyNDUsIDIxMSwgMTAyLCAxODksIDIyOCwgMTAyLCAKKyAgICAxMDIsIDE4OSwgMjE2LCA5NSwgMTAyLCAxODksIDI0NywgNzEsIDEwMiwgMTg5LCAyMTEsIDE0LCAxMDIsIDE4OSwgMjEwLCAKKyAgICAxOTYsIDEwMiwgMTg5LCAyNDEsIDY1LCAxMDIsIDE4OSwgMjE2LCA4NywgMTAyLCAxODksIDI1MSwgMTAsIDEwMiwgMTg5LCAKKyAgICAyNDAsIDMzLCAxMDIsIDE4OSwgMjE2LCA4NSwgMTAyLCAxODksIDIxMywgMTQ5LCAxMDIsIDE4OSwgMjE2LCAxNTcsIDQzLCAKKyAgICAxODksIDIxNywgNDYsIDQzLCAxODksIDIyOSwgODMsIDQzLCAxODksIDIxNCwgMTk1LCA0MywgMTg5LCAyMjgsIDI0OSwgNDMsIAorICAgIDQyLCAyMDksIDE1MywgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIwNywgMTUyLCAyMjAsIDMyLCA2MiwgMjExLCAKKyAgICAxNzcsIDQzLCA0MiwgMjA5LCA1NCwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIzOSwgMTU0LCAyMjAsIDMyLCAKKyAgICA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjQwLCAxOSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIxMiwgNzUsIAorICAgIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTMsIDEwNiwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIAorICAgIDI0MSwgMTM1LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDIxOSwgNjcsIDU0LCA0MywgNDIsIDIwNywgMTUyLCAxMDUsIDQzLCAKKyAgICA0MiwgMjA3LCAxNTIsIDEwOCwgNDMsIDQyLCAyMDcsIDE1MiwgMTQ3LCA0MywgNDIsIDIwNywgMTUyLCAxNDksIDQzLCA0MiwgCisgICAgMjA3LCAxNTIsIDE3MCwgNDMsIDQyLCAyMDcsIDE1MiwgMTk1LCA0MywgNDIsIDIwNywgMTUyLCAyMTMsIDExMSwgNDMsIDQyLCAKKyAgICAyMDcsIDE1MiwgMTk5LCA0MywgNDIsIDIwNywgMTUyLCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgNTMsIDQzLCA0MiwgMjA5LCAKKyAgICA1NCwgMTA1LCA0MywgNDIsIDIwOSwgNTQsIDEwOCwgNDMsIDQyLCAyMDksIDU0LCAxNDcsIDQzLCA0MiwgMjA5LCA1NCwgCisgICAgMTQ5LCA0MywgNDIsIDIwOSwgNTQsIDE3MCwgNDMsIDI4LCAyMjksIDU5LCA0MywgMjgsIDIyMiwgOTMsIDQzLCAyOCwgMjA4LCAKKyAgICAyNDAsIDQzLCAyOCwgMjE2LCA0NywgNDMsIDI4LCAyMjQsIDE0MSwgNDMsIDI4LCAyMTgsIDE1MywgNDMsIDI4LCAyMTIsIAorICAgIDExMSwgNDMsIDI4LCAyMzEsIDEwNiwgNDMsIDI4LCAyNDYsIDc0LCA0MywgMjgsIDI0NiwgMTM4LCA0MywgMjgsIDIyOSwgCisgICAgMTIwLCA0MywgMjgsIDIwOSwgNjYsIDQzLCAyOCwgMjE4LCAxOTAsIDQzLCAyOCwgMjM2LCAyNTEsIDQzLCAyOCwgMjI5LCAKKyAgICA2MCwgNjMsIDQzLCAyOCwgMjIyLCA5NCwgNjMsIDQzLCAyOCwgMjA4LCAyNDEsIDYzLCA0MywgMjgsIDIxNiwgNDgsIDYzLCAKKyAgICA0MywgMjgsIDIyNCwgMTQyLCA2MywgNDMsIDI4LCAyMTgsIDE1NCwgNjMsIDQzLCAyOCwgMjEyLCAxMTIsIDYzLCA0MywgMjgsIAorICAgIDIzMSwgMTA3LCA2MywgNDMsIDI4LCAyNDYsIDc1LCA2MywgNDMsIDI4LCAyNDYsIDEzOSwgNjMsIDQzLCAyOCwgMjI5LCAKKyAgICAxMjEsIDYzLCA0MywgMjgsIDIwOSwgNjcsIDYzLCA0MywgMjgsIDIxOCwgMTkxLCA2MywgNDMsIDI4LCAyMzYsIDI1MiwgNjMsIAorICAgIDQzLCAyMjgsIDI1MywgMTY3LCAyNDYsIDE4OSwgNDMsIDIyOCwgMjUzLCAxNjcsIDIzMCwgNzgsIDQzLCAyOCwgMjMxLCAKKyAgICAxMDcsIDY4LCAyMjgsIDI1MywgMjExLCA5NywgOTcsIDQzLCAxODksIDEwNSwgNDMsIDE4OSwgMTA4LCA0MywgMTg5LCAxNDcsIAorICAgIDQzLCAxODksIDE0OSwgNDMsIDE4OSwgMTcwLCA0MywgMTg5LCAxOTUsIDQzLCAxODksIDIxMywgMTExLCA0MywgMTg5LCAKKyAgICAxOTksIDQzLCAxODksIDIyMiwgNjMsIDQzLCAxODksIDIwOSwgMTUyLCA0MywgMTg5LCAyMjQsIDI5LCA0MywgMTg5LCAyMzksIAorICAgIDI0OSwgNDMsIDE4OSwgMjA0LCA4MCwgNDMsIDE4OSwgMjAzLCAyNDMsIDQzLCAxODksIDIyNCwgMjIwLCA0MywgMTg5LCAKKyAgICAyNDEsIDE3OSwgNDMsIDE4OSwgMjEwLCAyMTQsIDQzLCAxODksIDIxMSwgNjQsIDQzLCAxODksIDIzNywgNzQsIDQzLCAxODksIAorICAgIDIxMiwgOSwgNDMsIDE4OSwgMjIzLCA4NCwgNDMsIDE4OSwgMjExLCAyMTMsIDQzLCAxODksIDI0MCwgNCwgNDMsIDE4OSwgCisgICAgMjQ1LCAyMTEsIDQzLCAxODksIDIyOCwgMTAyLCA0MywgMTg5LCAyMTQsIDE2OSwgNDMsIDE4OSwgMjI1LCAxMjYsIDQzLCAKKyAgICAxODksIDI0MCwgNDIsIDQzLCAxODksIDIxMCwgMjI2LCA0MywgMTg5LCAyNDAsIDIxNiwgNDMsIDE4OSwgMjE3LCAyMzMsIAorICAgIDQzLCAxODksIDI1MCwgMzgsIDQzLCAxODksIDIzMCwgMjAwLCA0MywgMTg5LCAyMTYsIDg1LCA0MywgMTg5LCAyNDUsIDE3MCwgCisgICAgNDMsIDE4OSwgMjQ1LCAxNjAsIDQzLCAxODksIDIzNiwgMjQ0LCA0MywgMTg5LCAyNDYsIDIxNywgNDMsIDE4OSwgMjI3LCAwLCAKKyAgICA0MywgMTg5LCAyMjcsIDIyMiwgNDMsIDE4OSwgMjE2LCAxNiwgNDMsIDE4OSwgMjI1LCAxMSwgNDMsIDE4OSwgMjE2LCAxMTIsIAorICAgIDQzLCAxODksIDIxMSwgMTQsIDQzLCAxODksIDIxMCwgMTk2LCA0MywgMTg5LCAyNDEsIDY1LCA0MywgMTg5LCAyMTYsIDg3LCAKKyAgICA0MywgMTg5LCAyNTEsIDEwLCA0MywgMTg5LCAyMjIsIDc5LCA0MywgNDIsIDIwOSwgNTQsIDE5NSwgNDMsIDQyLCAyMDksIAorICAgIDU0LCAyMTMsIDExMSwgNDMsIDQyLCAyMDksIDU0LCAxOTksIDQzLCA0MiwgMjA5LCA1NCwgMjIyLCA2MywgNDMsIDQyLCAKKyAgICAyMzksIDE1MywgNDMsIDQyLCAyMzksIDE1NCwgMTA1LCA0MywgNDIsIDIzOSwgMTU0LCAxMDgsIDQzLCA0MiwgMjM5LCAxNTQsIAorICAgIDE0NywgNDMsIDQyLCAyMzksIDE1NCwgMTQ5LCA0MywgNDIsIDIzOSwgMTU0LCAxNzAsIDQzLCA0MiwgMjM5LCAxNTQsIDE5NSwgCisgICAgNDMsIDQyLCAyMzksIDE1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjM5LCAxNTQsIDE5OSwgNDMsIDQyLCAyMzksIDE1NCwgMjIyLCAKKyAgICA2MywgNDMsIDQyLCAyNDAsIDE4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgMTcxLCAxMzksIDIwOSwgMTY0LCAxNiwgCisgICAgMzUsIDI0MCwgNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA5NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIAorICAgIDE1MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjUsIDYzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzYsIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCA3NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIDMwLCAxMzksIDIwOSwgMTY0LCAKKyAgICAxNiwgMzUsIDIxMywgMTI5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyMCwgNzksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjIxLCAxNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCA3MCwgNTEsIDIzNywgMTMsIDUxLCAyNDEsIDI0LCA1MSwgCisgICAgMjQwLCAyMjYsIDIyNywgMTIwLCAyMjcsIDE0NywgNTQsIDQzLCA2NywgNjMsIDQzLCA2NywgNzUsIDQzLCA2NywgNjgsIDQzLCAKKyAgICA2NywgNzQsIDQzLCA2NywgNzgsIDQzLCA2NywgMTczLCA0MywgNjcsIDIyOSwgMTAwLCA0MywgNjcsIDIyOCwgMjA5LCA0MywgCisgICAgNjcsIDIyOSwgMjAxLCA0MywgNjcsIDIyOSwgMjYsIDQzLCA2NywgMjE1LCAzNiwgNDMsIDY3LCAyMTIsIDE2MiwgNDMsIDY3LCAKKyAgICAyMTEsIDEwLCA0MywgNjcsIDIxNCwgMTc3LCA0MywgNjcsIDIxMiwgMTMsIDQzLCA2NywgMjEwLCAyMiwgNDMsIDY3LCAyMDksIAorICAgIDIsIDQzLCA2NywgMjA3LCAyMDMsIDQzLCA2NywgMjA5LCAxODcsIDQzLCA2NywgMTM1LCA0MywgNjcsIDIwMSwgMjAxLCA0MywgCisgICAgNjcsIDIyMiwgMTAwLCA0MywgNjcsIDIyMSwgODQsIDQzLCA2NywgMjIyLCAyNDAsIDQzLCA2NywgMjIxLCAxOTEsIDQzLCAKKyAgICA2NywgMTUyLCA0MywgNjcsIDIzNywgMywgNDMsIDY3LCAyMzYsIDI2LCA0MywgNjcsIDIzNywgNjcsIDQzLCA2NywgMjM2LCAKKyAgICAxMzYsIDQzLCA2NywgMTkyLCA0MywgNjcsIDIyNCwgMTU1LCA0MywgNjcsIDIyMywgMjQ2LCA0MywgNjcsIDIyNSwgMjAsIAorICAgIDQzLCA2NywgMjI0LCA4MiwgNDMsIDY3LCAxOTgsIDQzLCA2NywgMjAyLCAyMTMsIDQzLCA2NywgMjAyLCAyNDcsIDQzLCA2NywgCisgICAgMjE2LCAyMjAsIDQzLCA2NywgMjE2LCA1NywgNDMsIDY3LCAyMTUsIDE0NSwgNDMsIDY3LCAyMTYsIDE1OCwgNDMsIDY3LCAKKyAgICAyMTUsIDIyNywgNDMsIDY3LCAyMDQsIDExMSwgNDMsIDY3LCAyMDQsIDMwLCA0MywgNjcsIDIwNCwgNjIsIDQzLCA2NywgCisgICAgMjA0LCAwLCA1MSwgMjUwLCAxNzQsIDUxLCAyNTAsIDgzLCA1MSwgMjUwLCAyMDEsIDUxLCAyNTEsIDIzOSwgNTEsIDIzMSwgCisgICAgMTgsIDUxLCAyMzAsIDI0MiwgNTEsIDIwNiwgMjI3LCA1MSwgMjQwLCAyNTMsIDUxLCAyNDEsIDE1OCwgNTEsIDIyMCwgMjEsIAorICAgIDUxLCAyMjAsIDE0LCA1MSwgMjMwLCAxNiwgNTEsIDIyOSwgMjM4LCA1MSwgMjI5LCAyMzUsIDUxLCAyMzgsIDIyMCwgNTEsIAorICAgIDIzOCwgMjI5LCA1MSwgMjM4LCA3MCwgNTEsIDIzOCwgNjYsIDUxLCAyMjgsIDEzMiwgNTEsIDIzOCwgNTgsIDUxLCAyMjksIAorICAgIDc1LCA1MSwgMjI5LCA3NCwgNTEsIDIyOSwgNzMsIDUxLCAyMjksIDcyLCA1MSwgMjM3LCAyMDAsIDUxLCAyMzcsIDE5OSwgCisgICAgNTEsIDIyOCwgMTgwLCA1MSwgMjI4LCAxODIsIDUxLCAyMjksIDE5NCwgNTEsIDIyOCwgMjUxLCA1MSwgMjI5LCAzLCA1MSwgCisgICAgMjE1LCAxNywgNTEsIDIxNCwgMjM2LCA1MSwgMjEyLCA5MiwgNTEsIDIxMywgMTM0LCA1MSwgMjEzLCAxMzMsIDUxLCAyNDQsIAorICAgIDIwOSwgNTEsIDI0NCwgMTQsIDUxLCAyNDMsIDg2LCA1MSwgMjA4LCAxNjMsIDUxLCAyMjMsIDc5LCA1MSwgMjIxLCAxNTQsIAorICAgIDUxLCAyMzcsIDE0MiwgNTEsIDIxOSwgMTYzLCA1MSwgMjE5LCAxNjIsIDUxLCAyNDksIDI5LCA1MSwgMjE4LCAxNjQsIDUxLCAKKyAgICAyMTgsIDEyNywgNTEsIDIxOCwgMTI4LCA1MSwgMjQ4LCA1NywgNTEsIDIzNiwgMjQsIDUxLCAyMzYsIDE5LCA1MSwgMjQ3LCAKKyAgICAxNTEsIDUxLCAyMzYsIDQsIDUxLCAyMzcsIDM5LCA1MSwgMjE4LCAyMjAsIDUxLCAyMTksIDQsIDUxLCAyMzcsIDIyLCA1MSwgCisgICAgMjE5LCAwLCA1MSwgMjE5LCAxOCwgNTEsIDI0OCwgMTQ1LCA1MSwgMjE4LCA1OCwgNTEsIDI0NywgMjUzLCA1MSwgMjM2LCAKKyAgICAxMjAsIDUxLCAyMTgsIDQ2LCA1MSwgMjM2LCAxMTEsIDUxLCAyMzYsIDExMywgNTEsIDIyNSwgMTM4LCA1MSwgMjI1LCAxMzQsIAorICAgIDUxLCAyMjUsIDE0MywgNTEsIDIyNSwgODMsIDUxLCAyMjUsIDExMCwgNTEsIDIyNCwgMTIxLCA1MSwgMjI0LCA5NywgNTEsIAorICAgIDIyNCwgOTYsIDUxLCAyMjUsIDAsIDUxLCAyMjQsIDI1MywgNTEsIDIyNSwgMSwgNTEsIDIwMywgMTA5LCA1MSwgMjAzLCAKKyAgICAxMDcsIDUxLCAyMDIsIDIwMiwgNTEsIDIxNSwgMjQzLCA1MSwgMjE1LCAyNDcsIDUxLCAyMTUsIDExOSwgNTEsIDIxNSwgCisgICAgMTEzLCA1MSwgMjE2LCAxMDksIDUxLCAyMTYsIDEwNiwgNTEsIDIwNCwgNzgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCAKKyAgICA0MywgMjAyLCA4NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxMDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjM2LCA0MywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAxNDksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIzNiwgNDMsIDE5NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDExMSwgMTM5LCAyMDksIDE2NCwgCisgICAgMTYsIDM1LCAyMzYsIDQzLCAxOTksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MywgMTM5LCAyMDksIAorICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDksIDE1MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDExMiwgCisgICAgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAKKyAgICAyMDksIDU1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIzNiwgNDMsIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEyLCA4MiwgMTM5LCAyMDksIDE2NCwgCisgICAgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDE0MCwgMTM5LCAKKyAgICAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMjIsIDYwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgCisgICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIzNiwgNDMsIDIwNywgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQyLCAxMzksIDIwOSwgCisgICAgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ3LCA1MSwgMjM2LCAzNCwgNTEsIDI0NCwgMjEyLCA1MSwgMjUwLCAzNCwgCisgICAgNTEsIDE0MiwgNTEsIDIxOSwgMjA2LCA1MSwgMjE5LCAzOSwgNTEsIDI0MywgMTE1LCA1MSwgMjQzLCAxMTYsIDIxMSwgMTc2LCAKKyAgICA1MSwgMjQzLCAxMTYsIDI0NSwgMTA1LCA1MSwgMjMwLCAxOTcsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMzcsIDQwLCA1MSwgCisgICAgMjQxLCAyNywgMjIzLCA4NSwgMjEwLCA5MiwgNTEsIDI0MSwgMjcsIDIyMywgODUsIDIwOSwgMjQ1LCA1MSwgMjQxLCAyNywgCisgICAgMjIzLCA4NSwgMjI0LCAyNTIsIDUxLCAyNDUsIDE2MiwgNTEsIDIxOSwgMTY5LCAyNTAsIDIzMywgNTEsIDIwMSwgMjAxLCAKKyAgICA1MSwgMjIzLCAyNDcsIDYzLCA1MSwgMTkyLCA1MSwgMTczLCA1MSwgMjI5LCAyMDQsIDUxLCAyMjUsIDU5LCA1MSwgMjM4LCAKKyAgICAyMDgsIDUxLCAyNDcsIDc2LCA1MSwgMjI5LCAyMDMsIDUxLCAyMTgsIDIxMSwgNTEsIDIyMiwgMjA3LCA1MSwgMjIzLCAyNDcsIAorICAgIDI0MCwgMTc0LCA1MSwgMjIzLCAyNDcsIDIzOSwgNzUsIDUxLCAyMjQsIDE5NiwgNTEsIDIyOSwgMTQ2LCA1MSwgMjM1LCAKKyAgICAyMTUsIDUxLCAyMjksIDEwMiwgNTEsIDIyNCwgMTU3LCA1MSwgMjM4LCA4MywgNTEsIDIwOSwgNCwgNTEsIDIyMywgMjQ3LCAKKyAgICAxNTksIDUxLCAyMjQsIDkwLCA1MSwgMjQzLCAxMjUsIDUxLCAyMjksIDQxLCA1MSwgMjM5LCAxODgsIDUxLCAyMjEsIDIyOSwgCisgICAgNTEsIDIyMywgMjQ3LCAyMjYsIDE4NSwgNTEsIDIyNCwgODcsIDUxLCAyNDUsIDI1NSwgNTEsIDIyOSwgMzUsIDUxLCAyMjQsIAorICAgIDg4LCAyMTEsIDE3NiwgNTEsIDI0NiwgMCwgMjExLCAxNzYsIDUxLCAyMjYsIDE4NiwgMjExLCAxNzYsIDUxLCAyMjksIDM2LCAKKyAgICAyMTEsIDE3NiwgNTEsIDIyNCwgODgsIDI0NSwgMTA1LCA1MSwgMjQ2LCAwLCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAyNDUsIAorICAgIDEwNSwgNTEsIDIyOSwgMzYsIDI0NSwgMTA1LCA1MSwgMjI2LCAxODYsIDExNSwgMTk0LCA1MSwgMjI2LCAxODYsIDExNSwgCisgICAgMjE1LCA5NCwgMjExLCAxNzYsIDUxLCAxODUsIDUxLCAyMjgsIDI0NCwgNTEsIDIyMywgMjUwLCA1MSwgMjM4LCAxNSwgNTEsIAorICAgIDIxNiwgMjA3LCA1MSwgMjE2LCAyMDgsIDExNSwgMTk0LCA1MSwgMjE2LCAyMDgsIDExNSwgMjE1LCA5NCwgMjExLCAxNzYsIAorICAgIDUxLCAyMTcsIDIwNCwgNTEsIDIyMSwgMTIyLCA1MSwgMjIzLCAyNDcsIDE5NCwgNTEsIDIyMywgMjQ4LCA1MSwgMjE3LCAKKyAgICAxNTQsIDUxLCAyMjEsIDIyLCA1MSwgMjIzLCAyNDcsIDIwNiwgMTY0LCA1MSwgMjIzLCAxODcsIDUxLCAyMjgsIDE3MCwgNTEsIAorICAgIDIyMywgMTg4LCAyMjUsIDAsIDUxLCAyMTcsIDE1MywgNTEsIDIyMSwgMjEsIDUxLCAyMjMsIDI0NywgMjA0LCAxNDQsIDUxLCAKKyAgICAyMjMsIDE4MSwgNTEsIDIyOCwgMTY4LCA1MSwgMjIzLCAxODIsIDIyNSwgMCwgNTEsIDIzMCwgNTUsIDIyMCwgNTgsIDUxLCAKKyAgICAyMjYsIDE4NiwgMjIwLCA1OCwgNTEsIDI1MCwgMjQ3LCA1MSwgMjQ3LCAyMjksIDUxLCAyNDcsIDYsIDUxLCAyNDYsIDIzOSwgCisgICAgNTEsIDI0NywgMTI2LCAxMTUsIDIyOSwgMTQ2LCA1MSwgMjQ1LCAyNTQsIDUxLCAyNDQsIDEyOSwgNTEsIDIzNywgMTg0LCAKKyAgICA1MSwgMTUyLCA1MSwgMjM2LCAzNSwgNTEsIDIzMSwgNDksIDUxLCAyMjksIDQ4LCA1MSwgMjI5LCAzNiwgMjQ3LCA0NywgNTEsIAorICAgIDIyOCwgMjExLCA1MSwgMjI3LCA1MiwgNTEsIDIyNywgNTEsIDUxLCAyMjcsIDM4LCA1MSwgMjI2LCAyMDAsIDUxLCAyMjUsIAorICAgIDYwLCAyMTIsIDM2LCA1MSwgMjI0LCAxMjAsIDUxLCAyMjQsIDU2LCA1MSwgMjE4LCAyMDksIDUxLCAyMTgsIDcyLCA1MSwgCisgICAgMjE4LCAxMSwgNTEsIDIxOCwgOSwgNTEsIDIxMSwgMTY4LCA1MSwgMjEwLCAxNzcsIDUxLCAyMDQsIDY0LCA1MSwgMjA2LCAKKyAgICAxNjUsIDExNSwgMjI2LCAxODUsIDUxLCAzNCwgMTE1LCAyMjYsIDE4NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIAorICAgIDEzMywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjQ0LCAxMzMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgCisgICAgMzUsIDI0NCwgMTMzLCAxNzAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5NSwgMTM5LCAyMDksIDE2NCwgCisgICAgMTYsIDM1LCAyNDQsIDEzMywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5OSwgMTM5LCAKKyAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgCisgICAgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDI0MSwgMTEyLCAxMzksIDIwOSwgMTY0LCAxNiwgCisgICAgMzUsIDI0NCwgMTMzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCA1NSwgMTM5LCAKKyAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjM5LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAorICAgIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjQ0LCAxMzMsIDIxMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDE0MCwgMTM5LCAyMDksIAorICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKKyAgICAxNTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDIsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIAorICAgIDE0OCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjQ0LCAxMzMsIDIwNywgMTQ0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE1MCwgMTM5LCAyMDksIAorICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDYsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgCisgICAgNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTIsIDUxLCAyMzgsIDI0NiwgMjM3LCAxNiwgMzUsIAorICAgIDIwOSwgOTMsIDI0NSwgMTQyLCAyMzcsIDUxLCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjE2LCAxNTEsIDI0MSwgMTc5LCAKKyAgICAyMzcsIDE2LCAzNSwgMjQzLCAyMDMsIDI1MCwgNTAsIDIwOSwgOTMsIDI0OCwgMTQwLCAyMzcsIDE2LCAzNSwgMjAyLCAyMjYsIAorICAgIDIzOSwgMTgwLCAyMzcsIDE2LCAzNSwgMjA0LCAxMDMsIDIzNywgMTYsIDM1LCAyNDUsIDIxNCwgMjM3LCAxNiwgMzUsIDIwOSwgCisgICAgOTMsIDI1MCwgMTA1LCAyMzcsIDE2LCAzNSwgMjM2LCAxMjcsIDIwOCwgMTY5LCAyMzcsIDE2LCAzNSwgNSwgMjA5LCAyMzEsIAorICAgIDIzNywgMTYsIDM1LCAyMDgsIDk3LCAyMzcsIDE2LCAzNSwgMjE5LCAzMiwgMjM3LCAxNiwgMzUsIDIxMSwgOTYsIDIzNywgCisgICAgMTYsIDM1LCAyNDAsIDQ0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMzIsIDIzNywgMTYsIDM1LCAyMjQsIDc1LCAKKyAgICAyMzcsIDE2LCAzNSwgMjQxLCA2NCwgMjM3LCAxNiwgMzUsIDIzOSwgMTgxLCAyMzcsIDE2LCAzNSwgMjAzLCAyMzYsIDIyMCwgCisgICAgMzIsIDIwOSwgOTMsIDI0NCwgNzEsIDIzNywgMTYsIDM1LCAyNTAsIDE1NCwgMjM3LCAxNiwgMzUsIDI0NSwgMTkzLCAyMzcsIAorICAgIDE2LCAzNSwgMjQ4LCA0OSwgMjA5LCAyNCwgMjM3LCAxNiwgMzUsIDIzOCwgMTMsIDIzNywgMTYsIDM1LCAyMTEsIDE5MiwgCisgICAgMjUwLCAxNzMsIDIzNywgMTYsIDM1LCAyMTYsIDc3LCAyMzcsIDE2LCAzNSwgMjMxLCAxMiwgMjM3LCAxNiwgMzUsIDIzNywgCisgICAgMjQ5LCAyMDksIDIzMSwgMjM3LCAxNiwgMzUsIDIyNCwgOCwgMjQ1LCAxNjQsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE3LCAKKyAgICAyNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNTEsIDE0MywgMjA0LCA4MCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0NiwgCisgICAgMjQsIDIzOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjMxLCAyNiwgMjM3LCAxNiwgMzUsIDI0MiwgMjAsIDIzNywgMTYsIDM1LCAKKyAgICAyMTYsIDgwLCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMTYsIDIzNywgMTYsIDM1LCAyMTcsIDIyMSwgMjM3LCAxNiwgCisgICAgMzUsIDI0NCwgMTQ5LCA3NiwgMjA5LCA5MywgMjI3LCAxMzQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDAsIDgyLCAyMzcsIAorICAgIDE2LCAzNSwgMjE5LCAyNTAsIDIzNywgMTYsIDM1LCAyMjAsIDg1LCAyMzcsIDE2LCAzNSwgMjQ0LCA0MiwgMjM3LCAxNiwgCisgICAgMzUsIDI0NCwgNjMsIDIzNywgMTYsIDM1LCAyMzEsIDQwLCAyMzcsIDE2LCAzNSwgMjQ3LCAyMTcsIDIzNywgMTYsIDM1LCAKKyAgICAyNDUsIDIzNSwgMjA4LCAxNzMsIDIyNSwgMywgMjM3LCAxNiwgMzUsIDIzOCwgMjE1LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIAorICAgIDIxNywgMTYzLCAyMDYsIDIxMywgMjM3LCAxNiwgMzUsIDIxOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA1MCwgCisgICAgMjM3LCAxNiwgMzUsIDIxNiwgNjgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDcsIDEyLCAyMzcsIDE2LCAzNSwgMjA5LCAKKyAgICA5MywgMjUwLCAxMDEsIDIwOSwgMTgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjksIDE5NSwgMjExLCA2OCwgMjI0LCAxMiwgCisgICAgMjM3LCAxNiwgMzUsIDI0NCwgOSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIyNSwgODUsIDIyNSwgMTM5LCAyMzcsIDE2LCAKKyAgICAzNSwgMjUxLCAxNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMDQsIDk2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjM4LCAKKyAgICAxNzMsIDIwNCwgMTYsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMzAsIDg0LCAyMjgsIDMzLCAyMzcsIDE2LCAzNSwgMjQzLCAKKyAgICAxNTMsIDIzNywgMTYsIDM1LCAyMjcsIDEyMSwgMjM3LCAxNiwgMzUsIDIzMSwgMTUsIDIwOCwgMjQsIDIzNywgMTYsIDM1LCAKKyAgICA1LCAyMTcsIDI0NCwgMjM3LCAxNiwgMzUsIDI1MSwgODIsIDI0NSwgMjI2LCAyMzcsIDE2LCAzNSwgMjQ4LCAxNDMsIDI0NSwgCisgICAgMjI2LCAxMSwgNCwgMjMwLCAyMDEsIDExLCA0LCAyMzAsIDE5MywgMTEsIDQsIDc1LCAxMSwgNCwgMjMwLCAyMjcsIDExLCA0LCAKKyAgICAyMzEsIDEwOCwgMTEsIDQsIDIzMSwgOTEsIDExLCA0LCAyMzEsIDExMCwgMTEsIDQsIDIzMSwgMTA5LCAxMSwgNCwgMjUwLCAKKyAgICA0OSwgMTEsIDQsIDI1MCwgMTAsIDExLCA0LCA2MywgMTEsIDQsIDI1MCwgMTc1LCAxMSwgNCwgMjA2LCAyMjUsIDExLCA0LCAKKyAgICAyMDYsIDIyOCwgMTEsIDQsIDIwNiwgMjI2LCAxMSwgNCwgMjE5LCAyMjQsIDExLCA0LCAyMTksIDE5MywgMTEsIDQsIDc4LCAKKyAgICAxMSwgNCwgMjIwLCA5LCAxMSwgNCwgMjQwLCAyMTcsIDExLCA0LCA3NCwgMTEsIDQsIDIwMywgMjE3LCAxMSwgNCwgMjQ4LCAKKyAgICA1MSwgMTEsIDQsIDI0OCwgNDcsIDExLCA0LCAyNDgsIDg2LCAxMSwgNCwgMjQ4LCA2MSwgMTEsIDQsIDI0OCwgNzUsIDExLCAKKyAgICA0LCAyNDgsIDc0LCAxMSwgNCwgMjQ4LCA3NywgMTEsIDQsIDI0OCwgNzYsIDExLCA0LCAyNDgsIDIwOSwgMTEsIDQsIDI0OCwgCisgICAgMjAxLCAxMSwgNCwgMjQ5LCAzMiwgMTEsIDQsIDI0OCwgMjMyLCAxMSwgNCwgMjQ3LCAxNjMsIDExLCA0LCAyNDcsIDE2NywgCisgICAgMTEsIDQsIDI0NywgMTY0LCAxMSwgNCwgMjQ3LCAyNTIsIDExLCA0LCAyNDcsIDIzMywgMTEsIDQsIDI0OCwgMjMsIDExLCA0LCAKKyAgICAyNDgsIDIsIDExLCA0LCAyNDgsIDEwMSwgMTEsIDQsIDI0OCwgMTYyLCAxMSwgNCwgMjQ4LCAxMTMsIDExLCA0LCAyNDcsIAorICAgIDE0NywgMTEsIDQsIDI0NywgMTQzLCAxMSwgNCwgMjQ3LCAxOTMsIDExLCA0LCAyNDcsIDE2MiwgMTEsIDQsIDI0NywgMTU1LCAKKyAgICAxMSwgNCwgMjQ3LCAxNjAsIDExLCA0LCAyNDcsIDEzMSwgMTEsIDQsIDI0NywgMTI5LCAxMSwgNCwgMjQ3LCAxMzYsIDExLCAKKyAgICA0LCAyNDcsIDEzNCwgMTEsIDQsIDI0NywgMTMyLCAxMSwgNCwgMjQ3LCAxMzMsIDExLCA0LCAyMTgsIDEwNSwgMTEsIDQsIAorICAgIDIxOCwgMTAxLCAxMSwgNCwgMjE4LCAxNjcsIDExLCA0LCAyMTgsIDExNywgMTEsIDQsIDIxOCwgMTMzLCAxMSwgNCwgMjE4LCAKKyAgICAxNjAsIDExLCA0LCAyMTgsIDE1NiwgMTEsIDQsIDIxOSwgNTUsIDExLCA0LCAyMTksIDQ0LCAxMSwgNCwgMTg1LCAxMSwgNCwgCisgICAgMjE5LCA5NiwgMTEsIDQsIDIxNywgMTczLCAxMSwgNCwgMjE3LCAxNzUsIDExLCA0LCAyMTcsIDE3NCwgMTEsIDQsIDIxOCwgCisgICAgMjUsIDExLCA0LCAyMTgsIDE0LCAxMSwgNCwgMjE4LCA2OSwgMTEsIDQsIDIxOCwgNDEsIDExLCA0LCAyMTcsIDE1OSwgMTEsIAorICAgIDQsIDIxNywgMTU1LCAxMSwgNCwgMjE3LCAxOTEsIDExLCA0LCAyMTcsIDE3MiwgMTEsIDQsIDIxNywgMTY0LCAxMSwgNCwgCisgICAgMjE3LCAxNzAsIDExLCA0LCAyMTcsIDEzOCwgMTEsIDQsIDIxNywgMTM3LCAxMSwgNCwgMjE3LCAxNDIsIDExLCA0LCAyMTcsIAorICAgIDE0MSwgMTEsIDQsIDIxNywgMTM5LCAxMSwgNCwgMjE3LCAxNDAsIDExLCA0LCAyNDgsIDE4MywgMTEsIDQsIDI0OCwgMTgyLCAKKyAgICAxMSwgNCwgMjQ4LCAxODksIDExLCA0LCAyNDgsIDE4NCwgMTEsIDQsIDI0OCwgMTg2LCAxMSwgNCwgMjQ4LCAxODUsIDExLCAKKyAgICA0LCAyNDgsIDE4OCwgMTEsIDQsIDI0OCwgMTg3LCAxMSwgNCwgMjQ4LCAxOTUsIDExLCA0LCAyNDgsIDE5NCwgMTEsIDQsIAorICAgIDI0OCwgMTk4LCAxMSwgNCwgMjQ4LCAxOTYsIDExLCA0LCAyNDgsIDE3NCwgMTEsIDQsIDI0OCwgMTc2LCAxMSwgNCwgMjQ4LCAKKyAgICAxNzUsIDExLCA0LCAyNDgsIDE3OSwgMTEsIDQsIDI0OCwgMTc4LCAxMSwgNCwgMjQ4LCAxODEsIDExLCA0LCAyNDgsIDE4MCwgCisgICAgMTEsIDQsIDI0OCwgMTkwLCAxMSwgNCwgMjQ4LCAxOTMsIDExLCA0LCAyNDgsIDE5MSwgMTEsIDQsIDI0OCwgMTcwLCAxMSwgCisgICAgNCwgMjQ4LCAxNjksIDExLCA0LCAyNDgsIDE3NywgMTEsIDQsIDI0OCwgMTczLCAxMSwgNCwgMjQ4LCAxNzEsIDExLCA0LCAKKyAgICAyNDgsIDE3MiwgMTEsIDQsIDI0OCwgMTY2LCAxMSwgNCwgMjQ4LCAxNjUsIDExLCA0LCAyNDgsIDE2OCwgMTEsIDQsIDI0OCwgCisgICAgMTY3LCAxMSwgNCwgMjIzLCA0NywgMTEsIDQsIDIyMywgNDYsIDExLCA0LCAyMjMsIDUyLCAxMSwgNCwgMjIzLCA0OCwgMTEsIAorICAgIDQsIDIyMywgNDksIDExLCA0LCAyMjMsIDUxLCAxMSwgNCwgMjIzLCA1MCwgMTEsIDQsIDIyMywgNTUsIDExLCA0LCAyMjMsIAorICAgIDU0LCAxMSwgNCwgMjIzLCA1NywgMTEsIDQsIDIyMywgNTYsIDExLCA0LCAyMjMsIDQzLCAxMSwgNCwgMjIzLCA0MiwgMTEsIAorICAgIDQsIDIyMywgNDUsIDExLCA0LCAyMjMsIDQ0LCAxMSwgNCwgMjIzLCAzNiwgMTEsIDQsIDIyMywgMzUsIDExLCA0LCAyMjMsIAorICAgIDQwLCAxMSwgNCwgMjIzLCAzOSwgMTEsIDQsIDIyMywgMzcsIDExLCA0LCAyMjMsIDM4LCAxMSwgNCwgMjIzLCAzMCwgMTEsIAorICAgIDQsIDIyMywgMjksIDExLCA0LCAyMjMsIDM0LCAxMSwgNCwgMjIzLCAzMywgMTEsIDQsIDIyMywgMzEsIDExLCA0LCAyMjMsIAorICAgIDMyLCAxMSwgNCwgMjM2LCAxODAsIDExLCA0LCAyMzYsIDE3OSwgMTEsIDQsIDIzNiwgMTg1LCAxMSwgNCwgMjM2LCAxODEsIAorICAgIDExLCA0LCAyMzYsIDE4MiwgMTEsIDQsIDIzNiwgMTg0LCAxMSwgNCwgMjM2LCAxODMsIDExLCA0LCAyMzYsIDE4OCwgMTEsIAorICAgIDQsIDIzNiwgMTg3LCAxMSwgNCwgMjM2LCAxOTAsIDExLCA0LCAyMzYsIDE4OSwgMTEsIDQsIDIzNiwgMTcxLCAxMSwgNCwgCisgICAgMjM2LCAxNzMsIDExLCA0LCAyMzYsIDE3MiwgMTEsIDQsIDIzNiwgMTc2LCAxMSwgNCwgMjM2LCAxNzUsIDExLCA0LCAyMzYsIAorICAgIDE3OCwgMTEsIDQsIDIzNiwgMTc3LCAxMSwgNCwgMjM2LCAxNjcsIDExLCA0LCAyMzYsIDE2NiwgMTEsIDQsIDIzNiwgMTc0LCAKKyAgICAxMSwgNCwgMjM2LCAxNzAsIDExLCA0LCAyMzYsIDE2OCwgMTEsIDQsIDIzNiwgMTY5LCAxMSwgNCwgMjM2LCAxNjEsIDExLCAKKyAgICA0LCAyMzYsIDE2NSwgMTEsIDQsIDIzNiwgMTY0LCAxMSwgNCwgMjM2LCAxNjIsIDExLCA0LCAyMzYsIDE2MywgMTEsIDQsIAorICAgIDIyNCwgOTMsIDExLCA0LCAyMjQsIDkyLCAxMSwgNCwgMjI0LCAxNTUsIDExLCA0LCAyMjQsIDk5LCAxMSwgNCwgMjI0LCAKKyAgICAxMjcsIDExLCA0LCAyMjQsIDE0NSwgMTEsIDQsIDIyNCwgMTQzLCAxMSwgNCwgMjI1LCA3MSwgMTEsIDQsIDIyNSwgNjYsIAorICAgIDExLCA0LCAxOTIsIDExLCA0LCAyMjUsIDEwNiwgMTEsIDQsIDIyMywgMjEzLCAxMSwgNCwgMjIzLCAyMTIsIDExLCA0LCAKKyAgICAyMjMsIDIxNiwgMTEsIDQsIDIyMywgMjE0LCAxMSwgNCwgMjI0LCAyMSwgMTEsIDQsIDIyMywgMjUyLCAxMSwgNCwgMjI0LCAKKyAgICA4MiwgMTEsIDQsIDIyNCwgMjcsIDExLCA0LCAyMjQsIDIwNywgMTEsIDQsIDIyNSwgMjAsIDExLCA0LCAyMjMsIDE5MywgMTEsIAorICAgIDQsIDIyMywgMTg5LCAxMSwgNCwgMjIzLCAyNDYsIDExLCA0LCAyMjMsIDIwOSwgMTEsIDQsIDIyMywgMjAyLCAxMSwgNCwgCisgICAgMjIzLCAyMDcsIDExLCA0LCAyMjMsIDE2NiwgMTEsIDQsIDIyMywgMTY1LCAxMSwgNCwgMjIzLCAxNzEsIDExLCA0LCAyMjMsIAorICAgIDE2OCwgMTEsIDQsIDIzOSwgMjM2LCAxMSwgNCwgMjM5LCAyMzAsIDExLCA0LCAyNDAsIDI2LCAxMSwgNCwgMjM5LCAyNTEsIAorICAgIDExLCA0LCAyNDAsIDczLCAxMSwgNCwgMjQwLCA2NCwgMTEsIDQsIDI0MCwgMTA4LCAxMSwgNCwgMjQwLCA3OCwgMTEsIDQsIAorICAgIDIzOSwgMTM5LCAxMSwgNCwgMjM5LCAxODYsIDExLCA0LCAyMzksIDE2NywgMTEsIDQsIDIzOSwgOTEsIDExLCA0LCAyMzksIAorICAgIDkwLCAxMSwgNCwgMjM5LCAxMDgsIDExLCA0LCAyMzksIDk2LCAxMSwgNCwgMjM5LCA5NCwgMTEsIDQsIDIzOSwgOTUsIDExLCAKKyAgICA0LCAyMzksIDc4LCAxMSwgNCwgMjM5LCA3NywgMTEsIDQsIDIzOSwgODEsIDExLCA0LCAyMzksIDc5LCAxMSwgNCwgMjA1LCAKKyAgICAxOTYsIDExLCA0LCAyMDUsIDE5MSwgMTEsIDQsIDIwNSwgMjMwLCAxMSwgNCwgMjA1LCAyMDUsIDExLCA0LCAyMDUsIDIxOSwgCisgICAgMTEsIDQsIDIwNSwgMjE2LCAxMSwgNCwgMjA1LCAyMjIsIDExLCA0LCAyMDUsIDIyMSwgMTEsIDQsIDIwNiwgNjMsIDExLCA0LCAKKyAgICAyMDYsIDU4LCAxMSwgNCwgMjA2LCA4NiwgMTEsIDQsIDIwNiwgNzUsIDExLCA0LCAyMDUsIDE3MiwgMTEsIDQsIDIwNSwgCisgICAgMTY4LCAxMSwgNCwgMjA1LCAxODksIDExLCA0LCAyMDUsIDE3NCwgMTEsIDQsIDIwNSwgMjMzLCAxMSwgNCwgMjA2LCA0NCwgCisgICAgMTEsIDQsIDIwNCwgMTU3LCAxMSwgNCwgMjA0LCAxNTUsIDExLCA0LCAyMDQsIDE2MywgMTEsIDQsIDIwNCwgMTYwLCAxMSwgCisgICAgNCwgMjA0LCAxNTgsIDExLCA0LCAyMDQsIDE1OSwgMTEsIDQsIDIwNCwgMTQ4LCAxMSwgNCwgMjA0LCAxNDcsIDExLCA0LCAKKyAgICAyMDQsIDE1MiwgMTEsIDQsIDIwNCwgMTUxLCAxMSwgNCwgMjA0LCAxNDksIDExLCA0LCAyMDQsIDE1MCwgMTEsIDQsIDI0MywgCisgICAgMTQ3LCAxMSwgNCwgMjQzLCAxMzQsIDExLCA0LCAyNDMsIDIzMywgMTEsIDQsIDI0MywgMTczLCAxMSwgNCwgMjQzLCAyMDgsIAorICAgIDExLCA0LCAyNDMsIDIxMywgMTEsIDQsIDI0MywgMjEyLCAxMSwgNCwgMjQ0LCAxNDAsIDExLCA0LCAyNDQsIDEzNCwgMTEsIAorICAgIDQsIDI0NCwgMjEyLCAxMSwgNCwgMjQ0LCAxNjAsIDExLCA0LCAyNDIsIDI1LCAxMSwgNCwgMjQyLCAyNiwgMTEsIDQsIDI0MywgCisgICAgODUsIDExLCA0LCAyNDIsIDY3LCAxMSwgNCwgMjQzLCAxMTMsIDExLCA0LCAyNDMsIDg3LCAxMSwgNCwgMjQ0LCA3LCAxMSwgCisgICAgNCwgMjQ0LCA3NSwgMTEsIDQsIDI0NCwgMjgsIDExLCA0LCAyNDIsIDE2LCAxMSwgNCwgMjQyLCAxNCwgMTEsIDQsIDI0MiwgCisgICAgNDIsIDExLCA0LCAyNDIsIDI0LCAxMSwgNCwgMjQyLCAxOSwgMTEsIDQsIDI0MiwgMjIsIDExLCA0LCAyMDgsIDIwMCwgMTEsIAorICAgIDQsIDIwOCwgMTkyLCAxMSwgNCwgMjA5LCAyLCAxMSwgNCwgMjA4LCAyMTAsIDExLCA0LCAyMDgsIDI0OCwgMTEsIDQsIDIwOCwgCisgICAgMjUwLCAxMSwgNCwgMjA4LCAyNDksIDExLCA0LCAyMDksIDIxMiwgMTEsIDQsIDIwOSwgMTk4LCAxMSwgNCwgMjEwLCAyMiwgCisgICAgMTEsIDQsIDIwOSwgMjIyLCAxMSwgNCwgMjA3LCAxODUsIDExLCA0LCAyMDcsIDE4NCwgMTEsIDQsIDIwNywgMTg3LCAxMSwgCisgICAgNCwgMjA3LCAxODYsIDExLCA0LCAyMDgsIDEzMSwgMTEsIDQsIDIwOCwgMTIxLCAxMSwgNCwgMTM1LCAxMSwgNCwgMjA4LCAKKyAgICAxNDQsIDExLCA0LCAyMDksIDExNCwgMTEsIDQsIDIwOSwgMTg3LCAxMSwgNCwgMjA5LCAxMzksIDExLCA0LCAyMDcsIDE2OCwgCisgICAgMTEsIDQsIDIwNywgMTYzLCAxMSwgNCwgMjA3LCAyMDMsIDExLCA0LCAyMDcsIDE4MywgMTEsIDQsIDIwNywgMTY5LCAxMSwgCisgICAgNCwgMjA3LCAxODEsIDExLCA0LCAyNDQsIDkyLCAxMSwgNCwgMjQ0LCA5MSwgMTEsIDQsIDI0NCwgOTcsIDExLCA0LCAyNDQsIAorICAgIDkzLCAxMSwgNCwgMjQ0LCA5NCwgMTEsIDQsIDI0NCwgOTYsIDExLCA0LCAyNDQsIDk1LCAxMSwgNCwgMjQ0LCAxMTMsIDExLCAKKyAgICA0LCAyNDQsIDExMiwgMTEsIDQsIDI0NCwgMTIwLCAxMSwgNCwgMjQ0LCAxMTQsIDExLCA0LCAyNDQsIDgyLCAxMSwgNCwgCisgICAgMjQ0LCA4NCwgMTEsIDQsIDI0NCwgODMsIDExLCA0LCAyNDQsIDg3LCAxMSwgNCwgMjQ0LCA4NiwgMTEsIDQsIDI0NCwgOTAsIAorICAgIDExLCA0LCAyNDQsIDg4LCAxMSwgNCwgMjQ0LCAxMDUsIDExLCA0LCAyNDQsIDEwOCwgMTEsIDQsIDI0NCwgMTA2LCAxMSwgNCwgCisgICAgMjQ0LCA3OCwgMTEsIDQsIDI0NCwgNzcsIDExLCA0LCAyNDQsIDg1LCAxMSwgNCwgMjQ0LCA4MSwgMTEsIDQsIDI0NCwgNzksIAorICAgIDExLCA0LCAyNDQsIDgwLCAxMSwgNCwgMjIzLCAzLCAxMSwgNCwgMjIzLCAyLCAxMSwgNCwgMjIzLCAxMCwgMTEsIDQsIDIyMywgCisgICAgNSwgMTEsIDQsIDIyMywgNiwgMTEsIDQsIDIyMywgNywgMTEsIDQsIDIyMywgMTksIDExLCA0LCAyMjMsIDE4LCAxMSwgNCwgCisgICAgMjIzLCAyNSwgMTEsIDQsIDIyMywgMjAsIDExLCA0LCAyMjIsIDI1MSwgMTEsIDQsIDIyMiwgMjUwLCAxMSwgNCwgMjIzLCAxLCAKKyAgICAxMSwgNCwgMjIyLCAyNTIsIDExLCA0LCAyMjMsIDExLCAxMSwgNCwgMjIzLCAxNywgMTEsIDQsIDIyMywgMTUsIDExLCA0LCAKKyAgICAyMjIsIDI0MywgMTEsIDQsIDIyMiwgMjQyLCAxMSwgNCwgMjIyLCAyNDgsIDExLCA0LCAyMjIsIDI0NiwgMTEsIDQsIDIyMiwgCisgICAgMjQ0LCAxMSwgNCwgMjIyLCAyNDUsIDExLCA0LCAyMzYsIDE0NiwgMTEsIDQsIDIzNiwgMTQ1LCAxMSwgNCwgMjM2LCAxNTIsIAorICAgIDExLCA0LCAyMzYsIDE0NywgMTEsIDQsIDIzNiwgMTQ5LCAxMSwgNCwgMjM2LCAxNDgsIDExLCA0LCAyMzYsIDE1MSwgMTEsIAorICAgIDQsIDIzNiwgMTUwLCAxMSwgNCwgMjM2LCAxNTgsIDExLCA0LCAyMzYsIDE1NiwgMTEsIDQsIDIzNiwgMTYwLCAxMSwgNCwgCisgICAgMjM2LCAxNTksIDExLCA0LCAyMzYsIDEzOSwgMTEsIDQsIDIzNiwgMTQwLCAxMSwgNCwgMjM2LCAxNDMsIDExLCA0LCAyMzYsIAorICAgIDE0MiwgMTEsIDQsIDIzNiwgMTQ0LCAxMSwgNCwgMjM2LCAxNTMsIDExLCA0LCAyMzYsIDE1NSwgMTEsIDQsIDIzNiwgMTU0LCAKKyAgICAxMSwgNCwgMjM2LCAxMzgsIDExLCA0LCAyMjIsIDUyLCAxMSwgNCwgMjIyLCA1MCwgMTEsIDQsIDIyMiwgMTAwLCAxMSwgNCwgCisgICAgMjIyLCA1NSwgMTEsIDQsIDIyMiwgODIsIDExLCA0LCAyMjIsIDk2LCAxMSwgNCwgMjIyLCA5NSwgMTEsIDQsIDIyMywgNjEsIAorICAgIDExLCA0LCAyMDEsIDIwMSwgMTEsIDQsIDIyMywgNzYsIDExLCA0LCAyMjEsIDMyLCAxMSwgNCwgMjIxLCAzNCwgMTEsIDQsIAorICAgIDIyMSwgMzMsIDExLCA0LCAyMjEsIDE2NSwgMTEsIDQsIDIyMSwgMTUwLCAxMSwgNCwgMjIxLCAxOTEsIDExLCA0LCAyMjEsIAorICAgIDE3NiwgMTEsIDQsIDIyMiwgMjA5LCAxMSwgNCwgMjIyLCAyNDAsIDExLCA0LCAyMjIsIDIyNSwgMTEsIDQsIDIyMSwgMjcsIAorICAgIDExLCA0LCAyMjEsIDIzLCAxMSwgNCwgMjIxLCA4NCwgMTEsIDQsIDIyMSwgMzEsIDExLCA0LCAyMjEsIDI5LCAxMSwgNCwgCisgICAgMjIxLCAzMCwgMTEsIDQsIDIzNiwgMjExLCAxMSwgNCwgMjM2LCAyMTAsIDExLCA0LCAyMzYsIDIxNiwgMTEsIDQsIDIzNiwgCisgICAgMjEyLCAxMSwgNCwgMjM2LCAyMTMsIDExLCA0LCAyMzYsIDIxNSwgMTEsIDQsIDIzNiwgMjE0LCAxMSwgNCwgMjM2LCAyMjIsIAorICAgIDExLCA0LCAyMzYsIDIyMCwgMTEsIDQsIDIzNiwgMjI0LCAxMSwgNCwgMjM2LCAyMjMsIDExLCA0LCAyMzYsIDIwMywgMTEsIAorICAgIDQsIDIzNiwgMjA1LCAxMSwgNCwgMjM2LCAyMDQsIDExLCA0LCAyMzYsIDIwNywgMTEsIDQsIDIzNiwgMjA5LCAxMSwgNCwgCisgICAgMjM2LCAyMDgsIDExLCA0LCAyMzYsIDIxNywgMTEsIDQsIDIzNiwgMjE5LCAxMSwgNCwgMjM2LCAyMTgsIDExLCA0LCAyMzYsIAorICAgIDE5OSwgMTEsIDQsIDIzNiwgMTk4LCAxMSwgNCwgMjM2LCAyMDYsIDExLCA0LCAyMzYsIDIwMiwgMTEsIDQsIDIzNiwgMjAwLCAKKyAgICAxMSwgNCwgMjM2LCAyMDEsIDExLCA0LCAyMzYsIDE5MywgMTEsIDQsIDIzNiwgMTkyLCAxMSwgNCwgMjM2LCAxOTcsIDExLCAKKyAgICA0LCAyMzYsIDE5NiwgMTEsIDQsIDIzNiwgMTk0LCAxMSwgNCwgMjM2LCAxOTUsIDExLCA0LCAyMjcsIDkwLCAxMSwgNCwgCisgICAgMjI3LCA4MiwgMTEsIDQsIDIyNywgMTQ4LCAxMSwgNCwgMjI3LCAxMDAsIDExLCA0LCAyMjcsIDEzOSwgMTEsIDQsIDIyNywgCisgICAgMTM4LCAxMSwgNCwgMjI3LCAxNDIsIDExLCA0LCAyMjcsIDE0MCwgMTEsIDQsIDIyOCwgMCwgMTEsIDQsIDIyNywgMjQ1LCAKKyAgICAxMSwgNCwgMjI4LCAxMTMsIDExLCA0LCAyMjgsIDExLCAxMSwgNCwgMjI2LCAyMTcsIDExLCA0LCAyMjYsIDIxNiwgMTEsIDQsIAorICAgIDIyNiwgMjE5LCAxMSwgNCwgMjI2LCAyMTgsIDExLCA0LCAyMjcsIDYsIDExLCA0LCAyMjYsIDI0OCwgMTEsIDQsIDIyNywgCisgICAgNDksIDExLCA0LCAyMjcsIDExLCAxMSwgNCwgMjI3LCAxNjUsIDExLCA0LCAyMjcsIDIzNCwgMTEsIDQsIDIyNywgMTgyLCAKKyAgICAxMSwgNCwgMjI2LCAyMTEsIDExLCA0LCAyMjYsIDIwOSwgMTEsIDQsIDIyNiwgMjM5LCAxMSwgNCwgMjI2LCAyMTUsIDExLCAKKyAgICA0LCAyMjYsIDIxMywgMTEsIDQsIDIyNiwgMjE0LCAxMSwgNCwgMjI2LCAxOTAsIDExLCA0LCAyMjYsIDE4OSwgMTEsIDQsIAorICAgIDIyNiwgMTk5LCAxMSwgNCwgMjI2LCAxOTMsIDExLCA0LCAyMjYsIDE5MSwgMTEsIDQsIDIyNiwgMTkyLCAxMSwgNCwgMjM4LCAKKyAgICA1NCwgMTEsIDQsIDIzOCwgNTMsIDExLCA0LCAyMzgsIDgxLCAxMSwgNCwgMjM4LCA2NSwgMTEsIDQsIDIzOCwgNzMsIDExLCAKKyAgICA0LCAyMzgsIDcyLCAxMSwgNCwgMjM4LCA3NSwgMTEsIDQsIDIzOCwgNzQsIDExLCA0LCAyMzgsIDIxNywgMTEsIDQsIDIzOCwgCisgICAgMjEyLCAxMSwgNCwgMjM5LCA4LCAxMSwgNCwgMjM4LCAyMjcsIDExLCA0LCAyMzcsIDIwNSwgMTEsIDQsIDIzNywgMjA0LCAKKyAgICAxMSwgNCwgMjM3LCAyMDcsIDExLCA0LCAyMzcsIDIwNiwgMTEsIDQsIDIzOCwgMTgsIDExLCA0LCAyMzgsIDE2LCAxMSwgNCwgCisgICAgMjM4LCAzOSwgMTEsIDQsIDIzOCwgMjYsIDExLCA0LCAyMzgsIDE1OSwgMTEsIDQsIDIzOCwgMTU3LCAxMSwgNCwgMjM4LCAKKyAgICAxOTAsIDExLCA0LCAyMzgsIDE3MCwgMTEsIDQsIDIzNywgMTk0LCAxMSwgNCwgMjM3LCAxOTMsIDExLCA0LCAyMzcsIDIzMCwgCisgICAgMTEsIDQsIDIzNywgMjAzLCAxMSwgNCwgMjM3LCAxOTUsIDExLCA0LCAyMzcsIDIwMiwgMTEsIDQsIDIyOSwgNjQsIDExLCA0LCAKKyAgICAyMjksIDYxLCAxMSwgNCwgMjI5LCAxMDAsIDExLCA0LCAyMjksIDc4LCAxMSwgNCwgMjI5LCA4OSwgMTEsIDQsIDIyOSwgOTMsIAorICAgIDExLCA0LCAyMjksIDkxLCAxMSwgNCwgMjI5LCAyMjYsIDExLCA0LCAyMjksIDIwOSwgMTEsIDQsIDE3MywgMTEsIDQsIDIyOSwgCisgICAgMjUzLCAxMSwgNCwgMjI4LCAxODcsIDExLCA0LCAyMjgsIDE5MiwgMTEsIDQsIDIyOCwgMTg5LCAxMSwgNCwgMjI4LCAyNTAsIAorICAgIDExLCA0LCAyMjgsIDI0NSwgMTEsIDQsIDIyOSwgMjYsIDExLCA0LCAyMjksIDEsIDExLCA0LCAyMjksIDE3MCwgMTEsIDQsIAorICAgIDIyOSwgMTUzLCAxMSwgNCwgMjI5LCAyMDEsIDExLCA0LCAyMjksIDE3NCwgMTEsIDQsIDIyOCwgMTc1LCAxMSwgNCwgMjI4LCAKKyAgICAxNzEsIDExLCA0LCAyMjgsIDIwOSwgMTEsIDQsIDIyOCwgMTg2LCAxMSwgNCwgMjI4LCAxNzksIDExLCA0LCAyMjgsIDE4MywgCisgICAgMTEsIDQsIDIzOCwgMTQxLCAxMSwgNCwgMjM4LCAxNDAsIDExLCA0LCAyMzgsIDE0NSwgMTEsIDQsIDIzOCwgMTQyLCAxMSwgCisgICAgNCwgMjM4LCAxNDQsIDExLCA0LCAyMzgsIDE0MywgMTEsIDQsIDIzOCwgMTUyLCAxMSwgNCwgMjM4LCAxNTEsIDExLCA0LCAKKyAgICAyMzgsIDE1NSwgMTEsIDQsIDIzOCwgMTUzLCAxMSwgNCwgMjM4LCAxMzIsIDExLCA0LCAyMzgsIDEzMSwgMTEsIDQsIDIzOCwgCisgICAgMTM0LCAxMSwgNCwgMjM4LCAxMzMsIDExLCA0LCAyMzgsIDEzNywgMTEsIDQsIDIzOCwgMTM2LCAxMSwgNCwgMjM4LCAxMzksIAorICAgIDExLCA0LCAyMzgsIDEzOCwgMTEsIDQsIDIzOCwgMTQ3LCAxMSwgNCwgMjM4LCAxNDYsIDExLCA0LCAyMzgsIDE1MCwgMTEsIAorICAgIDQsIDIzOCwgMTQ4LCAxMSwgNCwgMjM4LCAxMjcsIDExLCA0LCAyMzgsIDEyNiwgMTEsIDQsIDIzOCwgMTM1LCAxMSwgNCwgCisgICAgMjM4LCAxMzAsIDExLCA0LCAyMzgsIDEyOCwgMTEsIDQsIDIzOCwgMTI5LCAxMSwgNCwgMjI0LCAxNzQsIDExLCA0LCAyMjQsIAorICAgIDE3NSwgMTEsIDQsIDIyNCwgMTkzLCAxMSwgNCwgMjI0LCAxOTIsIDExLCA0LCAyMjQsIDE5NSwgMTEsIDQsIDIyNCwgMTk0LCAKKyAgICAxMSwgNCwgMjI0LCAxNjUsIDExLCA0LCAyMjQsIDE2NywgMTEsIDQsIDIyNCwgMTY2LCAxMSwgNCwgMjI0LCAxNzAsIDExLCAKKyAgICA0LCAyMjQsIDE2OSwgMTEsIDQsIDIyNCwgMTcyLCAxMSwgNCwgMjI0LCAxNzEsIDExLCA0LCAyMjQsIDE3NiwgMTEsIDQsIAorICAgIDIyNCwgMTc4LCAxMSwgNCwgMjI0LCAxNzcsIDExLCA0LCAyMjQsIDE2MSwgMTEsIDQsIDIyNCwgMTYwLCAxMSwgNCwgMjI0LCAKKyAgICAxNjgsIDExLCA0LCAyMjQsIDE2NCwgMTEsIDQsIDIyNCwgMTYyLCAxMSwgNCwgMjI0LCAxNjMsIDExLCA0LCAyMzUsIDIzMywgCisgICAgMTEsIDQsIDIzNSwgMjMyLCAxMSwgNCwgMjM1LCAyMzksIDExLCA0LCAyMzUsIDIzNCwgMTEsIDQsIDIzNSwgMjM2LCAxMSwgCisgICAgNCwgMjM1LCAyMzUsIDExLCA0LCAyMzUsIDIzOCwgMTEsIDQsIDIzNSwgMjM3LCAxMSwgNCwgMjM1LCAyNDQsIDExLCA0LCAKKyAgICAyMzUsIDI0MywgMTEsIDQsIDIzNSwgMjQ2LCAxMSwgNCwgMjM1LCAyNDUsIDExLCA0LCAyMzUsIDIyNSwgMTEsIDQsIDIzNSwgCisgICAgMjI0LCAxMSwgNCwgMjM1LCAyMjcsIDExLCA0LCAyMzUsIDIyNiwgMTEsIDQsIDIzNSwgMjI5LCAxMSwgNCwgMjM1LCAyMjgsIAorICAgIDExLCA0LCAyMzUsIDIzMSwgMTEsIDQsIDIzNSwgMjMwLCAxMSwgNCwgMjM1LCAyNDAsIDExLCA0LCAyMzUsIDI0MiwgMTEsIAorICAgIDQsIDIzNSwgMjQxLCAxMSwgNCwgMjIyLCAxNDgsIDExLCA0LCAyMjIsIDE1MCwgMTEsIDQsIDIyMiwgMTQ5LCAxMSwgNCwgCisgICAgMjIyLCAxOTMsIDExLCA0LCAyMjIsIDE5MSwgMTEsIDQsIDIyMiwgMjAzLCAxMSwgNCwgMjIyLCAxOTYsIDExLCA0LCAyMjIsIAorICAgIDExMCwgMTEsIDQsIDIyMiwgMTA5LCAxMSwgNCwgMjIyLCAxMTEsIDExLCA0LCAyMjIsIDEyMCwgMTEsIDQsIDIyMiwgMTE3LCAKKyAgICAxMSwgNCwgMjIyLCAxMjgsIDExLCA0LCAyMjIsIDEyMiwgMTEsIDQsIDIyMiwgMTg0LCAxMSwgNCwgMjIyLCAxOTAsIDExLCAKKyAgICA0LCAyMjIsIDE4NiwgMTEsIDQsIDIzNiwgMjMwLCAxMSwgNCwgMjM2LCAyNDUsIDExLCA0LCAyMzYsIDI1NCwgMTEsIDQsIAorICAgIDIzNywgODMsIDExLCA0LCAyMzcsIDcyLCAxMSwgNCwgMTUyLCAxMSwgNCwgMjM3LCA5NCwgMTEsIDQsIDIzNiwgNiwgMTEsIAorICAgIDQsIDIzNiwgNSwgMTEsIDQsIDIzNiwgOCwgMTEsIDQsIDIzNiwgNywgMTEsIDQsIDIzNiwgNDYsIDExLCA0LCAyMzYsIDM3LCAKKyAgICAxMSwgNCwgMjM2LCAxMzYsIDExLCA0LCAyMzYsIDEwOSwgMTEsIDQsIDIzNywgMTgsIDExLCA0LCAyMzcsIDY3LCAxMSwgNCwgCisgICAgMjM3LCAzMCwgMTEsIDQsIDIwNCwgODMsIDExLCA0LCAyMDQsIDY4LCAxMSwgNCwgMjA0LCAxMTEsIDExLCA0LCAyMDQsIDkzLCAKKyAgICAxMSwgNCwgMjAzLCAyMDYsIDExLCA0LCAyMDMsIDIwOCwgMTEsIDQsIDIwMywgMjA3LCAxMSwgNCwgMjAzLCAyMjksIDExLCAKKyAgICA0LCAyMDQsIDAsIDExLCA0LCAyMDMsIDIzOSwgMTEsIDQsIDIwNCwgNDIsIDExLCA0LCAyMDQsIDYyLCAxMSwgNCwgMjA0LCAKKyAgICA0NywgMTEsIDQsIDIwMiwgMjQsIDExLCA0LCAyMDIsIDIzLCAxMSwgNCwgMjAyLCAzOSwgMTEsIDQsIDIwMiwgMjcsIDExLCAKKyAgICA0LCAyMDIsIDMyLCAxMSwgNCwgMjAyLCAzNCwgMTEsIDQsIDIwMiwgMzMsIDExLCA0LCAyMDIsIDEwMCwgMTEsIDQsIDIwMiwgCisgICAgOTcsIDExLCA0LCAyMDIsIDExNiwgMTEsIDQsIDIwMiwgMTA0LCAxMSwgNCwgMjAxLCAyNTUsIDExLCA0LCAyMDIsIDEsIDExLCAKKyAgICA0LCAyMDIsIDAsIDExLCA0LCAyMDIsIDEzLCAxMSwgNCwgMjAyLCAxMiwgMTEsIDQsIDIwMiwgMTcsIDExLCA0LCAyMDIsIAorICAgIDE0LCAxMSwgNCwgMjAyLCA4MiwgMTEsIDQsIDIwMiwgOTIsIDExLCA0LCAyMDIsIDg2LCAxMSwgNCwgMjAxLCAyNTEsIDExLCAKKyAgICA0LCAyMDEsIDI1MCwgMTEsIDQsIDIwMiwgNiwgMTEsIDQsIDIwMSwgMjU0LCAxMSwgNCwgMjAxLCAyNTIsIDExLCA0LCAyMDEsIAorICAgIDI1MywgMTEsIDQsIDIwMSwgMjM3LCAxMSwgNCwgMjAxLCAyMzYsIDExLCA0LCAyMDEsIDI0MiwgMTEsIDQsIDIwMSwgMjQwLCAKKyAgICAxMSwgNCwgMjAxLCAyMzgsIDExLCA0LCAyMDEsIDIzOSwgMTEsIDQsIDI0NiwgNTAsIDExLCA0LCAyNDYsIDQzLCAxMSwgNCwgCisgICAgMjQ2LCA3OSwgMTEsIDQsIDI0NiwgNjMsIDExLCA0LCAyNDYsIDc2LCAxMSwgNCwgMjQ2LCA3MCwgMTEsIDQsIDI0NiwgNzgsIAorICAgIDExLCA0LCAyNDYsIDc3LCAxMSwgNCwgMjQ3LCAxNywgMTEsIDQsIDI0NywgOSwgMTEsIDQsIDI0NywgOTIsIDExLCA0LCAKKyAgICAyNDcsIDQ4LCAxMSwgNCwgMjQ1LCAxMDEsIDExLCA0LCAyNDUsIDEwMywgMTEsIDQsIDI0NSwgMTAyLCAxMSwgNCwgMjQ1LCAKKyAgICAxNTgsIDExLCA0LCAyNDUsIDE0OCwgMTEsIDQsIDI0NSwgMjU0LCAxMSwgNCwgMjQ1LCAxNzUsIDExLCA0LCAyNDYsIDIwMiwgCisgICAgMTEsIDQsIDI0NiwgMjM4LCAxMSwgNCwgMjQ2LCAyMDcsIDExLCA0LCAyNDUsIDc3LCAxMSwgNCwgMjQ1LCA3NSwgMTEsIDQsIAorICAgIDI0NSwgMTEwLCAxMSwgNCwgMjQ1LCA5OSwgMTEsIDQsIDI0NSwgODMsIDExLCA0LCAyNDUsIDk2LCAxMSwgNCwgMjQ1LCA1NCwgCisgICAgMTEsIDQsIDI0NSwgNTMsIDExLCA0LCAyNDUsIDY2LCAxMSwgNCwgMjQ1LCA2MCwgMTEsIDQsIDI0NSwgNTUsIDExLCA0LCAKKyAgICAyNDUsIDU3LCAxMSwgNCwgMjAxLCAyMjAsIDExLCA0LCAyMDEsIDIxOSwgMTEsIDQsIDIwMSwgMjI2LCAxMSwgNCwgMjAxLCAKKyAgICAyMjEsIDExLCA0LCAyMDEsIDIyMywgMTEsIDQsIDIwMSwgMjIyLCAxMSwgNCwgMjAxLCAyMjUsIDExLCA0LCAyMDEsIDIyNCwgCisgICAgMTEsIDQsIDIwMSwgMjMyLCAxMSwgNCwgMjAxLCAyMzEsIDExLCA0LCAyMDEsIDIzNSwgMTEsIDQsIDIwMSwgMjMzLCAxMSwgCisgICAgNCwgMjAxLCAyMTYsIDExLCA0LCAyMDEsIDIxOCwgMTEsIDQsIDIwMSwgMjE3LCAxMSwgNCwgMjAxLCAyMjcsIDExLCA0LCAKKyAgICAyMDEsIDIzMCwgMTEsIDQsIDIwMSwgMjI4LCAxMSwgNCwgMjAxLCAyMDksIDExLCA0LCAyMDEsIDIxMywgMTEsIDQsIDIwMSwgCisgICAgMjEyLCAxMSwgNCwgMjAxLCAyMTAsIDExLCA0LCAyMDEsIDIxMSwgMTEsIDQsIDIwMSwgMjAzLCAxMSwgNCwgMjAxLCAyMDIsIAorICAgIDExLCA0LCAyMDEsIDIwOCwgMTEsIDQsIDIwMSwgMjA2LCAxMSwgNCwgMjAxLCAyMDQsIDExLCA0LCAyMDEsIDIwNSwgMTEsIAorICAgIDQsIDIyMCwgMjAxLCAxMSwgNCwgMjIwLCAyMDAsIDExLCA0LCAyMjAsIDIwNiwgMTEsIDQsIDIyMCwgMjAyLCAxMSwgNCwgCisgICAgMjIwLCAyMDMsIDExLCA0LCAyMjAsIDIwNSwgMTEsIDQsIDIyMCwgMjA0LCAxMSwgNCwgMjIwLCAyMTEsIDExLCA0LCAyMjAsIAorICAgIDIxMCwgMTEsIDQsIDIyMCwgMjE0LCAxMSwgNCwgMjIwLCAyMTMsIDExLCA0LCAyMjAsIDE5NCwgMTEsIDQsIDIyMCwgMTk1LCAKKyAgICAxMSwgNCwgMjIwLCAxOTgsIDExLCA0LCAyMjAsIDE5OSwgMTEsIDQsIDIyMCwgMjA3LCAxMSwgNCwgMjIwLCAyMDksIDExLCAKKyAgICA0LCAyMjAsIDE4OSwgMTEsIDQsIDIyMCwgMTk3LCAxMSwgNCwgMjIwLCAxOTMsIDExLCA0LCAyMjAsIDE5MCwgMTEsIDQsIAorICAgIDIyMCwgMTkxLCAxMSwgNCwgMjIwLCAxODQsIDExLCA0LCAyMjAsIDE4MywgMTEsIDQsIDIyMCwgMTg4LCAxMSwgNCwgMjIwLCAKKyAgICAxODcsIDExLCA0LCAyMjAsIDE4NSwgMTEsIDQsIDIyMCwgMTg2LCAxMSwgNCwgMjEyLCA5MCwgMTEsIDQsIDE5NSwgMTEsIDQsIAorICAgIDIxMiwgMTYyLCAxMSwgNCwgMjEyLCA5MywgMTEsIDQsIDIxMiwgMTUwLCAxMSwgNCwgMjEyLCAxNTMsIDExLCA0LCAyMTIsIAorICAgIDE1MSwgMTEsIDQsIDIxNCwgMjI1LCAxMSwgNCwgMjE0LCAyMTEsIDExLCA0LCAyMTUsIDM2LCAxMSwgNCwgMjE0LCAyMzMsIAorICAgIDExLCA0LCAyMTAsIDIwNCwgMTEsIDQsIDIxMCwgMjA2LCAxMSwgNCwgMjEwLCAyMDUsIDExLCA0LCAyMTEsIDI0NCwgMTEsIAorICAgIDQsIDIxMSwgMjMzLCAxMSwgNCwgMjEyLCAxMywgMTEsIDQsIDIxMSwgMjQ4LCAxMSwgNCwgMjEzLCAxMDMsIDExLCA0LCAKKyAgICAyMTQsIDE3NywgMTEsIDQsIDIxMywgMTMyLCAxMSwgNCwgMjEwLCAxODEsIDExLCA0LCAyMTAsIDE3OCwgMTEsIDQsIDIxMSwgCisgICAgMTAsIDExLCA0LCAyMTAsIDIwMywgMTEsIDQsIDIxMCwgMTg1LCAxMSwgNCwgMjEwLCAxOTMsIDExLCA0LCAyMTAsIDgzLCAKKyAgICAxMSwgNCwgMjEwLCA4MiwgMTEsIDQsIDIxMCwgMTUxLCAxMSwgNCwgMjEwLCA5MSwgMTEsIDQsIDIxMCwgODUsIDExLCA0LCAKKyAgICAyMTAsIDkwLCAxMSwgNCwgMjExLCAxMjYsIDExLCA0LCAyMTEsIDEyNSwgMTEsIDQsIDIxMSwgMTMyLCAxMSwgNCwgMjExLCAKKyAgICAxMjcsIDExLCA0LCAyMTEsIDEyOSwgMTEsIDQsIDIxMSwgMTMxLCAxMSwgNCwgMjExLCAxMzAsIDExLCA0LCAyMTEsIDE0MSwgCisgICAgMTEsIDQsIDIxMSwgMTM5LCAxMSwgNCwgMjExLCAxNjQsIDExLCA0LCAyMTEsIDE0MiwgMTEsIDQsIDIxMSwgMTIxLCAxMSwgCisgICAgNCwgMjExLCAxMjAsIDExLCA0LCAyMTEsIDEyNCwgMTEsIDQsIDIxMSwgMTIyLCAxMSwgNCwgMjExLCAxMzUsIDExLCA0LCAKKyAgICAyMTEsIDEzOCwgMTEsIDQsIDIxMSwgMTM2LCAxMSwgNCwgMjExLCAxMTcsIDExLCA0LCAyMTEsIDExNSwgMTEsIDQsIDIxMSwgCisgICAgMTE5LCAxMSwgNCwgMjExLCAxMTgsIDExLCA0LCAyMTEsIDExMCwgMTEsIDQsIDIxMSwgMTA5LCAxMSwgNCwgMjExLCAxMTQsIAorICAgIDExLCA0LCAyMTEsIDExMywgMTEsIDQsIDIxMSwgMTExLCAxMSwgNCwgMjExLCAxMTIsIDExLCA0LCAyMDIsIDc1LCAxMSwgNCwgCisgICAgMjAyLCA3NCwgMTEsIDQsIDIwMiwgODAsIDExLCA0LCAyMDIsIDc3LCAxMSwgNCwgMjAyLCA1NCwgMTEsIDQsIDIwMiwgNTYsIAorICAgIDExLCA0LCAyMDIsIDU1LCAxMSwgNCwgMjAyLCA1OSwgMTEsIDQsIDIwMiwgNTgsIDExLCA0LCAyMDIsIDYzLCAxMSwgNCwgCisgICAgMjAyLCA2MCwgMTEsIDQsIDIwMiwgNjgsIDExLCA0LCAyMDIsIDY3LCAxMSwgNCwgMjAyLCA3MSwgMTEsIDQsIDIwMiwgNjksIAorICAgIDExLCA0LCAyMDIsIDUwLCAxMSwgNCwgMjAyLCA0OSwgMTEsIDQsIDIwMiwgNTcsIDExLCA0LCAyMDIsIDUzLCAxMSwgNCwgCisgICAgMjAyLCA1MSwgMTEsIDQsIDIwMiwgNTIsIDExLCA0LCAyMDIsIDQyLCAxMSwgNCwgMjAyLCA0MSwgMTEsIDQsIDIwMiwgNDYsIAorICAgIDExLCA0LCAyMDIsIDQ1LCAxMSwgNCwgMjAyLCA0MywgMTEsIDQsIDIwMiwgNDQsIDExLCA0LCAyNDYsIDE3NiwgMTEsIDQsIAorICAgIDI0NiwgMTcyLCAxMSwgNCwgMjQ2LCAxOTksIDExLCA0LCAyNDYsIDE4NSwgMTEsIDQsIDI0NiwgOTQsIDExLCA0LCAyNDYsIAorICAgIDkzLCAxMSwgNCwgMjQ2LCA5NiwgMTEsIDQsIDI0NiwgOTUsIDExLCA0LCAyNDYsIDEwOSwgMTEsIDQsIDI0NiwgMTA4LCAxMSwgCisgICAgNCwgMjQ2LCAxMTYsIDExLCA0LCAyNDYsIDExMSwgMTEsIDQsIDI0NiwgMTQ3LCAxMSwgNCwgMjQ2LCAxNDUsIDExLCA0LCAKKyAgICAyNDYsIDE3MCwgMTEsIDQsIDI0NiwgMTU1LCAxMSwgNCwgMjQ2LCA4OCwgMTEsIDQsIDI0NiwgOTgsIDExLCA0LCAyNDYsIAorICAgIDkyLCAxMSwgNCwgMjQ2LCA4OSwgMTEsIDQsIDI0NiwgOTEsIDExLCA0LCAyNDYsIDgxLCAxMSwgNCwgMjQ2LCA4MCwgMTEsIAorICAgIDQsIDI0NiwgODUsIDExLCA0LCAyNDYsIDg0LCAxMSwgNCwgMjQ2LCA4MiwgMTEsIDQsIDI0NiwgODMsIDExLCA0LCAyMTUsIAorICAgIDE4MSwgMTEsIDQsIDIxNSwgMTg1LCAxMSwgNCwgMjE1LCAxNjMsIDExLCA0LCAyMTUsIDE2NCwgMTEsIDQsIDIxNSwgMTY4LCAKKyAgICAxMSwgNCwgMjE1LCAxNjcsIDExLCA0LCAyMTUsIDE3MSwgMTEsIDQsIDIxNSwgMTY5LCAxMSwgNCwgMjE1LCAxNzUsIDExLCAKKyAgICA0LCAyMTUsIDE3NCwgMTEsIDQsIDIxNSwgMTgwLCAxMSwgNCwgMjE1LCAxNzYsIDExLCA0LCAyMTUsIDE1OSwgMTEsIDQsIAorICAgIDIxNSwgMTU3LCAxMSwgNCwgMjE1LCAxNjUsIDExLCA0LCAyMTUsIDE2MiwgMTEsIDQsIDIxNSwgMTYwLCAxMSwgNCwgMjE1LCAKKyAgICAxNjEsIDExLCA0LCAyMTUsIDE1MiwgMTEsIDQsIDIxNSwgMTUxLCAxMSwgNCwgMjE1LCAxNTYsIDExLCA0LCAyMTUsIDE1NSwgCisgICAgMTEsIDQsIDIxNSwgMTUzLCAxMSwgNCwgMjE1LCAxNTQsIDExLCA0LCAyMjEsIDE0NSwgMTEsIDQsIDIyMSwgMTQ0LCAxMSwgCisgICAgNCwgMjIxLCAxNDcsIDExLCA0LCAyMjEsIDE0NiwgMTEsIDQsIDIyMSwgMTM2LCAxMSwgNCwgMjIxLCAxMzgsIDExLCA0LCAKKyAgICAyMjEsIDEzNywgMTEsIDQsIDIyMSwgMTQwLCAxMSwgNCwgMjIxLCAxMzksIDExLCA0LCAyMjEsIDE0MywgMTEsIDQsIDIyMSwgCisgICAgMTQyLCAxMSwgNCwgMjIxLCAxMzAsIDExLCA0LCAyMjEsIDEyOSwgMTEsIDQsIDIyMSwgMTM1LCAxMSwgNCwgMjIxLCAxMzMsIAorICAgIDExLCA0LCAyMjEsIDEzMSwgMTEsIDQsIDIyMSwgMTMyLCAxMSwgNCwgMjIxLCAxMjQsIDExLCA0LCAyMjEsIDEyMywgMTEsIAorICAgIDQsIDIyMSwgMTI4LCAxMSwgNCwgMjIxLCAxMjcsIDExLCA0LCAyMjEsIDEyNSwgMTEsIDQsIDIyMSwgMTI2LCAxMSwgNCwgCisgICAgMjEzLCA1MywgMTEsIDQsIDIxMywgNDgsIDExLCA0LCAyMTMsIDkwLCAxMSwgNCwgMjEzLCA2NCwgMTEsIDQsIDIxMiwgMTg4LCAKKyAgICAxMSwgNCwgMjEyLCAxOTAsIDExLCA0LCAyMTIsIDE4OSwgMTEsIDQsIDIxMiwgMjEyLCAxMSwgNCwgMjEyLCAyMDgsIDExLCAKKyAgICA0LCAyMTIsIDI0MiwgMTEsIDQsIDIxMiwgMjMyLCAxMSwgNCwgMjEzLCAyMSwgMTEsIDQsIDIxMywgMTQsIDExLCA0LCAyMTMsIAorICAgIDQzLCAxMSwgNCwgMjEzLCAzMCwgMTEsIDQsIDIxMiwgMTg0LCAxMSwgNCwgMjEyLCAxODEsIDExLCA0LCAyMTIsIDE5OSwgCisgICAgMTEsIDQsIDIxMiwgMTg3LCAxMSwgNCwgMjEyLCAxODUsIDExLCA0LCAyMTIsIDE4NiwgMTEsIDQsIDIxMiwgMTY1LCAxMSwgCisgICAgNCwgMjEyLCAxNjQsIDExLCA0LCAyMTIsIDE3MSwgMTEsIDQsIDIxMiwgMTY4LCAxMSwgNCwgMjEyLCAxNjYsIDExLCA0LCAKKyAgICAyMTIsIDE2NywgMTEsIDQsIDIxNiwgMTcyLCAxMSwgNCwgMjE2LCAxNjYsIDExLCA0LCAyMTYsIDIyMCwgMTEsIDQsIDIxNiwgCisgICAgMTc4LCAxMSwgNCwgMjE1LCAxMjIsIDExLCA0LCAyMTUsIDEyNCwgMTEsIDQsIDIxNSwgMTIzLCAxMSwgNCwgMjE1LCAxOTksIAorICAgIDExLCA0LCAyMTUsIDE4NywgMTEsIDQsIDIxNSwgMjI3LCAxMSwgNCwgMjE1LCAyMDMsIDExLCA0LCAyMTYsIDY2LCAxMSwgNCwgCisgICAgMjE2LCAxNTgsIDExLCA0LCAyMTYsIDEwNSwgMTEsIDQsIDIxNSwgMTE1LCAxMSwgNCwgMjE1LCAxMTIsIDExLCA0LCAyMTUsIAorICAgIDE0NSwgMTEsIDQsIDIxNSwgMTIxLCAxMSwgNCwgMjE1LCAxMTcsIDExLCA0LCAyMTUsIDExOCwgMTEsIDQsIDIxNSwgOTcsIAorICAgIDExLCA0LCAyMTUsIDk2LCAxMSwgNCwgMjE1LCAxMDIsIDExLCA0LCAyMTUsIDEwMCwgMTEsIDQsIDIxNSwgOTgsIDExLCA0LCAKKyAgICAyMTUsIDk5LCAxMSwgNCwgMjMwLCAxMzEsIDExLCA0LCAyMzAsIDEzMCwgMTEsIDQsIDIzMCwgMTQxLCAxMSwgNCwgMjMwLCAKKyAgICAxMzIsIDExLCA0LCAyMzAsIDEzNywgMTEsIDQsIDIzMCwgMTM2LCAxMSwgNCwgMjMwLCAxMzksIDExLCA0LCAyMzAsIDEzOCwgCisgICAgMTEsIDQsIDIzMCwgNzIsIDExLCA0LCAyMzAsIDcxLCAxMSwgNCwgMjMwLCA3NCwgMTEsIDQsIDIzMCwgNzMsIDExLCA0LCAKKyAgICAyMzAsIDg4LCAxMSwgNCwgMjMwLCA4NiwgMTEsIDQsIDIzMCwgMTAxLCAxMSwgNCwgMjMwLCA5MCwgMTEsIDQsIDIzMCwgNjUsIAorICAgIDExLCA0LCAyMzAsIDYzLCAxMSwgNCwgMjMwLCA4MiwgMTEsIDQsIDIzMCwgNzAsIDExLCA0LCAyMzAsIDY3LCAxMSwgNCwgCisgICAgMjMwLCA2OCwgMTEsIDQsIDIzMCwgNTcsIDExLCA0LCAyMzAsIDU2LCAxMSwgNCwgMjMwLCA2MSwgMTEsIDQsIDIzMCwgNjAsIAorICAgIDExLCA0LCAyMzAsIDU4LCAxMSwgNCwgMjMwLCA1OSwgMTEsIDQsIDIxNywgODEsIDExLCA0LCAyMTcsIDc5LCAxMSwgNCwgCisgICAgMjE3LCA4OCwgMTEsIDQsIDIxNywgODIsIDExLCA0LCAyMTcsIDg1LCAxMSwgNCwgMjE3LCA4NCwgMTEsIDQsIDIxNywgODcsIAorICAgIDExLCA0LCAyMTcsIDg2LCAxMSwgNCwgMjE3LCAzMiwgMTEsIDQsIDIxNywgMjksIDExLCA0LCAyMTcsIDM0LCAxMSwgNCwgCisgICAgMjE3LCAzMywgMTEsIDQsIDIxNywgNjgsIDExLCA0LCAyMTcsIDY3LCAxMSwgNCwgMjE3LCA3NywgMTEsIDQsIDIxNywgNzEsIAorICAgIDExLCA0LCAyMTcsIDI0LCAxMSwgNCwgMjE3LCAyMCwgMTEsIDQsIDIxNywgNjUsIDExLCA0LCAyMTcsIDI4LCAxMSwgNCwgCisgICAgMjE3LCAyNiwgMTEsIDQsIDIxNywgMjcsIDExLCA0LCAyMTcsIDQsIDExLCA0LCAyMTcsIDIsIDExLCA0LCAyMTcsIDE0LCAKKyAgICAxMSwgNCwgMjE3LCA3LCAxMSwgNCwgMjE3LCA1LCAxMSwgNCwgMjE3LCA2LCAxMSwgNCwgMjMwLCAxMjAsIDExLCA0LCAyMzAsIAorICAgIDExOSwgMTEsIDQsIDIzMCwgMTI2LCAxMSwgNCwgMjMwLCAxMjEsIDExLCA0LCAyMzAsIDEyMywgMTEsIDQsIDIzMCwgMTIyLCAKKyAgICAxMSwgNCwgMjMwLCAxMjUsIDExLCA0LCAyMzAsIDEyNCwgMTEsIDQsIDIzMCwgMTExLCAxMSwgNCwgMjMwLCAxMTMsIDExLCAKKyAgICA0LCAyMzAsIDExMiwgMTEsIDQsIDIzMCwgMTE2LCAxMSwgNCwgMjMwLCAxMTUsIDExLCA0LCAyMzAsIDExOCwgMTEsIDQsIAorICAgIDIzMCwgMTE3LCAxMSwgNCwgMjMwLCAxMDcsIDExLCA0LCAyMzAsIDEwNiwgMTEsIDQsIDIzMCwgMTE0LCAxMSwgNCwgMjMwLCAKKyAgICAxMTAsIDExLCA0LCAyMzAsIDEwOCwgMTEsIDQsIDIzMCwgMTA5LCAxMSwgNCwgMjMwLCAxMDMsIDExLCA0LCAyMzAsIDEwMiwgCisgICAgMTEsIDQsIDIzMCwgMTA1LCAxMSwgNCwgMjMwLCAxMDQsIDExLCA0LCAyMjIsIDI1LCAxMSwgNCwgMjIyLCAyNCwgMTEsIDQsIAorICAgIDIyMiwgMzIsIDExLCA0LCAyMjIsIDI2LCAxMSwgNCwgMjIyLCAyOCwgMTEsIDQsIDIyMiwgMjcsIDExLCA0LCAyMjIsIDMxLCAKKyAgICAxMSwgNCwgMjIyLCAyOSwgMTEsIDQsIDIyMiwgMTQsIDExLCA0LCAyMjIsIDE1LCAxMSwgNCwgMjIyLCAyMCwgMTEsIDQsIAorICAgIDIyMiwgMTksIDExLCA0LCAyMjIsIDIzLCAxMSwgNCwgMjIyLCAyMSwgMTEsIDQsIDIyMiwgOSwgMTEsIDQsIDIyMiwgMTgsIAorICAgIDExLCA0LCAyMjIsIDEzLCAxMSwgNCwgMjIyLCAxMCwgMTEsIDQsIDIyMiwgMTEsIDExLCA0LCAyMjIsIDQsIDExLCA0LCAKKyAgICAyMjIsIDMsIDExLCA0LCAyMjIsIDgsIDExLCA0LCAyMjIsIDcsIDExLCA0LCAyMjIsIDUsIDExLCA0LCAyMjIsIDYsIDExLCAKKyAgICA0LCAyMjAsIDIzNiwgMTEsIDQsIDIyMCwgMjM1LCAxMSwgNCwgMjIwLCAyNDgsIDExLCA0LCAyMjAsIDI0MCwgMTEsIDQsIAorICAgIDIyMCwgMjQ1LCAxMSwgNCwgMjIwLCAyNDQsIDExLCA0LCAyMjAsIDI0NywgMTEsIDQsIDIyMCwgMjQ2LCAxMSwgNCwgMjIwLCAKKyAgICAyMjEsIDExLCA0LCAyMjAsIDIyMywgMTEsIDQsIDIyMCwgMjIyLCAxMSwgNCwgMjIwLCAyMjgsIDExLCA0LCAyMjAsIDIyNywgCisgICAgMTEsIDQsIDIyMCwgMjMzLCAxMSwgNCwgMjIwLCAyMjksIDExLCA0LCAyMjAsIDIxOSwgMTEsIDQsIDIyMCwgMjE3LCAxMSwgCisgICAgNCwgMjIwLCAyMjYsIDExLCA0LCAyMjAsIDIyMCwgMTEsIDQsIDIwMywgMTYyLCAxMSwgNCwgMjAzLCAxNjEsIDExLCA0LCAKKyAgICAyMDMsIDE3MCwgMTEsIDQsIDIwMywgMTY0LCAxMSwgNCwgMjAzLCAxNjYsIDExLCA0LCAyMDMsIDE2NSwgMTEsIDQsIDIwMywgCisgICAgMTY4LCAxMSwgNCwgMjAzLCAxNjcsIDExLCA0LCAyMDMsIDE1MCwgMTEsIDQsIDIwMywgMTUxLCAxMSwgNCwgMjAzLCAxNTUsIAorICAgIDExLCA0LCAyMDMsIDE1NCwgMTEsIDQsIDIwMywgMTYwLCAxMSwgNCwgMjAzLCAxNTgsIDExLCA0LCAyMDMsIDEyOCwgMTEsIAorICAgIDQsIDIwMywgMTI2LCAxMSwgNCwgMjAzLCAxNDEsIDExLCA0LCAyMDMsIDEzMSwgMTEsIDQsIDIwMywgMTI5LCAxMSwgNCwgCisgICAgMjAzLCAxMzAsIDExLCA0LCAyMDIsIDI1MywgMTEsIDQsIDIwMiwgMjUxLCAxMSwgNCwgMjAzLCAxMSwgMTEsIDQsIDIwMiwgCisgICAgMjU0LCAxMSwgNCwgMjAzLCA1LCAxMSwgNCwgMjAzLCA0LCAxMSwgNCwgMjAzLCA4LCAxMSwgNCwgMjAzLCA2LCAxMSwgNCwgCisgICAgMjAyLCAxOTEsIDExLCA0LCAyMDIsIDE5MCwgMTEsIDQsIDIwMiwgMTk0LCAxMSwgNCwgMjAyLCAxOTIsIDExLCA0LCAyMDIsIAorICAgIDIyNywgMTEsIDQsIDIwMiwgMjIzLCAxMSwgNCwgMjAyLCAyNDcsIDExLCA0LCAyMDIsIDIzMSwgMTEsIDQsIDIwMiwgMTgyLCAKKyAgICAxMSwgNCwgMjAyLCAxNzgsIDExLCA0LCAyMDIsIDIxMywgMTEsIDQsIDIwMiwgMTg5LCAxMSwgNCwgMjAyLCAxODUsIDExLCAKKyAgICA0LCAyMDIsIDE4NiwgMTEsIDQsIDIwMiwgMTYyLCAxMSwgNCwgMjAyLCAxNjEsIDExLCA0LCAyMDIsIDE2OSwgMTEsIDQsIAorICAgIDIwMiwgMTY1LCAxMSwgNCwgMjAyLCAxNjMsIDExLCA0LCAyMDIsIDE2NCwgMTEsIDQwLCAyMTcsIDY4LCAxMSwgNDAsIDIyNywgCisgICAgMTQ4LCAxMSwgNDAsIDIyOSwgNjQsIDExLCA0MCwgMjIwLCAyNDAsIDExLCA0MCwgMjQ1LCA2MCwgMTEsIDQwLCAyMTEsIAorICAgIDEzMiwgMTEsIDQwLCAyMzgsIDEzOCwgMTEsIDQwLCAyMzgsIDE3MCwgMTEsIDQwLCAyMjQsIDE1NSwgMTEsIDQwLCAyMzUsIAorICAgIDIzMywgMTEsIDQwLCAyMjYsIDE5MiwgMTEsIDQwLCAyNDgsIDE3MCwgMTEsIDQwLCAyMjQsIDI3LCAxMSwgNDAsIDIwMiwgCisgICAgMjQ3LCAxMSwgNDAsIDIxNywgMTU5LCAxMSwgNDAsIDIzNSwgMjI3LCAxMSwgNDAsIDIwOSwgMjEyLCAxMSwgNDAsIDIzOSwgCisgICAgOCwgMTEsIDQwLCAyMDEsIDI1NCwgMTEsIDQwLCAyNDUsIDU0LCAxMSwgNDAsIDI0NCwgODAsIDExLCA0MCwgMjQ3LCAxNjAsIAorICAgIDExLCA0MCwgMjM4LCAxMzQsIDExLCA0MCwgMjIwLCAyMjksIDExLCA0MCwgMjA3LCAyMDMsIDExLCA0MCwgMjIwLCA5LCAxMSwgCisgICAgNDAsIDIzMCwgMTA3LCAxMSwgNDAsIDIwMiwgMTMsIDExLCA0MCwgMjE3LCAxMzgsIDExLCA0MCwgMjM2LCAxNzgsIDExLCAKKyAgICA0MCwgMjAyLCAyNTMsIDExLCA0MCwgMjA0LCAxNTksIDExLCA0MCwgMjEyLCAxNzEsIDExLCA0MCwgMjA2LCA0NCwgMTEsIAorICAgIDQwLCAyMDIsIDExNiwgMTEsIDQwLCAyMzAsIDEwMSwgMTEsIDQwLCAyMjAsIDE5MywgMTEsIDQwLCAyMzAsIDEwNSwgMTEsIAorICAgIDQwLCAyMzgsIDE4LCAxMSwgNDAsIDIzMCwgMTI1LCAxMSwgNDAsIDIwNCwgMCwgMTEsIDQwLCAyNDIsIDQyLCAxMSwgNDAsIAorICAgIDIxMiwgMTg2LCAxMSwgNDAsIDIyNywgMTQyLCAxMSwgNDAsIDI0NSwgNjYsIDExLCA0MCwgMjQ1LCAxMDIsIDExLCA0MCwgCisgICAgMjQ2LCA2MywgMTEsIDQwLCAyMzUsIDIzMCwgMTEsIDQwLCAyMTMsIDUzLCAxMSwgNDAsIDIwMSwgMjUzLCAxMSwgNDAsIAorICAgIDIxMiwgMjMyLCAxMSwgNDAsIDI0NiwgMTcwLCAxMSwgNDAsIDIwMSwgMjIzLCAxMSwgNDAsIDIyMywgNTEsIDExLCA0MCwgCisgICAgMjI5LCAyMDEsIDIyNywgOTEsIDEsIDI0OSwgMzIsIDIyNywgOTEsIDEsIDE4NSwgMjI3LCA5MSwgMSwgMjE4LCAyMDgsIAorICAgIDIyNywgOTEsIDEsIDI0NCwgMjEyLCAyMjcsIDkxLCAxLCAyMTAsIDIyLCAyMjcsIDkxLCAxLCAyMDksIDEwOCwgMjI3LCA5MSwgCisgICAgMSwgMjM5LCA4LCAyMjcsIDkxLCAxLCAxNzMsIDIyNywgOTEsIDEsIDIyOSwgMTQ0LCAyMjcsIDkxLCAxLCAyMzAsIDE4MSwgCisgICAgMjI3LCA5MSwgMSwgMjQ3LCA5MiwgMjI3LCA5MSwgMSwgMjQ2LCAxOTksIDIyNywgOTEsIDEsIDI0MSwgMjU1LCAyMjcsIDkxLCAKKyAgICAxLCAyMDgsIDIwLCAyMjcsIDkxLCAxLCAyMDgsIDEwLCAyMjcsIDkxLCAxLCAxOTIsIDIyNywgOTEsIDEsIDIwMSwgMjAxLCAKKyAgICAyMjcsIDkxLCAxLCAyMjgsIDExMywgMjI3LCA5MSwgMSwgMjE1LCAzNiwgMjI3LCA5MSwgMSwgMjAyLCA4MCwgMjI3LCA5MSwgCisgICAgMSwgMjAyLCAxMTYsIDIyNywgOTEsIDEsIDIyMiwgMjAzLCAyMjcsIDkxLCAxLCAxNTIsIDIyNywgOTEsIDEsIDIwMywgMTgyLCAKKyAgICAyMjcsIDkxLCAxLCAyMzcsIDEyLCAyMjcsIDkxLCAxLCAyNDAsIDEwOCwgMjI3LCA5MSwgMSwgMjA0LCAxMTEsIDIyNywgOTEsIAorICAgIDEsIDIxMywgOTAsIDIyNywgOTEsIDEsIDE5OCwgMjI3LCA5MSwgMSwgMjM4LCAxMTksIDIyNywgOTEsIDEsIDYzLCAyMjcsIAorICAgIDkxLCAxLCAyNTEsIDEwOSwgMjI3LCA5MSwgMSwgNzQsIDIyNywgOTEsIDEsIDI0MCwgMjM4LCAyMjcsIDkxLCAxLCA3NSwgCisgICAgMjI3LCA5MSwgMSwgNzgsIDIyNywgOTEsIDEsIDY4LCAyMjcsIDkxLCAxLCAyMDcsIDI0LCAyMjcsIDkxLCAxLCAyMDcsIDE4LCAKKyAgICAyMjcsIDkxLCAxLCAyMjAsIDczLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDksIDIsIDIyNywgOTEsIDEsIDE0MywgCisgICAgMjIzLCAxMTEsIDIxOCwgNjksIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDI0NSwgNjUsIDIyNywgOTEsIDEsIDE0MywgCisgICAgMjIzLCAxNzAsIDI0OCwgMjMsIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDIwMSwgMjAxLCAyMjcsIDkxLCAxLCAxNDMsIAorICAgIDIyMywgMTcwLCAyMzAsIDE1MCwgMjI3LCA5MSwgMjE3LCAxNzksIDI0NSwgMjMzLCAyMjcsIDkxLCAyMTcsIDE3OSwgMjM5LCAKKyAgICAxMDIsIDIxMSwgNjEsIDQ4LCA0LCAyNDEsIDE2MSwgNDgsIDQsIDI0MSwgMTU3LCA0OCwgNCwgMjM3LCA0OCwgNDgsIDQsIAorICAgIDIwNCwgNTUsIDQ4LCA0LCAyMDQsIDU0LCA0OCwgNCwgMjE5LCAyMywgNDgsIDQsIDI0OCwgOTMsIDQ4LCA0LCAyNDgsIDE1MCwgCisgICAgNDgsIDQsIDIyNSwgNDYsIDQ4LCA0LCAyMjgsIDIzOSwgNDgsIDQsIDIyNCwgMTg3LCA0OCwgNCwgMjM4LCAyMDMsIDQ4LCA0LCAKKyAgICAyNDAsIDUzLCA0OCwgNCwgMjA2LCA1MCwgNDgsIDQsIDIwOSwgMTc2LCA0OCwgNCwgMjA5LCA5MCwgNDgsIDQsIDI0MywgCisgICAgMjQ3LCA0OCwgNCwgMjQzLCAyNDQsIDQ4LCA0LCAyMjcsIDIyNiwgNDgsIDQsIDIxNiwgMTM1LCA0OCwgNCwgMjQ0LCA2MSwgCisgICAgNDgsIDQsIDIyMywgMTYsIDQ4LCA0LCAyMTQsIDE2NSwgNDgsIDQsIDIxMywgNDEsIDQ4LCA0LCAyMDIsIDkwLCA0OCwgNCwgCisgICAgMjAyLCA3MCwgNDgsIDQsIDI0NiwgMjMwLCA0OCwgNCwgMjMwLCAxNTksIDQ4LCA0LCAyMjIsIDM5LCA0OCwgNCwgMjAzLCAKKyAgICA0OSwgNDgsIDQsIDIyOSwgMTk4LCA0OCwgNCwgMjIyLCAxNzYsIDQ4LCA0LCAyMzgsIDE4MiwgNDgsIDQsIDIyNSwgOCwgNDgsIAorICAgIDQsIDIyMiwgMjM1LCA0OCwgNCwgMjIxLCAwLCA0OCwgNCwgNzUsIDQ4LCA0LCAyMzEsIDQ5LCA0OCwgNCwgMjM3LCAzLCA0OCwgCisgICAgNCwgMjM2LCAyMzgsIDQ4LCA0LCAyMDQsIDMwLCA0OCwgNCwgMjA0LCAxOCwgNDgsIDQsIDIxOCwgMTY3LCA0OCwgNCwgMjQ4LCAKKyAgICA5MSwgNDgsIDQsIDI0OCwgODYsIDQ4LCA0LCAyMjUsIDM5LCA0OCwgNCwgMjI4LCAyMzYsIDQ4LCA0LCAyMjQsIDE4NCwgNDgsIAorICAgIDQsIDIzOCwgMTk5LCA0OCwgNCwgMjQwLCAyNiwgNDgsIDQsIDIwNSwgMjMwLCA0OCwgNCwgMjA5LCAyLCA0OCwgNCwgMjA5LCAKKyAgICA3MCwgNDgsIDQsIDI0MywgMjM5LCA0OCwgNCwgMjQzLCAyNDMsIDQ4LCA0LCAyMjcsIDE0OCwgNDgsIDQsIDIxNiwgNTcsIAorICAgIDQ4LCA0LCAyNDMsIDIzMywgNDgsIDQsIDIyMywgMTAsIDQ4LCA0LCAyMTIsIDE2MiwgNDgsIDQsIDIxMywgMTEsIDQ4LCA0LCAKKyAgICAyMDIsIDM5LCA0OCwgNCwgMjAyLCA2NiwgNDgsIDQsIDI0NiwgNzksIDQ4LCA0LCAyMzAsIDE0MSwgNDgsIDQsIDIyMiwgMzIsIAorICAgIDQ4LCA0LCAyMDMsIDExLCA0OCwgNCwgMjI5LCAxMDAsIDQ4LCA0LCAyMjIsIDE2OCwgNDgsIDQsIDIzOCwgODEsIDQ4LCA0LCAKKyAgICAyMjQsIDE1NSwgNDgsIDQsIDIyMiwgMTAwLCA0OCwgNCwgMjIwLCAyNDgsIDQ4LCA0LCA2MywgNDgsIDQsIDI1MCwgMjMxLCAKKyAgICA0OCwgNCwgMjIyLCAxOTgsIDQ4LCA0LCAxNTIsIDQ4LCA0LCAyMzcsIDEyNiwgNDgsIDQsIDIwNCwgMTExLCA0OCwgNCwgCisgICAgMjA0LCA5NywgNDgsIDQsIDE4NSwgNDgsIDQsIDI0OCwgOTgsIDQ4LCA0LCAyNDksIDMyLCA0OCwgNCwgMjI1LCA1NCwgNDgsIAorICAgIDQsIDIyOCwgMjQ0LCA0OCwgNCwgMjI4LCAyNDIsIDQ4LCA0LCAyMjQsIDE5MSwgNDgsIDQsIDIzOCwgMjA3LCA0OCwgNCwgCisgICAgMjQwLCAxMDgsIDQ4LCA0LCAyMDYsIDg2LCA0OCwgNCwgMjEwLCAyMiwgNDgsIDQsIDIwOSwgMTA4LCA0OCwgNCwgMjQ0LCAxLCAKKyAgICA0OCwgNCwgMjQzLCAyNDYsIDQ4LCA0LCAyMjgsIDExMywgNDgsIDQsIDIxNiwgMjIwLCA0OCwgNCwgMjQ0LCAyMTIsIDQ4LCAKKyAgICA0LCAyMjMsIDI1LCA0OCwgNCwgMjE1LCAzNiwgNDgsIDQsIDIxMywgOTAsIDQ4LCA0LCAyMDIsIDExNiwgNDgsIDQsIDIwMiwgCisgICAgODAsIDQ4LCA0LCAyNDcsIDkyLCA0OCwgNCwgMjMwLCAxODEsIDQ4LCA0LCAyMjIsIDQ4LCA0OCwgNCwgMTk4LCA0OCwgNCwgCisgICAgMTczLCA0OCwgNCwgMjMwLCA0LCA0OCwgNCwgMjIyLCAxODIsIDQ4LCA0LCAyMzksIDgsIDQ4LCA0LCAxOTIsIDQ4LCA0LCAKKyAgICAyMDEsIDIwMSwgNDgsIDQsIDIyMSwgMTEsIDQ4LCA0LCAyMjAsIDE4LCA0OCwgNCwgMjIwLCAxMywgNDgsIDQsIDIzNiwgCisgICAgMTE3LCA0OCwgNCwgMjAzLCAyNDQsIDQ4LCA0LCAyMDMsIDI0MCwgNDgsIDQsIDIxOCwgNDUsIDQ4LCA0LCAyNDgsIDg5LCAKKyAgICA0OCwgNCwgMjQ4LCAxMCwgNDgsIDQsIDIyNSwgMzQsIDQ4LCA0LCAyMjgsIDIzNCwgNDgsIDQsIDIyNCwgMTgwLCA0OCwgNCwgCisgICAgMjM4LCAxOTUsIDQ4LCA0LCAyMzksIDE3NSwgNDgsIDQsIDIwNSwgMTc2LCA0OCwgNCwgMjA4LCAxNDgsIDQ4LCA0LCAyMDksIAorICAgIDQyLCA0OCwgNCwgMjQzLCAyMzYsIDQ4LCA0LCAyNDMsIDI0MSwgNDgsIDQsIDIyNywgMTgsIDQ4LCA0LCAyMTUsIDIwOCwgCisgICAgNDgsIDQsIDI0MywgOTAsIDQ4LCA0LCAyMjIsIDI1MywgNDgsIDQsIDIxMSwgMjUwLCA0OCwgNCwgMjEyLCAyMzYsIDQ4LCA0LCAKKyAgICAyMDIsIDE1LCA0OCwgNCwgMjAyLCA2MSwgNDgsIDQsIDI0NSwgMTgwLCA0OCwgNCwgMjMwLCA5MSwgNDgsIDQsIDIyMiwgMjIsIAorICAgIDQ4LCA0LCAyMDIsIDIzMiwgNDgsIDQsIDIyOSwgNiwgNDgsIDQsIDIyMiwgMTY2LCA0OCwgNCwgMjM4LCAyOCwgNDgsIDQsIAorICAgIDIyNCwgMzUsIDQ4LCA0LCAyMjEsIDE4MCwgNDgsIDQsIDIyMCwgMjMwLCA0OCwgNCwgNjgsIDQ4LCA0LCAyMDYsIDI1NSwgCisgICAgNDgsIDQsIDIzNiwgMjYsIDQ4LCA0LCAyMzYsIDEzLCA0OCwgNCwgMjAzLCAyMTcsIDQ4LCA0LCAyMDMsIDIxMCwgNDgsIDQsIAorICAgIDIxNywgMTkxLCA0OCwgNCwgMjQ4LCA4OCwgNDgsIDQsIDI0NywgMTkzLCA0OCwgNCwgMjI1LCAzMywgNDgsIDQsIDIyOCwgCisgICAgMjMyLCA0OCwgNCwgMjI0LCAxNzksIDQ4LCA0LCAyMzgsIDE5NCwgNDgsIDQsIDIzOSwgMTA4LCA0OCwgNCwgMjA0LCAxNjMsIAorICAgIDQ4LCA0LCAyMDcsIDIwMywgNDgsIDQsIDIwOSwgMjIsIDQ4LCA0LCAyNDMsIDIzNCwgNDgsIDQsIDI0MywgMjQwLCA0OCwgNCwgCisgICAgMjI2LCAyMzksIDQ4LCA0LCAyMTUsIDE0NSwgNDgsIDQsIDI0MiwgNDIsIDQ4LCA0LCAyMjIsIDI0OCwgNDgsIDQsIDIxMSwgCisgICAgMTAsIDQ4LCA0LCAyMTIsIDE5OSwgNDgsIDQsIDIwMiwgNiwgNDgsIDQsIDIwMiwgNTcsIDQ4LCA0LCAyNDUsIDExMCwgNDgsIAorICAgIDQsIDIzMCwgODIsIDQ4LCA0LCAyMjIsIDE4LCA0OCwgNCwgMjAyLCAyMTMsIDQ4LCA0LCAyMjgsIDIwOSwgNDgsIDQsIDIyMiwgCisgICAgMTY1LCA0OCwgNCwgMjM3LCAyMzAsIDQ4LCA0LCAyMjMsIDI0NiwgNDgsIDQsIDIyMSwgODQsIDQ4LCA0LCAyMjAsIDIyNiwgCisgICAgNDgsIDQsIDc4LCA0OCwgNCwgMjIwLCAzMSwgNDgsIDQsIDIyMiwgMTI0LCA0OCwgNCwgMjM2LCAxMzYsIDQ4LCA0LCAyMzYsIAorICAgIDEyMCwgNDgsIDQsIDIwNCwgMCwgNDgsIDQsIDIwMywgMjQ1LCA0OCwgNCwgMjE4LCA2OSwgNDgsIDQsIDI0OCwgOTAsIDQ4LCAKKyAgICA0LCAyNDgsIDIzLCA0OCwgNCwgMjI1LCAzNSwgNDgsIDQsIDIyOCwgMjM1LCA0OCwgNCwgMjI0LCAxODIsIDQ4LCA0LCAyMzgsIAorICAgIDE5NywgNDgsIDQsIDIzOCwgMTk2LCA0OCwgNCwgMjM5LCAxODYsIDQ4LCA0LCAyMDUsIDE4OSwgNDgsIDQsIDEzNSwgNDgsIAorICAgIDQsIDIwOSwgNDcsIDQ4LCA0LCAyNDMsIDIzNywgNDgsIDQsIDI0MywgMjQyLCA0OCwgNCwgMjI3LCA0OSwgNDgsIDQsIDIxNSwgCisgICAgMjI3LCA0OCwgNCwgMjQzLCAxMTMsIDQ4LCA0LCAyMjMsIDEsIDQ4LCA0LCAyMTIsIDEzLCA0OCwgNCwgMjEyLCAyNDIsIDQ4LCAKKyAgICA0LCAyMDIsIDE3LCA0OCwgNCwgMjAyLCA2MywgNDgsIDQsIDI0NSwgMjU0LCA0OCwgNCwgMjMwLCAxMDEsIDQ4LCA0LCAyMjIsIAorICAgIDIzLCA0OCwgNCwgMjAyLCAyNDcsIDQ4LCA0LCAyMjksIDI2LCA0OCwgNCwgMjIyLCAxNjcsIDQ4LCA0LCAyMzgsIDM5LCA0OCwgCisgICAgNCwgMjI0LCA4MiwgNDgsIDQsIDIyMSwgMTkxLCA0OCwgNCwgMjIwLCAyMzMsIDQ4LCA0LCA3NCwgNDgsIDQsIDI0MSwgOTIsIAorICAgIDQ4LCA0LCAyMjIsIDE4NywgNDgsIDQsIDIzNywgNjcsIDQ4LCA0LCAyMzcsIDMzLCA0OCwgNCwgMjA0LCA2MiwgNDgsIDQsIAorICAgIDIwNCwgNDksIDQ4LCA0LCAyMTksIDM0LCA0OCwgNCwgMjQ4LCA5NCwgNDgsIDQsIDI0OCwgMTYyLCA0OCwgNCwgMjI1LCA0NywgCisgICAgNDgsIDQsIDIyOCwgMjQwLCA0OCwgNCwgMjI4LCAyMzgsIDQ4LCA0LCAyMjQsIDE4OCwgNDgsIDQsIDIzOCwgMjA0LCA0OCwgCisgICAgNCwgMjM4LCAyMDIsIDQ4LCA0LCAyNDAsIDYwLCA0OCwgNCwgMjA2LCA1NSwgNDgsIDQsIDIwOSwgMTg3LCA0OCwgNCwgMjA5LCAKKyAgICA5MiwgNDgsIDQsIDI0MywgMjQ4LCA0OCwgNCwgMjQzLCAyNDUsIDQ4LCA0LCAyMjcsIDIzNCwgNDgsIDQsIDIxNiwgMTU4LCAKKyAgICA0OCwgNCwgMjQ0LCA3NSwgNDgsIDQsIDIyMywgMTcsIDQ4LCA0LCAyMTQsIDE3NywgNDgsIDQsIDIxMywgNDMsIDQ4LCA0LCAKKyAgICAyMDIsIDkyLCA0OCwgNCwgMjAyLCA3MSwgNDgsIDQsIDI0NiwgMjM4LCA0OCwgNCwgMjMwLCAxNjEsIDQ4LCA0LCAyMjIsIAorICAgIDQxLCA0OCwgNCwgMjAzLCA1MiwgNDgsIDQsIDIyOSwgMjAxLCA0OCwgNCwgMjIyLCAxNzcsIDQ4LCA0LCAyMjIsIDE3MywgCisgICAgNDgsIDQsIDIzOCwgMTkwLCA0OCwgNCwgMjM4LCAxNzcsIDQ4LCA0LCAyMjUsIDIwLCA0OCwgNCwgMjIyLCAyNDAsIDQ4LCA0LCAKKyAgICAyMjEsIDEsIDQ4LCA0LCAyMjIsIDIwNSwgNDgsIDQsIDIyNywgMTg4LCA0OCwgMjQ1LCAyMzMsIDQ4LCAyMzksIDEwMiwgCisgICAgMjExLCA2MSwgNDgsIDIxNywgNDcsIDgyLCA0OCwgNCwgMjIzLCAwLCAyNDAsIDEwOCwgNDgsIDQsIDIyMywgMCwgMTczLCAKKyAgICA0OCwgNCwgMjIzLCAwLCAyMTEsIDI1MCwgNDgsIDE2LCAyNDAsIDQ5LCA0OCwgMTYsIDIyOSwgMTk2LCA0OCwgMTYsIDIwOCwgCisgICAgMjE1LCA0OCwgMTYsIDIyMiwgNzUsIDQ4LCAxNiwgMjQ4LCAyMzcsIDQ4LCAxNiwgMjQwLCAxMDcsIDQ4LCAxNiwgMjEwLCAKKyAgICAxOCwgNDgsIDE2LCAyNDQsIDE2NCwgNDgsIDE2LCAyNDMsIDg5LCA0OCwgMTYsIDIyOCwgMTkzLCA0OCwgMTYsIDIwOCwgCisgICAgMTUyLCA0OCwgMTYsIDI0MywgMTEyLCA0OCwgMTYsIDIzMCwgOTIsIDQ4LCAxNywgMjAyLCA4NCwgNDgsIDE3LCAxMDUsIDQ4LCAKKyAgICAxNywgMTA4LCA0OCwgMTcsIDE0NywgNDgsIDE3LCAxNDksIDQ4LCAxNywgMTcwLCA0OCwgMTcsIDE5NSwgNDgsIDE3LCAyMTMsIAorICAgIDExMSwgNDgsIDE3LCAxOTksIDQ4LCAxNywgMjIyLCA2MywgNDgsIDQsIDIyMywgMCwgMTkyLCA0OCwgNCwgMjIzLCAwLCAKKyAgICAyNDMsIDExMywgMzYsIDYsIDEsIDIwMiwgODgsIDM2LCA1LCAxLCAyMDIsIDg4LCAzNiwgNiwgMSwgMjQxLCAyNTAsIDM2LCAKKyAgICA1LCAxLCAyNDEsIDI1MCwgMzYsIDYsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjE2LCA3MywgMjQxLCAyNTIsIAorICAgIDM2LCA2LCAxLCAyMzAsIDIzMCwgMzYsIDUsIDEsIDIzMCwgMjMwLCAzNiwgNiwgMSwgMjQzLCAxMjksIDM2LCA1LCAxLCAKKyAgICAyNDMsIDEyOSwgMzYsIDYsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM2LCA1LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNiwgCisgICAgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA1LCAxLCAyNDcsIDIwNCwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMiwgMjE2LCAKKyAgICAyMDMsIDM0LCAzNiwgNSwgMSwgMjIyLCAyMTYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMDMsIDMxLCAzLCAyNDksIDI2LCAyMDMsIAorICAgIDM0LCAzNiwgNSwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAzNCwgMzYsIDYsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAKKyAgICAzNiwgNSwgMSwgMjMwLCAyMjgsIDIwMywgNjYsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDIxMywgMzYsIDUsIDEsIDIxNiwgCisgICAgNzMsIDIwMiwgMjEzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNiwgMSwgCisgICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIAorICAgIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCAzNSwgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCisgICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAKKyAgICAxODMsIDM2LCA2LCAxLCAyMDIsIDI0OSwgMzYsIDUsIDEsIDIwMiwgMjQ5LCAzNiwgNiwgMSwgMjE2LCA3MywgMjA4LCAxNCwgCisgICAgMzYsIDUsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIDM2LCA2LCAxLCAyMTIsIDcsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMTIsIDcsIAorICAgIDI0NCwgNzUsIDM2LCA2LCAxLCAyMTIsIDcsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDYsIAorICAgIDEsIDIxMiwgNywgMjQxLCAxMDMsIDM2LCA1LCAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjI0LCA0NywgNzgsIAorICAgIDM2LCA1LCAxLCAyMjQsIDQ3LCA3OCwgMzYsIDYsIDEsIDI0OCwgNjMsIDc4LCAzNiwgNSwgMSwgMjQ4LCA2MywgNzgsIDM2LCAKKyAgICA2LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCA1LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCAxLCAyMjMsIDIyNywgNzgsIAorICAgIDM5LCAzNiwgMjA0LCAxNDYsIDM5LCAzNiwgMjA5LCAxNTMsIDIyNCwgMTE0LCA1NCwgMzksIDM2LCAyMzYsIDEyLCAyMjQsIAorICAgIDExNCwgNTQsIDM5LCAzNiwgMjA5LCAzNywgMjI0LCAxMTQsIDU0LCAyMTIsIDU1LCAyNTAsIDU5LCAzOSwgMzYsIDEsIDIwNywgCisgICAgMTEsIDIzMSwgMTEwLCAzOSwgMzYsIDEsIDc1LCAzOSwgMzYsIDEsIDIwMywgMTEsIDM5LCAzNiwgMSwgNjgsIDM5LCAzNiwgCisgICAgMSwgMjM3LCA5MSwgNTQsIDM5LCAzNiwgMSwgMjAzLCAzMCwgMzksIDM2LCAxLCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIAorICAgIDIyMCwgMzYsIDM5LCAzNiwgMjI5LCAyMTMsIDM5LCAzNiwgMjE5LCA0MSwgMzYsIDIyOSwgMjEzLCAzNiwgMjE5LCA0MSwgCisgICAgMzYsIDYsIDEsIDI0MiwgOSwgMzYsIDUsIDEsIDI0MiwgOSwgMzYsIDYsIDEsIDI0MSwgMjQxLCAzNiwgNSwgMSwgMjQxLCAKKyAgICAyNDEsIDM2LCA2LCAxLCAyMDIsIDQ3LCAzNiwgNSwgMSwgMjAyLCA0NywgMzYsIDYsIDEsIDI0NiwgMjU0LCAzNiwgNSwgMSwgCisgICAgMjQ2LCAyNTQsIDM2LCA2LCAxLCAyNDEsIDIzOCwgMzYsIDUsIDEsIDI0MSwgMjM4LCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIAorICAgIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjA5LCAxODgsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjA3LCAxNTgsIDM2LCA1LCAxLCAKKyAgICAyMDcsIDE1OCwgMzYsIDYsIDEsIDIwNywgMjQ1LCAzNiwgNSwgMSwgMjA3LCAyNDUsIDM2LCA2LCAxLCAyMDcsIDI1MCwgMzYsIAorICAgIDUsIDEsIDIwNywgMjUwLCAzNiwgNiwgMSwgMjA5LCAxOTMsIDM2LCA1LCAxLCAyMDksIDE5MywgMzYsIDYsIDEsIDIzNSwgCisgICAgMjUxLCAzNiwgNSwgMSwgMjM1LCAyNTEsIDM2LCA2LCAxLCAyMTIsIDE3NywgMzYsIDUsIDEsIDIxMiwgMTc3LCAzNiwgNiwgCisgICAgMSwgNTIsIDc4LCAzNiwgNSwgMSwgNTIsIDc4LCAzNiwgNiwgMSwgMjQ1LCAxMjgsIDc4LCAzNiwgNSwgMSwgMjQ1LCAxMjgsIAorICAgIDc4LCA2NSwgMSwgMzYsIDIzNywgOTEsIDU0LCA2NSwgMSwgMzYsIDIxMiwgNywgNTQsIDM5LCAzNiwgMSwgMjQxLCAxNTQsIAorICAgIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDc0LCAyNCwgMSwgNjMsIDI0LCAxLCAxNzMsIDI0LCAxLCA2OCwgMjQsIDEsIDIyOCwgCisgICAgMjA5LCAyNCwgMSwgMjQxLCAxNjEsIDI0LCAxLCAyMTYsIDEzNSwgMjQsIDEsIDIxMCwgMSwgMjQsIDEsIDc4LCAyNCwgMSwgCisgICAgMjIwLCAyNDgsIDI0LCAxLCA3NSwgMjQsIDEsIDIyOCwgMTEzLCAyNCwgMSwgMTg1LCAyNCwgMSwgMjE2LCAzLCAyNCwgMSwgCisgICAgMjE2LCA1MCwgMjQsIDEsIDIyNywgMjI1LCAyNCwgMSwgMjI1LCA3LCAyNCwgMSwgMjEwLCAxOCwgMjQsIDEsIDIyMywgMjMsIAorICAgIDI0LCAxLCAyMjIsIDQ2LCAyNCwgMSwgMjI2LCAxODUsIDI0LCAxLCAyMTAsIDE3OSwgMjQsIDEsIDIyMywgMjQ2LCAyNCwgMSwgCisgICAgMjEzLCA2LCAyNCwgMSwgMjEyLCAxNjIsIDI0LCAxLCAyMTMsIDE2LCAyNCwgMSwgMjEzLCAxMTMsIDI0LCAxLCAyMjgsIAorICAgIDEzNywgMjQsIDEsIDIyOSwgMTcwLCAyNCwgMSwgMjIxLCA1NSwgMjQsIDEsIDIyMSwgODQsIDI0LCAxLCAyMjIsIDE3LCAyNCwgCisgICAgMSwgMjAyLCAyMjksIDI0LCAxLCAyMTIsIDE5OSwgMjQsIDEsIDIwMiwgMTg3LCAyNCwgMSwgMTk4LCAyNCwgMSwgMjIxLCAKKyAgICAxMTgsIDI0LCAxLCAyMjksIDE1NiwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjIyLCAzOSwgMjQsIDEsIDIyMSwgOTksIAorICAgIDI0LCAxLCAyMTcsIDE4MywgMjQsIDEsIDIwMywgMjE0LCAyNCwgMSwgMjE5LCAyMywgMjQsIDEsIDI0MCwgNTMsIDI0LCAxLCAKKyAgICAyMTUsIDE0NSwgMjQsIDEsIDIyNiwgMjM5LCAyNCwgMSwgMjI0LCAxNTUsIDI0LCAxLCAyMjIsIDEwMCwgMjQsIDEsIDIxNiwgCisgICAgNzUsIDI0LCAxLCAyMTYsIDIwMiwgMjQsIDEsIDIyOSwgMTgwLCAyNCwgMSwgMjIyLCAxMzEsIDI0LCAxLCAyMjIsIDE4MiwgCisgICAgMjQsIDEsIDIyMiwgMjAzLCAyNCwgMSwgMjEyLCAyNDIsIDI0LCAxLCAyMTcsIDE4OCwgMjQsIDEsIDIzOSwgMTA4LCAyNCwgCisgICAgMSwgMjM5LCAxNzksIDI0LCAxLCAyMDQsIDExMSwgMjQsIDEsIDIwMSwgMjAxLCAyNCwgMSwgMjI3LCAxNDgsIDI0LCAxLCAKKyAgICAyMTgsIDE2NywgMjQsIDEsIDIyNywgMTAsIDI0LCAxLCAyMjksIDI2LCAyNCwgMSwgMjI1LCA0NCwgMjQsIDEsIDIxNiwgCisgICAgMTA3LCAyNCwgMSwgMjI0LCAyNDAsIDI0LCAxLCAxOTIsIDI0LCAxLCAyMDksIDIsIDI0LCAxLCAyMjksIDEwMCwgMjQsIDEsIAorICAgIDIyNCwgODIsIDI0LCAxLCAyMjUsIDUyLCAyNCwgMSwgMjA5LCAxMzIsIDI0LCAxLCAyMjgsIDI0NCwgMjQsIDEsIDIwOSwgCisgICAgMTUyLCAyNCwgMSwgMjIxLCA4NiwgMjQsIDEsIDIxNCwgMjUxLCAyNCwgMSwgMjQwLCAxMDQsIDI0LCAxLCAyMjgsIDI0NiwgCisgICAgMjQsIDEsIDIyOSwgMjEsIDI0LCAzOSwgMTMxLCAyMjgsIDI1NSwgMjQsIDM5LCAxMzEsIDIwNywgMTk0LCAyNCwgMjIyLCAKKyAgICA0NSwgMjQsIDIzOSwgMTAyLCAyMTEsIDYxLCAyNCwgMjQ1LCAyNDIsIDI0LCAyNDUsIDIzMywgMjQsIDIxMywgMTQzLCAyNCwgCisgICAgMjE3LCA0NywgODIsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIAorICAgIDE0MywgMjAzLCA3NywgMjE4LCAxMTksIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxMywgNjUsIDY1LCAxLCAKKyAgICAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTMsIDY1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTcsIDY1LCAKKyAgICA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE3LCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgCisgICAgMjE1LCAxNDUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTUsIDE0NSwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIAorICAgIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjQyLCA4MywgCisgICAgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDE0MywgCisgICAgMTQyLCA2NSwgMSwgMjQwLCAxOTgsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgCisgICAgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIAorICAgIDEyNCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDIyNywgMjE0LCAKKyAgICAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDIyNywgMjE0LCAxNDMsIAorICAgIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDIyNywgMjE0LCAxNDMsIDE0MiwgCisgICAgNjUsIDEsIDI0MCwgMTk3LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCA3MCwgODAsIDE0MiwgNjUsIDEsIDcwLCAyMTIsIAorICAgIDU3LCA2NSwgMSwgNzAsIDIzNiwgMTA2LCAxNDIsIDY1LCAxLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAyNTAsIDIxNywgCisgICAgNjUsIDEsIDIxNiwgMTg4LCAxMTIsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDEyMSwgNDcsIDY1LCAxLCAyMTYsIDE4OCwgMjQwLCAKKyAgICAyMTIsIDgyLCA2NSwgMSwgMjE2LCAxODgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDY1LCAxLCAxMjQsIDIzMCwgMjM5LCAKKyAgICAyNDAsIDIxMiwgODIsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDIxMSwgNDIsIDI1LCAxMjQsIAorICAgIDIwOCwgMTYxLCA4LCA2LCAxLCAyNDEsIDE0OSwgMjUxLCAzMCwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDYsIAorICAgIDEsIDI0MSwgMTQ5LCAyNTEsIDU5LCA4LCA1LCAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNiwgMSwgMjM3LCAzMSwgOCwgNSwgCisgICAgMSwgMjM3LCAzMSwgOCwgNiwgMSwgMjA3LCAxMDcsIDgsIDUsIDEsIDIwNywgMTA3LCA4LCA2LCAxLCAyMDgsIDg5LCA4LCA1LCAKKyAgICAxLCAyMDgsIDg5LCA4LCA2LCAxLCAyNDUsIDEwNywgOCwgNSwgMSwgMjQ1LCAxMDcsIDgsIDYsIDEsIDI0NSwgMTA4LCAzLCAKKyAgICAyNDUsIDIzMywgOCwgNSwgMSwgMjQ1LCAxMDgsIDMsIDI0NSwgMjMzLCA4LCAxLCA1LCA2LCAyNDAsIDE3NCwgOCwgMSwgNSwgCisgICAgNiwgMTk0LCA4LCA2LCAxLCAyNTIsIDI1LCA4LCA1LCAxLCAyNTIsIDI1LCA4LCA2LCAxLCAyNTAsIDE3OCwgOCwgNSwgMSwgCisgICAgMjUwLCAxNzgsIDgsIDYsIDEsIDI1MCwgMzQsIDgsIDUsIDEsIDI1MCwgMzQsIDgsIDYsIDEsIDI1MCwgMTgsIDgsIDUsIDEsIAorICAgIDI1MCwgMTgsIDgsIDYsIDEsIDI1MCwgMTksIDMsIDIzNiwgMTA2LCAxNDIsIDgsIDUsIDEsIDI1MCwgMTksIDMsIDIzNiwgCisgICAgMTA2LCAxNDIsIDgsIDYsIDEsIDI1MCwgOCwgOCwgNSwgMSwgMjUwLCA4LCA4LCA2LCAxLCAyMTYsIDczLCAyNDcsIDEyNiwgCisgICAgMywgMjQzLCA4NSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIDMsIDI0MywgODUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIAorICAgIDk1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAKKyAgICAyMzAsIDU1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIAorICAgIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDI0NywgMjAzLCAxNTksIAorICAgIDgsIDUsIDEsIDI0NywgMjAzLCAxNTksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMzgsIDk1LCA4LCA1LCAxLCAyMjgsIDEzMSwgCisgICAgMywgMTM4LCA5NSwgOCwgNiwgMSwgMTU4LCAzLCAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA1LCAxLCAxNTgsIDMsIAorICAgIDE2MywgMjExLCAzMiwgMjE5LCAxOTksIDgsIDYsIDEsIDE1OCwgMywgMjI3LCAxNCwgOCwgNSwgMSwgMTU4LCAzLCAyMjcsIAorICAgIDE0LCA4LCA2LCAxLCAyMjAsIDE4LCA4LCA1LCAxLCAyMjAsIDE4LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMjExLCAzMiwgCisgICAgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIAorICAgIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyMTksIAorICAgIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCAKKyAgICA2LCAxLCAyMTcsIDEzNSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgCisgICAgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIxNywgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDIxNywgCisgICAgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNywgMSwgMjE1LCAKKyAgICAxOTIsIDgsIDYsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNSwgMSwgMjE1LCAxMzIsIDIxNSwgMTkyLCA4LCA2LCAxLCAKKyAgICAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAKKyAgICAyMDQsIDE1MiwgOCwgNSwgMSwgMjA0LCAxNTIsIDgsIDYsIDEsIDIwNSwgMTk3LCAyMDIsIDE1OSwgOCwgNSwgMSwgMjA1LCAKKyAgICAxOTcsIDIwMiwgMTU5LCA4LCA2LCAxLCAyMDksIDQxLCAzLCA5NSwgOCwgNSwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDYsIDEsIAorICAgIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgCisgICAgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIwNiwgNDUsIDgsIDUsIDEsIDIwNiwgNDUsIDgsIDYsIDEsIDI0MCwgMjUwLCA4LCA1LCAKKyAgICAxLCAyNDAsIDI1MCwgOCwgNiwgMSwgMjMwLCAyMTUsIDgsIDUsIDEsIDIzMCwgMjE1LCA4LCA2LCAxLCAyNDUsIDIxOCwgOCwgCisgICAgNSwgMSwgMjQ1LCAyMTgsIDY1LCAxLCAyMDYsIDE5MywgOCwgNSwgMSwgMjQyLCAzMiwgOCwgNSwgMSwgMjI2LCAyMjIsIDgsIAorICAgIDUsIDEsIDIyMywgMjIwLCA4LCA1LCAxLCAyMjEsIDQ3LCA4LCA1LCAxLCAyMTUsIDEzMSwgOCwgMSwgNSwgNiwgMjE1LCAKKyAgICAxMzEsIDgsIDUsIDEsIDIwNywgMTkxLCA4LCA1LCAxLCAyMDcsIDYsIDgsIDYsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNSwgCisgICAgMSwgMjMxLCA0LCAyNDUsIDUxLCA4LCA2LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCA4LCA1LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCAKKyAgICA4LCA2LCAxLCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDUsIDEsIAorICAgIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAxNTksIDgsIDUsIDEsIDIwNywgMTc0LCAKKyAgICAxNTksIDgsIDYsIDEsIDIzMSwgNCwgMTQ2LCA4LCA1LCAxLCAyMzEsIDQsIDE0NiwgOCwgNiwgMSwgMjMxLCA0LCAxOTQsIDgsIAorICAgIDUsIDEsIDIzMSwgNCwgMTk0LCA4LCA2LCAxLCAyMzEsIDQsIDIxMCwgNjksIDgsIDUsIDEsIDIzMSwgNCwgMjEwLCA2OSwgCisgICAgNjUsIDEsIDEyNCwgMjQ2LCA1MywgMjUxLCAxMzgsIDY1LCAxLCAyNDUsIDI0MiwgNjUsIDEsIDIxMiwgMjI4LCAyNDEsIDM1LCAKKyAgICA1NCwgOCwgNiwgMSwgMjE0LCAyNTUsIDgsIDUsIDEsIDIxNCwgMjU1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzEsIDgsIAorICAgIDUsIDEsIDIyOCwgMTMxLCAzLCAyMTYsIDc5LCAyMzYsIDExNiwgMjUsIDI0OCwgMTI0LCA4LCAxLCAyMTIsIDExNCwgMjQzLCAKKyAgICA4NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA2LCAKKyAgICAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgCisgICAgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMzksIAorICAgIDE5OSwgOCwgNSwgMSwgNjYsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgOTUsIDgsIDUsIDEsIDI0MCwgCisgICAgMTc1LCAzLCA5NSwgOCwgNiwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjUxLCAxMDksIDgsIAorICAgIDYsIDEsIDIwNSwgMTgyLCAyMjAsIDczLCA4LCA1LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNiwgMSwgMjA1LCAxODIsIAorICAgIDIwNywgMjQsIDgsIDUsIDEsIDIwNSwgMTgyLCAyMDcsIDI0LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyMjAsIDg5LCA5NSwgOCwgCisgICAgNSwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAKKyAgICAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMjMsIAorICAgIDE2NCwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIxNywgMSwgMywgCisgICAgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMjAsIAorICAgIDg5LCA5NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNiwgMSwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNiwgMSwgCisgICAgMTMyLCAyMzksIDc1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMjQ4LCAxMjQsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCAKKyAgICA4LCA2LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA4LCA2LCAxLCAyNDYsIAorICAgIDE0MiwgOCwgNiwgMSwgMjQ4LCAxMDYsIDgsIDUsIDEsIDI0OCwgMTA2LCA4LCA2LCAxLCAyMjAsIDM2LCA4LCA1LCAxLCAKKyAgICAyMjAsIDM2LCA4LCAyNDEsIDQwLCAxLCAyMTIsIDE1NCwgNzUsIDY1LCAxLCA2LCAyMzcsIDE3MiwgMywgOTUsIDY1LCAxLCAKKyAgICA1LCAzMiwgMjIwLCA3MywgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAyNDEsIDQwLCAxLCAyMTYsIDczLCAKKyAgICAyNDAsIDE3NCwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgMjE5LCAxODQsIDgsIDI0MSwgNDAsIDEsIDIzMCwgMjM5LCAyMjYsIAorICAgIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjM1LCAyMDYsIDIyNywgMjAsIDgsIDI0MSwgNDAsIDEsIDI1MCwgMTI2LCAyMjYsIDE4NSwgCisgICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDYzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAKKyAgICAyNDIsIDExLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA3NCwgMjEwLCAxNDksIAorICAgIDIyMywgOTQsIDEsIDc4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjM3LCA4NSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyOSwgCisgICAgMjYsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIDExNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzOCwgMzksIDIxMCwgCisgICAgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjUwLCAxODAsIDIxMCwgMTQ5LCAyMjMsIAorICAgIDk0LCAxLCAyNDUsIDI1NCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0NiwgMTE2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgCisgICAgMjMwLCAxMDEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzAsIDE0MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjE4LCAKKyAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjA3LCAyMjQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDQsIDkwLCAyMTAsIDE0OSwgCisgICAgMjIzLCA5NCwgMSwgMjQ0LCA5OSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDEzNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAorICAgIDIwOSwgNDcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDExMywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0MywgMjM3LCAKKyAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjIxLCAxOTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTgsIDY5LCAyMTAsIDE0OSwgCisgICAgMjIzLCA5NCwgMSwgMjE4LCAxODAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDgsIDIzLCAyMTAsIDE0OSwgMjIzLCA5NCwgCisgICAgMSwgMjQ4LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNCwgODIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIAorICAgIDIyNywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNywgNDksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIDE3MSwgMjEwLCAKKyAgICAxNDksIDIyMywgOTQsIDEsIDIxMiwgMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzYsIDEzNiwgMjEwLCAxNDksIDIyMywgCisgICAgOTQsIDIyLCAyLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NSwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAKKyAgICA2OCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAyMjAsIDE4LCAyMTAsIAorICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MiwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTEsIDIxMCwgCisgICAgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA4OSwgMTUzLCAKKyAgICAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAKKyAgICAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjEyLCAKKyAgICA4MCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAKKyAgICAyMTIsIDc5LCAxNTMsIDIzMSwgMzMsIDIxNywgNTYsIDgyLCAxNTMsIDIzMSwgMzMsIDIxOCwgOTYsIDgyLCAxNTMsIDIzMSwgCisgICAgMzMsIDIxNSwgMTIwLCA4MiwgMTUzLCAyMzEsIDMzLCAyMTcsIDU3LCA4MiwgMjE4LCAyMDQsIDEsIDE3MywgMjE4LCAyMDQsIAorICAgIDEsIDIyOSwgMTQ0LCAyMTgsIDIwNCwgMSwgMjM5LCA4LCAyMTgsIDIwNCwgMSwgMjIyLCAyMDMsIDIxOCwgMjA0LCAxLCAKKyAgICAyNDcsIDkyLCAyMTgsIDIwNCwgMSwgMjQ2LCAxOTksIDIxOCwgMjA0LCAxLCAyMzAsIDE4MSwgMjE4LCAyMDQsIDEsIDIyMSwgCisgICAgMTEsIDIxOCwgMjA0LCAxLCAyMTAsIDIyLCAyMTgsIDIwNCwgMSwgMjA5LCAxMDgsIDIxOCwgMjA0LCAxLCAyNDQsIDIxMiwgCisgICAgMjE4LCAyMDQsIDEsIDIwMSwgMjAxLCAyMTgsIDIwNCwgMSwgMTg1LCAyMTgsIDIwNCwgMSwgMjE4LCAyMDgsIDIxOCwgMjA0LCAKKyAgICAxLCAyNDksIDMyLCAyMTgsIDIwNCwgMSwgMTkyLCAyMTgsIDIwNCwgMSwgMjA4LCAyMCwgMjE4LCAyMDQsIDEsIDIwOCwgMTAsIAorICAgIDIxOCwgMjA0LCAxLCAyNDEsIDI1NSwgMjE4LCAyMDQsIDEsIDIwNCwgMTExLCAyMTgsIDIwNCwgMSwgMjAyLCA4MCwgMjE4LCAKKyAgICAyMDQsIDEsIDIwMiwgMTE2LCAyMTgsIDIwNCwgMSwgNSwgNjMsIDIxOCwgMjA0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAyMTYsIAorICAgIDIyMCwgMjE4LCAyMDQsIDEsIDIyOCwgMTEzLCAyMTgsIDIwNCwgMSwgMjEzLCA5MCwgMjE4LCAyMDQsIDEsIDIxNSwgMzYsIAorICAgIDIxOCwgMjA0LCAxLCAxNTIsIDIxOCwgMjA0LCAxLCA2MywgMjE4LCAyMDQsIDEsIDc1LCAyMTgsIDIwNCwgMSwgNjgsIDIxOCwgCisgICAgMjA0LCAxLCA3NCwgMjE4LCAyMDQsIDEsIDc4LCAyMTgsIDIwNCwgMSwgMjE3LCAxMjYsIDIxOCwgMjA0LCAxLCAyMDMsIAorICAgIDE4MiwgMjE4LCAyMDQsIDEsIDI0MCwgMTA4LCAyMTgsIDIwNCwgMSwgMjM4LCAxNTUsIDIxOCwgMjA0LCAxLCAyNDEsIDE2MSwgCisgICAgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAKKyAgICAyMDcsIDI0MSwgMjE4LCAyMDQsIDEsIDIwNywgMjI5LCAyMTgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIxOCwgMjA0LCAxLCAyMjEsIAorICAgIDIyNywgMjE4LCAyMDQsIDEsIDI1MCwgMjU1LCAxOTgsIDIxOCwgMjA0LCAxLCAyMDUsIDE4NSwgMjEzLCA5MCwgMjE4LCAKKyAgICAyMDQsIDEsIDIwNSwgMTg2LCAxNTIsIDIxOCwgMjA0LCAxLCAyNTAsIDY2LCAyNDAsIDEwOCwgMjE4LCAyMDQsIDIxMCwgCisgICAgMjU0LCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDIxMCwgMjAxLCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDEsIDI0NywgNTIsIAorICAgIDIxOCwgMjA0LCAyMTIsIDEyMCwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCA1MiwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCAKKyAgICAxMzEsIDIxMywgODIsIDIxOCwgMjA0LCAxMzEsIDUyLCAyMTMsIDgyLCAyMTQsIDIxNSwgMiwgMjUwLCAxODAsIDIxNCwgCisgICAgMjE1LCAyLCAyMDUsIDE5OSwgMjE0LCAyMTUsIDEsIDYzLCAyMTQsIDIxNSwgMSwgMjUyLCAyNSwgMjE0LCAyMTUsIDEsIDc1LCAKKyAgICAyMTQsIDIxNSwgMSwgMjMxLCA4MywgMjE0LCAyMTUsIDEsIDY4LCAyMTQsIDIxNSwgMSwgMjA2LCAxNzgsIDIxNCwgMjE1LCAKKyAgICAxLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDEsIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAxLCAxMjUsIDE1OSwgMjE0LCAyMTUsIAorICAgIDEsIDEyNSwgMjI3LCA3OCwgMjE0LCAyMTUsIDEsIDc0LCAyMTQsIDIxNSwgMSwgMjQxLCAxNjEsIDIxNCwgMjE1LCAxLCAKKyAgICAyNTEsIDY0LCAyMTQsIDIxNSwgMSwgNzgsIDIxNCwgMjE1LCAxLCAyMjAsIDE4LCAyMTQsIDIxNSwgMSwgMjUwLCAzNCwgCisgICAgMjE0LCAyMTUsIDEsIDE3MywgMjE0LCAyMTUsIDEsIDIyOSwgMTQ0LCAyMTQsIDIxNSwgMSwgMjM5LCA4LCAyMTQsIDIxNSwgCisgICAgMSwgMjM4LCAxMTksIDIxNCwgMjE1LCAxLCAyMjIsIDIwMywgMjE0LCAyMTUsIDEsIDI0NywgOTIsIDIxNCwgMjE1LCAxLCAKKyAgICAyNDYsIDE5OSwgMjE0LCAyMTUsIDEsIDIzMCwgMTgxLCAyMTQsIDIxNSwgMSwgMjMwLCAxNDksIDIxNCwgMjE1LCAxLCAyMjEsIAorICAgIDExLCAyMTQsIDIxNSwgMSwgMjA3LCAyNDEsIDIxNCwgMjE1LCAxLCAyMDcsIDIyOSwgMjE0LCAyMTUsIDEsIDI0NCwgMTIwLCAKKyAgICAyMTQsIDIxNSwgMSwgMjQ0LCAxMDQsIDIxNCwgMjE1LCAxLCAyMjEsIDIyNywgMjE0LCAyMTUsIDEsIDIxMCwgMjIsIDIxNCwgCisgICAgMjE1LCAxLCAyMDksIDEwOCwgMjE0LCAyMTUsIDEsIDI0NCwgMjEyLCAyMTQsIDIxNSwgMSwgMjQ0LCAxLCAyMTQsIDIxNSwgCisgICAgMSwgMjAxLCAyMDEsIDIxNCwgMjE1LCAxLCAxODUsIDIxNCwgMjE1LCAxLCAyMTgsIDIwOCwgMjE0LCAyMTUsIDEsIDI0OSwgCisgICAgMzIsIDIxNCwgMjE1LCAxLCAyNDgsIDk4LCAyMTQsIDIxNSwgMSwgMTkyLCAyMTQsIDIxNSwgMSwgMTk4LCAyMTQsIDIxNSwgCisgICAgMSwgMjE2LCAyMjAsIDIxNCwgMjE1LCAxLCAyMjgsIDExMywgMjE0LCAyMTUsIDEsIDIwNiwgODYsIDIxNCwgMjE1LCAxLCAKKyAgICAyMTMsIDkwLCAyMTQsIDIxNSwgMSwgMjExLCAxNjQsIDIxNCwgMjE1LCAxLCAyMTUsIDM2LCAyMTQsIDIxNSwgMSwgMTUyLCAKKyAgICAyMTQsIDIxNSwgMSwgMjI3LCA3NywgMjE0LCAyMTUsIDEwOSwgMiwgMjM3LCAxNTUsIDIxNCwgMjE1LCAyMiwgMiwgMjUyLCAKKyAgICAyNSwgMjE0LCAyMTUsIDIyLCAyLCA3NSwgMjE0LCAyMTUsIDIyLCAyLCAyMzEsIDgzLCAyMTQsIDIxNSwgMjIsIDIsIDY4LCAKKyAgICAyMTQsIDIxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTQ2LCAyMTQsIDIxNSwgMjIsIDIsIAorICAgIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAxNTksIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAKKyAgICAyMTQsIDIxNSwgMjIsIDIsIDc0LCAyMTQsIDIxNSwgMjIsIDIsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMjIsIDIsIDI1MSwgNjQsIAorICAgIDIxNCwgMjE1LCAyMiwgMiwgNzgsIDIxNCwgMjE1LCAyMiwgMiwgMjIwLCAxOCwgMjE0LCAyMTUsIDIyLCAyLCAyNTAsIDM0LCAKKyAgICAyMTQsIDIxNSwgMiwgMjA1LCAyMDQsIDIxNCwgMjE1LCAyNDQsIDE2NiwgMjE0LCAyMTUsIDUyLCAyNDQsIDE2NiwgMjE0LCAKKyAgICAyMTUsIDE3LCAyMDIsIDg0LCAyMTQsIDIxNSwgMTcsIDEwNSwgMjE0LCAyMTUsIDE3LCAxMDgsIDIxNCwgMjE1LCAxNywgCisgICAgMTQ3LCAyMTQsIDIxNSwgMTcsIDE0OSwgMjE0LCAyMTUsIDE3LCAxNzAsIDIxNCwgMjE1LCAxNywgMTk1LCAyMTQsIDIxNSwgCisgICAgMTcsIDIxMywgMTExLCAyMTQsIDIxNSwgMTcsIDE5OSwgMjE0LCAyMTUsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDE3LCAyMDIsIAorICAgIDg0LCAzOSwgOTIsIDE3LCAxMDUsIDM5LCA5MiwgMTcsIDEwOCwgMzksIDkyLCAxNywgMTQ3LCAzOSwgOTIsIDE3LCAxNDksIAorICAgIDM5LCA5MiwgMTcsIDE3MCwgMzksIDkyLCAxNywgMTk1LCAzOSwgOTIsIDE3LCAyMTMsIDExMSwgMzksIDkyLCAxNywgMTk5LCAKKyAgICAzOSwgOTIsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDEsIDYzLCAzOSwgOTIsIDEsIDY4LCAzOSwgOTIsIDEsIDE3MywgMzksIAorICAgIDkyLCAxLCAyMDEsIDIwMSwgMzksIDkyLCAxLCAxODUsIDM5LCA5MiwgMSwgMjE2LCAyMjAsIDM5LCA5MiwgMSwgMjA1LCAKKyAgICAyMzAsIDM5LCA5MiwgMiwgMjUwLCAxNywgOTIsIDIsIDIxMSwgMjI3LCAyNDcsIDUyLCA5MiwgMiwgMjQ3LCA1MywgMjA1LCAKKyAgICAyMDQsIDkyLCAyLCA1MiwgMjQ3LCA1MywgMjA1LCAyMDQsIDkyLCAyLCAyNDcsIDUzLCAxMDgsIDkyLCAyLCAyNDcsIDUzLCAKKyAgICAxNDcsIDkyLCAyLCAyNDcsIDUzLCAyNTAsIDE3LCA5MiwgMiwgMjE3LCAxNjIsIDkyLCAyMzgsIDIyOCwgMjQwLCA3LCA5MiwgCisgICAgMjQ3LCAzMywgOTIsIDIzNywgNTgsIDkyLCAyLCAyMTIsIDE1NywgOTIsIDIzMCwgMTczLCAyMjAsIDM5LCAyMjksIDIwNywgCisgICAgMjI3LCAxNDksIDE3LCAyMDIsIDg0LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxMDUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCisgICAgMTcsIDEwOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ3LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxNDksIDIyOSwgCisgICAgMjA3LCAyMjcsIDE0OSwgMTcsIDE3MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk1LCAyMjksIDIwNywgMjI3LCAxNDksIAorICAgIDE3LCAyMTMsIDExMSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk5LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAyMjIsIAorICAgIDYzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjksIDE0NCwgMjI5LCAKKyAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMzksIDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjIyLCAyMDMsIDIyOSwgMjA3LCAyMjcsIAorICAgIDE0OSwgMSwgMjE1LCAzNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTMsIDkwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAorICAgIDIwMiwgMTE2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMSwgMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEwLCAyMiwgCisgICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMzYsIDMwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwMSwgMjAxLCAyMjksIAorICAgIDIwNywgMjI3LCAxNDksIDEsIDE4NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTgsIDIwOCwgMjI5LCAyMDcsIDIyNywgCisgICAgMTQ5LCAxLCAxOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ0LCAyMTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ5LCAKKyAgICAzMiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTYsIDIyMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxOTgsIDIyOSwgCisgICAgMjA3LCAyMjcsIDE0OSwgMSwgMjI4LCAxMTMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjA0LCAxMTEsIDIyOSwgMjA3LCAKKyAgICAyMjcsIDE0OSwgMSwgMjA5LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTUyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAorICAgIDIwNiwgODYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ3LCA5MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA2MywgMjI5LCAKKyAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMjAsIDczLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDc1LCAyMjksIDIwNywgMjI3LCAxNDksIAorICAgIDEsIDIyMCwgMTgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDIwNywgMjQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDc0LCAKKyAgICAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA2OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgMjQxLCAxNjEsIDIyOSwgMjA3LCAKKyAgICAyMjcsIDE0OSwgMjIsIDc4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKKyAgICAxNDMsIDI0NywgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTQzLCAyNDcsIDY5LCAyMTgsIDg0LCAyMjksIDIwNywgMjI3LCAKKyAgICAxNDksIDIsIDI0NSwgNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMiwgMjEyLCAxNzAsIDIxNiwgMTE5LCAxLCAxNzMsIDIxNiwgCisgICAgMTE5LCAxLCAyMzksIDgsIDIxNiwgMTE5LCAxLCAyMjIsIDIwMywgMjE2LCAxMTksIDEsIDIxMCwgMjIsIDIxNiwgMTE5LCAxLCAKKyAgICAyNDQsIDIxMiwgMjE2LCAxMTksIDEsIDIwMSwgMjAxLCAyMTYsIDExOSwgMSwgMTg1LCAyMTYsIDExOSwgMSwgMjQ5LCAzMiwgCisgICAgMjE2LCAxMTksIDEsIDE5MiwgMjE2LCAxMTksIDEsIDI0NywgOTIsIDIxNiwgMTE5LCAxLCAyMzAsIDE4MSwgMjE2LCAxMTksIAorICAgIDEsIDIyMSwgMTEsIDIxNiwgMTE5LCAxLCAyMTUsIDM2LCAyMTYsIDExOSwgMSwgMjE2LCAyMjAsIDIxNiwgMTE5LCAxLCAKKyAgICAyMjgsIDExMywgMjE2LCAxMTksIDEsIDE5OCwgMjE2LCAxMTksIDEsIDIwNCwgMTExLCAyMTYsIDExOSwgMSwgMTUyLCAyMTYsIAorICAgIDExOSwgMSwgMjI1LCA1NCwgMjE2LCAxMTksIDEsIDIyMiwgMTgyLCAyMTYsIDExOSwgMSwgMjIzLCAyNSwgMjE2LCAxMTksIAorICAgIDEsIDIyMCwgMjM0LCAyMTYsIDExOSwgMSwgNjMsIDIxNiwgMTE5LCAyMiwgMiwgNzUsIDIxNiwgMTE5LCAyMiwgMiwgNjgsIAorICAgIDIxNiwgMTE5LCAyMiwgMiwgNzQsIDIxNiwgMTE5LCAyMiwgMiwgMjUxLCA2NCwgMjE2LCAxMTksIDIyLCAyLCA3OCwgMjE2LCAKKyAgICAxMTksIDIyLCAyLCAyNTAsIDM0LCAyMTYsIDExOSwgMjIsIDIsIDI0MCwgMjM4LCAyMTYsIDExOSwgMjIsIDIsIDI0MSwgCisgICAgMTg5LCAyMTYsIDExOSwgMTA5LCAyLCAyMjIsIDIwNSwgMjE2LCAxMTksIDEwOSwgMiwgMjIzLCAxNjMsIDIxNiwgMTE5LCAKKyAgICAxMDksIDIsIDE0NiwgMjE2LCAxMTksIDEwOSwgMiwgMjM3LCAxNzEsIDIxNiwgMTE5LCAyMDUsIDIwNCwgMjE2LCAxMTksIAorICAgIDIxNCwgMTY4LCA4MiwgMjgsIDEyMywgMjA4LCAyMzYsIDI4LCAxMjMsIDIwOCwgMjM1LCAyOCwgMTIzLCAyMDgsIDIzMywgCisgICAgMjgsIDEyMywgMjA4LCAyMzgsIDI4LCAxMjMsIDIxNiwgNDIsIDI4LCAxMjMsIDIxNiwgMjYsIDI4LCAxMjMsIDIxNiwgMjEsIAorICAgIDI4LCAxMjMsIDIxNiwgMjMsIDI4LCAxMjMsIDIxNiwgMzksIDI4LCAxMjMsIDIxNiwgMzIsIDI4LCAxMjMsIDIxNiwgMjUsIAorICAgIDI4LCAxMjMsIDIxNiwgNDQsIDI4LCAxMjMsIDIxNiwgMjcsIDI4LCAxMjMsIDIxNiwgNDYsIDI4LCAxMjMsIDIxNiwgNDMsIAorICAgIDI4LCAxMjMsIDIyNCwgMTM3LCAyOCwgMTIzLCAyMjQsIDEyOCwgMjgsIDEyMywgMjI0LCAxMzEsIDI4LCAxMjMsIDIxOCwgCisgICAgMTM4LCAyOCwgMTIzLCAyMTgsIDE0OSwgMjgsIDEyMywgMjE4LCAxNTAsIDI4LCAxMjMsIDIxMSwgMTQ4LCAyOCwgMTIzLCAKKyAgICAyMzEsIDk2LCAyOCwgMTIzLCAyMzEsIDEwMywgMjgsIDEyMywgMjExLCAxNTksIDI4LCAxMjMsIDIxMSwgMTQ2LCAyOCwgCisgICAgMTIzLCAyMTgsIDE4OSwgMjgsIDEyMywgMjM2LCAyNDYsIDI4LCAxMjMsIDIxMSwgMTQzLCAxOTAsIDIsIDIxOSwgMTAyLCAKKyAgICAxOTAsIDIsIDI0NiwgMjM1LCAxOTAsIDIsIDIyNywgMjQyLCAxOTAsIDIsIDIwNCwgMjAsIDE5MCwgMSwgNjMsIDE5MCwgMSwgCisgICAgMjM1LCAyMDYsIDIyOSwgMjExLCAxOTAsIDEsIDc1LCAxOTAsIDEsIDIzMSwgODMsIDE5MCwgMSwgNjgsIDE5MCwgMSwgMjE5LCAKKyAgICAxNjksIDI0NiwgMjA1LCAxOTAsIDEsIDIyMiwgMjA0LCAyMjcsIDIwMSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDIsIAorICAgIDIxNiwgMTczLCAxOTAsIDEsIDc0LCAxOTAsIDEsIDI1MSwgNjQsIDE5MCwgMSwgNzgsIDE5MCwgMSwgMTczLCAxOTAsIDEsIAorICAgIDIzMCwgNDQsIDIxNCwgMjI3LCAxOTAsIDEsIDIzMCwgNDQsIDIyMywgMjA1LCAxOTAsIDEsIDIzOSwgOCwgMTkwLCAxLCAKKyAgICAyMzksIDksIDIyMywgMjA1LCAxOTAsIDEsIDIyMiwgMjAzLCAxOTAsIDEsIDI0NywgOTIsIDE5MCwgMSwgMjQ3LCA5MywgCisgICAgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODEsIDE5MCwgMSwgMjIxLCAxMiwgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODIsIAorICAgIDIyNSwgMTQ0LCAxOTAsIDEsIDIyMSwgMTEsIDE5MCwgMSwgMjA3LCAyNDEsIDE5MCwgMSwgMjA3LCAyNDIsIDIyNSwgMTQ0LCAKKyAgICAxOTAsIDEsIDI0NCwgMTIwLCAxOTAsIDEsIDI0NCwgMTIxLCAyMjUsIDE0NCwgMTkwLCAxLCAyMjMsIDExMSwgMjIzLCAyMDUsIAorICAgIDE5MCwgMSwgMjEwLCAyMiwgMTkwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNSwgMTkwLCAxLCAyNDQsIDIxMiwgMTkwLCAxLCAKKyAgICAyNDQsIDIxMywgMjI1LCAxNDQsIDE5MCwgMSwgMjAxLCAyMDEsIDE5MCwgMSwgMTg1LCAxOTAsIDEsIDIxOSwgMTY5LCAyMjMsIAorICAgIDIwNSwgMTkwLCAxLCAyNDksIDMyLCAxOTAsIDEsIDI0OSwgMzMsIDIyMywgMjA1LCAxOTAsIDEsIDE5MiwgMTkwLCAxLCAKKyAgICAxOTgsIDE5MCwgMSwgMjE2LCAyMjAsIDE5MCwgMSwgMjE2LCAyMjEsIDI1MSwgNzQsIDE5MCwgMSwgMjI4LCAxMTMsIDE5MCwgCisgICAgMSwgMjA0LCAxMTEsIDE5MCwgMSwgMjE1LCAzNywgMjIzLCAyMDUsIDE5MCwgMSwgMjE1LCAzNywgMjI1LCAxNDQsIDE5MCwgCisgICAgMSwgMjE1LCAzNiwgMTkwLCAxLCAxNTIsIDE5MCwgMiwgMjQ2LCAyMzYsIDIwOSwgMTU1LCAxOTAsIDIyLCAyLCAyMDksIAorICAgIDIxNCwgMTkwLCAyMiwgMiwgMjA4LCAxNjYsIDE5MCwgMjIsIDIsIDIwMywgMjExLCAxOTAsIDIyLCAyLCAyMDMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDE5MCwgMjIsIDIsIDIxMCwgMjI0LCAxOTAsIDIyLCAyLCAyMTAsIDIyNSwgMjI0LCAyMzksIDE5MCwgMjIsIAorICAgIDIsIDIwOSwgMjM1LCAxOTAsIDIyLCAyLCAyNDMsIDE2MywgMjIzLCAyMDQsIDE5MCwgMjIsIDIsIDIxOCwgMjQ5LCAxOTAsIAorICAgIDEwOSwgMiwgMjI5LCAxNzMsIDE5MCwgMTA5LCAyLCAyMTksIDYsIDE5MCwgMTA5LCAyLCAyNDcsIDc3LCAxOTAsIDIxOSwgCisgICAgMTE1LCAxOTAsIDQ5LCAyMTYsIDkzLCAxOTAsIDUwLCAyMTYsIDkzLCAxOTAsIDIxOSwgMTU4LCAyNTAsIDIyNSwgMTkwLCAKKyAgICAyMTksIDE1OCwgMjI1LCAxNjIsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjI2LCAxOTAsIDIxOSwgMTU4LCAyMDQsIDE0LCAxOTAsIAorICAgIDIxOSwgMTU4LCAyMTksIDExNiwgMTkwLCAyMTksIDE1OCwgMjI3LCAxMDYsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjIwLCAKKyAgICAxOTAsIDIxOSwgMTU4LCAyNTEsIDExNiwgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTcsIDI1MSwgMTE2LCAxOTAsIDIxOSwgCisgICAgMTU4LCAyMTgsIDEwNywgMTkwLCAyMDcsIDE3NCwgMjE5LCAxNTgsIDIxOCwgMTA3LCAxOTAsIDIxOSwgMTExLCAxOTAsIDE3LCAKKyAgICAyMDIsIDg0LCAxOTAsIDE3LCAxMDUsIDE5MCwgMTcsIDEwOCwgMTkwLCAxNywgMTQ3LCAxOTAsIDE3LCAxNDksIDE5MCwgMTcsIAorICAgIDE3MCwgMTkwLCAxNywgMTk1LCAxOTAsIDE3LCAyMTMsIDExMSwgMTkwLCAxNywgMTk5LCAxOTAsIDE3LCAyMjIsIDYzLCAKKyAgICAxOTAsIDIxOSwgMTU4LCAyMDgsIDIwMiwgMjA3LCAxODksIDE5MCwgMjE5LCAxNTgsIDIzMCwgMjExLCA2OSwgMSwgMjEzLCAKKyAgICA2NywgMjM4LCAxMTksIDY5LCAxLCAyMTMsIDY3LCAyNDYsIDE5OSwgNjksIDEsIDIxMywgNjcsIDIzMCwgMTQ5LCA2OSwgMSwgCisgICAgMjEzLCA2NywgMjIxLCAyMjcsIDY5LCAxLCAyMTMsIDY3LCAyNDgsIDk4LCA2OSwgMiwgMjEzLCA2NywgMjE0LCAyMTMsIDY5LCAKKyAgICA2NSwgMSwgMjEzLCA2NywgMjE2LCAxMzYsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAxMSwgNjksIDEsIDQ1LCAyMjgsIAorICAgIDg1LCAyNDAsIDEwOCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzksIDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM4LCAxMTksIAorICAgIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxODEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxNDksIDY5LCAxLCA0NSwgCisgICAgMjI4LCA4NSwgMjQ0LCAxMjAsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAxMDQsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAKKyAgICAyMjcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIwMiwgODQsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDEwNSwgNjksIDQ1LCAyMjgsIAorICAgIDg1LCAxNywgMTA4LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE0OSwgNjksIDQ1LCAKKyAgICAyMjgsIDg1LCAxNywgMTcwLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTUsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIxMywgCisgICAgMTExLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTksIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIyMiwgNjMsIDY5LCAxLCA0NSwgCisgICAgMjI4LCA4NSwgMjI3LCA3NywgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIDIxMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIAorICAgIDEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ5LCAzMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDgsIDk4LCAyNDYsIDE5MiwgMSwgCisgICAgNjMsIDI0NiwgMTkyLCAxLCA3NSwgMjQ2LCAxOTIsIDEsIDY4LCAyNDYsIDE5MiwgMSwgNzQsIDI0NiwgMTkyLCAxLCAyNTEsIAorICAgIDY0LCAyNDYsIDE5MiwgMSwgNzgsIDI0NiwgMTkyLCAxLCAxNzMsIDI0NiwgMTkyLCAxLCAyMjksIDE0NCwgMjQ2LCAxOTIsIAorICAgIDEsIDIzOSwgOCwgMjQ2LCAxOTIsIDEsIDIzOCwgMTE5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMTIsIDI0NiwgMTkyLCAxLCAKKyAgICAyMjIsIDIwMywgMjQ2LCAxOTIsIDEsIDI0NiwgMTk5LCAyNDYsIDE5MiwgMSwgMjQ2LCAxNDQsIDI0NiwgMTkyLCAxLCAyMzAsIAorICAgIDE4MSwgMjQ2LCAxOTIsIDEsIDIzMCwgMTQ5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMDIsIDI0NiwgMTkyLCAxLCAyMjIsIDEwNCwgCisgICAgMjQ2LCAxOTIsIDEsIDIyMiwgMTAzLCAyNDYsIDE5MiwgMSwgMjEwLCAyMiwgMjQ2LCAxOTIsIDEsIDIwOSwgMTA4LCAyNDYsIAorICAgIDE5MiwgMSwgMjQ0LCAyMTIsIDI0NiwgMTkyLCAxLCAyNDQsIDEsIDI0NiwgMTkyLCAxLCAyMjEsIDUzLCAyNDYsIDE5MiwgMSwgCisgICAgMjAxLCAyMDEsIDI0NiwgMTkyLCAxLCAyNDQsIDEyMCwgMjQ2LCAxOTIsIDEsIDE4NSwgMjQ2LCAxOTIsIDEsIDIxOCwgMTIsIAorICAgIDI0NiwgMTkyLCAxLCAyMTgsIDIwOCwgMjQ2LCAxOTIsIDEsIDI0OSwgMzIsIDI0NiwgMTkyLCAxLCAyNDgsIDk4LCAyNDYsIAorICAgIDE5MiwgMSwgMjIzLCAyMzgsIDI0NiwgMTkyLCAxLCAxOTIsIDI0NiwgMTkyLCAxLCAyNDgsIDE5OCwgMjQ2LCAxOTIsIDEsIAorICAgIDE5OCwgMjQ2LCAxOTIsIDEsIDIxNiwgMjIwLCAyNDYsIDE5MiwgMSwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxLCAyMDYsIDg2LCAKKyAgICAyNDYsIDE5MiwgMSwgMjExLCAxNjQsIDI0NiwgMTkyLCAxLCAyMTUsIDM2LCAyNDYsIDE5MiwgMSwgMTUyLCAyNDYsIDE5MiwgCisgICAgMjIsIDIsIDI1MiwgMjUsIDI0NiwgMTkyLCAyMiwgMiwgNzUsIDI0NiwgMTkyLCAyMiwgMiwgMjMxLCA4MywgMjQ2LCAxOTIsIAorICAgIDIyLCAyLCAyNDEsIDE0NSwgMjQ2LCAxOTIsIDIyLCAyLCA2OCwgMjQ2LCAxOTIsIDIyLCAyLCAyMjAsIDczLCAyNDYsIDE5MiwgCisgICAgMjIsIDIsIDc4LCAyNDYsIDE5MiwgMjIsIDIsIDI1MSwgNjQsIDI0NiwgMTkyLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTIsIAorICAgIDIyLCAyLCAyMDcsIDI0LCAyNDYsIDE5MiwgMTA5LCAyLCAxOTgsIDI0NiwgMTkyLCAxMDksIDIsIDIxNiwgMjIwLCAyNDYsIAorICAgIDE5MiwgMTA5LCAyLCAyMjgsIDExMywgMjQ2LCAxOTIsIDEwOSwgMiwgMjA0LCAxMTEsIDI0NiwgMTkyLCAxLCA0NiwgMjMwLCAKKyAgICA1NCwgMjQ2LCAxOTIsIDEsIDQ2LCAyMzksIDc1LCAyNDYsIDE5MiwgMSwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMTA5LCAKKyAgICAyLCA0NiwgMjIyLCAyMDUsIDI0NiwgMTkyLCAxLCA0NiwgMjQ2LCAyMDAsIDI0NiwgMTkyLCAxLCA0NiwgMjEwLCA2OSwgCisgICAgMjQ2LCAxOTIsIDEsIDQ2LCAyMjMsIDE2MywgMjQ2LCAxOTIsIDEsIDQ2LCAyMTksIDE4NCwgMjQ2LCAxOTIsIDEsIDQ2LCAKKyAgICAyMDMsIDEyNCwgMjQ2LCAxOTIsIDEsIDQ2LCAxNDYsIDI0NiwgMTkyLCAxLCA0NiwgMTU5LCAyNDYsIDE5MiwgMSwgNDYsIAorICAgIDIxMSwgMTY3LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjI2LCAxODUsIDI0NiwgMTkyLCAxMDksIDIsIDQ2LCAyMzcsIDE3MSwgCisgICAgMjQ2LCAxOTIsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MiwgMTcsIDEwNSwgMjQ2LCAxOTIsIDE3LCAxMDgsIDI0NiwgMTkyLCAKKyAgICAxNywgMTQ3LCAyNDYsIDE5MiwgMTcsIDE0OSwgMjQ2LCAxOTIsIDE3LCAxNzAsIDI0NiwgMTkyLCAxNywgMTk1LCAyNDYsIAorICAgIDE5MiwgMTcsIDIxMywgMTExLCAyNDYsIDE5MiwgMTcsIDE5OSwgMjQ2LCAxOTIsIDE3LCAyMjIsIDYzLCAyNDYsIDE5MiwgCisgICAgMjE3LCAxNzksIDIxMSwgMjAxLCAyNDYsIDE5MiwgMjE3LCAxNzksIDI0NCwgMTY2LCAyNDYsIDE5MiwgMjE3LCAxNzksIDUyLCAKKyAgICAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyMDgsIDcwLCAyNDQsIDE2NiwgNjksIDEsIDIyOSwgMTM3LCAyMzksIDgsIAorICAgIDY5LCAxLCAyMjksIDEzNywgMjQ3LCA5MiwgNjksIDEsIDIyOSwgMTM3LCAyNDYsIDE5OSwgNjksIDEsIDIyOSwgMTM3LCAKKyAgICAyMzAsIDE4MSwgNjksIDEsIDIyOSwgMTM3LCAyMzAsIDE0OSwgNjksIDEsIDIyOSwgMTM3LCAyMjEsIDExLCA2OSwgMSwgCisgICAgMjI5LCAxMzcsIDIwNywgMjQxLCA2OSwgMSwgMjI5LCAxMzcsIDIwNywgMjI5LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTIwLCAKKyAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTA0LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMSwgNjksIDEsIDIyOSwgMTM3LCAyMDEsIAorICAgIDIwMSwgNjksIDEsIDIyOSwgMTM3LCAyMTUsIDM2LCA2OSwgMSwgMjI5LCAxMzcsIDE1MiwgNjksIDEsIDIyOSwgMTM3LCAKKyAgICAyMzcsIDEyLCA2OSwgMSwgMjI5LCAxMzcsIDI0MCwgMTA4LCA2OSwgNjUsIDEsIDIyOSwgMTM3LCAyMTYsIDEzNiwgNjksIDEsIAorICAgIDIyOSwgMTM3LCAyMDMsIDE4MiwgNjksIDEsIDIyOSwgMTM3LCAyMDIsIDExNiwgNjksIDEsIDIyOSwgMTM3LCAyMTYsIDIyMCwgCisgICAgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMjAsIDk0LCA2OSwgMjI3LCAzNiwgMjI5LCAxMzcsIDIxNywgNzgsIDY5LCAyMjcsIAorICAgIDM2LCAyMjksIDEzNywgMjM2LCAxOTEsIDY5LCAxNiwgMjUxLCA1MSwgMjQwLCAyMTEsIDY5LCAxNiwgMjUxLCA1MSwgMTA1LCAKKyAgICA2OSwgMTYsIDI1MSwgNTEsIDEwOCwgNjksIDEsIDI1MSwgNTEsIDIxNiwgMjIwLCA2OSwgMiwgMjE5LCA5OCwgMjI5LCAyMzcsIAorICAgIDIwOCwgMTYxLCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU5LCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU2LCA2OSwgCisgICAgMSwgMjEyLCAxNzgsIDIxOSwgMTM5LCAyNDYsIDE5OSwgNjksIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjEzLCA5MCwgNDUsIAorICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyOSwgMjYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIAorICAgIDEsIDEyNCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDExNSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAorICAgIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMjQsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMzgsIDM5LCAKKyAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM4LCAzOSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMiwgMTI4LCA0NSwgMjA1LCAKKyAgICAyMjAsIDEsIDEzOCwgMjIyLCAxMjgsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAKKyAgICAxMzgsIDI0NSwgMjU0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ2LCAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDYsIAorICAgIDExNiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxMiwgMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTIsIDEzLCA0NSwgCisgICAgMjA1LCAyMjAsIDEsIDEyNCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjAsIDIzMywgNDUsIDIwNSwgMjIwLCAKKyAgICAxLCAxMjQsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQzLCAxMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKKyAgICAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDksIDQ3LCA0NSwgMjA1LCAKKyAgICAyMjAsIDEsIDEzOCwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIAorICAgIDEzOCwgMjIxLCAxOTEsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDgsIDIzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ4LCAKKyAgICAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgNjksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDY5LCA0NSwgCisgICAgMjA1LCAyMjAsIDEsIDEyNCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDE4MCwgNDUsIDIwNSwgMjIwLCAKKyAgICAxLCAxMjQsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM5LCAxODYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKKyAgICAyMjQsIDgyLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwMiwgMjQ3LCAKKyAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjAyLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTUsIDIyNywgNDUsIDIwNSwgCisgICAgMjIwLCAxLCAxMzgsIDIxNSwgMjI3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjI3LCA0OSwgNDUsIDIwNSwgMjIwLCAxLCAKKyAgICAxMzgsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDUsIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwNSwgCisgICAgMTg5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM2LCAxMzYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzYsIDEzNiwgNDUsIAorICAgIDIwNSwgMjIwLCAxLCAxMjQsIDc4LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIAorICAgIDIzMCwgMCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUyLCAyNSwgNDUsIDIwNSwgMjIwLCAyMiwgNzUsIDQ1LCAyMDUsIDIyMCwgCisgICAgMjIsIDIwNywgMjQsIDQ1LCAyMDUsIDIyMCwgMjIsIDY4LCA0NSwgMjA1LCAyMjAsIDIyLCA3NCwgNDUsIDIwNSwgMjIwLCAKKyAgICAyMiwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIDIyOSwgMTE4LCA0NSwgMjA1LCAyMjAsIDIyLCAyMzUsIDE3MSwgNDUsIAorICAgIDIwNSwgMjIwLCAyMiwgMjA3LCAyMywgNDUsIDIwNSwgMjIwLCAyMiwgMjA3LCAzOSwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAKKyAgICAzMiwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCA4LCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIDIzMSwgNDUsIDIwNSwgMjIwLCAKKyAgICAyMiwgMjUwLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIDQ1LCAyMDUsIDIyMCwgMTQzLCAKKyAgICAyMjUsIDE0MSwgMjIxLCA1MiwgNDUsIDIwNSwgMjIwLCAxNDMsIDIyNSwgMTQxLCAyMDksIDQ3LCA0NSwgMjA1LCAyMjAsIAorICAgIDE0MywgMjI1LCAxNDEsIDIxMSwgMjUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMjksIDksIDQ1LCAyMDUsIDIyMCwgMTYsIDIyMSwgCisgICAgNTIsIDQ1LCAyMDUsIDIyMCwgMTYsIDIxNCwgMjUzLCA0NSwgMjA1LCAyMjAsIDE2LCAyMzYsIDEzNywgMjM2LCAxMzEsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMTYsIDIyOSwgMTksIDIyOSwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzQsIDIyNSwgMiwgMjI1LCA2MSwgCisgICAgMSwgNzgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ2LCAxOTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAxMSwgMjI1LCAyLCAKKyAgICAyMjUsIDYxLCAxLCAyMDcsIDI0MSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDcsIDIyOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKKyAgICAyNDQsIDEyMCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDQsIDEwNCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjEsIDIyNywgCisgICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTMsIDkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxMSwgMTY0LCAyMjUsIDIsIDIyNSwgCisgICAgNjEsIDIyLCAyLCAyMzEsIDgzLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDE3OCwgMjI1LCAyLCAyMjUsIDYxLCAKKyAgICAyMiwgMiwgMjUxLCAyNDUsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI1MCwgMzQsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIAorICAgIDI1MSwgMjM4LCAyMjUsIDIsIDIyNSwgNjEsIDI0NiwgMTU5LCAyMjUsIDIsIDIyNSwgNjEsIDI1MSwgNzAsIDIyOSwgMTA3LCAKKyAgICAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMjA5LCAyMjUsIDIsIDIyNSwgNjEsIDQsIDIxNiwgOTgsIDgyLCAyMjUsIDIsIDIyNSwgCisgICAgNjEsIDIwMywgMjM4LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA1LCAxOTksIDIyNSwgMiwgMjI1LCAKKyAgICA2MSwgMjA1LCAyMDQsIDMzLCA0LCAyMDcsIDIyMiwgMzMsIDQsIDIwNywgMjI1LCAzMywgNCwgMjA3LCAyMjgsIDMzLCA0LCAKKyAgICAyMDcsIDIyNiwgMzMsIDQsIDIwNywgMjI3LCAzMywgNCwgMjA3LCAyMjQsIDMzLCA0LCAyNDQsIDk4LCAzMywgNCwgMjQ0LCAKKyAgICAxMDAsIDMzLCA0LCAyNDQsIDEwMywgMzMsIDQsIDI0NCwgMTAxLCAzMywgNCwgMjQ0LCAxMDIsIDMzLCA0LCAyNDQsIDk5LCAKKyAgICAzMywgNCwgMjQxLCAyNDIsIDMzLCA0LCAyNDEsIDI0NiwgMzMsIDQsIDI0MSwgMjU0LCAzMywgNCwgMjQxLCAyNTEsIDMzLCAKKyAgICA0LCAyNDEsIDI1MiwgMzMsIDQsIDI0MSwgMjQzLCAzMywgNCwgMjQ2LCAyNTIsIDMzLCA0LCAyNDYsIDI0NiwgMzMsIDQsIAorICAgIDI0NiwgMjQ4LCAzMywgNCwgMjQ2LCAyNTEsIDMzLCA0LCAyNDYsIDI0OSwgMzMsIDQsIDI0NiwgMjUwLCAzMywgNCwgMjQ2LCAKKyAgICAyNDcsIDMzLCA0LCAyNDgsIDE5OCwgMzMsIDQsIDI0OCwgMTc3LCAzMywgNCwgMjQ4LCAxODksIDMzLCA0LCAyNDgsIDE5NywgCisgICAgMzMsIDQsIDI0OCwgMTkyLCAzMywgNCwgMjQ4LCAxOTMsIDMzLCA0LCAyNDgsIDE4MSwgOCwgNSwgMSwgMjQ4LCAyMjUsIAorICAgIDI1MSwgMiwgOCwgNSwgMSwgMzQsIDIxNiwgNzEsIDgsIDUsIDEsIDI0OCwgMzksIDc0LCA4LCA1LCAxLCAyNDgsIDIyNSwgCisgICAgNzQsIDgsIDUsIDEsIDE4OCwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIyNywgMTg3LCAyNDAsIDE3NCwgOCwgNSwgMSwgMTMyLCAKKyAgICAyMzksIDc2LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCA4LCAKKyAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIxNSwgCisgICAgMjUyLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDUsIDEyNiwgOCwgCisgICAgNSwgMSwgMjQxLCA3OSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDI0OCwgMzksIDc4LCA4LCA1LCAxLCAyNDgsIDM5LCAxNTgsIAorICAgIDMsIDk1LCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjM5LCAyMjAsIDczLCA4LCA1LCAxLCAKKyAgICAyMDcsIDE3NCwgMjIwLCA3NCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIDc0LCAzLCAyMzYsIDEwNiwgOTUsIDgsIAorICAgIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE1OCwgMjIwLCA1LCAzLCA5NSwgOCwgNSwgCisgICAgMSwgMjExLCA2NiwgMTQ2LCA4LCAxLCA1LCA2LCAyMTcsIDEsIDMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjE3LCAxLCAKKyAgICAyMDQsIDMsIDIzNywgMTAyLCA4LCA1LCAxLCA1MiwgMTQ2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NSwgMTI2LCA4LCA1LCAKKyAgICAxLCA1MiwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMTMyLCAxNDYsIDgsIDUsIDEsIDEzMiwgMjE3LCAxLCAzLCAKKyAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ4LCAyMTYsIDI0MSwgNywgOCwgNSwgMSwgMTA2LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgCisgICAgMjEwLCA4LCA1LCAxLCAxMDYsIDI0OCwgMjMxLCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyMDcsIDE3LCAKKyAgICA4LCA1LCAxLCAyMDcsIDE3NCwgMjA3LCAxNywgOCwgNSwgMSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyNDYsIDE0MiwgCisgICAgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNTAsIDIxNSwgMjUyLCA4LCA1LCAxLCAyNDYsIDE0MywgMywgMTI0LCA0OSwgCisgICAgMjEzLCAxMjUsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIAorICAgIDE2MywgNDksIDIyNywgMjEwLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTYzLCA0OSwgMjI3LCAyMTEsIDI1LCAxMjQsIDUwLCAKKyAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAzLCAyMTMsIDEyNSwgOCwgNSwgMSwgCisgICAgMjAzLCAxMjUsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAyMTAsIDY1LCAyNDcsIDIxNSwgMywgMjMwLCAyMzksIDI0NywgMjE0LCAKKyAgICA2NSwgMSwgNSwgMjM3LCAzMSwgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgNjUsIDEsIAorICAgIDUsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA2NSwgMSwgNSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMTUsIAorICAgIDExLCAyMDMsIDY2LCA4LCA1LCAxLCAyMzAsIDIyOCwgNzQsIDgsIDUsIDEsIDE3MSwgMjIwLCA3MywgOCwgNSwgMSwgMjA2LCAKKyAgICAyMjgsIDgsIDUsIDEsIDIzMCwgMjM5LCAyNTEsIDIsIDMwLCAxLCA1LCA2LCAyMjAsIDM2LCA5MCwgNSwgMSwgNjMsIDkwLCAKKyAgICA1LCAxLCA3NCwgOTAsIDUsIDEsIDc1LCA5MCwgNSwgMSwgNzgsIDkwLCA1LCAxLCA2OCwgOTAsIDUsIDEsIDIwNiwgMTY0LCAKKyAgICA5MCwgNSwgMSwgMjM5LCA4LCA5MCwgNSwgMSwgMTczLCA5MCwgNSwgMSwgMjM4LCAxOTAsIDkwLCA1LCAxLCAyMzgsIDgxLCAKKyAgICA5MCwgNSwgMSwgMjM4LCAzOSwgOTAsIDUsIDEsIDIzNywgMjMwLCA5MCwgNSwgMSwgMjM3LCAxOTIsIDkwLCA1LCAxLCAxNTIsIAorICAgIDkwLCA1LCAxLCAyMzcsIDY3LCA5MCwgNSwgMSwgMjM3LCAzLCA5MCwgNSwgMSwgMjM2LCAxMzYsIDkwLCA1LCAxLCAyMzYsIAorICAgIDI2LCA5MCwgNSwgMSwgMjM1LCAyNTUsIDkwLCA1LCAxLCAyMjgsIDExMywgOTAsIDUsIDEsIDIyNywgMjM0LCA5MCwgNSwgMSwgCisgICAgMjI3LCAxNDgsIDkwLCA1LCAxLCAyMjcsIDQ5LCA5MCwgNSwgMSwgMjI2LCAyMzksIDkwLCA1LCAxLCAyMjYsIDIwOCwgOTAsIAorICAgIDUsIDEsIDE5MiwgOTAsIDUsIDEsIDIyNSwgMjAsIDkwLCA1LCAxLCAyMjQsIDE1NSwgOTAsIDUsIDEsIDIyNCwgODIsIDkwLCAKKyAgICA1LCAxLCAyMjMsIDI0NiwgOTAsIDUsIDEsIDIwMSwgMjAxLCA5MCwgNSwgMSwgMjM2LCAxNjAsIDkwLCA1LCAxLCAyMjMsIAorICAgIDkzLCA5MCwgNSwgMSwgMjIyLCAyNDAsIDkwLCA1LCAxLCAyMjIsIDEwMCwgOTAsIDUsIDEsIDIyMSwgMTkxLCA5MCwgNSwgMSwgCisgICAgMjIxLCA4NCwgOTAsIDUsIDEsIDIyMSwgMjIsIDkwLCA1LCAxLCAyMTcsIDY0LCA5MCwgNSwgMSwgMjE3LCA1MCwgOTAsIDUsIAorICAgIDEsIDIxNywgNDMsIDkwLCA1LCAxLCAyMTcsIDM0LCA5MCwgNSwgMSwgMjE3LCAyMywgOTAsIDUsIDEsIDIxNywgMjEsIDkwLCAKKyAgICA1LCAxLCAyMTUsIDM2LCA5MCwgNSwgMSwgMTk0LCA5MCwgNSwgMSwgMjE0LCAxNzcsIDkwLCA1LCAxLCAyMTIsIDE2MiwgOTAsIAorICAgIDUsIDEsIDIxMiwgMTMsIDkwLCA1LCAxLCAyMTEsIDEwLCA5MCwgNSwgMSwgMjEwLCAxNzcsIDkwLCA1LCAxLCAyNDQsIDIxMiwgCisgICAgOTAsIDUsIDEsIDIxMCwgMjIsIDkwLCA1LCAxLCAyNDQsIDc1LCA5MCwgNSwgMSwgMjA5LCAxODcsIDkwLCA1LCAxLCAyNDMsIAorICAgIDIzMywgOTAsIDUsIDEsIDIwOSwgMiwgOTAsIDUsIDEsIDI0MywgMTEzLCA5MCwgNSwgMSwgMjQyLCA0MiwgOTAsIDUsIDEsIAorICAgIDI0MiwgMTMsIDkwLCA1LCAxLCAyNDMsIDEyNCwgOTAsIDUsIDEsIDIwOCwgMTkwLCA5MCwgNSwgMSwgMjA4LCAxODksIDkwLCAKKyAgICA1LCAxLCAyMDgsIDE3OCwgOTAsIDUsIDEsIDIwOCwgMTc3LCA5MCwgNSwgMSwgMjA4LCAxNzYsIDkwLCA1LCAxLCAyMDgsIAorICAgIDE3NSwgOTAsIDUsIDEsIDIwOCwgMjAsIDkwLCA1LCAxLCAyMDgsIDE0LCA5MCwgNSwgMSwgMjA3LCAyNTUsIDkwLCA1LCAxLCAKKyAgICAyMDcsIDI1MywgOTAsIDUsIDEsIDIwNywgMjQ5LCA5MCwgNSwgMSwgMjA3LCAyNDgsIDkwLCA1LCAxLCAyMDQsIDExMSwgOTAsIAorICAgIDUsIDEsIDIwNCwgNjIsIDkwLCA1LCAxLCAyMDQsIDMwLCA5MCwgNSwgMSwgMjA0LCAwLCA5MCwgNSwgMSwgMjAzLCAyMTcsIAorICAgIDkwLCA1LCAxLCAyMDMsIDIwNCwgOTAsIDUsIDEsIDE5OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE2LCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDIxNCwgMjUzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOCwgODYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjI0LCA5MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAxODUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAxLCAyMDEsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMSwgMjQ2LCAxMzQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA4LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjI5LCAxMTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIyLCAxMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA5LCAzOSwgMjI1LCAKKyAgICAyLCAyMjUsIDYxLCAxLCAyMDQsIDEwNSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDMsIDc2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDIzNiwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA2LCAyNTUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzUsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMSwgMjE4LCAyMDIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjUwLCA0NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKKyAgICAyMzgsIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxNiwgMTk3LCAyMjUsIAorICAgIDIsIDIyNSwgNjEsIDEsIDI0OSwgMzIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjMwLCAxMzMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjQzLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjM4LCA4OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDMsIDIzNSwgMjI1LCAKKyAgICAyLCAyMjUsIDYxLCAxLCAyNDgsIDk2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOSwgMTcsIDIyNywgMTksIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMSwgMjI4LCA4NywgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjQsIDk0LCAyMjcsIDE5LCAyMjUsIAorICAgIDIsIDIyNSwgNjEsIDEsIDIxOSwgMTY5LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMywgMTExLCAyMjcsIDE5LCAKKyAgICAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjMwLCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE5LCAyMjcsIAorICAgIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzNSwgMjA2LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMjAsIAorICAgIDMwLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMzEsIDQ3LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDIzMCwgCisgICAgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjAzLCA0MSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjExLCAyNDIsIDIyNSwgCisgICAgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNiwgMjUyLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNDYsIDE1NywgMjI1LCAyLCAKKyAgICAyMjUsIDYxLCAyMiwgMiwgMjIxLCAzNywgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OCwgMjI1LCAyLCAyMjUsIDYxLCAyMjYsIAorICAgIDIyMywgMjMwLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMjUwLCAxNDksIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAKKyAgICAyMDIsIDg0LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDEwOCwgMjI1LCAyLCAyMjUsIAorICAgIDYxLCAxNywgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNDksIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDE3MCwgMjI1LCAyLCAKKyAgICAyMjUsIDYxLCAxNywgMTk1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMTMsIDExMSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCisgICAgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMjIsIDYzLCAyOCwgMTc2LCAyMjAsIDE3NCwgMjgsIDE3NiwgMjIwLCAxNzksIAorICAgIDI4LCAxNzYsIDIwMiwgMjQ2LCAyOCwgMTc2LCAyMDIsIDI0NSwgMjgsIDE3NiwgMjAyLCAyNDQsIDI4LCAxNzYsIDIwNywgCisgICAgODksIDI4LCAxNzYsIDIwNywgOTMsIDI4LCAxNzYsIDIwMiwgMjExLCAyOCwgMTc2LCAyMDIsIDIwNywgMjgsIDE3NiwgMjQwLCAKKyAgICAyMzcsIDI4LCAxNzYsIDI0MCwgMjM1LCAyOCwgMTc2LCAyNDAsIDIzNiwgMjgsIDE3NiwgMjQwLCAyMzMsIDI4LCAxNzYsIAorICAgIDIzNSwgMTk2LCAyOCwgMTc2LCAyMzUsIDE5NSwgMjgsIDE3NiwgMjM1LCAxOTMsIDI4LCAxNzYsIDIzNSwgMTk0LCAyOCwgCisgICAgMTc2LCAyMzUsIDE5OSwgMjgsIDE3NiwgMjM1LCAxOTIsIDI4LCAxNzYsIDIzNSwgMTkxLCAyOCwgMTc2LCAyMzUsIDIwMSwgCisgICAgMjgsIDE3NiwgMjUwLCAxMzYsIDI4LCAxNzYsIDI1MCwgMTM1LCAyOCwgMTA3LCAyMjIsIDg2LCAyOCwgMTA3LCAyMjIsIDkyLCAKKyAgICAyOCwgMTA3LCAyMTEsIDE0NSwgMjgsIDEwNywgMjExLCAxNDQsIDI4LCAxMDcsIDIwOCwgMjM1LCAyOCwgMTA3LCAyMDgsIAorICAgIDIzMywgMjgsIDEwNywgMjA4LCAyMzIsIDI4LCAxMDcsIDIwOCwgMjM4LCAyOCwgMTA3LCAyMDgsIDIzOSwgMjgsIDEwNywgCisgICAgMjA4LCAyMzEsIDI4LCAxMDcsIDIxNiwgMjYsIDI4LCAxMDcsIDIxNiwgNDEsIDI4LCAxMDcsIDIxMSwgMTUxLCAyOCwgMTA3LCAKKyAgICAyMTYsIDM4LCAyOCwgMTA3LCAyMTYsIDI4LCAyOCwgMTA3LCAyMTYsIDMwLCAyOCwgMTA3LCAyMTYsIDE3LCAyOCwgMTA3LCAKKyAgICAyMTYsIDE4LCAyOCwgMTA3LCAyMjksIDI0MywgMjgsIDEwNywgMjI0LCAxMzYsIDI4LCAxMDcsIDIyNCwgMTMwLCAyOCwgCisgICAgMTA3LCAyMTEsIDE1NSwgMjgsIDEwNywgMjI0LCAxMzMsIDI4LCAxMDcsIDIyNCwgMTM5LCAyOCwgMTA3LCAyMTgsIDEzNCwgCisgICAgMjgsIDEwNywgMjE4LCAxNDMsIDI4LCAxMDcsIDIxOCwgMTQ3LCAyOCwgMTA3LCAyMTEsIDE1MywgMjgsIDEwNywgMjE4LCAKKyAgICAxMzcsIDI4LCAxMDcsIDIxOCwgMTUxLCAyOCwgMTA3LCAyMTgsIDE1MiwgMjgsIDEwNywgMjEyLCAxMDMsIDI4LCAxMDcsIAorICAgIDIxMiwgMTA2LCAyOCwgMTA3LCAyMTEsIDE0OSwgMjgsIDEwNywgMjExLCAxNDcsIDI4LCAxMDcsIDIxMiwgMTAxLCAyOCwgCisgICAgMTA3LCAyMTIsIDEwOSwgMjgsIDEwNywgMjEyLCAxMTAsIDI4LCAxMDcsIDIxMiwgOTUsIDI4LCAxMDcsIDIxMiwgMTA4LCAKKyAgICAyOCwgMTA3LCAyMTksIDEwNSwgMjgsIDEwNywgMjE5LCAxMDYsIDI4LCAxMDcsIDIwMywgMjcsIDI4LCAxMDcsIDIwMywgMjgsIAorICAgIDI4LCAxMDcsIDI0NiwgNzIsIDI4LCAxMDcsIDI0NiwgNzEsIDI4LCAxMDcsIDIxMSwgMTYwLCAyOCwgMTA3LCAyMTgsIDE4NywgCisgICAgMjgsIDEwNywgMjE4LCAxODYsIDEyLCAxNSwgMjMzLCA3NCwgMTIsIDE1LCAyMzMsIDczLCAxMiwgMTUsIDIzMywgNzIsIDEyLCAKKyAgICAxNSwgMjMzLCA3MSwgMTIsIDE1LCAyMzMsIDcwLCAxMiwgMTUsIDIzMywgNjksIDEyLCAxNSwgMjMzLCA2OCwgMTIsIDE1LCAKKyAgICAyMzMsIDY3LCAxMiwgMTUsIDIzMywgNjYsIDEyLCAxNSwgMjMzLCA2NSwgMTIsIDE1LCAyMzMsIDY0LCAxMiwgMTUsIDIzMywgCisgICAgNjMsIDEyLCAxNSwgMjMzLCA2MiwgMTIsIDE1LCAyMzMsIDYxLCAxMiwgMTUsIDIzMywgNjAsIDEyLCAxNSwgMjMzLCA1OSwgCisgICAgMTIsIDE1LCAyMzMsIDU4LCAxMiwgMTUsIDIzMywgNTcsIDEyLCAxNSwgMjMzLCA1NiwgMTIsIDE1LCAyMzMsIDU1LCAxMiwgCisgICAgMTUsIDIzMywgNTQsIDEyLCAxNSwgMjMzLCA1MywgMTIsIDE1LCAyMzMsIDUyLCAxMiwgMTUsIDIzMywgNTEsIDEyLCAxNSwgCisgICAgMjMzLCA1MCwgMTIsIDE1LCAyMzMsIDQ5LCAxMiwgMTUsIDIzMywgNDgsIDEyLCAxNSwgMjMzLCA0NywgMTIsIDE1LCAyMzMsIAorICAgIDQ2LCAxMiwgMTUsIDIzMywgNDUsIDEyLCAxNSwgMjMzLCA0NCwgMTIsIDE1LCAyMzMsIDQzLCAxMiwgMTUsIDIzMywgNDIsIAorICAgIDEyLCAxNSwgMjMzLCA0MSwgMTIsIDE1LCAyMzMsIDQwLCAxMiwgMTUsIDIzMywgMzksIDEyLCAxNSwgMjMzLCAzOCwgMTIsIAorICAgIDE1LCAyMzMsIDM3LCAxMiwgMTUsIDIzMywgMzYsIDEyLCAxNSwgMjMzLCAzNSwgMTIsIDE1LCAyMzMsIDM0LCAxMiwgMTUsIAorICAgIDIzMywgMzMsIDEyLCAxNSwgMjMzLCAzMiwgMTIsIDE1LCAyMzMsIDMxLCAxMiwgMTUsIDIzMywgMzAsIDEyLCAxNSwgMjMzLCAKKyAgICAyOSwgMTIsIDE1LCAyMzMsIDI4LCAxMiwgMTUsIDIzMywgMjcsIDEyLCAxNSwgMjMzLCAyNiwgMTIsIDE1LCAyMzMsIDI1LCAKKyAgICAxMiwgMTUsIDIzMywgMjQsIDEyLCAxNSwgMjMzLCAyMywgMTIsIDE1LCAyMzMsIDIyLCAxMiwgMTUsIDIzMywgMjEsIDEyLCAKKyAgICAxNSwgMjMzLCAyMCwgMTIsIDE1LCAyMzMsIDE5LCAxMiwgMTUsIDIzMywgMTgsIDEyLCAxNSwgMjMzLCAxNywgMTIsIDE1LCAKKyAgICAyMzMsIDE2LCAxMiwgMTUsIDIzMywgMTUsIDEyLCAxNSwgMjMzLCAxNCwgMTIsIDE1LCAyMzMsIDEzLCAxMiwgMTUsIDIzMywgCisgICAgMTIsIDEyLCAxNSwgMjMzLCAxMSwgMTIsIDE1LCAyMzMsIDEwLCAxMiwgMTUsIDIzMywgOSwgMTIsIDE1LCAyMzMsIDgsIDEyLCAKKyAgICAxNSwgMjMzLCA3LCAxMiwgMTUsIDIzMywgNiwgMTIsIDE1LCAyMzMsIDUsIDEyLCAxNSwgMjMzLCA0LCAxMiwgMTUsIDIzMywgCisgICAgMywgMTIsIDE1LCAyMzMsIDIsIDEyLCAxNSwgMjMzLCAxLCAxMiwgMTUsIDIzMywgMCwgMTIsIDE1LCAyMzIsIDI1NSwgMTIsIAorICAgIDE1LCAyMzIsIDI1NCwgMTIsIDE1LCAyMzIsIDI1MywgMTIsIDE1LCAyMzIsIDI1MiwgMTIsIDE1LCAyMzIsIDI1MSwgMTIsIAorICAgIDE1LCAyMzIsIDI1MCwgMTIsIDE1LCAyMzIsIDI0OSwgMTIsIDE1LCAyMzIsIDI0OCwgMTIsIDE1LCAyMzIsIDI0NywgMTIsIAorICAgIDE1LCAyMzIsIDI0NiwgMTIsIDE1LCAyMzIsIDI0NSwgMTIsIDE1LCAyMzIsIDI0NCwgMTIsIDE1LCAyMzIsIDI0MywgMTIsIAorICAgIDE1LCAyMzIsIDI0MiwgMTIsIDE1LCAyMzIsIDI0MSwgMTIsIDE1LCAyMzIsIDI0MCwgMTIsIDE1LCAyMzIsIDIzOSwgMTIsIAorICAgIDE1LCAyMzIsIDIzOCwgMTIsIDE1LCAyMzIsIDIzNywgMTIsIDE1LCAyMzIsIDIzNiwgMTIsIDE1LCAyMzIsIDIzNSwgMTIsIAorICAgIDE1LCAyMzIsIDIzNCwgMTIsIDE1LCAyMzIsIDIzMywgMTIsIDE1LCAyMzIsIDIzMiwgMTIsIDE1LCAyMzIsIDIzMSwgMTIsIAorICAgIDE1LCAyMzIsIDIzMCwgMTIsIDE1LCAyMzIsIDIyOSwgMTIsIDE1LCAyMzIsIDIyOCwgMTIsIDE1LCAyMzIsIDIyNywgMTIsIAorICAgIDE1LCAyMzIsIDIyNiwgMTIsIDE1LCAyMzIsIDIyNSwgMTIsIDE1LCAyMzIsIDIyNCwgMTIsIDE1LCAyMzIsIDIyMywgMTIsIAorICAgIDE1LCAyMzIsIDIyMiwgMTIsIDE1LCAyMzIsIDIyMSwgMTIsIDE1LCAyMzIsIDIyMCwgMTIsIDE1LCAyMzIsIDIxOSwgMTIsIAorICAgIDE1LCAyMzIsIDIxOCwgMTIsIDE1LCAyMzIsIDIxNywgMTIsIDE1LCAyMzIsIDIxNiwgMTIsIDE1LCAyMzIsIDIxNSwgMTIsIAorICAgIDE1LCAyMzIsIDIxNCwgMTIsIDE1LCAyMzIsIDIxMywgMTIsIDE1LCAyMzIsIDIxMiwgMTIsIDE1LCAyMzIsIDIxMSwgMTIsIAorICAgIDE1LCAyMzIsIDIxMCwgMTIsIDE1LCAyMzIsIDIwOSwgMTIsIDE1LCAyMzIsIDIwOCwgMTIsIDE1LCAyMzIsIDIwNywgMTIsIAorICAgIDE1LCAyMzIsIDIwNiwgMTIsIDE1LCAyMzIsIDIwNSwgMTIsIDE1LCAyMzIsIDIwNCwgMTIsIDE1LCAyMzIsIDIwMywgMTIsIAorICAgIDE1LCAyMzIsIDIwMiwgMTIsIDE1LCAyMzIsIDIwMSwgMTIsIDE1LCAyMzIsIDIwMCwgMTIsIDE1LCAyMzIsIDE5OSwgMTIsIAorICAgIDE1LCAyMzIsIDE5OCwgMTIsIDE1LCAyMzIsIDE5NywgMTIsIDE1LCAyMzIsIDE5NiwgMTIsIDE1LCAyMzIsIDE5NSwgMTIsIAorICAgIDE1LCAyMzIsIDE5NCwgMTIsIDE1LCAyMzIsIDE5MywgMTIsIDE1LCAyMzIsIDE5MiwgMTIsIDE1LCAyMzIsIDE5MSwgMTIsIAorICAgIDE1LCAyMzIsIDE5MCwgMTIsIDE1LCAyMzIsIDE4OSwgMTIsIDE1LCAyMzIsIDE4OCwgMTIsIDE1LCAyMzIsIDE4NywgMTIsIAorICAgIDE1LCAyMzIsIDE4NiwgMTIsIDE1LCAyMzIsIDE4NSwgMTIsIDE1LCAyMzIsIDE4NCwgMTIsIDE1LCAyMzIsIDE4MywgMTIsIAorICAgIDE1LCAyMzIsIDE4MiwgMTIsIDE1LCAyMzIsIDE4MSwgMTIsIDE1LCAyMzIsIDE4MCwgMTIsIDE1LCAyMzIsIDE3OSwgMTIsIAorICAgIDE1LCAyMzIsIDE3OCwgMTIsIDE1LCAyMzIsIDE3NywgMTIsIDE1LCAyMzIsIDE3NiwgMTIsIDE1LCAyMzIsIDE3NSwgMTIsIAorICAgIDE1LCAyMzIsIDE3NCwgMTIsIDE1LCAyMzIsIDE3MywgMTIsIDE1LCAyMzIsIDE3MiwgMTIsIDE1LCAyMzIsIDE3MSwgMTIsIAorICAgIDE1LCAyMzIsIDE3MCwgMTIsIDE1LCAyMzIsIDE2OSwgMTIsIDE1LCAyMzIsIDE2OCwgMTIsIDE1LCAyMzIsIDE2NywgMTIsIAorICAgIDE1LCAyMzIsIDE2NiwgMTIsIDE1LCAyMzIsIDE2NSwgMTIsIDE1LCAyMzIsIDE2NCwgMTIsIDE1LCAyMzIsIDE2MywgMTIsIAorICAgIDE1LCAyMzIsIDE2MiwgMTIsIDE1LCAyMzIsIDE2MSwgMTIsIDE1LCAyMzIsIDE2MCwgMTIsIDE1LCAyMzIsIDE1OSwgMTIsIAorICAgIDE1LCAyMzIsIDE1OCwgMTIsIDE1LCAyMzIsIDE1NywgMTIsIDE1LCAyMzIsIDE1NiwgMTIsIDE1LCAyMzIsIDE1NSwgMTIsIAorICAgIDE1LCAyMzIsIDE1NCwgMTIsIDE1LCAyMzIsIDE1MywgMTIsIDE1LCAyMzIsIDE1MiwgMTIsIDE1LCAyMzIsIDE1MSwgMTIsIAorICAgIDE1LCAyMzIsIDE1MCwgMTIsIDE1LCAyMzIsIDE0OSwgMTIsIDE1LCAyMzIsIDE0OCwgMTIsIDE1LCAyMzIsIDE0NywgMTIsIAorICAgIDE1LCAyMzIsIDE0NiwgMTIsIDE1LCAyMzIsIDE0NSwgMTIsIDE1LCAyMzIsIDE0NCwgMTIsIDE1LCAyMzIsIDE0MywgMTIsIAorICAgIDE1LCAyMzIsIDE0MiwgMTIsIDE1LCAyMzIsIDE0MSwgMTIsIDE1LCAyMzIsIDE0MCwgMTIsIDE1LCAyMzIsIDEzOSwgMTIsIAorICAgIDE1LCAyMzIsIDEzOCwgMTIsIDE1LCAyMzIsIDEzNywgMTIsIDE1LCAyMzIsIDEzNiwgMTIsIDE1LCAyMzIsIDEzNSwgMTIsIAorICAgIDE1LCAyMzIsIDEzNCwgMTIsIDE1LCAyMzIsIDEzMywgMTIsIDE1LCAyMzIsIDEzMiwgMTIsIDE1LCAyMzIsIDEzMSwgMTIsIAorICAgIDE1LCAyMzIsIDEzMCwgMTIsIDE1LCAyMzIsIDEyOSwgMTIsIDE1LCAyMzIsIDEyOCwgMTIsIDE1LCAyMzIsIDEyNywgMTIsIAorICAgIDE1LCAyMzIsIDEyNiwgMTIsIDE1LCAyMzIsIDEyNSwgMTIsIDE1LCAyMzIsIDEyNCwgMTIsIDE1LCAyMzIsIDEyMywgMTIsIAorICAgIDE1LCAyMzIsIDEyMiwgMTIsIDE1LCAyMzIsIDEyMSwgMTIsIDE1LCAyMzIsIDEyMCwgMTIsIDE1LCAyMzIsIDExOSwgMTIsIAorICAgIDE1LCAyMzIsIDExOCwgMTIsIDE1LCAyMzIsIDExNywgMTIsIDE1LCAyMzIsIDExNiwgMTIsIDE1LCAyMzIsIDExNSwgMTIsIAorICAgIDE1LCAyMzIsIDExNCwgMTIsIDE1LCAyMzIsIDExMywgMTIsIDE1LCAyMzIsIDExMiwgMTIsIDE1LCAyMzIsIDExMSwgMTIsIAorICAgIDE1LCAyMzIsIDExMCwgMTIsIDE1LCAyMzIsIDEwOSwgMTIsIDE1LCAyMzIsIDEwOCwgMTIsIDE1LCAyMzIsIDEwNywgMTIsIAorICAgIDE1LCAyMzIsIDEwNiwgMTIsIDE1LCAyMzIsIDEwNSwgMTIsIDE1LCAyMzIsIDEwNCwgMTIsIDE1LCAyMzIsIDEwMywgMTIsIAorICAgIDE1LCAyMzIsIDEwMiwgMTIsIDE1LCAyMzIsIDEwMSwgMTIsIDE1LCAyMzIsIDEwMCwgMTIsIDE1LCAyMzIsIDk5LCAxMiwgCisgICAgMTUsIDIzMiwgOTgsIDEyLCAxNSwgMjMyLCA5NywgMTIsIDE1LCAyMzIsIDk2LCAxMiwgMTUsIDIzMiwgOTUsIDEyLCAxNSwgCisgICAgMjMyLCA5NCwgMTIsIDE1LCAyMzIsIDkzLCAxMiwgMTUsIDIzMiwgOTIsIDEyLCAxNSwgMjMyLCA5MSwgMTIsIDE1LCAyMzIsIAorICAgIDkwLCAxMiwgMTUsIDIzMiwgODksIDEyLCAxNSwgMjMyLCA4OCwgMTIsIDE1LCAyMzIsIDg3LCAxMiwgMTUsIDIzMiwgODYsIAorICAgIDEyLCAxNSwgMjMyLCA4NSwgMTIsIDE1LCAyMzIsIDg0LCAxMiwgMTUsIDIzMiwgODMsIDEyLCAxNSwgMjMyLCA4MiwgMTIsIAorICAgIDE1LCAyMzIsIDgxLCAxMiwgMTUsIDIzMiwgODAsIDEyLCAxNSwgMjMyLCA3OSwgMTIsIDE1LCAyMzIsIDc4LCAxMiwgMTUsIAorICAgIDIzMiwgNzcsIDEyLCAxNSwgMjMyLCA3NiwgMTIsIDE1LCAyMzIsIDc1LCAxMiwgMTUsIDIzMiwgNzQsIDEyLCAxNSwgMjMyLCAKKyAgICA3MywgMTIsIDE1LCAyMzIsIDcyLCAxMiwgMTUsIDIzMiwgNzEsIDEyLCAxNSwgMjMyLCA3MCwgMTIsIDE1LCAyMzIsIDY5LCAKKyAgICAxMiwgMTUsIDIzMiwgNjgsIDEyLCAxNSwgMjMyLCA2NywgMTIsIDE1LCAyMzIsIDY2LCAxMiwgMTUsIDIzMiwgNjUsIDEyLCAKKyAgICAxNSwgMjMyLCA2NCwgMTIsIDE1LCAyMzIsIDYzLCAxMiwgMTUsIDIzMiwgNjIsIDEyLCAxNSwgMjMyLCA2MSwgMTIsIDE1LCAKKyAgICAyMzIsIDYwLCAxMiwgMTUsIDIzMiwgNTksIDEyLCAxNSwgMjMyLCA1OCwgMTIsIDE1LCAyMzIsIDU3LCAxMiwgMTUsIDIzMiwgCisgICAgNTYsIDEyLCAxNSwgMjMyLCA1NSwgMTIsIDE1LCAyMzIsIDU0LCAxMiwgMTUsIDIzMiwgNTMsIDEyLCAxNSwgMjMyLCA1MiwgCisgICAgMTIsIDE1LCAyMzIsIDUxLCAxMiwgMTUsIDIzMiwgNTAsIDEyLCAxNSwgMjMyLCA0OSwgMTIsIDE1LCAyMzIsIDQ4LCAxMiwgCisgICAgMTUsIDIzMiwgNDcsIDEyLCAxNSwgMjMyLCA0NiwgMTIsIDE1LCAyMzIsIDQ1LCAxMiwgMTUsIDIzMiwgNDQsIDEyLCAxNSwgCisgICAgMjMyLCA0MywgMTIsIDE1LCAyMzIsIDQyLCAxMiwgMTUsIDIzMiwgNDEsIDEyLCAxNSwgMjMyLCA0MCwgMTIsIDE1LCAyMzIsIAorICAgIDM5LCAxMiwgMTUsIDIzMiwgMzgsIDEyLCAxNSwgMjMyLCAzNywgMTIsIDE1LCAyMzIsIDM2LCAxMiwgMTUsIDIzMiwgMzUsIAorICAgIDEyLCAxNSwgMjMyLCAzNCwgMTIsIDE1LCAyMzIsIDMzLCAxMiwgMTUsIDIzMiwgMzIsIDEyLCAxNSwgMjMyLCAzMSwgMTIsIAorICAgIDE1LCAyMzIsIDMwLCAxMiwgMTUsIDIzMiwgMjksIDEyLCAxNSwgMjMyLCAyOCwgMTIsIDE1LCAyMzIsIDI3LCAxMiwgMTUsIAorICAgIDIzMiwgMjYsIDEyLCAxNSwgMjMyLCAyNSwgMTIsIDE1LCAyMzIsIDI0LCAxMiwgMTUsIDIzMiwgMjMsIDEyLCAxNSwgMjMyLCAKKyAgICAyMiwgMTIsIDE1LCAyMzIsIDIxLCAxMiwgMTUsIDIzMiwgMjAsIDEyLCAxNSwgMjMyLCAxOSwgMTIsIDE1LCAyMzIsIDE4LCAKKyAgICAxMiwgMTUsIDIzMiwgMTcsIDEyLCAxNSwgMjMyLCAxNiwgMTIsIDE1LCAyMzIsIDE1LCAxMiwgMTUsIDIzMiwgMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMywgMTIsIDE1LCAyMzIsIDEyLCAxMiwgMTUsIDIzMiwgMTEsIDEyLCAxNSwgMjMyLCAxMCwgMTIsIDE1LCAKKyAgICAyMzIsIDksIDEyLCAxNSwgMjMyLCA4LCAxMiwgMTUsIDIzMiwgNywgMTIsIDE1LCAyMzIsIDYsIDEyLCAxNSwgMjMyLCA1LCAKKyAgICAxMiwgMTUsIDIzMiwgNCwgMTIsIDE1LCAyMzIsIDMsIDEyLCAxNSwgMjMyLCAyLCAxMiwgMTUsIDIzMiwgMSwgMTIsIDE1LCAKKyAgICAyMzIsIDAsIDEyLCAxNSwgMjMxLCAyNTUsIDEyLCAxNSwgMjMxLCAyNTQsIDEyLCAxNSwgMjMxLCAyNTMsIDEyLCAxNSwgCisgICAgMjMxLCAyNTIsIDEyLCAxNSwgMjMxLCAyNTEsIDEyLCAxNSwgMjMxLCAyNTAsIDEyLCAxNSwgMjMxLCAyNDksIDEyLCAxNSwgCisgICAgMjMxLCAyNDgsIDEyLCAxNSwgMjMxLCAyNDcsIDEyLCAxNSwgMjMxLCAyNDYsIDEyLCAxNSwgMjMxLCAyNDUsIDEyLCAxNSwgCisgICAgMjMxLCAyNDQsIDEyLCAxNSwgMjMxLCAyNDMsIDEyLCAxNSwgMjMxLCAyNDIsIDEyLCAxNSwgMjMxLCAyNDEsIDEyLCAxNSwgCisgICAgMjMxLCAyNDAsIDEyLCAxNSwgMjMxLCAyMzksIDEyLCAxNSwgMjMxLCAyMzgsIDEyLCAxNSwgMjMxLCAyMzcsIDEyLCAxNSwgCisgICAgMjMxLCAyMzYsIDEyLCAxNSwgMjMxLCAyMzUsIDEyLCAxNSwgMjMxLCAyMzQsIDEyLCAxNSwgMjMxLCAyMzMsIDEyLCAxNSwgCisgICAgMjMxLCAyMzIsIDEyLCAxNSwgMjMxLCAyMzEsIDEyLCAxNSwgMjMxLCAyMzAsIDEyLCAxNSwgMjMxLCAyMjksIDEyLCAxNSwgCisgICAgMjMxLCAyMjgsIDEyLCAxNSwgMjMxLCAyMjcsIDEyLCAxNSwgMjMxLCAyMjYsIDEyLCAxNSwgMjMxLCAyMjUsIDEyLCAxNSwgCisgICAgMjMxLCAyMjQsIDEyLCAxNSwgMjMxLCAyMjMsIDEyLCAxNSwgMjMxLCAyMjIsIDEyLCAxNSwgMjMxLCAyMjEsIDEyLCAxNSwgCisgICAgMjMxLCAyMjAsIDEyLCAxNSwgMjMxLCAyMTksIDEyLCAxNSwgMjMxLCAyMTgsIDEyLCAxNSwgMjMxLCAyMTcsIDEyLCAxNSwgCisgICAgMjMxLCAyMTYsIDEyLCAxNSwgMjMxLCAyMTUsIDEyLCAxNSwgMjMxLCAyMTQsIDEyLCAxNSwgMjMxLCAyMTMsIDEyLCAxNSwgCisgICAgMjMxLCAyMTIsIDEyLCAxNSwgMjMxLCAyMTEsIDEyLCAxNSwgMjMxLCAyMTAsIDEyLCAxNSwgMjMxLCAyMDksIDEyLCAxNSwgCisgICAgMjMxLCAyMDgsIDEyLCAxNSwgMjMxLCAyMDcsIDEyLCAxNSwgMjMxLCAyMDYsIDEyLCAxNSwgMjMxLCAyMDUsIDEyLCAxNSwgCisgICAgMjMxLCAyMDQsIDEyLCAxNSwgMjMxLCAyMDMsIDEyLCAxNSwgMjMxLCAyMDIsIDEyLCAxNSwgMjMxLCAyMDEsIDEyLCAxNSwgCisgICAgMjMxLCAyMDAsIDEyLCAxNSwgMjMxLCAxOTksIDEyLCAxNSwgMjMxLCAxOTgsIDEyLCAxNSwgMjMxLCAxOTcsIDEyLCAxNSwgCisgICAgMjMxLCAxOTYsIDEyLCAxNSwgMjMxLCAxOTUsIDEyLCAxNSwgMjMxLCAxOTQsIDEyLCAxNSwgMjMxLCAxOTMsIDEyLCAxNSwgCisgICAgMjMxLCAxOTIsIDEyLCAxNSwgMjMxLCAxOTEsIDEyLCAxNSwgMjMxLCAxOTAsIDEyLCAxNSwgMjMxLCAxODksIDEyLCAxNSwgCisgICAgMjMxLCAxODgsIDEyLCAxNSwgMjMxLCAxODcsIDEyLCAxNSwgMjMxLCAxODYsIDEyLCAxNSwgMjMxLCAxODUsIDEyLCAxNSwgCisgICAgMjMxLCAxODQsIDEyLCAxNSwgMjMxLCAxODMsIDEyLCAxNSwgMjMxLCAxODIsIDEyLCAxNSwgMjMxLCAxODEsIDEyLCAxNSwgCisgICAgMjMxLCAxODAsIDEyLCAxNSwgMjMxLCAxNzksIDEyLCAxNSwgMjMxLCAxNzgsIDEyLCAxNSwgMjMxLCAxNzcsIDEyLCAxNSwgCisgICAgMjMxLCAxNzYsIDEyLCAxNSwgMjMxLCAxNzUsIDEyLCAxNSwgMjMxLCAxNzQsIDEyLCAxNSwgMjMxLCAxNzMsIDEyLCAxNSwgCisgICAgMjMxLCAxNzIsIDEyLCAxNSwgMjMxLCAxNzEsIDEyLCAxNSwgMjMxLCAxNzAsIDEyLCAxNSwgMjMxLCAxNjksIDEyLCAxNSwgCisgICAgMjMxLCAxNjgsIDEyLCAxNSwgMjMxLCAxNjcsIDEyLCAxNSwgMjMxLCAxNjYsIDEyLCAxNSwgMjMxLCAxNjUsIDEyLCAxNSwgCisgICAgMjMxLCAxNjQsIDEyLCAxNSwgMjMxLCAxNjMsIDEyLCAxNSwgMjMxLCAxNjIsIDEyLCAxNSwgMjMxLCAxNjEsIDEyLCAxNSwgCisgICAgMjMxLCAxNjAsIDEyLCAxNSwgMjMxLCAxNTksIDEyLCAxNSwgMjMxLCAxNTgsIDEyLCAxNSwgMjMxLCAxNTcsIDEyLCAxNSwgCisgICAgMjMxLCAxNTYsIDEyLCAxNSwgMjMxLCAxNTUsIDEyLCAxNSwgMjMxLCAxNTQsIDEyLCAxNSwgMjMxLCAxNTMsIDEyLCAxNSwgCisgICAgMjMxLCAxNTIsIDEyLCAxNSwgMjMxLCAxNTEsIDEyLCAxNSwgMjMxLCAxNTAsIDEyLCAxNSwgMjMxLCAxNDksIDEyLCAxNSwgCisgICAgMjMxLCAxNDgsIDEyLCAxNSwgMjMxLCAxNDcsIDEyLCAxNSwgMjMxLCAxNDYsIDEyLCAxNSwgMjMxLCAxNDUsIDEyLCAxNSwgCisgICAgMjMxLCAxNDQsIDEyLCAxNSwgMjMxLCAxNDMsIDEyLCAxNSwgMjMxLCAxNDIsIDEyLCAxNSwgMjMxLCAxNDEsIDEyLCAxNSwgCisgICAgMjMxLCAxNDAsIDEyLCAxNSwgMjMxLCAxMzksIDEyLCAxNSwgMjMxLCAxMzgsIDEyLCAxNSwgMjMxLCAxMzcsIDEyLCAxNSwgCisgICAgMjMxLCAxMzYsIDEyLCAxNSwgMjMxLCAxMzUsIDEyLCAxNSwgMjMxLCAxMzQsIDEyLCAxNSwgMjMxLCAxMzMsIDEyLCAxNSwgCisgICAgMjMxLCAxMzIsIDEyLCAxNSwgMjMxLCAxMzEsIDEyLCAxNSwgMjMxLCAxMzAsIDEyLCAxNSwgMjMxLCAxMjksIDEyLCAxNSwgCisgICAgMjMxLCAxMjgsIDEyLCAxNSwgMjMxLCAxMjcsIDEyLCAxNSwgMjMxLCAxMjYsIDEyLCAxNSwgMjMxLCAxMjUsIDEyLCAxNSwgCisgICAgMjMxLCAxMjQsIDEyLCAxNSwgMjMxLCAxMjMsIDEyLCAxNSwgMjMxLCAxMjIsIDEyLCAxNSwgMjMxLCAxMjEsIDEyLCAxNSwgCisgICAgMjMxLCAxMjAsIDEyLCAxNSwgMjMxLCAxMTksIDEyLCAxNSwgMjMxLCAxMTgsIDEyLCAxNSwgMjMxLCAxMTcsIDEyLCAxNSwgCisgICAgMjMxLCAxMTYsIDEyLCAxNSwgMjMxLCAxMTUsIDgsIDUsIDMyLCAyNDAsIDMwLCA4LCA1LCAzMiwgMjQwLCAyNiwgOCwgNSwgCisgICAgMzIsIDIzOSwgMjI4LCA4LCA1LCAzMiwgMjQwLCAyOSwgOCwgNSwgMzIsIDI0MCwgMjgsIDgsIDUsIDMyLCAxNjMsIDIxNSwgCisgICAgOTQsIDIxMCwgNjksIDgsIDUsIDMyLCAyMTEsIDEwOCwgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIyMSwgMTUyLCAxNzgsIDUsIAorICAgIDMyLCAyMjQsIDI0MSwgMjQxLCAxNjcsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMzEsIDE5LCAxNzgsIDUsIDMyLCAyMDUsIAorICAgIDIzNSwgMjIxLCAxNTIsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMDMsIDE3NCwgMTEwLCAxLCAyMDIsIDIzNywgMywgMjM2LCAKKyAgICAyMzIsIDExMCwgMjE4LCA2MywgMjMwLCA4MSwgMjA2LCA2NywgMTEwLCAzMiwgMjAzLCA5LCAyMDIsIDIzNywgMjAyLCAyMzcsIAorICAgIDIxOSwgNTQsIDExMCwgMSwgMjUwLCAyNTAsIDI1MCwgMywgMTEwLCAxLCAyMDQsIDI3LCAyNTEsIDMwLCAxMTAsIDEsIDIwNCwgCisgICAgMjcsIDI0NCwgMTc4LCAxMTAsIDEsIDIwNCwgMjcsIDIzNywgNjcsIDExMCwgMSwgMjA0LCAyNywgMjMwLCAyMiwgMTEwLCAxLCAKKyAgICAyMDQsIDI3LCAyMjgsIDIwLCAxMTAsIDEsIDIwNCwgMjcsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMDQsIDI3LCAyMTYsIAorICAgIDkxLCAxMTAsIDEsIDIwNCwgMjcsIDIwOSwgMjAzLCAxMTAsIDEsIDI1MCwgMjUwLCA5MSwgNTQsIDExMCwgMSwgMjEzLCAwLCAKKyAgICAzLCAyMTMsIDAsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIAorICAgIDMsIDI0NCwgMTk4LCAyNSwgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTgsIDI1LCAyMTIsIAorICAgIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAxMzcsIDMsIDIxOSwgNTQsIDExMCwgMSwgMTM3LCAzLCAyMTcsIDExNCwgMTEwLCAxLCAKKyAgICAxMzcsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMzgsIDY4LCAzLCAyNDQsIAorICAgIDE5NywgMTEwLCAxLCAyNDQsIDE3OSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM3LCA2OCwgMywgMjI1LCAxMDUsIDExMCwgMSwgCisgICAgMjA2LCA2MCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjAyLCA5NiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAxMzMsIDMsIAorICAgIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgMjM3LCAzLCAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjMwLCAyMywgMywgMjQ0LCAKKyAgICAxOTcsIDExMCwgMSwgMjMwLCAyMywgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjI4LCAyMSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgCisgICAgMjI0LCAyNDgsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyMSwgNDEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNCwgMjUwLCAzLCAKKyAgICAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIAorICAgIDExMCwgMSwgMjA4LCAxNiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE3LCA3NSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE2LCAKKyAgICA5MiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjEzLCAwLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDksIDIwNCwgMywgMjQ0LCAKKyAgICAxOTcsIDExMCwgMSwgMjA2LCA2MCwgMywgMjM2LCAxMjgsIDExMCwgMSwgMjQ4LCAxMDksIDMsIDIxNiwgMjAwLCAxMTAsIDEsIAorICAgIDIzMCwgMjMsIDMsIDIxNiwgMjAwLCAxMTAsIDEsIDIxOSwgMzUsIDMsIDIxNiwgMjAwLCAxMTAsIDMyLCAxMzcsIDIyOCwgCisgICAgMjAsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDY0LCAxOCwgMTAsIDEsIDEzNywgMjA0LCA4OCwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAKKyAgICAxNDksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTQ5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgODEsIDE4LCAxMCwgMSwgCisgICAgMjQ4LCAxNDksIDE3NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA2NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA0NiwgMTgsIDEwLCAxLCAKKyAgICAyMTksIDE3LCA4MSwgMTgsIDEwLCAxLCAyMTksIDE3LCAxNzQsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDY0LCAxOCwgMTAsIDEsIAorICAgIDI0OCwgMTM3LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzNywgODEsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDE3NCwgMTgsIDEwLCAKKyAgICAxLCAyMDcsIDIzMiwgNjQsIDE4LCAxMCwgMSwgMjA3LCAyMzIsIDQ2LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA4MSwgMTgsIAorICAgIDEwLCAxLCAyMDcsIDIzMiwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTY4LCA2NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNDYsIAorICAgIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTY4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIAorICAgIDY0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgODEsIDE4LCAxMCwgMSwgMjA3LCAKKyAgICAyMzQsIDE3NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA2NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA0NiwgMTgsIDEwLCAxLCAyMDYsIAorICAgIDQ5LCA4MSwgMTgsIDEwLCAxLCAyMDYsIDQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNSwgNjQsIDE4LCAxMCwgMSwgMjE5LCAKKyAgICAxNSwgNDYsIDE4LCAxMCwgMSwgMjE5LCAxNSwgODEsIDE4LCAxMCwgMSwgMjE5LCAxNSwgMTc0LCAxOCwgMTAsIDEsIDI0MiwgCisgICAgNiwgNjQsIDE4LCAxMCwgMSwgMjQyLCA2LCA0NiwgMTgsIDEwLCAxLCAyNDIsIDYsIDgxLCAxOCwgMTAsIDEsIDI0MiwgNiwgCisgICAgMTc0LCAxOCwgMTAsIDEsIDIyMCwgMjU1LCA2NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNDYsIDE4LCAxMCwgMSwgMjIwLCAKKyAgICAyNTUsIDgxLCAxOCwgMTAsIDEsIDIyMCwgMjU1LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIwOSwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MiwgODEsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDE3NCwgMTgsIDEwLCAKKyAgICAxLCAyMDksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA4MSwgMTgsIAorICAgIDEwLCAxLCAyMDksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTE4LCA2NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNDYsIAorICAgIDE4LCAxMCwgMSwgMjQ0LCAxOTIsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyNDIsIDM0LCA2NCwgCisgICAgMTgsIDEwLCAxLCAyNDIsIDM0LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDExNiwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDIzMCwgMTU2LCA2NCwgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNDYsIDE4LCAxMCwgMSwgMjE1LCAxNzgsIAorICAgIDY0LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjI5LCAKKyAgICAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgMTkwLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIAorICAgIDIzOCwgMjUyLCA2NCwgMTgsIDEwLCAxLCAyMzgsIDI1MiwgNDYsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDgxLCAxOCwgMTAsIAorICAgIDEsIDIzOCwgMjUyLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDY0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA0NiwgMTgsIAorICAgIDEwLCAxLCAyMzcsIDIxOCwgODEsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDE3NCwgMTgsIDEwLCAxLCAyMjIsIDEyNywgNjQsIAorICAgIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDQ2LCAxOCwgMTAsIDEsIDIyMiwgMTI3LCA4MSwgMTgsIDEwLCAxLCAyMjIsIDEyNywgCisgICAgMTc0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAyMzgsIDg2LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNDYsIAorICAgIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDY0LCAxOCwgMTAsIDEsIDIxNSwgMjMxLCA0NiwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgCisgICAgODEsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDY0LCAxOCwgMTAsIAorICAgIDEsIDIzNywgNDQsIDMsIDg5LCA4NywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgNjQsIDE4LCAxMCwgMSwgCisgICAgMjM3LCA0NCwgMjM4LCAzNywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgODEsIDE4LCAxMCwgMSwgMjM3LCAKKyAgICA0NCwgMjM4LCAzNywgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA2NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAKKyAgICAyNDMsIDExMCwgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMTAsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgCisgICAgMTEwLCAxNzQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIAorICAgIDIzNywgMTI4LCA4NywgNDYsIDE4LCAxMCwgMTYsIDcwLCA1NSwgMTAsIDE2LCA3MCwgNTYsIDEwLCAxNiwgMTIwLCAxODcsIAorICAgIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCA1NiwgMTAsIDE2LCAxMjYsIDE4NywgNTUsIDEwLCAxNiwgMTI2LCAxODcsIDU2LCAxMCwgCisgICAgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU2LCAxMCwgCisgICAgMTYsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMTYsIDIzOSwgMTQ3LCAxODcsIDU2LCAxMCwgMTYsIDUyLCA4MCwgMjQ4LCAKKyAgICAyMzEsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxNiwgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NiwgCisgICAgMTAsIDE2LCAyMTUsIDI1MiwgMTAsIDE2LCA1LCAyMDksIDI1MiwgNTUsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU2LCAxMCwgCisgICAgMSwgMjIyLCAyMDYsIDY0LCAxOCwgMTAsIDEsIDIyMiwgMjA2LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgODEsIDE4LCAKKyAgICAxMCwgMSwgMjIyLCAyMDYsIDE3NCwgMTgsIDEwLCAxLCAxMDYsIDY0LCAxOCwgMTAsIDEsIDEwNiwgNDYsIDE4LCAxMCwgMSwgCisgICAgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxMDYsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgCisgICAgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgCisgICAgMjI5LCA3NiwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCisgICAgNzYsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxODgsIDY0LCAxOCwgMTAsIDEsIDE4OCwgNDYsIDE4LCAxMCwgMSwgMTg4LCAKKyAgICA4MSwgMTgsIDEwLCAxLCAxODgsIDE3NCwgMTgsIDEwLCAxLCAyMDcsIDE2LCAyMjksIDIwNSwgMjI5LCA3NiwgMTM3LCAyMjUsIAorICAgIDEzMCwgODEsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAxMzAsIDE3NCwgMTgsIAorICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgCisgICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDExMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAorICAgIDIwNCwgNzEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAzMiwgCisgICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAKKyAgICAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIAorICAgIDIxNCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA4MSwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCisgICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAorICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKKyAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA4MSwgMTgsIDEwLCAxLCAyNDAsIDc1LCAKKyAgICA4OSwgNjQsIDE4LCAxMCwgMSwgMjQwLCA3NSwgODksIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA4MSwgMTgsIDEwLCAKKyAgICAxLCAyNDAsIDc1LCA4OSwgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDY0LCAxOCwgMTAsIAorICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKKyAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIAorICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDY0LCAxOCwgCisgICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAKKyAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCisgICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTg0LCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgMjA5LCA4OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgCisgICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDY0LCAxOCwgCisgICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE1MSwgNjQsIDE4LCAxMCwgCisgICAgMzIsIDIyOSwgMTQxLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICAyMTQsIDE2MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjE0LCAxNjIsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAKKyAgICAyOSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAorICAgIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKKyAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAorICAgIDY0LCAxOCwgMTAsIDMyLCAyMDIsIDExMSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDY0LCAxOCwgCisgICAgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICAyMzgsIDExNSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAorICAgIDQ4LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgCisgICAgNDgsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDI0MCwgNDgsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgCisgICAgMTIwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjE3LCAxMjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKKyAgICAyMywgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgCisgICAgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgCisgICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKKyAgICAyMywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKKyAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAorICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAorICAgIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDY0LCAxOCwgCisgICAgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODMsIDY0LCAxOCwgMTAsIDMyLCA4MywgCisgICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKKyAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyOSwgCisgICAgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAKKyAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDY0LCAKKyAgICAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCisgICAgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCisgICAgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDEwMSwgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTIzLCAKKyAgICAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgMywgMjEwLCAxOTksIDEzNywgNjQsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTcxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMjgsIAorICAgIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDAsIDcyLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAKKyAgICAxNzMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIAorICAgIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgCisgICAgMTI4LCA4NywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgCisgICAgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgCisgICAgMzIsIDI0OCwgMTM5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNDYsIDE4LCAxMCwgCisgICAgMzIsIDI0OCwgMTM5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIxNiwgMTIzLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKKyAgICAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgCisgICAgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIAorICAgIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgCisgICAgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMjMwLCAyMywgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDIzMCwgMjMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCisgICAgMzIsIDIzMCwgMjMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIAorICAgIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgCisgICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIxNiwgMTIzLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxMzcsIDIyNSwgMTMwLCAKKyAgICAzLCAyMTAsIDE5OSwgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAorICAgIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIyMSwgMTc5LCA0NiwgCisgICAgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIAorICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKKyAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjM3LCAKKyAgICA0NCwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMzcsIDQ0LCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgODEsIDE4LCAxMCwgCisgICAgMzIsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIAorICAgIDgxLCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDgzLCA4MSwgCisgICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxNTEsIDgxLCAxOCwgCisgICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDgxLCAxOCwgCisgICAgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIAorICAgIDI0NCwgMjA4LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICAyNDQsIDIwOCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjAyLCAKKyAgICAxMTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgCisgICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICAyMzAsIDIzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIAorICAgIDIzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDMyLCAKKyAgICAyMzAsIDIzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAorICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgODEsIAorICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAorICAgIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKKyAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCisgICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAyMTAsIAorICAgIDE5OSwgMTM3LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDgxLCAxOCwgCisgICAgMTAsIDMyLCA4OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4OSwgCisgICAgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAxNzQsIAorICAgIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIAorICAgIDE3NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCAxNzQsIAorICAgIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAKKyAgICAyMTMsIDgxLCAzLCAyNDAsIDcyLCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTczLCAxNzQsIDE4LCAxMCwgCisgICAgMzIsIDIxMywgODEsIDMsIDIyOSwgMjMwLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCAKKyAgICA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTM3LCAyMjUsIAorICAgIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgCisgICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIAorICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgCisgICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgCisgICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKKyAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgCisgICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgCisgICAgNDAsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAorICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKKyAgICAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIAorICAgIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAKKyAgICAyNTIsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyNTEsIDYwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODksIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMzgsIDExNSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4OSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDg5LCA0NiwgCisgICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDg5LCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4OSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4OSwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAorICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA0NiwgCisgICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIxNiwgMTIzLCA0NiwgCisgICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjE2LCAxMjMsIAorICAgIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDgxLCAxOCwgCisgICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA4MSwgMTgsIDEwLCAKKyAgICAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMTc0LCAxOCwgMTAsIAorICAgIDMyLCAyMTQsIDE2MiwgMywgMTUxLCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgCisgICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAxNzQsIDE4LCAxMCwgCisgICAgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMTc0LCAxOCwgMTAsIAorICAgIDMyLCAyMDIsIDExMSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMTM3LCAzLCAyNDAsIDcwLCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMTM3LCAzLCAyNDAsIDcwLCA2NCwgMTgsIDIxOSwgMjMxLCA0OSwgMjE5LCA3NiwgMjE5LCAyMzEsIDUwLCAyMTksIDc2LCAKKyAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgCisgICAgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIAorICAgIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKKyAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDE1MSwgODEsIAorICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAKKyAgICAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAKKyAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIAorICAgIDE2MiwgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxNTEsIDgxLCAxOCwgCisgICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAorICAgIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNCwgCisgICAgMTYyLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgCisgICAgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIDMsIAorICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAorICAgIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCAKKyAgICA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgCisgICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCisgICAgMjA4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAorICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgCisgICAgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAorICAgIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAzLCAKKyAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgCisgICAgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIAorICAgIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKKyAgICAzLCAxNTEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDIyOCwgMjksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgCisgICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKKyAgICAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgODEsIAorICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDgzLCA4MSwgCisgICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAxNTEsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgMTg0LCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIAorICAgIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgCisgICAgNDQsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKKyAgICAzMiwgMjIxLCAxNzksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAorICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgCisgICAgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgCisgICAgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgCisgICAgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAKKyAgICAxNzAsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgCisgICAgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgCisgICAgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgCisgICAgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKKyAgICAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCisgICAgMjA4LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgCisgICAgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgODMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyMjEsIDE3OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4OSwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAorICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKKyAgICAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMjI4LCAyOSwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDE1MSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDE4NCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIAorICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODMsIAorICAgIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIAorICAgIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgCisgICAgMTc5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE1LCA0LCAyMDYsIDE4OCwgMjUwLCA4MiwgMjI4LCAyNTQsIAorICAgIDIxMSwgNjIsIDIsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDExNiwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAyMTEsIAorICAgIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCAxMywgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNDQsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICAyMjQsIDU3LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCA1LCA2NCwgMTgsIDEwLCAzMiwgMjE2LCAxNzQsIDY0LCAxOCwgMTAsIAorICAgIDMyLCAyNTEsIDMzLCA2NCwgMTgsIDEwLCAzMiwgMjA0LCA5MCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNCwgNjQsIDE4LCAxMCwgCisgICAgMzIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4OSwgMTAsIDMyLCAyMzAsIDE3MiwgMjE2LCA1NiwgNTQsIDEwLCAzMiwgMjQ4LCAKKyAgICA1MywgMjUwLCAxNDIsIDI1MCwgMTQzLCA1NywgMjE0LCAxNDksIDU3LCAyMTQsIDM4LCA1NywgMjEzLCAyMjYsIDU3LCAyMTMsIAorICAgIDIxNSwgNTcsIDIxMywgMjA0LCA1NywgMjEzLCAxOTMsIDU3LCAyMTMsIDE4MiwgNTcsIDIxMywgMTcxLCA1NywgMjEzLCAKKyAgICAxNjAsIDU3LCAyMTQsIDE0OCwgNTcsIDIxNCwgMTM3LCA1NywgMjE0LCAxMjYsIDU3LCAyMTQsIDExNSwgNTcsIDIxNCwgCisgICAgMTA0LCA1NywgMjE0LCA5MywgNTcsIDIxNCwgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDUsIDIzMywgMjE3LCAKKyAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDEzOSwgMjQ1LCAyMzMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIAorICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyNDIsIDIxNywgMjQxLCAyMzksIAorICAgIDE1OSwgMzUsIDgwLCAyMTMsIDE0MywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MCwgMjEyLCA4MiwgMjE3LCAKKyAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIxNywgNDcsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAKKyAgICAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyMjcsIDE4NSwgMjQ3LCAyMjUsIAorICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMzYsIDEwNiwgMjQxLCAxMDgsIDM5LCAzMiwgNDksIDIzNywgMTM3LCAzOSwgCisgICAgMzIsIDUwLCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNDksIDIzNywgMTM3LCAzOSwgNTIsIDIwOCwgMjI4LCA1MCwgCisgICAgMjM3LCAxMzcsIDM5LCAyMjUsIDE3MSwgNDksIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDUwLCAyMzcsIDEzNywgMzksIAorICAgIDI0NSwgMjA2LCAyMjUsIDE3MCwgMzksIDMyLCA0OSwgMTYyLCA1NiwgMzksIDMyLCA1MCwgMTYyLCA1NiwgMzksIDIwOCwgCisgICAgMjI4LCA0OSwgMTYyLCA1NiwgMzksIDIwOCwgMjI4LCA1MCwgMTYyLCA1NiwgMzksIDIyNSwgMTcxLCA0OSwgMTYyLCA1NiwgCisgICAgMzksIDIyNSwgMTcxLCA1MCwgMTYyLCA1NiwgMzksIDI0NSwgMjA2LCAyMjUsIDE3MSwgNTYsIDM5LCAzNiwgMjA4LCAxOTgsIAorICAgIDQ5LCAyMzcsIDEzNywgMzksIDM2LCAyMDgsIDE5OCwgNTAsIDIzNywgMTM3LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgCisgICAgMTIwLCA3MCwgMjI3LCAyMzIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDIxNywgCisgICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDkzLCAyNDQsIDE0NCwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAorICAgIDEyNCwgMjI3LCAxMTQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMDQsIDcyLCAxMjQsIDIyNywgMTE0LCAyMTcsIAorICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIxOSwgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjE5LCAKKyAgICA3NiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyNDUsIDkzLCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAorICAgIDgwLCA1MCwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAKKyAgICAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjE3LCAyNDEsIAorICAgIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAKKyAgICA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCisgICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAKKyAgICAzNSwgODAsIDQ5LCAyNTAsIDIxOCwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDI1MCwgMjE4LCAxNTUsIAorICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgCisgICAgODAsIDUwLCAyNDUsIDE2NiwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAyNDUsIDE2NiwgMTU1LCAKKyAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCAyMTMsIDEyMSwgMjQzLCA4NSwgNjEsIAorICAgIDIxMywgMTIxLCAyNDMsIDg1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDUxLCAxNTUsIDIxNywgMjQxLCAKKyAgICAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTEsIDE1NSwgMjQ0LCAxNDMsIDIxOSwgMTk4LCAyNDYsIDIxNCwgMjE5LCAxOTgsIAorICAgIDIwNCwgNzIsIDIxOSwgMTk4LCA1MiwgMjA0LCA3MiwgMjE5LCAxOTgsIDI0NCwgMTQzLCAxMjQsIDIyNywgMTE0LCAyNDYsIAorICAgIDIxNCwgMTI0LCAyMjcsIDExNCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgNSwgMjQ1LCAyMzMsIDUsIDEzOSwgMjQ1LCAKKyAgICAyMzMsIDUsIDIzOSwgMTAyLCAyMTEsIDYxLCA1LCAyMTMsIDE0MywgNSwgMjQ1LCAyNDIsIDUsIDIxNywgNDcsIDgyLCA1LCAKKyAgICAyNDAsIDIxMiwgODIsIDUsIDI0MSwgMTA0LCAyNDQsIDE0NCwgNSwgNDksIDIxOSwgNzYsIDUsIDUwLCAyMTksIDc2LCA1LCAKKyAgICA0OSwgMjQ1LCA5MywgMTU1LCA1LCA1MCwgMjQ1LCA5MywgMTU1LCA1LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNSwgCisgICAgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIDQyLCA1NCwgNSwgMjUwLCAyMzUsIDUsIDI1MCwgNTksIDUsIDkxLCAKKyAgICA1NCwgNSwgMjM1LCAyMTksIDUsIDIyNywgMTc5LCA1NCwgNSwgMjM3LCAyNDcsIDU0LCA1LCAyNDEsIDM1LCA1NCwgNSwgCisgICAgMjE2LCA3NCwgMjEyLCAwLCA1LCAyNDMsIDk3LCA1NCwgNSwgMjE4LCAyNDYsIDU0LCA1LCAyNDUsIDIzMSwgMjUwLCA0OSwgCisgICAgMTAsIDI0MCwgNzAsIDY0LCAxOCwgMTAsIDIwOSwgMjEwLCAzLCAyNDAsIDcwLCA1NSwgMTAsIDI0NCwgMTcxLCA2NCwgMTgsIAorICAgIDEwLCAyMDksIDI0OSwgMjM5LCAxMzcsIDEwLCAyMjksIDIyOCwgNjQsIDE4LCAxMCwgMjQwLCA3MiwgNjQsIDE4LCAxMCwgCisgICAgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDI0NCwgMTczLCA2NCwgMTgsIDEwLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIDIyOSwgCisgICAgMjMwLCA2NCwgMTgsIDEwLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDIxMywgODEsIDY0LCAxOCwgMTAsIDIxMywgODEsIAorICAgIDE3NCwgMTgsIDEwLCAyMTAsIDIyMywgNjQsIDE4LCAxMCwgMjEwLCAyMjMsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDEyOCwgCisgICAgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCAKKyAgICA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIAorICAgIDQ2LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAKKyAgICAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNjQsIDE4LCAxMCwgMSwgMTM3LCAKKyAgICAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDgxLCAxOCwgMTAsIDEsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDE3NCwgMTgsIDEwLCAxLCAxMzcsIDY0LCAxOCwgMTAsIDEsIDEzNywgNDYsIDE4LCAxMCwgCisgICAgMSwgMjQ4LCAxMzksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTM5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgODEsIDE4LCAKKyAgICAxMCwgMSwgMjQ4LCAxMzksIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAKKyAgICAxNzAsIDIyNSwgOTksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCA2NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNDYsIDE4LCAKKyAgICAxMCwgMSwgMjA5LCAxNzAsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTcwLCAxNzQsIDE4LCAxMCwgMSwgMjA5LCA4OSwgNjQsIAorICAgIDE4LCAxMCwgMSwgMjA5LCA4OSwgNDYsIDE4LCAxMCwgMSwgMjA5LCA4OSwgODEsIDE4LCAxMCwgMSwgMjA5LCA4OSwgMTc0LCAKKyAgICAxOCwgMTAsIDEsIDE4NCwgNjQsIDE4LCAxMCwgMSwgMTg0LCA0NiwgMTgsIDEwLCAxLCAxODQsIDgxLCAxOCwgMTAsIDEsIAorICAgIDE4NCwgMTc0LCAxOCwgMTAsIDEsIDE1MSwgNjQsIDE4LCAxMCwgMSwgMTUxLCA0NiwgMTgsIDEwLCAxLCAxNTEsIDgxLCAxOCwgCisgICAgMTAsIDEsIDE1MSwgMTc0LCAxOCwgMTAsIDEsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNDYsIDE4LCAKKyAgICAxMCwgMSwgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDEsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAxODUsIDY0LCAKKyAgICAxOCwgMTAsIDEsIDI0NCwgMTg1LCA0NiwgMTgsIDEwLCAxLCAyMDksIDEwMSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIAorICAgIDQ2LCAxOCwgMTAsIDEsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMSwgMjAyLCAKKyAgICAxMDgsIDY0LCAxOCwgMTAsIDEsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgNjQsIDE4LCAxMCwgMSwgCisgICAgMjE0LCAxNjIsIDQ2LCAxOCwgMTAsIDEsIDIxNCwgMTYyLCA4MSwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgMTc0LCAxOCwgMTAsIAorICAgIDEsIDIxMywgNDAsIDY0LCAxOCwgMTAsIDEsIDIxMywgNDAsIDQ2LCAxOCwgMTAsIDEsIDIxMywgNDAsIDgxLCAxOCwgMTAsIAorICAgIDEsIDIxMywgNDAsIDE3NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA2NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA0NiwgMTgsIDEwLCAKKyAgICAxLCAyMTUsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMTUsIDI5LCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDY0LCAxOCwgMTAsIAorICAgIDEsIDI0NCwgMjA4LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgODEsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDE3NCwgMTgsIAorICAgIDEwLCAxLCAyMDksIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA4MSwgCisgICAgMTgsIDEwLCAxLCAyMDksIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA2NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgCisgICAgNDYsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDgxLCAxOCwgMTAsIDEsIDIwMiwgMTExLCAxNzQsIDE4LCAxMCwgMSwgMjUxLCAKKyAgICA2MCwgNjQsIDE4LCAxMCwgMSwgMjUxLCA2MCwgNDYsIDE4LCAxMCwgMSwgMjUxLCA2MCwgODEsIDE4LCAxMCwgMSwgMjUxLCAKKyAgICA2MCwgMTc0LCAxOCwgMTAsIDEsIDIzOCwgMTE1LCA2NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNDYsIDE4LCAxMCwgMSwgCisgICAgMjM4LCAxMTUsIDgxLCAxOCwgMTAsIDEsIDIzOCwgMTE1LCAxNzQsIDE4LCAxMCwgMSwgMjQwLCA0OCwgNjQsIDE4LCAxMCwgCisgICAgMSwgMjQwLCA0OCwgNDYsIDE4LCAxMCwgMSwgMjQwLCA0OCwgODEsIDE4LCAxMCwgMSwgMjQwLCA0OCwgMTc0LCAxOCwgMTAsIAorICAgIDEsIDIxNywgMTIwLCA2NCwgMTgsIDEwLCAxLCAyMTcsIDEyMCwgNDYsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDgxLCAxOCwgCisgICAgMTAsIDEsIDIxNywgMTIwLCAxNzQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNjQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNDYsIDE4LCAKKyAgICAxMCwgMSwgMjMwLCAyMywgODEsIDE4LCAxMCwgMSwgMjMwLCAyMywgMTc0LCAxOCwgMTAsIDEsIDIyOCwgMjksIDY0LCAxOCwgCisgICAgMTAsIDEsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDEsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDEsIDIyOCwgMjksIDE3NCwgMTgsIAorICAgIDEwLCAxLCA4MywgNjQsIDE4LCAxMCwgMSwgODMsIDQ2LCAxOCwgMTAsIDEsIDgzLCA4MSwgMTgsIDEwLCAxLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDEsIDIyMSwgMTc5LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMSwgMjIxLCAxNzksIAorICAgIDgxLCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCisgICAgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgODEsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIAorICAgIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDQ2LCAxOCwgMTAsIDEsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDEsIDEzNywgCisgICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDEsIDg5LCA2NCwgMTgsIDEwLCAxLCA4OSwgNDYsIDE4LCAxMCwgMSwgODksIDgxLCAKKyAgICAxOCwgMTAsIDEsIDg5LCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKKyAgICAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgCisgICAgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgNDYsIDE4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMjEsIDE5MCwgMjExLCAKKyAgICAyMjgsIDE1NCwgMjQwLCAyMTIsIDgyLCAxNTQsIDIxNywgMzEsIDgyLCAxNTQsIDQyLCA1NCwgMTU0LCAyNDMsIDk3LCA1NCwgCisgICAgMTU0LCAyMTgsIDI0NiwgNTQsIDE1NCwgMjUwLCAyMzUsIDE1NCwgMjUwLCAxNjAsIDE1NCwgNDksIDIxOSwgNzYsIDE1NCwgCisgICAgNTAsIDIxOSwgNzYsIDE1NCwgMjUwLCA1OSwgMTU0LCA5MSwgNTQsIDE1NCwgMjQ1LCAyMzMsIDE1NCwgMjM1LCAyMTksIAorICAgIDE1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE1NCwgMjEyLCAwLCAxNTQsIDE3LCAyMDIsIDg0LCAxNTQsIDE3LCAxMDUsIDE1NCwgCisgICAgMTcsIDEwOCwgMTU0LCAxNywgMTQ3LCAxNTQsIDE3LCAxNDksIDE1NCwgMTcsIDE3MCwgMTU0LCAxNywgMTk1LCAxNTQsIDE3LCAKKyAgICAyMTMsIDExMSwgMTU0LCAxNywgMTk5LCAxNTQsIDE3LCAyMjIsIDYzLCAxNTQsIDI0NSwgMjQyLCAxNTQsIDIxMywgMTQzLCAKKyAgICAxNTQsIDIyNywgMTc5LCA1NCwgMTU0LCAyNDEsIDM1LCA1NCwgMTU0LCAyMzcsIDI0NywgNTQsIDE1NCwgMjE3LCA0NywgODIsIAorICAgIDE1NCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE1NCwgOCwgNiwgMSwgNjMsIDE1NCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgCisgICAgNiwgMSwgMjQ3LCAxMjUsIDE1NCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA2LCAxLCA3NCwgMTU0LCA4LCA2LCAxLCAKKyAgICAyNDAsIDE3NCwgMTU0LCA4LCA2LCAxLCAyMzksIDc1LCAxNTQsIDgsIDYsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDYsIDEsIAorICAgIDc1LCAxNTQsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNTQsIDgsIDYsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNiwgMSwgMTU5LCAKKyAgICAxNTQsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNTQsIDgsIDYsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDYsIDEsIDc4LCAxNTQsIDgsIAorICAgIDYsIDEsIDIxOSwgMTg0LCAxNTQsIDgsIDYsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDYsIDEsIDE0NiwgMTU0LCA4LCA2LCAxLCAKKyAgICAxOTQsIDE1NCwgOCwgNiwgMSwgMjEwLCA2OSwgMTU0LCA4LCA2LCAxLCA2OCwgMTU0LCA4LCA2LCAxLCAyMDYsIDE2NCwgCisgICAgMTU0LCA4LCA2LCAxLCAyMDQsIDE0NCwgMTU0LCA4LCA2LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA2LCAxLCAyMDMsIDEyNCwgCisgICAgMTU0LCA4LCA2LCAxLCAyMDIsIDE1OSwgMTU0LCA0OSwgNTEsIDE1NSwgMTU0LCAyMTYsIDc0LCAyMTIsIDAsIDE1NCwgNTAsIAorICAgIDUxLCAxNTUsIDE1NCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE1NCwgMTI0LCAyMjcsIDExNCwgMTU0LCAyMzcsIDI1NCwgMjUxLCAKKyAgICAxMzgsIDE1NCwgOCwgNSwgMSwgNjMsIDE1NCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAorICAgIDE1NCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA1LCAxLCA3NCwgMTU0LCA4LCA1LCAxLCAyNDAsIDE3NCwgMTU0LCA4LCAKKyAgICA1LCAxLCAyMzksIDc1LCAxNTQsIDgsIDUsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDUsIDEsIDc1LCAxNTQsIDgsIDUsIDEsIAorICAgIDIzMCwgMTg0LCAxNTQsIDgsIDUsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNSwgMSwgMTU5LCAxNTQsIDgsIDUsIDEsIDIyNiwgCisgICAgMTg1LCAxNTQsIDgsIDUsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDUsIDEsIDc4LCAxNTQsIDgsIDUsIDEsIDIxOSwgMTg0LCAKKyAgICAxNTQsIDgsIDUsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDUsIDEsIDE0NiwgMTU0LCA4LCA1LCAxLCAxOTQsIDE1NCwgOCwgNSwgCisgICAgMSwgMjEwLCA2OSwgMTU0LCA4LCA1LCAxLCA2OCwgMTU0LCA4LCA1LCAxLCAyMDYsIDE2NCwgMTU0LCA4LCA1LCAxLCAyMDQsIAorICAgIDE0NCwgMTU0LCA4LCA1LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA1LCAxLCAyMDMsIDEyNCwgMTU0LCA4LCA1LCAxLCAyMDIsIAorICAgIDE1OSwgMTU0LCA0OSwgMjQ1LCA5MywgMTU1LCAxNTQsIDgwLCAyMjcsIDExNCwgMTU0LCA1MCwgMjQ1LCA5MywgMTU1LCAKKyAgICAxNTQsIDIwOCwgMjI3LCAxNTQsIDQ5LCA2MSwgMjE5LCA3NiwgMTU0LCA1MCwgNjEsIDIxOSwgNzYsIDEyNywgMTM5LCAyMzksIAorICAgIDEwMiwgMjExLCA2MSwgMTI3LCA0OSwgMjQ1LCAxNjYsIDE1NSwgMTI3LCA1MCwgMjQ1LCAxNjYsIDE1NSwgMTI3LCAxMzksIAorICAgIDI0NSwgMjMzLCAxMjcsIDY3LCAxMDEsIDI0MywgODUsIDEyNywgNjcsIDEsIDIwNCwgMCwgMTI3LCA2NywgMSwgNSwgNjMsIAorICAgIDEyNywgNjcsIDEsIDUsIDc1LCAxMjcsIDY3LCAxLCA1LCA2OCwgMTI3LCA2NywgMSwgNSwgNzQsIDEyNywgNjcsIDEsIDUsIAorICAgIDc4LCAxMjcsIDY3LCAxLCA1LCAxOTgsIDEyNywgNjcsIDEsIDUsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCA1LCAyMDIsIDI0NywgCisgICAgMTI3LCA2NywgMSwgNSwgMjA3LCAyMDMsIDEyNywgMjI5LCAyMjUsIDIxNywgMjE1LCAyMTEsIDI0MSwgODIsIDEyNywgNjcsIAorICAgIDEsIDYzLCAxMjcsIDY3LCAxLCA3NSwgMTI3LCA2NywgMSwgNjgsIDEyNywgNjcsIDEsIDc0LCAxMjcsIDY3LCAxLCA3OCwgCisgICAgMTI3LCA2NywgMSwgMTczLCAxMjcsIDY3LCAxLCAyMjksIDEwMCwgMTI3LCA2NywgMSwgMjI4LCAyMDksIDEyNywgNjcsIDEsIAorICAgIDIyOSwgMjAxLCAxMjcsIDY3LCAxLCAyMjksIDI2LCAxMjcsIDY3LCAxLCAyMTUsIDM2LCAxMjcsIDY3LCAxLCAyMTIsIDE2MiwgCisgICAgMTI3LCA2NywgMSwgMjExLCAxMCwgMTI3LCA2NywgMSwgMjE0LCAxNzcsIDEyNywgNjcsIDEsIDIxMiwgMTMsIDEyNywgNjcsIAorICAgIDEsIDIxMCwgMjIsIDEyNywgNjcsIDEsIDIwOSwgMiwgMTI3LCA2NywgMSwgMjA3LCAyMDMsIDEyNywgNjcsIDEsIDIwOSwgCisgICAgMTg3LCAxMjcsIDY3LCAxLCAxMzUsIDEyNywgNjcsIDEsIDIwMSwgMjAxLCAxMjcsIDY3LCAxLCAyMjIsIDEwMCwgMTI3LCAKKyAgICA2NywgMSwgMjIxLCA4NCwgMTI3LCA2NywgMSwgMjIyLCAyNDAsIDEyNywgNjcsIDEsIDIyMSwgMTkxLCAxMjcsIDY3LCAxLCAKKyAgICAxNTIsIDEyNywgNjcsIDEsIDIzNywgMywgMTI3LCA2NywgMSwgMjM2LCAyNiwgMTI3LCA2NywgMSwgMjM3LCA2NywgMTI3LCAKKyAgICA2NywgMSwgMjM2LCAxMzYsIDEyNywgNjcsIDEsIDE5MiwgMTI3LCA2NywgMSwgMjI0LCAxNTUsIDEyNywgNjcsIDEsIDIyMywgCisgICAgMjQ2LCAxMjcsIDY3LCAxLCAyMjUsIDIwLCAxMjcsIDY3LCAxLCAyMjQsIDgyLCAxMjcsIDY3LCAxLCAxOTgsIDEyNywgNjcsIAorICAgIDEsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCAyMDIsIDI0NywgMTI3LCA2NywgMSwgMjE2LCAyMjAsIDEyNywgNjcsIDEsIDIxNiwgCisgICAgNTcsIDEyNywgNjcsIDEsIDIxNSwgMTQ1LCAxMjcsIDY3LCAxLCAyMTYsIDE1OCwgMTI3LCA2NywgMSwgMjE1LCAyMjcsIAorICAgIDEyNywgNjcsIDEsIDIwNCwgMTExLCAxMjcsIDY3LCAxLCAyMjMsIDE2MywgMTI3LCA2NywgMjA1LCAxODYsIDIxMSwgMjQxLCAKKyAgICA4MiwgMTI3LCA2NywgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMTI3LCAyOCwgMjQwLCA3LCAxMjcsIDI4LCAxLCAyMjksIAorICAgIDU5LCAxMjcsIDI4LCAxLCAyMTEsIDE1NiwgMTI3LCAyOCwgMSwgMjI5LCA1MiwgMTI3LCAyOCwgMSwgMjIyLCA5MywgMTI3LCAKKyAgICAyOCwgMSwgMjIyLCA5MSwgMTI3LCAyOCwgMSwgMjIyLCA5MCwgMTI3LCAyOCwgMSwgMjA4LCAyNDAsIDEyNywgMjgsIDEsIAorICAgIDIxMSwgMTQ1LCAxMjcsIDI4LCAxLCAyMTYsIDQ3LCAxMjcsIDI4LCAxLCAyMTYsIDQyLCAxMjcsIDI4LCAxLCAyMTYsIDM5LCAKKyAgICAxMjcsIDI4LCAxLCAyMTYsIDMyLCAxMjcsIDI4LCAxLCAyMTYsIDI3LCAxMjcsIDI4LCAxLCAyMTYsIDIyLCAxMjcsIDI4LCAKKyAgICAxLCAyMTYsIDMzLCAxMjcsIDI4LCAxLCAyMTYsIDQ1LCAxMjcsIDI4LCAxLCAyMjQsIDE0MSwgMTI3LCAyOCwgMSwgMjE4LCAKKyAgICAxNTMsIDEyNywgMjgsIDEsIDIxMSwgMTUzLCAxMjcsIDI4LCAxLCAyMTgsIDE0MiwgMTI3LCAyOCwgMSwgMjEyLCAxMTEsIAorICAgIDEyNywgMjgsIDEsIDIxMSwgMTUwLCAxMjcsIDI4LCAxLCAyMzEsIDEwNiwgMTI3LCAyOCwgMSwgMjQ2LCA3NCwgMTI3LCAyOCwgCisgICAgMSwgMjExLCAxNjAsIDEyNywgMjgsIDEsIDI0NiwgMTM4LCAxMjcsIDI4LCAxLCAyMjksIDEyMCwgMTI3LCAyOCwgMSwgMjA5LCAKKyAgICA2NiwgMTI3LCAyOCwgMSwgMjE4LCAxOTAsIDEyNywgMjgsIDEsIDIzNiwgMjUxLCAxMjcsIDI4LCAxLCA2MywgMTI3LCAyOCwgCisgICAgMSwgMjUxLCAxMDksIDEyNywgMjgsIDEsIDE5OCwgMTI3LCAyOCwgMSwgMjAzLCA5OSwgMTI3LCAyOCwgMSwgMjQxLCA1NSwgCisgICAgMTI3LCAyOCwgMSwgNzQsIDEyNywgMjgsIDEsIDIwMywgMzksIDEyNywgMjgsIDEsIDIwMywgNTIsIDEyNywgMjgsIDEsIDc4LCAKKyAgICAxMjcsIDI4LCAxLCAyMDQsIDExMSwgMTI3LCAyOCwgMSwgMjA0LCAxMDcsIDEyNywgMjgsIDEsIDIyMCwgNzMsIDEyNywgMjgsIAorICAgIDEsIDIwMiwgMjQ3LCAxMjcsIDI4LCAxLCA2OCwgMTI3LCAyOCwgMSwgMjA0LCA0OCwgMTI3LCAyOCwgMSwgMjA0LCA2MiwgCisgICAgMTI3LCAyOCwgMSwgMjA0LCAzMCwgMTI3LCAyOCwgMSwgMjAyLCAyMTMsIDEyNywgMjgsIDEsIDI0MCwgMjM4LCAxMjcsIDI4LCAKKyAgICAxLCAyMDMsIDExLCAxMjcsIDI4LCAxLCA3NSwgMTU0LCAyNDYsIDIyMCwgNTQsIDE1NCwgMjE4LCAyMCwgNTQsIDE1NCwgCisgICAgMjIxLCAxNjYsIDU0LCAxNTQsIDIyNSwgMTcwLCAxNTQsIDI0NywgMjAzLCAxNDIsIDE1NCwgMjAzLCA0MywgNTQsIDE1NCwgCisgICAgMjAzLCAyNDYsIDU0LCAxMjcsIDIzOSwgMTU2LCAxNTcsIDIwNiwgMzgsIDEyNywgOTYsIDQ3LCAxMjcsIDE3NywgNDcsIAorICAgIDEyNywgODYsIDQ3LCAxMjcsIDE4MywgNDcsIDEyNywgNjIsIDIxMSwgMTc3LCAxMjcsIDYxLCAyNDYsIDYxLCAyMzAsIDI1MSwgCisgICAgMjUwLCAyMDUsIDI1MCwgMjI4LCAyMzAsIDI1MSwgMjUwLCAyMDUsIDIxMywgMTMwLCAyMzAsIDI1MSwgMjUwLCAyMDUsIAorICAgIDIwOSwgMTM4LCAyMjAsIDkwLCAyMTYsIDk2LCAyNDYsIDE4MiwgMjE2LCA5NiwgMjQ2LCAxODIsIDI5LCA2NiwgNCwgMjQ5LCAKKyAgICAyMzksIDYzLCAyOSwgNjYsIDQsIDI0OSwgMjA4LCA3NCwgMjksIDY2LCA0LCAyNDksIDIxNywgNzUsIDI5LCA2NiwgNCwgCisgICAgMjQ5LCAxODUsIDc4LCAyOSwgNjYsIDQsIDI0OSwgMjM1LCA2OCwgMjksIDY2LCA0LCAyNDksIDI1NCwgMjQ0LCAyMTIsIDI5LCAKKyAgICA2NiwgNCwgMjQ5LCAyMDEsIDI0NCwgNzUsIDI5LCA2NiwgNCwgMjQ5LCAyNDEsIDI0MywgMjMzLCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMjMxLCAyNDMsIDExMywgMjksIDY2LCA0LCAyNDksIDE5NSwgMjQyLCA0MiwgMjksIDY2LCA0LCAyNDksIDE4OSwgMjMwLCAKKyAgICAxODEsIDI5LCA2NiwgNCwgMjQ5LCAyMDAsIDIzMCwgMTYxLCAyOSwgNjYsIDQsIDI0OSwgMjEwLCAyMzAsIDEwMSwgMjksIAorICAgIDY2LCA0LCAyNDksIDE4MSwgMjMwLCA4MiwgMjksIDY2LCA0LCAyNDksIDE2OSwgMTczLCAyOSwgNjYsIDQsIDI0OSwgMjAyLCAKKyAgICAyMjksIDIwMSwgMjksIDY2LCA0LCAyNDksIDE3OSwgMjI5LCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAxNzYsIDIyOSwgMjYsIAorICAgIDI5LCA2NiwgNCwgMjQ5LCAxNjUsIDIyOCwgMjA5LCAyOSwgNjYsIDQsIDI0OSwgMTY2LCAxOTIsIDI5LCA2NiwgNCwgMjQ5LCAKKyAgICAyMzIsIDIyNSwgMjAsIDI5LCA2NiwgNCwgMjQ5LCAxNzMsIDIyNCwgMTU1LCAyOSwgNjYsIDQsIDI0OSwgMjMwLCAyMjQsIAorICAgIDgyLCAyOSwgNjYsIDQsIDI0OSwgMjIyLCAyMjMsIDI0NiwgMjksIDY2LCA0LCAyNDksIDI0MywgMjAxLCAyMDEsIDI5LCA2NiwgCisgICAgNCwgMjQ5LCAyMjEsIDIyMiwgMjQwLCAyOSwgNjYsIDQsIDI0OSwgMjE1LCAyMjIsIDEwMCwgMjksIDY2LCA0LCAyNDksIAorICAgIDE5NCwgMjIxLCAxOTEsIDI5LCA2NiwgNCwgMjQ5LCAxOTEsIDIyMSwgODQsIDI5LCA2NiwgNCwgMjQ5LCAyNTAsIDE4NSwgCisgICAgMjksIDY2LCA0LCAyNDksIDE3NCwgMjE5LCAzNCwgMjksIDY2LCA0LCAyNDksIDIwNywgMjE4LCAxNjcsIDI5LCA2NiwgNCwgCisgICAgMjQ5LCAyMzQsIDIxOCwgNjksIDI5LCA2NiwgNCwgMjQ5LCAxOTYsIDIxNywgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMjI5LCAKKyAgICAyMTcsIDEyNiwgMjksIDY2LCA0LCAyNDksIDE2OCwgMjE3LCAxMDYsIDI5LCA2NiwgNCwgMjQ5LCAyMjQsIDIxNywgODgsIAorICAgIDI5LCA2NiwgNCwgMjQ5LCAyMTMsIDIxNywgNzcsIDI5LCA2NiwgNCwgMjQ5LCAxODYsIDIxNiwgMjIwLCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMjE4LCAyMTYsIDE1OCwgMjksIDY2LCA0LCAyNDksIDE5MywgMjE2LCA1NywgMjksIDY2LCA0LCAyNDksIDI1MiwgCisgICAgMjE1LCAyMjcsIDI5LCA2NiwgNCwgMjQ5LCAyMTksIDIxNSwgMTQ1LCAyOSwgNjYsIDQsIDI0OSwgMjE0LCAyMTUsIDM2LCAKKyAgICAyOSwgNjYsIDQsIDI0OSwgMjM3LCAyMTQsIDE3NywgMjksIDY2LCA0LCAyNDksIDIwNSwgMjEyLCAxNjIsIDI5LCA2NiwgNCwgCisgICAgMjQ5LCAyMzMsIDIxMiwgMTMsIDI5LCA2NiwgNCwgMjQ5LCAxODgsIDIxMSwgMTAsIDI5LCA2NiwgNCwgMjQ5LCAxODcsIAorICAgIDIxMCwgMjIsIDI5LCA2NiwgNCwgMjQ5LCAyNDgsIDIwOSwgMTg3LCAyOSwgNjYsIDQsIDI0OSwgMjA5LCAyMDksIDIsIDI5LCAKKyAgICA2NiwgNCwgMjQ5LCAyNDYsIDEzNSwgMjksIDY2LCA0LCAyNDksIDE3NywgMjA3LCAyMDMsIDI5LCA2NiwgNCwgMjQ5LCAxOTIsIAorICAgIDIwNCwgMTExLCAyOSwgNjYsIDQsIDI0OSwgMTcxLCAyMDQsIDYyLCAyOSwgNjYsIDQsIDI0OSwgMjA2LCAyMDQsIDMwLCAyOSwgCisgICAgNjYsIDQsIDI0OSwgMjA0LCAyMDQsIDAsIDI5LCA2NiwgNCwgMjQ5LCAyMjgsIDIwMiwgMTE2LCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMTcyLCAyMDIsIDkyLCAyOSwgNjYsIDQsIDI0OSwgMjI1LCAyMDIsIDE3LCAyOSwgNjYsIDQsIDI0OSwgMjIwLCAyNTQsIDM0LCAKKyAgICAyOSwgNjYsIDQsIDI0OSwgMjAzLCAyNTMsIDE3OCwgMjksIDY2LCA0LCAyNDksIDE2MiwgMjUwLCAzNCwgMjksIDY2LCA0LCAKKyAgICAyNDksIDE3NSwgMjQyLCA5LCAyOSwgNjYsIDQsIDI0OSwgMTU4LCAyNDIsIDgsIDI5LCA2NiwgNCwgMjQ5LCAxOTgsIDIyMSwgCisgICAgMjAsIDI5LCA2NiwgNCwgMjQ5LCAyMTYsIDIxNywgMTg5LCAyOSwgNjYsIDQsIDI0OSwgMTg0LCAyMTcsIDE5MywgMjksIDY2LCAKKyAgICA0LCAyNDksIDE3MCwgMjE2LCAyMTgsIDI5LCA2NiwgNCwgMjQ5LCAyMTIsIDIxNiwgMjE3LCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMTc4LCAyMTUsIDIyNiwgMjksIDY2LCA0LCAyNDksIDE4MCwgMjEwLCAxOSwgMjksIDY2LCA0LCAyNDksIDE2MCwgMjA3LCAKKyAgICAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxNTcsIDEwOCwgMjksIDY2LCAxNiwgMjQ5LCAyMjcsIDI5LCA2NiwgMTYsIDI0OSwgCisgICAgMjI2LCAyOSwgNjYsIDE2LCAyNDksIDIyMywgMjksIDY2LCAxNiwgMjQ5LCAyMTEsIDI5LCA2NiwgMTYsIDI0OSwgMTk5LCAKKyAgICAyOSwgNjYsIDE2LCAyNDksIDE5NywgMjksIDY2LCAxNiwgMjQ5LCAxOTAsIDI5LCA2NiwgMTYsIDI0OSwgMTgzLCAyOSwgNjYsIAorICAgIDE2LCAyNDksIDE4MiwgMjksIDY2LCAxNiwgMjQ5LCAxNjcsIDI5LCA2NiwgMTYsIDI0OSwgMTY0LCAyOSwgNjYsIDE2LCAKKyAgICAyNDksIDE2MywgMjksIDY2LCAxNiwgMjQ5LCAxNjEsIDI5LCA2NiwgMTYsIDI0OSwgMTU5LCAyOSwgNjYsIDEzMywgMjQ5LCAKKyAgICAxNTYsIDIyNSwgMTIyLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTUsIDIwMywgMjUwLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTQsIAorICAgIDI0NCwgNTgsIDI5LCA2NiwgMTMzLCAyNDksIDE1MywgMjQxLCAzMiwgMjksIDY2LCAxMzMsIDI0OSwgMTUyLCAyMjUsIDkzLCAKKyAgICAyOSwgNjYsIDEzMywgMjQ5LCAxNTEsIDIxMSwgMTAxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTAsIDI0MCwgMjE5LCAyOSwgNjYsIAorICAgIDEzMywgMjQ5LCAxNDksIDIxNiwgMTg0LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDgsIDIxMywgNDIsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDE0NywgMjM3LCA2NiwgMjksIDY2LCAxMzMsIDI0OSwgMTQ2LCAyMTEsIDIzNSwgMjksIDY2LCAxMzMsIDI0OSwgCisgICAgMTQ1LCAyNDgsIDIxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNDQsIDI0NSwgMTQ5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDMsIAorICAgIDI0NywgMTc5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDIsIDIwNCwgMzgsIDI5LCA2NiwgMTMzLCAyNDksIDE0MSwgMjQ4LCAKKyAgICAyMjcsIDI5LCA2NiwgMTMzLCAyNDksIDE0MCwgMjIwLCA0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTM5LCAyMTEsIDIwNywgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMTM4LCAyNDUsIDU5LCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTM3LCAyMjksIDI0OSwgMjksIDY2LCAKKyAgICAyMjQsIDQ1LCAyNDksIDEzNiwgMjMwLCAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzUsIDIyMCwgNTUsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDEzNCwgMjA0LCAxMiwgMjksIDY2LCAxMzMsIDI0OSwgMTMzLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTMyLCAyNTAsIAorICAgIDExOSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMSwgMjI0LCAyMzIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMCwgMjQ3LCAKKyAgICAyMDIsIDI5LCA2NiwgMTMzLCAyNDksIDEyOSwgMjM4LCAzMSwgMjksIDY2LCAxMzMsIDI0OSwgMTI4LCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCAxMjcsIDIwMywgMjQxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjYsIDI5LCA2NiwgMTMzLCAyNDksIDEyNSwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgMTI0LCAyMzYsIDUzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjMsIDI5LCA2NiwgMTMzLCAyNDksIDEyMiwgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMTIxLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTE5LCAyMDcsIDE3MiwgMjksIDY2LCAxMzMsIDI0OSwgCisgICAgMTE4LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTcsIDI5LCA2NiwgMTMzLCAyNDksIDExNiwgMjQ2LCAxMCwgMjksIDY2LCAxMzMsIAorICAgIDI0OSwgMTE1LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTQsIDI5LCA2NiwgMTMzLCAyNDksIDExMywgMjM4LCAyMjEsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDExMiwgMjUwLCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDExMSwgMjksIDY2LCAxMzMsIDI0OSwgMTEwLCAKKyAgICAyOSwgNjYsIDEzMywgMjQ5LCAxMDksIDI5LCA2NiwgMTMzLCAyNDksIDEwOCwgMjksIDY2LCAxMzMsIDI0OSwgMTA3LCAyOSwgCisgICAgNjYsIDEzMywgMjQ5LCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDEwNSwgMjksIDY2LCAxMzMsIDI0OSwgMTA0LCAyOSwgNjYsIAorICAgIDEzMywgMjQ5LCAxMDMsIDI5LCA2NiwgMTMzLCAyNDksIDEwMiwgMjI0LCAzNywgMjksIDY2LCAxMzMsIDI0OSwgMTAxLCAyOSwgCisgICAgNjYsIDEzMywgMjQ5LCAxMDAsIDIwOCwgOTUsIDI5LCA2NiwgMTMzLCAyNDksIDk5LCAyOSwgNjYsIDEzMywgMjQ5LCA5OCwgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgOTcsIDI5LCA2NiwgMTMzLCAyNDksIDk2LCAyOSwgNjYsIDEzMywgMjQ5LCA5NSwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgOTQsIDI5LCA2NiwgMTMzLCAyNDksIDkzLCAyOSwgNjYsIDEzMywgMjQ5LCA5MiwgMjksIDY2LCAxMzMsIAorICAgIDI0OSwgOTEsIDI5LCA2NiwgMTMzLCAyNDksIDkwLCAyOSwgNjYsIDEzMywgMjQ5LCA4OSwgMjksIDY2LCAxMzMsIDI0OSwgCisgICAgODgsIDIzNywgMzUsIDI5LCA2NiwgMTMzLCAyNDksIDY3LCAyMzksIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNjQsIDI0OCwgCisgICAgMjA0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OSwgMjExLCAyMTQsIDI5LCA2NiwgMTMzLCAyNDksIDU4LCA0NywgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgNTcsIDI5LCA2NiwgMTMzLCAyNDksIDU2LCAyMTAsIDE1NSwgMjksIDY2LCAxMzMsIDI0OSwgNTUsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDU0LCAyOSwgNjYsIDEzMywgMjQ5LCA1MywgMjA0LCAzNCwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDUyLCAyNDYsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgNTEsIDI0NiwgMTgwLCAyMzksIDEzNCwgMjksIDY2LCAxMzMsIAorICAgIDI0OSwgNTAsIDIwNCwgMzYsIDI5LCA2NiwgMTMzLCAyNDksIDQ5LCAyOSwgNjYsIDEzMywgMjQ5LCA0OCwgMjksIDY2LCAKKyAgICAyMjQsIDQ1LCAyNDksIDQ3LCAyNDMsIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNDYsIDI5LCA2NiwgMTMzLCAyNDksIDQ1LCAKKyAgICAyOSwgNjYsIDEzMywgMjQ5LCA0MywgMjksIDY2LCAxMzMsIDI0OSwgNDIsIDI5LCA2NiwgMTMzLCAyNDksIDQxLCAyOSwgNjYsIAorICAgIDEzMywgMjQ5LCA0MCwgMjQ0LCAxNDcsIDI5LCA2NiwgMTMzLCAyNDksIDM5LCAyOSwgNjYsIDEzMywgMjQ5LCAzOCwgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCAzNSwgMjksIDY2LCAKKyAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDEyMCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDg3LCAyOSwgNjYsIDEzMywgCisgICAgMjA1LCAyNDEsIDI0OSwgODYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKKyAgICAyNDksIDg0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MiwgCisgICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODAsIDI5LCA2NiwgCisgICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc4LCAyOSwgNjYsIDEzMywgMjA1LCAKKyAgICAyNDEsIDI0OSwgNzcsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIAorICAgIDc1LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MywgMjksIAorICAgIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcyLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzEsIDI5LCA2NiwgMTMzLCAKKyAgICAyMDUsIDI0MSwgMjQ5LCA3MCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY5LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIAorICAgIDI0OSwgNjgsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY1LCAKKyAgICAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MiwgMjksIDY2LCAKKyAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDYxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjAsIDI5LCA2NiwgMTMzLCAyMDUsIAorICAgIDI0MSwgMjQ5LCA0NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDM0LCAyNTEsIDEwMiwgMjAzLCAyMzgsIDIxMywgCisgICAgMTMxLCAyMjcsIDExNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMjQzLCA4NSwgMjUxLCAxMDIsIDI0NiwgMTY5LCAKKyAgICA4MiwgMjUxLCAxMDIsIDQyLCAxMDUsIDI1MSwgMTAyLCA0MiwgMTA4LCAyNTEsIDEwMiwgNDIsIDE0NywgMjUxLCAxMDIsIAorICAgIDQyLCAxNDksIDI1MSwgMTAyLCA0MiwgMTcwLCAyNTEsIDEwMiwgNDIsIDE5NSwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMSwgCisgICAgMjUxLCAxMDIsIDQyLCAxOTksIDI1MSwgMTAyLCA0MiwgMjIyLCA2MywgMjUxLCAxMDIsIDQyLCAyMDksIDE1MiwgMjUxLCAKKyAgICAxMDIsIDQyLCAyMDcsIDE1MSwgMjUxLCAxMDIsIDQyLCAyMDksIDUzLCAyNTEsIDEwMiwgNDIsIDIzOSwgMTUzLCAyNTEsIAorICAgIDEwMiwgNDIsIDI0MCwgMTgsIDI1MSwgMTAyLCA0MiwgMjEyLCA3NCwgMjUxLCAxMDIsIDQyLCAyMTMsIDEwNSwgMjUxLCAKKyAgICAxMDIsIDQyLCAyNDEsIDEzNCwgMjUxLCAxMDIsIDQyLCAyMjIsIDU4LCAyNTEsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgCisgICAgMjUxLCAxMDIsIDQyLCAxMjAsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTI2LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIAorICAgIDIzOSwgMTQ3LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMiwgCisgICAgODgsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjQxLCAxNDMsIAorICAgIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAxMTgsIDIwOSwgMzYsIDI1MSwgCisgICAgMTAyLCA0MiwgMTIwLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDEyNiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIAorICAgIDE0NywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDg4LCAKKyAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAyMDksIAorICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDI1MSwgCisgICAgMTAyLCA0MiwgMjA3LCAxNTIsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAKKyAgICAyMzksIDE1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzUsIAorICAgIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQxLCAxMzUsIDIwOSwgCisgICAgMzYsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OSwgMjA5LCAzNiwgMjUxLCAxMDIsIDIwNCwgNTEsIDI0OCwgMjE5LCAyMDYsIAorICAgIDIzNSwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIxNCwgMTcxLCAKKyAgICAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIwOSwgNjEsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjM5LCAKKyAgICAxNDAsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjQyLCA0NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgCisgICAgMjI3LCA5NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjE0LCAxNzEsIDIxMCwgCisgICAgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjA5LCA2MSwgMjEwLCAyNDAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAKKyAgICAyMTcsIDU1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM3LCAxMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgCisgICAgMTE4LCAyNDIsIDY1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDE3MCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE4LCAKKyAgICAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCisgICAgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjUwLCAKKyAgICAzNiwgMjM5LCAyMzMsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDIzNywgMzAsIAorICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgCisgICAgMTIsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDIzNywgMzAsIAorICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCisgICAgMjMzLCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjExLCA4OCwgMzAsIAorICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAKKyAgICAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIAorICAgIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIxMSwgCisgICAgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKKyAgICAzNiwgMjQwLCAxOSwgMjA5LCAzNywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjI0LCA4NSwgCisgICAgMzAsIDI1MSwgMTI5LCAyMzcsIDI5LCAxMTgsIDIxOCwgODYsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTA1LCAzMCwgMjUxLCAKKyAgICAxMjksIDIzNywgMjUsIDEwNSwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMDgsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgCisgICAgMTA4LCAzMCwgMjUxLCAxMjksIDI0NSwgNTYsIDEyMCwgMjQyLCA2NCwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMjAsIAorICAgIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMTcwLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUyLCAzMCwgCisgICAgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUzLCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjA5LCAKKyAgICAxNTIsIDMwLCAyNTEsIDEyOSwgMjI0LCAyMjIsIDIwOSwgMTUyLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgMTUyLCAKKyAgICAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgNTMsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMjQwLCAxOCwgMzAsIDI1MSwgCisgICAgMTI5LCAyMDgsIDYxLCAyNDAsIDE5LCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjQwLCAxOCwgMzAsIAorICAgIDI1MSwgMTI5LCAyMDksIDc2LCAyNDAsIDE4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjM2LCAxMSwgMzAsIDI1MSwgCisgICAgMTI5LCAyMDksIDc2LCAxMjYsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjA4LCA2MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjM5LCAyMzMsIAorICAgIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQ3LCAyMSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjIzLCA2MCwgCisgICAgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTE4LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIAorICAgIDIwOSwgNzYsIDIzOSwgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI0NCwgNDAsIDIzOSwgMjMzLCAyMjQsIDg1LCAzMCwgCisgICAgMjUxLCAxMjksIDIxMSwgNDksIDI0MCwgMTksIDIyNCwgODUsIDMwLCAxMTgsIDE2MiwgNTQsIDMwLCAxMTgsIDE2MiwgMiwgCisgICAgMjUwLCAyNTUsIDE4LCAzMCwgMTIwLCAyMDksIDU4LCA1NCwgMzAsIDEyNiwgMjE3LCA1NCwgNTQsIDMwLCAyMDMsIDUwLCAKKyAgICA1NCwgMzAsIDIwOSwgMjM4LCA1NCwgMzAsIDI0MiwgNjYsIDU0LCAzMCwgMjIwLCA4NywgNTQsIDMwLCAxMjAsIDIyMCwgODYsIAorICAgIDU0LCAzMCwgMTI2LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMTQ3LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMjMzLCAyMjAsIAorICAgIDg2LCA1NCwgMzAsIDIyNCwgMjE2LCA1NCwgMzAsIDIyOCwgMTM5LCAyNDgsIDIxOSwgNTQsIDMwLCAyMjcsIDg4LCA1NCwgCisgICAgMzAsIDIxOSwgMjEzLCA1NCwgMzAsIDIwMywgMTczLCA1NCwgMzAsIDI1MCwgODcsIDU0LCAzMCwgMjUwLCAxMDIsIDU0LCAKKyAgICAzMCwgMjM4LCA3LCA1NCwgMzAsIDIwOCwgMjMsIDI0OCwgMjE5LCA1NCwgMzAsIDIwMiwgODUsIDU0LCAzMCwgMTE4LCAyMTcsIAorICAgIDU2LCA1NCwgMzAsIDIxMiwgMTEzLCA1NCwgMjE1LCAyMTAsIDIxMywgMTAyLCA1NCwgMjE1LCAyMTAsIDIwNiwgMjQ5LCA1NCwgCisgICAgMjE1LCAyMTAsIDIxMywgMTM1LCA1NCwgMjE1LCAyMTAsIDIxMywgMTAwLCA1NCwgMjE1LCAyMTAsIDI0MywgMTgzLCAyMTMsIAorICAgIDEwMCwgNTQsIDIxNSwgMjEwLCAyMTIsIDEzNSwgNTQsIDIxNSwgMjEwLCAyNDQsIDM2LCA1NCwgMjE1LCAyMTAsIDIxNywgCisgICAgMzksIDU0LCAyMTUsIDIxMCwgMjEzLCAxMTksIDU0LCAyMTUsIDIxMCwgMjQyLCAyMywgNTQsIDIxNSwgMjEwLCAyNTAsIDgyLCAKKyAgICA1NCwgMjE1LCAyMTAsIDI0NiwgMjEzLCA1NCwgMzAsIDE2LCAyMDksIDIwOCwgMjE2LCA1OSwgMjE4LCAyMDMsIDI0MywgCisgICAgMTYwLCAyLCAyMTksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgNzgsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIAorICAgIDE2MCwgMiwgMjA5LCAyMTEsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCA0MiwgMjE4LCAyMDMsIDI0MywgCisgICAgMTYwLCAyLCAyNDYsIDEzMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDMsIDI1MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKKyAgICAyMzcsIDM1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOCwgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwOSwgMCwgCisgICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCA0NywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI0MCwgMjE4LCAyMDMsIAorICAgIDI0MywgMTYwLCAyLCAyMTMsIDgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ2LCA0LCAyMTgsIDIwMywgMjQzLCAxNjAsIAorICAgIDIsIDIyNSwgMTIxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNSwgNjgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE0LCAKKyAgICAyMTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI3LCAxNDMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCA1LCAyMTgsIAorICAgIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMjYsIDIxOCwgOTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQzLCA5OCwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDUsIDIzOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTIsIDQ2LCAyMTgsIDIwMywgCisgICAgMjQzLCAxNjAsIDIsIDI0NSwgMjQwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTQ3LCAyMTgsIDIwMywgMjQzLCAKKyAgICAxNjAsIDIsIDIxMiwgMjUxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzNiwgNTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCisgICAgMjM3LCAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMTc0LCAyMjcsIDIxMCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKKyAgICAyNDcsIDE3LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNiwgMTg0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MSwgCisgICAgMTg2LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MiwgNzEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA3LCAxODgsIAorICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCAxNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE4LCA5MiwgMjA4LCA5NSwgCisgICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDUsIDIxMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTksIDkyLCAyMTgsIAorICAgIDIwMywgMjQzLCAxNjAsIDIsIDIxNSwgMjAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTI3LCAyMTgsIDIwMywgCisgICAgMjQzLCAxNjAsIDIsIDIxOSwgMTk0LCAyNDksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOSwgMTkzLCAyMTgsIAorICAgIDIwMywgMjQzLCAxNjAsIDIsIDIzNywgMjU1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxMSwgNTAsIDIxOCwgMjAzLCAKKyAgICAyNDMsIDE2MCwgMiwgNSwgMjUwLCA5LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNCwgNzIsIDI0OCwgMjM4LCAyMTgsIAorICAgIDIwMywgMjQzLCAxNjAsIDIsIDM5LCAyMjAsIDg5LCA5NSwgMjI2LCAxOTcsIDEsIDYzLCAyMjYsIDE5NywgMSwgNzQsIDIyNiwgCisgICAgMTk3LCAxLCAyNDksIDI1NSwgMjI2LCAxOTcsIDEsIDI0OCwgOTksIDIyNiwgMTk3LCAxLCAyMzksIDc1LCAyMjYsIDE5NywgCisgICAgMSwgMjQ1LCA1MSwgMjI2LCAxOTcsIDEsIDc1LCAyMjYsIDE5NywgMSwgMjA0LCAxNDQsIDIyNiwgMTk3LCAxLCAyMDIsIAorICAgIDE1OSwgMjI2LCAxOTcsIDEsIDIwOSwgMTEwLCAyMjYsIDE5NywgMSwgMjMwLCAxODQsIDIyNiwgMTk3LCAxLCAyMzAsIDU0LCAKKyAgICAyMjYsIDE5NywgMSwgMjE3LCAxMzQsIDIyNiwgMTk3LCAxLCAxNTksIDIyNiwgMTk3LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTcsIAorICAgIDEsIDIyMywgMTYzLCAyMjYsIDE5NywgMSwgMjI0LCA4NywgMjI2LCAxOTcsIDEsIDIyMSwgMjI4LCAyMjYsIDE5NywgMSwgCisgICAgNjgsIDIyNiwgMTk3LCAxLCAyMTksIDE4NCwgMjI2LCAxOTcsIDEsIDIyOSwgNDgsIDIyNiwgMTk3LCAxLCAxNDYsIDIyNiwgCisgICAgMTk3LCAxLCAxOTQsIDIyNiwgMTk3LCAxLCAyMTAsIDY5LCAyMjYsIDE5NywgMSwgMjA3LCAyNDQsIDIyNiwgMTk3LCAxLCAKKyAgICAyNTAsIDIzMSwgMjI2LCAxOTcsIDEsIDI0MSwgOTIsIDIyNiwgMTk3LCAxLCAyMzcsIDE3MSwgMjI2LCAxOTcsIDEsIDIwMywgCisgICAgMTk2LCAyNDcsIDMyLCAxLCA2MywgMjQ3LCAzMiwgMSwgMjE5LCAxNzAsIDI0NywgMzIsIDEsIDI0NSwgNTEsIDI0NywgMzIsIAorICAgIDEsIDE1OSwgMjQ3LCAzMiwgMSwgMjA2LCAxNzYsIDI0NywgMzIsIDEsIDE0NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzgsIDI0NywgCisgICAgMzIsIDEsIDI1NCwgMzQsIDI0NywgMzIsIDEsIDIxNywgMTM0LCAyNDcsIDMyLCAxLCAyNDksIDI1NSwgMjQ3LCAzMiwgMSwgCisgICAgMjI2LCAxODUsIDI0NywgMzIsIDEsIDc4LCAyNDcsIDMyLCAxLCAyNDQsIDIxNCwgMjQ3LCAzMiwgMSwgMjEwLCA2OSwgMjQ3LCAKKyAgICAzMiwgMSwgMjEzLCA5MiwgMjQ3LCAzMiwgMSwgMjEzLCA5MSwgMjQ3LCAzMiwgMSwgMTk0LCAyNDcsIDMyLCAxLCAyNDcsIAorICAgIDEyNCwgMjQ3LCAzMiwgMSwgNjgsIDI0NywgMzIsIDEsIDIyMSwgMjI4LCAyNDcsIDMyLCAxLCAyMDMsIDE5NiwgMjQ3LCAzMiwgCisgICAgMSwgMjIzLCAxNjMsIDI0NywgMzIsIDEsIDIwNywgMjQzLCAyNDcsIDMyLCAxLCAyMTksIDE4NCwgMjQ3LCAzMiwgMSwgMjExLCAKKyAgICAxNjcsIDI0NywgMzIsIDEsIDc1LCAyNDcsIDMyLCAxLCA3NCwgMjQ3LCAzMiwgMSwgMjA2LCAxNzMsIDI0NywgMzIsIDEsIAorICAgIDIzMCwgNTQsIDI0NywgMzIsIDEsIDIzMCwgNDUsIDI0NywgMzIsIDEsIDIyMywgMjcsIDI0NywgMzIsIDEsIDIwNiwgMTc4LCAKKyAgICAyNDcsIDMyLCAxLCAyMzksIDc1LCAyNDcsIDMyLCAxLCAyMzksIDEwLCAyNDcsIDMyLCAxLCAyMTEsIDEwOCwgMjQ3LCAzMiwgCisgICAgMSwgMjExLCAxMDcsIDI0NywgMzIsIDEsIDIyMiwgMjA1LCAyNDcsIDMyLCAxLCAyMzEsIDgzLCAyNDcsIDMyLCAxLCAyNDcsIAorICAgIDEyMywgMjQ3LCAzMiwgMSwgMjA3LCAyNDQsIDI0NywgMzIsIDEsIDIwNiwgMTc1LCAyNDcsIDMyLCAxLCAyMTUsIDE4NiwgCisgICAgMjQ3LCAzMiwgMSwgMjI1LCA1OSwgMjQ3LCAzMiwgMSwgMjI1LCA1OCwgMjQ3LCAzMiwgMSwgMjI1LCA1NywgMjQ3LCAzMiwgCisgICAgMSwgMjI1LCA1NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzcsIDI0NywgMzIsIDEsIDI0MSwgMTkwLCAyNDcsIDMyLCAxLCAyMDYsIAorICAgIDE3NCwgODQsIDI0MSwgNDQsIDIwOSwgMzUsIDgyLCA4NCwgMjQxLCA0NCwgMTcsIDEwNSwgODQsIDI0MSwgNDQsIDE3LCAKKyAgICAxMDgsIDg0LCAyNDEsIDQ0LCAxNywgMTQ3LCA4NCwgMjQxLCA0NCwgMTcsIDE0OSwgODQsIDI0MSwgNDQsIDE3LCAxNzAsIAorICAgIDg0LCAyNDEsIDQ0LCAxNywgMTk1LCA4NCwgMjQxLCA0NCwgMTcsIDIxMywgMTExLCA4NCwgMjQxLCA0NCwgMTcsIDE5OSwgCisgICAgODQsIDI0MSwgNDQsIDE3LCAyMjIsIDYzLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgMTUyLCA4NCwgMjQxLCA0NCwgNDIsIAorICAgIDIwNywgMTUxLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgNTMsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNTMsIDg0LCAyNDEsIAorICAgIDQ0LCA0MiwgMjQwLCAxOCwgODQsIDI0MSwgNDQsIDQyLCAyMTIsIDc0LCA4NCwgMjQxLCA0NCwgNDIsIDIxMywgMTA1LCA4NCwgCisgICAgMjQxLCA0NCwgNDIsIDI0MSwgMTM0LCA4NCwgMjQxLCA0NCwgNDIsIDIyMiwgNTgsIDg0LCAyNDEsIDQ0LCA0MiwgMTE4LCAKKyAgICAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDEyMCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjYsIDIzNiwgMTEsIAorICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIAorICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgCisgICAgODQsIDI0MSwgNDQsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAKKyAgICAzOCwgMzcsIDEsIDYzLCAzOCwgMzcsIDEsIDI0OCwgMTYyLCAzOCwgMzcsIDEsIDIyOSwgMjAxLCAzOCwgMzcsIDEsIDI0NCwgCisgICAgNzUsIDM4LCAzNywgMSwgNzQsIDM4LCAzNywgMSwgMjA2LCA1NSwgMzgsIDM3LCAxLCAyMDIsIDkyLCAzOCwgMzcsIDEsIAorICAgIDIzNywgNjcsIDM4LCAzNywgMSwgMjA5LCA5MiwgMzgsIDM3LCAxLCA3NSwgMzgsIDM3LCAxLCAxNzMsIDM4LCAzNywgMSwgCisgICAgMjQxLCAxMjIsIDM4LCAzNywgMSwgMjQxLCAxMDMsIDM4LCAzNywgMSwgMjQxLCA5MiwgMzgsIDM3LCAxLCAyNDEsIDcsIDM4LCAKKyAgICAzNywgMSwgNzgsIDM4LCAzNywgMSwgMjE5LCAzNCwgMzgsIDM3LCAxLCAyMTMsIDQzLCAzOCwgMzcsIDEsIDIyOCwgMjA5LCAKKyAgICAzOCwgMzcsIDEsIDI0MSwgMjgsIDM4LCAzNywgMSwgMjQxLCAxNywgMzgsIDM3LCAxLCAyMDksIDE4NywgMzgsIDM3LCAxLCAKKyAgICA2OCwgMzgsIDM3LCAxLCAyNDEsIDEyNSwgMzgsIDM3LCAxLCAyMTgsIDE5NSwgMzgsIDM3LCAxLCAyMjksIDEyOSwgMzgsIAorICAgIDM3LCAxLCAyNDEsIDE1NCwgMzgsIDM3LCAxLCAyNDEsIDE5LCAzOCwgMzcsIDEsIDI0NiwgMTcwLCAzOCwgMzcsIDEsIDIzMSwgCisgICAgODMsIDM4LCAzNywgMSwgMjA2LCAxNzgsIDM4LCAzNywgMSwgMjQxLCAwLCAzOCwgMzcsIDIyMSwgNDQsIDEwNSwgMzgsIDM3LCAKKyAgICAyMjEsIDQ0LCAxNzAsIDM4LCAzNywgMjIxLCA0NCwgMjA5LCAxNTIsIDM4LCAzNywgMjIxLCA0NCwgMjQwLCAxOCwgMjM4LCAKKyAgICAxNywgMSwgMjUxLCA2NywgMjM4LCAxNywgMSwgMjQ4LCAyNTUsIDIzOCwgMTcsIDEsIDIzOCwgNzgsIDIzOCwgMTcsIDEsIAorICAgIDI0NCwgMTk0LCAyMzgsIDE3LCAxLCAyNTEsIDYzLCAyMzgsIDE3LCAxLCAyMTcsIDExNywgMjM4LCAxNywgMSwgMjMwLCAKKyAgICAxOTYsIDIzOCwgMTcsIDEsIDIzNywgMTUwLCAyMzgsIDE3LCAxLCAyMDksIDQ5LCAyMzgsIDE3LCAxLCAyNDEsIDEzMywgCisgICAgMjM4LCAxNywgMSwgMjI4LCAxNzYsIDIzOCwgMTcsIDEsIDIyOCwgOTAsIDIzOCwgMTcsIDEsIDIyNSwgMTE0LCAyMzgsIDE3LCAKKyAgICAxLCAyMjMsIDYyLCAyMzgsIDE3LCAxLCAyMzAsIDE1NCwgMjM4LCAxNywgMSwgMjA2LCAxOTYsIDIzOCwgMTcsIDEsIDIxOSwgCisgICAgMTQ1LCAyMzgsIDE3LCAxLCAyMjIsIDU4LCAyMzgsIDE3LCAxLCAyMTYsIDE5NiwgMjM4LCAxNywgMSwgMjE0LCAyMTYsIAorICAgIDIzOCwgMTcsIDEsIDIwOSwgMTY2LCAyMzgsIDE3LCAxLCAyMDQsIDEwLCAyMzgsIDE3LCAxLCAyNDAsIDg4LCAyMzgsIDE3LCAKKyAgICAxLCAyMzEsIDg3LCAyMzgsIDE3LCAxLCAyMzUsIDI1MiwgMjM4LCAxNywgMSwgMjE5LCAyMjMsIDIzOCwgMTcsIDEsIDIyMiwgCisgICAgNjQsIDIzNiwgMTEsIDM4LCAyMTgsIDIzNywgMSwgMjUwLCAyMzEsIDM4LCAyMTgsIDIzNywgMSwgMjQ3LCAxNjAsIDM4LCAKKyAgICAyMTgsIDIzNywgMSwgMjM4LCAyNDgsIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM4LCAyMTgsIDIzNywgMSwgNzQsIAorICAgIDM4LCAyMTgsIDIzNywgMSwgMjAyLCA2MiwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NywgMzgsIDIxOCwgMjM3LCAxLCAKKyAgICAyMDIsIDk5LCAzOCwgMjE4LCAyMzcsIDEsIDI0MSwgMjQ1LCAzOCwgMjE4LCAyMzcsIDEsIDc1LCAzOCwgMjE4LCAyMzcsIDEsIAorICAgIDIyOSwgMTUsIDM4LCAyMTgsIDIzNywgMSwgMjI3LCAyMDYsIDM4LCAyMTgsIDIzNywgMSwgMjI0LCAyMzgsIDM4LCAyMTgsIAorICAgIDIzNywgMSwgMjIyLCAyMjgsIDM4LCAyMTgsIDIzNywgMSwgMjA1LCAxNzUsIDM4LCAyMTgsIDIzNywgMSwgMjE5LCAyMiwgCisgICAgMzgsIDIxOCwgMjM3LCAxLCAyMTYsIDEyMSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgMzgsIDIxOCwgMjM3LCAxLCAKKyAgICAyMDksIDI1MCwgMzgsIDIxOCwgMjM3LCAxLCA2OCwgMzgsIDIxOCwgMjM3LCAxLCAyNDYsIDE1MSwgMzgsIDIxOCwgMjM3LCAKKyAgICAxLCAyMTIsIDIzNSwgMzgsIDIxOCwgMjM3LCAxLCAyMTMsIDQ1LCAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgMjE1LCAzOCwgCisgICAgMjE4LCAyMzcsIDEsIDIwMywgMzAsIDM4LCAyMTgsIDIzNywgMSwgNzgsIDM4LCAyMTgsIDIzNywgMSwgMjIwLCAxOCwgMzgsIAorICAgIDIxOCwgMjM3LCAxLCAyNDEsIDE1NCwgMzgsIDIxOCwgMjM3LCAxLCAxNTIsIDM4LCAyMTgsIDIzNywgMSwgMjA3LCAyNTQsIAorICAgIDM4LCAyMTgsIDIzNywgMSwgMjA2LCA0MywgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIDM0LCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgCisgICAgMzIsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCA2NiwgMzgsIDIxOCwgMjM3LCAxLCAyMzEsIDExMCwgMzgsIDIxOCwgMjM3LCAxLCAKKyAgICAyMDIsIDIxMywgMzgsIDIxOCwgMjM3LCAxLCAxOTgsIDM4LCAyMTgsIDIzNywgMSwgMjM1LCAxNzEsIDM5LCAzOCwgMjE4LCAKKyAgICAyMzcsIDEsIDI1MCwgMjMxLCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyNDMsIDEwMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjAyLCA5OSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjIyLCAyMjgsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIxMiwgMTQyLCAKKyAgICAyMDcsIDE5LCAxLCAyNTEsIDYsIDIwNywgMTksIDEsIDI0OCwgMTA2LCAyMDcsIDE5LCAxLCAyMzgsIDIzNiwgMjA3LCAxOSwgCisgICAgMSwgMjI5LCAxNDQsIDIwNywgMTksIDEsIDI0NCwgMzcsIDIwNywgMTksIDEsIDIzNiwgMTM2LCAyMDcsIDE5LCAxLCAyMDQsIAorICAgIDAsIDIwNywgMTksIDEsIDIwMiwgODMsIDIwNywgMTksIDEsIDIzNiwgNDUsIDIwNywgMTksIDEsIDIwOSwgMTMyLCAyMDcsIAorICAgIDE5LCAxLCAyMDIsIDIzNiwgMjA3LCAxOSwgMSwgMjMwLCAyMiwgMjA3LCAxOSwgMSwgMjEyLCAyNTUsIDIwNywgMTksIDEsIAorICAgIDIyOCwgMjQsIDIwNywgMTksIDEsIDIyNCwgMjQ3LCAyMDcsIDE5LCAxLCAyNDMsIDI1MywgMjA3LCAxOSwgMSwgMjIxLCA0MCwgCisgICAgMjA3LCAxOSwgMSwgMjAyLCA2LCAyMDcsIDE5LCAxLCAyMTQsIDI0OCwgMjA3LCAxOSwgMSwgMjUxLCA1OSwgMjA3LCAxOSwgCisgICAgMSwgMjE3LCAxOTEsIDIwNywgMTksIDEsIDIxNSwgMjcsIDIwNywgMTksIDEsIDIxNywgNzAsIDIwNywgMTksIDEsIDIxNiwgCisgICAgMTc1LCAyMDcsIDE5LCAxLCAyMDksIDk2LCAyMDcsIDE5LCAxLCAyMzgsIDExNCwgMjA3LCAxOSwgMSwgMTM1LCAyMDcsIDE5LCAKKyAgICAxLCA3NSwgMjA3LCAxOSwgMSwgNjgsIDIwNywgMTksIDEsIDIxMSwgMTE5LCAyMDcsIDE5LCAyMDMsIDIzOCwgMjQzLCAxNDEsIAorICAgIDM4LCAyMTgsIDIzMSwgMiwgNjMsIDM4LCAyMTgsIDIzMSwgMiwgNzUsIDM4LCAyMTgsIDIzMSwgMiwgNjgsIDM4LCAyMTgsIAorICAgIDIzMSwgMiwgMTczLCAzOCwgMjE4LCAyMzEsIDIsIDIyOCwgMjA5LCAzOCwgMjE4LCAyMzEsIDIsIDIzOSwgOCwgMzgsIDIxOCwgCisgICAgMjMxLCAyLCAyMzcsIDIzMCwgMzgsIDIxOCwgMjMxLCAyLCAyMDMsIDE4MiwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDkyLCAKKyAgICAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTgxLCAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTQxLCAzOCwgMjE4LCAyMzEsIDIsIAorICAgIDIxMCwgMjIsIDM4LCAyMTgsIDIzMSwgMiwgMjA3LCAyMDMsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAyMTIsIDM4LCAyMTgsIAorICAgIDIzMSwgMiwgMjQzLCAyMzMsIDM4LCAyMTgsIDIzMSwgMiwgMjQyLCA0MiwgMzgsIDIxOCwgMjMxLCAyLCAyMDksIDEwOCwgCisgICAgMzgsIDIxOCwgMjMxLCAyLCAxODUsIDM4LCAyMTgsIDIzMSwgMiwgMjQ5LCAzMiwgMzgsIDIxOCwgMjMxLCAyLCAyNDAsIAorICAgIDEwOCwgMzgsIDIxOCwgMjMxLCAyLCAyMDEsIDIwMSwgMzgsIDIxOCwgMjMxLCAyLCAyMjEsIDg0LCAzOCwgMjE4LCAyMzEsIAorICAgIDIsIDE5MiwgMzgsIDIxOCwgMjMxLCAyLCAyMjQsIDE1NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjMsIDI0NiwgMzgsIDIxOCwgCisgICAgMjMxLCAyLCAxOTgsIDM4LCAyMTgsIDIzMSwgMiwgMjA2LCA4NiwgMzgsIDIxOCwgMjMxLCAyLCAyMDUsIDIzMCwgMzgsIAorICAgIDIxOCwgMjMxLCAyLCAyMTYsIDIyMCwgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDE0NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIAorICAgIDExMywgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDM2LCAzOCwgMjE4LCAyMzEsIDIsIDIwMiwgMTE2LCAzOCwgMjE4LCAyMzEsIAorICAgIDIsIDIxMywgOTAsIDM4LCAyMTgsIDIzMSwgMiwgMjExLCAxNjQsIDM4LCAyMTgsIDIzMSwgMiwgMTUyLCAzOCwgMjE4LCAKKyAgICAyMzEsIDIsIDI1MCwgMjgsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNywgMzgsIDIxOCwgMjMxLCAyLCAyNTAsIDI2LCAzOCwgCisgICAgMjE4LCAyMzEsIDIsIDIwMywgMTUzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMTkwLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgCisgICAgMTg5LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgOCwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDE0NCwgMzgsIDIxOCwgMjMxLCAKKyAgICAyMDMsIDIzOCwgMjQzLCAxNDEsIDM4LCAyMTgsIDIzMSwgNDIsIDEwNSwgMzgsIDIxOCwgMjMxLCA0MiwgMTA4LCAzOCwgCisgICAgMjE4LCAyMzEsIDQyLCAyMDksIDE1MiwgMzgsIDIxOCwgMjMxLCA0MiwgMjA3LCAxNTEsIDM4LCAyMTgsIDIzMSwgNDIsIAorICAgIDIzNiwgMTEsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDYsIDEsIAorICAgIDE2MywgNjMsIDI0NCwgMTcsIDYsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNiwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNiwgCisgICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAKKyAgICA3NCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKKyAgICAxNywgNiwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgCisgICAgMjUwLCA4LCAyNDQsIDE3LCA2LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNiwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDYsIDEsIAorICAgIDIwMywgNDksIDI0NCwgMTcsIDYsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA2LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNiwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDYsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDYsIDEsIAorICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA2LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNiwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDYsIAorICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNiwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNiwgCisgICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDYsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDYsIAorICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgNywgMjQ0LCAxNywgNiwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQxLCAyOCwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyNDEsIDkyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyNDAsIDIyMCwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NSwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NCwgMjQ0LCAxNywgNSwgMSwgCisgICAgMTYzLCA2MywgMjQ0LCAxNywgNSwgMSwgMTYzLCAyNTEsIDczLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc4LCAyNDQsIDE3LCA1LCAKKyAgICAxLCAxNjMsIDIyMCwgMTgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIAorICAgIDc0LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNjMsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyNTEsIDczLCAyNDQsIAorICAgIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNTAsIDgsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMTk1LCAyNDQsIDE3LCA1LCAxLCAyMDMsIDIxNywgMjQ0LCAxNywgNSwgMSwgCisgICAgMjAzLCA0OSwgMjQ0LCAxNywgNSwgMSwgMjM3LCAxNzEsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMjMsIDI0NCwgMTcsIDUsIDEsIAorICAgIDI0OCwgMTUwLCAyNDQsIDE3LCA1LCAxLCAyMDksIDE3NiwgMjQ0LCAxNywgNSwgMSwgMjQ0LCA2MSwgMjQ0LCAxNywgNSwgMSwgCisgICAgMjQ2LCAxNjYsIDI0NCwgMTcsIDUsIDEsIDIzMCwgMTU5LCAyNDQsIDE3LCA1LCAxLCAyMjksIDIwOCwgMjQ0LCAxNywgNSwgCisgICAgMSwgMjM4LCAyMTEsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTU0LCAyNDQsIDE3LCA1LCAxLCAyMDYsIDUwLCAyNDQsIDE3LCA1LCAKKyAgICAxLCAyNDAsIDI0MywgMjQ0LCAxNywgNSwgMSwgMjA5LCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxNywgMjQ0LCAxNywgNSwgCisgICAgMSwgMjAyLCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCA3LCAyNDQsIDE3LCA1LCAxLCAyMDIsIDcwLCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDEsIDI4LCAyNDQsIDE3LCA1LCAxLCAyNDEsIDEyMiwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMDMsIDI0NCwgMTcsIDUsIDEsIAorICAgIDI0MSwgOTIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNzgsIDI0NCwgMTcsIDUsIDEsIDIyMCwgNTcsIDI0NCwgMTcsIDUsIDEsIAorICAgIDI0MCwgMjIwLCAyMTMsIDUwLCAxLCAyMTksIDIwLCAyMTMsIDUwLCAxLCAyMDgsIDEzMSwgMjEzLCA1MCwgMSwgMjI5LCA5NiwgCisgICAgMjEzLCA1MCwgMSwgMjQwLCA1MywgMjEzLCA1MCwgMSwgMjA5LCA2NSwgMjEzLCA1MCwgMSwgMjEyLCAxMywgMjEzLCA1MCwgCisgICAgMSwgMjEwLCAxOTAsIDIxMywgNTAsIDEsIDI0NiwgOTAsIDIxMywgNTAsIDEsIDIwMywgNTEsIDIxMywgNTAsIDEsIDIzNiwgCisgICAgOSwgMjEzLCA1MCwgMSwgMjQ4LCA4NSwgMjEzLCA1MCwgMSwgMjQ0LCA3NCwgMjEzLCA1MCwgMSwgMjM4LCAyNTAsIDIxMywgCisgICAgNTAsIDEsIDIwNSwgMTcwLCAyMTMsIDUwLCAxLCAyMDksIDcxLCAyMTMsIDUwLCAxLCAyMDIsIDE1LCAyMTMsIDUwLCAxLCAKKyAgICAyMjUsIDE4LCAyMTMsIDUwLCAxLCAyMzAsIDgwLCAyMTMsIDUwLCAxLCAyMDMsIDI1NCwgMjEzLCA1MCwgMSwgMjM3LCAxNTksIAorICAgIDIxMywgNTAsIDEsIDIyNywgMzMsIDIxMywgNTAsIDEsIDIyNCwgMTExLCAyMTMsIDUwLCAxLCAyMzEsIDkwLCAyMTMsIDUwLCAKKyAgICAxLCAyNDEsIDE1MiwgMjEzLCA1MCwgMSwgMjUwLCA3NSwgMjEzLCA1MCwgMSwgMjUxLCAxMTMsIDIxMywgNTAsIDEsIDIyMCwgCisgICAgMzEsIDIxMywgNTAsIDEsIDIwMywgMjQxLCAyMTMsIDUwLCAxLCAyMTksIDIxMSwgMjEzLCA1MCwgMSwgMjUxLCA3MywgMjEzLCAKKyAgICA1MCwgMSwgMjE1LCAyMjQsIDIxMywgNTAsIDEsIDIyMSwgNDAsIDIxMywgNTAsIDEsIDI0MSwgMTcyLCAyMTMsIDUwLCAxLCAKKyAgICAyNTEsIDc4LCAyMTMsIDUwLCAxLCAyMzUsIDE2MiwgMjEzLCA1MCwgMSwgMjA2LCAyMjQsIDIxMywgNTAsIDEsIDIyMCwgOTUsIAorICAgIDIxMywgNTAsIDEsIDIyMCwgMTAsIDIxMywgNTAsIDEsIDIyMCwgNTUsIDIxMywgNTAsIDEsIDI1MCwgMTEsIDIxMywgNTAsIAorICAgIDEsIDI1MCwgMTIxLCAyMTMsIDUwLCAxLCAyMTksIDI0NCwgMjEzLCA1MCwgMSwgMjUxLCA1NCwgMjEzLCA1MCwgMSwgMjQxLCAKKyAgICAyMSwgMjEzLCA1MCwgMSwgMjUwLCA5OSwgMjEzLCA1MCwgMSwgMjQxLCAxODMsIDIxMywgNTAsIDEsIDIzNSwgMTcwLCAyMTMsIAorICAgIDUwLCAxLCAyMDMsIDE2LCAyMTksIDIyNSwgMSwgMjUxLCAzMCwgMjE5LCAyMjUsIDEsIDI0OSwgMzIsIDIxOSwgMjI1LCAxLCAKKyAgICAyMTAsIDIyLCAyMTksIDIyNSwgMSwgMjMwLCAxODEsIDIxOSwgMjI1LCAxLCAyMDMsIDE4MiwgMjE5LCAyMjUsIDEsIDIyOSwgCisgICAgMTQ0LCAyMTksIDIyNSwgMSwgMjQ0LCA2MCwgMjE5LCAyMjUsIDEsIDIxNiwgMjIwLCAyMTksIDIyNSwgMSwgMjE1LCAzNiwgCisgICAgMjE5LCAyMjUsIDEsIDIxMywgNSwgMjE5LCAyMjUsIDEsIDI0NCwgMSwgMjE5LCAyMjUsIDEsIDI0NywgNywgMjE5LCAyMjUsIAorICAgIDEsIDIzOSwgOCwgMjE5LCAyMjUsIDEsIDI0MCwgMTA4LCAyMTksIDIyNSwgMSwgMjE3LCAxMjQsIDIxOSwgMjI1LCAxLCAKKyAgICAyMzAsIDM4LCAyMTksIDIyNSwgMSwgMjI4LCAxMDgsIDIxOSwgMjI1LCAxLCAyMjQsIDEyNCwgMjE5LCAyMjUsIDEsIDIyMSwgCisgICAgMjQsIDIxOSwgMjI1LCAxLCAyMDQsIDcwLCAyMTksIDIyNSwgMSwgMTUyLCAyMTksIDIyNSwgMSwgMTk4LCAyMTksIDIyNSwgCisgICAgMSwgNjMsIDIxOSwgMjI1LCAxLCA3NCwgMjE5LCAyMjUsIDEsIDc1LCAyMTksIDIyNSwgMSwgNzgsIDIxOSwgMjI1LCAxLCAKKyAgICA2OCwgMjE5LCAyMjUsIDEsIDI1MiwgMjUsIDIxOSwgMjI1LCAxLCAyNDEsIDE2MSwgMjE5LCAyMjUsIDEsIDIyMCwgMTgsIAorICAgIDIxOSwgMjI1LCAxNywgMjAyLCA4NCwgMjE5LCAyMjUsIDE3LCAxMDUsIDIxOSwgMjI1LCAxNywgMTA4LCAyMTksIDIyNSwgCisgICAgMTcsIDE0NywgMjE5LCAyMjUsIDE3LCAxNDksIDIxOSwgMjI1LCAxNywgMTcwLCAyMTksIDIyNSwgMTcsIDE5NSwgMjE5LCAKKyAgICAyMjUsIDE3LCAyMTMsIDExMSwgMjE5LCAyMjUsIDE3LCAxOTksIDIxOSwgMjI1LCAxNywgMjIyLCA2MywgMjQxLCAxMTgsIDEsIAorICAgIDYzLCAyNDEsIDExOCwgMSwgMjQ4LCAxNjIsIDI0MSwgMTE4LCAxLCAyNDYsIDIzOCwgMjQxLCAxMTgsIDEsIDI0NiwgMTcwLCAKKyAgICAyNDEsIDExOCwgMSwgMjQ0LCA3NSwgMjQxLCAxMTgsIDEsIDIyMywgMTcsIDI0MSwgMTE4LCAxLCAyNDMsIDI0OCwgMjQxLCAKKyAgICAxMTgsIDEsIDI0MSwgMTQ1LCAyNDEsIDExOCwgMSwgNzQsIDI0MSwgMTE4LCAxLCAyNDAsIDYwLCAyNDEsIDExOCwgMSwgCisgICAgMjM4LCAxOTAsIDI0MSwgMTE4LCAxLCAyMzgsIDUyLCAyNDEsIDExOCwgMSwgMjM3LCA2NywgMjQxLCAxMTgsIDEsIDc1LCAKKyAgICAyNDEsIDExOCwgMSwgMjMwLCAxNjEsIDI0MSwgMTE4LCAxLCAyMjksIDIwMSwgMjQxLCAxMTgsIDEsIDIyNywgMjM0LCAyNDEsIAorICAgIDExOCwgMSwgMjI3LCA3MywgMjQxLCAxMTgsIDEsIDIyNSwgMjAsIDI0MSwgMTE4LCAxLCAyMjIsIDI0MCwgMjQxLCAxMTgsIAorICAgIDEsIDIwMSwgMjAxLCAyNDEsIDExOCwgMSwgMjIyLCA0MSwgMjQxLCAxMTgsIDEsIDc4LCAyNDEsIDExOCwgMSwgMjE5LCAzNCwgCisgICAgMjQxLCAxMTgsIDEsIDIxNywgMTA2LCAyNDEsIDExOCwgMSwgMjE2LCAxNTgsIDI0MSwgMTE4LCAxLCAyMTUsIDE4MCwgMjQxLCAKKyAgICAxMTgsIDEsIDIxNCwgMTc3LCAyNDEsIDExOCwgMSwgMjEzLCA0MywgMjQxLCAxMTgsIDEsIDIwOSwgMTg3LCAyNDEsIDExOCwgCisgICAgMSwgMjA5LCA5MiwgMjQxLCAxMTgsIDEsIDY4LCAyNDEsIDExOCwgMSwgMjA2LCA1NSwgMjQxLCAxMTgsIDEsIDIwMywgMTc2LCAKKyAgICAyNDEsIDExOCwgMSwgMjAzLCAxMjQsIDI0MSwgMTE4LCAxLCAyMDIsIDkyLCAyNDEsIDExOCwgMSwgMjAyLCA3MSwgMjQxLCAKKyAgICAxMTgsIDEsIDIzOCwgMTA1LCAyNDEsIDExOCwgMSwgMjM4LCAxMTEsIDI0MSwgMTE4LCAxLCAyMjksIDEyOSwgMjQ3LCAxNCwgCisgICAgMjUxLCAzMSwgMSwgMjUxLCAxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDgsIDEwOCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCisgICAgMjM4LCA2OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ0LCAxNDAsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMTcxLCAKKyAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDEwMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQwLCAxODMsIDI0NywgMTQsIAorICAgIDI1MSwgMzEsIDEsIDIwMiwgNjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOSwgMjEzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKKyAgICAyNDYsIDE5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAyMjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgODAsIAorICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMjIzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDkwLCAyNDcsIDE0LCAKKyAgICAyNTEsIDMxLCAxLCAyMjgsIDE3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIzNSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCisgICAgMjAzLCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MiwgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ3LCAzOSwgMjQ3LCAKKyAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgMjQwLCAyNDcsIDE0LCAyNTEsIAorICAgIDMxLCAxLCAyMjYsIDE5NCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjM3LCAxNCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAKKyAgICAxMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI1MCwgMTc3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDEwNywgMjQ3LCAKKyAgICAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NSwgNjMsIDI0NywgMTQsIDI1MSwgMzEsIAorICAgIDEsIDIyNSwgMTAzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTcsIDExMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIxLCAKKyAgICAxNTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDczLCAyNDcsIAorICAgIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE2MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIwLCAzMSwgMjQ3LCAxNCwgMjUxLCAzMSwgCisgICAgMSwgMjA3LCAxMjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgODMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjUzLCAKKyAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDE3NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE5LCA5LCAyNDcsIDE0LCAyNTEsIAorICAgIDMxLCAxLCAyMzgsIDk1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTYsIDE3MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCAKKyAgICA5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA1LCAyMzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOCwgMTkzLCAyNDcsIAorICAgIDE0LCAyNTEsIDMxLCAxLCAyMTIsIDIwNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxOTQsIDI0NywgMTQsIDI1MSwgCisgICAgMzEsIDEsIDI0NSwgNjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAzLCAKKyAgICA1NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE4LCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgNjIsIDI0NywgMTQsIAorICAgIDI1MSwgMzEsIDI0NiwgNDksIDgyLCAyOSwgMzQsIDIsIDI1MSwgMjMxLCAyOSwgMzQsIDIsIDI1MSwgMjMwLCAyOSwgMzQsIAorICAgIDIsIDI1MSwgMjI5LCAyOSwgMzQsIDIsIDI1MSwgMjI4LCAyOSwgMzQsIDIsIDI1MSwgMjI3LCAyOSwgMzQsIDIsIDI1MSwgCisgICAgMjI2LCAyOSwgMzQsIDIsIDI1MSwgMjI1LCAyOSwgMzQsIDIsIDI1MSwgMjI0LCAyOSwgMzQsIDIsIDI1MSwgMjIzLCAyOSwgCisgICAgMzQsIDIsIDI1MSwgMjIyLCAyOSwgMzQsIDIsIDI1MSwgMjIxLCAyOSwgMzQsIDIsIDI1MSwgMjIwLCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMjE5LCAyOSwgMzQsIDIsIDI1MSwgMjE4LCAyOSwgMzQsIDIsIDI1MSwgMjE3LCAyOSwgMzQsIDIsIDI1MSwgMjE2LCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMjE1LCAyOSwgMzQsIDIsIDI1MSwgMjE0LCAyOSwgMzQsIDIsIDI1MSwgMjEzLCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMjEyLCAyOSwgMzQsIDIsIDI1MSwgMjExLCAyOSwgMzQsIDIsIDI1MSwgMjEwLCAyOSwgMzQsIDIsIDI1MSwgMjA5LCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMjA4LCAyOSwgMzQsIDIsIDI1MSwgMjA3LCAyOSwgMzQsIDIsIDI1MSwgMjA2LCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMjA1LCAyOSwgMzQsIDIsIDI1NCwgMjM5LCAyOSwgMzQsIDIsIDI1MSwgMjA0LCAyOSwgMzQsIDIsIDI1MSwgMjAzLCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMjAyLCAyOSwgMzQsIDIsIDI1MSwgMjAxLCAyOSwgMzQsIDIsIDI1MSwgMjAwLCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTk5LCAyOSwgMzQsIDIsIDI1MSwgMTk4LCAyOSwgMzQsIDIsIDI1MSwgMTk3LCAyOSwgMzQsIDIsIDI1MSwgMTk2LCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMTk1LCAyOSwgMzQsIDIsIDI1MSwgMTk0LCAyOSwgMzQsIDIsIDI1MSwgMTkzLCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTkyLCAyOSwgMzQsIDIsIDI1MSwgMTkxLCAyOSwgMzQsIDIsIDI1MSwgMTkwLCAyOSwgMzQsIDIsIDI1MSwgMTg5LCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMTg4LCAyOSwgMzQsIDIsIDI1MSwgMTg3LCAyOSwgMzQsIDIsIDI1MSwgMTg2LCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTg1LCAyOSwgMzQsIDIsIDI1MSwgMTg0LCAyOSwgMzQsIDIsIDI1MSwgMTgzLCAyOSwgMzQsIDIsIDI1MSwgMTgyLCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMTgxLCAyOSwgMzQsIDIsIDI1MSwgMTgwLCAyOSwgMzQsIDIsIDI1MSwgMTc5LCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTc4LCAyOSwgMzQsIDIsIDI1MSwgMTc3LCAyOSwgMzQsIDIsIDI1MSwgMTc2LCAyOSwgMzQsIDIsIDI1MSwgMTc1LCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMTc0LCAyOSwgMzQsIDIsIDI1MSwgMTczLCAyOSwgMzQsIDIsIDI1MSwgMTcyLCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTcxLCAyOSwgMzQsIDIsIDI1MSwgMTcwLCAyOSwgMzQsIDIsIDI1MSwgMTY5LCAyOSwgMzQsIDIsIDI1MSwgMTY4LCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMTY3LCAyOSwgMzQsIDIsIDI1MSwgMTY2LCAyOSwgMzQsIDIsIDI1MSwgMTY1LCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTY0LCAyOSwgMzQsIDIsIDI1MSwgMTYzLCAyOSwgMzQsIDIsIDI1MSwgMTYyLCAyOSwgMzQsIDIsIDI1NCwgMTUyLCAKKyAgICAyOSwgMzQsIDIsIDI1MSwgMTYxLCAyOSwgMzQsIDIsIDI1MSwgMTYwLCAyOSwgMzQsIDIsIDI1NCwgMTE3LCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTU5LCAyOSwgMzQsIDIsIDI1MSwgMTU4LCAyOSwgMzQsIDIsIDI1MSwgMTU3LCAyOSwgMzQsIDIsIDI1MSwgMTU2LCAKKyAgICAyOSwgMzQsIDIsIDI1NCwgMTA0LCAyOSwgMzQsIDIsIDI1MSwgMTU1LCAyOSwgMzQsIDIsIDI1MSwgMTU0LCAyOSwgMzQsIDIsIAorICAgIDI1MSwgMTUzLCAyOSwgMzQsIDIsIDI1MSwgMTUyLCAyOSwgMzQsIDIsIDI1MSwgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTc2LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTc1LCAyOSwgMzQsIDIsIDI1MywgMTc0LCAyOSwgMzQsIDIsIDI1MywgMTczLCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTcyLCAyOSwgMzQsIDIsIDI1MywgMTcxLCAyOSwgMzQsIDIsIDI1MywgMTcwLCAyOSwgMzQsIDIsIDI1MywgMTY5LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTY3LCAyOSwgMzQsIDIsIDI1MywgMTY2LCAyOSwgMzQsIDIsIDI1MywgMTY1LCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTY0LCAyOSwgMzQsIDIsIDI1MywgMTYzLCAyOSwgMzQsIDIsIDI1MywgMTYyLCAyOSwgMzQsIDIsIDI1MywgMTYwLCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTU5LCAyOSwgMzQsIDIsIDI1MywgMTU4LCAyOSwgMzQsIDIsIDI1MywgMTU3LCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTU2LCAyOSwgMzQsIDIsIDI1MywgMTU1LCAyOSwgMzQsIDIsIDI1MywgMTU0LCAyOSwgMzQsIDIsIDI1MywgMTUzLCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTUyLCAyOSwgMzQsIDIsIDI1MywgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTUwLCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTQ5LCAyOSwgMzQsIDIsIDI1MywgMTQ4LCAyOSwgMzQsIDIsIDI1MywgMTQ3LCAyOSwgMzQsIDIsIDI1MywgMTQ2LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTQ1LCAyOSwgMzQsIDIsIDI1MywgMTQ0LCAyOSwgMzQsIDIsIDI1MywgMTQzLCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTQyLCAyOSwgMzQsIDIsIDI1MywgMTQwLCAyOSwgMzQsIDIsIDI1MywgMTM5LCAyOSwgMzQsIDIsIDI1MywgMTM4LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTM0LCAyOSwgMzQsIDIsIDI1MywgMTMzLCAyOSwgMzQsIDIsIDI1MywgMTMyLCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTMxLCAyOSwgMzQsIDIsIDI1MywgMTI3LCAyOSwgMzQsIDIsIDI1MywgMTI2LCAyOSwgMzQsIDIsIDI1MywgMTI1LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTI0LCAyOSwgMzQsIDIsIDI1MywgMTIzLCAyOSwgMzQsIDIsIDI1MywgMTIyLCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTIxLCAyOSwgMzQsIDIsIDI1MywgMTIwLCAyOSwgMzQsIDIsIDI1MywgMTE5LCAyOSwgMzQsIDIsIDI1MywgMTE4LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTE3LCAyOSwgMzQsIDIsIDI1MywgMTE2LCAyOSwgMzQsIDIsIDI1MywgMTE1LCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTE0LCAyOSwgMzQsIDIsIDI1MywgMTEzLCAyOSwgMzQsIDIsIDI1MywgMTEyLCAyOSwgMzQsIDIsIDI1MywgMTExLCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTEwLCAyOSwgMzQsIDIsIDI1MywgMTA5LCAyOSwgMzQsIDIsIDI1MywgMTA4LCAyOSwgMzQsIDIsIAorICAgIDI1MywgMTA3LCAyOSwgMzQsIDIsIDI1MywgMTA2LCAyOSwgMzQsIDIsIDI1MywgMTA1LCAyOSwgMzQsIDIsIDI1MywgMTAzLCAKKyAgICAyOSwgMzQsIDIsIDI1MywgMTAyLCAyOSwgMzQsIDIsIDI1MywgMTAxLCAyOSwgMzQsIDIsIDI1MywgMTAwLCAyOSwgMzQsIDIsIAorICAgIDI1MywgOTksIDI5LCAzNCwgMiwgMjUzLCA5NywgMjksIDM0LCAyLCAyNTMsIDk2LCAyOSwgMzQsIDIsIDI1MywgOTUsIDI5LCAKKyAgICAzNCwgMiwgMjUzLCA5NCwgMjksIDM0LCAyLCAyNTMsIDkyLCAyOSwgMzQsIDIsIDI1MywgOTEsIDI5LCAzNCwgMiwgMjUzLCAKKyAgICA5MCwgMjksIDM0LCAyLCAyNTMsIDU2LCAyOSwgMzQsIDIsIDI1MywgNTQsIDI5LCAzNCwgMiwgMjUzLCA1MiwgMjksIDM0LCAKKyAgICAyLCAyNTMsIDUwLCAyOSwgMzQsIDIsIDI1MywgNDgsIDI5LCAzNCwgMiwgMjUzLCA0NiwgMjksIDM0LCAyLCAyNTMsIDQ0LCAKKyAgICAyOSwgMzQsIDIsIDI1MywgNDIsIDI5LCAzNCwgMiwgMjUzLCA0MCwgMjksIDM0LCAyLCAyNTMsIDM4LCAyOSwgMzQsIDIsIAorICAgIDI1MywgMzYsIDI5LCAzNCwgMiwgMjUzLCAzMywgMjksIDM0LCAyLCAyNTMsIDMxLCAyOSwgMzQsIDIsIDI1MywgMjksIDI5LCAKKyAgICAzNCwgMiwgMjUzLCAyNywgMjksIDM0LCAyLCAyNTMsIDI1LCAyOSwgMzQsIDIsIDI1MywgMjMsIDI5LCAzNCwgMiwgMjUzLCAKKyAgICAyMSwgMjksIDM0LCAyLCAyNTMsIDE5LCAyOSwgMzQsIDIsIDI1MiwgMTkzLCAyOSwgMzQsIDIsIDI1MiwgMTkyLCAyOSwgMzQsIAorICAgIDIsIDI1MiwgMTkxLCAyOSwgMzQsIDIsIDI1MiwgMTkwLCAyOSwgMzQsIDIsIDI1MiwgMTg5LCAyOSwgMzQsIDIsIDI1MiwgCisgICAgMTg4LCAyOSwgMzQsIDIsIDI1MiwgMTg2LCAyOSwgMzQsIDIsIDI1MiwgMTg1LCAyOSwgMzQsIDIsIDI1MiwgMTg0LCAyOSwgCisgICAgMzQsIDIsIDI1MiwgMTgzLCAyOSwgMzQsIDIsIDI1MiwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMTgxLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTc5LCAyOSwgMzQsIDIsIDI1MiwgMTc4LCAyOSwgMzQsIDIsIDI1MiwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgMTczLCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTcxLCAyOSwgMzQsIDIsIDI1MiwgMTcwLCAyOSwgMzQsIDIsIDI1MiwgMTY5LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTY4LCAyOSwgMzQsIDIsIDI1MiwgMTY3LCAyOSwgMzQsIDIsIDI1MiwgMTY2LCAyOSwgMzQsIDIsIDI1MiwgMTY1LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTY0LCAyOSwgMzQsIDIsIDI1MiwgMTYzLCAyOSwgMzQsIDIsIDI1MiwgMTYyLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMTYwLCAyOSwgMzQsIDIsIDI1MiwgMTU5LCAyOSwgMzQsIDIsIDI1MiwgMTU4LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTU3LCAyOSwgMzQsIDIsIDI1MiwgMTU2LCAyOSwgMzQsIDIsIDI1MiwgMTU1LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTU0LCAyOSwgMzQsIDIsIDI1MiwgMTUzLCAyOSwgMzQsIDIsIDI1MiwgMTUyLCAyOSwgMzQsIDIsIDI1MiwgMTUxLCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTUwLCAyOSwgMzQsIDIsIDI1MiwgMTQ5LCAyOSwgMzQsIDIsIDI1MiwgMTQ4LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTQ3LCAyOSwgMzQsIDIsIDI1MiwgMTQ2LCAyOSwgMzQsIDIsIDI1MiwgMTQ1LCAyOSwgMzQsIDIsIDI1MiwgMTQ0LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTQzLCAyOSwgMzQsIDIsIDI1MiwgMTQyLCAyOSwgMzQsIDIsIDI1MiwgMTQxLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTQwLCAyOSwgMzQsIDIsIDI1MiwgMTM5LCAyOSwgMzQsIDIsIDI1MiwgMTM4LCAyOSwgMzQsIDIsIDI1MiwgMTM3LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTM2LCAyOSwgMzQsIDIsIDI1MiwgMTM1LCAyOSwgMzQsIDIsIDI1MiwgMTM0LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTMzLCAyOSwgMzQsIDIsIDI1MiwgMTMyLCAyOSwgMzQsIDIsIDI1MiwgMTMxLCAyOSwgMzQsIDIsIDI1MiwgMTMwLCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTI5LCAyOSwgMzQsIDIsIDI1MiwgMTI4LCAyOSwgMzQsIDIsIDI1MiwgMTI3LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTI2LCAyOSwgMzQsIDIsIDI1MiwgMTI1LCAyOSwgMzQsIDIsIDI1MiwgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMTIzLCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTIyLCAyOSwgMzQsIDIsIDI1MiwgMTIxLCAyOSwgMzQsIDIsIDI1MiwgMTIwLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTE5LCAyOSwgMzQsIDIsIDI1MiwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgMTE2LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTE1LCAyOSwgMzQsIDIsIDI1MiwgMTE0LCAyOSwgMzQsIDIsIDI1MiwgMTEzLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTEyLCAyOSwgMzQsIDIsIDI1MiwgMTExLCAyOSwgMzQsIDIsIDI1MiwgMTEwLCAyOSwgMzQsIDIsIDI1MiwgMTA5LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTA4LCAyOSwgMzQsIDIsIDI1MiwgMTA3LCAyOSwgMzQsIDIsIDI1MiwgMTA2LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMTA1LCAyOSwgMzQsIDIsIDI1MiwgMTA0LCAyOSwgMzQsIDIsIDI1MiwgMTAzLCAyOSwgMzQsIDIsIDI1MiwgMTAyLCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMTAxLCAyOSwgMzQsIDIsIDI1MiwgMTAwLCAyOSwgMzQsIDIsIDI1MiwgOTksIDI5LCAzNCwgMiwgCisgICAgMjUyLCA5OCwgMjksIDM0LCAyLCAyNTIsIDk3LCAyOSwgMzQsIDIsIDI1MiwgOTYsIDI5LCAzNCwgMiwgMjUyLCA5NSwgMjksIAorICAgIDM0LCAyLCAyNTIsIDk0LCAyOSwgMzQsIDIsIDI1MiwgOTMsIDI5LCAzNCwgMiwgMjUyLCA5MiwgMjksIDM0LCAyLCAyNTIsIAorICAgIDkxLCAyOSwgMzQsIDIsIDI1MiwgOTAsIDI5LCAzNCwgMiwgMjUyLCA4OSwgMjksIDM0LCAyLCAyNTIsIDg4LCAyOSwgMzQsIAorICAgIDIsIDI1MiwgODcsIDI5LCAzNCwgMiwgMjUyLCA4NiwgMjksIDM0LCAyLCAyNTIsIDg1LCAyOSwgMzQsIDIsIDI1MiwgODQsIAorICAgIDI5LCAzNCwgMiwgMjUyLCA4MywgMjksIDM0LCAyLCAyNTIsIDgyLCAyOSwgMzQsIDIsIDI1MiwgODEsIDI5LCAzNCwgMiwgCisgICAgMjUyLCA4MCwgMjksIDM0LCAyLCAyNTIsIDc5LCAyOSwgMzQsIDIsIDI1MiwgNzgsIDI5LCAzNCwgMiwgMjUyLCA3NywgMjksIAorICAgIDM0LCAyLCAyNTIsIDc2LCAyOSwgMzQsIDIsIDI1MiwgNzUsIDI5LCAzNCwgMiwgMjUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIAorICAgIDczLCAyOSwgMzQsIDIsIDI1MiwgNzIsIDI5LCAzNCwgMiwgMjUyLCA3MSwgMjksIDM0LCAyLCAyNTIsIDcwLCAyOSwgMzQsIAorICAgIDIsIDI1MiwgNjksIDI5LCAzNCwgMiwgMjUyLCA2OCwgMjksIDM0LCAyLCAyNTIsIDY3LCAyOSwgMzQsIDIsIDI1MiwgNjYsIAorICAgIDI5LCAzNCwgMiwgMjUyLCA2NSwgMjksIDM0LCAyLCAyNTIsIDY0LCAyOSwgMzQsIDIsIDI1MiwgNjMsIDI5LCAzNCwgMiwgCisgICAgMjUyLCA2MiwgMjksIDM0LCAyLCAyNTIsIDYxLCAyOSwgMzQsIDIsIDI1MiwgNjAsIDI5LCAzNCwgMiwgMjUyLCA1OSwgMjksIAorICAgIDM0LCAyLCAyNTIsIDU4LCAyOSwgMzQsIDIsIDI1MiwgNTcsIDI5LCAzNCwgMiwgMjUyLCA1NiwgMjksIDM0LCAyLCAyNTIsIAorICAgIDU1LCA2MywgMjksIDM0LCAyLCAyNTIsIDU0LCAyNDksIDI1NSwgMjksIDM0LCAyLCAyNTIsIDUzLCAyNDUsIDUxLCAyOSwgCisgICAgMzQsIDIsIDI1MiwgNTIsIDc0LCAyOSwgMzQsIDIsIDI1MiwgNTEsIDI0MCwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgNTAsIAorICAgIDIzNywgMTcxLCAyOSwgMzQsIDIsIDI1MiwgNDksIDIzMCwgMTg0LCAyOSwgMzQsIDIsIDI1MiwgNDgsIDIzMCwgNTQsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA0NywgMTU5LCAyOSwgMzQsIDIsIDI1MiwgNDYsIDIyOCwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgNDUsIAorICAgIDIyOCwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgNDQsIDIyOCwgMTE2LCAyOSwgMzQsIDIsIDI1MiwgNDMsIDIyOCwgMTE1LCAyOSwgCisgICAgMzQsIDIsIDI1MiwgNDIsIDIwNCwgMTQ0LCAyOSwgMzQsIDIsIDI1MiwgNDEsIDIwMywgMTk2LCAyOSwgMzQsIDIsIDI1MiwgCisgICAgNDAsIDIwMywgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMzksIDIyMCwgMzYsIDI5LCAzNCwgMiwgMjUyLCAzOCwgMjUxLCAxNDcsIAorICAgIDI5LCAzNCwgMiwgMjUyLCAzNywgMjQ4LCAxOTksIDI5LCAzNCwgMiwgMjUyLCAzNiwgMjQ0LCAxMjIsIDI5LCAzNCwgMiwgCisgICAgMjUyLCAzNSwgMjQwLCAxODIsIDI5LCAzNCwgMiwgMjUyLCAzNCwgMjMwLCAxNjEsIDI5LCAzNCwgMiwgMjUyLCAzMywgMjksIAorICAgIDM0LCAyLCAyNTIsIDMyLCAyOSwgMzQsIDIsIDI1MiwgMzEsIDI5LCAzNCwgMiwgMjUyLCAzMCwgMjksIDM0LCAyLCAyNTIsIAorICAgIDI5LCAyOSwgMzQsIDIsIDI1MiwgMjgsIDI5LCAzNCwgMiwgMjUyLCAyNywgMjksIDM0LCAyLCAyNTIsIDI2LCAyNDUsIDU4LCAKKyAgICA0LCA2MywgMjQ1LCA1OCwgNCwgNzQsIDI0NSwgNTgsIDQsIDc1LCAyNDUsIDU4LCA0LCA3OCwgMjQ1LCA1OCwgNCwgNjgsIAorICAgIDI0NSwgNTgsIDQsIDIzMCwgMTgxLCAyNDUsIDU4LCA0LCAyMzAsIDEwMSwgMjQ1LCA1OCwgNCwgMTczLCAyNDUsIDU4LCA0LCAKKyAgICAyMjksIDIwMSwgMjQ1LCA1OCwgNCwgMjI5LCAxMDAsIDI0NSwgNTgsIDQsIDIyOSwgMjYsIDI0NSwgNTgsIDQsIDIyOCwgCisgICAgMjA5LCAyNDUsIDU4LCA0LCAyMjgsIDExMywgMjQ1LCA1OCwgNCwgMjI3LCAyMzQsIDI0NSwgNTgsIDQsIDIyNywgMTQ4LCAKKyAgICAyNDUsIDU4LCA0LCAyMjcsIDQ5LCAyNDUsIDU4LCA0LCAyMjYsIDIzOSwgMjQ1LCA1OCwgNCwgMTkyLCAyNDUsIDU4LCA0LCAKKyAgICAyMjUsIDIwLCAyNDUsIDU4LCA0LCAyMjQsIDE1NSwgMjQ1LCA1OCwgNCwgMjI0LCA4MiwgMjQ1LCA1OCwgNCwgMjIzLCAyNDYsIAorICAgIDI0NSwgNTgsIDQsIDIwMSwgMjAxLCAyNDUsIDU4LCA0LCAyMjIsIDI0MCwgMjQ1LCA1OCwgNCwgMjIyLCAxMDAsIDI0NSwgCisgICAgNTgsIDQsIDIyMSwgMTkxLCAyNDUsIDU4LCA0LCAyMjEsIDg0LCAyNDUsIDU4LCA0LCAxODUsIDI0NSwgNTgsIDQsIDIxOSwgCisgICAgMzQsIDI0NSwgNTgsIDQsIDIxOCwgMTY3LCAyNDUsIDU4LCA0LCAyMTgsIDY5LCAyNDUsIDU4LCA0LCAyMTcsIDE5MSwgMjQ1LCAKKyAgICA1OCwgNCwgMjE2LCAyMjAsIDI0NSwgNTgsIDQsIDIxNiwgMTU4LCAyNDUsIDU4LCA0LCAyMTYsIDU3LCAyNDUsIDU4LCA0LCAKKyAgICAyMTUsIDIyNywgMjQ1LCA1OCwgNCwgMjE1LCAxNDUsIDI0NSwgNTgsIDQsIDIxNSwgMzYsIDI0NSwgNTgsIDQsIDIxNCwgCisgICAgMTc3LCAyNDUsIDU4LCA0LCAyMTIsIDE2MiwgMjQ1LCA1OCwgNCwgMjEyLCAxMywgMjQ1LCA1OCwgNCwgMjExLCAxMCwgMjQ1LCAKKyAgICA1OCwgNCwgMjEwLCAyMiwgMjQ1LCA1OCwgNCwgMjA5LCAxODcsIDI0NSwgNTgsIDQsIDIwOSwgMiwgMjQ1LCA1OCwgNCwgCisgICAgMTM1LCAyNDUsIDU4LCA0LCAyMDcsIDIwMywgMjQ1LCA1OCwgNCwgMjA0LCAxMTEsIDI0NSwgNTgsIDQsIDIwNCwgNjIsIAorICAgIDI0NSwgNTgsIDQsIDIwNCwgMzAsIDI0NSwgNTgsIDQsIDIwNCwgMCwgMjQ1LCA1OCwgNCwgMjAzLCAxODIsIDI0NSwgNTgsIAorICAgIDQsIDIwMywgMTc2LCAyNDUsIDU4LCA0LCAyMDIsIDExNiwgMjQ1LCA1OCwgNCwgMjAyLCAxNywgMjMxLCA1MSwgMjUwLCAKKyAgICAxMzAsIDEsIDI1MSwgMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDgsIDEwNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAorICAgIDIzOCwgNjcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDQsIDE3NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIzNywgNjcsIAorICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDQsIDcwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjAyLCA5NSwgMjMxLCA1MSwgCisgICAgMjUwLCAxMzAsIDEsIDIzNywgMTksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDEyOCwgMjMxLCA1MSwgMjUwLCAxMzAsIAorICAgIDEsIDIwMiwgMjM1LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI5LCAyNTAsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjgsIAorICAgIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI0LCAyNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjEsIDQwLCAyMzEsIAorICAgIDUxLCAyNTAsIDEzMCwgMSwgMjE0LCAyNDksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNTAsIDMsIDIzMSwgNTEsIDI1MCwgCisgICAgMTMwLCAxLCAyMTksIDM0LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE1LCAyNiwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAorICAgIDIxNywgNjksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTYsIDkxLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjEyLCAyNTUsIAorICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDIwMSwgMjMxLCA1MSwgMjUwLCAxMzAsIDIxNCwgMTY4LCA1NCwgMjMxLCA1MSwgCisgICAgMjUwLCAxMzAsIDQyLCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTA4LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIAorICAgIDE0NywgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MiwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDcsIDE1MSwgCisgICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMDksIDM2LCAKKyAgICAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyMTksIDEzNCwgMSwgMjUxLCAyOCwgMjE5LCAxMzQsIAorICAgIDEsIDI0OCwgMTA1LCAyMTksIDEzNCwgMSwgMjM4LCA2NywgMjE5LCAxMzQsIDEsIDI0NCwgMTc3LCAyMTksIDEzNCwgMSwgCisgICAgMjM3LCA2NywgMjE5LCAxMzQsIDEsIDIwNCwgNzAsIDIxOSwgMTM0LCAxLCAyMDIsIDk1LCAyMTksIDEzNCwgMSwgMjM3LCAKKyAgICAxOSwgMjE5LCAxMzQsIDEsIDIwOSwgMTI4LCAyMTksIDEzNCwgMSwgMjAyLCAyMzUsIDIxOSwgMTM0LCAxLCAyMjksIDI1MCwgCisgICAgMjE5LCAxMzQsIDEsIDIyOCwgMTksIDIxOSwgMTM0LCAxLCAyMjQsIDI0NywgMjE5LCAxMzQsIDEsIDQ2LCAyMjEsIDQwLCAKKyAgICAyMTksIDEzNCwgMSwgMjIxLCA0MCwgMjE5LCAxMzQsIDEsIDIxNCwgMjQ5LCAyMTksIDEzNCwgMSwgMjUwLCAzLCAyMTksIAorICAgIDEzNCwgMSwgMjE5LCAzNCwgMjE5LCAxMzQsIDEsIDIxNSwgMjYsIDIxOSwgMTM0LCAxLCAyMTcsIDY5LCAyMTksIDEzNCwgMSwgCisgICAgMjE2LCA5MSwgMjE5LCAxMzQsIDEsIDIxMiwgMjU1LCAyMTksIDEzNCwgMSwgMjA5LCAyMDEsIDIxOSwgMTM0LCAyMjcsIAorICAgIDIxNywgMjM5LCAyMTIsIDIxOSwgMTM0LCAyMTYsIDExLCAyMzksIDIxMiwgMjE5LCAxMzQsIDQyLCAxMDUsIDIxOSwgMTM0LCAKKyAgICA0MiwgMTA4LCAyMTksIDEzNCwgNDIsIDE0NywgMjE5LCAxMzQsIDQyLCAxNDksIDIxOSwgMTM0LCA0MiwgMTcwLCAyMTksIAorICAgIDEzNCwgNDIsIDIwOSwgMTUyLCAyMTksIDEzNCwgNDIsIDIwNywgMTUxLCAyMjMsIDEwMiwgMSwgNDYsIDI1MSwgMjgsIDIyMywgCisgICAgMTAyLCAxLCAyNTEsIDI4LCAyMjMsIDEwMiwgMSwgNDYsIDI0OCwgMTA1LCAyMjMsIDEwMiwgMSwgMjQ4LCAxMDUsIDIyMywgCisgICAgMTAyLCAxLCAyMzgsIDY3LCAyMjMsIDEwMiwgMSwgMjQ0LCAxNzcsIDIyMywgMTAyLCAxLCA0NiwgMjM3LCA2NywgMjIzLCAKKyAgICAxMDIsIDEsIDIzNywgNjcsIDIyMywgMTAyLCAxLCAyMDQsIDcwLCAyMjMsIDEwMiwgMSwgMjAyLCA5NSwgMjIzLCAxMDIsIDEsIAorICAgIDIzNywgMTksIDIyMywgMTAyLCAxLCAyMDksIDEyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIAorICAgIDIwMiwgMjM1LCAyMjMsIDEwMiwgMSwgNDYsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgMjI5LCAyNTAsIDIyMywgMTAyLCAxLCAKKyAgICA0NiwgMjI4LCAxOSwgMjIzLCAxMDIsIDEsIDIyOCwgMTksIDIyMywgMTAyLCAxLCA0NiwgMjI0LCAyNDcsIDIyMywgMTAyLCAKKyAgICAxLCAyMjQsIDI0NywgMjIzLCAxMDIsIDEsIDQ2LCAyMjEsIDQwLCAyMjMsIDEwMiwgMSwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIAorICAgIDIxNCwgMjQ5LCAyMjMsIDEwMiwgMSwgMjUwLCAzLCAyMjMsIDEwMiwgMSwgMjE5LCAzNCwgMjIzLCAxMDIsIDEsIDIxNSwgCisgICAgMjYsIDIyMywgMTAyLCAxLCAyMTcsIDY5LCAyMjMsIDEwMiwgMSwgMjE2LCA5MSwgMjIzLCAxMDIsIDEsIDQ2LCAyMTIsIAorICAgIDI1NSwgMjIzLCAxMDIsIDEsIDIxMiwgMjU1LCAyMjMsIDEwMiwgMSwgMjA5LCAyMDEsIDIyMywgMTAyLCA0MiwgMTA1LCAKKyAgICAyMjMsIDEwMiwgNDIsIDEwOCwgMjIzLCAxMDIsIDQyLCAxNDcsIDIyMywgMTAyLCA0MiwgMTQ5LCAyMjMsIDEwMiwgMjQ1LCAKKyAgICAxMTYsIDQyLCAxNDksIDIyMywgMTAyLCA0MiwgMTcwLCAyMjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAyMjMsIDEwMiwgNDIsIAorICAgIDIwNywgMTUxLCAyMjMsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgMjM3LCA3OCwgMSwgMjUxLCAyOCwgMjM3LCA3OCwgMSwgCisgICAgMjQ4LCAxMDUsIDIzNywgNzgsIDEsIDIzOCwgNjcsIDIzNywgNzgsIDEsIDI0NCwgMTc2LCAyMzcsIDc4LCAxLCAyMzcsIDY3LCAKKyAgICAyMzcsIDc4LCAxLCAyMDQsIDcwLCAyMzcsIDc4LCAxLCAyMDIsIDk0LCAyMzcsIDc4LCAxLCAyMzcsIDE5LCAyMzcsIDc4LCAKKyAgICAxLCAyMDksIDEyOCwgMjM3LCA3OCwgMSwgMjAyLCAyMzUsIDIzNywgNzgsIDEsIDIyOSwgMjUwLCAyMzcsIDc4LCAxLCAyMjgsIAorICAgIDE5LCAyMzcsIDc4LCAxLCAyMjQsIDI0NywgMjM3LCA3OCwgMSwgMjIxLCA0MCwgMjM3LCA3OCwgMSwgMjE0LCAyNDksIDIzNywgCisgICAgNzgsIDEsIDI1MCwgMiwgMjM3LCA3OCwgMSwgMjE5LCAzNCwgMjM3LCA3OCwgMSwgMjE1LCAyNiwgMjM3LCA3OCwgMSwgMjE3LCAKKyAgICA2OSwgMjM3LCA3OCwgMSwgMjEyLCAyNTUsIDIzNywgNzgsIDEsIDIwOSwgMjAxLCAyMzcsIDc4LCA0MiwgMTA1LCAyMzcsIAorICAgIDc4LCA0MiwgMTcwLCAyMzcsIDc4LCA0MiwgMjA5LCAxNTIsIDIzNywgNzgsIDQyLCAyMDcsIDE1MSwgMjM3LCA3OCwgNDIsIAorICAgIDExOCwgMjM2LCAxMSwgMjE4LCAxNzgsIDEsIDI1MSwgMjUsIDIxOCwgMTc4LCAxLCAyNDgsIDEwOCwgMjE4LCAxNzgsIDEsIAorICAgIDIzOCwgMjM3LCAyMTgsIDE3OCwgMSwgMjQ0LCAzOSwgMjE4LCAxNzgsIDEsIDIzNywgNjcsIDIxOCwgMTc4LCAxLCAyMDQsIAorICAgIDc3LCAyMTgsIDE3OCwgMSwgMjAyLCAxMDksIDIxOCwgMTc4LCAxLCAyMzcsIDIxLCAyMTgsIDE3OCwgMSwgMjA5LCAxMzIsIAorICAgIDIxOCwgMTc4LCAxLCAyMDIsIDIzNiwgMjE4LCAxNzgsIDEsIDIzMCwgMjIsIDIxOCwgMTc4LCAxLCAyMjgsIDI1LCAyMTgsIAorICAgIDE3OCwgMSwgMjI0LCAyNDcsIDIxOCwgMTc4LCAxLCAyMjEsIDQwLCAyMTgsIDE3OCwgMSwgMjEzLCAxMzcsIDIxOCwgMTc4LCAKKyAgICAxLCAyNTEsIDU5LCAyMTgsIDE3OCwgMSwgMjE5LCAzNCwgMjE4LCAxNzgsIDEsIDIxNSwgMjcsIDIxOCwgMTc4LCAxLCAyMTcsIAorICAgIDc0LCAyMTgsIDE3OCwgMSwgMjE1LCAyMDAsIDIxOCwgMTc4LCAxLCAyMTIsIDI1NSwgMjE4LCAxNzgsIDEsIDIwOSwgMjA3LCAKKyAgICAyMTgsIDE3OCwgNDIsIDEwNSwgMjE4LCAxNzgsIDQyLCAyMDksIDE1MiwgMjE4LCAxNzgsIDQyLCAyMDcsIDE1MSwgMjE4LCAKKyAgICAxNzgsIDQyLCAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCA0MiwgMTA4LCAyMTgsIDE3OCwgNDIsIDE0NywgMjE4LCAxNzgsIAorICAgIDIwMywgMjM4LCAyMTMsIDEzMCwgMjI2LCAxOTYsIDEsIDYzLCAyMjYsIDE5NiwgMSwgMjQ5LCAyNTUsIDIyNiwgMTk2LCAxLCAKKyAgICAyMzksIDc1LCAyMjYsIDE5NiwgMSwgMjQ1LCA1MSwgMjI2LCAxOTYsIDEsIDc0LCAyMjYsIDE5NiwgMSwgMjA2LCAxNjQsIAorICAgIDIyNiwgMTk2LCAxLCA3NSwgMjI2LCAxOTYsIDEsIDIwMywgMTI0LCAyMjYsIDE5NiwgMSwgMjMwLCA1NCwgMjI2LCAxOTYsIAorICAgIDEsIDE1OSwgMjI2LCAxOTYsIDEsIDIyNiwgMTg1LCAyMjYsIDE5NiwgMSwgMjIzLCAxNjMsIDIyNiwgMTk2LCAxLCA3OCwgCisgICAgMjI2LCAxOTYsIDEsIDE0NiwgMjI2LCAxOTYsIDEsIDIxMSwgMTY3LCAyMjYsIDE5NiwgMSwgMjEwLCA2OSwgMjI2LCAxOTYsIAorICAgIDEsIDY4LCAyMjYsIDE5NiwgMSwgMjQwLCAxNzQsIDIyNiwgMTk2LCAxLCAyMTcsIDEzNCwgMjI2LCAxOTYsIDEsIDE5NCwgCisgICAgMjI2LCAxOTYsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NiwgMSwgMjUwLCAyMzEsIDIyNiwgMTk2LCAxLCAyNDEsIDkyLCAyMjYsIAorICAgIDE5NiwgMSwgMjI2LCAxOTksIDIyNiwgMTk2LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTYsIDEsIDI0NywgMTI1LCAyMjYsIDE5NiwgCisgICAgMjA4LCA4MiwgODIsIDEyOSwgMjM2LCAyNTMsIDEsIDYzLCAxMjksIDIzNiwgMjUzLCAxLCA3NCwgMTI5LCAyMzYsIDI1MywgCisgICAgMSwgNzUsIDEyOSwgMjM2LCAyNTMsIDEsIDc4LCAxMjksIDIzNiwgMjUzLCAxLCAxOTgsIDEyOSwgMjM2LCAyNTMsIDEsIAorICAgIDIwNCwgMTExLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMyLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMxLCAxMjksIDIzNiwgCisgICAgMjUzLCAxLCAxODUsIDEyOSwgMjM2LCAyNTMsIDEsIDE5MiwgMTI5LCAyMzYsIDI1MywgMSwgMjAxLCAyMDEsIDEyOSwgMjM2LCAKKyAgICAyNTMsIDEsIDIyMywgMTEwLCAxMjksIDIzNiwgMjUzLCAxLCAyMjIsIDI0MCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyMzksIAorICAgIDEyOSwgMjM2LCAyNTMsIDEsIDIxNiwgMjIwLCAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIxOSwgMTI5LCAyMzYsIDI1MywgMSwgCisgICAgMjI4LCAxMTMsIDEyOSwgMjM2LCAyNTMsIDEsIDIyOSwgMTQ0LCAxMjksIDIzNiwgMjUzLCAxLCAyMzcsIDEyLCAxMjksIAorICAgIDIzNiwgMjUzLCAxLCAyMTUsIDM2LCAxMjksIDIzNiwgMjUzLCAxLCAyMTUsIDM1LCAxMjksIDIzNiwgMjUzLCAxLCAyMTQsIAorICAgIDE3NywgMTI5LCAyMzYsIDI1MywgMSwgMTczLCAxMjksIDIzNiwgMjUzLCAxLCAyMTcsIDEyNiwgMTI5LCAyMzYsIDI1MywgMSwgCisgICAgMjEwLCAyMiwgMTI5LCAyMzYsIDI1MywgMSwgMjEwLCAyMSwgMTI5LCAyMzYsIDI1MywgMSwgMjA5LCAxODcsIDEyOSwgMjM2LCAKKyAgICAyNTMsIDEsIDIwOSwgMTg2LCAxMjksIDIzNiwgMjUzLCAxLCAxMzUsIDEyOSwgMjM2LCAyNTMsIDEsIDI0NCwgMjEyLCAxMjksIAorICAgIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjQsIDEyOSwgMjM2LCAyNTMsIDE2LCAyMDUsIDIyMywgMTI5LCAxOTEsIDEsIDYzLCAKKyAgICAxMjksIDE5MSwgMSwgNzQsIDEyOSwgMTkxLCAxLCA3NSwgMTI5LCAxOTEsIDEsIDc4LCAxMjksIDE5MSwgMSwgMTk4LCAxMjksIAorICAgIDE5MSwgMSwgMjA0LCAxMTEsIDEyOSwgMTkxLCAxLCAyNDksIDMyLCAxMjksIDE5MSwgMSwgMTg1LCAxMjksIDE5MSwgMSwgCisgICAgMTkyLCAxMjksIDE5MSwgMSwgMjAxLCAyMDEsIDEyOSwgMTkxLCAxLCAyMjIsIDI0MCwgMTI5LCAxOTEsIDEsIDIxNiwgMjIwLCAKKyAgICAxMjksIDE5MSwgMSwgMjI4LCAxMTMsIDEyOSwgMTkxLCAxLCAyMjksIDE0NCwgMTI5LCAxOTEsIDEsIDIzNywgMTIsIDEyOSwgCisgICAgMTkxLCAxLCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjUwLCAxMjYsIDIxNSwgMzYsIDEyOSwgMTkxLCAxLCAyMTQsIDE3NywgCisgICAgMTI5LCAxOTEsIDEsIDE3MywgMTI5LCAxOTEsIDEsIDIxNywgMTI2LCAxMjksIDE5MSwgMSwgMjEwLCAyMiwgMTI5LCAxOTEsIAorICAgIDEsIDIwOSwgMTg3LCAxMjksIDE5MSwgMSwgMTM1LCAxMjksIDE5MSwgMSwgMjQ0LCAyMTIsIDEyOSwgMTkxLCAyMzksIDEzOCwgCisgICAgMjQxLCAxMTMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDEyOSwgMTkxLCAyMjcsIDM2LCAKKyAgICAyMTUsIDIzMywgMTI5LCAxOTEsIDIyNywgMzYsIDIzMSwgNTYsIDEyOSwgMTkxLCA0MiwgMTA1LCAxMjksIDE5MSwgNDIsIAorICAgIDEwOCwgMTI5LCAxOTEsIDQyLCAxNDcsIDEyOSwgMTkxLCA0MiwgMTQ5LCAxMjksIDE5MSwgNDIsIDE3MCwgMTI5LCAxOTEsIAorICAgIDQyLCAxOTUsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTEsIDEyOSwgMTkxLCA0MiwgMTk5LCAxMjksIDE5MSwgNDIsIDIyMiwgCisgICAgNjMsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTIsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTEsIDEyOSwgMTkxLCA0MiwgMjA5LCAKKyAgICA1MywgMTI5LCAxOTEsIDQyLCAyMzksIDE1MywgMTI5LCAxOTEsIDQyLCAyNDAsIDE4LCAxMjksIDE5MSwgNDIsIDIxMiwgNzQsIAorICAgIDEyOSwgMTkxLCA0MiwgMjEzLCAxMDUsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDEyMCwgCisgICAgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjYsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAorICAgIDEyOSwgMTkxLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMTI5LCAKKyAgICAxOTEsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMTI5LCAxOTEsIAorICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDExOCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIDIwOSwgCisgICAgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMDksIDM2LCAxMjksIAorICAgIDE5MSwgNDIsIDIzOSwgMjMzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCisgICAgMjEzLCAxMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCAKKyAgICA2NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDcsIDE1MiwgCisgICAgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDU0LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTU0LCAyMDksIDM2LCAKKyAgICAxMjksIDE5MSwgNDIsIDI0MCwgMTksIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEyLCA3NSwgMjA5LCAzNiwgMTI5LCAxOTEsIAorICAgIDQyLCAyMTMsIDEwNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDEzNSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAKKyAgICAyMjIsIDU5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIAorICAgIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgCisgICAgMTQ3LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIAorICAgIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTIsIDIwOSwgCisgICAgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCA2NCwgMjM2LCAKKyAgICAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIwNywgMTU3LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyMCwgCisgICAgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTI2LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMzksIAorICAgIDE0NywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAKKyAgICAxMzgsIDIxMiwgODgsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyMDcsIDE1NiwgMTI5LCAxOTEsIAorICAgIDIzOSwgMTM4LCAyNDEsIDE0MywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjIyLCA2NCwgMjA3LCAxNTYsIDEyOSwgCisgICAgMTkxLCAyMzksIDEzOCwgMjA5LCAxNTMsIDIwNywgMTU2LCAyMjksIDEzMSwgMSwgNjMsIDIyOSwgMTMxLCAyMiwgMiwgNzUsIAorICAgIDIyOSwgMTMxLCAyMiwgMiwgNjgsIDIyOSwgMTMxLCAyMiwgMiwgMTI1LCAxNDYsIDIyOSwgMTMxLCAyMiwgMiwgNzQsIDIyOSwgCisgICAgMTMxLCAyMiwgMiwgNzgsIDIyOSwgMTMxLCAyMiwgMjI3LCAxOTYsIDgyLCAyMjksIDEzMSwgMiwgNTIsIDIxNSwgMjUzLCAKKyAgICA1NiwgMjI5LCAxMzEsIDIsIDI1MCwgMTgwLCAyMjksIDEzMSwgMiwgMjA1LCAxOTksIDIyOSwgMTMxLCAxLCAxNzMsIDIyOSwgCisgICAgMTMxLCAxLCAyMjksIDE0NCwgMjI5LCAxMzEsIDEsIDIzOSwgOCwgMjI5LCAxMzEsIDEsIDIzOCwgMTE5LCAyMjksIDEzMSwgCisgICAgMSwgMjQ3LCA5MiwgMjI5LCAxMzEsIDEsIDI0NiwgMTk5LCAyMjksIDEzMSwgMSwgMjMwLCAxODEsIDIyOSwgMTMxLCAxLCAKKyAgICAyMjEsIDExLCAyMjksIDEzMSwgMSwgMjA3LCAyNDEsIDIyOSwgMTMxLCAxLCAyMDcsIDIyOSwgMjI5LCAxMzEsIDEsIDI0NCwgCisgICAgMTIwLCAyMjksIDEzMSwgMSwgMjQ0LCAxMDQsIDIyOSwgMTMxLCAxLCAyMjEsIDIyNywgMjI5LCAxMzEsIDEsIDIxMCwgMjIsIAorICAgIDIyOSwgMTMxLCAxLCAyMDksIDEwOCwgMjI5LCAxMzEsIDEsIDI0NCwgMjEyLCAyMjksIDEzMSwgMSwgMjQ0LCAxLCAyMjksIAorICAgIDEzMSwgMSwgMjAxLCAyMDEsIDIyOSwgMTMxLCAxLCAxODUsIDIyOSwgMTMxLCAxLCAyMTgsIDIwOCwgMjI5LCAxMzEsIDEsIAorICAgIDI0OSwgMzIsIDIyOSwgMTMxLCAxLCAyNDgsIDk4LCAyMjksIDEzMSwgMSwgMTkyLCAyMjksIDEzMSwgMSwgMTk4LCAyMjksIAorICAgIDEzMSwgMSwgMjE2LCAyMjAsIDIyOSwgMTMxLCAxLCAyMjgsIDExMywgMjI5LCAxMzEsIDEsIDIwNiwgODYsIDIyOSwgMTMxLCAKKyAgICAxLCAyMTMsIDkwLCAyMjksIDEzMSwgMSwgMjExLCAxNjQsIDIyOSwgMTMxLCAxLCAyMTUsIDM2LCAyMjksIDEzMSwgMSwgCisgICAgMjAyLCAxMTYsIDIyOSwgMTMxLCAxLCAxNTIsIDIyOSwgMTMxLCAxLCAyMjksIDQ3LCAyMjksIDEzMSwgMSwgMjA3LCAyMDksIAorICAgIDIyOSwgMTMxLCAyLCAyNDgsIDIzMSwgNTUsIDIyOSwgMTMxLCAyLCAyNDcsIDEzLCAyMjksIDEzMSwgMiwgNzAsIDU2LCAKKyAgICAyMjksIDEzMSwgMjA1LCAyMDQsIDIyOSwgMTMxLCAxNywgMTA1LCAyMjksIDEzMSwgMTcsIDEwOCwgMjI5LCAxMzEsIDE3LCAKKyAgICAxNDcsIDIyOSwgMTMxLCAxNywgMTQ5LCAyMjksIDEzMSwgNDIsIDIwOSwgMTUyLCAyMjksIDEzMSwgNDIsIDIwNywgMTUxLCAKKyAgICAyMjksIDEzMSwgNDIsIDExOCwgMjM2LCAxMSwgMjI5LCAxMzEsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTMxLCAyMTcsIAorICAgIDE3OSwgMjQzLCA4NSwgMjI5LCAxMzEsIDIxNywgMTc5LCA1LCAyNDYsIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NiwgCisgICAgNjEsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ1LCAxMzksIDE0MiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjUsIDExNiwgMjI5LCAKKyAgICAxMzEsIDIxNywgMTc5LCAyMjcsIDUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ0LCAxNjYsIDIyOSwgMTMxLCAyMTcsIDE3OSwgCisgICAgNTIsIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIDIyNywgMTA4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMzcsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjgsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMzcsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjQsIDI0NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjE3LCA2OSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA0LCA3MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjEyLCAyNTUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNiwgOTEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDI0OCwgMTA1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDIwMSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjE0LCAyMjUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOSwgMjUwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMjEsIDQwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDEyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjE1LCAyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjE0LCAyNDksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDI0MCwgNjAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDI1MCwgMiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQzLCAyNTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIzOCwgNjcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0NCwgMTc3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMzgsIDEwNywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAxMjgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIwMiwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjUxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMDIsIDIzNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCA5NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjA5LCA3MywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIAorICAgIDI0MCwgMTgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDE0MSwgMjMxLCAzMSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgCisgICAgNDMsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjgsIDI4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM3LCAxNDgsIDM4LCAKKyAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMjUsIDUsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMTcsIDExOSwgMzgsIDE1MywgMjUwLCAKKyAgICAxNDEsIDEsIDIwNCwgNzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgCisgICAgMjE2LCAxMjIsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDgsIDEzOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgMTY5LCAKKyAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNiwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzMCwgMjIsIDM4LCAxNTMsIAorICAgIDI1MCwgMTQxLCAxLCAyMjEsIDE3OCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIyOSwgMTQwLCAzOCwgMTUzLCAyNTAsIDE0MSwgCisgICAgMSwgMjE1LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDAsIDQ3LCAKKyAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjUxLCAzMCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgNTksIDM4LCAxNTMsIAorICAgIDI1MCwgMTQxLCAxLCAyNDQsIDIwNywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzOCwgMTgxLCAzOCwgMTUzLCAyNTAsIDE0MSwgCisgICAgMSwgMjQ0LCAxODQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDExNCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgCisgICAgMjUxLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjAyLCAxMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDEwMCwgMzgsIAorICAgIDE1MywgMjUwLCAxNDEsIDEsIDIwMywgNDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDg4LCAzOCwgMTUzLCAyNTAsIAorICAgIDE0MSwgMSwgMjAyLCAxMTAsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMTA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwOSwgCisgICAgMTUyLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwNywgMTUxLCAyMjUsIDExNSwgMSwgMjUxLCAyOCwgMjI1LCAxMTUsIDEsIAorICAgIDI0OCwgMTA1LCAyMjUsIDExNSwgMSwgMjQ4LCA5MiwgMjI1LCAxMTUsIDEsIDIzOCwgNjcsIDIyNSwgMTE1LCAxLCAyMzgsIAorICAgIDkyLCAyMjUsIDExNSwgMSwgMjQ0LCAxNzcsIDIyNSwgMTE1LCAxLCAyMzcsIDY3LCAyMjUsIDExNSwgMSwgMjA0LCA3MCwgCisgICAgMjI1LCAxMTUsIDIsIDIwNywgMjksIDIyNSwgMTE1LCAxLCAyMDIsIDk1LCAyMjUsIDExNSwgMSwgMjAyLCA3MywgMjI1LCAKKyAgICAxMTUsIDEsIDIzMCwgMTYzLCAyMjUsIDExNSwgMSwgMjMwLCAxNDUsIDIyNSwgMTE1LCAxLCAyMzcsIDE5LCAyMjUsIDExNSwgCisgICAgMSwgMjA5LCAxMjgsIDIyNSwgMTE1LCAxLCAyMDIsIDIzNSwgMjI1LCAxMTUsIDEsIDIyOSwgMjUwLCAyMjUsIDExNSwgMSwgCisgICAgMjAzLCAxNzksIDIyNSwgMTE1LCAxLCAyMjksIDEzMywgMjI1LCAxMTUsIDEsIDIyOCwgMTksIDIyNSwgMTE1LCAxLCAyNDMsIAorICAgIDI1MCwgMjI1LCAxMTUsIDEsIDIwOSwgOTksIDIyNSwgMTE1LCAxLCAyMjQsIDI0NywgMjI1LCAxMTUsIDEsIDIyMSwgNDAsIAorICAgIDIyNSwgMTE1LCAxLCAyMTQsIDI0OSwgMjI1LCAxMTUsIDEsIDI1MCwgMywgMjI1LCAxMTUsIDEsIDI1MSwgMjM0LCAyMjUsIAorICAgIDExNSwgMSwgMjE5LCAzNCwgMjI1LCAxMTUsIDEsIDI0MCwgNjAsIDIyNSwgMTE1LCAxLCAyMTUsIDI2LCAyMjUsIDExNSwgMSwgCisgICAgMjE3LCA2OSwgMjI1LCAxMTUsIDEsIDIwMywgMTU3LCAyMjUsIDExNSwgMSwgMjE3LCA5NSwgMjI1LCAxMTUsIDEsIDIxNiwgCisgICAgOTEsIDIyNSwgMTE1LCAxLCAyMTIsIDI1NSwgMjI1LCAxMTUsIDEsIDIxMSwgMTMzLCAyMjUsIDExNSwgMSwgMjA5LCAyMDEsIAorICAgIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NSwgMjI1LCAxMTUsIDI1MSwgMTQ2LCAxMzEsIDU2LCAyMjUsIDExNSwgNDIsIAorICAgIDEwNSwgMjI1LCAxMTUsIDQyLCAxNzAsIDIyNSwgMTE1LCA0MiwgMjA5LCAxNTIsIDIyNSwgMTE1LCA0MiwgMjA3LCAxNTEsIAorICAgIDIyNSwgMTE1LCA0MiwgMTE4LCAyMzYsIDExLCAyMjUsIDExNSwgMjE3LCAxNzksIDIxMSwgOTQsIDIyNSwgMTE1LCAyMTcsIAorICAgIDE3OSwgMjM5LCAyMTIsIDIyNSwgMTE1LCAyMTcsIDE3OSwgNTIsIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAKKyAgICAyMTcsIDE3OSwgNzAsIDIwNCwgNSwgMjQzLCA4NSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyNDMsIDg1LCAyMjUsIDExNSwgCisgICAgMjE3LCAxNzksIDEyMCwgMjQzLCA4MywgMjI1LCAxMTUsIDIxNywgMTc5LCAyMjcsIDExNSwgMjQwLCA3LCAyNTAsIDE0LCAxLCAKKyAgICA2MywgMjUwLCAxNCwgMSwgMjUyLCAyNSwgMjUwLCAxNCwgMSwgMjUwLCAxNzgsIDI1MCwgMTQsIDEsIDI1MSwgMjQwLCAyNTAsIAorICAgIDE0LCAxLCAyNTAsIDIzMSwgMjUwLCAxNCwgMSwgMjUxLCAyNDEsIDI1MCwgMTQsIDEsIDI1MSwgMTA5LCAyNTAsIDE0LCAxLCAKKyAgICAyNTEsIDEwNSwgMjUwLCAxNCwgMSwgNzQsIDI1MCwgMTQsIDEsIDI0MSwgMTYxLCAyNTAsIDE0LCAxLCA3OCwgMjUwLCAxNCwgCisgICAgMSwgMjIwLCAxOCwgMjUwLCAxNCwgMSwgNzUsIDI1MCwgMTQsIDEsIDIzMSwgODMsIDI1MCwgMTQsIDEsIDY4LCAyNTAsIDE0LCAKKyAgICAxLCAyMDYsIDE3OCwgMjUwLCAxNCwgMSwgMjI5LCAyMDEsIDI1MCwgMTQsIDEsIDIwMywgMTc2LCAyNTAsIDE0LCAxLCAyMDMsIAorICAgIDEzOCwgMjUwLCAxNCwgMSwgMjAzLCAxNDgsIDI1MCwgMTQsIDEsIDIzOCwgMTkwLCAyNTAsIDE0LCAxLCAyMzgsIDE1MCwgCisgICAgMjUwLCAxNCwgMSwgMjM4LCAxMDUsIDI1MCwgMTQsIDEsIDI0NiwgMjM4LCAyNTAsIDE0LCAxLCAyMzAsIDE2MSwgMjUwLCAKKyAgICAxNCwgMSwgMjA5LCAxODcsIDI1MCwgMTQsIDEsIDIwOSwgOTIsIDI1MCwgMTQsIDEsIDI0NCwgNzUsIDI1MCwgMTQsIDEsIAorICAgIDI0MywgMjQ4LCAyNTAsIDE0LCAxLCAyMDcsIDIzNiwgMjUwLCAxNCwgMSwgMjE5LCAzNCwgMjUwLCAxNCwgMSwgMjQwLCA2MCwgCisgICAgMjUwLCAxNCwgMSwgMjQ4LCAxNjIsIDI1MCwgMTQsIDEsIDI0OCwgOTQsIDI1MCwgMTQsIDEsIDIyMiwgMTkwLCAyNTAsIDE0LCAKKyAgICAxLCAyMjIsIDEwNiwgMjUwLCAxNCwgMSwgMjIyLCAxMDcsIDI1MCwgMTQsIDEsIDIyMiwgMjQwLCAyNTAsIDE0LCAxLCAyMjEsIAorICAgIDEsIDI1MCwgMTQsIDEsIDIyMSwgMjIyLCAyNTAsIDE0LCAxLCAyMjUsIDIwLCAyNTAsIDE0LCAxLCAyMzYsIDE4NiwgMjUwLCAKKyAgICAxNCwgMSwgMjAyLCAxNjYsIDI1MCwgMTQsIDEsIDIwMywgNTIsIDI1MCwgMTQsIDEsIDIwNiwgNTUsIDI1MCwgMTQsIDEsIAorICAgIDIxNiwgMTU4LCAyNTAsIDE0LCAxLCAyMjcsIDIzNCwgMjUwLCAxNCwgMSwgMjE0LCAxNzcsIDI1MCwgMTQsIDEsIDIwMiwgCisgICAgOTIsIDI1MCwgMTQsIDEsIDIxMywgNDMsIDI1MCwgMTQsIDEsIDIwMiwgNzEsIDI1MCwgMTQsIDEsIDIxMiwgMTY5LCAyNTAsIAorICAgIDE0LCAxLCAyMTEsIDEzNCwgMjUwLCAxNCwgMSwgMjM3LCA2NywgMjUwLCAxNCwgMjUxLCAxNDYsIDgyLCAyMDgsIDIxMywgCisgICAgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIDUsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAKKyAgICAyMjgsIDgsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAyMjgsIDgsIDExOCwgNzAsIDExNSwgMTIwLCAxODcsIAorICAgIDIxNywgMTc4LCAyMjgsIDgsIDEyMCwgMjE1LCAyNTAsIDExNSwgMTE4LCAyMTUsIDI1MywgMjE3LCAxNzgsIDIyOCwgOCwgCisgICAgMTE4LCAyMTUsIDI1MywgMTE1LCAxMjAsIDIxNSwgMjUwLCAyMTcsIDE3OCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjUxLCAKKyAgICAyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzOCwgNjcsIDIzMSwgMTAsIAorICAgIDIxOSwgNzAsIDEsIDI0NCwgMTc3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAKKyAgICAyMDQsIDcwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDIsIDk1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDE5LCAyMzEsIAorICAgIDEwLCAyMTksIDcwLCAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCAyMzUsIDIzMSwgMTAsIDIxOSwgCisgICAgNzAsIDEsIDIyOSwgMjUwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjQsIAorICAgIDI0NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE0LCAyNDksIDIzMSwgCisgICAgMTAsIDIxOSwgNzAsIDEsIDI1MCwgMywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCA3MCwgCisgICAgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE3LCA2OSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE2LCA5MSwgCisgICAgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjEyLCAyNTUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAKKyAgICAyMTksIDcwLCA0MiwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTA4LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ3LCAKKyAgICAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMjA5LCAxNTIsIDIzMSwgMTAsIDIxOSwgCisgICAgNzAsIDQyLCAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCA3MCwgCisgICAgNDIsIDExOCwgMjA5LCAzNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKKyAgICAyNDgsIDEwNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzOCwgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCisgICAgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDQsIDY5LCAyMzEsIDEwLCAKKyAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgMTksIDIzMSwgMTAsIDIxOSwgMTQ5LCAKKyAgICAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI5LCAKKyAgICAyNTAsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIzMSwgCisgICAgMTAsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE0LCAyNDksIDIzMSwgMTAsIDIxOSwgCisgICAgMTQ5LCAxLCAyMTksIDM0LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIAorICAgIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA5LCAyMDEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTA1LCAKKyAgICAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxNDcsIDIzMSwgMTAsIDIxOSwgCisgICAgMTQ5LCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIAorICAgIDIwNywgMTUxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKKyAgICAxMTgsIDIwOSwgMzYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjUxLCAyOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDgsIAorICAgIDEwNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI0NCwgMTc3LCAKKyAgICAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjE3LCAyMDMsIAorICAgIDIxOSwgMTQ5LCAxLCAyMDIsIDk1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgCisgICAgMSwgMjAyLCAyMzUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI5LCAyNTAsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI4LCAKKyAgICAxOSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjQsIDI0NiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMTcsIAorICAgIDIwMywgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIxOSwgMzQsIDIxNywgMjAzLCAKKyAgICAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTIsIDI1NSwgMjE3LCAyMDMsIDIxOSwgCisgICAgMTQ5LCAxLCAyMDksIDIwMSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgCisgICAgMjA3LCAxNzQsIDIxNCwgMTY4LCA4MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDUsIDEzMCwgCisgICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDMsIDg1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAKKyAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDEwOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMTcsIDIwMywgCisgICAgMjE5LCAxNDksIDQyLCAxNDksIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMTcsIDIwMywgMjE5LCAxNDksIAorICAgIDQyLCAyMDcsIDE1MSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCisgICAgMjM1LCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIAorICAgIDEwOSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzUsIDM4LCAKKyAgICAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDIyMCwgNzMsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MSwgMTA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCA4LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTEsIDkwLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyMjAsIDcxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI1MSwgMzksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMTAwLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNDEsIDEwNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MCwgMjMxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI1MSwgOTgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjQxLCA3MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNDEsIDg5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI0MSwgNTYsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCAyMjMsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI0MSwgNzgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5NywgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjQxLCA0NiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA5LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyMzUsIDE2NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk2LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTAsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk0LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI0MSwgNywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKKyAgICAyMzUsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCA0OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAorICAgIDIzNSwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDkxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCisgICAgMjM1LCAyMTksIDIyNCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQ4LCAyMTUsIDM4LCAxNDUsIDYsIDEsIDYzLCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyNTIsIDI1LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNiwgMSwgMjUwLCAyNDIsIAorICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2NiwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjUsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA2LCAxLCA3NCwgMzgsIAorICAgIDE0NSwgNiwgMSwgMjQ2LCAxNywgNzQsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1NCwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAorICAgIDE0NywgMzgsIDE0NSwgNiwgMSwgNzUsIDM4LCAxNDUsIDYsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTMyLCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyOSwgMzgsIDE0NSwgNiwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNiwgMSwgMjA2LCAyMzIsIAorICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTIyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKKyAgICAxMDMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgOTIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDYsIDEsIDc4LCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyMjAsIDE4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA2LCAxLCAKKyAgICAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA0NiwgMzgsIAorICAgIDE0NSwgNiwgMSwgMjQxLCA5NywgMzgsIDE0NSwgNiwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNiwgMSwgMjEyLCAyMjgsIDI0MSwgCisgICAgMjgsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTcsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIAorICAgIDI1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCA3MCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDYsIDEsIDI0MSwgCisgICAgMTY3LCAzOCwgMTQ1LCA2LCAxLCA2OCwgMzgsIDE0NSwgNiwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDYsIDEsIDIyMiwgNzEsIAorICAgIDIwNywgMjQsIDM4LCAxNDUsIDYsIDEsIDIxNSwgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDIyNiwgMzgsIAorICAgIDE0NSwgNiwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDY5LCA1NCwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjA2LCAxOTMsIDM4LCAxNDUsIDUsIDEsIDYzLCAzOCwgMTQ1LCA1LCAxLCAyNTIsIDI1LCAzOCwgCisgICAgMTQ1LCA1LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNSwgMSwgMjUwLCAyNDIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY5LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjUsIAorICAgIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA1LCAxLCA3NCwgMzgsIDE0NSwgNSwgMSwgMjQ2LCAxNywgNzQsIAorICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1NCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAKKyAgICAxNTMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE0NywgMzgsIDE0NSwgNSwgMSwgNzUsIAorICAgIDM4LCAxNDUsIDUsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyOSwgCisgICAgMzgsIDE0NSwgNSwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNSwgMSwgMjA2LCAyMzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTIyLCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTIsIAorICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDUsIDEsIDc4LCAzOCwgMTQ1LCA1LCAxLCAyMjAsIDE4LCAzOCwgCisgICAgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA1LCAxLCAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgCisgICAgNSwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA0NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA5NywgMzgsIDE0NSwgCisgICAgNSwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNSwgMSwgMjEyLCAyMjgsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTcsIAorICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCA3MCwgCisgICAgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY3LCAzOCwgMTQ1LCA1LCAxLCA2OCwgMzgsIAorICAgIDE0NSwgNSwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDUsIDEsIDIyMiwgNzEsIDIwNywgMjQsIDM4LCAxNDUsIDUsIDEsIDIxNSwgCisgICAgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIAorICAgIDUsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDY5LCA1NCwgMzgsIDE0NSwgNSwgMSwgMjA2LCAxOTMsIDM4LCAKKyAgICAxNDUsIDQyLCAxMDUsIDM4LCAxNDUsIDQyLCAxNzAsIDM4LCAxNDUsIDQyLCAyMDksIDE1MiwgMzgsIDE0NSwgNDIsIDI0MCwgCisgICAgMTgsIDM4LCAxNDUsIDQyLCAxMTgsIDIzNiwgMTEsIDM4LCAxNDUsIDQyLCAxMTgsIDIwOSwgMzYsIDIxNSwgMTI5LCAxNywgCisgICAgMTA1LCAyMTUsIDEyOSwgMTcsIDEwOCwgMjE1LCAxMjksIDE3LCAxNDcsIDIxNSwgMTI5LCAxNywgMTQ5LCAyMTUsIDEyOSwgCisgICAgMTcsIDE3MCwgMjE1LCAxMjksIDE3LCAxOTUsIDIxNSwgMTI5LCAxNywgMjEzLCAxMTEsIDIxNSwgMTI5LCAxNywgMTk5LCAKKyAgICAyMTUsIDEyOSwgMTcsIDIyMiwgNjMsIDIxNSwgMTI5LCA0MiwgMjA5LCAxNTIsIDIxNSwgMTI5LCA0MiwgMjA3LCAxNTEsIAorICAgIDIxNSwgMTI5LCA0MiwgMjA5LCA1MywgMjE1LCAxMjksIDQyLCAyMzksIDE1MywgMjE1LCAxMjksIDQyLCAyNDAsIDE4LCAKKyAgICAyMTUsIDEyOSwgNDIsIDIxMiwgNzQsIDIxNSwgMTI5LCA0MiwgMjEzLCAxMDUsIDIxNSwgMTI5LCA0MiwgMjQxLCAxMzQsIAorICAgIDIxNSwgMTI5LCA0MiwgMjIyLCA1OCwgMjE1LCAxMjksIDQyLCAxMTgsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMTIwLCAKKyAgICAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyNiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgCisgICAgMjE1LCAxMjksIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMTIsIDg4LCAyMzYsIDExLCAyMTUsIAorICAgIDEyOSwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCAyMTUsIDEyOSwgCisgICAgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjE1LCAxMjksIDIzOSwgCisgICAgMTM4LCAxMTgsIDIxNywgNTUsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMTUsIDEyOSwgMjM5LCAxMzgsIAorICAgIDEyMCwgMjA5LCA1NywgMTQ0LCAyLCAyNDcsIDUyLCAxNDQsIDIsIDI1MCwgMTgwLCAxNDQsIDIsIDIwNSwgMTk5LCAxNDQsIAorICAgIDIsIDIzMCwgMTM1LCAxNDQsIDIsIDIwNiwgMjIyLCAxNDQsIDEsIDYzLCAxNDQsIDEsIDI1MiwgMjUsIDE0NCwgMSwgNzUsIAorICAgIDE0NCwgMSwgMjMxLCA4MywgMTQ0LCAxLCA2OCwgMTQ0LCAxLCAyMDYsIDE3OCwgMTQ0LCAxLCAxMjUsIDE0NiwgMTQ0LCAxLCAKKyAgICAxMjUsIDIxNSwgMTg2LCAxNDQsIDEsIDEyNSwgMTU5LCAxNDQsIDEsIDEyNSwgMjI3LCA3OCwgMTQ0LCAxLCA3NCwgMTQ0LCAKKyAgICAxLCAyNTEsIDY0LCAxNDQsIDEsIDc4LCAxNDQsIDEsIDI1MCwgMzQsIDE0NCwgMSwgMTczLCAxNDQsIDEsIDIyOSwgMTQ0LCAKKyAgICAxNDQsIDEsIDIzOSwgOCwgMTQ0LCAxLCAyMzgsIDExOSwgMTQ0LCAxLCAyMjIsIDIwMywgMTQ0LCAxLCAyNDcsIDkyLCAxNDQsIAorICAgIDEsIDI0NiwgMTk5LCAxNDQsIDEsIDIzMCwgMTgxLCAxNDQsIDEsIDIzMCwgMTQ5LCAxNDQsIDEsIDIyMSwgMTEsIDE0NCwgMSwgCisgICAgMjA3LCAyNDEsIDE0NCwgMSwgMjA3LCAyMjksIDE0NCwgMSwgMjQ0LCAxMjAsIDE0NCwgMSwgMjQ0LCAxMDQsIDE0NCwgMSwgCisgICAgMjIxLCAyMjcsIDE0NCwgMSwgMjEwLCAyMiwgMTQ0LCAxLCAyMDksIDEwOCwgMTQ0LCAxLCAyNDQsIDIxMiwgMTQ0LCAxLCAKKyAgICAyNDQsIDEsIDE0NCwgMSwgMjAxLCAyMDEsIDE0NCwgMSwgMTg1LCAxNDQsIDEsIDIxOCwgMjA4LCAxNDQsIDEsIDI0OSwgMzIsIAorICAgIDE0NCwgMSwgMjQ4LCA5OCwgMTQ0LCAxLCAxOTIsIDE0NCwgMSwgMTk4LCAxNDQsIDEsIDIxNiwgMjIwLCAxNDQsIDEsIDIyOCwgCisgICAgMTEzLCAxNDQsIDEsIDIwNiwgODYsIDE0NCwgMSwgMjEzLCA5MCwgMTQ0LCAxLCAyMTEsIDE2NCwgMTQ0LCAxLCAyMTUsIDM2LCAKKyAgICAxNDQsIDEsIDE1MiwgMTQ0LCAxLCAyMjcsIDc3LCAxNDQsIDEsIDM4LCA0NCwgMjI3LCA2OCwgMTQ0LCAxLCAzOCwgNDQsIAorICAgIDIxNSwgMTg1LCAxNDQsIDEsIDM4LCA0NCwgMjIxLCAyMDksIDE0NCwgMjIsIDIsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDI0OCwgCisgICAgOTUsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDc1LCAxNDQsIDIyLCAyLCAyMzEsIDgzLCAxNDQsIDIyLCAyLCA2OCwgMTQ0LCAKKyAgICAyMiwgMiwgMjA2LCAxNzgsIDE0NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNDQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNDQsIAorICAgIDIyLCAyLCAxMjUsIDE1OSwgMTQ0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNDQsIDIyLCAyLCA3NCwgMTQ0LCAyMiwgMiwgCisgICAgMjUxLCA2NCwgMTQ0LCAyMiwgMiwgNzgsIDE0NCwgMjIsIDIsIDI1MCwgMzQsIDE0NCwgMjA1LCAyMDQsIDE0NCwgMjQ0LCAKKyAgICAxNjYsIDE0NCwgNTIsIDI0NCwgMTY2LCAxNDQsIDIxNywgMTc5LCAyNDMsIDg1LCAxNDQsIDIxNywgMTc5LCA1MiwgMjQzLCAKKyAgICA4NSwgMTQ0LCAyMTcsIDE3OSwgMjI3LCAxMTQsIDE0NCwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDE0NCwgMjE3LCAxNzksIAorICAgIDIyNywgNSwgMTQ0LCA0MiwgMTA1LCAxNDQsIDQyLCAxMDgsIDE0NCwgNDIsIDE0NywgMTQ0LCA0MiwgMTQ5LCAxNDQsIDQyLCAKKyAgICAxNzAsIDE0NCwgNDIsIDE5NSwgMTQ0LCA0MiwgMjEzLCAxMTEsIDE0NCwgNDIsIDE5OSwgMTQ0LCA0MiwgMjIyLCA2MywgCisgICAgMTQ0LCA0MiwgMjA5LCAxNTIsIDE0NCwgNDIsIDIwNywgMTUxLCAxNDQsIDQyLCAyMDksIDUzLCAxNDQsIDQyLCAyMzksIAorICAgIDE1MywgMTQ0LCA0MiwgMjQwLCAxOCwgMTQ0LCA0MiwgMjEyLCA3NCwgMTQ0LCA0MiwgMjEzLCAxMDUsIDE0NCwgNDIsIDI0MSwgCisgICAgMTM0LCAxNDQsIDQyLCAyMjIsIDU4LCAxNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDE0NCwgNDIsIDExOCwgMjA5LCAzNiwgMTQ0LCAKKyAgICAxNywgMjAyLCA4NCwgMTQ0LCAxNywgMTA1LCAxNDQsIDE3LCAxMDgsIDE0NCwgMTcsIDE0NywgMTQ0LCAxNywgMTQ5LCAxNDQsIAorICAgIDE3LCAxNzAsIDE0NCwgMTcsIDE5NSwgMTQ0LCAxNywgMjEzLCAxMTEsIDE0NCwgMTcsIDE5OSwgMTQ0LCAxNywgMjIyLCA2MywgCisgICAgMTQ0LCA0MiwgMjMwLCA5NiwgMjMwLCAxNSwgMiwgMjQ3LCA1MiwgMjMwLCAxNSwgMiwgMjUwLCAxODAsIDIzMCwgMTUsIDIsIAorICAgIDIwNSwgMTk5LCAyMzAsIDE1LCAxLCA2MywgMjMwLCAxNSwgMSwgMjUyLCAyNSwgMjMwLCAxNSwgMSwgNzUsIDIzMCwgMTUsIAorICAgIDEsIDIzMSwgODMsIDIzMCwgMTUsIDEsIDY4LCAyMzAsIDE1LCAxLCAyMDYsIDE3OCwgMjMwLCAxNSwgMSwgNzQsIDIzMCwgCisgICAgMTUsIDEsIDI1MSwgNjQsIDIzMCwgMTUsIDEsIDc4LCAyMzAsIDE1LCAxLCAyNTAsIDM0LCAyMzAsIDE1LCAxLCAxNzMsIAorICAgIDIzMCwgMTUsIDEsIDIyOSwgMTQ0LCAyMzAsIDE1LCAxLCAyMzksIDgsIDIzMCwgMTUsIDEsIDIzOCwgMTE5LCAyMzAsIDE1LCAKKyAgICAxLCAyMjIsIDIwMywgMjMwLCAxNSwgMSwgMjQ3LCA5MiwgMjMwLCAxNSwgMSwgMjQ2LCAxOTksIDIzMCwgMTUsIDEsIDIzMCwgCisgICAgMTgxLCAyMzAsIDE1LCAxLCAyMzAsIDE0OSwgMjMwLCAxNSwgMSwgMjIxLCAxMSwgMjMwLCAxNSwgMSwgMjA3LCAyNDEsIAorICAgIDIzMCwgMTUsIDEsIDIwNywgMjI5LCAyMzAsIDE1LCAxLCAyNDQsIDEyMCwgMjMwLCAxNSwgMSwgMjQ0LCAxMDksIDIzMCwgCisgICAgMTUsIDEsIDI0NCwgMTA0LCAyMzAsIDE1LCAxLCAyMTYsIDYxLCAyMzAsIDE1LCAxLCAyMjEsIDIyNywgMjMwLCAxNSwgMSwgCisgICAgMjEwLCAyMiwgMjMwLCAxNSwgMSwgMjA5LCAxMDgsIDIzMCwgMTUsIDEsIDI0NCwgMjEyLCAyMzAsIDE1LCAxLCAyNDQsIDEsIAorICAgIDIzMCwgMTUsIDEsIDIwMSwgMjAxLCAyMzAsIDE1LCAxLCAxODUsIDIzMCwgMTUsIDEsIDIxOCwgMjA4LCAyMzAsIDE1LCAxLCAKKyAgICAyNDksIDMyLCAyMzAsIDE1LCAxLCAyNDgsIDk4LCAyMzAsIDE1LCAxLCAxOTIsIDIzMCwgMTUsIDEsIDE5OCwgMjMwLCAxNSwgCisgICAgMSwgMjE2LCAyMjAsIDIzMCwgMTUsIDEsIDIyOCwgMTEzLCAyMzAsIDE1LCAxLCAyMDYsIDg2LCAyMzAsIDE1LCAxLCAyMTMsIAorICAgIDkwLCAyMzAsIDE1LCAxLCAyMTEsIDE2NCwgMjMwLCAxNSwgMSwgMjE1LCAzNiwgMjMwLCAxNSwgMSwgMTUyLCAyMzAsIDE1LCAKKyAgICAyMiwgMiwgMjUyLCAyNSwgMjMwLCAxNSwgMjIsIDIsIDc1LCAyMzAsIDE1LCAyMiwgMiwgMjMxLCA4MywgMjMwLCAxNSwgMjIsIAorICAgIDIsIDY4LCAyMzAsIDE1LCAyMiwgMiwgMjA2LCAxNzgsIDIzMCwgMTUsIDIyLCAyLCA3NCwgMjMwLCAxNSwgMjIsIDIsIDI1MSwgCisgICAgNjQsIDIzMCwgMTUsIDIyLCAyLCA3OCwgMjMwLCAxNSwgMjIsIDIsIDI1MCwgMzQsIDIzMCwgMTUsIDIsIDIwNSwgMjA0LCAKKyAgICAyMzAsIDE1LCAyLCAyMjEsIDUxLCAyMzAsIDE1LCAyNTEsIDE0NiwgNTQsIDIzMCwgMTUsIDI0MSwgNTksIDU0LCAyMzAsIAorICAgIDE1LCA0MiwgNTQsIDIzMCwgMTUsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgNTIsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgCisgICAgMjQ0LCAxNjYsIDIzMCwgMTUsIDUyLCAyNDQsIDE2NiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTUsIDE5LCAyMTEsIAorICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwOSwgMjUxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0OSwgNSwgMjExLCAyNDYsIDIxMSwgCisgICAgMjU0LCAxLCAyNDcsIDgxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0NCwgMTkzLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIAorICAgIDIzOCwgMjQ5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyNSwgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMiwgCisgICAgMjAwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyOCwgODksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIzLCA5MywgMjExLCAKKyAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDYsIDgyLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxOSwgMTUwLCAyMTEsIDI0NiwgCisgICAgMjExLCAyNTQsIDEsIDIwMywgOTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE2LCAxOTksIDIxMSwgMjQ2LCAyMTEsIAorICAgIDI1NCwgMSwgMjM3LCAxNDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMwLCAyMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKKyAgICAyMzAsIDE3NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjEsIDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjUxLCA3MywgCisgICAgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDEsIDE1OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMzEsIDg0LCAyMTEsIAorICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwNywgMTgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIwLCA2MCwgMjExLCAyNDYsIDIxMSwgCisgICAgMjU0LCAxLCAyNDEsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE2MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAKKyAgICAxNywgMjAyLCA4NCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxMDgsIAorICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTQ5LCAyMTEsIDI0NiwgMjExLCAKKyAgICAyNTQsIDE3LCAxNzAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjEzLCAKKyAgICAxMTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjIyLCA2MywgMjQ2LCAKKyAgICAxOTMsIDIsIDI0NywgNTIsIDI0NiwgMTkzLCAyLCAyNTAsIDE4MCwgMjQ2LCAxOTMsIDIsIDIwNSwgMTk5LCAyNDYsIDE5MywgCisgICAgMSwgMjUyLCAyNSwgMjQ2LCAxOTMsIDEsIDc1LCAyNDYsIDE5MywgMSwgNjgsIDI0NiwgMTkzLCAxLCA3NCwgMjQ2LCAxOTMsIAorICAgIDEsIDIzMCwgNDEsIDI0NiwgMTkzLCAxLCAyMjksIDE0MywgMjQ2LCAxOTMsIDEsIDIzOSwgNSwgMjQ2LCAxOTMsIDEsIDIzOCwgCisgICAgMTE4LCAyNDYsIDE5MywgMSwgMjIyLCAyMDIsIDI0NiwgMTkzLCAxLCAyNDcsIDkxLCAyNDYsIDE5MywgMSwgMjQ2LCAxOTgsIAorICAgIDI0NiwgMTkzLCAxLCAyMzAsIDE4MCwgMjQ2LCAxOTMsIDEsIDIzMCwgMTQ4LCAyNDYsIDE5MywgMSwgMjIxLCAxMCwgMjQ2LCAKKyAgICAxOTMsIDEsIDIwNywgMjQwLCAyNDYsIDE5MywgMSwgMjA3LCAyMjgsIDI0NiwgMTkzLCAxLCAyNDQsIDExOSwgMjQ2LCAxOTMsIAorICAgIDEsIDI0NCwgMTAzLCAyNDYsIDE5MywgMSwgMjIxLCAyMjYsIDI0NiwgMTkzLCAxLCAyMTAsIDE4LCAyNDYsIDE5MywgMSwgCisgICAgMjA5LCAxMDcsIDI0NiwgMTkzLCAxLCAyNDQsIDIxMSwgMjQ2LCAxOTMsIDEsIDI0NCwgMCwgMjQ2LCAxOTMsIDEsIDIyMywgCisgICAgMTA2LCAyNDYsIDE5MywgMSwgMjE5LCAxNjgsIDI0NiwgMTkzLCAxLCAyMTgsIDIwNywgMjQ2LCAxOTMsIDEsIDI0OSwgMzAsIAorICAgIDI0NiwgMTkzLCAxLCAyNDgsIDk3LCAyNDYsIDE5MywgMSwgMjI1LCAxNzUsIDI0NiwgMTkzLCAxLCAyMDIsIDE2NywgMjQ2LCAKKyAgICAxOTMsIDEsIDIwMywgMTEwLCAyNDYsIDE5MywgMSwgMjE2LCAyMTYsIDI0NiwgMTkzLCAxLCAyMjgsIDExMiwgMjQ2LCAxOTMsIAorICAgIDEsIDIwNCwgMTEwLCAyNDYsIDE5MywgMSwgMjE1LCAzMywgMjQ2LCAxOTMsIDEsIDIzNywgMTU3LCAyNDYsIDE5MywgMjIsIAorICAgIDIsIDYzLCAyNDYsIDE5MywgMjIsIDIsIDc1LCAyNDYsIDE5MywgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkzLCAyMiwgMiwgCisgICAgNjgsIDI0NiwgMTkzLCAyMiwgMiwgMjA2LCAxNzgsIDI0NiwgMTkzLCAyMiwgMiwgNzQsIDI0NiwgMTkzLCAyMiwgMiwgMjUxLCAKKyAgICA2NCwgMjQ2LCAxOTMsIDIyLCAyLCA3OCwgMjQ2LCAxOTMsIDIyLCAyLCAyNTAsIDM0LCAyNDYsIDE5MywgMjIsIDIsIDIyMCwgCisgICAgNTcsIDI0NiwgMTkzLCAxNTgsIDgyLCAyNDYsIDE5MywgMjUwLCAzNSwgODIsIDI0NiwgMTkzLCAyMDUsIDIwNCwgMjQ2LCAKKyAgICAxOTMsIDIyNSwgMTczLCAyNDYsIDE5MywgMTcsIDIwMiwgODQsIDI0NiwgMTkzLCAxNywgMTA1LCAyNDYsIDE5MywgMTcsIAorICAgIDEwOCwgMjQ2LCAxOTMsIDE3LCAxNDcsIDI0NiwgMTkzLCAxNywgMTQ5LCAyNDYsIDE5MywgMTcsIDE3MCwgMjQ2LCAxOTMsIAorICAgIDE3LCAxOTUsIDI0NiwgMTkzLCAxNywgMjEzLCAxMTEsIDI0NiwgMTkzLCAxNywgMTk5LCAyNDYsIDE5MywgMTcsIDIyMiwgCisgICAgNjMsIDI0NiwgMTkzLCAyMTQsIDE2OCwgODIsIDI0NiwgMTkzLCAyNDQsIDE2NiwgMjQ2LCAxOTMsIDUyLCAyNDQsIDE2NiwgCisgICAgMjQ2LCAxOTMsIDIxNywgNDcsIDgyLCAyMjUsIDE0NiwgMSwgNjMsIDIyNSwgMTQ2LCAxLCA3NSwgMjI1LCAxNDYsIDEsIDY4LCAKKyAgICAyMjUsIDE0NiwgMSwgNzQsIDIyNSwgMTQ2LCAxLCA3OCwgMjI1LCAxNDYsIDEsIDE3MywgMjI1LCAxNDYsIDEsIDIyOSwgCisgICAgMTQ0LCAyMjUsIDE0NiwgMSwgMjM5LCA4LCAyMjUsIDE0NiwgMSwgMjM4LCAxMTksIDIyNSwgMTQ2LCAxLCAyNDcsIDkyLCAKKyAgICAyMjUsIDE0NiwgMSwgMjQ2LCAxOTksIDIyNSwgMTQ2LCAxLCAyMzAsIDE4MSwgMjI1LCAxNDYsIDEsIDIzMCwgMTQ5LCAyMjUsIAorICAgIDE0NiwgMSwgMjIxLCAxMSwgMjI1LCAxNDYsIDEsIDIwNywgMjQxLCAyMjUsIDE0NiwgMSwgMjA3LCAyMjksIDIyNSwgMTQ2LCAKKyAgICAxLCAyNDQsIDEyMCwgMjI1LCAxNDYsIDEsIDI0NCwgMTA0LCAyMjUsIDE0NiwgMSwgMjIxLCAyMjcsIDIyNSwgMTQ2LCAxLCAKKyAgICAyMTAsIDIyLCAyMjUsIDE0NiwgMSwgMjA5LCAxMDgsIDIyNSwgMTQ2LCAxLCAyNDQsIDIxMiwgMjI1LCAxNDYsIDEsIDI0NCwgCisgICAgMSwgMjI1LCAxNDYsIDEsIDIwMSwgMjAxLCAyMjUsIDE0NiwgMSwgMTg1LCAyMjUsIDE0NiwgMSwgMjE4LCAyMDgsIDIyNSwgCisgICAgMTQ2LCAxLCAyNDksIDMyLCAyMjUsIDE0NiwgMSwgMjQ4LCA5OCwgMjI1LCAxNDYsIDEsIDE5MiwgMjI1LCAxNDYsIDEsIAorICAgIDIxNiwgMjIwLCAyMjUsIDE0NiwgMSwgMjI4LCAxMTMsIDIyNSwgMTQ2LCAxLCAyMDYsIDg2LCAyMjUsIDE0NiwgMSwgMjE1LCAKKyAgICAzNiwgMjI1LCAxNDYsIDEsIDE1MiwgMjI1LCAxNDYsIDEsIDIxNSwgMTg1LCAyMjUsIDE0NiwgMiwgMjIxLCA1MSwgMjI1LCAKKyAgICAxNDYsIDI1MSwgMTQ2LCA1NCwgMjI1LCAxNDYsIDIxNCwgMTY4LCA4MiwgMjI1LCAxNDYsIDMyLCAyMTIsIDIwNiwgMTgxLCAKKyAgICAyLCAyNDcsIDUyLCAxODEsIDIsIDI1MCwgMTgwLCAxODEsIDIsIDIwNSwgMTk5LCAxODEsIDEsIDYzLCAxODEsIDEsIDI1MiwgCisgICAgMjUsIDE4MSwgMSwgNzUsIDE4MSwgMSwgMjMxLCA4MywgMTgxLCAxLCA2OCwgMTgxLCAxLCAyMDYsIDE3OCwgMTgxLCAxLCAKKyAgICAxMjUsIDE0NiwgMTgxLCAxLCAxMjUsIDIxNSwgMTg2LCAxODEsIDEsIDEyNSwgMTU5LCAxODEsIDEsIDEyNSwgMjI3LCA3OCwgCisgICAgMTgxLCAxLCA3NCwgMTgxLCAxLCAyNTEsIDY0LCAxODEsIDEsIDc4LCAxODEsIDEsIDI1MCwgMzQsIDE4MSwgMSwgMTczLCAKKyAgICAxODEsIDEsIDIyOSwgMTQ0LCAxODEsIDEsIDIzOSwgOCwgMTgxLCAxLCAyMzgsIDExOSwgMTgxLCAxLCAyMjIsIDIwMywgCisgICAgMTgxLCAxLCAyNDcsIDkyLCAxODEsIDEsIDI0NiwgMTk5LCAxODEsIDEsIDIzMCwgMTgxLCAxODEsIDEsIDIzMCwgMTQ5LCAKKyAgICAxODEsIDEsIDIyMSwgMTEsIDE4MSwgMSwgMjA3LCAyNDEsIDE4MSwgMSwgMjA3LCAyMjksIDE4MSwgMSwgMjQ0LCAxMjAsIAorICAgIDE4MSwgMSwgMjQ0LCAxMDQsIDE4MSwgMSwgMjIxLCAyMjcsIDE4MSwgMSwgMjEwLCAyMiwgMTgxLCAxLCAyMDksIDEwOCwgCisgICAgMTgxLCAxLCAyNDQsIDIxMiwgMTgxLCAxLCAyNDQsIDEsIDE4MSwgMSwgMjAxLCAyMDEsIDE4MSwgMSwgMTg1LCAxODEsIDEsIAorICAgIDIxOCwgMjA4LCAxODEsIDEsIDI0OSwgMzIsIDE4MSwgMSwgMjQ4LCA5OCwgMTgxLCAxLCAxOTIsIDE4MSwgMSwgMTk4LCAKKyAgICAxODEsIDEsIDIxNiwgMjIwLCAxODEsIDEsIDIyOCwgMTEzLCAxODEsIDEsIDIyNywgNzcsIDE4MSwgMSwgMjA2LCA4NiwgCisgICAgMTgxLCAxLCAyMTMsIDkwLCAxODEsIDEsIDIxMSwgMTY0LCAxODEsIDEsIDIxNSwgMzYsIDE4MSwgMSwgMTUyLCAxODEsIDIyLCAKKyAgICAyLCAyNTIsIDI1LCAxODEsIDIyLCAyLCA3NSwgMTgxLCAyMiwgMiwgMjMxLCA4MywgMTgxLCAyMiwgMiwgNjgsIDE4MSwgMjIsIAorICAgIDIsIDIwNiwgMTc4LCAxODEsIDIyLCAyLCAxMjUsIDE0NiwgMTgxLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTgxLCAyMiwgMiwgCisgICAgMTI1LCAxNTksIDE4MSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTgxLCAyMiwgMiwgNzQsIDE4MSwgMjIsIDIsIDI1MSwgNjQsIAorICAgIDE4MSwgMjIsIDIsIDc4LCAxODEsIDIyLCAyLCAyNTAsIDM0LCAxODEsIDIsIDIwNSwgMjA0LCAxODEsIDIsIDI1MCwgMTcsIAorICAgIDE4MSwgMiwgMjMwLCAxMzUsIDE4MSwgMiwgMjA2LCAyMjIsIDE4MSwgMjIwLCAzOSwgMTgxLCAyNDQsIDE2NiwgMTgxLCA1MiwgCisgICAgMjQ0LCAxNjYsIDE4MSwgMjUxLCAxNDYsIDU0LCAxODEsIDIxMywgMTMwLCAxODEsIDIxNCwgMjM5LCA4MiwgMTgxLCAyLCAKKyAgICAyMjEsIDUxLCAxODEsIDIyLCA2NSwgODIsIDE4MSwgMjQwLCAxOTksIDIxMiwgMjI4LCAyMiwgODIsIDE4MSwgMjEwLCAxODAsIAorICAgIDgyLCAxODEsIDE3LCAyMDIsIDg0LCAxODEsIDE3LCAxMDUsIDE4MSwgMTcsIDEwOCwgMTgxLCAxNywgMTQ3LCAxODEsIDE3LCAKKyAgICAxNDksIDE4MSwgMTcsIDE3MCwgMTgxLCAxNywgMTk1LCAxODEsIDE3LCAyMTMsIDExMSwgMTgxLCAxNywgMTk5LCAxODEsIAorICAgIDE3LCAyMjIsIDYzLCAxODEsIDI0MSwgMTI4LCAxODEsIDIsIDIxMiwgMTU3LCAxODEsIDIzNywgNTgsIDE4MSwgMjQ1LCAKKyAgICAxOTEsIDU0LCAxODEsIDIxNCwgMTY4LCAyMjUsIDkyLCAxODEsIDIxNCwgMTY4LCAyMjUsIDkxLCAxNDAsIDI1MCwgMTI2LCAKKyAgICAxNywgMTA1LCAxNDAsIDI1MCwgMTI2LCAxNywgMTA4LCAxNDAsIDI1MCwgMTI2LCAxNywgMTQ3LCAxNDAsIDI1MCwgMTI2LCAKKyAgICAxNywgMTQ5LCAxNDAsIDI1MCwgMTI2LCAxNywgMTcwLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk1LCAxNDAsIDI1MCwgMTI2LCAKKyAgICAxNywgMjEzLCAxMTEsIDE0MCwgMjUwLCAxMjYsIDE3LCAxOTksIDE0MCwgMjUwLCAxMjYsIDE3LCAyMjIsIDYzLCAxNDAsIAorICAgIDI1MCwgMTI2LCA0MiwgMjA5LCAxNTIsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMDcsIDE1MSwgMTQwLCAyNTAsIDEyNiwgNDIsIAorICAgIDIwOSwgNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMzksIDE1MywgMTQwLCAyNTAsIDEyNiwgNDIsIDI0MCwgMTgsIDE0MCwgCisgICAgMjUwLCAxMjYsIDQyLCAyMTIsIDc0LCAxNDAsIDI1MCwgMTI2LCA0MiwgMjEzLCAxMDUsIDE0MCwgMjUwLCAxMjYsIDQyLCAKKyAgICAyNDEsIDEzNCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIyMiwgNTgsIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIzNiwgMTEsIAorICAgIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTE0LCAxLCA2MywgMjI5LCAxMTQsIDEsIDI1MiwgMjUsIAorICAgIDIyOSwgMTE0LCAxLCA3NSwgMjI5LCAxMTQsIDEsIDY4LCAyMjksIDExNCwgMSwgNzQsIDIyOSwgMTE0LCAxLCAyNTEsIDY0LCAKKyAgICAyMjksIDExNCwgMSwgNzgsIDIyOSwgMTE0LCAxLCAyNTAsIDM0LCAyMjksIDExNCwgMSwgMTczLCAyMjksIDExNCwgMSwgCisgICAgMjI5LCAxNDQsIDIyOSwgMTE0LCAxLCAyMzksIDgsIDIyOSwgMTE0LCAxLCAyMzgsIDE1NSwgMjI5LCAxMTQsIDEsIDIzOCwgCisgICAgMTE5LCAyMjksIDExNCwgMSwgMjIyLCAyMDMsIDIyOSwgMTE0LCAxLCAyNDcsIDkyLCAyMjksIDExNCwgMSwgMjQ2LCAxOTksIAorICAgIDIyOSwgMTE0LCAxLCAyMzAsIDE4MSwgMjI5LCAxMTQsIDEsIDIzMCwgMTI5LCAyMjksIDExNCwgMSwgMjIxLCAxMSwgMjI5LCAKKyAgICAxMTQsIDEsIDIwNywgMjQxLCAyMjksIDExNCwgMSwgMjA3LCAyMjksIDIyOSwgMTE0LCAxLCAyNDQsIDEyMCwgMjI5LCAxMTQsIAorICAgIDEsIDI0NCwgMTA0LCAyMjksIDExNCwgMSwgMjIxLCAyMjcsIDIyOSwgMTE0LCAxLCAyMTAsIDIyLCAyMjksIDExNCwgMSwgCisgICAgMjA5LCAxMDgsIDIyOSwgMTE0LCAxLCAyNDQsIDIxMiwgMjI5LCAxMTQsIDEsIDI0NCwgMTEwLCAyMjksIDExNCwgMSwgMjQ0LCAKKyAgICAxLCAyMjksIDExNCwgMSwgMjAxLCAyMDEsIDIyOSwgMTE0LCAxLCAxODUsIDIyOSwgMTE0LCAxLCAyMTgsIDIwOCwgMjI5LCAKKyAgICAxMTQsIDEsIDI0OSwgMzIsIDIyOSwgMTE0LCAxLCAyNDgsIDE5OCwgMjI5LCAxMTQsIDEsIDI0OCwgOTgsIDIyOSwgMTE0LCAKKyAgICAxLCAxOTIsIDIyOSwgMTE0LCAxLCAxOTgsIDIyOSwgMTE0LCAxLCAyMTYsIDIyMCwgMjI5LCAxMTQsIDEsIDIyOCwgMTEzLCAKKyAgICAyMjksIDExNCwgMSwgMjA2LCA4NiwgMjI5LCAxMTQsIDEsIDIxNSwgMzYsIDIyOSwgMTE0LCAxLCAxNTIsIDIyOSwgMTE0LCAKKyAgICAxLCAyMjcsIDc3LCAyMjksIDExNCwgMjIsIDIsIDI1MiwgMjUsIDIyOSwgMTE0LCAyMiwgMiwgNzUsIDIyOSwgMTE0LCAyMiwgCisgICAgMiwgMjMxLCA4MywgMjI5LCAxMTQsIDIyLCAyLCA2OCwgMjI5LCAxMTQsIDIyLCAyLCA3NCwgMjI5LCAxMTQsIDIyLCAyLCAKKyAgICAyNTEsIDY0LCAyMjksIDExNCwgMjIsIDIsIDc4LCAyMjksIDExNCwgMjIsIDIsIDI1MCwgMzQsIDIyOSwgMTE0LCAyLCAyNTAsIAorICAgIDE4MCwgMjI5LCAxMTQsIDIsIDIwNSwgMjA0LCAyMjksIDExNCwgMiwgMjIxLCA1MSwgMjI5LCAxMTQsIDIsIDIxMywgODAsIAorICAgIDIyOSwgMTE0LCAyNDQsIDE2NiwgMjI5LCAxMTQsIDUyLCAyNDQsIDE2NiwgMjI5LCAxMTQsIDIwMywgMjM4LCAyMTMsIDEzMCwgCisgICAgMjI5LCAxMTQsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMTQsIDUyLCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCAyNTEsIDE0NiwgCisgICAgNTQsIDIyMywgMjMwLCAxLCA2MywgMjIzLCAyMzAsIDEsIDc1LCAyMjMsIDIzMCwgMSwgNjgsIDIyMywgMjMwLCAxLCA3NCwgCisgICAgMjIzLCAyMzAsIDEsIDE3MywgMjIzLCAyMzAsIDEsIDIyOSwgMTQ0LCAyMjMsIDIzMCwgMSwgMjM5LCA4LCAyMjMsIDIzMCwgCisgICAgMSwgMjM4LCAxMTksIDIyMywgMjMwLCAxLCAyNDcsIDkyLCAyMjMsIDIzMCwgMSwgMjQ2LCAxOTksIDIyMywgMjMwLCAxLCAKKyAgICAyMzAsIDE4MSwgMjIzLCAyMzAsIDEsIDIzMCwgMTI5LCAyMjMsIDIzMCwgMSwgMjIxLCAxMSwgMjIzLCAyMzAsIDEsIDIwNywgCisgICAgMjQxLCAyMjMsIDIzMCwgMSwgMjA3LCAyMjksIDIyMywgMjMwLCAxLCAyNDQsIDEyMCwgMjIzLCAyMzAsIDEsIDI0NCwgMTEwLCAKKyAgICAyMjMsIDIzMCwgMSwgMjQ0LCAxMDQsIDIyMywgMjMwLCAxLCAyMjEsIDIyNywgMjIzLCAyMzAsIDEsIDIxMCwgMjIsIDIyMywgCisgICAgMjMwLCAxLCAyMDksIDEwOCwgMjIzLCAyMzAsIDEsIDI0NCwgMjEyLCAyMjMsIDIzMCwgMSwgMjQ0LCAxLCAyMjMsIDIzMCwgCisgICAgMSwgMjAxLCAyMDEsIDIyMywgMjMwLCAxLCAxODUsIDIyMywgMjMwLCAxLCAyMTgsIDIwOCwgMjIzLCAyMzAsIDEsIDI0OSwgCisgICAgMzIsIDIyMywgMjMwLCAxLCAyNDgsIDk4LCAyMjMsIDIzMCwgMSwgMTkyLCAyMjMsIDIzMCwgMSwgMTk4LCAyMjMsIDIzMCwgCisgICAgMSwgMjE2LCAyMjAsIDIyMywgMjMwLCAxLCAyMjgsIDExMywgMjIzLCAyMzAsIDEsIDIwNiwgODYsIDIyMywgMjMwLCAxLCAKKyAgICAyMTUsIDM2LCAyMjMsIDIzMCwgMSwgMTUyLCAyMjMsIDIzMCwgMSwgMjE1LCAxODUsIDIyMywgMjMwLCAxLCAyMTYsIDYxLCAKKyAgICAyMjMsIDIzMCwgMjE0LCAxNjgsIDgyLCAyMjksIDEwNiwgMSwgNjMsIDIyOSwgMTA2LCAxLCAyNTIsIDI1LCAyMjksIDEwNiwgCisgICAgMSwgNzUsIDIyOSwgMTA2LCAxLCAyMzEsIDgzLCAyMjksIDEwNiwgMSwgNjgsIDIyOSwgMTA2LCAxLCAyMDYsIDE3OCwgMjI5LCAKKyAgICAxMDYsIDEsIDc0LCAyMjksIDEwNiwgMSwgMjUxLCA2NCwgMjI5LCAxMDYsIDEsIDc4LCAyMjksIDEwNiwgMSwgMjUwLCAzNCwgCisgICAgMjI5LCAxMDYsIDEsIDE3MywgMjI5LCAxMDYsIDEsIDIyOSwgMTQ0LCAyMjksIDEwNiwgMSwgMjM5LCA4LCAyMjksIDEwNiwgCisgICAgMSwgMjM4LCAxNTUsIDIyOSwgMTA2LCAxLCAyMzgsIDExOSwgMjI5LCAxMDYsIDEsIDIyMiwgMjAzLCAyMjksIDEwNiwgMSwgCisgICAgMjQ3LCA5MiwgMjI5LCAxMDYsIDEsIDI0NiwgMTk5LCAyMjksIDEwNiwgMSwgMjMwLCAxODEsIDIyOSwgMTA2LCAxLCAyMzAsIAorICAgIDEyOSwgMjI5LCAxMDYsIDEsIDIzMCwgMTQ5LCAyMjksIDEwNiwgMSwgMjIxLCAxMSwgMjI5LCAxMDYsIDEsIDIwNywgMjQxLCAKKyAgICAyMjksIDEwNiwgMSwgMjA3LCAyMjksIDIyOSwgMTA2LCAxLCAyNDQsIDEyMCwgMjI5LCAxMDYsIDEsIDI0NCwgMTEwLCAyMjksIAorICAgIDEwNiwgMSwgMjE1LCAxODUsIDIyOSwgMTA2LCAxLCAyNDQsIDEwNCwgMjI5LCAxMDYsIDEsIDIyMSwgMjI3LCAyMjksIDEwNiwgCisgICAgMSwgMjEwLCAyMiwgMjI5LCAxMDYsIDEsIDIwOSwgMTA4LCAyMjksIDEwNiwgMSwgMjQ0LCAyMTIsIDIyOSwgMTA2LCAxLCAKKyAgICAyNDQsIDEsIDIyOSwgMTA2LCAxLCAyMDEsIDIwMSwgMjI5LCAxMDYsIDEsIDE4NSwgMjI5LCAxMDYsIDEsIDIxOCwgMjA4LCAKKyAgICAyMjksIDEwNiwgMSwgMjQ5LCAzMiwgMjI5LCAxMDYsIDEsIDI0OCwgMTk4LCAyMjksIDEwNiwgMSwgMjQ4LCA5OCwgMjI5LCAKKyAgICAxMDYsIDEsIDE5MiwgMjI5LCAxMDYsIDEsIDE5OCwgMjI5LCAxMDYsIDEsIDIxNiwgMjIwLCAyMjksIDEwNiwgMSwgMjI4LCAKKyAgICAxMTMsIDIyOSwgMTA2LCAxLCAyMDYsIDg2LCAyMjksIDEwNiwgMSwgMjEzLCA5MCwgMjI5LCAxMDYsIDEsIDIxNSwgMzYsIAorICAgIDIyOSwgMTA2LCAxLCAxNTIsIDIyOSwgMTA2LCAyLCAyNTAsIDE4MCwgMjI5LCAxMDYsIDIyLCAyLCAyNTIsIDI1LCAyMjksIAorICAgIDEwNiwgMjIsIDIsIDc1LCAyMjksIDEwNiwgMjIsIDIsIDIzMSwgODMsIDIyOSwgMTA2LCAyMiwgMiwgNjgsIDIyOSwgMTA2LCAKKyAgICAyMiwgMiwgMjA2LCAxNzgsIDIyOSwgMTA2LCAyMiwgMiwgNzQsIDIyOSwgMTA2LCAyMiwgMiwgMjUxLCA2NCwgMjI5LCAxMDYsIAorICAgIDIyLCAyLCA3OCwgMjI5LCAxMDYsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDEwNiwgMiwgMjIxLCA1MSwgMjI5LCAxMDYsIDIsIAorICAgIDIwNSwgMjA0LCAyMjksIDEwNiwgMTcsIDIwMiwgODQsIDIyOSwgMTA2LCAxNywgMTA1LCAyMjksIDEwNiwgMTcsIDEwOCwgCisgICAgMjI5LCAxMDYsIDE3LCAxNDcsIDIyOSwgMTA2LCAxNywgMTQ5LCAyMjksIDEwNiwgMTcsIDE3MCwgMjI5LCAxMDYsIDE3LCAKKyAgICAxOTUsIDIyOSwgMTA2LCAxNywgMjEzLCAxMTEsIDIyOSwgMTA2LCAxNywgMTk5LCAyMjksIDEwNiwgMTcsIDIyMiwgNjMsIAorICAgIDIzOCwgNiwgMiwgMzksIDI1MCwgMTgxLCA1NSwgMjM4LCA2LCAyLCAyNDcsIDUyLCAyMzgsIDYsIDIsIDI1MCwgMTgwLCAKKyAgICAyMzgsIDYsIDIsIDIwNSwgMTk5LCAyMzgsIDYsIDEsIDYzLCAyMzgsIDYsIDEsIDI1MiwgMjUsIDIzOCwgNiwgMSwgNzUsIAorICAgIDIzOCwgNiwgMSwgMjMxLCA4MywgMjM4LCA2LCAxLCA2OCwgMjM4LCA2LCAxLCAyMDYsIDE3OCwgMjM4LCA2LCAxLCAxMjUsIAorICAgIDE0NiwgMjM4LCA2LCAxLCAxMjUsIDE1OSwgMjM4LCA2LCAxLCAyNDEsIDE2MSwgMjM4LCA2LCAxLCAyNTEsIDY0LCAyMzgsIAorICAgIDYsIDEsIDIyMCwgMTgsIDIzOCwgNiwgMSwgMjUwLCAzNCwgMjM4LCA2LCAxLCAxNzMsIDIzOCwgNiwgMSwgMjI5LCAxNDQsIAorICAgIDIzOCwgNiwgMSwgMjM5LCA4LCAyMzgsIDYsIDEsIDIzOCwgMTE5LCAyMzgsIDYsIDEsIDIyMiwgMjAzLCAyMzgsIDYsIDEsIAorICAgIDI0NywgOTIsIDIzOCwgNiwgMSwgMjQ2LCAxOTksIDIzOCwgNiwgMSwgMjMwLCAxODEsIDIzOCwgNiwgMSwgMjMwLCAxNDksIAorICAgIDIzOCwgNiwgMSwgMjIxLCAxMSwgMjM4LCA2LCAxLCAyMDcsIDI0MSwgMjM4LCA2LCAxLCAyMDcsIDIyOSwgMjM4LCA2LCAxLCAKKyAgICAyNDQsIDEyMCwgMjM4LCA2LCAxLCAyNDQsIDEwNCwgMjM4LCA2LCAxLCAyMjEsIDIyNywgMjM4LCA2LCAxLCAyMTAsIDIyLCAKKyAgICAyMzgsIDYsIDEsIDIwOSwgMTA4LCAyMzgsIDYsIDEsIDI0NCwgMjEyLCAyMzgsIDYsIDEsIDI0NCwgMSwgMjM4LCA2LCAxLCAKKyAgICAyMDEsIDIwMSwgMjM4LCA2LCAxLCAxODUsIDIzOCwgNiwgMSwgMjE4LCAyMDgsIDIzOCwgNiwgMSwgMjQ5LCAzMiwgMjM4LCAKKyAgICA2LCAxLCAyNDgsIDk4LCAyMzgsIDYsIDEsIDE5MiwgMjM4LCA2LCAxLCAxOTgsIDIzOCwgNiwgMSwgMjE2LCAyMjAsIDIzOCwgCisgICAgNiwgMSwgMjI4LCAxMTMsIDIzOCwgNiwgMSwgMjI3LCA3NywgMjM4LCA2LCAxLCAyMDYsIDg2LCAyMzgsIDYsIDEsIDIxMywgCisgICAgOTAsIDIzOCwgNiwgMSwgMjExLCAxNjQsIDIzOCwgNiwgMSwgMjE1LCAzNiwgMjM4LCA2LCAxLCAxNTIsIDIzOCwgNiwgMiwgCisgICAgMjIxLCA1MSwgMjM4LCA2LCAyLCAyNTAsIDE3LCAyMzgsIDYsIDIyLCAyLCAyNTIsIDI1LCAyMzgsIDYsIDIyLCAyLCA3NSwgCisgICAgMjM4LCA2LCAyMiwgMiwgMjMxLCA4MywgMjM4LCA2LCAyMiwgMiwgNjgsIDIzOCwgNiwgMjIsIDIsIDIwNiwgMTc4LCAyMzgsIAorICAgIDYsIDIyLCAyLCAxMjUsIDE0NiwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAyMiwgMiwgMjQxLCAKKyAgICAxNjEsIDIzOCwgNiwgMjIsIDIsIDI1MSwgNjQsIDIzOCwgNiwgMjIsIDIsIDIyMCwgMTgsIDIzOCwgNiwgMjIsIDIsIDI1MCwgCisgICAgMzQsIDIzOCwgNiwgMiwgMjA1LCAyMDQsIDIzOCwgNiwgMjIwLCAzOSwgMjM4LCA2LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIAorICAgIDIzOCwgNiwgMiwgMjE4LCA3NCwgMjM4LCA2LCAxLCAyMDYsIDUyLCAyNTAsIDE4MCwgMjM4LCA2LCAxLCAyMDYsIDUyLCA1MiwgCisgICAgMjUwLCAxODAsIDIzOCwgNiwgMSwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAxLCAxMjUsIDIyNywgNzgsIDIzOCwgNiwgMjIsIAorICAgIDIsIDEyNSwgMTU5LCAyMzgsIDYsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDM5LCAyMzgsIDYsIDE3LCAyMDIsIDg0LCAzOSwgCisgICAgMjM4LCA2LCAxNywgMTA1LCAzOSwgMjM4LCA2LCAxNywgMTA4LCAzOSwgMjM4LCA2LCAxNywgMTQ3LCAzOSwgMjM4LCA2LCAKKyAgICAxNywgMTQ5LCAzOSwgMjM4LCA2LCAxNywgMTcwLCAzOSwgMjM4LCA2LCAxNywgMTk1LCAzOSwgMjM4LCA2LCAxLCA2MywgMzksIAorICAgIDIzOCwgNiwgMSwgMTczLCAzOSwgMjM4LCA2LCAxLCAyMDEsIDIwMSwgMzksIDIzOCwgNiwgMSwgMjA1LCAyMzAsIDM5LCAKKyAgICAyMzgsIDYsIDEsIDE4NSwgMjA4LCAyMDQsIDI1MCwgMjA5LCAyMDgsIDIwNCwgMSwgNjMsIDIwOCwgMjA0LCAxLCAyNTIsIAorICAgIDI1LCAyMDgsIDIwNCwgMSwgNzUsIDIwOCwgMjA0LCAxLCAyMzEsIDgzLCAyMDgsIDIwNCwgMSwgNjgsIDIwOCwgMjA0LCAxLCAKKyAgICAyMDYsIDE3OCwgMjA4LCAyMDQsIDEsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMSwgMTI1LCAyMTUsIDE4NiwgMjA4LCAyMDQsIDEsIAorICAgIDEyNSwgMTU5LCAyMDgsIDIwNCwgMSwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgMSwgNzQsIDIwOCwgMjA0LCAxLCAyNTEsIAorICAgIDY0LCAyMDgsIDIwNCwgMSwgNzgsIDIwOCwgMjA0LCAxLCAyNTAsIDM0LCAyMDgsIDIwNCwgMSwgMTczLCAyMDgsIDIwNCwgMSwgCisgICAgMjI5LCAxNDQsIDIwOCwgMjA0LCAxLCAyMzksIDgsIDIwOCwgMjA0LCAxLCAyMzgsIDExOSwgMjA4LCAyMDQsIDEsIDIyMiwgCisgICAgMjAzLCAyMDgsIDIwNCwgMSwgMjQ3LCA5MiwgMjA4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMDgsIDIwNCwgMSwgMjMwLCAxODEsIAorICAgIDIwOCwgMjA0LCAxLCAyMzAsIDE0OSwgMjA4LCAyMDQsIDEsIDIyMSwgMTEsIDIwOCwgMjA0LCAxLCAyMDcsIDI0MSwgMjA4LCAKKyAgICAyMDQsIDEsIDIwNywgMjI5LCAyMDgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIwOCwgMjA0LCAxLCAyNDQsIDEwNCwgMjA4LCAyMDQsIAorICAgIDEsIDIyMSwgMjI3LCAyMDgsIDIwNCwgMSwgMjEwLCAyMiwgMjA4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMDgsIDIwNCwgMSwgCisgICAgMjQ0LCAyMTIsIDIwOCwgMjA0LCAxLCAyNDQsIDEsIDIwOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjA4LCAyMDQsIDEsIDE4NSwgCisgICAgMjA4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMDgsIDIwNCwgMSwgMjQ5LCAzMiwgMjA4LCAyMDQsIDEsIDI0OCwgOTgsIDIwOCwgCisgICAgMjA0LCAxLCAxOTIsIDIwOCwgMjA0LCAxLCAxOTgsIDIwOCwgMjA0LCAxLCAyMTYsIDIyMCwgMjA4LCAyMDQsIDEsIDIyOCwgCisgICAgMTEzLCAyMDgsIDIwNCwgMSwgMjA2LCA4NiwgMjA4LCAyMDQsIDEsIDIxMywgOTAsIDIwOCwgMjA0LCAxLCAyMTEsIDE2NCwgCisgICAgMjA4LCAyMDQsIDEsIDIxNSwgMzYsIDIwOCwgMjA0LCAxLCAxNTIsIDIwOCwgMjA0LCAyMiwgMiwgMjUyLCAyNSwgMjA4LCAKKyAgICAyMDQsIDIyLCAyLCA3NSwgMjA4LCAyMDQsIDIyLCAyLCAyMzEsIDgzLCAyMDgsIDIwNCwgMjIsIDIsIDY4LCAyMDgsIDIwNCwgCisgICAgMjIsIDIsIDIwNiwgMTc4LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjE1LCAKKyAgICAxODYsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAxNTksIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgCisgICAgMjIsIDIsIDc0LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyNTEsIDY0LCAyMDgsIAorICAgIDIwNCwgMjIsIDIsIDc4LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyNTAsIDM0LCAKKyAgICAyMDgsIDIwNCwgMiwgMjQ3LCA1MiwgMjA4LCAyMDQsIDIsIDI1MCwgMTgwLCAyMDgsIDIwNCwgMiwgMjA1LCAxOTksIDIwOCwgCisgICAgMjA0LCAyLCAyMDUsIDIwNCwgMjA4LCAyMDQsIDIsIDIyMSwgNTEsIDIwOCwgMjA0LCAyLCAyNTAsIDE3LCAyMDgsIDIwNCwgCisgICAgMjM3LCAxOTEsIDIwOCwgMjA0LCAyNTEsIDE0NiwgNTQsIDIwOCwgMjA0LCAyMjAsIDM5LCAyMDgsIDIwNCwgMTcsIDIwMiwgCisgICAgODQsIDIwOCwgMjA0LCAxNywgMTA1LCAyMDgsIDIwNCwgMTcsIDEwOCwgMjA4LCAyMDQsIDE3LCAxNDcsIDIwOCwgMjA0LCAKKyAgICAxNywgMTQ5LCAyMDgsIDIwNCwgMTcsIDE3MCwgMjA4LCAyMDQsIDE3LCAxOTUsIDIwOCwgMjA0LCAxNywgMjEzLCAxMTEsIAorICAgIDIwOCwgMjA0LCAxNywgMTk5LCAyMDgsIDIwNCwgMTcsIDIyMiwgNjMsIDE4NiwgMSwgNjMsIDE4NiwgMSwgMjUyLCAyNSwgCisgICAgMTg2LCAxLCA3NSwgMTg2LCAxLCAyMzEsIDgzLCAxODYsIDEsIDY4LCAxODYsIDEsIDIwNiwgMTc4LCAxODYsIDEsIDEyNSwgCisgICAgMTQ2LCAxODYsIDEsIDEyNSwgMjE1LCAxODYsIDE4NiwgMSwgMTI1LCAxNTksIDE4NiwgMSwgMTI1LCAyMjcsIDc4LCAxODYsIAorICAgIDEsIDc0LCAxODYsIDEsIDI1MSwgNjQsIDE4NiwgMSwgNzgsIDE4NiwgMSwgMjUwLCAzNCwgMTg2LCAxLCAxNzMsIDE4NiwgMSwgCisgICAgMjI5LCAxNDQsIDE4NiwgMSwgMjM5LCA4LCAxODYsIDEsIDIzOCwgMTE5LCAxODYsIDEsIDIyMiwgMjAzLCAxODYsIDEsIAorICAgIDI0NywgOTIsIDE4NiwgMSwgMjQ2LCAxOTksIDE4NiwgMSwgMjMwLCAxODEsIDE4NiwgMSwgMjMwLCAxNDksIDE4NiwgMSwgCisgICAgMjIxLCAxMSwgMTg2LCAxLCAyMDcsIDI0MSwgMTg2LCAxLCAyMDcsIDIyOSwgMTg2LCAxLCAyNDQsIDEyMCwgMTg2LCAxLCAKKyAgICAyNDQsIDEwNCwgMTg2LCAxLCAyMjEsIDIyNywgMTg2LCAxLCAyMTAsIDIyLCAxODYsIDEsIDIwOSwgMTA4LCAxODYsIDEsIAorICAgIDI0NCwgMjEyLCAxODYsIDEsIDI0NCwgMSwgMTg2LCAxLCAyMDEsIDIwMSwgMTg2LCAxLCAxODUsIDE4NiwgMSwgMjE4LCAKKyAgICAyMDgsIDE4NiwgMSwgMjQ5LCAzMiwgMTg2LCAxLCAyNDgsIDk4LCAxODYsIDEsIDE5MiwgMTg2LCAxLCAxOTgsIDE4NiwgMSwgCisgICAgMjE2LCAyMjAsIDE4NiwgMSwgMjI4LCAxMTMsIDE4NiwgMSwgMjA2LCA4NiwgMTg2LCAxLCAyMTMsIDkwLCAxODYsIDEsIAorICAgIDIxMSwgMTY0LCAxODYsIDEsIDIxNSwgMzYsIDE4NiwgMSwgMTUyLCAxODYsIDIyLCAyLCAyNTIsIDI1LCAxODYsIDIyLCAyLCAKKyAgICA3NSwgMTg2LCAyMiwgMiwgMjMxLCA4MywgMTg2LCAyMiwgMiwgNjgsIDE4NiwgMjIsIDIsIDIwNiwgMTc4LCAxODYsIDIyLCAKKyAgICAyLCAxMjUsIDE0NiwgMTg2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIDI1MSwgCisgICAgNjQsIDE4NiwgMjIsIDIsIDc4LCAxODYsIDIyLCAyLCAyNTAsIDM0LCAxODYsIDIsIDI0NywgNTIsIDE4NiwgMiwgMjUwLCAKKyAgICAxODAsIDE4NiwgMiwgMjA1LCAxOTksIDE4NiwgMiwgMjA1LCAyMDQsIDE4NiwgMiwgMjIxLCA1MSwgMTg2LCAyLCAyMTIsIAorICAgIDE1NywgMTg2LCAyNDQsIDE2NiwgMTg2LCA1MiwgMjQ0LCAxNjYsIDE4NiwgMjEzLCAxMzEsIDI0MywgODUsIDE4NiwgMjEzLCAKKyAgICAxMzEsIDE0MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkyLCAxODYsIDIxNiwgOTgsIDIyNSwgOTEsIDE4NiwgMjE2LCA5OCwgCisgICAgMjI1LCA5MCwgMTg2LCAyNDEsIDg0LCA3NiwgMjA5LCAxMTMsIDgyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgODAsIAorICAgIDI1LCAyMDcsIDkyLCAyMTksIDIzMiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAyNSwgMjQyLCA4MywgMjQ1LCAKKyAgICAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyNDUsIDEzNywgMTg2LCAyMTQsIAorICAgIDE2OCwgMTMxLCAzLCAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAKKyAgICAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDIwOCwgNzAsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDUyLCAyMTUsIAorICAgIDI1MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAyNTMsIDMsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIAorICAgIDMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgCisgICAgMTMxLCAzLCAyMTcsIDU4LCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMTMsIDEyOCwgMjQ1LCAxMzcsIAorICAgIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgCisgICAgNTksIDI1LCAxMjAsIDI0MSwgODYsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIzOSwgMTQ3LCAyNDEsIAorICAgIDg2LCAxODYsIDEsIDIwOSwgMzIsIDI1MCwgMjU1LCA3NSwgMTg2LCAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDc1LCAxODYsIAorICAgIDEsIDIwNywgMTM2LCAyNTAsIDI1NSwgMjMxLCA4MywgMTg2LCAxLCAyNTAsIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgCisgICAgMjU1LCA2OCwgMTg2LCAyMiwgMiwgMjUwLCAyNTUsIDIwNiwgMTc4LCAyMjQsIDc0LCAxLCA2MywgMjI0LCA3NCwgMSwgMjUyLCAKKyAgICAyNSwgMjI0LCA3NCwgMSwgNzUsIDIyNCwgNzQsIDEsIDIzMSwgODMsIDIyNCwgNzQsIDEsIDY4LCAyMjQsIDc0LCAxLCAyMDYsIAorICAgIDE3OCwgMjI0LCA3NCwgMSwgMTI1LCAxNDYsIDIyNCwgNzQsIDEsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDEsIDEyNSwgCisgICAgMTU5LCAyMjQsIDc0LCAxLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDEsIDc0LCAyMjQsIDc0LCAxLCAyNTEsIDY0LCAyMjQsIAorICAgIDc0LCAxLCA3OCwgMjI0LCA3NCwgMSwgMjUwLCAzNCwgMjI0LCA3NCwgMSwgMTczLCAyMjQsIDc0LCAxLCAyMjksIDE0NCwgCisgICAgMjI0LCA3NCwgMSwgMjM5LCA4LCAyMjQsIDc0LCAxLCAyMzgsIDExOSwgMjI0LCA3NCwgMSwgMjIyLCAyMDMsIDIyNCwgNzQsIAorICAgIDEsIDI0NywgOTIsIDIyNCwgNzQsIDEsIDI0NiwgMTk5LCAyMjQsIDc0LCAxLCAyMzAsIDE4MSwgMjI0LCA3NCwgMSwgMjMwLCAKKyAgICAxNDksIDIyNCwgNzQsIDEsIDIyMSwgMTEsIDIyNCwgNzQsIDEsIDIwNywgMjQxLCAyMjQsIDc0LCAxLCAyMDcsIDIyOSwgCisgICAgMjI0LCA3NCwgMSwgMjQ0LCAxMjAsIDIyNCwgNzQsIDEsIDI0NCwgMTA0LCAyMjQsIDc0LCAxLCAyMjEsIDIyNywgMjI0LCAKKyAgICA3NCwgMSwgMjEwLCAyMiwgMjI0LCA3NCwgMSwgMjA5LCAxMDgsIDIyNCwgNzQsIDEsIDI0NCwgMjEyLCAyMjQsIDc0LCAxLCAKKyAgICAyNDQsIDEsIDIyNCwgNzQsIDEsIDIwMSwgMjAxLCAyMjQsIDc0LCAxLCAxODUsIDIyNCwgNzQsIDEsIDIxOCwgMjA4LCAyMjQsIAorICAgIDc0LCAxLCAyNDksIDMyLCAyMjQsIDc0LCAxLCAyNDgsIDk4LCAyMjQsIDc0LCAxLCAxOTIsIDIyNCwgNzQsIDEsIDE5OCwgCisgICAgMjI0LCA3NCwgMSwgMjE2LCAyMjAsIDIyNCwgNzQsIDEsIDIyOCwgMTEzLCAyMjQsIDc0LCAxLCAyMDYsIDg2LCAyMjQsIDc0LCAKKyAgICAxLCAyMTMsIDkwLCAyMjQsIDc0LCAxLCAyMTEsIDE2NCwgMjI0LCA3NCwgMSwgMjE1LCAzNiwgMjI0LCA3NCwgMSwgMTUyLCAKKyAgICAyMjQsIDc0LCAxLCAyMjcsIDc3LCAyMjQsIDc0LCAyMiwgMiwgMjUyLCAyNSwgMjI0LCA3NCwgMjIsIDIsIDc1LCAyMjQsIAorICAgIDc0LCAyMiwgMiwgMjMxLCA4MywgMjI0LCA3NCwgMjIsIDIsIDY4LCAyMjQsIDc0LCAyMiwgMiwgMjA2LCAxNzgsIDIyNCwgCisgICAgNzQsIDIyLCAyLCAxMjUsIDE0NiwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIAorICAgIDE1OSwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjI0LCA3NCwgMjIsIDIsIDc0LCAyMjQsIDc0LCAyMiwgMiwgCisgICAgMjUxLCA2NCwgMjI0LCA3NCwgMjIsIDIsIDc4LCAyMjQsIDc0LCAyMiwgMiwgMjUwLCAzNCwgMjI0LCA3NCwgMiwgMjUwLCAKKyAgICAxODAsIDIyNCwgNzQsIDIsIDIwNSwgMTk5LCAyMjQsIDc0LCAyLCAyMDUsIDIwNCwgMjI0LCA3NCwgMiwgMjUwLCAxMjMsIAorICAgIDIyNCwgNzQsIDI0NCwgMTY2LCAyMjQsIDc0LCA1MiwgMjQ0LCAxNjYsIDIyNCwgNzQsIDI1MSwgMTQ2LCA1NCwgMjI0LCA3NCwgCisgICAgMiwgMjM2LCAwLCAyMjQsIDc0LCAxNywgMjAyLCA4NCwgMjI0LCA3NCwgMTcsIDEwNSwgMjI0LCA3NCwgMTcsIDEwOCwgMjI0LCAKKyAgICA3NCwgMTcsIDE0NywgMjI0LCA3NCwgMTcsIDE0OSwgMjI0LCA3NCwgMTcsIDE3MCwgMjI0LCA3NCwgMTcsIDE5NSwgMjI0LCAKKyAgICA3NCwgMTcsIDIxMywgMTExLCAyMjQsIDc0LCAxNywgMTk5LCAyMjQsIDc0LCAxNywgMjIyLCA2MywgMjA5LCAyMzksIDEsIAorICAgIDYzLCAyMDksIDIzOSwgMSwgMjUyLCAyNSwgMjA5LCAyMzksIDEsIDc1LCAyMDksIDIzOSwgMSwgMjMxLCA4MywgMjA5LCAKKyAgICAyMzksIDEsIDY4LCAyMDksIDIzOSwgMSwgMjA2LCAxNzgsIDIwOSwgMjM5LCAxLCA3NCwgMjA5LCAyMzksIDEsIDI1MSwgNjQsIAorICAgIDIwOSwgMjM5LCAxLCA3OCwgMjA5LCAyMzksIDEsIDI1MCwgMzQsIDIwOSwgMjM5LCAxLCAxNzMsIDIwOSwgMjM5LCAxLCAKKyAgICAyMjksIDE0NCwgMjA5LCAyMzksIDEsIDIzOSwgOCwgMjA5LCAyMzksIDEsIDIzOCwgMTE5LCAyMDksIDIzOSwgMSwgMjIyLCAKKyAgICAyMDMsIDIwOSwgMjM5LCAxLCAyNDcsIDkyLCAyMDksIDIzOSwgMSwgMjQ2LCAxOTksIDIwOSwgMjM5LCAxLCAyMzAsIDE4MSwgCisgICAgMjA5LCAyMzksIDEsIDIzMCwgMTQ5LCAyMDksIDIzOSwgMSwgMjIxLCAxMSwgMjA5LCAyMzksIDEsIDIwNywgMjQxLCAyMDksIAorICAgIDIzOSwgMSwgMjA3LCAyMjksIDIwOSwgMjM5LCAxLCAyNDQsIDEyMCwgMjA5LCAyMzksIDEsIDI0NCwgMTA0LCAyMDksIDIzOSwgCisgICAgMSwgMjIxLCAyMjcsIDIwOSwgMjM5LCAxLCAyMTAsIDIyLCAyMDksIDIzOSwgMSwgMjA5LCAxMDgsIDIwOSwgMjM5LCAxLCAKKyAgICAyNDQsIDIxMiwgMjA5LCAyMzksIDEsIDI0NCwgMSwgMjA5LCAyMzksIDEsIDIwMSwgMjAxLCAyMDksIDIzOSwgMSwgMTg1LCAKKyAgICAyMDksIDIzOSwgMSwgMjE4LCAyMDgsIDIwOSwgMjM5LCAxLCAyNDksIDMyLCAyMDksIDIzOSwgMSwgMjQ4LCA5OCwgMjA5LCAKKyAgICAyMzksIDEsIDE5MiwgMjA5LCAyMzksIDEsIDE5OCwgMjA5LCAyMzksIDEsIDIxNiwgMjIwLCAyMDksIDIzOSwgMSwgMjI4LCAKKyAgICAxMTMsIDIwOSwgMjM5LCAxLCAyMDYsIDg2LCAyMDksIDIzOSwgMSwgMjEzLCA5MCwgMjA5LCAyMzksIDEsIDIxNSwgMzYsIAorICAgIDIwOSwgMjM5LCAxLCAxNTIsIDIwOSwgMjM5LCAxLCAyMTUsIDE4NSwgMjA5LCAyMzksIDIsIDI1MCwgMTgwLCAyMDksIDIzOSwgCisgICAgMiwgMjA1LCAxOTksIDIwOSwgMjM5LCAyMiwgMiwgMjUyLCAyNSwgMjA5LCAyMzksIDIyLCAyLCA3NSwgMjA5LCAyMzksIDIyLCAKKyAgICAyLCAyMzEsIDgzLCAyMDksIDIzOSwgMjIsIDIsIDY4LCAyMDksIDIzOSwgMjIsIDIsIDIwNiwgMTc4LCAyMDksIDIzOSwgMjIsIAorICAgIDIsIDc0LCAyMDksIDIzOSwgMjIsIDIsIDI1MSwgNjQsIDIwOSwgMjM5LCAyMiwgMiwgNzgsIDIwOSwgMjM5LCAyMiwgMiwgCisgICAgMjUwLCAzNCwgMjA5LCAyMzksIDIsIDIwNSwgMjA0LCAyMDksIDIzOSwgMiwgMjIxLCA1MSwgMjA5LCAyMzksIDE3LCAyMDIsIAorICAgIDg0LCAyMDksIDIzOSwgMTcsIDEwNSwgMjA5LCAyMzksIDE3LCAxMDgsIDIwOSwgMjM5LCAxNywgMTQ3LCAyMDksIDIzOSwgCisgICAgMTcsIDE0OSwgMjA5LCAyMzksIDE3LCAxNzAsIDIwOSwgMjM5LCAxNywgMTk1LCAyMDksIDIzOSwgMTcsIDIxMywgMTExLCAKKyAgICAyMDksIDIzOSwgMTcsIDE5OSwgMjA5LCAyMzksIDE3LCAyMjIsIDYzLCAyNTEsIDY4LCAxLCAxNzMsIDI1MSwgNjgsIDEsIAorICAgIDIyOSwgMTQ0LCAyNTEsIDY4LCAxLCAyMjIsIDIwMywgMjUxLCA2OCwgMSwgMjAxLCAyMDEsIDI1MSwgNjgsIDEsIDIxMCwgCisgICAgMjIsIDI1MSwgNjgsIDEsIDI1MCwgMjU1LCAyMTAsIDIyLCAyNTEsIDY4LCAxLCAxODUsIDI1MSwgNjgsIDEsIDIxOCwgMjA4LCAKKyAgICAyNTEsIDY4LCAxLCAyNDksIDMyLCAyNTEsIDY4LCAxLCAxOTIsIDI1MSwgNjgsIDEsIDIzMCwgMTgxLCAyNTEsIDY4LCAxLCAKKyAgICAyNDYsIDE5OSwgMjUxLCA2OCwgMSwgMjA5LCAxMDgsIDI1MSwgNjgsIDEsIDIxNiwgMjIwLCAyNTEsIDY4LCAxLCAyMjgsIAorICAgIDExMywgMjUxLCA2OCwgMSwgMjE1LCAzNiwgMjUxLCA2OCwgMSwgMjIxLCAxMSwgMjUxLCA2OCwgMSwgMTUyLCAyNTEsIDY4LCAKKyAgICAxLCA2MywgMjUxLCA2OCwgMSwgMjQ0LCAyMTIsIDI1MSwgNjgsIDEsIDI0NCwgMSwgMjUxLCA2OCwgMSwgMjM5LCA4LCAyNTEsIAorICAgIDY4LCAxLCAyNTAsIDI1NSwgMjM5LCA4LCAyNTEsIDY4LCAxLCAyMzgsIDExOSwgMjUxLCA2OCwgMSwgMjQ4LCA5OCwgMjUxLCAKKyAgICA2OCwgMSwgMjMwLCAxNDksIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAyMjgsIDExMywgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIAorICAgIDIxNiwgMjIwLCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI3LCAxMzUsIDIxNiwgMjIwLCAyNTEsIDY4LCAyMiwgMiwgNjMsIAorICAgIDI1MSwgNjgsIDIyLCAyLCAyNTIsIDI1LCAyNTEsIDY4LCAyMiwgMiwgNzUsIDI1MSwgNjgsIDIyLCAyLCAyMzEsIDgzLCAKKyAgICAyNTEsIDY4LCAyMiwgMiwgNjgsIDI1MSwgNjgsIDIyLCAyLCAyMDYsIDE3OCwgMjUxLCA2OCwgMjIsIDIsIDc0LCAyNTEsIAorICAgIDY4LCAyMiwgMiwgMjUwLCAxMywgMjUxLCA2OCwgMjIsIDIsIDc4LCAyNTEsIDY4LCAyMiwgMiwgMjUxLCA2NCwgMjUxLCA2OCwgCisgICAgMjIsIDIsIDI1MCwgMjQ3LCAyNTEsIDY4LCAyLCAyMjksIDg2LCAyNTEsIDY4LCAxNywgMjAyLCA4NCwgMjUxLCA2OCwgMTcsIAorICAgIDEwNSwgMjUxLCA2OCwgMTcsIDEwOCwgMjUxLCA2OCwgMTcsIDE0NywgMjUxLCA2OCwgMTcsIDE0OSwgMjUxLCA2OCwgMTcsIAorICAgIDE3MCwgMjUxLCA2OCwgMTcsIDE5NSwgMjUxLCA2OCwgMTcsIDIxMywgMTExLCAyNTEsIDY4LCAxNywgMTk5LCAyNTEsIDY4LCAKKyAgICAxNywgMjIyLCA2MywgMjUxLCA2OCwgNDIsIDIwOSwgMTUyLCAyNTEsIDY4LCA0MiwgMjA3LCAxNTEsIDI1MSwgNjgsIDIsIDUsIAorICAgIDIxNCwgMTY3LCAyNTEsIDY4LCAyLCAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE1LCAxMzYsIDI1MSwgNjgsIDE2LCAyMDUsIAorICAgIDIzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIyLCAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDYzLCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDQsIDMwLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNiwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgCisgICAgNiwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAorICAgIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyMjMsIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDYsIDEsIDIzOSwgOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCAKKyAgICA0OCwgNiwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIAorICAgIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMCwgCisgICAgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNywgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjEsIDM3LCAKKyAgICAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDQsIDIxMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCA0OSwgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAKKyAgICAyNDYsIDQ4LCA2LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDYsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKKyAgICAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgCisgICAgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjIsIAorICAgIDIwMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNCwgMzAsIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDUsIDEsIDIwMiwgMjEzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAxOTgsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDUsIDEsIDIwMiwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzEsIDgzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKKyAgICAxLCAyMDYsIDE3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc4LCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDIyMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM5LCA4LCAyMDQsIDkyLCAKKyAgICAyNDYsIDQ4LCA1LCAxLCAyMjksIDI2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDEsIDU2LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA1LCAxLCAyMDIsIDE5NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAzMSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCisgICAgMSwgMjQxLCA3NSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIwLCA3NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAKKyAgICAyMzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMSwgMzcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NCwgMjEyLCAKKyAgICAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDI0NywgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQ3LCAxOTMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIxNywgMTkxLCAyMDQsIDkyLCAKKyAgICAyNDYsIDQ4LCA1LCAxLCAyMzYsIDIyOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM2LCAxMjQsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDUsIDEsIDIzNiwgNTEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNywgOTIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAorICAgIDEsIDIxMSwgMTE2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTIsIDE0MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgCisgICAgMjA1LCAxOTAsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMDIsIDg0LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTA1LCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCAxNywgMTA4LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgCisgICAgMTQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTcwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk1LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCAxNywgMjEzLCAxMTEsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxOTksIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMjIsIAorICAgIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA5LCAxNTIsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMDcsIDE1MSwgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgNTMsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMzksIDE1MywgMjA0LCA5MiwgMjQ2LCAKKyAgICA0OCwgNDIsIDI0MCwgMTgsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMTIsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgCisgICAgMjEzLCAxMDUsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyNDEsIDEzNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIyMiwgNTgsIAorICAgIDIwNCwgOTIsIDI0NiwgNDgsIDIyMCwgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE4NSwgMjE5LCA0OSwgCisgICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTczLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjgsIDExMywgMjE5LCAKKyAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTkyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDQsIDIxMiwgCisgICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAyLCAxMTYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAorICAgIDIwNiwgODYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIyMiwgMjAzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAorICAgIDc3LCAxLCAxNTIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIzOSwgOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKKyAgICA3NywgMSwgMjI5LCAxNDQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNSwgMzYsIDIxOSwgNDksIDI0NiwgNjYsIAorICAgIDIzNywgNzcsIDEsIDI0OSwgMzIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NywgOTIsIDIxOSwgNDksIDI0NiwgCisgICAgNjYsIDIzNywgNzcsIDEsIDIxMCwgMjIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwOSwgMTA4LCAyMTksIDQ5LCAKKyAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDEsIDIwMSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE4LCAyMDgsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNiwgMjIwLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKKyAgICAyNDAsIDEwOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ2LCAxOTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDEsIDYzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCisgICAgMSwgNzUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDc4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKKyAgICA2OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjA3LCAzOSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCisgICAgMjM1LCAxNzEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTksIDE4NCwgMjE5LCA0OSwgMjQ2LCA2NiwgCisgICAgMjM3LCA3NywgMSwgNDYsIDIzMCwgNTQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTAsIDY5LCAyMTksIAorICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjI2LCAxODUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAKKyAgICAyMjMsIDE2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDE1OSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKKyAgICA3NywgMSwgNDYsIDIwNCwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjIyLCAyMDUsIDIxOSwgNDksIAorICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMDMsIDEyNCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIAorICAgIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIDIwOCwgMTYxLCAyMTksIDQ5LCAKKyAgICAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCisgICAgMjE1LCAyNDUsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAxNDMsIAorICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgCisgICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKKyAgICA3NywgMjE0LCAyMzksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAxNjMsIAorICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIAorICAgIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMjA4LCAxNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgCisgICAgNjIsIDIwNiwgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIAorICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDIyNiwgMjU0LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAyMDgsIDE2MSwgCisgICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCisgICAgMjI2LCAyNTQsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAxNDMsIAorICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MiwgMjQwLCA1LCA5LCAyLCA2MywgOSwgCisgICAgMiwgMzQsIDIzLCA2MywgOSwgMiwgMzQsIDIzLCAyNDksIDE1LCA5LCAyLCAzNCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgCisgICAgOSwgMiwgMzQsIDIzLCAxNTIsIDksIDIsIDM0LCAyMywgMjMxLCA4NSwgOSwgMiwgMzQsIDIzLCAyMjgsIDkzLCAyMzcsIAorICAgIDIwOCwgOSwgMiwgMzQsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMzQsIDIzLCAyMTUsIDIyLCA5LCAyLCAyNTQsIDM0LCA5LCAyLCAKKyAgICAyNTEsIDIzMiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNTAsIDczLCA5LCAyLCAyNTEsIDIzMywgMjMsIDI0MiwgMzAsIDIzNywgCisgICAgMjA4LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjQ2LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjMzLCAyMDksIAorICAgIDE0MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAxNTIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAorICAgIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA1OSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjgsIDk0LCA5LCAyLCAyNTEsIDIzMywgCisgICAgMjMsIDIxMywgMjcsIDksIDIsIDI1MSwgMjMzLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDI1MSwgMjMzLCAKKyAgICAyMzcsIDIwOCwgOSwgMiwgMjUxLCAxNDksIDksIDIsIDI1MSwgMTUwLCAyMywgMjQ4LCAyNTIsIDksIDIsIDI1MSwgMTUwLCAKKyAgICAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAKKyAgICAyNTEsIDE1MCwgMjMsIDIxMywgODgsIDksIDIsIDI1MSwgMTUwLCAyMywgMjA5LCAyNDIsIDksIDIsIDI1MSwgMTIyLCA5LCAKKyAgICAyLCAyNTEsIDQ3LCA5LCAyLCAyNTEsIDQ4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjUxLCA0OCwgMjMsIDIxMiwgMjQ1LCA5MSwgCisgICAgMjM4LCA1NSwgOSwgMiwgMjUxLCAzOSwgOSwgMiwgMjUxLCA0MCwgMjMsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAKKyAgICAyNDMsIDE4NiwgOSwgMiwgMjUxLCA0MCwgMjMsIDIzOCwgNTUsIDksIDIsIDI1MSwgNDAsIDIzLCAxNTIsIDksIDIsIDI1MSwgCisgICAgNDAsIDIzLCAyMzAsIDI3LCA5LCAyLCAyNTEsIDQwLCAyMywgMjI5LCAxMDAsIDksIDIsIDI1MSwgNDAsIDIzLCAyMTMsIDQzLCAKKyAgICA5LCAyLCAyNTEsIDQwLCAyMywgMjA2LCAxODYsIDksIDIsIDI1MSwgMzYsIDksIDIsIDI1MSwgMjgsIDksIDIsIDI1MCwgCisgICAgMjQzLCA5LCAyLCAyNTAsIDI0NCwgMjMsIDIxMywgNDMsIDksIDIsIDI1MCwgMjMxLCA5LCAyLCAyNTAsIDIzMiwgMTE1LCAKKyAgICAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDEyNiwgMjA4LCAyMTksIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgCisgICAgMjE5LCAyNTEsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NiwgOSwgMiwgMjUwLCAyMzIsIDkxLCAyMjMsIDk3LCAyMTEsIDE3NiwgCisgICAgOSwgMiwgMjUwLCAyMDAsIDksIDIsIDI1MCwgMTcwLCA5LCAyLCAyNTAsIDEzOCwgOSwgMiwgMjUwLCAxMzksIDIzLCAyMjgsIAorICAgIDE4MywgOSwgMiwgMjUwLCAxMTAsIDksIDIsIDI1MCwgODAsIDksIDIsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzYsIDIwMiwgCisgICAgMzUsIDIwOSwgMTQxLCA5LCAyLCAyNTAsIDc2LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIAorICAgIDc2LCAyMDcsIDE5OCwgMTE1LCAyMDcsIDE5OCwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIxOSwgOTYsIDksIDIsIDI1MCwgCisgICAgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCAKKyAgICA3NiwgMjQ1LCAxMjQsIDI1MCwgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDczLCA5LCAyLCAKKyAgICAyNTAsIDY5LCA5LCAyLCAyNDksIDMyLCA5LCAyLCAyNDksIDE1LCA5LCAyLCAyNDksIDksIDksIDIsIDI0OSwgMywgOSwgMiwgCisgICAgMjQ4LCAyNTMsIDksIDIsIDI0OCwgMjU0LCAxMTUsIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1MiwgOSwgMiwgMTQyLCA5LCAyLCAKKyAgICAyNDgsIDIzMCwgOSwgMiwgMjQ4LCA4NiwgOSwgMiwgMjQ4LCA4NywgMjMsIDYzLCA5LCAyLCAyNDgsIDg3LCAyMywgMjM4LCAKKyAgICAyMjQsIDksIDIsIDI0OCwgODcsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQ3LCAxOTMsIDksIDIsIDI0NywgCisgICAgMTk0LCAxMTUsIDI0NywgMTk0LCAyNTEsIDIzMiwgOSwgMiwgMjQ3LCAxOTQsIDExNSwgMjQ3LCAxOTQsIDIwNiwgMjU1LCA5LCAKKyAgICAyLCAyNDcsIDE5NCwgMjQ1LCAxMjQsIDI0NywgMTkzLCA5LCAyLCAyNDcsIDE3MSwgOSwgMiwgMjQ3LCAxNzIsIDExNSwgCisgICAgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTYwLCA5LCAyLCAyNDcsIDE1OSwgOSwgMiwgMjQ0LCAyMTIsIDksIDIsIDI0NCwgMjAzLCAKKyAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDM0LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAorICAgIDIzLCAyNTAsIDI0MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCisgICAgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOSwgOCwgOSwgMiwgMjQ0LCAyMDQsIAorICAgIDIyOSwgNjksIDIzLCAyMzksIDksIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgODEsIAorICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzcsIAorICAgIDIxOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAxNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAKKyAgICAyMjQsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAyMjUsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIAorICAgIDIyOSwgNjksIDIzLCAyMzAsIDEyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyNDQsIAorICAgIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjQwLCA5MSwgCisgICAgMjI1LCA3OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAorICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NiwgOSwgMiwgCisgICAgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTIsIDE2MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDksIDI0MiwgCisgICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDcsIDQxLCA5MSwgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCisgICAgNjksIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjQ0LCAxNzUsIDksIDIsIDI0NCwgMTU0LCA5LCAyLCAyNDQsIDE1MywgOSwgMiwgCisgICAgMjQ0LCAxNTIsIDksIDIsIDI0MywgMjMzLCA5LCAyLCAyNDMsIDIxNSwgOSwgMiwgMjQzLCAxODgsIDksIDIsIDI0MywgMTg5LCAKKyAgICAyMywgMjEzLCA0MywgOSwgMiwgMjQzLCAxODYsIDksIDIsIDI0MywgMTc2LCA5LCAyLCAyNDMsIDE3NywgMjI5LCAyMzIsIAorICAgIDEwNiwgMjM3LCAyMDksIDI0MywgMTU2LCA5LCAyLCAyNDMsIDE1NiwgOSwgMiwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgCisgICAgMTE1LCAyNDIsIDQyLCA5LCAyLCAyNDIsIDQzLCAyMzcsIDIwOCwgOSwgMiwgMjQyLCA0MywgMjEzLCAyNCwgOSwgMiwgMjQyLCAKKyAgICA0MCwgOSwgMiwgMjQyLCA0MSwgMjMsIDI0MSwgNCwgOSwgMiwgMjQyLCAzOSwgOSwgMiwgMjQyLCAzNywgOSwgMiwgMjQyLCAKKyAgICAzNiwgOSwgMiwgMjQyLCAzNSwgOSwgMiwgMjQyLCAzMSwgOSwgMiwgMjQyLCAyOSwgOSwgMiwgMjQyLCAzMCwgMjM3LCAyMDgsIAorICAgIDksIDIsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAyOCwgOSwgMiwgMjQyLCAyMSwgOSwgMiwgCisgICAgNzQsIDksIDIsIDE4OCwgMjMsIDIxOSwgOTYsIDksIDIsIDE4OCwgMTE1LCAxODgsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgCisgICAgOSwgMiwgMjQxLCAxOTAsIDksIDIsIDI0MSwgMTkxLCAyMywgMzQsIDkxLCAyMzcsIDE2MCwgOTEsIDI0NCwgMjEyLCA5LCAyLCAKKyAgICAyNDEsIDE5MSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDEsIDE5MSwgMjMsIAorICAgIDIxNSwgOCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDY4LCA5LCAyLCAyNDEsIAorICAgIDE2MywgOSwgMiwgMjQxLCAxNTEsIDksIDIsIDI0MSwgMTIyLCA5LCAyLCAyNDEsIDkyLCA5LCAyLCAyNDEsIDkzLCAyMywgCisgICAgMjM4LCAyMzIsIDksIDIsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDI0MSwgOTMsIDIzLCAyMjUsIAorICAgIDIwLCA5LCAyLCAyNDEsIDkzLCAyNDUsIDEyNCwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjE5LCAyNTEsIDI0MSwgOTIsIAorICAgIDksIDIsIDI0MSwgOTMsIDIxMSwgMTc2LCA5LCAyLCAyNDEsIDI1LCA5LCAyLCAyNDEsIDIyLCA5LCAyLCAyNDEsIDQsIDksIAorICAgIDIsIDI0MCwgMTc5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDYzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgCisgICAgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIAorICAgIDI1MCwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0OSwgMTUsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAKKyAgICAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAorICAgIDE1MiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjMxLCA4NiwgCisgICAgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzEsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzIsIAorICAgIDIxMSwgMTc2LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMTEzLCA5LCAKKyAgICAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyNywgMTQ4LCA5LCAKKyAgICAyLCAyNDAsIDE4MCwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIwNywgNDAsIDksIDIsIDI0MCwgMTgwLCAKKyAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjM5LCA4LCA5LCAyLCAyMzksIDksIDIzNywgMjA4LCA5LCAyLCAyMzksIDYsIDksIDIsIAorICAgIDIzOSwgNywgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIzOSwgNywgMjMsIDM0LCA5MSwgMTUyLCA5LCAKKyAgICAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOSwgNywgMjMsIDI1MSwgMTUwLCAyMDksIDE0MiwgOTEsIAorICAgIDIxMCwgMTAsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDc1LCA5LCAyLCAKKyAgICAyMzksIDcsIDIzLCAyNTAsIDc0LCA5MSwgMjM4LCAyNDYsIDksIDIsIDIzOSwgNywgMjMsIDI0OSwgMTUsIDksIDIsIDIzOSwgCisgICAgNywgMjMsIDI0OCwgMjMxLCA5MSwgMjE2LCAyMjAsIDksIDIsIDIzOSwgNywgMjMsIDI0NywgMTYwLCA5LCAyLCAyMzksIDcsIAorICAgIDIzLCAyNDcsIDE2MSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDQsIDIxMiwgOSwgMiwgMjM5LCA3LCAyMywgCisgICAgMjQzLCAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMywgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAKKyAgICA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCAxMjIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIzLCA5MSwgMjI4LCAxMTMsIAorICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjQsIDksIAorICAgIDIsIDIzOSwgNywgMjMsIDIzOCwgODEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNzksIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgCisgICAgODAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCA2NCwgOTEsIDIxMSwgMTAsIDksIDIsIDIzOSwgNywgMjMsIAorICAgIDIzNywgMTYwLCA5MSwgMjI2LCAyNDAsIDkxLCAyNDEsIDQsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgMTQwLCA5LCAyLCAKKyAgICAyMzksIDcsIDIzLCAyMzcsIDE0MSwgOTEsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDQsIDkxLCAyMjcsIAorICAgIDE0OCwgOSwgMiwgMjM5LCA3LCAyMywgMjM2LCAyMSwgOSwgMiwgMjM5LCA3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAorICAgIDIsIDIzOSwgNywgMjMsIDIzMCwgMjEwLCA5MSwgMjM2LCAyNywgOTEsIDI1MCwgNzUsIDksIDIsIDIzOSwgNywgMjMsIDIzMCwgCisgICAgMTIsIDksIDIsIDIzOSwgNywgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzksIDcsIAorICAgIDIzLCAyMjksIDk1LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyMDgsIDkxLCAyNTAsIDIzMSwgOSwgMiwgCisgICAgMjM5LCA3LCAyMywgMjI4LCAxMTMsIDksIDIsIDIzOSwgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMzksIAorICAgIDcsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MSwgCisgICAgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAxODUsIDksIDIsIDIzOSwgNywgMjMsIDIxNSwgOCwgOSwgMiwgMjM5LCAKKyAgICA3LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDQsIAorICAgIDkxLCAyMDcsIDE4MSwgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA5LCA5LCAyLCAyMzksIDcsIDIzLCAyMTAsIDIyMCwgOSwgMiwgCisgICAgMjM5LCA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOSwgNywgMjMsIDY4LCA5LCAyLCAyMzksIDcsIDIzLCAyMDcsIDI5LCA5LCAKKyAgICAyLCAyMzksIDcsIDIzLCAyMDcsIDMwLCA5MSwgMjQyLCA0MiwgOSwgMiwgMjM5LCA3LCAxMTUsIDIzOSwgNiwgOSwgMiwgCisgICAgMjM5LCAxLCA5LCAyLCAyMzksIDIsIDI0NSwgMTI0LCAyMzksIDEsIDksIDIsIDIzOCwgMjU1LCA5LCAyLCAyMzksIDAsIAorICAgIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDYsIDksIDIsIDIzOCwgMjQ3LCAKKyAgICAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDUsIDksIDIsIDIzOCwgCisgICAgMjQzLCA5LCAyLCAyMzgsIDIzNCwgOSwgMiwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCAKKyAgICAyMzMsIDExNSwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyNDUsIDEyNCwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjI0LCAKKyAgICA5LCAyLCAyMzgsIDIyMywgOSwgMiwgMjM4LCAyMTgsIDksIDIsIDIzOCwgMTYyLCA5LCAyLCAyMzgsIDE2MywgMjMsIDIyOCwgCisgICAgMTgzLCA5LCAyLCAyMzgsIDgxLCA5LCAyLCAyMzgsIDgyLCAyMywgNzQsIDksIDIsIDIzOCwgODIsIDIzLCA2OCwgOSwgMiwgCisgICAgMjM4LCA4MiwgMjQ1LCAxMjQsIDIzOCwgODEsIDksIDIsIDIzOCwgNzksIDksIDIsIDIzOCwgODAsIDExNSwgMjM4LCA3OSwgCisgICAgOSwgMiwgMjM4LCA4MCwgMjQ1LCAxMjQsIDIzOCwgNzksIDksIDIsIDIzOCwgNzYsIDksIDIsIDIzOCwgNjMsIDksIDIsIAorICAgIDIzOCwgNjQsIDIzNywgMjA4LCA5LCAyLCAyMzgsIDYxLCA5LCAyLCAyMzgsIDYyLCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAKKyAgICAyLCAyMzgsIDYyLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzgsIDYyLCAyMywgMjMxLCA4NSwgOSwgMiwgCisgICAgMjM4LCA2MiwgMjMsIDIyNiwgMjQwLCA5MSwgMjMxLCA4NSwgOSwgMiwgMjM4LCA2MiwgMjMsIDE4NSwgOSwgMiwgMjM4LCAKKyAgICA1NywgOSwgMiwgMjM4LCA1NSwgOSwgMiwgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDIzLCAKKyAgICAyNDksIDE1LCA5LCAyLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIAorICAgIDIzMCwgOSwgMiwgMjM3LCAyMzEsIDI0NSwgMTI0LCAyMzcsIDIzMCwgOSwgMiwgMjM3LCAyMjgsIDksIDIsIDIzNywgMjI5LCAKKyAgICAyMywgMjMwLCAxMiwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzAsIDEzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIAorICAgIDIzNywgMjI5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMTUsIDksIDkxLCAyMDcsIDE5NywgOSwgMiwgCisgICAgMjM3LCAyMjksIDIzNywgMjA4LCA5LCAyLCAyMzcsIDIxOSwgOSwgMiwgMjM3LCAyMjAsIDIzLCAzNCwgOTEsIDIyOCwgMTgzLCAKKyAgICA5LCAyLCAyMzcsIDIyMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzcsIDIyMCwgMTE1LCAyMzcsIDIyMCwgMjI2LCAyMzAsIDksIAorICAgIDIsIDIzNywgMjEyLCA5LCAyLCAyMzcsIDIxMCwgOSwgMiwgMjM3LCAyMTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzcsIDIwMiwgCisgICAgOSwgMiwgMjM3LCAyMDEsIDksIDIsIDIzNywgMTk3LCA5LCAyLCAyMzcsIDE5NiwgOSwgMiwgMTUyLCA5LCAyLCAyMzcsIAorICAgIDE2MCwgMjA5LCAxNDEsIDksIDIsIDIzNywgMTYwLCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAxNDAsIDksIDIsIDIzNywgMywgOSwgCisgICAgMiwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjM3LCA0LCAyMywgMjQ5LCAKKyAgICAxNSwgOSwgMiwgMjM3LCA0LCAyMywgMjQzLCAxNTYsIDksIDIsIDIzNywgNCwgMjMsIDIzOCwgMjU1LCA5LCAyLCAyMzcsIDQsIAorICAgIDIzLCAyMjksIDg0LCA5LCAyLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzcsIDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAKKyAgICAyMzcsIDQsIDIzLCA2OCwgOSwgMiwgMjM2LCAyNiwgOSwgMiwgMjM2LCAyMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDI1MCwgCisgICAgMjMxLCA5LCAyLCAyMzYsIDIyLCAyMywgMjM3LCAxNDAsIDksIDIsIDIzNiwgMjIsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM2LCAKKyAgICAyMiwgMjMsIDIyNywgOTIsIDksIDIsIDIzNiwgMjIsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzYsIDE3LCA5LCAyLCA3NSwgOSwgCisgICAgMiwgMjM1LCAyMDYsIDYzLCA5LCAyLCAyMzUsIDE2NiwgOSwgMiwgMjMxLCAxMTMsIDksIDIsIDIzMSwgMTE0LCAxMTUsIAorICAgIDIzMSwgMTE0LCAyNDcsIDE2MCwgOSwgMiwgMjMxLCAxMTQsIDExNSwgMjMxLCAxMTQsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIAorICAgIDg4LCA5LCAyLCAyMzEsIDg1LCA5LCAyLCAyMzEsIDg2LCAyNDMsIDIxNSwgOSwgMiwgMjMxLCA4NiwgMjE2LCA1NywgOSwgMiwgCisgICAgMjMxLCA4NiwgMTE1LCAyMzEsIDg2LCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjA3LCAzMCwgMTE1LCAyMDcsIDI5LCA5LCAKKyAgICAyLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMxLCA3NywgOSwgMiwgMjMxLCA3OCwgMjMsIDIzOCwgMjMzLCAyMDksIAorICAgIDE0MSwgOSwgMiwgMjMxLCA3NiwgOSwgMiwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAKKyAgICAyMzEsIDY3LCAyNDUsIDEyNCwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjE5LCAyNTEsIDIzMSwgNjYsIDksIDIsIDIzMSwgCisgICAgNjcsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIDU5LCA5LCAyLCAyMzEsIDQ5LCA5LCAyLCAyMzAsIDIyNCwgOSwgMiwgMjMwLCAKKyAgICAyMDksIDksIDIsIDE3MywgOSwgMiwgMjMwLCA0NCwgMjMsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUxLCAxMjIsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyNTEsIDEyMywgOTEsIDIyOCwgMjA3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MywgOSwgMiwgCisgICAgMjMwLCA0NCwgMjMsIDI0OSwgMTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjMwLCA0NCwgMjMsIAorICAgIDE0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0OCwgODYsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDEsIDIyLCA5LCAyLCAyMzAsIAorICAgIDQ0LCAyMywgMjQxLCA0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM5LCA4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyNDYsIAorICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIyNCwgOSwgMiwgCisgICAgMjMwLCA0NCwgMjMsIDIzOCwgMjI1LCA5MSwgMjEzLCA4OSwgOTEsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA4MSwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCA5MSwgMjE0LCAyMzAsIDksIAorICAgIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjMwLCAKKyAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMzAsIDQ0LCAKKyAgICAyMywgMjMxLCA2NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzMCwgMTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjksIDEwMCwgOSwgCisgICAgMiwgMjMwLCA0NCwgMjMsIDIyOSwgOTQsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjcsIDE0OCwgOSwgMiwgMjMwLCA0NCwgMjMsIAorICAgIDIyNiwgMjM5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAKKyAgICAyNDIsIDQyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgODEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIAorICAgIDIxLCA5MSwgMjA5LCAxODcsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNCwgCisgICAgMTU2LCA5MSwgMjIxLCAzNSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjIxLCAKKyAgICA0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxOCwgMTY3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE1LCAxNDUsIDksIDIsIDIzMCwgCisgICAgNDQsIDIzLCAyMTUsIDM2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDkwLCAKKyAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA0MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgOSwgOSwgMiwgMjMwLCA0NCwgMjMsIAorICAgIDIxMiwgMTk5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAxNDksIDksIDIsIDIzMCwgNDQsIDIzLCAyMTAsIDIyOSwgOSwgMiwgCisgICAgMjMwLCA0NCwgMjMsIDIwOSwgMjE4LCA5LCAyLCAyMzAsIDQ0LCAyMywgNjgsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDQwLCAKKyAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMiwgMjMsIDE4NSwgOSwgMiwgCisgICAgMjMwLCA0NCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjAyLCAzOSwgOSwgMiwgMjMwLCA0MiwgOSwgMiwgCisgICAgMjMwLCA0MywgMjQ1LCAxMjQsIDIzMCwgNDIsIDksIDIsIDIzMCwgMzIsIDksIDIsIDIzMCwgMjksIDksIDIsIDIzMCwgMjcsIAorICAgIDksIDIsIDIzMCwgMjYsIDksIDIsIDIzMCwgMjQsIDksIDIsIDIzMCwgMjUsIDExNSwgMjMwLCAyNCwgOSwgMiwgMjMwLCAxMiwgCisgICAgOSwgMiwgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzAsIDgsIDksIDIsIDIzMCwgOSwgMjMsIAorICAgIDI0OSwgMTUsIDksIDIsIDIzMCwgOSwgMjQ1LCAxMjQsIDIzMCwgOCwgOSwgMiwgMjMwLCA2LCA5LCAyLCAyMzAsIDUsIDksIAorICAgIDIsIDIyOSwgMjMxLCA5LCAyLCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIAorICAgIDIsIDIyOSwgMjMyLCAxMTUsIDIyOSwgMjMyLCAyMjgsIDk1LCAyMywgMTA2LCAxMTUsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgCisgICAgMjI5LCAxNzEsIDksIDIsIDIyOSwgMTAwLCA5LCAyLCAyMjksIDEwMSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyOSwgMTAxLCAKKyAgICAyMywgNjgsIDksIDIsIDIyOSwgMTAxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjI5LCA5NCwgOSwgMiwgMjI5LCA4NCwgOSwgMiwgCisgICAgMjI5LCA3MSwgOSwgMiwgMjI5LCA3MCwgOSwgMiwgMjI5LCA2OCwgOSwgMiwgMjI5LCA2OSwgMTE1LCAyMjksIDY4LCA5LCAyLCAKKyAgICAyMjgsIDIwOSwgOSwgMiwgMjI4LCAyMTAsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NCwgMjI4LCAyMTAsIDExNSwgMjM3LCAKKyAgICA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjI4LCAyMDcsIDksIDIsIDIyOCwgMjA1LCA5LCAyLCAyMjgsIDIwNiwgMjA2LCA2OSwgCisgICAgMTgsIDksIDIsIDIyOCwgMjA0LCA5LCAyLCAyMjgsIDE5NiwgOSwgMiwgMjI4LCAxOTcsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAorICAgIDE5NSwgOSwgMiwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTg0LCAyMTksIDI1MSwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTc3LCAKKyAgICA5LCAyLCAyMjgsIDE1NSwgOSwgMiwgMjI4LCAxMTMsIDksIDIsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCA2MywgOSwgCisgICAgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIAorICAgIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUxLCAzOSwgCisgICAgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUwLCA3NiwgMjAyLCAzNSwgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjI4LCAKKyAgICA5NSwgMjMsIDI0NCwgMTU0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOSwgOCwgCisgICAgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCAyMTksIDksIDIsIDIyOCwgOTUsIAorICAgIDIzLCAyMzcsIDIyMCwgOTEsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAyMywgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgCisgICAgMjM3LCAxNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCAKKyAgICA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NywgOTEsIAorICAgIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgCisgICAgMTAwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI5LCA4NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIAorICAgIDk1LCAyMywgMjI4LCAxOTYsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDE5NywgOTEsIDIzNywgNCwgOTEsIDYzLCA5LCAyLCAKKyAgICAyMjgsIDk1LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNywgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIAorICAgIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNiwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI1LCAyMCwgOSwgMiwgMjI4LCAKKyAgICA5NSwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjIzLCAxOTksIDksIDIsIDIyOCwgOTUsIAorICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMywgNDQsIDkxLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5NSwgCisgICAgMjMsIDIxMiwgMjQ1LCA5MSwgMjM4LCA1NiwgOTEsIDI0MSwgMjIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIDI0NSwgOTEsIAorICAgIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAxOTcsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIAorICAgIDE5OCwgOTEsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIAorICAgIDI1NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAxODgsIDkxLCAzNCwgCisgICAgOTEsIDIxMSwgMTEsIDkxLCAyMDEsIDIwMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDY4LCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCAKKyAgICA5MSwgNjMsIDksIDIsIDIyOCwgOTUsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgCisgICAgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNiwgMTg2LCAKKyAgICA5LCAyLCAyMjgsIDk1LCAyMTEsIDE3NiwgOSwgMiwgMjI4LCA5MiwgOSwgMiwgMjI4LCA5MywgMjMsIDIxMywgNDMsIDksIDIsIAorICAgIDIyOCwgOTMsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTMsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAorICAgIDkzLCAyMzcsIDIwOSwgMTE1LCAyMjgsIDkzLCAyMzcsIDIwOSwgMjEzLCA0MywgOSwgMiwgMjI4LCA4OCwgOSwgMiwgMjI4LCAKKyAgICAzMCwgOSwgMiwgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDIyOCwgMjgsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIAorICAgIDE4MywgOSwgMiwgMjI4LCAyOSwgMjMsIDIyOCwgMTg0LCA5MSwgMjE1LCAxNDUsIDksIDIsIDIyNywgMTQ4LCA5LCAyLCAKKyAgICAyMjcsIDEyOSwgOSwgMiwgMjI3LCAxMTcsIDksIDIsIDIyNywgOTIsIDksIDIsIDIyNiwgMjM5LCA5LCAyLCAyMjYsIDI0MCwgCisgICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI1MSwgMzksIDksIDIsIDIyNiwgMjM4LCAKKyAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDEsIDQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA1LCAyMDksIAorICAgIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCA0LCAKKyAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjksIDksIAorICAgIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI4LCA5MSwgMjUwLCA3NSwgOSwgMiwgCisgICAgMjI2LCAyMzgsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjgsIDExNCwgOTEsIDI1MCwgNzUsIDksIDIsIAorICAgIDIyNiwgMjM4LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCisgICAgMjI2LCAyMzgsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjEsIDg0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIAorICAgIDIxMiwgMTYzLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTIsIDE0MSwgOTEsIDI0NywgMTkzLCA5LCAyLCAKKyAgICAyMjYsIDIzOCwgMjMsIDIwNywgMTk3LCA5LCAyLCAyMjYsIDIzOCwgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyNDUsIAorICAgIDEyNCwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTksIDI1MSwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTEsIAorICAgIDE3NiwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjQsIDksIDIsIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAKKyAgICAyMzEsIDExNSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAyMTksIDI1MSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAKKyAgICAyMTMsIDI0LCA5LCAyLCAyMjYsIDIyNywgOSwgMiwgMjI2LCAyMjQsIDksIDIsIDIyNiwgMjIyLCA5LCAyLCAyMjYsIDIyMywgCisgICAgMTE1LCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIDExNSwgMjI2LCAyMjMsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAKKyAgICAyLCAxOTIsIDksIDIsIDIyNSwgMTc3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNSwgMTc3LCAyMzcsIDIwOCwgOSwgMiwgCisgICAgMjI1LCAxNzYsIDksIDIsIDIyNSwgMTQ4LCA5LCAyLCAyMjUsIDEwMCwgOSwgMiwgMjI1LCA3OSwgOSwgMiwgMjI1LCA3OCwgCisgICAgOSwgMiwgMjI1LCAyMCwgOSwgMiwgMjI0LCAyMjgsIDksIDIsIDIyNCwgMTU1LCA5LCAyLCAyMjQsIDExMCwgOSwgMiwgMjIzLCAKKyAgICAyNDYsIDksIDIsIDIyMywgMjQ3LCAxMTUsIDIyMywgMjQ2LCA5LCAyLCAyMjMsIDIzNSwgOSwgMiwgMjIzLCAyMzYsIDIzNywgCisgICAgMjA4LCA5LCAyLCAyMjMsIDIxNywgOSwgMiwgMjIzLCAyMDMsIDksIDIsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDIwMCwgMjMsIAorICAgIDYzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAKKyAgICAyMjMsIDIwMCwgMTE1LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIDIzLCAzNCwgOTEsIDIwMSwgCisgICAgMjAxLCA5LCAyLCAyMjMsIDIwMCwgMjQ1LCAxMjQsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDE5NywgOSwgMiwgMjIzLCAxOTgsIAorICAgIDIzLCA2MywgOSwgMiwgMjIzLCAxOTgsIDIzLCAzNCwgOTEsIDI0MywgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjMsIDI0MywgCisgICAgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjM3LCAyMDgsIDksIDIsIDIwMSwgMjAxLCA5LCAyLCAyMjMsIDEwOSwgOSwgMiwgMjIzLCAKKyAgICA5NiwgOSwgMiwgMjIzLCA5NywgMjMwLCAyMzgsIDksIDIsIDIyMywgOTcsIDIzLCAyMTIsIDIwMCwgMjA5LCAxNDEsIDksIDIsIAorICAgIDIyMywgOTcsIDIxOSwgMjUxLCAyMjMsIDk2LCA5LCAyLCAyMjMsIDk1LCA5LCAyLCAyMjMsIDg4LCAyMjEsIDI2LCA5LCAyLCAKKyAgICAyMjMsIDg3LCA5LCAyLCAyMjMsIDg2LCA5LCAyLCAyMjIsIDI0MCwgOSwgMiwgMjIyLCAyNDEsIDIzLCA2MywgOSwgMiwgCisgICAgMjIyLCAyNDEsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjIsIDI0MSwgMjEzLCAyNCwgOSwgMiwgMjIyLCAxMDAsIDksIDIsIAorICAgIDIyMiwgMTAxLCAyMywgNzQsIDksIDIsIDIyMiwgOTksIDksIDIsIDIyMiwgNjksIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIAorICAgIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIDIyNSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgCisgICAgMjIyLCA2NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjUwLCA3NSwgOSwgMiwgCisgICAgMjIyLCA2NiwgMjMsIDI1MCwgNzYsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTksIDksIDIsIAorICAgIDIyMiwgNjYsIDIzLCAyMjUsIDIxLCA5MSwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIyLCAKKyAgICAyNDAsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0MywgOSwgMiwgMjIyLCAKKyAgICA2NiwgMjMsIDIxMywgNDQsIDkxLCAzNCwgMjUwLCAyMzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCAKKyAgICA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDQsIDkxLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgCisgICAgMjMsIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxODYsIDksIDIsIDIyMiwgNTMsIDksIAorICAgIDIsIDIyMSwgODQsIDksIDIsIDIyMSwgNTYsIDksIDIsIDIyMSwgNDAsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAKKyAgICAyMzgsIDIyNCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIyNSwgNzksIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIAorICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMTUsIDksIDExNSwgMjIxLCA0MSwgMjI4LCA5MywgCisgICAgMjMsIDIxNSwgOCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjEsIDQxLCAyMDksIAorICAgIDE0MSwgOSwgMiwgMjIxLCA0MSwgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyNDUsIDEyNCwgMjIxLCA0MCwgOSwgMiwgCisgICAgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDEsIDIyOCwgOTMsIDExNSwgMjI4LCA5MiwgOSwgMiwgMjIxLCAzNSwgOSwgMiwgCisgICAgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0OCwgODYsIDksIAorICAgIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjQyLCAzNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzcsIDIxOSwgCisgICAgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIAorICAgIDIzLCAyMzAsIDI3LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMjEsIDM2LCAyNTEsIAorICAgIDE1MCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIxMiwgMTM4LCA5LCAyLCAyMjEsIDM2LCAKKyAgICAyNTEsIDE1MCwgMjMsIDIwNywgNDAsIDksIDIsIDIyMSwgMzYsIDIyOSwgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyMjEsIAorICAgIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NywgNjgsIDksIDIsIDE4NSwgOSwgMiwgMjE5LCAxNTksIDksIDIsIDIxOSwgMTIyLCAKKyAgICA5LCAyLCAyMTksIDk2LCA5LCAyLCAyMTgsIDIyMiwgOSwgMiwgMjE4LCAxNjcsIDksIDIsIDIxOCwgMTY4LCAyMywgNjMsIDksIAorICAgIDIsIDIxOCwgMTY4LCAyMywgMjUxLCAyMzIsIDksIDIsIDIxOCwgMTY4LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjE4LCAxNjgsIAorICAgIDIzLCAyNDcsIDE5MywgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NCwgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NSwgOSwgMiwgMjE4LCAKKyAgICAxNjgsIDIzLCAyMzUsIDE2NiwgOSwgMiwgMjE4LCAxNjgsIDIzLCA2OCwgOSwgMiwgMjE4LCAxNjgsIDIzLCAyMDcsIDQwLCAKKyAgICA5LCAyLCAyMTgsIDE2OCwgMjQ1LCAxMjQsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDEwOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAKKyAgICAyMzAsIDgsIDksIDIsIDIxOCwgMTEwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCisgICAgMjE4LCAxMTAsIDIxOSwgMjUxLCAyMTgsIDEwOSwgOSwgMiwgMjE2LCAyMjAsIDksIDIsIDIxNiwgMjE0LCA5LCAyLCAyMTYsIAorICAgIDU3LCA5LCAyLCAyMTUsIDE0NSwgOSwgMiwgMjE1LCAzNiwgOSwgMiwgMjE1LCAyMywgMjIxLCAyNiwgOSwgMiwgMjE1LCAyMiwgCisgICAgOSwgMiwgMjE1LCAyMywgMjMsIDYzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQyLCA0MiwgOSwgMiwgMjE1LCAyMywgMjMsIAorICAgIDI0MiwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAxNTIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMTUsIAorICAgIDIzLCAyMywgMjI4LCAxODMsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIyNCwgCisgICAgMTU1LCA5LCAyLCAyMTUsIDIzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjE1LCAyMywgMjMsIDIxNSwgOCwgOSwgMiwgMjE1LCAKKyAgICAyMywgMjMsIDIxMywgOSwgOSwgMiwgMjE1LCAyMywgMjMsIDIxMCwgMTAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDQwLCAKKyAgICA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCAzNSwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgNiwgOSwgMiwgMjE1LCAyMywgMjMsIAorICAgIDIwNiwgMjEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA2LCAxODYsIDksIDIsIDIxNSwgMjMsIDExNSwgMjE1LCAyMiwgOSwgMiwgCisgICAgMjE1LCAyMywgMjM3LCAyMDgsIDksIDIsIDIxNSwgOCwgOSwgMiwgMjE1LCA5LCAyMjgsIDk1LCAyMywgMjUwLCA3MywgOSwgCisgICAgMiwgMjE0LCAyMzgsIDksIDIsIDIxNCwgMjMwLCA5LCAyLCAyMTMsIDkwLCA5LCAyLCAyMTMsIDg4LCA5LCAyLCAyMTMsIDg5LCAKKyAgICAyMywgNjMsIDksIDIsIDIxMywgODksIDIzLCAyNDksIDE1LCA5LCAyLCAyMTMsIDg5LCAyMywgMjM4LCA1NSwgOSwgMiwgCisgICAgMjEzLCA4OSwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMTMsIDg5LCAyMywgMjEyLCAxOTcsIDksIDIsIDIxMywgODksIDIzLCAKKyAgICAyMDcsIDE4MSwgOSwgMiwgMjEzLCA4OSwgMjMsIDY4LCA5LCAyLCAyMTMsIDg5LCAyMywgMTA2LCA5MSwgNjMsIDksIDIsIAorICAgIDIxMywgODYsIDksIDIsIDIxMywgODQsIDksIDIsIDIxMywgNTksIDksIDIsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDIzNiwgCisgICAgMjYsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKKyAgICAyMjQsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMzgsIDIyNSwgMTE1LCAKKyAgICAyMzgsIDIyNCwgOSwgMiwgMjEzLCAzNiwgOSwgMiwgMjEzLCAzMSwgOSwgMiwgMjEzLCAyNywgOSwgMiwgMjEzLCAyNiwgOSwgCisgICAgMiwgMjEzLCAyMywgOSwgMiwgMjEzLCA5LCA5LCAyLCAyMTMsIDEwLCAyMywgNjMsIDksIDIsIDIxMywgMTAsIDIzLCAyMzEsIAorICAgIDY2LCA5LCAyLCAyMTMsIDMsIDksIDIsIDIxMywgNCwgMjMsIDYzLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDgsIDI1MywgOSwgMiwgCisgICAgMjEzLCA0LCAyMywgMjQ3LCAxNzEsIDksIDIsIDIxMywgNCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzgsIAorICAgIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAorICAgIDIsIDIxMywgNCwgMjMsIDIyOCwgMTc3LCA5LCAyLCAyMTMsIDQsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgCisgICAgMjIzLCAyMzUsIDksIDIsIDIxMywgNCwgMjMsIDIxNSwgOCwgOSwgMiwgMjEyLCAyNTMsIDksIDIsIDIxMiwgMjQ4LCA5LCAyLCAKKyAgICAyMTIsIDI0OSwgMjA5LCAxNDEsIDksIDIsIDIxMiwgMjQ5LCAxMTUsIDIxMiwgMjQ5LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAorICAgIDE2MCwgOSwgMiwgMjEyLCAyNDQsIDksIDIsIDIxMiwgMTk5LCA5LCAyLCAyMTIsIDIwMCwgMTE1LCAyMzAsIDIzOSwgMjEyLCAKKyAgICAxOTksIDksIDIsIDIxMiwgMTk3LCA5LCAyLCAyMTIsIDE5NiwgOSwgMiwgMjEyLCAxNjIsIDksIDIsIDIxMiwgMTYzLCAyMzcsIAorICAgIDIwOCwgOSwgMiwgMjEyLCAxNDksIDksIDIsIDIxMiwgMTQ3LCA5LCAyLCAyMTIsIDE0OCwgMTE1LCAyMTIsIDE0OCwgMjEyLCAKKyAgICAxOTcsIDksIDIsIDIxMiwgMTQwLCA5LCAyLCAyMTIsIDEzOCwgOSwgMiwgMjExLCAxMCwgOSwgMiwgMjExLCAxMSwgMTE1LCAKKyAgICAyMTEsIDEwLCA5LCAyLCAyMTAsIDIzMiwgOSwgMiwgMjEwLCAyMzEsIDksIDIsIDIxMCwgMjI5LCA5LCAyLCAyMTAsIDIyMCwgCisgICAgOSwgMiwgMjEwLCAyMTksIDksIDIsIDIxMCwgMTkzLCA5LCAyLCAyMTAsIDE5MiwgOSwgMiwgMjEwLCAyMiwgOSwgMiwgMjEwLCAKKyAgICAyMywgMjUwLCA1OSwgOSwgMiwgMjEwLCAyMywgMjMsIDIzNywgMywgOSwgMiwgMjEwLCAyMywgMjMsIDIyNCwgMTU1LCA5LCAKKyAgICAyLCAyMTAsIDIzLCAyMzcsIDIwOCwgOSwgMiwgMjEwLCAxMCwgOSwgMiwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMjIsIAorICAgIDEwMSwgMTE1LCAyMjIsIDEwMSwgMjQzLCAxNTcsIDExNSwgMjQzLCAxNTYsIDksIDIsIDIxMCwgMTEsIDIxMSwgMTc2LCA5LCAKKyAgICAyLCAyMDksIDI1NSwgOSwgMiwgMTYwLCAyMywgMjQ4LCA4NiwgOSwgMiwgMTYwLCAyMywgMjM3LCAyMTksIDksIDIsIDE2MCwgCisgICAgMjMsIDIxMywgNDMsIDksIDIsIDE2MCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAxNjAsIDIzLCAyMDcsIDE5NywgOSwgMiwgMTYwLCAKKyAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjA5LCAyNDIsIDksIDIsIDIwOSwgMjE4LCA5LCAyLCAyMDksIDE4NywgOSwgMiwgMjA5LCAKKyAgICAxODgsIDIzNywgMjA4LCA5LCAyLCAyMDksIDIsIDksIDIsIDIwOSwgMywgMjA5LCAxNDEsIDksIDIsIDIwOCwgMjI5LCA5LCAKKyAgICAyLCAyMDgsIDIwNiwgOSwgMiwgMjA4LCAyMDcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA4LCAyMDcsIDExNSwgMjA4LCAyMDYsIAorICAgIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA3LCAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIAorICAgIDIyNCwgOSwgMiwgMjA3LCAyMDMsIDksIDIsIDIwNywgMTk3LCA5LCAyLCAyMDcsIDE5NSwgOSwgMiwgMjA3LCAxOTEsIDksIAorICAgIDIsIDIwNywgMTgxLCA5LCAyLCAyMDcsIDE4MiwgMTE1LCAyMDcsIDE4MiwgMjAyLCAxMTcsIDExNSwgMjAyLCAxMTYsIDksIAorICAgIDIsIDY4LCA5LCAyLCAxMDYsIDIzNywgMjE5LCA5LCAyLCAxMDYsIDEwNiwgNjgsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxOSwgCisgICAgMTY5LCAxMTUsIDIxOSwgMTY5LCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMjEwLCAKKyAgICAxOTQsIDExNSwgMjEwLCAxOTMsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDEwNiwgMjE2LCA3MywgMTE1LCAxMDYsIDIxNiwgNzIsIAorICAgIDksIDIsIDIwNywgNDAsIDksIDIsIDIwNywgMzUsIDksIDIsIDIwNywgMjksIDksIDIsIDIwNywgMzAsIDIyOCwgMTc3LCA5LCAKKyAgICAyLCAyMDcsIDMwLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjA3LCAzMCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMDcsIDMwLCAyMywgCisgICAgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIwNywgMzAsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCAxMDYsIDIzNywgMjA4LCAKKyAgICA5LCAyLCAyMDcsIDMwLCAyMzcsIDIwOCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNSwgCisgICAgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMjUsIDksIDIsIDIwNywgNiwgOSwgMiwgMjA3LCA3LCAyMywgMjI4LCA5NCwgOSwgCisgICAgMiwgMjA3LCA3LCAyMywgMjI1LCAyMSwgOTEsIDI0NCwgMjEyLCA5LCAyLCAyMDcsIDcsIDIzLCAyMTMsIDg4LCA5LCAyLCAKKyAgICAyMDcsIDcsIDIzLCA2OCwgOSwgMiwgMjA3LCA1LCA5LCAyLCAyMDcsIDEsIDksIDIsIDIwNywgMiwgMjMsIDIyOSwgMjMxLCAKKyAgICA5LCAyLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIDIwNiwgMjU1LCA5LCAyLCAyMDcsIDAsIDIzNywgMjA4LCA5LCAyLCAyMDYsIAorICAgIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDI0NSwgMTI0LCAyMDYsIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDIxMywgMjQsIDksIDIsIAorICAgIDIwNiwgMjA4LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgMTUyLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgCisgICAgMjAxLCAyMDEsIDksIDIsIDIwNiwgMjA5LCAyMywgMjUxLCAzOSwgOSwgMiwgMjA2LCAyMDksIDIzLCAxNTIsIDksIDIsIAorICAgIDIwNiwgMjA5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQwLCA5LCAyLCAyMDYsIDIwOSwgMjMsIAorICAgIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgNDEsIDkxLCAyNDgsIDg2LCA5LCAyLCAKKyAgICAyMDYsIDIwNywgOSwgMiwgMjA2LCAyMDQsIDksIDIsIDIwNiwgMjAzLCA5LCAyLCAyMDYsIDE5OSwgOSwgMiwgMjA2LCAyMDAsIAorICAgIDIzLCA2MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE0MiwgOSwgMiwgMjA2LCAKKyAgICAyMDAsIDIzLCAyNDIsIDMxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIAorICAgIDI0NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKKyAgICAyMjQsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM3LCAyMzAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTUyLCA5LCAyLCAyMDYsIAorICAgIDIwMCwgMjMsIDIzMSwgODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMxLCA2NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzAsIAorICAgIDIwOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjYsIDIyMiwgOSwgMiwgCisgICAgMjA2LCAyMDAsIDIzLCAyMjQsIDExMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEzLCAKKyAgICA0MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMTIsIDE0NywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDIwMywgOSwgMiwgCisgICAgMjA2LCAyMDAsIDIzLCAxMDYsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIAorICAgIDIwMCwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTgsIDIzLCA2OCwgOSwgMiwgMjA2LCAKKyAgICAxODYsIDksIDIsIDIwNiwgMTg3LCAyMywgNjMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjI4LCAyMDksIDksIDIsIDIwNiwgCisgICAgMTg3LCAyMywgMjI4LCAxODMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwNiwgMTgyLCA5LCAyLCAKKyAgICAyMDYsIDE4NSwgOSwgMiwgMjA2LCAxODMsIDksIDIsIDIwNiwgMTc5LCA5LCAyLCAyMDYsIDE2NywgOSwgMiwgMjA2LCAxNjgsIAorICAgIDIzLCAyMjksIDIzMSwgOSwgMiwgMjA2LCAxNjYsIDksIDIsIDIwMiwgMTE2LCA5LCAyLCAyMDIsIDExNywgMjA5LCAxNDEsIAorICAgIDksIDIsIDIwMiwgMTE3LCAxMDMsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjAyLCAxMTIsIDksIDIsIDIwMiwgMTA1LCA5LCAyLCAKKyAgICAyMDIsIDkxLCA5LCAyLCAyMDIsIDM5LCA5LCAyLCAyMDIsIDQwLCAxMTUsIDIwMiwgMzksIDksIDIsIDIwMiwgMzgsIDksIDIsIAorICAgIDIwMiwgMzYsIDksIDIsIDIwMiwgMzcsIDIzMCwgMzEsIDIwOSwgMTQxLCA5LCAyLCAyMDIsIDMxLCA5LCAyLCAyMDIsIDIyLCAKKyAgICA5LCAyLCAyMDIsIDYsIDksIDIsIDIwMiwgNCwgOSwgMiwgMjAyLCA1LCAyMywgNjMsIDksIDIsIDIwMiwgMywgOSwgMiwgCisgICAgMjAyLCAyLCA5LCAyLCAyMjksIDI1NCwgMjQxLCAxMTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjUxLCAKKyAgICAxNTAsIDIzLCA2MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMjgsIDE5OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAKKyAgICAyMDcsIDQxLCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDIsIDksIDIsIDI0MywgMTU3LCA5MSwgMjEyLCAxOTksIDksIDIsIAorICAgIDI0MiwgNDEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAorICAgIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMyLCA5MSwgMjMwLCAxMywgOTEsIDYzLCA5LCAyLCAyMzksIDcsIAorICAgIDIzLCAyNTAsIDczLCA5LCAyLCAyMzgsIDE4OSwgOSwgMiwgMjM4LCA3MSwgOSwgMiwgMjM2LCAzLCA5LCAyLCAyMzAsIDQ0LCAKKyAgICAyMywgMjUwLCAyMDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTAsIDcyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NSwgOSwgCisgICAgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgCisgICAgMjMwLCA0NCwgMjMsIDIyNiwgMjIyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTg1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAKKyAgICAxOTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIwMywgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNiwgMjA4LCA5LCAyLCAyMjgsIAorICAgIDk1LCAyMywgMjM4LCA4MSwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgCisgICAgMjMsIDI0MSwgNSwgOTEsIDIyOCwgMzAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxOTksIDksIDIsIDIyNCwgMjI3LCA5LCAKKyAgICAyLCAyMjMsIDE5OCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyMjMsIDEwOCwgOSwgMiwgMjIyLCA2OCwgOSwgMiwgMjIyLCA2NywgCisgICAgOSwgMiwgMjIyLCA2NiwgMjMsIDI0OCwgMjUzLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM4LCA4MSwgOSwgMiwgMjIxLCA1NywgCisgICAgMjE1LCAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIxOCwgMjIzLCAyNTAsIDU5LCA5LCAyLCAyMTgsIDExMywgOSwgCisgICAgMiwgMjE1LCAyMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMDksIDEsIDksIDIsIDIwNywgNywgMjMsIDIyNSwgCisgICAgMjAsIDksIDIsIDEwNiwgNjgsIDksIDE0MSwgMiwgMTIwLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NSwgOSwgCisgICAgMTQxLCAyLCAyMzksIDE0NywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTIsIAorICAgIDg4LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyNTAsIDc1LCAKKyAgICA5LCAxNDEsIDIsIDIyMiwgNjQsIDI1MCwgNzUsIDksIDE0MSwgMiwgMTI2LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIAorICAgIDE0NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIxMiwgODgsIDI0MywgCisgICAgMTU2LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjQzLCAxNTYsIDksIAorICAgIDE0MSwgMiwgMjIyLCA2NCwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDY4LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAKKyAgICA2OCwgOSwgMTQxLCAyLCAyMTIsIDg4LCA2OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgNjgsIDksIDE0MSwgMiwgMjQxLCAxNDMsIAorICAgIDY4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDY4LCA5LCAxNDEsIDIsIDExOCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTIwLCAKKyAgICAyMzgsIDE2NCwgOSwgMTQxLCAyLCAxMjYsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMzgsIDE2NCwgOSwgCisgICAgMTQxLCAyLCAyMzksIDIzMywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEyLCA4OCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEzLCAKKyAgICAxMTIsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMzgsIAorICAgIDE2NCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyMCwgMjM4LCAxNjEsIDksIDE0MSwgMiwgMTI2LCAKKyAgICAyMzgsIDE2MSwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTYxLCAKKyAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIAorICAgIDYwLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKKyAgICA1OSwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMTMsIDU5LCA5LCAxNDEsIDIsIAorICAgIDI0MSwgMTQzLCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIxMywgNTksIDksIDE0MSwgMiwgMTE4LCAyMTMsIDU0LCAKKyAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1NCwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIAorICAgIDU1LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1NCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKKyAgICA1NCwgOSwgMTQxLCAyLCAyMTMsIDYwLCAyMywgMjM4LCAyNDcsIDkxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDYwLCAKKyAgICAyMywgMjM4LCAyNDcsIDkxLCAyMjQsIDExMCwgOSwgMTQxLCAyLCAxMTgsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyMCwgCisgICAgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjYsIDI0NywgMTU3LCAyMDYsIDY5LCAKKyAgICAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0NywgMTU2LCA5LCAxNDEsIAorICAgIDIsIDEyNiwgMjA2LCA2OSwgMjM5LCAxNTksIDI0MSwgNiwgOSwgMTQxLCAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAKKyAgICAyNDEsIDMsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExOCwgOSwgMTQxLCAyLCAyMzksIAorICAgIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgCisgICAgMjI3LCAxMTksIDYzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTksIDI0OSwgMjU1LCAKKyAgICA5LCAxNDEsIDIsIDIxMiwgODgsIDIwNiwgNjksIDIzOSwgMTU5LCAyNTAsIDcxLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIAorICAgIDY5LCAyMzksIDE1OSwgMjMxLCA1OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIAorICAgIDYzLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA2MCwgMjQ5LCAyNTUsIDksIDE0MSwgMiwgCisgICAgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgMTU5LCAyMDYsIDE4MSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjA2LCA2OSwgMjM5LCAKKyAgICAxNTksIDIwNiwgMTgwLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc0LCA5LCAxNDEsIDIsIAorICAgIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDczLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgCisgICAgMTU5LCAyMzEsIDcyLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc1LCA2MywgOSwgMTQxLCAKKyAgICAyLCAxMjAsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgCisgICAgMjM5LCAxNDcsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgCisgICAgMTQxLCAyLCAyMTIsIDg4LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMTgsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIAorICAgIDEyMCwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMTI2LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ4LCAyNDAsIAorICAgIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ4LCAKKyAgICAyNDAsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDc3LCA5LCAKKyAgICAxNDEsIDIsIDIyMiwgNzgsIDksIDE0MSwgMiwgMTE4LCAyNDEsIDIsIDksIDE0MSwgMiwgMTIwLCAyNDEsIDIsIDksIDE0MSwgCisgICAgMiwgMTE4LCAyMDksIDYxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDI0MywgMTU2LCA5LCAxNDEsIDIsIAorICAgIDIzOSwgMjMzLCAyMTIsIDc3LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMTgsIDIwOSwgNjEsIDIwNiwgNjksIDIzOSwgMTU5LCAKKyAgICA2MywgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDIwNiwgNjksIDIzOSwgMTU5LCA2MywgOSwgMTQxLCAyLCAxMTgsIDI0MSwgCisgICAgMTM5LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCA1NiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgCisgICAgMTE4LCAyMTIsIDc4LCA5LCAxNDEsIDIsIDM4LCAyNTAsIDYyLCAxMTgsIDIxNywgNTUsIDksIDE0MSwgMiwgMTE4LCAyMTcsIAorICAgIDU2LCAyMzcsIDIwMiwgOSwgMTQxLCAyLCAxMTgsIDE2MiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDExOCwgCisgICAgMjA5LCA2MCwgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMTIwLCAyMDksIDU3LCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAyMzksIAorICAgIDE1MywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjQwLCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMTA2LCAyMDYsIDY5LCAxOCwgCisgICAgOSwgMTQxLCAyLCAyMzksIDIzMywgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMTIsIDg4LCAxMDYsIDIwNiwgNjksIAorICAgIDE4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAxMDYsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAxMDYsIDIwNiwgCisgICAgNjksIDE4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDIxNywgMTc5LCAyLCAzOCwgMjUwLCAKKyAgICA2MiwgMjAzLCAyMzgsIDI0MywgMTQxLCA5LCAyMTcsIDE3OSwgMiwgODAsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgCisgICAgMjQzLCAyMjgsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgMjQzLCAyMjgsIDIwOCwgODEsIDksIDIxNywgMTc5LCAyLCAKKyAgICAyNDMsIDIyOCwgMjE3LCA2MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjEsIDQxLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAyMzMsIAorICAgIDIzLCAyMTIsIDE5NywgOSwgMiwgMjUxLCAxMjMsIDIzLCAyNDEsIDQsIDksIDIsIDI0OSwgMTYsIDIzLCAyNDMsIDE1NywgCisgICAgMjA5LCAxNDEsIDksIDIsIDI0OSwgNCwgMjMsIDI1MSwgMTQ5LCA5LCAyLCAyNDksIDQsIDIzLCAyMjIsIDEwMCwgOSwgMiwgCisgICAgMjQ5LCA0LCAyMywgMjAyLCAxMTYsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMywgMjIzLCAxMDksIDksIDIsIAorICAgIDI0NCwgMjEzLCAyMywgMjA5LCAyNDIsIDksIDIsIDI0NCwgMjA0LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MywgMTg5LCAyMywgCisgICAgMjMxLCA4NSwgOSwgMiwgMjQzLCAxODksIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDI0MywgMTg3LCAyMywgMjA3LCAyOSwgCisgICAgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgMjAwLCA5LCAyLCAyNDIsIDM4LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQyLCAzOCwgCisgICAgMjMsIDI1MCwgNzYsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQzLCAxNzYsIDksIDIsIDI0MiwgCisgICAgMzgsIDIzLCAyNDIsIDMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOSwgOCwgCisgICAgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOCwgODEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgCisgICAgMjQyLCAzOCwgMjMsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAxNTIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzcsIDMsIAorICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAKKyAgICAyNDIsIDM4LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjQyLCAzOCwgMjMsIAorICAgIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDgyLCA5LCAyLCAyNDIsIDM4LCAyMywgCisgICAgMjI4LCAyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQyLCAzOCwgMjMsIAorICAgIDIyNiwgMjI4LCA5MSwgMjM4LCA1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNSwgNzksIDksIDIsIDI0MiwgMzgsIDIzLCAKKyAgICAyMjQsIDIyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIAorICAgIDI0MiwgMzgsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjQyLCAzOCwgMjMsIDIxMywgNDMsIDksIDIsIDI0MiwgMzgsIDIzLCAKKyAgICAyMTIsIDE2MywgMjM3LCAyMDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjI4LCAxODMsIDksIDIsIDI0MSwgMTkxLCAyMywgCisgICAgMjE5LCA5NiwgOSwgMiwgMjQxLCAyMywgMjAzLCAxOTYsIDksIDIsIDI0MSwgNSwgMjQ1LCAxMjQsIDI0MSwgNCwgOSwgMiwgCisgICAgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyNTAsIDc1LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIzNywgMywgOSwgCisgICAgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAKKyAgICAyMjgsIDExMywgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgCisgICAgMjMsIDIyNSwgMjAsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI0LCAyMjgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIAorICAgIDI1LCAyMywgMjExLCAxMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDMsIAorICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIzMSwgCisgICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIDM4LCAyMywgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAorICAgIDI0MSwgMjUsIDksIDIsIDIzOSwgNywgMjMsIDIzOSwgOCwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyNDMsIAorICAgIDIzMywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCAKKyAgICAxNjAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAxNzgsIDkxLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgCisgICAgMjI4LCAyOCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyOSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjYsIAorICAgIDIyNywgOSwgMiwgMjM5LCA3LCAyMywgMjIzLCAxOTksIDksIDIsIDIzOSwgNywgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzksIAorICAgIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDI0MSwgMTkwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDIzOCwgODEsIAorICAgIDksIDIsIDIzOSwgNywgMjMsIDIxMywgMywgOSwgMiwgMjM5LCA3LCAyMywgMjAyLCAyMiwgOSwgMiwgMjM5LCAyLCAyMTUsIAorICAgIDE5OCwgMjIyLCA1OSwgMjQ0LCA1NCwgOSwgMiwgMjM4LCAxNjMsIDIzLCA2OCwgOSwgMiwgMjM4LCA1NiwgMjMsIDIzOCwgCisgICAgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzcsIAorICAgIDIyMCwgOTEsIDIzOCwgNTYsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM3LCAxNjAsIDIwOSwgMTQyLCAyMzcsIDIwOCwgOSwgMiwgCisgICAgMjM3LCA0LCAyMywgMjUwLCA3NiwgMTE1LCAyMzcsIDQsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ3LCAKKyAgICAxOTMsIDksIDIsIDIzMCwgNDQsIDIzLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDIzMCwgCisgICAgNDQsIDIzLCAyMDYsIDIxMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwMiwgNywgMTE1LCAyMDIsIDYsIDksIDIsIDIyOCwgODMsIAorICAgIDksIDIsIDIyOCwgODEsIDksIDIsIDIyOCwgODAsIDksIDIsIDIyOCwgNzksIDksIDIsIDIyOCwgNzgsIDksIDIsIDIyOCwgCisgICAgNzcsIDksIDIsIDIyOCwgNzYsIDksIDIsIDIyOCwgNzUsIDExNSwgMjI4LCA3NSwgMjM3LCAyMDgsIDksIDIsIDIyOCwgNzQsIAorICAgIDksIDIsIDIyOCwgNzMsIDExNSwgMjI4LCA3MiwgOSwgMiwgMjI4LCA3MSwgOSwgMiwgMjI4LCA3MCwgOSwgMiwgMjI4LCA2OSwgCisgICAgOSwgMiwgMjI4LCA2OCwgOSwgMiwgMjI4LCA2NywgOSwgMiwgMjI4LCA2NiwgOSwgMiwgMjI4LCA2NSwgOSwgMiwgMjI4LCAKKyAgICA2NCwgOSwgMiwgMjI4LCA2MywgOSwgMiwgMjI4LCA2MiwgOSwgMiwgMjI4LCA2MSwgOSwgMiwgMjI4LCA2MCwgOSwgMiwgCisgICAgMjI4LCA1OSwgOSwgMiwgMjI4LCA1OCwgOSwgMiwgMjI4LCA1NywgOSwgMiwgMjI4LCA1NiwgOSwgMiwgMjI4LCA1NSwgOSwgCisgICAgMiwgMjI4LCA1NCwgOSwgMiwgMjI4LCA1MiwgOSwgMiwgMjI4LCA1MywgMjMsIDIzNywgMjMwLCA5LCAyLCAyMjgsIDUzLCAKKyAgICAyMywgMjMxLCA4NSwgOSwgMiwgMjI4LCA1MywgMjMsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCA1MywgMjMsIAorICAgIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAyMDcsIDQxLCA5MSwgMjQ5LCAKKyAgICAzMiwgOSwgMiwgMjI4LCA1MSwgOSwgMiwgMjI4LCA1MCwgOSwgMiwgMjI4LCA0OSwgOSwgMiwgMjI4LCA0OCwgOSwgMiwgCisgICAgMjI4LCA0NywgOSwgMiwgMjI4LCA0NiwgOSwgMiwgMjI4LCA0NSwgOSwgMiwgMjI4LCA0NCwgOSwgMiwgMjI4LCA0MywgOSwgCisgICAgMiwgMjI4LCA0MiwgOSwgMiwgMjI4LCA0MCwgOSwgMiwgMjI4LCA0MSwgMjMsIDI1MCwgNzUsIDksIDIsIDIyOCwgNDEsIDIzLCAKKyAgICAyNDksIDE1LCA5LCAyLCAyMjgsIDQxLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyMjgsIDQxLCAKKyAgICAyMywgMjI4LCAyMDcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMjgsIDExMywgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMjE4LCAKKyAgICA5LCAyLCAyMjgsIDQxLCAyMywgMjA5LCAxODcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjgsIDQxLCAKKyAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA0MSwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMjgsIDM5LCA5LCAyLCAyMjgsIDM3LCAKKyAgICA5LCAyLCAyMjgsIDM4LCAyMywgMjQyLCA0MCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIzOSwgOCwgOSwgMiwgMjI4LCAzOCwgMjMsIAorICAgIDIzMSwgODUsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIyMiwgCisgICAgMTAwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCAKKyAgICAzOCwgMjMsIDIxMywgMjgsIDkxLCAyMjksIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgMzgsIAorICAgIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzNSwgOSwgMiwgMjI4LCAzNCwgOSwgMiwgMjI2LCAyMzgsIDIzNywgMjA5LCAyMywgCisgICAgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDMsIDE1NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzcsIDE0MCwgOSwgCisgICAgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgCisgICAgMjI2LCAyMzYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNCwgMTU2LCA5MSwgMjAyLCAxMTUsIDksIAorICAgIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMjM5LCA4LCA5LCAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgCisgICAgMjMsIDIzMCwgMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIyMiwgNjYsIDIzLCAKKyAgICAyMzgsIDU1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDMsIDksIDIsIAorICAgIDIyMiwgNjYsIDIzLCAyMjksIDE3MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyOCwgNzgsIDksIDIsIDIyMiwgNjYsIDIzLCAKKyAgICAyMjUsIDc5LCA5LCAyLCAyMjIsIDY2LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIDIyMiwgNjYsIDIzLCA2OCwgCisgICAgOSwgMiwgMjIyLCA2NiwgMjMsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxOTcsIDksIDIsIDIxNSwgCisgICAgMjMsIDIzNywgMjA5LCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQxLCA5MiwgOSwgMiwgMjE1LCAyMywgMjMsIAorICAgIDIxMywgNDQsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA5LCAyNDIsIDksIDIsIDIxMywgODcsIAorICAgIDIwOSwgMTQxLCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDkxLCAyMzYsIDIxLCA5LCAyLCAKKyAgICAyMTMsIDQ0LCA5MSwgMjIzLCA4NiwgOSwgMiwgMjEzLCA0NCwgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMTIsIDE5OCwgOTEsIAorICAgIDI0MiwgMzgsIDIzLCAyMjIsIDEwMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAyNDEsIDE5MSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAKKyAgICAyMTIsIDE2MywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDI0MywgOTEsIDIxNSwgMjIsIDksIDIsIDIwNywgMTkyLCAyMywgCisgICAgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDcsIDE5MiwgMjMsIDEyNiwgMjQzLCAxNTYsIDksIDIsIDIwNiwgMjA5LCAKKyAgICAyMzAsIDIzOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDI0NCwgMTUzLCA5LCAKKyAgICAyLCAyMDYsIDIwMCwgMjMsIDIyOCwgMzYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMzYsIDksIDIsIDIwMiwgMTE1LCAKKyAgICA5LCAyLCAyMDIsIDcsIDExNSwgMjAyLCA3LCA5MSwgMjE0LCAyMzAsIDksIDIsIDIwMiwgNSwgMjMsIDEyNiwgMjQzLCAxNTcsIAorICAgIDIwOSwgMTQxLCAxNCwgNywgMjU1LCAxOCwgMTQsIDcsIDI1NSwgMTcsIDE0LCA3LCAyNTUsIDE2LCAxNCwgNywgMjU1LCAxNSwgCisgICAgMTQsIDcsIDI1NSwgMTQsIDE0LCA3LCAyNTUsIDEzLCAxNCwgNywgMjU1LCAxMiwgMTQsIDcsIDI1NSwgMTEsIDE0LCA3LCAKKyAgICAyNTUsIDEwLCAxNCwgNywgMjU1LCA5LCAxNCwgNywgMjU1LCA4LCAxNCwgNywgMjU1LCA3LCAxNCwgNywgMjU1LCA2LCAxNCwgCisgICAgNywgMjU1LCA0LCAxNCwgNywgMjU1LCAzLCAxNCwgNywgMjU1LCAyLCAxNCwgNywgMjU1LCAxLCAxNCwgNywgMjU1LCAwLCAKKyAgICAxNCwgNywgMjU0LCAyNTUsIDE0LCA3LCAyNTQsIDI1NCwgMTQsIDcsIDI1NCwgMjUzLCAxNCwgNywgMjU0LCAyNTIsIDE0LCAKKyAgICA3LCAyNTQsIDI1MSwgMTQsIDcsIDI1NCwgMjUwLCAxNCwgNywgMjU0LCAyNDksIDE0LCA3LCAyNTQsIDI0OCwgMTQsIDcsIAorICAgIDI1NCwgMjQ3LCAxNCwgNywgMjU0LCAyNDYsIDE0LCA3LCAyNTQsIDI0NSwgMTQsIDcsIDI1NCwgMjQ0LCAxNCwgNywgMjU0LCAKKyAgICAyNDMsIDE0LCA3LCAyNTQsIDI0MSwgMTQsIDcsIDI1NCwgMjQwLCAxNCwgNywgMjU0LCAyMzgsIDE0LCA3LCAyNTQsIDIzNywgCisgICAgMTQsIDcsIDI1NCwgMjM2LCAxNCwgNywgMjU0LCAyMzUsIDE0LCA3LCAyNTQsIDIzNCwgMTQsIDcsIDI1NCwgMjMzLCAxNCwgCisgICAgNywgMjU0LCAyMzIsIDE0LCA3LCAyNTQsIDIzMSwgMTQsIDcsIDI1NCwgMjMwLCAxNCwgNywgMjU0LCAyMjksIDE0LCA3LCAKKyAgICAyNTQsIDIyOCwgMTQsIDcsIDI1NCwgMjI3LCAxNCwgNywgMjU0LCAyMjUsIDE0LCA3LCAyNTQsIDIyNCwgMTQsIDcsIDI1NCwgCisgICAgMjIzLCAxNCwgNywgMjU0LCAyMjEsIDE0LCA3LCAyNTQsIDIyMCwgMTQsIDcsIDI1NCwgMjE5LCAxNCwgNywgMjU0LCAyMTgsIAorICAgIDE0LCA3LCAyNTQsIDIxNywgMTQsIDcsIDI1NCwgMjE2LCAxNCwgNywgMjU0LCAyMTUsIDE0LCA3LCAyNTQsIDIxNCwgMTQsIAorICAgIDcsIDI1NCwgMjExLCAxNCwgNywgMjU0LCAyMTAsIDE0LCA3LCAyNTQsIDIwOSwgMTQsIDcsIDI1NCwgMjA4LCAxNCwgNywgCisgICAgMjU0LCAyMDcsIDE0LCA3LCAyNTQsIDIwNiwgMTQsIDcsIDI1NCwgMjA1LCAxNCwgNywgMjU0LCAyMDQsIDE0LCA3LCAyNTQsIAorICAgIDIwMywgMTQsIDcsIDI1NCwgMjAyLCAxNCwgNywgMjU0LCAyMDEsIDE0LCA3LCAyNTQsIDIwMCwgMTQsIDcsIDI1NCwgMTk5LCAKKyAgICAxNCwgNywgMjU0LCAxOTgsIDE0LCA3LCAyNTQsIDE5NywgMTQsIDcsIDI1NCwgMTk2LCAxNCwgNywgMjU0LCAxOTUsIDE0LCAKKyAgICA3LCAyNTQsIDE5NCwgMTQsIDcsIDI1NCwgMTkzLCAxNCwgNywgMjU0LCAxOTIsIDE0LCA3LCAyNTQsIDE4OCwgMTQsIDcsIAorICAgIDI1NCwgMTg3LCAxNCwgNywgMjU0LCAxODYsIDE0LCA3LCAyNTQsIDE4NSwgMTQsIDcsIDI0OSwgMjUzLCAxNCwgNywgMjQ5LCAKKyAgICAyNTEsIDE0LCA3LCAyNDksIDI0OSwgMTQsIDcsIDI0OSwgMjQ3LCAxNCwgNywgMjQ5LCAyNDUsIDE0LCA3LCAyNDksIDI0NCwgCisgICAgMTQsIDcsIDI0OSwgMjQyLCAxNCwgNywgMjQ5LCAyNDAsIDE0LCA3LCAyNDksIDIzOCwgMTQsIDcsIDI0OSwgMjM2LCAxNCwgCisgICAgNywgMjQ3LCAxMjEsIDE0LCA3LCAyNDcsIDEyMCwgMTQsIDcsIDI0NywgMTE5LCAxNCwgNywgMjQ3LCAxMTgsIDE0LCA3LCAKKyAgICAyNDcsIDExNywgMTQsIDcsIDI0NywgMTE2LCAxNCwgNywgMjQ3LCAxMTUsIDE0LCA3LCAyNDcsIDExNCwgMTQsIDcsIDI0NywgCisgICAgMTEzLCAxNCwgNywgMjQ3LCAxMTIsIDE0LCA3LCAyNDcsIDExMSwgMTQsIDcsIDI0NywgMTEwLCAxNCwgNywgMjQ3LCAxMDksIAorICAgIDE0LCA3LCAyNDcsIDEwOCwgMTQsIDcsIDI0NywgMTA3LCAxNCwgNywgMjQ3LCAxMDYsIDE0LCA3LCAyNDcsIDEwNSwgMTQsIAorICAgIDcsIDI0NywgMTA0LCAxNCwgNywgMjQ3LCAxMDMsIDE0LCA3LCAyNDcsIDEwMiwgMTQsIDcsIDI0NywgMTAxLCAxNCwgNywgCisgICAgMjQ3LCAxMDAsIDE0LCA3LCAyNDcsIDk5LCAxNCwgNywgMjQ3LCA5OCwgMTQsIDcsIDI0NywgOTcsIDE0LCA3LCAyNDcsIDk2LCAKKyAgICAxNCwgNywgMjQ3LCA5NSwgMTQsIDcsIDI0NywgOTQsIDE0LCA3LCAyNDUsIDUwLCAxNCwgNywgMjQ1LCA0OSwgMTQsIDcsIAorICAgIDI0NSwgNDgsIDE0LCA3LCAyNDUsIDQ3LCAxNCwgNywgMjQ1LCA0NiwgMTQsIDcsIDI0NSwgNDUsIDE0LCA3LCAyNDUsIDQ0LCAKKyAgICAxNCwgNywgMjQ1LCA0MywgMTQsIDcsIDI0NSwgNDIsIDE0LCA3LCAyNDUsIDQxLCAxNCwgNywgMjQ1LCA0MCwgMTQsIDcsIAorICAgIDI0NSwgMzksIDE0LCA3LCAyNDUsIDM4LCAxNCwgNywgMjQ1LCAzNywgMTQsIDcsIDI0NSwgMzYsIDE0LCA3LCAyNDUsIDM1LCAKKyAgICAxNCwgNywgMjQ1LCAzNCwgMTQsIDcsIDI0NSwgMzMsIDE0LCA3LCAyNDUsIDMyLCAxNCwgNywgMjQ1LCAzMSwgMTQsIDcsIAorICAgIDI0NSwgMzAsIDE0LCA3LCAyNDUsIDI5LCAxNCwgNywgMjQ1LCAyOCwgMTQsIDcsIDI0NSwgMjcsIDE0LCA3LCAyNDUsIDI2LCAKKyAgICAxNCwgNywgMjQ1LCAyNSwgMTQsIDcsIDI0NSwgMjQsIDE0LCA3LCAyNDUsIDIzLCAxNCwgNywgMjQ1LCAyMiwgMTQsIDcsIAorICAgIDI0NSwgMjEsIDE0LCA3LCAyNDUsIDIwLCAxNCwgNywgMjQ1LCAxOSwgMTQsIDcsIDI0NSwgMTgsIDE0LCA3LCAyNDUsIDE3LCAKKyAgICAxNCwgNywgMjQ1LCAxNiwgMTQsIDcsIDI0NSwgMTUsIDE0LCA3LCAyNDUsIDE0LCAxNCwgNywgMjQ1LCAxMywgMTQsIDcsIAorICAgIDI0NSwgMTIsIDE0LCA3LCAyNDUsIDExLCAxNCwgNywgMjQ1LCAxMCwgMTQsIDcsIDI0NSwgOSwgMTQsIDcsIDI0NSwgOCwgCisgICAgMTQsIDcsIDI0NSwgNywgMTQsIDcsIDI0NSwgNiwgMTQsIDcsIDI0NSwgNSwgMTQsIDcsIDI0NSwgNCwgMTQsIDcsIDI0NSwgCisgICAgMywgMTQsIDcsIDI0NSwgMiwgMTQsIDcsIDI0NSwgMSwgMTQsIDcsIDI0NSwgMCwgMTQsIDcsIDI0NCwgMjU1LCAxNCwgNywgCisgICAgMjQ0LCAyNTQsIDE0LCA3LCAyNDQsIDI1MywgMTQsIDcsIDI0NCwgMjUyLCAxNCwgNywgMjQ0LCAyNTEsIDE0LCA3LCAyNDQsIAorICAgIDI1MCwgMTQsIDcsIDI0NCwgMjQ5LCAxNCwgNywgMjQ0LCAyNDgsIDE0LCA3LCAyNDQsIDI0NywgMTQsIDcsIDI0NCwgMjQ2LCAKKyAgICAxNCwgNywgMjQ0LCAyNDUsIDE0LCA3LCAyNDQsIDI0NCwgMTQsIDcsIDI0NCwgMjQzLCAxNCwgNywgMjQ0LCAyNDIsIDE0LCAKKyAgICA3LCAyNDQsIDI0MSwgMTQsIDcsIDI0NCwgMjQwLCAxNCwgNywgMjQ0LCAyMzksIDE0LCA3LCAyNDQsIDIzOCwgMTQsIDcsIAorICAgIDI0NCwgMjM3LCAxNCwgNywgMjQ0LCAyMzYsIDE0LCA3LCAyNDQsIDIzNSwgMTQsIDcsIDI0NCwgMjM0LCAxNCwgNywgMjQ0LCAKKyAgICAyMzMsIDE0LCA3LCAyNDQsIDIzMiwgMTQsIDcsIDI0NCwgMjMxLCAxNCwgNywgMjQ0LCAyMzAsIDE0LCA3LCAyNDQsIDIyOSwgCisgICAgMTQsIDcsIDI0NCwgMjI4LCAxNCwgNywgMjQ0LCAyMjcsIDE0LCA3LCAyNDQsIDIyNiwgMTQsIDcsIDI0NCwgMjI1LCAxNCwgCisgICAgNywgMjQ0LCAyMjQsIDE0LCA3LCAyNDQsIDIyMywgMTQsIDcsIDI0NCwgMjIyLCAxNCwgNywgMjQ0LCAyMjEsIDE0LCA3LCAKKyAgICAyNDQsIDIyMCwgMTQsIDcsIDI0NCwgMjE5LCAxNCwgNywgMjQ0LCAyMTgsIDE0LCA3LCAyNDQsIDIxNywgMTQsIDcsIDI0NCwgCisgICAgMjE2LCAxNCwgNywgMjQ0LCAyMTUsIDE0LCA3LCAyNDEsIDIzNSwgMTQsIDcsIDI0MSwgMjM0LCAxNCwgNywgMjQxLCAyMzMsIAorICAgIDE0LCA3LCAyNDEsIDIzMiwgMTQsIDcsIDI0MSwgMjMxLCAxNCwgNywgMjQxLCAyMzAsIDE0LCA3LCAyNDEsIDIyOSwgMTQsIAorICAgIDcsIDI0MSwgMjI4LCAxNCwgNywgMjQxLCAyMjcsIDE0LCA3LCAyNDEsIDIyNiwgMTQsIDcsIDI0MSwgMjI1LCAxNCwgNywgCisgICAgMjQxLCAyMjQsIDE0LCA3LCAyNDEsIDIyMywgMTQsIDcsIDI0MSwgMjIyLCAxNCwgNywgMjQxLCAyMjEsIDE0LCA3LCAyNDEsIAorICAgIDIyMCwgMTQsIDcsIDI0MSwgMjE5LCAxNCwgNywgMjQxLCAyMTgsIDE0LCA3LCAyNDEsIDIxNywgMTQsIDcsIDI0MSwgMjE2LCAKKyAgICAxNCwgNywgMjQxLCAyMTUsIDE0LCA3LCAyNDEsIDIxNCwgMTQsIDcsIDI0MSwgMjEzLCAxNCwgNywgMjQxLCAyMTIsIDE0LCAKKyAgICA3LCAyNDEsIDIxMSwgMTQsIDcsIDI0MSwgMjEwLCAxNCwgNywgMjQxLCAyMDksIDE0LCA3LCAyNDEsIDIwOCwgMTQsIDcsIAorICAgIDI0MSwgMjA3LCAxNCwgNywgMjQxLCAyMDYsIDE0LCA3LCAyNDEsIDIwNSwgMTQsIDcsIDI0MSwgMjA0LCAxNCwgNywgMjQxLCAKKyAgICAyMDMsIDE0LCA3LCAyNDEsIDIwMiwgMTQsIDcsIDI0MSwgMjAxLCAxNCwgNywgMjQxLCAyMDAsIDE0LCA3LCAyNDEsIDE5OSwgCisgICAgMTQsIDcsIDI0MSwgMTk4LCAxNCwgNywgMjQxLCAxOTcsIDE0LCA3LCAyNDEsIDE5NiwgMTQsIDcsIDI0MSwgMTk1LCAxNCwgCisgICAgNywgMjQxLCAxOTQsIDE0LCA3LCAyNDEsIDE5MywgMTQsIDcsIDI0MSwgMTkyLCAxNCwgNywgMjQwLCAxNzMsIDE0LCA3LCAKKyAgICAyNDAsIDE3MiwgMTQsIDcsIDI0MCwgMTcxLCAxNCwgNywgMjQwLCAxNzAsIDE0LCA3LCAyNDAsIDE2OSwgMTQsIDcsIDI0MCwgCisgICAgMTY4LCAxNCwgNywgMjQwLCAxNjcsIDE0LCA3LCAyNDAsIDE2NiwgMTQsIDcsIDI0MCwgMTY1LCAxNCwgNywgMjQwLCAxNjQsIAorICAgIDE0LCA3LCAyNDAsIDE2MywgMTQsIDcsIDI0MCwgMTYyLCAxNCwgNywgMjQwLCAxNjEsIDE0LCA3LCAyNDAsIDE2MCwgMTQsIAorICAgIDcsIDI0MCwgMTU5LCAxNCwgNywgMjQwLCAxNTgsIDE0LCA3LCAyNDAsIDE1NywgMTQsIDcsIDI0MCwgMTU2LCAxNCwgNywgCisgICAgMjQwLCAxNTUsIDE0LCA3LCAyNDAsIDE1NCwgMTQsIDcsIDI0MCwgMTUzLCAxNCwgNywgMjQwLCAxNTIsIDE0LCA3LCAyNDAsIAorICAgIDE1MSwgMTQsIDcsIDI0MCwgMTUwLCAxNCwgNywgMjQwLCAxNDksIDE0LCA3LCAyNDAsIDE0OCwgMTQsIDcsIDI0MCwgMTQ3LCAKKyAgICAxNCwgNywgMjQwLCAxNDYsIDE0LCA3LCAyNDAsIDE0NSwgMTQsIDcsIDI0MCwgMTQ0LCAxNCwgNywgMjQwLCAxNDMsIDE0LCAKKyAgICA3LCAyNDAsIDE0MiwgMTQsIDcsIDI0MCwgMTQxLCAxNCwgNywgMjQwLCAxNDAsIDE0LCA3LCAyNDAsIDEzOSwgMTQsIDcsIAorICAgIDI0MCwgMTM4LCAxNCwgNywgMjQwLCAxMzcsIDE0LCA3LCAyNDAsIDEzNiwgMTQsIDcsIDI0MCwgMTM1LCAxNCwgNywgMjQwLCAKKyAgICAxMzQsIDE0LCA3LCAyNDAsIDEzMywgMTQsIDcsIDI0MCwgMTMyLCAxNCwgNywgMjQwLCAxMzEsIDE0LCA3LCAyNDAsIDEzMCwgCisgICAgMTQsIDcsIDI0MCwgMTI5LCAxNCwgNywgMjQwLCAxMjgsIDE0LCA3LCAyNDAsIDEyNywgMTQsIDcsIDI0MCwgMTI2LCAxNCwgCisgICAgNywgMjQwLCAxMjUsIDE0LCA3LCAyNDAsIDEyNCwgMTQsIDcsIDI0MCwgMTIzLCAxNCwgNywgMjQwLCAxMjIsIDE0LCA3LCAKKyAgICAyNDAsIDEyMSwgMTQsIDcsIDI0MCwgMTIwLCAxNCwgNywgMjQwLCAxMTksIDE0LCA3LCAyNDAsIDExOCwgMTQsIDcsIDI0MCwgCisgICAgMTE3LCAxNCwgNywgMjQwLCAxMTYsIDE0LCA3LCAyNDAsIDExNSwgMTQsIDcsIDI0MCwgMTE0LCAxNCwgNywgMjQwLCAxMTMsIAorICAgIDE0LCA3LCAyNDAsIDExMiwgMTQsIDcsIDI0MCwgMTExLCAxNCwgNywgMjQwLCAxMTAsIDE0LCA3LCAyNDAsIDEwOSwgMTQsIAorICAgIDcsIDIzOSwgNzQsIDE0LCA3LCAyMzksIDczLCAxNCwgNywgMjM5LCA3MiwgMTQsIDcsIDIzOSwgNzEsIDE0LCA3LCAyMzksIAorICAgIDcwLCAxNCwgNywgMjM5LCA2OSwgMTQsIDcsIDIzOSwgNjgsIDE0LCA3LCAyMzksIDY3LCAxNCwgNywgMjM5LCA2NiwgMTQsIAorICAgIDcsIDIzOSwgNjUsIDE0LCA3LCAyMzksIDY0LCAxNCwgNywgMjM5LCA2MywgMTQsIDcsIDIzOSwgNjIsIDE0LCA3LCAyMzksIAorICAgIDYxLCAxNCwgNywgMjM5LCA2MCwgMTQsIDcsIDIzOSwgNTksIDE0LCA3LCAyMzksIDU4LCAxNCwgNywgMjM5LCA1NywgMTQsIAorICAgIDcsIDIzOSwgNTYsIDE0LCA3LCAyMzksIDU1LCAxNCwgNywgMjM5LCA1NCwgMTQsIDcsIDIzOSwgNTMsIDE0LCA3LCAyMzksIAorICAgIDUyLCAxNCwgNywgMjM5LCA1MSwgMTQsIDcsIDIzOSwgNTAsIDE0LCA3LCAyMzksIDQ5LCAxNCwgNywgMjM5LCA0OCwgMTQsIAorICAgIDcsIDIzOSwgNDcsIDE0LCA3LCAyMzksIDQ2LCAxNCwgNywgMjM5LCA0NSwgMTQsIDcsIDIzOSwgNDQsIDE0LCA3LCAyMzksIAorICAgIDQzLCAxNCwgNywgMjM5LCA0MiwgMTQsIDcsIDIzOSwgNDEsIDE0LCA3LCAyMzksIDQwLCAxNCwgNywgMjM5LCAzOSwgMTQsIAorICAgIDcsIDIzOSwgMzgsIDE0LCA3LCAyMzksIDM3LCAxNCwgNywgMjM5LCAzNiwgMTQsIDcsIDIzOSwgMzUsIDE0LCA3LCAyMzksIAorICAgIDM0LCAxNCwgNywgMjM5LCAzMywgMTQsIDcsIDIzOSwgMzIsIDE0LCA3LCAyMzksIDMxLCAxNCwgNywgMjM5LCAzMCwgMTQsIAorICAgIDcsIDIzOSwgMjksIDE0LCA3LCAyMzksIDI4LCAxNCwgNywgMjM5LCAyNywgMTQsIDcsIDIzOSwgMjYsIDE0LCA3LCAyMzksIAorICAgIDI1LCAxNCwgNywgMjM5LCAyNCwgMTQsIDcsIDIzOSwgMjMsIDE0LCA3LCAyMzksIDIyLCAxNCwgNywgMjM5LCAyMSwgMTQsIAorICAgIDcsIDIzOSwgMjAsIDE0LCA3LCAyMzksIDE5LCAxNCwgNywgMjM5LCAxOCwgMTQsIDcsIDIzOSwgMTcsIDE0LCA3LCAyMzksIAorICAgIDE2LCAxNCwgNywgMjM5LCAxNSwgMTQsIDcsIDIzOSwgMTQsIDE0LCA3LCAyMzksIDEzLCAxNCwgNywgMjM5LCAxMiwgMTQsIAorICAgIDcsIDIzOSwgMTEsIDE0LCA3LCAyMzcsIDE2OSwgMTQsIDcsIDIzNywgMTY4LCAxNCwgNywgMjM3LCAxNjcsIDE0LCA3LCAKKyAgICAyMzcsIDE2NiwgMTQsIDcsIDIzNywgMTY1LCAxNCwgNywgMjM3LCAxNjQsIDE0LCA3LCAyMzcsIDE2MywgMTQsIDcsIDIzNywgCisgICAgMTYyLCAxNCwgNywgMjM3LCAxNjEsIDE0LCA3LCAyMzUsIDE5MCwgMTQsIDcsIDIzNSwgMTg5LCAxNCwgNywgMjM1LCAxODgsIAorICAgIDE0LCA3LCAyMzUsIDE4NywgMTQsIDcsIDIzNSwgMTg2LCAxNCwgNywgMjM1LCAxODUsIDE0LCA3LCAyMzUsIDE4NCwgMTQsIAorICAgIDcsIDIzNSwgMTgzLCAxNCwgNywgMjM1LCAxODIsIDE0LCA3LCAyMzUsIDE4MSwgMTQsIDcsIDIzNSwgMTgwLCAxNCwgNywgCisgICAgMjM1LCAxNzksIDE0LCA3LCAyMzUsIDE3OCwgMTQsIDcsIDIzNSwgMTc3LCAxNCwgNywgMjM1LCAxNzYsIDE0LCA3LCAyMzUsIAorICAgIDE3NSwgMTQsIDcsIDIzNSwgMTc0LCAxNCwgNywgMjM1LCAxNzMsIDE0LCA3LCAyMzUsIDE3MiwgMTQsIDcsIDIzMCwgNTMsIAorICAgIDE0LCA3LCAyMzAsIDUyLCAxNCwgNywgMjMwLCA1MSwgMTQsIDcsIDIzMCwgNTAsIDE0LCA3LCAyMzAsIDQ5LCAxNCwgNywgCisgICAgMjMwLCA0OCwgMTQsIDcsIDIzMCwgNDcsIDE0LCA3LCAyMzAsIDQ2LCAxNCwgNywgMjI4LCAxMjgsIDE0LCA3LCAyMjgsIAorICAgIDEyNywgMTQsIDcsIDIyOCwgMTI2LCAxNCwgNywgMjI4LCAxMjUsIDE0LCA3LCAyMjgsIDEyNCwgMTQsIDcsIDIyOCwgMTIzLCAKKyAgICAxNCwgNywgMjI4LCAxMjIsIDE0LCA3LCAyMjgsIDEyMSwgMTQsIDcsIDIyOCwgMTIwLCAxNCwgNywgMjI4LCAxMTksIDE0LCAKKyAgICA3LCAyMjYsIDE4MywgMTQsIDcsIDIyNiwgMTgyLCAxNCwgNywgMjI2LCAxODEsIDE0LCA3LCAyMjYsIDE3OSwgMTQsIDcsIAorICAgIDIyNiwgMTc3LCAxNCwgNywgMjI2LCAxNzYsIDE0LCA3LCAyMjYsIDE3NCwgMTQsIDcsIDIyNiwgMTcyLCAxNCwgNywgMjI2LCAKKyAgICAxNzAsIDE0LCA3LCAyMjYsIDE2OCwgMTQsIDcsIDIyNiwgMTY2LCAxNCwgNywgMjI2LCAxNjQsIDE0LCA3LCAyMjYsIDE2MiwgCisgICAgMTQsIDcsIDIyNiwgMTYxLCAxNCwgNywgMjI2LCAxNTksIDE0LCA3LCAyMjYsIDE1NywgMTQsIDcsIDIyNiwgMTU2LCAxNCwgCisgICAgNywgMjI2LCAxNTUsIDE0LCA3LCAyMjYsIDE1NCwgMTQsIDcsIDIyNiwgMTUzLCAxNCwgNywgMjI2LCAxNTIsIDE0LCA3LCAKKyAgICAyMjYsIDE1MSwgMTQsIDcsIDIyNiwgMTUwLCAxNCwgNywgMjI2LCAxNDksIDE0LCA3LCAyMjYsIDE0NywgMTQsIDcsIDIyNiwgCisgICAgMTQ1LCAxNCwgNywgMjI2LCAxNDMsIDE0LCA3LCAyMjYsIDE0MiwgMTQsIDcsIDIyNiwgMTQwLCAxNCwgNywgMjI2LCAxMzksIAorICAgIDE0LCA3LCAyMjYsIDEzNywgMTQsIDcsIDIyNiwgMTM2LCAxNCwgNywgMjI2LCAxMzQsIDE0LCA3LCAyMjYsIDEzMiwgMTQsIAorICAgIDcsIDIyNiwgMTMwLCAxNCwgNywgMjI2LCAxMjgsIDE0LCA3LCAyMjYsIDEyNiwgMTQsIDcsIDIyNiwgMTI1LCAxNCwgNywgCisgICAgMjI2LCAxMjMsIDE0LCA3LCAyMjYsIDEyMSwgMTQsIDcsIDIyNiwgMTIwLCAxNCwgNywgMjI2LCAxMTgsIDE0LCA3LCAyMjYsIAorICAgIDExNiwgMTQsIDcsIDIyNiwgMTE0LCAxNCwgNywgMjI2LCAxMTIsIDE0LCA3LCAyMjYsIDExMSwgMTQsIDcsIDIyNiwgMTA5LCAKKyAgICAxNCwgNywgMjI2LCAxMDcsIDE0LCA3LCAyMjYsIDEwNSwgMTQsIDcsIDIyNiwgMTA0LCAxNCwgNywgMjI2LCAxMDIsIDE0LCAKKyAgICA3LCAyMjYsIDEwMCwgMTQsIDcsIDIyNiwgOTksIDE0LCA3LCAyMjYsIDk4LCAxNCwgNywgMjI2LCA5NiwgMTQsIDcsIDIyNiwgCisgICAgOTQsIDE0LCA3LCAyMjYsIDkyLCAxNCwgNywgMjI2LCA5MCwgMTQsIDcsIDIyNiwgODgsIDE0LCA3LCAyMjYsIDg2LCAxNCwgCisgICAgNywgMjI2LCA4NCwgMTQsIDcsIDIyNiwgODMsIDE0LCA3LCAyMjYsIDgxLCAxNCwgNywgMjI2LCA3OSwgMTQsIDcsIDIyNiwgCisgICAgNzcsIDE0LCA3LCAyMjYsIDc1LCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAyMjMsIDE1OSwgMTQsIDcsIDIyMywgMTU4LCAKKyAgICAxNCwgNywgMjIzLCAxNTcsIDE0LCA3LCAyMjMsIDE1NiwgMTQsIDcsIDIyMywgMTU1LCAxNCwgNywgMjIzLCAxNTQsIDE0LCAKKyAgICA3LCAyMjMsIDE1MywgMTQsIDcsIDIyMywgMTUyLCAxNCwgNywgMjIzLCAxNTEsIDE0LCA3LCAyMjMsIDE1MCwgMTQsIDcsIAorICAgIDIyMywgMTQ5LCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NywgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAKKyAgICAxNDUsIDE0LCA3LCAyMjMsIDE0NCwgMTQsIDcsIDIyMywgMTQzLCAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgCisgICAgMTQsIDcsIDIyMywgMTQwLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzOCwgMTQsIDcsIDIyMywgMTM3LCAxNCwgCisgICAgNywgMjIzLCAxMzYsIDE0LCA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTM0LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAKKyAgICAyMjMsIDEzMiwgMTQsIDcsIDIyMywgMTMxLCAxNCwgNywgMjIzLCAxMzAsIDE0LCA3LCAyMjMsIDEyOSwgMTQsIDcsIDIyMywgCisgICAgMTI4LCAxNCwgNywgMjIzLCAxMjcsIDE0LCA3LCAyMjMsIDEyNiwgMTQsIDcsIDIyMywgMTI1LCAxNCwgNywgMjIzLCAxMjQsIAorICAgIDE0LCA3LCAyMjMsIDEyMywgMTQsIDcsIDIyMywgMTIyLCAxNCwgNywgMjIzLCAxMjEsIDE0LCA3LCAyMjMsIDEyMCwgMTQsIAorICAgIDcsIDIyMywgMTE5LCAxNCwgNywgMjIzLCAxMTgsIDE0LCA3LCAyMjMsIDExNywgMTQsIDcsIDIyMywgMTE2LCAxNCwgNywgCisgICAgMjIzLCAxMTUsIDE0LCA3LCAyMjMsIDExNCwgMTQsIDcsIDIyMywgMTEzLCAxNCwgNywgMjIzLCAxMTIsIDE0LCA3LCAyMjEsIAorICAgIDI1MiwgMTQsIDcsIDIyMSwgMjUxLCAxNCwgNywgMjIxLCAyNTAsIDE0LCA3LCAyMjEsIDI0OSwgMTQsIDcsIDIyMSwgMjQ4LCAKKyAgICAxNCwgNywgMjIxLCAyNDcsIDE0LCA3LCAyMjEsIDI0NiwgMTQsIDcsIDIyMSwgMjQ1LCAxNCwgNywgMjIxLCAyNDQsIDE0LCAKKyAgICA3LCAyMjEsIDI0MywgMTQsIDcsIDIyMSwgMjQyLCAxNCwgNywgMjIxLCAyNDEsIDE0LCA3LCAyMjEsIDI0MCwgMTQsIDcsIAorICAgIDIyMSwgMjM5LCAxNCwgNywgMjIxLCAyMzgsIDE0LCA3LCAyMjEsIDIzNywgMTQsIDcsIDIyMSwgMjM2LCAxNCwgNywgMjIxLCAKKyAgICAyMzUsIDE0LCA3LCAyMjEsIDIzNCwgMTQsIDcsIDIyMSwgMjMzLCAxNCwgNywgMjIxLCAyMzIsIDE0LCA3LCAyMjEsIDIzMSwgCisgICAgMTQsIDcsIDIyMSwgODMsIDE0LCA3LCAyMjEsIDgyLCAxNCwgNywgMjIxLCA4MSwgMTQsIDcsIDIyMSwgODAsIDE0LCA3LCAKKyAgICAyMjEsIDc5LCAxNCwgNywgMjIxLCA3OCwgMTQsIDcsIDIyMSwgNzcsIDE0LCA3LCAyMjEsIDc2LCAxNCwgNywgMjIxLCA3NSwgCisgICAgMTQsIDcsIDIyMSwgNzQsIDE0LCA3LCAyMjEsIDczLCAxNCwgNywgMjIxLCA3MiwgMTQsIDcsIDIyMSwgNzEsIDE0LCA3LCAKKyAgICAyMjEsIDcwLCAxNCwgNywgMjIxLCA2OSwgMTQsIDcsIDIyMSwgNjgsIDE0LCA3LCAyMjEsIDY3LCAxNCwgNywgMjIxLCA2NiwgCisgICAgMTQsIDcsIDIyMSwgNjUsIDE0LCA3LCAyMjEsIDY0LCAxNCwgNywgMjIxLCA2MywgMTQsIDcsIDIyMSwgNjIsIDE0LCA3LCAKKyAgICAyMjEsIDYxLCAxNCwgNywgMjIxLCA2MCwgMTQsIDcsIDIyMSwgNTksIDE0LCA3LCAyMjEsIDU4LCAxNCwgNywgMjIwLCAxNzMsIAorICAgIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIAorICAgIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgCisgICAgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIDcsIDIyMCwgMTYyLCAxNCwgNywgMjIwLCAxNjEsIDE0LCA3LCAyMjAsIAorICAgIDE2MCwgMTQsIDcsIDIyMCwgMTU5LCAxNCwgNywgMjIwLCAxNTgsIDE0LCA3LCAyMjAsIDE1NywgMTQsIDcsIDIyMCwgMTU2LCAKKyAgICAxNCwgNywgMjIwLCAxNTUsIDE0LCA3LCAyMjAsIDE1NCwgMTQsIDcsIDIyMCwgMTUzLCAxNCwgNywgMjIwLCAxNTIsIDE0LCAKKyAgICA3LCAyMjAsIDE1MSwgMTQsIDcsIDIyMCwgMTUwLCAxNCwgNywgMjIwLCAxNDksIDE0LCA3LCAyMjAsIDE0OCwgMTQsIDcsIAorICAgIDIyMCwgMTQ3LCAxNCwgNywgMjIwLCAxNDYsIDE0LCA3LCAyMjAsIDE0NSwgMTQsIDcsIDIyMCwgMTQ0LCAxNCwgNywgMjIwLCAKKyAgICAxNDMsIDE0LCA3LCAyMjAsIDE0MiwgMTQsIDcsIDIyMCwgMTQxLCAxNCwgNywgMjIwLCAxNDAsIDE0LCA3LCAyMjAsIDEzOSwgCisgICAgMTQsIDcsIDIyMCwgMTM4LCAxNCwgNywgMjIwLCAxMzcsIDE0LCA3LCAyMjAsIDEzNiwgMTQsIDcsIDIyMCwgMTM1LCAxNCwgCisgICAgNywgMjIwLCAxMzQsIDE0LCA3LCAyMjAsIDEzMywgMTQsIDcsIDIyMCwgMTMyLCAxNCwgNywgMjIwLCAxMzEsIDE0LCA3LCAKKyAgICAyMjAsIDEzMCwgMTQsIDcsIDIyMCwgMTI5LCAxNCwgNywgMjIwLCAxMjgsIDE0LCA3LCAyMjAsIDEyNywgMTQsIDcsIDIyMCwgCisgICAgMTI2LCAxNCwgNywgMjIwLCAxMjUsIDE0LCA3LCAyMjAsIDEyNCwgMTQsIDcsIDIyMCwgMTIzLCAxNCwgNywgMjIwLCAxMjIsIAorICAgIDE0LCA3LCAyMjAsIDEyMSwgMTQsIDcsIDIyMCwgMTIwLCAxNCwgNywgMjIwLCAxMTksIDE0LCA3LCAyMjAsIDExOCwgMTQsIAorICAgIDcsIDIyMCwgMTE3LCAxNCwgNywgMjIwLCAxMTYsIDE0LCA3LCAyMjAsIDExNSwgMTQsIDcsIDIyMCwgMTE0LCAxNCwgNywgCisgICAgMjIwLCAxMTMsIDE0LCA3LCAyMjAsIDExMiwgMTQsIDcsIDIyMCwgMTExLCAxNCwgNywgMjIwLCAxMTAsIDE0LCA3LCAyMjAsIAorICAgIDEwOSwgMTQsIDcsIDIyMCwgMTA4LCAxNCwgNywgMjIwLCAxMDcsIDE0LCA3LCAyMjAsIDEwNiwgMTQsIDcsIDIyMCwgMTA1LCAKKyAgICAxNCwgNywgMjIwLCAxMDQsIDE0LCA3LCAyMjAsIDEwMywgMTQsIDcsIDIyMCwgMTAyLCAxNCwgNywgMjIwLCAxMDEsIDE0LCAKKyAgICA3LCAyMjAsIDEwMCwgMTQsIDcsIDIyMCwgOTksIDE0LCA3LCAyMTksIDE4MywgMTQsIDcsIDIxOSwgMTgyLCAxNCwgNywgCisgICAgMjE5LCAxODEsIDE0LCA3LCAyMTksIDE4MCwgMTQsIDcsIDIxOSwgMTc5LCAxNCwgNywgMjE5LCAxNzgsIDE0LCA3LCAyMTksIAorICAgIDE3NywgMTQsIDcsIDIxOSwgMTc2LCAxNCwgNywgMjE5LCAxNzUsIDE0LCA3LCAyMTksIDE3NCwgMTQsIDcsIDIxOSwgMTczLCAKKyAgICAxNCwgNywgMjE5LCAxNzIsIDE0LCA3LCAyMTksIDE3MSwgMTQsIDcsIDIxNywgMTMzLCAxNCwgNywgMjE3LCAxMzIsIDE0LCAKKyAgICA3LCAyMTcsIDEzMSwgMTQsIDcsIDIxNywgMTMwLCAxNCwgNywgMjE3LCAxMjksIDE0LCA3LCAyMTcsIDEyOCwgMTQsIDcsIAorICAgIDIxNywgMTI3LCAxNCwgNywgMjE2LCAyNTUsIDE0LCA3LCAyMTYsIDI1NCwgMTQsIDcsIDIxNiwgMjUzLCAxNCwgNywgMjE2LCAKKyAgICAyNTIsIDE0LCA3LCAyMTYsIDI1MSwgMTQsIDcsIDIxNiwgMjUwLCAxNCwgNywgMjE2LCAyNDksIDE0LCA3LCAyMTYsIDI0OCwgCisgICAgMTQsIDcsIDIxNiwgMjQ3LCAxNCwgNywgMjE2LCAyNDYsIDE0LCA3LCAyMTYsIDI0NSwgMTQsIDcsIDIxNiwgMjQ0LCAxNCwgCisgICAgNywgMjE2LCAyNDMsIDE0LCA3LCAyMTYsIDI0MiwgMTQsIDcsIDIxNiwgMjQxLCAxNCwgNywgMjE2LCAyNDAsIDE0LCA3LCAKKyAgICAyMTYsIDIzOSwgMTQsIDcsIDIxNiwgMjM4LCAxNCwgNywgMjE2LCAyMzcsIDE0LCA3LCAyMTYsIDIzNiwgMTQsIDcsIDIxNiwgCisgICAgMjM1LCAxNCwgNywgMjE2LCAyMzQsIDE0LCA3LCAyMTYsIDIzMywgMTQsIDcsIDIxNiwgMjMyLCAxNCwgNywgMjE2LCAyMzEsIAorICAgIDE0LCA3LCAyMTYsIDIzMCwgMTQsIDcsIDIxNiwgMjI5LCAxNCwgNywgMjE2LCAyMjgsIDE0LCA3LCAyMTYsIDIyNywgMTQsIAorICAgIDcsIDIxNiwgMjI2LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgCisgICAgMjE2LCAyMjIsIDE0LCA3LCAyMTUsIDkxLCAxNCwgNywgMjE1LCA5MCwgMTQsIDcsIDIxNSwgODksIDE0LCA3LCAyMTUsIDg4LCAKKyAgICAxNCwgNywgMjE1LCA4NywgMTQsIDcsIDIxNSwgODYsIDE0LCA3LCAyMTUsIDg1LCAxNCwgNywgMjE1LCA4NCwgMTQsIDcsIAorICAgIDIxNSwgODMsIDE0LCA3LCAyMTUsIDgyLCAxNCwgNywgMjE1LCA4MSwgMTQsIDcsIDIxNSwgODAsIDE0LCA3LCAyMTUsIDc5LCAKKyAgICAxNCwgNywgMjE1LCA3OCwgMTQsIDcsIDIxNSwgNzcsIDE0LCA3LCAyMTUsIDc2LCAxNCwgNywgMjE1LCA3NSwgMTQsIDcsIAorICAgIDIxNSwgNzQsIDE0LCA3LCAyMTUsIDczLCAxNCwgNywgMjE1LCA3MiwgMTQsIDcsIDIxNSwgNzEsIDE0LCA3LCAyMTUsIDcwLCAKKyAgICAxNCwgNywgMjE1LCA2OSwgMTQsIDcsIDIxNSwgNjgsIDE0LCA3LCAyMTUsIDY3LCAxNCwgNywgMjE1LCA2NiwgMTQsIDcsIAorICAgIDIxNSwgNjUsIDE0LCA3LCAyMTUsIDY0LCAxNCwgNywgMjE1LCA2MywgMTQsIDcsIDIxNSwgNjIsIDE0LCA3LCAyMTUsIDYxLCAKKyAgICAxNCwgNywgMjE1LCA2MCwgMTQsIDcsIDIxNSwgNTksIDE0LCA3LCAyMTUsIDU4LCAxNCwgNywgMjE1LCA1NywgMTQsIDcsIAorICAgIDIxNSwgNTYsIDE0LCA3LCAyMTUsIDU1LCAxNCwgNywgMjE1LCA1NCwgMTQsIDcsIDIxNSwgNTMsIDE0LCA3LCAyMTUsIDUyLCAKKyAgICAxNCwgNywgMjE1LCA1MSwgMTQsIDcsIDIxNSwgNTAsIDE0LCA3LCAyMTUsIDQ5LCAxNCwgNywgMjE1LCA0OCwgMTQsIDcsIAorICAgIDIxNSwgNDcsIDE0LCA3LCAyMTUsIDQ2LCAxNCwgNywgMjE1LCA0NSwgMTQsIDcsIDIxNSwgNDQsIDE0LCA3LCAyMTUsIDQzLCAKKyAgICAxNCwgNywgMjE1LCA0MiwgMTQsIDcsIDIxNSwgNDEsIDE0LCA3LCAyMTUsIDQwLCAxNCwgNywgMjE1LCAzOSwgMTQsIDcsIAorICAgIDIxNSwgMzgsIDE0LCA3LCAyMTAsIDY3LCAxNCwgNywgMjEwLCA2NiwgMTQsIDcsIDIxMCwgNjUsIDE0LCA3LCAyMTAsIDY0LCAKKyAgICAxNCwgNywgMjEwLCA2MywgMTQsIDcsIDIxMCwgNjIsIDE0LCA3LCAyMTAsIDYxLCAxNCwgNywgMjEwLCA2MCwgMTQsIDcsIAorICAgIDIxMCwgNTksIDE0LCA3LCAyMTAsIDU4LCAxNCwgNywgMjEwLCA1NywgMTQsIDcsIDIxMCwgNTYsIDE0LCA3LCAyMTAsIDU1LCAKKyAgICAxNCwgNywgMjEwLCA1NCwgMTQsIDcsIDIxMCwgNTMsIDE0LCA3LCAyMTAsIDUyLCAxNCwgNywgMjEwLCA1MSwgMTQsIDcsIAorICAgIDIxMCwgNTAsIDE0LCA3LCAyMTAsIDQ5LCAxNCwgNywgMjEwLCA0OCwgMTQsIDcsIDIxMCwgNDcsIDE0LCA3LCAyMTAsIDQ2LCAKKyAgICAxNCwgNywgMjEwLCA0NSwgMTQsIDcsIDIxMCwgNDQsIDE0LCA3LCAyMTAsIDQzLCAxNCwgNywgMjEwLCA0MiwgMTQsIDcsIAorICAgIDIxMCwgNDEsIDE0LCA3LCAyMTAsIDQwLCAxNCwgNywgMjEwLCAzOSwgMTQsIDcsIDIxMCwgMzgsIDE0LCA3LCAyMTAsIDM3LCAKKyAgICAxNCwgNywgMjEwLCAzNiwgMTQsIDcsIDIxMCwgMzUsIDE0LCA3LCAyMTAsIDM0LCAxNCwgNywgMjEwLCAzMywgMTQsIDcsIAorICAgIDIxMCwgMzIsIDE0LCA3LCAyMTAsIDMxLCAxNCwgNywgMjEwLCAzMCwgMTQsIDcsIDIxMCwgMjksIDE0LCA3LCAyMTAsIDI4LCAKKyAgICAxNCwgNywgMjEwLCAyNywgMTQsIDcsIDIxMCwgMjYsIDE0LCA3LCAyMTAsIDI1LCAxNCwgNywgMjEwLCAyNCwgMTQsIDcsIAorICAgIDIwNywgODgsIDE0LCA3LCAyMDcsIDg3LCAxNCwgNywgMjA3LCA4NiwgMTQsIDcsIDIwNywgODUsIDE0LCA3LCAyMDcsIDg0LCAKKyAgICAxNCwgNywgMjA3LCA4MywgMTQsIDcsIDIwNywgODIsIDE0LCA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIAorICAgIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAKKyAgICAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIAorICAgIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAKKyAgICAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIAorICAgIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAKKyAgICAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIAorICAgIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAKKyAgICAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIAorICAgIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA2LCAxNjMsIDE0LCA3LCAyMDYsIDE2MiwgMTQsIDcsIDIwNiwgCisgICAgMTYxLCAxNCwgNywgMjA2LCAxNjAsIDE0LCA3LCAyMDYsIDE1OSwgMTQsIDcsIDIwNiwgMTU4LCAxNCwgNywgMjA2LCAxNTcsIAorICAgIDE0LCA3LCAyMDYsIDE1NiwgMTQsIDcsIDIwNiwgMTU1LCAxNCwgNywgMjA2LCAxNTQsIDE0LCA3LCAyMDYsIDE1MywgMTQsIAorICAgIDcsIDIwNiwgMTUyLCAxNCwgNywgMjA2LCAxNTEsIDE0LCA3LCAyMDYsIDE1MCwgMTQsIDcsIDIwNiwgMTQ5LCAxNCwgNywgCisgICAgMjA2LCAxNDgsIDE0LCA3LCAyMDYsIDE0NywgMTQsIDcsIDIwNiwgMTQ2LCAxNCwgNywgMjA2LCAxNDUsIDE0LCA3LCAyMDYsIAorICAgIDE0NCwgMTQsIDcsIDIwNiwgMTQzLCAxNCwgNywgMjA2LCAxNDIsIDE0LCA3LCAyMDYsIDE0MSwgMTQsIDcsIDIwNiwgMTQwLCAKKyAgICAxNCwgNywgMjA2LCAxMzksIDE0LCA3LCAyMDYsIDEzOCwgMTQsIDcsIDIwNiwgMTM3LCAxNCwgNywgMjA2LCAxMzYsIDE0LCAKKyAgICA3LCAyMDYsIDEzNSwgMTQsIDcsIDIwNiwgMTM0LCAxNCwgNywgMjA2LCAxMzMsIDE0LCA3LCAyMDYsIDEzMiwgMTQsIDcsIAorICAgIDIwNiwgMTMxLCAxNCwgNywgMjA2LCAxMzAsIDE0LCA3LCAyMDYsIDEyOSwgMTQsIDcsIDIwNiwgMTI4LCAxNCwgNywgMjA2LCAKKyAgICAxMjcsIDE0LCA3LCAyMDYsIDEyNiwgMTQsIDcsIDIwNiwgMTI1LCAxNCwgNywgMjA2LCAxMjQsIDE0LCA3LCAyMDYsIDEyMywgCisgICAgMTQsIDcsIDIwNiwgMTIyLCAxNCwgNywgMjA2LCAxMjEsIDE0LCA3LCAyMDYsIDEyMCwgMTQsIDcsIDIwNiwgMTE5LCAxNCwgCisgICAgNywgMjA2LCAxMTgsIDE0LCA3LCAyMDYsIDExNywgMTQsIDcsIDIwNiwgMTE2LCAxNCwgNywgMjA2LCAxMTUsIDE0LCA3LCAKKyAgICAyMDYsIDExNCwgMTQsIDcsIDIwNiwgMTEzLCAxNCwgNywgMjA2LCAxMTIsIDE0LCA3LCAyMDYsIDExMSwgMTQsIDcsIDIwNiwgCisgICAgMTEwLCAxNCwgNywgMjA2LCAxMDksIDE0LCA3LCAyMDYsIDEwOCwgMTQsIDcsIDIwNiwgMTA3LCAxNCwgNywgMjA2LCAxMDYsIAorICAgIDE0LCA3LCAyMDYsIDEwNSwgMTQsIDcsIDIwNiwgMTA0LCAxNCwgNywgMjA2LCAxMDMsIDE0LCA3LCAyMDYsIDEwMiwgMTQsIAorICAgIDcsIDIwNiwgMTAxLCAxNCwgNywgMjA2LCAxMDAsIDE0LCA3LCAyMDYsIDk5LCAxNCwgNywgMjA2LCA5OCwgMTQsIDcsIDIwNiwgCisgICAgOTcsIDE0LCA3LCAyMDYsIDk2LCAxNCwgNywgMjA2LCA5NSwgMTQsIDcsIDIwNiwgOTQsIDE0LCA3LCAyMDYsIDkzLCAxNCwgCisgICAgNywgMjA2LCA5MiwgMTQsIDcsIDIwNiwgOTEsIDE0LCA3LCAyMDYsIDkwLCAxNCwgNywgMjA2LCA4OSwgMTQsIDcsIDIwNiwgCisgICAgODgsIDE0LCA3LCAyMDYsIDg3LCAxNCwgNywgMjA0LCAxNDMsIDE0LCA3LCAyMDQsIDE0MiwgMTQsIDcsIDIwNCwgMTQxLCAKKyAgICAxNCwgNywgMjA0LCAxNDAsIDE0LCA3LCAyMDQsIDEzOSwgMTQsIDcsIDIwNCwgMTM4LCAxNCwgNywgMjA0LCAxMzcsIDE0LCAKKyAgICA3LCAyMDQsIDEzNiwgMTQsIDcsIDIwNCwgMTM1LCAxNCwgNywgMjA0LCAxMzQsIDE0LCA3LCAyMDQsIDEzMywgMTQsIDcsIAorICAgIDIwNCwgMTMyLCAxNCwgNywgMjA0LCAxMzEsIDE0LCA3LCAyMDQsIDEzMCwgMTQsIDcsIDIwNCwgMTI5LCAxNCwgNywgMjA0LCAKKyAgICAxMjgsIDE0LCA3LCAyMDQsIDEyNywgMTQsIDcsIDIwNCwgMTI2LCAxNCwgNywgMjA0LCAxMjUsIDE0LCA3LCAyMDQsIDEyNCwgCisgICAgMTQsIDcsIDIwNCwgMTIzLCAxNCwgNywgMjA0LCAxMjIsIDE0LCA3LCAyMDQsIDEyMSwgMTQsIDcsIDIwNCwgMTIwLCAxNCwgCisgICAgNywgMjA0LCAxMTksIDE0LCA3LCAyMDQsIDExOCwgMTQsIDcsIDIwNCwgMTE3LCAxNCwgNywgMjA0LCAxMTYsIDE0LCA3LCAKKyAgICAyMDQsIDExNSwgMTQsIDcsIDIwNCwgMTE0LCAxNCwgNywgMjA0LCAxMTMsIDE0LCA3LCAyMDQsIDExMiwgMTQsIDcsIDIwMywgCisgICAgMTk0LCAxNCwgNywgMjAzLCAxOTMsIDE0LCA3LCAyMDMsIDE5MiwgMTQsIDcsIDIwMywgMTkxLCAxNCwgNywgMjAzLCAxOTAsIAorICAgIDE0LCA3LCAyMDMsIDE4OSwgMTQsIDcsIDIwMywgMTg4LCAxNCwgNywgMjAzLCAxODcsIDE0LCA3LCAyMDMsIDE4NiwgMTQsIAorICAgIDcsIDIwMywgMTg1LCAxNCwgNywgMjAzLCAxODQsIDE0LCA3LCAyMDMsIDE4MywgMTQsIDcsIDIwMywgMTIyLCAxNCwgNywgCisgICAgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCA3LCAyMDMsIAorICAgIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIDIwMiwgMTU4LCAKKyAgICAxNCwgNywgMjAyLCAxNTcsIDE0LCA3LCAyMDIsIDE1NiwgMTQsIDcsIDIwMiwgMTU1LCAxNCwgNywgMjAyLCAxNTQsIDE0LCAKKyAgICA3LCAyMDIsIDE1MywgMTQsIDcsIDIwMiwgMTUyLCAxNCwgNywgMjAyLCAxNTEsIDE0LCA3LCAyMDIsIDE1MCwgMTQsIDcsIAorICAgIDIwMiwgMTQ5LCAxNCwgNywgMjAyLCAxNDgsIDE0LCA3LCAyMDIsIDE0NywgMTQsIDcsIDIwMiwgMTQ2LCAxNCwgNywgMjAyLCAKKyAgICAxNDUsIDE0LCA3LCAyMDIsIDE0NCwgMTQsIDcsIDIwMiwgMTQzLCAxNCwgNywgMjAyLCAxNDIsIDE0LCA3LCAyMDIsIDE0MSwgCisgICAgMTQsIDcsIDIwMiwgMTQwLCAxNCwgNywgMjAyLCAxMzksIDE0LCA3LCAyMDIsIDEzOCwgMTQsIDcsIDIwMiwgMTM3LCAxNCwgCisgICAgNywgMjAyLCAxMzYsIDE0LCA3LCAyMDIsIDEzNSwgMTQsIDcsIDIwMiwgMTM0LCAxNCwgNywgMjAyLCAxMzMsIDE0LCA3LCAKKyAgICAyMDIsIDEzMiwgMTQsIDcsIDIwMiwgMTMxLCAxNCwgNywgMjAyLCAxMzAsIDE0LCA3LCAyMDIsIDEyOSwgMTQsIDcsIDIwMiwgCisgICAgMTI4LCAxNCwgNywgMjAyLCAxMjcsIDE0LCA3LCAyMDIsIDEyNiwgMTQsIDcsIDIwMiwgMTI1LCAxNCwgNywgMjAyLCAxMjQsIAorICAgIDE0LCA3LCAyMDIsIDEyMywgMTQsIDcsIDIwMiwgMTIyLCAxNCwgNywgMjAyLCAxMjEsIDE0LCA3LCAyMDIsIDEyMCwgMTQsIAorICAgIDcsIDIwMiwgMTE5LCAxNCwgNywgMjAyLCAxMTgsIDE0LCA3LCAyNTIsIDI0LCAxNCwgNywgMjUyLCAyMywgMTQsIDcsIDI1MiwgCisgICAgMjIsIDE0LCA3LCAyNTIsIDIxLCAxNCwgNywgMjUyLCAyMCwgMTQsIDcsIDI1MiwgMTksIDE0LCA3LCAyNTIsIDE4LCAxNCwgCisgICAgNywgMjUyLCAxNywgMTQsIDcsIDI1MiwgMTYsIDE0LCA3LCAyNTIsIDE1LCAxNCwgNywgMjUyLCAxNCwgMTQsIDcsIDI1MiwgCisgICAgMTMsIDE0LCA3LCAyNTIsIDEyLCAxNCwgNywgMjUyLCAxMSwgMTQsIDcsIDI1MiwgMTAsIDE0LCA3LCAyNTIsIDksIDE0LCA3LCAKKyAgICAyNTIsIDgsIDE0LCA3LCAyNTIsIDcsIDE0LCA3LCAyNTIsIDYsIDE0LCA3LCAyNTIsIDUsIDE0LCA3LCAyNTIsIDQsIDE0LCAKKyAgICA3LCAyNTIsIDMsIDE0LCA3LCAyNTIsIDIsIDE0LCA3LCAyNTIsIDEsIDE0LCA3LCAyNTIsIDAsIDE0LCA3LCAyNTEsIDI1NSwgCisgICAgMTQsIDcsIDI1MSwgMjU0LCAxNCwgNywgMjUxLCAyNTMsIDE0LCA3LCAyNTEsIDI1MiwgMTQsIDcsIDI1MSwgMjUxLCAxNCwgCisgICAgNywgMjUxLCAyNTAsIDE0LCA3LCAyNTEsIDI0OSwgMTQsIDcsIDI1MSwgMjQ4LCAxNCwgNywgMjUxLCAyNDcsIDI3LCA3LCAKKyAgICAyNTUsIDE4LCAyNywgNywgMjU1LCAxNywgMjcsIDcsIDI1NSwgMTYsIDI3LCA3LCAyNTUsIDE1LCAyNywgNywgMjU1LCAxNCwgCisgICAgMjcsIDcsIDI1NSwgMTIsIDI3LCA3LCAyNTUsIDksIDI3LCA3LCAyNTUsIDgsIDI3LCA3LCAyNTUsIDcsIDI3LCA3LCAyNTUsIAorICAgIDYsIDI3LCA3LCAyNTUsIDUsIDI3LCA3LCAyNTUsIDQsIDI3LCA3LCAyNTUsIDMsIDI3LCA3LCAyNTUsIDIsIDI3LCA3LCAKKyAgICAyNTUsIDEsIDI3LCA3LCAyNTQsIDI1NSwgMjcsIDcsIDI1NCwgMjU0LCAyNywgNywgMjU0LCAyNTMsIDI3LCA3LCAyNTQsIAorICAgIDI1MSwgMjcsIDcsIDI1NCwgMjUwLCAyNywgNywgMjU0LCAyNDksIDI3LCA3LCAyNTQsIDI0OCwgMjcsIDcsIDI1NCwgMjQ3LCAKKyAgICAyNywgNywgMjU0LCAyNDYsIDI3LCA3LCAyNTQsIDI0NSwgMjcsIDcsIDI1NCwgMjQ0LCAyNywgNywgMjU0LCAyNDMsIDI3LCAKKyAgICA3LCAyNTQsIDI0MiwgMjcsIDcsIDI1NCwgMjQxLCAyNywgNywgMjU0LCAyNDAsIDI3LCA3LCAyNTQsIDIzOCwgMjcsIDcsIAorICAgIDI1NCwgMjM3LCAyNywgNywgMjU0LCAyMzYsIDI3LCA3LCAyNTQsIDIzNSwgMjcsIDcsIDI1NCwgMjMzLCAyNywgNywgMjU0LCAKKyAgICAyMzIsIDI3LCA3LCAyNTQsIDIzMSwgMjcsIDcsIDI1NCwgMjMwLCAyNywgNywgMjU0LCAyMjksIDI3LCA3LCAyNTQsIDIyOCwgCisgICAgMjcsIDcsIDI1NCwgMjI3LCAyNywgNywgMjU0LCAyMjYsIDI3LCA3LCAyNTQsIDIyNSwgMjcsIDcsIDI1NCwgMjIzLCAyNywgCisgICAgNywgMjU0LCAyMjIsIDI3LCA3LCAyNTQsIDIyMSwgMjcsIDcsIDI1NCwgMjE5LCAyNywgNywgMjU0LCAyMTcsIDI3LCA3LCAKKyAgICAyNTQsIDIxNiwgMjcsIDcsIDI1NCwgMjE1LCAyNywgNywgMjU0LCAyMTQsIDI3LCA3LCAyNTQsIDIxMywgMjcsIDcsIDI1NCwgCisgICAgMjEyLCAyNywgNywgMjU0LCAyMTEsIDI3LCA3LCAyNTQsIDIxMCwgMjcsIDcsIDI1NCwgMjA5LCAyNywgNywgMjU0LCAyMDgsIAorICAgIDI3LCA3LCAyNTQsIDIwNywgMjcsIDcsIDI1NCwgMjA2LCAyNywgNywgMjU0LCAyMDUsIDI3LCA3LCAyNTQsIDIwNCwgMjcsIAorICAgIDcsIDI1NCwgMjAzLCAyNywgNywgMjU0LCAyMDIsIDI3LCA3LCAyNTQsIDIwMSwgMjcsIDcsIDI1NCwgMjAwLCAyNywgNywgCisgICAgMjU0LCAxOTksIDI3LCA3LCAyNTQsIDE5OCwgMjcsIDcsIDI1NCwgMTk3LCAyNywgNywgMjU0LCAxOTYsIDI3LCA3LCAyNTQsIAorICAgIDE5NSwgMjcsIDcsIDI1NCwgMTk0LCAyNywgNywgMjU0LCAxOTMsIDI3LCA3LCAyNTQsIDE5MiwgMjcsIDcsIDI1NCwgMTkxLCAKKyAgICAyNywgNywgMjU0LCAxOTAsIDI3LCA3LCAyNTQsIDE4OSwgMjcsIDcsIDI1NCwgMTg4LCAyNywgNywgMjU0LCAxODcsIDI3LCAKKyAgICA3LCAyNTQsIDE4NiwgMjcsIDcsIDI1NCwgMTg1LCAyNywgNywgMjU0LCAxODQsIDI3LCA3LCAyNTQsIDE4MywgMjcsIDcsIAorICAgIDI1NCwgMTgyLCAyNywgNywgMjU0LCAxODEsIDI3LCA3LCAyNTQsIDE4MCwgMjcsIDcsIDI1NCwgMTc5LCAyNywgNywgMjU0LCAKKyAgICAxNzgsIDI3LCA3LCAyNTQsIDE3NywgMjcsIDcsIDI1NCwgMTc2LCAyNywgNywgMjU0LCAxNzUsIDI3LCA3LCAyNTQsIDE3NCwgCisgICAgMjcsIDcsIDI1NCwgMTczLCAyNywgNywgMjU0LCAxNzIsIDI3LCA3LCAyNTQsIDE3MSwgMjcsIDcsIDI1NCwgMTcwLCAyNywgCisgICAgNywgMjU0LCAxNjksIDI3LCA3LCAyNTQsIDE2OCwgMjcsIDcsIDI1NCwgMTY3LCAyNywgNywgMjU0LCAxNjYsIDI3LCA3LCAKKyAgICAyNTQsIDE2NSwgMjcsIDcsIDI1NCwgMTY0LCAyNywgNywgMjU0LCAxNjMsIDI3LCA3LCAyNTQsIDE2MiwgMjcsIDcsIDI1NCwgCisgICAgMTYxLCAyNywgNywgMjU0LCAxNjAsIDI3LCA3LCAyNTQsIDE1OSwgMjcsIDcsIDI1NCwgMTU4LCAyNywgNywgMjU0LCAxNTcsIAorICAgIDI3LCA3LCAyNTQsIDE1NiwgMjcsIDcsIDI1NCwgMTU1LCAyNywgNywgMjU0LCAxNTQsIDI3LCA3LCAyNTQsIDE1MywgMjcsIAorICAgIDcsIDI1NCwgMTUxLCAyNywgNywgMjU0LCAxNTAsIDI3LCA3LCAyNTQsIDE0OSwgMjcsIDcsIDI1NCwgMTQ4LCAyNywgNywgCisgICAgMjU0LCAxNDcsIDI3LCA3LCAyNTQsIDE0NiwgMjcsIDcsIDI1NCwgMTQ1LCAyNywgNywgMjU0LCAxNDQsIDI3LCA3LCAyNTQsIAorICAgIDE0MywgMjcsIDcsIDI1NCwgMTQyLCAyNywgNywgMjU0LCAxNDEsIDI3LCA3LCAyNTQsIDE0MCwgMjcsIDcsIDI1NCwgMTM5LCAKKyAgICAyNywgNywgMjU0LCAxMzgsIDI3LCA3LCAyNTQsIDEzNywgMjcsIDcsIDI1NCwgMTM2LCAyNywgNywgMjU0LCAxMzUsIDI3LCAKKyAgICA3LCAyNTQsIDEzNCwgMjcsIDcsIDI1NCwgMTMzLCAyNywgNywgMjU0LCAxMzIsIDI3LCA3LCAyNTQsIDEzMSwgMjcsIDcsIAorICAgIDI1NCwgMTMwLCAyNywgNywgMjU0LCAxMjksIDI3LCA3LCAyNTQsIDEyOCwgMjcsIDcsIDI1NCwgMTI3LCAyNywgNywgMjU0LCAKKyAgICAxMjYsIDI3LCA3LCAyNTQsIDEyNSwgMjcsIDcsIDI1NCwgMTI0LCAyNywgNywgMjU0LCAxMjMsIDI3LCA3LCAyNTQsIDEyMiwgCisgICAgMjcsIDcsIDI1NCwgMTIxLCAyNywgNywgMjU0LCAxMjAsIDI3LCA3LCAyNTQsIDExOSwgMjcsIDcsIDI1NCwgMTE4LCAyNywgCisgICAgNywgMjU0LCAxMTYsIDI3LCA3LCAyNTQsIDExNSwgMjcsIDcsIDI1NCwgMTE0LCAyNywgNywgMjU0LCAxMTMsIDI3LCA3LCAKKyAgICAyNTQsIDExMiwgMjcsIDcsIDI1NCwgMTExLCAyNywgNywgMjU0LCAxMTAsIDI3LCA3LCAyNTQsIDEwOSwgMjcsIDcsIDI1NCwgCisgICAgMTA4LCAyNywgNywgMjU0LCAxMDcsIDI3LCA3LCAyNTQsIDEwNiwgMjcsIDcsIDI1NCwgMTA1LCAyNywgNywgMjU0LCAxMDMsIAorICAgIDI3LCA3LCAyNTQsIDEwMiwgMjcsIDcsIDI1NCwgMTAxLCAyNywgNywgMjU0LCAxMDAsIDI3LCA3LCAyNTQsIDk5LCAyNywgNywgCisgICAgMjU0LCA5OCwgMjcsIDcsIDI1NCwgOTcsIDI3LCA3LCAyNTQsIDk2LCAyNywgNywgMjU0LCA5NSwgMjcsIDcsIDI1NCwgOTQsIAorICAgIDI3LCA3LCAyNTQsIDkzLCAyNywgNywgMjU0LCA5MiwgMjcsIDcsIDI1NCwgOTEsIDI3LCA3LCAyNTQsIDkwLCAyNywgNywgCisgICAgMjU0LCA4OSwgMjcsIDcsIDI1NCwgODgsIDI3LCA3LCAyNTQsIDg3LCAyNywgNywgMjU0LCA4NiwgMjcsIDcsIDI1NCwgODUsIAorICAgIDI3LCA3LCAyNTQsIDg0LCAyNywgNywgMjU0LCA4MywgMjcsIDcsIDI1NCwgODIsIDI3LCA3LCAyNTQsIDgxLCAyNywgNywgCisgICAgMjU0LCA4MCwgMjcsIDcsIDI1NCwgNzksIDI3LCA3LCAyNTQsIDc4LCAyNywgNywgMjU0LCA3NywgMjcsIDcsIDI1NCwgNzYsIAorICAgIDI3LCA3LCAyNTQsIDc1LCAyNywgNywgMjU0LCA3NCwgMjcsIDcsIDI1NCwgNzMsIDI3LCA3LCAyNTQsIDcyLCAyNywgNywgCisgICAgMjU0LCA3MSwgMjcsIDcsIDI1NCwgNzAsIDI3LCA3LCAyNTQsIDY5LCAyNywgNywgMjU0LCA2OCwgMjcsIDcsIDI1NCwgNjcsIAorICAgIDI3LCA3LCAyNTQsIDY2LCAyNywgNywgMjU0LCA2NSwgMjcsIDcsIDI1NCwgNjQsIDI3LCA3LCAyNTQsIDYzLCAyNywgNywgCisgICAgMjU0LCA2MiwgMjcsIDcsIDI1NCwgNjEsIDI3LCA3LCAyNTQsIDYwLCAyNywgNywgMjU0LCA1OSwgMjcsIDcsIDI1NCwgNTgsIAorICAgIDI3LCA3LCAyNTQsIDU3LCAyNywgNywgMjU0LCA1NiwgMjcsIDcsIDI1NCwgNTUsIDI3LCA3LCAyNTQsIDU0LCAyNywgNywgCisgICAgMjU0LCA1MywgMjcsIDcsIDI1NCwgNTIsIDI3LCA3LCAyNTQsIDUxLCAyNywgNywgMjU0LCA1MCwgMjcsIDcsIDI1NCwgNDksIAorICAgIDI3LCA3LCAyNTQsIDQ4LCAyNywgNywgMjU0LCA0NywgMjcsIDcsIDI1NCwgNDYsIDI3LCA3LCAyNTQsIDQ1LCAyNywgNywgCisgICAgMjU0LCA0NCwgMjcsIDcsIDI1NCwgNDMsIDI3LCA3LCAyNTQsIDQyLCAyNywgNywgMjU0LCA0MSwgMjcsIDcsIDI1NCwgNDAsIAorICAgIDI3LCA3LCAyNTQsIDM5LCAyNywgNywgMjU0LCAzOCwgMjcsIDcsIDI1NCwgMzcsIDI3LCA3LCAyNTQsIDM2LCAyNywgNywgCisgICAgMjU0LCAzNSwgMjcsIDcsIDI1NCwgMzMsIDI3LCA3LCAyNTQsIDMyLCAyNywgNywgMjU0LCAzMSwgMjcsIDcsIDI1NCwgMzAsIAorICAgIDI3LCA3LCAyNTQsIDI5LCAyNywgNywgMjU0LCAyOCwgMjcsIDcsIDI1NCwgMjcsIDI3LCA3LCAyNTQsIDI2LCAyNywgNywgCisgICAgMjU0LCAyNSwgMjcsIDcsIDI1NCwgMjQsIDI3LCA3LCAyNTQsIDIzLCAyNywgNywgMjU0LCAyMiwgMjcsIDcsIDI1NCwgMjEsIAorICAgIDI3LCA3LCAyNTQsIDIwLCAyNywgNywgMjU0LCAxOSwgMjcsIDcsIDI1NCwgMTgsIDI3LCA3LCAyNTQsIDE3LCAyNywgNywgCisgICAgMjU0LCAxNiwgMjcsIDcsIDI1NCwgMTUsIDI3LCA3LCAyNTQsIDE0LCAyNywgNywgMjU0LCAxMywgMjcsIDcsIDI1NCwgMTIsIAorICAgIDI3LCA3LCAyNTQsIDExLCAyNywgNywgMjU0LCAxMCwgMjcsIDcsIDI1NCwgOSwgMjcsIDcsIDI1NCwgOCwgMjcsIDcsIDI1NCwgCisgICAgNywgMjcsIDcsIDI1NCwgNiwgMjcsIDcsIDI1NCwgNSwgMjcsIDcsIDI1NCwgNCwgMjcsIDcsIDI1NCwgMywgMjcsIDcsIAorICAgIDI1NCwgMiwgMjcsIDcsIDI1NCwgMSwgMjcsIDcsIDI1NCwgMCwgMjcsIDcsIDI1MywgMjU1LCAyNywgNywgMjUzLCAyNTQsIAorICAgIDI3LCA3LCAyNTMsIDI1MywgMjcsIDcsIDI1MywgMjUyLCAyNywgNywgMjUzLCAyNTEsIDI3LCA3LCAyNTMsIDI1MCwgMjcsIAorICAgIDcsIDI1MywgMjQ5LCAyNywgNywgMjUzLCAyNDgsIDI3LCA3LCAyNTMsIDI0NywgMjcsIDcsIDI1MywgMjQ2LCAyNywgNywgCisgICAgMjUzLCAyNDUsIDI3LCA3LCAyNTMsIDI0NCwgMjcsIDcsIDI1MywgMjQzLCAyNywgNywgMjUzLCAyNDIsIDI3LCA3LCAyNTMsIAorICAgIDI0MSwgMjcsIDcsIDI1MywgMjQwLCAyNywgNywgMjUzLCAyMzksIDI3LCA3LCAyNTMsIDIzOCwgMjcsIDcsIDI1MywgMjM3LCAKKyAgICAyNywgNywgMjUzLCAyMzYsIDI3LCA3LCAyNTMsIDIzNSwgMjcsIDcsIDI1MywgMjM0LCAyNywgNywgMjUzLCAyMzMsIDI3LCAKKyAgICA3LCAyNTMsIDIzMiwgMjcsIDcsIDI1MywgMjMxLCAyNywgNywgMjUzLCAyMzAsIDI3LCA3LCAyNTMsIDIyOSwgMjcsIDcsIAorICAgIDI1MywgMjI4LCAyNywgNywgMjUzLCAyMjcsIDI3LCA3LCAyNTMsIDIyNiwgMjcsIDcsIDI1MywgMjI1LCAyNywgNywgMjUzLCAKKyAgICAyMjQsIDI3LCA3LCAyNTMsIDIyMywgMjcsIDcsIDI1MywgMjIyLCAyNywgNywgMjUzLCAyMjEsIDI3LCA3LCAyNTMsIDIyMCwgCisgICAgMjcsIDcsIDI1MywgMjE5LCAyNywgNywgMjUzLCAyMTgsIDI3LCA3LCAyNTMsIDIxNywgMjcsIDcsIDI1MywgMjE2LCAyNywgCisgICAgNywgMjUzLCAyMTUsIDI3LCA3LCAyNTMsIDIxNCwgMjcsIDcsIDI1MywgMjEzLCAyNywgNywgMjUzLCAyMTIsIDI3LCA3LCAKKyAgICAyNTMsIDIxMSwgMjcsIDcsIDI1MywgMjEwLCAyNywgNywgMjUzLCAyMDksIDI3LCA3LCAyNTMsIDIwOCwgMjcsIDcsIDI1MywgCisgICAgMjA3LCAyNywgNywgMjUzLCAyMDYsIDI3LCA3LCAyNTMsIDIwNSwgMjcsIDcsIDI1MywgMjA0LCAyNywgNywgMjUzLCAyMDMsIAorICAgIDI3LCA3LCAyNTMsIDIwMiwgMjcsIDcsIDI1MywgMjAxLCAyNywgNywgMjUzLCAyMDAsIDI3LCA3LCAyNTMsIDE5OSwgMjcsIAorICAgIDcsIDI1MywgMTk4LCAyNywgNywgMjUzLCAxOTcsIDI3LCA3LCAyNTMsIDE5NiwgMjcsIDcsIDI1MywgMTk1LCAyNywgNywgCisgICAgMjUzLCAxOTQsIDI3LCA3LCAyNTMsIDE5MywgMjcsIDcsIDI1MywgMTkyLCAyNywgNywgMjUzLCAxOTEsIDI3LCA3LCAyNTMsIAorICAgIDE5MCwgMjcsIDcsIDI1MywgMTg5LCAyNywgNywgMjUzLCAxODgsIDI3LCA3LCAyNTMsIDE4NywgMjcsIDcsIDI1MywgMTg2LCAKKyAgICAyNywgNywgMjUzLCAxODUsIDI3LCA3LCAyNTMsIDE4NCwgMjcsIDcsIDI1MywgMTgzLCAyNywgNywgMjUzLCAxODIsIDI3LCAKKyAgICA3LCAyNTMsIDE4MSwgMjcsIDcsIDI1MywgMTgwLCAyNywgNywgMjUzLCAxNzksIDI3LCA3LCAyNTMsIDE3NywgMjcsIDcsIAorICAgIDI1MywgMTc2LCAyNywgNywgMjUzLCAxNzUsIDI3LCA3LCAyNTMsIDE3NCwgMjcsIDcsIDI1MywgMTczLCAyNywgNywgMjUzLCAKKyAgICAxNzIsIDI3LCA3LCAyNTMsIDE3MSwgMjcsIDcsIDI1MywgMTcwLCAyNywgNywgMjUzLCAxNjksIDI3LCA3LCAyNTMsIDE2OCwgCisgICAgMjcsIDcsIDI1MywgMTY3LCAyNywgNywgMjUzLCAxNjQsIDI3LCA3LCAyNTMsIDE2MywgMjcsIDcsIDI1MywgMTYyLCAyNywgCisgICAgNywgMjUzLCAxNjEsIDI3LCA3LCAyNTMsIDE1NywgMjcsIDcsIDI1MywgMTU2LCAyNywgNywgMjUzLCAxNTUsIDI3LCA3LCAKKyAgICAyNTMsIDE1NCwgMjcsIDcsIDI1MywgMTUzLCAyNywgNywgMjUzLCAxNTIsIDI3LCA3LCAyNTMsIDE1MSwgMjcsIDcsIDI1MywgCisgICAgMTUwLCAyNywgNywgMjUzLCAxNDksIDI3LCA3LCAyNTMsIDE0OCwgMjcsIDcsIDI1MywgMTQ3LCAyNywgNywgMjUzLCAxNDYsIAorICAgIDI3LCA3LCAyNTMsIDE0NSwgMjcsIDcsIDI1MywgMTQ0LCAyNywgNywgMjUzLCAxNDMsIDI3LCA3LCAyNTMsIDE0MiwgMjcsIAorICAgIDcsIDI1MywgMTQxLCAyNywgNywgMjUzLCAxNDAsIDI3LCA3LCAyNTMsIDEzOSwgMjcsIDcsIDI1MywgMTM3LCAyNywgNywgCisgICAgMjUzLCAxMzYsIDI3LCA3LCAyNTMsIDEzNSwgMjcsIDcsIDI1MywgMTM0LCAyNywgNywgMjUzLCAxMzMsIDI3LCA3LCAyNTMsIAorICAgIDEzMiwgMjcsIDcsIDI1MywgMTMxLCAyNywgNywgMjUzLCAxMzAsIDI3LCA3LCAyNTMsIDEyOSwgMjcsIDcsIDI1MywgMTI4LCAKKyAgICAyNywgNywgMjUzLCAxMjcsIDI3LCA3LCAyNTMsIDEyNiwgMjcsIDcsIDI1MywgMTI1LCAyNywgNywgMjUzLCAxMjQsIDI3LCAKKyAgICA3LCAyNTMsIDEyMywgMjcsIDcsIDI1MywgMTIyLCAyNywgNywgMjUzLCAxMjEsIDI3LCA3LCAyNTMsIDEyMCwgMjcsIDcsIAorICAgIDI1MywgMTE5LCAyNywgNywgMjUzLCAxMTgsIDI3LCA3LCAyNTMsIDExNywgMjcsIDcsIDI1MywgMTE2LCAyNywgNywgMjUzLCAKKyAgICAxMTUsIDI3LCA3LCAyNTMsIDExNCwgMjcsIDcsIDI1MywgMTEzLCAyNywgNywgMjUzLCAxMTIsIDI3LCA3LCAyNTMsIDExMSwgCisgICAgMjcsIDcsIDI1MywgMTEwLCAyNywgNywgMjUzLCAxMDksIDI3LCA3LCAyNTMsIDEwOCwgMjcsIDcsIDI1MywgMTA3LCAyNywgCisgICAgNywgMjUzLCAxMDYsIDI3LCA3LCAyNTMsIDEwNSwgMjcsIDcsIDI1MywgMTA0LCAyNywgNywgMjUzLCAxMDMsIDI3LCA3LCAKKyAgICAyNTMsIDEwMiwgMjcsIDcsIDI1MywgMTAxLCAyNywgNywgMjUzLCAxMDAsIDI3LCA3LCAyNTMsIDk5LCAyNywgNywgMjUzLCAKKyAgICA5OCwgMjcsIDcsIDI1MywgOTcsIDI3LCA3LCAyNTMsIDk2LCAyNywgNywgMjUzLCA5NSwgMjcsIDcsIDI1MywgOTQsIDI3LCAKKyAgICA3LCAyNTMsIDkzLCAyNywgNywgMjUzLCA5MiwgMjcsIDcsIDI1MywgOTEsIDI3LCA3LCAyNTMsIDkwLCAyNywgNywgMjUzLCAKKyAgICA4OSwgMjcsIDcsIDI1MywgODgsIDI3LCA3LCAyNTMsIDg3LCAyNywgNywgMjUzLCA4NiwgMjcsIDcsIDI1MywgODUsIDI3LCAKKyAgICA3LCAyNTMsIDg0LCAyNywgNywgMjUzLCA4MywgMjcsIDcsIDI1MywgODIsIDI3LCA3LCAyNTMsIDgxLCAyNywgNywgMjUzLCAKKyAgICA4MCwgMjcsIDcsIDI1MywgNzksIDI3LCA3LCAyNTMsIDc4LCAyNywgNywgMjUzLCA3NywgMjcsIDcsIDI1MywgNzYsIDIxNiwgCisgICAgMjIxLCAyMTksIDI0NSwgMjE2LCA1NywgMjcsIDcsIDI1MywgNzUsIDI3LCA3LCAyNTMsIDc0LCAyNywgNywgMjUzLCA3MywgCisgICAgMjcsIDcsIDI1MywgNzIsIDI3LCA3LCAyNTMsIDcxLCAyNywgNywgMjUzLCA3MCwgMjcsIDcsIDI1MywgNjksIDI3LCA3LCAKKyAgICAyNTMsIDY4LCAyNywgNywgMjUzLCA2NywgMjcsIDcsIDI1MywgNjYsIDI3LCA3LCAyNTMsIDY1LCAyNywgNywgMjUzLCA2NCwgCisgICAgMTk5LCAyNywgNywgMjUzLCA2MywgMjcsIDcsIDI1MywgNjIsIDI3LCA3LCAyNTMsIDYxLCAyNywgNywgMjUzLCA2MCwgMjcsIAorICAgIDcsIDI1MywgNTksIDI3LCA3LCAyNTMsIDU4LCAyNywgNywgMjUzLCA1NywgMjcsIDcsIDI1MywgNTUsIDI3LCA3LCAyNTMsIAorICAgIDUzLCAyNywgNywgMjUzLCA1MSwgMjcsIDcsIDI1MywgNDksIDI3LCA3LCAyNTMsIDQ3LCAyNywgNywgMjUzLCA0NSwgMjcsIAorICAgIDcsIDI1MywgNDMsIDI3LCA3LCAyNTMsIDQxLCAyNywgNywgMjUzLCAzOSwgMjcsIDcsIDI1MywgMzcsIDI0OCwgMTQyLCAKKyAgICAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzUsIDI0MSwgODQsIDIyNywgMzYsIDgyLCAyNywgNywgMjUzLCAzNCwgMjcsIDcsIAorICAgIDI1MywgMzIsIDI3LCA3LCAyNTMsIDMwLCAyNywgNywgMjUzLCAyOCwgMjcsIDcsIDI1MywgMjYsIDI3LCA3LCAyNTMsIDI0LCAKKyAgICAyNywgNywgMjUzLCAyMiwgMjcsIDcsIDI1MywgMjAsIDI3LCA3LCAyNTMsIDE4LCAyNywgNywgMjUzLCAxNywgMjcsIDcsIAorICAgIDI1MywgMTYsIDI3LCA3LCAyNTMsIDE1LCAyNywgNywgMjUzLCAxNCwgMjcsIDcsIDI1MywgMTMsIDI3LCA3LCAyNTMsIDEyLCAKKyAgICAyNywgNywgMjUzLCAxMSwgMjcsIDcsIDI1MywgMTAsIDI3LCA3LCAyNTMsIDksIDI3LCA3LCAyNTMsIDgsIDI3LCA3LCAyNTMsIAorICAgIDcsIDI3LCA3LCAyNTMsIDYsIDI3LCA3LCAyNTMsIDUsIDI3LCA3LCAyNTMsIDQsIDI3LCA3LCAyNTMsIDMsIDI3LCA3LCAKKyAgICAyNTMsIDIsIDI3LCA3LCAyNTMsIDEsIDI3LCA3LCAyNTMsIDAsIDI3LCA3LCAyNTIsIDI1NSwgMjcsIDcsIDI1MiwgMjU0LCAKKyAgICAyNywgNywgMjUyLCAyNTMsIDI3LCA3LCAyNTIsIDI1MiwgMjcsIDcsIDI1MiwgMjUxLCAyNywgNywgMjUyLCAyNTAsIDI3LCAKKyAgICA3LCAyNTIsIDI0OSwgMjcsIDcsIDI1MiwgMjQ4LCAyNywgNywgMjUyLCAyNDcsIDI3LCA3LCAyNTIsIDI0NiwgMjcsIDcsIAorICAgIDI1MiwgMjQ1LCAyNywgNywgMjUyLCAyNDQsIDI3LCA3LCAyNTIsIDI0MywgMjcsIDcsIDI1MiwgMjQyLCAyNywgNywgMjUyLCAKKyAgICAyNDEsIDI3LCA3LCAyNTIsIDI0MCwgMjcsIDcsIDI1MiwgMjM5LCAyNywgNywgMjUyLCAyMzgsIDI3LCA3LCAyNTIsIDIzNywgCisgICAgMjcsIDcsIDI1MiwgMjM2LCAyNywgNywgMjUyLCAyMzUsIDI3LCA3LCAyNTIsIDIzNCwgMjcsIDcsIDI1MiwgMjMzLCAyNywgCisgICAgNywgMjUyLCAyMzIsIDI3LCA3LCAyNTIsIDIzMSwgMjcsIDcsIDI1MiwgMjMwLCAyNywgNywgMjUyLCAyMjksIDI3LCA3LCAKKyAgICAyNTIsIDIyOCwgMjcsIDcsIDI1MiwgMjI3LCAyNywgNywgMjUyLCAyMjYsIDI3LCA3LCAyNTIsIDIyNSwgMjcsIDcsIDI1MiwgCisgICAgMjI0LCAyNywgNywgMjUyLCAyMjMsIDI3LCA3LCAyNTIsIDIyMiwgMjcsIDcsIDI1MiwgMjIxLCAyNywgNywgMjUyLCAyMjAsIAorICAgIDI3LCA3LCAyNTIsIDIxOSwgMjcsIDcsIDI1MiwgMjE4LCAyNywgNywgMjUyLCAyMTcsIDI3LCA3LCAyNTIsIDIxNiwgMjcsIAorICAgIDcsIDI1MiwgMjE1LCAyNywgNywgMjUyLCAyMTQsIDI3LCA3LCAyNTIsIDIxMywgMjcsIDcsIDI1MiwgMjEyLCAyNywgNywgCisgICAgMjUyLCAyMTEsIDI3LCA3LCAyNTIsIDIxMCwgMjcsIDcsIDI1MiwgMjA5LCAyNywgNywgMjUyLCAyMDgsIDI3LCA3LCAyNTIsIAorICAgIDIwNywgMjcsIDcsIDI1MiwgMjA2LCAyNywgNywgMjUyLCAyMDUsIDI3LCA3LCAyNTIsIDIwNCwgMjcsIDcsIDI1MiwgMjAzLCAKKyAgICAyNywgNywgMjUyLCAyMDIsIDI3LCA3LCAyNTIsIDIwMSwgMjcsIDcsIDI1MiwgMjAwLCAyNywgNywgMjUyLCAxOTksIDI3LCAKKyAgICA3LCAyNTIsIDE5OCwgMjcsIDcsIDI1MiwgMTk3LCAyNywgNywgMjUyLCAxOTYsIDI3LCA3LCAyNTIsIDE5NSwgMjcsIDcsIAorICAgIDI1MiwgMTk0LCAyNywgNywgMjUyLCAxOTMsIDI3LCA3LCAyNTIsIDE5MiwgMjcsIDcsIDI1MiwgMTkxLCAyNywgNywgMjUyLCAKKyAgICAxOTAsIDI3LCA3LCAyNTIsIDE4OSwgMjcsIDcsIDI1MiwgMTg4LCAyNywgNywgMjUyLCAxODcsIDI3LCA3LCAyNTIsIDE4NiwgCisgICAgMjcsIDcsIDI1MiwgMTg1LCAyNywgNywgMjUyLCAxODQsIDI3LCA3LCAyNTIsIDE4MywgMjcsIDcsIDI1MiwgMTgyLCAyNywgCisgICAgNywgMjUyLCAxODEsIDI3LCA3LCAyNTIsIDE4MCwgMjcsIDcsIDI1MiwgMTc5LCAyNywgNywgMjUyLCAxNzgsIDI3LCA3LCAKKyAgICAyNTIsIDE3NywgMjcsIDcsIDI1MiwgMTc2LCAyNywgNywgMjUyLCAxNzUsIDI3LCA3LCAyNTIsIDE3NCwgMjcsIDcsIDI1MiwgCisgICAgMTczLCAyNywgNywgMjUyLCAxNzIsIDI3LCA3LCAyNTIsIDE3MSwgMjcsIDcsIDI1MiwgMTcwLCAyNywgNywgMjUyLCAxNjksIAorICAgIDI3LCA3LCAyNTIsIDE2OCwgMjcsIDcsIDI1MiwgMTY3LCAyNywgNywgMjUyLCAxNjYsIDI3LCA3LCAyNTIsIDE2NSwgMjcsIAorICAgIDcsIDI1MiwgMTY0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTM2LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIAorICAgIDE5OCwgMjM5LCAxNzgsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjI0LCAxOTgsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDEwNywgMjI0LCAxOTcsIAorICAgIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTUsIDI0LCAxLCAyMTgsIDE5OCwgMjA4LCAxOTksIDIyNCwgMTk3LCAyNCwgMSwgCisgICAgMjE4LCAxOTgsIDIyMCwgMjE1LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDI1NCwgMjE5LCAxNjksIDIyMiwgCisgICAgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjE5LCAxNjksIDIyMiwgMzMsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1NiwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMDcsIDIwNCwgMjI1LCAxNTcsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAxOTcsIDI0LCAxLCAyMTgsIAorICAgIDE5OCwgMjI1LCAxNTMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxODYsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjEzLCAxMTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCA5MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAorICAgIDE2MywgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEwLCAxNzksIDI0LCAxLCAyMTgsIDE5OCwgCisgICAgMjIyLCAxMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAxMCwgMjQsIDEsIDIxOCwgMTk4LCAyMjcsIDE3NiwgMjI4LCAxNzUsIAorICAgIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDEsIDIyNCwgMjA1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTYwLCAyNCwgMSwgCisgICAgMjE4LCAxOTgsIDIxOSwgNjIsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxMjUsIAorICAgIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCA1NSwgMjIyLCAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAxOTYsIDIyNCwgMjA4LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDEwNiwgMjAyLCAxODgsIDIyMywgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAxLCAyNCwgCisgICAgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjEsIDEwMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDkxLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyNCwgMTkwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMjExLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMzEsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjMwLCAyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2OSwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIAorICAgIDE5OCwgMjIzLCAyNiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCAyMTksIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAKKyAgICAxNTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA3NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTcsIDE3MiwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMDcsIDIwMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjYsIDIzNSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI1MSwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMDksIDExNywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAorICAgIDE3MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDIyLCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTg4LCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyNCwgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAyOSwgMjQsIDEsIAorICAgIDIxOCwgMTk4LCAyMzksIDI0NiwgMjQsIDEsIDIxOCwgMTk4LCAyMTUsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDIzMywgCisgICAgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDEwNywgMjE4LCAxNTcsIDI0LCAxLCAKKyAgICAyMTgsIDE5OCwgMjEyLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyMzAsIAorICAgIDIyMSwgMTExLCAyMDIsIDE5NiwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDIzNywgMjI0LCA1MSwgMjQsIDEsIDIxOCwgMTk4LCAKKyAgICAyMTksIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDIsIDI0LCAxLCAyMTgsIDE5OCwgMjA2LCAyMzEsIDI0LCAxLCAyMTgsIAorICAgIDE5OCwgMjIyLCAxNzMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA0NCwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMjUsIDQ5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjUxLCAyNCwgMSwgMjE4LCAxOTgsIDIwOSwgCisgICAgMTIxLCAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjQ0LCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTY1LCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMSwgMTE1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTU4LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjQ4LCAyNCwgCisgICAgMSwgMjE4LCAxOTgsIDIyOSwgMjQxLCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTE4LCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgCisgICAgNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzksIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyMzAsIDI0LCAxLCAyMTgsIAorICAgIDE5OCwgMjIzLCA3NSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDQ4LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTEzLCAyNCwgMSwgCisgICAgMjE4LCAxOTcsIDIwNywgMjA0LCAyMjUsIDE1NSwgMjQsIDEsIDIxOCwgMTk3LCAyMTIsIDE1MiwgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyMTMsIDExOCwgMjA3LCAyMDMsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAzMSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyMjUsIDU1LCAyMjUsIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDkyLCAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMTgsIAorICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA1MCwgMjQsIDEsIDIxOCwgMTk3LCAyMzAsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCAKKyAgICAxOSwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDk2LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgMTk3LCAyMjgsIDI5LCAyMjEsIAorICAgIDExMSwgMjIxLCA2LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgOTQsIDIxMywgMTcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAKKyAgICAyNDksIDIyMiwgNDcsIDI0LCAxLCAyMTgsIDE5NywgMjM4LCA5OCwgMjQsIDEsIDIxOCwgMTk3LCAyMTgsIDEwNSwgMjQsIDEsIAorICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjIxLCAxMDksIDI0LCAxLCAyMTgsIDE5NywgMjEzLCAyMiwgMjIyLCA0MiwgMjQsIDEsIAorICAgIDIxOCwgMTk3LCAyMTMsIDE4LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMTk4LCAyMDksIDEyMCwgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyMjUsIDM3LCAyMjUsIDUxLCAyNCwgMSwgMjE4LCAxOTcsIDIyMCwgMjQ5LCAyMjEsIDk3LCAyNCwgMSwgMjE4LCAxOTcsIAorICAgIDIyOSwgMTU5LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNTUsIDI0LCAxLCAKKyAgICAyMTgsIDE5NywgMjI4LCAxMDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCA2NSwgMjQsIDEsIDIxOCwgMTk3LCAyMDUsIDIzNywgCisgICAgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDEzNywgMjIzLCAxODQsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxNzIsIDIyNSwgMzMsIAorICAgIDI0LCAxLCAyMTgsIDE5NywgMjAzLCAyMTUsIDI0LCAxLCAyMTgsIDE5NywgMjE1LCAxMiwgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyMTAsIDE0LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjEwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTU2LCAyNCwgMSwgCisgICAgMjE4LCAxOTcsIDIyMiwgMTU3LCAyMjgsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDAsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjEwLCAyMzAsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA0MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDM2LCAyNCwgMSwgMjE4LCAKKyAgICAxOTcsIDIyMSwgOSwgMjQsIDEsIDIxOCwgMTk3LCAyMTcsIDE3NiwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIwOSwgMjIyLCAKKyAgICAxNzQsIDI0LCAxLCAyMTgsIDE5NywgMjQwLCAzMSwgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDI4LCAyNCwgMSwgMjE4LCAxOTcsIAorICAgIDI0MCwgNTMsIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNjcsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMzYsIAorICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMTIsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAxNzUsIDI0LCAxLCAKKyAgICAyMTgsIDE5NywgMjIyLCAxODAsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgMTkyLCAyNCwgCisgICAgMSwgMjE4LCAxOTcsIDIyOSwgNzcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMTM2LCAKKyAgICAyMjUsIDE1NywgMjQsIDEsIDE2OCwgMjIwLCAyMTQsIDI0LCAxLCAxNjgsIDIwMiwgMTk2LCAyNCwgMSwgMTY4LCAyMDQsIAorICAgIDk1LCAyNCwgMSwgMTY4LCAyMjIsIDE3MywgMjQsIDEsIDE2OCwgMjIzLCAxNCwgMjQsIDEsIDE2OCwgMjIyLCAxNDMsIDI0LCAKKyAgICAxLCAxNjgsIDIzOCwgMTA4LCAyNCwgMSwgMTY4LCAyMjUsIDQ1LCAyNCwgMSwgMTY4LCAyMzgsIDIwNSwgMjQsIDEsIDE2OCwgCisgICAgMjIwLCAyMzksIDIyNCwgOTEsIDIyNCwgMjEyLCAyNCwgMSwgMTY4LCAyMjEsIDg5LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAKKyAgICAyMjUsIDQyLCAyNCwgMSwgMTY4LCAyMTgsIDExMSwgMjQsIDEsIDE2OCwgMjIyLCAyNTUsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIAorICAgIDI0NywgODgsIDI0LCAxLCAxNjgsIDIyOSwgMTU3LCAyNCwgMSwgMTY4LCAyMzgsIDEwOSwgMjQsIDEsIDE2OCwgMjI5LCAKKyAgICAxNjQsIDI0LCAxLCAxNjgsIDIwMiwgMjE0LCAyMjMsIDIxNSwgMjQsIDEsIDE2OCwgMjIwLCAyMDgsIDI0LCAxLCAxNjgsIAorICAgIDIyNSwgMzAsIDI0LCAxLCAxNjgsIDIyMSwgMTE5LCAyNCwgMSwgMTY4LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAyMDMsIDE5LCAKKyAgICAyNCwgMSwgMTY4LCAyMjgsIDI0MSwgMjQsIDEsIDE2OCwgMjMwLCA0MSwgMjQsIDEsIDE2OCwgMjEzLCAxMTMsIDI0LCAxLCAKKyAgICAxNjgsIDIyMywgOCwgMjQsIDEsIDE2OCwgMjEwLCAxMiwgMjQsIDEsIDE2OCwgMjIyLCAxNiwgMjQsIDEsIDE2OCwgMjA4LCAKKyAgICAxOTksIDIwMiwgMTk5LCAyNCwgMSwgMTY4LCAyMTEsIDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYzLCAyMjEsIDYsIDI0LCAxLCAKKyAgICAxNjgsIDIwNSwgMjM2LCAyNCwgMSwgMTY4LCAyMjMsIDc4LCAyNCwgMSwgMTY4LCAyMjUsIDE3NywgMjI5LCAxNjYsIDI0LCAKKyAgICAxLCAxNjgsIDIyMSwgMTAyLCAyNCwgMSwgMTY4LCAyMjIsIDE1OCwgMjQsIDEsIDE2OCwgMjI4LCAxMSwgMjQsIDEsIDE2OCwgCisgICAgMjI1LCAzOCwgMjQsIDEsIDE2OCwgMjI0LCAxODksIDI0LCAxLCAxNjgsIDIyMSwgOTYsIDI0LCAxLCAxNjgsIDIwOSwgMTE2LCAKKyAgICAyNCwgMSwgMTY4LCAyMjIsIDE2MCwgMjQsIDEsIDE2OCwgMjM5LCAxMDYsIDI0LCAxLCAxNjgsIDIyMywgMTMsIDI0LCAxLCAKKyAgICAxNjgsIDIyMSwgMTIxLCAyNCwgMSwgMTY4LCAyMjEsIDExNywgMjQsIDEsIDE2OCwgMjQ3LCAxNjksIDI0LCAxLCAxNjgsIAorICAgIDIwNSwgMjM4LCAyNCwgMSwgMTY4LCAyMjUsIDQzLCAyNCwgMSwgMTY4LCAyMTUsIDE0NSwgMjQsIDEsIDE2OCwgMjIyLCA0NiwgCisgICAgMjQsIDEsIDE2OCwgMjI4LCAyOCwgMjQsIDEsIDE2OCwgMjA4LCAxOTYsIDI0LCAxLCAxNjgsIDIyMSwgMTAzLCAyMjIsIAorICAgIDEyNSwgMjQsIDEsIDE2OCwgMjIyLCAzOCwgMjQsIDEsIDE2OCwgMjI5LCAxNzAsIDI0LCAxLCAxNjgsIDIyMiwgMTY1LCAyNCwgCisgICAgMSwgMTY4LCAyMjUsIDE1MCwgMjQsIDEsIDE2OCwgMjI1LCAzMSwgMjQsIDEsIDE2OCwgMjI2LCAyMzksIDI0LCAxLCAxNjgsIAorICAgIDIyOCwgMTc1LCAyNCwgMSwgMTY4LCAyMjIsIDQ0LCAyNCwgMSwgMTY4LCAyMjIsIDEyNSwgMjQsIDEsIDE2OCwgMjAzLCAKKyAgICAyMDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYxLCAyNCwgMSwgMTY4LCAyMjEsIDEwNiwgMjQsIDEsIDE2OCwgMjIxLCA5OCwgMjQsIAorICAgIDEsIDE2OCwgMjI4LCAxOTAsIDIyMiwgMiwgMjQsIDEsIDE2OCwgMjIxLCAxMDQsIDI0LCAxLCAxNjgsIDIyMywgMjEsIDI0LCAKKyAgICAxLCAxNjgsIDIyNSwgMTc3LCAyMjEsIDEwOSwgMjQsIDEsIDE2OCwgMjAzLCAxMTAsIDI0LCAxLCAxNjgsIDIyMywgMjAsIAorICAgIDI0LCAxLCAxNjgsIDIxMiwgMTk0LCAyNCwgMSwgMTY4LCAyMTMsIDExNiwgMjQsIDEsIDE2OCwgMjI1LCAzOSwgMjQsIDEsIAorICAgIDE2OCwgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyNSwgNDksIDI0LCAxLCAxNjgsIDIyOSwgMTU4LCAyNCwgMSwgMTY4LCAKKyAgICAyMjUsIDQwLCAyNCwgMSwgMTY4LCAyMjksIDE2MiwgMjQsIDEsIDE2OCwgMjI1LCA1MywgMjE4LCAxNjIsIDI0LCAxLCAxNjgsIAorICAgIDIwMiwgMTc5LCAyNCwgMSwgMTY4LCAyMjIsIDM0LCAyNCwgMSwgMTY4LCAyMjQsIDE0NCwgMjQsIDEsIDE2OCwgMjIzLCAKKyAgICAyNDQsIDI0LCAxLCAxNjgsIDIxMiwgMjUwLCAyNCwgMSwgMTY4LCAyMjksIDE4MSwgMjI3LCAyNDYsIDI0LCAxLCAxNjgsIAorICAgIDIyOSwgMTgxLCAyNDAsIDY2LCAyNCwgMSwgMTY4LCAyMjIsIDE5NSwgMjQsIDEsIDE2OCwgMjIzLCA3NSwgMjQsIDEsIDE2OCwgCisgICAgMjI3LCA5NiwgMjQsIDEsIDE2OCwgMjE4LCAxMjMsIDI0LCAxLCAxNjgsIDIxOSwgOSwgMjQsIDEsIDE2OCwgMjA5LCAxMzIsIAorICAgIDI0LCAxLCAxMzQsIDIyNSwgMjksIDI0LCAxLCAxMzQsIDIwNCwgOTMsIDI0LCAxLCAxMzQsIDIyMiwgMzIsIDI0LCAxLCAKKyAgICAxMzQsIDIyNCwgMTk3LCAyNCwgMSwgMTM0LCAyMjIsIDMwLCAyNCwgMSwgMTM0LCAyMjcsIDE0MSwgMjQsIDEsIDEzNCwgCisgICAgMjIyLCAzNSwgMjQsIDEsIDEzNCwgMjIxLCAxMTYsIDI0LCAxLCAxMzQsIDIyMiwgMTc5LCAyNCwgMSwgMTM0LCAyMjEsIDYsIAorICAgIDI0LCAxLCAxMzQsIDIwMywgMjE2LCAyNCwgMSwgMTM0LCAyMjIsIDEzMywgMjQsIDEsIDEzNCwgMjEzLCA0MSwgMjQsIDEsIAorICAgIDEzNCwgMjIyLCAxNDQsIDI0LCAxLCAxMzQsIDIyOSwgMTY1LCAyNCwgMSwgMTM0LCAyMDksIDExOCwgMjQsIDEsIDEzNCwgCisgICAgMjEzLCAyMCwgMjQsIDEsIDEzNCwgMjIyLCA0MywgMjQsIDEsIDEzNCwgMjEwLCAyMzAsIDI0LCAxLCAxMzQsIDIyOSwgMTcwLCAKKyAgICAyNCwgMSwgMTM0LCAyMDMsIDk4LCAyNCwgMSwgMTM0LCAyMjgsIDE5MSwgMjQsIDEsIDEzNCwgMjE0LCAyMzMsIDI0LCAxLCAKKyAgICAxMzQsIDIyNCwgMjAyLCAyNCwgMSwgMTM0LCAyMjMsIDEyLCAyNCwgMSwgMTM0LCAyMjUsIDEyNSwgMjQsIDEsIDEzNCwgCisgICAgMjI0LCAyMDgsIDI0LCAxLCAxMzQsIDIxMywgMTE1LCAyNCwgMSwgMTM0LCAyMDMsIDQyLCAyNCwgMSwgMTM0LCAyMjIsIDM3LCAKKyAgICAyNCwgMSwgMTM0LCAyMjksIDE2MSwgMjI1LCAzMiwgMjQsIDEsIDEzNCwgMjIyLCAxNDAsIDI0LCAxLCAxMzQsIDIwNywgCisgICAgMjAzLCAyNCwgMSwgMTM0LCAyMzgsIDExOCwgMjQsIDEsIDEzNCwgMjIyLCAxMzAsIDI0LCAxLCAxMzQsIDI0MCwgMzIsIDI0LCAKKyAgICAxLCAxMzQsIDIyMywgMTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgxLCAyNCwgMSwgMTM0LCAyMjcsIDE2OSwgMjQsIDEsIDEzNCwgCisgICAgMjIyLCAyNTQsIDI0LCAxLCAxMzQsIDIyNCwgNTAsIDI0LCAxLCAxMzQsIDIyNCwgMTg1LCAyNCwgMSwgMTM0LCAyMTcsIAorICAgIDE1NiwgMjQsIDEsIDEzNCwgMjI0LCAxODMsIDI0LCAxLCAxMzQsIDIyNCwgMTk5LCAyNCwgMSwgMTM0LCAyMjYsIDIyMiwgCisgICAgMjQsIDEsIDEzNCwgMjIxLCAxMDgsIDI0LCAxLCAxMzQsIDIyNSwgNTIsIDI0LCAxLCAxMzQsIDIyOCwgMTY1LCAyNCwgMSwgCisgICAgMTM0LCAyMjAsIDI1MSwgMjQsIDEsIDEzNCwgMjA5LCAxMjEsIDI0LCAxLCAxMzQsIDIxMSwgMjQ0LCAyNCwgMSwgMTM0LCAKKyAgICAyMDIsIDE3OSwgMjQsIDEsIDEzNCwgMjI5LCAxNjIsIDI0LCAxLCAxMzQsIDIxNiwgMjAxLCAyNCwgMSwgMTM0LCAyMDksIAorICAgIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxNDEsIDI0LCAxLCAxMzQsIDIyNCwgMjA0LCAyNCwgMSwgMTM0LCAyMjEsIDEwNywgCisgICAgMjQsIDEsIDEzNCwgMjI5LCAxNjAsIDI0LCAxLCAxMzQsIDIxOCwgMTE3LCAyNCwgMSwgMTM0LCAyMTgsIDIxMywgMjQsIDEsIAorICAgIDEzNCwgMjIwLCAyMjUsIDI0LCAxLCAxMzQsIDIyNywgMTc1LCAyNCwgMSwgMTM0LCAyMjIsIDE4MCwgMjQsIDEsIDEzNCwgCisgICAgMjI0LCAyMDEsIDI0LCAxLCAxMzQsIDIyMiwgMTUzLCAyNCwgMSwgMTM0LCAyMDIsIDE5MywgMjQsIDEsIDEzNCwgMjE5LCAKKyAgICA5NiwgMjQsIDEsIDEzNCwgMjAyLCAxOTIsIDI0LCAxLCAxMzQsIDIyMywgMjEsIDI0LCAxLCAxMzQsIDIyMSwgOTcsIDI0LCAKKyAgICAxLCAxMzQsIDIxMSwgNywgMjQsIDEsIDEzNCwgMjI4LCAxOTUsIDI0LCAxLCAxMzQsIDIyMiwgMTY5LCAyNCwgMSwgMTM0LCAKKyAgICAyMjIsIDEzOCwgMjQsIDEsIDEzNCwgMjA3LCAxODUsIDI0LCAxLCAxMzQsIDIyNCwgMjEyLCAyNCwgMSwgMTM0LCAyMjgsIAorICAgIDE4NSwgMjQsIDEsIDEzNCwgMjIxLCAxMDUsIDI0LCAxLCAxMzQsIDIwOSwgMTE5LCAyNCwgMSwgMTM0LCAyMjUsIDE1MiwgCisgICAgMjQsIDEsIDEzNCwgMjIyLCAxNzgsIDI0LCAxLCAxMzQsIDIyNywgMTY4LCAyNCwgMSwgMTM0LCAyMjIsIDE1OSwgMjQsIDEsIAorICAgIDEzNCwgMjIxLCAxMTAsIDI0LCAxLCAxMzQsIDIyMiwgMTYsIDI0LCAxLCAxMzQsIDIzOCwgMTAyLCAyNCwgMSwgMTM0LCAKKyAgICAyMjgsIDIwOSwgMjQsIDEsIDEzNCwgMjE2LCAxMDgsIDIyMCwgNDUsIDI0LCAxLCAxMzQsIDIxMCwgMSwgMjQsIDEsIDEzNCwgCisgICAgMjA4LCAxNDEsIDI0LCAxLCAxMzQsIDIyMCwgMjQ4LCAyNCwgMSwgMTM0LCAyMTYsIDMsIDI0LCAxLCAxMzQsIDIyNywgMjI1LCAKKyAgICAyNCwgMSwgMTM0LCAyMjUsIDcsIDI0LCAxLCAxMzQsIDIyNiwgMTg1LCAyNCwgMSwgMTM0LCAyMTAsIDE3OSwgMjQsIDEsIAorICAgIDEzNCwgMjIzLCAyNDYsIDI0LCAxLCAxMzQsIDIxMywgNiwgMjQsIDEsIDEzNCwgMjEzLCAxNiwgMjQsIDEsIDEzNCwgMjI4LCAKKyAgICAxMzcsIDI0LCAxLCAxMzQsIDIyMSwgODQsIDI0LCAxLCAxMzQsIDIxMiwgMTk5LCAyNCwgMSwgMTM0LCAyMjEsIDk5LCAyNCwgCisgICAgMSwgMTM0LCAyMTksIDIzLCAyNCwgMSwgMTM0LCAyMjIsIDEwMCwgMjQsIDEsIDEzNCwgMjEyLCAyMjksIDI0LCAxLCAxMzQsIAorICAgIDIxNywgMTcxLCAyNCwgMSwgMTM0LCAyMjMsIDE4NCwgMjQsIDEsIDEzNCwgMjI3LCAxMCwgMjQsIDEsIDEzNCwgMjE2LCAKKyAgICAxMDgsIDIyMywgMjM5LCAyNCwgMSwgMTM0LCAyMDksIDIsIDI0LCAxLCAxMzQsIDIyMSwgODYsIDI0LCAxLCAxMzQsIDIyNSwgCisgICAgNTMsIDIxMywgMTExLCAyNCwgMSwgMTM0LCAyMTQsIDIzMSwgMjQsIDEsIDEzNCwgMjQwLCAxMDcsIDI0LCAxLCA5MywgMjIzLCAKKyAgICAyMCwgMjQsIDEsIDkzLCAyMDgsIDE0NywgMjQsIDEsIDkzLCAyMjUsIDQyLCAyNCwgMSwgOTMsIDIyOCwgMTEsIDI0LCAxLCAKKyAgICA5MywgMjA1LCAxNzcsIDI0LCAxLCA5MywgMjI3LCAxNiwgMjQsIDEsIDkzLCAyMTksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIAorICAgIDI1NSwgMjQsIDEsIDkzLCAyMTYsIDE3NiwgMjQsIDEsIDkzLCAyMjEsIDExMiwgMjQsIDEsIDkzLCAyMjIsIDI0NywgMjQsIAorICAgIDEsIDkzLCAyMTcsIDE4OCwgMjQsIDEsIDkzLCAyMDksIDIzMiwgMjQsIDEsIDkzLCAyMjIsIDE0NiwgMjQsIDEsIDkzLCAKKyAgICAyMjgsIDIzNywgMjQsIDEsIDkzLCAyMDMsIDIwOCwgMjQsIDEsIDkzLCAyMTQsIDE2NSwgMjQsIDEsIDkzLCAyMjIsIDE3MCwgCisgICAgMjQsIDEsIDkzLCAyMTksIDE2NSwgMjQsIDEsIDkzLCAyMDgsIDE0OCwgMjQsIDEsIDkzLCAyMjgsIDE4OSwgMjQsIDEsIDkzLCAKKyAgICAyMjcsIDMwLCAyNCwgMSwgOTMsIDIyMSwgMTE1LCAyNCwgMSwgOTMsIDIyMiwgMTIyLCAyNCwgMSwgOTMsIDIyNSwgMTU4LCAKKyAgICAyNCwgMSwgOTMsIDIyMiwgMTM5LCAyNCwgMSwgOTMsIDIyMiwgMTIxLCAyNCwgMSwgOTMsIDIyMSwgMTE0LCAyNCwgMSwgOTMsIAorICAgIDIxNiwgMCwgMjQsIDEsIDkzLCAyMjIsIDM0LCAyNCwgMSwgOTMsIDIxOSwgMjEsIDI0LCAxLCA5MywgMjE1LCAzMywgMjQsIAorICAgIDEsIDkzLCAyMjIsIDE1NCwgMjQsIDEsIDkzLCAyMjQsIDE5MSwgMjQsIDEsIDkzLCAyMzgsIDk2LCAyNCwgMSwgOTMsIDIyMiwgCisgICAgMTQyLCAyNCwgMSwgOTMsIDIyMiwgNDUsIDI0LCAxLCA5MywgMjI1LCAxMDYsIDI0LCAxLCA5MywgMjI3LCAxMiwgMjQsIDEsIAorICAgIDkzLCAyMjIsIDE3NSwgMjQsIDEsIDkzLCAyMjMsIDQsIDI0LCAxLCA5MywgMjEwLCAwLCAyMjEsIDk3LCAyNCwgMSwgOTMsIAorICAgIDIxMywgMTE3LCAyNCwgMSwgOTMsIDIxNywgMTgxLCAyNCwgMSwgOTMsIDIyMywgMjQsIDIxMiwgNiwgMjQsIDEsIDkzLCAKKyAgICAyMjIsIDE2MiwgMjIxLCA2LCAyNCwgMSwgOTMsIDIwMywgNywgMjQsIDEsIDkzLCAyMzgsIDk3LCAyNCwgMSwgOTMsIDIwNywgCisgICAgMjAyLCAyNCwgMSwgOTMsIDIwMywgMjIsIDI0LCAxLCA5MywgMjE4LCA2OSwgMjQsIDEsIDkzLCAyMDcsIDE5MCwgMjQsIDEsIAorICAgIDkzLCAyMjksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIDYsIDI0LCAxLCA5MywgMjA5LCAxMjAsIDI0LCAxLCA5MywgMjA1LCAKKyAgICAyMzksIDI0LCAxLCA5MywgMjA0LCA0MywgMjQsIDEsIDkzLCAyMjgsIDExMCwgMjQsIDEsIDkzLCAyMTcsIDE5MSwgMjQsIDEsIAorICAgIDkzLCAyMTAsIDEzLCAyNCwgMSwgOTMsIDIzOCwgMTE3LCAyNCwgMSwgOTMsIDIyMiwgMTg1LCAyNCwgMSwgOTMsIDIxMywgCisgICAgMTksIDI0LCAxLCA5MywgMjI0LCAxODYsIDI0LCAxLCA5MywgMjI1LCA0NiwgMjQsIDEsIDkzLCAyMjAsIDIxMiwgMjQsIDEsIAorICAgIDkzLCAyMjEsIDI1NCwgMjQsIDEsIDkzLCAyMzgsIDIwMSwgMjQsIDEsIDkzLCAyMDcsIDE5MSwgMjQsIDEsIDkzLCAyMjgsIAorICAgIDE5OSwgMjQsIDEsIDkzLCAyMDMsIDc0LCAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDYsIDMyLCAyNCwgMSwgOTMsIDIwMiwgCisgICAgMjUzLCAyNCwgMSwgOTMsIDIyNCwgMjAzLCAyNCwgMSwgOTMsIDIyMywgOSwgMjQsIDEsIDkzLCAyMTgsIDE1OCwgMjQsIDEsIAorICAgIDkzLCAyMDIsIDE5OCwgMjQsIDEsIDkzLCAyMjcsIDE3MCwgMjQsIDEsIDkzLCAyMzksIDEwNiwgMjQsIDEsIDkzLCAyMzgsIAorICAgIDIwMCwgMjQsIDEsIDkzLCAyMjIsIDEzMiwgMjQsIDEsIDkzLCAyMjksIDE3MCwgMjQsIDEsIDkzLCAyMjUsIDE2MSwgMjQsIAorICAgIDEsIDkzLCAyMjIsIDE0NSwgMjQsIDEsIDkzLCAyMzgsIDEwMywgMjQsIDEsIDkzLCAyNDAsIDEwOCwgMjQsIDEsIDkzLCAKKyAgICAyMjEsIDg3LCAyNCwgMSwgOTMsIDIxOCwgMjE0LCAyNCwgMSwgOTMsIDIwMywgMjAsIDI0LCAxLCA5MywgMjIyLCAxNzEsIAorICAgIDI0LCAxLCA5MywgMjIwLCAyNDksIDI0OCwgMTAzLCAyNCwgMSwgOTMsIDIyMCwgMTkyLCAyNCwgMSwgOTMsIDIxOCwgNDMsIAorICAgIDI0LCAxLCA5MywgMjI0LCAxNDQsIDI0LCAxLCA5MywgMjM5LCAxMDQsIDI0LCAxLCA5MywgMjIzLCAxMDAsIDI0LCAxLCA5MywgCisgICAgMjIzLCAyNDQsIDI0LCAxLCA5MywgMjM4LCAxMDIsIDI0LCAxLCA5MywgMjM5LCAxMDksIDc1LCAyNCwgMSwgOTMsIDIyMywgCisgICAgMTg1LCAyNCwgMSwgOTMsIDIxNywgMTg3LCAyNCwgMSwgOTMsIDIyMiwgMTM0LCAyNCwgMSwgOTMsIDIyOCwgMTc1LCAyNCwgCisgICAgMSwgOTMsIDIxOCwgMTU1LCAyNCwgMSwgOTMsIDIyMSwgMTAwLCAyNCwgMSwgOTMsIDIwMywgMjEsIDI0LCAxLCA5MywgMjIyLCAKKyAgICAxNTUsIDI0LCAxLCA5MywgMjE5LCAxNjksIDIxOCwgMjUyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyNDcsIDcxLCAyNCwgMSwgCisgICAgOTMsIDIzOSwgMTc5LCAyNCwgMSwgOTMsIDIyMiwgMzksIDI0LCAxLCA5MywgNjMsIDI0LCAxLCA5MywgMjA4LCAxNDEsIDI0LCAKKyAgICAxLCA5MywgNzgsIDI0LCAxLCA5MywgNzUsIDI0LCAxLCA5MywgMjI4LCA5LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIAorICAgIDc3LCAyNCwgMSwgOTMsIDIxMCwgMTgsIDI0LCAxLCA5MywgMjA5LCAyMTksIDI0LCAxLCA5MywgMjIzLCAyNCwgMjIzLCAKKyAgICAxNzIsIDIzNiwgMzgsIDI0LCAxLCA5MywgMjEyLCAyNTAsIDI0LCAxLCA5MywgMjAzLCAxNywgMjQsIDEsIDkzLCAyMjIsIAorICAgIDExNSwgMjQsIDEsIDkzLCAyMDIsIDIwMywgMjQsIDEsIDkzLCAyMDIsIDIzMCwgMjEwLCAxNTksIDI0LCAxLCA5MywgMjAyLCAKKyAgICAyMzAsIDI0NSwgMTUxLCAyNCwgMSwgOTMsIDIwMiwgMTg3LCAyNCwgMSwgOTMsIDIwMiwgMTk1LCAyNCwgMSwgOTMsIDIyOSwgCisgICAgMTU2LCAyNCwgMSwgOTMsIDIxOCwgMjEyLCAyNCwgMSwgOTMsIDIyMiwgNDAsIDI0MSwgMzksIDI0LCAxLCA5MywgMjE3LCAKKyAgICAxODMsIDI0LCAxLCA5MywgMjAzLCAyMTQsIDI0LCAxLCA5MywgMjQwLCA1MywgMjQsIDEsIDkzLCAyMDYsIDUwLCAyNCwgMSwgCisgICAgOTMsIDIyNiwgMjM5LCAyNCwgMSwgOTMsIDIyNCwgMTU1LCAyNCwgMSwgOTMsIDIxNiwgNzUsIDI0LCAxLCA5MywgMjE2LCAKKyAgICAyMDIsIDI0LCAxLCA5MywgMjIyLCAxMTQsIDI0LCAxLCA5MywgMjIyLCAyMDMsIDI0LCAxLCA5MywgMjEyLCAyNDIsIDI0LCAKKyAgICAxLCA5MywgMjEyLCAyMjksIDI0LCAxLCA5MywgMjM5LCAxMDksIDIxNiwgMTExLCAyNCwgMSwgOTMsIDIwMSwgMjAxLCAyNCwgCisgICAgMSwgOTMsIDIxOCwgMTY3LCAyNCwgMSwgOTMsIDIyNywgMTAsIDI0LCAxLCA5MywgMjI5LCAyNiwgMjQsIDEsIDkzLCAyMjQsIAorICAgIDI0MCwgMjQsIDEsIDkzLCAxOTIsIDI0LCAxLCA5MywgMjI1LCAxMDMsIDI0LCAxLCA5MywgMjA5LCAxMjIsIDI0LCAxLCA5MywgCisgICAgMjI5LCAxMDAsIDI0LCAxLCA5MywgMjI0LCA1NCwgMjQsIDEsIDkzLCAyMDksIDE1MiwgMjQsIDEsIDkzLCAyNDAsIDc3LCAKKyAgICAyNCwgMSwgOTMsIDIzOCwgOTAsIDI0LCAxLCAyMTgsIDE5NiwgMTczLCAyNCwgMSwgMjE4LCAxOTYsIDY4LCAyNCwgMSwgCisgICAgMjE4LCAxOTYsIDIyOCwgMjA5LCAyNCwgMSwgMjE4LCAxOTYsIDI0MSwgMTYxLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMTM1LCAKKyAgICAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjAsIDI0OCwgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIAorICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA1MCwgMjQsIDEsIDIxOCwgMTk2LCAKKyAgICAyMjUsIDcsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxOCwgMjQsIDEsIDIxOCwgMTk2LCAyMjMsIDIzLCAyNCwgMSwgMjE4LCAKKyAgICAxOTYsIDIyMiwgNDYsIDI0LCAxLCAyMTgsIDE5NiwgMjI2LCAxODUsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxNzksIDI0LCAKKyAgICAxLCAyMTgsIDE5NiwgMjEzLCA2LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTYyLCAyNCwgMSwgMjE4LCAxOTYsIDIxMywgCisgICAgMTEzLCAyNCwgMSwgMjE4LCAxOTYsIDIyOCwgMTM3LCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMTcwLCAyNCwgMSwgMjE4LCAKKyAgICAxOTYsIDIyMSwgNTUsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCA4NCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE3LCAyNCwgMSwgCisgICAgMjE4LCAxOTYsIDIwMiwgMjI5LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTk5LCAyNCwgMSwgMjE4LCAxOTYsIDE5OCwgMjQsIAorICAgIDEsIDIxOCwgMTk2LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk2LCAyMTgsIDIxMiwgMjQsIDEsIDIxOCwgMTk2LCAyMjEsIAorICAgIDk5LCAyNCwgMSwgMjE4LCAxOTYsIDIwMywgMjE0LCAyNCwgMSwgMjE4LCAxOTYsIDIxOSwgMjMsIDI0LCAxLCAyMTgsIDE5NiwgCisgICAgMjE1LCAxNDUsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMDAsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA3NSwgMjQsIDEsIAorICAgIDIxOCwgMTk2LCAyMjksIDE4MCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDEzMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE4MiwgCisgICAgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDI0MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTcsIDE4OCwgMjQsIDEsIDIxOCwgMTk2LCAKKyAgICAyMzksIDE3OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDExMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjcsIDE0OCwgMjQsIDEsIAorICAgIDIxOCwgMTk2LCAyMjcsIDEwLCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMjYsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA0NCwgCisgICAgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEwNywgMjQsIDEsIDIxOCwgMTk2LCAxOTIsIDI0LCAxLCAyMTgsIDE5NiwgMjI0LCAKKyAgICA4MiwgMjQsIDEsIDIxOCwgMTk2LCAyMjUsIDUyLCAyNCwgMSwgMjE4LCAxOTYsIDIwOSwgMTMyLCAyNCwgMSwgMjE4LCAxOTYsIAorICAgIDIyOCwgMjQ0LCAyNCwgMSwgMjE4LCAxOTYsIDIxNCwgMjUxLCAyNCwgMSwgMjE4LCAxOTYsIDIwNCwgMTYyLCAyMjMsIDI0OSwgCisgICAgMSwgMjEwLCAyMiwgMjIzLCAyNDksIDEsIDIyMiwgMTUxLCAyMjMsIDI0OSwgMSwgMjAyLCAyNDcsIDIyMywgMjQ5LCAxLCAKKyAgICAyMjQsIDExMiwgMjIzLCAyNDksIDEsIDI0OSwgMzIsIDIyMywgMjQ5LCAxLCAyNDQsIDIxMiwgMjIzLCAyNDksIDEsIDYzLCAKKyAgICAyMjMsIDI0OSwgMSwgMjE4LCAxOTIsIDIyMywgMjQ5LCAxLCAyMjksIDEzOSwgMjIzLCAyNDksIDEsIDIzNywgOTUsIDIyMywgCisgICAgMjQ5LCAxLCAyNDQsIDE4OCwgMjIzLCAyNDksIDEsIDI0NiwgOTgsIDIyMywgMjQ5LCAxLCAyMjksIDIwMCwgMjIzLCAyNDksIAorICAgIDEsIDIyMCwgNDYsIDIyMywgMjQ5LCAxLCAyMjUsIDE1OCwgMjIzLCAyNDksIDEsIDIyMiwgNjgsIDIyMywgMjQ5LCAxLCAKKyAgICAxODUsIDIyMywgMjQ5LCAxLCAyMjAsIDE4LCAyMjMsIDI0OSwgMSwgNzgsIDIyMywgMjQ5LCAxLCAyMTUsIDIyNywgMjIzLCAKKyAgICAyNDksIDEsIDIxMywgMTEsIDIyMywgMjQ5LCAxLCAyMDksIDkxLCAyMjMsIDI0OSwgMSwgMjQxLCAxODksIDIyMywgMjQ5LCAKKyAgICAxLCAyMDQsIDExMSwgMjIzLCAyNDksIDEsIDc0LCAyMjMsIDI0OSwgMSwgMjI5LCAyNiwgMjIzLCAyNDksIDEsIDIyOCwgMTcsIAorICAgIDIyMywgMjQ5LCAxLCAyMjgsIDExMywgMjIzLCAyNDksIDEsIDIzNywgMTQ3LCAyMjMsIDI0OSwgMSwgMjE2LCA1NywgMjIzLCAKKyAgICAyNDksIDEsIDIwOSwgMTY1LCAyMjMsIDI0OSwgMTcsIDIwMiwgODQsIDIyMywgMjQ5LCAxNywgMTA1LCAyMjMsIDI0OSwgMTcsIAorICAgIDEwOCwgMjIzLCAyNDksIDE3LCAxNDcsIDIyMywgMjQ5LCAxNywgMTQ5LCAyMjMsIDI0OSwgMTcsIDE3MCwgMjIzLCAyNDksIAorICAgIDE3LCAxOTUsIDIyMywgMjQ5LCAxNywgMjEzLCAxMTEsIDIyMywgMjQ5LCAxNywgMTk5LCAyMjMsIDI0OSwgMTcsIDIyMiwgCisgICAgNjMsIDIyMywgMjQ5LCAyNDQsIDE2NiwgMjIzLCAyNDksIDUyLCAyNDQsIDE2NiwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAorICAgIDI0MSwgNzQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxNzMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMTQsIDE3NywgMjQ4LCAKKyAgICAyMTIsIDIwNiwgODMsIDEsIDI0MCwgMTA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI1LCA0NywgMjQ4LCAyMTIsIDIwNiwgCisgICAgODMsIDEsIDIwMywgOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzOCwgMjQ5LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQzLCAKKyAgICAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjgsIDI0MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzMCwgMTAxLCAyNDgsIAorICAgIDIxMiwgMjA2LCA4MywgMSwgMjM1LCAyNTMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDExMSwgMjQ4LCAyMTIsIDIwNiwgCisgICAgODMsIDEsIDIwMiwgMTcsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDE5NCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAorICAgIDI0MywgMTEzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQ2LCAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDYsIDE3MSwgCisgICAgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDEzNSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0OSwgMzIsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAxLCAyMDQsIDE2MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwMywgNDYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKKyAgICAxODUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDYzLCAyNDgsIDIxMiwgCisgICAgMjA2LCA4MywgMSwgNzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjAsIDE4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNjgsIAorICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDEsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDc0LCAyNDgsIDIxMiwgMjA2LCAKKyAgICA4MywgMSwgNzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMTM4LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAKKyAgICAxMjQsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIyNCwgMTUwLCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgCisgICAgODMsIDM5LCAyMjYsIDI1MywgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMjM2LCAyNDIsIDIwOCwgMTYxLCAKKyAgICAyNDgsIDIxMiwgMjA2LCA4MywgMjM5LCAxMDIsIDIxMSwgNjEsIDExOSwgMTE3LCAyMiwgMjI5LCAxOTcsIDExOSwgMTE3LCAKKyAgICAyMiwgMjI5LCAxOTMsIDExOSwgMTE3LCAyMiwgMjI5LCA5NywgMTE5LCAxMTcsIDIyLCAyMjksIDYzLCAxMTksIDExNywgMjIsIAorICAgIDIyOSwgMjE4LCAxMTksIDExNywgMjIsIDIyOSwgMjE1LCAxMTksIDExNywgMjIsIDIyOCwgMjAwLCAxMTksIDExNywgMjIsIAorICAgIDIyOCwgMTcyLCAxMTksIDExNywgMjIsIDIyOSwgMTk5LCAxMTksIDExNywgMjIsIDIyOSwgMTU0LCAxMTksIDExNywgMjIsIAorICAgIDIzMCwgMTcsIDExOSwgMTE3LCAyMiwgMjMwLCAxNCwgMTE5LCAxMTcsIDIyLCAyMjksIDUsIDExOSwgMTE3LCAyMiwgMjI5LCAKKyAgICAyLCAxMTksIDExNywgMjIsIDIyOSwgMjEyLCAxMTksIDExNywgMjIsIDIyOSwgMjEwLCAxMTksIDExNywgMjIsIDIyOCwgCisgICAgMjAyLCAxMTksIDExNywgMjIsIDIyOCwgMjAxLCAxMTksIDExNywgMjIsIDIyOSwgMjMsIDExOSwgMTE3LCAyMiwgMjI4LCAKKyAgICAyNDcsIDExOSwgMTE3LCAyMiwgMjI5LCA5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDk4LCAxMTksIDExNywgMjIsIDIzMCwgMzIsIAorICAgIDExOSwgMTE3LCAyMiwgMjI5LCAyMTQsIDExOSwgMTE3LCAyMiwgMjI4LCAxNjMsIDExOSwgMTE3LCAyMiwgMjI4LCAxNTQsIAorICAgIDExOSwgMTE3LCAyMiwgMjMwLCA0MCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMzLCAxMTksIDExNywgMTA5LCAyMDYsIDYxLCAKKyAgICAxMTksIDExNywgMTA5LCAyMjEsIDkwLCAxMTksIDExNywgMTA5LCAyMjcsIDI1MSwgMTE5LCAxMTcsIDEwOSwgMjM3LCA3NiwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjIxLCAyMzAsIDExOSwgMTE3LCAxMDksIDIxNiwgMTY3LCAxMTksIDExNywgMTA5LCAyMjIsIDEsIAorICAgIDExOSwgMTE3LCAxMDksIDIxNywgMTAwLCAxMTksIDExNywgMTA5LCAyMDMsIDYyLCAxMTksIDExNywgMTA5LCAyMzYsIDIyMSwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjI1LCA2NywgMTE5LCAxMTcsIDEwOSwgMjQ2LCAxNzQsIDExOSwgMTE3LCAxMDksIDIyMywgMjgsIAorICAgIDExOSwgMTE3LCAxMDksIDIzNiwgMTU3LCAxMTksIDExNywgMTA5LCAyMTgsIDg1LCAxMTksIDExNywgMTA5LCAyMjEsIDk1LCAKKyAgICAxMTksIDExNywgMTA5LCAyMjMsIDY1LCAxMTksIDExNywgMTA5LCAyNTAsIDM0LCAxMTksIDExNywgMTA5LCAyMDMsIDE3OCwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjQ3LCAxNSwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA3LCAxOTksIDExOSwgMTE3LCAxMzEsIAorICAgIDI0NiwgNjcsIDIxMiwgMTMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIyOSwgMTcyLCAxMTksIDExNywgMTMxLCAyNDYsIAorICAgIDY3LCAyMjksIDEzMCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjExLCA0LCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAKKyAgICAyMzYsIDEyMywgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA5LCAyMDYsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCAKKyAgICA0NCwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDgsIDksIDI0NiwgMjI5LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ2LCAKKyAgICAxNjMsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCA2OSwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyNDAsIDUwLCAxMTksIAorICAgIDExNywgMiwgMjAzLCAxMzYsIDIyMSwgODUsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjE2LCA1OSwgMTE5LCAxMTcsIDIsIAorICAgIDIwMywgMTM2LCAyMDgsIDEyNCwgMTE5LCAxMTcsIDIsIDIwMywgMTM2LCAyNDAsIDg5LCAxMTksIDExNywgMiwgMjA1LCAKKyAgICAxNzMsIDIxNCwgMTU5LCAxMTksIDExNywgMiwgMjI1LCA2LCAyMTEsIDgsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjIxLCAKKyAgICAxMzQsIDExOSwgMTE3LCAyLCAyMzUsIDE2NywgMjAzLCA4MSwgMTE5LCAxMTcsIDIsIDIwMywgMTc3LCAxMTksIDExNywgMiwgCisgICAgMjQ2LCA2NywgMjA3LCAyNTIsIDIxNSwgMjE2LCAxMTksIDExNywgMTcsIDIwMiwgODQsIDExOSwgMTE3LCAxNywgMTA1LCAKKyAgICAxMTksIDExNywgMTcsIDEwOCwgMTE5LCAxMTcsIDE3LCAxNDcsIDExOSwgMTE3LCAxNywgMTQ5LCAxMTksIDExNywgMTcsIAorICAgIDE3MCwgMTE5LCAxMTcsIDE3LCAxOTUsIDExOSwgMTE3LCAxNywgMjEzLCAxMTEsIDExOSwgMTE3LCAxNywgMTk5LCAxMTksIAorICAgIDExNywgMTcsIDIyMiwgNjMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNDcsIDExOSwgMTE3LCA0MiwgMjM2LCAxMCwgMTE5LCAKKyAgICAxMTcsIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgMTE5LCAxMTcsIDQyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMzYsIAorICAgIDEyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMDksIDE1MywgMjQ4LCA2OCwgMTE5LCAxMTcsIDQyLCAyMDgsIDcyLCAKKyAgICAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyNiwgMjM0LCAxMTksIDExNywgMiwgMjAzLCAxMzMsIDExOSwgMTE3LCAyLCAyMzYsIAorICAgIDIxNiwgMTE5LCAxMTcsIDIsIDIwOSwgNTksIDIzNiwgMjE2LCAxMTksIDExNywgMiwgMjAxLCAyNDcsIDIwOSwgMTAyLCAKKyAgICAxMTksIDExNywgMiwgMjM2LCAxNDEsIDExOSwgMTE3LCAyLCAyMjEsIDE0OCwgMTE5LCAxMTcsIDIsIDIwMywgMTY5LCAxMTksIAorICAgIDExNywgMiwgMjIxLCA4OCwgMTE5LCAxMTcsIDIsIDI1MCwgMTgsIDExOSwgMTE3LCAyLCAyMDcsIDEyOSwgMjQ2LCAyMjgsIAorICAgIDExOSwgMTE3LCAyLCAyMjUsIDYsIDIwOCwgMTIsIDExOSwgMTE3LCAyLCAyMDksIDIwNywgMTE5LCAxMTcsIDIsIDIyNywgNywgCisgICAgMTE5LCAxMTcsIDIsIDIyMywgMjAxLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjM3LCAxNDMsIDIyNiwgMjEyLCAyMjEsIDkzLCAKKyAgICAyMjEsIDkyLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ1LCAxMDksIDIwOCwgMywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIAorICAgIDIwNywgMTI3LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjA3LCAxMjgsIDI0NiwgODYsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKKyAgICAyMTcsIDE4NiwgMjQ0LCAxMzUsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMjEsIDE0MSwgMjA4LCAxMzIsIDExOSwgMTE3LCAKKyAgICAyNDYsIDM5LCAyLCAyMDgsIDcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDQ4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCisgICAgMjI3LCA5MywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyNywgMjUwLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCAxMzIsIAorICAgIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjksIDYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDczLCAxMTksIDExNywgCisgICAgMjQ2LCAzOSwgMiwgMjIzLCAyNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDksIDQ1LCAxMTksIDExNywgMjQ2LCAzOSwgCisgICAgMiwgMjA4LCAxNywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIxOCwgMjA1LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCAKKyAgICAxNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDEzMywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwNiwgODAsIDExOSwgCisgICAgMTE3LCAyNDYsIDM5LCAyLCAyNDAsIDg2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA4OCwgMTE5LCAxMTcsIDI0NiwgCisgICAgMzksIDIsIDIwNywgMjQ2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI4LCAxNTgsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAKKyAgICAyMDQsIDE1MywgMTExLCAxLCAxODUsIDExMSwgMSwgMjQ5LCAzMiwgMTExLCAxLCAxMSwgMTg1LCAxMTEsIDEsIDIxOCwgOTgsIAorICAgIDExMSwgMSwgMTkyLCAxMTEsIDEsIDIyNCwgMTU4LCAxMTEsIDEsIDI1MCwgMTI2LCAxOTIsIDExMSwgMSwgMjQwLCAxMDgsIAorICAgIDExMSwgMSwgMjA2LCA4NiwgMTExLCAxLCAyMDUsIDIzMSwgMTExLCAxLCAyMTAsIDIyLCAxMTEsIDEsIDI0NCwgMjEyLCAKKyAgICAxMTEsIDEsIDExLCAyMDcsIDI0MSwgMTExLCAxLCAxMSwgMjEwLCAyMiwgMTExLCAxLCAyMDcsIDI0MSwgMTExLCAxLCAyNDQsIAorICAgIDEyMCwgMTExLCAxLCAyMDEsIDIwMSwgMTExLCAxLCAyMjIsIDEwNCwgMTExLCAxLCAxMSwgMjIxLCAyMjcsIDExMSwgMSwgCisgICAgMjUwLCAxMjYsIDIwMSwgMjAxLCAxMTEsIDEsIDIyMSwgMjI3LCAxMTEsIDEsIDIyMSwgMjEzLCAxMTEsIDEsIDIyOCwgMTEzLCAKKyAgICAxMTEsIDEsIDIyNiwgMTk4LCAxMTEsIDEsIDIyNywgMTYxLCAxMTEsIDEsIDIyNywgMTUwLCAxMTEsIDEsIDIwOCwgMTg3LCAKKyAgICAxMTEsIDEsIDI0MywgMTIxLCAxMTEsIDEsIDIwOCwgMTc5LCAxMTEsIDEsIDI0MywgMTIwLCAxMTEsIDEsIDE3MywgMTExLCAKKyAgICAxLCAyMzksIDgsIDExMSwgMSwgMTEsIDE3MywgMTExLCAxLCAyMTcsIDEyNiwgMTExLCAxLCAyMTcsIDEwMywgMTExLCAxLCAKKyAgICAyMjIsIDIwMywgMTExLCAxLCAyMjIsIDE1MiwgMTExLCAxLCAyNTAsIDEyNiwgMjIyLCAyMDMsIDExMSwgMSwgMTUyLCAxMTEsIAorICAgIDEsIDIwMywgMTgyLCAxMTEsIDEsIDIzOCwgMTE5LCAxMTEsIDEsIDIzOCwgOTQsIDExMSwgMSwgMjA3LCAyNTEsIDExMSwgMSwgCisgICAgMjQxLCAyMzksIDExMSwgMSwgMjIxLCAxMSwgMTExLCAxLCAyMjAsIDI1MCwgMTExLCAxLCAyMDgsIDEwLCAxMTEsIDEsIAorICAgIDI0MSwgMjQ5LCAxMTEsIDEsIDExLCAyMDgsIDEwLCAxMTEsIDEsIDExLCAyNDEsIDI0OSwgMTExLCAxLCAyMTYsIDEzMywgCisgICAgMjA4LCAxMCwgMTExLCAxLCAyMTMsIDkwLCAxMTEsIDEsIDIxMSwgMTY0LCAxMTEsIDEsIDIwMiwgODAsIDExMSwgMSwgMjAyLCAKKyAgICA4LCAxMTEsIDEsIDIwOCwgMjAsIDExMSwgMSwgMjQxLCAyNTUsIDExMSwgMSwgMTEsIDIwOCwgMjAsIDExMSwgMSwgMjE1LCAKKyAgICAzNiwgMTExLCAxLCAyMDIsIDExNiwgMTExLCAxLCAyMDIsIDksIDExMSwgMSwgMjAxLCAyMzUsIDExMSwgMSwgMjAxLCAyMTUsIAorICAgIDExMSwgMSwgMjUwLCAxMjYsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjA3LCAxMTEsIDEsIDIwMSwgMjE0LCAxMTEsIDEsIAorICAgIDIwNCwgMTExLCAxMTEsIDEsIDI1MSwgNzMsIDExMSwgMSwgMjM3LCAxMiwgMTExLCAxLCAyMjMsIDcwLCAxMTEsIDIsIDI1MCwgCisgICAgNjUsIDExMSwgMiwgMjE2LCAxMzMsIDIwNSwgMTg0LCAxMTEsIDIsIDIxNiwgMTMzLCAyNTAsIDY1LCAxMTEsIDIyLCAyLCAKKyAgICA2MywgMTExLCAyMiwgMiwgMjUyLCAyNSwgMTExLCAyMiwgMiwgMjUxLCA2OSwgMTExLCAyMiwgMiwgMjUwLCAyMzEsIDExMSwgCisgICAgMjIsIDIsIDI1MCwgMjIzLCAxMTEsIDIyLCAyLCA3OCwgMTExLCAyMiwgMiwgMjIwLCAxOCwgMTExLCAyMiwgMiwgMjA0LCAwLCAKKyAgICAxMTEsIDIyLCAyLCAyMDQsIDE0NCwgMTExLCAyMiwgMiwgNzQsIDExMSwgMjIsIDIsIDI0MSwgOTIsIDExMSwgMjIsIDIsIAorICAgIDI0MSwgNzgsIDExMSwgMjIsIDIsIDIyMCwgNzAsIDExMSwgMjIsIDIsIDc1LCAxMTEsIDIyLCAyLCAyMzUsIDE3MSwgMTExLCAKKyAgICAyMiwgMiwgMjM1LCAxNzAsIDExMSwgMjIsIDIsIDIzNSwgMTY5LCAxMTEsIDIyLCAyLCAyMzAsIDIzNCwgMTExLCAyMiwgMiwgCisgICAgMjMxLCAxMTAsIDExMSwgMjIsIDIsIDIzMSwgODMsIDExMSwgMjIsIDIsIDIzMCwgMTk3LCAxMTEsIDIyLCAyLCAyMzEsIDI0LCAKKyAgICAxMTEsIDIyLCAyLCA2OCwgMTExLCAyMiwgMiwgMjA3LCAzOSwgMTExLCAyMiwgMiwgMjA3LCAzOCwgMTExLCAyMiwgMiwgCisgICAgMjA3LCAzNywgMTExLCAyMiwgMiwgMjA2LCAxNzgsIDExMSwgMjIsIDIsIDIwNywgMjEsIDExMSwgMjIsIDIsIDIwNiwgMjQxLCAKKyAgICAxMTEsIDIyLCAyLCAyMDMsIDEyNCwgMTExLCAyMiwgMiwgMjAzLCAxMSwgMTExLCAyMiwgMiwgMjUxLCAxMDksIDExMSwgMjIsIAorICAgIDIsIDI1MSwgMTA1LCAxMTEsIDIyLCAyLCAyNDEsIDIxLCAxMTEsIDIyLCAyLCAyMTUsIDE4OSwgMjQxLCAyMSwgMTExLCAyMiwgCisgICAgMiwgMjQxLCAyOCwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjgsIDExMSwgMjIsIDIsIDI1MSwgNjQsIDExMSwgMjIsIAorICAgIDIsIDI0MSwgMTQ1LCAxMTEsIDIyLCAyLCAyNTAsIDM0LCAxMTEsIDIyLCAyLCAyMTksIDIxNiwgMTExLCAyMiwgMiwgMjIzLCAKKyAgICAxNjMsIDExMSwgMjIsIDIsIDIyMiwgMjA1LCAxMTEsIDE0MywgMjE2LCAxNiwgMTExLCAxNDMsIDIwOCwgMTQ1LCAyMTYsIAorICAgIDE2LCAxMTEsIDE0MywgNTUsIDExMSwgMTQzLCA1NiwgMTExLCAxLCAyMDgsIDE1OSwgMTExLCAxLCAyMDgsIDE1OCwgMTExLCAKKyAgICAxLCAyMDgsIDE1NywgMTExLCAxLCAyMDgsIDE1NiwgMTExLCAxLCAyMDgsIDE1NSwgMTExLCAxLCAyMDgsIDE1NCwgMTExLCAKKyAgICAxLCAyMDgsIDE1MywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNjAsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU5LCAxMTEsIAorICAgIDEsIDIxNiwgMTMzLCAyMDgsIDE1NywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTYsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgCisgICAgMTU1LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1MywgNjcsIDEsIDI1MCwgMTI2LCA3NCwgMTcyLCAxLCAyNTAsIDEyNiwgCisgICAgMjAzLCA1MiwgMTAwLCAxLCAyMzcsIDE3MSwgMTAwLCAxLCAyMDMsIDE5NiwgMTAwLCAxLCAyMTksIDE4NCwgMTAwLCAxLCAKKyAgICAyMTAsIDY5LCAxMDAsIDEsIDI0MCwgMTc0LCAxMDAsIDEsIDIzMCwgNTQsIDEwMCwgMSwgMTU5LCAxMDAsIDEsIDI0OSwgCisgICAgMjU1LCAxMDAsIDEsIDI0NSwgNTEsIDEwMCwgMSwgMjA2LCAxNjQsIDEwMCwgMSwgMjM5LCA3NSwgMTAwLCAxLCAxNDYsIAorICAgIDEwMCwgMSwgMjE5LCAxODUsIDIyMywgMTYzLCAxMDAsIDEsIDI0NSwgNTIsIDE5NCwgMTAwLCAxLCAyNDAsIDE3NSwgMjIzLCAKKyAgICAxNjMsIDEwMCwgMSwgMjMwLCA1NSwgMjI2LCAxODUsIDEwMCwgMSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjA5LCAxMTAsIAorICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQ0LCAyLCAxMDAsIDEsIDI0NCwgMiwgMTAwLCAxLCAyMjksIDQ4LCAxMDAsIDEsIDIxMiwgCisgICAgNDUsIDIzMCwgMTg0LCAxMDAsIDEsIDIzNiwgMjI1LCAxMDAsIDEsIDIyNywgMTYyLCAxMDAsIDEsIDIxNiwgNjIsIDEwMCwgCisgICAgMSwgMjI2LCAxODUsIDEwMCwgMSwgMjIzLCAxNjMsIDEwMCwgMSwgMjMwLCAxODQsIDEwMCwgMSwgMTk0LCAxMDAsIDEsIAorICAgIDIyNiwgMTg2LCAyMjMsIDE2MywgMTAwLCAxLCAyMjMsIDE2NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgCisgICAgMTg1LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgMTg0LCAxMDAsIDEsIDIyNiwgMTg2LCAzLCAyNDMsIDg1LCAxMDAsIDEsIAorICAgIDIyMywgMTY0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAKKyAgICAxODcsIDIzMSwgNywgMjUsIDU1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjE1LCA5NCwgMywgNzAsIAorICAgIDU2LCAxMDAsIDEsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMTk0LCAKKyAgICAxMDAsIDEsIDIxNSwgOTQsIDE5NCwgMTAwLCAxLCAyMjYsIDE4NiwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMjMsIDE2NCwgCisgICAgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIAorICAgIDE4NSwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjMsIAorICAgIDE2MywgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTAsIDY5LCAxMDAsIDEsIAorICAgIDIxNSwgOTQsIDIxMCwgNzAsIDE0NiwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIDE4NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIAorICAgIDE4NSwgMTQ2LCAxMDAsIDEsIDIxMCwgNzAsIDE5NCwgMTAwLCAxLCAyMTAsIDcwLCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAKKyAgICAyMDQsIDE0NCwgMTAwLCAxLCAyMDQsIDQwLCAxMDAsIDEsIDIwNCwgMTQ1LCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjIzLCAKKyAgICAxNjMsIDEwMCwgMSwgMjE1LCA5NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCA1NSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCisgICAgMjM5LCA3NiwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDU1LCAKKyAgICAxNDYsIDEwMCwgMSwgNjMsIDEwMCwgMSwgMjEyLCA0NSwgMjE5LCAxOTUsIDEwMCwgMSwgMjIwLCA5NywgMTAwLCAxLCA3OCwgCisgICAgMTAwLCAxLCAyNTAsIDE3NiwgMTAwLCAxLCA3NSwgMTAwLCAxLCA3NCwgMTAwLCAxLCAyMzEsIDExMCwgMTAwLCAxLCAyMTIsIAorICAgIDIyOCwgNzUsIDEwMCwgMSwgMjA3LCAxNywgMTAwLCAxLCAyNDEsIDE2MSwgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDE0NywgCisgICAgMTAwLCAxLCAyMTUsIDIwOSwgNzUsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNjEsIDEwMCwgMSwgMTYzLCA3NSwgMTAwLCAxLCAKKyAgICAyMDMsIDUyLCAxMDAsIDEsIDY4LCAxMDAsIDEsIDI0MCwgMjM4LCAxMDAsIDEsIDIwMywgMTQ3LCAxMDAsIDEsIDEwNiwgCisgICAgMjIzLCAxNjMsIDEwMCwgMSwgMTYzLCA2OCwgMTAwLCAxLCAyMTUsIDIwOSwgNjgsIDEwMCwgMSwgMjA3LCAxOCwgMTAwLCAxLCAKKyAgICAyMTIsIDQ1LCA2OCwgMTAwLCAxLCAyMjAsIDE1LCAxMDAsIDEsIDIxOSwgMTk1LCAxMDAsIDEsIDIxOSwgMjE2LCAxMDAsIDEsIAorICAgIDIwNCwgMTExLCAxMDAsIDEsIDIwNCwgMCwgMTAwLCAxLCAyMDQsIDMwLCAxMDAsIDEsIDIwNCwgNTMsIDEwMCwgMSwgMjAzLCAKKyAgICAyMzAsIDEwMCwgMSwgMjIzLCA3MiwgNjgsIDEwMCwgMSwgMjIzLCA3MiwgNzgsIDEwMCwgMSwgMjIzLCA3MiwgNzUsIDEwMCwgCisgICAgMSwgMjIzLCA3MiwgNjMsIDEwMCwgMSwgMjE4LCAyMzUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDI0NywgCisgICAgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDkyLCAxMDAsIDEsIDIxMiwgNDUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxMiwgNDUsIAorICAgIDIyMCwgMzEsIDEwMCwgMSwgMTI1LCAyMjYsIDE4NSwgMTAwLCAyNTEsIDg4LCA0OSwgMjM2LCAxMDYsIDIxNCwgMTcyLCAKKyAgICAxMDAsIDI1MSwgODgsIDIyNCwgMTUwLCAyMzYsIDEwNiwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgNTAsIDIzNiwgMTA2LCAKKyAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMjQsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgODAsIAorICAgIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDEzOCwgODAsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIxNCwgCisgICAgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIyNywgMjEzLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAKKyAgICAyMDksIDIyNiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIDI0OCwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAxODgsIAorICAgIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMzUsIDIwNiwgMTEzLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIwOSwgCisgICAgMjI3LCAxMTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDgsIDI0NCwgMTY1LCAxMDAsIAorICAgIDI1MSwgODgsIDEzOCwgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjMsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIAorICAgIDEzOCwgMjQzLCA4NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDI0NiwgNjEsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMjcsIDExNCwgCisgICAgMTAwLCAyNTEsIDg4LCAxMzgsIDIwNCwgNzUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDYsIDM4LCAxMDAsIDI1MSwgODgsIAorICAgIDEyNCwgMTY1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIzNywgMjUzLCAKKyAgICAxMDAsIDI1MSwgODgsIDEyNCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAxMjQsIDI0MywgODUsIDEwMCwgMjUxLCAKKyAgICA4OCwgMTI0LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEyNCwgMjI3LCAxMTQsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDQsIAorICAgIDc1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAxMjQsIDQ3LCAxMDAsIDIsIDE1OCwgMywgCisgICAgMjQ1LCAxMzAsIDEwMCwgMjA5LCA2OCwgMSwgMjE0LCAxNTAsIDEwMCwgNTIsIDgyLCAxMDAsIDIxNywgMTc5LCAyNDYsIAorICAgIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMiwgMjE1LCAyMzksIDE1OCwgMSwgMjE5LCAyMDEsIDIxMiwgMjE1LCAyMzksIAorICAgIDE1OCwgMjQ1LCAxOTAsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEyMSwgMjExLCA3NSwgMjEyLCAyMTUsIDIzOSwgCisgICAgMTU4LCAxMTIsIDIxMSwgNzUsIDYwLCAzMSwgMTYsIDIxNywgMTk1LCA2MCwgMzEsIDE2LCAyNDQsIDE0NiwgNjAsIDMxLCAKKyAgICAxNiwgMjE4LCAyMzksIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDI0MywgCisgICAgMTcxLCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQzLCAxNzEsIDYwLCAKKyAgICAzMSwgMTYsIDIyOSwgMjIxLCA2MCwgMzEsIDE2LCAyMTAsIDg2LCA2MCwgMzEsIDE2LCAyMTksIDgzLCA2MCwgMzEsIDE2LCAKKyAgICAyMDIsIDIxOSwgNjAsIDMxLCAxNiwgMjAyLCAyMjAsIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyMjgsIDIyNiwgNjAsIDMxLCAKKyAgICAxNiwgMjUwLCAxNzEsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyNDAsIDIwNiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwOSwgCisgICAgMTYzLCA2MCwgMzEsIDE2LCAyMjksIDE3NiwgNjAsIDMxLCAxNiwgMjUwLCAxNjEsIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAKKyAgICAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjEwLCA5MywgNjAsIDMxLCAxNiwgMjA5LCA1MCwgNjAsIDMxLCAxNiwgMjIwLCA0MiwgCisgICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTcsIDE5NCwgNjAsIDMxLCAKKyAgICAxNiwgMjQ2LCAxOTAsIDYwLCAzMSwgMTYsIDIwNiwgNjIsIDYwLCAzMSwgMTYsIDIzMCwgMjA2LCAyNTAsIDEyNCwgNjAsIAorICAgIDMxLCAxNiwgMjI5LCAxNzgsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAorICAgIDIxNCwgMjEwLCA2MCwgMzEsIDE2LCAyMTksIDczLCA2MCwgMzEsIDE2LCAyMTEsIDg0LCAyNTAsIDE2NCwgNjAsIDMxLCAxNiwgCisgICAgMjE5LCAxOTEsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDYsIDcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIAorICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyNTAsIDE1OSwgNjAsIDMxLCAxNiwgMjI5LCAzOCwgNjAsIDMxLCAxNiwgMjE2LCA2OSwgCisgICAgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDgsIDIxNywgNjAsIDMxLCAxNiwgMjUwLCAKKyAgICAyMjksIDYwLCAzMSwgMTYsIDIxNCwgMTUzLCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCisgICAgMjEwLCA5NywgMjI0LCAyMjEsIDIxMSwgODIsIDYwLCAzMSwgMTYsIDIxOSwgMTg2LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCisgICAgMjA5LCA4NiwgNjAsIDMxLCAxNiwgMjI3LCAyMDAsIDYwLCAzMSwgMTYsIDI0MiwgMiwgNjAsIDMxLCAxNiwgMjA4LCA4NywgCisgICAgNjAsIDMxLCAxNiwgMjA5LCAxMzQsIDYwLCAzMSwgMTYsIDIyOCwgMjI5LCA2MCwgMzEsIDE2LCAyNTAsIDE3MSwgMjQwLCAKKyAgICAyMDYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzMSwgNjIsIDYwLCAKKyAgICAzMSwgMTYsIDIwOCwgNTcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDIyNCwgMjA4LCA1NiwgNjAsIDMxLCAxNiwgCisgICAgMjE5LCAxMSwgNjAsIDMxLCAxNiwgMjE3LCAxOTksIDYwLCAzMSwgMTYsIDIyOSwgNywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIAorICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTYsIDE3NywgNjAsIDMxLCAxNiwgMjE5LCA4NiwgMjUwLCAxMjQsIDYwLCAzMSwgCisgICAgMTYsIDIxOSwgODQsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzUsIDE2MCwgNjAsIDMxLCAxNiwgMjIzLCA4MiwgNjAsIDMxLCAKKyAgICAxNiwgMjE4LCAyMTcsIDYwLCAzMSwgMTYsIDIyOSwgOCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAyNTEsIDksIAorICAgIDYwLCAzMSwgMTYsIDIxMSwgNTUsIDYwLCAzMSwgMTYsIDIzNywgMjQwLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjIyLCAKKyAgICAyMjYsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjIyLCAyMjYsIDYwLCAKKyAgICAzMSwgMTYsIDIxOCwgMjE2LCA2MCwgMzEsIDE2LCAyMjgsIDI0OCwgNjAsIDMxLCAxNiwgMjE4LCAyMTUsIDYwLCAzMSwgMTYsIAorICAgIDIyOCwgMjI4LCA2MCwgMzEsIDE2LCAyMTksIDEyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAKKyAgICAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjAyLCAyMTcsIAorICAgIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjMsIDIxMCwgOTQsIDIyMiwgMjI2LCAKKyAgICA2MCwgMzEsIDE2LCAyMDIsIDIxOCwgNjAsIDMxLCAxNiwgMjI4LCAyMjcsIDYwLCAzMSwgMTYsIDI0MSwgMTIxLCA2MCwgMzEsIAorICAgIDE2LCAyNDYsIDE5MSwgNjAsIDMxLCAxNiwgMjI0LCAxMjIsIDIzMCwgMjA1LCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyMjIsIAorICAgIDIyNiwgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTcsIDIwMCwgMjIyLCAyMjYsIDYwLCAKKyAgICAzMSwgMTYsIDIyMCwgMzgsIDYwLCAzMSwgMTYsIDI1MCwgMTg5LCA2MCwgMzEsIDE2LCAyMjYsIDE5NSwgNjAsIDMxLCAxNiwgCisgICAgMjE5LCA4NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgCisgICAgMjE5LCA4NSwgNjAsIDMxLCAxNiwgMjI4LCAxMzUsIDYwLCAzMSwgMTYsIDI1MCwgMTkwLCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAKKyAgICAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQxLCAxMjQsIDYwLCAzMSwgMTYsIDIxMCwgOTcsIDIyMiwgMjI2LCA2MCwgMzEsIAorICAgIDE2LCAyMTAsIDg3LCA2MCwgMzEsIDE2LCAyNDYsIDExMCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgNDMsIDYwLCAzMSwgCisgICAgMTYsIDIxNCwgMTU0LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjAzLCAxNjMsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIwOCwgCisgICAgNTQsIDYwLCAzMSwgMTYsIDIxNywgMjAxLCA2MCwgMzEsIDE2LCAyMDgsIDU4LCA2MCwgMzEsIDE2LCAyMDgsIDU1LCA2MCwgCisgICAgMzEsIDE2LCAyMTcsIDE5OCwgNjAsIDMxLCAxNiwgMjA4LCA1MywgNjAsIDMxLCAxNiwgMjE3LCAxOTcsIDYwLCAzMSwgMTYsIAorICAgIDIzOCwgMjIsIDYwLCAzMSwgMTYsIDI1MCwgMTE2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgMjUwLCAxMTYsIDYwLCAzMSwgCisgICAgMTYsIDIxOSwgMTg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgMjQxLCAxLCA2MCwgMzEsIDE2LCAyMDksIDg1LCAKKyAgICAyNDAsIDIwNSwgNjAsIDMxLCAxNiwgMjA5LCA4NywgMjUwLCAxNjYsIDYwLCAzMSwgMTYsIDIwOSwgNzksIDIzMCwgMTksIAorICAgIDI1MCwgMTU4LCA2MCwgMzEsIDE2LCAyMjksIDIyMywgNjAsIDMxLCAxNiwgMjQxLCA4MCwgNjAsIDMxLCAxNiwgMjAzLCAxNCwgCisgICAgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMTEsIDgzLCA2MCwgMzEsIDE2LCAKKyAgICAyMjksIDM5LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjQzLCAxNzIsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgCisgICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyNTEsIDksIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyMjIsIDIyNiwgCisgICAgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNTAsIDE2NywgNjAsIDMxLCAxNiwgMjQzLCAKKyAgICAxNzEsIDYwLCAzMSwgMTYsIDIwOCwgNjgsIDYwLCAzMSwgMTYsIDIwOSwgMTI1LCA2MCwgMzEsIDE2LCAyMjgsIDI1MiwgNjAsIAorICAgIDMxLCAxNiwgMjI3LCAyMDUsIDI0MSwgNzMsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjQyLCAzLCAyNDYsIAorICAgIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOCwgNzEsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjA5LCAKKyAgICAxMzYsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjMxLCA1NywgMjQ2LCAxMDAsIDYwLCAzMSwgMTYsIDIzOCwgCisgICAgMjMsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjM4LCAyMywgMjE5LCA3NCwgMjUwLCAxMTIsIDYwLCAzMSwgCisgICAgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI0NCwgNiwgNjAsIDMxLCAxNiwgMjQzLCAxOTYsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAKKyAgICAyMTksIDc0LCAyNTAsIDExMywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNTAsIDExMywgCisgICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDIwOCwgNzYsIDYwLCAKKyAgICAzMSwgMTYsIDI1MCwgMTE3LCA2MCwgMzEsIDE2LCAyMzEsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxOSwgNjAsIDMxLCAxNiwgCisgICAgMjUxLCA3NSwgMjE4LCA1MiwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDI1MCwgMTE1LCA2MCwgMzEsIDE2LCAKKyAgICAyNTEsIDc1LCAyNTAsIDExOCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjI0LCAyMTUsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIAorICAgIDIyNCwgMjI2LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDIxLCA2MCwgCisgICAgMzEsIDE2LCAyNTEsIDc1LCAyMTgsIDUyLCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMTcsIDIwNywgMjM1LCAKKyAgICAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDIxNywgMjA3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCAKKyAgICA4NCwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjUxLCAxMSwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIAorICAgIDMxLCAxNiwgMjI1LCA4NCwgMjA4LCA2MywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNzcsIDYwLCAzMSwgCisgICAgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjA5LCAxMzAsIDIyNywgMjA5LCAKKyAgICAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjI3LCAyMDksIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKKyAgICAyMTgsIDk1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjMwLCAyMTMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgCisgICAgMjUwLCAxNjMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgMjQwLCA4MCwgMjA5LCAxMjcsIDYwLCAzMSwgMTYsIAorICAgIDI0MCwgODAsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgODAsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKKyAgICAyMDYsIDY2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDYsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAKKyAgICAyMjUsIDg0LCAyMTgsIDk1LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNTAsIAorICAgIDE2NiwgNjAsIDMxLCAxNiwgMjM4LCAxOSwgMjIzLCAxNjQsIDI0MywgMTcwLCA2MCwgMzEsIDE2LCAyNDEsIDkwLCAyMzAsIAorICAgIDE5LCAyMzksIDExMCwgMjA1LCAxNzEsIDYwLCAzMSwgMTYsIDIzMSwgNjMsIDYwLCAzMSwgMTYsIDIzMSwgNjEsIDYwLCAzMSwgCisgICAgMTYsIDIzOSwgMTEwLCAyNTAsIDEyNSwgMjQ0LCA0LCAyMzUsIDE1NywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAKKyAgICAxODUsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjIzLCA4MiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyMywgCisgICAgNzcsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIAorICAgIDExMCwgMjEyLCA2NCwgMjQzLCAyMTYsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyOSwgCisgICAgMjAxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIAorICAgIDIxNywgMjIyLCAxMDEsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMiwgMTAxLCAyNTAsIAorICAgIDIwMiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyNSwgMTI4LCAyNDYsIDEwMiwgMjQzLCAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgCisgICAgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgMjcsIDIxMiwgNjQsIDI0NiwgMTAyLCAKKyAgICAyMDYsIDY1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjEyLCA2NCwgMjQ2LCAxMDIsIDIxMCwgOTgsIDYwLCAzMSwgMTYsIAorICAgIDIzOSwgMTEwLCAyMjIsIDIyOSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIwMSwgMjQxLCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgCisgICAgMjI5LCAzNywgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIxMSwgMjE5LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjM1LCAyMDYsIAorICAgIDIwMywgMTMsIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQxLCA5MSwgMjUwLCAxOTEsIDYwLCAzMSwgMTYsIAorICAgIDIwMywgMTMsIDIwOCwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgCisgICAgMjA5LCAxMzEsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNTAsIDE2OCwgMjQyLCAzLCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgCisgICAgMjQzLCAyMTAsIDIyNCwgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDI0MywgMTkzLCAKKyAgICAyNDAsIDIxOCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDc0LCAyMjAsIDQ4LCAyNDMsIDEwNSwgNjAsIAorICAgIDMxLCAxNiwgMjAzLCAxMywgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIyNCwgCisgICAgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjQzLCAxOTMsIDI0MCwgMjE4LCAyNDMsIAorICAgIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIzOCwgCisgICAgMTc1LCAyNDMsIDIwOSwgNjAsIDMxLCAxNiwgMjM4LCAxNzUsIDIwMywgMTIsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIAorICAgIDE2OCwgMjI0LCAxMjMsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIDE2OCwgMjI0LCAyNTUsIDYwLCAzMSwgMTYsIDI0MywgCisgICAgMjE4LCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDIwOSwgNzcsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAorICAgIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAorICAgIDc4LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjA5LCAxMjMsIDYwLCAzMSwgMTYsIDIxMiwgCisgICAgMTMwLCAyNTAsIDg4LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgCisgICAgMTMwLCAyNTAsIDg5LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjA5LCAxMjMsIDYwLCAzMSwgCisgICAgMTYsIDI0MywgMTk0LCAyMzgsIDE1NiwgNjAsIDMxLCAxNiwgMjQzLCAyMDEsIDIxOSwgMjE2LCA2MCwgMzEsIDE2LCAyMTEsIAorICAgIDcxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMTg1LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjA1LCAxNzEsIDYwLCAzMSwgCisgICAgMTYsIDI1MCwgMTA5LCAyMzksIDgsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjUwLCAKKyAgICAxMDksIDIyOSwgMjAxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjAyLCAxNywgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIyMiwgCisgICAgMTAwLCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3OCwgMjIyLCAKKyAgICAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIAorICAgIDE3OCwgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIDM5LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM4LCAKKyAgICAyMywgMjIyLCAyMjcsIDIyOSwgMjIwLCAzMSwgMTYsIDIxMiwgMTIwLCAyNDgsIDIyNiwgMzEsIDE2LCA1MiwgMjQ4LCAyMjYsIAorICAgIDMxLCAxNiwgNDYsIDI0OCwgMjI2LCAzMSwgMTYsIDIxNiwgNzQsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyNDQsIDE0MywgCisgICAgMjQ4LCAyMjYsIDMxLCAxNiwgMjEyLCAyMjgsIDI0OCwgMjI2LCAzMSwgMTYsIDQ5LCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgCisgICAgNTAsIDIxNiwgMTAxLCA1NCwgMzEsIDE2LCAyMTYsIDEwMSwgMjQzLCA4MywgMzEsIDE2LCAyNDQsIDE4NSwgMjE0LCAxNTcsIAorICAgIDMxLCAxNiwgMjQ0LCAyMTMsIDI0NywgNDUsIDMxLCAxNiwgMjE0LCAxNTcsIDMxLCAxNiwgMjQ1LCAyNTAsIDMxLCAxNiwgCisgICAgMjE2LCA5OSwgMjQwLCAxNSwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDE0LCAzMSwgMTYsIDIxNiwgOTksIDI0MCwgMTMsIDMxLCAKKyAgICAxNiwgMjQwLCAzNiwgMzEsIDE2LCAyNDAsIDM3LCA1NiwgMzEsIDE2LCAyNDcsIDIxNiwgODIsIDMxLCAxNiwgMjQ3LCA4MiwgCisgICAgMzEsIDE2LCAyNDcsIDIyOCwgMzEsIDE2LCAxNTUsIDMxLCAxNiwgMjIwLCAyOCwgMjExLCAxMDIsIDMxLCAxNiwgMjA3LCAKKyAgICAxMzMsIDIxMSwgMTAyLCAzMSwgMTYsIDIwOSwgMjksIDIxMSwgMTAyLCAzMSwgMTYsIDIzOSwgMTQ2LCAyMTEsIDEwMiwgMzEsIAorICAgIDE2LCAyMzksIDIzMiwgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NywgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NSwgMjM5LCAKKyAgICAxMjcsIDMxLCAxNiwgMjM5LCAxNDQsIDIzOSwgMTI3LCAzMSwgMTYsIDIzOSwgNzYsIDI0NiwgMzAsIDMxLCAxNiwgMjM5LCAKKyAgICA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI1MSwgMCwgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKKyAgICAyMTEsIDMxLCAxNiwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAKKyAgICAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNDgsIAorICAgIDIxMSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI5LCAzMSwgMTYsIDI0MiwgNDcsIDI0NiwgMjgsIDMxLCAxNiwgMjIzLCAKKyAgICAyMjYsIDIyNSwgMTksIDIxNiwgODUsIDMxLCAxNiwgNTIsIDIxMywgNTYsIDMxLCAxNiwgNTIsIDIzOSwgMjE2LCAzMSwgMTYsIAorICAgIDIzOSwgMjE3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMzksIDIxNywgMjQyLCA3MCwgMzEsIDE2LCAyMjMsIDY2LCAyMDYsIDIyNCwgCisgICAgMzEsIDE2LCAyMjMsIDY2LCAyNDIsIDcwLCAzMSwgMTYsIDIxMywgNTcsIDIwNiwgMjI0LCAzMSwgMTYsIDIxMywgNTcsIAorICAgIDI0MiwgNzAsIDMxLCAxNiwgMjE3LCA1NiwgMTQzLCAyMTMsIDU2LCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjM5LCAyMTYsIAorICAgIDMxLCAxNiwgMjQ1LCAyMzAsIDIwOCwgMjIxLCAzMSwgMTYsIDI0NSwgNzgsIDIwOCwgMjIxLCAzMSwgMTYsIDIxOSwgMjE4LCAKKyAgICAyNTEsIDAsIDMxLCAxNiwgMjE5LCAyMTgsIDI0OCwgMjExLCAzMSwgMTYsIDIxNywgMzcsIDI1MSwgMCwgMzEsIDE2LCAyMTcsIAorICAgIDM3LCAyNDgsIDIxMSwgMzEsIDE2LCAyMjMsIDIyOSwgMjE2LCA4NSwgMzEsIDE2LCAyMDQsIDMxLCAyMTYsIDg1LCAzMSwgCisgICAgMTYsIDE2MiwgMjE2LCA4NSwgMzEsIDE2LCAyMTcsIDU2LCAyMTYsIDg1LCAzMSwgMTYsIDI0MSwgMTM5LCAyMTYsIDg1LCAKKyAgICAzMSwgMTYsIDIxMiwgODEsIDIxNiwgODUsIDMxLCAxNiwgMjA5LCA1MSwgMjE2LCA4NSwgMzEsIDE2LCAyMTIsIDczLCAyMTYsIAorICAgIDg1LCAzMSwgMTYsIDExOCwgMjM2LCAxMiwgMjA3LCAxNDksIDIxNiwgODUsIDMxLCAxNiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAKKyAgICAzMSwgMTYsIDkxLCAyMjEsIDE1NiwgMzEsIDE2LCAyNDYsIDYyLCAyMDMsIDE5NywgMjIxLCAxNTYsIDMxLCAxNiwgNTEsIAorICAgIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDUxLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIAorICAgIDE1NywgMTEyLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMTIsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCAKKyAgICA4NiwgMjIxLCAxNTcsIDQ5LCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA0OSwgMjQ4LCA0MywgMzEsIAorICAgIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyNDgsIAorICAgIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMjEsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIAorICAgIDEyMSwgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIAorICAgIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjQ4LCA0MywgMzEsIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjA0LCAzMywgMzEsIAorICAgIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAKKyAgICAzMSwgMTYsIDIwOCwgODMsIDIyMSwgMTU3LCAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjE5LCA3NywgMjIxLCAxNTYsIDMxLCAKKyAgICAxNiwgMjA1LCAxODMsIDIyMSwgMTU2LCAzMSwgMTYsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIyMSwgNDksIDIyMSwgCisgICAgMTU2LCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAxNiwgMjQ2LCAxLCAyMjEsIDE1NywgMjQ4LCAKKyAgICA0MywgMzEsIDE2LCAyNDcsIDIxNCwgMzEsIDE2LCAyMDQsIDMxLCAyMjEsIDE2MCwgMzEsIDE2LCAxNjIsIDIyMSwgMTYwLCAKKyAgICAzMSwgMTYsIDIxNywgNTYsIDIyMSwgMTYwLCAzMSwgMTYsIDI0MSwgMTM5LCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDgxLCAKKyAgICAyMjEsIDE2MCwgMzEsIDE2LCAyMDksIDUxLCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDczLCAyMjEsIDE2MCwgMzEsIDE2LCAKKyAgICAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMjEsIDE2MCwgMzEsIDE2LCAzOSwgMjExLCA3NywgMzEsIDE2LCAzOSwgMjExLCAKKyAgICAxODQsIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIwOCwgOTQsIDMxLCAxNiwgMzksIDIwOCwgOTMsIDMxLCAxNiwgMzksIDIwOCwgCisgICAgOTIsIDMxLCAxNiwgMjQwLCAwLCAyMDgsIDk0LCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5MywgMzEsIDE2LCAyNDAsIDAsIAorICAgIDIwOCwgOTIsIDMxLCAxNiwgMzksIDI1MCwgMzEsIDI0MywgODUsIDMxLCAxNiwgMzksIDIzOSwgMjI0LCAzMSwgMTYsIDM5LCAKKyAgICAyMzksIDIyMywgMzEsIDE2LCAzOSwgMjM5LCAyMjIsIDMxLCAxNiwgMzksIDIzOSwgMjIxLCAzMSwgMTYsIDM5LCAyMzksIAorICAgIDIyMCwgMzEsIDE2LCAyNDgsIDE0MiwgMjQ4LCAxNTksIDMxLCAxNiwgMjQxLCA4NCwgMjQ4LCAxNTksIDMxLCAxNiwgMjQ4LCAKKyAgICAxNDIsIDIwOCwgMjUwLCAzMSwgMTYsIDI0MSwgODQsIDIwOCwgMjUwLCAzMSwgMTYsIDI0OCwgMTQyLCAyMTIsIDM3LCAzMSwgCisgICAgMTYsIDI0MSwgODQsIDIxMiwgMzcsIDMxLCAxNiwgMjQ4LCAxNDIsIDIxOCwgMTc0LCAzMSwgMTYsIDI0MSwgODQsIDIxOCwgCisgICAgMTc0LCAzMSwgMTYsIDM5LCAyNTEsIDEzOCwgMzEsIDE2LCAzOSwgMjExLCAxMDUsIDMxLCAxNiwgMzksIDIwOSwgMTQwLCAKKyAgICAzMSwgMTYsIDM5LCAyMTEsIDEwNiwgMzEsIDE2LCAzOSwgMjI1LCA5NiwgMzEsIDE2LCAzOSwgMjI1LCA5NSwgMzEsIDE2LCAKKyAgICAzOSwgMjUxLCAxMzcsIDMxLCAxNiwgMzksIDIyNywgMiwgMzEsIDE2LCAyNTAsIDEwMCwgMjA2LCAyMjQsIDMxLCAxNiwgCisgICAgMjUwLCAxMDAsIDI0MiwgNzAsIDMxLCAxNiwgMzksIDI0MywgMTAwLCAzMSwgMTYsIDM5LCAyMTUsIDI0OSwgMzEsIDE2LCAKKyAgICAzOSwgMjM5LCAyMDYsIDMxLCAxNiwgMzksIDIxMiwgMzMsIDMxLCAxNiwgMzksIDI0OCwgMTIwLCAzMSwgMTYsIDM5LCA1MiwgCisgICAgMjA4LCAxNTAsIDMxLCAxNiwgMzksIDIwOCwgNzAsIDIwOCwgMTUwLCAzMSwgMTYsIDIxNSwgMjU0LCAzMSwgMTYsIDIxMSwgCisgICAgMCwgMzEsIDE2LCAyMDIsIDE1OSwgMzEsIDE2LCAyMTgsIDE2NiwgMzEsIDE2LCAyMjQsIDIwNiwgMzEsIDE2LCAyMzksIAorICAgIDE1NSwgMzEsIDE2LCAyNDUsIDE0MCwgMzEsIDE2LCAyNDQsIDYyLCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMTIsIAorICAgIDU3LCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMjEsIDE5MiwgMjEyLCA1NywgMzEsIDE2LCAyMDgsIDEyMCwgMzEsIAorICAgIDE2LCAyMDcsIDE3NSwgMzEsIDE2LCAyMzAsIDIzOSwgMjA3LCAxNzUsIDMxLCAxNiwgMjA3LCAxNzYsIDIxMiwgNTcsIDMxLCAKKyAgICAxNiwgMjA3LCAxNzYsIDIwNiwgMjI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDMxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAorICAgIDI4LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI3LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI2LCAzMSwgMTYsIDIxOSwgCisgICAgMjM0LCAyMTEsIDI1LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIzLCAzMSwgCisgICAgMTYsIDIxOSwgMjM0LCAyMTEsIDIyLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAorICAgIDMwLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI5LCAzMSwgMTYsIDIzNywgNzUsIDMxLCAxNiwgMjIyLCAyMzgsIDMxLCAxNiwgCisgICAgMjQxLCA4NCwgNzYsIDIxMSwgNjcsIDMxLCAxNiwgMjQ0LCA1NSwgMjEyLCA1NywgMzEsIDE2LCAzOSwgMTIxLCAyNDcsIAorICAgIDI0MCwgMzEsIDE2LCAzOSwgMTEyLCAyNDcsIDI0MCwgMzEsIDE2LCAzOSwgMjM3LCA4OCwgMzEsIDE2LCAzOSwgMjEyLCAyMywgCisgICAgMjE4LCA5OSwgMzEsIDE2LCAyMTksIDI4LCA4MiwgMzEsIDE2LCAyMTksIDI4LCAxMTIsIDgyLCAzMSwgMTYsIDE2MiwgMjE5LCAKKyAgICAyOCwgODIsIDMxLCAxNiwgMjM4LCA0NywgMjA2LCAyMjQsIDMxLCAxNiwgMjM4LCA0NywgMjQyLCA3MCwgMzEsIDE2LCAzLCAKKyAgICAyMzksIDI1NSwgMzEsIDE2LCAyNDQsIDE2OCwgMzEsIDE2LCAyNDQsIDE2OSwgMjUxLCAxNCwgMzEsIDE2LCAyMjUsIDY1LCAKKyAgICAzMSwgMTYsIDIyNywgMjAsIDMxLCAxNiwgMjQ3LCAyMTEsIDMxLCAxNiwgMjEzLCAxNDcsIDIwNCwgMzMsIDMxLCAxNiwgCisgICAgMjEzLCAxNDcsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAxMDYsIDMxLCAxNiwgMjI0LCAxMDcsIDI0OCwgNDMsIDMxLCAxNiwgCisgICAgMjEzLCAxNDEsIDIwNCwgMzMsIDMxLCAxNiwgMjEzLCAxNDEsIDI0OCwgNDMsIDMxLCAxNiwgMjM5LCA5MywgMjA0LCAzMywgCisgICAgMzEsIDE2LCAyMzksIDkzLCAyNDgsIDQzLCAzMSwgMTYsIDIyNywgMjEsIDIxOCwgMjQ0LCAyMTYsIDg1LCAzMSwgMTYsIAorICAgIDIyNywgMjEsIDIzMSwgNTQsIDIxNiwgODUsIDMxLCAxNiwgMjQ3LCAyMTIsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDcsIAorICAgIDIxNiwgODUsIDMxLCAxNiwgMjI0LCAxMDcsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDEsIDIxNiwgODUsIDMxLCAxNiwgCisgICAgMjA5LCAxNTQsIDIxOCwgMjQyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIAorICAgIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDUzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIAorICAgIDIxNywgMjE2LCAyMTgsIDI0NCwgMjQzLCAxODEsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIAorICAgIDIxNiwgMjE4LCAyNDMsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgCisgICAgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MSwgMzEsIDE2LCAKKyAgICAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MCwgMzEsIDE2LCAyMDksIAorICAgIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE3OSwgMzEsIDE2LCAyNDUsIDEzMywgCisgICAgMzEsIDE2LCAyMzcsIDI0MywgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjM3LCAyNDMsIDI0MCwgMTc1LCAyNDYsIDMwLCAKKyAgICAzMSwgMTYsIDUxLCAyNDksIDI1NSwgMzEsIDE2LCAyMDUsIDIwMywgMzEsIDE2LCAyMTgsIDY2LCAzMSwgMTYsIDI0NiwgMjEsIAorICAgIDMxLCAxNiwgMjE0LCAyMDAsIDMxLCAxNiwgMjQ2LCAyNSwgMzEsIDE2LCAyMDgsIDEzOCwgMzEsIDE2LCAyMTgsIDM2LCAzMSwgCisgICAgMTYsIDIxOCwgMzcsIDIzOSwgMjA5LCAzMSwgMTYsIDIxNCwgMjAxLCAyMzksIDIwOSwgMzEsIDE2LCAyMDgsIDEzOSwgMjE2LCAKKyAgICA4MiwgMzEsIDE2LCAyMTgsIDIyNSwgMjEwLCAyNDcsIDMxLCAxNiwgMjI5LCA5MCwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAKKyAgICAxNiwgMjI5LCA5MCwgMjQxLCA4NCwgNzYsIDIxOCwgMTU5LCAzMSwgMTYsIDIyOSwgOTAsIDQ2LCAyMjEsIDE2MCwgMzEsIAorICAgIDE2LCAyMjksIDkwLCAyMTYsIDE1MCwgODIsIDMxLCAxNiwgMjI5LCA5MCwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgCisgICAgMjI5LCA5MCwgMTYyLCAyMjEsIDE2MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCAKKyAgICA3MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCAKKyAgICA5MCwgMjQxLCAxMzksIDIyMSwgMTYxLCAyMTEsIDc4LCAyNDIsIDcwLCAzMSwgMTYsIDIyOSwgOTAsIDI0MSwgMTM5LCAyMjEsIAorICAgIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCA5MCwgMjM5LCAyMTcsIDU0LCAzMCwgMjA1LCAxODgsIDIyMSwgCisgICAgMTY0LCAyMTAsIDE0OCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAorICAgIDIxMCwgMTI3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEyMCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKKyAgICAxMTIsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNSwgCisgICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTAzLCAzMCwgCisgICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMDUsIAorICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NCwgMzAsIDIwNSwgMTg4LCAKKyAgICAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQyLCAzMCwgMjA1LCAxODgsIDIyMSwgCisgICAgMTY0LCAyMTAsIDE0MSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAorICAgIDIxMCwgMTM5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKKyAgICAxMzYsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNCwgCisgICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgCisgICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDExMSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTAsIDMwLCAyMDUsIAorICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOCwgMzAsIDIwNSwgMTg4LCAKKyAgICAyMjEsIDE2NCwgMjEwLCAxMDcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0OCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAorICAgIDIxMCwgMTM3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExMiwgCisgICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMzEsIAorICAgIDUsIDIyMSwgMTY0LCAyMTAsIDE0NiwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjMxLCA1LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxNDQsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0MywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTQwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIAorICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzIsIDMwLCAyMzEsIDUsIAorICAgIDIyMSwgMTY0LCAyMTAsIDEzMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCisgICAgMjEwLCAxMjksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyOCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI2LCAKKyAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNCwgMzAsIDIzMSwgCisgICAgNSwgMjIxLCAxNjQsIDIxMCwgMTIzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjIsIDMwLCAyMzEsIDUsIDIyMSwgCisgICAgMTY0LCAyMTAsIDEyMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAKKyAgICAxMTgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE2LCAzMCwgCisgICAgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNCwgMzAsIDIzMSwgNSwgCisgICAgMjIxLCAxNjQsIDIxMCwgMTEzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDExMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDgsIAorICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNywgMzksIDMwLCAzMSwgMjA4LCA2NiwgMzksIDMwLCAzMSwgMjA5LCAKKyAgICAxMjQsIDM5LCAzMCwgMzEsIDIxOCwgMjUzLCAzMCwgMzEsIDIyNywgMjA0LCAyMjQsIDQ1LCAzNSwgMjQxLCAxNzksIDI0MywgCisgICAgMTk1LCAzNSwgMjM3LCA1MCwgMjQxLCAxNzksIDI0MywgMTk1LCAzNSwgMjM2LCAxNiwgMjQxLCAxNzksIDI0MywgMTk1LCAKKyAgICAzNSwgMjQxLCAxNzgsIDIzNywgNTEsIDI0MywgMTk1LCAzNSwgMjQxLCAxNzgsIDIzNiwgMTUsIDI0MywgMTk1LCAzNSwgCisgICAgMjQxLCAxNzksIDIwOSwgMTI2LCAzNSwgMjQ2LCAyMTcsIDIwOSwgMTI2LCAzNSwgMjM5LCAxMDIsIDI0NiwgNjEsIDIwOSwgCisgICAgMTI2LCAzNSwgMjI0LCA5OCwgMjA5LCAxMjYsIDM1LCAyNDgsIDIyMSwgMjA5LCAxMjYsIDM1LCAyMjksIDE5NSwgMjEyLCAKKyAgICAzNiwgMjA5LCAxMjYsIDM1LCAyNDUsIDE4NSwgMjA5LCAxMjYsIDM1LCAyNTAsIDc3LCAyMDksIDEyNiwgMzUsIDIxOSwgCisgICAgMjUwLCAyMDksIDEyNiwgMzUsIDI0NywgMjIxLCAyMTksIDIxMSwgMjA5LCAxMjYsIDM1LCAyNDQsIDU3LCAyMTksIDI0NSwgCisgICAgMjQzLCAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNDUsIDIwOSwgMTI2LCAzNSwgMjAyLCAyMjUsIDIwOSwgMTI2LCAzNSwgCisgICAgMjMxLCA0MCwgMjA5LCAxMjYsIDM1LCAyMTksIDcsIDIwOSwgMTI2LCAzNSwgMjE2LCAxNTcsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKKyAgICAxOTcsIDIwOSwgMTI2LCAzNSwgMjM2LCAxMjcsIDI0OSwgMjUsIDIwOSwgMTI2LCAzNSwgMjA0LCAxMDMsIDIwOSwgMTI2LCAKKyAgICAzNSwgMjM5LCAxODEsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMTIsIDIwOSwgMTI2LCAzNSwgMjE2LCAxMTQsIDIwOSwgMTI2LCAKKyAgICAzNSwgMjE2LCA4OSwgMjA5LCAxMjYsIDM1LCAyNDEsIDE3NywgMjA5LCAxMjYsIDM1LCAyMzAsIDg1LCAyMDksIDEyNiwgMzUsIAorICAgIDI0NSwgMTkyLCAyMDksIDEyNiwgMzUsIDI0MSwgODMsIDIwOSwgMTI2LCAzNSwgMjQyLCAxNSwgMjA5LCAxMjYsIDM1LCAKKyAgICAyNDYsIDE4NiwgMjA5LCAxMjYsIDM1LCAyNDQsIDY3LCAyMDksIDEyNiwgMzUsIDI2LCAyMTYsIDg4LCAyMDksIDEyNiwgMzUsIAorICAgIDIxOSwgMTYwLCAyMDksIDEyNiwgMzUsIDIyNywgMjA4LCAyMDksIDEyNiwgMzUsIDI0NiwgMTQsIDIwOSwgMTI2LCAzNSwgCisgICAgMjI5LCA4MCwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDQzLCAyMDksIDEyNiwgMzUsIAorICAgIDIxNywgMTY4LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAxLCAyMDksIDEyNiwgMzUsIDIxNiwgOTAsIDIwOSwgMTI2LCAzNSwgCisgICAgMjI3LCAyNDcsIDIxOSwgMjQ1LCAyMjQsIDc4LCAyMDksIDEyNiwgMzUsIDIxNiwgODYsIDIwOSwgMTI2LCAzNSwgMjM4LCAKKyAgICAzMywgMjA4LCAxNzMsIDIyNSwgMywgMjA5LCAxMjYsIDM1LCAyNDEsIDg1LCAyMDksIDEyNiwgMzUsIDIxMSwgNTYsIDIwOSwgCisgICAgMTI2LCAzNSwgMjM3LCAyNDUsIDIwOSwgMTI2LCAzNSwgMjQxLCA3NiwgMjA5LCAxMjYsIDM1LCAyMTksIDUwLCAyMDksIAorICAgIDEyNiwgMzUsIDIxNSwgMjQyLCAyMDksIDEyNiwgMzUsIDIzOSwgMjA3LCAyMDksIDEyNiwgMzUsIDIwNiwgNjQsIDIxOSwgCisgICAgMjQ1LCAyMDQsIDg0LCAyMDksIDEyNiwgMzUsIDI0NSwgMjAyLCAyMDksIDEyNiwgMzUsIDIyNSwgMTgsIDIwOSwgMTI2LCAKKyAgICAzNSwgMjQwLCAyNDUsIDIwOSwgMTI2LCAzNSwgMjA2LCAyMzQsIDIwOSwgMTI2LCAzNSwgMjQzLCAxODIsIDIwOSwgMTI2LCAKKyAgICAzNSwgMjQ2LCAxNiwgMjI0LCA3LCAyMDksIDEyNiwgMzUsIDIzNywgMjIyLCAyMDksIDEyNiwgMzUsIDIzOCwgMjE1LCAyMzEsIAorICAgIDQ5LCAyMDksIDEyNiwgMzUsIDIyNSwgNzMsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMzMsIDIwOSwgMTI2LCAzNSwgMjQxLCAKKyAgICAxMDEsIDIwOSwgMTI2LCAzNSwgMjQyLCA3NCwgMjA5LCAxMjYsIDM1LCAyMDQsIDgyLCAyMDksIDEyNiwgMzUsIDIxMiwgCisgICAgMTE1LCAyMDksIDEyNiwgMzUsIDIzMSwgMTQsIDIwOSwgMTI2LCAzNSwgMjQ0LCAyNSwgMjA5LCAxMjYsIDM1LCAyNDQsIAorICAgIDE0OCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE3OCwgMjA5LCAxMjYsIDM1LCAyNDAsIDIwOSwgMjA5LCAxMjYsIDM1LCAyMTMsIAorICAgIDEwNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDYwLCAyMDksIDEyNiwgMzUsIDIzNywgOTAsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKKyAgICAyMjYsIDIwOSwgMTI2LCAzNSwgMjQ2LCAxMSwgMjA5LCAxMjYsIDM1LCAyNDAsIDg3LCAyMDksIDEyNiwgMzUsIDI1MSwgNzYsIAorICAgIDIwOSwgMTI2LCAzNSwgMjQ1LCAyMjUsIDIwOSwgMTI2LCAzNSwgMjIwLCAzMiwgMjA5LCA5MywgMjA2LCA0MSwgMjA5LCAKKyAgICAxMjYsIDM1LCAyNDMsIDIwNCwgMjA5LCAxMjYsIDM1LCAyMjgsIDEwMSwgMjA5LCAxMjYsIDM1LCAyMzksIDE1MCwgMjQ1LCAKKyAgICAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwOCwgCisgICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIAorICAgIDE0OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgCisgICAgMTcsIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIAorICAgIDIwNiwgMjM2LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMjIyLCA2MywgMjQ1LCAxNTMsIAorICAgIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwOCwgMjQ1LCAKKyAgICAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0OSwgCisgICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIAorICAgIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgCisgICAgMTQ4LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMjIyLCA2MywgMTMsIDI2LCA2LCA2MywgCisgICAgMTMsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCA2LCAyNDUsIDUxLCAxMywgMjYsIDYsIAorICAgIDc0LCAxMywgMjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDYsIDIzOSwgNzUsIDEzLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgCisgICAgNiwgNzUsIDEzLCAyNiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDI2LCA2LCAxNTksIDEzLCAyNiwgCisgICAgNiwgMjI2LCAxODUsIDEzLCAyNiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgNiwgNzgsIDEzLCAyNiwgNiwgMjE5LCAxODQsIDEzLCAKKyAgICAyNiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgNiwgMTQ2LCAxMywgMjYsIDYsIDE5NCwgMTMsIDI2LCA2LCAyMTAsIDY5LCAxMywgCisgICAgMjYsIDYsIDY4LCAxMywgMjYsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDYsIDIwMywgMTk2LCAKKyAgICAxMywgMjYsIDYsIDIwMywgMTI0LCAxMywgMjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDUsIDYzLCAxMywgMjYsIDUsIDI0OSwgCisgICAgMjU1LCAxMywgMjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgNSwgNzQsIDEzLCAyNiwgNSwgCisgICAgMjQwLCAxNzQsIDEzLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDI2LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCA1LCA3NSwgMTMsIDI2LCAKKyAgICA1LCAyMzAsIDE4NCwgMTMsIDI2LCA1LCAyMzAsIDU0LCAxMywgMjYsIDUsIDE1OSwgMTMsIDI2LCA1LCAyMjYsIDE4NSwgMTMsIAorICAgIDI2LCA1LCAyMjMsIDE2MywgMTMsIDI2LCA1LCA3OCwgMTMsIDI2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCA1LCAyMTcsIDEzNCwgCisgICAgMTMsIDI2LCA1LCAxNDYsIDEzLCAyNiwgNSwgMTk0LCAxMywgMjYsIDUsIDIxMCwgNjksIDEzLCAyNiwgNSwgNjgsIDEzLCAKKyAgICAyNiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgNSwgCisgICAgMjAzLCAxMjQsIDEzLCAyNiwgNSwgMjAyLCAxNTksIDEzLCAzNywgNiwgNjMsIDEzLCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAKKyAgICAzNywgNiwgMjQ3LCAxMjUsIDEzLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDM3LCA2LCA3NCwgMTMsIDM3LCA2LCAyNDAsIDE3NCwgCisgICAgMTMsIDM3LCA2LCAyMzksIDc1LCAxMywgMzcsIDYsIDIzNywgMTcxLCAxMywgMzcsIDYsIDc1LCAxMywgMzcsIDYsIDIzMCwgCisgICAgMTg0LCAxMywgMzcsIDYsIDIzMCwgNTQsIDEzLCAzNywgNiwgMTU5LCAxMywgMzcsIDYsIDIyNiwgMTg1LCAxMywgMzcsIDYsIAorICAgIDIyMywgMTYzLCAxMywgMzcsIDYsIDc4LCAxMywgMzcsIDYsIDIxOSwgMTg0LCAxMywgMzcsIDYsIDIxNywgMTM0LCAxMywgCisgICAgMzcsIDYsIDE0NiwgMTMsIDM3LCA2LCAxOTQsIDEzLCAzNywgNiwgMjEwLCA2OSwgMTMsIDM3LCA2LCA2OCwgMTMsIDM3LCA2LCAKKyAgICAyMDYsIDE2NCwgMTMsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDM3LCA2LCAyMDMsIDEyNCwgCisgICAgMTMsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDM3LCA1LCA2MywgMTMsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDM3LCA1LCAyNDcsIAorICAgIDEyNSwgMTMsIDM3LCA1LCAyNDUsIDUxLCAxMywgMzcsIDUsIDc0LCAxMywgMzcsIDUsIDI0MCwgMTc0LCAxMywgMzcsIDUsIAorICAgIDIzOSwgNzUsIDEzLCAzNywgNSwgNzUsIDEzLCAzNywgNSwgMjMwLCAxODQsIDEzLCAzNywgNSwgMjMwLCA1NCwgMTMsIDM3LCAKKyAgICA1LCAxNTksIDEzLCAzNywgNSwgMjI2LCAxODUsIDEzLCAzNywgNSwgMjIzLCAxNjMsIDEzLCAzNywgNSwgNzgsIDEzLCAzNywgCisgICAgNSwgMjE5LCAxODQsIDEzLCAzNywgNSwgMjE3LCAxMzQsIDEzLCAzNywgNSwgMTQ2LCAxMywgMzcsIDUsIDE5NCwgMTMsIDM3LCAKKyAgICA1LCAyMTAsIDY5LCAxMywgMzcsIDUsIDY4LCAxMywgMzcsIDUsIDIwNiwgMTY0LCAxMywgMzcsIDUsIDIwNCwgMTQ0LCAxMywgCisgICAgMzcsIDUsIDIwMywgMTk2LCAxMywgMzcsIDUsIDIwMywgMTI0LCAxMywgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjYsIDM3LCA2LCAKKyAgICA2MywgMTMsIDI2LCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMzcsIDYsIDI0NywgMTI1LCAxMywgMjYsIDM3LCA2LCAyNDUsIAorICAgIDUxLCAxMywgMjYsIDM3LCA2LCA3NCwgMTMsIDI2LCAzNywgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMzcsIDYsIDIzOSwgNzUsIAorICAgIDEzLCAyNiwgMzcsIDYsIDIzNywgMTcxLCAxMywgMjYsIDM3LCA2LCA3NSwgMTMsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCAKKyAgICAyNiwgMzcsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCAyNiwgCisgICAgMzcsIDYsIDIyMywgMTYzLCAxMywgMjYsIDM3LCA2LCA3OCwgMTMsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCAyNiwgMzcsIAorICAgIDYsIDIxNywgMTM0LCAxMywgMjYsIDM3LCA2LCAxNDYsIDEzLCAyNiwgMzcsIDYsIDE5NCwgMTMsIDI2LCAzNywgNiwgMjEwLCAKKyAgICA2OSwgMTMsIDI2LCAzNywgNiwgNjgsIDEzLCAyNiwgMzcsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDM3LCA2LCAyMDQsIDE0NCwgCisgICAgMTMsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgMjYsIDM3LCA2LCAyMDIsIAorICAgIDE1OSwgMTMsIDI2LCAzNywgNSwgNjMsIDEzLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA1LCAyNDcsIDEyNSwgCisgICAgMTMsIDI2LCAzNywgNSwgMjQ1LCA1MSwgMTMsIDI2LCAzNywgNSwgNzQsIDEzLCAyNiwgMzcsIDUsIDI0MCwgMTc0LCAxMywgCisgICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNSwgNzUsIDEzLCAyNiwgCisgICAgMzcsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA1LCAxNTksIDEzLCAyNiwgMzcsIAorICAgIDUsIDIyNiwgMTg1LCAxMywgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNSwgNzgsIDEzLCAyNiwgMzcsIDUsIAorICAgIDIxOSwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNSwgMTQ2LCAxMywgMjYsIDM3LCA1LCAKKyAgICAxOTQsIDEzLCAyNiwgMzcsIDUsIDIxMCwgNjksIDEzLCAyNiwgMzcsIDUsIDY4LCAxMywgMjYsIDM3LCA1LCAyMDYsIDE2NCwgCisgICAgMTMsIDI2LCAzNywgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA1LCAyMDMsIAorICAgIDEyNCwgMTMsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAxMzIsIDYsIDYzLCAxMywgMTMyLCA2LCAyNDcsIDEyNSwgMTMsIAorICAgIDEzMiwgNiwgMjQ1LCA1MSwgMTMsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAxMzIsIDYsIAorICAgIDIzMCwgNTQsIDEzLCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMTMyLCA2LCA3OCwgMTMsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAKKyAgICAxMzIsIDYsIDIxNywgMTM0LCAxMywgMTMyLCA2LCAxOTQsIDEzLCAxMzIsIDYsIDIxMCwgNjksIDEzLCAxMzIsIDYsIDY4LCAKKyAgICAxMywgMTMyLCA2LCAyMDYsIDE2NCwgMTMsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCisgICAgMTMyLCA2LCAyMDMsIDEyNCwgMTMsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAxMzIsIDUsIDYzLCAxMywgMTMyLCA1LCAyNDksIAorICAgIDI1NSwgMTMsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAxMzIsIDUsIDI0NSwgNTEsIDEzLCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgCisgICAgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDEzMiwgNSwgNzUsIDEzLCAxMzIsIDUsIDIzMCwgMTg0LCAxMywgMTMyLCA1LCAyMzAsIAorICAgIDU0LCAxMywgMTMyLCA1LCAxNTksIDEzLCAxMzIsIDUsIDIyNiwgMTg1LCAxMywgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDEzMiwgCisgICAgNSwgMjE5LCAxODQsIDEzLCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMTMyLCA1LCAxNDYsIDEzLCAxMzIsIDUsIDE5NCwgMTMsIAorICAgIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDEzMiwgNSwgNjgsIDEzLCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgMTMyLCA1LCAyMDQsIAorICAgIDE0NCwgMTMsIDEzMiwgNSwgMjAzLCAxOTYsIDEzLCAxMzIsIDUsIDIwMywgMTI0LCAxMywgMTMyLCA1LCAyMDIsIDE1OSwgCisgICAgMTMsIDI2LCAxMzIsIDYsIDYzLCAxMywgMjYsIDEzMiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA2LCAyNDcsIDEyNSwgCisgICAgMTMsIDI2LCAxMzIsIDYsIDI0NSwgNTEsIDEzLCAyNiwgMTMyLCA2LCA3NCwgMTMsIDI2LCAxMzIsIDYsIDI0MCwgMTc0LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDI2LCAxMzIsIDYsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNiwgNzUsIAorICAgIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA2LCAxNTksIAorICAgIDEzLCAyNiwgMTMyLCA2LCAyMjYsIDE4NSwgMTMsIDI2LCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNiwgNzgsIAorICAgIDEzLCAyNiwgMTMyLCA2LCAyMTksIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNiwgMTQ2LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMTk0LCAxMywgMjYsIDEzMiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDYsIDY4LCAxMywgMjYsIAorICAgIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAyNiwgMTMyLCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCisgICAgMjYsIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAyNiwgMTMyLCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxMzIsIDUsIDYzLCAxMywgCisgICAgMjYsIDEzMiwgNSwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxMzIsIDUsIDI0NSwgNTEsIAorICAgIDEzLCAyNiwgMTMyLCA1LCA3NCwgMTMsIDI2LCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDEzMiwgNSwgMjM5LCA3NSwgCisgICAgMTMsIDI2LCAxMzIsIDUsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNSwgNzUsIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDE4NCwgCisgICAgMTMsIDI2LCAxMzIsIDUsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA1LCAxNTksIDEzLCAyNiwgMTMyLCA1LCAyMjYsIDE4NSwgCisgICAgMTMsIDI2LCAxMzIsIDUsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNSwgNzgsIDEzLCAyNiwgMTMyLCA1LCAyMTksIDE4NCwgCisgICAgMTMsIDI2LCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNSwgMTQ2LCAxMywgMjYsIDEzMiwgNSwgMTk0LCAxMywgCisgICAgMjYsIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDUsIDY4LCAxMywgMjYsIDEzMiwgNSwgMjA2LCAxNjQsIDEzLCAKKyAgICAyNiwgMTMyLCA1LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMjYsIDEzMiwgNSwgMjAzLCAxMjQsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMDIsIDE1OSwgMTMsIDE2NiwgNiwgNjMsIDEzLCAxNjYsIDYsIDI0OSwgMjU1LCAxMywgMTY2LCAKKyAgICA2LCAyNDUsIDUxLCAxMywgMTY2LCA2LCA3NCwgMTMsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAxNjYsIDYsIDIzOSwgNzUsIAorICAgIDEzLCAxNjYsIDYsIDIzMCwgMTg0LCAxMywgMTY2LCA2LCAyMzAsIDU0LCAxMywgMTY2LCA2LCAxNTksIDEzLCAxNjYsIDYsIAorICAgIDIyNiwgMTg1LCAxMywgMTY2LCA2LCAyMjMsIDE2MywgMTMsIDE2NiwgNiwgNzgsIDEzLCAxNjYsIDYsIDIxOSwgMTg0LCAxMywgCisgICAgMTY2LCA2LCAyMTcsIDEzNCwgMTMsIDE2NiwgNiwgMTk0LCAxMywgMTY2LCA2LCAyMTAsIDY5LCAxMywgMTY2LCA2LCA2OCwgCisgICAgMTMsIDE2NiwgNiwgMjA2LCAxNjQsIDEzLCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMTY2LCA2LCAyMDMsIDE5NiwgMTMsIAorICAgIDE2NiwgNiwgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDYzLCAxMywgMTY2LCA1LCAyNDksIDI1NSwgMTMsIDE2NiwgNSwgMjQ3LCAKKyAgICAxMjUsIDEzLCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAxNjYsIDUsIDc0LCAxMywgMTY2LCA1LCAyNDAsIDE3NCwgMTMsIDE2NiwgCisgICAgNSwgMjM5LCA3NSwgMTMsIDE2NiwgNSwgMjM3LCAxNzEsIDEzLCAxNjYsIDUsIDc1LCAxMywgMTY2LCA1LCAyMzAsIDE4NCwgCisgICAgMTMsIDE2NiwgNSwgMjMwLCA1NCwgMTMsIDE2NiwgNSwgMTU5LCAxMywgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDE2NiwgNSwgCisgICAgMjIzLCAxNjMsIDEzLCAxNjYsIDUsIDc4LCAxMywgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDE2NiwgNSwgMjE3LCAxMzQsIDEzLCAKKyAgICAxNjYsIDUsIDE0NiwgMTMsIDE2NiwgNSwgMTk0LCAxMywgMTY2LCA1LCAyMTAsIDY5LCAxMywgMTY2LCA1LCA2OCwgMTMsIAorICAgIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAxNjYsIDUsIDIwNCwgMTQ0LCAxMywgMTY2LCA1LCAyMDMsIDE5NiwgMTMsIDE2NiwgNSwgCisgICAgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDIwMiwgMTU5LCAxMywgMTY5LCA2LCA2MywgMTMsIDE2OSwgNiwgMjQ5LCAyNTUsIDEzLCAKKyAgICAxNjksIDYsIDI0NSwgNTEsIDEzLCAxNjksIDYsIDc0LCAxMywgMTY5LCA2LCAyNDAsIDE3NCwgMTMsIDE2OSwgNiwgMjM5LCAKKyAgICA3NSwgMTMsIDE2OSwgNiwgNzUsIDEzLCAxNjksIDYsIDIzMCwgMTg0LCAxMywgMTY5LCA2LCAyMzAsIDU0LCAxMywgMTY5LCAKKyAgICA2LCAxNTksIDEzLCAxNjksIDYsIDIyNiwgMTg1LCAxMywgMTY5LCA2LCA3OCwgMTMsIDE2OSwgNiwgMTk0LCAxMywgMTY5LCAKKyAgICA2LCAyMTAsIDY5LCAxMywgMTY5LCA2LCA2OCwgMTMsIDE2OSwgNiwgMjA2LCAxNjQsIDEzLCAxNjksIDYsIDIwNCwgMTQ0LCAKKyAgICAxMywgMTY5LCA2LCAyMDMsIDE5NiwgMTMsIDE2OSwgNiwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDYzLCAxMywgMTY5LCA1LCAKKyAgICAyNDksIDI1NSwgMTMsIDE2OSwgNSwgMjQ3LCAxMjUsIDEzLCAxNjksIDUsIDI0NSwgNTEsIDEzLCAxNjksIDUsIDc0LCAxMywgCisgICAgMTY5LCA1LCAyNDAsIDE3NCwgMTMsIDE2OSwgNSwgMjM5LCA3NSwgMTMsIDE2OSwgNSwgMjM3LCAxNzEsIDEzLCAxNjksIDUsIAorICAgIDc1LCAxMywgMTY5LCA1LCAyMzAsIDE4NCwgMTMsIDE2OSwgNSwgMjMwLCA1NCwgMTMsIDE2OSwgNSwgMTU5LCAxMywgMTY5LCAKKyAgICA1LCAyMjYsIDE4NSwgMTMsIDE2OSwgNSwgMjIzLCAxNjMsIDEzLCAxNjksIDUsIDc4LCAxMywgMTY5LCA1LCAyMTksIDE4NCwgCisgICAgMTMsIDE2OSwgNSwgMjE3LCAxMzQsIDEzLCAxNjksIDUsIDE0NiwgMTMsIDE2OSwgNSwgMTk0LCAxMywgMTY5LCA1LCAyMTAsIAorICAgIDY5LCAxMywgMTY5LCA1LCA2OCwgMTMsIDE2OSwgNSwgMjA2LCAxNjQsIDEzLCAxNjksIDUsIDIwNCwgMTQ0LCAxMywgMTY5LCAKKyAgICA1LCAyMDMsIDE5NiwgMTMsIDE2OSwgNSwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNiwgCisgICAgNjMsIDEzLCAyNiwgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDYsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIDYsIDc0LCAxMywgMjYsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMzksIDc1LCAxMywgMjYsIDE2NiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA2LCA3NSwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDYsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA2LCA3OCwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA2LCAxNDYsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAxOTQsIDEzLCAyNiwgMTY2LCA2LCAyMTAsIDY5LCAxMywgMjYsIDE2NiwgNiwgNjgsIDEzLCAyNiwgMTY2LCA2LCAyMDYsIAorICAgIDE2NCwgMTMsIDI2LCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNSwgNjMsIDEzLCAyNiwgMTY2LCA1LCAKKyAgICAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNSwgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIAorICAgIDUsIDc0LCAxMywgMjYsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA1LCAyMzksIDc1LCAxMywgMjYsIDE2NiwgNSwgCisgICAgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA1LCA3NSwgMTMsIDI2LCAxNjYsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCisgICAgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDUsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNSwgCisgICAgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA1LCA3OCwgMTMsIDI2LCAxNjYsIDUsIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCisgICAgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA1LCAxNDYsIDEzLCAyNiwgMTY2LCA1LCAxOTQsIDEzLCAyNiwgMTY2LCA1LCAyMTAsIAorICAgIDY5LCAxMywgMjYsIDE2NiwgNSwgNjgsIDEzLCAyNiwgMTY2LCA1LCAyMDYsIDE2NCwgMTMsIDI2LCAxNjYsIDUsIDIwNCwgCisgICAgMTQ0LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA1LCAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIwMiwgMTU5LCAxMywgNDEsIDYsIDYzLCAxMywgNDEsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDYsIDI0NywgMTI1LCAxMywgCisgICAgNDEsIDYsIDI0NSwgNTEsIDEzLCA0MSwgNiwgNzQsIDEzLCA0MSwgNiwgMjQwLCAxNzQsIDEzLCA0MSwgNiwgMjM5LCA3NSwgCisgICAgMTMsIDQxLCA2LCAyMzcsIDE3MSwgMTMsIDQxLCA2LCA3NSwgMTMsIDQxLCA2LCAyMzAsIDE4NCwgMTMsIDQxLCA2LCAyMzAsIAorICAgIDU0LCAxMywgNDEsIDYsIDE1OSwgMTMsIDQxLCA2LCAyMjYsIDE4NSwgMTMsIDQxLCA2LCAyMjMsIDE2MywgMTMsIDQxLCA2LCAKKyAgICA3OCwgMTMsIDQxLCA2LCAyMTksIDE4NCwgMTMsIDQxLCA2LCAyMTcsIDEzNCwgMTMsIDQxLCA2LCAxNDYsIDEzLCA0MSwgNiwgCisgICAgMTk0LCAxMywgNDEsIDYsIDIxMCwgNjksIDEzLCA0MSwgNiwgNjgsIDEzLCA0MSwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgNiwgCisgICAgMjA0LCAxNDQsIDEzLCA0MSwgNiwgMjAzLCAxOTYsIDEzLCA0MSwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgNiwgMjAyLCAxNTksIAorICAgIDEzLCA0MSwgNSwgNjMsIDEzLCA0MSwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgNSwgMjQ1LCAKKyAgICA1MSwgMTMsIDQxLCA1LCA3NCwgMTMsIDQxLCA1LCAyNDAsIDE3NCwgMTMsIDQxLCA1LCAyMzksIDc1LCAxMywgNDEsIDUsIAorICAgIDIzNywgMTcxLCAxMywgNDEsIDUsIDc1LCAxMywgNDEsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDUsIDIzMCwgNTQsIDEzLCA0MSwgCisgICAgNSwgMTU5LCAxMywgNDEsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDUsIDIyMywgMTYzLCAxMywgNDEsIDUsIDc4LCAxMywgNDEsIAorICAgIDUsIDIxOSwgMTg0LCAxMywgNDEsIDUsIDIxNywgMTM0LCAxMywgNDEsIDUsIDE0NiwgMTMsIDQxLCA1LCAxOTQsIDEzLCA0MSwgCisgICAgNSwgMjEwLCA2OSwgMTMsIDQxLCA1LCA2OCwgMTMsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDQxLCA1LCAyMDQsIDE0NCwgMTMsIAorICAgIDQxLCA1LCAyMDMsIDE5NiwgMTMsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDQxLCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAyNiwgNiwgCisgICAgNjMsIDEzLCA0MSwgMjYsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAyNiwgNiwgMjQ1LCAKKyAgICA1MSwgMTMsIDQxLCAyNiwgNiwgNzQsIDEzLCA0MSwgMjYsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDI2LCA2LCAyMzksIDc1LCAKKyAgICAxMywgNDEsIDI2LCA2LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgNiwgNzUsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMTg0LCAxMywgCisgICAgNDEsIDI2LCA2LCAyMzAsIDU0LCAxMywgNDEsIDI2LCA2LCAxNTksIDEzLCA0MSwgMjYsIDYsIDIyNiwgMTg1LCAxMywgNDEsIAorICAgIDI2LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgNiwgNzgsIDEzLCA0MSwgMjYsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAKKyAgICA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgNiwgMTQ2LCAxMywgNDEsIDI2LCA2LCAxOTQsIDEzLCA0MSwgMjYsIDYsIDIxMCwgCisgICAgNjksIDEzLCA0MSwgMjYsIDYsIDY4LCAxMywgNDEsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgNiwgMjA0LCAxNDQsIAorICAgIDEzLCA0MSwgMjYsIDYsIDIwMywgMTk2LCAxMywgNDEsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgNiwgMjAyLCAKKyAgICAxNTksIDEzLCA0MSwgMjYsIDUsIDYzLCAxMywgNDEsIDI2LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNSwgMjQ3LCAxMjUsIAorICAgIDEzLCA0MSwgMjYsIDUsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDUsIDc0LCAxMywgNDEsIDI2LCA1LCAyNDAsIDE3NCwgMTMsIAorICAgIDQxLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDUsIDc1LCAxMywgNDEsIAorICAgIDI2LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNSwgMTU5LCAxMywgNDEsIDI2LCAKKyAgICA1LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgNSwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDUsIDc4LCAxMywgNDEsIDI2LCA1LCAKKyAgICAyMTksIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDUsIDE0NiwgMTMsIDQxLCAyNiwgNSwgCisgICAgMTk0LCAxMywgNDEsIDI2LCA1LCAyMTAsIDY5LCAxMywgNDEsIDI2LCA1LCA2OCwgMTMsIDQxLCAyNiwgNSwgMjA2LCAxNjQsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNSwgMjAzLCAKKyAgICAxMjQsIDEzLCA0MSwgMjYsIDUsIDIwMiwgMTU5LCAxMywgNDEsIDM3LCA2LCA2MywgMTMsIDQxLCAzNywgNiwgMjQ5LCAyNTUsIAorICAgIDEzLCA0MSwgMzcsIDYsIDI0NywgMTI1LCAxMywgNDEsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDM3LCA2LCA3NCwgMTMsIAorICAgIDQxLCAzNywgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzNywgMTcxLCAxMywgCisgICAgNDEsIDM3LCA2LCA3NSwgMTMsIDQxLCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMzcsIDYsIDIzMCwgNTQsIDEzLCA0MSwgCisgICAgMzcsIDYsIDE1OSwgMTMsIDQxLCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMzcsIDYsIDIyMywgMTYzLCAxMywgNDEsIDM3LCAKKyAgICA2LCA3OCwgMTMsIDQxLCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgMzcsIDYsIDIxNywgMTM0LCAxMywgNDEsIDM3LCA2LCAKKyAgICAxNDYsIDEzLCA0MSwgMzcsIDYsIDE5NCwgMTMsIDQxLCAzNywgNiwgMjEwLCA2OSwgMTMsIDQxLCAzNywgNiwgNjgsIDEzLCAKKyAgICA0MSwgMzcsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDQxLCAzNywgNiwgMjAzLCAxOTYsIAorICAgIDEzLCA0MSwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNSwgNjMsIDEzLCAKKyAgICA0MSwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDM3LCA1LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNSwgMjQ1LCA1MSwgMTMsIAorICAgIDQxLCAzNywgNSwgNzQsIDEzLCA0MSwgMzcsIDUsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIAorICAgIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAzNywgNSwgNzUsIDEzLCA0MSwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCAKKyAgICA1LCAyMzAsIDU0LCAxMywgNDEsIDM3LCA1LCAxNTksIDEzLCA0MSwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA1LCAKKyAgICAyMjMsIDE2MywgMTMsIDQxLCAzNywgNSwgNzgsIDEzLCA0MSwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA1LCAyMTcsIAorICAgIDEzNCwgMTMsIDQxLCAzNywgNSwgMTQ2LCAxMywgNDEsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMzcsIDUsIDIxMCwgNjksIDEzLCAKKyAgICA0MSwgMzcsIDUsIDY4LCAxMywgNDEsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNSwgMjA0LCAxNDQsIDEzLCA0MSwgCisgICAgMzcsIDUsIDIwMywgMTk2LCAxMywgNDEsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNSwgMjAyLCAxNTksIDEzLCAKKyAgICA0MSwgMjYsIDM3LCA2LCA2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ3LCAKKyAgICAxMjUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNiwgNzQsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAorICAgIDQxLCAyNiwgMzcsIDYsIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzAsIAorICAgIDU0LCAxMywgNDEsIDI2LCAzNywgNiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDc4LCAxMywgNDEsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDE5NCwgMTMsIAorICAgIDQxLCAyNiwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMjYsIDM3LCA2LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgCisgICAgMTY0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAKKyAgICAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDM3LCA1LCA2MywgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNSwgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAKKyAgICAyNiwgMzcsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc1LCAKKyAgICAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgNDEsIDI2LCAzNywgCisgICAgNSwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDQxLCAKKyAgICAyNiwgMzcsIDUsIDc4LCAxMywgNDEsIDI2LCAzNywgNSwgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDEzNCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDE5NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMCwgCisgICAgNjksIDEzLCA0MSwgMjYsIDM3LCA1LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDI2LCAzNywgCisgICAgNSwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTI0LCAKKyAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA2LCA2MywgMTMsIDIyNCwgNDEsIDYsIDI0OSwgCisgICAgMjU1LCAxMywgMjI0LCA0MSwgNiwgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA2LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNiwgCisgICAgNzQsIDEzLCAyMjQsIDQxLCA2LCAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDYsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA2LCAKKyAgICAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIDYsIDc1LCAxMywgMjI0LCA0MSwgNiwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKKyAgICAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA2LCAKKyAgICAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDYsIDc4LCAxMywgMjI0LCA0MSwgNiwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKKyAgICAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDYsIDE0NiwgMTMsIDIyNCwgNDEsIDYsIDE5NCwgMTMsIDIyNCwgNDEsIDYsIDIxMCwgCisgICAgNjksIDEzLCAyMjQsIDQxLCA2LCA2OCwgMTMsIDIyNCwgNDEsIDYsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNiwgMjA0LCAKKyAgICAxNDQsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDE5NiwgMTMsIDIyNCwgNDEsIDYsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA1LCA2MywgMTMsIDIyNCwgNDEsIDUsIDI0OSwgMjU1LCAxMywgMjI0LCA0MSwgNSwgCisgICAgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA1LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNSwgNzQsIDEzLCAyMjQsIDQxLCA1LCAKKyAgICAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDUsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA1LCAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIAorICAgIDUsIDc1LCAxMywgMjI0LCA0MSwgNSwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNSwgCisgICAgMTU5LCAxMywgMjI0LCA0MSwgNSwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDUsIAorICAgIDc4LCAxMywgMjI0LCA0MSwgNSwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDUsIAorICAgIDE0NiwgMTMsIDIyNCwgNDEsIDUsIDE5NCwgMTMsIDIyNCwgNDEsIDUsIDIxMCwgNjksIDEzLCAyMjQsIDQxLCA1LCA2OCwgCisgICAgMTMsIDIyNCwgNDEsIDUsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIAorICAgIDE5NiwgMTMsIDIyNCwgNDEsIDUsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNSwgMjAyLCAxNTksIDEzLCAzNywgNSwgMjQzLCAKKyAgICA4NCwgNzUsIDEzLCAzNywgNSwgMjQzLCA4NCwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjUxLCAyLCAxMywgMjYsIDYsIDI0OCwgCisgICAgMTA2LCAxMywgMjYsIDYsIDIzOCwgMjM1LCAxMywgMjYsIDYsIDI0NCwgMzcsIDEzLCAyNiwgNiwgMjQxLCAzNywgMTMsIDI2LCAKKyAgICA2LCAyMDIsIDgzLCAxMywgMjYsIDYsIDI0MCwgMjQ4LCAxMywgMjYsIDYsIDIwOSwgNzQsIDEzLCAyNiwgNiwgMjMwLCAyMzAsIAorICAgIDEzLCAyNiwgNiwgMjI5LCAyNDcsIDEzLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDI2LCA2LCAyMjMsIDI0NiwgMTMsIDI2LCA2LCAKKyAgICAyMjEsIDg0LCAxMywgMjYsIDYsIDIwMywgMTcwLCAxMywgMjYsIDYsIDIyMCwgMzQsIDEzLCAyNiwgNiwgMjE4LCAxNjcsIAorICAgIDEzLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDI2LCA2LCAyMDksIDc1LCA5NywgMTMsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDI2LCAKKyAgICA2LCAyMDksIDIwNywgMTMsIDI2LCA2LCAyMDYsIDIxNiwgMTMsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDI2LCA2LCAyNDYsIAorICAgIDE0MiwgMTMsIDI2LCA2LCAyMTcsIDIwMiwgMTMsIDI2LCA2LCAyMjAsIDM2LCAxMywgMjYsIDIyMywgMTAxLCAxMywgMjYsIAorICAgIDUsIDI1MSwgMiwgMTMsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCA1LCAyNDQsIDM3LCAKKyAgICAxMywgMjYsIDUsIDI0MSwgMzcsIDEzLCAyNiwgNSwgMjAyLCA4MywgMTMsIDI2LCA1LCAyNDAsIDI0OCwgMTMsIDI2LCA1LCAKKyAgICAyMDksIDc0LCAxMywgMjYsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDUsIDIyOSwgMjQ3LCAxMywgMjYsIDUsIDIyOCwgMjQsIAorICAgIDEzLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCAyNiwgNSwgMjIxLCA4NCwgMTMsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDI2LCA1LCAKKyAgICAyMjAsIDM0LCAxMywgMjYsIDUsIDIxOCwgMTY3LCAxMywgMjYsIDUsIDIxNiwgNTksIDEzLCAyNiwgNSwgNDYsIDIxMiwgCisgICAgMTQ0LCAxMywgMjYsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDUsIDIwOSwgMjA3LCAxMywgMjYsIDUsIDIwNiwgMjE2LCAxMywgCisgICAgMjYsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDUsIDI0NiwgMTQyLCAxMywgMjYsIDUsIDIxNywgMjAyLCAxMywgMjYsIDUsIAorICAgIDIyMCwgMzYsIDEzLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAyNiwgMjA5LCA3NSwgCisgICAgOTcsIDEzLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgMjYsIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAyMTYsIDYwLCA5NywgMTMsIAorICAgIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCAzNywgNiwgMjUxLCAyLCAxMywgMzcsIDYsIDI0OCwgMTA2LCAxMywgMzcsIDYsIDIzOCwgCisgICAgMjM1LCAxMywgMzcsIDYsIDI0NCwgMzcsIDEzLCAzNywgNiwgMjQxLCAzNywgMTMsIDM3LCA2LCAyMDIsIDgzLCAxMywgMzcsIAorICAgIDYsIDI0MCwgMjQ4LCAxMywgMzcsIDYsIDIwOSwgNzQsIDEzLCAzNywgNiwgMjMwLCAyMzAsIDEzLCAzNywgNiwgMjI5LCAKKyAgICAyNDcsIDEzLCAzNywgNiwgMjI4LCAyNCwgMTMsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDM3LCA2LCAyMjEsIDg0LCAxMywgMzcsIAorICAgIDYsIDIwMywgMTcwLCAxMywgMzcsIDYsIDIyMCwgMzQsIDEzLCAzNywgNiwgMjE4LCAxNjcsIDEzLCAzNywgNiwgMjE2LCA1OSwgCisgICAgMTMsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDM3LCA2LCAyMTIsIDE0NCwgMTMsIDM3LCA2LCAyMDksIDIwNywgMTMsIDM3LCAKKyAgICA2LCAyMDYsIDIxNiwgMTMsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDM3LCA2LCAyMTcsIAorICAgIDIwMiwgMTMsIDM3LCA2LCAyMjAsIDM2LCAxMywgMzcsIDIyMywgMTAxLCAxMywgMzcsIDUsIDI1MSwgMiwgMTMsIDM3LCA1LCAKKyAgICAyNDgsIDEwNiwgMTMsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDM3LCA1LCAyNDQsIDM3LCAxMywgMzcsIDUsIDI0MSwgMzcsIAorICAgIDEzLCAzNywgNSwgMjAyLCA4MywgMTMsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDM3LCA1LCAyMDksIDc0LCAxMywgMzcsIDUsIAorICAgIDIzMCwgMjMwLCAxMywgMzcsIDUsIDIyOSwgMjQ3LCAxMywgMzcsIDUsIDIyOCwgMjQsIDEzLCAzNywgNSwgMjIzLCAyNDYsIAorICAgIDEzLCAzNywgNSwgMjIxLCA4NCwgMTMsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDM3LCA1LCAyMjAsIDM0LCAxMywgMzcsIDUsIAorICAgIDIxOCwgMTY3LCAxMywgMzcsIDUsIDIxNiwgNTksIDEzLCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMzcsIDUsIDIxMiwgCisgICAgMTQ0LCAxMywgMzcsIDUsIDIwOSwgMjA3LCAxMywgMzcsIDUsIDIwNiwgMjE2LCAxMywgMzcsIDUsIDIxOCwgMTkyLCAxMywgCisgICAgMzcsIDUsIDI0NiwgMTQyLCAxMywgMzcsIDUsIDIxNywgMjAyLCAxMywgMzcsIDUsIDIyMCwgMzYsIDEzLCAzNywgMjE5LCAKKyAgICA2OSwgMjQzLCAyMDUsIDEzLCAzNywgMjQxLCAzOCwgOTcsIDEzLCAzNywgMjA5LCA3NSwgOTcsIDEzLCAzNywgMjI5LCAyNDgsIAorICAgIDk3LCAxMywgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCAKKyAgICAyNiwgMzcsIDYsIDI1MSwgMiwgMTMsIDI2LCAzNywgNiwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgCisgICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgMjYsIDM3LCA2LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA2LCAyMDIsIDgzLCAxMywgCisgICAgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNiwgMjMwLCAyMzAsIDEzLCAKKyAgICAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA2LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIAorICAgIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDI2LCAzNywgNiwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCAKKyAgICAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA2LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgCisgICAgMTMsIDI2LCAzNywgNiwgMjEyLCAxNDQsIDEzLCAyNiwgMzcsIDYsIDIwOSwgMjA3LCAxMywgMjYsIDM3LCA2LCAyMDYsIAorICAgIDIxNiwgMTMsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCAyNiwgMzcsIDYsIDI0NiwgMTQyLCAxMywgMjYsIDM3LCA2LCAKKyAgICAyMTcsIDIwMiwgMTMsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDI2LCAzNywgMjIzLCAxMDEsIDEzLCAyNiwgMzcsIDUsIAorICAgIDI1MSwgMiwgMTMsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDUsIDIzOCwgMjM1LCAxMywgMjYsIDM3LCA1LCAKKyAgICAyNDQsIDM3LCAxMywgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA1LCAyMDIsIDgzLCAxMywgMjYsIDM3LCA1LCAKKyAgICAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNSwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNSwgMjMwLCAyMzAsIDEzLCAyNiwgMzcsIDUsIAorICAgIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA1LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA1LCAyMjMsIDI0NiwgMTMsIDI2LCAzNywgNSwgCisgICAgMjIxLCA4NCwgMTMsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzQsIDEzLCAyNiwgMzcsIDUsIAorICAgIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCAyNiwgCisgICAgMzcsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNSwgMjA2LCAyMTYsIDEzLCAKKyAgICAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNSwgMjE3LCAyMDIsIAorICAgIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDM3LCAyNDEsIAorICAgIDM4LCA5NywgMTMsIDI2LCAzNywgMjA5LCA3NSwgOTcsIDEzLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAzNywgCisgICAgMjE4LCAxOTMsIDk3LCAxMywgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgNDEsIAorICAgIDI2LCA2LCAyNTEsIDIsIDEzLCA0MSwgMjYsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNiwgMjAyLCA4MywgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMjMwLCAxMywgNDEsIAorICAgIDI2LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCA0MSwgCisgICAgMjYsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM0LCAxMywgNDEsIAorICAgIDI2LCA2LCAyMTgsIDE2NywgMTMsIDQxLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAKKyAgICA0MSwgMjYsIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgNiwgMjA2LCAyMTYsIAorICAgIDEzLCA0MSwgMjYsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgNiwgMjE3LCAKKyAgICAyMDIsIDEzLCA0MSwgMjYsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDIyMywgMTAxLCAxMywgNDEsIDI2LCA1LCAyNTEsIDIsIAorICAgIDEzLCA0MSwgMjYsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgNSwgMjQ0LCAzNywgCisgICAgMTMsIDQxLCAyNiwgNSwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgNSwgMjQwLCAyNDgsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCA1LCAyMjksIDI0NywgCisgICAgMTMsIDQxLCAyNiwgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDUsIDIyMSwgODQsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCA1LCAyMTgsIDE2NywgCisgICAgMTMsIDQxLCAyNiwgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNSwgNDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMTIsIAorICAgIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCA1LCAKKyAgICAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNSwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAKKyAgICA1LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAKKyAgICA0MSwgMjYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTkzLCA5NywgCisgICAgMTMsIDQxLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDYsIAorICAgIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgCisgICAgODMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIAorICAgIDM3LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAzNywgNiwgMjI4LCAyNCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgCisgICAgNDEsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAzNywgCisgICAgNiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgMjE2LCAKKyAgICAxMywgNDEsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDYsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgCisgICAgNDEsIDI2LCAzNywgNSwgMjUxLCAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAKKyAgICAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgNDEsIAorICAgIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAKKyAgICA3NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCAzNywgNSwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIAorICAgIDM3LCA1LCAyMjgsIDI0LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjEsIDg0LCAKKyAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCAzNywgCisgICAgNSwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgNDEsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAKKyAgICAxMywgNDEsIDI2LCAzNywgNSwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCAzNywgNSwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDYsIDE0MiwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDIxOSwgNjksIDI0MywgMjA1LCAxMywgNDEsIDI2LCAzNywgMjQxLCAzOCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMDksIDc1LCAKKyAgICA5NywgMTMsIDQxLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDQxLCAKKyAgICAyNiwgMzcsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgMjYsIDYsIDI0MywgMTk5LCAKKyAgICAxMywgMjYsIDUsIDI0MywgMTk5LCAxMywgMjYsIDE3LCAyMDIsIDg0LCAxMywgMjYsIDE3LCAxMDUsIDEzLCAyNiwgMTcsIAorICAgIDEwOCwgMTMsIDI2LCAxNywgMTQ3LCAxMywgMjYsIDE3LCAxNDksIDEzLCAyNiwgMTcsIDE3MCwgMTMsIDI2LCAxNywgMTk1LCAKKyAgICAxMywgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDI2LCAxNywgMTk5LCAxMywgMjYsIDE3LCAyMjIsIDYzLCAxMywgMTY5LCAxNywgCisgICAgMjAyLCA4NCwgMTMsIDE2OSwgMTcsIDEwNSwgMTMsIDE2OSwgMTcsIDEwOCwgMTMsIDE2OSwgMTcsIDE0NywgMTMsIDE2OSwgCisgICAgMTcsIDE0OSwgMTMsIDE2OSwgMTcsIDE3MCwgMTMsIDE2OSwgMTcsIDE5NSwgMTMsIDE2OSwgMTcsIDIxMywgMTExLCAxMywgCisgICAgMTY5LCAxNywgMTk5LCAxMywgMTY5LCAxNywgMjIyLCA2MywgMTMsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDQxLCAxNywgMTA1LCAKKyAgICAxMywgNDEsIDE3LCAxMDgsIDEzLCA0MSwgMTcsIDE0NywgMTMsIDQxLCAxNywgMTQ5LCAxMywgNDEsIDE3LCAxNzAsIDEzLCAKKyAgICA0MSwgMTcsIDE5NSwgMTMsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMTcsIDE5OSwgMTMsIDQxLCAxNywgMjIyLCA2MywgCisgICAgMTMsIDQxLCAyNiwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMjYsIDE3LCAxMDUsIDEzLCA0MSwgMjYsIDE3LCAxMDgsIDEzLCAKKyAgICA0MSwgMjYsIDE3LCAxNDcsIDEzLCA0MSwgMjYsIDE3LCAxNDksIDEzLCA0MSwgMjYsIDE3LCAxNzAsIDEzLCA0MSwgMjYsIAorICAgIDE3LCAxOTUsIDEzLCA0MSwgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDQxLCAyNiwgMTcsIDE5OSwgMTMsIDQxLCAyNiwgMTcsIAorICAgIDIyMiwgNjMsIDEzLCAyMjQsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDIyNCwgNDEsIDE3LCAxMDUsIDEzLCAyMjQsIDQxLCAxNywgCisgICAgMTA4LCAxMywgMjI0LCA0MSwgMTcsIDE0NywgMTMsIDIyNCwgNDEsIDE3LCAxNDksIDEzLCAyMjQsIDQxLCAxNywgMTcwLCAKKyAgICAxMywgMjI0LCA0MSwgMTcsIDE5NSwgMTMsIDIyNCwgNDEsIDE3LCAyMTMsIDExMSwgMTMsIDIyNCwgNDEsIDE3LCAxOTksIAorICAgIDEzLCAyMjQsIDQxLCAxNywgMjIyLCA2MywgMjEsIDEyOCwgMjMxLCAzNSwgMjEsIDIzNywgMTIwLCAyMzEsIDM1LCAyMSwgCisgICAgMjM3LCAxMTYsIDIzMSwgMzUsIDIxLCAyMzcsIDEwNSwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMzEsIDM1LCAyMSwgMjM3LCAKKyAgICAxMjIsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDEyMCwgMTIyLCAyNDgsIDExNywgMjEsIAorICAgIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIAorICAgIDEyOCwgMTIyLCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM2LCAyMjcsIAorICAgIDAsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAyMjQsIDE0OCwgMjEsIDIzNywgMTIwLCAKKyAgICAxMjIsIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTYsIDE4OCwgCisgICAgMjI5LCAyOCwgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNSwgCisgICAgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA3LCAyMSwgCisgICAgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTAxLCAKKyAgICAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAKKyAgICAyMDgsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMjcsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgCisgICAgMTI3LCAyMSwgMTI4LCAxMDEsIDI0OCwgMTE4LCAxMTUsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTgsIDExNSwgCisgICAgMjI0LCAxNDgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMDksIDIxLCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyMDksIDIxLCAKKyAgICAyMSwgMTI4LCAxMjIsIDEwMSwgMjExLCA1MywgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE4LCAKKyAgICAxNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjM2LCAKKyAgICAyMzYsIDIxMSwgMTg2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNiwgMTQ4LCAyMTIsIAorICAgIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDEyMiwgMjM2LCAKKyAgICAyMzYsIDEwMSwgMTEyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTEyLCAyMTEsIDE4NiwgMTQ4LCAyMzksIAorICAgIDE1MSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ2LCA2MCwgCisgICAgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjM2LCAxMTQsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMjM1LCAyMSwgCisgICAgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMjIsIDEwMSwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIAorICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAKKyAgICAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjM2LCAxMTUsIAorICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzYsIDExNSwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAKKyAgICAxMDEsIDI0NSwgMjA4LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI4LCAxNDgsIAorICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKKyAgICAyNDUsIDIwOCwgMjQ1LCA5OCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI0NSwgOTgsIDEyMiwgMjA2LCAKKyAgICAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDk4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIAorICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCA0MywgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxNDgsIAorICAgIDI1MCwgMjE2LCAyMTksIDIxMiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI1MCwgMjE2LCAyMzEsIDUwLCAKKyAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgNDMsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAKKyAgICAxNDgsIDI0NSwgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjExLCAyMSwgCisgICAgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNTAsIDIxNSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAKKyAgICAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAyNDUsIDEyNywgMjEsIDEyOCwgCisgICAgMTAxLCAxNDgsIDI1MCwgMjE2LCAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjM2LCAKKyAgICAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgCisgICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyMzYsIDIzNSwgMjEsIDIzNywgMTExLCAyMzksIAorICAgIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDgsIDIxMSwgCisgICAgMTkzLCAyMSwgMjM3LCAxMTgsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDIzOSwgMTQ3LCAyMzksIAorICAgIDI1NCwgMjQ1LCAyMDgsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMDksIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAKKyAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgCisgICAgMjM5LCAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzOSwgMTQ3LCAKKyAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCisgICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIAorICAgIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAKKyAgICAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIAorICAgIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIyMCwgOCwgMjEsIDIzNywgCisgICAgMTA5LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIDEwNSwgMjM5LCAyMzMsIDIzOSwgCisgICAgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNSwgMjEsIAorICAgIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCisgICAgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIAorICAgIDExMCwgMjEsIDIzNywgMTExLCAyNDgsIDEwNCwgMjE5LCAxMzUsIDI0MCwgOTQsIDIxLCAyMzcsIDExMSwgMjM3LCA0NSwgCisgICAgMjEsIDIzNywgMTExLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDE0OCwgMjEyLCAxNTUsIDIxLCAKKyAgICAyMzcsIDExMSwgMTQ4LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTEsIDIxMSwgCisgICAgMTk0LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE3LCAyMSwgMjM3LCAxMTEsIAorICAgIDIxMSwgMTk0LCAyNDYsIDIxOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgCisgICAgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyMjcsIDg1LCAyMSwgMjM3LCAxMTcsIDIxLCAKKyAgICAyMzcsIDExOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTE4LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE4LCAKKyAgICAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMDcsIDI0NSwgOTQsIDIxLCAyMzcsIDEwNiwgMjEsIDIzNywgMTE2LCAyMjAsIDgsIAorICAgIDIxLCAyMzcsIDExNSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMTIsIAorICAgIDE1NSwgMjEsIDIzNywgMTE2LCAxNzEsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDIyMSwgMTkyLCAyMDksIAorICAgIDIxLCAyMSwgMjM3LCAxMTYsIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAxNDgsIDIzOSwgMTUxLCAyMSwgCisgICAgMjM3LCAxMTQsIDIyMCwgOCwgMjEsIDIzNywgMTEzLCAyMSwgMjM3LCAxMTksIDIxLCAyMzcsIDEwNCwgMjEsIDIzNywgMTA1LCAKKyAgICAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDUsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDUsIDE0OCwgMjM5LCAKKyAgICAxNTEsIDIxLCAyMzcsIDEwOSwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgCisgICAgMTA4LCAyMSwgMjM3LCAxMDksIDIxMiwgMzYsIDIxLCAyMzcsIDEwOSwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAKKyAgICAxMDksIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDEwOSwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKKyAgICAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxNDgsIDIxMiwgMTU2LCAyMDgsIDEyNywgMjMxLCAzNSwgMjEsIAorICAgIDIzNywgMTA5LCAxNDgsIDI0OCwgMTA0LCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMjEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKKyAgICAyMTUsIDI1MiwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIxNSwgCisgICAgMjUyLCAyMSwgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTA5LCAyMjcsIDg1LCAyMSwgMTI4LCAKKyAgICAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgCisgICAgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ1LCAyMDcsIDIxLCAxMjgsIDIyNywgODYsIDI0MiwgNzAsIDIxLCAKKyAgICAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIAorICAgIDI0NSwgODUsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE5LCAyMjAsIDI0NiwgNjAsIDIxLCAxMjgsIDIyNywgODYsIDIwNiwgCisgICAgMjI0LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAyMjcsIDg2LCAKKyAgICAyMDYsIDIyNCwgMjEsIDIzNywgMTA1LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAyMDYsIAorICAgIDIyNCwgMjEsIDEyOCwgMjI3LCA4NiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDIyNywgODYsIDI0OCwgMTE3LCAyMSwgCisgICAgMTI4LCAyMjcsIDg2LCAyMDgsIDEyOCwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKKyAgICAyMjcsIDg2LCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NiwgCisgICAgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAKKyAgICAyMzcsIDEyMiwgMjI3LCA4NiwgMTIyLCAxNDgsIDEyMiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIAorICAgIDIzNywgMTIwLCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDksIDIyNywgODYsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMiwgCisgICAgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIAorICAgIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMjE1LCAyNTIsIDIxLCAKKyAgICAyMzcsIDEyMiwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEzMSwgMjI3LCA4NSwgMjEsIAorICAgIDIzNywgMTIwLCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyNDIsIDcwLCAyMSwgCisgICAgMjM3LCAxMDksIDIxNSwgMjUzLCAxMjEsIDEyMiwgMTQ4LCAyMzYsIDExNiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMiwgMjE1LCAKKyAgICAyNTMsIDEyMSwgMTAxLCAxNDgsIDEyMiwgMjQ1LCAxMzAsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMDYsIDIyNCwgMjEsIDEyOCwgCisgICAgMjE1LCAyNTMsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAKKyAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA1LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIyLCAyMTUsIAorICAgIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNCwgMTQ4LCAyMSwgMTI4LCAyMTUsIDI1MywgMTAxLCAyNDUsIAorICAgIDIwNywgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMzEsIAorICAgIDM1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDIzNywgMTA3LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDEyOCwgCisgICAgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAKKyAgICAxMTQsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCAKKyAgICA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjMxLCA0OSwgMjEsIDIzNywgCisgICAgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMDYsIDI0NywgMjEsIDIzNywgMTE2LCAxMjIsIDIxNSwgMjUzLCAyMjcsIAorICAgIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgCisgICAgMjI3LCA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAKKyAgICAyNDIsIDcwLCAyMSwgMjM3LCAxMDksIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjAsIAorICAgIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDEwMSwgMTEyLCAxNDgsIAorICAgIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjA5LCAyMSwgMjEsIDEyOCwgMTAxLCAxNDgsIDIyNywgODUsIDIxLCAKKyAgICAxMjgsIDEwMSwgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMDEsIAorICAgIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMTQsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAKKyAgICAyMzcsIDExNiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAKKyAgICAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAKKyAgICAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCisgICAgMTIwLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIAorICAgIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjEyLCAxNTUsIAorICAgIDIxLCAyMzcsIDEwNywgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIAorICAgIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIAorICAgIDIyNywgODYsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMDksIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIAorICAgIDE1NSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAKKyAgICAyNDMsIDIyNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDE0OCwgCisgICAgMjEyLCAxNTYsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTIyLCAyNDgsIDExNywgMjEsIAorICAgIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAyNDcsIDI1MSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgCisgICAgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIzOSwgMTUyLCAxMjIsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgCisgICAgMTQ4LCAyMzksIDE1MiwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDExMywgMjEsIDEyOCwgMTIyLCAxNDgsIAorICAgIDI0NSwgOTQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIzMSwgNiwgMjEsIDIzNywgMTE4LCAxMjIsIDE0OCwgCisgICAgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIwNiwgMjQ3LCAyMSwgMTI4LCAKKyAgICAxMjIsIDE0OCwgMjQ2LCA2MSwgMjEsIDIzNywgMTE2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDExNiwgMTIyLCAxNDgsIAorICAgIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMjgsIDcsIAorICAgIDIxLCAyMzcsIDEwOSwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMTIsIDM2LCAyMSwgMjM3LCAKKyAgICAxMjIsIDEyMiwgMTQ4LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMjIsIDE0OCwgMjMxLCA0OSwgMjEsIDIzNywgMTIyLCAKKyAgICAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDE0OCwgMjM3LCA0NSwgMjEsIDEyOCwgMTQ4LCAyMTIsIAorICAgIDE1NiwgMjQzLCAyMjcsIDIxLCAxMjgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAKKyAgICAyNDgsIDExNywgMjEsIDEyOCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAyMjQsIDE0OCwgCisgICAgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMjE1LCAyNTMsIAorICAgIDIyNywgODUsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMCwgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAxMjAsIAorICAgIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjYsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAKKyAgICAyMzksIDE0NywgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAyMzksIDE0NywgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAKKyAgICAyMzcsIDExMiwgMjEsIDEyOCwgMjM3LCA0NSwgMjEsIDIwOCwgMTI5LCAyMTIsIDExOSwgMjEsIDIwOCwgMTI5LCAyMjMsIAorICAgIDIyNSwgMjEsIDIwOCwgMTI5LCAyNDgsIDEwMywgMjEsIDIzOCwgMiwgMjEyLCAxMTksIDIxLCAyMzgsIDIsIDIyMywgMjI1LCAKKyAgICAyMSwgMjM4LCAyLCAyNDgsIDEwMywgMjEsIDIxMSwgMzcsIDIxMiwgMTE5LCAyMSwgMjExLCAzNywgMjIzLCAyMjUsIDIxLCAKKyAgICAyMTEsIDM3LCAyNDgsIDEwMywgMjEsIDI0NywgMjAxLCAyMTIsIDExOSwgMjEsIDI0NywgMjAxLCAyMjMsIDIyNSwgMjEsIAorICAgIDI0NywgMjAxLCAyNDgsIDEwMywgMjEsIDIxNSwgMTQzLCAyMTIsIDExOSwgMjEsIDIxNSwgMTQzLCAyMjMsIDIyNSwgMjEsIAorICAgIDIxNSwgMTQzLCAyNDgsIDEwMywgMjEsIDIxMCwgMTg5LCAyMTAsIDEwMiwgMjEsIDIxMCwgMTg5LCAyNDgsIDEwMywgMjEsIAorICAgIDIxMSwgMTczLCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDUsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDIyOCwgCisgICAgOCwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgNSwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgMjEzLCAxMjYsIDIxLCAyMzksIAorICAgIDIwOCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCA1LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCAyMjgsIDgsIAorICAgIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDUsIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDIxMywgMTI2LCAyMSwgMjExLCAKKyAgICAxNzMsIDIzOSwgMjA4LCAyNTAsIDI1MiwgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAKKyAgICAxMjEsIDIxMiwgMzYsIDIxLCAyMjQsIDAsIDExMiwgMjEzLCAxMjYsIDIxLCAyMjQsIDAsIDEyMSwgMjEzLCAxMjYsIDIxLCAKKyAgICAyMjQsIDAsIDExMiwgMTIxLCAyNTAsIDI1MywgMjI4LCA3LCAyMSwgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIxMiwgCisgICAgMzYsIDIxLCAyMjQsIDAsIDIxMiwgMTU2LCAyMDgsIDE3MywgMjEyLCAxNTYsIDIxNCwgMTkwLCAyMSwgMjIzLCAyNTUsIAorICAgIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIAorICAgIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAKKyAgICAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDUsIDIxLCAKKyAgICAyMjMsIDI1NSwgMjEyLCAxMjAsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjExLCA1MiwgMjEsIAorICAgIDIyMywgMjU1LCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDUyLCAyNTAsIDI1MiwgMjEsIDIyMywgCisgICAgMjU1LCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCAyNDUsIDEzMCwgMjEsIDIyMywgCisgICAgMjU1LCAyMDgsIDcwLCAyMTEsIDUzLCAyMjQsIDMsIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgMjExLCAKKyAgICAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUyLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMDMsIAorICAgIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIAorICAgIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMTIsIDM2LCAKKyAgICAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyMywgCisgICAgMjU1LCAyNDUsIDE2NiwgMjE1LCAxOTYsIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgCisgICAgMjQ2LCAxNjksIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDYsIDE2OSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDk4LCAyMTIsIAorICAgIDM2LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgOTgsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAKKyAgICAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwMiwgMzAsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAKKyAgICAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMjUsIDksIAorICAgIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAKKyAgICA5OSwgMjE1LCAxOTQsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NCwgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTUsIAorICAgIDE5NSwgMjEyLCAxMTksIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDIxNSwgMTk1LCAKKyAgICAyNTAsIDI1MiwgMjEsIDIwOCwgOTksIDIxMywgNzEsIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgMjExLCAyMDIsIDIxMiwgCisgICAgMTE5LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIAorICAgIDIxMSwgMjAyLCAyMDgsIDY5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAKKyAgICAyMjUsIDksIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgCisgICAgMjI0LCAyLCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjA4LCAKKyAgICAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyOCwgNSwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIAorICAgIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjUsIDksIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAKKyAgICAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgCisgICAgMTA0LCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIAorICAgIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNSwgCisgICAgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAKKyAgICAyMjUsIDksIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIAorICAgIDUzLCAyMjgsIDUsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDUyLCAKKyAgICAyMTEsIDUyLCAyMSwgMjI0LCAxLCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTIsIAorICAgIDIxLCAyMjQsIDEsIDUyLCAyNTAsIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDUsIDEzMCwgMjEsIAorICAgIDIyNCwgMSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyMDMsIDIyMSwgMjM5LCAKKyAgICAyMTEsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMjQsIDMsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgCisgICAgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDI0OCwgMTIwLCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjEyLCAKKyAgICAzNiwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyNCwgCisgICAgMSwgMjQ2LCAxNjgsIDIxLCAyMjQsIDEsIDk4LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCA5OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAKKyAgICA5OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjUsIDksIAorICAgIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgCisgICAgMjE5LCAzMCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTksIDMwLCAyMjgsIDcsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIAorICAgIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNTAsIAorICAgIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI0MiwgNzgsIAorICAgIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCAxMDAsIDIxMywgNzEsIDIxLCAyMjMsIDI1NSwgCisgICAgMjQ1LCA4OCwgMjE3LCA1NiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjUsIDksIDIxLCAKKyAgICAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgCisgICAgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIAorICAgIDEzNiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgMTM2LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKKyAgICA4OCwgMjM3LCAxMzYsIDIyOCwgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMTIsIDM2LCAKKyAgICAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIwOSwgMjcsIDI0NiwgNjIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAKKyAgICAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjgsIDcsIAorICAgIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMjUsIDksIDIxLCAyMjMsIAorICAgIDI1NSwgMjI3LCAxNSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDUsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgCisgICAgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyNSwgCisgICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAorICAgIDI0NSwgODgsIDIwOCwgNzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgMjA4LCA3MCwgMjI1LCAKKyAgICA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIAorICAgIDg4LCAyMDksIDg0LCAyMTEsIDUyLCAyMSwgMjIzLCAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMTIsIDM2LCAyMSwgMjIzLCAKKyAgICAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMjUsIDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMTUsIDE5NCwgCisgICAgMjQyLCA3OCwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1NCwgMjEsIDIyMywgMjU1LCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAorICAgIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMzYsIDIyOSwgCisgICAgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCAyMTIsIAorICAgIDEyMCwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDUyLCAyMzYsIDIyOSwgMjM5LCAxMTksIAorICAgIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgCisgICAgMjU1LCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgCisgICAgMTQ5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKKyAgICAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgCisgICAgMTk0LCA1MiwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAxNDksIAorICAgIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCisgICAgMjQzLCAyMjgsIDIxOSwgNTIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDMsIDIyOCwgMjE5LCA1MiwgMjI4LCAKKyAgICA3LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIAorICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIAorICAgIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgCisgICAgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIAorICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAKKyAgICAyMjcsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjEyLCAKKyAgICAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCisgICAgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgCisgICAgMjI5LCAyNDYsIDIyNywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDcsIAorICAgIDIxLCAyMTUsIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIAorICAgIDI0NiwgMjI2LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMjQsIDEsIDI0NSwgCisgICAgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDIzOSwgMjA1LCAKKyAgICAyMjgsIDcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCisgICAgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgCisgICAgMjI5LCAyMzksIDIwNSwgMjA4LCA3MCwgNSwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgCisgICAgMjA1LCAyMDgsIDcwLCAyMjgsIDgsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgCisgICAgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyMTIsIDExOSwgCisgICAgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAKKyAgICAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgCisgICAgMjA1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgNywgMjEsIDIxNSwgCisgICAgMTk1LCAyMTIsIDEyMCwgMjM2LCAyMjksIDIzOSwgMjA0LCAyMSwgMjE1LCAxOTUsIDUyLCAyMzYsIDIyOSwgMjM5LCAyMDQsIAorICAgIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjEyLCAzNiwgCisgICAgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMjgsIDcsIDIxLCAyMjQsIDEsIAorICAgIDI0NSwgODgsIDIyOCwgNSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjQ1LCAyMzcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIxMiwgCisgICAgMzYsIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIxMiwgMjQsIDIxLCAyMjQsIAorICAgIDEsIDIwNCwgNzYsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIyOCwgNywgMjEsIDIxNSwgMTk1LCAyMTIsIDExOSwgCisgICAgMjEsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUyLCAyMSwgMjI0LCAxLCAyMTMsIDcyLCAyMTksIAorICAgIDgxLCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyMTIsIDExOSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgCisgICAgMjQ2LCA2MiwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDUsIDI0MiwgNzgsIAorICAgIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAKKyAgICAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgCisgICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyMjUsIDEwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAorICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgCisgICAgMjI5LCAyMDQsIDEwMCwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIAorICAgIDEwMCwgMjI1LCAxMCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgCisgICAgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjEyLCAxMTksIDIxLCAKKyAgICAyMjMsIDI1NSwgMjAzLCAyMjEsIDI0NiwgNjIsIDIzOSwgMTE5LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDMsIDIyMSwgCisgICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIDI0NiwgNjIsIAorICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDIxMiwgMTE5LCAyMSwgCisgICAgMjIzLCAyNTUsIDI0MCwgMywgMjQ2LCA1OSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIAorICAgIDIyOSwgMjA0LCAxMDAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NiwgNTksIDIzNiwgMjI5LCAyMDQsIDEwMCwgCisgICAgMjQyLCA3OCwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjEyLCAzNiwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjI4LCA3LCAyMSwgCisgICAgMjQyLCA0LCAyNDAsIDc0LCAyMSwgMjQyLCA0LCAyMTIsIDM5LCAyMSwgMjQyLCA0LCAyMDksIDE0NSwgMjEsIDI0MiwgNCwgCisgICAgMjE2LCAxMTUsIDIxLCAyNDIsIDQsIDIxMiwgMTI1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNiwgMjUwLCAyNTIsIDIxLCAyNDIsIAorICAgIDQsIDI0MCwgMjIxLCAyMTksIDIyMSwgMjA4LCAyMjEsIDIxLCAyNDIsIDQsIDIzOCwgMTIsIDIxLCAyMzcsIDY0LCAyMSwgCisgICAgMjM3LCA2NSwgMjE2LCAxLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgCisgICAgMjA4LCAyMjQsIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgMjQ1LCA4NywgCisgICAgMjEsIDIzNywgNjUsIDIyNCwgMSwgMjQ1LCA4NywgMjEsIDIzNywgNjUsIDIyNCwgNCwgMjQ2LCA2MSwgMjEsIDI0MCwgMTAzLCAKKyAgICAyNDMsIDE2NiwgMjE4LCAzNCwgMjIxLCAxNjgsIDIzOSwgMTUyLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTAzLCAyNDMsIDE2NiwgCisgICAgMjE4LCAzNCwgMjIxLCAxNjgsIDExMiwgMjE5LCAyNDUsIDI0MiwgNzAsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIDIxOCwgCisgICAgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAxMjEsIDIwOCwgMjIyLCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIwNiwgCisgICAgMjI0LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIyMiwgMjE1LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDI0MiwgNzAsIDIxLCAKKyAgICAyNDIsIDU3LCAyNDAsIDE5MCwgMjIyLCAyMTYsIDI0MiwgNzAsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTIxLCAyMjIsIAorICAgIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAxMTIsIDIyMiwgMjE1LCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgCisgICAgMjE2LCAyMDYsIDIyNCwgMjEsIDIzOSwgMTY0LCAyMjIsIDIxNSwgMjEsIDIzOSwgMTY0LCAyNDUsIDE5NywgMjEsIDIzOSwgCisgICAgMTY0LCAyMDMsIDIyNCwgMjEsIDI0MCwgMTg1LCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjExLCAxNzIsIDIxLCAyNDAsIAorICAgIDE4NSwgMjQ2LCAxNSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAyMTIsIDExOSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAKKyAgICAyMjMsIDIyNSwgMjEsIDI0MCwgMTg1LCAxNjIsIDIyMCwgOCwgMjEsIDI0MCwgMTg1LCAyMDQsIDI3LCAyMjAsIDgsIDIxLCAKKyAgICAyNDAsIDE4NSwgMTYyLCAyNDYsIDE1LCAyMSwgMjQwLCAxODUsIDIwNCwgMjUsIDIyNCwgMywgMjEsIDI0MCwgMTkyLCAyMDQsIAorICAgIDksIDIxLCAyNDAsIDE4NiwgMjA2LCAyMjQsIDIxLCAyNDAsIDE4NiwgMjQyLCA3MCwgMjEsIDI0MCwgMTg2LCAyMzksIDE5MSwgCisgICAgMjEsIDI0MCwgMTg4LCAyMTEsIDUyLCAyMSwgMjQwLCAxODgsIDIxMSwgNTMsIDI0MiwgNzgsIDIxLCAyNDAsIDE4OCwgMjExLCAKKyAgICA1MywgMjUwLCAyNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MiwgMjEsIDI0MCwgMTg5LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgCisgICAgMjQwLCAxODksIDIxMSwgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODgsIDI0NSwgODUsIDIxLCAyNDAsIDE4OSwgMjQ1LCAKKyAgICA4NSwgMjEsIDI0MCwgMTg4LCAyNDYsIDU2LCAyMSwgMjQ2LCAxNjQsIDIxNywgMTgyLCAyMSwgMjQ2LCAxNjQsIDIyMiwgCisgICAgMjE1LCAyMSwgMjQ2LCAxNjQsIDIxMCwgMjM0LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMzYsIDI0NCwgMjEsIDIwOSwgCisgICAgMTQ2LCAyNDYsIDE2NCwgMjI0LCAxNDgsIDIxLCAyMDksIDE0NiwgMjQ2LCAxNjQsIDIyNywgMCwgMjEsIDI0MSwgMTgxLCAKKyAgICAyMSwgMjIxLCAxNjgsIDIyMiwgMjE1LCAyMSwgMjIxLCAxNjgsIDI0NSwgMTk3LCAyMSwgMjIxLCAxNjgsIDIwMywgMjIyLCAKKyAgICAyMSwgMjIxLCAxNjgsIDIwNCwgMjIsIDIxLCAyNTEsIDU1LCAyNDgsIDI3LCAyMTksIDIxMSwgMjEsIDI1MSwgNTUsIDIxMCwgCisgICAgMjMzLCAyMzEsIDQ5LCAyMSwgMjUxLCA1NSwgMjQ4LCAyOSwgNSwgMjE1LCAxOTMsIDIxLCAyNTEsIDU1LCAyMTAsIDIzNSwgCisgICAgNSwgMjE1LCAxOTMsIDIxLCAyNDcsIDIxNiwgMjMxLCAyMiwgMjEsIDI0NywgMjE2LCAyNDAsIDIxMCwgMjEsIDIyNCwgOCwgCisgICAgMjQ2LCAxNiwgMjIyLCAyMTUsIDIxLCAyMjQsIDgsIDI0NiwgMTYsIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAKKyAgICAyNDUsIDE5NywgMjEsIDIyNCwgOCwgMjEyLCAzMSwgMjEsIDIyNCwgOCwgMjEyLCAzMiwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIAorICAgIDIxMiwgMzIsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMjM5LCAxMTUsIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMDMsIDIyNCwgCisgICAgMjEsIDIyNCwgOCwgMjM5LCAxMTYsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMTcxLCAyNDYsIDYxLCAyMSwgMjI0LCA4LCAxNzEsIAorICAgIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAxNzEsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIDIxOSwgMjA0LCAyMSwgMjI0LCAKKyAgICA4LCAxNzEsIDIxOSwgMjA1LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCA1OSwgMjEsIDIyNCwgCisgICAgOCwgMTcxLCAyMTYsIDE0MywgMjEsIDIyNCwgOCwgMTcxLCAyMTYsIDE0NCwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgCisgICAgMjE2LCAxNDQsIDIwMywgNTksIDIxLCAyMjQsIDgsIDIyOSwgNjYsIDIxLCAyMjQsIDgsIDIyOSwgNjcsIDIzOSwgMTUxLCAKKyAgICAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMjA5LCAxNDUsIDIxLCAyMjQsIDgsIDIwOSwgCisgICAgMTQ2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjA5LCAxNDYsIDIxMCwgMjM0LCAyMSwgMjI3LCA5OSwgMjE3LCAyMzksIAorICAgIDIwOCwgMTY5LCAyMSwgMjI3LCAxMDEsIDIyNiwgMjUxLCAxMTUsIDIwNiwgMjIwLCAyMSwgMjI3LCAxMDEsIDIwNiwgMjIxLCAKKyAgICAxMTUsIDIyNiwgMjUwLCAyMSwgMjI0LCA4LCAyNDUsIDE2NCwgMjEsIDIyNCwgOCwgMjAzLCAyMjMsIDIxMiwgMTE5LCAyMSwgCisgICAgMjI0LCA4LCAyMDMsIDIyMywgMjQyLCA3OCwgMjEsIDIwOCwgMTUxLCAyMTEsIDcyLCAyMTksIDIxMiwgMjQwLCA3NiwgMjEsIAorICAgIDIwOCwgMTUxLCAyMjcsIDE0NCwgMjI3LCA5OCwgMjEsIDIwOCwgMTUxLCAyMDgsIDIxMSwgMjQ4LCAxMDQsIDIyNywgOTgsIAorICAgIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDIwOCwgMTI3LCAyMzEsIDcsIDIyNCwgNywgMjEsIDIwOCwgMTUxLCAyMzEsIDcsIAorICAgIDIyNCwgOCwgMjE2LCAxMTUsIDIxLCAyMDgsIDE1MSwgMjIzLCAyNTQsIDI1MSwgNzksIDI0NiwgMTY1LCAyMSwgMjA4LCAKKyAgICAxNTEsIDI0NiwgMjE4LCAyMTEsIDcyLCAyMTksIDIxMSwgMjEsIDIwOCwgMTUxLCAyNDYsIDIxOCwgMjMxLCA3LCAyMjQsIDcsIAorICAgIDIxLCAyMDksIDE3MiwgMjEsIDIwOSwgMTczLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTAsIDIxLCAKKyAgICAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTEsIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk4LCAyMSwgCisgICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIyNywgOTksIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyNDgsIDUwLCAyMjcsIDk4LCAyMSwgCisgICAgMjIzLCAyNTUsIDIzMCwgMTY1LCAyMSwgMjI0LCAxLCAyMzAsIDE2NSwgMjEsIDIyMiwgMjM3LCAyMSwgMjM3LCAxNDUsIDIxLCAKKyAgICAyNDAsIDIxMywgMjEsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjExLCAyMDMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxOCwgCisgICAgMzMsIDIxLCAyMDQsIDk4LCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIyNCwgNiwgMjEsIDIzOSwgMjAzLCAyMTIsIDIxMSwgMjM2LCAKKyAgICAyMzQsIDIyNCwgNiwgMjEsIDIxMiwgMjExLCAyMDgsIDIyMywgMjM5LCAxMjAsIDIwNCwgMTA0LCAyMSwgMjA4LCAxMzQsIAorICAgIDIxMSwgNTMsIDIxMSwgNDEsIDIxLCAyMDgsIDEzNCwgMjQ1LCA4NiwgMjQ4LCAxMjAsIDIxLCAyMDgsIDEzNSwgMjA3LCAKKyAgICAxMzcsIDIxLCAyMDYsIDIyMSwgMjQ4LCAxOCwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMzYsIDIzNCwgMjMwLCA5NSwgMjEsIAorICAgIDIyNywgMTI2LCAyNDUsIDIzOCwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NSwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NCwgMjEsIAorICAgIDIyNywgMTI2LCAyMjcsIDE5MywgMjEsIDIyNywgMTI2LCAyMjcsIDE5MiwgMjEsIDIyNywgMTI2LCAyMjcsIDE5MSwgMjEsIAorICAgIDIyNywgMTI2LCAyMjcsIDE5MCwgMjEsIDIyNywgMTI2LCAyMjcsIDE4OSwgMjEsIDI0MCwgMiwgMjEsIDIyNywgNDUsIDIxMSwgCisgICAgMjI4LCAyMSwgMjI3LCA0NiwgMjExLCAyMjgsIDIxLCAyMjcsIDQ3LCAyMzcsIDQxLCAyMSwgMjI3LCA0NywgMjA0LCAyMywgCisgICAgMjEsIDIyNywgNDcsIDI0NCwgMjQsIDIxLCAyMjcsIDQ3LCAyMzcsIDY1LCAyMjIsIDIzNywgMjEsIDIyNywgNDcsIDIwOCwgCisgICAgMTM2LCAyMSwgMjI3LCA0NywgMjI3LCAxMjUsIDI0MywgMTk4LCAyMSwgMjQ1LCAyMzMsIDIxLCAyMzksIDEwMiwgMjExLCAKKyAgICA2MSwgMjEsIDIxMywgMTQzLCAyMSwgMjQ1LCAyNDIsIDIxLCAyMTksIDc2LCAyMSwgMjQwLCAxMCwgMjI0LCA2NiwgMjEsIAorICAgIDI0MCwgMTAsIDIyNCwgNjUsIDIxLCAyNDAsIDEwLCAyMjQsIDY0LCAyMSwgMjQwLCAxMCwgMjI0LCA2MywgMjEsIDI0MCwgCisgICAgMTAsIDIyNCwgNjIsIDIxLCAyMTUsIDE5NywgMjI0LCA2NiwgMjEsIDIxNSwgMTk3LCAyMjQsIDY1LCAyMSwgMjE1LCAxOTcsIAorICAgIDIyNCwgNjQsIDIxLCAyMTUsIDE5NywgMjI0LCA2MywgMjEsIDIxNSwgMTk3LCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgCisgICAgNjEsIDIxLCAyMTUsIDE5NywgMjI0LCA2MCwgMjEsIDIxNSwgMTk3LCAyMjQsIDU5LCAyMSwgMjE1LCAxOTcsIDIyNCwgNzMsIAorICAgIDIxLCAyMTUsIDE5NywgMjI0LCA3MiwgMjEsIDIxNSwgMTk3LCAyMjQsIDcxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNzAsIDIxLCAKKyAgICAyMTUsIDE5NywgMjI0LCA2OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDY4LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjcsIDczLCA3MiwgCisgICAgNCwgMjI2LCAxODQsIDIyOSwgMTAwLCA3MywgNzIsIDQsIDIyNiwgMTgwLCAxNzMsIDczLCA3MiwgNCwgMjI2LCAxNzgsIAorICAgIDIyOCwgMjA5LCA3MywgNzIsIDQsIDIyNiwgNTQsIDIyOSwgMTk4LCA3MywgNzIsIDQsIDIyNiwgMjQsIDIyOSwgMjAxLCA3MywgCisgICAgNzIsIDQsIDIyNiwgNDMsIDIyOSwgNiwgNzMsIDcyLCA0LCAyMjYsIDcxLCAyMjksIDI2LCA3MywgNzIsIDQsIDIyNSwgMTk2LCAKKyAgICAyMjgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDE3NSwgMjA0LCAzMCwgNzMsIDcyLCA0LCAyMjYsIDE3MywgMjA0LCAxMTEsIAorICAgIDczLCA3MiwgNCwgMjI2LCAxNzEsIDIwMywgMjE3LCA3MywgNzIsIDQsIDIyNSwgMjQ5LCAyMDQsIDU1LCA3MywgNzIsIDQsIAorICAgIDIyNiwgMSwgMjA0LCA2MiwgNzMsIDcyLCA0LCAyMjYsIDUsIDIwMywgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNzQsIDIwNCwgMCwgCisgICAgNzMsIDcyLCA0LCAyMjUsIDE4MSwgMjAzLCAyMTMsIDczLCA3MiwgNCwgMjI1LCAyMzIsIDIwNCwgNTMsIDczLCA3MiwgNCwgCisgICAgMjI2LCA1OCwgMjAzLCAyMDEsIDczLCA3MiwgNCwgMjI2LCA3MCwgMjAzLCAyMDMsIDczLCA3MiwgNCwgMjI1LCAyMzYsIAorICAgIDIwMywgMjAyLCA3MywgNzIsIDQsIDIyNiwgMTY5LCAyMjQsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDE2NywgMjI1LCAxMjIsIAorICAgIDczLCA3MiwgNCwgMjI2LCAxNjUsIDIyMywgMjE5LCA3MywgNzIsIDQsIDIyNiwgNjAsIDIyNCwgMjQwLCA3MywgNzIsIDQsIAorICAgIDIyNiwgMjUsIDIyNCwgNTQsIDczLCA3MiwgNCwgMjI1LCAyMjEsIDIyMywgMjQzLCA3MywgNzIsIDQsIDIyNSwgMTg2LCAKKyAgICAyMjMsIDIzNywgNzMsIDcyLCA0LCAyMjYsIDE2MywgMjQ4LCA4NiwgNzMsIDcyLCA0LCAyMjYsIDE2MCwgMjQ5LCAzMiwgNzMsIAorICAgIDcyLCA0LCAyMjYsIDE1OCwgMjQ3LCAxOTMsIDczLCA3MiwgNCwgMjI1LCAyMjUsIDI0OCwgMTUwLCA3MywgNzIsIDQsIDIyNiwgCisgICAgMjIsIDI0OCwgMTYyLCA3MywgNzIsIDQsIDIyNiwgMTYsIDI0OCwgMTAsIDczLCA3MiwgNCwgMjI1LCAyMzcsIDI0OCwgMjMsIAorICAgIDczLCA3MiwgNCwgMjI2LCAxNDgsIDc1LCA3MywgNzIsIDQsIDIyNiwgMTQ2LCA2MywgNzMsIDcyLCA0LCAyMjYsIDE0NCwgCisgICAgNjgsIDczLCA3MiwgNCwgMjI1LCAyMTIsIDI0MSwgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTksIDc0LCA3MywgNzIsIDQsIAorICAgIDIyNSwgMjEwLCAyMjAsIDE4LCA3MywgNzIsIDQsIDIyNSwgMjI4LCA3OCwgNzMsIDcyLCA0LCAyMjUsIDIzOCwgMjQxLCAKKyAgICAxNDUsIDczLCA3MiwgNCwgMjI1LCAyNDQsIDIzMSwgNDksIDczLCA3MiwgNCwgMjI1LCAyNDAsIDIzMSwgNDksIDczLCA3MiwgCisgICAgNCwgMjI1LCAxODAsIDI1MCwgMjMxLCA3MywgNzIsIDQsIDIyNSwgMTk3LCAyNDEsIDkyLCA3MywgNzIsIDQsIDIyNiwgMTMzLCAKKyAgICAyMTIsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDEzMSwgMjE1LCAzNiwgNzMsIDcyLCA0LCAyMjYsIDEyOSwgMjExLCAxMCwgNzMsIAorICAgIDcyLCA0LCAyMjUsIDIxMywgMjE0LCAxNjUsIDczLCA3MiwgNCwgMjI2LCAzLCAyMTQsIDE3NywgNzMsIDcyLCA0LCAyMjUsIAorICAgIDIzOSwgMjExLCAyNTAsIDczLCA3MiwgNCwgMjI2LCA0MCwgMjEyLCAxMywgNzMsIDcyLCA0LCAyMjUsIDE3OSwgMjEyLCAKKyAgICAxNjEsIDczLCA3MiwgNCwgMjI2LCAxMTksIDIyNywgMTQ4LCA3MywgNzIsIDQsIDIyNiwgMTE3LCAyMjgsIDExMywgNzMsIAorICAgIDcyLCA0LCAyMjYsIDExNSwgMjI2LCAyMzksIDczLCA3MiwgNCwgMjI2LCAzNSwgMjI3LCAyMjYsIDczLCA3MiwgNCwgMjI2LCAKKyAgICA0NiwgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCA2NSwgMjI3LCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyMiwgMjI3LCA0OSwgCisgICAgNzMsIDcyLCA0LCAyMjYsIDksIDE2MywgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCAxNDEsIDI0MywgMjMzLCA3MywgNzIsIAorICAgIDQsIDIyNiwgMTM4LCAyNDQsIDIxMiwgNzMsIDcyLCA0LCAyMjYsIDEzNSwgMjQyLCA0MiwgNzMsIDcyLCA0LCAyMjYsIDMwLCAKKyAgICAyNDQsIDYxLCA3MywgNzIsIDQsIDIyNSwgMTk1LCAyNDMsIDkwLCA3MywgNzIsIDQsIDIyNSwgMTk0LCAyNDMsIDExMywgNzMsIAorICAgIDcyLCA0LCAyMjYsIDEyNywgMjA5LCAyLCA3MywgNzIsIDQsIDIyNiwgMTI0LCAyMTAsIDIyLCA3MywgNzIsIDQsIDIyNiwgCisgICAgMTIyLCAyMDcsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDI4LCAyMDksIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDY0LCAyMDksIAorICAgIDE4NywgNzMsIDcyLCA0LCAyMjYsIDE1LCAyMDgsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDUwLCAxMzUsIDczLCA3MiwgNCwgCisgICAgMjI2LCAxMTMsIDIzMCwgMTQxLCA3MywgNzIsIDQsIDIyNiwgMTEwLCAyMzAsIDE4MSwgNzMsIDcyLCA0LCAyMjYsIDEwOCwgCisgICAgMjMwLCA4MiwgNzMsIDcyLCA0LCAyMjUsIDIxOCwgMjMwLCAxNTksIDczLCA3MiwgNCwgMjI2LCA2LCAyMzAsIDE2MSwgNzMsIAorICAgIDcyLCA0LCAyMjUsIDIxNSwgMjMwLCA5MSwgNzMsIDcyLCA0LCAyMjYsIDU2LCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjUsIAorICAgIDIwMCwgMTYzLCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjYsIDEwNiwgMjAzLCAxMSwgNzMsIDcyLCA0LCAyMjYsIDEwMywgCisgICAgMTk4LCA3MywgNzIsIDQsIDIyNiwgMTAxLCAyMDIsIDIxMywgNzMsIDcyLCA0LCAyMjYsIDEwLCAyMDMsIDQ5LCA3MywgNzIsIAorICAgIDQsIDIyNiwgMzksIDIwMywgNTIsIDczLCA3MiwgNCwgMjI1LCAyMzQsIDIwMiwgMjMyLCA3MywgNzIsIDQsIDIyNSwgMjU0LCAKKyAgICAyMDIsIDI0NywgNzMsIDcyLCA0LCAyMjYsIDk3LCAyNDAsIDI2LCA3MywgNzIsIDQsIDIyNiwgOTUsIDI0MCwgMTA4LCA3MywgCisgICAgNzIsIDQsIDIyNiwgOTMsIDIzOSwgMTA4LCA3MywgNzIsIDQsIDIyNiwgNDEsIDI0MCwgNTMsIDczLCA3MiwgNCwgMjI2LCAKKyAgICA0NCwgMjQwLCA2MCwgNzMsIDcyLCA0LCAyMjUsIDI0MiwgMjM5LCAxNzUsIDczLCA3MiwgNCwgMjI2LCAzMSwgMjM5LCAxODYsIAorICAgIDczLCA3MiwgNCwgMjI1LCAxNzgsIDIzOSwgMTA3LCA3MywgNzIsIDQsIDIyNiwgMTgsIDI0MCwgODEsIDczLCA3MiwgNCwgCisgICAgMjI2LCA5MSwgMjIyLCA2OCwgNzMsIDcyLCA0LCAyMjYsIDg5LCAyMjMsIDgzLCA3MywgNzIsIDQsIDIyNiwgODcsIDIyMSwgCisgICAgNDAsIDczLCA3MiwgNCwgMjI2LCAyLCAyMjIsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDIwNiwgMjIxLCAxODUsIDczLCA3MiwgCisgICAgNCwgMjI1LCAxOTksIDIzNywgMywgNzMsIDcyLCA0LCAyMjYsIDgyLCAxNTIsIDczLCA3MiwgNCwgMjI1LCAxODksIDIzNiwgCisgICAgMjYsIDczLCA3MiwgNCwgMjI2LCA4NSwgMjM3LCA0OCwgNzMsIDcyLCA0LCAyMjYsIDIzLCAyMzcsIDY3LCA3MywgNzIsIDQsIAorICAgIDIyNiwgODAsIDIzNiwgMTE3LCA3MywgNzIsIDQsIDIyNSwgMjM1LCAyMzYsIDEzNiwgNzMsIDcyLCA0LCAyMjYsIDM2LCAKKyAgICAyMzcsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjQ3LCAyMzYsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDY2LCAyMzYsIDIzOCwgNzMsIAorICAgIDcyLCA0LCAyMjUsIDI0NSwgMjM3LCAxMjYsIDczLCA3MiwgNCwgMjI2LCAzMiwgMjM2LCAxMywgNzMsIDcyLCA0LCAyMjYsIAorICAgIDY3LCAyMzcsIDMzLCA3MywgNzIsIDQsIDIyNSwgMTgyLCAyMzYsIDEyMCwgNzMsIDcyLCA0LCAyMjYsIDczLCAyMzYsIDI1LCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMjksIDIyMiwgMTY4LCA3MywgNzIsIDQsIDIyNiwgNzgsIDIyMiwgMTgyLCA3MywgNzIsIDQsIAorICAgIDIyNiwgMzcsIDIyMiwgMTY1LCA3MywgNzIsIDQsIDIyNiwgNCwgMjIyLCAxNzYsIDczLCA3MiwgNCwgMjI1LCAyMjksIDIyMiwgCisgICAgMTc3LCA3MywgNzIsIDQsIDIyNSwgMjE5LCAyMjIsIDE2NiwgNzMsIDcyLCA0LCAyMjUsIDI1NSwgMjIyLCAxNjcsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyMTYsIDIyMiwgMTgxLCA3MywgNzIsIDQsIDIyNSwgMjQ4LCAyMjIsIDE2NCwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDMzLCAxNjMsIDIyMiwgMTc3LCA3MywgNzIsIDQsIDIyNiwgMTMsIDE2MywgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAxOTIsIDE2MywgMjIyLCAxNjcsIDczLCA3MiwgNCwgMjI1LCAyMjAsIDIzOCwgODEsIDczLCA3MiwgNCwgMjI2LCA4LCAyMzksIAorICAgIDgsIDczLCA3MiwgNCwgMjI1LCAyMDcsIDIzNywgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTg1LCAyMzgsIDE4MiwgNzMsIDcyLCAKKyAgICA0LCAyMjUsIDIwOSwgMjM3LCAyMTYsIDczLCA3MiwgNCwgMjI1LCAyMDgsIDIzNywgMjI2LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMTkxLCAyMjIsIDE4NywgNzMsIDcyLCA0LCAyMjYsIDYyLCAyMjIsIDEyNCwgNzMsIDcyLCA0LCAyMjUsIDE5OCwgMjIyLCAKKyAgICAxMTMsIDczLCA3MiwgNCwgMjI2LCA1MSwgMjE4LCAxNjcsIDczLCA3MiwgNCwgMjI2LCAyMCwgMTg1LCA3MywgNzIsIDQsIAorICAgIDIyNiwgNjksIDIxNywgMTkxLCA3MywgNzIsIDQsIDIyNiwgMzgsIDIxOSwgMjMsIDczLCA3MiwgNCwgMjI2LCA2OCwgMjE5LCAKKyAgICAzNCwgNzMsIDcyLCA0LCAyMjYsIDE3LCAyMTgsIDQ1LCA3MywgNzIsIDQsIDIyNiwgNTMsIDIxOCwgNjksIDczLCA3MiwgNCwgCisgICAgMjI1LCAyMzAsIDIyNSwgMzksIDczLCA3MiwgNCwgMjI2LCA1NywgMjI1LCA1NCwgNzMsIDcyLCA0LCAyMjUsIDI1MywgMjI1LCAKKyAgICAzMywgNzMsIDcyLCA0LCAyMjYsIDcyLCAyMjUsIDQ2LCA3MywgNzIsIDQsIDIyNSwgMTg3LCAyMjUsIDQ2LCA3MywgNzIsIDQsIAorICAgIDIyNiwgNDcsIDIyNSwgNDcsIDczLCA3MiwgNCwgMjI1LCAyMDMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMDEsIDIyNSwgCisgICAgMzUsIDczLCA3MiwgNCwgMjI1LCAxODgsIDIyNSwgMjcsIDczLCA3MiwgNCwgMjI1LCAyMTQsIDE2MywgMjI1LCA0NywgNzMsIAorICAgIDcyLCA0LCAyMjYsIDE0LCAxNjMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMzMsIDE2MywgMjI1LCAzNSwgNzMsIDcyLCAKKyAgICA0LCAyMjUsIDI0MywgMjI4LCAyMzYsIDczLCA3MiwgNCwgMjI2LCAyNywgMjI4LCAyNDQsIDczLCA3MiwgNCwgMjI2LCA0NSwgCisgICAgMjI4LCAyMzIsIDczLCA3MiwgNCwgMjI2LCA3NiwgMjI4LCAyMzksIDczLCA3MiwgNCwgMjI2LCAxMSwgMjI4LCAyNDAsIDczLCAKKyAgICA3MiwgNCwgMjI2LCA3LCAyMjgsIDIzNCwgNzMsIDcyLCA0LCAyMjUsIDIxNywgMjI4LCAyMzUsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAyNTEsIDIzOCwgMTk5LCA3MywgNzIsIDQsIDIyNiwgNjMsIDIzOCwgMjA3LCA3MywgNzIsIDQsIDIyNSwgMjI3LCAyMzgsIAorICAgIDE5NCwgNzMsIDcyLCA0LCAyMjYsIDI2LCAyMzgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDEyLCAyMzgsIDIwNCwgNzMsIDcyLCAKKyAgICA0LCAyMjYsIDQ4LCAyMzgsIDE5NSwgNzMsIDcyLCA0LCAyMjYsIDQ5LCAyMzgsIDE5NywgNzMsIDcyLCA0LCAyMjUsIDIwNCwgCisgICAgMjE2LCAyMjAsIDczLCA3MiwgNCwgMjI1LCAyNTIsIDIyMywgMTAsIDczLCA3MiwgNCwgMjI1LCAyNDYsIDIyMywgMjUsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyNTAsIDIyMiwgMjQ4LCA3MywgNzIsIDQsIDIyNSwgMTg0LCAyMjMsIDE2LCA3MywgNzIsIDQsIDIyNiwgCisgICAgMCwgMjIzLCAxNywgNzMsIDcyLCA0LCAyMjYsIDUyLCAyMjIsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU1LCAyMjMsIDEsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyMjMsIDIyMiwgNDgsIDczLCA3MiwgNCwgMjI1LCAxODMsIDIyMiwgMTgsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAyMjYsIDIyMiwgMzksIDczLCA3MiwgNCwgMjI1LCAyNDEsIDIyMiwgMjIsIDczLCA3MiwgNCwgMjI1LCAxOTMsIDIwNSwgCisgICAgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTkwLCAyMDYsIDg2LCA3MywgNzIsIDQsIDIyNSwgMjI0LCAyMDQsIDE2MywgNzMsIDcyLCAKKyAgICA0LCAyMjUsIDIwMiwgMjA2LCA1MCwgNzMsIDcyLCA0LCAyMjYsIDM0LCAyMDYsIDU1LCA3MywgNzIsIDQsIDIyNSwgMjMxLCAKKyAgICAyMDUsIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDQyLCAyMDUsIDE4OSwgNzMsIDcyLCA0LCAyMjUsIDIxMSwgMjIwLCAyNDIsIAorICAgIDczLCA3MiwgNCwgMjI2LCA2MSwgMjIxLCA1LCA3MywgNzIsIDQsIDIyNSwgMjA1LCAyMjAsIDIyNCwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDIxLCAyMjAsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU5LCAyMjAsIDIzMSwgNzMsIDcyLCAxNywgMTA1LCA3MywgNzIsIAorICAgIDE3LCAxMDgsIDczLCA3MiwgMTcsIDE0NywgNzMsIDcyLCAxNywgMTQ5LCA3MywgNzIsIDE3LCAxNzAsIDczLCA3MiwgMTcsIAorICAgIDE5NSwgNzMsIDcyLCAxNywgMjEzLCAxMTEsIDczLCA3MiwgMTcsIDE5OSwgNzMsIDcyLCAxNywgMjIyLCA2MywgNzMsIDcyLCAKKyAgICAzOSwgNDIsIDIwOSwgMTc0LCA3MywgNzIsIDM5LCA0MiwgMjA5LCAxNDcsIDczLCA3MiwgMzksIDQyLCAyMzYsIDEwLCA3MywgCisgICAgNzIsIDM5LCA0MiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTUzLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgCisgICAgMjM2LCAxMiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIyNCwgMTEzLCAxMCwgMTMsIDI1MSwgMzAsIDEwLCAxMywgMjQ4LCAKKyAgICAxMzgsIDEwLCAxMywgMjMwLCAxNTgsIDEwLCAxMywgMjQ0LCAxODQsIDEwLCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMDIsIAorICAgIDEwNywgMTAsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMDMsIDQ3LCAxMCwgMTMsIDIzMCwgCisgICAgMjIsIDEwLCAxMywgMjI4LCAyOCwgMTAsIDEzLCAyMjUsIDUsIDEwLCAxMywgMjIxLCAxNzgsIDEwLCAxMywgMjE0LCAxNjEsIAorICAgIDEwLCAxMywgMjUxLCA1OSwgMTAsIDEzLCAyNDAsIDQ3LCAxMCwgMTMsIDIxNSwgMjgsIDEwLCAxMywgMjE3LCAxMTksIDEwLCAKKyAgICAxMywgMjE2LCAxMjIsIDEwLCAxMywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDE2OSwgMTAsIDEzLCAyMDksIDg4LCAxMCwgMTMsIAorICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMTAwLCAxMCwgMTMsIDI0NCwgMjA3LCAxMCwgMTMsIDIwMiwgMTEwLCAxMCwgMTMsIAorICAgIDIzOCwgMTE0LCAxMCwgMTMsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgMTMsIAorICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjQzLCA4NCwgMjE3LCAxMTksIDEwLCAxMywgODEsIDI0OCwgMTM4LCAxMCwgCisgICAgMTMsIDgxLCAyMzAsIDE1OCwgMTAsIDEzLCA4MSwgMjM3LCA0MywgMTAsIDEzLCA4MSwgMjM3LCAxNDgsIDEwLCAxMywgODEsIAorICAgIDIwMywgNDcsIDEwLCAxMywgODEsIDIzMCwgMjIsIDEwLCAxMywgODEsIDIyOCwgMjgsIDEwLCAxMywgODEsIDIyNSwgNSwgCisgICAgMTAsIDEzLCA4MSwgMjIxLCAxNzgsIDEwLCAxMywgODEsIDIxNCwgMTYxLCAxMCwgMTMsIDgxLCAyNTEsIDU5LCAxMCwgMTMsIAorICAgIDgxLCAyNDAsIDQ3LCAxMCwgMTMsIDgxLCAyMTUsIDI4LCAxMCwgMTMsIDgxLCAyMTcsIDExOSwgMTAsIDEzLCA4MSwgMjEzLCAKKyAgICAzOSwgMTAsIDEzLCA4MSwgMjA5LCAxNjksIDEwLCAxMywgODEsIDIwOSwgODgsIDEwLCAxMywgODEsIDIyOSwgMTQwLCAxMCwgCisgICAgMTMsIDgxLCAyNDQsIDIwNywgMTAsIDEzLCA4MSwgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDIzMCwgMTU4LCAxMCwgCisgICAgMTMsIDIwOSwgMjQ3LCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI0NywgMjAzLCA0NywgMTAsIDEzLCAyMDksIDI0NywgMjI4LCAKKyAgICAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjIxLCAxNzgsIDEwLCAxMywgMjA5LCAyNDcsIDIxNCwgMTYxLCAxMCwgMTMsIDIwOSwgCisgICAgMjQ3LCAyNTEsIDU5LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTUsIDI4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTcsIDExOSwgMTAsIAorICAgIDEzLCAyMDksIDI0NywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDI0NywgMjI5LCAxNDAsIDEwLCAxMywgMjA5LCAyNDcsIDI0NCwgCisgICAgMjA3LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzgsIDExNCwgMTAsIDEzLCAyMDksIDI0NywgMjQzLCA4NCwgMjIxLCAxNzgsIDEwLCAKKyAgICAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDIxMSwgNDAsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgCisgICAgNDAsIDIzMCwgMTU4LCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgNDMsIDEwLCAxMywgMjExLCA0MCwgMjM3LCAxNDgsIDEwLCAKKyAgICAxMywgMjExLCA0MCwgMjA5LCAyNTEsIDEwLCAxMywgMjExLCA0MCwgMjAzLCA0NywgMTAsIDEzLCAyMTEsIDQwLCAyMzAsIAorICAgIDIyLCAxMCwgMTMsIDIxMSwgNDAsIDIyNSwgNSwgMTAsIDEzLCAyMTEsIDQwLCAyMjEsIDE3OCwgMTAsIDEzLCAyMTEsIDQwLCAKKyAgICAyMTQsIDE2MSwgMTAsIDEzLCAyMTEsIDQwLCAyNTEsIDU5LCAxMCwgMTMsIDIxMSwgNDAsIDI0MCwgNDcsIDEwLCAxMywgCisgICAgMjExLCA0MCwgMjE1LCAyOCwgMTAsIDEzLCAyMTEsIDQwLCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyMTMsIDM5LCAKKyAgICAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgMTY5LCAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgODgsIDEwLCAxMywgMjExLCA0MCwgCisgICAgMjI5LCAxNDAsIDEwLCAxMywgMjExLCA0MCwgMjQ0LCAyMDcsIDEwLCAxMywgMjExLCA0MCwgMjAyLCAxMTAsIDEwLCAxMywgCisgICAgMjExLCA0MCwgMjM4LCAxMTQsIDEwLCAxMywgMjExLCA0MCwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxMywgMjExLCA0MCwgCisgICAgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDIyNywgMTMsIDI0OCwgMTM4LCAKKyAgICAxMCwgMTMsIDIyNywgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDIyNywgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIyNywgMTMsIAorICAgIDIzNywgNDMsIDEwLCAxMywgMjI3LCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDEwNywgMTAsIDEzLCAKKyAgICAyMjcsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMjcsIDEzLCAyMDMsIDQ3LCAKKyAgICAxMCwgMTMsIDIyNywgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI3LCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyNywgMTMsIDIyMSwgCisgICAgMTc4LCAxMCwgMTMsIDIyNywgMTMsIDIxNCwgMTYxLCAxMCwgMTMsIDIyNywgMTMsIDI1MSwgNTksIDEwLCAxMywgMjI3LCAKKyAgICAxMywgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIxNywgMTE5LCAxMCwgMTMsIAorICAgIDIyNywgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIyNywgMTMsIDIxMywgMzksIDEwLCAxMywgMjI3LCAxMywgMjA5LCAxNjksIAorICAgIDEwLCAxMywgMjI3LCAxMywgMjA5LCA4OCwgMTAsIDEzLCAyMjcsIDEzLCAyMjksIDE0MCwgMTAsIDEzLCAyMjcsIDEzLCAKKyAgICAyMDksIDEwMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKKyAgICAyMjcsIDEzLCAyMzgsIDExNCwgMTAsIDEzLCAxNjksIDI0OCwgMTM4LCAxMCwgMTMsIDE2OSwgMjMwLCAxNTgsIDEwLCAxMywgCisgICAgMTY5LCAyNDQsIDE4NCwgMTAsIDEzLCAxNjksIDIwNCwgNzAsIDEwLCAxMywgMTY5LCAyMDIsIDEwNywgMTAsIDEzLCAxNjksIAorICAgIDIzNywgMTQ4LCAxMCwgMTMsIDE2OSwgMjA5LCAyNTEsIDEwLCAxMywgMTY5LCAyMDMsIDQ3LCAxMCwgMTMsIDE2OSwgMjI4LCAKKyAgICAyOCwgMTAsIDEzLCAxNjksIDIyNSwgNSwgMTAsIDEzLCAxNjksIDIyMSwgMTc4LCAxMCwgMTMsIDE2OSwgMjE0LCAxNjEsIAorICAgIDEwLCAxMywgMTY5LCAyNTEsIDU5LCAxMCwgMTMsIDE2OSwgMjQwLCA0NywgMTAsIDEzLCAxNjksIDIxNSwgMjgsIDEwLCAxMywgCisgICAgMTY5LCAyMTcsIDExOSwgMTAsIDEzLCAxNjksIDIxNiwgMTIyLCAxMCwgMTMsIDE2OSwgMjEzLCAzOSwgMTAsIDEzLCAxNjksIAorICAgIDIwOSwgMTY5LCAxMCwgMTMsIDE2OSwgMjA5LCA4OCwgMTAsIDEzLCAxNjksIDIyOSwgMTQwLCAxMCwgMTMsIDE2OSwgMjA5LCAKKyAgICAxMDAsIDEwLCAxMywgMTY5LCAyNDQsIDIwNywgMTAsIDEzLCAxNjksIDIwMiwgMTEwLCAxMCwgMTMsIDE2OSwgMjM4LCAxMTQsIAorICAgIDEwLCAxMywgMjE5LCAyNTUsIDgzLCAzLCAxNTEsIDMsIDIwOSwgMjA5LCAxMCwgMTMsIDIxOSwgMjU1LCAxNTEsIDMsIDI0NCwgCisgICAgMTg0LCAyMjUsIDE0MiwgOTksIDI0MSwgMTc2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDIxMSwgMjM4LCAyMDQsIDE2LCAKKyAgICAyMjUsIDE0MiwgOTksIDIwNCwgNDYsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgMTUzLCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIAorICAgIDIxNiwgMTM4LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDIzNywgMjQ0LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDYxLCAKKyAgICAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIDI0NiwgCisgICAgMTgxLCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKKyAgICAxODEsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgCisgICAgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgCisgICAgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAKKyAgICAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDgsIAorICAgIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgCisgICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCAKKyAgICA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMjIsIAorICAgIDY0LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAKKyAgICAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDYsIAorICAgIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgMjQ2LCAKKyAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDYsIAorICAgIDU4LCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIxOCwgNzksIDIyNSwgMTQyLCAKKyAgICA5OSwgMjE5LCAyNDIsIDIyNSwgMTQyLCA5OSwgMjQ4LCAyNDQsIDIyNSwgMTQyLCA5OSwgMjQ2LCA5OSwgMjI1LCAxNDIsIAorICAgIDk5LCAyMTEsIDE4MywgMjI1LCAxNDIsIDk5LCAyMTAsIDIxNiwgMjI1LCAxNDIsIDk5LCAyNTAsIDIxLCAyMjUsIDE0MiwgCisgICAgOTksIDIwNCwgNywgMjI1LCAxNDIsIDk5LCAyMzAsIDk0LCAyMjUsIDE0MiwgOTksIDI0OSwgMjUsIDE2MSwgOTksIDIzNiwgCisgICAgMTA2LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIDEwNCwgMTYxLCA5OSwgMjM2LCAxMDMsIDE2MSwgOTksIDIzNiwgMTAyLCAKKyAgICAxNjEsIDk5LCAyMzYsIDEwMSwgMTYxLCA5OSwgMjM2LCAxMDAsIDE2MSwgOTksIDIzNiwgOTksIDE2MSwgOTksIDIzNiwgOTgsIAorICAgIDE2MSwgOTksIDIzNiwgOTcsIDE2MSwgOTksIDIzNiwgOTYsIDE2MSwgOTksIDIzNiwgOTUsIDE2MSwgOTksIDIzNiwgOTQsIAorICAgIDE2MSwgOTksIDIzNiwgOTMsIDE2MSwgOTksIDIzNiwgOTIsIDE2MSwgOTksIDIzNiwgOTEsIDE2MSwgOTksIDIzNiwgOTAsIAorICAgIDE2MSwgOTksIDIzNiwgODksIDE2MSwgOTksIDIzNiwgODgsIDE2MSwgOTksIDIzNiwgODcsIDE2MSwgOTksIDIzNiwgODYsIAorICAgIDE2MSwgOTksIDIzNiwgODUsIDE2MSwgOTksIDIzNiwgODQsIDE2MSwgOTksIDIzNiwgODMsIDE2MSwgOTksIDIzNiwgODIsIAorICAgIDE2MSwgOTksIDIzNiwgODEsIDE2MSwgOTksIDIzNiwgODAsIDE2MSwgOTksIDIzNiwgNzksIDE2MSwgOTksIDIzNiwgNzgsIAorICAgIDE2MSwgOTksIDIzNiwgNzcsIDE2MSwgOTksIDIzNiwgNzYsIDE2MSwgOTksIDIzNiwgNzUsIDE2MSwgOTksIDIzNiwgNzQsIAorICAgIDE2MSwgOTksIDIzNiwgNzMsIDE2MSwgOTksIDIzNiwgNzIsIDE2MSwgOTksIDIzNiwgNzEsIDE2MSwgOTksIDIzNiwgNzAsIAorICAgIDE2MSwgOTksIDIzNiwgNjksIDE2MSwgOTksIDIzNiwgNjgsIDE2MSwgOTksIDIzNiwgNjcsIDE2MSwgOTksIDIzNiwgNjYsIAorICAgIDE2MSwgOTksIDIzNiwgNjUsIDE2MSwgOTksIDIzNiwgNjQsIDE2MSwgOTksIDIzNiwgNjMsIDE2MSwgOTksIDIzNiwgNjIsIAorICAgIDE2MSwgOTksIDIzNiwgNjEsIDE2MSwgOTksIDIzNiwgNjAsIDE2MSwgOTksIDIzNiwgNTksIDE2MSwgOTksIDIzNiwgNTgsIAorICAgIDE2MSwgOTksIDIzNiwgNTcsIDE2MSwgOTksIDIzNiwgNTYsIDE2MSwgOTksIDgwLCAyNDksIDI1LCAxNjEsIDk5LCAyMDYsIAorICAgIDM3LCAxNjEsIDk5LCAyMDYsIDM2LCAxNjEsIDk5LCAyMDYsIDM1LCAxNjEsIDk5LCAyMDYsIDM0LCAxNjEsIDk5LCAyMDYsIAorICAgIDMzLCAxNjEsIDk5LCAyMDYsIDMyLCAxNjEsIDk5LCAyMDYsIDMxLCAxNjEsIDk5LCAyMDYsIDMwLCAxNjEsIDk5LCAyMDYsIAorICAgIDI5LCAxNjEsIDk5LCAyMDYsIDI4LCAxNjEsIDk5LCAyMDYsIDI3LCAxNjEsIDk5LCAyMDYsIDI2LCAxNjEsIDk5LCAyMDYsIAorICAgIDI1LCAxNjEsIDk5LCAyMDYsIDI0LCAxNjEsIDk5LCAyMDYsIDIzLCAxNjEsIDk5LCAyMDYsIDIyLCAxNjEsIDk5LCAyMDYsIAorICAgIDIxLCAxNjEsIDk5LCAyMDYsIDIwLCAxNjEsIDk5LCAyMDYsIDE5LCAxNjEsIDk5LCAyMDYsIDE4LCAxNjEsIDk5LCAyMDYsIAorICAgIDE3LCAxNjEsIDk5LCAyMDYsIDE2LCAxNjEsIDk5LCAyMDYsIDE1LCAxNjEsIDk5LCAyMDYsIDE0LCAxNjEsIDk5LCAyMDYsIAorICAgIDEzLCAxNjEsIDk5LCAyMDYsIDEyLCAxNjEsIDk5LCAyMDYsIDExLCAxNjEsIDk5LCAyMDYsIDEwLCAxNjEsIDk5LCAyMDYsIAorICAgIDksIDE2MSwgOTksIDIwNiwgOCwgMTYxLCA5OSwgMjA2LCA3LCAxNjEsIDk5LCAyMDYsIDYsIDE2MSwgOTksIDIwNiwgNSwgCisgICAgMTYxLCA5OSwgMjA2LCA0LCAxNjEsIDk5LCAyMDYsIDMsIDE2MSwgOTksIDIwNiwgMiwgMTYxLCA5OSwgMjA2LCAxLCAxNjEsIAorICAgIDk5LCAyMDYsIDAsIDE2MSwgOTksIDIwNSwgMjU1LCAxNjEsIDk5LCAyMDUsIDI1NCwgMTYxLCA5OSwgMjA1LCAyNTMsIDE2MSwgCisgICAgOTksIDIwNSwgMjUyLCAxNjEsIDk5LCAyMDUsIDI1MSwgMTYxLCA5OSwgMjA1LCAyNTAsIDE2MSwgOTksIDIwNSwgMjQ5LCAKKyAgICAxNjEsIDk5LCAyMDUsIDI0OCwgMTYxLCA5OSwgMjA1LCAyNDcsIDE2MSwgOTksIDIwNSwgMjQ2LCAxNjEsIDk5LCAyMDUsIAorICAgIDI0NSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQ5LCAyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMTEsIDIyNSwgCisgICAgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDIxMSwgMjI1LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIAorICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgCisgICAgMTEyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMTEsIDIyNSwgCisgICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIAorICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgCisgICAgODIsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAorICAgIDM4LCAxMjAsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAorICAgIDM4LCAyMzksIDE0NywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjM3LCA1MywgMjE4LCAKKyAgICA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjM3LCAKKyAgICA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCAKKyAgICA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMzAsIDE3OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDIzNywgNTMsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIxNiwgMTM4LCAyMzAsIDk0LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDI0MywgCisgICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQzLCAKKyAgICAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgCisgICAgMjMzLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAKKyAgICAzOCwgMjEzLCAxMTIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyNDMsIDIyMCwgCisgICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIAorICAgIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMjksIDMyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCA2MiwgMjMwLCA5NCwgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDI0NiwgMiwgMjE4LCAKKyAgICA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0NiwgMiwgCisgICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAKKyAgICAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIAorICAgIDE0MywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgCisgICAgMjA5LCAxNTMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQ2LCAyLCAyMTgsIAorICAgIDg4LCAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCA2MSwgMjMwLCA5NCwgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjM5LCAxNzMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzcsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzMsIDIxOCwgODgsIDI0NywgMzgsIAorICAgIDIwOCwgMzIsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzAsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIwOCwgMjksIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMjgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDcsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDYsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDUsIDIxOCwgODgsIDI0NywgMzgsIAorICAgIDIwOCwgNDQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDIsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIwOCwgNDEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDAsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzksIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzYsIDIxOCwgODgsIDI0NywgMzgsIAorICAgIDIwOCwgMzUsIDE3LCAyMDIsIDg1LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIwMiwgODUsIDI0NSwgMjMzLCAxNywgMTE4LCAKKyAgICAyNDUsIDIzMywgMTcsIDEyMCwgMjQ1LCAyMzMsIDE3LCAxMjYsIDI0NSwgMjMzLCAxNywgMjM5LCAxNDcsIDI0NSwgMjMzLCAKKyAgICAxNywgMjM5LCAyMzMsIDI0NSwgMjMzLCAxNywgMjEyLCA4OCwgMjQ1LCAyMzMsIDE3LCAyMTMsIDExMiwgMjQ1LCAyMzMsIAorICAgIDE3LCAyNDEsIDE0MywgMjQ1LCAyMzMsIDE3LCAyMjIsIDY0LCAyNDUsIDIzMywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDIwMiwgCisgICAgODQsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIwMiwgODQsIDEwMiwgOCwgNiwgMSwgNjMsIDEwMiwgOCwgNiwgMSwgCisgICAgMjQ5LCAyNTUsIDEwMiwgOCwgNiwgMSwgMjQ3LCAxMjUsIDEwMiwgOCwgNiwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA2LCAxLCAKKyAgICA3NCwgMTAyLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTAyLCA4LCA2LCAxLCAyMzksIDc1LCAxMDIsIDgsIDYsIDEsIDIzNywgCisgICAgMTcxLCAxMDIsIDgsIDYsIDEsIDc1LCAxMDIsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDYsIDEsIDIzMCwgNTQsIAorICAgIDEwMiwgOCwgNiwgMSwgMTU5LCAxMDIsIDgsIDYsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDIsIAorICAgIDgsIDYsIDEsIDc4LCAxMDIsIDgsIDYsIDEsIDIxOSwgMTg0LCAxMDIsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDYsIAorICAgIDEsIDE0NiwgMTAyLCA4LCA2LCAxLCAxOTQsIDEwMiwgOCwgNiwgMSwgMjEwLCA2OSwgMTAyLCA4LCA2LCAxLCA2OCwgMTAyLCAKKyAgICA4LCA2LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAyLCAKKyAgICA4LCA2LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCA2LCAxLCAyMDIsIDE1OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKKyAgICA4LCA2LCAxLCAxOTQsIDQzLCAzNywgOCwgNiwgMSwgMjQ3LCAxMjUsIDQzLCAzNywgOCwgNiwgMSwgMTQ2LCA0MywgMjQ2LCAKKyAgICAyMzksIDQzLCAyMDMsIDE5OCwgMTAzLCA4LCA2LCAxLCA2MywgMTAzLCA4LCA2LCAxLCAyNDksIDI1NSwgMTAzLCA4LCA2LCAKKyAgICAxLCAyNDcsIDEyNSwgMTAzLCA4LCA2LCAxLCAyNDUsIDUxLCAxMDMsIDgsIDYsIDEsIDc0LCAxMDMsIDgsIDYsIDEsIDI0MCwgCisgICAgMTc0LCAxMDMsIDgsIDYsIDEsIDIzOSwgNzUsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDEwMywgOCwgNiwgMSwgNzUsIAorICAgIDEwMywgOCwgNiwgMSwgMjMwLCAxODQsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTAzLCA4LCA2LCAxLCAxNTksIDEwMywgOCwgCisgICAgNiwgMSwgMjI2LCAxODUsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDEwMywgOCwgNiwgMSwgNzgsIDEwMywgOCwgNiwgMSwgCisgICAgMjE5LCAxODQsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDEwMywgOCwgNiwgMSwgMTQ2LCAxMDMsIDgsIDYsIDEsIDE5NCwgCisgICAgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxMDMsIDgsIDYsIDEsIDY4LCAxMDMsIDgsIDYsIDEsIDIwNiwgMTY0LCAxMDMsIDgsIAorICAgIDYsIDEsIDIwNCwgMTQ0LCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxMDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxMDMsIDgsIAorICAgIDYsIDEsIDIwMiwgMTU5LCAxMDMsIDIzNSwgMjU1LCAxMDMsIDIyMywgMTg3LCAxMDMsIDIxNCwgMTc5LCAxMDMsIDIxMSwgCisgICAgMTY3LCAxMDMsIDIxOCwgMTAsIDEwMywgMjA0LCA2MywgMTgyLCA0MywgOCwgNiwgMSwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIAorICAgIDI0OSwgMjU1LCAxODIsIDQzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCA0MywgCisgICAgOCwgNiwgMSwgNzQsIDE4MiwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDQzLCA4LCA2LCAxLCAyMzksIDc1LCAxODIsIAorICAgIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTgyLCA0MywgOCwgNiwgMSwgNzUsIDE4MiwgNDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAKKyAgICAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCAxODIsIDQzLCA4LCA2LCAxLCAxNTksIDE4MiwgNDMsIDgsIDYsIDEsIDIyNiwgCisgICAgMTg1LCAxODIsIDQzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTgyLCA0MywgOCwgNiwgMSwgNzgsIDE4MiwgNDMsIDgsIDYsIDEsIAorICAgIDIxOSwgMTg0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTgyLCA0MywgOCwgNiwgMSwgMTQ2LCAxODIsIDQzLCA4LCAKKyAgICA2LCAxLCAxOTQsIDE4MiwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDE4MiwgNDMsIDgsIDYsIDEsIDY4LCAxODIsIDQzLCA4LCAKKyAgICA2LCAxLCAyMDYsIDE2NCwgMTgyLCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMywgMTk2LCAKKyAgICAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDIxNiwgMTg4LCAyMjUsIAorICAgIDI2LCA1NCwgMjE2LCAxODgsIDIyNSwgMjMsIDU0LCAxODIsIDEwMywgOCwgNiwgMSwgNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKKyAgICAyNDksIDI1NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NywgMTI1LCAxODIsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCAKKyAgICAxMDMsIDgsIDYsIDEsIDc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjQwLCAxNzQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzksIAorICAgIDc1LCAxODIsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgMTAzLCA4LCA2LCAxLCA3NSwgMTgyLCAxMDMsIDgsIDYsIAorICAgIDEsIDIzMCwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDE1OSwgMTgyLCAKKyAgICAxMDMsIDgsIDYsIDEsIDIyNiwgMTg1LCAxODIsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKKyAgICA3OCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgMTAzLCAKKyAgICA4LCA2LCAxLCAxNDYsIDE4MiwgMTAzLCA4LCA2LCAxLCAxOTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIAorICAgIDEwMywgOCwgNiwgMSwgNjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwNCwgCisgICAgMTQ0LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxOTYsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCAxMDMsIAorICAgIDgsIDYsIDEsIDIwMiwgMTU5LCAyNDUsIDEyOCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgMjM1LCAKKyAgICAxNjQsIDE4MiwgMTAzLCAxODUsIDE4MiwgMTAzLCAyMTUsIDM2LCAxODIsIDEwMywgMjUxLCAyMzIsIDE4MiwgMTAzLCAyMDQsIAorICAgIDYzLCA1MSwgMjQzLCAxMzIsIDEwMywgMjQ2LCA0MiwgMTAzLCAyNDUsIDE3NiwgMTAzLCAyMzksIDEyOSwgMTAzLCAyMzUsIAorICAgIDE1NSwgMTAzLCAyMjIsIDIxMywgMTAzLCAyMjIsIDIwNSwgMTAzLCAyMjAsIDUxLCAxMDMsIDIxMSwgMjQ1LCAxMDMsIDExMiwgCisgICAgMywgMjQwLCAyMTIsIDgyLCAxMDMsIDIwNSwgMTY2LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDYzLCAyMTYsIDEzMCwgCisgICAgMjMxLCAzMiwgMTYsIDEsIDI0OSwgMjU1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDI0NywgMTI1LCAyMTYsIDEzMCwgCisgICAgMjMxLCAzMiwgMTYsIDEsIDI0NSwgNTEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAKKyAgICAxNiwgMSwgMjQwLCAxNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjM5LCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIAorICAgIDE2LCAxLCAyMzcsIDE3MSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKKyAgICAyMzAsIDE4NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMzAsIDU0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIAorICAgIDE1OSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjYsIDE4NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjMsIAorICAgIDE2MywgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3OCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTksIDE4NCwgCisgICAgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTcsIDEzNCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAxNDYsIDIxNiwgCisgICAgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTk0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxMCwgNjksIDIxNiwgMTMwLCAKKyAgICAyMzEsIDMyLCAxNiwgMSwgNjgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjA2LCAxNjQsIDIxNiwgMTMwLCAyMzEsIAorICAgIDMyLCAxNiwgMSwgMjA0LCAxNDQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAzLCAxOTYsIDIxNiwgMTMwLCAyMzEsIAorICAgIDMyLCAxNiwgMSwgMjAzLCAxMjQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAyLCAxNTksIDUxLCAxNzIsIDIzNiwgCisgICAgMTMwLCAxMDMsIDY3LCAyMjksIDE0LCAxMDMsIDY3LCAyMTUsIDM2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDAsIAorICAgIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTEyLCAxMDMsIDY3LCAyNDQsIAorICAgIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNiwgMTAzLCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgNzgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCisgICAgMTE4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODUsIDEwMywgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDk0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDEwMSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MywgMTAzLCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgMTE2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCisgICAgODQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDcsIDEwMywgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDEwOSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDk4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5NiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTIyLCAxMDMsIDEyLCAKKyAgICAyMDYsIDIzOSwgMjMzLCAxMjEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICAxMDIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTExLCAxMDMsIDEyLCAKKyAgICAyMDYsIDIzOSwgMjMzLCA5NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDk5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODAsIDEwMywgMTIsIDIwNiwgCisgICAgMjM5LCAyMzMsIDExMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkwLCAKKyAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODMsIDEwMywgMTIsIDIwNiwgCisgICAgMjM5LCAyMzMsIDExNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA4LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIAorICAgIDEyLCAyMDYsIDIzOSwgMjMzLCA4OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgCisgICAgMTIxLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDIwOCwgMTMzLCAyMTMsIAorICAgIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDEwMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgODYsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDk5LCAKKyAgICAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MiwgMjA4LCAxMzMsIDIxMywgMzMsIAorICAgIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTEzLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIAorICAgIDIzOSwgMjMzLCA5NSwgNDMsIDE4OSwgMjUxLCAxMTEsIDQzLCAxODksIDI1MSwgMTM2LCAyNDUsIDYyLCAyMzksIDE4NCwgCisgICAgMjQ2LCAxNiwgMjA3LCAzLCAyMjIsIDgwLCAzLCAyMTEsIDkxLCAyMTAsIDIwOSwgMTE1LCAyMjQsIDExLCAyMTAsIDIwOCwgCisgICAgMjQ2LCA0NiwgMjUwLCA1MCwgMjQyLCAxNywgMjEwLCAyMDcsIDExNSwgMjQ3LCAxODIsIDIxNiwgMTg5LCAyNDcsIDIwOCwgCisgICAgMjUwLCA1MCwgMjIyLCA3OSwgMjA0LCA4MSwgMjA0LCA3NSwgMjA1LCAxODEsIDIyNCwgMTE4LCAyMDQsIDY1LCAyNDEsIAorICAgIDE4MCwgMjM4LCA0NiwgMjQwLCAyMjgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAyNTAsIDIzOCwgMjQxLCAxODAsIDIzOCwgNDYsIAorICAgIDI1MCwgNjgsIDIzOCwgNDYsIDMsIDIyNCwgMjMxLCAyMjIsIDIxNCwgMjI0LCAzMCwgOTcsIDIwNCwgNjcsIDI0NSwgMTM5LCAKKyAgICAyMjQsIDMwLCA5NywgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyMzgsIDc3LCAyMjQsIDMwLCAKKyAgICA5NywgMjM5LCAxMDIsIDIyNCwgMzAsIDk3LCAyMDQsIDk0LCAyMzgsIDc3LCAyMjQsIDMwLCA5NywgMjI4LCAxLCAyMTcsIAorICAgIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjQ1LCAxMzksIDIyNCwgMzAsIDk3LCAyNDUsIDEzOSwgMjI0LCAyOSwgMjIyLCAKKyAgICAyMTQsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIyOCwgCisgICAgMSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIzOSwgMTAyLCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjEwLCAKKyAgICAyMTUsIDMsIDI0MCwgMTAyLCAyMzgsIDQ0LCAyMTEsIDk0LCAyMTIsIDIzMywgMjExLCA5NCwgMjA5LCA4MCwgNjIsIDI0MiwgCisgICAgNDksIDYxLCAyMTAsIDIxNCwgNjEsIDIxMCwgMjE1LCAzLCA1LCAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIAorICAgIDI0NiwgNywgNjEsIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgCisgICAgMjQ2LCA4LCAzLCAyMTIsIDE5LCAyNDYsIDgsIDMsIDIyNywgMTMxLCAyNDYsIDgsIDMsIDIwOCwgMTM3LCAyMzksIDE4NSwgCisgICAgMjA0LCAxNywgMjQ4LCAyNywgMjQwLCAxMDIsIDIzNiwgNDcsIDI0MywgMTAyLCAyMTAsIDIsIDI0NywgMTU4LCAyNDYsIAorICAgIDE0OCwgMjE0LCAxNjMsIDI0MCwgMjIyLCAyMDgsIDk1LCAyNDQsIDY5LCAyMDgsIDk1LCAyMTksIDEzNSwgMjA4LCA5NSwgCisgICAgMjQ3LCA4NSwgMjM2LCA0NywgMjE4LCAyNDgsIDIwNywgMTkzLCAyNDYsIDE1MiwgMjQ4LCAzMCwgMjE1LCAyMDIsIDIzNywgCisgICAgMiwgMjEwLCAyMTIsIDI0OCwgMzAsIDI0MSwgMTg0LCA3NiwgMjI1LCAxMzEsIDI0MSwgMTg0LCA3NiwgMjE2LCA1MiwgMjM3LCAKKyAgICAyOCwgMjM5LCAxNDcsIDIyNywgMjMwLCAyNDYsIDYsIDIyNSwgMTA0LCAyMjcsIDIyOSwgMjQwLCA4NSwgMjI3LCAyMjksIAorICAgIDIyNywgMjMwLCAyMzksIDE5MiwgMjMxLCA1MCwgMjA0LCAxNiwgMjIzLCAxOTYsIDIwOCwgMTY1LCAyNTAsIDMzLCAyMzgsIAorICAgIDUsIDIyNCwgMjQ5LCAyMDQsIDc5LCAyMDksIDIyNSwgMjI3LCAxOTksIDI0OCwgMjM5LCAyMTgsIDEyMCwgMjE2LCAxMzgsIAorICAgIDI1MCwgMTU3LCAyMzcsIDI0NCwgMjUwLCAxNTcsIDIxOSwgMjksIDIxOSwgMzEsIDI0NiwgMTUzLCAyMTEsIDQ1LCAyMzcsIAorICAgIDEzMiwgMjEyLCA1MSwgNzYsIDIxOCwgMTAwLCAyMjUsIDE2LCAyMjAsIDMyLCAyNDgsIDExLCAyMTgsIDIxLCAyMjcsIDIxMCwgCisgICAgMjE2LCA1MywgMjQ1LCAxNDUsIDIxNiwgNTMsIDI0OCwgMjUxLCAyNDUsIDE3OSwgMjE2LCA1MiwgMjQ1LCA4OSwgMjUsIAorICAgIDIxNiwgNTIsIDIxMSwgNzksIDI0NywgMjM3LCAyMTEsIDIyNCwgMjQ3LCAyMTksIDIzOSwgMTI4LCAyMzksIDEyNCwgMjE1LCAKKyAgICAyMjMsIDIxMCwgMTY1LCAyMTgsIDIzLCAyNDQsIDE2MywgMjIwLCA3NSwgMjEwLCAxODMsIDIzOSwgMTI1LCAyMTIsIDIwNCwgCisgICAgMjM5LCAyNDQsIDI0NywgNzksIDMsIDIxMCwgMTU4LCAyNDQsIDEzLCAyMTIsIDcsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjEzLCAKKyAgICA1MSwgMjM1LCAxNjIsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjQyLCA3MywgMjQ1LCAxNzgsIDI0NiwgMTE0LCAxNDIsIDI0NywgCisgICAgNTEsIDIyNywgMzIsIDI0NSwgODEsIDIzNiwgMTE5LCAyMTgsIDI1LCAyMTIsIDIxNywgMjQ4LCAxMTYsIDI0NywgMjMzLCAKKyAgICAyMTgsIDI2LCA3NiwgMjM5LCAxNzQsIDI0NSwgMTc3LCAyMzksIDE2MywgMjUsIDIyOSwgMzMsIDIwOSwgMTg0LCAyMDQsIDMsIAorICAgIDIzNywgMTAyLCAyMTUsIDEzLCAyNDcsIDI1MCwgMjUsIDI0NSwgOTksIDIwNCwgMTMsIDIzOCwgNDksIDI0NSwgMjUxLCAKKyAgICAyMzgsIDQ5LCAyMDgsIDUxLCAyNDIsIDU0LCAyNDgsIDE0NiwgMjIzLCAyMzUsIDI0NiwgMjMsIDI0OCwgMTQ2LCAyMjMsIAorICAgIDIzNCwgMjQ5LCAyOCwgMjQ3LCAyNDksIDIzOSwgMTYzLCAyNSwgMjI5LCAzNCwgMywgMjE4LCA4OSwgMjQ3LCAyNTAsIDMsIAorICAgIDIxOCwgMzgsIDI0NSwgMTY3LCAyMTgsIDQwLCAyMTYsIDU0LCAyMDMsIDIyNywgMjE3LCAyNDIsIDI0OCwgNTgsIDI0NywgCisgICAgNzgsIDIzMCwgMTc4LCAyNDYsIDEwNiwgMjA4LCA5NSwgMjQwLCA2OCwgMjQ2LCAxMDUsIDIzOSwgMjQ3LCAyMzksIDI0OCwgCisgICAgMjExLCAyMjIsIDI0OCwgMjUwLCAyMTksIDY2LCAyMTgsIDM5LCAyNDUsIDIxNSwgMjQ4LCAyNTEsIDIwOSwgMjI5LCAyMDgsIAorICAgIDk1LCAyNDUsIDEyOCwgMjM5LCAyMTksIDIxOCwgMTIxLCAyNDQsIDY2LCAyMzAsIDE2OSwgMjQzLCA5NiwgMjQ3LCAyNywgCisgICAgMjExLCA0NCwgMjA0LCAxNywgMjQ2LCAxMzAsIDIyNCwgMzAsIDIwNSwgMjE3LCAyNDYsIDIwNCwgMjE0LCAxOTYsIDIxNCwgCisgICAgMjIzLCAyMzgsIDExLCAyNDcsIDQ4LCAyMzcsIDU2LCAzLCAyMDgsIDIxMSwgMjIwLCAzMiwgMjA5LCA5MywgMjI3LCAyMjIsIAorICAgIDI0NywgMjQzLCA3NiwgMjM5LCAxOTYsIDIyNCwgMTE5LCAyMjUsIDEzLCAyMTYsIDExMCwgMjE2LCA1NCwgMzEsIDIyOSwgCisgICAgMTUwLCAzLCAyMzAsIDE3NywgMjExLCAxNSwgMjI0LCAxNTIsIDIyNywgMTY3LCAyMTIsIDQ5LCAyNDUsIDE4NCwgMjI5LCAKKyAgICAzMCwgMjQ4LCAxNTgsIDI1MCwgNzgsIDMxLCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDI0NCwgMTksIDMxLCAyMjEsIDE1NSwgCisgICAgMjQwLCA2LCAyMzksIDEzMywgMjUxLCAxMTQsIDIwOCwgMjUyLCAyNDcsIDI4LCAyMzYsIDQ5LCAyNDAsIDM1LCAyMDQsIDM2LCAKKyAgICAyMTUsIDIxMywgMjQ1LCAyNTIsIDIzOSwgMjM5LCAyMTgsIDU0LCAyNSwgMjM5LCAyNDMsIDIyNCwgMTUyLCAyMjMsIDI1MywgCisgICAgMjQ3LCA2NSwgMjQ2LCA2NSwgMjM3LCA2MCwgMjUwLCA4NSwgMjE5LCAxMzgsIDIwOCwgMTQ1LCAyMzcsIDgzLCAyNDYsIDUxLCAKKyAgICAyMDksIDE0NCwgMjA4LCAyNTMsIDI0NiwgMzcsIDI0OCwgMjAsIDIxOCwgMjQxLCAyNTAsIDg0LCAyMDUsIDIyNiwgMjM4LCAKKyAgICAyMzgsIDI0MywgMTY3LCAyMzYsIDIzMCwgMjEyLCA0MiwgMjI1LCAxNzIsIDI0OCwgNjksIDIzOCwgMjM5LCAyNDMsIDIxMywgCisgICAgMjQ3LCAyMzYsIDIzOSwgMTk4LCAyMTgsIDg4LCAyNDcsIDM2LCAzMSwgMjIxLCAxNjAsIDIyMywgMjI2LCAzMSwgMjIxLCAKKyAgICAxNTUsIDIxNCwgMjA5LCAyMzcsIDIxNCwgMzEsIDIyOSwgMTQ5LCAyMDgsIDI3LCAyMDUsIDIwNiwgMzEsIDIxNCwgMTg5LCAKKyAgICAyMTUsIDEyNiwgMjEyLCAyNDYsIDMsIDIxNCwgMjI2LCAyMDksIDE0OSwgMjE2LCAyMDksIDI1LCAyNDgsIDI1MSwgMjEyLCAKKyAgICA2NywgMjUsIDIxMiwgNjcsIDI0OCwgNCwgMjQ4LCAyMTMsIDI1LCAyMzYsIDExMiwgMjQ2LCAxNTQsIDIzOSwgMjI1LCAyMTIsIAorICAgIDE4LCAyMTUsIDEyNywgMjEwLCAxODgsIDIxMSwgMTg5LCAyMjUsIDEzLCAyMDgsIDUyLCAyMzYsIDUwLCAyMTYsIDIxMCwgCisgICAgMjUwLCAyMzksIDIzOSwgMTcxLCAyMTUsIDEzOSwgMjM5LCAxNzEsIDIxMCwgMTYwLCAyMDQsIDUxLCAyMjcsIDEzNiwgMjM4LCAKKyAgICAzMCwgMjE2LCAyMTEsIDIyNCwgMTgsIDIxNiwgMjExLCAyNDcsIDM5LCAyNDUsIDEzNiwgMjQ4LCAyMTAsIDI1LCAyNDgsIAorICAgIDI1MSwgMjA1LCAxODAsIDI0MCwgMjUsIDIzNiwgMTMzLCAyMTEsIDczLCAyNSwgMjQ4LCAyNTEsIDIzNSwgMTYzLCAyMzYsIAorICAgIDEzMywgMjExLCA3MywgMjUsIDIxNywgMTg0LCAyMTAsIDksIDIwOSwgMTQ5LCAyMTksIDE1NiwgMjUsIDI0OCwgMjUxLCAKKyAgICAyMTIsIDIwLCAyNDcsIDQ0LCAyMjQsIDEyLCAyNDcsIDYzLCAyNDgsIDE2MSwgMywgMjA3LCAzLCAyNDcsIDE4NCwgMjQ1LCAKKyAgICAxOTgsIDIzNiwgMzksIDI0NywgMTgyLCAyNDYsIDQ1LCAyNDQsIDIzLCAyMzYsIDM5LCAyNDcsIDE4MywgMjQ2LCAzNSwgCisgICAgMjQ3LCAxODMsIDI0NCwgMTUsIDI0NCwgMTYsIDIzMCwgMjA4LCAyMjMsIDY3LCAyMTksIDcyLCAyMTEsIDEwNCwgMjM2LCAKKyAgICAzOSwgMjQ3LCAxODMsIDIzNiwgMzksIDMsIDIzOCwgMjIyLCAyMjAsIDY3LCAyNDcsIDE4MywgMjMwLCAxNjksIDIxOCwgMzEsIAorICAgIDIyMCwgNjYsIDI0MCwgMjI3LCAyMTgsIDMxLCAyMjAsIDY2LCAyMzYsIDQ4LCAyNDgsIDIzNSwgMjUwLCAyMywgMjA5LCAKKyAgICAxNTcsIDIyNSwgMTcyLCAyMzYsIDQ0LCAyMjcsIDEsIDIzNiwgNDQsIDI0NSwgMTgyLCAyMTEsIDU3LCAyMTQsIDE5NSwgCisgICAgMjQ0LCAyNiwgMjExLCA1NywgMjQwLCA5MSwgMjMwLCAxODksIDIyOCwgMTMsIDIzMCwgMTY5LCAyNDcsIDE5LCAyNDAsIAorICAgIDIyNywgMjQ3LCAxOSwgNjEsIDIxOSwgMywgNjIsIDIxOSwgMywgMjA0LCA3MywgNjEsIDIzOSwgMjI1LCAyMDQsIDczLCA2MiwgCisgICAgMjM5LCAyMjUsIDIxNSwgMjAxLCA2MiwgMjE1LCAyMDEsIDIyOCwgMTA1LCAyNDksIDEyLCAyMTYsIDIwOSwgMjUsIDIxMiwgCisgICAgMTgzLCAyNDcsIDI0MSwgMjUsIDQ3LCAyNTAsIDIzNCwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExOSwgMjQxLCAKKyAgICA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNCwgMjQxLCA5OCwgNjUsIAorICAgIDIzOSwgMjM0LCAyMDcsIDExMiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExMCwgMjE2LCAxNzIsIDIyNCwgOSwgCisgICAgMjE5LCAxOTMsIDIwNCwgODEsIDI0NywgMTg4LCAyNDUsIDE0OSwgMjA4LCAyNDUsIDIyNywgMTgzLCAyMTYsIDIxMiwgMjQ3LCAKKyAgICAxNywgMjQyLCA2MSwgMjQ1LCAxMzUsIDIwNCwgMzksIDIxMiwgMjYsIDIxMiwgMjQsIDIzNiwgNDksIDIxNiwgMTg0LCAyMzgsIAorICAgIDM1LCAyMTMsIDM3LCAyMjQsIDQ4LCAyMTUsIDIwNSwgMjQ2LCAxNDAsIDI0MywgMTAyLCAyMTgsIDEzMSwgMjQ4LCAyMSwgCisgICAgMjQxLCAxMTQsIDIyMCwgNzgsIDIxMSwgMjAyLCAyMTMsIDMyLCAyNDcsIDE4NywgMjUwLCAxOTgsIDIzNiwgMTE4LCAyMjgsIAorICAgIDk4LCAyNDgsIDE0NCwgMjM5LCAyNDMsIDIwOCwgNTEsIDIzOSwgMjQzLCAyNDgsIDI4LCAyMDcsIDE3MSwgMjM3LCA4MSwgCisgICAgMjQ2LCAxNDEsIDI0OSwgMjgsIDI0NiwgMTQxLCAyMzksIDExOCwgMjQ5LCAyOCwgMjQ2LCAxNDEsIDI0OCwgNjAsIDIxOSwgCisgICAgNSwgMjI5LCAyNCwgMjE4LCA0NCwgMjQyLCA1MSwgMjQ3LCA2NywgMjQ5LCAxNywgMjQ3LCA2NywgMjQzLCA5NSwgMjI0LCAKKyAgICAxMCwgMjQwLCAxMDIsIDI0NSwgMTUwLCAyNDAsIDEwMiwgMjA4LCAyNDYsIDI0MCwgMTAyLCAyMTYsIDIxMywgMjQwLCAxMDIsIAorICAgIDI0NywgMTgsIDI0MCwgMTAyLCAyNDIsIDYyLCAyNDAsIDEwMiwgMjExLCAxODcsIDIwNCwgMzksIDIzNiwgNTAsIDI0MCwgCisgICAgMTAyLCAyMjQsIDQ5LCAyNDAsIDEwMiwgMjQzLCAxMDMsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjQwLCAxMDIsIDIzOSwgMTIyLCAKKyAgICAyNDAsIDEwMiwgMjM3LCAxMjksIDI0MCwgMTAyLCAyMDMsIDI1MywgMjQwLCAxMDIsIDI0OCwgMTU2LCAyNDAsIDEwMiwgCisgICAgMjE5LCAxMjAsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjIxLCAxNjcsIDIxOSwgNDYsIDIxNywgMjMwLCAyNDYsIDEyNSwgMjQwLCAKKyAgICAxODQsIDI0MCwgMTkxLCAyNDEsIDE4MywgMjIxLCAxNjcsIDIyNCwgNywgMjA4LCAxNTAsIDYxLCAxMTIsIDIxOCwgNTksIAorICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCAxMjEsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA0OSwgMjE4LCA1OSwgCisgICAgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMzksIDIzNywgMjM3LCAxMjQsIAorICAgIDU0LCAyMDQsIDczLCAyMzcsIDEyNCwgNTQsIDIyMCwgNTIsIDIzNywgMTI0LCA1NCwgMjA5LCAyMCwgMTEyLCA1NCwgMjA5LCAKKyAgICAyMCwgMTIxLCA1NCwgMjQ2LCAzNiwgMjM3LCAxMDAsIDU0LCAxNzEsIDIzNywgMTAwLCA1NCwgMjQ1LCAxMjIsIDIwMywgCisgICAgMjQ5LCAyMzcsIDgzLCAyNDAsIDE4NywgMjIyLCAyMzYsIDIxMCwgNjgsIDIzMCwgMTYwLCAyNDIsIDU2LCAyMjksIDg1LCAKKyAgICAyNDgsIDcxLCAyMDMsIDI0OSwgMjQ2LCA5LCAyMTcsIDE2NSwgMjM3LCAxMDMsIDIxOCwgMjIsIDIyNSwgMTEyLCAyMTIsIAorICAgIDIzOSwgMjUwLCA0NiwgMjEyLCAyMzksIDIzNiwgMjQzLCAyMTIsIDIzOSwgMjAzLCAyNDksIDIxNCwgMjQwLCAyMDMsIDI0OSwgCisgICAgMjQ4LCAzLCAyMzksIDE2OSwgMjQ3LCAxNTAsIDIzMSwgNTAsIDIxMiwgMTM2LCAyNDcsIDE0OSwgMjMxLCA1MCwgMjEyLCAKKyAgICAxMzYsIDI0NywgMjMyLCAyMzgsIDYwLCAyMjUsIDEyMiwgMjAzLCAyNTAsIDI0MCwgODIsIDIyNSwgMTIzLCAyNSwgMjAzLCAKKyAgICAyNTEsIDIzNiwgMTI3LCAyMzcsIDk5LCAxMjAsIDIyNCwgMjQxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMDMsIDI0OCwgCisgICAgMjM2LCAxMjcsIDIzNywgOTksIDIxOCwgNTEsIDIyMCwgNjUsIDIwMywgMjUxLCAzLCAyNDcsIDE2OCwgMjQxLCAxODEsIAorICAgIDI0NywgMjA5LCAzLCAyMDYsIDQ2LCAyMTgsIDIzMCwgMywgMjQ4LCAzMiwgMjM3LCAxNDUsIDIyNSwgMTIzLCAzLCAyMzcsIAorICAgIDIyNywgMjE4LCAxNjgsIDIyNSwgMTA4LCAyMjUsIDEyMywgMywgMjA3LCAxODAsIDIyMCwgNDQsIDIyNSwgMTIyLCAyMjAsIAorICAgIDQ0LCAyMDMsIDI1MCwgMjQ5LCAyNywgMjQ1LCAxOTksIDIwMywgMjM0LCAyMTcsIDIzNSwgMjMwLCAxNjksIDIyMCwgNjEsIAorICAgIDIzMCwgMTY5LCAyMzgsIDM0LCAyMzgsIDg5LCAyNDksIDI4LCAyNTAsIDIyMSwgMjQwLCAxOTYsIDI1MSwgMjAsIDI1MSwgCisgICAgMjEsIDIyNCwgMzksIDIzMSwgNTUsIDIxMiwgNjIsIDIzMSwgMjUsIDI0NCwgMTIsIDIxOCwgMjI5LCAyMzcsIDIyMSwgMjQ0LCAKKyAgICAxNjcsIDIyNywgOTcsIDIyMywgOTEsIDIxOCwgNTAsIDI0MCwgMTAzLCAyMjUsIDc0LCAyMzcsIDE0NCwgMjQ4LCAyMjksIAorICAgIDIxOCwgNTMsIDIxMCwgODgsIDIxOCwgMTI0LCAyMjksIDY3LCA4MiwgMjI3LCAxLCAyMjcsIDE3NCwgMjE1LCAyNTIsIDIzOCwgCisgICAgMTgwLCAyMTEsIDYzLCAyMjksIDY2LCAyNDcsIDI0MiwgMjQ1LCAxNTIsIDMsIDIzNywgNTUsIDIwNCwgNTgsIDI0OCwgMTU0LCAKKyAgICAyMzcsIDU1LCAyNDcsIDIwMywgMjM3LCA1NSwgMTIwLCAyMzcsIDUzLCAyMTEsIDIyMCwgMjM3LCA1NSwgMjM3LCAyMzcsIAorICAgIDIzNywgNTUsIDIzNywgNTYsIDMsIDQ3LCAyNDgsIDI2LCAyMzcsIDU1LCAyMzcsIDI0NCwgMjM3LCA1NSwgMjAzLCA0NSwgCisgICAgMjM3LCA1NSwgMjE3LCAxNjYsIDIzNywgNTUsIDIzNywgNTYsIDMsIDIxNiwgNTQsIDIxNiwgNjcsIDIzNywgNTMsIDIzNywgCisgICAgNTYsIDI0NCwgNjYsIDI0MywgMjIyLCAyMTMsIDYzLCAzLCAzNCwgNzAsIDIzMSwgNiwgMjQxLCAxMTcsIDE1NywgMjQ3LCAKKyAgICAxODAsIDI1MCwgMjIwLCA5NywgMjQ4LCAxMiwgMjEyLCA1NCwgOTcsIDI0NSwgMjQ0LCA5NywgMjExLCAxOTYsIDIxMCwgCisgICAgMTY3LCA5NywgMjQyLCA0OSwgMjQ0LCAxNDUsIDk3LCAyMTgsIDEyNSwgNzYsIDIxOCwgNDUsIDIzOSwgMjEwLCAyNDgsIDgzLCAKKyAgICAyNDMsIDEzMywgOTcsIDIxMSwgMjEyLCAyNDgsIDI1MCwgMjA5LCAzOCwgMjQ4LCAyNTAsIDYxLCAyMzksIDE5NywgMjM2LCAKKyAgICAxMiwgMjE4LCA1NywgOTcsIDIyNCwgNTMsIDI0OSwgMTAsIDI0NSwgOTIsIDI0MCwgMjE0LCA3OSwgMjQzLCA5NywgNTQsIAorICAgIDI0NSwgMTQxLCAyNDcsIDM3LCAyNDgsIDIzNCwgMywgMjAzLCA0MywgNTQsIDI0OCwgMjM0LCAzLCAyNDMsIDk3LCA1NCwgCisgICAgMjQ4LCAyMzQsIDMsIDI0MCwgMjMwLCA1NCwgMjQ4LCAyMzQsIDMsIDIxOCwgMjAsIDU0LCAyMjQsIDUzLCAzLCAyMDQsIDExLCAKKyAgICAyNDYsIDE3OCwgMywgMTc3LCAyMDgsIDkxLCAyNSwgMjAzLCA0MywgNTQsIDIxNCwgMTc0LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIAorICAgIDI0NywgMjA3LCAyMjQsIDEwOCwgMjM5LCAyMDIsIDI0MywgMTU0LCAyMTksIDI0OCwgMjQzLCAxNTksIDI0MiwgMTIsIDI0MCwgCisgICAgMTEsIDIzOSwgMTgyLCAxNzEsIDI0MCwgMTEsIDIzOSwgMTgyLCAyMTksIDE1NCwgMywgMjQ1LCA5NSwgMjE5LCAxNTQsIAorICAgIDI0MCwgOTUsIDIwNiwgMjI0LCAyNDcsIDcyLCAyMDksIDE4MywgMjQ3LCA3MiwgMjQ3LCAzOCwgMjMxLCAzNSwgMjQ2LCAKKyAgICAxNzgsIDMsIDE3NywgMjA4LCA5MCwgMjQ2LCAxNzgsIDMsIDE4MywgMjA4LCA5MCwgMjQ4LCAyMzEsIDI0NiwgMTc3LCAyNDYsIAorICAgIDIyLCAyMTcsIDE2MSwgMjE1LCAxOTEsIDIxNywgMTYxLCAyMTksIDk0LCAyMTEsIDUzLCAyMTUsIDEzMywgMjA4LCA4MiwgCisgICAgMjE1LCAxMzMsIDI0OCwgOCwgMjEwLCA3LCAyMjcsIDIyNywgMjIxLCAxNTgsIDIyMSwgMTU5LCAzLCAyNDQsIDY1LCAyNDUsIAorICAgIDE1MSwgMjQ2LCAxNiwgMjQ4LCA5LCAxNzEsIDI0OCwgOSwgMjM3LCAyNDQsIDI0OCwgOSwgMjQ4LCAyNiwgMjQ4LCA5LCAKKyAgICAyMTksIDI0MywgMjQ4LCA5LCAyNDgsIDYsIDIyMywgODUsIDI0OSwgMTQsIDIxNCwgMTgyLCAyMjQsIDI0MiwgMjA5LCAxNjIsIAorICAgIDIxNiwgMTUyLCAyMTksIDE1MiwgMjQwLCA2NSwgMjI1LCAxNzIsIDIxNCwgMjIyLCAyNTAsIDE5NSwgMjE3LCAxODUsIDI1MSwgCisgICAgMTE5LCAyMjcsIDMsIDI0NiwgMTYyLCAyMjQsIDI1NCwgMjE5LCAyMTAsIDIwOCwgOTgsIDIzMSwgNDYsIDIwOCwgOTgsIAorICAgIDIxOSwgMTYxLCAyNDEsIDIzNiwgOTcsIDIzMSwgNDMsIDI0MSwgNTcsIDI0MSwgNTgsIDMsIDE4MywgNTMsIDU1LCAyNDYsIAorICAgIDE2LCAyMjUsIDEzNywgMywgMjI2LCAyNDksIDIzOSwgMjI1LCAyNDYsIDE2LCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgCisgICAgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMTYsIDE4OCwgMjM5LCAyMjUsIDE3MSwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAKKyAgICAyMzksIDIyNSwgMjE4LCAyOCwgMjE4LCAyOSwgMjM2LCA1MywgMjIyLCAyMTAsIDIyNCwgODAsIDIxOCwgMTc2LCAyMjQsIAorICAgIDgwLCAyMTgsIDE3NywgMywgODYsIDUzLCAyNTAsIDUwLCAyMjcsIDIyMiwgMjA1LCAyMjksIDIyNCwgNzksIDIyNCwgODAsIAorICAgIDIxOCwgMTc3LCAyMjAsIDY4LCAyMjEsIDE5MiwgMjI0LCA4MCwgMjE4LCAxNzUsIDI1MCwgMTk2LCAzLCAyNDgsIDIyMCwgCisgICAgMjQ3LCA2NSwgMjQ3LCA2NiwgMywgMjM5LCAyMTgsIDIwNSwgMjI2LCAyNDcsIDY1LCAyMDksIDE1OSwgMjE2LCAyMDQsIAorICAgIDIwNSwgMjI1LCAyNDAsIDYsIDIxNywgMjE3LCAyMTgsIDM1LCAyMTEsIDc0LCAyMTcsIDI1NCwgMjQ4LCAxNjAsIDIwNywgCisgICAgMTM4LCA4NiwgMjUwLCA5MSwgMjQ2LCAxOCwgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkxLCAyNDYsIDE4LCAKKyAgICA4NiwgMjUsIDk2LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTIsIDMsIDQzLCAxMTgsIDIxOSwgMTk5LCAyNDYsIDE4LCAxODMsIAorICAgIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjUwLCAxOTQsIDE4MywgMjUsIDE3NywgMTcxLCAyNDYsIDYyLCAKKyAgICAyNTAsIDkxLCAxMjQsIDI0NywgMjA2LCA5NywgMTM4LCAyNDcsIDIwNiwgOTcsIDIxMSwgMjE3LCAzLCAyNDcsIDU4LCA5NSwgCisgICAgMjExLCAyMTYsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCAyMTEsIDIxNywgMywgMTI2LCAyMTEsIAorICAgIDI0MSwgMjA0LCA3NCwgMjQ4LCAyMDMsIDI0MSwgMTE3LCAyMTgsIDgxLCAyMjcsIDIxNywgMjI1LCAxNDksIDIzOCwgNDksIAorICAgIDIxNiwgMTEsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAyMjcsIDQzLCAzLCAyMzEsIDE3LCAyMTksIDksIDI0NiwgMTYsIDIyNywgCisgICAgNDMsIDMsIDIyOSwgMTUxLCAyMjksIDE1MSwgMjI3LCA0MiwgMTcxLCAyMjcsIDQyLCAyNDgsIDEyOCwgMjQ4LCAxMjksIDMsIAorICAgIDI0NywgNTgsIDk1LCAyNDgsIDcsIDIyNywgMTA1LCA5NywgMjE2LCAyMDUsIDI0NywgMTQ1LCAyNDksIDI2LCAzLCA5NiwgCisgICAgNTMsIDU1LCAyNDEsIDg0LCAzLCA5NiwgNTMsIDU1LCAyMjAsIDMyLCAzLCAyNDAsIDIxMiwgMTMxLCAzLCA0OSwgNTAsIDUzLCAKKyAgICA1NSwgMjExLCAyNDksIDMsIDg2LCA1MywgNTUsIDIwOCwgMTQ1LCAzLCAxNzcsIDUzLCA1NSwgMjIxLCAxOTIsIDExOCwgCisgICAgMjA2LCAyNDgsIDI0MSwgMTQxLCA5NywgMjI5LCAxNDgsIDIwOSwgMTUyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDYsIDIyNywgCisgICAgMTczLCAyMzEsIDExLCAxNiwgMzUsIDgsIDUsIDIyNywgMTczLCAyMzEsIDExLCAxNiwgMzUsIDIyMSwgNDUsIDIzMSwgMTEsIAorICAgIDE2LCAzNSwgMjEwLCAxMDIsIDIzMSwgMTEsIDE2LCAzNSwgOCwgMjI3LCAxNzMsIDIzOSwgMjQ5LCAyNDEsIDExNywgMjA4LCAKKyAgICAxNDAsIDIwMywgMjI1LCAyMzcsIDEzMCwgMjIxLCAyOCwgMjUsIDI0OCwgMTQsIDIzNiwgMTM0LCAyMTgsIDEwNiwgMjI0LCAKKyAgICAxNTEsIDIwOSwgMTYwLCAyNDUsIDExMiwgMjQ4LCAyNTEsIDIxMiwgODgsIDIxOCwgNjEsIDIxMSwgOTUsIDMsIDEwMSwgCisgICAgMjQzLCA4NSwgMjMwLCAxNjksIDE2LCAzNSwgMjQ4LCAxNDEsIDIwOCwgODAsIDI0MSwgMTAwLCA2MiwgNTEsIDI0NywgMTQ1LCAKKyAgICA2MSwgNTEsIDI0NywgMTQ1LCAyMjgsIDgsIDIxNiwgMTM4LCAyNDYsIDYxLCAyMjgsIDgsIDI0OCwgMjYsIDI0NiwgNjEsIAorICAgIDIyOCwgOCwgMjE5LCAyNDMsIDI0MywgMjIxLCAyMjgsIDgsIDI0OCwgMjYsIDI0MywgMjIxLCA1LCAyMTksIDI0MywgMjQzLCAKKyAgICAyMjEsIDUsIDI0OCwgMjYsIDI0MywgMjIxLCAyMDYsIDIyMywgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDIxNiwgCisgICAgMTM4LCAyMDgsIDg1LCAyMDYsIDIyMywgNSwgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDUsIDIxNiwgMTM4LCAyMDgsIAorICAgIDg1LCAyMjYsIDI1MSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIAorICAgIDYxLCA0MywgMjQ1LCAxMzEsIDIxOCwgNDgsIDI0NSwgMTMxLCAyMTgsIDQ5LCAzLCAyMzcsIDEzNiwgNTYsIDI0NSwgMTMxLCAKKyAgICAyMTgsIDQ4LCAyMjEsIDE2MiwgNDksIDIxMywgMTQ2LCAzLCAxMjYsIDI0MywgODMsIDIyMSwgMTYyLCA1MCwgMjEzLCAxNDYsIAorICAgIDMsIDEyNiwgMjQzLCA4MywgMTYsIDM1LCAyMjUsIDg3LCAyNDYsIDE4NCwgNjEsIDgsIDI0NSwgMTMwLCA3OSwgOCwgMjQ1LCAKKyAgICAxMzAsIDI0NiwgMjIyLCAyNDUsIDEzMCwgMjIwLCA0MCwgOTcsIDI0MiwgNzIsIDc2LCAyMTksIDMyLCAyMzAsIDM5LCAyMjQsIAorICAgIDIyLCAyMTAsIDk2LCAyMjQsIDIzNywgMywgMjIyLCA2NCwgMjQ3LCAyMjIsIDI0NywgMjM4LCA3NiwgMjM1LCAyMjIsIDI0NiwgCisgICAgMjAsIDI0MCwgMTAzLCAxMTgsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAxMjAsIDIyMCwgODMsIDI0NiwgMjAsIAorICAgIDI0MCwgMTAzLCAxMjYsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0NywgMjIwLCA4MywgMjQ2LCAyMCwgCisgICAgMjQwLCAxMDMsIDIzOSwgMjMzLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4OCwgMjIwLCA4MywgMjQ2LCAKKyAgICAyMCwgMjQwLCAxMDMsIDIxMywgMTEyLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxNDMsIDIyMCwgODMsIAorICAgIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDY0LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA5LCAxNTMsIDIyMCwgCisgICAgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTU1LCAKKyAgICAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjIwLCAyNywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTMyLCAyNDYsIAorICAgIDIwLCAyNDAsIDEwMywgMjA5LCAyNiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIzOSwgMTQzLCAyNDYsIDIwLCAyNDAsIDEwMywgCisgICAgMjM5LCAyMzEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTIsIDg0LCAyNDYsIDIwLCAyNDAsIDEwMywgMjEzLCAxMTAsIDI0NiwgCisgICAgMjAsIDI0MCwgMTAzLCAyNDEsIDE0MiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMiwgNjIsIDI0NiwgMjAsIDI0MCwgMTAzLCAKKyAgICAyMDksIDE1MSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTExLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxNTMsIDUwLCAKKyAgICAyMTEsIDIxNiwgNTAsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCA1MCwgMjExLCAyMTcsIDMsIDEyNiwgCisgICAgMjExLCAyNDEsIDIwNCwgNzQsIDI0NywgMTc1LCAyNDcsIDE3NiwgMywgMjExLCAyNDEsIDIwNCwgNzQsIDIxNSwgMjUxLCAKKyAgICAyNDgsIDEyOCwgMjQ4LCA5LCAyNDcsIDU2LCAyMjUsIDEwOSwgMjQ2LCAxOSwgNjIsIDIxMiwgNjMsIDI1LCAyNDUsIDEyOSwgCisgICAgMjIxLCAxOTIsIDIxOCwgMTEyLCAyMzYsIDEyNiwgMjI1LCAxMjMsIDIzMSwgNTAsIDI0NywgMTUyLCAyMTAsIDIyOCwgMjI3LCAKKyAgICAxNjYsIDIxMiwgNTIsIDIxOSwgMjQ1LCAyMTEsIDE3OCwgMjQ0LCAxNTAsIDIxMCwgMjEwLCAyMTEsIDIwNSwgMjExLCAyMDYsIAorICAgIDIwNCwgNTksIDIzMCwgODMsIDQ5LCAyMzcsIDEyNCwgMjA5LCAxNjIsIDIxNiwgMTUyLCAyMDksIDE2MiwgMjE2LCAxNTMsIAorICAgIDMsIDIxOSwgMTUzLCA1MCwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgNjEsIDIwOCwgMTI2LCAyMDksIDE2MSwgCisgICAgNjIsIDIwOCwgMTI2LCAyMDksIDE2MSwgMjA5LCAxNjIsIDIyMCwgMzIsIDIwOCwgMTQ1LCA3NiwgMjI0LCA3NiwgMjQ2LCAKKyAgICA0MCwgMjI0LCA4MCwgMjE4LCAxNzYsIDI0OSwgMjYsIDc2LCAyNDEsIDU3LCAyMTEsIDEwMCwgMjQxLCA1NywgMjQxLCA1OCwgCisgICAgMywgMjI3LCAxMzEsIDIzOSwgMTg5LCAyNDEsIDU3LCAyMTksIDEwLCAxMTUsIDIxMSwgMTAwLCAyNDEsIDU3LCAyMjcsIAorICAgIDEwNCwgMjE5LCA5MywgNjIsIDIxNywgMTYxLCAyMjYsIDI1MSwgNDksIDIxOSwgOCwgMjI2LCAyNTEsIDQ5LCAyNDgsIDI0NiwgCisgICAgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIzOSwgMTQ5LCAyMTksIDksIDIyNiwgMjUxLCA0OSwgMjE5LCAxNDcsIDIyNiwgMjUxLCAKKyAgICA0OSwgMjQ1LCAxNDQsIDQ5LCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIwNywgMTc0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIAorICAgIDIxNiwgMTg4LCAyMzcsIDEyNCwgMywgMjM5LCAyNTQsIDIxMSwgMTk1LCAyMTYsIDczLCAyMTYsIDE4OCwgMjM3LCAxMjQsIAorICAgIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjA5LCAyMCwgMTEyLCA1NCwgMjE2LCA3MywgMjA5LCAyMCwgMTIxLCAKKyAgICA1NCwgMjE2LCA3MywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMTYsIDczLCAyMzcsIDEyNCwgMywgMTAxLCAyNDAsIDMsIDI0MCwgCisgICAgMjAxLCAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIxOSwgNzEsIDI0OCwgMTA0LCAxMDEsIDI1LCAyMTUsIDI1MywgMjM5LCAKKyAgICAyNTMsIDYxLCAxMjEsIDIxOCwgNTksIDQ5LCAyMzcsIDEyNCwgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA0OSwgMjE4LCA1OSwgCisgICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA0OSwgMjE4LCA1OSwgCisgICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDQ5LCAyMTgsIDU5LCAyNDksIDIzLCAKKyAgICAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgMTEyLCAyMTgsIDU5LCAKKyAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCAxMTIsIDIxOCwgNTksIAorICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgMTEyLCAyMTgsIDU5LCAyNDksIDIzLCAKKyAgICAyMzEsIDM1LCA2MiwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyNDQsIDExLCAyNDUsIDIyMCwgMjI5LCAxNTAsIAorICAgIDI1LCAyMjQsIDksIDEyNiwgMjIyLCAyMTgsIDI0NSwgMjE5LCAyMTcsIDIzMSwgMjE4LCA2NywgMjQ3LCA3NCwgNjIsIDIzNywgCisgICAgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIDE1NCwgNjEsIDIzNywgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIAorICAgIDE1NCwgMjEyLCA3LCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDIwOSwgMjIxLCAyNDcsIDIyLCAyMDQsIDYsIDIyOSwgCisgICAgMTQ5LCAxMTgsIDI0NywgMTQ2LCAyMjQsIDksIDEyMCwgMjQ3LCAxNDYsIDIyNCwgOSwgMTI2LCAyNDcsIDE0NiwgMjI0LCA5LCAKKyAgICAyMDgsIDExNywgMzgsIDIxOCwgMjI4LCAyNDUsIDIyMCwgMjM3LCA5MSwgMjQzLCAxNTQsIDIxNCwgMTg0LCAyMTcsIDIzMiwgCisgICAgMjM1LCAxNTYsIDI0MCwgNjUsIDIzNSwgMTU2LCAyMTksIDI0OCwgMjQzLCAxNjAsIDIzNSwgMTU2LCAyNDMsIDEwNywgMywgCisgICAgMjA5LCAxMTIsIDI0MywgMTA3LCAzLCAyMDksIDExMywgMjUsIDIxOCwgMTYxLCAyNDMsIDEwNywgMywgMjE4LCAxNjEsIAorICAgIDIzOSwgMTM1LCAzLCAyMTgsIDE2MSwgMjM5LCAxMzUsIDMsIDIwOCwgMjI1LCAyMzksIDEzNSwgMywgMjUwLCAyMzIsIDIwMywgCisgICAgMTk2LCA2MiwgMjM5LCAxODIsIDIzOSwgMTgyLCAxNzEsIDIzOSwgMTgyLCAyNDcsIDM4LCAxMjIsIDI0MywgMTQwLCAyNDcsIAorICAgIDM4LCAyNDAsIDExLCAyNDcsIDIzMywgMjQwLCAxMSwgMjQ3LCA4NywgMjQxLCA5NCwgMjIxLCAxNjAsIDI0MSwgOTQsIDIyMSwgCisgICAgMTYxLCAyMTksIDE1MywgMjQxLCA5NCwgMjIxLCAxNjEsIDIxOSwgMTU5LCAyMjEsIDE2MCwgMjIxLCAxNjEsIDIxOSwgMTUzLCAKKyAgICAyMjEsIDE2MSwgMjE5LCAxNTksIDI0MSwgOTQsIDI0MywgMTA2LCAyNDEsIDk0LCAyMTksIDE1MywgMjQxLCA5NCwgMjE5LCAKKyAgICAxNTEsIDI0MywgMTA2LCAyMTksIDE1MywgMjE5LCAxNTEsIDIwNCwgODUsIDIxMSwgMjAyLCAyMjEsIDE2MSwgMjE5LCAxNTksIAorICAgIDIxMSwgMjAyLCAyNDcsIDczLCAyMTksIDE1OSwgMjQ0LCAxMSwgMjA0LCAxNSwgMjI0LCAxMDUsIDIyNSwgNjQsIDIxOSwgCisgICAgMjAxLCAyNDYsIDE4LCA1MCwgMjUsIDQ5LCAyMTMsIDE0NiwgMjUwLCA5MSwgMjQ3LCA1OCwgMjAzLCAxOTYsIDIzMSwgNDEsIAorICAgIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ0LCA2NCwgMjM5LCAxNzYsIDIxMiwgNzIsIDk3LCAyNDUsIDIyMSwgMzgsIDIyOSwgCisgICAgMTUxLCAyMTUsIDIxNCwgMjIyLCAyMTAsIDIxOSwgMTU0LCAzLCA0MywgMjA5LCAxMTIsIDIxMSwgNjUsIDI0NiwgMTc3LCAKKyAgICAyNDQsIDE5NiwgMjI5LCAzMywgMjI3LCA5OCwgMjExLCAyMTUsIDIzNywgNjUsIDIzMSwgNTAsIDIxMiwgMTM2LCAxMjYsIAorICAgIDIxNiwgMTYzLCA1NSwgMTI2LCAyMTYsIDE2MywgNTYsIDEyNiwgMjE2LCAxNjMsIDIyNywgMjIyLCAxMjYsIDIxNiwgMTYzLCAKKyAgICAyMTYsIDE2LCA0OSwgMjExLCAyMTIsIDI0NywgMTkyLCA1MCwgMjExLCAyMTIsIDI0NywgMTkyLCAxMjAsIDIxMSwgMjEyLCAKKyAgICAyNDcsIDE5MSwgMTI2LCAyMTEsIDIxMiwgMjQ3LCAxOTEsIDQ5LCAyMDksIDM4LCAyNDcsIDE5MiwgNTAsIDIwOSwgMzgsIAorICAgIDI0NywgMTkyLCA0OSwgMjUwLCAyMjAsIDI0NywgMTkyLCA1MCwgMjUwLCAyMjAsIDI0NywgMTkyLCAyMjQsIDM0LCAyNDcsIAorICAgIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzQsIDI0NywgMTkyLCAyMjcsIDEzMiwgMjI0LCAzMywgMjQ4LCAyNDgsIDk4LCAzLCAKKyAgICAyNDgsIDI0NywgMjQ4LCAyNDgsIDEzMiwgMjAzLCAxOTYsIDI0OCwgMjQ4LCA5OCwgMywgMTMyLCAyMDMsIDE5NiwgMjQ4LCAKKyAgICAyNDgsIDI2LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDI2LCAxMzIsIDIwMywgMTk2LCAxNTcsIDI0NiwgCisgICAgMTY5LCA4MiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMjQ2LCAxNjgsIDIwMywgMjMzLCAyMjUsIDEwNiwgMjI0LCAxNCwgMjM5LCAKKyAgICAxMDMsIDIwOCwgMTY3LCAyMDgsIDEyMiwgMjExLCA4NiwgNzYsIDIyNywgMTQ2LCAyMTIsIDEzNywgNzYsIDIzMCwgMTcwLCAKKyAgICAyMjMsIDI1MSwgMjM3LCAyNDEsIDI0MCwgMTAyLCAyMzcsIDI0MSwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAKKyAgICAyNDAsIDEwMywgMywgMjA5LCAxNzksIDc2LCAyMzAsIDg1LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIAorICAgIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgOCwgMjUsIDIxMiwgMzAsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIAorICAgIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIAorICAgIDIyNCwgOCwgMjUsIDIwOCwgMjQzLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIzNywgMTM1LCAyMTIsIDMwLCAKKyAgICAyNDAsIDEwMywgMywgMjM2LCA1MiwgMjA0LCA4LCAyNDAsIDEwMiwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIAorICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMjE0LCAyMTQsIDI0NCwgNDUsIDIzOSwgMTc0LCAyMTYsIDExMywgMjQwLCAxMDIsIDIxMiwgCisgICAgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDU0LCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMCwgMjEwLCAyMTIsIAorICAgIDI5LCAyNDAsIDEwMiwgMjIyLCAyMTYsIDI0MCwgMTAyLCAyNDAsIDIwMywgMjQwLCAxMDIsIDIwNiwgMjUzLCAyNDAsIDEwMiwgCisgICAgMjQwLCAxMDMsIDMsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjE5LCAxLCAyNDAsIDEwMiwgMjQ1LCAyMTIsIDI0MCwgMTAyLCAKKyAgICAyNDUsIDIxMywgMjQwLCAxMDIsIDIyOSwgNjUsIDI0MCwgMTAyLCAyNDAsIDEwMywgMjA5LCAyMywgMzQsIDIyOSwgNjYsIAorICAgIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjI5LCA2NSwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIAorICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTAsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgCisgICAgMjUsIDIwNCwgOCwgMjQwLCAxOTEsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgMjUsIDIwOCwgMjQzLCAyNDAsIAorICAgIDE4NCwgMjQzLCAxNjEsIDI0MCwgMTAyLCAyMDMsIDIzMiwgMjQwLCAxMDIsIDI1MCwgMjE0LCAyNDAsIDEwMiwgMjE4LCAxOSwgCisgICAgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDAsIDEwMiwgMjE4LCAyMzIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgMjI3LCAxNywgCisgICAgNzYsIDIwOCwgNjIsIDI0MywgMTYxLCAyNDcsIDE0OCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMzksIDExNCwgMjQwLCAxMDMsIAorICAgIDMsIDE3MSwgMjI0LCA3LCAyNTAsIDIxMiwgMjQwLCAxMDIsIDI0MCwgNTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDAsIDEwMiwgCisgICAgMjEyLCA1MywgMjQwLCAxMDIsIDIwOCwgMjA1LCAyNDAsIDEwMiwgMjM3LCAyNDIsIDI0MCwgMTAyLCAyMjcsIDQsIDI0NSwgCisgICAgMTE0LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMzYsIDIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCisgICAgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDI0MCwgMTAzLCAyMTQsIDE4NiwgMjMxLCA1MCwgMjQwLCAKKyAgICA1OSwgMjUwLCA1NiwgMjQwLCAxMDIsIDIzOSwgMTk0LCAyNDAsIDEwMiwgMjEyLCA1NCwgMjQwLCAxMDIsIDI0MywgMTMzLCAKKyAgICAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwNCwgMywgMjI0LCA3LCAyNDAsIDEwMywgMywgMjI1LCAxMiwgMjI1LCA3NiwgMjM3LCAKKyAgICAyNDEsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIwOSwgCisgICAgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMTIsIDMwLCAKKyAgICAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDMsIDIxOCwgCisgICAgMjEyLCAzMSwgMjI5LCA2NSwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIDI0MCwgMTg0LCAyMTgsIDE5LCAyNDcsIAorICAgIDE4LCAyNDAsIDEwMiwgMjQ1LCAxMTQsIDI0NywgMTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDcsIDE4LCAyNDAsIDEwMiwgCisgICAgMjEyLCA0NywgMjM5LCAxMTQsIDI0MCwgMTAyLCAyMTIsIDQ3LCAyMTIsIDMwLCAyNDAsIDEwMiwgMjA2LCAyMTgsIDI0MCwgCisgICAgMTAyLCAyNDAsIDEwMywgMywgMjE1LCAyMTIsIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjIxLCAxOTIsIDIzOCwgMjcsIAorICAgIDIzOCwgMTYwLCAyNDAsIDEwMywgMywgMjIwLCA1MiwgMjM4LCAxNjAsIDIxOCwgMjMwLCAyNDcsIDIzOSwgMjQ0LCA1OSwgCisgICAgMjE0LCAxNjQsIDIyNCwgNDgsIDIzNywgNTcsIDIyNCwgNDgsIDIxMSwgMjE4LCAyMjQsIDQ4LCAyMzcsIDkzLCAyMTgsIAorICAgIDIzMCwgMjE2LCAxODcsIDExOCwgMjM3LCAxMjMsIDIxOCwgMjMwLCAyMTYsIDE4NywgMjQ3LCAyNTEsIDIzNywgMTAwLCAKKyAgICAyMzEsIDUwLCAyNDYsIDIyNCwgMjE4LCAyMzAsIDIzOSwgMTEzLCAyMTgsIDIzMCwgMywgMjE4LCAxOSwgMjQwLCAxMDIsIAorICAgIDIxOCwgMjMwLCAzLCAyMzksIDE4MywgMjM3LCA5OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKKyAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKKyAgICAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAKKyAgICAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDI0MSwgCisgICAgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIAorICAgIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgCisgICAgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDIxMSwgMjM4LCAKKyAgICAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIAorICAgIDIxMiwgMjI3LCAyMjksIDc5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgCisgICAgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIAorICAgIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyMDQsIAorICAgIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyNDEsIAorICAgIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMjExLCAKKyAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIAorICAgIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgCisgICAgMjMzLCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgMjM0LCAyMzEsIDUwLCA2MiwgMjExLCAxNzcsIDIxMiwgMiwgMjE3LCAKKyAgICA0MCwgNTEsIDIxOSwgMjMzLCAyMTIsIDIsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAKKyAgICA5NiwgMjE1LCAyMTgsIDE3NywgMjE1LCAyMTgsIDg2LCAyMTUsIDIxOCwgMTgzLCAyMTUsIDIxOCwgMTMyLCAzMiwgMjQwLCAKKyAgICAyNTEsIDIxOSwgMjMzLCA3OSwgMTMyLCAzMiwgMjQwLCAyNTEsIDIxOSwgMjMzLCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAKKyAgICAyMzMsIDc5LCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAyMzMsIDc5LCAyNTAsIDIzNiwgMjE5LCAyMzMsIDIxMCwgMTY5LCAKKyAgICAyNTAsIDIzNiwgMjE5LCAyMzMsIDQxLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIAorICAgIDIzMywgNDEsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDQxLCA3OSwgMTI0LCA1MiwgMjQ1LCAKKyAgICAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMzAsIDI0OCwgMjE5LCAyMzMsIDQxLCAyMzAsIDI0OCwgMjE5LCAKKyAgICAyMzMsIDc5LCA0MSwgMjMwLCAyNDgsIDIxOSwgMjMzLCAyMDUsIDI0MiwgNzksIDIxMiwgMCwgMjA1LCAyNDIsIDc5LCAyMTYsIAorICAgIDc0LCAyMTIsIDAsIDI0NiwgMTY3LCAyNDgsIDIwLCAyMTYsIDc0LCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE1LCAyMTgsIDIzNywgCisgICAgMzgsIDIxMSwgODEsIDIyNywgNDAsIDIxNiwgMTkzLCAyNDcsIDM5LCAyMzYsIDI0MCwgMjA4LCAxMTAsIDIzNiwgMjQwLCAKKyAgICAyMDgsIDExMSwgMywgMjQ3LCAxNzgsIDIyMSwgMTY3LCAyMDgsIDExMCwgMjI0LCAyMTMsIDE1NywgMjE2LCAxOTQsIDIxMSwgCisgICAgODcsIDIwOCwgMTA4LCAyMDgsIDEwOSwgMjQ3LCAzOSwgMjQ3LCAxNTMsIDIyMCwgMjksIDI0NywgMTUzLCAyMDgsIDU5LCAKKyAgICAyNDcsIDE1NCwgMjExLCA2MSwgMjI0LCAxMDksIDI1MCwgMjQwLCAyMzksIDI1MCwgMjQxLCA3NywgMjE4LCA1MSwgMjQ3LCAKKyAgICAzOSwgMjIwLCAyOSwgMjE4LCA1MSwgMjQ3LCAzOSwgMjA5LCAxOTcsIDIyMCwgMjksIDIwOSwgMTk3LCAyNTAsIDIyLCAyMjAsIAorICAgIDI5LCAyNTAsIDIyLCAyMTYsIDE0NSwgMjA2LCA0NywgMjQ0LCA0MSwgMjA4LCA1MCwgMjUwLCA4NiwgMjI3LCA4LCAyMDgsIAorICAgIDExNiwgMjI0LCA0MiwgMjI0LCAxMywgMjE2LCAxOTIsIDIxMCwgMTgyLCAyMTYsIDE5MiwgMjI0LCAxMywgMjQ3LCA4NiwgCisgICAgMjUxLCA5NSwgMjA4LCAxMDcsIDIxMiwgMjUxLCAyMTUsIDE4OCwgMjExLCAyMTAsIDIzNiwgMTA2LCAyMDgsIDExNCwgMjI3LCAKKyAgICAxMzQsIDgwLCAyMDgsIDExNCwgMjI3LCAxMzQsIDI0NSwgMTk5LCA1NCwgMjE4LCA1MSwgMjQ3LCAyNCwgMjE2LCA2NywgCisgICAgMjI3LCAxMzQsIDIwOCwgODIsIDIzOSwgMjI2LCAyMjAsIDMyLCAyMTgsIDMwLCAyNDMsIDg4LCAyMjEsIDE5MiwgMjQxLCAKKyAgICA2MywgNTQsIDIxMiwgMjgsIDk3LCAyMjEsIDE5MiwgMjEyLCAyOCwgOTcsIDIxNywgMTYwLCAyMjcsIDg3LCAyMzEsIDUwLCAKKyAgICAyMzAsIDE5OCwgMjE4LCA5NywgOTcsIDI0MywgMTE0LCAyMjEsIDE2NiwgMjI3LCA4NywgOTcsIDIxOCwgMjQsIDIwNCwgODEsIAorICAgIDk3LCAyMjEsIDE4MiwgMjA0LCA4MSwgOTcsIDI0OCwgODIsIDIyMSwgMTkyLCAyNDgsIDgxLCAyNDgsIDgwLCAyMjQsIDEzLCAKKyAgICAyNDgsIDgwLCAyMTksIDI1LCAyMjEsIDE5MiwgMjE5LCAyNCwgMjQ2LCAxMzIsIDI0NSwgMTIzLCAyMjQsIDIzNiwgOTcsIAorICAgIDIwMywgMjQ3LCA5NywgMjE2LCA4MywgMjQ5LCAyOCwgOTcsIDIwOCwgMTY4LCAyMDQsIDgxLCAyNDYsIDEzLCAyMTIsIDIwOSwgCisgICAgMjQ4LCAyMDYsIDI0OCwgMjA0LCAyMTksIDU3LCAyNDUsIDE4MywgMjQ1LCA3OSwgMjQ5LCA3LCAyNDYsIDQxLCA0OSwgMjI2LCAKKyAgICAyMjksIDIwOCwgODYsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgMjE3LCAyMjAsIDU0LCA0MywgMjMxLCAyNSwgMjExLCAyMzksIAorICAgIDI0NywgMjMxLCA5NywgMjM4LCA1OSwgOTcsIDI0NSwgMTU3LCAyNSwgMjI4LCAxOCwgMjEyLCA1NCwgMjUxLCAxMzUsIDIxMiwgCisgICAgMjMxLCAyNDksIDYsIDI0OCwgMTI3LCAyNDgsIDEyOCwgMjQ4LCAxNTEsIDIxOCwgOTcsIDc2LCAyMDMsIDIzMSwgMjM3LCAKKyAgICAxMzEsIDI1LCAyMDMsIDIyNSwgMjEzLCA4LCAyMjAsIDU2LCAyNDIsIDQ2LCAyMjQsIDE3LCAyMTYsIDE5MywgMjA4LCAxMTgsIAorICAgIDIyNCwgMTksIDI0OCwgMTksIDIwNiwgMjIzLCAyMjQsIDExOSwgMjUxLCA1MiwgMjA2LCAyMjMsIDI1MSwgNTIsIDIwNiwgCisgICAgMjIzLCA1LCAyNTEsIDUyLCA1LCAyNTEsIDUyLCAyMjEsIDE3MSwgMjUxLCA1MiwgMjUxLCA1MywgMjQ0LCAyNSwgMjUxLCAKKyAgICA1MywgMjUwLCA5NywgMjE0LCAyMjEsIDIyMCwgMjksIDIzOSwgMjUwLCAyNDEsIDc3LCAyNDMsIDIxMSwgMjI3LCA0MCwgCisgICAgMjE5LCA2MCwgMjEyLCAyNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDM2LCAxMzYsIDE2LCAzNSwgMjUxLCA1NCwgMTM2LCAxNiwgCisgICAgMzUsIDIzOSwgMjQ5LCAxMzYsIDE2LCAzNSwgMjQxLCAxNzksIDEzNiwgMTYsIDM1LCAyMDQsIDgwLCAxMzYsIDE2LCAzNSwgCisgICAgMjUwLCAxNDYsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAxMzIsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAKKyAgICAxMzEsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTUsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTQsIAorICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIwOSwgMTM2LCAxNiwgMzUsIDIwNSwgMjA4LCAxMzYsIDE2LCAzNSwgMjA1LCAyMDcsIDEzNiwgCisgICAgMTYsIDM1LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDIxOCwgMTg0LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDYyLCAyMTAsIAorICAgIDIyMSwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MiwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MSwgCisgICAgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MCwgMTM2LCAxNiwgMzUsIDI0NiwgNjQsIDEzNiwgMTYsIDM1LCAyMTUsIAorICAgIDEsIDEzNiwgMTYsIDM1LCAyMjIsIDUxLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTMsIDEzNiwgMTYsIDM1LCAyMDUsIDE5MiwgCisgICAgMTM2LCAxNiwgMzUsIDIxNSwgMjE5LCAyMTUsIDEsIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAwLCAxMzYsIDE2LCAKKyAgICAzNSwgMjM4LCAzMSwgMTM2LCAxNiwgMzUsIDIxMiwgMTMzLCAxMzYsIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM5LCAxMzYsIAorICAgIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM4LCAxMzYsIDE2LCAzNSwgMjQ1LCAxMzQsIDc2LCAyMzAsIDIyMCwgMTM2LCAxNiwgCisgICAgMzUsIDIxNiwgMTI4LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIDM1LCAyNDUsIDE3NCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKKyAgICAyMzAsIDIxOSwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgCisgICAgMjQ1LCAxMzQsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzIsIDEzNiwgMTYsIDM1LCAKKyAgICAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIDM1LCAyMTUsIDIsIDc2LCAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIAorICAgIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgMjA2LCA0MiwgMTM2LCAxNiwgCisgICAgMzUsIDIwOCwgMjE4LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIyNywgMjMzLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIAorICAgIDI1MCwgMTg3LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAKKyAgICAyMTUsIDIsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjE1LCAyLCA3NiwgMjUwLCAxODYsIAorICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIxMCwgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjgsIDc2LCAyNTAsIDE4NiwgCisgICAgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNywgMTM2LCAxNiwgMzUsIAorICAgIDIxNiwgMTI2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNCwgMTM2LCAxNiwgMzUsIDI1MSwgCisgICAgMTcsIDEzNiwgMTYsIDM1LCAyNTEsIDE2LCAxMzYsIDE2LCAzNSwgMjI1LCA5NywgMTM2LCAxNiwgMzUsIDIxNSwgNywgMTM2LCAKKyAgICAxNiwgMzUsIDI1MCwgOTAsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NSwgMTM2LCAxNiwgMzUsIDIxNiwgMTU0LCAxMzYsIDE2LCAKKyAgICAzNSwgMjUwLCAyNSwgMTM2LCAxNiwgMzUsIDI0OCwgNTIsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjA5LCAyMTYsIDEzNiwgCisgICAgMTYsIDM1LCAyMDksIDIxNSwgMTM2LCAxNiwgMzUsIDIxNywgNDIsIDIyNywgMTIzLCAxMzYsIDE2LCAzNSwgMjQ4LCAwLCAKKyAgICAxMzYsIDE2LCAzNSwgMjQ3LCAyNTUsIDEzNiwgMTYsIDM1LCAyNDcsIDI1NCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ5LCAxMzYsIAorICAgIDE2LCAzNSwgMjIwLCA1NSwgMTM2LCAxNiwgMzUsIDIxMSwgMTk4LCAxMzYsIDE2LCAzNSwgMjA4LCAyMTYsIDEzNiwgMTYsIAorICAgIDM1LCAyMzcsIDIxMCwgMTM2LCAxNiwgMzUsIDIwNCwgNjgsIDEzNiwgMTYsIDM1LCAyMTgsIDE4LCAxMzYsIDE2LCAzNSwgCisgICAgMjQ3LCA3MCwgMTM2LCAxNiwgMzUsIDIwNywgMTY2LCAxMzYsIDE2LCAzNSwgMjQ3LCA0MSwgMjI0LCAyMywgMTM2LCAxNiwgCisgICAgMzUsIDIxNCwgMTk5LCA3NiwgMjMwLCA4NywgMTM2LCAxNiwgMzUsIDI0NywgODMsIDEzNiwgMTYsIDM1LCAyMDgsIDc5LCAKKyAgICAxMzYsIDE2LCAzNSwgMjExLCA5MiwgMjA4LCA3OSwgMTM2LCAxNiwgMzUsIDIyNywgMzksIDEzNiwgMTYsIDM1LCAyMTIsIAorICAgIDExLCAxMzYsIDE2LCAzNSwgMjA2LCAyMDIsIDEzNiwgMTYsIDM1LCAyMzYsIDUwLCAyNDIsIDI3LCAxMzYsIDE2LCAzNSwgCisgICAgMjUwLCA3MCwgMTM2LCAxNiwgMzUsIDIxOCwgMjYsIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyNDcsIDIxMCwgMTM2LCAxNiwgCisgICAgMzUsIDIxOCwgMTcsIDI0NywgMjEwLCAxMzYsIDE2LCAzNSwgMjUwLCAyNDYsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIAorICAgIDIwMiwgMjExLCA0NywgMTM2LCAxNiwgMzUsIDIxMSwgNDgsIDIxMCwgMjAyLCAyMTEsIDQ2LCAxMzYsIDE2LCAzNSwgMjEwLCAKKyAgICAyNDksIDEzNiwgMTYsIDM1LCAyMTcsIDI0NywgMTM2LCAxNiwgMzUsIDI0MywgMTUwLCAxMzYsIDE2LCAzNSwgMjQzLCAxNTIsIAorICAgIDEzNiwgMTYsIDM1LCAyNDMsIDE1MSwgMTM2LCAxNiwgMzUsIDIxNywgMTY5LCAxMzYsIDE2LCAzNSwgMjE3LCAxNTgsIDEzNiwgCisgICAgMTYsIDM1LCAyNDUsIDEyMSwgMTM2LCAxNiwgMzUsIDI0NSwgMTIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMTksIDEzNiwgMTYsIAorICAgIDM1LCAyNDUsIDExOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE3LCAxMzYsIDE2LCAzNSwgMjUxLCAyOSwgMTM2LCAxNiwgMzUsIAorICAgIDI0OCwgMjA3LCA3NiwgMjI1LCA4MSwgMTM2LCAxNiwgMzUsIDI0OCwgMjA3LCA3NiwgMjA2LCA3NCwgMTM2LCAxNiwgMzUsIAorICAgIDIxNiwgODEsIDEzNiwgMTYsIDM1LCAyMzYsIDQyLCAxMzYsIDE2LCAzNSwgMjIyLCA3OSwgMTM2LCAxNiwgMzUsIDI0NCwgCisgICAgMTMyLCAxMzYsIDE2LCAzNSwgMjI0LCAzNywgMTM2LCAxNiwgMzUsIDE2MiwgMjQyLCA1OSwgMTM2LCAxNiwgMzUsIDE2MiwgCisgICAgMjE5LCAyMTQsIDYyLCAyMjcsIDIxNywgMjMwLCAyMDQsIDUwLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDIzMCwgMjA0LCAKKyAgICA1MCwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDI0MiwgNjksIDIzMCwgMjA0LCAKKyAgICA1MCwgMjA4LCA4NSwgNjIsIDIxMiwgNDcsIDUsIDI0NiwgNjEsIDIyNSwgMTAsIDI2LCA2MSwgMjQ2LCA2MSwgMjYsIDYxLCAKKyAgICAyNDYsIDYxLCA3OSwgNjEsIDI0NiwgNjEsIDIwNSwgMjQyLCA3OSwgNjEsIDI0NiwgNjEsIDI0MCwgMTk1LCA3OSwgNjEsIAorICAgIDI0NiwgNjEsIDYxLCAyNDYsIDYyLCAyNDUsIDE5NSwgNjIsIDUsIDI0NiwgNjEsIDIxNSwgMTkxLCAyMDksIDIxNywgNjIsIAorICAgIDIwOCwgMjEzLCAyMTEsIDE3NywgNjIsIDIxMiwgNDcsIDUsIDIxMSwgMTc3LCAxNTcsIDYxLCAyMTEsIDE3NywgMjI1LCAxMCwgCisgICAgNjEsIDIxMSwgMTc3LCAyNiwgNjEsIDIxMSwgMTc3LCA3OSwgNjEsIDIxMSwgMTc3LCAyMDUsIDI0MiwgNzksIDYxLCAyMTEsIAorICAgIDE3NywgMjQwLCAxOTUsIDc5LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKKyAgICAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMjUsIDEwLCAyMTEsIDE3NywgNTEsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIAorICAgIDI0MywgMjIxLCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MiwgMjI1LCAxMCwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIAorICAgIDIyMiwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCAKKyAgICAyMjUsIDEwLCAyNDMsIDIyMSwgMjQzLCAyMjIsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIDIyNiwgMjQ2LCA2MiwgMjA1LCAKKyAgICAyNDIsIDUsIDIyNiwgMjQ2LCA2MiwgMjI1LCAxMCwgNSwgMjI2LCAyNDYsIDYxLCAyMjYsIDI0NywgMjQ1LCAxOTUsIDYyLCAKKyAgICA1LCAyMjYsIDI0NiwgMjA5LCA2MywgMzAsIDI0NSwgMTMwLCAxNTcsIDMwLCAyNDUsIDEzMCwgMjI1LCAxMCwgMzAsIDI0NSwgCisgICAgMTMwLCAyNiwgMzAsIDI0NSwgMTMwLCAyMDUsIDI0MiwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDc5LCAzMCwgMjQ1LCAKKyAgICAxMzAsIDI0MCwgMTk1LCA3OSwgMzAsIDI0NSwgMTMwLCAyMDksIDYzLCAyMTQsIDI1NCwgMTU3LCAyMTQsIDI1NCwgMjI1LCAKKyAgICAxMCwgMjE0LCAyNTQsIDI2LCAyMTQsIDI1NCwgNzksIDIxNCwgMjU0LCAyMDUsIDI0MiwgNzksIDIxNCwgMjU0LCAyNDAsIAorICAgIDE5NSwgNzksIDIxNCwgMjU0LCAxNTcsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAxMCwgMjM5LCAyMzMsIAorICAgIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjM5LCAyMzMsIDIxMSwgCisgICAgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIDc5LCAKKyAgICAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIAorICAgIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAyMTIsIDg4LCAKKyAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIAorICAgIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMTU3LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgCisgICAgMTAsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIAorICAgIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIAorICAgIDE1NywgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMTI2LCAKKyAgICAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIAorICAgIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjM5LCAKKyAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIAorICAgIDIxNiwgNzQsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIzOSwgMjMzLCAyMTgsIAorICAgIDYxLCA2MiwgMjExLCA5NCwgNzksIDIzOSwgMjMzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjEyLCA4OCwgCisgICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCAKKyAgICA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDIyNSwgMTAsIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgCisgICAgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAorICAgIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAKKyAgICAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDIxOCwgCisgICAgMTE4LCAyMTEsIDk0LCA5NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDIwOCwgODYsIAorICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgCisgICAgOTYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIAorICAgIDk0LCA4NiwgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIAorICAgIDI1MCwgOTQsIDk2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDIwOCwgCisgICAgODYsIDI1MCwgOTQsIDg2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjgsIDgsIAorICAgIDIwOCwgODYsIDI1MCwgOTQsIDk2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTc3LCA1MywgMywgNSwgMjQxLCAzMSwgCisgICAgMjUwLCA5NCwgODYsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAKKyAgICA5NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDg2LCA1MywgMywgCisgICAgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjQxLCAzMSwgCisgICAgMjUwLCA5NCwgNzksIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgCisgICAgOTQsIDc5LCAxODMsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgOTYsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIAorICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDIyOCwgOCwgCisgICAgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDE4MywgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgMjUwLCA5NCwgOTYsIDIwOCwgODQsIAorICAgIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA4NiwgMjA4LCAKKyAgICA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDk2LCAKKyAgICAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgCisgICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIAorICAgIDc1LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgCisgICAgODYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDk2LCAKKyAgICAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCA4NiwgMjA4LCAKKyAgICA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgOTYsIDIwOCwgODQsIAorICAgIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgCisgICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCAKKyAgICA3OSwgMjEzLCA3NSwgOTYsIDI0MCwgMSwgNDcsIDE3NywgMjQwLCAxLCA0NywgODYsIDI0MCwgMSwgNDcsIDE4MywgMjQwLCAKKyAgICAxLCA0NywgOTYsIDEwMywgNDcsIDE3NywgMTAzLCA0NywgODYsIDEwMywgNDcsIDE4MywgMTAzLCA0NywgOTYsIDI0NSwgCisgICAgMjIyLCA0NywgMTc3LCAyNDUsIDIyMiwgNDcsIDg2LCAyNDUsIDIyMiwgNDcsIDE4MywgMjQ1LCAyMjIsIDQ3LCA5NiwgNzksIAorICAgIDI0NSwgMjIyLCA0NywgMTc3LCA3OSwgMjQ1LCAyMjIsIDQ3LCA4NiwgNzksIDI0NSwgMjIyLCA0NywgMTgzLCA3OSwgMjQ1LCAKKyAgICAyMjIsIDQ3LCA5NiwgNzksIDQ3LCAxNzcsIDc5LCA0NywgODYsIDc5LCA0NywgMTgzLCA3OSwgNDcsIDk2LCA0MSwgNDcsIAorICAgIDE3NywgNDEsIDQ3LCA4NiwgNDEsIDQ3LCAxODMsIDQxLCA0NywgMTUzLCAyMDQsIDQ2LCA0MSwgNDcsIDE1MywgMjQxLCAKKyAgICAxNzYsIDQxLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0MSwgNDcsIDQ5LCAKKyAgICA1MCwgNDEsIDQ3LCAxMTIsIDEyMSwgNDEsIDQ3LCAyMDQsIDI2LCA5NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAorICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTcsIDE1MCwgNDcsIDIwNCwgCisgICAgMjYsIDE1MywgMjA0LCA0NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCAxNTcsIDE1MCwgNDcsIAorICAgIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgCisgICAgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgCisgICAgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIAorICAgIDE1MywgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTUwLCA0NywgMjA0LCAyNiwgCisgICAgMjExLCAyMzgsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAorICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIyNSwgMTAsIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgCisgICAgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAKKyAgICAyMTEsIDIzOCwgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAKKyAgICAxNzcsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgNzksIDE1MCwgNDcsIAorICAgIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAKKyAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgNzksIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMjA1LCAyNDIsIDc5LCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIwNSwgMjQyLCA3OSwgCisgICAgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAKKyAgICAxNzYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDUsIDI0MiwgNzksIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDk2LCAyMDgsIDg2LCAKKyAgICAyNTAsIDk0LCAxNzcsIDIwOCwgODYsIDI1MCwgOTQsIDg2LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDIwOCwgODYsIDI1MCwgCisgICAgOTQsIDk2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgCisgICAgMjUwLCA5NCwgODYsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDYxLCA1MywgMjA0LCA1LCAyMDgsIAorICAgIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTc3LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgCisgICAgMjQ4LCA4NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTgzLCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCA3OSwgCisgICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEwNSwgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMjAsIDIwOSwgNTcsIDc5LCAKKyAgICA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMzcsIDEzNywgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMTgsIDIwOSwgCisgICAgNjAsIDk2LCAyNDcsIDI0NSwgNjEsIDQ3LCA4NiwgMjQ3LCAyNDgsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIwOCwgMTQ1LCAKKyAgICAyMTMsIDc4LCA2MSwgNDcsIDg2LCAyMDgsIDE0NSwgMjEzLCA3OCwgNjEsIDQ3LCA5NiwgMjI3LCAyMTYsIDYxLCA0NywgODYsIAorICAgIDIxNiwgMTAsIDYxLCA0NywgOTYsIDIxNiwgMTAsIDYxLCA0NywgODYsIDIyNywgMjE2LCA2MSwgNDcsIDk2LCAyNDksIDI0LCAKKyAgICAyMTMsIDc3LCA2MSwgNDcsIDg2LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgNDcsIDk2LCAyMzksIDExNywgMjEzLCA3NywgNjEsIAorICAgIDQ3LCA4NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCA0NywgNjEsIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDYxLCA1MywgCisgICAgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCAyMDIsIDI2LCAyNDAsIDEwMiwgMjI0LCA1MiwgMjQwLCAxMDIsIAorICAgIDI0MCwgMTAzLCAzLCAyMDksIDgwLCAyMjIsIDIyMiwgMjQwLCAxMDIsIDIwOSwgNjIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCisgICAgMjM3LCA2MywgMjE1LCAyMjEsIDI0MCwgMTAyLCAyMzYsIDIwLCAyNDAsIDEwMiwgMiwgNzYsIDIwOSwgOTMsIDIzNiwgNTIsIAorICAgIDI0NSwgMTQ2LCAyMjcsIDEwMiwgMjQwLCAxMDIsIDIxNCwgMTg4LCAyMDcsIDE3OSwgMjA2LCAyNDAsIDI0MCwgMTAyLCAKKyAgICAyNDYsIDE2MSwgMjA0LCA1NywgMTIsIDE1LCAyMzUsIDE1MiwgMTIsIDE1LCAyMzUsIDE1MSwgMTIsIDE1LCAyMzUsIDE1MCwgCisgICAgMTIsIDE1LCAyMzUsIDE0OSwgMTIsIDE1LCAyMzUsIDE0OCwgMTIsIDE1LCAyMzUsIDE0NywgMTIsIDE1LCAyMzUsIDE0NiwgCisgICAgMTIsIDE1LCAyMzUsIDE0NSwgMTIsIDE1LCAyMzUsIDE0NCwgMTIsIDE1LCAyMzUsIDE0MywgMTIsIDE1LCAyMzUsIDE0MiwgCisgICAgMTIsIDE1LCAyMzUsIDE0MSwgMTIsIDE1LCAyMzUsIDE0MCwgMTIsIDE1LCAyMzUsIDEzOSwgMTIsIDE1LCAyMzUsIDEzOCwgCisgICAgMTIsIDE1LCAyMzUsIDEzNywgMTIsIDE1LCAyMzUsIDEzNiwgMTIsIDE1LCAyMzUsIDEzNSwgMTIsIDE1LCAyMzUsIDEzNCwgCisgICAgMTIsIDE1LCAyMzUsIDEzMywgMTIsIDE1LCAyMzUsIDEzMiwgMTIsIDE1LCAyMzUsIDEzMSwgMTIsIDE1LCAyMzUsIDEzMCwgCisgICAgMTIsIDE1LCAyMzUsIDEyOSwgMTIsIDE1LCAyMzUsIDEyOCwgMTIsIDE1LCAyMzUsIDEyNywgMTIsIDE1LCAyMzUsIDEyNiwgCisgICAgMTIsIDE1LCAyMzUsIDEyNSwgMTIsIDE1LCAyMzUsIDEyNCwgMTIsIDE1LCAyMzUsIDEyMywgMTIsIDE1LCAyMzUsIDEyMiwgCisgICAgMTIsIDE1LCAyMzUsIDEyMSwgMTIsIDE1LCAyMzUsIDEyMCwgMTIsIDE1LCAyMzUsIDExOSwgMTIsIDE1LCAyMzUsIDExOCwgCisgICAgMTIsIDE1LCAyMzUsIDExNywgMTIsIDE1LCAyMzUsIDExNiwgMTIsIDE1LCAyMzUsIDExNSwgMTIsIDE1LCAyMzUsIDExNCwgCisgICAgMTIsIDE1LCAyMzUsIDExMywgMTIsIDE1LCAyMzUsIDExMiwgMTIsIDE1LCAyMzUsIDExMSwgMTIsIDE1LCAyMzUsIDExMCwgCisgICAgMTIsIDE1LCAyMzUsIDEwOSwgMTIsIDE1LCAyMzUsIDEwOCwgMTIsIDE1LCAyMzUsIDEwNywgMTIsIDE1LCAyMzUsIDEwNiwgCisgICAgMTIsIDE1LCAyMzUsIDEwNSwgMTIsIDE1LCAyMzUsIDEwNCwgMTIsIDE1LCAyMzUsIDEwMywgMTIsIDE1LCAyMzUsIDEwMiwgCisgICAgMTIsIDE1LCAyMzUsIDEwMSwgMTIsIDE1LCAyMzUsIDEwMCwgMTIsIDE1LCAyMzUsIDk5LCAxMiwgMTUsIDIzNSwgOTgsIDEyLCAKKyAgICAxNSwgMjM1LCA5NywgMTIsIDE1LCAyMzUsIDk2LCAxMiwgMTUsIDIzNSwgOTUsIDEyLCAxNSwgMjM1LCA5NCwgMTIsIDE1LCAKKyAgICAyMzUsIDkzLCAxMiwgMTUsIDIzNSwgOTIsIDEyLCAxNSwgMjM1LCA5MSwgMTIsIDE1LCAyMzUsIDkwLCAxMiwgMTUsIDIzNSwgCisgICAgODksIDEyLCAxNSwgMjM1LCA4OCwgMTIsIDE1LCAyMzUsIDg3LCAxMiwgMTUsIDIzNSwgODYsIDEyLCAxNSwgMjM1LCA4NSwgCisgICAgMTIsIDE1LCAyMzUsIDg0LCAxMiwgMTUsIDIzNSwgODMsIDEyLCAxNSwgMjM1LCA4MiwgMTIsIDE1LCAyMzUsIDgxLCAxMiwgCisgICAgMTUsIDIzNSwgODAsIDEyLCAxNSwgMjM1LCA3OSwgMTIsIDE1LCAyMzUsIDc4LCAxMiwgMTUsIDIzNSwgNzcsIDEyLCAxNSwgCisgICAgMjM1LCA3NiwgMTIsIDE1LCAyMzUsIDc1LCAxMiwgMTUsIDIzNSwgNzQsIDEyLCAxNSwgMjM1LCA3MywgMTIsIDE1LCAyMzUsIAorICAgIDcyLCAxMiwgMTUsIDIzNSwgNzEsIDEyLCAxNSwgMjM1LCA3MCwgMTIsIDE1LCAyMzUsIDY5LCAxMiwgMTUsIDIzNSwgNjgsIAorICAgIDEyLCAxNSwgMjM1LCA2NywgMTIsIDE1LCAyMzUsIDY2LCAxMiwgMTUsIDIzNSwgNjUsIDEyLCAxNSwgMjM1LCA2NCwgMTIsIAorICAgIDE1LCAyMzUsIDYzLCAxMiwgMTUsIDIzNSwgNjIsIDEyLCAxNSwgMjM1LCA2MSwgMTIsIDE1LCAyMzUsIDYwLCAxMiwgMTUsIAorICAgIDIzNSwgNTksIDEyLCAxNSwgMjM1LCA1OCwgMTIsIDE1LCAyMzUsIDU3LCAxMiwgMTUsIDIzNSwgNTYsIDEyLCAxNSwgMjM1LCAKKyAgICA1NSwgMTIsIDE1LCAyMzUsIDU0LCAxMiwgMTUsIDIzNSwgNTMsIDEyLCAxNSwgMjM1LCA1MiwgMTIsIDE1LCAyMzUsIDUxLCAKKyAgICAxMiwgMTUsIDIzNSwgNTAsIDEyLCAxNSwgMjM1LCA0OSwgMTIsIDE1LCAyMzUsIDQ4LCAxMiwgMTUsIDIzNSwgNDcsIDEyLCAKKyAgICAxNSwgMjM1LCA0NiwgMTIsIDE1LCAyMzUsIDQ1LCAxMiwgMTUsIDIzNSwgNDQsIDEyLCAxNSwgMjM1LCA0MywgMTIsIDE1LCAKKyAgICAyMzUsIDQyLCAxMiwgMTUsIDIzNSwgNDEsIDEyLCAxNSwgMjM1LCA0MCwgMTIsIDE1LCAyMzUsIDM5LCAxMiwgMTUsIDIzNSwgCisgICAgMzgsIDEyLCAxNSwgMjM1LCAzNywgMTIsIDE1LCAyMzUsIDM2LCAxMiwgMTUsIDIzNSwgMzUsIDEyLCAxNSwgMjM1LCAzNCwgCisgICAgMTIsIDE1LCAyMzUsIDMzLCAxMiwgMTUsIDIzNSwgMzIsIDEyLCAxNSwgMjM1LCAzMSwgMTIsIDE1LCAyMzUsIDMwLCAxMiwgCisgICAgMTUsIDIzNSwgMjksIDEyLCAxNSwgMjM1LCAyOCwgMTIsIDE1LCAyMzUsIDI3LCAxMiwgMTUsIDIzNSwgMjYsIDEyLCAxNSwgCisgICAgMjM1LCAyNSwgMTIsIDE1LCAyMzUsIDI0LCAxMiwgMTUsIDIzNSwgMjMsIDEyLCAxNSwgMjM1LCAyMiwgMTIsIDE1LCAyMzUsIAorICAgIDIxLCAxMiwgMTUsIDIzNSwgMjAsIDEyLCAxNSwgMjM1LCAxOSwgMTIsIDE1LCAyMzUsIDE4LCAxMiwgMTUsIDIzNSwgMTcsIAorICAgIDEyLCAxNSwgMjM1LCAxNiwgMTIsIDE1LCAyMzUsIDE1LCAxMiwgMTUsIDIzNSwgMTQsIDEyLCAxNSwgMjM1LCAxMywgMTIsIAorICAgIDE1LCAyMzUsIDEyLCAxMiwgMTUsIDIzNSwgMTEsIDEyLCAxNSwgMjM1LCAxMCwgMTIsIDE1LCAyMzUsIDksIDEyLCAxNSwgCisgICAgMjM1LCA4LCAxMiwgMTUsIDIzNSwgNywgMTIsIDE1LCAyMzUsIDYsIDEyLCAxNSwgMjM1LCA1LCAxMiwgMTUsIDIzNSwgNCwgCisgICAgMTIsIDE1LCAyMzUsIDMsIDEyLCAxNSwgMjM1LCAyLCAxMiwgMTUsIDIzNSwgMSwgMTIsIDE1LCAyMzUsIDAsIDEyLCAxNSwgCisgICAgMjM0LCAyNTUsIDEyLCAxNSwgMjM0LCAyNTQsIDEyLCAxNSwgMjM0LCAyNTMsIDEyLCAxNSwgMjM0LCAyNTIsIDEyLCAxNSwgCisgICAgMjM0LCAyNTEsIDEyLCAxNSwgMjM0LCAyNTAsIDEyLCAxNSwgMjM0LCAyNDksIDEyLCAxNSwgMjM0LCAyNDgsIDEyLCAxNSwgCisgICAgMjM0LCAyNDcsIDEyLCAxNSwgMjM0LCAyNDYsIDEyLCAxNSwgMjM0LCAyNDUsIDEyLCAxNSwgMjM0LCAyNDQsIDEyLCAxNSwgCisgICAgMjM0LCAyNDMsIDEyLCAxNSwgMjM0LCAyNDIsIDEyLCAxNSwgMjM0LCAyNDEsIDEyLCAxNSwgMjM0LCAyNDAsIDEyLCAxNSwgCisgICAgMjM0LCAyMzksIDEyLCAxNSwgMjM0LCAyMzgsIDEyLCAxNSwgMjM0LCAyMzcsIDEyLCAxNSwgMjM0LCAyMzYsIDEyLCAxNSwgCisgICAgMjM0LCAyMzUsIDEyLCAxNSwgMjM0LCAyMzQsIDEyLCAxNSwgMjM0LCAyMzMsIDEyLCAxNSwgMjM0LCAyMzIsIDEyLCAxNSwgCisgICAgMjM0LCAyMzEsIDEyLCAxNSwgMjM0LCAyMzAsIDEyLCAxNSwgMjM0LCAyMjksIDEyLCAxNSwgMjM0LCAyMjgsIDEyLCAxNSwgCisgICAgMjM0LCAyMjcsIDEyLCAxNSwgMjM0LCAyMjYsIDEyLCAxNSwgMjM0LCAyMjUsIDEyLCAxNSwgMjM0LCAyMjQsIDEyLCAxNSwgCisgICAgMjM0LCAyMjMsIDEyLCAxNSwgMjM0LCAyMjIsIDEyLCAxNSwgMjM0LCAyMjEsIDEyLCAxNSwgMjM0LCAyMjAsIDEyLCAxNSwgCisgICAgMjM0LCAyMTksIDEyLCAxNSwgMjM0LCAyMTgsIDEyLCAxNSwgMjM0LCAyMTcsIDEyLCAxNSwgMjM0LCAyMTYsIDEyLCAxNSwgCisgICAgMjM0LCAyMTUsIDEyLCAxNSwgMjM0LCAyMTQsIDEyLCAxNSwgMjM0LCAyMTMsIDEyLCAxNSwgMjM0LCAyMTIsIDEyLCAxNSwgCisgICAgMjM0LCAyMTEsIDEyLCAxNSwgMjM0LCAyMTAsIDEyLCAxNSwgMjM0LCAyMDksIDEyLCAxNSwgMjM0LCAyMDgsIDEyLCAxNSwgCisgICAgMjM0LCAyMDcsIDEyLCAxNSwgMjM0LCAyMDYsIDEyLCAxNSwgMjM0LCAyMDUsIDEyLCAxNSwgMjM0LCAyMDQsIDEyLCAxNSwgCisgICAgMjM0LCAyMDMsIDEyLCAxNSwgMjM0LCAyMDIsIDEyLCAxNSwgMjM0LCAyMDEsIDEyLCAxNSwgMjM0LCAyMDAsIDEyLCAxNSwgCisgICAgMjM0LCAxOTksIDEyLCAxNSwgMjM0LCAxOTgsIDEyLCAxNSwgMjM0LCAxOTcsIDEyLCAxNSwgMjM0LCAxOTYsIDEyLCAxNSwgCisgICAgMjM0LCAxOTUsIDEyLCAxNSwgMjM0LCAxOTQsIDEyLCAxNSwgMjM0LCAxOTMsIDEyLCAxNSwgMjM0LCAxOTIsIDEyLCAxNSwgCisgICAgMjM0LCAxOTEsIDEyLCAxNSwgMjM0LCAxOTAsIDEyLCAxNSwgMjM0LCAxODksIDEyLCAxNSwgMjM0LCAxODgsIDEyLCAxNSwgCisgICAgMjM0LCAxODcsIDEyLCAxNSwgMjM0LCAxODYsIDEyLCAxNSwgMjM0LCAxODUsIDEyLCAxNSwgMjM0LCAxODQsIDEyLCAxNSwgCisgICAgMjM0LCAxODMsIDEyLCAxNSwgMjM0LCAxODIsIDEyLCAxNSwgMjM0LCAxODEsIDEyLCAxNSwgMjM0LCAxODAsIDEyLCAxNSwgCisgICAgMjM0LCAxNzksIDEyLCAxNSwgMjM0LCAxNzgsIDEyLCAxNSwgMjM0LCAxNzcsIDEyLCAxNSwgMjM0LCAxNzYsIDEyLCAxNSwgCisgICAgMjM0LCAxNzUsIDEyLCAxNSwgMjM0LCAxNzQsIDEyLCAxNSwgMjM0LCAxNzMsIDEyLCAxNSwgMjM0LCAxNzIsIDEyLCAxNSwgCisgICAgMjM0LCAxNzEsIDEyLCAxNSwgMjM0LCAxNzAsIDEyLCAxNSwgMjM0LCAxNjksIDEyLCAxNSwgMjM0LCAxNjgsIDEyLCAxNSwgCisgICAgMjM0LCAxNjcsIDEyLCAxNSwgMjM0LCAxNjYsIDEyLCAxNSwgMjM0LCAxNjUsIDEyLCAxNSwgMjM0LCAxNjQsIDEyLCAxNSwgCisgICAgMjM0LCAxNjMsIDEyLCAxNSwgMjM0LCAxNjIsIDEyLCAxNSwgMjM0LCAxNjEsIDEyLCAxNSwgMjM0LCAxNjAsIDEyLCAxNSwgCisgICAgMjM0LCAxNTksIDEyLCAxNSwgMjM0LCAxNTgsIDEyLCAxNSwgMjM0LCAxNTcsIDEyLCAxNSwgMjM0LCAxNTYsIDEyLCAxNSwgCisgICAgMjM0LCAxNTUsIDEyLCAxNSwgMjM0LCAxNTQsIDEyLCAxNSwgMjM0LCAxNTMsIDEyLCAxNSwgMjM0LCAxNTIsIDEyLCAxNSwgCisgICAgMjM0LCAxNTEsIDEyLCAxNSwgMjM0LCAxNTAsIDEyLCAxNSwgMjM0LCAxNDksIDEyLCAxNSwgMjM0LCAxNDgsIDEyLCAxNSwgCisgICAgMjM0LCAxNDcsIDEyLCAxNSwgMjM0LCAxNDYsIDEyLCAxNSwgMjM0LCAxNDUsIDEyLCAxNSwgMjM0LCAxNDQsIDEyLCAxNSwgCisgICAgMjM0LCAxNDMsIDEyLCAxNSwgMjM0LCAxNDIsIDEyLCAxNSwgMjM0LCAxNDEsIDEyLCAxNSwgMjM0LCAxNDAsIDEyLCAxNSwgCisgICAgMjM0LCAxMzksIDEyLCAxNSwgMjM0LCAxMzgsIDEyLCAxNSwgMjM0LCAxMzcsIDEyLCAxNSwgMjM0LCAxMzYsIDEyLCAxNSwgCisgICAgMjM0LCAxMzUsIDEyLCAxNSwgMjM0LCAxMzQsIDEyLCAxNSwgMjM0LCAxMzMsIDEyLCAxNSwgMjM0LCAxMzIsIDEyLCAxNSwgCisgICAgMjM0LCAxMzEsIDEyLCAxNSwgMjM0LCAxMzAsIDEyLCAxNSwgMjM0LCAxMjksIDEyLCAxNSwgMjM0LCAxMjgsIDEyLCAxNSwgCisgICAgMjM0LCAxMjcsIDEyLCAxNSwgMjM0LCAxMjYsIDEyLCAxNSwgMjM0LCAxMjUsIDEyLCAxNSwgMjM0LCAxMjQsIDEyLCAxNSwgCisgICAgMjM0LCAxMjMsIDEyLCAxNSwgMjM0LCAxMjIsIDEyLCAxNSwgMjM0LCAxMjEsIDEyLCAxNSwgMjM0LCAxMjAsIDEyLCAxNSwgCisgICAgMjM0LCAxMTksIDEyLCAxNSwgMjM0LCAxMTgsIDEyLCAxNSwgMjM0LCAxMTcsIDEyLCAxNSwgMjM0LCAxMTYsIDEyLCAxNSwgCisgICAgMjM0LCAxMTUsIDEyLCAxNSwgMjM0LCAxMTQsIDEyLCAxNSwgMjM0LCAxMTMsIDEyLCAxNSwgMjM0LCAxMTIsIDEyLCAxNSwgCisgICAgMjM0LCAxMTEsIDEyLCAxNSwgMjM0LCAxMTAsIDEyLCAxNSwgMjM0LCAxMDksIDEyLCAxNSwgMjM0LCAxMDgsIDEyLCAxNSwgCisgICAgMjM0LCAxMDcsIDEyLCAxNSwgMjM0LCAxMDYsIDEyLCAxNSwgMjM0LCAxMDUsIDEyLCAxNSwgMjM0LCAxMDQsIDEyLCAxNSwgCisgICAgMjM0LCAxMDMsIDEyLCAxNSwgMjM0LCAxMDIsIDEyLCAxNSwgMjM0LCAxMDEsIDEyLCAxNSwgMjM0LCAxMDAsIDEyLCAxNSwgCisgICAgMjM0LCA5OSwgMTIsIDE1LCAyMzQsIDk4LCAxMiwgMTUsIDIzNCwgOTcsIDEyLCAxNSwgMjM0LCA5NiwgMTIsIDE1LCAyMzQsIAorICAgIDk1LCAxMiwgMTUsIDIzNCwgOTQsIDEyLCAxNSwgMjM0LCA5MywgMTIsIDE1LCAyMzQsIDkyLCAxMiwgMTUsIDIzNCwgOTEsIAorICAgIDEyLCAxNSwgMjM0LCA5MCwgMTIsIDE1LCAyMzQsIDg5LCAxMiwgMTUsIDIzNCwgODgsIDEyLCAxNSwgMjM0LCA4NywgMTIsIAorICAgIDE1LCAyMzQsIDg2LCAxMiwgMTUsIDIzNCwgODUsIDEyLCAxNSwgMjM0LCA4NCwgMTIsIDE1LCAyMzQsIDgzLCAxMiwgMTUsIAorICAgIDIzNCwgODIsIDEyLCAxNSwgMjM0LCA4MSwgMTIsIDE1LCAyMzQsIDgwLCAxMiwgMTUsIDIzNCwgNzksIDEyLCAxNSwgMjM0LCAKKyAgICA3OCwgMTIsIDE1LCAyMzQsIDc3LCAxMiwgMTUsIDIzNCwgNzYsIDEyLCAxNSwgMjM0LCA3NSwgMTIsIDE1LCAyMzQsIDc0LCAKKyAgICAxMiwgMTUsIDIzNCwgNzMsIDEyLCAxNSwgMjM0LCA3MiwgMTIsIDE1LCAyMzQsIDcxLCAxMiwgMTUsIDIzNCwgNzAsIDEyLCAKKyAgICAxNSwgMjM0LCA2OSwgMTIsIDE1LCAyMzQsIDY4LCAxMiwgMTUsIDIzNCwgNjcsIDEyLCAxNSwgMjM0LCA2NiwgMTIsIDE1LCAKKyAgICAyMzQsIDY1LCAxMiwgMTUsIDIzNCwgNjQsIDEyLCAxNSwgMjM0LCA2MywgMTIsIDE1LCAyMzQsIDYyLCAxMiwgMTUsIDIzNCwgCisgICAgNjEsIDEyLCAxNSwgMjM0LCA2MCwgMTIsIDE1LCAyMzQsIDU5LCAxMiwgMTUsIDIzNCwgNTgsIDEyLCAxNSwgMjM0LCA1NywgCisgICAgMTIsIDE1LCAyMzQsIDU2LCAxMiwgMTUsIDIzNCwgNTUsIDEyLCAxNSwgMjM0LCA1NCwgMTIsIDE1LCAyMzQsIDUzLCAxMiwgCisgICAgMTUsIDIzNCwgNTIsIDEyLCAxNSwgMjM0LCA1MSwgMTIsIDE1LCAyMzQsIDUwLCAxMiwgMTUsIDIzNCwgNDksIDEyLCAxNSwgCisgICAgMjM0LCA0OCwgMTIsIDE1LCAyMzQsIDQ3LCAxMiwgMTUsIDIzNCwgNDYsIDEyLCAxNSwgMjM0LCA0NSwgMTIsIDE1LCAyMzQsIAorICAgIDQ0LCAxMiwgMTUsIDIzNCwgNDMsIDEyLCAxNSwgMjM0LCA0MiwgMTIsIDE1LCAyMzQsIDQxLCAxMiwgMTUsIDIzNCwgNDAsIAorICAgIDEyLCAxNSwgMjM0LCAzOSwgMTIsIDE1LCAyMzQsIDM4LCAxMiwgMTUsIDIzNCwgMzcsIDEyLCAxNSwgMjM0LCAzNiwgMTIsIAorICAgIDE1LCAyMzQsIDM1LCAxMiwgMTUsIDIzNCwgMzQsIDEyLCAxNSwgMjM0LCAzMywgMTIsIDE1LCAyMzQsIDMyLCAxMiwgMTUsIAorICAgIDIzNCwgMzEsIDEyLCAxNSwgMjM0LCAzMCwgMTIsIDE1LCAyMzQsIDI5LCAxMiwgMTUsIDIzNCwgMjgsIDEyLCAxNSwgMjM0LCAKKyAgICAyNywgMTIsIDE1LCAyMzQsIDI2LCAxMiwgMTUsIDIzNCwgMjUsIDEyLCAxNSwgMjM0LCAyNCwgMTIsIDE1LCAyMzQsIDIzLCAKKyAgICAxMiwgMTUsIDIzNCwgMjIsIDEyLCAxNSwgMjM0LCAyMSwgMTIsIDE1LCAyMzQsIDIwLCAxMiwgMTUsIDIzNCwgMTksIDEyLCAKKyAgICAxNSwgMjM0LCAxOCwgMTIsIDE1LCAyMzQsIDE3LCAxMiwgMTUsIDIzNCwgMTYsIDEyLCAxNSwgMjM0LCAxNSwgMTIsIDE1LCAKKyAgICAyMzQsIDE0LCAxMiwgMTUsIDIzNCwgMTMsIDEyLCAxNSwgMjM0LCAxMiwgMTIsIDE1LCAyMzQsIDExLCAxMiwgMTUsIDIzNCwgCisgICAgMTAsIDEyLCAxNSwgMjM0LCA5LCAxMiwgMTUsIDIzNCwgOCwgMTIsIDE1LCAyMzQsIDcsIDEyLCAxNSwgMjM0LCA2LCAxMiwgCisgICAgMTUsIDIzNCwgNSwgMTIsIDE1LCAyMzQsIDQsIDEyLCAxNSwgMjM0LCAzLCAxMiwgMTUsIDIzNCwgMiwgMTIsIDE1LCAyMzQsIAorICAgIDEsIDEyLCAxNSwgMjM0LCAwLCAxMiwgMTUsIDIzMywgMjU1LCAxMiwgMTUsIDIzMywgMjU0LCAxMiwgMTUsIDIzMywgMjUzLCAKKyAgICAxMiwgMTUsIDIzMywgMjUyLCAxMiwgMTUsIDIzMywgMjUxLCAxMiwgMTUsIDIzMywgMjUwLCAxMiwgMTUsIDIzMywgMjQ5LCAKKyAgICAxMiwgMTUsIDIzMywgMjQ4LCAxMiwgMTUsIDIzMywgMjQ3LCAxMiwgMTUsIDIzMywgMjQ2LCAxMiwgMTUsIDIzMywgMjQ1LCAKKyAgICAxMiwgMTUsIDIzMywgMjQ0LCAxMiwgMTUsIDIzMywgMjQzLCAxMiwgMTUsIDIzMywgMjQyLCAxMiwgMTUsIDIzMywgMjQxLCAKKyAgICAxMiwgMTUsIDIzMywgMjQwLCAxMiwgMTUsIDIzMywgMjM5LCAxMiwgMTUsIDIzMywgMjM4LCAxMiwgMTUsIDIzMywgMjM3LCAKKyAgICAxMiwgMTUsIDIzMywgMjM2LCAxMiwgMTUsIDIzMywgMjM1LCAxMiwgMTUsIDIzMywgMjM0LCAxMiwgMTUsIDIzMywgMjMzLCAKKyAgICAxMiwgMTUsIDIzMywgMjMyLCAxMiwgMTUsIDIzMywgMjMxLCAxMiwgMTUsIDIzMywgMjMwLCAxMiwgMTUsIDIzMywgMjI5LCAKKyAgICAxMiwgMTUsIDIzMywgMjI4LCAxMiwgMTUsIDIzMywgMjI3LCAxMiwgMTUsIDIzMywgMjI2LCAxMiwgMTUsIDIzMywgMjI1LCAKKyAgICAxMiwgMTUsIDIzMywgMjI0LCAxMiwgMTUsIDIzMywgMjIzLCAxMiwgMTUsIDIzMywgMjIyLCAxMiwgMTUsIDIzMywgMjIxLCAKKyAgICAxMiwgMTUsIDIzMywgMjIwLCAxMiwgMTUsIDIzMywgMjE5LCAxMiwgMTUsIDIzMywgMjE4LCAxMiwgMTUsIDIzMywgMjE3LCAKKyAgICAxMiwgMTUsIDIzMywgMjE2LCAxMiwgMTUsIDIzMywgMjE1LCAxMiwgMTUsIDIzMywgMjE0LCAxMiwgMTUsIDIzMywgMjEzLCAKKyAgICAxMiwgMTUsIDIzMywgMjEyLCAxMiwgMTUsIDIzMywgMjExLCAxMiwgMTUsIDIzMywgMjEwLCAxMiwgMTUsIDIzMywgMjA5LCAKKyAgICAxMiwgMTUsIDIzMywgMjA4LCAxMiwgMTUsIDIzMywgMjA3LCAxMiwgMTUsIDIzMywgMjA2LCAxMiwgMTUsIDIzMywgMjA1LCAKKyAgICAxMiwgMTUsIDIzMywgMjA0LCAxMiwgMTUsIDIzMywgMjAzLCAxMiwgMTUsIDIzMywgMjAyLCAxMiwgMTUsIDIzMywgMjAxLCAKKyAgICAxMiwgMTUsIDIzMywgMjAwLCAxMiwgMTUsIDIzMywgMTk5LCAxMiwgMTUsIDIzMywgMTk4LCAxMiwgMTUsIDIzMywgMTk3LCAKKyAgICAxMiwgMTUsIDIzMywgMTk2LCAxMiwgMTUsIDIzMywgMTk1LCAxMiwgMTUsIDIzMywgMTk0LCAxMiwgMTUsIDIzMywgMTkzLCAKKyAgICAxMiwgMTUsIDIzMywgMTkyLCAxMiwgMTUsIDIzMywgMTkxLCAxMiwgMTUsIDIzMywgMTkwLCAxMiwgMTUsIDIzMywgMTg5LCAKKyAgICAxMiwgMTUsIDIzMywgMTg4LCAxMiwgMTUsIDIzMywgMTg3LCAxMiwgMTUsIDIzMywgMTg2LCAxMiwgMTUsIDIzMywgMTg1LCAKKyAgICAxMiwgMTUsIDIzMywgMTg0LCAxMiwgMTUsIDIzMywgMTgzLCAxMiwgMTUsIDIzMywgMTgyLCAxMiwgMTUsIDIzMywgMTgxLCAKKyAgICAxMiwgMTUsIDIzMywgMTgwLCAxMiwgMTUsIDIzMywgMTc5LCAxMiwgMTUsIDIzMywgMTc4LCAxMiwgMTUsIDIzMywgMTc3LCAKKyAgICAxMiwgMTUsIDIzMywgMTc2LCAxMiwgMTUsIDIzMywgMTc1LCAxMiwgMTUsIDIzMywgMTc0LCAxMiwgMTUsIDIzMywgMTczLCAKKyAgICAxMiwgMTUsIDIzMywgMTcyLCAxMiwgMTUsIDIzMywgMTcxLCAxMiwgMTUsIDIzMywgMTcwLCAxMiwgMTUsIDIzMywgMTY5LCAKKyAgICAxMiwgMTUsIDIzMywgMTY4LCAxMiwgMTUsIDIzMywgMTY3LCAxMiwgMTUsIDIzMywgMTY2LCAxMiwgMTUsIDIzMywgMTY1LCAKKyAgICAxMiwgMTUsIDIzMywgMTY0LCAxMiwgMTUsIDIzMywgMTYzLCAxMiwgMTUsIDIzMywgMTYyLCAxMiwgMTUsIDIzMywgMTYxLCAKKyAgICAxMiwgMTUsIDIzMywgMTYwLCAxMiwgMTUsIDIzMywgMTU5LCAxMiwgMTUsIDIzMywgMTU4LCAxMiwgMTUsIDIzMywgMTU3LCAKKyAgICAxMiwgMTUsIDIzMywgMTU2LCAxMiwgMTUsIDIzMywgMTU1LCAxMiwgMTUsIDIzMywgMTU0LCAxMiwgMTUsIDIzMywgMTUzLCAKKyAgICAxMiwgMTUsIDIzMywgMTUyLCAxMiwgMTUsIDIzMywgMTUxLCAxMiwgMTUsIDIzMywgMTUwLCAxMiwgMTUsIDIzMywgMTQ5LCAKKyAgICAxMiwgMTUsIDIzMywgMTQ4LCAxMiwgMTUsIDIzMywgMTQ3LCAxMiwgMTUsIDIzMywgMTQ2LCAxMiwgMTUsIDIzMywgMTQ1LCAKKyAgICAxMiwgMTUsIDIzMywgMTQ0LCAxMiwgMTUsIDIzMywgMTQzLCAxMiwgMTUsIDIzMywgMTQyLCAxMiwgMTUsIDIzMywgMTQxLCAKKyAgICAxMiwgMTUsIDIzMywgMTQwLCAxMiwgMTUsIDIzMywgMTM5LCAxMiwgMTUsIDIzMywgMTM4LCAxMiwgMTUsIDIzMywgMTM3LCAKKyAgICAxMiwgMTUsIDIzMywgMTM2LCAxMiwgMTUsIDIzMywgMTM1LCAxMiwgMTUsIDIzMywgMTM0LCAxMiwgMTUsIDIzMywgMTMzLCAKKyAgICAxMiwgMTUsIDIzMywgMTMyLCAxMiwgMTUsIDIzMywgMTMxLCAxMiwgMTUsIDIzMywgMTMwLCAxMiwgMTUsIDIzMywgMTI5LCAKKyAgICAxMiwgMTUsIDIzMywgMTI4LCAxMiwgMTUsIDIzMywgMTI3LCAxMiwgMTUsIDIzMywgMTI2LCAxMiwgMTUsIDIzMywgMTI1LCAKKyAgICAxMiwgMTUsIDIzMywgMTI0LCAxMiwgMTUsIDIzMywgMTIzLCAyMjgsIDE0LCAyMDksIDI1NSwgMTYwLCAyMTEsIDIyOCwgCisgICAgMTYwLCAyNDAsIDIxMiwgODIsIDE2MCwgMjE3LCAzMSwgODIsIDE2MCwgNDIsIDU0LCAxNjAsIDI0MywgOTcsIDU0LCAxNjAsIAorICAgIDIxOCwgMjQ2LCA1NCwgMTYwLCAyNTAsIDIzNSwgMTYwLCAyNTAsIDE2MCwgMTYwLCA0OSwgMjE5LCA3NiwgMTYwLCA1MCwgCisgICAgMjE5LCA3NiwgMTYwLCAyNTAsIDU5LCAxNjAsIDkxLCA1NCwgMTYwLCAyNDUsIDIzMywgMTYwLCAyMzUsIDIxOSwgMTYwLCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgMTYwLCAyMTIsIDAsIDE2MCwgMTcsIDIwMiwgODQsIDE2MCwgMTcsIDEwNSwgMTYwLCAxNywgCisgICAgMTA4LCAxNjAsIDE3LCAxNDcsIDE2MCwgMTcsIDE0OSwgMTYwLCAxNywgMTcwLCAxNjAsIDE3LCAxOTUsIDE2MCwgMTcsIAorICAgIDIxMywgMTExLCAxNjAsIDE3LCAxOTksIDE2MCwgMTcsIDIyMiwgNjMsIDE2MCwgMjQ1LCAyNDIsIDE2MCwgMjEzLCAxNDMsIAorICAgIDE2MCwgMjI3LCAxNzksIDU0LCAxNjAsIDI0MSwgMzUsIDU0LCAxNjAsIDIzNywgMjQ3LCA1NCwgMTYwLCAyMTcsIDQ3LCA4MiwgCisgICAgMTYwLCAyNDUsIDIzMSwgMjUwLCA0OSwgMTYwLCA4LCA2LCAxLCA2MywgMTYwLCA4LCA2LCAxLCAyNDksIDI1NSwgMTYwLCA4LCAKKyAgICA2LCAxLCAyNDcsIDEyNSwgMTYwLCA4LCA2LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDYsIDEsIDc0LCAxNjAsIDgsIDYsIDEsIAorICAgIDI0MCwgMTc0LCAxNjAsIDgsIDYsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNiwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNiwgMSwgCisgICAgNzUsIDE2MCwgOCwgNiwgMSwgMjMwLCAxODQsIDE2MCwgOCwgNiwgMSwgMjMwLCA1NCwgMTYwLCA4LCA2LCAxLCAxNTksIAorICAgIDE2MCwgOCwgNiwgMSwgMjI2LCAxODUsIDE2MCwgOCwgNiwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNiwgMSwgNzgsIDE2MCwgOCwgCisgICAgNiwgMSwgMjE5LCAxODQsIDE2MCwgOCwgNiwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNiwgMSwgMTQ2LCAxNjAsIDgsIDYsIDEsIAorICAgIDE5NCwgMTYwLCA4LCA2LCAxLCAyMTAsIDY5LCAxNjAsIDgsIDYsIDEsIDY4LCAxNjAsIDgsIDYsIDEsIDIwNiwgMTY0LCAKKyAgICAxNjAsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxNjAsIDgsIDYsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDYsIDEsIDIwMywgMTI0LCAKKyAgICAxNjAsIDgsIDYsIDEsIDIwMiwgMTU5LCAxNjAsIDQ5LCA1MSwgMTU1LCAxNjAsIDIxNiwgNzQsIDIxMiwgMCwgMTYwLCA1MCwgCisgICAgNTEsIDE1NSwgMTYwLCAyNDYsIDUzLCAyNTEsIDEzOCwgMTYwLCAxMjQsIDIyNywgMTE0LCAxNjAsIDIzNywgMjU0LCAyNTEsIAorICAgIDEzOCwgMTYwLCA4LCA1LCAxLCA2MywgMTYwLCA4LCA1LCAxLCAyNDksIDI1NSwgMTYwLCA4LCA1LCAxLCAyNDcsIDEyNSwgCisgICAgMTYwLCA4LCA1LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDUsIDEsIDc0LCAxNjAsIDgsIDUsIDEsIDI0MCwgMTc0LCAxNjAsIDgsIAorICAgIDUsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNSwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNSwgMSwgNzUsIDE2MCwgOCwgNSwgMSwgCisgICAgMjMwLCAxODQsIDE2MCwgOCwgNSwgMSwgMjMwLCA1NCwgMTYwLCA4LCA1LCAxLCAxNTksIDE2MCwgOCwgNSwgMSwgMjI2LCAKKyAgICAxODUsIDE2MCwgOCwgNSwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNSwgMSwgNzgsIDE2MCwgOCwgNSwgMSwgMjE5LCAxODQsIAorICAgIDE2MCwgOCwgNSwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNSwgMSwgMTQ2LCAxNjAsIDgsIDUsIDEsIDE5NCwgMTYwLCA4LCA1LCAKKyAgICAxLCAyMTAsIDY5LCAxNjAsIDgsIDUsIDEsIDY4LCAxNjAsIDgsIDUsIDEsIDIwNiwgMTY0LCAxNjAsIDgsIDUsIDEsIDIwNCwgCisgICAgMTQ0LCAxNjAsIDgsIDUsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDUsIDEsIDIwMywgMTI0LCAxNjAsIDgsIDUsIDEsIDIwMiwgCisgICAgMTU5LCAxNjAsIDQ5LCAyNDUsIDkzLCAxNTUsIDE2MCwgODAsIDIyNywgMTE0LCAxNjAsIDUwLCAyNDUsIDkzLCAxNTUsIAorICAgIDE2MCwgMjA4LCAyMjcsIDI0NywgNjAsIDIwOSwgMjU1LCA1NywgMjE0LCA3MSwgNTcsIDIxNCwgNjAsIDU3LCAyMTQsIDQ5LCAKKyAgICA1NywgMjE0LCAzNywgNTcsIDIxNCwgMjYsIDU3LCAyMTQsIDE1LCA1NywgMjE0LCA0LCA1NywgMjEzLCAyNDksIDU3LCAyMTMsIAorICAgIDIzOCwgNTcsIDIxMywgMjMwLCA1NywgMjEzLCAyMjksIDU3LCAyMTMsIDIyOCwgNTcsIDIxMywgMjI3LCA1NywgMjEzLCAKKyAgICAyMjUsIDU3LCAyMTMsIDIyNCwgNTcsIDIxMywgMjIzLCA1NywgMjEzLCAyMjIsIDU3LCAyMTMsIDIyMSwgNTcsIDIxMywgCisgICAgMjIwLCA1NywgMjEzLCAyMTksIDU3LCAyMTMsIDIxOCwgNTcsIDIxMywgMjE3LCA1NywgMjEzLCAyMTYsIDU3LCAyMTMsIAorICAgIDIxNCwgNTcsIDIxMywgMjEzLCA1NywgMjEzLCAyMTIsIDU3LCAyMTMsIDIxMSwgNTcsIDIxMywgMjEwLCA1NywgMjEzLCAKKyAgICAyMDksIDU3LCAyMTMsIDIwOCwgNTcsIDIxMywgMjA3LCA1NywgMjEzLCAyMDYsIDU3LCAyMTMsIDIwNSwgNTcsIDIxMywgCisgICAgMjAzLCA1NywgMjEzLCAyMDIsIDU3LCAyMTMsIDIwMSwgNTcsIDIxMywgMjAwLCA1NywgMjEzLCAxOTksIDU3LCAyMTMsIAorICAgIDE5OCwgNTcsIDIxMywgMTk3LCA1NywgMjEzLCAxOTYsIDU3LCAyMTMsIDE5NSwgNTcsIDIxMywgMTk0LCA1NywgMjEzLCAKKyAgICAxOTIsIDU3LCAyMTMsIDE5MSwgNTcsIDIxMywgMTkwLCA1NywgMjEzLCAxODksIDU3LCAyMTMsIDE4OCwgNTcsIDIxMywgCisgICAgMTg3LCA1NywgMjEzLCAxODYsIDU3LCAyMTMsIDE4NSwgNTcsIDIxMywgMTg0LCA1NywgMjEzLCAxODMsIDU3LCAyMTMsIAorICAgIDE4MSwgNTcsIDIxMywgMTgwLCA1NywgMjEzLCAxNzksIDU3LCAyMTMsIDE3OCwgNTcsIDIxMywgMTc3LCA1NywgMjEzLCAKKyAgICAxNzYsIDU3LCAyMTMsIDE3NSwgNTcsIDIxMywgMTc0LCA1NywgMjEzLCAxNzMsIDU3LCAyMTMsIDE3MiwgNTcsIDIxMywgCisgICAgMTcwLCA1NywgMjEzLCAxNjksIDU3LCAyMTMsIDE2OCwgNTcsIDIxMywgMTY3LCA1NywgMjEzLCAxNjYsIDU3LCAyMTMsIAorICAgIDE2NSwgNTcsIDIxMywgMTY0LCA1NywgMjEzLCAxNjMsIDU3LCAyMTMsIDE2MiwgNTcsIDIxMywgMTYxLCA1NywgMjEzLCAKKyAgICAxNTksIDU3LCAyMTMsIDE1OCwgNTcsIDIxMywgMTU3LCA1NywgMjEzLCAxNTYsIDU3LCAyMTMsIDE1NSwgNTcsIDIxMywgCisgICAgMTU0LCA1NywgMjEzLCAxNTMsIDU3LCAyMTMsIDE1MiwgNTcsIDIxMywgMTUxLCA1NywgMjEzLCAxNTAsIDU3LCAyMTQsIAorICAgIDE0NywgNTcsIDIxNCwgMTQ2LCA1NywgMjE0LCAxNDUsIDU3LCAyMTQsIDE0NCwgNTcsIDIxNCwgMTQzLCA1NywgMjE0LCAKKyAgICAxNDIsIDU3LCAyMTQsIDE0MSwgNTcsIDIxNCwgMTQwLCA1NywgMjE0LCAxMzksIDU3LCAyMTQsIDEzOCwgNTcsIDIxNCwgCisgICAgMTM2LCA1NywgMjE0LCAxMzUsIDU3LCAyMTQsIDEzNCwgNTcsIDIxNCwgMTMzLCA1NywgMjE0LCAxMzIsIDU3LCAyMTQsIAorICAgIDEzMSwgNTcsIDIxNCwgMTMwLCA1NywgMjE0LCAxMjksIDU3LCAyMTQsIDEyOCwgNTcsIDIxNCwgMTI3LCA1NywgMjE0LCAKKyAgICAxMjUsIDU3LCAyMTQsIDEyNCwgNTcsIDIxNCwgMTIzLCA1NywgMjE0LCAxMjIsIDU3LCAyMTQsIDEyMSwgNTcsIDIxNCwgCisgICAgMTIwLCA1NywgMjE0LCAxMTksIDU3LCAyMTQsIDExOCwgNTcsIDIxNCwgMTE3LCA1NywgMjE0LCAxMTYsIDU3LCAyMTQsIAorICAgIDExNCwgNTcsIDIxNCwgMTEzLCA1NywgMjE0LCAxMTIsIDU3LCAyMTQsIDExMSwgNTcsIDIxNCwgMTEwLCA1NywgMjE0LCAKKyAgICAxMDksIDU3LCAyMTQsIDEwOCwgNTcsIDIxNCwgMTA3LCA1NywgMjE0LCAxMDYsIDU3LCAyMTQsIDEwNSwgNTcsIDIxNCwgCisgICAgMTAzLCA1NywgMjE0LCAxMDIsIDU3LCAyMTQsIDEwMSwgNTcsIDIxNCwgMTAwLCA1NywgMjE0LCA5OSwgNTcsIDIxNCwgOTgsIAorICAgIDU3LCAyMTQsIDk3LCA1NywgMjE0LCA5NiwgNTcsIDIxNCwgOTUsIDU3LCAyMTQsIDk0LCA1NywgMjE0LCA5MiwgNTcsIDIxNCwgCisgICAgOTEsIDU3LCAyMTQsIDkwLCA1NywgMjE0LCA4OSwgNTcsIDIxNCwgODgsIDU3LCAyMTQsIDg3LCA1NywgMjE0LCA4NiwgNTcsIAorICAgIDIxNCwgODUsIDU3LCAyMTQsIDg0LCA1NywgMjE0LCA4MywgNTcsIDIxNCwgODEsIDU3LCAyMTQsIDgwLCA1NywgMjE0LCA3OSwgCisgICAgNTcsIDIxNCwgNzgsIDU3LCAyMTQsIDc3LCA1NywgMjE0LCA3NiwgNTcsIDIxNCwgNzUsIDU3LCAyMTQsIDc0LCA1NywgMjE0LCAKKyAgICA3MywgNTcsIDIxNCwgNzIsIDU3LCAyMTQsIDcwLCA1NywgMjE0LCA2OSwgNTcsIDIxNCwgNjgsIDU3LCAyMTQsIDY3LCA1NywgCisgICAgMjE0LCA2NiwgNTcsIDIxNCwgNjUsIDU3LCAyMTQsIDY0LCA1NywgMjE0LCA2MywgNTcsIDIxNCwgNjIsIDU3LCAyMTQsIDYxLCAKKyAgICA1NywgMjE0LCA1OSwgNTcsIDIxNCwgNTgsIDU3LCAyMTQsIDU3LCA1NywgMjE0LCA1NiwgNTcsIDIxNCwgNTUsIDU3LCAyMTQsIAorICAgIDU0LCA1NywgMjE0LCA1MywgNTcsIDIxNCwgNTIsIDU3LCAyMTQsIDUxLCA1NywgMjE0LCA1MCwgNTcsIDIxNCwgNDgsIDU3LCAKKyAgICAyMTQsIDQ3LCA1NywgMjE0LCA0NiwgNTcsIDIxNCwgNDUsIDU3LCAyMTQsIDQ0LCA1NywgMjE0LCA0MywgNTcsIDIxNCwgNDIsIAorICAgIDU3LCAyMTQsIDQxLCA1NywgMjE0LCA0MCwgNTcsIDIxNCwgMzksIDU3LCAyMTQsIDM2LCA1NywgMjE0LCAzNSwgNTcsIDIxNCwgCisgICAgMzQsIDU3LCAyMTQsIDMzLCA1NywgMjE0LCAzMiwgNTcsIDIxNCwgMzEsIDU3LCAyMTQsIDMwLCA1NywgMjE0LCAyOSwgNTcsIAorICAgIDIxNCwgMjgsIDU3LCAyMTQsIDI3LCA1NywgMjE0LCAyNSwgNTcsIDIxNCwgMjQsIDU3LCAyMTQsIDIzLCA1NywgMjE0LCAyMiwgCisgICAgNTcsIDIxNCwgMjEsIDU3LCAyMTQsIDIwLCA1NywgMjE0LCAxOSwgNTcsIDIxNCwgMTgsIDU3LCAyMTQsIDE3LCA1NywgMjE0LCAKKyAgICAxNiwgNTcsIDIxNCwgMTQsIDU3LCAyMTQsIDEzLCA1NywgMjE0LCAxMiwgNTcsIDIxNCwgMTEsIDU3LCAyMTQsIDEwLCA1NywgCisgICAgMjE0LCA5LCA1NywgMjE0LCA4LCA1NywgMjE0LCA3LCA1NywgMjE0LCA2LCA1NywgMjE0LCA1LCA1NywgMjE0LCAzLCA1NywgCisgICAgMjE0LCAyLCA1NywgMjE0LCAxLCA1NywgMjE0LCAwLCA1NywgMjEzLCAyNTUsIDU3LCAyMTMsIDI1NCwgNTcsIDIxMywgMjUzLCAKKyAgICA1NywgMjEzLCAyNTIsIDU3LCAyMTMsIDI1MSwgNTcsIDIxMywgMjUwLCA1NywgMjEzLCAyNDgsIDU3LCAyMTMsIDI0NywgNTcsIAorICAgIDIxMywgMjQ2LCA1NywgMjEzLCAyNDUsIDU3LCAyMTMsIDI0NCwgNTcsIDIxMywgMjQzLCA1NywgMjEzLCAyNDIsIDU3LCAKKyAgICAyMTMsIDI0MSwgNTcsIDIxMywgMjQwLCA1NywgMjEzLCAyMzksIDU3LCAyMTMsIDIzNywgNTcsIDIxMywgMjM2LCA1NywgCisgICAgMjEzLCAyMzUsIDU3LCAyMTMsIDIzNCwgNTcsIDIxMywgMjMzLCA1NywgMjEzLCAyMzIsIDU3LCAyMTMsIDIzMSwgMjIxLCAKKyAgICA0OCwgMjIxLCA1MCwgMjExLCA5MCwgNzYsIDIzNywgNjEsIDIxMiwgMywgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAyMTEsIAorICAgIDEyLCAyNDEsIDg0LCA3NiwgMjA5LCAxMTIsIDI0MCwgMjQwLCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDI0MSwgNDcsIDI0MSwgCisgICAgNzEsIDI0MSwgNzIsIDI1MSwgMTMwLCAyNTEsIDEzMSwgMjUxLCAyNywgMjQ4LCAxMzEsIDI0OSwgMTksIDI0NywgMTk5LCAKKyAgICAxNjcsIDIxMCwgNSwgMjM2LCAxMDYsIDIxMCwgNSwgMjM2LCAzMSwgMjEwLCAxMCwgMjI3LCAxMTUsIDI0MCwgNTEsIDIyMiwgCisgICAgMjE0LCAyMjcsIDExNCwgMjQxLCA4NCwgNzYsIDIyNywgMTE0LCAyMjcsIDE2MywgMjIxLCAyNTMsIDI0MSwgNTAsIDIyNywgCisgICAgMTE1LCAyMTAsIDUsIDgwLCAyMTAsIDUsIDIwNCwgMTY1LCAyMzksIDE1OSwgMjQwLCA1MSwgMjQwLCAzMCwgMjQ3LCAyNSwgCisgICAgMjE2LCA3NywgMjQ1LCAxNDcsIDIxMywgNywgMjE5LCAyMTEsIDIyNywgNDEsIDEwNSwgMjEyLCAxMywgMjEzLCA3LCAyMzEsIAorICAgIDQ5LCAyMjcsIDQxLCAyMDIsIDg0LCAyMTIsIDE2MiwgMjQ0LCAxMzksIDIyNywgMTA1LCAyNDEsIDksIDI0MywgMTIzLCAKKyAgICAyNDQsIDgsIDI0NSwgMTg0LCAxMDUsIDI0NCwgMTI4LCAyNDQsIDgsIDI0NSwgMTg0LCAxMDgsIDI0NCwgMTI3LCAyNDQsIDgsIAorICAgIDI0NSwgMTg0LCAxNDcsIDI0NCwgMTI2LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDksIDI0NCwgMTI1LCAxODIsIDI1MSwgMTMwLCAKKyAgICAyMjMsIDg5LCAyMTAsIDk1LCAyMzEsIDExMiwgMjEwLCA5OSwgMjQxLCA4NCwgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAyNDAsIAorICAgIDI0NywgMjQ3LCA1OSwgMjQ3LCA2MSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMjQxLCA0OCwgMjEwLCAyNDIsIDIxMSwgMywgCisgICAgMjQxLCA5LCAyNDEsIDEwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ5LCAyNDAsIDExLCAyMTMsIDEzMCwgMjM5LCAxMTIsIAorICAgIDIzMSwgMjUsIDIxMywgMTMxLCAxNDcsIDIzNywgMjM4LCAyMTMsIDEzMCwgMjM3LCAyMzUsIDIzMSwgMjUsIDIxMywgMTMxLCAKKyAgICAxMDgsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMjE1LCAxNTAsIDIzMSwgMjUsIDIxMywgMTMxLCAxMDUsIDIwNiwgMjM2LCAyMTMsIAorICAgIDEzMCwgMjA2LCAxOTMsIDIxMSwgMjMxLCAyNDQsIDQ2LCAyNDQsIDQ4LCAyMTksIDE1NywgMjQ2LCAxODIsIDIxOSwgMTU5LCAKKyAgICAxMzgsIDIyMCwgODAsIDIxNywgMjQwLCAyMzYsIDEwOSwgMjQ3LCAyMTgsIDIxOCwgMjM2LCAyMzcsIDI3LCAyNDcsIDIzMCwgCisgICAgMjIxLCAxOTIsIDI0NywgMjE4LCAyMzcsIDI3LCAyMjMsIDUzLCAyMzEsIDM1LCAyMzEsIDM3LCAyMjIsIDIwOCwgMjI3LCAKKyAgICAxMTQsIDIyMiwgMjMxLCAyMTEsIDkwLCA3NiwgMjE0LCAxNTIsIDI1MCwgMTIwLCAyMTEsIDE2NCwgMjQxLCA4NCwgNzYsIAorICAgIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjQxLCAxMiwgMTY3LCAyMTAsIDYsIDIxMywgMTE3LCAyMzYsIDEwNiwgMjEwLCA2LCAKKyAgICAyMTMsIDExNywgMjM2LCAyOCwgMTY3LCAyMTAsIDYsIDMsIDIzMCwgNjYsIDIzNiwgMTA2LCAyMTAsIDYsIDMsIDIzMCwgNjYsIAorICAgIDIzNiwgMjksIDIyNywgMTE1LCAyMTAsIDYsIDIxMywgMTE3LCA4MCwgMjEwLCA2LCAyMTMsIDExNywgMjA0LCAxNjQsIDIxOSwgCisgICAgNjksIDIyNywgMTE1LCAyMzksIDE1MSwgMjE5LCA2OSwgMjI3LCAxMTUsIDI0MiwgNzAsIDIxOCwgODcsIDIxOSwgNjksIAorICAgIDIyNywgMTE1LCAyNDksIDE4LCAyMTksIDY5LCAyMjcsIDExNSwgMjA2LCAyMjQsIDIxOCwgODIsIDIxNiwgNzQsIDIyNywgCisgICAgMTE1LCAyNDAsIDUxLCAyMTYsIDc0LCAyMzEsIDM1LCAyMTYsIDU3LCAyMTIsIDEyMCwgMjEzLCA3LCAxMDgsIDIxMiwgMTE3LCAKKyAgICAyMTEsIDE2NiwgMjEyLCAxMjAsIDIxMywgNywgMTQ3LCAyMTIsIDExNiwgMjExLCAxNjUsIDI0NCwgOCwgMjQ1LCAxODQsIAorICAgIDIxMSwgMzQsIDI0NCwgMTIzLCAyMTcsIDIyNywgMjA2LCAxOTIsIDEwNSwgMjE3LCAyMjcsIDIwNiwgMTkwLCAyMTcsIDE5MCwgCisgICAgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDgsIDIxNywgMjI3LCAyMDYsIDE4OSwgMjE3LCAxODksIDIxMywgMTE4LCAyMDgsIAorICAgIDEwNCwgMjExLCA4OSwgMjExLCAxNywgMjQ3LCA2MCwgMjQ2LCAxODIsIDI0NywgMSwgMjI0LCAyMjQsIDIwNCwgMTAzLCAKKyAgICAyMjMsIDE4MSwgMjExLCA5MCwgNzYsIDIzNywgMjIzLCAyNTAsIDEyMCwgMjExLCA5MCwgNzYsIDIxNywgMjA4LCAyNTAsIAorICAgIDEyMCwgMjExLCAyMzAsIDI0MSwgODQsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDI0MSwgODQsIDc2LCAyMTcsIDIwOCwgCisgICAgMjUwLCAxMjAsIDI0MSwgNDUsIDIxMSwgOTAsIDc2LCAyMTEsIDM0LCAyMTEsIDI0NSwgMjEyLCAxMjAsIDIzOCwgMywgMTY3LCAKKyAgICAyMzAsIDI0MSwgMjEzLCA5NSwgMjEyLCAxMjAsIDE2NywgMjMwLCAyNDEsIDIxNCwgMTkxLCAyNDUsIDE4NCwgMjEzLCAxMjcsIAorICAgIDIzMCwgMjQxLCAyNDUsIDExMSwgMjExLCAzNSwgMjA5LCAxMzgsIDIxMSwgMTA4LCAyMjAsIDAsIDIxMCwgODQsIDI0NSwgCisgICAgMjMyLCAyMTksIDIyNiwgMjE3LCAyMjgsIDIyNCwgMjIzLCAyMTgsIDcyLCAyNTAsIDE1NiwgMjE3LCAyMjIsIDI0NSwgMjMyLCAKKyAgICAyNTAsIDE3MiwgMjIzLCA0MSwgMjEyLCAxNzEsIDgsIDYsIDEsIDIzOCwgMTE5LCA4LCA1LCAxLCAyMzgsIDExOSwgMjQ2LCAKKyAgICAyMDEsIDI1MSwgOCwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjAwLCAxLCAyMjcsIAorICAgIDY4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjM5LCAxNzgsIDIyOCwgMTIsIDEsIDIzOSwgMTg3LCAyNDAsIDYzLCAyMjgsIAorICAgIDEyLCAxLCAyMTUsIDIyNywgMjI4LCAxMiwgMSwgMjI3LCA0OSwgNzcsIDEzMSwgMjQ4LCA0NSwgMjEyLCAyMzgsIDIzOCwgCisgICAgODIsIDIyNCwgMTczLCAyMTYsIDY0LCAyMzksIDg5LCAyMzksIDg4LCAyMzksIDg3LCAyMjMsIDE4MywgMjAxLCAyNDMsIAorICAgIDIwMSwgMjQ0LCAyMDEsIDI0NiwgMjI2LCAyNDMsIDIxNSwgMjM1LCAyMjYsIDI0NSwgMjE1LCAyMzcsIDIxOSwgMzcsIDIyNiwgCisgICAgMjQyLCAyMTUsIDIzNCwgMjIxLCAyMjMsIDIyNCwgODYsIDIwNCwgMiwgMjI2LCAyNDQsIDIxNSwgMjM2LCAyMzksIDExMSwgCisgICAgMjE5LCAzNiwgMjA0LCA1MiwgMjQxLCAxMDcsIDIzOSwgOTksIDIyNCwgMTU0LCAyMjAsIDMyLCAyMDYsIDE5NCwgOTcsIAorICAgIDIyNCwgMTU0LCAyNDQsIDE0NSwgOTcsIDk2LCAyMDgsIDg0LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDIwOCwgODQsIDUzLCAKKyAgICAzLCA1MiwgODAsIDk1LCAxMSwgNCwgMjMwLCAxOTksIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAKKyAgICAyMjcsIDE4NSwgMTU1LCAyMDUsIDE2NSwgMjA1LCA1NCwgMjA0LCAyNDIsIDIwNCwgMjMxLCAyMDQsIDIyMCwgMjA0LCAyMDksIAorICAgIDIwNCwgMTk4LCAyMDQsIDE4NywgMjA0LCAxNzYsIDIwNSwgMTY0LCAyMDUsIDE1MywgMjA1LCAxNDIsIDIwNSwgMTMxLCAKKyAgICAyMDUsIDEyMCwgMjA1LCAxMDksIDIwNSwgOTgsIDI0NywgMTMwLCAyMTksIDI0MSwgODIsIDI0OCwgMTMsIDIwMSwgMjQ1LCAKKyAgICA5LCAyLCAyMjEsIDU3LCAyMDksIDE0MSwgOSwgMiwgMjIxLCA1NywgMTE1LCAyMjEsIDU3LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAorICAgIDE2MCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMDYsIDY1LCAyMDUsIDg3LCAyMDUsIDc2LCAKKyAgICAyMDUsIDY1LCAyMDUsIDUzLCAyMDUsIDQyLCAyMDUsIDMxLCAyMDUsIDIwLCAyMDUsIDksIDIwNCwgMjU0LCAyMDQsIDI0NiwgCisgICAgMjA0LCAyNDUsIDIwNCwgMjQ0LCAyMDQsIDI0MywgMjA0LCAyNDEsIDIwNCwgMjQwLCAyMDQsIDIzOSwgMjA0LCAyMzgsIAorICAgIDIwNCwgMjM3LCAyMDQsIDIzNiwgMjA0LCAyMzUsIDIwNCwgMjM0LCAyMDQsIDIzMywgMjA0LCAyMzIsIDIwNCwgMjMwLCAKKyAgICAyMDQsIDIyOSwgMjA0LCAyMjgsIDIwNCwgMjI3LCAyMDQsIDIyNiwgMjA0LCAyMjUsIDIwNCwgMjI0LCAyMDQsIDIyMywgCisgICAgMjA0LCAyMjIsIDIwNCwgMjIxLCAyMDQsIDIxOSwgMjA0LCAyMTgsIDIwNCwgMjE3LCAyMDQsIDIxNiwgMjA0LCAyMTUsIAorICAgIDIwNCwgMjE0LCAyMDQsIDIxMywgMjA0LCAyMTIsIDIwNCwgMjExLCAyMDQsIDIxMCwgMjA0LCAyMDgsIDIwNCwgMjA3LCAKKyAgICAyMDQsIDIwNiwgMjA0LCAyMDUsIDIwNCwgMjA0LCAyMDQsIDIwMywgMjA0LCAyMDIsIDIwNCwgMjAxLCAyMDQsIDIwMCwgCisgICAgMjA0LCAxOTksIDIwNCwgMTk3LCAyMDQsIDE5NiwgMjA0LCAxOTUsIDIwNCwgMTk0LCAyMDQsIDE5MywgMjA0LCAxOTIsIAorICAgIDIwNCwgMTkxLCAyMDQsIDE5MCwgMjA0LCAxODksIDIwNCwgMTg4LCAyMDQsIDE4NiwgMjA0LCAxODUsIDIwNCwgMTg0LCAKKyAgICAyMDQsIDE4MywgMjA0LCAxODIsIDIwNCwgMTgxLCAyMDQsIDE4MCwgMjA0LCAxNzksIDIwNCwgMTc4LCAyMDQsIDE3NywgCisgICAgMjA0LCAxNzUsIDIwNCwgMTc0LCAyMDQsIDE3MywgMjA0LCAxNzIsIDIwNCwgMTcxLCAyMDQsIDE3MCwgMjA0LCAxNjksIAorICAgIDIwNCwgMTY4LCAyMDQsIDE2NywgMjA0LCAxNjYsIDIwNSwgMTYzLCAyMDUsIDE2MiwgMjA1LCAxNjEsIDIwNSwgMTYwLCAKKyAgICAyMDUsIDE1OSwgMjA1LCAxNTgsIDIwNSwgMTU3LCAyMDUsIDE1NiwgMjA1LCAxNTUsIDIwNSwgMTU0LCAyMDUsIDE1MiwgCisgICAgMjA1LCAxNTEsIDIwNSwgMTUwLCAyMDUsIDE0OSwgMjA1LCAxNDgsIDIwNSwgMTQ3LCAyMDUsIDE0NiwgMjA1LCAxNDUsIAorICAgIDIwNSwgMTQ0LCAyMDUsIDE0MywgMjA1LCAxNDEsIDIwNSwgMTQwLCAyMDUsIDEzOSwgMjA1LCAxMzgsIDIwNSwgMTM3LCAKKyAgICAyMDUsIDEzNiwgMjA1LCAxMzUsIDIwNSwgMTM0LCAyMDUsIDEzMywgMjA1LCAxMzIsIDIwNSwgMTMwLCAyMDUsIDEyOSwgCisgICAgMjA1LCAxMjgsIDIwNSwgMTI3LCAyMDUsIDEyNiwgMjA1LCAxMjUsIDIwNSwgMTI0LCAyMDUsIDEyMywgMjA1LCAxMjIsIAorICAgIDIwNSwgMTIxLCAyMDUsIDExOSwgMjA1LCAxMTgsIDIwNSwgMTE3LCAyMDUsIDExNiwgMjA1LCAxMTUsIDIwNSwgMTE0LCAKKyAgICAyMDUsIDExMywgMjA1LCAxMTIsIDIwNSwgMTExLCAyMDUsIDExMCwgMjA1LCAxMDgsIDIwNSwgMTA3LCAyMDUsIDEwNiwgCisgICAgMjA1LCAxMDUsIDIwNSwgMTA0LCAyMDUsIDEwMywgMjA1LCAxMDIsIDIwNSwgMTAxLCAyMDUsIDEwMCwgMjA1LCA5OSwgMjA1LCAKKyAgICA5NywgMjA1LCA5NiwgMjA1LCA5NSwgMjA1LCA5NCwgMjA1LCA5MywgMjA1LCA5MiwgMjA1LCA5MSwgMjA1LCA5MCwgMjA1LCAKKyAgICA4OSwgMjA1LCA4OCwgMjA1LCA4NiwgMjA1LCA4NSwgMjA1LCA4NCwgMjA1LCA4MywgMjA1LCA4MiwgMjA1LCA4MSwgMjA1LCAKKyAgICA4MCwgMjA1LCA3OSwgMjA1LCA3OCwgMjA1LCA3NywgMjA1LCA3NSwgMjA1LCA3NCwgMjA1LCA3MywgMjA1LCA3MiwgMjA1LCAKKyAgICA3MSwgMjA1LCA3MCwgMjA1LCA2OSwgMjA1LCA2OCwgMjA1LCA2NywgMjA1LCA2NiwgMjA1LCA2NCwgMjA1LCA2MywgMjA1LCAKKyAgICA2MiwgMjA1LCA2MSwgMjA1LCA2MCwgMjA1LCA1OSwgMjA1LCA1OCwgMjA1LCA1NywgMjA1LCA1NiwgMjA1LCA1NSwgMjA1LCAKKyAgICA1MiwgMjA1LCA1MSwgMjA1LCA1MCwgMjA1LCA0OSwgMjA1LCA0OCwgMjA1LCA0NywgMjA1LCA0NiwgMjA1LCA0NSwgMjA1LCAKKyAgICA0NCwgMjA1LCA0MywgMjA1LCA0MSwgMjA1LCA0MCwgMjA1LCAzOSwgMjA1LCAzOCwgMjA1LCAzNywgMjA1LCAzNiwgMjA1LCAKKyAgICAzNSwgMjA1LCAzNCwgMjA1LCAzMywgMjA1LCAzMiwgMjA1LCAzMCwgMjA1LCAyOSwgMjA1LCAyOCwgMjA1LCAyNywgMjA1LCAKKyAgICAyNiwgMjA1LCAyNSwgMjA1LCAyNCwgMjA1LCAyMywgMjA1LCAyMiwgMjA1LCAyMSwgMjA1LCAxOSwgMjA1LCAxOCwgMjA1LCAKKyAgICAxNywgMjA1LCAxNiwgMjA1LCAxNSwgMjA1LCAxNCwgMjA1LCAxMywgMjA1LCAxMiwgMjA1LCAxMSwgMjA1LCAxMCwgMjA1LCAKKyAgICA4LCAyMDUsIDcsIDIwNSwgNiwgMjA1LCA1LCAyMDUsIDQsIDIwNSwgMywgMjA1LCAyLCAyMDUsIDEsIDIwNSwgMCwgMjA0LCAKKyAgICAyNTUsIDIwNCwgMjUzLCAyMDQsIDI1MiwgMjA0LCAyNTEsIDIwNCwgMjUwLCAyMDQsIDI0OSwgMjA0LCAyNDgsIDIwNCwgCisgICAgMjQ3LCA4LCA2LCAxLCAzNCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDIyNSwgMTcxLCAKKyAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgCisgICAgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgCisgICAgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIAorICAgIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgCisgICAgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAKKyAgICAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDUsIDEsIDE4OCwgMywgCisgICAgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAKKyAgICAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIAorICAgIDE2NSwgOCwgNSwgMSwgMjIyLCAyMDYsIDMsIDIwOCwgMjI4LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIAorICAgIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKKyAgICAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIAorICAgIDI1MywgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIAorICAgIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIAorICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAKKyAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjIwLCAKKyAgICA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYzLCAKKyAgICAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgCisgICAgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAorICAgIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIAorICAgIDE4OCwgMywgNzAsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAKKyAgICAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCAKKyAgICA2MywgMjUsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgCisgICAgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMjMwLCAxODUsIAorICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzAsIDE4NSwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIyOCwgCisgICAgMTMxLCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgCisgICAgMjA4LCAyMjcsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgCisgICAgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAKKyAgICAxMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAKKyAgICAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgCisgICAgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCAKKyAgICA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMzcsIDI1MywgCisgICAgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAyMDcsIAorICAgIDE3NCwgMjA2LCAxNjUsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjUsIDMsIDE2NSwgOCwgNSwgMSwgCisgICAgMjE0LCAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMTQsIDE5MywgMywgMTY1LCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAKKyAgICAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAxOTMsIDMsIDE2NSwgMTAsIDIxMywgMTI3LCA4OSwgCisgICAgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDMwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwNCwgCisgICAgNzAsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDIxMywgMTI3LCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDczLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAorICAgIDY4LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjEzLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAKKyAgICAyMzcsIDEyOCwgODcsIDMsIDc0LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTA5LCAxMCwgCisgICAgMjEzLCAxMjcsIDIyMSwgMTc5LCAzLCAyMjksIDE4OSwgMTc5LCAxLCAyMjksIDExOSwgNDQsIDEwOSwgMjMwLCA1NCwgNDQsIAorICAgIDEwOSwgMjIyLCAyMDUsIDQ0LCAxMDksIDI0NywgMTI1LCA0NCwgMTA5LCAyMjEsIDEzLCA0NCwgMTA5LCAyMDcsIDI0NCwgCisgICAgNDQsIDEwOSwgMjIxLCAyMjgsIDQ0LCAxMDksIDIxMCwgNjksIDQ0LCAxMDksIDIyMywgMTYzLCA0NCwgMTA5LCAyMTksIAorICAgIDE4NCwgNDQsIDEwOSwgMjI2LCAxODUsIDQ0LCAxMDksIDIwMywgMTI0LCA0NCwgMTA5LCAxNDYsIDQ0LCAxMDksIDE1OSwgCisgICAgNDQsIDEwOSwgMjA2LCAxNjQsIDQ0LCAxMDksIDIyNywgNjksIDQ0LCAxMDksIDIyNywgNzgsIDQ0LCAxMDksIDIxNSwgMTg2LCAKKyAgICA0NCwgMTA5LCAyMjEsIDIxMCwgNDQsIDEwOSwgMjMwLCAxODQsIDQ0LCAxMDksIDIxMywgOTIsIDQ0LCAxMDksIDIxMSwgCisgICAgMTY3LCA0NCwgMTA5LCAxOTQsIDQ0LCAxMDksIDIzNywgMTcxLCA0NCwgMTA5LCAyMjgsIDIyNCwgNDQsIDQsIDIzMCwgNDEsIAorICAgIDQ0LCA0LCAyMjksIDEwMCwgNDQsIDQsIDIyOSwgODcsIDQ0LCA0LCAyMjgsIDIwOSwgNDQsIDQsIDIyOCwgMTc0LCA0NCwgNCwgCisgICAgMjI5LCAyMDEsIDQ0LCA0LCAyMjksIDE5OCwgNDQsIDQsIDIzMCwgMTgsIDQ0LCA0LCAyMjksIDI2LCA0NCwgNCwgMjI5LCA2LCAKKyAgICA0NCwgNCwgMjI5LCAyMTksIDQ0LCA0LCAyMjIsIDIwMiwgNDQsIDQsIDIyMiwgMTUxLCA0NCwgNCwgMjIyLCAxNDcsIDQ0LCAKKyAgICA0LCAyMjIsIDExNiwgNDQsIDQsIDIyMiwgMTA4LCA0NCwgNCwgMjIyLCAxOTAsIDQ0LCA0LCAyMjIsIDE4OCwgNDQsIDQsIAorICAgIDIyMiwgMTk5LCA0NCwgNCwgMjIyLCAxMjgsIDQ0LCA0LCAyMjIsIDEyMywgNDQsIDQsIDIyMiwgMTkyLCA0NCwgNCwgMjQ3LCAKKyAgICA5MSwgNDQsIDQsIDI0NiwgNzksIDQ0LCA0LCAyNDYsIDY5LCA0NCwgNCwgMjQ1LCAxMTAsIDQ0LCA0LCAyNDUsIDc2LCA0NCwgCisgICAgNCwgMjQ2LCAyMzgsIDQ0LCA0LCAyNDYsIDIzMCwgNDQsIDQsIDI0NywgODAsIDQ0LCA0LCAyNDUsIDI1NCwgNDQsIDQsIAorICAgIDI0NSwgMTgwLCA0NCwgNCwgMjQ3LCAxNSwgNDQsIDQsIDIyMSwgMTAsIDQ0LCA0LCAyMjAsIDI0OCwgNDQsIDQsIDIyMCwgCisgICAgMjQzLCA0NCwgNCwgMjIwLCAyMjYsIDQ0LCA0LCAyMjAsIDIxOCwgNDQsIDQsIDIyMSwgMSwgNDQsIDQsIDIyMSwgMCwgNDQsIAorICAgIDQsIDIyMSwgNywgNDQsIDQsIDIyMCwgMjMzLCA0NCwgNCwgMjIwLCAyMzAsIDQ0LCA0LCAyMjEsIDQsIDQ0LCA0LCAyMDcsIAorICAgIDI0MCwgNDQsIDQsIDIwNywgMjIwLCA0NCwgNCwgMjA3LCAyMTksIDQ0LCA0LCAyMDcsIDIwOCwgNDQsIDQsIDIwNywgMjA1LCAKKyAgICA0NCwgNCwgMjA3LCAyMzYsIDQ0LCA0LCAyMDcsIDIzNSwgNDQsIDQsIDIwNywgMjM5LCA0NCwgNCwgMjA3LCAyMTgsIDQ0LCAKKyAgICA0LCAyMDcsIDIxNywgNDQsIDQsIDIwNywgMjM4LCA0NCwgNCwgMjIxLCAyMjYsIDQ0LCA0LCAyMjEsIDIxMiwgNDQsIDQsIAorICAgIDIyMSwgMjExLCA0NCwgNCwgMjIxLCAxOTUsIDQ0LCA0LCAyMjEsIDE5NCwgNDQsIDQsIDIyMSwgMjIyLCA0NCwgNCwgMjIxLCAKKyAgICAyMjEsIDQ0LCA0LCAyMjEsIDIyNSwgNDQsIDQsIDIyMSwgMTk3LCA0NCwgNCwgMjIxLCAxOTYsIDQ0LCA0LCAyMjEsIDIyNCwgCisgICAgNDQsIDQsIDIxMCwgMTgsIDQ0LCA0LCAyMDksIDIsIDQ0LCA0LCAyMDgsIDI0MiwgNDQsIDQsIDIwNywgMjAzLCA0NCwgNCwgCisgICAgMjA3LCAxNjUsIDQ0LCA0LCAyMDksIDE4NywgNDQsIDQsIDIwOSwgMTc2LCA0NCwgNCwgMjA5LCAyNTAsIDQ0LCA0LCAxMzUsIAorICAgIDQ0LCA0LCAyMDgsIDE0OCwgNDQsIDQsIDIwOSwgMjA3LCA0NCwgNCwgMjIzLCAxMDYsIDQ0LCA0LCAyMjIsIDEwMCwgNDQsIAorICAgIDQsIDIyMiwgNzUsIDQ0LCA0LCAyMjEsIDg0LCA0NCwgNCwgMjIxLCAyNSwgNDQsIDQsIDIyMiwgMjQwLCA0NCwgNCwgMjIyLCAKKyAgICAyMzUsIDQ0LCA0LCAyMjMsIDkyLCA0NCwgNCwgMjIxLCAxOTEsIDQ0LCA0LCAyMjEsIDE4MCwgNDQsIDQsIDIyMywgNjUsIAorICAgIDQ0LCA0LCAyMTksIDE2OCwgNDQsIDQsIDIxOCwgMTY3LCA0NCwgNCwgMjE4LCAxMjksIDQ0LCA0LCAyMTcsIDE5MSwgNDQsIAorICAgIDQsIDIxNywgMTU3LCA0NCwgNCwgMjE5LCAzNCwgNDQsIDQsIDIxOSwgMjMsIDQ0LCA0LCAyMTksIDE0OCwgNDQsIDQsIDIxOCwgCisgICAgNjksIDQ0LCA0LCAyMTgsIDQ1LCA0NCwgNCwgMjE5LCA0OCwgNDQsIDQsIDIyNSwgMTc1LCA0NCwgNCwgMjI0LCAxNTUsIDQ0LCAKKyAgICA0LCAyMjQsIDEyNSwgNDQsIDQsIDIyMywgMjQ2LCA0NCwgNCwgMjIzLCAxOTIsIDQ0LCA0LCAyMjUsIDIwLCA0NCwgNCwgCisgICAgMjI1LCA4LCA0NCwgNCwgMjI1LCAxNDAsIDQ0LCA0LCAyMjQsIDgyLCA0NCwgNCwgMjI0LCAzNSwgNDQsIDQsIDIyNSwgNjcsIAorICAgIDQ0LCA0LCAyMDMsIDExMCwgNDQsIDQsIDIwMywgMTEsIDQ0LCA0LCAyMDMsIDIsIDQ0LCA0LCAyMDIsIDIxMywgNDQsIDQsIAorICAgIDIwMiwgMTgxLCA0NCwgNCwgMjAzLCA1MiwgNDQsIDQsIDIwMywgNDksIDQ0LCA0LCAyMDMsIDg5LCA0NCwgNCwgMjAyLCAKKyAgICAyNDcsIDQ0LCA0LCAyMDIsIDIzMiwgNDQsIDQsIDIwMywgNjIsIDQ0LCA0LCAyMTYsIDIxNiwgNDQsIDQsIDIxNiwgNTcsIAorICAgIDQ0LCA0LCAyMTYsIDMsIDQ0LCA0LCAyMTUsIDE0NSwgNDQsIDQsIDIxNSwgMTE0LCA0NCwgNCwgMjE2LCAxNTgsIDQ0LCA0LCAKKyAgICAyMTYsIDEzNSwgNDQsIDQsIDIxNiwgMTk3LCA0NCwgNCwgMjE1LCAyMjcsIDQ0LCA0LCAyMTUsIDIwOCwgNDQsIDQsIDIxNiwgCisgICAgMTY3LCA0NCwgNCwgMjI4LCAxMTIsIDQ0LCA0LCAyMjcsIDE0OCwgNDQsIDQsIDIyNywgMTMwLCA0NCwgNCwgMjI2LCAyMzksIAorICAgIDQ0LCA0LCAyMjYsIDIxMCwgNDQsIDQsIDIyNywgMjM0LCA0NCwgNCwgMjI3LCAyMjYsIDQ0LCA0LCAyMjgsIDg2LCA0NCwgNCwgCisgICAgMjI3LCA0OSwgNDQsIDQsIDIyNywgMTgsIDQ0LCA0LCAyMjcsIDI1MSwgNDQsIDQsIDIwNiwgODUsIDQ0LCA0LCAyMDUsIAorICAgIDIzMCwgNDQsIDQsIDIwNSwgMjE1LCA0NCwgNCwgMjA0LCAxNjMsIDQ0LCA0LCAyMDQsIDE1NiwgNDQsIDQsIDIwNiwgNTUsIAorICAgIDQ0LCA0LCAyMDYsIDUwLCA0NCwgNCwgMjA2LCA4MSwgNDQsIDQsIDIwNSwgMTg5LCA0NCwgNCwgMjA1LCAxNzYsIDQ0LCA0LCAKKyAgICAyMDYsIDYxLCA0NCwgNCwgMjI3LCA2NywgNDQsIDQsIDIyNywgNjIsIDQ0LCA0LCAyMjcsIDYxLCA0NCwgNCwgMjI3LCA1OCwgCisgICAgNDQsIDQsIDIyNywgNTcsIDQ0LCA0LCAyMjcsIDY0LCA0NCwgNCwgMjI3LCA2MywgNDQsIDQsIDIyNywgNjYsIDQ0LCA0LCAKKyAgICAyMjcsIDYwLCA0NCwgNCwgMjI3LCA1OSwgNDQsIDQsIDIyNywgNjUsIDQ0LCA0LCAyMjcsIDc2LCA0NCwgNCwgMjI3LCA3MSwgCisgICAgNDQsIDQsIDIyNywgNzAsIDQ0LCA0LCAyMjcsIDU0LCA0NCwgNCwgMjI3LCA1MywgNDQsIDQsIDIyNywgNzMsIDQ0LCA0LCAKKyAgICAyMjcsIDcyLCA0NCwgNCwgMjI3LCA3NSwgNDQsIDQsIDIyNywgNTYsIDQ0LCA0LCAyMjcsIDU1LCA0NCwgNCwgMjI3LCA3NCwgCisgICAgNDQsIDQsIDIxNSwgMTg0LCA0NCwgNCwgMjE1LCAxNzMsIDQ0LCA0LCAyMTUsIDE3MiwgNDQsIDQsIDIxNSwgMTY1LCA0NCwgCisgICAgNCwgMjE1LCAxNTgsIDQ0LCA0LCAyMTUsIDE4MCwgNDQsIDQsIDIxNSwgMTc5LCA0NCwgNCwgMjE1LCAxODMsIDQ0LCA0LCAKKyAgICAyMTUsIDE3MSwgNDQsIDQsIDIxNSwgMTcwLCA0NCwgNCwgMjE1LCAxODIsIDQ0LCA0LCAyMjEsIDIwOCwgNDQsIDQsIDIyMSwgCisgICAgMjAzLCA0NCwgNCwgMjIxLCAyMDIsIDQ0LCA0LCAyMjEsIDE5OSwgNDQsIDQsIDIyMSwgMTk4LCA0NCwgNCwgMjIxLCAyMDUsIAorICAgIDQ0LCA0LCAyMjEsIDIwNCwgNDQsIDQsIDIyMSwgMjA3LCA0NCwgNCwgMjIxLCAyMDEsIDQ0LCA0LCAyMjEsIDIwMCwgNDQsIAorICAgIDQsIDIyMSwgMjA2LCA0NCwgNCwgMjMwLCAxODAsIDQ0LCA0LCAyMzAsIDE0MSwgNDQsIDQsIDIzMCwgMTM0LCA0NCwgNCwgCisgICAgMjMwLCA4MiwgNDQsIDQsIDIzMCwgNjQsIDQ0LCA0LCAyMzAsIDE2MSwgNDQsIDQsIDIzMCwgMTU5LCA0NCwgNCwgMjMwLCAKKyAgICAxNzQsIDQ0LCA0LCAyMzAsIDEwMSwgNDQsIDQsIDIzMCwgOTEsIDQ0LCA0LCAyMzAsIDE2NywgNDQsIDQsIDIxMywgODUsIAorICAgIDQ0LCA0LCAyMTMsIDExLCA0NCwgNCwgMjEzLCA2LCA0NCwgNCwgMjEyLCAxOTksIDQ0LCA0LCAyMTIsIDE4MiwgNDQsIDQsIAorICAgIDIxMywgNDMsIDQ0LCA0LCAyMTMsIDQxLCA0NCwgNCwgMjEzLCA3NCwgNDQsIDQsIDIxMiwgMjQyLCA0NCwgNCwgMjEyLCAKKyAgICAyMzYsIDQ0LCA0LCAyMTMsIDUyLCA0NCwgNCwgMjExLCAxNjMsIDQ0LCA0LCAyMTEsIDEzMiwgNDQsIDQsIDIxMSwgMTI4LCAKKyAgICA0NCwgNCwgMjExLCAxMTksIDQ0LCA0LCAyMTEsIDExNiwgNDQsIDQsIDIxMSwgMTM4LCA0NCwgNCwgMjExLCAxMzcsIDQ0LCAKKyAgICA0LCAyMTEsIDE2MiwgNDQsIDQsIDIxMSwgMTI0LCA0NCwgNCwgMjExLCAxMjMsIDQ0LCA0LCAyMTEsIDE0MCwgNDQsIDQsIAorICAgIDIxNSwgMzMsIDQ0LCA0LCAyMTIsIDE2MiwgNDQsIDQsIDIxMiwgMTQyLCA0NCwgNCwgMjExLCAxMCwgNDQsIDQsIDIxMCwgCisgICAgMTc5LCA0NCwgNCwgMjE0LCAxNzcsIDQ0LCA0LCAyMTQsIDE2NSwgNDQsIDQsIDIxNSwgMTgsIDQ0LCA0LCAyMTIsIDEzLCAKKyAgICA0NCwgNCwgMjExLCAyNTAsIDQ0LCA0LCAyMTQsIDIxNywgNDQsIDQsIDIzNywgMTU3LCA0NCwgNCwgMjM3LCAzLCA0NCwgNCwgCisgICAgMjM2LCAyMzksIDQ0LCA0LCAyMzYsIDI2LCA0NCwgNCwgMjM2LCAxLCA0NCwgNCwgMjM3LCA2NywgNDQsIDQsIDIzNywgNDgsIAorICAgIDQ0LCA0LCAyMzcsIDE0NywgNDQsIDQsIDIzNiwgMTM2LCA0NCwgNCwgMjM2LCAxMTcsIDQ0LCA0LCAyMzcsIDc2LCA0NCwgNCwgCisgICAgMjI4LCAyMjMsIDQ0LCA0LCAyMjgsIDIyMiwgNDQsIDQsIDIyOCwgMjE3LCA0NCwgNCwgMjI4LCAyMTYsIDQ0LCA0LCAyMjgsIAorICAgIDIxMywgNDQsIDQsIDIyOCwgMjEyLCA0NCwgNCwgMjI4LCAyMTksIDQ0LCA0LCAyMjgsIDIxOCwgNDQsIDQsIDIyOCwgMjIxLCAKKyAgICA0NCwgNCwgMjI4LCAyMTUsIDQ0LCA0LCAyMjgsIDIxNCwgNDQsIDQsIDIyOCwgMjIwLCA0NCwgNCwgMjEyLCAyMDUsIDE0MCwgCisgICAgMTA5LCAyLCAyMDMsIDc1LCAxNDAsIDEwOSwgMiwgMjE2LCAxODYsIDE0MCwgMTA5LCAyLCAyMTYsIDEwMiwgMTE0LCAxLCAKKyAgICAyMDcsIDk1LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTczLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxNDQsIDg1LCAKKyAgICAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDI2LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxMTUsIDg1LCAxMDksIDIsIAorICAgIDI0NSwgMjQ5LCAyMjIsIDEyOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NywgOTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKKyAgICAyNDYsIDE5OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NSwgMjU0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ2LCAxMTYsIAorICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjAsIDIzMywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NCwgMjEyLCA4NSwgMTA5LCAKKyAgICAyLCAyNDUsIDI0OSwgMjA3LCAyMjksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDMsIDExMywgODUsIDEwOSwgMiwgMjQ1LCAKKyAgICAyNDksIDIwNywgMjI0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjAxLCAyMDEsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTAsIAorICAgIDIyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA5LCAxMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxMzUsIDg1LCAxMDksIAorICAgIDIsIDI0NSwgMjQ5LCAyMDksIDQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIxLCAxOTEsIDg1LCAxMDksIDIsIDI0NSwgCisgICAgMjQ5LCAyNDksIDMyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAyMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIAorICAgIDY5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAxODAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjQsIDgyLCA4NSwgCisgICAgMTA5LCAyLCAyNDUsIDI0OSwgMjAyLCAyNDcsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDIyNywgODUsIDEwOSwgMiwgCisgICAgMjQ1LCAyNDksIDIyNywgNDksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDUsIDE4OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIAorICAgIDIxMywgOTAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTEsIDE2NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxNSwgMzYsIAorICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxNTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjgsIDExMywgODUsIDIyLCAyLCAKKyAgICAyNDUsIDI0OSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAKKyAgICAyMiwgMiwgMjQ1LCAyNDksIDIxNSwgMTAyLCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDk1LCA4NSwgCisgICAgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDEwNiwgODUsIDIyLCAyLCAyMjAsIDM5LCA4NSwgMjIsIDIsIDI1MSwgCisgICAgMjQyLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMjAzLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTUxLCAxNzIsIDEsIDI0OCwgCisgICAgNzksIDIyMiwgMTE2LCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTI4LCA2NywgCisgICAgMSwgMjQ4LCA3OSwgMjIyLCAyMDMsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTE2LCAKKyAgICA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxOTAsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIDEsIDI1MSwgNTcsIDI0NiwgCisgICAgMjM4LCA2NywgMSwgMjUxLCA1NywgMjA3LCAyMDMsIDY3LCAxLCAyNTEsIDU3LCAxMzUsIDY3LCAxLCAyNTEsIDU3LCAyMTksIAorICAgIDE4NCwgNjUsIDEsIDI0MCwgMTk4LCAyNDAsIDE5NywgMjQ1LCAxODgsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MCwgCisgICAgMTk4LCAyNDUsIDE4OCwgMTQzLCAxNDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va19vZmZzZXQxW10gPSB7CiAgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAKLSAgICAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAKLSAgICA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCAKLSAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCAKLSAgICA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMDQsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIAotICAgIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAKLSAgICAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgMTI5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMzAsIDEzMSwgCi0gICAgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIAotICAgIDE0NiwgMTQ3LCA4NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE1MywgODcsIAotICAgIDE1NCwgMTU1LCAxNTYsIDg3LCAxNTcsIDg3LCAxNTgsIDg3LCA4NywgODcsIDE1OSwgODcsIDg3LCA4NywgMTYwLCAxNjEsIAotICAgIDE2MiwgMTYzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjQsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCi0gICAgMTY5LCAxNzAsIDE3MSwgODcsIDE3MiwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAKLSAgICAxNzksIDE4MCwgMTgxLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTgyLCAKLSAgICAxODMsIDE4NCwgMTg1LCAxODYsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4NywgMTg4LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDE4OSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDg3LCAxOTUsIAotICAgIDg3LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCAyMDQsIDIwNSwgODcsIDg3LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgODcsIDIxMSwgMjEyLCAyMTMsIDIxNCwgCi0gICAgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDIyMCwgMjIxLCAKLSAgICAyMjIsIDIyMywgMjI0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjUsIDg3LCAyMjYsIDIyNywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMjM1LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIAorICAgIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTUsIDU2LCA1NywgNTgsIAorICAgIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNjYsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIAorICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgNTIsIDg3LCA1MiwgODgsIAorICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDk4LCA5OSwgMTAwLCAKKyAgICAxMDEsIDEwMiwgMTAzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA0LCAxMDUsIDEwNiwgCisgICAgMTA3LCAxMDgsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDEwOSwgMTEwLCAxMTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDExMiwgMTEzLCAxMTQsIDExNSwgNTIsIDUyLCA1MiwgMTE2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgMTE3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOCwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOSwgMTIwLCAKKyAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTMwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMSwgNTIsIDEzMiwgMTMzLCAxMzQsIAorICAgIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDIsIDE0MywgMTQ0LCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ1LCAxNDYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ3LCAxNDgsIDE0OSwgCisgICAgMTUwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IHBocmFzZWJvb2tfb2Zmc2V0MltdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDMsIDYsIDksIDExLCAxNCwgMTcsIDE5LCAyMSwgMjQsIDI3LCAyOSwgMzEsIAotICAgIDMzLCAzNSwgMzksIDQxLCA0NCwgNDYsIDQ4LCA1MCwgNTIsIDU0LCA1NiwgNTgsIDYwLCA2MiwgNjQsIDY2LCA2OSwgNzIsIAotICAgIDc1LCA3OCwgODIsIDg2LCA5MSwgOTYsIDEwMSwgMTA1LCAxMTAsIDExNSwgMTIwLCAxMjQsIDEyOSwgMTM0LCAxMzgsIDE0MiwgCi0gICAgMTQ3LCAxNTEsIDE1NiwgMTYxLCAxNjUsIDE3MCwgMTc1LCAxNzksIDE4NCwgMTg5LCAxOTQsIDE5OSwgMjA0LCAyMDcsIAotICAgIDIxMSwgMjE0LCAyMTgsIDIyMSwgMjI1LCAyMjksIDIzNCwgMjM5LCAyNDQsIDI0OCwgMjUzLCAyNTgsIDI2MywgMjY3LCAKLSAgICAyNzIsIDI3NywgMjgxLCAyODUsIDI5MCwgMjk0LCAyOTksIDMwNCwgMzA4LCAzMTMsIDMxOCwgMzIyLCAzMjcsIDMzMiwgCi0gICAgMzM3LCAzNDIsIDM0NywgMzUxLCAzNTQsIDM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5LCAzNjMsIDM2OCwgCi0gICAgMzcxLCAzNzQsIDM3NywgMzgwLCAzODMsIDM4NiwgMzg4LCAzOTEsIDM5NywgNDA1LCA0MDgsIDQxMiwgNDE1LCA0MTcsIAotICAgIDQyMCwgNDIzLCA0MjYsIDQyOSwgNDMzLCA0MzYsIDQzOSwgNDQzLCA0NDUsIDQ0OCwgNDU0LCA0NjIsIDQ2OSwgNDc2LCAKLSAgICA0ODMsIDQ4OCwgNDk1LCA1MDEsIDUwOCwgNTE0LCA1MjEsIDUyOSwgNTM0LCA1NDIsIDU0OSwgNTU1LCA1NjIsIDU2OSwgCi0gICAgNTc3LCA1ODQsIDU5MiwgNjAwLCA2MDUsIDYxMiwgNjE5LCA2MjUsIDYzMiwgNjM4LCA2NDUsIDY0OCwgNjU0LCA2NjEsIAotICAgIDY2NywgNjc0LCA2ODEsIDY4OCwgNjkzLCA3MDAsIDcwNywgNzEzLCA3MjAsIDcyNiwgNzMzLCA3NDEsIDc0NiwgNzU0LCAKLSAgICA3NjEsIDc2NywgNzc0LCA3ODEsIDc4OSwgNzk2LCA4MDQsIDgxMiwgODE3LCA4MjQsIDgzMSwgODM3LCA4NDQsIDg1MCwgCi0gICAgODU3LCA4NjAsIDg2NiwgODczLCA4NzksIDg4NiwgODkzLCA5MDAsIDkwNSwgOTEzLCA5MjAsIDkyNywgOTM0LCA5NDEsIAotICAgIDk0OCwgOTU1LCA5NjIsIDk2OSwgOTc3LCA5ODUsIDk5MywgMTAwMSwgMTAwOSwgMTAxNywgMTAyNSwgMTAzMywgMTA0MCwgCi0gICAgMTA0NywgMTA1NCwgMTA2MSwgMTA2OCwgMTA3NSwgMTA4MiwgMTA4OSwgMTA5NiwgMTEwMywgMTExMCwgMTExNywgMTEyNSwgCi0gICAgMTEzMywgMTE0MSwgMTE0OSwgMTE1NywgMTE2NSwgMTE3MywgMTE4MSwgMTE4OSwgMTE5NywgMTIwNCwgMTIxMSwgMTIxOCwgCi0gICAgMTIyNSwgMTIzMywgMTI0MSwgMTI0OSwgMTI1NywgMTI2NSwgMTI3MywgMTI4MSwgMTI4NywgMTI5MiwgMTI5NywgMTMwNSwgCi0gICAgMTMxMywgMTMyMSwgMTMyOSwgMTMzNCwgMTM0MSwgMTM0OCwgMTM1NiwgMTM2NCwgMTM3MiwgMTM4MCwgMTM5MCwgMTQwMCwgCi0gICAgMTQwNywgMTQxNCwgMTQyMSwgMTQyOCwgMTQzNiwgMTQ0NCwgMTQ1MiwgMTQ2MCwgMTQ3MSwgMTQ3NiwgMTQ4MSwgMTQ4OCwgCi0gICAgMTQ5NSwgMTUwMiwgMTUwOSwgMTUxNiwgMTUyMywgMTUyOCwgMTUzMywgMTU0MCwgMTU0NywgMTU1NSwgMTU2MywgMTU3MSwgCi0gICAgMTU3OSwgMTU4NiwgMTU5MywgMTYwMSwgMTYwOSwgMTYxNywgMTYyNSwgMTYzMywgMTY0MSwgMTY0OSwgMTY1NywgMTY2NSwgCi0gICAgMTY3MywgMTY4MCwgMTY4NywgMTY5MywgMTY5OSwgMTcwNiwgMTcxMywgMTcyMCwgMTcyNywgMTczNSwgMTc0MywgMTc1MCwgCi0gICAgMTc1NywgMTc2NCwgMTc3MSwgMTc3OSwgMTc4NywgMTc5NSwgMTgwMywgMTgxMSwgMTgxOCwgMTgyNSwgMTgzMywgMTg0MSwgCi0gICAgMTg0OSwgMTg1NywgMTg2MywgMTg2OSwgMTg3NSwgMTg4MiwgMTg4OSwgMTg5NCwgMTg5OSwgMTkwNCwgMTkxMSwgMTkxOCwgCi0gICAgMTkyNSwgMTkzMiwgMTk0MCwgMTk0OCwgMTk1NSwgMTk2MSwgMTk2NiwgMTk3MSwgMTk3OCwgMTk4NSwgMTk5MiwgMTk5NywgCi0gICAgMjAwMiwgMjAwNywgMjAxNCwgMjAyMSwgMjAyOCwgMjAzNSwgMjA0MiwgMjA0OCwgMjA1NiwgMjA2NiwgMjA3NCwgMjA4MSwgCi0gICAgMjA4OCwgMjA5MywgMjA5OCwgMjEwNSwgMjExMiwgMjExNiwgMjEyMSwgMjEyNiwgMjEzMSwgMjEzOSwgMjE0OCwgMjE1NSwgCi0gICAgMjE2MiwgMjE3MSwgMjE3OCwgMjE4NSwgMjE5MCwgMjE5NywgMjIwNCwgMjIxMSwgMjIxOCwgMjIyNSwgMjIzMCwgMjIzNywgCi0gICAgMjI0NCwgMjI1MiwgMjI1NywgMjI2MiwgMjI2NywgMjI3NywgMjI4MSwgMjI4NywgMjI5MywgMjI5OSwgMjMwNSwgMjMxMywgCi0gICAgMjMyNiwgMjMzNCwgMjMzOSwgMjM0OSwgMjM1NCwgMjM1OSwgMjM2OSwgMjM3NCwgMjM4MSwgMjM4OCwgMjM5NiwgMjQwNCwgCi0gICAgMjQxMSwgMjQxOCwgMjQyNSwgMjQzMiwgMjQ0MiwgMjQ1MiwgMjQ2MSwgMjQ3MCwgMjQ4MCwgMjQ5MCwgMjUwMCwgMjUxMCwgCi0gICAgMjUxNiwgMjUyNiwgMjUzNiwgMjU0NiwgMjU1NiwgMjU2NCwgMjU3MiwgMjU3OSwgMjU4NiwgMjU5NCwgMjYwMiwgMjYxMCwgCi0gICAgMjYxOCwgMjYyNSwgMjYzMiwgMjY0MiwgMjY1MiwgMjY2MCwgMjY2OCwgMjY3NiwgMjY4MSwgMjY5MSwgMjY5NiwgMjcwMywgCi0gICAgMjcxMCwgMjcxNSwgMjcyMCwgMjcyOCwgMjczNiwgMjc0NiwgMjc1NiwgMjc2MywgMjc3MCwgMjc3OSwgMjc4OCwgMjc5NiwgCi0gICAgMjgwNCwgMjgxMywgMjgyMiwgMjgzMCwgMjgzOCwgMjg0NywgMjg1NiwgMjg2NSwgMjg3NCwgMjg4NCwgMjg5NCwgMjkwMiwgCi0gICAgMjkxMCwgMjkxOSwgMjkyOCwgMjkzNywgMjk0NiwgMjk1NiwgMjk2NiwgMjk3NCwgMjk4MiwgMjk5MSwgMzAwMCwgMzAwOSwgCi0gICAgMzAxOCwgMzAyNywgMzAzNiwgMzA0MSwgMzA0NiwgMzA1NCwgMzA2MiwgMzA3MiwgMzA4MCwgMzA4NSwgMzA5MCwgMzA5NywgCi0gICAgMzEwNCwgMzExMSwgMzExOCwgMzEyNSwgMzEzMiwgMzE0MiwgMzE1MiwgMzE2MiwgMzE3MiwgMzE3OSwgMzE4NiwgMzE5NiwgCi0gICAgMzIwNiwgMzIxNCwgMzIyMiwgMzIzMCwgMzIzOCwgMzI0NiwgMzI1MywgMzI2MCwgMzI2NywgMzI3MywgMzI4MCwgMzI4NywgCi0gICAgMzI5NCwgMzMwMywgMzMxMywgMzMyMywgMzMzMCwgMzMzNywgMzM0MywgMzM0OCwgMzM1NSwgMzM2MSwgMzM2NywgMzM3NCwgCi0gICAgMzM4MSwgMzM5MiwgMzQwMiwgMzQwOSwgMzQxNiwgMzQyMywgMzQzMCwgMzQzNiwgMzQ0MSwgMzQ0OCwgMzQ1NCwgMzQ1OSwgCi0gICAgMzQ2NywgMzQ3NSwgMzQ4MiwgMzQ4OCwgMzQ5MywgMzUwMCwgMzUwNSwgMzUxMiwgMzUyMSwgMzUzMCwgMzUzOSwgMzU0NiwgCi0gICAgMzU1MiwgMzU1OCwgMzU2MywgMzU3MCwgMzU3NywgMzU4NCwgMzU5MSwgMzU5OCwgMzYwMywgMzYwOCwgMzYxNywgMzYyNSwgCi0gICAgMzYzNCwgMzYzOSwgMzY0NSwgMzY1NiwgMzY2MywgMzY3MSwgMzY4MCwgMzY4NiwgMzY5MiwgMzY5OCwgMzcwNSwgMzcxMCwgCi0gICAgMzcxNiwgMzcyNywgMzczNiwgMzc0NSwgMzc1MywgMzc2MSwgMzc3MSwgMzc3NiwgMzc4MywgMzc5MCwgMzc5NSwgMzgwNywgCi0gICAgMzgxNiwgMzgyNCwgMzgzMSwgMzg0MCwgMzg0NSwgMzg1MCwgMzg1NywgMzg2NCwgMzg3MSwgMzg3OCwgMzg4NCwgMzg5MywgCi0gICAgMzkwMSwgMzkwNiwgMzkxNCwgMzkyMCwgMzkyOCwgMzkzNiwgMzk0MiwgMzk0OCwgMzk1NCwgMzk2MSwgMzk2OSwgMzk3NSwgCi0gICAgMzk4MywgMzk5MCwgMzk5NSwgNDAwMiwgNDAxMCwgNDAyMCwgNDAyNywgNDAzNCwgNDA0NCwgNDA1MSwgNDA1OCwgNDA2OCwgCi0gICAgNDA3NSwgNDA4MiwgNDA4OSwgNDA5NSwgNDEwMSwgNDExMSwgNDEyNCwgNDEyOSwgNDEzNiwgNDE0MSwgNDE0NSwgNDE1MSwgCi0gICAgNDE2MCwgNDE2NywgNDE3MiwgNDE3NywgNDE4MSwgNDE4NiwgNDE5MiwgNDE5NiwgNDIwMiwgNDIwOCwgNDIxNCwgNDIyMCwgCi0gICAgNDIyOCwgNDIzMywgNDIzOCwgNDI0MywgNDI0OCwgNDI1NCwgNDI1NiwgNDI2MSwgNDI2NSwgNDI3MSwgNDI3NywgNDI4MywgCi0gICAgNDI4OCwgNDI5NSwgNDMwMiwgNDMwOCwgNDMxNSwgNDMyMywgNDMzMSwgNDMzNiwgNDM0MSwgNDM0NSwgNDM1MCwgNDM1MiwgCi0gICAgNDM1NCwgNDM1NywgNDM1OSwgNDM2MSwgNDM2NiwgNDM3MSwgNDM3NywgNDM4MiwgNDM4NiwgNDM5MSwgNDM5NiwgNDQwNSwgCi0gICAgNDQxMSwgNDQxNiwgNDQyMiwgNDQyNywgNDQzMywgNDQ0MSwgNDQ0OSwgNDQ1MywgNDQ1NywgNDQ2MiwgNDQ2OCwgNDQ3NCwgCi0gICAgNDQ4MCwgNDQ4NiwgNDQ5MSwgNDQ5OSwgNDUwOCwgNDUxNywgNDUyMSwgNDUyNywgNDUzNCwgNDU0MSwgNDU0OCwgNDU1NSwgCi0gICAgNDU1OSwgNDU2NCwgNDU2OSwgNDU3NCwgNDU3OSwgNDU4NCwgNDU4NiwgNDU4OSwgNDU5MiwgNDU5NSwgNDU5OCwgNDYwMSwgCi0gICAgNDYwNSwgNDYwOSwgNDYxNSwgNDYxOCwgNDYyMywgNDYyOSwgNDYzNSwgNDYzOCwgNDY0MywgNDY0OSwgNDY1MywgNDY1OSwgCi0gICAgNDY2NSwgNDY3MSwgNDY3NywgNDY4MiwgNDY4NywgNDY5MiwgNDY5NSwgNDcwMSwgNDcwNiwgNDcxMSwgNDcxNSwgNDcyMCwgCi0gICAgNDcyNiwgNDczMiwgNDczNSwgNDczOSwgNDc0MywgNDc0NywgNDc1MCwgNDc1MywgNDc1OCwgNDc2MiwgNDc2OSwgNDc3MywgCi0gICAgNDc3OSwgNDc4MywgNDc4OSwgNDc5MywgNDc5NywgNDgwMSwgNDgwNiwgNDgxMSwgNDgxOCwgNDgyNCwgNDgzMSwgNDgzNywgCi0gICAgNDg0MywgNDg0OSwgNDg1MiwgNDg1NiwgNDg2MCwgNDg2MywgNDg2NywgNDg3MiwgNDg3NywgNDg4MSwgNDg4NSwgNDg5MSwgCi0gICAgNDg5NSwgNDg5OSwgNDkwNCwgNDkxMCwgNDkxNSwgNDkyMSwgNDkyNSwgNDkzMiwgNDkzNywgNDk0MiwgNDk0NywgNDk1MiwgCi0gICAgNDk1OCwgNDk2MSwgNDk2NSwgNDk3MCwgNDk3NSwgNDk4NCwgNDk5MCwgNDk5NSwgNDk5OSwgNTAwNCwgNTAwOCwgNTAxMywgCi0gICAgNTAxNywgNTAyMSwgNTAyNiwgNTAyOSwgNTAzNSwgNTA0MCwgNTA0NSwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MSwgCi0gICAgNTA3NywgNTA4MywgNTA4OCwgNTA5MywgNTA5OSwgNTEwNSwgNTExMSwgNTExNiwgNTEyMSwgNTEyOCwgNTEzNSwgNTEzOSwgCi0gICAgNTE0NSwgNTE1MiwgMCwgMCwgNTE1OSwgNTE2MiwgNTE3MSwgNTE4MCwgNTE5MSwgMCwgMCwgMCwgMCwgMCwgNTE5NSwgCi0gICAgNTE5OCwgNTIwMywgNTIxMSwgNTIxNiwgNTIyNCwgNTIzMiwgMCwgNTI0MCwgMCwgNTI0OCwgNTI1NiwgNTI2NCwgNTI3NSwgCi0gICAgNTI4MCwgNTI4NSwgNTI5MCwgNTI5NSwgNTMwMCwgNTMwNSwgNTMxMCwgNTMxNSwgNTMyMCwgNTMyNSwgNTMzMCwgNTMzNSwgCi0gICAgNTM0MCwgNTM0NSwgNTM1MCwgNTM1NSwgMCwgNTM2MCwgNTM2NSwgNTM3MCwgNTM3NSwgNTM4MCwgNTM4NSwgNTM5MCwgCi0gICAgNTM5NSwgNTQwMywgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1NCwgNTQ1OSwgNTQ2NCwgNTQ2OSwgNTQ3NCwgCi0gICAgNTQ3OSwgNTQ4NCwgNTQ4OSwgNTQ5NCwgNTQ5OSwgNTUwNCwgNTUwOSwgNTUxNCwgNTUxOSwgNTUyNCwgNTUyOSwgNTUzNCwgCi0gICAgNTUzOSwgNTU0NSwgNTU1MCwgNTU1NSwgNTU2MCwgNTU2NSwgNTU3MCwgNTU3NSwgNTU4MCwgNTU4OCwgNTU5NiwgNTYwNCwgCi0gICAgNTYxMiwgNTYyMCwgNTYyNSwgNTYyOSwgNTYzMywgNTY0MCwgNTY1MCwgNTY2MCwgNTY2NCwgNTY2OCwgNTY3MiwgNTY3OCwgCi0gICAgNTY4NSwgNTY4OSwgNTY5NCwgNTY5OCwgNTcwMywgNTcwNywgNTcxMiwgNTcxNiwgNTcyMSwgNTcyNiwgNTczMSwgNTczNiwgCi0gICAgNTc0MSwgNTc0NiwgNTc1MSwgNTc1NiwgNTc2MSwgNTc2NiwgNTc3MSwgNTc3NiwgNTc4MSwgNTc4NiwgNTc5MSwgNTc5NSwgCi0gICAgNTc5OSwgNTgwNSwgNTgwOSwgNTgxNCwgNTgyMCwgNTgyOCwgNTgzMywgNTgzOCwgNTg0NSwgNTg1MCwgNTg1NSwgNTg2MiwgCi0gICAgNTg3MSwgNTg4MCwgNTg5MSwgNTg5OSwgNTkwNCwgNTkwOSwgNTkxNCwgNTkyMSwgNTkyNiwgNTkzMiwgNTkzNywgNTk0MiwgCi0gICAgNTk0NywgNTk1MiwgNTk1NywgNTk2MiwgNTk3MCwgNTk3NiwgNTk4MSwgNTk4NSwgNTk5MCwgNTk5NSwgNjAwMCwgNjAwNSwgCi0gICAgNjAxMCwgNjAxNSwgNjAyMCwgNjAyNCwgNjAzMCwgNjAzNCwgNjAzOSwgNjA0NCwgNjA0OSwgNjA1MywgNjA1OCwgNjA2MywgCi0gICAgNjA2OCwgNjA3MywgNjA3NywgNjA4MiwgNjA4NiwgNjA5MSwgNjA5NiwgNjEwMSwgNjEwNiwgNjExMiwgNjExNywgNjEyMywgCi0gICAgNjEyNywgNjEzMiwgNjEzNiwgNjE0MCwgNjE0NSwgNjE1MCwgNjE1NSwgNjE2MCwgNjE2NSwgNjE3MCwgNjE3NSwgNjE3OSwgCi0gICAgNjE4NSwgNjE4OSwgNjE5NCwgNjE5OSwgNjIwNCwgNjIwOCwgNjIxMywgNjIxOCwgNjIyMywgNjIyOCwgNjIzMiwgNjIzNywgCi0gICAgNjI0MSwgNjI0NiwgNjI1MSwgNjI1NiwgNjI2MSwgNjI2NywgNjI3MiwgNjI3OCwgNjI4MiwgNjI4NywgNjI5MSwgNjI5OSwgCi0gICAgNjMwNCwgNjMwOSwgNjMxNCwgNjMyMSwgNjMyNiwgNjMzMiwgNjMzNywgNjM0MiwgNjM0NywgNjM1MiwgNjM1NywgNjM2MiwgCi0gICAgNjM3MCwgNjM3NiwgNjM4MSwgNjM4NiwgNjM5MSwgNjM5NiwgNjQwMSwgNjQwNywgNjQxMywgNjQyMCwgNjQyNywgNjQzNiwgCi0gICAgNjQ0NSwgNjQ1MiwgNjQ1OSwgNjQ2OCwgNjQ3NywgNjQ4MiwgNjQ4NywgNjQ5MiwgNjQ5NywgNjUwMiwgNjUwNywgNjUxMiwgCi0gICAgNjUxNywgNjUyOCwgNjUzOSwgNjU0NCwgNjU0OSwgNjU1NiwgNjU2MywgNjU3MSwgNjU3OSwgNjU4NCwgNjU4OSwgNjU5NCwgCi0gICAgNjU5OSwgNjYwMywgNjYwNywgNjYxMSwgNjYxNywgNjYyMywgNjYyNywgNjYzNCwgNjYzOSwgNjY0OSwgNjY1OSwgNjY2NSwgCi0gICAgNjY3MSwgNjY3OSwgNjY4NywgNjY5NSwgNjcwMywgNjcxMCwgNjcxNywgNjcyNiwgNjczNSwgNjc0MywgNjc1MSwgNjc1OSwgCi0gICAgNjc2NywgNjc3NSwgNjc4MywgNjc5MSwgNjc5OSwgNjgwNiwgNjgxMywgNjgxOSwgNjgyNSwgNjgzMywgNjg0MSwgNjg0OCwgCi0gICAgNjg1NSwgNjg2NCwgNjg3MywgNjg3OSwgNjg4NSwgNjg5MywgNjkwMSwgNjkwOSwgNjkxNywgNjkyMywgNjkyOSwgNjkzNywgCi0gICAgNjk0NSwgNjk1MywgNjk2MSwgNjk2OCwgNjk3NSwgNjk4MywgNjk5MSwgNjk5OSwgNzAwNywgNzAxMiwgNzAxNywgNzAyNCwgCi0gICAgNzAzMSwgNzA0MSwgNzA1MSwgNzA1NSwgNzA2MywgNzA3MSwgNzA3OCwgNzA4NSwgNzA5MywgNzEwMSwgNzEwOCwgNzExNSwgCi0gICAgNzEyMywgNzEzMSwgNzEzOCwgNzE0NSwgNzE1MywgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NywgNzE5NCwgNzIwMCwgCi0gICAgNzIwNiwgNzIxNCwgNzIyMiwgNzIyNywgNzIzMiwgNzI0MCwgNzI0OCwgNzI1NiwgNzI2NCwgNzI3MiwgNzI4MCwgNzI4NywgCi0gICAgNzI5NCwgNzMwMiwgNzMxMCwgNzMxOCwgNzMyNiwgNzMzMywgNzM0MCwgNzM0NiwgNzM1MiwgNzM2MSwgNzM3MCwgNzM3NywgCi0gICAgNzM4NCwgNzM5MSwgNzM5OCwgNzQwNSwgNzQxMiwgNzQxOSwgNzQyNiwgNzQzNCwgNzQ0MiwgNzQ1MCwgNzQ1OCwgNzQ2NiwgCi0gICAgNzQ3NCwgNzQ4NCwgNzQ5NCwgNzUwMSwgNzUwOCwgNzUxNSwgNzUyMiwgNzUyOSwgNzUzNiwgNzU0MywgNzU1MCwgNzU1NywgCi0gICAgNzU2NCwgNzU3MSwgNzU3OCwgNzU4NSwgNzU5MiwgNzU5OSwgNzYwNiwgNzYxMywgNzYyMCwgNzYyNywgNzYzNCwgNzY0MSwgCi0gICAgNzY0OCwgNzY1NSwgNzY2MiwgNzY2NywgNzY3MiwgNzY3NywgNzY4MiwgNzY4NywgNzY5MiwgNzY5NywgNzcwMiwgNzcwNywgCi0gICAgNzcxMiwgNzcxOCwgNzcyNCwgNzczMywgNzc0MiwgNzc1MSwgNzc2MCwgNzc2OCwgNzc3NiwgNzc4NCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzc5MiwgNzc5NywgNzgwMiwgNzgwNywgNzgxMiwgNzgxNywgNzgyMiwgNzgyNywgNzgzMiwgCi0gICAgNzgzNiwgNzg0MSwgNzg0NiwgNzg1MSwgNzg1NiwgNzg2MSwgNzg2NiwgNzg3MSwgNzg3NiwgNzg4MSwgNzg4NiwgNzg5MSwgCi0gICAgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMCwgNzkzNSwgNzk0MCwgNzk0NSwgNzk1MCwgCi0gICAgNzk1NSwgNzk2MCwgNzk2NSwgNzk3MCwgNzk3NSwgMCwgMCwgNzk4MCwgNzk4NywgNzk5MCwgNzk5NCwgNzk5OCwgODAwMSwgCi0gICAgODAwNSwgMCwgODAwOSwgODAxNCwgODAxOSwgODAyNCwgODAyOSwgODAzNCwgODAzOSwgODA0NCwgODA0OSwgODA1MywgCi0gICAgODA1OCwgODA2MywgODA2OCwgODA3MywgODA3OCwgODA4MywgODA4OCwgODA5MywgODA5OCwgODEwMywgODEwOCwgODExMywgCi0gICAgODExOCwgODEyMywgODEyOCwgODEzMywgODEzOCwgODE0MywgODE0NywgODE1MiwgODE1NywgODE2MiwgODE2NywgODE3MiwgCi0gICAgODE3NywgODE4MiwgODE4NywgODE5MiwgODE5NywgMCwgODIwNCwgODIwOSwgMCwgMCwgMCwgMCwgODIxMiwgMCwgODIxNiwgCi0gICAgODIyMSwgODIyNiwgODIzMSwgODIzOCwgODI0NSwgODI1MCwgODI1NSwgODI2MCwgODI2NSwgODI3MCwgODI3NSwgODI4MCwgCi0gICAgODI4NywgODI5MiwgODI5OSwgODMwNiwgODMxMSwgODMxOCwgODMyMywgODMyOCwgODMzMywgODM0MCwgODM0NSwgODM1MCwgCi0gICAgODM1NywgODM2NiwgODM3MSwgODM3NiwgODM4MSwgODM4NiwgODM5MiwgODM5NywgODQwNCwgODQxMSwgODQxOCwgODQyMywgCi0gICAgODQyOCwgODQzMywgODQzOCwgODQ0MywgODQ0OCwgODQ1OCwgODQ2MywgODQ3MSwgODQ3NiwgODQ4MSwgODQ4NiwgODQ5MSwgCi0gICAgODQ5OCwgODUwNSwgODUxMiwgODUxOCwgODUyNCwgODUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODUzOCwgODU0MiwgCi0gICAgODU0NiwgODU1MCwgODU1NCwgODU1OCwgODU2MiwgODU2NiwgODU3MCwgODU3NCwgODU3OCwgODU4MywgODU4NywgODU5MSwgCi0gICAgODU5NiwgODYwMCwgODYwNSwgODYwOSwgODYxMywgODYxNywgODYyMiwgODYyNiwgODYzMSwgODYzNSwgODYzOSwgODY0MywgCi0gICAgODY0NywgMCwgMCwgMCwgMCwgMCwgODY1MSwgODY1OCwgODY2NiwgODY3MywgODY3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODY4MywgODY4NiwgODY5MCwgODY5NSwgODY5OSwgMCwgODcwMywgODcwOSwgODcxNSwgODcxOCwgCi0gICAgODcyNSwgODczNCwgODczNywgODc0MCwgODc0NSwgODc1MSwgODc1NSwgODc2MywgODc2OSwgODc3NSwgODc4MywgODc4NywgCi0gICAgODc5MiwgODgwMywgODgwOCwgODgxMiwgODgxNiwgODgyMCwgODgyMywgMCwgODgyNiwgODgzMywgODgzNywgODg0MywgCi0gICAgODg0NywgODg1NCwgODg2MCwgODg2NywgODg3MywgODg3OSwgODg4MywgODg4NywgODg5MywgODg5NywgODkwMSwgODkwNSwgCi0gICAgODkwOSwgODkxMywgODkxNywgODkyMSwgODkyNSwgODkyOSwgODkzMywgODkzNywgODk0MSwgODk0NSwgODk0OSwgODk1MywgCi0gICAgODk1NywgODk2MSwgODk2OSwgODk3NywgODk4NywgODk5NiwgOTAwNSwgOTAwOCwgOTAxMiwgOTAxNiwgOTAyMCwgOTAyNCwgCi0gICAgOTAyOCwgOTAzMiwgOTAzNiwgOTA0MCwgOTA0NSwgOTA0OSwgOTA1MiwgOTA1NSwgOTA1OCwgOTA2MSwgOTA2NCwgOTA2NywgCi0gICAgOTA3MCwgOTA3MywgOTA3NywgOTA4MCwgOTA4MywgOTA4OCwgOTA5MywgOTA5OSwgOTEwMiwgOTEwOSwgOTExOCwgOTEyMywgCi0gICAgOTEyOCwgOTEzNSwgOTE0MCwgOTE0NSwgOTE0OSwgOTE1MywgOTE1NywgOTE2MSwgOTE2NSwgOTE2OSwgOTE3MywgOTE3NywgCi0gICAgOTE4MSwgOTE4NSwgOTE5MCwgOTE5NSwgOTIwMiwgOTIwOCwgOTIxNCwgOTIyMCwgOTIyNSwgOTIzMywgOTI0MSwgOTI0NiwgCi0gICAgOTI1MiwgOTI1OCwgOTI2NCwgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgOTI4OSwgOTI5OSwgOTMwMywgOTMwNywgOTMxMSwgCi0gICAgOTMxNywgOTMyNSwgOTMyOSwgOTMzMywgOTM0MCwgOTM0NCwgOTM0OCwgOTM1MiwgOTM1OSwgOTM2NiwgOTM3OCwgOTM4MiwgCi0gICAgOTM4NiwgOTM5MCwgOTQwMCwgOTQwOSwgOTQxMywgOTQyMSwgOTQyOCwgOTQzNSwgOTQ0NCwgOTQ1NSwgOTQ2MywgOTQ2NywgCi0gICAgOTQ3NiwgOTQ4NywgOTQ5NSwgOTUwOCwgOTUxNiwgOTUyNCwgOTUzMiwgOTU0MCwgOTU0NiwgOTU1NSwgOTU2MiwgOTU2NiwgCi0gICAgOTU3NCwgOTU3OCwgOTU4NSwgOTU5MywgOTU5NywgOTYwMywgOTYxMCwgOTYxNywgOTYyMSwgOTYyOSwgOTYzMywgOTY0MCwgCi0gICAgOTY0NCwgOTY1MiwgOTY1NiwgOTY2NCwgOTY3MiwgOTY3OSwgOTY4NywgOTY5NSwgOTcwMiwgOTcwOCwgOTcxMiwgOTcxOSwgCi0gICAgOTcyNywgOTczMywgOTc0MCwgOTc0NywgOTc1MywgOTc2MiwgOTc3MCwgOTc3NywgOTc4MywgOTc4NywgOTc5MCwgOTc5NCwgCi0gICAgOTgwMCwgOTgwOCwgOTgxMiwgOTgxOCwgOTgyNCwgOTgzMSwgOTgzOCwgOTg0MSwgOTg0OCwgOTg1MywgOTg2MSwgOTg2NiwgCi0gICAgOTg3MCwgOTg4MywgOTg5NiwgOTkwMiwgOTkwOSwgOTkxNCwgOTkyMCwgOTkyNSwgOTkzMSwgOTk0MSwgOTk0OCwgOTk1NywgCi0gICAgOTk2NywgOTk3MywgOTk3OCwgOTk4MywgOTk4NywgOTk5MSwgOTk5NiwgMTAwMDEsIDEwMDA3LCAxMDAxNSwgMTAwMjMsIAotICAgIDEwMDM0LCAxMDAzOSwgMTAwNDgsIDEwMDU3LCAxMDA2NCwgMTAwNzAsIDEwMDc2LCAxMDA4MiwgMTAwODgsIDEwMDk0LCAKLSAgICAxMDEwMCwgMTAxMDYsIDEwMTEyLCAxMDExOCwgMTAxMjUsIDEwMTMyLCAxMDEzOSwgMTAxNDUsIDEwMTUzLCAxMDE2MiwgCi0gICAgMTAxNjgsIDEwMTc1LCAxMDE4MiwgMTAxODcsIDEwMTkyLCAxMDE5NiwgMTAyMDMsIDEwMjEwLCAxMDIxOSwgMTAyMjgsIAotICAgIDEwMjMxLCAxMDIzNiwgMTAyNDEsIDAsIDEwMjQ2LCAxMDI1MCwgMTAyNTQsIDEwMjYwLCAxMDI2NCwgMTAyNjgsIDEwMjc0LCAKLSAgICAxMDI3OCwgMTAyODYsIDEwMjkwLCAxMDI5NCwgMTAyOTgsIDEwMzAyLCAxMDMwNiwgMTAzMTIsIDEwMzE2LCAxMDMyMiwgCi0gICAgMTAzMjYsIDEwMzMwLCAxMDMzNCwgMTAzMzgsIDEwMzQyLCAxMDM0NywgMTAzNTAsIDEwMzU0LCAxMDM2MCwgMTAzNjQsIAotICAgIDEwMzY4LCAxMDM3MiwgMTAzNzYsIDEwMzgwLCAxMDM4NiwgMTAzOTIsIDEwMzk4LCAxMDQwMiwgMTA0MDYsIDEwNDExLCAKLSAgICAxMDQxNSwgMTA0MTksIDEwNDI0LCAxMDQyOCwgMTA0MzIsIDEwNDM5LCAxMDQ0NiwgMTA0NTAsIDEwNDU0LCAxMDQ1OSwgCi0gICAgMTA0NjMsIDEwNDY3LCAxMDQ3MCwgMTA0NzUsIDEwNDc4LCAxMDQ4MSwgMTA0ODYsIDEwNDkxLCAxMDQ5NSwgMTA0OTksIAotICAgIDEwNTA1LCAxMDUxMSwgMTA1MTQsIDAsIDAsIDEwNTE3LCAxMDUyMywgMTA1MjksIDEwNTM1LCAxMDU0NSwgMTA1NTcsIAotICAgIDEwNTY5LCAxMDU4NiwgMTA1OTgsIDEwNjA5LCAxMDYxNywgMTA2MjQsIDEwNjM1LCAxMDY1MCwgMTA2NjEsIDEwNjY3LCAKLSAgICAxMDY3NiwgMTA2ODQsIDEwNjk2LCAxMDcwNiwgMTA3MTQsIDEwNzI2LCAxMDczMywgMTA3NDEsIDEwNzUzLCAxMDc1OSwgCi0gICAgMTA3NjUsIDEwNzczLCAxMDc4MSwgMTA3ODksIDEwNzk1LCAxMDgwNSwgMTA4MTIsIDEwODIyLCAxMDgzMiwgMTA4NDUsIAotICAgIDEwODU5LCAxMDg3MywgMTA4ODMsIDEwODk0LCAxMDkwNSwgMTA5MTgsIDEwOTMxLCAxMDk0NSwgMTA5NTcsIDEwOTY5LCAKLSAgICAxMDk4MiwgMTA5OTUsIDExMDA3LCAxMTAyMCwgMTEwMjksIDExMDM3LCAxMTA0MiwgMTEwNDcsIDExMDUyLCAxMTA1NywgCi0gICAgMTEwNjIsIDExMDY3LCAxMTA3MiwgMTEwNzcsIDExMDgyLCAxMTA4NywgMTEwOTIsIDExMDk3LCAxMTEwMiwgMTExMDcsIAotICAgIDExMTEyLCAxMTExNywgMTExMjIsIDExMTI3LCAxMTEzMiwgMTExMzcsIDExMTQyLCAxMTE0NywgMTExNTIsIDExMTU3LCAKLSAgICAxMTE2MiwgMTExNjcsIDExMTcyLCAxMTE3NywgMTExODIsIDExMTg3LCAxMTE5MiwgMTExOTcsIDExMjAxLCAxMTIwNiwgCi0gICAgMTEyMTEsIDExMjE2LCAxMTIyMSwgMTEyMjYsIDExMjMwLCAxMTIzNCwgMTEyMzgsIDExMjQyLCAxMTI0NiwgMTEyNTAsIAotICAgIDExMjU0LCAxMTI1OCwgMTEyNjIsIDExMjY2LCAxMTI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTEyNzUsIDExMjgwLCAxMTI4NCwgMTEyODgsIDExMjkyLCAxMTI5NiwgMTEzMDAsIDExMzA0LCAxMTMwOCwgMTEzMTIsIAotICAgIDExMzE2LCAxMTMyMCwgMTEzMjUsIDExMzI5LCAxMTMzMywgMTEzMzcsIDExMzQyLCAxMTM0NiwgMTEzNTEsIDExMzU2LCAKLSAgICAxMTM2MSwgMTEzNjUsIDExMzcwLCAxMTM3NSwgMTEzODAsIDExMzg1LCAxMTM4OSwgMTEzOTQsIDExMzk4LCAxMTQwMywgCi0gICAgMTE0MDgsIDExNDEyLCAxMTQxNywgMTE0MjQsIDExNDI4LCAxMTQzMywgMTE0MzcsIDExNDQxLCAxMTQ0NiwgMTE0NTAsIAotICAgIDExNDU3LCAxMTQ2NCwgMTE0NzEsIDExNDc3LCAxMTQ4NSwgMTE0OTMsIDExNTAyLCAxMTUxMCwgMTE1MTcsIDExNTI0LCAKLSAgICAxMTUzMiwgMTE1MzgsIDExNTQ0LCAxMTU1MCwgMTE1NTYsIDExNTYzLCAxMTU2OCwgMTE1NzIsIDExNTc3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMTU4MSwgMTE1ODYsIDExNTkxLCAxMTU5NiwgMTE2MDEsIDExNjA2LCAxMTYxMSwgMTE2MTYsIDExNjIxLCAKLSAgICAxMTYyNiwgMTE2MzEsIDExNjM2LCAxMTY0MSwgMTE2NDYsIDExNjUxLCAxMTY1NiwgMTE2NjEsIDExNjY2LCAxMTY3MSwgCi0gICAgMTE2NzYsIDExNjgxLCAxMTY4NiwgMTE2OTEsIDExNjk2LCAxMTcwMSwgMTE3MDYsIDExNzExLCAxMTcxOSwgMTE3MjYsIAotICAgIDExNzMyLCAxMTczNywgMTE3NDUsIDExNzUyLCAxMTc1OCwgMTE3NjUsIDExNzcxLCAxMTc3NiwgMTE3ODMsIDExNzkwLCAKLSAgICAxMTc5NiwgMTE4MDEsIDExODA2LCAxMTgxMiwgMTE4MTcsIDExODIyLCAxMTgyOCwgMCwgMCwgMTE4MzMsIDExODM5LCAKLSAgICAxMTg0NSwgMTE4NTEsIDExODU3LCAxMTg2MywgMTE4NjksIDExODc0LCAxMTg4MiwgMTE4ODgsIDExODk0LCAxMTkwMCwgCi0gICAgMTE5MDYsIDExOTEyLCAxMTkyMCwgMCwgMTE5MjYsIDExOTMxLCAxMTkzNiwgMTE5NDEsIDExOTQ2LCAxMTk1MSwgMTE5NTYsIAotICAgIDExOTYxLCAxMTk2NiwgMTE5NzEsIDExOTc2LCAxMTk4MSwgMTE5ODYsIDExOTkxLCAxMTk5NiwgMTIwMDEsIDEyMDA2LCAKLSAgICAxMjAxMSwgMTIwMTYsIDEyMDIxLCAxMjAyNiwgMTIwMzEsIDEyMDM2LCAxMjA0MSwgMTIwNDYsIDEyMDUxLCAxMjA1NiwgCi0gICAgMTIwNjEsIDAsIDAsIDEyMDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU5LCA2MSwgNjQsIDY2LCA2OCwgNzEsIDc0LCAKKyAgICA3NywgODAsIDg0LCA4OCwgOTMsIDk4LCAxMDMsIDEwNywgMTEyLCAxMTcsIDEyMiwgMTI2LCAxMzEsIDEzNiwgMTQwLCAxNDUsIAorICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzIsIDE3NywgMTgxLCAxODYsIDE5MSwgMTk2LCAyMDEsIDIwNiwgMjA5LCAKKyAgICAyMTMsIDIxNiwgMjIwLCAyMjMsIDIyNywgMjMxLCAyMzYsIDI0MSwgMjQ2LCAyNTAsIDI1NSwgMjYwLCAyNjUsIDI2OSwgCisgICAgMjc0LCAyNzksIDI4MywgMjg4LCAyOTMsIDI5NywgMzAyLCAzMDcsIDMxMSwgMzE1LCAzMjAsIDMyNCwgMzI5LCAzMzQsIAorICAgIDMzOSwgMzQ0LCAzNDksIDM1MywgMzU2LCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MiwgMzY2LCAzNzEsIAorICAgIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODksIDM5MSwgMzk0LCA0MDAsIDQwOCwgNDExLCA0MTUsIDQxOCwgNDIwLCAKKyAgICA0MjMsIDQyNiwgNDI5LCA0MzIsIDQzNiwgNDM5LCA0NDIsIDQ0NSwgNDQ3LCA0NTAsIDQ1NiwgNDY0LCA0NzEsIDQ3OCwgCisgICAgNDg1LCA0OTAsIDQ5NywgNTAzLCA1MTAsIDUxNywgNTI0LCA1MzIsIDUzNywgNTQ1LCA1NTIsIDU1OCwgNTY1LCA1NzIsIAorICAgIDU4MCwgNTg3LCA1OTUsIDYwMywgNjA4LCA2MTYsIDYyMywgNjI5LCA2MzYsIDY0MywgNjUwLCA2NTMsIDY1OSwgNjY2LCAKKyAgICA2NzIsIDY3OSwgNjg2LCA2OTMsIDY5OCwgNzA0LCA3MTEsIDcxNywgNzI0LCA3MzEsIDczOCwgNzQ2LCA3NTEsIDc1OSwgCisgICAgNzY2LCA3NzIsIDc3OSwgNzg2LCA3OTQsIDgwMSwgODA5LCA4MTcsIDgyMiwgODMwLCA4MzcsIDg0MywgODUwLCA4NTcsIAorICAgIDg2NCwgODY3LCA4NzMsIDg4MCwgODg2LCA4OTMsIDkwMCwgOTA3LCA5MTIsIDkyMCwgOTI3LCA5MzQsIDk0MSwgOTQ4LCAKKyAgICA5NTUsIDk2MiwgOTY5LCA5NzYsIDk4NCwgOTkyLCAxMDAwLCAxMDA4LCAxMDE2LCAxMDI0LCAxMDMyLCAxMDQwLCAxMDQ3LCAKKyAgICAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI0LCAxMTMyLCAKKyAgICAxMTQwLCAxMTQ4LCAxMTU2LCAxMTY0LCAxMTcyLCAxMTgwLCAxMTg4LCAxMTk2LCAxMjA0LCAxMjExLCAxMjE4LCAxMjI2LCAKKyAgICAxMjM0LCAxMjQyLCAxMjUwLCAxMjU4LCAxMjY2LCAxMjc0LCAxMjgyLCAxMjkwLCAxMjk2LCAxMzAxLCAxMzA2LCAxMzE0LCAKKyAgICAxMzIyLCAxMzMwLCAxMzM4LCAxMzQzLCAxMzUwLCAxMzU3LCAxMzY1LCAxMzczLCAxMzgxLCAxMzg5LCAxMzk4LCAxNDA3LCAKKyAgICAxNDE0LCAxNDIxLCAxNDI4LCAxNDM1LCAxNDQzLCAxNDUxLCAxNDU5LCAxNDY3LCAxNDc4LCAxNDgzLCAxNDg4LCAxNDk1LCAKKyAgICAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ3LCAxNTU0LCAxNTYyLCAxNTcwLCAxNTc4LCAKKyAgICAxNTg2LCAxNTkzLCAxNjAwLCAxNjA4LCAxNjE2LCAxNjI0LCAxNjMyLCAxNjQwLCAxNjQ4LCAxNjU2LCAxNjY0LCAxNjcyLCAKKyAgICAxNjgwLCAxNjg3LCAxNjk0LCAxNzAxLCAxNzA4LCAxNzE1LCAxNzIyLCAxNzI5LCAxNzM2LCAxNzQ0LCAxNzUyLCAxNzU5LCAKKyAgICAxNzY2LCAxNzczLCAxNzgwLCAxNzg4LCAxNzk2LCAxODA0LCAxODEyLCAxODIwLCAxODI3LCAxODM0LCAxODQyLCAxODUwLCAKKyAgICAxODU4LCAxODY2LCAxODcxLCAxODc3LCAxODgzLCAxODkwLCAxODk3LCAxOTAyLCAxOTA3LCAxOTEyLCAxOTE5LCAxOTI2LCAKKyAgICAxOTMzLCAxOTQwLCAxOTQ4LCAxOTU2LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg2LCAxOTkzLCAyMDAwLCAyMDA1LCAKKyAgICAyMDEwLCAyMDE1LCAyMDIyLCAyMDI5LCAyMDM2LCAyMDQzLCAyMDUwLCAyMDU3LCAyMDY1LCAyMDc1LCAyMDgzLCAyMDkwLCAKKyAgICAyMDk3LCAyMTAyLCAyMTA3LCAyMTE0LCAyMTIxLCAyMTI1LCAyMTMwLCAyMTM1LCAyMTQwLCAyMTQ4LCAyMTU3LCAyMTY0LCAKKyAgICAyMTcxLCAyMTgwLCAyMTg3LCAyMTk0LCAyMTk5LCAyMjA2LCAyMjEzLCAyMjIwLCAyMjI3LCAyMjM0LCAyMjM5LCAyMjQ2LCAKKyAgICAyMjUzLCAyMjYxLCAyMjY2LCAyMjcxLCAyMjc2LCAyMjg2LCAyMjkwLCAyMjk2LCAyMzAyLCAyMzA4LCAyMzE0LCAyMzIyLCAKKyAgICAyMzM1LCAyMzQzLCAyMzQ4LCAyMzU4LCAyMzYzLCAyMzY4LCAyMzc4LCAyMzgzLCAyMzkwLCAyMzk3LCAyNDA1LCAyNDEzLCAKKyAgICAyNDIwLCAyNDI3LCAyNDM0LCAyNDQxLCAyNDUxLCAyNDYxLCAyNDcwLCAyNDc5LCAyNDg5LCAyNDk5LCAyNTA5LCAyNTE5LCAKKyAgICAyNTI1LCAyNTM1LCAyNTQ1LCAyNTU1LCAyNTY1LCAyNTczLCAyNTgxLCAyNTg4LCAyNTk1LCAyNjAzLCAyNjExLCAyNjE5LCAKKyAgICAyNjI3LCAyNjM0LCAyNjQxLCAyNjUxLCAyNjYxLCAyNjY5LCAyNjc3LCAyNjg1LCAyNjkwLCAyNzAwLCAyNzA1LCAyNzEyLCAKKyAgICAyNzE5LCAyNzI0LCAyNzI5LCAyNzM3LCAyNzQ1LCAyNzU1LCAyNzY1LCAyNzcyLCAyNzc5LCAyNzg4LCAyNzk3LCAyODA1LCAKKyAgICAyODEzLCAyODIyLCAyODMxLCAyODM5LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODgzLCAyODkzLCAyOTAzLCAyOTExLCAKKyAgICAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU1LCAyOTY1LCAyOTc1LCAyOTgzLCAyOTkxLCAzMDAwLCAzMDA5LCAzMDE4LCAKKyAgICAzMDI3LCAzMDM2LCAzMDQ1LCAzMDUwLCAzMDU1LCAzMDYzLCAzMDcxLCAzMDgxLCAzMDg5LCAzMDk0LCAzMDk5LCAzMTA2LCAKKyAgICAzMTEzLCAzMTIwLCAzMTI3LCAzMTM0LCAzMTQxLCAzMTUxLCAzMTYxLCAzMTcxLCAzMTgxLCAzMTg4LCAzMTk1LCAzMjA1LCAKKyAgICAzMjE1LCAzMjIzLCAzMjMxLCAzMjM5LCAzMjQ3LCAzMjU1LCAzMjYyLCAzMjY5LCAzMjc2LCAzMjgyLCAzMjg5LCAzMjk2LCAKKyAgICAzMzAzLCAzMzEyLCAzMzIyLCAzMzMyLCAzMzM5LCAzMzQ2LCAzMzUyLCAzMzU3LCAzMzY0LCAzMzcwLCAzMzc2LCAzMzgzLCAKKyAgICAzMzkwLCAzNDAxLCAzNDExLCAzNDE4LCAzNDI1LCAzNDMyLCAzNDM5LCAzNDQ1LCAzNDUwLCAzNDU3LCAzNDYzLCAzNDY4LCAKKyAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE0LCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ4LCAzNTU1LCAKKyAgICAzNTYxLCAzNTY3LCAzNTcyLCAzNTc5LCAzNTg2LCAzNTkzLCAzNjAwLCAzNjA3LCAzNjEyLCAzNjE3LCAzNjI2LCAzNjM0LCAKKyAgICAzNjQzLCAzNjQ4LCAzNjU1LCAzNjY2LCAzNjczLCAzNjgxLCAzNjkwLCAzNjk2LCAzNzAyLCAzNzA4LCAzNzE1LCAzNzIwLCAKKyAgICAzNzI2LCAzNzM3LCAzNzQ2LCAzNzU1LCAzNzYzLCAzNzcxLCAzNzgxLCAzNzg2LCAzNzkzLCAzODAwLCAzODA1LCAzODE3LCAKKyAgICAzODI2LCAzODM0LCAzODQxLCAzODUwLCAzODU1LCAzODYwLCAzODY3LCAzODc0LCAzODgxLCAzODg4LCAzODk0LCAzOTAzLCAKKyAgICAzOTExLCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCAzOTQ2LCAzOTUyLCAzOTU4LCAzOTY0LCAzOTcxLCAzOTc5LCAzOTg1LCAKKyAgICAzOTkzLCA0MDAwLCA0MDA1LCA0MDEyLCA0MDIwLCA0MDMwLCA0MDM3LCA0MDQ0LCA0MDU0LCA0MDYxLCA0MDY4LCA0MDc4LCAKKyAgICA0MDg1LCA0MDkyLCA0MDk5LCA0MTA1LCA0MTExLCA0MTIxLCA0MTM0LCA0MTM5LCA0MTQ2LCA0MTUxLCA0MTU1LCA0MTYxLCAKKyAgICA0MTcwLCA0MTc3LCA0MTgyLCA0MTg3LCA0MTkxLCA0MTk2LCA0MjAyLCA0MjA2LCA0MjEyLCA0MjE4LCA0MjI0LCA0MjMwLCAKKyAgICA0MjM4LCA0MjQzLCA0MjQ4LCA0MjUzLCA0MjU4LCA0MjY0LCA0MjY2LCA0MjcxLCA0Mjc1LCA0MjgxLCA0Mjg3LCA0MjkzLCAKKyAgICA0Mjk4LCA0MzA1LCA0MzEyLCA0MzE4LCA0MzI1LCA0MzMzLCA0MzQxLCA0MzQ2LCA0MzUxLCA0MzU1LCA0MzYwLCA0MzYyLCAKKyAgICA0MzY0LCA0MzY3LCA0MzY5LCA0MzcyLCA0Mzc3LCA0MzgyLCA0Mzg4LCA0MzkzLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDE1LCAKKyAgICA0NDIxLCA0NDI2LCA0NDMyLCA0NDM3LCA0NDQzLCA0NDUxLCA0NDU5LCA0NDYzLCA0NDY3LCA0NDcyLCA0NDc4LCA0NDg0LCAKKyAgICA0NDkwLCA0NDk2LCA0NTAxLCA0NTA4LCA0NTE2LCA0NTI0LCA0NTI5LCA0NTM1LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCAKKyAgICA0NTY3LCA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCA0NjA0LCA0NjA3LCA0NjEwLCAKKyAgICA0NjE0LCA0NjE4LCA0NjI0LCA0NjI3LCA0NjMyLCA0NjM4LCA0NjQ0LCA0NjQ3LCA0NjUyLCA0NjU4LCA0NjYyLCA0NjY4LCAKKyAgICA0Njc0LCA0NjgwLCA0Njg2LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA0LCA0NzEwLCA0NzE1LCA0NzIwLCA0NzI0LCA0NzI5LCAKKyAgICA0NzM1LCA0NzQxLCA0NzQ0LCA0NzQ4LCA0NzUyLCA0NzU2LCA0NzU5LCA0NzYyLCA0NzY3LCA0NzcxLCA0Nzc4LCA0NzgyLCAKKyAgICA0Nzg4LCA0NzkyLCA0Nzk4LCA0ODAyLCA0ODA2LCA0ODEwLCA0ODE1LCA0ODIwLCA0ODI3LCA0ODMzLCA0ODQwLCA0ODQ2LCAKKyAgICA0ODUyLCA0ODU4LCA0ODYxLCA0ODY1LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgyLCA0ODg3LCA0ODkxLCA0ODk1LCA0OTAxLCAKKyAgICA0OTA1LCA0OTA5LCA0OTE0LCA0OTIwLCA0OTI1LCA0OTMxLCA0OTM1LCA0OTQyLCA0OTQ3LCA0OTUxLCA0OTU2LCA0OTYxLCAKKyAgICA0OTY3LCA0OTcwLCA0OTc0LCA0OTc5LCA0OTg0LCA0OTkzLCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCAKKyAgICA1MDI2LCA1MDMwLCA1MDM1LCA1MDM5LCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgxLCAKKyAgICA1MDg3LCA1MDkzLCA1MDk5LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI3LCA1MTMyLCA1MTM5LCA1MTQ2LCA1MTUwLCAKKyAgICA1MTU2LCA1MTYzLCAwLCAwLCA1MTcwLCA1MTczLCA1MTgyLCA1MTkxLCA1MjAyLCA1MjA2LCAwLCAwLCAwLCAwLCA1MjExLCAKKyAgICA1MjE0LCA1MjE5LCA1MjI3LCA1MjMyLCA1MjQwLCA1MjQ4LCAwLCA1MjU2LCAwLCA1MjY0LCA1MjcyLCA1MjgwLCA1MjkxLCAKKyAgICA1Mjk2LCA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCAKKyAgICA1MzU2LCA1MzYxLCA1MzY2LCA1MzcxLCAwLCA1Mzc2LCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCAKKyAgICA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDUxLCA1NDU5LCA1NDcwLCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCAKKyAgICA1NDk1LCA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCAKKyAgICA1NTU1LCA1NTYxLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjA0LCA1NjEyLCA1NjIwLCAKKyAgICA1NjI4LCA1NjM2LCA1NjQxLCA1NjQ1LCA1NjQ5LCA1NjU2LCA1NjY2LCA1Njc2LCA1NjgwLCA1Njg0LCA1Njg4LCA1Njk0LCAKKyAgICA1NzAxLCA1NzA1LCA1NzEwLCA1NzE0LCA1NzE5LCA1NzIzLCA1NzI4LCA1NzMyLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCAKKyAgICA1NzU3LCA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODExLCAKKyAgICA1ODE1LCA1ODIxLCA1ODI1LCA1ODMwLCA1ODM2LCA1ODQ0LCA1ODQ5LCA1ODU0LCA1ODYxLCA1ODY2LCA1ODcxLCA1ODc4LCAKKyAgICA1ODg3LCA1ODk2LCA1OTA3LCA1OTE1LCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM3LCA1OTQyLCA1OTQ4LCA1OTUzLCA1OTU4LCAKKyAgICA1OTYzLCA1OTY4LCA1OTczLCA1OTc4LCA1OTg2LCA1OTkyLCA1OTk3LCA2MDAxLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCAKKyAgICA2MDI2LCA2MDMxLCA2MDM2LCA2MDQwLCA2MDQ2LCA2MDUwLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDY5LCA2MDc0LCA2MDc5LCAKKyAgICA2MDg0LCA2MDg5LCA2MDkzLCA2MDk4LCA2MTAyLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI4LCA2MTMzLCA2MTM5LCAKKyAgICA2MTQzLCA2MTQ4LCA2MTUyLCA2MTU2LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk1LCAKKyAgICA2MjAxLCA2MjA1LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI0LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ4LCA2MjUzLCAKKyAgICA2MjU3LCA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgzLCA2Mjg4LCA2Mjk0LCA2Mjk4LCA2MzAzLCA2MzA3LCA2MzE1LCAKKyAgICA2MzIwLCA2MzI1LCA2MzMwLCA2MzM3LCA2MzQyLCA2MzQ4LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCAKKyAgICA2Mzg2LCA2MzkyLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIzLCA2NDI5LCA2NDM2LCA2NDQzLCA2NDUyLCAKKyAgICA2NDYxLCA2NDY4LCA2NDc1LCA2NDg0LCA2NDkzLCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCAKKyAgICA2NTMzLCA2NTQ0LCA2NTU1LCA2NTYwLCA2NTY1LCA2NTcyLCA2NTc5LCA2NTg3LCA2NTk1LCA2NjAwLCA2NjA1LCA2NjEwLCAKKyAgICA2NjE1LCA2NjE5LCA2NjIzLCA2NjI3LCA2NjMzLCA2NjM5LCA2NjQzLCA2NjUwLCA2NjU1LCA2NjY1LCA2Njc1LCA2NjgxLCAKKyAgICA2Njg3LCA2Njk1LCA2NzAzLCA2NzExLCA2NzE5LCA2NzI2LCA2NzMzLCA2NzQxLCA2NzQ5LCA2NzU3LCA2NzY1LCA2NzczLCAKKyAgICA2NzgxLCA2Nzg5LCA2Nzk3LCA2ODA1LCA2ODEzLCA2ODIwLCA2ODI3LCA2ODMzLCA2ODM5LCA2ODQ3LCA2ODU1LCA2ODYyLCAKKyAgICA2ODY5LCA2ODc3LCA2ODg1LCA2ODkxLCA2ODk3LCA2OTA1LCA2OTEzLCA2OTIxLCA2OTI5LCA2OTM1LCA2OTQxLCA2OTQ5LCAKKyAgICA2OTU3LCA2OTY1LCA2OTczLCA2OTgwLCA2OTg3LCA2OTk1LCA3MDAzLCA3MDExLCA3MDE5LCA3MDI0LCA3MDI5LCA3MDM2LCAKKyAgICA3MDQzLCA3MDUzLCA3MDYzLCA3MDY3LCA3MDc1LCA3MDgzLCA3MDkwLCA3MDk3LCA3MTA1LCA3MTEzLCA3MTIwLCA3MTI3LCAKKyAgICA3MTM1LCA3MTQzLCA3MTUwLCA3MTU3LCA3MTY1LCA3MTczLCA3MTc4LCA3MTg1LCA3MTkyLCA3MTk5LCA3MjA2LCA3MjEyLCAKKyAgICA3MjE4LCA3MjI2LCA3MjM0LCA3MjM5LCA3MjQ0LCA3MjUyLCA3MjYwLCA3MjY4LCA3Mjc2LCA3Mjg0LCA3MjkyLCA3Mjk5LCAKKyAgICA3MzA2LCA3MzE0LCA3MzIyLCA3MzMwLCA3MzM4LCA3MzQ1LCA3MzUyLCA3MzU4LCA3MzY0LCA3MzczLCA3MzgyLCA3Mzg5LCAKKyAgICA3Mzk2LCA3NDAzLCA3NDEwLCA3NDE3LCA3NDI0LCA3NDMxLCA3NDM4LCA3NDQ2LCA3NDU0LCA3NDYyLCA3NDcwLCA3NDc4LCAKKyAgICA3NDg2LCA3NDk2LCA3NTA2LCA3NTEzLCA3NTIwLCA3NTI3LCA3NTM0LCA3NTQxLCA3NTQ4LCA3NTU1LCA3NTYyLCA3NTY5LCAKKyAgICA3NTc2LCA3NTgzLCA3NTkwLCA3NTk3LCA3NjA0LCA3NjExLCA3NjE4LCA3NjI1LCA3NjMyLCA3NjM5LCA3NjQ2LCA3NjUzLCAKKyAgICA3NjYwLCA3NjY3LCA3Njc0LCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCAKKyAgICA3NzI0LCA3NzMwLCA3NzM2LCA3NzQ0LCA3NzUyLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCA3NzkyLCA3ODAwLCA3ODA4LCAKKyAgICA3ODE2LCA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQ0LCAwLCA3ODUyLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCAKKyAgICA3ODc3LCA3ODgyLCA3ODg3LCA3ODkyLCA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCAKKyAgICA3OTM2LCA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCAKKyAgICA3OTk2LCA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCAwLCAwLCA4MDQxLCA4MDQ4LCAKKyAgICA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY2LCAwLCA4MDcwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCAKKyAgICA4MTAwLCA4MTA1LCA4MTEwLCA4MTE0LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCAKKyAgICA4MTU5LCA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCAKKyAgICA4MjE5LCA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCAwLCA4MjY2LCA4MjcxLCAwLCAKKyAgICAwLCA4Mjc0LCA4MjgwLCA4Mjg2LCAwLCA4MjkwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEyLCA4MzE5LCA4MzI0LCA4MzI5LCAKKyAgICA4MzM0LCA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzYxLCA4MzY2LCA4MzczLCA4MzgwLCA4Mzg1LCA4MzkyLCA4Mzk3LCAKKyAgICA4NDAyLCA4NDA3LCA4NDE0LCA4NDE5LCA4NDI0LCA4NDMxLCA4NDQwLCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY2LCAKKyAgICA4NDcxLCA4NDc4LCA4NDg1LCA4NDkyLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTMyLCA4NTM3LCAKKyAgICA4NTQ2LCA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTczLCA4NTgwLCA4NTg3LCA4NTkzLCA4NTk5LCA4NjA2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjEzLCA4NjE3LCA4NjIxLCA4NjI1LCA4NjI5LCA4NjMzLCA4NjM3LCA4NjQxLCA4NjQ1LCAKKyAgICA4NjQ5LCA4NjUzLCA4NjU4LCA4NjYyLCA4NjY2LCA4NjcxLCA4Njc1LCA4NjgwLCA4Njg0LCA4Njg4LCA4NjkyLCA4Njk3LCAKKyAgICA4NzAxLCA4NzA2LCA4NzEwLCA4NzE0LCA4NzE4LCA4NzIyLCAwLCAwLCAwLCAwLCAwLCA4NzI2LCA4NzMzLCA4NzQxLCAKKyAgICA4NzQ4LCA4NzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzU4LCA4NzYxLCA4NzY1LCA4NzcwLCAKKyAgICA4Nzc0LCA4Nzc4LCA4NzgyLCA4Nzg4LCA4Nzk0LCA4Nzk3LCA4ODA0LCA4ODEzLCA4ODE2LCA4ODE5LCA4ODI0LCA4ODMwLCAKKyAgICA4ODM0LCA4ODQyLCA4ODQ4LCA4ODU0LCA4ODYyLCA4ODY2LCA4ODcxLCA4ODgyLCA4ODg3LCA4ODkxLCA4ODk1LCA4ODk5LCAKKyAgICA4OTAyLCAwLCA4OTA1LCA4OTEyLCA4OTE2LCA4OTIyLCA4OTI2LCA4OTMzLCA4OTQwLCA4OTQ4LCA4OTU1LCA4OTYyLCAKKyAgICA4OTY2LCA4OTcwLCA4OTc2LCA4OTgwLCA4OTg0LCA4OTg4LCA4OTkyLCA4OTk2LCA5MDAwLCA5MDA0LCA5MDA4LCA5MDEyLCAKKyAgICA5MDE2LCA5MDIwLCA5MDI0LCA5MDI4LCA5MDMyLCA5MDM2LCA5MDQwLCA5MDQ0LCA5MDUyLCA5MDYwLCA5MDcwLCA5MDc5LCAKKyAgICA5MDg4LCA5MDkxLCA5MDk1LCA5MDk5LCA5MTAzLCA5MTA3LCA5MTExLCA5MTE1LCA5MTE5LCA5MTIzLCA5MTI4LCA5MTMyLCAKKyAgICA5MTM1LCA5MTM4LCA5MTQxLCA5MTQ0LCA5MTQ3LCA5MTUwLCA5MTUzLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTczLCAKKyAgICA5MTc4LCA5MTg0LCA5MTg3LCA5MTk0LCA5MjAzLCA5MjA4LCA5MjEzLCA5MjIwLCA5MjI2LCA5MjMxLCA5MjM1LCA5MjM5LCAKKyAgICA5MjQzLCA5MjQ3LCA5MjUxLCA5MjU1LCA5MjYwLCA5MjY0LCA5MjY5LCA5MjczLCA5Mjc4LCA5MjgzLCA5MjkwLCA5Mjk2LCAKKyAgICA5MzAyLCA5MzA4LCA5MzEzLCA5MzIyLCA5MzMxLCA5MzM2LCA5MzQzLCA5MzUwLCA5MzU3LCA5MzY0LCA5MzY4LCA5MzcyLCAKKyAgICA5Mzc2LCA5MzgzLCA5MzkzLCA5Mzk3LCA5NDAxLCA5NDA1LCA5NDEyLCA5NDIwLCA5NDI0LCA5NDI4LCA5NDM1LCA5NDM5LCAKKyAgICA5NDQzLCA5NDQ3LCA5NDU0LCA5NDYxLCA5NDczLCA5NDc3LCA5NDgxLCA5NDg1LCA5NDk1LCA5NTA0LCA5NTA4LCA5NTE2LCAKKyAgICA5NTIzLCA5NTMwLCA5NTM5LCA5NTUwLCA5NTU4LCA5NTYyLCA5NTcxLCA5NTgyLCA5NTkwLCA5NjAzLCA5NjExLCA5NjE5LCAKKyAgICA5NjI3LCA5NjM1LCA5NjQxLCA5NjUwLCA5NjU3LCA5NjYxLCA5NjY5LCA5NjczLCA5NjgwLCA5Njg4LCA5NjkyLCA5Njk4LCAKKyAgICA5NzA1LCA5NzEyLCA5NzE2LCA5NzI0LCA5NzI4LCA5NzM1LCA5NzM5LCA5NzQ3LCA5NzUxLCA5NzU5LCA5NzY3LCA5Nzc0LCAKKyAgICA5NzgyLCA5NzkwLCA5Nzk3LCA5ODAzLCA5ODA3LCA5ODE0LCA5ODIyLCA5ODI4LCA5ODM1LCA5ODQyLCA5ODQ4LCA5ODU4LCAKKyAgICA5ODY2LCA5ODczLCA5ODc5LCA5ODgzLCA5ODg2LCA5ODkwLCA5ODk2LCA5OTA0LCA5OTA4LCA5OTE0LCA5OTIwLCA5OTI3LCAKKyAgICA5OTM0LCA5OTM3LCA5OTQ0LCA5OTQ5LCA5OTU4LCA5OTYzLCA5OTY3LCA5OTgwLCA5OTkzLCA5OTk5LCAxMDAwNiwgMTAwMTEsIAorICAgIDEwMDE3LCAxMDAyMiwgMTAwMjgsIDEwMDM4LCAxMDA0NSwgMTAwNTQsIDEwMDY0LCAxMDA3MCwgMTAwNzUsIDEwMDgwLCAKKyAgICAxMDA4NCwgMTAwODgsIDEwMDkzLCAxMDA5OCwgMTAxMDQsIDEwMTEyLCAxMDEyMCwgMTAxMzEsIDEwMTM2LCAxMDE0NSwgCisgICAgMTAxNTQsIDEwMTYxLCAxMDE2NywgMTAxNzMsIDEwMTc5LCAxMDE4NSwgMTAxOTEsIDEwMTk3LCAxMDIwNCwgMTAyMTAsIAorICAgIDEwMjE3LCAxMDIyNCwgMTAyMzEsIDEwMjM4LCAxMDI0NCwgMTAyNTIsIDEwMjYxLCAxMDI2OCwgMTAyNzYsIDEwMjg0LCAKKyAgICAxMDI5MCwgMTAyOTYsIDEwMzAyLCAxMDMxMCwgMTAzMTgsIDEwMzI4LCAxMDMzOCwgMTAzNDIsIDEwMzQ4LCAxMDM1NCwgMCwgCisgICAgMTAzNjAsIDEwMzY1LCAxMDM3MCwgMTAzNzcsIDEwMzgyLCAxMDM4NywgMTAzOTQsIDEwMzk5LCAxMDQwOCwgMTA0MTMsIAorICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQ0MCwgMTA0NDUsIDEwNDUyLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKKyAgICAxMDQ3MiwgMTA0NzcsIDEwNDgzLCAxMDQ4NywgMTA0OTIsIDEwNDk5LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCisgICAgMTA1MjQsIDEwNTMxLCAxMDUzOCwgMTA1NDUsIDEwNTUwLCAxMDU1NSwgMTA1NjEsIDEwNTY2LCAxMDU3MSwgMTA1NzcsIAorICAgIDEwNTgyLCAxMDU4NywgMTA1OTUsIDEwNjAzLCAxMDYwOCwgMTA2MTMsIDEwNjE5LCAxMDYyNCwgMTA2MjksIDEwNjMzLCAKKyAgICAxMDYzOSwgMTA2NDMsIDEwNjQ3LCAxMDY1MywgMTA2NTksIDEwNjY0LCAxMDY2OSwgMTA2NzYsIDEwNjgzLCAxMDY4NywgMCwgCisgICAgMCwgMTA2OTEsIDEwNjk4LCAxMDcwNSwgMTA3MTIsIDEwNzIyLCAxMDczNCwgMTA3NDUsIDEwNzYxLCAxMDc3MywgMTA3ODQsIAorICAgIDEwNzkyLCAxMDc5OSwgMTA4MDksIDEwODI0LCAxMDgzNSwgMTA4NDEsIDEwODUwLCAxMDg1OCwgMTA4NjksIDEwODc5LCAKKyAgICAxMDg4NywgMTA4OTgsIDEwOTA1LCAxMDkxMywgMTA5MjQsIDEwOTMwLCAxMDkzNiwgMTA5NDQsIDEwOTUyLCAxMDk2MCwgCisgICAgMTA5NjYsIDEwOTc2LCAxMDk4NCwgMTA5OTQsIDExMDA0LCAxMTAxNywgMTEwMzEsIDExMDQ1LCAxMTA1NSwgMTEwNjYsIAorICAgIDExMDc3LCAxMTA5MCwgMTExMDMsIDExMTE3LCAxMTEyOSwgMTExNDEsIDExMTU0LCAxMTE2NywgMTExNzksIDExMTkyLCAKKyAgICAxMTIwMSwgMTEyMDksIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAxMTI0OSwgCisgICAgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgMTEyOTksIAorICAgIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIDExMzQ5LCAKKyAgICAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzMsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAxMTM5OCwgCisgICAgMTE0MDIsIDExNDA2LCAxMTQxMCwgMTE0MTQsIDExNDE4LCAxMTQyMiwgMTE0MjYsIDExNDMwLCAxMTQzNCwgMTE0MzgsIAorICAgIDExNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ0NywgMTE0NTIsIDExNDU2LCAKKyAgICAxMTQ2MCwgMTE0NjQsIDExNDY4LCAxMTQ3MiwgMTE0NzYsIDExNDgxLCAxMTQ4NSwgMTE0OTAsIDExNDk0LCAxMTQ5OSwgCisgICAgMTE1MDMsIDExNTA3LCAxMTUxMSwgMTE1MTYsIDExNTIwLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTUzOSwgMTE1NDQsIAorICAgIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODgsIDExNTkzLCAKKyAgICAxMTYwMCwgMTE2MDQsIDExNjA5LCAxMTYxNCwgMTE2MTgsIDExNjIzLCAxMTYyNywgMTE2MzQsIDExNjQxLCAxMTY0OCwgCisgICAgMTE2NTUsIDExNjYzLCAxMTY3MSwgMTE2ODAsIDExNjg4LCAxMTY5NSwgMTE3MDIsIDExNzEwLCAxMTcxNiwgMTE3MjIsIAorICAgIDExNzI4LCAxMTczNCwgMTE3NDEsIDExNzQ2LCAxMTc1MCwgMTE3NTUsIDAsIDAsIDAsIDAsIDAsIDExNzU5LCAxMTc2NCwgCisgICAgMTE3NjksIDExNzc0LCAxMTc3OSwgMTE3ODQsIDExNzg5LCAxMTc5NCwgMTE3OTksIDExODA0LCAxMTgwOSwgMTE4MTQsIAorICAgIDExODE5LCAxMTgyNCwgMTE4MjksIDExODM0LCAxMTgzOSwgMTE4NDQsIDExODQ5LCAxMTg1NCwgMTE4NTksIDExODY0LCAKKyAgICAxMTg2OSwgMTE4NzQsIDExODc5LCAxMTg4NCwgMTE4ODksIDExODk3LCAxMTkwNCwgMTE5MTAsIDExOTE1LCAxMTkyMywgCisgICAgMTE5MzAsIDExOTM2LCAxMTk0MywgMTE5NDksIDExOTU0LCAxMTk2MSwgMTE5NjgsIDExOTc0LCAxMTk3OSwgMTE5ODQsIAorICAgIDExOTkwLCAxMTk5NSwgMTIwMDAsIDEyMDA2LCAwLCAwLCAxMjAxMSwgMTIwMTcsIDEyMDIzLCAxMjAyOSwgMTIwMzUsIAorICAgIDEyMDQxLCAxMjA0NywgMTIwNTIsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc4LCAxMjA4NCwgMTIwOTAsIDEyMDk4LCAwLCAKKyAgICAxMjEwNCwgMTIxMDksIDEyMTE0LCAxMjExOSwgMTIxMjQsIDEyMTI5LCAxMjEzNCwgMTIxMzksIDEyMTQ0LCAxMjE0OSwgCisgICAgMTIxNTQsIDEyMTU5LCAxMjE2NCwgMTIxNjksIDEyMTc0LCAxMjE3OSwgMTIxODQsIDEyMTg5LCAxMjE5NCwgMTIxOTksIAorICAgIDEyMjA0LCAxMjIwOSwgMTIyMTQsIDEyMjE5LCAxMjIyNCwgMTIyMjksIDEyMjM0LCAxMjIzOSwgMCwgMCwgMTIyNDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjQ4LCAxMjI1NywgMTIyNjUsIAorICAgIDEyMjcyLCAxMjI4MCwgMTIyOTIsIDEyMjk5LCAxMjMwNiwgMTIzMTMsIDEyMzI1LCAxMjMzNiwgMTIzNDMsIDEyMzUxLCAKKyAgICAxMjM1NywgMTIzNjIsIDEyMzcwLCAxMjM3OCwgMTIzODYsIDEyMzkyLCAxMjQwMiwgMTI0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDE3LCAxMjQyMywgMTI0MjgsIAorICAgIDEyNDMzLCAxMjQzOCwgMTI0NDMsIDEyNDQ4LCAxMjQ1MywgMTI0NTgsIDEyNDYzLCAxMjQ2OCwgMTI0NzMsIDEyNDc4LCAKKyAgICAxMjQ4MywgMTI0ODcsIDEyNDkxLCAxMjQ5NSwgMTI1MDAsIDEyNTA2LCAxMjUxMiwgMTI1MTgsIDEyNTIzLCAxMjUyOCwgCisgICAgMTI1MzMsIDEyNTM4LCAxMjU0NCwgMTI1NTMsIDEyNTYxLCAxMjU2NywgMTI1NzUsIDEyNTgxLCAxMjU4NSwgMTI1ODksIAorICAgIDEyNTkzLCAxMjU5OCwgMTI2MDEsIDEyNjA1LCAxMjYwOCwgMTI2MTIsIDEyNjE1LCAxMjYxOSwgMTI2MjMsIDEyNjI3LCAKKyAgICAxMjYzMiwgMTI2MzcsIDEyNjQwLCAxMjY0NCwgMTI2NDksIDEyNjU0LCAxMjY1NywgMTI2NjEsIDEyNjY0LCAxMjY2OCwgCisgICAgMTI2NzIsIDEyNjc2LCAxMjY4MCwgMTI2ODQsIDEyNjg4LCAxMjY5MiwgMTI2OTYsIDEyNzAwLCAxMjcwNCwgMTI3MDgsIAorICAgIDEyNzEyLCAxMjcxNiwgMTI3MjAsIDEyNzI0LCAxMjcyOCwgMTI3MzIsIDEyNzM2LCAxMjc0MCwgMTI3NDQsIDEyNzQ3LCAKKyAgICAxMjc1MSwgMTI3NTUsIDEyNzU5LCAxMjc2MiwgMTI3NjUsIDEyNzY5LCAxMjc3MywgMTI3NzcsIDEyNzgxLCAxMjc4NSwgCisgICAgMTI3ODksIDEyNzkzLCAxMjc5NywgMTI4MDEsIDEyODA0LCAxMjgwOSwgMTI4MTQsIDEyODE4LCAxMjgyMiwgMTI4MjcsIAorICAgIDEyODMxLCAxMjgzNiwgMTI4NDAsIDEyODQ1LCAxMjg1MCwgMTI4NTYsIDEyODYyLCAxMjg2OCwgMTI4NzIsIDEyODc3LCAKKyAgICAxMjg4MywgMTI4ODksIDEyODkzLCAxMjg5OCwgMTI5MDIsIDEyOTA4LCAxMjkxMywgMTI5MTYsIDEyOTIyLCAxMjkyOCwgCisgICAgMTI5MzMsIDEyOTM4LCAxMjk0NSwgMTI5NTAsIDEyOTU1LCAxMjk1OSwgMTI5NjMsIDEyOTY3LCAxMjk3MSwgMTI5NzUsIAorICAgIDEyOTc5LCAxMjk4MywgMTI5ODcsIDEyOTkyLCAxMjk5NywgMTMwMDIsIDEzMDA4LCAxMzAxMSwgMTMwMTUsIDEzMDE5LCAKKyAgICAxMzAyMiwgMTMwMjUsIDEzMDI4LCAxMzAzMSwgMTMwMzQsIDEzMDM3LCAxMzA0MSwgMTMwNDQsIDEzMDQ4LCAxMzA1MiwgCisgICAgMTMwNTksIDEzMDY0LCAxMzA2OCwgMTMwNzIsIDEzMDc2LCAxMzA4MCwgMTMwODQsIDEzMDkwLCAxMzA5NCwgMTMwOTgsIAorICAgIDEzMTAyLCAxMzEwNiwgMTMxMTIsIDEzMTE2LCAxMzEyMCwgMTMxMjMsIDEzMTI3LCAxMzEzMSwgMCwgMTMxMzUsIDEzMTM4LCAKKyAgICAxMzE0MiwgMTMxNDUsIDEzMTQ5LCAxMzE1MiwgMTMxNTYsIDEzMTYwLCAwLCAwLCAxMzE2NCwgMTMxNjcsIDAsIDAsIAorICAgIDEzMTcxLCAxMzE3NCwgMTMxNzgsIDEzMTgxLCAxMzE4NSwgMTMxODksIDEzMTkzLCAxMzE5NywgMTMyMDEsIDEzMjA1LCAKKyAgICAxMzIwOSwgMTMyMTMsIDEzMjE3LCAxMzIyMSwgMTMyMjUsIDEzMjI5LCAxMzIzMywgMTMyMzcsIDEzMjQxLCAxMzI0NSwgCisgICAgMTMyNDksIDEzMjUzLCAwLCAxMzI1NywgMTMyNjAsIDEzMjY0LCAxMzI2OCwgMTMyNzIsIDEzMjc1LCAxMzI3OCwgMCwgCisgICAgMTMyODIsIDAsIDAsIDAsIDEzMjg2LCAxMzI5MCwgMTMyOTQsIDEzMjk4LCAwLCAwLCAxMzMwMSwgMTMzMDUsIDEzMzA5LCAKKyAgICAxMzMxNCwgMTMzMTgsIDEzMzIzLCAxMzMyNywgMTMzMzIsIDEzMzM3LCAwLCAwLCAxMzM0MywgMTMzNDcsIDAsIDAsIAorICAgIDEzMzUyLCAxMzM1NiwgMTMzNjEsIDEzMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM3MSwgMCwgMCwgMCwgMCwgCisgICAgMTMzNzcsIDEzMzgxLCAwLCAxMzM4NSwgMTMzODksIDEzMzk0LCAxMzM5OSwgMTM0MDQsIDAsIDAsIDEzNDEwLCAxMzQxNCwgCisgICAgMTM0MTcsIDEzNDIwLCAxMzQyMywgMTM0MjYsIDEzNDI5LCAxMzQzMiwgMTM0MzYsIDEzNDM5LCAxMzQ0MywgMTM0NTEsIAorICAgIDEzNDYwLCAxMzQ2NCwgMTM0NjgsIDEzNDc0LCAxMzQ4MCwgMTM0ODYsIDEzNDkyLCAxMzUwNiwgMTM1MTMsIDEzNTE2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzUyMCwgMTM1MjcsIDEzNTMyLCAwLCAxMzUzNywgMTM1NDEsIDEzNTQ2LCAxMzU1MCwgMTM1NTUsIAorICAgIDEzNTU5LCAwLCAwLCAwLCAwLCAxMzU2NCwgMTM1NjksIDAsIDAsIDEzNTc0LCAxMzU3OSwgMTM1ODQsIDEzNTg4LCAxMzU5MywgCisgICAgMTM1OTgsIDEzNjAzLCAxMzYwOCwgMTM2MTMsIDEzNjE4LCAxMzYyMywgMTM2MjgsIDEzNjMzLCAxMzYzOCwgMTM2NDMsIAorICAgIDEzNjQ4LCAxMzY1MywgMTM2NTgsIDEzNjYzLCAxMzY2OCwgMTM2NzMsIDEzNjc4LCAwLCAxMzY4MywgMTM2ODcsIDEzNjkyLCAKKyAgICAxMzY5NywgMTM3MDIsIDEzNzA2LCAxMzcxMCwgMCwgMTM3MTUsIDEzNzIwLCAwLCAxMzcyNSwgMTM3MzAsIDAsIDEzNzM1LCAKKyAgICAxMzc0MCwgMCwgMCwgMTM3NDQsIDAsIDEzNzQ5LCAxMzc1NSwgMTM3NjAsIDEzNzY2LCAxMzc3MSwgMCwgMCwgMCwgMCwgCisgICAgMTM3NzcsIDEzNzgzLCAwLCAwLCAxMzc4OSwgMTM3OTUsIDEzODAxLCAwLCAwLCAwLCAxMzgwNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM4MTEsIDEzODE2LCAxMzgyMSwgMTM4MjYsIDAsIDEzODMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgzNiwgCisgICAgMTM4NDEsIDEzODQ1LCAxMzg0OSwgMTM4NTMsIDEzODU3LCAxMzg2MSwgMTM4NjUsIDEzODcwLCAxMzg3NCwgMTM4NzksIAorICAgIDEzODgzLCAxMzg4NywgMTM4OTEsIDEzODk1LCAxMzkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5MDYsIDEzOTExLCAxMzkxNiwgMCwgMTM5MjEsIDEzOTI1LCAxMzkzMCwgMTM5MzQsIDEzOTM5LCAxMzk0MywgMTM5NDgsIAorICAgIDEzOTUzLCAxMzk1OCwgMCwgMTM5NjQsIDEzOTY4LCAxMzk3MywgMCwgMTM5NzksIDEzOTgzLCAxMzk4OCwgMTM5OTIsIAorICAgIDEzOTk3LCAxNDAwMiwgMTQwMDcsIDE0MDEyLCAxNDAxNywgMTQwMjIsIDE0MDI3LCAxNDAzMiwgMTQwMzcsIDE0MDQyLCAKKyAgICAxNDA0NywgMTQwNTIsIDE0MDU3LCAxNDA2MiwgMTQwNjcsIDE0MDcyLCAxNDA3NywgMTQwODIsIDAsIDE0MDg3LCAxNDA5MSwgCisgICAgMTQwOTYsIDE0MTAxLCAxNDEwNiwgMTQxMTAsIDE0MTE0LCAwLCAxNDExOSwgMTQxMjQsIDAsIDE0MTI5LCAxNDEzNCwgCisgICAgMTQxMzksIDE0MTQ0LCAxNDE0OSwgMCwgMCwgMTQxNTMsIDE0MTU4LCAxNDE2MywgMTQxNjksIDE0MTc0LCAxNDE4MCwgCisgICAgMTQxODUsIDE0MTkxLCAxNDE5NywgMTQyMDQsIDAsIDE0MjExLCAxNDIxNiwgMTQyMjIsIDAsIDE0MjI5LCAxNDIzNCwgCisgICAgMTQyNDAsIDAsIDAsIDE0MjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDI0OSwgCisgICAgMTQyNTUsIDE0MjYxLCAxNDI2NywgMCwgMCwgMTQyNzQsIDE0Mjc5LCAxNDI4MywgMTQyODcsIDE0MjkxLCAxNDI5NSwgCisgICAgMTQyOTksIDE0MzAzLCAxNDMwOCwgMTQzMTIsIDE0MzE3LCAxNDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzMjcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzMyLCAxNDMzNiwgMTQzNDAsIDAsIDE0MzQ0LCAxNDM0NywgMTQzNTEsIDE0MzU0LCAKKyAgICAxNDM1OCwgMTQzNjEsIDE0MzY1LCAxNDM2OSwgMCwgMCwgMTQzNzMsIDE0Mzc2LCAwLCAwLCAxNDM4MCwgMTQzODMsIAorICAgIDE0Mzg3LCAxNDM5MCwgMTQzOTQsIDE0Mzk4LCAxNDQwMiwgMTQ0MDYsIDE0NDEwLCAxNDQxNCwgMTQ0MTgsIDE0NDIyLCAKKyAgICAxNDQyNiwgMTQ0MzAsIDE0NDM0LCAxNDQzOCwgMTQ0NDIsIDE0NDQ2LCAxNDQ1MCwgMTQ0NTQsIDE0NDU4LCAxNDQ2MiwgMCwgCisgICAgMTQ0NjYsIDE0NDY5LCAxNDQ3MywgMTQ0NzcsIDE0NDgxLCAxNDQ4NCwgMTQ0ODcsIDAsIDE0NDkxLCAxNDQ5NSwgMCwgCisgICAgMTQ0OTksIDE0NTAzLCAxNDUwNywgMTQ1MTEsIDE0NTE1LCAwLCAwLCAxNDUxOCwgMTQ1MjIsIDE0NTI2LCAxNDUzMSwgCisgICAgMTQ1MzUsIDE0NTQwLCAxNDU0NCwgMTQ1NDksIDE0NTU0LCAwLCAwLCAxNDU2MCwgMTQ1NjQsIDAsIDAsIDE0NTY5LCAKKyAgICAxNDU3MywgMTQ1NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTgyLCAxNDU4OCwgMCwgMCwgMCwgMCwgMTQ1OTQsIAorICAgIDE0NTk4LCAwLCAxNDYwMiwgMTQ2MDYsIDE0NjExLCAxNDYxNiwgMTQ2MjEsIDAsIDAsIDE0NjI3LCAxNDYzMSwgMTQ2MzQsIAorICAgIDE0NjM3LCAxNDY0MCwgMTQ2NDMsIDE0NjQ2LCAxNDY0OSwgMTQ2NTMsIDE0NjU2LCAxNDY2MCwgMTQ2NjMsIDE0NjY3LCAKKyAgICAxNDY3MywgMTQ2NzksIDE0Njg1LCAxNDY5MSwgMTQ2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzAzLCAKKyAgICAxNDcwNywgMCwgMTQ3MTEsIDE0NzE0LCAxNDcxOCwgMTQ3MjEsIDE0NzI1LCAxNDcyOCwgMCwgMCwgMCwgMTQ3MzIsIAorICAgIDE0NzM1LCAxNDczOSwgMCwgMTQ3NDMsIDE0NzQ2LCAxNDc1MCwgMTQ3NTQsIDAsIDAsIDAsIDE0NzU3LCAxNDc2MSwgMCwgCisgICAgMTQ3NjUsIDAsIDE0NzY5LCAxNDc3MywgMCwgMCwgMCwgMTQ3NzcsIDE0NzgxLCAwLCAwLCAwLCAxNDc4NSwgMTQ3ODksIAorICAgIDE0NzkzLCAwLCAwLCAwLCAxNDc5NiwgMTQ3OTksIDE0ODAyLCAxNDgwNiwgMTQ4MTAsIDE0ODE0LCAxNDgxOCwgMTQ4MjIsIAorICAgIDE0ODI2LCAxNDgzMCwgMTQ4MzQsIDE0ODM4LCAwLCAwLCAwLCAwLCAxNDg0MSwgMTQ4NDYsIDE0ODUwLCAxNDg1NSwgCisgICAgMTQ4NTksIDAsIDAsIDAsIDE0ODY0LCAxNDg2OCwgMTQ4NzMsIDAsIDE0ODc4LCAxNDg4MiwgMTQ4ODcsIDE0ODkyLCAwLCAwLCAKKyAgICAxNDg5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0OTA1LCAxNDkwOSwgMTQ5MTIsIDE0OTE1LCAxNDkxOCwgMTQ5MjEsIDE0OTI0LCAxNDkyNywgMTQ5MzEsIDE0OTM0LCAKKyAgICAxNDkzOCwgMTQ5NDIsIDE0OTQ3LCAxNDk1MiwgMTQ5NTYsIDE0OTYwLCAxNDk2NCwgMTQ5NjgsIDE0OTcyLCAxNDk3NywgCisgICAgMTQ5ODEsIDAsIDAsIDAsIDAsIDAsIDE0OTg0LCAxNDk5MCwgMTQ5OTQsIDE0OTk4LCAwLCAxNTAwMiwgMTUwMDUsIDE1MDA5LCAKKyAgICAxNTAxMiwgMTUwMTYsIDE1MDE5LCAxNTAyMywgMTUwMjcsIDAsIDE1MDMxLCAxNTAzNCwgMTUwMzgsIDAsIDE1MDQyLCAKKyAgICAxNTA0NSwgMTUwNDksIDE1MDUzLCAxNTA1NiwgMTUwNjAsIDE1MDY0LCAxNTA2OCwgMTUwNzIsIDE1MDc2LCAxNTA4MCwgCisgICAgMTUwODQsIDE1MDg4LCAxNTA5MiwgMTUwOTYsIDE1MTAwLCAxNTEwNCwgMTUxMDgsIDE1MTEyLCAxNTExNiwgMTUxMjAsIAorICAgIDE1MTI0LCAxNTEyOCwgMCwgMTUxMzIsIDE1MTM1LCAxNTEzOSwgMTUxNDMsIDE1MTQ3LCAxNTE1MCwgMTUxNTMsIDE1MTU3LCAKKyAgICAxNTE2MSwgMTUxNjUsIDE1MTY5LCAxNTE3MywgMTUxNzcsIDE1MTgxLCAxNTE4NSwgMTUxODksIDAsIDAsIDAsIDE1MTkyLCAKKyAgICAxNTE5NiwgMTUyMDEsIDE1MjA1LCAxNTIxMCwgMTUyMTQsIDE1MjE5LCAxNTIyNCwgMCwgMTUyMzAsIDE1MjM0LCAxNTIzOSwgCisgICAgMCwgMTUyNDQsIDE1MjQ4LCAxNTI1MywgMTUyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjYyLCAxNTI2NiwgMCwgCisgICAgMTUyNzIsIDE1Mjc2LCAxNTI4MCwgMCwgMCwgMCwgMCwgMCwgMTUyODQsIDE1Mjg5LCAxNTI5NCwgMTUyOTksIDAsIDAsIAorICAgIDE1MzA1LCAxNTMwOSwgMTUzMTIsIDE1MzE1LCAxNTMxOCwgMTUzMjEsIDE1MzI0LCAxNTMyNywgMTUzMzEsIDE1MzM0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzOCwgMTUzNTEsIDE1MzYzLCAxNTM3NSwgMTUzODcsIDE1Mzk5LCAxNTQxMSwgCisgICAgMTU0MjMsIDAsIDE1NDI3LCAxNTQzMSwgMTU0MzUsIDAsIDE1NDM5LCAxNTQ0MiwgMTU0NDYsIDE1NDQ5LCAxNTQ1MywgCisgICAgMTU0NTYsIDE1NDYwLCAxNTQ2NCwgMCwgMTU0NjgsIDE1NDcxLCAxNTQ3NSwgMCwgMTU0NzksIDE1NDgyLCAxNTQ4NiwgCisgICAgMTU0OTAsIDE1NDkzLCAxNTQ5NywgMTU1MDEsIDE1NTA1LCAxNTUwOSwgMTU1MTMsIDE1NTE3LCAxNTUyMSwgMTU1MjUsIAorICAgIDE1NTI5LCAxNTUzMywgMTU1MzcsIDE1NTQxLCAxNTU0NSwgMTU1NDksIDE1NTUzLCAxNTU1NywgMTU1NjEsIDE1NTY1LCAwLCAKKyAgICAxNTU2OSwgMTU1NzIsIDE1NTc2LCAxNTU4MCwgMTU1ODQsIDE1NTg3LCAxNTU5MCwgMTU1OTQsIDE1NTk4LCAxNTYwMiwgMCwgCisgICAgMTU2MDYsIDE1NjEwLCAxNTYxNCwgMTU2MTgsIDE1NjIyLCAwLCAwLCAxNTYyNSwgMTU2MjksIDE1NjMzLCAxNTYzOCwgCisgICAgMTU2NDIsIDE1NjQ3LCAxNTY1MSwgMTU2NTYsIDE1NjYxLCAwLCAxNTY2NywgMTU2NzEsIDE1Njc2LCAwLCAxNTY4MSwgCisgICAgMTU2ODUsIDE1NjkwLCAxNTY5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2OTksIDE1NzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNTcwOSwgMCwgMTU3MTMsIDE1NzE4LCAxNTcyMywgMTU3MjgsIDAsIDAsIDE1NzM0LCAxNTczOCwgMTU3NDEsIAorICAgIDE1NzQ0LCAxNTc0NywgMTU3NTAsIDE1NzUzLCAxNTc1NiwgMTU3NjAsIDE1NzYzLCAwLCAxNTc2NywgMTU3NzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Nzc1LCAxNTc3OSwgMTU3ODMsIDAsIDE1Nzg3LCAxNTc5MCwgCisgICAgMTU3OTQsIDE1Nzk3LCAxNTgwMSwgMTU4MDQsIDE1ODA4LCAxNTgxMiwgMCwgMTU4MTYsIDE1ODE5LCAxNTgyMywgMCwgCisgICAgMTU4MjcsIDE1ODMwLCAxNTgzNCwgMTU4MzgsIDE1ODQxLCAxNTg0NSwgMTU4NDksIDE1ODUzLCAxNTg1NywgMTU4NjEsIAorICAgIDE1ODY1LCAxNTg2OSwgMTU4NzMsIDE1ODc3LCAxNTg4MSwgMTU4ODUsIDE1ODg5LCAxNTg5MywgMTU4OTcsIDE1OTAxLCAKKyAgICAxNTkwNSwgMTU5MDksIDE1OTEzLCAxNTkxNywgMTU5MjEsIDE1OTI0LCAxNTkyOCwgMTU5MzIsIDE1OTM2LCAxNTkzOSwgCisgICAgMTU5NDIsIDE1OTQ2LCAxNTk1MCwgMTU5NTQsIDE1OTU4LCAxNTk2MiwgMTU5NjYsIDE1OTcwLCAxNTk3NCwgMTU5NzgsIAorICAgIDE1OTgxLCAwLCAwLCAxNTk4NSwgMTU5ODksIDE1OTk0LCAxNTk5OCwgMTYwMDMsIDE2MDA3LCAxNjAxMiwgMTYwMTcsIDAsIAorICAgIDE2MDIzLCAxNjAyNywgMTYwMzIsIDAsIDE2MDM3LCAxNjA0MSwgMTYwNDYsIDE2MDUxLCAxNjA1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTYwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDY2LCAxNjA3MiwgMTYwNzcsIDE2MDgyLCAxNjA4NywgCisgICAgMCwgMCwgMTYwOTMsIDE2MDk3LCAxNjEwMCwgMTYxMDMsIDE2MTA2LCAxNjEwOSwgMTYxMTIsIDE2MTE1LCAxNjExOSwgCisgICAgMTYxMjIsIDE2MTI2LCAxNjEzMCwgMTYxMzUsIDE2MTQwLCAxNjE0NiwgMTYxNTIsIDAsIDAsIDAsIDE2MTU4LCAxNjE2MiwgCisgICAgMTYxNjgsIDE2MTc0LCAxNjE4MCwgMTYxODUsIDE2MTkxLCAwLCAwLCAxNjE5NywgMTYyMDEsIDAsIDE2MjA1LCAxNjIwOSwgCisgICAgMTYyMTMsIDE2MjE3LCAxNjIyMSwgMTYyMjUsIDE2MjI5LCAxNjIzMywgMTYyMzcsIDE2MjQxLCAxNjI0NSwgMTYyNDksIAorICAgIDE2MjUzLCAxNjI1NywgMTYyNjEsIDE2MjY1LCAxNjI2OSwgMTYyNzMsIDAsIDAsIDAsIDE2Mjc3LCAxNjI4MywgMTYyODksIAorICAgIDE2Mjk1LCAxNjMwMSwgMTYzMDcsIDE2MzEzLCAxNjMxOSwgMTYzMjUsIDE2MzMxLCAxNjMzNywgMTYzNDMsIDE2MzUxLCAKKyAgICAxNjM1NywgMTYzNjMsIDE2MzY5LCAxNjM3NSwgMTYzODEsIDE2Mzg3LCAxNjM5MywgMTYzOTksIDE2NDA1LCAxNjQxMSwgCisgICAgMTY0MTcsIDAsIDE2NDIzLCAxNjQyOSwgMTY0MzUsIDE2NDQxLCAxNjQ0NywgMTY0NTMsIDE2NDU3LCAxNjQ2MywgMTY0NjcsIAorICAgIDAsIDE2NDcxLCAwLCAwLCAxNjQ3NywgMTY0ODEsIDE2NDg3LCAxNjQ5MywgMTY0OTksIDE2NTAzLCAxNjUwOSwgMCwgMCwgMCwgCisgICAgMTY1MTMsIDAsIDAsIDAsIDAsIDE2NTE3LCAxNjUyMiwgMTY1MjksIDE2NTM2LCAxNjU0MywgMTY1NTAsIDAsIDE2NTU3LCAwLCAKKyAgICAxNjU2NCwgMTY1NjksIDE2NTc0LCAxNjU4MSwgMTY1ODgsIDE2NTk3LCAxNjYwOCwgMTY2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE2NjIyLCAxNjYyOCwgMTY2MzMsIDE2NjM4LCAxNjY0MywgMTY2NDgsIDE2NjUzLCAxNjY1OCwgMTY2NjQsIDE2NjY5LCAwLCAKKyAgICAwLCAxNjY3NSwgMTY2ODIsIDE2Njg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjY5NCwgMTY3MDEsIAorICAgIDE2NzA4LCAxNjcxNSwgMTY3MjIsIDE2NzI5LCAxNjczNiwgMTY3NDMsIDE2NzUwLCAxNjc1NywgMTY3NjQsIDE2NzcxLCAKKyAgICAxNjc3OCwgMTY3ODUsIDE2NzkyLCAxNjc5OSwgMTY4MDYsIDE2ODEzLCAxNjgyMCwgMTY4MjcsIDE2ODM0LCAxNjg0MSwgCisgICAgMTY4NDgsIDE2ODU1LCAxNjg2MiwgMTY4NjksIDE2ODc2LCAxNjg4MywgMTY4OTAsIDE2ODk3LCAxNjkwNCwgMTY5MTEsIAorICAgIDE2OTE4LCAxNjkyNCwgMTY5MzEsIDE2OTM4LCAxNjk0MywgMTY5NTAsIDE2OTU1LCAxNjk2MiwgMTY5NjksIDE2OTc2LCAKKyAgICAxNjk4MywgMTY5OTAsIDE2OTk3LCAxNzAwMywgMTcwMTAsIDE3MDE1LCAxNzAyMSwgMTcwMjgsIDE3MDM1LCAxNzA0MiwgCisgICAgMTcwNDgsIDE3MDU1LCAxNzA2MiwgMTcwNjksIDE3MDc1LCAxNzA4MiwgMCwgMCwgMCwgMCwgMTcwODcsIDE3MDk0LCAKKyAgICAxNzEwMCwgMTcxMDcsIDE3MTEzLCAxNzEyMiwgMTcxMzEsIDE3MTM2LCAxNzE0MSwgMTcxNDYsIDE3MTUzLCAxNzE2MCwgCisgICAgMTcxNjcsIDE3MTc0LCAxNzE3OSwgMTcxODQsIDE3MTg5LCAxNzE5NCwgMTcxOTksIDE3MjAzLCAxNzIwNywgMTcyMTEsIAorICAgIDE3MjE1LCAxNzIxOSwgMTcyMjMsIDE3MjI4LCAxNzIzMiwgMTcyMzcsIDE3MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzI0NywgMTcyNTIsIDAsIDE3MjU5LCAwLCAwLCAxNzI2NiwgMTcyNzEsIDAsIDE3Mjc2LCAwLCAKKyAgICAwLCAxNzI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMTcyODgsIDE3MjkzLCAxNzI5NywgMTczMDQsIDAsIDE3MzExLCAxNzMxNiwgCisgICAgMTczMjEsIDE3MzI2LCAxNzMzMywgMTczNDAsIDE3MzQ3LCAwLCAxNzM1NCwgMTczNTksIDE3MzY0LCAwLCAxNzM3MSwgMCwgCisgICAgMTczNzgsIDAsIDAsIDE3MzgzLCAxNzM5MCwgMCwgMTczOTcsIDE3NDAxLCAxNzQwOCwgMTc0MTIsIDE3NDE3LCAxNzQyNSwgCisgICAgMTc0MzEsIDE3NDM3LCAxNzQ0MiwgMTc0NDgsIDE3NDU0LCAxNzQ2MCwgMTc0NjUsIDAsIDE3NDcxLCAxNzQ3OSwgMTc0ODYsIAorICAgIDAsIDAsIDE3NDkzLCAxNzQ5OCwgMTc1MDQsIDE3NTA5LCAxNzUxNSwgMCwgMTc1MjEsIDAsIDE3NTI3LCAxNzUzNCwgCisgICAgMTc1NDEsIDE3NTQ4LCAxNzU1NSwgMTc1NjAsIDAsIDAsIDE3NTY0LCAxNzU2OSwgMTc1NzMsIDE3NTc3LCAxNzU4MSwgCisgICAgMTc1ODUsIDE3NTg5LCAxNzU5MywgMTc1OTgsIDE3NjAyLCAwLCAwLCAxNzYwNywgMTc2MTMsIDE3NjE5LCAxNzYyNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc2MzMsIDE3NjM3LCAxNzY0OCwgMTc2NjMsIDE3Njc4LCAxNzY4OCwgMTc2OTksIAorICAgIDE3NzEyLCAxNzcyMywgMTc3MjksIDE3NzM3LCAxNzc0NywgMTc3NTMsIDE3NzYxLCAxNzc2NSwgMTc3NzEsIDE3Nzc3LCAKKyAgICAxNzc4NSwgMTc3OTUsIDE3ODAzLCAxNzgxNiwgMTc4MjIsIDE3ODMwLCAxNzgzOCwgMTc4NTAsIDE3ODU3LCAxNzg2NSwgCisgICAgMTc4NzMsIDE3ODgxLCAxNzg4OSwgMTc4OTcsIDE3OTA1LCAxNzkxNSwgMTc5MTksIDE3OTIyLCAxNzkyNSwgMTc5MjgsIAorICAgIDE3OTMxLCAxNzkzNCwgMTc5MzcsIDE3OTQxLCAxNzk0NCwgMTc5NDgsIDE3OTUyLCAxNzk1NiwgMTc5NjAsIDE3OTY0LCAKKyAgICAxNzk2OCwgMTc5NzIsIDE3OTc3LCAxNzk4MSwgMTc5ODYsIDE3OTkxLCAxNzk5NywgMTgwMDcsIDE4MDIxLCAxODAzMSwgCisgICAgMTgwMzcsIDE4MDQzLCAxODA1MSwgMTgwNTksIDE4MDY3LCAxODA3NSwgMTgwODEsIDE4MDg3LCAxODA5MCwgMTgwOTQsIAorICAgIDE4MDk4LCAxODEwMiwgMTgxMDYsIDE4MTEwLCAxODExNCwgMCwgMTgxMTgsIDE4MTIyLCAxODEyNiwgMTgxMzAsIDE4MTM0LCAKKyAgICAxODEzOCwgMTgxNDIsIDE4MTQ2LCAxODE1MCwgMTgxNTQsIDE4MTU4LCAxODE2MiwgMTgxNjUsIDE4MTY5LCAxODE3MywgCisgICAgMTgxNzcsIDE4MTgwLCAxODE4NCwgMTgxODgsIDE4MTkyLCAxODE5NiwgMTgyMDAsIDE4MjA0LCAxODIwOCwgMTgyMTIsIAorICAgIDE4MjE1LCAxODIxOSwgMTgyMjMsIDE4MjI3LCAxODIzMSwgMTgyMzUsIDE4MjM4LCAxODI0MSwgMTgyNDUsIDE4MjUxLCAKKyAgICAxODI1NSwgMCwgMCwgMCwgMCwgMTgyNTksIDE4MjY0LCAxODI2OCwgMTgyNzMsIDE4Mjc3LCAxODI4MiwgMTgyODcsIAorICAgIDE4MjkzLCAxODI5OCwgMTgzMDQsIDE4MzA4LCAxODMxMywgMTgzMTcsIDE4MzIyLCAxODMzMiwgMTgzMzgsIDE4MzQ0LCAKKyAgICAxODM1MSwgMTgzNjEsIDE4MzY3LCAxODM3MSwgMTgzNzUsIDE4MzgxLCAxODM4NywgMTgzOTUsIDE4NDAxLCAxODQwOSwgCisgICAgMTg0MTcsIDE4NDI1LCAxODQzNSwgMTg0NDMsIDE4NDUzLCAxODQ1OCwgMTg0NjQsIDE4NDcwLCAxODQ3NiwgMTg0ODIsIAorICAgIDE4NDg4LCAxODQ5NCwgMCwgMTg1MDAsIDE4NTA2LCAxODUxMiwgMTg1MTgsIDE4NTI0LCAxODUzMCwgMTg1MzYsIDE4NTQyLCAKKyAgICAxODU0OCwgMTg1NTQsIDE4NTYwLCAxODU2NiwgMTg1NzEsIDE4NTc3LCAxODU4MywgMTg1ODksIDE4NTk0LCAxODYwMCwgCisgICAgMTg2MDYsIDE4NjEyLCAxODYxOCwgMTg2MjQsIDE4NjMwLCAxODYzNiwgMTg2NDIsIDE4NjQ3LCAxODY1MywgMTg2NTksIAorICAgIDE4NjY1LCAxODY3MSwgMTg2NzcsIDE4NjgyLCAxODY4NywgMTg2OTMsIDE4NzAxLCAxODcwOCwgMCwgMTg3MTYsIDE4NzIzLCAKKyAgICAxODczNiwgMTg3NDMsIDE4NzUwLCAxODc1OCwgMTg3NjYsIDE4NzcyLCAxODc3OCwgMTg3ODQsIDE4Nzk0LCAxODc5OSwgCisgICAgMTg4MDUsIDE4ODE1LCAxODgyNSwgMCwgMTg4MzUsIDE4ODQ1LCAxODg1MywgMTg4NjUsIDE4ODc3LCAxODg4MywgMTg4OTcsIAorICAgIDE4OTEyLCAxODkxNywgMTg5MjIsIDE4OTMwLCAxODkzOCwgMTg5NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE4OTU0LCAxODk1NywgMTg5NjEsIDE4OTY1LCAxODk2OSwgMTg5NzMsIDE4OTc3LCAxODk4MSwgMTg5ODUsIAorICAgIDE4OTg5LCAxODk5MywgMTg5OTcsIDE5MDAxLCAxOTAwNSwgMTkwMDksIDE5MDEzLCAxOTAxNywgMTkwMjEsIDE5MDI1LCAKKyAgICAxOTAyOSwgMTkwMzMsIDE5MDM3LCAxOTA0MCwgMTkwNDQsIDE5MDQ4LCAxOTA1MiwgMTkwNTUsIDE5MDU4LCAxOTA2MiwgCisgICAgMTkwNjYsIDE5MDcwLCAxOTA3NCwgMTkwNzcsIDE5MDgxLCAxOTA4NCwgMTkwODksIDE5MDkyLCAxOTA5NiwgMTkwOTksIAorICAgIDE5MTAzLCAxOTEwNiwgMTkxMTEsIDE5MTE0LCAxOTExOCwgMTkxMjUsIDE5MTMwLCAxOTEzNCwgMTkxMzksIDE5MTQzLCAKKyAgICAxOTE0OCwgMTkxNTIsIDE5MTU3LCAxOTE2NCwgMTkxNzAsIDE5MTc1LCAxOTE3OSwgMTkxODMsIDE5MTg3LCAxOTE5MSwgCisgICAgMTkxOTUsIDE5MjAwLCAxOTIwNiwgMTkyMTIsIDE5MjE3LCAxOTIyMywgMTkyMjcsIDE5MjMwLCAxOTIzMywgMTkyMzYsIAorICAgIDE5MjM5LCAxOTI0MiwgMTkyNDUsIDE5MjQ5LCAxOTI1MiwgMTkyNTYsIDE5MjYyLCAxOTI2NiwgMTkyNzAsIDE5Mjc0LCAKKyAgICAxOTI3OCwgMTkyODIsIDE5Mjg2LCAxOTI5MCwgMTkyOTQsIDE5Mjk5LCAxOTMwMywgMTkzMDgsIDE5MzEzLCAxOTMxOSwgCisgICAgMTkzMjQsIDE5MzMwLCAxOTMzNiwgMTkzNDIsIDE5MzQ4LCAxOTM1NCwgMTkzNjIsIDE5MzY5LCAxOTM3NywgMTkzODUsIAorICAgIDE5Mzk0LCAxOTQwMywgMTk0MTQsIDE5NDI0LCAxOTQzNCwgMTk0NDUsIDE5NDU2LCAxOTQ2NiwgMTk0NzYsIDE5NDg2LCAKKyAgICAxOTQ5NiwgMTk1MDYsIDE5NTE2LCAxOTUyNiwgMTk1MzYsIDE5NTQ0LCAxOTU1MSwgMTk1NTcsIDE5NTY0LCAxOTU2OSwgCisgICAgMTk1NzUsIDE5NTgxLCAxOTU4NywgMTk1OTMsIDE5NTk5LCAxOTYwNSwgMTk2MTEsIDE5NjE3LCAxOTYyMywgMTk2MjksIAorICAgIDE5NjM1LCAxOTY0MCwgMTk2NDgsIDE5NjU1LCAxOTY2MSwgMTk2NjgsIDE5Njc2LCAxOTY4MiwgMTk2ODgsIDE5Njk0LCAKKyAgICAxOTcwMCwgMTk3MDgsIDE5NzE2LCAxOTcyNiwgMTk3MzQsIDE5NzQyLCAxOTc0OCwgMTk3NTMsIDE5NzU4LCAxOTc2MywgCisgICAgMTk3NjgsIDE5NzczLCAxOTc3OCwgMTk3ODQsIDE5Nzg5LCAxOTc5NSwgMTk4MDEsIDE5ODA3LCAxOTgxMywgMTk4MjAsIAorICAgIDE5ODI1LCAxOTgzMSwgMTk4MzYsIDE5ODQxLCAxOTg0NiwgMTk4NTEsIDE5ODU2LCAxOTg2MSwgMTk4NjYsIDE5ODcxLCAKKyAgICAxOTg3NiwgMTk4ODEsIDE5ODg2LCAxOTg5MSwgMTk4OTYsIDE5OTAxLCAxOTkwNiwgMTk5MTEsIDE5OTE2LCAxOTkyMSwgCisgICAgMTk5MjYsIDE5OTMxLCAxOTkzNiwgMTk5NDEsIDE5OTQ2LCAxOTk1MSwgMTk5NTYsIDE5OTYxLCAxOTk2NiwgMTk5NzEsIAorICAgIDE5OTc2LCAxOTk4MSwgMTk5ODYsIDE5OTkxLCAxOTk5NiwgMjAwMDEsIDIwMDA2LCAyMDAxMSwgMjAwMTYsIDAsIDIwMDIxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDAyNiwgMCwgMCwgMjAwMzEsIDIwMDM1LCAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgCisgICAgMjAwNTUsIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIAorICAgIDIwMDk1LCAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAKKyAgICAyMDEzNSwgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgCisgICAgMjAxNzUsIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgMjAyMDEsIDIwMjA1LCAyMDIxMCwgMjAyMTUsIAorICAgIDIwMjE5LCAyMDIyNCwgMjAyMjksIDIwMjMzLCAyMDIzNywgMjAyNDEsIDIwMjQ1LCAyMDI0OSwgMjAyNTMsIDIwMjU3LCAKKyAgICAyMDI2MSwgMjAyNjUsIDIwMjY5LCAyMDI3MywgMjAyNzcsIDIwMjgxLCAyMDI4NSwgMjAyODksIDIwMjkzLCAyMDI5NywgCisgICAgMjAzMDEsIDIwMzA1LCAyMDMwOSwgMjAzMTMsIDIwMzE3LCAyMDMyMSwgMjAzMjUsIDIwMzI5LCAyMDMzMywgMjAzMzcsIAorICAgIDIwMzQxLCAyMDM0NSwgMjAzNDksIDIwMzUzLCAyMDM1NywgMjAzNjEsIDIwMzY1LCAyMDM2OSwgMjAzNzMsIDIwMzc3LCAKKyAgICAyMDM4MSwgMjAzODUsIDIwMzg5LCAyMDM5MywgMjAzOTcsIDIwNDAxLCAyMDQwNSwgMjA0MDksIDIwNDEzLCAyMDQxNywgCisgICAgMjA0MjEsIDIwNDI1LCAyMDQyOSwgMjA0MzMsIDIwNDM3LCAyMDQ0MSwgMjA0NDUsIDIwNDQ5LCAyMDQ1MywgMjA0NTcsIAorICAgIDIwNDYxLCAyMDQ2NSwgMjA0NjksIDIwNDczLCAyMDQ3NywgMjA0ODEsIDIwNDg1LCAyMDQ4OSwgMjA0OTMsIDIwNDk3LCAKKyAgICAyMDUwMSwgMjA1MDUsIDIwNTA5LCAyMDUxMywgMjA1MTcsIDIwNTIxLCAyMDUyNSwgMjA1MjksIDIwNTMzLCAyMDUzNywgCisgICAgMjA1NDEsIDIwNTQ1LCAyMDU0OSwgMjA1NTMsIDIwNTU3LCAyMDU2MSwgMjA1NjUsIDIwNTY5LCAyMDU3MywgMjA1NzcsIAorICAgIDIwNTgxLCAyMDU4NSwgMjA1ODksIDIwNTkzLCAyMDU5NywgMjA2MDEsIDIwNjA1LCAyMDYwOSwgMjA2MTMsIDIwNjE3LCAKKyAgICAyMDYyMCwgMjA2MjQsIDIwNjI3LCAyMDYzMSwgMjA2MzUsIDIwNjM4LCAyMDY0MiwgMjA2NDYsIDIwNjQ5LCAyMDY1MywgCisgICAgMjA2NTcsIDIwNjYxLCAyMDY2NSwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIDIwNjg0LCAyMDY4OCwgMjA2OTIsIAorICAgIDIwNjk1LCAyMDY5OSwgMjA3MDMsIDIwNzA3LCAyMDcxMSwgMjA3MTUsIDIwNzE5LCAyMDcyMywgMjA3MjcsIDIwNzMxLCAKKyAgICAyMDczNSwgMjA3MzksIDIwNzQzLCAyMDc0NywgMjA3NTEsIDIwNzU1LCAyMDc1OSwgMjA3NjMsIDIwNzY3LCAyMDc3MSwgCisgICAgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAyMDc5NSwgMjA3OTksIDIwODAzLCAyMDgwNywgMjA4MTEsIAorICAgIDIwODE1LCAyMDgxOSwgMjA4MjMsIDIwODI3LCAyMDgzMSwgMjA4MzUsIDIwODM5LCAyMDg0MywgMjA4NDcsIDIwODUxLCAKKyAgICAyMDg1NSwgMjA4NTksIDIwODYzLCAyMDg2NywgMjA4NzEsIDIwODc1LCAyMDg3OSwgMjA4ODMsIDIwODg3LCAyMDg5MSwgCisgICAgMjA4OTUsIDIwODk5LCAyMDkwMywgMjA5MDcsIDIwOTExLCAyMDkxNSwgMjA5MTksIDIwOTIzLCAyMDkyNywgMjA5MzEsIAorICAgIDIwOTM1LCAyMDkzOSwgMjA5NDMsIDIwOTQ3LCAyMDk1MSwgMjA5NTUsIDIwOTU5LCAyMDk2MywgMjA5NjcsIDIwOTcxLCAKKyAgICAyMDk3NSwgMjA5NzksIDIwOTgzLCAyMDk4NywgMjA5OTEsIDIwOTk1LCAyMDk5OSwgMjEwMDMsIDIxMDA3LCAyMTAxMSwgCisgICAgMjEwMTUsIDIxMDE5LCAyMTAyMywgMjEwMjcsIDIxMDMxLCAyMTAzNSwgMjEwMzksIDIxMDQzLCAyMTA0NywgMjEwNTEsIAorICAgIDIxMDU1LCAyMTA1OSwgMjEwNjMsIDIxMDY3LCAyMTA3MSwgMjEwNzUsIDIxMDc5LCAyMTA4MywgMjEwODcsIDIxMDkxLCAKKyAgICAyMTA5NSwgMjEwOTksIDIxMTAzLCAyMTEwNywgMjExMTEsIDIxMTE1LCAyMTExOSwgMjExMjMsIDIxMTI3LCAyMTEzMSwgCisgICAgMjExMzUsIDIxMTM5LCAyMTE0MywgMjExNDcsIDIxMTUxLCAyMTE1NSwgMjExNTksIDIxMTYzLCAyMTE2NywgMjExNzEsIAorICAgIDIxMTc1LCAyMTE3OSwgMjExODMsIDIxMTg3LCAyMTE5MSwgMjExOTUsIDIxMTk5LCAyMTIwMywgMjEyMDcsIDIxMjExLCAKKyAgICAyMTIxNSwgMjEyMTksIDIxMjIzLCAyMTIyNywgMjEyMzEsIDIxMjM1LCAyMTIzOSwgMjEyNDMsIDIxMjQ3LCAyMTI1MCwgCisgICAgMjEyNTQsIDIxMjU4LCAyMTI2MiwgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAyMTI4NiwgMjEyOTAsIAorICAgIDIxMjk0LCAyMTI5OCwgMjEzMDIsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAKKyAgICAyMTMzNCwgMjEzMzgsIDIxMzQyLCAyMTM0NSwgMjEzNDksIDIxMzUzLCAyMTM1NywgMjEzNjEsIDIxMzY1LCAyMTM2OSwgCisgICAgMjEzNzMsIDIxMzc3LCAyMTM4MSwgMjEzODUsIDIxMzg5LCAyMTM5MywgMjEzOTcsIDIxNDAxLCAyMTQwNSwgMjE0MDksIAorICAgIDIxNDEzLCAyMTQxNywgMjE0MjEsIDIxNDI1LCAyMTQyOSwgMjE0MzMsIDIxNDM3LCAyMTQ0MSwgMjE0NDUsIDIxNDQ5LCAKKyAgICAyMTQ1MywgMjE0NTcsIDIxNDYxLCAyMTQ2NSwgMjE0NjksIDIxNDczLCAyMTQ3NywgMjE0ODEsIDIxNDg1LCAyMTQ4OSwgCisgICAgMjE0OTMsIDIxNDk3LCAyMTUwMSwgMjE1MDUsIDIxNTA5LCAyMTUxMywgMjE1MTcsIDIxNTIxLCAyMTUyNSwgMjE1MjksIAorICAgIDIxNTMzLCAwLCAyMTUzNywgMjE1NDEsIDIxNTQ1LCAyMTU0OSwgMCwgMCwgMjE1NTMsIDIxNTU3LCAyMTU2MSwgMjE1NjUsIAorICAgIDIxNTY5LCAyMTU3MywgMjE1NzcsIDAsIDIxNTgxLCAwLCAyMTU4NSwgMjE1ODksIDIxNTkzLCAyMTU5NywgMCwgMCwgCisgICAgMjE2MDEsIDIxNjA1LCAyMTYwOSwgMjE2MTMsIDIxNjE3LCAyMTYyMSwgMjE2MjUsIDIxNjI5LCAyMTYzMywgMjE2MzcsIAorICAgIDIxNjQxLCAyMTY0NSwgMjE2NDksIDIxNjUzLCAyMTY1NywgMjE2NjEsIDIxNjY1LCAyMTY2OSwgMjE2NzMsIDIxNjc3LCAKKyAgICAyMTY4MSwgMjE2ODUsIDIxNjg5LCAyMTY5MiwgMjE2OTYsIDIxNzAwLCAyMTcwNCwgMjE3MDgsIDIxNzEyLCAyMTcxNiwgCisgICAgMjE3MjAsIDIxNzI0LCAyMTcyOCwgMjE3MzIsIDIxNzM2LCAyMTc0MCwgMjE3NDQsIDIxNzQ4LCAyMTc1MiwgMjE3NTYsIAorICAgIDIxNzYwLCAwLCAyMTc2NCwgMjE3NjgsIDIxNzcyLCAyMTc3NiwgMCwgMCwgMjE3ODAsIDIxNzg0LCAyMTc4OCwgMjE3OTIsIAorICAgIDIxNzk2LCAyMTgwMCwgMjE4MDQsIDIxODA4LCAyMTgxMiwgMjE4MTYsIDIxODIwLCAyMTgyNCwgMjE4MjgsIDIxODMyLCAKKyAgICAyMTgzNiwgMjE4NDAsIDIxODQ0LCAyMTg0OSwgMjE4NTQsIDIxODU5LCAyMTg2NSwgMjE4NzEsIDIxODc2LCAyMTg4MSwgCisgICAgMjE4ODcsIDIxODkwLCAyMTg5NCwgMjE4OTgsIDIxOTAyLCAyMTkwNiwgMjE5MTAsIDIxOTE0LCAyMTkxOCwgMCwgMjE5MjIsIAorICAgIDIxOTI2LCAyMTkzMCwgMjE5MzQsIDAsIDAsIDIxOTM4LCAyMTk0MiwgMjE5NDYsIDIxOTUwLCAyMTk1NCwgMjE5NTgsIAorICAgIDIxOTYyLCAwLCAyMTk2NiwgMCwgMjE5NzAsIDIxOTc0LCAyMTk3OCwgMjE5ODIsIDAsIDAsIDIxOTg2LCAyMTk5MCwgCisgICAgMjE5OTQsIDIxOTk4LCAyMjAwMiwgMjIwMDYsIDIyMDEwLCAyMjAxNCwgMjIwMTgsIDIyMDIzLCAyMjAyOCwgMjIwMzMsIAorICAgIDIyMDM5LCAyMjA0NSwgMjIwNTAsIDAsIDIyMDU1LCAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAKKyAgICAyMjA4MywgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTksIDIyMTAzLCAyMjEwNywgMjIxMTEsIDIyMTE1LCAyMjExOSwgCisgICAgMjIxMjIsIDIyMTI2LCAyMjEzMCwgMjIxMzQsIDIyMTM4LCAyMjE0MiwgMjIxNDYsIDIyMTUwLCAyMjE1NCwgMjIxNTgsIAorICAgIDIyMTYyLCAyMjE2NiwgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIDIyMTg2LCAyMjE5MCwgMjIxOTQsIDIyMTk4LCAKKyAgICAyMjIwMiwgMjIyMDYsIDIyMjEwLCAyMjIxNCwgMjIyMTgsIDIyMjIyLCAyMjIyNiwgMjIyMzAsIDIyMjM0LCAyMjIzOCwgCisgICAgMjIyNDIsIDIyMjQ2LCAyMjI1MCwgMjIyNTQsIDIyMjU4LCAyMjI2MiwgMjIyNjYsIDIyMjcwLCAyMjI3NCwgMjIyNzgsIDAsIAorICAgIDIyMjgyLCAyMjI4NiwgMjIyOTAsIDIyMjk0LCAwLCAwLCAyMjI5OCwgMjIzMDIsIDIyMzA2LCAyMjMxMCwgMjIzMTQsIAorICAgIDIyMzE4LCAyMjMyMiwgMjIzMjYsIDIyMzMwLCAyMjMzNCwgMjIzMzgsIDIyMzQyLCAyMjM0NiwgMjIzNTAsIDIyMzU0LCAKKyAgICAyMjM1OCwgMjIzNjIsIDIyMzY2LCAyMjM3MCwgMjIzNzQsIDIyMzc4LCAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NCwgCisgICAgMjIzOTgsIDIyNDAyLCAyMjQwNiwgMjI0MTAsIDIyNDE0LCAyMjQxOCwgMjI0MjIsIDIyNDI2LCAyMjQzMCwgMjI0MzQsIAorICAgIDIyNDM4LCAyMjQ0MiwgMjI0NDYsIDIyNDUwLCAyMjQ1NCwgMjI0NTgsIDIyNDYyLCAyMjQ2NiwgMjI0NzAsIDIyNDc0LCAKKyAgICAyMjQ3OCwgMjI0ODIsIDIyNDg2LCAyMjQ5MCwgMjI0OTQsIDIyNDk4LCAyMjUwMiwgMjI1MDYsIDIyNTEwLCAyMjUxNCwgCisgICAgMjI1MTgsIDIyNTIyLCAyMjUyNSwgMjI1MjksIDIyNTMzLCAyMjUzNywgMjI1NDEsIDIyNTQ1LCAyMjU0OSwgMjI1NTMsIAorICAgIDIyNTU3LCAyMjU2MSwgMCwgMCwgMjI1NjUsIDIyNTc0LCAyMjU4MCwgMjI1ODUsIDIyNTg5LCAyMjU5MiwgMjI1OTcsIAorICAgIDIyNjAwLCAyMjYwMywgMjI2MDYsIDIyNjExLCAyMjYxNSwgMjI2MjAsIDIyNjIzLCAyMjYyNiwgMjI2MjksIDIyNjMyLCAKKyAgICAyMjYzNSwgMjI2MzgsIDIyNjQyLCAyMjY0NSwgMjI2NDksIDIyNjUzLCAyMjY1NywgMjI2NjEsIDIyNjY1LCAyMjY2OSwgCisgICAgMjI2NzMsIDIyNjc3LCAyMjY4MSwgMjI2ODUsIDIyNjg5LCAwLCAwLCAwLCAyMjY5NSwgMjI3MDEsIDIyNzA1LCAyMjcwOSwgCisgICAgMjI3MTMsIDIyNzE5LCAyMjcyMywgMjI3MjcsIDIyNzMxLCAyMjczNywgMjI3NDEsIDIyNzQ1LCAyMjc0OSwgMjI3NTUsIAorICAgIDIyNzU5LCAyMjc2MywgMjI3NjcsIDIyNzczLCAyMjc3OSwgMjI3ODUsIDIyNzkzLCAyMjc5OSwgMjI4MDUsIDIyODExLCAKKyAgICAyMjgxNywgMjI4MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDIyODI5LCAyMjgzMiwgMjI4MzUsIDIyODM4LCAyMjg0MSwgMjI4NDQsIAorICAgIDIyODQ4LCAyMjg1MiwgMjI4NTUsIDIyODU5LCAyMjg2MywgMjI4NjcsIDIyODcxLCAyMjg3NSwgMjI4NzgsIDIyODgyLCAKKyAgICAyMjg4NiwgMjI4OTAsIDIyODk0LCAyMjg5OCwgMjI5MDIsIDIyOTA2LCAyMjkxMCwgMjI5MTQsIDIyOTE4LCAyMjkyMiwgCisgICAgMjI5MjUsIDIyOTI5LCAyMjkzMywgMjI5MzcsIDIyOTQxLCAyMjk0NSwgMjI5NDksIDIyOTUzLCAyMjk1NywgMjI5NjEsIAorICAgIDIyOTY1LCAyMjk2OSwgMjI5NzMsIDIyOTc3LCAyMjk4MSwgMjI5ODUsIDIyOTg5LCAyMjk5MywgMjI5OTcsIDIzMDAxLCAKKyAgICAyMzAwNCwgMjMwMDgsIDIzMDEyLCAyMzAxNiwgMjMwMjAsIDIzMDI0LCAyMzAyOCwgMjMwMzIsIDIzMDM2LCAyMzA0MCwgCisgICAgMjMwNDQsIDIzMDQ4LCAyMzA1MiwgMjMwNTYsIDIzMDYwLCAyMzA2NCwgMjMwNjgsIDIzMDcyLCAyMzA3NiwgMjMwODAsIAorICAgIDIzMDg0LCAyMzA4OCwgMjMwOTIsIDIzMDk2LCAyMzEwMCwgMjMxMDQsIDIzMTA4LCAyMzExMiwgMjMxMTYsIDIzMTIwLCAKKyAgICAyMzEyNCwgMjMxMjgsIDIzMTMyLCAyMzEzNiwgMjMxMzksIDIzMTQzLCAyMzE0NywgMjMxNTEsIDIzMTU1LCAyMzE1OSwgMCwgCisgICAgMCwgMjMxNjMsIDIzMTY4LCAyMzE3MywgMjMxNzgsIDIzMTgzLCAyMzE4OCwgMCwgMCwgMjMxOTMsIDIzMTk3LCAyMzIwMCwgCisgICAgMjMyMDQsIDIzMjA3LCAyMzIxMSwgMjMyMTQsIDIzMjE4LCAyMzIyNCwgMjMyMjksIDIzMjMzLCAyMzIzNiwgMjMyNDAsIAorICAgIDIzMjQ0LCAyMzI0OSwgMjMyNTMsIDIzMjU4LCAyMzI2MiwgMjMyNjcsIDIzMjcxLCAyMzI3NiwgMjMyODAsIDIzMjg1LCAKKyAgICAyMzI5MSwgMjMyOTUsIDIzMzAwLCAyMzMwNCwgMjMzMDksIDIzMzE1LCAyMzMxOSwgMjMzMjUsIDIzMzMxLCAyMzMzNSwgCisgICAgMjMzNDAsIDIzMzQ4LCAyMzM1NiwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzODIsIDIzMzg4LCAyMzM5NiwgMjM0MDEsIAorICAgIDIzNDA3LCAyMzQxMSwgMjM0MTUsIDIzNDE5LCAyMzQyMywgMjM0MjcsIDIzNDMxLCAyMzQzNSwgMjM0MzksIDIzNDQzLCAKKyAgICAyMzQ0NywgMjM0NTMsIDIzNDU4LCAyMzQ2MywgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgMjM0NzksIDIzNDgzLCAyMzQ4OCwgCisgICAgMjM0OTIsIDIzNDk3LCAyMzUwMSwgMjM1MDYsIDIzNTEwLCAyMzUxNSwgMjM1MTksIDIzNTI0LCAyMzUyOCwgMjM1MzMsIAorICAgIDIzNTM5LCAyMzU0MywgMjM1NDgsIDIzNTUzLCAyMzU1NywgMjM1NjEsIDIzNTY1LCAyMzU2OSwgMjM1NzIsIDIzNTc2LCAKKyAgICAyMzU4MiwgMjM1ODcsIDIzNTkyLCAyMzU5NiwgMjM2MDAsIDIzNjA0LCAyMzYwOSwgMjM2MTMsIDIzNjE4LCAyMzYyMiwgCisgICAgMjM2MjcsIDIzNjMwLCAyMzYzNCwgMjM2MzgsIDIzNjQzLCAyMzY0NywgMjM2NTIsIDIzNjU2LCAyMzY2MSwgMjM2NjcsIAorICAgIDIzNjcxLCAyMzY3NSwgMjM2NzksIDIzNjgzLCAyMzY4NywgMjM2OTEsIDIzNjk1LCAyMzY5OSwgMjM3MDMsIDIzNzA3LCAKKyAgICAyMzcxMSwgMjM3MTcsIDIzNzIwLCAyMzcyNCwgMjM3MjgsIDIzNzMzLCAyMzczNywgMjM3NDIsIDIzNzQ2LCAyMzc1MSwgCisgICAgMjM3NTUsIDIzNzYwLCAyMzc2NCwgMjM3NjksIDIzNzczLCAyMzc3OCwgMjM3ODIsIDIzNzg3LCAyMzc5MywgMjM3OTcsIAorICAgIDIzODAxLCAyMzgwNywgMjM4MTMsIDIzODE5LCAyMzgyNSwgMjM4MjksIDIzODMzLCAyMzgzNywgMjM4NDEsIDIzODQ1LCAKKyAgICAyMzg0OSwgMjM4NTUsIDIzODU5LCAyMzg2MywgMjM4NjcsIDIzODcyLCAyMzg3NiwgMjM4ODEsIDIzODg1LCAyMzg5MCwgCisgICAgMjM4OTQsIDIzODk5LCAyMzkwMywgMjM5MDgsIDIzOTEyLCAyMzkxNywgMjM5MjEsIDIzOTI2LCAyMzkzMiwgMjM5MzYsIAorICAgIDIzOTQyLCAyMzk0NiwgMjM5NTAsIDIzOTU0LCAyMzk1OCwgMjM5NjIsIDIzOTY2LCAyMzk3MiwgMjM5NzUsIDIzOTc5LCAKKyAgICAyMzk4MywgMjM5ODgsIDIzOTkyLCAyMzk5NywgMjQwMDEsIDI0MDA2LCAyNDAxMCwgMjQwMTUsIDI0MDE5LCAyNDAyNCwgCisgICAgMjQwMjgsIDI0MDMzLCAyNDAzNywgMjQwNDIsIDI0MDQ4LCAyNDA1MiwgMjQwNTcsIDI0MDYxLCAyNDA2NywgMjQwNzMsIAorICAgIDI0MDc3LCAyNDA4MSwgMjQwODUsIDI0MDg5LCAyNDA5MywgMjQwOTcsIDI0MTAzLCAyNDEwNywgMjQxMTEsIDI0MTE1LCAKKyAgICAyNDEyMCwgMjQxMjQsIDI0MTI5LCAyNDEzMywgMjQxMzgsIDI0MTQ0LCAyNDE0OCwgMjQxNTMsIDI0MTU3LCAyNDE2MSwgCisgICAgMjQxNjUsIDI0MTY5LCAyNDE3MywgMjQxNzcsIDI0MTgxLCAyNDE4NywgMjQxOTEsIDI0MTk1LCAyNDE5OSwgMjQyMDQsIAorICAgIDI0MjA4LCAyNDIxMywgMjQyMTcsIDI0MjIyLCAyNDIyNiwgMjQyMzEsIDI0MjM1LCAyNDI0MCwgMjQyNDQsIDI0MjQ5LCAKKyAgICAyNDI1MywgMjQyNTgsIDI0MjYxLCAyNDI2NSwgMjQyNjksIDI0MjczLCAyNDI3NywgMjQyODEsIDI0Mjg1LCAyNDI4OSwgCisgICAgMjQyOTMsIDI0Mjk5LCAyNDMwMywgMjQzMDcsIDI0MzExLCAyNDMxNiwgMjQzMjAsIDI0MzI1LCAyNDMyOSwgMjQzMzQsIAorICAgIDI0MzM4LCAyNDM0MywgMjQzNDcsIDI0MzUyLCAyNDM1NiwgMjQzNjEsIDI0MzY1LCAyNDM3MCwgMjQzNzYsIDI0Mzc5LCAKKyAgICAyNDM4NCwgMjQzODgsIDI0MzkzLCAyNDM5OSwgMjQ0MDUsIDI0NDExLCAyNDQxNywgMjQ0MjMsIDI0NDI5LCAyNDQzNSwgCisgICAgMjQ0MzksIDI0NDQzLCAyNDQ0NywgMjQ0NTEsIDI0NDU1LCAyNDQ1OSwgMjQ0NjMsIDI0NDY3LCAyNDQ3MiwgMjQ0NzYsIAorICAgIDI0NDgxLCAyNDQ4NSwgMjQ0OTAsIDI0NDk0LCAyNDQ5OSwgMjQ1MDMsIDI0NTA4LCAyNDUxMiwgMjQ1MTcsIDI0NTIxLCAKKyAgICAyNDUyNiwgMjQ1MzAsIDI0NTM0LCAyNDUzOCwgMjQ1NDIsIDI0NTQ2LCAyNDU1MCwgMjQ1NTQsIDI0NTYwLCAyNDU2MywgCisgICAgMjQ1NjcsIDI0NTcxLCAyNDU3NiwgMjQ1ODAsIDI0NTg1LCAyNDU4OSwgMjQ1OTQsIDI0NTk4LCAyNDYwMywgMjQ2MDcsIAorICAgIDI0NjEyLCAyNDYxNiwgMjQ2MjEsIDI0NjI1LCAyNDYzMCwgMjQ2MzYsIDI0NjQwLCAyNDY0NiwgMjQ2NTEsIDI0NjU3LCAKKyAgICAyNDY2MSwgMjQ2NjcsIDI0NjcyLCAyNDY3NiwgMjQ2ODAsIDI0Njg0LCAyNDY4OCwgMjQ2OTIsIDI0Njk3LCAyNDcwMSwgCisgICAgMjQ3MDUsIDI0NzEwLCAyNDcxNCwgMjQ3MTksIDI0NzIyLCAyNDcyNiwgMjQ3MzAsIDI0NzM0LCAyNDczOCwgMjQ3NDIsIAorICAgIDI0NzQ2LCAyNDc1MCwgMjQ3NTQsIDI0NzU4LCAyNDc2MiwgMjQ3NjYsIDI0NzcxLCAyNDc3NSwgMjQ3NzksIDI0Nzg1LCAKKyAgICAyNDc4OSwgMjQ3OTUsIDI0Nzk5LCAyNDgwNSwgMjQ4MDksIDI0ODEzLCAyNDgxNywgMjQ4MjEsIDI0ODI1LCAyNDgzMCwgCisgICAgMjQ4MzQsIDI0ODM4LCAyNDg0MiwgMjQ4NDYsIDI0ODUwLCAyNDg1NCwgMjQ4NTgsIDI0ODYyLCAyNDg2NiwgMjQ4NzAsIAorICAgIDI0ODc2LCAyNDg4MiwgMjQ4ODgsIDI0ODk0LCAyNDkwMCwgMjQ5MDUsIDI0OTExLCAyNDkxNywgMjQ5MjMsIDI0OTI3LCAKKyAgICAyNDkzMSwgMjQ5MzUsIDI0OTM5LCAyNDk0MywgMjQ5NDcsIDI0OTUxLCAyNDk1NSwgMjQ5NTksIDI0OTYzLCAyNDk2NywgCisgICAgMjQ5NzEsIDI0OTc1LCAyNDk4MCwgMjQ5ODUsIDI0OTkwLCAyNDk5NSwgMjQ5OTksIDI1MDAzLCAyNTAwNywgMjUwMTEsIAorICAgIDI1MDE1LCAyNTAxOSwgMjUwMjMsIDI1MDI3LCAyNTAzMSwgMjUwMzcsIDI1MDQzLCAyNTA0OSwgMjUwNTUsIDI1MDYxLCAKKyAgICAyNTA2NywgMjUwNzMsIDI1MDc5LCAyNTA4NSwgMjUwODksIDI1MDkzLCAyNTA5NywgMjUxMDEsIDI1MTA1LCAyNTEwOSwgCisgICAgMjUxMTMsIDI1MTE5LCAyNTEyNSwgMjUxMzEsIDI1MTM3LCAyNTE0MywgMjUxNDksIDI1MTU1LCAyNTE2MSwgMjUxNjcsIAorICAgIDI1MTcyLCAyNTE3NywgMjUxODIsIDI1MTg3LCAyNTE5MywgMjUxOTksIDI1MjA1LCAyNTIxMSwgMjUyMTcsIDI1MjIzLCAKKyAgICAyNTIyOSwgMjUyMzUsIDI1MjQxLCAyNTI0NywgMjUyNTMsIDI1MjU4LCAyNTI2NCwgMjUyNzAsIDI1Mjc2LCAyNTI4MSwgCisgICAgMjUyODYsIDI1MjkxLCAyNTI5NiwgMjUzMDEsIDI1MzA2LCAyNTMxMSwgMjUzMTYsIDI1MzIxLCAyNTMyNiwgMjUzMzEsIAorICAgIDI1MzM2LCAyNTM0MSwgMjUzNDYsIDI1MzUxLCAyNTM1NiwgMjUzNjEsIDI1MzY2LCAyNTM3MSwgMjUzNzYsIDI1MzgxLCAKKyAgICAyNTM4NiwgMjUzOTEsIDI1Mzk2LCAyNTQwMSwgMjU0MDYsIDI1NDExLCAyNTQxNiwgMjU0MjEsIDI1NDI2LCAyNTQzMSwgCisgICAgMjU0MzYsIDI1NDQxLCAyNTQ0NiwgMjU0NTEsIDI1NDU2LCAyNTQ2MSwgMjU0NjYsIDI1NDcxLCAyNTQ3NiwgMjU0ODEsIAorICAgIDI1NDg2LCAyNTQ5MCwgMjU0OTUsIDI1NTAwLCAyNTUwNSwgMjU1MTAsIDI1NTE1LCAyNTUyMCwgMjU1MjUsIDI1NTMwLCAKKyAgICAyNTUzNSwgMjU1NDAsIDI1NTQ1LCAyNTU1MCwgMjU1NTUsIDI1NTYwLCAyNTU2NSwgMjU1NzAsIDI1NTc1LCAyNTU4MCwgCisgICAgMjU1ODUsIDI1NTkwLCAyNTU5NSwgMjU2MDAsIDI1NjA1LCAyNTYxMCwgMjU2MTUsIDI1NjIwLCAyNTYyNSwgMjU2MzAsIAorICAgIDI1NjM1LCAyNTY0MCwgMjU2NDUsIDI1NjQ5LCAyNTY1NCwgMjU2NTksIDI1NjY0LCAyNTY2OSwgMjU2NzQsIDI1Njc4LCAKKyAgICAyNTY4MywgMjU2ODksIDI1Njk0LCAyNTY5OSwgMjU3MDQsIDI1NzA5LCAyNTcxNSwgMjU3MjAsIDI1NzI1LCAyNTczMCwgCisgICAgMjU3MzUsIDI1NzQwLCAyNTc0NSwgMjU3NTAsIDI1NzU1LCAyNTc2MCwgMjU3NjUsIDI1NzcwLCAyNTc3NSwgMjU3ODAsIAorICAgIDI1Nzg1LCAyNTc5MCwgMjU3OTUsIDI1ODAwLCAyNTgwNSwgMjU4MTAsIDI1ODE1LCAyNTgyMCwgMjU4MjUsIDI1ODMwLCAKKyAgICAyNTgzNSwgMjU4NDAsIDI1ODQ1LCAyNTg1MCwgMjU4NTUsIDI1ODYwLCAyNTg2NSwgMjU4NzAsIDI1ODc1LCAyNTg4MCwgCisgICAgMjU4ODUsIDI1ODkwLCAyNTg5NSwgMjU5MDAsIDI1OTA1LCAyNTkxMCwgMjU5MTUsIDI1OTIwLCAyNTkyNSwgMjU5MzAsIAorICAgIDI1OTM1LCAyNTk0MSwgMjU5NDYsIDI1OTUxLCAyNTk1NiwgMjU5NjEsIDI1OTY2LCAyNTk3MSwgMjU5NzYsIDI1OTgxLCAKKyAgICAyNTk4NiwgMjU5OTEsIDI1OTk2LCAyNjAwMSwgMjYwMDYsIDI2MDExLCAyNjAxNiwgMjYwMjEsIDI2MDI2LCAyNjAzMSwgCisgICAgMjYwMzYsIDI2MDQxLCAyNjA0NiwgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcxLCAyNjA3NiwgMjYwODEsIAorICAgIDI2MDg2LCAyNjA5MSwgMjYwOTYsIDI2MTAxLCAyNjEwNiwgMjYxMTEsIDI2MTE2LCAyNjEyMSwgMjYxMjYsIDI2MTMxLCAKKyAgICAyNjEzNywgMjYxNDEsIDI2MTQ1LCAyNjE0OSwgMjYxNTMsIDI2MTU3LCAyNjE2MSwgMjYxNjUsIDI2MTY5LCAyNjE3NSwgCisgICAgMjYxODEsIDI2MTg3LCAyNjE5MywgMjYxOTksIDI2MjA1LCAyNjIxMSwgMjYyMTgsIDI2MjI0LCAyNjIyOSwgMjYyMzQsIAorICAgIDI2MjM5LCAyNjI0NCwgMjYyNDksIDI2MjU0LCAyNjI1OSwgMjYyNjQsIDI2MjY5LCAyNjI3NCwgMjYyNzksIDI2Mjg0LCAKKyAgICAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzE0LCAyNjMxOSwgMjYzMjQsIDI2MzI5LCAyNjMzNCwgCisgICAgMjYzMzksIDI2MzQ0LCAyNjM0OSwgMjYzNTQsIDI2MzU5LCAyNjM2NCwgMCwgMCwgMCwgMjYzNzEsIDI2MzgxLCAyNjM4NSwgCisgICAgMjYzOTIsIDI2Mzk2LCAyNjQwMCwgMjY0MDQsIDI2NDEyLCAyNjQxNiwgMjY0MjEsIDI2NDI2LCAyNjQzMSwgMjY0MzUsIAorICAgIDI2NDQwLCAyNjQ0NSwgMjY0NDgsIDI2NDUyLCAyNjQ1NiwgMjY0NjUsIDI2NDY5LCAyNjQ3MywgMjY0NzksIDI2NDgzLCAKKyAgICAyNjQ4NywgMjY0OTUsIDI2NDk5LCAyNjUwNywgMjY1MTMsIDI2NTE5LCAyNjUyNSwgMjY1MzEsIDI2NTQxLCAyNjU0NywgCisgICAgMjY1NTEsIDI2NTYwLCAyNjU2MywgMjY1NjksIDI2NTczLCAyNjU3OSwgMjY1ODQsIDI2NTkwLCAyNjU5OCwgMjY2MDQsIAorICAgIDI2NjA5LCAyNjYxNiwgMjY2MjEsIDI2NjI1LCAyNjYyOSwgMjY2MzksIDI2NjQ1LCAyNjY0OSwgMjY2NTksIDI2NjY1LCAKKyAgICAyNjY2OSwgMjY2NzMsIDI2NjgwLCAyNjY4OCwgMjY2OTQsIDI2NzAwLCAyNjcwOSwgMjY3MTMsIDI2NzE3LCAyNjcyMSwgCisgICAgMjY3MjksIDI2NzM2LCAyNjc0MCwgMjY3NDQsIDI2NzQ4LCAyNjc1MiwgMjY3NTYsIDI2NzYwLCAyNjc2NCwgMjY3NjgsIAorICAgIDI2NzcyLCAyNjc3NiwgMjY3ODAsIDI2Nzg1LCAyNjc5MCwgMjY3OTUsIDI2Nzk5LCAyNjgwMywgMjY4MDcsIDI2ODExLCAKKyAgICAyNjgxNSwgMjY4MTksIDI2ODI3LCAyNjgzNSwgMjY4NDMsIDI2ODUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjg1OSwgCisgICAgMjY4NjMsIDI2ODY3LCAyNjg3MSwgMjY4NzUsIDI2ODgwLCAyNjg4NSwgMjY4OTAsIDI2ODk1LCAyNjkwMCwgMjY5MDQsIAorICAgIDI2OTA5LCAyNjkxMywgMCwgMjY5MTcsIDI2OTIyLCAyNjkyNywgMjY5MzIsIDI2OTM2LCAyNjk0MSwgMjY5NDYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTUxLCAyNjk1NSwgMjY5NTksIDI2OTYzLCAyNjk2NywgMjY5NzIsIAorICAgIDI2OTc3LCAyNjk4MiwgMjY5ODcsIDI2OTkyLCAyNjk5NiwgMjcwMDEsIDI3MDA1LCAyNzAwOSwgMjcwMTQsIDI3MDE5LCAKKyAgICAyNzAyNCwgMjcwMjksIDI3MDMzLCAyNzAzOCwgMjcwNDMsIDI3MDQ4LCAyNzA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcwNTksIDI3MDYzLCAyNzA2NywgMjcwNzEsIDI3MDc1LCAyNzA4MCwgMjcwODUsIDI3MDkwLCAyNzA5NSwgMjcxMDAsIAorICAgIDI3MTA0LCAyNzEwOSwgMjcxMTMsIDI3MTE3LCAyNzEyMiwgMjcxMjcsIDI3MTMyLCAyNzEzNywgMjcxNDEsIDI3MTQ2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzE1MSwgMjcxNTUsIDI3MTU5LCAyNzE2MywgMjcxNjcsIAorICAgIDI3MTcyLCAyNzE3NywgMjcxODIsIDI3MTg3LCAyNzE5MiwgMjcxOTYsIDI3MjAxLCAyNzIwNSwgMCwgMjcyMDksIDI3MjE0LCAKKyAgICAyNzIxOSwgMCwgMjcyMjQsIDI3MjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIzNCwgMjcyMzcsIAorICAgIDI3MjQxLCAyNzI0NSwgMjcyNDksIDI3MjUzLCAyNzI1NywgMjcyNjEsIDI3MjY1LCAyNzI2OSwgMjcyNzMsIDI3Mjc3LCAKKyAgICAyNzI4MSwgMjcyODUsIDI3Mjg5LCAyNzI5MywgMjcyOTcsIDI3MzAxLCAyNzMwNCwgMjczMDgsIDI3MzEyLCAyNzMxNiwgCisgICAgMjczMjAsIDI3MzI0LCAyNzMyOCwgMjczMzIsIDI3MzM2LCAyNzM0MCwgMjczNDQsIDI3MzQ4LCAyNzM1MiwgMjczNTYsIAorICAgIDI3MzYwLCAyNzM2MywgMjczNjcsIDI3MzcxLCAyNzM3NywgMjczODMsIDI3Mzg5LCAyNzM5NSwgMjc0MDEsIDI3NDA3LCAKKyAgICAyNzQxMywgMjc0MTksIDI3NDI1LCAyNzQzMSwgMjc0MzcsIDI3NDQzLCAyNzQ0OSwgMjc0NTUsIDI3NDY0LCAyNzQ3MywgCisgICAgMjc0NzksIDI3NDg1LCAyNzQ5MSwgMjc0OTYsIDI3NTAwLCAyNzUwNSwgMjc1MTAsIDI3NTE1LCAyNzUxOSwgMjc1MjQsIAorICAgIDI3NTI5LCAyNzUzNCwgMjc1MzgsIDI3NTQzLCAyNzU0NywgMjc1NTIsIDI3NTU3LCAyNzU2MiwgMjc1NjcsIDI3NTcxLCAKKyAgICAyNzU3NSwgMjc1NzksIDI3NTgzLCAyNzU4NywgMjc1OTEsIDI3NTk1LCAyNzU5OSwgMjc2MDMsIDI3NjA3LCAyNzYxMywgCisgICAgMjc2MTcsIDI3NjIxLCAyNzYyNSwgMjc2MjksIDI3NjMzLCAyNzY0MSwgMjc2NDcsIDI3NjUxLCAyNzY1NywgMjc2NjEsIAorICAgIDI3NjY3LCAyNzY3MSwgMCwgMCwgMjc2NzUsIDI3Njc5LCAyNzY4MiwgMjc2ODUsIDI3Njg4LCAyNzY5MSwgMjc2OTQsIAorICAgIDI3Njk3LCAyNzcwMSwgMjc3MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NzA4LCAyNzcxNiwgMjc3MjQsIDI3NzMyLCAyNzc0MCwgCisgICAgMjc3NDgsIDI3NzU2LCAyNzc2NCwgMjc3NzIsIDI3NzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzc4OCwgMjc3OTEsIDI3Nzk0LCAKKyAgICAyNzc5NywgMjc4MDIsIDI3ODA1LCAyNzgxMCwgMjc4MTcsIDI3ODI1LCAyNzgzMCwgMjc4MzcsIDI3ODQwLCAyNzg0NywgCisgICAgMjc4NTQsIDI3ODYxLCAwLCAyNzg2NSwgMjc4NjksIDI3ODcyLCAyNzg3NSwgMjc4NzgsIDI3ODgxLCAyNzg4NCwgMjc4ODcsIAorICAgIDI3ODkxLCAyNzg5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4OTgsIDI3OTAxLCAyNzkwNCwgMjc5MDcsIDI3OTEwLCAyNzkxMywgCisgICAgMjc5MTcsIDI3OTIxLCAyNzkyNSwgMjc5MjksIDI3OTMzLCAyNzkzNywgMjc5NDAsIDI3OTQ0LCAyNzk0OCwgMjc5NTEsIAorICAgIDI3OTU1LCAyNzk1OSwgMjc5NjMsIDI3OTY3LCAyNzk3MSwgMjc5NzUsIDI3OTc5LCAyNzk4MiwgMjc5ODYsIDI3OTkwLCAKKyAgICAyNzk5NCwgMjc5OTcsIDI4MDAxLCAyODAwNSwgMjgwMDksIDI4MDEzLCAyODAxNywgMjgwMjEsIDI4MDI1LCAyODAyOSwgCisgICAgMjgwMzYsIDI4MDQxLCAyODA0NiwgMjgwNTEsIDI4MDU2LCAyODA2MiwgMjgwNjgsIDI4MDc0LCAyODA4MCwgMjgwODUsIAorICAgIDI4MDkxLCAyODA5NywgMjgxMDIsIDI4MTA4LCAyODExNCwgMjgxMjAsIDI4MTI2LCAyODEzMiwgMjgxMzcsIDI4MTQzLCAKKyAgICAyODE0OCwgMjgxNTQsIDI4MTYwLCAyODE2NiwgMjgxNzIsIDI4MTc4LCAyODE4MywgMjgxODgsIDI4MTk0LCAyODIwMCwgCisgICAgMjgyMDUsIDI4MjExLCAyODIxNiwgMjgyMjIsIDI4MjI3LCAyODIzMiwgMjgyMzgsIDI4MjQ0LCAyODI1MCwgMjgyNTYsIAorICAgIDI4MjYyLCAyODI2OCwgMjgyNzQsIDI4MjgwLCAyODI4NiwgMjgyOTIsIDI4Mjk4LCAyODMwNCwgMjgzMDksIDI4MzE0LCAKKyAgICAyODMyMCwgMjgzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MzMyLCAyODM0MSwgMjgzNTAsIDI4MzU4LCAyODM2NiwgCisgICAgMjgzNzYsIDI4Mzg0LCAyODM5MywgMjg0MDAsIDI4NDA3LCAyODQxNCwgMjg0MjIsIDI4NDMwLCAyODQzOCwgMjg0NDYsIAorICAgIDI4NDU0LCAyODQ2MiwgMjg0NzAsIDI4NDc4LCAyODQ4NSwgMjg0OTMsIDI4NTAxLCAyODUwOSwgMjg1MTcsIDI4NTI1LCAKKyAgICAyODUzNSwgMjg1NDUsIDI4NTU1LCAyODU2NSwgMjg1NzUsIDI4NTg1LCAyODU5NSwgMjg2MDUsIDI4NjE1LCAyODYyNSwgCisgICAgMjg2MzUsIDI4NjQ1LCAyODY1NSwgMjg2NjUsIDI4NjczLCAyODY4MSwgMjg2OTEsIDI4Njk5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyODcwOSwgMjg3MTMsIDI4NzE3LCAyODcyMSwgMjg3MjUsIDI4NzI5LCAyODczMywgMjg3MzcsIDI4NzQxLCAyODc0NSwgCisgICAgMjg3NDksIDI4NzUzLCAyODc1NywgMjg3NjEsIDI4NzY1LCAyODc2OSwgMjg3NzMsIDI4Nzc3LCAyODc4MSwgMjg3ODUsIAorICAgIDI4Nzg5LCAyODc5MywgMjg3OTcsIDI4ODAxLCAyODgwNywgMjg4MTEsIDI4ODE3LCAyODgyMSwgMjg4MjcsIDI4ODMxLCAKKyAgICAyODgzNywgMjg4NDEsIDI4ODQ1LCAyODg0OSwgMjg4NTMsIDI4ODU3LCAyODg2MSwgMjg4NjcsIDI4ODczLCAyODg3OSwgCisgICAgMjg4ODUsIDI4ODkxLCAyODg5NywgMjg5MDIsIDI4OTA4LCAyODkxNCwgMjg5MjAsIDI4OTI2LCAyODkzMywgMjg5MzksIAorICAgIDI4OTQ0LCAyODk0OSwgMjg5NTMsIDI4OTU3LCAyODk2MSwgMjg5NjUsIDI4OTY5LCAyODk3MywgMjg5NzcsIDI4OTgzLCAKKyAgICAyODk4OSwgMjg5OTUsIDI5MDAwLCAyOTAwNywgMjkwMTIsIDI5MDE3LCAyOTAyMywgMjkwMjgsIDI5MDM1LCAyOTA0MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkwNDgsIDI5MDU0LCAyOTA1OCwgMjkwNjMsIDI5MDY4LCAyOTA3MywgCisgICAgMjkwNzgsIDI5MDgzLCAyOTA4OCwgMjkwOTMsIDI5MDk4LCAyOTEwMywgMjkxMDgsIDI5MTEzLCAyOTExOCwgMjkxMjMsIAorICAgIDI5MTI4LCAyOTEzMiwgMjkxMzcsIDI5MTQyLCAyOTE0NywgMjkxNTEsIDI5MTU1LCAyOTE2MCwgMjkxNjUsIDI5MTcwLCAKKyAgICAyOTE3NSwgMjkxODAsIDI5MTg1LCAyOTE4OSwgMjkxOTQsIDAsIDI5MTk5LCAyOTIwNCwgMjkyMDksIDI5MjE0LCAyOTIyMCwgCisgICAgMjkyMjYsIDI5MjMyLCAyOTIzOCwgMjkyNDMsIDI5MjQ4LCAyOTI1NCwgMjkyNjEsIDAsIDAsIDAsIDAsIDI5MjY4LCAKKyAgICAyOTI3MywgMjkyNzksIDI5Mjg1LCAyOTI5MSwgMjkyOTcsIDI5MzAyLCAyOTMwNywgMjkzMTMsIDI5MzE5LCAyOTMyNCwgCisgICAgMjkzMjksIDAsIDAsIDAsIDAsIDI5MzM0LCAwLCAwLCAwLCAyOTMzOSwgMjkzNDQsIDI5MzQ5LCAyOTM1NCwgMjkzNTgsIAorICAgIDI5MzYyLCAyOTM2NiwgMjkzNzAsIDI5Mzc0LCAyOTM3OCwgMjkzODMsIDI5Mzg3LCAyOTM5MiwgMjkzOTcsIDI5NDAzLCAKKyAgICAyOTQwOSwgMjk0MTUsIDI5NDIxLCAyOTQyNiwgMjk0MzIsIDI5NDM4LCAyOTQ0NCwgMjk0NDksIDI5NDU1LCAyOTQ2MCwgCisgICAgMjk0NjYsIDI5NDcyLCAyOTQ3NywgMjk0ODMsIDI5NDg5LCAyOTQ5NSwgMjk1MDEsIDI5NTA2LCAyOTUxMSwgMjk1MTcsIAorICAgIDI5NTIzLCAyOTUyOCwgMjk1MzQsIDI5NTM5LCAyOTU0NSwgMjk1NTAsIDI5NTU2LCAwLCAwLCAyOTU2MiwgMjk1NjgsIAorICAgIDI5NTc0LCAyOTU4MCwgMjk1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NTkyLCAyOTYwMSwgCisgICAgMjk2MTAsIDI5NjE4LCAyOTYyNywgMjk2MzYsIDI5NjQ0LCAyOTY1MywgMjk2NjIsIDI5NjcxLCAyOTY4MCwgMjk2ODgsIAorICAgIDI5Njk3LCAyOTcwNiwgMjk3MTQsIDI5NzIzLCAyOTczMiwgMjk3NDEsIDI5NzUwLCAyOTc1OSwgMjk3NjgsIDI5Nzc2LCAKKyAgICAyOTc4NSwgMjk3OTMsIDI5ODAxLCAyOTgxMCwgMjk4MTgsIDI5ODI3LCAyOTgzNiwgMjk4NDUsIDI5ODU0LCAyOTg2MywgCisgICAgMjk4NzIsIDI5ODgwLCAyOTg4OSwgMjk4OTgsIDI5OTA2LCAyOTkxNSwgMjk5MjQsIDI5OTMzLCAyOTk0MiwgMjk5NTEsIAorICAgIDI5OTYwLCAyOTk2OSwgMCwgMCwgMCwgMCwgMjk5NzgsIDI5OTg4LCAyOTk5NywgMzAwMDYsIDMwMDE0LCAzMDAyMywgCisgICAgMzAwMzEsIDMwMDQwLCAzMDA0OCwgMzAwNTcsIDMwMDY2LCAzMDA3NSwgMzAwODQsIDMwMDkzLCAzMDEwMiwgMzAxMTEsIAorICAgIDMwMTIwLCAzMDEyOSwgMzAxMzgsIDMwMTQ3LCAzMDE1NiwgMzAxNjUsIDMwMTc0LCAzMDE4MywgMzAxOTIsIDMwMjAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMDIwOCwgMzAyMTYsIDMwMjIzLCAzMDIzMCwgMzAyMzcsIDMwMjQ0LCAzMDI1MSwgMzAyNTgsIAorICAgIDMwMjY2LCAzMDI3MywgMzAyODEsIDAsIDAsIDAsIDMwMjg5LCAzMDI5NywgMzAzMDUsIDMwMzA5LCAzMDMxNSwgMzAzMjEsIAorICAgIDMwMzI3LCAzMDMzMywgMzAzMzksIDMwMzQ1LCAzMDM1MSwgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzUsIDMwMzgxLCAKKyAgICAzMDM4NywgMzAzOTMsIDMwMzk5LCAzMDQwMywgMzA0MDksIDMwNDE1LCAzMDQyMSwgMzA0MjcsIDMwNDMzLCAzMDQzOSwgCisgICAgMzA0NDUsIDMwNDUxLCAzMDQ1NywgMzA0NjMsIDMwNDY5LCAzMDQ3NSwgMzA0ODEsIDMwNDg3LCAzMDQ5MywgMzA0OTcsIAorICAgIDMwNTAyLCAzMDUwNywgMzA1MTIsIDMwNTE2LCAzMDUyMSwgMzA1MjUsIDMwNTMwLCAzMDUzNSwgMzA1NDAsIDMwNTQ1LCAKKyAgICAzMDU1MCwgMzA1NTUsIDMwNTYwLCAzMDU2NSwgMzA1NzAsIDMwNTc0LCAzMDU3OSwgMzA1ODQsIDMwNTg5LCAzMDU5NCwgCisgICAgMzA1OTgsIDMwNjAyLCAzMDYwNywgMzA2MTIsIDMwNjE3LCAzMDYyMiwgMCwgMCwgMzA2MjgsIDMwNjMyLCAzMDYzOSwgCisgICAgMzA2NDQsIDMwNjUwLCAzMDY1NiwgMzA2NjEsIDMwNjY3LCAzMDY3MywgMzA2NzgsIDMwNjg0LCAzMDY5MCwgMzA2OTYsIAorICAgIDMwNzAyLCAzMDcwOCwgMzA3MTMsIDMwNzE4LCAzMDcyNCwgMzA3MjksIDMwNzM1LCAzMDc0MCwgMzA3NDYsIDMwNzUyLCAKKyAgICAzMDc1OCwgMzA3NjQsIDMwNzY5LCAzMDc3NCwgMzA3NzksIDMwNzg1LCAzMDc5MSwgMzA3OTYsIDMwODAyLCAzMDgwOCwgCisgICAgMzA4MTIsIDMwODE3LCAzMDgyMiwgMzA4MjcsIDMwODMyLCAzMDgzNywgMzA4NDIsIDMwODQ3LCAzMDg1MywgMzA4NTksIAorICAgIDMwODY1LCAzMDg3MCwgMzA4NzUsIDMwODc5LCAzMDg4NCwgMzA4ODgsIDMwODkzLCAzMDg5NywgMzA5MDIsIDMwOTA3LCAKKyAgICAzMDkxMiwgMzA5MTcsIDMwOTI0LCAzMDkzMSwgMzA5MzgsIDMwOTQ4LCAzMDk1NywgMzA5NjQsIDMwOTcwLCAzMDk4MSwgCisgICAgMzA5ODYsIDMwOTkyLCAwLCAzMDk5OCwgMzEwMDMsIDMxMDA4LCAzMTAxNiwgMzEwMjIsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIAorICAgIDMxMDQ3LCAzMTA1MywgMzEwNTgsIDMxMDY0LCAzMTA2OSwgMzEwNzYsIDMxMDgyLCAzMTA4NywgMzEwOTMsIDMxMDk5LCAKKyAgICAzMTEwNSwgMzExMTIsIDMxMTE5LCAzMTEyNiwgMzExMzEsIDMxMTM2LCAzMTE0MywgMzExNTAsIDMxMTU3LCAzMTE2NCwgCisgICAgMzExNzEsIDAsIDAsIDMxMTc4LCAzMTE4NSwgMzExOTIsIDMxMTk4LCAzMTIwNCwgMzEyMTAsIDMxMjE2LCAzMTIyMiwgCisgICAgMzEyMjgsIDMxMjM1LCAzMTI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyNDgsIDMxMjU0LCAzMTI1OSwgMzEyNjQsIDMxMjY5LCAKKyAgICAzMTI3NCwgMzEyNzksIDMxMjg0LCAzMTI5MCwgMzEyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMzAxLCAzMTMwNiwgMzEzMTEsIAorICAgIDMxMzE2LCAzMTMyMSwgMzEzMjYsIDMxMzMxLCAzMTM0MCwgMzEzNDcsIDMxMzUyLCAzMTM1NywgMzEzNjIsIDMxMzY3LCAKKyAgICAzMTM3MiwgMCwgMCwgMzEzNzcsIDMxMzg0LCAzMTM4NywgMzEzOTAsIDMxMzkzLCAzMTM5OCwgMzE0MDIsIDMxNDA4LCAKKyAgICAzMTQxMiwgMzE0MTcsIDMxNDI0LCAzMTQzMiwgMzE0MzYsIDMxNDQxLCAzMTQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE0NTAsIDMxNDU2LCAzMTQ2MiwgMzE0NjYsIDMxNDcwLCAzMTQ3NCwgCisgICAgMzE0NzgsIDMxNDg0LCAzMTQ4OCwgMzE0OTQsIDMxNDk4LCAzMTUwNCwgMzE1MTAsIDMxNTE4LCAzMTUyNCwgMzE1MzIsIAorICAgIDMxNTM2LCAzMTU0MCwgMzE1NDQsIDMxNTUwLCAzMTU1MywgMzE1NTksIDMxNTYzLCAzMTU2OSwgMzE1NzMsIDMxNTc3LCAKKyAgICAzMTU4MywgMzE1ODcsIDMxNTkzLCAzMTU5NywgMzE2MDMsIDMxNjExLCAzMTYxOSwgMzE2MjcsIDMxNjMzLCAzMTYzNywgCisgICAgMzE2NDMsIDMxNjQ3LCAzMTY1MywgMzE2NTcsIDMxNjYwLCAzMTY2NiwgMzE2NzAsIDMxNjc2LCAzMTY3OSwgMzE2ODIsIAorICAgIDMxNjg2LCAzMTY5MCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTAsIDMxNzEzLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKKyAgICAzMTczNCwgMzE3MzksIDMxNzQ2LCAzMTc1MywgMzE3NjIsIDMxNzY5LCAzMTc3OCwgMzE3ODMsIDMxNzkwLCAzMTc5NywgCisgICAgMzE4MDYsIDMxODExLCAzMTgxOCwgMzE4MjMsIDMxODI5LCAzMTgzNSwgMzE4NDEsIDMxODQ3LCAzMTg1MywgMzE4NTksIDAsIAorICAgIDAsIDAsIDAsIDMxODY1LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMzE4ODEsIDMxODg0LCAzMTg4NywgMzE4OTEsIAorICAgIDMxODk0LCAzMTg5OCwgMzE5MDEsIDMxOTA0LCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjUsIDMxOTMwLCAKKyAgICAzMTkzNSwgMzE5NDAsIDMxOTQ1LCAzMTk1MiwgMzE5NTcsIDMxOTYyLCAzMTk2NywgMzE5NzIsIDMxOTc5LCAzMTk4NSwgCisgICAgMzE5OTEsIDMxOTk3LCAzMjAwMywgMzIwMDksIDMyMDE4LCAzMjAyNywgMzIwMzMsIDMyMDM5LCAzMjA0NywgMzIwNTUsIAorICAgIDMyMDY0LCAzMjA3MywgMzIwODEsIDMyMDg5LCAzMjA5OCwgMzIxMDcsIDAsIDAsIDAsIDMyMTE1LCAzMjEyMCwgMzIxMjUsIAorICAgIDMyMTMwLCAzMjEzNCwgMzIxMzgsIDMyMTQyLCAzMjE0NywgMzIxNTEsIDMyMTU1LCAzMjE2MCwgMzIxNjQsIDMyMTY5LCAKKyAgICAzMjE3NCwgMzIxNzksIDMyMTg0LCAzMjE4OSwgMzIxOTQsIDMyMTk5LCAzMjIwNCwgMzIyMDksIDMyMjE0LCAzMjIxOCwgCisgICAgMzIyMjMsIDMyMjI4LCAzMjIzMywgMzIyMzcsIDMyMjQxLCAzMjI0NiwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIAorICAgIDMyMjcwLCAzMjI3NiwgMzIyODIsIDMyMjg4LCAzMjI5NCwgMzIzMDAsIDMyMzA2LCAzMjMxMiwgMzIzMTgsIDMyMzI0LCAKKyAgICAzMjMyOSwgMzIzMzQsIDMyMzQxLCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2NCwgMzIzNjgsIDMyMzcyLCAzMjM3NiwgCisgICAgMzIzODAsIDMyMzg0LCAzMjM4OCwgMzIzOTMsIDMyMzk3LCAzMjQwMiwgMzI0MDYsIDMyNDExLCAzMjQxNiwgMzI0MjEsIAorICAgIDMyNDI3LCAzMjQzMywgMzI0MzcsIDMyNDQzLCAzMjQ0NywgMzI0NTMsIDMyNDU5LCAzMjQ2NCwgMzI0NzEsIDMyNDc1LCAKKyAgICAzMjQ4MSwgMzI0ODYsIDMyNDkzLCAzMjQ5OCwgMzI1MDUsIDMyNTEyLCAzMjUxNywgMzI1MjQsIDMyNTI5LCAzMjUzNCwgCisgICAgMzI1MzksIDMyNTQ2LCAzMjU1MCwgMzI1NTYsIDMyNTYzLCAzMjU3MCwgMzI1NzUsIDMyNTgyLCAzMjU4OSwgMzI1OTMsIAorICAgIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE2LCAzMjYyMSwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAKKyAgICAzMjY0OSwgMzI2NTQsIDMyNjYxLCAzMjY2NywgMzI2NzIsIDMyNjc5LCAzMjY4NCwgMzI2OTEsIDMyNjk2LCAzMjcwNiwgCisgICAgMzI3MTIsIDMyNzE4LCAzMjcyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3MjYsIDMyNzM1LCAzMjc0MiwgMzI3NDksIAorICAgIDMyNzU2LCAzMjc2MCwgMzI3NjUsIDMyNzcwLCAzMjc3NSwgMzI3ODAsIDMyNzg1LCAzMjc5MCwgMzI3OTUsIDMyODAwLCAKKyAgICAzMjgwNSwgMzI4MTAsIDMyODE1LCAzMjgyMCwgMzI4MjUsIDMyODI5LCAzMjgzNCwgMzI4MzksIDMyODQ0LCAzMjg0OSwgCisgICAgMzI4NTQsIDMyODU5LCAzMjg2MywgMzI4NjgsIDMyODczLCAzMjg3OCwgMzI4ODMsIDMyODg3LCAzMjg5MiwgMzI4OTcsIAorICAgIDMyOTAxLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMSwgMzI5MjYsIDMyOTMwLCAzMjkzNiwgMzI5NDMsIDMyOTQ5LCAKKyAgICAzMjk1NCwgMzI5NTksIDMyOTY1LCAzMjk3MCwgMzI5NzYsIDMyOTgxLCAzMjk4NywgMzI5OTMsIDMyOTk4LCAzMzAwNCwgCisgICAgMzMwMTAsIDMzMDE1LCAzMzAyMSwgMzMwMjcsIDMzMDMzLCAzMzAzOCwgMCwgMCwgMCwgMzMwNDMsIDMzMDQ5LCAzMzA1OSwgCisgICAgMzMwNjUsIDMzMDczLCAzMzA3OSwgMzMwODQsIDMzMDg4LCAzMzA5MiwgMzMwOTYsIDMzMTAwLCAzMzEwNCwgMzMxMDgsIAorICAgIDMzMTEzLCAzMzExNywgMCwgMCwgMCwgMzMxMjIsIDMzMTI3LCAzMzEzMiwgMzMxMzcsIDMzMTQ0LCAzMzE1MCwgMzMxNTYsIAorICAgIDMzMTYyLCAzMzE2OCwgMzMxNzQsIDMzMTgwLCAzMzE4NywgMzMxOTMsIDMzMjAwLCAzMzIwNywgMzMyMTQsIDMzMjIxLCAKKyAgICAzMzIyOCwgMzMyMzUsIDMzMjQyLCAzMzI0OSwgMzMyNTYsIDMzMjYzLCAzMzI3MCwgMzMyNzcsIDMzMjg0LCAzMzI5MSwgCisgICAgMzMyOTgsIDMzMzA1LCAzMzMxMiwgMzMzMTksIDMzMzI2LCAzMzMzMywgMzMzNDAsIDMzMzQ3LCAzMzM1NCwgMzMzNjEsIAorICAgIDMzMzY4LCAzMzM3NSwgMzMzODIsIDMzMzg5LCAzMzM5NiwgMzM0MDMsIDMzNDEwLCAzMzQxOCwgMzM0MjYsIDMzNDM0LCAKKyAgICAzMzQ0MCwgMzM0NDYsIDMzNDUyLCAzMzQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzM0NjksIDMzNDc3LCAzMzQ4NSwgMzM0OTMsIDMzNTAxLCAzMzUxMSwgMzM1MjEsIDMzNTMxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzMzU0MSwgMzM1NDYsIDMzNTUxLCAzMzU1NiwgMzM1NjEsIDMzNTcwLCAzMzU4MSwgMzM1OTAsIDMzNjAxLCAKKyAgICAzMzYwNywgMzM2MjAsIDMzNjI2LCAzMzYzMywgMzM2NDAsIDMzNjQ1LCAzMzY1MSwgMzM2NTcsIDMzNjY4LCAzMzY3NywgCisgICAgMzM2ODQsIDMzNjkxLCAzMzcwMCwgMzM3MDcsIDMzNzE2LCAzMzcyNiwgMzM3MzYsIDMzNzQzLCAzMzc1MCwgMzM3NTcsIAorICAgIDMzNzY3LCAzMzc3MiwgMzM3ODAsIDMzNzg2LCAzMzc5NCwgMzM4MDMsIDMzODA4LCAzMzgxNSwgMzM4MjEsIDMzODI2LCAwLCAKKyAgICAzMzgzMSwgMzM4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDMzODQ0LCAzMzg0OSwgMzM4NTUsIDMzODYyLCAzMzg3MCwgMzM4NzYsIAorICAgIDMzODgyLCAzMzg4OCwgMzM4OTMsIDMzOTAwLCAzMzkwNiwgMzM5MTIsIDMzOTE4LCAzMzkyNiwgMzM5MzIsIDMzOTQwLCAKKyAgICAzMzk0NSwgMzM5NTEsIDMzOTU3LCAzMzk2NCwgMzM5NzIsIDMzOTc5LCAzMzk4NSwgMzM5OTIsIDMzOTk5LCAzNDAwNSwgCisgICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM2LCAzNDA0NCwgMzQwNTMsIDM0MDU5LCAzNDA2NSwgMzQwNzEsIAorICAgIDM0MDc3LCAzNDA4NSwgMzQwODksIDM0MDk1LCAzNDEwMSwgMzQxMDcsIDM0MTEzLCAzNDExOSwgMzQxMjUsIDM0MTI5LCAKKyAgICAzNDEzNCwgMzQxMzksIDM0MTQ2LCAzNDE1MSwgMzQxNTUsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDM0MTc1LCAzNDE4MCwgCisgICAgMzQxODUsIDM0MTg5LCAzNDE5NCwgMzQxOTksIDM0MjA2LCAzNDIxMCwgMzQyMTUsIDM0MjIwLCAzNDIyNCwgMzQyMjksIAorICAgIDM0MjMzLCAzNDIzOCwgMzQyNDIsIDM0MjQ4LCAzNDI1MywgMzQyNjAsIDM0MjY1LCAzNDI3MCwgMzQyNzQsIDM0Mjc5LCAKKyAgICAzNDI4NCwgMzQyOTEsIDM0Mjk2LCAzNDMwMiwgMzQzMDcsIDM0MzEyLCAzNDMxNywgMzQzMjEsIDM0MzI2LCAzNDMzMywgCisgICAgMzQzNDAsIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzYwLCAzNDM2NywgMzQzNzIsIDM0Mzc3LCAzNDM4MiwgMzQzODgsIAorICAgIDM0MzkzLCAzNDM5OSwgMzQ0MDQsIDM0NDEwLCAzNDQxNiwgMzQ0MjIsIDM0NDI5LCAzNDQzNiwgMzQ0NDMsIDM0NDUwLCAKKyAgICAzNDQ1NywgMzQ0NjQsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwNCwgMzQ1MTMsIDM0NTIyLCAzNDUzMSwgCisgICAgMzQ1NDMsIDM0NTUyLCAzNDU2MSwgMzQ1NzAsIDM0NTc3LCAzNDU4MiwgMzQ1ODksIDM0NTk3LCAzNDYwNSwgMzQ2MTIsIAorICAgIDM0NjE5LCAzNDYyNiwgMzQ2MzMsIDM0NjQxLCAzNDY1MCwgMzQ2NTksIDM0NjY4LCAzNDY3NywgMzQ2ODYsIDM0Njk1LCAKKyAgICAzNDcwNCwgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ5LCAzNDc1OCwgMzQ3NjcsIDM0Nzc1LCAzNDc4NCwgCisgICAgMzQ3OTUsIDM0ODAzLCAzNDgxMiwgMzQ4MjMsIDM0ODMyLCAzNDg0MSwgMzQ4NTAsIDM0ODU5LCAzNDg2NywgMzQ4NzYsIAorICAgIDM0ODgzLCAzNDg4OCwgMzQ4OTYsIDM0OTAxLCAzNDkwOCwgMzQ5MTMsIDM0OTIyLCAzNDkyOCwgMzQ5MzUsIDM0OTQyLCAKKyAgICAzNDk0NywgMzQ5NTIsIDM0OTYwLCAzNDk2OCwgMzQ5NzcsIDM0OTg2LCAzNDk5MSwgMzQ5OTgsIDM1MDA5LCAzNTAxNywgCisgICAgMzUwMjYsIDM1MDMyLCAzNTAzOCwgMzUwNDMsIDM1MDUwLCAzNTA1NSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIAorICAgIDM1MDg2LCAzNTA5MywgMzUwOTgsIDM1MTA3LCAzNTExNSwgMzUxMjAsIDM1MTI1LCAzNTEzMiwgMzUxMzksIDM1MTQzLCAKKyAgICAzNTE0NywgMzUxNTAsIDM1MTUzLCAzNTE1NiwgMzUxNTksIDM1MTYyLCAzNTE2NSwgMzUxNzIsIDM1MTc1LCAzNTE3OCwgCisgICAgMzUxODMsIDM1MTg3LCAzNTE5MSwgMzUxOTUsIDM1MTk5LCAzNTIwMywgMzUyMTIsIDM1MjE4LCAzNTIyNCwgMzUyMzAsIAorICAgIDM1MjM4LCAzNTI0NiwgMzUyNTIsIDM1MjU4LCAzNTI2NSwgMzUyNzEsIDM1Mjc2LCAzNTI4MiwgMzUyODksIDM1Mjk1LCAKKyAgICAzNTMwMiwgMzUzMDgsIDM1MzE2LCAzNTMyMSwgMzUzMjcsIDM1MzMzLCAzNTMzOSwgMzUzNDUsIDM1MzUxLCAzNTM1NywgCisgICAgMzUzNjMsIDM1Mzc0LCAzNTM4NCwgMzUzOTAsIDM1Mzk2LCAzNTQwNiwgMzU0MTIsIDM1NDIwLCAzNTQyOCwgMzU0MzYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM1NDQxLCAzNTQ0OCwgMzU0NTUsIDM1NDYwLCAzNTQ2OSwgMzU0NzcsIDM1NDg1LCAzNTQ5MiwgCisgICAgMzU0OTksIDM1NTA2LCAzNTUxMywgMzU1MjEsIDM1NTI5LCAzNTUzOSwgMzU1NDksIDM1NTU3LCAzNTU2NSwgMzU1NzMsIAorICAgIDM1NTgxLCAzNTU5MCwgMzU1OTksIDM1NjA3LCAzNTYxNSwgMzU2MjQsIDM1NjMzLCAzNTY0MywgMzU2NTMsIDM1NjYyLCAKKyAgICAzNTY3MSwgMzU2NzksIDM1Njg3LCAzNTY5NSwgMzU3MDMsIDM1NzEzLCAzNTcyMywgMzU3MzEsIDM1NzM5LCAzNTc0NywgCisgICAgMzU3NTUsIDM1NzYzLCAzNTc3MSwgMzU3NzksIDM1Nzg3LCAzNTc5NSwgMzU4MDMsIDM1ODExLCAzNTgxOSwgMzU4MjgsIAorICAgIDM1ODM3LCAzNTg0NiwgMzU4NTUsIDM1ODY1LCAzNTg3NSwgMzU4ODIsIDM1ODg5LCAzNTg5NywgMzU5MDUsIDM1OTE0LCAKKyAgICAzNTkyMywgMzU5MzEsIDM1OTM5LCAzNTk1MSwgMzU5NjMsIDM1OTcyLCAzNTk4MSwgMzU5OTAsIDM1OTk5LCAzNjAwNiwgCisgICAgMzYwMTMsIDM2MDIxLCAzNjAyOSwgMzYwMzcsIDM2MDQ1LCAzNjA1MywgMzYwNjEsIDM2MDY5LCAzNjA3NywgMzYwODYsIAorICAgIDM2MDk1LCAzNjEwNCwgMzYxMTMsIDM2MTIyLCAzNjEzMSwgMzYxNDEsIDM2MTUxLCAzNjE2MSwgMzYxNzEsIDM2MTgwLCAKKyAgICAzNjE4OSwgMzYxOTYsIDM2MjAzLCAzNjIxMSwgMzYyMTksIDM2MjI3LCAzNjIzNSwgMzYyNDMsIDM2MjUxLCAzNjI2MywgCisgICAgMzYyNzUsIDM2Mjg0LCAzNjI5MywgMzYzMDEsIDM2MzA5LCAzNjMxNywgMzYzMjUsIDM2MzM2LCAzNjM0NywgMzYzNTgsIAorICAgIDM2MzY5LCAzNjM4MSwgMzYzOTMsIDM2NDAxLCAzNjQwOSwgMzY0MTcsIDM2NDI1LCAzNjQzNCwgMzY0NDMsIDM2NDUyLCAKKyAgICAzNjQ2MSwgMzY0NjksIDM2NDc3LCAzNjQ4NSwgMzY0OTMsIDM2NTAxLCAzNjUwOSwgMzY1MTgsIDM2NTI3LCAzNjUzNywgCisgICAgMzY1NDcsIDM2NTU1LCAzNjU2MywgMzY1NzEsIDM2NTc5LCAzNjU4NywgMzY1OTUsIDM2NjAyLCAzNjYwOSwgMzY2MTcsIAorICAgIDM2NjI1LCAzNjYzMywgMzY2NDEsIDM2NjQ5LCAzNjY1NywgMzY2NjUsIDM2NjczLCAzNjY4MSwgMzY2ODksIDM2Njk3LCAKKyAgICAzNjcwNSwgMzY3MTMsIDM2NzIxLCAzNjcyOSwgMzY3MzcsIDM2NzQ2LCAzNjc1NSwgMzY3NjQsIDM2NzcyLCAzNjc4MSwgCisgICAgMzY3OTAsIDM2Nzk5LCAzNjgwOCwgMzY4MTgsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODQ1LCAzNjg1MiwgMzY4NjAsIAorICAgIDM2ODY4LCAzNjg3NywgMzY4ODYsIDM2ODk2LCAzNjkwNiwgMzY5MTcsIDM2OTI4LCAzNjkzOCwgMzY5NDgsIDM2OTU4LCAKKyAgICAzNjk2OCwgMzY5NzcsIDM2OTg2LCAzNjk5NiwgMzcwMDYsIDM3MDE3LCAzNzAyOCwgMzcwMzgsIDM3MDQ4LCAzNzA1OCwgCisgICAgMzcwNjgsIDM3MDc1LCAzNzA4MiwgMzcwOTAsIDM3MDk4LCAzNzEwNSwgMzcxMTIsIDM3MTIxLCAzNzEzMCwgMzcxNDAsIAorICAgIDM3MTUwLCAzNzE2MSwgMzcxNzIsIDM3MTgyLCAzNzE5MiwgMzcyMDIsIDM3MjEyLCAzNzIyMSwgMzcyMzAsIDM3MjM4LCAKKyAgICAzNzI0NiwgMzcyNTMsIDM3MjYwLCAzNzI2OCwgMzcyNzYsIDM3Mjg1LCAzNzI5NCwgMzczMDQsIDM3MzE0LCAzNzMyNSwgCisgICAgMzczMzYsIDM3MzQ2LCAzNzM1NiwgMzczNjYsIDM3Mzc2LCAzNzM4NSwgMzczOTQsIDM3NDA0LCAzNzQxNCwgMzc0MjUsIAorICAgIDM3NDM2LCAzNzQ0NiwgMzc0NTYsIDM3NDY2LCAzNzQ3NiwgMzc0ODMsIDM3NDkwLCAzNzQ5OCwgMzc1MDYsIDM3NTE1LCAKKyAgICAzNzUyNCwgMzc1MzQsIDM3NTQ0LCAzNzU1NSwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTYsIDM3NjA2LCAzNzYxNCwgCisgICAgMzc2MjIsIDM3NjMwLCAzNzYzOCwgMzc2NDcsIDM3NjU2LCAzNzY2NCwgMzc2NzIsIDM3Njc5LCAzNzY4NiwgMzc2OTMsIAorICAgIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI0LCAzNzczMiwgMzc3NDMsIDM3NzU0LCAzNzc2NSwgMzc3NzYsIDM3Nzg3LCAKKyAgICAzNzc5OCwgMzc4MDYsIDM3ODE0LCAzNzgyNSwgMzc4MzYsIDM3ODQ3LCAzNzg1OCwgMzc4NjksIDM3ODgwLCAzNzg4OCwgCisgICAgMzc4OTYsIDM3OTA3LCAzNzkxOCwgMzc5MjksIDAsIDAsIDM3OTQwLCAzNzk0OCwgMzc5NTYsIDM3OTY3LCAzNzk3OCwgCisgICAgMzc5ODksIDAsIDAsIDM4MDAwLCAzODAwOCwgMzgwMTYsIDM4MDI3LCAzODAzOCwgMzgwNDksIDM4MDYwLCAzODA3MSwgCisgICAgMzgwODIsIDM4MDkwLCAzODA5OCwgMzgxMDksIDM4MTIwLCAzODEzMSwgMzgxNDIsIDM4MTUzLCAzODE2NCwgMzgxNzIsIAorICAgIDM4MTgwLCAzODE5MSwgMzgyMDIsIDM4MjEzLCAzODIyNCwgMzgyMzUsIDM4MjQ2LCAzODI1NCwgMzgyNjIsIDM4MjczLCAKKyAgICAzODI4NCwgMzgyOTUsIDM4MzA2LCAzODMxNywgMzgzMjgsIDM4MzM2LCAzODM0NCwgMzgzNTUsIDM4MzY2LCAzODM3NywgMCwgCisgICAgMCwgMzgzODgsIDM4Mzk2LCAzODQwNCwgMzg0MTUsIDM4NDI2LCAzODQzNywgMCwgMCwgMzg0NDgsIDM4NDU2LCAzODQ2NCwgCisgICAgMzg0NzUsIDM4NDg2LCAzODQ5NywgMzg1MDgsIDM4NTE5LCAwLCAzODUzMCwgMCwgMzg1MzgsIDAsIDM4NTQ5LCAwLCAKKyAgICAzODU2MCwgMzg1NzEsIDM4NTc5LCAzODU4NywgMzg1OTgsIDM4NjA5LCAzODYyMCwgMzg2MzEsIDM4NjQyLCAzODY1MywgCisgICAgMzg2NjEsIDM4NjY5LCAzODY4MCwgMzg2OTEsIDM4NzAyLCAzODcxMywgMzg3MjQsIDM4NzM1LCAzODc0MywgMzg3NTEsIAorICAgIDM4NzU5LCAzODc2NywgMzg3NzUsIDM4NzgzLCAzODc5MSwgMzg3OTksIDM4ODA3LCAzODgxNSwgMzg4MjMsIDM4ODMxLCAKKyAgICAzODgzOSwgMCwgMCwgMzg4NDcsIDM4ODU4LCAzODg2OSwgMzg4ODMsIDM4ODk3LCAzODkxMSwgMzg5MjUsIDM4OTM5LCAKKyAgICAzODk1MywgMzg5NjQsIDM4OTc1LCAzODk4OSwgMzkwMDMsIDM5MDE3LCAzOTAzMSwgMzkwNDUsIDM5MDU5LCAzOTA3MCwgCisgICAgMzkwODEsIDM5MDk1LCAzOTEwOSwgMzkxMjMsIDM5MTM3LCAzOTE1MSwgMzkxNjUsIDM5MTc2LCAzOTE4NywgMzkyMDEsIAorICAgIDM5MjE1LCAzOTIyOSwgMzkyNDMsIDM5MjU3LCAzOTI3MSwgMzkyODIsIDM5MjkzLCAzOTMwNywgMzkzMjEsIDM5MzM1LCAKKyAgICAzOTM0OSwgMzkzNjMsIDM5Mzc3LCAzOTM4OCwgMzkzOTksIDM5NDEzLCAzOTQyNywgMzk0NDEsIDM5NDU1LCAzOTQ2OSwgCisgICAgMzk0ODMsIDM5NDkxLCAzOTQ5OSwgMzk1MTAsIDM5NTE4LCAwLCAzOTUyOSwgMzk1MzcsIDM5NTQ4LCAzOTU1NiwgMzk1NjQsIAorICAgIDM5NTcyLCAzOTU4MCwgMzk1ODgsIDM5NTkxLCAzOTU5NCwgMzk1OTcsIDM5NjAwLCAzOTYwNiwgMzk2MTcsIDM5NjI1LCAwLCAKKyAgICAzOTYzNiwgMzk2NDQsIDM5NjU1LCAzOTY2MywgMzk2NzEsIDM5Njc5LCAzOTY4NywgMzk2OTUsIDM5NzAxLCAzOTcwNywgCisgICAgMzk3MTMsIDM5NzIxLCAzOTcyOSwgMzk3NDAsIDAsIDAsIDM5NzUxLCAzOTc1OSwgMzk3NzAsIDM5Nzc4LCAzOTc4NiwgCisgICAgMzk3OTQsIDAsIDM5ODAyLCAzOTgwOCwgMzk4MTQsIDM5ODIwLCAzOTgyOCwgMzk4MzYsIDM5ODQ3LCAzOTg1OCwgMzk4NjYsIAorICAgIDM5ODc0LCAzOTg4MiwgMzk4OTMsIDM5OTAxLCAzOTkwOSwgMzk5MTcsIDM5OTI1LCAzOTkzMywgMzk5MzksIDM5OTQ1LCAwLCAKKyAgICAwLCAzOTk0OCwgMzk5NTksIDM5OTY3LCAwLCAzOTk3OCwgMzk5ODYsIDM5OTk3LCA0MDAwNSwgNDAwMTMsIDQwMDIxLCAKKyAgICA0MDAyOSwgNDAwMzcsIDQwMDQwLCAwLCA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgCisgICAgNDAwNzEsIDQwMDc1LCA0MDA3OSwgNDAwODMsIDQwMDg3LCA0MDA5MywgNDAwOTksIDQwMTA1LCA0MDEwOCwgNDAxMTEsIAorICAgIDQwMTEzLCA0MDExNywgNDAxMjEsIDQwMTI1LCA0MDEyOSwgNDAxMzIsIDQwMTM2LCA0MDE0MCwgNDAxNDYsIDQwMTUyLCAKKyAgICA0MDE1OSwgNDAxNjYsIDQwMTcxLCA0MDE3NiwgNDAxODIsIDQwMTg4LCA0MDE5MCwgNDAxOTMsIDQwMTk1LCA0MDE5OSwgCisgICAgNDAyMDMsIDQwMjA3LCA0MDIxMSwgNDAyMTUsIDQwMjE5LCA0MDIyMywgNDAyMjcsIDQwMjMxLCA0MDIzNywgNDAyNDEsIAorICAgIDQwMjQ1LCA0MDI1MSwgNDAyNTYsIDQwMjYzLCA0MDI2NSwgNDAyNjgsIDQwMjcyLCA0MDI3NiwgNDAyODEsIDQwMjg3LCAKKyAgICA0MDI4OSwgNDAyOTgsIDQwMzA3LCA0MDMxMCwgNDAzMTQsIDQwMzE2LCA0MDMxOCwgNDAzMjAsIDQwMzIzLCA0MDMyOSwgCisgICAgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNDAzNDYsIDQwMzUzLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MiwgNDAzNzcsIAorICAgIDQwMzgxLCA0MDM4NSwgNDAzODgsIDQwMzkyLCA0MDM5NiwgNDA0MDMsIDQwNDA4LCA0MDQxMiwgNDA0MTYsIDQwNDIxLCAKKyAgICA0MDQyNSwgNDA0MjksIDQwNDM0LCA0MDQzOSwgNDA0NDMsIDQwNDQ3LCA0MDQ1MSwgNDA0NTMsIDQwNDU4LCA0MDQ2MywgCisgICAgNDA0NjcsIDQwNDcxLCA0MDQ3NSwgNDA0NzksIDAsIDQwNDgzLCA0MDQ4NywgNDA0OTEsIDQwNDk3LCA0MDUwMywgNDA1MDksIAorICAgIDQwNTE1LCA0MDUyMiwgNDA1MjksIDQwNTM0LCA0MDUzOSwgNDA1NDMsIDAsIDAsIDQwNTQ5LCA0MDU1MiwgNDA1NTUsIAorICAgIDQwNTU4LCA0MDU2MiwgNDA1NjUsIDQwNTY5LCA0MDU3MywgNDA1NzcsIDQwNTgyLCA0MDU4NywgNDA1OTIsIDQwNTk5LCAKKyAgICA0MDYwMywgNDA2MDYsIDQwNjA5LCA0MDYxMiwgNDA2MTUsIDQwNjE4LCA0MDYyMSwgNDA2MjUsIDQwNjI4LCA0MDYzMiwgCisgICAgNDA2MzYsIDQwNjQwLCA0MDY0NSwgNDA2NTAsIDAsIDQwNjU1LCA0MDY2MSwgNDA2NjcsIDQwNjczLCA0MDY4MCwgNDA2ODcsIAorICAgIDQwNjk0LCA0MDcwMSwgNDA3MDcsIDQwNzE0LCA0MDcyMSwgNDA3MjgsIDQwNzM0LCAwLCAwLCAwLCA0MDc0MSwgNDA3NDQsIAorICAgIDQwNzQ3LCA0MDc1MCwgNDA3NTUsIDQwNzU4LCA0MDc2MSwgNDA3NjQsIDQwNzY3LCA0MDc3MCwgNDA3NzMsIDQwNzc4LCAKKyAgICA0MDc4MSwgNDA3ODQsIDQwNzg3LCA0MDc5MCwgNDA3OTMsIDQwNzk4LCA0MDgwMSwgNDA4MDQsIDQwODA3LCA0MDgxMCwgCisgICAgNDA4MTMsIDQwODE4LCA0MDgyMSwgNDA4MjQsIDQwODI5LCA0MDgzNCwgNDA4MzgsIDQwODQxLCA0MDg0NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4NDcsIDQwODUyLCA0MDg1NywgNDA4NjQsIAorICAgIDQwODcyLCA0MDg3NywgNDA4ODIsIDQwODg2LCA0MDg5MCwgNDA4OTUsIDQwOTAyLCA0MDkwOSwgNDA5MTMsIDQwOTE4LCAKKyAgICA0MDkyMywgNDA5MjgsIDQwOTMzLCA0MDk0MCwgNDA5NDUsIDQwOTUwLCA0MDk1NSwgNDA5NjQsIDQwOTcxLCA0MDk3OCwgCisgICAgNDA5ODIsIDQwOTg3LCA0MDk5MywgNDA5OTgsIDQxMDA1LCA0MTAxMywgNDEwMjEsIDQxMDI1LCA0MTAyOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMzMsIDQxMDM3LCA0MTA0NSwgNDEwNDksIDQxMDUzLCAKKyAgICA0MTA1OCwgNDEwNjIsIDQxMDY2LCA0MTA3MCwgNDEwNzIsIDQxMDc2LCA0MTA4MCwgNDEwODQsIDQxMDg5LCA0MTA5MywgCisgICAgNDEwOTcsIDQxMTA1LCA0MTEwOCwgNDExMTIsIDQxMTE1LCA0MTExOCwgNDExMjQsIDQxMTI4LCA0MTEzMSwgNDExMzcsIAorICAgIDQxMTQxLCA0MTE0NSwgNDExNDksIDQxMTUyLCA0MTE1NiwgNDExNTksIDQxMTYzLCA0MTE2NSwgNDExNjgsIDQxMTcxLCAKKyAgICA0MTE3NSwgNDExNzcsIDQxMTgxLCA0MTE4NCwgNDExODcsIDQxMTkyLCA0MTE5NywgNDEyMDQsIDQxMjA3LCA0MTIxMCwgCisgICAgNDEyMTQsIDQxMjE5LCA0MTIyMiwgNDEyMjUsIDQxMjI4LCA0MTIzMiwgNDEyMzcsIDQxMjQxLCA0MTI0NCwgNDEyNDYsIAorICAgIDQxMjQ5LCA0MTI1MiwgNDEyNTUsIDQxMjU5LCA0MTI2NCwgNDEyNjcsIDQxMjcxLCA0MTI3NSwgNDEyNzksIDQxMjgzLCAKKyAgICA0MTI4OCwgNDEyOTQsIDQxMjk5LCA0MTMwNCwgNDEzMTAsIDQxMzE1LCA0MTMyMCwgNDEzMjQsIDQxMzI4LCA0MTMzMywgCisgICAgNDEzMzcsIDQxMzQxLCA0MTM0NCwgNDEzNDYsIDQxMzUxLCA0MTM1NywgNDEzNjQsIDQxMzcxLCA0MTM3OCwgNDEzODUsIAorICAgIDQxMzkyLCA0MTM5OSwgNDE0MDYsIDQxNDEzLCA0MTQyMSwgNDE0MjgsIDQxNDM2LCA0MTQ0MywgNDE0NTAsIDQxNDU4LCAKKyAgICA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MSwgNDE0ODYsIDQxNDkxLCA0MTQ5NiwgNDE1MDEsIDQxNTA3LCA0MTUxMiwgCisgICAgNDE1MTgsIDQxNTI0LCA0MTUzMCwgNDE1MzYsIDQxNTQyLCA0MTU0OSwgNDE1NTcsIDQxNTY0LCA0MTU3MCwgNDE1NzYsIAorICAgIDQxNTgyLCA0MTU4OCwgNDE1OTQsIDQxNjAwLCA0MTYwNywgNDE2MTMsIDQxNjIwLCA0MTYyNywgNDE2MzQsIDQxNjQxLCAKKyAgICA0MTY0OCwgNDE2NTYsIDQxNjY1LCA0MTY3MywgNDE2ODQsIDQxNjkyLCA0MTcwMCwgNDE3MDksIDQxNzE2LCA0MTcyNSwgCisgICAgNDE3MzQsIDQxNzQyLCA0MTc1MSwgNDE3NTksIDQxNzYzLCAwLCAwLCAwLCAwLCA0MTc2NywgNDE3NjksIDQxNzcxLCAKKyAgICA0MTc3MywgNDE3NzUsIDQxNzc4LCA0MTc4MSwgNDE3ODUsIDQxNzg5LCA0MTc5NCwgNDE3OTksIDQxODAzLCA0MTgwNywgCisgICAgNDE4MTEsIDQxODE1LCA0MTgyMCwgNDE4MjUsIDQxODMwLCA0MTgzNSwgNDE4NDAsIDQxODQ1LCA0MTg1MCwgNDE4NTUsIAorICAgIDQxODYwLCA0MTg2NSwgNDE4NzEsIDQxODc1LCA0MTg3OSwgNDE4ODQsIDQxODg5LCA0MTg5NCwgNDE4OTksIDQxOTAzLCAKKyAgICA0MTkxMCwgNDE5MTcsIDQxOTI0LCA0MTkzMSwgNDE5MzgsIDQxOTQ1LCA0MTk1MiwgNDE5NTksIDQxOTY3LCA0MTk3OSwgCisgICAgNDE5ODUsIDQxOTkxLCA0MTk5OCwgNDIwMDUsIDQyMDEyLCA0MjAxOSwgNDIwMjYsIDQyMDMzLCA0MjA0MCwgNDIwNDcsIAorICAgIDQyMDUyLCA0MjA1OCwgNDIwNjMsIDQyMDY4LCA0MjA3MywgNDIwNzgsIDQyMDgzLCA0MjA5MCwgNDIwOTcsIDQyMTAyLCAKKyAgICA0MjEwOCwgNDIxMTMsIDQyMTE2LCA0MjExOSwgNDIxMjIsIDQyMTI1LCA0MjEyOSwgNDIxMzMsIDQyMTM4LCA0MjE0MywgCisgICAgNDIxNDksIDQyMTU1LCA0MjE1OSwgNDIxNjMsIDQyMTY3LCA0MjE3MSwgNDIxNzYsIDQyMTgxLCA0MjE4NSwgNDIxODksIAorICAgIDQyMTkzLCA0MjE5NywgNDIyMDIsIDQyMjA3LCA0MjIxMCwgNDIyMTMsIDQyMjE2LCA0MjIxOSwgNDIyMjUsIDQyMjMyLCAKKyAgICA0MjI0MywgNDIyNTMsIDQyMjU3LCA0MjI2NSwgNDIyNzIsIDQyMjgwLCA0MjI4OSwgNDIyOTMsIDQyMjk5LCA0MjMwNSwgCisgICAgNDIzMDksIDQyMzE0LCA0MjMxOSwgNDIzMjUsIDQyMzMxLCA0MjMzNywgNDIzNDQsIDQyMzQ4LCA0MjM1MiwgNDIzNTcsIAorICAgIDQyMzYwLCA0MjM2MiwgNDIzNjYsIDQyMzcwLCA0MjM3OCwgNDIzODIsIDQyMzg0LCA0MjM4NiwgNDIzOTAsIDQyMzk4LCAKKyAgICA0MjQwMywgNDI0MDksIDQyNDE5LCA0MjQyNiwgNDI0MzEsIDQyNDM1LCA0MjQzOSwgNDI0NDMsIDQyNDQ2LCA0MjQ0OSwgCisgICAgNDI0NTIsIDQyNDU2LCA0MjQ2MCwgNDI0NjQsIDQyNDY4LCA0MjQ3MiwgNDI0NzUsIDQyNDc5LCA0MjQ4MywgNDI0ODYsIAorICAgIDQyNDg4LCA0MjQ5MSwgNDI0OTMsIDQyNDk3LCA0MjUwMSwgNDI1MDMsIDQyNTA5LCA0MjUxMiwgNDI1MTcsIDQyNTIxLCAKKyAgICA0MjUyNSwgNDI1MjcsIDQyNTI5LCA0MjUzMSwgNDI1MzQsIDQyNTM4LCA0MjU0MiwgNDI1NDYsIDQyNTUwLCA0MjU1NCwgCisgICAgNDI1NjAsIDQyNTY2LCA0MjU2OCwgNDI1NzAsIDQyNTcyLCA0MjU3NCwgNDI1NzcsIDQyNTc5LCA0MjU4MywgNDI1ODUsIAorICAgIDQyNTg5LCA0MjU5MywgNDI1OTgsIDQyNjAyLCA0MjYwNiwgNDI2MTAsIDQyNjE0LCA0MjYxOCwgNDI2MjQsIDQyNjI4LCAKKyAgICA0MjYzOCwgNDI2NDgsIDQyNjUyLCA0MjY1OCwgNDI2NjUsIDQyNjY5LCA0MjY3MywgNDI2NzYsIDQyNjgxLCA0MjY4NSwgCisgICAgNDI2OTEsIDQyNjk1LCA0MjcwOCwgNDI3MTcsIDQyNzIxLCA0MjcyNSwgNDI3MzEsIDQyNzM1LCA0MjczOCwgNDI3NDAsIAorICAgIDQyNzQzLCA0Mjc0NywgNDI3NTEsIDQyNzU4LCA0Mjc2MiwgNDI3NjYsIDQyNzcwLCA0Mjc3MywgNDI3NzgsIDQyNzgzLCAKKyAgICA0Mjc4OSwgNDI3OTUsIDQyODAwLCA0MjgwNSwgNDI4MTMsIDQyODIxLCA0MjgyNSwgNDI4MjksIDQyODMxLCA0MjgzNiwgCisgICAgNDI4NDAsIDQyODQ0LCA0Mjg1MiwgNDI4NjAsIDQyODY3LCA0Mjg3NCwgNDI4ODMsIDQyODkyLCA0Mjg5OCwgNDI5MDQsIAorICAgIDQyOTEyLCA0MjkyMCwgNDI5MjIsIDQyOTI0LCA0MjkzMCwgNDI5MzYsIDQyOTQzLCA0Mjk1MCwgNDI5NTYsIDQyOTYyLCAKKyAgICA0Mjk2NiwgNDI5NzAsIDQyOTc3LCA0Mjk4NCwgNDI5OTEsIDQyOTk4LCA0MzAwOCwgNDMwMTgsIDQzMDI2LCA0MzAzNCwgCisgICAgNDMwMzYsIDQzMDQwLCA0MzA0NCwgNDMwNDksIDQzMDU0LCA0MzA2MiwgNDMwNzAsIDQzMDczLCA0MzA3NiwgNDMwNzksIAorICAgIDQzMDgyLCA0MzA4NSwgNDMwOTAsIDQzMDk0LCA0MzA5OSwgNDMxMDQsIDQzMTA3LCA0MzExMCwgNDMxMTMsIDQzMTE2LCAKKyAgICA0MzExOSwgNDMxMjMsIDQzMTI2LCA0MzEyOSwgNDMxMzIsIDQzMTM1LCA0MzEzNywgNDMxMzksIDQzMTQxLCA0MzE0MywgCisgICAgNDMxNTEsIDQzMTU5LCA0MzE2NSwgNDMxNjksIDQzMTc1LCA0MzE4NSwgNDMxOTEsIDQzMTk3LCA0MzIwMywgNDMyMTEsIAorICAgIDQzMjIwLCA0MzIzMiwgNDMyMzYsIDQzMjQwLCA0MzI0MiwgNDMyNDgsIDQzMjUwLCA0MzI1MiwgNDMyNTQsIDQzMjU2LCAKKyAgICA0MzI2MiwgNDMyNjUsIDQzMjcxLCA0MzI3NywgNDMyODEsIDQzMjg1LCA0MzI4OSwgNDMyOTIsIDQzMjk2LCA0MzMwMCwgCisgICAgNDMzMDIsIDQzMzExLCA0MzMyMCwgNDMzMjUsIDQzMzMwLCA0MzMzNiwgNDMzNDIsIDQzMzQ4LCA0MzM1MSwgNDMzNTQsIAorICAgIDQzMzU3LCA0MzM2MCwgNDMzNjIsIDQzMzY3LCA0MzM3MiwgNDMzNzcsIDQzMzgzLCA0MzM4OSwgNDMzOTgsIDQzNDA3LCAKKyAgICA0MzQxNCwgNDM0MjEsIDQzNDI4LCA0MzQzNSwgNDM0NDUsIDQzNDU1LCA0MzQ2NSwgNDM0NzUsIDQzNDg1LCA0MzQ5NSwgCisgICAgNDM1MDQsIDQzNTEzLCA0MzUyMiwgNDM1MzEsIDQzNTM5LCA0MzU1MSwgNDM1NjIsIDQzNTc4LCA0MzU4MSwgNDM1ODcsIAorICAgIDQzNTkzLCA0MzU5OSwgNDM2MDcsIDQzNjIyLCA0MzYzOCwgNDM2NDQsIDQzNjUwLCA0MzY1NywgNDM2NjMsIDQzNjcyLCAKKyAgICA0MzY3OSwgNDM2OTMsIDQzNzA4LCA0MzcxMywgNDM3MTksIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM1LCA0MzczOCwgCisgICAgNDM3NDEsIDQzNzQzLCA0Mzc0NSwgNDM3NDksIDQzNzUyLCA0Mzc1NSwgNDM3NTgsIDQzNzYxLCA0Mzc2NiwgNDM3NzEsIAorICAgIDQzNzc2LCA0Mzc4MSwgNDM3ODYsIDQzNzg5LCA0Mzc5MSwgNDM3OTMsIDQzNzk1LCA0Mzc5OSwgNDM4MDMsIDQzODA3LCAKKyAgICA0MzgxMywgNDM4MTgsIDQzODIwLCA0MzgyMiwgNDM4MjcsIDQzODMyLCA0MzgzNywgNDM4NDIsIDQzODQ3LCA0Mzg1MiwgCisgICAgNDM4NTQsIDQzODU2LCA0Mzg2NiwgNDM4NzAsIDQzODc4LCA0Mzg4NywgNDM4ODksIDQzODk0LCA0Mzg5OSwgNDM5MDcsIAorICAgIDQzOTExLCA0MzkxMywgNDM5MTcsIDQzOTE5LCA0MzkyMywgNDM5MjcsIDQzOTMxLCA0MzkzMywgNDM5MzUsIDQzOTM3LCAKKyAgICA0Mzk0NCwgNDM5NTMsIDQzOTYyLCA0Mzk3MSwgNDM5ODAsIDQzOTg5LCA0Mzk5OCwgNDQwMDcsIDQ0MDE2LCA0NDAyNCwgCisgICAgNDQwMzIsIDQ0MDQxLCA0NDA1MCwgNDQwNTksIDQ0MDY4LCA0NDA3NiwgNDQwODQsIDQ0MDkzLCA0NDEwMiwgNDQxMTEsIAorICAgIDQ0MTIxLCA0NDEzMCwgNDQxNDAsIDQ0MTQ5LCA0NDE1OSwgNDQxNjcsIDQ0MTc2LCA0NDE4NiwgNDQxOTUsIDQ0MjA1LCAKKyAgICA0NDIxNCwgNDQyMjQsIDQ0MjMyLCA0NDI0MSwgNDQyNTAsIDQ0MjU5LCA0NDI2OCwgNDQyNzcsIDQ0Mjg2LCA0NDI5NiwgCisgICAgNDQzMDUsIDQ0MzE0LCA0NDMyMywgNDQzMzMsIDQ0MzQyLCA0NDM1MSwgNDQzNjAsIDQ0MzY5LCA0NDM3OSwgNDQzODksIAorICAgIDQ0Mzk4LCA0NDQwNywgNDQ0MTUsIDQ0NDI0LCA0NDQzMSwgNDQ0NDAsIDQ0NDQ5LCA0NDQ2MCwgNDQ0NjksIDQ0NDc5LCAKKyAgICA0NDQ4OSwgNDQ0OTYsIDQ0NTAzLCA0NDUxMCwgNDQ1MTksIDQ0NTI4LCA0NDUzNywgNDQ1NDYsIDQ0NTUzLCA0NDU1OCwgCisgICAgNDQ1NjYsIDQ0NTcxLCA0NDU3NCwgNDQ1ODEsIDQ0NTg0LCA0NDU4OSwgNDQ1OTQsIDQ0NTk3LCA0NDYwMCwgNDQ2MDgsIAorICAgIDQ0NjExLCA0NDYxNiwgNDQ2MTksIDQ0NjI3LCA0NDYzMiwgNDQ2NDAsIDQ0NjQzLCA0NDY0NiwgNDQ2NDksIDQ0NjU0LCAKKyAgICA0NDY1OSwgNDQ2NjIsIDQ0NjY1LCA0NDY3MywgNDQ2NzYsIDQ0NjgzLCA0NDY5MCwgNDQ2OTQsIDQ0Njk4LCA0NDcwMywgCisgICAgNDQ3MDgsIDQ0NzE0LCA0NDcxOSwgNDQ3MjUsIDQ0NzMxLCA0NDczNiwgNDQ3NDIsIDQ0NzUwLCA0NDc1NiwgNDQ3NjQsIAorICAgIDQ0NzcyLCA0NDc3OCwgNDQ3ODYsIDQ0Nzk0LCA0NDgwMiwgNDQ4MTAsIDQ0ODE2LCA0NDgyNCwgNDQ4MzIsIDQ0ODQwLCAKKyAgICA0NDg0NCwgNDQ4NTAsIDQ0ODY0LCA0NDg3OCwgNDQ4ODIsIDQ0ODg2LCA0NDg5MCwgNDQ4OTQsIDQ0OTA0LCA0NDkwOCwgCisgICAgNDQ5MTMsIDQ0OTE4LCA0NDkyNCwgNDQ5MzAsIDQ0OTM2LCA0NDk0MiwgNDQ5NTIsIDQ0OTYyLCA0NDk3MCwgNDQ5ODEsIAorICAgIDQ0OTkyLCA0NTAwMCwgNDUwMTEsIDQ1MDIyLCA0NTAzMCwgNDUwNDEsIDQ1MDUyLCA0NTA2MCwgNDUwNjgsIDQ1MDc4LCAKKyAgICA0NTA4OCwgNDUwOTEsIDQ1MDk0LCA0NTA5NywgNDUxMDIsIDQ1MTA2LCA0NTExMiwgNDUxMTksIDQ1MTI2LCA0NTEzNCwgCisgICAgNDUxNDEsIDQ1MTQ1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCA0NTE1OSwgNDUxNjMsIDQ1MTY3LCA0NTE3MiwgNDUxNzcsIAorICAgIDQ1MTg0LCA0NTE5MSwgNDUxOTQsIDQ1MjAxLCA0NTIwMywgNDUyMDUsIDQ1MjA5LCA0NTIxMywgNDUyMTgsIDQ1MjI0LCAKKyAgICA0NTIzMCwgNDUyMzYsIDQ1MjQyLCA0NTI1MSwgNDUyNjAsIDQ1MjY5LCA0NTI3MywgNDUyNzUsIDQ1Mjc5LCA0NTI4NiwgCisgICAgNDUyOTMsIDQ1MzAwLCA0NTMwNywgNDUzMTQsIDQ1MzE3LCA0NTMyMiwgMCwgMCwgMCwgMCwgMCwgNDUzMjgsIDQ1MzMyLCAKKyAgICA0NTMzOSwgNDUzNDYsIDQ1MzUzLCA0NTM2MCwgNDUzNjQsIDQ1MzY4LCA0NTM3MiwgNDUzNzYsIDQ1MzgyLCA0NTM4OCwgCisgICAgNDUzOTMsIDQ1Mzk5LCA0NTQwNSwgNDU0MTEsIDQ1NDE3LCA0NTQyNSwgNDU0MzIsIDQ1NDM5LCA0NTQ0NiwgNDU0NTMsIAorICAgIDQ1NDU4LCA0NTQ2NCwgNDU0NzMsIDQ1NDc3LCA0NTQ4NCwgNDU0ODgsIDQ1NDkyLCA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCAKKyAgICA0NTUxNiwgNDU1MjAsIDQ1NTI0LCA0NTUyNywgNDU1MzAsIDQ1NTM0LCA0NTU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1NDgsIDQ1NTUxLCA0NTU1NSwgCisgICAgNDU1NTksIDQ1NTY1LCA0NTU3MSwgNDU1NzcsIDQ1NTg1LCA0NTU5MiwgNDU1OTYsIDQ1NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTYwOSwgNDU2MTIsIDQ1NjE1LCA0NTYxOCwgCisgICAgNDU2MjEsIDQ1NjI0LCA0NTYyNywgNDU2MzEsIDQ1NjM0LCA0NTYzOCwgNDU2NDIsIDQ1NjQ2LCA0NTY1MCwgNDU2NTQsIAorICAgIDQ1NjU4LCA0NTY2MiwgNDU2NjYsIDQ1NjcwLCA0NTY3NCwgNDU2NzgsIDQ1NjgyLCA0NTY4NSwgNDU2ODgsIDQ1NjkxLCAKKyAgICA0NTY5NCwgNDU2OTcsIDQ1NzAwLCA0NTcwNCwgNDU3MDcsIDQ1NzExLCA0NTcxNSwgNDU3MTksIDQ1NzIzLCA0NTcyNywgCisgICAgNDU3MzEsIDQ1NzM1LCA0NTczOSwgNDU3NDMsIDQ1NzQ3LCA0NTc1MSwgNDU3NTUsIDQ1NzYxLCA0NTc2NywgNDU3NzMsIAorICAgIDQ1NzgwLCA0NTc4NywgNDU3OTQsIDQ1ODAxLCA0NTgwOCwgNDU4MTUsIDQ1ODIyLCA0NTgyOSwgNDU4MzYsIDQ1ODQzLCAKKyAgICA0NTg1MCwgNDU4NTcsIDQ1ODY0LCA0NTg3MSwgNDU4NzgsIDQ1ODg1LCA0NTg5MiwgNDU4OTcsIDQ1OTAzLCA0NTkwOSwgCisgICAgNDU5MTUsIDQ1OTIwLCA0NTkyNiwgNDU5MzIsIDQ1OTM4LCA0NTk0MywgNDU5NDksIDQ1OTU1LCA0NTk2MCwgNDU5NjYsIAorICAgIDQ1OTcyLCA0NTk3NywgNDU5ODMsIDQ1OTg5LCA0NTk5NCwgNDU5OTksIDQ2MDA1LCA0NjAxMCwgNDYwMTYsIDQ2MDIyLCAKKyAgICA0NjAyOCwgNDYwMzQsIDQ2MDQwLCA0NjA0NSwgNDYwNTEsIDQ2MDU3LCA0NjA2MywgNDYwNjgsIDQ2MDc0LCA0NjA4MCwgCisgICAgNDYwODYsIDQ2MDkxLCA0NjA5NywgNDYxMDMsIDQ2MTA4LCA0NjExNCwgNDYxMjAsIDQ2MTI1LCA0NjEzMSwgNDYxMzcsIAorICAgIDQ2MTQyLCA0NjE0NywgNDYxNTMsIDQ2MTU4LCA0NjE2NCwgNDYxNzAsIDQ2MTc2LCA0NjE4MiwgNDYxODgsIDQ2MTkzLCAKKyAgICA0NjE5OSwgNDYyMDUsIDQ2MjExLCA0NjIxNiwgNDYyMjIsIDQ2MjI4LCA0NjIzNCwgNDYyMzksIDQ2MjQ1LCA0NjI1MSwgCisgICAgNDYyNTYsIDQ2MjYyLCA0NjI2OCwgNDYyNzMsIDQ2Mjc5LCA0NjI4NSwgNDYyOTAsIDQ2Mjk1LCA0NjMwMSwgNDYzMDYsIAorICAgIDQ2MzEyLCA0NjMxOCwgNDYzMjQsIDQ2MzMwLCA0NjMzNiwgNDYzNDAsIDQ2MzQ1LCA0NjM1MCwgNDYzNTUsIDQ2MzYwLCAKKyAgICA0NjM2NSwgNDYzNzAsIDQ2Mzc1LCA0NjM4MCwgNDYzODUsIDQ2MzkwLCA0NjM5NCwgNDYzOTgsIDQ2NDAyLCA0NjQwNiwgCisgICAgNDY0MTAsIDQ2NDE0LCA0NjQxOSwgNDY0MjMsIDQ2NDI4LCA0NjQzMywgNDY0MzgsIDQ2NDQzLCA0NjQ0OCwgNDY0NTMsIAorICAgIDQ2NDU4LCA0NjQ2NywgNDY0NzYsIDQ2NDg1LCA0NjQ5NCwgNDY1MDMsIDQ2NTEyLCA0NjUyMSwgNDY1MzAsIDQ2NTM3LCAKKyAgICA0NjU0NSwgNDY1NTMsIDQ2NTYwLCA0NjU2NywgNDY1NzUsIDQ2NTgzLCA0NjU5MCwgNDY1OTcsIDQ2NjA1LCA0NjYxMywgCisgICAgNDY2MjAsIDQ2NjI3LCA0NjYzNSwgNDY2NDMsIDQ2NjUwLCA0NjY1NywgNDY2NjUsIDQ2Njc0LCA0NjY4MywgNDY2OTEsIAorICAgIDQ2NzAwLCA0NjcwOSwgNDY3MTYsIDQ2NzIzLCA0NjczMSwgNDY3NDAsIDQ2NzQ5LCA0Njc1NywgNDY3NjYsIDQ2Nzc1LCAKKyAgICA0Njc4MiwgNDY3ODksIDQ2Nzk4LCA0NjgwNywgNDY4MTYsIDQ2ODI1LCA0NjgzNCwgNDY4NDMsIDQ2ODUwLCA0Njg1NywgCisgICAgNDY4NjYsIDQ2ODc1LCA0Njg4NCwgNDY4OTMsIDQ2OTAyLCA0NjkxMSwgNDY5MTgsIDQ2OTI1LCA0NjkzNCwgNDY5NDMsIAorICAgIDQ2OTUyLCA0Njk2MiwgNDY5NzIsIDQ2OTgxLCA0Njk5MSwgNDcwMDEsIDQ3MDExLCA0NzAyMSwgNDcwMzEsIDQ3MDQxLCAKKyAgICA0NzA1MCwgNDcwNTksIDQ3MDY2LCA0NzA3NCwgNDcwODIsIDQ3MDkwLCA0NzA5OCwgNDcxMDMsIDQ3MTA4LCA0NzExNywgCisgICAgNDcxMjUsIDQ3MTMyLCA0NzE0MSwgNDcxNDksIDQ3MTU2LCA0NzE2NSwgNDcxNzMsIDQ3MTgwLCA0NzE4OSwgNDcxOTcsIAorICAgIDQ3MjA0LCA0NzIxMywgNDcyMjEsIDQ3MjI4LCA0NzIzNywgNDcyNDUsIDQ3MjUyLCA0NzI2MiwgNDcyNzEsIDQ3Mjc4LCAKKyAgICA0NzI4OCwgNDcyOTcsIDQ3MzA0LCA0NzMxNCwgNDczMjMsIDQ3MzMwLCA0NzMzOSwgNDczNDgsIDQ3MzU3LCA0NzM2NiwgCisgICAgNDczODAsIDQ3Mzk0LCA0NzQwMSwgNDc0MDYsIDQ3NDExLCA0NzQxNiwgNDc0MjEsIDQ3NDI2LCA0NzQzMSwgNDc0MzYsIAorICAgIDQ3NDQxLCA0NzQ0OSwgNDc0NTcsIDQ3NDY1LCA0NzQ3MywgNDc0NzgsIDQ3NDg1LCA0NzQ5MiwgNDc0OTksIDQ3NTA0LCAKKyAgICA0NzUxMiwgNDc1MTksIDQ3NTI3LCA0NzUzMSwgNDc1MzgsIDQ3NTQ0LCA0NzU1MSwgNDc1NTUsIDQ3NTYxLCA0NzU2NywgCisgICAgNDc1NzMsIDQ3NTc3LCA0NzU4MCwgNDc1ODQsIDQ3NTg4LCA0NzU5NSwgNDc2MDEsIDQ3NjA3LCA0NzYxMywgNDc2MTksIAorICAgIDQ3NjMzLCA0NzY0MywgNDc2NTcsIDQ3NjcxLCA0NzY3NywgNDc2ODcsIDQ3NzAxLCA0NzcwNCwgNDc3MDcsIDQ3NzE0LCAKKyAgICA0NzcyMiwgNDc3MjgsIDQ3NzMzLCA0Nzc0MSwgNDc3NTMsIDQ3NzY1LCA0Nzc3MywgNDc3NzcsIDQ3NzgxLCA0Nzc4NCwgCisgICAgNDc3ODcsIDQ3NzkxLCA0Nzc5NSwgNDc3OTgsIDQ3ODAxLCA0NzgwNiwgNDc4MTEsIDQ3ODE3LCA0NzgyMywgNDc4MjgsIAorICAgIDQ3ODMzLCA0NzgzOSwgNDc4NDUsIDQ3ODUwLCA0Nzg1NSwgNDc4NjAsIDQ3ODY1LCA0Nzg3MSwgNDc4NzcsIDQ3ODgyLCAKKyAgICA0Nzg4NywgNDc4OTMsIDQ3ODk5LCA0NzkwNCwgNDc5MDksIDQ3OTEyLCA0NzkxNSwgNDc5MjQsIDQ3OTI2LCA0NzkyOCwgCisgICAgNDc5MzEsIDQ3OTM1LCA0Nzk0MSwgNDc5NDMsIDQ3OTQ2LCA0Nzk1MywgNDc5NjAsIDQ3OTY4LCA0Nzk3NiwgNDc5ODYsIAorICAgIDQ4MDAwLCA0ODAwNSwgNDgwMTAsIDQ4MDE0LCA0ODAxOSwgNDgwMjcsIDQ4MDM1LCA0ODA0NCwgNDgwNTMsIDQ4MDYyLCAKKyAgICA0ODA3MSwgNDgwNzYsIDQ4MDgxLCA0ODA4NywgNDgwOTMsIDQ4MDk5LCA0ODEwNSwgNDgxMDgsIDQ4MTE0LCA0ODEyMCwgCisgICAgNDgxMzAsIDQ4MTQwLCA0ODE0OCwgNDgxNTYsIDQ4MTY1LCA0ODE3NCwgNDgxNzgsIDQ4MTg2LCA0ODE5NCwgNDgyMDIsIAorICAgIDQ4MjEwLCA0ODIxOSwgNDgyMjgsIDQ4MjM3LCA0ODI0NiwgNDgyNTEsIDQ4MjU2LCA0ODI2MSwgNDgyNjYsIDQ4MjcxLCAKKyAgICA0ODI3NywgNDgyODMsIDQ4Mjg4LCA0ODI5NCwgNDgyOTYsIDQ4Mjk4LCA0ODMwMCwgNDgzMDIsIDQ4MzA1LCA0ODMwOCwgCisgICAgNDgzMTAsIDQ4MzEyLCA0ODMxNCwgNDgzMTgsIDQ4MzIyLCA0ODMyNCwgNDgzMjYsIDQ4MzI5LCA0ODMzMiwgNDgzMzYsIAorICAgIDQ4MzQyLCA0ODM0OCwgNDgzNTAsIDQ4MzU3LCA0ODM2MSwgNDgzNjYsIDQ4MzcxLCA0ODM3MywgNDgzODMsIDQ4Mzg5LCAKKyAgICA0ODM5NSwgNDg0MDEsIDQ4NDA3LCA0ODQxMywgNDg0MTksIDQ4NDI0LCA0ODQyNywgNDg0MzAsIDQ4NDMzLCA0ODQzNSwgCisgICAgNDg0MzcsIDQ4NDQxLCA0ODQ0NSwgNDg0NTAsIDQ4NDU1LCA0ODQ2MCwgNDg0NjMsIDQ4NDY3LCA0ODQ3MiwgNDg0NzUsIAorICAgIDQ4NDc5LCA0ODQ4NCwgNDg0ODksIDQ4NDk0LCA0ODQ5OSwgNDg1MDQsIDQ4NTA5LCA0ODUxNCwgNDg1MTksIDQ4NTI0LCAKKyAgICA0ODUyOSwgNDg1MzQsIDQ4NTM5LCA0ODU0NSwgNDg1NTEsIDQ4NTU3LCA0ODU1OSwgNDg1NjIsIDQ4NTY0LCA0ODU2NywgCisgICAgNDg1NjksIDQ4NTcxLCA0ODU3MywgNDg1NzUsIDQ4NTc3LCA0ODU3OSwgNDg1ODEsIDQ4NTgzLCA0ODU4NSwgNDg1ODcsIAorICAgIDQ4NTg5LCA0ODU5MSwgNDg1OTMsIDQ4NTk1LCA0ODU5NywgNDg1OTksIDQ4NjAxLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCAKKyAgICA0ODYyMSwgNDg2MjYsIDQ4NjMxLCA0ODYzNiwgNDg2NDEsIDQ4NjQ2LCA0ODY1MSwgNDg2NTYsIDQ4NjYxLCA0ODY2NiwgCisgICAgNDg2NzEsIDQ4Njc2LCA0ODY4MSwgNDg2ODYsIDQ4NjkxLCA0ODY5NiwgNDg3MDEsIDQ4NzA1LCA0ODcwOSwgNDg3MTMsIAorICAgIDQ4NzE5LCA0ODcyNSwgNDg3MzAsIDQ4NzM1LCA0ODc0MCwgNDg3NDYsIDQ4NzUyLCA0ODc1NywgNDg3NjUsIDQ4NzczLCAKKyAgICA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNSwgNDg4MTMsIDQ4ODIxLCA0ODgyNywgNDg4MzIsIDQ4ODM3LCA0ODg0MiwgCisgICAgNDg4NDUsIDQ4ODQ5LCA0ODg1MywgNDg4NTcsIDQ4ODYxLCA0ODg2NSwgNDg4NjksIDQ4ODc2LCA0ODg4MywgNDg4OTEsIAorICAgIDQ4ODk5LCA0ODkwNCwgNDg5MDksIDQ4OTE2LCA0ODkyMywgNDg5MzAsIDQ4OTM3LCA0ODk0MCwgNDg5NDMsIDQ4OTQ4LCAKKyAgICA0ODk1MCwgNDg5NTQsIDQ4OTU5LCA0ODk2MSwgNDg5NjMsIDQ4OTY1LCA0ODk2NywgNDg5NzIsIDQ4OTc1LCA0ODk3NywgCisgICAgNDg5ODIsIDQ4OTg5LCA0ODk5NiwgNDg5OTksIDQ5MDAzLCA0OTAwOCwgNDkwMTMsIDQ5MDIxLCA0OTAyNywgNDkwMzMsIAorICAgIDQ5MDQ1LCA0OTA1MiwgNDkwNjAsIDQ5MDY1LCA0OTA3MCwgNDkwNzYsIDQ5MDc5LCA0OTA4MiwgNDkwODcsIDQ5MDg5LCAKKyAgICA0OTA5MywgNDkwOTUsIDQ5MDk3LCA0OTA5OSwgNDkxMDEsIDQ5MTAzLCA0OTEwNSwgNDkxMTAsIDQ5MTEyLCA0OTExNCwgCisgICAgNDkxMTYsIDQ5MTE4LCA0OTEyMiwgNDkxMjQsIDQ5MTI3LCA0OTEzMiwgNDkxMzcsIDQ5MTQyLCA0OTE0NywgNDkxNTMsIAorICAgIDQ5MTU5LCA0OTE2MSwgNDkxNjQsIDQ5MTcxLCA0OTE3OCwgNDkxODUsIDQ5MTkyLCA0OTE5NiwgNDkyMDAsIDQ5MjAyLCAKKyAgICA0OTIwNCwgNDkyMDgsIDQ5MjE0LCA0OTIxOSwgNDkyMjEsIDQ5MjI1LCA0OTIzNCwgNDkyNDIsIDQ5MjUwLCA0OTI1NiwgCisgICAgNDkyNjIsIDQ5MjY3LCA0OTI3MywgNDkyNzgsIDQ5MjgxLCA0OTI5NSwgNDkyOTgsIDQ5MzAzLCA0OTMwOCwgNDkzMTQsIAorICAgIDQ5MzI0LCA0OTMyNiwgNDkzMzIsIDQ5MzM4LCA0OTM0MiwgNDkzNDksIDQ5MzUzLCA0OTM1NSwgNDkzNTcsIDQ5MzYxLCAKKyAgICA0OTM2NywgNDkzNzIsIDQ5Mzc4LCA0OTM4MCwgNDkzODYsIDQ5Mzg4LCA0OTM5NCwgNDkzOTYsIDQ5Mzk4LCA0OTQwMywgCisgICAgNDk0MDUsIDQ5NDA5LCA0OTQxNCwgNDk0MTYsIDQ5NDIxLCA0OTQyNiwgNDk0MzAsIDQ5NDM3LCA0OTQ0NywgNDk0NTIsIAorICAgIDQ5NDU4LCA0OTQ2MSwgNDk0NjcsIDQ5NDcwLCA0OTQ3NSwgNDk0ODAsIDQ5NDg0LCA0OTQ4NiwgNDk0ODgsIDQ5NDkyLCAKKyAgICA0OTQ5NiwgNDk1MDAsIDQ5NTA0LCA0OTUwOSwgNDk1MTEsIDQ5NTE2LCA0OTUxOSwgNDk1MjIsIDQ5NTI1LCA0OTUyOSwgCisgICAgNDk1MzMsIDQ5NTM4LCA0OTU0MiwgNDk1NDcsIDQ5NTUyLCA0OTU1NiwgNDk1NjEsIDQ5NTY3LCA0OTU3MCwgNDk1NzYsIAorICAgIDQ5NTgxLCA0OTU4NSwgNDk1OTAsIDQ5NTk2LCA0OTYwMiwgNDk2MDksIDQ5NjE1LCA0OTYyMiwgNDk2MjksIDQ5NjMxLCAKKyAgICA0OTYzOCwgNDk2NDIsIDQ5NjQ4LCA0OTY1NCwgNDk2NTksIDQ5NjY1LCA0OTY2OSwgNDk2NzQsIDQ5Njc3LCA0OTY4MiwgCisgICAgNDk2ODgsIDQ5Njk1LCA0OTcwMywgNDk3MTAsIDQ5NzE5LCA0OTcyOSwgNDk3MzYsIDQ5NzQyLCA0OTc0NiwgNDk3NTMsIAorICAgIDQ5NzU4LCA0OTc2NywgNDk3NzAsIDQ5NzczLCA0OTc4MiwgNDk3OTIsIDQ5Nzk5LCA0OTgwMSwgNDk4MDcsIDQ5ODEyLCAKKyAgICA0OTgxNCwgNDk4MTcsIDQ5ODIxLCA0OTgyOSwgNDk4MzgsIDQ5ODQxLCA0OTg0NiwgNDk4NTEsIDQ5ODU5LCA0OTg2NywgCisgICAgNDk4NzUsIDQ5ODgzLCA0OTg4OSwgNDk4OTUsIDQ5OTAxLCA0OTkwOSwgNDk5MTQsIDQ5OTE3LCA0OTkyMSwgNDk5MjQsIAorICAgIDQ5OTM2LCA0OTk0NiwgNDk5NTcsIDQ5OTY2LCA0OTk3NywgNDk5ODcsIDQ5OTk2LCA1MDAwMiwgNTAwMTAsIDUwMDE0LCAKKyAgICA1MDAyMiwgNTAwMjYsIDUwMDM0LCA1MDA0MSwgNTAwNDgsIDUwMDU3LCA1MDA2NiwgNTAwNzYsIDUwMDg2LCA1MDA5NiwgCisgICAgNTAxMDYsIDUwMTE1LCA1MDEyNCwgNTAxMzQsIDUwMTQ0LCA1MDE1MywgNTAxNjIsIDUwMTY4LCA1MDE3NCwgNTAxODAsIAorICAgIDUwMTg2LCA1MDE5MiwgNTAxOTgsIDUwMjA1LCA1MDIxMSwgNTAyMTgsIDUwMjI1LCA1MDIzMSwgNTAyMzcsIDUwMjQzLCAKKyAgICA1MDI0OSwgNTAyNTUsIDUwMjYxLCA1MDI2OCwgNTAyNzQsIDUwMjgxLCA1MDI4OCwgNTAyOTUsIDUwMzAyLCA1MDMwOSwgCisgICAgNTAzMTYsIDUwMzIzLCA1MDMzMCwgNTAzMzgsIDUwMzQ1LCA1MDM1MywgNTAzNjEsIDUwMzY2LCA1MDM2OSwgNTAzNzMsIAorICAgIDUwMzc3LCA1MDM4MywgNTAzODYsIDUwMzkxLCA1MDM5NywgNTA0MDIsIDUwNDA2LCA1MDQxMSwgNTA0MTcsIDUwNDI0LCAKKyAgICA1MDQyNywgNTA0MzQsIDUwNDQxLCA1MDQ0NSwgNTA0NTMsIDUwNDYxLCA1MDQ2NiwgNTA0NzIsIDUwNDc3LCA1MDQ4MiwgCisgICAgNTA0ODksIDUwNDk2LCA1MDUwNCwgNTA1MTIsIDUwNTIxLCA1MDUyNSwgNTA1MzQsIDUwNTM5LCA1MDU0MywgNTA1NTAsIAorICAgIDUwNTU0LCA1MDU2MCwgNTA1NjgsIDUwNTczLCA1MDU4MCwgNTA1ODQsIDUwNTg5LCA1MDU5MywgNTA1OTgsIDUwNjAyLCAKKyAgICA1MDYwNywgNTA2MTIsIDUwNjIxLCA1MDYyMywgNTA2MjYsIDUwNjI5LCA1MDYzNiwgNTA2NDMsIDUwNjQ5LCA1MDY1NywgCisgICAgNTA2NjMsIDUwNjcwLCA1MDY3NSwgNTA2NzgsIDUwNjgzLCA1MDY4OCwgNTA2OTMsIDUwNzAxLCA1MDcwNSwgNTA3MTIsIAorICAgIDUwNzIwLCA1MDcyOCwgNTA3MzMsIDUwNzM4LCA1MDc0NCwgNTA3NDksIDUwNzU0LCA1MDc2MCwgNTA3NjUsIDUwNzY4LCAKKyAgICA1MDc3MiwgNTA3NzYsIDUwNzgzLCA1MDc5MywgNTA3OTgsIDUwODA3LCA1MDgxNiwgNTA4MjIsIDUwODI4LCA1MDgzMywgCisgICAgNTA4MzgsIDUwODQzLCA1MDg0OCwgNTA4NTQsIDUwODYwLCA1MDg2OCwgNTA4NzYsIDUwODgyLCA1MDg4OCwgNTA4OTIsIAorICAgIDUwODk2LCA1MDkwMywgNTA5MTAsIDUwOTE2LCA1MDkxOSwgNTA5MjIsIDUwOTI2LCA1MDkzMCwgNTA5MzQsIDUwOTM5LCAKKyAgICA1MDk0NSwgNTA5NTEsIDUwOTU4LCA1MDk2NSwgNTA5NzAsIDUwOTc0LCA1MDk3OCwgNTA5ODIsIDUwOTg2LCA1MDk5MCwgCisgICAgNTA5OTQsIDUwOTk4LCA1MTAwMiwgNTEwMDYsIDUxMDEwLCA1MTAxNCwgNTEwMTgsIDUxMDIyLCA1MTAyNiwgNTEwMzAsIAorICAgIDUxMDM0LCA1MTAzOCwgNTEwNDIsIDUxMDQ2LCA1MTA1MCwgNTEwNTQsIDUxMDU4LCA1MTA2MiwgNTEwNjYsIDUxMDcwLCAKKyAgICA1MTA3NCwgNTEwNzgsIDUxMDgyLCA1MTA4NiwgNTEwOTAsIDUxMDk0LCA1MTA5OCwgNTExMDIsIDUxMTA2LCA1MTExMCwgCisgICAgNTExMTQsIDUxMTE4LCA1MTEyMiwgNTExMjYsIDUxMTMwLCA1MTEzNCwgNTExMzgsIDUxMTQyLCA1MTE0NiwgNTExNTAsIAorICAgIDUxMTU0LCA1MTE1OCwgNTExNjIsIDUxMTY2LCA1MTE3MCwgNTExNzQsIDUxMTc4LCA1MTE4MiwgNTExODYsIDUxMTkwLCAKKyAgICA1MTE5NCwgNTExOTgsIDUxMjAyLCA1MTIwNiwgNTEyMTAsIDUxMjE0LCA1MTIxOCwgNTEyMjIsIDUxMjI2LCA1MTIzMCwgCisgICAgNTEyMzQsIDUxMjM4LCA1MTI0MiwgNTEyNDYsIDUxMjUwLCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NiwgNTEyNzAsIAorICAgIDUxMjc0LCA1MTI3OCwgNTEyODIsIDUxMjg2LCA1MTI5MCwgNTEyOTQsIDUxMjk4LCA1MTMwMiwgNTEzMDYsIDUxMzEwLCAKKyAgICA1MTMxNCwgNTEzMTgsIDUxMzIyLCA1MTMyNiwgNTEzMzAsIDUxMzM0LCA1MTMzOCwgNTEzNDIsIDUxMzQ2LCA1MTM1MCwgCisgICAgNTEzNTQsIDUxMzU4LCA1MTM2MiwgNTEzNjYsIDUxMzcwLCA1MTM3NCwgNTEzNzgsIDUxMzgyLCA1MTM4NiwgNTEzOTAsIAorICAgIDUxMzk0LCA1MTM5OCwgNTE0MDIsIDUxNDA2LCA1MTQxMCwgNTE0MTQsIDUxNDE4LCA1MTQyMiwgNTE0MjYsIDUxNDMwLCAKKyAgICA1MTQzNCwgNTE0MzgsIDUxNDQyLCA1MTQ0NiwgNTE0NTAsIDUxNDU0LCA1MTQ1OCwgNTE0NjIsIDUxNDY2LCA1MTQ3MCwgCisgICAgNTE0NzQsIDUxNDc4LCA1MTQ4MiwgNTE0ODYsIDUxNDkwLCA1MTQ5NCwgNTE0OTgsIDUxNTAyLCA1MTUwNiwgNTE1MTAsIAorICAgIDUxNTE0LCA1MTUxOCwgNTE1MjIsIDUxNTI2LCA1MTUzMCwgNTE1MzQsIDUxNTM4LCA1MTU0MiwgNTE1NDYsIDUxNTUwLCAKKyAgICA1MTU1NCwgNTE1NTgsIDUxNTYyLCA1MTU2NiwgNTE1NzAsIDUxNTc0LCA1MTU3OCwgNTE1ODIsIDUxNTg2LCA1MTU5MCwgCisgICAgNTE1OTQsIDUxNTk4LCA1MTYwMiwgNTE2MDYsIDUxNjEwLCA1MTYxNCwgNTE2MTgsIDUxNjIyLCA1MTYyNiwgNTE2MzAsIAorICAgIDUxNjM0LCA1MTYzOCwgNTE2NDIsIDUxNjQ2LCA1MTY1MCwgNTE2NTQsIDUxNjU4LCA1MTY2MiwgNTE2NjYsIDUxNjcwLCAKKyAgICA1MTY3NCwgNTE2NzgsIDUxNjgyLCA1MTY4NiwgNTE2OTAsIDUxNjk0LCA1MTY5OCwgNTE3MDIsIDUxNzA2LCA1MTcxMCwgCisgICAgNTE3MTQsIDUxNzE4LCA1MTcyMiwgNTE3MjYsIDUxNzMwLCA1MTczNCwgNTE3MzgsIDUxNzQyLCA1MTc0NiwgNTE3NTAsIAorICAgIDUxNzU0LCA1MTc1OCwgNTE3NjIsIDUxNzY2LCA1MTc3MCwgNTE3NzQsIDUxNzc4LCA1MTc4MiwgNTE3ODYsIDUxNzkwLCAKKyAgICA1MTc5NCwgNTE3OTgsIDUxODAyLCA1MTgwNiwgNTE4MTAsIDUxODE0LCA1MTgxOCwgNTE4MjIsIDUxODI2LCA1MTgzMCwgCisgICAgNTE4MzQsIDUxODM4LCA1MTg0MiwgNTE4NDYsIDUxODUwLCA1MTg1NCwgNTE4NTgsIDUxODYyLCA1MTg2NiwgNTE4NzAsIAorICAgIDUxODc0LCA1MTg3OCwgNTE4ODIsIDUxODg2LCA1MTg5MCwgNTE4OTQsIDUxODk4LCA1MTkwMiwgNTE5MDYsIDUxOTEwLCAKKyAgICA1MTkxNCwgNTE5MTgsIDUxOTIyLCA1MTkyNiwgNTE5MzAsIDUxOTM0LCA1MTkzOCwgNTE5NDIsIDUxOTQ2LCA1MTk1MCwgCisgICAgNTE5NTQsIDUxOTU4LCA1MTk2MiwgNTE5NjYsIDUxOTcwLCA1MTk3NCwgNTE5NzgsIDUxOTgyLCA1MTk4NiwgNTE5OTAsIAorICAgIDUxOTk0LCA1MjAwMSwgNTIwMDksIDUyMDE1LCA1MjAyMSwgNTIwMjgsIDUyMDM1LCA1MjA0MSwgNTIwNDcsIDUyMDUzLCAKKyAgICA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MiwgNTIwNzcsIDUyMDgzLCA1MjA4OSwgNTIwOTcsIDUyMTA0LCA1MjEwOSwgCisgICAgNTIxMTQsIDUyMTIyLCA1MjEzMSwgNTIxMzgsIDUyMTQ4LCA1MjE1OSwgNTIxNjIsIDUyMTY1LCA1MjE2OSwgNTIxNzMsIAorICAgIDUyMTgwLCA1MjE4NywgNTIxOTgsIDUyMjA5LCA1MjIxOCwgNTIyMjcsIDUyMjMzLCA1MjIzOSwgNTIyNDYsIDUyMjUzLCAKKyAgICA1MjI2MiwgNTIyNzIsIDUyMjgzLCA1MjI5MywgNTIzMDMsIDUyMzEzLCA1MjMyNCwgNTIzMzUsIDUyMzQ1LCA1MjM1NiwgCisgICAgNTIzNjYsIDUyMzc2LCA1MjM4NSwgNTIzOTUsIDUyNDA1LCA1MjQxNSwgNTI0MjUsIDUyNDMyLCA1MjQzOSwgNTI0NDYsIAorICAgIDUyNDUzLCA1MjQ2MywgNTI0NzMsIDUyNDgxLCA1MjQ4OSwgNTI0OTYsIDUyNTAzLCA1MjUxMCwgNTI1MTcsIDUyNTI0LCAKKyAgICA1MjUyOSwgNTI1MzQsIDUyNTQwLCA1MjU0OCwgNTI1NTcsIDUyNTY1LCA1MjU3MywgNTI1ODEsIDUyNTg5LCA1MjU5NywgCisgICAgNTI2MDUsIDUyNjEzLCA1MjYyMSwgNTI2MzAsIDUyNjM5LCA1MjY0OCwgNTI2NTcsIDUyNjY2LCA1MjY3NSwgNTI2ODQsIAorICAgIDUyNjkzLCA1MjcwMiwgNTI3MTEsIDUyNzIwLCA1MjcyOSwgNTI3MzgsIDUyNzQ3LCA1Mjc1NiwgNTI3NjUsIDUyNzc5LCAKKyAgICA1Mjc5NCwgNTI4MDgsIDUyODIzLCA1MjgzNywgNTI4NTEsIDUyODY1LCA1Mjg3OSwgNTI4ODksIDUyOTAwLCA1MjkxMCwgCisgICAgNTI5MjEsIDUyOTM2LCA1Mjk1MSwgNTI5NTksIDUyOTY1LCA1Mjk3MiwgNTI5NzksIDUyOTg2LCA1Mjk5MywgNTI5OTgsIAorICAgIDUzMDA0LCA1MzAwOSwgNTMwMTQsIDUzMDIwLCA1MzAyNSwgNTMwMzAsIDUzMDM1LCA1MzA0MCwgNTMwNDUsIDUzMDUyLCAKKyAgICA1MzA1OCwgNTMwNjYsIDUzMDcxLCA1MzA3NiwgNTMwODAsIDUzMDg0LCA1MzA5MiwgNTMxMDAsIDUzMTA4LCA1MzExNiwgCisgICAgNTMxMjMsIDUzMTMwLCA1MzE0MywgNTMxNTYsIDUzMTY5LCA1MzE4MiwgNTMxOTAsIDUzMTk4LCA1MzIwNCwgNTMyMTAsIAorICAgIDUzMjE3LCA1MzIyNCwgNTMyMzEsIDUzMjM4LCA1MzI0MiwgNTMyNDcsIDUzMjU1LCA1MzI2MywgNTMyNzEsIDUzMjc4LCAKKyAgICA1MzI4MiwgNTMyOTAsIDUzMjk4LCA1MzMwMiwgNTMzMDYsIDUzMzExLCA1MzMxOCwgNTMzMjYsIDUzMzM0LCA1MzM1MywgCisgICAgNTMzNzIsIDUzMzkxLCA1MzQxMCwgNTM0MjksIDUzNDQ4LCA1MzQ2NywgNTM0ODYsIDUzNDkyLCA1MzQ5OSwgNTM1MDgsIAorICAgIDUzNTE2LCA1MzUyNCwgNTM1MzAsIDUzNTMzLCA1MzUzNiwgNTM1NDEsIDUzNTQ0LCA1MzU2NCwgNTM1NzEsIDUzNTc3LCAKKyAgICA1MzU4MywgNTM1ODcsIDUzNTkwLCA1MzU5MywgNTM1OTYsIDUzNjA4LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzYzOSwgCisgICAgNTM2NDMsIDUzNjQ2LCA1MzY1MSwgNTM2NTYsIDUzNjYxLCA1MzY2NywgNTM2NzYsIDUzNjgzLCA1MzY5MCwgNTM2OTgsIAorICAgIDUzNzA1LCA1MzcxMiwgNTM3MTUsIDUzNzIxLCA1MzcyNywgNTM3MzAsIDUzNzMzLCA1MzczOCwgNTM3NDMsIDUzNzQ5LCAKKyAgICA1Mzc1NSwgNTM3NTksIDUzNzY0LCA1Mzc3MSwgNTM3NzUsIDUzNzgxLCA1Mzc4NSwgNTM3ODksIDUzNzk3LCA1MzgwOSwgCisgICAgNTM4MTgsIDUzODIyLCA1MzgyNCwgNTM4MzMsIDUzODQyLCA1Mzg0OCwgNTM4NTEsIDUzODU3LCA1Mzg2MywgNTM4NjgsIAorICAgIDUzODczLCA1Mzg3OCwgNTM4ODMsIDUzODg4LCA1Mzg5MywgNTM4OTUsIDUzOTAxLCA1MzkwNiwgNTM5MTQsIDUzOTE4LCAKKyAgICA1MzkyNCwgNTM5MjcsIDUzOTMxLCA1MzkzOCwgNTM5NDUsIDUzOTQ3LCA1Mzk0OSwgNTM5NTUsIDUzOTYxLCA1Mzk2NywgCisgICAgNTM5NzYsIDUzOTg1LCA1Mzk5MiwgNTM5OTksIDU0MDA1LCA1NDAxMiwgNTQwMTcsIDU0MDIyLCA1NDAyNywgNTQwMzMsIAorICAgIDU0MDM5LCA1NDA0NCwgNTQwNTEsIDU0MDU1LCA1NDA1OSwgNTQwNzIsIDU0MDg1LCA1NDA5NywgNTQxMDYsIDU0MTEyLCAKKyAgICA1NDExOSwgNTQxMjQsIDU0MTI5LCA1NDEzNCwgNTQxMzksIDU0MTQ0LCA1NDE0NiwgNTQxNTMsIDU0MTYxLCA1NDE2OSwgCisgICAgNTQxNzcsIDU0MTg0LCA1NDE5MiwgNTQxOTgsIDU0MjAzLCA1NDIwOSwgNTQyMTUsIDU0MjIxLCA1NDIyOCwgNTQyMzQsIAorICAgIDU0MjQyLCA1NDI1MCwgNTQyNTgsIDU0MjY2LCA1NDI3NCwgNTQyODAsIDU0Mjg2LCA1NDI5NSwgNTQyOTksIDU0MzA4LCAKKyAgICA1NDMxNywgNTQzMjYsIDU0MzM0LCA1NDMzOCwgNTQzNDQsIDU0MzUxLCA1NDM1OCwgNTQzNjIsIDU0MzY4LCA1NDM3NiwgCisgICAgNTQzODIsIDU0Mzg3LCA1NDM5MywgNTQzOTgsIDU0NDAzLCA1NDQxMCwgNTQ0MTcsIDU0NDIyLCA1NDQyNywgNTQ0MzUsIAorICAgIDU0NDQzLCA1NDQ1MywgNTQ0NjMsIDU0NDcwLCA1NDQ3NywgNTQ0ODEsIDU0NDg1LCA1NDQ5NywgNTQ1MDMsIDU0NTEwLCAKKyAgICA1NDUxNSwgNTQ1MjAsIDU0NTI3LCA1NDUzNCwgNTQ1NDAsIDU0NTQ2LCA1NDU1NiwgNTQ1NjMsIDU0NTcxLCA1NDU3OSwgCisgICAgNTQ1ODgsIDU0NTk1LCA1NDYwMSwgNTQ2MDgsIDU0NjE0LCA1NDYyMiwgNTQ2MzAsIDU0NjM4LCA1NDY0NiwgNTQ2NTIsIAorICAgIDU0NjU3LCA1NDY2NywgNTQ2NzgsIDU0Njg1LCA1NDY5NCwgNTQ3MDAsIDU0NzA1LCA1NDcxMCwgNTQ3MjAsIDU0NzI3LCAKKyAgICA1NDczMywgNTQ3MzksIDU0NzQ3LCA1NDc1MiwgNTQ3NTksIDU0NzY2LCA1NDc3NywgNTQ3ODQsIDU0NzkxLCA1NDc5OCwgCisgICAgNTQ4MDUsIDU0ODEyLCA1NDgyMCwgNTQ4MjgsIDU0ODQxLCA1NDg1NCwgNTQ4NjYsIDU0ODc4LCA1NDg5MiwgNTQ5MDYsIAorICAgIDU0OTEyLCA1NDkxOCwgNTQ5MjcsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTU5LCA1NDk2OCwgNTQ5NzcsIDU0OTg2LCAKKyAgICA1NDk5NCwgNTUwMDIsIDU1MDEyLCA1NTAyMiwgNTUwMzYsIDU1MDUwLCA1NTA1OSwgNTUwNjgsIDU1MDgxLCA1NTA5NCwgCisgICAgNTUxMDMsIDU1MTEyLCA1NTEyMywgNTUxMzQsIDU1MTQwLCA1NTE0NiwgNTUxNTUsIDU1MTY0LCA1NTE2OSwgNTUxNzQsIAorICAgIDU1MTgyLCA1NTE4OCwgNTUxOTQsIDU1MjAyLCA1NTIxMCwgNTUyMjMsIDU1MjM2LCA1NTI0MCwgNTUyNDQsIDU1MjUyLCAKKyAgICA1NTI2MCwgNTUyNjcsIDU1Mjc1LCA1NTI4MywgNTUyOTIsIDU1MzAxLCA1NTMwNywgNTUzMTMsIDU1MzIwLCA1NTMyNywgCisgICAgNTUzMzQsIDU1MzQxLCA1NTM1MCwgNTUzNTksIDU1MzYyLCA1NTM2NSwgNTUzNzAsIDU1Mzc1LCA1NTM4MSwgNTUzODcsIAorICAgIDU1Mzk0LCA1NTQwMSwgNTU0MTIsIDU1NDIzLCA1NTQzMCwgNTU0MzcsIDU1NDQ1LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCAKKyAgICA1NTQ3NywgNTU0ODUsIDU1NDkxLCA1NTQ5NywgNTU1MDEsIDU1NTA1LCA1NTUxMywgNTU1MjEsIDU1NTI2LCA1NTUzMSwgCisgICAgNTU1MzYsIDU1NTQxLCA1NTU0NywgNTU1NjEsIDU1NTY4LCA1NTU3NSwgNTU1NzksIDU1NTgxLCA1NTU4MywgNTU1ODgsIAorICAgIDU1NTkzLCA1NTU5OCwgNTU2MDIsIDU1NjEwLCA1NTYxNywgNTU2MjQsIDU1NjMyLCA1NTY0NCwgNTU2NTIsIDU1NjYwLCAKKyAgICA1NTY3MSwgNTU2NzUsIDU1Njc5LCA1NTY4NSwgNTU2OTMsIDU1NzA2LCA1NTcxMywgNTU3MjAsIDU1NzI3LCA1NTczMywgCisgICAgNTU3NDAsIDU1NzQ5LCA1NTc1OCwgNTU3NjQsIDU1NzcwLCA1NTc3NiwgNTU3ODYsIDU1Nzk2LCA1NTgwNCwgNTU4MTMsIAorICAgIDU1ODE4LCA1NTgyMSwgNTU4MjYsIDU1ODMxLCA1NTgzNiwgNTU4NDIsIDU1ODQ4LCA1NTg1MiwgNTU4NTUsIDU1ODU4LCAKKyAgICA1NTg2MSwgNTU4NjYsIDU1ODcxLCA1NTg3NywgNTU4ODMsIDU1ODg3LCA1NTg5MSwgNTU4OTgsIDU1OTA1LCA1NTkxMiwgCisgICAgNTU5MTksIDU1OTI2LCA1NTkzMywgNTU5NDMsIDU1OTUzLCA1NTk2MCwgNTU5NjcsIDU1OTc1LCA1NTk4MywgNTU5ODcsIAorICAgIDU1OTkyLCA1NTk5NywgNTYwMDMsIDU2MDA5LCA1NjAxMiwgNTYwMTUsIDU2MDE4LCA1NjAyMSwgNTYwMjYsIDU2MDMxLCAKKyAgICA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgNTYwNTUsIDU2MDU5LCA1NjA2MywgNTYwNjgsIDU2MDczLCA1NjA3NywgCisgICAgNTYwODEsIDU2MDg3LCA1NjA5MSwgNTYwOTcsIDU2MTAyLCA1NjEwOSwgNTYxMTcsIDU2MTI0LCA1NjEzMiwgNTYxMzksIAorICAgIDU2MTQ3LCA1NjE1NiwgNTYxNjMsIDU2MTczLCA1NjE4NCwgNTYxOTAsIDU2MTk5LCA1NjIwNSwgNTYyMTQsIDU2MjIzLCAKKyAgICA1NjIyOSwgNTYyMzUsIDU2MjM5LCA1NjI0MywgNTYyNTIsIDU2MjYxLCA1NjI2OCwgNTYyNzUsIDU2Mjg0LCA1NjI5MywgCisgICAgNTYyOTksIDU2MzA1LCA1NjMxMiwgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMzAsIDU2MzM1LCA1NjM0MCwgNTYzNDgsIAorICAgIDU2MzU2LCA1NjM1OSwgNTYzNjMsIDU2MzcyLCA1NjM4MiwgNTYzOTEsIDU2NDAxLCA1NjQxMiwgNTY0MjUsIDU2NDI5LCAKKyAgICA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU3LCA1NjQ2MywgNTY0NzAsIDU2NDc3LCA1NjQ4MywgCisgICAgNTY0ODksIDU2NDk1LCA1NjUwMSwgNTY1MDksIDU2NTE3LCA1NjUyNCwgNTY1MzEsIDU2NTM4LCAwLCAwLCA1NjU0NSwgCisgICAgNTY1NTQsIDU2NTYzLCA1NjU3MywgNTY1ODMsIDU2NTkyLCA1NjYwMSwgNTY2MTAsIDU2NjE5LCA1NjYyNSwgNTY2MzAsIAorICAgIDU2NjM5LCA1NjY0OSwgNTY2NTgsIDU2NjY4LCA1NjY3NSwgNTY2ODIsIDU2Njg5LCA1NjY5NiwgNTY3MDEsIDU2NzA2LCAKKyAgICA1NjcxMSwgNTY3MTYsIDU2NzI0LCA1NjczMywgNTY3NDEsIDU2NzUwLCA1Njc1NCwgNTY3NTgsIDU2NzYyLCA1Njc2NiwgCisgICAgNTY3NzYsIDAsIDAsIDU2Nzc5LCA1Njc4OCwgNTY3OTcsIDU2ODA2LCA1NjgxNSwgNTY4MjEsIDU2ODI3LCA1NjgzMywgCisgICAgNTY4MzksIDU2ODQ5LCA1Njg1OSwgNTY4NjksIDU2ODc5LCA1Njg4OSwgNTY4OTksIDU2OTA5LCA1NjkxOSwgNTY5MjYsIAorICAgIDU2OTMzLCA1Njk0MCwgNTY5NDcsIDU2OTU0LCA1Njk2MSwgNTY5NjgsIDU2OTc1LCA1Njk4MSwgNTY5ODcsIDU2OTkzLCAKKyAgICA1Njk5OSwgNTcwMDUsIDU3MDExLCA1NzAxNywgNTcwMjMsIDU3MDM0LCAwLCAwLCAwLCA1NzA0NCwgNTcwNTEsIDU3MDU0LCAKKyAgICA1NzA1OCwgNTcwNjIsIDU3MDY3LCA1NzA3MiwgNTcwNzcsIDU3MDgwLCA1NzA4OSwgNTcwOTgsIDU3MTA3LCAwLCA1NzExNiwgCisgICAgNTcxMjIsIDU3MTI4LCA1NzEzNiwgNTcxNDYsIDU3MTUzLCA1NzE2MiwgNTcxNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MTcwLCA1NzE3OSwgCisgICAgNTcxODgsIDU3MTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzIwNiwgCisgICAgNTcyMTEsIDU3MjE2LCA1NzIyMSwgNTcyMjYsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ2LCA1NzI1MSwgNTcyNTYsIAorICAgIDU3MjYyLCA1NzI2NiwgNTcyNzEsIDU3Mjc2LCA1NzI4MSwgNTcyODYsIDU3MjkxLCA1NzI5NiwgNTczMDEsIDU3MzA2LCAKKyAgICA1NzMxMSwgNTczMTYsIDU3MzIxLCA1NzMyNiwgNTczMzEsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NiwgCisgICAgNTczNjEsIDU3MzY2LCA1NzM3MSwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTMsIDU3NDAyLCA1NzQwNywgNTc0MTUsIAorICAgIDU3NDIyLCA1NzQzMSwgNTc0MzYsIDU3NDQxLCA1NzQ0NiwgNTc0NTIsIDAsIDU3NDU5LCA1NzQ2NCwgNTc0NjksIDU3NDc0LCAKKyAgICA1NzQ3OSwgNTc0ODQsIDU3NDg5LCA1NzQ5NCwgNTc0OTksIDU3NTA0LCA1NzUwOSwgNTc1MTUsIDU3NTE5LCA1NzUyNCwgCisgICAgNTc1MjksIDU3NTM0LCA1NzUzOSwgNTc1NDQsIDU3NTQ5LCA1NzU1NCwgNTc1NTksIDU3NTY0LCA1NzU2OSwgNTc1NzQsIAorICAgIDU3NTc5LCA1NzU4NCwgNTc1ODksIDU3NTk0LCA1NzU5OSwgNTc2MDQsIDU3NjA5LCA1NzYxNCwgNTc2MTksIDU3NjI0LCAKKyAgICA1NzYyOSwgNTc2MzUsIDU3NjQwLCA1NzY0NiwgNTc2NTUsIDU3NjYwLCA1NzY2OCwgNTc2NzUsIDU3Njg0LCA1NzY4OSwgCisgICAgNTc2OTQsIDU3Njk5LCA1NzcwNSwgMCwgNTc3MTIsIDU3NzIwLCA1NzcyOCwgNTc3MzcsIDU3NzQ0LCA1Nzc1MiwgNTc3NTgsIAorICAgIDU3NzY3LCA1Nzc3NSwgNTc3ODMsIDU3NzkxLCA1Nzc5OSwgNTc4MDcsIDU3ODE1LCA1NzgyMCwgNTc4MjcsIDU3ODMzLCAKKyAgICA1Nzg0MCwgNTc4NDgsIDU3ODU1LCA1Nzg2MiwgNTc4NzAsIDU3ODc2LCA1Nzg4MiwgNTc4ODksIDU3ODk2LCA1NzkwNiwgCisgICAgNTc5MTYsIDU3OTIzLCA1NzkzMCwgNTc5MzUsIDU3OTQ1LCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIAorICAgIDU3OTgwLCA1Nzk4NSwgNTc5OTAsIDU3OTk1LCA1ODAwMCwgNTgwMDUsIDU4MDEwLCA1ODAxNSwgNTgwMjAsIDU4MDI1LCAKKyAgICA1ODAzMCwgNTgwMzUsIDU4MDQwLCA1ODA0NSwgNTgwNTAsIDU4MDU1LCA1ODA2MCwgNTgwNjUsIDU4MDcwLCA1ODA3NSwgCisgICAgNTgwODAsIDU4MDg1LCA1ODA5MCwgNTgwOTUsIDU4MTAwLCA1ODEwNSwgNTgxMDksIDU4MTEzLCA1ODExOCwgNTgxMjMsIAorICAgIDU4MTI4LCA1ODEzMywgNTgxMzgsIDU4MTQzLCA1ODE0OCwgNTgxNTMsIDU4MTU4LCA1ODE2MywgNTgxNjgsIDU4MTczLCAKKyAgICA1ODE3OCwgNTgxODMsIDU4MTg4LCA1ODE5MywgNTgxOTgsIDU4MjAzLCA1ODIxMCwgNTgyMTcsIDU4MjI0LCA1ODIzMSwgCisgICAgNTgyMzgsIDU4MjQ1LCA1ODI1MiwgNTgyNTksIDU4MjY2LCA1ODI3MywgNTgyODAsIDU4Mjg3LCA1ODI5NCwgNTgzMDEsIAorICAgIDU4MzA2LCA1ODMxMSwgNTgzMTgsIDU4MzI1LCA1ODMzMiwgNTgzMzksIDU4MzQ2LCA1ODM1MywgNTgzNjAsIDU4MzY3LCAKKyAgICA1ODM3NCwgNTgzODEsIDU4Mzg4LCA1ODM5NSwgNTg0MDEsIDU4NDA3LCA1ODQxMywgNTg0MTksIDU4NDI2LCA1ODQzMywgCisgICAgNTg0NDAsIDU4NDQ3LCA1ODQ1NCwgNTg0NjEsIDU4NDY4LCA1ODQ3NSwgNTg0ODIsIDU4NDg5LCA1ODQ5NywgNTg1MDUsIAorICAgIDU4NTEzLCA1ODUyMSwgNTg1MjksIDU4NTM3LCA1ODU0NSwgNTg1NTMsIDU4NTU3LCA1ODU2MywgNTg1NjksIDU4NTczLCAKKyAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5OCwgNTg2MDUsIDU4NjEyLCA1ODYxOSwgNTg2MjQsIDU4NjMwLCA1ODYzNiwgCisgICAgNTg2NDMsIDAsIDAsIDAsIDAsIDAsIDU4NjUwLCA1ODY1OCwgNTg2NjcsIDU4Njc2LCA1ODY4NCwgNTg2OTAsIDU4Njk1LCAKKyAgICA1ODcwMCwgNTg3MDUsIDU4NzEwLCA1ODcxNSwgNTg3MjAsIDU4NzI1LCA1ODczMCwgNTg3MzUsIDU4NzQwLCA1ODc0NSwgCisgICAgNTg3NTAsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIAorICAgIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCAKKyAgICA1ODg1MCwgNTg4NTUsIDU4ODYwLCA1ODg2NSwgNTg4NzAsIDU4ODc1LCA1ODg4MCwgNTg4ODUsIDAsIDU4ODkwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1ODg5NSwgMCwgMCwgNTg5MDAsIDU4OTA0LCA1ODkwOSwgNTg5MTQsIDU4OTE5LCA1ODkyNCwgNTg5MzMsIAorICAgIDU4OTM4LCA1ODk0MywgNTg5NDgsIDU4OTUzLCA1ODk1OCwgNTg5NjMsIDU4OTY4LCA1ODk3MywgNTg5ODAsIDU4OTg1LCAKKyAgICA1ODk5MCwgNTg5OTksIDU5MDA2LCA1OTAxMSwgNTkwMTYsIDU5MDIxLCA1OTAyOCwgNTkwMzMsIDU5MDQwLCA1OTA0NSwgCisgICAgNTkwNTAsIDU5MDU3LCA1OTA2NCwgNTkwNjksIDU5MDc0LCA1OTA3OSwgNTkwODYsIDU5MDkzLCA1OTA5OCwgNTkxMDMsIAorICAgIDU5MTA4LCA1OTExMywgNTkxMTgsIDU5MTI1LCA1OTEzMiwgNTkxMzcsIDU5MTQyLCA1OTE0NywgNTkxNTIsIDU5MTU3LCAKKyAgICA1OTE2MiwgNTkxNjcsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg3LCA1OTE5NCwgNTkxOTksIDU5MjA0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1OTIwOSwgNTkyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5MjIxLCA1OTIyNiwgNTkyMzAsIDU5MjM0LCA1OTIzOCwgNTkyNDIsIDU5MjQ2LCA1OTI1MCwgNTkyNTQsIDU5MjU4LCAKKyAgICA1OTI2MiwgNTkyNjYsIDU5MjcyLCA1OTI3NiwgNTkyODAsIDU5Mjg0LCA1OTI4OCwgNTkyOTIsIDU5Mjk2LCA1OTMwMCwgCisgICAgNTkzMDQsIDU5MzA4LCA1OTMxMiwgNTkzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MzIwLCA1OTMyNCwgCisgICAgNTkzMjgsIDU5MzMyLCA1OTMzNiwgNTkzNDAsIDU5MzQ0LCAwLCA1OTM0OCwgNTkzNTIsIDU5MzU2LCA1OTM2MCwgNTkzNjQsIAorICAgIDU5MzY4LCA1OTM3MiwgMCwgNTkzNzYsIDU5MzgwLCA1OTM4NCwgNTkzODgsIDU5MzkyLCA1OTM5NiwgNTk0MDAsIDAsIAorICAgIDU5NDA0LCA1OTQwOCwgNTk0MTIsIDU5NDE2LCA1OTQyMCwgNTk0MjQsIDU5NDI4LCAwLCA1OTQzMiwgNTk0MzYsIDU5NDQwLCAKKyAgICA1OTQ0NCwgNTk0NDgsIDU5NDUyLCA1OTQ1NiwgMCwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzIsIDU5NDc2LCA1OTQ4MCwgCisgICAgNTk0ODQsIDAsIDU5NDg4LCA1OTQ5MiwgNTk0OTYsIDU5NTAwLCA1OTUwNCwgNTk1MDgsIDU5NTEyLCAwLCA1OTUxNiwgCisgICAgNTk1MjAsIDU5NTI0LCA1OTUyOCwgNTk1MzIsIDU5NTM2LCA1OTU0MCwgMCwgNTk1NDQsIDU5NTQ5LCA1OTU1NCwgNTk1NTksIAorICAgIDU5NTY0LCA1OTU2OSwgNTk1NzQsIDU5NTc4LCA1OTU4MywgNTk1ODgsIDU5NTkzLCA1OTU5NywgNTk2MDIsIDU5NjA3LCAKKyAgICA1OTYxMiwgNTk2MTcsIDU5NjIxLCA1OTYyNiwgNTk2MzEsIDU5NjM2LCA1OTY0MSwgNTk2NDYsIDU5NjUxLCA1OTY1NSwgCisgICAgNTk2NjAsIDU5NjY1LCA1OTY3MiwgNTk2NzcsIDU5NjgyLCA1OTY4OCwgNTk2OTUsIDU5NzAyLCA1OTcxMSwgNTk3MTgsIAorICAgIDU5NzI3LCA1OTczMSwgNTk3MzUsIDU5NzQxLCA1OTc0NywgNTk3NTMsIDU5NzYxLCA1OTc2NywgNTk3NzEsIDU5Nzc1LCAKKyAgICA1OTc3OSwgNTk3ODUsIDU5NzkxLCA1OTc5NSwgNTk3OTcsIDU5ODAxLCA1OTgwNywgNTk4MDksIDU5ODEzLCA1OTgxNiwgCisgICAgNTk4MTksIDU5ODI1LCA1OTgzMCwgNTk4MzQsIDU5ODM4LCA1OTg0MywgNTk4NDksIDU5ODU0LCA1OTg1OSwgNTk4NjQsIAorICAgIDU5ODY5LCA1OTg3NiwgNTk4ODMsIDU5ODg4LCA1OTg5MywgNTk4OTgsIDU5OTAzLCA1OTkwOCwgNTk5MTMsIDU5OTE3LCAKKyAgICA1OTkyMSwgNTk5MjgsIDU5OTM1LCA1OTk0MSwgNTk5NDUsIDU5OTUwLCA1OTk1MywgNTk5NTcsIDU5OTY0LCA1OTk2OCwgCisgICAgNTk5NzIsIDU5OTc2LCA1OTk4MCwgNTk5ODYsIDU5OTkyLCA1OTk5NiwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTYsIAorICAgIDYwMDIxLCA2MDAyNiwgNjAwMjgsIDYwMDMxLCA2MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjAwNDEsIDYwMDQ1LCA2MDA0OSwgNjAwNTQsIDYwMDU5LCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODEsIAorICAgIDYwMDg2LCA2MDA5MCwgNjAwOTQsIDYwMDk4LCA2MDEwMiwgNjAxMDcsIDYwMTEyLCA2MDExNywgNjAxMjIsIDYwMTI2LCAKKyAgICA2MDEzMCwgNjAxMzUsIDYwMTQwLCA2MDE0NSwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgNjAxNjIsIDYwMTY2LCA2MDE3MCwgCisgICAgNjAxNzQsIDYwMTc4LCA2MDE4MiwgNjAxODcsIDYwMTkyLCA2MDE5NiwgNjAyMDEsIDYwMjA2LCA2MDIxNSwgNjAyMTksIAorICAgIDYwMjIzLCA2MDIyNywgNjAyMzQsIDYwMjM4LCA2MDI0MywgNjAyNDgsIDYwMjUyLCA2MDI1NiwgNjAyNjIsIDYwMjY3LCAKKyAgICA2MDI3MiwgNjAyNzcsIDYwMjgyLCA2MDI4NiwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA3LCA2MDMxMiwgCisgICAgNjAzMTYsIDYwMzIwLCA2MDMyNSwgNjAzMzAsIDYwMzM1LCA2MDMzOSwgNjAzNDMsIDYwMzQ4LCA2MDM1MywgNjAzNTksIAorICAgIDYwMzY1LCA2MDM2OSwgNjAzNzUsIDYwMzgxLCA2MDM4NSwgNjAzOTEsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDExLCAKKyAgICA2MDQxNywgNjA0MjEsIDYwNDI1LCA2MDQzMSwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTEsIDYwNDU1LCA2MDQ2MywgCisgICAgNjA0NjksIDYwNDc1LCA2MDQ4MSwgNjA0ODYsIDYwNDkxLCA2MDQ5NiwgNjA1MDIsIDYwNTA2LCA2MDUxMiwgNjA1MTYsIAorICAgIDYwNTIwLCA2MDUyNiwgNjA1MzIsIDYwNTM4LCA2MDU0NCwgNjA1NTAsIDYwNTU2LCA2MDU2MiwgNjA1NjgsIDYwNTc0LCAKKyAgICA2MDU4MCwgNjA1ODYsIDYwNTkyLCA2MDU5NiwgNjA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYwNjA4LCA2MDYxMSwgNjA2MTUsIDYwNjE5LCA2MDYyMywgNjA2MjcsIDYwNjMwLCA2MDYzMywgNjA2MzcsIDYwNjQxLCAKKyAgICA2MDY0NSwgNjA2NDksIDYwNjUyLCA2MDY1NywgNjA2NjEsIDYwNjY1LCA2MDY2OSwgNjA2NzQsIDYwNjc4LCA2MDY4MiwgCisgICAgNjA2ODYsIDYwNjkwLCA2MDY5NiwgNjA3MDIsIDYwNzA2LCA2MDcxMCwgNjA3MTQsIDYwNzE4LCA2MDcyMiwgNjA3MjYsIAorICAgIDYwNzMwLCA2MDczNCwgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTIsIDYwNzU2LCA2MDc2MCwgNjA3NjQsIDYwNzY4LCAKKyAgICA2MDc3MiwgNjA3NzYsIDYwNzgwLCA2MDc4NCwgNjA3ODgsIDYwNzkyLCA2MDc5NiwgNjA4MDAsIDYwODA0LCA2MDgwOCwgCisgICAgNjA4MTIsIDYwODE2LCA2MDgyMiwgNjA4MjgsIDYwODMzLCA2MDgzOCwgNjA4NDIsIDYwODQ2LCA2MDg1MCwgNjA4NTQsIAorICAgIDYwODU4LCA2MDg2MiwgNjA4NjYsIDYwODcwLCA2MDg3NCwgNjA4NzgsIDYwODgyLCA2MDg4NiwgNjA4OTAsIDYwODk0LCAKKyAgICA2MDg5OCwgNjA5MDIsIDYwOTA2LCA2MDkxMCwgNjA5MTQsIDYwOTE4LCA2MDkyMiwgNjA5MjYsIDYwOTMwLCA2MDkzNCwgCisgICAgNjA5NDAsIDYwOTQ0LCA2MDk0OCwgNjA5NTIsIDYwOTU2LCA2MDk2MCwgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIAorICAgIDYwOTg0LCA2MDk4OCwgNjA5OTIsIDYwOTk2LCA2MTAwMCwgNjEwMDQsIDYxMDA4LCA2MTAxMiwgNjEwMTYsIDYxMDIwLCAKKyAgICA2MTAyNCwgNjEwMjgsIDYxMDMyLCA2MTAzOSwgNjEwNDMsIDYxMDQ5LCA2MTA1MywgNjEwNTcsIDYxMDYxLCA2MTA2NSwgCisgICAgNjEwNjksIDYxMDcyLCA2MTA3NiwgNjEwODAsIDYxMDg0LCA2MTA4OCwgNjEwOTIsIDYxMDk2LCA2MTEwMCwgNjExMDQsIAorICAgIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIDYxMTQ0LCAKKyAgICA2MTE0OCwgNjExNTIsIDYxMTU2LCA2MTE2MCwgNjExNjQsIDYxMTY4LCA2MTE3MiwgNjExNzYsIDYxMTgwLCA2MTE4NCwgCisgICAgNjExODgsIDYxMTkyLCA2MTE5NiwgNjEyMDAsIDYxMjA2LCA2MTIxMCwgNjEyMTQsIDYxMjE4LCA2MTIyMiwgNjEyMjYsIAorICAgIDYxMjMwLCA2MTIzNCwgNjEyMzgsIDYxMjQyLCA2MTI0NiwgNjEyNTAsIDYxMjU0LCA2MTI1OCwgNjEyNjIsIDYxMjY2LCAKKyAgICA2MTI3MCwgNjEyNzQsIDYxMjc4LCA2MTI4MiwgNjEyODYsIDYxMjkwLCA2MTI5NCwgNjEyOTgsIDYxMzAyLCA2MTMwNiwgCisgICAgNjEzMTAsIDYxMzE0LCA2MTMyMiwgNjEzMjYsIDYxMzMwLCA2MTMzNCwgNjEzMzgsIDYxMzQyLCA2MTM0OCwgNjEzNTIsIAorICAgIDYxMzU2LCA2MTM2MCwgNjEzNjQsIDYxMzY4LCA2MTM3MiwgNjEzNzYsIDYxMzgwLCA2MTM4NCwgNjEzODgsIDYxMzkyLCAKKyAgICA2MTM5NiwgNjE0MDAsIDYxNDA2LCA2MTQxMCwgNjE0MTQsIDYxNDE4LCA2MTQyMiwgNjE0MjYsIDYxNDMwLCA2MTQzNCwgCisgICAgNjE0MzgsIDYxNDQyLCA2MTQ0NiwgNjE0NTAsIDYxNDU0LCA2MTQ1OCwgNjE0NjIsIDYxNDY2LCA2MTQ3MCwgNjE0NzQsIAorICAgIDYxNDc4LCA2MTQ4MiwgNjE0ODYsIDYxNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQ5NCwgNjE1MDMsIDYxNTExLCA2MTUyMiwgNjE1MzIsIAorICAgIDYxNTQwLCA2MTU0OSwgNjE1NTgsIDYxNTY4LCA2MTU4MCwgNjE1OTIsIDYxNjA0LCAwLCAwLCAwLCAwLCA2MTYxMCwgCisgICAgNjE2MTMsIDYxNjE2LCA2MTYyMSwgNjE2MjQsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCA2MTY0NywgNjE2NTEsIAorICAgIDYxNjU2LCA2MTY2MSwgNjE2NjUsIDYxNjY5LCA2MTY3NCwgNjE2NzksIDYxNjg0LCA2MTY4OSwgNjE2OTIsIDYxNjk1LCAKKyAgICA2MTcwMSwgNjE3MDcsIDYxNzEyLCA2MTcxNywgNjE3MjQsIDYxNzMxLCA2MTczNSwgNjE3MzksIDYxNzQzLCA2MTc1MSwgCisgICAgNjE3NTcsIDYxNzY0LCA2MTc2OSwgNjE3NzQsIDYxNzc5LCA2MTc4NCwgNjE3ODksIDYxNzk0LCA2MTc5OSwgNjE4MDUsIAorICAgIDYxODEwLCA2MTgxNiwgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQyLCA2MTg0NywgNjE4NTEsIDYxODU3LCAKKyAgICA2MTg2OCwgNjE4NzgsIDYxODkzLCA2MTkwMywgNjE5MDcsIDYxOTE3LCA2MTkyMywgNjE5MjksIDYxOTM1LCA2MTk0MCwgCisgICAgNjE5NDMsIDYxOTQ4LCA2MTk1MiwgMCwgNjE5NTgsIDYxOTYyLCA2MTk2NSwgNjE5NjksIDYxOTcyLCA2MTk3NiwgNjE5NzksIAorICAgIDYxOTgzLCA2MTk4NiwgNjE5OTAsIDYxOTkzLCA2MTk5NiwgNjIwMDAsIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCAKKyAgICA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1NiwgCisgICAgNjIwNjAsIDYyMDY0LCA2MjA2OCwgNjIwNzIsIDYyMDc2LCA2MjA4MCwgNjIwODQsIDYyMDg4LCA2MjA5MywgNjIwOTcsIAorICAgIDYyMTAxLCA2MjEwNSwgNjIxMDksIDYyMTEyLCA2MjExNiwgNjIxMjAsIDYyMTI0LCA2MjEyOCwgNjIxMzIsIDYyMTM2LCAKKyAgICA2MjEzOSwgNjIxNDMsIDYyMTQ2LCA2MjE1MCwgNjIxNTQsIDYyMTU4LCA2MjE2MiwgNjIxNjYsIDYyMTcwLCA2MjE3NCwgCisgICAgNjIxNzgsIDYyMTgyLCA2MjE4NiwgNjIxOTAsIDYyMTk0LCA2MjE5NywgNjIyMDEsIDYyMjA1LCA2MjIwOSwgNjIyMTMsIAorICAgIDYyMjE3LCA2MjIyMCwgNjIyMjUsIDYyMjI5LCA2MjIzNCwgNjIyMzgsIDYyMjQyLCA2MjI0NiwgNjIyNTAsIDYyMjU0LCAKKyAgICA2MjI1OCwgNjIyNjMsIDYyMjY3LCA2MjI3MSwgNjIyNzUsIDYyMjc5LCA2MjI4MywgNjIyODcsIDYyMjkxLCAwLCAwLCAKKyAgICA2MjI5NiwgNjIzMDQsIDYyMzEyLCA2MjMxOSwgNjIzMjYsIDYyMzMwLCA2MjMzNiwgNjIzNDEsIDYyMzQ2LCA2MjM1MCwgCisgICAgNjIzNTMsIDYyMzU3LCA2MjM2MCwgNjIzNjQsIDYyMzY3LCA2MjM3MSwgNjIzNzQsIDYyMzc4LCA2MjM4MSwgNjIzODQsIAorICAgIDYyMzg4LCA2MjM5MiwgNjIzOTYsIDYyNDAwLCA2MjQwNCwgNjI0MDgsIDYyNDEyLCA2MjQxNiwgNjI0MjAsIDYyNDI0LCAKKyAgICA2MjQyOCwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MiwgNjI0NTYsIDYyNDYwLCA2MjQ2NCwgCisgICAgNjI0NjgsIDYyNDcyLCA2MjQ3NiwgNjI0ODEsIDYyNDg1LCA2MjQ4OSwgNjI0OTMsIDYyNDk3LCA2MjUwMCwgNjI1MDQsIAorICAgIDYyNTA4LCA2MjUxMiwgNjI1MTYsIDYyNTIwLCA2MjUyNCwgNjI1MjcsIDYyNTMxLCA2MjUzNCwgNjI1MzgsIDYyNTQyLCAKKyAgICA2MjU0NiwgNjI1NTAsIDYyNTU0LCA2MjU1OCwgNjI1NjIsIDYyNTY2LCA2MjU3MCwgNjI1NzQsIDYyNTc4LCA2MjU4MiwgCisgICAgNjI1ODUsIDYyNTg5LCA2MjU5MywgNjI1OTcsIDYyNjAxLCA2MjYwNSwgNjI2MDgsIDYyNjEzLCA2MjYxNywgNjI2MjIsIAorICAgIDYyNjI2LCA2MjYzMCwgNjI2MzQsIDYyNjM4LCA2MjY0MiwgNjI2NDYsIDYyNjUxLCA2MjY1NSwgNjI2NTksIDYyNjYzLCAKKyAgICA2MjY2NywgNjI2NzEsIDYyNjc1LCA2MjY3OSwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgCisgICAgNjI3MTEsIDYyNzE1LCA2MjcyMSwgMCwgMCwgMCwgMCwgMCwgNjI3MjYsIDYyNzMxLCA2MjczNiwgNjI3NDEsIDYyNzQ2LCAKKyAgICA2Mjc1MSwgNjI3NTYsIDYyNzYxLCA2Mjc2NSwgNjI3NzAsIDYyNzc1LCA2Mjc4MCwgNjI3ODUsIDYyNzkwLCA2Mjc5NSwgCisgICAgNjI4MDAsIDYyODA1LCA2MjgxMCwgNjI4MTQsIDYyODE5LCA2MjgyNCwgNjI4MjgsIDYyODMyLCA2MjgzNiwgNjI4NDAsIAorICAgIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCA2Mjg2NSwgNjI4NzAsIDYyODc1LCA2Mjg4MCwgNjI4ODUsIDYyODkwLCAKKyAgICA2Mjg5NCwgNjI4OTgsIDYyOTAzLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCAwLCAwLCAwLCA2MjkyMywgNjI5MjcsIDYyOTMxLCAKKyAgICA2MjkzNSwgNjI5MzksIDYyOTQzLCA2Mjk0NywgNjI5NTEsIDYyOTU1LCA2Mjk1OSwgNjI5NjMsIDYyOTY3LCA2Mjk3MSwgCisgICAgNjI5NzUsIDYyOTc5LCA2Mjk4MywgNjI5ODcsIDYyOTkxLCA2Mjk5NSwgNjI5OTksIDYzMDAzLCA2MzAwNywgNjMwMTEsIAorICAgIDYzMDE1LCA2MzAxOSwgNjMwMjMsIDYzMDI3LCA2MzAzMSwgNjMwMzUsIDYzMDM5LCA2MzA0MywgNjMwNDYsIDYzMDUwLCAKKyAgICA2MzA1MywgNjMwNTcsIDYzMDYxLCA2MzA2NCwgNjMwNjgsIDYzMDcyLCA2MzA3NSwgNjMwNzksIDYzMDgzLCA2MzA4NywgCisgICAgNjMwOTEsIDYzMDk0LCA2MzA5OCwgNjMxMDIsIDYzMTA2LCA2MzExMCwgNjMxMTQsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIAorICAgIDYzMTI4LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUyLCA2MzE1NiwgNjMxNjAsIDYzMTY0LCAKKyAgICA2MzE2OCwgNjMxNzIsIDYzMTc2LCA2MzE4MCwgNjMxODQsIDYzMTg4LCA2MzE5MiwgNjMxOTYsIDYzMjAwLCA2MzIwNCwgCisgICAgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIDYzMjM2LCA2MzI0MCwgNjMyNDQsIAorICAgIDYzMjQ4LCA2MzI1MiwgNjMyNTYsIDYzMjYwLCA2MzI2NCwgNjMyNjgsIDYzMjcyLCA2MzI3NiwgNjMyODAsIDYzMjg0LCAKKyAgICA2MzI4OCwgMCwgNjMyOTIsIDYzMjk4LCA2MzMwNCwgNjMzMDksIDYzMzE0LCA2MzMxOSwgNjMzMjUsIDYzMzMxLCA2MzMzNiwgCisgICAgNjMzNDIsIDYzMzQ4LCA2MzM1NCwgNjMzNjAsIDYzMzY2LCA2MzM3MiwgNjMzNzgsIDYzMzg0LCA2MzM4OSwgNjMzOTQsIAorICAgIDYzMzk5LCA2MzQwNCwgNjM0MDksIDYzNDE0LCA2MzQxOSwgNjM0MjQsIDYzNDI5LCA2MzQzNCwgNjM0MzksIDYzNDQ0LCAKKyAgICA2MzQ0OSwgNjM0NTQsIDYzNDU5LCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODQsIDYzNDkwLCA2MzQ5NiwgCisgICAgNjM1MDIsIDYzNTA4LCA2MzUxMywgNjM1MTgsIDAsIDAsIDAsIDAsIDAsIDYzNTIzLCA2MzUyOCwgNjM1MzMsIDYzNTM4LCAKKyAgICA2MzU0MywgNjM1NDgsIDYzNTUzLCA2MzU1OCwgNjM1NjMsIDYzNTY4LCA2MzU3MywgNjM1NzgsIDYzNTgzLCA2MzU4OCwgCisgICAgNjM1OTMsIDYzNTk4LCA2MzYwMywgNjM2MDgsIDYzNjEyLCA2MzYxNywgNjM2MjIsIDYzNjI3LCA2MzYzMiwgNjM2MzcsIAorICAgIDYzNjQyLCA2MzY0NywgNjM2NTIsIDYzNjU3LCA2MzY2MiwgNjM2NjcsIDYzNjcyLCA2MzY3NywgNjM2ODIsIDYzNjg3LCAKKyAgICA2MzY5MiwgNjM2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNzAyLCA2MzcwNywgNjM3MTIsIAorICAgIDYzNzE3LCA2MzcyMSwgNjM3MjYsIDYzNzMwLCA2MzczNSwgNjM3NDAsIDYzNzQ1LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCAKKyAgICA2Mzc2NSwgNjM3NzAsIDYzNzc1LCA2Mzc4MCwgNjM3ODQsIDYzNzg4LCA2Mzc5MiwgNjM3OTYsIDYzODAwLCA2MzgwNCwgCisgICAgNjM4MDgsIDYzODEyLCA2MzgxNiwgNjM4MjAsIDYzODI0LCA2MzgyOCwgNjM4MzIsIDYzODM2LCA2Mzg0MSwgNjM4NDYsIAorICAgIDYzODUxLCA2Mzg1NiwgNjM4NjEsIDYzODY2LCA2Mzg3MSwgNjM4NzYsIDYzODgxLCA2Mzg4NiwgNjM4OTEsIDYzODk2LCAKKyAgICA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNywgMCwgNjM5MjQsIDYzOTI3LCA2MzkzMCwgNjM5MzMsIDYzOTM2LCA2MzkzOSwgCisgICAgNjM5NDIsIDYzOTQ2LCA2Mzk0OSwgNjM5NTMsIDYzOTU3LCA2Mzk2MSwgNjM5NjUsIDYzOTY5LCA2Mzk3MywgNjM5NzcsIAorICAgIDYzOTgxLCA2Mzk4NSwgNjM5ODksIDYzOTkzLCA2Mzk5NywgNjQwMDEsIDY0MDA1LCA2NDAwOSwgNjQwMTMsIDY0MDE3LCAKKyAgICA2NDAyMSwgNjQwMjUsIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgCisgICAgNjQwNjEsIDY0MDY1LCA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4NiwgNjQwOTUsIDY0MTA0LCA2NDExMywgNjQxMjIsIAorICAgIDY0MTMxLCA2NDE0MCwgNjQxNDksIDY0MTUyLCA2NDE1NywgNjQxNjIsIDY0MTY3LCA2NDE3MiwgNjQxNzcsIDY0MTgyLCAKKyAgICA2NDE4OCwgNjQxOTMsIDY0MTk5LCA2NDIwMywgNjQyMDgsIDY0MjEzLCA2NDIxOCwgNjQyMjMsIDY0MjI4LCA2NDIzMiwgCisgICAgNjQyMzYsIDY0MjQwLCA2NDI0NCwgNjQyNDgsIDY0MjUyLCA2NDI1NiwgNjQyNjAsIDY0MjY0LCA2NDI2OCwgNjQyNzIsIAorICAgIDY0Mjc2LCA2NDI4MCwgNjQyODQsIDY0Mjg5LCA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCAKKyAgICA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgNjQzNDQsIDY0MzQ5LCA2NDM1NCwgNjQzNjAsIDY0MzY2LCA2NDM3MSwgCisgICAgNjQzNzYsIDY0Mzc5LCA2NDM4MiwgNjQzODUsIDY0Mzg4LCA2NDM5MSwgNjQzOTQsIDY0Mzk4LCA2NDQwMSwgNjQ0MDUsIAorICAgIDY0NDA5LCA2NDQxMywgNjQ0MTcsIDY0NDIxLCA2NDQyNSwgNjQ0MjksIDY0NDMzLCA2NDQzNywgNjQ0NDEsIDY0NDQ1LCAKKyAgICA2NDQ0OSwgNjQ0NTMsIDY0NDU3LCA2NDQ2MSwgNjQ0NjUsIDY0NDY5LCA2NDQ3MywgNjQ0NzcsIDY0NDgxLCA2NDQ4NSwgCisgICAgNjQ0ODksIDY0NDkzLCA2NDQ5NywgNjQ1MDEsIDY0NTA1LCA2NDUwOSwgNjQ1MTMsIDY0NTE3LCA2NDUyMSwgNjQ1MjUsIAorICAgIDY0NTI5LCA2NDUzMywgNjQ1MzcsIDY0NTQxLCA2NDU0NSwgNjQ1NDksIDY0NTUzLCA2NDU1NywgNjQ1NjEsIDY0NTY1LCAKKyAgICA2NDU3MCwgNjQ1NzYsIDY0NTgxLCA2NDU4NywgNjQ1OTEsIDY0NTk2LCA2NDYwMSwgNjQ2MDYsIDY0NjExLCA2NDYxNiwgCisgICAgNjQ2MjEsIDY0NjI3LCA2NDYzMiwgNjQ2MzgsIDY0NjQyLCA2NDY0OSwgNjQ2NTYsIDY0NjYzLCA2NDY3MCwgNjQ2NzcsIAorICAgIDY0Njg0LCA2NDY5MSwgNjQ2OTgsIDY0NzA1LCA2NDcxMiwgNjQ3MTksIDY0NzI2LCA2NDcyOSwgNjQ3MzIsIDY0NzM1LCAKKyAgICA2NDc0MCwgNjQ3NDMsIDY0NzQ2LCA2NDc0OSwgNjQ3NTIsIDY0NzU1LCA2NDc1OCwgNjQ3NjIsIDY0NzY2LCA2NDc3MCwgCisgICAgNjQ3NzQsIDY0Nzc4LCA2NDc4MiwgNjQ3ODYsIDY0NzkwLCA2NDc5NCwgNjQ3OTgsIDY0ODAyLCA2NDgwNiwgNjQ4MTAsIAorICAgIDY0ODEzLCA2NDgxNywgNjQ4MjEsIDY0ODI1LCA2NDgyOSwgNjQ4MzMsIDY0ODM2LCA2NDg0MCwgNjQ4NDQsIDY0ODQ4LCAKKyAgICA2NDg1MiwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NCwgNjQ4NzgsIDY0ODgyLCA2NDg4NiwgCisgICAgNjQ4OTAsIDY0ODk0LCA2NDg5OCwgNjQ5MDIsIDY0OTA2LCA2NDkxMCwgNjQ5MTQsIDAsIDY0OTE4LCA2NDkyMSwgNjQ5MjQsIAorICAgIDY0OTI3LCA2NDkzMCwgNjQ5MzMsIDY0OTM2LCA2NDkzOSwgNjQ5NDIsIDY0OTQ1LCA2NDk0OCwgNjQ5NTEsIDY0OTU0LCAKKyAgICA2NDk1NywgNjQ5NjAsIDY0OTYzLCA2NDk2NiwgNjQ5NjksIDY0OTcyLCA2NDk3NSwgNjQ5NzgsIDY0OTgxLCA2NDk4NCwgCisgICAgNjQ5ODcsIDY0OTkwLCA2NDk5MywgNjQ5OTYsIDY0OTk5LCA2NTAwMiwgNjUwMDUsIDY1MDA4LCA2NTAxMSwgNjUwMTQsIAorICAgIDY1MDE3LCA2NTAyMCwgNjUwMjMsIDY1MDI2LCA2NTAyOSwgNjUwMzIsIDY1MDM1LCA2NTAzOCwgNjUwNDEsIDY1MDQ0LCAKKyAgICA2NTA0NywgNjUwNTAsIDY1MDUzLCA2NTA1NiwgNjUwNTksIDY1MDYyLCA2NTA2NSwgNjUwNjgsIDY1MDcxLCA2NTA3NCwgCisgICAgNjUwNzcsIDY1MDgwLCA2NTA4MywgNjUwODYsIDY1MDg5LCA2NTA5MiwgNjUwOTUsIDY1MDk4LCA2NTEwMSwgNjUxMDQsIAorICAgIDY1MTA3LCA2NTExMCwgNjUxMTMsIDY1MTE2LCA2NTExOSwgNjUxMjIsIDY1MTI1LCA2NTEyOCwgNjUxMzEsIDY1MTM0LCAKKyAgICA2NTEzNywgNjUxNDAsIDY1MTQzLCA2NTE0NiwgNjUxNDksIDY1MTUyLCA2NTE1NSwgNjUxNTgsIDY1MTYxLCA2NTE2NCwgCisgICAgNjUxNjcsIDY1MTcwLCA2NTE3MywgNjUxNzYsIDY1MTc5LCA2NTE4MiwgNjUxOTEsIDY1MTk5LCA2NTIwNywgNjUyMTUsIAorICAgIDY1MjIzLCA2NTIzMSwgNjUyMzksIDY1MjQ4LCA2NTI1NiwgNjUyNjUsIDY1Mjc0LCA2NTI4MywgNjUyOTIsIDY1MzAxLCAKKyAgICA2NTMxMCwgNjUzMTksIDY1MzI4LCA2NTMzNywgNjUzNDYsIDY1MzU1LCA2NTM2NCwgNjUzNzMsIDY1MzgyLCA2NTM5MSwgCisgICAgNjU0MDAsIDY1NDAzLCA2NTQwNiwgNjU0MDksIDY1NDExLCA2NTQxNCwgNjU0MTcsIDY1NDIwLCA2NTQyNSwgNjU0MzAsIAorICAgIDY1NDMzLCA2NTQ0MCwgNjU0NDcsIDY1NDU0LCA2NTQ2MSwgNjU0NjQsIDY1NDY5LCA2NTQ3MiwgNjU0NzYsIDY1NDc4LCAKKyAgICA2NTQ4MCwgNjU0ODMsIDY1NDg2LCA2NTQ4OSwgNjU0OTIsIDY1NDk1LCA2NTQ5OCwgNjU1MDEsIDY1NTA2LCA2NTUxMSwgCisgICAgNjU1MTQsIDY1NTE3LCA2NTUyMCwgNjU1MjMsIDY1NTI2LCA2NTUyOSwgNjU1MzIsIDY1NTM2LCA2NTUzOSwgNjU1NDIsIAorICAgIDY1NTQ1LCA2NTU0OCwgNjU1NTEsIDY1NTU2LCA2NTU1OSwgNjU1NjIsIDY1NTY1LCA2NTU3MCwgNjU1NzUsIDY1NTgwLCAKKyAgICA2NTU4NSwgNjU1OTAsIDY1NTk1LCA2NTYwMCwgNjU2MDUsIDY1NjEwLCA2NTYxOCwgNjU2MjAsIDY1NjIzLCA2NTYyNiwgCisgICAgNjU2MjksIDY1NjMyLCA2NTYzNywgNjU2NDUsIDY1NjQ4LCA2NTY1MSwgNjU2NTUsIDY1NjU4LCA2NTY2MSwgNjU2NjQsIAorICAgIDY1NjY5LCA2NTY3MiwgNjU2NzUsIDY1NjgwLCA2NTY4MywgNjU2ODYsIDY1NjkxLCA2NTY5NCwgNjU2OTcsIDY1NzAyLCAKKyAgICA2NTcwNywgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgCisgICAgNjU3NDEsIDY1NzQ0LCA2NTc0NywgNjU3NTAsIDY1NzU1LCA2NTc1OCwgNjU3NjEsIDY1NzY0LCA2NTc2NywgNjU3NzAsIAorICAgIDY1Nzc1LCA2NTc3OCwgNjU3ODEsIDY1Nzg0LCA2NTc4NywgNjU3OTAsIDY1NzkzLCA2NTc5NiwgNjU3OTksIDY1ODAyLCAKKyAgICA2NTgwOCwgNjU4MTMsIDY1ODIxLCA2NTgyOSwgNjU4MzcsIDY1ODQ1LCA2NTg1MywgNjU4NjEsIDY1ODcwLCA2NTg3OCwgCisgICAgNjU4ODcsIDY1ODk2LCA2NTkwNSwgNjU5MTQsIDY1OTIzLCA2NTkzMiwgNjU5NDEsIDY1OTUwLCA2NTk1OSwgNjU5NjgsIAorICAgIDY1OTc3LCA2NTk4NiwgNjU5OTUsIDY2MDA0LCA2NjAxMywgNjYwMjIsIDY2MDMxLCA2NjA0MCwgNjYwNDksIDY2MDU4LCAKKyAgICA2NjA2NywgNjYwNzYsIDY2MDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjA3MCwgMCwgMTIwNzksIDEyMDg2LCAxMjA5NCwgMTIxMDYsIDEyMTEzLCAxMjEyMCwgMTIxMjcsIDEyMTM4LCAxMjE0OSwgCi0gICAgMTIxNTYsIDEyMTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE3MCwgMTIxNzUsIDEyMTgwLCAxMjE4NSwgMTIxOTAsIAotICAgIDEyMTk1LCAxMjIwMCwgMTIyMDUsIDEyMjEwLCAxMjIxNSwgMTIyMjAsIDEyMjI1LCAxMjIzMCwgMTIyMzQsIDEyMjM4LCAKLSAgICAxMjI0MiwgMTIyNDcsIDEyMjUzLCAxMjI1OSwgMTIyNjUsIDEyMjcwLCAxMjI3NSwgMTIyODAsIDEyMjg1LCAxMjI5MSwgCi0gICAgMTIzMDAsIDEyMzA4LCAwLCAxMjMxNCwgMTIzMjAsIDEyMzI0LCAxMjMyOCwgMTIzMzIsIDEyMzM3LCAxMjM0MCwgMTIzNDQsIAotICAgIDEyMzQ3LCAxMjM1MSwgMTIzNTQsIDEyMzU4LCAxMjM2MiwgMTIzNjYsIDEyMzcxLCAxMjM3NiwgMTIzNzksIDEyMzgzLCAKLSAgICAxMjM4OCwgMTIzOTMsIDEyMzk2LCAxMjQwMCwgMTI0MDMsIDEyNDA3LCAxMjQxMSwgMTI0MTUsIDEyNDE5LCAxMjQyMywgCi0gICAgMTI0MjcsIDEyNDMxLCAxMjQzNSwgMTI0MzksIDEyNDQzLCAxMjQ0NywgMTI0NTEsIDEyNDU1LCAxMjQ1OSwgMTI0NjMsIAotICAgIDEyNDY3LCAxMjQ3MSwgMTI0NzUsIDEyNDc4LCAxMjQ4MiwgMTI0ODUsIDEyNDg5LCAxMjQ5MywgMTI0OTcsIDEyNTAwLCAKLSAgICAxMjUwMywgMTI1MDYsIDEyNTEwLCAxMjUxNCwgMTI1MTgsIDEyNTIyLCAxMjUyNiwgMTI1MzAsIDEyNTM0LCAxMjUzNywgCi0gICAgMTI1NDAsIDEyNTQ1LCAxMjU1MCwgMTI1NTQsIDEyNTU4LCAxMjU2MywgMTI1NjcsIDEyNTcyLCAxMjU3NiwgMTI1ODEsIAotICAgIDEyNTg2LCAxMjU5MiwgMTI1OTgsIDEyNjA0LCAxMjYwOCwgMTI2MTMsIDEyNjE5LCAxMjYyNSwgMTI2MjksIDEyNjM0LCAKLSAgICAxMjYzOCwgMTI2NDQsIDEyNjQ5LCAxMjY1MiwgMTI2NTgsIDEyNjY0LCAxMjY2OSwgMTI2NzQsIDEyNjgxLCAxMjY4NiwgCi0gICAgMTI2OTEsIDEyNjk1LCAxMjY5OSwgMTI3MDMsIDEyNzA3LCAxMjcxMSwgMTI3MTUsIDEyNzE5LCAxMjcyMywgMTI3MjgsIAotICAgIDEyNzMzLCAxMjczOCwgMTI3NDQsIDEyNzQ3LCAxMjc1MSwgMTI3NTUsIDEyNzU4LCAxMjc2MSwgMTI3NjQsIDEyNzY3LCAKLSAgICAxMjc3MCwgMTI3NzMsIDEyNzc2LCAxMjc3OSwgMTI3ODIsIDEyNzg2LCAxMjc5MywgMTI3OTgsIDEyODAyLCAxMjgwNiwgCi0gICAgMTI4MTAsIDEyODE0LCAwLCAxMjgxOCwgMTI4MjIsIDEyODI2LCAxMjgzMCwgMTI4MzQsIDEyODQwLCAxMjg0NCwgMCwgCi0gICAgMTI4NDgsIDEyODUyLCAxMjg1NiwgMCwgMTI4NjAsIDEyODYzLCAxMjg2NywgMTI4NzAsIDEyODc0LCAxMjg3NywgMTI4ODEsIAotICAgIDEyODg1LCAwLCAwLCAxMjg4OSwgMTI4OTIsIDAsIDAsIDEyODk2LCAxMjg5OSwgMTI5MDMsIDEyOTA2LCAxMjkxMCwgCi0gICAgMTI5MTQsIDEyOTE4LCAxMjkyMiwgMTI5MjYsIDEyOTMwLCAxMjkzNCwgMTI5MzgsIDEyOTQyLCAxMjk0NiwgMTI5NTAsIAotICAgIDEyOTU0LCAxMjk1OCwgMTI5NjIsIDEyOTY2LCAxMjk3MCwgMTI5NzQsIDEyOTc4LCAwLCAxMjk4MSwgMTI5ODQsIDEyOTg4LCAKLSAgICAxMjk5MiwgMTI5OTYsIDEyOTk5LCAxMzAwMiwgMCwgMTMwMDUsIDAsIDAsIDAsIDEzMDA5LCAxMzAxMywgMTMwMTcsIAotICAgIDEzMDIwLCAwLCAwLCAxMzAyMywgMTMwMjcsIDEzMDMxLCAxMzAzNiwgMTMwNDAsIDEzMDQ1LCAxMzA0OSwgMTMwNTQsIAotICAgIDEzMDU5LCAwLCAwLCAxMzA2NSwgMTMwNjksIDAsIDAsIDEzMDc0LCAxMzA3OCwgMTMwODMsIDEzMDg3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzA5MywgMCwgMCwgMCwgMCwgMTMwOTksIDEzMTAzLCAwLCAxMzEwNywgMTMxMTEsIDEzMTE2LCAKLSAgICAxMzEyMSwgMTMxMjYsIDAsIDAsIDEzMTMyLCAxMzEzNiwgMTMxMzksIDEzMTQyLCAxMzE0NSwgMTMxNDgsIDEzMTUxLCAKLSAgICAxMzE1NCwgMTMxNTcsIDEzMTYwLCAxMzE2MywgMTMxNzIsIDEzMTgxLCAxMzE4NSwgMTMxODksIDEzMTk1LCAxMzIwMSwgCi0gICAgMTMyMDcsIDEzMjEzLCAxMzIyNywgMTMyMzQsIDEzMjM3LCAwLCAwLCAwLCAwLCAwLCAxMzI0MSwgMTMyNDcsIDEzMjUxLCAwLCAKLSAgICAxMzI1NSwgMTMyNTgsIDEzMjYyLCAxMzI2NSwgMTMyNjksIDEzMjcyLCAwLCAwLCAwLCAwLCAxMzI3NiwgMTMyODAsIDAsIDAsIAotICAgIDEzMjg0LCAxMzI4OCwgMTMyOTIsIDEzMjk1LCAxMzI5OSwgMTMzMDMsIDEzMzA3LCAxMzMxMSwgMTMzMTUsIDEzMzE5LCAKLSAgICAxMzMyMywgMTMzMjcsIDEzMzMxLCAxMzMzNSwgMTMzMzksIDEzMzQzLCAxMzM0NywgMTMzNTEsIDEzMzU1LCAxMzM1OSwgCi0gICAgMTMzNjMsIDEzMzY3LCAwLCAxMzM3MCwgMTMzNzMsIDEzMzc3LCAxMzM4MSwgMTMzODUsIDEzMzg4LCAxMzM5MSwgMCwgCi0gICAgMTMzOTQsIDEzMzk4LCAwLCAxMzQwMiwgMTM0MDYsIDAsIDEzNDEwLCAxMzQxMywgMCwgMCwgMTM0MTYsIDAsIDEzNDIwLCAKLSAgICAxMzQyNSwgMTM0MjksIDEzNDM0LCAxMzQzOCwgMCwgMCwgMCwgMCwgMTM0NDMsIDEzNDQ4LCAwLCAwLCAxMzQ1MywgMTM0NTgsIAotICAgIDEzNDYzLCAwLCAwLCAwLCAxMzQ2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NzEsIDEzNDc1LCAxMzQ3OSwgMTM0ODMsIAotICAgIDAsIDEzNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ5MSwgMTM0OTUsIDEzNDk4LCAxMzUwMSwgMTM1MDQsIDEzNTA3LCAKLSAgICAxMzUxMCwgMTM1MTMsIDEzNTE2LCAxMzUxOSwgMTM1MjIsIDEzNTI1LCAxMzUyOCwgMTM1MzEsIDEzNTM0LCAxMzUzOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NDMsIDEzNTQ3LCAxMzU1MSwgMCwgMTM1NTUsIDEzNTU4LCAKLSAgICAxMzU2MiwgMTM1NjUsIDEzNTY5LCAxMzU3MiwgMTM1NzYsIDEzNTgwLCAxMzU4NCwgMCwgMTM1ODksIDEzNTkyLCAxMzU5NiwgCi0gICAgMCwgMTM2MDEsIDEzNjA0LCAxMzYwOCwgMTM2MTEsIDEzNjE1LCAxMzYxOSwgMTM2MjMsIDEzNjI3LCAxMzYzMSwgMTM2MzUsIAotICAgIDEzNjM5LCAxMzY0MywgMTM2NDcsIDEzNjUxLCAxMzY1NSwgMTM2NTksIDEzNjYzLCAxMzY2NywgMTM2NzEsIDEzNjc1LCAKLSAgICAxMzY3OSwgMTM2ODMsIDAsIDEzNjg2LCAxMzY4OSwgMTM2OTMsIDEzNjk3LCAxMzcwMSwgMTM3MDQsIDEzNzA3LCAwLCAKLSAgICAxMzcxMCwgMTM3MTQsIDAsIDEzNzE4LCAxMzcyMiwgMTM3MjYsIDEzNzMwLCAxMzczMywgMCwgMCwgMTM3MzYsIDEzNzQwLCAKLSAgICAxMzc0NCwgMTM3NDksIDEzNzUzLCAxMzc1OCwgMTM3NjIsIDEzNzY3LCAxMzc3MiwgMTM3NzgsIDAsIDEzNzg0LCAxMzc4OCwgCi0gICAgMTM3OTMsIDAsIDEzNzk5LCAxMzgwMywgMTM4MDgsIDAsIDAsIDEzODEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzgxNSwgMTM4MjAsIDEzODI1LCAxMzgzMCwgMCwgMCwgMTM4MzYsIDEzODQwLCAxMzg0MywgCi0gICAgMTM4NDYsIDEzODQ5LCAxMzg1MiwgMTM4NTUsIDEzODU4LCAxMzg2MSwgMTM4NjQsIDEzODY3LCAxMzg3MSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzUsIDEzODc5LCAxMzg4MywgMCwgMTM4ODcsIDEzODkwLCAKLSAgICAxMzg5NCwgMTM4OTcsIDEzOTAxLCAxMzkwNCwgMTM5MDgsIDEzOTEyLCAwLCAwLCAxMzkxNiwgMTM5MTksIDAsIDAsIAotICAgIDEzOTIzLCAxMzkyNiwgMTM5MzAsIDEzOTMzLCAxMzkzNywgMTM5NDEsIDEzOTQ1LCAxMzk0OSwgMTM5NTMsIDEzOTU3LCAKLSAgICAxMzk2MSwgMTM5NjUsIDEzOTY5LCAxMzk3MywgMTM5NzcsIDEzOTgxLCAxMzk4NSwgMTM5ODksIDEzOTkzLCAxMzk5NywgCi0gICAgMTQwMDEsIDE0MDA1LCAwLCAxNDAwOCwgMTQwMTEsIDE0MDE1LCAxNDAxOSwgMTQwMjMsIDE0MDI2LCAxNDAyOSwgMCwgCi0gICAgMTQwMzIsIDE0MDM2LCAwLCAxNDA0MCwgMTQwNDQsIDE0MDQ4LCAxNDA1MiwgMTQwNTUsIDAsIDAsIDE0MDU4LCAxNDA2MiwgCi0gICAgMTQwNjYsIDE0MDcxLCAxNDA3NSwgMTQwODAsIDE0MDg0LCAxNDA4OSwgMTQwOTQsIDAsIDAsIDE0MTAwLCAxNDEwNCwgMCwgCi0gICAgMCwgMTQxMDksIDE0MTEzLCAxNDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxMjIsIDE0MTI4LCAwLCAwLCAwLCAwLCAKLSAgICAxNDEzNCwgMTQxMzgsIDAsIDE0MTQyLCAxNDE0NiwgMTQxNTEsIDE0MTU2LCAxNDE2MSwgMCwgMCwgMTQxNjcsIDE0MTcxLCAKLSAgICAxNDE3NCwgMTQxNzcsIDE0MTgwLCAxNDE4MywgMTQxODYsIDE0MTg5LCAxNDE5MiwgMTQxOTUsIDE0MTk4LCAxNDIwMSwgCi0gICAgMTQyMDUsIDE0MjExLCAxNDIxNywgMTQyMjMsIDE0MjI5LCAxNDIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQyNDEsIDE0MjQ1LCAwLCAxNDI0OSwgMTQyNTIsIDE0MjU2LCAxNDI1OSwgMTQyNjMsIDE0MjY2LCAwLCAwLCAwLCAKLSAgICAxNDI3MCwgMTQyNzMsIDE0Mjc3LCAwLCAxNDI4MSwgMTQyODQsIDE0Mjg4LCAxNDI5MiwgMCwgMCwgMCwgMTQyOTUsIAotICAgIDE0Mjk5LCAwLCAxNDMwMywgMCwgMTQzMDcsIDE0MzExLCAwLCAwLCAwLCAxNDMxNSwgMTQzMTksIDAsIDAsIDAsIDE0MzIzLCAKLSAgICAxNDMyNiwgMTQzMzAsIDAsIDAsIDAsIDE0MzMzLCAxNDMzNiwgMTQzMzksIDE0MzQyLCAxNDM0NiwgMTQzNTAsIDE0MzU0LCAKLSAgICAxNDM1OCwgMTQzNjIsIDE0MzY2LCAxNDM3MCwgMTQzNzMsIDAsIDAsIDAsIDAsIDE0Mzc2LCAxNDM4MSwgMTQzODUsIAotICAgIDE0MzkwLCAxNDM5NCwgMCwgMCwgMCwgMTQzOTksIDE0NDAzLCAxNDQwOCwgMCwgMTQ0MTMsIDE0NDE3LCAxNDQyMiwgCi0gICAgMTQ0MjcsIDAsIDAsIDE0NDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTQ0NDAsIDE0NDQ0LCAxNDQ0NywgMTQ0NTAsIDE0NDUzLCAxNDQ1NiwgMTQ0NTksIDE0NDYyLCAKLSAgICAxNDQ2NSwgMTQ0NjgsIDE0NDcxLCAxNDQ3NSwgMTQ0ODAsIDE0NDg1LCAxNDQ4OSwgMTQ0OTMsIDE0NDk3LCAxNDUwMSwgCi0gICAgMTQ1MDUsIDE0NTEwLCAxNDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1MTcsIDE0NTIxLCAxNDUyNSwgMCwgMTQ1MjksIAotICAgIDE0NTMyLCAxNDUzNiwgMTQ1MzksIDE0NTQzLCAxNDU0NiwgMTQ1NTAsIDE0NTU0LCAwLCAxNDU1OCwgMTQ1NjEsIDE0NTY1LCAKLSAgICAwLCAxNDU2OSwgMTQ1NzIsIDE0NTc2LCAxNDU4MCwgMTQ1ODMsIDE0NTg3LCAxNDU5MSwgMTQ1OTUsIDE0NTk5LCAxNDYwMywgCi0gICAgMTQ2MDcsIDE0NjExLCAxNDYxNSwgMTQ2MTksIDE0NjIzLCAxNDYyNywgMTQ2MzEsIDE0NjM1LCAxNDYzOSwgMTQ2NDMsIAotICAgIDE0NjQ3LCAxNDY1MSwgMTQ2NTUsIDAsIDE0NjU4LCAxNDY2MSwgMTQ2NjUsIDE0NjY5LCAxNDY3MywgMTQ2NzYsIDE0Njc5LCAKLSAgICAxNDY4MiwgMTQ2ODYsIDE0NjkwLCAwLCAxNDY5NCwgMTQ2OTgsIDE0NzAyLCAxNDcwNiwgMTQ3MDksIDAsIDAsIDAsIAotICAgIDE0NzEyLCAxNDcxNiwgMTQ3MjEsIDE0NzI1LCAxNDczMCwgMTQ3MzQsIDE0NzM5LCAxNDc0NCwgMCwgMTQ3NTAsIDE0NzU0LCAKLSAgICAxNDc1OSwgMCwgMTQ3NjQsIDE0NzY4LCAxNDc3MywgMTQ3NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzgyLCAxNDc4NiwgCi0gICAgMCwgMTQ3OTIsIDE0Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgwMCwgMTQ4MDUsIDE0ODEwLCAxNDgxNSwgMCwgMCwgCi0gICAgMTQ4MjEsIDE0ODI1LCAxNDgyOCwgMTQ4MzEsIDE0ODM0LCAxNDgzNywgMTQ4NDAsIDE0ODQzLCAxNDg0NiwgMTQ4NDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODUyLCAxNDg2NSwgMTQ4NzcsIDE0ODg5LCAxNDkwMSwgMTQ5MTMsIDE0OTI1LCAKLSAgICAxNDkzNywgMCwgMCwgMTQ5NDEsIDE0OTQ1LCAwLCAxNDk0OSwgMTQ5NTIsIDE0OTU2LCAxNDk1OSwgMTQ5NjMsIDE0OTY2LCAKLSAgICAxNDk3MCwgMTQ5NzQsIDAsIDE0OTc4LCAxNDk4MSwgMTQ5ODUsIDAsIDE0OTg5LCAxNDk5MiwgMTQ5OTYsIDE1MDAwLCAKLSAgICAxNTAwMywgMTUwMDcsIDE1MDExLCAxNTAxNSwgMTUwMTksIDE1MDIzLCAxNTAyNywgMTUwMzEsIDE1MDM1LCAxNTAzOSwgCi0gICAgMTUwNDMsIDE1MDQ3LCAxNTA1MSwgMTUwNTUsIDE1MDU5LCAxNTA2MywgMTUwNjcsIDE1MDcxLCAxNTA3NSwgMCwgMTUwNzgsIAotICAgIDE1MDgxLCAxNTA4NSwgMTUwODksIDE1MDkzLCAxNTA5NiwgMTUwOTksIDE1MTAyLCAxNTEwNiwgMTUxMTAsIDAsIDE1MTE0LCAKLSAgICAxNTExOCwgMTUxMjIsIDE1MTI2LCAxNTEyOSwgMCwgMCwgMTUxMzIsIDE1MTM2LCAxNTE0MCwgMTUxNDUsIDE1MTQ5LCAKLSAgICAxNTE1NCwgMTUxNTgsIDE1MTYzLCAxNTE2OCwgMCwgMTUxNzQsIDE1MTc4LCAxNTE4MywgMCwgMTUxODgsIDE1MTkyLCAKLSAgICAxNTE5NywgMTUyMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjA2LCAxNTIxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTUyMTYsIDAsIDE1MjIwLCAxNTIyNSwgMTUyMzAsIDE1MjM1LCAwLCAwLCAxNTI0MSwgMTUyNDUsIDE1MjQ4LCAxNTI1MSwgCi0gICAgMTUyNTQsIDE1MjU3LCAxNTI2MCwgMTUyNjMsIDE1MjY2LCAxNTI2OSwgMCwgMTUyNzIsIDE1Mjc2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI4MCwgMTUyODQsIDAsIDE1Mjg4LCAxNTI5MSwgMTUyOTUsIAotICAgIDE1Mjk4LCAxNTMwMiwgMTUzMDUsIDE1MzA5LCAxNTMxMywgMCwgMTUzMTcsIDE1MzIwLCAxNTMyNCwgMCwgMTUzMjgsIAotICAgIDE1MzMxLCAxNTMzNSwgMTUzMzksIDE1MzQyLCAxNTM0NiwgMTUzNTAsIDE1MzU0LCAxNTM1OCwgMTUzNjIsIDE1MzY2LCAKLSAgICAxNTM3MCwgMTUzNzQsIDE1Mzc4LCAxNTM4MiwgMTUzODYsIDE1MzkwLCAxNTM5NCwgMTUzOTgsIDE1NDAyLCAxNTQwNiwgCi0gICAgMTU0MTAsIDE1NDE0LCAxNTQxNywgMTU0MjEsIDE1NDI0LCAxNTQyOCwgMTU0MzIsIDE1NDM2LCAxNTQzOSwgMTU0NDIsIAotICAgIDE1NDQ1LCAxNTQ0OSwgMTU0NTMsIDE1NDU3LCAxNTQ2MSwgMTU0NjUsIDE1NDY5LCAxNTQ3MywgMTU0NzYsIDE1NDc5LCAwLCAKLSAgICAwLCAxNTQ4MywgMTU0ODcsIDE1NDkyLCAxNTQ5NiwgMTU1MDEsIDE1NTA1LCAxNTUxMCwgMTU1MTUsIDAsIDE1NTIxLCAKLSAgICAxNTUyNSwgMTU1MzAsIDAsIDE1NTM1LCAxNTUzOSwgMTU1NDQsIDE1NTQ5LCAxNTU1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTU1NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTY0LCAxNTU2OSwgMTU1NzQsIDE1NTc5LCAwLCAwLCAKLSAgICAxNTU4NSwgMTU1ODksIDE1NTkyLCAxNTU5NSwgMTU1OTgsIDE1NjAxLCAxNTYwNCwgMTU2MDcsIDE1NjEwLCAxNTYxMywgCi0gICAgMTU2MTYsIDE1NjIwLCAxNTYyNSwgMTU2MzAsIDE1NjM2LCAxNTY0MiwgMCwgMCwgMCwgMTU2NDgsIDE1NjUyLCAxNTY1OCwgCi0gICAgMTU2NjQsIDE1NjcwLCAxNTY3NSwgMTU2ODEsIDAsIDAsIDE1Njg3LCAxNTY5MSwgMCwgMTU2OTUsIDE1Njk5LCAxNTcwMywgCi0gICAgMTU3MDcsIDE1NzExLCAxNTcxNSwgMTU3MTksIDE1NzIzLCAxNTcyNywgMTU3MzEsIDE1NzM1LCAxNTczOSwgMTU3NDMsIAotICAgIDE1NzQ3LCAxNTc1MSwgMTU3NTUsIDE1NzU5LCAxNTc2MywgMCwgMCwgMCwgMTU3NjcsIDE1NzczLCAxNTc3OSwgMTU3ODUsIAotICAgIDE1NzkxLCAxNTc5NywgMTU4MDMsIDE1ODA5LCAxNTgxNSwgMTU4MjEsIDE1ODI3LCAxNTgzMywgMTU4NDEsIDE1ODQ3LCAKLSAgICAxNTg1MywgMTU4NTksIDE1ODY1LCAxNTg3MSwgMTU4NzcsIDE1ODgzLCAxNTg4OSwgMTU4OTUsIDE1OTAxLCAxNTkwNywgMCwgCi0gICAgMTU5MTMsIDE1OTE5LCAxNTkyNSwgMTU5MzEsIDE1OTM3LCAxNTk0MywgMTU5NDcsIDE1OTUzLCAxNTk1NywgMCwgMTU5NjEsIAotICAgIDAsIDAsIDE1OTY3LCAxNTk3MSwgMTU5NzcsIDE1OTgzLCAxNTk4OSwgMTU5OTMsIDE1OTk5LCAwLCAwLCAwLCAxNjAwMywgMCwgCi0gICAgMCwgMCwgMCwgMTYwMDcsIDE2MDEyLCAxNjAxOSwgMTYwMjYsIDE2MDMzLCAxNjA0MCwgMCwgMTYwNDcsIDAsIDE2MDU0LCAKLSAgICAxNjA1OSwgMTYwNjQsIDE2MDcxLCAxNjA3OCwgMTYwODcsIDE2MDk4LCAxNjEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxMTIsIDE2MTE5LCAxNjEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTYxMzEsIDE2MTM3LCAxNjE0MywgMTYxNDksIDE2MTU1LCAxNjE2MSwgMTYxNjcsIDE2MTczLCAKLSAgICAxNjE3OSwgMTYxODUsIDE2MTkxLCAxNjE5NywgMTYyMDMsIDE2MjA5LCAxNjIxNSwgMTYyMjEsIDE2MjI3LCAxNjIzMywgCi0gICAgMTYyMzksIDE2MjQ1LCAxNjI1MSwgMTYyNTcsIDE2MjYzLCAxNjI2OSwgMTYyNzUsIDE2MjgxLCAxNjI4NywgMTYyOTMsIAotICAgIDE2Mjk5LCAxNjMwNSwgMTYzMTEsIDE2MzE3LCAxNjMyMywgMTYzMjgsIDE2MzM0LCAxNjM0MCwgMTYzNDQsIDE2MzUwLCAKLSAgICAxNjM1NCwgMTYzNjAsIDE2MzY2LCAxNjM3MiwgMTYzNzgsIDE2Mzg0LCAxNjM5MCwgMTYzOTUsIDE2NDAxLCAxNjQwNSwgCi0gICAgMTY0MTAsIDE2NDE2LCAxNjQyMiwgMTY0MjgsIDE2NDMzLCAxNjQzOSwgMTY0NDUsIDE2NDUxLCAxNjQ1NiwgMTY0NjIsIDAsIAotICAgIDAsIDAsIDAsIDE2NDY2LCAxNjQ3MiwgMTY0NzcsIDE2NDgzLCAxNjQ4OCwgMTY0OTYsIDE2NTA0LCAxNjUwOCwgMTY1MTIsIAotICAgIDE2NTE2LCAxNjUyMiwgMTY1MjgsIDE2NTM0LCAxNjU0MCwgMTY1NDQsIDE2NTQ4LCAxNjU1MiwgMTY1NTYsIDE2NTYwLCAKLSAgICAxNjU2MywgMTY1NjYsIDE2NTY5LCAxNjU3MiwgMTY1NzUsIDE2NTc4LCAxNjU4MSwgMTY1ODQsIDE2NTg3LCAxNjU5MSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1OTUsIDE2NjAwLCAwLCAxNjYwNywgMCwgMCwgMTY2MTQsIAotICAgIDE2NjE5LCAwLCAxNjYyNCwgMCwgMCwgMTY2MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjM2LCAxNjY0MSwgMTY2NDUsIAotICAgIDE2NjUyLCAwLCAxNjY1OSwgMTY2NjQsIDE2NjY5LCAxNjY3NCwgMTY2ODEsIDE2Njg4LCAxNjY5NSwgMCwgMTY3MDIsIAotICAgIDE2NzA3LCAxNjcxMiwgMCwgMTY3MTksIDAsIDE2NzI2LCAwLCAwLCAxNjczMSwgMTY3MzgsIDAsIDE2NzQ1LCAxNjc0OSwgCi0gICAgMTY3NTYsIDE2NzYwLCAxNjc2NSwgMTY3NzMsIDE2Nzc5LCAxNjc4NSwgMTY3OTAsIDE2Nzk2LCAxNjgwMiwgMTY4MDgsIAotICAgIDE2ODEzLCAwLCAxNjgxOSwgMTY4MjcsIDE2ODM0LCAwLCAwLCAxNjg0MSwgMTY4NDYsIDE2ODUyLCAxNjg1NywgMTY4NjMsIAotICAgIDAsIDE2ODY5LCAwLCAxNjg3NSwgMTY4ODIsIDE2ODg5LCAxNjg5NiwgMTY5MDMsIDE2OTA4LCAwLCAwLCAxNjkxMiwgCi0gICAgMTY5MTcsIDE2OTIxLCAxNjkyNSwgMTY5MjksIDE2OTMzLCAxNjkzNywgMTY5NDEsIDE2OTQ1LCAxNjk0OSwgMCwgMCwgCi0gICAgMTY5NTMsIDE2OTU5LCAxNjk2NSwgMTY5NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OTc5LCAxNjk4MywgMTY5OTQsIAotICAgIDE3MDA5LCAxNzAyNCwgMTcwMzQsIDE3MDQ1LCAxNzA1OCwgMTcwNjksIDE3MDc1LCAxNzA4MywgMTcwOTMsIDE3MDk5LCAKLSAgICAxNzEwNywgMTcxMTEsIDE3MTE3LCAxNzEyMywgMTcxMzEsIDE3MTQxLCAxNzE0OSwgMTcxNjIsIDE3MTY4LCAxNzE3NiwgCi0gICAgMTcxODQsIDE3MTk2LCAxNzIwMywgMTcyMTEsIDE3MjE5LCAxNzIyNywgMTcyMzUsIDE3MjQzLCAxNzI1MSwgMTcyNjEsIAotICAgIDE3MjY1LCAxNzI2OCwgMTcyNzEsIDE3Mjc0LCAxNzI3NywgMTcyODAsIDE3MjgzLCAxNzI4NiwgMTcyODksIDE3MjkyLCAKLSAgICAxNzI5NiwgMTczMDAsIDE3MzA0LCAxNzMwOCwgMTczMTIsIDE3MzE2LCAxNzMyMCwgMTczMjQsIDE3MzI4LCAxNzMzMywgCi0gICAgMTczMzksIDE3MzQ5LCAxNzM2MywgMTczNzMsIDE3Mzc5LCAxNzM4NSwgMTczOTMsIDE3NDAxLCAxNzQwOSwgMTc0MTcsIAotICAgIDE3NDIzLCAxNzQyOSwgMTc0MzIsIDE3NDM2LCAxNzQ0MCwgMTc0NDQsIDE3NDQ4LCAxNzQ1MiwgMTc0NTYsIDAsIDE3NDYwLCAKLSAgICAxNzQ2NCwgMTc0NjgsIDE3NDcyLCAxNzQ3NiwgMTc0ODAsIDE3NDg0LCAxNzQ4OCwgMTc0OTIsIDE3NDk2LCAxNzUwMCwgCi0gICAgMTc1MDMsIDE3NTA2LCAxNzUxMCwgMTc1MTQsIDE3NTE4LCAxNzUyMSwgMTc1MjUsIDE3NTI5LCAxNzUzMywgMTc1MzcsIAotICAgIDE3NTQxLCAxNzU0NSwgMTc1NDksIDE3NTUzLCAxNzU1NiwgMTc1NTksIDE3NTYzLCAxNzU2NywgMTc1NzEsIDE3NTc0LCAKLSAgICAxNzU3NywgMTc1ODAsIDE3NTg0LCAxNzU4OSwgMTc1OTMsIDAsIDAsIDAsIDAsIDE3NTk3LCAxNzYwMiwgMTc2MDYsIAotICAgIDE3NjExLCAxNzYxNSwgMTc2MjAsIDE3NjI1LCAxNzYzMSwgMTc2MzYsIDE3NjQyLCAxNzY0NiwgMTc2NTEsIDE3NjU1LCAKLSAgICAxNzY2MCwgMTc2NzAsIDE3Njc2LCAxNzY4MiwgMTc2ODksIDE3Njk5LCAxNzcwNSwgMTc3MDksIDE3NzEzLCAxNzcxOSwgCi0gICAgMTc3MjUsIDE3NzMzLCAxNzczOSwgMTc3NDcsIDE3NzU1LCAxNzc2MywgMTc3NzMsIDE3NzgxLCAxNzc5MSwgMTc3OTYsIAotICAgIDE3ODAyLCAxNzgwOCwgMTc4MTQsIDE3ODIwLCAxNzgyNiwgMTc4MzIsIDAsIDE3ODM4LCAxNzg0NCwgMTc4NTAsIDE3ODU2LCAKLSAgICAxNzg2MiwgMTc4NjgsIDE3ODc0LCAxNzg4MCwgMTc4ODYsIDE3ODkyLCAxNzg5OCwgMTc5MDMsIDE3OTA4LCAxNzkxNCwgCi0gICAgMTc5MjAsIDE3OTI2LCAxNzkzMSwgMTc5MzcsIDE3OTQzLCAxNzk0OSwgMTc5NTUsIDE3OTYxLCAxNzk2NywgMTc5NzMsIAotICAgIDE3OTc5LCAxNzk4NCwgMTc5ODksIDE3OTk1LCAxODAwMSwgMTgwMDcsIDE4MDEyLCAxODAxNywgMTgwMjIsIDE4MDI4LCAKLSAgICAxODAzNiwgMTgwNDMsIDAsIDE4MDUwLCAxODA1NywgMTgwNzAsIDE4MDc3LCAxODA4NCwgMTgwOTIsIDE4MTAwLCAxODEwNiwgCi0gICAgMTgxMTIsIDE4MTE4LCAxODEyOCwgMTgxMzMsIDE4MTM5LCAxODE0OSwgMTgxNTksIDAsIDE4MTY5LCAxODE3OSwgMTgxODcsIAotICAgIDE4MTk5LCAxODIxMSwgMTgyMTcsIDE4MjMxLCAxODI0NiwgMTgyNTEsIDE4MjU2LCAxODI2NCwgMTgyNzIsIDE4MjgwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODI4OCwgMTgyOTEsIDE4Mjk1LCAxODI5OSwgMTgzMDMsIAotICAgIDE4MzA3LCAxODMxMSwgMTgzMTUsIDE4MzE5LCAxODMyMywgMTgzMjcsIDE4MzMxLCAxODMzNSwgMTgzMzksIDE4MzQzLCAKLSAgICAxODM0NywgMTgzNTEsIDE4MzU1LCAxODM1OSwgMTgzNjMsIDE4MzY3LCAxODM3MCwgMTgzNzMsIDE4Mzc3LCAxODM4MSwgCi0gICAgMTgzODUsIDE4Mzg4LCAxODM5MSwgMTgzOTQsIDE4Mzk4LCAxODQwMiwgMTg0MDUsIDE4NDA4LCAxODQxMiwgMTg0MTUsIAotICAgIDE4NDIwLCAxODQyMywgMTg0MjcsIDE4NDMwLCAxODQzNCwgMTg0MzcsIDE4NDQyLCAxODQ0NSwgMTg0NDksIDE4NDU2LCAKLSAgICAxODQ2MSwgMTg0NjUsIDE4NDcwLCAxODQ3NCwgMTg0NzksIDE4NDgzLCAxODQ4OCwgMTg0OTUsIDE4NTAxLCAxODUwNiwgCi0gICAgMTg1MTAsIDE4NTE0LCAxODUxOCwgMTg1MjIsIDE4NTI2LCAxODUzMSwgMTg1MzYsIDE4NTQyLCAxODU0NywgMTg1NTIsIAotICAgIDE4NTU2LCAxODU1OSwgMTg1NjIsIDE4NTY1LCAxODU2OCwgMTg1NzEsIDE4NTc0LCAxODU3NywgMTg1ODAsIDE4NTgzLCAKLSAgICAxODU4OSwgMTg1OTMsIDE4NTk3LCAxODYwMSwgMTg2MDUsIDE4NjA5LCAxODYxMywgMTg2MTcsIDE4NjIxLCAxODYyNiwgCi0gICAgMTg2MzAsIDE4NjM1LCAxODY0MCwgMTg2NDYsIDE4NjUxLCAxODY1NywgMTg2NjMsIDE4NjY5LCAxODY3NSwgMTg2ODEsIAotICAgIDE4Njg4LCAxODY5NSwgMTg3MDMsIDE4NzExLCAxODcyMCwgMTg3MjksIDE4NzQwLCAxODc1MCwgMTg3NjAsIDE4NzcxLCAKLSAgICAxODc4MiwgMTg3OTIsIDE4ODAyLCAxODgxMiwgMTg4MjIsIDE4ODMyLCAxODg0MiwgMTg4NTIsIDE4ODYyLCAxODg3MCwgCi0gICAgMTg4NzcsIDE4ODgzLCAxODg5MCwgMTg4OTUsIDE4OTAxLCAxODkwNywgMTg5MTMsIDE4OTE5LCAxODkyNSwgMTg5MzEsIAotICAgIDE4OTM2LCAxODk0MiwgMTg5NDgsIDE4OTU0LCAxODk2MCwgMTg5NjUsIDE4OTczLCAxODk4MCwgMTg5ODYsIDE4OTkzLCAKLSAgICAxOTAwMSwgMTkwMDcsIDE5MDEzLCAxOTAxOSwgMTkwMjUsIDE5MDMzLCAxOTA0MSwgMTkwNTEsIDE5MDU5LCAxOTA2NywgCi0gICAgMTkwNzMsIDE5MDc4LCAxOTA4MywgMTkwODgsIDE5MDkzLCAxOTA5OCwgMTkxMDMsIDE5MTA4LCAxOTExMywgMTkxMTgsIAotICAgIDE5MTI0LCAxOTEzMCwgMTkxMzYsIDE5MTQzLCAxOTE0OCwgMTkxNTQsIDE5MTU5LCAxOTE2NCwgMTkxNjksIDE5MTc0LCAKLSAgICAxOTE3OSwgMTkxODQsIDE5MTg5LCAxOTE5NCwgMTkxOTksIDE5MjA0LCAxOTIwOSwgMTkyMTQsIDE5MjE5LCAxOTIyNCwgCi0gICAgMTkyMjksIDE5MjM0LCAxOTIzOSwgMTkyNDQsIDE5MjQ5LCAxOTI1NCwgMTkyNTksIDE5MjY0LCAxOTI2OSwgMTkyNzQsIAotICAgIDE5Mjc5LCAxOTI4NCwgMTkyODksIDE5Mjk0LCAxOTI5OSwgMTkzMDQsIDE5MzA5LCAxOTMxNCwgMTkzMTksIDE5MzI0LCAKLSAgICAxOTMyOSwgMTkzMzQsIDE5MzM5LCAwLCAxOTM0NCwgMCwgMCwgMCwgMCwgMCwgMTkzNDksIDAsIDAsIDE5MzU0LCAxOTM1OCwgCi0gICAgMTkzNjIsIDE5MzY2LCAxOTM3MCwgMTkzNzQsIDE5Mzc4LCAxOTM4MiwgMTkzODYsIDE5MzkwLCAxOTM5NCwgMTkzOTgsIAotICAgIDE5NDAyLCAxOTQwNiwgMTk0MTAsIDE5NDE0LCAxOTQxOCwgMTk0MjIsIDE5NDI2LCAxOTQzMCwgMTk0MzQsIDE5NDM4LCAKLSAgICAxOTQ0MiwgMTk0NDYsIDE5NDUwLCAxOTQ1NCwgMTk0NTgsIDE5NDYyLCAxOTQ2NiwgMTk0NzAsIDE5NDc0LCAxOTQ3OCwgCi0gICAgMTk0ODIsIDE5NDg2LCAxOTQ5MCwgMTk0OTQsIDE5NDk4LCAxOTUwMiwgMTk1MDYsIDE5NTEwLCAxOTUxNCwgMTk1MTgsIAotICAgIDE5NTI0LCAxOTUyOCwgMTk1MzMsIDE5NTM4LCAxOTU0MiwgMTk1NDcsIDE5NTUyLCAxOTU1NiwgMTk1NjAsIDE5NTY0LCAKLSAgICAxOTU2OCwgMTk1NzIsIDE5NTc2LCAxOTU4MCwgMTk1ODQsIDE5NTg4LCAxOTU5MiwgMTk1OTYsIDE5NjAwLCAxOTYwNCwgCi0gICAgMTk2MDgsIDE5NjEyLCAxOTYxNiwgMTk2MjAsIDE5NjI0LCAxOTYyOCwgMTk2MzIsIDE5NjM2LCAxOTY0MCwgMTk2NDQsIAotICAgIDE5NjQ4LCAxOTY1MiwgMTk2NTYsIDE5NjYwLCAxOTY2NCwgMTk2NjgsIDE5NjcyLCAxOTY3NiwgMTk2ODAsIDE5Njg0LCAKLSAgICAxOTY4OCwgMTk2OTIsIDE5Njk2LCAxOTcwMCwgMTk3MDQsIDE5NzA4LCAxOTcxMiwgMTk3MTYsIDE5NzIwLCAxOTcyNCwgCi0gICAgMTk3MjgsIDE5NzMyLCAxOTczNiwgMTk3NDAsIDE5NzQ0LCAxOTc0OCwgMTk3NTIsIDE5NzU2LCAxOTc2MCwgMTk3NjQsIAotICAgIDE5NzY4LCAxOTc3MiwgMTk3NzYsIDE5NzgwLCAxOTc4NCwgMTk3ODgsIDE5NzkyLCAxOTc5NiwgMTk4MDAsIDE5ODA0LCAKLSAgICAxOTgwOCwgMTk4MTIsIDE5ODE2LCAxOTgyMCwgMTk4MjQsIDE5ODI4LCAxOTgzMiwgMTk4MzYsIDE5ODQwLCAxOTg0NCwgCi0gICAgMTk4NDgsIDE5ODUyLCAxOTg1NiwgMTk4NjAsIDE5ODY0LCAxOTg2OCwgMTk4NzIsIDE5ODc2LCAxOTg4MCwgMTk4ODQsIAotICAgIDE5ODg4LCAxOTg5MiwgMTk4OTYsIDE5OTAwLCAxOTkwNCwgMTk5MDgsIDE5OTEyLCAxOTkxNiwgMTk5MjAsIDE5OTI0LCAKLSAgICAxOTkyOCwgMTk5MzIsIDE5OTM2LCAxOTk0MCwgMTk5NDMsIDE5OTQ3LCAxOTk1MCwgMTk5NTQsIDE5OTU4LCAxOTk2MSwgCi0gICAgMTk5NjUsIDE5OTY5LCAxOTk3MiwgMTk5NzYsIDE5OTgwLCAxOTk4NCwgMTk5ODgsIDE5OTkxLCAxOTk5NSwgMTk5OTksIAotICAgIDIwMDAzLCAyMDAwNywgMjAwMTEsIDIwMDE1LCAyMDAxOCwgMjAwMjIsIDIwMDI2LCAyMDAzMCwgMjAwMzQsIDIwMDM4LCAKLSAgICAyMDA0MiwgMjAwNDYsIDIwMDUwLCAyMDA1NCwgMjAwNTgsIDIwMDYyLCAyMDA2NiwgMjAwNzAsIDIwMDc0LCAyMDA3OCwgCi0gICAgMjAwODIsIDIwMDg2LCAyMDA5MCwgMjAwOTQsIDIwMDk4LCAyMDEwMiwgMjAxMDYsIDIwMTEwLCAyMDExNCwgMjAxMTgsIAotICAgIDIwMTIyLCAyMDEyNiwgMjAxMzAsIDIwMTM0LCAyMDEzOCwgMjAxNDIsIDIwMTQ2LCAyMDE1MCwgMjAxNTQsIDIwMTU4LCAKLSAgICAyMDE2MiwgMjAxNjYsIDIwMTcwLCAyMDE3NCwgMjAxNzgsIDIwMTgyLCAyMDE4NiwgMjAxOTAsIDIwMTk0LCAyMDE5OCwgCi0gICAgMjAyMDIsIDIwMjA2LCAyMDIxMCwgMjAyMTQsIDIwMjE4LCAyMDIyMiwgMjAyMjYsIDIwMjMwLCAyMDIzNCwgMjAyMzgsIAotICAgIDIwMjQyLCAyMDI0NiwgMjAyNTAsIDIwMjU0LCAyMDI1OCwgMjAyNjIsIDIwMjY2LCAyMDI3MCwgMjAyNzQsIDIwMjc4LCAKLSAgICAyMDI4MiwgMjAyODYsIDIwMjkwLCAyMDI5NCwgMjAyOTgsIDIwMzAyLCAyMDMwNiwgMjAzMTAsIDIwMzE0LCAyMDMxOCwgCi0gICAgMjAzMjIsIDIwMzI2LCAyMDMzMCwgMjAzMzQsIDIwMzM4LCAyMDM0MiwgMjAzNDYsIDIwMzUwLCAyMDM1NCwgMjAzNTgsIAotICAgIDIwMzYyLCAyMDM2NiwgMjAzNzAsIDIwMzc0LCAyMDM3OCwgMjAzODIsIDIwMzg2LCAyMDM5MCwgMjAzOTQsIDIwMzk4LCAKLSAgICAyMDQwMiwgMjA0MDYsIDIwNDEwLCAyMDQxNCwgMjA0MTgsIDIwNDIyLCAyMDQyNiwgMjA0MzAsIDIwNDM0LCAyMDQzOCwgCi0gICAgMjA0NDIsIDIwNDQ2LCAyMDQ1MCwgMjA0NTQsIDIwNDU4LCAyMDQ2MiwgMjA0NjYsIDIwNDcwLCAyMDQ3NCwgMjA0NzgsIAotICAgIDIwNDgyLCAyMDQ4NiwgMjA0OTAsIDIwNDk0LCAyMDQ5OCwgMjA1MDIsIDIwNTA2LCAyMDUxMCwgMjA1MTQsIDIwNTE4LCAKLSAgICAyMDUyMiwgMjA1MjYsIDIwNTMwLCAyMDUzNCwgMjA1MzgsIDIwNTQyLCAyMDU0NiwgMjA1NTAsIDIwNTU0LCAyMDU1OCwgCi0gICAgMjA1NjIsIDIwNTY2LCAyMDU3MCwgMjA1NzMsIDIwNTc3LCAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIAotICAgIDIwNjAxLCAyMDYwNSwgMjA2MDksIDIwNjEzLCAyMDYxNywgMjA2MjEsIDIwNjI1LCAyMDYyOSwgMjA2MzMsIDIwNjM3LCAKLSAgICAyMDY0MSwgMjA2NDUsIDIwNjQ5LCAyMDY1MywgMjA2NTcsIDIwNjYxLCAyMDY2NSwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgCi0gICAgMjA2ODAsIDIwNjg0LCAyMDY4OCwgMjA2OTIsIDIwNjk2LCAyMDcwMCwgMjA3MDQsIDIwNzA4LCAyMDcxMiwgMjA3MTYsIAotICAgIDIwNzIwLCAyMDcyNCwgMjA3MjgsIDIwNzMxLCAyMDczNSwgMjA3MzksIDIwNzQzLCAyMDc0NywgMjA3NTEsIDIwNzU1LCAKLSAgICAyMDc1OSwgMjA3NjIsIDIwNzY2LCAyMDc3MCwgMjA3NzQsIDIwNzc4LCAyMDc4MiwgMjA3ODYsIDIwNzkwLCAyMDc5NCwgCi0gICAgMjA3OTgsIDIwODAyLCAyMDgwNiwgMjA4MTAsIDIwODE0LCAyMDgxOCwgMjA4MjIsIDIwODI2LCAyMDgzMCwgMjA4MzQsIAotICAgIDIwODM4LCAyMDg0MiwgMjA4NDYsIDIwODUwLCAyMDg1NCwgMCwgMjA4NTgsIDIwODYyLCAyMDg2NiwgMjA4NzAsIDAsIDAsIAotICAgIDIwODc0LCAyMDg3OCwgMjA4ODIsIDIwODg2LCAyMDg5MCwgMjA4OTQsIDIwODk4LCAwLCAyMDkwMiwgMCwgMjA5MDYsIAotICAgIDIwOTEwLCAyMDkxNCwgMjA5MTgsIDAsIDAsIDIwOTIyLCAyMDkyNiwgMjA5MzAsIDIwOTM0LCAyMDkzOCwgMjA5NDIsIAotICAgIDIwOTQ2LCAyMDk1MCwgMjA5NTQsIDIwOTU4LCAyMDk2MiwgMjA5NjYsIDIwOTcwLCAyMDk3NCwgMjA5NzgsIDIwOTgyLCAKLSAgICAyMDk4NiwgMjA5OTAsIDIwOTk0LCAyMDk5OCwgMjEwMDIsIDIxMDA2LCAyMTAxMCwgMjEwMTMsIDIxMDE3LCAyMTAyMSwgCi0gICAgMjEwMjUsIDIxMDI5LCAyMTAzMywgMjEwMzcsIDIxMDQxLCAyMTA0NSwgMjEwNDksIDIxMDUzLCAyMTA1NywgMjEwNjEsIAotICAgIDIxMDY1LCAyMTA2OSwgMjEwNzMsIDIxMDc3LCAyMTA4MSwgMCwgMjEwODUsIDIxMDg5LCAyMTA5MywgMjEwOTcsIDAsIDAsIAotICAgIDIxMTAxLCAyMTEwNCwgMjExMDgsIDIxMTEyLCAyMTExNiwgMjExMjAsIDIxMTI0LCAyMTEyOCwgMjExMzIsIDIxMTM2LCAKLSAgICAyMTE0MCwgMjExNDQsIDIxMTQ4LCAyMTE1MiwgMjExNTYsIDIxMTYwLCAyMTE2NCwgMjExNjksIDIxMTc0LCAyMTE3OSwgCi0gICAgMjExODUsIDIxMTkxLCAyMTE5NiwgMjEyMDEsIDIxMjA3LCAyMTIxMCwgMjEyMTQsIDIxMjE4LCAyMTIyMiwgMjEyMjYsIAotICAgIDIxMjMwLCAyMTIzNCwgMjEyMzgsIDAsIDIxMjQyLCAyMTI0NiwgMjEyNTAsIDIxMjU0LCAwLCAwLCAyMTI1OCwgMjEyNjIsIAotICAgIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMCwgMjEyODYsIDAsIDIxMjkwLCAyMTI5NCwgMjEyOTgsIAotICAgIDIxMzAyLCAwLCAwLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgMjEzMzQsIAotICAgIDIxMzM4LCAyMTM0MywgMjEzNDgsIDIxMzUzLCAyMTM1OSwgMjEzNjUsIDIxMzcwLCAwLCAyMTM3NSwgMjEzNzksIDIxMzgzLCAKLSAgICAyMTM4NywgMjEzOTEsIDIxMzk1LCAyMTM5OSwgMjE0MDMsIDIxNDA3LCAyMTQxMSwgMjE0MTUsIDIxNDE5LCAyMTQyMywgCi0gICAgMjE0MjcsIDIxNDMxLCAyMTQzNSwgMjE0MzksIDIxNDQyLCAyMTQ0NiwgMjE0NTAsIDIxNDU0LCAyMTQ1OCwgMjE0NjIsIAotICAgIDIxNDY2LCAyMTQ3MCwgMjE0NzQsIDIxNDc4LCAyMTQ4MiwgMjE0ODYsIDIxNDkwLCAyMTQ5NCwgMjE0OTgsIDIxNTAyLCAKLSAgICAyMTUwNiwgMjE1MTAsIDIxNTE0LCAyMTUxOCwgMjE1MjIsIDIxNTI2LCAyMTUzMCwgMjE1MzQsIDIxNTM4LCAyMTU0MiwgCi0gICAgMjE1NDYsIDIxNTUwLCAyMTU1NCwgMjE1NTgsIDIxNTYyLCAyMTU2NiwgMjE1NzAsIDIxNTc0LCAyMTU3OCwgMjE1ODIsIAotICAgIDIxNTg2LCAyMTU5MCwgMjE1OTQsIDIxNTk4LCAwLCAyMTYwMiwgMjE2MDYsIDIxNjEwLCAyMTYxNCwgMCwgMCwgMjE2MTgsIAotICAgIDIxNjIyLCAyMTYyNiwgMjE2MzAsIDIxNjM0LCAyMTYzOCwgMjE2NDIsIDIxNjQ2LCAyMTY1MCwgMjE2NTQsIDIxNjU4LCAKLSAgICAyMTY2MiwgMjE2NjYsIDIxNjcwLCAyMTY3NCwgMjE2NzgsIDIxNjgyLCAyMTY4NiwgMjE2OTAsIDIxNjk0LCAyMTY5OCwgCi0gICAgMjE3MDIsIDIxNzA2LCAyMTcxMCwgMjE3MTQsIDIxNzE4LCAyMTcyMiwgMjE3MjYsIDIxNzMwLCAyMTczNCwgMjE3MzgsIAotICAgIDIxNzQyLCAyMTc0NiwgMjE3NTAsIDIxNzU0LCAyMTc1OCwgMjE3NjIsIDIxNzY2LCAyMTc3MCwgMjE3NzQsIDIxNzc4LCAKLSAgICAyMTc4MiwgMjE3ODYsIDIxNzkwLCAyMTc5NCwgMjE3OTgsIDIxODAyLCAyMTgwNiwgMjE4MTAsIDIxODE0LCAyMTgxOCwgCi0gICAgMjE4MjIsIDIxODI2LCAyMTgzMCwgMjE4MzQsIDIxODM4LCAyMTg0MiwgMjE4NDUsIDIxODQ5LCAyMTg1MywgMjE4NTcsIAotICAgIDIxODYxLCAyMTg2NSwgMjE4NjksIDIxODczLCAyMTg3NywgMjE4ODEsIDAsIDAsIDIxODg1LCAyMTg5NCwgMjE5MDAsIAotICAgIDIxOTA1LCAyMTkwOSwgMjE5MTIsIDIxOTE3LCAyMTkyMCwgMjE5MjMsIDIxOTI2LCAyMTkzMSwgMjE5MzUsIDIxOTQwLCAKLSAgICAyMTk0MywgMjE5NDYsIDIxOTQ5LCAyMTk1MiwgMjE5NTUsIDIxOTU4LCAyMTk2MSwgMjE5NjQsIDIxOTY3LCAyMTk3MSwgCi0gICAgMjE5NzUsIDIxOTc5LCAyMTk4MywgMjE5ODcsIDIxOTkxLCAyMTk5NSwgMjE5OTksIDIyMDAzLCAyMjAwNywgMCwgMCwgMCwgCi0gICAgMjIwMTMsIDIyMDE5LCAyMjAyMywgMjIwMjcsIDIyMDMxLCAyMjAzNywgMjIwNDEsIDIyMDQ1LCAyMjA0OSwgMjIwNTUsIAotICAgIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDczLCAyMjA3NywgMjIwODEsIDIyMDg1LCAyMjA5MSwgMjIwOTcsIDIyMTAzLCAKLSAgICAyMjExMSwgMjIxMTcsIDIyMTIzLCAyMjEyOSwgMjIxMzUsIDIyMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjE0NywgMjIxNTAsIAotICAgIDIyMTUzLCAyMjE1NiwgMjIxNTksIDIyMTYyLCAyMjE2NiwgMjIxNzAsIDIyMTczLCAyMjE3NywgMjIxODEsIDIyMTg1LCAKLSAgICAyMjE4OSwgMjIxOTMsIDIyMTk2LCAyMjIwMCwgMjIyMDQsIDIyMjA4LCAyMjIxMiwgMjIyMTYsIDIyMjIwLCAyMjIyNCwgCi0gICAgMjIyMjgsIDIyMjMyLCAyMjIzNiwgMjIyNDAsIDIyMjQzLCAyMjI0NywgMjIyNTEsIDIyMjU1LCAyMjI1OSwgMjIyNjIsIAotICAgIDIyMjY2LCAyMjI3MCwgMjIyNzQsIDIyMjc4LCAyMjI4MiwgMjIyODYsIDIyMjkwLCAyMjI5NCwgMjIyOTgsIDIyMzAyLCAKLSAgICAyMjMwNiwgMjIzMTAsIDIyMzE0LCAyMjMxNywgMjIzMjEsIDIyMzI1LCAyMjMyOSwgMjIzMzMsIDIyMzM3LCAyMjM0MSwgCi0gICAgMjIzNDUsIDIyMzQ5LCAyMjM1MywgMjIzNTcsIDIyMzYxLCAyMjM2NSwgMjIzNjksIDIyMzczLCAyMjM3NywgMjIzODEsIAotICAgIDIyMzg1LCAyMjM4OSwgMjIzOTMsIDIyMzk3LCAyMjQwMSwgMjI0MDUsIDIyNDA5LCAyMjQxMywgMjI0MTcsIDIyNDIxLCAKLSAgICAyMjQyNSwgMjI0MjksIDIyNDMzLCAyMjQzNywgMjI0NDEsIDIyNDQ1LCAyMjQ0OSwgMjI0NTMsIDIyNDU2LCAyMjQ2MCwgCi0gICAgMjI0NjQsIDIyNDY4LCAyMjQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI0NzYsIDIyNDgwLCAKLSAgICAyMjQ4MywgMjI0ODcsIDIyNDkwLCAyMjQ5NCwgMjI0OTcsIDIyNTAxLCAyMjUwNywgMjI1MTIsIDIyNTE2LCAyMjUxOSwgCi0gICAgMjI1MjMsIDIyNTI3LCAyMjUzMiwgMjI1MzYsIDIyNTQxLCAyMjU0NSwgMjI1NTAsIDIyNTU0LCAyMjU1OSwgMjI1NjMsIAotICAgIDIyNTY4LCAyMjU3NCwgMjI1NzgsIDIyNTgzLCAyMjU4NywgMjI1OTIsIDIyNTk4LCAyMjYwMiwgMjI2MDgsIDIyNjE0LCAKLSAgICAyMjYxOCwgMjI2MjMsIDIyNjMxLCAyMjYzOSwgMjI2NDYsIDIyNjUxLCAyMjY1NiwgMjI2NjUsIDIyNjcyLCAyMjY3OSwgCi0gICAgMjI2ODQsIDIyNjkwLCAyMjY5NCwgMjI2OTgsIDIyNzAyLCAyMjcwNiwgMjI3MTAsIDIyNzE0LCAyMjcxOCwgMjI3MjIsIAotICAgIDIyNzI2LCAyMjczMCwgMjI3MzYsIDIyNzQxLCAyMjc0NiwgMjI3NDksIDIyNzUzLCAyMjc1NywgMjI3NjIsIDIyNzY2LCAKLSAgICAyMjc3MSwgMjI3NzUsIDIyNzgwLCAyMjc4NCwgMjI3ODksIDIyNzkzLCAyMjc5OCwgMjI4MDIsIDIyODA3LCAyMjgxMSwgCi0gICAgMjI4MTYsIDIyODIyLCAyMjgyNiwgMjI4MzEsIDIyODM2LCAyMjg0MCwgMjI4NDQsIDIyODQ4LCAyMjg1MiwgMjI4NTUsIAotICAgIDIyODU5LCAyMjg2NSwgMjI4NzAsIDIyODc1LCAyMjg3OSwgMjI4ODMsIDIyODg3LCAyMjg5MiwgMjI4OTYsIDIyOTAxLCAKLSAgICAyMjkwNSwgMjI5MTAsIDIyOTEzLCAyMjkxNywgMjI5MjEsIDIyOTI2LCAyMjkzMCwgMjI5MzUsIDIyOTM5LCAyMjk0NCwgCi0gICAgMjI5NTAsIDIyOTU0LCAyMjk1OCwgMjI5NjIsIDIyOTY2LCAyMjk3MCwgMjI5NzQsIDIyOTc4LCAyMjk4MiwgMjI5ODYsIAotICAgIDIyOTkwLCAyMjk5NCwgMjMwMDAsIDIzMDAzLCAyMzAwNywgMjMwMTEsIDIzMDE2LCAyMzAyMCwgMjMwMjUsIDIzMDI5LCAKLSAgICAyMzAzNCwgMjMwMzgsIDIzMDQzLCAyMzA0NywgMjMwNTIsIDIzMDU2LCAyMzA2MSwgMjMwNjUsIDIzMDcwLCAyMzA3NiwgCi0gICAgMjMwODAsIDIzMDg0LCAyMzA5MCwgMjMwOTYsIDIzMTAyLCAyMzEwOCwgMjMxMTIsIDIzMTE2LCAyMzEyMCwgMjMxMjQsIAotICAgIDIzMTI4LCAyMzEzMiwgMjMxMzgsIDIzMTQyLCAyMzE0NiwgMjMxNTAsIDIzMTU1LCAyMzE1OSwgMjMxNjQsIDIzMTY4LCAKLSAgICAyMzE3MywgMjMxNzcsIDIzMTgyLCAyMzE4NiwgMjMxOTEsIDIzMTk1LCAyMzIwMCwgMjMyMDQsIDIzMjA5LCAyMzIxNSwgCi0gICAgMjMyMTksIDIzMjI1LCAyMzIyOSwgMjMyMzMsIDIzMjM3LCAyMzI0MSwgMjMyNDUsIDIzMjQ5LCAyMzI1NSwgMjMyNTgsIAotICAgIDIzMjYyLCAyMzI2NiwgMjMyNzEsIDIzMjc1LCAyMzI4MCwgMjMyODQsIDIzMjg5LCAyMzI5MywgMjMyOTgsIDIzMzAyLCAKLSAgICAyMzMwNywgMjMzMTEsIDIzMzE2LCAyMzMyMCwgMjMzMjUsIDIzMzMxLCAyMzMzNCwgMjMzMzgsIDIzMzQyLCAyMzM0NywgCi0gICAgMjMzNTIsIDIzMzU2LCAyMzM2MCwgMjMzNjQsIDIzMzY4LCAyMzM3MiwgMjMzNzYsIDIzMzgyLCAyMzM4NSwgMjMzODksIAotICAgIDIzMzkzLCAyMzM5OCwgMjM0MDIsIDIzNDA3LCAyMzQxMSwgMjM0MTYsIDIzNDIyLCAyMzQyNiwgMjM0MzEsIDIzNDM1LCAKLSAgICAyMzQzOSwgMjM0NDMsIDIzNDQ3LCAyMzQ1MSwgMjM0NTUsIDIzNDU5LCAyMzQ2NSwgMjM0NjksIDIzNDczLCAyMzQ3NywgCi0gICAgMjM0ODIsIDIzNDg2LCAyMzQ5MSwgMjM0OTUsIDIzNTAwLCAyMzUwNCwgMjM1MDksIDIzNTEzLCAyMzUxOCwgMjM1MjIsIAotICAgIDIzNTI3LCAyMzUzMSwgMjM1MzYsIDIzNTM5LCAyMzU0MywgMjM1NDcsIDIzNTUxLCAyMzU1NSwgMjM1NTksIDIzNTYzLCAKLSAgICAyMzU2NywgMjM1NzEsIDIzNTc3LCAyMzU4MCwgMjM1ODQsIDIzNTg4LCAyMzU5MywgMjM1OTcsIDIzNjAyLCAyMzYwNiwgCi0gICAgMjM2MTEsIDIzNjE1LCAyMzYyMCwgMjM2MjQsIDIzNjI5LCAyMzYzMywgMjM2MzgsIDIzNjQyLCAyMzY0NywgMjM2NTMsIAotICAgIDIzNjU3LCAyMzY2MywgMjM2NjcsIDIzNjczLCAyMzY3OSwgMjM2ODUsIDIzNjkxLCAyMzY5NywgMjM3MDMsIDIzNzA5LCAKLSAgICAyMzcxNSwgMjM3MTksIDIzNzIzLCAyMzcyNywgMjM3MzEsIDIzNzM1LCAyMzczOSwgMjM3NDMsIDIzNzQ3LCAyMzc1MiwgCi0gICAgMjM3NTYsIDIzNzYxLCAyMzc2NSwgMjM3NzAsIDIzNzc0LCAyMzc3OSwgMjM3ODMsIDIzNzg4LCAyMzc5MiwgMjM3OTcsIAotICAgIDIzODAxLCAyMzgwNiwgMjM4MTAsIDIzODE0LCAyMzgxOCwgMjM4MjIsIDIzODI2LCAyMzgzMCwgMjM4MzQsIDIzODQwLCAKLSAgICAyMzg0MywgMjM4NDcsIDIzODUxLCAyMzg1NiwgMjM4NjAsIDIzODY1LCAyMzg2OSwgMjM4NzQsIDIzODc4LCAyMzg4MywgCi0gICAgMjM4ODcsIDIzODkyLCAyMzg5NiwgMjM5MDEsIDIzOTA1LCAyMzkxMCwgMjM5MTYsIDIzOTIwLCAyMzkyNiwgMjM5MzEsIAotICAgIDIzOTM3LCAyMzk0MSwgMjM5NDcsIDIzOTUyLCAyMzk1NiwgMjM5NjAsIDIzOTY0LCAyMzk2OCwgMjM5NzIsIDIzOTc3LCAKLSAgICAyMzk4MCwgMjM5ODQsIDIzOTg5LCAyMzk5MywgMjM5OTgsIDI0MDAxLCAyNDAwNSwgMjQwMDksIDI0MDEzLCAyNDAxNywgCi0gICAgMjQwMjEsIDI0MDI1LCAyNDAyOSwgMjQwMzMsIDI0MDM3LCAyNDA0MSwgMjQwNDUsIDI0MDUwLCAyNDA1NCwgMjQwNTgsIAotICAgIDI0MDY0LCAyNDA2OCwgMjQwNzQsIDI0MDc4LCAyNDA4NCwgMjQwODgsIDI0MDkyLCAyNDA5NiwgMjQxMDAsIDI0MTA0LCAKLSAgICAyNDEwOSwgMjQxMTMsIDI0MTE3LCAyNDEyMSwgMjQxMjUsIDI0MTI5LCAyNDEzMywgMjQxMzcsIDI0MTQxLCAyNDE0NSwgCi0gICAgMjQxNDksIDI0MTU1LCAyNDE2MSwgMjQxNjcsIDI0MTczLCAyNDE3OSwgMjQxODQsIDI0MTkwLCAyNDE5NiwgMjQyMDIsIAotICAgIDI0MjA2LCAyNDIxMCwgMjQyMTQsIDI0MjE4LCAyNDIyMiwgMjQyMjYsIDI0MjMwLCAyNDIzNCwgMjQyMzgsIDI0MjQyLCAKLSAgICAyNDI0NiwgMjQyNTAsIDI0MjU0LCAyNDI1OSwgMjQyNjQsIDI0MjY5LCAyNDI3MywgMjQyNzcsIDI0MjgxLCAyNDI4NSwgCi0gICAgMjQyODksIDI0MjkzLCAyNDI5NywgMjQzMDEsIDI0MzA1LCAyNDMwOSwgMjQzMTUsIDI0MzIxLCAyNDMyNywgMjQzMzMsIAotICAgIDI0MzM5LCAyNDM0NSwgMjQzNTEsIDI0MzU3LCAyNDM2MywgMjQzNjcsIDI0MzcxLCAyNDM3NSwgMjQzNzksIDI0MzgzLCAKLSAgICAyNDM4NywgMjQzOTEsIDI0Mzk3LCAyNDQwMywgMjQ0MDksIDI0NDE1LCAyNDQyMSwgMjQ0MjcsIDI0NDMzLCAyNDQzOSwgCi0gICAgMjQ0NDUsIDI0NDUwLCAyNDQ1NSwgMjQ0NjAsIDI0NDY1LCAyNDQ3MSwgMjQ0NzcsIDI0NDgzLCAyNDQ4OSwgMjQ0OTUsIAotICAgIDI0NTAxLCAyNDUwNywgMjQ1MTIsIDI0NTE4LCAyNDUyNCwgMjQ1MzAsIDI0NTM1LCAyNDU0MSwgMjQ1NDcsIDI0NTUzLCAKLSAgICAyNDU1OCwgMjQ1NjMsIDI0NTY4LCAyNDU3MywgMjQ1NzgsIDI0NTgzLCAyNDU4OCwgMjQ1OTMsIDI0NTk4LCAyNDYwMywgCi0gICAgMjQ2MDgsIDI0NjEzLCAyNDYxNywgMjQ2MjIsIDI0NjI3LCAyNDYzMiwgMjQ2MzcsIDI0NjQyLCAyNDY0NywgMjQ2NTIsIAotICAgIDI0NjU3LCAyNDY2MiwgMjQ2NjcsIDI0NjcyLCAyNDY3NywgMjQ2ODIsIDI0Njg3LCAyNDY5MiwgMjQ2OTcsIDI0NzAyLCAKLSAgICAyNDcwNywgMjQ3MTIsIDI0NzE3LCAyNDcyMiwgMjQ3MjcsIDI0NzMyLCAyNDczNywgMjQ3NDIsIDI0NzQ3LCAyNDc1MiwgCi0gICAgMjQ3NTcsIDI0NzYyLCAyNDc2NiwgMjQ3NzEsIDI0Nzc2LCAyNDc4MSwgMjQ3ODYsIDI0NzkxLCAyNDc5NiwgMjQ4MDEsIAotICAgIDI0ODA2LCAyNDgxMSwgMjQ4MTYsIDI0ODIxLCAyNDgyNiwgMjQ4MzEsIDI0ODM2LCAyNDg0MSwgMjQ4NDYsIDI0ODUxLCAKLSAgICAyNDg1NiwgMjQ4NjEsIDI0ODY2LCAyNDg3MSwgMjQ4NzYsIDI0ODgxLCAyNDg4NiwgMjQ4OTEsIDI0ODk1LCAyNDkwMCwgCi0gICAgMjQ5MDUsIDI0OTEwLCAyNDkxNSwgMjQ5MjAsIDI0OTI0LCAyNDkyOSwgMjQ5MzQsIDI0OTM5LCAyNDk0NCwgMjQ5NDksIAotICAgIDI0OTUzLCAyNDk1OCwgMjQ5NjQsIDI0OTY5LCAyNDk3NCwgMjQ5NzksIDI0OTg0LCAyNDk5MCwgMjQ5OTUsIDI1MDAwLCAKLSAgICAyNTAwNSwgMjUwMTAsIDI1MDE1LCAyNTAyMCwgMjUwMjUsIDI1MDMwLCAyNTAzNSwgMjUwNDAsIDI1MDQ1LCAyNTA1MCwgCi0gICAgMjUwNTUsIDI1MDYwLCAyNTA2NSwgMjUwNzAsIDI1MDc1LCAyNTA4MCwgMjUwODUsIDI1MDkwLCAyNTA5NSwgMjUxMDAsIAotICAgIDI1MTA1LCAyNTExMCwgMjUxMTUsIDI1MTIwLCAyNTEyNSwgMjUxMzAsIDI1MTM1LCAyNTE0MCwgMjUxNDUsIDI1MTUwLCAKLSAgICAyNTE1NSwgMjUxNjAsIDI1MTY1LCAyNTE3MCwgMjUxNzUsIDI1MTgwLCAyNTE4NSwgMjUxOTAsIDI1MTk1LCAyNTIwMCwgCi0gICAgMjUyMDUsIDI1MjEwLCAyNTIxNiwgMjUyMjEsIDI1MjI2LCAyNTIzMSwgMjUyMzYsIDI1MjQxLCAyNTI0NiwgMjUyNTEsIAotICAgIDI1MjU2LCAyNTI2MSwgMjUyNjYsIDI1MjcxLCAyNTI3NSwgMjUyODAsIDI1Mjg1LCAyNTI5MCwgMjUyOTUsIDI1MzAwLCAKLSAgICAyNTMwNSwgMjUzMTAsIDI1MzE1LCAyNTMyMCwgMjUzMjUsIDI1MzMwLCAyNTMzNSwgMjUzNDAsIDI1MzQ1LCAyNTM1MCwgCi0gICAgMjUzNTUsIDI1MzYwLCAyNTM2NSwgMjUzNzAsIDI1Mzc1LCAyNTM4MCwgMjUzODUsIDI1MzkwLCAyNTM5NSwgMjU0MDAsIAotICAgIDI1NDA1LCAyNTQxMSwgMjU0MTUsIDI1NDE5LCAyNTQyMywgMjU0MjcsIDI1NDMxLCAyNTQzNSwgMjU0MzksIDI1NDQzLCAKLSAgICAyNTQ0OSwgMjU0NTUsIDI1NDYxLCAyNTQ2NywgMjU0NzMsIDI1NDc5LCAyNTQ4NSwgMjU0OTIsIDI1NDk4LCAyNTUwMywgCi0gICAgMjU1MDgsIDI1NTEzLCAyNTUxOCwgMjU1MjMsIDI1NTI4LCAyNTUzMywgMjU1MzgsIDI1NTQzLCAyNTU0OCwgMjU1NTMsIAotICAgIDI1NTU4LCAyNTU2MywgMjU1NjgsIDI1NTczLCAyNTU3OCwgMjU1ODMsIDI1NTg4LCAyNTU5MywgMjU1OTgsIDI1NjAzLCAKLSAgICAyNTYwOCwgMjU2MTMsIDI1NjE4LCAyNTYyMywgMjU2MjgsIDI1NjMzLCAyNTYzOCwgMCwgMCwgMCwgMjU2NDUsIDI1NjU1LCAKLSAgICAyNTY1OSwgMjU2NjYsIDI1NjcwLCAyNTY3NCwgMjU2NzgsIDI1Njg2LCAyNTY5MCwgMjU2OTUsIDI1NzAwLCAyNTcwNSwgCi0gICAgMjU3MDksIDI1NzE0LCAyNTcxOSwgMjU3MjIsIDI1NzI2LCAyNTczMCwgMjU3MzksIDI1NzQzLCAyNTc0NywgMjU3NTMsIAotICAgIDI1NzU3LCAyNTc2MSwgMjU3NjksIDI1NzczLCAyNTc4MSwgMjU3ODcsIDI1NzkzLCAyNTc5OSwgMjU4MDUsIDI1ODE1LCAKLSAgICAyNTgyMSwgMjU4MjUsIDI1ODM0LCAyNTgzNywgMjU4NDMsIDI1ODQ3LCAyNTg1MywgMjU4NTgsIDI1ODY0LCAyNTg3MiwgCi0gICAgMjU4NzgsIDI1ODg0LCAyNTg5MiwgMjU4OTgsIDI1OTAyLCAyNTkwNiwgMjU5MTYsIDI1OTIyLCAyNTkyNiwgMjU5MzYsIAotICAgIDI1OTQyLCAyNTk0NiwgMjU5NTAsIDI1OTU3LCAyNTk2NCwgMjU5NjksIDI1OTc0LCAyNTk4MywgMjU5ODcsIDI1OTkxLCAKLSAgICAyNTk5NSwgMjYwMDMsIDI2MDEwLCAyNjAxNCwgMjYwMTgsIDI2MDIyLCAyNjAyNiwgMjYwMzAsIDI2MDM0LCAyNjAzOCwgCi0gICAgMjYwNDIsIDI2MDQ2LCAyNjA1MCwgMjYwNTQsIDI2MDU5LCAyNjA2NCwgMjYwNjksIDI2MDczLCAyNjA3NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwODEsIDI2MDg1LCAyNjA4OSwgMjYwOTMsIDI2MDk3LCAKLSAgICAyNjEwMiwgMjYxMDcsIDI2MTEyLCAyNjExNywgMjYxMjEsIDI2MTI1LCAyNjEzMCwgMjYxMzQsIDAsIDI2MTM4LCAyNjE0MywgCi0gICAgMjYxNDgsIDI2MTUyLCAyNjE1NiwgMjYxNjEsIDI2MTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjE3MSwgMjYxNzUsIDI2MTc5LCAyNjE4MywgMjYxODcsIDI2MTkyLCAyNjE5NywgMjYyMDIsIDI2MjA3LCAyNjIxMSwgCi0gICAgMjYyMTUsIDI2MjIwLCAyNjIyNCwgMjYyMjgsIDI2MjMyLCAyNjIzNywgMjYyNDIsIDI2MjQ2LCAyNjI1MCwgMjYyNTUsIAotICAgIDI2MjYwLCAyNjI2NSwgMjYyNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2Mjc2LCAyNjI4MCwgMjYyODQsIAotICAgIDI2Mjg4LCAyNjI5MiwgMjYyOTcsIDI2MzAyLCAyNjMwNywgMjYzMTIsIDI2MzE2LCAyNjMyMCwgMjYzMjUsIDI2MzI5LCAKLSAgICAyNjMzMywgMjYzMzcsIDI2MzQyLCAyNjM0NywgMjYzNTEsIDI2MzU1LCAyNjM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYzNjUsIDI2MzY5LCAyNjM3MywgMjYzNzcsIDI2MzgxLCAyNjM4NiwgMjYzOTEsIDI2Mzk2LCAKLSAgICAyNjQwMSwgMjY0MDUsIDI2NDA5LCAyNjQxNCwgMjY0MTgsIDAsIDI2NDIyLCAyNjQyNywgMjY0MzIsIDAsIDI2NDM2LCAKLSAgICAyNjQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0NDYsIDI2NDQ5LCAyNjQ1MywgMjY0NTcsIAotICAgIDI2NDYxLCAyNjQ2NSwgMjY0NjksIDI2NDczLCAyNjQ3NywgMjY0ODEsIDI2NDg1LCAyNjQ4OSwgMjY0OTMsIDI2NDk3LCAKLSAgICAyNjUwMSwgMjY1MDUsIDI2NTA5LCAyNjUxMywgMjY1MTYsIDI2NTIwLCAyNjUyNCwgMjY1MjgsIDI2NTMyLCAyNjUzNiwgCi0gICAgMjY1NDAsIDI2NTQ0LCAyNjU0OCwgMjY1NTIsIDI2NTU2LCAyNjU2MCwgMjY1NjQsIDI2NTY4LCAyNjU3MSwgMjY1NzQsIAotICAgIDI2NTc4LCAyNjU4MiwgMjY1ODgsIDI2NTk0LCAyNjYwMCwgMjY2MDYsIDI2NjEyLCAyNjYxOCwgMjY2MjQsIDI2NjMwLCAKLSAgICAyNjYzNiwgMjY2NDIsIDI2NjQ4LCAyNjY1NCwgMjY2NjAsIDI2NjY2LCAyNjY3NSwgMjY2ODQsIDI2NjkwLCAyNjY5NiwgCi0gICAgMjY3MDIsIDI2NzA3LCAyNjcxMSwgMjY3MTYsIDI2NzIxLCAyNjcyNiwgMjY3MzAsIDI2NzM1LCAyNjc0MCwgMjY3NDUsIAotICAgIDI2NzQ5LCAyNjc1NCwgMjY3NTgsIDI2NzYzLCAyNjc2OCwgMjY3NzMsIDI2Nzc4LCAyNjc4MiwgMjY3ODYsIDI2NzkwLCAKLSAgICAyNjc5NCwgMjY3OTgsIDI2ODAyLCAyNjgwNiwgMjY4MTAsIDI2ODE0LCAyNjgxOCwgMjY4MjQsIDI2ODI4LCAyNjgzMiwgCi0gICAgMjY4MzYsIDI2ODQwLCAyNjg0NCwgMjY4NTIsIDI2ODU4LCAyNjg2MiwgMjY4NjgsIDI2ODcyLCAyNjg3OCwgMjY4ODIsIDAsIAotICAgIDAsIDI2ODg2LCAyNjg5MCwgMjY4OTMsIDI2ODk2LCAyNjg5OSwgMjY5MDIsIDI2OTA1LCAyNjkwOCwgMjY5MTEsIDI2OTE0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjkxNywgMjY5MjUsIDI2OTMzLCAyNjk0MSwgMjY5NDksIDI2OTU3LCAyNjk2NSwgMjY5NzMsIAotICAgIDI2OTgxLCAyNjk4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5OTcsIDI3MDAwLCAyNzAwMywgMjcwMDYsIDI3MDExLCAyNzAxNCwgCi0gICAgMjcwMTksIDI3MDI2LCAyNzAzNCwgMjcwMzksIDI3MDQ2LCAyNzA0OSwgMjcwNTYsIDI3MDYzLCAyNzA3MCwgMCwgMjcwNzQsIAotICAgIDI3MDc4LCAyNzA4MSwgMjcwODQsIDI3MDg3LCAyNzA5MCwgMjcwOTMsIDI3MDk2LCAyNzA5OSwgMjcxMDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI3MTA1LCAyNzEwOCwgMjcxMTEsIDI3MTE0LCAyNzExNywgMjcxMjAsIDI3MTI0LCAyNzEyOCwgMjcxMzIsIAotICAgIDI3MTM1LCAyNzEzOSwgMjcxNDMsIDI3MTQ2LCAyNzE1MCwgMjcxNTQsIDI3MTU3LCAyNzE2MSwgMjcxNjQsIDI3MTY4LCAKLSAgICAyNzE3MiwgMjcxNzYsIDI3MTgwLCAyNzE4NCwgMjcxODcsIDI3MTkwLCAyNzE5NCwgMjcxOTgsIDI3MjAxLCAyNzIwNSwgCi0gICAgMjcyMDksIDI3MjEzLCAyNzIxNywgMjcyMjEsIDI3MjI1LCAyNzIyOSwgMjcyMzMsIDI3MjQwLCAyNzI0NSwgMjcyNTAsIAotICAgIDI3MjU1LCAyNzI2MCwgMjcyNjYsIDI3MjcyLCAyNzI3OCwgMjcyODQsIDI3Mjg5LCAyNzI5NSwgMjczMDEsIDI3MzA2LCAKLSAgICAyNzMxMiwgMjczMTgsIDI3MzI0LCAyNzMzMCwgMjczMzYsIDI3MzQxLCAyNzM0NywgMjczNTIsIDI3MzU4LCAyNzM2NCwgCi0gICAgMjczNzAsIDI3Mzc2LCAyNzM4MiwgMjczODcsIDI3MzkyLCAyNzM5OCwgMjc0MDQsIDI3NDA5LCAyNzQxNSwgMjc0MjAsIAotICAgIDI3NDI2LCAyNzQzMSwgMjc0MzYsIDI3NDQyLCAyNzQ0OCwgMjc0NTQsIDI3NDYwLCAyNzQ2NiwgMjc0NzIsIDI3NDc4LCAKLSAgICAyNzQ4NCwgMjc0OTAsIDI3NDk2LCAyNzUwMiwgMjc1MDgsIDI3NTEzLCAyNzUxOCwgMjc1MjMsIDI3NTI5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNzUzNSwgMjc1NDQsIDI3NTUzLCAyNzU2MSwgMjc1NjksIDI3NTc5LCAyNzU4NywgMjc1OTYsIAotICAgIDI3NjAzLCAyNzYxMCwgMjc2MTcsIDI3NjI1LCAyNzYzMywgMjc2NDEsIDI3NjQ5LCAyNzY1NywgMjc2NjUsIDI3NjczLCAKLSAgICAyNzY4MSwgMjc2ODgsIDI3Njk2LCAyNzcwNCwgMjc3MTIsIDI3NzIwLCAyNzcyOCwgMjc3MzgsIDI3NzQ4LCAyNzc1OCwgCi0gICAgMjc3NjgsIDI3Nzc4LCAyNzc4OCwgMjc3OTgsIDI3ODA4LCAyNzgxOCwgMjc4MjgsIDI3ODM4LCAyNzg0OCwgMjc4NTgsIAotICAgIDI3ODY4LCAyNzg3NiwgMjc4ODQsIDI3ODk0LCAyNzkwMiwgMCwgMCwgMCwgMCwgMCwgMjc5MTIsIDI3OTE2LCAyNzkyMCwgCi0gICAgMjc5MjQsIDI3OTI4LCAyNzkzMiwgMjc5MzYsIDI3OTQwLCAyNzk0NCwgMjc5NDgsIDI3OTUyLCAyNzk1NiwgMjc5NjAsIAotICAgIDI3OTY0LCAyNzk2OCwgMjc5NzIsIDI3OTc2LCAyNzk4MCwgMjc5ODQsIDI3OTg4LCAyNzk5MiwgMjc5OTYsIDI4MDAwLCAKLSAgICAyODAwNCwgMjgwMTAsIDI4MDE0LCAyODAyMCwgMjgwMjQsIDI4MDMwLCAyODAzNCwgMjgwNDAsIDI4MDQ0LCAyODA0OCwgCi0gICAgMjgwNTIsIDI4MDU2LCAyODA2MCwgMjgwNjQsIDI4MDcwLCAyODA3NiwgMjgwODIsIDI4MDg4LCAyODA5MywgMjgwOTksIAotICAgIDI4MTA1LCAyODExMSwgMjgxMTcsIDI4MTIzLCAyODEyOSwgMjgxMzYsIDI4MTQyLCAyODE0NywgMjgxNTIsIDI4MTU2LCAKLSAgICAyODE2MCwgMjgxNjQsIDI4MTY4LCAyODE3MiwgMjgxNzYsIDI4MTgwLCAyODE4NiwgMjgxOTIsIDI4MTk4LCAyODIwMywgCi0gICAgMjgyMTAsIDI4MjE1LCAyODIyMCwgMjgyMjYsIDI4MjMxLCAyODIzOCwgMjgyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI4MjUyLCAyODI1OCwgMjgyNjIsIDI4MjY3LCAyODI3MiwgMjgyNzcsIDI4MjgyLCAyODI4NywgMjgyOTIsIAotICAgIDI4Mjk3LCAyODMwMiwgMjgzMDcsIDI4MzEyLCAyODMxNywgMjgzMjIsIDI4MzI3LCAyODMzMSwgMjgzMzUsIDI4MzQwLCAKLSAgICAyODM0NSwgMjgzNTAsIDI4MzU0LCAyODM1OCwgMjgzNjIsIDI4MzY3LCAyODM3MiwgMjgzNzcsIDI4MzgyLCAyODM4NiwgMCwgCi0gICAgMCwgMCwgMjgzOTAsIDI4Mzk1LCAyODQwMCwgMjg0MDUsIDI4NDExLCAyODQxNywgMjg0MjMsIDI4NDI5LCAyODQzNCwgCi0gICAgMjg0MzksIDI4NDQ1LCAyODQ1MSwgMCwgMCwgMCwgMCwgMjg0NTgsIDI4NDYzLCAyODQ2OSwgMjg0NzUsIDI4NDgxLCAKLSAgICAyODQ4NiwgMjg0OTEsIDI4NDk2LCAyODUwMSwgMjg1MDcsIDI4NTEyLCAyODUxNywgMCwgMCwgMCwgMCwgMjg1MjIsIDAsIDAsIAotICAgIDAsIDI4NTI3LCAyODUzMiwgMjg1MzcsIDI4NTQyLCAyODU0NiwgMjg1NTAsIDI4NTU0LCAyODU1OCwgMjg1NjIsIDI4NTY2LCAKLSAgICAyODU3MCwgMjg1NzQsIDI4NTc4LCAyODU4MywgMjg1ODksIDI4NTk1LCAyODYwMSwgMjg2MDYsIDI4NjExLCAyODYxNywgCi0gICAgMjg2MjMsIDI4NjI5LCAyODYzNCwgMjg2NDAsIDI4NjQ1LCAyODY1MSwgMjg2NTcsIDI4NjYyLCAyODY2OCwgMjg2NzQsIAotICAgIDI4NjgwLCAyODY4NSwgMjg2OTAsIDI4Njk1LCAyODcwMSwgMjg3MDcsIDI4NzEyLCAyODcxOCwgMjg3MjMsIDI4NzI5LCAKLSAgICAyODczNCwgMjg3NDAsIDAsIDAsIDI4NzQ2LCAyODc1MiwgMjg3NTgsIDI4NzY0LCAyODc3MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjg3NzYsIDI4NzgzLCAyODc5MCwgMjg3OTYsIDI4ODAzLCAyODgxMCwgMjg4MTYsIDI4ODIzLCAKLSAgICAyODgzMCwgMjg4MzcsIDI4ODQzLCAyODg0OSwgMjg4NTYsIDI4ODYyLCAyODg2OCwgMjg4NzUsIDI4ODgyLCAyODg4OCwgCi0gICAgMjg4OTUsIDI4OTAyLCAyODkwOCwgMjg5MTQsIDI4OTIxLCAyODkyNywgMjg5MzMsIDI4OTQwLCAyODk0NiwgMjg5NTMsIAotICAgIDI4OTYwLCAyODk2NywgMjg5NzQsIDI4OTgxLCAyODk4OCwgMjg5OTQsIDI5MDAxLCAyOTAwOCwgMjkwMTQsIDI5MDIxLCAKLSAgICAyOTAyOCwgMjkwMzUsIDI5MDQyLCAyOTA0OSwgMjkwNTYsIDI5MDYzLCAwLCAwLCAwLCAwLCAyOTA3MCwgMjkwNzgsIAotICAgIDI5MDg1LCAyOTA5MiwgMjkwOTgsIDI5MTA1LCAyOTExMSwgMjkxMTgsIDI5MTI0LCAyOTEzMSwgMjkxMzgsIDI5MTQ1LCAKLSAgICAyOTE1MiwgMjkxNTksIDI5MTY2LCAyOTE3MywgMjkxODAsIDI5MTg3LCAyOTE5NCwgMjkyMDEsIDI5MjA4LCAyOTIxNCwgCi0gICAgMjkyMjEsIDI5MjI4LCAyOTIzNSwgMjkyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MjQ3LCAyOTI1MywgMjkyNTgsIDI5MjYzLCAKLSAgICAyOTI2OCwgMjkyNzMsIDI5Mjc4LCAyOTI4MywgMjkyODgsIDI5MjkzLCAyOTI5OCwgMCwgMCwgMCwgMjkzMDQsIDI5MzEwLCAKLSAgICAyOTMxNiwgMjkzMjAsIDI5MzI2LCAyOTMzMiwgMjkzMzgsIDI5MzQ0LCAyOTM1MCwgMjkzNTYsIDI5MzYyLCAyOTM2OCwgCi0gICAgMjkzNzQsIDI5MzgwLCAyOTM4NiwgMjkzOTIsIDI5Mzk4LCAyOTQwNCwgMjk0MTAsIDI5NDE0LCAyOTQyMCwgMjk0MjYsIAotICAgIDI5NDMyLCAyOTQzOCwgMjk0NDQsIDI5NDUwLCAyOTQ1NiwgMjk0NjIsIDI5NDY4LCAyOTQ3NCwgMjk0ODAsIDI5NDg2LCAKLSAgICAyOTQ5MiwgMjk0OTgsIDI5NTA0LCAyOTUwOCwgMjk1MTMsIDI5NTE4LCAyOTUyMywgMjk1MjcsIDI5NTMyLCAyOTUzNiwgCi0gICAgMjk1NDEsIDI5NTQ2LCAyOTU1MSwgMjk1NTUsIDI5NTYwLCAyOTU2NSwgMjk1NzAsIDI5NTc1LCAyOTU4MCwgMjk1ODQsIAotICAgIDI5NTg4LCAyOTU5MywgMjk1OTgsIDI5NjAyLCAyOTYwNiwgMjk2MTAsIDI5NjE1LCAyOTYyMCwgMjk2MjUsIDI5NjMwLCAwLCAKLSAgICAwLCAyOTYzNiwgMjk2NDAsIDI5NjQ3LCAyOTY1MiwgMjk2NTgsIDI5NjY0LCAyOTY2OSwgMjk2NzUsIDI5NjgxLCAyOTY4NiwgCi0gICAgMjk2OTIsIDI5Njk4LCAyOTcwNCwgMjk3MDksIDI5NzE1LCAyOTcyMCwgMjk3MjUsIDI5NzMxLCAyOTczNiwgMjk3NDIsIAotICAgIDI5NzQ3LCAyOTc1MywgMjk3NTksIDI5NzY1LCAyOTc3MSwgMjk3NzUsIDI5NzgwLCAyOTc4NSwgMjk3OTEsIDI5Nzk3LCAKLSAgICAyOTgwMiwgMjk4MDgsIDI5ODE0LCAyOTgxOCwgMjk4MjMsIDI5ODI4LCAyOTgzMiwgMjk4MzcsIDI5ODQyLCAyOTg0NywgCi0gICAgMjk4NTIsIDI5ODU4LCAyOTg2NCwgMjk4NjksIDI5ODc0LCAyOTg3OSwgMjk4ODMsIDI5ODg4LCAyOTg5MiwgMjk4OTcsIAotICAgIDI5OTAxLCAyOTkwNiwgMjk5MTEsIDI5OTE2LCAyOTkyMSwgMjk5MjcsIDI5OTMzLCAyOTk0MCwgMjk5NTAsIDI5OTU5LCAKLSAgICAyOTk2NiwgMjk5NzIsIDI5OTgyLCAyOTk4NywgMjk5OTMsIDAsIDI5OTk4LCAzMDAwMywgMzAwMDgsIDMwMDE2LCAzMDAyMiwgCi0gICAgMzAwMzAsIDMwMDM1LCAzMDA0MSwgMzAwNDcsIDMwMDUzLCAzMDA1OCwgMzAwNjQsIDMwMDY5LCAzMDA3NiwgMzAwODIsIAotICAgIDMwMDg3LCAzMDA5MywgMzAwOTksIDMwMTA1LCAzMDExMiwgMzAxMTksIDMwMTI2LCAzMDEzMSwgMzAxMzYsIDMwMTQzLCAKLSAgICAzMDE1MCwgMzAxNTcsIDMwMTY0LCAzMDE3MSwgMCwgMCwgMzAxNzgsIDMwMTg1LCAzMDE5MiwgMzAxOTgsIDMwMjA0LCAKLSAgICAzMDIxMCwgMzAyMTYsIDMwMjIyLCAzMDIyOCwgMzAyMzQsIDMwMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDI0NiwgMzAyNTIsIAotICAgIDMwMjU3LCAzMDI2MiwgMzAyNjcsIDMwMjcyLCAzMDI3NywgMzAyODIsIDMwMjg3LCAzMDI5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzAyOTcsIDMwMzAyLCAzMDMwNywgMzAzMTIsIDMwMzE3LCAzMDMyMiwgMzAzMjcsIDMwMzM2LCAzMDM0MywgMzAzNDgsIAotICAgIDMwMzUzLCAzMDM1OCwgMzAzNjMsIDMwMzY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NjA4OCwgNjYwOTcsIDY2MTA2LCA2NjExNywgNjYxMjQsIDY2MTI5LCA2NjEzNCwgNjYxNDEsIDY2MTQ4LCA2NjE1NCwgCisgICAgNjYxNTksIDY2MTY0LCA2NjE2OSwgNjYxNzQsIDY2MTgxLCA2NjE4NiwgNjYxOTEsIDY2MTk2LCA2NjIwNywgNjYyMTIsIAorICAgIDY2MjE3LCA2NjIyNCwgNjYyMjksIDY2MjM2LCA2NjI0MSwgNjYyNDYsIDY2MjUzLCA2NjI2MCwgNjYyNjcsIDY2Mjc2LCAKKyAgICA2NjI4NSwgNjYyOTAsIDY2Mjk1LCA2NjMwMCwgNjYzMDcsIDY2MzEyLCA2NjMyMiwgNjYzMjksIDY2MzM0LCA2NjMzOSwgCisgICAgNjYzNDQsIDY2MzQ5LCA2NjM1NCwgNjYzNTksIDY2MzY4LCA2NjM3NSwgNjYzODIsIDY2Mzg3LCA2NjM5NCwgNjYzOTksIAorICAgIDY2NDA2LCA2NjQxNSwgNjY0MjYsIDY2NDMxLCA2NjQ0MCwgNjY0NDUsIDY2NDUyLCA2NjQ2MSwgNjY0NzAsIDY2NDc1LCAKKyAgICA2NjQ4MCwgNjY0ODcsIDY2NDkzLCA2NjUwMCwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTgsIDY2NTIyLCA2NjUyNiwgCisgICAgNjY1MzAsIDY2NTM0LCA2NjUzOCwgNjY1NDIsIDY2NTQ2LCA2NjU0OSwgNjY1NTMsIDY2NTU3LCA2NjU2MSwgNjY1NjUsIAorICAgIDY2NTY5LCA2NjU3MywgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODcsIDY2NTkxLCA2NjU5NSwgNjY1OTksIDY2NjAzLCAKKyAgICA2NjYwNywgNjY2MTEsIDY2NjE1LCA2NjYxOSwgNjY2MjMsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgCisgICAgNjY2NDcsIDY2NjUxLCA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIAorICAgIDY2Njg3LCA2NjY5MSwgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCAKKyAgICA2NjcyNywgNjY3MzEsIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgCisgICAgNjY3NjYsIDY2NzcwLCA2Njc3NCwgNjY3NzgsIDY2NzgyLCA2Njc4NiwgNjY3OTAsIDY2Nzk0LCA2Njc5OCwgNjY4MDIsIAorICAgIDY2ODA2LCA2NjgxMCwgNjY4MTQsIDY2ODE4LCA2NjgyMiwgNjY4MjYsIDY2ODMwLCA2NjgzNCwgNjY4MzgsIDY2ODQyLCAKKyAgICA2Njg0NiwgNjY4NTAsIDY2ODU0LCA2Njg1OCwgNjY4NjIsIDY2ODY2LCA2Njg3MCwgNjY4NzQsIDY2ODc4LCA2Njg4MiwgCisgICAgNjY4ODYsIDY2ODkwLCA2Njg5NCwgNjY4OTgsIDY2OTAyLCA2NjkwNiwgNjY5MTAsIDY2OTE0LCA2NjkxOCwgNjY5MjIsIAorICAgIDY2OTI2LCA2NjkzMCwgNjY5MzQsIDY2OTM4LCA2Njk0MiwgNjY5NDYsIDY2OTUwLCA2Njk1NCwgNjY5NTgsIDY2OTYyLCAKKyAgICA2Njk2NiwgNjY5NzAsIDY2OTc0LCA2Njk3OCwgNjY5ODIsIDY2OTg2LCA2Njk5MCwgNjY5OTQsIDY2OTk4LCA2NzAwMiwgCisgICAgNjcwMDYsIDY3MDEwLCA2NzAxNCwgNjcwMTgsIDY3MDIyLCA2NzAyNiwgNjcwMzAsIDY3MDM0LCA2NzAzOCwgNjcwNDIsIAorICAgIDY3MDQ2LCA2NzA1MCwgNjcwNTQsIDY3MDU4LCA2NzA2MiwgNjcwNjYsIDY3MDcwLCA2NzA3NCwgNjcwNzgsIDY3MDgyLCAKKyAgICA2NzA4NiwgNjcwOTAsIDY3MDk0LCA2NzA5OCwgNjcxMDIsIDY3MTA2LCA2NzExMCwgNjcxMTQsIDY3MTE4LCA2NzEyMiwgCisgICAgNjcxMjYsIDY3MTMwLCA2NzEzNCwgNjcxMzgsIDY3MTQyLCA2NzE0NiwgNjcxNTAsIDY3MTU0LCA2NzE1OCwgNjcxNjIsIAorICAgIDY3MTY2LCA2NzE3MCwgNjcxNzQsIDY3MTc4LCA2NzE4MiwgNjcxODYsIDY3MTkwLCA2NzE5NCwgNjcxOTgsIDY3MjAyLCAKKyAgICA2NzIwNiwgNjcyMTAsIDY3MjE0LCA2NzIxOCwgNjcyMjIsIDY3MjI2LCA2NzIzMCwgNjcyMzQsIDY3MjM3LCA2NzI0MSwgCisgICAgNjcyNDUsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIAorICAgIDY3Mjg1LCA2NzI4OSwgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCAKKyAgICA2NzMyNSwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgCisgICAgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIAorICAgIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCAKKyAgICA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgCisgICAgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIAorICAgIDY3NTI1LCA2NzUyOSwgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCAKKyAgICA2NzU2NSwgNjc1NjksIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgCisgICAgNjc2MDUsIDY3NjA5LCA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIAorICAgIDY3NjQ1LCA2NzY0OSwgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCAKKyAgICA2NzY4NSwgNjc2ODksIDY3NjkzLCA2NzY5NywgNjc3MDAsIDY3NzA0LCA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgCisgICAgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIAorICAgIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCAKKyAgICA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgCisgICAgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIAorICAgIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCAKKyAgICA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgCisgICAgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTgwLCA2Nzk4NCwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIAorICAgIDY4MDA0LCA2ODAwOCwgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCAKKyAgICA2ODA0NCwgNjgwNDgsIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgCisgICAgNjgwODQsIDY4MDg4LCA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIAorICAgIDY4MTI0LCA2ODEyOCwgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCAKKyAgICA2ODE2NCwgNjgxNjgsIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgCisgICAgNjgyMDQsIDY4MjA4LCA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIAorICAgIDY4MjQ0LCA2ODI0OCwgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCAKKyAgICA2ODI4NCwgNjgyODgsIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgCisgICAgNjgzMjQsIDY4MzI4LCA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIAorICAgIDY4MzY0LCA2ODM2OCwgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCAKKyAgICA2ODQwNCwgNjg0MDgsIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgCisgICAgNjg0NDQsIDY4NDQ4LCA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIAorICAgIDY4NDg0LCA2ODQ4OCwgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCAKKyAgICA2ODUyNCwgNjg1MjgsIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU1LCA2ODU1OSwgCisgICAgNjg1NjMsIDY4NTY3LCA2ODU3MSwgNjg1NzUsIDY4NTc5LCA2ODU4MywgNjg1ODcsIDY4NTkxLCA2ODU5NSwgNjg1OTksIAorICAgIDY4NjAzLCA2ODYwNywgNjg2MTEsIDY4NjE1LCA2ODYxOSwgNjg2MjMsIDY4NjI3LCA2ODYzMSwgNjg2MzUsIDY4NjM5LCAKKyAgICA2ODY0MywgNjg2NDcsIDY4NjUxLCA2ODY1NSwgNjg2NTksIDY4NjYzLCA2ODY2NywgNjg2NzEsIDY4Njc1LCA2ODY3OSwgCisgICAgNjg2ODMsIDY4Njg3LCA2ODY5MSwgNjg2OTUsIDY4Njk5LCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNSwgNjg3MTksIAorICAgIDY4NzIzLCA2ODcyNywgNjg3MzEsIDY4NzM1LCA2ODczOSwgNjg3NDMsIDY4NzQ3LCA2ODc1MSwgNjg3NTUsIDY4NzU5LCAKKyAgICA2ODc2MywgNjg3NjcsIDY4NzcxLCA2ODc3NSwgNjg3NzksIDY4NzgzLCA2ODc4NywgNjg3OTEsIDY4Nzk1LCA2ODc5OSwgCisgICAgNjg4MDMsIDY4ODA3LCA2ODgxMSwgNjg4MTUsIDY4ODE5LCA2ODgyMywgNjg4MjcsIDY4ODMxLCA2ODgzNSwgNjg4MzksIAorICAgIDY4ODQzLCA2ODg0NywgNjg4NTEsIDY4ODU1LCA2ODg1OSwgNjg4NjMsIDY4ODY3LCA2ODg3MSwgNjg4NzUsIDY4ODc5LCAKKyAgICA2ODg4MywgNjg4ODcsIDY4ODkxLCA2ODg5NSwgNjg4OTksIDY4OTAzLCA2ODkwNywgNjg5MTEsIDY4OTE1LCA2ODkxOSwgCisgICAgNjg5MjMsIDY4OTI3LCA2ODkzMSwgNjg5MzUsIDY4OTM5LCA2ODk0MywgNjg5NDcsIDY4OTUxLCA2ODk1NSwgNjg5NTksIAorICAgIDY4OTYzLCA2ODk2NywgNjg5NzEsIDY4OTc1LCA2ODk3OSwgNjg5ODMsIDY4OTg3LCA2ODk5MSwgNjg5OTUsIDY4OTk5LCAKKyAgICA2OTAwMywgNjkwMDcsIDY5MDEwLCA2OTAxNCwgNjkwMTgsIDY5MDIyLCA2OTAyNiwgNjkwMzAsIDY5MDM0LCA2OTAzOCwgCisgICAgNjkwNDIsIDY5MDQ2LCA2OTA1MCwgNjkwNTQsIDY5MDU4LCA2OTA2MiwgNjkwNjYsIDY5MDcwLCA2OTA3NCwgNjkwNzgsIAorICAgIDY5MDgyLCA2OTA4NiwgNjkwOTAsIDY5MDk0LCA2OTA5OCwgNjkxMDIsIDY5MTA2LCA2OTExMCwgNjkxMTQsIDY5MTE4LCAKKyAgICA2OTEyMiwgNjkxMjYsIDY5MTMwLCA2OTEzNCwgNjkxMzgsIDY5MTQyLCA2OTE0NiwgNjkxNTAsIDY5MTU0LCA2OTE1OCwgCisgICAgNjkxNjIsIDY5MTY2LCA2OTE3MCwgNjkxNzQsIDY5MTc4LCA2OTE4MiwgNjkxODYsIDY5MTkwLCA2OTE5NCwgNjkxOTgsIAorICAgIDY5MjAyLCA2OTIwNiwgNjkyMTAsIDY5MjE0LCA2OTIxOCwgNjkyMjIsIDY5MjI2LCA2OTIzMCwgNjkyMzQsIDY5MjM4LCAKKyAgICA2OTI0MiwgNjkyNDYsIDY5MjUwLCA2OTI1NCwgNjkyNTgsIDY5MjYyLCA2OTI2NiwgNjkyNzAsIDY5Mjc0LCA2OTI3OCwgCisgICAgNjkyODIsIDY5Mjg2LCA2OTI5MCwgNjkyOTQsIDY5Mjk4LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMTgsIAorICAgIDY5MzIyLCA2OTMyNiwgNjkzMzAsIDY5MzM0LCA2OTMzOCwgNjkzNDIsIDY5MzQ2LCA2OTM1MCwgNjkzNTQsIDY5MzU4LCAKKyAgICA2OTM2MiwgNjkzNjYsIDY5MzcwLCA2OTM3NCwgNjkzNzgsIDY5MzgyLCA2OTM4NiwgNjkzOTAsIDY5Mzk0LCA2OTM5OCwgCisgICAgNjk0MDIsIDY5NDA2LCA2OTQxMCwgNjk0MTQsIDY5NDE4LCA2OTQyMiwgNjk0MjYsIDY5NDMwLCA2OTQzNCwgNjk0MzgsIAorICAgIDY5NDQyLCA2OTQ0NiwgNjk0NTAsIDY5NDU0LCA2OTQ1OCwgNjk0NjIsIDY5NDY2LCA2OTQ3MCwgNjk0NzQsIDY5NDc4LCAKKyAgICA2OTQ4MiwgNjk0ODYsIDY5NDkwLCA2OTQ5NCwgNjk0OTgsIDY5NTAyLCA2OTUwNiwgNjk1MTAsIDY5NTE0LCA2OTUxOCwgCisgICAgNjk1MjIsIDY5NTI2LCA2OTUzMCwgNjk1MzQsIDY5NTM4LCA2OTU0MiwgNjk1NDYsIDY5NTUwLCA2OTU1NCwgNjk1NTgsIAorICAgIDY5NTYyLCA2OTU2NiwgNjk1NzAsIDY5NTc0LCA2OTU3OCwgNjk1ODIsIDY5NTg2LCA2OTU5MCwgNjk1OTQsIDY5NTk4LCAKKyAgICA2OTYwMiwgNjk2MDYsIDY5NjEwLCA2OTYxMywgNjk2MTcsIDY5NjIxLCA2OTYyNSwgNjk2MjksIDY5NjMzLCA2OTYzNywgCisgICAgNjk2NDEsIDY5NjQ1LCA2OTY0OSwgNjk2NTMsIDY5NjU3LCA2OTY2MSwgNjk2NjUsIDY5NjY5LCA2OTY3MywgNjk2NzcsIAorICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5NjkzLCA2OTY5NywgNjk3MDEsIDY5NzA1LCA2OTcwOSwgNjk3MTMsIDY5NzE3LCAKKyAgICA2OTcyMSwgNjk3MjUsIDY5NzI5LCA2OTczMywgNjk3MzcsIDY5NzQxLCA2OTc0NSwgNjk3NDksIDY5NzUzLCA2OTc1NywgCisgICAgNjk3NjEsIDY5NzY1LCA2OTc2OSwgNjk3NzMsIDY5Nzc3LCA2OTc4MSwgNjk3ODUsIDY5Nzg5LCA2OTc5MywgNjk3OTcsIAorICAgIDY5ODAxLCA2OTgwNSwgNjk4MDksIDY5ODEzLCA2OTgxNywgNjk4MjEsIDY5ODI1LCA2OTgyOSwgNjk4MzMsIDY5ODM3LCAKKyAgICA2OTg0MSwgNjk4NDUsIDY5ODQ5LCA2OTg1MywgNjk4NTcsIDY5ODYxLCA2OTg2NSwgNjk4NjksIDY5ODczLCA2OTg3NywgCisgICAgNjk4ODEsIDY5ODg1LCA2OTg4OSwgNjk4OTMsIDY5ODk3LCA2OTkwMSwgNjk5MDUsIDY5OTA5LCA2OTkxMywgNjk5MTcsIAorICAgIDY5OTIxLCA2OTkyNSwgNjk5MjksIDY5OTMzLCA2OTkzNywgNjk5NDEsIDY5OTQ1LCA2OTk0OSwgNjk5NTMsIDY5OTU3LCAKKyAgICA2OTk2MSwgNjk5NjUsIDY5OTY5LCA2OTk3MywgNjk5NzcsIDY5OTgxLCA2OTk4NSwgNjk5ODksIDY5OTkzLCA2OTk5NywgCisgICAgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE3LCA3MDAyMSwgNzAwMjUsIDcwMDI5LCA3MDAzMywgNzAwMzcsIAorICAgIDcwMDQxLCA3MDA0NSwgNzAwNDksIDcwMDUzLCA3MDA1NywgNzAwNjEsIDcwMDY1LCA3MDA2OSwgNzAwNzMsIDcwMDc3LCAKKyAgICA3MDA4MSwgNzAwODUsIDcwMDg5LCA3MDA5MywgNzAwOTcsIDcwMTAxLCA3MDEwNSwgNzAxMDksIDcwMTEzLCA3MDExNywgCisgICAgNzAxMjEsIDcwMTI1LCA3MDEyOSwgNzAxMzMsIDcwMTM3LCA3MDE0MSwgNzAxNDUsIDcwMTQ5LCA3MDE1MywgNzAxNTcsIAorICAgIDcwMTYxLCA3MDE2NSwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODEsIDcwMTg1LCA3MDE4OSwgNzAxOTMsIDcwMTk3LCAKKyAgICA3MDIwMSwgNzAyMDUsIDcwMjA5LCA3MDIxMywgNzAyMTcsIDcwMjIxLCA3MDIyNSwgNzAyMjksIDcwMjMzLCA3MDIzNywgCisgICAgNzAyNDEsIDcwMjQ1LCA3MDI0OSwgNzAyNTMsIDcwMjU3LCA3MDI2MSwgNzAyNjUsIDcwMjY5LCA3MDI3MywgNzAyNzcsIAorICAgIDcwMjgxLCA3MDI4NSwgNzAyODksIDcwMjkzLCA3MDI5NywgNzAzMDEsIDcwMzA1LCA3MDMwOSwgNzAzMTMsIDcwMzE3LCAKKyAgICA3MDMyMSwgNzAzMjUsIDcwMzI5LCA3MDMzMywgNzAzMzcsIDcwMzQxLCA3MDM0NSwgNzAzNDksIDcwMzUzLCA3MDM1NywgCisgICAgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIAorICAgIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCAKKyAgICA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgCisgICAgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIAorICAgIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCAKKyAgICA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgCisgICAgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIAorICAgIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCAKKyAgICA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgCisgICAgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIAorICAgIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCAKKyAgICA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgCisgICAgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIAorICAgIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCAKKyAgICA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgCisgICAgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIAorICAgIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCAKKyAgICA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgCisgICAgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIAorICAgIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDAsIDAsIDAsIAorICAgIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCAKKyAgICA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgCisgICAgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIAorICAgIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCAKKyAgICA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgCisgICAgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTM3NywgCisgICAgNzEzODIsIDcxMzg2LCA3MTM5MSwgNzEzOTYsIDcxNDAxLCA3MTQwNiwgNzE0MTEsIDcxNDE1LCA3MTQyMCwgNzE0MjUsIAorICAgIDcxNDMwLCA3MTQzNSwgNzE0NDAsIDcxNDQ1LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc0LCAKKyAgICA3MTQ3OSwgNzE0ODQsIDcxNDg4LCA3MTQ5MywgNzE0OTgsIDcxNTAzLCA3MTUwOCwgNzE1MTMsIDcxNTE3LCA3MTUyMiwgCisgICAgNzE1MjYsIDcxNTMxLCA3MTUzNSwgNzE1NDAsIDcxNTQ0LCA3MTU0OCwgNzE1NTIsIDcxNTU3LCA3MTU2MiwgNzE1NjcsIAorICAgIDcxNTc1LCA3MTU4MywgNzE1OTEsIDcxNTk5LCA3MTYwNywgNzE2MTUsIDcxNjIxLCA3MTYyOSwgNzE2MzMsIDcxNjM3LCAKKyAgICA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgCisgICAgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIAorICAgIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCAKKyAgICA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzYsIDcxNzgwLCA3MTc4NCwgNzE3ODgsIDcxNzkyLCA3MTc5NiwgCisgICAgNzE4MDAsIDcxODA0LCA3MTgwOCwgNzE4MTIsIDcxODE2LCA3MTgyMCwgNzE4MjQsIDcxODI4LCA3MTgzMiwgNzE4MzYsIAorICAgIDcxODQwLCA3MTg0NCwgNzE4NDgsIDcxODUyLCA3MTg1NiwgNzE4NjAsIDcxODY0LCA3MTg2OCwgNzE4NzIsIDcxODc2LCAKKyAgICA3MTg4MCwgNzE4ODQsIDcxODg4LCA3MTg5MiwgNzE4OTYsIDcxOTAwLCA3MTkwNCwgNzE5MDgsIDcxOTEyLCA3MTkxNiwgCisgICAgNzE5MjAsIDcxOTIzLCA3MTkyNywgNzE5MzEsIDcxOTM0LCA3MTkzOCwgNzE5NDIsIDcxOTQ2LCA3MTk0OSwgNzE5NTMsIAorICAgIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCAKKyAgICA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgCisgICAgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDgsIDcyMDUxLCA3MjA1NSwgNzIwNTksIDcyMDYzLCA3MjA2NiwgNzIwNzAsIAorICAgIDcyMDc0LCA3MjA3OCwgNzIwODIsIDcyMDg2LCA3MjA5MCwgNzIwOTQsIDcyMDk4LCA3MjEwMiwgNzIxMDYsIDcyMTEwLCAKKyAgICA3MjExNCwgNzIxMTgsIDcyMTIyLCA3MjEyNiwgNzIxMzAsIDcyMTM0LCA3MjEzOCwgNzIxNDIsIDcyMTQ2LCA3MjE1MCwgCisgICAgNzIxNTQsIDcyMTU4LCA3MjE2MiwgNzIxNjYsIDcyMTcwLCA3MjE3NCwgNzIxNzgsIDcyMTgyLCA3MjE4NiwgNzIxOTAsIAorICAgIDcyMTk0LCA3MjE5OCwgNzIyMDIsIDcyMjA2LCA3MjIxMCwgNzIyMTQsIDcyMjE4LCA3MjIyMSwgNzIyMjUsIDcyMjI5LCAKKyAgICA3MjIzMywgNzIyMzcsIDcyMjQxLCA3MjI0NSwgNzIyNDksIDcyMjUzLCA3MjI1NywgNzIyNjEsIDcyMjY1LCA3MjI2OSwgCisgICAgNzIyNzMsIDcyMjc3LCA3MjI4MSwgNzIyODUsIDcyMjg5LCA3MjI5MywgNzIyOTcsIDcyMzAxLCA3MjMwNSwgNzIzMDksIAorICAgIDcyMzEzLCA3MjMxNywgNzIzMjEsIDcyMzI1LCA3MjMyOSwgNzIzMzMsIDcyMzM3LCA3MjM0MSwgNzIzNDUsIDcyMzQ5LCAKKyAgICA3MjM1MywgNzIzNTcsIDcyMzYxLCA3MjM2NSwgNzIzNjgsIDcyMzcyLCA3MjM3NiwgNzIzODAsIDcyMzg0LCA3MjM4OCwgCisgICAgNzIzOTIsIDcyMzk2LCA3MjQwMCwgNzI0MDQsIDcyNDA4LCA3MjQxMiwgNzI0MTYsIDcyNDIwLCA3MjQyNCwgNzI0MjgsIAorICAgIDcyNDMyLCA3MjQzNSwgNzI0MzksIDcyNDQzLCA3MjQ0NywgNzI0NTEsIDcyNDU1LCA3MjQ1OSwgNzI0NjMsIDcyNDY3LCAKKyAgICA3MjQ3MSwgNzI0NzUsIDcyNDc5LCA3MjQ4MywgNzI0ODcsIDcyNDkxLCA3MjQ5NSwgNzI0OTksIDcyNTAzLCA3MjUwNywgCisgICAgNzI1MTEsIDcyNTE1LCA3MjUxOSwgNzI1MjIsIDcyNTI2LCA3MjUzMCwgNzI1MzQsIDcyNTM4LCA3MjU0MiwgNzI1NDYsIAorICAgIDcyNTUwLCA3MjU1NCwgNzI1NTgsIDcyNTYyLCA3MjU2NiwgNzI1NzAsIDcyNTc0LCA3MjU3OCwgNzI1ODIsIDcyNTg2LCAKKyAgICA3MjU5MCwgNzI1OTQsIDcyNTk4LCA3MjYwMiwgNzI2MDYsIDcyNjEwLCA3MjYxNCwgNzI2MTgsIDcyNjIyLCA3MjYyNiwgCisgICAgNzI2MzAsIDcyNjM0LCA3MjYzOCwgNzI2NDIsIDcyNjQ2LCA3MjY1MCwgNzI2NTQsIDcyNjU4LCA3MjY2MiwgNzI2NjYsIAorICAgIDcyNjcwLCA3MjY3NCwgNzI2NzgsIDcyNjgyLCA3MjY4NiwgNzI2OTAsIDcyNjk0LCA3MjY5NywgNzI3MDIsIDcyNzA2LCAKKyAgICA3MjcxMiwgNzI3MTcsIDcyNzIzLCA3MjcyNywgNzI3MzEsIDcyNzM1LCA3MjczOSwgNzI3NDMsIDcyNzQ3LCA3Mjc1MSwgCisgICAgNzI3NTUsIDcyNzU5LCA3Mjc2MywgNzI3NjcsIDcyNzcxLCA3Mjc3NSwgNzI3NzksIDcyNzgyLCA3Mjc4NSwgNzI3ODgsIAorICAgIDcyNzkxLCA3Mjc5NCwgNzI3OTcsIDcyODAxLCA3MjgwNCwgNzI4MDgsIDcyODEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjgxOSwgNzI4MjQsIDcyODI5LCA3MjgzNCwgNzI4MzksIAorICAgIDcyODQ2LCA3Mjg1MywgNzI4NTgsIDcyODYzLCA3Mjg2OCwgNzI4NzMsIDcyODgwLCA3Mjg4NywgNzI4OTQsIDcyOTAxLCAKKyAgICA3MjkwOCwgNzI5MTUsIDcyOTI1LCA3MjkzNSwgNzI5NDIsIDcyOTQ5LCA3Mjk1NiwgNzI5NjMsIDcyOTY5LCA3Mjk3NSwgCisgICAgNzI5ODQsIDcyOTkzLCA3MzAwMCwgNzMwMDcsIDczMDE4LCA3MzAyOSwgNzMwMzQsIDczMDM5LCA3MzA0NiwgNzMwNTMsIAorICAgIDczMDYwLCA3MzA2NywgNzMwNzQsIDczMDgxLCA3MzA4OCwgNzMwOTUsIDczMTAxLCA3MzEwNywgNzMxMTMsIDczMTE5LCAKKyAgICA3MzEyNiwgNzMxMzMsIDczMTM4LCA3MzE0MiwgNzMxNDksIDczMTU2LCA3MzE2MywgNzMxNjcsIDczMTc0LCA3MzE3OCwgCisgICAgNzMxODMsIDczMTg3LCA3MzE5MywgNzMxOTgsIDczMjA0LCA3MzIwOSwgNzMyMTMsIDczMjE3LCA3MzIyMCwgNzMyMjMsIAorICAgIDczMjI4LCA3MzIzMywgNzMyMzgsIDczMjQzLCA3MzI0OCwgNzMyNTMsIDczMjU4LCA3MzI2MywgNzMyNjgsIDczMjczLCAKKyAgICA3MzI4MSwgNzMyODksIDczMjk0LCA3MzI5OSwgNzMzMDQsIDczMzA5LCA3MzMxNCwgNzMzMTksIDczMzI0LCA3MzMyOSwgCisgICAgNzMzMzQsIDczMzM5LCA3MzM0NCwgNzMzNDksIDczMzU0LCA3MzM1OSwgNzMzNjUsIDczMzcxLCA3MzM3NywgNzMzODMsIAorICAgIDczMzg4LCA3MzM5NCwgNzMzOTcsIDczNDAwLCA3MzQwMywgNzM0MDcsIDczNDExLCA3MzQxNSwgNzM0MTksIDczNDIyLCAKKyAgICA3MzQyNiwgNzM0MjksIDczNDMzLCA3MzQzNiwgNzM0NDAsIDczNDQ0LCA3MzQ0OCwgNzM0NTIsIDczNDU2LCA3MzQ2MCwgCisgICAgNzM0NjQsIDczNDY4LCA3MzQ3MiwgNzM0NzYsIDczNDgwLCA3MzQ4NCwgNzM0ODgsIDczNDkyLCA3MzQ5NiwgNzM1MDAsIAorICAgIDczNTA0LCA3MzUwOCwgNzM1MTIsIDczNTE2LCA3MzUyMCwgNzM1MjQsIDczNTI3LCA3MzUzMSwgNzM1MzUsIDczNTM5LCAKKyAgICA3MzU0MywgNzM1NDcsIDczNTUxLCA3MzU1NSwgNzM1NTksIDczNTYzLCA3MzU2NywgNzM1NzEsIDczNTc1LCA3MzU3OSwgCisgICAgNzM1ODMsIDczNTg3LCA3MzU5MSwgNzM1OTUsIDczNTk5LCA3MzYwMywgNzM2MDcsIDczNjExLCA3MzYxNSwgNzM2MTksIAorICAgIDczNjIzLCA3MzYyNywgNzM2MzEsIDczNjM1LCA3MzYzOSwgNzM2NDMsIDczNjQ3LCA3MzY1MSwgNzM2NTUsIDczNjU4LCAKKyAgICA3MzY2MiwgNzM2NjYsIDczNjcwLCA3MzY3NCwgNzM2NzgsIDczNjgyLCA3MzY4NiwgNzM2OTAsIDczNjk0LCA3MzY5OCwgCisgICAgNzM3MDIsIDczNzA2LCA3MzcxMSwgNzM3MTYsIDczNzE5LCA3MzcyNCwgNzM3MjcsIDczNzMwLCA3MzczMywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzM3MzcsIDczNzQ2LCA3Mzc1NSwgNzM3NjQsIDczNzczLCA3Mzc4MiwgNzM3OTEsIDczODAwLCAKKyAgICA3MzgwOSwgNzM4MTcsIDczODI0LCA3MzgzMiwgNzM4MzksIDczODQ3LCA3Mzg1NywgNzM4NjYsIDczODc2LCA3Mzg4NSwgCisgICAgNzM4OTUsIDczOTAzLCA3MzkxMCwgNzM5MTgsIDczOTI1LCA3MzkzMywgNzM5MzgsIDczOTQzLCA3Mzk0OSwgNzM5NTgsIAorICAgIDczOTY0LCA3Mzk3MCwgNzM5NzcsIDczOTg2LCA3Mzk5NCwgNzQwMDIsIDc0MDEwLCA3NDAxNywgNzQwMjQsIDc0MDMxLCAKKyAgICA3NDAzOCwgNzQwNDMsIDc0MDQ4LCA3NDA1MywgNzQwNTgsIDc0MDYzLCA3NDA2OCwgNzQwNzMsIDc0MDc4LCA3NDA4NiwgCisgICAgNzQwOTQsIDc0MTAwLCA3NDEwNSwgNzQxMTAsIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTMwLCA3NDEzNSwgNzQxNDAsIAorICAgIDc0MTQ1LCA3NDE1NCwgNzQxNjMsIDc0MTY4LCA3NDE3MywgNzQxODMsIDc0MTkzLCA3NDIwMCwgNzQyMDcsIDc0MjE2LCAKKyAgICA3NDIyNSwgNzQyMzcsIDc0MjQ5LCA3NDI1NSwgNzQyNjEsIDc0MjY5LCA3NDI3NywgNzQyODcsIDc0Mjk3LCA3NDMwNCwgCisgICAgNzQzMTEsIDc0MzE2LCA3NDMyMSwgNzQzMzMsIDc0MzQ1LCA3NDM1MywgNzQzNjEsIDc0MzcxLCA3NDM4MSwgNzQzOTMsIAorICAgIDc0NDA1LCA3NDQxNCwgNzQ0MjMsIDc0NDMwLCA3NDQzNywgNzQ0NDQsIDc0NDUxLCA3NDQ2MCwgNzQ0NjksIDc0NDc0LCAKKyAgICA3NDQ3OSwgNzQ0ODYsIDc0NDkzLCA3NDUwMCwgNzQ1MDcsIDc0NTE5LCA3NDUzMSwgNzQ1MzYsIDc0NTQxLCA3NDU0NiwgCisgICAgNzQ1NTEsIDc0NTU2LCA3NDU2MSwgNzQ1NjYsIDc0NTcxLCA3NDU3NSwgNzQ1ODAsIDc0NTg1LCA3NDU5MCwgNzQ1OTUsIAorICAgIDc0NjAwLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMywgNzQ2MzAsIDc0NjM3LCA3NDY0NCwgNzQ2NTEsIDc0NjYwLCAKKyAgICA3NDY2OSwgNzQ2NzUsIDc0NjgxLCA3NDY4NywgNzQ2OTMsIDc0Njk5LCA3NDcwNSwgNzQ3MTIsIDc0NzE5LCA3NDcyNiwgCisgICAgNzQ3MzAsIDc0NzM3LCA3NDc0MiwgNzQ3NDcsIDc0NzU0LCA3NDc2NywgNzQ3NzMsIDc0NzgxLCA3NDc4OSwgNzQ3OTYsIAorICAgIDc0ODAzLCA3NDgxMiwgNzQ4MjEsIDc0ODI4LCA3NDgzNSwgNzQ4NDIsIDc0ODQ5LCA3NDg1NiwgNzQ4NjMsIDc0ODcwLCAKKyAgICA3NDg3NywgNzQ4ODQsIDc0ODkxLCA3NDkwMCwgNzQ5MDksIDc0OTE4LCA3NDkyNywgNzQ5MzYsIDc0OTQ1LCA3NDk1NCwgCisgICAgNzQ5NjMsIDc0OTcyLCA3NDk4MSwgNzQ5ODgsIDc0OTk1LCA3NTAwMSwgMCwgMCwgNzUwMDksIDc1MDE2LCA3NTAyMywgCisgICAgNzUwMzEsIDc1MDM2LCA3NTA0MSwgNzUwNDYsIDc1MDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDM3MywgMzAzNzksIAotICAgIDMwMzg1LCAzMDM4OSwgMzAzOTMsIDMwMzk3LCAzMDQwMSwgMzA0MDcsIDMwNDExLCAzMDQxNywgMzA0MjEsIDMwNDI3LCAKLSAgICAzMDQzMywgMzA0NDEsIDMwNDQ3LCAzMDQ1NSwgMzA0NTksIDMwNDYzLCAzMDQ2NywgMzA0NzMsIDMwNDc2LCAzMDQ4MiwgCi0gICAgMzA0ODYsIDMwNDkyLCAzMDQ5NiwgMzA1MDAsIDMwNTA2LCAzMDUxMCwgMzA1MTYsIDMwNTIwLCAzMDUyNiwgMzA1MzQsIAotICAgIDMwNTQyLCAzMDU1MCwgMzA1NTYsIDMwNTYwLCAzMDU2NiwgMzA1NzAsIDMwNTc2LCAzMDU3OSwgMzA1ODIsIDMwNTg4LCAKLSAgICAzMDU5MiwgMzA1OTgsIDMwNjAxLCAzMDYwNCwgMzA2MDcsIDMwNjExLCAzMDYxNSwgMzA2MjEsIDMwNjI3LCAzMDYzMCwgCi0gICAgMzA2MzMsIDMwNjM3LCAzMDY0MiwgMzA2NDcsIDMwNjU0LCAzMDY1OSwgMzA2NjYsIDMwNjczLCAzMDY4MiwgMzA2ODksIAotICAgIDMwNjk4LCAzMDcwMywgMzA3MTAsIDMwNzE3LCAzMDcyNiwgMzA3MzEsIDMwNzM4LCAzMDc0MywgMzA3NDksIDMwNzU1LCAKLSAgICAzMDc2MSwgMzA3NjcsIDMwNzczLCAzMDc3OSwgMCwgMCwgMCwgMCwgMzA3ODUsIDMwNzg5LCAzMDc5MiwgMzA3OTUsIAotICAgIDMwNzk4LCAzMDgwMSwgMzA4MDQsIDMwODA3LCAzMDgxMCwgMzA4MTMsIDMwODE2LCAzMDgxOSwgMzA4MjIsIDMwODI1LCAKLSAgICAzMDgzMCwgMzA4MzUsIDMwODQwLCAzMDg0MywgMzA4NDgsIDMwODUzLCAzMDg1OCwgMzA4NjMsIDMwODcwLCAzMDg3NSwgCi0gICAgMzA4ODAsIDMwODg1LCAzMDg5MCwgMzA4OTcsIDMwOTAzLCAzMDkwOSwgMzA5MTUsIDMwOTIxLCAzMDkyNywgMzA5MzYsIAotICAgIDMwOTQ1LCAzMDk1MSwgMzA5NTcsIDMwOTY1LCAzMDk3MywgMzA5ODIsIDMwOTkxLCAzMDk5OSwgMzEwMDcsIDMxMDE2LCAKLSAgICAzMTAyNSwgMCwgMCwgMCwgMzEwMzMsIDMxMDM3LCAzMTA0MSwgMzEwNDUsIDMxMDQ4LCAzMTA1MSwgMzEwNTQsIDMxMDU4LCAKLSAgICAzMTA2MSwgMzEwNjQsIDMxMDY4LCAzMTA3MSwgMzEwNzUsIDMxMDc5LCAzMTA4MywgMzEwODcsIDMxMDkxLCAzMTA5NSwgCi0gICAgMzEwOTksIDMxMTAzLCAzMTEwNywgMzExMTAsIDMxMTEzLCAzMTExNywgMzExMjEsIDMxMTI1LCAzMTEyOCwgMzExMzEsIAotICAgIDMxMTM0LCAzMTEzOCwgMzExNDIsIDMxMTQ1LCAzMTE0OSwgMzExNTIsIDMxMTU3LCAzMTE2MiwgMzExNjcsIDMxMTcyLCAKLSAgICAzMTE3NywgMzExODIsIDMxMTg3LCAzMTE5MiwgMzExOTcsIDMxMjAxLCAzMTIwNSwgMzEyMTEsIDMxMjE4LCAzMTIyMiwgCi0gICAgMzEyMjYsIDMxMjMwLCAzMTIzMywgMzEyMzYsIDMxMjM5LCAzMTI0MiwgMzEyNDUsIDMxMjQ4LCAzMTI1MSwgMzEyNTQsIAotICAgIDMxMjU3LCAzMTI2MCwgMzEyNjQsIDMxMjY4LCAzMTI3MiwgMzEyNzcsIDMxMjgxLCAzMTI4NSwgMzEyOTEsIDMxMjk1LCAKLSAgICAzMTMwMSwgMzEzMDcsIDMxMzEyLCAzMTMxOSwgMzEzMjMsIDMxMzI5LCAzMTMzMywgMzEzMzksIDMxMzQ0LCAzMTM1MSwgCi0gICAgMzEzNTgsIDMxMzYzLCAzMTM3MCwgMzEzNzUsIDMxMzgwLCAzMTM4NCwgMzEzOTAsIDMxMzk0LCAzMTQwMCwgMzE0MDcsIAotICAgIDMxNDE0LCAzMTQxOCwgMzE0MjQsIDMxNDMwLCAzMTQzNCwgMzE0NDAsIDMxNDQ1LCAzMTQ1MCwgMzE0NTcsIDMxNDYyLCAKLSAgICAzMTQ2NywgMzE0NzIsIDMxNDc3LCAzMTQ4MSwgMzE0ODUsIDMxNDkwLCAzMTQ5NSwgMzE1MDIsIDMxNTA4LCAzMTUxMywgCi0gICAgMzE1MjAsIDMxNTI1LCAzMTUzMiwgMzE1MzcsIDMxNTQ2LCAzMTU1MiwgMzE1NTgsIDMxNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMTU2NiwgMzE1NzUsIDMxNTgyLCAzMTU4OSwgMzE1OTYsIDMxNTk5LCAzMTYwMywgMzE2MDcsIDMxNjExLCAKLSAgICAzMTYxNSwgMzE2MTksIDMxNjIzLCAzMTYyNywgMzE2MzEsIDMxNjM1LCAzMTYzOSwgMzE2NDMsIDMxNjQ3LCAzMTY1MCwgCi0gICAgMzE2NTMsIDMxNjU3LCAzMTY2MSwgMzE2NjUsIDMxNjY5LCAzMTY3MywgMzE2NzcsIDMxNjgwLCAzMTY4NCwgMzE2ODgsIAotICAgIDMxNjkyLCAzMTY5NiwgMzE2OTksIDMxNzAyLCAzMTcwNiwgMzE3MDksIDMxNzEzLCAzMTcxNywgMzE3MjAsIDMxNzI0LCAKLSAgICAzMTcyOCwgMzE3MzEsIDMxNzM2LCAzMTc0MSwgMzE3NDYsIDMxNzUwLCAzMTc1NCwgMzE3NTksIDMxNzYzLCAzMTc2OCwgCi0gICAgMzE3NzIsIDMxNzc3LCAzMTc4MSwgMzE3ODUsIDMxNzkwLCAzMTc5NSwgMzE3OTksIDMxODA0LCAzMTgwOSwgMzE4MTQsIAotICAgIDMxODE4LCAwLCAwLCAwLCAzMTgyMiwgMzE4MjcsIDMxODM2LCAzMTg0MSwgMzE4NDgsIDMxODUzLCAzMTg1NywgMzE4NjAsIAotICAgIDMxODYzLCAzMTg2NiwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDMxODgxLCAwLCAwLCAwLCAzMTg4NCwgMzE4ODgsIAotICAgIDMxODkyLCAzMTg5NiwgMzE5MDMsIDMxOTA5LCAzMTkxNSwgMzE5MjEsIDMxOTI3LCAzMTkzMywgMzE5MzksIDMxOTQ1LCAKLSAgICAzMTk1MSwgMzE5NTcsIDMxOTY0LCAzMTk3MSwgMzE5NzgsIDMxOTg1LCAzMTk5MiwgMzE5OTksIDMyMDA2LCAzMjAxMywgCi0gICAgMzIwMjAsIDMyMDI3LCAzMjAzNCwgMzIwNDEsIDMyMDQ4LCAzMjA1NSwgMzIwNjIsIDMyMDY5LCAzMjA3NiwgMzIwODMsIAotICAgIDMyMDkwLCAzMjA5NywgMzIxMDQsIDMyMTExLCAzMjExOCwgMzIxMjUsIDMyMTMyLCAzMjEzOSwgMzIxNDYsIDMyMTUzLCAKLSAgICAzMjE2MCwgMzIxNjcsIDMyMTc1LCAzMjE4MywgMzIxOTEsIDMyMTk3LCAzMjIwMywgMzIyMDksIDMyMjE3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyNiwgMzIyMzMsIDMyMjQwLCAzMjI0NywgMzIyNTQsIAotICAgIDMyMjYzLCAzMjI3MiwgMzIyODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjkwLCAzMjI5NSwgMzIzMDAsIDMyMzA1LCAKLSAgICAzMjMxMCwgMzIzMTksIDMyMzMwLCAzMjMzOSwgMzIzNTAsIDMyMzU2LCAzMjM2OSwgMzIzNzUsIDMyMzgyLCAzMjM4OSwgCi0gICAgMzIzOTQsIDMyNDAwLCAzMjQwNiwgMzI0MTcsIDMyNDI2LCAzMjQzMywgMzI0NDAsIDMyNDQ5LCAzMjQ1NiwgMzI0NjUsIAotICAgIDMyNDc1LCAzMjQ4NSwgMzI0OTIsIDMyNDk5LCAzMjUwNiwgMzI1MTYsIDMyNTIxLCAzMjUyOSwgMzI1MzUsIDMyNTQzLCAKLSAgICAzMjU1MiwgMzI1NTcsIDMyNTY0LCAzMjU3MCwgMzI1NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNTgwLCAKLSAgICAzMjU4NSwgMzI1OTEsIDMyNTk4LCAzMjYwNiwgMzI2MTIsIDMyNjE4LCAzMjYyNCwgMzI2MjksIDMyNjM2LCAzMjY0MiwgCi0gICAgMzI2NDgsIDMyNjU0LCAzMjY2MiwgMzI2NjcsIDMyNjc1LCAzMjY4MCwgMzI2ODYsIDMyNjkyLCAzMjY5OSwgMzI3MDcsIAotICAgIDMyNzE0LCAzMjcyMCwgMzI3MjcsIDMyNzM0LCAzMjc0MCwgMzI3NDcsIDMyNzU0LCAzMjc2MCwgMzI3NjUsIDMyNzcxLCAKLSAgICAzMjc3OSwgMzI3ODcsIDMyNzkzLCAzMjc5OSwgMzI4MDUsIDMyODExLCAzMjgxOSwgMzI4MjMsIDMyODI5LCAzMjgzNSwgCi0gICAgMzI4NDEsIDMyODQ3LCAzMjg1MywgMzI4NTksIDMyODYzLCAzMjg2OCwgMzI4NzMsIDMyODgwLCAzMjg4NSwgMzI4ODksIAotICAgIDMyODk1LCAzMjkwMCwgMzI5MDUsIDMyOTA5LCAzMjkxNCwgMzI5MTksIDMyOTIzLCAzMjkyNywgMzI5MzIsIDMyOTM5LCAKLSAgICAzMjk0MywgMzI5NDgsIDMyOTUzLCAzMjk1NywgMzI5NjIsIDMyOTY2LCAzMjk3MSwgMzI5NzUsIDMyOTgxLCAzMjk4NiwgCi0gICAgMzI5OTMsIDMyOTk4LCAzMzAwMywgMzMwMDcsIDMzMDEyLCAzMzAxNywgMzMwMjQsIDMzMDI5LCAzMzAzNSwgMzMwNDAsIAotICAgIDMzMDQ0LCAzMzA0OSwgMzMwNTMsIDMzMDU4LCAzMzA2NSwgMzMwNzIsIDMzMDc3LCAzMzA4MiwgMzMwODYsIDMzMDkyLCAKLSAgICAzMzA5OCwgMzMxMDMsIDMzMTA4LCAzMzExMywgMzMxMTksIDMzMTI0LCAzMzEzMCwgMzMxMzUsIDMzMTQxLCAzMzE0NywgCi0gICAgMzMxNTMsIDMzMTYwLCAzMzE2NywgMzMxNzQsIDMzMTgxLCAzMzE4OCwgMzMxOTUsIDMzMjAwLCAzMzIwOCwgMzMyMTcsIAotICAgIDMzMjI2LCAzMzIzNSwgMzMyNDQsIDMzMjUzLCAzMzI2MiwgMzMyNzQsIDMzMjgzLCAzMzI5MiwgMzMzMDEsIDMzMzA4LCAKLSAgICAzMzMxMywgMzMzMjAsIDMzMzI4LCAzMzMzNiwgMzMzNDMsIDMzMzUwLCAzMzM1NywgMzMzNjQsIDMzMzcyLCAzMzM4MSwgCi0gICAgMzMzOTAsIDMzMzk5LCAzMzQwOCwgMzM0MTcsIDMzNDI2LCAzMzQzNSwgMzM0NDQsIDMzNDUzLCAzMzQ2MiwgMzM0NzEsIAotICAgIDMzNDgwLCAzMzQ4OSwgMzM0OTgsIDMzNTA2LCAzMzUxNSwgMzM1MjYsIDMzNTM0LCAzMzU0MywgMzM1NTQsIDMzNTYzLCAKLSAgICAzMzU3MiwgMzM1ODEsIDMzNTkwLCAzMzU5OCwgMzM2MDcsIDMzNjE0LCAzMzYxOSwgMzM2MjcsIDMzNjMyLCAzMzYzOSwgCi0gICAgMzM2NDQsIDMzNjUzLCAzMzY1OSwgMzM2NjYsIDMzNjczLCAzMzY3OCwgMzM2ODMsIDMzNjkxLCAzMzY5OSwgMzM3MDgsIAotICAgIDMzNzE3LCAzMzcyMiwgMzM3MjksIDMzNzQwLCAzMzc0OCwgMzM3NTcsIDMzNzYzLCAzMzc2OSwgMzM3NzQsIDMzNzgxLCAKLSAgICAzMzc4NiwgMzM3OTUsIDMzODAwLCAzMzgwNSwgMzM4MTAsIDMzODE3LCAzMzgyNCwgMzM4MjksIDMzODM4LCAzMzg0NiwgCi0gICAgMzM4NTEsIDMzODU2LCAzMzg2MywgMzM4NzAsIDMzODc0LCAzMzg3OCwgMzM4ODEsIDMzODg0LCAzMzg4NywgMzM4OTAsIAotICAgIDMzODkzLCAzMzg5NiwgMzM5MDMsIDMzOTA2LCAzMzkwOSwgMzM5MTQsIDMzOTE4LCAzMzkyMiwgMzM5MjYsIDMzOTMwLCAKLSAgICAzMzkzNCwgMzM5NDMsIDMzOTQ5LCAzMzk1NSwgMzM5NjEsIDMzOTY5LCAzMzk3NywgMzM5ODMsIDMzOTg5LCAzMzk5NiwgCi0gICAgMzQwMDIsIDM0MDA3LCAzNDAxMywgMzQwMTksIDM0MDI1LCAzNDAzMiwgMzQwMzgsIDM0MDQ2LCAzNDA1MiwgMzQwNTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDY1LCAzNDA3MiwgCi0gICAgMzQwNzksIDM0MDg0LCAzNDA5MywgMzQxMDEsIDM0MTA5LCAzNDExNiwgMzQxMjMsIDM0MTMwLCAzNDEzNywgMzQxNDUsIAotICAgIDM0MTUzLCAzNDE2MywgMzQxNzMsIDM0MTgxLCAzNDE4OSwgMzQxOTcsIDM0MjA1LCAzNDIxNCwgMzQyMjMsIDM0MjMxLCAKLSAgICAzNDIzOSwgMzQyNDgsIDM0MjU3LCAzNDI2NywgMzQyNzcsIDM0Mjg2LCAzNDI5NSwgMzQzMDMsIDM0MzExLCAzNDMxOSwgCi0gICAgMzQzMjcsIDM0MzM3LCAzNDM0NywgMzQzNTUsIDM0MzYzLCAzNDM3MSwgMzQzNzksIDM0Mzg3LCAzNDM5NSwgMzQ0MDMsIAotICAgIDM0NDExLCAzNDQxOSwgMzQ0MjcsIDM0NDM1LCAzNDQ0MywgMzQ0NTIsIDM0NDYxLCAzNDQ3MCwgMzQ0NzksIDM0NDg5LCAKLSAgICAzNDQ5OSwgMzQ1MDYsIDM0NTEzLCAzNDUyMSwgMzQ1MjksIDM0NTM4LCAzNDU0NywgMzQ1NTUsIDM0NTYzLCAzNDU3NSwgCi0gICAgMzQ1ODcsIDM0NTk2LCAzNDYwNSwgMzQ2MTQsIDM0NjIzLCAzNDYzMCwgMzQ2MzcsIDM0NjQ1LCAzNDY1MywgMzQ2NjEsIAotICAgIDM0NjY5LCAzNDY3NywgMzQ2ODUsIDM0NjkzLCAzNDcwMSwgMzQ3MTAsIDM0NzE5LCAzNDcyOCwgMzQ3MzcsIDM0NzQ2LCAKLSAgICAzNDc1NSwgMzQ3NjUsIDM0Nzc1LCAzNDc4NSwgMzQ3OTUsIDM0ODA0LCAzNDgxMywgMzQ4MjAsIDM0ODI3LCAzNDgzNSwgCi0gICAgMzQ4NDMsIDM0ODUxLCAzNDg1OSwgMzQ4NjcsIDM0ODc1LCAzNDg4NywgMzQ4OTksIDM0OTA4LCAzNDkxNywgMzQ5MjUsIAotICAgIDM0OTMzLCAzNDk0MSwgMzQ5NDksIDM0OTYwLCAzNDk3MSwgMzQ5ODIsIDM0OTkzLCAzNTAwNSwgMzUwMTcsIDM1MDI1LCAKLSAgICAzNTAzMywgMzUwNDEsIDM1MDQ5LCAzNTA1OCwgMzUwNjcsIDM1MDc2LCAzNTA4NSwgMzUwOTMsIDM1MTAxLCAzNTEwOSwgCi0gICAgMzUxMTcsIDM1MTI1LCAzNTEzMywgMzUxNDIsIDM1MTUxLCAzNTE2MSwgMzUxNzEsIDM1MTc4LCAzNTE4NSwgMzUxOTMsIAotICAgIDM1MjAxLCAzNTIwOSwgMzUyMTcsIDM1MjI0LCAzNTIzMSwgMzUyMzksIDM1MjQ3LCAzNTI1NSwgMzUyNjMsIDM1MjcxLCAKLSAgICAzNTI3OSwgMzUyODcsIDM1Mjk1LCAzNTMwMywgMzUzMTEsIDM1MzE5LCAzNTMyNywgMzUzMzUsIDM1MzQzLCAzNTM1MSwgCi0gICAgMzUzNTksIDM1MzY4LCAzNTM3NywgMzUzODYsIDM1Mzk0LCAzNTQwMywgMzU0MTIsIDM1NDIxLCAzNTQzMCwgMzU0NDAsIAotICAgIDM1NDQ5LCAzNTQ1NiwgMzU0NjEsIDM1NDY4LCAzNTQ3NSwgMzU0ODMsIDM1NDkxLCAzNTUwMCwgMzU1MDksIDM1NTE5LCAKLSAgICAzNTUyOSwgMzU1NDAsIDM1NTUxLCAzNTU2MCwgMzU1NjksIDM1NTc5LCAzNTU4OSwgMzU1OTgsIDM1NjA3LCAzNTYxNywgCi0gICAgMzU2MjcsIDM1NjM4LCAzNTY0OSwgMzU2NTgsIDM1NjY3LCAzNTY3NywgMzU2ODcsIDM1Njk0LCAzNTcwMSwgMzU3MDksIAotICAgIDM1NzE3LCAzNTcyMywgMzU3MjksIDM1NzM4LCAzNTc0NywgMzU3NTcsIDM1NzY3LCAzNTc3OCwgMzU3ODksIDM1Nzk4LCAKLSAgICAzNTgwNywgMzU4MTcsIDM1ODI3LCAzNTgzNiwgMzU4NDUsIDM1ODUzLCAzNTg2MSwgMzU4NjgsIDM1ODc1LCAzNTg4MywgCi0gICAgMzU4OTEsIDM1OTAwLCAzNTkwOSwgMzU5MTksIDM1OTI5LCAzNTk0MCwgMzU5NTEsIDM1OTYwLCAzNTk2OSwgMzU5NzksIAotICAgIDM1OTg5LCAzNTk5OCwgMzYwMDcsIDM2MDE3LCAzNjAyNywgMzYwMzgsIDM2MDQ5LCAzNjA1OCwgMzYwNjcsIDM2MDc3LCAKLSAgICAzNjA4NywgMzYwOTQsIDM2MTAxLCAzNjEwOSwgMzYxMTcsIDM2MTI2LCAzNjEzNSwgMzYxNDUsIDM2MTU1LCAzNjE2NiwgCi0gICAgMzYxNzcsIDM2MTg2LCAzNjE5NSwgMzYyMDUsIDM2MjE1LCAzNjIyMywgMzYyMzEsIDM2MjM5LCAzNjI0NywgMzYyNTYsIAotICAgIDM2MjY1LCAzNjI3MiwgMzYyNzksIDM2Mjg2LCAzNjI5MywgMzYzMDAsIDM2MzA3LCAzNjMxNSwgMzYzMjMsIDM2MzMxLCAKLSAgICAzNjMzOSwgMzYzNTAsIDM2MzYxLCAzNjM3MiwgMzYzODMsIDM2Mzk0LCAzNjQwNSwgMzY0MTMsIDM2NDIxLCAzNjQzMiwgCi0gICAgMzY0NDMsIDM2NDU0LCAzNjQ2NSwgMzY0NzYsIDM2NDg3LCAzNjQ5NSwgMzY1MDMsIDM2NTE0LCAzNjUyNSwgMzY1MzYsIDAsIAotICAgIDAsIDM2NTQ3LCAzNjU1NSwgMzY1NjMsIDM2NTc0LCAzNjU4NSwgMzY1OTYsIDAsIDAsIDM2NjA3LCAzNjYxNSwgMzY2MjMsIAotICAgIDM2NjM0LCAzNjY0NSwgMzY2NTYsIDM2NjY3LCAzNjY3OCwgMzY2ODksIDM2Njk3LCAzNjcwNSwgMzY3MTYsIDM2NzI3LCAKLSAgICAzNjczOCwgMzY3NDksIDM2NzYwLCAzNjc3MSwgMzY3NzksIDM2Nzg3LCAzNjc5OCwgMzY4MDksIDM2ODIwLCAzNjgzMSwgCi0gICAgMzY4NDIsIDM2ODUzLCAzNjg2MSwgMzY4NjksIDM2ODgwLCAzNjg5MSwgMzY5MDIsIDM2OTEzLCAzNjkyNCwgMzY5MzUsIAotICAgIDM2OTQzLCAzNjk1MSwgMzY5NjIsIDM2OTczLCAzNjk4NCwgMCwgMCwgMzY5OTUsIDM3MDAzLCAzNzAxMSwgMzcwMjIsIAotICAgIDM3MDMzLCAzNzA0NCwgMCwgMCwgMzcwNTUsIDM3MDYzLCAzNzA3MSwgMzcwODIsIDM3MDkzLCAzNzEwNCwgMzcxMTUsIAotICAgIDM3MTI2LCAwLCAzNzEzNywgMCwgMzcxNDUsIDAsIDM3MTU2LCAwLCAzNzE2NywgMzcxNzgsIDM3MTg2LCAzNzE5NCwgCi0gICAgMzcyMDUsIDM3MjE2LCAzNzIyNywgMzcyMzgsIDM3MjQ5LCAzNzI2MCwgMzcyNjgsIDM3Mjc2LCAzNzI4NywgMzcyOTgsIAotICAgIDM3MzA5LCAzNzMyMCwgMzczMzEsIDM3MzQyLCAzNzM1MCwgMzczNTgsIDM3MzY2LCAzNzM3NCwgMzczODIsIDM3MzkwLCAKLSAgICAzNzM5OCwgMzc0MDYsIDM3NDE0LCAzNzQyMiwgMzc0MzAsIDM3NDM4LCAzNzQ0NiwgMCwgMCwgMzc0NTQsIDM3NDY1LCAKLSAgICAzNzQ3NiwgMzc0OTAsIDM3NTA0LCAzNzUxOCwgMzc1MzIsIDM3NTQ2LCAzNzU2MCwgMzc1NzEsIDM3NTgyLCAzNzU5NiwgCi0gICAgMzc2MTAsIDM3NjI0LCAzNzYzOCwgMzc2NTIsIDM3NjY2LCAzNzY3NywgMzc2ODgsIDM3NzAyLCAzNzcxNiwgMzc3MzAsIAotICAgIDM3NzQ0LCAzNzc1OCwgMzc3NzIsIDM3NzgzLCAzNzc5NCwgMzc4MDgsIDM3ODIyLCAzNzgzNiwgMzc4NTAsIDM3ODY0LCAKLSAgICAzNzg3OCwgMzc4ODksIDM3OTAwLCAzNzkxNCwgMzc5MjgsIDM3OTQyLCAzNzk1NiwgMzc5NzAsIDM3OTg0LCAzNzk5NSwgCi0gICAgMzgwMDYsIDM4MDIwLCAzODAzNCwgMzgwNDgsIDM4MDYyLCAzODA3NiwgMzgwOTAsIDM4MDk4LCAzODEwNiwgMzgxMTcsIAotICAgIDM4MTI1LCAwLCAzODEzNiwgMzgxNDQsIDM4MTU1LCAzODE2MywgMzgxNzEsIDM4MTc5LCAzODE4NywgMzgxOTUsIDM4MTk4LCAKLSAgICAzODIwMSwgMzgyMDQsIDM4MjA3LCAzODIxMywgMzgyMjQsIDM4MjMyLCAwLCAzODI0MywgMzgyNTEsIDM4MjYyLCAzODI3MCwgCi0gICAgMzgyNzgsIDM4Mjg2LCAzODI5NCwgMzgzMDIsIDM4MzA4LCAzODMxNCwgMzgzMjAsIDM4MzI4LCAzODMzNiwgMzgzNDcsIDAsIAotICAgIDAsIDM4MzU4LCAzODM2NiwgMzgzNzcsIDM4Mzg1LCAzODM5MywgMzg0MDEsIDAsIDM4NDA5LCAzODQxNSwgMzg0MjEsIAotICAgIDM4NDI3LCAzODQzNSwgMzg0NDMsIDM4NDU0LCAzODQ2NSwgMzg0NzMsIDM4NDgxLCAzODQ4OSwgMzg1MDAsIDM4NTA4LCAKLSAgICAzODUxNiwgMzg1MjQsIDM4NTMyLCAzODU0MCwgMzg1NDYsIDM4NTUyLCAwLCAwLCAzODU1NSwgMzg1NjYsIDM4NTc0LCAwLCAKLSAgICAzODU4NSwgMzg1OTMsIDM4NjA0LCAzODYxMiwgMzg2MjAsIDM4NjI4LCAzODYzNiwgMzg2NDQsIDM4NjQ3LCAwLCAzODY1MCwgCi0gICAgMzg2NTQsIDM4NjU4LCAzODY2MiwgMzg2NjYsIDM4NjcwLCAzODY3NCwgMzg2NzgsIDM4NjgyLCAzODY4NiwgMzg2OTAsIAotICAgIDM4Njk0LCAzODcwMCwgMzg3MDYsIDM4NzEyLCAzODcxNSwgMzg3MTgsIDM4NzIwLCAzODcyNCwgMzg3MjgsIDM4NzMyLCAKLSAgICAzODczNiwgMzg3MzgsIDM4NzQyLCAzODc0NiwgMzg3NTIsIDM4NzU4LCAzODc2NSwgMzg3NzIsIDM4Nzc3LCAzODc4MiwgCi0gICAgMzg3ODgsIDM4Nzk0LCAzODc5NiwgMzg3OTksIDM4ODAxLCAzODgwNSwgMzg4MDksIDM4ODEzLCAzODgxNiwgMzg4MjAsIAotICAgIDM4ODI0LCAzODgyOCwgMzg4MzIsIDM4ODM2LCAzODg0MiwgMzg4NDYsIDM4ODUwLCAzODg1NiwgMzg4NjEsIDM4ODY4LCAKLSAgICAzODg3MCwgMzg4NzMsIDM4ODc3LCAzODg4MSwgMzg4ODYsIDM4ODkyLCAzODg5NCwgMzg5MDMsIDM4OTEyLCAzODkxNSwgCi0gICAgMzg5MTksIDM4OTIxLCAzODkyMywgMzg5MjUsIDM4OTI4LCAzODkzNCwgMzg5MzYsIDM4OTQwLCAzODk0NCwgMzg5NTEsIAotICAgIDM4OTU4LCAzODk2MiwgMzg5NjcsIDM4OTcyLCAzODk3NywgMzg5ODIsIDM4OTg2LCAzODk5MCwgMzg5OTMsIDM4OTk3LCAKLSAgICAzOTAwMSwgMzkwMDgsIDM5MDEzLCAzOTAxNywgMzkwMjEsIDM5MDI2LCAzOTAzMCwgMzkwMzQsIDM5MDM5LCAzOTA0NCwgCi0gICAgMzkwNDgsIDM5MDUyLCAzOTA1NiwgMzkwNTgsIDM5MDYzLCAzOTA2OCwgMzkwNzIsIDM5MDc2LCAzOTA4MCwgMzkwODQsIDAsIAotICAgIDM5MDg4LCAzOTA5MiwgMzkwOTYsIDM5MTAyLCAzOTEwOCwgMzkxMTQsIDM5MTIwLCAzOTEyNywgMzkxMzQsIDM5MTM5LCAKLSAgICAzOTE0NCwgMzkxNDgsIDAsIDAsIDM5MTU0LCAzOTE1NywgMzkxNjAsIDM5MTYzLCAzOTE2NiwgMzkxNjksIDM5MTcyLCAKLSAgICAzOTE3NiwgMzkxODAsIDM5MTg1LCAzOTE5MCwgMzkxOTUsIDM5MjAyLCAzOTIwNiwgMzkyMDksIDM5MjEyLCAzOTIxNSwgCi0gICAgMzkyMTgsIDM5MjIxLCAzOTIyNCwgMzkyMjcsIDM5MjMwLCAzOTIzMywgMzkyMzcsIDM5MjQxLCAzOTI0NiwgMzkyNTEsIDAsIAotICAgIDM5MjU2LCAzOTI2MiwgMzkyNjgsIDM5Mjc0LCAzOTI4MSwgMzkyODgsIDM5Mjk1LCAzOTMwMiwgMzkzMDgsIDM5MzE0LCAKLSAgICAzOTMyMSwgMzkzMjgsIDM5MzM1LCAwLCAwLCAwLCAzOTM0MiwgMzkzNDUsIDM5MzQ4LCAzOTM1MSwgMzkzNTYsIDM5MzU5LCAKLSAgICAzOTM2MiwgMzkzNjUsIDM5MzY4LCAzOTM3MSwgMzkzNzQsIDM5Mzc4LCAzOTM4MSwgMzkzODQsIDM5Mzg3LCAzOTM5MCwgCi0gICAgMzkzOTMsIDM5Mzk4LCAzOTQwMSwgMzk0MDQsIDM5NDA3LCAzOTQxMCwgMzk0MTMsIDM5NDE4LCAzOTQyMSwgMzk0MjQsIAotICAgIDM5NDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzOTQzNCwgMzk0MzksIDM5NDQ0LCAzOTQ1MSwgMzk0NTksIDM5NDY0LCAzOTQ2OSwgMzk0NzMsIDM5NDc3LCAzOTQ4MiwgCi0gICAgMzk0ODksIDM5NDk2LCAzOTUwMCwgMzk1MDUsIDM5NTEwLCAzOTUxNSwgMzk1MjAsIDM5NTI3LCAzOTUzMiwgMzk1MzcsIAotICAgIDM5NTQyLCAzOTU1MSwgMzk1NTgsIDM5NTY1LCAzOTU2OSwgMzk1NzQsIDM5NTgwLCAzOTU4NSwgMzk1OTIsIDM5NjAxLCAKLSAgICAzOTYxMCwgMzk2MTQsIDM5NjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYyMiwgCi0gICAgMzk2MjYsIDM5NjM0LCAzOTYzOCwgMzk2NDIsIDM5NjQ3LCAzOTY1MSwgMzk2NTUsIDM5NjU5LCAzOTY2MSwgMzk2NjUsIAotICAgIDM5NjY5LCAzOTY3MywgMzk2NzgsIDM5NjgyLCAzOTY4NiwgMzk2OTQsIDM5Njk3LCAzOTcwMSwgMzk3MDQsIDM5NzA3LCAKLSAgICAzOTcxMywgMzk3MTcsIDM5NzIwLCAzOTcyNiwgMzk3MzAsIDM5NzM0LCAzOTczOCwgMzk3NDEsIDM5NzQ1LCAzOTc0OCwgCi0gICAgMzk3NTIsIDM5NzU0LCAzOTc1NywgMzk3NjAsIDM5NzY0LCAzOTc2NiwgMzk3NzAsIDM5NzczLCAzOTc3NiwgMzk3ODEsIAotICAgIDM5Nzg2LCAzOTc5MywgMzk3OTYsIDM5Nzk5LCAzOTgwMywgMzk4MDgsIDM5ODExLCAzOTgxNCwgMzk4MTcsIDM5ODIxLCAKLSAgICAzOTgyNiwgMzk4MjksIDM5ODMyLCAzOTgzNCwgMzk4MzcsIDM5ODQwLCAzOTg0MywgMzk4NDcsIDM5ODUyLCAzOTg1NSwgCi0gICAgMzk4NTksIDM5ODYzLCAzOTg2NywgMzk4NzEsIDM5ODc2LCAzOTg4MiwgMzk4ODcsIDM5ODkyLCAzOTg5OCwgMzk5MDMsIAotICAgIDM5OTA4LCAzOTkxMiwgMzk5MTYsIDM5OTIxLCAzOTkyNSwgMzk5MjksIDM5OTMyLCAzOTkzNCwgMzk5MzksIDM5OTQ1LCAKLSAgICAzOTk1MiwgMzk5NTksIDM5OTY2LCAzOTk3MywgMzk5ODAsIDM5OTg3LCAzOTk5NCwgNDAwMDEsIDQwMDA5LCA0MDAxNiwgCi0gICAgNDAwMjQsIDQwMDMxLCA0MDAzOCwgNDAwNDYsIDQwMDU0LCA0MDA1OSwgNDAwNjQsIDQwMDY5LCA0MDA3NCwgNDAwNzksIAotICAgIDQwMDg0LCA0MDA4OSwgNDAwOTQsIDQwMDk5LCA0MDEwNCwgNDAxMTAsIDQwMTE2LCA0MDEyMiwgNDAxMjgsIDQwMTM1LCAKLSAgICA0MDE0MywgNDAxNTAsIDQwMTU2LCA0MDE2MiwgNDAxNjgsIDQwMTc0LCA0MDE4MCwgNDAxODYsIDQwMTkyLCA0MDE5OCwgCi0gICAgNDAyMDQsIDQwMjExLCA0MDIxOCwgNDAyMjUsIDQwMjMyLCA0MDI0MCwgNDAyNDksIDQwMjU3LCA0MDI2OCwgNDAyNzYsIAotICAgIDQwMjg0LCA0MDI5MywgNDAzMDAsIDQwMzA5LCA0MDMxOCwgNDAzMjYsIDQwMzM1LCAwLCAwLCAwLCAwLCAwLCAwLCA0MDM0MywgCi0gICAgNDAzNDUsIDQwMzQ4LCA0MDM1MCwgNDAzNTMsIDQwMzU2LCA0MDM1OSwgNDAzNjQsIDQwMzY5LCA0MDM3NCwgNDAzNzksIAotICAgIDQwMzgzLCA0MDM4NywgNDAzOTEsIDQwMzk1LCA0MDQwMCwgNDA0MDYsIDQwNDExLCA0MDQxNywgNDA0MjIsIDQwNDI3LCAKLSAgICA0MDQzMiwgNDA0MzgsIDQwNDQzLCA0MDQ0OSwgNDA0NTUsIDQwNDU5LCA0MDQ2MywgNDA0NjgsIDQwNDczLCA0MDQ3OCwgCi0gICAgNDA0ODMsIDQwNDg4LCA0MDQ5NiwgNDA1MDQsIDQwNTEyLCA0MDUyMCwgNDA1MjcsIDQwNTM1LCA0MDU0MiwgNDA1NDksIAotICAgIDQwNTU4LCA0MDU3MCwgNDA1NzYsIDQwNTgyLCA0MDU5MCwgNDA1OTgsIDQwNjA3LCA0MDYxNiwgNDA2MjQsIDQwNjMyLCAKLSAgICA0MDY0MSwgNDA2NTAsIDQwNjU1LCA0MDY2MywgNDA2NjgsIDQwNjczLCA0MDY3OSwgNDA2ODQsIDQwNjkwLCA0MDY5NywgCi0gICAgNDA3MDQsIDQwNzA5LCA0MDcxNSwgNDA3MjAsIDQwNzIzLCA0MDcyNywgNDA3MzAsIDQwNzM0LCA0MDczOCwgNDA3NDIsIAotICAgIDQwNzQ4LCA0MDc1NCwgNDA3NjAsIDQwNzY2LCA0MDc3MCwgNDA3NzQsIDQwNzc4LCA0MDc4MiwgNDA3ODgsIDQwNzk0LCAKLSAgICA0MDc5OCwgNDA4MDMsIDQwODA3LCA0MDgxMiwgNDA4MTcsIDQwODIyLCA0MDgyNSwgNDA4MjksIDQwODMyLCA0MDgzNiwgCi0gICAgNDA4NDMsIDQwODUxLCA0MDg2MiwgNDA4NzMsIDQwODc4LCA0MDg4NywgNDA4OTQsIDQwOTAzLCA0MDkxMiwgNDA5MTYsIAotICAgIDQwOTIyLCA0MDkzMCwgNDA5MzQsIDQwOTM5LCA0MDk0NCwgNDA5NTAsIDQwOTU2LCA0MDk2MiwgNDA5NjksIDQwOTczLCAKLSAgICA0MDk3NywgNDA5ODIsIDQwOTg1LCA0MDk4NywgNDA5OTEsIDQwOTk1LCA0MTAwMywgNDEwMDcsIDQxMDA5LCA0MTAxMSwgCi0gICAgNDEwMTUsIDQxMDIzLCA0MTAyOCwgNDEwMzQsIDQxMDQ0LCA0MTA1MSwgNDEwNTYsIDQxMDYwLCA0MTA2NCwgNDEwNjgsIAotICAgIDQxMDcxLCA0MTA3NCwgNDEwNzcsIDQxMDgxLCA0MTA4NSwgNDEwODksIDQxMDkzLCA0MTA5NywgNDExMDAsIDQxMTA0LCAKLSAgICA0MTEwOCwgNDExMTEsIDQxMTEzLCA0MTExNiwgNDExMTgsIDQxMTIyLCA0MTEyNiwgNDExMjgsIDQxMTM0LCA0MTEzNywgCi0gICAgNDExNDIsIDQxMTQ2LCA0MTE1MCwgNDExNTIsIDQxMTU0LCA0MTE1NiwgNDExNTksIDQxMTYzLCA0MTE2NywgNDExNzEsIAotICAgIDQxMTc1LCA0MTE3OSwgNDExODUsIDQxMTkxLCA0MTE5MywgNDExOTUsIDQxMTk3LCA0MTE5OSwgNDEyMDIsIDQxMjA0LCAKLSAgICA0MTIwOCwgNDEyMTAsIDQxMjE0LCA0MTIxNywgNDEyMjMsIDQxMjI3LCA0MTIzMSwgNDEyMzQsIDQxMjM3LCA0MTI0MSwgCi0gICAgNDEyNDcsIDQxMjUxLCA0MTI2MSwgNDEyNzEsIDQxMjc1LCA0MTI4MSwgNDEyODcsIDQxMjkwLCA0MTI5NCwgNDEyOTcsIAotICAgIDQxMzAyLCA0MTMwNiwgNDEzMTIsIDQxMzE2LCA0MTMyOCwgNDEzMzYsIDQxMzQwLCA0MTM0NCwgNDEzNTAsIDQxMzU0LCAKLSAgICA0MTM1NywgNDEzNTksIDQxMzYyLCA0MTM2NiwgNDEzNzAsIDQxMzc3LCA0MTM4MSwgNDEzODUsIDQxMzg5LCA0MTM5MiwgCi0gICAgNDEzOTcsIDQxNDAyLCA0MTQwNywgNDE0MTIsIDQxNDE3LCA0MTQyMiwgNDE0MzAsIDQxNDM4LCA0MTQ0MiwgNDE0NDYsIAotICAgIDQxNDQ4LCA0MTQ1MywgNDE0NTcsIDQxNDYxLCA0MTQ2OSwgNDE0NzcsIDQxNDgzLCA0MTQ4OSwgNDE0OTgsIDQxNTA3LCAKLSAgICA0MTUxMiwgNDE1MTcsIDQxNTI1LCA0MTUzMywgNDE1MzUsIDQxNTM3LCA0MTU0MiwgNDE1NDcsIDQxNTUzLCA0MTU1OSwgCi0gICAgNDE1NjUsIDQxNTcxLCA0MTU3NSwgNDE1NzksIDQxNTg2LCA0MTU5MywgNDE1OTksIDQxNjA1LCA0MTYxNSwgNDE2MjUsIAotICAgIDQxNjMzLCA0MTY0MSwgNDE2NDMsIDQxNjQ3LCA0MTY1MSwgNDE2NTYsIDQxNjYxLCA0MTY2OCwgNDE2NzUsIDQxNjc4LCAKLSAgICA0MTY4MSwgNDE2ODQsIDQxNjg3LCA0MTY5MCwgNDE2OTUsIDQxNjk5LCA0MTcwNCwgNDE3MDksIDQxNzEyLCA0MTcxNSwgCi0gICAgNDE3MTgsIDQxNzIxLCA0MTcyNCwgNDE3MjgsIDQxNzMxLCA0MTczNCwgNDE3MzcsIDQxNzQwLCA0MTc0MiwgNDE3NDQsIAotICAgIDQxNzQ2LCA0MTc0OCwgNDE3NTYsIDQxNzY0LCA0MTc3MCwgNDE3NzQsIDQxNzgwLCA0MTc5MCwgNDE3OTYsIDQxODAyLCAKLSAgICA0MTgwOCwgNDE4MTYsIDQxODI0LCA0MTgzNSwgNDE4MzksIDQxODQzLCA0MTg0NSwgNDE4NTEsIDQxODUzLCA0MTg1NSwgCi0gICAgNDE4NTcsIDQxODU5LCA0MTg2NSwgNDE4NjgsIDQxODc0LCA0MTg4MCwgNDE4ODQsIDQxODg4LCA0MTg5MiwgNDE4OTUsIAotICAgIDQxODk5LCA0MTkwMywgNDE5MDUsIDQxOTE0LCA0MTkyMywgNDE5MjgsIDQxOTMzLCA0MTkzOSwgNDE5NDUsIDQxOTUxLCAKLSAgICA0MTk1NCwgNDE5NTcsIDQxOTYwLCA0MTk2MywgNDE5NjUsIDQxOTcwLCA0MTk3NSwgNDE5ODAsIDQxOTg2LCA0MTk5MiwgCi0gICAgNDIwMDAsIDQyMDA4LCA0MjAxNCwgNDIwMjAsIDQyMDI2LCA0MjAzMiwgNDIwNDEsIDQyMDUwLCA0MjA1OSwgNDIwNjgsIAotICAgIDQyMDc3LCA0MjA4NiwgNDIwOTUsIDQyMTA0LCA0MjExMywgNDIxMjIsIDQyMTMwLCA0MjE0MiwgNDIxNTIsIDQyMTY3LCAKLSAgICA0MjE3MCwgNDIxNzUsIDQyMTgxLCA0MjE4NywgNDIxOTQsIDQyMjA4LCA0MjIyMywgNDIyMjksIDQyMjM1LCA0MjI0MiwgCi0gICAgNDIyNDgsIDQyMjU2LCA0MjI2MiwgNDIyNzUsIDQyMjg5LCA0MjI5NCwgNDIzMDAsIDQyMzA3LCA0MjMxMCwgNDIzMTMsIAotICAgIDQyMzE1LCA0MjMxOCwgNDIzMjEsIDQyMzIzLCA0MjMyNSwgNDIzMjksIDQyMzMyLCA0MjMzNSwgNDIzMzgsIDQyMzQxLCAKLSAgICA0MjM0NiwgNDIzNTEsIDQyMzU2LCA0MjM2MSwgNDIzNjYsIDQyMzY5LCA0MjM3MSwgNDIzNzMsIDQyMzc1LCA0MjM3OSwgCi0gICAgNDIzODMsIDQyMzg3LCA0MjM5MywgNDIzOTgsIDQyNDAwLCA0MjQwMiwgNDI0MDcsIDQyNDEyLCA0MjQxNywgNDI0MjIsIAotICAgIDQyNDI3LCA0MjQzMiwgNDI0MzQsIDQyNDM2LCA0MjQ0NSwgNDI0NDksIDQyNDU3LCA0MjQ2NiwgNDI0NjgsIDQyNDczLCAKLSAgICA0MjQ3OCwgNDI0ODYsIDQyNDkwLCA0MjQ5MiwgNDI0OTYsIDQyNDk4LCA0MjUwMiwgNDI1MDYsIDQyNTEwLCA0MjUxMiwgCi0gICAgNDI1MTQsIDQyNTE2LCA0MjUyMywgNDI1MzIsIDQyNTQxLCA0MjU1MCwgNDI1NTksIDQyNTY4LCA0MjU3NywgNDI1ODYsIAotICAgIDQyNTk1LCA0MjYwMywgNDI2MTEsIDQyNjIwLCA0MjYyOSwgNDI2MzgsIDQyNjQ3LCA0MjY1NSwgNDI2NjMsIDQyNjcyLCAKLSAgICA0MjY4MSwgNDI2OTAsIDQyNzAwLCA0MjcwOSwgNDI3MTksIDQyNzI4LCA0MjczOCwgNDI3NDcsIDQyNzU3LCA0Mjc2NywgCi0gICAgNDI3NzYsIDQyNzg2LCA0Mjc5NSwgNDI4MDUsIDQyODE0LCA0MjgyNCwgNDI4MzMsIDQyODQyLCA0Mjg1MSwgNDI4NjAsIAotICAgIDQyODY5LCA0Mjg3OSwgNDI4ODgsIDQyODk3LCA0MjkwNiwgNDI5MTYsIDQyOTI1LCA0MjkzNCwgNDI5NDMsIDQyOTUyLCAKLSAgICA0Mjk2MiwgNDI5NzIsIDQyOTgxLCA0Mjk5MCwgNDI5OTgsIDQzMDA2LCA0MzAxMywgNDMwMjEsIDQzMDMwLCA0MzA0MSwgCi0gICAgNDMwNTAsIDQzMDU5LCA0MzA2OCwgNDMwNzUsIDQzMDgyLCA0MzA4OSwgNDMwOTgsIDQzMTA3LCA0MzExNiwgNDMxMjUsIAotICAgIDQzMTMyLCA0MzEzNywgNDMxNDYsIDQzMTUxLCA0MzE1NCwgNDMxNjIsIDQzMTY1LCA0MzE3MCwgNDMxNzUsIDQzMTc4LCAKLSAgICA0MzE4MSwgNDMxODksIDQzMTkyLCA0MzE5NywgNDMyMDAsIDQzMjA3LCA0MzIxMiwgNDMyMjAsIDQzMjIzLCA0MzIyNiwgCi0gICAgNDMyMjksIDQzMjM0LCA0MzIzOSwgNDMyNDIsIDQzMjQ1LCA0MzI1MywgNDMyNTYsIDQzMjYzLCA0MzI3MCwgNDMyNzQsIAotICAgIDQzMjc4LCA0MzI4MywgNDMyODgsIDQzMjk0LCA0MzI5OSwgNDMzMDUsIDQzMzExLCA0MzMxNiwgNDMzMjIsIDQzMzMwLCAKLSAgICA0MzMzNiwgNDMzNDQsIDQzMzUyLCA0MzM1OCwgNDMzNjYsIDQzMzc0LCA0MzM4MywgNDMzOTEsIDQzMzk3LCA0MzQwNSwgCi0gICAgNDM0MTQsIDQzNDIyLCA0MzQyNiwgNDM0MzEsIDQzNDQ0LCA0MzQ1NywgNDM0NjEsIDQzNDY1LCA0MzQ2OSwgNDM0NzMsIAotICAgIDQzNDgzLCA0MzQ4NywgNDM0OTIsIDQzNDk3LCA0MzUwMiwgNDM1MDcsIDQzNTEyLCA0MzUxNywgNDM1MjcsIDQzNTM3LCAKLSAgICA0MzU0NSwgNDM1NTUsIDQzNTY1LCA0MzU3MywgNDM1ODMsIDQzNTkzLCA0MzYwMSwgNDM2MTEsIDQzNjIxLCA0MzYyOSwgCi0gICAgNDM2MzcsIDQzNjQ3LCA0MzY1NywgNDM2NjAsIDQzNjYzLCA0MzY2NiwgNDM2NzEsIDQzNjc1LCA0MzY4MSwgNDM2ODgsIAotICAgIDQzNjk1LCA0MzcwMywgNDM3MTAsIDQzNzE0LCA0MzcxOCwgNDM3MjIsIDQzNzI2LCA0MzcyOCwgNDM3MzIsIDQzNzM2LCAKLSAgICA0Mzc0MSwgNDM3NDYsIDQzNzUzLCA0Mzc2MCwgNDM3NjMsIDQzNzcwLCA0Mzc3MiwgNDM3NzQsIDQzNzc4LCA0Mzc4MiwgCi0gICAgNDM3ODcsIDQzNzkzLCA0Mzc5OSwgNDM4MDUsIDQzODExLCA0MzgyMCwgNDM4MjksIDQzODM4LCA0Mzg0MiwgNDM4NDQsIAotICAgIDQzODQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0Mzg1NSwgNDM4NTksIDQzODY2LCA0Mzg3MywgCi0gICAgNDM4ODAsIDQzODg3LCA0Mzg5MSwgNDM4OTUsIDQzODk5LCA0MzkwMywgNDM5MDgsIDQzOTE0LCA0MzkxOSwgNDM5MjUsIAotICAgIDQzOTMxLCA0MzkzNywgNDM5NDMsIDQzOTUxLCA0Mzk1OCwgNDM5NjUsIDQzOTcyLCA0Mzk3OSwgNDM5ODQsIDQzOTkwLCAKLSAgICA0Mzk5OSwgNDQwMDMsIDQ0MDEwLCA0NDAxNCwgNDQwMTgsIDQ0MDI0LCA0NDAzMCwgNDQwMzYsIDQ0MDQyLCA0NDA0NiwgCi0gICAgNDQwNTAsIDQ0MDUzLCA0NDA1NiwgNDQwNjAsIDQ0MDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDA3NCwgNDQwNzcsIDQ0MDgxLCA0NDA4NSwgNDQwOTEsIAotICAgIDQ0MDk3LCA0NDEwMywgNDQxMTEsIDQ0MTE4LCA0NDEyMiwgNDQxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MTM1LCA0NDEzOCwgNDQxNDEsIDQ0MTQ0LCA0NDE0NywgCi0gICAgNDQxNTAsIDQ0MTUzLCA0NDE1NiwgNDQxNTksIDQ0MTYyLCA0NDE2NiwgNDQxNzAsIDQ0MTc0LCA0NDE3OCwgNDQxODIsIAotICAgIDQ0MTg2LCA0NDE5MCwgNDQxOTQsIDQ0MTk4LCA0NDIwMiwgNDQyMDYsIDQ0MjA5LCA0NDIxMiwgNDQyMTUsIDQ0MjE4LCAKLSAgICA0NDIyMSwgNDQyMjQsIDQ0MjI3LCA0NDIzMCwgNDQyMzMsIDQ0MjM3LCA0NDI0MSwgNDQyNDUsIDQ0MjQ5LCA0NDI1MywgCi0gICAgNDQyNTcsIDQ0MjYxLCA0NDI2NSwgNDQyNjksIDQ0MjczLCA0NDI3NywgNDQyODMsIDQ0Mjg5LCA0NDI5NSwgNDQzMDIsIAotICAgIDQ0MzA5LCA0NDMxNiwgNDQzMjMsIDQ0MzMwLCA0NDMzNywgNDQzNDQsIDQ0MzUxLCA0NDM1OCwgNDQzNjUsIDQ0MzcyLCAKLSAgICA0NDM3OSwgNDQzODYsIDQ0MzkzLCA0NDQwMCwgNDQ0MDcsIDQ0NDE0LCA0NDQxOSwgNDQ0MjUsIDQ0NDMxLCA0NDQzNywgCi0gICAgNDQ0NDIsIDQ0NDQ4LCA0NDQ1NCwgNDQ0NjAsIDQ0NDY1LCA0NDQ3MSwgNDQ0NzcsIDQ0NDgyLCA0NDQ4NywgNDQ0OTMsIAotICAgIDQ0NDk4LCA0NDUwNCwgNDQ1MTAsIDQ0NTE1LCA0NDUyMSwgNDQ1MjcsIDQ0NTMyLCA0NDUzOCwgNDQ1NDQsIDQ0NTUwLCAKLSAgICA0NDU1NiwgNDQ1NjIsIDQ0NTY3LCA0NDU3MywgNDQ1NzksIDQ0NTg1LCA0NDU5MCwgNDQ1OTYsIDQ0NjAyLCA0NDYwOCwgCi0gICAgNDQ2MTMsIDQ0NjE5LCA0NDYyNSwgNDQ2MzAsIDQ0NjM1LCA0NDY0MSwgNDQ2NDYsIDQ0NjUyLCA0NDY1OCwgNDQ2NjMsIAotICAgIDQ0NjY5LCA0NDY3NSwgNDQ2ODAsIDQ0Njg2LCA0NDY5MiwgNDQ2OTgsIDQ0NzA0LCA0NDcxMCwgNDQ3MTUsIDQ0NzIxLCAKLSAgICA0NDcyNywgNDQ3MzMsIDQ0NzM4LCA0NDc0NCwgNDQ3NTAsIDQ0NzU2LCA0NDc2MSwgNDQ3NjcsIDQ0NzczLCA0NDc3OCwgCi0gICAgNDQ3ODMsIDQ0Nzg5LCA0NDc5NCwgNDQ4MDAsIDQ0ODA2LCA0NDgxMSwgNDQ4MTcsIDQ0ODIzLCA0NDgyOCwgNDQ4MzQsIAotICAgIDQ0ODQwLCA0NDg0NiwgNDQ4NTIsIDQ0ODU4LCA0NDg2MiwgNDQ4NjcsIDQ0ODcyLCA0NDg3NywgNDQ4ODIsIDQ0ODg3LCAKLSAgICA0NDg5MiwgNDQ4OTcsIDQ0OTAyLCA0NDkwNywgNDQ5MTIsIDQ0OTE2LCA0NDkyMCwgNDQ5MjQsIDQ0OTI4LCA0NDkzMiwgCi0gICAgNDQ5MzYsIDQ0OTQwLCA0NDk0NCwgNDQ5NDgsIDQ0OTUzLCA0NDk1OCwgNDQ5NjMsIDQ0OTY4LCA0NDk3MywgNDQ5NzgsIAotICAgIDQ0OTg3LCA0NDk5NiwgNDUwMDUsIDQ1MDE0LCA0NTAyMywgNDUwMzIsIDQ1MDQxLCA0NTA1MCwgNDUwNTcsIDQ1MDY1LCAKLSAgICA0NTA3MywgNDUwODAsIDQ1MDg3LCA0NTA5NSwgNDUxMDMsIDQ1MTEwLCA0NTExNywgNDUxMjUsIDQ1MTMzLCA0NTE0MCwgCi0gICAgNDUxNDcsIDQ1MTU1LCA0NTE2MywgNDUxNzAsIDQ1MTc3LCA0NTE4NSwgNDUxOTQsIDQ1MjAzLCA0NTIxMSwgNDUyMjAsIAotICAgIDQ1MjI5LCA0NTIzNiwgNDUyNDMsIDQ1MjUxLCA0NTI2MCwgNDUyNjksIDQ1Mjc3LCA0NTI4NiwgNDUyOTUsIDQ1MzAyLCAKLSAgICA0NTMwOSwgNDUzMTgsIDQ1MzI3LCA0NTMzNSwgNDUzNDMsIDQ1MzUyLCA0NTM2MSwgNDUzNjgsIDQ1Mzc1LCA0NTM4NCwgCi0gICAgNDUzOTMsIDQ1NDAxLCA0NTQwOSwgNDU0MTgsIDQ1NDI3LCA0NTQzNCwgNDU0NDEsIDQ1NDUwLCA0NTQ1OSwgNDU0NjcsIAotICAgIDQ1NDc2LCA0NTQ4NSwgNDU0OTMsIDQ1NTAzLCA0NTUxMywgNDU1MjMsIDQ1NTMzLCA0NTU0MiwgNDU1NTEsIDQ1NTYwLCAKLSAgICA0NTU2OSwgNDU1NzYsIDQ1NTg0LCA0NTU5MiwgNDU2MDAsIDQ1NjA4LCA0NTYxMywgNDU2MTgsIDQ1NjI3LCA0NTYzNSwgCi0gICAgNDU2NDIsIDQ1NjUxLCA0NTY1OSwgNDU2NjYsIDQ1Njc1LCA0NTY4MywgNDU2OTAsIDQ1Njk5LCA0NTcwNywgNDU3MTQsIAotICAgIDQ1NzIzLCA0NTczMSwgNDU3MzgsIDQ1NzQ3LCA0NTc1NSwgNDU3NjIsIDQ1NzcxLCA0NTc3OSwgNDU3ODYsIDQ1Nzk1LCAKLSAgICA0NTgwMywgNDU4MTAsIDQ1ODE5LCA0NTgyNywgNDU4MzQsIDQ1ODQzLCA0NTg1MiwgNDU4NjEsIDQ1ODcwLCA0NTg4NCwgCi0gICAgNDU4OTgsIDQ1OTA1LCA0NTkxMCwgNDU5MTUsIDQ1OTIwLCA0NTkyNSwgNDU5MzAsIDQ1OTM1LCA0NTk0MCwgNDU5NDUsIAotICAgIDQ1OTUzLCA0NTk2MSwgNDU5NjksIDQ1OTc3LCA0NTk4MiwgNDU5ODksIDQ1OTk2LCA0NjAwMywgNDYwMDgsIDQ2MDE2LCAKLSAgICA0NjAyMywgNDYwMzEsIDQ2MDM1LCA0NjA0MiwgNDYwNDgsIDQ2MDU1LCA0NjA1OSwgNDYwNjUsIDQ2MDcxLCA0NjA3NywgCi0gICAgNDYwODEsIDQ2MDg0LCA0NjA4OCwgNDYwOTIsIDQ2MDk5LCA0NjEwNSwgNDYxMTEsIDQ2MTE3LCA0NjEyMywgNDYxMzcsIAotICAgIDQ2MTQ3LCA0NjE2MSwgNDYxNzUsIDQ2MTgxLCA0NjE5MSwgNDYyMDUsIDQ2MjA4LCA0NjIxMSwgNDYyMTgsIDQ2MjI2LCAKLSAgICA0NjIzMSwgNDYyMzYsIDQ2MjQ0LCA0NjI1NiwgNDYyNjgsIDQ2Mjc2LCA0NjI4MCwgNDYyODQsIDQ2Mjg3LCA0NjI5MCwgCi0gICAgNDYyOTQsIDQ2Mjk4LCA0NjMwMSwgNDYzMDQsIDQ2MzA5LCA0NjMxNCwgNDYzMjAsIDQ2MzI2LCA0NjMzMSwgNDYzMzYsIAotICAgIDQ2MzQyLCA0NjM0OCwgNDYzNTMsIDQ2MzU4LCA0NjM2MywgNDYzNjgsIDQ2Mzc0LCA0NjM4MCwgNDYzODUsIDQ2MzkwLCAKLSAgICA0NjM5NiwgNDY0MDIsIDQ2NDA3LCA0NjQxMiwgNDY0MTUsIDQ2NDE4LCA0NjQyNywgNDY0MjksIDQ2NDMxLCA0NjQzNCwgCi0gICAgNDY0MzgsIDQ2NDQ0LCA0NjQ0NiwgNDY0NDksIDQ2NDU2LCA0NjQ2MywgNDY0NzEsIDQ2NDc5LCA0NjQ4OSwgNDY1MDMsIAotICAgIDQ2NTA4LCA0NjUxMywgNDY1MTcsIDQ2NTIyLCA0NjUzMCwgNDY1MzgsIDQ2NTQ3LCA0NjU1NiwgNDY1NjUsIDQ2NTc0LCAKLSAgICA0NjU3OSwgNDY1ODQsIDQ2NTkwLCA0NjU5NiwgNDY2MDIsIDQ2NjA4LCA0NjYxMSwgNDY2MTcsIDQ2NjIzLCA0NjYzMywgCi0gICAgNDY2NDMsIDQ2NjUxLCA0NjY1OSwgNDY2NjgsIDQ2Njc3LCA0NjY4MSwgNDY2ODksIDQ2Njk3LCA0NjcwNSwgNDY3MTMsIAotICAgIDQ2NzIyLCA0NjczMSwgNDY3NDAsIDQ2NzQ5LCA0Njc1NCwgNDY3NTksIDQ2NzY0LCA0Njc2OSwgNDY3NzQsIDQ2NzgwLCAKLSAgICA0Njc4NiwgNDY3OTEsIDQ2Nzk3LCA0Njc5OSwgNDY4MDEsIDQ2ODAzLCA0NjgwNSwgNDY4MDgsIDQ2ODExLCA0NjgxMywgCi0gICAgNDY4MTUsIDQ2ODE3LCA0NjgyMSwgNDY4MjUsIDQ2ODI3LCA0NjgyOSwgNDY4MzIsIDQ2ODM1LCA0NjgzOSwgNDY4NDUsIAotICAgIDQ2ODUxLCA0Njg1MywgNDY4NjAsIDQ2ODY0LCA0Njg2OSwgNDY4NzQsIDQ2ODc2LCA0Njg4NiwgNDY4OTIsIDQ2ODk4LCAKLSAgICA0NjkwNCwgNDY5MTAsIDQ2OTE2LCA0NjkyMiwgNDY5MjcsIDQ2OTMwLCA0NjkzMywgNDY5MzYsIDQ2OTM4LCA0Njk0MCwgCi0gICAgNDY5NDQsIDQ2OTQ4LCA0Njk1MywgNDY5NTgsIDQ2OTYzLCA0Njk2NiwgNDY5NzAsIDQ2OTc1LCA0Njk3OCwgNDY5ODIsIAotICAgIDQ2OTg3LCA0Njk5MiwgNDY5OTcsIDQ3MDAyLCA0NzAwNywgNDcwMTIsIDQ3MDE3LCA0NzAyMiwgNDcwMjcsIDQ3MDMyLCAKLSAgICA0NzAzNywgNDcwNDIsIDQ3MDQ4LCA0NzA1NCwgNDcwNjAsIDQ3MDYyLCA0NzA2NSwgNDcwNjcsIDQ3MDcwLCA0NzA3MiwgCi0gICAgNDcwNzQsIDQ3MDc2LCA0NzA3OCwgNDcwODAsIDQ3MDgyLCA0NzA4NCwgNDcwODYsIDQ3MDg4LCA0NzA5MCwgNDcwOTIsIAotICAgIDQ3MDk0LCA0NzA5NiwgNDcwOTgsIDQ3MTAwLCA0NzEwMiwgNDcxMDQsIDQ3MTA5LCA0NzExNCwgNDcxMTksIDQ3MTI0LCAKLSAgICA0NzEyOSwgNDcxMzQsIDQ3MTM5LCA0NzE0NCwgNDcxNDksIDQ3MTU0LCA0NzE1OSwgNDcxNjQsIDQ3MTY5LCA0NzE3NCwgCi0gICAgNDcxNzksIDQ3MTg0LCA0NzE4OSwgNDcxOTQsIDQ3MTk5LCA0NzIwNCwgNDcyMDgsIDQ3MjEyLCA0NzIxNiwgNDcyMjIsIAotICAgIDQ3MjI4LCA0NzIzMywgNDcyMzgsIDQ3MjQzLCA0NzI0OCwgNDcyNTMsIDQ3MjU4LCA0NzI2NiwgNDcyNzQsIDQ3MjgyLCAKLSAgICA0NzI5MCwgNDcyOTgsIDQ3MzA2LCA0NzMxNCwgNDczMjIsIDQ3MzI4LCA0NzMzMywgNDczMzgsIDQ3MzQzLCA0NzM0NiwgCi0gICAgNDczNTAsIDQ3MzU0LCA0NzM1OCwgNDczNjIsIDQ3MzY2LCA0NzM3MCwgNDczNzcsIDQ3Mzg0LCA0NzM5MiwgNDc0MDAsIAotICAgIDQ3NDA1LCA0NzQxMCwgNDc0MTcsIDQ3NDI0LCA0NzQzMSwgNDc0MzgsIDQ3NDQxLCA0NzQ0NCwgNDc0NDksIDQ3NDUxLCAKLSAgICA0NzQ1NSwgNDc0NjAsIDQ3NDYyLCA0NzQ2NCwgNDc0NjYsIDQ3NDY4LCA0NzQ3MywgNDc0NzYsIDQ3NDc4LCA0NzQ4MywgCi0gICAgNDc0OTAsIDQ3NDk3LCA0NzUwMCwgNDc1MDQsIDQ3NTA5LCA0NzUxNCwgNDc1MjIsIDQ3NTI4LCA0NzUzNCwgNDc1NDYsIAotICAgIDQ3NTUzLCA0NzU2MCwgNDc1NjUsIDQ3NTcwLCA0NzU3NiwgNDc1NzksIDQ3NTgyLCA0NzU4NywgNDc1ODksIDQ3NTkzLCAKLSAgICA0NzU5NSwgNDc1OTcsIDQ3NTk5LCA0NzYwMSwgNDc2MDMsIDQ3NjA1LCA0NzYxMCwgNDc2MTIsIDQ3NjE0LCA0NzYxNiwgCi0gICAgNDc2MTgsIDQ3NjIyLCA0NzYyNCwgNDc2MjcsIDQ3NjMyLCA0NzYzNywgNDc2NDIsIDQ3NjQ3LCA0NzY1MywgNDc2NTksIAotICAgIDQ3NjYxLCA0NzY2NCwgNDc2NzEsIDQ3Njc4LCA0NzY4NSwgNDc2OTIsIDQ3Njk2LCA0NzcwMCwgNDc3MDIsIDQ3NzA0LCAKLSAgICA0NzcwOCwgNDc3MTQsIDQ3NzE5LCA0NzcyMSwgNDc3MjUsIDQ3NzM0LCA0Nzc0MiwgNDc3NTAsIDQ3NzU2LCA0Nzc2MiwgCi0gICAgNDc3NjcsIDQ3NzczLCA0Nzc3OCwgNDc3ODEsIDQ3Nzk1LCA0Nzc5OCwgNDc4MDMsIDQ3ODA4LCA0NzgxNCwgNDc4MjQsIAotICAgIDQ3ODI2LCA0NzgzMiwgNDc4MzgsIDQ3ODQyLCA0Nzg0OSwgNDc4NTMsIDQ3ODU1LCA0Nzg1NywgNDc4NjEsIDQ3ODY3LCAKLSAgICA0Nzg3MiwgNDc4NzgsIDQ3ODgwLCA0Nzg4NiwgNDc4ODgsIDQ3ODk0LCA0Nzg5NiwgNDc4OTgsIDQ3OTAzLCA0NzkwNSwgCi0gICAgNDc5MDksIDQ3OTE0LCA0NzkxNiwgNDc5MjEsIDQ3OTI2LCA0NzkzMCwgNDc5MzcsIDAsIDQ3OTQ3LCA0Nzk1MywgNDc5NTYsIAotICAgIDQ3OTYyLCA0Nzk2NSwgNDc5NzAsIDQ3OTc1LCA0Nzk3OSwgNDc5ODEsIDQ3OTgzLCA0Nzk4NywgNDc5OTEsIDQ3OTk1LCAKLSAgICA0Nzk5OSwgNDgwMDQsIDQ4MDA2LCA0ODAxMSwgNDgwMTQsIDQ4MDE3LCA0ODAyMCwgNDgwMjQsIDQ4MDI4LCA0ODAzMywgCi0gICAgNDgwMzcsIDQ4MDQyLCA0ODA0NywgNDgwNTEsIDQ4MDU2LCA0ODA2MiwgNDgwNjUsIDQ4MDcxLCA0ODA3NiwgNDgwODAsIAotICAgIDQ4MDg1LCA0ODA5MSwgNDgwOTcsIDQ4MTA0LCA0ODExMCwgNDgxMTcsIDQ4MTI0LCA0ODEyNiwgNDgxMzMsIDQ4MTM3LCAKLSAgICA0ODE0MywgNDgxNDksIDQ4MTU0LCA0ODE2MCwgNDgxNjQsIDQ4MTY5LCA0ODE3MiwgNDgxNzcsIDQ4MTgzLCA0ODE5MCwgCi0gICAgNDgxOTgsIDQ4MjA1LCA0ODIxNCwgNDgyMjQsIDQ4MjMxLCA0ODIzNywgNDgyNDEsIDQ4MjQ4LCA0ODI1MywgNDgyNjIsIAotICAgIDQ4MjY1LCA0ODI2OCwgNDgyNzcsIDQ4Mjg3LCA0ODI5NCwgNDgyOTYsIDQ4MzAyLCA0ODMwNywgNDgzMDksIDQ4MzEyLCAKLSAgICA0ODMxNiwgNDgzMjQsIDQ4MzMzLCA0ODMzNiwgNDgzNDEsIDQ4MzQ2LCA0ODM1NCwgNDgzNjIsIDQ4MzcwLCA0ODM3OCwgCi0gICAgNDgzODQsIDQ4MzkwLCA0ODM5NiwgNDg0MDQsIDQ4NDA5LCA0ODQxMiwgNDg0MTYsIDQ4NDE5LCA0ODQzMSwgNDg0NDEsIAotICAgIDQ4NDUyLCA0ODQ2MSwgNDg0NzIsIDQ4NDgyLCA0ODQ5MSwgNDg0OTcsIDQ4NTA1LCA0ODUwOSwgNDg1MTcsIDQ4NTIxLCAKLSAgICA0ODUyOSwgNDg1MzYsIDQ4NTQzLCA0ODU1MiwgNDg1NjEsIDQ4NTcxLCA0ODU4MSwgNDg1OTEsIDQ4NjAxLCA0ODYxMCwgCi0gICAgNDg2MTksIDQ4NjI5LCA0ODYzOSwgNDg2NDgsIDQ4NjU3LCA0ODY2MywgNDg2NjksIDQ4Njc1LCA0ODY4MSwgNDg2ODcsIAotICAgIDQ4NjkzLCA0ODY5OSwgNDg3MDUsIDQ4NzExLCA0ODcxOCwgNDg3MjQsIDQ4NzMwLCA0ODczNiwgNDg3NDIsIDQ4NzQ4LCAKLSAgICA0ODc1NCwgNDg3NjAsIDQ4NzY2LCA0ODc3MiwgNDg3NzksIDQ4Nzg2LCA0ODc5MywgNDg4MDAsIDQ4ODA3LCA0ODgxNCwgCi0gICAgNDg4MjEsIDQ4ODI4LCA0ODgzNSwgNDg4NDIsIDQ4ODUwLCA0ODg1NSwgNDg4NTgsIDQ4ODYyLCA0ODg2NiwgNDg4NzIsIAotICAgIDQ4ODc1LCA0ODg4MSwgNDg4ODcsIDQ4ODkyLCA0ODg5NiwgNDg5MDEsIDQ4OTA3LCA0ODkxNCwgNDg5MTcsIDQ4OTI0LCAKLSAgICA0ODkzMSwgNDg5MzUsIDQ4OTQ0LCA0ODk1MywgNDg5NTgsIDQ4OTY0LCA0ODk2OSwgNDg5NzQsIDQ4OTgxLCA0ODk4OCwgCi0gICAgNDg5OTYsIDQ5MDA0LCA0OTAxMywgNDkwMTcsIDQ5MDI2LCA0OTAzMSwgNDkwMzUsIDQ5MDQyLCA0OTA0NiwgNDkwNTMsIAotICAgIDQ5MDYxLCA0OTA2NiwgNDkwNzQsIDQ5MDc4LCA0OTA4MywgNDkwODcsIDQ5MDkyLCA0OTA5NiwgNDkxMDEsIDQ5MTA2LCAKLSAgICA0OTExNSwgNDkxMTcsIDQ5MTIwLCA0OTEyMywgNDkxMzAsIDQ5MTM3LCA0OTE0MiwgNDkxNTAsIDQ5MTU2LCA0OTE2MiwgCi0gICAgNDkxNjcsIDQ5MTcwLCA0OTE3NSwgNDkxODAsIDQ5MTg1LCA0OTE5MywgNDkxOTcsIDQ5MjA0LCA0OTIxMiwgNDkyMjAsIAotICAgIDQ5MjI1LCA0OTIzMCwgNDkyMzYsIDQ5MjQxLCA0OTI0NiwgNDkyNTIsIDQ5MjU3LCA0OTI2MCwgNDkyNjQsIDQ5MjY4LCAKLSAgICA0OTI3NSwgNDkyODQsIDQ5Mjg5LCA0OTI5OCwgNDkzMDcsIDQ5MzEzLCA0OTMxOSwgNDkzMjQsIDQ5MzI5LCA0OTMzNCwgCi0gICAgNDkzMzksIDQ5MzQ1LCA0OTM1MSwgNDkzNTksIDQ5MzY3LCA0OTM3MywgNDkzNzksIDQ5Mzg0LCA0OTM4OSwgNDkzOTYsIAotICAgIDQ5NDAzLCA0OTQwOSwgNDk0MTIsIDQ5NDE1LCA0OTQxOSwgNDk0MjMsIDQ5NDI3LCA0OTQzMiwgNDk0MzgsIDQ5NDQ0LCAKLSAgICA0OTQ1MSwgNDk0NTgsIDQ5NDYzLCA0OTQ2NywgNDk0NzEsIDQ5NDc1LCA0OTQ3OSwgNDk0ODMsIDQ5NDg3LCA0OTQ5MSwgCi0gICAgNDk0OTUsIDQ5NDk5LCA0OTUwMywgNDk1MDcsIDQ5NTExLCA0OTUxNSwgNDk1MTksIDQ5NTIzLCA0OTUyNywgNDk1MzEsIAotICAgIDQ5NTM1LCA0OTUzOSwgNDk1NDMsIDQ5NTQ3LCA0OTU1MSwgNDk1NTUsIDQ5NTU5LCA0OTU2MywgNDk1NjcsIDQ5NTcxLCAKLSAgICA0OTU3NSwgNDk1NzksIDQ5NTgzLCA0OTU4NywgNDk1OTEsIDQ5NTk1LCA0OTU5OSwgNDk2MDMsIDQ5NjA3LCA0OTYxMSwgCi0gICAgNDk2MTUsIDQ5NjE5LCA0OTYyMywgNDk2MjcsIDQ5NjMxLCA0OTYzNSwgNDk2MzksIDQ5NjQzLCA0OTY0NywgNDk2NTEsIAotICAgIDQ5NjU1LCA0OTY1OSwgNDk2NjMsIDQ5NjY3LCA0OTY3MSwgNDk2NzUsIDQ5Njc5LCA0OTY4MywgNDk2ODcsIDQ5NjkxLCAKLSAgICA0OTY5NSwgNDk2OTksIDQ5NzAzLCA0OTcwNywgNDk3MTEsIDQ5NzE1LCA0OTcxOSwgNDk3MjMsIDQ5NzI3LCA0OTczMSwgCi0gICAgNDk3MzUsIDQ5NzM5LCA0OTc0MywgNDk3NDcsIDQ5NzUxLCA0OTc1NSwgNDk3NTksIDQ5NzYzLCA0OTc2NywgNDk3NzEsIAotICAgIDQ5Nzc1LCA0OTc3OSwgNDk3ODMsIDQ5Nzg3LCA0OTc5MSwgNDk3OTUsIDQ5Nzk5LCA0OTgwMywgNDk4MDcsIDQ5ODExLCAKLSAgICA0OTgxNSwgNDk4MTksIDQ5ODIzLCA0OTgyNywgNDk4MzEsIDQ5ODM1LCA0OTgzOSwgNDk4NDMsIDQ5ODQ3LCA0OTg1MSwgCi0gICAgNDk4NTUsIDQ5ODU5LCA0OTg2MywgNDk4NjcsIDQ5ODcxLCA0OTg3NSwgNDk4NzksIDQ5ODgzLCA0OTg4NywgNDk4OTEsIAotICAgIDQ5ODk1LCA0OTg5OSwgNDk5MDMsIDQ5OTA3LCA0OTkxMSwgNDk5MTUsIDQ5OTE5LCA0OTkyMywgNDk5MjcsIDQ5OTMxLCAKLSAgICA0OTkzNSwgNDk5MzksIDQ5OTQzLCA0OTk0NywgNDk5NTEsIDQ5OTU1LCA0OTk1OSwgNDk5NjMsIDQ5OTY3LCA0OTk3MSwgCi0gICAgNDk5NzUsIDQ5OTc5LCA0OTk4MywgNDk5ODcsIDQ5OTkxLCA0OTk5NSwgNDk5OTksIDUwMDAzLCA1MDAwNywgNTAwMTEsIAotICAgIDUwMDE1LCA1MDAxOSwgNTAwMjMsIDUwMDI3LCA1MDAzMSwgNTAwMzUsIDUwMDM5LCA1MDA0MywgNTAwNDcsIDUwMDUxLCAKLSAgICA1MDA1NSwgNTAwNTksIDUwMDYzLCA1MDA2NywgNTAwNzEsIDUwMDc1LCA1MDA3OSwgNTAwODMsIDUwMDg3LCA1MDA5MSwgCi0gICAgNTAwOTUsIDUwMDk5LCA1MDEwMywgNTAxMDcsIDUwMTExLCA1MDExNSwgNTAxMTksIDUwMTIzLCA1MDEyNywgNTAxMzEsIAotICAgIDUwMTM1LCA1MDEzOSwgNTAxNDMsIDUwMTQ3LCA1MDE1MSwgNTAxNTUsIDUwMTU5LCA1MDE2MywgNTAxNjcsIDUwMTcxLCAKLSAgICA1MDE3NSwgNTAxNzksIDUwMTgzLCA1MDE4NywgNTAxOTEsIDUwMTk1LCA1MDE5OSwgNTAyMDMsIDUwMjA3LCA1MDIxMSwgCi0gICAgNTAyMTUsIDUwMjE5LCA1MDIyMywgNTAyMjcsIDUwMjMxLCA1MDIzNSwgNTAyMzksIDUwMjQzLCA1MDI0NywgNTAyNTEsIAotICAgIDUwMjU1LCA1MDI1OSwgNTAyNjMsIDUwMjY3LCA1MDI3MSwgNTAyNzUsIDUwMjc5LCA1MDI4MywgNTAyODcsIDUwMjkxLCAKLSAgICA1MDI5NSwgNTAyOTksIDUwMzAzLCA1MDMwNywgNTAzMTEsIDUwMzE1LCA1MDMxOSwgNTAzMjMsIDUwMzI3LCA1MDMzMSwgCi0gICAgNTAzMzUsIDUwMzM5LCA1MDM0MywgNTAzNDcsIDUwMzUxLCA1MDM1NSwgNTAzNTksIDUwMzYzLCA1MDM2NywgNTAzNzEsIAotICAgIDUwMzc1LCA1MDM3OSwgNTAzODMsIDUwMzg3LCA1MDM5MSwgNTAzOTUsIDUwMzk5LCA1MDQwMywgNTA0MDcsIDUwNDExLCAKLSAgICA1MDQxNSwgNTA0MTksIDUwNDIzLCA1MDQyNywgNTA0MzEsIDUwNDM1LCA1MDQzOSwgNTA0NDMsIDUwNDQ3LCA1MDQ1MSwgCi0gICAgNTA0NTUsIDUwNDU5LCA1MDQ2MywgNTA0NjcsIDUwNDcxLCA1MDQ3NSwgNTA0NzksIDUwNDgzLCA1MDQ4NywgNTA0OTQsIAotICAgIDUwNTAyLCA1MDUwOCwgNTA1MTQsIDUwNTIxLCA1MDUyOCwgNTA1MzQsIDUwNTQwLCA1MDU0NiwgNTA1NTIsIDUwNTU3LCAKLSAgICA1MDU2MiwgNTA1NjcsIDUwNTcyLCA1MDU3OCwgNTA1ODQsIDUwNTkyLCA1MDU5OSwgNTA2MDUsIDUwNjExLCA1MDYxOSwgCi0gICAgNTA2MjgsIDUwNjM1LCA1MDY0NSwgNTA2NTYsIDUwNjU5LCA1MDY2MiwgNTA2NjYsIDUwNjcwLCA1MDY3NywgNTA2ODQsIAotICAgIDUwNjk1LCA1MDcwNiwgNTA3MTYsIDUwNzI2LCA1MDczMywgNTA3NDAsIDUwNzQ3LCA1MDc1NCwgNTA3NjUsIDUwNzc2LCAKLSAgICA1MDc4NywgNTA3OTgsIDUwODA4LCA1MDgxOCwgNTA4MzAsIDUwODQyLCA1MDg1MywgNTA4NjQsIDUwODc2LCA1MDg4OCwgCi0gICAgNTA4OTcsIDUwOTA3LCA1MDkxNywgNTA5MjgsIDUwOTM5LCA1MDk0NiwgNTA5NTMsIDUwOTYwLCA1MDk2NywgNTA5NzcsIAotICAgIDUwOTg3LCA1MDk5NSwgNTEwMDMsIDUxMDEwLCA1MTAxNywgNTEwMjQsIDUxMDMxLCA1MTAzOCwgNTEwNDMsIDUxMDQ4LCAKLSAgICA1MTA1NCwgNTEwNjIsIDUxMDcyLCA1MTA4MiwgNTEwOTIsIDUxMTAyLCA1MTExMiwgNTExMjIsIDUxMTMyLCA1MTE0MiwgCi0gICAgNTExNTIsIDUxMTYyLCA1MTE3MiwgNTExODMsIDUxMTk0LCA1MTIwNCwgNTEyMTQsIDUxMjI1LCA1MTIzNiwgNTEyNDYsIAotICAgIDUxMjU2LCA1MTI2NywgNTEyNzgsIDUxMjg4LCA1MTI5OCwgNTEzMDksIDUxMzIwLCA1MTMzNiwgNTEzNTUsIDUxMzcxLCAKLSAgICA1MTM5MCwgNTE0MDYsIDUxNDIyLCA1MTQzOCwgNTE0NTQsIDUxNDY1LCA1MTQ3NywgNTE0ODgsIDUxNTAwLCA1MTUxOSwgCi0gICAgNTE1MzgsIDUxNTQ2LCA1MTU1MiwgNTE1NTksIDUxNTY2LCA1MTU3MywgNTE1ODAsIDUxNTg1LCA1MTU5MSwgNTE1OTYsIAotICAgIDUxNjAxLCA1MTYwNywgNTE2MTIsIDUxNjE3LCA1MTYyMiwgNTE2MjcsIDUxNjMyLCA1MTYzOSwgNTE2NDQsIDUxNjUxLCAKLSAgICA1MTY1NiwgNTE2NjEsIDUxNjY1LCA1MTY2OSwgNTE2NzYsIDUxNjgzLCA1MTY5MCwgNTE2OTcsIDUxNzA0LCA1MTcxMSwgCi0gICAgNTE3MjQsIDUxNzM3LCA1MTc1MCwgNTE3NjMsIDUxNzcxLCA1MTc3OSwgNTE3ODUsIDUxNzkxLCA1MTc5OCwgNTE4MDUsIAotICAgIDUxODEyLCA1MTgxOSwgNTE4MjMsIDUxODI4LCA1MTgzNiwgNTE4NDQsIDUxODUyLCA1MTg1OSwgNTE4NjMsIDUxODcxLCAKLSAgICA1MTg3OSwgNTE4ODMsIDUxODg3LCA1MTg5MiwgNTE4OTksIDUxOTA3LCA1MTkxNSwgNTE5MzQsIDUxOTUzLCA1MTk3MiwgCi0gICAgNTE5OTEsIDUyMDEwLCA1MjAyOSwgNTIwNDgsIDUyMDY3LCA1MjA3MywgNTIwODAsIDUyMDg5LCA1MjA5NywgNTIxMDUsIAotICAgIDUyMTEwLCA1MjExMywgNTIxMTYsIDUyMTIxLCA1MjEyNCwgNTIxNDMsIDUyMTUwLCA1MjE1NiwgNTIxNjIsIDUyMTY2LCAKLSAgICA1MjE2OSwgNTIxNzIsIDUyMTc1LCA1MjE4NywgNTIyMDAsIDUyMjA3LCA1MjIxNCwgNTIyMTcsIDUyMjIxLCA1MjIyNCwgCi0gICAgNTIyMjksIDUyMjM0LCA1MjIzOSwgNTIyNDUsIDUyMjU0LCA1MjI2MSwgNTIyNjgsIDUyMjc2LCA1MjI4MywgNTIyOTAsIAotICAgIDUyMjkzLCA1MjI5OSwgNTIzMDUsIDUyMzA4LCA1MjMxMSwgNTIzMTYsIDUyMzIxLCA1MjMyNywgNTIzMzMsIDUyMzM3LCAKLSAgICA1MjM0MiwgNTIzNDksIDUyMzUzLCA1MjM1OSwgNTIzNjMsIDUyMzY3LCA1MjM3NSwgNTIzODcsIDUyMzk2LCA1MjQwMCwgCi0gICAgNTI0MDIsIDUyNDExLCA1MjQyMCwgNTI0MjYsIDUyNDI5LCA1MjQzNSwgNTI0NDEsIDUyNDQ2LCA1MjQ1MSwgNTI0NTYsIAotICAgIDUyNDYxLCA1MjQ2NiwgNTI0NzEsIDUyNDczLCA1MjQ3OSwgNTI0ODQsIDUyNDkxLCA1MjQ5NSwgNTI1MDEsIDUyNTA0LCAKLSAgICA1MjUwOCwgNTI1MTUsIDUyNTIyLCA1MjUyNCwgNTI1MjYsIDUyNTMyLCA1MjUzOCwgNTI1NDQsIDUyNTUzLCA1MjU2MiwgCi0gICAgNTI1NjksIDUyNTc2LCA1MjU4MiwgNTI1ODgsIDUyNTkzLCA1MjU5OCwgNTI2MDMsIDUyNjA5LCA1MjYxNSwgNTI2MjAsIAotICAgIDUyNjI3LCA1MjYzMSwgNTI2MzUsIDUyNjQ4LCA1MjY2MSwgNTI2NzMsIDUyNjgyLCA1MjY4OCwgNTI2OTUsIDUyNzAwLCAKLSAgICA1MjcwNSwgNTI3MTAsIDUyNzE1LCA1MjcyMCwgNTI3MjIsIDUyNzI5LCA1MjczNiwgNTI3NDMsIDUyNzUwLCA1Mjc1NywgCi0gICAgNTI3NjUsIDUyNzcxLCA1Mjc3NiwgNTI3ODIsIDUyNzg4LCA1Mjc5NCwgNTI4MDEsIDUyODA3LCA1MjgxNSwgNTI4MjMsIAotICAgIDUyODMxLCA1MjgzOSwgNTI4NDYsIDUyODUyLCA1Mjg1OCwgNTI4NjcsIDUyODcxLCA1Mjg4MCwgNTI4ODksIDUyODk4LCAKLSAgICA1MjkwNiwgNTI5MTAsIDUyOTE2LCA1MjkyMywgNTI5MzAsIDUyOTM0LCA1Mjk0MCwgNTI5NDcsIDUyOTUyLCA1Mjk1NywgCi0gICAgNTI5NjMsIDUyOTY4LCA1Mjk3MywgNTI5ODAsIDUyOTg3LCA1Mjk5MiwgNTI5OTcsIDUzMDA1LCA1MzAxMywgNTMwMjMsIAotICAgIDUzMDMzLCA1MzA0MCwgNTMwNDcsIDUzMDUxLCA1MzA1NSwgNTMwNjcsIDUzMDczLCA1MzA3OSwgNTMwODQsIDUzMDg5LCAKLSAgICA1MzA5NiwgNTMxMDMsIDUzMTA5LCA1MzExNSwgNTMxMjQsIDUzMTMyLCA1MzE0MCwgNTMxNDcsIDUzMTU0LCA1MzE2MSwgCi0gICAgNTMxNjcsIDUzMTc0LCA1MzE4MCwgNTMxODcsIDUzMTk0LCA1MzIwMSwgNTMyMDgsIDUzMjE0LCA1MzIxOSwgNTMyMjgsIAotICAgIDUzMjM4LCA1MzI0NSwgNTMyNTQsIDUzMjYwLCA1MzI2NSwgNTMyNzAsIDUzMjgwLCA1MzI4NiwgNTMyOTIsIDUzMjk4LCAKLSAgICA1MzMwNiwgNTMzMTEsIDUzMzE4LCA1MzMyNSwgNTMzMzYsIDUzMzQzLCA1MzM1MCwgNTMzNTcsIDUzMzY0LCA1MzM3MSwgCi0gICAgNTMzNzgsIDUzMzg1LCA1MzM5NywgNTM0MDksIDUzNDIwLCA1MzQzMSwgNTM0NDQsIDUzNDU3LCA1MzQ2MiwgNTM0NjcsIAotICAgIDUzNDc2LCA1MzQ4NSwgNTM0OTIsIDUzNDk5LCA1MzUwOCwgNTM1MTcsIDUzNTI1LCA1MzUzMywgNTM1NDEsIDUzNTQ5LCAKLSAgICA1MzU1OSwgNTM1NjksIDUzNTgzLCA1MzU5NywgNTM2MDUsIDUzNjEzLCA1MzYyNSwgNTM2MzcsIDUzNjQ1LCA1MzY1MywgCi0gICAgNTM2NjMsIDUzNjczLCA1MzY3OCwgNTM2ODMsIDUzNjkyLCA1MzcwMSwgNTM3MDYsIDUzNzExLCA1MzcxOSwgNTM3MjUsIAotICAgIDUzNzMxLCA1MzczOSwgNTM3NDcsIDUzNzYwLCA1Mzc3MywgNTM3NzcsIDUzNzgxLCA1Mzc4OCwgNTM3OTUsIDUzODAyLCAKLSAgICA1MzgxMCwgNTM4MTgsIDUzODI3LCA1MzgzNiwgNTM4NDIsIDUzODQ4LCA1Mzg1NSwgNTM4NjIsIDUzODY5LCA1Mzg3NiwgCi0gICAgNTM4ODUsIDUzODk0LCA1Mzg5NywgNTM5MDAsIDUzOTA1LCA1MzkxMCwgNTM5MTYsIDUzOTIyLCA1MzkyOSwgNTM5MzYsIAotICAgIDUzOTQ2LCA1Mzk1NiwgNTM5NjMsIDUzOTcwLCA1Mzk3OCwgNTM5ODYsIDUzOTk0LCA1NDAwMiwgNTQwMTAsIDU0MDE4LCAKLSAgICA1NDAyNCwgNTQwMzAsIDU0MDM0LCA1NDAzOCwgNTQwNDUsIDU0MDUyLCA1NDA1NywgNTQwNjIsIDU0MDY3LCA1NDA3MiwgCi0gICAgNTQwNzgsIDU0MDkyLCA1NDA5OSwgNTQxMDYsIDU0MTEwLCA1NDExMiwgNTQxMTQsIDU0MTE5LCA1NDEyNCwgNTQxMjksIAotICAgIDU0MTM0LCA1NDE0MiwgNTQxNDksIDU0MTU2LCA1NDE2NCwgNTQxNzYsIDU0MTg0LCA1NDE5MiwgNTQyMDMsIDU0MjA3LCAKLSAgICA1NDIxMSwgNTQyMTcsIDU0MjI1LCA1NDIzOCwgNTQyNDUsIDU0MjUyLCA1NDI1OSwgNTQyNjQsIDU0MjcxLCA1NDI4MCwgCi0gICAgNTQyODgsIDU0Mjk0LCA1NDMwMCwgNTQzMDYsIDU0MzE1LCA1NDMyNCwgNTQzMzIsIDU0MzQxLCA1NDM0NiwgNTQzNDksIAotICAgIDU0MzU0LCA1NDM2MCwgNTQzNjYsIDU0MzcyLCA1NDM3OCwgNTQzODIsIDU0Mzg1LCA1NDM4OSwgNTQzOTMsIDU0Mzk5LCAKLSAgICA1NDQwNSwgNTQ0MTEsIDU0NDE3LCA1NDQyMSwgNTQ0MjUsIDU0NDMyLCA1NDQzOSwgNTQ0NDYsIDU0NDUzLCA1NDQ2MCwgCi0gICAgNTQ0NjcsIDU0NDc3LCA1NDQ4NywgNTQ0OTQsIDU0NTAxLCA1NDUwOSwgNTQ1MTcsIDU0NTIxLCA1NDUyNiwgNTQ1MzEsIAotICAgIDU0NTM3LCA1NDU0MywgNTQ1NDYsIDU0NTQ5LCA1NDU1MiwgNTQ1NTUsIDU0NTU5LCA1NDU2NCwgNTQ1NjksIDU0NTc0LCAKLSAgICA1NDU3OSwgNTQ1ODQsIDU0NTg4LCA1NDU5MiwgNTQ1OTYsIDU0NjAwLCA1NDYwNCwgNTQ2MDgsIDU0NjEyLCA1NDYxOCwgCi0gICAgNTQ2MjIsIDU0NjI4LCA1NDYzMywgNTQ2NDAsIDU0NjQ4LCA1NDY1NSwgNTQ2NjMsIDU0NjcwLCA1NDY3OCwgNTQ2ODcsIAotICAgIDU0Njk0LCA1NDcwNCwgNTQ3MTUsIDU0NzIxLCA1NDczMCwgNTQ3MzYsIDU0NzQ1LCA1NDc1NCwgNTQ3NjAsIDU0NzY2LCAKLSAgICA1NDc3MCwgNTQ3NzQsIDU0NzgzLCA1NDc5MiwgNTQ3OTksIDU0ODA2LCA1NDgxNSwgMCwgMCwgMCwgNTQ4MjQsIDU0ODI5LCAKLSAgICA1NDgzMywgNTQ4MzcsIDU0ODQyLCA1NDg0NywgNTQ4NTIsIDU0ODYwLCA1NDg2OCwgNTQ4NzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDc1MDU2LCA3NTA2MywgNzUwNzAsIDc1MDc2LCA3NTA4NCwgNzUwOTIsIDc1MTAwLCA3NTEwOCwgNzUxMTYsIAorICAgIDc1MTI0LCA3NTEzMCwgNzUxMzYsIDc1MTQzLCA3NTE0OSwgNzUxNTUsIDc1MTYxLCA3NTE2OCwgNzUxNzUsIDc1MTgyLCAKKyAgICA3NTE4OSwgNzUxOTYsIDc1MjAzLCA3NTIxMCwgNzUyMTcsIDc1MjI0LCA3NTIzMSwgNzUyMzgsIDc1MjQ1LCA3NTI1MiwgCisgICAgNzUyNTksIDc1MjY1LCA3NTI3MiwgNzUyNzksIDc1Mjg2LCA3NTI5MywgNzUzMDAsIDc1MzA3LCA3NTMxNCwgNzUzMjEsIAorICAgIDc1MzI4LCA3NTMzNSwgNzUzNDIsIDc1MzQ5LCA3NTM1NiwgNzUzNjMsIDc1MzcwLCA3NTM3NywgNzUzODQsIDc1MzkxLCAKKyAgICA3NTM5OSwgNzU0MDcsIDc1NDE1LCA3NTQyMywgMCwgMCwgMCwgMCwgNzU0MzEsIDc1NDM5LCA3NTQ0NywgNzU0NTUsIAorICAgIDc1NDYzLCA3NTQ3MSwgNzU0NzksIDc1NDg1LCA3NTQ5MSwgNzU0OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTAzLCA3NTUwNywgCisgICAgNzU1MTIsIDc1NTE3LCA3NTUyMiwgNzU1MjcsIDc1NTMyLCA3NTUzNywgNzU1NDIsIDc1NTQ3LCA3NTU1MiwgNzU1NTcsIAorICAgIDc1NTYyLCA3NTU2NiwgNzU1NzEsIDc1NTc2LCA3NTU4MCwgNzU1ODUsIDc1NTkwLCA3NTU5NSwgNzU2MDAsIDc1NjA1LCAKKyAgICA3NTYxMCwgNzU2MTUsIDc1NjE5LCA3NTYyNCwgNzU2MjksIDc1NjM0LCA3NTYzOSwgNzU2NDMsIDc1NjQ3LCA3NTY1MSwgCisgICAgNzU2NTUsIDc1NjU5LCA3NTY2MywgNzU2NjgsIDc1NjczLCA3NTY3OCwgNzU2ODMsIDc1Njg4LCA3NTY5NSwgNzU3MDEsIAorICAgIDc1NzA2LCA3NTcxMSwgNzU3MTYsIDc1NzIxLCA3NTcyNywgNzU3MzQsIDc1NzQwLCA3NTc0NywgNzU3NTQsIDc1NzYxLCAKKyAgICA3NTc2NiwgNzU3NzMsIDc1Nzc5LCA3NTc4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU3OTAsIDc1Nzk1LCA3NTgwMCwgCisgICAgNzU4MDQsIDc1ODA5LCA3NTgxMywgNzU4MTgsIDc1ODIyLCA3NTgyNywgNzU4MzIsIDc1ODM4LCA3NTg0MywgNzU4NDksIAorICAgIDc1ODUzLCA3NTg1OCwgNzU4NjMsIDc1ODY3LCA3NTg3MiwgNzU4NzcsIDc1ODgxLCA3NTg4NiwgNzU4OTEsIDc1ODk2LCAKKyAgICA3NTkwMSwgNzU5MDYsIDc1OTExLCA3NTkxNiwgNzU5MjEsIDc1OTI2LCA3NTkzMSwgNzU5MzYsIDc1OTQxLCA3NTk0NiwgCisgICAgNzU5NTEsIDc1OTU2LCA3NTk2MSwgNzU5NjYsIDc1OTcxLCA3NTk3NiwgNzU5ODAsIDc1OTg1LCA3NTk5MCwgNzU5OTUsIAorICAgIDc1OTk5LCA3NjAwMywgNzYwMDgsIDc2MDEzLCA3NjAxOCwgNzYwMjMsIDc2MDI4LCA3NjAzMywgNzYwMzcsIDc2MDQyLCAKKyAgICA3NjA0OCwgNzYwNTQsIDc2MDU5LCA3NjA2NSwgNzYwNzAsIDc2MDc2LCA3NjA4MiwgNzYwODksIDc2MDk1LCA3NjEwMiwgCisgICAgNzYxMDcsIDc2MTEzLCA3NjExOSwgNzYxMjQsIDc2MTMwLCA3NjEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzYxNDEsIDc2MTQ1LCA3NjE1MCwgNzYxNTUsIDc2MTU5LCA3NjE2MywgNzYxNjcsIDc2MTcxLCA3NjE3NSwgNzYxNzksIAorICAgIDc2MTg0LCA3NjE4OCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYxOTMsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgCisgICAgNzYyMTgsIDc2MjIyLCA3NjIyNywgNzYyMzEsIDc2MjM2LCA3NjI0MCwgNzYyNDQsIDc2MjQ4LCA3NjI1MywgNzYyNTcsIAorICAgIDc2MjYyLCA3NjI2NywgNzYyNzIsIDc2Mjc4LCA3NjI4NCwgNzYyOTEsIDc2Mjk2LCA3NjMwMSwgNzYzMDcsIDc2MzExLCAKKyAgICA3NjMxNiwgNzYzMTksIDc2MzIyLCA3NjMyNiwgMCwgMCwgNzYzMzEsIDc2MzM4LCA3NjM0NCwgNzYzNTAsIDc2MzU2LCAKKyAgICA3NjM2MiwgNzYzNjgsIDc2Mzc0LCA3NjM4MSwgNzYzODcsIDc2Mzk0LCA3NjQwMCwgNzY0MDcsIDc2NDE0LCA3NjQyMSwgCisgICAgNzY0MjgsIDc2NDM1LCA3NjQ0MiwgNzY0NDksIDc2NDU2LCA3NjQ2MywgNzY0NzAsIDc2NDc2LCA3NjQ4MywgNzY0ODksIAorICAgIDc2NDk2LCA3NjUwMywgNzY1MTAsIDc2NTE2LCA3NjUyMywgNzY1MzAsIDc2NTM3LCA3NjU0MywgNzY1NTAsIDc2NTU3LCAKKyAgICA3NjU2MywgNzY1NzAsIDc2NTc2LCA3NjU4MywgNzY1OTAsIDc2NTk2LCA3NjYwMiwgNzY2MDksIDc2NjE1LCA3NjYyMiwgCisgICAgNzY2MjksIDc2NjM4LCA3NjY0NSwgNzY2NTIsIDc2NjU2LCA3NjY2MSwgNzY2NjYsIDc2NjcxLCA3NjY3NiwgNzY2ODEsIAorICAgIDc2Njg1LCA3NjY5MCwgNzY2OTQsIDc2Njk5LCA3NjcwNCwgNzY3MDksIDc2NzE0LCA3NjcxOSwgNzY3MjQsIDc2NzI4LCAKKyAgICA3NjczMywgNzY3MzcsIDc2NzQyLCA3Njc0NywgNzY3NTIsIDc2NzU3LCA3Njc2MSwgNzY3NjYsIDc2NzcxLCA3Njc3NiwgCisgICAgNzY3ODIsIDc2Nzg3LCA3Njc5MywgNzY3OTksIDc2ODA1LCA3NjgxMSwgNzY4MTcsIDc2ODIyLCA3NjgyOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzY4MzIsIDc2ODM3LCA3Njg0MSwgNzY4NDUsIDc2ODQ5LCA3Njg1MywgNzY4NTcsIAorICAgIDc2ODYxLCA3Njg2NSwgNzY4NjksIDc2ODczLCA3Njg3NywgNzY4ODEsIDc2ODg1LCA3Njg4OSwgNzY4OTMsIDc2ODk3LCAKKyAgICA3NjkwMSwgNzY5MDUsIDc2OTA5LCA3NjkxMywgNzY5MTcsIDc2OTIxLCA3NjkyNSwgNzY5MjksIDc2OTMzLCA3NjkzNywgCisgICAgNzY5NDEsIDc2OTQ1LCA3Njk0OSwgMCwgMCwgMCwgNzY5NTMsIDc2OTU3LCA3Njk2MSwgNzY5NjUsIDc2OTY5LCA3Njk3MiwgCisgICAgNzY5NzgsIDc2OTgxLCA3Njk4NSwgNzY5ODgsIDc2OTk0LCA3NzAwMCwgNzcwMDgsIDc3MDExLCA3NzAxNSwgNzcwMTgsIAorICAgIDc3MDIxLCA3NzAyNywgNzcwMzMsIDc3MDM3LCA3NzA0MywgNzcwNDcsIDc3MDUxLCA3NzA1NywgNzcwNjEsIDc3MDY3LCAKKyAgICA3NzA3MywgNzcwNzcsIDc3MDgxLCA3NzA4NywgNzcwOTEsIDc3MDk3LCA3NzEwMywgNzcxMDcsIDc3MTEzLCA3NzExNywgCisgICAgNzcxMjMsIDc3MTI3LCA3NzEzMCwgNzcxMzYsIDc3MTQwLCA3NzE0NiwgNzcxNDksIDc3MTUyLCA3NzE1NiwgNzcxNjIsIAorICAgIDc3MTY2LCA3NzE3MCwgNzcxNzYsIDc3MTgyLCA3NzE4NiwgNzcxODksIDc3MTk1LCA3NzIwMCwgNzcyMDUsIDc3MjEwLCAKKyAgICA3NzIxNywgNzcyMjIsIDc3MjI5LCA3NzIzNCwgNzcyNDEsIDc3MjQ2LCA3NzI1MSwgNzcyNTYsIDc3MjYxLCA3NzI2NCwgCisgICAgNzcyNjgsIDc3MjcyLCA3NzI3NywgNzcyODIsIDc3Mjg3LCA3NzI5MiwgNzcyOTcsIDc3MzAyLCA3NzMwNywgNzczMTIsIAorICAgIDc3MzE5LCA3NzMyNCwgMCwgNzczMzEsIDc3MzM0LCA3NzMzOCwgNzczNDEsIDc3MzQ0LCA3NzM0NywgNzczNTAsIDc3MzUzLCAKKyAgICA3NzM1NiwgNzczNjAsIDc3MzYzLCAwLCAwLCAwLCAwLCA3NzM2NywgNzczNzQsIDc3Mzc5LCA3NzM4NSwgNzczOTEsIAorICAgIDc3Mzk3LCA3NzQwMywgNzc0MDksIDc3NDE1LCA3NzQyMiwgNzc0MjksIDc3NDM2LCA3NzQ0MywgNzc0NTAsIDc3NDU3LCAKKyAgICA3NzQ2NCwgNzc0NzEsIDc3NDc4LCA3NzQ4NSwgNzc0OTIsIDc3NDk4LCA3NzUwNCwgNzc1MTAsIDc3NTE2LCA3NzUyMiwgCisgICAgNzc1MjgsIDc3NTM1LCA3NzU0MSwgNzc1NDgsIDc3NTU1LCA3NzU2MiwgNzc1NjksIDc3NTc2LCAwLCA3NzU4MywgNzc1ODcsIAorICAgIDc3NTkxLCA3NzU5NSwgNzc1OTksIDc3NjA0LCA3NzYwOCwgNzc2MTIsIDc3NjE3LCA3NzYyMiwgNzc2MjcsIDc3NjMyLCAKKyAgICA3NzYzNywgNzc2NDIsIDc3NjQ3LCA3NzY1MiwgNzc2NTcsIDc3NjYyLCA3NzY2NywgNzc2NzIsIDc3Njc3LCA3NzY4MiwgCisgICAgNzc2ODcsIDc3NjkyLCA3NzY5NywgNzc3MDIsIDc3NzA3LCA3NzcxMSwgNzc3MTYsIDc3NzIxLCA3NzcyNiwgNzc3MzEsIAorICAgIDc3NzM2LCA3Nzc0MCwgNzc3NDUsIDc3NzQ5LCA3Nzc1NCwgNzc3NTksIDc3NzY0LCA3Nzc2OSwgNzc3NzQsIDc3Nzc4LCAKKyAgICA3Nzc4NCwgNzc3ODksIDc3Nzk1LCA3NzgwMSwgNzc4MDYsIDc3ODEyLCA3NzgxNywgNzc4MjMsIDc3ODI5LCA3NzgzNSwgCisgICAgNzc4NDAsIDc3ODQ2LCA3Nzg1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc4NTgsIDc3ODY0LCA3Nzg3MCwgCisgICAgNzc4NzYsIDc3ODgzLCA3Nzg4OSwgNzc4OTUsIDc3OTAxLCA3NzkwNywgNzc5MTMsIDc3OTE4LCA3NzkyMywgNzc5MjksIAorICAgIDc3OTM2LCAwLCAwLCA3Nzk0MywgNzc5NDgsIDc3OTUyLCA3Nzk1NiwgNzc5NjAsIDc3OTY0LCA3Nzk2OCwgNzc5NzIsIAorICAgIDc3OTc3LCA3Nzk4MSwgMCwgMCwgNzc5ODYsIDc3OTkyLCA3Nzk5OCwgNzgwMDUsIDc4MDEzLCA3ODAxOSwgNzgwMjUsIAorICAgIDc4MDMxLCA3ODAzNywgNzgwNDMsIDc4MDQ5LCA3ODA1NSwgNzgwNjEsIDc4MDY3LCA3ODA3MywgNzgwNzksIDc4MDg1LCAKKyAgICA3ODA5MSwgNzgwOTYsIDc4MTAyLCA3ODEwOCwgNzgxMTUsIDc4MTIxLCA3ODEyNywgNzgxMzMsIDc4MTQwLCA3ODE0NywgCisgICAgNzgxNTQsIDc4MTYwLCA3ODE2NSwgNzgxNzAsIDc4MTc2LCA3ODE4NCwgNzgxOTEsIDc4MTk4LCA3ODIwNiwgNzgyMTQsIAorICAgIDc4MjIxLCA3ODIyOCwgNzgyMzUsIDc4MjQyLCA3ODI0OSwgNzgyNTYsIDc4MjYzLCA3ODI3MCwgNzgyNzcsIDc4Mjg0LCAKKyAgICA3ODI5MSwgNzgyOTgsIDc4MzA1LCA3ODMxMiwgNzgzMTksIDc4MzI2LCA3ODMzMywgNzgzNDAsIDc4MzQ3LCA3ODM1NCwgCisgICAgNzgzNjAsIDc4MzY2LCA3ODM3MywgNzgzODAsIDc4Mzg3LCA3ODM5NCwgNzg0MDEsIDc4NDA4LCA3ODQxNSwgNzg0MjIsIAorICAgIDc4NDI5LCA3ODQzNiwgNzg0NDMsIDc4NDUwLCA3ODQ1NywgNzg0NjQsIDc4NDcxLCA3ODQ3OCwgNzg0ODUsIDc4NDkyLCAKKyAgICA3ODQ5OSwgNzg1MDYsIDc4NTEzLCA3ODUyMCwgNzg1MjcsIDc4NTM0LCA3ODU0MCwgNzg1NDYsIDc4NTUzLCA3ODU1OSwgCisgICAgNzg1NjQsIDc4NTcwLCA3ODU3NSwgNzg1ODAsIDc4NTg1LCA3ODU5MiwgNzg1OTgsIDc4NjA0LCA3ODYxMCwgNzg2MTYsIAorICAgIDc4NjIyLCA3ODYyOCwgNzg2MzQsIDc4NjQyLCA3ODY1MCwgNzg2NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjY2LCA3ODY3MiwgNzg2NzgsIDc4Njg0LCAKKyAgICA3ODY5MiwgNzg3MDAsIDc4NzA2LCA3ODcxMiwgNzg3MTksIDc4NzI2LCA3ODczMywgNzg3NDAsIDc4NzQ3LCA3ODc1NCwgCisgICAgNzg3NjEsIDc4NzY4LCA3ODc3NSwgNzg3ODMsIDc4NzkxLCA3ODc5OSwgNzg4MDcsIDc4ODE1LCA3ODgyMSwgNzg4MjksIAorICAgIDc4ODM1LCA3ODg0MywgNzg4NTIsIDc4ODYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODg2NiwgNzg4NzAsIAorICAgIDc4ODc0LCA3ODg3OCwgNzg4ODIsIDc4ODg2LCAwLCAwLCA3ODg5MCwgNzg4OTQsIDc4ODk4LCA3ODkwMiwgNzg5MDYsIAorICAgIDc4OTEwLCAwLCAwLCA3ODkxNCwgNzg5MTgsIDc4OTIyLCA3ODkyNiwgNzg5MzAsIDc4OTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3ODkzOCwgNzg5NDIsIDc4OTQ2LCA3ODk1MCwgNzg5NTQsIDc4OTU4LCA3ODk2MiwgMCwgNzg5NjYsIAorICAgIDc4OTcwLCA3ODk3NCwgNzg5NzgsIDc4OTgyLCA3ODk4NiwgNzg5OTAsIDAsIDc4OTk0LCA3OTAwMSwgNzkwMDcsIDc5MDEzLCAKKyAgICA3OTAxOSwgNzkwMjYsIDc5MDMzLCA3OTA0MiwgNzkwNTMsIDc5MDYzLCA3OTA3MiwgNzkwODAsIDc5MDg4LCA3OTA5NiwgCisgICAgNzkxMDIsIDc5MTEwLCA3OTExNywgNzkxMjQsIDc5MTMzLCA3OTE0NCwgNzkxNTIsIDc5MTYyLCA3OTE2OCwgNzkxNzgsIAorICAgIDc5MTg3LCA3OTE5MiwgNzkyMDAsIDc5MjA5LCA3OTIxNCwgNzkyMjMsIDc5MjMwLCA3OTI0MCwgNzkyNTIsIDc5MjU3LCAKKyAgICA3OTI2NCwgNzkyNzEsIDc5Mjc2LCA3OTI4NiwgNzkyOTYsIDc5MzA2LCA3OTMxNiwgNzkzMzEsIDc5MzQ0LCA3OTM1NSwgCisgICAgNzkzNjMsIDc5MzY4LCA3OTM3OSwgNzkzODgsIDc5Mzk1LCA3OTQwMiwgNzk0MDgsIDc5NDE0LCA3OTQxOSwgNzk0MjYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDMyLCA3OTQzNiwgNzk0NDAsIDc5NDQ0LCA3OTQ0OCwgNzk0NTIsIAorICAgIDc5NDU3LCA3OTQ2MiwgNzk0NjYsIDc5NDcxLCA3OTQ3NiwgNzk0ODEsIDc5NDg2LCA3OTQ5MSwgNzk0OTUsIDc5NTAwLCAKKyAgICA3OTUwNSwgNzk1MTAsIDc5NTE1LCA3OTUyMCwgNzk1MjUsIDc5NTMwLCA3OTUzNSwgNzk1NDAsIDc5NTQ1LCA3OTU1MCwgCisgICAgNzk1NTQsIDc5NTU5LCA3OTU2NCwgNzk1NjksIDc5NTc0LCA3OTU3OSwgNzk1ODQsIDc5NTg5LCA3OTU5NCwgNzk1OTksIAorICAgIDc5NjA0LCA3OTYwOSwgNzk2MTQsIDc5NjE5LCA3OTYyNCwgNzk2MjksIDc5NjM0LCA3OTYzOSwgNzk2NDQsIDc5NjQ5LCAKKyAgICA3OTY1MywgNzk2NTgsIDc5NjYzLCA3OTY2OCwgNzk2NzMsIDc5Njc4LCA3OTY4MywgNzk2ODgsIDc5NjkzLCA3OTY5OCwgCisgICAgNzk3MDMsIDc5NzA4LCA3OTcxMywgNzk3MTgsIDc5NzIzLCA3OTcyOCwgNzk3MzMsIDc5NzM4LCA3OTc0MywgNzk3NDgsIAorICAgIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3MywgNzk3NzgsIDc5NzgzLCA3OTc4OCwgNzk3OTMsIDc5Nzk4LCAKKyAgICA3OTgwMywgNzk4MDgsIDc5ODEzLCA3OTgxOCwgNzk4MjIsIDc5ODI5LCA3OTgzNiwgNzk4NDMsIDc5ODUwLCA3OTg1NiwgCisgICAgNzk4NjMsIDc5ODcwLCA3OTg3NywgNzk4ODQsIDc5ODkxLCA3OTg5OCwgNzk5MDUsIDc5OTEyLCA3OTkxOSwgNzk5MjYsIAorICAgIDc5OTMyLCA3OTkzOSwgNzk5NDYsIDc5OTUzLCA3OTk2MCwgNzk5NjcsIDc5OTc0LCA3OTk4MSwgNzk5ODgsIDc5OTk1LCAKKyAgICA4MDAwMiwgODAwMDksIDgwMDE4LCA4MDAyNywgODAwMzYsIDgwMDQ1LCA4MDA1NCwgODAwNjMsIDgwMDcyLCA4MDA4MSwgCisgICAgODAwODksIDgwMDk3LCA4MDEwNSwgODAxMTMsIDgwMTIxLCA4MDEyOSwgODAxMzcsIDgwMTQ1LCA4MDE1MSwgODAxNTksIDAsIAorICAgIDAsIDgwMTY3LCA4MDE3NCwgODAxODAsIDgwMTg2LCA4MDE5MiwgODAxOTgsIDgwMjA0LCA4MDIxMCwgODAyMTcsIDgwMjIzLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDg3NSwgNTQ4ODAsIDU0ODg1LCAKLSAgICA1NDg5MCwgNTQ4OTUsIDU0OTAwLCA1NDkwNSwgNTQ5MTAsIDU0OTE1LCA1NDkyMCwgNTQ5MjUsIDU0OTMxLCA1NDkzNSwgCi0gICAgNTQ5NDAsIDU0OTQ1LCA1NDk1MCwgNTQ5NTUsIDU0OTYwLCA1NDk2NSwgNTQ5NzAsIDU0OTc1LCA1NDk4MCwgNTQ5ODUsIAotICAgIDU0OTkwLCA1NDk5NSwgNTUwMDAsIDU1MDA1LCA1NTAxMCwgNTUwMTUsIDU1MDIwLCA1NTAyNSwgNTUwMzAsIDU1MDM1LCAKLSAgICA1NTA0MCwgNTUwNDUsIDU1MDUxLCA1NTA1NiwgNTUwNjIsIDU1MDcxLCA1NTA3NiwgNTUwODQsIDU1MDkxLCA1NTEwMCwgCi0gICAgNTUxMDUsIDU1MTEwLCA1NTExNSwgNTUxMjEsIDAsIDU1MTI4LCA1NTEzMywgNTUxMzgsIDU1MTQzLCA1NTE0OCwgNTUxNTMsIAotICAgIDU1MTU4LCA1NTE2MywgNTUxNjgsIDU1MTczLCA1NTE3OCwgNTUxODQsIDU1MTg4LCA1NTE5MywgNTUxOTgsIDU1MjAzLCAKLSAgICA1NTIwOCwgNTUyMTMsIDU1MjE4LCA1NTIyMywgNTUyMjgsIDU1MjMzLCA1NTIzOCwgNTUyNDMsIDU1MjQ4LCA1NTI1MywgCi0gICAgNTUyNTgsIDU1MjYzLCA1NTI2OCwgNTUyNzMsIDU1Mjc4LCA1NTI4MywgNTUyODgsIDU1MjkzLCA1NTI5OCwgNTUzMDQsIAotICAgIDU1MzA5LCA1NTMxNSwgNTUzMjQsIDU1MzI5LCA1NTMzNywgNTUzNDQsIDU1MzUzLCA1NTM1OCwgNTUzNjMsIDU1MzY4LCAKLSAgICA1NTM3NCwgMCwgNTUzODEsIDU1Mzg5LCA1NTM5NywgNTU0MDYsIDU1NDEzLCA1NTQyMSwgNTU0MjcsIDU1NDM2LCA1NTQ0NCwgCi0gICAgNTU0NTIsIDU1NDYwLCA1NTQ2OCwgNTU0NzYsIDU1NDg0LCA1NTQ4OSwgNTU0OTYsIDU1NTAyLCA1NTUwOSwgNTU1MTcsIAotICAgIDU1NTI0LCA1NTUzMSwgNTU1MzksIDU1NTQ1LCA1NTU1MSwgNTU1NTgsIDU1NTY1LCA1NTU3NSwgNTU1ODUsIDU1NTkyLCAKLSAgICA1NTU5OSwgNTU2MDQsIDU1NjE0LCA1NTYyNCwgNTU2MjksIDU1NjM0LCA1NTYzOSwgNTU2NDQsIDU1NjQ5LCA1NTY1NCwgCi0gICAgNTU2NTksIDU1NjY0LCA1NTY2OSwgNTU2NzQsIDU1Njc5LCA1NTY4NCwgNTU2ODksIDU1Njk0LCA1NTY5OSwgNTU3MDQsIAotICAgIDU1NzA5LCA1NTcxNCwgNTU3MTksIDU1NzI0LCA1NTcyOSwgNTU3MzQsIDU1NzM5LCA1NTc0NCwgNTU3NDksIDU1NzU0LCAKLSAgICA1NTc1OSwgNTU3NjQsIDU1NzY5LCA1NTc3NCwgNTU3NzgsIDU1NzgyLCA1NTc4NywgNTU3OTIsIDU1Nzk3LCA1NTgwMiwgCi0gICAgNTU4MDcsIDU1ODEyLCA1NTgxNywgNTU4MjIsIDU1ODI3LCA1NTgzMiwgNTU4MzcsIDU1ODQyLCA1NTg0NywgNTU4NTIsIAotICAgIDU1ODU3LCA1NTg2MiwgNTU4NjcsIDU1ODcyLCA1NTg3OSwgNTU4ODYsIDU1ODkzLCA1NTkwMCwgNTU5MDcsIDU1OTE0LCAKLSAgICA1NTkyMSwgNTU5MjgsIDU1OTM1LCA1NTk0MiwgNTU5NDksIDU1OTU2LCA1NTk2MywgNTU5NzAsIDU1OTc1LCA1NTk4MCwgCi0gICAgNTU5ODcsIDU1OTk0LCA1NjAwMSwgNTYwMDgsIDU2MDE1LCA1NjAyMiwgNTYwMjksIDU2MDM2LCA1NjA0MywgNTYwNTAsIAotICAgIDU2MDU3LCA1NjA2NCwgNTYwNzAsIDU2MDc2LCA1NjA4MiwgNTYwODgsIDU2MDk1LCA1NjEwMiwgNTYxMDksIDU2MTE2LCAKLSAgICA1NjEyMywgNTYxMzAsIDU2MTM3LCA1NjE0NCwgNTYxNTEsIDU2MTU4LCA1NjE2NiwgNTYxNzQsIDU2MTgyLCA1NjE5MCwgCi0gICAgNTYxOTgsIDU2MjA2LCA1NjIxNCwgNTYyMjIsIDU2MjI2LCA1NjIzMiwgNTYyMzgsIDU2MjQyLCA1NjI0OCwgNTYyNTQsIAotICAgIDU2MjYwLCA1NjI2NywgNTYyNzQsIDU2MjgxLCA1NjI4OCwgNTYyOTMsIDU2Mjk5LCA1NjMwNSwgNTYzMTIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU2MzE5LCA1NjMyNywgNTYzMzYsIDU2MzQ1LCA1NjM1MywgNTYzNTksIDU2MzY0LCA1NjM2OSwgNTYzNzQsIAotICAgIDU2Mzc5LCA1NjM4NCwgNTYzODksIDU2Mzk0LCA1NjM5OSwgNTY0MDQsIDU2NDA5LCA1NjQxNCwgNTY0MTksIDU2NDI0LCAKLSAgICA1NjQyOSwgNTY0MzQsIDU2NDM5LCA1NjQ0NCwgNTY0NDksIDU2NDU0LCA1NjQ1OSwgNTY0NjQsIDU2NDY5LCA1NjQ3NCwgCi0gICAgNTY0NzksIDU2NDg0LCA1NjQ4OSwgNTY0OTQsIDU2NDk5LCA1NjUwNCwgNTY1MDksIDU2NTE0LCA1NjUxOSwgNTY1MjQsIAotICAgIDU2NTI5LCA1NjUzNCwgNTY1MzksIDU2NTQ0LCA1NjU0OSwgNTY1NTQsIDAsIDU2NTU5LCAwLCAwLCAwLCAwLCAwLCA1NjU2NCwgCi0gICAgMCwgMCwgNTY1NjksIDU2NTczLCA1NjU3OCwgNTY1ODMsIDU2NTg4LCA1NjU5MywgNTY2MDIsIDU2NjA3LCA1NjYxMiwgCi0gICAgNTY2MTcsIDU2NjIyLCA1NjYyNywgNTY2MzIsIDU2NjM3LCA1NjY0MiwgNTY2NDksIDU2NjU0LCA1NjY1OSwgNTY2NjgsIAotICAgIDU2Njc1LCA1NjY4MCwgNTY2ODUsIDU2NjkwLCA1NjY5NywgNTY3MDIsIDU2NzA5LCA1NjcxNCwgNTY3MTksIDU2NzI2LCAKLSAgICA1NjczMywgNTY3MzgsIDU2NzQzLCA1Njc0OCwgNTY3NTUsIDU2NzYyLCA1Njc2NywgNTY3NzIsIDU2Nzc3LCA1Njc4MiwgCi0gICAgNTY3ODcsIDU2Nzk0LCA1NjgwMSwgNTY4MDYsIDU2ODExLCA1NjgxNiwgNTY4MjEsIDU2ODI2LCA1NjgzMSwgNTY4MzYsIAotICAgIDU2ODQxLCA1Njg0NiwgNTY4NTEsIDU2ODU2LCA1Njg2MywgNTY4NjgsIDU2ODczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1Njg3OCwgNTY4ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2ODkwLCA1Njg5NSwgCi0gICAgNTY4OTksIDU2OTAzLCA1NjkwNywgNTY5MTEsIDU2OTE1LCA1NjkxOSwgNTY5MjMsIDU2OTI3LCA1NjkzMSwgNTY5MzUsIAotICAgIDU2OTQxLCA1Njk0NSwgNTY5NDksIDU2OTUzLCA1Njk1NywgNTY5NjEsIDU2OTY1LCA1Njk2OSwgNTY5NzMsIDU2OTc3LCAKLSAgICA1Njk4MSwgNTY5ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OTg5LCA1Njk5MywgNTY5OTcsIDU3MDAxLCAKLSAgICA1NzAwNSwgNTcwMDksIDU3MDEzLCAwLCA1NzAxNywgNTcwMjEsIDU3MDI1LCA1NzAyOSwgNTcwMzMsIDU3MDM3LCA1NzA0MSwgCi0gICAgMCwgNTcwNDUsIDU3MDQ5LCA1NzA1MywgNTcwNTcsIDU3MDYxLCA1NzA2NSwgNTcwNjksIDAsIDU3MDczLCA1NzA3NywgCi0gICAgNTcwODEsIDU3MDg1LCA1NzA4OSwgNTcwOTMsIDU3MDk3LCAwLCA1NzEwMSwgNTcxMDUsIDU3MTA5LCA1NzExMywgNTcxMTcsIAotICAgIDU3MTIxLCA1NzEyNSwgMCwgNTcxMjksIDU3MTMzLCA1NzEzNywgNTcxNDEsIDU3MTQ1LCA1NzE0OSwgNTcxNTMsIDAsIAotICAgIDU3MTU3LCA1NzE2MSwgNTcxNjUsIDU3MTY5LCA1NzE3MywgNTcxNzcsIDU3MTgxLCAwLCA1NzE4NSwgNTcxODksIDU3MTkzLCAKLSAgICA1NzE5NywgNTcyMDEsIDU3MjA1LCA1NzIwOSwgMCwgNTcyMTMsIDU3MjE4LCA1NzIyMywgNTcyMjgsIDU3MjMzLCA1NzIzOCwgCi0gICAgNTcyNDMsIDU3MjQ3LCA1NzI1MiwgNTcyNTcsIDU3MjYyLCA1NzI2NiwgNTcyNzEsIDU3Mjc2LCA1NzI4MSwgNTcyODYsIAotICAgIDU3MjkwLCA1NzI5NSwgNTczMDAsIDU3MzA1LCA1NzMxMCwgNTczMTUsIDU3MzIwLCA1NzMyNCwgNTczMjksIDU3MzM0LCAKLSAgICA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NywgNTczNjQsIDU3MzcxLCA1NzM4MCwgNTczODcsIDU3Mzk2LCA1NzQwMCwgCi0gICAgNTc0MDQsIDU3NDEwLCA1NzQxNiwgNTc0MjIsIDU3NDMwLCA1NzQzNiwgNTc0NDAsIDU3NDQ0LCA1NzQ0OCwgNTc0NTQsIAotICAgIDU3NDYwLCA1NzQ2NCwgNTc0NjYsIDU3NDcwLCA1NzQ3NiwgNTc0NzgsIDU3NDgyLCA1NzQ4NiwgNTc0OTAsIDU3NDk2LCAKLSAgICA1NzUwMSwgNTc1MDUsIDU3NTA5LCA1NzUxNCwgNTc1MjAsIDU3NTI1LCA1NzUzMCwgNTc1MzUsIDU3NTQwLCA1NzU0NywgCi0gICAgNTc1NTQsIDU3NTU5LCA1NzU2NCwgNTc1NjksIDU3NTc0LCA1NzU3OSwgNTc1ODQsIDU3NTg4LCA1NzU5MiwgNTc1OTksIAotICAgIDU3NjA2LCA1NzYxMiwgNTc2MTYsIDU3NjIxLCA1NzYyMywgNTc2MjcsIDU3NjM1LCA1NzYzOSwgNTc2NDMsIDU3NjQ3LCAKLSAgICA1NzY1MSwgNTc2NTcsIDU3NjYzLCA1NzY2NywgNTc2NzMsIDU3Njc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDIzMCwgODAyMzQsIDgwMjM4LCA4MDI0MiwgCisgICAgODAyNDYsIDgwMjUwLCA4MDI1NCwgODAyNTgsIDgwMjYyLCA4MDI2NiwgODAyNzAsIDgwMjc0LCA4MDI3OCwgODAyODIsIAorICAgIDgwMjg2LCA4MDI5MCwgODAyOTQsIDgwMjk4LCA4MDMwMiwgODAzMDYsIDgwMzEwLCA4MDMxNCwgODAzMTgsIDAsIDAsIDAsIAorICAgIDAsIDgwMzIyLCA4MDMyNiwgODAzMzAsIDgwMzM0LCA4MDMzOCwgODAzNDIsIDgwMzQ2LCA4MDM1MCwgODAzNTQsIDgwMzU4LCAKKyAgICA4MDM2MiwgODAzNjYsIDgwMzcwLCA4MDM3NCwgODAzNzgsIDgwMzgyLCA4MDM4NiwgODAzOTAsIDgwMzk0LCA4MDM5OCwgCisgICAgODA0MDIsIDgwNDA2LCA4MDQxMCwgODA0MTQsIDgwNDE4LCA4MDQyMiwgODA0MjYsIDgwNDMwLCA4MDQzNCwgODA0MzgsIAorICAgIDgwNDQyLCA4MDQ0NiwgODA0NTAsIDgwNDU0LCA4MDQ1OCwgODA0NjIsIDgwNDY2LCA4MDQ3MCwgODA0NzQsIDgwNDc4LCAKKyAgICA4MDQ4MiwgODA0ODYsIDgwNDkwLCA4MDQ5NCwgODA0OTgsIDgwNTAyLCA4MDUwNiwgODA1MTAsIDgwNTE0LCAwLCAwLCAwLCAKKyAgICAwLCA4MDUxOCwgODA1MjIsIDgwNTI2LCA4MDUzMCwgODA1MzQsIDgwNTM4LCA4MDU0MiwgODA1NDYsIDgwNTUwLCA4MDU1NCwgCisgICAgODA1NTgsIDgwNTYyLCA4MDU2NiwgODA1NzAsIDgwNTc0LCA4MDU3OCwgODA1ODIsIDgwNTg2LCA4MDU5MCwgODA1OTQsIAorICAgIDgwNTk4LCA4MDYwMiwgODA2MDYsIDgwNjEwLCA4MDYxNCwgODA2MTgsIDgwNjIyLCA4MDYyNiwgODA2MzAsIDgwNjM0LCAKKyAgICA4MDYzOCwgODA2NDIsIDgwNjQ2LCA4MDY1MCwgODA2NTQsIDgwNjU4LCA4MDY2MiwgODA2NjYsIDgwNjcwLCA4MDY3NCwgCisgICAgODA2NzgsIDgwNjgyLCA4MDY4NiwgODA2OTAsIDgwNjk0LCA4MDY5OCwgODA3MDIsIDgwNzA2LCA4MDcxMCwgODA3MTQsIAorICAgIDgwNzE4LCA4MDcyMiwgODA3MjYsIDgwNzMwLCA4MDczNCwgODA3MzgsIDgwNzQyLCA4MDc0NiwgODA3NTAsIDgwNzU0LCAKKyAgICA4MDc1OCwgODA3NjIsIDgwNzY2LCA4MDc3MCwgODA3NzQsIDgwNzc4LCA4MDc4MiwgODA3ODYsIDgwNzkwLCA4MDc5NCwgCisgICAgODA3OTgsIDgwODAyLCA4MDgwNiwgODA4MTAsIDgwODE0LCA4MDgxOCwgODA4MjIsIDgwODI2LCA4MDgzMCwgODA4MzQsIAorICAgIDgwODM4LCA4MDg0MiwgODA4NDYsIDgwODUwLCA4MDg1NCwgODA4NTgsIDgwODYyLCA4MDg2NiwgODA4NzAsIDgwODc0LCAKKyAgICA4MDg3OCwgODA4ODIsIDgwODg2LCA4MDg5MCwgODA4OTQsIDgwODk4LCA4MDkwMiwgODA5MDYsIDgwOTEwLCA4MDkxNCwgCisgICAgODA5MTgsIDgwOTIyLCA4MDkyNiwgODA5MzAsIDgwOTM0LCA4MDkzOCwgODA5NDIsIDgwOTQ2LCA4MDk1MCwgODA5NTQsIAorICAgIDgwOTU4LCA4MDk2MiwgODA5NjYsIDgwOTcwLCA4MDk3NCwgODA5NzgsIDgwOTgyLCA4MDk4NiwgODA5OTAsIDgwOTk0LCAKKyAgICA4MDk5OCwgODEwMDIsIDgxMDA2LCA4MTAxMCwgODEwMTQsIDgxMDE4LCA4MTAyMiwgODEwMjYsIDgxMDMwLCA4MTAzNCwgCisgICAgODEwMzgsIDgxMDQyLCA4MTA0NiwgODEwNTAsIDgxMDU0LCA4MTA1OCwgODEwNjIsIDgxMDY2LCA4MTA3MCwgODEwNzQsIAorICAgIDgxMDc4LCA4MTA4MiwgODEwODYsIDgxMDkwLCA4MTA5NCwgODEwOTgsIDgxMTAyLCA4MTEwNiwgODExMTAsIDgxMTE0LCAKKyAgICA4MTExOCwgODExMjIsIDgxMTI2LCA4MTEzMCwgODExMzQsIDgxMTM4LCA4MTE0MiwgODExNDYsIDgxMTUwLCA4MTE1NCwgCisgICAgODExNTgsIDgxMTYyLCA4MTE2NiwgODExNzAsIDgxMTc0LCA4MTE3OCwgODExODIsIDgxMTg2LCA4MTE5MCwgODExOTQsIAorICAgIDgxMTk4LCA4MTIwMiwgODEyMDYsIDgxMjEwLCA4MTIxNCwgODEyMTgsIDgxMjIyLCA4MTIyNiwgODEyMzAsIDgxMjM0LCAKKyAgICA4MTIzOCwgODEyNDIsIDgxMjQ2LCA4MTI1MCwgODEyNTQsIDgxMjU4LCA4MTI2MiwgODEyNjYsIDgxMjcwLCA4MTI3NCwgCisgICAgODEyNzgsIDgxMjgyLCA4MTI4NiwgODEyOTAsIDgxMjk0LCA4MTI5OCwgODEzMDIsIDgxMzA2LCA4MTMxMCwgODEzMTQsIAorICAgIDgxMzE4LCA4MTMyMiwgODEzMjYsIDgxMzMwLCA4MTMzNCwgODEzMzgsIDgxMzQyLCA4MTM0NiwgODEzNTAsIDgxMzU0LCAKKyAgICA4MTM1OCwgODEzNjIsIDgxMzY2LCA4MTM3MCwgODEzNzQsIDgxMzc4LCA4MTM4MiwgODEzODYsIDgxMzkwLCA4MTM5NCwgCisgICAgODEzOTgsIDgxNDAyLCA4MTQwNiwgODE0MTAsIDgxNDE0LCA4MTQxOCwgODE0MjIsIDgxNDI2LCA4MTQzMCwgODE0MzQsIAorICAgIDgxNDM4LCA4MTQ0MiwgODE0NDYsIDgxNDUwLCA4MTQ1NCwgODE0NTgsIDgxNDYyLCA4MTQ2NiwgODE0NzAsIDgxNDc0LCAKKyAgICA4MTQ3OCwgODE0ODIsIDgxNDg2LCA4MTQ5MCwgODE0OTQsIDgxNDk4LCA4MTUwMiwgODE1MDYsIDgxNTEwLCA4MTUxNCwgCisgICAgODE1MTgsIDgxNTIyLCA4MTUyNiwgODE1MzAsIDgxNTM0LCA4MTUzOCwgODE1NDIsIDgxNTQ2LCA4MTU1MCwgODE1NTQsIAorICAgIDgxNTU4LCA4MTU2MiwgODE1NjYsIDgxNTcwLCA4MTU3NCwgODE1NzgsIDgxNTgyLCA4MTU4NiwgODE1OTAsIDgxNTk0LCAKKyAgICA4MTU5OCwgODE2MDIsIDgxNjA2LCA4MTYxMCwgODE2MTQsIDgxNjE4LCA4MTYyMiwgODE2MjYsIDgxNjMwLCA4MTYzNCwgCisgICAgODE2MzgsIDgxNjQyLCA4MTY0NiwgODE2NTAsIDgxNjU0LCA4MTY1OCwgODE2NjIsIDgxNjY2LCA4MTY3MCwgODE2NzQsIAorICAgIDgxNjc4LCA4MTY4MiwgODE2ODYsIDgxNjkwLCA4MTY5NCwgODE2OTgsIDgxNzAyLCA4MTcwNiwgODE3MTAsIDgxNzE0LCAKKyAgICA4MTcxOCwgODE3MjIsIDgxNzI2LCA4MTczMCwgODE3MzQsIDgxNzM4LCA4MTc0MiwgODE3NDYsIDgxNzUwLCA4MTc1NCwgCisgICAgODE3NTgsIDgxNzYyLCA4MTc2NiwgODE3NzAsIDgxNzc0LCA4MTc3OCwgODE3ODIsIDgxNzg2LCA4MTc5MCwgODE3OTQsIAorICAgIDgxNzk4LCA4MTgwMiwgODE4MDYsIDgxODEwLCA4MTgxNCwgODE4MTgsIDgxODIyLCA4MTgyNiwgODE4MzAsIDgxODM0LCAKKyAgICA4MTgzOCwgODE4NDIsIDgxODQ2LCA4MTg1MCwgODE4NTQsIDgxODU4LCA4MTg2MiwgODE4NjYsIDgxODcwLCA4MTg3NCwgCisgICAgODE4NzgsIDgxODgyLCA4MTg4NiwgODE4OTAsIDgxODk0LCA4MTg5OCwgODE5MDIsIDgxOTA2LCA4MTkxMCwgODE5MTQsIAorICAgIDgxOTE4LCA4MTkyMiwgODE5MjYsIDgxOTMwLCA4MTkzNCwgODE5MzgsIDgxOTQyLCA4MTk0NiwgODE5NTAsIDgxOTU0LCAKKyAgICA4MTk1OCwgODE5NjIsIDgxOTY2LCA4MTk3MCwgODE5NzQsIDgxOTc4LCAwLCAwLCA4MTk4MiwgODE5ODYsIDgxOTkwLCAKKyAgICA4MTk5NCwgODE5OTgsIDgyMDAyLCA4MjAwNiwgODIwMTAsIDgyMDE0LCA4MjAxOCwgODIwMjIsIDgyMDI2LCA4MjAzMCwgCisgICAgODIwMzQsIDgyMDM4LCA4MjA0MiwgODIwNDYsIDgyMDUwLCA4MjA1NCwgODIwNTgsIDgyMDYyLCA4MjA2NiwgODIwNzAsIAorICAgIDgyMDc0LCA4MjA3OCwgODIwODIsIDgyMDg2LCA4MjA5MCwgODIwOTQsIDgyMDk4LCA4MjEwMiwgODIxMDYsIDgyMTEwLCAKKyAgICA4MjExNCwgODIxMTgsIDgyMTIyLCA4MjEyNiwgODIxMzAsIDgyMTM0LCA4MjEzOCwgODIxNDIsIDgyMTQ2LCA4MjE1MCwgCisgICAgODIxNTQsIDgyMTU4LCA4MjE2MiwgODIxNjYsIDgyMTcwLCA4MjE3NCwgODIxNzgsIDgyMTgyLCA4MjE4NiwgODIxOTAsIAorICAgIDgyMTk0LCA4MjE5OCwgODIyMDIsIDgyMjA2LCA4MjIxMCwgODIyMTQsIDgyMjE4LCA4MjIyMiwgODIyMjYsIDgyMjMwLCAKKyAgICA4MjIzNCwgODIyMzgsIDgyMjQyLCA4MjI0NiwgODIyNTAsIDgyMjU0LCA4MjI1OCwgODIyNjIsIDgyMjY2LCA4MjI3MCwgCisgICAgODIyNzQsIDgyMjc4LCA4MjI4MiwgODIyODYsIDgyMjkwLCA4MjI5NCwgODIyOTgsIDgyMzAyLCA4MjMwNiwgODIzMTAsIAorICAgIDgyMzE0LCA4MjMxOCwgODIzMjIsIDgyMzI2LCA4MjMzMCwgODIzMzQsIDgyMzM4LCA4MjM0MiwgODIzNDYsIDgyMzUwLCAKKyAgICA4MjM1NCwgODIzNTgsIDgyMzYyLCA4MjM2NiwgODIzNzAsIDgyMzc0LCA4MjM3OCwgODIzODIsIDgyMzg2LCA4MjM5MCwgCisgICAgODIzOTQsIDgyMzk4LCA4MjQwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI0MDYsIAorICAgIDgyNDExLCA4MjQxNiwgODI0MjEsIDgyNDI2LCA4MjQzMSwgODI0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDgyNDQ0LCA4MjQ1MSwgODI0NTgsIDgyNDY1LCA4MjQ3MiwgMCwgMCwgMCwgMCwgMCwgODI0NzksIDgyNDg2LCAKKyAgICA4MjQ5MywgODI1MDMsIDgyNTA5LCA4MjUxNSwgODI1MjEsIDgyNTI3LCA4MjUzMywgODI1MzksIDgyNTQ2LCA4MjU1MiwgCisgICAgODI1NTgsIDgyNTY0LCA4MjU3MywgODI1ODIsIDgyNTk0LCA4MjYwNiwgODI2MTIsIDgyNjE4LCA4MjYyNCwgODI2MzEsIAorICAgIDgyNjM4LCA4MjY0NSwgODI2NTIsIDgyNjU5LCAwLCA4MjY2NiwgODI2NzMsIDgyNjgwLCA4MjY4OCwgODI2OTUsIDAsIAorICAgIDgyNzAyLCAwLCA4MjcwOSwgODI3MTYsIDAsIDgyNzIzLCA4MjczMSwgMCwgODI3MzgsIDgyNzQ1LCA4Mjc1MiwgODI3NTksIAorICAgIDgyNzY2LCA4Mjc3MywgODI3ODAsIDgyNzg3LCA4Mjc5NCwgODI4MDEsIDgyODA2LCA4MjgxMywgODI4MjAsIDgyODI2LCAKKyAgICA4MjgzMiwgODI4MzgsIDgyODQ0LCA4Mjg1MCwgODI4NTYsIDgyODYyLCA4Mjg2OCwgODI4NzQsIDgyODgwLCA4Mjg4NiwgCisgICAgODI4OTIsIDgyODk4LCA4MjkwNCwgODI5MTAsIDgyOTE2LCA4MjkyMiwgODI5MjgsIDgyOTM0LCA4Mjk0MCwgODI5NDYsIAorICAgIDgyOTUyLCA4Mjk1OCwgODI5NjQsIDgyOTcwLCA4Mjk3NiwgODI5ODIsIDgyOTg4LCA4Mjk5NCwgODMwMDAsIDgzMDA2LCAKKyAgICA4MzAxMiwgODMwMTgsIDgzMDI0LCA4MzAzMCwgODMwMzYsIDgzMDQyLCA4MzA0OCwgODMwNTQsIDgzMDYwLCA4MzA2NiwgCisgICAgODMwNzIsIDgzMDc4LCA4MzA4NCwgODMwOTAsIDgzMDk2LCA4MzEwMiwgODMxMDgsIDgzMTE0LCA4MzEyMCwgODMxMjYsIAorICAgIDgzMTMyLCA4MzEzOCwgODMxNDQsIDgzMTUwLCA4MzE1NiwgODMxNjIsIDgzMTY4LCA4MzE3NCwgODMxODAsIDgzMTg2LCAKKyAgICA4MzE5MiwgODMxOTgsIDgzMjA0LCA4MzIxMCwgODMyMTYsIDgzMjIyLCA4MzIyOCwgODMyMzQsIDgzMjQwLCA4MzI0NiwgCisgICAgODMyNTIsIDgzMjU4LCA4MzI2NCwgODMyNzAsIDgzMjc2LCA4MzI4NCwgODMyOTIsIDgzMjk4LCA4MzMwNCwgODMzMTAsIAorICAgIDgzMzE2LCA4MzMyNSwgODMzMzQsIDgzMzQyLCA4MzM1MCwgODMzNTgsIDgzMzY2LCA4MzM3NCwgODMzODIsIDgzMzkwLCAKKyAgICA4MzM5OCwgODM0MDUsIDgzNDEyLCA4MzQyMywgODM0MzQsIDgzNDM4LCA4MzQ0MiwgODM0NDcsIDgzNDUyLCA4MzQ1NywgCisgICAgODM0NjIsIDgzNDcwLCA4MzQ3OCwgODM0ODQsIDgzNDkwLCA4MzQ5NywgODM1MDQsIDgzNTExLCA4MzUxNSwgODM1MjEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNTI3LCA4MzUzMywgODM1MzksIAorICAgIDgzNTQ1LCA4MzU1MSwgODM1NTYsIDgzNTYxLCA4MzU2NywgODM1NzMsIDgzNTc5LCA4MzU4NSwgODM1OTQsIDgzNjAwLCAKKyAgICA4MzYwNiwgODM2MTQsIDgzNjIyLCA4MzYzMCwgODM2MzgsIDgzNjQzLCA4MzY0OCwgODM2NTMsIDgzNjU4LCA4MzY3MSwgCisgICAgODM2ODQsIDgzNjk1LCA4MzcwNiwgODM3MTgsIDgzNzMwLCA4Mzc0MiwgODM3NTQsIDgzNzY1LCA4Mzc3NiwgODM3ODgsIAorICAgIDgzODAwLCA4MzgxMiwgODM4MjQsIDgzODM1LCA4Mzg0NiwgODM4NTcsIDgzODc0LCA4Mzg5MSwgODM5MDgsIDgzOTE1LCAKKyAgICA4MzkyMiwgODM5MjksIDgzOTM2LCA4Mzk0NywgODM5NTgsIDgzOTY5LCA4Mzk4MiwgODM5OTMsIDg0MDAxLCA4NDAwOSwgCisgICAgODQwMTgsIDg0MDI2LCA4NDAzNiwgODQwNDQsIDg0MDUyLCA4NDA2MCwgODQwNjksIDg0MDc3LCA4NDA4NywgODQwOTUsIAorICAgIDg0MTAzLCA4NDExMSwgODQxMjEsIDg0MTI5LCA4NDEzNiwgODQxNDMsIDg0MTUwLCA4NDE1NywgODQxNjUsIDg0MTczLCAKKyAgICA4NDE4MSwgODQxODksIDg0MTk3LCA4NDIwNiwgODQyMTQsIDg0MjIyLCA4NDIzMCwgODQyMzgsIDg0MjQ2LCA4NDI1NSwgCisgICAgODQyNjMsIDg0MjcxLCA4NDI3OSwgODQyODcsIDg0Mjk1LCA4NDMwMywgODQzMTEsIDg0MzE5LCA4NDMyNywgODQzMzUsIAorICAgIDg0MzQ0LCA4NDM1MiwgODQzNjIsIDg0MzcwLCA4NDM3OCwgODQzODYsIDg0Mzk2LCA4NDQwNCwgODQ0MTIsIDg0NDIwLCAKKyAgICA4NDQyOCwgODQ0MzcsIDg0NDQ2LCA4NDQ1NCwgODQ0NjQsIDg0NDcyLCA4NDQ4MCwgODQ0ODgsIDg0NDk3LCA4NDUwNSwgCisgICAgODQ1MTUsIDg0NTIzLCA4NDUzMCwgODQ1MzcsIDg0NTQ1LCA4NDU1MiwgODQ1NjEsIDg0NTY4LCA4NDU3NiwgODQ1ODQsIAorICAgIDg0NTkzLCA4NDYwMSwgODQ2MTEsIDg0NjE5LCA4NDYyNywgODQ2MzUsIDg0NjQ1LCA4NDY1MywgODQ2NjAsIDg0NjY3LCAKKyAgICA4NDY3NSwgODQ2ODIsIDg0NjkxLCA4NDY5OCwgODQ3MDgsIDg0NzE4LCA4NDcyOSwgODQ3MzgsIDg0NzQ3LCA4NDc1NiwgCisgICAgODQ3NjUsIDg0Nzc0LCA4NDc4NCwgODQ3OTYsIDg0ODA4LCA4NDgxOSwgODQ4MzEsIDg0ODQ0LCA4NDg1NSwgODQ4NjQsIAorICAgIDg0ODczLCA4NDg4MSwgODQ4OTAsIDg0OTAwLCA4NDkwOCwgODQ5MTcsIDg0OTI2LCA4NDkzNCwgODQ5NDMsIDg0OTUzLCAKKyAgICA4NDk2MSwgODQ5NzAsIDg0OTc5LCA4NDk4NywgODQ5OTYsIDg1MDA2LCA4NTAxNCwgODUwMjQsIDg1MDMyLCA4NTA0MiwgCisgICAgODUwNTAsIDg1MDU4LCA4NTA2NywgODUwNzUsIDg1MDg1LCA4NTA5MywgODUxMDEsIDg1MTExLCA4NTExOSwgODUxMjYsIAorICAgIDg1MTMzLCA4NTE0MiwgODUxNTEsIDg1MTU5LCA4NTE2OCwgODUxNzgsIDg1MTg2LCA4NTE5NywgODUyMDUsIDg1MjEzLCAKKyAgICA4NTIyMCwgODUyMjgsIDg1MjM3LCA4NTI0NCwgODUyNTUsIDg1MjY2LCA4NTI3OCwgODUyODksIDg1MzAxLCA4NTMwOSwgCisgICAgODUzMTcsIDg1MzI2LCA4NTMzNCwgODUzNDMsIDg1MzUxLCA4NTM1OSwgODUzNjgsIDg1Mzc2LCA4NTM4NSwgODUzOTMsIAorICAgIDg1NDAwLCA4NTQwNywgODU0MTQsIDg1NDIxLCA4NTQyOSwgODU0MzcsIDg1NDQ1LCA4NTQ1MywgODU0NjIsIDg1NDcwLCAKKyAgICA4NTQ3OCwgODU0ODcsIDg1NDk1LCA4NTUwMywgODU1MTEsIDg1NTIwLCA4NTUyOCwgODU1MzYsIDg1NTQ0LCA4NTU1MiwgCisgICAgODU1NjAsIDg1NTY4LCA4NTU3NiwgODU1ODQsIDg1NTkyLCA4NTYwMSwgODU2MDksIDg1NjE3LCA4NTYyNSwgODU2MzMsIAorICAgIDg1NjQxLCA4NTY1MCwgODU2NTksIDg1NjY3LCA4NTY3NSwgODU2ODMsIDg1NjkyLCA4NTcwMCwgODU3MDksIDg1NzE2LCAKKyAgICA4NTcyMywgODU3MzEsIDg1NzM4LCA4NTc0NiwgODU3NTQsIDg1NzYzLCA4NTc3MSwgODU3ODAsIDg1Nzg4LCA4NTc5NiwgCisgICAgODU4MDYsIDg1ODEzLCA4NTgyMCwgODU4MjgsIDg1ODM1LCA4NTg0MywgODU4NTQsIDg1ODY2LCA4NTg3NCwgODU4ODMsIAorICAgIDg1ODkxLCA4NTkwMCwgODU5MDgsIDg1OTE3LCA4NTkyNSwgODU5MzQsIDg1OTQyLCA4NTk1MSwgODU5NjAsIDg1OTY4LCAKKyAgICA4NTk3NiwgODU5ODQsIDg1OTkzLCA4NjAwMCwgODYwMDgsIDg2MDE3LCA4NjAyNiwgODYwMzUsIDg2MDQ1LCA4NjA1MywgCisgICAgODYwNjMsIDg2MDcxLCA4NjA4MSwgODYwODksIDg2MDk5LCA4NjEwNywgODYxMTcsIDg2MTI1LCA4NjEzNCwgODYxNDEsIAorICAgIDg2MTUwLCA4NjE1NywgODYxNjcsIDg2MTc1LCA4NjE4NSwgODYxOTMsIDg2MjAzLCA4NjIxMSwgODYyMTksIDg2MjI3LCAKKyAgICA4NjIzNiwgODYyNDQsIDg2MjUzLCA4NjI2MiwgODYyNzEsIDg2MjgwLCA4NjI5MCwgODYyOTgsIDg2MzA4LCA4NjMxNiwgCisgICAgODYzMjYsIDg2MzM0LCA4NjM0NCwgODYzNTIsIDg2MzYyLCA4NjM3MCwgODYzNzksIDg2Mzg2LCA4NjM5NSwgODY0MDIsIAorICAgIDg2NDEyLCA4NjQyMCwgODY0MzAsIDg2NDM4LCA4NjQ0OCwgODY0NTYsIDg2NDY0LCA4NjQ3MiwgODY0ODEsIDg2NDg5LCAKKyAgICA4NjQ5OCwgODY1MDcsIDg2NTE2LCA4NjUyNSwgODY1MzMsIDg2NTQxLCA4NjU1MCwgODY1NTgsIDg2NTY3LCA4NjU3NiwgCisgICAgODY1ODQsIDg2NTkyLCA4NjYwMCwgODY2MDksIDg2NjE3LCA4NjYyNSwgODY2MzQsIDg2NjQyLCA4NjY1MCwgODY2NTgsIAorICAgIDg2NjY2LCA4NjY3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODY2NzYsIAorICAgIDg2Njg2LCA4NjY5NiwgODY3MDYsIDg2NzE2LCA4NjcyNywgODY3MzcsIDg2NzQ3LCA4Njc1OCwgODY3NjcsIDg2Nzc2LCAKKyAgICA4Njc4NSwgODY3OTYsIDg2ODA2LCA4NjgxNiwgODY4MjgsIDg2ODM4LCA4Njg0OCwgODY4NTgsIDg2ODY4LCA4Njg3OCwgCisgICAgODY4ODgsIDg2ODk4LCA4NjkwOCwgODY5MTgsIDg2OTI4LCA4NjkzOCwgODY5NDksIDg2OTYwLCA4Njk3MCwgODY5ODAsIAorICAgIDg2OTkyLCA4NzAwMywgODcwMTQsIDg3MDI0LCA4NzAzNCwgODcwNDQsIDg3MDU0LCA4NzA2NCwgODcwNzQsIDg3MDg0LCAKKyAgICA4NzA5NiwgODcxMDYsIDg3MTE2LCA4NzEyOCwgODcxMzksIDg3MTUwLCA4NzE2MCwgODcxNzAsIDg3MTgwLCA4NzE5MCwgCisgICAgODcyMDIsIDg3MjEyLCA4NzIyMiwgODcyMzMsIDg3MjQ0LCA4NzI1NCwgODcyNjQsIDg3MjczLCA4NzI4MiwgODcyOTEsIAorICAgIDg3MzAwLCA4NzMwOSwgODczMTksIDAsIDAsIDg3MzI5LCA4NzMzOSwgODczNDksIDg3MzU5LCA4NzM2OSwgODczODEsIAorICAgIDg3MzkxLCA4NzQwMSwgODc0MTMsIDg3NDIzLCA4NzQzNSwgODc0NDQsIDg3NDUzLCA4NzQ2NCwgODc0NzQsIDg3NDg2LCAKKyAgICA4NzQ5NywgODc1MTAsIDg3NTIwLCA4NzUzMiwgODc1NDEsIDg3NTUyLCA4NzU2MywgODc1NzYsIDg3NTg2LCA4NzU5NiwgCisgICAgODc2MDYsIDg3NjE2LCA4NzYyNiwgODc2MzUsIDg3NjQ0LCA4NzY1MywgODc2NjIsIDg3NjcyLCA4NzY4MiwgODc2OTIsIAorICAgIDg3NzAyLCA4NzcxMiwgODc3MjIsIDg3NzMyLCA4Nzc0MiwgODc3NTIsIDg3NzYyLCA4Nzc3MiwgODc3ODIsIDg3NzkxLCAKKyAgICA4NzgwMCwgODc4MDksIDg3ODE5LCA4NzgyOSwgODc4MzksIDg3ODQ5LCA4Nzg1OSwgODc4NzAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NjgxLCA1NzY4NSwgNTc2ODksIDU3Njk0LCA1NzY5OSwgNTc3MDQsIAotICAgIDU3NzA4LCA1NzcxMiwgNTc3MTYsIDU3NzIxLCA1NzcyNiwgNTc3MzAsIDU3NzM0LCA1NzczOCwgNTc3NDIsIDU3NzQ3LCAKLSAgICA1Nzc1MiwgNTc3NTcsIDU3NzYyLCA1Nzc2NiwgNTc3NzAsIDU3Nzc1LCA1Nzc4MCwgNTc3ODUsIDU3NzkwLCA1Nzc5NCwgMCwgCi0gICAgNTc3OTgsIDU3ODAyLCA1NzgwNiwgNTc4MTAsIDU3ODE0LCA1NzgxOCwgNTc4MjIsIDU3ODI3LCA1NzgzMiwgNTc4MzYsIAotICAgIDU3ODQxLCA1Nzg0NiwgNTc4NTUsIDU3ODU5LCA1Nzg2MywgNTc4NjcsIDU3ODc0LCA1Nzg3OCwgNTc4ODMsIDU3ODg4LCAKLSAgICA1Nzg5MiwgNTc4OTYsIDU3OTAyLCA1NzkwNywgNTc5MTIsIDU3OTE3LCA1NzkyMiwgNTc5MjYsIDU3OTMwLCA1NzkzNCwgCi0gICAgNTc5MzgsIDU3OTQyLCA1Nzk0NywgNTc5NTIsIDU3OTU2LCA1Nzk2MCwgNTc5NjUsIDU3OTcwLCA1Nzk3NSwgNTc5NzksIAotICAgIDU3OTgzLCA1Nzk4OCwgNTc5OTMsIDU3OTk5LCA1ODAwNSwgNTgwMDksIDU4MDE1LCA1ODAyMSwgNTgwMjUsIDU4MDMxLCAKLSAgICA1ODAzNywgNTgwNDIsIDU4MDQ3LCA1ODA1MSwgNTgwNTcsIDU4MDYxLCA1ODA2NSwgNTgwNzEsIDU4MDc3LCA1ODA4MiwgCi0gICAgNTgwODcsIDU4MDkxLCA1ODA5NSwgNTgxMDMsIDU4MTA5LCA1ODExNSwgNTgxMjEsIDU4MTI2LCA1ODEzMSwgNTgxMzYsIAotICAgIDU4MTQyLCA1ODE0NiwgNTgxNTIsIDU4MTU2LCA1ODE2MCwgNTgxNjYsIDU4MTcyLCA1ODE3OCwgNTgxODQsIDU4MTkwLCAKLSAgICA1ODE5NiwgNTgyMDIsIDU4MjA4LCA1ODIxNCwgNTgyMjAsIDU4MjI2LCA1ODIzMiwgNTgyMzYsIDU4MjQyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODI0OCwgNTgyNTEsIDU4MjU1LCA1ODI1OSwgNTgyNjMsIDU4MjY3LCAKLSAgICA1ODI3MCwgNTgyNzMsIDU4Mjc3LCA1ODI4MSwgNTgyODUsIDU4Mjg5LCA1ODI5MiwgNTgyOTcsIDU4MzAxLCA1ODMwNSwgCi0gICAgNTgzMDksIDU4MzE0LCA1ODMxOCwgNTgzMjIsIDU4MzI2LCA1ODMzMCwgNTgzMzYsIDU4MzQyLCA1ODM0NiwgNTgzNTAsIAotICAgIDU4MzU0LCA1ODM1OCwgNTgzNjIsIDU4MzY2LCA1ODM3MCwgNTgzNzQsIDU4Mzc4LCA1ODM4MiwgNTgzODYsIDU4MzkyLCAKLSAgICA1ODM5NiwgNTg0MDAsIDU4NDA0LCA1ODQwOCwgNTg0MTIsIDU4NDE2LCA1ODQyMCwgNTg0MjQsIDU4NDI4LCA1ODQzMiwgCi0gICAgNTg0MzYsIDU4NDQwLCA1ODQ0NCwgNTg0NDgsIDU4NDUyLCA1ODQ1NiwgNTg0NjIsIDU4NDY4LCA1ODQ3MywgNTg0NzgsIAotICAgIDU4NDgyLCA1ODQ4NiwgNTg0OTAsIDU4NDk0LCA1ODQ5OCwgNTg1MDIsIDU4NTA2LCA1ODUxMCwgNTg1MTQsIDU4NTE4LCAKLSAgICA1ODUyMiwgNTg1MjYsIDU4NTMwLCA1ODUzNCwgNTg1MzgsIDU4NTQyLCA1ODU0NiwgNTg1NTAsIDU4NTU0LCA1ODU1OCwgCi0gICAgNTg1NjIsIDU4NTY2LCA1ODU3MCwgNTg1NzQsIDU4NTgwLCA1ODU4NCwgNTg1ODgsIDU4NTkyLCA1ODU5NiwgNTg2MDAsIAotICAgIDU4NjA0LCA1ODYwOCwgNTg2MTIsIDU4NjE3LCA1ODYyNCwgNTg2MjgsIDU4NjMyLCA1ODYzNiwgNTg2NDAsIDU4NjQ0LCAKLSAgICA1ODY0OCwgNTg2NTIsIDU4NjU2LCA1ODY2MCwgNTg2NjQsIDU4NjY4LCA1ODY3MiwgNTg2NzksIDU4NjgzLCA1ODY4OSwgCi0gICAgNTg2OTMsIDU4Njk3LCA1ODcwMSwgNTg3MDUsIDU4NzA5LCA1ODcxMiwgNTg3MTYsIDU4NzIwLCA1ODcyNCwgNTg3MjgsIAotICAgIDU4NzMyLCA1ODczNiwgNTg3NDAsIDU4NzQ0LCA1ODc0OCwgNTg3NTIsIDU4NzU2LCA1ODc2MCwgNTg3NjQsIDU4NzY4LCAKLSAgICA1ODc3MiwgNTg3NzYsIDU4NzgwLCA1ODc4NCwgNTg3ODgsIDU4NzkyLCA1ODc5NiwgNTg4MDAsIDU4ODA0LCA1ODgwOCwgCi0gICAgNTg4MTIsIDU4ODE2LCA1ODgyMCwgNTg4MjQsIDU4ODI4LCA1ODgzMiwgNTg4MzYsIDU4ODQwLCA1ODg0NiwgNTg4NTAsIAotICAgIDU4ODU0LCA1ODg1OCwgNTg4NjIsIDU4ODY2LCA1ODg3MCwgNTg4NzQsIDU4ODc4LCA1ODg4MiwgNTg4ODYsIDU4ODkwLCAKLSAgICA1ODg5NCwgNTg4OTgsIDU4OTAyLCA1ODkwNiwgNTg5MTAsIDU4OTE0LCA1ODkxOCwgNTg5MjIsIDU4OTI2LCA1ODkzMCwgCi0gICAgNTg5MzQsIDU4OTM4LCA1ODk0MiwgNTg5NDYsIDU4OTUwLCA1ODk1NCwgNTg5NjIsIDU4OTY2LCA1ODk3MCwgNTg5NzQsIAotICAgIDU4OTc4LCA1ODk4MiwgNTg5ODgsIDU4OTkyLCA1ODk5NiwgNTkwMDAsIDU5MDA0LCA1OTAwOCwgNTkwMTIsIDU5MDE2LCAKLSAgICA1OTAyMCwgNTkwMjQsIDU5MDI4LCA1OTAzMiwgNTkwMzYsIDU5MDQwLCA1OTA0NiwgNTkwNTAsIDU5MDU0LCA1OTA1OCwgCi0gICAgNTkwNjIsIDU5MDY2LCA1OTA3MCwgNTkwNzQsIDU5MDc4LCA1OTA4MiwgNTkwODYsIDU5MDkwLCA1OTA5NCwgNTkwOTgsIAotICAgIDU5MTAyLCA1OTEwNiwgNTkxMTAsIDU5MTE0LCA1OTExOCwgNTkxMjIsIDU5MTI2LCA1OTEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkxMzQsIDU5MTQzLCAKLSAgICA1OTE1MSwgNTkxNjMsIDU5MTc0LCA1OTE4MiwgNTkxOTEsIDU5MjAwLCA1OTIxMCwgNTkyMjIsIDU5MjM0LCA1OTI0NiwgMCwgCi0gICAgMCwgMCwgMCwgNTkyNTIsIDU5MjU1LCA1OTI1OCwgNTkyNjMsIDU5MjY2LCA1OTI3MywgNTkyNzcsIDU5MjgxLCA1OTI4NSwgCi0gICAgNTkyODksIDU5MjkzLCA1OTI5OCwgNTkzMDMsIDU5MzA3LCA1OTMxMSwgNTkzMTYsIDU5MzIxLCA1OTMyNiwgNTkzMzEsIAotICAgIDU5MzM0LCA1OTMzNywgNTkzNDMsIDU5MzQ5LCA1OTM1NCwgNTkzNTksIDU5MzY2LCA1OTM3MywgNTkzNzcsIDU5MzgxLCAKLSAgICA1OTM4NSwgNTkzOTMsIDU5Mzk5LCA1OTQwNiwgNTk0MTEsIDU5NDE2LCA1OTQyMSwgNTk0MjYsIDU5NDMxLCA1OTQzNiwgCi0gICAgNTk0NDEsIDU5NDQ2LCA1OTQ1MSwgNTk0NTYsIDU5NDYxLCA1OTQ2NiwgNTk0NzEsIDU5NDc2LCA1OTQ4MiwgNTk0ODcsIAotICAgIDU5NDkxLCA1OTQ5NywgNTk1MDgsIDU5NTE4LCA1OTUzMywgNTk1NDMsIDU5NTQ3LCA1OTU1NywgNTk1NjMsIDU5NTY5LCAKLSAgICA1OTU3NSwgNTk1ODAsIDU5NTgzLCA1OTU4OCwgNTk1OTIsIDAsIDU5NTk4LCA1OTYwMiwgNTk2MDUsIDU5NjA5LCA1OTYxMiwgCi0gICAgNTk2MTYsIDU5NjE5LCA1OTYyMywgNTk2MjYsIDU5NjMwLCA1OTYzMywgNTk2MzYsIDU5NjQwLCA1OTY0NCwgNTk2NDgsIAotICAgIDU5NjUyLCA1OTY1NiwgNTk2NjAsIDU5NjY0LCA1OTY2OCwgNTk2NzIsIDU5Njc1LCA1OTY3OSwgNTk2ODMsIDU5Njg3LCAKLSAgICA1OTY5MSwgNTk2OTUsIDU5Njk5LCA1OTcwMywgNTk3MDcsIDU5NzExLCA1OTcxNSwgNTk3MTksIDU5NzIzLCA1OTcyNywgCi0gICAgNTk3MzIsIDU5NzM2LCA1OTc0MCwgNTk3NDQsIDU5NzQ4LCA1OTc1MSwgNTk3NTUsIDU5NzU4LCA1OTc2MiwgNTk3NjYsIAotICAgIDU5NzcwLCA1OTc3NCwgNTk3NzcsIDU5NzgxLCA1OTc4NCwgNTk3ODgsIDU5NzkyLCA1OTc5NiwgNTk4MDAsIDU5ODA0LCAKLSAgICA1OTgwOCwgNTk4MTIsIDU5ODE2LCA1OTgyMCwgNTk4MjQsIDU5ODI4LCA1OTgzMiwgNTk4MzUsIDU5ODM5LCA1OTg0MywgCi0gICAgNTk4NDcsIDU5ODUxLCA1OTg1NSwgNTk4NTgsIDU5ODYzLCA1OTg2NywgNTk4NzIsIDU5ODc2LCA1OTg3OSwgNTk4ODMsIAotICAgIDU5ODg3LCA1OTg5MSwgNTk4OTUsIDU5OTAwLCA1OTkwNCwgNTk5MDgsIDU5OTEyLCA1OTkxNiwgNTk5MjAsIDU5OTI0LCAKLSAgICA1OTkyOCwgMCwgMCwgNTk5MzMsIDU5OTQxLCA1OTk0OSwgNTk5NTYsIDU5OTYzLCA1OTk2NywgNTk5NzMsIDU5OTc4LCAKLSAgICA1OTk4MywgNTk5ODcsIDU5OTkwLCA1OTk5NCwgNTk5OTcsIDYwMDAxLCA2MDAwNCwgNjAwMDgsIDYwMDExLCA2MDAxNSwgCi0gICAgNjAwMTgsIDYwMDIxLCA2MDAyNSwgNjAwMjksIDYwMDMzLCA2MDAzNywgNjAwNDEsIDYwMDQ1LCA2MDA0OSwgNjAwNTMsIAotICAgIDYwMDU3LCA2MDA2MCwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgwLCA2MDA4NCwgNjAwODgsIDYwMDkyLCAKLSAgICA2MDA5NiwgNjAxMDAsIDYwMTA0LCA2MDEwOCwgNjAxMTIsIDYwMTE3LCA2MDEyMSwgNjAxMjUsIDYwMTI5LCA2MDEzMywgCi0gICAgNjAxMzYsIDYwMTQwLCA2MDE0MywgNjAxNDcsIDYwMTUxLCA2MDE1NSwgNjAxNTksIDYwMTYyLCA2MDE2NiwgNjAxNjksIAotICAgIDYwMTczLCA2MDE3NywgNjAxODEsIDYwMTg1LCA2MDE4OSwgNjAxOTMsIDYwMTk3LCA2MDIwMSwgNjAyMDUsIDYwMjA5LCAKLSAgICA2MDIxMywgNjAyMTcsIDYwMjIwLCA2MDIyNCwgNjAyMjgsIDYwMjMyLCA2MDIzNiwgNjAyNDAsIDYwMjQzLCA2MDI0OCwgCi0gICAgNjAyNTIsIDYwMjU3LCA2MDI2MSwgNjAyNjQsIDYwMjY4LCA2MDI3MiwgNjAyNzYsIDYwMjgwLCA2MDI4NSwgNjAyODksIAotICAgIDYwMjkzLCA2MDI5NywgNjAzMDEsIDYwMzA1LCA2MDMwOSwgNjAzMTMsIDYwMzE4LCA2MDMyMiwgNjAzMjYsIDYwMzMwLCAKLSAgICA2MDMzNCwgNjAzMzksIDYwMzQ2LCA2MDM1MCwgNjAzNTYsIDAsIDAsIDAsIDAsIDAsIDYwMzYxLCA2MDM2NiwgNjAzNzEsIAotICAgIDYwMzc1LCA2MDM4MCwgNjAzODUsIDYwMzkwLCA2MDM5NSwgNjAzOTksIDYwNDA0LCA2MDQwOSwgNjA0MTQsIDYwNDE5LCAKLSAgICA2MDQyNCwgNjA0MjksIDYwNDM0LCA2MDQzOSwgNjA0NDQsIDYwNDQ4LCA2MDQ1MywgNjA0NTgsIDYwNDYzLCA2MDQ2NywgCi0gICAgNjA0NzEsIDYwNDc1LCA2MDQ4MCwgNjA0ODUsIDYwNDkwLCA2MDQ5NSwgNjA1MDAsIDYwNTA1LCA2MDUxMCwgNjA1MTUsIAotICAgIDYwNTIwLCA2MDUyNSwgNjA1MjksIDYwNTMzLCA2MDUzOCwgNjA1NDMsIDYwNTQ4LCA2MDU1MywgMCwgMCwgMCwgNjA1NTgsIAotICAgIDYwNTYyLCA2MDU2NiwgNjA1NzAsIDYwNTc0LCA2MDU3OCwgNjA1ODIsIDYwNTg2LCA2MDU5MCwgNjA1OTQsIDYwNTk4LCAKLSAgICA2MDYwMiwgNjA2MDYsIDYwNjEwLCA2MDYxNCwgNjA2MTgsIDYwNjIyLCA2MDYyNiwgNjA2MzAsIDYwNjM0LCA2MDYzOCwgCi0gICAgNjA2NDIsIDYwNjQ2LCA2MDY1MCwgNjA2NTQsIDYwNjU4LCA2MDY2MiwgNjA2NjYsIDYwNjcwLCA2MDY3NCwgNjA2NzgsIAotICAgIDYwNjgxLCA2MDY4NSwgNjA2ODgsIDYwNjkyLCA2MDY5NiwgNjA2OTksIDYwNzAzLCA2MDcwNywgNjA3MTAsIDYwNzE0LCAKLSAgICA2MDcxOCwgNjA3MjIsIDYwNzI2LCA2MDcyOSwgNjA3MzMsIDYwNzM3LCA2MDc0MSwgNjA3NDUsIDYwNzQ5LCA2MDc1MywgCi0gICAgNjA3NTYsIDYwNzU5LCA2MDc2MywgNjA3NjcsIDYwNzcxLCA2MDc3NSwgNjA3NzksIDYwNzgzLCA2MDc4NywgNjA3OTEsIAotICAgIDYwNzk1LCA2MDc5OSwgNjA4MDMsIDYwODA3LCA2MDgxMSwgNjA4MTUsIDYwODE5LCA2MDgyMywgNjA4MjcsIDYwODMxLCAKLSAgICA2MDgzNSwgNjA4MzksIDYwODQzLCA2MDg0NywgNjA4NTEsIDYwODU1LCA2MDg1OSwgNjA4NjMsIDYwODY3LCA2MDg3MSwgCi0gICAgNjA4NzUsIDYwODc5LCA2MDg4MywgNjA4ODcsIDYwODkxLCA2MDg5NSwgNjA4OTksIDYwOTAzLCA2MDkwNywgNjA5MTEsIAotICAgIDYwOTE1LCA2MDkxOSwgNjA5MjMsIDAsIDYwOTI3LCA2MDkzMywgNjA5MzksIDYwOTQ0LCA2MDk0OSwgNjA5NTQsIDYwOTYwLCAKLSAgICA2MDk2NiwgNjA5NzIsIDYwOTc4LCA2MDk4NCwgNjA5OTAsIDYwOTk2LCA2MTAwMiwgNjEwMDgsIDYxMDE0LCA2MTAyMCwgCi0gICAgNjEwMjUsIDYxMDMwLCA2MTAzNSwgNjEwNDAsIDYxMDQ1LCA2MTA1MCwgNjEwNTUsIDYxMDYwLCA2MTA2NSwgNjEwNzAsIAotICAgIDYxMDc1LCA2MTA4MCwgNjEwODUsIDYxMDkwLCA2MTA5NSwgNjExMDAsIDYxMTA1LCA2MTExMCwgNjExMTUsIDYxMTIwLCAKLSAgICA2MTEyNiwgNjExMzIsIDYxMTM4LCA2MTE0NCwgNjExNDksIDYxMTU0LCAwLCAwLCAwLCAwLCAwLCA2MTE1OSwgNjExNjQsIAotICAgIDYxMTY5LCA2MTE3NCwgNjExNzksIDYxMTg0LCA2MTE4OSwgNjExOTQsIDYxMTk5LCA2MTIwNCwgNjEyMDksIDYxMjE0LCAKLSAgICA2MTIxOSwgNjEyMjQsIDYxMjI5LCA2MTIzNCwgNjEyMzksIDYxMjQ0LCA2MTI0OSwgNjEyNTQsIDYxMjU5LCA2MTI2NCwgCi0gICAgNjEyNjksIDYxMjc0LCA2MTI3OSwgNjEyODQsIDYxMjg5LCA2MTI5NCwgNjEyOTksIDYxMzA0LCA2MTMwOSwgNjEzMTQsIAotICAgIDYxMzE5LCA2MTMyNCwgNjEzMjksIDYxMzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTMzOSwgCi0gICAgNjEzNDQsIDYxMzQ5LCA2MTM1NCwgNjEzNTgsIDYxMzYzLCA2MTM2NywgNjEzNzIsIDYxMzc3LCA2MTM4MiwgNjEzODcsIAotICAgIDYxMzkyLCA2MTM5NiwgNjE0MDEsIDYxNDA2LCA2MTQxMSwgNjE0MTYsIDYxNDIwLCA2MTQyNCwgNjE0MjgsIDYxNDMyLCAKLSAgICA2MTQzNiwgNjE0NDAsIDYxNDQ0LCA2MTQ0OCwgNjE0NTIsIDYxNDU2LCA2MTQ2MCwgNjE0NjQsIDYxNDY4LCA2MTQ3MiwgCi0gICAgNjE0NzcsIDYxNDgyLCA2MTQ4NywgNjE0OTIsIDYxNDk3LCA2MTUwMiwgNjE1MDcsIDYxNTEyLCA2MTUxNywgNjE1MjIsIAotICAgIDYxNTI3LCA2MTUzMiwgNjE1MzcsIDYxNTQyLCA2MTU0NywgNjE1NTMsIDAsIDYxNTYwLCA2MTU2MywgNjE1NjYsIDYxNTY5LCAKLSAgICA2MTU3MiwgNjE1NzUsIDYxNTc4LCA2MTU4MSwgNjE1ODQsIDYxNTg3LCA2MTU5MSwgNjE1OTUsIDYxNTk5LCA2MTYwMywgCi0gICAgNjE2MDcsIDYxNjExLCA2MTYxNSwgNjE2MTksIDYxNjIzLCA2MTYyNywgNjE2MzEsIDYxNjM1LCA2MTYzOSwgNjE2NDMsIAotICAgIDYxNjQ3LCA2MTY1MSwgNjE2NTUsIDYxNjU5LCA2MTY2MywgNjE2NjcsIDYxNjcxLCA2MTY3NSwgNjE2NzksIDYxNjgzLCAKLSAgICA2MTY4NywgNjE2OTEsIDYxNjk1LCA2MTY5OSwgNjE3MDMsIDYxNzA3LCA2MTcxMSwgNjE3MjAsIDYxNzI5LCA2MTczOCwgCi0gICAgNjE3NDcsIDYxNzU2LCA2MTc2NSwgNjE3NzQsIDYxNzgzLCA2MTc4NiwgNjE3OTEsIDYxNzk2LCA2MTgwMSwgNjE4MDYsIAotICAgIDYxODExLCA2MTgxNiwgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzUsIDYxODQwLCA2MTg0NSwgNjE4NTAsIDYxODU1LCAKLSAgICA2MTg2MCwgNjE4NjQsIDYxODY4LCA2MTg3MiwgNjE4NzYsIDYxODgwLCA2MTg4NCwgNjE4ODgsIDYxODkyLCA2MTg5NiwgCi0gICAgNjE5MDAsIDYxOTA0LCA2MTkwOCwgNjE5MTIsIDYxOTE2LCA2MTkyMSwgNjE5MjYsIDYxOTMxLCA2MTkzNiwgNjE5NDEsIAotICAgIDYxOTQ2LCA2MTk1MSwgNjE5NTYsIDYxOTYxLCA2MTk2NiwgNjE5NzEsIDYxOTc2LCA2MTk4MSwgNjE5ODYsIDYxOTkyLCAKLSAgICA2MTk5OCwgNjIwMDMsIDYyMDA4LCA2MjAxMSwgNjIwMTQsIDYyMDE3LCA2MjAyMCwgNjIwMjMsIDYyMDI2LCA2MjAyOSwgCi0gICAgNjIwMzIsIDYyMDM1LCA2MjAzOSwgNjIwNDMsIDYyMDQ3LCA2MjA1MSwgNjIwNTUsIDYyMDU5LCA2MjA2MywgNjIwNjcsIAotICAgIDYyMDcxLCA2MjA3NSwgNjIwNzksIDYyMDgzLCA2MjA4NywgNjIwOTEsIDYyMDk1LCA2MjA5OSwgNjIxMDMsIDYyMTA3LCAKLSAgICA2MjExMSwgNjIxMTUsIDYyMTE5LCA2MjEyMywgNjIxMjcsIDYyMTMxLCA2MjEzNSwgNjIxMzksIDYyMTQzLCA2MjE0NywgCi0gICAgNjIxNTEsIDYyMTU1LCA2MjE1OSwgNjIxNjMsIDYyMTY3LCA2MjE3MSwgNjIxNzUsIDYyMTc5LCA2MjE4MywgNjIxODcsIAotICAgIDYyMTkxLCA2MjE5NSwgNjIyMDAsIDYyMjA1LCA2MjIxMCwgNjIyMTUsIDYyMjE5LCA2MjIyNCwgNjIyMjksIDYyMjM0LCAKLSAgICA2MjIzOSwgNjIyNDQsIDYyMjQ5LCA2MjI1NCwgNjIyNTksIDYyMjY0LCA2MjI2OCwgNjIyNzUsIDYyMjgyLCA2MjI4OSwgCi0gICAgNjIyOTYsIDYyMzAzLCA2MjMxMCwgNjIzMTcsIDYyMzI0LCA2MjMzMSwgNjIzMzgsIDYyMzQ1LCA2MjM1MiwgNjIzNTUsIAotICAgIDYyMzU4LCA2MjM2MSwgNjIzNjYsIDYyMzY5LCA2MjM3MiwgNjIzNzUsIDYyMzc4LCA2MjM4MSwgNjIzODQsIDYyMzg4LCAKLSAgICA2MjM5MiwgNjIzOTYsIDYyNDAwLCA2MjQwMywgNjI0MDcsIDYyNDExLCA2MjQxNSwgNjI0MTksIDYyNDIzLCA2MjQyNywgCi0gICAgNjI0MzEsIDYyNDM1LCA2MjQzOCwgNjI0NDEsIDYyNDQ1LCA2MjQ0OSwgNjI0NTMsIDYyNDU3LCA2MjQ2MCwgNjI0NjQsIAotICAgIDYyNDY4LCA2MjQ3MiwgNjI0NzYsIDYyNDc5LCA2MjQ4MywgNjI0ODcsIDYyNDkxLCA2MjQ5NSwgNjI0OTgsIDYyNTAyLCAKLSAgICA2MjUwNiwgNjI1MDksIDYyNTEzLCA2MjUxNywgNjI1MjEsIDYyNTI1LCA2MjUyOSwgNjI1MzMsIDYyNTM3LCAwLCA2MjU0MSwgCi0gICAgNjI1NDQsIDYyNTQ3LCA2MjU1MCwgNjI1NTMsIDYyNTU2LCA2MjU1OSwgNjI1NjIsIDYyNTY1LCA2MjU2OCwgNjI1NzEsIAotICAgIDYyNTc0LCA2MjU3NywgNjI1ODAsIDYyNTgzLCA2MjU4NiwgNjI1ODksIDYyNTkyLCA2MjU5NSwgNjI1OTgsIDYyNjAxLCAKLSAgICA2MjYwNCwgNjI2MDcsIDYyNjEwLCA2MjYxMywgNjI2MTYsIDYyNjE5LCA2MjYyMiwgNjI2MjUsIDYyNjI4LCA2MjYzMSwgCi0gICAgNjI2MzQsIDYyNjM3LCA2MjY0MCwgNjI2NDMsIDYyNjQ2LCA2MjY0OSwgNjI2NTIsIDYyNjU1LCA2MjY1OCwgNjI2NjEsIAotICAgIDYyNjY0LCA2MjY2NywgNjI2NzAsIDYyNjczLCA2MjY3NiwgNjI2NzksIDYyNjgyLCA2MjY4NSwgNjI2ODgsIDYyNjkxLCAKLSAgICA2MjY5NCwgNjI2OTcsIDYyNzAwLCA2MjcwMywgNjI3MDYsIDYyNzA5LCA2MjcxMiwgNjI3MTUsIDYyNzE4LCA2MjcyMSwgCi0gICAgNjI3MjQsIDYyNzI3LCA2MjczMCwgNjI3MzMsIDYyNzM2LCA2MjczOSwgNjI3NDIsIDYyNzQ1LCA2Mjc0OCwgNjI3NTEsIAotICAgIDYyNzU0LCA2Mjc1NywgNjI3NjAsIDYyNzYzLCA2Mjc2NiwgNjI3NjksIDYyNzcyLCA2Mjc3NSwgNjI3NzgsIDYyNzgxLCAKLSAgICA2Mjc4NCwgNjI3ODcsIDYyNzkwLCA2Mjc5MywgNjI3OTYsIDYyNzk5LCA2MjgwMiwgNjI4MDUsIDYyODE0LCA2MjgyMiwgCi0gICAgNjI4MzAsIDYyODM4LCA2Mjg0NiwgNjI4NTQsIDYyODYyLCA2Mjg3MCwgNjI4NzgsIDYyODg2LCA2Mjg5NSwgNjI5MDQsIAotICAgIDYyOTEzLCA2MjkyMiwgNjI5MzEsIDYyOTQwLCA2Mjk0OSwgNjI5NTgsIDYyOTY3LCA2Mjk3NiwgNjI5ODUsIDYyOTk0LCAKLSAgICA2MzAwMywgNjMwMTIsIDYzMDIxLCA2MzAyNCwgNjMwMjcsIDYzMDMwLCA2MzAzMiwgNjMwMzUsIDYzMDM4LCA2MzA0MSwgCi0gICAgNjMwNDYsIDYzMDUxLCA2MzA1NCwgNjMwNjEsIDYzMDY4LCA2MzA3NSwgNjMwODIsIDYzMDg1LCA2MzA5MCwgNjMwOTIsIAotICAgIDYzMDk2LCA2MzA5OCwgNjMxMDAsIDYzMTAzLCA2MzEwNiwgNjMxMDksIDYzMTEyLCA2MzExNSwgNjMxMTgsIDYzMTIxLCAKLSAgICA2MzEyNiwgNjMxMzEsIDYzMTM0LCA2MzEzNywgNjMxNDAsIDYzMTQzLCA2MzE0NiwgNjMxNDksIDYzMTUyLCA2MzE1NiwgCi0gICAgNjMxNTksIDYzMTYyLCA2MzE2NSwgNjMxNjgsIDYzMTcxLCA2MzE3NSwgNjMxNzgsIDYzMTgxLCA2MzE4NCwgNjMxODksIAotICAgIDYzMTk0LCA2MzE5OSwgNjMyMDQsIDYzMjA5LCA2MzIxNCwgNjMyMTksIDYzMjI0LCA2MzIzMCwgNjMyMzgsIDYzMjQwLCAKLSAgICA2MzI0MywgNjMyNDYsIDYzMjQ5LCA2MzI1MiwgNjMyNTgsIDYzMjY2LCA2MzI2OSwgNjMyNzIsIDYzMjc3LCA2MzI4MCwgCi0gICAgNjMyODMsIDYzMjg2LCA2MzI5MSwgNjMyOTQsIDYzMjk3LCA2MzMwMiwgNjMzMDUsIDYzMzA4LCA2MzMxMywgNjMzMTYsIAotICAgIDYzMzE5LCA2MzMyNCwgNjMzMjksIDYzMzM0LCA2MzMzNywgNjMzNDAsIDYzMzQzLCA2MzM0NiwgNjMzNTIsIDYzMzU1LCAKLSAgICA2MzM1OCwgNjMzNjEsIDYzMzYzLCA2MzM2NiwgNjMzNjksIDYzMzcyLCA2MzM3NywgNjMzODAsIDYzMzgzLCA2MzM4NiwgCi0gICAgNjMzODksIDYzMzkyLCA2MzM5NywgNjM0MDAsIDYzNDAzLCA2MzQwNiwgNjM0MDksIDYzNDEyLCA2MzQxNSwgNjM0MTgsIAotICAgIDYzNDIxLCA2MzQyNCwgNjM0MjksIDYzNDMzLCA2MzQ0MSwgNjM0NDksIDYzNDU3LCA2MzQ2NSwgNjM0NzMsIDYzNDgxLCAKLSAgICA2MzQ4OSwgNjM0OTcsIDYzNTA1LCA2MzUxNCwgNjM1MjMsIDYzNTMyLCA2MzU0MSwgNjM1NTAsIDYzNTU5LCA2MzU2OCwgCi0gICAgNjM1NzcsIDYzNTg2LCA2MzU5NSwgNjM2MDQsIDYzNjEzLCA2MzYyMiwgNjM2MzEsIDYzNjQwLCA2MzY0OSwgNjM2NTgsIAotICAgIDYzNjY3LCA2MzY3NiwgNjM2ODUsIDYzNjk0LCA2MzcwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc4ODAsIDg3ODk1LCA4NzkxMCwgODc5MTYsIDg3OTIyLCA4NzkyOCwgCisgICAgODc5MzQsIDg3OTQwLCA4Nzk0NiwgODc5NTIsIDg3OTU4LCA4Nzk2NiwgODc5NzAsIDg3OTczLCAwLCAwLCA4Nzk4MSwgCisgICAgODc5ODQsIDg3OTg3LCA4Nzk5MCwgODc5OTMsIDg3OTk2LCA4Nzk5OSwgODgwMDIsIDg4MDA1LCA4ODAwOCwgODgwMTEsIAorICAgIDg4MDE0LCA4ODAxNywgODgwMjAsIDg4MDIzLCA4ODAyNiwgODgwMjksIDg4MDM3LCA4ODA0NiwgODgwNTcsIDg4MDY1LCAKKyAgICA4ODA3MywgODgwODIsIDg4MDkxLCA4ODEwMiwgODgxMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTI0LCA4ODEyOSwgODgxMzQsIAorICAgIDg4MTQxLCA4ODE0OCwgODgxNTQsIDg4MTYwLCA4ODE2NSwgODgxNzAsIDg4MTc1LCA4ODE4MSwgODgxODcsIDg4MTkzLCAKKyAgICA4ODE5OSwgODgyMDUsIDg4MjEyLCA4ODIxOSwgODgyMjksIDg4MjM5LCA4ODI0OSwgODgyNTgsIDg4MjY5LCA4ODI3OCwgCisgICAgODgyODcsIDg4Mjk3LCA4ODMwNywgODgzMTksIDg4MzMxLCA4ODM0MiwgODgzNTMsIDg4MzY0LCA4ODM3NSwgODgzODUsIAorICAgIDg4Mzk1LCA4ODQwNSwgODg0MTUsIDg4NDI2LCA4ODQzNywgODg0NDEsIDg4NDQ2LCA4ODQ1NSwgODg0NjQsIDg4NDY4LCAKKyAgICA4ODQ3MiwgODg0NzYsIDg4NDgxLCA4ODQ4NiwgODg0OTEsIDg4NDk2LCA4ODQ5OSwgODg1MDMsIDAsIDg4NTA4LCA4ODUxMSwgCisgICAgODg1MTQsIDg4NTE4LCA4ODUyMiwgODg1MjcsIDg4NTMxLCA4ODUzNSwgODg1NDAsIDg4NTQ1LCA4ODU1MiwgODg1NTksIAorICAgIDg4NTYyLCA4ODU2NSwgODg1NjgsIDg4NTcxLCA4ODU3NCwgODg1NzgsIDg4NTgyLCAwLCA4ODU4NiwgODg1OTEsIDg4NTk1LCAKKyAgICA4ODU5OSwgMCwgMCwgMCwgMCwgODg2MDQsIDg4NjA5LCA4ODYxNiwgODg2MjEsIDg4NjI2LCAwLCA4ODYzMSwgODg2MzYsIAorICAgIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg3LCAKKyAgICA4ODY5NiwgODg3MDUsIDg4NzE0LCA4ODcyMywgODg3MzMsIDg4NzQzLCA4ODc1MywgODg3NjMsIDg4NzcyLCA4ODc4MSwgCisgICAgODg3OTAsIDg4Nzk5LCA4ODgwNCwgODg4MDksIDg4ODE1LCA4ODgyMSwgODg4MjcsIDg4ODMzLCA4ODg0MSwgODg4NDksIAorICAgIDg4ODU1LCA4ODg2MSwgODg4NjcsIDg4ODczLCA4ODg3OSwgODg4ODUsIDg4ODkxLCA4ODg5NywgODg5MDIsIDg4OTA3LCAKKyAgICA4ODkxMiwgODg5MTcsIDg4OTIyLCA4ODkyNywgODg5MzIsIDg4OTM3LCA4ODk0MywgODg5NDksIDg4OTU1LCA4ODk2MSwgCisgICAgODg5NjcsIDg4OTczLCA4ODk3OSwgODg5ODUsIDg4OTkxLCA4ODk5NywgODkwMDMsIDg5MDA5LCA4OTAxNSwgODkwMjEsIAorICAgIDg5MDI3LCA4OTAzMywgODkwMzksIDg5MDQ1LCA4OTA1MSwgODkwNTcsIDg5MDYzLCA4OTA2OSwgODkwNzUsIDg5MDgxLCAKKyAgICA4OTA4NywgODkwOTMsIDg5MDk5LCA4OTEwNSwgODkxMTEsIDg5MTE3LCA4OTEyMywgODkxMjksIDg5MTM1LCA4OTE0MSwgCisgICAgODkxNDcsIDg5MTUzLCA4OTE1OSwgODkxNjUsIDg5MTcxLCA4OTE3NywgODkxODMsIDg5MTg5LCA4OTE5NSwgODkyMDEsIAorICAgIDg5MjA3LCA4OTIxMywgODkyMTksIDg5MjI1LCA4OTIzMSwgODkyMzcsIDg5MjQzLCA4OTI0OSwgODkyNTUsIDg5MjYxLCAKKyAgICA4OTI2NywgODkyNzMsIDg5Mjc5LCA4OTI4NSwgODkyOTEsIDg5Mjk3LCA4OTMwMiwgODkzMDcsIDg5MzEyLCA4OTMxNywgCisgICAgODkzMjMsIDg5MzI5LCA4OTMzNSwgODkzNDEsIDg5MzQ3LCA4OTM1MywgODkzNTksIDg5MzY1LCA4OTM3MSwgODkzNzcsIAorICAgIDg5Mzg0LCA4OTM5MSwgODkzOTYsIDg5NDAxLCA4OTQwNiwgODk0MTEsIDg5NDIzLCA4OTQzNSwgODk0NDcsIDg5NDU5LCAKKyAgICA4OTQ3MiwgODk0ODUsIDg5NDkzLCAwLCAwLCA4OTUwMSwgMCwgODk1MDksIDg5NTEzLCA4OTUxNywgODk1MjAsIDg5NTI0LCAKKyAgICA4OTUyOCwgODk1MzEsIDg5NTM0LCA4OTUzOCwgODk1NDIsIDg5NTQ1LCA4OTU0OCwgODk1NTEsIDg5NTU0LCA4OTU1OSwgCisgICAgODk1NjIsIDg5NTY2LCA4OTU2OSwgODk1NzIsIDg5NTc1LCA4OTU3OCwgODk1ODEsIDg5NTg0LCA4OTU4OCwgODk1OTEsIAorICAgIDg5NTk1LCA4OTU5OCwgODk2MDEsIDg5NjA1LCA4OTYwOSwgODk2MTMsIDg5NjE3LCA4OTYyMiwgODk2MjcsIDg5NjMzLCAKKyAgICA4OTYzOSwgODk2NDUsIDg5NjUwLCA4OTY1NiwgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzksIDg5Njg1LCA4OTY5MCwgCisgICAgODk2OTYsIDg5NzAyLCA4OTcwNywgODk3MTMsIDg5NzE5LCA4OTcyNCwgODk3MjksIDg5NzM1LCA4OTc0MCwgODk3NDYsIAorICAgIDg5NzUyLCA4OTc1OCwgODk3NjQsIDg5NzcwLCA4OTc3NCwgODk3NzksIDg5NzgzLCA4OTc4OCwgODk3OTIsIDg5Nzk3LCAKKyAgICA4OTgwMiwgODk4MDgsIDg5ODE0LCA4OTgyMCwgODk4MjUsIDg5ODMxLCA4OTgzNywgODk4NDMsIDg5ODQ4LCA4OTg1NCwgCisgICAgODk4NjAsIDg5ODY1LCA4OTg3MSwgODk4NzcsIDg5ODgyLCA4OTg4OCwgODk4OTQsIDg5ODk5LCA4OTkwNCwgODk5MTAsIAorICAgIDg5OTE1LCA4OTkyMSwgODk5MjcsIDg5OTMzLCA4OTkzOSwgODk5NDUsIDg5OTUwLCA4OTk1NCwgODk5NTksIDg5OTYyLCAKKyAgICA4OTk2NywgODk5NzIsIDg5OTc4LCA4OTk4MywgODk5ODgsIDg5OTkyLCA4OTk5NywgOTAwMDIsIDkwMDA3LCA5MDAxMiwgCisgICAgOTAwMTcsIDkwMDIyLCA5MDAyNywgOTAwMzIsIDkwMDM4LCA5MDA0NCwgOTAwNTAsIDkwMDU4LCA5MDA2MiwgOTAwNjYsIAorICAgIDkwMDcwLCA5MDA3NCwgOTAwNzgsIDkwMDgyLCA5MDA4NywgOTAwOTIsIDkwMDk3LCA5MDEwMiwgOTAxMDcsIDkwMTEyLCAKKyAgICA5MDExNywgOTAxMjIsIDkwMTI3LCA5MDEzMiwgOTAxMzcsIDkwMTQyLCA5MDE0NywgOTAxNTEsIDkwMTU2LCA5MDE2MSwgCisgICAgOTAxNjYsIDkwMTcxLCA5MDE3NiwgOTAxODAsIDkwMTg1LCA5MDE5MCwgOTAxOTUsIDkwMjAwLCA5MDIwNCwgOTAyMDksIAorICAgIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjI4LCA5MDIzMywgOTAyMzgsIDkwMjQzLCA5MDI0OCwgOTAyNTMsIDkwMjU4LCAKKyAgICA5MDI2MywgOTAyNjgsIDkwMjczLCA5MDI4MCwgOTAyODcsIDkwMjkxLCA5MDI5NiwgOTAzMDEsIDkwMzA2LCA5MDMxMSwgCisgICAgOTAzMTYsIDkwMzIxLCA5MDMyNiwgOTAzMzEsIDkwMzM2LCA5MDM0MSwgOTAzNDYsIDkwMzUxLCA5MDM1NiwgOTAzNjEsIAorICAgIDkwMzY2LCA5MDM3MSwgOTAzNzYsIDkwMzgxLCA5MDM4NiwgOTAzOTEsIDkwMzk2LCA5MDQwMSwgOTA0MDYsIDkwNDExLCAKKyAgICA5MDQxNiwgOTA0MjEsIDkwNDI2LCA5MDQzMSwgOTA0MzYsIDAsIDAsIDAsIDkwNDQxLCA5MDQ0NSwgOTA0NTAsIDkwNDU0LCAKKyAgICA5MDQ1OSwgOTA0NjQsIDAsIDAsIDkwNDY4LCA5MDQ3MywgOTA0NzgsIDkwNDgyLCA5MDQ4NywgOTA0OTIsIDAsIDAsIAorICAgIDkwNDk3LCA5MDUwMiwgOTA1MDYsIDkwNTExLCA5MDUxNiwgOTA1MjEsIDAsIDAsIDkwNTI2LCA5MDUzMSwgOTA1MzYsIDAsIAorICAgIDAsIDAsIDkwNTQwLCA5MDU0NCwgOTA1NDgsIDkwNTUyLCA5MDU1NSwgOTA1NTksIDkwNTYzLCAwLCA5MDU2NywgOTA1NzMsIAorICAgIDkwNTc2LCA5MDU3OSwgOTA1ODIsIDkwNTg1LCA5MDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA1OTMsIAorICAgIDkwNTk5LCA5MDYwNSwgOTA2MTEsIDkwNjE3LCAwLCAwLCA5MDYyMSwgOTA2MjcsIDkwNjMzLCA5MDYzOSwgOTA2NDUsIAorICAgIDkwNjUxLCA5MDY1OCwgOTA2NjUsIDkwNjcyLCA5MDY3OSwgOTA2ODYsIDkwNjkzLCAwLCA5MDcwMCwgOTA3MDcsIDkwNzE0LCAKKyAgICA5MDcyMCwgOTA3MjcsIDkwNzM0LCA5MDc0MSwgOTA3NDgsIDkwNzU0LCA5MDc2MSwgOTA3NjgsIDkwNzc1LCA5MDc4MiwgCisgICAgOTA3ODksIDkwNzk2LCA5MDgwMywgOTA4MTAsIDkwODE3LCA5MDgyMywgOTA4MzAsIDkwODM3LCA5MDg0NCwgOTA4NTEsIAorICAgIDkwODU4LCA5MDg2NSwgOTA4NzIsIDAsIDkwODc5LCA5MDg4NiwgOTA4OTMsIDkwOTAwLCA5MDkwNywgOTA5MTQsIDkwOTIxLCAKKyAgICA5MDkyOCwgOTA5MzUsIDkwOTQyLCA5MDk0OSwgOTA5NTYsIDkwOTYzLCA5MDk3MCwgOTA5NzYsIDkwOTgzLCA5MDk5MCwgCisgICAgOTA5OTcsIDkxMDA0LCAwLCA5MTAxMSwgOTEwMTgsIDAsIDkxMDI1LCA5MTAzMiwgOTEwMzksIDkxMDQ2LCA5MTA1MywgCisgICAgOTEwNjAsIDkxMDY3LCA5MTA3NCwgOTEwODEsIDkxMDg4LCA5MTA5NSwgOTExMDIsIDkxMTA5LCA5MTExNiwgOTExMjMsIDAsIAorICAgIDAsIDkxMTI5LCA5MTEzNCwgOTExMzksIDkxMTQ0LCA5MTE0OSwgOTExNTQsIDkxMTU5LCA5MTE2NCwgOTExNjksIDkxMTc0LCAKKyAgICA5MTE3OSwgOTExODQsIDkxMTg5LCA5MTE5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTExOTksIDkxMjA2LCAKKyAgICA5MTIxMywgOTEyMjAsIDkxMjI3LCA5MTIzNCwgOTEyNDEsIDkxMjQ4LCA5MTI1NSwgOTEyNjIsIDkxMjY5LCA5MTI3NiwgCisgICAgOTEyODMsIDkxMjkwLCA5MTI5NywgOTEzMDQsIDkxMzExLCA5MTMxOCwgOTEzMjUsIDkxMzMyLCA5MTM0MCwgOTEzNDgsIAorICAgIDkxMzU1LCA5MTM2MiwgOTEzNjcsIDkxMzc1LCA5MTM4MywgOTEzOTAsIDkxMzk3LCA5MTQwMiwgOTE0MDksIDkxNDE0LCAKKyAgICA5MTQxOSwgOTE0MjYsIDkxNDMxLCA5MTQzNiwgOTE0NDEsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY2LCA5MTQ3MSwgCisgICAgOTE0NzYsIDkxNDgzLCA5MTQ5MCwgOTE0OTUsIDkxNTAwLCA5MTUwNSwgOTE1MTAsIDkxNTE1LCA5MTUyMCwgOTE1MjUsIAorICAgIDkxNTMwLCA5MTUzNSwgOTE1NDIsIDkxNTQ3LCA5MTU1NCwgOTE1NTksIDkxNTY0LCA5MTU2OSwgOTE1NzQsIDkxNTc5LCAKKyAgICA5MTU4NCwgOTE1ODksIDkxNTk0LCA5MTU5OSwgOTE2MDQsIDkxNjA5LCA5MTYxNiwgOTE2MjMsIDkxNjMwLCA5MTYzNywgCisgICAgOTE2NDMsIDkxNjQ4LCA5MTY1NSwgOTE2NjAsIDkxNjY1LCA5MTY3NCwgOTE2ODEsIDkxNjkwLCA5MTY5NywgOTE3MDIsIAorICAgIDkxNzA3LCA5MTcxNSwgOTE3MjAsIDkxNzI1LCA5MTczMCwgOTE3MzUsIDkxNzQwLCA5MTc0NywgOTE3NTIsIDkxNzU3LCAKKyAgICA5MTc2MiwgOTE3NjcsIDkxNzcyLCA5MTc3OSwgOTE3ODYsIDkxNzkzLCA5MTgwMCwgOTE4MDcsIDkxODE0LCA5MTgyMSwgCisgICAgOTE4MjgsIDkxODM1LCA5MTg0MiwgOTE4NDksIDkxODU2LCA5MTg2MywgOTE4NzAsIDkxODc3LCA5MTg4NCwgOTE4OTEsIAorICAgIDkxODk4LCA5MTkwNSwgOTE5MTIsIDkxOTE5LCA5MTkyNiwgOTE5MzMsIDkxOTQwLCA5MTk0NywgOTE5NTQsIDkxOTYxLCAKKyAgICA5MTk2OCwgMCwgMCwgMCwgMCwgMCwgOTE5NzUsIDkxOTgzLCA5MTk5MSwgMCwgMCwgMCwgMCwgOTE5OTYsIDkyMDAwLCAKKyAgICA5MjAwNCwgOTIwMDgsIDkyMDEyLCA5MjAxNiwgOTIwMjAsIDkyMDI1LCA5MjAyOSwgOTIwMzQsIDkyMDM5LCA5MjA0NCwgCisgICAgOTIwNDksIDkyMDU0LCA5MjA1OSwgOTIwNjQsIDkyMDY5LCA5MjA3NCwgOTIwNzksIDkyMDg1LCA5MjA5MSwgOTIwOTcsIAorICAgIDkyMTA0LCA5MjExMSwgOTIxMTgsIDkyMTI1LCA5MjEzMiwgOTIxMzksIDkyMTQ1LCA5MjE1MSwgOTIxNTcsIDkyMTY0LCAKKyAgICA5MjE3MSwgOTIxNzgsIDkyMTg1LCA5MjE5MiwgOTIxOTksIDkyMjA2LCA5MjIxMywgOTIyMjAsIDkyMjI3LCA5MjIzNCwgCisgICAgOTIyNDEsIDkyMjQ4LCA5MjI1NSwgMCwgMCwgMCwgOTIyNjIsIDkyMjcwLCA5MjI3OCwgOTIyODYsIDkyMjk0LCA5MjMwMiwgCisgICAgOTIzMTIsIDkyMzIyLCA5MjMzMCwgOTIzMzgsIDkyMzQ2LCA5MjM1NCwgOTIzNjIsIDkyMzY4LCA5MjM3NSwgOTIzODQsIAorICAgIDkyMzkzLCA5MjQwMiwgOTI0MTEsIDkyNDIwLCA5MjQyOSwgOTI0MzksIDkyNDUwLCA5MjQ2MCwgOTI0NzEsIDkyNDgwLCAKKyAgICA5MjQ4OSwgOTI0OTgsIDkyNTA4LCA5MjUxOSwgOTI1MjksIDkyNTQwLCA5MjU1MSwgOTI1NjAsIDkyNTY4LCA5MjU3NCwgCisgICAgOTI1ODAsIDkyNTg2LCA5MjU5MiwgOTI2MDAsIDkyNjA4LCA5MjYxNCwgOTI2MjEsIDkyNjMxLCA5MjYzOCwgOTI2NDUsIAorICAgIDkyNjUyLCA5MjY1OSwgOTI2NjYsIDkyNjc2LCA5MjY4MywgOTI2OTAsIDkyNjk4LCA5MjcwNiwgOTI3MTUsIDkyNzI0LCAKKyAgICA5MjczMywgOTI3NDIsIDkyNzUxLCA5Mjc1OSwgOTI3NjgsIDkyNzc3LCA5Mjc4NiwgOTI3OTAsIDkyNzk3LCA5MjgwMiwgCisgICAgOTI4MDcsIDkyODExLCA5MjgxNSwgOTI4MTksIDkyODIzLCA5MjgyOCwgOTI4MzMsIDkyODM5LCA5Mjg0NSwgOTI4NDksIAorICAgIDkyODU1LCA5Mjg1OSwgOTI4NjMsIDkyODY3LCA5Mjg3MSwgOTI4NzUsIDkyODc5LCA5Mjg4NSwgOTI4ODksIDkyODk0LCAwLCAKKyAgICAwLCAwLCA5Mjg5OCwgOTI5MDMsIDkyOTA4LCA5MjkxMywgOTI5MTgsIDkyOTI1LCA5MjkzMCwgOTI5MzUsIDkyOTQwLCAKKyAgICA5Mjk0NSwgOTI5NTAsIDkyOTU1LCAwLCAwLCAwLCAwLCA5Mjk2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNjM3MDYsIDYzNzE1LCA2MzcyNCwgNjM3MzUsIDYzNzQyLCA2Mzc0NywgNjM3NTIsIDYzNzU5LCA2Mzc2NiwgCi0gICAgNjM3NzIsIDYzNzc3LCA2Mzc4MiwgNjM3ODcsIDYzNzkyLCA2Mzc5OSwgNjM4MDQsIDYzODA5LCA2MzgxNCwgNjM4MjUsIAotICAgIDYzODMwLCA2MzgzNSwgNjM4NDIsIDYzODQ3LCA2Mzg1NCwgNjM4NTksIDYzODY0LCA2Mzg3MSwgNjM4NzgsIDYzODg1LCAKLSAgICA2Mzg5NCwgNjM5MDMsIDYzOTA4LCA2MzkxMywgNjM5MTgsIDYzOTI1LCA2MzkzMCwgNjM5NDAsIDYzOTQ3LCA2Mzk1MiwgCi0gICAgNjM5NTcsIDYzOTYyLCA2Mzk2NywgNjM5NzIsIDYzOTc3LCA2Mzk4NiwgNjM5OTMsIDY0MDAwLCA2NDAwNSwgNjQwMTIsIAotICAgIDY0MDE3LCA2NDAyNCwgNjQwMzMsIDY0MDQ0LCA2NDA0OSwgNjQwNTgsIDY0MDYzLCA2NDA3MCwgNjQwNzksIDY0MDg4LCAKLSAgICA2NDA5MywgNjQwOTgsIDY0MTA1LCA2NDExMSwgNjQxMTgsIDY0MTI1LCA2NDEyOSwgNjQxMzMsIDY0MTM2LCA2NDE0MCwgCi0gICAgNjQxNDQsIDY0MTQ4LCA2NDE1MiwgNjQxNTYsIDY0MTYwLCA2NDE2NCwgNjQxNjcsIDY0MTcxLCA2NDE3NSwgNjQxNzksIAotICAgIDY0MTgzLCA2NDE4NywgNjQxOTEsIDY0MTk0LCA2NDE5OCwgNjQyMDIsIDY0MjA1LCA2NDIwOSwgNjQyMTMsIDY0MjE3LCAKLSAgICA2NDIyMSwgNjQyMjUsIDY0MjI5LCA2NDIzMywgNjQyMzcsIDY0MjQxLCA2NDI0NSwgNjQyNDksIDY0MjUzLCA2NDI1NywgCi0gICAgNjQyNjEsIDY0MjY1LCA2NDI2OSwgNjQyNzMsIDY0Mjc3LCA2NDI4MSwgNjQyODUsIDY0Mjg5LCA2NDI5MywgNjQyOTcsIAotICAgIDY0MzAxLCA2NDMwNSwgNjQzMDksIDY0MzEzLCA2NDMxNywgNjQzMjEsIDY0MzI1LCA2NDMyOSwgNjQzMzMsIDY0MzM3LCAKLSAgICA2NDM0MSwgNjQzNDUsIDY0MzQ5LCA2NDM1MywgNjQzNTcsIDY0MzYxLCA2NDM2NSwgNjQzNjksIDY0MzczLCA2NDM3NywgCi0gICAgNjQzODEsIDY0Mzg0LCA2NDM4OCwgNjQzOTIsIDY0Mzk2LCA2NDQwMCwgNjQ0MDQsIDY0NDA4LCA2NDQxMiwgNjQ0MTYsIAotICAgIDY0NDIwLCA2NDQyNCwgNjQ0MjgsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgNjQ0NTIsIDY0NDU2LCAKLSAgICA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIDY0NDkyLCA2NDQ5NiwgCi0gICAgNjQ1MDAsIDY0NTA0LCA2NDUwOCwgNjQ1MTIsIDY0NTE2LCA2NDUyMCwgNjQ1MjQsIDY0NTI4LCA2NDUzMiwgNjQ1MzYsIAotICAgIDY0NTQwLCA2NDU0NCwgNjQ1NDgsIDY0NTUyLCA2NDU1NiwgNjQ1NjAsIDY0NTY0LCA2NDU2OCwgNjQ1NzIsIDY0NTc2LCAKLSAgICA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIDY0NjAwLCA2NDYwNCwgNjQ2MDgsIDY0NjEyLCA2NDYxNiwgCi0gICAgNjQ2MjAsIDY0NjI0LCA2NDYyOCwgNjQ2MzIsIDY0NjM2LCA2NDY0MCwgNjQ2NDQsIDY0NjQ4LCA2NDY1MiwgNjQ2NTYsIAotICAgIDY0NjYwLCA2NDY2NCwgNjQ2NjgsIDY0NjcyLCA2NDY3NiwgNjQ2ODAsIDY0Njg0LCA2NDY4OCwgNjQ2OTIsIDY0Njk2LCAKLSAgICA2NDcwMCwgNjQ3MDQsIDY0NzA4LCA2NDcxMiwgNjQ3MTYsIDY0NzIwLCA2NDcyNCwgNjQ3MjgsIDY0NzMyLCA2NDczNiwgCi0gICAgNjQ3NDAsIDY0NzQ0LCA2NDc0OCwgNjQ3NTIsIDY0NzU2LCA2NDc2MCwgNjQ3NjQsIDY0NzY4LCA2NDc3MiwgNjQ3NzYsIAotICAgIDY0NzgwLCA2NDc4NCwgNjQ3ODgsIDY0NzkyLCA2NDc5NiwgNjQ4MDAsIDY0ODA0LCA2NDgwOCwgNjQ4MTIsIDY0ODE2LCAKLSAgICA2NDgyMCwgNjQ4MjQsIDY0ODI4LCA2NDgzMiwgNjQ4MzYsIDY0ODQwLCA2NDg0NCwgNjQ4NDgsIDY0ODUyLCA2NDg1NSwgCi0gICAgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc1LCA2NDg3OSwgNjQ4ODMsIDY0ODg3LCA2NDg5MSwgNjQ4OTUsIAotICAgIDY0ODk5LCA2NDkwMywgNjQ5MDcsIDY0OTExLCA2NDkxNSwgNjQ5MTksIDY0OTIzLCA2NDkyNywgNjQ5MzEsIDY0OTM1LCAKLSAgICA2NDkzOSwgNjQ5NDMsIDY0OTQ3LCA2NDk1MSwgNjQ5NTUsIDY0OTU5LCA2NDk2MywgNjQ5NjcsIDY0OTcxLCA2NDk3NSwgCi0gICAgNjQ5NzksIDY0OTgzLCA2NDk4NywgNjQ5OTEsIDY0OTk1LCA2NDk5OSwgNjUwMDMsIDY1MDA3LCA2NTAxMSwgNjUwMTUsIAotICAgIDY1MDE5LCA2NTAyMywgNjUwMjcsIDY1MDMxLCA2NTAzNSwgNjUwMzksIDY1MDQzLCA2NTA0NywgNjUwNTEsIDY1MDU1LCAKLSAgICA2NTA1OSwgNjUwNjMsIDY1MDY3LCA2NTA3MSwgNjUwNzUsIDY1MDc5LCA2NTA4MywgNjUwODcsIDY1MDkxLCA2NTA5NSwgCi0gICAgNjUwOTksIDY1MTAzLCA2NTEwNywgNjUxMTEsIDY1MTE1LCA2NTExOSwgNjUxMjMsIDY1MTI3LCA2NTEzMSwgNjUxMzUsIAotICAgIDY1MTM5LCA2NTE0MywgNjUxNDcsIDY1MTUxLCA2NTE1NSwgNjUxNTksIDY1MTYzLCA2NTE2NywgNjUxNzEsIDY1MTc1LCAKLSAgICA2NTE3OSwgNjUxODMsIDY1MTg3LCA2NTE5MSwgNjUxOTUsIDY1MTk5LCA2NTIwMywgNjUyMDcsIDY1MjExLCA2NTIxNSwgCi0gICAgNjUyMTksIDY1MjIzLCA2NTIyNywgNjUyMzEsIDY1MjM1LCA2NTIzOSwgNjUyNDMsIDY1MjQ3LCA2NTI1MSwgNjUyNTUsIAotICAgIDY1MjU5LCA2NTI2MywgNjUyNjcsIDY1MjcxLCA2NTI3NSwgNjUyNzksIDY1MjgzLCA2NTI4NywgNjUyOTEsIDY1Mjk1LCAKLSAgICA2NTI5OSwgNjUzMDMsIDY1MzA3LCA2NTMxMSwgNjUzMTUsIDY1MzE4LCA2NTMyMiwgNjUzMjYsIDY1MzMwLCA2NTMzNCwgCi0gICAgNjUzMzgsIDY1MzQyLCA2NTM0NiwgNjUzNTAsIDY1MzU0LCA2NTM1OCwgNjUzNjIsIDY1MzY2LCA2NTM3MCwgNjUzNzQsIAotICAgIDY1Mzc4LCA2NTM4MiwgNjUzODYsIDY1MzkwLCA2NTM5NCwgNjUzOTgsIDY1NDAyLCA2NTQwNiwgNjU0MTAsIDY1NDE0LCAKLSAgICA2NTQxOCwgNjU0MjIsIDY1NDI2LCA2NTQzMCwgNjU0MzQsIDY1NDM4LCA2NTQ0MiwgNjU0NDYsIDY1NDUwLCA2NTQ1NCwgCi0gICAgNjU0NTgsIDY1NDYyLCA2NTQ2NiwgNjU0NzAsIDY1NDc0LCA2NTQ3OCwgNjU0ODIsIDY1NDg2LCA2NTQ5MCwgNjU0OTQsIAotICAgIDY1NDk4LCA2NTUwMiwgNjU1MDYsIDY1NTEwLCA2NTUxNCwgNjU1MTgsIDY1NTIyLCA2NTUyNiwgNjU1MzAsIDY1NTM0LCAKLSAgICA2NTUzOCwgNjU1NDIsIDY1NTQ2LCA2NTU1MCwgNjU1NTQsIDY1NTU4LCA2NTU2MiwgNjU1NjYsIDY1NTcwLCA2NTU3NCwgCi0gICAgNjU1NzgsIDY1NTgyLCA2NTU4NiwgNjU1OTAsIDY1NTk0LCA2NTU5OCwgNjU2MDIsIDY1NjA2LCA2NTYxMCwgNjU2MTQsIAotICAgIDY1NjE4LCA2NTYyMiwgNjU2MjYsIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgNjU2NTAsIDY1NjU0LCAKLSAgICA2NTY1OCwgNjU2NjIsIDY1NjY2LCA2NTY3MCwgNjU2NzQsIDY1Njc3LCA2NTY4MSwgNjU2ODUsIDY1Njg5LCA2NTY5MywgCi0gICAgNjU2OTcsIDY1NzAxLCA2NTcwNSwgNjU3MDksIDY1NzEzLCA2NTcxNywgNjU3MjEsIDY1NzI1LCA2NTcyOSwgNjU3MzMsIAotICAgIDY1NzM3LCA2NTc0MSwgNjU3NDUsIDY1NzQ5LCA2NTc1MywgNjU3NTcsIDY1NzYxLCA2NTc2NSwgNjU3NjksIDY1NzczLCAKLSAgICA2NTc3NywgNjU3ODEsIDY1Nzg1LCA2NTc4OSwgNjU3OTMsIDY1Nzk3LCA2NTgwMSwgNjU4MDUsIDY1ODA5LCA2NTgxMywgCi0gICAgNjU4MTcsIDY1ODIxLCA2NTgyNSwgNjU4MjksIDY1ODMzLCA2NTgzNywgNjU4NDEsIDY1ODQ1LCA2NTg0OSwgNjU4NTMsIAotICAgIDY1ODU3LCA2NTg2MSwgNjU4NjUsIDY1ODY5LCA2NTg3MywgNjU4NzcsIDY1ODgxLCA2NTg4NSwgNjU4ODksIDY1ODkzLCAKLSAgICA2NTg5NywgNjU5MDEsIDY1OTA1LCA2NTkwOSwgNjU5MTMsIDY1OTE3LCA2NTkyMSwgNjU5MjUsIDY1OTI5LCA2NTkzMywgCi0gICAgNjU5MzcsIDY1OTQxLCA2NTk0NSwgNjU5NDksIDY1OTUzLCA2NTk1NywgNjU5NjEsIDY1OTY1LCA2NTk2OSwgNjU5NzMsIAotICAgIDY1OTc3LCA2NTk4MSwgNjU5ODUsIDY1OTg5LCA2NTk5MywgNjU5OTcsIDY2MDAxLCA2NjAwNSwgNjYwMDksIDY2MDEzLCAKLSAgICA2NjAxNywgNjYwMjEsIDY2MDI1LCA2NjAyOSwgNjYwMzMsIDY2MDM3LCA2NjA0MSwgNjYwNDUsIDY2MDQ5LCA2NjA1MywgCi0gICAgNjYwNTcsIDY2MDYxLCA2NjA2NSwgNjYwNjksIDY2MDczLCA2NjA3NywgNjYwODEsIDY2MDg1LCA2NjA4OSwgNjYwOTMsIAotICAgIDY2MDk3LCA2NjEwMSwgNjYxMDUsIDY2MTA5LCA2NjExMywgNjYxMTcsIDY2MTIxLCA2NjEyNSwgNjYxMjksIDY2MTMzLCAKLSAgICA2NjEzNywgNjYxNDEsIDY2MTQ1LCA2NjE0OSwgNjYxNTMsIDY2MTU3LCA2NjE2MSwgNjYxNjUsIDY2MTY5LCA2NjE3MiwgCi0gICAgNjYxNzYsIDY2MTgwLCA2NjE4NCwgNjYxODgsIDY2MTkyLCA2NjE5NiwgNjYyMDAsIDY2MjA0LCA2NjIwOCwgNjYyMTIsIAotICAgIDY2MjE2LCA2NjIyMCwgNjYyMjQsIDY2MjI4LCA2NjIzMiwgNjYyMzYsIDY2MjQwLCA2NjI0NCwgNjYyNDgsIDY2MjUyLCAKLSAgICA2NjI1NiwgNjYyNjAsIDY2MjY0LCA2NjI2OCwgNjYyNzIsIDY2Mjc2LCA2NjI4MCwgNjYyODQsIDY2Mjg4LCA2NjI5MiwgCi0gICAgNjYyOTYsIDY2MzAwLCA2NjMwNCwgNjYzMDgsIDY2MzEyLCA2NjMxNiwgNjYzMjAsIDY2MzI0LCA2NjMyOCwgNjYzMzIsIAotICAgIDY2MzM2LCA2NjM0MCwgNjYzNDQsIDY2MzQ4LCA2NjM1MiwgNjYzNTYsIDY2MzYwLCA2NjM2NCwgNjYzNjgsIDY2MzcyLCAKLSAgICA2NjM3NiwgNjYzODAsIDY2Mzg0LCA2NjM4OCwgNjYzOTIsIDY2Mzk2LCA2NjQwMCwgNjY0MDQsIDY2NDA4LCA2NjQxMiwgCi0gICAgNjY0MTYsIDY2NDIwLCA2NjQyNCwgNjY0MjgsIDY2NDMyLCA2NjQzNiwgNjY0NDAsIDY2NDQ0LCA2NjQ0OCwgNjY0NTIsIAotICAgIDY2NDU2LCA2NjQ2MCwgNjY0NjQsIDY2NDY4LCA2NjQ3MiwgNjY0NzYsIDY2NDgwLCA2NjQ4NCwgNjY0ODgsIDY2NDkyLCAKLSAgICA2NjQ5NiwgNjY1MDAsIDY2NTA0LCA2NjUwOCwgNjY1MTIsIDY2NTE2LCA2NjUyMCwgNjY1MjQsIDY2NTI4LCA2NjUzMiwgCi0gICAgNjY1MzYsIDY2NTQwLCA2NjU0NCwgNjY1NDgsIDY2NTUyLCA2NjU1NiwgNjY1NjAsIDY2NTY0LCA2NjU2OCwgNjY1NzIsIAotICAgIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg4LCA2NjU5MiwgNjY1OTYsIDY2NjAwLCA2NjYwNCwgNjY2MDgsIDY2NjEyLCAKLSAgICA2NjYxNiwgNjY2MjAsIDY2NjI0LCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIDY2NjQ3LCA2NjY1MSwgCi0gICAgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCA2NjY4NywgNjY2OTEsIAotICAgIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgNjY3MjcsIDY2NzMxLCAKLSAgICA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIDY2NzY3LCA2Njc3MSwgCi0gICAgNjY3NzUsIDY2Nzc5LCA2Njc4MywgNjY3ODcsIDY2NzkxLCA2Njc5NSwgNjY3OTksIDY2ODAzLCA2NjgwNywgNjY4MTEsIAotICAgIDY2ODE1LCA2NjgxOSwgNjY4MjMsIDY2ODI3LCA2NjgzMSwgNjY4MzUsIDY2ODM5LCA2Njg0MywgNjY4NDcsIDY2ODUxLCAKLSAgICA2Njg1NSwgNjY4NTksIDY2ODYzLCA2Njg2NywgNjY4NzEsIDY2ODc1LCA2Njg3OSwgNjY4ODMsIDY2ODg3LCA2Njg5MSwgCi0gICAgNjY4OTUsIDY2ODk5LCA2NjkwMywgNjY5MDcsIDY2OTExLCA2NjkxNSwgNjY5MTksIDY2OTIzLCA2NjkyNywgNjY5MzEsIAotICAgIDY2OTM1LCA2NjkzOSwgNjY5NDMsIDY2OTQ3LCA2Njk1MSwgNjY5NTUsIDY2OTU5LCA2Njk2MywgNjY5NjcsIDY2OTcxLCAKLSAgICA2Njk3NSwgNjY5NzksIDY2OTgzLCA2Njk4NywgNjY5OTEsIDY2OTk1LCA2Njk5OSwgNjcwMDMsIDY3MDA3LCA2NzAxMSwgCi0gICAgNjcwMTUsIDY3MDE5LCA2NzAyMywgNjcwMjcsIDY3MDMxLCA2NzAzNSwgNjcwMzksIDY3MDQzLCA2NzA0NywgNjcwNTEsIAotICAgIDY3MDU1LCA2NzA1OSwgNjcwNjMsIDY3MDY3LCA2NzA3MSwgNjcwNzUsIDY3MDc5LCA2NzA4MywgNjcwODcsIDY3MDkxLCAKLSAgICA2NzA5NSwgNjcwOTksIDY3MTAzLCA2NzEwNywgNjcxMTEsIDY3MTE1LCA2NzExOSwgNjcxMjMsIDY3MTI3LCA2NzEzMSwgCi0gICAgNjcxMzUsIDY3MTM5LCA2NzE0MywgNjcxNDcsIDY3MTUxLCA2NzE1NSwgNjcxNTksIDY3MTYzLCA2NzE2NywgNjcxNzEsIAotICAgIDY3MTc1LCA2NzE3OSwgNjcxODMsIDY3MTg3LCA2NzE5MSwgNjcxOTUsIDY3MTk5LCA2NzIwMywgNjcyMDcsIDY3MjExLCAKLSAgICA2NzIxNSwgNjcyMTksIDY3MjIzLCA2NzIyNywgNjcyMzAsIDY3MjM0LCA2NzIzOCwgNjcyNDIsIDY3MjQ2LCA2NzI1MCwgCi0gICAgNjcyNTQsIDY3MjU4LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCA2NzI4NSwgNjcyODksIAotICAgIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgNjczMjUsIDY3MzI5LCAKLSAgICA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIDY3MzY1LCA2NzM2OSwgCi0gICAgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCA2NzQwNSwgNjc0MDksIAotICAgIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgNjc0NDUsIDY3NDQ5LCAKLSAgICA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIDY3NDg1LCA2NzQ4OSwgCi0gICAgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCA2NzUyNSwgNjc1MjksIAotICAgIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgNjc1NjUsIDY3NTY5LCAKLSAgICA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIDY3NjA1LCA2NzYwOSwgCi0gICAgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCA2NzY0NSwgNjc2NDksIAotICAgIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgNjc2ODUsIDY3Njg5LCAKLSAgICA2NzY5MywgNjc2OTcsIDY3NzAxLCA2NzcwNSwgNjc3MDksIDY3NzEzLCA2NzcxNywgNjc3MjEsIDY3NzI1LCA2NzcyOSwgCi0gICAgNjc3MzMsIDY3NzM3LCA2Nzc0MSwgNjc3NDUsIDY3NzQ5LCA2Nzc1MywgNjc3NTcsIDY3NzYxLCA2Nzc2NSwgNjc3NjksIAotICAgIDY3NzczLCA2Nzc3NywgNjc3ODEsIDY3Nzg1LCA2Nzc4OSwgNjc3OTMsIDY3Nzk3LCA2NzgwMSwgNjc4MDUsIDY3ODA5LCAKLSAgICA2NzgxMywgNjc4MTcsIDY3ODIxLCA2NzgyNSwgNjc4MjksIDY3ODMzLCA2NzgzNywgNjc4NDEsIDY3ODQ1LCA2Nzg0OSwgCi0gICAgNjc4NTMsIDY3ODU3LCA2Nzg2MSwgNjc4NjUsIDY3ODY5LCA2Nzg3MywgNjc4NzcsIDY3ODgxLCA2Nzg4NSwgNjc4ODksIAotICAgIDY3ODkzLCA2Nzg5NywgNjc5MDEsIDY3OTA1LCA2NzkwOSwgNjc5MTMsIDY3OTE3LCA2NzkyMSwgNjc5MjUsIDY3OTI5LCAKLSAgICA2NzkzMywgNjc5MzcsIDY3OTQxLCA2Nzk0NSwgNjc5NDksIDY3OTUzLCA2Nzk1NywgNjc5NjEsIDY3OTY1LCA2Nzk2OSwgCi0gICAgNjc5NzMsIDY3OTc3LCA2Nzk4MSwgNjc5ODUsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCA2ODAwNCwgNjgwMDgsIAotICAgIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgNjgwNDQsIDY4MDQ4LCAKLSAgICA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIDY4MDg0LCA2ODA4OCwgCi0gICAgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCA2ODEyNCwgNjgxMjgsIAotICAgIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgNjgxNjQsIDY4MTY4LCAKLSAgICA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIDY4MjA0LCA2ODIwOCwgCi0gICAgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCA2ODI0NCwgNjgyNDgsIAotICAgIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgNjgyODQsIDY4Mjg4LCAKLSAgICA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIDY4MzI0LCA2ODMyOCwgCi0gICAgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCA2ODM2NCwgNjgzNjgsIAotICAgIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgNjg0MDQsIDY4NDA4LCAKLSAgICA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIDY4NDQ0LCA2ODQ0OCwgCi0gICAgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCA2ODQ4NCwgNjg0ODgsIAotICAgIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgNjg1MjQsIDY4NTI4LCAKLSAgICA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NiwgNjg1NjAsIDY4NTY0LCA2ODU2OCwgCi0gICAgNjg1NzIsIDY4NTc2LCA2ODU4MCwgNjg1ODQsIDY4NTg4LCA2ODU5MiwgNjg1OTYsIDY4NjAwLCA2ODYwNCwgNjg2MDgsIAotICAgIDY4NjEyLCA2ODYxNiwgNjg2MjAsIDY4NjI0LCA2ODYyOCwgNjg2MzIsIDY4NjM2LCA2ODY0MCwgNjg2NDQsIDY4NjQ4LCAKLSAgICA2ODY1MiwgNjg2NTYsIDY4NjYwLCA2ODY2NCwgNjg2NjgsIDY4NjcyLCA2ODY3NiwgNjg2ODAsIDY4Njg0LCA2ODY4OCwgCi0gICAgNjg2OTIsIDY4Njk2LCA2ODcwMCwgNjg3MDQsIDY4NzA4LCA2ODcxMiwgNjg3MTYsIDY4NzIwLCA2ODcyNCwgNjg3MjgsIAotICAgIDY4NzMyLCA2ODczNiwgNjg3NDAsIDY4NzQ0LCA2ODc0OCwgNjg3NTIsIDY4NzU2LCA2ODc2MCwgNjg3NjQsIDY4NzY4LCAwLCAKLSAgICAwLCAwLCA2ODc3MiwgNjg3NzYsIDY4NzgwLCA2ODc4NCwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgNjg4MDAsIDY4ODA0LCAKLSAgICA2ODgwOCwgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI4LCA2ODgzMiwgNjg4MzYsIDY4ODQwLCA2ODg0NCwgCi0gICAgNjg4NDgsIDY4ODUyLCA2ODg1NiwgNjg4NjAsIDY4ODY0LCA2ODg2OCwgNjg4NzIsIDY4ODc2LCA2ODg4MCwgNjg4ODQsIAotICAgIDY4ODg4LCA2ODg5MiwgNjg4OTYsIDY4OTAwLCA2ODkwNCwgNjg5MDgsIDY4OTEyLCA2ODkxNiwgNjg5MjAsIDY4OTI0LCAKLSAgICA2ODkyOCwgNjg5MzIsIDY4OTM2LCA2ODk0MCwgNjg5NDQsIDY4OTQ4LCA2ODk1MiwgNjg5NTYsIDY4OTYwLCA2ODk2NCwgCi0gICAgNjg5NjgsIDY4OTcyLCA2ODk3NiwgNjg5ODAsIDY4OTg0LCA2ODk4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjg5OTIsIDY4OTk3LCA2OTAwMSwgNjkwMDYsIDY5MDExLCA2OTAxNiwgNjkwMjEsIDY5MDI2LCA2OTAzMCwgNjkwMzUsIAotICAgIDY5MDQwLCA2OTA0NSwgNjkwNTAsIDY5MDU1LCA2OTA2MCwgNjkwNjUsIDY5MDY5LCA2OTA3MywgNjkwNzgsIDY5MDgyLCAKLSAgICA2OTA4NywgNjkwOTIsIDY5MDk3LCA2OTEwMSwgNjkxMDYsIDY5MTExLCA2OTExNiwgNjkxMjEsIDY5MTI2LCA2OTEzMCwgCi0gICAgNjkxMzUsIDY5MTM5LCA2OTE0NCwgNjkxNDgsIDY5MTUzLCA2OTE1NywgNjkxNjEsIDY5MTY1LCA2OTE3MCwgNjkxNzUsIAotICAgIDY5MTgwLCA2OTE4OCwgNjkxOTYsIDY5MjA0LCA2OTIxMiwgNjkyMTksIDY5MjI3LCA2OTIzMywgNjkyNDEsIDY5MjQ1LCAKLSAgICA2OTI0OSwgNjkyNTMsIDY5MjU3LCA2OTI2MSwgNjkyNjUsIDY5MjY5LCA2OTI3MywgNjkyNzcsIDY5MjgxLCA2OTI4NSwgCi0gICAgNjkyODksIDY5MjkzLCA2OTI5NywgNjkzMDEsIDY5MzA1LCA2OTMwOSwgNjkzMTMsIDY5MzE3LCA2OTMyMSwgNjkzMjUsIAotICAgIDY5MzI5LCA2OTMzMywgNjkzMzcsIDY5MzQxLCA2OTM0NSwgNjkzNDksIDY5MzUzLCA2OTM1NywgNjkzNjEsIDY5MzY1LCAKLSAgICA2OTM2OSwgNjkzNzMsIDY5Mzc3LCA2OTM4MSwgNjkzODUsIDY5Mzg4LCA2OTM5MiwgNjkzOTYsIDY5NDAwLCA2OTQwNCwgCi0gICAgNjk0MDgsIDY5NDEyLCA2OTQxNiwgNjk0MjAsIDY5NDI0LCA2OTQyOCwgNjk0MzIsIDY5NDM2LCA2OTQ0MCwgNjk0NDQsIAotICAgIDY5NDQ4LCA2OTQ1MiwgNjk0NTYsIDY5NDYwLCA2OTQ2NCwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgNjk0ODAsIDY5NDg0LCAKLSAgICA2OTQ4OCwgNjk0OTIsIDY5NDk2LCA2OTUwMCwgNjk1MDQsIDY5NTA4LCA2OTUxMiwgNjk1MTYsIDY5NTIwLCA2OTUyNCwgCi0gICAgNjk1MjgsIDY5NTMyLCA2OTUzNSwgNjk1MzksIDY5NTQzLCA2OTU0NiwgNjk1NTAsIDY5NTU0LCA2OTU1OCwgNjk1NjEsIAotICAgIDY5NTY1LCA2OTU2OSwgNjk1NzMsIDY5NTc3LCA2OTU4MSwgNjk1ODUsIDY5NTg5LCA2OTU5MywgNjk1OTcsIDY5NjAxLCAKLSAgICA2OTYwNSwgNjk2MDksIDY5NjEzLCA2OTYxNywgNjk2MjAsIDY5NjI0LCA2OTYyOCwgNjk2MzEsIDY5NjM1LCA2OTYzOSwgCi0gICAgNjk2NDMsIDY5NjQ3LCA2OTY1MSwgNjk2NTUsIDY5NjU4LCA2OTY2MSwgNjk2NjUsIDY5NjY5LCA2OTY3MywgNjk2NzYsIAotICAgIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIDY5NzAzLCA2OTcwNywgNjk3MTEsIDY5NzE1LCAKLSAgICA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCA2OTc0MywgNjk3NDcsIDY5NzUxLCA2OTc1NSwgCi0gICAgNjk3NTksIDY5NzYzLCA2OTc2NywgNjk3NzEsIDY5Nzc1LCA2OTc3OSwgNjk3ODMsIDY5Nzg3LCA2OTc5MSwgNjk3OTUsIAotICAgIDY5Nzk5LCA2OTgwMywgNjk4MDcsIDY5ODExLCA2OTgxNSwgNjk4MTksIDY5ODIzLCA2OTgyNywgNjk4MzAsIDY5ODM0LCAKLSAgICA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCA2OTg2MiwgNjk4NjYsIDY5ODcwLCA2OTg3NCwgCi0gICAgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgNjk5MDIsIDY5OTA2LCA2OTkxMCwgNjk5MTQsIAotICAgIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIDY5OTQyLCA2OTk0NiwgNjk5NTAsIDY5OTU0LCAKLSAgICA2OTk1OCwgNjk5NjIsIDY5OTY2LCA2OTk3MCwgNjk5NzQsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIDY5OTg5LCA2OTk5MywgCi0gICAgNjk5OTcsIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNywgNzAwMjEsIDcwMDI1LCA3MDAyOSwgNzAwMzMsIAotICAgIDcwMDM3LCA3MDA0MSwgNzAwNDQsIDcwMDQ4LCA3MDA1MiwgNzAwNTYsIDcwMDYwLCA3MDA2NCwgNzAwNjgsIDcwMDcyLCAKLSAgICA3MDA3NiwgNzAwODAsIDcwMDg0LCA3MDA4OCwgNzAwOTIsIDcwMDk2LCA3MDEwMCwgNzAxMDQsIDcwMTA4LCA3MDExMiwgCi0gICAgNzAxMTYsIDcwMTIwLCA3MDEyNCwgNzAxMjgsIDcwMTMxLCA3MDEzNSwgNzAxMzksIDcwMTQzLCA3MDE0NywgNzAxNTEsIAotICAgIDcwMTU1LCA3MDE1OSwgNzAxNjMsIDcwMTY3LCA3MDE3MSwgNzAxNzUsIDcwMTc5LCA3MDE4MywgNzAxODcsIDcwMTkxLCAKLSAgICA3MDE5NSwgNzAxOTksIDcwMjAzLCA3MDIwNywgNzAyMTEsIDcwMjE1LCA3MDIxOSwgNzAyMjMsIDcwMjI3LCA3MDIzMSwgCi0gICAgNzAyMzUsIDcwMjM5LCA3MDI0MywgNzAyNDcsIDcwMjUxLCA3MDI1NSwgNzAyNTksIDcwMjYzLCA3MDI2NywgNzAyNzEsIAotICAgIDcwMjc1LCA3MDI3OSwgNzAyODMsIDcwMjg3LCA3MDI5MSwgNzAyOTUsIDcwMjk5LCA3MDMwMywgNzAzMDYsIDcwMzExLCAKLSAgICA3MDMxNSwgNzAzMjEsIDcwMzI2LCA3MDMzMiwgNzAzMzYsIDcwMzQwLCA3MDM0NCwgNzAzNDgsIDcwMzUyLCA3MDM1NiwgCi0gICAgNzAzNjAsIDcwMzY0LCA3MDM2OCwgNzAzNzIsIDcwMzc2LCA3MDM4MCwgNzAzODQsIDcwMzg4LCA3MDM5MSwgNzAzOTQsIAotICAgIDcwMzk3LCA3MDQwMCwgNzA0MDMsIDcwNDA2LCA3MDQwOSwgNzA0MTIsIDcwNDE1LCA3MDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzA0MjYsIDcwNDMxLCA3MDQzNiwgNzA0NDEsIAotICAgIDcwNDQ2LCA3MDQ1MywgNzA0NjAsIDcwNDY1LCA3MDQ3MCwgNzA0NzUsIDcwNDgwLCA3MDQ4NywgNzA0OTQsIDcwNTAxLCAKLSAgICA3MDUwOCwgNzA1MTUsIDcwNTIyLCA3MDUzMiwgNzA1NDIsIDcwNTQ5LCA3MDU1NiwgNzA1NjMsIDcwNTcwLCA3MDU3NiwgCi0gICAgNzA1ODIsIDcwNTkxLCA3MDYwMCwgNzA2MDcsIDcwNjE0LCA3MDYyNSwgNzA2MzYsIDcwNjQxLCA3MDY0NiwgNzA2NTMsIAotICAgIDcwNjYwLCA3MDY2NywgNzA2NzQsIDcwNjgxLCA3MDY4OCwgNzA2OTUsIDcwNzAyLCA3MDcwOCwgNzA3MTQsIDcwNzIwLCAKLSAgICA3MDcyNiwgNzA3MzMsIDcwNzQwLCA3MDc0NSwgNzA3NDksIDcwNzU2LCA3MDc2MywgNzA3NzAsIDcwNzc0LCA3MDc4MSwgCi0gICAgNzA3ODUsIDcwNzkwLCA3MDc5NCwgNzA4MDAsIDcwODA1LCA3MDgxMSwgNzA4MTYsIDcwODIwLCA3MDgyNCwgNzA4MjcsIAotICAgIDcwODMwLCA3MDgzNSwgNzA4NDAsIDcwODQ1LCA3MDg1MCwgNzA4NTUsIDcwODYwLCA3MDg2NSwgNzA4NzAsIDcwODc1LCAKLSAgICA3MDg4MCwgNzA4ODksIDcwODk4LCA3MDkwMywgNzA5MDgsIDcwOTEzLCA3MDkxOCwgNzA5MjMsIDcwOTI4LCA3MDkzMywgCi0gICAgNzA5MzgsIDcwOTQzLCA3MDk0OCwgNzA5NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcwOTU4LCA3MDk2NCwgNzA5NjcsIAotICAgIDcwOTcwLCA3MDk3MywgNzA5NzcsIDcwOTgxLCA3MDk4NSwgNzA5ODksIDcwOTkyLCA3MDk5NiwgNzA5OTksIDcxMDAzLCAKLSAgICA3MTAwNiwgNzEwMTAsIDcxMDE0LCA3MTAxOCwgNzEwMjIsIDcxMDI2LCA3MTAzMCwgNzEwMzQsIDcxMDM3LCA3MTA0MSwgCi0gICAgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgNzEwODEsIAotICAgIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk2LCA3MTEwMCwgNzExMDQsIDcxMTA4LCA3MTExMiwgNzExMTYsIDcxMTIwLCAKLSAgICA3MTEyNCwgNzExMjgsIDcxMTMyLCA3MTEzNiwgNzExNDAsIDcxMTQ0LCA3MTE0OCwgNzExNTIsIDcxMTU2LCA3MTE2MCwgCi0gICAgNzExNjQsIDcxMTY4LCA3MTE3MiwgNzExNzYsIDcxMTgwLCA3MTE4NCwgNzExODgsIDcxMTkyLCA3MTE5NSwgNzExOTksIAotICAgIDcxMjAzLCA3MTIwNywgNzEyMTEsIDcxMjE1LCA3MTIxOSwgNzEyMjMsIDcxMjI2LCA3MTIzMCwgNzEyMzQsIDcxMjM4LCAKLSAgICA3MTI0MiwgNzEyNDYsIDcxMjUwLCA3MTI1NCwgNzEyNTgsIDcxMjYyLCA3MTI2NiwgNzEyNzAsIDcxMjc0LCA3MTI3OSwgCi0gICAgNzEyODQsIDcxMjg3LCA3MTI5MiwgNzEyOTUsIDcxMjk4LCA3MTMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEzMDUsIAotICAgIDcxMzE0LCA3MTMyMywgNzEzMzIsIDcxMzQxLCA3MTM1MCwgNzEzNTksIDcxMzY4LCA3MTM3NywgNzEzODUsIDcxMzkyLCAKLSAgICA3MTQwMCwgNzE0MDcsIDcxNDE1LCA3MTQyNSwgNzE0MzQsIDcxNDQ0LCA3MTQ1MywgNzE0NjMsIDcxNDcxLCA3MTQ3OCwgCi0gICAgNzE0ODYsIDcxNDkzLCA3MTUwMSwgNzE1MDYsIDcxNTExLCA3MTUxNiwgNzE1MjUsIDcxNTMxLCA3MTUzNywgNzE1NDQsIAotICAgIDcxNTUzLCA3MTU2MSwgNzE1NjksIDcxNTc3LCA3MTU4NCwgNzE1OTEsIDcxNTk4LCA3MTYwNSwgNzE2MTAsIDcxNjE1LCAKLSAgICA3MTYyMCwgNzE2MjUsIDcxNjMwLCA3MTYzNSwgNzE2NDAsIDcxNjQ1LCA3MTY1MywgNzE2NjEsIDcxNjY3LCA3MTY3MywgCi0gICAgNzE2NzgsIDcxNjgzLCA3MTY4OCwgNzE2OTMsIDcxNjk4LCA3MTcwMywgNzE3MDgsIDcxNzEzLCA3MTcyMSwgNzE3MjksIAotICAgIDcxNzM0LCA3MTczOSwgNzE3NDksIDcxNzU5LCA3MTc2NiwgNzE3NzMsIDcxNzgyLCA3MTc5MSwgNzE4MDMsIDcxODE1LCAKLSAgICA3MTgyMSwgNzE4MjcsIDcxODM1LCA3MTg0MywgNzE4NTMsIDcxODYzLCA3MTg3MCwgNzE4NzcsIDcxODgyLCA3MTg4NywgCi0gICAgNzE4OTksIDcxOTExLCA3MTkxOSwgNzE5MjcsIDcxOTM3LCA3MTk0NywgNzE5NTksIDcxOTcxLCA3MTk4MCwgNzE5ODksIAotICAgIDcxOTk2LCA3MjAwMywgNzIwMTAsIDcyMDE3LCA3MjAyNiwgNzIwMzUsIDcyMDQwLCA3MjA0NSwgNzIwNTIsIDcyMDU5LCAKLSAgICA3MjA2NiwgNzIwNzMsIDcyMDg1LCA3MjA5NywgNzIxMDIsIDcyMTA3LCA3MjExMiwgNzIxMTcsIDcyMTIyLCA3MjEyNywgCi0gICAgNzIxMzIsIDcyMTM3LCA3MjE0MSwgNzIxNDYsIDcyMTUxLCA3MjE1NiwgNzIxNjEsIDcyMTY2LCA3MjE3MiwgNzIxNzcsIAotICAgIDcyMTgyLCA3MjE4OSwgNzIxOTYsIDcyMjAzLCA3MjIxMCwgNzIyMTcsIDcyMjI2LCA3MjIzNSwgNzIyNDEsIDcyMjQ3LCAKLSAgICA3MjI1MywgNzIyNTksIDcyMjY2LCA3MjI3MywgNzIyODAsIDcyMjg3LCA3MjI5NCwgNzIyOTgsIDcyMzA1LCA3MjMxMCwgCi0gICAgNzIzMTUsIDcyMzIyLCAwLCA3MjMzNSwgNzIzNDMsIDcyMzUxLCA3MjM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzIzNjUsIDcyMzc0LCA3MjM4MywgNzIzOTIsIDcyNDAxLCA3MjQxMCwgNzI0MTksIDcyNDI4LCA3MjQzNywgCi0gICAgNzI0NDYsIDcyNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjQ2MiwgNzI0NjksIDcyNDc1LCA3MjQ4MiwgNzI0OTAsIDcyNDk4LCAKLSAgICA3MjUwNSwgNzI1MTMsIDcyNTIwLCA3MjUyNiwgNzI1MzIsIDcyNTM5LCA3MjU0NSwgNzI1NTEsIDcyNTU3LCA3MjU2NCwgCi0gICAgNzI1NzEsIDcyNTc4LCA3MjU4NSwgNzI1OTIsIDcyNTk5LCA3MjYwNiwgNzI2MTMsIDcyNjIwLCA3MjYyNywgNzI2MzQsIAotICAgIDcyNjQxLCA3MjY0OCwgNzI2NTUsIDcyNjYxLCA3MjY2OCwgNzI2NzUsIDcyNjgyLCA3MjY4OSwgNzI2OTYsIDcyNzAzLCAKLSAgICA3MjcxMCwgNzI3MTcsIDcyNzI0LCA3MjczMSwgNzI3MzgsIDcyNzQ1LCA3Mjc1MiwgNzI3NTksIDcyNzY2LCA3Mjc3MywgCi0gICAgNzI3ODAsIDcyNzg3LCA3Mjc5NSwgNzI4MDMsIDcyODExLCA3MjgxOSwgMCwgMCwgMCwgMCwgNzI4MjcsIDcyODM2LCAKLSAgICA3Mjg0NSwgNzI4NTQsIDcyODYzLCA3Mjg3MiwgNzI4ODEsIDcyODg4LCA3Mjg5NSwgNzI5MDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcyOTA5LCA3MjkxMywgNzI5MTgsIDcyOTIzLCA3MjkyOCwgNzI5MzMsIDcyOTM4LCA3Mjk0MywgNzI5NDgsIDcyOTUzLCAKLSAgICA3Mjk1OCwgNzI5NjMsIDcyOTY3LCA3Mjk3MSwgNzI5NzYsIDcyOTgxLCA3Mjk4NSwgNzI5OTAsIDcyOTk1LCA3MzAwMCwgCi0gICAgNzMwMDUsIDczMDEwLCA3MzAxNSwgNzMwMjAsIDczMDI0LCA3MzAyOCwgNzMwMzMsIDczMDM4LCA3MzA0MiwgNzMwNDYsIAotICAgIDczMDUwLCA3MzA1NCwgNzMwNTgsIDczMDYyLCA3MzA2NiwgNzMwNzEsIDczMDc2LCA3MzA4MSwgNzMwODYsIDczMDkxLCAKLSAgICA3MzA5OCwgNzMxMDQsIDczMTA5LCA3MzExNCwgNzMxMTksIDczMTI0LCA3MzEzMCwgNzMxMzcsIDczMTQzLCA3MzE1MCwgCi0gICAgNzMxNTYsIDczMTYyLCA3MzE2NywgNzMxNzQsIDczMTgwLCA3MzE4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzMxOTEsIAotICAgIDczMTk1LCA3MzE5OSwgNzMyMDIsIDczMjA2LCA3MzIwOSwgNzMyMTMsIDczMjE2LCA3MzIyMCwgNzMyMjQsIDczMjI5LCAKLSAgICA3MzIzMywgNzMyMzgsIDczMjQxLCA3MzI0NSwgNzMyNDksIDczMjUyLCA3MzI1NiwgNzMyNjAsIDczMjYzLCA3MzI2NywgCi0gICAgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCA3MzMwMywgNzMzMDcsIAotICAgIDczMzExLCA3MzMxNSwgNzMzMTksIDczMzIzLCA3MzMyNywgNzMzMzEsIDczMzM1LCA3MzMzOCwgNzMzNDEsIDczMzQ1LCAKLSAgICA3MzM0OSwgNzMzNTMsIDczMzU2LCA3MzM1OSwgNzMzNjIsIDczMzY2LCA3MzM3MCwgNzMzNzQsIDczMzc4LCA3MzM4MSwgCi0gICAgNzMzODQsIDczMzg4LCA3MzM5MywgNzMzOTgsIDczNDAyLCA3MzQwNywgNzM0MTEsIDczNDE2LCA3MzQyMSwgNzM0MjcsIAotICAgIDczNDMyLCA3MzQzOCwgNzM0NDIsIDczNDQ3LCA3MzQ1MiwgNzM0NTYsIDczNDYxLCA3MzQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzM0NzAsIDczNDczLCA3MzQ3NywgNzM0ODEsIDczNDg0LCA3MzQ4NywgNzM0OTAsIDczNDkzLCA3MzQ5NiwgCi0gICAgNzM0OTksIDczNTAyLCA3MzUwNSwgMCwgMCwgMCwgMCwgMCwgMCwgNzM1MDgsIDczNTEzLCA3MzUxNywgNzM1MjEsIDczNTI1LCAKLSAgICA3MzUyOSwgNzM1MzMsIDczNTM3LCA3MzU0MSwgNzM1NDUsIDczNTQ5LCA3MzU1MywgNzM1NTcsIDczNTYxLCA3MzU2NSwgCi0gICAgNzM1NjksIDczNTczLCA3MzU3OCwgNzM1ODMsIDczNTg5LCA3MzU5NSwgNzM2MDIsIDczNjA3LCA3MzYxMiwgNzM2MTgsIAotICAgIDczNjIyLCA3MzYyNywgNzM2MzAsIDAsIDAsIDAsIDAsIDczNjMzLCA3MzY0MCwgNzM2NDYsIDczNjUyLCA3MzY1OCwgCi0gICAgNzM2NjQsIDczNjcwLCA3MzY3NiwgNzM2ODIsIDczNjg4LCA3MzY5NCwgNzM3MDAsIDczNzA3LCA3MzcxNCwgNzM3MjEsIAotICAgIDczNzI3LCA3MzczNCwgNzM3NDEsIDczNzQ4LCA3Mzc1NSwgNzM3NjIsIDczNzY4LCA3Mzc3NCwgNzM3ODEsIDczNzg3LCAKLSAgICA3Mzc5NCwgNzM4MDEsIDczODA3LCA3MzgxMywgNzM4MjAsIDczODI3LCA3MzgzNCwgNzM4NDAsIDczODQ3LCA3Mzg1NCwgCi0gICAgNzM4NjAsIDczODY3LCA3Mzg3MywgNzM4ODAsIDczODg3LCA3Mzg5MywgNzM4OTksIDczOTA2LCA3MzkxMiwgNzM5MTksIAotICAgIDczOTI2LCA3MzkzNSwgNzM5NDIsIDczOTQ5LCA3Mzk1MywgNzM5NTgsIDczOTYzLCA3Mzk2OCwgNzM5NzMsIDczOTc3LCAKLSAgICA3Mzk4MSwgNzM5ODYsIDczOTkwLCA3Mzk5NSwgNzQwMDAsIDc0MDA1LCA3NDAwOSwgNzQwMTMsIDc0MDE4LCA3NDAyMiwgCi0gICAgNzQwMjcsIDc0MDMxLCA3NDAzNiwgNzQwNDEsIDc0MDQ2LCA3NDA1MSwgNzQwNTUsIDc0MDYwLCA3NDA2NSwgNzQwNzAsIAotICAgIDc0MDc2LCA3NDA4MSwgNzQwODcsIDc0MDkzLCA3NDA5OSwgNzQxMDUsIDc0MTExLCA3NDExNiwgNzQxMjIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0MTI2LCA3NDEzMSwgNzQxMzUsIDc0MTM5LCA3NDE0MywgNzQxNDcsIDc0MTUxLCAKLSAgICA3NDE1NSwgNzQxNTksIDc0MTYzLCA3NDE2NywgNzQxNzEsIDc0MTc1LCA3NDE3OSwgNzQxODMsIDc0MTg3LCA3NDE5MSwgCi0gICAgNzQxOTUsIDc0MTk5LCA3NDIwMywgNzQyMDcsIDc0MjExLCA3NDIxNSwgNzQyMTksIDc0MjIzLCA3NDIyNywgNzQyMzEsIAotICAgIDc0MjM1LCA3NDIzOSwgNzQyNDMsIDAsIDAsIDAsIDc0MjQ3LCA3NDI1MSwgNzQyNTUsIDc0MjU5LCA3NDI2MywgNzQyNjYsIAotICAgIDc0MjcyLCA3NDI3NSwgNzQyNzksIDc0MjgyLCA3NDI4OCwgNzQyOTQsIDc0MzAyLCA3NDMwNSwgNzQzMDksIDc0MzEyLCAKLSAgICA3NDMxNSwgNzQzMjEsIDc0MzI3LCA3NDMzMSwgNzQzMzcsIDc0MzQxLCA3NDM0NSwgNzQzNTEsIDc0MzU1LCA3NDM2MSwgCi0gICAgNzQzNjcsIDc0MzcxLCA3NDM3NSwgNzQzODEsIDc0Mzg1LCA3NDM5MSwgNzQzOTcsIDc0NDAxLCA3NDQwNywgNzQ0MTEsIAotICAgIDc0NDE3LCA3NDQyMCwgNzQ0MjMsIDc0NDI5LCA3NDQzMywgNzQ0MzksIDc0NDQyLCA3NDQ0NSwgNzQ0NDgsIDc0NDU0LCAKLSAgICA3NDQ1OCwgNzQ0NjIsIDc0NDY4LCA3NDQ3NCwgNzQ0NzcsIDc0NDgwLCA3NDQ4NiwgNzQ0OTEsIDc0NDk2LCA3NDUwMSwgCi0gICAgNzQ1MDgsIDc0NTEzLCA3NDUyMCwgNzQ1MjUsIDc0NTMyLCA3NDUzNywgNzQ1NDIsIDc0NTQ3LCA3NDU1MiwgNzQ1NTUsIAotICAgIDc0NTU5LCA3NDU2MywgNzQ1NjgsIDc0NTczLCA3NDU3OCwgNzQ1ODMsIDc0NTg4LCA3NDU5MywgNzQ1OTgsIDc0NjAzLCAKLSAgICA3NDYxMCwgNzQ2MTUsIDAsIDc0NjIyLCA3NDYyNSwgNzQ2MjksIDc0NjMyLCA3NDYzNSwgNzQ2MzgsIDc0NjQxLCA3NDY0NCwgCi0gICAgNzQ2NDcsIDc0NjUwLCA3NDY1MywgMCwgMCwgMCwgMCwgNzQ2NTYsIDc0NjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NDY2OCwgNzQ2NzEsIDc0Njc0LCA3NDY3NywgNzQ2ODAsIDc0Njg0LCA3NDY4NywgNzQ2OTAsIDc0Njk0LCA3NDY5OCwgCi0gICAgNzQ3MDIsIDc0NzA2LCA3NDcxMCwgNzQ3MTQsIDc0NzE4LCA3NDcyMiwgNzQ3MjYsIDc0NzMwLCA3NDczNCwgNzQ3MzgsIAotICAgIDc0NzQyLCA3NDc0NiwgNzQ3NTAsIDc0NzU0LCA3NDc1OCwgNzQ3NjEsIDc0NzY1LCA3NDc2OCwgNzQ3NzIsIDc0Nzc2LCAKLSAgICA3NDc4MCwgNzQ3ODQsIDc0Nzg4LCA3NDc5MSwgNzQ3OTUsIDc0Nzk4LCA3NDgwMSwgNzQ4MDUsIDc0ODA5LCA3NDgxMywgCi0gICAgNzQ4MTYsIDc0ODE5LCA3NDgyNCwgNzQ4MjgsIDc0ODMzLCA3NDgzOCwgNzQ4NDIsIDc0ODQ3LCA3NDg1MSwgNzQ4NTYsIAotICAgIDc0ODYxLCA3NDg2NiwgNzQ4NzAsIDc0ODc0LCA3NDg3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ4ODQsIAotICAgIDc0ODg5LCA3NDg5NCwgNzQ4OTksIDc0OTA1LCA3NDkxMCwgNzQ5MTUsIDc0OTIwLCA3NDkyNSwgNzQ5MzAsIDc0OTM0LCAKLSAgICA3NDkzOCwgNzQ5NDMsIDc0OTQ4LCAwLCAwLCA3NDk1NCwgNzQ5NTgsIDc0OTYxLCA3NDk2NCwgNzQ5NjcsIDc0OTcwLCAKLSAgICA3NDk3MywgNzQ5NzYsIDc0OTc5LCA3NDk4MiwgMCwgMCwgNzQ5ODUsIDc0OTkwLCA3NDk5NSwgNzUwMDEsIDc1MDA4LCAKLSAgICA3NTAxNCwgNzUwMjAsIDc1MDI2LCA3NTAzMiwgNzUwMzgsIDc1MDQ0LCA3NTA1MCwgNzUwNTYsIDc1MDYyLCA3NTA2OCwgCi0gICAgNzUwNzQsIDc1MDc5LCA3NTA4NCwgNzUwODksIDc1MDk1LCA3NTEwMSwgNzUxMDgsIDc1MTE0LCA3NTEyMCwgNzUxMjUsIAotICAgIDc1MTMyLCA3NTEzOSwgNzUxNDYsIDc1MTUyLCA3NTE1NywgNzUxNjIsIDc1MTY3LCAwLCAwLCAwLCAwLCA3NTE3NSwgCi0gICAgNzUxODEsIDc1MTg3LCA3NTE5MywgNzUxOTksIDc1MjA1LCA3NTIxMSwgNzUyMTcsIDc1MjIzLCA3NTIyOSwgNzUyMzUsIAotICAgIDc1MjQxLCA3NTI0NywgNzUyNTMsIDc1MjU5LCA3NTI2NSwgNzUyNzEsIDc1Mjc3LCA3NTI4MywgNzUyODksIDc1Mjk1LCAKLSAgICA3NTMwMCwgNzUzMDUsIDc1MzExLCA3NTMxNywgNzUzMjMsIDc1MzI5LCA3NTMzNSwgNzUzNDEsIDc1MzQ3LCA3NTM1MywgCi0gICAgNzUzNTksIDc1MzY1LCA3NTM3MSwgNzUzNzcsIDc1MzgzLCA3NTM4OSwgNzUzOTUsIDc1NDAxLCA3NTQwNywgNzU0MTMsIAotICAgIDc1NDE5LCA3NTQyNSwgNzU0MzEsIDc1NDM3LCA3NTQ0MywgNzU0NDksIDc1NDU0LCA3NTQ1OSwgNzU0NjUsIDc1NDcwLCAKLSAgICA3NTQ3NCwgNzU0NzksIDc1NDgzLCA3NTQ4NywgNzU0OTEsIDc1NDk3LCA3NTUwMiwgNzU1MDcsIDc1NTEyLCA3NTUxNywgCi0gICAgNzU1MjIsIDc1NTI3LCA3NTUzMiwgNzU1MzksIDc1NTQ2LCA3NTU1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU1NjAsIDc1NTY1LCA3NTU3MCwgNzU1NzUsIAotICAgIDc1NTgyLCA3NTU4OSwgNzU1OTMsIDc1NTk3LCA3NTYwMiwgNzU2MDcsIDc1NjEyLCA3NTYxNywgNzU2MjIsIDc1NjI3LCAKLSAgICA3NTYzMiwgNzU2MzcsIDc1NjQyLCA3NTY0OCwgNzU2NTQsIDc1NjYwLCA3NTY2NiwgNzU2NzIsIDc1Njc2LCA3NTY4MiwgCi0gICAgNzU2ODYsIDc1NjkyLCA3NTY5OSwgNzU3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzA5LCA3NTcxMywgCi0gICAgNzU3MTcsIDc1NzIxLCA3NTcyNSwgNzU3MjksIDAsIDAsIDc1NzMzLCA3NTczNywgNzU3NDEsIDc1NzQ1LCA3NTc0OSwgCi0gICAgNzU3NTMsIDAsIDAsIDc1NzU3LCA3NTc2MSwgNzU3NjUsIDc1NzY5LCA3NTc3MywgNzU3NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDc1NzgxLCA3NTc4NSwgNzU3ODksIDc1NzkzLCA3NTc5NywgNzU4MDEsIDc1ODA1LCAwLCA3NTgwOSwgCi0gICAgNzU4MTMsIDc1ODE3LCA3NTgyMSwgNzU4MjUsIDc1ODI5LCA3NTgzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI5NjYsIDkyOTczLCA5Mjk4MiwgOTI5OTEsIDkyOTk4LCAKKyAgICA5MzAwNSwgOTMwMTIsIDkzMDE5LCA5MzAyNiwgOTMwMzMsIDkzMDM5LCA5MzA0NiwgOTMwNTMsIDkzMDYwLCA5MzA2NywgCisgICAgOTMwNzQsIDkzMDgxLCA5MzA4OCwgOTMwOTUsIDkzMTA0LCA5MzExMSwgOTMxMTgsIDkzMTI1LCA5MzEzMiwgOTMxMzksIAorICAgIDkzMTQ2LCA5MzE1MywgOTMxNjAsIDkzMTY5LCA5MzE3NiwgOTMxODMsIDkzMTkwLCA5MzE5NywgOTMyMDQsIDkzMjExLCAKKyAgICA5MzIyMCwgOTMyMjcsIDkzMjM0LCA5MzI0MSwgOTMyNDgsIDkzMjU3LCA5MzI2NCwgOTMyNzEsIDkzMjc4LCA5MzI4NiwgCisgICAgOTMyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzMzA0LCA5MzMwOCwgOTMzMTIsIDkzMzE3LCA5MzMyMiwgCisgICAgOTMzMjcsIDkzMzMyLCA5MzMzNiwgOTMzNDEsIDkzMzQ2LCA5MzM1MSwgOTMzNTYsIDkzMzYxLCA5MzM2NiwgOTMzNzAsIAorICAgIDkzMzc1LCA5MzM4MCwgOTMzODUsIDkzMzkwLCA5MzM5NCwgOTMzOTksIDkzNDA0LCA5MzQwOCwgOTM0MTIsIDkzNDE3LCAKKyAgICA5MzQyMiwgOTM0MjcsIDkzNDMyLCA5MzQzNywgMCwgMCwgMCwgOTM0NDIsIDkzNDQ2LCA5MzQ1MSwgOTM0NTYsIDkzNDYwLCAKKyAgICA5MzQ2NSwgOTM0NjksIDkzNDc0LCA5MzQ3OSwgOTM0ODQsIDkzNDg5LCA5MzQ5NCwgOTM0OTgsIDkzNTAzLCA5MzUwOCwgCisgICAgOTM1MTMsIDkzNTE4LCA5MzUyMiwgOTM1MjcsIDkzNTMxLCA5MzUzNiwgOTM1NDEsIDkzNTQ2LCA5MzU1MSwgOTM1NTYsIAorICAgIDkzNTYxLCA5MzU2NSwgOTM1NjksIDkzNTc0LCA5MzU3OSwgOTM1ODQsIDkzNTg5LCA5MzU5NCwgOTM1OTksIDkzNjA0LCAKKyAgICA5MzYwOSwgOTM2MTQsIDkzNjE5LCA5MzYyNCwgOTM2MjksIDkzNjM0LCA5MzYzOSwgOTM2NDQsIDkzNjQ5LCA5MzY1NCwgCisgICAgOTM2NTksIDkzNjY0LCA5MzY2OSwgOTM2NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDkzNjc5LCA5MzY4NSwgOTM2OTAsIDkzNjk1LCA5MzcwMCwgOTM3MDUsIDkzNzEwLCA5MzcxNSwgOTM3MjEsIDkzNzI2LCAKKyAgICA5MzczMiwgOTM3MzgsIDkzNzQ0LCA5Mzc1MCwgOTM3NTYsIDkzNzYyLCA5Mzc2OCwgOTM3NzQsIDkzNzgwLCA5Mzc4NiwgCisgICAgOTM3OTMsIDkzODAwLCA5MzgwNywgOTM4MTUsIDkzODIzLCA5MzgzMSwgOTM4MzksIDkzODQ3LCAwLCAwLCAwLCAwLCAKKyAgICA5Mzg1NSwgOTM4NTksIDkzODY0LCA5Mzg2OSwgOTM4NzQsIDkzODc4LCA5Mzg4MywgOTM4ODgsIDkzODkzLCA5Mzg5OCwgCisgICAgOTM5MDIsIDkzOTA2LCA5MzkxMSwgOTM5MTYsIDkzOTIxLCA5MzkyNiwgOTM5MzAsIDkzOTM1LCA5Mzk0MCwgOTM5NDUsIAorICAgIDkzOTUwLCA5Mzk1NSwgOTM5NjAsIDkzOTY0LCA5Mzk2OSwgOTM5NzQsIDkzOTc5LCA5Mzk4NCwgOTM5ODksIDkzOTk0LCAKKyAgICA5Mzk5OSwgOTQwMDQsIDk0MDA5LCA5NDAxNCwgOTQwMTksIDk0MDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDAzMSwgOTQwMzYsIDk0MDQxLCA5NDA0NiwgOTQwNTEsIDk0MDU2LCA5NDA2MSwgOTQwNjYsIDk0MDcxLCAKKyAgICA5NDA3NiwgOTQwODEsIDk0MDg2LCA5NDA5MSwgOTQwOTYsIDk0MTAxLCA5NDEwNiwgOTQxMTEsIDk0MTE2LCA5NDEyMSwgCisgICAgOTQxMjYsIDk0MTMxLCA5NDEzNiwgOTQxNDEsIDk0MTQ2LCA5NDE1MSwgOTQxNTYsIDk0MTYxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NDE2OCwgOTQxNzQsIDk0MTgwLCA5NDE4NiwgOTQxOTIsIDk0MTk3LCA5NDIwMywgOTQyMDksIDk0MjE1LCA5NDIyMSwgCisgICAgOTQyMjYsIDk0MjMyLCA5NDIzOCwgOTQyNDQsIDk0MjUwLCA5NDI1NiwgOTQyNjIsIDk0MjY4LCA5NDI3NCwgOTQyODAsIAorICAgIDk0Mjg1LCA5NDI5MSwgOTQyOTcsIDk0MzAzLCA5NDMwOSwgOTQzMTUsIDk0MzIwLCA5NDMyNiwgOTQzMzIsIDk0MzM3LCAKKyAgICA5NDM0MywgOTQzNDksIDk0MzU1LCA5NDM2MSwgOTQzNjcsIDk0MzczLCA5NDM3OSwgOTQzODQsIDk0MzkwLCA5NDM5NywgCisgICAgOTQ0MDQsIDk0NDExLCA5NDQxOCwgMCwgMCwgMCwgMCwgMCwgOTQ0MjUsIDk0NDMwLCA5NDQzNSwgOTQ0NDAsIDk0NDQ1LCAKKyAgICA5NDQ1MCwgOTQ0NTUsIDk0NDYwLCA5NDQ2NSwgOTQ0NzAsIDk0NDc1LCA5NDQ4MCwgOTQ0ODUsIDk0NDkwLCA5NDQ5NSwgCisgICAgOTQ1MDAsIDk0NTA1LCA5NDUxMCwgOTQ1MTUsIDk0NTIwLCA5NDUyNSwgOTQ1MzAsIDk0NTM1LCA5NDU0MCwgOTQ1NDUsIAorICAgIDk0NTUwLCA5NDU1NSwgOTQ1NTksIDk0NTYzLCA5NDU2NywgMCwgOTQ1NzIsIDk0NTc4LCA5NDU4MywgOTQ1ODgsIDk0NTkzLCAKKyAgICA5NDU5OCwgOTQ2MDQsIDk0NjEwLCA5NDYxNiwgOTQ2MjIsIDk0NjI4LCA5NDYzNCwgOTQ2NDAsIDk0NjQ2LCA5NDY1MiwgCisgICAgOTQ2NTgsIDk0NjY0LCA5NDY3MCwgOTQ2NzYsIDk0NjgxLCA5NDY4NywgOTQ2OTMsIDk0Njk5LCA5NDcwNSwgOTQ3MTAsIAorICAgIDk0NzE2LCA5NDcyMiwgOTQ3MjcsIDk0NzMzLCA5NDczOSwgOTQ3NDUsIDk0NzUxLCA5NDc1NywgOTQ3NjMsIDk0NzY5LCAKKyAgICA5NDc3NSwgOTQ3ODEsIDAsIDAsIDAsIDAsIDk0Nzg2LCA5NDc5MiwgOTQ3OTgsIDk0ODA0LCA5NDgxMCwgOTQ4MTYsIAorICAgIDk0ODIyLCA5NDgyOCwgOTQ4MzQsIDk0ODQxLCA5NDg0NiwgOTQ4NTEsIDk0ODU3LCA5NDg2MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU4MzcsIDc1ODQyLCA3NTg0NywgNzU4NTIsIAotICAgIDc1ODU3LCA3NTg2MSwgNzU4NjUsIDc1ODcwLCA3NTg3NSwgNzU4ODAsIDc1ODg1LCA3NTg5MCwgNzU4OTUsIDc1OTAwLCAKLSAgICA3NTkwNSwgNzU5MTAsIDc1OTE0LCA3NTkxOSwgNzU5MjQsIDc1OTI5LCA3NTkzNCwgNzU5MzksIDc1OTQ0LCA3NTk0OSwgCi0gICAgNzU5NTQsIDc1OTU5LCA3NTk2NCwgNzU5NjksIDc1OTc2LCA3NTk4MywgNzU5OTAsIDc1OTk3LCA3NjAwNCwgNzYwMTEsIAotICAgIDc2MDE4LCA3NjAyNSwgNzYwMzEsIDc2MDM3LCA3NjA0MywgNzYwNDksIDc2MDU1LCA3NjA2MSwgNzYwNjcsIDc2MDczLCAKLSAgICA3NjA3NywgNzYwODMsIDAsIDAsIDc2MDg5LCA3NjA5NCwgNzYwOTgsIDc2MTAyLCA3NjEwNiwgNzYxMTAsIDc2MTE0LCAKLSAgICA3NjExOCwgNzYxMjIsIDc2MTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDg2OSwgOTQ4NzUsIDk0ODgxLCA5NDg4NywgOTQ4OTQsIAorICAgIDk0OTAwLCA5NDkwNywgOTQ5MTQsIDk0OTIxLCA5NDkyOCwgOTQ5MzYsIDk0OTQzLCA5NDk1MSwgOTQ5NTcsIDk0OTYzLCAKKyAgICA5NDk2OSwgOTQ5NzUsIDk0OTgxLCA5NDk4NywgOTQ5OTMsIDk0OTk5LCA5NTAwNSwgOTUwMTEsIDk1MDE3LCA5NTAyMywgCisgICAgOTUwMjksIDk1MDM1LCA5NTA0MSwgOTUwNDcsIDk1MDUzLCA5NTA1OSwgOTUwNjUsIDk1MDcxLCA5NTA3NywgOTUwODMsIAorICAgIDk1MDg5LCA5NTA5NSwgOTUxMDEsIDk1MTA3LCA5NTExMywgOTUxMTksIDk1MTI1LCA5NTEzMSwgOTUxMzcsIDk1MTQ0LCAKKyAgICA5NTE1MCwgOTUxNTcsIDk1MTY0LCA5NTE3MSwgOTUxNzgsIDk1MTg2LCA5NTE5MywgOTUyMDEsIDk1MjA3LCA5NTIxMywgCisgICAgOTUyMTksIDk1MjI1LCA5NTIzMSwgOTUyMzcsIDk1MjQzLCA5NTI0OSwgOTUyNTUsIDk1MjYxLCA5NTI2NywgOTUyNzMsIAorICAgIDk1Mjc5LCA5NTI4NSwgOTUyOTEsIDk1Mjk3LCA5NTMwMywgOTUzMDksIDk1MzE1LCA5NTMyMSwgOTUzMjcsIDk1MzMzLCAKKyAgICA5NTMzOSwgOTUzNDUsIDk1MzUxLCA5NTM1NywgOTUzNjMsIDk1MzY5LCA5NTM3NCwgOTUzNzksIDk1Mzg0LCA5NTM4OSwgCisgICAgOTUzOTQsIDk1Mzk5LCA5NTQwNCwgOTU0MDksIDk1NDE0LCA5NTQxOSwgOTU0MjQsIDk1NDI5LCA5NTQzNCwgOTU0MzksIAorICAgIDk1NDQ0LCA5NTQ0OSwgOTU0NTQsIDk1NDU5LCA5NTQ2NCwgOTU0NjksIDk1NDc0LCA5NTQ3OSwgOTU0ODQsIDk1NDg5LCAKKyAgICA5NTQ5NCwgOTU0OTksIDk1NTA0LCA5NTUwOSwgOTU1MTQsIDk1NTE5LCA5NTUyNCwgOTU1MjksIDk1NTM0LCA5NTUzOSwgCisgICAgOTU1NDQsIDk1NTQ5LCA5NTU1NCwgOTU1NTksIDk1NTY0LCA5NTU2OSwgOTU1NzQsIDk1NTc5LCA5NTU4NCwgOTU1ODksIAorICAgIDk1NTk0LCA5NTU5OSwgOTU2MDQsIDk1NjA5LCA5NTYxNCwgOTU2MTksIDk1NjI0LCA5NTYyOSwgOTU2MzQsIDk1NjM5LCAKKyAgICA5NTY0NCwgOTU2NDksIDk1NjU0LCA5NTY1OSwgOTU2NjQsIDk1NjY5LCA5NTY3NCwgOTU2NzksIDk1Njg0LCA5NTY4OSwgCisgICAgOTU2OTQsIDk1Njk5LCA5NTcwNCwgOTU3MDksIDk1NzEzLCA5NTcxNywgOTU3MjEsIDk1NzI1LCA5NTcyOSwgOTU3MzMsIAorICAgIDk1NzM3LCA5NTc0MiwgOTU3NDcsIDAsIDAsIDk1NzUyLCA5NTc1NywgOTU3NjEsIDk1NzY1LCA5NTc2OSwgOTU3NzMsIAorICAgIDk1Nzc3LCA5NTc4MSwgOTU3ODYsIDk1NzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjEzMCwgNzYxMzQsIDc2MTM4LCA3NjE0MiwgNzYxNDYsIAotICAgIDc2MTUwLCA3NjE1NCwgNzYxNTgsIDc2MTYyLCA3NjE2NiwgNzYxNzAsIDc2MTc0LCA3NjE3OCwgNzYxODIsIDc2MTg2LCAKLSAgICA3NjE5MCwgNzYxOTQsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgNzYyMTgsIDAsIDAsIDAsIDAsIAotICAgIDc2MjIyLCA3NjIyNiwgNzYyMzAsIDc2MjM0LCA3NjIzOCwgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIDc2MjU4LCAKLSAgICA3NjI2MiwgNzYyNjYsIDc2MjcwLCA3NjI3NCwgNzYyNzgsIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCA3NjI5OCwgCi0gICAgNzYzMDIsIDc2MzA2LCA3NjMxMCwgNzYzMTQsIDc2MzE4LCA3NjMyMiwgNzYzMjYsIDc2MzMwLCA3NjMzNCwgNzYzMzgsIAotICAgIDc2MzQyLCA3NjM0NiwgNzYzNTAsIDc2MzU0LCA3NjM1OCwgNzYzNjIsIDc2MzY2LCA3NjM3MCwgNzYzNzQsIDc2Mzc4LCAKLSAgICA3NjM4MiwgNzYzODYsIDc2MzkwLCA3NjM5NCwgNzYzOTgsIDc2NDAyLCA3NjQwNiwgNzY0MTAsIDc2NDE0LCAwLCAwLCAwLCAKLSAgICAwLCA3NjQxOCwgNzY0MjIsIDc2NDI2LCA3NjQzMCwgNzY0MzQsIDc2NDM4LCA3NjQ0MiwgNzY0NDYsIDc2NDUwLCA3NjQ1NCwgCi0gICAgNzY0NTgsIDc2NDYyLCA3NjQ2NiwgNzY0NzAsIDc2NDc0LCA3NjQ3OCwgNzY0ODIsIDc2NDg2LCA3NjQ5MCwgNzY0OTQsIAotICAgIDc2NDk4LCA3NjUwMiwgNzY1MDYsIDc2NTEwLCA3NjUxNCwgNzY1MTgsIDc2NTIyLCA3NjUyNiwgNzY1MzAsIDc2NTM0LCAKLSAgICA3NjUzOCwgNzY1NDIsIDc2NTQ2LCA3NjU1MCwgNzY1NTQsIDc2NTU4LCA3NjU2MiwgNzY1NjYsIDc2NTcwLCA3NjU3NCwgCi0gICAgNzY1NzgsIDc2NTgyLCA3NjU4NiwgNzY1OTAsIDc2NTk0LCA3NjU5OCwgNzY2MDIsIDc2NjA2LCA3NjYxMCwgNzY2MTQsIAotICAgIDc2NjE4LCA3NjYyMiwgNzY2MjYsIDc2NjMwLCA3NjYzNCwgNzY2MzgsIDc2NjQyLCA3NjY0NiwgNzY2NTAsIDc2NjU0LCAKLSAgICA3NjY1OCwgNzY2NjIsIDc2NjY2LCA3NjY3MCwgNzY2NzQsIDc2Njc4LCA3NjY4MiwgNzY2ODYsIDc2NjkwLCA3NjY5NCwgCi0gICAgNzY2OTgsIDc2NzAyLCA3NjcwNiwgNzY3MTAsIDc2NzE0LCA3NjcxOCwgNzY3MjIsIDc2NzI2LCA3NjczMCwgNzY3MzQsIAotICAgIDc2NzM4LCA3Njc0MiwgNzY3NDYsIDc2NzUwLCA3Njc1NCwgNzY3NTgsIDc2NzYyLCA3Njc2NiwgNzY3NzAsIDc2Nzc0LCAKLSAgICA3Njc3OCwgNzY3ODIsIDc2Nzg2LCA3Njc5MCwgNzY3OTQsIDc2Nzk4LCA3NjgwMiwgNzY4MDYsIDc2ODEwLCA3NjgxNCwgCi0gICAgNzY4MTgsIDc2ODIyLCA3NjgyNiwgNzY4MzAsIDc2ODM0LCA3NjgzOCwgNzY4NDIsIDc2ODQ2LCA3Njg1MCwgNzY4NTQsIAotICAgIDc2ODU4LCA3Njg2MiwgNzY4NjYsIDc2ODcwLCA3Njg3NCwgNzY4NzgsIDc2ODgyLCA3Njg4NiwgNzY4OTAsIDc2ODk0LCAKLSAgICA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgNzY5MjYsIDc2OTMwLCA3NjkzNCwgCi0gICAgNzY5MzgsIDc2OTQyLCA3Njk0NiwgNzY5NTAsIDc2OTU0LCA3Njk1OCwgNzY5NjIsIDc2OTY2LCA3Njk3MCwgNzY5NzQsIAotICAgIDc2OTc4LCA3Njk4MiwgNzY5ODYsIDc2OTkwLCA3Njk5NCwgNzY5OTgsIDc3MDAyLCA3NzAwNiwgNzcwMTAsIDc3MDE0LCAKLSAgICA3NzAxOCwgNzcwMjIsIDc3MDI2LCA3NzAzMCwgNzcwMzQsIDc3MDM4LCA3NzA0MiwgNzcwNDYsIDc3MDUwLCA3NzA1NCwgCi0gICAgNzcwNTgsIDc3MDYyLCA3NzA2NiwgNzcwNzAsIDc3MDc0LCA3NzA3OCwgNzcwODIsIDc3MDg2LCA3NzA5MCwgNzcwOTQsIAotICAgIDc3MDk4LCA3NzEwMiwgNzcxMDYsIDc3MTEwLCA3NzExNCwgNzcxMTgsIDc3MTIyLCA3NzEyNiwgNzcxMzAsIDc3MTM0LCAKLSAgICA3NzEzOCwgNzcxNDIsIDc3MTQ2LCA3NzE1MCwgNzcxNTQsIDc3MTU4LCA3NzE2MiwgNzcxNjYsIDc3MTcwLCA3NzE3NCwgCi0gICAgNzcxNzgsIDc3MTgyLCA3NzE4NiwgNzcxOTAsIDc3MTk0LCA3NzE5OCwgNzcyMDIsIDc3MjA2LCA3NzIxMCwgNzcyMTQsIAotICAgIDc3MjE4LCA3NzIyMiwgNzcyMjYsIDc3MjMwLCA3NzIzNCwgNzcyMzgsIDc3MjQyLCA3NzI0NiwgNzcyNTAsIDc3MjU0LCAKLSAgICA3NzI1OCwgNzcyNjIsIDc3MjY2LCA3NzI3MCwgNzcyNzQsIDc3Mjc4LCA3NzI4MiwgNzcyODYsIDc3MjkwLCA3NzI5NCwgCi0gICAgNzcyOTgsIDc3MzAyLCA3NzMwNiwgNzczMTAsIDc3MzE0LCA3NzMxOCwgNzczMjIsIDc3MzI2LCA3NzMzMCwgNzczMzQsIAotICAgIDc3MzM4LCA3NzM0MiwgNzczNDYsIDc3MzUwLCA3NzM1NCwgNzczNTgsIDc3MzYyLCA3NzM2NiwgNzczNzAsIDc3Mzc0LCAKLSAgICA3NzM3OCwgNzczODIsIDc3Mzg2LCA3NzM5MCwgNzczOTQsIDc3Mzk4LCA3NzQwMiwgNzc0MDYsIDc3NDEwLCA3NzQxNCwgCi0gICAgNzc0MTgsIDc3NDIyLCA3NzQyNiwgNzc0MzAsIDc3NDM0LCA3NzQzOCwgNzc0NDIsIDc3NDQ2LCA3NzQ1MCwgNzc0NTQsIAotICAgIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIDc3NDcwLCA3NzQ3NCwgNzc0NzgsIDc3NDgyLCA3NzQ4NiwgNzc0OTAsIDc3NDk0LCAKLSAgICA3NzQ5OCwgNzc1MDIsIDc3NTA2LCA3NzUxMCwgNzc1MTQsIDc3NTE4LCA3NzUyMiwgNzc1MjYsIDc3NTMwLCA3NzUzNCwgCi0gICAgNzc1MzgsIDc3NTQyLCA3NzU0NiwgNzc1NTAsIDc3NTU0LCA3NzU1OCwgNzc1NjIsIDc3NTY2LCA3NzU3MCwgNzc1NzQsIAotICAgIDc3NTc4LCA3NzU4MiwgNzc1ODYsIDc3NTkwLCA3NzU5NCwgNzc1OTgsIDc3NjAyLCA3NzYwNiwgNzc2MTAsIDc3NjE0LCAKLSAgICA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMCwgNzc2MzQsIDc3NjM4LCA3NzY0MiwgNzc2NDYsIDc3NjUwLCA3NzY1NCwgCi0gICAgNzc2NTgsIDc3NjYyLCA3NzY2NiwgNzc2NzAsIDc3Njc0LCA3NzY3OCwgNzc2ODIsIDc3Njg2LCA3NzY5MCwgNzc2OTQsIAotICAgIDc3Njk4LCA3NzcwMiwgNzc3MDYsIDc3NzEwLCA3NzcxNCwgNzc3MTgsIDc3NzIyLCA3NzcyNiwgNzc3MzAsIDc3NzM0LCAKLSAgICA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTQsIDc3NzU4LCA3Nzc2MiwgNzc3NjYsIDc3NzcwLCA3Nzc3NCwgCi0gICAgNzc3NzgsIDc3NzgyLCA3Nzc4NiwgNzc3OTAsIDc3Nzk0LCA3Nzc5OCwgNzc4MDIsIDc3ODA2LCA3NzgxMCwgNzc4MTQsIAotICAgIDc3ODE4LCA3NzgyMiwgNzc4MjYsIDc3ODMwLCA3NzgzNCwgNzc4MzgsIDc3ODQyLCA3Nzg0NiwgNzc4NTAsIDc3ODU0LCAKLSAgICA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCAwLCAwLCA3Nzg4MiwgNzc4ODYsIDc3ODkwLCAKLSAgICA3Nzg5NCwgNzc4OTgsIDc3OTAyLCA3NzkwNiwgNzc5MTAsIDc3OTE0LCA3NzkxOCwgNzc5MjIsIDc3OTI2LCA3NzkzMCwgCi0gICAgNzc5MzQsIDc3OTM4LCA3Nzk0MiwgNzc5NDYsIDc3OTUwLCA3Nzk1NCwgNzc5NTgsIDc3OTYyLCA3Nzk2NiwgNzc5NzAsIAotICAgIDc3OTc0LCA3Nzk3OCwgNzc5ODIsIDc3OTg2LCA3Nzk5MCwgNzc5OTQsIDc3OTk4LCA3ODAwMiwgNzgwMDYsIDc4MDEwLCAKLSAgICA3ODAxNCwgNzgwMTgsIDc4MDIyLCA3ODAyNiwgNzgwMzAsIDc4MDM0LCA3ODAzOCwgNzgwNDIsIDc4MDQ2LCA3ODA1MCwgCi0gICAgNzgwNTQsIDc4MDU4LCA3ODA2MiwgNzgwNjYsIDc4MDcwLCA3ODA3NCwgNzgwNzgsIDc4MDgyLCA3ODA4NiwgNzgwOTAsIAotICAgIDc4MDk0LCA3ODA5OCwgNzgxMDIsIDc4MTA2LCA3ODExMCwgNzgxMTQsIDc4MTE4LCA3ODEyMiwgNzgxMjYsIDc4MTMwLCAKLSAgICA3ODEzNCwgNzgxMzgsIDc4MTQyLCA3ODE0NiwgNzgxNTAsIDc4MTU0LCA3ODE1OCwgNzgxNjIsIDc4MTY2LCA3ODE3MCwgCi0gICAgNzgxNzQsIDc4MTc4LCA3ODE4MiwgNzgxODYsIDc4MTkwLCA3ODE5NCwgNzgxOTgsIDc4MjAyLCA3ODIwNiwgNzgyMTAsIAotICAgIDc4MjE0LCA3ODIxOCwgNzgyMjIsIDc4MjI2LCA3ODIzMCwgNzgyMzQsIDc4MjM4LCA3ODI0MiwgNzgyNDYsIDc4MjUwLCAKLSAgICA3ODI1NCwgNzgyNTgsIDc4MjYyLCA3ODI2NiwgNzgyNzAsIDc4Mjc0LCA3ODI3OCwgNzgyODIsIDc4Mjg2LCA3ODI5MCwgCi0gICAgNzgyOTQsIDc4Mjk4LCA3ODMwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgzMDYsIAotICAgIDc4MzExLCA3ODMxNiwgNzgzMjEsIDc4MzI2LCA3ODMzMSwgNzgzMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc4MzQ0LCA3ODM1MSwgNzgzNTgsIDc4MzY1LCA3ODM3MiwgMCwgMCwgMCwgMCwgMCwgNzgzNzksIDc4Mzg2LCAKLSAgICA3ODM5MywgNzg0MDMsIDc4NDA5LCA3ODQxNSwgNzg0MjEsIDc4NDI3LCA3ODQzMywgNzg0MzksIDc4NDQ2LCA3ODQ1MiwgCi0gICAgNzg0NTgsIDc4NDY0LCA3ODQ3MywgNzg0ODIsIDc4NDk0LCA3ODUwNiwgNzg1MTIsIDc4NTE4LCA3ODUyNCwgNzg1MzEsIAotICAgIDc4NTM4LCA3ODU0NSwgNzg1NTIsIDc4NTU5LCAwLCA3ODU2NiwgNzg1NzMsIDc4NTgwLCA3ODU4OCwgNzg1OTUsIDAsIAotICAgIDc4NjAyLCAwLCA3ODYwOSwgNzg2MTYsIDAsIDc4NjIzLCA3ODYzMSwgMCwgNzg2MzgsIDc4NjQ1LCA3ODY1MiwgNzg2NTksIAotICAgIDc4NjY2LCA3ODY3MywgNzg2ODAsIDc4Njg3LCA3ODY5NCwgNzg3MDEsIDc4NzA2LCA3ODcxMywgNzg3MjAsIDc4NzI2LCAKLSAgICA3ODczMiwgNzg3MzgsIDc4NzQ0LCA3ODc1MCwgNzg3NTYsIDc4NzYyLCA3ODc2OCwgNzg3NzQsIDc4NzgwLCA3ODc4NiwgCi0gICAgNzg3OTIsIDc4Nzk4LCA3ODgwNCwgNzg4MTAsIDc4ODE2LCA3ODgyMiwgNzg4MjgsIDc4ODM0LCA3ODg0MCwgNzg4NDYsIAotICAgIDc4ODUyLCA3ODg1OCwgNzg4NjQsIDc4ODcwLCA3ODg3NiwgNzg4ODIsIDc4ODg4LCA3ODg5NCwgNzg5MDAsIDc4OTA2LCAKLSAgICA3ODkxMiwgNzg5MTgsIDc4OTI0LCA3ODkzMCwgNzg5MzYsIDc4OTQyLCA3ODk0OCwgNzg5NTQsIDc4OTYwLCA3ODk2NiwgCi0gICAgNzg5NzIsIDc4OTc4LCA3ODk4NCwgNzg5OTAsIDc4OTk2LCA3OTAwMiwgNzkwMDgsIDc5MDE0LCA3OTAyMCwgNzkwMjYsIAotICAgIDc5MDMyLCA3OTAzOCwgNzkwNDQsIDc5MDUwLCA3OTA1NiwgNzkwNjIsIDc5MDY4LCA3OTA3NCwgNzkwODAsIDc5MDg2LCAKLSAgICA3OTA5MiwgNzkwOTgsIDc5MTA0LCA3OTExMCwgNzkxMTYsIDc5MTIyLCA3OTEyOCwgNzkxMzQsIDc5MTQwLCA3OTE0NiwgCi0gICAgNzkxNTIsIDc5MTU4LCA3OTE2NCwgNzkxNzAsIDc5MTc2LCA3OTE4NCwgNzkxOTIsIDc5MTk4LCA3OTIwNCwgNzkyMTAsIAotICAgIDc5MjE2LCA3OTIyNSwgNzkyMzQsIDc5MjQyLCA3OTI1MCwgNzkyNTgsIDc5MjY2LCA3OTI3NCwgNzkyODIsIDc5MjkwLCAKLSAgICA3OTI5OCwgNzkzMDUsIDc5MzEyLCA3OTMyMiwgNzkzMzIsIDc5MzM2LCA3OTM0MCwgNzkzNDUsIDc5MzUwLCA3OTM1NSwgCi0gICAgNzkzNjAsIDc5MzY5LCA3OTM3OCwgNzkzODQsIDc5MzkwLCA3OTM5NywgNzk0MDQsIDc5NDExLCA3OTQxNSwgNzk0MjEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDI3LCA3OTQzMywgNzk0MzksIAotICAgIDc5NDQ1LCA3OTQ1MSwgNzk0NTYsIDc5NDYxLCA3OTQ2NywgNzk0NzMsIDc5NDc5LCA3OTQ4NSwgNzk0OTMsIDc5NDk5LCAKLSAgICA3OTUwNSwgNzk1MTMsIDc5NTIxLCA3OTUyOSwgNzk1MzcsIDc5NTQyLCA3OTU0NywgNzk1NTIsIDc5NTU3LCA3OTU3MCwgCi0gICAgNzk1ODMsIDc5NTkzLCA3OTYwMywgNzk2MTQsIDc5NjI1LCA3OTYzNiwgNzk2NDcsIDc5NjU3LCA3OTY2NywgNzk2NzgsIAotICAgIDc5Njg5LCA3OTcwMCwgNzk3MTEsIDc5NzIxLCA3OTczMSwgNzk3NDEsIDc5NzU3LCA3OTc3MywgNzk3ODksIDc5Nzk2LCAKLSAgICA3OTgwMywgNzk4MTAsIDc5ODE3LCA3OTgyNywgNzk4MzcsIDc5ODQ3LCA3OTg1OSwgNzk4NjksIDc5ODc3LCA3OTg4NSwgCi0gICAgNzk4OTQsIDc5OTAyLCA3OTkxMiwgNzk5MjAsIDc5OTI4LCA3OTkzNiwgNzk5NDUsIDc5OTUzLCA3OTk2MywgNzk5NzEsIAotICAgIDc5OTc5LCA3OTk4NywgNzk5OTcsIDgwMDA1LCA4MDAxMiwgODAwMTksIDgwMDI2LCA4MDAzMywgODAwNDEsIDgwMDQ5LCAKLSAgICA4MDA1NywgODAwNjUsIDgwMDczLCA4MDA4MiwgODAwOTAsIDgwMDk4LCA4MDEwNiwgODAxMTQsIDgwMTIyLCA4MDEzMSwgCi0gICAgODAxMzksIDgwMTQ3LCA4MDE1NSwgODAxNjMsIDgwMTcxLCA4MDE3OSwgODAxODcsIDgwMTk1LCA4MDIwMywgODAyMTEsIAotICAgIDgwMjIwLCA4MDIyOCwgODAyMzgsIDgwMjQ2LCA4MDI1NCwgODAyNjIsIDgwMjcyLCA4MDI4MCwgODAyODgsIDgwMjk2LCAKLSAgICA4MDMwNCwgODAzMTMsIDgwMzIyLCA4MDMzMCwgODAzNDAsIDgwMzQ4LCA4MDM1NiwgODAzNjQsIDgwMzczLCA4MDM4MSwgCi0gICAgODAzOTEsIDgwMzk5LCA4MDQwNiwgODA0MTMsIDgwNDIxLCA4MDQyOCwgODA0MzcsIDgwNDQ0LCA4MDQ1MiwgODA0NjAsIAotICAgIDgwNDY5LCA4MDQ3NywgODA0ODcsIDgwNDk1LCA4MDUwMywgODA1MTEsIDgwNTIxLCA4MDUyOSwgODA1MzYsIDgwNTQzLCAKLSAgICA4MDU1MSwgODA1NTgsIDgwNTY3LCA4MDU3NCwgODA1ODQsIDgwNTk0LCA4MDYwNSwgODA2MTQsIDgwNjIzLCA4MDYzMiwgCi0gICAgODA2NDEsIDgwNjUwLCA4MDY2MCwgODA2NzEsIDgwNjgyLCA4MDY5MiwgODA3MDMsIDgwNzE1LCA4MDcyNSwgODA3MzQsIAotICAgIDgwNzQzLCA4MDc1MSwgODA3NjAsIDgwNzcwLCA4MDc3OCwgODA3ODcsIDgwNzk2LCA4MDgwNCwgODA4MTMsIDgwODIzLCAKLSAgICA4MDgzMSwgODA4NDAsIDgwODQ5LCA4MDg1NywgODA4NjYsIDgwODc2LCA4MDg4NCwgODA4OTQsIDgwOTAyLCA4MDkxMiwgCi0gICAgODA5MjAsIDgwOTI4LCA4MDkzNywgODA5NDUsIDgwOTU1LCA4MDk2MywgODA5NzEsIDgwOTgxLCA4MDk4OSwgODA5OTYsIAotICAgIDgxMDAzLCA4MTAxMiwgODEwMjEsIDgxMDI5LCA4MTAzOCwgODEwNDgsIDgxMDU2LCA4MTA2NywgODEwNzUsIDgxMDgzLCAKLSAgICA4MTA5MCwgODEwOTgsIDgxMTA3LCA4MTExNCwgODExMjQsIDgxMTM0LCA4MTE0NSwgODExNTUsIDgxMTY2LCA4MTE3NCwgCi0gICAgODExODIsIDgxMTkxLCA4MTE5OSwgODEyMDgsIDgxMjE2LCA4MTIyNCwgODEyMzMsIDgxMjQxLCA4MTI1MCwgODEyNTgsIAotICAgIDgxMjY1LCA4MTI3MiwgODEyNzksIDgxMjg2LCA4MTI5NCwgODEzMDIsIDgxMzEwLCA4MTMxOCwgODEzMjcsIDgxMzM1LCAKLSAgICA4MTM0MywgODEzNTIsIDgxMzYwLCA4MTM2OCwgODEzNzYsIDgxMzg1LCA4MTM5MywgODE0MDEsIDgxNDA5LCA4MTQxNywgCi0gICAgODE0MjUsIDgxNDMzLCA4MTQ0MSwgODE0NDksIDgxNDU3LCA4MTQ2NiwgODE0NzQsIDgxNDgyLCA4MTQ5MCwgODE0OTgsIAotICAgIDgxNTA2LCA4MTUxNSwgODE1MjQsIDgxNTMyLCA4MTU0MCwgODE1NDgsIDgxNTU3LCA4MTU2NSwgODE1NzQsIDgxNTgxLCAKLSAgICA4MTU4OCwgODE1OTYsIDgxNjAzLCA4MTYxMSwgODE2MTksIDgxNjI4LCA4MTYzNiwgODE2NDUsIDgxNjUzLCA4MTY2MSwgCi0gICAgODE2NzEsIDgxNjc4LCA4MTY4NSwgODE2OTMsIDgxNzAwLCA4MTcwOCwgODE3MTgsIDgxNzI5LCA4MTczNywgODE3NDYsIAotICAgIDgxNzU0LCA4MTc2MywgODE3NzEsIDgxNzgwLCA4MTc4OCwgODE3OTcsIDgxODA1LCA4MTgxNCwgODE4MjMsIDgxODMxLCAKLSAgICA4MTgzOSwgODE4NDcsIDgxODU2LCA4MTg2MywgODE4NzEsIDgxODgwLCA4MTg4OSwgODE4OTgsIDgxOTA4LCA4MTkxNiwgCi0gICAgODE5MjYsIDgxOTM0LCA4MTk0NCwgODE5NTIsIDgxOTYyLCA4MTk3MCwgODE5ODAsIDgxOTg4LCA4MTk5NywgODIwMDQsIAotICAgIDgyMDEzLCA4MjAyMCwgODIwMzAsIDgyMDM4LCA4MjA0OCwgODIwNTYsIDgyMDY2LCA4MjA3NCwgODIwODIsIDgyMDkwLCAKLSAgICA4MjA5OSwgODIxMDcsIDgyMTE2LCA4MjEyNSwgODIxMzQsIDgyMTQzLCA4MjE1MywgODIxNjEsIDgyMTcxLCA4MjE3OSwgCi0gICAgODIxODksIDgyMTk3LCA4MjIwNywgODIyMTUsIDgyMjI1LCA4MjIzMywgODIyNDIsIDgyMjQ5LCA4MjI1OCwgODIyNjUsIAotICAgIDgyMjc1LCA4MjI4MywgODIyOTMsIDgyMzAxLCA4MjMxMSwgODIzMTksIDgyMzI3LCA4MjMzNSwgODIzNDQsIDgyMzUyLCAKLSAgICA4MjM2MSwgODIzNzAsIDgyMzc5LCA4MjM4OCwgODIzOTYsIDgyNDA0LCA4MjQxMywgODI0MjEsIDgyNDMwLCA4MjQzOSwgCi0gICAgODI0NDcsIDgyNDU1LCA4MjQ2MywgODI0NzIsIDgyNDgwLCA4MjQ4OCwgODI0OTcsIDgyNTA1LCA4MjUxMywgODI1MjEsIAotICAgIDgyNTI5LCA4MjUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI1MzksIAotICAgIDgyNTQ5LCA4MjU1OSwgODI1NjksIDgyNTc5LCA4MjU5MCwgODI2MDAsIDgyNjEwLCA4MjYyMSwgODI2MzAsIDgyNjM5LCAKLSAgICA4MjY0OCwgODI2NTksIDgyNjY5LCA4MjY3OSwgODI2OTEsIDgyNzAxLCA4MjcxMSwgODI3MjEsIDgyNzMxLCA4Mjc0MSwgCi0gICAgODI3NTEsIDgyNzYxLCA4Mjc3MSwgODI3ODEsIDgyNzkxLCA4MjgwMSwgODI4MTIsIDgyODIzLCA4MjgzMywgODI4NDMsIAotICAgIDgyODU1LCA4Mjg2NiwgODI4NzcsIDgyODg3LCA4Mjg5NywgODI5MDcsIDgyOTE3LCA4MjkyNywgODI5MzcsIDgyOTQ3LCAKLSAgICA4Mjk1OSwgODI5NjksIDgyOTc5LCA4Mjk5MSwgODMwMDIsIDgzMDEzLCA4MzAyMywgODMwMzMsIDgzMDQzLCA4MzA1MywgCi0gICAgODMwNjUsIDgzMDc1LCA4MzA4NSwgODMwOTYsIDgzMTA3LCA4MzExNywgODMxMjcsIDgzMTM2LCA4MzE0NSwgODMxNTQsIAotICAgIDgzMTYzLCA4MzE3MiwgODMxODIsIDAsIDAsIDgzMTkyLCA4MzIwMiwgODMyMTIsIDgzMjIyLCA4MzIzMiwgODMyNDQsIAotICAgIDgzMjU0LCA4MzI2NCwgODMyNzYsIDgzMjg2LCA4MzI5OCwgODMzMDcsIDgzMzE2LCA4MzMyNywgODMzMzcsIDgzMzQ5LCAKLSAgICA4MzM2MCwgODMzNzMsIDgzMzgzLCA4MzM5NSwgODM0MDQsIDgzNDE1LCA4MzQyNiwgODM0MzksIDgzNDQ5LCA4MzQ1OSwgCi0gICAgODM0NjksIDgzNDc5LCA4MzQ4OSwgODM0OTgsIDgzNTA3LCA4MzUxNiwgODM1MjUsIDgzNTM1LCA4MzU0NSwgODM1NTUsIAotICAgIDgzNTY1LCA4MzU3NSwgODM1ODUsIDgzNTk1LCA4MzYwNSwgODM2MTUsIDgzNjI1LCA4MzYzNSwgODM2NDUsIDgzNjU0LCAKLSAgICA4MzY2MywgODM2NzIsIDgzNjgyLCA4MzY5MiwgODM3MDIsIDgzNzEyLCA4MzcyMiwgODM3MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNzQzLCA4Mzc1OCwgODM3NzMsIDgzNzc5LCA4Mzc4NSwgODM3OTEsIAotICAgIDgzNzk3LCA4MzgwMywgODM4MDksIDgzODE1LCA4MzgyMSwgODM4MjksIDgzODMzLCA4MzgzNiwgMCwgMCwgODM4NDQsIAotICAgIDgzODQ3LCA4Mzg1MCwgODM4NTMsIDgzODU2LCA4Mzg1OSwgODM4NjIsIDgzODY1LCA4Mzg2OCwgODM4NzEsIDgzODc0LCAKLSAgICA4Mzg3NywgODM4ODAsIDgzODgzLCA4Mzg4NiwgODM4ODksIDgzODkyLCA4MzkwMCwgODM5MDksIDgzOTIwLCA4MzkyOCwgCi0gICAgODM5MzYsIDgzOTQ1LCA4Mzk1NCwgODM5NjUsIDgzOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCA4Mzk4NiwgODM5OTEsIDgzOTk2LCAKLSAgICA4NDAwMywgODQwMTAsIDg0MDE2LCA4NDAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQwMjcsIDg0MDM3LCAKLSAgICA4NDA0NywgODQwNTcsIDg0MDY2LCA4NDA3NywgODQwODYsIDg0MDk1LCA4NDEwNSwgODQxMTUsIDg0MTI3LCA4NDEzOSwgCi0gICAgODQxNTAsIDg0MTYxLCA4NDE3MiwgODQxODMsIDg0MTkzLCA4NDIwMywgODQyMTMsIDg0MjIzLCA4NDIzNCwgODQyNDUsIAotICAgIDg0MjQ5LCA4NDI1NCwgODQyNjMsIDg0MjcyLCA4NDI3NiwgODQyODAsIDg0Mjg0LCA4NDI4OSwgODQyOTQsIDg0Mjk5LCAKLSAgICA4NDMwNCwgODQzMDcsIDg0MzExLCAwLCA4NDMxNiwgODQzMTksIDg0MzIyLCA4NDMyNiwgODQzMzAsIDg0MzM1LCA4NDMzOSwgCi0gICAgODQzNDMsIDg0MzQ4LCA4NDM1MywgODQzNjAsIDg0MzY3LCA4NDM3MCwgODQzNzMsIDg0Mzc2LCA4NDM3OSwgODQzODIsIAotICAgIDg0Mzg2LCA4NDM5MCwgMCwgODQzOTQsIDg0Mzk5LCA4NDQwMywgODQ0MDcsIDAsIDAsIDAsIDAsIDg0NDEyLCA4NDQxNywgCi0gICAgODQ0MjQsIDg0NDI5LCA4NDQzNCwgMCwgODQ0MzksIDg0NDQ0LCA4NDQ0OSwgODQ0NTQsIDg0NDU5LCA4NDQ2NCwgODQ0NjksIAotICAgIDg0NDc0LCA4NDQ3OSwgODQ0ODQsIDg0NDg5LCA4NDQ5NCwgODQ1MDMsIDg0NTEyLCA4NDUyMCwgODQ1MjgsIDg0NTM3LCAKLSAgICA4NDU0NiwgODQ1NTUsIDg0NTY0LCA4NDU3MiwgODQ1ODAsIDg0NTg4LCA4NDU5NiwgODQ2MDEsIDg0NjA2LCA4NDYxMiwgCi0gICAgODQ2MTgsIDg0NjI0LCA4NDYzMCwgODQ2MzgsIDg0NjQ2LCA4NDY1MiwgODQ2NTgsIDg0NjY0LCA4NDY3MCwgODQ2NzYsIAotICAgIDg0NjgyLCA4NDY4OCwgODQ2OTQsIDg0Njk5LCA4NDcwNCwgODQ3MDksIDg0NzE0LCA4NDcxOSwgODQ3MjQsIDg0NzI5LCAKLSAgICA4NDczNCwgODQ3NDAsIDg0NzQ2LCA4NDc1MiwgODQ3NTgsIDg0NzY0LCA4NDc3MCwgODQ3NzYsIDg0NzgyLCA4NDc4OCwgCi0gICAgODQ3OTQsIDg0ODAwLCA4NDgwNiwgODQ4MTIsIDg0ODE4LCA4NDgyNCwgODQ4MzAsIDg0ODM2LCA4NDg0MiwgODQ4NDgsIAotICAgIDg0ODU0LCA4NDg2MCwgODQ4NjYsIDg0ODcyLCA4NDg3OCwgODQ4ODQsIDg0ODkwLCA4NDg5NiwgODQ5MDIsIDg0OTA4LCAKLSAgICA4NDkxNCwgODQ5MjAsIDg0OTI2LCA4NDkzMiwgODQ5MzgsIDg0OTQ0LCA4NDk1MCwgODQ5NTYsIDg0OTYyLCA4NDk2OCwgCi0gICAgODQ5NzQsIDg0OTgwLCA4NDk4NiwgODQ5OTIsIDg0OTk4LCA4NTAwNCwgODUwMTAsIDg1MDE2LCA4NTAyMiwgODUwMjgsIAotICAgIDg1MDM0LCA4NTA0MCwgODUwNDYsIDg1MDUyLCA4NTA1OCwgODUwNjQsIDg1MDcwLCA4NTA3NiwgODUwODIsIDg1MDg4LCAKLSAgICA4NTA5NCwgODUwOTksIDg1MTA0LCA4NTEwOSwgODUxMTQsIDg1MTIwLCA4NTEyNiwgODUxMzIsIDg1MTM4LCA4NTE0NCwgCi0gICAgODUxNTAsIDg1MTU2LCA4NTE2MiwgODUxNjgsIDg1MTc0LCA4NTE4MSwgODUxODgsIDg1MTkzLCA4NTE5OCwgODUyMDMsIAotICAgIDg1MjA4LCA4NTIyMCwgODUyMzIsIDg1MjQzLCA4NTI1NCwgODUyNjYsIDg1Mjc4LCA4NTI4NiwgMCwgMCwgODUyOTQsIDAsIAotICAgIDg1MzAyLCA4NTMwNiwgODUzMTAsIDg1MzEzLCA4NTMxNywgODUzMjEsIDg1MzI0LCA4NTMyNywgODUzMzEsIDg1MzM1LCAKLSAgICA4NTMzOCwgODUzNDEsIDg1MzQ0LCA4NTM0NywgODUzNTIsIDg1MzU1LCA4NTM1OSwgODUzNjIsIDg1MzY1LCA4NTM2OCwgCi0gICAgODUzNzEsIDg1Mzc0LCA4NTM3NywgODUzODAsIDg1MzgzLCA4NTM4NiwgODUzODksIDg1MzkyLCA4NTM5NiwgODU0MDAsIAotICAgIDg1NDA0LCA4NTQwOCwgODU0MTMsIDg1NDE4LCA4NTQyNCwgODU0MzAsIDg1NDM2LCA4NTQ0MSwgODU0NDcsIDg1NDUzLCAKLSAgICA4NTQ1OSwgODU0NjQsIDg1NDcwLCA4NTQ3NiwgODU0ODEsIDg1NDg2LCA4NTQ5MiwgODU0OTcsIDg1NTAzLCA4NTUwOSwgCi0gICAgODU1MTQsIDg1NTIwLCA4NTUyNiwgODU1MzEsIDg1NTM3LCA4NTU0MywgODU1NDksIDg1NTU1LCA4NTU2MSwgODU1NjUsIAotICAgIDg1NTcwLCA4NTU3NCwgODU1NzksIDg1NTgzLCA4NTU4OCwgODU1OTMsIDg1NTk5LCA4NTYwNSwgODU2MTEsIDg1NjE2LCAKLSAgICA4NTYyMiwgODU2MjgsIDg1NjM0LCA4NTYzOSwgODU2NDUsIDg1NjUxLCA4NTY1NiwgODU2NjEsIDg1NjY3LCA4NTY3MiwgCi0gICAgODU2NzgsIDg1Njg0LCA4NTY4OSwgODU2OTUsIDg1NzAxLCA4NTcwNiwgODU3MTIsIDg1NzE4LCA4NTcyNCwgODU3MzAsIAotICAgIDg1NzM2LCA4NTc0MSwgODU3NDUsIDg1NzUwLCA4NTc1MiwgODU3NTcsIDg1NzYyLCA4NTc2OCwgODU3NzMsIDg1Nzc4LCAKLSAgICA4NTc4MiwgODU3ODgsIDg1NzkzLCA4NTc5OCwgODU4MDMsIDg1ODA4LCA4NTgxMywgODU4MTgsIDg1ODIzLCA4NTgyOSwgCi0gICAgODU4MzUsIDg1ODQxLCA4NTg0OSwgODU4NTMsIDg1ODU3LCA4NTg2MSwgODU4NjUsIDg1ODY5LCA4NTg3MywgODU4NzgsIAotICAgIDg1ODgzLCA4NTg4OCwgODU4OTMsIDg1ODk3LCA4NTkwMiwgODU5MDcsIDg1OTEyLCA4NTkxNywgODU5MjIsIDg1OTI3LCAKLSAgICA4NTkzMiwgODU5MzcsIDg1OTQxLCA4NTk0NSwgODU5NTAsIDg1OTU1LCA4NTk2MCwgODU5NjUsIDg1OTY5LCA4NTk3NCwgCi0gICAgODU5NzksIDg1OTg0LCA4NTk4OSwgODU5OTMsIDg1OTk4LCA4NjAwMywgODYwMDgsIDg2MDEzLCA4NjAxNywgODYwMjIsIAotICAgIDg2MDI3LCA4NjAzMSwgODYwMzYsIDg2MDQxLCA4NjA0NiwgODYwNTEsIDg2MDU2LCA4NjA2MSwgODYwNjgsIDg2MDc1LCAKLSAgICA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYwOTksIDg2MTA0LCA4NjEwOSwgODYxMTQsIDg2MTE5LCA4NjEyNCwgCi0gICAgODYxMjksIDg2MTM0LCA4NjEzOSwgODYxNDQsIDg2MTQ5LCA4NjE1NCwgODYxNTksIDg2MTY0LCA4NjE2OSwgODYxNzQsIAotICAgIDg2MTc5LCA4NjE4NCwgODYxODksIDg2MTk0LCA4NjE5OSwgODYyMDQsIDg2MjA5LCA4NjIxNCwgODYyMTksIDg2MjI0LCAwLCAKLSAgICAwLCAwLCA4NjIyOSwgODYyMzMsIDg2MjM4LCA4NjI0MiwgODYyNDcsIDg2MjUyLCAwLCAwLCA4NjI1NiwgODYyNjEsIAotICAgIDg2MjY2LCA4NjI3MCwgODYyNzUsIDg2MjgwLCAwLCAwLCA4NjI4NSwgODYyOTAsIDg2Mjk0LCA4NjI5OSwgODYzMDQsIAotICAgIDg2MzA5LCAwLCAwLCA4NjMxNCwgODYzMTksIDg2MzI0LCAwLCAwLCAwLCA4NjMyOCwgODYzMzIsIDg2MzM2LCA4NjM0MCwgCi0gICAgODYzNDMsIDg2MzQ3LCA4NjM1MSwgMCwgODYzNTUsIDg2MzYxLCA4NjM2NCwgODYzNjgsIDg2MzcxLCA4NjM3NSwgODYzNzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MzgzLCA4NjM4OSwgODYzOTUsIDg2NDAxLCA4NjQwNywgMCwgMCwgCi0gICAgODY0MTEsIDg2NDE3LCA4NjQyMywgODY0MjksIDg2NDM1LCA4NjQ0MSwgODY0NDgsIDg2NDU1LCA4NjQ2MiwgODY0NjksIAotICAgIDg2NDc2LCA4NjQ4MywgMCwgODY0OTAsIDg2NDk3LCA4NjUwNCwgODY1MTAsIDg2NTE3LCA4NjUyNCwgODY1MzEsIDg2NTM4LCAKLSAgICA4NjU0NCwgODY1NTEsIDg2NTU4LCA4NjU2NSwgODY1NzIsIDg2NTc4LCA4NjU4NSwgODY1OTIsIDg2NTk5LCA4NjYwNiwgCi0gICAgODY2MTIsIDg2NjE5LCA4NjYyNiwgODY2MzMsIDg2NjQwLCA4NjY0NywgODY2NTQsIDg2NjYxLCAwLCA4NjY2OCwgODY2NzQsIAotICAgIDg2NjgxLCA4NjY4OCwgODY2OTUsIDg2NzAyLCA4NjcwOCwgODY3MTUsIDg2NzIyLCA4NjcyOSwgODY3MzYsIDg2NzQzLCAKLSAgICA4Njc1MCwgODY3NTcsIDg2NzYzLCA4Njc3MCwgODY3NzcsIDg2Nzg0LCA4Njc5MSwgMCwgODY3OTgsIDg2ODA1LCAwLCAKLSAgICA4NjgxMiwgODY4MTksIDg2ODI2LCA4NjgzMywgODY4NDAsIDg2ODQ3LCA4Njg1NCwgODY4NjEsIDg2ODY4LCA4Njg3NSwgCi0gICAgODY4ODIsIDg2ODg5LCA4Njg5NiwgODY5MDMsIDg2OTEwLCAwLCAwLCA4NjkxNiwgODY5MjEsIDg2OTI2LCA4NjkzMSwgCi0gICAgODY5MzYsIDg2OTQxLCA4Njk0NiwgODY5NTEsIDg2OTU2LCA4Njk2MSwgODY5NjYsIDg2OTcxLCA4Njk3NiwgODY5ODEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2OTg2LCA4Njk5MywgODcwMDAsIDg3MDA3LCA4NzAxNCwgODcwMjEsIAotICAgIDg3MDI4LCA4NzAzNSwgODcwNDIsIDg3MDQ5LCA4NzA1NiwgODcwNjMsIDg3MDcwLCA4NzA3NywgODcwODQsIDg3MDkxLCAKLSAgICA4NzA5OCwgODcxMDUsIDg3MTEyLCA4NzExOSwgODcxMjcsIDg3MTM1LCA4NzE0MiwgODcxNDksIDg3MTU0LCA4NzE2MiwgCi0gICAgODcxNzAsIDg3MTc3LCA4NzE4NCwgODcxODksIDg3MTk2LCA4NzIwMSwgODcyMDYsIDg3MjEzLCA4NzIxOCwgODcyMjMsIAotICAgIDg3MjI4LCA4NzIzNiwgODcyNDEsIDg3MjQ2LCA4NzI1MywgODcyNTgsIDg3MjYzLCA4NzI3MCwgODcyNzcsIDg3MjgyLCAKLSAgICA4NzI4NywgODcyOTIsIDg3Mjk3LCA4NzMwMiwgODczMDcsIDg3MzEyLCA4NzMxNywgODczMjIsIDg3MzI5LCA4NzMzNCwgCi0gICAgODczNDEsIDg3MzQ2LCA4NzM1MSwgODczNTYsIDg3MzYxLCA4NzM2NiwgODczNzEsIDg3Mzc2LCA4NzM4MSwgODczODYsIAotICAgIDg3MzkxLCA4NzM5NiwgODc0MDMsIDg3NDEwLCA4NzQxNywgODc0MjQsIDg3NDMwLCA4NzQzNSwgODc0NDIsIDg3NDQ3LCAKLSAgICA4NzQ1MiwgODc0NjEsIDg3NDY4LCA4NzQ3NywgODc0ODQsIDg3NDg5LCA4NzQ5NCwgODc1MDIsIDg3NTA3LCA4NzUxMiwgCi0gICAgODc1MTcsIDg3NTIyLCA4NzUyNywgODc1MzQsIDg3NTM5LCA4NzU0NCwgODc1NDksIDg3NTU0LCA4NzU1OSwgODc1NjYsIAotICAgIDg3NTczLCA4NzU4MCwgODc1ODcsIDg3NTk0LCA4NzYwMSwgODc2MDgsIDg3NjE1LCA4NzYyMiwgODc2MjksIDg3NjM2LCAKLSAgICA4NzY0MywgODc2NTAsIDg3NjU3LCA4NzY2NCwgODc2NzEsIDg3Njc4LCA4NzY4NSwgODc2OTIsIDg3Njk5LCA4NzcwNiwgCi0gICAgODc3MTMsIDg3NzIwLCA4NzcyNywgODc3MzQsIDg3NzQxLCA4Nzc0OCwgODc3NTUsIDAsIDAsIDAsIDAsIDAsIDg3NzYyLCAKLSAgICA4Nzc3MCwgODc3NzgsIDAsIDAsIDAsIDAsIDg3NzgzLCA4Nzc4NywgODc3OTEsIDg3Nzk1LCA4Nzc5OSwgODc4MDMsIAotICAgIDg3ODA3LCA4NzgxMSwgODc4MTUsIDg3ODE5LCA4NzgyNCwgODc4MjksIDg3ODM0LCA4NzgzOSwgODc4NDQsIDg3ODQ5LCAKLSAgICA4Nzg1NCwgODc4NTksIDg3ODY0LCA4Nzg3MCwgODc4NzYsIDg3ODgyLCA4Nzg4OSwgODc4OTYsIDg3OTAzLCA4NzkxMCwgCi0gICAgODc5MTcsIDg3OTI0LCA4NzkzMCwgODc5MzYsIDg3OTQyLCA4Nzk0OSwgODc5NTYsIDg3OTYzLCA4Nzk3MCwgODc5NzcsIAotICAgIDg3OTg0LCA4Nzk5MSwgODc5OTgsIDg4MDA1LCA4ODAxMiwgODgwMTksIDg4MDI2LCA4ODAzMywgODgwNDAsIDAsIDAsIDAsIAotICAgIDg4MDQ3LCA4ODA1NSwgODgwNjMsIDg4MDcxLCA4ODA3OSwgODgwODcsIDg4MDk3LCA4ODEwNywgODgxMTUsIDg4MTIzLCAKLSAgICA4ODEzMSwgODgxMzksIDg4MTQ3LCA4ODE1MywgODgxNjAsIDg4MTY5LCA4ODE3OCwgODgxODcsIDg4MTk2LCA4ODIwNSwgCi0gICAgODgyMTQsIDg4MjI0LCA4ODIzNSwgODgyNDUsIDg4MjU2LCA4ODI2NSwgODgyNzQsIDg4MjgzLCA4ODI5MywgODgzMDQsIAotICAgIDg4MzE0LCA4ODMyNSwgODgzMzYsIDg4MzQ1LCA4ODM1MywgODgzNTksIDg4MzY1LCA4ODM3MSwgODgzNzcsIDg4Mzg1LCAKLSAgICA4ODM5MywgODgzOTksIDg4NDA2LCA4ODQxNiwgODg0MjMsIDg4NDMwLCA4ODQzNywgODg0NDQsIDg4NDUxLCA4ODQ2MSwgCi0gICAgODg0NjgsIDg4NDc1LCA4ODQ4MywgODg0OTEsIDg4NTAwLCA4ODUwOSwgODg1MTgsIDg4NTI3LCA4ODUzNiwgODg1NDQsIAotICAgIDg4NTUzLCA4ODU2MiwgODg1NzEsIDg4NTc1LCA4ODU4MiwgODg1ODcsIDg4NTkyLCA4ODU5NiwgODg2MDAsIDg4NjA0LCAKLSAgICA4ODYwOCwgODg2MTMsIDg4NjE4LCA4ODYyNCwgODg2MzAsIDg4NjM0LCA4ODY0MCwgODg2NDQsIDg4NjQ4LCA4ODY1MiwgCi0gICAgODg2NTYsIDg4NjYwLCA4ODY2NCwgODg2NzAsIDAsIDAsIDAsIDAsIDAsIDg4Njc0LCA4ODY3OSwgODg2ODQsIDg4Njg5LCAKLSAgICA4ODY5NCwgODg3MDEsIDg4NzA2LCA4ODcxMSwgODg3MTYsIDg4NzIxLCA4ODcyNiwgODg3MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzM2LCAKLSAgICA4ODc0MywgODg3NTIsIDg4NzYxLCA4ODc2OCwgODg3NzUsIDg4NzgyLCA4ODc4OSwgODg3OTYsIDg4ODAzLCA4ODgwOSwgCi0gICAgODg4MTYsIDg4ODIzLCA4ODgzMCwgODg4MzcsIDg4ODQ0LCA4ODg1MSwgODg4NTgsIDg4ODY1LCA4ODg3NCwgODg4ODEsIAotICAgIDg4ODg4LCA4ODg5NSwgODg5MDIsIDg4OTA5LCA4ODkxNiwgODg5MjMsIDg4OTMwLCA4ODkzOSwgODg5NDYsIDg4OTUzLCAKLSAgICA4ODk2MCwgODg5NjcsIDg4OTc0LCA4ODk4MSwgODg5OTAsIDg4OTk3LCA4OTAwNCwgODkwMTEsIDg5MDE4LCA4OTAyNywgCi0gICAgODkwMzQsIDg5MDQxLCA4OTA0OCwgODkwNTYsIDg5MDY1LCAwLCAwLCA4OTA3NCwgODkwNzgsIDg5MDgyLCA4OTA4NywgCi0gICAgODkwOTIsIDg5MDk3LCA4OTEwMiwgODkxMDYsIDg5MTExLCA4OTExNiwgODkxMjEsIDg5MTI2LCA4OTEzMSwgODkxMzYsIAotICAgIDg5MTQwLCA4OTE0NCwgODkxNDksIDg5MTU0LCA4OTE1OSwgODkxNjMsIDg5MTY4LCA4OTE3MywgODkxNzcsIDg5MTgyLCAKLSAgICA4OTE4NywgODkxOTIsIDg5MTk3LCA4OTIwMiwgODkyMDcsIDAsIDAsIDAsIDg5MjEyLCA4OTIxNiwgODkyMjEsIDg5MjI2LCAKLSAgICA4OTIzMCwgODkyMzUsIDg5MjM5LCA4OTI0NCwgODkyNDksIDg5MjU0LCA4OTI1OSwgODkyNjMsIDg5MjY3LCA4OTI3MiwgCi0gICAgODkyNzcsIDg5MjgyLCA4OTI4NywgODkyOTIsIDg5Mjk3LCA4OTMwMSwgODkzMDYsIDg5MzExLCA4OTMxNiwgODkzMjEsIAotICAgIDg5MzI2LCA4OTMzMSwgODkzMzUsIDg5MzM5LCA4OTM0NCwgODkzNDksIDg5MzU0LCA4OTM1OSwgODkzNjQsIDg5MzY5LCAKLSAgICA4OTM3NCwgODkzNzksIDg5Mzg0LCA4OTM4OSwgODkzOTQsIDg5Mzk5LCA4OTQwNCwgODk0MDksIDg5NDE0LCA4OTQxOSwgCi0gICAgODk0MjQsIDg5NDI5LCA4OTQzNCwgODk0MzksIDg5NDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTQ0OSwgODk0NTMsIDg5NDU4LCA4OTQ2MywgODk0NjgsIDg5NDcyLCAKLSAgICA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgODk0OTYsIDg5NTAwLCA4OTUwNSwgODk1MTAsIDg5NTE1LCA4OTUyMCwgCi0gICAgODk1MjQsIDg5NTI5LCA4OTUzNCwgODk1MzksIDg5NTQ0LCA4OTU0OSwgODk1NTQsIDg5NTU4LCA4OTU2MywgODk1NjgsIAotICAgIDg5NTczLCA4OTU3OCwgODk1ODMsIDg5NTg4LCA4OTU5MywgMCwgODk1OTgsIDg5NjAzLCA4OTYwOCwgODk2MTQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NjIwLCA4OTYyNSwgODk2MzAsIDg5NjM1LCA4OTY0MCwgODk2NDUsIAotICAgIDg5NjUwLCA4OTY1NSwgODk2NjAsIDg5NjY1LCA4OTY3MCwgODk2NzUsIDg5NjgwLCA4OTY4NSwgODk2OTAsIDg5Njk1LCAKLSAgICA4OTcwMCwgODk3MDUsIDg5NzEwLCA4OTcxNSwgODk3MjAsIDg5NzI1LCA4OTczMCwgODk3MzUsIDg5NzQwLCA4OTc0NSwgCi0gICAgODk3NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NzU3LCA4OTc2MiwgODk3NjcsIDg5NzcyLCA4OTc3NywgODk3ODIsIDg5Nzg3LCAKLSAgICA4OTc5MiwgODk3OTcsIDg5ODAyLCA4OTgwNywgODk4MTIsIDg5ODE3LCA4OTgyMiwgODk4MjcsIDg5ODMyLCA4OTgzNywgCi0gICAgODk4NDIsIDg5ODQ3LCA4OTg1MiwgODk4NTcsIDg5ODYyLCA4OTg2NywgODk4NzIsIDg5ODc3LCA4OTg4MiwgODk4ODcsIAotICAgIDg5ODkxLCA4OTg5NSwgODk4OTksIDAsIDg5OTA0LCA4OTkxMCwgODk5MTUsIDg5OTIwLCA4OTkyNSwgODk5MzAsIDg5OTM2LCAKLSAgICA4OTk0MiwgODk5NDgsIDg5OTU0LCA4OTk2MCwgODk5NjYsIDg5OTcyLCA4OTk3OCwgODk5ODQsIDg5OTkwLCA4OTk5NiwgCi0gICAgOTAwMDIsIDkwMDA4LCA5MDAxMywgOTAwMTksIDkwMDI1LCA5MDAzMCwgOTAwMzYsIDkwMDQxLCA5MDA0NywgOTAwNTMsIAotICAgIDkwMDU4LCA5MDA2NCwgOTAwNzAsIDkwMDc1LCA5MDA4MSwgOTAwODcsIDkwMDkyLCA5MDA5OCwgOTAxMDQsIDkwMTEwLCAwLCAKLSAgICAwLCAwLCAwLCA5MDExNSwgOTAxMjEsIDkwMTI3LCA5MDEzMywgOTAxMzksIDkwMTQ1LCA5MDE1MSwgOTAxNTcsIDkwMTYzLCAKLSAgICA5MDE3MCwgOTAxNzUsIDkwMTgwLCA5MDE4NiwgOTAxOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDkwMTk4LCA5MDIwMywgOTAyMDgsIDkwMjEzLCA5MDIxOSwgOTAyMjQsIDkwMjMwLCA5MDIzNiwgCi0gICAgOTAyNDIsIDkwMjQ4LCA5MDI1NSwgOTAyNjEsIDkwMjY4LCA5MDI3MywgOTAyNzgsIDkwMjgzLCA5MDI4OCwgOTAyOTMsIAotICAgIDkwMjk4LCA5MDMwMywgOTAzMDgsIDkwMzEzLCA5MDMxOCwgOTAzMjMsIDkwMzI4LCA5MDMzMywgOTAzMzgsIDkwMzQzLCAKLSAgICA5MDM0OCwgOTAzNTMsIDkwMzU4LCA5MDM2MywgOTAzNjgsIDkwMzczLCA5MDM3OCwgOTAzODMsIDkwMzg4LCA5MDM5MywgCi0gICAgOTAzOTgsIDkwNDAzLCA5MDQwOCwgOTA0MTMsIDkwNDE4LCA5MDQyMywgOTA0MjksIDkwNDM0LCA5MDQ0MCwgOTA0NDYsIAotICAgIDkwNDUyLCA5MDQ1OCwgOTA0NjUsIDkwNDcxLCA5MDQ3OCwgOTA0ODMsIDkwNDg4LCA5MDQ5MywgOTA0OTgsIDkwNTAzLCAKLSAgICA5MDUwOCwgOTA1MTMsIDkwNTE4LCA5MDUyMywgOTA1MjgsIDkwNTMzLCA5MDUzOCwgOTA1NDMsIDkwNTQ4LCA5MDU1MywgCi0gICAgOTA1NTgsIDkwNTYzLCA5MDU2OCwgOTA1NzMsIDkwNTc4LCA5MDU4MywgOTA1ODgsIDkwNTkzLCA5MDU5OCwgOTA2MDMsIAotICAgIDkwNjA4LCA5MDYxMywgOTA2MTgsIDkwNjIzLCA5MDYyOCwgOTA2MzMsIDkwNjM4LCA5MDY0MywgOTA2NDgsIDkwNjUzLCAKLSAgICA5MDY1OCwgOTA2NjMsIDkwNjY4LCA5MDY3MywgOTA2NzgsIDkwNjgzLCA5MDY4OCwgOTA2OTMsIDkwNjk4LCA5MDcwMywgCi0gICAgOTA3MDgsIDkwNzEzLCA5MDcxOCwgOTA3MjMsIDkwNzI4LCA5MDczMywgOTA3MzgsIDkwNzQzLCA5MDc0OCwgOTA3NTMsIAotICAgIDkwNzU4LCA5MDc2MywgOTA3NjgsIDkwNzczLCA5MDc3OCwgOTA3ODMsIDkwNzg4LCA5MDc5MywgOTA3OTgsIDkwODAzLCAKLSAgICA5MDgwOCwgOTA4MTMsIDkwODE4LCA5MDgyMywgOTA4MjgsIDkwODMzLCA5MDgzOCwgOTA4NDMsIDkwODQ4LCA5MDg1MywgCi0gICAgOTA4NTgsIDkwODYzLCA5MDg2OCwgOTA4NzMsIDkwODc4LCA5MDg4MywgOTA4ODgsIDkwODkzLCA5MDg5NywgOTA5MDEsIAotICAgIDkwOTA2LCA5MDkxMSwgOTA5MTYsIDkwOTIxLCA5MDkyNiwgOTA5MzEsIDkwOTM2LCA5MDk0MSwgOTA5NDYsIDkwOTUxLCAKLSAgICA5MDk1NiwgOTA5NjAsIDkwOTY0LCA5MDk2OCwgOTA5NzIsIDkwOTc2LCA5MDk4MCwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgMCwgCi0gICAgMCwgOTA5OTksIDkxMDA0LCA5MTAwOCwgOTEwMTIsIDkxMDE2LCA5MTAyMCwgOTEwMjQsIDkxMDI4LCA5MTAzMiwgOTEwMzYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMDQwLCA5MTA0NCwgOTEwNDgsIDkxMDUyLCAKLSAgICA5MTA1NiwgOTEwNjAsIDAsIDAsIDkxMDY1LCAwLCA5MTA3MCwgOTEwNzQsIDkxMDc5LCA5MTA4NCwgOTEwODksIDkxMDk0LCAKLSAgICA5MTA5OSwgOTExMDQsIDkxMTA5LCA5MTExNCwgOTExMTksIDkxMTIzLCA5MTEyOCwgOTExMzMsIDkxMTM4LCA5MTE0MywgCi0gICAgOTExNDcsIDkxMTUyLCA5MTE1NywgOTExNjIsIDkxMTY3LCA5MTE3MSwgOTExNzYsIDkxMTgxLCA5MTE4NiwgOTExOTEsIAotICAgIDkxMTk1LCA5MTIwMCwgOTEyMDUsIDkxMjEwLCA5MTIxNSwgOTEyMTksIDkxMjI0LCA5MTIyOSwgOTEyMzQsIDkxMjM5LCAKLSAgICA5MTI0NCwgOTEyNDksIDkxMjU0LCA5MTI1OCwgOTEyNjMsIDkxMjY4LCA5MTI3MywgOTEyNzgsIDAsIDkxMjgzLCA5MTI4OCwgCi0gICAgMCwgMCwgMCwgOTEyOTMsIDAsIDAsIDkxMjk4LCA5MTMwMywgOTEzMTAsIDkxMzE3LCA5MTMyNCwgOTEzMzEsIDkxMzM4LCAKLSAgICA5MTM0NSwgOTEzNTIsIDkxMzU5LCA5MTM2NiwgOTEzNzMsIDkxMzgwLCA5MTM4NywgOTEzOTQsIDkxNDAxLCA5MTQwOCwgCi0gICAgOTE0MTUsIDkxNDIyLCA5MTQyOSwgOTE0MzYsIDkxNDQzLCA5MTQ1MCwgMCwgOTE0NTcsIDkxNDY0LCA5MTQ3MCwgOTE0NzYsIAotICAgIDkxNDgyLCA5MTQ4OSwgOTE0OTYsIDkxNTA0LCA5MTUxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE1MjEsIDkxNTI2LCAKLSAgICA5MTUzMSwgOTE1MzYsIDkxNTQxLCA5MTU0NiwgOTE1NTEsIDkxNTU2LCA5MTU2MSwgOTE1NjYsIDkxNTcxLCA5MTU3NiwgCi0gICAgOTE1ODEsIDkxNTg2LCA5MTU5MSwgOTE1OTYsIDkxNjAxLCA5MTYwNiwgOTE2MTEsIDkxNjE2LCA5MTYyMSwgOTE2MjYsIAotICAgIDkxNjMxLCA5MTYzNSwgOTE2NDAsIDkxNjQ1LCA5MTY1MSwgOTE2NTUsIDAsIDAsIDAsIDkxNjU5LCA5MTY2NSwgOTE2NjksIAotICAgIDkxNjc0LCA5MTY3OSwgOTE2ODQsIDkxNjg4LCA5MTY5MywgOTE2OTcsIDkxNzAyLCA5MTcwNywgOTE3MTEsIDkxNzE1LCAKLSAgICA5MTcyMCwgOTE3MjQsIDkxNzI4LCA5MTczMywgOTE3MzgsIDkxNzQyLCA5MTc0NywgOTE3NTIsIDkxNzU3LCA5MTc2MiwgCi0gICAgOTE3NjcsIDkxNzcyLCA5MTc3NywgOTE3ODIsIDAsIDAsIDAsIDAsIDAsIDkxNzg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc5MiwgOTE3OTgsIDkxODA0LCA5MTgxMCwgOTE4MTYsIDkxODIyLCA5MTgyOSwgCi0gICAgOTE4MzYsIDkxODQzLCA5MTg0OSwgOTE4NTUsIDkxODYxLCA5MTg2OCwgOTE4NzUsIDkxODgyLCA5MTg4OCwgOTE4OTUsIAotICAgIDkxOTAyLCA5MTkwOSwgOTE5MTYsIDkxOTIyLCA5MTkyOSwgOTE5MzYsIDkxOTQyLCA5MTk0OSwgOTE5NTYsIDkxOTYzLCAKLSAgICA5MTk3MCwgOTE5NzcsIDkxOTgzLCA5MTk5MCwgOTE5OTcsIDkyMDA0LCA5MjAxMCwgOTIwMTYsIDkyMDIyLCA5MjAyOCwgCi0gICAgOTIwMzQsIDkyMDQxLCA5MjA0OCwgOTIwNTQsIDkyMDYwLCA5MjA2NiwgOTIwNzMsIDkyMDc5LCA5MjA4NiwgOTIwOTMsIAotICAgIDkyMTAwLCA5MjEwNiwgOTIxMTQsIDkyMTIxLCA5MjEyNywgOTIxMzQsIDkyMTQxLCA5MjE0OCwgOTIxNTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDkyMTYxLCA5MjE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTIxNzcsIDkyMTgxLCA5MjE4NiwgOTIxOTEsIDAsIDkyMTk3LCA5MjIwMiwgMCwgMCwgMCwgMCwgMCwgOTIyMDcsIDkyMjEzLCAKLSAgICA5MjIyMCwgOTIyMjUsIDkyMjMwLCA5MjIzNCwgOTIyMzksIDkyMjQ0LCAwLCA5MjI0OSwgOTIyNTQsIDkyMjU5LCAwLCAKLSAgICA5MjI2NCwgOTIyNjksIDkyMjc0LCA5MjI3OSwgOTIyODQsIDkyMjg5LCA5MjI5NCwgOTIyOTksIDkyMzA0LCA5MjMwOSwgCi0gICAgOTIzMTQsIDkyMzE4LCA5MjMyMiwgOTIzMjcsIDkyMzMyLCA5MjMzNywgOTIzNDEsIDkyMzQ1LCA5MjM0OSwgOTIzNTQsIAotICAgIDkyMzU5LCA5MjM2NCwgOTIzNjksIDkyMzczLCA5MjM3OCwgOTIzODIsIDkyMzg3LCAwLCAwLCAwLCAwLCA5MjM5MiwgCi0gICAgOTIzOTgsIDkyNDAzLCAwLCAwLCAwLCAwLCA5MjQwOCwgOTI0MTIsIDkyNDE2LCA5MjQyMCwgOTI0MjQsIDkyNDI4LCAKLSAgICA5MjQzMywgOTI0MzgsIDkyNDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjQ1MCwgOTI0NTYsIDkyNDYzLCA5MjQ2OSwgCi0gICAgOTI0NzYsIDkyNDgyLCA5MjQ4OCwgOTI0OTQsIDkyNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjUwNywgOTI1MTUsIAotICAgIDkyNTIzLCA5MjUzMSwgOTI1MzksIDkyNTQ3LCA5MjU1NSwgOTI1NjMsIDkyNTcxLCA5MjU3OSwgOTI1ODcsIDkyNTk1LCAKLSAgICA5MjYwMywgOTI2MTEsIDkyNjE5LCA5MjYyNywgOTI2MzUsIDkyNjQzLCA5MjY1MSwgOTI2NTksIDkyNjY3LCA5MjY3NSwgCi0gICAgOTI2ODMsIDkyNjkxLCA5MjY5OSwgOTI3MDcsIDkyNzE1LCA5MjcyMywgOTI3MzEsIDkyNzM5LCA5Mjc0NiwgOTI3NTQsIAotICAgIDkyNzYyLCA5Mjc2NiwgOTI3NzEsIDkyNzc2LCA5Mjc4MSwgOTI3ODYsIDkyNzkxLCA5Mjc5NiwgOTI4MDEsIDkyODA1LCAKLSAgICA5MjgxMCwgOTI4MTQsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMyLCA5MjgzNywgOTI4NDIsIDkyODQ3LCA5Mjg1MiwgCi0gICAgOTI4NTcsIDkyODYyLCA5Mjg2NywgOTI4NzIsIDkyODc3LCA5Mjg4MiwgOTI4ODcsIDkyODkyLCA5Mjg5NywgOTI5MDIsIAotICAgIDkyOTA3LCA5MjkxMiwgOTI5MTcsIDkyOTIyLCA5MjkyNywgOTI5MzIsIDkyOTM3LCA5Mjk0MiwgOTI5NDcsIDkyOTUyLCAKLSAgICA5Mjk1NywgOTI5NjIsIDkyOTY3LCA5Mjk3MiwgOTI5NzcsIDkyOTgyLCA5Mjk4NywgOTI5OTIsIDkyOTk3LCA5MzAwMiwgCi0gICAgOTMwMDcsIDkzMDEyLCA5MzAxNywgOTMwMjIsIDAsIDAsIDAsIDkzMDI3LCA5MzAzMiwgOTMwNDEsIDkzMDQ5LCA5MzA1OCwgCi0gICAgOTMwNjcsIDkzMDc4LCA5MzA4OSwgOTMwOTYsIDkzMTAzLCA5MzExMCwgOTMxMTcsIDkzMTI0LCA5MzEzMSwgOTMxMzgsIAotICAgIDkzMTQ1LCA5MzE1MiwgOTMxNTksIDkzMTY2LCA5MzE3MywgOTMxODAsIDkzMTg3LCA5MzE5NCwgOTMyMDEsIDkzMjA4LCAKLSAgICA5MzIxNSwgOTMyMjIsIDkzMjI5LCA5MzIzNiwgMCwgMCwgOTMyNDMsIDkzMjQ5LCA5MzI1NSwgOTMyNjEsIDkzMjY3LCAKLSAgICA5MzI3NCwgOTMyODEsIDkzMjg5LCA5MzI5NywgOTMzMDQsIDkzMzExLCA5MzMxOCwgOTMzMjUsIDkzMzMyLCA5MzMzOSwgCi0gICAgOTMzNDYsIDkzMzUzLCA5MzM2MCwgOTMzNjcsIDkzMzc0LCA5MzM4MSwgOTMzODgsIDkzMzk1LCA5MzQwMiwgOTM0MDksIAotICAgIDkzNDE2LCA5MzQyMywgMCwgMCwgMCwgMCwgMCwgOTM0MzAsIDkzNDM2LCA5MzQ0MiwgOTM0NDgsIDkzNDU0LCA5MzQ2MSwgCi0gICAgOTM0NjgsIDkzNDc2LCA5MzQ4NCwgOTM0OTAsIDkzNDk2LCA5MzUwMywgOTM1MDksIDkzNTE1LCA5MzUyMSwgOTM1MjcsIAotICAgIDkzNTM0LCA5MzU0MSwgOTM1NDgsIDkzNTU1LCA5MzU2MiwgOTM1NjksIDkzNTc2LCA5MzU4MywgOTM1OTAsIDkzNTk3LCAKLSAgICA5MzYwNCwgOTM2MTEsIDkzNjE4LCA5MzYyNSwgOTM2MzIsIDkzNjM5LCA5MzY0NiwgOTM2NTMsIDkzNjYwLCA5MzY2NywgCi0gICAgOTM2NzQsIDkzNjgxLCA5MzY4OCwgOTM2OTUsIDkzNzAyLCA5MzcwOSwgOTM3MTYsIDkzNzIzLCA5MzczMCwgOTM3MzcsIAotICAgIDkzNzQ0LCA5Mzc1MSwgOTM3NTgsIDkzNzY1LCA5Mzc3MiwgOTM3NzksIDkzNzg2LCA5Mzc5MywgOTM4MDAsIDkzODA3LCAKLSAgICA5MzgxNCwgOTM4MjEsIDkzODI4LCA5MzgzNSwgOTM4NDIsIDkzODQ5LCA5Mzg1NiwgOTM4NjMsIDkzODcwLCA5Mzg3NywgCi0gICAgOTM4ODQsIDkzODkxLCA5Mzg5OCwgOTM5MDUsIDkzOTEyLCA5MzkxOSwgOTM5MjYsIDkzOTMzLCA5Mzk0MCwgOTM5NDcsIAotICAgIDkzOTU0LCA5Mzk2MSwgOTM5NjgsIDkzOTc1LCA5Mzk4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTU3OTUsIDk1Nzk5LCA5NTgwNCwgOTU4MDksIDk1ODE0LCA5NTgxOSwgOTU4MjQsIDk1ODI5LCA5NTgzNCwgOTU4MzgsIAorICAgIDk1ODQzLCA5NTg0OCwgOTU4NTMsIDk1ODU4LCA5NTg2MiwgOTU4NjcsIDk1ODcyLCA5NTg3NywgOTU4ODIsIDk1ODg3LCAKKyAgICA5NTg5MiwgOTU4OTcsIDk1OTAyLCA5NTkwNiwgOTU5MTEsIDk1OTE2LCA5NTkyMSwgOTU5MjYsIDk1OTMxLCA5NTkzNiwgCisgICAgOTU5NDEsIDk1OTQ2LCA5NTk1MCwgOTU5NTUsIDk1OTYwLCA5NTk2NSwgOTU5NzAsIDk1OTc1LCA5NTk4MCwgOTU5ODUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1OTkwLCA5NTk5NywgOTYwMDQsIDk2MDExLCA5NjAxOCwgOTYwMjUsIDk2MDMyLCAKKyAgICA5NjAzOSwgOTYwNDYsIDk2MDUzLCA5NjA2MCwgOTYwNjcsIDk2MDc0LCA5NjA4MSwgOTYwODgsIDk2MDk1LCA5NjEwMiwgCisgICAgOTYxMDksIDk2MTE2LCA5NjEyMywgOTYxMzAsIDk2MTM3LCA5NjE0NCwgOTYxNTEsIDk2MTU4LCA5NjE2NSwgOTYxNzIsIAorICAgIDk2MTc5LCA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNywgOTYyMTQsIDk2MjIxLCA5NjIyOCwgOTYyMzUsIDk2MjQyLCAKKyAgICA5NjI0OSwgOTYyNTYsIDk2MjYzLCA5NjI3MCwgOTYyNzcsIDk2Mjg0LCA5NjI5MSwgOTYyOTgsIDk2MzA1LCA5NjMxMiwgCisgICAgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM5ODksIDkzOTkzLCAKLSAgICA5Mzk5NywgOTQwMDEsIDk0MDA1LCA5NDAwOSwgOTQwMTMsIDk0MDE3LCA5NDAyMSwgOTQwMjUsIDk0MDMwLCA5NDAzNSwgCi0gICAgOTQwNDAsIDk0MDQ1LCA5NDA1MCwgOTQwNTUsIDk0MDYwLCA5NDA2NSwgOTQwNzAsIDk0MDc2LCA5NDA4MiwgOTQwODgsIAotICAgIDk0MDk1LCA5NDEwMiwgOTQxMDksIDk0MTE2LCA5NDEyMywgOTQxMzAsIDk0MTM3LCA5NDE0NCwgOTQxNTEsIDAsIDk0MTU4LCAKLSAgICA5NDE2MiwgOTQxNjYsIDk0MTcwLCA5NDE3NCwgOTQxNzgsIDk0MTgxLCA5NDE4NSwgOTQxODgsIDk0MTkyLCA5NDE5NSwgCi0gICAgOTQxOTksIDk0MjAzLCA5NDIwOCwgOTQyMTIsIDk0MjE3LCA5NDIyMCwgOTQyMjQsIDk0MjI3LCA5NDIzMSwgOTQyMzQsIAotICAgIDk0MjM4LCA5NDI0MiwgOTQyNDYsIDk0MjUwLCA5NDI1NCwgOTQyNTgsIDk0MjYyLCA5NDI2NiwgOTQyNzAsIDk0Mjc0LCAKLSAgICA5NDI3OCwgOTQyODIsIDk0Mjg2LCA5NDI5MCwgOTQyOTQsIDk0Mjk4LCA5NDMwMiwgOTQzMDYsIDk0MzA5LCA5NDMxMiwgCi0gICAgOTQzMTYsIDk0MzIwLCA5NDMyNCwgOTQzMjcsIDk0MzMwLCA5NDMzMywgOTQzMzcsIDk0MzQxLCA5NDM0NSwgOTQzNDksIAotICAgIDk0MzUyLCA5NDM1NSwgOTQzNTksIDk0MzY1LCA5NDM3MSwgOTQzNzcsIDk0MzgyLCA5NDM4OSwgOTQzOTMsIDk0Mzk4LCAKLSAgICA5NDQwMiwgOTQ0MDcsIDk0NDEyLCA5NDQxOCwgOTQ0MjMsIDk0NDI5LCA5NDQzMywgOTQ0MzgsIDk0NDQyLCA5NDQ0NywgCi0gICAgOTQ0NTAsIDk0NDUzLCA5NDQ1NywgOTQ0NjIsIDk0NDY4LCA5NDQ3MywgOTQ0NzksIDAsIDAsIDAsIDAsIDk0NDg0LCAKLSAgICA5NDQ4NywgOTQ0OTAsIDk0NDkzLCA5NDQ5NiwgOTQ0OTksIDk0NTAyLCA5NDUwNSwgOTQ1MDgsIDk0NTExLCA5NDUxNSwgCi0gICAgOTQ1MTksIDk0NTIzLCA5NDUyNywgOTQ1MzEsIDk0NTM1LCA5NDUzOSwgOTQ1NDMsIDk0NTQ3LCA5NDU1MiwgOTQ1NTcsIAotICAgIDk0NTYxLCA5NDU2NCwgOTQ1NjcsIDk0NTcwLCA5NDU3MywgOTQ1NzYsIDk0NTc5LCA5NDU4MiwgOTQ1ODUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NTg4LCA5NDU5MywgOTQ1OTgsIDk0NjAzLCA5NDYwNywgCi0gICAgOTQ2MTIsIDk0NjE2LCA5NDYyMSwgOTQ2MjUsIDk0NjMwLCA5NDYzNCwgOTQ2MzksIDk0NjQzLCA5NDY0OCwgOTQ2NTIsIAotICAgIDk0NjU3LCA5NDY2MiwgOTQ2NjcsIDk0NjcyLCA5NDY3NywgOTQ2ODIsIDk0Njg3LCA5NDY5MiwgOTQ2OTcsIDk0NzAyLCAKLSAgICA5NDcwNywgOTQ3MTIsIDk0NzE3LCA5NDcyMiwgOTQ3MjcsIDk0NzMyLCA5NDczNywgOTQ3NDIsIDk0NzQ3LCA5NDc1MiwgCi0gICAgOTQ3NTYsIDk0NzYwLCA5NDc2NSwgOTQ3NzAsIDk0Nzc1LCA5NDc3OSwgOTQ3ODMsIDk0Nzg3LCA5NDc5MiwgOTQ3OTcsIAotICAgIDk0ODAyLCA5NDgwNywgOTQ4MTEsIDk0ODE1LCA5NDgyMSwgOTQ4MjYsIDk0ODMyLCA5NDgzNywgOTQ4NDMsIDk0ODQ4LCAKLSAgICA5NDg1NCwgOTQ4NTksIDk0ODY1LCA5NDg3MCwgOTQ4NzUsIDk0ODgwLCA5NDg4NSwgOTQ4ODksIDk0ODk0LCA5NDkwMCwgCi0gICAgOTQ5MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0OTA5LCA5NDkxNiwgOTQ5MjMsIAotICAgIDk0OTMwLCA5NDkzNywgOTQ5NDQsIDk0OTUxLCA5NDk1OCwgOTQ5NjUsIDk0OTcyLCA5NDk3OSwgOTQ5ODYsIDk0OTkzLCAKLSAgICA5NTAwMCwgOTUwMDcsIDk1MDE0LCA5NTAyMSwgOTUwMjgsIDk1MDM1LCA5NTA0MiwgOTUwNDksIDk1MDU2LCA5NTA2MywgCi0gICAgOTUwNzAsIDk1MDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTA4NCwgOTUwOTEsIDk1MDk3LCA5NTEwMywgOTUxMDksIAotICAgIDk1MTE1LCA5NTEyMSwgOTUxMjcsIDk1MTMzLCA5NTEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgOTUxNDUsIDk1MTUwLCA5NTE1NSwgCi0gICAgOTUxNjAsIDk1MTY1LCA5NTE2OSwgOTUxNzMsIDk1MTc3LCA5NTE4MiwgOTUxODcsIDk1MTkyLCA5NTE5NywgOTUyMDIsIAotICAgIDk1MjA3LCA5NTIxMiwgOTUyMTcsIDk1MjIyLCA5NTIyNywgOTUyMzIsIDk1MjM3LCA5NTI0MiwgOTUyNDcsIDk1MjUyLCAKLSAgICA5NTI1NywgOTUyNjIsIDk1MjY3LCA5NTI3MiwgOTUyNzcsIDk1MjgyLCA5NTI4NywgOTUyOTIsIDk1Mjk3LCA5NTMwMiwgCi0gICAgOTUzMDcsIDk1MzEyLCA5NTMxNywgOTUzMjIsIDk1MzI3LCA5NTMzMiwgOTUzMzcsIDk1MzQyLCA5NTM0NywgOTUzNTMsIAotICAgIDk1MzU4LCA5NTM2NCwgOTUzNjksIDk1Mzc1LCA5NTM4MCwgOTUzODYsIDk1MzkyLCA5NTM5NiwgOTU0MDEsIDk1NDA1LCAwLCAKLSAgICA5NTQwOSwgOTU0MTQsIDk1NDE4LCA5NTQyMiwgOTU0MjYsIDk1NDMwLCA5NTQzNCwgOTU0MzgsIDk1NDQyLCA5NTQ0NiwgCi0gICAgOTU0NTAsIDk1NDU1LCA5NTQ1OSwgOTU0NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NDY5LCAKLSAgICA5NTQ3MywgOTU0NzcsIDk1NDgxLCA5NTQ4NCwgOTU0ODgsIDk1NDkxLCA5NTQ5NSwgOTU0OTgsIDk1NTAyLCA5NTUwNiwgCi0gICAgOTU1MTEsIDk1NTE1LCA5NTUyMCwgOTU1MjMsIDk1NTI3LCA5NTUzMCwgOTU1MzQsIDk1NTM3LCA5NTU0MSwgOTU1NDUsIAotICAgIDk1NTQ5LCA5NTU1MywgOTU1NTcsIDk1NTYxLCA5NTU2NSwgOTU1NjksIDk1NTczLCA5NTU3NywgOTU1ODEsIDk1NTg1LCAKLSAgICA5NTU4OSwgOTU1OTMsIDk1NTk3LCA5NTYwMSwgOTU2MDUsIDk1NjA5LCA5NTYxMiwgOTU2MTUsIDk1NjE5LCA5NTYyMywgCi0gICAgOTU2MjcsIDk1NjMwLCA5NTYzMywgOTU2MzYsIDk1NjQwLCA5NTY0NCwgOTU2NDgsIDk1NjUyLCA5NTY1NiwgOTU2NTksIAotICAgIDk1NjYyLCA5NTY2NywgOTU2NzEsIDk1Njc2LCA5NTY4MCwgOTU2ODUsIDk1NjkwLCA5NTY5NiwgOTU3MDEsIDk1NzA3LCAKLSAgICA5NTcxMSwgOTU3MTYsIDk1NzIwLCA5NTcyNSwgOTU3MjksIDk1NzMzLCA5NTczNywgOTU3NDEsIDk1NzQ0LCA5NTc0NywgCi0gICAgOTU3NTEsIDk1NzU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc1OCwgOTU3NjIsIDk1NzY1LCA5NTc2OCwgOTU3NzEsIAotICAgIDk1Nzc0LCA5NTc3NywgOTU3ODAsIDk1NzgzLCA5NTc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTU3ODksIDk1NzkzLCA5NTc5OCwgOTU4MDIsIDk1ODA3LCA5NTgxMSwgOTU4MTYsIDk1ODIwLCA5NTgyNSwgOTU4MjksIAotICAgIDk1ODM0LCA5NTgzOCwgOTU4NDMsIDk1ODQ4LCA5NTg1MywgOTU4NTgsIDk1ODYzLCA5NTg2OCwgOTU4NzMsIDk1ODc4LCAKLSAgICA5NTg4MywgOTU4ODgsIDk1ODkzLCA5NTg5OCwgOTU5MDMsIDk1OTA4LCA5NTkxMywgOTU5MTgsIDk1OTIzLCA5NTkyOCwgCi0gICAgOTU5MzIsIDk1OTM2LCA5NTk0MSwgOTU5NDYsIDk1OTUxLCA5NTk1NSwgOTU5NTksIDk1OTYzLCA5NTk2OCwgOTU5NzMsIAotICAgIDk1OTc4LCA5NTk4MiwgOTU5ODYsIDk1OTkxLCA5NTk5NiwgOTYwMDEsIDk2MDA3LCA5NjAxMiwgOTYwMTgsIDk2MDIzLCAKLSAgICA5NjAyOSwgOTYwMzQsIDk2MDQwLCA5NjA0NSwgOTYwNTEsIDk2MDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjA2MSwgCi0gICAgOTYwNjYsIDk2MDcwLCA5NjA3NCwgOTYwNzgsIDk2MDgyLCA5NjA4NiwgOTYwOTAsIDk2MDk0LCA5NjA5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOTYxMDIsIDk2MTA1LCA5NjExMCwgOTYxMTYsIDk2MTI0LCA5NjEyOSwgOTYxMzUsIDk2MTQzLCA5NjE0OSwgCi0gICAgOTYxNTUsIDk2MTU5LCA5NjE2MywgOTYxNzAsIDk2MTc5LCA5NjE4NiwgOTYxOTUsIDk2MjAxLCA5NjIxMCwgOTYyMTcsIAotICAgIDk2MjI0LCA5NjIzMSwgOTYyNDEsIDk2MjQ3LCA5NjI1MSwgOTYyNTgsIDk2MjY3LCA5NjI3NywgOTYyODQsIDk2MjkxLCAKLSAgICA5NjI5NSwgOTYyOTksIDk2MzA2LCA5NjMxNiwgOTYzMjAsIDk2MzI3LCA5NjMzNCwgOTYzNDEsIDk2MzQ3LCA5NjM1NCwgCi0gICAgOTYzNjEsIDk2MzY4LCA5NjM3NSwgOTYzNzksIDk2MzgzLCA5NjM4NywgOTYzOTQsIDk2Mzk4LCA5NjQwNSwgOTY0MTIsIAotICAgIDk2NDI2LCA5NjQzNSwgOTY0MzksIDk2NDQzLCA5NjQ0NywgOTY0NTQsIDk2NDU4LCA5NjQ2MiwgOTY0NjYsIDk2NDc0LCAKLSAgICA5NjQ4MiwgOTY1MDEsIDk2NTExLCA5NjUzMSwgOTY1MzUsIDk2NTM5LCA5NjU0MywgOTY1NDcsIDk2NTUxLCA5NjU1NSwgCi0gICAgOTY1NTksIDk2NTY2LCA5NjU3MCwgOTY1NzMsIDk2NTc3LCA5NjU4MSwgOTY1ODcsIDk2NTk0LCA5NjYwMywgOTY2MDcsIAotICAgIDk2NjE2LCA5NjYyNSwgOTY2MzMsIDk2NjM3LCA5NjY0NCwgOTY2NDgsIDk2NjUyLCA5NjY1NiwgOTY2NjAsIDk2NjcxLCAKLSAgICA5NjY4MCwgOTY2ODksIDk2Njk4LCA5NjcwNywgOTY3MTksIDk2NzI4LCA5NjczNywgOTY3NDYsIDk2NzU0LCA5Njc2MywgCi0gICAgOTY3NzUsIDk2Nzg0LCA5Njc5MywgOTY4MDIsIDk2ODE0LCA5NjgyMywgOTY4MzIsIDk2ODQ0LCA5Njg1MywgOTY4NjIsIAotICAgIDk2ODc0LCA5Njg4MywgOTY4ODcsIDk2ODkxLCA5Njg5NSwgOTY4OTksIDk2OTAzLCA5NjkwNywgOTY5MTEsIDk2OTE4LCAKLSAgICA5NjkyMiwgOTY5MjYsIDk2OTM3LCA5Njk0MSwgOTY5NDUsIDk2OTUyLCA5Njk1OCwgOTY5NjQsIDk2OTY4LCA5Njk3NSwgCi0gICAgOTY5NzksIDk2OTgzLCA5Njk4NywgOTY5OTEsIDk2OTk1LCA5Njk5OSwgOTcwMDUsIDk3MDEzLCA5NzAxNywgOTcwMjEsIAotICAgIDk3MDI0LCA5NzAzMCwgOTcwNDAsIDk3MDQ0LCA5NzA1NiwgOTcwNjMsIDk3MDcwLCA5NzA3NywgOTcwODQsIDk3MDkwLCAKLSAgICA5NzA5NCwgOTcwOTgsIDk3MTAyLCA5NzEwNiwgOTcxMTMsIDk3MTIyLCA5NzEyOSwgOTcxMzcsIDk3MTQ1LCA5NzE1MSwgCi0gICAgOTcxNTUsIDk3MTU5LCA5NzE2MywgOTcxNjcsIDk3MTczLCA5NzE4MiwgOTcxOTQsIDk3MjAxLCA5NzIwOCwgOTcyMTcsIAotICAgIDk3MjI4LCA5NzIzNCwgOTcyNDMsIDk3MjUyLCA5NzI1OSwgOTcyNjgsIDk3Mjc1LCA5NzI4MiwgOTcyOTIsIDk3Mjk5LCAKLSAgICA5NzMwNiwgOTczMTMsIDk3MzIwLCA5NzMyNCwgOTczMzAsIDk3MzM0LCA5NzM0NSwgOTczNTMsIDk3MzYyLCA5NzM3NCwgCi0gICAgOTczODEsIDk3Mzg4LCA5NzM5OCwgOTc0MDUsIDk3NDE0LCA5NzQyMSwgOTc0MzAsIDk3NDM3LCA5NzQ0NCwgOTc0NTQsIAotICAgIDk3NDYxLCA5NzQ2OCwgOTc0NzgsIDk3NDg1LCA5NzQ5NywgOTc1MDYsIDk3NTEzLCA5NzUyMCwgOTc1MjcsIDk3NTM2LCAKLSAgICA5NzU0NiwgOTc1NTksIDk3NTY2LCA5NzU3NiwgOTc1ODYsIDk3NTkzLCA5NzYwMiwgOTc2MTUsIDk3NjIyLCA5NzYyOSwgCi0gICAgOTc2MzYsIDk3NjQ2LCA5NzY1NiwgOTc2NjMsIDk3NjczLCA5NzY4MCwgOTc2ODcsIDk3Njk3LCA5NzcwMywgOTc3MTAsIAotICAgIDk3NzE3LCA5NzcyNCwgOTc3MzQsIDk3NzQxLCA5Nzc0OCwgOTc3NTUsIDk3NzYxLCA5Nzc2OCwgOTc3NzgsIDk3Nzg1LCAKLSAgICA5Nzc4OSwgOTc3OTcsIDk3ODAxLCA5NzgxMywgOTc4MTcsIDk3ODMxLCA5NzgzNSwgOTc4MzksIDk3ODQzLCA5Nzg0NywgCi0gICAgOTc4NTMsIDk3ODYwLCA5Nzg2OCwgOTc4NzIsIDk3ODc2LCA5Nzg4MCwgOTc4ODQsIDk3ODkxLCA5Nzg5NSwgOTc5MDEsIAotICAgIDk3OTA3LCA5NzkxNSwgOTc5MTksIDk3OTI2LCA5NzkzNCwgOTc5MzgsIDk3OTQyLCA5Nzk0OCwgOTc5NTIsIDk3OTYxLCAKLSAgICA5Nzk3MCwgOTc5NzcsIDk3OTg3LCA5Nzk5MywgOTc5OTcsIDk4MDAxLCA5ODAwOSwgOTgwMTYsIDk4MDIzLCA5ODAyOSwgCi0gICAgOTgwMzMsIDk4MDQxLCA5ODA0NSwgOTgwNTIsIDk4MDY0LCA5ODA3MSwgOTgwODEsIDk4MDg3LCA5ODA5MSwgOTgxMDAsIAotICAgIDk4MTA3LCA5ODExNiwgOTgxMjAsIDk4MTI0LCA5ODEzMSwgOTgxMzUsIDk4MTM5LCA5ODE0MywgOTgxNDcsIDk4MTUwLCAKLSAgICA5ODE1NiwgOTgxNjIsIDk4MTY2LCA5ODE3MCwgOTgxNzcsIDk4MTg0LCA5ODE5MSwgOTgxOTgsIDk4MjA1LCA5ODIxMiwgCi0gICAgOTgyMTksIDk4MjI2LCA5ODIzMiwgOTgyMzYsIDk4MjQwLCA5ODI0NywgOTgyNTQsIDk4MjYxLCA5ODI2OCwgOTgyNzUsIAotICAgIDk4Mjc5LCA5ODI4MiwgOTgyODcsIDk4MjkxLCA5ODI5NSwgOTgzMDQsIDk4MzEzLCA5ODMxNywgOTgzMjEsIDk4MzI3LCAKLSAgICA5ODMzMywgOTgzNTAsIDk4MzU2LCA5ODM2MCwgOTgzNjksIDk4MzczLCA5ODM3NywgOTgzODQsIDk4MzkyLCA5ODQwMCwgCi0gICAgOTg0MDYsIDk4NDEwLCA5ODQxNCwgOTg0MTgsIDk4NDIyLCA5ODQyNSwgOTg0MzEsIDk4NDM4LCA5ODQ0OCwgOTg0NTUsIAotICAgIDk4NDYyLCA5ODQ2OSwgOTg0NzUsIDk4NDgyLCA5ODQ4OSwgOTg0OTYsIDk4NTAzLCA5ODUxMCwgOTg1MTksIDk4NTI2LCAKLSAgICA5ODUzOCwgOTg1NDUsIDk4NTUyLCA5ODU2MiwgOTg1NzMsIDk4NTgwLCA5ODU4NywgOTg1OTQsIDk4NjAxLCA5ODYwOCwgCi0gICAgOTg2MTUsIDk4NjIyLCA5ODYyOSwgOTg2MzYsIDk4NjQzLCA5ODY1MywgOTg2NjMsIDk4NjczLCA5ODY4MCwgOTg2OTAsIAotICAgIDk4Njk3LCA5ODcwNCwgOTg3MTEsIDk4NzE4LCA5ODcyNCwgOTg3MzEsIDk4NzM4LCA5ODc0NSwgOTg3NTIsIDk4NzU5LCAKLSAgICA5ODc2NiwgOTg3NzMsIDk4NzgwLCA5ODc4NiwgOTg3OTMsIDk4ODAwLCA5ODgwOSwgOTg4MTYsIDk4ODIzLCA5ODgyNywgCi0gICAgOTg4MzUsIDk4ODM5LCA5ODg0MywgOTg4NDcsIDk4ODUxLCA5ODg1NSwgOTg4NjIsIDk4ODY2LCA5ODg3NSwgOTg4NzksIAotICAgIDk4ODg2LCA5ODg5NCwgOTg4OTgsIDk4OTAyLCA5ODkwNiwgOTg5MTksIDk4OTM1LCA5ODkzOSwgOTg5NDMsIDk4OTUwLCAKLSAgICA5ODk1NiwgOTg5NjMsIDk4OTY3LCA5ODk3MSwgOTg5NzUsIDk4OTc5LCA5ODk4MywgOTg5OTAsIDk4OTk0LCA5OTAxMiwgCi0gICAgOTkwMTYsIDk5MDIwLCA5OTAyNywgOTkwMzEsIDk5MDM1LCA5OTA0MSwgOTkwNDUsIDk5MDQ5LCA5OTA1NywgOTkwNjEsIAotICAgIDk5MDY1LCA5OTA2OSwgOTkwNzMsIDk5MDc5LCA5OTA5MCwgOTkwOTksIDk5MTA4LCA5OTExNSwgOTkxMjIsIDk5MTMzLCAKLSAgICA5OTE0MCwgOTkxNDcsIDk5MTU0LCA5OTE2MSwgOTkxNjgsIDk5MTc1LCA5OTE4MiwgOTkxOTIsIDk5MTk4LCA5OTIwNSwgCi0gICAgOTkyMTUsIDk5MjI0LCA5OTIzMSwgOTkyNDAsIDk5MjUwLCA5OTI1NywgOTkyNjQsIDk5MjcxLCA5OTI3OCwgOTkyOTAsIAotICAgIDk5Mjk3LCA5OTMwNCwgOTkzMTEsIDk5MzE4LCA5OTMyNSwgOTkzMzUsIDk5MzQyLCA5OTM0OSwgOTkzNTksIDk5MzcyLCAKLSAgICA5OTM4NCwgOTkzOTEsIDk5NDAxLCA5OTQwOCwgOTk0MTUsIDk5NDIyLCA5OTQzNiwgOTk0NDIsIDk5NDUwLCA5OTQ2MCwgCi0gICAgOTk0NzAsIDk5NDc3LCA5OTQ4NCwgOTk0OTAsIDk5NDk0LCA5OTUwMSwgOTk1MTEsIDk5NTE3LCA5OTUzMCwgOTk1MzQsIAotICAgIDk5NTM4LCA5OTU0NSwgOTk1NDksIDk5NTU2LCA5OTU2NiwgOTk1NzAsIDk5NTc0LCA5OTU3OCwgOTk1ODIsIDk5NTg2LCAKLSAgICA5OTU5MywgOTk1OTcsIDk5NjA0LCA5OTYxMSwgOTk2MTgsIDk5NjI3LCA5OTYzNiwgOTk2NDYsIDk5NjUzLCA5OTY2MCwgCi0gICAgOTk2NjcsIDk5Njc3LCA5OTY4NCwgOTk2OTQsIDk5NzAxLCA5OTcxMSwgOTk3MTgsIDk5NzI1LCA5OTczNSwgOTk3NDUsIAotICAgIDk5NzUyLCA5OTc1OCwgOTk3NjYsIDk5Nzc0LCA5OTc4MCwgOTk3ODYsIDk5NzkwLCA5OTc5NCwgOTk4MDEsIDk5ODA5LCAKLSAgICA5OTgxNSwgOTk4MTksIDk5ODIzLCA5OTgyNywgOTk4MzQsIDk5ODQ2LCA5OTg0OSwgOTk4NTYsIDk5ODYyLCA5OTg2NiwgCi0gICAgOTk4NzAsIDk5ODc0LCA5OTg3OCwgOTk4ODIsIDk5ODg2LCA5OTg5MCwgOTk4OTQsIDk5ODk4LCA5OTkwMiwgOTk5MDksIAotICAgIDk5OTEzLCA5OTkxOSwgOTk5MjMsIDk5OTI3LCA5OTkzMSwgOTk5MzcsIDk5OTQ0LCA5OTk1MSwgOTk5NTgsIDk5OTY5LCAKLSAgICA5OTk3NywgOTk5ODEsIDk5OTg3LCA5OTk5NiwgMTAwMDAzLCAxMDAwMDksIDEwMDAxMiwgMTAwMDE2LCAxMDAwMjAsIAotICAgIDEwMDAyNiwgMTAwMDM1LCAxMDAwNDMsIDEwMDA0NywgMTAwMDUzLCAxMDAwNTcsIDEwMDA2MSwgMTAwMDY1LCAxMDAwNzEsIAotICAgIDEwMDA3OCwgMTAwMDg0LCAxMDAwODgsIDEwMDA5NCwgMTAwMDk4LCAxMDAxMDIsIDEwMDExMSwgMTAwMTIzLCAxMDAxMjcsIAotICAgIDEwMDEzNCwgMTAwMTQxLCAxMDAxNTEsIDEwMDE1OCwgMTAwMTcwLCAxMDAxNzcsIDEwMDE4NCwgMTAwMTkxLCAxMDAyMDIsIAotICAgIDEwMDIxMiwgMTAwMjI1LCAxMDAyMzUsIDEwMDI0MiwgMTAwMjQ2LCAxMDAyNTAsIDEwMDI1NCwgMTAwMjU4LCAxMDAyNjcsIAotICAgIDEwMDI3NiwgMTAwMjg1LCAxMDAzMDIsIDEwMDMxMSwgMTAwMzE3LCAxMDAzMjQsIDEwMDMzMiwgMTAwMzQ1LCAxMDAzNDksIAotICAgIDEwMDM1OCwgMTAwMzY3LCAxMDAzNzYsIDEwMDM4NSwgMTAwMzk2LCAxMDA0MDUsIDEwMDQxNCwgMTAwNDIzLCAxMDA0MzIsIAotICAgIDEwMDQ0MSwgMTAwNDUwLCAxMDA0NjAsIDEwMDQ2MywgMTAwNDY3LCAxMDA0NzEsIDEwMDQ3NSwgMTAwNDc5LCAxMDA0ODMsIAotICAgIDEwMDQ4OSwgMTAwNDk2LCAxMDA1MDMsIDEwMDUxMCwgMTAwNTE2LCAxMDA1MjIsIDEwMDUyOSwgMTAwNTM1LCAxMDA1NDIsIAotICAgIDEwMDU1MCwgMTAwNTU0LCAxMDA1NjEsIDEwMDU2OCwgMTAwNTc1LCAxMDA1ODMsIDEwMDU4NiwgMTAwNTkwLCAxMDA1OTQsIAotICAgIDEwMDU5OCwgMTAwNjAxLCAxMDA2MDcsIDEwMDYxMSwgMTAwNjE3LCAxMDA2MjQsIDEwMDYzMSwgMTAwNjM3LCAxMDA2NDQsIAotICAgIDEwMDY1MSwgMTAwNjU4LCAxMDA2NjUsIDEwMDY3MiwgMTAwNjc5LCAxMDA2ODYsIDEwMDY5MywgMTAwNzAwLCAxMDA3MDcsIAotICAgIDEwMDcxNCwgMTAwNzIxLCAxMDA3MjgsIDEwMDczNSwgMTAwNzQxLCAxMDA3NDUsIDEwMDc1NCwgMTAwNzU4LCAxMDA3NjIsIAotICAgIDEwMDc2NiwgMTAwNzcwLCAxMDA3NzYsIDEwMDc4MywgMTAwNzkwLCAxMDA3OTcsIDEwMDgwNCwgMTAwODExLCAxMDA4MTcsIAotICAgIDEwMDgyNSwgMTAwODI5LCAxMDA4MzMsIDEwMDgzNywgMTAwODQxLCAxMDA4NDcsIDEwMDg2NCwgMTAwODgxLCAxMDA4ODUsIAotICAgIDEwMDg4OSwgMTAwODkzLCAxMDA4OTcsIDEwMDkwMSwgMTAwOTA1LCAxMDA5MTEsIDEwMDkxOCwgMTAwOTIyLCAxMDA5MjgsIAotICAgIDEwMDkzNSwgMTAwOTQyLCAxMDA5NDksIDEwMDk1NiwgMTAwOTYzLCAxMDA5NzIsIDEwMDk3OSwgMTAwOTg2LCAxMDA5OTMsIAotICAgIDEwMTAwMCwgMTAxMDA0LCAxMDEwMDgsIDEwMTAxNCwgMTAxMDI2LCAxMDEwMzAsIDEwMTAzNCwgMTAxMDQzLCAxMDEwNDcsIAotICAgIDEwMTA1MSwgMTAxMDU1LCAxMDEwNjEsIDEwMTA2NSwgMTAxMDY5LCAxMDEwNzgsIDEwMTA4MiwgMTAxMDg2LCAxMDEwOTAsIAotICAgIDEwMTA5NywgMTAxMTAxLCAxMDExMDUsIDEwMTEwOSwgMTAxMTEzLCAxMDExMTcsIDEwMTEyMSwgMTAxMTI1LCAxMDExMjksIAotICAgIDEwMTEzNSwgMTAxMTQyLCAxMDExNDksIDEwMTE1NSwgMTAxMTU5LCAxMDExNzYsIDEwMTE4MiwgMTAxMTg2LCAxMDExOTIsIAotICAgIDEwMTE5OCwgMTAxMjA0LCAxMDEyMTAsIDEwMTIxNiwgMTAxMjIyLCAxMDEyMjYsIDEwMTIzMCwgMTAxMjM0LCAxMDEyNDAsIAotICAgIDEwMTI0NCwgMTAxMjUwLCAxMDEyNTQsIDEwMTI1OCwgMTAxMjY1LCAxMDEyNzIsIDEwMTI4OSwgMTAxMjkzLCAxMDEyOTcsIAotICAgIDEwMTMwMSwgMTAxMzA1LCAxMDEzMDksIDEwMTMyMSwgMTAxMzI0LCAxMDEzMjksIDEwMTMzNCwgMTAxMzQ5LCAxMDEzNTksIAotICAgIDEwMTM3MSwgMTAxMzc1LCAxMDEzNzksIDEwMTM4MywgMTAxMzg5LCAxMDEzOTYsIDEwMTQwMywgMTAxNDEzLCAxMDE0MjUsIAotICAgIDEwMTQzMSwgMTAxNDM3LCAxMDE0NDYsIDEwMTQ1MCwgMTAxNDU0LCAxMDE0NjEsIDEwMTQ3MSwgMTAxNDc4LCAxMDE0ODQsIAotICAgIDEwMTQ4OCwgMTAxNDkyLCAxMDE0OTksIDEwMTUwNSwgMTAxNTA5LCAxMDE1MTUsIDEwMTUxOSwgMTAxNTI3LCAxMDE1MzMsIAotICAgIDEwMTUzNywgMTAxNTQ1LCAxMDE1NTMsIDEwMTU2MCwgMTAxNTY2LCAxMDE1NzMsIDEwMTU4MCwgMTAxNTkwLCAxMDE2MDAsIAotICAgIDEwMTYwNCwgMTAxNjA4LCAxMDE2MTIsIDEwMTYxNiwgMTAxNjIyLCAxMDE2MjksIDEwMTYzNSwgMTAxNjQyLCAxMDE2NDksIAotICAgIDEwMTY1NiwgMTAxNjY1LCAxMDE2NzIsIDEwMTY3OSwgMTAxNjg1LCAxMDE2OTIsIDEwMTY5OSwgMTAxNzA2LCAxMDE3MTMsIAotICAgIDEwMTcyMCwgMTAxNzI3LCAxMDE3MzMsIDEwMTc0MCwgMTAxNzQ3LCAxMDE3NTQsIDEwMTc2MywgMTAxNzcwLCAxMDE3NzcsIAotICAgIDEwMTc4MSwgMTAxNzg3LCAxMDE3OTEsIDEwMTc5NywgMTAxODA0LCAxMDE4MTEsIDEwMTgxOCwgMTAxODIyLCAxMDE4MjYsIAotICAgIDEwMTgzMCwgMTAxODM0LCAxMDE4MzgsIDEwMTg0NSwgMTAxODQ5LCAxMDE4NTMsIDEwMTg1OSwgMTAxODY3LCAxMDE4NzEsIAotICAgIDEwMTg3NSwgMTAxODc5LCAxMDE4ODMsIDEwMTg5MCwgMTAxODk0LCAxMDE4OTgsIDEwMTkwNiwgMTAxOTEwLCAxMDE5MTQsIAotICAgIDEwMTkxOCwgMTAxOTIyLCAxMDE5MjgsIDEwMTkzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAxOTM2LCAxMDE5NDIsIDEwMTk0OCwgMTAxOTU1LCAxMDE5NjIsIDEwMTk2OSwgMTAxOTc2LCAxMDE5ODMsIAotICAgIDEwMTk5MCwgMTAxOTk2LCAxMDIwMDMsIDEwMjAxMCwgMTAyMDE3LCAxMDIwMjQsIDEwMjAzMSwgMTAyMDM4LCAxMDIwNDQsIAotICAgIDEwMjA1MCwgMTAyMDU2LCAxMDIwNjIsIDEwMjA2OCwgMTAyMDc0LCAxMDIwODAsIDEwMjA4NiwgMTAyMDkyLCAxMDIwOTksIAotICAgIDEwMjEwNiwgMTAyMTEzLCAxMDIxMjAsIDEwMjEyNywgMTAyMTM0LCAxMDIxNDAsIDEwMjE0NiwgMTAyMTUyLCAxMDIxNTksIAotICAgIDEwMjE2NiwgMTAyMTcyLCAxMDIxNzgsIDEwMjE4NywgMTAyMTk0LCAxMDIyMDEsIDEwMjIwOCwgMTAyMjE1LCAxMDIyMjIsIAotICAgIDEwMjIyOSwgMTAyMjM1LCAxMDIyNDEsIDEwMjI0NywgMTAyMjU2LCAxMDIyNjMsIDEwMjI3MCwgMTAyMjgxLCAxMDIyOTIsIAotICAgIDEwMjI5OCwgMTAyMzA0LCAxMDIzMTAsIDEwMjMxOSwgMTAyMzI2LCAxMDIzMzMsIDEwMjM0MywgMTAyMzUzLCAxMDIzNjQsIAotICAgIDEwMjM3NSwgMTAyMzg3LCAxMDI0MDAsIDEwMjQxMSwgMTAyNDIyLCAxMDI0MzQsIDEwMjQ0NywgMTAyNDU4LCAxMDI0NjksIAotICAgIDEwMjQ4MCwgMTAyNDkxLCAxMDI1MDIsIDEwMjUxNCwgMTAyNTIyLCAxMDI1MzAsIDEwMjUzOSwgMTAyNTQ4LCAxMDI1NTcsIAotICAgIDEwMjU2MywgMTAyNTY5LCAxMDI1NzUsIDEwMjU4MiwgMTAyNTkyLCAxMDI1OTksIDEwMjYwOSwgMTAyNjE0LCAxMDI2MTksIAotICAgIDEwMjYyNSwgMTAyNjMxLCAxMDI2MzksIDEwMjY0NywgMTAyNjU2LCAxMDI2NjcsIDEwMjY3OCwgMTAyNjg2LCAxMDI2OTQsIAotICAgIDEwMjcwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNzEyLCAxMDI3MjMsIDEwMjczMCwgCi0gICAgMTAyNzM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI3NDYsIDEwMjc1MCwgMTAyNzU0LCAKLSAgICAxMDI3NTgsIDEwMjc2MiwgMTAyNzY2LCAxMDI3NzAsIDEwMjc3NCwgMTAyNzc4LCAxMDI3ODIsIDEwMjc4NiwgMTAyNzkwLCAKLSAgICAxMDI3OTQsIDEwMjc5OCwgMTAyODAyLCAxMDI4MDYsIDEwMjgxMCwgMTAyODE0LCAxMDI4MTgsIDEwMjgyMiwgMTAyODI2LCAKLSAgICAxMDI4MzAsIDEwMjgzNCwgMTAyODM4LCAxMDI4NDIsIDEwMjg0NiwgMTAyODUwLCAxMDI4NTQsIDEwMjg1OCwgMTAyODYyLCAKLSAgICAxMDI4NjYsIDEwMjg3MCwgMTAyODc0LCAxMDI4NzgsIDEwMjg4MiwgMTAyODg2LCAxMDI4OTAsIDEwMjg5NCwgMTAyODk4LCAKLSAgICAxMDI5MDIsIDEwMjkwNiwgMTAyOTEwLCAxMDI5MTQsIDEwMjkxOCwgMTAyOTIyLCAxMDI5MjYsIDEwMjkzMCwgMTAyOTM0LCAKLSAgICAxMDI5MzgsIDEwMjk0MiwgMTAyOTQ2LCAxMDI5NTAsIDEwMjk1NCwgMTAyOTU4LCAxMDI5NjIsIDEwMjk2NiwgMTAyOTcwLCAKLSAgICAxMDI5NzQsIDEwMjk3OCwgMTAyOTgyLCAxMDI5ODYsIDEwMjk5MCwgMTAyOTk0LCAxMDI5OTgsIDEwMzAwMiwgMTAzMDA2LCAKLSAgICAxMDMwMTAsIDEwMzAxNCwgMTAzMDE4LCAxMDMwMjIsIDEwMzAyNiwgMTAzMDMwLCAxMDMwMzQsIDEwMzAzOCwgMTAzMDQyLCAKLSAgICAxMDMwNDYsIDEwMzA1MCwgMTAzMDU0LCAxMDMwNTgsIDEwMzA2MiwgMTAzMDY2LCAxMDMwNzAsIDEwMzA3NCwgMTAzMDc4LCAKLSAgICAxMDMwODIsIDEwMzA4NiwgMTAzMDkwLCAxMDMwOTQsIDEwMzA5OCwgMTAzMTAyLCAxMDMxMDYsIDEwMzExMCwgMTAzMTE0LCAKLSAgICAxMDMxMTgsIDEwMzEyMiwgMTAzMTI2LCAxMDMxMzAsIDEwMzEzNCwgMTAzMTM4LCAxMDMxNDIsIDEwMzE0NiwgMTAzMTUwLCAKLSAgICAxMDMxNTQsIDEwMzE1OCwgMTAzMTYyLCAxMDMxNjYsIDEwMzE3MCwgMTAzMTc0LCAxMDMxNzgsIDEwMzE4MiwgMTAzMTg2LCAKLSAgICAxMDMxOTAsIDEwMzE5NCwgMTAzMTk4LCAxMDMyMDIsIDEwMzIwNiwgMTAzMjEwLCAxMDMyMTQsIDEwMzIxOCwgMTAzMjIyLCAKLSAgICAxMDMyMjYsIDEwMzIzMCwgMTAzMjM0LCAxMDMyMzgsIDEwMzI0MiwgMTAzMjQ2LCAxMDMyNTAsIDEwMzI1NCwgMTAzMjU4LCAKLSAgICAxMDMyNjIsIDEwMzI2NiwgMTAzMjcwLCAxMDMyNzQsIDEwMzI3OCwgMTAzMjgyLCAxMDMyODYsIDEwMzI5MCwgMTAzMjk0LCAKLSAgICAxMDMyOTgsIDEwMzMwMiwgMTAzMzA2LCAxMDMzMTAsIDEwMzMxNCwgMTAzMzE4LCAxMDMzMjIsIDEwMzMyNiwgMTAzMzMwLCAKLSAgICAxMDMzMzQsIDEwMzMzOCwgMTAzMzQyLCAxMDMzNDYsIDEwMzM1MCwgMTAzMzU0LCAxMDMzNTgsIDEwMzM2MiwgMTAzMzY2LCAKLSAgICAxMDMzNzAsIDEwMzM3NCwgMTAzMzc4LCAxMDMzODIsIDEwMzM4NiwgMTAzMzkwLCAxMDMzOTQsIDEwMzM5OCwgMTAzNDAyLCAKLSAgICAxMDM0MDYsIDEwMzQxMCwgMTAzNDE0LCAxMDM0MTgsIDEwMzQyMiwgMTAzNDI2LCAxMDM0MzAsIDEwMzQzNCwgMTAzNDM4LCAKLSAgICAxMDM0NDIsIDEwMzQ0NiwgMTAzNDUwLCAxMDM0NTQsIDEwMzQ1OCwgMTAzNDYyLCAxMDM0NjYsIDEwMzQ3MCwgMTAzNDc0LCAKLSAgICAxMDM0NzgsIDEwMzQ4MiwgMTAzNDg2LCAxMDM0OTAsIDEwMzQ5NCwgMTAzNDk4LCAxMDM1MDIsIDEwMzUwNiwgMTAzNTEwLCAKLSAgICAxMDM1MTQsIDEwMzUxOCwgMTAzNTIyLCAxMDM1MjYsIDEwMzUzMCwgMTAzNTM0LCAxMDM1MzgsIDEwMzU0MiwgMTAzNTQ2LCAKLSAgICAxMDM1NTAsIDEwMzU1NCwgMTAzNTU4LCAxMDM1NjIsIDEwMzU2NiwgMTAzNTcwLCAxMDM1NzQsIDEwMzU3OCwgMTAzNTgyLCAKLSAgICAxMDM1ODYsIDEwMzU5MCwgMTAzNTk0LCAxMDM1OTgsIDEwMzYwMiwgMTAzNjA2LCAxMDM2MTAsIDEwMzYxNCwgMTAzNjE4LCAKLSAgICAxMDM2MjIsIDEwMzYyNiwgMTAzNjMwLCAxMDM2MzQsIDEwMzYzOCwgMTAzNjQyLCAxMDM2NDYsIDEwMzY1MCwgMTAzNjU0LCAKLSAgICAxMDM2NTgsIDEwMzY2MiwgMTAzNjY2LCAxMDM2NzAsIDEwMzY3NCwgMTAzNjc4LCAxMDM2ODIsIDEwMzY4NiwgMTAzNjkwLCAKLSAgICAxMDM2OTQsIDEwMzY5OCwgMTAzNzAyLCAxMDM3MDYsIDEwMzcxMCwgMTAzNzE0LCAxMDM3MTgsIDEwMzcyMiwgMTAzNzI2LCAKLSAgICAxMDM3MzAsIDEwMzczNCwgMTAzNzM4LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUwLCAxMDM3NTQsIDEwMzc1OCwgMTAzNzYyLCAKLSAgICAxMDM3NjYsIDEwMzc3MCwgMTAzNzc0LCAxMDM3NzgsIDEwMzc4MiwgMTAzNzg2LCAxMDM3OTAsIDEwMzc5NCwgMTAzNzk4LCAKLSAgICAxMDM4MDIsIDEwMzgwNiwgMTAzODEwLCAxMDM4MTQsIDEwMzgxOCwgMTAzODIyLCAxMDM4MjYsIDEwMzgzMCwgMTAzODM0LCAKLSAgICAxMDM4MzgsIDEwMzg0MiwgMTAzODQ2LCAxMDM4NTAsIDEwMzg1NCwgMTAzODU4LCAxMDM4NjIsIDEwMzg2NiwgMTAzODcwLCAKLSAgICAxMDM4NzQsIDEwMzg3OCwgMTAzODgyLCAxMDM4ODYsIDEwMzg5MCwgMTAzODk0LCAxMDM4OTgsIDEwMzkwMiwgMTAzOTA2LCAKLSAgICAxMDM5MTAsIDEwMzkxNCwgMTAzOTE4LCAxMDM5MjIsIDEwMzkyNiwgMTAzOTMwLCAxMDM5MzQsIDEwMzkzOCwgMTAzOTQyLCAKLSAgICAxMDM5NDYsIDEwMzk1MCwgMTAzOTU0LCAxMDM5NTgsIDEwMzk2MiwgMTAzOTY2LCAxMDM5NzAsIDEwMzk3NCwgMTAzOTc4LCAKLSAgICAxMDM5ODIsIDEwMzk4NiwgMTAzOTkwLCAxMDM5OTQsIDEwMzk5OCwgMTA0MDAyLCAxMDQwMDYsIDEwNDAxMCwgMTA0MDE0LCAKLSAgICAxMDQwMTgsIDEwNDAyMiwgMTA0MDI2LCAxMDQwMzAsIDEwNDAzNCwgMTA0MDM4LCAxMDQwNDIsIDEwNDA0NiwgMTA0MDUwLCAKLSAgICAxMDQwNTQsIDEwNDA1OCwgMTA0MDYyLCAxMDQwNjYsIDEwNDA3MCwgMTA0MDc0LCAxMDQwNzgsIDEwNDA4MiwgMTA0MDg2LCAKLSAgICAxMDQwOTAsIDEwNDA5NCwgMTA0MDk4LCAxMDQxMDIsIDEwNDEwNiwgMTA0MTEwLCAxMDQxMTQsIDEwNDExOCwgMTA0MTIyLCAKLSAgICAxMDQxMjYsIDEwNDEzMCwgMTA0MTM0LCAxMDQxMzgsIDEwNDE0MiwgMTA0MTQ2LCAxMDQxNTAsIDEwNDE1NCwgMTA0MTU4LCAKLSAgICAxMDQxNjIsIDEwNDE2NiwgMTA0MTcwLCAxMDQxNzQsIDEwNDE3OCwgMTA0MTgyLCAxMDQxODYsIDEwNDE5MCwgMTA0MTk0LCAKLSAgICAxMDQxOTgsIDEwNDIwMiwgMTA0MjA2LCAxMDQyMTAsIDEwNDIxNCwgMTA0MjE4LCAxMDQyMjIsIDEwNDIyNiwgMTA0MjMwLCAKLSAgICAxMDQyMzQsIDEwNDIzOCwgMTA0MjQyLCAxMDQyNDYsIDEwNDI1MCwgMTA0MjU0LCAxMDQyNTgsIDEwNDI2MiwgMTA0MjY2LCAKLSAgICAxMDQyNzAsIDEwNDI3NCwgMTA0Mjc4LCAxMDQyODIsIDEwNDI4NiwgMTA0MjkwLCAxMDQyOTQsIDEwNDI5OCwgMTA0MzAyLCAKLSAgICAxMDQzMDYsIDEwNDMxMCwgMTA0MzE0LCAxMDQzMTgsIDEwNDMyMiwgMTA0MzI2LCAxMDQzMzAsIDEwNDMzNCwgMTA0MzM4LCAKLSAgICAxMDQzNDIsIDEwNDM0NiwgMTA0MzUwLCAxMDQzNTQsIDEwNDM1OCwgMTA0MzYyLCAxMDQzNjYsIDEwNDM3MCwgMTA0Mzc0LCAKLSAgICAxMDQzNzgsIDEwNDM4MiwgMTA0Mzg2LCAxMDQzOTAsIDEwNDM5NCwgMTA0Mzk4LCAxMDQ0MDIsIDEwNDQwNiwgMTA0NDEwLCAKLSAgICAxMDQ0MTQsIDEwNDQxOCwgMTA0NDIyLCAxMDQ0MjYsIDEwNDQzMCwgMTA0NDM0LCAxMDQ0MzgsIDEwNDQ0MiwgMTA0NDQ2LCAKLSAgICAxMDQ0NTAsIDEwNDQ1NCwgMTA0NDU4LCAxMDQ0NjIsIDEwNDQ2NiwgMTA0NDcwLCAxMDQ0NzQsIDEwNDQ3OCwgMTA0NDgyLCAKLSAgICAxMDQ0ODYsIDEwNDQ5MCwgMTA0NDk0LCAxMDQ0OTgsIDEwNDUwMiwgMTA0NTA2LCAxMDQ1MTAsIDEwNDUxNCwgMTA0NTE4LCAKLSAgICAxMDQ1MjIsIDEwNDUyNiwgMTA0NTMwLCAxMDQ1MzQsIDEwNDUzOCwgMTA0NTQyLCAxMDQ1NDYsIDEwNDU1MCwgMTA0NTU0LCAKLSAgICAxMDQ1NTgsIDEwNDU2MiwgMTA0NTY2LCAxMDQ1NzAsIDEwNDU3NCwgMTA0NTc4LCAxMDQ1ODIsIDEwNDU4NiwgMTA0NTkwLCAKLSAgICAxMDQ1OTQsIDEwNDU5OCwgMTA0NjAyLCAxMDQ2MDYsIDEwNDYxMCwgMTA0NjE0LCAxMDQ2MTgsIDEwNDYyMiwgMTA0NjI2LCAKLSAgICAxMDQ2MzAsIDEwNDYzNCwgMTA0NjM4LCAxMDQ2NDIsIDEwNDY0NiwgMTA0NjUwLCAxMDQ2NTQsIDEwNDY1OCwgMTA0NjYyLCAKLSAgICAxMDQ2NjYsIDEwNDY3MCwgMTA0Njc0LCAxMDQ2NzgsIDEwNDY4MiwgMTA0Njg2LCAxMDQ2OTAsIDEwNDY5NCwgMTA0Njk4LCAKLSAgICAxMDQ3MDIsIDEwNDcwNiwgMTA0NzEwLCAxMDQ3MTQsIDEwNDcxOCwgMTA0NzIyLCAxMDQ3MjYsIDEwNDczMCwgMTA0NzM0LCAKLSAgICAxMDQ3MzgsIDEwNDc0MiwgMTA0NzQ2LCAxMDQ3NTAsIDEwNDc1NCwgMTA0NzU4LCAxMDQ3NjIsIDEwNDc2NiwgMTA0NzcwLCAKLSAgICAxMDQ3NzQsIDEwNDc3OCwgMTA0NzgyLCAxMDQ3ODYsIDEwNDc5MCwgMTA0Nzk0LCAxMDQ3OTgsIDEwNDgwMiwgMTA0ODA2LCAKLSAgICAxMDQ4MTAsIDEwNDgxNCwgMTA0ODE4LCAxMDQ4MjIsIDEwNDgyNiwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgMTA0ODQyLCAKLSAgICAxMDQ4NDYsIDEwNDg1MCwgMTA0ODU0LCAxMDQ4NTgsIDEwNDg2MiwgMTA0ODY2LCAxMDQ4NzAsIDEwNDg3NCwgMTA0ODc4LCAKLSAgICAxMDQ4ODIsIDEwNDg4NiwgMTA0ODkwLCAxMDQ4OTQsIDEwNDg5OCwgMTA0OTAyLCAxMDQ5MDYsIDEwNDkxMCwgMTA0OTE0LCAKLSAgICAxMDQ5MTgsIDEwNDkyMiwgMTA0OTI2LCAxMDQ5MzAsIDEwNDkzNCwgMTA0OTM4LCAxMDQ5NDIsIDEwNDk0NiwgMTA0OTUwLCAKLSAgICAxMDQ5NTQsIDEwNDk1OCwgMTA0OTYyLCAxMDQ5NjYsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzgsIDEwNDk4MiwgMTA0OTg2LCAKLSAgICAxMDQ5OTAsIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDEwLCAxMDUwMTQsIDEwNTAxOCwgMTA1MDIyLCAKLSAgICAxMDUwMjYsIDEwNTAzMCwgMTA1MDM0LCAxMDUwMzgsIDEwNTA0MiwgMTA1MDQ2LCAxMDUwNTAsIDEwNTA1NCwgMTA1MDU4LCAKLSAgICAxMDUwNjIsIDEwNTA2NiwgMTA1MDcwLCAxMDUwNzQsIDEwNTA3OCwgMTA1MDgyLCAxMDUwODYsIDEwNTA5MCwgMTA1MDk0LCAKLSAgICAxMDUwOTgsIDEwNTEwMiwgMTA1MTA2LCAxMDUxMTAsIDEwNTExNCwgMTA1MTE4LCAxMDUxMjIsIDEwNTEyNiwgMTA1MTMwLCAKLSAgICAxMDUxMzQsIDEwNTEzOCwgMTA1MTQyLCAxMDUxNDYsIDEwNTE1MCwgMTA1MTU0LCAxMDUxNTgsIDEwNTE2MiwgMTA1MTY2LCAKLSAgICAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NiwgMTA1MTkwLCAxMDUxOTQsIDEwNTE5OCwgMTA1MjAyLCAKLSAgICAxMDUyMDYsIDEwNTIxMCwgMTA1MjE0LCAxMDUyMTgsIDEwNTIyMiwgMTA1MjI2LCAxMDUyMzAsIDEwNTIzNCwgMTA1MjM4LCAKLSAgICAxMDUyNDIsIDEwNTI0NiwgMTA1MjUwLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYyLCAxMDUyNjYsIDEwNTI3MCwgMTA1Mjc0LCAKLSAgICAxMDUyNzgsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDIsIDEwNTMwNiwgMTA1MzEwLCAKLSAgICAxMDUzMTQsIDEwNTMxOCwgMTA1MzIyLCAxMDUzMjYsIDEwNTMzMCwgMTA1MzM0LCAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ2LCAKLSAgICAxMDUzNTAsIDEwNTM1NCwgMTA1MzU4LCAxMDUzNjIsIDEwNTM2NiwgMTA1MzcwLCAxMDUzNzQsIDEwNTM3OCwgMTA1MzgyLCAKLSAgICAxMDUzODYsIDEwNTM5MCwgMTA1Mzk0LCAxMDUzOTgsIDEwNTQwMiwgMTA1NDA2LCAxMDU0MTAsIDEwNTQxNCwgMTA1NDE4LCAKLSAgICAxMDU0MjIsIDEwNTQyNiwgMTA1NDMwLCAxMDU0MzQsIDEwNTQzOCwgMTA1NDQyLCAxMDU0NDYsIDEwNTQ1MCwgMTA1NDU0LCAKLSAgICAxMDU0NTgsIDEwNTQ2MiwgMTA1NDY2LCAxMDU0NzAsIDEwNTQ3NCwgMTA1NDc4LCAxMDU0ODIsIDEwNTQ4NiwgMTA1NDkwLCAKLSAgICAxMDU0OTQsIDEwNTQ5OCwgMTA1NTAyLCAxMDU1MDYsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTgsIDEwNTUyMiwgMTA1NTI2LCAKLSAgICAxMDU1MzAsIDEwNTUzNCwgMTA1NTM4LCAxMDU1NDIsIDEwNTU0NiwgMTA1NTUwLCAxMDU1NTQsIDEwNTU1OCwgMTA1NTYyLCAKLSAgICAxMDU1NjYsIDEwNTU3MCwgMTA1NTc0LCAxMDU1NzgsIDEwNTU4MiwgMTA1NTg2LCAxMDU1OTAsIDEwNTU5NCwgMTA1NTk4LCAKLSAgICAxMDU2MDIsIDEwNTYwNiwgMTA1NjEwLCAxMDU2MTQsIDEwNTYxOCwgMTA1NjIyLCAxMDU2MjYsIDEwNTYzMCwgMTA1NjM0LCAKLSAgICAxMDU2MzgsIDEwNTY0MiwgMTA1NjQ2LCAxMDU2NTAsIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjIsIDEwNTY2NiwgMTA1NjcwLCAKLSAgICAxMDU2NzQsIDEwNTY3OCwgMTA1NjgyLCAxMDU2ODYsIDEwNTY5MCwgMTA1Njk0LCAxMDU2OTgsIDEwNTcwMiwgMTA1NzA2LCAKLSAgICAxMDU3MTAsIDEwNTcxNCwgMTA1NzE4LCAxMDU3MjIsIDEwNTcyNiwgMTA1NzMwLCAxMDU3MzQsIDEwNTczOCwgMTA1NzQyLCAKLSAgICAxMDU3NDYsIDEwNTc1MCwgMTA1NzU0LCAxMDU3NTgsIDEwNTc2MiwgMTA1NzY2LCAxMDU3NzAsIDEwNTc3NCwgMTA1Nzc4LCAKLSAgICAxMDU3ODIsIDEwNTc4NiwgMTA1NzkwLCAxMDU3OTQsIDEwNTc5OCwgMTA1ODAyLCAxMDU4MDYsIDEwNTgxMCwgMTA1ODE0LCAKLSAgICAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNCwgMTA1ODM4LCAxMDU4NDIsIDEwNTg0NiwgMTA1ODUwLCAKLSAgICAxMDU4NTQsIDEwNTg1OCwgMTA1ODYyLCAxMDU4NjYsIDEwNTg3MCwgMTA1ODc0LCAxMDU4NzgsIDEwNTg4MiwgMTA1ODg2LCAKLSAgICAxMDU4OTAsIDEwNTg5NCwgMTA1ODk4LCAxMDU5MDIsIDEwNTkwNiwgMTA1OTEwLCAxMDU5MTQsIDEwNTkxOCwgMTA1OTIyLCAKLSAgICAxMDU5MjYsIDEwNTkzMCwgMTA1OTM0LCAxMDU5MzgsIDEwNTk0MiwgMTA1OTQ2LCAxMDU5NTAsIDEwNTk1NCwgMTA1OTU4LCAKLSAgICAxMDU5NjIsIDEwNTk2NiwgMTA1OTcwLCAxMDU5NzQsIDEwNTk3OCwgMTA1OTgyLCAxMDU5ODYsIDEwNTk5MCwgMTA1OTk0LCAKLSAgICAxMDU5OTgsIDEwNjAwMiwgMTA2MDA2LCAxMDYwMTAsIDEwNjAxNCwgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNiwgMTA2MDMwLCAKLSAgICAxMDYwMzQsIDEwNjAzOCwgMTA2MDQyLCAxMDYwNDYsIDEwNjA1MCwgMTA2MDU0LCAxMDYwNTgsIDEwNjA2MiwgMTA2MDY2LCAKLSAgICAxMDYwNzAsIDEwNjA3NCwgMTA2MDc4LCAxMDYwODIsIDEwNjA4NiwgMTA2MDkwLCAxMDYwOTQsIDEwNjA5OCwgMTA2MTAyLCAKLSAgICAxMDYxMDYsIDEwNjExMCwgMTA2MTE0LCAxMDYxMTgsIDEwNjEyMiwgMTA2MTI2LCAxMDYxMzAsIDEwNjEzNCwgMTA2MTM4LCAKLSAgICAxMDYxNDIsIDEwNjE0NiwgMTA2MTUwLCAxMDYxNTQsIDEwNjE1OCwgMTA2MTYyLCAxMDYxNjYsIDEwNjE3MCwgMTA2MTc0LCAKLSAgICAxMDYxNzgsIDEwNjE4MiwgMTA2MTg2LCAxMDYxOTAsIDEwNjE5NCwgMTA2MTk4LCAxMDYyMDIsIDEwNjIwNiwgMTA2MjEwLCAKLSAgICAxMDYyMTQsIDEwNjIxOCwgMTA2MjIyLCAxMDYyMjYsIDEwNjIzMCwgMTA2MjM0LCAxMDYyMzgsIDEwNjI0MiwgMTA2MjQ2LCAKLSAgICAxMDYyNTAsIDEwNjI1NCwgMTA2MjU4LCAxMDYyNjIsIDEwNjI2NiwgMTA2MjcwLCAxMDYyNzQsIDEwNjI3OCwgMTA2MjgyLCAKLSAgICAxMDYyODYsIDEwNjI5MCwgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNCwgMTA2MzE4LCAKLSAgICAxMDYzMjIsIDEwNjMyNiwgMTA2MzMwLCAxMDYzMzQsIDEwNjMzOCwgMTA2MzQyLCAxMDYzNDYsIDEwNjM1MCwgMTA2MzU0LCAKLSAgICAxMDYzNTgsIDEwNjM2MiwgMTA2MzY2LCAxMDYzNzAsIDEwNjM3NCwgMTA2Mzc4LCAxMDYzODIsIDEwNjM4NiwgMTA2MzkwLCAKLSAgICAxMDYzOTQsIDEwNjM5OCwgMTA2NDAyLCAxMDY0MDYsIDEwNjQxMCwgMTA2NDE0LCAxMDY0MTgsIDEwNjQyMiwgMTA2NDI2LCAKLSAgICAxMDY0MzAsIDEwNjQzNCwgMTA2NDM4LCAxMDY0NDIsIDEwNjQ0NiwgMTA2NDUwLCAxMDY0NTQsIDEwNjQ1OCwgMTA2NDYyLCAKLSAgICAxMDY0NjYsIDEwNjQ3MCwgMTA2NDc0LCAxMDY0NzgsIDEwNjQ4MiwgMTA2NDg2LCAxMDY0OTAsIDEwNjQ5NCwgMTA2NDk4LCAKLSAgICAxMDY1MDIsIDEwNjUwNiwgMTA2NTEwLCAxMDY1MTQsIDEwNjUxOCwgMTA2NTIyLCAxMDY1MjYsIDEwNjUzMCwgMTA2NTM0LCAKLSAgICAxMDY1MzgsIDEwNjU0MiwgMTA2NTQ2LCAxMDY1NTAsIDEwNjU1NCwgMTA2NTU4LCAxMDY1NjIsIDEwNjU2NiwgMTA2NTcwLCAKLSAgICAxMDY1NzQsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODYsIDEwNjU5MCwgMTA2NTk0LCAxMDY1OTgsIDEwNjYwMiwgMTA2NjA2LCAKLSAgICAxMDY2MTAsIDEwNjYxNCwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjMwLCAxMDY2MzQsIDEwNjYzOCwgMTA2NjQyLCAKLSAgICAxMDY2NDYsIDEwNjY1MCwgMTA2NjU0LCAxMDY2NTgsIDEwNjY2MiwgMTA2NjY2LCAxMDY2NzAsIDEwNjY3NCwgMTA2Njc4LCAKLSAgICAxMDY2ODIsIDEwNjY4NiwgMTA2NjkwLCAxMDY2OTQsIDEwNjY5OCwgMTA2NzAyLCAxMDY3MDYsIDEwNjcxMCwgMTA2NzE0LCAKLSAgICAxMDY3MTgsIDEwNjcyMiwgMTA2NzI2LCAxMDY3MzAsIDEwNjczNCwgMTA2NzM4LCAxMDY3NDIsIDEwNjc0NiwgMTA2NzUwLCAKLSAgICAxMDY3NTQsIDEwNjc1OCwgMTA2NzYyLCAxMDY3NjYsIDEwNjc3MCwgMTA2Nzc0LCAxMDY3NzgsIDEwNjc4MiwgMTA2Nzg2LCAKLSAgICAxMDY3OTAsIDEwNjc5NCwgMTA2Nzk4LCAxMDY4MDIsIDEwNjgwNiwgMTA2ODEwLCAxMDY4MTQsIDEwNjgxOCwgMTA2ODIyLCAKLSAgICAxMDY4MjYsIDEwNjgzMCwgMTA2ODM0LCAxMDY4MzgsIDEwNjg0MiwgMTA2ODQ2LCAxMDY4NTAsIDEwNjg1NCwgMTA2ODU4LCAKLSAgICAxMDY4NjIsIDEwNjg2NiwgMTA2ODcwLCAxMDY4NzQsIDEwNjg3OCwgMTA2ODgyLCAxMDY4ODYsIDEwNjg5MCwgMTA2ODk0LCAKLSAgICAxMDY4OTgsIDEwNjkwMiwgMTA2OTA2LCAxMDY5MTAsIDEwNjkxNCwgMTA2OTE4LCAxMDY5MjIsIDEwNjkyNiwgMTA2OTMwLCAKLSAgICAxMDY5MzQsIDEwNjkzOCwgMTA2OTQyLCAxMDY5NDYsIDEwNjk1MCwgMTA2OTU0LCAxMDY5NTgsIDEwNjk2MiwgMTA2OTY2LCAKLSAgICAxMDY5NzAsIDEwNjk3NCwgMTA2OTc4LCAxMDY5ODIsIDEwNjk4NiwgMTA2OTkwLCAxMDY5OTQsIDEwNjk5OCwgMTA3MDAyLCAKLSAgICAxMDcwMDYsIDEwNzAxMCwgMTA3MDE0LCAxMDcwMTgsIDEwNzAyMiwgMTA3MDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDcwMzAsIDEwNzAzNywgMTA3MDQ0LCAxMDcwNTMsIDEwNzA2MiwgMTA3MDY5LCAxMDcwNzQsIDEwNzA4MSwgCi0gICAgMTA3MDg4LCAxMDcwOTcsIDEwNzEwOCwgMTA3MTE5LCAxMDcxMjQsIDEwNzEzMSwgMTA3MTM2LCAxMDcxNDEsIDEwNzE0NiwgCi0gICAgMTA3MTUxLCAxMDcxNTYsIDEwNzE2MSwgMTA3MTY2LCAxMDcxNzEsIDEwNzE3NiwgMTA3MTgxLCAxMDcxODYsIDEwNzE5MywgCi0gICAgMTA3MjAwLCAxMDcyMDUsIDEwNzIxMCwgMTA3MjE1LCAxMDcyMjAsIDEwNzIyNywgMTA3MjM0LCAxMDcyNDIsIDEwNzI0NywgCi0gICAgMTA3MjU0LCAxMDcyNTksIDEwNzI2NCwgMTA3MjY5LCAxMDcyNzQsIDEwNzI3OSwgMTA3Mjg2LCAxMDcyOTMsIDEwNzI5OCwgCi0gICAgMTA3MzAzLCAxMDczMDgsIDEwNzMxMywgMTA3MzE4LCAxMDczMjMsIDEwNzMyOCwgMTA3MzMzLCAxMDczMzgsIDEwNzM0MywgCi0gICAgMTA3MzQ4LCAxMDczNTMsIDEwNzM1OCwgMTA3MzYzLCAxMDczNjgsIDEwNzM3MywgMTA3Mzc4LCAxMDczODMsIDEwNzM4OCwgCi0gICAgMTA3Mzk1LCAxMDc0MDAsIDEwNzQwNSwgMTA3NDE0LCAxMDc0MjEsIDEwNzQyNiwgMTA3NDMxLCAxMDc0MzYsIDEwNzQ0MSwgCi0gICAgMTA3NDQ2LCAxMDc0NTEsIDEwNzQ1NiwgMTA3NDYxLCAxMDc0NjYsIDEwNzQ3MSwgMTA3NDc2LCAxMDc0ODEsIDEwNzQ4NiwgCi0gICAgMTA3NDkxLCAxMDc0OTYsIDEwNzUwMSwgMTA3NTA2LCAxMDc1MTEsIDEwNzUxNiwgMTA3NTIxLCAxMDc1MjYsIDEwNzUzMiwgCi0gICAgMTA3NTQwLCAxMDc1NDYsIDEwNzU1NCwgMTA3NTYyLCAxMDc1NzAsIDEwNzU3NiwgMTA3NTgyLCAxMDc1ODgsIDEwNzU5NCwgCi0gICAgMTA3NjAwLCAxMDc2MDgsIDEwNzYxOCwgMTA3NjI2LCAxMDc2MzQsIDEwNzY0MCwgMTA3NjQ2LCAxMDc2NTQsIDEwNzY2MiwgCi0gICAgMTA3NjY4LCAxMDc2NzYsIDEwNzY4NCwgMTA3NjkyLCAxMDc2OTgsIDEwNzcwNCwgMTA3NzEwLCAxMDc3MTYsIDEwNzcyMiwgCi0gICAgMTA3NzI4LCAxMDc3MzYsIDEwNzc0NCwgMTA3NzUwLCAxMDc3NTYsIDEwNzc2MiwgMTA3NzY4LCAxMDc3NzQsIDEwNzc4MiwgCi0gICAgMTA3Nzg4LCAxMDc3OTQsIDEwNzgwMCwgMTA3ODA2LCAxMDc4MTIsIDEwNzgxOCwgMTA3ODI2LCAxMDc4MzIsIDEwNzgzOCwgCi0gICAgMTA3ODQ0LCAxMDc4NTAsIDEwNzg1OCwgMTA3ODY2LCAxMDc4NzIsIDEwNzg3OCwgMTA3ODg0LCAxMDc4ODksIDEwNzg5NSwgCi0gICAgMTA3OTAxLCAxMDc5MDgsIDEwNzkxMywgMTA3OTE4LCAxMDc5MjMsIDEwNzkyOCwgMTA3OTMzLCAxMDc5MzgsIDEwNzk0MywgCi0gICAgMTA3OTQ4LCAxMDc5NTMsIDEwNzk2MiwgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5OTEsIDEwNzk5NiwgCi0gICAgMTA4MDAxLCAxMDgwMDYsIDEwODAxMywgMTA4MDE4LCAxMDgwMjMsIDEwODAyOCwgMTA4MDMzLCAxMDgwMzgsIDEwODA0MywgCi0gICAgMTA4MDQ4LCAxMDgwNTMsIDEwODA1OCwgMTA4MDYzLCAxMDgwNjgsIDEwODA3NSwgMTA4MDgwLCAxMDgwODcsIDEwODA5MiwgCi0gICAgMTA4MDk3LCAxMDgxMDQsIDEwODEwOSwgMTA4MTE0LCAxMDgxMTksIDEwODEyNCwgMTA4MTI5LCAxMDgxMzQsIDEwODEzOSwgCi0gICAgMTA4MTQ0LCAxMDgxNDksIDEwODE1NCwgMTA4MTU5LCAxMDgxNjQsIDEwODE2OSwgMTA4MTc0LCAxMDgxNzksIDEwODE4NCwgCi0gICAgMTA4MTg5LCAxMDgxOTQsIDEwODE5OSwgMTA4MjA2LCAxMDgyMTEsIDEwODIxNiwgMTA4MjIxLCAxMDgyMjYsIDEwODIzMSwgCi0gICAgMTA4MjM2LCAxMDgyNDEsIDEwODI0NiwgMTA4MjUxLCAxMDgyNTYsIDEwODI2MSwgMTA4MjY2LCAxMDgyNzEsIDEwODI3OCwgCi0gICAgMTA4MjgzLCAxMDgyODgsIDEwODI5NSwgMTA4MzAwLCAxMDgzMDUsIDEwODMxMCwgMTA4MzE1LCAxMDgzMjAsIDEwODMyNSwgCi0gICAgMTA4MzMwLCAxMDgzMzUsIDEwODM0MCwgMTA4MzQ1LCAxMDgzNTIsIDEwODM1NywgMTA4MzYyLCAxMDgzNjcsIDEwODM3MiwgCi0gICAgMTA4Mzc3LCAxMDgzODQsIDEwODM5MSwgMTA4Mzk2LCAxMDg0MDEsIDEwODQwNiwgMTA4NDExLCAxMDg0MTYsIDEwODQyMSwgCi0gICAgMTA4NDI2LCAxMDg0MzEsIDEwODQzNiwgMTA4NDQxLCAxMDg0NDYsIDEwODQ1MSwgMTA4NDU2LCAxMDg0NjEsIDEwODQ2NiwgCi0gICAgMTA4NDcxLCAxMDg0NzYsIDEwODQ4MSwgMTA4NDg2LCAxMDg0OTEsIDEwODQ5NiwgMTA4NTAxLCAxMDg1MDYsIDEwODUxMSwgCi0gICAgMTA4NTE2LCAxMDg1MjEsIDEwODUyNiwgMTA4NTMxLCAxMDg1MzYsIDEwODU0MSwgMTA4NTQ2LCAxMDg1NTEsIDEwODU1NiwgCi0gICAgMTA4NTYxLCAxMDg1NjYsIDEwODU3MSwgMTA4NTc4LCAxMDg1ODMsIDEwODU4OCwgMTA4NTkzLCAxMDg1OTgsIDEwODYwMywgCi0gICAgMTA4NjA4LCAxMDg2MTMsIDEwODYxOCwgMTA4NjIzLCAxMDg2MjgsIDEwODYzMywgMTA4NjM4LCAxMDg2NDMsIDEwODY0OCwgCi0gICAgMTA4NjUzLCAxMDg2NTgsIDEwODY2MywgMTA4NjY4LCAxMDg2NzMsIDEwODY3OCwgMTA4NjgzLCAxMDg2ODgsIDEwODY5MywgCi0gICAgMTA4Njk4LCAxMDg3MDMsIDEwODcwOCwgMTA4NzEzLCAxMDg3MTgsIDEwODcyMywgMTA4NzI4LCAxMDg3MzMsIDEwODczOCwgCi0gICAgMTA4NzQzLCAxMDg3NDgsIDEwODc1MywgMTA4NzU4LCAxMDg3NjMsIDEwODc2OCwgMTA4NzczLCAxMDg3NzgsIDEwODc4MywgCi0gICAgMTA4Nzg4LCAxMDg3OTMsIDEwODc5OCwgMTA4ODAzLCAxMDg4MDgsIDEwODgxMywgMTA4ODE4LCAxMDg4MjMsIDEwODgyOCwgCi0gICAgMTA4ODMzLCAxMDg4MzgsIDEwODg0MywgMTA4ODQ4LCAxMDg4NTMsIDEwODg1OCwgMTA4ODYzLCAxMDg4NjgsIDEwODg3NSwgCi0gICAgMTA4ODgwLCAxMDg4ODUsIDEwODg5MCwgMTA4ODk1LCAxMDg5MDAsIDEwODkwNSwgMTA4OTA5LCAxMDg5MTQsIDEwODkxOSwgCi0gICAgMTA4OTI0LCAxMDg5MjksIDEwODkzNCwgMTA4OTM5LCAxMDg5NDQsIDEwODk0OSwgMTA4OTU0LCAxMDg5NTksIDEwODk2NCwgCi0gICAgMTA4OTY5LCAxMDg5NzQsIDEwODk3OSwgMTA4OTg2LCAxMDg5OTEsIDEwODk5NiwgMTA5MDAyLCAxMDkwMDcsIDEwOTAxMiwgCi0gICAgMTA5MDE3LCAxMDkwMjIsIDEwOTAyNywgMTA5MDMyLCAxMDkwMzcsIDEwOTA0MiwgMTA5MDQ3LCAxMDkwNTIsIDEwOTA1NywgCi0gICAgMTA5MDYyLCAxMDkwNjcsIDEwOTA3MiwgMTA5MDc3LCAxMDkwODIsIDEwOTA4NywgMTA5MDkyLCAxMDkwOTcsIDEwOTEwMiwgCi0gICAgMTA5MTA3LCAxMDkxMTIsIDEwOTExNywgMTA5MTIyLCAxMDkxMjcsIDEwOTEzMiwgMTA5MTM3LCAxMDkxNDIsIDEwOTE0NywgCi0gICAgMTA5MTUyLCAxMDkxNTcsIDEwOTE2MiwgMTA5MTY3LCAxMDkxNzIsIDEwOTE3NywgMTA5MTgyLCAxMDkxODcsIDEwOTE5MiwgCi0gICAgMTA5MTk3LCAxMDkyMDIsIDEwOTIwNywgMTA5MjEyLCAxMDkyMTcsIDEwOTIyNCwgMTA5MjI5LCAxMDkyMzQsIDEwOTI0MSwgCi0gICAgMTA5MjQ4LCAxMDkyNTMsIDEwOTI1OCwgMTA5MjYzLCAxMDkyNjgsIDEwOTI3MywgMTA5Mjc4LCAxMDkyODMsIDEwOTI4OCwgCi0gICAgMTA5MjkzLCAxMDkyOTgsIDEwOTMwMywgMTA5MzA4LCAxMDkzMTMsIDEwOTMxOCwgMTA5MzIzLCAxMDkzMjgsIDEwOTMzMywgCi0gICAgMTA5MzM4LCAxMDkzNDMsIDEwOTM0OCwgMTA5MzUzLCAxMDkzNTgsIDEwOTM2MywgMTA5MzY4LCAxMDkzNzMsIDEwOTM4MCwgCi0gICAgMTA5Mzg1LCAxMDkzOTAsIDEwOTM5NSwgMTA5NDAwLCAxMDk0MDUsIDEwOTQxMCwgMTA5NDE1LCAxMDk0MjAsIDEwOTQyNSwgCi0gICAgMTA5NDMwLCAxMDk0MzUsIDEwOTQ0MCwgMTA5NDQ1LCAxMDk0NTAsIDEwOTQ1NSwgMTA5NDYwLCAxMDk0NjUsIDEwOTQ3MCwgCi0gICAgMTA5NDc3LCAxMDk0ODIsIDEwOTQ4NywgMTA5NDkyLCAxMDk0OTcsIDEwOTUwMiwgMTA5NTA3LCAxMDk1MTIsIDEwOTUxOCwgCi0gICAgMTA5NTIzLCAxMDk1MjgsIDEwOTUzMywgMTA5NTM4LCAxMDk1NDMsIDEwOTU0OCwgMTA5NTUzLCAxMDk1NTgsIDEwOTU2NSwgCi0gICAgMTA5NTcyLCAxMDk1NzcsIDEwOTU4MiwgMTA5NTg2LCAxMDk1OTEsIDEwOTU5NSwgMTA5NTk5LCAxMDk2MDQsIDEwOTYxMSwgCi0gICAgMTA5NjE2LCAxMDk2MjEsIDEwOTYzMCwgMTA5NjM1LCAxMDk2NDAsIDEwOTY0NSwgMTA5NjUwLCAxMDk2NTcsIDEwOTY2NCwgCi0gICAgMTA5NjY5LCAxMDk2NzQsIDEwOTY3OSwgMTA5Njg0LCAxMDk2OTEsIDEwOTY5NiwgMTA5NzAxLCAxMDk3MDYsIDEwOTcxMSwgCi0gICAgMTA5NzE2LCAxMDk3MjEsIDEwOTcyNiwgMTA5NzMxLCAxMDk3MzYsIDEwOTc0MSwgMTA5NzQ2LCAxMDk3NTEsIDEwOTc1OCwgCi0gICAgMTA5NzYyLCAxMDk3NjcsIDEwOTc3MiwgMTA5Nzc3LCAxMDk3ODIsIDEwOTc4NiwgMTA5NzkxLCAxMDk3OTYsIDEwOTgwMSwgCi0gICAgMTA5ODA2LCAxMDk4MTEsIDEwOTgxNiwgMTA5ODIxLCAxMDk4MjYsIDEwOTgzMSwgMTA5ODM3LCAxMDk4NDMsIDEwOTg0OSwgCi0gICAgMTA5ODU1LCAxMDk4NjEsIDEwOTg2NywgMTA5ODczLCAxMDk4NzksIDEwOTg4NSwgMTA5ODkxLCAxMDk4OTcsIDEwOTkwMywgCi0gICAgMTA5OTA4LCAxMDk5MTQsIDEwOTkyMCwgMTA5OTI2LCAxMDk5MzIsIDEwOTkzOCwgMTA5OTQ0LCAxMDk5NTAsIDEwOTk1NiwgCi0gICAgMTA5OTYyLCAxMDk5NjgsIDEwOTk3NCwgMTA5OTc5LCAxMDk5ODUsIDEwOTk5MSwgMTA5OTk3LCAxMTAwMDMsIDExMDAwOSwgCi0gICAgMTEwMDE1LCAxMTAwMjEsIDExMDAyNywgMTEwMDMzLCAxMTAwMzksIDExMDA0NSwgMTEwMDUxLCAxMTAwNTcsIDExMDA2MywgCi0gICAgMTEwMDY5LCAxMTAwNzUsIDExMDA4MSwgMTEwMDg3LCAxMTAwOTMsIDExMDA5OSwgMTEwMTA0LCAxMTAxMTAsIDExMDExNiwgCi0gICAgMTEwMTIyLCAxMTAxMjgsIDExMDEzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTQwLCAxMTAxNDMsIDExMDE0NywgMTEwMTUxLCAxMTAxNTUsIDExMDE1OCwgCi0gICAgMTEwMTYyLCAxMTAxNjcsIDExMDE3MSwgMTEwMTc1LCAxMTAxNzksIDExMDE4MywgMTEwMTg3LCAxMTAxOTIsIDExMDE5NywgCi0gICAgMTEwMjAxLCAxMTAyMDUsIDExMDIwOCwgMTEwMjEyLCAxMTAyMTcsIDExMDIyMiwgMTEwMjI2LCAxMTAyMzAsIDExMDIzNCwgCi0gICAgMTEwMjM4LCAxMTAyNDIsIDExMDI0NiwgMTEwMjUwLCAxMTAyNTQsIDExMDI1OCwgMTEwMjYyLCAxMTAyNjUsIDExMDI2OSwgCi0gICAgMTEwMjczLCAxMTAyNzcsIDExMDI4MSwgMTEwMjg1LCAxMTAyODksIDExMDI5NSwgMTEwMjk4LCAxMTAzMDIsIDExMDMwNiwgCi0gICAgMTEwMzEwLCAxMTAzMTQsIDExMDMxOCwgMTEwMzIyLCAxMTAzMjYsIDExMDMzMCwgMTEwMzM0LCAxMTAzMzksIDExMDM0NCwgCi0gICAgMTEwMzUwLCAxMTAzNTQsIDExMDM1OCwgMTEwMzYyLCAxMTAzNjYsIDExMDM3MCwgMTEwMzc0LCAxMTAzNzksIDExMDM4MiwgCi0gICAgMTEwMzg2LCAxMTAzOTAsIDExMDM5NCwgMTEwMzk4LCAxMTA0MDQsIDExMDQwOCwgMTEwNDEyLCAxMTA0MTYsIDExMDQyMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNDI0LCAxMTA0MjgsIDExMDQzMiwgMTEwNDM4LCAxMTA0NDQsIAotICAgIDExMDQ0OCwgMTEwNDUzLCAxMTA0NTgsIDExMDQ2MywgMTEwNDY4LCAxMTA0NzIsIDExMDQ3NywgMTEwNDgyLCAxMTA0ODcsIAotICAgIDExMDQ5MSwgMTEwNDk2LCAxMTA1MDEsIDExMDUwNiwgMTEwNTEwLCAxMTA1MTUsIDExMDUyMCwgMTEwNTI1LCAxMTA1MzAsIAotICAgIDExMDUzNSwgMTEwNTQwLCAxMTA1NDUsIDExMDU1MCwgMTEwNTU0LCAxMTA1NTksIDExMDU2NCwgMTEwNTY5LCAxMTA1NzQsIAotICAgIDExMDU3OSwgMTEwNTg0LCAxMTA1ODksIDExMDU5NCwgMTEwNTk5LCAxMTA2MDQsIDExMDYwOSwgMTEwNjE2LCAxMTA2MjEsIAotICAgIDExMDYyOCwgMTEwNjMzLCAxMTA2MzgsIDExMDY0MywgMTEwNjQ4LCAxMTA2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDY1OCwgMTEwNjYyLCAxMTA2NjgsIDExMDY3MSwgMTEwNjc0LCAxMTA2NzgsIAotICAgIDExMDY4MiwgMTEwNjg2LCAxMTA2OTAsIDExMDY5NCwgMTEwNjk4LCAxMTA3MDIsIDExMDcwOCwgMTEwNzE0LCAxMTA3MjAsIAotICAgIDExMDcyNiwgMTEwNzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMTA3MzgsIDExMDc0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwNzQ5LCAxMTA3NTQsIDExMDc1OSwgCi0gICAgMTEwNzY0LCAxMTA3NzEsIDExMDc3OCwgMTEwNzg1LCAxMTA3OTIsIDExMDc5NywgMTEwODAyLCAxMTA4MDcsIDExMDgxMiwgCi0gICAgMTEwODE5LCAxMTA4MjQsIDExMDgzMSwgMTEwODM4LCAxMTA4NDMsIDExMDg0OCwgMTEwODUzLCAxMTA4NjAsIDExMDg2NSwgCi0gICAgMTEwODcwLCAxMTA4NzcsIDExMDg4NCwgMTEwODg5LCAxMTA4OTQsIDExMDg5OSwgMTEwOTA2LCAxMTA5MTMsIDExMDkyMCwgCi0gICAgMTEwOTI1LCAxMTA5MzAsIDExMDkzNywgMTEwOTQ0LCAxMTA5NTEsIDExMDk1OCwgMTEwOTYzLCAxMTA5NjgsIDExMDk3MywgCi0gICAgMTEwOTgwLCAxMTA5ODUsIDExMDk5MCwgMTEwOTk1LCAxMTEwMDIsIDExMTAxMSwgMTExMDE4LCAxMTEwMjMsIDExMTAyOCwgCi0gICAgMTExMDMzLCAxMTEwMzgsIDExMTA0MywgMTExMDQ4LCAxMTEwNTcsIDExMTA2NCwgMTExMDY5LCAxMTEwNzYsIDExMTA4MywgCi0gICAgMTExMDg4LCAxMTEwOTMsIDExMTA5OCwgMTExMTA1LCAxMTExMTAsIDExMTExNywgMTExMTI0LCAxMTExMjksIDExMTEzNCwgCi0gICAgMTExMTM5LCAxMTExNDYsIDExMTE1MywgMTExMTU4LCAxMTExNjMsIDExMTE3MCwgMTExMTc3LCAxMTExODQsIDExMTE4OSwgCi0gICAgMTExMTk0LCAxMTExOTksIDExMTIwNCwgMTExMjExLCAxMTEyMjAsIDExMTIyOSwgMTExMjM0LCAxMTEyNDEsIDExMTI1MCwgCi0gICAgMTExMjU1LCAxMTEyNjAsIDExMTI2NSwgMTExMjcwLCAxMTEyNzcsIDExMTI4NCwgMTExMjkxLCAxMTEyOTgsIDExMTMwMywgCi0gICAgMTExMzA4LCAxMTEzMTMsIDExMTMyMCwgMTExMzI3LCAxMTEzMzQsIDExMTMzOSwgMTExMzQ0LCAxMTEzNTEsIDExMTM1NiwgCi0gICAgMTExMzYzLCAxMTEzNjgsIDExMTM3NSwgMTExMzgwLCAxMTEzODcsIDExMTM5NCwgMTExMzk5LCAxMTE0MDQsIDExMTQwOSwgCi0gICAgMTExNDE0LCAxMTE0MTksIDExMTQyNCwgMTExNDI5LCAxMTE0MzQsIDExMTQzOSwgMTExNDQ2LCAxMTE0NTMsIDExMTQ2MCwgCi0gICAgMTExNDY3LCAxMTE0NzQsIDExMTQ4MywgMTExNDg4LCAxMTE0OTMsIDExMTUwMCwgMTExNTA3LCAxMTE1MTIsIDExMTUxOSwgCi0gICAgMTExNTI2LCAxMTE1MzMsIDExMTU0MCwgMTExNTQ3LCAxMTE1NTQsIDExMTU1OSwgMTExNTY0LCAxMTE1NjksIDExMTU3NCwgCi0gICAgMTExNTc5LCAxMTE1ODgsIDExMTU5NywgMTExNjA2LCAxMTE2MTUsIDExMTYyNCwgMTExNjMzLCAxMTE2NDIsIDExMTY1MSwgCi0gICAgMTExNjU2LCAxMTE2NjcsIDExMTY3OCwgMTExNjg3LCAxMTE2OTIsIDExMTY5NywgMTExNzAyLCAxMTE3MDcsIDExMTcxNiwgCi0gICAgMTExNzIzLCAxMTE3MzAsIDExMTczNywgMTExNzQ0LCAxMTE3NTEsIDExMTc1OCwgMTExNzY3LCAxMTE3NzYsIDExMTc4NywgCi0gICAgMTExNzk2LCAxMTE4MDcsIDExMTgxNiwgMTExODIzLCAxMTE4MzIsIDExMTg0MywgMTExODUyLCAxMTE4NjEsIDExMTg3MCwgCi0gICAgMTExODc5LCAxMTE4ODYsIDExMTg5MywgMTExOTAwLCAxMTE5MDksIDExMTkxOCwgMTExOTI5LCAxMTE5MzgsIDExMTk0NywgCi0gICAgMTExOTU4LCAxMTE5NjMsIDExMTk2OCwgMTExOTc5LCAxMTE5ODcsIDExMTk5NiwgMTEyMDA1LCAxMTIwMTQsIDExMjAyNSwgCi0gICAgMTEyMDM0LCAxMTIwNDMsIDExMjA1NCwgMTEyMDY1LCAxMTIwNzYsIDExMjA4NywgMTEyMDk4LCAxMTIxMDksIDExMjExNiwgCi0gICAgMTEyMTIzLCAxMTIxMzAsIDExMjEzNywgMTEyMTQ4LCAxMTIxNTcsIDExMjE2NCwgMTEyMTcxLCAxMTIxNzgsIDExMjE4OSwgCi0gICAgMTEyMjAwLCAxMTIyMTEsIDExMjIyMiwgMTEyMjMzLCAxMTIyNDQsIDExMjI1NSwgMTEyMjY2LCAxMTIyNzMsIDExMjI4MCwgCi0gICAgMTEyMjg5LCAxMTIyOTgsIDExMjMwNSwgMTEyMzEyLCAxMTIzMTksIDExMjMyOCwgMTEyMzM3LCAxMTIzNDYsIDExMjM1MywgCi0gICAgMTEyMzYyLCAxMTIzNzEsIDExMjM4MCwgMTEyMzg3LCAxMTIzOTQsIDExMjM5OSwgMTEyNDA1LCAxMTI0MTIsIDExMjQxOSwgCi0gICAgMTEyNDI2LCAxMTI0MzMsIDExMjQ0MCwgMTEyNDQ3LCAxMTI0NTYsIDExMjQ2NSwgMTEyNDc0LCAxMTI0ODMsIDExMjQ5MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyNDk5LCAxMTI1MDUsIDExMjUxMCwgMTEyNTE1LCAxMTI1MjIsIAotICAgIDExMjUyOCwgMTEyNTM0LCAxMTI1NDAsIDExMjU0NiwgMTEyNTUyLCAxMTI1NTgsIDExMjU2NCwgMTEyNTY4LCAxMTI1NzIsIAotICAgIDExMjU3OCwgMTEyNTg0LCAxMTI1OTAsIDExMjU5NCwgMTEyNTk5LCAxMTI2MDQsIDExMjYwOCwgMTEyNjEyLCAxMTI2MTUsIAotICAgIDExMjYyMSwgMTEyNjI3LCAxMTI2MzMsIDExMjYzOSwgMTEyNjQ1LCAxMTI2NTEsIDExMjY1NywgMTEyNjYzLCAxMTI2NjksIAotICAgIDExMjY3OSwgMTEyNjg5LCAxMTI2OTUsIDExMjcwMSwgMTEyNzExLCAxMTI3MjEsIDExMjcyNywgMCwgMCwgMTEyNzMzLCAKLSAgICAxMTI3NDEsIDExMjc0NiwgMTEyNzUxLCAxMTI3NTcsIDExMjc2MywgMTEyNzY5LCAxMTI3NzUsIDExMjc4MSwgMTEyNzg3LCAKLSAgICAxMTI3OTQsIDExMjgwMSwgMTEyODA3LCAxMTI4MTMsIDExMjgxOSwgMTEyODI1LCAxMTI4MzEsIDExMjgzNywgMTEyODQzLCAKLSAgICAxMTI4NDksIDExMjg1NCwgMTEyODYwLCAxMTI4NjYsIDExMjg3MiwgMTEyODc4LCAxMTI4ODQsIDExMjg5MywgMTEyODk5LCAKLSAgICAxMTI5MDQsIDExMjkxMiwgMTEyOTE5LCAxMTI5MjYsIDExMjkzNSwgMTEyOTQ0LCAxMTI5NTMsIDExMjk2MiwgMTEyOTcxLCAKLSAgICAxMTI5ODAsIDExMjk4OSwgMTEyOTk4LCAxMTMwMDgsIDExMzAxOCwgMTEzMDI2LCAxMTMwMzQsIDExMzA0MywgMTEzMDUyLCAKLSAgICAxMTMwNTgsIDExMzA2NCwgMTEzMDcwLCAxMTMwNzYsIDExMzA4NCwgMTEzMDkyLCAxMTMwOTYsIDExMzEwMiwgMTEzMTA3LCAKLSAgICAxMTMxMTMsIDExMzExOSwgMTEzMTI1LCAxMTMxMzEsIDExMzEzNywgMTEzMTQ2LCAxMTMxNTEsIDExMzE1OCwgMTEzMTYzLCAKLSAgICAxMTMxNjgsIDExMzE3MywgMTEzMTc5LCAxMTMxODUsIDExMzE5MSwgMTEzMTk4LCAxMTMyMDMsIDExMzIwOCwgMTEzMjEzLCAKLSAgICAxMTMyMTgsIDExMzIyMywgMTEzMjI5LCAxMTMyMzUsIDExMzI0MSwgMTEzMjQ3LCAxMTMyNTMsIDExMzI1OSwgMTEzMjY1LCAKLSAgICAxMTMyNzEsIDExMzI3NiwgMTEzMjgxLCAxMTMyODYsIDExMzI5MSwgMTEzMjk2LCAxMTMzMDEsIDExMzMwNiwgMTEzMzExLCAKLSAgICAxMTMzMTcsIDExMzMyMywgMTEzMzI4LCAxMTMzMzMsIDExMzMzOCwgMTEzMzQzLCAxMTMzNDgsIDExMzM1NCwgMTEzMzYxLCAKLSAgICAxMTMzNjUsIDExMzM2OSwgMTEzMzczLCAxMTMzNzcsIDExMzM4MSwgMTEzMzg1LCAxMTMzODksIDExMzM5MywgMTEzNDAxLCAKLSAgICAxMTM0MTEsIDExMzQxNSwgMTEzNDE5LCAxMTM0MjUsIDExMzQzMSwgMTEzNDM3LCAxMTM0NDMsIDExMzQ0OSwgMTEzNDU1LCAKLSAgICAxMTM0NjEsIDExMzQ2NywgMTEzNDczLCAxMTM0NzksIDExMzQ4NSwgMTEzNDkxLCAxMTM0OTcsIDExMzUwMywgMTEzNTA3LCAKLSAgICAxMTM1MTEsIDExMzUxOCwgMTEzNTI0LCAxMTM1MzAsIDExMzUzNiwgMTEzNTQxLCAxMTM1NDgsIDExMzU1MywgMTEzNTU5LCAKLSAgICAxMTM1NjUsIDExMzU3MSwgMTEzNTc3LCAxMTM1ODIsIDExMzU4NiwgMTEzNTkyLCAxMTM1OTYsIDExMzYwMCwgMTEzNjA0LCAKLSAgICAxMTM2MTAsIDExMzYxNiwgMTEzNjIwLCAxMTM2MjYsIDExMzYzMiwgMTEzNjM4LCAxMTM2NDQsIDExMzY1MCwgMTEzNjU4LCAKLSAgICAxMTM2NjYsIDExMzY3MiwgMTEzNjc4LCAxMTM2ODQsIDExMzY5MCwgMTEzNzAyLCAxMTM3MTQsIDExMzcyOCwgMTEzNzQwLCAKLSAgICAxMTM3NTIsIDExMzc2NiwgMTEzNzgwLCAxMTM3OTQsIDExMzc5OCwgMTEzODA2LCAxMTM4MTQsIDExMzgxOSwgMTEzODIzLCAKLSAgICAxMTM4MjcsIDExMzgzMSwgMTEzODM1LCAxMTM4MzksIDExMzg0MywgMTEzODQ3LCAxMTM4NTMsIDExMzg1OSwgMTEzODY1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTM4NzEsIDExMzg3NywgMTEzODgzLCAxMTM4ODksIDExMzg5NSwgCi0gICAgMTEzOTAxLCAxMTM5MDcsIDExMzkxMywgMTEzOTE5LCAxMTM5MjUsIDExMzkzMSwgMTEzOTM3LCAxMTM5NDMsIDExMzk0OSwgCi0gICAgMTEzOTU1LCAxMTM5NjEsIDExMzk2NywgMTEzOTczLCAxMTM5NzksIDExMzk4NSwgMTEzOTkxLCAxMTM5OTcsIDExNDAwMywgCi0gICAgMTE0MDA5LCAxMTQwMTUsIDExNDAyMSwgMTE0MDI3LCAxMTQwMzMsIDExNDAzOSwgMTE0MDQ1LCAxMTQwNTEsIDExNDA1NywgCi0gICAgMTE0MDYzLCAxMTQwNjksIDExNDA3NSwgMTE0MDgxLCAxMTQwODcsIDExNDA5MywgMTE0MDk5LCAxMTQxMDUsIDExNDExMSwgCi0gICAgMTE0MTE3LCAxMTQxMjMsIDExNDEyOSwgMTE0MTM1LCAxMTQxNDEsIDExNDE0NywgMTE0MTUzLCAxMTQxNTksIDExNDE2NSwgCi0gICAgMTE0MTcxLCAxMTQxNzcsIDExNDE4MywgMTE0MTg5LCAxMTQxOTUsIDExNDIwMSwgMTE0MjA3LCAxMTQyMTMsIDExNDIxOSwgCi0gICAgMTE0MjI1LCAxMTQyMzEsIDExNDIzNywgMTE0MjQzLCAxMTQyNDksIDExNDI1NSwgMTE0MjYxLCAxMTQyNjcsIDExNDI3MiwgCi0gICAgMTE0Mjc3LCAxMTQyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDI4NiwgMTE0MjkxLCAxMTQyOTgsIAotICAgIDExNDMwNSwgMTE0MzEyLCAxMTQzMTksIDExNDMyNCwgMTE0MzI4LCAxMTQzMzQsIDExNDMzOCwgMTE0MzQyLCAxMTQzNDgsIAotICAgIDExNDM1MiwgMTE0MzU2LCAxMTQzNjAsIDExNDM2NiwgMTE0MzczLCAxMTQzNzcsIDExNDM4MSwgMTE0Mzg1LCAxMTQzODksIAotICAgIDExNDM5MywgMTE0Mzk3LCAxMTQ0MDMsIDExNDQwNywgMTE0NDExLCAxMTQ0MTUsIDExNDQxOSwgMTE0NDIzLCAxMTQ0MjcsIAotICAgIDExNDQzMSwgMTE0NDM1LCAxMTQ0MzksIDExNDQ0MywgMTE0NDQ3LCAxMTQ0NTEsIDExNDQ1NiwgMTE0NDYwLCAxMTQ0NjQsIAotICAgIDExNDQ2OCwgMTE0NDcyLCAxMTQ0NzYsIDExNDQ4MCwgMTE0NDg0LCAxMTQ0ODgsIDExNDQ5MiwgMTE0NDk5LCAxMTQ1MDMsIAotICAgIDExNDUxMSwgMTE0NTE1LCAxMTQ1MTksIDExNDUyMywgMTE0NTI3LCAxMTQ1MzEsIDExNDUzNSwgMTE0NTM5LCAxMTQ1NDYsIAotICAgIDExNDU1MCwgMTE0NTU0LCAxMTQ1NTgsIDExNDU2MiwgMTE0NTY2LCAxMTQ1NzIsIDExNDU3NiwgMTE0NTgyLCAxMTQ1ODYsIAotICAgIDExNDU5MCwgMTE0NTk0LCAxMTQ1OTgsIDExNDYwMiwgMTE0NjA2LCAxMTQ2MTAsIDExNDYxNCwgMTE0NjE4LCAxMTQ2MjIsIAotICAgIDExNDYyNiwgMTE0NjMwLCAxMTQ2MzQsIDExNDYzOCwgMTE0NjQyLCAxMTQ2NDYsIDExNDY1MCwgMTE0NjU0LCAxMTQ2NTgsIAotICAgIDExNDY2NiwgMTE0NjcwLCAxMTQ2NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDY3OCwgMTE0Njg2LCAKLSAgICAxMTQ2OTQsIDExNDcwMiwgMTE0NzEwLCAxMTQ3MTgsIDExNDcyNiwgMTE0NzM0LCAxMTQ3NDIsIDExNDc1MCwgMTE0NzU4LCAKLSAgICAxMTQ3NjYsIDExNDc3NCwgMTE0NzgyLCAxMTQ3OTAsIDExNDc5OCwgMTE0ODA2LCAxMTQ4MTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDgyMiwgMTE0ODI2LCAxMTQ4MzEsIDExNDgzNiwgMTE0ODQxLCAxMTQ4NDUsIAotICAgIDExNDg1MCwgMTE0ODU1LCAxMTQ4NjAsIDExNDg2NCwgMTE0ODY5LCAxMTQ4NzQsIDExNDg3OCwgMTE0ODgyLCAxMTQ4ODcsIAotICAgIDExNDg5MSwgMTE0ODk2LCAxMTQ5MDEsIDExNDkwNSwgMTE0OTEwLCAxMTQ5MTUsIDExNDkxOSwgMTE0OTI0LCAxMTQ5MjksIAotICAgIDExNDkzNCwgMTE0OTM5LCAxMTQ5NDQsIDExNDk0OCwgMTE0OTUzLCAxMTQ5NTgsIDExNDk2MywgMTE0OTY3LCAxMTQ5NzIsIAotICAgIDExNDk3NywgMTE0OTgyLCAxMTQ5ODYsIDExNDk5MSwgMTE0OTk2LCAxMTUwMDAsIDExNTAwNCwgMTE1MDA5LCAxMTUwMTMsIAotICAgIDExNTAxOCwgMTE1MDIzLCAxMTUwMjcsIDExNTAzMiwgMTE1MDM3LCAxMTUwNDEsIDExNTA0NiwgMTE1MDUxLCAxMTUwNTYsIAotICAgIDExNTA2MSwgMTE1MDY2LCAxMTUwNzAsIDExNTA3NSwgMTE1MDgwLCAxMTUwODUsIDExNTA4OSwgMTE1MDk0LCAxMTUwOTksIAotICAgIDExNTEwNCwgMTE1MTA4LCAxMTUxMTMsIDExNTExOCwgMTE1MTIyLCAxMTUxMjYsIDExNTEzMSwgMTE1MTM1LCAxMTUxNDAsIAotICAgIDExNTE0NSwgMTE1MTQ5LCAxMTUxNTQsIDExNTE1OSwgMTE1MTYzLCAxMTUxNjgsIDExNTE3MywgMTE1MTc4LCAxMTUxODMsIAotICAgIDExNTE4OCwgMTE1MTkyLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTEsIDExNTIxNiwgMCwgMTE1MjIxLCAKLSAgICAxMTUyMjUsIDExNTIzMCwgMTE1MjM1LCAxMTUyMzksIDExNTI0MywgMTE1MjQ4LCAxMTUyNTIsIDExNTI1NywgMTE1MjYyLCAKLSAgICAxMTUyNjYsIDExNTI3MSwgMTE1Mjc2LCAxMTUyODAsIDExNTI4NSwgMTE1MjkwLCAxMTUyOTUsIDExNTMwMCwgMTE1MzA1LCAKLSAgICAxMTUzMTAsIDExNTMxNiwgMTE1MzIyLCAxMTUzMjgsIDExNTMzMywgMTE1MzM5LCAxMTUzNDUsIDExNTM1MSwgMTE1MzU2LCAKLSAgICAxMTUzNjIsIDExNTM2OCwgMTE1MzczLCAxMTUzNzgsIDExNTM4NCwgMTE1Mzg5LCAxMTUzOTUsIDExNTQwMSwgMTE1NDA2LCAKLSAgICAxMTU0MTIsIDExNTQxOCwgMTE1NDIzLCAxMTU0MjksIDExNTQzNSwgMTE1NDQxLCAxMTU0NDcsIDExNTQ1MywgMTE1NDU4LCAKLSAgICAxMTU0NjQsIDExNTQ3MCwgMTE1NDc2LCAxMTU0ODEsIDExNTQ4NywgMTE1NDkzLCAxMTU0OTksIDExNTUwNCwgMTE1NTEwLCAKLSAgICAxMTU1MTYsIDExNTUyMSwgMTE1NTI2LCAxMTU1MzIsIDExNTUzNywgMTE1NTQzLCAxMTU1NDksIDExNTU1NCwgMTE1NTYwLCAKLSAgICAxMTU1NjYsIDExNTU3MSwgMTE1NTc3LCAxMTU1ODMsIDExNTU4OSwgMTE1NTk1LCAxMTU2MDEsIDAsIDExNTYwNSwgCi0gICAgMTE1NjEwLCAwLCAwLCAxMTU2MTUsIDAsIDAsIDExNTYyMCwgMTE1NjI1LCAwLCAwLCAxMTU2MzAsIDExNTYzNSwgMTE1NjM5LCAKLSAgICAxMTU2NDQsIDAsIDExNTY0OSwgMTE1NjU0LCAxMTU2NTksIDExNTY2MywgMTE1NjY4LCAxMTU2NzMsIDExNTY3OCwgCi0gICAgMTE1NjgzLCAxMTU2ODgsIDExNTY5MiwgMTE1Njk3LCAxMTU3MDIsIDAsIDExNTcwNywgMCwgMTE1NzEyLCAxMTU3MTcsIAotICAgIDExNTcyMSwgMTE1NzI2LCAxMTU3MzEsIDExNTczNSwgMTE1NzM5LCAwLCAxMTU3NDQsIDExNTc0OSwgMTE1NzU0LCAKLSAgICAxMTU3NTgsIDExNTc2MywgMTE1NzY4LCAxMTU3NzIsIDExNTc3NywgMTE1NzgyLCAxMTU3ODcsIDExNTc5MiwgMTE1Nzk3LCAKLSAgICAxMTU4MDIsIDExNTgwOCwgMTE1ODE0LCAxMTU4MjAsIDExNTgyNSwgMTE1ODMxLCAxMTU4MzcsIDExNTg0MywgMTE1ODQ4LCAKLSAgICAxMTU4NTQsIDExNTg2MCwgMTE1ODY1LCAxMTU4NzAsIDExNTg3NiwgMTE1ODgxLCAxMTU4ODcsIDExNTg5MywgMTE1ODk4LCAKLSAgICAxMTU5MDQsIDExNTkxMCwgMTE1OTE1LCAxMTU5MjEsIDExNTkyNywgMTE1OTMzLCAxMTU5MzksIDExNTk0NSwgMTE1OTUwLCAKLSAgICAxMTU5NTYsIDExNTk2MiwgMTE1OTY4LCAxMTU5NzMsIDExNTk3OSwgMTE1OTg1LCAxMTU5OTEsIDExNTk5NiwgMTE2MDAyLCAKLSAgICAxMTYwMDgsIDExNjAxMywgMTE2MDE4LCAxMTYwMjQsIDExNjAyOSwgMTE2MDM1LCAxMTYwNDEsIDExNjA0NiwgMTE2MDUyLCAKLSAgICAxMTYwNTgsIDExNjA2MywgMTE2MDY5LCAxMTYwNzUsIDExNjA4MSwgMTE2MDg3LCAxMTYwOTMsIDExNjA5NywgMCwgCi0gICAgMTE2MTAyLCAxMTYxMDcsIDExNjExMSwgMTE2MTE2LCAwLCAwLCAxMTYxMjEsIDExNjEyNiwgMTE2MTMxLCAxMTYxMzUsIAotICAgIDExNjEzOSwgMTE2MTQ0LCAxMTYxNDgsIDExNjE1MywgMCwgMTE2MTU4LCAxMTYxNjMsIDExNjE2OCwgMTE2MTcyLCAKLSAgICAxMTYxNzcsIDExNjE4MiwgMTE2MTg3LCAwLCAxMTYxOTIsIDExNjE5NiwgMTE2MjAxLCAxMTYyMDYsIDExNjIxMSwgCi0gICAgMTE2MjE1LCAxMTYyMjAsIDExNjIyNSwgMTE2MjMwLCAxMTYyMzQsIDExNjIzOSwgMTE2MjQ0LCAxMTYyNDgsIDExNjI1MiwgCi0gICAgMTE2MjU3LCAxMTYyNjEsIDExNjI2NiwgMTE2MjcxLCAxMTYyNzUsIDExNjI4MCwgMTE2Mjg1LCAxMTYyODksIDExNjI5NCwgCi0gICAgMTE2Mjk5LCAxMTYzMDQsIDExNjMwOSwgMTE2MzE0LCAxMTYzMTgsIDAsIDExNjMyMywgMTE2MzI4LCAxMTYzMzIsIAotICAgIDExNjMzNywgMCwgMTE2MzQyLCAxMTYzNDYsIDExNjM1MSwgMTE2MzU2LCAxMTYzNjAsIDAsIDExNjM2NCwgMCwgMCwgMCwgCi0gICAgMTE2MzY4LCAxMTYzNzMsIDExNjM3OCwgMTE2MzgyLCAxMTYzODcsIDExNjM5MiwgMTE2Mzk3LCAwLCAxMTY0MDIsIAotICAgIDExNjQwNiwgMTE2NDExLCAxMTY0MTYsIDExNjQyMSwgMTE2NDI1LCAxMTY0MzAsIDExNjQzNSwgMTE2NDQwLCAxMTY0NDQsIAotICAgIDExNjQ0OSwgMTE2NDU0LCAxMTY0NTgsIDExNjQ2MiwgMTE2NDY3LCAxMTY0NzEsIDExNjQ3NiwgMTE2NDgxLCAxMTY0ODUsIAotICAgIDExNjQ5MCwgMTE2NDk1LCAxMTY0OTksIDExNjUwNCwgMTE2NTA5LCAxMTY1MTQsIDExNjUxOSwgMTE2NTI0LCAxMTY1MjksIAotICAgIDExNjUzNSwgMTE2NTQxLCAxMTY1NDcsIDExNjU1MiwgMTE2NTU4LCAxMTY1NjQsIDExNjU3MCwgMTE2NTc1LCAxMTY1ODEsIAotICAgIDExNjU4NywgMTE2NTkyLCAxMTY1OTcsIDExNjYwMywgMTE2NjA4LCAxMTY2MTQsIDExNjYyMCwgMTE2NjI1LCAxMTY2MzEsIAotICAgIDExNjYzNywgMTE2NjQyLCAxMTY2NDgsIDExNjY1NCwgMTE2NjYwLCAxMTY2NjYsIDExNjY3MiwgMTE2Njc3LCAxMTY2ODMsIAotICAgIDExNjY4OSwgMTE2Njk1LCAxMTY3MDAsIDExNjcwNiwgMTE2NzEyLCAxMTY3MTgsIDExNjcyMywgMTE2NzI5LCAxMTY3MzUsIAotICAgIDExNjc0MCwgMTE2NzQ1LCAxMTY3NTEsIDExNjc1NiwgMTE2NzYyLCAxMTY3NjgsIDExNjc3MywgMTE2Nzc5LCAxMTY3ODUsIAotICAgIDExNjc5MCwgMTE2Nzk2LCAxMTY4MDIsIDExNjgwOCwgMTE2ODE0LCAxMTY4MjAsIDExNjgyNCwgMTE2ODI5LCAxMTY4MzQsIAotICAgIDExNjgzOSwgMTE2ODQzLCAxMTY4NDgsIDExNjg1MywgMTE2ODU4LCAxMTY4NjIsIDExNjg2NywgMTE2ODcyLCAxMTY4NzYsIAotICAgIDExNjg4MCwgMTE2ODg1LCAxMTY4ODksIDExNjg5NCwgMTE2ODk5LCAxMTY5MDMsIDExNjkwOCwgMTE2OTEzLCAxMTY5MTcsIAotICAgIDExNjkyMiwgMTE2OTI3LCAxMTY5MzIsIDExNjkzNywgMTE2OTQyLCAxMTY5NDYsIDExNjk1MSwgMTE2OTU2LCAxMTY5NjEsIAotICAgIDExNjk2NSwgMTE2OTcwLCAxMTY5NzUsIDExNjk4MCwgMTE2OTg0LCAxMTY5ODksIDExNjk5NCwgMTE2OTk4LCAxMTcwMDIsIAotICAgIDExNzAwNywgMTE3MDExLCAxMTcwMTYsIDExNzAyMSwgMTE3MDI1LCAxMTcwMzAsIDExNzAzNSwgMTE3MDM5LCAxMTcwNDQsIAotICAgIDExNzA0OSwgMTE3MDU0LCAxMTcwNTksIDExNzA2NCwgMTE3MDY5LCAxMTcwNzUsIDExNzA4MSwgMTE3MDg3LCAxMTcwOTIsIAotICAgIDExNzA5OCwgMTE3MTA0LCAxMTcxMTAsIDExNzExNSwgMTE3MTIxLCAxMTcxMjcsIDExNzEzMiwgMTE3MTM3LCAxMTcxNDMsIAotICAgIDExNzE0OCwgMTE3MTU0LCAxMTcxNjAsIDExNzE2NSwgMTE3MTcxLCAxMTcxNzcsIDExNzE4MiwgMTE3MTg4LCAxMTcxOTQsIAotICAgIDExNzIwMCwgMTE3MjA2LCAxMTcyMTIsIDExNzIxNywgMTE3MjIzLCAxMTcyMjksIDExNzIzNSwgMTE3MjQwLCAxMTcyNDYsIAotICAgIDExNzI1MiwgMTE3MjU4LCAxMTcyNjMsIDExNzI2OSwgMTE3Mjc1LCAxMTcyODAsIDExNzI4NSwgMTE3MjkxLCAxMTcyOTYsIAotICAgIDExNzMwMiwgMTE3MzA4LCAxMTczMTMsIDExNzMxOSwgMTE3MzI1LCAxMTczMzAsIDExNzMzNiwgMTE3MzQyLCAxMTczNDgsIAotICAgIDExNzM1NCwgMTE3MzYwLCAxMTczNjUsIDExNzM3MSwgMTE3Mzc3LCAxMTczODMsIDExNzM4OCwgMTE3Mzk0LCAxMTc0MDAsIAotICAgIDExNzQwNiwgMTE3NDExLCAxMTc0MTcsIDExNzQyMywgMTE3NDI4LCAxMTc0MzMsIDExNzQzOSwgMTE3NDQ0LCAxMTc0NTAsIAotICAgIDExNzQ1NiwgMTE3NDYxLCAxMTc0NjcsIDExNzQ3MywgMTE3NDc4LCAxMTc0ODQsIDExNzQ5MCwgMTE3NDk2LCAxMTc1MDIsIAotICAgIDExNzUwOCwgMTE3NTEzLCAxMTc1MTksIDExNzUyNSwgMTE3NTMxLCAxMTc1MzYsIDExNzU0MiwgMTE3NTQ4LCAxMTc1NTQsIAotICAgIDExNzU1OSwgMTE3NTY1LCAxMTc1NzEsIDExNzU3NiwgMTE3NTgxLCAxMTc1ODcsIDExNzU5MiwgMTE3NTk4LCAxMTc2MDQsIAotICAgIDExNzYwOSwgMTE3NjE1LCAxMTc2MjEsIDExNzYyNiwgMTE3NjMyLCAxMTc2MzgsIDExNzY0NCwgMTE3NjUwLCAxMTc2NTYsIAotICAgIDExNzY2MiwgMTE3NjY5LCAxMTc2NzYsIDExNzY4MywgMTE3Njg5LCAxMTc2OTYsIDExNzcwMywgMTE3NzEwLCAxMTc3MTYsIAotICAgIDExNzcyMywgMTE3NzMwLCAxMTc3MzYsIDExNzc0MiwgMTE3NzQ5LCAxMTc3NTUsIDExNzc2MiwgMTE3NzY5LCAxMTc3NzUsIAotICAgIDExNzc4MiwgMTE3Nzg5LCAxMTc3OTUsIDExNzgwMiwgMTE3ODA5LCAxMTc4MTYsIDExNzgyMywgMTE3ODMwLCAxMTc4MzYsIAotICAgIDExNzg0MywgMTE3ODUwLCAxMTc4NTcsIDExNzg2MywgMTE3ODcwLCAxMTc4NzcsIDExNzg4NCwgMTE3ODkwLCAxMTc4OTcsIAotICAgIDExNzkwNCwgMTE3OTEwLCAxMTc5MTYsIDExNzkyMywgMTE3OTI5LCAxMTc5MzYsIDExNzk0MywgMTE3OTQ5LCAxMTc5NTYsIAotICAgIDExNzk2MywgMTE3OTY5LCAxMTc5NzYsIDExNzk4MywgMTE3OTkwLCAxMTc5OTcsIDExODAwNCwgMTE4MDA5LCAxMTgwMTUsIAotICAgIDExODAyMSwgMTE4MDI3LCAxMTgwMzIsIDExODAzOCwgMTE4MDQ0LCAxMTgwNTAsIDExODA1NSwgMTE4MDYxLCAxMTgwNjcsIAotICAgIDExODA3MiwgMTE4MDc3LCAxMTgwODMsIDExODA4OCwgMTE4MDk0LCAxMTgxMDAsIDExODEwNSwgMTE4MTExLCAxMTgxMTcsIAotICAgIDExODEyMiwgMTE4MTI4LCAxMTgxMzQsIDExODE0MCwgMTE4MTQ2LCAxMTgxNTIsIDExODE1NywgMTE4MTYzLCAxMTgxNjksIAotICAgIDExODE3NSwgMTE4MTgwLCAxMTgxODYsIDExODE5MiwgMTE4MTk4LCAxMTgyMDMsIDExODIwOSwgMTE4MjE1LCAxMTgyMjAsIAotICAgIDExODIyNSwgMTE4MjMxLCAxMTgyMzYsIDExODI0MiwgMTE4MjQ4LCAxMTgyNTMsIDExODI1OSwgMTE4MjY1LCAxMTgyNzAsIAotICAgIDExODI3NiwgMTE4MjgyLCAxMTgyODgsIDExODI5NCwgMTE4MzAwLCAxMTgzMDYsIDAsIDAsIDExODMxMywgMTE4MzE4LCAKLSAgICAxMTgzMjMsIDExODMyOCwgMTE4MzMzLCAxMTgzMzgsIDExODM0MywgMTE4MzQ4LCAxMTgzNTMsIDExODM1OCwgMTE4MzYzLCAKLSAgICAxMTgzNjgsIDExODM3MywgMTE4Mzc4LCAxMTgzODMsIDExODM4OCwgMTE4MzkzLCAxMTgzOTgsIDExODQwNCwgMTE4NDA5LCAKLSAgICAxMTg0MTQsIDExODQxOSwgMTE4NDI0LCAxMTg0MjksIDExODQzNCwgMTE4NDM5LCAxMTg0NDMsIDExODQ0OCwgMTE4NDUzLCAKLSAgICAxMTg0NTgsIDExODQ2MywgMTE4NDY4LCAxMTg0NzMsIDExODQ3OCwgMTE4NDgzLCAxMTg0ODgsIDExODQ5MywgMTE4NDk4LCAKLSAgICAxMTg1MDMsIDExODUwOCwgMTE4NTEzLCAxMTg1MTgsIDExODUyMywgMTE4NTI4LCAxMTg1MzQsIDExODUzOSwgMTE4NTQ0LCAKLSAgICAxMTg1NDksIDExODU1NCwgMTE4NTU5LCAxMTg1NjQsIDExODU2OSwgMTE4NTc1LCAxMTg1ODAsIDExODU4NSwgMTE4NTkwLCAKLSAgICAxMTg1OTUsIDExODYwMCwgMTE4NjA1LCAxMTg2MTAsIDExODYxNSwgMTE4NjIwLCAxMTg2MjUsIDExODYzMCwgMTE4NjM1LCAKLSAgICAxMTg2NDAsIDExODY0NSwgMTE4NjUwLCAxMTg2NTUsIDExODY2MCwgMTE4NjY1LCAxMTg2NzAsIDExODY3NSwgMTE4NjgwLCAKLSAgICAxMTg2ODUsIDExODY5MCwgMTE4Njk2LCAxMTg3MDEsIDExODcwNiwgMTE4NzExLCAxMTg3MTYsIDExODcyMSwgMTE4NzI2LCAKLSAgICAxMTg3MzEsIDExODczNSwgMTE4NzQwLCAxMTg3NDUsIDExODc1MCwgMTE4NzU1LCAxMTg3NjAsIDExODc2NSwgMTE4NzcwLCAKLSAgICAxMTg3NzUsIDExODc4MCwgMTE4Nzg1LCAxMTg3OTAsIDExODc5NSwgMTE4ODAwLCAxMTg4MDUsIDExODgxMCwgMTE4ODE1LCAKLSAgICAxMTg4MjAsIDExODgyNiwgMTE4ODMxLCAxMTg4MzYsIDExODg0MSwgMTE4ODQ2LCAxMTg4NTEsIDExODg1NiwgMTE4ODYxLCAKLSAgICAxMTg4NjcsIDExODg3MiwgMTE4ODc3LCAxMTg4ODIsIDExODg4NywgMTE4ODkyLCAxMTg4OTcsIDExODkwMywgMTE4OTA5LCAKLSAgICAxMTg5MTUsIDExODkyMSwgMTE4OTI3LCAxMTg5MzMsIDExODkzOSwgMTE4OTQ1LCAxMTg5NTEsIDExODk1NywgMTE4OTYzLCAKLSAgICAxMTg5NjksIDExODk3NSwgMTE4OTgxLCAxMTg5ODcsIDExODk5MywgMTE4OTk5LCAxMTkwMDYsIDExOTAxMiwgMTE5MDE4LCAKLSAgICAxMTkwMjQsIDExOTAzMCwgMTE5MDM2LCAxMTkwNDIsIDExOTA0OCwgMTE5MDUzLCAxMTkwNTksIDExOTA2NSwgMTE5MDcxLCAKLSAgICAxMTkwNzcsIDExOTA4MywgMTE5MDg5LCAxMTkwOTUsIDExOTEwMSwgMTE5MTA3LCAxMTkxMTMsIDExOTExOSwgMTE5MTI1LCAKLSAgICAxMTkxMzEsIDExOTEzNywgMTE5MTQzLCAxMTkxNDksIDExOTE1NSwgMTE5MTYyLCAxMTkxNjgsIDExOTE3NCwgMTE5MTgwLCAKLSAgICAxMTkxODYsIDExOTE5MiwgMTE5MTk4LCAxMTkyMDQsIDExOTIxMSwgMTE5MjE3LCAxMTkyMjMsIDExOTIyOSwgMTE5MjM1LCAKLSAgICAxMTkyNDEsIDExOTI0NywgMTE5MjUzLCAxMTkyNTksIDExOTI2NSwgMTE5MjcxLCAxMTkyNzcsIDExOTI4MywgMTE5Mjg5LCAKLSAgICAxMTkyOTUsIDExOTMwMSwgMTE5MzA3LCAxMTkzMTMsIDExOTMxOSwgMTE5MzI1LCAxMTkzMzEsIDExOTMzNywgMTE5MzQzLCAKLSAgICAxMTkzNDksIDExOTM1NiwgMTE5MzYyLCAxMTkzNjgsIDExOTM3NCwgMTE5MzgwLCAxMTkzODYsIDExOTM5MiwgMTE5Mzk4LCAKLSAgICAxMTk0MDMsIDExOTQwOSwgMTE5NDE1LCAxMTk0MjEsIDExOTQyNywgMTE5NDMzLCAxMTk0MzksIDExOTQ0NSwgMTE5NDUxLCAKLSAgICAxMTk0NTcsIDExOTQ2MywgMTE5NDY5LCAxMTk0NzUsIDExOTQ4MSwgMTE5NDg3LCAxMTk0OTMsIDExOTQ5OSwgMTE5NTA1LCAKLSAgICAxMTk1MTIsIDExOTUxOCwgMTE5NTI0LCAxMTk1MzAsIDExOTUzNiwgMTE5NTQyLCAxMTk1NDgsIDExOTU1NCwgMTE5NTYxLCAKLSAgICAxMTk1NjcsIDExOTU3MywgMTE5NTc5LCAxMTk1ODUsIDExOTU5MSwgMTE5NTk3LCAxMTk2MDQsIDExOTYxMSwgMTE5NjE4LCAKLSAgICAxMTk2MjUsIDExOTYzMiwgMTE5NjM5LCAxMTk2NDYsIDExOTY1MywgMTE5NjYwLCAxMTk2NjcsIDExOTY3NCwgMTE5NjgxLCAKLSAgICAxMTk2ODgsIDExOTY5NSwgMTE5NzAyLCAxMTk3MDksIDExOTcxNiwgMTE5NzI0LCAxMTk3MzEsIDExOTczOCwgMTE5NzQ1LCAKLSAgICAxMTk3NTIsIDExOTc1OSwgMTE5NzY2LCAxMTk3NzMsIDExOTc3OSwgMTE5Nzg2LCAxMTk3OTMsIDExOTgwMCwgMTE5ODA3LCAKLSAgICAxMTk4MTQsIDExOTgyMSwgMTE5ODI4LCAxMTk4MzUsIDExOTg0MiwgMTE5ODQ5LCAxMTk4NTYsIDExOTg2MywgMTE5ODcwLCAKLSAgICAxMTk4NzcsIDExOTg4NCwgMTE5ODkxLCAxMTk4OTgsIDExOTkwNiwgMTE5OTEzLCAxMTk5MjAsIDExOTkyNywgMTE5OTM0LCAKLSAgICAxMTk5NDEsIDExOTk0OCwgMTE5OTU1LCAxMTk5NjMsIDExOTk3MCwgMTE5OTc3LCAxMTk5ODQsIDExOTk5MSwgMTE5OTk4LCAKLSAgICAxMjAwMDUsIDEyMDAxMCwgMCwgMCwgMTIwMDE1LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI4LCAxMjAwMzIsIDEyMDAzNiwgCi0gICAgMTIwMDQwLCAxMjAwNDQsIDEyMDA0OCwgMTIwMDUyLCAxMjAwNTYsIDEyMDA2MSwgMTIwMDY1LCAxMjAwNjksIDEyMDA3MywgCi0gICAgMTIwMDc3LCAxMjAwODEsIDEyMDA4NSwgMTIwMDg5LCAxMjAwOTMsIDEyMDA5NywgMTIwMTAyLCAxMjAxMDYsIDEyMDExMCwgCi0gICAgMTIwMTE0LCAxMjAxMTgsIDEyMDEyMiwgMTIwMTI2LCAxMjAxMzAsIDEyMDEzNCwgMTIwMTM4LCAxMjAxNDQsIDEyMDE0OSwgCi0gICAgMTIwMTU0LCAxMjAxNTksIDEyMDE2NCwgMTIwMTY5LCAxMjAxNzQsIDEyMDE3OSwgMTIwMTg0LCAxMjAxODksIDEyMDE5NSwgCi0gICAgMTIwMjAwLCAxMjAyMDUsIDEyMDIxMCwgMTIwMjE1LCAxMjAyMjAsIDEyMDIyNSwgMTIwMjMwLCAxMjAyMzUsIDEyMDI0MCwgCi0gICAgMTIwMjQ0LCAxMjAyNDgsIDEyMDI1MiwgMCwgMTIwMjU2LCAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzIsIAotICAgIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIDEyMDI4OCwgMTIwMjkyLCAxMjAyOTYsIDEyMDMwMCwgMTIwMzA0LCAxMjAzMDgsIAotICAgIDEyMDMxMiwgMTIwMzE2LCAxMjAzMjAsIDEyMDMyNCwgMTIwMzI4LCAxMjAzMzIsIDEyMDMzNiwgMTIwMzQwLCAxMjAzNDQsIAotICAgIDEyMDM0OCwgMTIwMzU0LCAxMjAzNjAsIDEyMDM2NiwgMCwgMTIwMzcyLCAxMjAzNzcsIDAsIDEyMDM4MiwgMCwgMCwgCi0gICAgMTIwMzg3LCAwLCAxMjAzOTIsIDEyMDM5NywgMTIwNDAyLCAxMjA0MDcsIDEyMDQxMiwgMTIwNDE3LCAxMjA0MjIsIAotICAgIDEyMDQyNywgMTIwNDMyLCAxMjA0MzcsIDAsIDEyMDQ0MiwgMTIwNDQ3LCAxMjA0NTIsIDEyMDQ1NywgMCwgMTIwNDYyLCAwLCAKLSAgICAxMjA0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDQ3MiwgMCwgMCwgMCwgMCwgMTIwNDc4LCAwLCAxMjA0ODQsIDAsIAotICAgIDEyMDQ5MCwgMCwgMTIwNDk2LCAxMjA1MDIsIDEyMDUwOCwgMCwgMTIwNTE0LCAxMjA1MjAsIDAsIDEyMDUyNiwgMCwgMCwgCi0gICAgMTIwNTMyLCAwLCAxMjA1MzgsIDAsIDEyMDU0NCwgMCwgMTIwNTUwLCAwLCAxMjA1NTgsIDAsIDEyMDU2NiwgMTIwNTcyLCAwLCAKLSAgICAxMjA1NzgsIDAsIDAsIDEyMDU4NCwgMTIwNTkwLCAxMjA1OTYsIDEyMDYwMiwgMCwgMTIwNjA4LCAxMjA2MTQsIDEyMDYyMCwgCi0gICAgMTIwNjI2LCAxMjA2MzIsIDEyMDYzOCwgMTIwNjQ0LCAwLCAxMjA2NTAsIDEyMDY1NiwgMTIwNjYyLCAxMjA2NjgsIDAsIAotICAgIDEyMDY3NCwgMTIwNjgwLCAxMjA2ODYsIDEyMDY5MiwgMCwgMTIwNzAwLCAwLCAxMjA3MDgsIDEyMDcxNCwgMTIwNzIwLCAKLSAgICAxMjA3MjYsIDEyMDczMiwgMTIwNzM4LCAxMjA3NDQsIDEyMDc1MCwgMTIwNzU2LCAxMjA3NjIsIDAsIDEyMDc2OCwgCi0gICAgMTIwNzc0LCAxMjA3ODAsIDEyMDc4NiwgMTIwNzkyLCAxMjA3OTgsIDEyMDgwNCwgMTIwODEwLCAxMjA4MTYsIDEyMDgyMiwgCi0gICAgMTIwODI4LCAxMjA4MzQsIDEyMDg0MCwgMTIwODQ2LCAxMjA4NTIsIDEyMDg1OCwgMTIwODY0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjA4NzAsIDEyMDg3NSwgMTIwODgwLCAwLCAxMjA4ODUsIDEyMDg5MCwgMTIwODk1LCAxMjA5MDAsIDEyMDkwNSwgMCwgCi0gICAgMTIwOTEwLCAxMjA5MTUsIDEyMDkyMCwgMTIwOTI1LCAxMjA5MzAsIDEyMDkzNSwgMTIwOTQwLCAxMjA5NDUsIDEyMDk1MCwgCi0gICAgMTIwOTU1LCAxMjA5NjAsIDEyMDk2NSwgMTIwOTcwLCAxMjA5NzUsIDEyMDk4MCwgMTIwOTg1LCAxMjA5OTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyMDk5NSwgMTIxMDA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjEwMTMsIAotICAgIDEyMTAyMCwgMTIxMDI3LCAxMjEwMzQsIDEyMTA0MSwgMTIxMDQ4LCAxMjEwNTUsIDEyMTA2MSwgMTIxMDY4LCAxMjEwNzUsIAotICAgIDEyMTA4MiwgMTIxMDkwLCAxMjEwOTgsIDEyMTEwNiwgMTIxMTE0LCAxMjExMjIsIDEyMTEzMCwgMTIxMTM3LCAxMjExNDQsIAotICAgIDEyMTE1MSwgMTIxMTU5LCAxMjExNjcsIDEyMTE3NSwgMTIxMTgzLCAxMjExOTEsIDEyMTE5OSwgMTIxMjA2LCAxMjEyMTMsIAotICAgIDEyMTIyMCwgMTIxMjI4LCAxMjEyMzYsIDEyMTI0NCwgMTIxMjUyLCAxMjEyNjAsIDEyMTI2OCwgMTIxMjczLCAxMjEyNzgsIAotICAgIDEyMTI4MywgMTIxMjg4LCAxMjEyOTMsIDEyMTI5OCwgMTIxMzAzLCAxMjEzMDgsIDEyMTMxMywgMCwgMCwgMCwgMCwgCi0gICAgMTIxMzE4LCAxMjEzMjMsIDEyMTMyNywgMTIxMzMxLCAxMjEzMzUsIDEyMTMzOSwgMTIxMzQzLCAxMjEzNDcsIDEyMTM1MSwgCi0gICAgMTIxMzU1LCAxMjEzNTksIDEyMTM2MywgMTIxMzY3LCAxMjEzNzEsIDEyMTM3NSwgMTIxMzc5LCAxMjEzODMsIDEyMTM4NywgCi0gICAgMTIxMzkxLCAxMjEzOTUsIDEyMTM5OSwgMTIxNDAzLCAxMjE0MDcsIDEyMTQxMSwgMTIxNDE1LCAxMjE0MTksIDEyMTQyMywgCi0gICAgMTIxNDI3LCAxMjE0MzEsIDEyMTQzNSwgMTIxNDM5LCAxMjE0NDMsIDEyMTQ0NywgMTIxNDUxLCAxMjE0NTUsIDEyMTQ1OSwgCi0gICAgMTIxNDYzLCAxMjE0NjcsIDEyMTQ3MSwgMTIxNDc1LCAxMjE0NzksIDEyMTQ4MywgMTIxNDg3LCAxMjE0OTEsIDEyMTQ5NSwgCi0gICAgMTIxNDk5LCAxMjE1MDMsIDEyMTUwNywgMTIxNTExLCAxMjE1MTUsIDEyMTUxOSwgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgCi0gICAgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgCi0gICAgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgCi0gICAgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgCi0gICAgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgCi0gICAgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIDEyMTcwMCwgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgCi0gICAgMTIxNzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE3MjAsIDEyMTcyNiwgMTIxNzM1LCAKLSAgICAxMjE3NDMsIDEyMTc1MSwgMTIxNzYwLCAxMjE3NjksIDEyMTc3OCwgMTIxNzg3LCAxMjE3OTYsIDEyMTgwNSwgMTIxODE0LCAKLSAgICAxMjE4MjMsIDEyMTgzMiwgMTIxODQxLCAwLCAwLCAxMjE4NTAsIDEyMTg1OSwgMTIxODY3LCAxMjE4NzUsIDEyMTg4NCwgCi0gICAgMTIxODkzLCAxMjE5MDIsIDEyMTkxMSwgMTIxOTIwLCAxMjE5MjksIDEyMTkzOCwgMTIxOTQ3LCAxMjE5NTYsIDEyMTk2NSwgCi0gICAgMCwgMCwgMTIxOTc0LCAxMjE5ODMsIDEyMTk5MSwgMTIxOTk5LCAxMjIwMDgsIDEyMjAxNywgMTIyMDI2LCAxMjIwMzUsIAotICAgIDEyMjA0NCwgMTIyMDUzLCAxMjIwNjIsIDEyMjA3MSwgMTIyMDgwLCAxMjIwODksIDEyMjA5OCwgMCwgMTIyMTA1LCAKLSAgICAxMjIxMTQsIDEyMjEyMiwgMTIyMTMwLCAxMjIxMzksIDEyMjE0OCwgMTIyMTU3LCAxMjIxNjYsIDEyMjE3NSwgMTIyMTg0LCAKLSAgICAxMjIxOTMsIDEyMjIwMiwgMTIyMjExLCAxMjIyMjAsIDEyMjIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyMjM2LCAKLSAgICAxMjIyNDMsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY1LCAxMjIyNzAsIDEyMjI3NSwgMTIyMjgwLCAKLSAgICAxMjIyODUsIDAsIDAsIDAsIDAsIDAsIDEyMjI5MCwgMTIyMjk1LCAxMjIzMDEsIDEyMjMwNywgMTIyMzEzLCAxMjIzMTgsIAotICAgIDEyMjMyNCwgMTIyMzMwLCAxMjIzMzYsIDEyMjM0MSwgMTIyMzQ3LCAxMjIzNTMsIDEyMjM1OCwgMTIyMzYzLCAxMjIzNjksIAotICAgIDEyMjM3NCwgMTIyMzgwLCAxMjIzODYsIDEyMjM5MSwgMTIyMzk3LCAxMjI0MDMsIDEyMjQwOCwgMTIyNDE0LCAxMjI0MjAsIAotICAgIDEyMjQyNiwgMTIyNDMyLCAxMjI0MzgsIDEyMjQ0OSwgMTIyNDU2LCAxMjI0NjIsIDEyMjQ2NSwgMCwgMTIyNDY4LCAKLSAgICAxMjI0NzMsIDEyMjQ3OSwgMTIyNDg1LCAxMjI0OTEsIDEyMjQ5NiwgMTIyNTAyLCAxMjI1MDgsIDEyMjUxNCwgMTIyNTE5LCAKLSAgICAxMjI1MjUsIDEyMjUzMSwgMTIyNTM2LCAxMjI1NDEsIDEyMjU0NywgMTIyNTUyLCAxMjI1NTgsIDEyMjU2NCwgMTIyNTY5LCAKLSAgICAxMjI1NzUsIDEyMjU4MSwgMTIyNTg2LCAxMjI1OTIsIDEyMjU5OCwgMTIyNjA0LCAxMjI2MTAsIDEyMjYxNiwgMTIyNjE5LCAKLSAgICAxMjI2MjIsIDEyMjYyNSwgMTIyNjI4LCAxMjI2MzEsIDEyMjYzNCwgMTIyNjQwLCAxMjI2NDcsIDEyMjY1NCwgMTIyNjYxLCAKLSAgICAxMjI2NjcsIDEyMjY3NCwgMTIyNjgxLCAxMjI2ODgsIDEyMjY5NCwgMTIyNzAxLCAxMjI3MDgsIDEyMjcxNCwgMTIyNzIwLCAKLSAgICAxMjI3MjcsIDEyMjczMywgMTIyNzQwLCAxMjI3NDcsIDEyMjc1MywgMTIyNzYwLCAxMjI3NjcsIDEyMjc3MywgMTIyNzgwLCAKLSAgICAxMjI3ODcsIDEyMjc5NCwgMTIyODAxLCAxMjI4MDgsIDEyMjgxMywgMCwgMCwgMCwgMCwgMTIyODE4LCAxMjI4MjQsIAotICAgIDEyMjgzMSwgMTIyODM4LCAxMjI4NDUsIDEyMjg1MSwgMTIyODU4LCAxMjI4NjUsIDEyMjg3MiwgMTIyODc4LCAxMjI4ODUsIAotICAgIDEyMjg5MiwgMTIyODk4LCAxMjI5MDQsIDEyMjkxMSwgMTIyOTE3LCAxMjI5MjQsIDEyMjkzMSwgMTIyOTM3LCAxMjI5NDQsIAotICAgIDEyMjk1MSwgMTIyOTU3LCAxMjI5NjQsIDEyMjk3MSwgMTIyOTc4LCAxMjI5ODUsIDEyMjk5MiwgMTIzMDAxLCAxMjMwMDUsIAotICAgIDEyMzAwOCwgMTIzMDExLCAxMjMwMTUsIDEyMzAxOSwgMTIzMDIyLCAxMjMwMjUsIDEyMzAyOCwgMTIzMDMxLCAxMjMwMzQsIAotICAgIDEyMzAzNywgMTIzMDQwLCAxMjMwNDMsIDEyMzA0NiwgMTIzMDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjMwNTUsIDEyMzA2MiwgMTIzMDcwLCAKLSAgICAxMjMwNzgsIDEyMzA4NiwgMTIzMDkzLCAxMjMxMDEsIDEyMzEwOSwgMTIzMTE3LCAxMjMxMjQsIDEyMzEzMiwgMTIzMTQwLCAKLSAgICAxMjMxNDcsIDEyMzE1NCwgMTIzMTYyLCAxMjMxNjksIDEyMzE3NywgMTIzMTg1LCAxMjMxOTIsIDEyMzIwMCwgMTIzMjA4LCAKLSAgICAxMjMyMTUsIDEyMzIyMywgMTIzMjMxLCAxMjMyMzksIDEyMzI0NywgMTIzMjU1LCAxMjMyNTksIDEyMzI2MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMjY2LCAxMjMyNzIsIDEyMzI3OCwgMTIzMjg0LCAxMjMyODgsIAotICAgIDEyMzI5NCwgMTIzMzAwLCAxMjMzMDYsIDEyMzMxMiwgMTIzMzE4LCAxMjMzMjQsIDEyMzMzMCwgMTIzMzM2LCAxMjMzNDIsIAotICAgIDEyMzM0OCwgMTIzMzU0LCAxMjMzNjAsIDEyMzM2NiwgMTIzMzcyLCAxMjMzNzgsIDEyMzM4NCwgMTIzMzkwLCAxMjMzOTYsIAotICAgIDEyMzQwMiwgMTIzNDA4LCAxMjM0MTQsIDEyMzQyMCwgMTIzNDI2LCAxMjM0MzIsIDEyMzQzOCwgMTIzNDQ0LCAxMjM0NTAsIAotICAgIDEyMzQ1NiwgMTIzNDYyLCAxMjM0NjgsIDEyMzQ3NCwgMTIzNDgwLCAxMjM0ODYsIDEyMzQ5MiwgMTIzNDk4LCAxMjM1MDQsIAotICAgIDEyMzUxMCwgMTIzNTE2LCAwLCAwLCAwLCAwLCAwLCAxMjM1MjIsIDEyMzUzMywgMTIzNTQ0LCAxMjM1NTUsIDEyMzU2NiwgCi0gICAgMTIzNTc3LCAxMjM1ODgsIDEyMzU5OSwgMTIzNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjM2MjEsIDEyMzYyNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNjI5LCAKLSAgICAxMjM2MzEsIDEyMzYzMywgMTIzNjM3LCAxMjM2NDIsIDEyMzY0NywgMTIzNjQ5LCAxMjM2NTUsIDEyMzY2MCwgMTIzNjYyLCAKLSAgICAxMjM2NjgsIDEyMzY3MiwgMTIzNjc0LCAxMjM2NzgsIDEyMzY4NCwgMTIzNjkwLCAxMjM2OTYsIDEyMzcwMSwgMTIzNzA1LCAKLSAgICAxMjM3MTIsIDEyMzcxOSwgMTIzNzI2LCAxMjM3MzEsIDEyMzczOCwgMTIzNzQ1LCAxMjM3NTIsIDEyMzc1NiwgMTIzNzYyLCAKLSAgICAxMjM3NzEsIDEyMzc4MCwgMTIzNzg3LCAxMjM3OTIsIDEyMzc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTIzODAwLCAxMjM4MDIsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMCwgMTIzODE4LCAKLSAgICAxMjM4MjAsIDEyMzgyNCwgMTIzODI2LCAxMjM4MjgsIDEyMzgzMCwgMTIzODMyLCAxMjM4MzcsIDEyMzg0MiwgMTIzODQ0LCAKLSAgICAxMjM4NTAsIDEyMzg1NCwgMTIzODU4LCAxMjM4NjYsIDEyMzg2OCwgMTIzODcwLCAxMjM4NzIsIDEyMzg3NCwgMTIzODc2LCAKLSAgICAxMjM4NzgsIDEyMzg4MCwgMTIzODgyLCAxMjM4ODQsIDEyMzg4NiwgMTIzODkwLCAxMjM4OTQsIDEyMzg5NiwgMTIzODk4LCAKLSAgICAxMjM5MDAsIDEyMzkwMiwgMTIzOTA0LCAxMjM5MDksIDEyMzkxNSwgMTIzOTE5LCAxMjM5MjMsIDEyMzkyNywgMTIzOTMxLCAKLSAgICAxMjM5MzYsIDEyMzk0MCwgMTIzOTQyLCAxMjM5NDQsIDEyMzk0OCwgMTIzOTU0LCAxMjM5NTYsIDEyMzk1OCwgMTIzOTYwLCAKLSAgICAxMjM5NjQsIDEyMzk3MywgMTIzOTc5LCAxMjM5ODMsIDEyMzk4NywgMTIzOTg5LCAxMjM5OTEsIDEyMzk5NCwgMTIzOTk2LCAKLSAgICAxMjM5OTgsIDEyNDAwMCwgMTI0MDA0LCAxMjQwMDYsIDEyNDAxMCwgMTI0MDE1LCAxMjQwMTcsIDEyNDAyMiwgMTI0MDI4LCAKLSAgICAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDcsIDEyNDA1MSwgMTI0MDU3LCAwLCAwLCAwLCAxMjQwNjEsIDEyNDA2MywgCi0gICAgMTI0MDY3LCAxMjQwNzEsIDEyNDA3MywgMTI0MDc3LCAxMjQwODEsIDEyNDA4MywgMTI0MDg3LCAxMjQwODksIDEyNDA5MywgCi0gICAgMTI0MDk3LCAxMjQxMDEsIDEyNDEwNSwgMTI0MTA5LCAxMjQxMTMsIDEyNDExNywgMTI0MTIxLCAxMjQxMjcsIDEyNDEzMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MTM1LCAxMjQxMzksIDEyNDE0MywgMTI0MTQ3LCAKLSAgICAxMjQxNTQsIDEyNDE1NiwgMTI0MTYwLCAxMjQxNjIsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTc4LCAKLSAgICAxMjQxODIsIDEyNDE4NiwgMTI0MTkwLCAxMjQxOTQsIDEyNDE5OCwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwNiwgMTI0MjEyLCAKLSAgICAxMjQyMTUsIDEyNDIyMCwgMTI0MjIyLCAxMjQyMjQsIDEyNDIyNywgMTI0MjI5LCAxMjQyMzEsIDEyNDIzNCwgMTI0MjQxLCAKLSAgICAxMjQyNDgsIDEyNDI1NSwgMTI0MjYwLCAxMjQyNjQsIDEyNDI2NiwgMTI0MjY4LCAwLCAxMjQyNzAsIDEyNDI3MiwgCi0gICAgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI0Mjg2LCAxMjQyOTAsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDUsIDEyNDMxMSwgMTI0MzEzLCAKLSAgICAxMjQzMTUsIDEyNDMyMSwgMTI0MzIzLCAxMjQzMjcsIDEyNDMzMSwgMTI0MzMzLCAxMjQzMzcsIDEyNDMzOSwgMTI0MzQzLCAKLSAgICAxMjQzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDM1MSwgMTI0MzUzLCAKLSAgICAxMjQzNTUsIDEyNDM1NywgMTI0MzYxLCAxMjQzNjMsIDEyNDM2NSwgMTI0MzY3LCAxMjQzNjksIDEyNDM3MSwgMTI0MzczLCAKLSAgICAxMjQzNzUsIDEyNDM3NywgMTI0Mzc5LCAxMjQzODEsIDEyNDM4MywgMTI0Mzg1LCAxMjQzODcsIDEyNDM4OSwgMTI0MzkxLCAKLSAgICAxMjQzOTMsIDEyNDM5NSwgMTI0Mzk3LCAxMjQzOTksIDEyNDQwMSwgMTI0NDAzLCAxMjQ0MDUsIDEyNDQwOSwgMTI0NDExLCAKLSAgICAxMjQ0MTMsIDEyNDQxNSwgMTI0NDE5LCAxMjQ0MjEsIDEyNDQyNSwgMTI0NDI3LCAxMjQ0MjksIDEyNDQzMywgMTI0NDM3LCAKLSAgICAxMjQ0NDMsIDEyNDQ0NSwgMTI0NDQ3LCAxMjQ0NDksIDEyNDQ1MSwgMTI0NDU1LCAxMjQ0NTksIDEyNDQ2MSwgMTI0NDY1LCAKLSAgICAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgMTI0NTAxLCAKLSAgICAxMjQ1MDUsIDEyNDUwOSwgMTI0NTEzLCAxMjQ1MTcsIDEyNDUyMSwgMTI0NTI1LCAxMjQ1MjksIDAsIDEyNDUzMywgMCwgCi0gICAgMTI0NTM1LCAxMjQ1MzcsIDEyNDUzOSwgMTI0NTQxLCAxMjQ1NDMsIDEyNDU1MSwgMTI0NTU5LCAxMjQ1NjcsIDEyNDU3NSwgCi0gICAgMTI0NTgwLCAxMjQ1ODUsIDEyNDU5MCwgMTI0NTk0LCAxMjQ1OTgsIDEyNDYwMywgMTI0NjA3LCAxMjQ2MDksIDEyNDYxMywgCi0gICAgMTI0NjE1LCAxMjQ2MTcsIDEyNDYxOSwgMTI0NjIxLCAxMjQ2MjMsIDEyNDYyNSwgMTI0NjI3LCAxMjQ2MzEsIDEyNDYzMywgCi0gICAgMTI0NjM1LCAxMjQ2MzcsIDEyNDY0MSwgMTI0NjQ1LCAxMjQ2NDksIDEyNDY1MywgMTI0NjU3LCAxMjQ2NTksIDEyNDY2NSwgCi0gICAgMTI0NjcxLCAxMjQ2NzMsIDEyNDY3NSwgMTI0Njc3LCAxMjQ2NzksIDEyNDY4MSwgMTI0NjkwLCAxMjQ2OTcsIDEyNDcwNCwgCi0gICAgMTI0NzA4LCAxMjQ3MTUsIDEyNDcyMCwgMTI0NzI3LCAxMjQ3MzYsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIDEyNDc1MSwgCi0gICAgMTI0NzU1LCAxMjQ3NTcsIDEyNDc2MSwgMTI0NzY1LCAxMjQ3NjcsIDEyNDc3MSwgMTI0Nzc1LCAxMjQ3NzksIDEyNDc4MSwgCi0gICAgMTI0NzgzLCAxMjQ3ODksIDEyNDc5MSwgMTI0NzkzLCAxMjQ3OTUsIDEyNDc5OSwgMTI0ODAzLCAxMjQ4MDUsIDEyNDgwOSwgCi0gICAgMTI0ODExLCAxMjQ4MTMsIDEyNDgxNiwgMTI0ODIwLCAxMjQ4MjIsIDEyNDgyNiwgMTI0ODI4LCAxMjQ4MzAsIDEyNDgzNSwgCi0gICAgMTI0ODM3LCAxMjQ4NDEsIDEyNDg0NSwgMTI0ODQ4LCAxMjQ4NTIsIDEyNDg1NiwgMTI0ODYwLCAxMjQ4NjQsIDEyNDg2OCwgCi0gICAgMTI0ODcyLCAxMjQ4NzYsIDEyNDg4MSwgMTI0ODg1LCAxMjQ4ODksIDEyNDg5OCwgMTI0OTAzLCAxMjQ5MDYsIDEyNDkwOCwgCi0gICAgMTI0OTExLCAxMjQ5MTQsIDEyNDkxOSwgMTI0OTIxLCAxMjQ5MjQsIDEyNDkyOSwgMTI0OTMzLCAxMjQ5MzYsIDEyNDk0MCwgCi0gICAgMTI0OTQ0LCAxMjQ5NDcsIDEyNDk1MiwgMTI0OTU2LCAxMjQ5NjAsIDEyNDk2NCwgMTI0OTY4LCAxMjQ5NzQsIDEyNDk4MCwgCi0gICAgMTI0OTg2LCAxMjQ5OTIsIDEyNDk5NywgMTI1MDA4LCAxMjUwMTAsIDEyNTAxNCwgMTI1MDE2LCAxMjUwMTgsIDEyNTAyMiwgCi0gICAgMTI1MDI2LCAxMjUwMjgsIDEyNTAzMiwgMTI1MDM3LCAxMjUwNDIsIDEyNTA0OCwgMTI1MDUwLCAxMjUwNTQsIDEyNTA1OCwgCi0gICAgMTI1MDY1LCAxMjUwNzIsIDEyNTA3NiwgMTI1MDc4LCAxMjUwODAsIDEyNTA4NCwgMTI1MDg2LCAxMjUwOTAsIDEyNTA5NCwgCi0gICAgMTI1MDk4LCAxMjUxMDAsIDEyNTEwMiwgMTI1MTA5LCAxMjUxMTMsIDEyNTExNiwgMTI1MTIwLCAxMjUxMjQsIDEyNTEyOCwgCi0gICAgMTI1MTMwLCAxMjUxMzQsIDEyNTEzNiwgMTI1MTM4LCAxMjUxNDIsIDEyNTE0NCwgMTI1MTQ4LCAxMjUxNTIsIDEyNTE1OCwgCi0gICAgMTI1MTYyLCAxMjUxNjYsIDEyNTE3MCwgMTI1MTcyLCAxMjUxNzUsIDEyNTE3OSwgMTI1MTg2LCAxMjUxOTUsIDEyNTIwNCwgCi0gICAgMTI1MjEyLCAxMjUyMjAsIDEyNTIyMiwgMTI1MjI2LCAxMjUyMjgsIDEyNTIzMiwgMTI1MjQzLCAxMjUyNDcsIDEyNTI1MywgCi0gICAgMTI1MjU5LCAxMjUyNjQsIDAsIDEyNTI2NiwgMTI1MjcwLCAxMjUyNzIsIDEyNTI3NCwgMCwgMCwgMCwgMTI1Mjc2LCAKLSAgICAxMjUyODEsIDEyNTI5MSwgMTI1MzA2LCAxMjUzMTgsIDEyNTMzMCwgMTI1MzM0LCAxMjUzMzgsIDEyNTM0NCwgMTI1MzQ2LCAKLSAgICAxMjUzNTQsIDEyNTM2MiwgMTI1MzY0LCAxMjUzNjgsIDEyNTM3NCwgMTI1MzgwLCAxMjUzODcsIDEyNTM5NCwgMTI1Mzk2LCAKLSAgICAxMjUzOTgsIDEyNTQwMSwgMTI1NDAzLCAxMjU0MDksIDEyNTQxMSwgMTI1NDE0LCAxMjU0MTgsIDEyNTQyNCwgMTI1NDMwLCAKLSAgICAxMjU0NDEsIDEyNTQ0NywgMTI1NDU0LCAxMjU0NjIsIDEyNTQ2NiwgMTI1NDc0LCAxMjU0ODIsIDEyNTQ4OCwgMTI1NDk0LCAKLSAgICAxMjU1MDEsIDEyNTUwMywgMTI1NTA3LCAxMjU1MDksIDEyNTUxMSwgMTI1NTE2LCAxMjU1MTgsIDEyNTUyMCwgMTI1NTIyLCAKLSAgICAxMjU1MjQsIDEyNTUyOCwgMTI1NTM5LCAxMjU1NDUsIDEyNTU0OSwgMTI1NTUzLCAxMjU1NTcsIDEyNTU2MywgMTI1NTY5LCAKLSAgICAxMjU1NzUsIDEyNTU4MSwgMTI1NTg2LCAxMjU1OTEsIDEyNTU5NywgMTI1NjAzLCAxMjU2MTAsIDAsIDAsIDEyNTYxNywgCi0gICAgMTI1NjIyLCAxMjU2MzAsIDEyNTYzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1NjQzLCAKLSAgICAxMjU2NTAsIDEyNTY1NywgMTI1NjY0LCAxMjU2NzIsIDEyNTY4MCwgMTI1Njg4LCAxMjU2OTYsIDEyNTcwNCwgMTI1NzEyLCAKLSAgICAxMjU3MjAsIDEyNTcyOCwgMTI1NzM2LCAxMjU3NDIsIDEyNTc0OCwgMTI1NzU0LCAxMjU3NjAsIDEyNTc2NiwgMTI1NzcyLCAKLSAgICAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAxMjU3OTYsIDEyNTgwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTYzNjEsIDk2MzY2LCA5NjM3MSwgOTYzNzYsIDk2MzgxLCA5NjM4NiwgOTYzOTEsIDk2Mzk2LCA5NjQwMSwgCisgICAgOTY0MDYsIDk2NDExLCA5NjQxNiwgOTY0MjEsIDk2NDI2LCA5NjQzMSwgOTY0MzYsIDk2NDQxLCA5NjQ0NiwgOTY0NTEsIAorICAgIDk2NDU2LCA5NjQ2MSwgOTY0NjYsIDk2NDcxLCA5NjQ3NiwgOTY0ODEsIDk2NDg2LCA5NjQ5MSwgOTY0OTYsIDk2NTAxLCAKKyAgICA5NjUwNiwgOTY1MTEsIDk2NTE2LCA5NjUyMSwgOTY1MjYsIDk2NTMxLCA5NjUzNiwgOTY1NDEsIDk2NTQ2LCA5NjU1MSwgCisgICAgOTY1NTYsIDk2NTYxLCA5NjU2NiwgOTY1NzEsIDk2NTc2LCA5NjU4MSwgOTY1ODYsIDk2NTkxLCA5NjU5NiwgOTY2MDEsIAorICAgIDk2NjA2LCA5NjYxMSwgOTY2MTYsIDk2NjIxLCA5NjYyNiwgOTY2MzEsIDk2NjM2LCA5NjY0MSwgOTY2NDYsIDk2NjUxLCAKKyAgICA5NjY1NiwgOTY2NjEsIDk2NjY2LCA5NjY3MSwgOTY2NzYsIDk2NjgxLCA5NjY4NiwgOTY2OTEsIDk2Njk2LCA5NjcwMSwgCisgICAgOTY3MDYsIDk2NzExLCA5NjcxNiwgOTY3MjEsIDk2NzI2LCA5NjczMSwgOTY3MzYsIDk2NzQxLCA5Njc0NiwgOTY3NTEsIAorICAgIDk2NzU2LCA5Njc2MSwgOTY3NjYsIDk2NzcxLCA5Njc3NiwgOTY3ODEsIDk2Nzg2LCA5Njc5MSwgOTY3OTYsIDk2ODAxLCAKKyAgICA5NjgwNiwgOTY4MTEsIDk2ODE2LCA5NjgyMSwgOTY4MjYsIDk2ODMxLCA5NjgzNiwgOTY4NDEsIDk2ODQ2LCA5Njg1MSwgCisgICAgOTY4NTYsIDk2ODYxLCA5Njg2NiwgOTY4NzEsIDk2ODc2LCA5Njg4MSwgOTY4ODYsIDk2ODkxLCA5Njg5NiwgOTY5MDEsIAorICAgIDk2OTA2LCA5NjkxMSwgOTY5MTYsIDk2OTIxLCA5NjkyNiwgOTY5MzEsIDk2OTM2LCA5Njk0MSwgOTY5NDYsIDk2OTUxLCAKKyAgICA5Njk1NiwgOTY5NjEsIDk2OTY2LCA5Njk3MSwgOTY5NzYsIDk2OTgxLCA5Njk4NiwgOTY5OTEsIDk2OTk2LCA5NzAwMSwgCisgICAgOTcwMDYsIDk3MDExLCA5NzAxNiwgOTcwMjEsIDk3MDI2LCA5NzAzMSwgOTcwMzYsIDk3MDQxLCA5NzA0NiwgOTcwNTEsIAorICAgIDk3MDU2LCA5NzA2MSwgOTcwNjYsIDk3MDcxLCA5NzA3NiwgOTcwODEsIDk3MDg2LCA5NzA5MSwgOTcwOTYsIDk3MTAxLCAKKyAgICA5NzEwNiwgOTcxMTEsIDk3MTE2LCA5NzEyMSwgOTcxMjYsIDk3MTMxLCA5NzEzNiwgOTcxNDEsIDk3MTQ2LCA5NzE1MSwgCisgICAgOTcxNTYsIDk3MTYxLCA5NzE2NiwgOTcxNzEsIDk3MTc2LCA5NzE4MSwgOTcxODYsIDk3MTkxLCA5NzE5NiwgOTcyMDEsIAorICAgIDk3MjA2LCA5NzIxMSwgOTcyMTYsIDk3MjIxLCA5NzIyNiwgOTcyMzEsIDk3MjM2LCA5NzI0MSwgOTcyNDYsIDk3MjUxLCAKKyAgICA5NzI1NiwgOTcyNjEsIDk3MjY2LCA5NzI3MSwgOTcyNzYsIDk3MjgxLCA5NzI4NiwgOTcyOTEsIDk3Mjk2LCA5NzMwMSwgCisgICAgOTczMDYsIDk3MzExLCA5NzMxNiwgOTczMjEsIDk3MzI2LCA5NzMzMSwgOTczMzYsIDk3MzQxLCA5NzM0NiwgOTczNTEsIAorICAgIDk3MzU2LCA5NzM2MSwgOTczNjYsIDk3MzcxLCA5NzM3NiwgOTczODEsIDk3Mzg2LCA5NzM5MSwgOTczOTYsIDk3NDAxLCAKKyAgICA5NzQwNiwgOTc0MTEsIDk3NDE2LCA5NzQyMSwgOTc0MjYsIDk3NDMxLCA5NzQzNiwgOTc0NDEsIDk3NDQ2LCA5NzQ1MSwgCisgICAgOTc0NTYsIDk3NDYxLCA5NzQ2NiwgOTc0NzEsIDk3NDc2LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDEsIAorICAgIDk3NTA2LCA5NzUxMSwgOTc1MTYsIDk3NTIxLCA5NzUyNiwgOTc1MzEsIDk3NTM2LCA5NzU0MSwgOTc1NDYsIDk3NTUxLCAKKyAgICA5NzU1NiwgOTc1NjEsIDk3NTY2LCA5NzU3MSwgOTc1NzYsIDk3NTgxLCA5NzU4NiwgOTc1OTEsIDk3NTk2LCA5NzYwMSwgCisgICAgOTc2MDYsIDk3NjExLCA5NzYxNiwgOTc2MjEsIDk3NjI2LCA5NzYzMSwgOTc2MzYsIDk3NjQxLCA5NzY0NiwgOTc2NTEsIAorICAgIDk3NjU2LCA5NzY2MSwgOTc2NjYsIDk3NjcxLCA5NzY3NiwgOTc2ODEsIDk3Njg2LCA5NzY5MSwgOTc2OTYsIDk3NzAxLCAKKyAgICA5NzcwNiwgOTc3MTEsIDk3NzE2LCA5NzcyMSwgOTc3MjYsIDk3NzMxLCA5NzczNiwgOTc3NDEsIDk3NzQ2LCA5Nzc1MSwgCisgICAgOTc3NTYsIDk3NzYxLCA5Nzc2NiwgOTc3NzEsIDk3Nzc2LCA5Nzc4MSwgOTc3ODYsIDk3NzkxLCA5Nzc5NiwgOTc4MDEsIAorICAgIDk3ODA2LCA5NzgxMSwgOTc4MTYsIDk3ODIxLCA5NzgyNiwgOTc4MzEsIDk3ODM2LCA5Nzg0MSwgOTc4NDYsIDk3ODUxLCAKKyAgICA5Nzg1NiwgOTc4NjEsIDk3ODY2LCA5Nzg3MSwgOTc4NzYsIDk3ODgxLCA5Nzg4NiwgOTc4OTEsIDk3ODk2LCA5NzkwMSwgCisgICAgOTc5MDYsIDk3OTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzkxNiwgOTc5MjIsIDk3OTI5LCA5NzkzNiwgCisgICAgOTc5NDIsIDk3OTQ5LCA5Nzk1NiwgOTc5NjMsIDk3OTcwLCA5Nzk3NiwgOTc5ODMsIDk3OTkwLCA5Nzk5NywgOTgwMDQsIAorICAgIDk4MDExLCA5ODAxOCwgOTgwMjUsIDk4MDMyLCA5ODAzOSwgOTgwNDYsIDk4MDUzLCA5ODA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTgwNjcsIDk4MDcyLCA5ODA3NywgOTgwODIsIDk4MDg3LCA5ODA5MiwgOTgwOTcsIDk4MTAyLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjU4MDgsIDEyNTgxMiwgMTI1ODE2LCAKLSAgICAxMjU4MjEsIDEyNTgyNiwgMTI1ODI4LCAxMjU4MzIsIDEyNTg0MSwgMTI1ODQ5LCAxMjU4NTcsIDEyNTg3MCwgMTI1ODgzLCAKLSAgICAxMjU4OTYsIDEyNTkwMywgMTI1OTEwLCAxMjU5MTQsIDEyNTkyMywgMTI1OTMxLCAxMjU5MzUsIDEyNTk0NCwgMTI1OTUxLCAKLSAgICAxMjU5NTUsIDEyNTk1OSwgMTI1OTYzLCAxMjU5NjcsIDEyNTk3NCwgMTI1OTc4LCAxMjU5ODIsIDEyNTk4NiwgMTI1OTkwLCAKLSAgICAxMjU5OTcsIDEyNjAwNiwgMTI2MDE1LCAxMjYwMjIsIDEyNjAzNCwgMTI2MDQ2LCAxMjYwNTAsIDEyNjA1NCwgMTI2MDU4LCAKLSAgICAxMjYwNjIsIDEyNjA2NiwgMTI2MDcwLCAxMjYwNzgsIDEyNjA4NiwgMTI2MDk0LCAxMjYwOTgsIDEyNjEwMiwgMTI2MTA2LCAKLSAgICAxMjYxMTAsIDEyNjExNCwgMTI2MTE4LCAxMjYxMjQsIDEyNjEzMCwgMTI2MTM0LCAxMjYxNDUsIDEyNjE1MywgMTI2MTU3LCAKLSAgICAxMjYxNjEsIDEyNjE2NSwgMTI2MTY5LCAxMjYxNzUsIDEyNjE4MiwgMTI2MTkzLCAxMjYyMDMsIDEyNjIxMywgMTI2MjI0LCAKLSAgICAxMjYyMzMsIDEyNjI0NCwgMTI2MjUwLCAxMjYyNTYsIDAsIDAsIDAsIDAsIDEyNjI2MiwgMTI2MjcxLCAxMjYyNzgsIAotICAgIDEyNjI4NCwgMTI2Mjg4LCAxMjYyOTIsIDEyNjI5NiwgMTI2MzA1LCAxMjYzMTcsIDEyNjMyMSwgMTI2MzI4LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjYzMzUsIAotICAgIDEyNjMzNywgMTI2MzM5LCAxMjYzNDMsIDEyNjM0NywgMTI2MzUxLCAxMjYzNjAsIDEyNjM2MiwgMTI2MzY0LCAxMjYzNjcsIAotICAgIDEyNjM2OSwgMTI2MzcxLCAxMjYzNzUsIDEyNjM3NywgMTI2MzgxLCAxMjYzODMsIDEyNjM4NywgMTI2Mzg5LCAxMjYzOTEsIAotICAgIDEyNjM5NSwgMTI2Mzk5LCAxMjY0MDUsIDEyNjQwNywgMTI2NDExLCAxMjY0MTMsIDEyNjQxNywgMTI2NDIxLCAxMjY0MjUsIAotICAgIDEyNjQyOSwgMTI2NDMxLCAxMjY0MzMsIDEyNjQzNywgMTI2NDQxLCAxMjY0NDUsIDEyNjQ0OSwgMTI2NDUxLCAxMjY0NTMsIAotICAgIDEyNjQ1NSwgMTI2NDYwLCAxMjY0NjUsIDEyNjQ2OCwgMTI2NDc2LCAxMjY0ODQsIDEyNjQ4NiwgMTI2NDkxLCAxMjY0OTQsIAotICAgIDEyNjQ5OSwgMTI2NTEwLCAxMjY1MTcsIDEyNjUyMiwgMTI2NTI3LCAxMjY1MjksIDEyNjUzMywgMTI2NTM1LCAxMjY1MzksIAotICAgIDEyNjU0MSwgMTI2NTQ1LCAxMjY1NDksIDEyNjU1MiwgMTI2NTU1LCAxMjY1NTcsIDEyNjU2MCwgMTI2NTYyLCAxMjY1NjYsIAotICAgIDEyNjU2OCwgMTI2NTcwLCAxMjY1NzIsIDEyNjU3NiwgMTI2NTc4LCAxMjY1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk4MTA3LCA5ODExMSwgOTgxMTUsIDk4MTE5LCA5ODEyMywgOTgxMjcsIDAsIDAsIDk4MTMyLCAKKyAgICAwLCA5ODEzNywgOTgxNDEsIDk4MTQ2LCA5ODE1MSwgOTgxNTYsIDk4MTYxLCA5ODE2NiwgOTgxNzEsIDk4MTc2LCA5ODE4MSwgCisgICAgOTgxODYsIDk4MTkwLCA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIAorICAgIDk4MjM1LCA5ODIzOSwgOTgyNDQsIDk4MjQ5LCA5ODI1NCwgOTgyNTksIDk4MjY0LCA5ODI2OSwgOTgyNzQsIDk4Mjc5LCAKKyAgICA5ODI4NCwgOTgyODksIDk4Mjk0LCA5ODI5OSwgOTgzMDQsIDk4MzA5LCA5ODMxNCwgOTgzMTksIDk4MzI0LCA5ODMyOCwgCisgICAgOTgzMzMsIDk4MzM4LCA5ODM0MywgOTgzNDgsIDAsIDk4MzUzLCA5ODM1OCwgMCwgMCwgMCwgOTgzNjMsIDAsIDAsIDk4MzY4LCAKKyAgICA5ODM3MywgOTgzODAsIDk4Mzg3LCA5ODM5NCwgOTg0MDEsIDk4NDA4LCA5ODQxNSwgOTg0MjIsIDk4NDI5LCA5ODQzNiwgCisgICAgOTg0NDMsIDk4NDUwLCA5ODQ1NywgOTg0NjQsIDk4NDcxLCA5ODQ3OCwgOTg0ODUsIDk4NDkyLCA5ODQ5OSwgOTg1MDYsIAorICAgIDk4NTEzLCA5ODUyMCwgMCwgOTg1MjcsIDk4NTM0LCA5ODU0MCwgOTg1NDYsIDk4NTUyLCA5ODU1OSwgOTg1NjYsIDk4NTc0LCAKKyAgICA5ODU4MiwgOTg1OTEsIDk4NTk2LCA5ODYwMSwgOTg2MDYsIDk4NjExLCA5ODYxNiwgOTg2MjEsIDk4NjI2LCA5ODYzMSwgCisgICAgOTg2MzYsIDk4NjQxLCA5ODY0NiwgOTg2NTEsIDk4NjU2LCA5ODY2MiwgOTg2NjcsIDk4NjcyLCA5ODY3NywgOTg2ODIsIAorICAgIDk4Njg3LCA5ODY5MiwgOTg2OTcsIDk4NzAyLCA5ODcwNywgOTg3MTMsIDk4NzE5LCA5ODcyMywgOTg3MjcsIDk4NzMxLCAKKyAgICA5ODczNSwgOTg3MzksIDk4NzQ0LCA5ODc0OSwgOTg3NTUsIDk4NzYwLCA5ODc2NiwgOTg3NzEsIDk4Nzc2LCA5ODc4MSwgCisgICAgOTg3ODcsIDk4NzkyLCA5ODc5NywgOTg4MDIsIDk4ODA3LCA5ODgxMiwgOTg4MTgsIDk4ODIzLCA5ODgyOSwgOTg4MzQsIAorICAgIDk4ODQwLCA5ODg0NSwgOTg4NTEsIDk4ODU2LCA5ODg2MiwgOTg4NjcsIDk4ODcyLCA5ODg3NywgOTg4ODIsIDk4ODg3LCAKKyAgICA5ODg5MiwgOTg4OTcsIDk4OTAzLCA5ODkwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5MTMsIDk4OTE3LCA5ODkyMSwgCisgICAgOTg5MjUsIDk4OTI5LCA5ODkzNSwgOTg5MzksIDk4OTQ0LCA5ODk0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5NTUsIDk4OTYwLCA5ODk2NSwgOTg5NzAsIAorICAgIDk4OTc1LCA5ODk4MCwgOTg5ODUsIDk4OTkwLCA5ODk5NSwgOTkwMDAsIDk5MDA1LCA5OTAxMCwgOTkwMTUsIDk5MDIwLCAKKyAgICA5OTAyNSwgOTkwMzAsIDk5MDM1LCA5OTA0MCwgOTkwNDUsIDAsIDk5MDUwLCA5OTA1NSwgMCwgMCwgMCwgMCwgMCwgOTkwNjAsIAorICAgIDk5MDY0LCA5OTA2OCwgOTkwNzMsIDk5MDc4LCA5OTA4NCwgOTkwODksIDk5MDk0LCA5OTA5OSwgOTkxMDQsIDk5MTA5LCAKKyAgICA5OTExNCwgOTkxMTksIDk5MTI0LCA5OTEyOSwgOTkxMzQsIDk5MTM5LCA5OTE0NCwgOTkxNDksIDk5MTU0LCA5OTE1OSwgCisgICAgOTkxNjQsIDk5MTY5LCA5OTE3NCwgOTkxNzksIDk5MTg0LCA5OTE4OSwgOTkxOTQsIDk5MTk4LCA5OTIwMywgOTkyMDgsIAorICAgIDk5MjE0LCA5OTIxOCwgMCwgMCwgMCwgOTkyMjIsIDk5MjI4LCA5OTIzMiwgOTkyMzcsIDk5MjQyLCA5OTI0NywgOTkyNTEsIAorICAgIDk5MjU2LCA5OTI2MCwgOTkyNjUsIDk5MjcwLCA5OTI3NCwgOTkyNzksIDk5Mjg0LCA5OTI4OCwgOTkyOTIsIDk5Mjk3LCAKKyAgICA5OTMwMiwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjAsIDk5MzI1LCA5OTMzMCwgOTkzMzUsIDk5MzQwLCA5OTM0NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTkzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyNjU4NSwgMTI2NTkwLCAxMjY1OTUsIDEyNjYwMCwgMTI2NjA1LCAxMjY2MTAsIDEyNjYxNSwgMTI2NjIyLCAKLSAgICAxMjY2MjksIDEyNjYzNiwgMTI2NjQzLCAxMjY2NDgsIDEyNjY1MywgMTI2NjU4LCAxMjY2NjMsIDEyNjY3MCwgMTI2Njc2LCAKLSAgICAxMjY2ODMsIDEyNjY5MCwgMTI2Njk3LCAxMjY3MDIsIDEyNjcwNywgMTI2NzEyLCAxMjY3MTcsIDEyNjcyMiwgMTI2NzI5LCAKLSAgICAxMjY3MzYsIDEyNjc0MSwgMTI2NzQ2LCAxMjY3NTMsIDEyNjc2MCwgMTI2NzY4LCAxMjY3NzYsIDEyNjc4MywgMTI2NzkwLCAKLSAgICAxMjY3OTgsIDEyNjgwNiwgMTI2ODE0LCAxMjY4MjEsIDEyNjgzMSwgMTI2ODQyLCAxMjY4NDcsIDEyNjg1NCwgMTI2ODYxLCAKLSAgICAxMjY4NjgsIDEyNjg3NiwgMTI2ODg0LCAxMjY4OTUsIDEyNjkwMywgMTI2OTExLCAxMjY5MTksIDEyNjkyNCwgMTI2OTI5LCAKLSAgICAxMjY5MzQsIDEyNjkzOSwgMTI2OTQ0LCAxMjY5NDksIDEyNjk1NCwgMTI2OTU5LCAxMjY5NjQsIDEyNjk2OSwgMTI2OTc0LCAKLSAgICAxMjY5NzksIDEyNjk4NiwgMTI2OTkxLCAxMjY5OTYsIDEyNzAwMywgMTI3MDA4LCAxMjcwMTMsIDEyNzAxOCwgMTI3MDIzLCAKLSAgICAxMjcwMjgsIDEyNzAzMywgMTI3MDM4LCAxMjcwNDMsIDEyNzA0OCwgMTI3MDUzLCAxMjcwNTgsIDEyNzA2MywgMTI3MDcwLCAKLSAgICAxMjcwNzgsIDEyNzA4MywgMTI3MDg4LCAxMjcwOTUsIDEyNzEwMCwgMTI3MTA1LCAxMjcxMTAsIDEyNzExNywgMTI3MTIyLCAKLSAgICAxMjcxMjksIDEyNzEzNCwgMTI3MTQxLCAxMjcxNDYsIDEyNzE1NSwgMTI3MTY0LCAxMjcxNjksIDEyNzE3NCwgMTI3MTc5LCAKLSAgICAxMjcxODQsIDEyNzE4OSwgMTI3MTk0LCAxMjcxOTksIDEyNzIwNCwgMTI3MjA5LCAxMjcyMTQsIDEyNzIxOSwgMTI3MjI0LCAKLSAgICAxMjcyMjksIDEyNzIzNywgMTI3MjQ1LCAxMjcyNTAsIDEyNzI1NSwgMTI3MjYwLCAxMjcyNjUsIDEyNzI3MCwgMTI3Mjc2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyODIsIDEyNzI4NiwgMTI3MjkwLCAxMjcyOTQsIAotICAgIDEyNzI5OCwgMTI3MzAyLCAxMjczMDYsIDEyNzMxMCwgMTI3MzE0LCAxMjczMTgsIDEyNzMyMiwgMTI3MzI2LCAxMjczMzAsIAotICAgIDEyNzMzNCwgMTI3MzM4LCAxMjczNDIsIDEyNzM0NiwgMTI3MzUwLCAxMjczNTQsIDEyNzM1OCwgMTI3MzYyLCAxMjczNjYsIAotICAgIDEyNzM3MCwgMTI3Mzc0LCAxMjczNzgsIDEyNzM4MiwgMTI3Mzg2LCAxMjczOTAsIDEyNzM5NCwgMTI3Mzk4LCAxMjc0MDIsIAotICAgIDEyNzQwNiwgMTI3NDEwLCAxMjc0MTQsIDEyNzQxOCwgMTI3NDIyLCAxMjc0MjYsIDEyNzQzMCwgMTI3NDM0LCAxMjc0MzgsIAotICAgIDEyNzQ0MiwgMTI3NDQ2LCAxMjc0NTAsIDEyNzQ1NCwgMTI3NDU4LCAxMjc0NjIsIDEyNzQ2NiwgMTI3NDcwLCAxMjc0NzQsIAotICAgIDEyNzQ3OCwgMTI3NDgyLCAxMjc0ODYsIDEyNzQ5MCwgMTI3NDk0LCAxMjc0OTgsIDEyNzUwMiwgMTI3NTA2LCAxMjc1MTAsIAotICAgIDEyNzUxNCwgMTI3NTE4LCAxMjc1MjIsIDEyNzUyNiwgMTI3NTMwLCAxMjc1MzQsIDEyNzUzOCwgMTI3NTQyLCAxMjc1NDYsIAotICAgIDEyNzU1MCwgMTI3NTU0LCAxMjc1NTgsIDEyNzU2MiwgMTI3NTY2LCAxMjc1NzAsIDEyNzU3NCwgMTI3NTc4LCAxMjc1ODIsIAotICAgIDEyNzU4NiwgMTI3NTkwLCAxMjc1OTQsIDEyNzU5OCwgMTI3NjAyLCAxMjc2MDYsIDEyNzYxMCwgMTI3NjE0LCAxMjc2MTgsIAotICAgIDEyNzYyMiwgMTI3NjI2LCAxMjc2MzAsIDEyNzYzNCwgMTI3NjM4LCAxMjc2NDIsIDEyNzY0NiwgMTI3NjUwLCAxMjc2NTQsIAotICAgIDEyNzY1OCwgMTI3NjYyLCAxMjc2NjYsIDEyNzY3MCwgMTI3Njc0LCAxMjc2NzgsIDEyNzY4MiwgMTI3Njg2LCAxMjc2OTAsIAotICAgIDEyNzY5NCwgMTI3Njk4LCAxMjc3MDIsIDEyNzcwNiwgMTI3NzEwLCAxMjc3MTQsIDEyNzcxOCwgMTI3NzIyLCAxMjc3MjYsIAotICAgIDEyNzczMCwgMTI3NzM0LCAxMjc3MzgsIDEyNzc0MiwgMTI3NzQ2LCAxMjc3NTAsIDEyNzc1NCwgMTI3NzU4LCAxMjc3NjIsIAotICAgIDEyNzc2NiwgMTI3NzcwLCAxMjc3NzQsIDEyNzc3OCwgMTI3NzgyLCAxMjc3ODYsIDEyNzc5MCwgMTI3Nzk0LCAxMjc3OTgsIAotICAgIDEyNzgwMiwgMTI3ODA2LCAxMjc4MTAsIDEyNzgxNCwgMTI3ODE4LCAxMjc4MjIsIDEyNzgyNiwgMTI3ODMwLCAxMjc4MzQsIAotICAgIDEyNzgzOCwgMTI3ODQyLCAxMjc4NDYsIDEyNzg1MCwgMTI3ODU0LCAxMjc4NTgsIDEyNzg2MiwgMTI3ODY2LCAxMjc4NzAsIAotICAgIDEyNzg3NCwgMTI3ODc4LCAxMjc4ODIsIDEyNzg4NiwgMTI3ODkwLCAxMjc4OTQsIDEyNzg5OCwgMTI3OTAyLCAxMjc5MDYsIAotICAgIDEyNzkxMCwgMTI3OTE0LCAxMjc5MTgsIDEyNzkyMiwgMTI3OTI2LCAxMjc5MzAsIDEyNzkzNCwgMTI3OTM4LCAxMjc5NDIsIAotICAgIDEyNzk0NiwgMTI3OTUwLCAxMjc5NTQsIDEyNzk1OCwgMTI3OTYyLCAxMjc5NjYsIDEyNzk3MCwgMTI3OTc0LCAxMjc5NzgsIAotICAgIDEyNzk4MiwgMTI3OTg2LCAxMjc5OTAsIDEyNzk5NCwgMTI3OTk4LCAxMjgwMDIsIDEyODAwNiwgMTI4MDEwLCAxMjgwMTQsIAotICAgIDEyODAxOCwgMTI4MDIyLCAxMjgwMjYsIDEyODAzMCwgMTI4MDM0LCAxMjgwMzgsIDEyODA0MiwgMTI4MDQ2LCAxMjgwNTAsIAotICAgIDEyODA1NCwgMTI4MDU4LCAxMjgwNjIsIDEyODA2NiwgMTI4MDcwLCAxMjgwNzQsIDEyODA3OCwgMTI4MDgyLCAxMjgwODYsIAotICAgIDEyODA5MCwgMTI4MDk0LCAxMjgwOTgsIDEyODEwMiwgMTI4MTA2LCAxMjgxMTAsIDEyODExNCwgMTI4MTE4LCAxMjgxMjIsIAotICAgIDEyODEyNiwgMTI4MTMwLCAxMjgxMzQsIDEyODEzOCwgMTI4MTQyLCAxMjgxNDYsIDEyODE1MCwgMTI4MTU0LCAxMjgxNTgsIAotICAgIDEyODE2MiwgMTI4MTY2LCAxMjgxNzAsIDEyODE3NCwgMTI4MTc4LCAxMjgxODIsIDEyODE4NiwgMTI4MTkwLCAxMjgxOTQsIAotICAgIDEyODE5OCwgMTI4MjAyLCAxMjgyMDYsIDEyODIxMCwgMTI4MjE0LCAxMjgyMTgsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzAsIAotICAgIDEyODIzNCwgMTI4MjM4LCAxMjgyNDIsIDEyODI0NiwgMTI4MjUwLCAxMjgyNTQsIDEyODI1OCwgMTI4MjYyLCAxMjgyNjYsIAotICAgIDEyODI3MCwgMTI4Mjc0LCAxMjgyNzgsIDEyODI4MiwgMTI4Mjg2LCAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIAotICAgIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOCwgMTI4MzIyLCAxMjgzMjYsIDEyODMzMCwgMTI4MzM0LCAxMjgzMzgsIAotICAgIDEyODM0MiwgMTI4MzQ2LCAxMjgzNTAsIDEyODM1NCwgMTI4MzU4LCAxMjgzNjIsIDEyODM2NiwgMTI4MzcwLCAxMjgzNzQsIAotICAgIDEyODM3OCwgMTI4MzgyLCAxMjgzODYsIDEyODM5MCwgMTI4Mzk0LCAxMjgzOTgsIDEyODQwMiwgMTI4NDA2LCAxMjg0MTAsIAotICAgIDEyODQxNCwgMTI4NDE4LCAxMjg0MjIsIDEyODQyNiwgMTI4NDMwLCAxMjg0MzQsIDEyODQzOCwgMTI4NDQyLCAxMjg0NDYsIAotICAgIDEyODQ1MCwgMTI4NDU0LCAxMjg0NTgsIDEyODQ2MiwgMTI4NDY2LCAxMjg0NzAsIDEyODQ3NCwgMTI4NDc4LCAxMjg0ODIsIAotICAgIDEyODQ4NiwgMTI4NDkwLCAxMjg0OTQsIDEyODQ5OCwgMTI4NTAyLCAxMjg1MDYsIDEyODUxMCwgMTI4NTE0LCAxMjg1MTgsIAotICAgIDEyODUyMiwgMTI4NTI2LCAxMjg1MzAsIDEyODUzNCwgMTI4NTM4LCAxMjg1NDIsIDEyODU0NiwgMTI4NTUwLCAxMjg1NTQsIAotICAgIDEyODU1OCwgMTI4NTYyLCAxMjg1NjYsIDEyODU3MCwgMTI4NTc0LCAxMjg1NzgsIDEyODU4MiwgMTI4NTg2LCAxMjg1OTAsIAotICAgIDEyODU5NCwgMTI4NTk4LCAxMjg2MDIsIDEyODYwNiwgMTI4NjEwLCAxMjg2MTQsIDEyODYxOCwgMTI4NjIyLCAxMjg2MjYsIAotICAgIDEyODYzMCwgMTI4NjM0LCAxMjg2MzgsIDEyODY0MiwgMTI4NjQ2LCAxMjg2NTAsIDEyODY1NCwgMTI4NjU4LCAxMjg2NjIsIAotICAgIDEyODY2NiwgMTI4NjcwLCAxMjg2NzQsIDEyODY3OCwgMTI4NjgyLCAxMjg2ODYsIDEyODY5MCwgMTI4Njk0LCAxMjg2OTgsIAotICAgIDEyODcwMiwgMTI4NzA2LCAxMjg3MTAsIDEyODcxNCwgMTI4NzE4LCAxMjg3MjIsIDEyODcyNiwgMTI4NzMwLCAxMjg3MzQsIAotICAgIDEyODczOCwgMTI4NzQyLCAxMjg3NDYsIDEyODc1MCwgMTI4NzU0LCAxMjg3NTgsIDEyODc2MiwgMTI4NzY2LCAxMjg3NzAsIAotICAgIDEyODc3NCwgMTI4Nzc4LCAxMjg3ODIsIDEyODc4NiwgMTI4NzkwLCAxMjg3OTQsIDEyODc5OCwgMTI4ODAyLCAxMjg4MDYsIAotICAgIDEyODgxMCwgMTI4ODE0LCAxMjg4MTgsIDEyODgyMiwgMTI4ODI2LCAxMjg4MzAsIDEyODgzNCwgMTI4ODM4LCAxMjg4NDIsIAotICAgIDEyODg0NiwgMTI4ODUwLCAxMjg4NTQsIDEyODg1OCwgMTI4ODYyLCAxMjg4NjYsIDEyODg3MCwgMTI4ODc0LCAxMjg4NzgsIAotICAgIDEyODg4MiwgMTI4ODg2LCAxMjg4OTAsIDEyODg5NCwgMTI4ODk4LCAxMjg5MDIsIDEyODkwNiwgMTI4OTEwLCAxMjg5MTQsIAotICAgIDEyODkxOCwgMTI4OTIyLCAxMjg5MjYsIDEyODkzMCwgMTI4OTM0LCAxMjg5MzgsIDEyODk0MiwgMTI4OTQ2LCAxMjg5NTAsIAotICAgIDEyODk1NCwgMTI4OTU4LCAxMjg5NjIsIDEyODk2NiwgMTI4OTcwLCAxMjg5NzQsIDEyODk3OCwgMTI4OTgyLCAxMjg5ODYsIAotICAgIDEyODk5MCwgMTI4OTk0LCAxMjg5OTgsIDEyOTAwMiwgMTI5MDA2LCAxMjkwMTAsIDEyOTAxNCwgMTI5MDE4LCAxMjkwMjIsIAotICAgIDEyOTAyNiwgMTI5MDMwLCAxMjkwMzQsIDEyOTAzOCwgMTI5MDQyLCAxMjkwNDYsIDEyOTA1MCwgMTI5MDU0LCAxMjkwNTgsIAotICAgIDEyOTA2MiwgMTI5MDY2LCAxMjkwNzAsIDEyOTA3NCwgMTI5MDc4LCAxMjkwODIsIDEyOTA4NiwgMTI5MDkwLCAxMjkwOTQsIAotICAgIDEyOTA5OCwgMTI5MTAyLCAxMjkxMDYsIDEyOTExMCwgMTI5MTE0LCAxMjkxMTgsIDEyOTEyMiwgMTI5MTI2LCAxMjkxMzAsIAotICAgIDEyOTEzNCwgMTI5MTM4LCAxMjkxNDIsIDEyOTE0NiwgMTI5MTUwLCAxMjkxNTQsIDEyOTE1OCwgMTI5MTYyLCAxMjkxNjYsIAotICAgIDEyOTE3MCwgMTI5MTc0LCAxMjkxNzgsIDEyOTE4MiwgMTI5MTg2LCAxMjkxOTAsIDEyOTE5NCwgMTI5MTk4LCAxMjkyMDIsIAotICAgIDEyOTIwNiwgMTI5MjEwLCAxMjkyMTQsIDEyOTIxOCwgMTI5MjIyLCAxMjkyMjYsIDEyOTIzMCwgMTI5MjM0LCAxMjkyMzgsIAotICAgIDEyOTI0MiwgMTI5MjQ2LCAxMjkyNTAsIDEyOTI1NCwgMTI5MjU4LCAxMjkyNjIsIDEyOTI2NiwgMTI5MjcwLCAxMjkyNzQsIAotICAgIDEyOTI3OCwgMTI5MjgyLCAxMjkyODYsIDEyOTI5MCwgMTI5Mjk0LCAxMjkyOTgsIDEyOTMwMiwgMTI5MzA2LCAxMjkzMTAsIAotICAgIDEyOTMxNCwgMTI5MzE4LCAxMjkzMjIsIDEyOTMyNiwgMTI5MzMwLCAxMjkzMzQsIDEyOTMzOCwgMTI5MzQyLCAxMjkzNDYsIAotICAgIDEyOTM1MCwgMTI5MzU0LCAxMjkzNTgsIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzAsIDEyOTM3NCwgMTI5Mzc4LCAxMjkzODIsIAotICAgIDEyOTM4NiwgMTI5MzkwLCAxMjkzOTQsIDEyOTM5OCwgMTI5NDAyLCAxMjk0MDYsIDEyOTQxMCwgMTI5NDE0LCAxMjk0MTgsIAotICAgIDEyOTQyMiwgMTI5NDI2LCAxMjk0MzAsIDEyOTQzNCwgMTI5NDM4LCAxMjk0NDIsIDEyOTQ0NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTkzNTUsIAorICAgIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgOTkzODYsIDk5MzkyLCA5OTM5OCwgOTk0MDMsIDk5NDA4LCAKKyAgICA5OTQxNCwgOTk0MjAsIDk5NDI2LCA5OTQzMiwgOTk0MzgsIDk5NDQ0LCA5OTQ1MCwgOTk0NTYsIDk5NDYyLCA5OTQ2OCwgCisgICAgOTk0NzQsIDk5NDgwLCA5OTQ4NSwgOTk0OTEsIDk5NDk3LCA5OTUwMywgOTk1MDksIDk5NTE1LCA5OTUyMCwgOTk1MjYsIAorICAgIDk5NTMyLCA5OTUzOCwgOTk1NDIsIDk5NTQ2LCA5OTU1MCwgOTk1NTQsIDk5NTU4LCA5OTU2MywgOTk1NjgsIDk5NTcyLCAKKyAgICA5OTU3NiwgOTk1ODEsIDk5NTg2LCA5OTU5MSwgOTk1OTYsIDk5NjAxLCA5OTYwNiwgOTk2MTEsIDk5NjE4LCA5OTYyMywgCisgICAgOTk2MjcsIDk5NjMyLCA5OTYzNywgOTk2NDIsIDk5NjQ2LCAwLCAwLCAwLCAwLCA5OTY1MSwgOTk2NTksIDk5NjY2LCAKKyAgICA5OTY3MiwgOTk2NzgsIDk5NjgyLCA5OTY4NiwgOTk2OTAsIDk5Njk0LCA5OTY5OCwgOTk3MDIsIDk5NzA3LCA5OTcxMSwgCisgICAgOTk3MTYsIDk5NzIxLCA5OTcyNiwgOTk3MzEsIDk5NzM2LCA5OTc0MSwgOTk3NDYsIDAsIDAsIDk5NzUxLCA5OTc1NywgCisgICAgOTk3NjMsIDk5NzY5LCA5OTc3NiwgOTk3ODMsIDk5NzkwLCA5OTc5NywgOTk4MDQsIDk5ODExLCA5OTgxNywgOTk4MjMsIAorICAgIDk5ODI5LCA5OTgzNiwgOTk4NDMsIDk5ODUwLCA5OTg1NywgOTk4NjQsIDk5ODcxLCA5OTg3OCwgOTk4ODUsIDk5ODkyLCAKKyAgICA5OTg5OSwgOTk5MDYsIDk5OTEzLCA5OTkyMCwgOTk5MjcsIDk5OTM0LCA5OTk0MiwgOTk5NTAsIDk5OTU4LCA5OTk2NywgCisgICAgOTk5NzYsIDk5OTg1LCA5OTk5NCwgMTAwMDAzLCAxMDAwMTIsIDEwMDAxOSwgMTAwMDI2LCAxMDAwMzMsIDEwMDA0MSwgCisgICAgMTAwMDQ5LCAxMDAwNTcsIDEwMDA2NSwgMTAwMDczLCAxMDAwODEsIDEwMDA4OSwgMTAwMDkzLCAxMDAwOTgsIDEwMDEwMywgCisgICAgMCwgMTAwMTA5LCAxMDAxMTQsIDAsIDAsIDAsIDAsIDAsIDEwMDExOSwgMTAwMTI1LCAxMDAxMzIsIDEwMDEzNywgMTAwMTQyLCAKKyAgICAxMDAxNDYsIDEwMDE1MSwgMTAwMTU2LCAwLCAxMDAxNjEsIDEwMDE2NiwgMTAwMTcxLCAwLCAxMDAxNzYsIDEwMDE4MSwgCisgICAgMTAwMTg2LCAxMDAxOTEsIDEwMDE5NiwgMTAwMjAxLCAxMDAyMDYsIDEwMDIxMSwgMTAwMjE2LCAxMDAyMjEsIDEwMDIyNiwgCisgICAgMTAwMjMxLCAxMDAyMzUsIDEwMDI0MCwgMTAwMjQ1LCAxMDAyNTAsIDEwMDI1NCwgMTAwMjU4LCAxMDAyNjMsIDEwMDI2OCwgCisgICAgMTAwMjczLCAxMDAyNzgsIDEwMDI4MywgMTAwMjg4LCAxMDAyOTMsIDEwMDI5NywgMTAwMzAyLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAzMDcsIDEwMDMxMywgMTAwMzE4LCAwLCAwLCAwLCAwLCAxMDAzMjMsIDEwMDMyNywgMTAwMzMxLCAxMDAzMzUsIAorICAgIDEwMDMzOSwgMTAwMzQzLCAxMDAzNDgsIDEwMDM1MywgMTAwMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAzNjUsIAorICAgIDEwMDM3MSwgMTAwMzc4LCAxMDAzODQsIDEwMDM5MSwgMTAwMzk3LCAxMDA0MDMsIDEwMDQwOSwgMTAwNDE2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDA0MjIsIDEwMDQzMCwgMTAwNDM4LCAxMDA0NDYsIDEwMDQ1NCwgMTAwNDYyLCAxMDA0NzAsIAorICAgIDEwMDQ3OCwgMTAwNDg2LCAxMDA0OTQsIDEwMDUwMiwgMTAwNTEwLCAxMDA1MTgsIDEwMDUyNiwgMTAwNTM0LCAxMDA1NDIsIAorICAgIDEwMDU1MCwgMTAwNTU4LCAxMDA1NjYsIDEwMDU3NCwgMTAwNTgyLCAxMDA1OTAsIDEwMDU5OCwgMTAwNjA2LCAxMDA2MTQsIAorICAgIDEwMDYyMiwgMTAwNjMwLCAxMDA2MzgsIDEwMDY0NiwgMTAwNjU0LCAxMDA2NjEsIDEwMDY2OSwgMTAwNjc3LCAxMDA2ODQsIAorICAgIDEwMDY5MSwgMTAwNjk4LCAxMDA3MDUsIDEwMDcxMiwgMTAwNzE5LCAxMDA3MjYsIDEwMDczMywgMTAwNzQwLCAxMDA3NDcsIAorICAgIDEwMDc1NCwgMTAwNzYxLCAxMDA3NjgsIDEwMDc3NSwgMTAwNzgyLCAxMDA3ODksIDEwMDc5NiwgMTAwODAzLCAxMDA4MTAsIAorICAgIDEwMDgxNywgMTAwODI0LCAxMDA4MzEsIDEwMDgzOCwgMTAwODQ1LCAxMDA4NTIsIDEwMDg1OSwgMTAwODY2LCAxMDA4NzMsIAorICAgIDEwMDg4MCwgMTAwODg2LCAxMDA4OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDkwMCwgMTAwOTA1LCAxMDA5MTAsIAorICAgIDEwMDkxNSwgMTAwOTIwLCAxMDA5MjUsIDEwMDkzMCwgMTAwOTM1LCAxMDA5NDAsIDEwMDk0NSwgMTAwOTUwLCAxMDA5NTUsIAorICAgIDEwMDk2MCwgMTAwOTY1LCAxMDA5NzAsIDEwMDk3NSwgMTAwOTgwLCAxMDA5ODUsIDEwMDk5MCwgMTAwOTk1LCAxMDEwMDAsIAorICAgIDEwMTAwNSwgMTAxMDEwLCAxMDEwMTUsIDEwMTAyMCwgMTAxMDI1LCAxMDEwMzAsIDEwMTAzNSwgMTAxMDQwLCAxMDEwNDUsIAorICAgIDEwMTA1MCwgMTAxMDU1LCAxMDEwNjAsIDEwMTA2NSwgMTAxMDcwLCAxMDEwNzUsIDEwMTA4MCwgMTAxMDg1LCAxMDEwOTEsIAorICAgIDAsIDAsIDAsIDAsIDEwMTA5NywgMTAxMTAxLCAxMDExMDUsIDEwMTExMCwgMTAxMTE1LCAxMDExMjEsIDEwMTEyNywgCisgICAgMTAxMTMzLCAxMDExNDMsIDEwMTE1MiwgMTAxMTU4LCAxMDExNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMTE3MywgMTAxMTc3LCAxMDExODIsIDEwMTE4NywgMTAxMTkyLCAxMDExOTcsIDEwMTIwMiwgMTAxMjA3LCAxMDEyMTIsIAorICAgIDEwMTIxNiwgMTAxMjIxLCAxMDEyMjUsIDEwMTIzMCwgMTAxMjM0LCAxMDEyMzksIDEwMTI0MywgMTAxMjQ4LCAxMDEyNTMsIAorICAgIDEwMTI1OCwgMTAxMjYzLCAxMDEyNjgsIDEwMTI3MywgMTAxMjc4LCAxMDEyODMsIDEwMTI4OCwgMTAxMjkzLCAxMDEyOTgsIAorICAgIDEwMTMwMywgMTAxMzA4LCAxMDEzMTMsIDEwMTMxOCwgMTAxMzIzLCAxMDEzMjgsIDEwMTMzMywgMTAxMzM4LCAxMDEzNDMsIAorICAgIDEwMTM0OCwgMTAxMzUzLCAxMDEzNTgsIDEwMTM2MywgMTAxMzY4LCAxMDEzNzMsIDEwMTM3OCwgMTAxMzgzLCAxMDEzODgsIAorICAgIDEwMTM5MywgMTAxMzk4LCAxMDE0MDMsIDEwMTQwOCwgMTAxNDEzLCAxMDE0MTgsIDEwMTQyMywgMTAxNDI4LCAxMDE0MzMsIAorICAgIDAsIDAsIDAsIDEwMTQzOCwgMTAxNDQzLCAxMDE0NTIsIDEwMTQ2MCwgMTAxNDY5LCAxMDE0NzgsIDEwMTQ4OSwgMTAxNTAwLCAKKyAgICAxMDE1MDcsIDEwMTUxNCwgMTAxNTIxLCAxMDE1MjgsIDEwMTUzNSwgMTAxNTQyLCAxMDE1NDksIDEwMTU1NiwgMTAxNTYzLCAKKyAgICAxMDE1NzAsIDEwMTU3NywgMTAxNTg0LCAxMDE1OTEsIDEwMTU5OCwgMTAxNjA1LCAxMDE2MTIsIDEwMTYxOSwgMTAxNjI2LCAKKyAgICAxMDE2MzMsIDEwMTY0MCwgMTAxNjQ3LCAwLCAwLCAxMDE2NTQsIDEwMTY2MCwgMTAxNjY2LCAxMDE2NzIsIDEwMTY3OCwgCisgICAgMTAxNjg1LCAxMDE2OTIsIDEwMTcwMCwgMTAxNzA4LCAxMDE3MTUsIDEwMTcyMiwgMTAxNzI5LCAxMDE3MzYsIDEwMTc0MywgCisgICAgMTAxNzUwLCAxMDE3NTcsIDEwMTc2NCwgMTAxNzcxLCAxMDE3NzgsIDEwMTc4NSwgMTAxNzkyLCAxMDE3OTksIDEwMTgwNiwgCisgICAgMTAxODEzLCAxMDE4MjAsIDEwMTgyNywgMTAxODM0LCAwLCAwLCAwLCAwLCAwLCAxMDE4NDEsIDEwMTg0NywgMTAxODUzLCAKKyAgICAxMDE4NTksIDEwMTg2NSwgMTAxODcyLCAxMDE4NzksIDEwMTg4NywgMTAxODk1LCAxMDE5MDIsIDEwMTkwOSwgMTAxOTE2LCAKKyAgICAxMDE5MjMsIDEwMTkzMCwgMTAxOTM3LCAxMDE5NDQsIDEwMTk1MSwgMTAxOTU4LCAxMDE5NjUsIDEwMTk3MiwgMTAxOTc5LCAKKyAgICAxMDE5ODYsIDEwMTk5MywgMTAyMDAwLCAxMDIwMDcsIDEwMjAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDIxLCAKKyAgICAxMDIwMjgsIDEwMjAzNywgMTAyMDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIwNTcsIAorICAgIDEwMjA2MywgMTAyMDY5LCAxMDIwNzUsIDEwMjA4MSwgMTAyMDg4LCAxMDIwOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQ1MCwgMCwgCisgICAgMTAyMTAzLCAxMDIxMTAsIDEwMjExNywgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MSwgCisgICAgMTAyMTY5LCAxMDIxNzcsIDEwMjE4NSwgMTAyMTkzLCAxMDIyMDEsIDEwMjIwOSwgMTAyMjE3LCAxMDIyMjUsIDEwMjIzMywgCisgICAgMTAyMjQxLCAxMDIyNDksIDEwMjI1NywgMTAyMjY1LCAxMDIyNzMsIDEwMjI4MSwgMTAyMjg5LCAxMDIyOTcsIDEwMjMwNSwgCisgICAgMTAyMzEzLCAxMDIzMjEsIDEwMjMyOSwgMTAyMzM3LCAxMDIzNDUsIDEwMjM1MywgMTAyMzYxLCAxMDIzNjksIDEwMjM3NywgCisgICAgMTAyMzg1LCAxMDIzOTMsIDEwMjQwMSwgMTAyNDA5LCAxMDI0MTcsIDEwMjQyNSwgMTAyNDMzLCAxMDI0NDEsIDEwMjQ0OSwgCisgICAgMTAyNDU3LCAxMDI0NjUsIDEwMjQ3MywgMTAyNDgxLCAxMDI0ODksIDEwMjQ5NywgMTAyNTA1LCAxMDI1MTMsIDEwMjUyMSwgCisgICAgMTAyNTI5LCAxMDI1MzcsIDEwMjU0NSwgMTAyNTUzLCAxMDI1NjEsIDEwMjU2OSwgMTAyNTc3LCAxMDI1ODUsIDEwMjU5MywgCisgICAgMTAyNjAxLCAxMDI2MDksIDEwMjYxNywgMTAyNjI1LCAxMDI2MzMsIDEwMjY0MSwgMTAyNjQ5LCAxMDI2NTcsIDEwMjY2NSwgCisgICAgMTAyNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjk0NTQsIDEyOTQ1NywgMTI5NDYxLCAxMjk0NjUsIDEyOTQ2OCwgMTI5NDcyLCAxMjk0NzYsIAotICAgIDEyOTQ3OSwgMTI5NDgyLCAxMjk0ODYsIDEyOTQ5MCwgMTI5NDkzLCAxMjk0OTYsIDEyOTQ5OSwgMTI5NTAyLCAxMjk1MDcsIAotICAgIDEyOTUxMCwgMTI5NTE0LCAxMjk1MTcsIDEyOTUyMCwgMTI5NTIzLCAxMjk1MjYsIDEyOTUyOSwgMTI5NTMyLCAxMjk1MzUsIAotICAgIDEyOTUzOCwgMTI5NTQxLCAxMjk1NDQsIDEyOTU0NywgMTI5NTUxLCAxMjk1NTUsIDEyOTU1OSwgMTI5NTYzLCAxMjk1NjgsIAotICAgIDEyOTU3MywgMTI5NTc5LCAxMjk1ODUsIDEyOTU5MSwgMTI5NTk2LCAxMjk2MDIsIDEyOTYwOCwgMTI5NjE0LCAxMjk2MTksIAotICAgIDEyOTYyNSwgMTI5NjMxLCAxMjk2MzYsIDEyOTY0MSwgMTI5NjQ3LCAxMjk2NTIsIDEyOTY1OCwgMTI5NjY0LCAxMjk2NjksIAotICAgIDEyOTY3NSwgMTI5NjgxLCAxMjk2ODYsIDEyOTY5MiwgMTI5Njk4LCAxMjk3MDQsIDEyOTcxMCwgMTI5NzE2LCAxMjk3MjAsIAotICAgIDEyOTcyNSwgMTI5NzI5LCAxMjk3MzQsIDEyOTczOCwgMTI5NzQzLCAxMjk3NDgsIDEyOTc1NCwgMTI5NzYwLCAxMjk3NjYsIAotICAgIDEyOTc3MSwgMTI5Nzc3LCAxMjk3ODMsIDEyOTc4OSwgMTI5Nzk0LCAxMjk4MDAsIDEyOTgwNiwgMTI5ODExLCAxMjk4MTYsIAotICAgIDEyOTgyMiwgMTI5ODI3LCAxMjk4MzMsIDEyOTgzOSwgMTI5ODQ0LCAxMjk4NTAsIDEyOTg1NiwgMTI5ODYxLCAxMjk4NjcsIAotICAgIDEyOTg3MywgMTI5ODc5LCAxMjk4ODUsIDEyOTg5MSwgMTI5ODk2LCAxMjk5MDAsIDEyOTkwNSwgMTI5OTA3LCAxMjk5MTEsIAotICAgIDEyOTkxNCwgMTI5OTE3LCAxMjk5MjAsIDEyOTkyMywgMTI5OTI2LCAxMjk5MjksIDEyOTkzMiwgMTI5OTM1LCAxMjk5MzgsIAotICAgIDEyOTk0MSwgMTI5OTQ0LCAxMjk5NDcsIDEyOTk1MCwgMTI5OTUzLCAxMjk5NTYsIDEyOTk1OSwgMTI5OTYyLCAxMjk5NjUsIAotICAgIDEyOTk2OCwgMTI5OTcxLCAxMjk5NzQsIDEyOTk3NywgMTI5OTgwLCAxMjk5ODMsIDEyOTk4NiwgMTI5OTg5LCAxMjk5OTIsIAotICAgIDEyOTk5NSwgMTI5OTk4LCAxMzAwMDEsIDEzMDAwNCwgMTMwMDA3LCAxMzAwMTAsIDEzMDAxMywgMTMwMDE2LCAxMzAwMTksIAotICAgIDEzMDAyMiwgMTMwMDI1LCAxMzAwMjgsIDEzMDAzMSwgMTMwMDM0LCAxMzAwMzcsIDEzMDA0MCwgMTMwMDQzLCAxMzAwNDYsIAotICAgIDEzMDA0OSwgMTMwMDUyLCAxMzAwNTUsIDEzMDA1OCwgMTMwMDYxLCAxMzAwNjQsIDEzMDA2NywgMTMwMDcwLCAxMzAwNzMsIAotICAgIDEzMDA3NiwgMTMwMDc5LCAxMzAwODIsIDEzMDA4NSwgMTMwMDg4LCAxMzAwOTEsIDEzMDA5NCwgMTMwMDk3LCAxMzAxMDAsIAotICAgIDEzMDEwMywgMTMwMTA2LCAxMzAxMDksIDEzMDExMiwgMTMwMTE1LCAxMzAxMTgsIDEzMDEyMSwgMTMwMTI0LCAxMzAxMjcsIAotICAgIDEzMDEzMCwgMTMwMTMzLCAxMzAxMzYsIDEzMDEzOSwgMTMwMTQyLCAxMzAxNDUsIDEzMDE0OCwgMTMwMTUxLCAxMzAxNTQsIAotICAgIDEzMDE1NywgMTMwMTYwLCAxMzAxNjMsIDEzMDE2NiwgMTMwMTY5LCAxMzAxNzIsIDEzMDE3NSwgMTMwMTc4LCAxMzAxODEsIAotICAgIDEzMDE4NCwgMTMwMTg3LCAxMzAxOTAsIDEzMDE5MywgMTMwMTk2LCAxMzAxOTksIDEzMDIwMiwgMTMwMjA1LCAxMzAyMDgsIAotICAgIDEzMDIxMSwgMTMwMjE0LCAxMzAyMTcsIDEzMDIyMCwgMTMwMjIzLCAxMzAyMjYsIDEzMDIyOSwgMTMwMjMyLCAxMzAyMzUsIAotICAgIDEzMDIzOCwgMTMwMjQxLCAxMzAyNDQsIDEzMDI0NywgMTMwMjUwLCAxMzAyNTMsIDEzMDI1NiwgMTMwMjU5LCAxMzAyNjIsIAotICAgIDEzMDI2NSwgMTMwMjY4LCAxMzAyNzEsIDEzMDI3NCwgMTMwMjc3LCAxMzAyODAsIDEzMDI4MywgMTMwMjg2LCAxMzAyODksIAotICAgIDEzMDI5MiwgMTMwMjk1LCAxMzAyOTgsIDEzMDMwMSwgMTMwMzA0LCAxMzAzMDcsIDEzMDMxMCwgMTMwMzEzLCAxMzAzMTYsIAotICAgIDEzMDMxOSwgMTMwMzIyLCAxMzAzMjUsIDEzMDMyOCwgMTMwMzMxLCAxMzAzMzQsIDEzMDMzNywgMTMwMzQwLCAxMzAzNDMsIAotICAgIDEzMDM0NiwgMTMwMzQ5LCAxMzAzNTIsIDEzMDM1NSwgMTMwMzU4LCAxMzAzNjEsIDEzMDM2NCwgMTMwMzY3LCAxMzAzNzAsIAotICAgIDEzMDM3MywgMTMwMzc2LCAxMzAzNzksIDEzMDM4MiwgMTMwMzg1LCAxMzAzODgsIDEzMDM5MSwgMTMwMzk0LCAxMzAzOTcsIAotICAgIDEzMDQwMCwgMTMwNDAzLCAxMzA0MDYsIDEzMDQwOSwgMTMwNDEyLCAxMzA0MTUsIDEzMDQxOCwgMTMwNDIxLCAxMzA0MjQsIAotICAgIDEzMDQyNywgMTMwNDMwLCAxMzA0MzMsIDEzMDQzNiwgMTMwNDM5LCAxMzA0NDIsIDEzMDQ0NSwgMTMwNDQ4LCAxMzA0NTEsIAotICAgIDEzMDQ1NCwgMTMwNDU3LCAxMzA0NjAsIDEzMDQ2MywgMTMwNDY2LCAxMzA0NjksIDEzMDQ3MiwgMTMwNDc1LCAxMzA0NzgsIAotICAgIDEzMDQ4MSwgMTMwNDg0LCAxMzA0ODcsIDEzMDQ5MCwgMTMwNDkzLCAxMzA0OTYsIDEzMDQ5OSwgMTMwNTAyLCAxMzA1MDUsIAotICAgIDEzMDUwOCwgMTMwNTExLCAxMzA1MTQsIDEzMDUxNywgMTMwNTIwLCAxMzA1MjMsIDEzMDUyNiwgMTMwNTI5LCAxMzA1MzIsIAotICAgIDEzMDUzNSwgMTMwNTM4LCAxMzA1NDEsIDEzMDU0NCwgMTMwNTQ3LCAxMzA1NTAsIDEzMDU1MywgMTMwNTU2LCAxMzA1NTksIAotICAgIDEzMDU2MiwgMTMwNTY1LCAxMzA1NjgsIDEzMDU3MSwgMTMwNTc0LCAxMzA1NzcsIDEzMDU4MCwgMTMwNTgzLCAxMzA1ODYsIAotICAgIDEzMDU4OSwgMTMwNTkyLCAxMzA1OTUsIDEzMDU5OCwgMTMwNjAxLCAxMzA2MDQsIDEzMDYwNywgMTMwNjEwLCAxMzA2MTMsIAotICAgIDEzMDYxNiwgMTMwNjE5LCAxMzA2MjIsIDEzMDYyNSwgMTMwNjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzA2MzEsIDEzMDYzMywgMTMwNjM1LCAxMzA2NDAsIDEzMDY0MiwgMTMwNjQ3LCAxMzA2NDksIAotICAgIDEzMDY1NCwgMTMwNjU2LCAxMzA2NjEsIDEzMDY2MywgMTMwNjY1LCAxMzA2NjcsIDEzMDY2OSwgMTMwNjcxLCAxMzA2NzMsIAotICAgIDEzMDY3NSwgMTMwNjc3LCAxMzA2NzksIDEzMDY4MiwgMTMwNjg1LCAxMzA2ODcsIDEzMDY4OSwgMTMwNjkzLCAxMzA2OTYsIAotICAgIDEzMDcwMSwgMTMwNzAzLCAxMzA3MDUsIDEzMDcwNywgMTMwNzExLCAxMzA3MTQsIDEzMDcxNiwgMTMwNzIwLCAxMzA3MjIsIAotICAgIDEzMDcyNiwgMTMwNzI4LCAxMzA3MzIsIDEzMDczNSwgMTMwNzM3LCAxMzA3NDEsIDEzMDc0NSwgMTMwNzQ3LCAxMzA3NTMsIAotICAgIDEzMDc1NSwgMTMwNzYwLCAxMzA3NjIsIDEzMDc2NywgMTMwNzY5LCAxMzA3NzQsIDEzMDc3NiwgMTMwNzgxLCAxMzA3ODMsIAotICAgIDEzMDc4NiwgMTMwNzg4LCAxMzA3OTIsIDEzMDc5NCwgMTMwODAxLCAxMzA4MDMsIDEzMDgwNSwgMTMwODA3LCAxMzA4MTIsIAotICAgIDEzMDgxNCwgMTMwODE2LCAxMzA4MTgsIDEzMDgyMCwgMTMwODIyLCAxMzA4MjcsIDEzMDgzMSwgMTMwODMzLCAxMzA4MzgsIAotICAgIDEzMDg0MiwgMTMwODQ0LCAxMzA4NDksIDEzMDg1MywgMTMwODU1LCAxMzA4NjAsIDEzMDg2NCwgMTMwODY2LCAxMzA4NjgsIAotICAgIDEzMDg3MCwgMTMwODcyLCAxMzA4NzYsIDEzMDg3OCwgMTMwODgzLCAxMzA4ODUsIDEzMDg5MSwgMTMwODkzLCAxMzA4OTksIAotICAgIDEzMDkwMSwgMTMwOTAzLCAxMzA5MDUsIDEzMDkwOSwgMTMwOTExLCAxMzA5MTgsIDEzMDkyMCwgMTMwOTI3LCAxMzA5MjksIAotICAgIDEzMDkzNCwgMTMwOTM5LCAxMzA5NDEsIDEzMDk0NywgMTMwOTUzLCAxMzA5NTUsIDEzMDk2MSwgMTMwOTY2LCAxMzA5NjgsIAotICAgIDEzMDk3NCwgMTMwOTgwLCAxMzA5ODIsIDEzMDk4OCwgMTMwOTk0LCAxMzA5OTYsIDEzMTAwMiwgMTMxMDA2LCAxMzEwMDgsIAotICAgIDEzMTAxMywgMTMxMDE1LCAxMzEwMTcsIDEzMTAyMiwgMTMxMDI0LCAxMzEwMjYsIDEzMTAzMiwgMTMxMDM0LCAxMzEwMzksIAotICAgIDEzMTA0MywgMTMxMDQ1LCAxMzEwNTAsIDEzMTA1NCwgMTMxMDU2LCAxMzEwNjIsIDEzMTA2NCwgMTMxMDY4LCAxMzEwNzAsIAotICAgIDEzMTA3NCwgMTMxMDc2LCAxMzEwODMsIDEzMTA5MCwgMTMxMDkyLCAxMzEwOTksIDEzMTEwNiwgMTMxMTA4LCAxMzExMTMsIAotICAgIDEzMTExNSwgMTMxMTIyLCAxMzExMjQsIDEzMTEyOSwgMTMxMTMxLCAxMzExMzcsIDEzMTEzOSwgMTMxMTQzLCAxMzExNDUsIAotICAgIDEzMTE1MSwgMTMxMTUzLCAxMzExNTcsIDEzMTE1OSwgMTMxMTY1LCAxMzExNjcsIDEzMTE2OSwgMTMxMTcxLCAxMzExNzYsIAotICAgIDEzMTE4MSwgMTMxMTgzLCAxMzExODUsIDEzMTE5NCwgMTMxMTk4LCAxMzEyMDUsIDEzMTIxMiwgMTMxMjE3LCAxMzEyMjIsIAotICAgIDEzMTIzNCwgMTMxMjM2LCAxMzEyMzgsIDEzMTI0MCwgMTMxMjQyLCAxMzEyNDQsIDEzMTI0NiwgMTMxMjQ4LCAxMzEyNTAsIAotICAgIDEzMTI1MiwgMTMxMjU0LCAxMzEyNTYsIDEzMTI1OCwgMTMxMjYwLCAxMzEyNjIsIDEzMTI2NCwgMTMxMjY2LCAxMzEyNjgsIAotICAgIDEzMTI3MCwgMTMxMjcyLCAxMzEyNzQsIDEzMTI3NiwgMTMxMjgyLCAxMzEyODksIDEzMTI5NCwgMTMxMjk5LCAxMzEzMTAsIAotICAgIDEzMTMxMiwgMTMxMzE0LCAxMzEzMTYsIDEzMTMxOCwgMTMxMzIwLCAxMzEzMjIsIDEzMTMyNCwgMTMxMzI2LCAxMzEzMjgsIAotICAgIDEzMTMzMCwgMTMxMzMyLCAxMzEzMzQsIDEzMTMzNiwgMTMxMzM4LCAxMzEzNDAsIDEzMTM0MiwgMTMxMzQ3LCAxMzEzNDksIAotICAgIDEzMTM1MSwgMTMxMzU3LCAxMzEzNjksIDEzMTM4MCwgMTMxMzgyLCAxMzEzODQsIDEzMTM4NiwgMTMxMzg4LCAxMzEzOTAsIAotICAgIDEzMTM5MiwgMTMxMzk0LCAxMzEzOTYsIDEzMTM5OCwgMTMxNDAwLCAxMzE0MDIsIDEzMTQwNCwgMTMxNDA2LCAxMzE0MDgsIAotICAgIDEzMTQxMCwgMTMxNDEyLCAxMzE0MTQsIDEzMTQxNiwgMTMxNDE4LCAxMzE0MjAsIDEzMTQyMiwgMTMxNDI0LCAxMzE0MjYsIAotICAgIDEzMTQyOCwgMTMxNDMwLCAxMzE0MzIsIDEzMTQzNCwgMTMxNDM2LCAxMzE0MzgsIDEzMTQ0MCwgMTMxNDQyLCAxMzE0NDQsIAotICAgIDEzMTQ0NiwgMTMxNDQ4LCAxMzE0NTAsIDEzMTQ1MiwgMTMxNDU0LCAxMzE0NTYsIDEzMTQ1OCwgMTMxNDYwLCAxMzE0NjIsIAotICAgIDEzMTQ2NCwgMTMxNDY2LCAxMzE0NjgsIDEzMTQ3MCwgMTMxNDcyLCAxMzE0NzQsIDEzMTQ3NiwgMTMxNDc4LCAxMzE0ODAsIAotICAgIDEzMTQ4MiwgMTMxNDg0LCAxMzE0ODYsIDEzMTQ4OCwgMTMxNDkwLCAxMzE0OTIsIDEzMTQ5NCwgMTMxNDk2LCAxMzE0OTgsIAotICAgIDEzMTUwMCwgMTMxNTAyLCAxMzE1MDQsIDEzMTUwNiwgMTMxNTA4LCAxMzE1MTAsIDEzMTUxMiwgMTMxNTE0LCAxMzE1MTYsIAotICAgIDEzMTUxOCwgMTMxNTIwLCAxMzE1MjIsIDEzMTUyNCwgMTMxNTI2LCAxMzE1MjgsIDEzMTUzMCwgMTMxNTMyLCAxMzE1MzQsIAotICAgIDEzMTUzNiwgMTMxNTM4LCAxMzE1NDAsIDEzMTU0MiwgMTMxNTQ0LCAxMzE1NDYsIDEzMTU0OCwgMTMxNTUwLCAxMzE1NTIsIAotICAgIDEzMTU1NCwgMTMxNTU2LCAxMzE1NTgsIDEzMTU2MCwgMTMxNTYyLCAxMzE1NjQsIDEzMTU2NiwgMTMxNTY4LCAxMzE1NzAsIAotICAgIDEzMTU3MiwgMTMxNTc0LCAxMzE1NzYsIDEzMTU3OCwgMTMxNTgwLCAxMzE1ODIsIDEzMTU4NCwgMTMxNTg2LCAxMzE1ODgsIAotICAgIDEzMTU5MCwgMTMxNTkyLCAxMzE1OTQsIDEzMTU5NiwgMTMxNTk4LCAxMzE2MDAsIDEzMTYwMiwgMTMxNjA0LCAxMzE2MDYsIAotICAgIDEzMTYwOCwgMTMxNjEwLCAxMzE2MTIsIDEzMTYxNCwgMTMxNjE2LCAxMzE2MTgsIDEzMTYyMCwgMTMxNjIyLCAxMzE2MjQsIAotICAgIDEzMTYyNiwgMTMxNjI4LCAxMzE2MzAsIDEzMTYzMiwgMTMxNjM0LCAxMzE2MzYsIDEzMTYzOCwgMTMxNjQwLCAxMzE2NDIsIAotICAgIDEzMTY0NCwgMTMxNjQ2LCAxMzE2NDgsIDEzMTY1MCwgMTMxNjUyLCAxMzE2NTQsIDEzMTY1NiwgMTMxNjU4LCAxMzE2NjAsIAotICAgIDEzMTY2MiwgMTMxNjY0LCAxMzE2NjYsIDEzMTY2OCwgMTMxNjcwLCAxMzE2NzIsIDEzMTY3NCwgMTMxNjc2LCAxMzE2NzgsIAotICAgIDEzMTY4MCwgMTMxNjgyLCAxMzE2ODQsIDEzMTY4NiwgMTMxNjg4LCAxMzE2OTAsIDEzMTY5MiwgMTMxNjk0LCAxMzE2OTYsIAotICAgIDEzMTY5OCwgMTMxNzAwLCAxMzE3MDIsIDEzMTcwNCwgMTMxNzA2LCAxMzE3MDgsIDEzMTcxMCwgMTMxNzEyLCAxMzE3MTQsIAotICAgIDEzMTcxNiwgMTMxNzE4LCAxMzE3MjAsIDEzMTcyMiwgMTMxNzI0LCAxMzE3MjYsIDEzMTcyOCwgMTMxNzMwLCAxMzE3MzIsIAotICAgIDEzMTczNCwgMTMxNzM2LCAxMzE3MzgsIDEzMTc0MCwgMTMxNzQyLCAxMzE3NDQsIDEzMTc0NiwgMTMxNzQ4LCAxMzE3NTAsIAotICAgIDEzMTc1MiwgMTMxNzU0LCAxMzE3NTYsIDEzMTc1OCwgMTMxNzYwLCAxMzE3NjIsIDEzMTc2NCwgMTMxNzY2LCAxMzE3NjgsIAotICAgIDEzMTc3MCwgMTMxNzcyLCAxMzE3NzQsIDEzMTc3NiwgMTMxNzc4LCAxMzE3ODAsIDEzMTc4MiwgMTMxNzg0LCAxMzE3ODYsIAotICAgIDEzMTc4OCwgMTMxNzkwLCAxMzE3OTIsIDEzMTc5NCwgMTMxNzk2LCAxMzE3OTgsIDEzMTgwMCwgMTMxODAyLCAxMzE4MDQsIAotICAgIDEzMTgwNiwgMTMxODA4LCAxMzE4MTAsIDEzMTgxMiwgMTMxODE0LCAxMzE4MTYsIDEzMTgxOCwgMTMxODIwLCAxMzE4MjIsIAotICAgIDEzMTgyNCwgMTMxODI2LCAxMzE4MjgsIDEzMTgzMCwgMTMxODMyLCAxMzE4MzQsIDEzMTgzNiwgMTMxODM4LCAxMzE4NDAsIAotICAgIDEzMTg0MiwgMTMxODQ0LCAxMzE4NDYsIDEzMTg0OCwgMTMxODUwLCAxMzE4NTIsIDEzMTg1NCwgMTMxODU2LCAxMzE4NTgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTIsIDEwMjY5OCwgMTAyNzA0LCAKKyAgICAxMDI3MTAsIDEwMjcxNiwgMTAyNzIyLCAxMDI3MjgsIDEwMjczNCwgMTAyNzM5LCAxMDI3NDYsIDEwMjc1MiwgMTAyNzU4LCAKKyAgICAxMDI3NjQsIDEwMjc3MCwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NywgMTAyNzkzLCAxMDI3OTksIDEwMjgwNSwgMTAyODExLCAKKyAgICAxMDI4MTcsIDEwMjgyMywgMTAyODI5LCAxMDI4MzUsIDEwMjg0MSwgMTAyODQ2LCAxMDI4NTIsIDEwMjg2MCwgMTAyODY4LCAKKyAgICAxMDI4NzQsIDEwMjg4MCwgMTAyODg2LCAxMDI4OTIsIDEwMjkwMCwgMTAyOTA2LCAxMDI5MTIsIDEwMjkxOCwgMTAyOTI0LCAKKyAgICAxMDI5MzAsIDEwMjkzNiwgMTAyOTQxLCAxMDI5NDcsIDEwMjk1NSwgMTAyOTYzLCAxMDI5NjksIDEwMjk3NSwgMTAyOTgxLCAKKyAgICAxMDI5ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIAorICAgIDEwMzAxMSwgMTAzMDE3LCAxMDMwMjMsIDEwMzAyOSwgMTAzMDM1LCAxMDMwNDEsIDEwMzA0NywgMTAzMDUyLCAxMDMwNTksIAorICAgIDEwMzA2NSwgMTAzMDcxLCAxMDMwNzcsIDEwMzA4MywgMTAzMDg5LCAxMDMwOTQsIDEwMzEwMCwgMTAzMTA2LCAxMDMxMTIsIAorICAgIDEwMzExOCwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQyLCAxMDMxNDgsIDEwMzE1NCwgMTAzMTU5LCAxMDMxNjUsIAorICAgIDEwMzE3MywgMTAzMTgxLCAxMDMxODcsIDEwMzE5MywgMTAzMTk5LCAxMDMyMDUsIDEwMzIxMywgMTAzMjE5LCAxMDMyMjUsIAorICAgIDEwMzIzMSwgMTAzMjM3LCAxMDMyNDMsIDEwMzI0OSwgMTAzMjU0LCAxMDMyNjAsIDEwMzI2OCwgMTAzMjc2LCAxMDMyODIsIAorICAgIDEwMzI4OCwgMTAzMjk0LCAxMDMzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMwNywgMTAzMzExLCAxMDMzMTUsIAorICAgIDEwMzMyMCwgMTAzMzI1LCAxMDMzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTg2MCwgMTMxODcwLCAxMzE4ODAsIDEzMTg4OSwgMTMxODk4LCAxMzE5MTEsIAotICAgIDEzMTkyNCwgMTMxOTM2LCAxMzE5NDgsIDEzMTk1OCwgMTMxOTY4LCAxMzE5NzgsIDEzMTk4OCwgMTMxOTk5LCAxMzIwMTAsIAotICAgIDEzMjAyMCwgMTMyMDI5LCAxMzIwMzgsIDEzMjA0NywgMTMyMDYwLCAxMzIwNzMsIDEzMjA4NSwgMTMyMDk3LCAxMzIxMDcsIAotICAgIDEzMjExNywgMTMyMTI3LCAxMzIxMzcsIDEzMjE0NiwgMTMyMTU1LCAxMzIxNjQsIDEzMjE3MywgMTMyMTgyLCAxMzIxOTEsIAotICAgIDEzMjIwMCwgMTMyMjA5LCAxMzIyMTgsIDEzMjIyNywgMTMyMjM2LCAxMzIyNDUsIDEzMjI1NiwgMTMyMjY2LCAxMzIyNzYsIAotICAgIDEzMjI4OSwgMTMyMjk5LCAxMzIzMTIsIDEzMjMxOSwgMTMyMzI5LCAxMzIzMzYsIDEzMjM0MywgMTMyMzUwLCAxMzIzNTcsIAotICAgIDEzMjM2NCwgMTMyMzcxLCAxMzIzODAsIDEzMjM4OSwgMTMyMzk4LCAxMzI0MDcsIDEzMjQxNiwgMTMyNDI1LCAxMzI0MzQsIAotICAgIDEzMjQ0MywgMTMyNDUxLCAxMzI0NTksIDEzMjQ2NiwgMTMyNDc2LCAxMzI0ODUsIDEzMjQ5MywgMTMyNTAwLCAxMzI1MTAsIAotICAgIDEzMjUxOSwgMTMyNTI5LCAxMzI1MzksIDEzMjU1MCwgMTMyNTYwLCAxMzI1NjksIDEzMjU3OSwgMTMyNTg4LCAxMzI1OTgsIAotICAgIDEzMjYwNiwgMTMyNjEwLCAxMzI2MTQsIDEzMjYxOCwgMTMyNjIyLCAxMzI2MjYsIDEzMjYzMCwgMTMyNjM0LCAxMzI2MzgsIAotICAgIDEzMjY0MiwgMTMyNjQ2LCAxMzI2NDksIDEzMjY1MywgMTMyNjU2LCAxMzI2NTksIDEzMjY2MywgMTMyNjY3LCAxMzI2NzEsIAotICAgIDEzMjY3NSwgMTMyNjc5LCAxMzI2ODMsIDEzMjY4NywgMTMyNjkxLCAxMzI2OTUsIDEzMjY5OSwgMTMyNzAzLCAxMzI3MDcsIAotICAgIDEzMjcxMSwgMTMyNzE1LCAxMzI3MTksIDEzMjcyMywgMTMyNzI3LCAxMzI3MzEsIDEzMjczNSwgMTMyNzM5LCAxMzI3NDMsIAotICAgIDEzMjc0NywgMTMyNzUxLCAxMzI3NTUsIDEzMjc1OSwgMTMyNzYzLCAxMzI3NjcsIDEzMjc3MSwgMTMyNzc1LCAxMzI3NzksIAotICAgIDEzMjc4MywgMTMyNzg3LCAxMzI3OTEsIDEzMjc5NSwgMTMyNzk5LCAxMzI4MDMsIDEzMjgwNywgMTMyODExLCAxMzI4MTUsIAotICAgIDEzMjgxOSwgMTMyODIzLCAxMzI4MjcsIDEzMjgzMSwgMTMyODM1LCAxMzI4MzksIDEzMjg0MywgMTMyODQ3LCAxMzI4NTEsIAotICAgIDEzMjg1NSwgMTMyODU5LCAxMzI4NjMsIDEzMjg2NywgMTMyODcxLCAxMzI4NzUsIDEzMjg3OSwgMTMyODgzLCAxMzI4ODcsIAotICAgIDEzMjg5MSwgMTMyODk1LCAxMzI4OTksIDEzMjkwMywgMTMyOTA3LCAxMzI5MTEsIDEzMjkxNSwgMTMyOTE5LCAxMzI5MjMsIAotICAgIDEzMjkyNywgMTMyOTMxLCAxMzI5MzUsIDEzMjkzOSwgMTMyOTQzLCAxMzI5NDcsIDEzMjk1MSwgMTMyOTU1LCAxMzI5NTksIAotICAgIDEzMjk2MywgMTMyOTY3LCAxMzI5NzEsIDEzMjk3NSwgMTMyOTc5LCAxMzI5ODMsIDEzMjk4NywgMTMyOTkxLCAxMzI5OTUsIAotICAgIDEzMjk5OSwgMTMzMDAyLCAxMzMwMDYsIDEzMzAxMCwgMTMzMDE0LCAxMzMwMTgsIDEzMzAyMiwgMTMzMDI2LCAxMzMwMzAsIAotICAgIDEzMzAzNCwgMTMzMDM4LCAxMzMwNDIsIDEzMzA0NiwgMTMzMDUwLCAxMzMwNTQsIDEzMzA1OCwgMTMzMDYyLCAxMzMwNjYsIAotICAgIDEzMzA3MCwgMTMzMDc0LCAxMzMwNzgsIDEzMzA4MiwgMTMzMDg2LCAxMzMwOTAsIDEzMzA5NCwgMTMzMDk4LCAxMzMxMDIsIAotICAgIDEzMzEwNiwgMTMzMTEwLCAxMzMxMTQsIDEzMzExOCwgMTMzMTIyLCAxMzMxMjYsIDEzMzEzMCwgMTMzMTM0LCAxMzMxMzgsIAotICAgIDEzMzE0MiwgMTMzMTQ2LCAxMzMxNTAsIDEzMzE1NCwgMTMzMTU4LCAxMzMxNjIsIDEzMzE2NiwgMTMzMTcwLCAxMzMxNzQsIAotICAgIDEzMzE3OCwgMTMzMTgyLCAxMzMxODYsIDEzMzE5MCwgMTMzMTk0LCAxMzMxOTgsIDEzMzIwMiwgMTMzMjA2LCAxMzMyMTAsIAotICAgIDEzMzIxNCwgMTMzMjE4LCAxMzMyMjIsIDEzMzIyNiwgMTMzMjMwLCAxMzMyMzQsIDEzMzIzOCwgMTMzMjQyLCAxMzMyNDYsIAotICAgIDEzMzI1MCwgMTMzMjU0LCAxMzMyNTgsIDEzMzI2MiwgMTMzMjY2LCAxMzMyNzAsIDEzMzI3NCwgMTMzMjc4LCAxMzMyODIsIAotICAgIDEzMzI4NiwgMTMzMjkwLCAxMzMyOTQsIDEzMzI5OCwgMTMzMzAyLCAxMzMzMDYsIDEzMzMxMCwgMTMzMzE0LCAxMzMzMTgsIAotICAgIDEzMzMyMiwgMTMzMzI2LCAxMzMzMzAsIDEzMzMzNCwgMTMzMzM4LCAxMzMzNDIsIDEzMzM0NiwgMTMzMzUwLCAxMzMzNTQsIAotICAgIDEzMzM1OCwgMTMzMzYyLCAxMzMzNjYsIDEzMzM3MCwgMTMzMzc0LCAxMzMzNzgsIDEzMzM4MiwgMTMzMzg2LCAxMzMzOTAsIAotICAgIDEzMzM5NCwgMTMzMzk4LCAxMzM0MDIsIDEzMzQwNiwgMTMzNDEwLCAxMzM0MTQsIDEzMzQxOCwgMTMzNDIyLCAxMzM0MjYsIAotICAgIDEzMzQzMCwgMTMzNDM0LCAxMzM0MzgsIDEzMzQ0MiwgMTMzNDQ2LCAxMzM0NTAsIDEzMzQ1NCwgMTMzNDU4LCAxMzM0NjIsIAotICAgIDEzMzQ2NiwgMTMzNDcwLCAxMzM0NzQsIDEzMzQ3OCwgMTMzNDgyLCAxMzM0ODYsIDEzMzQ5MCwgMTMzNDk0LCAxMzM0OTgsIAotICAgIDEzMzUwMiwgMTMzNTA2LCAxMzM1MTAsIDEzMzUxNCwgMTMzNTE4LCAxMzM1MjIsIDEzMzUyNiwgMTMzNTMwLCAxMzM1MzQsIAotICAgIDEzMzUzOCwgMTMzNTQyLCAxMzM1NDYsIDEzMzU1MCwgMTMzNTU0LCAxMzM1NTgsIDEzMzU2MiwgMTMzNTY2LCAxMzM1NzAsIAotICAgIDEzMzU3NCwgMTMzNTc4LCAxMzM1ODIsIDEzMzU4NiwgMTMzNTkwLCAxMzM1OTQsIDEzMzU5OCwgMTMzNjAyLCAxMzM2MDYsIAotICAgIDEzMzYxMCwgMTMzNjE0LCAxMzM2MTgsIDEzMzYyMiwgMTMzNjI2LCAxMzM2MzAsIDEzMzYzNCwgMTMzNjM4LCAxMzM2NDIsIAotICAgIDEzMzY0NiwgMTMzNjUwLCAxMzM2NTQsIDEzMzY1OCwgMTMzNjYyLCAxMzM2NjYsIDEzMzY3MCwgMTMzNjc0LCAxMzM2NzgsIAotICAgIDEzMzY4MiwgMTMzNjg2LCAxMzM2OTAsIDEzMzY5NCwgMTMzNjk4LCAxMzM3MDIsIDEzMzcwNiwgMTMzNzEwLCAxMzM3MTQsIAotICAgIDEzMzcxOCwgMTMzNzIyLCAxMzM3MjYsIDEzMzczMCwgMTMzNzM0LCAxMzM3MzgsIDEzMzc0MiwgMTMzNzQ2LCAxMzM3NTAsIAotICAgIDEzMzc1NCwgMTMzNzU4LCAxMzM3NjIsIDEzMzc2NiwgMTMzNzcxLCAxMzM3NzYsIDEzMzc4MSwgMTMzNzg1LCAxMzM3OTEsIAotICAgIDEzMzc5OCwgMTMzODA1LCAxMzM4MTIsIDEzMzgxOSwgMTMzODI2LCAxMzM4MzMsIDEzMzg0MCwgMTMzODQ3LCAxMzM4NTQsIAotICAgIDEzMzg2MSwgMTMzODY4LCAxMzM4NzUsIDEzMzg4MiwgMTMzODg4LCAxMzM4OTUsIDEzMzkwMiwgMTMzOTA4LCAxMzM5MTUsIAotICAgIDEzMzkyMiwgMTMzOTI5LCAxMzM5MzYsIDEzMzk0MywgMTMzOTUwLCAxMzM5NTcsIDEzMzk2NCwgMTMzOTcxLCAxMzM5NzgsIAotICAgIDEzMzk4NSwgMTMzOTkyLCAxMzM5OTksIDEzNDAwNSwgMTM0MDExLCAxMzQwMTgsIDEzNDAyNSwgMTM0MDM0LCAxMzQwNDMsIAotICAgIDEzNDA1MiwgMTM0MDYxLCAxMzQwNjYsIDEzNDA3MSwgMTM0MDc3LCAxMzQwODMsIDEzNDA4OSwgMTM0MDk1LCAxMzQxMDEsIAotICAgIDEzNDEwNywgMTM0MTEzLCAxMzQxMTksIDEzNDEyNSwgMTM0MTMxLCAxMzQxMzcsIDEzNDE0MywgMTM0MTQ4LCAxMzQxNTQsIAotICAgIDEzNDE2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzM3LCAxMDMzNDEsIDEwMzM0NSwgMTAzMzQ5LCAxMDMzNTMsIDEwMzM1NywgCisgICAgMTAzMzYxLCAxMDMzNjYsIDEwMzM3MCwgMTAzMzc1LCAxMDMzODAsIDEwMzM4NSwgMTAzMzkwLCAxMDMzOTUsIDEwMzQwMCwgCisgICAgMTAzNDA1LCAxMDM0MTAsIDEwMzQxNSwgMTAzNDIwLCAxMDM0MjYsIDEwMzQzMiwgMTAzNDM4LCAxMDM0NDUsIDEwMzQ1MiwgCisgICAgMTAzNDU5LCAxMDM0NjYsIDEwMzQ3MywgMTAzNDgwLCAxMDM0ODcsIDEwMzQ5NCwgMTAzNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDM1MDgsIDEwMzUxMiwgMTAzNTE2LCAxMDM1MjAsIDEwMzUyNCwgMTAzNTI4LCAxMDM1MzEsIDEwMzUzNSwgCisgICAgMTAzNTM4LCAxMDM1NDIsIDEwMzU0NSwgMTAzNTQ5LCAxMDM1NTMsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjcsIDEwMzU3MCwgCisgICAgMTAzNTc0LCAxMDM1NzcsIDEwMzU4MSwgMTAzNTg0LCAxMDM1ODgsIDEwMzU5MiwgMTAzNTk2LCAxMDM2MDAsIDEwMzYwNCwgCisgICAgMTAzNjA4LCAxMDM2MTIsIDEwMzYxNiwgMTAzNjIwLCAxMDM2MjQsIDEwMzYyOCwgMTAzNjMyLCAxMDM2MzYsIDEwMzY0MCwgCisgICAgMTAzNjQ0LCAxMDM2NDgsIDEwMzY1MiwgMTAzNjU2LCAxMDM2NjAsIDEwMzY2MywgMTAzNjY3LCAxMDM2NzEsIDEwMzY3NSwgCisgICAgMTAzNjc4LCAxMDM2ODEsIDEwMzY4NSwgMTAzNjg5LCAxMDM2OTMsIDEwMzY5NywgMTAzNzAxLCAxMDM3MDUsIDEwMzcwOCwgCisgICAgMTAzNzEyLCAxMDM3MTgsIDEwMzcyNCwgMTAzNzMwLCAxMDM3MzUsIDEwMzc0MiwgMTAzNzQ2LCAxMDM3NTEsIDEwMzc1NSwgCisgICAgMTAzNzYwLCAxMDM3NjUsIDEwMzc3MSwgMTAzNzc2LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkxLCAxMDM3OTUsIDEwMzgwMCwgCisgICAgMTAzODAzLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE1LCAxMDM4MjEsIDEwMzgyNiwgMTAzODMyLCAwLCAwLCAwLCAwLCAKKyAgICAxMDM4MzcsIDEwMzg0MCwgMTAzODQzLCAxMDM4NDYsIDEwMzg0OSwgMTAzODUyLCAxMDM4NTUsIDEwMzg1OSwgMTAzODYyLCAKKyAgICAxMDM4NjYsIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAKKyAgICAxMDM5MDIsIDEwMzkwNywgMTAzOTEyLCAxMDM5MTYsIDEwMzkxOSwgMTAzOTIyLCAxMDM5MjUsIDEwMzkyOCwgMTAzOTMxLCAKKyAgICAxMDM5MzQsIDEwMzkzOCwgMTAzOTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDM5NDUsIDEwMzk0OSwgMTAzOTU0LCAxMDM5NTksIDEwMzk2NCwgMTAzOTY4LCAxMDM5NzMsIDEwMzk3NywgMTAzOTgyLCAKKyAgICAxMDM5ODYsIDEwMzk5MSwgMTAzOTk1LCAxMDQwMDAsIDEwNDAwNCwgMTA0MDA5LCAxMDQwMTMsIDEwNDAxOCwgMTA0MDIzLCAKKyAgICAxMDQwMjgsIDEwNDAzMywgMTA0MDM4LCAxMDQwNDMsIDEwNDA0OCwgMTA0MDUzLCAxMDQwNTgsIDEwNDA2MywgMTA0MDY4LCAKKyAgICAxMDQwNzMsIDEwNDA3OCwgMTA0MDgzLCAxMDQwODgsIDEwNDA5MywgMTA0MDk4LCAxMDQxMDMsIDEwNDEwOCwgMTA0MTEzLCAKKyAgICAxMDQxMTgsIDEwNDEyMiwgMTA0MTI3LCAxMDQxMzIsIDEwNDEzNywgMTA0MTQxLCAxMDQxNDUsIDEwNDE1MCwgMTA0MTU1LCAKKyAgICAxMDQxNjAsIDEwNDE2NSwgMTA0MTcwLCAxMDQxNzUsIDEwNDE3OSwgMTA0MTg1LCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAxLCAKKyAgICAxMDQyMDcsIDEwNDIxMiwgMTA0MjE4LCAxMDQyMjMsIDEwNDIyOSwgMTA0MjM0LCAxMDQyMzksIDEwNDI0NCwgMTA0MjQ5LCAKKyAgICAxMDQyNTMsIDEwNDI1OCwgMTA0MjY0LCAxMDQyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNDI3MywgMTA0MjgwLCAxMDQyODcsIDEwNDI5NCwgMTA0MzAxLCAxMDQzMDgsIDEwNDMxNSwgMTA0MzIyLCAxMDQzMjksIAorICAgIDEwNDMzNiwgMTA0MzQzLCAxMDQzNTAsIDEwNDM1NywgMTA0MzY0LCAxMDQzNzEsIDEwNDM3OCwgMTA0Mzg1LCAxMDQzOTIsIAorICAgIDEwNDM5OSwgMTA0NDA2LCAxMDQ0MTMsIDEwNDQyMCwgMTA0NDI3LCAxMDQ0MzQsIDEwNDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA0NDQ4LCAxMDQ0NTUsIDEwNDQ2MSwgMTA0NDY3LCAxMDQ0NzMsIDEwNDQ3OSwgMTA0NDg1LCAxMDQ0OTEsIAorICAgIDEwNDQ5OCwgMTA0NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MTEsIDEwNDUxNiwgMTA0NTIxLCAxMDQ1MjYsIDEwNDUzMSwgCisgICAgMTA0NTM1LCAxMDQ1MzksIDEwNDU0MywgMTA0NTQ4LCAxMDQ1NTMsIDEwNDU1OCwgMTA0NTYzLCAxMDQ1NjgsIDEwNDU3MywgCisgICAgMTA0NTc4LCAxMDQ1ODMsIDEwNDU4OCwgMTA0NTkzLCAxMDQ1OTgsIDEwNDYwMywgMTA0NjA4LCAxMDQ2MTMsIDEwNDYxOCwgCisgICAgMTA0NjIzLCAxMDQ2MjgsIDEwNDYzMywgMTA0NjM4LCAxMDQ2NDMsIDEwNDY0OCwgMTA0NjUzLCAxMDQ2NTgsIDEwNDY2MywgCisgICAgMTA0NjY4LCAxMDQ2NzMsIDEwNDY3OCwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MywgMTA0Njk4LCAxMDQ3MDMsIDEwNDcwOCwgCisgICAgMTA0NzEzLCAxMDQ3MTksIDEwNDcyNCwgMTA0NzMwLCAxMDQ3MzUsIDEwNDc0MSwgMTA0NzQ2LCAxMDQ3NTIsIDEwNDc1OCwgCisgICAgMTA0NzYyLCAxMDQ3NjcsIDEwNDc3MSwgMCwgMTA0Nzc1LCAxMDQ3ODAsIDEwNDc4NCwgMTA0Nzg4LCAxMDQ3OTIsIAorICAgIDEwNDc5NiwgMTA0ODAwLCAxMDQ4MDQsIDEwNDgwOSwgMTA0ODEzLCAxMDQ4MTgsIDEwNDgyMywgMTA0ODI3LCAxMDQ4MzIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDgzNywgMTA0ODQxLCAxMDQ4NDUsIDEwNDg0OSwgCisgICAgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MSwgMTA0ODY2LCAxMDQ4NzEsIDEwNDg3NiwgMTA0ODgxLCAxMDQ4ODYsIDEwNDg5MSwgCisgICAgMTA0ODk2LCAxMDQ5MDEsIDEwNDkwNiwgMTA0OTExLCAxMDQ5MTYsIDEwNDkyMSwgMTA0OTI2LCAxMDQ5MzEsIDEwNDkzNiwgCisgICAgMTA0OTQxLCAxMDQ5NDYsIDEwNDk1MSwgMTA0OTU1LCAxMDQ5NjAsIDEwNDk2NSwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OSwgCisgICAgMTA0OTg0LCAxMDQ5ODksIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDMsIDEwNTAwOCwgMTA1MDEzLCAxMDUwMTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTAyMywgMTA1MDI3LCAxMDUwMzEsIDEwNTAzNSwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NSwgCisgICAgMTA1MDQ5LCAxMDUwNTIsIDEwNTA1NiwgMTA1MDYwLCAxMDUwNjUsIDEwNTA2OSwgMTA1MDc0LCAxMDUwNzcsIDEwNTA4MSwgCisgICAgMTA1MDg0LCAxMDUwODgsIDEwNTA5MSwgMTA1MDk1LCAxMDUwOTksIDEwNTEwMywgMTA1MTA3LCAxMDUxMTEsIDEwNTExNSwgCisgICAgMTA1MTE5LCAxMDUxMjMsIDEwNTEyNywgMTA1MTMxLCAxMDUxMzUsIDEwNTEzOSwgMTA1MTQzLCAxMDUxNDcsIDEwNTE1MSwgCisgICAgMTA1MTU1LCAxMDUxNTksIDEwNTE2MywgMTA1MTY3LCAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NSwgCisgICAgMTA1MTg4LCAxMDUxOTIsIDEwNTE5NiwgMTA1MjAwLCAxMDUyMDQsIDEwNTIwOCwgMTA1MjEyLCAxMDUyMTYsIDEwNTIxOSwgCisgICAgMTA1MjI0LCAxMDUyMjgsIDEwNTIzMywgMTA1MjM3LCAxMDUyNDIsIDEwNTI0NywgMTA1MjUzLCAxMDUyNTgsIDEwNTI2NCwgCisgICAgMTA1MjY4LCAxMDUyNzMsIDEwNTI3NywgMTA1MjgyLCAxMDUyODYsIDEwNTI5MCwgMTA1Mjk0LCAxMDUyOTgsIDEwNTMwMSwgCisgICAgMTA1MzA0LCAxMDUzMDgsIDEwNTMxMiwgMTA1MzE1LCAxMDUzMTksIDEwNTMyMywgMTA1MzI3LCAxMDUzMzQsIDAsIDAsIAorICAgIDEwNTMzOCwgMTA1MzQyLCAxMDUzNDUsIDEwNTM0OCwgMTA1MzUxLCAxMDUzNTQsIDEwNTM1NywgMTA1MzYwLCAxMDUzNjQsIAorICAgIDEwNTM2NywgMTA1MzcxLCAxMDUzNzQsIDEwNTM3OCwgMTA1MzgxLCAxMDUzODUsIDEwNTM5MCwgMCwgMTA1Mzk1LCAKKyAgICAxMDU0MDAsIDEwNTQwNSwgMTA1NDEwLCAxMDU0MTUsIDEwNTQyMCwgMTA1NDI1LCAxMDU0MzEsIDEwNTQzNiwgMTA1NDQyLCAKKyAgICAxMDU0NDgsIDEwNTQ1NCwgMTA1NDYwLCAxMDU0NjYsIDEwNTQ3MiwgMTA1NDc4LCAxMDU0ODQsIDEwNTQ5MCwgMTA1NDk2LCAKKyAgICAxMDU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTksIDEwNTUyMywgCisgICAgMTA1NTI3LCAxMDU1MzEsIDEwNTUzNiwgMTA1NTQwLCAxMDU1NDUsIDEwNTU0OSwgMTA1NTU0LCAxMDU1NTksIDEwNTU2NCwgCisgICAgMTA1NTY5LCAxMDU1NzQsIDEwNTU3OSwgMTA1NTg0LCAxMDU1ODksIDAsIDEwNTU5NCwgMTA1NTk5LCAxMDU2MDQsIAorICAgIDEwNTYwOSwgMTA1NjE0LCAxMDU2MTksIDEwNTYyNCwgMTA1NjI5LCAxMDU2MzQsIDEwNTYzOSwgMTA1NjQ0LCAxMDU2NDksIAorICAgIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjMsIDEwNTY2OCwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTEsIAorICAgIDEwNTY5NiwgMTA1NzAxLCAxMDU3MDYsIDEwNTcxMCwgMTA1NzE1LCAxMDU3MjEsIDEwNTcyNiwgMTA1NzMyLCAxMDU3MzcsIAorICAgIDEwNTc0MiwgMTA1NzQ4LCAxMDU3NTMsIDEwNTc1OSwgMTA1NzY0LCAxMDU3NjksIDEwNTc3NCwgMTA1Nzc5LCAxMDU3ODMsIAorICAgIDEwNTc4OCwgMTA1Nzk0LCAxMDU3OTksIDEwNTgwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA1ODEwLCAxMDU4MTQsIDEwNTgxOCwgMTA1ODIyLCAxMDU4MjYsIDEwNTgzMCwgMTA1ODM1LCAwLCAKKyAgICAxMDU4NDAsIDAsIDEwNTg0NSwgMTA1ODUwLCAxMDU4NTUsIDEwNTg2MCwgMCwgMTA1ODY1LCAxMDU4NzAsIDEwNTg3NSwgCisgICAgMTA1ODgwLCAxMDU4ODUsIDEwNTg5MCwgMTA1ODk1LCAxMDU5MDAsIDEwNTkwNSwgMTA1OTEwLCAxMDU5MTUsIDEwNTkyMCwgCisgICAgMTA1OTI1LCAxMDU5MjksIDEwNTkzNCwgMCwgMTA1OTM5LCAxMDU5NDQsIDEwNTk0OCwgMTA1OTUyLCAxMDU5NTcsIAorICAgIDEwNTk2MiwgMTA1OTY3LCAxMDU5NzIsIDEwNTk3NiwgMTA1OTgxLCAxMDU5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTk5MSwgCisgICAgMTA1OTk1LCAxMDYwMDAsIDEwNjAwNCwgMTA2MDA5LCAxMDYwMTMsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjcsIDEwNjAzMSwgCisgICAgMTA2MDM2LCAxMDYwNDAsIDEwNjA0NSwgMTA2MDUwLCAxMDYwNTUsIDEwNjA2MCwgMTA2MDY1LCAxMDYwNzAsIDEwNjA3NSwgCisgICAgMTA2MDgwLCAxMDYwODUsIDEwNjA5MCwgMTA2MDk1LCAxMDYxMDAsIDEwNjEwNSwgMTA2MTEwLCAxMDYxMTUsIDEwNjEyMCwgCisgICAgMTA2MTI1LCAxMDYxMzAsIDEwNjEzNSwgMTA2MTQwLCAxMDYxNDUsIDEwNjE1MCwgMTA2MTU1LCAxMDYxNTksIDEwNjE2NCwgCisgICAgMTA2MTY5LCAxMDYxNzQsIDEwNjE3OSwgMTA2MTgzLCAxMDYxODcsIDEwNjE5MiwgMTA2MTk3LCAxMDYyMDIsIDEwNjIwNywgCisgICAgMTA2MjEyLCAxMDYyMTYsIDEwNjIyMSwgMTA2MjI3LCAxMDYyMzIsIDEwNjIzOCwgMTA2MjQzLCAxMDYyNDksIDEwNjI1NCwgCisgICAgMTA2MjYwLCAxMDYyNjUsIDEwNjI3MSwgMTA2Mjc2LCAwLCAwLCAwLCAwLCAwLCAxMDYyODEsIDEwNjI4NiwgMTA2MjkwLCAKKyAgICAxMDYyOTQsIDEwNjI5OCwgMTA2MzAyLCAxMDYzMDYsIDEwNjMxMCwgMTA2MzE1LCAxMDYzMTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNjMyNCwgMTA2MzMxLCAxMDYzMzYsIDEwNjM0MSwgMCwgMTA2MzQ2LCAxMDYzNTAsIDEwNjM1NSwgMTA2MzU5LCAKKyAgICAxMDYzNjQsIDEwNjM2OCwgMTA2MzczLCAxMDYzNzgsIDAsIDAsIDEwNjM4MywgMTA2Mzg4LCAwLCAwLCAxMDYzOTMsIAorICAgIDEwNjM5OCwgMTA2NDAzLCAxMDY0MDcsIDEwNjQxMiwgMTA2NDE3LCAxMDY0MjIsIDEwNjQyNywgMTA2NDMyLCAxMDY0MzcsIAorICAgIDEwNjQ0MiwgMTA2NDQ3LCAxMDY0NTIsIDEwNjQ1NywgMTA2NDYyLCAxMDY0NjcsIDEwNjQ3MiwgMTA2NDc3LCAxMDY0ODIsIAorICAgIDEwNjQ4NywgMTA2NDkyLCAxMDY0OTcsIDAsIDEwNjUwMiwgMTA2NTA2LCAxMDY1MTEsIDEwNjUxNiwgMTA2NTIxLCAKKyAgICAxMDY1MjUsIDEwNjUyOSwgMCwgMTA2NTM0LCAxMDY1MzksIDAsIDEwNjU0NCwgMTA2NTQ5LCAxMDY1NTQsIDEwNjU1OSwgCisgICAgMTA2NTY0LCAwLCAwLCAxMDY1NjgsIDEwNjU3MywgMTA2NTc4LCAxMDY1ODQsIDEwNjU4OSwgMTA2NTk1LCAxMDY2MDAsIAorICAgIDEwNjYwNiwgMTA2NjEyLCAwLCAwLCAxMDY2MTksIDEwNjYyNSwgMCwgMCwgMTA2NjMxLCAxMDY2MzcsIDEwNjY0MywgMCwgMCwgCisgICAgMTA2NjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTIsIDAsIDAsIDAsIDAsIDAsIDEwNjY1OSwgMTA2NjY0LCAxMDY2NzEsIAorICAgIDEwNjY3OSwgMTA2Njg1LCAxMDY2OTEsIDEwNjY5NywgMCwgMCwgMTA2NzA0LCAxMDY3MTAsIDEwNjcxNSwgMTA2NzIwLCAKKyAgICAxMDY3MjUsIDEwNjczMCwgMTA2NzM1LCAwLCAwLCAwLCAxMDY3NDAsIDEwNjc0NSwgMTA2NzUwLCAxMDY3NTYsIDEwNjc2MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA2NzY3LCAxMDY3NzEsIDEwNjc3NSwgMTA2NzgwLCAxMDY3ODQsIDEwNjc4OSwgMTA2NzkzLCAxMDY3OTgsIAorICAgIDEwNjgwMywgMTA2ODA5LCAxMDY4MTQsIDEwNjgyMCwgMTA2ODI0LCAxMDY4MjksIDEwNjgzMywgMTA2ODM4LCAxMDY4NDIsIAorICAgIDEwNjg0NywgMTA2ODUyLCAxMDY4NTcsIDEwNjg2MiwgMTA2ODY3LCAxMDY4NzIsIDEwNjg3NywgMTA2ODgyLCAxMDY4ODcsIAorICAgIDEwNjg5MiwgMTA2ODk3LCAxMDY5MDIsIDEwNjkwNywgMTA2OTEyLCAxMDY5MTcsIDEwNjkyMiwgMTA2OTI3LCAxMDY5MzIsIAorICAgIDEwNjkzNywgMTA2OTQxLCAxMDY5NDYsIDEwNjk1MSwgMTA2OTU2LCAxMDY5NjAsIDEwNjk2NCwgMTA2OTY5LCAxMDY5NzQsIAorICAgIDEwNjk3OSwgMTA2OTg0LCAxMDY5ODksIDEwNjk5NCwgMTA2OTk4LCAxMDcwMDQsIDEwNzAwOSwgMTA3MDE1LCAxMDcwMjAsIAorICAgIDEwNzAyNiwgMTA3MDMyLCAxMDcwMzksIDEwNzA0NSwgMTA3MDUyLCAxMDcwNTcsIDEwNzA2NCwgMTA3MDcwLCAxMDcwNzUsIAorICAgIDEwNzA4MiwgMTA3MDg4LCAxMDcwOTMsIDEwNzA5OCwgMTA3MTAzLCAxMDcxMDgsIDEwNzExMywgMTA3MTE4LCAxMDcxMjIsIAorICAgIDEwNzEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTMxLCAxMDcxMzYsIDEwNzE0MCwgMTA3MTQ0LCAxMDcxNDgsIAorICAgIDEwNzE1MiwgMTA3MTU2LCAxMDcxNjAsIDEwNzE2NSwgMTA3MTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxNzQsIDEwNzE3NywgMTA3MTgxLCAxMDcxODQsIDEwNzE4OCwgCisgICAgMTA3MTkxLCAxMDcxOTUsIDEwNzE5OSwgMTA3MjA0LCAxMDcyMDgsIDEwNzIxMywgMTA3MjE2LCAxMDcyMjAsIDEwNzIyMywgCisgICAgMTA3MjI3LCAxMDcyMzAsIDEwNzIzNCwgMTA3MjM4LCAxMDcyNDIsIDEwNzI0NiwgMTA3MjUwLCAxMDcyNTQsIDEwNzI1OCwgCisgICAgMTA3MjYyLCAxMDcyNjYsIDEwNzI3MCwgMTA3Mjc0LCAxMDcyNzgsIDEwNzI4MiwgMTA3Mjg2LCAxMDcyOTAsIDEwNzI5NCwgCisgICAgMTA3Mjk4LCAxMDczMDIsIDEwNzMwNiwgMTA3MzA5LCAxMDczMTMsIDEwNzMxNywgMTA3MzIxLCAxMDczMjQsIDEwNzMyNywgCisgICAgMTA3MzMxLCAxMDczMzUsIDEwNzMzOSwgMTA3MzQzLCAxMDczNDcsIDEwNzM1MSwgMTA3MzU0LCAxMDczNTksIDEwNzM2MywgCisgICAgMTA3MzY4LCAxMDczNzIsIDEwNzM3NywgMTA3MzgyLCAwLCAwLCAxMDczODgsIDEwNzM5MiwgMTA3Mzk3LCAxMDc0MDEsIAorICAgIDEwNzQwNiwgMTA3NDEwLCAxMDc0MTQsIDEwNzQxOCwgMTA3NDIyLCAxMDc0MjYsIDEwNzQzMCwgMTA3NDMzLCAxMDc0MzcsIAorICAgIDEwNzQ0MiwgMTA3NDQ2LCAxMDc0NTEsIDEwNzQ1NiwgMTA3NDYxLCAxMDc0NjgsIDEwNzQ4MCwgMTA3NDkyLCAxMDc1MDQsIAorICAgIDEwNzUxNywgMTA3NTMxLCAxMDc1MzgsIDEwNzU0OCwgMTA3NTU2LCAxMDc1NjUsIDEwNzU3NCwgMTA3NTgzLCAxMDc1OTMsIAorICAgIDEwNzYwNCwgMTA3NjE2LCAxMDc2MjMsIDEwNzYzMCwgMTA3NjM4LCAxMDc2NDMsIDEwNzY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA3NjU2LCAxMDc2NjAsIDEwNzY2NSwgMTA3NjY5LCAxMDc2NzQsIDEwNzY3OCwgMTA3NjgzLCAKKyAgICAxMDc2ODgsIDEwNzY5NCwgMTA3Njk5LCAxMDc3MDUsIDEwNzcwOSwgMTA3NzE0LCAxMDc3MTgsIDEwNzcyMywgMTA3NzI3LCAKKyAgICAxMDc3MzIsIDEwNzczNywgMTA3NzQyLCAxMDc3NDcsIDEwNzc1MiwgMTA3NzU3LCAxMDc3NjIsIDEwNzc2NywgMTA3NzcyLCAKKyAgICAxMDc3NzcsIDEwNzc4MiwgMTA3Nzg3LCAxMDc3OTIsIDEwNzc5NywgMTA3ODAyLCAxMDc4MDcsIDEwNzgxMiwgMTA3ODE3LCAKKyAgICAxMDc4MjIsIDEwNzgyNiwgMTA3ODMxLCAxMDc4MzYsIDEwNzg0MSwgMTA3ODQ1LCAxMDc4NDksIDEwNzg1NCwgMTA3ODU5LCAKKyAgICAxMDc4NjQsIDEwNzg2OSwgMTA3ODc0LCAxMDc4NzksIDEwNzg4MywgMTA3ODg4LCAxMDc4OTQsIDEwNzg5OSwgMTA3OTA1LCAKKyAgICAxMDc5MTAsIDEwNzkxNiwgMTA3OTIyLCAxMDc5MjksIDEwNzkzNSwgMTA3OTQyLCAxMDc5NDcsIDEwNzk1MywgMTA3OTU4LCAKKyAgICAxMDc5NjQsIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTg4LCAxMDc5OTMsIDEwNzk5OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MDAzLCAxMDgwMDgsIDEwODAxMiwgMTA4MDE2LCAxMDgwMjAsIDEwODAyNCwgCisgICAgMTA4MDI4LCAxMDgwMzIsIDEwODAzNywgMTA4MDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDgwNDYsIDEwODA1MCwgMTA4MDU1LCAxMDgwNTksIDEwODA2NCwgMTA4MDY4LCAxMDgwNzMsIDEwODA3NywgMTA4MDgyLCAKKyAgICAxMDgwODYsIDEwODA5MSwgMTA4MDk1LCAxMDgxMDAsIDEwODEwNSwgMTA4MTEwLCAxMDgxMTUsIDEwODEyMCwgMTA4MTI1LCAKKyAgICAxMDgxMzAsIDEwODEzNSwgMTA4MTQwLCAxMDgxNDUsIDEwODE1MCwgMTA4MTU1LCAxMDgxNjAsIDEwODE2NSwgMTA4MTcwLCAKKyAgICAxMDgxNzUsIDEwODE4MCwgMTA4MTg1LCAxMDgxOTAsIDEwODE5NCwgMTA4MTk5LCAxMDgyMDQsIDEwODIwOSwgMTA4MjEzLCAKKyAgICAxMDgyMTcsIDEwODIyMiwgMTA4MjI3LCAxMDgyMzIsIDEwODIzNywgMTA4MjQyLCAxMDgyNDYsIDEwODI1MSwgMTA4MjU2LCAKKyAgICAxMDgyNjEsIDEwODI2NywgMTA4MjcyLCAxMDgyNzgsIDEwODI4MywgMTA4Mjg5LCAxMDgyOTQsIDEwODMwMCwgMTA4MzA1LCAKKyAgICAxMDgzMTEsIDEwODMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzIxLCAxMDgzMjYsIDEwODMzMCwgMTA4MzM0LCAKKyAgICAxMDgzMzgsIDEwODM0MiwgMTA4MzQ2LCAxMDgzNTAsIDEwODM1NSwgMTA4MzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgzNjQsIAorICAgIDEwODM2OCwgMTA4MzczLCAxMDgzNzgsIDEwODM4MywgMTA4Mzg4LCAxMDgzOTUsIDEwODM5OSwgMTA4NDA0LCAxMDg0MDksIAorICAgIDEwODQxMywgMTA4NDE4LCAxMDg0MjMsIDEwODQyOCwgMTA4NDMzLCAxMDg0MzgsIDEwODQ0MywgMTA4NDQ4LCAxMDg0NTIsIAorICAgIDEwODQ1NiwgMTA4NDYxLCAxMDg0NjYsIDEwODQ3MSwgMTA4NDc4LCAxMDg0ODMsIDEwODQ4OCwgMCwgMCwgMCwgMTA4NDkzLCAKKyAgICAxMDg1MDAsIDEwODUwNywgMTA4NTE2LCAxMDg1MjEsIDEwODUyNywgMTA4NTMyLCAxMDg1MzgsIDEwODU0MywgMTA4NTQ5LCAKKyAgICAxMDg1NTQsIDEwODU2MCwgMTA4NTY1LCAxMDg1NzEsIDEwODU3NywgMCwgMCwgMCwgMCwgMTA4NTgyLCAxMDg1ODcsIAorICAgIDEwODU5MSwgMTA4NTk1LCAxMDg1OTksIDEwODYwMywgMTA4NjA3LCAxMDg2MTEsIDEwODYxNiwgMTA4NjIwLCAxMDg2MjUsIAorICAgIDEwODYzMCwgMTA4NjM1LCAxMDg2NDEsIDEwODY0NiwgMTA4NjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDg2NTYsIDEwODY2NCwgMTA4NjcxLCAxMDg2NzksIDEwODY4NywgMTA4Njk0LCAxMDg3MDIsIAorICAgIDEwODcxMCwgMTA4NzE4LCAxMDg3MjUsIDEwODczMiwgMTA4NzQwLCAxMDg3NDgsIDEwODc1NiwgMTA4NzY0LCAxMDg3NzIsIAorICAgIDEwODc4MCwgMTA4Nzg4LCAxMDg3OTYsIDEwODgwNCwgMTA4ODEyLCAxMDg4MjAsIDEwODgyOCwgMTA4ODM2LCAxMDg4NDQsIAorICAgIDEwODg1MiwgMTA4ODYwLCAxMDg4NjgsIDEwODg3NiwgMTA4ODg0LCAxMDg4OTIsIDEwODkwMCwgMTA4OTA4LCAxMDg5MTYsIAorICAgIDEwODkyMywgMTA4OTMxLCAxMDg5MzksIDEwODk0NiwgMTA4OTU0LCAxMDg5NjIsIDEwODk3MCwgMTA4OTc3LCAxMDg5ODQsIAorICAgIDEwODk5MiwgMTA5MDAwLCAxMDkwMDgsIDEwOTAxNiwgMTA5MDI0LCAxMDkwMzIsIDEwOTA0MCwgMTA5MDQ4LCAxMDkwNTYsIAorICAgIDEwOTA2NCwgMTA5MDcyLCAxMDkwODAsIDEwOTA4OCwgMTA5MDk2LCAxMDkxMDQsIDEwOTExMiwgMTA5MTIwLCAxMDkxMjgsIAorICAgIDEwOTEzNiwgMTA5MTQ0LCAxMDkxNTIsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzMsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTEsIAorICAgIDEwOTE5NywgMTA5MjAzLCAxMDkyMTAsIDEwOTIxNiwgMTA5MjIzLCAxMDkyMzAsIDEwOTIzNywgMTA5MjQ0LCAxMDkyNTEsIAorICAgIDEwOTI1OCwgMTA5MjY1LCAxMDkyNzIsIDEwOTI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA5Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDkyOTIsIDEwOTMwMCwgMTA5MzA4LCAxMDkzMTcsIDEwOTMyNSwgMTA5MzM0LCAxMDkzNDMsIDEwOTM1MiwgCisgICAgMTA5MzYxLCAxMDkzNjksIDEwOTM3OCwgMTA5Mzg3LCAxMDkzOTYsIDEwOTQwNSwgMTA5NDE0LCAxMDk0MjMsIDEwOTQzMiwgCisgICAgMTA5NDQxLCAxMDk0NTAsIDEwOTQ1OSwgMTA5NDY4LCAxMDk0NzcsIDEwOTQ4NSwgMTA5NDkzLCAxMDk1MDEsIDEwOTUwOSwgCisgICAgMTA5NTE3LCAxMDk1MjYsIDEwOTUzNSwgMTA5NTQ1LCAxMDk1NTUsIDEwOTU2NSwgMTA5NTc1LCAxMDk1ODUsIDEwOTU5NCwgCisgICAgMTA5NjA0LCAxMDk2MTQsIDEwOTYyNCwgMTA5NjM1LCAxMDk2NDUsIDEwOTY1NywgMTA5NjY5LCAxMDk2ODAsIDEwOTY5NCwgCisgICAgMTA5NzA1LCAxMDk3MTUsIDEwOTcyNywgMTA5NzM4LCAxMDk3NDgsIDEwOTc2MCwgMTA5NzcyLCAxMDk3ODMsIDEwOTc5NCwgCisgICAgMTA5ODA0LCAxMDk4MTQsIDEwOTgyNiwgMTA5ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk4NDksIDEwOTg1MiwgCisgICAgMTA5ODU3LCAxMDk4NjMsIDEwOTg3MSwgMTA5ODc2LCAxMDk4ODIsIDEwOTg5MCwgMTA5ODk2LCAxMDk5MDIsIDEwOTkwNiwgCisgICAgMTA5OTEwLCAxMDk5MTcsIDEwOTkyNiwgMTA5OTMzLCAxMDk5NDIsIDEwOTk0OCwgMTA5OTU3LCAxMDk5NjQsIDEwOTk3MSwgCisgICAgMTA5OTc4LCAxMDk5ODgsIDEwOTk5NCwgMTA5OTk4LCAxMTAwMDUsIDExMDAxNCwgMTEwMDI0LCAxMTAwMzEsIDExMDAzOCwgCisgICAgMTEwMDQyLCAxMTAwNDYsIDExMDA1MywgMTEwMDYzLCAxMTAwNjcsIDExMDA3NCwgMTEwMDgxLCAxMTAwODgsIDExMDA5NCwgCisgICAgMTEwMTAxLCAxMTAxMDgsIDExMDExNSwgMTEwMTIyLCAxMTAxMjYsIDExMDEzMCwgMTEwMTM0LCAxMTAxNDEsIDExMDE0NSwgCisgICAgMTEwMTUyLCAxMTAxNTksIDExMDE3MywgMTEwMTgyLCAxMTAxODYsIDExMDE5MCwgMTEwMTk0LCAxMTAyMDEsIDExMDIwNSwgCisgICAgMTEwMjA5LCAxMTAyMTMsIDExMDIyMSwgMTEwMjI5LCAxMTAyNDgsIDExMDI1OCwgMTEwMjc4LCAxMTAyODIsIDExMDI4NiwgCisgICAgMTEwMjkwLCAxMTAyOTQsIDExMDI5OCwgMTEwMzAyLCAxMTAzMDYsIDExMDMxMywgMTEwMzE3LCAxMTAzMjAsIDExMDMyNCwgCisgICAgMTEwMzI4LCAxMTAzMzQsIDExMDM0MSwgMTEwMzUwLCAxMTAzNTQsIDExMDM2MywgMTEwMzcyLCAxMTAzODAsIDExMDM4NCwgCisgICAgMTEwMzkxLCAxMTAzOTUsIDExMDM5OSwgMTEwNDAzLCAxMTA0MDcsIDExMDQxOCwgMTEwNDI3LCAxMTA0MzYsIDExMDQ0NSwgCisgICAgMTEwNDU0LCAxMTA0NjYsIDExMDQ3NSwgMTEwNDg0LCAxMTA0OTMsIDExMDUwMSwgMTEwNTEwLCAxMTA1MjIsIDExMDUzMSwgCisgICAgMTEwNTQwLCAxMTA1NDksIDExMDU2MSwgMTEwNTcwLCAxMTA1NzksIDExMDU5MSwgMTEwNjAwLCAxMTA2MDksIDExMDYyMSwgCisgICAgMTEwNjMwLCAxMTA2MzQsIDExMDYzOCwgMTEwNjQyLCAxMTA2NDYsIDExMDY1MCwgMTEwNjU0LCAxMTA2NTgsIDExMDY2NSwgCisgICAgMTEwNjY5LCAxMTA2NzMsIDExMDY4NCwgMTEwNjg4LCAxMTA2OTIsIDExMDY5OSwgMTEwNzA1LCAxMTA3MTEsIDExMDcxNSwgCisgICAgMTEwNzIyLCAxMTA3MjYsIDExMDczMCwgMTEwNzM0LCAxMTA3MzgsIDExMDc0MiwgMTEwNzQ2LCAxMTA3NTIsIDExMDc2MCwgCisgICAgMTEwNzY0LCAxMTA3NjgsIDExMDc3MSwgMTEwNzc3LCAxMTA3ODcsIDExMDc5MSwgMTEwODAzLCAxMTA4MTAsIDExMDgxNywgCisgICAgMTEwODI0LCAxMTA4MzEsIDExMDgzNywgMTEwODQxLCAxMTA4NDUsIDExMDg0OSwgMTEwODUzLCAxMTA4NjAsIDExMDg2OSwgCisgICAgMTEwODc2LCAxMTA4ODQsIDExMDg5MiwgMTEwODk4LCAxMTA5MDIsIDExMDkwNiwgMTEwOTEwLCAxMTA5MTQsIDExMDkyMCwgCisgICAgMTEwOTI5LCAxMTA5NDEsIDExMDk0OCwgMTEwOTU1LCAxMTA5NjQsIDExMDk3NSwgMTEwOTgxLCAxMTA5OTAsIDExMDk5OSwgCisgICAgMTExMDA2LCAxMTEwMTUsIDExMTAyMiwgMTExMDI5LCAxMTEwMzksIDExMTA0NiwgMTExMDUzLCAxMTEwNjAsIDExMTA2NywgCisgICAgMTExMDcxLCAxMTEwNzcsIDExMTA4MSwgMTExMDkyLCAxMTExMDAsIDExMTEwOSwgMTExMTIxLCAxMTExMjgsIDExMTEzNSwgCisgICAgMTExMTQ1LCAxMTExNTIsIDExMTE2MiwgMTExMTY5LCAxMTExNzksIDExMTE4NiwgMTExMTkzLCAxMTEyMDMsIDExMTIxMCwgCisgICAgMTExMjE3LCAxMTEyMjcsIDExMTIzNCwgMTExMjQ2LCAxMTEyNTUsIDExMTI2MiwgMTExMjY5LCAxMTEyNzYsIDExMTI4NSwgCisgICAgMTExMjk1LCAxMTEzMDgsIDExMTMxNSwgMTExMzI1LCAxMTEzMzUsIDExMTM0MiwgMTExMzUxLCAxMTEzNjQsIDExMTM3MSwgCisgICAgMTExMzc4LCAxMTEzODUsIDExMTM5NSwgMTExNDA1LCAxMTE0MTIsIDExMTQyMiwgMTExNDI5LCAxMTE0MzYsIDExMTQ0NiwgCisgICAgMTExNDUyLCAxMTE0NTksIDExMTQ2NiwgMTExNDczLCAxMTE0ODMsIDExMTQ5MCwgMTExNDk3LCAxMTE1MDQsIDExMTUxMCwgCisgICAgMTExNTE3LCAxMTE1MjcsIDExMTUzNCwgMTExNTM4LCAxMTE1NDYsIDExMTU1MCwgMTExNTYyLCAxMTE1NjYsIDExMTU4MCwgCisgICAgMTExNTg0LCAxMTE1ODgsIDExMTU5MiwgMTExNTk2LCAxMTE2MDIsIDExMTYwOSwgMTExNjE3LCAxMTE2MjEsIDExMTYyNSwgCisgICAgMTExNjI5LCAxMTE2MzMsIDExMTY0MCwgMTExNjQ0LCAxMTE2NTAsIDExMTY1NiwgMTExNjY0LCAxMTE2NjgsIDExMTY3NSwgCisgICAgMTExNjgzLCAxMTE2ODcsIDExMTY5MSwgMTExNjk3LCAxMTE3MDEsIDExMTcxMCwgMTExNzE5LCAxMTE3MjYsIDExMTczNiwgCisgICAgMTExNzQyLCAxMTE3NDYsIDExMTc1MCwgMTExNzU4LCAxMTE3NjUsIDExMTc3MiwgMTExNzc4LCAxMTE3ODIsIDExMTc5MCwgCisgICAgMTExNzk0LCAxMTE4MDEsIDExMTgxMywgMTExODIwLCAxMTE4MzAsIDExMTgzNiwgMTExODQwLCAxMTE4NDksIDExMTg1NiwgCisgICAgMTExODY1LCAxMTE4NjksIDExMTg3MywgMTExODgwLCAxMTE4ODQsIDExMTg4OCwgMTExODkyLCAxMTE4OTYsIDExMTg5OSwgCisgICAgMTExOTA1LCAxMTE5MTEsIDExMTkxNSwgMTExOTE5LCAxMTE5MjYsIDExMTkzMywgMTExOTQwLCAxMTE5NDcsIDExMTk1NCwgCisgICAgMTExOTYxLCAxMTE5NjgsIDExMTk3NSwgMTExOTgxLCAxMTE5ODUsIDExMTk4OSwgMTExOTk2LCAxMTIwMDMsIDExMjAxMCwgCisgICAgMTEyMDE3LCAxMTIwMjQsIDExMjAyOCwgMTEyMDMxLCAxMTIwMzYsIDExMjA0MCwgMTEyMDQ0LCAxMTIwNTMsIDExMjA2MiwgCisgICAgMTEyMDY2LCAxMTIwNzAsIDExMjA3NiwgMTEyMDgyLCAxMTIwOTksIDExMjEwNSwgMTEyMTA5LCAxMTIxMTgsIDExMjEyMiwgCisgICAgMTEyMTI2LCAxMTIxMzMsIDExMjE0MSwgMTEyMTQ5LCAxMTIxNTUsIDExMjE1OSwgMTEyMTYzLCAxMTIxNjcsIDExMjE3MSwgCisgICAgMTEyMTc0LCAxMTIxODAsIDExMjE4NywgMTEyMTk3LCAxMTIyMDQsIDExMjIxMSwgMTEyMjE4LCAxMTIyMjQsIDExMjIzMSwgCisgICAgMTEyMjM4LCAxMTIyNDUsIDExMjI1MiwgMTEyMjU5LCAxMTIyNjgsIDExMjI3NSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMSwgCisgICAgMTEyMzExLCAxMTIzMjIsIDExMjMyOSwgMTEyMzM2LCAxMTIzNDMsIDExMjM1MCwgMTEyMzU3LCAxMTIzNjQsIDExMjM3MSwgCisgICAgMTEyMzc4LCAxMTIzODUsIDExMjM5MiwgMTEyNDAyLCAxMTI0MTIsIDExMjQyMiwgMTEyNDI5LCAxMTI0MzksIDExMjQ0NiwgCisgICAgMTEyNDUzLCAxMTI0NjAsIDExMjQ2NywgMTEyNDc0LCAxMTI0ODEsIDExMjQ4OCwgMTEyNDk1LCAxMTI1MDIsIDExMjUwOSwgCisgICAgMTEyNTE2LCAxMTI1MjMsIDExMjUzMCwgMTEyNTM2LCAxMTI1NDMsIDExMjU1MCwgMTEyNTU5LCAxMTI1NjYsIDExMjU3MywgCisgICAgMTEyNTc3LCAxMTI1ODUsIDExMjU4OSwgMTEyNTkzLCAxMTI1OTcsIDExMjYwMSwgMTEyNjA1LCAxMTI2MTIsIDExMjYxNiwgCisgICAgMTEyNjI1LCAxMTI2MjksIDExMjYzNiwgMTEyNjQ0LCAxMTI2NDgsIDExMjY1MiwgMTEyNjU2LCAxMTI2NjksIDExMjY4NSwgCisgICAgMTEyNjg5LCAxMTI2OTMsIDExMjcwMCwgMTEyNzA2LCAxMTI3MTMsIDExMjcxNywgMTEyNzIxLCAxMTI3MjUsIDExMjcyOSwgCisgICAgMTEyNzMzLCAxMTI3NDAsIDExMjc0NCwgMTEyNzYyLCAxMTI3NjYsIDExMjc3MCwgMTEyNzc3LCAxMTI3ODEsIDExMjc4NSwgCisgICAgMTEyNzkxLCAxMTI3OTUsIDExMjc5OSwgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjMsIDExMjgyOSwgCisgICAgMTEyODQwLCAxMTI4NDksIDExMjg1OCwgMTEyODY1LCAxMTI4NzIsIDExMjg4MywgMTEyODkwLCAxMTI4OTcsIDExMjkwNCwgCisgICAgMTEyOTExLCAxMTI5MTgsIDExMjkyNSwgMTEyOTMyLCAxMTI5NDIsIDExMjk0OCwgMTEyOTU1LCAxMTI5NjUsIDExMjk3NCwgCisgICAgMTEyOTgxLCAxMTI5OTAsIDExMzAwMCwgMTEzMDA3LCAxMTMwMTQsIDExMzAyMSwgMTEzMDI4LCAxMTMwNDAsIDExMzA0NywgCisgICAgMTEzMDU0LCAxMTMwNjEsIDExMzA2OCwgMTEzMDc1LCAxMTMwODUsIDExMzA5MiwgMTEzMDk5LCAxMTMxMDksIDExMzEyMiwgCisgICAgMTEzMTM0LCAxMTMxNDEsIDExMzE1MSwgMTEzMTU4LCAxMTMxNjUsIDExMzE3MiwgMTEzMTg3LCAxMTMxOTMsIDExMzIwMSwgCisgICAgMTEzMjExLCAxMTMyMjEsIDExMzIyOCwgMTEzMjM1LCAxMTMyNDEsIDExMzI0NSwgMTEzMjUyLCAxMTMyNjIsIDExMzI2OCwgCisgICAgMTEzMjgxLCAxMTMyODUsIDExMzI4OSwgMTEzMjk2LCAxMTMzMDAsIDExMzMwNywgMTEzMzE3LCAxMTMzMjEsIDExMzMyNSwgCisgICAgMTEzMzI5LCAxMTMzMzMsIDExMzMzNywgMTEzMzQ0LCAxMTMzNDgsIDExMzM1NSwgMTEzMzYyLCAxMTMzNjksIDExMzM3OCwgCisgICAgMTEzMzg3LCAxMTMzOTcsIDExMzQwNCwgMTEzNDExLCAxMTM0MTgsIDExMzQyOCwgMTEzNDM1LCAxMTM0NDUsIDExMzQ1MiwgCisgICAgMTEzNDYyLCAxMTM0NjksIDExMzQ3NiwgMTEzNDg2LCAxMTM0OTYsIDExMzUwMywgMTEzNTA5LCAxMTM1MTcsIDExMzUyNSwgCisgICAgMTEzNTMxLCAxMTM1MzcsIDExMzU0MSwgMTEzNTQ1LCAxMTM1NTIsIDExMzU2MCwgMTEzNTY2LCAxMTM1NzAsIDExMzU3NCwgCisgICAgMTEzNTc4LCAxMTM1ODUsIDExMzU5NywgMTEzNjAwLCAxMTM2MDcsIDExMzYxMywgMTEzNjE3LCAxMTM2MjEsIDExMzYyNSwgCisgICAgMTEzNjI5LCAxMTM2MzMsIDExMzYzNywgMTEzNjQxLCAxMTM2NDUsIDExMzY0OSwgMTEzNjUzLCAxMTM2NjAsIDExMzY2NCwgCisgICAgMTEzNjcwLCAxMTM2NzQsIDExMzY3OCwgMTEzNjgyLCAxMTM2ODgsIDExMzY5NSwgMTEzNzAyLCAxMTM3MDksIDExMzcyMSwgCisgICAgMTEzNzI5LCAxMTM3MzMsIDExMzczOSwgMTEzNzQ4LCAxMTM3NTUsIDExMzc2MSwgMTEzNzY1LCAxMTM3NjksIDExMzc3MywgCisgICAgMTEzNzc5LCAxMTM3ODgsIDExMzc5NiwgMTEzODAwLCAxMTM4MDYsIDExMzgxMCwgMTEzODE0LCAxMTM4MTgsIDExMzgyNCwgCisgICAgMTEzODMxLCAxMTM4MzcsIDExMzg0MSwgMTEzODQ3LCAxMTM4NTEsIDExMzg1NSwgMTEzODY0LCAxMTM4NzYsIDExMzg4MCwgCisgICAgMTEzODg3LCAxMTM4OTQsIDExMzkwNCwgMTEzOTExLCAxMTM5MjMsIDExMzkzMCwgMTEzOTM3LCAxMTM5NDQsIDExMzk1NSwgCisgICAgMTEzOTY1LCAxMTM5NzgsIDExMzk4OCwgMTEzOTk1LCAxMTM5OTksIDExNDAwMywgMTE0MDA3LCAxMTQwMTEsIDExNDAyMCwgCisgICAgMTE0MDI5LCAxMTQwMzgsIDExNDA1NSwgMTE0MDY0LCAxMTQwNzAsIDExNDA3NywgMTE0MDg1LCAxMTQwOTgsIDExNDEwMiwgCisgICAgMTE0MTExLCAxMTQxMjAsIDExNDEyOSwgMTE0MTM4LCAxMTQxNDksIDExNDE1OCwgMTE0MTY3LCAxMTQxNzYsIDExNDE4NSwgCisgICAgMTE0MTk0LCAxMTQyMDMsIDExNDIxMywgMTE0MjE2LCAxMTQyMjAsIDExNDIyNCwgMTE0MjI4LCAxMTQyMzIsIDExNDIzNiwgCisgICAgMTE0MjQyLCAxMTQyNDksIDExNDI1NiwgMTE0MjYzLCAxMTQyNjksIDExNDI3NSwgMTE0MjgyLCAxMTQyODgsIDExNDI5NSwgCisgICAgMTE0MzAzLCAxMTQzMDcsIDExNDMxNCwgMTE0MzIxLCAxMTQzMjgsIDExNDMzNiwgMTE0MzQwLCAxMTQzNDQsIDExNDM0OCwgCisgICAgMTE0MzUyLCAxMTQzNTYsIDExNDM2MiwgMTE0MzY2LCAxMTQzNzIsIDExNDM3OSwgMTE0Mzg2LCAxMTQzOTIsIDExNDM5OSwgCisgICAgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI3LCAxMTQ0MzQsIDExNDQ0MSwgMTE0NDQ4LCAxMTQ0NTUsIDExNDQ2MiwgCisgICAgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MywgMTE0NDkwLCAxMTQ0OTYsIDExNDUwMCwgMTE0NTA5LCAxMTQ1MTMsIDExNDUxNywgCisgICAgMTE0NTIxLCAxMTQ1MjUsIDExNDUzMSwgMTE0NTM4LCAxMTQ1NDUsIDExNDU1MiwgMTE0NTU5LCAxMTQ1NjYsIDExNDU3MiwgCisgICAgMTE0NTgwLCAxMTQ1ODQsIDExNDU4OCwgMTE0NTkyLCAxMTQ1OTYsIDExNDYwMiwgMTE0NjE5LCAxMTQ2MzYsIDExNDY0MCwgCisgICAgMTE0NjQ0LCAxMTQ2NDgsIDExNDY1MiwgMTE0NjU2LCAxMTQ2NjAsIDExNDY2NiwgMTE0NjczLCAxMTQ2NzcsIDExNDY4MywgCisgICAgMTE0NjkwLCAxMTQ2OTcsIDExNDcwNCwgMTE0NzExLCAxMTQ3MTgsIDExNDcyNywgMTE0NzM0LCAxMTQ3NDEsIDExNDc0OCwgCisgICAgMTE0NzU1LCAxMTQ3NTksIDExNDc2MywgMTE0NzY5LCAxMTQ3ODEsIDExNDc4NSwgMTE0Nzg5LCAxMTQ3OTgsIDExNDgwMiwgCisgICAgMTE0ODA2LCAxMTQ4MTAsIDExNDgxNiwgMTE0ODIwLCAxMTQ4MjQsIDExNDgzMywgMTE0ODM3LCAxMTQ4NDEsIDExNDg0NSwgCisgICAgMTE0ODUyLCAxMTQ4NTYsIDExNDg2MCwgMTE0ODY0LCAxMTQ4NjgsIDExNDg3MiwgMTE0ODc2LCAxMTQ4ODAsIDExNDg4NCwgCisgICAgMTE0ODkwLCAxMTQ4OTcsIDExNDkwNCwgMTE0OTEwLCAxMTQ5MTQsIDExNDkzMSwgMTE0OTM3LCAxMTQ5NDEsIDExNDk0NywgCisgICAgMTE0OTUzLCAxMTQ5NTksIDExNDk2NSwgMTE0OTcxLCAxMTQ5NzcsIDExNDk4MSwgMTE0OTg1LCAxMTQ5ODksIDExNDk5NSwgCisgICAgMTE0OTk5LCAxMTUwMDUsIDExNTAwOSwgMTE1MDEzLCAxMTUwMjAsIDExNTAyNywgMTE1MDQ0LCAxMTUwNDgsIDExNTA1MiwgCisgICAgMTE1MDU2LCAxMTUwNjAsIDExNTA2NCwgMTE1MDc2LCAxMTUwNzksIDExNTA4NCwgMTE1MDg5LCAxMTUxMDQsIDExNTExNCwgCisgICAgMTE1MTI2LCAxMTUxMzAsIDExNTEzNCwgMTE1MTM4LCAxMTUxNDQsIDExNTE1MSwgMTE1MTU4LCAxMTUxNjgsIDExNTE4MCwgCisgICAgMTE1MTg2LCAxMTUxOTIsIDExNTIwMSwgMTE1MjA1LCAxMTUyMDksIDExNTIxNiwgMTE1MjI2LCAxMTUyMzMsIDExNTIzOSwgCisgICAgMTE1MjQzLCAxMTUyNDcsIDExNTI1NCwgMTE1MjYwLCAxMTUyNjQsIDExNTI3MCwgMTE1Mjc0LCAxMTUyODIsIDExNTI4OCwgCisgICAgMTE1MjkyLCAxMTUzMDAsIDExNTMwOSwgMTE1MzE2LCAxMTUzMjIsIDExNTMyOSwgMTE1MzM2LCAxMTUzNDYsIDExNTM1NiwgCisgICAgMTE1MzYwLCAxMTUzNjQsIDExNTM2OCwgMTE1MzcyLCAxMTUzNzgsIDExNTM4NSwgMTE1MzkxLCAxMTUzOTgsIDExNTQwNSwgCisgICAgMTE1NDEyLCAxMTU0MjEsIDExNTQyOCwgMTE1NDM1LCAxMTU0NDEsIDExNTQ0OCwgMTE1NDU1LCAxMTU0NjIsIDExNTQ2OSwgCisgICAgMTE1NDc2LCAxMTU0ODMsIDExNTQ4OSwgMTE1NDk2LCAxMTU1MDMsIDExNTUxMCwgMTE1NTE5LCAxMTU1MjYsIDExNTUzMywgCisgICAgMTE1NTM3LCAxMTU1NDMsIDExNTU0NywgMTE1NTUzLCAxMTU1NjAsIDExNTU2NywgMTE1NTc0LCAxMTU1NzgsIDExNTU4MiwgCisgICAgMTE1NTg2LCAxMTU1OTAsIDExNTU5NCwgMTE1NjAxLCAxMTU2MDUsIDExNTYwOSwgMTE1NjE1LCAxMTU2MjMsIDExNTYyNywgCisgICAgMTE1NjMxLCAxMTU2MzUsIDExNTYzOSwgMTE1NjQ2LCAxMTU2NTAsIDExNTY1NCwgMTE1NjYyLCAxMTU2NjYsIDExNTY3MCwgCisgICAgMTE1Njc0LCAxMTU2NzgsIDExNTY4NCwgMTE1Njg4LCAxMTU2OTIsIDExNTY5OCwgMTE1NzA1LCAxMTU3MTEsIDExNTcxOCwgCisgICAgMTE1NzMwLCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ4LCAxMTU3NTUsIDExNTc2MiwgMTE1Nzc0LCAxMTU3ODEsIDExNTc4NSwgCisgICAgMTE1Nzg5LCAxMTU3OTMsIDExNTgwMCwgMTE1ODA3LCAxMTU4MTQsIDExNTgyMSwgMTE1ODMxLCAxMTU4MzgsIDExNTg0NCwgCisgICAgMTE1ODUxLCAxMTU4NTgsIDExNTg2NSwgMTE1ODcyLCAxMTU4ODEsIDExNTg5MSwgMTE1ODk4LCAxMTU5MDIsIDExNTkwOSwgCisgICAgMTE1OTEzLCAxMTU5MTcsIDExNTkyMSwgMTE1OTI4LCAxMTU5MzUsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTUsIDExNTk2NCwgCisgICAgMTE1OTY4LCAxMTU5NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNTk3OSwgMTE1OTg1LCAxMTU5OTEsIDExNTk5OCwgMTE2MDA1LCAKKyAgICAxMTYwMTIsIDExNjAxOSwgMTE2MDI2LCAxMTYwMzMsIDExNjAzOSwgMTE2MDQ2LCAxMTYwNTMsIDExNjA2MCwgMTE2MDY3LCAKKyAgICAxMTYwNzQsIDExNjA4MSwgMTE2MDg3LCAxMTYwOTMsIDExNjA5OSwgMTE2MTA1LCAxMTYxMTEsIDExNjExNywgMTE2MTIzLCAKKyAgICAxMTYxMjksIDExNjEzNSwgMTE2MTQyLCAxMTYxNDksIDExNjE1NiwgMTE2MTYzLCAxMTYxNzAsIDExNjE3NywgMTE2MTgzLCAKKyAgICAxMTYxODksIDExNjE5NSwgMTE2MjAyLCAxMTYyMDksIDExNjIxNSwgMTE2MjIxLCAxMTYyMzAsIDExNjIzNywgMTE2MjQ0LCAKKyAgICAxMTYyNTEsIDExNjI1OCwgMTE2MjY1LCAxMTYyNzIsIDExNjI3OCwgMTE2Mjg0LCAxMTYyOTAsIDExNjI5OSwgMTE2MzA2LCAKKyAgICAxMTYzMTMsIDExNjMyNCwgMTE2MzM1LCAxMTYzNDEsIDExNjM0NywgMTE2MzUzLCAxMTYzNjIsIDExNjM2OSwgMTE2Mzc2LCAKKyAgICAxMTYzODYsIDExNjM5NiwgMTE2NDA3LCAxMTY0MTgsIDExNjQzMCwgMTE2NDQzLCAxMTY0NTQsIDExNjQ2NSwgMTE2NDc3LCAKKyAgICAxMTY0OTAsIDExNjUwMSwgMTE2NTEyLCAxMTY1MjMsIDExNjUzNCwgMTE2NTQ1LCAxMTY1NTcsIDExNjU2NSwgMTE2NTczLCAKKyAgICAxMTY1ODIsIDExNjU5MSwgMTE2NjAwLCAxMTY2MDYsIDExNjYxMiwgMTE2NjE4LCAxMTY2MjUsIDExNjYzNSwgMTE2NjQyLCAKKyAgICAxMTY2NTIsIDExNjY1NywgMTE2NjYyLCAxMTY2NjgsIDExNjY3NCwgMTE2NjgyLCAxMTY2OTAsIDExNjY5OSwgMTE2NzEwLCAKKyAgICAxMTY3MjEsIDExNjcyOSwgMTE2NzM3LCAxMTY3NDYsIDExNjc1NSwgMTE2NzYzLCAxMTY3NzAsIDExNjc3OCwgMTE2Nzg2LCAKKyAgICAxMTY3OTMsIDExNjgwMCwgMTE2ODA5LCAxMTY4MTgsIDExNjgyNywgMTE2ODM2LCAxMTY4NDUsIDAsIDExNjg1NCwgCisgICAgMTE2ODY1LCAxMTY4NzIsIDExNjg4MCwgMTE2ODg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY4OTYsIAorICAgIDExNjkwNSwgMTE2OTEyLCAxMTY5MTksIDExNjkyOCwgMTE2OTM1LCAxMTY5NDIsIDExNjk0OSwgMTE2OTU5LCAxMTY5NjYsIAorICAgIDExNjk3MywgMTE2OTgwLCAxMTY5ODgsIDExNjk5NSwgMTE3MDAyLCAxMTcwMDksIDExNzAyMCwgMTE3MDI3LCAxMTcwMzQsIAorICAgIDExNzA0MSwgMTE3MDQ4LCAxMTcwNTUsIDExNzA2NCwgMTE3MDcxLCAxMTcwNzcsIDExNzA4NCwgMTE3MDkzLCAxMTcxMDAsIAorICAgIDExNzEwNywgMTE3MTE0LCAxMTcxMjQsIDExNzEzMSwgMTE3MTM4LCAxMTcxNDgsIDExNzE1OCwgMTE3MTY1LCAxMTcxNzIsIAorICAgIDExNzE3OSwgMTE3MTg2LCAxMTcxOTMsIDExNzIwMCwgMTE3MjA5LCAxMTcyMTYsIDExNzIyMywgMTE3MjI5LCAxMTcyMzcsIAorICAgIDExNzI0NiwgMTE3MjU1LCAxMTcyNjYsIDExNzI3NSwgMTE3Mjg0LCAxMTcyOTMsIDExNzMwMiwgMTE3MzExLCAxMTczMTgsIAorICAgIDExNzMyNSwgMTE3MzM0LCAxMTczNDYsIDExNzM1NiwgMTE3MzYzLCAxMTczNzAsIDExNzM4MCwgMTE3MzkwLCAxMTczOTksIAorICAgIDExNzQwOSwgMTE3NDE2LCAxMTc0MjYsIDExNzQzMywgMTE3NDQwLCAxMTc0NDcsIDExNzQ1NywgMTE3NDY3LCAxMTc0NzQsIAorICAgIDExNzQ4MSwgMTE3NDkxLCAxMTc0OTcsIDExNzUwOCwgMTE3NTE3LCAxMTc1MjcsIDExNzUzNSwgMTE3NTQ4LCAxMTc1NTUsIAorICAgIDExNzU2MSwgMTE3NTY5LCAxMTc1NzYsIDExNzU4NiwgMTE3NTkwLCAxMTc1OTQsIDExNzU5OCwgMTE3NjAyLCAxMTc2MDYsIAorICAgIDExNzYxMCwgMTE3NjE0LCAxMTc2MjMsIDExNzYyNywgMTE3NjM0LCAxMTc2MzgsIDExNzY0MiwgMTE3NjQ2LCAxMTc2NTAsIAorICAgIDExNzY1NCwgMTE3NjU4LCAxMTc2NjIsIDExNzY2NiwgMTE3NjcwLCAxMTc2NzQsIDExNzY3OCwgMTE3NjgyLCAxMTc2ODYsIAorICAgIDExNzY5MCwgMTE3Njk0LCAxMTc2OTgsIDExNzcwMiwgMTE3NzA2LCAxMTc3MTAsIDExNzcxNywgMTE3NzI0LCAxMTc3MzQsIAorICAgIDExNzc0NywgMTE3NzU3LCAxMTc3NjEsIDExNzc2NSwgMTE3NzY5LCAxMTc3NzMsIDExNzc3NywgMTE3NzgxLCAxMTc3ODUsIAorICAgIDExNzc4OSwgMTE3NzkzLCAxMTc3OTcsIDExNzgwMSwgMTE3ODA4LCAxMTc4MTUsIDExNzgyNiwgMTE3ODMzLCAxMTc4NDAsIAorICAgIDExNzg0NywgMTE3ODU0LCAxMTc4NjEsIDExNzg2OCwgMTE3ODc1LCAxMTc4NzksIDExNzg4MywgMTE3ODkwLCAxMTc4OTcsIAorICAgIDExNzkwNCwgMTE3OTEzLCAxMTc5MjAsIDExNzkzMywgMTE3OTQzLCAxMTc5NTAsIDExNzk1NywgMTE3OTYxLCAxMTc5NjUsIAorICAgIDExNzk3NCwgMTE3OTgxLCAxMTc5ODgsIDExNzk5NSwgMTE4MDA4LCAxMTgwMTUsIDExODAyMiwgMTE4MDMyLCAxMTgwNDIsIAorICAgIDExODA1MSwgMTE4MDU4LCAxMTgwNjUsIDExODA3MiwgMTE4MDc5LCAxMTgwODYsIDExODA5MywgMTE4MTAzLCAxMTgxMDksIAorICAgIDExODExNywgMTE4MTI0LCAxMTgxMzIsIDExODEzOSwgMTE4MTUwLCAxMTgxNTcsIDExODE2MywgMTE4MTcwLCAxMTgxNzcsIAorICAgIDExODE4NCwgMTE4MTkxLCAxMTgyMDEsIDExODIxMSwgMTE4MjE4LCAxMTgyMjUsIDExODIzNCwgMTE4MjQyLCAxMTgyNDgsIAorICAgIDExODI1NSwgMTE4MjYyLCAxMTgyNjksIDExODI3NiwgMTE4MjgwLCAxMTgyOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODMwMCwgMTE4MzA0LCAxMTgzMDgsIDExODMxMiwgCisgICAgMTE4MzE2LCAxMTgzMjAsIDExODMyNCwgMTE4MzI4LCAxMTgzMzIsIDExODMzNiwgMTE4MzQwLCAxMTgzNDQsIDExODM0OCwgCisgICAgMTE4MzUyLCAxMTgzNTYsIDExODM2MCwgMTE4MzY0LCAxMTgzNjgsIDExODM3MiwgMTE4Mzc2LCAxMTgzODAsIDExODM4NCwgCisgICAgMTE4Mzg4LCAxMTgzOTIsIDExODM5NiwgMTE4NDAwLCAxMTg0MDQsIDExODQwOCwgMTE4NDEyLCAxMTg0MTYsIDExODQyMCwgCisgICAgMTE4NDI0LCAxMTg0MjgsIDExODQzMiwgMTE4NDM2LCAxMTg0NDAsIDExODQ0NCwgMTE4NDQ4LCAxMTg0NTIsIDExODQ1NiwgCisgICAgMTE4NDYwLCAxMTg0NjQsIDExODQ2OCwgMTE4NDcyLCAxMTg0NzYsIDExODQ4MCwgMTE4NDg0LCAxMTg0ODgsIDExODQ5MiwgCisgICAgMTE4NDk2LCAxMTg1MDAsIDExODUwNCwgMTE4NTA4LCAxMTg1MTIsIDExODUxNiwgMTE4NTIwLCAxMTg1MjQsIDExODUyOCwgCisgICAgMTE4NTMyLCAxMTg1MzYsIDExODU0MCwgMTE4NTQ0LCAxMTg1NDgsIDExODU1MiwgMTE4NTU2LCAxMTg1NjAsIDExODU2NCwgCisgICAgMTE4NTY4LCAxMTg1NzIsIDExODU3NiwgMTE4NTgwLCAxMTg1ODQsIDExODU4OCwgMTE4NTkyLCAxMTg1OTYsIDExODYwMCwgCisgICAgMTE4NjA0LCAxMTg2MDgsIDExODYxMiwgMTE4NjE2LCAxMTg2MjAsIDExODYyNCwgMTE4NjI4LCAxMTg2MzIsIDExODYzNiwgCisgICAgMTE4NjQwLCAxMTg2NDQsIDExODY0OCwgMTE4NjUyLCAxMTg2NTYsIDExODY2MCwgMTE4NjY0LCAxMTg2NjgsIDExODY3MiwgCisgICAgMTE4Njc2LCAxMTg2ODAsIDExODY4NCwgMTE4Njg4LCAxMTg2OTIsIDExODY5NiwgMTE4NzAwLCAxMTg3MDQsIDExODcwOCwgCisgICAgMTE4NzEyLCAxMTg3MTYsIDExODcyMCwgMTE4NzI0LCAxMTg3MjgsIDExODczMiwgMTE4NzM2LCAxMTg3NDAsIDExODc0NCwgCisgICAgMTE4NzQ4LCAxMTg3NTIsIDExODc1NiwgMTE4NzYwLCAxMTg3NjQsIDExODc2OCwgMTE4NzcyLCAxMTg3NzYsIDExODc4MCwgCisgICAgMTE4Nzg0LCAxMTg3ODgsIDExODc5MiwgMTE4Nzk2LCAxMTg4MDAsIDExODgwNCwgMTE4ODA4LCAxMTg4MTIsIDExODgxNiwgCisgICAgMTE4ODIwLCAxMTg4MjQsIDExODgyOCwgMTE4ODMyLCAxMTg4MzYsIDExODg0MCwgMTE4ODQ0LCAxMTg4NDgsIDExODg1MiwgCisgICAgMTE4ODU2LCAxMTg4NjAsIDExODg2NCwgMTE4ODY4LCAxMTg4NzIsIDExODg3NiwgMTE4ODgwLCAxMTg4ODQsIDExODg4OCwgCisgICAgMTE4ODkyLCAxMTg4OTYsIDExODkwMCwgMTE4OTA0LCAxMTg5MDgsIDExODkxMiwgMTE4OTE2LCAxMTg5MjAsIDExODkyNCwgCisgICAgMTE4OTI4LCAxMTg5MzIsIDExODkzNiwgMTE4OTQwLCAxMTg5NDQsIDExODk0OCwgMTE4OTUyLCAxMTg5NTYsIDExODk2MCwgCisgICAgMTE4OTY0LCAxMTg5NjgsIDExODk3MiwgMTE4OTc2LCAxMTg5ODAsIDExODk4NCwgMTE4OTg4LCAxMTg5OTIsIDExODk5NiwgCisgICAgMTE5MDAwLCAxMTkwMDQsIDExOTAwOCwgMTE5MDEyLCAxMTkwMTYsIDExOTAyMCwgMTE5MDI0LCAxMTkwMjgsIDExOTAzMiwgCisgICAgMTE5MDM2LCAxMTkwNDAsIDExOTA0NCwgMTE5MDQ4LCAxMTkwNTIsIDExOTA1NiwgMTE5MDYwLCAxMTkwNjQsIDExOTA2OCwgCisgICAgMTE5MDcyLCAxMTkwNzYsIDExOTA4MCwgMTE5MDg0LCAxMTkwODgsIDExOTA5MiwgMTE5MDk2LCAxMTkxMDAsIDExOTEwNCwgCisgICAgMTE5MTA4LCAxMTkxMTIsIDExOTExNiwgMTE5MTIwLCAxMTkxMjQsIDExOTEyOCwgMTE5MTMyLCAxMTkxMzYsIDExOTE0MCwgCisgICAgMTE5MTQ0LCAxMTkxNDgsIDExOTE1MiwgMTE5MTU2LCAxMTkxNjAsIDExOTE2NCwgMTE5MTY4LCAxMTkxNzIsIDExOTE3NiwgCisgICAgMTE5MTgwLCAxMTkxODQsIDExOTE4OCwgMTE5MTkyLCAxMTkxOTYsIDExOTIwMCwgMTE5MjA0LCAxMTkyMDgsIDExOTIxMiwgCisgICAgMTE5MjE2LCAxMTkyMjAsIDExOTIyNCwgMTE5MjI4LCAxMTkyMzIsIDExOTIzNiwgMTE5MjQwLCAxMTkyNDQsIDExOTI0OCwgCisgICAgMTE5MjUyLCAxMTkyNTYsIDExOTI2MCwgMTE5MjY0LCAxMTkyNjgsIDExOTI3MiwgMTE5Mjc2LCAxMTkyODAsIDExOTI4NCwgCisgICAgMTE5Mjg4LCAxMTkyOTIsIDExOTI5NiwgMTE5MzAwLCAxMTkzMDQsIDExOTMwOCwgMTE5MzEyLCAxMTkzMTYsIDExOTMyMCwgCisgICAgMTE5MzI0LCAxMTkzMjgsIDExOTMzMiwgMTE5MzM2LCAxMTkzNDAsIDExOTM0NCwgMTE5MzQ4LCAxMTkzNTIsIDExOTM1NiwgCisgICAgMTE5MzYwLCAxMTkzNjQsIDExOTM2OCwgMTE5MzcyLCAxMTkzNzYsIDExOTM4MCwgMTE5Mzg0LCAxMTkzODgsIDExOTM5MiwgCisgICAgMTE5Mzk2LCAxMTk0MDAsIDExOTQwNCwgMTE5NDA4LCAxMTk0MTIsIDExOTQxNiwgMTE5NDIwLCAxMTk0MjQsIDExOTQyOCwgCisgICAgMTE5NDMyLCAxMTk0MzYsIDExOTQ0MCwgMTE5NDQ0LCAxMTk0NDgsIDExOTQ1MiwgMTE5NDU2LCAxMTk0NjAsIDExOTQ2NCwgCisgICAgMTE5NDY4LCAxMTk0NzIsIDExOTQ3NiwgMTE5NDgwLCAxMTk0ODQsIDExOTQ4OCwgMTE5NDkyLCAxMTk0OTYsIDExOTUwMCwgCisgICAgMTE5NTA0LCAxMTk1MDgsIDExOTUxMiwgMTE5NTE2LCAxMTk1MjAsIDExOTUyNCwgMTE5NTI4LCAxMTk1MzIsIDExOTUzNiwgCisgICAgMTE5NTQwLCAxMTk1NDQsIDExOTU0OCwgMTE5NTUyLCAxMTk1NTYsIDExOTU2MCwgMTE5NTY0LCAxMTk1NjgsIDExOTU3MiwgCisgICAgMTE5NTc2LCAxMTk1ODAsIDExOTU4NCwgMTE5NTg4LCAxMTk1OTIsIDExOTU5NiwgMTE5NjAwLCAxMTk2MDQsIDExOTYwOCwgCisgICAgMTE5NjEyLCAxMTk2MTYsIDExOTYyMCwgMTE5NjI0LCAxMTk2MjgsIDExOTYzMiwgMTE5NjM2LCAxMTk2NDAsIDExOTY0NCwgCisgICAgMTE5NjQ4LCAxMTk2NTIsIDExOTY1NiwgMTE5NjYwLCAxMTk2NjQsIDExOTY2OCwgMTE5NjcyLCAxMTk2NzYsIDExOTY4MCwgCisgICAgMTE5Njg0LCAxMTk2ODgsIDExOTY5MiwgMTE5Njk2LCAxMTk3MDAsIDExOTcwNCwgMTE5NzA4LCAxMTk3MTIsIDExOTcxNiwgCisgICAgMTE5NzIwLCAxMTk3MjQsIDExOTcyOCwgMTE5NzMyLCAxMTk3MzYsIDExOTc0MCwgMTE5NzQ0LCAxMTk3NDgsIDExOTc1MiwgCisgICAgMTE5NzU2LCAxMTk3NjAsIDExOTc2NCwgMTE5NzY4LCAxMTk3NzIsIDExOTc3NiwgMTE5NzgwLCAxMTk3ODQsIDExOTc4OCwgCisgICAgMTE5NzkyLCAxMTk3OTYsIDExOTgwMCwgMTE5ODA0LCAxMTk4MDgsIDExOTgxMiwgMTE5ODE2LCAxMTk4MjAsIDExOTgyNCwgCisgICAgMTE5ODI4LCAxMTk4MzIsIDExOTgzNiwgMTE5ODQwLCAxMTk4NDQsIDExOTg0OCwgMTE5ODUyLCAxMTk4NTYsIDExOTg2MCwgCisgICAgMTE5ODY0LCAxMTk4NjgsIDExOTg3MiwgMTE5ODc2LCAxMTk4ODAsIDExOTg4NCwgMTE5ODg4LCAxMTk4OTIsIDExOTg5NiwgCisgICAgMTE5OTAwLCAxMTk5MDQsIDExOTkwOCwgMTE5OTEyLCAxMTk5MTYsIDExOTkyMCwgMTE5OTI0LCAxMTk5MjgsIDExOTkzMiwgCisgICAgMTE5OTM2LCAxMTk5NDAsIDExOTk0NCwgMTE5OTQ4LCAxMTk5NTIsIDExOTk1NiwgMTE5OTYwLCAxMTk5NjQsIDExOTk2OCwgCisgICAgMTE5OTcyLCAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIDEyMDAwNCwgCisgICAgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMyLCAxMjAwMzYsIDEyMDA0MCwgCisgICAgMTIwMDQ0LCAxMjAwNDgsIDEyMDA1MiwgMTIwMDU2LCAxMjAwNjAsIDEyMDA2NCwgMTIwMDY4LCAxMjAwNzIsIDEyMDA3NiwgCisgICAgMTIwMDgwLCAxMjAwODQsIDEyMDA4OCwgMTIwMDkyLCAxMjAwOTYsIDEyMDEwMCwgMTIwMTA0LCAxMjAxMDgsIDEyMDExMiwgCisgICAgMTIwMTE2LCAxMjAxMjAsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzIsIDEyMDEzNiwgMTIwMTQwLCAxMjAxNDQsIDEyMDE0OCwgCisgICAgMTIwMTUyLCAxMjAxNTYsIDEyMDE2MCwgMTIwMTY0LCAxMjAxNjgsIDEyMDE3MiwgMTIwMTc2LCAxMjAxODAsIDEyMDE4NCwgCisgICAgMTIwMTg4LCAxMjAxOTIsIDEyMDE5NiwgMTIwMjAwLCAxMjAyMDQsIDEyMDIwOCwgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgCisgICAgMTIwMjI0LCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgCisgICAgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgCisgICAgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjQsIDEyMDMyOCwgCisgICAgMTIwMzMyLCAxMjAzMzYsIDEyMDM0MCwgMTIwMzQ0LCAxMjAzNDgsIDEyMDM1MiwgMTIwMzU2LCAxMjAzNjAsIDEyMDM2NCwgCisgICAgMTIwMzY4LCAxMjAzNzIsIDEyMDM3NiwgMTIwMzgwLCAxMjAzODQsIDEyMDM4OCwgMTIwMzkyLCAxMjAzOTYsIDEyMDQwMCwgCisgICAgMTIwNDA0LCAxMjA0MDgsIDEyMDQxMiwgMTIwNDE2LCAxMjA0MjAsIDEyMDQyNCwgMTIwNDI4LCAxMjA0MzIsIDEyMDQzNiwgCisgICAgMTIwNDQwLCAxMjA0NDQsIDEyMDQ0OCwgMTIwNDUyLCAxMjA0NTYsIDEyMDQ2MCwgMTIwNDY0LCAxMjA0NjgsIDEyMDQ3MiwgCisgICAgMTIwNDc2LCAxMjA0ODAsIDEyMDQ4NCwgMTIwNDg4LCAxMjA0OTIsIDEyMDQ5NiwgMTIwNTAwLCAxMjA1MDQsIDEyMDUwOCwgCisgICAgMTIwNTEyLCAxMjA1MTYsIDEyMDUyMCwgMTIwNTI0LCAxMjA1MjgsIDEyMDUzMiwgMTIwNTM2LCAxMjA1NDAsIDEyMDU0NCwgCisgICAgMTIwNTQ4LCAxMjA1NTIsIDEyMDU1NiwgMTIwNTYwLCAxMjA1NjQsIDEyMDU2OCwgMTIwNTcyLCAxMjA1NzYsIDEyMDU4MCwgCisgICAgMTIwNTg0LCAxMjA1ODgsIDEyMDU5MiwgMTIwNTk2LCAxMjA2MDAsIDEyMDYwNCwgMTIwNjA4LCAxMjA2MTIsIDEyMDYxNiwgCisgICAgMTIwNjIwLCAxMjA2MjQsIDEyMDYyOCwgMTIwNjMyLCAxMjA2MzYsIDEyMDY0MCwgMTIwNjQ0LCAxMjA2NDgsIDEyMDY1MiwgCisgICAgMTIwNjU2LCAxMjA2NjAsIDEyMDY2NCwgMTIwNjY4LCAxMjA2NzIsIDEyMDY3NiwgMTIwNjgwLCAxMjA2ODQsIDEyMDY4OCwgCisgICAgMTIwNjkyLCAxMjA2OTYsIDEyMDcwMCwgMTIwNzA0LCAxMjA3MDgsIDEyMDcxMiwgMTIwNzE2LCAxMjA3MjAsIDEyMDcyNCwgCisgICAgMTIwNzI4LCAxMjA3MzIsIDEyMDczNiwgMTIwNzQwLCAxMjA3NDQsIDEyMDc0OCwgMTIwNzUyLCAxMjA3NTYsIDEyMDc2MCwgCisgICAgMTIwNzY0LCAxMjA3NjgsIDEyMDc3MiwgMTIwNzc2LCAxMjA3ODAsIDEyMDc4NCwgMTIwNzg4LCAxMjA3OTIsIDEyMDc5NiwgCisgICAgMTIwODAwLCAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgCisgICAgMTIwODM2LCAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgCisgICAgMTIwODcyLCAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgCisgICAgMTIwOTA4LCAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgCisgICAgMTIwOTQ0LCAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgCisgICAgMTIwOTgwLCAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgCisgICAgMTIxMDE2LCAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgCisgICAgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgCisgICAgMTIxMDg4LCAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgCisgICAgMTIxMTI0LCAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgCisgICAgMTIxMTYwLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgCisgICAgMTIxMTk2LCAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgCisgICAgMTIxMjMyLCAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgCisgICAgMTIxMjY4LCAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgCisgICAgMTIxMzA0LCAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgCisgICAgMTIxMzQwLCAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgCisgICAgMTIxMzc2LCAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgCisgICAgMTIxNDEyLCAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgCisgICAgMTIxNDQ4LCAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgCisgICAgMTIxNDg0LCAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgCisgICAgMTIxNTIwLCAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgCisgICAgMTIxNTU2LCAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgCisgICAgMTIxNTkyLCAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgCisgICAgMTIxNjI4LCAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgCisgICAgMTIxNjY0LCAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgCisgICAgMTIxNzAwLCAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgCisgICAgMTIxNzM2LCAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgCisgICAgMTIxNzcyLCAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgCisgICAgMTIxODA4LCAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgCisgICAgMTIxODQ0LCAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgCisgICAgMTIxODgwLCAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgCisgICAgMTIxOTE2LCAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgCisgICAgMTIxOTUyLCAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgCisgICAgMTIxOTg4LCAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgCisgICAgMTIyMDI0LCAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgCisgICAgMTIyMDYwLCAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgCisgICAgMTIyMDk2LCAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgCisgICAgMTIyMTMyLCAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgCisgICAgMTIyMTY4LCAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgCisgICAgMTIyMjA0LCAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgCisgICAgMTIyMjQwLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgCisgICAgMTIyMjc2LCAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgCisgICAgMTIyMzEyLCAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgCisgICAgMTIyMzQ4LCAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgCisgICAgMTIyMzg0LCAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgCisgICAgMTIyNDIwLCAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgCisgICAgMTIyNDU2LCAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgCisgICAgMTIyNDkyLCAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgCisgICAgMTIyNTI4LCAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgCisgICAgMTIyNTY0LCAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjU4NCwgMTIyNTg4LCAxMjI1OTIsIDEyMjU5NiwgMTIyNjAwLCAxMjI2MDQsIDEyMjYwOCwgCisgICAgMTIyNjEyLCAxMjI2MTYsIDEyMjYyMCwgMTIyNjI0LCAxMjI2MjgsIDEyMjYzMiwgMTIyNjM2LCAxMjI2NDAsIDEyMjY0NCwgCisgICAgMTIyNjQ4LCAxMjI2NTIsIDEyMjY1NiwgMTIyNjYwLCAxMjI2NjQsIDEyMjY2OCwgMTIyNjcyLCAxMjI2NzYsIDEyMjY4MCwgCisgICAgMTIyNjg0LCAxMjI2ODgsIDEyMjY5MiwgMTIyNjk2LCAxMjI3MDAsIDEyMjcwNCwgMTIyNzA4LCAxMjI3MTIsIDEyMjcxNiwgCisgICAgMTIyNzIwLCAxMjI3MjQsIDEyMjcyOCwgMTIyNzMyLCAxMjI3MzYsIDEyMjc0MCwgMTIyNzQ0LCAxMjI3NDgsIDEyMjc1MiwgCisgICAgMTIyNzU2LCAxMjI3NjAsIDEyMjc2NCwgMTIyNzY4LCAxMjI3NzIsIDEyMjc3NiwgMTIyNzgwLCAxMjI3ODQsIDEyMjc4OCwgCisgICAgMTIyNzkyLCAxMjI3OTYsIDEyMjgwMCwgMTIyODA0LCAxMjI4MDgsIDEyMjgxMiwgMTIyODE2LCAxMjI4MjAsIDEyMjgyNCwgCisgICAgMTIyODI4LCAxMjI4MzIsIDEyMjgzNiwgMTIyODQwLCAxMjI4NDQsIDEyMjg0OCwgMTIyODUyLCAxMjI4NTYsIDEyMjg2MCwgCisgICAgMTIyODY0LCAxMjI4NjgsIDEyMjg3MiwgMTIyODc2LCAxMjI4ODAsIDEyMjg4NCwgMTIyODg4LCAxMjI4OTIsIDEyMjg5NiwgCisgICAgMTIyOTAwLCAxMjI5MDQsIDEyMjkwOCwgMTIyOTEyLCAxMjI5MTYsIDEyMjkyMCwgMTIyOTI0LCAxMjI5MjgsIDEyMjkzMiwgCisgICAgMTIyOTM2LCAxMjI5NDAsIDEyMjk0NCwgMTIyOTQ4LCAxMjI5NTIsIDEyMjk1NiwgMTIyOTYwLCAxMjI5NjQsIDEyMjk2OCwgCisgICAgMTIyOTcyLCAxMjI5NzYsIDEyMjk4MCwgMTIyOTg0LCAxMjI5ODgsIDEyMjk5MiwgMTIyOTk2LCAxMjMwMDAsIDEyMzAwNCwgCisgICAgMTIzMDA4LCAxMjMwMTIsIDEyMzAxNiwgMTIzMDIwLCAxMjMwMjQsIDEyMzAyOCwgMTIzMDMyLCAxMjMwMzYsIDEyMzA0MCwgCisgICAgMTIzMDQ0LCAxMjMwNDgsIDEyMzA1MiwgMTIzMDU2LCAxMjMwNjAsIDEyMzA2NCwgMTIzMDY4LCAxMjMwNzIsIDEyMzA3NiwgCisgICAgMTIzMDgwLCAxMjMwODQsIDEyMzA4OCwgMTIzMDkyLCAxMjMwOTYsIDEyMzEwMCwgMTIzMTA0LCAxMjMxMDgsIDEyMzExMiwgCisgICAgMTIzMTE2LCAxMjMxMjAsIDEyMzEyNCwgMTIzMTI4LCAxMjMxMzIsIDEyMzEzNiwgMTIzMTQwLCAxMjMxNDQsIDEyMzE0OCwgCisgICAgMTIzMTUyLCAxMjMxNTYsIDEyMzE2MCwgMTIzMTY0LCAxMjMxNjgsIDEyMzE3MiwgMTIzMTc2LCAxMjMxODAsIDEyMzE4NCwgCisgICAgMTIzMTg4LCAxMjMxOTIsIDEyMzE5NiwgMTIzMjAwLCAxMjMyMDQsIDEyMzIwOCwgMTIzMjEyLCAxMjMyMTYsIDEyMzIyMCwgCisgICAgMTIzMjI0LCAxMjMyMjgsIDEyMzIzMiwgMTIzMjM2LCAxMjMyNDAsIDEyMzI0NCwgMTIzMjQ4LCAxMjMyNTIsIDEyMzI1NiwgCisgICAgMTIzMjYwLCAxMjMyNjQsIDEyMzI2OCwgMTIzMjcyLCAxMjMyNzYsIDEyMzI4MCwgMTIzMjg0LCAxMjMyODgsIDEyMzI5MiwgCisgICAgMTIzMjk2LCAxMjMzMDAsIDEyMzMwNCwgMTIzMzA4LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAxMjMzMjQsIDEyMzMyOCwgCisgICAgMTIzMzMyLCAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ0LCAxMjMzNDgsIDEyMzM1MiwgMTIzMzU2LCAxMjMzNjAsIDEyMzM2NCwgCisgICAgMTIzMzY4LCAxMjMzNzIsIDEyMzM3NiwgMTIzMzgwLCAxMjMzODQsIDEyMzM4OCwgMTIzMzkyLCAxMjMzOTYsIDEyMzQwMCwgCisgICAgMTIzNDA0LCAxMjM0MDgsIDEyMzQxMiwgMTIzNDE2LCAxMjM0MjAsIDEyMzQyNCwgMTIzNDI4LCAxMjM0MzIsIDEyMzQzNiwgCisgICAgMTIzNDQwLCAxMjM0NDQsIDEyMzQ0OCwgMTIzNDUyLCAxMjM0NTYsIDEyMzQ2MCwgMTIzNDY0LCAxMjM0NjgsIDEyMzQ3MiwgCisgICAgMTIzNDc2LCAxMjM0ODAsIDEyMzQ4NCwgMTIzNDg4LCAxMjM0OTIsIDEyMzQ5NiwgMTIzNTAwLCAxMjM1MDQsIDEyMzUwOCwgCisgICAgMTIzNTEyLCAxMjM1MTYsIDEyMzUyMCwgMTIzNTI0LCAxMjM1MjgsIDEyMzUzMiwgMTIzNTM2LCAxMjM1NDAsIDEyMzU0NCwgCisgICAgMTIzNTQ4LCAxMjM1NTIsIDEyMzU1NiwgMTIzNTYwLCAxMjM1NjQsIDEyMzU2OCwgMTIzNTcyLCAxMjM1NzYsIDEyMzU4MCwgCisgICAgMTIzNTg0LCAxMjM1ODgsIDEyMzU5MiwgMTIzNTk2LCAxMjM2MDAsIDEyMzYwNCwgMTIzNjA4LCAxMjM2MTIsIDEyMzYxNiwgCisgICAgMTIzNjIwLCAxMjM2MjQsIDEyMzYyOCwgMTIzNjMyLCAxMjM2MzYsIDEyMzY0MCwgMTIzNjQ0LCAxMjM2NDgsIDEyMzY1MiwgCisgICAgMTIzNjU2LCAxMjM2NjAsIDEyMzY2NCwgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NiwgMTIzNjgwLCAxMjM2ODQsIDEyMzY4OCwgCisgICAgMTIzNjkyLCAxMjM2OTYsIDEyMzcwMCwgMTIzNzA0LCAxMjM3MDgsIDEyMzcxMiwgMTIzNzE2LCAxMjM3MjAsIDEyMzcyNCwgCisgICAgMTIzNzI4LCAxMjM3MzIsIDEyMzczNiwgMTIzNzQwLCAxMjM3NDQsIDEyMzc0OCwgMTIzNzUyLCAxMjM3NTYsIDEyMzc2MCwgCisgICAgMTIzNzY0LCAxMjM3NjgsIDEyMzc3MiwgMTIzNzc2LCAxMjM3ODAsIDEyMzc4NCwgMTIzNzg4LCAxMjM3OTIsIDEyMzc5NiwgCisgICAgMTIzODAwLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDEyMzgyMCwgMTIzODI0LCAxMjM4MjgsIDEyMzgzMiwgCisgICAgMTIzODM2LCAxMjM4NDAsIDEyMzg0NCwgMTIzODQ4LCAxMjM4NTIsIDEyMzg1NiwgMTIzODYwLCAxMjM4NjQsIDEyMzg2OCwgCisgICAgMTIzODcyLCAxMjM4NzYsIDEyMzg4MCwgMTIzODg0LCAxMjM4ODgsIDEyMzg5MiwgMTIzODk2LCAxMjM5MDAsIDEyMzkwNCwgCisgICAgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNiwgMTIzOTIwLCAxMjM5MjQsIDEyMzkyOCwgMTIzOTMyLCAxMjM5MzYsIDEyMzk0MCwgCisgICAgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1MiwgMTIzOTU2LCAxMjM5NjAsIDEyMzk2NCwgMTIzOTY4LCAxMjM5NzIsIDEyMzk3NiwgCisgICAgMTIzOTgwLCAxMjM5ODQsIDEyMzk4OCwgMTIzOTkyLCAxMjM5OTYsIDEyNDAwMCwgMTI0MDA0LCAxMjQwMDgsIDEyNDAxMiwgCisgICAgMTI0MDE2LCAxMjQwMjAsIDEyNDAyNCwgMTI0MDI4LCAxMjQwMzIsIDEyNDAzNiwgMTI0MDQwLCAxMjQwNDQsIDEyNDA0OCwgCisgICAgMTI0MDUyLCAxMjQwNTYsIDEyNDA2MCwgMTI0MDY0LCAxMjQwNjgsIDEyNDA3MiwgMTI0MDc2LCAxMjQwODAsIDEyNDA4NCwgCisgICAgMTI0MDg4LCAxMjQwOTIsIDEyNDA5NiwgMTI0MTAwLCAxMjQxMDQsIDEyNDEwOCwgMTI0MTEyLCAxMjQxMTYsIDEyNDEyMCwgCisgICAgMTI0MTI0LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM2LCAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAxMjQxNTIsIDEyNDE1NiwgCisgICAgMTI0MTYwLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE4MCwgMTI0MTg0LCAxMjQxODgsIDEyNDE5MiwgCisgICAgMTI0MTk2LCAxMjQyMDAsIDEyNDIwNCwgMTI0MjA4LCAxMjQyMTIsIDEyNDIxNiwgMTI0MjIwLCAxMjQyMjQsIDEyNDIyOCwgCisgICAgMTI0MjMyLCAxMjQyMzYsIDEyNDI0MCwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAxMjQyNjAsIDEyNDI2NCwgCisgICAgMTI0MjY4LCAxMjQyNzIsIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDEyNDI4OCwgMTI0MjkyLCAxMjQyOTYsIDEyNDMwMCwgCisgICAgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMiwgMTI0MzE2LCAxMjQzMjYsIDEyNDMzMCwgMTI0MzM0LCAxMjQzMzgsIDEyNDM0MiwgCisgICAgMTI0MzQ2LCAxMjQzNTAsIDEyNDM1NCwgMTI0MzU4LCAxMjQzNjIsIDEyNDM2NiwgMTI0MzcwLCAxMjQzNzUsIDEyNDM3OSwgCisgICAgMTI0MzgzLCAxMjQzODcsIDEyNDM5MSwgMTI0Mzk1LCAxMjQzOTksIDEyNDQwMywgMTI0NDA3LCAxMjQ0MTEsIDEyNDQxNSwgCisgICAgMTI0NDE5LCAxMjQ0MjMsIDEyNDQyNywgMTI0NDMxLCAxMjQ0MzUsIDEyNDQzOSwgMTI0NDQ4LCAxMjQ0NTcsIDEyNDQ2MSwgCisgICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCisgICAgMTI0NTAxLCAxMjQ1MDUsIDEyNDUwOSwgMTI0NTEzLCAxMjQ1MTcsIDEyNDUyMSwgMTI0NTI1LCAxMjQ1MjksIDEyNDUzMywgCisgICAgMTI0NTM3LCAxMjQ1NDEsIDEyNDU0NSwgMTI0NTQ5LCAxMjQ1NTMsIDEyNDU1NywgMTI0NTYxLCAxMjQ1NjUsIDEyNDU2OSwgCisgICAgMTI0NTczLCAxMjQ1NzcsIDEyNDU4MSwgMTI0NTg1LCAxMjQ1ODksIDEyNDU5MywgMTI0NTk3LCAxMjQ2MDEsIDEyNDYwNSwgCisgICAgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIDEyNDYyOSwgMTI0NjMzLCAxMjQ2MzcsIDEyNDY0MSwgCisgICAgMTI0NjQ1LCAxMjQ2NDksIDEyNDY1MywgMTI0NjU3LCAxMjQ2NjEsIDEyNDY2NSwgMTI0NjY5LCAxMjQ2NzMsIDEyNDY3NywgCisgICAgMTI0NjgxLCAxMjQ2ODUsIDEyNDY4OSwgMTI0NjkzLCAxMjQ2OTcsIDEyNDcwMSwgMTI0NzA1LCAxMjQ3MDksIDEyNDcxMywgCisgICAgMTI0NzE3LCAxMjQ3MjEsIDEyNDcyNSwgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzQxLCAxMjQ3NDUsIDEyNDc0OSwgCisgICAgMTI0NzUzLCAxMjQ3NTcsIDEyNDc2MSwgMTI0NzY1LCAxMjQ3NjksIDEyNDc3MywgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4NSwgCisgICAgMTI0Nzg5LCAxMjQ3OTMsIDEyNDc5NywgMTI0ODAxLCAxMjQ4MDUsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMSwgCisgICAgMTI0ODI1LCAxMjQ4MjksIDEyNDgzMywgMTI0ODM3LCAxMjQ4NDEsIDEyNDg0NSwgMTI0ODQ5LCAxMjQ4NTMsIDEyNDg1NywgCisgICAgMTI0ODYxLCAxMjQ4NjUsIDEyNDg2OSwgMTI0ODczLCAxMjQ4NzcsIDEyNDg4MSwgMTI0ODg1LCAxMjQ4ODksIDEyNDg5MywgCisgICAgMTI0ODk3LCAxMjQ5MDEsIDEyNDkwNSwgMTI0OTA5LCAxMjQ5MTMsIDEyNDkxNywgMTI0OTIxLCAxMjQ5MjUsIDEyNDkyOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0OTMzLCAxMjQ5NDEsIAorICAgIDEyNDk0OSwgMTI0OTU5LCAxMjQ5NjksIDEyNDk3NywgMTI0OTgzLCAxMjQ5OTEsIDEyNDk5OSwgMTI1MDA5LCAxMjUwMjEsIAorICAgIDEyNTAzMywgMTI1MDM5LCAxMjUwNDcsIDEyNTA1MywgMTI1MDU5LCAxMjUwNjUsIDEyNTA3MSwgMTI1MDc3LCAxMjUwODMsIAorICAgIDEyNTA4OSwgMTI1MDk1LCAxMjUxMDEsIDEyNTEwNywgMTI1MTEzLCAxMjUxMjEsIDEyNTEyOSwgMTI1MTM1LCAxMjUxNDEsIAorICAgIDEyNTE0NywgMTI1MTUzLCAxMjUxNjEsIDEyNTE2OSwgMTI1MTc4LCAxMjUxODQsIDEyNTE5MiwgMTI1MTk4LCAxMjUyMDQsIAorICAgIDEyNTIxMCwgMTI1MjE2LCAxMjUyMjIsIDEyNTIzMCwgMTI1MjM4LCAxMjUyNDQsIDEyNTI1MCwgMTI1MjU2LCAxMjUyNjIsIAorICAgIDEyNTI2OCwgMTI1Mjc0LCAxMjUyODAsIDEyNTI4NiwgMTI1MjkyLCAxMjUyOTgsIDEyNTMwNCwgMTI1MzEwLCAxMjUzMTYsIAorICAgIDEyNTMyMiwgMTI1MzI4LCAxMjUzMzQsIDEyNTM0MCwgMTI1MzQ2LCAxMjUzNTIsIDEyNTM2MCwgMTI1MzY2LCAxMjUzNzIsIAorICAgIDEyNTM4MiwgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDA4LCAxMjU0MTQsIDEyNTQyMCwgMTI1NDI2LCAxMjU0MzIsIAorICAgIDEyNTQzOCwgMTI1NDQ0LCAxMjU0NTAsIDEyNTQ1NiwgMTI1NDYyLCAxMjU0NjgsIDEyNTQ3NCwgMTI1NDgwLCAxMjU0ODYsIAorICAgIDEyNTQ5MiwgMTI1NDk4LCAxMjU1MDQsIDEyNTUxMCwgMTI1NTE2LCAxMjU1MjIsIDEyNTUzMCwgMTI1NTM2LCAxMjU1NDQsIAorICAgIDEyNTU1MiwgMTI1NTYwLCAxMjU1NjYsIDEyNTU3MiwgMTI1NTc4LCAxMjU1ODQsIDEyNTU5MCwgMTI1NTk4LCAxMjU2MDgsIAorICAgIDEyNTYxNiwgMTI1NjI0LCAxMjU2MzAsIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY1OCwgMTI1NjY2LCAxMjU2NzQsIAorICAgIDEyNTY4MiwgMTI1Njg4LCAxMjU2OTQsIDEyNTcwMCwgMTI1NzA2LCAxMjU3MTIsIDEyNTcxOCwgMTI1NzI2LCAxMjU3MzQsIAorICAgIDEyNTc0MCwgMTI1NzQ2LCAxMjU3NTIsIDEyNTc1OCwgMTI1NzY0LCAxMjU3NzIsIDEyNTc3OCwgMTI1Nzg0LCAxMjU3OTAsIAorICAgIDEyNTc5NiwgMTI1ODAyLCAxMjU4MDgsIDEyNTgxNiwgMTI1ODIyLCAxMjU4MjgsIDEyNTgzNCwgMTI1ODQwLCAxMjU4NDgsIAorICAgIDEyNTg1NiwgMTI1ODYyLCAxMjU4NjgsIDEyNTg3NCwgMTI1ODc5LCAxMjU4ODUsIDEyNTg5MSwgMTI1ODk4LCAxMjU5MDMsIAorICAgIDEyNTkwOCwgMTI1OTEzLCAxMjU5MTgsIDEyNTkyMywgMTI1OTI4LCAxMjU5MzMsIDEyNTkzOCwgMTI1OTQzLCAxMjU5NTIsIAorICAgIDEyNTk1OSwgMTI1OTY0LCAxMjU5NjksIDEyNTk3NCwgMTI1OTgxLCAxMjU5ODYsIDEyNTk5MSwgMTI1OTk2LCAxMjYwMDMsIAorICAgIDEyNjAwOCwgMTI2MDEzLCAxMjYwMTgsIDEyNjAyMywgMTI2MDI4LCAxMjYwMzMsIDEyNjAzOCwgMTI2MDQzLCAxMjYwNDgsIAorICAgIDEyNjA1MywgMTI2MDU4LCAxMjYwNjUsIDEyNjA3MCwgMTI2MDc3LCAxMjYwODIsIDEyNjA4NywgMTI2MDk0LCAxMjYwOTksIAorICAgIDEyNjEwNCwgMTI2MTA5LCAxMjYxMTQsIDEyNjExOSwgMTI2MTI0LCAxMjYxMjksIDEyNjEzNCwgMTI2MTM5LCAxMjYxNDQsIAorICAgIDEyNjE0OSwgMTI2MTU0LCAxMjYxNTksIDEyNjE2NCwgMTI2MTY5LCAxMjYxNzQsIDEyNjE3OSwgMTI2MTg0LCAxMjYxODksIAorICAgIDEyNjE5NiwgMTI2MjAxLCAxMjYyMDYsIDEyNjIxMSwgMTI2MjE2LCAxMjYyMjEsIDEyNjIyNiwgMTI2MjMxLCAxMjYyMzYsIAorICAgIDEyNjI0MSwgMTI2MjQ2LCAxMjYyNTEsIDEyNjI1NiwgMTI2MjYxLCAxMjYyNjgsIDEyNjI3MywgMTI2Mjc4LCAxMjYyODUsIAorICAgIDEyNjI5MCwgMTI2Mjk1LCAxMjYzMDAsIDEyNjMwNSwgMTI2MzEwLCAxMjYzMTUsIDEyNjMyMCwgMTI2MzI1LCAxMjYzMzAsIAorICAgIDEyNjMzNSwgMTI2MzQyLCAxMjYzNDcsIDEyNjM1MiwgMTI2MzU3LCAxMjYzNjIsIDEyNjM2NywgMTI2Mzc0LCAxMjYzODEsIAorICAgIDEyNjM4NiwgMTI2MzkxLCAxMjYzOTYsIDEyNjQwMSwgMTI2NDA2LCAxMjY0MTEsIDEyNjQxNiwgMTI2NDIxLCAxMjY0MjYsIAorICAgIDEyNjQzMSwgMTI2NDM2LCAxMjY0NDEsIDEyNjQ0NiwgMTI2NDUxLCAxMjY0NTYsIDEyNjQ2MSwgMTI2NDY2LCAxMjY0NzEsIAorICAgIDEyNjQ3NiwgMTI2NDgxLCAxMjY0ODYsIDEyNjQ5MSwgMTI2NDk2LCAxMjY1MDEsIDEyNjUwNiwgMTI2NTExLCAxMjY1MTYsIAorICAgIDEyNjUyMSwgMTI2NTI2LCAxMjY1MzEsIDEyNjUzNiwgMTI2NTQxLCAxMjY1NDYsIDEyNjU1MSwgMTI2NTU2LCAxMjY1NjEsIAorICAgIDEyNjU2OCwgMTI2NTczLCAxMjY1NzgsIDEyNjU4MywgMTI2NTg4LCAxMjY1OTMsIDEyNjU5OCwgMTI2NjAzLCAxMjY2MDgsIAorICAgIDEyNjYxMywgMTI2NjE4LCAxMjY2MjMsIDEyNjYyOCwgMTI2NjMzLCAxMjY2MzgsIDEyNjY0MywgMTI2NjQ4LCAxMjY2NTMsIAorICAgIDEyNjY1OCwgMTI2NjYzLCAxMjY2NjgsIDEyNjY3MywgMTI2Njc4LCAxMjY2ODMsIDEyNjY4OCwgMTI2NjkzLCAxMjY2OTgsIAorICAgIDEyNjcwMywgMTI2NzA4LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzIzLCAxMjY3MjgsIDEyNjczMywgMTI2NzM4LCAxMjY3NDMsIAorICAgIDEyNjc0OCwgMTI2NzUzLCAxMjY3NTgsIDEyNjc2MywgMTI2NzY4LCAxMjY3NzMsIDEyNjc3OCwgMTI2NzgzLCAxMjY3ODgsIAorICAgIDEyNjc5MywgMTI2Nzk4LCAxMjY4MDMsIDEyNjgwOCwgMTI2ODEzLCAxMjY4MTgsIDEyNjgyMywgMTI2ODI4LCAxMjY4MzMsIAorICAgIDEyNjgzOCwgMTI2ODQzLCAxMjY4NDgsIDEyNjg1MywgMTI2ODU4LCAxMjY4NjUsIDEyNjg3MCwgMTI2ODc1LCAxMjY4ODAsIAorICAgIDEyNjg4NSwgMTI2ODkwLCAxMjY4OTUsIDEyNjkwMCwgMTI2OTA1LCAxMjY5MTAsIDEyNjkxNSwgMTI2OTIwLCAxMjY5MjUsIAorICAgIDEyNjkzMCwgMTI2OTM1LCAxMjY5NDAsIDEyNjk0NSwgMTI2OTUwLCAxMjY5NTUsIDEyNjk2MCwgMTI2OTY1LCAxMjY5NzAsIAorICAgIDEyNjk3NywgMTI2OTgyLCAxMjY5ODcsIDEyNjk5NCwgMTI2OTk5LCAxMjcwMDQsIDEyNzAwOSwgMTI3MDE0LCAxMjcwMTksIAorICAgIDEyNzAyNCwgMTI3MDI5LCAxMjcwMzQsIDEyNzAzOSwgMTI3MDQ0LCAxMjcwNDksIDEyNzA1NCwgMTI3MDU5LCAxMjcwNjQsIAorICAgIDEyNzA2OSwgMTI3MDc0LCAxMjcwNzksIDEyNzA4NCwgMTI3MDg5LCAxMjcwOTQsIDEyNzA5OSwgMTI3MTA0LCAxMjcxMDksIAorICAgIDEyNzExNCwgMTI3MTE5LCAxMjcxMjQsIDEyNzEyOSwgMTI3MTM0LCAxMjcxMzksIDEyNzE0NCwgMTI3MTQ5LCAxMjcxNTQsIAorICAgIDEyNzE1OSwgMTI3MTY0LCAxMjcxNjksIDEyNzE3NCwgMTI3MTc5LCAxMjcxODQsIDEyNzE4OSwgMTI3MTk0LCAxMjcxOTksIAorICAgIDEyNzIwNCwgMTI3MjA5LCAxMjcyMTYsIDEyNzIyMSwgMTI3MjI2LCAxMjcyMzMsIDEyNzI0MCwgMTI3MjQ1LCAxMjcyNTAsIAorICAgIDEyNzI1NSwgMTI3MjYwLCAxMjcyNjUsIDEyNzI3MCwgMTI3Mjc1LCAxMjcyODAsIDEyNzI4NSwgMTI3MjkwLCAxMjcyOTUsIAorICAgIDEyNzMwMCwgMTI3MzA1LCAxMjczMTAsIDEyNzMxNSwgMTI3MzIwLCAxMjczMjUsIDEyNzMzMCwgMTI3MzM1LCAxMjczNDAsIAorICAgIDEyNzM0NSwgMTI3MzUwLCAxMjczNTUsIDEyNzM2MCwgMTI3MzY1LCAxMjczNzIsIDEyNzM3NywgMTI3MzgyLCAxMjczODcsIAorICAgIDEyNzM5MiwgMTI3Mzk3LCAxMjc0MDIsIDEyNzQwNywgMTI3NDEyLCAxMjc0MTcsIDEyNzQyMiwgMTI3NDI3LCAxMjc0MzIsIAorICAgIDEyNzQzNywgMTI3NDQyLCAxMjc0NDcsIDEyNzQ1MiwgMTI3NDU3LCAxMjc0NjIsIDEyNzQ2OSwgMTI3NDc0LCAxMjc0NzksIAorICAgIDEyNzQ4NCwgMTI3NDg5LCAxMjc0OTQsIDEyNzQ5OSwgMTI3NTA0LCAxMjc1MTAsIDEyNzUxNSwgMTI3NTIwLCAxMjc1MjUsIAorICAgIDEyNzUzMCwgMTI3NTM1LCAxMjc1NDAsIDEyNzU0NSwgMTI3NTUwLCAxMjc1NTcsIDEyNzU2NCwgMTI3NTY5LCAxMjc1NzQsIAorICAgIDEyNzU3OCwgMTI3NTgzLCAxMjc1ODcsIDEyNzU5MSwgMTI3NTk2LCAxMjc2MDMsIDEyNzYwOCwgMTI3NjEzLCAxMjc2MjIsIAorICAgIDEyNzYyNywgMTI3NjMyLCAxMjc2MzcsIDEyNzY0MiwgMTI3NjQ5LCAxMjc2NTYsIDEyNzY2MSwgMTI3NjY2LCAxMjc2NzEsIAorICAgIDEyNzY3NiwgMTI3NjgzLCAxMjc2ODgsIDEyNzY5MywgMTI3Njk4LCAxMjc3MDMsIDEyNzcwOCwgMTI3NzEzLCAxMjc3MTgsIAorICAgIDEyNzcyMywgMTI3NzI4LCAxMjc3MzMsIDEyNzczOCwgMTI3NzQzLCAxMjc3NTAsIDEyNzc1NSwgMTI3NzYwLCAxMjc3NjUsIAorICAgIDEyNzc3MCwgMTI3Nzc1LCAxMjc3NzksIDEyNzc4NCwgMTI3Nzg5LCAxMjc3OTQsIDEyNzc5OSwgMTI3ODA0LCAxMjc4MDksIAorICAgIDEyNzgxNCwgMTI3ODE5LCAxMjc4MjQsIDEyNzgzMCwgMTI3ODM2LCAxMjc4NDIsIDEyNzg0OCwgMTI3ODU0LCAxMjc4NjAsIAorICAgIDEyNzg2NiwgMTI3ODcyLCAxMjc4NzgsIDEyNzg4NCwgMTI3ODkwLCAxMjc4OTYsIDEyNzkwMiwgMTI3OTA4LCAxMjc5MTQsIAorICAgIDEyNzkyMCwgMTI3OTI2LCAxMjc5MzIsIDEyNzkzOCwgMTI3OTQ0LCAxMjc5NTAsIDEyNzk1NiwgMTI3OTYyLCAxMjc5NjgsIAorICAgIDEyNzk3MywgMTI3OTc5LCAxMjc5ODUsIDEyNzk5MSwgMTI3OTk3LCAxMjgwMDMsIDEyODAwOSwgMTI4MDE1LCAxMjgwMjEsIAorICAgIDEyODAyNywgMTI4MDMzLCAxMjgwMzksIDEyODA0NSwgMTI4MDUxLCAxMjgwNTcsIDEyODA2MywgMTI4MDY5LCAxMjgwNzUsIAorICAgIDEyODA4MSwgMTI4MDg3LCAxMjgwOTMsIDEyODA5OCwgMTI4MTA0LCAxMjgxMTAsIDEyODExNiwgMTI4MTIyLCAxMjgxMjgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODEzNCwgMTI4MTM5LCAxMjgxNDQsIDEyODE0OSwgMTI4MTU0LCAxMjgxNTksIAorICAgIDEyODE2NCwgMTI4MTY4LCAxMjgxNzMsIDEyODE3OCwgMTI4MTgzLCAxMjgxODgsIDEyODE5MywgMTI4MTk4LCAxMjgyMDMsIAorICAgIDEyODIwOCwgMTI4MjEzLCAxMjgyMTcsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzEsIDEyODIzNiwgMTI4MjQxLCAxMjgyNDYsIAorICAgIDEyODI1MSwgMTI4MjU1LCAxMjgyNjAsIDEyODI2NSwgMTI4MjcwLCAxMjgyNzUsIDEyODI4MCwgMCwgMTI4Mjg1LCAKKyAgICAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOSwgMTI4MzIzLCAKKyAgICAwLCAwLCAwLCAwLCAxMjgzMjgsIDEyODMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MzM3LCAxMjgzNDQsIDEyODM1MCwgMTI4MzU3LCAxMjgzNjQsIAorICAgIDEyODM3MSwgMTI4Mzc4LCAxMjgzODUsIDEyODM5MiwgMTI4Mzk5LCAxMjg0MDYsIDEyODQxMywgMTI4NDIwLCAxMjg0MjcsIAorICAgIDEyODQzNCwgMTI4NDQxLCAxMjg0NDgsIDEyODQ1NSwgMTI4NDYxLCAxMjg0NjgsIDEyODQ3NSwgMTI4NDgyLCAxMjg0ODgsIAorICAgIDEyODQ5NSwgMTI4NTAxLCAxMjg1MDcsIDEyODUxNCwgMTI4NTIwLCAxMjg1MjcsIDEyODUzMywgMCwgMCwgMTI4NTM5LCAKKyAgICAxMjg1NDcsIDEyODU1NSwgMTI4NTY0LCAxMjg1NzMsIDEyODU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI4NTkwLCAxMjg1OTUsIDEyODYwMCwgMTI4NjA1LCAxMjg2MTAsIDEyODYxNSwgMTI4NjIwLCAxMjg2MjUsIDEyODYzMCwgCisgICAgMTI4NjM1LCAxMjg2NDAsIDEyODY0NSwgMTI4NjUwLCAxMjg2NTUsIDEyODY2MCwgMTI4NjY1LCAxMjg2NzAsIDEyODY3NSwgCisgICAgMTI4NjgwLCAxMjg2ODUsIDEyODY5MCwgMTI4Njk1LCAxMjg3MDAsIDEyODcwNSwgMTI4NzEwLCAxMjg3MTUsIDEyODcyMCwgCisgICAgMTI4NzI1LCAxMjg3MzAsIDEyODczNSwgMTI4NzQwLCAxMjg3NDUsIDEyODc1MCwgMTI4NzU1LCAxMjg3NjAsIDEyODc2NSwgCisgICAgMTI4NzcwLCAxMjg3NzUsIDEyODc4MCwgMTI4Nzg1LCAxMjg3OTAsIDEyODc5NSwgMTI4ODAwLCAxMjg4MDUsIDEyODgxMCwgCisgICAgMTI4ODE1LCAxMjg4MjAsIDEyODgyNSwgMTI4ODMwLCAxMjg4MzcsIDEyODg0NCwgMTI4ODUxLCAxMjg4NTgsIDEyODg2NSwgCisgICAgMTI4ODcyLCAxMjg4NzksIDEyODg4NiwgMTI4ODk1LCAxMjg5MDIsIDEyODkwOSwgMTI4OTE2LCAxMjg5MjMsIDEyODkzMCwgCisgICAgMTI4OTM3LCAxMjg5NDQsIDEyODk1MSwgMTI4OTU4LCAxMjg5NjUsIDEyODk3MiwgMTI4OTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMjg5ODYsIDEyODk5MSwgMTI4OTk1LCAxMjg5OTksIDEyOTAwMywgMTI5MDA3LCAxMjkwMTEsIAorICAgIDEyOTAxNSwgMTI5MDIwLCAxMjkwMjQsIDAsIDEyOTAyOSwgMTI5MDM0LCAxMjkwMzksIDEyOTA0NiwgMTI5MDUxLCAKKyAgICAxMjkwNTgsIDEyOTA2NSwgMCwgMTI5MDcwLCAxMjkwNzcsIDEyOTA4MiwgMTI5MDg3LCAxMjkwOTQsIDEyOTEwMSwgCisgICAgMTI5MTA2LCAxMjkxMTEsIDEyOTExNiwgMTI5MTIxLCAxMjkxMjYsIDEyOTEzMywgMTI5MTQwLCAxMjkxNDUsIDEyOTE1MCwgCisgICAgMTI5MTU1LCAxMjkxNjgsIDEyOTE3NywgMTI5MTg0LCAxMjkxOTMsIDEyOTIwMiwgMCwgMCwgMCwgMCwgMCwgMTI5MjExLCAKKyAgICAxMjkyMTgsIDEyOTIyNSwgMTI5MjMyLCAxMjkyMzksIDEyOTI0NiwgMTI5MjUzLCAxMjkyNjAsIDEyOTI2NywgMTI5Mjc0LCAKKyAgICAxMjkyODEsIDEyOTI4OCwgMTI5Mjk1LCAxMjkzMDIsIDEyOTMwOSwgMTI5MzE2LCAxMjkzMjMsIDEyOTMzMCwgMTI5MzM3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjkzNDQsIDEyOTM0NywgMTI5MzUxLCAKKyAgICAxMjkzNTUsIDEyOTM1OSwgMTI5MzYyLCAxMjkzNjYsIDEyOTM3MSwgMTI5Mzc1LCAxMjkzNzksIDEyOTM4MywgMTI5Mzg3LCAKKyAgICAxMjkzOTEsIDEyOTM5NiwgMTI5NDAxLCAxMjk0MDUsIDEyOTQwOSwgMTI5NDEzLCAxMjk0MTcsIDEyOTQyMiwgMTI5NDI4LCAKKyAgICAxMjk0MzIsIDEyOTQzNiwgMTI5NDQwLCAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUyLCAxMjk0NTYsIDEyOTQ2MCwgMTI5NDY0LCAKKyAgICAxMjk0NjgsIDEyOTQ3MSwgMTI5NDc1LCAxMjk0NzksIDEyOTQ4MywgMTI5NDg3LCAxMjk0OTEsIDEyOTQ5NSwgMTI5NTAxLCAKKyAgICAxMjk1MDQsIDEyOTUwOCwgMTI5NTEyLCAxMjk1MTYsIDEyOTUyMCwgMTI5NTI0LCAxMjk1MjgsIDEyOTUzMiwgMTI5NTM2LCAKKyAgICAxMjk1NDAsIDEyOTU0NSwgMTI5NTUwLCAxMjk1NTYsIDEyOTU2MCwgMTI5NTY0LCAxMjk1NjgsIDEyOTU3MiwgMTI5NTc2LCAKKyAgICAxMjk1ODAsIDEyOTU4NSwgMTI5NTg5LCAxMjk1OTMsIDEyOTU5NywgMTI5NjAxLCAxMjk2MDUsIDEyOTYxMSwgMTI5NjE1LCAKKyAgICAxMjk2MTksIDEyOTYyMywgMTI5NjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk2MzEsIDEyOTYzNSwgCisgICAgMTI5NjM5LCAxMjk2NDUsIDEyOTY1MSwgMTI5NjU1LCAxMjk2NjAsIDEyOTY2NSwgMTI5NjcwLCAxMjk2NzUsIDEyOTY3OSwgCisgICAgMTI5Njg0LCAxMjk2ODksIDEyOTY5NCwgMTI5Njk4LCAxMjk3MDMsIDEyOTcwOCwgMTI5NzEzLCAxMjk3MTcsIDEyOTcyMiwgCisgICAgMTI5NzI3LCAxMjk3MzIsIDEyOTczNywgMTI5NzQyLCAxMjk3NDcsIDEyOTc1MiwgMTI5NzU3LCAxMjk3NjEsIDEyOTc2NiwgCisgICAgMTI5NzcxLCAxMjk3NzYsIDEyOTc4MSwgMTI5Nzg2LCAxMjk3OTEsIDEyOTc5NiwgMTI5ODAxLCAxMjk4MDYsIDEyOTgxMSwgCisgICAgMTI5ODE2LCAxMjk4MjMsIDEyOTgyOCwgMTI5ODM1LCAxMjk4NDAsIDEyOTg0NSwgMTI5ODUwLCAxMjk4NTUsIDEyOTg2MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODY1LCAxMjk4NjksIDEyOTg3NSwgCisgICAgMTI5ODc4LCAxMjk4ODEsIDEyOTg4NSwgMTI5ODg5LCAxMjk4OTMsIDEyOTg5NywgMTI5OTAxLCAxMjk5MDUsIDEyOTkwOSwgCisgICAgMTI5OTE1LCAxMjk5MjEsIDEyOTkyNywgMTI5OTMzLCAxMjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk0NSwgMTI5OTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NTYsIDEyOTk2MCwgMTI5OTY0LCAxMjk5NjgsIDEyOTk3MiwgMTI5OTc2LCAKKyAgICAxMjk5ODAsIDEyOTk4MywgMTI5OTg3LCAxMjk5OTEsIDEyOTk5NSwgMTI5OTk5LCAxMzAwMDIsIDEzMDAwOCwgMTMwMDEzLCAKKyAgICAxMzAwMTksIDEzMDAyNSwgMTMwMDMwLCAxMzAwMzQsIDEzMDA0MCwgMTMwMDQ0LCAxMzAwNDgsIDEzMDA1NCwgMTMwMDU4LCAKKyAgICAxMzAwNjIsIDEzMDA2NiwgMTMwMDcwLCAxMzAwNzQsIDEzMDA3OCwgMTMwMDgxLCAxMzAwODcsIDEzMDA5MywgMTMwMDk5LCAKKyAgICAxMzAxMDUsIDEzMDExMiwgMTMwMTE5LCAxMzAxMjYsIDEzMDEzNiwgMTMwMTQzLCAxMzAxNTAsIDEzMDE1NSwgMTMwMTYwLCAKKyAgICAxMzAxNjUsIDEzMDE3MCwgMTMwMTc3LCAxMzAxODQsIDEzMDE5MSwgMTMwMTk4LCAxMzAyMDcsIDEzMDIxMywgMTMwMjIwLCAKKyAgICAxMzAyMjYsIDEzMDIzMywgMTMwMjM5LCAxMzAyNDYsIDEzMDI1MSwgMTMwMjU4LCAxMzAyNjIsIDEzMDI2NiwgMTMwMjcxLCAKKyAgICAxMzAyNzcsIDEzMDI4MywgMTMwMjkwLCAxMzAyOTcsIDEzMDMwMywgMTMwMzEwLCAxMzAzMTMsIDEzMDMxOSwgMTMwMzIzLCAKKyAgICAxMzAzMjYsIDEzMDMzMCwgMTMwMzMzLCAxMzAzMzYsIDEzMDM0MCwgMTMwMzQ1LCAxMzAzNDksIDEzMDM1MywgMTMwMzU5LCAKKyAgICAxMzAzNjQsIDEzMDM3MCwgMTMwMzc0LCAxMzAzNzgsIDEzMDM4MSwgMTMwMzg1LCAxMzAzODksIDEzMDM5NCwgMTMwMzk4LCAKKyAgICAxMzA0MDMsIDEzMDQwNywgMTMwNDEyLCAxMzA0MTYsIDEzMDQyMCwgMTMwNDI0LCAxMzA0MjgsIDEzMDQzMiwgMTMwNDM2LCAKKyAgICAxMzA0NDAsIDEzMDQ0NCwgMTMwNDQ5LCAxMzA0NTQsIDEzMDQ1OSwgMTMwNDY0LCAxMzA0NzAsIDEzMDQ3NiwgMTMwNDgyLCAKKyAgICAxMzA0ODgsIDEzMDQ5NCwgMCwgMCwgMCwgMCwgMCwgMTMwNDk5LCAxMzA1MDcsIDEzMDUxNiwgMTMwNTI0LCAxMzA1MzEsIAorICAgIDEzMDUzOSwgMTMwNTQ2LCAxMzA1NTMsIDEzMDU2MiwgMTMwNTY5LCAxMzA1NzYsIDEzMDU4MywgMTMwNTkxLCAwLCAwLCAwLCAKKyAgICAxMzA1OTksIDEzMDYwNCwgMTMwNjExLCAxMzA2MTcsIDEzMDYyNCwgMTMwNjMwLCAxMzA2MzYsIDEzMDY0MiwgMTMwNjQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2NTQsIDEzMDY1OSwgMTMwNjY2LCAxMzA2NzIsIDEzMDY3OSwgMTMwNjg1LCAKKyAgICAxMzA2OTEsIDEzMDY5NywgMTMwNzAzLCAxMzA3MDksIDAsIDAsIDEzMDcxNCwgMTMwNzIwLCAxMzA3MjYsIDEzMDcyOSwgCisgICAgMTMwNzM4LCAxMzA3NDUsIDEzMDc1MywgMTMwNzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzA3NjcsIDEzMDc3MiwgMTMwNzc3LCAxMzA3ODIsIDEzMDc4OSwgMTMwNzk2LCAxMzA4MDMsIAorICAgIDEzMDgxMCwgMTMwODE1LCAxMzA4MjAsIDEzMDgyNSwgMTMwODMwLCAxMzA4MzcsIDEzMDg0MiwgMTMwODQ5LCAxMzA4NTYsIAorICAgIDEzMDg2MSwgMTMwODY2LCAxMzA4NzEsIDEzMDg3OCwgMTMwODgzLCAxMzA4ODgsIDEzMDg5NSwgMTMwOTAyLCAxMzA5MDcsIAorICAgIDEzMDkxMiwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDMsIDEzMDk0OCwgMTMwOTU1LCAxMzA5NjIsIAorICAgIDEzMDk2OSwgMTMwOTc2LCAxMzA5ODEsIDEzMDk4NiwgMTMwOTkxLCAxMzA5OTgsIDEzMTAwMywgMTMxMDA4LCAxMzEwMTMsIAorICAgIDEzMTAyMCwgMTMxMDI5LCAxMzEwMzYsIDEzMTA0MSwgMTMxMDQ2LCAxMzEwNTEsIDEzMTA1NiwgMTMxMDYxLCAxMzEwNjYsIAorICAgIDEzMTA3NSwgMTMxMDgyLCAxMzEwODcsIDEzMTA5NCwgMTMxMTAxLCAxMzExMDYsIDEzMTExMSwgMTMxMTE2LCAxMzExMjMsIAorICAgIDEzMTEyOCwgMTMxMTM1LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2NCwgMTMxMTcxLCAxMzExNzYsIAorICAgIDEzMTE4MSwgMTMxMTg4LCAxMzExOTUsIDEzMTIwMiwgMTMxMjA3LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjksIAorICAgIDEzMTIzOCwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI1OSwgMTMxMjY4LCAxMzEyNzMsIDEzMTI3OCwgMTMxMjgzLCAxMzEyODgsIAorICAgIDEzMTI5NSwgMTMxMzAyLCAxMzEzMDksIDEzMTMxNiwgMTMxMzIxLCAxMzEzMjYsIDEzMTMzMSwgMTMxMzM4LCAxMzEzNDUsIAorICAgIDEzMTM1MiwgMTMxMzU3LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc0LCAxMzEzODEsIDEzMTM4NiwgMTMxMzkzLCAxMzEzOTgsIAorICAgIDEzMTQwNSwgMTMxNDEyLCAxMzE0MTcsIDEzMTQyMiwgMTMxNDI3LCAxMzE0MzIsIDEzMTQzNywgMTMxNDQyLCAxMzE0NDcsIAorICAgIDEzMTQ1MiwgMTMxNDU3LCAxMzE0NjQsIDEzMTQ3MSwgMTMxNDc4LCAxMzE0ODUsIDEzMTQ5MiwgMTMxNTAxLCAxMzE1MDYsIAorICAgIDEzMTUxMSwgMTMxNTE4LCAxMzE1MjUsIDEzMTUzMCwgMTMxNTM3LCAxMzE1NDQsIDEzMTU1MSwgMTMxNTU4LCAxMzE1NjUsIAorICAgIDEzMTU3MiwgMTMxNTc3LCAxMzE1ODIsIDEzMTU4NywgMTMxNTkyLCAxMzE1OTcsIDEzMTYwNiwgMTMxNjE1LCAxMzE2MjQsIAorICAgIDEzMTYzMywgMTMxNjQyLCAxMzE2NTEsIDEzMTY2MCwgMTMxNjY5LCAxMzE2NzQsIDEzMTY4NSwgMTMxNjk2LCAxMzE3MDUsIAorICAgIDEzMTcxMCwgMTMxNzE1LCAxMzE3MjAsIDEzMTcyNSwgMTMxNzM0LCAxMzE3NDEsIDEzMTc0OCwgMTMxNzU1LCAxMzE3NjIsIAorICAgIDEzMTc2OSwgMTMxNzc2LCAxMzE3ODUsIDEzMTc5NCwgMTMxODA1LCAxMzE4MTQsIDEzMTgyNSwgMTMxODM0LCAxMzE4NDEsIAorICAgIDEzMTg1MCwgMTMxODYxLCAxMzE4NzAsIDEzMTg3OSwgMTMxODg4LCAxMzE4OTcsIDEzMTkwNCwgMTMxOTExLCAxMzE5MTgsIAorICAgIDEzMTkyNywgMTMxOTM2LCAxMzE5NDcsIDEzMTk1NiwgMTMxOTY1LCAxMzE5NzYsIDEzMTk4MSwgMTMxOTg2LCAxMzE5OTcsIAorICAgIDEzMjAwNSwgMTMyMDE0LCAxMzIwMjMsIDEzMjAzMiwgMTMyMDQzLCAxMzIwNTIsIDEzMjA2MSwgMTMyMDcyLCAxMzIwODMsIAorICAgIDEzMjA5NCwgMTMyMTA1LCAxMzIxMTYsIDEzMjEyNywgMTMyMTM0LCAxMzIxNDEsIDEzMjE0OCwgMTMyMTU1LCAxMzIxNjYsIAorICAgIDEzMjE3NSwgMTMyMTgyLCAxMzIxODksIDEzMjE5NiwgMTMyMjA3LCAxMzIyMTgsIDEzMjIyOSwgMTMyMjQwLCAxMzIyNTEsIAorICAgIDEzMjI2MiwgMTMyMjczLCAxMzIyODQsIDEzMjI5MSwgMTMyMjk4LCAxMzIzMDcsIDEzMjMxNiwgMTMyMzIzLCAxMzIzMzAsIAorICAgIDEzMjMzNywgMTMyMzQ2LCAxMzIzNTUsIDEzMjM2NCwgMTMyMzcxLCAxMzIzODAsIDEzMjM4OSwgMTMyMzk4LCAxMzI0MDUsIAorICAgIDEzMjQxMiwgMTMyNDE3LCAxMzI0MjMsIDEzMjQzMCwgMTMyNDM3LCAxMzI0NDQsIDEzMjQ1MSwgMTMyNDU4LCAxMzI0NjUsIAorICAgIDEzMjQ3NCwgMTMyNDgzLCAxMzI0OTIsIDEzMjUwMSwgMTMyNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzI1MTcsIDEzMjUyMywgMTMyNTI4LCAxMzI1MzMsIDEzMjU0MCwgMTMyNTQ2LCAxMzI1NTIsIDEzMjU1OCwgMTMyNTY0LCAKKyAgICAxMzI1NzAsIDEzMjU3NiwgMTMyNTgyLCAxMzI1ODYsIDEzMjU5MCwgMTMyNTk2LCAxMzI2MDIsIDEzMjYwOCwgMTMyNjEyLCAKKyAgICAxMzI2MTcsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzMywgMTMyNjM5LCAxMzI2NDUsIDEzMjY1MSwgMTMyNjU3LCAKKyAgICAxMzI2NjMsIDEzMjY2OSwgMTMyNjc1LCAxMzI2ODEsIDEzMjY4NywgMTMyNjk3LCAxMzI3MDcsIDEzMjcxMywgMTMyNzE5LCAKKyAgICAxMzI3MjksIDEzMjczOSwgMTMyNzQ1LCAwLCAwLCAxMzI3NTEsIDEzMjc1OSwgMTMyNzY0LCAxMzI3NjksIDEzMjc3NSwgCisgICAgMTMyNzgxLCAxMzI3ODcsIDEzMjc5MywgMTMyNzk5LCAxMzI4MDUsIDEzMjgxMiwgMTMyODE5LCAxMzI4MjUsIDEzMjgzMSwgCisgICAgMTMyODM3LCAxMzI4NDMsIDEzMjg0OSwgMTMyODU1LCAxMzI4NjEsIDEzMjg2NywgMTMyODcyLCAxMzI4NzgsIDEzMjg4NCwgCisgICAgMTMyODkwLCAxMzI4OTYsIDEzMjkwMiwgMTMyOTExLCAxMzI5MTcsIDEzMjkyMiwgMTMyOTMwLCAxMzI5MzcsIDEzMjk0NCwgCisgICAgMTMyOTUzLCAxMzI5NjIsIDEzMjk3MSwgMTMyOTgwLCAxMzI5ODksIDEzMjk5OCwgMTMzMDA3LCAxMzMwMTYsIDEzMzAyNiwgCisgICAgMTMzMDM2LCAxMzMwNDQsIDEzMzA1MiwgMTMzMDYxLCAxMzMwNzAsIDEzMzA3NiwgMTMzMDgyLCAxMzMwODgsIDEzMzA5NCwgCisgICAgMTMzMTAyLCAxMzMxMTAsIDEzMzExNCwgMTMzMTIwLCAxMzMxMjUsIDEzMzEzMSwgMTMzMTM3LCAxMzMxNDMsIDEzMzE0OSwgCisgICAgMTMzMTU1LCAxMzMxNjQsIDEzMzE2OSwgMTMzMTc2LCAxMzMxODEsIDEzMzE4NiwgMTMzMTkxLCAxMzMxOTcsIDEzMzIwMywgCisgICAgMTMzMjA5LCAxMzMyMTYsIDEzMzIyMSwgMTMzMjI2LCAxMzMyMzEsIDEzMzIzNiwgMTMzMjQxLCAxMzMyNDcsIDEzMzI1MywgCisgICAgMTMzMjU5LCAxMzMyNjUsIDEzMzI3MSwgMTMzMjc3LCAxMzMyODMsIDEzMzI4OSwgMTMzMjk0LCAxMzMyOTksIDEzMzMwNCwgCisgICAgMTMzMzA5LCAxMzMzMTQsIDEzMzMxOSwgMTMzMzI0LCAxMzMzMjksIDEzMzMzNSwgMTMzMzQxLCAxMzMzNDYsIDEzMzM1MSwgCisgICAgMTMzMzU2LCAxMzMzNjEsIDEzMzM2NiwgMTMzMzcyLCAxMzMzNzksIDEzMzM4MywgMTMzMzg3LCAxMzMzOTEsIDEzMzM5NSwgCisgICAgMTMzMzk5LCAxMzM0MDMsIDEzMzQwNywgMTMzNDExLCAxMzM0MTksIDEzMzQyOSwgMTMzNDMzLCAxMzM0MzcsIDEzMzQ0MywgCisgICAgMTMzNDQ5LCAxMzM0NTUsIDEzMzQ2MSwgMTMzNDY3LCAxMzM0NzMsIDEzMzQ3OSwgMTMzNDg1LCAxMzM0OTEsIDEzMzQ5NywgCisgICAgMTMzNTAzLCAxMzM1MDksIDEzMzUxNSwgMTMzNTIxLCAxMzM1MjUsIDEzMzUyOSwgMTMzNTM2LCAxMzM1NDIsIDEzMzU0OCwgCisgICAgMTMzNTU0LCAxMzM1NTksIDEzMzU2NiwgMTMzNTcxLCAxMzM1NzcsIDEzMzU4MywgMTMzNTg5LCAxMzM1OTUsIDEzMzYwMCwgCisgICAgMTMzNjA0LCAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyOCwgMTMzNjM0LCAxMzM2MzgsIDEzMzY0NCwgCisgICAgMTMzNjUwLCAxMzM2NTYsIDEzMzY2MiwgMTMzNjY4LCAxMzM2NzYsIDEzMzY4NCwgMTMzNjkwLCAxMzM2OTYsIDEzMzcwMiwgCisgICAgMTMzNzA4LCAxMzM3MjAsIDEzMzczMiwgMTMzNzQ2LCAxMzM3NTgsIDEzMzc3MCwgMTMzNzg0LCAxMzM3OTgsIDEzMzgxMiwgCisgICAgMTMzODE2LCAxMzM4MjQsIDEzMzgzMiwgMTMzODM3LCAxMzM4NDEsIDEzMzg0NSwgMTMzODQ5LCAxMzM4NTMsIDEzMzg1NywgCisgICAgMTMzODYxLCAxMzM4NjUsIDEzMzg3MSwgMTMzODc3LCAxMzM4ODMsIDEzMzg4OSwgMTMzODk3LCAxMzM5MDYsIDEzMzkxMywgCisgICAgMTMzOTIwLCAxMzM5MjgsIDEzMzkzNSwgMTMzOTQ3LCAxMzM5NTksIDEzMzk3MSwgMTMzOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM5OTAsIDEzMzk5NywgCisgICAgMTM0MDA0LCAxMzQwMTEsIDEzNDAxOCwgMTM0MDI1LCAxMzQwMzIsIDEzNDAzOSwgMTM0MDQ2LCAxMzQwNTMsIDEzNDA2MCwgCisgICAgMTM0MDY3LCAxMzQwNzQsIDEzNDA4MSwgMTM0MDg4LCAxMzQwOTUsIDEzNDEwMiwgMTM0MTA5LCAxMzQxMTYsIDEzNDEyMywgCisgICAgMTM0MTMwLCAxMzQxMzcsIDEzNDE0NCwgMTM0MTUxLCAxMzQxNTgsIDEzNDE2NSwgMTM0MTcyLCAxMzQxNzksIDEzNDE4NiwgCisgICAgMTM0MTkzLCAxMzQyMDAsIDEzNDIwNywgMTM0MjE0LCAxMzQyMjEsIDEzNDIyOCwgMTM0MjM1LCAxMzQyNDIsIDEzNDI0OSwgCisgICAgMTM0MjU2LCAxMzQyNjMsIDEzNDI3MCwgMTM0Mjc3LCAxMzQyODQsIDEzNDI5MSwgMTM0Mjk4LCAxMzQzMDUsIDEzNDMxMiwgCisgICAgMTM0MzE5LCAxMzQzMjYsIDEzNDMzMywgMTM0MzQwLCAxMzQzNDcsIDEzNDM1NCwgMTM0MzYxLCAxMzQzNjgsIDEzNDM3NSwgCisgICAgMTM0MzgyLCAxMzQzODksIDEzNDM5NiwgMTM0NDAzLCAxMzQ0MTAsIDEzNDQxNywgMTM0NDI0LCAxMzQ0MzEsIDEzNDQzOCwgCisgICAgMTM0NDQ1LCAxMzQ0NTIsIDEzNDQ1NywgMTM0NDYyLCAxMzQ0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDQ3MSwgMTM0NDc2LCAxMzQ0ODMsIDEzNDQ5MCwgMTM0NDk3LCAxMzQ1MDQsIAorICAgIDEzNDUwOSwgMTM0NTE0LCAxMzQ1MjEsIDEzNDUyNiwgMTM0NTMxLCAxMzQ1MzgsIDEzNDU0MywgMTM0NTQ4LCAxMzQ1NTMsIAorICAgIDEzNDU2MCwgMTM0NTY5LCAxMzQ1NzQsIDEzNDU3OSwgMTM0NTg0LCAxMzQ1ODksIDEzNDU5NCwgMTM0NTk5LCAxMzQ2MDYsIAorICAgIDEzNDYxMSwgMTM0NjE2LCAxMzQ2MjEsIDEzNDYyNiwgMTM0NjMxLCAxMzQ2MzYsIDEzNDY0MSwgMTM0NjQ2LCAxMzQ2NTEsIAorICAgIDEzNDY1NiwgMTM0NjYxLCAxMzQ2NjYsIDEzNDY3MiwgMTM0Njc3LCAxMzQ2ODIsIDEzNDY4NywgMTM0NjkyLCAxMzQ2OTcsIAorICAgIDEzNDcwMiwgMTM0NzA3LCAxMzQ3MTIsIDEzNDcxNywgMTM0NzI2LCAxMzQ3MzEsIDEzNDc0MCwgMTM0NzQ1LCAxMzQ3NTAsIAorICAgIDEzNDc1NSwgMTM0NzYwLCAxMzQ3NjUsIDEzNDc3MCwgMTM0Nzc1LCAxMzQ3ODQsIDEzNDc4OSwgMTM0Nzk0LCAxMzQ3OTksIAorICAgIDEzNDgwNCwgMTM0ODA5LCAxMzQ4MTYsIDEzNDgyMSwgMTM0ODI4LCAxMzQ4MzMsIDEzNDgzOCwgMTM0ODQzLCAxMzQ4NDgsIAorICAgIDEzNDg1MywgMTM0ODU4LCAxMzQ4NjMsIDEzNDg2OCwgMTM0ODczLCAxMzQ4NzgsIDEzNDg4MywgMTM0ODg4LCAxMzQ4OTMsIAorICAgIDEzNDg5OCwgMTM0OTAzLCAxMzQ5MDgsIDEzNDkxMywgMTM0OTE4LCAxMzQ5MjMsIDEzNDkzMiwgMTM0OTM3LCAxMzQ5NDIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDk0NywgMTM0OTU1LCAxMzQ5NjMsIDEzNDk3MSwgMTM0OTc5LCAKKyAgICAxMzQ5ODcsIDEzNDk5NSwgMTM1MDA0LCAxMzUwMTIsIDEzNTAyMSwgMTM1MDI5LCAxMzUwMzcsIDEzNTA0NSwgMTM1MDUzLCAKKyAgICAxMzUwNjEsIDEzNTA2OSwgMTM1MDc4LCAxMzUwODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTA5NSwgMTM1MDk5LCAxMzUxMDQsIDEzNTEwOSwgMTM1MTE0LCAxMzUxMTgsIAorICAgIDEzNTEyMywgMTM1MTI4LCAxMzUxMzMsIDEzNTEzNywgMTM1MTQyLCAxMzUxNDcsIDEzNTE1MSwgMTM1MTU2LCAxMzUxNjEsIAorICAgIDEzNTE2NSwgMTM1MTcwLCAxMzUxNzUsIDEzNTE3OSwgMTM1MTgzLCAxMzUxODgsIDEzNTE5MiwgMTM1MTk3LCAxMzUyMDIsIAorICAgIDEzNTIwNywgMTM1MjEyLCAxMzUyMTcsIDEzNTIyMSwgMTM1MjI2LCAxMzUyMzEsIDEzNTIzNiwgMTM1MjQwLCAxMzUyNDUsIAorICAgIDEzNTI1MCwgMTM1MjU1LCAxMzUyNTksIDEzNTI2NCwgMTM1MjY5LCAxMzUyNzMsIDEzNTI3OCwgMTM1MjgzLCAxMzUyODcsIAorICAgIDEzNTI5MiwgMTM1Mjk3LCAxMzUzMDEsIDEzNTMwNSwgMTM1MzEwLCAxMzUzMTQsIDEzNTMxOSwgMTM1MzI0LCAxMzUzMjksIAorICAgIDEzNTMzNCwgMTM1MzM5LCAxMzUzNDMsIDEzNTM0OCwgMTM1MzUzLCAxMzUzNTgsIDEzNTM2MiwgMTM1MzY3LCAxMzUzNzIsIAorICAgIDEzNTM3NywgMTM1MzgxLCAxMzUzODYsIDEzNTM5MSwgMTM1Mzk1LCAxMzU0MDAsIDEzNTQwNSwgMTM1NDA5LCAxMzU0MTQsIAorICAgIDEzNTQxOSwgMTM1NDIzLCAxMzU0MjcsIDEzNTQzMiwgMTM1NDM2LCAxMzU0NDEsIDEzNTQ0NiwgMTM1NDUxLCAxMzU0NTYsIAorICAgIDEzNTQ2MSwgMTM1NDY1LCAxMzU0NzAsIDEzNTQ3NSwgMTM1NDgwLCAxMzU0ODQsIDEzNTQ4OSwgMCwgMTM1NDk0LCAKKyAgICAxMzU0OTgsIDEzNTUwMywgMTM1NTA4LCAxMzU1MTIsIDEzNTUxNywgMTM1NTIyLCAxMzU1MjYsIDEzNTUzMSwgMTM1NTM2LCAKKyAgICAxMzU1NDAsIDEzNTU0NCwgMTM1NTQ5LCAxMzU1NTMsIDEzNTU1OCwgMTM1NTYzLCAxMzU1NjgsIDEzNTU3MywgMTM1NTc4LCAKKyAgICAxMzU1ODMsIDEzNTU4OSwgMTM1NTk1LCAxMzU2MDEsIDEzNTYwNiwgMTM1NjEyLCAxMzU2MTgsIDEzNTYyNCwgMTM1NjI5LCAKKyAgICAxMzU2MzUsIDEzNTY0MSwgMTM1NjQ2LCAxMzU2NTIsIDEzNTY1OCwgMTM1NjYzLCAxMzU2NjksIDEzNTY3NSwgMTM1NjgwLCAKKyAgICAxMzU2ODUsIDEzNTY5MSwgMTM1Njk2LCAxMzU3MDIsIDEzNTcwOCwgMTM1NzE0LCAxMzU3MjAsIDEzNTcyNiwgMTM1NzMxLCAKKyAgICAxMzU3MzcsIDEzNTc0MywgMTM1NzQ5LCAxMzU3NTQsIDEzNTc2MCwgMTM1NzY2LCAxMzU3NzIsIDEzNTc3NywgMTM1NzgzLCAKKyAgICAxMzU3ODksIDEzNTc5NCwgMTM1ODAwLCAxMzU4MDYsIDEzNTgxMSwgMTM1ODE3LCAxMzU4MjMsIDEzNTgyOCwgMTM1ODMzLCAKKyAgICAxMzU4MzksIDEzNTg0NCwgMTM1ODUwLCAxMzU4NTYsIDEzNTg2MiwgMTM1ODY4LCAxMzU4NzQsIDAsIDEzNTg3OCwgCisgICAgMTM1ODgzLCAwLCAwLCAxMzU4ODgsIDAsIDAsIDEzNTg5MywgMTM1ODk4LCAwLCAwLCAxMzU5MDMsIDEzNTkwOCwgMTM1OTEyLCAKKyAgICAxMzU5MTcsIDAsIDEzNTkyMiwgMTM1OTI2LCAxMzU5MzEsIDEzNTkzNSwgMTM1OTQwLCAxMzU5NDUsIDEzNTk1MCwgCisgICAgMTM1OTU1LCAxMzU5NjAsIDEzNTk2NCwgMTM1OTY5LCAxMzU5NzQsIDAsIDEzNTk3OSwgMCwgMTM1OTg0LCAxMzU5ODksIAorICAgIDEzNTk5MywgMTM1OTk4LCAxMzYwMDMsIDEzNjAwNywgMTM2MDEyLCAwLCAxMzYwMTcsIDEzNjAyMiwgMTM2MDI3LCAKKyAgICAxMzYwMzEsIDEzNjAzNSwgMTM2MDQwLCAxMzYwNDQsIDEzNjA0OSwgMTM2MDU0LCAxMzYwNTksIDEzNjA2NCwgMTM2MDY5LCAKKyAgICAxMzYwNzQsIDEzNjA4MCwgMTM2MDg2LCAxMzYwOTIsIDEzNjA5NywgMTM2MTAzLCAxMzYxMDksIDEzNjExNSwgMTM2MTIwLCAKKyAgICAxMzYxMjYsIDEzNjEzMiwgMTM2MTM3LCAxMzYxNDMsIDEzNjE0OSwgMTM2MTU0LCAxMzYxNjAsIDEzNjE2NiwgMTM2MTcxLCAKKyAgICAxMzYxNzYsIDEzNjE4MiwgMTM2MTg3LCAxMzYxOTMsIDEzNjE5OSwgMTM2MjA1LCAxMzYyMTEsIDEzNjIxNywgMTM2MjIyLCAKKyAgICAxMzYyMjgsIDEzNjIzNCwgMTM2MjQwLCAxMzYyNDUsIDEzNjI1MSwgMTM2MjU3LCAxMzYyNjMsIDEzNjI2OCwgMTM2Mjc0LCAKKyAgICAxMzYyODAsIDEzNjI4NSwgMTM2MjkxLCAxMzYyOTcsIDEzNjMwMiwgMTM2MzA4LCAxMzYzMTQsIDEzNjMxOSwgMTM2MzI0LCAKKyAgICAxMzYzMzAsIDEzNjMzNSwgMTM2MzQxLCAxMzYzNDcsIDEzNjM1MywgMTM2MzU5LCAxMzYzNjUsIDEzNjM2OSwgMCwgCisgICAgMTM2Mzc0LCAxMzYzNzksIDEzNjM4MywgMTM2Mzg4LCAwLCAwLCAxMzYzOTMsIDEzNjM5OCwgMTM2NDAzLCAxMzY0MDcsIAorICAgIDEzNjQxMiwgMTM2NDE3LCAxMzY0MjEsIDEzNjQyNiwgMCwgMTM2NDMxLCAxMzY0MzUsIDEzNjQ0MCwgMTM2NDQ0LCAKKyAgICAxMzY0NDksIDEzNjQ1NCwgMTM2NDU5LCAwLCAxMzY0NjQsIDEzNjQ2OCwgMTM2NDczLCAxMzY0NzgsIDEzNjQ4MywgCisgICAgMTM2NDg3LCAxMzY0OTIsIDEzNjQ5NywgMTM2NTAyLCAxMzY1MDYsIDEzNjUxMSwgMTM2NTE2LCAxMzY1MjAsIDEzNjUyNSwgCisgICAgMTM2NTMwLCAxMzY1MzQsIDEzNjUzOSwgMTM2NTQ0LCAxMzY1NDgsIDEzNjU1MiwgMTM2NTU3LCAxMzY1NjEsIDEzNjU2NiwgCisgICAgMTM2NTcxLCAxMzY1NzYsIDEzNjU4MSwgMTM2NTg2LCAxMzY1OTAsIDAsIDEzNjU5NSwgMTM2NjAwLCAxMzY2MDQsIAorICAgIDEzNjYwOSwgMCwgMTM2NjE0LCAxMzY2MTgsIDEzNjYyMywgMTM2NjI4LCAxMzY2MzIsIDAsIDEzNjYzNywgMCwgMCwgMCwgCisgICAgMTM2NjQxLCAxMzY2NDUsIDEzNjY1MCwgMTM2NjU0LCAxMzY2NTksIDEzNjY2NCwgMTM2NjY5LCAwLCAxMzY2NzQsIAorICAgIDEzNjY3OCwgMTM2NjgzLCAxMzY2ODgsIDEzNjY5MywgMTM2Njk3LCAxMzY3MDIsIDEzNjcwNywgMTM2NzEyLCAxMzY3MTYsIAorICAgIDEzNjcyMSwgMTM2NzI2LCAxMzY3MzAsIDEzNjczNSwgMTM2NzQwLCAxMzY3NDQsIDEzNjc0OSwgMTM2NzU0LCAxMzY3NTgsIAorICAgIDEzNjc2MiwgMTM2NzY3LCAxMzY3NzEsIDEzNjc3NiwgMTM2NzgxLCAxMzY3ODYsIDEzNjc5MSwgMTM2Nzk2LCAxMzY4MDEsIAorICAgIDEzNjgwNywgMTM2ODEzLCAxMzY4MTksIDEzNjgyNCwgMTM2ODMwLCAxMzY4MzYsIDEzNjg0MiwgMTM2ODQ3LCAxMzY4NTMsIAorICAgIDEzNjg1OSwgMTM2ODY0LCAxMzY4NzAsIDEzNjg3NiwgMTM2ODgxLCAxMzY4ODcsIDEzNjg5MywgMTM2ODk4LCAxMzY5MDMsIAorICAgIDEzNjkwOSwgMTM2OTE0LCAxMzY5MjAsIDEzNjkyNiwgMTM2OTMyLCAxMzY5MzgsIDEzNjk0NCwgMTM2OTQ5LCAxMzY5NTUsIAorICAgIDEzNjk2MSwgMTM2OTY3LCAxMzY5NzIsIDEzNjk3OCwgMTM2OTg0LCAxMzY5OTAsIDEzNjk5NSwgMTM3MDAxLCAxMzcwMDcsIAorICAgIDEzNzAxMiwgMTM3MDE4LCAxMzcwMjQsIDEzNzAyOSwgMTM3MDM1LCAxMzcwNDEsIDEzNzA0NiwgMTM3MDUxLCAxMzcwNTcsIAorICAgIDEzNzA2MiwgMTM3MDY4LCAxMzcwNzQsIDEzNzA4MCwgMTM3MDg2LCAxMzcwOTIsIDEzNzA5NiwgMTM3MTAxLCAxMzcxMDYsIAorICAgIDEzNzExMSwgMTM3MTE1LCAxMzcxMjAsIDEzNzEyNSwgMTM3MTMwLCAxMzcxMzQsIDEzNzEzOSwgMTM3MTQ0LCAxMzcxNDgsIAorICAgIDEzNzE1MywgMTM3MTU4LCAxMzcxNjIsIDEzNzE2NywgMTM3MTcyLCAxMzcxNzYsIDEzNzE4MCwgMTM3MTg1LCAxMzcxODksIAorICAgIDEzNzE5NCwgMTM3MTk5LCAxMzcyMDQsIDEzNzIwOSwgMTM3MjE0LCAxMzcyMTgsIDEzNzIyMywgMTM3MjI4LCAxMzcyMzMsIAorICAgIDEzNzIzNywgMTM3MjQyLCAxMzcyNDcsIDEzNzI1MiwgMTM3MjU2LCAxMzcyNjEsIDEzNzI2NiwgMTM3MjcwLCAxMzcyNzUsIAorICAgIDEzNzI4MCwgMTM3Mjg0LCAxMzcyODksIDEzNzI5NCwgMTM3Mjk4LCAxMzczMDIsIDEzNzMwNywgMTM3MzExLCAxMzczMTYsIAorICAgIDEzNzMyMSwgMTM3MzI2LCAxMzczMzEsIDEzNzMzNiwgMTM3MzQxLCAxMzczNDcsIDEzNzM1MywgMTM3MzU5LCAxMzczNjQsIAorICAgIDEzNzM3MCwgMTM3Mzc2LCAxMzczODIsIDEzNzM4NywgMTM3MzkzLCAxMzczOTksIDEzNzQwNCwgMTM3NDEwLCAxMzc0MTYsIAorICAgIDEzNzQyMSwgMTM3NDI3LCAxMzc0MzMsIDEzNzQzOCwgMTM3NDQzLCAxMzc0NDksIDEzNzQ1NCwgMTM3NDYwLCAxMzc0NjYsIAorICAgIDEzNzQ3MiwgMTM3NDc4LCAxMzc0ODQsIDEzNzQ4OSwgMTM3NDk1LCAxMzc1MDEsIDEzNzUwNywgMTM3NTEyLCAxMzc1MTgsIAorICAgIDEzNzUyNCwgMTM3NTMwLCAxMzc1MzUsIDEzNzU0MSwgMTM3NTQ3LCAxMzc1NTIsIDEzNzU1OCwgMTM3NTY0LCAxMzc1NjksIAorICAgIDEzNzU3NSwgMTM3NTgxLCAxMzc1ODYsIDEzNzU5MSwgMTM3NTk3LCAxMzc2MDIsIDEzNzYwOCwgMTM3NjE0LCAxMzc2MjAsIAorICAgIDEzNzYyNiwgMTM3NjMyLCAxMzc2MzcsIDEzNzY0MywgMTM3NjQ5LCAxMzc2NTUsIDEzNzY2MCwgMTM3NjY2LCAxMzc2NzIsIAorICAgIDEzNzY3OCwgMTM3NjgzLCAxMzc2ODksIDEzNzY5NSwgMTM3NzAwLCAxMzc3MDYsIDEzNzcxMiwgMTM3NzE3LCAxMzc3MjMsIAorICAgIDEzNzcyOSwgMTM3NzM0LCAxMzc3MzksIDEzNzc0NSwgMTM3NzUwLCAxMzc3NTYsIDEzNzc2MiwgMTM3NzY4LCAxMzc3NzQsIAorICAgIDEzNzc4MCwgMTM3Nzg1LCAxMzc3OTEsIDEzNzc5NywgMTM3ODAzLCAxMzc4MDgsIDEzNzgxNCwgMTM3ODIwLCAxMzc4MjYsIAorICAgIDEzNzgzMSwgMTM3ODM3LCAxMzc4NDMsIDEzNzg0OCwgMTM3ODU0LCAxMzc4NjAsIDEzNzg2NSwgMTM3ODcxLCAxMzc4NzcsIAorICAgIDEzNzg4MiwgMTM3ODg3LCAxMzc4OTMsIDEzNzg5OCwgMTM3OTA0LCAxMzc5MTAsIDEzNzkxNiwgMTM3OTIyLCAxMzc5MjgsIAorICAgIDEzNzkzNCwgMTM3OTQxLCAxMzc5NDgsIDEzNzk1NSwgMTM3OTYxLCAxMzc5NjgsIDEzNzk3NSwgMTM3OTgyLCAxMzc5ODgsIAorICAgIDEzNzk5NSwgMTM4MDAyLCAxMzgwMDgsIDEzODAxNSwgMTM4MDIyLCAxMzgwMjgsIDEzODAzNSwgMTM4MDQyLCAxMzgwNDgsIAorICAgIDEzODA1NCwgMTM4MDYxLCAxMzgwNjcsIDEzODA3NCwgMTM4MDgxLCAxMzgwODgsIDEzODA5NSwgMTM4MTAyLCAxMzgxMDgsIAorICAgIDEzODExNSwgMTM4MTIyLCAxMzgxMjksIDEzODEzNSwgMTM4MTQyLCAxMzgxNDksIDEzODE1NiwgMTM4MTYyLCAxMzgxNjksIAorICAgIDEzODE3NiwgMTM4MTgyLCAxMzgxODksIDEzODE5NiwgMTM4MjAyLCAxMzgyMDksIDEzODIxNiwgMTM4MjIyLCAxMzgyMjgsIAorICAgIDEzODIzNSwgMTM4MjQxLCAxMzgyNDgsIDEzODI1NSwgMTM4MjYyLCAxMzgyNjksIDEzODI3NiwgMTM4MjgxLCAxMzgyODcsIAorICAgIDEzODI5MywgMTM4Mjk5LCAxMzgzMDQsIDEzODMxMCwgMTM4MzE2LCAxMzgzMjIsIDEzODMyNywgMTM4MzMzLCAxMzgzMzksIAorICAgIDEzODM0NCwgMTM4MzUwLCAxMzgzNTYsIDEzODM2MSwgMTM4MzY3LCAxMzgzNzMsIDEzODM3OCwgMTM4MzgzLCAxMzgzODksIAorICAgIDEzODM5NCwgMTM4NDAwLCAxMzg0MDYsIDEzODQxMiwgMTM4NDE4LCAxMzg0MjQsIDEzODQyOSwgMTM4NDM1LCAxMzg0NDEsIAorICAgIDEzODQ0NywgMTM4NDUyLCAxMzg0NTgsIDEzODQ2NCwgMTM4NDcwLCAxMzg0NzUsIDEzODQ4MSwgMTM4NDg3LCAxMzg0OTIsIAorICAgIDEzODQ5OCwgMTM4NTA0LCAxMzg1MDksIDEzODUxNSwgMTM4NTIxLCAxMzg1MjYsIDEzODUzMSwgMTM4NTM3LCAxMzg1NDIsIAorICAgIDEzODU0OCwgMTM4NTU0LCAxMzg1NjAsIDEzODU2NiwgMTM4NTcyLCAxMzg1NzgsIDAsIDAsIDEzODU4NSwgMTM4NTkwLCAKKyAgICAxMzg1OTUsIDEzODYwMCwgMTM4NjA1LCAxMzg2MTAsIDEzODYxNSwgMTM4NjIwLCAxMzg2MjUsIDEzODYzMCwgMTM4NjM1LCAKKyAgICAxMzg2NDAsIDEzODY0NSwgMTM4NjUwLCAxMzg2NTUsIDEzODY2MCwgMTM4NjY1LCAxMzg2NzAsIDEzODY3NiwgMTM4NjgxLCAKKyAgICAxMzg2ODYsIDEzODY5MSwgMTM4Njk2LCAxMzg3MDEsIDEzODcwNiwgMTM4NzExLCAxMzg3MTUsIDEzODcyMCwgMTM4NzI1LCAKKyAgICAxMzg3MzAsIDEzODczNSwgMTM4NzQwLCAxMzg3NDUsIDEzODc1MCwgMTM4NzU1LCAxMzg3NjAsIDEzODc2NSwgMTM4NzcwLCAKKyAgICAxMzg3NzUsIDEzODc4MCwgMTM4Nzg1LCAxMzg3OTAsIDEzODc5NSwgMTM4ODAwLCAxMzg4MDYsIDEzODgxMSwgMTM4ODE2LCAKKyAgICAxMzg4MjEsIDEzODgyNiwgMTM4ODMxLCAxMzg4MzYsIDEzODg0MSwgMTM4ODQ3LCAxMzg4NTIsIDEzODg1NywgMTM4ODYyLCAKKyAgICAxMzg4NjcsIDEzODg3MiwgMTM4ODc3LCAxMzg4ODIsIDEzODg4NywgMTM4ODkyLCAxMzg4OTcsIDEzODkwMiwgMTM4OTA3LCAKKyAgICAxMzg5MTIsIDEzODkxNywgMTM4OTIyLCAxMzg5MjcsIDEzODkzMiwgMTM4OTM3LCAxMzg5NDIsIDEzODk0NywgMTM4OTUyLCAKKyAgICAxMzg5NTcsIDEzODk2MiwgMTM4OTY4LCAxMzg5NzMsIDEzODk3OCwgMTM4OTgzLCAxMzg5ODgsIDEzODk5MywgMTM4OTk4LCAKKyAgICAxMzkwMDMsIDEzOTAwNywgMTM5MDEyLCAxMzkwMTcsIDEzOTAyMiwgMTM5MDI3LCAxMzkwMzIsIDEzOTAzNywgMTM5MDQyLCAKKyAgICAxMzkwNDcsIDEzOTA1MiwgMTM5MDU3LCAxMzkwNjIsIDEzOTA2NywgMTM5MDcyLCAxMzkwNzcsIDEzOTA4MiwgMTM5MDg3LCAKKyAgICAxMzkwOTIsIDEzOTA5OCwgMTM5MTAzLCAxMzkxMDgsIDEzOTExMywgMTM5MTE4LCAxMzkxMjMsIDEzOTEyOCwgMTM5MTMzLCAKKyAgICAxMzkxMzksIDEzOTE0NCwgMTM5MTQ5LCAxMzkxNTQsIDEzOTE1OSwgMTM5MTY0LCAxMzkxNjksIDEzOTE3NSwgMTM5MTgxLCAKKyAgICAxMzkxODcsIDEzOTE5MywgMTM5MTk5LCAxMzkyMDUsIDEzOTIxMSwgMTM5MjE3LCAxMzkyMjMsIDEzOTIyOSwgMTM5MjM1LCAKKyAgICAxMzkyNDEsIDEzOTI0NywgMTM5MjUzLCAxMzkyNTksIDEzOTI2NSwgMTM5MjcxLCAxMzkyNzgsIDEzOTI4NCwgMTM5MjkwLCAKKyAgICAxMzkyOTYsIDEzOTMwMiwgMTM5MzA4LCAxMzkzMTQsIDEzOTMyMCwgMTM5MzI1LCAxMzkzMzEsIDEzOTMzNywgMTM5MzQzLCAKKyAgICAxMzkzNDksIDEzOTM1NSwgMTM5MzYxLCAxMzkzNjcsIDEzOTM3MywgMTM5Mzc5LCAxMzkzODUsIDEzOTM5MSwgMTM5Mzk3LCAKKyAgICAxMzk0MDMsIDEzOTQwOSwgMTM5NDE1LCAxMzk0MjEsIDEzOTQyNywgMTM5NDM0LCAxMzk0NDAsIDEzOTQ0NiwgMTM5NDUyLCAKKyAgICAxMzk0NTgsIDEzOTQ2NCwgMTM5NDcwLCAxMzk0NzYsIDEzOTQ4MywgMTM5NDg5LCAxMzk0OTUsIDEzOTUwMSwgMTM5NTA3LCAKKyAgICAxMzk1MTMsIDEzOTUxOSwgMTM5NTI1LCAxMzk1MzEsIDEzOTUzNywgMTM5NTQzLCAxMzk1NDksIDEzOTU1NSwgMTM5NTYxLCAKKyAgICAxMzk1NjcsIDEzOTU3MywgMTM5NTc5LCAxMzk1ODUsIDEzOTU5MSwgMTM5NTk3LCAxMzk2MDMsIDEzOTYwOSwgMTM5NjE1LCAKKyAgICAxMzk2MjEsIDEzOTYyOCwgMTM5NjM0LCAxMzk2NDAsIDEzOTY0NiwgMTM5NjUyLCAxMzk2NTgsIDEzOTY2NCwgMTM5NjcwLCAKKyAgICAxMzk2NzUsIDEzOTY4MSwgMTM5Njg3LCAxMzk2OTMsIDEzOTY5OSwgMTM5NzA1LCAxMzk3MTEsIDEzOTcxNywgMTM5NzIzLCAKKyAgICAxMzk3MjksIDEzOTczNSwgMTM5NzQxLCAxMzk3NDcsIDEzOTc1MywgMTM5NzU5LCAxMzk3NjUsIDEzOTc3MSwgMTM5Nzc3LCAKKyAgICAxMzk3ODQsIDEzOTc5MCwgMTM5Nzk2LCAxMzk4MDIsIDEzOTgwOCwgMTM5ODE0LCAxMzk4MjAsIDEzOTgyNiwgMTM5ODMzLCAKKyAgICAxMzk4MzksIDEzOTg0NSwgMTM5ODUxLCAxMzk4NTcsIDEzOTg2MywgMTM5ODY5LCAxMzk4NzYsIDEzOTg4MywgMTM5ODkwLCAKKyAgICAxMzk4OTcsIDEzOTkwNCwgMTM5OTExLCAxMzk5MTgsIDEzOTkyNSwgMTM5OTMyLCAxMzk5MzksIDEzOTk0NiwgMTM5OTUzLCAKKyAgICAxMzk5NjAsIDEzOTk2NywgMTM5OTc0LCAxMzk5ODEsIDEzOTk4OCwgMTM5OTk2LCAxNDAwMDMsIDE0MDAxMCwgMTQwMDE3LCAKKyAgICAxNDAwMjQsIDE0MDAzMSwgMTQwMDM4LCAxNDAwNDUsIDE0MDA1MSwgMTQwMDU4LCAxNDAwNjUsIDE0MDA3MiwgMTQwMDc5LCAKKyAgICAxNDAwODYsIDE0MDA5MywgMTQwMTAwLCAxNDAxMDcsIDE0MDExNCwgMTQwMTIxLCAxNDAxMjgsIDE0MDEzNSwgMTQwMTQyLCAKKyAgICAxNDAxNDksIDE0MDE1NiwgMTQwMTYzLCAxNDAxNzAsIDE0MDE3OCwgMTQwMTg1LCAxNDAxOTIsIDE0MDE5OSwgMTQwMjA2LCAKKyAgICAxNDAyMTMsIDE0MDIyMCwgMTQwMjI3LCAxNDAyMzUsIDE0MDI0MiwgMTQwMjQ5LCAxNDAyNTYsIDE0MDI2MywgMTQwMjcwLCAKKyAgICAxNDAyNzcsIDE0MDI4MiwgMCwgMCwgMTQwMjg3LCAxNDAyOTIsIDE0MDI5NiwgMTQwMzAwLCAxNDAzMDQsIDE0MDMwOCwgCisgICAgMTQwMzEyLCAxNDAzMTYsIDE0MDMyMSwgMTQwMzI1LCAxNDAzMzAsIDE0MDMzNSwgMTQwMzM5LCAxNDAzNDMsIDE0MDM0NywgCisgICAgMTQwMzUxLCAxNDAzNTUsIDE0MDM1OSwgMTQwMzY0LCAxNDAzNjgsIDE0MDM3MywgMTQwMzc4LCAxNDAzODIsIDE0MDM4NiwgCisgICAgMTQwMzkwLCAxNDAzOTQsIDE0MDM5OCwgMTQwNDAyLCAxNDA0MDcsIDE0MDQxMSwgMTQwNDE2LCAxNDA0MjIsIDE0MDQyNywgCisgICAgMTQwNDMyLCAxNDA0MzcsIDE0MDQ0MiwgMTQwNDQ3LCAxNDA0NTIsIDE0MDQ1OCwgMTQwNDYzLCAxNDA0NjksIDE0MDQ3NSwgCisgICAgMTQwNDgwLCAxNDA0ODUsIDE0MDQ5MCwgMTQwNDk1LCAxNDA1MDAsIDE0MDUwNSwgMTQwNTExLCAxNDA1MTYsIDE0MDUyMiwgCisgICAgMTQwNTI2LCAxNDA1MzEsIDE0MDUzNiwgMTQwNTQxLCAxNDA1NDYsIDE0MDU1MSwgMTQwNTU2LCAxNDA1NjIsIDE0MDU3MCwgCisgICAgMTQwNTc3LCAxNDA1ODIsIDE0MDU4NywgMTQwNTk0LCAxNDA2MDAsIDE0MDYwNSwgMTQwNjExLCAxNDA2MTcsIDE0MDYyNSwgCisgICAgMTQwNjMxLCAxNDA2MzgsIDE0MDY0NiwgMTQwNjUyLCAxNDA2NjEsIDE0MDY3MCwgMTQwNjc4LCAxNDA2ODYsIDE0MDY5MiwgCisgICAgMTQwNjk5LCAxNDA3MDcsIDE0MDcxNSwgMTQwNzIxLCAxNDA3MjgsIDE0MDczNywgMTQwNzQ2LCAxNDA3NTMsIDE0MDc2NCwgCisgICAgMTQwNzc0LCAxNDA3ODQsIDE0MDc5NCwgMTQwODA0LCAxNDA4MTEsIDE0MDgxOCwgMTQwODI1LCAxNDA4MzIsIDE0MDg0MSwgCisgICAgMTQwODUwLCAxNDA4NjEsIDE0MDg3MiwgMTQwODgxLCAxNDA4OTAsIDE0MDkwMSwgMTQwOTEwLCAxNDA5MTksIDE0MDkzMCwgCisgICAgMTQwOTM5LCAxNDA5NDgsIDE0MDk1NiwgMTQwOTY0LCAxNDA5NzUsIDE0MDk4NiwgMTQwOTk0LCAxNDEwMDMsIDE0MTAxMiwgCisgICAgMTQxMDE5LCAxNDEwMzAsIDE0MTA0MSwgMTQxMDUwLCAxNDEwNTksIDE0MTA2NiwgMTQxMDc1LCAxNDEwODQsIDE0MTA5MywgCisgICAgMTQxMTA0LCAxNDExMTMsIDE0MTEyMywgMTQxMTMyLCAxNDExNDEsIDE0MTE1MiwgMTQxMTY1LCAxNDExODAsIDE0MTE5MSwgCisgICAgMTQxMjA0LCAxNDEyMTYsIDE0MTIyNSwgMTQxMjM2LCAxNDEyNDcsIDE0MTI1NiwgMTQxMjY3LCAxNDEyODEsIDE0MTI5NiwgCisgICAgMTQxMjk5LCAxNDEzMDgsIDE0MTMxMywgMTQxMzE5LCAxNDEzMjcsIDE0MTMzMywgMTQxMzM5LCAxNDEzNDgsIDE0MTM1NSwgCisgICAgMTQxMzY1LCAxNDEzNzcsIDE0MTM4NCwgMTQxMzg3LCAxNDEzOTMsIDE0MTQwMCwgMTQxNDA2LCAxNDE0MTEsIDE0MTQxNCwgCisgICAgMTQxNDE5LCAxNDE0MjIsIDE0MTQyOSwgMTQxNDM1LCAxNDE0NDMsIDE0MTQ1MCwgMTQxNDU3LCAxNDE0NjMsIDE0MTQ2OCwgCisgICAgMTQxNDcxLCAxNDE0NzQsIDE0MTQ3NywgMTQxNDgzLCAxNDE0OTAsIDE0MTQ5NiwgMTQxNTAxLCAxNDE1MDgsIDE0MTUxMSwgCisgICAgMTQxNTE2LCAxNDE1MjMsIDE0MTUyOSwgMTQxNTM3LCAxNDE1NDQsIDE0MTU1NCwgMTQxNTYzLCAxNDE1NjYsIDE0MTU3MiwgCisgICAgMTQxNTc5LCAxNDE1ODYsIDE0MTU5MywgMTQxNTk4LCAxNDE2MDYsIDE0MTYxNCwgMTQxNjIzLCAxNDE2MjksIDE0MTYzOCwgCisgICAgMTQxNjQ3LCAxNDE2NTYsIDE0MTY2MiwgMTQxNjcxLCAxNDE2NzgsIDE0MTY4NSwgMTQxNjkyLCAxNDE3MDAsIDE0MTcwNiwgCisgICAgMTQxNzE0LCAxNDE3MjAsIDE0MTcyNywgMTQxNzM0LCAxNDE3NDIsIDE0MTc1MywgMTQxNzYzLCAxNDE3NjksIDE0MTc3NiwgCisgICAgMTQxNzgzLCAxNDE3OTAsIDE0MTc5NiwgMTQxODAzLCAxNDE4MTAsIDE0MTgxNSwgMTQxODIyLCAxNDE4MzAsIDE0MTgzOSwgCisgICAgMTQxODQ1LCAxNDE4NTcsIDE0MTg2OCwgMTQxODc0LCAxNDE4ODIsIDE0MTg4OCwgMTQxODk1LCAxNDE5MDIsIDE0MTkwOSwgCisgICAgMTQxOTE1LCAxNDE5MjIsIDE0MTkzMSwgMTQxOTM3LCAxNDE5NDMsIDE0MTk1MCwgMTQxOTU3LCAxNDE5NjUsIDE0MTk3NSwgCisgICAgMTQxOTg1LCAxNDE5OTUsIDE0MjAwNSwgMTQyMDEzLCAxNDIwMjEsIDE0MjAzMSwgMTQyMDM5LCAxNDIwNDQsIDE0MjA0OSwgCisgICAgMTQyMDU0LCAxNDIwNjAsIDE0MjA2NywgMTQyMDc0LCAxNDIwODAsIDE0MjA4NiwgMTQyMDkxLCAxNDIwOTgsIDE0MjEwNiwgCisgICAgMTQyMTE2LCAxNDIxMjQsIDE0MjEzMiwgMTQyMTQyLCAxNDIxNTIsIDE0MjE2MCwgMTQyMTcwLCAxNDIxODAsIDE0MjE5MiwgCisgICAgMTQyMjA0LCAxNDIyMTYsIDE0MjIyNiwgMTQyMjMyLCAxNDIyMzgsIDE0MjI0NSwgMTQyMjU0LCAxNDIyNjMsIDE0MjI3MiwgCisgICAgMTQyMjgxLCAxNDIyOTEsIDE0MjMwMCwgMTQyMzA5LCAxNDIzMTgsIDE0MjMyMywgMTQyMzI5LCAxNDIzMzgsIDE0MjM0OCwgCisgICAgMTQyMzU3LCAxNDIzNjMsIDE0MjM2OSwgMTQyMzc2LCAxNDIzODMsIDE0MjM5MCwgMTQyMzk2LCAxNDI0MDMsIDE0MjQxMCwgCisgICAgMTQyNDE3LCAxNDI0MjMsIDE0MjQyNywgMTQyNDMyLCAxNDI0MzksIDE0MjQ0NiwgMTQyNDUzLCAxNDI0NTgsIDE0MjQ2NiwgCisgICAgMTQyNDc0LCAxNDI0ODMsIDE0MjQ5MSwgMTQyNDk4LCAxNDI1MDYsIDE0MjUxNSwgMTQyNTI1LCAxNDI1MjgsIDE0MjUzMiwgCisgICAgMTQyNTM3LCAxNDI1NDIsIDE0MjU0NywgMTQyNTUyLCAxNDI1NTcsIDE0MjU2MiwgMTQyNTY3LCAxNDI1NzIsIDE0MjU3NywgCisgICAgMTQyNTgyLCAxNDI1ODcsIDE0MjU5MiwgMTQyNTk3LCAxNDI2MDIsIDE0MjYwNywgMTQyNjEyLCAxNDI2MTcsIDE0MjYyNCwgCisgICAgMTQyNjMwLCAxNDI2MzcsIDE0MjY0MywgMTQyNjQ4LCAxNDI2NTUsIDE0MjY2MSwgMTQyNjY4LCAxNDI2NzQsIDE0MjY3OSwgCisgICAgMTQyNjg2LCAxNDI2OTMsIDE0MjcwMCwgMTQyNzA2LCAxNDI3MTIsIDE0MjcyMSwgMTQyNzMwLCAxNDI3NDEsIDE0Mjc0OCwgCisgICAgMTQyNzU1LCAxNDI3NjQsIDE0Mjc3MywgMTQyNzgyLCAxNDI3OTEsIDE0MjgwMCwgMTQyODA2LCAxNDI4MTQsIDE0MjgyMCwgCisgICAgMTQyODMwLCAxNDI4MzUsIDE0Mjg0NCwgMTQyODUzLCAxNDI4NjAsIDE0Mjg3MSwgMTQyODc4LCAxNDI4ODUsIDE0Mjg5MiwgCisgICAgMTQyODk5LCAxNDI5MDYsIDE0MjkxMywgMTQyOTIwLCAxNDI5MjcsIDE0MjkzNCwgMTQyOTQxLCAxNDI5NDcsIDE0Mjk1MywgCisgICAgMTQyOTU5LCAxNDI5NjYsIDE0Mjk3MywgMTQyOTgwLCAxNDI5ODcsIDE0Mjk5NCwgMTQzMDAxLCAxNDMwMDgsIDE0MzAxNSwgCisgICAgMTQzMDIyLCAxNDMwMjksIDE0MzAzNiwgMTQzMDQzLCAxNDMwNDgsIDE0MzA1NywgMTQzMDY2LCAxNDMwNzUsIDE0MzA4MiwgCisgICAgMTQzMDg5LCAxNDMwOTYsIDE0MzEwMywgMTQzMTEwLCAxNDMxMTcsIDE0MzEyNCwgMTQzMTMxLCAxNDMxNDAsIDE0MzE0OSwgCisgICAgMTQzMTU4LCAxNDMxNjcsIDE0MzE3NiwgMTQzMTg1LCAxNDMxOTQsIDE0MzIwMywgMTQzMjEyLCAxNDMyMjEsIDE0MzIzMCwgCisgICAgMTQzMjM5LCAxNDMyNDgsIDE0MzI1NCwgMTQzMjYyLCAxNDMyNjgsIDE0MzI3OCwgMTQzMjgzLCAxNDMyOTIsIDE0MzMwMSwgCisgICAgMTQzMzEwLCAxNDMzMjEsIDE0MzMyNiwgMTQzMzMzLCAxNDMzNDAsIDE0MzM0NywgMTQzMzUyLCAxNDMzNTgsIDE0MzM2NCwgCisgICAgMTQzMzcwLCAxNDMzNzcsIDE0MzM4NCwgMTQzMzkxLCAxNDMzOTgsIDE0MzQwNSwgMTQzNDEyLCAxNDM0MTksIDE0MzQyNiwgCisgICAgMTQzNDMzLCAxNDM0NDAsIDE0MzQ0NywgMTQzNDU0LCAxNDM0NTksIDE0MzQ2OCwgMTQzNDc3LCAxNDM0ODYsIDE0MzQ5NSwgCisgICAgMTQzNTA0LCAxNDM1MTMsIDE0MzUyMiwgMTQzNTMxLCAxNDM1NDIsIDE0MzU1MywgMTQzNTYwLCAxNDM1NjcsIDE0MzU3NCwgCisgICAgMTQzNTgxLCAxNDM1ODgsIDE0MzU5NSwgMTQzNjAzLCAxNDM2MTMsIDE0MzYyMywgMTQzNjMzLCAxNDM2NDQsIDE0MzY1NSwgCisgICAgMTQzNjY2LCAxNDM2NzUsIDE0MzY4NCwgMTQzNjkzLCAxNDM2OTgsIDE0MzcwMywgMTQzNzA4LCAxNDM3MTMsIDE0MzcyNCwgCisgICAgMTQzNzM1LCAxNDM3NDYsIDE0Mzc1NywgMTQzNzY4LCAxNDM3NzgsIDE0Mzc4OSwgMTQzNzk4LCAxNDM4MDcsIDE0MzgxNiwgCisgICAgMTQzODI1LCAxNDM4MzQsIDE0Mzg0MiwgMTQzODUxLCAxNDM4NjIsIDE0Mzg3MywgMTQzODg0LCAxNDM4OTUsIDE0MzkwNiwgCisgICAgMTQzOTE4LCAxNDM5MzEsIDE0Mzk0MywgMTQzOTU2LCAxNDM5NjgsIDE0Mzk4MSwgMTQzOTkzLCAxNDQwMDYsIDE0NDAxNywgCisgICAgMTQ0MDI4LCAxNDQwMzcsIDE0NDA0NSwgMTQ0MDU0LCAxNDQwNjUsIDE0NDA3NiwgMTQ0MDg4LCAxNDQxMDEsIDE0NDExNSwgCisgICAgMTQ0MTMwLCAxNDQxNDIsIDE0NDE1NSwgMTQ0MTY3LCAxNDQxODAsIDE0NDE5MSwgMTQ0MjAyLCAxNDQyMTEsIDE0NDIxOSwgCisgICAgMTQ0MjI4LCAxNDQyMzUsIDE0NDI0MiwgMTQ0MjQ5LCAxNDQyNTYsIDE0NDI2MywgMTQ0MjcwLCAxNDQyNzcsIDE0NDI4NCwgCisgICAgMTQ0MjkxLCAxNDQyOTgsIDE0NDMwMywgMTQ0MzA4LCAxNDQzMTMsIDE0NDMyMCwgMTQ0MzMwLCAxNDQzNDEsIDE0NDM1MSwgCisgICAgMTQ0MzYyLCAxNDQzNzYsIDE0NDM5MSwgMTQ0NDA2LCAxNDQ0MjAsIDE0NDQzNSwgMTQ0NDUwLCAxNDQ0NjEsIDE0NDQ3MiwgCisgICAgMTQ0NDg1LCAxNDQ0OTgsIDE0NDUwNywgMTQ0NTE2LCAxNDQ1MjksIDE0NDU0MiwgMTQ0NTQ5LCAxNDQ1NTYsIDE0NDU2MSwgCisgICAgMTQ0NTY2LCAxNDQ1NzEsIDE0NDU3NiwgMTQ0NTgxLCAxNDQ1ODgsIDE0NDU5NywgMTQ0NjAyLCAxNDQ2MDUsIDE0NDYxMCwgCisgICAgMTQ0NjE3LCAxNDQ2MjQsIDE0NDYzMSwgMTQ0NjM4LCAxNDQ2NDUsIDE0NDY1MiwgMTQ0NjY1LCAxNDQ2NzksIDE0NDY5NCwgCisgICAgMTQ0NzAxLCAxNDQ3MDgsIDE0NDcxNSwgMTQ0NzI0LCAxNDQ3MzIsIDE0NDc0MCwgMTQ0NzQ5LCAxNDQ3NTQsIDE0NDc1OSwgCisgICAgMTQ0NzY0LCAxNDQ3NjksIDE0NDc3NCwgMTQ0Nzc5LCAxNDQ3ODYsIDE0NDc5MywgMTQ0Nzk5LCAxNDQ4MDYsIDE0NDgxMiwgCisgICAgMTQ0ODE5LCAxNDQ4MjQsIDE0NDgyOSwgMTQ0ODM0LCAxNDQ4MzksIDE0NDg0NCwgMTQ0ODUxLCAxNDQ4NTgsIDE0NDg2MywgCisgICAgMTQ0ODcwLCAxNDQ4NzcsIDE0NDg4MiwgMTQ0ODg3LCAxNDQ4OTIsIDE0NDg5NywgMTQ0OTAyLCAxNDQ5MDcsIDE0NDkxNCwgCisgICAgMTQ0OTIxLCAxNDQ5MjgsIDE0NDkzMSwgMTQ0OTM2LCAxNDQ5NDEsIDE0NDk0NiwgMTQ0OTUxLCAxNDQ5NTgsIDE0NDk2NSwgCisgICAgMTQ0OTczLCAxNDQ5ODEsIDE0NDk4NiwgMTQ0OTkxLCAxNDQ5OTgsIDE0NTAwNSwgMTQ1MDEyLCAxNDUwMTcsIDE0NTAyNCwgCisgICAgMTQ1MDMxLCAxNDUwMzYsIDE0NTA0MywgMTQ1MDUwLCAxNDUwNTYsIDE0NTA2MiwgMTQ1MDY4LCAxNDUwNzQsIDE0NTA4MiwgCisgICAgMTQ1MDkwLCAxNDUwOTYsIDE0NTEwNCwgMTQ1MTEyLCAxNDUxMTcsIDE0NTEyNCwgMTQ1MTMxLCAxNDUxMzYsIDE0NTE0MywgCisgICAgMTQ1MTUwLCAxNDUxNTcsIDE0NTE2NSwgMTQ1MTczLCAxNDUxNzgsIDE0NTE4NSwgMTQ1MTkyLCAxNDUyMDEsIDE0NTIwOCwgCisgICAgMTQ1MjE3LCAxNDUyMjgsIDE0NTIzNywgMTQ1MjQ2LCAxNDUyNTUsIDE0NTI2NCwgMTQ1MjY3LCAxNDUyNzIsIDE0NTI3OSwgCisgICAgMTQ1Mjg4LCAxNDUyOTUsIDE0NTMwNCwgMTQ1MzExLCAxNDUzMTYsIDE0NTMyMSwgMTQ1MzI0LCAxNDUzMjcsIDE0NTMzMCwgCisgICAgMTQ1MzM3LCAxNDUzNDQsIDE0NTM1MywgMTQ1MzYyLCAxNDUzNzEsIDE0NTM3OCwgMTQ1Mzg1LCAxNDUzOTAsIDE0NTQwMywgCisgICAgMTQ1NDA4LCAxNDU0MTMsIDE0NTQxOCwgMTQ1NDIzLCAxNDU0MjgsIDE0NTQzMywgMTQ1NDM4LCAxNDU0NDMsIDE0NTQ0NiwgCisgICAgMTQ1NDUxLCAxNDU0NTYsIDE0NTQ2MSwgMTQ1NDY2LCAxNDU0NzEsIDE0NTQ3OCwgMTQ1NDgzLCAxNDU0OTAsIDE0NTQ5MywgCisgICAgMTQ1NDk4LCAxNDU1MDEsIDE0NTUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ1NTA3LCAxNDU1MTIsIDE0NTUxNywgMTQ1NTIyLCAxNDU1MjcsIDAsIDE0NTUzMiwgMTQ1NTM3LCAxNDU1NDIsIAorICAgIDE0NTU0NywgMTQ1NTUyLCAxNDU1NTcsIDE0NTU2MiwgMTQ1NTY3LCAxNDU1NzIsIDE0NTU3NywgMTQ1NTgyLCAxNDU1ODcsIAorICAgIDE0NTU5MiwgMTQ1NTk3LCAxNDU2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTYwNywgMTQ1NjE0LCAxNDU2MjAsIAorICAgIDE0NTYyNywgMTQ1NjM0LCAxNDU2NDEsIDE0NTY0OCwgMTQ1NjU1LCAxNDU2NjIsIDE0NTY2OSwgMTQ1Njc2LCAxNDU2ODMsIAorICAgIDE0NTY5MCwgMTQ1Njk3LCAxNDU3MDQsIDE0NTcxMSwgMTQ1NzE4LCAxNDU3MjUsIDE0NTczMiwgMTQ1NzM5LCAxNDU3NDYsIAorICAgIDE0NTc1MywgMTQ1NzYwLCAxNDU3NjcsIDE0NTc3NCwgMTQ1NzgxLCAxNDU3ODgsIDE0NTc5NSwgMTQ1ODAyLCAxNDU4MDksIAorICAgIDE0NTgxNiwgMTQ1ODIzLCAxNDU4MzAsIDE0NTgzNywgMTQ1ODQ0LCAxNDU4NTAsIDE0NTg1NiwgMTQ1ODYyLCAxNDU4NjksIAorICAgIDE0NTg3NSwgMTQ1ODgyLCAxNDU4ODgsIDE0NTg5NSwgMTQ1OTAyLCAxNDU5MDksIDE0NTkxNiwgMTQ1OTIzLCAxNDU5MzAsIAorICAgIDE0NTkzNywgMTQ1OTQ0LCAxNDU5NTEsIDE0NTk1OCwgMTQ1OTY1LCAxNDU5NzIsIDE0NTk3OSwgMTQ1OTg2LCAxNDU5OTMsIAorICAgIDE0NjAwMCwgMTQ2MDA3LCAxNDYwMTQsIDE0NjAyMSwgMTQ2MDI4LCAxNDYwMzYsIDE0NjA0MywgMTQ2MDUwLCAxNDYwNTcsIAorICAgIDE0NjA2NCwgMTQ2MDcxLCAxNDYwNzgsIDE0NjA4NSwgMTQ2MDkyLCAxNDYwOTksIDE0NjEwNiwgMTQ2MTEzLCAxNDYxMjAsIAorICAgIDE0NjEyNiwgMTQ2MTMzLCAxNDYxNDAsIDE0NjE0NywgMTQ2MTU0LCAxNDYxNjEsIDE0NjE2OCwgMTQ2MTc1LCAxNDYxODMsIAorICAgIDE0NjE5MCwgMTQ2MTk2LCAxNDYyMDMsIDE0NjIxMCwgMTQ2MjE3LCAxNDYyMjQsIDE0NjIzMSwgMTQ2MjM4LCAxNDYyNDUsIAorICAgIDE0NjI1MiwgMTQ2MjU5LCAxNDYyNjYsIDE0NjI3MywgMTQ2MjgwLCAxNDYyODcsIDE0NjI5NCwgMTQ2MzAxLCAxNDYzMDgsIAorICAgIDE0NjMxNSwgMTQ2MzIyLCAxNDYzMjksIDE0NjMzNiwgMTQ2MzQyLCAxNDYzNDksIDE0NjM1NiwgMTQ2MzYzLCAxNDYzNzAsIAorICAgIDE0NjM3NywgMTQ2Mzg0LCAxNDYzOTEsIDE0NjM5OCwgMTQ2NDA1LCAxNDY0MTIsIDE0NjQxOSwgMTQ2NDI2LCAxNDY0MzMsIAorICAgIDE0NjQ0MCwgMTQ2NDQ3LCAxNDY0NTQsIDE0NjQ2MSwgMTQ2NDY4LCAxNDY0NzUsIDE0NjQ4MiwgMTQ2NDg5LCAxNDY0OTYsIAorICAgIDE0NjUwNCwgMTQ2NTEyLCAxNDY1MjAsIDE0NjUyNywgMTQ2NTM0LCAxNDY1NDEsIDE0NjU0OCwgMTQ2NTU1LCAxNDY1NjIsIAorICAgIDE0NjU2OSwgMTQ2NTc2LCAxNDY1ODMsIDE0NjU5MCwgMTQ2NTk2LCAxNDY2MDMsIDE0NjYxMCwgMTQ2NjE3LCAxNDY2MjQsIAorICAgIDE0NjYzMSwgMTQ2NjM4LCAxNDY2NDUsIDE0NjY1MiwgMTQ2NjU5LCAxNDY2NjYsIDE0NjY3MywgMTQ2NjgwLCAxNDY2ODcsIAorICAgIDE0NjY5NCwgMTQ2NzAyLCAxNDY3MTAsIDE0NjcxOCwgMTQ2NzI1LCAxNDY3MzIsIDE0NjczOSwgMTQ2NzQ2LCAxNDY3NTMsIAorICAgIDE0Njc2MCwgMTQ2NzY3LCAxNDY3NzQsIDE0Njc4MSwgMTQ2Nzg4LCAxNDY3OTUsIDE0NjgwMiwgMTQ2ODA5LCAxNDY4MTYsIAorICAgIDE0NjgyMywgMTQ2ODMwLCAxNDY4MzcsIDE0Njg0NCwgMTQ2ODUxLCAxNDY4NTgsIDE0Njg2NSwgMTQ2ODcyLCAxNDY4NzksIAorICAgIDE0Njg4NiwgMTQ2ODkzLCAxNDY5MDAsIDE0NjkwNywgMTQ2OTE0LCAxNDY5MjEsIDE0NjkyOCwgMTQ2OTM1LCAxNDY5NDIsIAorICAgIDE0Njk0OSwgMTQ2OTU2LCAxNDY5NjMsIDE0Njk3MCwgMTQ2OTc3LCAwLCAwLCAxNDY5ODQsIDE0Njk4OCwgMTQ2OTkyLCAKKyAgICAxNDY5OTYsIDE0NzAwMCwgMTQ3MDA0LCAxNDcwMDgsIDE0NzAxMywgMTQ3MDE3LCAxNDcwMjIsIDE0NzAyOCwgMTQ3MDM0LCAKKyAgICAxNDcwNDAsIDE0NzA0NiwgMTQ3MDU0LCAxNDcwNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0NzA2OCwgMTQ3MDcyLCAxNDcwNzYsIDE0NzA4MCwgMCwgMTQ3MDg0LCAxNDcwODgsIDE0NzA5MiwgCisgICAgMTQ3MDk2LCAxNDcxMDAsIDE0NzEwNCwgMTQ3MTA4LCAxNDcxMTIsIDE0NzExNiwgMTQ3MTIwLCAxNDcxMjQsIDE0NzEyOCwgCisgICAgMTQ3MTMyLCAxNDcxMzYsIDE0NzE0MCwgMTQ3MTQ0LCAxNDcxNDgsIDE0NzE1MiwgMTQ3MTU2LCAxNDcxNjAsIDE0NzE2NCwgCisgICAgMTQ3MTY4LCAxNDcxNzIsIDE0NzE3NiwgMTQ3MTgyLCAxNDcxODgsIDE0NzE5NCwgMCwgMTQ3MjAwLCAxNDcyMDUsIDAsIAorICAgIDE0NzIxMCwgMCwgMCwgMTQ3MjE1LCAwLCAxNDcyMjAsIDE0NzIyNSwgMTQ3MjMwLCAxNDcyMzUsIDE0NzI0MCwgMTQ3MjQ1LCAKKyAgICAxNDcyNTAsIDE0NzI1NSwgMTQ3MjYwLCAxNDcyNjUsIDAsIDE0NzI3MCwgMTQ3Mjc1LCAxNDcyODAsIDE0NzI4NSwgMCwgCisgICAgMTQ3MjkwLCAwLCAxNDcyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzMwMCwgMCwgMCwgMCwgMCwgMTQ3MzA2LCAwLCAKKyAgICAxNDczMTIsIDAsIDE0NzMxOCwgMCwgMTQ3MzI0LCAxNDczMzAsIDE0NzMzNiwgMCwgMTQ3MzQyLCAxNDczNDgsIDAsIAorICAgIDE0NzM1NCwgMCwgMCwgMTQ3MzYwLCAwLCAxNDczNjYsIDAsIDE0NzM3MiwgMCwgMTQ3Mzc4LCAwLCAxNDczODYsIDAsIAorICAgIDE0NzM5NCwgMTQ3NDAwLCAwLCAxNDc0MDYsIDAsIDAsIDE0NzQxMiwgMTQ3NDE4LCAxNDc0MjQsIDE0NzQzMCwgMCwgCisgICAgMTQ3NDM2LCAxNDc0NDIsIDE0NzQ0OCwgMTQ3NDU0LCAxNDc0NjAsIDE0NzQ2NiwgMTQ3NDcyLCAwLCAxNDc0NzgsIAorICAgIDE0NzQ4NCwgMTQ3NDkwLCAxNDc0OTYsIDAsIDE0NzUwMiwgMTQ3NTA4LCAxNDc1MTQsIDE0NzUyMCwgMCwgMTQ3NTI4LCAwLCAKKyAgICAxNDc1MzYsIDE0NzU0MiwgMTQ3NTQ4LCAxNDc1NTQsIDE0NzU2MCwgMTQ3NTY2LCAxNDc1NzIsIDE0NzU3OCwgMTQ3NTg0LCAKKyAgICAxNDc1OTAsIDAsIDE0NzU5NiwgMTQ3NjAyLCAxNDc2MDgsIDE0NzYxNCwgMTQ3NjIwLCAxNDc2MjYsIDE0NzYzMiwgCisgICAgMTQ3NjM4LCAxNDc2NDQsIDE0NzY1MCwgMTQ3NjU2LCAxNDc2NjIsIDE0NzY2OCwgMTQ3Njc0LCAxNDc2ODAsIDE0NzY4NiwgCisgICAgMTQ3NjkyLCAwLCAwLCAwLCAwLCAwLCAxNDc2OTgsIDE0NzcwMywgMTQ3NzA4LCAwLCAxNDc3MTMsIDE0NzcxOCwgMTQ3NzIzLCAKKyAgICAxNDc3MjgsIDE0NzczMywgMCwgMTQ3NzM4LCAxNDc3NDMsIDE0Nzc0OCwgMTQ3NzUzLCAxNDc3NTgsIDE0Nzc2MywgCisgICAgMTQ3NzY4LCAxNDc3NzMsIDE0Nzc3OCwgMTQ3NzgzLCAxNDc3ODgsIDE0Nzc5MywgMTQ3Nzk4LCAxNDc4MDMsIDE0NzgwOCwgCisgICAgMTQ3ODEzLCAxNDc4MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzgyMywgMTQ3ODMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDc4NDEsIDE0Nzg0OCwgMTQ3ODU1LCAxNDc4NjIsIDE0Nzg2OCwgMTQ3ODc1LCAxNDc4ODIsIAorICAgIDE0Nzg4OCwgMTQ3ODk1LCAxNDc5MDIsIDE0NzkwOSwgMTQ3OTE3LCAxNDc5MjUsIDE0NzkzMywgMTQ3OTQxLCAxNDc5NDksIAorICAgIDE0Nzk1NywgMTQ3OTY0LCAxNDc5NzEsIDE0Nzk3OCwgMTQ3OTg2LCAxNDc5OTQsIDE0ODAwMiwgMTQ4MDEwLCAxNDgwMTgsIAorICAgIDE0ODAyNiwgMTQ4MDMzLCAxNDgwNDAsIDE0ODA0NywgMTQ4MDU1LCAxNDgwNjMsIDE0ODA3MSwgMTQ4MDc5LCAxNDgwODcsIAorICAgIDE0ODA5NSwgMTQ4MTAwLCAxNDgxMDUsIDE0ODExMCwgMTQ4MTE1LCAxNDgxMjAsIDE0ODEyNSwgMTQ4MTMwLCAxNDgxMzUsIAorICAgIDE0ODE0MCwgMCwgMCwgMCwgMCwgMTQ4MTQ1LCAxNDgxNTEsIDE0ODE1NSwgMTQ4MTU5LCAxNDgxNjMsIDE0ODE2NywgCisgICAgMTQ4MTcxLCAxNDgxNzUsIDE0ODE3OSwgMTQ4MTgzLCAxNDgxODcsIDE0ODE5MSwgMTQ4MTk1LCAxNDgxOTksIDE0ODIwMywgCisgICAgMTQ4MjA3LCAxNDgyMTEsIDE0ODIxNSwgMTQ4MjE5LCAxNDgyMjMsIDE0ODIyNywgMTQ4MjMxLCAxNDgyMzUsIDE0ODIzOSwgCisgICAgMTQ4MjQzLCAxNDgyNDcsIDE0ODI1MSwgMTQ4MjU1LCAxNDgyNTksIDE0ODI2MywgMTQ4MjY3LCAxNDgyNzEsIDE0ODI3NSwgCisgICAgMTQ4Mjc5LCAxNDgyODMsIDE0ODI4NywgMTQ4MjkxLCAxNDgyOTUsIDE0ODI5OSwgMTQ4MzAzLCAxNDgzMDcsIDE0ODMxMSwgCisgICAgMTQ4MzE1LCAxNDgzMTksIDE0ODMyMywgMTQ4MzI3LCAxNDgzMzEsIDE0ODMzNSwgMTQ4MzM5LCAxNDgzNDMsIDE0ODM0NywgCisgICAgMTQ4MzUyLCAxNDgzNTYsIDE0ODM2MCwgMTQ4MzY0LCAxNDgzNjgsIDE0ODM3MiwgMTQ4Mzc2LCAxNDgzODAsIDE0ODM4NCwgCisgICAgMTQ4Mzg4LCAxNDgzOTIsIDE0ODM5NiwgMTQ4NDAwLCAxNDg0MDQsIDE0ODQwOCwgMTQ4NDEyLCAxNDg0MTYsIDE0ODQyMCwgCisgICAgMTQ4NDI0LCAxNDg0MjgsIDE0ODQzMiwgMTQ4NDM2LCAxNDg0NDAsIDE0ODQ0NCwgMTQ4NDQ4LCAxNDg0NTIsIDE0ODQ1NiwgCisgICAgMTQ4NDYwLCAxNDg0NjQsIDE0ODQ2OCwgMTQ4NDcyLCAxNDg0NzYsIDE0ODQ4MCwgMTQ4NDg0LCAxNDg0ODgsIDE0ODQ5MiwgCisgICAgMTQ4NDk2LCAxNDg1MDAsIDE0ODUwNCwgMTQ4NTA4LCAxNDg1MTIsIDE0ODUxNiwgMTQ4NTIwLCAxNDg1MjQsIDE0ODUyOCwgCisgICAgMTQ4NTMyLCAxNDg1MzYsIDE0ODU0MCwgMTQ4NTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDg1NDgsIDE0ODU1NCwgMTQ4NTYzLCAxNDg1NzEsIDE0ODU3OSwgMTQ4NTg4LCAxNDg1OTcsIDE0ODYwNiwgMTQ4NjE1LCAKKyAgICAxNDg2MjQsIDE0ODYzMywgMTQ4NjQyLCAxNDg2NTEsIDE0ODY2MCwgMTQ4NjY5LCAwLCAwLCAxNDg2NzgsIDE0ODY4NywgCisgICAgMTQ4Njk1LCAxNDg3MDMsIDE0ODcxMiwgMTQ4NzIxLCAxNDg3MzAsIDE0ODczOSwgMTQ4NzQ4LCAxNDg3NTcsIDE0ODc2NiwgCisgICAgMTQ4Nzc1LCAxNDg3ODQsIDE0ODc5MywgMTQ4ODAyLCAwLCAxNDg4MTAsIDE0ODgxOSwgMTQ4ODI3LCAxNDg4MzUsIAorICAgIDE0ODg0NCwgMTQ4ODUzLCAxNDg4NjIsIDE0ODg3MSwgMTQ4ODgwLCAxNDg4ODksIDE0ODg5OCwgMTQ4OTA3LCAxNDg5MTYsIAorICAgIDE0ODkyNSwgMTQ4OTM0LCAwLCAxNDg5NDEsIDE0ODk1MCwgMTQ4OTU4LCAxNDg5NjYsIDE0ODk3NSwgMTQ4OTg0LCAKKyAgICAxNDg5OTMsIDE0OTAwMiwgMTQ5MDExLCAxNDkwMjAsIDE0OTAyOSwgMTQ5MDM4LCAxNDkwNDcsIDE0OTA1NiwgMTQ5MDY1LCAKKyAgICAxNDkwNzIsIDE0OTA3OCwgMTQ5MDg0LCAxNDkwOTAsIDE0OTA5NiwgMTQ5MTAyLCAxNDkxMDgsIDE0OTExNCwgMTQ5MTIwLCAKKyAgICAxNDkxMjYsIDE0OTEzMiwgMTQ5MTM4LCAxNDkxNDQsIDE0OTE1MCwgMTQ5MTU2LCAxNDkxNjIsIDE0OTE2OCwgMTQ5MTc0LCAKKyAgICAxNDkxODAsIDE0OTE4NiwgMTQ5MTkyLCAxNDkxOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTIwNCwgCisgICAgMTQ5MjExLCAxNDkyMTYsIDE0OTIyMCwgMTQ5MjI0LCAxNDkyMjgsIDE0OTIzMywgMTQ5MjM4LCAxNDkyNDMsIDE0OTI0OCwgCisgICAgMTQ5MjUzLCAxNDkyNTgsIDE0OTI2NSwgMCwgMCwgMCwgMTQ5MjczLCAxNDkyNzgsIDE0OTI4NCwgMTQ5MjkwLCAxNDkyOTYsIAorICAgIDE0OTMwMSwgMTQ5MzA3LCAxNDkzMTMsIDE0OTMxOSwgMTQ5MzI0LCAxNDkzMzAsIDE0OTMzNiwgMTQ5MzQxLCAxNDkzNDcsIAorICAgIDE0OTM1MywgMTQ5MzU4LCAxNDkzNjQsIDE0OTM3MCwgMTQ5Mzc1LCAxNDkzODAsIDE0OTM4NiwgMTQ5MzkxLCAxNDkzOTcsIAorICAgIDE0OTQwMywgMTQ5NDA5LCAxNDk0MTUsIDE0OTQyMSwgMTQ5NDMxLCAxNDk0MzgsIDE0OTQ0NCwgMTQ5NDQ3LCAwLCAKKyAgICAxNDk0NTAsIDE0OTQ1NSwgMTQ5NDYxLCAxNDk0NjcsIDE0OTQ3MywgMTQ5NDc4LCAxNDk0ODQsIDE0OTQ5MCwgMTQ5NDk2LCAKKyAgICAxNDk1MDEsIDE0OTUwNywgMTQ5NTEzLCAxNDk1MTgsIDE0OTUyNCwgMTQ5NTMwLCAxNDk1MzUsIDE0OTU0MSwgMTQ5NTQ3LCAKKyAgICAxNDk1NTIsIDE0OTU1NywgMTQ5NTYzLCAxNDk1NjgsIDE0OTU3NCwgMTQ5NTgwLCAxNDk1ODYsIDE0OTU5MiwgMTQ5NTk4LCAKKyAgICAxNDk2MDEsIDE0OTYwNCwgMTQ5NjA3LCAxNDk2MTAsIDE0OTYxMywgMTQ5NjE2LCAxNDk2MjIsIDE0OTYyOSwgMTQ5NjM2LCAKKyAgICAxNDk2NDMsIDE0OTY0OSwgMTQ5NjU2LCAxNDk2NjMsIDE0OTY3MCwgMTQ5Njc2LCAxNDk2ODMsIDE0OTY5MCwgMTQ5Njk2LCAKKyAgICAxNDk3MDMsIDE0OTcxMCwgMTQ5NzE2LCAxNDk3MjMsIDE0OTczMCwgMTQ5NzM2LCAxNDk3NDIsIDE0OTc0OSwgMTQ5NzU1LCAKKyAgICAxNDk3NjIsIDE0OTc2OSwgMTQ5Nzc2LCAxNDk3ODMsIDE0OTc5MCwgMTQ5Nzk1LCAwLCAwLCAwLCAwLCAxNDk4MDAsIAorICAgIDE0OTgwNiwgMTQ5ODEzLCAxNDk4MjAsIDE0OTgyNywgMTQ5ODMzLCAxNDk4NDAsIDE0OTg0NywgMTQ5ODU0LCAxNDk4NjAsIAorICAgIDE0OTg2NywgMTQ5ODc0LCAxNDk4ODAsIDE0OTg4NywgMTQ5ODk0LCAxNDk5MDAsIDE0OTkwNywgMTQ5OTE0LCAxNDk5MjAsIAorICAgIDE0OTkyNiwgMTQ5OTMzLCAxNDk5MzksIDE0OTk0NiwgMTQ5OTUzLCAxNDk5NjAsIDE0OTk2NywgMTQ5OTc0LCAxNDk5ODMsIAorICAgIDE0OTk4NywgMTQ5OTkwLCAxNDk5OTQsIDE0OTk5OCwgMTUwMDAyLCAxNTAwMDUsIDE1MDAwOCwgMTUwMDExLCAxNTAwMTQsIAorICAgIDE1MDAxNywgMTUwMDIwLCAxNTAwMjMsIDE1MDAyNiwgMTUwMDI5LCAxNTAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDAzOCwgMTUwMDQ1LCAKKyAgICAxNTAwNTMsIDE1MDA2MSwgMTUwMDY5LCAxNTAwNzYsIDE1MDA4NCwgMTUwMDkyLCAxNTAxMDAsIDE1MDEwNywgMTUwMTE1LCAKKyAgICAxNTAxMjMsIDE1MDEzMCwgMTUwMTM4LCAxNTAxNDYsIDE1MDE1MywgMTUwMTYxLCAxNTAxNjksIDE1MDE3NiwgMTUwMTgzLCAKKyAgICAxNTAxOTEsIDE1MDE5OCwgMTUwMjA2LCAxNTAyMTQsIDE1MDIyMiwgMTUwMjMwLCAxNTAyMzgsIDE1MDI0MiwgMTUwMjQ2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAyNTAsIDE1MDI1NiwgMTUwMjYyLCAxNTAyNjgsIAorICAgIDE1MDI3MiwgMTUwMjc4LCAxNTAyODQsIDE1MDI5MCwgMTUwMjk2LCAxNTAzMDIsIDE1MDMwOCwgMTUwMzE0LCAxNTAzMjAsIAorICAgIDE1MDMyNiwgMTUwMzMyLCAxNTAzMzgsIDE1MDM0NCwgMTUwMzUwLCAxNTAzNTYsIDE1MDM2MiwgMTUwMzY4LCAxNTAzNzQsIAorICAgIDE1MDM4MCwgMTUwMzg2LCAxNTAzOTIsIDE1MDM5OCwgMTUwNDA0LCAxNTA0MTAsIDE1MDQxNiwgMTUwNDIyLCAxNTA0MjgsIAorICAgIDE1MDQzNCwgMTUwNDQwLCAxNTA0NDYsIDE1MDQ1MiwgMTUwNDU4LCAxNTA0NjQsIDE1MDQ3MCwgMTUwNDc2LCAxNTA0ODIsIAorICAgIDE1MDQ4OCwgMTUwNDk0LCAxNTA1MDAsIDAsIDAsIDAsIDAsIDAsIDE1MDUwNiwgMTUwNTE3LCAxNTA1MjgsIDE1MDUzOSwgCisgICAgMTUwNTUwLCAxNTA1NjEsIDE1MDU3MiwgMTUwNTgzLCAxNTA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYwNSwgCisgICAgMTUwNjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MTMsIDE1MDYxNSwgMTUwNjE3LCAxNTA2MjEsIDE1MDYyNiwgMTUwNjMxLCAKKyAgICAxNTA2MzMsIDE1MDYzOSwgMTUwNjQ0LCAxNTA2NDYsIDE1MDY1MiwgMTUwNjU2LCAxNTA2NTgsIDE1MDY2MiwgMTUwNjY4LCAKKyAgICAxNTA2NzQsIDE1MDY4MCwgMTUwNjg1LCAxNTA2OTAsIDE1MDY5NywgMTUwNzA0LCAxNTA3MTEsIDE1MDcxNiwgMTUwNzIzLCAKKyAgICAxNTA3MzAsIDE1MDczNywgMTUwNzQxLCAxNTA3NDgsIDE1MDc1NywgMTUwNzY2LCAxNTA3NzMsIDE1MDc3OCwgMTUwNzgyLCAKKyAgICAxNTA3ODYsIDE1MDc4OCwgMTUwNzkxLCAxNTA3OTQsIDE1MDgwMSwgMTUwODA4LCAxNTA4MTgsIDE1MDgyMywgMTUwODI4LCAKKyAgICAxNTA4MzMsIDE1MDgzOCwgMTUwODQwLCAxNTA4NDYsIDE1MDg1MCwgMTUwODUyLCAxNTA4NTQsIDE1MDg1NiwgMTUwODU4LCAKKyAgICAxNTA4NjIsIDE1MDg2NiwgMTUwODcwLCAxNTA4NzIsIDE1MDg3NiwgMTUwODc4LCAxNTA4ODIsIDE1MDg4NCwgMTUwODg2LCAKKyAgICAxNTA4ODgsIDE1MDg5MCwgMTUwODk1LCAxNTA5MDAsIDE1MDkwMiwgMTUwOTA4LCAxNTA5MTIsIDE1MDkxNiwgMTUwOTI0LCAKKyAgICAxNTA5MjYsIDE1MDkyOCwgMTUwOTMwLCAxNTA5MzIsIDE1MDkzNCwgMTUwOTM2LCAxNTA5MzgsIDE1MDk0MCwgMTUwOTQyLCAKKyAgICAxNTA5NDQsIDE1MDk0OCwgMTUwOTUyLCAxNTA5NTQsIDE1MDk1NiwgMTUwOTU4LCAxNTA5NjAsIDE1MDk2MiwgMTUwOTY3LCAKKyAgICAxNTA5NzMsIDE1MDk3NywgMTUwOTgxLCAxNTA5ODUsIDE1MDk4OSwgMTUwOTk0LCAxNTA5OTgsIDE1MTAwMCwgMTUxMDAyLCAKKyAgICAxNTEwMDYsIDE1MTAxMiwgMTUxMDE0LCAxNTEwMTYsIDE1MTAxOCwgMTUxMDIyLCAxNTEwMzEsIDE1MTAzNywgMTUxMDQxLCAKKyAgICAxNTEwNDUsIDE1MTA0NywgMTUxMDQ5LCAxNTEwNTIsIDE1MTA1NCwgMTUxMDU2LCAxNTEwNTgsIDE1MTA2MiwgMTUxMDY0LCAKKyAgICAxNTEwNjgsIDE1MTA3MywgMTUxMDc1LCAxNTEwODAsIDE1MTA4NiwgMTUxMDkzLCAxNTEwOTcsIDE1MTEwMSwgMTUxMTA1LCAKKyAgICAxNTExMDksIDE1MTExNSwgMTUxMTE5LCAxNTExMjcsIDE1MTEzNCwgMTUxMTM2LCAxNTExMzgsIDE1MTE0MiwgMTUxMTQ2LCAKKyAgICAxNTExNDgsIDE1MTE1MiwgMTUxMTU2LCAxNTExNTgsIDE1MTE2MiwgMTUxMTY0LCAxNTExNjgsIDE1MTE3MiwgMTUxMTc2LCAKKyAgICAxNTExODAsIDE1MTE4NCwgMTUxMTg4LCAxNTExOTIsIDE1MTE5NiwgMTUxMjAyLCAxNTEyMDYsIDE1MTIxMCwgMTUxMjIxLCAKKyAgICAxNTEyMjYsIDE1MTIzMCwgMTUxMjM0LCAxNTEyNDAsIDE1MTI0NCwgMTUxMjQ4LCAxNTEyNTIsIDE1MTI1OSwgMTUxMjY2LCAKKyAgICAxNTEyNzAsIDE1MTI3NCwgMTUxMjc4LCAxNTEyODIsIDE1MTI4NiwgMTUxMjkzLCAxNTEyOTUsIDE1MTI5OSwgMTUxMzAxLCAKKyAgICAxNTEzMDMsIDE1MTMwNywgMTUxMzExLCAxNTEzMTUsIDE1MTMxNywgMTUxMzIxLCAxNTEzMjUsIDE1MTMyOSwgMTUxMzMzLCAKKyAgICAxNTEzMzcsIDE1MTMzOSwgMTUxMzQzLCAxNTEzNDUsIDE1MTM1MSwgMTUxMzU0LCAxNTEzNTksIDE1MTM2MSwgMTUxMzYzLCAKKyAgICAxNTEzNjYsIDE1MTM2OCwgMTUxMzcwLCAxNTEzNzMsIDE1MTM4MCwgMTUxMzg3LCAxNTEzOTQsIDE1MTM5OSwgMTUxNDAzLCAKKyAgICAxNTE0MDUsIDE1MTQwNywgMTUxNDA5LCAxNTE0MTMsIDE1MTQxNSwgMTUxNDE5LCAxNTE0MjMsIDE1MTQyNywgMTUxNDI5LCAKKyAgICAxNTE0MzMsIDE1MTQzNSwgMTUxNDM5LCAxNTE0NDMsIDE1MTQ1MCwgMTUxNDUyLCAxNTE0NjEsIDE1MTQ3MCwgMTUxNDc5LCAKKyAgICAxNTE0ODUsIDE1MTQ4NywgMTUxNDkyLCAxNTE0OTYsIDE1MTUwMCwgMTUxNTAyLCAxNTE1MDgsIDE1MTUxMiwgMTUxNTE0LCAKKyAgICAxNTE1MTgsIDE1MTUyMiwgMTUxNTI0LCAxNTE1MjgsIDE1MTUzMywgMTUxNTM3LCAxNTE1NDMsIDE1MTU0OSwgMTUxNTUxLCAKKyAgICAxNTE1NTMsIDE1MTU1OSwgMTUxNTYxLCAxNTE1NjUsIDE1MTU2OSwgMTUxNTcxLCAxNTE1NzUsIDE1MTU3NywgMTUxNTgxLCAKKyAgICAxNTE1ODUsIDE1MTU4OSwgMTUxNTkyLCAxNTE1OTUsIDE1MTYwMCwgMTUxNjA1LCAxNTE2MDcsIDE1MTYxMCwgMTUxNjEyLCAKKyAgICAxNTE2MTksIDE1MTYyMywgMTUxNjI1LCAxNTE2MzIsIDE1MTYzOSwgMTUxNjQ2LCAxNTE2NTMsIDE1MTY2MCwgMTUxNjYyLCAKKyAgICAxNTE2NjQsIDE1MTY2NiwgMTUxNjcwLCAxNTE2NzIsIDE1MTY3NCwgMTUxNjc2LCAxNTE2NzgsIDE1MTY4MCwgMTUxNjgyLCAKKyAgICAxNTE2ODQsIDE1MTY4NiwgMTUxNjg4LCAxNTE2OTAsIDE1MTY5MiwgMTUxNjk0LCAxNTE2OTYsIDE1MTY5OCwgMTUxNzAwLCAKKyAgICAxNTE3MDIsIDE1MTcwNCwgMTUxNzA2LCAxNTE3MDgsIDE1MTcxMCwgMTUxNzEyLCAxNTE3MTQsIDE1MTcxOCwgMTUxNzIwLCAKKyAgICAxNTE3MjIsIDE1MTcyNCwgMTUxNzI4LCAxNTE3MzAsIDE1MTczNCwgMTUxNzM2LCAxNTE3MzgsIDE1MTc0MiwgMTUxNzQ2LCAKKyAgICAxNTE3NTIsIDE1MTc1NCwgMTUxNzU2LCAxNTE3NTgsIDE1MTc2MCwgMTUxNzY0LCAxNTE3NjgsIDE1MTc3MCwgMTUxNzc0LCAKKyAgICAxNTE3NzgsIDE1MTc4MiwgMTUxNzg2LCAxNTE3OTAsIDE1MTc5NCwgMTUxNzk4LCAxNTE4MDIsIDE1MTgwNiwgMTUxODEwLCAKKyAgICAxNTE4MTQsIDE1MTgxOCwgMTUxODIyLCAxNTE4MjYsIDE1MTgzMCwgMTUxODM0LCAxNTE4MzgsIDE1MTg0MiwgMTUxODQ0LCAKKyAgICAxNTE4NDYsIDE1MTg0OCwgMTUxODUwLCAxNTE4NTIsIDE1MTg1NCwgMTUxODU2LCAxNTE4NjQsIDE1MTg3MiwgMTUxODgwLCAKKyAgICAxNTE4ODgsIDE1MTg5MywgMTUxODk4LCAxNTE5MDMsIDE1MTkwNywgMTUxOTExLCAxNTE5MTYsIDE1MTkyMCwgMTUxOTIyLCAKKyAgICAxNTE5MjYsIDE1MTkyOCwgMTUxOTMwLCAxNTE5MzIsIDE1MTkzNCwgMTUxOTM2LCAxNTE5MzgsIDE1MTk0MCwgMTUxOTQ0LCAKKyAgICAxNTE5NDYsIDE1MTk0OCwgMTUxOTUwLCAxNTE5NTQsIDE1MTk1OCwgMTUxOTYyLCAxNTE5NjYsIDE1MTk3MCwgMTUxOTcyLCAKKyAgICAxNTE5NzgsIDE1MTk4NCwgMTUxOTg2LCAxNTE5ODgsIDE1MTk5MCwgMTUxOTkyLCAxNTE5OTQsIDE1MjAwMywgMTUyMDEwLCAKKyAgICAxNTIwMTcsIDE1MjAyMSwgMTUyMDI4LCAxNTIwMzMsIDE1MjA0MCwgMTUyMDQ5LCAxNTIwNTQsIDE1MjA1OCwgMTUyMDYyLCAKKyAgICAxNTIwNjQsIDE1MjA2OCwgMTUyMDcwLCAxNTIwNzQsIDE1MjA3OCwgMTUyMDgwLCAxNTIwODQsIDE1MjA4OCwgMTUyMDkyLCAKKyAgICAxNTIwOTQsIDE1MjA5NiwgMTUyMTAyLCAxNTIxMDQsIDE1MjEwNiwgMTUyMTA4LCAxNTIxMTIsIDE1MjExNiwgMTUyMTE4LCAKKyAgICAxNTIxMjIsIDE1MjEyNCwgMTUyMTI2LCAxNTIxMjksIDE1MjEzMywgMTUyMTM1LCAxNTIxMzksIDE1MjE0MSwgMTUyMTQzLCAKKyAgICAxNTIxNDgsIDE1MjE1MCwgMTUyMTU0LCAxNTIxNTgsIDE1MjE2MSwgMTUyMTY1LCAxNTIxNjksIDE1MjE3MywgMTUyMTc3LCAKKyAgICAxNTIxODEsIDE1MjE4NSwgMTUyMTg5LCAxNTIxOTQsIDE1MjE5OCwgMTUyMjAyLCAxNTIyMTEsIDE1MjIxNiwgMTUyMjE5LCAKKyAgICAxNTIyMjEsIDE1MjIyNCwgMTUyMjI3LCAxNTIyMzIsIDE1MjIzNCwgMTUyMjM3LCAxNTIyNDIsIDE1MjI0NiwgMTUyMjQ5LCAKKyAgICAxNTIyNTMsIDE1MjI1NywgMTUyMjYwLCAxNTIyNjUsIDE1MjI2OSwgMTUyMjczLCAxNTIyNzcsIDE1MjI4MSwgMTUyMjg3LCAKKyAgICAxNTIyOTMsIDE1MjI5OSwgMTUyMzA1LCAxNTIzMTAsIDE1MjMyMCwgMTUyMzIyLCAxNTIzMjYsIDE1MjMyOCwgMTUyMzMwLCAKKyAgICAxNTIzMzQsIDE1MjMzOCwgMTUyMzQwLCAxNTIzNDQsIDE1MjM0OSwgMTUyMzU0LCAxNTIzNjAsIDE1MjM2MiwgMTUyMzY2LCAKKyAgICAxNTIzNzAsIDE1MjM3NiwgMTUyMzgyLCAxNTIzODYsIDE1MjM4OCwgMTUyMzkwLCAxNTIzOTQsIDE1MjM5NiwgMTUyNDAwLCAKKyAgICAxNTI0MDQsIDE1MjQwOCwgMTUyNDEwLCAxNTI0MTIsIDE1MjQxOSwgMTUyNDIzLCAxNTI0MjYsIDE1MjQzMCwgMTUyNDM0LCAKKyAgICAxNTI0MzgsIDE1MjQ0MCwgMTUyNDQ0LCAxNTI0NDYsIDE1MjQ0OCwgMTUyNDUyLCAxNTI0NTQsIDE1MjQ1OCwgMTUyNDYyLCAKKyAgICAxNTI0NjgsIDE1MjQ3MiwgMTUyNDc2LCAxNTI0ODAsIDE1MjQ4MiwgMTUyNDg1LCAxNTI0ODksIDE1MjQ5NSwgMTUyNTA0LCAKKyAgICAxNTI1MTMsIDE1MjUyMSwgMTUyNTI5LCAxNTI1MzEsIDE1MjUzNSwgMTUyNTM3LCAxNTI1NDEsIDE1MjU1MiwgMTUyNTU2LCAKKyAgICAxNTI1NjIsIDE1MjU2OCwgMTUyNTczLCAxNTI1NzUsIDE1MjU4MCwgMTUyNTg0LCAxNTI1ODYsIDE1MjU4OCwgMTUyNTkwLCAKKyAgICAxNTI1OTQsIDE1MjU5OCwgMTUyNjAyLCAxNTI2MDcsIDE1MjYxNywgMTUyNjMyLCAxNTI2NDIsIDE1MjY1MiwgMTUyNjU2LCAKKyAgICAxNTI2NjAsIDE1MjY2NiwgMTUyNjY4LCAxNTI2NzYsIDE1MjY4NCwgMTUyNjg2LCAxNTI2OTAsIDE1MjY5NiwgMTUyNzAyLCAKKyAgICAxNTI3MDksIDE1MjcxNiwgMTUyNzE4LCAxNTI3MjAsIDE1MjcyMywgMTUyNzI1LCAxNTI3MzEsIDE1MjczMywgMTUyNzM2LCAKKyAgICAxNTI3NDAsIDE1Mjc0NiwgMTUyNzUyLCAxNTI3NjMsIDE1Mjc2OSwgMTUyNzc1LCAxNTI3ODMsIDE1Mjc4NywgMTUyNzk1LCAKKyAgICAxNTI4MDMsIDE1MjgwOSwgMTUyODE1LCAxNTI4MjIsIDE1MjgyNCwgMTUyODI4LCAxNTI4MzAsIDE1MjgzMiwgMTUyODM3LCAKKyAgICAxNTI4MzksIDE1Mjg0MSwgMTUyODQzLCAxNTI4NDUsIDE1Mjg0OSwgMTUyODU5LCAxNTI4NjUsIDE1Mjg2OSwgMTUyODczLCAKKyAgICAxNTI4NzcsIDE1Mjg4MywgMTUyODg5LCAxNTI4OTUsIDE1MjkwMSwgMTUyOTA2LCAxNTI5MTEsIDE1MjkxNywgMTUyOTIzLCAKKyAgICAxNTI5MzAsIDE1MjkzNywgMTUyOTQ1LCAxNTI5NTMsIDE1Mjk1OCwgMTUyOTY2LCAxNTI5NzAsIDE1Mjk3OSwgMTUyOTg4LCAKKyAgICAxNTI5OTQsIDE1Mjk5OCwgMTUzMDAyLCAxNTMwMDYsIDE1MzAwOSwgMTUzMDE0LCAxNTMwMTYsIDE1MzAxOCwgMTUzMDIwLCAKKyAgICAxNTMwMjcsIDE1MzAzMiwgMTUzMDM5LCAxNTMwNDYsIDE1MzA1MywgMTUzMDYxLCAxNTMwNjksIDE1MzA3NywgMTUzMDg1LCAKKyAgICAxNTMwOTMsIDE1MzEwMSwgMTUzMTA5LCAxNTMxMTcsIDE1MzEyNSwgMTUzMTMxLCAxNTMxMzcsIDE1MzE0MywgMTUzMTQ5LCAKKyAgICAxNTMxNTUsIDE1MzE2MSwgMTUzMTY3LCAxNTMxNzMsIDE1MzE3OSwgMTUzMTg1LCAxNTMxOTEsIDE1MzE5NywgMTUzMjAwLCAKKyAgICAxNTMyMDksIDE1MzIxOCwgMTUzMjIwLCAxNTMyMjcsIDE1MzIzMSwgMTUzMjMzLCAxNTMyMzUsIDE1MzIzOSwgMTUzMjQ1LCAKKyAgICAxNTMyNDksIDE1MzI1MSwgMTUzMjYxLCAxNTMyNjcsIDE1MzI3MSwgMTUzMjczLCAxNTMyNzcsIDAsIDE1MzI3OSwgCisgICAgMTUzMjg2LCAxNTMyOTMsIDE1MzMwMCwgMTUzMzA1LCAxNTMzMTAsIDE1MzMxOSwgMTUzMzI1LCAxNTMzMzAsIDE1MzMzNCwgCisgICAgMTUzMzM5LCAxNTMzNDMsIDE1MzM1MCwgMTUzMzU0LCAxNTMzNTcsIDE1MzM2MiwgMTUzMzY5LCAxNTMzNzYsIDE1MzM4MSwgCisgICAgMTUzMzg2LCAxNTMzOTEsIDE1MzM5OCwgMTUzNDA3LCAxNTM0MTgsIDE1MzQyNCwgMTUzNDMwLCAxNTM0MzYsIDE1MzQ0NiwgCisgICAgMTUzNDYxLCAxNTM0NzAsIDE1MzQ3OCwgMTUzNDg2LCAxNTM0OTQsIDE1MzUwMiwgMTUzNTEwLCAxNTM1MTgsIDE1MzUyNiwgCisgICAgMTUzNTM0LCAxNTM1NDIsIDE1MzU1MCwgMTUzNTU4LCAwLCAxNTM1NjYsIDE1MzU3MCwgMTUzNTc1LCAxNTM1ODAsIAorICAgIDE1MzU4MiwgMTUzNTg2LCAxNTM1OTUsIDE1MzYwNCwgMTUzNjEyLCAxNTM2MTYsIDE1MzYyMCwgMTUzNjI1LCAxNTM2MzAsIAorICAgIDE1MzYzNSwgMTUzNjM3LCAxNTM2NDIsIDE1MzY0NiwgMTUzNjQ4LCAxNTM2NTIsIDE1MzY1NiwgMTUzNjYyLCAxNTM2NjcsIAorICAgIDE1MzY3NSwgMTUzNjgwLCAxNTM2ODUsIDE1MzY5MCwgMTUzNjk3LCAxNTM3MDAsIDE1MzcwMiwgMTUzNzA1LCAxNTM3MTAsIAorICAgIDE1MzcxNiwgMTUzNzIwLCAxNTM3MjQsIDE1MzczMCwgMTUzNzM2LCAxNTM3MzgsIDE1Mzc0MiwgMTUzNzQ2LCAxNTM3NTAsIAorICAgIDE1Mzc1NCwgMTUzNzU4LCAxNTM3NjAsIDE1Mzc2MiwgMTUzNzY0LCAxNTM3NjYsIDE1Mzc3MiwgMTUzNzc4LCAxNTM3ODIsIAorICAgIDE1Mzc4NCwgMTUzNzg2LCAxNTM3ODgsIDE1Mzc5NywgMTUzODAxLCAxNTM4MDgsIDE1MzgxNSwgMTUzODE3LCAxNTM4MjAsIAorICAgIDE1MzgyNCwgMTUzODMwLCAxNTM4MzQsIDE1MzgzOCwgMTUzODQwLCAxNTM4NDgsIDE1Mzg1MiwgMTUzODU2LCAxNTM4NjEsIAorICAgIDE1Mzg2NiwgMTUzODcxLCAxNTM4NzYsIDE1Mzg4MSwgMTUzODg2LCAxNTM4OTEsIDE1Mzg5NiwgMTUzOTAxLCAxNTM5MDYsIAorICAgIDE1MzkxMCwgMTUzOTE2LCAxNTM5MjAsIDE1MzkyNiwgMTUzOTMxLCAxNTM5MzgsIDE1Mzk0NCwgMTUzOTUyLCAxNTM5NTYsIAorICAgIDE1Mzk2MywgMTUzOTY3LCAxNTM5NzEsIDE1Mzk3NSwgMTUzOTgwLCAxNTM5ODUsIDE1Mzk4NywgMTUzOTkxLCAxNTQwMDAsIAorICAgIDE1NDAwOCwgMTU0MDE2LCAxNTQwMjksIDE1NDA0MiwgMTU0MDU1LCAxNTQwNjIsIDE1NDA2OSwgMTU0MDczLCAxNTQwODIsIAorICAgIDE1NDA5MCwgMTU0MDk0LCAxNTQxMDMsIDE1NDExMCwgMTU0MTE0LCAxNTQxMTgsIDE1NDEyMiwgMTU0MTI2LCAxNTQxMzMsIAorICAgIDE1NDEzNywgMTU0MTQxLCAxNTQxNDUsIDE1NDE0OSwgMTU0MTU2LCAxNTQxNjUsIDE1NDE3NCwgMTU0MTgxLCAxNTQxOTMsIAorICAgIDE1NDIwNSwgMTU0MjA5LCAxNTQyMTMsIDE1NDIxNywgMTU0MjIxLCAxNTQyMjUsIDE1NDIyOSwgMTU0MjM3LCAxNTQyNDUsIAorICAgIDE1NDI1MywgMTU0MjU3LCAxNTQyNjEsIDE1NDI2NSwgMTU0MjY5LCAxNTQyNzMsIDE1NDI3NywgMTU0MjgzLCAxNTQyODksIAorICAgIDE1NDI5MywgMTU0MzA0LCAxNTQzMTIsIDE1NDMxNiwgMTU0MzIwLCAxNTQzMjQsIDE1NDMyOCwgMTU0MzM0LCAxNTQzNDEsIAorICAgIDE1NDM1MiwgMTU0MzYyLCAxNTQzNzIsIDE1NDM4MywgMTU0MzkyLCAxNTQ0MDMsIDE1NDQwOSwgMTU0NDE1LCAxNTQ0MjEsIAorICAgIDE1NDQyNywgMTU0NDMzLCAxNTQ0MzcsIDE1NDQ0NCwgMTU0NDUzLCAxNTQ0NjAsIDE1NDQ2NiwgMTU0NDcwLCAxNTQ0NzQsIAorICAgIDE1NDQ3OCwgMTU0NDg3LCAxNTQ0OTksIDE1NDUwMywgMTU0NTEwLCAxNTQ1MTcsIDE1NDUyNCwgMTU0NTMyLCAxNTQ1MzksIAorICAgIDE1NDU0NywgMTU0NTU2LCAxNTQ1NjYsIDE1NDU3NSwgMTU0NTg1LCAxNTQ1OTQsIDE1NDYwNCwgMTU0NjEzLCAxNTQ2MjMsIAorICAgIDE1NDYzMywgMTU0NjQ0LCAxNTQ2NTQsIDE1NDY2NSwgMTU0NjcyLCAxNTQ2ODAsIDE1NDY4NywgMTU0Njk1LCAxNTQ3MDMsIAorICAgIDE1NDcxMiwgMTU0NzIwLCAxNTQ3MjksIDE1NDczNiwgMTU0NzQ4LCAxNTQ3NTUsIDE1NDc2NywgMTU0NzcwLCAxNTQ3NzMsIAorICAgIDE1NDc3NiwgMTU0Nzc5LCAxNTQ3ODUsIDE1NDc5MiwgMTU0Nzk4LCAxNTQ4MDUsIDE1NDgxMCwgMTU0ODE2LCAxNTQ4MjgsIAorICAgIDE1NDgzOCwgMTU0ODQ5LCAxNTQ4NTQsIDE1NDg1OSwgMTU0ODY1LCAxNTQ4NzAsIDE1NDg3NywgMTU0ODgxLCAxNTQ4ODcsIAorICAgIDE1NDg4OSwgMTU0ODkxLCAxNTQ4OTUsIDE1NDg5OSwgMTU0OTAzLCAxNTQ5MTIsIDE1NDkxNCwgMTU0OTE2LCAxNTQ5MTksIAorICAgIDE1NDkyMSwgMTU0OTIzLCAxNTQ5MjcsIDE1NDkyOSwgMTU0OTMzLCAxNTQ5MzUsIDE1NDkzOSwgMTU0OTQxLCAxNTQ5NDMsIAorICAgIDE1NDk0NywgMTU0OTUxLCAxNTQ5NTcsIDE1NDk1OSwgMTU0OTYzLCAxNTQ5NjUsIDE1NDk2OSwgMTU0OTczLCAxNTQ5NzcsIAorICAgIDE1NDk4MSwgMTU0OTgzLCAxNTQ5ODUsIDE1NDk4OSwgMTU0OTkzLCAxNTQ5OTcsIDE1NTAwMSwgMTU1MDAzLCAxNTUwMDUsIAorICAgIDE1NTAwNywgMTU1MDEzLCAxNTUwMTgsIDE1NTAyMSwgMTU1MDI5LCAxNTUwMzcsIDE1NTAzOSwgMTU1MDQ0LCAxNTUwNDcsIAorICAgIDE1NTA1MiwgMTU1MDYzLCAxNTUwNzAsIDE1NTA3NSwgMTU1MDgwLCAxNTUwODIsIDE1NTA4NiwgMTU1MDg4LCAxNTUwOTIsIAorICAgIDE1NTA5NCwgMTU1MDk4LCAxNTUxMDIsIDE1NTEwNSwgMTU1MTA4LCAxNTUxMTAsIDE1NTExMywgMTU1MTE1LCAxNTUxMTksIAorICAgIDE1NTEyMSwgMTU1MTIzLCAxNTUxMjUsIDE1NTEyOSwgMTU1MTMxLCAxNTUxMzUsIDE1NTEzOCwgMTU1MTQ1LCAxNTUxNDgsIAorICAgIDE1NTE1MywgMTU1MTU2LCAxNTUxNTksIDE1NTE2NCwgMTU1MTY4LCAxNTUxNzIsIDE1NTE3NiwgMTU1MTc4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTUxODMsIDE1NTE4OCwgMTU1MTkwLCAxNTUxOTQsIAorICAgIDE1NTE5NiwgMTU1MjAwLCAxNTUyMDQsIDE1NTIxMCwgMTU1MjE0LCAxNTUyMTksIDE1NTIyMiwgMTU1MjI2LCAxNTUyMzAsIAorICAgIDAsIDAsIDAsIDE1NTIzNCwgMTU1MjM2LCAxNTUyNDIsIDE1NTI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTU1MjUwLCAxNTUyNTUsIDE1NTI2MCwgMTU1MjY1LCAxNTUyNzAsIDE1NTI3NSwgMTU1MjgwLCAxNTUyODcsIAorICAgIDE1NTI5NCwgMTU1MzAxLCAxNTUzMDgsIDE1NTMxMywgMTU1MzE4LCAxNTUzMjMsIDE1NTMyOCwgMTU1MzM1LCAxNTUzNDEsIAorICAgIDE1NTM0OCwgMTU1MzU1LCAxNTUzNjIsIDE1NTM2NywgMTU1MzcyLCAxNTUzNzcsIDE1NTM4MiwgMTU1Mzg3LCAxNTUzOTQsIAorICAgIDE1NTQwMSwgMTU1NDA2LCAxNTU0MTEsIDE1NTQxOCwgMTU1NDI1LCAxNTU0MzMsIDE1NTQ0MSwgMTU1NDQ4LCAxNTU0NTUsIAorICAgIDE1NTQ2MywgMTU1NDcxLCAxNTU0NzksIDE1NTQ4NiwgMTU1NDk2LCAxNTU1MDcsIDE1NTUxMiwgMTU1NTE5LCAxNTU1MjYsIAorICAgIDE1NTUzMywgMTU1NTQxLCAxNTU1NDksIDE1NTU2MCwgMTU1NTY4LCAxNTU1NzYsIDE1NTU4NCwgMTU1NTg5LCAxNTU1OTQsIAorICAgIDE1NTU5OSwgMTU1NjA0LCAxNTU2MDksIDE1NTYxNCwgMTU1NjE5LCAxNTU2MjQsIDE1NTYyOSwgMTU1NjM0LCAxNTU2MzksIAorICAgIDE1NTY0NCwgMTU1NjUxLCAxNTU2NTYsIDE1NTY2MSwgMTU1NjY4LCAxNTU2NzMsIDE1NTY3OCwgMTU1NjgzLCAxNTU2ODgsIAorICAgIDE1NTY5MywgMTU1Njk4LCAxNTU3MDMsIDE1NTcwOCwgMTU1NzEzLCAxNTU3MTgsIDE1NTcyMywgMTU1NzI4LCAxNTU3MzUsIAorICAgIDE1NTc0MywgMTU1NzQ4LCAxNTU3NTMsIDE1NTc2MCwgMTU1NzY1LCAxNTU3NzAsIDE1NTc3NSwgMTU1NzgyLCAxNTU3ODcsIAorICAgIDE1NTc5NCwgMTU1Nzk5LCAxNTU4MDYsIDE1NTgxMSwgMTU1ODIwLCAxNTU4MjksIDE1NTgzNCwgMTU1ODM5LCAxNTU4NDQsIAorICAgIDE1NTg0OSwgMTU1ODU0LCAxNTU4NTksIDE1NTg2NCwgMTU1ODY5LCAxNTU4NzQsIDE1NTg3OSwgMTU1ODg0LCAxNTU4ODksIAorICAgIDE1NTg5NCwgMTU1OTAyLCAxNTU5MTAsIDE1NTkxNSwgMTU1OTIwLCAxNTU5MjUsIDE1NTkzMCwgMTU1OTM1LCAxNTU5NDEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTk0NywgMTU1OTU1LCAxNTU5NjMsIDE1NTk3MSwgCisgICAgMTU1OTc5LCAxNTU5ODUsIDE1NTk5MSwgMTU1OTk1LCAxNTU5OTksIDE1NjAwNSwgMTU2MDExLCAxNTYwMjAsIDE1NjAyNCwgCisgICAgMTU2MDI5LCAxNTYwMzUsIDE1NjAzOSwgMTU2MDQ0LCAxNTYwNDgsIDE1NjA1MiwgMTU2MDU4LCAxNTYwNjQsIDE1NjA3NCwgCisgICAgMTU2MDgzLCAxNTYwODYsIDE1NjA5MSwgMTU2MDk3LCAxNTYxMDMsIDE1NjExNCwgMTU2MTI0LCAxNTYxMjgsIDE1NjEzMywgCisgICAgMTU2MTM5LCAxNTYxNDUsIDE1NjE1NCwgMTU2MTU5LCAxNTYxNjMsIDE1NjE2OCwgMTU2MTcyLCAxNTYxNzgsIDE1NjE4NCwgCisgICAgMTU2MTkwLCAxNTYxOTQsIDE1NjE5NywgMTU2MjAxLCAxNTYyMDQsIDE1NjIwNywgMTU2MjEyLCAxNTYyMTcsIDE1NjIyNCwgCisgICAgMTU2MjMyLCAxNTYyMzksIDE1NjI0NiwgMTU2MjU1LCAxNTYyNjQsIDE1NjI3MSwgMTU2Mjc5LCAxNTYyODYsIDE1NjI5MywgCisgICAgMTU2MzAyLCAxNTYzMTEsIDE1NjMxOCwgMTU2MzI2LCAxNTYzMzMsIDE1NjM0MCwgMTU2MzQ5LCAxNTYzNTYsIDE1NjM2NCwgCisgICAgMTU2MzcwLCAxNTYzNzksIDE1NjM4NywgMTU2Mzk2LCAxNTY0MDMsIDE1NjQxMywgMTU2NDI0LCAxNTY0MzIsIDE1NjQ0MCwgCisgICAgMTU2NDQ5LCAxNTY0NTcsIDE1NjQ2NSwgMTU2NDc0LCAxNTY0ODIsIDE1NjQ5MiwgMTU2NTAxLCAxNTY1MDksIDE1NjUxNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2NTI2LCAxNTY1MzQsIAorICAgIDE1NjU0MiwgMTU2NTUwLCAxNTY1NTgsIDE1NjU2NywgMTU2NTc2LCAxNTY1ODUsIDE1NjU5NCwgMTU2NjAzLCAxNTY2MTIsIAorICAgIDE1NjYyMSwgMCwgMCwgMCwgMCwgMTU2NjMwLCAxNTY2MzgsIDE1NjY0NiwgMTU2NjU0LCAxNTY2NjIsIDE1NjY2OSwgCisgICAgMTU2Njc2LCAxNTY2ODMsIDE1NjY5MCwgMTU2Njk4LCAxNTY3MDYsIDE1NjcxNCwgMTU2NzIyLCAxNTY3MzIsIDE1Njc0MiwgCisgICAgMTU2NzUyLCAxNTY3NjIsIDE1Njc3MSwgMTU2NzgwLCAxNTY3ODksIDE1Njc5OCwgMTU2ODA3LCAxNTY4MTYsIDE1NjgyNSwgCisgICAgMTU2ODM0LCAxNTY4NDIsIDE1Njg1MCwgMTU2ODU4LCAxNTY4NjYsIDE1Njg3NCwgMTU2ODgyLCAxNTY4OTAsIDE1Njg5OCwgCisgICAgMTU2OTA4LCAxNTY5MTgsIDE1NjkyOCwgMTU2OTM4LCAxNTY5NDIsIDE1Njk0NiwgMTU2OTUwLCAxNTY5NTQsIDE1Njk1NywgCisgICAgMTU2OTYwLCAxNTY5NjMsIDE1Njk2NiwgMTU2OTcwLCAxNTY5NzQsIDE1Njk3OCwgMTU2OTgyLCAxNTY5ODcsIDE1Njk5MiwgCisgICAgMTU2OTk3LCAxNTcwMDIsIDE1NzAwNSwgMTU3MDA4LCAxNTcwMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzAxNCwgCisgICAgMTU3MDE3LCAxNTcwMjAsIDE1NzAyMywgMTU3MDI2LCAxNTcwMzEsIDE1NzAzNiwgMTU3MDQyLCAxNTcwNDgsIDE1NzA1MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MDU2LCAxNTcwNjIsIDE1NzA2OCwgMTU3MDc0LCAxNTcwODAsIDE1NzA4OCwgMTU3MDk2LCAKKyAgICAxNTcxMDUsIDE1NzExNCwgMTU3MTE5LCAxNTcxMjQsIDE1NzEyOSwgMTU3MTM0LCAxNTcxNDEsIDE1NzE0OCwgMTU3MTU2LCAKKyAgICAxNTcxNjQsIDE1NzE3MSwgMTU3MTc4LCAxNTcxODUsIDE1NzE5MiwgMTU3MjAxLCAxNTcyMTAsIDE1NzIyMCwgMTU3MjMwLCAKKyAgICAxNTcyMzYsIDE1NzI0MiwgMTU3MjQ4LCAxNTcyNTQsIDE1NzI2MiwgMTU3MjcwLCAxNTcyNzksIDE1NzI4OCwgMTU3Mjk2LCAKKyAgICAxNTczMDQsIDE1NzMxMiwgMTU3MzIwLCAxNTczMzAsIDE1NzM0MCwgMTU3MzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTczNjIsIDE1NzM2NywgMTU3MzcyLCAxNTczNzcsIDE1NzM4MiwgMTU3MzkxLCAxNTc0MDAsIDE1NzQwOSwgMTU3NDE4LCAKKyAgICAxNTc0MjUsIDE1NzQzMiwgMTU3NDM5LCAxNTc0NDYsIDE1NzQ1MywgMTU3NDYyLCAxNTc0NzEsIDE1NzQ4MCwgMTU3NDg1LCAKKyAgICAxNTc0OTIsIDE1NzQ5OSwgMTU3NTA2LCAxNTc1MTEsIDE1NzUxNiwgMTU3NTIxLCAxNTc1MjYsIDE1NzUzMywgMTU3NTQwLCAKKyAgICAxNTc1NDcsIDE1NzU1NCwgMTU3NTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc1NzAsIDE1NzU3NCwgMTU3NTc4LCAxNTc1ODMsIDE1NzU4NywgCisgICAgMTU3NTkxLCAxNTc1OTYsIDE1NzYwMCwgMTU3NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MTAsIDE1NzYxMiwgCisgICAgMTU3NjE2LCAxNTc2MTgsIDE1NzYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MjgsIDE1NzYzMiwgMTU3NjM2LCAxNTc2NDAsIAorICAgIDE1NzY0NCwgMTU3NjQ4LCAxNTc2NTIsIDE1NzY1NiwgMTU3NjYwLCAxNTc2NjQsIDE1NzY2OCwgMTU3NjcyLCAxNTc2NzYsIAorICAgIDE1NzY4MCwgMTU3Njg0LCAxNTc2ODgsIDE1NzY5MiwgMTU3Njk2LCAxNTc3MDAsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTIsIAorICAgIDE1NzcxNiwgMTU3NzIwLCAxNTc3MjQsIDE1NzcyOCwgMTU3NzMyLCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAxNTc3NDgsIAorICAgIDE1Nzc1MiwgMTU3NzU2LCAxNTc3NjAsIDE1Nzc2NCwgMTU3NzY4LCAxNTc3NzIsIDE1Nzc3NiwgMTU3NzgwLCAxNTc3ODQsIAorICAgIDE1Nzc4OCwgMTU3NzkyLCAxNTc3OTYsIDE1NzgwMCwgMTU3ODA0LCAxNTc4MDgsIDE1NzgxMiwgMTU3ODE2LCAxNTc4MjAsIAorICAgIDE1NzgyNCwgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNiwgMTU3ODQwLCAxNTc4NDQsIDE1Nzg0OCwgMTU3ODUyLCAxNTc4NTYsIAorICAgIDE1Nzg2MCwgMTU3ODY0LCAxNTc4NjgsIDE1Nzg3MiwgMTU3ODc2LCAxNTc4ODAsIDE1Nzg4NCwgMTU3ODg4LCAxNTc4OTIsIAorICAgIDE1Nzg5NiwgMTU3OTAwLCAxNTc5MDQsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjgsIAorICAgIDE1NzkzMiwgMTU3OTM2LCAxNTc5NDAsIDE1Nzk0NCwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYwLCAxNTc5NjQsIAorICAgIDE1Nzk2OCwgMTU3OTcyLCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTg0LCAxNTc5ODgsIDE1Nzk5MiwgMTU3OTk2LCAxNTgwMDAsIAorICAgIDE1ODAwNCwgMTU4MDA4LCAxNTgwMTIsIDE1ODAxNiwgMTU4MDIwLCAxNTgwMjQsIDE1ODAyOCwgMTU4MDMyLCAxNTgwMzYsIAorICAgIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1MiwgMTU4MDU2LCAxNTgwNjAsIDE1ODA2NCwgMTU4MDY4LCAxNTgwNzIsIAorICAgIDE1ODA3NiwgMTU4MDgwLCAxNTgwODQsIDE1ODA4OCwgMTU4MDkyLCAxNTgwOTYsIDE1ODEwMCwgMTU4MTA0LCAxNTgxMDgsIAorICAgIDE1ODExMiwgMTU4MTE2LCAxNTgxMjAsIDE1ODEyNCwgMTU4MTI4LCAxNTgxMzIsIDE1ODEzNiwgMTU4MTQwLCAxNTgxNDQsIAorICAgIDE1ODE0OCwgMTU4MTUyLCAxNTgxNTYsIDE1ODE2MCwgMTU4MTY0LCAxNTgxNjgsIDE1ODE3MiwgMTU4MTc2LCAxNTgxODAsIAorICAgIDE1ODE4NCwgMTU4MTg4LCAxNTgxOTIsIDE1ODE5NiwgMTU4MjAwLCAxNTgyMDQsIDE1ODIwOCwgMTU4MjEyLCAxNTgyMTYsIAorICAgIDE1ODIyMCwgMTU4MjI0LCAxNTgyMjgsIDE1ODIzMiwgMTU4MjM2LCAxNTgyNDAsIDE1ODI0NCwgMTU4MjQ4LCAxNTgyNTIsIAorICAgIDE1ODI1NiwgMTU4MjYwLCAxNTgyNjQsIDE1ODI2OCwgMTU4MjcyLCAxNTgyNzYsIDE1ODI4MCwgMTU4Mjg0LCAxNTgyODgsIAorICAgIDE1ODI5MiwgMTU4Mjk2LCAxNTgzMDAsIDE1ODMwNCwgMTU4MzA4LCAxNTgzMTIsIDE1ODMxNiwgMTU4MzIwLCAxNTgzMjQsIAorICAgIDE1ODMyOCwgMTU4MzMyLCAxNTgzMzYsIDE1ODM0MCwgMTU4MzQ0LCAxNTgzNDgsIDE1ODM1MiwgMTU4MzU2LCAxNTgzNjAsIAorICAgIDE1ODM2NCwgMTU4MzY4LCAxNTgzNzIsIDE1ODM3NiwgMTU4MzgwLCAxNTgzODQsIDE1ODM4OCwgMTU4MzkyLCAxNTgzOTYsIAorICAgIDE1ODQwMCwgMTU4NDA0LCAxNTg0MDgsIDE1ODQxMiwgMTU4NDE2LCAxNTg0MjAsIDE1ODQyNCwgMTU4NDI4LCAxNTg0MzIsIAorICAgIDE1ODQzNiwgMTU4NDQwLCAxNTg0NDQsIDE1ODQ0OCwgMTU4NDUyLCAxNTg0NTYsIDE1ODQ2MCwgMTU4NDY0LCAxNTg0NjgsIAorICAgIDE1ODQ3MiwgMTU4NDc2LCAxNTg0ODAsIDE1ODQ4NCwgMTU4NDg4LCAxNTg0OTIsIDE1ODQ5NiwgMTU4NTAwLCAxNTg1MDQsIAorICAgIDE1ODUwOCwgMTU4NTEyLCAxNTg1MTYsIDE1ODUyMCwgMTU4NTI0LCAxNTg1MjgsIDE1ODUzMiwgMTU4NTM2LCAxNTg1NDAsIAorICAgIDE1ODU0NCwgMTU4NTQ4LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTYwLCAxNTg1NjQsIDE1ODU2OCwgMTU4NTcyLCAxNTg1NzYsIAorICAgIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgMTU4NTk2LCAxNTg2MDAsIDE1ODYwNCwgMTU4NjA4LCAxNTg2MTIsIAorICAgIDE1ODYxNiwgMTU4NjIwLCAxNTg2MjQsIDE1ODYyOCwgMTU4NjMyLCAxNTg2MzYsIDE1ODY0MCwgMTU4NjQ0LCAxNTg2NDgsIAorICAgIDE1ODY1MiwgMTU4NjU2LCAxNTg2NjAsIDE1ODY2NCwgMTU4NjY4LCAxNTg2NzIsIDE1ODY3NiwgMTU4NjgwLCAxNTg2ODQsIAorICAgIDE1ODY4OCwgMTU4NjkyLCAxNTg2OTYsIDE1ODcwMCwgMTU4NzA0LCAxNTg3MDgsIDE1ODcxMiwgMTU4NzE2LCAxNTg3MjAsIAorICAgIDE1ODcyNCwgMTU4NzI4LCAxNTg3MzIsIDE1ODczNiwgMTU4NzQwLCAxNTg3NDQsIDE1ODc0OCwgMTU4NzUyLCAxNTg3NTYsIAorICAgIDE1ODc2MCwgMTU4NzY0LCAxNTg3NjgsIDE1ODc3MiwgMTU4Nzc2LCAxNTg3ODAsIDE1ODc4NCwgMTU4Nzg4LCAxNTg3OTIsIAorICAgIDE1ODc5NiwgMTU4ODAwLCAxNTg4MDQsIDE1ODgwOCwgMTU4ODEyLCAxNTg4MTYsIDE1ODgyMCwgMTU4ODI0LCAxNTg4MjgsIAorICAgIDE1ODgzMiwgMTU4ODM2LCAxNTg4NDAsIDE1ODg0NCwgMTU4ODQ4LCAxNTg4NTIsIDE1ODg1NiwgMTU4ODYwLCAxNTg4NjQsIAorICAgIDE1ODg2OCwgMTU4ODcyLCAxNTg4NzYsIDE1ODg4MCwgMTU4ODg0LCAxNTg4ODgsIDE1ODg5MiwgMTU4ODk2LCAxNTg5MDAsIAorICAgIDE1ODkwNCwgMTU4OTA4LCAxNTg5MTIsIDE1ODkxNiwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOCwgMTU4OTMyLCAxNTg5MzYsIAorICAgIDE1ODk0MCwgMTU4OTQ0LCAxNTg5NDgsIDE1ODk1MiwgMTU4OTU2LCAxNTg5NjAsIDE1ODk2NCwgMTU4OTY4LCAxNTg5NzIsIAorICAgIDE1ODk3NiwgMTU4OTgwLCAxNTg5ODQsIDE1ODk4OCwgMTU4OTkyLCAxNTg5OTYsIDE1OTAwMCwgMTU5MDA0LCAxNTkwMDgsIAorICAgIDE1OTAxMiwgMTU5MDE2LCAxNTkwMjAsIDE1OTAyNCwgMTU5MDI4LCAxNTkwMzIsIDE1OTAzNiwgMTU5MDQwLCAxNTkwNDQsIAorICAgIDE1OTA0OCwgMTU5MDUyLCAxNTkwNTYsIDE1OTA2MCwgMTU5MDY0LCAxNTkwNjgsIDE1OTA3MiwgMTU5MDc2LCAxNTkwODAsIAorICAgIDE1OTA4NCwgMTU5MDg4LCAxNTkwOTIsIDE1OTA5NiwgMTU5MTAwLCAxNTkxMDQsIDE1OTEwOCwgMTU5MTEyLCAxNTkxMTYsIAorICAgIDE1OTEyMCwgMTU5MTI0LCAxNTkxMjgsIDE1OTEzMiwgMTU5MTM2LCAxNTkxNDAsIDE1OTE0NCwgMTU5MTQ4LCAxNTkxNTIsIAorICAgIDE1OTE1NiwgMTU5MTYwLCAxNTkxNjQsIDE1OTE2OCwgMTU5MTcyLCAxNTkxNzYsIDE1OTE4MCwgMTU5MTg0LCAxNTkxODgsIAorICAgIDE1OTE5MiwgMTU5MTk2LCAxNTkyMDAsIDE1OTIwNCwgMTU5MjA4LCAxNTkyMTIsIDE1OTIxNiwgMTU5MjIwLCAxNTkyMjQsIAorICAgIDE1OTIyOCwgMTU5MjMyLCAxNTkyMzYsIDE1OTI0MCwgMTU5MjQ0LCAxNTkyNDgsIDE1OTI1MiwgMTU5MjU2LCAxNTkyNjAsIAorICAgIDE1OTI2NCwgMTU5MjY4LCAxNTkyNzIsIDE1OTI3NiwgMTU5MjgwLCAxNTkyODQsIDE1OTI4OCwgMTU5MjkyLCAxNTkyOTYsIAorICAgIDE1OTMwMCwgMTU5MzA0LCAxNTkzMDgsIDE1OTMxMiwgMTU5MzE2LCAxNTkzMjAsIDE1OTMyNCwgMTU5MzI4LCAxNTkzMzIsIAorICAgIDE1OTMzNiwgMTU5MzQwLCAxNTkzNDQsIDE1OTM0OCwgMTU5MzUyLCAxNTkzNTYsIDE1OTM2MCwgMTU5MzY0LCAxNTkzNjgsIAorICAgIDE1OTM3MiwgMTU5Mzc2LCAxNTkzODAsIDE1OTM4NCwgMTU5Mzg4LCAxNTkzOTIsIDE1OTM5NiwgMTU5NDAwLCAxNTk0MDQsIAorICAgIDE1OTQwOCwgMTU5NDEyLCAxNTk0MTYsIDE1OTQyMCwgMTU5NDI0LCAxNTk0MjgsIDE1OTQzMiwgMTU5NDM2LCAxNTk0NDAsIAorICAgIDE1OTQ0NCwgMTU5NDQ4LCAxNTk0NTIsIDE1OTQ1NiwgMTU5NDYwLCAxNTk0NjQsIDE1OTQ2OCwgMTU5NDcyLCAxNTk0NzYsIAorICAgIDE1OTQ4MCwgMTU5NDg0LCAxNTk0ODgsIDE1OTQ5MiwgMTU5NDk2LCAxNTk1MDAsIDE1OTUwNCwgMTU5NTA4LCAxNTk1MTIsIAorICAgIDE1OTUxNiwgMTU5NTIwLCAxNTk1MjQsIDE1OTUyOCwgMTU5NTMyLCAxNTk1MzYsIDE1OTU0MCwgMTU5NTQ0LCAxNTk1NDgsIAorICAgIDE1OTU1MiwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAxNTk1NzIsIDE1OTU3NiwgMTU5NTgwLCAxNTk1ODQsIAorICAgIDE1OTU4OCwgMTU5NTkyLCAxNTk1OTYsIDE1OTYwMCwgMTU5NjA0LCAxNTk2MDgsIDE1OTYxMiwgMTU5NjE2LCAxNTk2MjAsIAorICAgIDE1OTYyNCwgMTU5NjI4LCAxNTk2MzIsIDE1OTYzNiwgMTU5NjQwLCAxNTk2NDQsIDE1OTY0OCwgMTU5NjUyLCAxNTk2NTYsIAorICAgIDE1OTY2MCwgMTU5NjY0LCAxNTk2NjgsIDE1OTY3MiwgMTU5Njc2LCAxNTk2ODAsIDE1OTY4NCwgMTU5Njg4LCAxNTk2OTIsIAorICAgIDE1OTY5NiwgMTU5NzAwLCAxNTk3MDQsIDE1OTcwOCwgMTU5NzEyLCAxNTk3MTYsIDE1OTcyMCwgMTU5NzI0LCAxNTk3MjgsIAorICAgIDE1OTczMiwgMTU5NzM2LCAxNTk3NDAsIDE1OTc0NCwgMTU5NzQ4LCAxNTk3NTIsIDE1OTc1NiwgMTU5NzYwLCAxNTk3NjQsIAorICAgIDE1OTc2OCwgMTU5NzcyLCAxNTk3NzYsIDE1OTc4MCwgMTU5Nzg0LCAxNTk3ODgsIDE1OTc5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTU5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTk4MDAsIDE1OTgwMywgMTU5ODA3LCAxNTk4MTEsIAorICAgIDE1OTgxNCwgMTU5ODE4LCAxNTk4MjIsIDE1OTgyNSwgMTU5ODI4LCAxNTk4MzIsIDE1OTgzNiwgMTU5ODM5LCAxNTk4NDIsIAorICAgIDE1OTg0NSwgMTU5ODQ4LCAxNTk4NTMsIDE1OTg1NiwgMTU5ODYwLCAxNTk4NjMsIDE1OTg2NiwgMTU5ODY5LCAxNTk4NzIsIAorICAgIDE1OTg3NSwgMTU5ODc4LCAxNTk4ODIsIDE1OTg4NSwgMTU5ODg5LCAxNTk4OTIsIDE1OTg5NSwgMTU5ODk5LCAxNTk5MDMsIAorICAgIDE1OTkwNywgMTU5OTExLCAxNTk5MTYsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzMsIDE1OTkzOSwgMTU5OTQ0LCAxNTk5NTAsIAorICAgIDE1OTk1NiwgMTU5OTYyLCAxNTk5NjcsIDE1OTk3MywgMTU5OTc5LCAxNTk5ODQsIDE1OTk5MCwgMTU5OTk2LCAxNjAwMDEsIAorICAgIDE2MDAwNywgMTYwMDEzLCAxNjAwMTgsIDE2MDAyMywgMTYwMDI5LCAxNjAwMzQsIDE2MDA0MCwgMTYwMDQ2LCAxNjAwNTIsIAorICAgIDE2MDA1OCwgMTYwMDY0LCAxNjAwNjgsIDE2MDA3MywgMTYwMDc3LCAxNjAwODIsIDE2MDA4NiwgMTYwMDkxLCAxNjAwOTYsIAorICAgIDE2MDEwMiwgMTYwMTA4LCAxNjAxMTQsIDE2MDExOSwgMTYwMTI1LCAxNjAxMzEsIDE2MDEzNywgMTYwMTQyLCAxNjAxNDgsIAorICAgIDE2MDE1NCwgMTYwMTU5LCAxNjAxNjUsIDE2MDE3MSwgMTYwMTc2LCAxNjAxODIsIDE2MDE4OCwgMTYwMTkzLCAxNjAxOTgsIAorICAgIDE2MDIwNCwgMTYwMjA5LCAxNjAyMTUsIDE2MDIyMSwgMTYwMjI3LCAxNjAyMzMsIDE2MDIzOSwgMTYwMjQ0LCAxNjAyNDgsIAorICAgIDE2MDI1MywgMTYwMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjAyNjAsIDE2MDI2MywgMTYwMjY2LCAxNjAyNjksIAorICAgIDE2MDI3MiwgMTYwMjc1LCAxNjAyNzgsIDE2MDI4MSwgMTYwMjg0LCAxNjAyODcsIDE2MDI5MCwgMTYwMjkzLCAxNjAyOTYsIAorICAgIDE2MDI5OSwgMTYwMzAyLCAxNjAzMDUsIDE2MDMwOCwgMTYwMzExLCAxNjAzMTQsIDE2MDMxNywgMTYwMzIwLCAxNjAzMjMsIAorICAgIDE2MDMyNiwgMTYwMzI5LCAxNjAzMzIsIDE2MDMzNSwgMTYwMzM4LCAxNjAzNDEsIDE2MDM0NCwgMTYwMzQ3LCAxNjAzNTAsIAorICAgIDE2MDM1MywgMTYwMzU2LCAxNjAzNTksIDE2MDM2MiwgMTYwMzY1LCAxNjAzNjgsIDE2MDM3MSwgMTYwMzc0LCAxNjAzNzcsIAorICAgIDE2MDM4MCwgMTYwMzgzLCAxNjAzODYsIDE2MDM4OSwgMTYwMzkyLCAxNjAzOTUsIDE2MDM5OCwgMTYwNDAxLCAxNjA0MDQsIAorICAgIDE2MDQwNywgMTYwNDEwLCAxNjA0MTMsIDE2MDQxNiwgMTYwNDE5LCAxNjA0MjIsIDE2MDQyNSwgMTYwNDI4LCAxNjA0MzEsIAorICAgIDE2MDQzNCwgMTYwNDM3LCAxNjA0NDAsIDE2MDQ0MywgMTYwNDQ2LCAxNjA0NDksIDE2MDQ1MiwgMTYwNDU1LCAxNjA0NTgsIAorICAgIDE2MDQ2MSwgMTYwNDY0LCAxNjA0NjcsIDE2MDQ3MCwgMTYwNDczLCAxNjA0NzYsIDE2MDQ3OSwgMTYwNDgyLCAxNjA0ODUsIAorICAgIDE2MDQ4OCwgMTYwNDkxLCAxNjA0OTQsIDE2MDQ5NywgMTYwNTAwLCAxNjA1MDMsIDE2MDUwNiwgMTYwNTA5LCAxNjA1MTIsIAorICAgIDE2MDUxNSwgMTYwNTE4LCAxNjA1MjEsIDE2MDUyNCwgMTYwNTI3LCAxNjA1MzAsIDE2MDUzMywgMTYwNTM2LCAxNjA1MzksIAorICAgIDE2MDU0MiwgMTYwNTQ1LCAxNjA1NDgsIDE2MDU1MSwgMTYwNTU0LCAxNjA1NTcsIDE2MDU2MCwgMTYwNTYzLCAxNjA1NjYsIAorICAgIDE2MDU2OSwgMTYwNTcyLCAxNjA1NzUsIDE2MDU3OCwgMTYwNTgxLCAxNjA1ODQsIDE2MDU4NywgMTYwNTkwLCAxNjA1OTMsIAorICAgIDE2MDU5NiwgMTYwNTk5LCAxNjA2MDIsIDE2MDYwNSwgMTYwNjA4LCAxNjA2MTEsIDE2MDYxNCwgMTYwNjE3LCAxNjA2MjAsIAorICAgIDE2MDYyMywgMTYwNjI2LCAxNjA2MjksIDE2MDYzMiwgMTYwNjM1LCAxNjA2MzgsIDE2MDY0MSwgMTYwNjQ0LCAxNjA2NDcsIAorICAgIDE2MDY1MCwgMTYwNjUzLCAxNjA2NTYsIDE2MDY1OSwgMTYwNjYyLCAxNjA2NjUsIDE2MDY2OCwgMTYwNjcxLCAxNjA2NzQsIAorICAgIDE2MDY3NywgMTYwNjgwLCAxNjA2ODMsIDE2MDY4NiwgMTYwNjg5LCAxNjA2OTIsIDE2MDY5NSwgMTYwNjk4LCAxNjA3MDEsIAorICAgIDE2MDcwNCwgMTYwNzA3LCAxNjA3MTAsIDE2MDcxMywgMTYwNzE2LCAxNjA3MTksIDE2MDcyMiwgMTYwNzI1LCAxNjA3MjgsIAorICAgIDE2MDczMSwgMTYwNzM0LCAxNjA3MzcsIDE2MDc0MCwgMTYwNzQzLCAxNjA3NDYsIDE2MDc0OSwgMTYwNzUyLCAxNjA3NTUsIAorICAgIDE2MDc1OCwgMTYwNzYxLCAxNjA3NjQsIDE2MDc2NywgMTYwNzcwLCAxNjA3NzMsIDE2MDc3NiwgMTYwNzc5LCAxNjA3ODIsIAorICAgIDE2MDc4NSwgMTYwNzg4LCAxNjA3OTEsIDE2MDc5NCwgMTYwNzk3LCAxNjA4MDAsIDE2MDgwMywgMTYwODA2LCAxNjA4MDksIAorICAgIDE2MDgxMiwgMTYwODE1LCAxNjA4MTgsIDE2MDgyMSwgMTYwODI0LCAxNjA4MjcsIDE2MDgzMCwgMTYwODMzLCAxNjA4MzYsIAorICAgIDE2MDgzOSwgMTYwODQyLCAxNjA4NDUsIDE2MDg0OCwgMTYwODUxLCAxNjA4NTQsIDE2MDg1NywgMTYwODYwLCAxNjA4NjMsIAorICAgIDE2MDg2NiwgMTYwODY5LCAxNjA4NzIsIDE2MDg3NSwgMTYwODc4LCAxNjA4ODEsIDE2MDg4NCwgMTYwODg3LCAxNjA4OTAsIAorICAgIDE2MDg5MywgMTYwODk2LCAxNjA4OTksIDE2MDkwMiwgMTYwOTA1LCAxNjA5MDgsIDE2MDkxMSwgMTYwOTE0LCAxNjA5MTcsIAorICAgIDE2MDkyMCwgMTYwOTIzLCAxNjA5MjYsIDE2MDkyOSwgMTYwOTMyLCAxNjA5MzUsIDE2MDkzOCwgMTYwOTQxLCAxNjA5NDQsIAorICAgIDE2MDk0NywgMTYwOTUwLCAxNjA5NTMsIDE2MDk1NiwgMTYwOTU5LCAxNjA5NjIsIDE2MDk2NSwgMTYwOTY4LCAxNjA5NzEsIAorICAgIDE2MDk3NCwgMTYwOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA5ODAsIAorICAgIDE2MDk4MiwgMTYwOTg0LCAxNjA5ODksIDE2MDk5MSwgMTYwOTk2LCAxNjA5OTgsIDE2MTAwMywgMTYxMDA1LCAxNjEwMTAsIAorICAgIDE2MTAxMiwgMTYxMDE0LCAxNjEwMTYsIDE2MTAxOCwgMTYxMDIwLCAxNjEwMjIsIDE2MTAyNCwgMTYxMDI2LCAxNjEwMjgsIAorICAgIDE2MTAzMSwgMTYxMDM1LCAxNjEwMzcsIDE2MTAzOSwgMTYxMDQzLCAxNjEwNDcsIDE2MTA1MiwgMTYxMDU0LCAxNjEwNTYsIAorICAgIDE2MTA1OCwgMTYxMDYyLCAxNjEwNjUsIDE2MTA2NywgMTYxMDcxLCAxNjEwNzMsIDE2MTA3NywgMTYxMDc5LCAxNjEwODMsIAorICAgIDE2MTA4NiwgMTYxMDg4LCAxNjEwOTIsIDE2MTA5NiwgMTYxMDk4LCAxNjExMDQsIDE2MTEwNiwgMTYxMTExLCAxNjExMTMsIAorICAgIDE2MTExOCwgMTYxMTIwLCAxNjExMjUsIDE2MTEyNywgMTYxMTMyLCAxNjExMzQsIDE2MTEzNywgMTYxMTM5LCAxNjExNDMsIAorICAgIDE2MTE0NSwgMTYxMTUyLCAxNjExNTQsIDE2MTE1NiwgMTYxMTU4LCAxNjExNjMsIDE2MTE2NSwgMTYxMTY3LCAxNjExNjksIAorICAgIDE2MTE3MSwgMTYxMTczLCAxNjExNzgsIDE2MTE4MiwgMTYxMTg0LCAxNjExODksIDE2MTE5MywgMTYxMTk1LCAxNjEyMDAsIAorICAgIDE2MTIwNCwgMTYxMjA2LCAxNjEyMTEsIDE2MTIxNSwgMTYxMjE3LCAxNjEyMTksIDE2MTIyMSwgMTYxMjIzLCAxNjEyMjcsIAorICAgIDE2MTIyOSwgMTYxMjM0LCAxNjEyMzYsIDE2MTI0MiwgMTYxMjQ0LCAxNjEyNTAsIDE2MTI1MiwgMTYxMjU0LCAxNjEyNTYsIAorICAgIDE2MTI2MCwgMTYxMjYyLCAxNjEyNjksIDE2MTI3MSwgMTYxMjc4LCAxNjEyODAsIDE2MTI4NSwgMTYxMjkxLCAxNjEyOTMsIAorICAgIDE2MTI5OSwgMTYxMzA2LCAxNjEzMDgsIDE2MTMxNCwgMTYxMzE5LCAxNjEzMjEsIDE2MTMyNywgMTYxMzMzLCAxNjEzMzUsIAorICAgIDE2MTM0MSwgMTYxMzQ3LCAxNjEzNDksIDE2MTM1NSwgMTYxMzU5LCAxNjEzNjEsIDE2MTM2NiwgMTYxMzY4LCAxNjEzNzAsIAorICAgIDE2MTM3NSwgMTYxMzc3LCAxNjEzNzksIDE2MTM4NSwgMTYxMzg3LCAxNjEzOTIsIDE2MTM5NiwgMTYxMzk4LCAxNjE0MDMsIAorICAgIDE2MTQwNywgMTYxNDA5LCAxNjE0MTUsIDE2MTQxNywgMTYxNDIxLCAxNjE0MjMsIDE2MTQyNywgMTYxNDI5LCAxNjE0MzYsIAorICAgIDE2MTQ0MywgMTYxNDQ1LCAxNjE0NTIsIDE2MTQ1OSwgMTYxNDYxLCAxNjE0NjYsIDE2MTQ2OCwgMTYxNDc1LCAxNjE0NzcsIAorICAgIDE2MTQ4MiwgMTYxNDg0LCAxNjE0OTAsIDE2MTQ5MiwgMTYxNDk2LCAxNjE0OTgsIDE2MTUwNCwgMTYxNTA2LCAxNjE1MTAsIAorICAgIDE2MTUxMiwgMTYxNTE4LCAxNjE1MjAsIDE2MTUyMiwgMTYxNTI0LCAxNjE1MjksIDE2MTUzNCwgMTYxNTM2LCAxNjE1MzgsIAorICAgIDE2MTU0OCwgMTYxNTUyLCAxNjE1NTksIDE2MTU2NiwgMTYxNTcxLCAxNjE1NzYsIDE2MTU4OCwgMTYxNTkwLCAxNjE1OTIsIAorICAgIDE2MTU5NCwgMTYxNTk2LCAxNjE1OTgsIDE2MTYwMCwgMTYxNjAyLCAxNjE2MDQsIDE2MTYwNiwgMTYxNjA4LCAxNjE2MTAsIAorICAgIDE2MTYxMiwgMTYxNjE0LCAxNjE2MTYsIDE2MTYxOCwgMTYxNjIwLCAxNjE2MjIsIDE2MTYyNCwgMTYxNjI2LCAxNjE2MjgsIAorICAgIDE2MTYzMCwgMTYxNjM2LCAxNjE2NDMsIDE2MTY0OCwgMTYxNjU2LCAxNjE2NjQsIDE2MTY2OSwgMTYxNjgwLCAxNjE2ODIsIAorICAgIDE2MTY4NCwgMTYxNjg2LCAxNjE2ODgsIDE2MTY5MCwgMTYxNjkyLCAxNjE2OTQsIDE2MTY5NiwgMTYxNjk4LCAxNjE3MDAsIAorICAgIDE2MTcwMiwgMTYxNzA0LCAxNjE3MDYsIDE2MTcwOCwgMTYxNzEwLCAxNjE3MTIsIDE2MTcxNywgMTYxNzE5LCAxNjE3MjEsIAorICAgIDE2MTcyNywgMTYxNzM5LCAxNjE3NTAsIDE2MTc1MiwgMTYxNzU0LCAxNjE3NTYsIDE2MTc1OCwgMTYxNzYwLCAxNjE3NjIsIAorICAgIDE2MTc2NCwgMTYxNzY2LCAxNjE3NjgsIDE2MTc3MCwgMTYxNzcyLCAxNjE3NzQsIDE2MTc3NiwgMTYxNzc4LCAxNjE3ODAsIAorICAgIDE2MTc4MiwgMTYxNzg0LCAxNjE3ODYsIDE2MTc4OCwgMTYxNzkwLCAxNjE3OTIsIDE2MTc5NCwgMTYxNzk2LCAxNjE3OTgsIAorICAgIDE2MTgwMCwgMTYxODAyLCAxNjE4MDQsIDE2MTgwNiwgMTYxODA4LCAxNjE4MTAsIDE2MTgxMiwgMTYxODE0LCAxNjE4MTYsIAorICAgIDE2MTgxOCwgMTYxODIwLCAxNjE4MjIsIDE2MTgyNCwgMTYxODI2LCAxNjE4MjgsIDE2MTgzMCwgMTYxODMyLCAxNjE4MzQsIAorICAgIDE2MTgzNiwgMTYxODM4LCAxNjE4NDAsIDE2MTg0MiwgMTYxODQ0LCAxNjE4NDYsIDE2MTg0OCwgMTYxODUwLCAxNjE4NTIsIAorICAgIDE2MTg1NCwgMTYxODU2LCAxNjE4NTgsIDE2MTg2MCwgMTYxODYyLCAxNjE4NjQsIDE2MTg2NiwgMTYxODY4LCAxNjE4NzAsIAorICAgIDE2MTg3MiwgMTYxODc0LCAxNjE4NzYsIDE2MTg3OCwgMTYxODgwLCAxNjE4ODIsIDE2MTg4NCwgMTYxODg2LCAxNjE4ODgsIAorICAgIDE2MTg5MCwgMTYxODkyLCAxNjE4OTQsIDE2MTg5NiwgMTYxODk4LCAxNjE5MDAsIDE2MTkwMiwgMTYxOTA0LCAxNjE5MDYsIAorICAgIDE2MTkwOCwgMTYxOTEwLCAxNjE5MTIsIDE2MTkxNCwgMTYxOTE2LCAxNjE5MTgsIDE2MTkyMCwgMTYxOTIyLCAxNjE5MjQsIAorICAgIDE2MTkyNiwgMTYxOTI4LCAxNjE5MzAsIDE2MTkzMiwgMTYxOTM0LCAxNjE5MzYsIDE2MTkzOCwgMTYxOTQwLCAxNjE5NDIsIAorICAgIDE2MTk0NCwgMTYxOTQ2LCAxNjE5NDgsIDE2MTk1MCwgMTYxOTUyLCAxNjE5NTQsIDE2MTk1NiwgMTYxOTU4LCAxNjE5NjAsIAorICAgIDE2MTk2MiwgMTYxOTY0LCAxNjE5NjYsIDE2MTk2OCwgMTYxOTcwLCAxNjE5NzIsIDE2MTk3NCwgMTYxOTc2LCAxNjE5NzgsIAorICAgIDE2MTk4MCwgMTYxOTgyLCAxNjE5ODQsIDE2MTk4NiwgMTYxOTg4LCAxNjE5OTAsIDE2MTk5MiwgMTYxOTk0LCAxNjE5OTYsIAorICAgIDE2MTk5OCwgMTYyMDAwLCAxNjIwMDIsIDE2MjAwNCwgMTYyMDA2LCAxNjIwMDgsIDE2MjAxMCwgMTYyMDEyLCAxNjIwMTQsIAorICAgIDE2MjAxNiwgMTYyMDE4LCAxNjIwMjAsIDE2MjAyMiwgMTYyMDI0LCAxNjIwMjYsIDE2MjAyOCwgMTYyMDMwLCAxNjIwMzIsIAorICAgIDE2MjAzNCwgMTYyMDM2LCAxNjIwMzgsIDE2MjA0MCwgMTYyMDQyLCAxNjIwNDQsIDE2MjA0NiwgMTYyMDQ4LCAxNjIwNTAsIAorICAgIDE2MjA1MiwgMTYyMDU0LCAxNjIwNTYsIDE2MjA1OCwgMTYyMDYwLCAxNjIwNjIsIDE2MjA2NCwgMTYyMDY2LCAxNjIwNjgsIAorICAgIDE2MjA3MCwgMTYyMDcyLCAxNjIwNzQsIDE2MjA3NiwgMTYyMDc4LCAxNjIwODAsIDE2MjA4MiwgMTYyMDg0LCAxNjIwODYsIAorICAgIDE2MjA4OCwgMTYyMDkwLCAxNjIwOTIsIDE2MjA5NCwgMTYyMDk2LCAxNjIwOTgsIDE2MjEwMCwgMTYyMTAyLCAxNjIxMDQsIAorICAgIDE2MjEwNiwgMTYyMTA4LCAxNjIxMTAsIDE2MjExMiwgMTYyMTE0LCAxNjIxMTYsIDE2MjExOCwgMTYyMTIwLCAxNjIxMjIsIAorICAgIDE2MjEyNCwgMTYyMTI2LCAxNjIxMjgsIDE2MjEzMCwgMTYyMTMyLCAxNjIxMzQsIDE2MjEzNiwgMTYyMTM4LCAxNjIxNDAsIAorICAgIDE2MjE0MiwgMTYyMTQ0LCAxNjIxNDYsIDE2MjE0OCwgMTYyMTUwLCAxNjIxNTIsIDE2MjE1NCwgMTYyMTU2LCAxNjIxNTgsIAorICAgIDE2MjE2MCwgMTYyMTYyLCAxNjIxNjQsIDE2MjE2NiwgMTYyMTY4LCAxNjIxNzAsIDE2MjE3MiwgMTYyMTc0LCAxNjIxNzYsIAorICAgIDE2MjE3OCwgMTYyMTgwLCAxNjIxODIsIDE2MjE4NCwgMTYyMTg2LCAxNjIxODgsIDE2MjE5MCwgMTYyMTkyLCAxNjIxOTQsIAorICAgIDE2MjE5NiwgMTYyMTk4LCAxNjIyMDAsIDE2MjIwMiwgMTYyMjA0LCAxNjIyMDYsIDE2MjIwOCwgMTYyMjEwLCAxNjIyMTIsIAorICAgIDE2MjIxNCwgMTYyMjE2LCAxNjIyMTgsIDE2MjIyMCwgMTYyMjIyLCAxNjIyMjQsIDE2MjIyNiwgMTYyMjI4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNjIyMzAsIDE2MjI0MCwgMTYyMjUwLCAxNjIyNTksIDE2MjI2OCwgMTYyMjgxLCAxNjIyOTQsIDE2MjMwNiwgCisgICAgMTYyMzE4LCAxNjIzMjgsIDE2MjMzOCwgMTYyMzQ4LCAxNjIzNTgsIDE2MjM2OSwgMTYyMzgwLCAxNjIzOTAsIDE2MjM5OSwgCisgICAgMTYyNDA4LCAxNjI0MTcsIDE2MjQzMCwgMTYyNDQzLCAxNjI0NTUsIDE2MjQ2NywgMTYyNDc3LCAxNjI0ODcsIDE2MjQ5NywgCisgICAgMTYyNTA3LCAxNjI1MTYsIDE2MjUyNSwgMTYyNTM1LCAxNjI1NDUsIDE2MjU1NCwgMTYyNTYzLCAxNjI1NzMsIDE2MjU4MywgCisgICAgMTYyNTkyLCAxNjI2MDEsIDE2MjYxMSwgMTYyNjIxLCAxNjI2MzIsIDE2MjY0MywgMTYyNjUzLCAxNjI2NjYsIDE2MjY3NywgCisgICAgMTYyNjkxLCAxNjI2OTksIDE2MjcxMCwgMTYyNzE4LCAxNjI3MjYsIDE2MjczNCwgMTYyNzQyLCAxNjI3NTAsIDE2Mjc1OCwgCisgICAgMTYyNzY3LCAxNjI3NzYsIDE2Mjc4NiwgMTYyNzk2LCAxNjI4MDUsIDE2MjgxNCwgMTYyODI0LCAxNjI4MzQsIDE2Mjg0MiwgCisgICAgMTYyODUwLCAxNjI4NTcsIDE2Mjg2NywgMTYyODc2LCAxNjI4ODQsIDE2Mjg5MSwgMTYyOTAxLCAxNjI5MTAsIDE2MjkyMSwgCisgICAgMTYyOTMyLCAxNjI5NDQsIDE2Mjk1NSwgMTYyOTY1LCAxNjI5NzYsIDE2Mjk4NiwgMTYyOTk3LCAxNjMwMDUsIDE2MzAwOSwgCisgICAgMTYzMDEzLCAxNjMwMTcsIDE2MzAyMSwgMTYzMDI1LCAxNjMwMjksIDE2MzAzMywgMTYzMDM3LCAxNjMwNDEsIDE2MzA0NSwgCisgICAgMTYzMDQ5LCAxNjMwNTMsIDE2MzA1NiwgMTYzMDU5LCAxNjMwNjMsIDE2MzA2NywgMTYzMDcxLCAxNjMwNzUsIDE2MzA3OSwgCisgICAgMTYzMDgzLCAxNjMwODcsIDE2MzA5MSwgMTYzMDk0LCAxNjMwOTgsIDE2MzEwMiwgMTYzMTA2LCAxNjMxMTAsIDE2MzExNCwgCisgICAgMTYzMTE4LCAxNjMxMjIsIDE2MzEyNiwgMTYzMTMwLCAxNjMxMzQsIDE2MzEzOCwgMTYzMTQyLCAxNjMxNDYsIDE2MzE1MCwgCisgICAgMTYzMTU0LCAxNjMxNTgsIDE2MzE2MiwgMTYzMTY2LCAxNjMxNzAsIDE2MzE3NCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgCisgICAgMTYzMTkwLCAxNjMxOTQsIDE2MzE5OCwgMTYzMjAyLCAxNjMyMDYsIDE2MzIxMCwgMTYzMjE0LCAxNjMyMTgsIDE2MzIyMiwgCisgICAgMTYzMjI2LCAxNjMyMzAsIDE2MzIzNCwgMTYzMjM4LCAxNjMyNDIsIDE2MzI0NiwgMTYzMjUwLCAxNjMyNTQsIDE2MzI1OCwgCisgICAgMTYzMjYyLCAxNjMyNjYsIDE2MzI3MCwgMTYzMjc0LCAxNjMyNzgsIDE2MzI4MiwgMTYzMjg2LCAxNjMyOTAsIDE2MzI5NCwgCisgICAgMTYzMjk4LCAxNjMzMDIsIDE2MzMwNiwgMTYzMzEwLCAxNjMzMTQsIDE2MzMxOCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMzMCwgCisgICAgMTYzMzM0LCAxNjMzMzgsIDE2MzM0MiwgMTYzMzQ2LCAxNjMzNTAsIDE2MzM1NCwgMTYzMzU4LCAxNjMzNjIsIDE2MzM2NiwgCisgICAgMTYzMzcwLCAxNjMzNzQsIDE2MzM3OCwgMTYzMzgyLCAxNjMzODYsIDE2MzM5MCwgMTYzMzk0LCAxNjMzOTgsIDE2MzQwMSwgCisgICAgMTYzNDA1LCAxNjM0MDksIDE2MzQxMywgMTYzNDE3LCAxNjM0MjEsIDE2MzQyNSwgMTYzNDI5LCAxNjM0MzMsIDE2MzQzNywgCisgICAgMTYzNDQxLCAxNjM0NDUsIDE2MzQ0OSwgMTYzNDUzLCAxNjM0NTcsIDE2MzQ2MSwgMTYzNDY1LCAxNjM0NjksIDE2MzQ3MywgCisgICAgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIDE2MzUwOSwgCisgICAgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIDE2MzU0NSwgCisgICAgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIDE2MzU4MSwgCisgICAgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIDE2MzYxNywgCisgICAgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIDE2MzY1MywgCisgICAgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIDE2MzY4OSwgCisgICAgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIDE2MzcyNSwgCisgICAgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIDE2Mzc2MSwgCisgICAgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIDE2Mzc5NywgCisgICAgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIDE2MzgzMywgCisgICAgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIDE2Mzg2OSwgCisgICAgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIDE2MzkwNSwgCisgICAgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIDE2Mzk0MSwgCisgICAgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIDE2Mzk3NywgCisgICAgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIDE2NDAxMywgCisgICAgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIDE2NDA0OSwgCisgICAgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIDE2NDA4NSwgCisgICAgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIDE2NDEyMSwgCisgICAgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIDE2NDE1NywgCisgICAgMTY0MTYxLCAxNjQxNjUsIDE2NDE3MCwgMTY0MTc1LCAxNjQxODAsIDE2NDE4NCwgMTY0MTkwLCAxNjQxOTcsIDE2NDIwNCwgCisgICAgMTY0MjExLCAxNjQyMTgsIDE2NDIyNSwgMTY0MjMyLCAxNjQyMzksIDE2NDI0NiwgMTY0MjUzLCAxNjQyNjAsIDE2NDI2NywgCisgICAgMTY0Mjc0LCAxNjQyODEsIDE2NDI4OCwgMTY0Mjk1LCAxNjQzMDIsIDE2NDMwOCwgMTY0MzE1LCAxNjQzMjIsIDE2NDMyOSwgCisgICAgMTY0MzM2LCAxNjQzNDMsIDE2NDM1MCwgMTY0MzU3LCAxNjQzNjQsIDE2NDM3MSwgMTY0Mzc4LCAxNjQzODUsIDE2NDM5MiwgCisgICAgMTY0Mzk5LCAxNjQ0MDYsIDE2NDQxMiwgMTY0NDE5LCAxNjQ0MjYsIDE2NDQzNSwgMTY0NDQ0LCAxNjQ0NTMsIDE2NDQ2MiwgCisgICAgMTY0NDY3LCAxNjQ0NzIsIDE2NDQ3OCwgMTY0NDg0LCAxNjQ0OTAsIDE2NDQ5NiwgMTY0NTAyLCAxNjQ1MDgsIDE2NDUxNCwgCisgICAgMTY0NTIwLCAxNjQ1MjYsIDE2NDUzMiwgMTY0NTM4LCAxNjQ1NDQsIDE2NDU0OSwgMTY0NTU1LCAxNjQ1NjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvZGVfaGFzaFtdID0gewotICAgIDc0MjI0LCA0ODUxLCAwLCA3ODE1NiwgNzg0OTksIDEyODY4NSwgNzkyOSwgMCwgMTk0NjgyLCAxMjc3NjYsIDc4NTAwLCAKLSAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCA5ODM4MjEsIDY5ODUwLCAxMzE5MiwgODY1MSwgMCwgMCwgCi0gICAgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDAsIDAsIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCAKLSAgICA0MjMzLCA0MjM0LCA0MjMyLCA5MTc4MzYsIDc0NDE1LCAxMjAyMTAsIDYzODQsIDkxNzg0MCwgNzgxMDgsIDg4NTEsIDAsIAotICAgIDEyODU1MywgMCwgNDE2MDEsIDg4NzQsIDk4Mzc4MywgNzc0OCwgMCwgMCwgMCwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgCi0gICAgOTE4OCwgNDE2MDAsIDAsIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAwLCAwLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIAotICAgIDM0MDQsIDAsIDAsIDAsIDE3NTksIDAsIDQxMDc2LCA2ODM4MywgMTIwNTcyLCAxMTkyMDUsIDY2NTc3LCA5NDAxNCwgCi0gICAgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgMCwgMCwgNjU5MDgsIDk4MzQsIDMwNTUsIDk4NTIsIDk4Mzg2MCwgCi0gICAgNjUyODgsIDAsIDExMzk4LCAwLCA5MjQxNywgMTE5MjU1LCAwLCAwLCA2MDMsIDc0Mzk4LCA0MzU0OCwgMCwgMCwgOTE3ODI0LCAKLSAgICAzMzUwLCAxMjA4MTcsIDY0MzE4LCA5MTc4MjgsIDEyNzA4OSwgMzM5MCwgNzQ0ODMsIDQzMjY1LCAxMjA1OTksIDkxNzgzMCwgCi0gICAgNzg1NzMsIDAsIDE5MTksIDM0MDAsIDEyMDY1MSwgMTI3OTQ0LCAxMTY0NywgOTE3NTQwLCA2NjQ0NiwgNjQxNDEsIDg1NjIsIAotICAgIDIxMjEsIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIAotICAgIDY0MTI4LCAxMjg1ODcsIDAsIDAsIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCA5ODM4NDQsIDQzMzc0LCA5Nzc5LCAKLSAgICAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDAsIDY2MDIxLCAwLCAwLCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgNjUyODIsIAotICAgIDI4NDMsIDUzNTUsIDEyNzkyOCwgOTgzOTY1LCAwLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMCwgOTgzNjIwLCAwLCAKLSAgICAwLCAxMjcwMjcsIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgCi0gICAgNjYxODYsIDAsIDAsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCA2NDE0NCwgNzYyLCAxMzE3MiwgMTE4ODU5LCAKLSAgICAxOTQ2NjEsIDY0NDY4LCAxMDkwNiwgMTM1MywgNjk2MCwgMCwgMCwgNTgyOCwgODcyNCwgOTE3ODA2LCA4OTMzLCAxNjAxLCAKLSAgICA0MjI0NCwgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIDAsIDc0NDAxLCA5MTc4MTEsIDU4NywgMCwgMTI4MTMxLCAKLSAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA5ODM5NDksIDEyMjEzLCAxOTQ2NzgsIAotICAgIDI3NjAsIDAsIDAsIDAsIDE5NDc5NCwgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgMCwgNjQxNTEsIDY0MTUwLCAxMjY3OSwgCi0gICAgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAwLCAwLCA0ODM5LCAwLCAwLCAxODc0LCAxMTkwMTYsIDAsIAotICAgIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCAKLSAgICA5MjU1MCwgNjQxMjIsIDc0NDIyLCA2NjYwOSwgMCwgNjQxMTcsIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIAotICAgIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDEyNzMwNiwgCi0gICAgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDk4MzE2MSwgCi0gICAgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODY3MSwgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAKLSAgICA5MTc5OTAsIDczODQxLCAwLCAwLCA5MDU2LCA2NDMxMywgNjE4OCwgMTIwMDE5LCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIAotICAgIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCA5MjIxMiwgMCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIAotICAgIDEyODM0NCwgMCwgMTE3NiwgMTE4OTU5LCAxMjc5MzAsIDgxNjIsIDEyODY2NywgOTgzODMxLCAwLCAxMjA1MTksIDY2Mzc2LCAKLSAgICA2NjI0MiwgMTE0MTUsIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMCwgMCwgNzcxNCwgNjYyMjIsIAotICAgIDY5OTAyLCA3NzY4LCAwLCA0MTk5LCA2NDcwOCwgOTgzNDIxLCAwLCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCAwLCAxMjY1NzAsIDAsIDY0NjE1LCA0MTkxNSwgCi0gICAgMCwgMTIwNzUsIDcwMDYyLCAwLCA1MTc0LCA5ODMyMTcsIDAsIDEyNzU1NywgMzEyMywgMCwgMTI2ODUsIDEyNzkwNCwgCi0gICAgODQwOCwgNjQ3MDQsIDAsIDAsIDkyMjMsIDAsIDQxNjE2LCA2Nzk5OSwgNzM3OTcsIDAsIDExMTYsIDEyODIwNCwgNDMwNDksIAotICAgIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIDAsIDExOTA2MSwgOTE3OTk5LCAwLCAxMzExNSwgNDM2NzUsIDY0MDkxLCAKLSAgICA5MzIyLCAwLCAxMjA1OTUsIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDAsIAotICAgIDAsIDExNDM0LCA2NDA4MywgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgMTk0ODE3LCAKLSAgICA5OTI3LCA0MTMzNSwgNDExOCwgMTc5NywgMCwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgMTI3ODgxLCAyOTgsIDAsIDEyODExNCwgCi0gICAgMCwgNDI2MjcsIDAsIDMyLCA2MTg3LCAxMTkwNTIsIDExNDk1LCAxMTQ1OSwgMzY2NSwgOTgzNjAwLCA0Mjg3MSwgMCwgCi0gICAgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDkyNDk1LCAwLCAKLSAgICA5ODM0NjYsIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgMCwgMTIwMTk5LCA5MTc4OTcsIDEyMDE5OCwgNjk4MDksIDYxODEsIAotICAgIDY1MDE0LCAwLCAwLCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMCwgMCwgMTE4OTA0LCAxMDA3MywgMTIwMjA2LCAxMjg4NjIsIAotICAgIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCA5ODMxMTgsIDEwMjA3LCA4Nzg5LCAKLSAgICA5ODMyMjUsIDAsIDAsIDk4MzQ3MiwgOTIzNCwgMCwgNjE4MiwgOTgzNDc0LCA2NTA1OCwgMCwgOTgzNDc4LCA5ODM0NzUsIDAsIAotICAgIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCAwLCAKLSAgICAxNjIyLCA3NzY3LCAxOTAwLCA0MTMzOSwgMTE0NTgsIDAsIDAsIDY1ODEsIDU1NzYsIDAsIDY0NDA1LCA0MTMzNywgMCwgCi0gICAgNDE2MzEsIDg5NDcsIDY4MzkwLCAxMjc4NDQsIDQxNjk0LCAwLCAwLCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgMCwgNjQ2MTgsIAotICAgIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgMTI3MDEwLCAxMjA1MDQsIDE5NDgyOCwgMCwgNTA1OCwgNDEwMTAsIAotICAgIDk5OTIsIDEyODI5OSwgNTA1NywgMCwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgMCwgMTQzNywgCi0gICAgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIDAsIDEyODUyOSwgCi0gICAgMTIxMTMsIDQyMzYsIDQ3MjcsIDAsIDAsIDc2OTMsIDEwNzQ5LCAwLCA3NDg4LCA1NzczLCA5NzgsIDEyODEzNCwgMCwgCi0gICAgNDE2MTksIDEwMjM5LCA2ODYxMSwgMCwgNjYyMDksIDAsIDEyODcwMCwgOTc0OCwgOTgzOTU2LCAxMjc1MjQsIDAsIDAsIDAsIAotICAgIDAsIDE5NTA4MywgMCwgOTgzODQzLCAwLCAwLCAwLCAwLCAwLCA5MzQxLCAxMTk1OTYsIDIzNzksIDExMzI1LCAwLCA2NDY2OCwgCi0gICAgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgMTE5MTc1LCA5MTc5NDAsIDIzNjksIDAsIDk4Mzk3MiwgOTgzOTczLCAKLSAgICAxMTkyMzUsIDc0MDkyLCA3MzkzNiwgNzAwOCwgNDM2NjAsIDAsIDAsIDAsIDIzNjcsIDEyNzgyNywgOTgzODU3LCAyNjQsIAotICAgIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAwLCA2MDE5LCAwLCAwLCA2OTYxLCAwLCAxMTg4MzksIAotICAgIDAsIDg4MDAsIDAsIDQyODYyLCA0NDYzLCA2NTU4MSwgNjE5MiwgMTk0Njc2LCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgCi0gICAgNjUwNDIsIDExODc5NywgMTIwODAwLCA5ODMwNDAsIDEyODkyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyNjEsIDEyMDcwNywgCi0gICAgOTgzMTI4LCAwLCA1MDc0LCA1MDczLCAxMjg3OTAsIDg5ODMsIDExODk4MSwgNzQ0OTMsIDk4MzU2MSwgNTA3MiwgOTM5NzcsIAotICAgIDYxOTgsIDExNjE0LCAwLCAxOTYsIDAsIDAsIDAsIDQ5MjksIDEyMDM0MiwgMCwgMCwgMCwgMCwgNDI4NDcsIDAsIDAsIDAsIAotICAgIDQ5MzQsIDAsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgMTI3OTE3LCA0MjU4NCwgMCwgNDMyOSwgNDEzMjEsIDQ5NzksIAotICAgIDMwNDgsIDc3NTIsIDQxMzIwLCA5ODMwNDIsIDc0NDE4LCAxMjgxOSwgMCwgNTA3MSwgMCwgMzY0MiwgMCwgNTA3MCwgCi0gICAgMTAwNDIsIDExODgzNSwgMzk4NywgNTA2OCwgMCwgODkwOSwgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAKLSAgICAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgCi0gICAgMTk0NjE5LCAwLCAwLCA2NDcwOSwgMCwgMTk0NjIwLCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMCwgCi0gICAgMCwgOTUyNiwgNDkyMCwgMCwgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDAsIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDEyMDIxMSwgCi0gICAgMCwgMTE4OTg1LCA0OTI4LCAwLCAwLCA3NDc3MCwgMTIwMTk0LCAxMjY1NDgsIDcyMiwgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIAotICAgIDEyNzQ4NSwgMTE5ODU1LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCAxMjc0NzQsIDEyNzQ3NywgMTY3MiwgNjIwNSwgCi0gICAgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCAxMjc0NjYsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAxMjY1NzcsIAotICAgIDEyNjUwMywgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDEyMDExMywgMTI3NDYyLCA3MDA1LCA0MTYwOSwgCi0gICAgOTU4MCwgMCwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMCwgODE0MywgMTI3MTE1LCAKLSAgICAxMTk4MywgOTIyNDksIDYyNCwgNzQ1MDgsIDQwNTcsIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIDAsIDUwNzYsIDAsIAotICAgIDE5NDYwOSwgMCwgODI5NSwgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMCwgOTI1MjMsIDEyMDEwMiwgNzEzOCwgCi0gICAgMTIwNTUyLCAwLCAxOTQ2MTEsIDc4NzUyLCAwLCAxMjUyMCwgODA1OCwgOTczMiwgMCwgNTA4MCwgNjQ3NzUsIDUwMzYsIAotICAgIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY1NiwgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIDQ0MzIsIAotICAgIDEyNzI3MSwgNTAzMywgMTI3MjczLCAxMjcyNzIsIDQ4MzYsIDM4ODgsIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgCi0gICAgNDM3MDQsIDEyNzI2NCwgMTI3MjUxLCA2NzU4OCwgMTE5MDAwLCAxMjcyNTIsIDEyNzI1NSwgODg1OCwgNjQwOSwgMTI3MjU2LCAKLSAgICAxMjAyNTIsIDEyODEwMCwgMCwgMCwgNjYzMjEsIDAsIDEyODE0LCAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCA2MDk0LCAKLSAgICA3NjQxLCA0MjQ0NSwgMCwgOTI0ODcsIDQyNDA2LCAxNjc2LCA3NDMyMCwgMTk0NjA3LCA5ODMxNzcsIDUwMzAsIDAsIDAsIDAsIAotICAgIDczODY5LCA5NjIyLCAwLCA2OTk0NCwgNjc4NywgMCwgMCwgMCwgOTgzNTgzLCAxMDU0NCwgMTI5MTksIDAsIDkyMjE4LCAwLCAKLSAgICAwLCA2OTkwNiwgMTIwNzg5LCAwLCA5NDcsIDExOTgzNSwgMTk0NTg2LCAxOTQ1ODUsIDEwOTY5LCAxMTk5MzUsIDc2MTMsIAorICAgIDc0MjI0LCA0ODUxLCAxMjUxMzgsIDc4MTU2LCA3ODQ5OSwgNzIzOTEsIDc5MjksIDY2OTEwLCAxOTQ2ODIsIDEyNzc2NiwgCisgICAgNzg1MDAsIDY2NDgwLCA2NDAzOCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgNzIzODUsIDU5NiwgOTgzODIxLCA2OTg1MCwgCisgICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgMTI2NTQyLCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMTE5ODU2LCAxMTM3NTIsIAorICAgIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCA0MjMzLCA0MjM0LCA0MjMyLCAxMjA4ODksIDc0NDE1LCAKKyAgICAxMjAyMTAsIDYzODQsIDcwMzUxLCA3ODEwOCwgODg1MSwgNjc2OTgsIDEyODU1MywgODI5NTQsIDQxNjAxLCA4ODc0LCAKKyAgICA3MjM5MiwgNzc0OCwgMTI1MDgzLCAwLCAxMjcwMjYsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIDQxNjAwLCAwLCAKKyAgICAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIDM0MDQsIAorICAgIDk4MzA3OSwgNzA0ODcsIDcyNDExLCAxNzU5LCAxMjA4NTMsIDQxMDc2LCA2ODM4MywgNjk5NzIsIDExOTIwNSwgNjY1NzcsIAorICAgIDk0MDE0LCAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCA2OTk3MCwgMTI4Mzg3LCA2NTkwOCwgOTgzNCwgMzA1NSwgCisgICAgOTg1MiwgMTI4MzYwLCA2NTI4OCwgMTIxMjkxLCAxMTM5OCwgMCwgOTI0MTcsIDkzMDE2LCAxMjgzODAsIDEyNzMzNywgNjAzLCAKKyAgICA3NDM5OCwgNDM1NDgsIDAsIDcxODY1LCA5MTc4MjQsIDMzNTAsIDEyMDgxNywgNjQzMTgsIDE5NDY5OCwgNzgxMjEsIDMzOTAsIAorICAgIDc0NDgzLCA0MzI2NSwgOTIzOTksIDkxNzgzMCwgNzg1NzMsIDExODgwMywgMTkxOSwgMzQwMCwgMTIwNjUxLCA4MzI5NiwgCisgICAgMTE2NDcsIDgzMjk4LCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIAorICAgIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIDY0MTI4LCA2NjI4NiwgOTMwNDIsIDEyODgzMCwgNjQxMzIsIDEwODY3LCAKKyAgICA2NDEzMCwgNjQxMjksIDEyMTI1NSwgNDMzNzQsIDk3NzksIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgODM0NTgsIAorICAgIDY2MDIxLCA3NDUwOSwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAyODQzLCA1MzU1LCA2ODg1OCwgCisgICAgOTgzMzQyLCA2OTk3MSwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDExMzcyNCwgMTI4ODcyLCAwLCAwLCA3MjM5MywgCisgICAgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDgzMzAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIAorICAgIDAsIDAsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCA2NDE0NCwgNzYyLCAxMzE3MiwgNzUwMDgsIDc3OTI4LCA0MzkyOSwgCisgICAgMTA5MDYsIDEzNTMsIDY5NjAsIDgzMDMyLCAxMjg3NzksIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgNDIyNDQsIAorICAgIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCA3MDQ1NSwgNzIzODgsIDc0NjA2LCA1ODcsIDkxNzkwNywgODI5NzEsIAorICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgODMyOTAsIAorICAgIDI3NjAsIDgzMjg0LCA4MzI4NSwgNzg3MDgsIDgzMjg3LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCA4MzI4MywgNjQxNTEsIAorICAgIDY0MTUwLCAxMjY3OSwgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAxMjUwMTYsIDAsIDQ4MzksIDY4NTI3LCAKKyAgICAwLCAxODc0LCAxMTkwMTYsIDEyMDA5MSwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgCisgICAgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIDc4ODQ3LCA2NDEyMiwgNjYzODksIDY2NjA5LCAxMjEzNDcsIDY0MTE3LCAKKyAgICA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIAorICAgIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCA5Mjg5NSwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgCisgICAgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIAorICAgIDEyODU0NSwgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAxMjA4NjQsIDczODQxLCA4MzMzOSwgODMzNDAsIAorICAgIDkwNTYsIDY0MzEzLCA2MTg4LCA3NDM2MCwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCAKKyAgICA2MywgNzIzMywgOTIyMTIsIDcyNDE0LCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgMTI4MzQ0LCAxMjEzODgsIDExNzYsIAorICAgIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDEyODE5NywgOTI3NDcsIDEyMDUxOSwgNDI5MzEsIDY2MjQyLCAxMTQxNSwgCisgICAgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAxMjEyNzEsIDk4MzY0OSwgNzcxNCwgNjYyMjIsIDY5OTAyLCAKKyAgICA3NzY4LCA3MjQwMywgNDE5OSwgNjQ3MDgsIDY1MDY0LCA3MDExNywgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKKyAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgNzE4NzgsIDEyNjU3MCwgMTIxMjU2LCAKKyAgICA2NDYxNSwgNDE5MTUsIDAsIDEyMDc1LCA0MjA0MSwgMTk0ODI1LCA1MTc0LCA5ODMyMTcsIDAsIDEyNzU1NywgMzEyMywgCisgICAgMTI1MTAwLCAxMjY4NSwgMTE5MjE2LCA4NDA4LCA2NDcwNCwgODMzMjgsIDAsIDkyMjMsIDAsIDQxNjE2LCA2Nzk5OSwgCisgICAgNzM3OTcsIDgzMzI3LCAxMTE2LCA3NTA2NywgNDMwNDksIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIDAsIDc1MDMxLCAKKyAgICA5MTc2MjIsIDEyODE2OCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgODMzMzgsIDgzMzMxLCA2NDA5NSwgNjQwOTQsIAorICAgIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCA2NzI0OSwgNjYzOTgsIDExNDM0LCA2NDA4MywgCisgICAgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgODMwMzMsIDk5MjcsIDQxMzM1LCA0MTE4LCAKKyAgICAxNzk3LCA4MzMxMiwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgODMzMDksIDI5OCwgODMzMDMsIDgzMzA0LCA4MzMwNSwgNDI2MjcsIAorICAgIDEyNTAxMSwgMzIsIDYxODcsIDgzMDM3LCAxMTQ5NSwgMTE0NTksIDM2NjUsIDgzMDM2LCA0Mjg3MSwgMCwgMTk5MjMsIAorICAgIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDgzMzE0LCA3MTQ0NCwgOTgzNDY4LCAKKyAgICA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDgzNDYxLCA2ODA1MywgODM0MDcsIDEyMDE5OCwgNjk4MDksIDYxODEsIAorICAgIDY1MDE0LCA5ODM0MjIsIDEyODQ4NCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDExODg1MSwgODMwMzksIDExODkwNCwgCisgICAgMTAwNzMsIDEyMDIwNiwgODMwMzgsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCAKKyAgICAxMjg5MTUsIDEwMjA3LCA4Nzg5LCA5MzA3MCwgMTIwMzM4LCA5Mjk3MywgMTI4MzI1LCA5MjM0LCA5MTc4OTUsIDYxODIsIAorICAgIDk4MzQ3NSwgNjUwNTgsIDEyMDMxOSwgOTgzNDgwLCA2ODA2NCwgOTE3ODMxLCA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIAorICAgIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgNjY4OTQsIDE2MjIsIDc3NjcsIDE5MDAsIAorICAgIDQxMzM5LCAxMTQ1OCwgMTE5MDYxLCAwLCA2NTgxLCA1NTc2LCAxMjg2MTgsIDQzODU1LCA0MTMzNywgMCwgNDE2MzEsIAorICAgIDg5NDcsIDY4MzkwLCA2OTY4MywgNDE2OTQsIDk4Mzg0OCwgNzIzOTYsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCA5MTc4NzIsIAorICAgIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDcwMDA1LCAxMjA1MDQsIDE5NDgyOCwgMTI4OTYxLCA1MDU4LCAKKyAgICA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCA5MTc5NDEsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIAorICAgIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAKKyAgICAxMjgzMjIsIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgCisgICAgNTc3MywgOTc4LCAxMjgxMzQsIDk4MzY5OSwgNDE2MTksIDEwMjM5LCA2ODYxMSwgNzE4NjQsIDY2MjA5LCAxMjcyMzMsIAorICAgIDc0MTM1LCA5NzQ4LCA5ODM5NTYsIDEyNzUyNCwgMCwgOTgzMzE2LCAxOTQ2NzYsIDE5NDY3NSwgMTI4MDgxLCAwLCAKKyAgICA5ODMzMTMsIDk4MzMwMiwgMCwgMTI3ODY1LCAwLCA5Mjc3NiwgOTM0MSwgNzg4MjEsIDIzNzksIDExMzI1LCA5MTc5MDIsIAorICAgIDY0NjY4LCA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCA4MzE2NCwgOTE3OTQwLCAyMzY5LCA4MzQwNiwgOTgzMzIzLCAKKyAgICAxMjc5NjYsIDExOTIzNSwgNzE4NjgsIDczOTM2LCA3MDA4LCA0MzY2MCwgMTIwMzQ2LCAwLCA0Mzg0MSwgMjM2NywgCisgICAgMTI3ODI3LCA5ODM4NTcsIDI2NCwgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDEyOTA0OSwgCisgICAgNjAxOSwgMTI4OTc1LCAwLCA2OTYxLCAwLCA3MDQzNSwgNjcxNzEsIDg4MDAsIDEyNzMzMiwgNDI4NjIsIDQ0NjMsIDY1NTgxLCAKKyAgICA2MTkyLCAxMTk2MTAsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCA2NTA0MiwgOTMwMTQsIDEyMDgwMCwgNzQ5NDIsIDEyODkyLCAKKyAgICAwLCA2NzE0OSwgNzQ4OTksIDczOTMxLCAwLCAxMjA0OTUsIDEyNzI2MSwgMTIyMjQsIDk4MzEyOCwgMTI5MDYxLCA1MDc0LCAKKyAgICA1MDczLCAxMjExNjQsIDg5ODMsIDExODk4MSwgNzQ0OTMsIDcxMjMxLCA1MDcyLCA3NDU0NywgNjE5OCwgMTE2MTQsIDAsIAorICAgIDE5NiwgOTgzMTU0LCAwLCA5ODM5MzYsIDQ5MjksIDEyMDM0MiwgMTI5MTQ1LCAwLCAxMjc5ODcsIDEyMTQ1NSwgNDI4NDcsIAorICAgIDkyOTUzLCAwLCA2Nzc1NCwgNDkzNCwgOTgzOTgxLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDcwMTgxLCA0MjU4NCwgMCwgCisgICAgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCA5ODMwNDIsIDY0NjY3LCAxMjgxOSwgOTgzODcwLCA1MDcxLCAKKyAgICAxMjc5MTUsIDM2NDIsIDY3MzM0LCA1MDcwLCAxMDA0MiwgMTEzODEzLCAzOTg3LCA1MDY4LCA5ODM0NjAsIDg5MDksIAorICAgIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgCisgICAgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDEyMTM1OSwgMTI4MDI4LCAwLCA2NDcwOSwgODMyNjksIAorICAgIDEyODg1NCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDEyNzIxOCwgMCwgOTUyNiwgNDkyMCwgCisgICAgMTI4NjE3LCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMTI3ODU3LCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMTM3NzksIAorICAgIDEyMTA0OSwgMTE4OTg1LCA0OTI4LCA5ODMxNDksIDgzNTE0LCA3NDc3MCwgMTIwMTk0LCAxMjY1NDgsIDcyMiwgMTk0OTM0LCAKKyAgICAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgODI5OTksIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDQzNDkzLCAxMjc0NzcsIAorICAgIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgOTI2OTQsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAKKyAgICAxMjY1NzcsIDY4MzM2LCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgOTI3NjEsIDEyNzQ2MiwgNzAwNSwgCisgICAgNDE2MDksIDk1ODAsIDcwNDMxLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAxMjc5MDAsIAorICAgIDgxNDMsIDEyNzExNSwgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAKKyAgICAwLCA1MDc2LCAxMjg3MDIsIDgyOTkxLCAwLCA4Mjk1LCA2ODUsIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAxMjkxODIsIAorICAgIDkyNTIzLCA3MTQzNSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgMTk0NjExLCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCAKKyAgICA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY1NiwgMCwgODA3NCwgCisgICAgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIDQ0MzIsIDEyMTMxMywgNTAzMywgMTIwMzQxLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIAorICAgIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIDEyNzI2NCwgOTI5NTcsIDY3NTg4LCA2ODA2MSwgMTI0OTgzLCAKKyAgICA3MDM2MCwgODg1OCwgNjQwOSwgNzY2MywgMTIwMjUyLCAxMjgxMDAsIDExOTAwNywgMCwgNjYzMjEsIDk0MDUyLCAxMjgxNCwgCisgICAgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgNjA5NCwgNzY0MSwgNDI0NDUsIDEyODc5MiwgOTI0ODcsIDQyNDA2LCAxNjc2LCAKKyAgICA2NzM2MiwgNzQ4NjIsIDY3MzY1LCA1MDMwLCA2NzM2NCwgMTE4ODEwLCAxOTUwMDgsIDczODY5LCA5NjIyLCAxMTM3NjMsIAorICAgIDY5OTQ0LCA2Nzg3LCA2NzM2MSwgOTgzMjcwLCAwLCA2ODMxOSwgMTA1NDQsIDEyOTE5LCA3MTQ4NCwgNzIzOTcsIDAsIDAsIAorICAgIDY5OTA2LCAxMjA3ODksIDk4MzA0MSwgOTQ3LCA2NzY5NSwgNjczNjcsIDEyODUyOCwgMTA5NjksIDY3MjI4LCA3NjEzLCAKICAgICA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDAsIAotICAgIDQzNTY3LCA3NDA1NiwgOTE3OTEwLCAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCAKLSAgICA0Mzk1LCA0MzUzOCwgMTE5OTI2LCAxMTk5MjksIDExOTkyOCwgNzIxMywgMTE5OTIyLCA3MjE0LCA3MjE1LCA5ODM4MzYsIAotICAgIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgMTE5NjE4LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCAKLSAgICA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDc0MjY0LCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCAKLSAgICA4MTUwLCAxMzU5LCA2NzY1MiwgMTI3MzI5LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIAotICAgIDEyNzMyNCwgMTI3MzIxLCA5MjI3OSwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTI3MzE4LCAxMjczMTUsIDEyMjgzLCAKLSAgICAxNjE2LCAzNzk1LCAwLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAwLCAwLCAzMjM5LCAKLSAgICAxMjczMTEsIDAsIDAsIDg0MzEsIDAsIDQyMTY0LCAwLCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCAxMTkwNzMsIDUwNDAsIAotICAgIDAsIDAsIDk4MzQ0MywgNzg0MjAsIDAsIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgNzQyOTMsIDAsIAotICAgIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgNzM5MDksIDQ4MzUsIAotICAgIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgCi0gICAgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgCi0gICAgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIDY1Nzg0LCAKLSAgICA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIDY1NzgxLCA2NDczNCwgNzAwNzMsIDI0NDAsIDY1NzgwLCA3NzkxMywgODQ0OSwgMCwgCi0gICAgNTAwOCwgOTgzNTcyLCAyMTE4LCAwLCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIAotICAgIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgMjExNiwgMjQ1NSwgMCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCAKLSAgICA4NzE0LCA5ODM4MjAsIDIxMTMsIDAsIDIxMTUsIDEyODE3NywgMTI3OTA3LCA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIAotICAgIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIDQyNjQ3LCA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgCi0gICAgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgOTExNywgOTgzMTgxLCAxMjAwMywgNTUxMywgNjY2NiwgCi0gICAgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgNzg0MzcsIDAsIDE5MjUsIDAsIDkyMjM3LCAKLSAgICA3NDgwNywgMCwgNTA0OCwgNTA0NywgMCwgMCwgMCwgOTIzMTMsIDAsIDc0NDk3LCA5MjM5NSwgODA4OSwgNjkyOSwgNjM5LCAKLSAgICA5ODM1NjMsIDY4MTc5LCA2NDQ0MiwgMCwgOTIzNDgsIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIAotICAgIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCA5NDAxNywgOTgzOTc2LCAzNTMwLCA5NzUwLCAxMjgzMTcsIAotICAgIDAsIDY2NTYsIDQyNjE4LCAwLCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCAKLSAgICA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAwLCA3ODUzLCA3NDA2OCwgNzQwMDQsIDk2NjksIAotICAgIDEyMzQxLCAxMjcwMywgODQwMiwgMCwgMTE5MDcwLCA5MTc2MDAsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDAsIAotICAgIDExOTYwNiwgNjc5ODMsIDEzMjk2LCA1MTcsIDAsIDEyODUzNCwgMTk0OTQ2LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMCwgMCwgCi0gICAgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMCwgMTk0NTkxLCAwLCAKLSAgICAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgMTIwNDM5LCA0ODksIDAsIDQyNTAsIDEyMDQ0MSwgMTIwNDUyLCA0MzE1MSwgCi0gICAgOTgzMTc4LCAxOTQ4NTEsIDY2MjAwLCAwLCAwLCAwLCA3ODQyMywgMCwgMCwgODcxMSwgNjE4MywgMCwgMCwgMCwgMTIwNDQ4LCAKLSAgICA3NjIzLCAxMTg5MjUsIDExODg4OSwgOTIzNSwgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgCi0gICAgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgMCwgMTI2NTk3LCAxMjA0MzUsIDAsIDc3MjYsIDAsIDE5OTIyLCAyNjcsIAotICAgIDMzOTMsIDQyMTk4LCAxMzcxLCAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIAotICAgIDQxNjEyLCA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgMCwgOTgzMzQ4LCAwLCAzMzkxLCA0MTA3NSwgMjQ3NiwgMCwgCi0gICAgMTI4MDE3LCAwLCAxMDYyNSwgMCwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCAxMjc1MzcsIDEzMDE0LCAKLSAgICAxMzAxMywgMCwgNjY3MywgMCwgMCwgMCwgMTI0MzgsIDAsIDk4MzM0MiwgMCwgOTgzODgwLCAxMjY2MzgsIDkwNTMsIAotICAgIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgOTgzODI4LCA2NjYwLCA3ODc1OCwgOTE3NzYwLCA5MTc3OTMsIAotICAgIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgMCwgMTI3OTQwLCA5ODMzNDEsIDc0NTQ3LCAxMjY1ODUsIAotICAgIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTk1MDAyLCAxMTkyMzgsIDE5NTAwNCwgNzgwOTksIDEyNzA4NSwgMCwgCi0gICAgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCAwLCA3ODQ1OCwgNjY3MjgsIDE4MTYsIDAsIDQyNTMzLCAxNjgsIAotICAgIDQyODQ1LCA0ODk4LCA2NDI5OCwgOTgzMTQxLCAwLCA0OTAxLCAxODIxLCAwLCA1NzgsIDM2NTMsIDAsIDc5MSwgOTE2MiwgCi0gICAgNjk3NywgMCwgNzg4ODksIDc0NTYxLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIDExOTMwMywgOTgzNDQ5LCA3NTU3LCAKLSAgICAxMTkzMzksIDExOTMwMSwgODIzNCwgNzI0MSwgMCwgMTIwNjcxLCAxMTkxNjcsIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAKLSAgICAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIDEyODI3NiwgNzQ1OTksIDc4NDQ5LCAKLSAgICA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAyNDUyLCA3ODA4MywgMTI4ODI0LCAKLSAgICA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgOTE3OTE3LCA3MTMwMiwgNDQwOCwgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIAotICAgIDE5NDk5MCwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDkyMjg2LCAyNDM4LCA2NDg1NSwgMTE5MzAwLCAxMTkyOTksIAotICAgIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAwLCAwLCAwLCA0MTk1MiwgMCwgCi0gICAgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgCi0gICAgMTI5NjMsIDEyNzg2NCwgNjE4OSwgNDEyNSwgMTMxNCwgMTIxMzMsIDEyMDM0MCwgMTE4ODczLCAxMjcxLCA5ODM2NDAsIDAsIAotICAgIDY2MDI0LCA0MTQ4MiwgMzg2NCwgNzQ1MzksIDAsIDM4NzksIDAsIDEyOTc4LCA0MTY2LCA0NTc0LCAwLCA3NTY3LCA3NDU5LCAKLSAgICA5ODMxNjAsIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDkyNTQ4LCA1NzU5LCA5ODM5MTIsIDAsIDQxMzg4LCA2NDQ0NiwgCi0gICAgNDEzOTIsIDY0Mjg4LCA0MTM4NywgMCwgODcwNiwgNTU1MiwgOTgzMTg3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIAotICAgIDc0OTksIDY4MDA3LCA2NjU5NiwgNzQwNjYsIDAsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCAKLSAgICA5MjYyNiwgMCwgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgCi0gICAgNzgwOTEsIDAsIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgMTk1MDY3LCA2Nzk5NSwgMTk1MDY5LCA2NTYsIDE5NTA3MSwgCi0gICAgNjUwMzcsIDQ1NzcsIDY0NjI0LCAwLCAwLCAwLCA5ODM2NDksIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgCi0gICAgOTUwLCAwLCA5MjI3MywgNjY1ODAsIDExODg5NSwgNjY2ODMsIDEwNTU0LCA5MTc3NzgsIDExOTEyMSwgMCwgNTA5OCwgCi0gICAgOTE3NzcwLCAwLCAxMTkwOTksIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCAxMjg4NzAsIDk4MzcwMSwgMzY1MSwgMCwgCi0gICAgMTIwNzMwLCAxMjc1NTYsIDUxMDIsIDUxMDEsIDEwMjY5LCAxMjk4MywgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgCi0gICAgMTIwOTMsIDEyNDcsIDEwMDM0LCAxOTUwNjQsIDUwOTksIDc4MzczLCAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAwLCA3ODM4LCAKLSAgICAwLCAxOTUwNDEsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCAxMjA3OTAsIDEyODU4MiwgOTA3OCwgODU0NSwgNjYzNTYsIAotICAgIDEyODc5OSwgMCwgOTE1NCwgOTExOCwgMTI2NTQzLCAwLCAyNjc2LCAyMjc3LCAwLCA3MzgxMiwgNjE5MCwgODU5OSwgCi0gICAgMTk1MDUzLCA2OTkxOCwgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgOTI2MjAsIDEyMTI5LCAwLCA4NDgxLCAwLCAKLSAgICA2MjAyLCAxOTUwMzUsIDEwOTIwLCAxMjgyMzcsIDUyMDMsIDE5NTAzOSwgMTk1MDM4LCA1MTA4LCA1MTA3LCA2NTgxOCwgCi0gICAgNjYwMTksIDk3NjIsIDAsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgNjY1NywgMjA3LCAxMjg4MDYsIDQyNzUsIAotICAgIDc0ODE5LCA4NTQsIDY4MTQ3LCA3NDM4MSwgMCwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgCi0gICAgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAwLCA0MzAzNCwgMTE0MzgsIDY0Njc0LCAwLCA5MjY5NCwgNjg0MzEsIAotICAgIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCA1MTA1LCAxMjc1MDksIDY5NzIwLCA2NDc2LCAKLSAgICA1MTA0LCA5ODM3NDksIDMwNCwgMzE3NiwgMTE5MDEwLCAwLCA5MzIsIDEyMDYzMywgNjU2NywgMjM4LCA2OTY1NiwgCi0gICAgMTk1MDExLCAxOTQ1OTUsIDE5OTA1LCAxMjA1NzcsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgMTk0OTAyLCAKLSAgICA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAxOTUwMTksIDg4MDMsIDMwOSwgCi0gICAgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgMCwgMTI1NjgsIDAsIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIAotICAgIDk3MTIsIDY4NjgwLCA0Mzk3MCwgOTgzMTk4LCA2NTE2NSwgOTI3MjUsIDAsIDY2NDY2LCAwLCAwLCAwLCA2NjcyNSwgNjE5MSwgCi0gICAgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAwLCA0MTc1NCwgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDk3NSwgCi0gICAgNjg0NjIsIDgyMzIsIDExODgxNywgMCwgMzIyMiwgMCwgMCwgMCwgNjY2NjMsIDAsIDAsIDEwODM0LCAwLCAwLCA2NTczMiwgCi0gICAgOTQwOTUsIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxOTUwMjAsIDAsIDc3ODEsIDQxMzgzLCA2NDU2OCwgMCwgMTIwNzM4LCAKLSAgICAxMjA3NywgMCwgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCAxMjgwMzUsIDI0NzksIDAsIDM2MzIsIAotICAgIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDE5NDk2MCwgNzQ4NDQsIDY3NjM5LCAzNjM2LCA2Nzg5NCwgMzY1MCwgODgzNywgCi0gICAgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA5MTc2MzAsIDM2NDAsIDEyNzE5MCwgCi0gICAgNDIzMjEsIDcyODQsIDE5NDk3NCwgMTk0OTczLCAxOTQ5NTAsIDE5NDk0OSwgMTk0OTUyLCAxOTQ5NTEsIDEyNjY0OSwgCi0gICAgMTk0OTUzLCA0MjA4MCwgMjUyOSwgMCwgMCwgMCwgNDIwODMsIDEyMDY3OCwgNjgzOTgsIDE5NDk1NywgNjc2MTksIDY2MzY3LCAKLSAgICAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAwLCA5MjU0NSwgMCwgCi0gICAgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgOTI1LCAxMjcxNTYsIDAsIAotICAgIDQxOTg1LCA0MTA3MSwgOTU4NiwgMCwgNDE5ODQsIDkyMTcsIDAsIDAsIDAsIDkxODYsIDIwNjcsIDQwMTYsIDk4MzgwMywgMCwgCi0gICAgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDAsIDY5ODgwLCA1MTg0LCA0MjA3OCwgMTk0OTQ3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAKLSAgICAxOTk0MywgNTg2MCwgNjc2MzMsIDAsIDAsIDgxMiwgMzYxNSwgMCwgNTE3OCwgNDQwMDAsIDEyMDU0OCwgNzg4MDcsIDUxODgsIAotICAgIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAwLCA2NzYzMSwgNDI2MTYsIAotICAgIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDc4Nzg5LCA2NzYzMiwgOTE3OTI0LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgCi0gICAgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMCwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCAwLCA4NTQyLCAxMzE0NSwgCi0gICAgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgMCwgNDExMTcsIDAsIDkyNTgwLCAKLSAgICAwLCAwLCA2NzYyNCwgMCwgMTI5MCwgMCwgNjU1ODUsIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCA5MTc4ODMsIDEzMTgsIAotICAgIDY0NzMxLCAxMjY1NzgsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCAwLCAxMjc1NiwgNjUyNTksIDAsIDk4Mzc4MSwgCi0gICAgMTI3NTIsIDU4MzMsIDE0MzIsIDAsIDQxODgzLCA3MzkxMiwgOTc5OSwgMCwgNDE4ODYsIDI0ODAsIDAsIDIwNjIsIAotICAgIDEyNzI5MywgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMCwgMTIxMSwgMCwgMCwgMCwgMTE4ODMyLCAxMjMxOCwgMCwgCi0gICAgMCwgNjgwMDUsIDEwNjIyLCA5ODM3NzksIDAsIDc4NjU0LCA2NTY2LCA3ODY1OSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIAotICAgIDAsIDc4NjYwLCAwLCA4Mjg0LCAxMzA4MSwgMCwgMzU4OSwgNDIwNTEsIDQwMzUsIDY0OTIsIDkyMjM2LCA0MjY1LCA2NjQyLCAKLSAgICAzOTc3LCA3NDE4NiwgNDE3NzgsIDgzNiwgMTE5MjE2LCAyNDg4LCAwLCA0NTgyLCAwLCAwLCA0MTc3NywgMTI5MjYsIAotICAgIDk4MzM3NywgNzUyOCwgMTA1NTAsIDAsIDkyNzA2LCAwLCAxMDk2MSwgMCwgMTM3NCwgNjQ4NzgsIDExOTAxNCwgMCwgCi0gICAgNDIzODksIDQxMzc0LCAyMjg2LCAwLCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMCwgNDAwLCAxMjU5NywgMTIwNTg2LCAwLCAwLCAKLSAgICA2NjYxLCA5ODMxNDUsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAwLCA3MTMwMSwgOTgzODYyLCAzNDczLCA3NzE4LCAwLCAwLCAKLSAgICAwLCA1NTI4NSwgMCwgMCwgMCwgMTE5NjksIDk4MzM5MCwgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCA5ODMzNzAsIDgwODAsIAotICAgIDcwMDYsIDAsIDk4MzM3MSwgNjc1NywgNjQzNTEsIDE1NDQsIDAsIDY3NjYsIDY0Njc3LCAxMjA3MTYsIDk4MzM3MiwgNjE0NiwgCi0gICAgMCwgNzcxLCA5ODMzNzMsIDAsIDEyODEyLCAxMzE2OCwgNDIyNzIsIDEyMjAwLCA5MTc5MjcsIDc5MDQsIDAsIDk1MywgCi0gICAgMTI5MTcsIDExOTU2MCwgMTIzMDAsIDAsIDExNDkxLCA5NzI0LCAxMDM0MSwgOTgzNzczLCA5NTI0LCA3NDkwLCAxMTM4OSwgCi0gICAgNzQ4OSwgMzM3OSwgMCwgNzQ4NywgMCwgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCA3NDc3LCAKLSAgICA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAKLSAgICAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIDAsIDYwMTcsIDY1MzExLCAxMjc0ODEsIDEyMDIxNiwgMTMzMDYsIAotICAgIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgMCwgMTIwNTQ0LCAwLCAwLCA5MjY2MCwgMCwgMCwgMCwgMTk5NjEsIDI0NzIsIAotICAgIDQyNjY1LCA5MjM0MSwgMCwgMjEzOSwgNDI1NiwgMTIwNzc2LCA3NDM4MCwgMCwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgMCwgMCwgCi0gICAgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAwLCAwLCAwLCAKLSAgICAwLCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCAxMjgzMDgsIDAsIDAsIDgzMzAsIDAsIDAsIDQyNzk3LCAKLSAgICA5ODMxNTAsIDEyMDIxNSwgMCwgMzkwMiwgMCwgMTc3MCwgMCwgMTI4ODY2LCAxNTYwLCAxMjAyMDksIDE5NDk3MiwgNDU4NCwgCi0gICAgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgMTE4OTI4LCAxMTE4LCA3MTMzNCwgMCwgMCwgMTA4MSwgNzQzNiwgNjg0MjAsIAotICAgIDcyNTIsIDAsIDU5OTYsIDY5OTIxLCA0OTAzLCAwLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAxMzMwLCAwLCA3MTM5LCAwLCAKLSAgICAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgCi0gICAgMCwgMCwgOTgzNzQxLCAxMjcxNSwgNjgwMDIsIDk4MzQ3OSwgMTI2NjMwLCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAKLSAgICAxMTkxNTcsIDY4MDAwLCA5MjQ2NCwgMCwgMTI2OTg0LCA2ODAwMSwgOTMzNCwgOTI3MDUsIDkyMzE1LCA3MDEwMSwgNzk3NSwgCi0gICAgMCwgNzc5NTcsIDAsIDY2NjIxLCA0ODg0LCA2NjU5NywgNjk3MzIsIDAsIDAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgCi0gICAgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMCwgMTE5NjA3LCAzMTE3LCA1NDYwLCAwLCAwLCA5ODMzODcsIDAsIDQyMjc5LCAKLSAgICAxOTQ1NzcsIDAsIDc4NDE1LCAwLCAxOTUwMDgsIDk4MzM4NCwgMTMyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NjMsIDAsIDAsIAotICAgIDAsIDAsIDI0ODIsIDE0NzEsIDAsIDAsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAxMjM3NCwgMCwgMCwgMCwgCi0gICAgOTgzNjk0LCAyNDYwLCAwLCAxMTk0NCwgMTIzNzYsIDEyNzg2OCwgNjQ2NzksIDAsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIAotICAgIDU4NzAsIDAsIDIwMjQsIDEyNzE4MCwgMCwgMCwgNTM5LCAwLCAxMjc3NjUsIDk0MDUyLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAKLSAgICAxMjA3OTYsIDEyMDI0NSwgOTIzMjQsIDAsIDg2NTksIDAsIDEyNDc0LCA5MjU3OSwgOTUwMywgMTk0OTY5LCAyNDc4LCAwLCAKLSAgICA0MTYyLCAwLCA0MjYwLCAxMjk1MywgNjk2MzMsIDEyMDA4OSwgMTI0NzAsIDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIAotICAgIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDAsIDk4MzU3OSwgMCwgNjk2NzIsIDgyMTMsIDc0MDE3LCA3NzcxLCA2MTYxLCA2ODAxOCwgCi0gICAgNjcwOSwgMCwgNzg4ODUsIDk4MzcwOCwgMTI3OTcxLCAxMjA1ODIsIDc4NTQ3LCAwLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAwLCAKLSAgICAwLCA3Mzc5MSwgMCwgMCwgMCwgMCwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIAotICAgIDM4OTMsIDk4MzI2NCwgMCwgMTIyMTAsIDcyMjEsIDQyMTQ3LCAwLCA3NDU1MCwgNzQ0NjUsIDY0NzQ3LCAxMTg4NDEsIDAsIAotICAgIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAKLSAgICAzNTkxLCA0MTk2OSwgMCwgMjQ1MywgMTI4NTQ5LCA5MjY2NiwgNjQ3MDUsIDAsIDAsIDEwMzQ5LCAxMDQxMywgNDM1OTEsIAotICAgIDQxOTYyLCAzMjAyLCA3NDM1MywgMCwgODMxNiwgMCwgMCwgOTQwNjAsIDY4NywgMCwgMCwgMCwgMTg0MCwgMCwgNjg2NzEsIAotICAgIDExOTgwOSwgNDg4MywgMjg1LCA0NzIzLCA3MDA5OSwgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAKLSAgICAyNDAsIDE5OTA2LCAwLCA0MjMyMywgMCwgOTc0MywgMTIwMjMyLCAxMzEzNCwgMTI2NTM1LCAwLCAwLCAwLCAwLCA0MjYzNCwgCi0gICAgOTgzMzQzLCA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMCwgMTA0NDUsIDAsIDAsIDY2NzE3LCAyNjE0LCA5MTI1LCAKLSAgICAxMTkwMjMsIDE3MjksIDAsIDEyMDIzNiwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDAsIDY1MTk0LCA2NjIwMSwgMCwgCi0gICAgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIDQ5NDMsIDUxNTAsIAotICAgIDczODg5LCA3NDE4MiwgMTI3OTE1LCA2NDMsIDMwODYsIDAsIDQyNDQ4LCA0MjI5OSwgNTgsIDAsIDkxNzk1MiwgMTIwMDgzLCAKLSAgICA2Mzg3MywgODQ5MSwgMCwgMCwgOTgzNjIzLCA0NTMwLCA0MjQwOSwgNzEyNiwgMTk0NTc1LCAyNzIxLCAxMjAwNzQsIAotICAgIDExOTA5NiwgMTk5MjksIDAsIDE5NDU3NCwgMCwgNDI0MiwgNDI2NCwgMTIwMDc3LCAxMjA1MzAsIDY2MTc5LCA0MjQxMiwgCi0gICAgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIDAsIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgCi0gICAgOTgzMjM4LCA1NTI4MCwgNDIxNzQsIDE5NDkyNSwgNDI0MzAsIDAsIDAsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIAotICAgIDY4NDMyLCA5MjU4NiwgMCwgNjY2NjcsIDEyNzMwOSwgMCwgMTI2NTIxLCA0MjIwMCwgNDI1NjYsIDAsIDAsIDUwODgsIAotICAgIDY5NDgsIDAsIDg1MjQsIDAsIDAsIDEyMzg1LCAwLCAwLCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgCi0gICAgNjUwMzgsIDEyMzkyLCA2NTAzNiwgODA2NCwgMCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCA3Nzk5OSwgCi0gICAgMTE2NjMsIDE2NjYsIDQyMDkxLCAxMTk2NTcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAwLCA2Mzg5NiwgCi0gICAgMTIwNjEsIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDk4MzgzMiwgOTgzODM0LCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIAotICAgIDEyNDQsIDMzMSwgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDAsIDEyMzc5LCAxOTQ4NzcsIAotICAgIDEyMDgxOCwgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDAsIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgCi0gICAgNzg1NDksIDQxMjIwLCAxMzAzMiwgMCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIAotICAgIDI5MzUsIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIAotICAgIDYzOTAxLCAwLCAzNjU3LCAxMjg1NzIsIDY1MjAyLCA2MDAwLCAxMTkyMDYsIDEyNDI2LCAxMjcxODEsIDAsIDQxNzQwLCAKLSAgICAxMjQyOCwgNDEyODMsIDQxOTE2LCAxMTkyMTAsIDAsIDAsIDEyNDI5LCA2NzI3LCAwLCA3NTYyLCAwLCA1MTcwLCAwLCAKLSAgICA0MTc1NSwgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgNjE2MiwgMCwgCi0gICAgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIDEyNDIyLCA0MTgzMiwgNDM5LCA0MzA3NywgMCwgNDIyMDcsIAotICAgIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAwLCA5MTc3OTksIDgzMDgsIDkxNzc5NywgOTE3Nzk2LCAwLCA2Nzg2NCwgCi0gICAgOTE3ODAxLCA5MTc4MDAsIDEyMzM2LCA0MTM1LCA2OTgwNSwgMzQxLCAyNzI3LCA0MTI5LCAzNTM5LCAwLCA2Mzg2MSwgMCwgCi0gICAgNzkxMywgMCwgNjM4NTksIDQxMzEsIDYzODY4LCAwLCA2Mzg2NywgNDEzMywgMTEzNzEsIDIxMCwgNDYwMCwgMCwgNzQ1NjAsIAotICAgIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCA2NzA0LCA0NTkxLCAxMjgwMjksIDAsIDAsIDk2ODAsIDAsIAotICAgIDEyMDYyMywgNTYxLCAxMjE1OSwgMTk1LCA3ODUwOCwgNDE1MDEsIDAsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgCi0gICAgMCwgNDE0OTksIDAsIDAsIDQyMjQyLCA0MTQ5OCwgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgMCwgCi0gICAgMjkyNCwgMCwgMTIwNTEwLCAwLCAwLCAxMTkyMTMsIDczOTQxLCAwLCA0MjMzMCwgOTE3Nzg0LCAzOTY5LCAwLCAwLCA3MTY5LCAKLSAgICAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgMCwgMCwgMTI4ODAxLCAxOTQ4MzcsIDAsIAotICAgIDMyNywgMCwgOTA0MiwgOTE3Nzc3LCA5MTc3NzYsIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgCi0gICAgMTI0MzEsIDg2NjgsIDEyNDM0LCA5ODM4MzUsIDkxNzc4MiwgNTk5OSwgMCwgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIAotICAgIDE3MjYsIDEwMTUsIDAsIDgyMTIsIDAsIDEyODAxNCwgNDI0MjMsIDExOTA2NiwgMCwgMTI4MTA4LCA2NjcwOSwgMCwgODgxMSwgCi0gICAgOTI3LCAwLCAwLCAxMjQzNiwgOTgzMjQ1LCA0MjAyMSwgMCwgMCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgCi0gICAgMTk1MDE2LCAwLCA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCA5ODMxODQsIDAsIDE5OTE0LCAxMjE3OSwgOTgzODEyLCAKLSAgICAyMjk2LCAxOTQ5MjMsIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIDI1OTQsIDM0NDQsIDYzODE3LCAKLSAgICA2NDY1MSwgMCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDAsIDEyMDc1NiwgMTk0OTIyLCAwLCA1NjY0LCAzOTcyLCAwLCAwLCAKLSAgICAwLCAxMjg1MDgsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgOTE3NzY4LCAxMjQxOCwgNzQxMTEsIAotICAgIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgMTI4NjQ4LCAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIAotICAgIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIAotICAgIDEyNDE1LCA2NjI2LCA0Mjc2MywgMCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDAsIDExNzI0LCAwLCAwLCAxMjcxMDQsIAotICAgIDEyNjYxOSwgMCwgMCwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAxMTQwMCwgNzEzMDUsIDE5NDc5OSwgMCwgMTI4MjM5LCAKLSAgICAwLCAxMjg4ODEsIDExOTYwNCwgMTI3NTIzLCAxMjAxOTAsIDE5NDc3MywgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDAsIDc3MTUsIAotICAgIDM4ODEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIDY4NjUxLCAwLCA5ODM4OTUsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIAotICAgIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCAxMjAxODQsIDg1MTksIAotICAgIDk4MzI0MSwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMCwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIAotICAgIDQ1OTcsIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMCwgODQwNywgMCwgMTA4MDUsIDg1MTgsIDEwNzc5LCAKLSAgICAxMjAxODgsIDcxMzAzLCA5ODM5MzMsIDEyMzY3LCA0MjE3MCwgMCwgOTI1NTcsIDYyOSwgMTkyNCwgMCwgMTIwMzcsIAotICAgIDc0MzY2LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAxMDY0OSwgCi0gICAgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCA5MTc4ODEsIDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgOTgzNzA1LCA2NjY1OSwgOTI2MDcsIDAsIDY2Njg0LCAwLCAzNDM0LCA0OTU0LCAxOTA0LCAwLCA1MjY2LCAxMjY5ODAsIAotICAgIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxOTQ5MjYsIDQ2MSwgCi0gICAgOTgwMywgMCwgNDUwNCwgMTUwNSwgMCwgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDAsIDY2NDYxLCAKLSAgICA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDAsIDQxMzI3LCAwLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCAKLSAgICA4OTQ4LCA0MTMyNSwgMCwgNzIxLCAxMDE4MiwgOTEwOCwgNzEzMTEsIDAsIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgCi0gICAgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgOTQxMDQsIDc4NTcxLCAwLCA3MTMyOCwgMTk0NTYyLCA0MTU3NiwgCi0gICAgNDIyMTUsIDc4NTcwLCAxMTkyMDcsIDAsIDg1NzgsIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCAKLSAgICA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgMTE3MjMsIDAsIDc0MTIwLCAwLCA2NTA3NiwgOTM4LCA0MzQxNCwgCi0gICAgNzM4NTQsIDExNzM3LCA5NzIxLCAwLCAwLCAwLCAxMTc0MiwgMjQxOSwgMCwgMTE0OTMsIDEyMzM0LCAxOTQ5MTMsIDQxNTMsIAotICAgIDEyMzAyLCAxMDc5MywgNTI1MCwgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIAotICAgIDY1ODA2LCA0Mzk5NywgMCwgNDIwMDIsIDEyNDA0LCA5ODM1NTMsIDAsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgCi0gICAgNDk4MywgMTIwNTA3LCA4NjEsIDAsIDAsIDAsIDAsIDQzNzU3LCA0MzM3MCwgMCwgMCwgMTE5NTYsIDAsIDAsIDAsIDk2MTYsIAotICAgIDY2MzEsIDAsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIDY2MTg1LCAwLCA1OTkyLCAKLSAgICA3NjE2LCAxOTUwNDQsIDAsIDEyNTc3LCAwLCA5ODM4ODQsIDg1MywgNDI2OTMsIDE5NTAxNCwgMCwgOTgzNjQ3LCA1MDE2LCAKLSAgICA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgCi0gICAgNjUwNjAsIDEyMDc5NywgOTkwMCwgNzc1MCwgMCwgMTk0OTE5LCAwLCAxMjc4MzAsIDAsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIAotICAgIDEyODE1MSwgMTIxNzcsIDAsIDAsIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgCi0gICAgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNzg1OTQsIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgCi0gICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDAsIDEzMDUzLCAwLCAKLSAgICAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCA3ODU4MywgMCwgMCwgMCwgMTk0OTE1LCAKLSAgICA3MjY3LCAwLCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAwLCAxMjcwNiwgNzc4NDAsIDE4OTMsIDcyNjYsIDYzOTE1LCAKLSAgICA3MjY0LCA3MjY1LCAwLCAxMzYzLCAwLCA2Mzk5NywgNjM5MTAsIDYzOTk2LCAzMDc3LCAwLCAwLCAxNTEyLCA2OTkyOSwgCi0gICAgMTI1ODksIDQxNDc5LCAxMjgzMTMsIDAsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTIwNzI3LCAwLCA0MTQ4MSwgNDMzMzUsIAotICAgIDc4MzIsIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCAxMjg4NDEsIDMwNzksIDExMzQwLCA0MjQwOCwgCi0gICAgNDI0NDcsIDEyNzE0MCwgMTIwMDIwLCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDAsIDEyMzg5LCAwLCA5MjM2NiwgCi0gICAgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNjM5OTIsIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgCi0gICAgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgMCwgNDkzOSwgMTIzODQsIDAsIDAsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAKLSAgICAxOTQ2ODgsIDk4MzE5MCwgMCwgMTI2NDksIDAsIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIDEyMDc3NSwgNDM2NDMsIAotICAgIDE5NDY4OSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgMTE5ODEzLCA3NzQsIDExOTgyOSwgMCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgCi0gICAgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDExOTYwMCwgMCwgMCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAKLSAgICAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCAKLSAgICA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAxMjIxOSwgMCwgMTI3NTI4LCA0MjgxMCwgMTA0OTIsIDAsIAotICAgIDk4MzY2MSwgMCwgNDMxMTksIDAsIDEyMDc1MywgMTI0MDMsIDI1MDAsIDE5NTAxMywgMCwgNDg5OSwgMTI3MjksIDAsIDAsIAotICAgIDc0MTEzLCAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMCwgMTk1MDEyLCAxMjg1OSwgNzAwODcsIAotICAgIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCAwLCA5ODM4MzksIDEyNjQ1LCA1MTQ2LCAxMTMyMCwgCi0gICAgNjg0MTAsIDY3NDgsIDY1MDQwLCAwLCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCA1MTQ3LCAwLCAwLCAKLSAgICA3NDUyNCwgMCwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIAotICAgIDAsIDc3ODY4LCA0MjA2LCAwLCAwLCAwLCAxMjgyOTgsIDAsIDEwMTM4LCAwLCAwLCA4ODk3LCAxMjAyMzQsIDAsIDgzNTcsIAotICAgIDQxMjQsIDc3ODYyLCA2NTgzNiwgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAwLCAxMTIzLCA5NjMsIDQxNTUzLCAxMDEyMCwgCi0gICAgMTI0MDUsIDEyMDE1MCwgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgMCwgNDQwMiwgCi0gICAgOTk3MCwgMTI0MDIsIDk4MzEzNiwgNDIzOTIsIDEzMDUsIDEyNDA4LCAwLCA0NDAwNywgMCwgMCwgNDE0NjQsIDEyNDExLCAKLSAgICAxMjk2OSwgMTIwODI0LCA0MTQ2NSwgOTgzNTY1LCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCi0gICAgMTE5MTYzLCAwLCA5MDkzLCAwLCA5MTQ3LCAxMjg3ODcsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgODI5NiwgCi0gICAgNjc1MCwgMTk1MDE4LCAwLCA5NTk0LCAwLCAwLCA0MzUyNywgMCwgNzI3LCAxOTQ3MDMsIDE5NTAyMywgNTgwNSwgMCwgCi0gICAgNjcyNiwgMCwgNDIxNzYsIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgMCwgMTIzNzIsIDEyMDY0MiwgCi0gICAgMTIwMzA3LCAwLCA5MjM0MywgMCwgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAwLCA2NDQ3OCwgCi0gICAgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgOTI0NzMsIDAsIDk4MzMxMywgNzQ4MzcsIDEyMDE1NSwgCi0gICAgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIDYzOTY1LCAwLCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAzNjYwLCAKLSAgICA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAxMzU3LCA2NDg1MSwgNjU3NDMsIDAsIDg3NzQsIDAsIDEyNzA4NiwgOTk0MSwgCi0gICAgMTIwMTcyLCAwLCAxOTMzLCA2OTY1NSwgOTU2NCwgMCwgOTI0MzUsIDczODY2LCAwLCAwLCAyNDg3LCA2NzYxNCwgMzEyMSwgCi0gICAgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCAxMjA1OTgsIDEyNzQ3NSwgMCwgNjgyMDAsIAotICAgIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCA1MTAsIAotICAgIDY0NjYzLCAwLCAwLCA0NTYxLCAyMTAxLCAxMzk4LCAwLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCA5MjY4NCwgMTE0MDYsIAotICAgIDgxNjcsIDEyMTI3LCAwLCA4NDAsIDAsIDEyNjUxOCwgNzEwMSwgNjk2NywgMCwgMTk0ODk4LCA5Nzk2LCAwLCAzMzMsIAotICAgIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCA5ODM1OTUsIDEyNDA2LCAwLCAxOTkzMSwgMTE5MDg5LCA2Njc4LCA3NzY5LCAwLCAKLSAgICAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgMCwgCi0gICAgNDIyMDIsIDEyNzU0LCAxOTUwMjIsIDAsIDAsIDk0MDk3LCA2NzU5NCwgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCAKLSAgICA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTI5ODUsIDQ1MzMsIDE5NTAyMSwgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCAKLSAgICAxMjA3MDQsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgMCwgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAwLCAwLCAxMjA4MDIsIAotICAgIDY0NDksIDk0OTQsIDEyMDMxMywgMCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgMCwgMCwgMzQzNiwgCi0gICAgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCAwLCAwLCA2NzU5OCwgMCwgMCwgMCwgNjU1OTEsIAotICAgIDQxNTgxLCA2NTkxNiwgMTQ1MywgMCwgMCwgMCwgODUwMCwgNDIyMjIsIDEyMDE0MiwgNzM3NDMsIDEyMDQwMCwgNDMxNywgCi0gICAgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMCwgNjc2MDYsIDExOTA4MywgMCwgNDIyMTcsIDEzMTAyLCAwLCA2NjAwMywgCi0gICAgNjY3MiwgMCwgMCwgMCwgOTgzNzQ3LCA2Mzg0MSwgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgCi0gICAgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAxMTI4MSwgMCwgMzgwNywgMTQ2OSwgNjY2NDAsIAotICAgIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIDkwNCwgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgCi0gICAgNDEzNCwgMCwgNzQ4NDcsIDY2NTc2LCAxMjc5MTYsIDAsIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAKLSAgICAxMjcyOTEsIDEyNzI5MiwgMTE5MTksIDY0OTYyLCAxMjcyODcsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgCi0gICAgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCAKLSAgICA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIDExOTU4NSwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgNjY0OTgsIAotICAgIDk4MjEsIDY0MzA0LCAwLCA1MTUyLCAxMTA0OCwgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgMTIwMDYyLCAKLSAgICA5MjY2OSwgNzEzMzIsIDEyNzA1MiwgNDI1ODcsIDQyMjE0LCA0MTM5NCwgMCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCAKLSAgICA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgMTIwMTMxLCA2ODQyMywgMCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgCi0gICAgMTk0OTI0LCA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgNDI3MjAsIAotICAgIDEyMTQwLCA5NTcyLCAwLCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAxMjY0OTAsIDE5NDg4NSwgNDMxNDQsIDQxMjMsIAotICAgIDg0OTQsIDQzMTQ2LCA5OTc3LCAwLCAwLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIAotICAgIDQxMjYsIDAsIDk1MjEsIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMCwgMCwgMTk0ODY5LCA2NDUxNCwgCi0gICAgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIDY3OSwgNjQwMTMsIDAsIDU4NTAsIDc1OCwgNzUzNiwgMCwgOTIyMzQsIDQxNDQxLCAKLSAgICAxMDY5MywgNjQwMDYsIDk4MzU2NywgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMCwgMTE5MDUwLCAwLCAKLSAgICA5ODMwNjksIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDk4MzA5NCwgMTA3NzQsIDEyODAyMCwgCi0gICAgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDAsIDE4NTIsIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCAwLCAwLCAwLCAKLSAgICAxOTQ4OTksIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIDM0OTYsIDAsIDAsIDAsIDkxMDIsIDYyNywgMTI3Nzk1LCAKLSAgICA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAxMzMwOSwgMTE1NzAsIDEyNzgxMSwgMTk5NjAsIDExNjk2LCAwLCAKLSAgICAxMDE4LCAxMTg5NzAsIDE5NDkwOSwgMTk0ODk3LCAxNjgyLCAxOTQ4OTYsIDE5NDkxMSwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgCi0gICAgMCwgMCwgNzM4MTQsIDExNDEyLCA2NzY4LCAxMDcyOCwgMTk0ODMwLCA3MTMxNiwgMTE4ODYzLCA0MzMxMSwgNjQ5NjYsIAotICAgIDExNTc3LCAwLCA0MzA0MCwgMTgzMywgMTE1NzYsIDAsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIAotICAgIDE5NDg0OCwgNzUzNSwgODA4NSwgNDI1MjUsIDEyMDM4NywgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIAotICAgIDEyMDQ4OSwgMTk0NzExLCA2NDQ4MywgNjU2OTMsIDAsIDAsIDAsIDY5Njk1LCA0MjI0MCwgMCwgMTI2NjUxLCA0Mjg2NCwgCi0gICAgMTI2NDk4LCA2NDY2NywgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgMCwgCi0gICAgNjYxOTcsIDAsIDEwOTg2LCA2NDY4MywgOTgzNzg1LCAwLCAzNDU1LCAwLCAwLCA5ODc5LCAwLCAwLCA0MTU4LCAxMjgwNTAsIAotICAgIDY4MTY2LCAwLCAwLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDAsIDUxNDIsIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgCi0gICAgOTI0MDQsIDc0MzczLCAwLCA1NTIxNywgMCwgNjM4NzAsIDQzMTYzLCAwLCAwLCA5MjM5MCwgNDI4NjcsIDE4MzQsIDAsIAotICAgIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCAxMTkwNDAsIDg2NjIsIDAsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgCi0gICAgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDkyMjMzLCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCAKLSAgICA3NDQ3NCwgMTIwMzI3LCA3ODYyMCwgODUzMSwgMTI0OTksIDYyODAsIDEyMzI0LCAxMTg4NTQsIDY1MjM4LCA2ODM3NCwgCi0gICAgNDgzMiwgNjU1NzMsIDAsIDYyNzksIDEyNTA4LCAxMjkwNCwgMTI1MDIsIDkxNjEsIDAsIDE2MjAsIDY0NDM2LCAzNjAxLCAKLSAgICAxOTUwOTQsIDEyODA3MywgOTgzNTYyLCA2MDksIDExNTU1LCA5ODMwOTksIDEyNDk2LCAxMjc4MzksIDc0MTgxLCA0MzQzLCAKLSAgICAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAwLCA0MzU2NSwgCi0gICAgNzEzMDYsIDEyNjQ5MywgMTI2OTYsIDEyODI1NiwgMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgCi0gICAgNDI4MTgsIDEyNjYzMiwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCA5MjQ5MSwgMCwgMTI2NTEsIDAsIAotICAgIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDAsIAotICAgIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAwLCA2OTc2MCwgCi0gICAgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCA5MDgwLCAxMjcwMDAsIAotICAgIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCAKLSAgICAwLCAwLCAwLCAwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDAsIDQzMDQ1LCAwLCAKLSAgICAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAwLCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIAotICAgIDc5NSwgMCwgMCwgMTI0NjIsIDEwOTMwLCAxMDgzMSwgMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDk4MzYwMiwgMTIwODExLCAKLSAgICAwLCAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAKLSAgICAxNzY2LCAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIDY0NTk1LCAxMjcyOTQsIAotICAgIDAsIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIDAsIDAsIDExOTA2MCwgCi0gICAgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDg2NCwgMTEzMCwgMCwgMCwgNDIwMTYsIDExODIzLCAKLSAgICA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA3NDgxMiwgNzg1ODQsIAotICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIDEyMDgwMywgCi0gICAgOTgzODQ4LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgMTI3MTgyLCAwLCAKLSAgICA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgMTE1OTQsIDEyODI0NywgCi0gICAgMCwgMTE4OTkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAwLCA1NTg3LCA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIAotICAgIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIDAsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIAotICAgIDAsIDg2NDIsIDAsIDQyNzY2LCA5ODM4NjYsIDIyMTAsIDk5ODMsIDAsIDk0MDA5LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgCi0gICAgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAwLCA3NjE3LCAKLSAgICAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDAsIDQxNTE3LCAKLSAgICA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIAotICAgIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAKLSAgICAwLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIAotICAgIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAzMTk1LCA1NTUwLCA5ODM1NTQsIAotICAgIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAyODc3LCAwLCAwLCAxNjc1LCAKLSAgICA2OTg0MCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgOTgzNjExLCAwLCAwLCAwLCA0MzI0NCwgCi0gICAgMCwgMCwgOTgzOTE2LCAxMTk1NjEsIDk4MzA3OCwgMCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIAotICAgIDAsIDAsIDI3MCwgMCwgMTA3MTQsIDAsIDAsIDAsIDAsIDAsIDY1MzcyLCAwLCA3NDAzOCwgMTE5NTU4LCA2MjczLCA2NjY3OSwgCi0gICAgMzY0LCA5NTk1LCAxOTQ5MDgsIDAsIDAsIDcwNywgMCwgMCwgOTI4MiwgNjY0ODksIDIyNCwgMCwgNjg2NzAsIDkzMzIsIAotICAgIDQ5NjYsIDY4Njc3LCAwLCA2ODY0NCwgMCwgMzg0MSwgNjg2MzQsIDAsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAwLCAKLSAgICAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCA2ODYyNywgOTgzNzE4LCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDAsIAotICAgIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCAKLSAgICA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDk4MzIzNiwgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCAKLSAgICA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgCi0gICAgMCwgMTI3MDAyLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCA5ODM4MTQsIDYzNzQ1LCAKLSAgICAxNzQ4LCA2Mzc3MCwgMCwgMCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgMCwgNjM3NjQsIDYzNzg3LCA5MDY3LCAKLSAgICA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIDAsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgCi0gICAgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDAsIDAsIDkyNTM1LCAwLCAwLCAwLCA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCAKLSAgICA2NDU3NCwgNjUwMTIsIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAKLSAgICAxMjQ5OCwgMTA5ODcsIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDAsIDE5NDg0MiwgOTgzNTg4LCA0OTMsIDAsIAotICAgIDQzMTk3LCAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAKLSAgICAxMjQ5MCwgNjQzMTUsIDAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgMCwgNjQ5MTEsIAotICAgIDkyNjE1LCAyMDk2LCA2NTEyMCwgMCwgNzgyMTksIDk4MzA4MSwgODM3OCwgMTE2MzIsIDEyNzA0MSwgNjYyMTMsIDYzODY0LCAKKyAgICA0MzU2NywgNzQwNTYsIDEyMDI2NiwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCisgICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5ODM0LCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCAKKyAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCAKKyAgICA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCAKKyAgICA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgCisgICAgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIAorICAgIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIAorICAgIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAwLCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgCisgICAgNzM3NzMsIDcwMTY5LCA1MDQwLCAxMjc5NjksIDAsIDY3MDk0LCA3ODQyMCwgMCwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgMCwgCisgICAgNTAzOCwgMCwgOTgzODYyLCAxMzE4NCwgNDM5NjAsIDEyMDkzMSwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAorICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDcwMTgyLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIAorICAgIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIDczODEzLCA3MTEsIAorICAgIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIAorICAgIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNDM5NTcsIAorICAgIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgNzA3ODcsIDg0NDksIDAsIDUwMDgsIAorICAgIDk4MzU3MiwgMjExOCwgMTI2NTA4LCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIAorICAgIDIxMzMsIDExMTksIDEyMTI1MCwgMjExNCwgMjExNiwgMjQ1NSwgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAKKyAgICAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgMTk1MDQ5LCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIAorICAgIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAKKyAgICAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIAorICAgIDU1MTMsIDUxMDksIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAKKyAgICA3MTI1MSwgOTIyMzcsIDc0ODA3LCA5ODMwNjIsIDUwNDgsIDUwNDcsIDE5NDgzNywgOTgzMzgwLCA3NDIwMSwgOTIzMTMsIAorICAgIDE5NDgwMiwgNzQ0OTcsIDgyOTgyLCA4MDg5LCA2OTI5LCA2MzksIDgyOTgxLCA2ODE3OSwgNjQ0NDIsIDcwMTgwLCA4Mjk4NCwgCisgICAgNDU5OSwgNDE0MDIsIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIAorICAgIDY5NTEsIDk0MDE3LCAxMjkxOTcsIDM1MzAsIDk3NTAsIDEyODMxNywgMTIwOTkxLCA2NjU2LCA0MjYxOCwgNzAxNzUsIAorICAgIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgCisgICAgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIAorICAgIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIAorICAgIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg0NjcsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDEyMTMyNiwgCisgICAgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMTk0ODU3LCAKKyAgICAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIAorICAgIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgOTI3MzgsIDY2MjAwLCAwLCAwLCAxMjUwMjYsIDc0Mjk4LCAxMjg4NzksIDk4MzQ3NiwgCisgICAgODcxMSwgNjE4MywgODM0NDgsIDk4Mzk1MiwgNzI0MDIsIDEyMDQ0OCwgNzYyMywgMTE4OTI1LCA2NjM3NiwgOTIzNSwgCisgICAgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgCisgICAgMCwgMTI2NTk3LCAxMjA0MzQsIDE5NDg1MCwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgCisgICAgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAorICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgOTgzMzUwLCAwLCAzMzkxLCA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgCisgICAgMTI5MTA2LCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDcwMTUyLCAxMzAxNCwgMTMwMTMsIDEyMTE5OCwgCisgICAgNjY3MywgMCwgMCwgMTIxMzI0LCAxMjQzOCwgMCwgOTgzMzQ0LCA4MzEwNiwgNzExMjgsIDEyMDA2MiwgOTA1MywgMTMwMTUsIAorICAgIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA3NDk0OSwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgNzQ4NjEsIDQyMjEyLCAKKyAgICAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgNjczNDMsIDEyMTQzNywgMTI5MDg2LCA0Mzg3NiwgOTI5NDEsIAorICAgIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTI4NTk1LCA0Mzk0OSwgMTIwMDQ4LCA3ODA5OSwgMTI3MDg1LCAwLCAKKyAgICAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCA0Mzk1MiwgNDI1MzMsIAorICAgIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCA1NzgsIDM2NTMsIAorICAgIDEyODk0NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIAorICAgIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgMTE5MTY3LCAKKyAgICAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAKKyAgICAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgCisgICAgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI2NTY0LCA3MTMwMiwgNDQwOCwgNDEyMiwgCisgICAgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIDY0ODU1LCAKKyAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIAorICAgIDEyODYzOSwgMCwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCAKKyAgICA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIAorICAgIDExODg3MywgMTI3MSwgOTgzNjQwLCAxMjkxMTIsIDY2MDI0LCA0MTQ4MiwgMzg2NCwgOTIwNCwgMCwgMzg3OSwgMCwgCisgICAgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIAorICAgIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgCisgICAgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCAKKyAgICA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCAKKyAgICA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgCisgICAgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCAKKyAgICA2NDYyNCwgMCwgMCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIAorICAgIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAxMDU1NCwgMTE5MDA4LCAxMTkxMjEsIDY4MzIsIDUwOTgsIDkxNzc2OCwgCisgICAgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIDY3Mjk2LCA5Mjg5NiwgMzY1MSwgMCwgNjcyOTQsIAorICAgIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAKKyAgICAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCAKKyAgICAwLCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIAorICAgIDE5NDkyMywgOTE1NCwgOTExOCwgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIAorICAgIDg1OTksIDEyNTExOCwgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgCisgICAgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTk1MDM4LCAKKyAgICA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIAorICAgIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCAKKyAgICA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIDY5ODExLCAwLCA3MTMzOSwgMTAxNTcsIDE5NDYxMiwgNDMwMzQsIDExNDM4LCAKKyAgICA2NDY3NCwgMCwgNzAxNTgsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgCisgICAgNTEwNSwgNjUyNjYsIDY5NzIwLCA2NDc2LCA1MTA0LCA5ODM3NDksIDMwNCwgMzE3NiwgNzg4NzEsIDcwMTQ5LCA5MzIsIAorICAgIDExMzY4MywgNjU2NywgMjM4LCA2OTY1NiwgNzg0MzIsIDE5NDU5NSwgMTk5MDUsIDQzODUwLCAxOTUwMTUsIDc4ODcwLCAKKyAgICA0MTA0NCwgNjc2NDAsIDY3MzAyLCA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAKKyAgICA5MzAzOSwgODgwMywgMzA5LCA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCA3MDE3MSwgMTI1NjgsIDEyNzkxNywgCisgICAgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgMCwgCisgICAgNjY0NjYsIDEyNDk4NiwgMTI3Nzg0LCAwLCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKKyAgICAwLCA0MTc1NCwgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDYwMCwgNjg0NjIsIDgyMzIsIDExODgxNywgMTIxMDU2LCAzMjIyLCAKKyAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDk4MzA0NywgOTMwNjcsIDEwODM0LCA5ODMxMjcsIDAsIDY1NzMyLCA5NDA5NSwgCisgICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEyMDczNCwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCisgICAgMTIwNzcsIDc0NDMzLCA2NDU4NiwgOTE3NjIwLCA0MjM5NiwgNTUyNTUsIDM0NzUsIDY3MjYwLCAyNDc5LCA2NzMwNiwgCisgICAgMzYzMiwgMTIwNzI4LCAxMDY5OCwgODM3NiwgMzY0OCwgNjcyNjMsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIAorICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDEyNzE5MCwgCisgICAgNDIzMjEsIDcyODQsIDkyODgwLCAxMTg5ODcsIDE5NDk1MCwgMTk0OTQ5LCA3NDExNSwgMTk0OTUxLCAxMjY2NDksIAorICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDk4Mzc4NCwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCisgICAgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKKyAgICAwLCA2NzgzNSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgOTI1LCAKKyAgICAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgOTIyMTgsIAorICAgIDkxODYsIDIwNjcsIDQwMTYsIDk4MzgwMywgMCwgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDkyOTg1LCA2OTg4MCwgNTE4NCwgCisgICAgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgCisgICAgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKKyAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIAorICAgIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgNzM5MzMsIDY3NjI2LCAKKyAgICA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAKKyAgICAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIDQxMTE3LCAwLCA5MjU4MCwgCisgICAgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMCwgNjU1ODUsIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCAKKyAgICA5MTc4ODMsIDEzMTgsIDY0NzMxLCA3ODAwNCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIDk4Mzg1OCwgMTI3NTYsIAorICAgIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCAxMTI0NiwgNDE4ODMsIDczOTEyLCA5Nzk5LCA5MTc4OTMsIAorICAgIDQxODg2LCAyNDgwLCAxMjc5MDYsIDIwNjIsIDY3MzI2LCA2NDk0LCA1NTM3LCA3ODY1NiwgMCwgMTk0NTg3LCAxMjQ5NjksIAorICAgIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIAorICAgIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIAorICAgIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA4MzAwMywgNDI2NSwgNjY0MiwgMzk3NywgCisgICAgNzQxODYsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjUwOTYsIDQ1ODIsIDAsIDcxNDI2LCA0MTc3NywgMTI5MjYsIAorICAgIDk4MzM3OSwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgCisgICAgMTE5MDE0LCA2NzcyMCwgNDIzODksIDQxMzc0LCAyMjg2LCA5MTc2MDQsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIAorICAgIDQwMCwgMTI1OTcsIDEyMDU4NiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIAorICAgIDAsIDcxMzAxLCAxMjcyOTIsIDM0NzMsIDc3MTgsIDExMzc1NSwgNjg4MTQsIDAsIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIAorICAgIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDExODkwMiwgCisgICAgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgCisgICAgMTIwNjgyLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgNjY0MjMsIDc5MDQsIDAsIDk1MywgMTI5MTcsIAorICAgIDExOTU2MCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAorICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDE5NDYyNCwgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCAKKyAgICA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIAorICAgIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIDk4Mzc4NSwgNjAxNywgNjUzMTEsIDc0OTM1LCAKKyAgICAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDE5NDg4MiwgMTIwNTQ0LCAwLCAxMjc5NTAsIAorICAgIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIAorICAgIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgCisgICAgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAKKyAgICA5ODMzOTYsIDcxODYsIDAsIDEyMDU1NSwgMCwgNDQ1LCAxMjA1NjYsIDY2ODQ5LCAxMjUxNDEsIDAsIDgzMzAsIDAsIDAsIAorICAgIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMjUwNjcsIDE1NjAsIDQzOTU4LCAKKyAgICA5MjE2NywgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgMCwgMTA4MSwgCisgICAgNzQzNiwgMTExNDcsIDcyNTIsIDcwMDkzLCA1OTk2LCA2OTkyMSwgNDkwMywgNjgxNDIsIDQxMzg2LCA1MTYyLCAxMTkxODksIAorICAgIDEzMzAsIDEyODYxMywgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgCisgICAgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIDgzMjU2LCAKKyAgICAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMCwgMTI2OTg0LCA2ODAwMSwgOTMzNCwgCisgICAgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDQzNDk0LCA0ODg0LCA2NjU5NywgNjk3MzIsIDAsIAorICAgIDEyMTAxMCwgNjMxMywgNjU1MTMsIDY5ODU3LCAwLCAwLCAwLCAyMzQ1LCA0MzY5NywgNDYzLCAwLCAxMjc4OTAsIDY4MTc4LCAKKyAgICAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyODcxNywgOTgzMzg5LCAwLCA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCAKKyAgICA5ODMyMjgsIDY4NTI0LCA5ODMzODYsIDEzMjQ4LCAxMjUwMjcsIDk4Mzg0MywgNDM5NTYsIDEyODQxNSwgOTgzMTUzLCAKKyAgICAxMjEwMDksIDU2NjMsIDcxMTIwLCAxMjg0NzIsIDEyODk1OCwgMCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIAorICAgIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIAorICAgIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIAorICAgIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgNzE4NzksIDUzOSwgMCwgMTIwMzAyLCA3MDEyMCwgMzg1MywgCisgICAgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIAorICAgIDE5NDk2OSwgMjQ3OCwgMTIwMjQ4LCA0MTYyLCAwLCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIAorICAgIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIAorICAgIDY5NjcyLCA4MjEzLCA0MzgyNCwgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDE5NDk2NywgNzg4ODUsIDExOTI0MywgCisgICAgNjgyMzUsIDEyMDU4MiwgNzg1NDcsIDExMzcwOSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTE5MDQ0LCAwLCA3Mzc5MSwgMCwgCisgICAgODMwMzAsIDAsIDEyMTQ4MiwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIAorICAgIDc0OTAzLCAxMjA5MjcsIDEyMjEwLCA3MjIxLCA0MjE0NywgNzQ4NjgsIDc0NTUwLCA3MTIxNSwgNjQ3NDcsIDExODg0MSwgCisgICAgMTI4MDg2LCAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCAKKyAgICA0MTk3MywgMzU5MSwgNDE5NjksIDgzMDA4LCAyNDUzLCAxMTg4OTksIDkyNjY2LCA2NDcwNSwgNzEwNjgsIDAsIDEwMzQ5LCAKKyAgICAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMTI5MTc1LCA4MzE2LCAxMjkxNzQsIDAsIDk0MDYwLCA2ODcsIAorICAgIDkzMDU1LCAxMjkwNzQsIDAsIDE4NDAsIDEyNzgwOSwgNjg2NzEsIDExMTIxLCA0ODgzLCAyODUsIDQ3MjMsIDExMTc1LCAKKyAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCA3NDY0MCwgCisgICAgOTc0MywgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIAorICAgIDQzNDM3LCAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTUwMTMsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgCisgICAgOTEyNSwgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMjQ5MjksIAorICAgIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgCisgICAgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCAKKyAgICA1OCwgMTIwMDg0LCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIAorICAgIDE5NDU3NSwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyODc5NywgOTI5NzUsIDQyNDIsIDQyNjQsIAorICAgIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCA5ODMxOTksIAorICAgIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgOTgzMjQwLCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgNDI0MzAsIAorICAgIDAsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgNjY2NjcsIDExOTM1MSwgCisgICAgMTk0OTgyLCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEyODkyOCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMTI1MDQwLCAKKyAgICAwLCAxMjM4NSwgMCwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIAorICAgIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIDExNjYzLCAxNjY2LCAKKyAgICA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMTI3ODk3LCA2Mzg5NiwgMTIwNjEsIAorICAgIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgOTgzODM0LCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgCisgICAgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDc0NjI5LCAxMjM3OSwgMTI3MTA3LCA5MjkzMCwgCisgICAgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDcwMDg5LCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDY2NDEzLCAKKyAgICA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgCisgICAgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIAorICAgIDM2NTcsIDExOTYxMSwgNjUyMDIsIDYwMDAsIDExMzc4NiwgMTI0MjYsIDEyMTA1OCwgMTE5OTM1LCA0MTc0MCwgMTI0MjgsIAorICAgIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCA5ODM5NDgsIDc1NjIsIDEyNTEyOSwgNTE3MCwgCisgICAgOTgzOTE1LCA0MTc1NSwgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgCisgICAgNjE2MiwgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgCisgICAgOTE3ODI4LCA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDkxNzc5NywgCisgICAgNzA4MDcsIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgCisgICAgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTI5MDg1LCA2Mzg2NywgCisgICAgNDEzMywgMTEzNzEsIDIxMCwgNDYwMCwgOTgzODk3LCA3NDU2MCwgNDEzNywgODA4MiwgNzg1MDYsIDExOTA2MiwgNzg1MDQsIAorICAgIDY3MDQsIDQ1OTEsIDEyODAyOSwgNDM4NzMsIDEyMDc1MywgOTY4MCwgMTI5MzcsIDEyMDYyMywgNTYxLCAxMjE1OSwgMTk1LCAKKyAgICA2ODMyMSwgNDE1MDEsIDE5NDU4MSwgNDIwMzEsIDU3MTksIDcxNzIsIDQyNjg3LCA4MzY4LCAxMjgzMDYsIDQxNDk5LCAKKyAgICA5MzA2OCwgNzEwNDcsIDQyMjQyLCA0MTQ5OCwgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgNjcxODIsIAorICAgIDI5MjQsIDY3MTgzLCAxMjA1MTAsIDAsIDk4Mzk3MiwgOTI3NjYsIDczOTQxLCA2NzE4NiwgNDIzMzAsIDY3MTg3LCAzOTY5LCAKKyAgICAxMjE0MDUsIDAsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAxMjEzNDksIDAsIAorICAgIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIAorICAgIDkxNzc4MSwgMTIwMjIyLCA4MzEyOSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCA1OTk5LCA3NTAxMywgCisgICAgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIDExMzc1NCwgCisgICAgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgMCwgMTI0MzYsIAorICAgIDEyMDA4NywgNDIwMjEsIDAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDEyNzk3MiwgCisgICAgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDEyODc0MCwgMjI5NiwgCisgICAgMTI4OTMyLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgMTExNzgsIAorICAgIDkxNzU4NCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDY4Mjk1LCAxMjA3NTYsIDE5NDkyMiwgNjcyODUsIDU2NjQsIDM5NzIsIAorICAgIDEyMDg5MSwgMTI4NTgzLCAxMjk0MDgsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAorICAgIDExMjEwLCAxMjQxOCwgODU4NiwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCA2ODA4MSwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgCisgICAgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIAorICAgIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDkxNzU5NCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDExOTkzMSwgCisgICAgMTE3MjQsIDEyNzc4NywgMCwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIAorICAgIDExNDAwLCA0Mzk0MywgMTk0Nzk5LCA2NjgzMywgMTI4MjM5LCA5ODM3MDcsIDkyNTU3LCA5Mzk3NiwgMTI3NTIzLCAKKyAgICAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCA5ODM4NzMsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgCisgICAgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgCisgICAgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCA4NTE5LCAxMjEyMjYsIDMwMTQsIAorICAgIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIAorICAgIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAxMDgwNSwgODUxOCwgMTA3NzksIAorICAgIDEyMDE4OCwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAwLCA2NzI5MCwgNjI5LCAxOTI0LCAxMjcwOTgsIDEyMDM3LCAKKyAgICA2NzE1OCwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAorICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgMTIxMTA5LCAxMjczMDAsIDY1MDc1LCAwLCAxMTAwNywgCisgICAgNzA4NTEsIDY2NjU5LCA5MjYwNywgOTE3OTMzLCA2NjY4NCwgMTI4MDYzLCAzNDM0LCA0OTU0LCAxOTA0LCA5MjY3OSwgCisgICAgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgCisgICAgMTk0OTI2LCA0NjEsIDk4MDMsIDQyMjgyLCA0NTA0LCAxNTA1LCAxMjc4OTMsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIAorICAgIDAsIDU1MjM2LCA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgODcyMiwgMTIwODA1LCA0MTMyNywgOTgzNzMyLCAKKyAgICA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgNzQ5MzAsIDcyMSwgMTAxODIsIDkxMDgsIAorICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCA3NDk2MywgMTIxMDE0LCA1OTk4LCAwLCA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAKKyAgICA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTI4OTU1LCA0MTU3NiwgNDIyMTUsIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgCisgICAgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAKKyAgICAxMTcyMywgMCwgNzQxMjAsIDEyNjY0MiwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgNjcxNzksIAorICAgIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgCisgICAgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgCisgICAgNDIwMDIsIDEyNDA0LCA2ODA5MiwgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCAKKyAgICA4NjEsIDY3Njk5LCA3NDg4MCwgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDAsIDExOTU2LCAxMjQ5NjcsIAorICAgIDEyMTI2MywgNzA4MTUsIDk2MTYsIDY2MzEsIDkyMzM4LCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIAorICAgIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgOTMwMTcsIDEyODI4OSwgODUzLCAKKyAgICA0MjY5MywgMTk0NjQ3LCAxMTkwMjcsIDk4MzI4NCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAKKyAgICAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCA2Njg3NSwgOTkwMCwgNzc1MCwgOTE3OTQ2LCAKKyAgICAxMjc4OTYsIDc0NjE5LCAxMTkyNjUsIDk4MzU4NywgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgCisgICAgMTE5ODQzLCA5ODMyNjAsIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgCisgICAgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNjY4NTIsIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgCisgICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAxMTkwNDAsIDEzMDU0LCAxMjM5NCwgMCwgMCwgMTk0OTU0LCAKKyAgICAxMzA1MywgMTE4OTc0LCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCA3ODU4MywgCisgICAgOTI0MzEsIDEyMTAzNywgMTI2NjQ0LCAxOTQ5MTUsIDcyNjcsIDEyNzQ3OSwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgCisgICAgMTI4Nzg4LCAxMjcwNiwgNzEwNjMsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCA5ODM1ODAsIAorICAgIDQyOTIzLCA2MzkxMCwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAKKyAgICA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMjA3MjcsIDk4MzkwOSwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgCisgICAgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgODMxNzcsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDc0OTMyLCAKKyAgICA3NDA0NCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCA4MzQyOCwgMTIzODksIDEyMTA3OSwgOTIzNjYsIDQxOTk2LCAKKyAgICAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCAKKyAgICA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyMTM4MywgNDkzOSwgMTIzODQsIDAsIDEyNzc3OCwgNDE2ODYsIDYzOTA1LCAxMTk2MDEsIAorICAgIDcwMjg1LCA2NzM5OCwgMTI4ODIwLCAxMjY0OSwgMTIwMDIyLCAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIAorICAgIDQzNjQzLCAxMjE0NDUsIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAxMTk4MjksIDc3ODQwLCAxMTk4MTUsIAorICAgIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDk4MzEwNSwgNzgzNzcsIDk4MzIzNywgOTE3NjI4LCAKKyAgICA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIDk2ODcsIDQxNjgxLCAKKyAgICA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIDAsIDc1MzQsIAorICAgIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjE1MTAsIDEyMTE0OCwgMTIxNTA5LCA0MzExOSwgMCwgCisgICAgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgODMyNDYsIDQ4OTksIDEyNzI5LCA5ODMzOTksIDE5NDYxOSwgNzQxMTMsIAorICAgIDIzNDMsIDQxMDMsIDE5OTQ2LCA3NDExMiwgNzc4NTEsIDEzMTEyLCAxMjkwNDYsIDc0ODM0LCAxMjg1OSwgNzAwODcsIAorICAgIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCA0MzY0MSwgMTI4MTgzLCAxMjY0NSwgNTE0NiwgCisgICAgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMTk0Nzg2LCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCAKKyAgICA1MTQ3LCAxMjUwMTksIDAsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCisgICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgNzg2NjIsIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgCisgICAgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAKKyAgICAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDEyMDkzMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAorICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDEyOTEyNiwgNDQwMiwgOTk3MCwgMTI0MDIsIAorICAgIDkzMDYyLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDkyMzg0LCA0NDAwNywgMTI4NTYzLCAxMjcyMTYsIDQxNDY0LCAxMjQxMSwgCisgICAgMTI5NjksIDY3MjY4LCA0MTQ2NSwgMTIxMDkyLCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCisgICAgMTE5MTYzLCA3MDExOSwgOTA5MywgMTI4NTM1LCA2ODMzLCA5MjU3NCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCAKKyAgICA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIDEyMDkzOCwgNDM1MjcsIDEyMTE5MiwgNzI3LCAKKyAgICA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIAorICAgIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAKKyAgICAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCAKKyAgICA5MjQ3MywgOTgzMjQ3LCAxMjA3MTIsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgCisgICAgMTIwMzA1LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAKKyAgICAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAKKyAgICAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIDAsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIAorICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCAKKyAgICA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIAorICAgIDUxMCwgNjQ2NjMsIDAsIDEyMTUwMCwgNDU2MSwgMjEwMSwgMTM5OCwgOTE3OTcyLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCAKKyAgICA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAxMjA1MDUsIDg0MCwgOTgzMjgzLCA2OTk5MiwgNzEwMSwgNjk2NywgMCwgCisgICAgMTk0ODk4LCA5Nzk2LCAxMjcwMDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIDEyMTE1NSwgMTI0MDYsIAorICAgIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCAKKyAgICA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIAorICAgIDAsIDk0MDk3LCA2NzU5NCwgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIAorICAgIDQ1MzMsIDEyNzIxMiwgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAKKyAgICAxMjg5MTIsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMTI1MTA3LCA5ODMzNTQsIDcwMjk2LCA2NDQ5LCA5NDk0LCAKKyAgICAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDk4MzM0MSwgMCwgMzQzNiwgCisgICAgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCAwLCAwLCAwLCAKKyAgICA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxOTQ5OTMsIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgMTIwMTQyLCAKKyAgICA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAxMjc4MzMsIDY3NjA2LCAxMTkwODMsIAorICAgIDEyMTA4MywgNDIyMTcsIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCA2Mzg0MSwgOTYxMywgCisgICAgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAKKyAgICAxMTI4MSwgMCwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIDkwNCwgCisgICAgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc4MzEsIAorICAgIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIAorICAgIDEyNzA4MSwgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAorICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCisgICAgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgCisgICAgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgCisgICAgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgCisgICAgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCAKKyAgICA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDk4MzEzMiwgCisgICAgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCisgICAgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIAorICAgIDk1MjEsIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMCwgOTI5NjgsIDE5NDYxMCwgNjQ1MTQsIAorICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCA5ODM1NTUsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgCisgICAgNDE0NDEsIDEwNjkzLCA2NDAwNiwgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgCisgICAgMTE5MDUwLCAwLCA5ODMwNjksIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgCisgICAgMTA3NzQsIDY3MTA0LCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMTI3MDA2LCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIAorICAgIDY0MDM0LCA2NDAzOSwgNjgwNjUsIDAsIDk4MzY5MCwgOTI5MTMsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIDM0OTYsIAorICAgIDAsIDEyMTMyMywgMTEzNzEwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgCisgICAgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgCisgICAgMTY4MiwgNDM4NjMsIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIAorICAgIDY3NjgsIDEwNzI4LCAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgCisgICAgMTgzMywgMTE1NzYsIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIAorICAgIDgwODUsIDQyNTI1LCAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgCisgICAgNjQ0ODMsIDY1NjkzLCA5ODM3MTEsIDk4MzQ5NSwgMTI4NjE1LCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTIxMzUyLCAKKyAgICA0Mjg2NCwgMTI2NDk4LCA0MzE2OCwgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCisgICAgMCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAwLCA5ODc5LCAwLCAKKyAgICAwLCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgCisgICAgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDgzMzcyLCA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgCisgICAgMCwgMCwgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgCisgICAgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA4MzM1OSwgCisgICAgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIDEyMDAxOSwgNjgwNzgsIDg1MzEsIDEyNDk5LCAKKyAgICA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgNDgzMiwgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIAorICAgIDEyNTAyLCA5MTYxLCAxMjg1NTUsIDE2MjAsIDExMjQ3LCAzNjAxLCAxMjEzMDEsIDgzMzUzLCA2NzI0NiwgNjA5LCAxMTU1NSwgCisgICAgODM0NTYsIDEyNDk2LCAxMTk4MCwgNzQxODEsIDQzNDMsIDEyNTA1LCA4Mjk2MCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAKKyAgICAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgCisgICAgMTI2OTYsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgCisgICAgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIAorICAgIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKKyAgICAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAxMjEwNzcsIDk4MzI5NywgCisgICAgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAKKyAgICAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgCisgICAgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgCisgICAgMTE5MTEyLCA3MDQ3NywgMTExNzAsIDY4NjYyLCAxMjgxMjAsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCAKKyAgICA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgNDMwNDUsIDk4MzgzMSwgNzAzNDUsIDQzMzQ1LCA5ODMyNzYsIDEwNzcwLCAxMTg5OTQsIAorICAgIDY4MDcsIDQ2NSwgOTgyOSwgNjk5OTcsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgNzk1LCAxMjAzNTIsIDcyNDEyLCAxMjQ2MiwgCisgICAgMTA5MzAsIDEwODMxLCAxMjEzMjAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5MzA1NiwgODMwNDcsIDk4MzkzMywgMTI0NjgsIAorICAgIDg2MDcsIDEwMDgsIDExODk0OCwgMTAwOTIsIDEyNTEyMiwgMTI4ODUxLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKKyAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCisgICAgMTI3Mjk0LCA4MzM3NCwgNjg0ODksIDQzNDUsIDEyNjE2LCA5MTc3ODQsIDEyODk0NywgOTgzMTU1LCA3NDQ2NywgMCwgCisgICAgOTgzODE5LCAxMjgyOTEsIDUzODIsIDEyNzc3OSwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCAKKyAgICA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgOTE3NzY2LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIAorICAgIDEyMTAwMiwgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCAKKyAgICA3ODU4NCwgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCAKKyAgICA3MzgxNiwgODMwNjAsIDEyODQxOCwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAorICAgIDQzMjM5LCA2NTY3OCwgMTk0ODQwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgCisgICAgNTQwMCwgMTE1OTQsIDEyMDQwNSwgNjgzMzMsIDgzMzkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAxMjgwMTIsIDU1ODcsIAorICAgIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgCisgICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDgzMzg4LCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAorICAgIDEyODY4OSwgOTQwMDksIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgMTQ2MSwgOTEwLCAxMTkxMzMsIAorICAgIDAsIDY3NDksIDM2NTgsIDkzOTY0LCAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDEyNzk4MywgNjc2NjgsIAorICAgIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIAorICAgIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIAorICAgIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIAorICAgIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAxMjA3NDQsIDk4MzgwOSwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDE5NDkwOSwgCisgICAgMzksIDEyNDg3LCAxMjEyNDcsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMTE5NjA3LCAzMTk1LCA1NTUwLCAKKyAgICAxMjkxMjEsIDc4OTcsIDEyNzA4OSwgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgCisgICAgMjg3NywgMTIxNTE4LCA3MDQ5NiwgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIAorICAgIDE5NDc3NywgMTIxMTYyLCA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCA5ODM5MTYsIAorICAgIDExOTU2MSwgOTgzMDc4LCAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAxMjg5NDgsIAorICAgIDgzNDQwLCAyNzAsIDAsIDEwNzE0LCAxMTg5ODMsIDcyNDM3LCAwLCAxMTk5NDIsIDExOTMzOCwgNjUzNzIsIDczODAzLCAKKyAgICA3NDAzOCwgNjgyNTEsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDcxNDQwLCAwLCAwLCA3MDcsIDE5NDgzOSwgMTI4NDA5LCAKKyAgICA5MjgyLCAxMTE2MywgMjI0LCAxMjg1ODgsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMTk0NTg2LCA2ODY0NCwgCisgICAgOTgzMTMxLCAzODQxLCA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCAKKyAgICA2ODYxOSwgNDQwMDgsIDY4NjI3LCAxMjA2OTksIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgCisgICAgMTIxMzk3LCAxMjUwNywgMTE5NiwgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAKKyAgICAxMjE5OCwgOTE3ODg3LCA2NDgyNCwgMTE5MzQzLCAxMjcyNDMsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzAwNzMsIAorICAgIDI3MDUsIDEyODY4MCwgNDE1MjAsIDE5NTA5OCwgMTIwMzc5LCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDc0NTIwLCAKKyAgICAyNzAxLCAwLCAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgCisgICAgMTIxMjMzLCA2Mzc0NSwgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAKKyAgICA3ODYwOSwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAorICAgIDEyNzc4MSwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCA2Mzg2LCA2Mzc4MywgMTIwOTkwLCAxMjUwNDEsIAorICAgIDkyNTM1LCAwLCAwLCA2ODI0OSwgNzQ1NzUsIDEyNzAxMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCisgICAgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAxMDk5NiwgMTExNzEsIDE5MjIsIDEyNzI3NSwgMTI0OTgsIDEwOTg3LCAKKyAgICA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAxMjkxODMsIDE5NDg0MiwgMTI4MTEyLCA0OTMsIDAsIDQzMTk3LCAxNzE3LCAKKyAgICA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIAorICAgIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgODM1MjEsIAorICAgIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCA2Mzg2NCwgCiAgICAgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCA2NjIxOCwgCiAgICAgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCA2Mzc1OSwgCi0gICAgOTgzNjU0LCA2NjIwOCwgNzM5OTksIDYzNzk5LCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgCi0gICAgMTI0OTIsIDEyNjY5LCAwLCAwLCA3NDE1MywgMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAwLCA4NjEyLCA0ODg1LCAKLSAgICA3NDA1MywgMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDAsIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIAotICAgIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIAotICAgIDcwMDI4LCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCAwLCA3NDU3OSwgNzIzOSwgNzAwMSwgCi0gICAgODYyMywgOTQwMTEsIDEyODA1MiwgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDAsIDY1OSwgNjA5OCwgCi0gICAgMCwgMTIyMzQsIDEyNzMwNywgMTI3MDY3LCA4MzExLCAxMjUxMCwgNDE4MDMsIDEzMDM5LCAxMjcwNzIsIDEyNTEzLCAKLSAgICAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDk4MzkyMCwgMCwgMCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgCi0gICAgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIDIzMDksIDEzMTIsIDgxNzMsIDEyODg3MSwgMTI0NjksIAotICAgIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIAotICAgIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDAsIAotICAgIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIDEyODE2NywgNzk0OCwgOTIzNiwgCi0gICAgOTI1NzEsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDAsIDAsIDExOTk4LCAxMjA4MiwgMTA5MjQsIDMxNDcsIAotICAgIDAsIDEyMDY4NCwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIAotICAgIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDAsIDAsIDEzMDE2LCA4MjEwLCAKLSAgICA5ODM5NTgsIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCA5ODM4MzcsIDQxNTUsIDAsIAotICAgIDAsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgCi0gICAgOTgzODQxLCAxMjUyNSwgOTgzNDcxLCAxMjAxNiwgNjU3NzAsIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgCi0gICAgMCwgMTEwMzAsIDAsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgCi0gICAgMCwgMTI1MDYsIDAsIDEyMjMxLCAwLCAxMjUwMCwgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCAKLSAgICA2NjA4LCA0MTA0NywgMTIwMzIxLCA3ODM5NSwgNzgzOTQsIDc0MDY5LCA3Nzk5NSwgNzgzOTEsIDM2MDgsIDgyODEsIAotICAgIDEyMDMyMCwgMTEwNywgMCwgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAKLSAgICAxMzIyMiwgNzQxNjUsIDc0NzgyLCAxMjY1MTQsIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIAotICAgIDk4Mzk0NywgNDk4LCA2NDQ3MSwgMTIwMzI0LCAxMjg1NjcsIDEyNTI5LCA4MDQyLCAwLCAyMzQ0LCAxMjUyOCwgODAzMSwgCi0gICAgMjQxNCwgMCwgNjk3MTksIDMyMzEsIDAsIDY0MjIsIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgCi0gICAgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgNzg3MzgsIDQxNDMzLCA0NzE5LCA0NjksIDAsIDQzNjMsIDMzMTMsIDQxNDI4LCAKLSAgICA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgMCwgOTkyMCwgCi0gICAgMTIyMTUsIDAsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDAsIDk2NjMsIDk4MzIyOCwgMTE5NjM0LCA2NTAzLCAKLSAgICA0MTExMCwgMCwgMTQ5MSwgMCwgMCwgMTI3MzA0LCA0MTA2MSwgMCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgCi0gICAgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzg2MDIsIDY2NDc2LCA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCAKLSAgICA0MTk5MiwgNDE1MDYsIDAsIDQxNjg3LCAwLCAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTI3Mjk5LCA3NjkyLCA5ODM4MzMsIAotICAgIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA0MTEzMywgOTgxNiwgMTI2NTE3LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAKLSAgICAzNTA4LCAxMjcwNTgsIDQzMjM1LCAwLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgMTI5MTAsIDc4NTU0LCA2NjY0NCwgCi0gICAgMTMwMjgsIDY3MzcsIDEyNTM3LCAwLCAwLCA2NDEzNiwgMTI1MzYsIDIzNTAsIDEzMDI5LCA3ODIzMywgMCwgOTgzMTAzLCAKLSAgICAxMzAzMCwgNjcwMiwgNDUyNywgMCwgMTI1MzgsIDEyODgxMCwgOTgzNjQ1LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDAsIDQ5NDgsIAotICAgIDEyNDg0LCA0MDMyLCAxMjgxNDksIDEyNjIzLCAwLCA2MjA3LCAwLCA2MTE3LCA2NTkzMCwgODQxMiwgMCwgNzQzOCwgMTI5NiwgCi0gICAgMjMyNSwgNDE1MTEsIDEyNjYyNSwgMTAxNDksIDc0MTE4LCAwLCAxMjcyODYsIDEyNDgxLCAwLCAxMjQ4OCwgNjY3MTMsIDAsIAotICAgIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIDAsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIAotICAgIDY1MDMyLCA0MTUxMywgOTgzMTY2LCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDc4NTU4LCAwLCA3ODU1NiwgCi0gICAgODQ4LCA5ODY4LCAwLCA2NDI0LCA3ODU2OCwgMTE5MzM4LCA2OTkyMiwgNzQwMzEsIDc4NTYzLCA3ODU2NCwgMjM1MiwgCi0gICAgNzg1NzIsIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCA2Nzk3MywgMCwgMTMwMjYsIDY3NjIsIDc4NTc5LCA3ODU4MCwgCi0gICAgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAwLCAwLCAxMzQzLCA5ODM4MjMsIDAsIDkzMjUsIDY4MTgsIAotICAgIDYyODMsIDExNzM4LCAwLCA5ODM5MzQsIDAsIDExNzQxLCAwLCAwLCA5MjE2LCA4MjYzLCAxMTI3OSwgMTk0NzUyLCAKLSAgICA5ODM4MjUsIDE5NDc1NCwgMTMwMjEsIDY0NDk0LCAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIAotICAgIDk5NTYsIDAsIDAsIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCAKLSAgICA3NDM0MCwgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3ODAsIDMzMzUsIDAsIDAsIDk3NzYsIDEyMDUyNiwgCisgICAgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgCisgICAgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAKKyAgICA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAKKyAgICAxMjkwNjYsIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIAorICAgIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgNjkyMzIsIDAsIDEyNTExLCAKKyAgICA3NDQ1MywgMTI1MTQsIDAsIDcxMTMwLCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAxMjgwNDgsIDczNzgsIAorICAgIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgMTIwOTAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCA4MzUxMSwgNjczNTgsIDgzMTEsIAorICAgIDEyNTEwLCA3NjY5LCAxMzAzOSwgODM1MDksIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDEyMTM4NSwgNzAxOTMsIAorICAgIDEyODM1NCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAKKyAgICAxMjcyODAsIDk4MzMxMSwgODMwMjAsIDIzMDksIDEzMTIsIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCAKKyAgICA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIAorICAgIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgCisgICAgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIDc5NDgsIAorICAgIDkyMzYsIDc3OTQyLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCA4MzAwNiwgODMwMDcsIDExOTk4LCAxMjA4MiwgCisgICAgMTA5MjQsIDMxNDcsIDgzMDA0LCA2NjQwNiwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIAorICAgIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDc0MjU2LCAwLCAKKyAgICAxMzAxNiwgODIxMCwgMTIxMDYyLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgCisgICAgMTIwNjMwLCA0MTU1LCAxMjEwOTAsIDEyMDcwNCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTEzODI2LCAKKyAgICAxMjcyMTcsIDk4MzIwMiwgOTkyMiwgNDMzMDksIDExMjExLCAxMjUyNSwgOTgzNDczLCAxMjAxNiwgNjU3NzAsIDk1NDgsIAorICAgIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMTk0Njg5LCAxMjcxOTEsIDExMDMwLCA0MzkxNiwgOTI1NjcsIDY1NjkxLCAKKyAgICA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCA5ODM4MzgsIAorICAgIDExMTQ2LCA3MTQ3NywgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgCisgICAgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIAorICAgIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgCisgICAgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIAorICAgIDY0NDcxLCA3Nzk4NywgOTI5NzQsIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCAKKyAgICA2OTcxOSwgMzIzMSwgOTE3ODM2LCA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIAorICAgIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIAorICAgIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgCisgICAgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIAorICAgIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCA5ODM0NjcsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIAorICAgIDcwNDU0LCAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIAorICAgIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMCwgCisgICAgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODMzLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCAKKyAgICA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAKKyAgICAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgCisgICAgMTI1MzcsIDAsIDQzNTA2LCA2NDEzNiwgMTI1MzYsIDIzNTAsIDEzMDI5LCA3ODIzMywgMTIwOTE0LCA0Mzg5NywgMTMwMzAsIAorICAgIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgMTI4ODEwLCA5ODM2NDUsIDY1NTk5LCA2NTcxNywgOTk2NiwgOTMwNDYsIAorICAgIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjExNzcsIDEyNjIzLCAwLCA2MjA3LCA5ODMyMjUsIDYxMTcsIDY1OTMwLCA4NDEyLCAKKyAgICAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTIwMjMzLCAxMjQ4MSwgCisgICAgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIAorICAgIDExOTI0NCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAxMjAyMDksIDExOTI3LCA2NjU4NCwgCisgICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzE0NTksIDgzMDM0LCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIAorICAgIDY3MjI2LCA2OTkyMiwgNzAxOTAsIDc4NTYzLCA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAKKyAgICA2Nzk3MywgOTgzMTkzLCAxMzAyNiwgNjc2MiwgNzg1NzksIDcwMTkyLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIAorICAgIDgwOTksIDEyNzk4NCwgMCwgMTM0MywgOTE3OTk5LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCA3MjQzNiwgCisgICAgMTEzNzEzLCAxMTc0MSwgOTE3OTg2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIAorICAgIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAwLCA0Mzk1NCwgCisgICAgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCAKKyAgICA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIAogICAgIDE5NDc0OCwgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgCi0gICAgNzg1ODEsIDQxNTYsIDAsIDAsIDY0MjEsIDc4NTkxLCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIAotICAgIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgMCwgMTMwNDYsIAotICAgIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgMCwgMCwgNjgxOSwgMTMwNDksIAotICAgIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDczOTQ0LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIAotICAgIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgMTk0NzI0LCAxMzA0NSwgCi0gICAgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDE5NDcyOSwgMzk5NywgMTI4MDYsIDg3NjgsIDEzMDQ0LCAwLCAKLSAgICAxMjQyMCwgNDAyNCwgMTk0NzMwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAwLCAwLCAwLCAwLCA5ODM3OTEsIAotICAgIDkyMjEwLCA5MjQxMSwgMCwgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCAKLSAgICA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgCi0gICAgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgCi0gICAgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDEyNjU5NiwgMCwgMTE5OTMzLCAwLCAzMTE1LCA5OTE4LCAwLCA4Mjk0LCAKLSAgICA0MjkxMiwgMCwgMCwgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIDk4MzI3NCwgNDE1NTgsIDQxNDcxLCAKKyAgICA3ODU4MSwgNDE1NiwgMCwgMTI3MzI5LCA2NDIxLCA3ODAzOSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIAorICAgIDc0NTQyLCAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIAorICAgIDQzOTI1LCAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMCwgCisgICAgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAKKyAgICAxMjc5MTksIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgCisgICAgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDEyMTAzNiwgMzk5NywgMTI4MDYsIAorICAgIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgMTI4MDAwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAKKyAgICA2ODMwNywgOTE3ODQyLCAwLCAwLCA5ODM3OTEsIDkyMjEwLCA5MjQxMSwgMTI5MzAzLCA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgCisgICAgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIAorICAgIDU4MzEsIDAsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAKKyAgICAxMjEwNDgsIDk4Mzg4NCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCA4Mjk3MiwgODI5NzMsIDM2MDMsIAorICAgIDQxMTA5LCAyMzk4LCAzNTQ4LCA4Mjk2OSwgODI5NzAsIDExOTkzMywgODI5NjQsIDMxMTUsIDk5MTgsIDEyNzgyMywgODI5NCwgCisgICAgNDI5MTIsIDAsIDEyNzI4NywgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIDEyMTIyMSwgNDE1NTgsIDQxNDcxLCAKICAgICA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIAotICAgIDQxNTU5LCAxODk2LCA2NjI1NiwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgMCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgCisgICAgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCA3ODU5NCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgCiAgICAgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgCi0gICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgCi0gICAgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIAotICAgIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIAotICAgIDY0MjMsIDQyNzc0LCAwLCAwLCAwLCAxMjgyMywgMjMzMSwgOTE3ODEwLCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAwLCAKLSAgICA5MTc4MDksIDgzNDYsIDAsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDAsIDgyMiwgMTI3OTg0LCA5OTAzLCA2NDcyMSwgNDI3MjIsIAotICAgIDY5ODc3LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCA3ODY2MiwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgCi0gICAgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgMTk0NjQwLCAwLCAxMjk0NiwgMTk0NjQxLCAxMTkzNDEsIAotICAgIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAwLCA5ODM5NjAsIDc0OCwgCi0gICAgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgCi0gICAgODk2OCwgNjc4NjMsIDM1OTMsIDAsIDAsIDIzNDIsIDAsIDE5NDYzNCwgNjUyMDYsIDQ4OTQsIDE5NDYzNSwgNDg5MCwgCi0gICAgMTk0NjM3LCA5MTc4MDQsIDU4MSwgNDg5MywgOTgzNjE2LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCAKLSAgICA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgNjk3MDIsIDAsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgCi0gICAgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIDAsIDAsIDAsIDAsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIAotICAgIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAxMjAzODEsIDEyMDM4OSwgMTE4ODg4LCA5MzQ0LCAKLSAgICA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgMCwgCi0gICAgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAzNDQ5LCAwLCAwLCA3ODQxNCwgNzg0MTMsIAotICAgIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIDEyNzAxNCwgMCwgMTI3OTE0LCAKLSAgICA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCAKLSAgICA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCA3OTcxLCA3ODA3MiwgNzgwNzMsIAotICAgIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAxMDk2MCwgNDA5NjIsIAotICAgIDgzMDUsIDEyNTczLCA5ODM2MDgsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAwLCAxMjU4MiwgNzgyODIsIDk4MzA0OCwgCi0gICAgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCAKLSAgICA3NDA0NSwgNzAwMzksIDAsIDAsIDQ5MTMsIDAsIDk4Mzk1OSwgNzEzMzMsIDQyMzI2LCAxMjgxOTQsIDEyNzI4LCA5MjY4NSwgCi0gICAgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCAKLSAgICAxOTQ3MDgsIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzAwMTcsIDE5NDcxMywgNjUxLCAxMjY0MSwgMCwgCi0gICAgMCwgMCwgMCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCA3ODQ2MSwgMTk0Njk3LCAKLSAgICA3NDM1NiwgNjQ5NDUsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgMTk0NzAwLCA1NTI2NCwgCi0gICAgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCA5ODM0OTUsIDEwMTAxLCAwLCA3MDA0OSwgODQ3OSwgNDE1MSwgCi0gICAgNDE5MzMsIDAsIDAsIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCA3NDA1MCwgOTI3MDEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIDAsIDI2OTksIDAsIDczODQ1LCAKLSAgICAyOTg1LCA5MjU2OCwgMTI2NDc1LCA5MTc4NDUsIDEyMTkyLCAxMTkzMTQsIDAsIDExOTMxMiwgOTgyNywgMTE5MzEwLCAKLSAgICAxMTkzMTEsIDExOTMwOCwgMTE5MzA5LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzg0ODEsIAotICAgIDc4NDgyLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA3ODQ3OCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgCi0gICAgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgMCwgNDA5NjcsIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIAotICAgIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDAsIDkxNzgyNiwgNTI0NCwgNDE4OSwgOTQxMDgsIAotICAgIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDAsIDkxNzgyNywgCi0gICAgNjU1NTUsIDEyNTc0LCAwLCAwLCAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIDEyNTc4LCAKLSAgICAxMjcyMCwgMCwgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAxMTg4NTAsIAotICAgIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCAKLSAgICA5MjMyMywgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDAsIDAsIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCA3MTMyNSwgMCwgCi0gICAgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIAotICAgIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAxMjAxNjEsIDAsIDAsIDQxOTM0LCA3NDY1LCAwLCAxMjgxNjgsIAotICAgIDk4MzI2OCwgNDcxNSwgNjEwMSwgOTQxMDYsIDQxOTM2LCAwLCA0ODc5LCAwLCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIAotICAgIDk1ODUsIDUzNzQsIDk4MzI2NywgMTI4MDU5LCAwLCAwLCAxMjY2MTgsIDEyMDM5MCwgMCwgNjU1NjcsIDEyMDYxNCwgMTkyOSwgCi0gICAgMCwgMTIxNDIsIDAsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCAxOTQ2MjMsIDUzNzgsIDc4NzkxLCAKLSAgICAxMjg2NzksIDQxNDIxLCAwLCA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIAotICAgIDk4MzExNSwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgCi0gICAgNDM1OTcsIDEwNjI4LCA3NDgwOCwgMTk0NTcyLCA3OTk5LCA0Mzk3MSwgMCwgMCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAKLSAgICAwLCA2NDM3NCwgNDM4MCwgMTk0NjA4LCAxMTkwNDQsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NTYyNiwgNzg0NjIsIAotICAgIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDAsIDc1NjYsIDY0Njg4LCAxOTQ1OTMsIDE5NDU5MiwgCi0gICAgNzgwOTIsIDc0MzU3LCAxOTQ1OTcsIDQ3NDgsIDkyMjI4LCAxOTQ1OTgsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgCi0gICAgMCwgNzQ1NzYsIDQ0MDE5LCAwLCAxMjgxODksIDM5NjcsIDE5NDYwNCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgMCwgODQxMCwgNDQ1NCwgNzIzLCAxMjc4ODIsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCAwLCA3ODE5LCAyMzIwLCAKLSAgICAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIAotICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgOTgzNzYzLCAxNTg0LCA2NjY0NSwgCi0gICAgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDAsIDc4MDYyLCA3NTM3LCAwLCAxMTM3MCwgMCwgMTAzMzAsIDAsIAotICAgIDEwMzk0LCAwLCA3NDE5NCwgMCwgMTI3OTI5LCA5NzgwLCAwLCAxMzA5MiwgMTk0NTc2LCA3Nzk1MCwgMTk0NTc4LCA3MDc0LCAKLSAgICA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAwLCAwLCA0MjExLCAxMjU5LCAKLSAgICA3NTE3LCAwLCAwLCAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA5NDAzNCwgMTk0NTY2LCAxMTA2NCwgCi0gICAgNDExMjksIDAsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDEyODE1MywgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAKLSAgICAxOTQ1NzMsIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCA5ODM0NTIsIDY0MjYyLCA2NzY3LCA0MTQwNywgMCwgCi0gICAgMCwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjc5MzQsIDEyNjYwOCwgMCwgMCwgMCwgMCwgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAKLSAgICAyNTYzLCAxMzAzMywgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCA2OTg5NSwgMTEyNzAsIDAsIDAsIDExOTMzLCAwLCAKLSAgICAwLCA0MTkwMywgNDM0NDcsIDExMDAxLCAwLCA0MjI1NSwgMCwgOTI2NjEsIDY5ODIxLCA0MTkwNSwgMCwgMCwgMTA3NzUsIAotICAgIDk3OTMsIDUwMDksIDAsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIAotICAgIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDk4Mzc3NiwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgMCwgCi0gICAgMCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDEyODA1OCwgNjk4NDQsIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCAKLSAgICA0MjYwMCwgMCwgNDMyMDMsIDAsIDk4Mzc5OSwgNDMyODYsIDAsIDEyODIxMSwgNDM3NzgsIDAsIDQxMzA1LCA3ODc3NiwgCi0gICAgNDM3ODEsIDExMzAzLCA2NTU0NywgMCwgNzAzMSwgODU5LCAwLCAwLCAwLCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAwLCA4NTM1LCAKLSAgICAwLCA2NTE5NiwgMTk0Nzg3LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIAotICAgIDYzODg1LCAxOTQ3OTIsIDExODIyLCAwLCA0MzE4OSwgOTgzODk4LCAwLCAxNzg4LCAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAKLSAgICAwLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA5NDA1NSwgMCwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgMCwgMTI2NDAsIAotICAgIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCA0Mzc1NCwgMzM5NiwgMTI2NDIsIAotICAgIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAxMjA1MTYsIDExODk4OSwgMCwgODgxNSwgCi0gICAgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCAKLSAgICA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAwLCA5MjY0MywgMCwgMTk0NjczLCAxMjAzMiwgMCwgOTcyNSwgMCwgCi0gICAgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCAKLSAgICA0MzY5OCwgNjUzODYsIDIyMDgsIDAsIDQzNzAxLCA0MzE5OCwgNzE4NCwgMTIwNjczLCAxOTQ3OTcsIDkxNzgxOSwgMTAwODUsIAotICAgIDExOTk5MiwgMCwgMTE5OTkzLCA2NjM0LCA5MjM3MywgMCwgMTE5MzIzLCA4MDcyLCAxMTkzMjEsIDQzNzAwLCAwLCA4ODcyLCAKLSAgICA3NzgzLCA5MTc5OTIsIDEyMzk4LCA4MjM3LCAwLCAwLCAxMjM5NSwgMCwgMTI2OTc3LCAxMjA1NjUsIDk5MTQsIDIyMTcsIAotICAgIDkxNzg1NCwgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCAwLCA3ODEwNywgMCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgCi0gICAgMTgyOSwgMCwgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAxMjA0MjIsIDAsIDE3MTAsIDAsIDAsIDY1NjA3LCAwLCAKLSAgICA0OSwgNjYyNywgMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCA2NDQxOCwgCi0gICAgMTY0MywgNjUyMTMsIDg0MDUsIDM0NzAsIDEyODIyNSwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgMTIwNjY0LCA3ODQ0NSwgMCwgCi0gICAgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgMTIwMDAyLCA5ODg2LCAKLSAgICA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgMCwgMTI2MzIsIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAwLCAKLSAgICA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAwLCAKLSAgICA2NjMwOSwgMCwgMCwgMTQ5NCwgOTgzMTQ2LCAxMjY2MTMsIDAsIDExNjkzLCAxMjY1MTMsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIAotICAgIDEyMzYzLCAxMTM4NiwgMCwgMCwgMCwgMCwgNjQ1ODIsIDAsIDczNzk0LCAwLCA4MDIyLCAwLCAxMjA0NjIsIDc0MTA2LCAKLSAgICAxMjQxMywgOTQwNjksIDkxNzk5NCwgOTE3OTkzLCA5MTc5OTUsIDU1NzAsIDE4ODEsIDcyMTAsIDAsIDEwMTIsIDQzNzUyLCAKLSAgICAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCA1NTY5LCA5ODMyNDIsIDQyMzM5LCAwLCA2MDYzLCAwLCA3ODM4MywgMTE5NTk0LCAKLSAgICA2MDUzLCA2NTYwMiwgMCwgOTIyMDEsIDY0NzI3LCA5MTYwLCAxOTQ4MjcsIDAsIDAsIDkyMTgwLCAxMDUwMywgMTE4ODEwLCAKLSAgICA2MDU1LCAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgCi0gICAgOTgzMTE2LCAwLCAxMjAxMTksIDc4MzMzLCAxMjAxMTcsIDEyMDExOCwgMTIwMDk5LCAxMjAxMDAsIDY1MDg3LCA1NTcxLCAKLSAgICAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCAxMjAxMDcsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIAotICAgIDEyMDEwMSwgNTg5LCA3MDUwLCA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIAotICAgIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAwLCAxOTQ4MTUsIDg1ODMsIDAsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgMCwgMCwgMCwgCi0gICAgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgOTgzMjUxLCAwLCA4MTIwLCAKLSAgICAxMjA3MDEsIDAsIDAsIDEyODAxMiwgNDEwNjMsIDAsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIDAsIAotICAgIDAsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDk4MzY3MSwgCi0gICAgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCAxOTUwMjUsIDc0MDk0LCAwLCAwLCA3Nzk3MCwgOTgzNTYwLCAwLCAxMjgxNzUsIAotICAgIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIDkyMjgxLCAxMDQ0MSwgNzM4MzYsIDAsIAotICAgIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAKLSAgICA5MTc5NTksIDU4NTMsIDEzMDYzLCAxMDM2MywgMCwgMTI5NTYsIDEyODE2OSwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAKLSAgICAxMjA2MCwgMCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAKLSAgICAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIDc4Mzk2LCAxMjcwNTcsIDI2OTUsIDQyMTcxLCAwLCAwLCAwLCAKLSAgICA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAxMjEyNSwgMTI3NjYsIDAsIDExNjQsIDEyODgxNywgMCwgNDE5MTgsIDk4MzE2OCwgCi0gICAgMTI3NTQyLCA4Njg3LCA2NjAwOSwgMTIxNzgsIDcwNTMsIDEyODAwMSwgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDEyMDUzOCwgCi0gICAgNjQyNywgNDI4ODQsIDQxMTIzLCAwLCAwLCA0Mjg3MywgNDExMjYsIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCAwLCAKLSAgICA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAwLCAxNTg5LCAwLCAyOTYsIAotICAgIDc0NDM4LCA3ODg1MiwgMCwgNjc4NDEsIDc0MzcwLCAwLCA4OTIyLCAxMjgwNjgsIDc0NjAwLCAxMjcwMCwgNzQ4MzYsIDAsIAotICAgIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCAwLCAxMTQ3MywgNTQ0OSwgCi0gICAgMTI1MiwgMCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIDkxNzU2OSwgNzQxMTQsIDEyMjMsIDE2NDIsIAotICAgIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCAKLSAgICA0MTQyNSwgMTI3MDI5LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIDYxNTAsIDY2MzYsIDQzNzAsIDAsIDAsIAotICAgIDc0MTc4LCA3NDU4NywgNzQxMTcsIDAsIDAsIDAsIDQ5ODYsIDEyMTg5LCAwLCA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgCi0gICAgMTIxMDQsIDc3OTQyLCA2MjIwLCA5MDA0LCA2NTU2MSwgMCwgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCAwLCAKLSAgICA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCAKLSAgICAxMTg5MDAsIDkxNzg5NCwgMCwgOTYzNSwgMTI2MDAsIDg4NzEsIDAsIDAsIDAsIDY0NjksIDc0MjI3LCAwLCA2NTMwNCwgCi0gICAgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgMCwgMCwgMCwgMCwgNDI5MTYsIDAsIDAsIDAsIDcyODIsIAotICAgIDc4NzI4LCA2NTczMywgNDQ0NSwgMTI3MTM4LCAxMjgwODIsIDM0OTQsIDc0NjA2LCA2NTU1LCAwLCA3Nzk3NiwgMCwgMCwgCi0gICAgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzI0NCwgNjUzMTIsIDU0NDcsIDAsIDEyODk1LCA2NTU5MywgNDAxMCwgMCwgCi0gICAgNDExMDYsIDAsIDY0NDQ4LCAwLCA0MTEwNSwgMCwgNjU4MjAsIDYyMzIsIDAsIDEyODI4MCwgMCwgNDM2MDgsIDExOTA5MSwgCi0gICAgMCwgNjUzOCwgNDMzNSwgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAKLSAgICAxMjE1NSwgOTgzNjc0LCA0Mjg3OCwgMTE1MDAsIDAsIDAsIDc0NTc4LCAwLCA2NTgzMiwgMCwgMCwgMCwgNzc5NzUsIAotICAgIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCAwLCAwLCA5MjMwNywgMCwgMCwgNTEzMywgMCwgMCwgOTUwMCwgCi0gICAgMCwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIDk4MzA4MCwgMCwgMCwgMjQ5NiwgMTE1MTYsIDk0NCwgMTE4ODUxLCAzODkwLCAKLSAgICAxMjE2OCwgMTQzOCwgMCwgOTgzMTE3LCAwLCA0MTk0NywgMTIyMCwgMTIwODI4LCAxMjg1NTUsIDAsIDAsIDE1NzEsIAotICAgIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAwLCAzMTIsIDQxOTgwLCA5ODM5NDQsIDAsIDc4MTIwLCAKLSAgICA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCAKLSAgICA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAwLCAwLCAxOTA2LCA5MTc5ODYsIDExNTMyLCA3NDA3MywgCi0gICAgMTI3MzM4LCAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA5MTc4OTUsIDY0Mjg3LCAwLCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIAotICAgIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAwLCAwLCA3NzAzLCA4ODQwLCA4MDM1LCAwLCAwLCA5MjIzMCwgMCwgNjEyOSwgMCwgCi0gICAgMTI4NTI4LCAxMjgyNjgsIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMCwgMTMxMzYsIDAsIDAsIDcwMTAyLCA2Mzg4NiwgCi0gICAgMTE4ODgxLCA5NjA1LCA3MTMwOCwgMTMyMjAsIDEyODc3NiwgMTIwMjc0LCA1NTE0LCAwLCA5MjI4LCAwLCAwLCAwLCA1MjQwLCAKLSAgICA5ODExLCAxMDAxMiwgMzA5NiwgMCwgMCwgOTgzMzUxLCA2NjY3NiwgNjU4NzMsIDAsIDAsIDAsIDk1MDEsIDAsIDEyNzIsIAotICAgIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgMCwgOTE3ODEyLCAwLCAKLSAgICAxMTg4OTksIDEyMTkzLCAwLCAwLCAwLCAwLCA5ODMzNTMsIDE5OTM1LCAwLCA5MjE2MiwgNjk2NzYsIDAsIDAsIDAsIDUyNzUsIAotICAgIDAsIDAsIDg2MzcsIDAsIDAsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCAKLSAgICAxMjgxMzgsIDI0MjYsIDEyMDQyLCA5MjE5NCwgOTgzOTExLCA5NTM3LCAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIAotICAgIDY0NTYxLCA1NTIyNCwgNDk4MSwgMCwgMCwgNjM4NzYsIDExNjY3LCA0MjY4NiwgNzc5NzMsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgCi0gICAgNDE2NDksIDc1ODksIDAsIDAsIDMyMzcsIDAsIDY4MjE1LCA5MTc5MDQsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIDAsIAotICAgIDAsIDAsIDAsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCA0MTk0NSwgNzEzMiwgCi0gICAgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDAsIDQxNjk5LCAxMDc2MiwgNDM3ODAsIAotICAgIDEyOTk5LCAwLCAwLCA4MTA2LCA0MTI4LCAwLCA2Mjc0LCA0NDk0LCAwLCA0MDEyLCAxMDM5NSwgOTgzNTkxLCA0MzYzMywgCi0gICAgNjU0NDcsIDEyNjUxMSwgMCwgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIDAsIDQyNzU1LCA3NDgwMiwgOTIyNywgCi0gICAgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIDQxODQ3LCA2OTAsIAotICAgIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCA5MTc5MTEsIDAsIDEyODY4OCwgMzk4NSwgOTE3OTEyLCA2NTg2MCwgCi0gICAgNjM5MjEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA5MTc4MDUsIDEyODA5LCA2NDA2LCA0Njg1LCA5MjUwNSwgMTA4NzksIDEwMzQ3LCAKLSAgICA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgMCwgOTE3OTA3LCAwLCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDAsIAotICAgIDAsIDQyNjU3LCA5MjQ2OCwgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIAotICAgIDEwNTk0LCA2NDk1MSwgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMCwgMzg5MSwgMCwgMCwgCi0gICAgMjMzNywgMTczNSwgNzQzMjQsIDY3ODYwLCAyMzYzLCA5ODMxMzUsIDAsIDQzNTYxLCAwLCAwLCA3NDE0NiwgMTg2MCwgCi0gICAgNzQ5NSwgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDAsIDEyMDM0NywgNzcyNywgMCwgODQ5OCwgCi0gICAgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAwLCAKLSAgICAxMjUzMywgOTgzODc5LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMCwgNzQ4MDAsIDAsIDY3OTc0LCAxMTk4MCwgCi0gICAgMTI4NjUwLCA5ODM4MDEsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgMCwgNzQ1OTIsIDg4NTAsIDc0Mjc1LCA5MjM4LCAKLSAgICAxMDYxNywgOTE3NTQ1LCAwLCA5MjYyNSwgMCwgMTI3OTEsIDAsIDAsIDEyNzg0MywgNDQ0NywgNzM3MzIsIDEyNzkzLCAKLSAgICAxMjkwMCwgOTIzNzcsIDEwOTUwLCAwLCA3ODA4NywgMTI3OTAsIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIAotICAgIDE5NDkzOCwgMTc0NCwgMTI3ODksIDEwMzY2LCAxMjMxNywgNDEzMTAsIDk4Mzg2OSwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAKLSAgICAxMjY5MCwgMCwgMCwgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCAwLCAyNzgsIDAsIDQxNDA1LCAKLSAgICAxMTkyNTQsIDAsIDEwMDc3LCA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCAwLCA0MzU1MywgMCwgNjc5MDMsIDAsIAotICAgIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDAsIDAsIDAsIDg2NDYsIDk4MzE4NiwgNzc4MjksIDcxMzYwLCAwLCA2NDEzLCAKLSAgICA2NTUwLCAwLCAxOTQwLCAwLCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAxMDA0NCwgMTI4MzIyLCAwLCAwLCAKLSAgICA2ODY1OSwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDAsIDAsIDEwMjk3LCAwLCAzNzQyLCAwLCAKLSAgICAzOTU5LCAwLCAwLCAwLCAyNDY3LCAwLCA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgMCwgNDM3NTgsIDQxODIsIDc4MTcxLCAKLSAgICA0Njc2LCAxMjA1MDEsIDAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgMCwgCi0gICAgNDEwNjAsIDAsIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgMTIwMjYwLCAwLCA2NTI1NiwgCi0gICAgMCwgNzQwNzAsIDAsIDAsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjgyMzYsIDAsIDEyMDQ3MiwgCi0gICAgNTUxNiwgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDczODI3LCA1NDQsIDEyMDQ1LCA2Mjc4LCAwLCA1NTE1LCAwLCAwLCAKLSAgICA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMCwgNTUxNywgMCwgMCwgNzQ4NDEsIDY3ODg0LCAwLCA2Nzg5MCwgNjc4ODUsIAotICAgIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAwLCAwLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgCi0gICAgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgCi0gICAgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgNjc4ODksIDAsIDEzMTEsIDkxNzk2NiwgNDMyNiwgCi0gICAgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEyODg4MCwgNjkxNywgNzgxNTUsIDAsIDk0OSwgNzgxNjIsIDAsIDYxNDgsIAotICAgIDg2MDUsIDQyMjUzLCA3ODE3NywgMCwgMCwgNDI3MTUsIDAsIDAsIDAsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgNjUzMCwgMCwgCi0gICAgNjUwNTcsIDAsIDUxNDQsIDEyMjIxLCA0MjcxNiwgMCwgNDQzMSwgNDMzMSwgOTgzNzI5LCAxMjg2NzUsIDQxODM0LCA1Mjc5LCAKLSAgICAwLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDEyODgyNSwgMCwgNzgxNjUsIDY2MDM2LCAwLCAwLCA2NDI4LCA0MjI3MCwgMCwgCi0gICAgOTgzNTk2LCA0MzA1OSwgNDI2NjYsIDUyNTYsIDEwNjcsIDI1NSwgMTIxMzEsIDk4MzcyMiwgOTQ5MywgOTgzOTY4LCAKLSAgICA0MTAxNCwgMTE3OTMsIDE5NDkyMCwgMCwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDk4Mzg1NCwgMTE5NjMyLCAwLCAKLSAgICA2NTYwLCA3MDE2LCA3NDI3NCwgOTgzNjE1LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCAKLSAgICA1MTM1LCAxMTgxMSwgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIAotICAgIDUxNjgsIDc4NTUyLCAxMjc3NTMsIDc0MzE1LCA3NDM2MSwgODI1MywgODgxNywgMTEzNiwgMCwgNDM1NjMsIDkyMjMyLCAwLCAKLSAgICAxOTQ3NTAsIDczOTIsIDgyMzAsIDkzNjUsIDAsIDAsIDk4MzYwNywgMCwgMCwgNDA0MSwgMCwgMjM1NywgNDMyNDAsIAotICAgIDEyNzg2LCAyMjksIDExOTg4NSwgMTE5ODg0LCA0NDAwNCwgNzE0MiwgMTE5ODgxLCAxMjM1MCwgNjU1NTQsIDExOTg4MiwgCi0gICAgMTE5ODc3LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgMTI2ODYsIDExODkxNiwgCi0gICAgNDIzNzUsIDAsIDEyNzIzOCwgNjYzNTIsIDEwNDcwLCAwLCAxMTA1OSwgMTA3OTEsIDkxNzk0NCwgNDUwLCAxMTkzMjgsIDAsIAotICAgIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCA3ODI4NCwgNjYzMzgsIDAsIDAsIDE4MzksIAotICAgIDExODc5OSwgOTgzMjE5LCAxMDkyNywgMTcwMSwgOTgzNjY0LCAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIAotICAgIDExOTg2NSwgNDE3NTgsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgOTI0OTMsIDc4Njc3LCAwLCA5MjQyOSwgNzgxNzQsIAotICAgIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIDAsIDY1ODEyLCA5MTc4MzEsIDAsIDQxODI0LCA2Nzk4NSwgCi0gICAgMTIwMjAzLCAxOTQ4MDAsIDE5NDgwMywgNDI3MDAsIDE5NDgwNSwgMTI3OTgwLCAxOTQ4MDcsIDc4Njc2LCA5MjM1NiwgCi0gICAgMTk0ODA4LCAwLCAwLCA0NDkzLCA0MzM2LCAwLCAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgCi0gICAgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgNDQ4OSwgNzEzMzEsIDAsIDE5NDc5MywgMTkxMiwgNDIzODUsIDEwMzA2LCAxMDM3MCwgCi0gICAgMCwgMCwgODg2NywgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3ODgyMSwgMTQxMCwgOTI2NzEsIDk4MzI1MCwgMTE4ODc4LCAKLSAgICAwLCAwLCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTI3OTc1LCA3ODE4OCwgNDg5MiwgNzQwMTYsIAotICAgIDE5NDc4MSwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMCwgNzU5LCA2NTc0OSwgMjA3OSwgNjUyNDgsIDEyNzg4LCAKLSAgICA2NDQ4NywgNjQ1NTIsIDAsIDEwMjIzLCA0MjA2MiwgMCwgMCwgMTI2NTczLCAzNjY4LCA2NTc1NCwgNDM1NjAsIDEyMjI2LCAKLSAgICA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCAxOTQ3ODYsIDE5NDc4NSwgMTk0Nzg4LCA0MzYxOCwgNjU3NDcsIDEwOTM3LCAKLSAgICAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgOTI0MzYsIDg5MjEsIDk5NTIsIDAsIDAsIDQyNzE0LCA5OTUxLCA0MzQwOSwgCi0gICAgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCA0MTgyMCwgMjMwMCwgMjM5NSwgCi0gICAgMTI4NTYzLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCA0MjgwOSwgNDI4MDcsIDAsIAotICAgIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIDQxODk4LCAyMzYwLCA0MTc5NCwgCi0gICAgOTE3OTQyLCA3MTMxNCwgMTI3ODE4LCAwLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIDExMzM2LCA3OTksIDYzODIzLCAKLSAgICAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgMTAyNjAsIDExODk4MCwgNTUyODQsIAotICAgIDkyMjAzLCAwLCAxMDM4NCwgOTgzMjIwLCAwLCAwLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDAsIDc3ODcyLCAKLSAgICA0NDQzLCA0Mjc3OSwgMjMwLCAwLCAwLCA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgMTAyODgsIAotICAgIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCAwLCA3NDE0NSwgCi0gICAgMTI3OTQzLCAxMDI2NCwgMTAyODAsIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCAwLCAwLCAwLCA0MTg4NywgMCwgNDg2MiwgCi0gICAgOTczNSwgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgOTIxNzgsIDkzOTc2LCA5MDY1LCAxMjk2MSwgMCwgMCwgOTIyNTMsIAotICAgIDAsIDI4OSwgMCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCA3Mzg5MywgNDI3MjQsIDAsIAotICAgIDQ2ODgsIDEyMDQ1NCwgMCwgMCwgNjc5OTQsIDgyMzgsIDMxMTAsIDEyMDE2MiwgOTgzOTA4LCAxMjAxNjMsIDY1MjgsIAotICAgIDEyNzU1MywgNDMwMzUsIDY5ODk4LCAyMTgsIDAsIDE1MjAsIDAsIDQ3ODYsIDAsIDQzMjI1LCA0NjAyLCAwLCA3ODE2NywgCi0gICAgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCA3MzkwMiwgCi0gICAgNjk3NDAsIDAsIDAsIDk5NzUsIDEyODAzOSwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCA3NDQ0MSwgCi0gICAgNzg4MTAsIDAsIDAsIDY3OTg3LCAwLCAwLCAwLCA2Nzk4OSwgMCwgMTAwNjUsIDgyMDcsIDAsIDkyNjEzLCAxMjgwMTEsIDAsIAotICAgIDY2MiwgMCwgOTI0NCwgMTk0ODYzLCAwLCAxMTkyNjEsIDk4MzQyOCwgMCwgMCwgMCwgNDE5MjksIDAsIDAsIDY2Njc0LCAKLSAgICA0MTkyNiwgMTIwNDA4LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAwLCAKLSAgICAxMjAzNDEsIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDAsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMCwgOTE3OTQ1LCAKLSAgICAxMjc4MjMsIDExNTgyLCAxMjA3NjEsIDEyMjgxLCAwLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAxMjg1NTcsIAotICAgIDE5NDg2MCwgMTE3NjUsIDY1MjU4LCAxMDM2OSwgMCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgMTUwMCwgMjAzNiwgOTg2LCAKLSAgICAxOTQ4NTksIDY0Mzk0LCA1NzgxLCA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCA3NDAyMSwgNjQzMzQsIAotICAgIDc4MjAzLCAxMjc4MDgsIDAsIDkyMjY2LCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzQxOTEsIDEyMDQxMCwgCi0gICAgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgNjU1MTQsIAotICAgIDAsIDYzOTQwLCAxMjg3MDYsIDY0NTMzLCAxMjAxMjksIDAsIDY3ODQyLCAxMTk5MCwgOTI0MzAsIDYzOTM5LCA0MzM3NSwgCi0gICAgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTgzOTEwLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIAotICAgIDk4MzM2MSwgNzQyOTQsIDk4MzkxNCwgNjkyMzksIDAsIDExOTAyNywgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA5MjU3NCwgCi0gICAgMjc1MSwgMTI2NjIsIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgMCwgMCwgMCwgCi0gICAgNjM5MjAsIDc0MTI4LCAyODU2LCAxMTk5MTAsIDQ3LCA2OTkwOCwgMTI2OTg2LCA2NTg1OCwgMCwgMCwgMCwgNzg5OSwgMCwgCi0gICAgODQxNywgNDM3OTgsIDcwNzIsIDAsIDAsIDQwMzMsIDEyODE2NCwgNDM5OTIsIDAsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIAotICAgIDEyMzIwLCAwLCAwLCAxOTQ1NjMsIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgMCwgMCwgMCwgMCwgMTI5MSwgNzQ4MjgsIAotICAgIDAsIDAsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDAsIDAsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgCi0gICAgMTIwNDMyLCAwLCAwLCAwLCAxMjA0MzMsIDAsIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDAsIDY0NDI2LCAKLSAgICAwLCAxOTQ5NDgsIDAsIDAsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMTk4ODcsIDEyODgxMiwgOTI3MTUsIDAsIAotICAgIDEyNjI0LCAwLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIDU5ODUsIDkxNzkyOCwgCi0gICAgMTE5NTk4LCA5ODIwLCAwLCAxMjE4NywgMCwgMCwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCAwLCAwLCAwLCAwLCAKLSAgICA3NDgyNiwgNjQ3MzMsIDAsIDAsIDM0OTEsIDAsIDAsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDAsIDc0OTIsIDAsIDc0NjA1LCAKLSAgICA5MjQ4MywgNzUxNCwgOTgzMzY3LCAwLCAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCAwLCAwLCA2MzkyNSwgMCwgNzYxMCwgCi0gICAgMjE5LCAwLCAwLCA2OTIsIDQzNTg4LCA3NDQzMywgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAwLCA5Mzk5MSwgCi0gICAgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgMCwgOTIzMDEsIDAsIDg4OTUsIAotICAgIDUyNTMsIDcwMDI1LCA1NDU4LCAwLCAyODY2LCAwLCAxMjc4NjAsIDY1MTExLCA2ODQzMywgNjcwMCwgMTIwNDg0LCAwLCAKLSAgICAxMjA1ODMsIDAsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCAwLCA5NjA0LCA3ODcwMCwgNzQ0MSwgCi0gICAgNjM4MjYsIDY3OTcwLCAxMTg5NDEsIDY0MzkyLCAxOTQ3MzUsIDk4MzY4NywgMjg0NCwgOTgzOTQxLCA0MTk3NCwgMCwgCi0gICAgMTIxMzksIDY3OTcxLCAwLCAwLCAzMzU4LCA2NTI5NSwgMCwgMzEwNCwgMTk0NzM0LCAwLCAxOTQ3NjUsIDk4MzIzMywgCi0gICAgNTMwOCwgMCwgMjkwLCAwLCAwLCAyODYyLCAyNzkyLCAxOTUwODgsIDk4MzA3MCwgMCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIAotICAgIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDAsIDAsIDE4MTQsIDAsIDEwMjQwLCA5MjMzOCwgNzQzMDUsIDAsIDc0NTI4LCA2NTkwMywgCi0gICAgMCwgNDI2NDYsIDc2MDYsIDI1OTEsIDI4MzcsIDQzNDEsIDc3OTU2LCA2NDQ4MiwgMTI3MzM3LCA4MTYzLCA2NTI3MCwgMCwgCi0gICAgNzc5MzIsIDAsIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDExOTg5OCwgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIAotICAgIDkwNzEsIDEyNzMzMywgMCwgMzY1NCwgNzc4OSwgOTYzNywgMCwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCAxMTk4OTksIAotICAgIDY2NTg3LCAxOTUwOTgsIDAsIDkyNDAxLCA5ODM4OTQsIDExMDA2LCAxMjkyNywgNzgwNywgODA3MywgMCwgMTA2MjksIDAsIAotICAgIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI4Nzk3LCAxMjczMjcsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIDQzOTY5LCAKLSAgICA0MzE5MywgMTA3MzcsIDM0NjMsIDk4MzA2NSwgMCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAxMjM0NSwgCi0gICAgNzA0OSwgMTE5OTExLCA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCAwLCAwLCAwLCAxMjgwNDEsIDAsIDkyMzg1LCAxMjYyLCAwLCAKLSAgICA2NTYxLCAxOTkzOSwgMCwgMCwgMTI4NTM1LCAxMTk5MDYsIDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIAotICAgIDY0NjEyLCAxMTk5MSwgMCwgMCwgMCwgMTUwMiwgOTE3NTY4LCAwLCA5MTA3LCAxMjczMTYsIDU3MDIsIDM2NTUsIDY3NjYxLCAKLSAgICA4NDMwLCAwLCA3NDEzMiwgMTIwNzU4LCAwLCA3NDA1NywgOTYwMywgMCwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgCi0gICAgNjgzNzUsIDEwNzk2LCA1MTI5LCAwLCAwLCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgOTI0OTYsIAotICAgIDExNzIxLCAwLCA0Nzk4LCAwLCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIAotICAgIDY4NjEwLCAwLCA2ODYyNiwgODk0LCAzMDAsIDkxNzgxMywgMTIzMDYsIDY2MjM1LCA4MDA0LCAwLCAwLCAyNTYyLCAKLSAgICAxMjY1NTUsIDAsIDQyNTAzLCAwLCAxMTY1MiwgMCwgMCwgMTE5MjQxLCA2NDY5OSwgMTI2NTY5LCA1MDk2LCA1MDk1LCAKLSAgICAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAxMTk2MzgsIDAsIDEzMTU2LCAwLCAxMDgzMiwgNTA5MywgCi0gICAgMCwgNjk4NTIsIDAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgCi0gICAgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIDcxMjk5LCAxMjczNzEsIDQyODgxLCAwLCAKLSAgICA4OTgwLCAxMTg5ODgsIDY3ODYxLCA4ODQ0LCA3MjA5LCAwLCAwLCA0Mjc4LCAwLCAwLCAxOTQ3ODksIDAsIDkwNzQsIDQzNDgsIAotICAgIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAwLCAwLCAwLCA3NDQyMywgNzEzNDUsIDU4NiwgCi0gICAgNzQ0MTQsIDY0MzU5LCAxMjY3LCAxMjgyNjksIDY1NDY4LCAwLCA2NTczMSwgMCwgMTI3MTc5LCAzNjIxLCAxMjA0NzMsIAotICAgIDY2NjY2LCA2NDIxMSwgMCwgNjU2MiwgMTI5MjgsIDAsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMCwgMCwgMTcxNCwgCi0gICAgNzQ0MDYsIDEyNzgzMSwgMCwgOTgzOTIxLCAwLCA2NjIyNSwgMCwgMCwgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAKLSAgICAwLCAxMDI5MSwgMTAzMjMsIDI4MjYsIDAsIDAsIDAsIDQyMDA4LCA5NzA4LCA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCAKLSAgICA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAwLCA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgCi0gICAgMTc2NSwgMCwgMCwgNjU1ODgsIDAsIDAsIDAsIDg0MDEsIDAsIDQyMDE0LCAwLCA3MDMwLCAxOTQ3MDQsIDEwNDc5LCAKLSAgICA2NDk1OSwgMjg1MiwgMCwgMCwgMCwgMCwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDAsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIAotICAgIDEwMTQ3LCAxMjkzNSwgMTI3NTY4LCAxMjY0ODMsIDAsIDAsIDAsIDc4NzU3LCAwLCAwLCAwLCAwLCA5OTk0LCAxMjQ2NywgCi0gICAgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIDcwODQsIDI3NjUsIDAsIDQzMzgyLCAwLCAxMjA3MTksIAotICAgIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMCwgMCwgNzc5ODgsIDI2MywgCi0gICAgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODcsIDk4Mzc0MiwgNzc5ODYsIDAsIDY5MzEsIDY5NzIyLCA2NDM1NSwgCi0gICAgNzE3NywgNzAxMDUsIDAsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIDEyNjU3NSwgNjgwNiwgNjk5MiwgCi0gICAgNDIwMTksIDAsIDQxMjkwLCA5ODM3MTYsIDc1MCwgMCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgNzEzMDAsIDcwMzIsIDU5NTQsIAotICAgIDY0OTMxLCA0MzE0LCAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIDc3OTkzLCA3ODg5MSwgMTMxNjUsIAotICAgIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI4Nzg0LCA0MTM3OCwgMTEwMDgsIDY5MzgsIDcwMDI2LCAKLSAgICA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgMCwgMCwgMCwgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgCi0gICAgNDE0NzAsIDY0ODA1LCAwLCAwLCAxMjgyMTUsIDY0ODAxLCAwLCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgCi0gICAgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIDU5NTIsIDEyODEsIDQzNzQ3LCAwLCAwLCAxMDY3NywgNjA0LCAKLSAgICA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIDM0MjUsIDEyNzQ4OCwgMCwgMjgzNiwgMCwgMCwgOTcwNywgMCwgNDMyMDIsIAotICAgIDAsIDAsIDY1MTk5LCAxNzM4LCA5MTc4MTgsIDEyODE1OCwgMjgzMiwgOTI3MDIsIDk2NzAsIDEyOTM3LCAwLCA2NjM3NCwgCi0gICAgOTE3OTU2LCAwLCAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDk4MzcyMywgNzM3NTIsIDAsIDY0ODcyLCA5MjM0MCwgCi0gICAgMTMzMSwgMCwgMCwgMCwgMTI3MDgsIDAsIDUwOTAsIDUwODksIDEyNzk3NywgMCwgMTE5MTA5LCAwLCAxMjg2ODEsIDMxOSwgCi0gICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMCwgNTA4NywgOTIzMjUsIDc2NDAsIDk2LCA1MDg2LCAwLCA5MjM3OSwgMCwgCi0gICAgNTA4NSwgNjQyODYsIDkyNjY1LCAwLCA0MTQyMiwgMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMCwgMCwgNTAxMSwgMCwgMCwgCi0gICAgMTI2NTg3LCAwLCAxMjcxNjUsIDEyNzI0MSwgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMCwgCi0gICAgMTE4OTIzLCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCA3MTM0MywgNDUzNCwgNDEyNzAsIAotICAgIDEyODg3NiwgMCwgNjU1NzQsIDAsIDkyMjQsIDY5ODUzLCAzNjcxLCA4OTc2LCAxMjY0NzQsIDAsIDQxMjc1LCA2MzcyLCAKLSAgICAxMjgwODQsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDAsIDQxMjczLCA5ODM3MzAsIDAsIDY3MjgsIDAsIDk3MTUsIDAsIAotICAgIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgMTE4OTE5LCA0MiwgMCwgNDM2ODgsIDAsIDAsIDc0NTgsIDAsIDAsIAotICAgIDY1Mzg1LCAxMTk5MDAsIDAsIDExOTU4LCAwLCA5MTc4MjIsIDAsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIAotICAgIDAsIDAsIDk4MzU5NywgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKLSAgICA1NTU4LCA4ODc4LCAxMjgxMzYsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIDY0NTY2LCAwLCA2NDU4NCwgCi0gICAgNzQzNywgNzQ1NCwgMTI1OTQsIDEyODY5MCwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgMCwgMzgwNSwgCi0gICAgMCwgMTk0NTY1LCA0NDAwMSwgNDEwMDgsIDAsIDYzMDcsIDE5OTQ5LCA5ODM3OTAsIDc1NDQsIDk4MzA0NSwgNDM0NjksIDAsIAotICAgIDAsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDExOTExMywgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIAotICAgIDQzNTIzLCA0MTQ0NywgNTU1OSwgMCwgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgMCwgOTAxMSwgOTYzMCwgOTI2MzMsIDAsIAotICAgIDkzOTk4LCA1NTA2LCAwLCAxOTExLCA2NjY1MiwgMCwgOTk2MSwgODg0NSwgNjY2OTgsIDAsIDEwNzkyLCA4ODg5LCAwLCAKLSAgICAyMDk4LCAwLCA2NDc1MSwgMCwgNjY2MjIsIDAsIDAsIDc0MzY0LCAwLCAwLCA5ODM4MDUsIDc0MzY1LCA3NTUyLCAwLCAwLCAKLSAgICA2NTM4NCwgNzIyMywgNDU1OSwgMCwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA2NDUwMSwgMTIxMCwgMTk1MDc3LCAKLSAgICA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgMCwgMCwgMzgsIDg1MzMsIDY2NjY5LCAxMTkxMjQsIDk4MzI5MywgCi0gICAgOTgzNzkyLCAwLCA0MzU3LCAwLCAxMTk4MzcsIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCA0Mjg2MCwgMTE5ODM4LCAKLSAgICAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDAsIDExOTMyNCwgMCwgMTEwMTQsIDEyNzk3MiwgODk0MiwgMTIwMDAsIDY5MjI0LCAKLSAgICA5MjI2NywgMTI4NTM2LCAxMTk3NCwgOTIyMTMsIDQyNzcyLCAxMjc1MTgsIDExNjUwLCA1MDEzLCA5MjY2MywgMTI2NTgzLCAKLSAgICA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgNDM4MTksIDk4Mzc3MCwgMCwgNjQ3MTQsIDAsIDAsIDEyMTYyLCAKLSAgICAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCA2NjIyOCwgMTA1NjMsIDAsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIAotICAgIDAsIDE4MzcsIDAsIDYzOTcyLCA2OTU3LCAwLCAxMjA1NTksIDQ5NTIsIDY1NzE4LCA2NTgyNywgNTUwNCwgNjU3MjAsIAotICAgIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDAsIDEyNzAwNSwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDAsIDgxMDcsIAotICAgIDExOTIzNCwgMTEyNywgNDU1LCAwLCA2Mzk2OCwgMTI3OTI0LCAzNDgzLCAxMTk1OTMsIDE5ODksIDAsIDY5Njc4LCA5MTA0LCAKLSAgICAzNTAzLCA2NTM3NSwgOTI1MDksIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDAsIAotICAgIDc0MDY0LCAwLCAxMDUyMSwgMCwgNDIxNzMsIDk3MDUsIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIAotICAgIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgMTI3ODYyLCAxNDAzLCAxMjg4MzksIDEzNDcsIDk2MzEsIAotICAgIDc0NDQ0LCAwLCAwLCAwLCAwLCA4NjQwLCAwLCAyNTgsIDE2NTQsIDAsIDAsIDAsIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgCi0gICAgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDAsIDYzOTc2LCAwLCA2ODYyMywgMCwgNzQ1ODUsIAotICAgIDQxMzkxLCAwLCA5MTc5MDMsIDM3NiwgNjk4NywgOTIyMSwgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIAotICAgIDQxODY5LCAxMjYxOSwgMCwgMTAxNTQsIDk4MzA0MywgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgCi0gICAgNDU4LCAxMjA2MjAsIDAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCA5ODMxMzMsIAotICAgIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCAKLSAgICA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgOTgzNDMxLCAwLCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCAxMjgxOTIsIAotICAgIDQxMjc3LCA2NDY1OCwgMCwgNjQzODAsIDY2MjUsIDc0MzU0LCAxOTkwNCwgMCwgMCwgMCwgNjUzNzEsIDcwNzgsIDAsIDgzMywgCi0gICAgMCwgNjM2OSwgMCwgMTA5NzksIDQxOTUzLCAwLCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgCi0gICAgOTg0MiwgNjcyMCwgNjU3NDQsIDAsIDk4MzU5MiwgMTI4Mjk1LCAwLCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCAKLSAgICA3NDkzLCA1NTI5MCwgMCwgNDE2MjIsIDAsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCAKLSAgICA1OTkwLCA5MDAsIDAsIDYzOTU3LCAwLCAwLCAzNjEyLCAwLCA2NDM3NiwgOTM5ODcsIDUzODksIDkyNTk3LCAwLCA2NTkzOCwgCi0gICAgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDAsIDAsIDY5NTYsIDQ0MDMsIAotICAgIDE5OTYyLCA2NTU1OSwgMzI5OSwgMCwgOTE3NTY2LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgCi0gICAgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCAwLCA2Mzk1MiwgCi0gICAgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIDExODg5NCwgMCwgNjk3OTYsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCAKLSAgICA2ODQsIDQzNTI1LCAwLCAyODU0LCAxMTk1ODYsIDQ1OTIsIDY1NzU1LCAwLCA5MjI1NiwgMTE5NjMsIDQzNjIwLCAwLCAKLSAgICA3ODI0OSwgMCwgMTI4NTUxLCAxMjg4MDksIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgMTE5MTMxLCAwLCA4NjQ4LCAwLCAKLSAgICA2NzQxLCA0MzA0NywgMCwgMTMxODAsIDEyODUxNywgNDE4LCA5MTc5NzIsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCAKLSAgICA0MTc1MiwgNzQzMzksIDg2NDEsIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCAKLSAgICA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgNDU1NCwgMCwgOTAyMywgMTE2ODUsIDAsIDk5MjgsIDc4NjE3LCAwLCAKLSAgICAxMTQzNywgNDM3NDEsIDkyMTYzLCAxMjA3MDAsIDYzOTY3LCA5ODM0ODMsIDQxMjA2LCAxMjA3MjQsIDkwNDksIDQxMTg1LCAKLSAgICA0MzE2NiwgMCwgMTE2ODAsIDkyNjE5LCAxMTY4NiwgNzg1NDQsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDAsIAotICAgIDkyMTgzLCA2NDUyMywgMTAzNDMsIDEwNDA3LCAwLCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAKLSAgICAxMjA1MCwgNjgyMDEsIDI4NjAsIDAsIDAsIDAsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAwLCA5MjM0MiwgCi0gICAgMCwgODg3NSwgMCwgMCwgOTE3OTkxLCA3NTMxLCAxMjg0NywgMjQxMywgMCwgNzg2MzUsIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCAKLSAgICA0MjU2NCwgMCwgMTU4MiwgOTgzNzE1LCA1NTA4LCAwLCAwLCAwLCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAwLCA3MTczLCA0OTYsIAotICAgIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIDAsIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgCi0gICAgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIDExNTMsIDkyMTczLCA2NDc4OCwgMCwgODA1NCwgOTE3NCwgMTI4NjUyLCAKLSAgICA5MTc5NzYsIDk5NjQsIDc0NDA5LCA0MTYxMSwgNDY0MiwgNjY1NzQsIDExNTU2LCA5MTc5ODIsIDAsIDc4ODU3LCA0MjA4OSwgCi0gICAgNzg4NTUsIDkwMDgsIDAsIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgOTE3OTgxLCA3NzkyNCwgNDI1MTMsIDc3OTI3LCAKLSAgICA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAxMTg5NzQsIDEyNzAwMywgOTgzNzAyLCAwLCAwLCAwLCAxMTMzNSwgNjQwNjksIAotICAgIDQyMDkzLCAzOTIwLCAwLCAwLCAwLCAwLCA0NTgwLCA0MTk2NywgOTgzNzMyLCA2NDM4NCwgOTIxNjcsIDkzOTg0LCAzMDIxLCAKLSAgICA0MjAwNCwgMCwgMCwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAwLCAwLCAwLCAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgCi0gICAgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgMTI3ODgwLCA2ODM5OSwgNDM5OTgsIAotICAgIDExMzYwLCAwLCAwLCAwLCAxMTg4MjYsIDQyMTQ5LCAwLCAwLCAwLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCAwLCAKLSAgICA1NTI0NywgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCAxMTkxMTAsIDAsIDY2NzAzLCA3NzkyMSwgODYxNywgNDE5ODIsIAotICAgIDYwMjUsIDY5MjQyLCA5ODMxNzYsIDAsIDAsIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc2LCAxMDExNywgOTgzMTY5LCAKLSAgICA5MjI5NywgNDE2MzYsIDAsIDAsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAwLCA2NTY2OSwgMTI4MzM5LCA0OTYzLCAwLCAKLSAgICAxMjc1MTcsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCAwLCA0MTk0OCwgMCwgMCwgMCwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAKLSAgICAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyODIxMCwgNDE3NjYsIDExOTExNCwgNjU4ODIsIDc4ODQ5LCAKLSAgICA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCAKLSAgICA3MzgzNSwgNzg4OCwgMCwgMzk4MCwgMCwgNDI2NTYsIDQxNTA3LCA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIAotICAgIDc4NjcsIDY5MjE4LCA2MjM2LCA5ODMxMzQsIDAsIDEwNTA1LCAwLCAxMjg1MSwgMTE4OTQ4LCAzNDgsIDU0NzQsIDEyODg0MywgCi0gICAgMzEwMywgMCwgNDE3NTMsIDEyODU0MCwgMCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgCi0gICAgNDE3NTYsIDQzMzQ3LCA0MjU2MCwgNTM5MSwgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgCi0gICAgMjY5MSwgMCwgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgCi0gICAgNDEyNTEsIDAsIDAsIDM5NzksIDAsIDAsIDc0ODEzLCA5ODM3MzksIDAsIDAsIDAsIDkyNTI0LCA0MTI2NiwgMCwgNjY1NjYsIAotICAgIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgOTU3NCwgMjY2NiwgMCwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgCi0gICAgMTA3MTYsIDAsIDQyODIyLCAwLCA2NDM0LCAwLCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDY5OTMyLCA5MTYsIDc2OSwgCi0gICAgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIAotICAgIDEyNjUzNywgNDQ5NywgMzc1NCwgMTI3MDU2LCAxMjA0MjQsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAxNTk1LCA0MTYxNSwgCi0gICAgMCwgMCwgNzQyNjAsIDAsIDQyODU0LCA0MzIxOSwgMTI4NzA5LCA5ODM0NjAsIDEyMTg1LCAxMjg4NzksIDcwMDcyLCAKLSAgICA2ODM1NSwgNjgzNTcsIDAsIDQyODU2LCA4NjM0LCAwLCA5ODMzOTcsIDQyMDksIDEyMDcwMiwgMCwgNjU4NzksIDQxNTM4LCAKLSAgICA2NTYxMiwgMTI3NTQzLCA2NjksIDU2NzksIDAsIDY5Nzg2LCA5MjU0MCwgMCwgOTgzNDY0LCA1Njc4LCAxMTgyMSwgMCwgCi0gICAgNjcxMSwgNDYwLCAwLCAwLCA5ODM0NjEsIDAsIDEyMDc0NywgMCwgMCwgNzgwNTAsIDExOTAyMiwgMCwgOTgzNDYyLCAwLCAKLSAgICA3NzgyLCA5MDQ0LCA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI4MDc5LCAKLSAgICA1NzkyLCAwLCAwLCA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDAsIDU2ODMsIDk4MzM5MiwgMCwgNzgxMTksIDE1NDksIDAsIDAsIAotICAgIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgMTI4NTEyLCA2OTc2OCwgMTQ0OSwgCi0gICAgMTAyNDEsIDc4MjkwLCAxMjgyMjgsIDAsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDEyODU0OCwgODU4NCwgNjgwMzAsIDU1NjcsIAotICAgIDI3MTcsIDAsIDAsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDk4MzI1NiwgMTI4MDI2LCAwLCA2NTcwOCwgCi0gICAgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgNDMzNzMsIDQyNTM5LCA1OTQyLCA4NDY4LCAKLSAgICAxMjA1NjEsIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgMCwgNjY1OTgsIDAsIDY0NjY0LCAxMDY0NywgCi0gICAgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgNjU3MDEsIDE5MzQsIDQzMDA2LCAxMTk5MDMsIDg4MDIsIDc4NzEwLCAKLSAgICA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgNzg3MTYsIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIAotICAgIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDAsIDExOTYxLCA3ODcyNSwgNzg3MjIsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDAsIAotICAgIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDAsIDcyNTYsIDAsIDAsIAotICAgIDE2NjcsIDQyMTYxLCAwLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgCi0gICAgMzYxMCwgOTgzMTk5LCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAKLSAgICAxMDg3NSwgMTI4NjYyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgOTE3OTU0LCAwLCAKLSAgICAzODc0LCAwLCAwLCA5ODM2MTksIDEyMDMzMSwgMCwgMCwgNjU2MDMsIDAsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIAotICAgIDExOTU3MCwgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDAsIDE0NTUsIDc4NzQ5LCAKLSAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDAsIDQzNTIwLCAKLSAgICA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzg3NjMsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgCi0gICAgMTkwLCAwLCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDk4MzIxMywgOTIyNjEsIDYzNzAsIDAsIDc4MjcsIAotICAgIDY4NDQxLCA2OTY1LCAwLCAwLCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgMCwgNzQzODIsIDczNzgxLCA3OTE4LCA3Mzk4OCwgMCwgCi0gICAgMCwgOTE3ODg0LCAxNzI4LCAwLCA0Mzc2NCwgMTc4LCAxMjk3MiwgOTI2NzksIDAsIDkxNzg4NywgOTI1NjMsIDk4MzM4MSwgCi0gICAgMCwgNzgzMjcsIDEyMDQwNSwgNjU2OTAsIDAsIDAsIDExOTA1NCwgMCwgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgCi0gICAgMCwgMCwgMTMwNjUsIDk5MjMsIDEwODA2LCAwLCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAotICAgIDAsIDAsIDgzMzMsIDAsIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMTUsIDY5OTExLCAxMTkxMCwgCi0gICAgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgMCwgNjUzNDQsIDEyMDUxNywgNDE3NDcsIDAsIDAsIDg2NzcsIDAsIAotICAgIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgMTI3NDcsIDgzMDAsIDk4Mzc1MCwgMCwgNzQ5MSwgCi0gICAgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgCi0gICAgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIAotICAgIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAxNTk2LCAxMjAzODMsIDQxOTk0LCAKLSAgICA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDc4NDAzLCAKLSAgICA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgNDMyNTksIDAsIDYxMDcsIDAsIAotICAgIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCAKLSAgICA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAKLSAgICAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCA5ODMwNzIsIDEyODI0MCwgNDE2MDIsIDAsIDkyMzA4LCA3NDgzMSwgCi0gICAgOTE3OTAxLCAwLCA3Mzc0NywgNjUzOTksIDAsIDY0NTkxLCA0MjQwNSwgMCwgMTIwODIwLCA4NDMsIDExNTQxLCAwLCAKLSAgICA5MTc4OTgsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDAsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgCi0gICAgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDk4MzEwMCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKLSAgICAxMDcwMCwgODgwNSwgMTc0MiwgMCwgOTMzMywgODIwMiwgMTI3NzUwLCAwLCA5ODMxOTcsIDAsIDAsIDczODgyLCA0OTksIAotICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCAwLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwNCwgMCwgMTE5NjcsIAotICAgIDE3NzUsIDAsIDAsIDAsIDAsIDEyODAwOSwgOTQ1OCwgMCwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMCwgMCwgCi0gICAgNDI3ODIsIDAsIDAsIDAsIDEyODMwOSwgNzQ3NzcsIDEyMDY2OSwgOTQxNCwgMTIwMzgyLCA3Mzc4MiwgNzM5NjksIDU2NSwgCi0gICAgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIDAsIDgyNTQsIDAsIDEwOTc1LCAwLCAxMjA2MjUsIDc0NzYzLCAxMDIyLCAKLSAgICA0MTA4LCAzODgwLCA3NDI0NywgMCwgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgMCwgNDMxNDksIDAsIDY1MDMxLCA3OTYxLCAKLSAgICAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIDAsIDEyNDczLCA2NTM0LCAwLCA5OSwgOTgsIDk3LCAxMjA1NzEsIDY3NTg0LCAKLSAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCAwLCA3ODkyLCA5MTc5NjksIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgCi0gICAgNjY1OTksIDY2NzIyLCAwLCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDAsIDAsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIAotICAgIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDcxMSwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgCi0gICAgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgCi0gICAgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNzc5MzEsIDE1MzYsIAotICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyNzE1NywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKLSAgICAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgOTgzMzA3LCA4MTM0LCAKLSAgICAxMjgwMjgsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgMTk1MDk1LCAwLCA4OTIzLCAxNjQ1LCAxMjA1OSwgCi0gICAgNjY1ODUsIDcxMjk3LCAzMTk2LCAwLCAwLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIAotICAgIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMCwgCi0gICAgMTI4NzgxLCA0MTE2OSwgODkzOSwgNDEyNDUsIDAsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDAsIDAsIDAsIAotICAgIDQxMTcyLCA3ODU1LCAwLCAwLCAxMDQ4MCwgMCwgMCwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMDgsIDY0NSwgMTI2NjE2LCAKKyAgICA3ODMxOSwgNjM5NTksIDAsIDk5NDIsIDEzMjMxLCA5ODM1NzgsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCA3ODE0MiwgCisgICAgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgOTIyOTQsIDEwNTA5LCAyNzk1LCAKKyAgICA0OTEwLCAxMjkxOTMsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCAKKyAgICA2NDIzLCA0Mjc3NCwgMCwgMCwgNjg1MjYsIDEyODIzLCAyMzMxLCAxMjc3ODgsIDcwODUsIDYxMzcsIDAsIDc1MjQsIAorICAgIDEyMDcyMSwgOTE3ODA5LCA4MzQ2LCAxMjg0MzgsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDc3OTgyLCA4MjIsIDcwNDEyLCAKKyAgICA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCA4Mjk1NiwgNzg2NTUsIDY2ODgyLCA4Mjk1OSwgNzg0ODQsIDQxMjY1LCAKKyAgICA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDQzOTYyLCAxMTI3OCwgNzg2MzIsIDc0MTExLCAxMjgwOTUsIAorICAgIDEyOTQ2LCAxMjEwNzYsIDcxOTIxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDExMzcwNiwgMTI3OTY3LCA2NTAxOSwgNzQwNzgsIAorICAgIDczOTkwLCA2NTExMSwgOTgzOTYwLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAKKyAgICAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCA3NDA3NiwgODI5NDksIDIzNDIsIDgyOTUxLCAKKyAgICA4Mjk0NCwgNjUyMDYsIDQ4OTQsIDgyOTQ3LCA0ODkwLCAxMjEwNTksIDY0NDMzLCA1ODEsIDQ4OTMsIDQyOTI5LCA2NTcxLCAKKyAgICA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA2NDY1MSwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgCisgICAgNjk3MDIsIDk4MzkzNywgMCwgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCAKKyAgICA0MzU4NywgMTIxMDk4LCAwLCAwLCA3MDQ2MSwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCAKKyAgICA2NTg1NCwgNDg3NSwgNjU4MTEsIDc1MDI0LCAxMjAzODksIDcxODU0LCA5MzQ0LCA4ODI2LCA5MjkxNiwgMTIwMzk1LCAKKyAgICAxMzEwNCwgNjc4MjgsIDExOTk3LCAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCA4MzA5NiwgNjU2OTYsIDcyNDMyLCAxMjE0MTIsIAorICAgIDY2MjE3LCAxMjExOTAsIDgzMzQsIDkyNzU1LCA4MzIwNywgMzQ0OSwgMTIxMjY0LCAxMzEwMCwgNzg0MTQsIDc4NDEzLCAKKyAgICA4MzIxNiwgNjY0MDUsIDcwNDMwLCA4MzA4OSwgODMyMDMsIDEyNzI1MCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAxMDczNCwgCisgICAgMTI3MDE0LCA4MzE5OCwgNjc4MjUsIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCAKKyAgICA4MzUxMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgODMxMDAsIDIzNjEsIAorICAgIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIDc4MDcxLCA5ODM1NzUsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCAKKyAgICA0MDk3NywgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgNzExMzEsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAxMjc4MTYsIAorICAgIDEyNTgyLCA3ODI4MiwgOTgzMDQ4LCA2OTg1NiwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCAKKyAgICA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIDcwNDAxLCA3MDAzOSwgMCwgNzA0NjAsIDQ5MTMsIDcxMDYwLCAxMjg1NjIsIAorICAgIDcxMzMzLCA0MjMyNiwgMTIxMTE5LCAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAKKyAgICAxMjA4MjksIDgzMDgxLCAxMjU4OCwgODgyMSwgNjE1MywgMjg2NywgODMwODUsIDY2MzEyLCA2OTgsIDgzMDc2LCA4MzA4NywgCisgICAgMTAzNTYsIDcwMDE3LCAxMjg1NzAsIDY1MSwgMTI2NDEsIDgzMTM4LCAxMjUwOTgsIDEyMDcxMCwgMTI5MDY0LCA0MTU1MiwgCisgICAgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc0OTA1LCAxMjc1MTYsIDc4NDYxLCA5Mjk2MCwgNjY5MjcsIDY0OTQ1LCAKKyAgICA0NzE2LCA0MzI3NywgMTIwOTMyLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMTIwOTI4LCAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgCisgICAgMTIwNjc2LCA4NzAzLCA1NDYyLCA4MzE5NSwgODMxODUsIDEwMTAxLCAwLCA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIAorICAgIDgzMTg5LCAwLCA2NjI1NCwgMTIwODIxLCA2ODQ5NywgMCwgMTI4NjU0LCAxMTM3OTksIDgzMTU5LCA3NDA1MCwgNDI2NTEsIAorICAgIDEyNzM3MSwgMCwgMCwgODMyMjUsIDgzMjE4LCAxMjI3OCwgNzUwMTEsIDEyODQwNSwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIAorICAgIDEyODk5LCA4MzE1NSwgMCwgMjY5OSwgMTI5MzA0LCA3Mzg0NSwgMjk4NSwgODMxNDksIDY4NjQ4LCA4MzE0NiwgMTIxOTIsIAorICAgIDExOTMxNCwgMCwgNjY0ODksIDk4MjcsIDExOTMxMCwgODYwOSwgMTE5MzA4LCA2NzQyNiwgMTE5MzA2LCAxMTQ4MSwgCisgICAgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDcwODM4LCA2NzQzMSwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNjc0MjgsIDQzNTk2LCAKKyAgICA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDc4MzIxLCA0MDk2NywgCisgICAgNDA5NjQsIDkxNzgyNSwgMTI3MDQsIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCA3OTMwLCAwLCAyMjkyLCAKKyAgICA2ODIxNiwgMTk0ODcxLCAxMjEzOTAsIDUyNDQsIDQxODksIDkyNjk3LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAKKyAgICA3MDQ2MywgOTY4LCAwLCA0Mzc0MywgMCwgODg3MywgMjI3OSwgMTI3MTAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgCisgICAgOTI3NDksIDkyNzUzLCA3NDQ5MCwgMTI3MDk5LCAxMTgzOCwgNzUwMDEsIDAsIDAsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDAsIAorICAgIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgNjk5NTAsIDkxNzk1MCwgNzI1MSwgMCwgMTIwMzgyLCAxMTg4NTAsIAorICAgIDExOTE0MSwgMTI4NDYxLCA2NjAxNSwgNjczMzIsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgCisgICAgOTIyMzEsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAxMjg4NDIsIDAsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIDEwOTc2LCAKKyAgICAwLCA3MTMyNSwgMTI4MzY0LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDkxNzgyMywgOTAxMiwgMTk5NTgsIDc0NDIwLCAKKyAgICA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIDAsIDgzMTkxLCAKKyAgICA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCAxMjc4OTUsIDQ3MTUsIDYxMDEsIDcxMDg5LCA0MTkzNiwgODI5NjcsIDQ4NzksIAorICAgIDQzOTY1LCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDEyNzk2MiwgMTI4MDU5LCAwLCAxMjkxODksIAorICAgIDEyNjYxOCwgMTIwMzkwLCA3NDk1MywgNjU1NjcsIDEyMDYxNCwgMTkyOSwgMTIwOTg0LCAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgCisgICAgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgCisgICAgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCA2Nzc1OCwgMTc2MCwgMjQyMSwgCisgICAgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgCisgICAgNjg4NDksIDc5OTksIDQzOTcxLCAxMTIxNywgMTIxMjI0LCAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCAKKyAgICA0MzgwLCAxMjgyODQsIDgzMDYxLCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjQ0NjgsIDc4NDYyLCAxODEwLCAzNjczLCAKKyAgICA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCAKKyAgICA0MzkxMiwgMTI4Mzg1LCA0NzQ4LCA5MjIyOCwgMTI5MTg1LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgCisgICAgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAorICAgIDkxNzc4NSwgODQxMCwgNDQ1NCwgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAKKyAgICAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMCwgCisgICAgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgCisgICAgOTgzNzYzLCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDE5NDk4MywgNzgwNjIsIAorICAgIDc1MzcsIDEyNDk5MSwgMTEzNzAsIDEyNTA5MywgMTAzMzAsIDc4Nzk4LCAxMDM5NCwgOTIyMzYsIDc0MTk0LCAwLCAKKyAgICAxMjc5MjksIDk3ODAsIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIAorICAgIDExNDE0LCA2ODc4MSwgMjUzMSwgMTMwMzQsIDEyOTE1OSwgMCwgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCAKKyAgICA4MzEyMiwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgCisgICAgMTIxMjUzLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgCisgICAgNDUzNSwgMTIxMjY3LCA0MjcxLCA3ODQxNywgMTI3MDU5LCA2NzY5LCA0MTQxMCwgMTI3MjU3LCA2NDI2MiwgNjc2NywgCisgICAgNDE0MDcsIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTIwODg2LCAxMjY2MDgsIDcwODMwLCAwLCAKKyAgICA4MzIzMiwgMCwgNjc2NzUsIDk4MzY5NCwgODMyMzQsIDEyMTI1NCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDgzMjI5LCAKKyAgICAwLCAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAorICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMCwgMTA3NzUsIDk3OTMsIAorICAgIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgCisgICAgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIAorICAgIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIDU4MzIsIAorICAgIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMjAxMjksIDQzMjg2LCAwLCAKKyAgICAxMjgyMTEsIDQzNzc4LCA3NjU3LCA0MTMwNSwgNzExMzIsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgNzAzMSwgCisgICAgODU5LCAxMjg0ODgsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAxMjg2MzgsIAorICAgIDY1MTk2LCAxMjUwODQsIDY2MDMyLCAxMTQ4OCwgMTIwNDgxLCAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNzY2NywgCisgICAgMTk0NzkyLCAxMTgyMiwgMTI4NTkxLCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAKKyAgICA5ODM0NjEsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDcxMDYxLCA5MjU0NSwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgCisgICAgODMxMTEsIDEyNjQwLCA4MzExMiwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA3MDA4MiwgMzk0MCwgNDE1OTcsIDQzNzU0LCAKKyAgICAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCA5ODM2MDksIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAKKyAgICA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIAorICAgIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIAorICAgIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDAsIDk3MjUsIDk4MzQ5MSwgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgCisgICAgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDIyMDgsIDY4ODQ4LCAKKyAgICA0MzcwMSwgNDMxOTgsIDcxODQsIDkyNTQyLCAxMjg0MjMsIDEyODg3NSwgMTAwODUsIDc0OTc5LCAwLCA2NzM5NCwgNjYzNCwgCisgICAgOTIzNzMsIDEyNTA4NSwgODM0MTMsIDgwNzIsIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIAorICAgIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAxMjY5NzcsIDc0ODkxLCA5OTE0LCAyMjE3LCA5MjMyMywgNzM5NzUsIDYzNjcsIAorICAgIDYzNTEsIDY2Njg4LCA5Mjc0MCwgNjg3NjYsIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgCisgICAgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCAKKyAgICA2NzIzNCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgCisgICAgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAKKyAgICAxMjUxMjQsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIAorICAgIDcwODI0LCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCAKKyAgICA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCAKKyAgICA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDEyMDE0MSwgOTI3NTgsIDE0OTQsIDExMzcxNiwgMTI2NjEzLCAwLCAxMTY5MywgCisgICAgNzEyNTUsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMTEzNzI3LCAwLCAwLCA3ODc3MSwgNjQ1ODIsIDAsIAorICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTIwOTg5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAorICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCAKKyAgICA1NTY5LCAxOTUwMDcsIDQyMzM5LCA5Mjk5NywgNjA2MywgNjc4ODgsIDY5OTgxLCAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCAKKyAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAwLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgMzg3MCwgCisgICAgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgCisgICAgNzQ5NjEsIDc4MzMzLCAxMjAxMTcsIDEyMDExOCwgMTIwMDk5LCA5MjM4NSwgNjUwODcsIDU1NzEsIDM2NzQsIDk3NDAsIAorICAgIDkxMjEsIDU1NjgsIDcxNDY0LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMTM3MDAsIDU4OSwgNzA1MCwgCisgICAgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgCisgICAgOTIzMzEsIDEyMTM1OCwgODU4MywgMTIxMTIzLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAKKyAgICAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDEyOTE3MCwgNjY4NTQsIDgxMjAsIDcwMzExLCAKKyAgICAxOTQ1ODUsIDAsIDcwMzA4LCA0MTA2MywgMTIwNDE3LCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAKKyAgICA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIAorICAgIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgNzQwOTQsIDkxNzg4OCwgMTI1MDYwLCA3Nzk3MCwgCisgICAgOTIxNzEsIDEyNzIxOSwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCAKKyAgICA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgCisgICAgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIAorICAgIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIAorICAgIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgCisgICAgNzgzOTYsIDY4MjQ3LCAyNjk1LCA0MjE3MSwgNzA4MDksIDY4MzM0LCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKKyAgICAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgCisgICAgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDY5OTg4LCA2NDI3LCA0Mjg4NCwgCisgICAgNDExMjMsIDExMTc2LCAwLCA0Mjg3MywgNDExMjYsIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCA5ODM5MzIsIDk4NzMsIAorICAgIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDEyODg0MSwgMTU4OSwgMTI4NjkxLCAKKyAgICAyOTYsIDY3NzEyLCA3ODg1MiwgMTIxNDA5LCA2Nzg0MSwgNzQzNzAsIDEyODUwNCwgODkyMiwgMTI4MDY4LCA0MzgyOSwgCisgICAgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgCisgICAgNzg4MzcsIDExNDczLCA1NDQ5LCAxMjUyLCAxMjczMjgsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKKyAgICA5MTc1NjksIDY4MzIwLCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAorICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDc0NTk4LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIAorICAgIDYxNTAsIDY2MzYsIDQzNzAsIDEyODYxOSwgMTI5MTU4LCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAxOTUwOTQsIDAsIDExMzc0OCwgCisgICAgNDk4NiwgMTIxODksIDEyNzUxMiwgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3MTE3NiwgNjIyMCwgCisgICAgOTAwNCwgNjU1NjEsIDk4Mzg4MSwgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCA4MzQ1MywgNjk2NzksIDY5Njg0LCAKKyAgICA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgNzE4OTcsIDgzNDUxLCAwLCAKKyAgICA5NjM1LCAxMjYwMCwgODg3MSwgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgCisgICAgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAKKyAgICAxMjkxNTUsIDEyODI3OSwgNjczNzcsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCAKKyAgICA2NzM2OSwgNjU1NSwgMTI5MTQ4LCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzI0NiwgNjUzMTIsIAorICAgIDU0NDcsIDAsIDEyODk1LCA2NTU5MywgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgCisgICAgNzQxMTQsIDY1ODIwLCA2MjMyLCA2ODIzMywgMTI2NjI1LCAwLCA0MzYwOCwgMTE5MDkxLCA3ODExOCwgNjUzOCwgNDMzNSwgCisgICAgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgOTgzNjc0LCAKKyAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI4NjY3LCAwLCA3MDc4OSwgNjczMzMsIAorICAgIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCA2NzMzNiwgOTgzODc5LCA5MjMwNywgMCwgMCwgNTEzMywgCisgICAgNjczODIsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgCisgICAgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgCisgICAgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgCisgICAgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIAorICAgIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAKKyAgICA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIAorICAgIDY0Mjg3LCAxMjg0MDYsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDY4MDg4LCAKKyAgICA3NzAzLCA4ODQwLCA4MDM1LCAxMjA3MTEsIDAsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyODQzNywgNzg1ODYsIDEyODI2OCwgCisgICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAxMTIwNiwgMTMxMzYsIDAsIDAsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIAorICAgIDcxMzA4LCAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgCisgICAgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDAsIDEyODE3OSwgMCwgOTUwMSwgMTIwODMyLCAKKyAgICAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDY4NzU5LCAKKyAgICA3MDMxMiwgMTk1MDg1LCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIDEyMTM3MywgMCwgOTgzMzU1LCAxOTkzNSwgCisgICAgMTIwNzMzLCA5MjE2MiwgNjg4MDEsIDEyNzk1NSwgODMxMzMsIDkzMDU3LCA1Mjc1LCAxMjAxOTUsIDEyODYzMiwgODYzNywgCisgICAgNDM2ODIsIDAsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgCisgICAgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MTEsIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIAorICAgIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgCisgICAgNDE2NDksIDc1ODksIDEyODc3NiwgMCwgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAKKyAgICAwLCA5ODM4MTQsIDk0MDU2LCAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIAorICAgIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgCisgICAgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMTE5MjQ1LCAxMjg0OTQsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgCisgICAgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgCisgICAgNzYxMSwgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgCisgICAgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAKKyAgICAxMjAxNjYsIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAKKyAgICAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIAorICAgIDExOTI2MywgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIAorICAgIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIAorICAgIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCAwLCAyMzM3LCAKKyAgICAxNzM1LCA3NDMyNCwgMTExMzQsIDIzNjMsIDEyMTAwOCwgOTI0NDMsIDQzNTYxLCA2NzcwNiwgMTI4MDMyLCA3NDE0NiwgCisgICAgMTg2MCwgNzQ5NSwgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDc4NzUzLCAxMjAzNDcsIDc3MjcsIAorICAgIDAsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgNzY5MCwgCisgICAgMCwgMTI1MzMsIDk4Mzc5NiwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDEyODQ0NCwgNzQ4MDAsIDcxMDUxLCA2Nzk3NCwgCisgICAgMTA4NTksIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDk4MzU4MywgNzQ1OTIsIDg4NTAsIAorICAgIDc0Mjc1LCA5MjM4LCAxMDYxNywgNjgwNjMsIDkxNzkwOSwgOTI2MjUsIDkxNzgwMSwgMTI3OTEsIDAsIDk0MDY5LCAKKyAgICAxMjc4NDMsIDQ0NDcsIDcxMDY1LCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgOTgzNDQ5LCA3NDYzOSwgMTI3OTAsIAorICAgIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDExOTIzOSwgMTc0NCwgMTI3ODksIDEwMzY2LCAxMjMxNywgCisgICAgNDEzMTAsIDEyMDczMCwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAxMjY5MCwgMTI3NzYzLCAwLCA0MzY3MiwgMTI3ODQwLCAKKyAgICA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDk4MzgwOCwgMjc4LCAxMjEyMDQsIDQxNDA1LCA0Mzg3MSwgMCwgMTAwNzcsIAorICAgIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDY3MzM1LCA0MzU1MywgMTExODksIDY3MzM4LCA2NzMzNywgCisgICAgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMTIwMjYzLCAxMjA5NDAsIDk0MDQyLCA4NjQ2LCAxMjgyNTcsIDc3ODI5LCAKKyAgICA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMTEzNzU5LCAxOTQwLCAyODA5LCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIAorICAgIDEwNjc4LCAxMDA0NCwgNjg4NDEsIDEyODEyMSwgOTgzODE2LCA2ODI5MCwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgCisgICAgNjY2MTQsIDAsIDAsIDAsIDEwMjk3LCAwLCAzNzQyLCA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2ODgwNiwgCisgICAgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDk4MzIyMCwgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDkyMTAsIAorICAgIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgNjgzNywgNDEwNjAsIDEyODAxOCwgCisgICAgNDY2OCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCA2NzM0MCwgNjczNDcsIDY1MjU2LCA2NzM0NSwgCisgICAgNjczNDQsIDk4MzM1MiwgOTgzMjY2LCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTI4MjM2LCA2NzM1MiwgCisgICAgNjczNTEsIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA2NzM1MywgNTQ0LCAxMjA0NSwgNjI3OCwgNzQ2MzIsIAorICAgIDU1MTUsIDEyOTE4NiwgMTIwODg0LCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMCwgNTUxNywgNzAxMTYsIDc0MjI1LCAKKyAgICA3NDg0MSwgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMTIwMTk5LCAKKyAgICAxMTg4ODMsIDY3ODc5LCAxMjcxODgsIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIAorICAgIDQxNzY5LCA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIAorICAgIDQyNjc3LCA2Nzg4OSwgOTMwNDAsIDEzMTEsIDEyODk0OSwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIAorICAgIDEyODg4MCwgNjkxNywgNzgxNTUsIDEyMDgzNywgOTQ5LCA3Nzg4MiwgOTE3OTY4LCA2MTQ4LCA4NjA1LCA0MjI1MywgCisgICAgNzgxNzcsIDY2OTA2LCAwLCA0MjcxNSwgNzE0MzIsIDcwMjgyLCA5ODMzNzMsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgCisgICAgNjUzMCwgMTIxNDE0LCA2NTA1NywgNzA0OTMsIDUxNDQsIDEyMjIxLCA0MjcxNiwgNjgyOTksIDQ0MzEsIDQzMzEsIAorICAgIDk4MzcyOSwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMTIxMzYyLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCAKKyAgICA3ODE2NSwgNjYwMzYsIDcwMTY2LCAxMjA5MzcsIDY0MjgsIDQyMjcwLCA5ODM3MjYsIDk4MzU5NiwgNDMwNTksIDQyNjY2LCAKKyAgICA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCAxMjg3NDIsIDk0OTMsIDc0OTkwLCA0MTAxNCwgMTE3OTMsIDE5NDkyMCwgCisgICAgMTIxMTk1LCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgOTgzODU0LCAxMTk2MzIsIDcwNDI3LCA2NTYwLCA3MDE2LCAKKyAgICA3NDI3NCwgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAKKyAgICAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIAorICAgIDQzODQ1LCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDkxNzkzMSwgNDM1NjMsIDkyMjMyLCAxMjg5MTQsIAorICAgIDY2NDEwLCA3MzkyLCA4MjMwLCA5MzY1LCA3MTE5NCwgMTI3MTA5LCA5ODM2MDcsIDY2OTE1LCAxMjg0MDIsIDQwNDEsIDAsIAorICAgIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCA0MzgzNCwgMTE5ODg0LCA0NDAwNCwgNzE0MiwgMTE5ODgxLCAxMjM1MCwgCisgICAgNjU1NTQsIDExOTg4MiwgNzEzMDUsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAKKyAgICAxMjY4NiwgNDM4MzEsIDQyMzc1LCA2NTc4MCwgMTI0OTQ0LCA2NjM1MiwgMTA0NzAsIDcxMTE5LCAxMTA1OSwgMTA3OTEsIAorICAgIDkxNzk0NCwgNDUwLCAxMTkzMjgsIDEyNzI1NCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIAorICAgIDc4Mjg0LCA2NjMzOCwgNjYzOTUsIDkxNzgzMiwgMTgzOSwgMTE4Nzk5LCA5ODMyMTksIDEwOTI3LCAxNzAxLCA5ODM2NjQsIAorICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA4OTUsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgCisgICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgCisgICAgMTI4MDEzLCA2NTgxMiwgMTIwNjc1LCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKKyAgICAxOTQ4MDUsIDEyNzk4MCwgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKKyAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA3ODgyNiwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKKyAgICA0NDg5LCA2ODc1MCwgMTI1MTE2LCAxOTQ3OTMsIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDE5NDc2MSwgODg2NywgCisgICAgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3MTA2NCwgMTQxMCwgNzg3NjMsIDk4MzI1MiwgMTE4ODc4LCA5ODM1NjcsIAorICAgIDEyODcxNSwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKKyAgICAxMjE1MDIsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDEyNzE2NywgNzU5LCA2NTc0OSwgMjA3OSwgNjUyNDgsIAorICAgIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDkzMDYzLCAxMDIyMywgNDIwNjIsIDEyMTI3OSwgMCwgNzQyNDYsIDM2NjgsIDY1NzU0LCAKKyAgICA0MzU2MCwgMTIyMjYsIDY3OTkxLCA2NTE0OSwgMjM0MCwgNDE5NTksIDcxNDYzLCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIAorICAgIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIDAsIAorICAgIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKKyAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTIwMDYxLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgNzE4OTYsIDY4MjIwLCAxMjgxNDMsIAorICAgIDQyODA5LCA0MjgwNywgNzA3OTgsIDY2MjkwLCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCA2Nzk3NiwgCisgICAgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDAsIDI0MTgsIDk4MzA5OCwgMjQxMSwgCisgICAgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAKKyAgICAxMDI2MCwgMTE4OTgwLCA1NTI4NCwgNzg2ODYsIDEyNzE3NywgMTAzODQsIDE5NDc5NCwgMTIxMTQ3LCAxMjkxMTEsIDc3NTMsIAorICAgIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgNzAxOTksIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAwLCA2ODA2NywgCisgICAgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCAKKyAgICA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgOTE3Nzc5LCA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIAorICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIAorICAgIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA2ODgyMywgOTA2NSwgMTI5NjEsIDAsIDEyMDQ1NiwgOTIyNTMsIAorICAgIDEyODIwNCwgMjg5LCAxMjg3MTQsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIAorICAgIDQyNzI0LCA2OTk3NywgNDY4OCwgMTIwNDU0LCAxMjg1MDcsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDM1NjUsIAorICAgIDEyMDE2MywgNjUyOCwgNzgzODcsIDQzMDM1LCA2OTg5OCwgMjE4LCA5ODM4NTAsIDE1MjAsIDAsIDQ3ODYsIDk4MzE2OCwgCisgICAgNDMyMjUsIDQ2MDIsIDkyNDAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDEyMTE1NywgMTIwMTU2LCA0Mzk3OCwgODk4OCwgCisgICAgODg4OCwgOTI3MjQsIDc0ODEyLCA2OTcwOSwgOTgzOTY3LCAxMDY2NiwgMCwgNzM5MDIsIDY5NzQwLCAxMjE0MzYsIDAsIAorICAgIDk5NzUsIDExMzcwNCwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCA3NDQ0MSwgNzg4MTAsIDAsIDAsIAorICAgIDY3OTg3LCAwLCAxMjg4MjgsIDAsIDY3OTg5LCAxMTkwMjksIDEwMDY1LCA4MjA3LCA3MTkwMCwgOTI2MTMsIDEyODAxMSwgCisgICAgMTIxMDI4LCA2NjIsIDEyODcyMCwgOTI0NCwgMTk0ODYzLCA4MzE4MywgMTE5MjYxLCA5ODM0MzAsIDAsIDEyMDkwMSwgCisgICAgOTE3ODM4LCA0MTkyOSwgMCwgNzEwODQsIDY2Njc0LCA0MTkyNiwgNjk5OTQsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAKKyAgICAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIDY0NzUsIDE5NTAwNCwgODM0NzksIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIAorICAgIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgCisgICAgMTIyODEsIDEyNzA0MywgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgMTI1MDE0LCAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgCisgICAgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgCisgICAgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA4MzQ0NCwgCisgICAgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDcxOTA3LCAxMjA0MTAsIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIAorICAgIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIDY1NTE0LCAxMjExNzAsIDYzOTQwLCAxMjEzNjMsIAorICAgIDY0NTMzLCA3MTg4MywgMTIwNDQ2LCA2Nzg0MiwgMTE5OTAsIDkyNDA1LCA2MzkzOSwgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCAKKyAgICA3ODY3MSwgNjQ4MjksIDkzMDIwLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIDk4MzM2MywgNzQyOTQsIDk4MzkxNCwgCisgICAgNjkyMzksIDAsIDY3ODcxLCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDY3NzAxLCAyNzUxLCAxMjY2MiwgMjc2MywgCisgICAgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCA2NjQyNCwgNjM5OTIsIDAsIDYzOTIwLCA3NDEyOCwgCisgICAgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDcxMDUzLCA2NTg1OCwgMTk0ODA2LCAwLCA2NzgyOSwgNzg5OSwgMCwgODQxNywgCisgICAgNDM3OTgsIDcwNzIsIDc0MTk1LCAwLCA0MDMzLCAxMjEyODksIDQzOTkyLCAxMjEwODEsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIAorICAgIDEyMzIwLCA4MzQ4NCwgMTIwODk0LCAxOTQ1NjMsIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgOTMwNjQsIDAsIDAsIAorICAgIDExODc5OCwgMTI5MSwgNzQ4MjgsIDAsIDEyMDQzNSwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMTI4MTk4LCAKKyAgICAxMjEyMTYsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgODI0NiwgMTI4ODc0LCA5MzA2NiwgMCwgMTIwNDMzLCAwLCAKKyAgICA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgOTgzMDkyLCAxOTQ5NDgsIDkxNzg2NiwgCisgICAgOTE3Nzg4LCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCA3MDc4OCwgMTMyMCwgCisgICAgMTIxNDYxLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIDU5ODUsIDkxNzkyOCwgMTE5NTk4LCAKKyAgICA5ODIwLCAxMTk4OTIsIDEyMTg3LCA5ODM4NDEsIDcxMDQxLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDk4MzIyNywgCisgICAgMCwgNzQ4MjIsIDAsIDc0ODI2LCA2NDczMywgOTgzMjE0LCAxMjc4OTgsIDM0OTEsIDY3MTQ2LCAxMjExNDIsIDEyODIxOSwgCisgICAgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAxMjg4NjAsIDc0NjA1LCA5MjQ4MywgNzUxNCwgOTgzMzY5LCAxMjY1ODUsIAorICAgIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDYzOTIxLCAxMjExNzgsIDYzOTI1LCAxMjAxNjEsIDc2MTAsIDIxOSwgCisgICAgMTI4MTU4LCA3ODcyMiwgNjkyLCA0MzU4OCwgNjg0ODUsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgCisgICAgOTM5OTEsIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDY2Mzk2LCA5MjMwMSwgCisgICAgMCwgODg5NSwgNTI1MywgNzAwMjUsIDU0NTgsIDkxNzYyOSwgMjg2NiwgMTI5MDQ1LCAxMjc4NjAsIDExMDk4LCA2ODQzMywgCisgICAgNjcwMCwgMTIwNDg0LCAwLCAxMjA1ODMsIDE5NDgyNCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIAorICAgIDYzOTk3LCA5NjA0LCA3ODcwMCwgNzQ0MSwgNjM4MjYsIDY3OTcwLCA4MzQzNSwgNjQzOTIsIDkyNjI2LCA5ODM2ODcsIAorICAgIDI4NDQsIDc0NjEwLCA0MTk3NCwgNjczOTcsIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDk4Mzg5OSwgMzEwNCwgCisgICAgMTk0NzM0LCAwLCAxMjEzMDQsIDk4MzIzNSwgNTMwOCwgODM0MzQsIDI5MCwgMCwgMTIxMzM4LCAyODYyLCAyNzkyLCAKKyAgICAxOTUwODgsIDkyOTYzLCA3Nzk4NCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDAsIDAsIAorICAgIDE4MTQsIDc4NDY0LCAxMDI0MCwgNjYyODUsIDc0MzA1LCAxMjgzODIsIDc0NTI4LCA2NTkwMywgNzE0NTQsIDQyNjQ2LCAKKyAgICA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA0MzUxMywgNjQ0ODIsIDkyNTI0LCA4MTYzLCA2NTI3MCwgMCwgNzc5MzIsIDAsIAorICAgIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDc1MDM3LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgOTA3MSwgCisgICAgNjgwNTQsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDEyMTEzNiwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCA5MjQxNSwgCisgICAgNjY1ODcsIDEyNDk4NywgMCwgOTI0MDEsIDQzOTI3LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDEyMDk4MCwgMTA2MjksIAorICAgIDEyNzg2OSwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjcyNjcsIDkyMzkxLCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCAKKyAgICA0Mzk2OSwgNDMxOTMsIDEwNzM3LCAzNDYzLCAxMjA5NzUsIDk4MzM1MSwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCAKKyAgICA1ODExLCAxMjM0NSwgNzA0OSwgMTE4ODExLCA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCA5MjkzOSwgMCwgMCwgMTI4MDQxLCAKKyAgICA2NzkwMywgNjc3MzksIDEyNjIsIDEyMDE2NSwgNjU2MSwgMTk5MzksIDEyODY3MywgMCwgMTI3MzE4LCAxMTk5MDYsIAorICAgIDcwMzAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDEyMDY1NCwgMCwgOTI5NDMsIAorICAgIDE1MDIsIDkxNzU2OCwgMTI3OTg4LCA5MTA3LCAxMjczMTYsIDU3MDIsIDM2NTUsIDY3NjYxLCA4NDMwLCAwLCA3MTIyMywgCisgICAgMTIwNzU4LCAwLCA3NDA1NywgOTYwMywgMTI4MDc5LCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIAorICAgIDUxMjksIDAsIDcwODE2LCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgOTI0OTYsIDExNzIxLCA3MDgwNCwgCisgICAgNDc5OCwgMTIxNDY4LCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCAKKyAgICA2ODgyNCwgNjg2MjYsIDg5NCwgMzAwLCAxMjA4NzUsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMTE5NTc0LCAyNTYyLCAKKyAgICA3MDE1NiwgMTIwODU2LCA0MjUwMywgOTI5MDAsIDExNjUyLCA5MTc4MTMsIDkxNzc5OSwgMTE5MjQxLCA2NDY5OSwgCisgICAgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCA3MDg3MywgMCwgCisgICAgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDAsIDY5ODUyLCA3MjQzMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAKKyAgICAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgCisgICAgNzEyOTksIDY2ODE3LCA0Mjg4MSwgMCwgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgCisgICAgMTI4ODA5LCAwLCAxMTkxNjAsIDcwODIxLCA5MDc0LCA0MzQ4LCAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIAorICAgIDE3ODYsIDY2MSwgMTI4MTE2LCAwLCA5MTc5MjUsIDc0NDIzLCA3MTM0NSwgNTg2LCA3NDQxNCwgNjQzNTksIDEyNjcsIAorICAgIDEyODI2OSwgNjU0NjgsIDE5NDk2NiwgNjU3MzEsIDAsIDcyNDA1LCAzNjIxLCA5MjkzMiwgNjY2NjYsIDY0MjExLCAwLCAKKyAgICA2NTYyLCAxMjkyOCwgMTk0OTA0LCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDEyNzk1MywgNzAzNDMsIDE3MTQsIDc0NDA2LCAKKyAgICAxMjA3NTEsIDAsIDEyMTExMywgOTgzOTc2LCA2NjIyNSwgNzAxMTAsIDcwODY3LCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAKKyAgICAxMjA2OTQsIDEyMTAyNSwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMTM4MDksIDEyNjUxMCwgMCwgNDIwMDgsIDk3MDgsIAorICAgIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIAorICAgIDk2ODksIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCAwLCAxMjg2MjIsIDY1NTg4LCA5MjM1MCwgOTgzMjgxLCAwLCAKKyAgICA4NDAxLCA5ODM5MjQsIDQyMDE0LCAxMjczMDcsIDcwMzAsIDEyMDk2OSwgMTA0NzksIDY0OTU5LCAyODUyLCAwLCAxMjEyMjUsIAorICAgIDAsIDcwODE5LCAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMTI2NzA0LCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAxMDE0NywgCisgICAgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAxMjEyODEsIDAsIDAsIDc4NzU3LCAwLCAxMTM4MTUsIDEyMTMwMiwgMCwgOTk5NCwgCisgICAgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCA3ODQ2NiwgNDMzODIsIAorICAgIDAsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAxMjc3OTcsIAorICAgIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg1LCA5ODM3NDIsIDcwMzEzLCAxMjkxNDAsIAorICAgIDY5MzEsIDY5NzIyLCA0MzI2MSwgNzE3NywgNzAxMDUsIDkyNjUyLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAKKyAgICAxMjY1NzUsIDY4MDYsIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzE2LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIAorICAgIDcxMzAwLCA3MDMyLCA1OTU0LCA2NDkzMSwgNDMxNCwgMTI4NjAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIAorICAgIDc3OTkzLCA3MDgxOCwgMTMxNjUsIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI1MDA1LCA0MTM3OCwgCisgICAgMTEwMDgsIDY5MzgsIDcwMDI2LCA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAKKyAgICAzODkyLCA2ODYzMiwgNjk2NDIsIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI2NTExLCA2NDgwMSwgCisgICAgMTI3ODE4LCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIAorICAgIDU5NTIsIDEyODEsIDQzNzQ3LCAwLCAxMjEzOTksIDEwNjc3LCA2MDQsIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA5MjYwMywgCisgICAgMzQyNSwgMTI3NDg4LCAxMjY1MjMsIDI4MzYsIDk4MzczOCwgMCwgOTcwNywgMTEzNzE4LCA0MzIwMiwgMCwgMCwgNjUxOTksIAorICAgIDE3MzgsIDEyODMxMSwgNjc3MDcsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMTEwMSwgMCwgNjYzNzQsIDkxNzk1NiwgMTE5NTUyLCAKKyAgICAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDk4MzA4MSwgNzM3NTIsIDcwMzA1LCA2NDg3MiwgOTIzNDAsIDEzMzEsIDAsIDAsIAorICAgIDEyMTM3NywgMTI3MDgsIDkxNzk1NCwgNTA5MCwgNTA4OSwgMTI3OTc3LCA5MTc5NTMsIDExOTEwOSwgMCwgNzA4MjYsIDMxOSwgCisgICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMCwgNTA4NywgNzQ4ODYsIDc2NDAsIDk2LCA1MDg2LCA5ODM1OTcsIDkyMzc5LCAwLCAKKyAgICA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIDExOTYxNywgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMTE5MDQyLCAKKyAgICAwLCA1MDExLCAwLCA5ODMzMjksIDEyNjU4NywgMCwgMTIwNjk4LCAxMTg4NzQsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIAorICAgIDExODk1MywgOTIyNjIsIDExODg5NSwgNzA3OTksIDcwMDg0LCAwLCAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIAorICAgIDcxMzQzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCA2NzEzOCwgNjU1NzQsIDE5NDk0NywgOTIyNCwgNjcxNDAsIDM2NzEsIAorICAgIDg5NzYsIDY3MTM5LCAwLCA0MTI3NSwgNjM3MiwgODI5OTcsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDkyMzY4LCAKKyAgICA0MTI3MywgMTIxNDQ4LCA3NDUzMSwgNjcyOCwgMCwgOTcxNSwgMTI5Mjk3LCA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIAorICAgIDExODkxOSwgNDIsIDExMTkxLCA0MzY4OCwgNjgyNDMsIDAsIDc0NTgsIDAsIDAsIDY1Mzg1LCA2NzEzNSwgNjcxMzQsIAorICAgIDExOTU4LCAxMTE2NSwgOTE3ODIyLCAxMjUwODcsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDE5NTA2NCwgCisgICAgNjcxMzIsIDY3MTMxLCA0Mjg1OCwgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgMTMxMDksIDAsIDk0NjcsIAorICAgIDU1NTgsIDg4NzgsIDQzODQ0LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgOTgzMTg1LCAKKyAgICA2NDU4NCwgNzQzNywgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAKKyAgICAxMjUwOTIsIDM4MDUsIDAsIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCA3NTQ0LCAKKyAgICAxMjQ5ODksIDQzNDY5LCAxMjEwOTUsIDk4MzczNSwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgNjcxMjQsIDc2MDIsIDY0NzI5LCAKKyAgICAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDY4NDgzLCA4NzA0LCAyMzk3LCA1NTU2LCAKKyAgICAwLCAwLCAwLCA5MDExLCA5NjMwLCAxMTE2NiwgMCwgOTM5OTgsIDU1MDYsIDkyNDk4LCAxOTExLCA2NjY1MiwgNjc2ODYsIAorICAgIDk5NjEsIDg4NDUsIDY2Njk4LCA2ODMyNSwgMTA3OTIsIDg4ODksIDEyMTQwMiwgMjA5OCwgMCwgNjQ3NTEsIDcwMzA5LCAKKyAgICA2NjYyMiwgMTI2NjI2LCAwLCA3NDM2NCwgNjg4MTYsIDEyOTE1MiwgOTgzODA1LCA0MjkwOSwgNzU1MiwgNzAwOTIsIAorICAgIDE5NDU2NywgNjUzODQsIDcyMjMsIDQ1NTksIDkzMDE1LCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDQzNDkwLCAxMjEwLCAKKyAgICAxOTUwNzcsIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCA5ODMyMzMsIDEyNTA0NSwgMzgsIDg1MzMsIDY2NjY5LCAKKyAgICAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIAorICAgIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIDEyMDEyNiwgCisgICAgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgMTE2NTAsIAorICAgIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCA5ODM3NzAsIDAsIAorICAgIDY0NzE0LCA3MTQ3OSwgNzA4MDIsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCA2NjIyOCwgCisgICAgMTA1NjMsIDkyOTU0LCAxMjcxOTYsIDQzNTIyLCAyNDYyLCA5Mjk1NSwgMTgzNywgMTI1MDg2LCA2Mzk3MiwgNjk1NywgMCwgCisgICAgMTEzODIwLCA0OTUyLCA2NTcxOCwgNjQ0MDUsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAxMjgwMjYsIAorICAgIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAwLCAKKyAgICA2Mzk2OCwgMTI3ODM1LCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKKyAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCisgICAgMTI4NjAxLCAxMDUyMSwgNzA3ODYsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKKyAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI1MDUzLCAxMzQ3LCA5NjMxLCAKKyAgICA3NDQ0NCwgOTgzNzUzLCAxMjc5OTcsIDkyOTUxLCA3NDg5NywgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCA5ODM0NzksIAorICAgIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDEyMTA1MywgCisgICAgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIDgzNDY1LCAzNzYsIDY5ODcsIDkyMjEsIAorICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDEyODA2NywgMTAxNTQsIDk4MzA0MywgCisgICAgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAxMjA2MjAsIDgyOTUwLCA2OTc5MSwgCisgICAgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCAKKyAgICA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIAorICAgIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgNzUwNzMsIDQxMjc3LCAKKyAgICA2NDY1OCwgOTgzNDU2LCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIDcxMTkzLCA2NTM3MSwgNzA3OCwgCisgICAgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIDk4MzM3MCwgNDE0MzQsIDYwNjIsIDAsIAorICAgIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCA3MTIwMCwgOTgzNTkyLCAxMjEyMjMsIAorICAgIDEyNjU2NywgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIDkyODkwLCA0MTYyMiwgMCwgMCwgCisgICAgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDExOTYzOCwgMCwgCisgICAgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIAorICAgIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgCisgICAgMTIxMDA1LCAxOTQ5MzksIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCAKKyAgICA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgCisgICAgMzYwMiwgODMyOCwgMTE3NjQsIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIAorICAgIDQzNTI1LCAxMjc5OTYsIDI4NTQsIDgzMjE0LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIAorICAgIDY3MTE3LCA3ODI0OSwgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgCisgICAgNjcxMTYsIDg2NDgsIDEyODM3NywgNjc0MSwgNDMwNDcsIDExOTkwMCwgMTMxODAsIDc4MDc3LCA0MTgsIDEyMDY1MywgCisgICAgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgCisgICAgODMxODYsIDEwOTExLCA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgCisgICAgNDU1NCwgNjY4OTIsIDkwMjMsIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCAKKyAgICA2NzExMywgNjcxMTIsIDYzOTY3LCAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMjEyNzUsIAorICAgIDgxNTksIDkyNjE5LCAxMTY4NiwgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIAorICAgIDY0NTIzLCAxMDM0MywgMTA0MDcsIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAxMjA1MCwgCisgICAgNjgyMDEsIDI4NjAsIDAsIDEyNzkzNCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAxMjE0MDEsIAorICAgIDQzODc1LCA2NzEwMywgODg3NSwgMCwgNjcxMDIsIDY3MTA1LCA3NTMxLCAxMjg0NywgMjQxMywgMTE4OTE3LCA2NzQwNCwgCisgICAgOTYyLCAwLCAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMjc5NzUsIDE1ODIsIDk4MzcxNSwgNTUwOCwgMCwgMTIwOTA0LCAKKyAgICA3NDU4OCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIAorICAgIDc4NjAsIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgCisgICAgODQwNiwgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgCisgICAgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIAorICAgIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIAorICAgIDY4MzM4LCA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAKKyAgICA5MTc4NjksIDAsIDExMTEwLCA4MzI1NSwgNDU4MCwgNDE5NjcsIDgzMjU4LCA2NDM4NCwgODMyNTIsIDgzMjUzLCAzMDIxLCAKKyAgICA0MjAwNCwgOTgzMDk2LCA4MzI0OSwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAorICAgIDEyODE5MywgNjUyMDQsIDAsIDY4MTEzLCA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAKKyAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgODMyMzUsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAorICAgIDY4NTA4LCA5MTc5OTMsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDc0ODg1LCA1NTI0NywgNDExMCwgNjYwMDUsIAorICAgIDY5NTksIDEwOTI5LCA0MjkwNywgMTI4MDgwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCA2MDI1LCA2OTI0MiwgCisgICAgMTIxMDY4LCAxOTQ4NTQsIDEyNTEzOSwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzgsIDEwMTE3LCA5ODMxNjksIAorICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgMTIwNjgxLCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAorICAgIDEyODMzOSwgNDk2MywgMCwgNjg3NjUsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCA5ODM4NDksIDQxOTQ4LCAxMjUwMDMsIDAsIAorICAgIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTIwNjE2LCAKKyAgICA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCAKKyAgICA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIDQxNTA3LCAKKyAgICA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIDY5MjE4LCA2MjM2LCAxMjcxNjIsIDAsIDEwNTA1LCAKKyAgICAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCA3MTEwOSwgMTI4NjA0LCAKKyAgICAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCAKKyAgICA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgNjU1NTMsIDc5MzMsIDU1NjIsIAorICAgIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDEyNzI0MiwgMCwgMzk3OSwgCisgICAgNzEyNDgsIDE5NDg5OSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIDc0NjMzLCA0MTI2NiwgNjg4MzYsIAorICAgIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAKKyAgICAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgCisgICAgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIAorICAgIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAKKyAgICAxNTk1LCA0MTYxNSwgMTIxMDAxLCAwLCA3NDI2MCwgNzQ4NjAsIDQyODU0LCA0MzIxOSwgODMzMTEsIDEyMTEwNywgMTIxODUsIAorICAgIDExMzgxMCwgNzAwNzIsIDY4MzU1LCA2ODM1NywgNjg0MjEsIDQyODU2LCA4NjM0LCAwLCAxMTk5ODgsIDQyMDksIDc1MDU3LCAKKyAgICA2ODgzMiwgNjU4NzksIDQxNTM4LCA2NTYxMiwgNjg4MjIsIDY2OSwgNTY3OSwgNjg4MTMsIDY4ODE1LCA2ODgxMSwgNjg4MTIsIAorICAgIDY4ODA0LCA1Njc4LCAxMTgyMSwgNjg4MDIsIDY3MTEsIDQ2MCwgMTIxNTEzLCAwLCA5ODM0NjMsIDcwMTE0LCAxMjA3NDcsIAorICAgIDE5NDcxOCwgMTIxNTE5LCA3ODA1MCwgMTE5MDIyLCAwLCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgCisgICAgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyNzAxNywgNTc5MiwgMTI2NjQzLCAxMjgzMTksIAorICAgIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgOTgzNzAyLCA1NjgzLCA5MTc4OTYsIDEyMDg5NSwgNzgxMTksIDE1NDksIDAsIAorICAgIDk4MzIyMywgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgCisgICAgNjk3NjgsIDE0NDksIDEwMjQxLCA3ODI5MCwgMTE5NTg3LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCAKKyAgICA4NTg0LCA2ODAzMCwgNTU2NywgMjcxNywgODMxNzksIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAKKyAgICA5MTc2MTEsIDEyMDg4MSwgMCwgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIAorICAgIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIAorICAgIDY4MDUyLCA2NjU5OCwgMTEwNTkyLCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIAorICAgIDY1NzAxLCAxOTM0LCA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgCisgICAgNzg3MTYsIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDAsIDExOTYxLCAKKyAgICA3ODcyNSwgNjY4NTAsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDEyNzg5OSwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgCisgICAgNzEzMDksIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMTI1MDYxLCA3MjU2LCAwLCA2ODA5NCwgMTY2NywgNDIxNjEsIAorICAgIDEyMDk4MSwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIAorICAgIDY4NDIwLCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAxMDg3NSwgCisgICAgMTI1MDUyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDAsIDM4NzQsIDAsIAorICAgIDAsIDk4MzYxOSwgMTIwMzMxLCAxMjg3NzMsIDExMzY2NSwgNjU2MDMsIDgzMjcyLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKKyAgICA5MjA3LCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgODMwNTgsIDE0NTUsIDc4NzQ5LCAKKyAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDc1MDIxLCA0MzUyMCwgCisgICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAorICAgIDE5MCwgMTE5ODk5LCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEyNTEyOCwgCisgICAgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAKKyAgICAxMTg0MSwgNzkxOCwgNzM5ODgsIDAsIDExMzY2OCwgOTE3ODg0LCAxNzI4LCA5ODM3MDUsIDQzNzY0LCAxNzgsIDEyOTcyLCAKKyAgICA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MywgMTEzNjcyLCA3ODMyNywgNzUwNDIsIDY1NjkwLCA4MzgyLCAKKyAgICA3MTEwNywgMTE5MDU0LCAxOTQ5NjgsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIDEyMTMyNywgNzQwNzAsIAorICAgIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAorICAgIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMxNywgCisgICAgNjk5MTEsIDExOTEwLCA5MjU1OSwgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIAorICAgIDQxNzQ3LCAwLCAxMjgxMTAsIDg2NzcsIDAsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgCisgICAgMTI3NDcsIDgzMDAsIDE5NDU2MiwgMTI0OTg0LCA3NDkxLCA4ODU2LCA3MTM2MSwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCAKKyAgICA2NTM4OSwgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDgzMzA4LCA2NTM2LCAKKyAgICAxMjAyMzgsIDcxODkxLCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgCisgICAgNjg0OTQsIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMjg4MDgsIDY4MzgsIDM1NjEsIDExOTg2NywgMCwgMTA2MTMsIAorICAgIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIAorICAgIDc0NTU1LCA2NTk0MCwgNDMyNTksIDEyNjU4NiwgNjEwNywgODM0NTUsIDExOTE3NywgNzc5NDEsIDc4NDAxLCAxMTkyNzAsIAorICAgIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgODcyMSwgMTE5NTcwLCAxMTkyMjcsIDYwOTIsIAorICAgIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgMTIwOTM1LCAwLCAwLCAxMDM4MCwgODczMywgCisgICAgMTAzMTYsIDcwMTIxLCA0MTYwMiwgOTE3NTc1LCA5MjMwOCwgNzQ4MzEsIDkzOTg0LCAwLCA2ODQ4MiwgNjUzOTksIAorICAgIDkxNzgyMCwgNjQ1OTEsIDQyNDA1LCA4MzQ2NiwgMTIwODIwLCA4NDMsIDExNTQxLCAxMjgzMjYsIDcwMzIxLCAyMDY1LCAKKyAgICA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCA5ODMzMDYsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgOTU3OSwgCisgICAgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDgzNDY0LCA0MTI1NywgNDE5MDAsIDg2NzUsIDEwNzAwLCA4ODA1LCAKKyAgICAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAwLCA5ODMxOTcsIDEyNzI1MiwgMCwgNzM4ODIsIDQ5OSwgCisgICAgOTgzMDQ5LCA0MzQ2NywgMCwgNDM4MTgsIDgzNDgyLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwMywgMCwgCisgICAgMTE5NjcsIDE3NzUsIDEyNTAwNiwgNzUwMDksIDExMTE4LCAxMjEzOTEsIDEyODAwOSwgOTQ1OCwgOTI5MzUsIDY0NzAsIAorICAgIDkxODAsIDEyMDM4MCwgNDMxNzYsIDEyODMwNywgMCwgNDI3ODIsIDAsIDEyNDk5OSwgOTgzMTM1LCAxMjgzMDksIDczODQ5LCAKKyAgICAxMjA2NjksIDk0MTQsIDc0NjQ3LCA3Mzc4MiwgNzM5NjksIDU2NSwgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIAorICAgIDE5NDg3MCwgODI1NCwgMCwgMTA5NzUsIDQzNTE4LCAxMjA2MjUsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgCisgICAgMTI3MTUzLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCA5ODMxMTgsIDQzMTQ5LCA3MTA1OSwgNjUwMzEsIDc5NjEsIDE2MzYsIAorICAgIDAsIDY1MDI5LCA2NTAyNCwgMTE5MDk5LCAxMjQ3MywgNjUzNCwgMTIwNjMzLCA5OSwgOTgsIDk3LCA2ODIyNiwgNjc1ODQsIAorICAgIDQwNDksIDc0MTYzLCAxMjcwNjUsIDcwOTAsIDgzMjc0LCA3ODkyLCAxMjcwNjQsIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCAKKyAgICA2NTU2MiwgNjY1OTksIDY2NzIyLCAxOTQ5NTUsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMTI3MDYyLCA3MTE5MSwgCisgICAgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIDU1OTMsIDExOTE0OCwgMTIwNTM0LCA5MjQyNSwgMTAxMDAsIDYwNjEsIAorICAgIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgCisgICAgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIAorICAgIDQxMjEyLCA2NzcxMywgMTUzNiwgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTIxMDkzLCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAKKyAgICAxMjc0NCwgNDc1LCAxMjAzOTQsIDEzMjY2LCAxMjc4MTMsIDEyNzExMSwgNzg4NDIsIDczOTI2LCA2NjI5MSwgMTA2NDUsIAorICAgIDEyMTIsIDY1NDMsIDk4MzMwOSwgODEzNCwgNDI5MzUsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgCisgICAgNzE4OTIsIDEyMDk5NiwgODkyMywgMTY0NSwgMTIwNTksIDY2NTg1LCA3MTI5NywgMzE5NiwgNzI0MDQsIDE5NDgyNywgCisgICAgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAKKyAgICAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDExMzc4NywgNzM4MTksIDQxMTY5LCA4OTM5LCA0MTI0NSwgCisgICAgMTI4Nzc1LCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAxMjA4NjEsIDAsIDAsIDQxMTcyLCA3ODU1LCAwLCAKKyAgICA3MTQ3MiwgMTA0ODAsIDQzMjU4LCAxMjY1OTYsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzEwLCA2NDUsIDEyNjYxNiwgCiAgICAgNzYwOSwgNDA5NzMsIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCAKLSAgICA3Mzk4MiwgMTIwNTE4LCAwLCAxOTUwODYsIDQzMzY5LCAwLCAxMjgxNDAsIDY4NDE1LCA5ODMwOTMsIDQ1MzgsIDEyMDQwNiwgCi0gICAgNDMxNDEsIDAsIDk4MzIxMCwgNzQyMTQsIDczODg2LCAwLCAwLCAxMTg5MDIsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgMCwgCi0gICAgOTgzMTU5LCAxMjk5NywgMCwgMCwgMCwgMCwgMjM4MSwgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDAsIDAsIAotICAgIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDAsIDAsIDAsIAotICAgIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDk4MzQ5MCwgMTE5NTY2LCAwLCAxMjgwOCwgCi0gICAgMTIxODMsIDYxNDUsIDExODk1NSwgNjQ5MjksIDkyNDMzLCAwLCA5ODMxOTMsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCi0gICAgOTE4NywgOTgzNjE0LCAwLCAxMDE5MSwgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgMCwgNzEzNjYsIDY2NjgwLCAKLSAgICAxMjAwOTAsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCA5ODMyOTcsIDAsIDEyMDA4MiwgMTIwMDgxLCAxMjAwODQsIAotICAgIDQxMDI3LCAxMjAwODYsIDAsIDEyMDA4OCwgNzM2NiwgNzAxOSwgMTIwMDczLCAwLCAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgCi0gICAgNjQ2NTcsIDg2NTcsIDEyMDA0OCwgODU5NCwgMTIwMDY4LCAwLCAwLCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAwLCAKLSAgICA0MzE1NCwgNDEwMjksIDAsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgNzg1MSwgMCwgCi0gICAgODM3NSwgODY5OSwgMCwgNDI1MjQsIDAsIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDk4Mzg2NCwgCi0gICAgMCwgODA4OCwgMCwgNzQwMTIsIDkyNTAwLCAwLCA0NDM5LCA2OTI2LCA5ODMwNDcsIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCAKLSAgICA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDAsIDExMjk2LCA5ODMyODMsIDAsIDAsIAotICAgIDY1ODI1LCA5NTc3LCA2ODE5OSwgMCwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCAwLCA3ODA1MywgCi0gICAgNzM4NzIsIDAsIDAsIDEwOTAyLCAwLCAwLCA3ODA3MCwgNzgwNjgsIDEwNDcyLCAyOTk1LCAwLCAwLCA2NDY4MiwgMjM3MSwgCi0gICAgNzgwNjksIDEyMDgwOCwgMjU5LCAxMDA5LCA5MjE3MSwgMjQwMiwgMjMzMywgNjQ0MCwgMTk0NzQxLCAwLCA2NTEyNSwgCi0gICAgNDEyNDQsIDAsIDEzMjcxLCA5MTAzLCAyMjc4LCAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIAotICAgIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCAxOTUwOTIsIDQxNDkyLCAxMjAwNSwgCi0gICAgNjk5MjcsIDAsIDE4OTAsIDEyMDA1NiwgMCwgMCwgMCwgNzI5MywgNzk5MSwgMCwgMTA1NzgsIDAsIDc4MDc2LCAxOTQ3MzgsIAotICAgIDc4MDc3LCA2OTkyOCwgMCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgNDI2NjgsIDY2MzUsIDAsIDYxNjQsIDY1MTcwLCAwLCAwLCAKLSAgICA3Njc2LCAxMTY2NCwgMCwgOTgzNjU4LCA2OTcwNywgMCwgMTE4ODEyLCAwLCAwLCAxMjgwNDUsIDkxNzUsIDExOTI1LCAKLSAgICA3ODA0NSwgOTA4OCwgMCwgNjQ1NDUsIDEzOTYsIDAsIDc1NDYsIDM4NDcsIDEyNzE3NywgMTI3ODM1LCA0OTg1LCAxMzI4OCwgCi0gICAgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCA5ODMwOTYsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCi0gICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAxMjg1ODQsIDEyNjIyLCAwLCAKLSAgICAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDEyNjk4MywgNDI3MzEsIDY3OTcyLCAKLSAgICAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCAKLSAgICA5NTEwLCA2NjIzNywgOTgzMzAyLCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAzNTA1LCA4NzA3LCAKLSAgICA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIDY2ODYsIAotICAgIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDk4MzMwNiwgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgCi0gICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCAwLCAxMDkyNiwgMTE3NTYsIDExNzU3LCAKLSAgICA2NDg3OSwgOTE3OTQ5LCA5MTc5NTAsIDEyNzg0OCwgMTMyMjcsIDAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MTc5NTMsIAotICAgIDQxNDE4LCAwLCA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgOTE3OTYxLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAKLSAgICAxMTkyNTcsIDQyNzQsIDk4MzMwMCwgNDE0ODMsIDAsIDQxMjUwLCAwLCA0MjE3OSwgMCwgNTkzMSwgMTE3NDQsIDY5MjMyLCAKLSAgICAwLCA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDAsIDAsIDQzOTcsIAotICAgIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyODA0OSwgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAKLSAgICAxMDQwMCwgMCwgMTI4ODE4LCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCAwLCA0MjI1NiwgMTE5ODY5LCAxMTk4NjAsIDQxNywgCi0gICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDIyODQsIDY0NDgxLCAKLSAgICA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgMTI2OTk1LCAwLCAwLCAwLCA0MjI3MywgNTgxOSwgMCwgOTE3NTU2LCAwLCAKLSAgICAxMjY2NDMsIDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAxMDI3NCwgNDU1MiwgCi0gICAgMTE5NTc2LCAwLCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgCi0gICAgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgCi0gICAgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAKLSAgICAxMDI5OSwgMCwgMCwgMTIwNjA4LCA2NjMyNiwgOTgzNDQ3LCAxMjc3OTQsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAotICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDk4Mzc4MiwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIDAsIAotICAgIDc4MzQ3LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzc5MjgsIDc0MTQsIDc3OTI5LCA0Mzk4MiwgCi0gICAgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDAsIDg1MiwgMCwgMTIxNjAsIDAsIDEwMjEyLCAKLSAgICA2NTQzNSwgMCwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIDExMDM1LCAxMDQxMSwgCi0gICAgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA3MzkwMCwgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgCi0gICAgNzc5MzcsIDQzNjM5LCA0MzM0MywgNzg3NzcsIDkxNzk5OCwgMTE1MDEsIDQxMTc3LCAxMjg2ODksIDAsIDkxNzc5MiwgMCwgCi0gICAgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCAwLCA0MzMxMywgMCwgNDExNzYsIDAsIDk5NCwgMCwgODQ1MiwgMTI3MTAzLCAKLSAgICA3Mzk2NiwgMCwgMCwgNTkyMSwgMCwgMjU5NywgMCwgNTkyMiwgMTE4OTAzLCA3Nzk0MywgNDE4NiwgOTI1MzEsIDExOTk2NywgCi0gICAgMTI3MTA1LCA2NzE4LCAwLCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTI2NTMwLCA0NDEzLCA5MjE5NiwgCi0gICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCi0gICAgNDMxNjksIDEwMTc2LCAwLCA3NDIsIDAsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIAotICAgIDY3NTYsIDEyODU5MCwgMTI4NjQ2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIAotICAgIDQyNDA3LCA4MTU5LCA3MTgsIDc1NzIsIDk3MywgMCwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgCi0gICAgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDAsIDEyMDIsIDAsIDAsIAotICAgIDY1ODYzLCAwLCAwLCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCAKLSAgICA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDAsIDAsIDU1MjM3LCAxNDMxLCAwLCA2NjU2NSwgMTA4MjEsIDAsIAotICAgIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDAsIDAsIDAsIAotICAgIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgMCwgMTAxNDEsIDAsIAotICAgIDYzNzYxLCA4Nzg1LCA0NDc2LCA3ODEwOSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA3ODEwNSwgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCi0gICAgMCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAwLCAxMjcxNjAsIDAsIDQxNTczLCAwLCAzOTMxLCAxMjAyOTUsIAotICAgIDc0MTQzLCAwLCAwLCAwLCA3ODQ2MCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAwLCA0MTczNSwgCi0gICAgOTQwMTksIDcxNywgMTA3NTQsIDAsIDAsIDEyNzk3OSwgMCwgNjM3NjcsIDAsIDE3ODAsIDY5MzYsIDAsIDkyMjU0LCA4MTksIAotICAgIDEwNjExLCA5Njk0LCAxMjY5NzgsIDAsIDAsIDAsIDAsIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIAotICAgIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MzM4LCA1NzUsIDI2OCwgCi0gICAgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgCi0gICAgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgMTIwNzIxLCA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCAxMjAzNDYsIDAsIAotICAgIDc4MTMyLCA1OTI2LCA3ODEyOCwgNzgxMzAsIDc4MTI2LCA3ODEyNywgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgCi0gICAgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgMCwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgCi0gICAgMTI4MzUwLCA4NTk1LCAwLCA5MTc5NDcsIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgMCwgMTIzODEsIAotICAgIDM0ODgsIDU5MzMsIDEwMDMzLCA3MzczOCwgNjYyNDEsIDY1NTcwLCAwLCAxMjI5NywgMTE5MTUzLCAxOTU1LCAwLCA1MzQ5LCAKLSAgICA0MjUzOCwgMCwgMCwgNzQxMSwgOTQ2MiwgOTE3NTU0LCAwLCAwLCAwLCA0MjczNiwgMCwgNTc1NiwgOTgzMjIxLCA3NjM4LCAKLSAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCA3NDAzNywgMCwgNzM4MzIsIDEyODgyNywgMTIwNjM1LCAKLSAgICAxMjgyMzEsIDc4MzM0LCAwLCA3NjM2LCA2NTE3MSwgOTEyNCwgMCwgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCAwLCAyMDI3LCAKLSAgICA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgMCwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDQyNTEyLCAxMjA0MzEsIAotICAgIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIDEyNzE0OCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIAotICAgIDAsIDQxMjc0LCA1Nzc4LCA2MzAyLCAwLCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA3Nzg4OSwgMTk0OTE0LCA5NDUyLCAwLCAKLSAgICA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIAotICAgIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAKLSAgICAxMjA0MTIsIDQxMjY3LCA0NjQ2LCAxMjA0MjUsIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAotICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgCi0gICAgMTk1MDg5LCA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKLSAgICAxMTkxNDMsIDAsIDAsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIAotICAgIDE5NTEwMSwgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCA5ODM2MjksIDAsIDAsIDEwMjI5LCAKLSAgICAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgOTIyMTEsIDE4MDgsIAotICAgIDc4NDgsIDAsIDgxMDAsIDc4MjI3LCA3ODY2OSwgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIDc4ODcyLCAwLCAKLSAgICAxMTAwMywgOTkwNCwgMCwgMCwgMTIwNjkwLCA5MTQ0LCAxMDkyMSwgMCwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgCi0gICAgNzc4NDEsIDEwMzEzLCAwLCAwLCA2NDMyMCwgMTAyNjUsIDc4Njg2LCAxMDk2MiwgNzg2ODQsIDQzMDA4LCA4OTQ1LCAKLSAgICA3ODY4MywgMCwgNDEsIDE5NTA3MiwgMTc5MiwgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDE5NTA3NSwgOTI1NDQsIDc3OTUxLCAKLSAgICAxMjA2NiwgMCwgMzg1LCA0MTUyLCAyNTg1LCAxMjc4MDQsIDExOTA2OCwgMzEyNiwgMCwgNzQxMzYsIDEwOTU3LCA5ODM3MDMsIAotICAgIDQzMjU4LCAxMTkxMTYsIDEyNzg3MywgMTMxNTcsIDAsIDkxNzU0NCwgMzU3MCwgMCwgNzQ0MywgMCwgNDQwMDYsIDY5OTcsIAotICAgIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCAwLCA2NTIxNiwgMCwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAotICAgIDkxNzg2MiwgNzgzOSwgMTE5OTEzLCA3ODgwNiwgMTE5OTEyLCA5NjkxLCA0NDExLCA3ODgwMiwgMCwgMCwgNDM0NDIsIAotICAgIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDk4Mzg4OSwgMCwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIAotICAgIDAsIDExOTkyMywgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDAsIDExMDU2LCA5ODM1NzQsIDExOTkyNSwgMCwgCi0gICAgNDExNjUsIDExMzI4LCAxMjQ1MCwgMCwgNDExNjYsIDAsIDEyNDU2LCAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIAotICAgIDE5NDcwOSwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTI3NTY5LCAxMjA0ODMsIDk5NjksIAotICAgIDEyMDc2NywgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgMCwgMCwgMCwgNTIwOSwgCi0gICAgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIAotICAgIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDAsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAKLSAgICAxMjc1MDUsIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc4ODczLCA1ODQ0LCA2ODAzMSwgCi0gICAgMTE4ODM4LCAwLCAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgMCwgMCwgMCwgCi0gICAgODg5MiwgMCwgOTIzMzksIDAsIDk4MzA3MywgNTc4MiwgNDIwLCAwLCAwLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAwLCAKLSAgICA2NDgxNCwgNjM3OTYsIDc3OTY1LCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMCwgMCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgCi0gICAgMCwgNDM2NzYsIDAsIDY5NjczLCAwLCAwLCAwLCAzMjksIDc3OTY4LCA5MjcwNywgOTE3NTQ4LCA3Mzk5LCAwLCA0MTE4OCwgCi0gICAgMTMyNDQsIDEyMDQ2NiwgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgCi0gICAgNDMxMjYsIDc3OTcyLCAwLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgMTI4NTQzLCAKLSAgICAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIDAsIDE5NDgyMywgMCwgCi0gICAgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMCwgMTI3Mzg0LCA1MzQ3LCA2OTgwMiwgOTgzNjMyLCA3Mzg2OCwgMTE4OTQ0LCAKLSAgICAxMDU4OCwgMCwgMCwgNjM3NTUsIDAsIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDAsIDcwMDcxLCAxMjg2NzAsIAotICAgIDUzNTEsIDc4Njc1LCA0MzEwNCwgNjUyNDQsIDkxNzg5MiwgNjQ1NDEsIDQyNTE5LCA3NDQ3MiwgMCwgMCwgNzQ3NjUsIAotICAgIDkxNzg4OCwgMTI3NTEwLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgCi0gICAgNjUzNjYsIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIAotICAgIDExODAwLCA2NTM1NSwgNTM0NSwgNjUzNTMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgCi0gICAgMTI2NjM1LCAyNDIzLCA3Nzk1OCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMCwgMCwgMCwgMCwgNjQ2MDUsIDAsIDAsIAotICAgIDAsIDQ5MTYsIDAsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIAotICAgIDczOTgwLCA2OTI0NSwgNzgyNTQsIDkxNzg5MywgMTA2ODQsIDAsIDkxNzg5NiwgMCwgNzk0NiwgMTI1NDEsIDgxODIsIAotICAgIDY3NTg2LCA2OTc4MCwgMCwgMCwgMCwgMCwgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMCwgNjgwMTEsIDg4NDcsIDAsIAotICAgIDY1ODc2LCA1NTM1LCA4MzI5LCA3NDU5MCwgOTgzMjA4LCA5MjYwOSwgMCwgMCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAKLSAgICA5ODM4NTgsIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgCi0gICAgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDAsIDY1MDExLCA0MTA5MCwgMCwgMCwgMTE4OCwgNzI1NCwgCi0gICAgMTEwMCwgMCwgMTI4MzAxLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY5NzkyLCAwLCA2ODAxOSwgMzU3MiwgMTAwMjMsIDQ5NTksIAotICAgIDEzMDc5LCAwLCA5ODMyNzYsIDk3MjksIDAsIDAsIDAsIDQzMzYxLCAwLCAwLCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIAotICAgIDEzMzA0LCAxMjgyOTAsIDEyNzI2MCwgNDE0NTEsIDAsIDExMDk1LCA4MjczLCAxMjc1MzMsIDM0NTEsIDk4MzMwOSwgOTcyLCAKLSAgICA0MTQ1MywgOTgzNDQyLCAwLCA3Mzg4MywgNjgwMjIsIDczOTQ1LCA5ODM3MzUsIDIyODgsIDE5OTU1LCA5NTM4LCAwLCAKLSAgICA2OTgwNywgMCwgMCwgMCwgMCwgMTEzOTYsIDk4MzQ0MCwgMTEwMTksIDAsIDAsIDAsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIAotICAgIDI2MSwgNTkyNywgNzc5MSwgMCwgNzM2MiwgMCwgMTA2OTYsIDAsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgCi0gICAgOTM5OTUsIDI4MiwgMTI2NTEwLCA2NDM3LCA3NDA3OCwgMTI4MDAwLCA5ODAxLCAwLCA3NDE3NywgMCwgMCwgMzQ3NCwgCi0gICAgMTE4Nzg3LCAwLCAxMjA2NTUsIDYwODEsIDAsIDc4ODc0LCA3NDA3NiwgNzg4NzksIDAsIDAsIDAsIDAsIDAsIDg3NTEsIAotICAgIDExNDk5LCAxMjAyNzMsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgOTI2MDgsIDEyMDI3MiwgNjgwMTcsIAotICAgIDk2NDIsIDEwOTEyLCA5NTgsIDAsIDExMzg3LCA3ODg3OCwgNDY2NiwgMCwgNDkxNSwgMCwgNDY2OSwgMCwgNjgwOTksIAotICAgIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCAwLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDAsIDkxNzg3NSwgODY2NCwgCi0gICAgOTY5NywgMzYwNiwgOTE3ODczLCAwLCAwLCA2NDgxNSwgMTA2MywgMTIwMjUwLCAxMjAyNTEsIDk3NzIsIDcyNTUsIDg4ODYsIAotICAgIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCA5MjM4MSwgMTIwMjU1LCAKLSAgICAxMjAyNTYsIDEyMzAxLCAxMjAyNjYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgMTIwMjYzLCAxMjAyNjQsIDEwMTcsIAotICAgIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDAsIDAsIDg2MDgsIDQyNzg5LCAxMjA2MTMsIDEyODcwNCwgMCwgCi0gICAgNzM4NTUsIDExMzA3LCA2NjcwNywgOTE3ODcxLCAxMjc3NTEsIDExNzQ1LCA3OTE5LCAwLCAxNjQxLCAwLCAwLCA4OTY2LCAwLCAKLSAgICAwLCA1OTA4LCAwLCAwLCA2NzQ0LCAxMjgzNTUsIDE2OTksIDY5ODYxLCA3NDg0MywgOTE3OTMzLCAwLCA2MzA2LCAxMDE2OSwgCi0gICAgNzEzMjQsIDExOTI1MSwgMTAwNjgsIDM3NjYsIDIzODksIDEyMDQ1NiwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAKLSAgICAxMzE1MywgMCwgNDIzODYsIDAsIDk0MzYsIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIAotICAgIDEwNTQxLCA1NjIyLCAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCAwLCA0MTQzNSwgNDM1MiwgCi0gICAgOTgzNjEwLCAyNDM1LCAxMjA4MDksIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgCi0gICAgMTIwNDQ3LCAzNzY4LCA2ODE0MiwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgCi0gICAgNDU2NCwgMCwgMCwgNzQyNzEsIDczNzUzLCA4Mzc0LCA5ODMxNTYsIDAsIDY4MjksIDUyMjUsIDEyODgwNywgMTI3Mzg1LCAwLCAKLSAgICAwLCAxMTk2MTUsIDAsIDc0NzkzLCA1NjI2LCA3MzgwNywgMTE3NzEsIDc0MDc1LCAxMjcyMzYsIDEyODAxOSwgNDI2MTQsIAotICAgIDUzNTMsIDU2MjUsIDc0MTc5LCAwLCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgNjk5NDIsIDY5NTIsIAotICAgIDk4MzI3MiwgMTIwNzUyLCA3ODc2MiwgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAxMDQ3MSwgCi0gICAgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAyNDAwLCAKLSAgICA1NjI3LCAxMjAwMTcsIDEyMDAxOCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAwLCAyMDMsIDAsIDAsIDAsIDAsIAotICAgIDc4MzUwLCAwLCA2NDM3OCwgNDIwNTQsIDAsIDAsIDU1NCwgMTE5NjQ5LCAxMTM1OCwgMCwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgCi0gICAgMTI2NDY0LCA3Mzg5MSwgMCwgMCwgNTY5NCwgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDAsIAotICAgIDAsIDY5NzY0LCAwLCAwLCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgMCwgNjk3NzAsIDQzNjUxLCAwLCA2ODExOCwgCi0gICAgMTI4MDI0LCAxMTI5LCAxMjY1NzQsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgOTE3NzcyLCA2NTI1NSwgCi0gICAgMCwgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDQwMCwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIAotICAgIDc3NTYsIDEyMzQyLCAxMjg1NjgsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgODE0NSwgCi0gICAgMTE2OCwgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIDY4MTIxLCAKLSAgICAwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDAsIDEwNDA1LCAwLCA3ODgwMywgMCwgMCwgNDIwNDAsIDczOTE4LCAxMTk2MjcsIAotICAgIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCA3ODg2NywgODIxNCwgMCwgMCwgMCwgCi0gICAgNDE0NTcsIDk4Mzk3MCwgMTE5NTg5LCAxOTY5LCAyMzg0LCA4MDk3LCA5MTc4NjQsIDc0MTMsIDY4MDEyLCA3ODAyOSwgCi0gICAgODc2NiwgMCwgNzgwNzksIDU4NTQsIDEyNzk3NCwgMTA1ODMsIDAsIDExOTk4OSwgMCwgMTA0MTYsIDkxNzg2OSwgMzg3MiwgCi0gICAgOTE3ODY4LCAwLCA4NDI5LCAwLCAxMTg4MDYsIDI4MzgsIDEyODgwMiwgMCwgOTE3ODY2LCAwLCAwLCAwLCA5ODM5NjcsIAotICAgIDk0MDA1LCAxMTA5NiwgMTIwODEzLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDAsIAotICAgIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgCi0gICAgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIAotICAgIDg1NTYsIDAsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAwLCA3ODE4NSwgMCwgMCwgCi0gICAgOTI3MTMsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDkxNzk3OSwgOTEwOSwgNzg4ODIsIDEyODksIDY0NTk5LCAKLSAgICAwLCA2ODAwOSwgMCwgNjU1MDcsIDI0NDcsIDAsIDAsIDEyODA0MiwgMTI2NTQ1LCA5ODMxMzcsIDAsIDYzMzQsIDAsIDAsIAotICAgIDE5OTM3LCAwLCA5MjM2OCwgMCwgNTY3NSwgMjU0LCAwLCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIDY0MDAzLCA1NzE2LCAKLSAgICA0MjMxMiwgMCwgMCwgNjk3MiwgNDI4MjYsIDAsIDQyNDY0LCAxMjA1NjcsIDAsIDkyNjQ1LCA3NDc5NiwgNjQ0MDAsIAotICAgIDY0NjkzLCAwLCA3Nzg2MSwgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIAotICAgIDY0NjcxLCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgCi0gICAgNzQ1ODgsIDEyMDc0OCwgMzE0MCwgMTI4ODU0LCA3OTYwLCA0MzI3MSwgMCwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIAotICAgIDEyNDcyLCAwLCA2OTg2NCwgNzY5OSwgMTIzOTMsIDAsIDAsIDAsIDc0NTE4LCA4MjIzLCAwLCA0MjYxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjgzMDIsIDAsIDEyODA0NiwgNDM0MTksIDAsIDY0NTU0LCAxMDU3NCwgMzg3OCwgMCwgNDIzNTIsIDE3NTIsIAotICAgIDczNzg1LCAwLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgMCwgMCwgNjgwMjEsIDY1OTE5LCAwLCA2Njk1LCA3MjAsIDMyNCwgMCwgCi0gICAgMCwgNDM0MDYsIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCAwLCA2NDQ4OCwgMCwgMCwgNjQwNDEsIAotICAgIDc0Nzg3LCAwLCA3ODg2NSwgOTIyNTgsIDY1NTk3LCAwLCA3ODg2MywgMCwgMTMwMiwgMCwgNzg4NjEsIDExOTEzNCwgMCwgMCwgCi0gICAgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMCwgMzk5NSwgNjgzNjAsIDY1NjA4LCAzNzE0LCA5MjE5MCwgMCwgMCwgCi0gICAgMTA5OTksIDExNzUwLCAwLCA0MzI1MSwgNjg2NjAsIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAKLSAgICAxMTk2NCwgMCwgOTgzMTg1LCAwLCAwLCA2ODQ1NSwgNDI4NjMsIDczODM5LCAwLCAwLCAwLCAwLCAxMjY2MjksIDAsIDQ2OCwgCi0gICAgNjEyLCAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCA5ODMxNjMsIDEyMjgwLCAwLCA1NDAsIAotICAgIDc0NTY0LCAxMTkwMTcsIDAsIDg0MzIsIDAsIDExMDczLCAwLCA2NDMxNiwgMCwgMCwgODIwLCA0MTc0MSwgMCwgMTIwNjY3LCAKLSAgICAwLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIDYyMjYsIDM1MywgMTIzOTYsIDAsIDExOTYxMiwgCi0gICAgNjQ3NDIsIDEyODY4MiwgMTIwMjgyLCAwLCA5ODM0NTAsIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3ODg0NywgMTg4NCwgCi0gICAgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgMCwgMTE5NSwgNjQ4OTgsIDc5MjQsIDAsIDQxMTUxLCAyMDEwLCAwLCAKLSAgICA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCA0MzYwLCAxMjcwMDksIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCAwLCAKLSAgICA0MjUyMSwgODUzOSwgOTgzNzI1LCAwLCAxMTg5ODYsIDAsIDQ3ODgsIDAsIDY4MDIzLCA2NTczNCwgOTgzNDU1LCA0Mzc5MCwgCi0gICAgMCwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCAKLSAgICA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTE5NjE3LCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIAotICAgIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgOTE3ODM3LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCi0gICAgMTI3MDksIDY5ODYsIDkyMzY0LCA2ODAxNSwgMCwgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAKLSAgICAxMDI1NCwgMCwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDAsIDYwNywgMCwgMTE5ODUyLCAxMjg4NDYsIDEyOTIzLCAKLSAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMCwgMTE5ODM0LCA0MDk3NSwgNTg0MCwgCi0gICAgNDI4MzgsIDAsIDQwOTc4LCA5ODM4OTcsIDExOTg0MCwgMCwgOTgzMDcxLCAwLCA2NjQ0NCwgMTA1MzgsIDAsIDI1NTAsIAotICAgIDExOTgzNiwgNjc3OSwgMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCAwLCAwLCA1NjE5LCA2NTgyMiwgMTI2NTY3LCAKLSAgICAxOTQ4ODIsIDc0NTUsIDAsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAxMDcyNywgNTYxNSwgMCwgMTIwNTUxLCA0MjM4MCwgCi0gICAgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgCi0gICAgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIAotICAgIDQ2MDMsIDMwODQsIDk4MzE1NSwgOTI0ODQsIDk4NTgsIDYwMzcsIDAsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNzA0LCAKLSAgICAzMDgzLCAxMDMyMiwgMCwgMCwgMCwgNDEwMzYsIDAsIDAsIDQzMzIxLCA2NTYwNiwgMCwgNDEwMzIsIDQyMzg4LCAwLCAKLSAgICA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAwLCAxOTQ4OTEsIDAsIDQwOTYzLCAKLSAgICA2NDk1MiwgMTA0MDIsIDAsIDAsIDkyMzA0LCAxMDYwMywgMCwgMCwgOTgzMTEzLCAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKLSAgICAxOTQ4OTUsIDc4MzY3LCAxMjczNzcsIDAsIDkzOTYzLCA5MDczLCA0MjU4NSwgNjQzMDIsIDEwNzA0LCA2NTAzMCwgNDc4NywgCi0gICAgMCwgNzQ4MjksIDAsIDY1NDIzLCAwLCAxMjgxMTgsIDk1NzAsIDU1MjYwLCA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAwLCAKLSAgICA5MTc2MjQsIDQzNzQwLCAwLCA0MDk2NiwgOTE3NjIyLCAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDc0MjM3LCAKLSAgICA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgNDE5NTQsIDkxNzYxNywgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCAKLSAgICA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCA0MzMyMCwgMTE5MTU5LCAxMjgxODMsIDE5NDg3NCwgNjQ2OCwgCi0gICAgNDE5NzYsIDk3MjAsIDkxNzYwNiwgMTE3NjcsIDQxOTcwLCAxOTQ1OTYsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAKLSAgICAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIAotICAgIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCA4NjE2LCA0MTQ2NiwgMCwgOTI1ODgsIDExNDUwLCAwLCAKLSAgICAzNjM4LCAxMjM1NCwgMCwgMzIxNiwgMCwgMjM1OCwgOTI2MDYsIDg2MzMsIDAsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgMCwgCi0gICAgMCwgMTE3NTksIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDAsIDQxNDIzLCA4MDc4LCAxMDUwNCwgMTI3NTU4LCA0MTY5OCwgCi0gICAgNDIyMzcsIDAsIDcwMDIsIDk4MzY3OCwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDAsIDAsIDQxMDUwLCA0MTQ3MywgCi0gICAgMTA0NjYsIDEzMDk5LCAwLCAwLCAwLCA2NDM1LCAwLCAxMTM2MiwgMCwgMCwgNjUzODIsIDAsIDQxNDIwLCAwLCAzNjI1LCAKLSAgICA3ODE1NywgNDE0MDksIDAsIDY5NjM5LCAyMDQxLCA5MTc4LCA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCAwLCAwLCAwLCAKLSAgICA0MTQyNCwgOTE3NTk4LCAxMjA1NDYsIDAsIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDAsIDEyMTAyLCAxMTk2NjIsIAotICAgIDQxNDAxLCAwLCAxMjc1MzgsIDAsIDc4MjUxLCAwLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA3NDc1OSwgMCwgMCwgMCwgCi0gICAgOTIzODgsIDY5NjQ5LCAxMDk4OSwgNzQyMzQsIDk4MzE0MCwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgCi0gICAgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAwLCAzOTE3LCAwLCAxMTczMiwgMCwgOTgzMTgwLCA0MTQ0OCwgCi0gICAgNDE0NjEsIDEyODgyMywgMCwgMTI3OTEyLCAwLCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKLSAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCAwLCAwLCA5MDk0LCAwLCAxMTc1OCwgNjg0MjUsIDAsIDEwNjQsIDQyNDY3LCAKLSAgICAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDAsIDc4NjIsIDY0NTUxLCAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCAKLSAgICA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDk4MzI2OSwgMjkxMSwgMCwgNDExNzgsIDU0MjcsIDY0ODIzLCAwLCAwLCAKLSAgICAzNzg3LCA0MTE3NCwgMCwgNDE0NTgsIDAsIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIAotICAgIDY5OTIzLCA2MDc0LCA5NjE4LCAxMjg2NjgsIDk4Mzk1MiwgNDM0NDAsIDAsIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDAsIAotICAgIDEyMDYwMCwgNDE0NTYsIDAsIDE1OTksIDExMzMzLCAwLCA2NzAzLCA4NTEzLCAwLCAxNjEzLCAwLCA2ODQ1NiwgMTI1OTgsIAotICAgIDk4MzE5MSwgMTIwNzM0LCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA3MDAyOSwgCi0gICAgOTkwNSwgMCwgNjU3MzAsIDAsIDEyMDM3NCwgODQyNywgMTIwMzc1LCA1NTI0NiwgMTIwMzc2LCAwLCAxMTQ5NywgNjQ2ODcsIAotICAgIDc0MDA4LCA0MjU5MiwgMzg3MSwgMCwgMTI4MzA1LCA5MTExLCA1NzQxLCAwLCAxOTQ4NDYsIDEyMDM2NiwgMTE5MTExLCAKLSAgICAxMjA3NDUsIDAsIDEyMDM2OCwgMCwgMTE2NDgsIDAsIDE5NDg3MywgMTIwMzY0LCA0MTU4NywgMTIwMzY1LCAwLCA3NDMyMiwgCi0gICAgNDIxMTMsIDAsIDEyNzE1NSwgMTIxNzIsIDAsIDc0NTMwLCA2NTI5OCwgNjU3MjMsIDE5NDg0MCwgNzM4NzEsIDY1NzI0LCAKLSAgICA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAwLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgCi0gICAgOTgzMTEwLCA3ODc1LCAwLCA0MTU5OCwgMzk5MywgMCwgMTU0NSwgNDA5NzEsIDUzNiwgMTI4NTIxLCA0MzAyOSwgMCwgMCwgCi0gICAgNjUxNzMsIDY1Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCA0MTM3NSwgNTQwMiwgMCwgMCwgMTY4NywgMTIwNTAzLCA5MTc4MTcsIAotICAgIDAsIDc4MTk0LCA2NDMyNiwgNDA5NjksIDEwNTI2LCA3ODc1MywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMCwgCi0gICAgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgMCwgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAwLCAKLSAgICAxMDcxMCwgMCwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgMTk1MDkxLCAwLCAxMTk2MzYsIDY3ODU3LCAxMjA2ODcsIAotICAgIDAsIDk4MzA2NiwgMTE3NTUsIDY2MzA1LCAwLCAwLCAxMDkxNywgOTM5NzksIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgCi0gICAgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDAsIDAsIDExNDEzLCAwLCAwLCA1MjgzLCAxNTg2LCA0OTc4LCAwLCAKLSAgICAxOTg0LCAxMTgzMCwgMCwgOTIyOTMsIDQwOTg0LCAxMjgzMDYsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAwLCA0MTY2MywgMCwgCi0gICAgMCwgMCwgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDE5NDU4MCwgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKLSAgICA0MTI4NywgOTI2MTAsIDAsIDAsIDQyMjE5LCAxMjgyNTcsIDAsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAxMjA4MjMsIAotICAgIDk4MzE0NCwgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgMTE0NTEsIAotICAgIDk4MzExMSwgMTI4ODIyLCA0MjYzMSwgMjM1OSwgMCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIAotICAgIDY0MzY4LCA5ODMyMzksIDEyODc5NSwgMCwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCi0gICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMCwgNDI4LCA5NjIwLCAxNDY2LCA3ODExMiwgMTA5ODIsIAotICAgIDExODgzMSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAwLCAwLCAwLCA1ODA0LCAxMTk3NiwgODU1NCwgCi0gICAgOTI3MjEsIDAsIDAsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMCwgMCwgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3ODE0MiwgCi0gICAgNDEyMjUsIDkyNjIxLCA0MjkxNSwgOTgzNjc2LCAxMjg2ODQsIDAsIDQ0MDcsIDAsIDY1ODA5LCAxMTkwNzQsIDE5NDgyMSwgCi0gICAgODQ0OCwgNzE0MSwgNzQxODMsIDAsIDEyNjc1LCAxMjY1OSwgMCwgNDIzNjMsIDEyMDYyNCwgMTk0ODI0LCA1NTI3MywgCi0gICAgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTIwNTAwLCAxMTkxNTgsIAotICAgIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIAotICAgIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgNjQ3OTksIDQyMDQ3LCAwLCAwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgCi0gICAgOTgzNzYwLCA3NDMwMCwgMCwgMTI3MzA4LCA3NDg0MCwgMCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIAotICAgIDk2ODMsIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgMCwgNjYzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MzE3LCA2OTk0NSwgCi0gICAgNjYzMTUsIDIxMDYsIDEyMDIyMiwgMTEyNzMsIDAsIDQzMDA0LCA3NTQxLCAwLCAwLCA5NjEsIDY0MzA3LCA2NjMyNCwgCi0gICAgNjQ5MDYsIDEyODU5MSwgMzEwNiwgNjU5MTcsIDQxMjg0LCAxNjk2LCAwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIAotICAgIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDAsIDAsIDAsIDE5NDgyNiwgOTI2ODgsIDAsIDIzMjIsIDEyMDM3MSwgCi0gICAgOTgzNTg0LCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDAsIDAsIDEyODc5MywgOTgzMzk4LCA0MzIxNiwgCi0gICAgNjA4OSwgNzg2ODIsIDAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIAotICAgIDc0NCwgMCwgMCwgMCwgNjU4MjMsIDEyNzgyNiwgMCwgMzU1MSwgMCwgMCwgNDYyMywgNTUyNjgsIDAsIDQ1OTgsIDk4MzE2MiwgCi0gICAgNjUxMzYsIDEyNzEzNiwgMCwgMCwgMTA4NTEsIDAsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgMTIwNzc4LCAKLSAgICA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDAsIDAsIAotICAgIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDIyMTQsIAotICAgIDg3NTQsIDAsIDEyMDIzNywgMjEzNywgNDMwODEsIDAsIDAsIDkxMzYsIDEyMDI0MCwgNDQwMSwgNDEyODAsIDAsIDg5NzQsIAotICAgIDIzMDgsIDAsIDc0MTQ5LCAwLCAyMzE4LCA5ODMxODMsIDY2MzYxLCA4MTk4LCAwLCA2NDM2MCwgMTI2MDEsIDQyNTM2LCAKLSAgICA2NTI2NiwgMTIwODI3LCA3NDMwNywgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgCi0gICAgMTI2OTg5LCA2Mzg1LCAwLCAwLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTI4MDgzLCAwLCA0MjA1MywgMjA3NSwgNDIwNTcsIAotICAgIDExMDgzLCA0MjA1MiwgMCwgMCwgNjc2NTEsIDAsIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCAwLCAwLCAwLCA3MDA4OCwgCi0gICAgNzQxNDgsIDAsIDAsIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgMCwgOTQwOTYsIDk4Mzk0NiwgCi0gICAgNDExNDgsIDg2ODMsIDc1OTQsIDEyNzUxOSwgMCwgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIAotICAgIDAsIDM1MTIsIDExOTYzMywgOTgzNzA5LCA4MTAzLCAwLCAwLCA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMCwgCi0gICAgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgMCwgMCwgMCwgMCwgMTk5NDIsIDAsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAKLSAgICAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIDk0MDY0LCAwLCAwLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAKLSAgICAwLCAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIDY2Njk3LCAwLCAxMTY4NCwgMCwgCi0gICAgOTI0ODYsIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgMCwgNDIwNDYsIDc4MjQxLCA0MDM2LCAxMjY0ODEsIDAsIAotICAgIDEyODIxMywgMTk0ODYxLCAwLCAxMTk1NCwgOTM5NzgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIDAsIAotICAgIDAsIDEyNzc3MiwgMCwgOTE3NTQyLCAwLCAwLCA2NTM5LCAwLCAwLCAwLCAxOTQ4NTYsIDAsIDEyMDQ5MiwgNDExOTAsIAotICAgIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgMCwgMTI3MTk0LCAwLCAxOTQ4NTQsIDY1NzkyLCAwLCAKLSAgICAxMTg5NjgsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDE5NDg1MCwgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgCi0gICAgMCwgMCwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIDY1MTI2LCAwLCAxMjcwMDQsIDAsIDEyMTg4LCA5ODM2NjgsIAotICAgIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDE5NDg3MSwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCAKLSAgICA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgOTgzMTI1LCAwLCAKLSAgICAwLCAwLCAxMjcxOTUsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDE5NDgxMywgMCwgNTUyODYsIAotICAgIDcwNzMsIDY1ODUwLCAxMjMyNywgOTgzOTQ4LCAxMTkwMjgsIDAsIDAsIDAsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIAotICAgIDk4MzI2MCwgMCwgNzAwNzksIDg0NjEsIDEyODEwMiwgMTIxNTMsIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIAotICAgIDc1NzEsIDEzMDczLCAwLCAwLCA2ODEsIDk4MzI1MiwgNzAzLCAwLCAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCAKLSAgICA5MjI4OCwgNzQ0NDYsIDAsIDkyNTMyLCAwLCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAwLCAwLCA2NTkyOCwgMCwgMCwgNjUwMjEsIAotICAgIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgCi0gICAgOTg5NSwgMTY1NSwgNzg4MTcsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDk4MzEyMiwgMCwgMCwgMCwgMTAwMzksIDAsIAotICAgIDk4Mzk0NSwgNTYyMywgNTcxNywgNTc3NiwgMCwgMCwgMCwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIDAsIDAsIAotICAgIDY3ODQ4LCAwLCAwLCAwLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCAwLCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIAotICAgIDEwNDEyLCA4NzU1LCAwLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDAsIDk4MzcxMSwgODgxMCwgNzQ0OTksIDY4NiwgCi0gICAgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKLSAgICA2NTExOCwgMCwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDAsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIDAsIDY1NDU1LCAKLSAgICAwLCA5MjI0NiwgMCwgMTE5MTI5LCAwLCAxMjg4NiwgMTI3OTIwLCA2NjYyNCwgMCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgCi0gICAgMTAzOTYsIDc0MTM1LCA5ODM0NTMsIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgCi0gICAgNDE0NzUsIDEyODY3MiwgOTM5NzUsIDAsIDExNDc5LCAwLCAxMjAzNTYsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIAotICAgIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgCi0gICAgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIAotICAgIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgMCwgNDI2MjUsIDkxNzYyNywgNzgwODQsIDQxNDQzLCAwLCAxMjgyMDYsIAotICAgIDAsIDE3NzQsIDE1MjMsIDAsIDAsIDQxNDQ1LCA3ODIzNiwgMCwgODU2NywgNDE0NDIsIDM5ODgsIDAsIDc4MjM3LCAKLSAgICAxMTg5MTAsIDAsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMCwgMCwgNDM0NDYsIDAsIDY2NTEzLCAKLSAgICA2MjU2LCAwLCA1NzksIDU1MjE4LCAxMDIwNiwgOTgzMDc1LCA2Mzc1LCAyNjczLCAwLCAxMTgxNCwgMCwgNDQ4OCwgMCwgCi0gICAgMTI3MzM2LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAxMjc4NDksIAotICAgIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMCwgNjE0LCA3ODE5MSwgMTI3MzI1LCAxMjA2MTUsIAotICAgIDAsIDc4MjYyLCAxMjg2NjksIDEyNzMyMywgMCwgNDMxMjEsIDAsIDAsIDkyNTEzLCAxMDUwLCA3NTQ5LCAwLCAwLCA5MzE0LCAKLSAgICAwLCAwLCAxMjA2MTYsIDAsIDEwMDU3LCAwLCAxMjczMTMsIDAsIDY2NTA0LCA5ODMxNzEsIDAsIDIzMDcsIDAsIDY0MzMzLCAKLSAgICAxMjczMTIsIDEyODU0NywgNzM4NzMsIDAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgMCwgMTAzNjAsIDY3NDYsIDAsIAotICAgIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMTI4Mjg1LCA2NjQ0NywgODA0NiwgCi0gICAgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMCwgMTUyMSwgOTg5NiwgOTM5NjUsIDEwNDg3LCAKLSAgICA2OTg3OCwgMTI1MjcsIDAsIDc5NzAsIDAsIDEyODY2MCwgMCwgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAKLSAgICA5ODMyMzUsIDAsIDUyMzcsIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgMjI4MywgCi0gICAgOTgzMjM3LCAwLCAzMDA4LCA0ODk2LCAwLCAxMjA4NywgMCwgNTUyMzEsIDQxMTAzLCAwLCA2NDU2NSwgNDc3MywgMCwgCi0gICAgOTI3MTcsIDcwMDc0LCA0NzcwLCAwLCA5MTc1NjcsIDg3MzEsIDY1Mzc4LCAxMjczNjIsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAKLSAgICAxMjY2MDAsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCAwLCAwLCAwLCAKLSAgICA3NDc3NiwgNDI4MSwgNDc2OCwgMCwgNDE1MzUsIDQwOTksIDkwMTcsIDAsIDAsIDc4MDk1LCAwLCA3ODA5NiwgMCwgMCwgMCwgCi0gICAgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDAsIDEyODAyMSwgMjEzNCwgMCwgMTAxMTYsIDk4NzcsIDkyMzI5LCAwLCAwLCAKLSAgICA3MDk1LCAwLCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIDI0MjcsIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIAotICAgIDE5NTAwMywgOTk2MiwgMCwgMTIyMjMsIDAsIDAsIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCAKLSAgICAwLCA3ODEyMSwgMCwgMCwgNTUyODMsIDAsIDAsIDc0NDM3LCAxMTU2LCA4NzQwLCA5MjQxNSwgMzc4MiwgNjQzMzEsIDAsIAotICAgIDQxMzcwLCAxMDE0LCA4MjYxLCAwLCAwLCAxMDgzNSwgMCwgNjU1MzYsIDAsIDEyMDQ2MywgMCwgNzcwMiwgMTE4ODI0LCAwLCAKLSAgICA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIAotICAgIDU2OTcsIDExODc4OCwgMCwgMTI4NTc2LCAwLCA0MjI1NywgNTY5NiwgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgMCwgCi0gICAgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCA5ODMxNTMsIDE0MjYsIDY4MjE3LCAwLCAKLSAgICA2ODQ0NywgNDIyMDQsIDU1MjcwLCA4NTcxLCAxOTQ5OTEsIDc4MDY3LCAwLCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgCi0gICAgMCwgNDIwMjIsIDAsIDEwMjgxLCAwLCA1NjUwLCA0MzE5NCwgNjQ3MTIsIDEwNzQ0LCAwLCA5OTAsIDU2NDcsIDAsIDczODcsIAotICAgIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgOTgzOTMwLCAzOTQ1LCA5MjU4OSwgMCwgMCwgMCwgMCwgCi0gICAgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDAsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTk0OTEwLCA3ODczMywgMTAyMDUsIAotICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMCwgNzQwNTEsIDk4MzY1NSwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMCwgMCwgMCwgOTkxMSwgCi0gICAgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgNzg0MjcsIDExNDAsIAotICAgIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMCwgMCwgOTE3OTY1LCAxODE1LCAxOTkxMCwgODkwLCAwLCAzMjY3LCAKLSAgICA5MjI5MSwgMCwgMTAxMjMsIDAsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgMCwgCi0gICAgMTI4MzQ3LCAwLCAwLCAwLCAxOTkzOCwgNjU5MDYsIDEyNzgxOSwgMCwgMCwgMzI5OCwgNTM3NSwgMTAxNDIsIDAsIDgyMTUsIAotICAgIDAsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgMCwgNjk4OTksIDAsIDAsIDAsIDQxMzgyLCAwLCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKLSAgICA1MjcsIDAsIDAsIDkyNjEyLCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAyMzI5LCAKLSAgICA0MjI1MCwgMCwgMTI4ODY0LCA2OTY2NywgMTIyNDUsIDE1NjgsIDk0MDMzLCAwLCAwLCAxMjgxMjAsIDAsIDc0MzI4LCAKLSAgICA5MjcwOCwgNzQ3NjksIDAsIDExOTA4NywgOTA2OSwgNjE0NCwgMCwgMCwgNzM4MjIsIDAsIDEyODAxMCwgNjQ5MTcsIAotICAgIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDAsIDY1MDk4LCA2MzY0LCA5NTYsIDAsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIAotICAgIDczNzM0LCAwLCAwLCAwLCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMCwgMCwgOTIyOTQsIAotICAgIDAsIDEwNDQsIDQxMjc2LCAwLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDAsIDAsIDAsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgCi0gICAgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDAsIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgOTgzNDU0LCA3MDk4LCAwLCAKLSAgICAwLCAxMDU3LCA1NjYsIDQyNjk2LCAwLCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCAKLSAgICA5MjUxMCwgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODM1NzgsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIDU1MjUzLCA2MzU3LCAKLSAgICA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDAsIAotICAgIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgMTI2NTg2LCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIDc0MzQ5LCA2NjQ3OSwgMCwgCi0gICAgMCwgMCwgMCwgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCAwLCAxMjEzMCwgCi0gICAgMCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIDEyNzg1MCwgMCwgMCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc2OCwgMCwgCi0gICAgMCwgMTI3Mjc0LCAwLCA2MzU4LCA2MzYxLCAxOTI2LCA2MzU2LCA5MjYyNywgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCAKLSAgICA1ODMwLCAwLCA0MzY4NSwgMCwgMCwgMCwgMCwgODY5MywgNzg2MTEsIDExOTU2NSwgOTgzODA4LCAxMjA0MTMsIDAsIAotICAgIDEyNzI1NywgNjU4OTQsIDAsIDAsIDAsIDk4MzkyMywgMCwgMCwgMTE5MTg3LCAyMTM1LCA3ODg2OCwgMCwgMCwgNzg4NjksIAotICAgIDQyMzEzLCA1NTc5LCA5MjQxMiwgMCwgOTgzMDgyLCA5NDAwMiwgMCwgNTU3OCwgNDE3NzQsIDEyODExNSwgNDIwMjMsIAotICAgIDYyMzQsIDU2NjksIDkyMjc1LCAwLCAwLCAwLCAxMjc1MDYsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgCi0gICAgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgNDI0NjUsIDQxMzMwLCAxOTQ5ODcsIDU3OTUsIDY1NTEyLCAxMTkwMDYsIDY1NzAyLCAKLSAgICAwLCAxMjA4MDEsIDY1MjUxLCAwLCA2NTcxMCwgMCwgMCwgNjc2NzIsIDAsIDUzNzAsIDAsIDI5MzEsIDE2MzgsIDEwOTY2LCAKLSAgICAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCAxMjg4MzAsIDgxNzIsIDQyMDE3LCAwLCAxMDg0NCwgMCwgCi0gICAgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMCwgMCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgMTE5OTk5LCAwLCA3Mzk1LCAwLCAxMDcwLCAKLSAgICA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDAsIDMwMTUsIDEyODAyMywgMTI2NDY1LCA1MjExLCA5ODMwODMsIDY0MDAsIDAsIAotICAgIDE5NDk4MywgNzAwNTQsIDgxODksIDExMjc2LCAwLCAwLCAzNzIsIDEyODgyOSwgMCwgMTE4ODc0LCA0MjEwMiwgNDE1ODUsIAotICAgIDEyODIwMiwgMCwgNDIxMDEsIDI3NiwgNzg0MDIsIDAsIDMzLCA3NDIyNiwgMTI3MzAzLCA5MDA3LCAxMTg3OTYsIDQxNTg4LCAKLSAgICA2NjAzMywgNDI3LCAxMDc2MywgMTE4ODE5LCAwLCAxMjc4ODQsIDAsIDEwMzEsIDYyNTcsIDAsIDQyMTA0LCAwLCA5ODM5ODAsIAotICAgIDIzMjgsIDkyNDA5LCAxMDcxLCA0Mjg5OSwgMCwgNzQ4NDgsIDAsIDk4MzU4MCwgMCwgMTA0NywgMCwgMCwgNjQ3OTAsIDAsIAotICAgIDY5NzIzLCAxMDY1MSwgMCwgMCwgMCwgMCwgOTIyMDYsIDExOTE4MSwgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgCi0gICAgMCwgNTcxMCwgMCwgNjc5MCwgNjUxNjgsIDEzMjE2LCAwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCAKLSAgICA1NzE1LCA2OTY1NCwgMCwgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAwLCA4NjQzLCA3Mzc2OCwgCi0gICAgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNzQ0OTgsIDg5MTAsIDEwNjg5LCA2NDc5LCAwLCAwLCAwLCA3ODYwNywgCi0gICAgOTE5NiwgNjk2NzAsIDAsIDAsIDAsIDAsIDExODkxMSwgMCwgMCwgMCwgMCwgMCwgMTIwMDEwLCAwLCA4NzAxLCA2ODEzMCwgCi0gICAgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMCwgMCwgNjQ5NDYsIAotICAgIDEwOTkyLCAwLCAxMjAwMDksIDAsIDAsIDkzMTgsIDkzOTg2LCAxMzI0OSwgNjU2NzksIDczODA4LCAwLCA2NTQ1NywgCi0gICAgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDE5NDk5NywgMTIwMDA1LCAwLCA5ODM5NjYsIAotICAgIDUwODQsIDAsIDAsIDExODg2MSwgMCwgNzMzLCA5MTc4NzYsIDc4MDE0LCA3ODQzNiwgNzg0MzUsIDQxNjc3LCAwLCA5MjE4LCAKLSAgICAxNzMxLCAwLCA5ODM3NDYsIDAsIDY3OTkwLCAwLCAwLCAwLCAxMjAwMDEsIDEyNzAxOCwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgCi0gICAgNTM1OCwgOTgzNzQ0LCAwLCA5MTc3NjcsIDY0NDI0LCA5ODMyMzEsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMCwgNzgzMTUsIAotICAgIDY4NDMwLCA2Nzk4MCwgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgCi0gICAgMTE1ODAsIDAsIDY0NjAxLCAxMjIwNSwgMCwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgNjc5NzgsIDc0ODQyLCA5ODMyODQsIAotICAgIDk4MzcyMSwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIDEwMTU2LCAxMjExOSwgOTI1NzIsIDAsIDI1NDQsIDY1MDc0LCAKLSAgICAxMTkyMTEsIDAsIDAsIDc4MDExLCAzNTEsIDExOTE0OSwgMCwgMCwgNTUyMjksIDAsIDc0MjY4LCAwLCAwLCAwLCA0MjM3NywgCi0gICAgMCwgMCwgMCwgOTgzOTI0LCAwLCA5MDEzLCA0MDU0LCAwLCA5ODM1NzAsIDk4MzYyOCwgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAKLSAgICAyNTQ5LCA3NDQ2OSwgMCwgMCwgNTU4NCwgODM1OCwgMCwgNjQyMTUsIDkyMjE5LCAxMDkxOSwgMCwgNzk4MCwgMTI2NjAxLCAKLSAgICA5ODM3ODQsIDIyMTgsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMCwgMCwgCi0gICAgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA3NDM5MiwgODEzNSwgNjQ1MCwgMTAwNTUsIAotICAgIDc3OTk2LCAwLCAwLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDAsIDc3OTk0LCAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAKLSAgICAxMjA3OTksIDAsIDAsIDU2NTIsIDEwOTQ1LCAwLCA2NjQ4NiwgMCwgMzY2MSwgNzg2MywgMCwgMCwgMCwgNzQ1MDksIAotICAgIDk4Mzg1MiwgNTY1OSwgMCwgNzg2OTIsIDY2NzI5LCA1NjU1LCA5ODM2MjYsIDQyMTY4LCAwLCAxMDU1LCA5MTc2MjgsIAotICAgIDEyNzc5MiwgNjYzMTAsIDc0MDMwLCAwLCAxMjE0NiwgNzM5NTUsIDczOTU2LCAxMTYxOCwgMCwgMTI2OTkwLCAwLCAxMDI3MiwgCi0gICAgMTAzMDQsIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDk4Mzg4NywgNjQ4NzAsIDAsIDM0NjcsIAotICAgIDk4Mzg5MSwgMCwgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgCi0gICAgNzAwMzYsIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDk4MzcyNiwgMCwgOTQwMjAsIDcwMDU2LCA1NjY2LCA2NTIyNywgNTMxOCwgCi0gICAgNjM5OTQsIDAsIDkwOTEsIDEwNzk4LCAwLCAxMjgxNjYsIDEwMTg2LCAwLCA3NzMyLCA5ODM3MjQsIDY0NTU2LCAwLCAwLCAKLSAgICA1NjY4LCA3NDQ0NSwgMCwgMTI4NjYzLCA1NjcwLCAxMjY2MTAsIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIAotICAgIDE5OTUyLCAxMjA4MDcsIDAsIDEyNzQ5LCA3NDU1MSwgMCwgMCwgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgCi0gICAgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgMCwgMCwgMzU3MSwgMTMyNDcsIDAsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIAotICAgIDY3ODk2LCA0MzE5MiwgMCwgNzgyNjUsIDU1MywgMTIwNjUzLCAwLCAxMjg1NTQsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCAKLSAgICA2NTkxMiwgMCwgMTI3NDYsIDAsIDAsIDExOTkyNCwgNTYzMywgMTE5OTI3LCA5NDEwMSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgCi0gICAgOTQxMDUsIDk1MTIsIDk0MTAzLCAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAwLCA0MTU2NCwgMCwgNTUyMTksIAotICAgIDEyODgzMiwgOTgzODUxLCAwLCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgMCwgCi0gICAgMTI3MjcwLCAwLCAxMTg4ODAsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAwLCAKLSAgICA5ODM4MDksIDY5ODE1LCA1NjM2LCAwLCA1MzI5LCAwLCA1NjM4LCAxMTk5MTgsIDc5NDAsIDY0OTM4LCA0MzIyMywgNDM3NjAsIAotICAgIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNzgyOTEsIDYyMDMsIDQyNDcsIDAsIDExOTIwLCA4Mjc0LCAKLSAgICAwLCAwLCAxNjU3LCA0MTU2MSwgNzgyOTksIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgOTgzNjg1LCAKLSAgICA3ODMwMCwgNDIyMjcsIDAsIDAsIDQxNjM3LCA2Nzg3MiwgMCwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgCi0gICAgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDAsIAotICAgIDEwNTgsIDAsIDY3NjMwLCAwLCAwLCAxMTQ0LCA3ODc1MCwgMCwgNDIyMjgsIDAsIDczODkwLCAxMTg5NzIsIDAsIDI4MDAsIAotICAgIDAsIDU2NDUsIDY0OTY0LCA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgCi0gICAgNjc2MjEsIDExOTkzNCwgOTAwMCwgMCwgMCwgOTI2NzMsIDE4NjUsIDAsIDU2MTMsIDY5OTUwLCAwLCAwLCA1NjEwLCAwLCAwLCAKLSAgICA2NTgyNiwgMjA2OSwgMCwgMTA3ODcsIDQzOTk5LCAyOTk3LCAwLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgCi0gICAgNjUzNzYsIDI0MTIsIDAsIDgxODYsIDk4MDcsIDc0MjY5LCA5MjU0NywgMTMxMzAsIDY1ODc0LCAwLCA1ODA3LCAwLCAKLSAgICAxMDAzMCwgNTMwNiwgMTIzNjQsIDEyODA2NCwgMCwgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMCwgMCwgMCwgMTE3MDYsIAotICAgIDk3MTAsIDAsIDAsIDAsIDQxMywgNjU2MjMsIDcxMTgsIDAsIDkxMzMsIDc0MjYyLCAwLCAxMDQyLCAwLCA2NDc3OSwgCi0gICAgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIDQ5ODQsIDAsIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgOTgzODk5LCAKLSAgICAxMzA4LCAwLCAyNTM0LCA4MTAsIDAsIDAsIDAsIDAsIDAsIDE5MTcsIDMwMDAsIDAsIDAsIDEyMDczOSwgMjM2NCwgOTI0NDMsIAotICAgIDc0NDcwLCA2NjYxOCwgNjU2ODAsIDEyMDc3OSwgMTAwMjcsIDAsIDEyODE1NCwgMTIzMzcsIDEyMDcyMiwgMTI3MzY4LCAKLSAgICA5ODMxNjcsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MTgyLCA2MzYzLCAyNzQ4LCAwLCAwLCA2NTA0MSwgCi0gICAgOTIyNzYsIDQ0MDExLCA4NzMwLCA5ODMwNjcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgMCwgNzI3NSwgNzgzMDQsIAotICAgIDkzNSwgMCwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgMTI4ODM1LCA3ODMwOCwgCi0gICAgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCAwLCAxOTQ5OTgsIDAsIDEwNjczLCAKLSAgICAxMTkyMTcsIDcyNDgsIDAsIDEyODM0NiwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIDE2NDksIDAsIDk2NCwgMCwgMTI3ODc2LCAKLSAgICA3ODIyNiwgMTI4Nzc1LCAxMjc1MTIsIDAsIDAsIDAsIDAsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIAotICAgIDY2NTc1LCA0NTQyLCA2OTkwOSwgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgCi0gICAgOTgzOTE4LCAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgOTI3MjQsIDY0NzgsIAotICAgIDk4OTgsIDQzNjczLCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgOTgzNzk1LCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCAKLSAgICA0NDA5LCAwLCAwLCA2NDc5OCwgMCwgNTM0NiwgMCwgOTQwNDcsIDYyMzcsIDQ4NzQsIDAsIDkxNzYsIDAsIDEyNjU1MywgCi0gICAgNjUyMzEsIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMCwgCi0gICAgMCwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDAsIDY4MTYzLCA1MzQwLCAwLCAxMjc4MjAsIAotICAgIDQzNjM1LCA3MzkyOCwgMTI3NTI5LCAwLCAwLCAwLCAxMjg1MTAsIDY1NDgyLCAwLCA5MTQyLCAwLCAxMjY0NzAsIDAsIAotICAgIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDAsIDEyODE3NiwgNTI5LCA4NTgwLCAwLCAwLCAxMDU4NiwgCi0gICAgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAwLCAwLCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgMCwgOTgzOTM4LCAKLSAgICAxMTM3NiwgNzQzNzksIDEwNzIxLCA2NzY2NCwgMzQzOCwgNDIwOTcsIDEyNzI2NywgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIAotICAgIDc4MzA1LCAxMjAxODMsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIAotICAgIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAKLSAgICAxMjc5MzcsIDAsIDUxNjEsIDEwNTcyLCAwLCAwLCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyNzU1MiwgMCwgMTI2NjA1LCAKLSAgICAxMTk0OCwgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIAotICAgIDEwMDMxLCAwLCA5ODcwLCA2ODY0NSwgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAKLSAgICAwLCA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgMCwgMCwgOTgzOTM2LCA3ODE2OSwgNjYxOTksIDAsIDM2MDksIAotICAgIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgMCwgMCwgNDI3MzIsIAotICAgIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIAotICAgIDYzNDgsIDI0MywgMTMyMDAsIDk4MzgxMywgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIAotICAgIDQzNjg3LCAwLCAwLCA0Mjg1LCA2NjE5NSwgMCwgNDIzMCwgMCwgNzM2NywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgCi0gICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgCi0gICAgNjU1ODksIDEyODI3NywgMjYwMywgMCwgMCwgMCwgNzAwNDcsIDAsIDYwMjIsIDAsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgCi0gICAgMCwgNjY0NTMsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDAsIAotICAgIDIwNzQsIDAsIDc4MjgzLCAwLCAxMjQ1MywgMTI4MTI4LCA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCAKLSAgICA3ODI2OCwgMCwgMCwgMCwgNzgyNzksIDAsIDAsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAKLSAgICAxMjQ0OSwgMTI4NTUyLCAwLCAwLCA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMCwgMTE5MjQ5LCAwLCAxMTU5NSwgNjQ4OTMsIAotICAgIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCA5ODMxNDcsIAotICAgIDE5OTAsIDY2NTg5LCA0NDk4LCA3ODY2NCwgMTE5MTgzLCAwLCAwLCA2OTczNCwgMjk2MCwgNzM3NzksIDAsIDg5NjksIAotICAgIDEyODExNywgNDM0MjQsIDEyNzA1OSwgMCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAwLCAwLCAwLCA0OTUzLCAKLSAgICA5ODM2ODIsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgOTgzMjQ2LCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgCi0gICAgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIAotICAgIDcxMzE3LCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIAotICAgIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCA3MDA2OCwgMCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAwLCAwLCAKLSAgICAwLCAwLCA5MDgsIDAsIDg2MTEsIDAsIDAsIDEyNzU1NSwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCi0gICAgNDE1ODYsIDEwNTI3LCAwLCA5MTc4NDgsIDM4NDgsIDc4NzM5LCAxOTQ5MzcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAotICAgIDk4MzI1OSwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjU3LCAxMjcxNjMsIDY4MTkzLCAzNDcsIAotICAgIDAsIDAsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA3ODc2OSwgMTIxNDMsIAotICAgIDY5NjU3LCA3ODUxMiwgMCwgNDM0NDEsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAKLSAgICAwLCA5ODM2OTUsIDczOTM4LCAwLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIDc4NTM0LCA5NTE4LCAKLSAgICA2NjA5LCAxMDQzNCwgMCwgMTEzMTksIDEwOTcsIDAsIDkxNzg1MCwgNDE3MzAsIDk4MzIxNCwgMCwgNzM4NDcsIDc4NzYxLCAKLSAgICA2NTE3MiwgNDE3MjgsIDQxNzIxLCAwLCAwLCAwLCA0MTIwMywgOTE3NjEyLCAxMzExMCwgNDE3MjYsIDk4Mzg1NSwgMCwgCi0gICAgMTAwMCwgNjk2NTEsIDAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMCwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgCi0gICAgMCwgNjgyMTMsIDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKLSAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIDAsIDAsIAotICAgIDY0Mzk4LCAwLCAxMTk5NzAsIDEyMzExLCA5ODM3MjcsIDc4Nzk2LCA3ODc5OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgCi0gICAgNzg3OTMsIDY2NjcwLCAwLCAwLCAxMjI5MCwgMTIwMTY5LCAwLCAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAKLSAgICAwLCA5NjI3LCA3ODUzNiwgNzg1NDIsIDc4NTM1LCA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgCi0gICAgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIAotICAgIDQwMzEsIDQyNzk0LCAxMjAwMDMsIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAKLSAgICAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgCi0gICAgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAKLSAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAwLCAwLCA5NjYwLCA5ODMyODAsIDEzMDEyLCA0NTcxLCAwLCAwLCAxMjAxNjQsIAotICAgIDEyMDc4LCAyOTcwLCAwLCAxMDkzMywgMCwgNzc4NzAsIDAsIDEyNzAxNSwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgCi0gICAgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIAotICAgIDg0NjAsIDEyNzA1MywgODQ3NiwgOTgzOTc1LCAwLCAwLCAwLCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAKLSAgICAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDAsIDczODY0LCA5ODMyMDMsIDQxNzM0LCAKLSAgICA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCA5MjU0NiwgCi0gICAgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAwLCA3Mzk2MywgCi0gICAgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgCi0gICAgNzM5MzIsIDU0OTgsIDczOTQyLCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAwLCAwLCAwLCAwLCAKLSAgICA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCA5ODM2OTksIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgOTIyMjMsIAotICAgIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCA3MDA2MywgMjk1MiwgCi0gICAgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgOTQwNDMsIDY2NywgMTIzMzIsIDYzODg3LCA2MDg2LCAKLSAgICA0MTcyMiwgMCwgNTE3MiwgMCwgOTgzMjc4LCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgCi0gICAgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIDQxNzIzLCAKLSAgICA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDEyNjYzNiwgMCwgNDIzNDgsIDczODkyLCAKLSAgICA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDYsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDAsIDYzODQ2LCAyOTcyLCAxMjkzMiwgCi0gICAgNzI2MiwgMCwgNjM4NDksIDYzODQ4LCA2Mzg0NywgMTI4MDcwLCA2NTcwLCA4MzAyLCA3MjU5LCA2Mzg0MiwgNDE3OCwgCi0gICAgMTA3NDYsIDcyNTAsIDEzMjE0LCAxMDA0MSwgODEwNSwgNjM4OTIsIDAsIDExODk4MywgMTEwNSwgNDE4MCwgMCwgMTIwOTQsIAotICAgIDk0OTcsIDAsIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCA5OTg3LCAwLCAxMTg5MzIsIDE2NzgsIDEzMjc0LCAKLSAgICA1NTIsIDEyMDY1NCwgNDQwMTAsIDEwNzg1LCAwLCAxMTkxNzAsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIAotICAgIDYzODYwLCA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIAotICAgIDYzODU3LCAxMzg4LCA3NDE2OSwgMCwgMTA3NywgOTgzNTc3LCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDAsIDAsIAotICAgIDQyNzczLCAwLCAwLCAwLCAxMTkyMjAsIDAsIDM2NjMsIDAsIDExMTIsIDExOTEyMiwgODY4NiwgMCwgNTMzNCwgNjUwODEsIAotICAgIDQzMjQ5LCA3NDc3OCwgMTI3OTY4LCAxMTA3NywgMCwgNjUwOSwgMCwgNTMyNywgMCwgMTk5MDcsIDYzODY5LCAzNDc4LCAKLSAgICA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCA3ODYyNiwgMTkxNSwgCi0gICAgNDg0NiwgMCwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIDEyMDcwLCAKLSAgICA4NzYwLCAxMTE3LCAxMTg5ODcsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAwLCA3ODI0MCwgCi0gICAgMTIyMjUsIDYzODM4LCA2MzgzNywgOTgzODUzLCA5ODM4MDQsIDYzODMzLCA2MDQyLCA2NjM2MCwgODA4MywgMCwgMCwgCi0gICAgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4MzkwNCwgNTIyNywgOTA0NywgNjM4MjIsIDEyNzE2MiwgNjA5MSwgMCwgCi0gICAgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIAotICAgIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIDIwNiwgNzc5MjUsIDQ5MzYsIDY1MTQ3LCA4MTY4LCAKLSAgICA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAxMjgxNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCAKLSAgICA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIAotICAgIDAsIDQ2MTgsIDQyMjA5LCA0MzQzMSwgMTMxNjksIDUyOTAsIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgCi0gICAgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAwLCA2Mzk3MCwgMTI4MzU4LCAxMDkyLCA0NzU0LCA3MjczLCAKLSAgICA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgMCwgNzQwOCwgMTE4MDksIDkxNzYxOCwgMCwgMCwgMjk2NSwgNzI1OCwgCi0gICAgODgwOCwgMCwgMTA4OSwgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMCwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIAotICAgIDc0NDk0LCAxMjQ2MywgMjk5NCwgMCwgMTE4ODI3LCAwLCA5NjY0LCA3NzkzOSwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgCi0gICAgNzQzNDMsIDAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDc3OTQxLCA3ODUwNywgCi0gICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDAsIDc0MTUxLCA5MjY1MiwgNjUwMiwgMCwgMTI3MTE4LCAxMjg2OTUsIDYzOTUxLCAKLSAgICAxMjQ2NSwgMCwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCAKLSAgICA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgOTQwNzYsIAotICAgIDAsIDEyNzc3MywgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIAotICAgIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgCi0gICAgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMCwgNDM5ODAsIDU0ODUsIDAsIDQyNjk3LCA5MDYxLCA1NTM0LCAKLSAgICAxMDY3MiwgNDUwMiwgMCwgMjUzLCAwLCA2ODIwOCwgMCwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA5MjU0MiwgNjg2NjgsIDAsIAotICAgIDExODkwNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgNDIzNTQsIDEyODA5OSwgOTgzNjk4LCA3MDA0NCwgMTk1MDY1LCAwLCAKLSAgICA4NDEzLCA5ODM4MTYsIDAsIDU2OTMsIDcyNzIsIDAsIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAxOTUwNjMsIDAsIDAsIAotICAgIDAsIDEyNjYzOSwgMTIwMDk3LCAwLCA5NDA3OCwgMTI4MTMzLCAxMjc3NjcsIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgCi0gICAgNDI5MTMsIDkyMTg3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIDU1MjI2LCAKLSAgICAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCA2MzkwNCwgMCwgMCwgNDE3MjksIDQ0MjMsIAotICAgIDEzMDcsIDAsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAwLCA2MjE4LCAwLCAxNDMwLCAwLCAwLCAxMjA2MDYsIDc4NzU0LCAKLSAgICA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDk4MzYzMywgCi0gICAgNDUxOCwgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCAxMjAxNTgsIDI3MTAsIDAsIDY5MjQzLCA0MTcyNCwgMCwgCi0gICAgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgOTgzNjM1LCAwLCAwLCA5ODM4MTgsIDcwMDQ2LCAxNjI4LCAxMjcxNDksIDk4MzQ4NywgCi0gICAgOTgzNzMxLCA2NTI2MiwgNjMzMywgMTA3ODMsIDQyMzE1LCAwLCA2Mzg1NSwgOTQwNTYsIDAsIDAsIDUzMzksIDc0MzIzLCAwLCAKLSAgICAxMzAwNCwgMCwgNDQ1NywgMCwgMCwgMTk0ODE4LCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIAotICAgIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIAotICAgIDc0MjUxLCAwLCAxMjA2NDcsIDAsIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCAwLCAwLCAwLCA2NjQ2OCwgMCwgCi0gICAgMTMyNTksIDQ0NDgsIDAsIDk4Mzg0NSwgMCwgNzAwNDMsIDY3ODUzLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDAsIAotICAgIDkxNzYwNywgMTI3NTQ0LCAxMjcwNzksIDE5NTA1MCwgMTI3ODUyLCAwLCAwLCAwLCAxMjUwMSwgNjQ2MDQsIDAsIDExNTI3LCAKLSAgICAxMTg4NzAsIDg4MTIsIDAsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAyMTA1LCA4MDg3LCA3ODE2MywgCi0gICAgNjk2MzIsIDk4OTQsIDAsIDAsIDAsIDQ2MzYsIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCAwLCAKLSAgICAxMjA0OTUsIDAsIDEyODI4NCwgMTIyNzcsIDE5NDYyNywgMTE5OTUsIDkyNTUzLCAwLCAxMjE1OCwgMCwgODc0MSwgMTAxOTcsIAotICAgIDAsIDkyNDI2LCAwLCA2NTMxLCAwLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDAsIDk4MzY1MCwgMTg3MywgMTA4NywgMCwgMCwgMCwgCi0gICAgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgOTgzNTcxLCAwLCAKLSAgICA5NDg5LCAwLCAwLCA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIAotICAgIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIAotICAgIDAsIDQ5NSwgMTE5MDA3LCA0MTcxMiwgNzk4MywgMCwgOTM5OTcsIDAsIDYzNDcsIDEyMDE2NSwgNzY1NCwgNDE3MTAsIAotICAgIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgCi0gICAgNDk5OSwgMTk0NjQyLCAwLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgODA0NCwgNzQ4MzQsIDE5NDY0MywgCi0gICAgNDE3ODksIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKLSAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgNDMzOTksIDAsIDAsIDQxNzkxLCAKLSAgICAxMTA0LCAwLCAwLCAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCA2NTY5LCAwLCAwLCAwLCA2OTg0OSwgCi0gICAgNjc4MywgMCwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgOTgzODA3LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCAKLSAgICA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgCi0gICAgOTgzNjAzLCA0MTU0NSwgMCwgOTI0NDksIDAsIDAsIDAsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgCi0gICAgNTEyMiwgNDE1MjcsIDAsIDY2MzIwLCA5ODM4MTEsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIAotICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3ODQwNiwgMTE0NjcsIDM2NjQsIDY1OTIxLCAKLSAgICA2NDI5OSwgMTk0NjY0LCAwLCAwLCA0MzI0LCAxMjYsIDQyMjQ2LCAxMTkxNTIsIDAsIDc0Mzc4LCA2NTkyNiwgNzc0NCwgCi0gICAgMTk0NjM2LCA3NDI3NywgNzQzMDIsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAxNjMzLCAwLCAKLSAgICAwLCA0NzYyLCAxMTAzLCAwLCAwLCA0NzY1LCA5ODM0OTIsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIAotICAgIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgCi0gICAgMTIyNzksIDExMTEsIDAsIDkyMTYxLCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgCi0gICAgODY0NSwgNTcwNCwgMTMwMTAsIDAsIDgzMDQsIDkxNzU2MSwgMCwgMTE5NTc1LCAyMjkzLCAwLCA2NjY1NCwgMCwgOTI2NzYsIAotICAgIDAsIDEzMDA4LCAwLCA0Mzg1LCAwLCAxMzAxMSwgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgCi0gICAgNDE3OTMsIDY1NzYzLCA3NDIyMSwgMTIwMTQxLCA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgCi0gICAgNTcwOSwgMCwgOTQwNTMsIDQzODE2LCAwLCAwLCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIAotICAgIDU3MDUsIDg3OTEsIDQwMDUsIDAsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIAotICAgIDEzMTcwLCAxMjU0MCwgOTE3NTc3LCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCAKLSAgICA3NDg2NywgMTk0NjU0LCAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCAKLSAgICA5MTc1ODcsIDkxNzU4NiwgOTE3NTg5LCA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIAotICAgIDkyMjI2LCAxMzI0NiwgODY0LCAwLCAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAKLSAgICAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAKLSAgICAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgMCwgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIAotICAgIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCAKLSAgICA0MTUyMiwgOTgzOTE1LCA5MjE2OCwgOTgzNzcyLCA5MTc4NTgsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgCisgICAgNzM5ODIsIDEyMDUxOCwgODM0NzMsIDE5NTA4NiwgNDMzNjksIDk4MzE3NywgMTI4MTQwLCA2ODQxNSwgNzc4NjEsIDQ1MzgsIAorICAgIDkzOTc4LCA0MzE0MSwgOTgzNzY5LCA4Mjk3NiwgNzQyMTQsIDczODg2LCA2NzcwOSwgOTE3NTk5LCA3MTkxOCwgNDMwMDUsIAorICAgIDcxMTE0LCA5NTUyLCAwLCA3MDEyOSwgMTI5MTczLCAxMjk5NywgODM0NzcsIDAsIDEyODg5NywgMTk1MDMwLCAyMzgxLCAKKyAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgNzQ2MTgsIDAsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIAorICAgIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDgyOTc3LCA3MDQzNywgMTIxMjUxLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCAKKyAgICA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCAxMjg0NTAsIDExOTU2NiwgMTI4MDkzLCAxMjgwOCwgMTIxODMsIDYxNDUsIAorICAgIDc1MDIwLCA2NDkyOSwgNzQ5ODUsIDcxOTE2LCA3NDk4NCwgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCA5MTg3LCA4MzI3NywgCisgICAgODMyNzgsIDEwMTkxLCA4MzI3MSwgMTE3NTIsIDMzNTMsIDkzNTgsIDk4MzQ2MiwgNzEzNjYsIDY2NjgwLCAxMjAwOTAsIAorICAgIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAxMjAwNDcsIDk4MzA1NiwgODM0NzAsIDEyMDA4MSwgMTE5MDUyLCAKKyAgICA0MTAyNywgMTIwMDg2LCA3MTQ0OSwgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAorICAgIDY0NjU3LCA4NjU3LCA4MzQ3MiwgODU5NCwgMTIwMDY4LCAwLCA5ODM3ODksIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIAorICAgIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgCisgICAgNzg1MSwgMCwgODM3NSwgODY5OSwgMTI3OTQ5LCA0MjUyNCwgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAKKyAgICA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDEyODkzNywgNzQwMTIsIDY2NTYyLCAwLCA0NDM5LCA2OTI2LCA3MjQyMywgCisgICAgMTI5MjQsIDEyODIyNywgNDIzNjksIDQzNTAsIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgCisgICAgMTI3NDc2LCAxMTI5NiwgOTgzMjg1LCA5ODM0MDksIDAsIDY1ODI1LCA5NTc3LCA2ODE5OSwgOTgzMzkzLCA2NDY3MCwgCisgICAgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMTk5OTMsIDEwOTAyLCAwLCAKKyAgICAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAxMjE0MzgsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMTg4OTMsIAorICAgIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMTEzNzU3LCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAKKyAgICAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAxOTQ3MjgsIDEyOTEyMCwgMCwgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIAorICAgIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMCwgOTQwNDksIDY3MzYsIDgzNDM5LCAKKyAgICA0MTQ5MiwgMTIwMDUsIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgMCwgODM0NDMsIDAsIDcyOTMsIDc5OTEsIAorICAgIDc0MDUyLCAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIAorICAgIDY0NDQ1LCA0MjY2OCwgNjYzNSwgMTI4MzA4LCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDAsIAorICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgMCwgNzEwOTYsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAKKyAgICAxMTkxNDUsIDY0NTQ1LCAxMzk2LCAxMjA2NjQsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgMTMyODgsIDY3MiwgCisgICAgODA5OCwgNDMxOTYsIDE5NDc0NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIDExNzcyLCAKKyAgICAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMTk0NzExLCAxMjgzNzEsIDEyNjIyLCAKKyAgICAxMjcyMzQsIDEyNDk0OCwgMCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCA3NDk2OSwgCisgICAgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDkyNzQ2LCAKKyAgICAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIDAsIDQxMDY2LCA2NDY3MywgCisgICAgOTE3OTYzLCA5MjM4MSwgMTI4NjM2LCAzNTA1LCA4NzA3LCA3NDkyNSwgNjcyNSwgMTIwODAyLCAxMjEyOTYsIDc1MDQxLCAKKyAgICAzNDcxLCA2NjM5MSwgNTQ3OSwgODgyLCA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCA3NDYwOCwgCisgICAgMTI1MDI5LCA4MzQzMywgMTIxMjM3LCAxMjA4NDUsIDAsIDgzNDMxLCAzMjI1LCA5MTc5OTYsIDQ0MzMsIDQxMTU2LCAKKyAgICA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDAsIDk4MzY0MiwgMTA5MjYsIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgCisgICAgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkyNjQ0LCA0MTQxOCwgMTI4OTMzLCAKKyAgICA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgMTIxMDgyLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIAorICAgIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIDEyODkwNCwgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCAKKyAgICA3NDQ0NiwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA5ODM0NTgsIAorICAgIDEyMDgxMywgNDM5NywgMTI4MDM3LCAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTIwODkzLCAwLCA0MTQ4NSwgMzUxMSwgCisgICAgNDEyODIsIDU5MjMsIDEwNDAwLCAwLCAxMjA0OTMsIDc2MCwgMCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTE5ODY5LCAKKyAgICA2NzE0NSwgNDE3LCA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIAorICAgIDY0ODc3LCAyMjg0LCA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDAsIAorICAgIDQyMjczLCA1ODE5LCAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAKKyAgICA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAKKyAgICAzMzI5LCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAKKyAgICAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAxOTUwNTEsIDExOTg4MCwgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgCisgICAgOTI3NjIsIDg5NDQsIDk4MzE2NCwgMCwgMTA0NzMsIDk4MzgyMywgMTIwNDcyLCA2MDcyLCA0MzAyNSwgMTAyOTksIAorICAgIDEyODQzNiwgNjg4NDUsIDEyMDYwOCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgMTI3OTAyLCAxMzI4MSwgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgCisgICAgNzQ5MzgsIDQzMzI0LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzQ5NjcsIDc0MTQsIDc3OTI5LCAKKyAgICA0Mzk4MiwgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDk4MzczMSwgODUyLCAwLCAxMjE2MCwgCisgICAgODM0OTEsIDEwMjEyLCA2NTQzNSwgMTI5MDkyLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgCisgICAgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgMTAzNzUsIDQzODUzLCAxMjg1OTksIAorICAgIDQzMTUsIDEyNjQ0LCA4MzQ5MCwgNzc5MzcsIDQzNjM5LCA0MzM0MywgNjc0MDgsIDEyODk0NSwgMTE1MDEsIDQxMTc3LCAKKyAgICAxMjExODAsIDEyODg2NiwgNDM0MzEsIDEyNzA5NywgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCA5ODMzNTgsIDQzMzEzLCAKKyAgICAxMjAyMzAsIDQxMTc2LCAxMjg3ODAsIDk5NCwgOTgzMDQ1LCA4NDUyLCA3Nzk3MywgNzM5NjYsIDY2ODkwLCA3MDgxMiwgCisgICAgNTkyMSwgMCwgMjU5NywgOTI0MjMsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIDEyNzEwNSwgCisgICAgNjcxOCwgMTI3MDI5LCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTIxMDQwLCA0NDEzLCA5MjE5NiwgNDIyNjgsIAorICAgIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgNDMxNjksIAorICAgIDEwMTc2LCAwLCA3NDIsIDc0ODgxLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCA2NzU2LCAKKyAgICAxMjUxMDQsIDEyMTEyNiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCA0MjQwNywgCisgICAgNzQxNywgNzE4LCA3NTcyLCA5NzMsIDExOTU5OSwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgNDIzMzMsIAorICAgIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDEyMDg0OSwgMTIwMiwgMCwgOTgzOTEwLCAKKyAgICA2NTg2MywgMCwgNjg0ODQsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgCisgICAgNzgwNDIsIDY3MzgsIDAsIDQzNjgxLCA2OTcyOCwgMjA1OSwgOTI0MjIsIDAsIDU1MjM3LCAxNDMxLCAxMTkxOTQsIDY2NTY1LCAKKyAgICAxMDgyMSwgMCwgMTI4MDQsIDEyODA3NiwgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgCisgICAgNzEyMjgsIDkxNzk4MiwgMTI5MTg4LCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAKKyAgICAxMjA2OCwgNzgxMDIsIDcxMjI2LCAxMDE0MSwgNzQ5MjIsIDYzNzYxLCA4Nzg1LCA0NDc2LCA2NTA3MSwgNjM3NjMsIAorICAgIDEyNjU1LCA4OTA3LCA5MTQ3LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAxMjA4OTgsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCAKKyAgICA0MTU3MiwgMTI3OTc5LCAxMjcxNjAsIDk4MzU1NCwgNDE1NzMsIDgzMTYwLCAzOTMxLCAxMjAyOTUsIDc0MTQzLCA4MzE1NiwgCisgICAgODMxNTcsIDgzMTU4LCA3ODQ2MCwgMTE5ODIsIDAsIDgzMDY3LCAxMjgzODEsIDkyNzEyLCA2NDQ4NCwgMTE5MjY2LCAKKyAgICA0MTE2NywgMCwgNDE3MzUsIDk0MDE5LCA3MTcsIDEwNzU0LCA4MzE2OCwgODMxNjksIDcyNDEzLCA4MzE2MywgNjM3NjcsIAorICAgIDgzMTY1LCAxNzgwLCA2OTM2LCAwLCA4MzE2MSwgODE5LCAxMDYxMSwgOTY5NCwgMTI2OTc4LCA3MTQ3NCwgMCwgMTI3ODcxLCAKKyAgICAxMjkwNjksIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIAorICAgIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MjA4LCA1NzUsIDI2OCwgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIAorICAgIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgODMxNTEsIAorICAgIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIDY5NTMsIDAsIDgzMzc1LCA3NDk3MywgNzgxMzIsIDU5MjYsIDY4MjUwLCA3ODEzMCwgCisgICAgNzgxMjYsIDc4MTI3LCA3ODEyNCwgNzgxMjUsIDkwMzgsIDc4ODcsIDQzNDU2LCA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCAKKyAgICA5ODM1NTksIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIDY3Mzc5LCA4NTk1LCA5ODM1LCA5MTc5NDcsIAorICAgIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgNzQ5NzUsIDEyMzgxLCAzNDg4LCA1OTMzLCAxMDAzMywgCisgICAgNzExMDEsIDY2MjQxLCA2NTU3MCwgMTE5MTU0LCAxMjI5NywgNzEyMTIsIDE5NTUsIDEyNzk3MCwgNTM0OSwgNDI1MzgsIDAsIAorICAgIDEyNDkzMiwgNzQxMSwgOTQ2MiwgMTI4MTUwLCAwLCAxMjg0NjUsIDQzOTIwLCA0MjczNiwgMTIxMDE3LCA1NzU2LCAKKyAgICAxMjgzMjQsIDc2MzgsIDQxNjQyLCA0Mjc2NCwgOTgzNzE3LCA0MzEwOSwgNzYzNywgNTc1MiwgMTEyMTMsIDgzNDgxLCAKKyAgICA3MzgzMiwgMTI4ODI3LCA4MzQ4NiwgMTI4MjMxLCA3ODMzNCwgOTE3OTU3LCA3NjM2LCA2NTE3MSwgOTEyNCwgOTgzMjEwLCAKKyAgICA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDk4MzIyMSwgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDcwODY5LCAKKyAgICA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgMTExODMsIDEyMDQzMSwgMTIwNDMwLCAwLCAxMjgzNTEsIDEyNzQ4OSwgCisgICAgMTI3MTM4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCA3NDIxMywgNzgyNCwgMCwgMTk0NjQ4LCA0MTI3NCwgNTc3OCwgNjMwMiwgCisgICAgMTIxNDMyLCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA2NzI0MiwgOTMwNDEsIDk0NTIsIDEyODE1MywgNzQzOTMsIDExNTUyLCAKKyAgICAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDEyODYxNCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIDc4NjU4LCAKKyAgICA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAxMjA0MTIsIAorICAgIDQxMjY3LCA0NjQ2LCA2Nzc1OSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgNzgyNzAsIDEyNzk4MiwgCisgICAgOTgzMTcyLCA0Mzk0OCwgMTk1MTAwLCA2ODg0MCwgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIDEyNzg5MiwgCisgICAgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgMTE5MTQzLCAwLCAKKyAgICA3MTQ2MiwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgNjc3MDUsIAorICAgIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAxMjg2MTEsIDgzNDc0LCAxMDIyOSwgCisgICAgMTA2MzUsIDgyNiwgODM0NzUsIDE5NTA4MiwgMTI3MDAzLCAxOTUwODQsIDcxNDU1LCA2NDgzLCA5MjIxMSwgMTgwOCwgCisgICAgNzg0OCwgMTEzNzg4LCA4MTAwLCA3ODIyNywgNzExOTgsIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCAKKyAgICA2NzcwNCwgOTgzOTIxLCAxMTAwMywgOTkwNCwgODM0MTAsIDk4MzkxOSwgMTIwNjkwLCA5MTQ0LCAxMDkyMSwgOTI5OTIsIAorICAgIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDcxMDkyLCAxMDMxMywgODM0MDgsIDgzNTAwLCA2NDMyMCwgMTAyNjUsIAorICAgIDY3MjUyLCAxMDk2MiwgNjY5MDQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMTIwOTk1LCA0MSwgMTk1MDcyLCAxNzkyLCAKKyAgICAxMjA1MTUsIDE5NTA3MywgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAzODUsIDQxNTIsIDI1ODUsIAorICAgIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCA5MTc4NTIsIDczOTgzLCAxMDk1NywgMTI3MDM3LCAxMTE2MCwgMTE5MTE2LCAKKyAgICAxMjc4NzMsIDEzMTU3LCAwLCAxMjgwMjQsIDM1NzAsIDEyOTE4NywgNzQ0MywgMTE4ODA0LCA0NDAwNiwgNjk5NywgNjgwMDQsIAorICAgIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDkxNzk3MSwgNjUyMTYsIDcwMTk2LCA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgCisgICAgMTI4NTQzLCA3ODM5LCA5MjYxMiwgNzg4MDYsIDc1MDY0LCA5NjkxLCA0NDExLCA3ODgwMiwgMTIxMjE5LCAxMjA4NTQsIAorICAgIDQzNDQyLCA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODksIDcyNDE5LCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIAorICAgIDE5OTMyLCA2NDgzMSwgMCwgMTEzNjg0LCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgNjUwNzAsIDExMDU2LCAKKyAgICA5ODM1NzQsIDExOTkyNSwgOTgzMDk5LCA0MTE2NSwgMTEzMjgsIDEyNDUwLCA5ODM4MTEsIDQxMTY2LCAwLCAxMjQ1NiwgCisgICAgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgCisgICAgNzQxNjIsIDExOTMyMCwgMTIwNDgzLCA5OTY5LCAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgCisgICAgNzg0MjQsIDMyMzAsIDY4NzczLCA5ODM0OTcsIDc1MDI1LCA1MjA5LCAyOTcsIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgCisgICAgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgCisgICAgNzg4OTMsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAxMjc1MDUsIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgCisgICAgNjk3OTQsIDI0OTUsIDc0OTExLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAxMjc5NDcsIDEyNjU0LCA0NjYzLCAxODk5LCAKKyAgICA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCA5Mjk3MiwgMCwgMTE5MDAwLCA4ODkyLCA3ODg3MiwgOTIzMzksIAorICAgIDcxMjMyLCA5ODMwNzMsIDU3ODIsIDQyMCwgMTI3MzQ4LCA5MTc4NzEsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDEyODUzMywgCisgICAgNjQ4MTQsIDYzNzk2LCA0Mzg2MSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDEyODQ3OSwgMTIxMTQ0LCA2Mzc5MiwgCisgICAgNDY1OSwgMTIwNzg4LCA3Nzk3MSwgNDM2NzYsIDc0OTQ0LCA2OTY3MywgMTIxMDI5LCAxMTEyOSwgOTI5MjksIDMyOSwgCisgICAgNzc5NjgsIDkyNzA3LCA4MzQ5NiwgNzM5OSwgMCwgNDExODgsIDEzMjQ0LCA2NzY5MiwgNDIxNjcsIDc0MzUsIDc4MTkzLCAKKyAgICA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgNDMxMjYsIDc3OTcyLCAwLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIAorICAgIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgNjk2NzYsIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgCisgICAgNTYwMywgMCwgNDQ3MywgMTIxMDg1LCA3MjQyNiwgMTI0OTQ3LCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAxMjg1NDgsIAorICAgIDExOTIxMywgNTM0NywgNjk4MDIsIDkxNzk3MywgNzM4NjgsIDcwODUyLCAxMDU4OCwgMCwgMCwgNjM3NTUsIDEyODI3MSwgCisgICAgNTM0MywgNzg0MjIsIDEyMDY2MSwgNDU1NSwgNTM0MSwgODM0NTksIDcwMDcxLCA3NDkxNiwgNTM1MSwgNzg2NzUsIDQzMTA0LCAKKyAgICA2NTI0NCwgMTIxMzY1LCA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDEyODk3OSwgCisgICAgMTI3NTEwLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIAorICAgIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCAKKyAgICA2NTM1NSwgNTM0NSwgMTExMDMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgCisgICAgMTI2NjM1LCAyNDIzLCA3NDUxOCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMTI2NTczLCAxMjg2NzAsIDk4Mzc4NywgCisgICAgMCwgNjQ2MDUsIDAsIDY4MDc0LCA5ODM5NzcsIDQ5MTYsIDEyODU2OCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCAKKyAgICA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgODM0NTAsIDEwNjg0LCAwLCAKKyAgICAxMjUwNjMsIDkyOTA2LCA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAwLCAxMjgyMDcsIDAsIDk4MzY1NCwgCisgICAgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCA1NTM1LCA4MzI5LCAKKyAgICA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgMTIxMjExLCA1NjA3LCAKKyAgICA0MTA4OSwgMTI4NjI2LCAwLCA3MDI5MiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgMTIwNDU5LCAKKyAgICA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDgzNDE3LCAxMTg4LCA3MjU0LCAKKyAgICAxMTAwLCAwLCA2NzI3MCwgNDEwODEsIDI5MTIsIDExNzQ5LCA2NzI4MiwgNjcyODEsIDY3MjgwLCAzNTcyLCAxMDAyMywgCisgICAgNDk1OSwgMTMwNzksIDAsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDEyMTA0MiwgNjcyNzgsIDQzMzYxLCAxMjczNTUsIDY3Mjc2LCAKKyAgICAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCA4MzM5MiwgODMzNjksIDQxNDUxLCA4MzM3MCwgMTEwOTUsIDgyNzMsIAorICAgIDc0MzIyLCAzNDUxLCA3MDI5MSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgCisgICAgODMzNjMsIDIyODgsIDE5OTU1LCA5NTM4LCA4MzM2NiwgNjk4MDcsIDAsIDEyOTA5NSwgMCwgODMzODEsIDExMzk2LCAKKyAgICA4MzM4NSwgMTEwMTksIDAsIDEyODQxNiwgMTIxMjA1LCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAyNjEsIDU5MjcsIDc3OTEsIAorICAgIDEyODY4MSwgNzM2MiwgMCwgMTA2OTYsIDcwMTI0LCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIDkzOTk1LCAyODIsIAorICAgIDExOTE3OCwgNjQzNywgNjg4MzAsIDEyMTQ1OSwgOTgwMSwgNjYzOTksIDc0MTc3LCAwLCA5MTc5NTksIDM0NzQsIDY3Mjg3LCAKKyAgICAwLCA2NzI4NiwgNjA4MSwgODM0NjksIDc4ODc0LCA2NzI4OSwgNjcyODMsIDgzNDcxLCA3MDAwMiwgNDI5MzAsIDAsIAorICAgIDkzMDEzLCA4NzUxLCAxMTQ5OSwgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgCisgICAgNjgwMTcsIDk2NDIsIDEwOTEyLCA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgCisgICAgNDY2OSwgMCwgNjgwOTksIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCA3NTA1MywgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAKKyAgICAwLCA5MTc4NzUsIDg2NjQsIDk2OTcsIDM2MDYsIDgzNDQ2LCA5ODM5NzgsIDkxNzg3NCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgCisgICAgNjczMTIsIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIAorICAgIDQyNjYxLCA4MzQzOCwgMTIwMjU1LCAxMjAyNTYsIDEyMzAxLCA2NzgzNiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAKKyAgICA2NjYwMiwgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgODM0MzcsIDg2MDgsIAorICAgIDQyNzg5LCAxMjA2MTMsIDgzNDM2LCAwLCA3MTkwNiwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKKyAgICA2NzMwNCwgMTY0MSwgMCwgMCwgODk2NiwgMTI4OTAwLCA3NDkxOSwgNTkwOCwgNzE4NzAsIDY3ODUzLCA2NzQ0LCA2NzMxMCwgCisgICAgMTY5OSwgNjczMDgsIDY3MzA3LCA2NzMxNCwgNjczMTMsIDYzMDYsIDEwMTY5LCA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgCisgICAgMzc2NiwgMjM4OSwgNjczMDUsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCA5ODM4MTUsIAorICAgIDk0MzYsIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIDEwNTQxLCA1NjIyLCAKKyAgICAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCA5MTc4MzcsIDQxNDM1LCA0MzUyLCA2NzMyNCwgCisgICAgMjQzNSwgNzEyMTEsIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgMTIwNDQ3LCAKKyAgICAzNzY4LCA0MTc3NCwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgNDU2NCwgCisgICAgMTE5MDQ5LCA3NDYyMywgNzQyNzEsIDczNzUzLCA4Mzc0LCAxMjcyMDEsIDAsIDY4MjksIDUyMjUsIDY2OTAxLCAxMjczODUsIAorICAgIDAsIDAsIDExOTYxNSwgNjczMTksIDY3MzE4LCAzMTYyLCA0MzUwNywgMTE3NzEsIDY3MzIyLCA2NzMyMSwgNjczMjAsIAorICAgIDQyNjE0LCA1MzUzLCA1NjI1LCA3NDE3OSwgNjczMTUsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCAKKyAgICA2OTk0MiwgNjk1MiwgNjczMjksIDY3MzI4LCA2NzMyNywgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAKKyAgICAxMDQ3MSwgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAKKyAgICAyNDAwLCA1NjI3LCAxMjAwMTcsIDY3MzMwLCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDExMzY5MywgMjAzLCAKKyAgICA3NDM2NSwgMCwgMCwgNjk5ODUsIDc4MzUwLCAxMTM3MDMsIDY0Mzc4LCA0MjA1NCwgMTI4NTc1LCAwLCA1NTQsIDExOTY0OSwgCisgICAgMTEzNTgsIDcxMTcyLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjUxMTQsIDczODkxLCA4MzQyMywgODMwMTksIDU2OTQsIAorICAgIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAxMjA5NjIsIDkzMDI5LCA2OTc2NCwgMCwgMCwgCisgICAgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgNjc3NTMsIDQzNjUxLCAxMjkxMjksIDY4MTE4LCA2ODA5MywgCisgICAgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDc1MDU4LCA2NTI1NSwgOTM5OTIsIAorICAgIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQxMzYsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCA3NzU2LCAKKyAgICAxMjM0MiwgMTIwNjk3LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIDExNjgsIAorICAgIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCisgICAgOTE3ODUwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDY3MTE0LCAxMDQwNSwgMTI3MTk1LCA3ODgwMywgMCwgMTI5MTc2LCAKKyAgICA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIAorICAgIDc4ODY3LCA4MjE0LCA4MzQyMSwgMTEzNzg0LCAxMjAwMzcsIDQxNDU3LCA5ODM5NzAsIDExOTU4OSwgMTk2OSwgMjM4NCwgCisgICAgODA5NywgMTI4MDE5LCA3NDEzLCA2ODAxMiwgNzgwMjksIDg3NjYsIDQzODY0LCA3ODA3OSwgNTg1NCwgMTI1MDAwLCAKKyAgICAxMDU4MywgMCwgMTE5OTg5LCAxMjc1NTYsIDEwNDE2LCA2ODA3MCwgMzg3MiwgODM0MjQsIDk4MzgzOSwgODQyOSwgCisgICAgMTIxMjMwLCAxMTg4MDYsIDI4MzgsIDY0MjksIDAsIDgzNDI2LCAwLCAxMjg0NzgsIDAsIDE5NDYyMCwgOTQwMDUsIDExMDk2LCAKKyAgICA4MzQyMiwgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCA2NzgxOSwgNzM3NDIsIDY2LCAKKyAgICA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCA4MiwgODEsIDg0LCAKKyAgICA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgODU1NiwgCisgICAgOTE3OTc1LCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCA3ODE4NSwgMTI4OTU5LCAKKyAgICAwLCA3MTQzNywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgODMzNjQsIDkxMDksIDc4ODgyLCAxMjg5LCAKKyAgICA2NDU5OSwgMTE4OTE1LCA2ODAwOSwgMTI4MzAyLCA2NTUwNywgMjQ0NywgMTE5OTExLCAxMjg2OTQsIDEyODA0MiwgCisgICAgMTI2NTQ1LCA2NjU4OSwgMCwgNjMzNCwgMTI4MzY5LCAwLCAxOTkzNywgOTE3NzkzLCAxMzIyLCA5MjM1OSwgNTY3NSwgMjU0LCAKKyAgICAwLCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIDY0MDAzLCA1NzE2LCA0MjMxMiwgMCwgMTk0NjkyLCA2OTcyLCA0MjgyNiwgCisgICAgNzQ0MDksIDQyNDY0LCAxMjA1NjcsIDY2ODk5LCA2NzE1NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMTI4ODA1LCA2NzY4NywgCisgICAgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIDQzODY3LCA0MTk3OCwgMTQxMiwgCisgICAgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgNzE0MjgsIDEyMDc0OCwgMzE0MCwgCisgICAgMTI3Mjc2LCA3OTYwLCA0MzI3MSwgMTIxMDk5LCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgMTI0NzIsIDY3MjU0LCAKKyAgICA2NzI1MywgNzY5OSwgMTIzOTMsIDY3MjU3LCAwLCA2NzI1NiwgNjcyNTUsIDgyMjMsIDAsIDQyNjEsIDEyMTQ2MCwgCisgICAgMTIwOTEwLCA3NDMwOCwgOTgzODI3LCAxMTM3MTIsIDY3MTUzLCA5ODM1NzEsIDEyODA0NiwgNDM0MTksIDk4MzQ3MSwgCisgICAgNjQ1NTQsIDEwNTc0LCAzODc4LCA2NzY5MSwgNDIzNTIsIDE3NTIsIDczNzg1LCAxMjgxNzEsIDQyNTA2LCAxMjg1NDEsIAorICAgIDEwMTk5LCA5MTc4NjUsIDEyNTE0MiwgNjgwMjEsIDY1OTE5LCAwLCA2Njk1LCA3MjAsIDMyNCwgMCwgMTI5MDM1LCA0MzQwNiwgCisgICAgOTgzNzM2LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDY4MDgyLCA2NDQ4OCwgMTI4OTc3LCAxMjA5NTEsIAorICAgIDY0MDQxLCA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMTIxNDE2LCA3ODg2MywgMCwgMTMwMiwgNjYyODgsIAorICAgIDc4ODYxLCAxMTkxMzQsIDAsIDY3MTUyLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAxMjA5MjMsIDM5OTUsIDY4MzYwLCAKKyAgICA2NTYwOCwgMzcxNCwgOTIxOTAsIDEyMDAyNiwgNjcyNjIsIDEwOTk5LCAxMTc1MCwgNjcyNTksIDQzMjUxLCA2NzI2NCwgCisgICAgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIDExOTY0LCAxMjEyNjgsIDEyODAxNCwgOTIxNzMsIDAsIAorICAgIDY4NDU1LCA0Mjg2MywgNzM4MzksIDEyNzUyOSwgMCwgNjc3MDAsIDkxNzgxMiwgMTEzNzAxLCA0MzY0NSwgNDY4LCA2MTIsIAorICAgIDAsIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDEyODYyNSwgMTIyODAsIDcwMzY3LCA1NDAsIAorICAgIDc0NTY0LCAxMTkwMTcsIDY2NDIyLCA4NDMyLCA3ODg3MywgMTEwNzMsIDAsIDY0MzE2LCAwLCAxMjEwNzAsIDgyMCwgCisgICAgNDE3NDEsIDk4MzQ3NywgMTIwNjY3LCAxMjQ5ODEsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIDY5OTM0LCA2NTE3NywgCisgICAgNjIyNiwgMzUzLCAxMjM5NiwgMTIxMTc2LCAxMTk2MTIsIDY0NzQyLCAxMjg2ODIsIDc4ODc5LCA5ODM0NzgsIDEyNzkzOCwgCisgICAgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDcwMzUyLCAxODg0LCA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCA5ODMxNDIsIAorICAgIDExOTUsIDY0ODk4LCA3OTI0LCAxMTk4NzAsIDQxMTUxLCAyMDEwLCA3MTQzMCwgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgCisgICAgNDM2MCwgMTIxMDIzLCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgOTE3NjMxLCA0MjUyMSwgODUzOSwgMTI4NjA2LCAwLCAKKyAgICAxMTg5ODYsIDEyNzE0OCwgNDc4OCwgMTIxMzQ1LCA2ODAyMywgNjU3MzQsIDk4MzQ1NywgNDM3OTAsIDEyMDI3NCwgMTMwNzUsIAorICAgIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCA0MTEzNiwgCisgICAgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTEzNzMxLCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIDY0ODU5LCAKKyAgICA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgNjcyOTUsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgCisgICAgOTIzNjQsIDY4MDE1LCAxMjA1MzMsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgMTAyNTQsIAorICAgIDExMzY4MSwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDEyMDg3MCwgNjA3LCAwLCA2ODE4MiwgMTI4ODQ2LCAxMjkyMywgCisgICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDEyOTE0OSwgNzg2MzksIDQwOTc1LCAKKyAgICA1ODQwLCA0MjgzOCwgNzQ5ODcsIDQwOTc4LCAxMjEzODYsIDkyOTQ1LCAxMjgwMjAsIDExOTgwOSwgMCwgNjY0NDQsIAorICAgIDEwNTM4LCAxMjA4MTAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMTI5MTMwLCAwLCAzNTI1LCA2ODI0LCAxMTg4ODYsIDk4MzU4MiwgCisgICAgMCwgNTYxOSwgNjU4MjIsIDExMzc1MSwgMTEzNzM4LCA3NDU1LCA3MTQyNCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIAorICAgIDEwNzI3LCA1NjE1LCAxMjA4NzMsIDEyMDU1MSwgNDIzODAsIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgCisgICAgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIAorICAgIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCA0NjAzLCAzMDg0LCA3MDQwOCwgOTI0ODQsIAorICAgIDk4NTgsIDYwMzcsIDk4MzQ2NSwgMzk3NCwgNzgyMTMsIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIAorICAgIDEyOTAzMCwgNzUwMzgsIDQxMDM2LCA2Njg5NywgMCwgNDMzMjEsIDY1NjA2LCAxMjcwNzEsIDQxMDMyLCA0MjM4OCwgMCwgCisgICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMTk0OTA3LCA2NzcyNywgMTI1MTA2LCAKKyAgICAyMjIzLCA2NDk1MiwgMTA0MDIsIDEyODM1OCwgMTI1MDQ5LCA5MjMwNCwgMTA2MDMsIDAsIDk4MzQwMywgNzE0MzgsIDAsIAorICAgIDY3MTQsIDEwMDgzLCAxMjcwNjksIDEyMTAxOSwgNzgzNjcsIDY5OTc2LCAwLCA0Mzg3MiwgOTA3MywgNDI1ODUsIDY0MzAyLCAKKyAgICAxMDcwNCwgNjUwMzAsIDQ3ODcsIDEyOTAzMSwgNzQ4MjksIDAsIDY1NDIzLCAxMjEzMDYsIDEyODExOCwgOTU3MCwgNTUyNjAsIAorICAgIDk1MjUsIDI2ODksIDkxNzYyNiwgNjU0MjYsIDE5NDg3MiwgOTE3NjI0LCA0Mzc0MCwgMTIxMTYzLCA0MDk2NiwgMTIwMDA5LCAKKyAgICAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDcxNDMzLCA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgCisgICAgNDE5NTQsIDkxNzYxNSwgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCAKKyAgICA0MzMyMCwgMTE5MTU5LCA3Mzk1NSwgOTIzMTUsIDY0NjgsIDQxOTc2LCA5NzIwLCA3NDk2NCwgMTExNzksIDQxOTcwLCAKKyAgICA2NjI1NSwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgCisgICAgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIAorICAgIDg2MTYsIDQxNDY2LCA0MjkyNCwgMjIyNywgMTE0NTAsIDk4MzY5MSwgMzYzOCwgMTIzNTQsIDY3Mjk5LCAzMjE2LCA4MzA5OSwgCisgICAgMjM1OCwgODMwOTIsIDg2MzMsIDcxMjAxLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDgzMDkwLCA3MDM3NSwgMTE3NTksIAorICAgIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDY3MzAzLCA0MTQyMywgODA3OCwgMTA1MDQsIDgzMTA0LCA0MTY5OCwgNDIyMzcsIAorICAgIDk4MzQ1NCwgNzAwMiwgODMxMDEsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCA3MTQ2NywgNDEwNTAsIDQxNDczLCAKKyAgICAxMDQ2NiwgMTMwOTksIDcxNDQ1LCA3MDM3MSwgMTIwODk3LCA2NDM1LCA3NDMzMSwgMTEzNjIsIDEyODk3MywgODMwODgsIAorICAgIDY1MzgyLCA5Mjc3MCwgNDE0MjAsIDgzMDgzLCAzNjI1LCA3NDkxNSwgNDE0MDksIDcxNDQxLCA2OTYzOSwgMjA0MSwgOTE3OCwgCisgICAgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgNzQ5MjQsIDAsIDEyODU1NywgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAKKyAgICAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgCisgICAgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIDAsIDEyNzk1MSwgOTIzODgsIDY5NjQ5LCAKKyAgICAxMDk4OSwgNzQyMzQsIDExMzc4MSwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgCisgICAgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIDk4MzExOSwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIDQxNDYxLCAKKyAgICAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKKyAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgMTIxMDA3LCA5MDk0LCA5ODM5MjYsIDExNzU4LCA2ODQyNSwgNzE4ODYsIAorICAgIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCAKKyAgICA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgNzE0MzQsIDI5MTEsIDgzMDc0LCAKKyAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDgzMDYyLCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIAorICAgIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgCisgICAgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIAorICAgIDE1OTksIDExMzMzLCA4MzEzOSwgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCAKKyAgICA4MzEzMiwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIAorICAgIDgzMTQ1LCA2NTczMCwgODMxNDcsIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgCisgICAgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIAorICAgIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgMCwgMTIwMzY4LCAxMjg4NTUsIDExNjQ4LCA4MzEyNiwgODMxMjcsIDgzMTI4LCAKKyAgICA0MTU4NywgNzAzOTEsIDgzMTIzLCA3MTEwOCwgNDIxMTMsIDk4MzU4OCwgMTI3MTU1LCAxMjE3MiwgODMxMjEsIDcxNDQzLCAKKyAgICA2NTI5OCwgNjU3MjMsIDY4Mjg5LCA3Mzg3MSwgNjU3MjQsIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIAorICAgIDY0NjcxLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgOTgzMTEwLCA3ODc1LCA5ODM2NjksIDQxNTk4LCAzOTkzLCAKKyAgICAxMjEyNjksIDE1NDUsIDQwOTcxLCA1MzYsIDEyNzA3NSwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAwLCAKKyAgICA3MDMzMSwgMTk1MDEyLCAwLCA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgCisgICAgOTE3ODE3LCAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgCisgICAgNzg3NTYsIDEyNzEwOCwgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCAKKyAgICA0MTAwNiwgNjU3MjIsIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCAKKyAgICAxMjg3NzgsIDcxODg5LCA2Nzg1NywgMTIwNjg3LCAwLCA5Mjk1OCwgMTE3NTUsIDY2MzA1LCA2ODMzMiwgMCwgMTA5MTcsIAorICAgIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCA4MzExOSwgCisgICAgODMxMjAsIDExNDEzLCAxMjY1ODMsIDgzMTE1LCA1MjgzLCAxNTg2LCA0OTc4LCA2ODA1MCwgMTk4NCwgMTE4MzAsIDQzODE5LCAKKyAgICA5MjI5MywgNDA5ODQsIDQyOTA0LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMTk0ODg4LCA0MTY2MywgOTgzMDkzLCAwLCAKKyAgICA2ODMxMywgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKKyAgICA0MTI4NywgOTI2MTAsIDAsIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCA5ODMwNTksIAorICAgIDEyMDgyMywgMTI2NTUzLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAKKyAgICAxMTQ1MSwgODI5OTUsIDc4ODU1LCA0MjYzMSwgMjM1OSwgNzE4OTAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIAorICAgIDEzMTMzLCA2NDM2OCwgMTI3MjcwLCAxMjA5MjUsIDY2MjcyLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgCisgICAgMTI4MjM4LCAxNjE0LCA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAxMjA4NzEsIDQyOCwgOTYyMCwgMTQ2NiwgCisgICAgNzgxMTIsIDEwOTgyLCAxMTM3ODUsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMTI3OTkzLCAwLCAwLCAKKyAgICA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCAKKyAgICA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODUxMiwgCisgICAgMTI4NjI5LCA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIAorICAgIDEyNjc1LCAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCAKKyAgICA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgCisgICAgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKKyAgICA2NDc5OSwgNDIwNDcsIDAsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDk4Mzc2MCwgNzQzMDAsIDAsIAorICAgIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgNDM0ODYsIAorICAgIDc0MzQ0LCAwLCAyNTM2LCA5ODM5NDEsIDY2MzMwLCAxMjEyMzgsIDAsIDAsIDAsIDAsIDAsIDE5NDgzMCwgNjYzMTcsIAorICAgIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCA4Mjk4OCwgMCwgOTYxLCAKKyAgICA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgOTgzMTMwLCA4OTEsIAorICAgIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDEyMDg3OCwgMCwgMCwgCisgICAgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAKKyAgICAzNTQ3LCAwLCAwLCAxMTM3NDYsIDk4MzQwMCwgNDMyMTYsIDYwODksIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAKKyAgICAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCA5Mjg4MywgMTEzNzM5LCAwLCA2NTgyMywgCisgICAgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCAKKyAgICA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgCisgICAgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIAorICAgIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIAorICAgIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyNzA1MSwgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIAorICAgIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEyODMyNywgMjMxOCwgCisgICAgOTgzMTgzLCA2NjM2MSwgODE5OCwgNjU2MjYsIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCAKKyAgICA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgCisgICAgMTI4NDAzLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTIwMDAyLCAxMjkxNTEsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIAorICAgIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMCwgCisgICAgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgMTIwMjI1LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCA2NjQwNCwgCisgICAgOTQwOTYsIDc0NDIyLCA0MTE0OCwgODY4MywgNzU5NCwgMTEzNjg2LCA3NTAzMywgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIAorICAgIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDEyMTQ1NiwgMzUxMiwgMTE5NjMzLCA5Mjk2NSwgODEwMywgNzgxNDAsIDEyMDg0NywgCisgICAgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDEyOTA1NSwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgNzEzMTQsIDAsIDc4MTA5LCAKKyAgICAxMjkxNzcsIDE5OTQyLCA5ODMyNDQsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIAorICAgIDk0MDY0LCA5ODMwNzEsIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgMCwgMzU5OSwgCisgICAgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIDkyNDg2LCAKKyAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzQxNTcsIDQwMzYsIDEyNjQ4MSwgMCwgCisgICAgMTI4MjEzLCAxOTQ4NjEsIDgzMzU1LCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIAorICAgIDAsIDAsIDEyNTExNywgMCwgOTE3NTQyLCA3MzgxMiwgODMwNTMsIDY1MzksIDkyOTQ4LCAxMjY2MDcsIDEyMDcwMiwgCisgICAgOTIzOTAsIDAsIDEyMDQ5MiwgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgOTE3OTc5LCAKKyAgICA3ODg5MSwgMCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCA3ODE3OCwgMCwgMTI4OTcwLCAKKyAgICAwLCAwLCA0OTE5LCAxMDU5MCwgMTI4NTU2LCA3NzU1LCAwLCA5Mjk0MiwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIAorICAgIDY1MTI2LCA2ODI1MywgMTI3MDA0LCA5ODM2MTYsIDEyMTg4LCA5ODM2NjgsIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIAorICAgIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIDYzNTIsIDQxODkyLCAwLCA3NTU1LCAxMzEwMywgCisgICAgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCAxMjEyMDgsIDAsIDY4MjI0LCAxMjA4NzIsIDQxNzY0LCA3OTU3LCAKKyAgICA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAzNTU5LCA5ODM5MTgsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIAorICAgIDcwODUzLCAxMTkwMjgsIDAsIDEyODEyMiwgMTI4NDQyLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAxOTQ4ODQsIDY4MzIyLCAKKyAgICA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgCisgICAgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCisgICAgOTIyODgsIDcwNTE0LCA5ODM5MDAsIDgzMTc1LCA3MTQzNiwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMTI4OTY4LCA5MTc5ODksIAorICAgIDY1OTI4LCAwLCAxMjEzNjcsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIAorICAgIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAKKyAgICA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgCisgICAgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjgxMjgsIDk4MzU5NSwgCisgICAgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCA5ODMzMzYsIDQzMTU3LCAwLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIAorICAgIDg3NTUsIDExOTE1MiwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCA3MDUxNSwgOTE3NjE2LCA4ODEwLCA3NDQ5OSwgCisgICAgNjg2LCAwLCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDAsIDEyMDQwLCA2NTY4OSwgMTAxMjgsIAorICAgIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODkwMiwgMjQwMSwgNjgxNDQsIDg3OTIsIDk4MzY0OCwgCisgICAgNjgwNDQsIDY1NDU1LCAwLCA3NDMyOCwgMCwgNzQ1NjEsIDEyMDc2MywgMTI4ODYsIDEyMDk1MiwgNjY2MjQsIDEyNjU3OCwgCisgICAgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgMTE4OTQ1LCA5OTg0LCA3Mzg1MSwgMzAxMCwgCisgICAgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEyNzkxMCwgMTE0NzksIDEyMTM1NSwgMTIwMzU2LCAKKyAgICA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjQ5NDYsIDQwNTIsIAorICAgIDExMzY3MywgNzYyNiwgMCwgMTIwOTA3LCAxMDQ1LCAwLCA1NjMxLCA0MTExMywgMTI3NTQ0LCAwLCA0MzcwNywgNzQxMjcsIAorICAgIDAsIDk4MzcxOCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgCisgICAgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIAorICAgIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDAsIAorICAgIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMTIxMjcyLCAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIAorICAgIDkxNzgwNywgNTc5LCA1NTIxOCwgMTAyMDYsIDc4MTk1LCA2Mzc1LCAyNjczLCA5ODM4ODYsIDExODE0LCAwLCA0NDg4LCAKKyAgICAxMjg3MTYsIDEyMDU1NCwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgCisgICAgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDEyNDk5OCwgNjE0LCA3MDM2MSwgCisgICAgMTI3MjE1LCAxMjA2MTUsIDExOTYyMiwgNzgyNjIsIDEyNzI3MSwgMTI3MzIzLCAwLCA0MzEyMSwgMTI3MjExLCAxMjgzNjYsIAorICAgIDkyNTEzLCAxMDUwLCA3NTQ5LCAxMjEyNjAsIDgyOTk0LCA5MzE0LCA3MDM2NSwgOTI4OTgsIDY4MDM5LCAxMjcwNjEsIAorICAgIDEwMDU3LCA3MDQzNCwgMTI3MzEzLCAxMjg1NzcsIDY2NTA0LCAxMjA5NjMsIDgyOTkyLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAKKyAgICAxMjczMTIsIDEyODIzMCwgNzM4NzMsIDk4MzcxMCwgOTQwMzUsIDAsIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIAorICAgIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAxMjc3ODUsIDk5NTcsIDEyODI4NSwgCisgICAgNjY0NDcsIDgwNDYsIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDEyMDQyNCwgMTUyMSwgCisgICAgOTg5NiwgOTM5NjUsIDEwNDg3LCA2OTg3OCwgMTI1MjcsIDY4NzM3LCA3OTcwLCAxMjUwNzMsIDEyODY2MCwgMCwgNjU3NjksIAorICAgIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAxMjE0MjksIDAsIDUyMzcsIDY5NzE0LCA2ODc1NiwgMTAxMDMsIDUyNDcsIAorICAgIDQ3NjksIDEyOTMwMiwgMTE4OTc3LCAxMjg3MywgMjI4MywgOTI5MzEsIDAsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIAorICAgIDAsIDU1MjMxLCA0MTEwMywgOTIyNTYsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIAorICAgIDkxNzU2NywgODczMSwgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTI2NjAwLCA0Nzc0LCAzMDE5LCAKKyAgICA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgNzg1NTYsIDAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIAorICAgIDQ3NjgsIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgCisgICAgMTE4OTQ2LCAxMjEwOTcsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAwLCAKKyAgICAxMDExNiwgOTg3NywgOTIzMjksIDEyODk2MCwgMCwgNzA5NSwgODM3OSwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAKKyAgICAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgMTI4NDg1LCA5MjQzMCwgCisgICAgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgMCwgMTk0Njg2LCAKKyAgICA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA4MzI5NSwgMzc4MiwgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCAKKyAgICA4MjYxLCAxMjA5NTYsIDkxNzU5NiwgMTA4MzUsIDkxNzk2NiwgNjU1MzYsIDgzMjk0LCAxMjA0NjMsIDEyNTA1MSwgNzcwMiwgCisgICAgMTE4ODI0LCAxMjg5NzYsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAKKyAgICAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTI4NTc2LCA3NDkyMywgNDIyNTcsIDU2OTYsIDkyNjc3LCAKKyAgICAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDcwMTgzLCA3NjM0LCA2NTE2NywgOTg0NSwgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIAorICAgIDEyODcxOSwgMTQyNiwgNjgyMTcsIDk4MzYxNCwgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgNjc0MDMsIDc4MDY3LCAKKyAgICA0Mzg1OSwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIAorICAgIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgCisgICAgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIDE5NDk4OSwgNzg4ODMsIDAsIDc4MjEyLCAKKyAgICAxMjc3NDYsIDEwMjAsIDczNzYzLCA5ODM4MzUsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTIwOTIwLCA3ODczMywgMTAyMDUsIAorICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMTI4MDA4LCA3NDA1MSwgMTI4OTAxLCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAxMjgxNzMsIAorICAgIDEyNTAzNywgMCwgOTkxMSwgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgCisgICAgNzgyMDgsIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMTI4NjQ0LCA2ODMyNiwgMTk0OTExLCAxODE1LCAKKyAgICAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAwLCAxMDEyMywgMTIxMzk4LCA0NDEwLCAxMDQxLCAxMDU3NiwgCisgICAgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgMTI4MzQ3LCAwLCAwLCAxMjgwOTgsIDE5OTM4LCA2NTkwNiwgCisgICAgMTI3ODE5LCA5MTc4MTEsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCA5MjYzMywgNjEzNCwgNDEyNDYsIDY0NDAyLCAKKyAgICA5ODMxNDcsIDY5ODk5LCAxOTQ5MzgsIDAsIDEyMTQyNiwgNDEzODIsIDkxNzkyNywgMTI4NjUzLCA1MTczLCA2NTM0OCwgCisgICAgNTI3LCAxMjExNzQsIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIAorICAgIDIzMjksIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgODM0NjAsIDAsIDExMzcwNSwgCisgICAgOTE3OTEwLCAxMTIwMSwgOTI3MDgsIDc0NzY5LCAxMjY0NzAsIDY3NjgwLCA5MDY5LCA2MTQ0LCAwLCAxMTk4NDAsIDczODIyLCAKKyAgICAwLCAxMjgwMTAsIDY0OTE3LCA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCA5MjI1MCwgNjUwOTgsIDYzNjQsIDk1NiwgCisgICAgMTEzNzkyLCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMCwgMCwgOTgzNzM5LCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCAKKyAgICA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMTIwNTY0LCAwLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCA0MTI3NiwgMTI4MzYzLCAwLCAKKyAgICAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDExODI5LCAKKyAgICA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAxMjA3NjEsIDcwOTgsIAorICAgIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgCisgICAgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIAorICAgIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgCisgICAgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCAKKyAgICA3NDM0OSwgNjY0NzksIDY3Njg5LCA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIAorICAgIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCA0MzUxNCwgMTIxMzAsIDk4MzMwOCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIAorICAgIDEyNzg1MCwgOTgzMTQ0LCAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgMCwgNjM1OCwgCisgICAgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMTI3NzczLCAKKyAgICA0MzY4NSwgNzQzMDcsIDAsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMjA0MTMsIAorICAgIDkyMTkyLCAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzY0NCwgMTk0OTU5LCAxMTkxODcsIAorICAgIDIxMzUsIDExODM2LCAwLCAwLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgCisgICAgNzE5MTMsIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEyMTE3MSwgCisgICAgNjg4MzMsIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIAorICAgIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgCisgICAgNjgyMjgsIDY1NzEwLCAxMjgzOTksIDEyODQyOSwgNjc2NzIsIDY4NzgzLCA1MzcwLCA3MDQ2NSwgMjkzMSwgMTYzOCwgCisgICAgMTA5NjYsIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDc0NTg1LCA4MTcyLCA0MjAxNywgOTI3NTYsIAorICAgIDEwODQ0LCAxMjEwMTYsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDExOTk5OCwgMTIxMDc1LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAKKyAgICAxMTk5OTksIDAsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxOTQ2NDAsIDMwMTUsIAorICAgIDY4NzQzLCA2ODc0MCwgNTIxMSwgNjg4MDUsIDY0MDAsIDY4NzQ5LCA2ODc0OCwgNjg3NjAsIDgxODksIDExMjc2LCA2ODc1NCwgCisgICAgNzAyODQsIDM3MiwgMTI4ODI5LCA2ODc2MSwgMTEzNzgzLCA0MjEwMiwgNDE1ODUsIDEyNzc1MSwgMCwgNDIxMDEsIDI3NiwgCisgICAgNzg0MDIsIDY3NDI3LCAzMywgNjc0MjUsIDY3NDI0LCA5MDA3LCA2NzQzMCwgNDE1ODgsIDY2MDMzLCA0MjcsIDEwNzYzLCAKKyAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDk4Mzk0MywgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAwLCA5ODM5ODAsIDIzMjgsIAorICAgIDY2ODM3LCAxMDcxLCA0Mjg5OSwgMTI1MDg4LCA3NDg0OCwgMTIwODU3LCAxMTM3OTMsIDE5NDk4MSwgMTA0NywgMCwgCisgICAgMTk0OTQzLCA0MjkwOCwgMTI4NDgwLCA2OTcyMywgMTA2NTEsIDcwMzU2LCAwLCAxMjUxMTMsIDcyNDMzLCA2NjgyOSwgCisgICAgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgNjc5MCwgNjUxNjgsIAorICAgIDEzMjE2LCA5ODMxNTAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIDY5NjU0LCA3MTkxNSwgCisgICAgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAwLCA4NjQzLCA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAKKyAgICAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAwLCAwLCA3MTE3MywgNzg2MDcsIDkxOTYsIDY5NjcwLCAKKyAgICAxMjUwNzAsIDAsIDEyODMzOCwgMTIwMzM1LCAxMTg5MTEsIDAsIDk0MDQzLCAxMjkxOTQsIDAsIDAsIDEyMDAxMCwgNzM3OTUsIAorICAgIDg3MDEsIDY4MTMwLCAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAKKyAgICAxMjkyOTYsIDAsIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgCisgICAgNDI5MDIsIDczODA4LCAwLCA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIAorICAgIDcwMzY2LCAxMjAwMDUsIDExOTU4NSwgMTIxMjEyLCA1MDg0LCAxMjExODksIDEyMTEzNCwgNzUwNjIsIDAsIDczMywgCisgICAgNzQ2NDYsIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKKyAgICA5ODMxMjUsIDAsIDAsIDcwMzIzLCAxMjEzNzEsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIDUzNTgsIDk4Mzc0NCwgMCwgCisgICAgOTE3NzY3LCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIDY3OTgwLCAKKyAgICA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAxMjc5NjAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIDExNTgwLCAKKyAgICA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgNjc5NzgsIDc0ODQyLCA5ODMyODYsIAorICAgIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIDEwMTU2LCAxMjExOSwgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIAorICAgIDExOTIxMSwgOTgzMjk4LCAwLCA3ODAxMSwgMzUxLCA2ODc2NCwgMCwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDc4MDA4LCAKKyAgICAxMjgwOTQsIDAsIDQyMzc3LCAwLCAwLCAwLCAxMTM3NjcsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgCisgICAgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIAorICAgIDY0MjE1LCA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMjY2MDEsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIAorICAgIDgyOTgzLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMTIxMTIwLCAxOTQ4MzMsIDQzNDUyLCA2NzI0NSwgCisgICAgOTI5OTMsIDQyNTczLCA2Njg3OSwgODMzMjksIDY3ODEwLCA2OTc2NywgNzg3NTIsIDc0MzkyLCA4MTM1LCA2NDUwLCAKKyAgICAxMDA1NSwgNzc5OTYsIDExOTk0OCwgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDEyMTQ1MywgNzc5OTQsIAorICAgIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIDEyMDc5OSwgNzE4NjAsIDAsIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIDY2NDg2LCAKKyAgICAwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgOTgzNjc1LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIDc4NjkyLCAKKyAgICA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCA3NDAzMCwgCisgICAgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCAwLCA0MjcyMCwgOTI5NDksIDEwMjcyLCAxMDMwNCwgMTAzNjgsIAorICAgIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgNzEwNzMsIDc4ODEsIAorICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKKyAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKKyAgICAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIDk4MzcyNCwgNjQ1NTYsIDAsIAorICAgIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTEzNzk1LCAxMjcyOTcsIDExODIwLCAyOTkyLCAKKyAgICA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCA2Nzc1NywgMCwgNjY0OTYsIDQzNjEsIAorICAgIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCAKKyAgICA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCA3ODI2NSwgNTUzLCAxMTM3NjgsIAorICAgIDEyNzAxMiwgOTMwNTMsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMTk0OTE5LCAxMjc0NiwgMTI4NjcxLCA3MDMzOCwgCisgICAgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIAorICAgIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIDEyMTUxNywgNTUyMTksIDEyODgzMiwgCisgICAgOTgzODUxLCAxOTQ4NzcsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAKKyAgICAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAKKyAgICAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIAorICAgIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIAorICAgIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDk4MzY1OCwgMTY1NywgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgCisgICAgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY4NSwgNzExNzksIDQyMjI3LCA2ODMwMSwgODMzMjIsIDQxNjM3LCAKKyAgICA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgNTY0MiwgMCwgNTQ4NiwgCisgICAgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCA2OTkzOCwgMCwgNTY0MSwgODI1OSwgMTI2OTk0LCAxMDU4LCAwLCA2NzYzMCwgCisgICAgMCwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMjczNTIsIAorICAgIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCAKKyAgICA0MzgwOCwgMTk0OTcyLCA2NzYyMSwgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgCisgICAgNTYxMywgNjY0MDEsIDEyMTE0NSwgMCwgNTYxMCwgOTgzMjI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDAsIDEwNzg3LCAKKyAgICA0Mzk5OSwgMjk5NywgMTE5OTMyLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNTg3NSwgMjQxMiwgODMyMDYsIAorICAgIDgxODYsIDk4MDcsIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCA3MTg1NSwgNTgwNywgMTEzNjc4LCAxMDAzMCwgNTMwNiwgCisgICAgMTIzNjQsIDExODg2MywgOTI5NzAsIDExNzA0LCA4MzIwMiwgOTI1ODMsIDEwMjExLCAwLCAxMjA1NzksIDAsIDEyMTA2MywgCisgICAgMTE3MDYsIDk3MTAsIDEyNTAyMiwgODI5ODUsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgODMxNjcsIDkxMzMsIDc0MjYyLCAKKyAgICA5MTc5NjQsIDEwNDIsIDEyNTA2OCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAxMjEyNjYsIAorICAgIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgODMzOTksIDEzMDgsIDEyMTI1OCwgMjUzNCwgODEwLCAxMjUwODksIAorICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgMTIwMTg0LCAxMjA3MzksIDIzNjQsIAorICAgIDY2Mzg3LCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCA2NjQxMSwgMTAwMjcsIDcxODQxLCAxMjgxNTQsIDEyMzM3LCA3NDI4MywgCisgICAgMTI3MzY4LCA5ODMxNjcsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MDY4LCA2MzYzLCAyNzQ4LCAxMjEwMjIsIAorICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCA5Mjk4OCwgCisgICAgNzI3NSwgNzgzMDQsIDkzNSwgMTI3MDUyLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAKKyAgICAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDc4MzAwLCAKKyAgICAxOTQ5OTgsIDE5NDkxMiwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKKyAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMjEwMzQsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIDAsIAorICAgIDgzMzk4LCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIDQzNTQ3LCAKKyAgICA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAwLCA2OTc1OSwgMTEzNDEsIDQyNDk0LCAKKyAgICAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDcwODEwLCA2NDc4LCA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIAorICAgIDcxMDYsIDQ4NzcsIDEyOTEwOCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgMCwgNjQ3OTgsIDcwODA1LCAKKyAgICA1MzQ2LCAxMjgyNDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCA2Njg1MSwgOTE3NiwgOTI4ODIsIDEyMTE1MywgNjUyMzEsIAorICAgIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMTEyMDMsIAorICAgIDk4MzE1OSwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDEyMTQ0NiwgNjgxNjMsIDUzNDAsIAorICAgIDEyMDU1OSwgMTI3ODIwLCA0MzYzNSwgNzM5MjgsIDEyNTAwMSwgNzEwNjksIDgzMzE4LCAwLCA4MzMxNywgNjU0ODIsIAorICAgIDEyMTM5NCwgOTE0MiwgMCwgNjg1MDYsIDAsIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgCisgICAgNzI0MzgsIDUyOSwgODU4MCwgMTI3NDkwLCAwLCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAKKyAgICA2ODc0NCwgOTgzODI1LCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDc0Mzc5LCAxMDcyMSwgCisgICAgNjc2NjQsIDM0MzgsIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCAKKyAgICAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCisgICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDk4MzIxNiwgNTE2MSwgMTA1NzIsIAorICAgIDkxNzU1OCwgNDI5MDYsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTIwNDA2LCA5ODM2NDMsIDEyNjYwNSwgMTExNjcsIAorICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAxMDAzMSwgCisgICAgMTEzNzY2LCA5ODcwLCA2NzcyNiwgODYyMCwgNjU4MjQsIDkxNzg1NSwgMTE5MzgsIDEyMTMwOCwgNzI4NSwgOTgzNTU3LCAKKyAgICAxMTk1NzcsIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDEyOTE2OCwgMTI4MjY3LCAKKyAgICA3ODE2OSwgNjYxOTksIDAsIDM2MDksIDY4NjI0LCA3MDI4MCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCAKKyAgICA3ODQ3MSwgNjU3MDMsIDcxMjU2LCAxMjg1MTcsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgCisgICAgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMTI3NzkwLCAxMjA1NDgsIDEyODY0NSwgNjM0OCwgMjQzLCAxMzIwMCwgMTIwMTYwLCAKKyAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDkxNzg0NCwgNDI4NSwgCisgICAgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDk4MzI3MSwgCisgICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDEyODM4NiwgCisgICAgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDcwMTU1LCA3ODYyMiwgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTk1MDIzLCAKKyAgICAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIAorICAgIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIDc4MjgzLCAwLCAxMjQ1MywgNzA4NDcsIAorICAgIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAwLCA2NjI3OCwgMCwgNzgyNzksIDAsIDAsIAorICAgIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAxMjQ0OSwgMTI4NTUyLCA3MTIyNCwgNDM4NjgsIAorICAgIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgCisgICAgNDM0MzUsIDEyNDk2NCwgMTI1MDMwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIAorICAgIDQ2MzksIDEyNzU1OSwgMTk5MCwgMTExMDcsIDQ0OTgsIDc0MTY5LCA2NzczNiwgODMyNzMsIDEyNzI3MiwgNjk3MzQsIAorICAgIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCA3Mzk1OSwgMTI2NDY0LCAyOTUwLCAxMTk1NzksIDYyMTAsIAorICAgIDY1NzUzLCAzNzAsIDEyMTM2MCwgMCwgMCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMCwgNjkyMzAsIDAsIAorICAgIDE5NTAxMCwgNjU2ODgsIDc0OTUxLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgCisgICAgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIDcxMzE3LCA2NDkyMywgMTIwNTcxLCAKKyAgICA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIAorICAgIDAsIDcwMDY4LCAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgOTgzMjU2LCAxMjgzODksIDAsIDAsIDkwOCwgCisgICAgMCwgODYxMSwgMTIxMzg0LCAwLCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgNDE1ODYsIAorICAgIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIDc0ODgzLCAKKyAgICAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNTksIDEyNzE2MywgNjgxOTMsIDM0NywgMCwgCisgICAgOTE3NTQ0LCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNjgwNDYsIDEyMTQzLCAKKyAgICA2OTY1NywgNzg1MTIsIDEyODQ5MywgMTExNTMsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIAorICAgIDEwNjgxLCAwLCAxMjA5NzksIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCAKKyAgICA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAKKyAgICAxMjkxODEsIDEyMTUwMSwgNzM4NDcsIDc0ODQ1LCA2NTE3MiwgNDE3MjgsIDQxNzIxLCAxOTQ3ODAsIDE5NDc2OSwgCisgICAgMTIxNDk5LCA0MTIwMywgMTI3MDU2LCAxMzExMCwgNDE3MjYsIDE5NDg1NiwgNjcwNzcsIDEwMDAsIDY5NjUxLCAxMjc1MDksIAorICAgIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCA5ODM5NjgsIAorICAgIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAorICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgCisgICAgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgMTE5OTcwLCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgNjg3NjgsIDc4Nzk0LCAKKyAgICA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIDEyOTA5MywgCisgICAgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgMTEzNjk0LCA5NjI3LCA0MzY0NiwgNzg1NDIsIDc4NTM1LCAKKyAgICA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAKKyAgICAxMTk5OTUsIDk4MzQ5MywgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCAKKyAgICA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIAorICAgIDEyMDAxNSwgNjA0MSwgMTIwNTIwLCA0MTg5OSwgOTgzMjg4LCA4MDAyLCAxMjgzNjcsIDQzNjQsIDczNzMyLCA5ODM1NzAsIAorICAgIDY0MzMyLCAxMjA5NzYsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDY4MjQ2LCA3Mjc5LCAKKyAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAxMjExNTIsIDEyMTM4MSwgOTY2MCwgOTE3OTI5LCAxMzAxMiwgNDU3MSwgCisgICAgOTE3NTg4LCAwLCAxMTg5NDAsIDEyMDc4LCAyOTcwLCAxMjkxMjIsIDEwOTMzLCAwLCA3Nzg3MCwgMTIxMjQzLCA3Nzg0MSwgCisgICAgMCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEyMDg4NSwgMTI5NTAsIDkyMTYwLCAzNDg2LCA5ODM5NzMsIDc4MzExLCA0MjM5LCAKKyAgICAxMjgwNzMsIDEyNzc5OSwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgMCwgCisgICAgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgCisgICAgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIAorICAgIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCAKKyAgICA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIAorICAgIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgCisgICAgNjM4NzYsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDE5NDcxOSwgOTI3MTQsIDAsIDEyNzc4MiwgCisgICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgMTI0OTcyLCA3ODUxMSwgMzE2MSwgMjk1LCA3MTI1NywgMCwgOTIyMjMsIAorICAgIDEyMTMyOCwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNTAxLCA2ODIxMCwgMzk3MSwgOTgzOTU5LCAKKyAgICA3MDA2MywgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgNjgwOTUsIDY2NywgMTIzMzIsIAorICAgIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgOTgzMjgwLCA0MTU5LCA5ODM1NjIsIDAsIDk4MTUsIDYzODg0LCAKKyAgICAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIAorICAgIDYzODcyLCAxMjA5NDEsIDQyNDIxLCAxOTUwMzUsIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCAKKyAgICA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTAxLCAKKyAgICA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCAKKyAgICA2Mzg0OCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgCisgICAgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAwLCAKKyAgICA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIAorICAgIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIAorICAgIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIDc0MTU0LCAwLCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgCisgICAgNzE5MDIsIDAsIDEwNzcsIDE5NTAwMCwgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCA5MTc3ODksIDAsIDQyNzczLCAKKyAgICAxMjEzMzEsIDAsIDAsIDExOTIyMCwgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIAorICAgIDUzMzQsIDY1MDgxLCA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDEyNTAxNywgNjUwOSwgMCwgNTMyNywgNzg3NzYsIAorICAgIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCAKKyAgICA2Mzg2NiwgNzg2MjYsIDE5MTUsIDQ4NDYsIDY3NzU1LCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIAorICAgIDY5MjM4LCA2NDQzOCwgMTIwNzAsIDg3NjAsIDExMTcsIDExMzc1MCwgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCAKKyAgICA2MzgzNSwgNjM4MzQsIDk4Mzk0NywgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgNzAxNzMsIDYzODMzLCAKKyAgICA2MDQyLCA2NjM2MCwgODA4MywgMTI4MTY2LCA5ODM3MzMsIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM5MDQsIAorICAgIDUyMjcsIDkwNDcsIDYzODIyLCA3NDc5NywgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgCisgICAgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIAorICAgIDIwNiwgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIAorICAgIDYzOTMyLCA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAKKyAgICAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgCisgICAgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIAorICAgIDcyODMsIDAsIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKKyAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAwLCAyOTY1LCA3MjU4LCA4ODA4LCA2NjU3MiwgMTA4OSwgCisgICAgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMTExMDYsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgCisgICAgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAorICAgIDc0MzQzLCA2NzM3MCwgMCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgMTI1ODAsIDc4NTA3LCAKKyAgICA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgOTgzMzk0LCA3NDE1MSwgODMyMjcsIDY1MDIsIDk4Mzg1NSwgMTEwODUsIDEyMTI2MSwgCisgICAgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCAKKyAgICA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIAorICAgIDk0MDc2LCAxMjEwODYsIDkyNDY0LCAxMjA0NDQsIDY5NzMwLCA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIAorICAgIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgCisgICAgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAxMjAxMDIsIDQzOTgwLCA1NDg1LCAwLCAKKyAgICA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIAorICAgIDc0MjMxLCAwLCAxMTUzMCwgNjg2MzQsIDY4NjY4LCAxMjEyNDIsIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCAKKyAgICA0MjM1NCwgMTI4MDk5LCA5ODM2OTgsIDcwMDQ0LCAxOTUwNjUsIDAsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAwLCAKKyAgICAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIAorICAgIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgCisgICAgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIAorICAgIDYzOTA2LCAxNTk4LCA2MzkwNCwgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgCisgICAgNDE1ODksIDEyODY5OCwgMTI4OTE4LCA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTI2NTEzLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCAKKyAgICA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDk4MzYzMywgNDUxOCwgCisgICAgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTgzNTkzLCA2NjI3NywgNDE3MjQsIDY3NzE2LCAKKyAgICA0MzA3MywgNDE2OTAsIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIAorICAgIDEyODgxNywgMTI5MDY3LCA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAKKyAgICAwLCA1MzM5LCA3NDMyMywgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDAsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIAorICAgIDU2ODQsIDg2NzgsIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgCisgICAgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAwLCAxMjA2NDcsIDEyODkzMCwgCisgICAgNTAsIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDc0NDAzLCA5ODM4MTgsIDc0Mjg0LCA2NjQ2OCwgNjY5MDUsIDEzMjU5LCAKKyAgICA0NDQ4LCAxMTkxNTAsIDEyMTQwNiwgODMzNDksIDcwMDQzLCAxMzIxLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDEyMTE4NiwgCisgICAgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDEyNzg1MiwgMCwgMCwgOTgzMDc1LCAxMjUwMSwgNjQ2MDQsIAorICAgIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgOTgzNzA2LCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgCisgICAgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIDU1MjYyLCAKKyAgICA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgMCwgMTE4OTY4LCAxMjI3NywgMTIxMjM5LCAKKyAgICAxMTk5NSwgOTI1NTMsIDEyMTAwNiwgMTIxNTgsIDcwMTcwLCA4NzQxLCAxMDE5NywgNjg3ODAsIDkyNDI2LCAxMjEyODUsIAorICAgIDY1MzEsIDgzMDUxLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDkyOTM2LCA5ODM2NTAsIDE4NzMsIDEwODcsIDEyNDk2NiwgMCwgCisgICAgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzExMTMsIDEyNjU1OSwgCisgICAgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDAsIDcwODQzLCA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDY5NzQxLCAxMzI5NSwgCisgICAgNDMxOTEsIDEyODAzMCwgMTI4NTcxLCAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCAKKyAgICA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgCisgICAgOTM5OTcsIDk4MzMzMiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgCisgICAgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIDY0MzA2LCAxMjEzMDksIDAsIDQ5OTksIDE5NDY0MiwgCisgICAgNjc0MDEsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAxMjA2MDIsIDI3MzksIDAsIDgwNDQsIDc0MzEzLCAxOTQ2NDMsIDQxNzg5LCAKKyAgICAxMjgxNDIsIDEwODA5LCA2NjI3OSwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIAorICAgIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTk0NTc3LCAKKyAgICAwLCA0MTc5MSwgMTEwNCwgMCwgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgMCwgMTA4MiwgCisgICAgMTIxMDI0LCA4NDI4LCA2NTY5LCAwLCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCAKKyAgICA0NDAyMSwgNjQ1OCwgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgCisgICAgMTIwNjc3LCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgCisgICAgOTI0NDksIDAsIDExMjE2LCAxMjEzMDcsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAwLCAwLCA0MTUzNywgNjY0NTMsIDgzMDMsIDgyODIsIDExODE3LCA3Mzg1NywgCisgICAgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzAxMTUsIDExNDY3LCAzNjY0LCA2NTkyMSwgNjQyOTksIAorICAgIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgNjc3MjUsIDY1OTI2LCAKKyAgICA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgCisgICAgMTYzMywgMCwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgMTMwNzgsIDAsIDQ3NjAsIAorICAgIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDE5NDY1MiwgNDIyMzYsIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgCisgICAgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgCisgICAgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgCisgICAgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgCisgICAgNDM4NSwgMTI4NzM2LCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgCisgICAgOTgzMjgyLCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgCisgICAgNDM4MjEsIDU3MDksIDEyODI5NiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIDk4Mzg5NiwgMTA3OSwgMzg2NywgNTcwOCwgMCwgCisgICAgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCAKKyAgICA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgMTI5MTc4LCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIAorICAgIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCAKKyAgICA5MTc1OTEsIDkxNzU0MCwgOTE3NTkzLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAxMjA5OTQsIDEyOTE0MSwgMTIwNTQxLCAKKyAgICAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDk4MzE3MSwgMTE4OTI2LCAKKyAgICA4OTcyLCAxMTk5MTgsIDc4NDksIDEyMDA5MiwgODMxMzAsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKKyAgICAxMDk0OCwgNjY4MjUsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDkzOTkzLCAKKyAgICA3MTg0NywgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIAorICAgIDYzNzgwLCA2Mzc3OSwgMTU4MywgMTE5OTIzLCAxMzI2MCwgNDU1MCwgMTIwNTk4LCA2NDIwNSwgMTI5MTA3LCA3MTA3MSwgCisgICAgNDE1MjIsIDQxNTIzLCA2ODUyMywgOTgzNzcyLCAxMTg5MjMsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgCiAgICAgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAKLSAgICAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDAsIDk4Mzc2NSwgMCwgMCwgMTk0NjU4LCAwLCA2ODA5LCA2Mzc4NiwgCi0gICAgNjAzMSwgMCwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAKLSAgICAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCAwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgOTgzMTMxLCAwLCAKLSAgICA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCAKLSAgICA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIAotICAgIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCAKLSAgICA2Mzc5OCwgNjI2MCwgMCwgMCwgOTQwNzQsIDYzNzkzLCAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIAotICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAotICAgIDk4MzMyOSwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgCi0gICAgMCwgMCwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIAotICAgIDc5MiwgMCwgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAKLSAgICAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgCi0gICAgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgCi0gICAgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIAotICAgIDY0NDMzLCAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDk0MDM5LCAKLSAgICAwLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDAsIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCAwLCAwLCAwLCAKLSAgICAxMDAyNSwgNjk5MTUsIDI5MTgsIDAsIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgMCwgCi0gICAgMTI3ODI5LCA2NTM5MywgMCwgNzQxMzgsIDAsIDAsIDAsIDc0MTM5LCA5MjcxMiwgNjUzOTQsIDExNTQ4LCA1MjcwLCAwLCAKLSAgICA2NTM5NiwgMCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDAsIDAsIDEwODg4LCA5ODM2MDQsIDY1MjQyLCAwLCAKLSAgICAzMzMwLCAwLCAwLCA5ODM5NzQsIDAsIDAsIDc0MjU5LCAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgCi0gICAgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDAsIDkwMzUsIDAsIAotICAgIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAwLCAxNjQsIDAsIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDAsIAotICAgIDcwMDE5LCAxMzI0NSwgMCwgMCwgMTI3Mzc2LCAwLCA3MDAzMSwgMTI3NzU2LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAKLSAgICAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIDY1NTA5LCAwLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIAotICAgIDMxODAsIDAsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCAwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgMCwgCi0gICAgNzgxNDYsIDkyNjExLCAwLCAwLCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAxMjgxNjEsIDExMDU3LCAwLCAxMzI3NiwgMCwgCi0gICAgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMCwgMCwgMCwgMTIyMjksIDQxNTIzLCAwLCA0MzQxMSwgNzM3NTEsIDAsIAotICAgIDY0ODEzLCAwLCAwLCAxMDQ3NiwgMzg1OCwgMCwgMzkzMiwgNjQ5NTgsIDAsIDAsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIAotICAgIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDAsIAotICAgIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCAwLCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCA4MDkyLCAKLSAgICA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAwLCA3NDYsIDEyMDc4NCwgMCwgMCwgMTIwMTgsIAotICAgIDY1Mjk0LCAwLCAwLCAwLCAwLCA0NDIyLCA0NzA4LCAzNzk5LCA3NDI5MiwgMTE5MzU3LCAwLCA3NDQzMCwgMCwgMTE3MDAsIAotICAgIDQzNzQsIDAsIDEyODE3OSwgMTM2NCwgMCwgODAzOCwgMCwgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDAsIDY3MzUsIDczOTc5LCAKLSAgICAxMzE3NCwgNzM5NjgsIDEzMjI1LCAwLCA2OTgwOCwgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDAsIDQyODU1LCAxMTg4NTYsIAotICAgIDQyODY2LCAwLCAwLCAwLCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgMCwgCi0gICAgOTgzNTY4LCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAxMTkzNTIsIAotICAgIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgOTgzMjQzLCAxMjY5OTQsIDQxMzczLCAKLSAgICA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgCi0gICAgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgMCwgMCwgNDI2ODgsIDEyNDQxLCAKLSAgICAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIAotICAgIDExOTEwMSwgMCwgNjQ4ODQsIDExOTg3MiwgMTE5MzQ1LCA4NTk3LCAwLCAwLCA5ODY0LCAwLCAxMjA3ODUsIDExOTg3NCwgCi0gICAgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIDExOTg3OSwgNjY1OTAsIAotICAgIDEyODEyMywgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNzM4NDksIDAsIDQzNjM4LCAKLSAgICA3ODUzNywgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIAotICAgIDEzMjA2LCAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgNDMyMzgsIDAsIDEzMTkwLCAKLSAgICAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDcxMzY5LCAKKyAgICA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCA5ODM3NjUsIDY2ODI4LCAxMjg5NzIsIDEyNzgzOSwgCisgICAgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIAorICAgIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCA2NDcxMCwgMTA3NDcsIDEyNSwgCisgICAgMTIwODAzLCA2NDg5MCwgOTgzMDY0LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgMTMyNTgsIDk1MzYsIAorICAgIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgCisgICAgNjM3NDksIDEyOTAyNSwgMCwgMTI3OTI4LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCisgICAgNjM4MDUsIDYzODA0LCAxMTE0MCwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMTI4MzkxLCA5NDA3NCwgCisgICAgNjM3OTMsIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgCisgICAgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCAKKyAgICA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgMTI5MTgwLCA3NTA1NiwgNjM3NjksIDk1MzAsIAorICAgIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgCisgICAgMCwgODc0MiwgMTk1MDI5LCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKKyAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA0MjA2MywgMTA5MCwgNjg4MDMsIDEyMDc3OCwgMTE2NjUsIDc0MTMzLCAKKyAgICA0NTU4LCA2NTY4NSwgOTUyMywgOTgzNDUzLCA2Mzg1NywgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIAorICAgIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDY4MDcxLCAzMTcwLCAxMjQ4NSwgNDM4OTEsIDEwODcyLCA0Mzg5MiwgCisgICAgMTMwMDYsIDQzOTMzLCAxMjAwNzQsIDAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgCisgICAgMCwgNDIwNjUsIDEyODM2OCwgNDM4ODksIDk0MDM5LCAxMjkyOTksIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIAorICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgCisgICAgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIAorICAgIDEyMDU5MiwgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAKKyAgICA5ODMyMzgsIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAwLCAxMDg4OCwgCisgICAgMTIwOTM0LCA2NTI0MiwgMCwgMzMzMCwgMCwgMCwgNjgzNDAsIDAsIDAsIDcxMjAyLCAzMzA0LCA0Mjc1MywgOTI1ODgsIAorICAgIDcwMjk4LCA3NDY0MywgMTYyNywgMCwgMTI3NzY1LCAxOTQ3MzUsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIAorICAgIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIDkxNzk3NywgMTI4MDA1LCAwLCA5MjIwNywgCisgICAgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCA2NzcxOSwgNzAwMTksIAorICAgIDEzMjQ1LCAwLCA2ODgwOCwgNjY4MTgsIDAsIDcwMDMxLCAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCAKKyAgICA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMTI5MTkyLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIAorICAgIDEyNTEwMiwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDcxMDkwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgCisgICAgOTgzMzIxLCA3ODE0NiwgOTI2MTEsIDAsIDcwMjA0LCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgCisgICAgOTE3OTc2LCAxMzI3NiwgMTI1MTMzLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTIxMjAzLCAKKyAgICAxMjIyOSwgMTE2ODAsIDkyOTU2LCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDAsIDEwNDc2LCAzODU4LCAKKyAgICA2NDE3NSwgMzkzMiwgNjQ5NTgsIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCAKKyAgICA0MTc4NCwgMTE5MTc1LCA2NDE2MywgNzc5OTcsIDAsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIAorICAgIDEyODYzMSwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCAKKyAgICA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgCisgICAgMTE4ODI2LCA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjc1NDUsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgCisgICAgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAKKyAgICAxMzY0LCAwLCA4MDM4LCAxMjA4ODMsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCAKKyAgICA3Mzk2OCwgMTMyMjUsIDE5NDkwMiwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCA3MTQ3NiwgNDI4NTUsIDExODg1NiwgCisgICAgNDI4NjYsIDAsIDAsIDEyNzk4NiwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAxMTkzNTQsIAorICAgIDk4MzkyMCwgOTgzNTY4LCAxMjg4NzEsIDEyNzgyMSwgNjc2ODUsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIDEwNDA0LCAKKyAgICAxMDM0MCwgMTE5MzUyLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIDk4MzI0NSwgCisgICAgMTIxMTQ5LCA0MTM3MywgNjg0ODYsIDEyMzAzLCAxMjg0NzYsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgCisgICAgMTE2NTYsIDAsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDkyNzM3LCAxMDk2LCA0Mzg1MiwgCisgICAgMTIxNDMzLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDkyOTAyLCA4MDMyLCAKKyAgICAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMTIxMTU2LCA2NDg4NCwgOTI5MDksIDExOTM0NSwgODU5NywgCisgICAgNzExMDAsIDEyOTA2MiwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIDk0MTA3LCAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAKKyAgICAwLCAxMDQ1OSwgMTE5ODc4LCAxMjQ5NDksIDExOTg3OSwgNjY1OTAsIDEyODEyMywgNDE1MzMsIDY2MzM3LCAxMjg2NjMsIAorICAgIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA2Nzg1NiwgMCwgNDM2MzgsIDc4NTM2LCAxMjExODcsIDYyNjEsIAorICAgIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIDEyNTA2NCwgCisgICAgOTE3Nzk1LCAyOTI1LCA3MzgwOSwgMTMwNTYsIDkyOTE0LCAxMzIxMiwgNDMyMzgsIDEyMTM5NiwgMTMxOTAsIDEzMTg3LCAKKyAgICA5MjU0MSwgMTMxOTgsIDExODc5MywgMTIxMDg5LCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCA3MTM2OSwgCiAgICAgNjc3MCwgNDMzMzEsIDAsIDY1NjIwLCA5ODM3MjgsIDQzNTQ0LCAxMjY0NjYsIDAsIDQxNDQ0LCA2NTYyMSwgNjk5NTUsIAogICAgIDkxOTcsIDUyNDYsIDExOTEwNiwgMTMxODUsIDk3MDksIDEyMDMyMywgMTIwMzIyLCAxMjMxNCwgNjU2MTYsIDUyMzgsIAotICAgIDExOTMzMywgMCwgMTE5MzM3LCA1MjM2LCA0MDk3OSwgMCwgNzQyMDEsIDgyODYsIDEyODUzNywgMzkzNiwgMTE5MzMxLCAKLSAgICAxMTY5OSwgNDEzNDcsIDEyNzI0OSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIDc5NjksIAotICAgIDEyNzI2NiwgNzIxOSwgMTI3MjUwLCAxMjgyNTEsIDEyMDUwOSwgMCwgNjYyMjQsIDczNCwgMjk3OSwgMTIwMzAzLCA2NTYxOSwgCi0gICAgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDEyMDMxMCwgNzQ1MTEsIDQxNzcwLCAxNjcwLCAKLSAgICA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgMTIwMzE1LCAxMjAzMTQsIDExNTA2LCAKLSAgICAwLCA0Mjg0MSwgMTMyNjcsIDAsIDAsIDQxNzc1LCAwLCA3MTMwLCA0MTc3MywgMCwgMTA2NjMsIDAsIDAsIDAsIDYxNTEsIAotICAgIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMCwgCi0gICAgOTI2NDcsIDU4MDgsIDY1OTIyLCAwLCAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDAsIDAsIDY4MDk3LCA2NDU3NSwgCi0gICAgMTI2NjM3LCAxMTk2NSwgMCwgNjgzNTgsIDAsIDY5Nzg5LCAwLCA5MjI2MCwgNjgxMDIsIDk2OTgsIDc4MTQsIDc0NDc2LCAKLSAgICAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgMTE5MjU4LCA3ODQ5MCwgNzQyMTksIDAsIDAsIAotICAgIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDAsIDEyMzYxLCA1Njc3LCA1NTg4LCAwLCA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgCi0gICAgNTY3MywgMTIwNTM0LCA1Njc2LCA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgMTI5NCwgMCwgNzgwNTksIDAsIDQyNTExLCAKLSAgICAxNzI3LCAxMjA3MjUsIDQyNDM2LCAwLCAwLCAwLCA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgMTAzMTYsIAotICAgIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgMCwgMTIwNzEyLCA1ODQxLCA1ODM3LCA1NTIzNCwgMCwgMzEwNSwgMTI4MjksIAotICAgIDU4MzgsIDU3OTYsIDAsIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDEyMDA5MSwgNzk1NiwgCi0gICAgNTk4LCAwLCA2NDY0OSwgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIDEyMDA0MSwgOTgzMjU1LCAwLCAwLCAxMjg4NTUsIAotICAgIDAsIDg0NywgMTI4MjQyLCA5NTI5LCAwLCA2NjY1NywgNjk4MCwgNzg0ODMsIDEyMDAzNSwgNzg0ODQsIDk4MzQ5MSwgMCwgCi0gICAgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgMCwgOTgzMDU1LCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIAotICAgIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAKLSAgICAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIAotICAgIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAxMDU2OCwgMCwgOTgzNjE4LCAyODY5LCAwLCA0MTAxNSwgMTk0NjkyLCAKLSAgICAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIDAsIDQyNjA4LCA3ODQ2OSwgOTg4NCwgNDc1OSwgMCwgMCwgMTAyNjYsIAotICAgIDQxMzU5LCAxMTcwLCA0MzM2NSwgNjk4MTAsIDczOTA4LCAxNjA5LCA5MDIsIDAsIDYzOTM2LCAxMjg4NzUsIDExNjYxLCAKLSAgICA4MTIyLCA1ODE4LCAwLCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgMCwgMCwgODA3LCAKLSAgICA0MzA3OSwgMCwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDAsIDQyMTU1LCAwLCA0MTM1NiwgNzQxMTAsIDExODgwMSwgCi0gICAgMTI2NjE0LCAwLCA4Njc2LCA5ODMyOTEsIDAsIDU1ODIsIDQ1MSwgNjM5NDEsIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIAotICAgIDAsIDAsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIDEyODg1MywgMTIwMDE2LCA3NDI4MywgMTEwMDUsIDAsIAotICAgIDY2NjU2LCA2NjA0NCwgMCwgMTk0Njk4LCAwLCAwLCA0MzM5MywgMTAwOTQsIDAsIDExNTI5LCAxMDg1NywgMTIwNjQzLCAKLSAgICA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDAsIDY4NDA1LCAwLCAwLCA4MTcxLCAwLCAxMTkwOTcsIDEyNzA2NCwgOTE3NTQzLCAKLSAgICAzODMsIDcxNTQsIDQxNjU2LCA5MjYzNCwgOTQwNDAsIDAsIDUxODcsIDcxMjk2LCAxMjcyNzcsIDExMjg2LCA2ODYyMCwgCi0gICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgOTgzODI3LCA4MjkyLCAxOTUwNzQsIDQ5ODAsIAotICAgIDg4NjAsIDczOTQ3LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDAsIDAsIDEwNjMxLCA2NjAzMSwgNzk3MiwgCi0gICAgMCwgNzg3ODUsIDAsIDc5MDAsIDAsIDExMzA5LCAzODA2LCA0MTk4LCA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAKLSAgICAwLCAxMjkzMSwgMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIAotICAgIDAsIDAsIDEyODM2LCAwLCAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAwLCAwLCA3NDY0LCAwLCA2NTg2NSwgCi0gICAgMCwgMTk0NjUwLCAxMjcxNDQsIDAsIDkzNDIsIDEyMDQ2NCwgMCwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIAotICAgIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDEyNzE1MywgCi0gICAgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMCwgNzQxMDUsIDM2MzMsIDk4MzkwMCwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgCi0gICAgNzgyODEsIDk3NzEsIDk4MzkwNSwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIDY2NDgzLCAKLSAgICAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIAotICAgIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDk4MzY1OSwgODkzMCwgCi0gICAgNjY2NzgsIDc0MjQ5LCAxMTkzLCAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAwLCAwLCA3NzQzLCAwLCAwLCAKLSAgICA3NzkwNCwgOTI2NDAsIDc3OTA1LCA5MDM0LCA2MDM5LCAwLCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIAotICAgIDAsIDAsIDAsIDQyODE1LCAwLCA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIAotICAgIDAsIDAsIDEyMDMzOSwgNjUxNTksIDY0MzkwLCAwLCAwLCA1NTIwLCAxMTY2MiwgMCwgNjUzMzAsIDQyODEyLCAwLCAwLCAKLSAgICAxMjMyNiwgOTgzODU2LCAwLCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODYxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5MTc1ODQsIDQzNzAyLCA5ODM1NzYsIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAxMjAwNzksIDg2NDQsIDAsIDAsIDAsIAotICAgIDc0Mjk2LCA0MTkwOSwgMCwgMTIwMzMyLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDAsIDQxOTA3LCA2NjY0NywgCi0gICAgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgMCwgMTA3NzMsIDAsIDAsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAKLSAgICAxMzE0NiwgMTI3MTg1LCA2MzkzMSwgMCwgNjU5MDIsIDI4ODIsIDAsIDAsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAKLSAgICAwLCA5ODM2NjAsIDAsIDczODYwLCAwLCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCAKLSAgICA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgMCwgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIAotICAgIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAxOTQ5MzUsIDAsIDAsIDk4MzA2NCwgMTk0NzIwLCA2NTA1NiwgMzYyMCwgNDExODAsIAotICAgIDY4Mzc4LCA0NTU2LCAwLCAwLCAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAKLSAgICAxMjc1MjcsIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAwLCAxMjg5MSwgOTgzNzU1LCA5ODM2MzYsIDYzOTk5LCAyMDE2LCAKLSAgICA0MTkxNywgOTc4OCwgNjM5MjgsIDAsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCAKLSAgICA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIAotICAgIDc0Mjc2LCAxMjAwODAsIDY3ODQsIDc4Nzg4LCA2ODE4MSwgMCwgMCwgMCwgMTI3NTM0LCAxMjE0NywgOTAyNCwgNjYzNzgsIAotICAgIDY2NDcyLCA5ODM5MjksIDY0Mjg5LCA2NTI4OSwgNzgxNTEsIDY2NjU4LCAxOTQ5MjksIDY0NTA5LCA3ODE1MiwgMCwgCi0gICAgMTI2NTA1LCAxMTA1MSwgOTgzMjk2LCAwLCAxMTM1NSwgNjU4ODUsIDAsIDEyODMxMCwgNDEyMTQsIDAsIDEyMjk5LCAwLCAKLSAgICA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDAsIAotICAgIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCAKLSAgICA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCA2NTYwNSwgNjgwMywgMCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgCi0gICAgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgCi0gICAgNDI3NDIsIDk1MTcsIDExNTE4LCAwLCA3ODc5MCwgMCwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCAKLSAgICA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIAotICAgIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIAotICAgIDAsIDEyNjQ3OSwgNDE1LCA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIAotICAgIDAsIDYzOTYxLCA0NDcyLCAwLCAwLCA3ODE1OSwgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgCi0gICAgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAKLSAgICAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgCi0gICAgNjQ4NzMsIDExOTkyLCAwLCAwLCA2Mzk4MCwgMTE4MDEsIDM2MjIsIDk4MzEyNCwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgCi0gICAgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCA0MzYyOCwgMCwgOTgzMjkyLCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgCi0gICAgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgMCwgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgCi0gICAgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgMCwgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIAotICAgIDkyMzUxLCAwLCA3NDQyNSwgMTEyOTksIDE1NjEsIDAsIDkyMzU5LCA2NDk0MiwgOTgzNTU5LCAxOTQ3MzMsIDk4MzY4NiwgCi0gICAgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIDY5Nzg0LCA3NDA2MCwgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgCi0gICAgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDE5NDY2OSwgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIAotICAgIDAsIDY2NjE2LCA2ODQyMSwgOTgzOTE5LCAwLCA1NDA1LCAxMjc4NzUsIDY0ODY2LCAwLCAxMTk1ODMsIDEyODM0NSwgCi0gICAgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCA2NDY5MCwgMzI1NCwgMCwgMCwgMTI4MjA3LCA0MjM5MCwgNDM2NzgsIAotICAgIDE5NDcyNSwgOTgzOTA5LCA2NTA3NywgMCwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDAsIAotICAgIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCA5ODM3NjIsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgNzQ3NjcsIDAsIAotICAgIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCA5ODM3NjEsIDM3ODgsIDk4MzEwNiwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgCi0gICAgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgOTgzNjk3LCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIAotICAgIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCAKLSAgICA0NzU1LCA3NDI0NCwgMTk0NjIxLCAxMTQ0MywgMCwgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgCi0gICAgNjQyMDYsIDExNDgzLCA3NDUxMCwgMCwgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIAotICAgIDQyNDgyLCA0ODUsIDEyODAwNiwgMCwgOTgyOCwgMCwgMCwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCAKLSAgICA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIDAsIDExODk0NiwgMCwgMCwgNzQwNDEsIDAsIAotICAgIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIDAsIDAsIDAsIDkxNTAsIDAsIDQyMzkzLCAxMzA4NiwgMTMxMCwgMTk0Njg3LCAKLSAgICA5MzM3LCAxMjA1MiwgMTA2NDMsIDU1MjcxLCA5ODMxNzksIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCAKLSAgICA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgNjU1NCwgMCwgMTE5MTQsIDU0NTIsIDAsIDAsIDAsIDAsIDAsIDE5NDY4MSwgCi0gICAgOTI1NjAsIDI3MTMsIDAsIDk2NTAsIDQzMzMwLCAwLCAxOTQ2NzUsIDE0MDYsIDAsIDAsIDkyNjU5LCAwLCA2ODIyMywgCi0gICAgNDE0MywgMTk0Njc3LCAwLCA2NTc0OCwgNDE0MSwgOTY4MiwgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIAotICAgIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCA0MTQ1LCA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgCi0gICAgNTUyNTAsIDkxODUsIDk1NTAsIDAsIDQzNDAzLCAwLCAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjA1LCAKLSAgICAxMjk1NSwgMTA1OTYsIDI4ODgsIDE5NDY0NSwgMCwgMCwgOTY1NywgOTAxOSwgMTk0NzY2LCAwLCAyODc4LCA1MzkwLCAwLCAKLSAgICAxOTQ5NjEsIDAsIDY4Njc5LCA0MzU1MiwgNzUwMSwgNjMyOCwgMCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgCi0gICAgNTIzNSwgODAzLCA2ODM4MSwgMCwgMCwgODk4NiwgMTI2NTQyLCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAKLSAgICAxMjY2NDcsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDAsIDQzMzk0LCA1NTUsIDAsIDAsIAotICAgIDY2NjQ2LCAwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgCi0gICAgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCAKLSAgICA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIDkxNzU1MywgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIDEzNDIsIDY4NDQwLCAKLSAgICA2NDE3MSwgMTI2NzA0LCAxMDkwMywgOTgzNDk0LCAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCA5ODMxMTIsIAotICAgIDAsIDY0MzgxLCAwLCAwLCAxOTUwOTAsIDQyMjQ1LCAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCAKLSAgICA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDExOTU5OSwgMTIwODMwLCAwLCAKLSAgICAxMTk3LCAxMjgyODIsIDExNDksIDE5NDk3MCwgMCwgMCwgNDA5OTAsIDQzNzY1LCAwLCAzNDkyLCAwLCAxMjc5NDIsIDAsIDAsIAotICAgIDAsIDEyODM4LCA5ODM5NzgsIDE5OTQ4LCAwLCAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgMCwgMTE5MDU5LCAxMjAzNiwgCi0gICAgNDEzMDksIDAsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAKLSAgICAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIDkyNjgwLCA5ODM3ODksIDY4MTU0LCAwLCAxNzQzLCAwLCAwLCAKLSAgICA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgMCwgNjQ0MzksIDAsIDAsIDkyNjg2LCAwLCAwLCAxOTQ5NjcsIDAsIAotICAgIDAsIDMzOTUsIDkzNjIsIDEwODc4LCAwLCAwLCA3ODM2MiwgNjQ4MzAsIDAsIDEyNjU1NywgNDEwOTEsIDM0MjYsIDEzNDQsIAotICAgIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAwLCAKLSAgICA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgMCwgMTE4ODkyLCAwLCA5NDcyLCAwLCAxMTkyOSwgMCwgNzE3MCwgCi0gICAgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIDc4NzEzLCAwLCAxOTQ3NDAsIDEyODY5MSwgOTIxODUsIDY2Njk5LCAKLSAgICA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNywgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDAsIDQzNjE5LCAKLSAgICA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAxMTc3NiwgNzU1OCwgMTI3MTU4LCA2NTYyNywgMCwgMTA3MTgsIAotICAgIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCAwLCAwLCAwLCA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTIwMzE5LCAwLCAKLSAgICA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDAsIAotICAgIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgMTA4OTksIDY1NDY5LCAKLSAgICA5MjM2MiwgMCwgMCwgMjQxMCwgOTkzLCAwLCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgCi0gICAgMCwgNzExMCwgNzQ0NjIsIDIwNjYsIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCAwLCA0MjI0LCAxMzM2LCAKLSAgICA0MTUxOCwgMCwgMCwgMCwgMCwgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAwLCAwLCAyNzIsIAotICAgIDQyNjMsIDg3OTMsIDAsIDAsIDQxNTAyLCAwLCA5ODMsIDEyNTQ5LCAwLCAwLCAxMTkwLCA0MTA5LCAxMzM1LCA4NDEsIAotICAgIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDE5NDgwNiwgNzAwMjcsIDIwOTksIDUxMjAsIDI0MDksIAotICAgIDc3OTksIDAsIDc0NDI0LCAwLCAwLCA0NzMxLCAwLCA2NjYyOSwgMCwgMCwgMTI1NSwgNDE0OSwgOTI0NywgMCwgOTkxMywgMCwgCi0gICAgMCwgNjQ5MTQsIDkxNzc4NywgNjUxMDEsIDAsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIAotICAgIDEwODQyLCA0MTM1NCwgNDIxMjMsIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDAsIDgxODAsIDAsIAotICAgIDAsIDk5NzIsIDczODY1LCA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDAsIDAsIDkzOTYwLCA5ODMzMjIsIDEyNjU4MSwgCi0gICAgMTA2OTUsIDAsIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDAsIDAsIDEzMzExLCA2ODQwMywgNDE4NTcsIAotICAgIDY0MzIxLCA4MzU5LCAwLCAxMjY4OSwgMCwgMTk0NTk0LCAwLCA5ODMzMTIsIDk4Mzg4MSwgNjgxODMsIDAsIDk4MzMxNCwgCi0gICAgMTI4NywgNTQzNiwgMCwgOTgzMzE3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgCi0gICAgODk4NSwgMTIxMDksIDk4MzMyMywgMCwgMTI3MjQyLCAwLCAwLCAzNjUyLCAxMDUzNywgMCwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAKLSAgICAyNzksIDczNzQ1LCAwLCAwLCAwLCAxNDg5LCAwLCAwLCAwLCAzODk5LCAxMDA3LCA0MjEyNCwgOTgzNTU3LCA0MjEyMiwgCi0gICAgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgMTM0NSwgNzg2MDAsIDAsIDAsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIAotICAgIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIAotICAgIDQ5MiwgODY4NSwgMCwgOTgzNzU5LCAwLCA3ODYyMiwgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIAotICAgIDc4NjE2LCAyMjk3LCAwLCA3MzgzNywgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCAKLSAgICAxMjAyNzYsIDk5MzMsIDAsIDY2NTE1LCA3NjcsIDU1MjQsIDcwMjgsIDAsIDAsIDExOTgyNywgMTE5ODE3LCAxMTk4MjgsIAotICAgIDc4NjMzLCAxMDg5NiwgMCwgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCAKLSAgICA0MTU1MSwgMjQzNCwgOTQwMTgsIDAsIDEyMDU3OSwgMCwgNDYzMSwgMCwgMCwgNjQwNywgMCwgNjMzOCwgNDMyMTQsIDAsIAotICAgIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIDAsIDkzOTgzLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIAotICAgIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgCi0gICAgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCAKLSAgICA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgMCwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIAotICAgIDc4NjM0LCAxOTQ3LCAwLCAwLCA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgCi0gICAgNjUzNTksIDAsIDgwMTcsIDExOTgzMSwgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgCi0gICAgMTIwNjk2LCA0OTA0LCA5ODMzMzMsIDY5NjUwLCAxMzY1LCA5MjUzLCA0Mjc1NywgNDM0MzYsIDc0NjIsIDAsIDAsIDAsIDAsIAotICAgIDExOTU4NywgNjQ0MTUsIDAsIDAsIDUzOTgsIDAsIDEyNzM4NiwgOTM5NTMsIDAsIDAsIDExOTAxNSwgMCwgMCwgOTQ3NiwgMCwgCi0gICAgOTgzNzc3LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAwLCAxMzAwNSwgMCwgMzYyOCwgMCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCAKLSAgICA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAwLCA2NDY2NSwgNDMwODYsIDkxMTQsIAotICAgIDAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCAKLSAgICA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCAwLCAKLSAgICA2MDE4LCA5MjI5MCwgMCwgMTIyNzYsIDAsIDY4MzcyLCAwLCA5MjI1OSwgMTE5MjQ0LCAwLCA5ODMyMzAsIDEwNDY3LCAwLCAKLSAgICAyNDQzLCAxMDkxOCwgNzgyMTcsIDExOTgyNSwgMTAwMSwgOTI0MSwgMTkyNywgMCwgMCwgNzM5ODcsIDEyNzg4NSwgMCwgMCwgCi0gICAgMTE4ODI4LCAxMjAyNzEsIDY1Njc4LCAxMjg2NywgMCwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgCi0gICAgNTE4LCA2NTg1NywgMCwgMTI4Njc0LCAxMzIwNCwgNDM4NywgODU3LCAwLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKLSAgICAxMjA1OTIsIDAsIDAsIDAsIDAsIDUxMzYsIDE5NjgsIDk4MzA0MSwgMTI2NjI3LCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgCi0gICAgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgMCwgNzQ0MDMsIDYxMjAsIDQ3OCwgCi0gICAgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgMTI4NTA3LCA0Mjc2LCAxMjA2LCAzNjE5LCAKLSAgICA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAwLCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgMCwgCi0gICAgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNzQzMTQsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgCi0gICAgNDIzOTcsIDMzNCwgMCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNzc5ODcsIDY5NjY2LCA0NDQyLCAxMDM2NCwgMCwgNzc4LCAKLSAgICA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgMTI3Mjc1LCA3Mzk4MywgMjkxNSwgMTE1MDIsIAotICAgIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzgzMjAsIDAsIDY5NzUsIDAsIDU0MTUsIDEyMTc2LCAwLCA3NDE5MywgCi0gICAgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzM3ODQsIDAsIDAsIDk3NTksIDAsIDcwMDU3LCAxMjcyNTQsIDgxMTQsIAotICAgIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgMTE4OTU2LCAwLCA0MDUxLCAxMDQ2MCwgNDMzNjQsIAotICAgIDExODkxNywgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCAKLSAgICA0MjExMiwgMTI3OTc4LCAxODc1LCAxMDgwOCwgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIAotICAgIDUyODksIDEzMTQ0LCAxMjg2NTgsIDAsIDU1NzUsIDk2NzUsIDAsIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjc3LCAKLSAgICAxMTk4MzAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIAotICAgIDczNzU5LCA0MzEwMCwgNjk4ODgsIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIAotICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAxMjY1NTEsIDAsIDYwNDgsIDc0NDYwLCA0MjExMCwgNzM5NjUsIAotICAgIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDExOTA0OSwgOTY4MSwgNDQ3NSwgMCwgNDExNDIsIDIxMDAsIDAsIDEyMDczMSwgCi0gICAgNjAzNSwgMCwgNzY1MSwgMTAyOTYsIDY0NDQzLCAwLCA5ODMyOTUsIDkxNzk4NywgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIAotICAgIDAsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgMCwgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCAKLSAgICAxMTkyMzksIDY0ODcsIDMzODYsIDAsIDEwMzQ0LCAwLCA2NTI5OSwgNTM5NCwgNDMyNDYsIDc4MjQzLCAxMDIyMCwgNjY1MDUsIAotICAgIDQxMjAwLCAxMjg1ODMsIDQ0MjUsIDAsIDAsIDAsIDQzMDc0LCA3Mzc5OSwgOTgzMjAwLCA3ODE0NywgMCwgMTIxNzMsIAotICAgIDc4NTQ1LCAwLCAxMjcwMTEsIDY1MzM4LCAwLCAwLCAxMTk1ODIsIDQ0NzQsIDAsIDQzMDkzLCAxMjg2NDQsIDE1ODcsIDAsIAotICAgIDEyNzM3MiwgNjQ0NzUsIDEyODA5OCwgMTM2OSwgOTgzNjcyLCA5OTU5LCA3OTI3LCAwLCA0NTYwLCAwLCAwLCA5MjI3NywgCi0gICAgOTgzNjIxLCA2NDk0OCwgNDQzMCwgNzQzNDcsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIDgxOTQsIDY1NDYyLCAKLSAgICAxMDYyNiwgMTA5NjUsIDAsIDg4OTMsIDk4MzMwMSwgMTI1NDIsIDAsIDY1MzQxLCAwLCA2NTgyOSwgNzkyNSwgMTE5ODIyLCAKLSAgICAxMDQ3NSwgMCwgMCwgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgMTI3MTAyLCA2ODIwNywgCi0gICAgMTI3MTAwLCA3MDk5LCA2MDQwLCAxMjcwOTcsIDEwMDcxLCAwLCA5MzM2LCA0Mzc1MCwgMCwgODg5OSwgNzc5OCwgNjQ0NzQsIAotICAgIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIDQzMDE4LCAxMjcwODIsIDAsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgCi0gICAgNzc5ODIsIDAsIDUxMjcsIDExMjg1LCA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgCi0gICAgMjk5OSwgNjM0MiwgNjg2MzYsIDc0MzA0LCAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCAwLCAwLCA2MzIzLCAKLSAgICAxOTQ2ODQsIDgyMjQsIDAsIDg5MzgsIDYwNDMsIDEyNzM4LCAwLCA5ODMwNzYsIDUzMjEsIDAsIDE5NDc5OCwgMCwgMjU4OSwgCi0gICAgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgMTIwMjk2LCAxMTkwNSwgMCwgMCwgMTI4NTE2LCAKLSAgICAxMjgxNjMsIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgMCwgMTUwMywgMCwgMCwgNzEzMTIsIAotICAgIDU3MzEsIDEzODEsIDIzODcsIDAsIDAsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIDAsIDk2MDEsIDI4NzksIAotICAgIDk2NjgsIDk3NjYsIDAsIDU3MjksIDkxNzgzMywgNzQ0MTAsIDYwMzYsIDY0ODgxLCA0MDI2LCA5MzYxLCAxMjcwOTEsIAotICAgIDI4ODcsIDAsIDM1MjYsIDYyOTgsIDAsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAwLCA4NTcyLCA2MDIxLCA3Nzg5NiwgCi0gICAgMTI4Mjg4LCA3Nzg5NSwgNDMxNTUsIDAsIDExOTg0OSwgMzE0NiwgMTA5NTksIDk0ODMsIDAsIDc3ODkzLCAxMDk4MSwgMTY2LCAKLSAgICA5MTc4NDEsIDg2MzUsIDk4MzYwNiwgMTA2MjMsIDQwOCwgMTE5MDU4LCAxMjc1MDcsIDEzMjk4LCAwLCA3NDI2LCA0MTY0MSwgCi0gICAgMTI3MTcsIDAsIDc2MDcsIDEwNjM5LCA0MzM5NiwgMCwgMCwgNDE2NDMsIDc0MTM0LCA5ODMwNTQsIDg3MTMsIDQxNjQwLCAKLSAgICAxMDIyMSwgNDE2NDUsIDY2NzEyLCA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDkzOTk0LCA3NzkwMSwgMzQ3MiwgCi0gICAgODY5NywgMCwgMCwgOTgzODE1LCAwLCAwLCAwLCA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA3NDU3MiwgMCwgNDIxMzYsIAotICAgIDAsIDAsIDAsIDAsIDMyNDcsIDExOTg1NCwgNjUwMTcsIDk4Mzk1MywgNjg0MjgsIDY2NjY4LCAwLCAwLCAxMDk4MywgMCwgMCwgCi0gICAgMCwgNDE1NjcsIDAsIDAsIDAsIDE5NDYyNCwgMTE5ODUzLCAwLCAwLCA4Mjg1LCAwLCA0NTA5LCAwLCA2NjQ3MSwgMTIyMTYsIAotICAgIDAsIDQwOTg4LCA5MjU5MiwgNzQ4MDksIDQxNzI3LCAwLCA0Mjg0OCwgMjM5NiwgOTE3NzY2LCAwLCA3NDAxOCwgOTE3NTM4LCAKLSAgICA2NDk0MCwgNzAyNywgMzg4NiwgMCwgNDI0NTcsIDExOTAwOCwgMCwgOTk2LCA2ODEyMywgOTQwNTgsIDQyNDksIDAsIAotICAgIDkxNzU5NCwgMTE3MDcsIDgyMjIsIDAsIDc5MzksIDkyNDU0LCA5MjQ2MCwgMTI3ODAxLCA5MTc1OTIsIDEyODM1OSwgODUzNCwgCi0gICAgMTI3MTU0LCA0MDk4MywgMCwgOTgzMjQwLCAwLCA3MjAxLCAxMjU2MSwgMCwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIAotICAgIDEwMDUyLCA0MDk4MiwgMCwgMCwgMTQ4OCwgMCwgMCwgMCwgOTE3NTU5LCAwLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIAotICAgIDk4Mzk0MCwgMCwgMCwgMTI3ODcyLCA3MTM2MywgNTgwMywgNzc5NywgNjA3MCwgMTAwMDYsIDAsIDI5MjIsIDYwODIsIDAsIAotICAgIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCAxMjg3MDMsIDAsIDQxNDEyLCAwLCAwLCAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgCi0gICAgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCAwLCAwLCAwLCAwLCAwLCA0MzA4NSwgNjA1NywgNTA4LCAKLSAgICA5Mzk2OCwgMTI4MDE1LCA2Nzk2OCwgMCwgOTI0MDUsIDAsIDAsIDYzOCwgNjA4MywgMTE5MDcyLCAwLCAwLCAyMzA1LCAKLSAgICA3ODM0OCwgNjgwOTYsIDAsIDYwNTYsIDY2NTksIDY3OTY5LCAwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgMCwgNDE2MzksIAotICAgIDYzOTEyLCAxMTk0MSwgMCwgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIAotICAgIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDExOTM1MCwgNjUwNSwgCi0gICAgNzQwMTAsIDAsIDEzMDY0LCA1NTI2NywgMTIwODEwLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgNzM3NjQsIDAsIDkyMzc2LCAKLSAgICAxMjc0NSwgOTY3OCwgMCwgMTIwNTg3LCA5ODY5LCAxMjg4MTUsIDE3NzEsIDAsIDg5MzYsIDAsIDAsIDQyMDgsIDc4MzQxLCAKLSAgICA3ODU2NywgNzgzNDIsIDAsIDk4MzQ1NiwgNzQxMDEsIDAsIDExNzYyLCAwLCA5MjQyMiwgNzc5OTcsIDY4MDEwLCA2NjQ3NSwgCi0gICAgMCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMCwgNTA2OSwgNzM4NjIsIDUwMjgsIDk4OTcsIDAsIDczNzM5LCA1MDI2LCAKLSAgICA5ODMyNTMsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIDc0NzkwLCA3ODEzOCwgCi0gICAgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIDQxMDcwLCA3NzkwMywgMCwgCi0gICAgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIDk4MzY3OSwgMTA2MDAsIDkxNzg2NywgCi0gICAgNjIwLCA0MTAwMSwgNjAyOCwgMCwgNDI4OTIsIDAsIDc0ODIyLCA1MDI0LCAxMjA4MjksIDQxMDAzLCAwLCA1MDI1LCAKLSAgICA2OTg5MiwgOTgzMjA5LCAwLCAxMTg4ODUsIDAsIDY1NTU3LCAwLCA3NDU0MSwgOTgzNTg3LCAxMTU5OSwgMTI4MjA5LCAKLSAgICAxMTYwMiwgNjI0MywgMTE1NzQsIDExNTgxLCAxMTU5NywgMTE1OTgsIDYyNTMsIDYxMDUsIDExNTg0LCA3NDE5NSwgMTE1NjksIAotICAgIDY1Mjc1LCA4OTA2LCAxMjcwOTYsIDU3NTUsIDI2MzYsIDk4MzIyNywgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgCi0gICAgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgCi0gICAgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgMCwgMTI2NDgyLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIAotICAgIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgNDM2MDYsIDAsIDY4Mzk3LCA2NjM3MCwgNzQ1MDYsIDQyMzM1LCAKLSAgICA5ODMxODgsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIAotICAgIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgCi0gICAgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIAotICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgCi0gICAgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDAsIAotICAgIDAsIDAsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgNDI1NzgsIDEyODc5NCwgNDE2NjEsIDc4NzE1LCAKLSAgICA0MzI2NywgOTM1NiwgMCwgMCwgMCwgMTI4NiwgMTAxNjYsIDAsIDAsIDY0NzA3LCA5ODMxMjcsIDQyNDc2LCA3NzMwLCAKLSAgICA5ODM4NTksIDEyODUyMiwgNDI0ODMsIDAsIDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCAwLCA2NjQxLCA1MjUsIAotICAgIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgCi0gICAgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAwLCA3NDM2MCwgMCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgCi0gICAgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgOTgzMDkyLCAxMTM3NCwgNzgwNDMsIDEwODg5LCAKLSAgICA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIAotICAgIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgCi0gICAgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIAotICAgIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIAotICAgIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgCi0gICAgOTE3NTYzLCA0MTg4MSwgMCwgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIAotICAgIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIAotICAgIDE2MDMsIDAsIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCAKLSAgICA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIAotICAgIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIAotICAgIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgCi0gICAgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgCi0gICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIAotICAgIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIAotICAgIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIDkyNDQ3LCA5ODM4MTksIDk1NDksIDAsIDEwNTQ5LCA1NTI4MiwgOTY2MSwgCi0gICAgNDM2ODIsIDAsIDc3OTEwLCAxMjAwMjYsIDc4NzA4LCAwLCA3NzkxMSwgMCwgNDE5OTEsIDk4Mzg5MywgMCwgNzYzMCwgCi0gICAgOTg0NiwgNzY4NCwgMTAzNTAsIDAsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIAotICAgIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDY1NjY3LCAxMjcwMzcsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCi0gICAgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAwLCAxMDIwOSwgODMxMywgNDE5NSwgNzQ0MzUsIAotICAgIDEzMTYsIDY2NjkwLCAxMjAwMzIsIDYzMzIsIDY0ODk0LCAwLCA2NTg3MSwgNzgwNjAsIDE3MzYsIDk4MzY4NCwgMzkwMSwgCi0gICAgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODg0MSwgNjkzLCA5MTMwLCAzMTQsIDY0MTQ5LCA0MjQyMCwgCi0gICAgMTE5NDksIDk4MzY2OSwgMTIwMTUyLCAxMTAyNiwgMTI4Nzg4LCA1MzMyLCA2OTQwLCA2NDE1NCwgMTI2MzUsIDEyNzAwNywgCi0gICAgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDEyMDc2MywgNzg4NDAsIDcxMzY4LCAxMjgyNCwgMCwgNDUyOCwgCi0gICAgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIDAsIDAsIAotICAgIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NjgsIAotICAgIDc0MDk1LCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgMCwgNDA0NCwgOTI2NDYsIDAsIDEyMjMzLCA5ODM4NzEsIAotICAgIDEwMjMsIDQ3NCwgMCwgMTE5ODE4LCAwLCAwLCA0MjQ4NywgNjU1NTYsIDAsIDEyNzg2NiwgNDIyOTUsIDAsIDAsIDcxMzIyLCAKLSAgICA5MjUxOCwgOTgzNSwgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCAwLCAwLCA1NTI1MSwgCi0gICAgMTAxMTgsIDMxMzMsIDEyODAwOCwgNzM3OTUsIDAsIDk2MTAsIDgwNjgsIDgxOTcsIDAsIDY5OSwgMCwgNDE2NjUsIDU4NjgsIAotICAgIDAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCA2NTU4MywgCi0gICAgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDExOTE4NCwgOTIxOTcsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIDE5MzcsIAotICAgIDk4Mzc1MSwgMCwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgMCwgMCwgMTEwMTcsIDEyMDYwMSwgMCwgMjkzLCAKLSAgICA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgNzEzNTAsIDY1NDEzLCAKLSAgICA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIDAsIDE3MTMsIDc3OTY5LCAwLCA3Mzk1NywgMTE0MDcsIAotICAgIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTI4MDgwLCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCAKLSAgICA0MjI4OSwgMCwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgMCwgNjE2NSwgNjQxMDAsIDAsIDY2MzIsIDczODYxLCA0MjQwMiwgCi0gICAgNzQzMjcsIDc4MDYsIDAsIDg5MTQsIDAsIDAsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCi0gICAgNjc4NDksIDU3NDYsIDczNzQ5LCAwLCA2NDQxNiwgNDI0MjIsIDAsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgCi0gICAgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAotICAgIDAsIDY1ODQ4LCAwLCAwLCA2OTg2MywgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAwLCAxMDkyNSwgMCwgMCwgMCwgOTgzNTg2LCAKLSAgICA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgMCwgMTAzMDUsIDQyNDYxLCAwLCA0MjM0OSwgODgzMiwgNzgwNTEsIAotICAgIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDAsIDQyNDI5LCAKLSAgICA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAKLSAgICAwLCAwLCA2NDkzMywgMCwgNDE5NjAsIDY2OTksIDAsIDAsIDEyODM1NCwgNjgyMywgNDIzOTEsIDE1ODgsIDY1NDAwLCAKLSAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCA5MTc5MzksIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAotICAgIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgNDE2NTcsIDEwNzc4LCAKLSAgICAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgMCwgMCwgNDE1NTQsIDAsIAotICAgIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgCi0gICAgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgMTEwMjksIDY2NjUxLCA5ODMwNjgsIAotICAgIDAsIDExODkzMCwgNjQ1MjcsIDAsIDc4NzcsIDczODAzLCA5ODM3OTgsIDEyNzM0OCwgMTIwMDk2LCA3NDYwMiwgOTk1NSwgCi0gICAgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCAwLCA3ODYzMSwgCi0gICAgOTUwMiwgNjU0MjcsIDAsIDY1NDI0LCAxMjYwNywgMCwgOTczNCwgNjU0MjUsIDAsIDAsIDEyNzM1NywgNzg4MzUsIDkyNDEwLCAKLSAgICAxMDExMiwgMTA4MjcsIDAsIDk4NjYsIDc0NTI3LCA2NjY3NSwgMCwgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgMCwgCi0gICAgODYzNiwgOTgzOTI3LCA4MzE1LCA2NTQ0NCwgOTgzNzkzLCAwLCA3NDU5NSwgNjE1MiwgMCwgMCwgNjYyOSwgMTI3MTA4LCAKLSAgICAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMCwgNjk3OTAsIDY0NDM1LCAwLCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCi0gICAgNDQ4NSwgMTI3MTA3LCAwLCA2NDkyNiwgMCwgMCwgMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAKLSAgICAxMjgyNSwgMCwgMCwgMTI3MjUsIDAsIDEyNzEwNiwgNzg2NDIsIDIyMywgMCwgNjk2NzUsIDEyMDE2NiwgNDI0NDQsIDAsIAotICAgIDY0NDk5LCA2NTI0NSwgMCwgMTE3MSwgMCwgNjk3MTcsIDAsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgCi0gICAgNzg2MTksIDEyMDExMSwgMjMzOCwgMCwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDY1MjM2LCA2NzY0NCwgNjgxMjYsIAotICAgIDEyMTMsIDAsIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCAxMjczNjksIDY0Mzg3LCA0MTE1LCAwLCA1MDA1LCAKLSAgICA2NDA3MCwgNjQwNzMsIDEwNjc5LCAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgMCwgMCwgODI1MSwgMTAxMzYsIAotICAgIDY1NDM2LCAwLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDc0MTkyLCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAKLSAgICAxMjg1OCwgMTIwMTU5LCAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAKLSAgICAyMTI5LCAwLCA5MjIyLCA5ODM3MzgsIDAsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIDY2MzU3LCAKLSAgICA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgNzQ1OTMsIDEyMDMwOCwgMjQ1NCwgNDI3MTcsIAotICAgIDM2MTMsIDEyODgzNywgMCwgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDAsIDQzMDg3LCAxMjU5NSwgCi0gICAgMTIwMzA0LCA5ODMxMTQsIDg4MjIsIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCA2OTg0OCwgODIzNSwgCi0gICAgMTIwMzE2LCA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAwLCA2OTIxNiwgMCwgNjU0MzAsIDcxMzIxLCA2MDc5LCA2ODE3LCAKLSAgICAxMDc2NCwgMTI3OTEwLCA2NDI5MSwgMTI4MDUxLCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAwLCAKLSAgICAxOTkxLCA3ODgyLCA0MjI1NCwgMCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgCi0gICAgNDMwNzYsIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgMTE5MzM0LCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIAotICAgIDEyMDMyNSwgNjYzNzMsIDAsIDAsIDY0OTA4LCA5MjY5MSwgNjMxMSwgMCwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAKLSAgICAxMjAzMjYsIDAsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMCwgNjU5OSwgMTIwMzM0LCAwLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgCi0gICAgMCwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMCwgMTk4OCwgNTQwNywgNjc4NjUsIAotICAgIDI0MzAsIDQxNjc4LCAwLCAxMjAyNDMsIDIzMzYsIDk4MzkwMywgMCwgNzg4NzEsIDEyMDQ0MiwgOTgzNzY5LCAxOTIxLCAKLSAgICAxMDk0NywgMTk5MjcsIDAsIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgCi0gICAgMTA5NTYsIDQyMjg1LCA0MTY3NCwgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgNjU0MDMsIAotICAgIDk4MzA4OSwgMTg1NCwgMTA3OTQsIDAsIDY3NjYwLCA2OTg0NiwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCAKKyAgICA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIDgyODYsIDEyODUzNywgMzkzNiwgCisgICAgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgCisgICAgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAKKyAgICAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgNzExOTIsIAorICAgIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIAorICAgIDExMTM2LCA3MTg3NiwgMTE1MDYsIDEyODM5NSwgNDI4NDEsIDEzMjY3LCAxMjg0MjEsIDAsIDQxNzc1LCAwLCA3MTMwLCAKKyAgICA0MTc3MywgMCwgMTA2NjMsIDcwMTMwLCAwLCA5ODM5NzQsIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCAKKyAgICA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMTI3OTY0LCA5MjY0NywgNTgwOCwgNjU5MjIsIDY3ODE0LCAKKyAgICAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAKKyAgICAxOTQ5MzAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAKKyAgICAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIAorICAgIDEyODgyMiwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCA5MjM0OCwgCisgICAgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDgzMTEzLCA1Njc2LCA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgCisgICAgMTI5NCwgMCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDEyMTQwMCwgMTIxMTgzLCAwLCAKKyAgICA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAKKyAgICAxMjkwMzIsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCisgICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgMCwgNjQ2NDksIAorICAgIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NywgODM0NzgsIDk4MzkyOSwgODMxODQsIDAsIDg0NywgCisgICAgMTI4MjQyLCA5NTI5LCA4MzAxOCwgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgCisgICAgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCA5ODMwNTUsIDcxMTQsIDEyNjUyMSwgMCwgCisgICAgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgCisgICAgMTk5NjMsIDU2OTgsIDE5NDc2OCwgOTgzMjcyLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIAorICAgIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgCisgICAgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCAKKyAgICA0MTgwMiwgOTgzNjUyLCA0MjYwOCwgNzg0NjgsIDk4ODQsIDQ3NTksIDczNzY4LCAxMjAyOTYsIDEwMjY2LCA0MTM1OSwgCisgICAgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCA5Mjc3MywgNjM5MzYsIDgzMjQ3LCAxMTY2MSwgODEyMiwgCisgICAgNTgxOCwgODMyNDUsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCA5ODM5NjYsIDAsIAorICAgIDgwNywgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgOTgzMzE5LCA0MTM1NiwgCisgICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgOTgzMjkzLCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCisgICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMTI4NTIxLCA3ODY4MSwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgCisgICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NjM2LCAxMjAwNzksIAorICAgIDEyODc5MywgMCwgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIDkzLCAKKyAgICA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIDM4MywgCisgICAgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKKyAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgMCwgMTI4NDcxLCA4MjkyLCAxMjUxMDgsIAorICAgIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAxMjc5NzQsIAorICAgIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCA0MTk4LCAKKyAgICA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMTIxMTEwLCA0MjY4NCwgNzQyODUsIDIwODgsIAorICAgIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMTI3OTIwLCAxOTQ3MTMsIDEyODM2LCAwLCAKKyAgICAxMTM4MDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgMTI4ODQzLCA3NDY0LCAwLCA2NTg2NSwgCisgICAgMCwgMTk0NjUwLCAxMjcxNDQsIDkyMzk1LCA5MzQyLCAxMjA0NjQsIDcwMzc2LCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCAKKyAgICA0MTAwNywgNzQzNzUsIDk4MzcwMSwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgODM1MDEsIDAsIDgzMjU3LCA2OTcyNCwgNDA5OTIsIAorICAgIDkyMjY0LCAxMTkxMzYsIDY4NjUzLCA0MzU1OCwgNTUyMiwgNzUwMjYsIDYxLCAxMjA5NTksIDc0MTA1LCAzNjMzLCAKKyAgICAxMjAwODIsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA4MzI4MSwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgCisgICAgMjc4NCwgNDI3NDMsIDcxMDc4LCA4MTI2LCA2NjQ4MywgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAKKyAgICAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExODk0NCwgNjQ0MTcsIAorICAgIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCA3NDg1MywgOTgzNjU5LCA4OTMwLCA2NjY3OCwgNjcyMTYsIDExOTMsIDEwMDU2LCAKKyAgICAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDEyMDk5MiwgMTIxMTc1LCA3NzQzLCA4MzUwMiwgMTI0OTk2LCA3NzkwNCwgCisgICAgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAxMjkxMzksIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgCisgICAgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIAorICAgIDkxMSwgNzUzOSwgMCwgNDA5NjMsIDEyMDMzOSwgNjUxNTksIDY0MzkwLCAwLCA5ODMxNjAsIDU1MjAsIDExNjYyLCAKKyAgICAxMjc0NzMsIDY1MzMwLCA0MjgxMiwgOTgzMjE1LCAwLCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgCisgICAgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCA5ODMxNDgsIAorICAgIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCAKKyAgICA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCAKKyAgICA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIDEwNzczLCA3MDg2OCwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCAKKyAgICA4NTIwLCAxMzE0NiwgMTI3MDk2LCA2MzkzMSwgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMCwgMTI4NDMsIDQ1MjAsIAorICAgIDEyMDM0NSwgOTI0NTksIDAsIDk4MzY2MCwgMCwgNzM4NjAsIDgzMzM1LCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAKKyAgICA3MDg3MSwgMCwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDAsIDEwNDI3LCAxMjE1MDYsIDM4NDQsIAorICAgIDY4NDIsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTI4Nzg5LCA5ODM2MzgsIDkyOTI4LCA3ODMsIDE5NDkzNSwgCisgICAgOTIxODUsIDEyNzIyMSwgNzM4NTUsIDY4MDMyLCA2NTA1NiwgMzYyMCwgNDExODAsIDY4Mzc4LCA0NTU2LCA2NzgzOSwgCisgICAgNjg0ODAsIDE5NDkzMywgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDY3ODIzLCAwLCAxMjc1MjcsIAorICAgIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAxMjA3MDAsIDEyODkxLCA5ODM3NTUsIDk4MzYzNiwgNjM5OTksIDIwMTYsIAorICAgIDQxOTE3LCA5Nzg4LCA2MzkyOCwgNjc2OTYsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCAKKyAgICA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMTIwODM0LCAKKyAgICA2NDU5MiwgNzQyNzYsIDY3Njg4LCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDcxMjE4LCAxMTM4MjEsIDY2MzY2LCAxMjE0NywgCisgICAgOTAyNCwgNjYzNzgsIDY2NDcyLCAxMjQ5NzYsIDY0Mjg5LCA2NTI4OSwgNzgxNTEsIDY2NjU4LCA3MTkzNSwgNjQ1MDksIAorICAgIDc4MTUyLCAxMTM2OTcsIDEyNjUwNSwgMTEwNTEsIDE5NDkyOCwgMCwgMTEzNTUsIDY1ODg1LCAxMjEzMTksIDEyNzk0MSwgCisgICAgNDEyMTQsIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAKKyAgICAxMjA1NzAsIDYxNjcsIDc0NTE5LCA2MzkyMiwgNjU5NCwgOTgzNzQwLCAwLCAwLCAzNjI0LCA0MzAzNiwgMTI5NDcyLCAKKyAgICA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMTI2OTkwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIDY1NjA1LCAKKyAgICA2ODAzLCAxMjA5NjgsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIAorICAgIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAxMTUxOCwgODMyOTIsIAorICAgIDc4NzkwLCA5ODMzODEsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgNjM5NjAsIDk1OTEsIDQ1MTYsIAorICAgIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCA5MjMyNSwgMCwgNjgwNzksIAorICAgIDEyMTM0NCwgMTEzOTcsIDI4ODAsIDcwODA2LCA5MTc4MjksIDI4NzIsIDAsIDgzMzIxLCAzNDk4LCA0Mzc4LCA5MTc1MzksIAorICAgIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgOTgzMDQwLCAxOTQ5MTAsIAorICAgIDEyMTM5MiwgODE2MSwgMzkzLCAxMjAxMywgMCwgOTgzMTk4LCAxMTkxMDMsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgCisgICAgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCA3MTA1OCwgNjM5NjEsIDQ0NzIsIDk4MzI5OSwgMCwgNzgxNTksIAorICAgIDY5Njk5LCAxMjczMDEsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCA3NjkxLCAxMDMzMSwgNjM4MzAsIAorICAgIDExOTYyNSwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCA3ODY1NCwgNDI0NTMsIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgCisgICAgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTI5MTk2LCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgMCwgMCwgCisgICAgNjM5ODAsIDExODAxLCAzNjIyLCAxOTUwOTIsIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgCisgICAgMTk2NiwgNDM2MjgsIDk4MzkwOCwgOTgzMjk0LCA4MzI2NywgMTIxMDUyLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIAorICAgIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgOTIyMTMsIDEzMTQ3LCAxMjg2OTIsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIAorICAgIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDk4MzE1NywgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCA4MzMyMywgMTk0NjcwLCAKKyAgICAxMjA4MzYsIDkyMzUxLCA3NDgxMywgNzQ0MjUsIDExMjk5LCAxNTYxLCAxMTg4ODEsIDkyMzE4LCA2NDk0MiwgOTMwMjEsIAorICAgIDE5NDczMywgNzA0MTEsIDc4NzE4LCAxMjExNDAsIDc0MzAxLCA2ODgyNSwgMTEyODAsIDEyODQ4OSwgNjk3ODQsIDc0MDYwLCAKKyAgICAxMjgzOTIsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxMjQ5ODgsIDc0MDIsIAorICAgIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAwLCA2NjYxNiwgNjY4MzIsIDkyOTY2LCAxMjA4NTIsIDU0MDUsIAorICAgIDEyNzg3NSwgNjQ4NjYsIDEyMDk2NSwgMTE5NTgzLCAxMTkxMjIsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgCisgICAgNjQ2OTAsIDMyNTQsIDk4MzE2NiwgMTI4OTQ0LCA5MjY5NiwgNDIzOTAsIDQzNjc4LCAxOTQ3MjUsIDEyOTEyNywgNjUwNzcsIAorICAgIDEyOTA1OSwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDgzMDIxLCAzMzc3LCAwLCAwLCAKKyAgICA3NDM1NCwgMTk0NTc4LCA3ODIyOCwgOTgzNzIyLCA5ODM3NjIsIDQyNjkxLCAxMjc4ODYsIDEyMDk0OCwgNjgwOTEsIAorICAgIDEyODQwNCwgNzUwMjMsIDEzNzksIDI0NiwgNzQ2NDksIDk4Mzc2MSwgMzc4OCwgOTI1MjAsIDExMDQxLCA2NzIwMiwgCisgICAgNjYzMDQsIDAsIDEyMTIxMywgODkxNywgNDI0MDMsIDMwMSwgMCwgMTI4NTAwLCAxMjcwNDYsIDAsIDAsIDExMzgyMiwgCisgICAgMTA2NTYsIDEyNTA0MiwgNjUyMTQsIDkyOTg3LCA0MjU2NywgOTIyMTcsIDEzMTYzLCA5ODMyMDQsIDEyMDgzMSwgNzQ1OTcsIAorICAgIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCAxOTQ1NzQsIDExNDQzLCA5ODM2MDMsIAorICAgIDY2MzE5LCA2ODQxLCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMTE5MTE3LCA3NDQ4NSwgCisgICAgNDI0NDIsIDY1NDcwLCA5ODM5MDcsIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgNjk5ODIsIDcwNTA1LCA5ODI4LCAKKyAgICAwLCA0MzUwNSwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgCisgICAgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIDAsIDY4MzE1LCAwLCAwLCA3NDA0MSwgODMxNDQsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgCisgICAgNDIxOTYsIDAsIDAsIDAsIDkxNTAsIDY2ODMxLCA0MjM5MywgMTMwODYsIDEzMTAsIDY2ODQ4LCA5MzM3LCAxMjA1MiwgCisgICAgMTA2NDMsIDU1MjcxLCAxMjg5NTEsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgODMzMTYsIAorICAgIDE5NDgyMiwgMTk0NzU2LCA3NDMxMCwgNjU1NCwgOTQwNTksIDExOTE0LCA1NDUyLCAwLCAwLCA5Mjc3MiwgMCwgOTE3ODgwLCAKKyAgICAxOTQ2ODEsIDkyNTYwLCAyNzEzLCAxMTk1NjQsIDk2NTAsIDQzMzMwLCAxMjEwMzMsIDEyODUwNSwgMTQwNiwgMTI1MDA3LCAKKyAgICA0MjkyNSwgNzQ2MzgsIDE5NDU5MywgNjYyNTYsIDQxNDMsIDEyODEzNiwgMTk0NzYyLCA2NTc0OCwgNDE0MSwgOTY4MiwgCisgICAgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCA0MTQ1LCAKKyAgICA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDQyOTMyLCA0MzQwMywgMCwgMCwgCisgICAgMTk0NzgzLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjA1LCAxMjk1NSwgMTA1OTYsIDI4ODgsIDgzMTkwLCAwLCAKKyAgICAxMjEzNTQsIDk2NTcsIDkwMTksIDEyMTE1NCwgMCwgMjg3OCwgNTM5MCwgMCwgMTk0OTYxLCA2NzMyNSwgNjg2NzksIAorICAgIDQzNTUyLCA3NTAxLCA2MzI4LCAxOTQ5NjAsIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgCisgICAgNjgzODEsIDAsIDAsIDg5ODYsIDQzODM4LCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAxOTQ5NzAsIDEyNjY0NywgCisgICAgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCA2NDgyMiwgMjg5MiwgODMxOTIsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAKKyAgICAxMjg5ODAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCAKKyAgICA0MTkyNywgMTA1ODIsIDEyMDQ1NywgMTc4NCwgMTM2MSwgMTIwOTIxLCAxMjE1MTYsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIAorICAgIDEzMTU4LCA5MjE2NiwgNzIxMSwgNzE4ODQsIDkzNzEsIDczOTczLCAxMjg0NDEsIDY4MjgsIDE2MjUsIDc2NjQsIDEyODc2OCwgCisgICAgMTM0MiwgNjg0NDAsIDY0MTcxLCA5MjY0MiwgMTA5MDMsIDk4MzQ5NiwgMCwgOTI1MjcsIDAsIDcwNDM4LCA0NDgyLCAKKyAgICA0MTYwNiwgMTI4OTM0LCAxMjUwMzMsIDEyMTQ3NSwgMCwgNjQzODEsIDk4Mzk0MCwgMTk0OTc0LCAxOTUwOTAsIDQyMjQ1LCAKKyAgICAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDk4MzQzOSwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAwLCAKKyAgICAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMCwgNzAxNzcsIDEyMDgzMCwgMCwgMTE5NywgMTI4MjgyLCAxMTQ5LCA2ODMxNiwgMCwgCisgICAgOTgzMjU4LCA0MDk5MCwgNDM3NjUsIDEyMTI2MiwgMzQ5MiwgOTE3OTA2LCAxMTg3ODQsIDEyOTAyNiwgMCwgOTgzNTY2LCAKKyAgICAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDk4MzI2MSwgMTE5MDU5LCAKKyAgICAxMjAzNiwgNDEzMDksIDEyODE2MSwgMCwgODE1MiwgMCwgNDE1NTAsIDEyMjI3LCA5ODM2MTMsIDAsIDEyODI4LCAxMjc1MTEsIAorICAgIDc1MDE1LCAxMjA5NjQsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDc1MDY4LCAxMTk5NTUsIDEyNzMwMywgOTI2ODAsIDk4MzEzNCwgCisgICAgNjgxNTQsIDEyNzg3NiwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDcwMDUyLCAKKyAgICA2NDQzOSwgMTI4ODY0LCA2ODA2MiwgOTI2ODYsIDk4Mzg3NSwgMCwgNDM4NjYsIDEyODg4MSwgMCwgMzM5NSwgOTM2MiwgCisgICAgMTA4NzgsIDQzMjYwLCAwLCA3ODM2MiwgNjQ4MzAsIDAsIDEyNTA0NiwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIAorICAgIDEyMTEwMCwgNzEzNDQsIDQ3MzUsIDExMTExLCA2MTE5LCAxMjgyMiwgNDI2OTksIDAsIDk4MzgyNCwgNzQ4MTgsIDE0MjMsIAorICAgIDEyODkyMywgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDEyODYzNCwgMTE4ODkyLCAwLCA5NDcyLCA2NzczNCwgCisgICAgMTE5MjksIDEyNjU1NywgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIDcxNDc1LCAwLCA5MjUwMSwgCisgICAgMTI1MDgxLCA3ODA0NiwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM2LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCAKKyAgICA2ODQxNCwgNzQ2MTQsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAxMTc3NiwgNzU1OCwgNzAxMDksIAorICAgIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDk4MzA5NCwgMCwgMTE5MDIzLCA2NTM2NSwgNzM4NzcsIAorICAgIDY1NjI4LCA3ODAxOSwgMTE5MjcyLCA4MzExOCwgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIAorICAgIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAxMjUwNTcsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIAorICAgIDQzMDc4LCAxMjc3ODksIDExODgwOSwgNjcyMzIsIDEwODk5LCA2NTQ2OSwgNzAxMjUsIDAsIDAsIDI0MTAsIDk5MywgCisgICAgODMxMTcsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgMCwgMTE5MjUzLCAxMjQ5NjMsIDcxMTAsIDc0NDYyLCAKKyAgICAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgNjg4NjMsIDQyMjQsIDEzMzYsIDQxNTE4LCAxMjEzMTEsIAorICAgIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgMTE5MTUzLCAxMjA0NDEsIDI3MiwgCisgICAgNDI2MywgODc5MywgOTgzODU2LCAwLCA0MTUwMiwgMTI4MTMzLCA5ODMsIDEyNTQ5LCAxMjQ5NDAsIDAsIDExOTAsIDQxMDksIAorICAgIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTIwOTI2LCA3MDAyNywgMjA5OSwgNTEyMCwgCisgICAgMjQwOSwgNzc5OSwgMCwgNzQ0MjQsIDAsIDEyMTA0MSwgNDczMSwgOTIyNzksIDY2NjI5LCAxMjgxMjcsIDkyNTI1LCAxMjU1LCAKKyAgICA0MTQ5LCA5MjQ3LCA3NDk3NywgOTkxMywgOTgzODI4LCAxMjExMDEsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAxMTM3MTQsIAorICAgIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIDQzMDk3LCAKKyAgICAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDkxNzkwMCwgODE4MCwgMTI1MDU1LCAwLCA5OTcyLCA3Mzg2NSwgCisgICAgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCA5MjQ2NSwgMCwgOTM5NjAsIDk4MzMyNCwgMTI2NTgxLCAxMDY5NSwgMCwgCisgICAgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgOTE3ODk3LCAxMjkxMzQsIDEzMzExLCA2ODQwMywgNDE4NTcsIAorICAgIDY0MzIxLCA4MzU5LCA4MzI4NiwgMTI2ODksIDk4MzMxMiwgMTEyNDUsIDEyODEwNSwgOTgzMzE0LCA3MTg1OSwgNjgxODMsIAorICAgIDk4MzQxNSwgMTk0ODI5LCAxMjg3LCA1NDM2LCAwLCA3MTA5NywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgNzAyMDUsIDYwNTEsIAorICAgIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDgyOTYyLCAxMjg5MDgsIDkzMDQzLCAxMjEwMTMsIDAsIDM2NTIsIDEwNTM3LCAKKyAgICAxMjAyODIsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMTI4NjY0LCA4MzI0NCwgMTQ4OSwgMCwgMCwgMCwgCisgICAgMzg5OSwgMTAwNywgNDIxMjQsIDQzODI4LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgMTM0NSwgNzg2MDAsIAorICAgIDExOTgzMiwgOTE3NTYzLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMTI5MTMxLCA2NDMwLCA3ODYwOCwgCisgICAgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAxMjg0ODEsIAorICAgIDEyMTI3MCwgMCwgNzUwMjcsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgMjI5NywgMCwgCisgICAgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgODMxNTIsIDk5MzMsIDc0MDExLCAKKyAgICA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCA5MjE2OCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCA3ODYzMywgMTA4OTYsIDAsIAorICAgIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDI0MzQsIDk0MDE4LCAKKyAgICAxMTg4MjMsIDY1MzUzLCAwLCA0NjMxLCAxMTg5OTYsIDAsIDY0MDcsIDExMzczNywgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIAorICAgIDMxOTIsIDEyMDMzMCwgODQxNCwgOTgzMzkyLCA5Mzk4MywgMTk1MDQzLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIAorICAgIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCAKKyAgICA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIAorICAgIDEwOTQ0LCA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgNzQ4NTksIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIAorICAgIDc4NjM2LCA2ODA0LCA3MDQ3NSwgMTk0NywgOTE3NTc5LCAwLCA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCAKKyAgICA3NDc5OCwgOTE4MSwgNjUzNTksIDEyNTA2NSwgODAxNywgMTE5ODMxLCA2NTA5NiwgNjY3MjAsIDY4MjIzLCA0MzQ3NSwgCisgICAgOTE3NTQ4LCA0OTA5LCAxMjEyNiwgMTI3NTQwLCAxMjA2OTYsIDQ5MDQsIDkyOTYxLCA0MzUwMywgMTM2NSwgOTI1MywgCisgICAgNDI3NTcsIDQzNDM2LCA3NDYyLCAxMjc3NzIsIDAsIDAsIDgzMTczLCA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgODMxNzIsIAorICAgIDUzOTgsIDEyNTAzNSwgMTI3Mzg2LCA5Mzk1MywgMTI3MzYyLCA5ODM3ODIsIDExOTAxNSwgODMxNzEsIDEyNzAwNywgOTQ3NiwgCisgICAgOTgzODg3LCAxMjA2OTUsIDEyNzYzLCAxMjY2MDMsIDM2MjksIDEyMDg0NCwgMTMwMDUsIDExMTgxLCAzNjI4LCAwLCAwLCAKKyAgICA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIAorICAgIDEyMDM3MiwgNjQ2NjUsIDQzMDg2LCA5MTE0LCA0Mzg3MCwgNDI1ODMsIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIAorICAgIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgCisgICAgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDc1MDQ2LCA2MDE4LCA2ODI5MywgMTI1MDEwLCAxMjI3NiwgMTE5MTEwLCAKKyAgICA2ODM3MiwgMTI4MjU1LCA5MjI1OSwgNzE4OTMsIDAsIDExOTgyOCwgMTA0NjcsIDAsIDI0NDMsIDEwOTE4LCA3ODIxNywgCisgICAgNzc5NDcsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDEyNDk0MiwgNzM5ODcsIDEyNzg4MiwgNzE4OTUsIDkzMDEyLCA3OTkyLCAKKyAgICA3Nzk0MywgNDM5MzksIDEyODY3LCAxMjg2NDksIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgCisgICAgNjU4NTcsIDEyODM2MSwgMTI4Njc0LCAxMzIwNCwgNDM4NywgODU3LCAxMjEyNTIsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIAorICAgIDExODQyLCAwLCA3MTA3MiwgMTIxNDYyLCAwLCA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIAorICAgIDE2MjksIDAsIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA0Mzk0NCwgCisgICAgNjEyMCwgNDc4LCA2NTE1MSwgNjgxMjgsIDEyODE0NywgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgCisgICAgMTIwNiwgMzYxOSwgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgCisgICAgNjgzODQsIDkyNzU0LCA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCAKKyAgICA3ODUyMiwgNzg0LCA0MjM5NywgMzM0LCAxMjEwODQsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDQzOTM3LCA2OTY2NiwgNDQ0MiwgCisgICAgMTAzNjQsIDQzOTM1LCA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCA0MzkzMiwgMTExMDIsIAorICAgIDI5MTUsIDExNTAyLCA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc1MDMyLCAxMjAyNzMsIDY5NzUsIDAsIDU0MTUsIAorICAgIDEyMTc2LCA5ODM3MDksIDc0MTkzLCAzNDYyLCA0Mzk0MCwgNDI2MjksIDc4NjkxLCA3MTE3NSwgNDM5NDIsIDEyNzI1NiwgCisgICAgOTc1OSwgMTI3MjU1LCA3MDA1NywgMTIxNDQyLCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgCisgICAgNDI0OTUsIDExODk1NiwgNzAxODksIDQwNTEsIDEwNDYwLCA0MzM2NCwgNzEyMDYsIDEzNTYsIDEyMTYxLCA0MjcxMywgCisgICAgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDY0NDM2LCAxODc1LCAxMDgwOCwgCisgICAgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDk4MzIyNCwgCisgICAgNTU3NSwgOTY3NSwgNzExMjksIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjc5LCA5Mjk3OSwgNDMyMzYsIDMzODIsIAorICAgIDQyNDQ5LCA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDExMzgxNCwgMTEyNjksIDEwMTUxLCA3Mzc1OSwgNDMxMDAsIAorICAgIDY5ODg4LCA2NTUwOCwgOTgzMTQzLCAwLCAxMjE0NTEsIDg5MzUsIDc4MjM0LCAwLCA5ODM3NTcsIDAsIDYxNiwgNzQ3NTMsIAorICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCA3NDYzMSwgMTI2NTUxLCAxMjQ5OTIsIDYwNDgsIDc0NDYwLCA0MjExMCwgCisgICAgNzM5NjUsIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDc1MDUxLCA5NjgxLCA0NDc1LCA2NzQyOSwgNDExNDIsIDIxMDAsIAorICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgOTgzMjk2LCA5MTc5ODcsIAorICAgIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCA2ODQ4OCwgMTAzOTIsIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCA3MTE4MiwgCisgICAgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCAxMjkwOTQsIDEwMzQ0LCAwLCA1MTE1LCAKKyAgICA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAxOTQ2NjksIDAsIDAsIAorICAgIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDc4NTQ1LCAxMjg3NzEsIDY2ODI0LCA2NTMzOCwgCisgICAgOTgzNjc2LCAwLCAxMTk1ODIsIDQ0NzQsIDEyODkzNiwgNDMwOTMsIDQzOTY0LCAxNTg3LCAwLCAxMjczNzIsIDY0NDc1LCAKKyAgICAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDEyMDc5MywgNjc4MTEsIDkyMjc3LCAKKyAgICA5ODM2MjEsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIAorICAgIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAwLCA2NTM0MSwgNjc3MDMsIDY1ODI5LCA3OTI1LCAKKyAgICAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDEyNzAxMSwgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgCisgICAgMTI3MTAyLCA2ODIwNywgNzQ5NTYsIDcwOTksIDYwNDAsIDY3NjgxLCAxMDA3MSwgNzg1NTQsIDkzMzYsIDQzNzUwLCAKKyAgICAxMjEwNzQsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAKKyAgICAxMjg4OTgsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzUwNzUsIDY2ODY2LCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIAorICAgIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgCisgICAgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgNzUwMjgsIDEyODYwMywgNjMyMywgMTI5MDY1LCA4MjI0LCAxMjg0MTcsIDg5MzgsIAorICAgIDYwNDMsIDEyNzM4LCAxMjA2NzEsIDk4MzA3NiwgNTMyMSwgNjg2NDUsIDE5NDc5OCwgMTIwMjUxLCAyNTg5LCA3NDMzMiwgCisgICAgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjgxNjMsIAorICAgIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgOTgzODIyLCAxNTAzLCA3ODMzNiwgMTI3MTczLCAKKyAgICA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgMTI2NjEwLCA3MDgwOCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgCisgICAgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgNTcyOSwgMTI5MTEwLCA3MTIzMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIAorICAgIDkzNjEsIDEyNzA5MSwgMjg4NywgNzAzODksIDM1MjYsIDYyOTgsIDExOTg1MSwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIAorICAgIDExODk2NCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzExNzQsIDQzMTU1LCAwLCA3MTE5NywgMzE0NiwgMTA5NTksIAorICAgIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgOTE3ODQxLCA4NjM1LCA5MTc4NDAsIDEwNjIzLCA0MDgsIDExOTA1OCwgCisgICAgMTI3NTA3LCAxMzI5OCwgMTI3MjUzLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDk4Mzc5NSwgNzYwNywgMTA2MzksIDQzMzk2LCAKKyAgICAxMjkzMDAsIDExOTA4OSwgNDE2NDMsIDc0MTM0LCA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgNDE2NDUsIDY2MjkzLCAKKyAgICA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAKKyAgICAxMjEwNjksIDAsIDExODg1OSwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIAorICAgIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMCwgMTIxMTEyLCAKKyAgICAxMDk4MywgMCwgMTI4Nzg3LCAwLCA0MTU2NywgMTE5ODUyLCAwLCAwLCA3ODQ0NiwgMTE5ODUzLCAxMjc5MjIsIDAsIDgyODUsIAorICAgIDEyNjUxNiwgNDUwOSwgMTIxMDQzLCA2NjQ3MSwgMTIyMTYsIDEyODgwNiwgNDA5ODgsIDgzMjIxLCA3NDgwOSwgNDE3MjcsIAorICAgIDAsIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIAorICAgIDQyNDU3LCA5Mjg4OCwgODMyOTksIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCA5MjQxMCwgNjk2NTAsIDExNzA3LCA4MjIyLCAKKyAgICA3MzgyNSwgNzkzOSwgNzEyMTMsIDkyNDYwLCAxMjc4MDEsIDEyMTQwOCwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAorICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIDEwMDUyLCA0MDk4MiwgCisgICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKKyAgICAxMjA4NDAsIDkxNzkwNSwgMTIwOTU0LCAxMjc4NzIsIDcxMzYzLCAzNTYwLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMTI4OTIyLCAKKyAgICAyOTIyLCA2MDgyLCA3MDE0NywgNjUwMDksIDk4Mzk0MiwgMTI1NjcsIDY2NzEyLCAwLCA0MTQxMiwgMTI4MTMxLCAxMTk1OTEsIAorICAgIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDgzNDYyLCAKKyAgICAxMTkxMzEsIDAsIDAsIDY3ODI2LCA0MzA4NSwgNjA1NywgNTA4LCA5Mzk2OCwgOTI5ODksIDY3OTY4LCAwLCA5MjE5OCwgMCwgCisgICAgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCAwLCAyMzA1LCA3ODM0OCwgNjgwOTYsIDkxNzc3MiwgNjA1NiwgCisgICAgNjY1OSwgNjc5NjksIDk4MzI5MCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIAorICAgIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIAorICAgIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgOTgzMjUwLCAKKyAgICAxMzA2NCwgNTUyNjcsIDExOTExMywgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDEyOTkwLCAwLCA5MjM3NiwgMTI3NDUsIDk2NzgsIAorICAgIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMCwgNDIwOCwgNzgzNDEsIAorICAgIDc4NTY3LCA3ODM0MiwgNjc3NDIsIDk4MzIwOCwgNzQxMDEsIDEyODYwNSwgMTE3NjIsIDAsIDcwMDk2LCA2ODM1LCA2ODAxMCwgCisgICAgNjY0NzUsIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgCisgICAgOTI3NzQsIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgCisgICAgNDE5MDEsIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgCisgICAgNjg0MjQsIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIAorICAgIDE3MTYsIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDAsIDcxMTE2LCAKKyAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA2OTg5MiwgOTgzMjA5LCA3NTAzOSwgMTE4ODg1LCAxMjc5NTYsIAorICAgIDY1NTU3LCAwLCA3NDU0MSwgMTI4OTI0LCAxMTU5OSwgMTI4MjA5LCAxMTYwMiwgNjI0MywgMTE1NzQsIDExNTgxLCAxMTU5NywgCisgICAgMTE1OTgsIDYyNTMsIDYxMDUsIDExNTg0LCA3MDI3MywgMTE1NjksIDY1Mjc1LCA4OTA2LCA0Mzk0NSwgNTc1NSwgMjYzNiwgCisgICAgNzEyMDMsIDEwODE1LCAxMTYxOSwgMjMwMSwgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIAorICAgIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDY2ODg2LCAKKyAgICA2NDEzMSwgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIAorICAgIDQzNjA2LCA3MTE4NSwgNjgzOTcsIDY2MzcwLCA3NDI4MiwgNDIzMzUsIDY5Nzg2LCA3MjQyMSwgODI5OTgsIDc1MzgsIAorICAgIDUzMTUsIDgzMzY3LCA0MjQ5MSwgOTI5MDEsIDQyMDYxLCAxMjgwMDIsIDQ1NzYsIDAsIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgCisgICAgMzU2MywgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIDc4MjA5LCAxMjAyNDQsIDYzOTg5LCAKKyAgICAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCAKKyAgICA0MTE2MCwgMTIxNDgxLCAzNjE4LCA3ODMzOCwgMTk0OTI0LCA0MzMwMCwgNTE1NiwgOTI2MjksIDcwMzUwLCA5MjksIDY4MjcsIAorICAgIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIDIyMTUsIDQxNjYyLCA5NDAxMCwgMTE5MjYyLCAwLCAKKyAgICAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIAorICAgIDQzMjY3LCA5MzU2LCAwLCAxOTQ4ODAsIDk4MzQwMSwgMTI4NiwgMTAxNjYsIDk4MzExNywgMCwgNjQ3MDcsIDEyODkyNSwgCisgICAgNDI0NzYsIDc3MzAsIDExMTU2LCAxMjg1MjIsIDQyNDgzLCAxMjkwODMsIDc0OTQwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCAKKyAgICA0MzM1OSwgMCwgNjY0MSwgNTI1LCA0MTYyNywgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCAKKyAgICA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMTI4MzIxLCA4NTg3LCAKKyAgICAxMjEzMTgsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIAorICAgIDgzMTUzLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAKKyAgICAyNzE4LCA0MTY4LCA0MzkwNCwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgNDM5MDIsIDc3OTQ4LCAzNjMsIAorICAgIDExMDE1LCA0MzkwMywgNzc5NDQsIDQzODU3LCA4MzA0OSwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCAKKyAgICA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA3NTAxMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIAorICAgIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTIwOTYwLCA5ODM5MjMsIDEyMDc3NCwgNzAxNjUsIDEwNDMsIAorICAgIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyNDk0NSwgMzEzLCAxMjE0ODMsIDQxODgxLCAxOTQ2NTgsIDQyMzExLCA3NDQ1LCAKKyAgICA0MzkwNiwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIAorICAgIDk0MjIsIDQzODk0LCA2NjQ5NSwgNjk5OTAsIDk4Mzg4NSwgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAKKyAgICAxMTkwMDMsIDAsIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDcxMDY3LCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAKKyAgICAxMTYwMCwgNzc5NjEsIDI3OTcsIDQzOTI0LCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAKKyAgICAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAxMjc1MjgsIDExMTk4LCA2NjgyMSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgCisgICAgNDI0MzMsIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIAorICAgIDM2MiwgOTI0MzksIDQzODkwLCA4MDM3LCA0Mzc3NywgMTE1MzUsIDEyNjUzOSwgNDM4OTMsIDUxODUsIDcxNjUsIDU1MjEsIAorICAgIDEwMzM0LCAyMDkzLCA3MTMyOSwgMTAzMDIsIDEyNTEzMSwgMTAxMDQsIDEwMjcsIDUxODEsIDEyODQzNSwgNTExNywgCisgICAgMTA1MjMsIDE0NDYsIDQyMzIwLCA2ODQ1LCA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCAKKyAgICA0Mjg5OCwgMzQwNSwgMCwgMTk0NjQ0LCA1NTIzLCA0MzkxNSwgNDI2MjAsIDkyNDQ3LCA3NDk0MywgOTU0OSwgMCwgMTA1NDksIAorICAgIDQzOTIzLCA5NjYxLCA0MjkzMywgNzQ4ODQsIDc3OTEwLCA3ODA2OCwgNDM5MjEsIDAsIDcxMTg0LCA5ODMwNzAsIDQxOTkxLCAKKyAgICA5ODM4OTMsIDAsIDc2MzAsIDk4NDYsIDc2ODQsIDEwMzUwLCAxMjg0NTMsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIAorICAgIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDQzOTA5LCA3NDQzOCwgMTIzMzAsIDEyODI3MiwgMCwgCisgICAgNDI0MTcsIDQyMzgzLCA2NjYzMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA0MzkwOCwgNzQ0NDMsIDEyNzg5NCwgMTAyMDksIAorICAgIDgzMTMsIDQxOTUsIDc0NDM1LCAxMzE2LCA2NjY5MCwgNzUwNzIsIDYzMzIsIDY0ODk0LCA5ODMxNTYsIDY1ODcxLCA2NzI1MCwgCisgICAgMTczNiwgOTgzNjg0LCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4MjQxLCA2OTMsIDkxMzAsIAorICAgIDMxNCwgNjQxNDksIDQyNDIwLCAxMTk0OSwgMTI3MjAwLCAxMjAxNTIsIDExMDI2LCAxMjA1MTYsIDUzMzIsIDY5NDAsIAorICAgIDY0MTU0LCAxMjYzNSwgMTI0OTgwLCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgODMzMDcsIDc4ODQwLCA3MTM2OCwgCisgICAgMTI4MjQsIDQzOTExLCA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCAKKyAgICA2NDU2MCwgMzc1NywgMCwgMCwgNzQzMDIsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgNzQ5NzYsIDIzMjYsIDY1NzQwLCAyNTY1LCAKKyAgICA0MjQ1OSwgNzU5NiwgNzkyMSwgOTgzODY4LCA3Mzg2MiwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDkyNjIyLCAKKyAgICA0MDQ0LCA5MjY0NiwgNDM5NTMsIDEyMjMzLCA5ODM4NzEsIDEwMjMsIDQ3NCwgMTk0OTQwLCAxMTk4MTgsIDAsIDAsIAorICAgIDQyNDg3LCA2NTU1NiwgMTIxMTY4LCAxMjc4NjYsIDQyMjk1LCAxMjgyMDMsIDEyMTQ3NCwgNzEzMjIsIDkyNTE4LCAyMjIyLCAKKyAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDk4MzQ1NSwgMCwgNTUyNTEsIDEwMTE4LCAKKyAgICAzMTMzLCAxMjc3NzEsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAwLCA0MTY2NSwgCisgICAgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgCisgICAgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIAorICAgIDE5MzcsIDk4Mzc1MSwgNjg0ODEsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDc3OTY1LCAxMTk4MzcsIDExMDE3LCAKKyAgICAxMjA2MDEsIDAsIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIAorICAgIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAxMjg5NjcsIDE3MTMsIDc3OTY5LCAKKyAgICAxMjEyOTIsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAKKyAgICAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDcxNDgxLCA2MTY1LCAKKyAgICA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3Mzg2MSwgNDI0MDIsIDc0MzI3LCA3ODA2LCAxMTM3NjIsIDg5MTQsIDY2OTA4LCAKKyAgICAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgNjc4NDksIDU3NDYsIDY2NDA4LCAKKyAgICAwLCA2NDQxNiwgNDI0MjIsIDgzNTA2LCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIDEyMTM2OSwgODM1MjQsIAorICAgIDQyMzI4LCAxMDc2NywgMTI4ODYyLCA4MTE1LCA4MzQ1NCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCisgICAgOTgzMjMwLCA2NTg0OCwgOTI4ODQsIDgzNTE3LCA2OTg2MywgMTI4MzI4LCAxMjY5ODcsIDQ0ODYsIDEyODA4MiwgOTE3Nzk2LCAKKyAgICAwLCAxMDkyNSwgMCwgODM1MTUsIDgzNTA3LCAxMjQ5NTIsIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAKKyAgICAxMDMwNSwgNDI0NjEsIDc0ODgyLCA0MjM0OSwgODgzMiwgNzgwNTEsIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCAKKyAgICA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDExOTIxNCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIAorICAgIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgCisgICAgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIAorICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDEyODMzNSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCisgICAgNDI0ODAsIDkxNzk0OSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIAorICAgIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIAorICAgIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAwLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIAorICAgIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgCisgICAgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIAorICAgIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgCisgICAgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCAKKyAgICA5NzM0LCA2NTQyNSwgMCwgMTIxNDMxLCAxMjczNTcsIDc0ODkwLCA3ODgzNiwgMTAxMTIsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIAorICAgIDc0NTI3LCA2NjY3NSwgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCAKKyAgICA4MzE1LCA2NTQ0NCwgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgCisgICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAKKyAgICAxMTQ5MCwgNDI3MzAsIDQ0ODUsIDcxMTI2LCAxMjgxOTQsIDY0OTI2LCAwLCA5ODMxMzMsIDQzODMwLCA1ODY5LCAxMjQzNywgCisgICAgNDI3MjgsIDAsIDcwNDAsIDM1ODgsIDAsIDEyODI1LCAxMjExNTgsIDAsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCisgICAgMjIzLCA3ODYzNSwgNjk2NzUsIDEyMDExOSwgNDI0NDQsIDEyODQ0OSwgNjQ0OTksIDY1MjQ1LCAxMjkxMDQsIDExNzEsIAorICAgIDEyODgwMiwgNjk3MTcsIDEyMDExMywgMTgwNSwgODc3MiwgNDM4MjAsIDAsIDk5MzAsIDY1MjQ3LCA3ODYxOSwgNzQ5NTQsIAorICAgIDIzMzgsIDEyMDAzMiwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDEzMDkyLCAxMTE4NSwgNjgxMjYsIDEyMTMsIAorICAgIDEyODQxOSwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDgzMDA1LCA2NDM4NywgNDExNSwgNzEzMzEsIDUwMDUsIAorICAgIDY0MDcwLCA2NDA3MywgMTA2NzksIDgzMDAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgODMzNTgsIDgzMDEwLCA4MjUxLCAKKyAgICAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAzMTAxLCAKKyAgICAxMjc4MTUsIDEyODU4LCAxMjAxNTksIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIDkzMTIsIAorICAgIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgCisgICAgMTI4NTE1LCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgMCwgMCwgMTI5MywgNzk0NywgMjEzMiwgOTgzNzY3LCAKKyAgICA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIAorICAgIDEwODQwLCAwLCAxMDY2OCwgMTEzNzIzLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCAKKyAgICA2NDkwMywgODYzOCwgMTI3MjY1LCA5MTc4ODYsIDEyNzkwNSwgMCwgNjk4NDgsIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIAorICAgIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgMTA3NjQsIDEyMDMxNCwgCisgICAgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCAKKyAgICA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgCisgICAgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIAorICAgIDY2MzczLCA5ODMyNDksIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIAorICAgIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCAKKyAgICA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIAorICAgIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgOTMwNTksIDgzMTE0LCAyMzM2LCAKKyAgICA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCA3MDM5MCwgNjU0MDYsIAorICAgIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCA0MjI4NSwgNDE2NzQsIAorICAgIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIDY1NDAzLCA5ODMwODksIAorICAgIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCiAgICAgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCAKICAgICA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIAotICAgIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDE5NDY1MiwgMTI3NDczLCA4NDIxLCAxMjc0NzIsIAotICAgIDY5NjgyLCA0MzcwNSwgNTAyLCAwLCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgMjAyOSwgCi0gICAgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgMTI2NjQ4LCAxMjc4NzcsIDQyNDg4LCAwLCAKLSAgICA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAwLCAwLCAwLCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIAotICAgIDc3OTg5LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIAotICAgIDY1NDUyLCAwLCAxMTMwMSwgNzgwMTMsIDc4MDA4LCA3ODAxMCwgOTg3NCwgNzgwMDcsIDAsIDEzMTksIDMwNTAsIDY1NDEwLCAKLSAgICAwLCAwLCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDEyODEzNywgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgCi0gICAgOTI3MDksIDEyODIyMiwgMCwgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgCi0gICAgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgMTE5NjExLCA3OTIzLCAzNzE2LCAKLSAgICA5MjM2MywgOTk5NiwgODUwOCwgMCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCAwLCA0MTcwNywgODQ5MywgCi0gICAgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIAotICAgIDAsIDAsIDkxMTksIDI3ODcsIDc5MjAsIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCAwLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgMCwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgCi0gICAgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzgxNDEsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgCi0gICAgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIAotICAgIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCAwLCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDkxNzkyMCwgMjkyNiwgOTE3OTE5LCAKLSAgICA0NTY5LCA3NDEzMCwgMCwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIAotICAgIDE5NDg1OCwgMCwgMCwgMTI3NTQ1LCAxMjA1NDMsIDAsIDAsIDYyOTEsIDAsIDc4NjM5LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAKLSAgICAwLCA5ODM1ODEsIDc0MDU0LCAxMjc3NTQsIDE5NTAyOSwgMCwgODM5LCA5ODMzMTksIDc2OTUsIDg3NjksIDY1MjQ2LCAKLSAgICA0ODI5LCAxOTQ2NjMsIDQ4NTksIDY0NDY3LCAwLCA5ODM5NjMsIDExODk5OCwgNzIwNiwgMCwgNjY0NywgNDM5ODYsIDAsIAotICAgIDY5NzY2LCAwLCA2NDc2NCwgNDIxMCwgOTgzODYzLCAxMjc5MzYsIDgwNCwgMCwgMCwgMTIyOTgsIDAsIDY2NjUzLCAwLCAKLSAgICA2NDkyNCwgMTAwOTEsIDczOTMxLCA5NDY4LCA3NDI0NSwgMCwgMCwgNzQyNDYsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIAotICAgIDkyMjAyLCAwLCAxMjc5LCAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAwLCA5MjY5NywgNDMyMzksIDg0ODIsIDkyNDQwLCAKLSAgICAwLCA1MDMyLCA2OTY3NywgMTE5NDAsIDY3ODg4LCA2NjQsIDEyMDQzNywgNTAzNCwgMCwgMCwgMTI3NTI1LCA0MjcwMiwgCi0gICAgNzM4ODgsIDk4MzE0OSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgMCwgOTExNSwgNzQzMCwgMTIwMzc3LCAwLCAKKyAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjE0MDMsIDEyMTI5NCwgODQyMSwgMTI3NDcyLCAKKyAgICA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAKKyAgICAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCA3MDM3MiwgMTI3ODc3LCAKKyAgICA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDk4Mzg0MCwgMTI0OTYwLCAxMjA4MzksIAorICAgIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgNTU0OCwgNzc5ODUsIDAsIAorICAgIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAxMTIxNCwgNjU5NTIsIDc4MDEwLCAKKyAgICA5ODc0LCA3ODAwNywgOTgzMTE1LCAxMzE5LCAzMDUwLCA2NTQxMCwgNjczOTksIDkyNjA2LCA3ODAxNiwgNzgwMTcsIAorICAgIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDgzMDUwLCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA4MzUxMiwgMTI4MjIyLCAwLCAKKyAgICA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgCisgICAgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgCisgICAgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCA5ODMzNzQsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIDQxMzc5LCAKKyAgICAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMTI4OTc4LCA1NTI4MiwgCisgICAgOTExOSwgMjc4NywgNzkyMCwgNzAwOTEsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgOTE3NzkyLCAwLCA3ODAyMSwgCisgICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgNzQ4OTUsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgCisgICAgNjQzOTYsIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgCisgICAgNjg0MTIsIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAKKyAgICAyMTA0LCA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCAKKyAgICA2ODQ5NSwgNDU2OSwgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgCisgICAgNjU2MjksIDAsIDE5NDg1OCwgNzQ4NTQsIDAsIDcwNDY2LCA2NzM5MiwgNjYzODUsIDcxNDM5LCA2MjkxLCAwLCA2ODQ4NywgCisgICAgNDE2NjksIDcwOTQsIDEyMTA1MSwgMCwgMTIwOTk5LCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKKyAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCAwLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKKyAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA4MzUxOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKKyAgICA4MDQsIDgzNTIwLCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAorICAgIDY3MjA2LCA2NzIwNSwgNjcyMDQsIDY3MjAzLCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgNzE4NTEsIDEyNzksIAorICAgIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgNzE0ODAsIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgCisgICAgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTI3NTI1LCA0MjcwMiwgCisgICAgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIDcwMTkxLCAKICAgICAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIAotICAgIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgMTE4ODY3LCAKLSAgICAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDAsIDE5NDYzOCwgMCwgMTY2MywgMTA0MTksIDc0MDI1LCAKLSAgICA0MjYzNiwgMCwgNjk3MjUsIDAsIDEyMDY1NiwgMCwgNjc4NzYsIDAsIDAsIDAsIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIAotICAgIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAwLCAwLCAxMDg1NSwgNTQ0NSwgOTM1NSwgMCwgNjUxOTgsIDczOTEsIDg5ODksIAotICAgIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCAwLCAwLCA2NDQ2OSwgMTIwNDI2LCAKLSAgICAxMDU1NSwgMCwgNDMzMzMsIDkyMjk5LCAwLCAxMjA0MjcsIDEwNDUxLCAwLCA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCAKLSAgICA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCAwLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDAsIDAsIAotICAgIDExMDEwLCAxMjcyMywgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCAwLCA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQyNTk1LCAwLCA3NDQwMiwgMTE4ODYwLCAwLCAxMjA0MTksIDkyNDk3LCA3NDA1MiwgMCwgCi0gICAgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDEyMDQxNywgMTIwNjYyLCAKLSAgICA2OTkyMCwgMTk0NzAyLCA2MjE2LCAwLCAxMDc1NSwgOTQ1NSwgMCwgODEyNCwgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIAotICAgIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAwLCAwLCAwLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMCwgCi0gICAgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCAKLSAgICAxMjA0MDksIDEyNzA0NCwgMCwgODUzNywgMCwgMCwgOTM1NCwgOTgzMTY0LCAxMjg4MzMsIDQxMTk5LCAxMDEyMSwgMjAyOCwgCi0gICAgMCwgOTgzMTk0LCA2OTcxNSwgMCwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAwLCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTI1ODAsIAotICAgIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDAsIDc0MDcxLCAwLCA5ODM0NTcsIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgCi0gICAgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgNTQyLCAwLCAxMTg3ODYsIDAsIAotICAgIDk4Mzk3OSwgMTIzMCwgMCwgMCwgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgMTI3OTM4LCA4MzUyLCAKLSAgICAwLCA1Njg3LCAwLCA2NDUxNSwgMCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCAwLCAwLCA3MDA4MCwgCi0gICAgNzEzMzgsIDAsIDg2NjAsIDEyNjQ5NSwgMCwgMCwgNzg3NzMsIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgCi0gICAgNjA4MCwgMCwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAwLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAKLSAgICAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCA2Nzk3OSwgOTgzNjkwLCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgMCwgCi0gICAgNzQ3ODUsIDY5ODc1LCAwLCAwLCA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA3NDI4MCwgCi0gICAgMTA4NzcsIDExODg2OCwgNjQ4ODUsIDc0MjcyLCAwLCAwLCAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMCwgNzQ0NTYsIAotICAgIDY0NjA2LCA5OTE3LCAwLCA5MjIzMSwgNTAzNywgMCwgMTc3NiwgODQyMiwgMCwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgCi0gICAgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDAsIDQ2MzAsIDEzMTE3LCAwLCAxMjg3NzIsIDY1MTIzLCAKLSAgICAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgNDI1MiwgCi0gICAgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgMCwgNjU0MTksIDAsIDAsIDY0OSwgNjU0MjEsIAotICAgIDAsIDY2NzAyLCAwLCAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCAKLSAgICA3MDE3LCA0Mjg1MiwgMCwgODE1NywgOTczNiwgNjQ1MDMsIDY1NDE4LCAwLCA5ODM4NzgsIDc0MDM1LCAwLCAxMTkxMywgCi0gICAgNzM4NzQsIDY2OTYsIDAsIDg5MjAsIDExOTI5OCwgMCwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAKLSAgICAwLCAwLCAxMDE3NywgNzM3NzcsIDE4NTcsIDE5NDY1NywgNDYyNiwgODQ2NCwgODQ3MiwgMCwgNDYyOSwgODQ5OSwgNzgzMjEsIAotICAgIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTkxNzMsIDAsIDAsIDc4MDUsIDAsIDk0MDA3LCA2OTM1LCA5MjI5MiwgNzgzMjUsIAotICAgIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDAsIAotICAgIDAsIDc4MzM2LCA3ODMzOSwgOTU0MywgNzgzMzUsIDc4MzMyLCA3NzgzMiwgNjU4NDksIDc3ODMxLCA5ODM5NjEsIDAsIAotICAgIDEyNDUxLCAwLCA4Njg0LCAwLCA2MTAyLCAwLCA1Mjk4LCAwLCA1Mjk0LCAwLCAwLCA5ODM0NTksIDE5NTA2MiwgOTk0OSwgCi0gICAgMTE5ODI2LCA0MzYxNywgMTE5MjE1LCAwLCAxMjA3MywgMCwgMCwgNzc4NjMsIDEzMTA4LCAxMjA2MTcsIDExNDM5LCAKLSAgICA0MTQ2OCwgOTgzNzU3LCAwLCA1MjkyLCA1NTI3MiwgOTgzODgzLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzksIDEyNDU1LCAKLSAgICAxNzkzLCAwLCAwLCAwLCA2NjQzLCA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCAwLCAKLSAgICAxMzIxOSwgOTU2OSwgMCwgNzQzODMsIDAsIDc0MTk3LCAwLCA1NTAwLCA4ODEzLCAwLCAwLCA3NDU2NiwgNTMyMiwgMCwgCi0gICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDQzMzI0LCAKLSAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAwLCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCAKLSAgICA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgCi0gICAgNDE4MTUsIDQxMTUwLCAwLCAxMDU3MSwgMTAwOTYsIDAsIDAsIDc4MDc0LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCAKLSAgICA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNzQ0NjYsIDkzOTY2LCA2NjcwLCA3Nzg4MiwgMCwgMCwgNDMwOTIsIAotICAgIDQzMzI1LCAwLCAxMDE2OCwgMCwgOTc4MSwgMTI4NjU1LCA5MTkwLCAwLCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIAotICAgIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIDk4MzQ1OCwgNzg0MzIsIDc4MjU2LCA3ODM1MSwgNzgzNTIsIDAsIAotICAgIDk4MzY1NywgMCwgMCwgMTM3OCwgOTUwOSwgMCwgMCwgNzQ0NzUsIDMwNjYsIDkyMjIwLCA2Nzg0NywgMCwgOTIzNTUsIDAsIAotICAgIDc4MzY1LCA4Nzg3LCAxMjAzNzksIDE5NDYxNiwgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDE5NDYxNCwgMCwgNjQ2NTIsIDAsIAotICAgIDE5NDYxMiwgMCwgNzgzNjYsIDQyMDg4LCAwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIAotICAgIDc4MjU5LCA3NDUzNCwgODExOSwgNjQ4NzQsIDkxNzgxNiwgMTI3MTk5LCAxOTQ5MzksIDAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgCi0gICAgMTM5NCwgNzQ1MTQsIDAsIDc0NTE1LCAwLCAxMTg4MDQsIDI5OTgsIDk1MjcsIDEyMDY1OSwgNjUxOTAsIDEyOTc3LCAKLSAgICA0MjA5MCwgMTE5MTY1LCAwLCAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgNTg0OCwgMCwgMCwgCi0gICAgMzY3MCwgMTI4NjU3LCAxOTQ2MDAsIDAsIDAsIDc4OTAsIDAsIDExMjk4LCA0MzMxNSwgMCwgNjIyOSwgMTU5MywgMCwgMCwgCi0gICAgNjE5LCA0NjM1LCA2NTA4MCwgMCwgMTI4MDAyLCA0MTIwLCA2NTMzNywgNjUzMzYsIDAsIDExODA4LCAxMTkyMTQsIDc0MTE1LCAKLSAgICA5MzY2LCA0Mjc5MCwgNDIwMDYsIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCAKLSAgICA2NTMyMSwgNjUzMjAsIDY1MzM1LCA2NTMzNCwgNjUzMzMsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgCi0gICAgOTI0MjcsIDkxMjgsIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgzMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIAotICAgIDY1MzE2LCA0MTA2LCA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAwLCA2NTYwOSwgNDEyNDEsIDc5MDMsIAotICAgIDQxMjM5LCA0MzUzMywgNzg0NTksIDcxODksIDAsIDAsIDAsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDAsIAotICAgIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMCwgNTYyLCAxMjE2OSwgNjU5MCwgCi0gICAgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDk4Mzc4NywgMCwgMTAzNywgMCwgMjAyNSwgMTI4MjYzLCAKLSAgICAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDAsIDI4MzUsIDAsIDEwNjI0LCA0MzYyMywgMTEwNzIsIAotICAgIDEyNzE5MSwgMCwgMCwgMTI2MDYsIDc4NDMzLCAyODI1LCAwLCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCAKLSAgICA3MzY1LCA5ODM3NTMsIDEyMDU5MywgMTMwNzEsIDAsIDQ1MiwgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCAKLSAgICA3NDU5NiwgMTE0NjUsIDUyMTIsIDAsIDY0NzAzLCAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDAsIAotICAgIDE2NjgsIDAsIDAsIDAsIDExODcsIDk4MzM4NSwgNDI2MjgsIDc4NTc1LCAwLCAxMjg3NzcsIDAsIDMyNDAsIDEyODUxOCwgCi0gICAgMTIxOTQsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgMCwgMCwgMCwgNzQ1MzUsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIAotICAgIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCA4OTE2LCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgMCwgMTA3MzYsIAotICAgIDkyNTA4LCAxMTU3MSwgNzYxNSwgMTI3MzAwLCA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCAwLCA3ODgxLCAKLSAgICA3MDEsIDY1OTM2LCAzNDg5LCAwLCAwLCAxMjA3NTEsIDExNDAzLCAwLCAwLCAxMjcxNDYsIDM3OTYsIDY4MDAsIDAsIDM5OTQsIAotICAgIDExNDIxLCAwLCAxOTUwNzYsIDAsIDk4MzkyMiwgMCwgMCwgNjQ4NTcsIDEyODEwNSwgMjg1NSwgMTI3ODI4LCA2NjMwOCwgCi0gICAgNDE2MjEsIDY4MjE0LCAxMjcyODMsIDEyNzgxNywgMTA2NTQsIDAsIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCAKLSAgICA2NTg0NywgNzE4MiwgMCwgMTMwMjQsIDE5NDgyMiwgNzQyNzAsIDEyODI4OSwgMCwgMCwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIAotICAgIDIzNzgsIDQzMTM2LCAxMjc5MDUsIDg0NjYsIDk4MzU3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDAsIDAsIAotICAgIDExNDA5LCA2ODM3MywgNjM4MiwgMCwgNjQ2MzQsIDEyODI3OSwgMCwgMTE2MTIsIDAsIDY3NjAwLCAyMzc0LCA5NDA2NiwgCi0gICAgODQ3NSwgMTE2MDksIDY2MzEzLCAwLCAwLCA1Mjg2LCAxMTkyOTcsIDAsIDAsIDY0OTI1LCAxMjAyODMsIDE5NDU4NCwgCi0gICAgMTE4OTgyLCAxOTQ1ODMsIDc3MDUsIDExOTQyLCAxMTMwNSwgMTk0NTgxLCAzMzA5LCAwLCAwLCAwLCAwLCA2ODAyLCAwLCAKLSAgICA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDAsIDAsIDAsIDQxNjUwLCAKLSAgICA2NjUwNywgNjY0NzAsIDAsIDEyOTE0LCA0MTQ5MSwgNjYwMTAsIDExOTU1MiwgNjA3OCwgOTk1NCwgMCwgMTQ3NSwgCi0gICAgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgMCwgMCwgMzI1NiwgMTAxODksIDQyMDc2LCAKLSAgICA0MzI1MiwgNzg4MjMsIDkxNzkwNiwgODcyNywgMCwgNjU4NzUsIDAsIDAsIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgCi0gICAgMCwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDcxMzUxLCAwLCAzNjM1LCA2NDMzNywgOTgzMjgxLCAwLCAwLCA3MTk1LCAKLSAgICAwLCAyMDA3LCA2NDQzMSwgMCwgMCwgMCwgMCwgNjM1LCAwLCAwLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgMCwgMCwgCi0gICAgMTE5MjE4LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCA3MDA1MCwgMjAzNCwgOTI1NTEsIDEyMDgwNSwgCi0gICAgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg4NjAsIDc4NTk2LCAwLCAzNjQ5LCAxMzE0OSwgNDIxNDUsIDQyNzk4LCAKLSAgICAzNjM0LCAxMjAyOTEsIDExODkyNywgNjc2NzcsIDEyMDEyNCwgNzg2NiwgMCwgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgNzQyMzgsIAotICAgIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAxMTgxMiwgNjUzNzksIDY4Mzg2LCAxMjgxODUsIAotICAgIDExNTksIDAsIDY5NzI5LCAwLCAwLCA3MTc4LCAxOTQ2MzIsIDAsIDQxNjgwLCAwLCAxMjgyMDMsIDExNTM0LCAxNTE0LCAKLSAgICAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDAsIDY3ODc3LCAxOTQ1NjcsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIAotICAgIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgMTA4MTgsIDEyNjY0NCwgOTk1MywgMCwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIAotICAgIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCAKLSAgICAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTk0NzY4LCAwLCA2ODM2NCwgOTgzMjI0LCA0ODkxLCAwLCAxMDY0MSwgCi0gICAgMCwgNzM3NDYsIDAsIDY4MzUyLCAwLCA3Mzc4NywgMTk0ODI5LCAxOTQ2MzMsIDcxOTksIDY0OTU1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MjY4NSwgNDI2NzksIDE5MywgMCwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDkyMzE4LCA5MjUxNywgMTE4ODgyLCAxMzYyLCAKLSAgICAxMzI5NywgMCwgMTI4MDk0LCAwLCA5ODMzMzEsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgOTgzODQyLCAKLSAgICA5MjMxOSwgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDAsIDk4MzMzMCwgMjQxNiwgMzMxMCwgNDI3MDMsIDAsIDM3OSwgMCwgCi0gICAgNDM3NTUsIDAsIDAsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDAsIDAsIDk4MzE1NCwgMTI3NzYzLCAKLSAgICAxMDgwNywgOTU1OCwgMTk0NjEzLCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgNjUzMDgsIDMyOTQsIDk4MzMzMiwgODUyOSwgCi0gICAgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDAsIDkyNDU4LCA3Mzc1NywgNjY0NTYsIDQyMzU5LCAwLCAyMDMxLCAwLCAKLSAgICA3MjAyLCAwLCAxMjY3NiwgNDI3MjksIDkyMTk4LCAzMjE1LCAwLCA3NzEwLCAxNjEwLCA3MzgwMSwgMCwgMCwgNjU2ODIsIDAsIAotICAgIDEyMDUzNywgNjU5MjQsIDk5NzQsIDIyOCwgNjYzNTQsIDE1MDEsIDAsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAwLCAKLSAgICA2NTc5NCwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCAwLCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCAKLSAgICA3NDgzLCAwLCAwLCA4MTA0LCAwLCA3NDc0LCA3Nzk3OSwgMCwgMTI2NTA3LCAxMDQxNCwgMTMwMDEsIDgxNDEsIDAsIAotICAgIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA3MDA1MiwgMTI3MTY2LCAwLCAKLSAgICA3NDE5MCwgMCwgMCwgOTgzNzg2LCA0Mjc2MiwgMCwgNDI5MTQsIDE2NTAsIDI2MiwgMTYzNywgMCwgNzkwMSwgMzIzOCwgCi0gICAgMTI4MTczLCA0MTg2MSwgMCwgMTI4NTg1LCA2NTE1OCwgMTA4NjAsIDk0MDU5LCA0MzY1OCwgNzUyNywgMCwgNDMzMTksIAotICAgIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgOTM5ODksIDAsIDExOTgxMCwgNzE5NCwgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAwLCAKLSAgICA5MDg0LCAwLCA4NzM3LCAwLCAxMjg4MSwgMCwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIDAsIDAsIDAsIDk4Mzg3NSwgCi0gICAgMTc5LCA2NTg5NiwgMCwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDk4Mzg5MCwgMTE4OTk2LCAxMTkwMDksIDI4NTAsIAotICAgIDgwODQsIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgMTE5ODQxLCA0MjA3MiwgCi0gICAgMTE5ODQzLCAxMTk4NDIsIDEwMzk4LCA5ODMwNTYsIDAsIDgzNzcsIDEyNzExNiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKLSAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDExOTg1NiwgMjkyLCAxMzAwMiwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAotICAgIDkyNDYzLCA0NjEyLCAxMTk4NTEsIDExOTg1MCwgNzI1MywgMTI3MTEwLCA2ODM5MSwgMCwgMTA3ODIsIDM2MzcsIDEyOTk2LCAKLSAgICA0MzU0MiwgMCwgNjQ1NzgsIDk4MzY3NSwgMzIyOCwgNjk2MzYsIDg3ODMsIDAsIDExOTYxNCwgMjczMSwgMCwgMCwgNzg1ODUsIAotICAgIDQxMDIsIDc2OTYsIDczODc4LCAwLCAwLCA3ODU4NiwgNDMzMTYsIDQxNzcsIDExMjgzLCA5MDg5LCAwLCA3Mzk5NiwgCi0gICAgOTgzMTczLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAwLCAwLCA2Mzc5LCAwLCAwLCAwLCAzMjA4LCAxMjk3NSwgCi0gICAgNzQ3NzUsIDEyNzM4MCwgOTgzOTMxLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAwLCA5ODM2ODMsIDIwMzMsIDc4NTc3LCAKLSAgICA3ODU3NiwgMTk1MDI2LCA1NTI1NCwgNzc0MCwgMCwgMCwgMCwgNzM5NjQsIDAsIDkzOTg4LCA2NzYxMiwgNjU2NzQsIAotICAgIDEyODI0NCwgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgMCwgMTI4MDY2LCAKLSAgICAxMjgwMzEsIDg1NjEsIDQ1NzMsIDAsIDUzMjYsIDAsIDEyMDYwNSwgNzIzMCwgODI1NywgMCwgODc3OCwgNDE2ODgsIDAsIAotICAgIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCAwLCA3NjI4LCA2NTA5MiwgNzM5MDMsIDY2NzIxLCAxMTM0MiwgMTI4NTYxLCAwLCAKLSAgICAwLCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCA5ODM5NTEsIDEyNjQ2OSwgMTE5NDYsIDAsIAotICAgIDMyNTcsIDAsIDEyMzA3LCAxODQ1LCA5ODMxNTcsIDQzNTI2LCAwLCAwLCAxODg2LCA0MjM0MiwgMTAwODksIDg3MCwgNzY0OCwgCi0gICAgMzQ5OSwgODYwOSwgNzY1MiwgODc2LCA4NzEsIDg3NywgMCwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgNDU2MywgMCwgMCwgCi0gICAgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCAxMjY2MDcsIDg2OCwgODczLCA3NjQyLCAwLCA4NjksIDg3NCwgNzY0NCwgCi0gICAgMTIwNjc0LCA4NzUsIDc5MCwgMTI4MzAzLCAwLCAwLCAwLCA2NjE4MiwgOTgzMjU4LCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAKLSAgICAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjg5LCA5ODMyNDgsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgCi0gICAgMTk0NjIyLCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgCi0gICAgMCwgNjc2MzcsIDAsIDk2NzksIDc0MTIyLCAwLCAwLCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIAotICAgIDExOTY0OCwgMCwgMCwgMTg1MSwgMCwgMTI3MTg5LCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCA5ODMyMDIsIDQyNzc2LCAKLSAgICA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDkyNzE0LCAwLCA5MjMyMSwgNDMzMTgsIDAsIDg4MDksIDY5ODgxLCAwLCAKLSAgICA5ODMxNDIsIDEyMDYwNCwgOTgzMDUyLCA5ODM4ODIsIDAsIDk4MzI3MCwgMCwgMCwgNzQyNywgOTk1OCwgNDU4OCwgNDM2ODAsIAotICAgIDAsIDc0NDg0LCAxOTQ5NjgsIDI0MzMsIDAsIDExOTYyMiwgMzM1MiwgNzQzNjMsIDk4Mzg4NSwgMCwgNzkzLCA3NDQwNCwgMCwgCi0gICAgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDEyODUxOSwgODIwOCwgMCwgNDE2OTUsIDE2NDcsIDExODg3NywgMCwgNzgzNywgCi0gICAgOTE3NjI1LCA4MTgsIDUzMzcsIDE5NDYyOCwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCAxMjY1NzYsIDEyMDU5NCwgNzQwODYsIAotICAgIDkxNzYxNSwgOTE3NjE0LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIAotICAgIDkxNzYwNSwgOTE3NjA0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIDEyNjYxMiwgMCwgMjg0MCwgMCwgMTE5OTgyLCAKLSAgICA5ODM5MzksIDAsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMCwgMCwgMTI5OTEsIDAsIDI2NTEsIDY4MDE2LCA5ODMyNjUsIAotICAgIDkxNzYxMSwgMTI3MDI2LCAxMjg4ODMsIDAsIDAsIDQzNjQ4LCAxMjA4MTIsIDAsIDQzMzIyLCA5MjY2MiwgMCwgMCwgCi0gICAgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgMTI4Nzc5LCAxMjc4MjEsIAotICAgIDExOTk4OCwgNjU2MTAsIDIzOTEsIDAsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIAotICAgIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgMCwgMTI4MjY2LCAKLSAgICA2NDc0OSwgNjc4NTAsIDIxMDcsIDAsIDAsIDQ2MDUsIDEyODE3NCwgOTgzMTkyLCA0MzM3MiwgNjU5NDUsIDEyODgzOCwgMCwgCi0gICAgMTE5NTkwLCAwLCAwLCAwLCA5ODcsIDY5MjcsIDExNTcyLCA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDAsIAotICAgIDEyODI5NywgMCwgMCwgMCwgMCwgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCAKLSAgICA0NjI3LCA5ODM4OTIsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDUyMTgsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIAotICAgIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNzQwMzMsIDEwNTE2LCA3NzkwLCA1NTI4LCAwLCAKLSAgICA0MjE0MCwgMTIwMjgxLCAwLCAwLCA0MzU0NSwgOTg4NywgMCwgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAKLSAgICAxMjAyNzgsIDc4ODQsIDAsIDEyODU2NiwgOTE3OTg5LCAxMjg2NjYsIDIxMSwgMjUwOSwgMTI4ODU4LCAxMjA1NzMsIAotICAgIDY4NjcyLCAzMjIwLCA0MjIzNSwgMCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAKLSAgICAxMjcyNTgsIDU4NTIsIDAsIDAsIDEyNzI1OSwgMTcwOCwgMCwgOTgzMTY1LCAyNjIzLCAxMTk0MywgMCwgNjkyMjYsIDAsIAotICAgIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg3NiwgMTIwMjg1LCA3NDIyNSwgOTQxMTEsIDgyNjcsIDAsIAotICAgIDEyNzI2NSwgMCwgNzUxNiwgMCwgMjYyNSwgOTgzOTc3LCA4MDM0LCA3NDMwOSwgMCwgMzYzMSwgMTA5NTUsIDc4NTAsIAotICAgIDEyMDI5MywgODQxNiwgMCwgMCwgMCwgNDMzODQsIDEyNjYwLCAwLCAwLCAwLCA3NDg1MCwgNDEwNjksIDAsIDEyODE1NiwgCi0gICAgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDAsIDM5OTAsIDAsIDk4MzI2MiwgNjYzNjgsIDUwMTcsIAotICAgIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgOTgzMTIwLCA5NTEzLCA0MTA1OSwgOTM1NywgMCwgMTc3MywgCi0gICAgMCwgMTIwMzUwLCAwLCA2MzM5LCA3NzQ1LCA5ODQ0LCAwLCA2NDY1MCwgOTQsIDE4ODAsIDc0NzY2LCA5ODM4MzgsIDg5MDgsIAotICAgIDAsIDEyODcwNywgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDAsIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgCi0gICAgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzM1LCA2NDc4NSwgNzM5NCwgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIAotICAgIDAsIDEyMDM0NCwgNDM5ODgsIDAsIDg2MTAsIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCA2OTg5NCwgCi0gICAgNDMxNzEsIDE0NTksIDAsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDAsIDE1MDQsIDcwMDY0LCAwLCAxMjkxMywgNzQyMDYsIAotICAgIDc1MjksIDAsIDEyODY5OSwgOTgzOTU3LCAxMjA3ODIsIDQxMTMsIDAsIDIzNzIsIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDAsIAotICAgIDY4MiwgNjY0NTgsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIDAsIDk4Mzk1NSwgODAzMywgNjk5NTMsIDAsIAotICAgIDk4MTAsIDEyNzI2OSwgMCwgMTI5NzAsIDAsIDQyMzUxLCAxMDEwOSwgOTE3NjIzLCAwLCAxOTQ2OTMsIDAsIDkyNjkwLCAwLCAKLSAgICAwLCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIAotICAgIDAsIDAsIDc0MjM5LCA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCAwLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgCi0gICAgMCwgMTA0OTgsIDIwODMsIDc3ODg4LCAwLCAwLCAxMTkyMzYsIDYzNCwgMCwgMCwgMCwgNjk3NzksIDQxNjUsIDg3NDYsIDAsIAotICAgIDk2NTQsIDEyODU2LCA2OTI0LCAwLCA3MDY2LCA5ODM3MTksIDAsIDEyODEzNSwgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgCi0gICAgNDEwMzksIDEyNzQ4MywgMCwgNjgwLCAyMzAyLCAxMjgyMDAsIDExODEsIDcwNTYsIDMxNzQsIDEyNjUxNiwgMCwgOTI2NjgsIAotICAgIDY1NjY1LCAxMjczNzUsIDEyNjUwNiwgNjkyMCwgMCwgOTIyOTUsIDAsIDExODk2NSwgMCwgNjQ2NDQsIDEyNjk4MSwgCi0gICAgNzQxMTksIDAsIDQxMDI4LCAwLCA2MjMxLCAyNjEzLCA2NTMwMiwgNDA5ODksIDAsIDE5NDY5NiwgMCwgNDI3NjAsIDAsIAotICAgIDk4MzU2NiwgMCwgNDA5ODcsIDQ2NjcsIDAsIDk4MzkzMiwgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIAotICAgIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgCi0gICAgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDAsIDAsIDk4Mzg2NywgNzYwNCwgOTgzMjkwLCA0MDA5LCAKLSAgICAxMjc4MTYsIDk4MzcxMCwgMTIwNTYyLCAwLCA5ODM3MjAsIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgMTI3MzcwLCAKLSAgICA0MDQ4LCA5ODM1OTgsIDAsIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDAsIDExOTg5MCwgCi0gICAgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAyOTc1LCA3NDQ0MiwgOTgyMiwgCi0gICAgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIDkxNzU2MiwgMTk0NjEwLCAzMzk5LCA5ODUxLCAKLSAgICA5ODM3MTcsIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAwLCAwLCAwLCA3MTM2NywgMCwgMCwgMTc3NywgOTE1MSwgCi0gICAgMTEzNywgNjk3NjcsIDc0OSwgNDIzNjYsIDAsIDUzODUsIDEyODU3NCwgMTI4MjE4LCAwLCAwLCA1OTg5LCAwLCAwLCAKLSAgICAxMjgwOTEsIDAsIDQxNjg1LCA2OTIyMywgMCwgOTc2OSwgNDE2ODQsIDk4MzIxNiwgNTE5LCAwLCAxMTc0MCwgNTc2NiwgMCwgCi0gICAgMCwgMjYwMCwgODg0OCwgMTIwMTM4LCA0MTI5NywgMCwgMzY2NiwgNzQ0NzMsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIAotICAgIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDAsIDAsIDY5NzY1LCAxMjA3NTAsIDI1MiwgMCwgNDEzMDIsIDAsIDAsIAotICAgIDAsIDY5NzYzLCAwLCAxMTcyOSwgODcxOSwgOTA2MCwgMCwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgCi0gICAgOTgzMjIzLCAxMTczMCwgMCwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDAsIDAsIAotICAgIDc3NjQsIDk4MzcxNCwgMTEwOTQsIDEyMDgyNSwgMCwgOTgzMjI2LCA0MjgyLCA4Mjk4LCAwLCAwLCAwLCAwLCAwLCA2NDQ0OSwgCi0gICAgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgMCwgNzQ3ODMsIDY1NjcwLCAwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIAotICAgIDAsIDAsIDAsIDAsIDEyMDc2NCwgMCwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCAKLSAgICAwLCAyNjAyLCAxMjgzNDEsIDAsIDE5NDcwNywgNDExMzUsIDAsIDAsIDAsIDY0NjMxLCAxNzIsIDQ5NzEsIDQxMjE5LCAKLSAgICA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA5MjE5MywgNzU5NywgMTA1MjgsIDAsIDAsIDM3MzIsIDczOTEwLCAKLSAgICAxOTQ1ODgsIDUzNDQsIDAsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAwLCAwLCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIAotICAgIDAsIDAsIDE5NDcxMiwgMTA5MDAsIDQxNTMxLCAxMjYzLCAzNzIwLCAxMjA0OCwgMCwgNjQyOTIsIDQxNTI0LCA3MjI3LCAKLSAgICAxMTk2MzUsIDYwOTksIDQxNTM0LCAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA5MTc5NTcsIDg1MjUsIDEyNzM0NywgMzUyNCwgCi0gICAgOTE3NTY1LCA4ODMxLCAxMjczNDksIDkyNTY0LCAzMDc1LCA2Nzg2NywgMTI3MzUyLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDAsIAotICAgIDAsIDU4NDUsIDAsIDAsIDAsIDI1ODEsIDgyMDAsIDY1MTE0LCA2ODQ2MCwgMCwgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgCi0gICAgOTgzMjAxLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgCi0gICAgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCA3Mzc3NCwgMTA5MTMsIDAsIDAsIDg2NjYsIAotICAgIDY3NSwgNDI0OTMsIDAsIDQzNTcxLCAwLCA2MjE5LCAwLCA5OTgwLCA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgCi0gICAgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgMCwgMTI3MTEsIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCAKLSAgICA5ODMzNzksIDAsIDk4MzIyMiwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgOTgzMDg4LCAwLCA0Mzc0NCwgCi0gICAgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCA5ODMxMjYsIDc0NDYxLCAzMjE4LCAKLSAgICAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIAotICAgIDEyMDQ2MSwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCA3ODcyNywgMTI3MzI2LCAxMjA0NjAsIAotICAgIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgCi0gICAgNzM4OTcsIDAsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAwLCAwLCA5ODMzMjEsIDEyMDczNywgMCwgOTgzOTcxLCAKLSAgICA5ODMzMjAsIDM3OCwgMjYxMCwgMCwgNjUwNzksIDk4MzMyNSwgNjU2OTUsIDEyNjU1OSwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgCi0gICAgMTIwNDc5LCAzMjA5LCAxMjA0NzcsIDAsIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA5ODMzOTksIDAsIDAsIDAsIDAsIAotICAgIDY1NTEwLCAwLCAwLCA1MjMzLCA5ODMzMzUsIDY0NzkyLCA5ODMzMzQsIDAsIDEyNjYzMywgMCwgNzA2MCwgOTg0NywgCi0gICAgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIDczOTcxLCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgCi0gICAgMCwgNjU0MSwgMCwgMCwgMCwgMzI0MywgOTAxNCwgNTYwNiwgMCwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgNzQzOTEsIAotICAgIDY1NDcsIDEyODEzMiwgODIwMywgNzg0ODgsIDk4MzA5MCwgODQ1OCwgNjUyMTEsIDg0OTUsIDExOTkwNCwgMCwgOTE3NTUyLCAKLSAgICA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAwLCA3MDY1LCA3NDE1NSwgCi0gICAgNDM0NiwgMCwgNzM3OTgsIDUwNCwgMCwgOTI0MTQsIDg5ODIsIDAsIDAsIDAsIDc4MiwgMCwgMTA4ODMsIDAsIDE5NDg1MiwgCi0gICAgNzMyLCAzNzM3LCAxMjcyNTMsIDE1NDgsIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgCi0gICAgNDM3NiwgMCwgMTE3ODcsIDM3NDUsIDAsIDAsIDQyODg4LCA2NTcxMiwgOTgzMzA0LCAzODY5LCAxMTkzNywgNTcyNSwgCi0gICAgMTI3NTM5LCAxNzgzLCA2ODY0OCwgNTcyOCwgMCwgMCwgMCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAwLCA1NzI3LCA3ODUyMSwgCi0gICAgMCwgMCwgNzY0LCAwLCAxMjgxMTYsIDQzNTMxLCAwLCA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgCi0gICAgMTE0MjMsIDAsIDExOTg2MSwgNzEzNDQsIDQzNDY1LCAwLCAxMjgyNjcsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIAotICAgIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDAsIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIAotICAgIDExODI1LCAyNjA3LCA2NDc0MCwgMCwgNzczOSwgNzQ1NDMsIDAsIDAsIDAsIDYxMzIsIDAsIDYzNzY1LCAwLCA3MDA1OCwgCi0gICAgNDExNDQsIDAsIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMCwgOTgzMTQ4LCA4ODIwLCAzOTQ3LCAKLSAgICAwLCAwLCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIAotICAgIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCA5ODMzODIsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDkxNzc4OCwgCi0gICAgNzQwMjQsIDEyMjkzLCAwLCA2NDM1NywgMTE3OTQsIDQyMDgyLCAwLCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgMCwgCi0gICAgOTMzNSwgMTI4NTAsIDExOTg3MCwgNjU1MywgNzA1NSwgMCwgODI3NywgMCwgMCwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDAsIDAsIAotICAgIDEyOTkwLCAxMTYwLCA0MjA4NCwgMTE5NjUwLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAwLCAwLCA2ODE3NiwgNTg2MywgCi0gICAgMzEzNywgMCwgNDE0NywgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgMTE5MTkwLCA2ODQ2MSwgNjUyMzQsIDk4MzI5NCwgCi0gICAgMTMwNzYsIDMxMzUsIDk4MzI4NywgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAKLSAgICAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAwLCAxMjcxNzMsIDY5NzQxLCA5ODM1ODIsIDYxNjMsIAotICAgIDk4MzU1OCwgMCwgMTI3MzE0LCAwLCAwLCA4NjAzLCAwLCAxMTk4NjYsIDMzMDYsIDEwODc2LCA0MzM5MiwgMTE5NTczLCAKLSAgICAxMjc5MzEsIDU3NTEsIDAsIDYyMjIsIDAsIDAsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCAKLSAgICA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDAsIDAsIDI1NzAsIDcwMjEsIDAsIDAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCAKLSAgICA2OTc0LCAwLCAwLCA5ODMyMTEsIDUwMDIsIDAsIDQxMjg2LCA2OTk0NiwgMTI3MDE5LCAwLCA0MzU4NSwgMCwgNjU1MSwgCi0gICAgOTgzOTYyLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIAotICAgIDEyODY2MSwgMCwgOTgzMzc1LCA0MTI3OSwgMCwgMCwgMCwgMTEwODEsIDQzNjE1LCAwLCAwLCAwLCA5ODM2MTIsIDEyNzI3LCAKLSAgICAwLCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgOTgzODI5LCAKLSAgICAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAyNTk2LCA0MzU4NCwgCi0gICAgMCwgMTMxMTMsIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCA0MTU3NCwgNzgzMzcsIDAsIAotICAgIDc0MDU4LCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCAwLCAxMjgyMjAsIDAsIDY5OTQsIDAsIAotICAgIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE4MiwgMzc1MSwgOTEyMCwgOTgzNDg1LCAwLCAxNzk4LCA3MDksIDAsIAotICAgIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIDkyNjQyLCAwLCAwLCAyNDUsIDEyODA5NywgCi0gICAgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgNjEzNiwgOTE3NjA5LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCAKLSAgICA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIDE5NDk0NSwgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgMCwgMCwgCi0gICAgMTI4Mjc0LCAwLCAxMTk2NTgsIDAsIDAsIDAsIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIAotICAgIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIDAsIDY0NjQwLCAwLCA5NDEwOSwgMCwgNzQxMzcsIDcwMDM1LCAxMDA2MywgCi0gICAgMTI2NTIsIDEyMTk5LCA5MjQ4MCwgMCwgMjU2NiwgMTE5NzEsIDk4MzczNywgMCwgMTA2NSwgMCwgMCwgNDM0MDAsIDI1NzYsIAotICAgIDY2Njk2LCA5Mzk5OSwgMCwgNDM2MDQsIDAsIDAsIDc0MDgyLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgNDMyMTUsIAotICAgIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzQ1ODAsIDQzMzk4LCAyNTgwLCA5ODM4MTAsIDQxMzQxLCAKLSAgICA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAwLCAzNzMzLCAxMTM0NiwgMCwgMTIwNTQsIDAsIAotICAgIDc0MDk4LCA0MjgyNywgMCwgMTMwOTEsIDAsIDAsIDAsIDkxNzkxNSwgMCwgMTI3MDI1LCAwLCA3NDgyMSwgMCwgOTgzNzMzLCAKLSAgICAxMTkwNDIsIDAsIDEyNzg2NSwgMTMwOTAsIDY2NjQzLCAwLCAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCAKLSAgICA0MjU2OSwgMTI3ODI0LCAwLCA2NDc2MSwgMCwgNDEwMjEsIDg1MTAsIDQyNDMyLCAwLCAwLCAxOTQ3ODIsIDAsIDY0NDk2LCAKLSAgICA3NDEwOSwgNzAwMzAsIDk5MTUsIDAsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIAotICAgIDQzNDAxLCA0MjMxOSwgMTMwODIsIDAsIDcwNjcsIDY4MjIxLCAwLCAxMjczODMsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCAKLSAgICA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCA3NDc5MiwgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgCi0gICAgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCA2NTIzMywgMCwgNDEyMjQsIDQxMDE3LCAwLCAKLSAgICAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDAsIDEyMTA3LCA3MTAwLCAxMDkwNSwgNjUwMTAsIDE5NDk4NiwgCi0gICAgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgMCwgMCwgOTI2NDQsIDEzMTIxLCAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIAotICAgIDEyODIyMSwgMCwgMCwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAKLSAgICAxMTg3ODQsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgCi0gICAgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAxMjgyNTgsIDAsIDAsIDAsIDEzMTIyLCAwLCAKLSAgICAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIDQxMDcyLCA0MTU3OCwgMCwgCi0gICAgNDE1NzcsIDAsIDEwMDAyLCAwLCA2NTMzLCA3MzgwMiwgNDE1NzAsIDAsIDY4MywgMzk2LCA0MTU4MCwgNjgxNDYsIDAsIAotICAgIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIDc4MTU0LCAwLCA0NzQzLCAwLCAwLCA3NDA0MCwgCi0gICAgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgMCwgMzczOSwgNjI2MywgNzEzNDksIDAsIDM5NjQsIDY1OTIsIDAsIAotICAgIDEyODY5MywgNjYwNDAsIDAsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAwLCA0MjA3MCwgNjU2MywgCi0gICAgNDMwNzUsIDkwMTgsIDk0MDA2LCA5ODMzOTYsIDEyMDY3LCA0MTMxMiwgMCwgNTU0NywgNzQ1MzEsIDEyNzk2OSwgMCwgCi0gICAgODE3NSwgMCwgMjg0LCA4MTA4LCA5MzQsIDAsIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgMTE4ODIyLCAxNzUwLCAKLSAgICAwLCA0Mzk0LCA2ODM2OCwgMTgwNywgOTgzODg4LCA5MjI5OCwgMCwgNTg4OSwgMCwgNzE4MCwgMCwgMTE5MTQ1LCAwLCAKLSAgICA5MTc1NTgsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIAotICAgIDY1MjMwLCAxMjgxMDksIDAsIDAsIDM4NTUsIDAsIDAsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgMzk3NSwgMCwgCi0gICAgNzQwODcsIDAsIDEyNjcyLCAzNzk4LCAyNzAzLCA5ODM1OTksIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDAsIDQxMDk1LCAKLSAgICAzOTYyLCAwLCAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgMCwgMCwgNzM5OTQsIDczOTkyLCAxNDY4LCAwLCAwLCAKLSAgICA0MTg1MSwgMTI4MjMwLCA0MTg0NiwgMCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMCwgCi0gICAgMTI4MDMyLCAwLCA0MjUzMSwgMTE5MTA4LCAxNTEwLCAwLCA4MjU2LCAwLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCAKLSAgICA5MjQ3NCwgODc3MCwgMCwgMCwgNzgzNzcsIDE5MTAsIDg2NzEsIDc4Mzc0LCA0MjgzLCAwLCAxMjcxMTcsIDY4MzYxLCAKLSAgICA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA3LCAwLCAwLCAwLCA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCAKLSAgICA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDAsIDAsIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCAKLSAgICA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAwLCAwLCAKLSAgICA5MjM0NywgOTgzMDg3LCA0MTM1MCwgOTEyOSwgMCwgMCwgMjI5NCwgMCwgOTI0ODksIDAsIDEwNDgxLCAwLCA3MDAyMiwgCi0gICAgNzE3MSwgMCwgMzQwLCA5MjQ5OCwgOTM5NzIsIDAsIDAsIDkyMjAwLCAwLCAwLCA2NzY0LCAxMjc0ODcsIDAsIDAsIDAsIDAsIAotICAgIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDAsIDMyMTAsIDAsIDAsIDExODc5NSwgMCwgMCwgMTI3OTcwLCAKLSAgICA5MTc2MTksIDAsIDAsIDEwMDQzLCAwLCAxMTg2LCA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjY2NDIsIDM2NzUsIDUyMDcsIAotICAgIDY1MDYyLCA1MjEzLCAxOTQ3NjksIDI2MTcsIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIAotICAgIDEyODU0NCwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgMjU4NiwgNjQ4ODcsIDAsIDUyMTcsIDcxMzM2LCAwLCAwLCAwLCA2NDI5MywgCi0gICAgNjgwOTgsIDI2MzUsIDAsIDAsIDk4Mzg0NiwgMCwgOTgzNjQxLCA3ODM1LCA3MDA0MCwgMCwgMTk0OTg4LCA5MjI4NSwgCi0gICAgNjQ1NTgsIDEyNzEyMiwgMCwgMTI3MTIxLCAwLCAxMjc5MTMsIDAsIDU3ODQsIDk4MzEwMiwgMCwgMCwgNzAwMzMsIDQwMTEsIAotICAgIDkxNzYxNiwgNjgxMDEsIDAsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0OTYsIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIAotICAgIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgMTk0NzgwLCAwLCAxMTI0LCA1NTk3LCAKLSAgICAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg0LCA5ODM0ODEsIDk4MzQ4MiwgMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCAKLSAgICA5NjcxLCAxMTI1LCA0Mzk5LCAxMjc0NzksIDkxNzYxMCwgOTgzNDg4LCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIAotICAgIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgCi0gICAgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCAKLSAgICA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAKLSAgICAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCi0gICAgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjA3MTAsIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCA5ODM0NzMsIAotICAgIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDAsIDAsIDc4NjM3LCAxMjY0NywgMCwgMTI4MDQzLCA2OTg5MywgMTAzNiwgOTgzNDc3LCAKLSAgICA5MjQxOSwgMTcyMywgMTI4MDU2LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDAsIDEwNzA1LCA3Mzg3NiwgOTgzNDY5LCAKLSAgICA3NDQ4NiwgOTgzNDY3LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA2ODQzNywgCi0gICAgNzgxNDAsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA1NTI2MywgMTE5MDcsIAotICAgIDE5NTAwMCwgNTY5MCwgOTIyNTUsIDkzOTkyLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIDk1MDYsIAotICAgIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIDAsIAotICAgIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCi0gICAgMTI2MDIsIDk0MDQ0LCAwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIAotICAgIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCAwLCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgCi0gICAgMTI3NDkwLCA5ODM0NDEsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDc0Nzk3LCAwLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIAotICAgIDQxMTc1LCA5ODM0NDgsIDk4MzQ0NSwgOTgzNDQ2LCA1Mjk2LCA5ODM0NDQsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIAotICAgIDAsIDAsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDAsIDAsIDEyMTIyLCAxMTk2MDIsIAotICAgIDQzOTc2LCAwLCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCAxOTQ4MTAsIDUxMzgsIDAsIDAsIDExODg2OSwgMCwgNDU0MCwgCi0gICAgNDExODEsIDAsIDYyMDAsIDAsIDUxMzQsIDAsIDMyMiwgNDY0MywgNTEzMiwgMCwgNjM4OSwgMTI4NTMzLCA1MTQzLCAwLCAKLSAgICA4NzkwLCAxMjg2OTQsIDAsIDE5NDgwMiwgMCwgODg2OSwgNjk5MTYsIDAsIDQyMDYwLCA3MTMyNiwgOTY0OCwgMTk0ODA0LCAKLSAgICAxMjcwMTIsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDAsIDAsIDc0MTcwLCAwLCAzMjM0LCAKLSAgICAwLCAwLCA3NDM3NiwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDAsIDc0NDg5LCA5Njk1LCAxMjA3NDYsIAotICAgIDUyMDEsIDAsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMCwgMTk0OTk5LCA2NTI2OCwgMCwgMCwgMCwgMTEwMjcsIDAsIAotICAgIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIDEyNzA3MSwgOTgzNjcwLCAzMjAsIDAsIAotICAgIDg2NDcsIDAsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgMTI3MzU2LCAxMjczNTUsIDY2NDc4LCA0OTYwLCAKLSAgICA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgMTI3MzUwLCAzMzUxLCAxMjcwMDYsIDEyNzM1MSwgCi0gICAgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIDEyNzM0NCwgOTU1NCwgMCwgOTQwNDgsIDEyNzEwOSwgCi0gICAgNjY1MywgMTI4ODExLCAwLCA2NDUxMCwgNjIxMywgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDAsIDEyMDc1OSwgNzM3NDEsIAotICAgIDEyNjAzLCA3MTMxLCAxMTQzMCwgNDU2NiwgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAwLCAxMTkyNTksIAotICAgIDQyNTc2LCAwLCA1MjAwLCAxMjY2MTEsIDkxNzk0OCwgMCwgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNzM4MjUsIDM5NSwgNTQ4MiwgCi0gICAgNTE5OCwgNDM0OSwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDAsIDQzMzA3LCAwLCAKLSAgICAxMTg5NzMsIDAsIDEyMTM0LCAwLCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIDgwOTMsIAotICAgIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDAsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIDEyODE3OCwgNTczOCwgCi0gICAgOTgzMjE1LCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDAsIDY4MTEyLCA3ODcyLCA4NTgxLCAwLCAxMjYwLCAKLSAgICAzMTQ5LCA1MzU5LCAxMjAxMzQsIDAsIDc5MTQsIDUzNTcsIDkyMTcwLCAxMjg2NTksIDI2MjQsIDUzNjQsIDAsIDExNDMxLCAKLSAgICAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgMCwgNzgyOTMsIDQyMjcxLCA3ODI4OSwgNDI5MTcsIDEyMDc5MywgMCwgCi0gICAgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgzODUsIDc4Mzg0LCAxMTgzMiwgNzgzODIsIDc4MzgxLCA3ODM4MCwgCi0gICAgNzgzNzksIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCA3NDU4MSwgMTIwNjMyLCAwLCAwLCAKLSAgICA0MTg4OSwgOTI0NTMsIDAsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMCwgMCwgNzM4MTksIDEyMDU4OCwgCi0gICAgNTAxMiwgNzc5MTIsIDQxMzYyLCA2OTg2MiwgNzgyOTYsIDExOTIxLCAwLCAxMTc2OSwgMCwgNjg2MDksIDQxMzY0LCAwLCAKLSAgICA3NDIyOCwgNDEzNTIsIDQxMzYxLCAwLCA0MTM2NiwgMCwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgCi0gICAgODE5OSwgNzgzODksIDExOTkxNywgNjc3LCAxMTk5MTYsIDAsIDExOTkzMiwgMTI3MTY5LCAwLCAwLCAwLCAzMzQ5LCAKLSAgICA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgMCwgNTgwMiwgMCwgODYxNSwgMCwgMCwgNDkxLCAxMjg4MTksIDEwMTkwLCAKLSAgICAxMjA2OTgsIDY1ODM3LCAxMjg4MjAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIAotICAgIDEwODUyLCAwLCAwLCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAwLCAwLCAKLSAgICA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIDc0ODQ5LCAxMjA2MjEsIDAsIAotICAgIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgODkwNSwgNDEzNiwgNDg3MSwgCi0gICAgNzgyODcsIDAsIDk4MzMsIDAsIDAsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAKLSAgICAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCAKLSAgICA1MTY1LCA1MTI2LCA0MTM4NSwgMCwgNDEzODksIDkxNzkzOCwgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgCi0gICAgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCAwLCAKLSAgICAxMDYyNywgNDExMzAsIDc4MjYwLCAzOTk2LCAwLCA3ODc3MSwgMCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCAKLSAgICA0MzMyLCA2NDgyNSwgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCA5MTc5MTgsIDEyMDg1LCAwLCAKLSAgICA1NzQsIDkxNzkyMiwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjk3MDksIDQxMzIyLCA0MjIxMSwgNTQ0MiwgCi0gICAgNDE5MCwgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDc3ODM3LCA3NzgzOCwgNzcwOCwgNzc4MzYsIAotICAgIDEwODU5LCA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAwLCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIAotICAgIDIwNjAsIDAsIDcxMTEsIDExNzg4LCA2NTU4NywgNjgxMjksIDEwNDE1LCA3NDEwMiwgMCwgMjA1LCAwLCAxMDM1MSwgCi0gICAgMTE5MDc2LCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgMTE5MTU0LCA1NTAzLCAKLSAgICA4MDIxLCAwLCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCA5MjYzNiwgMCwgMTAwMjYsIAotICAgIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCA3ODI2NywgCi0gICAgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAwLCAyNjc1LCA1NTk1LCA3ODQxMSwgNDM3NjIsIDQzNjcsIDAsIDAsIAotICAgIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCA0Mzc2MSwgMTMwNjcsIDExODkwOSwgMTIwMzcyLCAKLSAgICA5ODMxMDgsIDk3MzEsIDY5NzMxLCA2NDYzMywgNzc4NTcsIDc3ODU0LCA3Nzg1NSwgNzc4NTIsIDc3ODUzLCA3Nzg1MCwgCi0gICAgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgMTI4Mjk2LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCAKLSAgICA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgCi0gICAgNTUyNTIsIDczOTcyLCAxNDQyLCAwLCA1ODk0LCA3MDA2OSwgMCwgNDExNzEsIDkyNTExLCA3NDMxMywgMCwgMTMxNjIsIDAsIAotICAgIDMzMzQsIDE5NTAxMCwgMTE4ODAzLCA3Nzg4MSwgNjYwMjIsIDAsIDAsIDE2NTEsIDEyODc3MSwgODg2MSwgMCwgMCwgMTE0MiwgCi0gICAgMCwgODI3MSwgMCwgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCAwLCA0MDAyLCA0MzYyNiwgMTA0NDIsIDEwNjc2LCAzMzQ0LCAwLCAKLSAgICAwLCAxMjkyMCwgMTk0NTYwLCAwLCAwLCA2NjY0MiwgMTI3NywgMCwgNzg3MSwgMCwgMTk0Njg2LCA3ODg1MywgMCwgNzg4NTQsIAotICAgIDEyMDM2MCwgMCwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA2NjM2NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDAsIDc4ODU2LCAKLSAgICA5MjQwMCwgNzc4NzksIDQ5NzMsIDg3ODQsIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDAsIAotICAgIDQzMTE4LCAwLCA0MjM2NCwgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIAotICAgIDI0NjQsIDc0MjYzLCA2MTA4LCAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzQ1MjYsIDcxMjEsIDc0MTY2LCAwLCAxMjAzNTUsIAotICAgIDkyNTM3LCAwLCAwLCAxOTUwMzQsIDAsIDAsIDAsIDcwMDgzLCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgCi0gICAgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCAwLCAwLCAxMTYwMywgCi0gICAgOTgzOTU0LCAwLCA2NTg5LCAxMjg1ODgsIDE5NDY3OSwgMCwgMCwgOTgzNzAwLCAwLCAwLCA0MjU3MiwgMTI4MjY0LCAKLSAgICAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMjcwOTgsIDExNjU0LCAwLCA3NTUwLCAxMDY4NiwgNTkwMywgMCwgNzgwMDksIAotICAgIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgMCwgNTU0MiwgMTEwMTMsIDEyNzkyNywgMTI4MzAwLCAKLSAgICAwLCA3ODYyMSwgMTk0NjcyLCA2OTI1LCAwLCAwLCA5MTc5MjksIDAsIDExNTY4LCA5ODM2NzMsIDQzMzY3LCA2NDU3OSwgCi0gICAgOTE3OTMwLCA3ODUyLCAwLCAwLCA2NzU0LCA2MzEyLCAwLCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAKLSAgICAxMjI5NiwgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDAsIDk4MzYwNSwgCi0gICAgOTUzMiwgNjYzNTUsIDAsIDk4MzIzNCwgOTE3OTI1LCA2NDM0MywgMTk1MDMyLCAxMjgyODEsIDE5NTAzMSwgMCwgMTk1MDMwLCAKLSAgICAxOTUwNTcsIDExNDQ1LCAwLCAyMTEyLCAxOTUwNTYsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIAotICAgIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgMCwgMTIwNDkzLCAKLSAgICAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCAKLSAgICA0MzkxLCA2ODEzOSwgOTgzMDYyLCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgMCwgNjQ3NTcsIAotICAgIDAsIDM5MTMsIDAsIDAsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgCi0gICAgMTE3OTEsIDAsIDAsIDgyMjEsIDc4MzA3LCA0MTg2NCwgMCwgMCwgMCwgMCwgMTY3LCA5ODM5MDYsIDc4MzAxLCA5ODM2NTMsIAotICAgIDc0MjExLCA0MTg5NywgNjg0NzcsIDAsIDkxNzU4MywgOTgzNjM0LCA5NDA2NSwgMjQ5MywgMCwgMTE4ODExLCAwLCAwLCAKLSAgICA2NDM1NCwgMCwgODc3NywgMCwgNDA2LCA4ODg0LCAyMzg1LCAwLCA5MjQ1MCwgMCwgOTE3NTczLCA0MzAzMCwgNDIwMjcsIAotICAgIDEyMTE0LCAwLCA5MTc1NzksIDY0OTM2LCAxOTQ2OTUsIDAsIDEyMDYyOSwgMTA1NjEsIDAsIDgzNjUsIDEyMDUzOSwgCi0gICAgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDAsIDkxNzU3NSwgNzgzNCwgNzQxNTksIDAsIAotICAgIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU5NiwgMTYzOSwgMCwgMCwgNzQxNTcsIDYzMjcsIDY3MjQsIDAsIAotICAgIDEyODA4NiwgOTI1NjYsIDY5OTEwLCA0ODE3LCA3ODQ0NiwgMTk0NzU5LCA5MjUzNiwgNzA0MywgOTYwMCwgMTEwMjIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc1NDgsIDY0Nzk0LCA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAxOTQ3NjEsIDEyMzQzLCA2NTcsIAotICAgIDE5NTA1NCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAwLCAwLCAwLCA0NDU2LCAKLSAgICA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgMCwgOTE3NTk1LCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgCi0gICAgMTA2ODcsIDAsIDQ4MjEsIDQ0NjYsIDAsIDE5NTA0MywgNDgxOCwgMTk1MDQ4LCA0MTQwMywgMTE5OTc3LCAwLCAwLCAKLSAgICA0MTQwNiwgNDMyNzMsIDc0MTYwLCAxMTk5ODMsIDczOTM5LCA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAKLSAgICAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCAKLSAgICA3MDA3MCwgMzM3NSwgMTI4ODY5LCA1OTAwLCA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDAsIDAsIDEyODc3NCwgMCwgCi0gICAgMjI4MiwgMCwgMTI3ODEwLCAxMTQwMSwgOTgzODIyLCAwLCA2ODQ1OSwgMCwgMCwgMCwgMCwgNjU0MzgsIDAsIDcyODAsIAotICAgIDEyNzg4NywgMCwgMTI3MzgxLCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDExODc5OCwgMCwgMCwgNDMxNjEsIDAsIDkyMzYwLCAwLCAKLSAgICA1MTgyLCAwLCAxMjA1NDIsIDAsIDAsIDQyMjYsIDExOTI0MywgMTIxMzUsIDU3MzIsIDQ0NjQsIDAsIDcxMzMwLCA5NzcsIAotICAgIDQ0NTgsIDAsIDAsIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxOTQ3OTAsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMCwgCi0gICAgNzg2LCAwLCA0MzE3NCwgNjQzNDAsIDAsIDE5NDc2NywgMTIwNzIzLCA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCAKLSAgICA2NTAyNSwgMCwgMCwgMCwgOTM5NTYsIDAsIDY4NDQ0LCAwLCA5MjQzNywgMCwgMTE5MTYwLCAxMDIwNCwgOTI2NTYsIDAsIAotICAgIDEyNzgwOSwgOTgzNjQ0LCAxMzk5LCA5ODM2NTIsIDY1MjE3LCAwLCA4ODUyLCAxMjg1NzEsIDI0MSwgMTI4NzgwLCA0OTA3LCAKLSAgICAwLCA5ODM2MzksIDc5MzIsIDk3MjcsIDEyODg3MywgNzQyNTUsIDg3NDgsIDAsIDAsIDk4MzY0MywgMCwgNDI3ODAsIDAsIDAsIAotICAgIDAsIDQyMTcsIDAsIDg2NTAsIDAsIDAsIDAsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAxMTkxMTksIDY3MTksIDAsIAotICAgIDEzMzAwLCA3ODQzOSwgOTM5NzEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAwLCAwLCA3MzgxNSwgNDQyMCwgMCwgNjQxMCwgCi0gICAgNzc2MCwgMCwgMCwgMCwgMCwgMCwgNzI5NCwgMCwgMCwgMCwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCAwLCAKLSAgICAwLCAwLCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgCi0gICAgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAwLCAwLCAwLCAwLCA3NDMxMSwgNzg0OTcsIDAsIAotICAgIDEwMTgxLCAwLCA0MzYyNCwgMCwgNzc3OSwgMCwgMTAxOTUsIDk0NzksIDYwMjksIDAsIDkyMjY4LCA5Njg5LCAwLCA2NTU3NywgCi0gICAgODk5MywgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCAwLCAKLSAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgOTgzMzM5LCA5ODMzMzgsIDk4MzMzNywgOTgzMzM2LCAyNzM1LCAKLSAgICA0MjgzMSwgNzc5MzUsIDEyNzEyMCwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgMCwgNzM5NDYsIDAsIDAsIDAsIDY4MTQwLCAKLSAgICA5ODM5MjgsIDk1NzYsIDEyODg3MiwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAxMjcwNjMsIAotICAgIDc3MDksIDQxMTEyLCA5ODMxMzIsIDY2NTYwLCA0MjA0MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCA5ODM3NTgsIDY3NTgsIAotICAgIDk4MzkyNiwgMTYxNSwgNTg1NSwgODA5LCAwLCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIDk4MzMyOCwgNzAxMDAsIAotICAgIDk4MzMyNiwgNzI2MCwgOTgzMzI0LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgCi0gICAgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCAKLSAgICA1MzIsIDc4NjYzLCAwLCA5ODM3OTYsIDEyMDYwOSwgMCwgMzM3MCwgMCwgMTEzNjEsIDU0NDMsIDc4Nzc4LCA4MTUzLCAKLSAgICA3Mzc2NywgMCwgMTA3NDEsIDAsIDIyOTgsIDAsIDk4MzkxNywgNjU0OTUsIDY0NzA2LCA5ODMzMTgsIDQzMzQ0LCA5ODMzMTYsIAotICAgIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCA5ODMzMTEsIDk4MzMxMCwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCi0gICAgMTI3MTc4LCA0MzI2NCwgNzAwOTYsIDAsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgCi0gICAgNTE4NiwgNzM2MCwgMTI3ODM3LCAwLCAxMjEwOCwgMCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIAotICAgIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAwLCAxMjg1MjAsIDExNDg1LCA2MTAzLCAxMjcxMjMsIDk4MzMwNSwgCi0gICAgMTE3MTgsIDk4MzMwMywgMTI4ODksIDkyNjU3LCAxMjcxMzcsIDAsIDAsIDAsIDU1MjQ1LCAwLCAxNjMwLCAxMjgyMzIsIAotICAgIDY1NDgzLCAwLCAxMjU2NSwgMCwgNjU0NzYsIDEyMDAxMywgMCwgMTE5NTU0LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIAotICAgIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCA2ODIxMCwgMCwgMTI4Njc3LCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIAotICAgIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMyOTksIDk4MzI5OCwgMTI4MjczLCAxMDc0NSwgCi0gICAgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIAotICAgIDEyMDc3MywgMCwgOTgxMiwgMCwgNDQ2MCwgMCwgMCwgNzEzMDcsIDEyODAzOCwgMCwgMCwgMTI3MTc0LCA2NDI3OCwgCi0gICAgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzM4NzksIDE4MDEsIDEyODM1LCAxMTkwMjksIDAsIDczODIzLCAwLCAKLSAgICA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDk4MzI4NiwgOTgzMjg1LCAKLSAgICAxMjg1NzAsIDEyMTA2LCA5ODMyODIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKLSAgICA5NTIyLCA3NDA3OSwgNzgyNjYsIDY2NjA0LCAwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIDc3ODk5LCAKLSAgICA3NzkwMCwgODQ1MSwgMCwgMCwgMCwgNjk3MzksIDAsIDAsIDAsIDAsIDI5MDgsIDAsIDQzMzg2LCA2NDkwMiwgNDI0MywgMCwgCi0gICAgMTIyMzksIDAsIDAsIDQ0NDEsIDAsIDk4MzI3OSwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDk4MzI3NSwgNDExLCA5ODMyNzMsIAotICAgIDkxOTksIDk4MzI3MSwgNDA1NiwgMTE4OTkyLCA0MTg5MCwgMCwgMjczMCwgNDE2MDQsIDk4MzkzNywgNTQyOCwgMTk0NzQzLCAKLSAgICAzMzY0LCA0MjI2NSwgNjQ0MzcsIDEyNzkzNSwgMTE4ODE2LCAxOTQ3NDIsIDk2ODQsIDIxNiwgMCwgMTQwMSwgMTI4MDUzLCAKLSAgICA0NDAxMiwgMCwgMCwgOTI1ODUsIDkxNTgsIDc3ODQyLCA2OTkwNSwgNTc2OCwgMCwgMCwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAotICAgIDY1ODk1LCAwLCAwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgOTgzMjYzLCA5Mzk2MiwgMjc5NCwgCi0gICAgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgCi0gICAgNzc4NDYsIDE5NDc0NywgOTUzNCwgMCwgMCwgMCwgMzQzMCwgMCwgMCwgNzg3MTcsIDAsIDk4MSwgMCwgNDMzMCwgNzM5MjksIAotICAgIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDAsIDcwMzQsIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgCi0gICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNDksIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKLSAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCAKLSAgICA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIAotICAgIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgCi0gICAgMTAzODUsIDQxNzA2LCAwLCAwLCA5ODM0MTMsIDAsIDExNzM5LCA5ODM0MjYsIDQxOTgxLCAwLCA1OTM4LCAwLCA0Mzc2NiwgCi0gICAgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDAsIDEzMDU3LCAwLCAxMjY5NzYsIDAsIDEwMDA5LCAwLCAKLSAgICA0MTcwMywgOTgzNjM4LCAxMjE2NSwgMCwgMCwgOTg4NSwgMCwgODA3NywgMCwgMTI3OTA4LCAwLCAwLCAwLCA5MjQ1NywgMCwgCi0gICAgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIDAsIDEyODM0MCwgMCwgMCwgMCwgMTA5NzAsIAotICAgIDExNzMzLCAwLCAxMjA3OTIsIDAsIDE5OTQ0LCAwLCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAKLSAgICAyNzI0LCAwLCAwLCAxMjMxMywgMTEwNTkyLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKLSAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgMCwgNzg4NTAsIAotICAgIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgCi0gICAgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIAotICAgIDAsIDQ0NzcsIDExODk2NCwgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIAotICAgIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgNzM3ODgsIDc3ODgsIAotICAgIDQ4NDcsIDAsIDEyNzc1OSwgMCwgMCwgMCwgMTU4MSwgNjUzNSwgNzgxNjEsIDEyOTU0LCA0MzAsIDc4MTYwLCA1NTI1OSwgCi0gICAgNzgxNTgsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIDk4MzQzOCwgNjg2MjUsIDk4MzQzNiwgNzI2OSwgMCwgCi0gICAgNTk2NCwgMTI5MDgsIDk4MzU1NSwgMCwgNzQ3NjQsIDc0NDc3LCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDI5LCA0NDMsIAotICAgIDk4MzQyNywgNDk0NCwgNTQ2NywgMTE5NjAzLCA5ODMyNTQsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgCi0gICAgNDEzMDMsIDAsIDE5NDkzMSwgMTE5OTYyLCA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIAotICAgIDQxMzA0LCA4MjQsIDEyODY3NiwgMTIwOTEsIDc4ODkzLCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgCi0gICAgMTE5ODIwLCAxMTk4MTksIDY1MDU5LCAwLCA2NzM5LCAwLCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCAKLSAgICAxMTk4MzIsIDQ2NzcsIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgCi0gICAgNzgxNzAsIDc4MTY2LCA0Njc0LCA0NTQ4LCA0NDAwNSwgMTE5OTQ5LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgCi0gICAgMTI3MDI0LCAxODU1LCA5ODM0MTIsIDY4NjY5LCA5ODM0MTAsIDkyNDQ1LCAxMjc1NTQsIDAsIDEyNzMzOSwgMTE5NjUyLCAKLSAgICAyNzQ1LCAxMTc5NywgOTgzNDE4LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDk4MzQxNCwgOTgzNDE2LCA2ODYzOCwgNzM5OTMsIAotICAgIDEwNTI1LCA0NjQ5LCA2NTIwOSwgOTgzNDE3LCAwLCA0NjQ4LCA0MzA4MCwgOTgzNDA2LCA5ODM0MDcsIDk4MzQwNCwgNjI0NiwgCi0gICAgNjQ5NTAsIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDc4MDA1LCA5MjM4NCwgNDMxODcsIAotICAgIDg2NjksIDk4MzQxNSwgNjgyMSwgNjUwOTMsIDAsIDc4ODgxLCAyNzE2LCAwLCA5ODMwNjAsIDk4MzQxOSwgMCwgNjgzNjksIAotICAgIDEyMDA1NCwgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDc5OTIsIDAsIDAsIDQ2NjIsIDc4MDMzLCAKLSAgICA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCAKLSAgICA3ODExLCA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgCi0gICAgOTgzNDExLCAwLCAwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAwLCAxMDAwOCwgMTAyMjIsIAotICAgIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgOTgzMzk1LCA5NDA3MCwgOTgzMzkzLCAKLSAgICA5ODMzOTQsIDk4MzM5MSwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCAKLSAgICA3ODg4MywgOTgzMzg2LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgOTgzMzgwLCA1OTU4LCAwLCA5ODM0MzMsIAotICAgIDQyMTUsIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgOTgzMzg5LCA0MTMxMywgNTIyLCA1MzY4LCAwLCA2NTgwMywgMCwgCi0gICAgNTM2NiwgMTIyMDEsIDUzNzIsIDAsIDk4MzQwOSwgMCwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzNDAwLCAwLCA0NjM4LCAKLSAgICA5ODM0MDUsIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCAxMjc4MzMsIDUzNzYsIDE4MzUsIDUzMzUsIAotICAgIDE5NDk2NiwgMTI4MDg5LCA0NjMzLCAwLCA2ODExOSwgMTE4MCwgNDYzMiwgMTI4MDkzLCA1Mzg3LCA1MzMzLCAwLCAwLCAKLSAgICA0MjA5NCwgNTMzMSwgNDYzNCwgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgCi0gICAgMTI2OCwgNjUwOTcsIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCAKLSAgICA0NzU4LCA5ODMzNzQsIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAotICAgIDc0Mzg0LCA5ODMzNzgsIDY4Mzc3LCA2MjQ4LCA5ODMzNjIsIDk4MzM2MywgOTgzMzYwLCA0MjMxOCwgOTI1ODIsIDUyMjksIAotICAgIDQ3NTcsIDAsIDAsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAwLCAxMDcxMywgNzE2NiwgMCwgCi0gICAgMjYyMiwgNzQ2MCwgMTI3MzAyLCAwLCAwLCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgCi0gICAgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDAsIDAsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCAKLSAgICA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMCwgNTUyNSwgNTMzMCwgNTMxOSwgOTgzNDIwLCAKLSAgICA5ODM4NzIsIDE5NDkwNywgNDQwMDMsIDAsIDk4MzQ4MCwgOTgzNDIzLCAxMjA0OTgsIDEyNzg1MSwgMTk1MDA5LCA5ODM4NjUsIAotICAgIDc0MDIyLCA5ODM0MjIsIDY0NjA5LCA2ODY0MywgMTIwNjM0LCA5ODM0ODksIDU3MjEsIDk4MzQwMSwgNTUxOSwgODYzMiwgCi0gICAgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDk4MzM1MiwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCi0gICAgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMzU1LCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgCi0gICAgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCA5ODMzNDksIDk4MzM0NiwgNzc4NDksIDQ2MDgsIDY0MjYwLCAKLSAgICA0MTEyNCwgNTE5MCwgNjc2MjgsIDAsIDY4MTQ1LCA3MDg2LCAwLCA2Nzk5OCwgNjc2MjAsIDAsIDI3MzQsIDExMDc0LCAwLCAKLSAgICA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCAwLCA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIAotICAgIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgCi0gICAgNjIzOSwgMTE5OTU2LCA0MTI1NiwgMCwgNjgxMzQsIDAsIDc0MjA5LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgCi0gICAgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgCi0gICAgNzE5MywgNjgxMzcsIDAsIDU3MzksIDQxMDI0LCA0ODY2LCAwLCA3MzkwNCwgOTgzODQwLCA0ODY5LCAxMjA1NjMsIDAsIAotICAgIDQyMjMsIDEyODIwMSwgNjY1MCwgMTI2NTA5LCAwLCA5ODM0NjMsIDEyNzg5MCwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgCi0gICAgNzgxNzYsIDY4NjY3LCA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCAwLCAKLSAgICA2MjQ1LCA2ODY1MiwgMjczMiwgNDI3MzQsIDc0NSwgMCwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMCwgNjg2MzEsIAotICAgIDQyNzc1LCAwLCAxOTQ5NTQsIDAsIDMwOTcsIDAsIDU5NjYsIDk4MzQ4NiwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIAotICAgIDY0NDA3LCAwLCAxMjgzMjMsIDg1NzcsIDEyODU2MiwgNjgxOTYsIDQzMjg1LCAxMDIxNiwgNDc4MiwgMCwgMCwgMTIwNzU3LCAKLSAgICA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDAsIDEzMTc2LCAKLSAgICA2ODM2MywgMTA0MjYsIDAsIDkxNzU5OSwgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIAotICAgIDQzMjc4LCA0MjYzNSwgMCwgMCwgNTk2MywgOTE3OTI2LCAwLCAwLCA0ODUwLCAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgCi0gICAgNDg1NCwgMTI3OTE4LCA1MTY0LCA5ODM4NzAsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCAKLSAgICA5MjQ3MSwgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMCwgNDEyNjgsIDQ4NDgsIDI1MzAsIDkxNzkwOSwgMjA2OCwgMTk2NCwgCi0gICAgMCwgNzM3NjIsIDEwNDU4LCAwLCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMCwgNjgyMTEsIDgzMjIsIDQ3OTcsIAotICAgIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI0LCAzMDMsIDk4MzEwMSwgOTI2MjIsIAotICAgIDk4MzQyNSwgMjQzNywgMCwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCAwLCA0MzI5MiwgMCwgMjQ0MSwgCi0gICAgMTA3MzksIDY1MDkwLCAwLCAxMTkzMjcsIDEyNjU0MSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCi0gICAgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMCwgMCwgCi0gICAgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDAsIDE4MSwgCi0gICAgOTgzNDMwLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIAotICAgIDk4MzYwMSwgMCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIAotICAgIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIDEyODU4MSwgMTI3NTgsIDM4NjUsIDAsIDAsIDEwNTAwLCAKLSAgICAwLCAxMTkwMjQsIDc4MDI4LCA5MjQwOCwgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgCi0gICAgNTQ2MywgMCwgMzEyNSwgOTU2NywgMCwgNDg3OCwgNTQ1OSwgNDYwNCwgOTE3OTMxLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgCi0gICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDk4MzQzOSwgNzg3MTQsIDY0MTkxLCAKLSAgICA2NDE5MCwgODg5OCwgNjQxODgsIDAsIDQxMDMwLCA3ODgzNiwgMCwgOTE3ODM1LCA3ODgyMCwgOTE3ODM0LCAwLCA3ODgwNSwgCi0gICAgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzNDM3LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgCi0gICAgNzA3OSwgNTg1NiwgMTI3MDQzLCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDAsIDEwNTY0LCAKLSAgICA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIAotICAgIDQyNDgsIDAsIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCisgICAgNzc4MzYsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDY3NzQxLCAKKyAgICAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDAsIDE2NjMsIDEwNDE5LCA0MjkwMSwgCisgICAgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgNjcyMTMsIDY3MjEyLCAwLCAKKyAgICA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMTk0NzMyLCAwLCAxMDg1NSwgCisgICAgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCA5ODM4NzQsIDExOTIzOCwgODAxMCwgCisgICAgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCAKKyAgICA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgCisgICAgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIAorICAgIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgCisgICAgMTAyMzUsIDAsIDAsIDk4MzMyNSwgNDM0NDEsIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgMTI2NjQxLCA3NDQwMiwgMTE4ODYwLCAKKyAgICA3ODY2MSwgMTIwNDE5LCA5MjQ5NywgNjYyODcsIDEyMDQyMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgCisgICAgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDgzMjEwLCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDY3MjMwLCAKKyAgICAxMDc1NSwgOTQ1NSwgMTExNTUsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTIxMTI1LCAwLCA2OTY4MCwgMjgyOCwgMCwgCisgICAgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIAorICAgIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCAKKyAgICA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIDAsIDg1MzcsIDEyNzMwNiwgMCwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIAorICAgIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAKKyAgICA5ODM2NTcsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMTk0OCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgNjgzMDYsIAorICAgIDc0MDcxLCAwLCA5ODM0NTksIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzcwLCAxNzM0LCAwLCA3ODE0MSwgCisgICAgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgOTE3OTgxLCAxMTg3ODYsIDk4Mzg1OSwgCisgICAgMTk0Nzk3LCAxMjMwLCAxMjUwMTgsIDEyMTM0MywgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgCisgICAgNjc3MzcsIDgzNTIsIDc4NDM2LCA1Njg3LCAxMjcwMTgsIDY0NTE1LCAxMjEzNzgsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCAKKyAgICA3ODQzNCwgOTcwNCwgMCwgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDAsIDg2NjAsIDEyNjQ3OCwgMCwgMTI4NTY5LCA3ODc3MywgCisgICAgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxOTQ4NTEsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgCisgICAgOTgzMTAxLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCAKKyAgICA2Nzk3OSwgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMCwgMTIxNDc4LCAKKyAgICA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA2NzY4MiwgMTA4NzcsIDExODg2OCwgNjQ4ODUsIAorICAgIDc0MjcyLCAwLCAxOTQ2NzIsIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgOTkxNywgCisgICAgMCwgNzQ4NTUsIDUwMzcsIDExOTkxMiwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCAKKyAgICA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCA4MzAwMiwgMTI4NzcyLCAKKyAgICA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIAorICAgIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDk4Mzk0OSwgNjU0MTksIDAsIAorICAgIDEyODQ5NiwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIAorICAgIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIAorICAgIDY1NDE4LCAxMjkwNTAsIDk4Mzg3OCwgNzQwMzUsIDE5NDkxOCwgMTE5MTMsIDczODc0LCA2Njk2LCAxMjA5MTYsIDg5MjAsIAorICAgIDExOTI5OCwgMTI4NDI2LCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAKKyAgICAxMDE3NywgNzM3NzcsIDE4NTcsIDE5NDY1NywgNDYyNiwgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCAKKyAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCAKKyAgICA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgCisgICAgODQ5NiwgODM0OTksIDc0NTgyLCA3NTA1MiwgNzgzMzksIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCAKKyAgICA3NzgzMSwgOTgzOTYxLCAxOTQ2NDksIDEyNDUxLCA3NDM3NiwgODY4NCwgMTI4MzAxLCA2MTAyLCAwLCA1Mjk4LCA5MTc4NDcsIAorICAgIDUyOTQsIDAsIDgzMDE2LCA2ODA0MywgMTk1MDYyLCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIAorICAgIDEyODY0NiwgNzc4NjMsIDEzMTA4LCAxMjA2MTcsIDExNDM5LCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCAKKyAgICA5ODM4ODMsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3NywgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIAorICAgIDkyNDc3LCA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCAKKyAgICA3NDM4MywgMCwgNzQxOTcsIDEyOTA4OSwgNTUwMCwgODgxMywgMCwgMTI4NjEyLCA2ODg2MCwgNTMyMiwgMTIwOTQ0LCAKKyAgICA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIAorICAgIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgCisgICAgMTI0OSwgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgCisgICAgNDMxNjIsIDQxODE1LCA0MTE1MCwgMTI4OTExLCAxMDU3MSwgMTAwOTYsIDY3MTYxLCA2NzE2MCwgNjcxNTksIDY5NDcsIAorICAgIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA2NzE1NywgOTM5NjYsIDY2NzAsIAorICAgIDY3MTc1LCA2NzE3NCwgMCwgNDMwOTIsIDQzMzI1LCA2NzE3OCwgMTAxNjgsIDY3MTc2LCA5NzgxLCA2ODI0OCwgOTE5MCwgCisgICAgMTI4NDk3LCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIAorICAgIDEyOTEzMiwgNzI0MDksIDc4MjU2LCA3MjQwOCwgNzgzNTIsIDAsIDc1MDYzLCAwLCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIAorICAgIDkyOTk2LCA3MjQwNywgMzA2NiwgOTIyMjAsIDY3ODQ3LCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIAorICAgIDY3MTg5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxMjczODQsIDAsIDY0NjUyLCAxMjEyMjIsIDEyMTAxMiwgMCwgCisgICAgNzgzNjYsIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgCisgICAgNzEwNTAsIDgxMTksIDY0ODc0LCA3MTA1MiwgNzgxNzQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAorICAgIDEzOTQsIDc0NTE0LCAxMjg0MTMsIDc0NTE1LCA5ODM3MjcsIDY3MTg0LCAyOTk4LCA5NTI3LCA2NzE4MSwgNjUxOTAsIAorICAgIDEyOTc3LCA0MjA5MCwgNjcxODUsIDk4MzY0NywgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIAorICAgIDU4NDgsIDY3MTkzLCA2NzE5MiwgMzY3MCwgNjcxOTAsIDY3MTk3LCA2NzE5NiwgNjcxOTUsIDc4OTAsIDEyODA3MCwgCisgICAgMTEyOTgsIDQzMzE1LCA5ODMzMTUsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKKyAgICAxMjE5NCwgNDEyMCwgNjUzMzcsIDY1MzM2LCAxMjg0MDcsIDExODA4LCA2NzE5OSwgNjcxOTgsIDkzNjYsIDQyNzkwLCAKKyAgICA0MjAwNiwgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgCisgICAgNDM5NDcsIDY1MzM0LCA0Mzk0NiwgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgCisgICAgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODMwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAorICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDEyMDg2MiwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgCisgICAgNDM1MzMsIDc4NDU5LCA3MTg5LCAwLCAwLCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgNjYyOTIsIAorICAgIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMTIxMzUxLCA1NjIsIDEyMTY5LCAKKyAgICA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMTIxMDk2LCAxMjgyODEsIDEwMzcsIDEyODY3NywgCisgICAgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDQzODM5LCAyODM1LCA4MzA1MiwgCisgICAgMTA2MjQsIDQzNjIzLCAxMTA3MiwgODMwNDUsIDEyODUyMywgODMwNDYsIDEyNjA2LCA3ODQzMywgMjgyNSwgODMwNDgsIAorICAgIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDgzMDQzLCAxMjA1OTMsIDEzMDcxLCAxMjEyODgsIDQ1MiwgCisgICAgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDkxNzkxNywgNjQ3MDMsIAorICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIDExOTg0OSwgMTIxMTUwLCAKKyAgICAxMjgyNzUsIDExODcsIDk4MzM4NywgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAzMjQwLCAxMjg1MTgsIAorICAgIDEyMTUxLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDAsIDExODkzMiwgMCwgNjY4MjcsIDE2MjMsIDY1Mjk3LCAKKyAgICAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCAxNTQxLCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgNjY0MDIsIAorICAgIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgCisgICAgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgCisgICAgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTk1MDc2LCAxOTUwNzgsIDY4MDM2LCAwLCAwLCA2NDg1NywgCisgICAgODM1MDgsIDI4NTUsIDc0NDE4LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIAorICAgIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgCisgICAgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCAKKyAgICA4MzA3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIAorICAgIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIAorICAgIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgCisgICAgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIAorICAgIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCAKKyAgICA0MjU2NSwgNDE2NTEsIDAsIDkxNzYyNywgODMwNDIsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDc0NDcyLCAxMjkxNCwgNDE0OTEsIAorICAgIDQzOTAxLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCisgICAgNDEwNjIsIDAsIDExMzY4MCwgMzI1NiwgMTAxODksIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDY4MDg5LCA4NzI3LCAxMjA5MjIsIAorICAgIDY1ODc1LCAwLCAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIAorICAgIDkwMTUsIDcxMzUxLCAwLCAzNjM1LCA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgODMzNDYsIDIwMDcsIDY0NDMxLCAKKyAgICAxOTUwNzUsIDAsIDkyMTk3LCAxMjcwOTAsIDYzNSwgMCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgCisgICAgMTI4NTEwLCAxMjE0NTcsIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCA3MDA1MCwgMjAzNCwgCisgICAgNzg0MjMsIDExMTU0LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDE5NDYwMiwgMzY0OSwgCisgICAgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIAorICAgIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgCisgICAgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDEyMDc5NywgNzE3OCwgMTIwODUxLCAKKyAgICA5ODM4MzYsIDQxNjgwLCAxMjg0NjksIDgzMDk4LCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAKKyAgICAxMjg0OTAsIDY3ODc3LCAxOTQ1NjEsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgCisgICAgMTA4MTgsIDgzMDkxLCA5OTUzLCAxOTQ4OTUsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIAorICAgIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgOTE3OTI0LCA2Nzg3NSwgCisgICAgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTI1MDc5LCA4MzM1NCwgNjgzNjQsIDEyMDc3OSwgNDg5MSwgMCwgMTA2NDEsIDAsIAorICAgIDczNzQ2LCAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTI4ODU4LCAxMjcwOTQsIDcxOTksIDExMTMxLCAwLCAwLCAwLCAKKyAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgNjgzMjMsIAorICAgIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDAsIDcxODgwLCAwLCA5ODMzMzMsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCAKKyAgICA2NjgzMCwgOTgzODQyLCA4MzEwMywgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgCisgICAgNDI3MDMsIDgzMTA3LCAzNzksIDAsIDQzNzU1LCA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAorICAgIDQ1NDksIDE5NDczOCwgMCwgNzEyNTMsIDcwNzg0LCAxMDgwNywgOTU1OCwgOTMwMjcsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCAKKyAgICA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIAorICAgIDczNzU3LCA2NjQ1NiwgNDIzNTksIDEyODQzOSwgMjAzMSwgOTgzODkwLCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgCisgICAgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCAKKyAgICA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgMTUwMSwgMTI3OTk0LCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCAKKyAgICA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgCisgICAgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCAKKyAgICA4MTQxLCA5ODMyMzksIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgCisgICAgMTI3MTY2LCAwLCA3NDE5MCwgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAKKyAgICAxNjM3LCAxMjg1MDIsIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgMCwgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCAKKyAgICA0MzY1OCwgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAxMjc3NTMsIDExOTgxMCwgCisgICAgNzE5NCwgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAxMjg2ODQsIDkwODQsIDEyMTAzOSwgODczNywgOTgzMTY1LCAxMjg4MSwgCisgICAgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCA5ODM4ODIsIDM1NjQsIDAsIDY5OTc4LCAxNzksIDQzNjQ0LCAKKyAgICA3NTA0OSwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDEyOTA0MiwgNzAzNDcsIDExOTAwOSwgMjg1MCwgODA4NCwgCisgICAgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCA4MzUyMiwgNDIwNzIsIDkyNzM2LCAKKyAgICAxMTk4NDIsIDEwMzk4LCA4MzM4NiwgODM1MjMsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKKyAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgCisgICAgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKKyAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzNjMyLCAxMTk2MTQsIAorICAgIDI3MzEsIDAsIDEyMDgzMywgNzg1ODUsIDQxMDIsIDc2OTYsIDczODc4LCAxMjE0MTcsIDEyODEzMiwgNzA4MTMsIDQzMzE2LCAKKyAgICA0MTc3LCAxMTI4MywgOTA4OSwgMTIwOTE4LCA3Mzk5NiwgMTIxMTExLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAKKyAgICAwLCAwLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTI3MzgwLCA5ODM5MzEsIAorICAgIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzNjgzLCAyMDMzLCA3ODU3NywgNzg1NzYsIDgyOTY1LCA1NTI1NCwgCisgICAgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCA2NTY3NCwgMTI4MjQ0LCAKKyAgICA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAxMjg1MjAsIDEyODA2NiwgCisgICAgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDEyMTQxNSwgCisgICAgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgNjUwOTIsIDczOTAzLCAKKyAgICA2NDM1NSwgMTEzNDIsIDEyODU2MSwgMCwgOTgzNDM0LCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgCisgICAgOTY3LCA5ODMzMzUsIDEyMDk4NSwgMTE5NDYsIDk4MzYwMiwgMzI1NywgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTI5MDcyLCAKKyAgICA0MzUyNiwgMCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCAKKyAgICA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgNDU2MywgMCwgOTE3ODkyLCA3NTkxLCA2NTg4NywgCisgICAgODY3LCA5NTIwLCA4NzIsIDc2NTYsIDg2OCwgODczLCA3NjQyLCA3NjU5LCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIAorICAgIDc5MCwgMTI4MzAzLCAxMTg5MzgsIDE5NTA1MywgOTMwMzgsIDY2MTgyLCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIAorICAgIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyOTEsIDEyNzIxNCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAKKyAgICAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAKKyAgICAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIAorICAgIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAxODUxLCAxMjQ5OTUsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgCisgICAgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDExMTEyLCAwLCA5MjMyMSwgNDMzMTgsIAorICAgIDkyMzAyLCA4ODA5LCA2OTg4MSwgMCwgMTI2NTE4LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjc3LCA5ODM0MzMsIDEyODQxMiwgMCwgCisgICAgMTIwNTc3LCA3NDI3LCA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDEyNzE4NSwgMjQzMywgMTI4NjAyLCA2OTk3MywgCisgICAgMzM1MiwgNzQzNjMsIDEyODY2OCwgMTIxMzQxLCA3OTMsIDc0NDA0LCAxMTE5NywgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIAorICAgIDY5OTc5LCA4MjA4LCA2ODMwOCwgNDE2OTUsIDE2NDcsIDExODg3NywgNzA4NDEsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAKKyAgICAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgNjg3NDIsIDEyMDU5NCwgNzQwODYsIDY4Nzc3LCA3MDE3OSwgCisgICAgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDE5NDY1NCwgCisgICAgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDY3NzIzLCAyODQwLCA5ODM5MDUsIDc4ODI5LCA5ODM5MzksIAorICAgIDY2ODg3LCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCAKKyAgICA2ODAxNiwgOTgzMjY3LCAxMjczMjYsIDEyNTAzOCwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCA5MTc4MzMsIAorICAgIDQzMzIyLCA5MjY2MiwgMCwgMCwgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgCisgICAgNzQ4OTQsIDExMTUyLCA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCAKKyAgICA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIAorICAgIDEyODM0MCwgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgOTgzMTkyLCAKKyAgICA0MzM3MiwgNjU5NDUsIDEyNzI0OSwgMTExMTMsIDExOTU5MCwgMCwgMCwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIAorICAgIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgOTgzOTUxLCAxMjgyOTcsIDAsIDc4NzYyLCAxMjc4NjcsIDEyMTM2OCwgCisgICAgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMTkyNjksIDUyMDgsIDAsIAorICAgIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDczODk0LCAxMjg4NTIsIAorICAgIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIDEyMDI4MSwgMCwgCisgICAgOTgzNzc3LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgCisgICAgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgNjg2NzIsIDMyMjAsIAorICAgIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIAorICAgIDU4NTIsIDAsIDc4NDgyLCAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgMTI4NzAwLCA2OTIyNiwgCisgICAgNjk5NzQsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg3NiwgMTIwMjg1LCA3MDQ0NywgOTQxMTEsIAorICAgIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCA3NTE2LCAxMjc1NTIsIDI2MjUsIDk4MzY0MSwgODAzNCwgNzQzMDksIDAsIDM2MzEsIAorICAgIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDk4MzA2NSwgMCwgNDMzODQsIDEyNjYwLCAxMjg2OTMsIDEyODI3MCwgMCwgCisgICAgNzQ4NTAsIDQxMDY5LCA3MDE4NSwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgOTgzNDg5LCAKKyAgICAzOTkwLCAxMjUwNTAsIDk4MzI2NCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCA3MDQ1NywgMTAzMCwgMTE4ODAwLCAKKyAgICA5MjU2MywgOTUxMywgNDEwNTksIDkzNTcsIDc0OTg4LCAxNzczLCA3NzkzOSwgMTIwMzUwLCAxMjQ5NjEsIDYzMzksIDc3NDUsIAorICAgIDk4NDQsIDEyNzIyMCwgNjQ2NTAsIDk0LCAxODgwLCA3NDc2NiwgMTEzNzE5LCA4OTA4LCA5ODMyMjIsIDEyODcwNywgCisgICAgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDY4NzY5LCAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzYsIDAsIDE3NTcsIAorICAgIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAKKyAgICAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgCisgICAgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDAsIAorICAgIDEyOTEzLCA3NDIwNiwgNzUyOSwgMTI4NzQ1LCAxMjc4NjgsIDcwMjAzLCAxMjA3ODIsIDQxMTMsIDEyMDkyOSwgMjM3MiwgCisgICAgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCA2ODIsIDc2NTUsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIAorICAgIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgMCwgNDIzNTEsIAorICAgIDEwMTA5LCA3NDUzNSwgNzQwNjgsIDc0OTIxLCAwLCA5MjY5MCwgMCwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgCisgICAgMCwgNzM4ODcsIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAxMjExMTcsIDc0MjM5LCAKKyAgICA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCA2OTkxMiwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDExMTYxLCAKKyAgICAxMDQ5OCwgMjA4MywgNzc4ODgsIDcxMTk2LCAwLCAxMTkyMzYsIDYzNCwgMTI0OTcwLCA5MjI5MCwgMTk0ODg2LCA2OTc3OSwgCisgICAgNDE2NSwgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgMTk0NjkzLCA3MDQxNSwgMTI4MTM1LCAKKyAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCA0MTAzOSwgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAKKyAgICAxMTgxLCA3MDU2LCAzMTc0LCA2NzI0OCwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAorICAgIDEyNjYwNiwgMTE4OTY1LCA2ODMxOCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDY4MjM4LCA0MTAyOCwgNzQwMjUsIDYyMzEsIAorICAgIDI2MTMsIDY1MzAyLCA0MDk4OSwgNjgyMzksIDY4MjMwLCA2ODIzNCwgNDI3NjAsIDAsIDQzODk2LCAwLCA0MDk4NywgNDY2NywgCisgICAgMCwgNzE4NDMsIDg4MjgsIDc3OTk1LCA3MDUwNiwgMTI0NiwgNDc0NiwgMTI4NTAxLCAxMjg1MDgsIDExMDIxLCA0NzQ5LCAKKyAgICA5MjY3NSwgOTE3ODgyLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDEyNzIxMCwgNjQ2NTMsIAorICAgIDc4Mzg2LCA3NDYxNywgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCA3NDU2OCwgOTI5ODMsIDk4Mzg2NywgNzYwNCwgCisgICAgOTgzMjkyLCA0MDA5LCA3MDI3NywgNzE4NDQsIDEyMDU2MiwgMCwgOTgzNzIwLCA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIAorICAgIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCA4MzAwOSwgNzAwMjQsIDE2NDYsIDc3ODkwLCA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgCisgICAgMTI5MDQ3LCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgCisgICAgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDc4Mjk5LCAKKyAgICAzMzk5LCA5ODUxLCA5MTc2MDksIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAxMjc3NjcsIDAsIDcxODQyLCAKKyAgICA3MDE3OCwgOTIzMTQsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY2ODY3LCA3NDksIDQyMzY2LCA3MDQ0NCwgNTM4NSwgNzA3OTEsIAorICAgIDcyNDM1LCA3MDEyNywgODMzNzcsIDU5ODksIDEyODkwNSwgNzQ2MzYsIDEyMDg0OCwgMCwgNDE2ODUsIDY5MjIzLCAwLCAKKyAgICA5NzY5LCA0MTY4NCwgMTk0NzM3LCA1MTksIDExOTIzMSwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDcwNDE2LCAKKyAgICA0MTI5NywgMCwgMzY2NiwgNzA0MjAsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIAorICAgIDY1NTgsIDEyNzE0OSwgMTI4MDY0LCA2OTc2NSwgOTI3NzUsIDI1MiwgMCwgNDEzMDIsIDExOTM1MCwgODM1MDQsIDExODgzOSwgCisgICAgNjk3NjMsIDY4NzYyLCAxMTcyOSwgODcxOSwgOTA2MCwgMTI5MDkxLCAxMjAxMzksIDEwNzYxLCAwLCAwLCAxMjk0MTAsIAorICAgIDExODc5MiwgMTE3MzQsIDkzMDExLCAxMTczMCwgMTEzNzQxLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIAorICAgIDExNzI4LCA0MzU3MiwgOTgzMTM5LCAwLCA3NzY0LCA2ODc0MSwgMTEwOTQsIDEyMDgyNSwgMCwgNDM0ODksIDQyODIsIAorICAgIDgyOTgsIDAsIDAsIDcwMzI4LCAxOTQ5ODYsIDcwMzI0LCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIAorICAgIDcwNDQyLCA2NTY3MCwgOTgzOTYzLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDk4Mzg2OSwgNzAzMjYsIDAsIAorICAgIDcxNDYwLCAxMjA3NjQsIDcwMzIyLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIAorICAgIDEyMDIwNywgMjYwMiwgMTI4MzQxLCAxMjExMDMsIDEyNTA0MywgNDExMzUsIDgzNDk4LCAwLCAxMjEzMjUsIDY0NjMxLCAKKyAgICAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA3NzkyNiwgNzU5NywgMTA1MjgsIAorICAgIDc1MDU0LCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCA5ODM5NzEsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAKKyAgICAxMjE0NDEsIDkyNTI4LCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDgzMzMwLCAxMTM3MDcsIDE5NDcxMiwgMTA5MDAsIAorICAgIDQxNTMxLCAxMjYzLCAzNzIwLCAxMjA0OCwgNzQwNzUsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgCisgICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgOTE3NTY1LCA4ODMxLCAxMjczNDksIAorICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDAsIDU4NDUsIDEyMTMxMCwgMCwgCisgICAgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDk4MzY5MywgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgOTgzMjAxLCAKKyAgICA2MzQwLCAxMTg4NTUsIDEyMTAyNywgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgCisgICAgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIDczNzc0LCAxMDkxMywgODMxMTYsIDk4MzA4NiwgODY2NiwgCisgICAgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCAKKyAgICA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgCisgICAgNDI4NTcsIDgyNjIsIDkzMDM2LCAwLCA3NDQ3NiwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgOTgzMDg4LCAKKyAgICAxMjgxMzcsIDQzNzQ0LCAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIAorICAgIDk4MzEyNiwgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIAorICAgIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgCisgICAgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgCisgICAgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIAorICAgIDAsIDAsIDgzMTc4LCAxMjA3MzcsIDEyMDk1MywgMTk0NzczLCA5ODMzMjIsIDM3OCwgMjYxMCwgOTgzMzI4LCA2NTA3OSwgCisgICAgOTgzMzI3LCA2NTY5NSwgMTIxMjIwLCAzNywgNzA2OCwgMCwgMTIwNDgwLCA2ODIzNiwgMzIwOSwgMTIwNDc3LCAxMjA4MzUsIAorICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA3MTQ4NiwgOTIyMjUsIDk4Mzk1MywgOTgzMzQwLCAwLCA0Mzg0MCwgMCwgMCwgCisgICAgNTIzMywgOTgzMzM3LCA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTI2NjMzLCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgCisgICAgMTY4NSwgNTk1LCA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCAKKyAgICA2NTQxLCA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTI1MDMyLCA1MzgsIDY0NjIwLCA1NjAyLCAKKyAgICA4NDY3LCA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAKKyAgICAxMjc0ODEsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgCisgICAgMTIwOTEzLCA3MDY1LCA3NDE1NSwgNDM0NiwgMTEzNjkwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAKKyAgICAxMjE0NzEsIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIAorICAgIDE1NDgsIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgCisgICAgMzc0NSwgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTI3OTEzLCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAKKyAgICAxNzgzLCA3NDE2LCA1NzI4LCAwLCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAorICAgIDc4NTIxLCAxMjExMjEsIDAsIDc2NCwgMCwgMTIxMDExLCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAxMjcxODIsIDQyNTMyLCAKKyAgICA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgNzQ4NTIsIDExOTg2MSwgNjgzMDMsIDQzNDY1LCAwLCA3NDc2NywgNjU1OSwgCisgICAgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgMTIwNjQ4LCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgMTI4NzExLCA0MzM3NywgCisgICAgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgNzczOSwgNzQ1NDMsIAorICAgIDkxNzc2NSwgNjczOTMsIDAsIDYxMzIsIDAsIDYzNzY1LCAxMjgzOTYsIDcwMDU4LCA0MTE0NCwgNzE4OTksIDkyNDM4LCAKKyAgICA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMTI4Mzk0LCAxOTQ3NzYsIDg4MjAsIDM5NDcsIDAsIDY1Mjk5LCAKKyAgICAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEyNTAwMiwgMTk0OTMyLCAxMTM2OTEsIDc2ODgsIDkxNzc4NiwgCisgICAgNzY4NiwgODI4OCwgMTE4MTUsIDk4MzE4OCwgMTIxNDExLCA5ODMzODQsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgCisgICAgNDIyODEsIDc4NTQ0LCA3NDAyNCwgMTIyOTMsIDk4MzY4MCwgNjQzNTcsIDExNzk0LCA0MjA4MiwgMTI4MTI1LCAxNzM3LCAKKyAgICA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIDY1NTMsIDcwNTUsIDY4MDQxLCAKKyAgICA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAxMTYwLCA0MjA4NCwgOTM5NjMsIAorICAgIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgOTgzODY1LCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgCisgICAgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgNjgzNDEsIDEzMDc2LCAzMTM1LCAKKyAgICA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDc0NjM1LCAKKyAgICAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIDY1MjM2LCA5MTc4NzgsIDYxNjMsIAorICAgIDk4MzU1OCwgMTEzNzI4LCAxMjczMTQsIDEyODEzOCwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIDExOTg2NiwgMzMwNiwgCisgICAgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDAsIDEyNzQ2NiwgMTIwODYsIDc0MDMsIAorICAgIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMTE5OTAzLCAwLCAyNTcwLCAKKyAgICA3MDIxLCA3NDkwMiwgMTk0NzQyLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgOTI3NTAsIDAsIDk4MzIxMSwgNTAwMiwgCisgICAgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgNDM1ODUsIDExMzcyMCwgNjU1MSwgOTgzMzc1LCAxMjgyMjksIAorICAgIDk4MzI3NCwgNDEyODksIDEyNTEzMCwgNzEwODAsIDEyNzk1OCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODM1MCwgCisgICAgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDAsIDEyNzg4OCwgCisgICAgOTgzNjEyLCAxMjcyNywgNDM4OTUsIDAsIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCAKKyAgICA3ODMxLCA5ODM4MjksIDE5NDU3MSwgMCwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIAorICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgCisgICAgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDczODc5LCAKKyAgICAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgNjUyOSwgNzA2MywgOTgzMTc5LCAzNzUxLCA5MTIwLCAKKyAgICA5ODM0ODcsIDY4MDM4LCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIAorICAgIDY3NzUyLCA3MDg1MCwgMTE5MDU3LCAyNDUsIDEyMTA2NiwgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgNjEzNiwgCisgICAgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgMTI3MDE1LCAKKyAgICA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCA5ODMxMzYsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAxMjgxODQsIDAsIDAsIAorICAgIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIAorICAgIDcxMTIzLCA2NDY0MCwgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgCisgICAgNzQ2MjIsIDQzNDkyLCAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDAsIDEyNzAwNSwgNDM0MDAsIDI1NzYsIAorICAgIDY2Njk2LCA2NjgxOSwgODMzMzMsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCAKKyAgICA0MzIxNSwgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3MDMxMCwgNDMzOTgsIDI1ODAsIDE5NTAyNSwgCisgICAgNDEzNDEsIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAorICAgIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMCwgOTE3OTE1LCAxMjc5NjEsIAorICAgIDEyNzAyNSwgMTI4MzM0LCA3NDgyMSwgNzExMDQsIDY2Mjk1LCA2ODAzNywgMCwgMTIxMTE2LCAxMzA5MCwgNjY2NDMsIDAsIAorICAgIDEyNzAsIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIDQyNTY5LCAxMjc4MjQsIDY2ODk4LCA2NDc2MSwgMCwgCisgICAgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMTk4OTgsIDExOTMxNywgMTk0NzgyLCAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIAorICAgIDk5MTUsIDk4MzA4MywgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIAorICAgIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIDEyNzM4MywgMTI3MTcxLCAwLCAxMjA3NDUsIAorICAgIDc0MjA5LCA5MDI5LCA0MzU0MywgNzA4MzYsIDIzNTMsIDYzMDgsIDEyOTE1NCwgNzQ3OTIsIDI2MTEsIDExOTE4NiwgCisgICAgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAorICAgIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyODE0OSwgMzc0NywgMTA1MjIsIDAsIDE5NDg3NiwgMTY5MSwgCisgICAgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIDY1MDEwLCAxMjEyOTksIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIAorICAgIDk4MzM0MywgOTMwNTgsIDc0NzgxLCAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDEyMDk0OSwgCisgICAgMTIxMDMyLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgCisgICAgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCAKKyAgICA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIDEyODI1OCwgMTk1MDI3LCAwLCAwLCAKKyAgICAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgCisgICAgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIDAsIDEwMDAyLCAxMjEzNjQsIDY1MzMsIDczODAyLCA0MTU3MCwgOTE3OTE5LCA2ODMsIAorICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCA5ODMwNjcsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIAorICAgIDc4MTU0LCA5ODMzOTcsIDQ3NDMsIDY5OTg3LCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgCisgICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjE0MjQsIDY4Mjg4LCA2NjA0MCwgCisgICAgODI5NDYsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAxMjg0NDMsIDQyMDcwLCA2NTYzLCA0MzA3NSwgCisgICAgOTAxOCwgOTQwMDYsIDk4MzM5OCwgMTIwNjcsIDQxMzEyLCA5Mjc2MywgNTU0NywgODkxNiwgMTIwODY5LCAxMjg5NTAsIAorICAgIDgxNzUsIDk0MDM0LCAyODQsIDgxMDgsIDkzNCwgMTI4MDM5LCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAorICAgIDExODgyMiwgMTc1MCwgMTI4Njg2LCA0Mzk0LCA2ODM2OCwgMTgwNywgOTgzODg4LCA5MjI5OCwgMCwgNTg4OSwgMTI4Nzk1LCAKKyAgICA3MTgwLCAwLCA2NzEyNywgMCwgNjcxMjYsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAKKyAgICAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDAsIDkxNzYzMCwgMzg1NSwgMTk0ODEwLCAxMTc2NywgCisgICAgMTI3OTk4LCAwLCA3NDI5NSwgMTk0NjUxLCAwLCA5MjQxNiwgMzk3NSwgNjcxMjUsIDc0MDg3LCA3NDk4OSwgMTI2NzIsIAorICAgIDM3OTgsIDI3MDMsIDE5NDYwOCwgMCwgMjEwOSwgOTc3NCwgMTI3NSwgMCwgOTgzNzUwLCA0MTA5NSwgMzk2MiwgNjgyNDIsIAorICAgIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgMTI3MTg5LCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDEyMDAzMywgCisgICAgOTgzMDU3LCA0MTgwMywgMTI3OTk5LCA0MTg0NiwgMTI3MjQ0LCA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAKKyAgICAzMjI0LCAxMTM3MzQsIDkyNzQxLCA2NjI4MSwgNDI1MzEsIDc0NTkzLCAxNTEwLCAxMjgzODQsIDgyNTYsIDAsIDExMzkzLCAKKyAgICAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCA3MjQxNiwgMTIwODExLCA3MjQxNSwgMTkxMCwgODY3MSwgNzgzNzQsIAorICAgIDQyODMsIDY4ODQyLCAxMjA4MjQsIDY4MzYxLCA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA2LCAxMjgyNDEsIDAsIDcyMzk0LCAKKyAgICA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIAorICAgIDc0NDc1LCA5ODM0NDQsIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIAorICAgIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAxMTkxNDQsIDEyODQ0NywgOTIzNDcsIDE5NTA2NiwgCisgICAgNDEzNTAsIDkxMjksIDk4MzQ0OCwgMCwgMjI5NCwgNjQ1MDEsIDY4MDM0LCA4MzMyNiwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAKKyAgICAwLCAzNDAsIDcxMTA1LCA5Mzk3MiwgNjczNjAsIDAsIDkyMjAwLCAxMjgyNDksIDEyNDk3OSwgNjc2NCwgMTI3NDg3LCAKKyAgICAxMjgzOTMsIDAsIDkyNTA5LCAxMjg5NjIsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDExOTA3MywgMzIxMCwgMCwgCisgICAgMCwgMTE4Nzk1LCA4Mjk1OCwgOTQxMDEsIDEyNzQ4NCwgOTE3NjE5LCAxMTkxNDksIDAsIDEwMDQzLCAxMjEyMTUsIDExODYsIAorICAgIDQxNTcxLCA2OTk5LCA2MTcsIDk0NjQsIDEyNTEyMywgMzY3NSwgNTIwNywgNjUwNjIsIDUyMTMsIDc0NjE2LCAyNjE3LCAKKyAgICA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAxMjEyMDksIDAsIDU1OTYsIDU1NDUsIDcyODgsIAorICAgIDI1ODYsIDY0ODg3LCAxMTk4MjYsIDUyMTcsIDcxMzM2LCAxMjg2ODcsIDkxNzYxNCwgMTIxMDM4LCA2NDI5MywgNjgwOTgsIAorICAgIDI2MzUsIDkyNzYwLCA4MzEzNywgOTgzODQ2LCAwLCA5Mjc0MiwgNzgzNSwgNzAwNDAsIDEyMDcwNywgMTk0OTg4LCA5MjI4NSwgCisgICAgNjQ1NTgsIDEyNzEyMiwgMTIxNDI1LCA2NzA4MywgNjcwODUsIDcwMDk5LCA3MTExOCwgNTc4NCwgOTgzMTAyLCAxOTUwNTAsIAorICAgIDk4MzgxMiwgNzAwMzMsIDQwMTEsIDE5NDU2NSwgNjgxMDEsIDEyNDk3OCwgNzg2NCwgNDI1NCwgNjUwOTUsIDk4MzQ5OCwgCisgICAgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAKKyAgICAxMjkwNTQsIDEyNzEwMywgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NiwgNzUwNDAsIDk4MzQ4NCwgCisgICAgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgNjg3NzUsIDY2Mjc0LCA5ODM0OTAsIDc2MzEsIAorICAgIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgNTQ5MSwgMTE4Nzk3LCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIAorICAgIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDEyNzEyMSwgNzEyMiwgOTgzMDkwLCA0MzkwLCA0NTQsIAorICAgIDQxMzk3LCAwLCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAKKyAgICAxMTkxODQsIDM3NDYsIDExMDE2LCA2NTc1MiwgOTI3NTcsIDAsIDQzNDIzLCAxMjg2ODMsIDExOTg5LCAxMTg4ODksIAorICAgIDEyNzc5MSwgMTI3OTk1LCA3ODI5NiwgMCwgODI0OSwgMTI4MTcyLCAxMTEwOSwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCAKKyAgICA1MTMsIDEyNzExOCwgNjU4NiwgODY1NiwgMTI5MzAxLCA2OTc5MiwgNjUwMDgsIDE5NDU5NywgNzExMTEsIDc4MzgzLCAKKyAgICAxOTQ3OTUsIDEyNzQ3NCwgOTI1MTUsIDY4NDc1LCA5Mzk3MywgMTk0NTg0LCA2Mzc5OSwgNzg2MzcsIDEyNjQ3LCA5MTc2MDYsIAorICAgIDEyODA0MywgNjk4OTMsIDEwMzYsIDY4MDkwLCA5MjQxOSwgMTcyMywgNjgyMTUsIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgCisgICAgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDE5NTA1NCwgNzQ0ODYsIDk4MzQ2OSwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAKKyAgICAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNDM5MzYsIDQzOTM4LCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIAorICAgIDQyNTc0LCAxMzI4NSwgNDM5NjcsIDExOTA3LCA0MzkyOCwgNTY5MCwgOTIyNTUsIDUxMTYsIDAsIDQzMTgxLCAxMzA5NSwgCisgICAgNzc5MjUsIDQzOTI2LCA2NDQ5OCwgMCwgOTUwNiwgNjk3OCwgNzAxNzYsIDc0OTMxLCAwLCAxMTM3NDMsIDc4Mzc5LCAKKyAgICA0MzkzNCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDcxMDU1LCAxMjA2MjEsIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIAorICAgIDc4Mzc4LCAxMTk2MDAsIDUyMjMsIDEzMDQsIDAsIDgzNTI2LCA1MjI2LCAxMjYwMiwgOTQwNDQsIDU4ODAsIDkzMjksIAorICAgIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgNjkyMjksIDk2NzQsIDU2OTUsIAorICAgIDQxNzExLCA2NDYyNywgMTk5MDksIDcxMDc3LCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgNjgxMzgsIDk4MzQ0MywgCisgICAgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNjgwMjgsIDgzMDkzLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCAKKyAgICA4MzA5NCwgOTgzNDQ3LCA2ODgyNywgNTI5NiwgOTgzNDQ2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCA3NDg1OCwgCisgICAgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgNjUxMiwgMCwgNzg1NiwgODY5MCwgOTgzNjg2LCA3MDg3MCwgMTIxMjIsIAorICAgIDExOTYwMiwgNDM5NzYsIDE5NDkzNywgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgNjg4MDksIDUxMzgsIDk4MzYzNywgCisgICAgNzE5MjIsIDExODg2OSwgMCwgNDU0MCwgNDExODEsIDkxNzkyMCwgNjIwMCwgMCwgNTEzNCwgNjk5ODAsIDMyMiwgNDY0MywgCisgICAgNTEzMiwgMTIxMTg0LCA2Mzg5LCAxMjA5OTgsIDUxNDMsIDgzMjA1LCA4NzkwLCAxMjA5MTEsIDEyMDEyMSwgMTI4Njk1LCAKKyAgICA3MTE2OCwgODg2OSwgNjk5MTYsIDkzMDY5LCA0MjA2MCwgNzEzMjYsIDk2NDgsIDgzMTA5LCA3MTE3MCwgMTAyNzAsIAorICAgIDEwMjg2LCAxMDMxOCwgMTAzODIsIDQzNTI5LCA2NjQ3NywgMTk0ODAwLCAxMjg1MzQsIDc0MTcwLCAwLCAzMjM0LCA0MzgzNSwgCisgICAgOTE3ODE4LCA3MDExMSwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDY4MjMxLCA3NDQ4OSwgOTY5NSwgCisgICAgNzI0MzksIDUyMDEsIDc1MDYxLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDc2NjEsIDAsIAorICAgIDEyMDkwOSwgMTEwMjcsIDEyODU5NiwgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAxNzQ5LCA3ODg5MCwgCisgICAgNjcxMTUsIDk4MzY3MCwgMzIwLCAwLCA4NjQ3LCA4MzA1NCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAKKyAgICAxMjczNTYsIDExODg5NCwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCA1NDE4LCAKKyAgICAxMjczNTAsIDMzNTEsIDEyMDg5MiwgMTI3MzUxLCAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgCisgICAgMTI3MzQ0LCA5NTU0LCA2ODA1MSwgOTQwNDgsIDY2ODk2LCA2NjUzLCA4MzA0NCwgODMxMDIsIDY0NTEwLCA2MjEzLCAKKyAgICAxMjg4NSwgMCwgMTE5MDQ1LCA2NDcyMCwgOTE3ODczLCAxMjA3NTksIDczNzQxLCAxMjYwMywgNzEzMSwgMTExMDgsIDQ1NjYsIAorICAgIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIDQyNTc2LCAwLCA1MjAwLCA5Mjk0NiwgCisgICAgMTIxNDM1LCA5ODM4OTUsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDY2MjgyLCAzOTUsIDU0ODIsIDUxOTgsIDQzNDksIDEwMzkwLCAKKyAgICA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAxMjgzODMsIDQzMzA3LCA3MDI5NywgMTE4OTczLCAKKyAgICA3MDQ2NywgMTIxMzQsIDEyMTE2NywgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCA4MDkzLCAKKyAgICA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAxMjUwNzUsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIDEyNzMwOSwgCisgICAgNTczOCwgMTIwMDg5LCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDgzMzc4LCA2ODExMiwgNzg3MiwgODU4MSwgCisgICAgMCwgMTI2MCwgMzE0OSwgNTM1OSwgMTIwMTM0LCA3NDk1NSwgNzkxNCwgNTM1NywgNzExOTAsIDc0MzM5LCAyNjI0LCA1MzY0LCAKKyAgICA5ODM2MDgsIDExNDMxLCAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgNjcxMDcsIDc4MjkzLCA0MjI3MSwgNzgyODksIAorICAgIDQyOTE3LCA2NzExMSwgMTI5MTc5LCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODI5MSwgNzgzODQsIDExODMyLCAKKyAgICA3ODM4MiwgNzgzODEsIDc4MzgwLCA2OTg2MSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIAorICAgIDc0NTgxLCA3ODA4NywgMCwgNzEyMDUsIDQxODg5LCA5MjQ1MywgMTI5MTQ0LCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIAorICAgIDg2MjIsIDEyNTAyNSwgMCwgNjg3NzIsIDEyMDU4OCwgNTAxMiwgNzE0NTMsIDQxMzYyLCA2OTg2MiwgNjg1MDcsIDExOTIxLCAKKyAgICAwLCAxMTc2OSwgNjg3ODIsIDY4NjA5LCA0MTM2NCwgMTIwOTQ3LCA3NDIyOCwgNDEzNTIsIDQxMzYxLCA5MTc5MDMsIAorICAgIDQxMzY2LCAwLCAzMzU2LCAxMTYxMSwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCA4MTk5LCA3ODM4OSwgMTE5NjE4LCAKKyAgICA2NzcsIDExOTkxNiwgOTE3ODc2LCA3MTQ4MiwgMTI3MTY5LCA2ODc0NywgMCwgNjg3MzgsIDMzNDksIDc0MTI1LCA3MDIyLCAKKyAgICA4OTI3LCA0NzM5LCA5MjU5OSwgNTgwMiwgMTk0ODc0LCA4NjE1LCAwLCAxMjgwNTgsIDQ5MSwgNzQ0MDEsIDEwMTkwLCAKKyAgICA2ODc1NSwgNjU4MzcsIDY4ODAwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKKyAgICAxMDg1MiwgMCwgNDI2NDgsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIAorICAgIDEyODYxMCwgNjg3NTMsIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCA0MTg3OCwgCisgICAgNzQ4NDksIDc0OTQ3LCA3MjQyNCwgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCAKKyAgICA4OTA1LCA0MTM2LCA0ODcxLCA3ODI4NywgMTIwNjYzLCA5ODMzLCAwLCAxMTM3MzAsIDExMjgsIDY1OTIwLCA5MTc4NzksIAorICAgIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIAorICAgIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIDQxMzg1LCA5ODM5MzgsIDQxMzg5LCAKKyAgICAxMjc5NjMsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIAorICAgIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgNzA4MTEsIDEwNjI3LCA0MTEzMCwgCisgICAgNzEwNzksIDM5OTYsIDAsIDcxNDQyLCAxMjg5MTMsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIAorICAgIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgMTI3MjA2LCAxMjA4NSwgNjY5MDIsIDU3NCwgCisgICAgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2NTkzMiwgNDEzMjIsIDQyMjExLCA1NDQyLCA0MTkwLCAKKyAgICA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNjg4MTcsIDc3ODM4LCA3NzA4LCA3NDc1OSwgMjIyOCwgCisgICAgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMTIwMzc4LCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIAorICAgIDIwNjAsIDEyMTE5MywgNzExMSwgMTE3ODgsIDY1Mzc2LCA2ODEyOSwgMTA0MTUsIDc0MTAyLCA5ODM2MjUsIDIwNSwgCisgICAgODMwNDAsIDEwMzUxLCA2NzE1MSwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIAorICAgIDc0OTY2LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgNTUwNywgMTIwNDQsIAorICAgIDkyNjM2LCAwLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIDEwMzI5LCA1NDc2LCA4OTkxLCA2NjMyMiwgCisgICAgNjk3NzgsIDExMTMzLCA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIDEyOTA1MiwgMjY3NSwgNTU5NSwgNzg0MTEsIAorICAgIDQzNzYyLCA0MzY3LCAxMjc5MTIsIDkxNzc4MiwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgNzQxNTAsIDcyOTEsIDU1OTAsIAorICAgIDQzNzYxLCAxMzA2NywgMTE4OTA5LCA3NTA2OSwgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgCisgICAgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDY2OTA5LCAxMjg4NywgCisgICAgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAKKyAgICAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDczOTcyLCAxNDQyLCAxMjkwODAsIDU4OTQsIDcwMDY5LCAKKyAgICAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAxMjA1OTksIDMzMzQsIDEyODcwNCwgOTI3MDksIAorICAgIDc3ODgxLCA2NjAyMiwgMCwgNjk3NzAsIDE2NTEsIDEyMDM2NCwgODg2MSwgMCwgMCwgMTE0MiwgOTgzMTEyLCA4MjcxLCAwLCAKKyAgICA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDc4NDA2LCA0MDAyLCA0MzYyNiwgMTA0NDIsIDEwNjc2LCAzMzQ0LCAxMjg5MTAsIAorICAgIDE5NDc4NywgMTI5MjAsIDE5NDU2MCwgNzA0OTcsIDE5NDY4NywgNjY2NDIsIDEyNzcsIDY2ODc2LCA3ODcxLCA2NzEwNiwgCisgICAgNzE0ODcsIDc4ODUzLCAxMjkwNjgsIDc4ODU0LCAxMjAzNjAsIDk4MzQ5MiwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCAKKyAgICA0Mzg1NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDk4MzYyNywgNzg4NTYsIDc4NDQ4LCA3Nzg3OSwgNDk3MywgODc4NCwgCisgICAgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgNzEyMjUsIDQzMTE4LCAxMTk4NzUsIDQyMzY0LCAKKyAgICA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIAorICAgIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCA3MDM2NCwgNzEyMSwgNzQxNjYsIDEyNDk3MywgMTIwMzU1LCA5MjUzNywgMTk0ODQ2LCAKKyAgICAxMTk4NzcsIDE5NTAzNCwgNzAzNTcsIDExOTkyMiwgMCwgNjcxMTksIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgCisgICAgMTE4OTk5LCA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAwLCA5ODMwOTEsIDk4Mzk2NSwgCisgICAgOTgzNzU4LCAxMTYwMywgOTgzOTU0LCA3NTA3NCwgNjU4OSwgMTI4NTY0LCA4Mjk3NSwgMTIwOTkzLCA2NzgxMiwgOTgzNzAwLCAKKyAgICAwLCAxMjkwODcsIDQyNTcyLCAxMjgyNjQsIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDExODg4MiwgMTE2NTQsIAorICAgIDEyMTI4NywgNzU1MCwgMTA2ODYsIDU5MDMsIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIAorICAgIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxOTQ2NzcsIDcxNDYxLCA2NzA5MCwgCisgICAgNjkyNSwgMCwgMCwgOTI4OTIsIDcxODU2LCAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIDkxNzkzMCwgNzg1MiwgCisgICAgMTExMzgsIDAsIDY3NTQsIDYzMTIsIDc3OTU2LCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAxMjI5NiwgCisgICAgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDEyOTE0NiwgOTgzNjA1LCAKKyAgICA5NTMyLCA2NjM1NSwgMTE5MjY0LCA2ODA3MywgMTEzNjk1LCA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTk1MDMxLCAwLCAKKyAgICAxOTQ4NDcsIDE5NTA1NywgMTE0NDUsIDY4Mjk0LCAyMTEyLCAxMjg3NDEsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgCisgICAgOTUwNywgMTAyMTAsIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgCisgICAgMCwgMTIwMjc2LCAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCAKKyAgICA3ODk0LCA0MzkxLCA2ODEzOSwgMTIxMDY0LCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgCisgICAgOTI0MzMsIDM1NTgsIDEyOTE5MCwgMzkxMywgNzA0MjksIDEyMTM3NiwgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIAorICAgIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgOTgzMTIyLCA5MTc1ODcsIDgyMjEsIDc4MzA3LCA0MTg2NCwgMCwgMCwgCisgICAgNjcwNzUsIDcxMjE5LCAxNjcsIDk4MzkwNiwgNzgzMDEsIDk4MzY1MywgNzQyMTEsIDQxODk3LCA2NzA3MiwgMCwgOTE3NTgzLCAKKyAgICAxMjcxNDAsIDY3MDc2LCAyNDkzLCAwLCAxMTM3NzgsIDEyMTI0NSwgNzgxMDcsIDY0MzU0LCAwLCA4Nzc3LCAxMjc5NDAsIAorICAgIDQwNiwgODg4NCwgMjM4NSwgNzgyMTAsIDkyNDUwLCA5MTc1OTAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAxMjExNCwgMCwgCisgICAgMTI4NTk3LCA2NDkzNiwgMTk0Njk1LCAxMTkyNjcsIDEyMDYyOSwgMTA1NjEsIDEyODk0MCwgODM2NSwgMTIwNTM5LCAKKyAgICA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA4MzE3NiwgNzgzNCwgNzQxNTksIDAsIAorICAgIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU3NywgMTYzOSwgMTIwODQyLCAwLCA3MDgwMywgNjMyNywgNjcyNCwgCisgICAgMTI0OTUzLCA2NjM1NCwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgOTYwMCwgCisgICAgMTEwMjIsIDAsIDAsIDAsIDk4MzU5OSwgMCwgNzM5NTQsIDc1NDgsIDY0Nzk0LCA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAKKyAgICAxMjg3ODEsIDEyMzQzLCA2NTcsIDY3MTEwLCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIAorICAgIDkyODkxLCAxOTQ5NDUsIDgzMDU2LCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgOTMwNDQsIAorICAgIDEyOTQxMSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCA4MzE4MiwgNDgxOCwgCisgICAgMTI5MDU4LCA0MTQwMywgMTE5OTc3LCA3MjQyMiwgMTI4NDU4LCA0MTQwNiwgNDMyNzMsIDc0MTYwLCA2OTgwNSwgNzM5MzksIAorICAgIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAKKyAgICAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIDcwMDcwLCAzMzc1LCAxMjg0NDgsIDU5MDAsIAorICAgIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgOTgzNDgxLCAwLCA2NzA3OCwgMTI4NDUxLCAyMjgyLCAxMjE0MjIsIDEyNzgxMCwgCisgICAgMTE0MDEsIDY3MDc5LCAwLCA2ODQ1OSwgMTI1MDI4LCA5ODMxNDEsIDAsIDcwMTUwLCA2NTQzOCwgMCwgNzI4MCwgMTI3ODg3LCAKKyAgICA2ODA1NSwgNzAxNDYsIDQ4NjgsIDgyOTcsIDExOTk2NiwgNzAxNDgsIDEyNTAwOCwgMTI4NzQ0LCA0MzE2MSwgNzAxNDQsIAorICAgIDkyMzYwLCAwLCA1MTgyLCAwLCAxMjA1NDIsIDAsIDAsIDQyMjYsIDcwMTg2LCAxMjEzNSwgNTczMiwgNDQ2NCwgMTk1MDgzLCAKKyAgICA3MTMzMCwgOTc3LCA0NDU4LCA0MzgyNywgOTI5NzEsIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxMjEyMjgsIDEzOTUsIAorICAgIDY0Mjc5LCAwLCA5MjI0MCwgMTIxMTc5LCA3ODYsIDEyNjk5NSwgNDMxNzQsIDY0MzQwLCA4MzA3NywgMTk0NzY3LCA3Mzk3MSwgCisgICAgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCA5ODM5MTcsIDY4NDQ0LCAwLCAKKyAgICA5MjQzNywgMTI0OTI4LCA5MjU0OSwgMTAyMDQsIDkyNjU2LCA4MzA3OCwgMTE5MjcxLCAxMjg0MzEsIDEzOTksIDEyMTQ2MywgCisgICAgNjUyMTcsIDEyMTQ2NSwgODg1MiwgMTIwODA4LCAyNDEsIDEyMTQ2OSwgNDkwNywgMTI4NDI3LCA5ODM2MzksIDc5MzIsIAorICAgIDk3MjcsIDEyODQ2MywgNzQyNTUsIDg3NDgsIDAsIDEyODQyOCwgOTgzNjMxLCAwLCA0Mjc4MCwgNTUyNjMsIDExMzY3NywgCisgICAgOTgzNTYwLCA0MjE3LCA5MzAzNCwgODY1MCwgMTI3OTkxLCAxMjA2NzMsIDEyODIxNSwgNjk5MDAsIDExODg3MiwgNDMwOTksIAorICAgIDM5NjUsIDExOTExOSwgNjcxOSwgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgCisgICAgNjYyODksIDEyMDkwMiwgNzM4MTUsIDQ0MjAsIDk4MzEyMCwgNjQxMCwgNzc2MCwgMCwgNzA0NjgsIDEyODc1MiwgMTIwNjg0LCAKKyAgICAxMjEyNDYsIDcyOTQsIDEyODIxOCwgNDM4NjksIDEyMDg1OSwgOTA2NiwgMTIxMzIxLCAxMTk5MywgNDMxODgsIDI2MjYsIAorICAgIDc3NjIsIDk4Mzg2NiwgMTE4ODMxLCA5Mjg5OSwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgNzAyOTAsIDc4NTE2LCAKKyAgICA2OTE5LCA4NjE5LCAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyMDUzNywgMTU0MiwgOTIzMDMsIAorICAgIDEyODgxOSwgMCwgMTI3MzI3LCAxMjExOTksIDc0MzExLCA3ODQ5NywgMCwgMTAxODEsIDEyNDkzNywgNDM2MjQsIDEyOTA2MCwgCisgICAgNzc3OSwgOTE3NTUxLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMTI4Mzc0LCA5MjI2OCwgMjIyNCwgMCwgNjU1NzcsIDg5OTMsIAorICAgIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgNzAxMDYsIAorICAgIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCA3MDM4NiwgMTI3OTAzLCA5ODMzMzksIDk4MzMzOCwgMjczNSwgCisgICAgNDI4MzEsIDc3OTM1LCA3MDQzOSwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgNzA0MzMsIDczOTQ2LCAwLCAxOTQ3MDMsIDAsIAorICAgIDY4MTQwLCA5ODM5MjgsIDk1NzYsIDcwMjg4LCAzMzQ3LCA0MTYwLCA1MTU0LCA1NTI4OCwgMzc5NCwgNjY1NjQsIDg1MzAsIAorICAgIDEyNzA2MywgNzcwOSwgNDExMTIsIDExOTg2OCwgNjY1NjAsIDgzODEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgMTI4OTIxLCAKKyAgICA2NzU4LCA2NjAzMSwgMTYxNSwgNTg1NSwgODA5LCAxMjcxMTcsIDkyMjgzLCAxMjgzMTYsIDEyODAwNCwgNTc5OSwgCisgICAgMTI4OTI5LCA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgCisgICAgNjUyNTcsIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgOTE3OTE4LCAxMjA4NjAsIAorICAgIDEyNzA2MCwgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NjMsIDc4ODE3LCAxMjgwMjEsIAorICAgIDEyMDYwOSwgMCwgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgCisgICAgMTIxNTAzLCAyMjk4LCAwLCAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCAKKyAgICA3ODg2NiwgOTgyNCwgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIAorICAgIDY4MjMyLCA5ODMxMTEsIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgCisgICAgNjgxNjEsIDY0NTUwLCA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIAorICAgIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyODE3OCwgMTIwOTE5LCAxMTQ4NSwgCisgICAgNjEwMywgOTI0NjgsIDk4MzMwNywgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTI3MTU3LCAKKyAgICAxMjExMjgsIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIAorICAgIDcwMzY5LCA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAKKyAgICAzMzc2LCA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTk0NjA0LCAKKyAgICA1OTU3LCAxMTA1OTMsIDg5MjYsIDk4MzMwMSwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIAorICAgIDUzODYsIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCA5NDA1NSwgOTgxMiwgMCwgCisgICAgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCA5MjM3MCwgCisgICAgNDM0NjYsIDAsIDAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIDczODIzLCAKKyAgICA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCisgICAgOTgzMjg3LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAorICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDk4Mzg2MCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKKyAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjg4NzAsIDc0ODk2LCAwLCAyOTA4LCAKKyAgICAwLCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDAsIDgyOTY4LCAKKyAgICA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMTI1MDMxLCA0MTEsIDk4MzI3NSwgOTE5OSwgOTgzMjczLCA0MDU2LCAxMTg5OTIsIAorICAgIDQxODkwLCAxMjg1OTIsIDI3MzAsIDQxNjA0LCAxMjgzNTUsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIDY0NDM3LCAKKyAgICAxMjc5MzUsIDExODgxNiwgNzE0NTgsIDk2ODQsIDIxNiwgNzEzNjcsIDE0MDEsIDEyODA1MywgNDQwMTIsIDkyNjI4LCAKKyAgICA3MTQ1NiwgOTI1ODUsIDkxNTgsIDY2ODc4LCAxMTEyNiwgNTc2OCwgMCwgOTgzNzU5LCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgCisgICAgNjU4OTUsIDEyNTA3NiwgMTIxMzgwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgMTI3NTQzLCAKKyAgICA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgCisgICAgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMTI5MTA5LCAxMjkwNDAsIDAsIDM0MzAsIDAsIDQyOTA1LCAKKyAgICA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMTI2NTA2LCAKKyAgICA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIDEyODI1OSwgNjc0LCA2Mzk5MSwgCisgICAgOTgzMjUxLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgODM2NCwgNTEyMywgMTE5NjI4LCAKKyAgICA1MjgxLCA1NDY5LCA1MTIxLCA3Nzk4OSwgMTE4OTkzLCAwLCA1MTMwLCA4MzE4MCwgMTI4MzU3LCA3Nzk5MCwgMCwgCisgICAgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDExOTI2OCwgMCwgMTI4NDc1LCA5MjE4NywgMzQ2OCwgCisgICAgNzAzMywgOTIzMCwgNTkzOSwgMTI4Mzk3LCAwLCA1ODAzLCA3MTg2NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgCisgICAgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTE3OTM5LCAwLCAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgCisgICAgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAxMjQ5OTQsIDEzMDU3LCAwLCAxMjY5NzYsIAorICAgIDEyOTA4MSwgMTAwMDksIDAsIDQxNzAzLCAxMjA5NTAsIDEyMTY1LCAxMjkxOTEsIDAsIDk4ODUsIDAsIDgwNzcsIDkyNjIwLCAKKyAgICAxMjc5MDgsIDEyMTA0NCwgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCAKKyAgICA0OTg3LCA2NDUxOSwgMTIxMjY1LCAxMjUwNzgsIDAsIDE5NDgxMywgMTI4NTc0LCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgCisgICAgMTI2NDkwLCAxOTk0NCwgNzQzNTYsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIAorICAgIDEyODg5OSwgMCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKKyAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCAKKyAgICA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDEyMDg0MSwgMCwgMTI1MDYyLCA5ODM0NDEsIDEyMDg0MywgCisgICAgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIAorICAgIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgCisgICAgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCAKKyAgICA2NjE4OSwgNzM3ODgsIDc3ODgsIDQ4NDcsIDk4MzQyOCwgMTI3NzU5LCAwLCAxMjg0MzMsIDIyMjEsIDE1ODEsIDY1MzUsIAorICAgIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIDczOTQ0LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCAKKyAgICA5ODM0NDAsIDY4NjI1LCA5ODM0MzgsIDcyNjksIDEyODQ5OSwgNTk2NCwgMTI5MDgsIDEyNDk5NywgMCwgNzQ3NjQsIAorICAgIDQzNTEyLCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDMxLCA0NDMsIDk4MzQyOSwgNDk0NCwgNTQ2NywgMTE5NjAzLCAKKyAgICA3MDg2NSwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgOTE3NTU2LCAxOTQ5MzEsIDExOTk2MiwgCisgICAgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAxMjg2NzYsIDEyMDkxLCAKKyAgICA2NzExOCwgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCA2NTA1OSwgNDM4NjAsIAorICAgIDY3MzksIDY2ODQ0LCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCA2NzcwMiwgNDY3NywgMTI2ODgsIAorICAgIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgNzgxNjYsIDQ2NzQsIAorICAgIDQ1NDgsIDQ0MDA1LCA3MTA4NywgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgMTg1NSwgMTI3NDc1LCAKKyAgICA2ODY2OSwgMTE4OTkwLCA5MjQ0NSwgMTI3NTU0LCAxMjY2MzAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAxMTc5NywgCisgICAgOTgzNDE5LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDY4NDAsIDk4MzQxNiwgNjg2MzgsIDczOTkzLCAxMDUyNSwgNDY0OSwgCisgICAgNjUyMDksIDEyMTUxMiwgMTIxNTExLCA0NjQ4LCA0MzA4MCwgNzUwNzAsIDEyMTUwNywgOTgzNDA2LCA2MjQ2LCA2NDk1MCwgCisgICAgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzAyODcsIDc0NjI0LCA0MzE4NywgODY2OSwgCisgICAgMTIwNjU5LCA2ODIxLCA2NTA5MywgOTgzNTY1LCA3ODg4MSwgMjcxNiwgOTgzNDEyLCA5ODMwNjAsIDcwNTAzLCAxOTQ5NTIsIAorICAgIDY4MzY5LCAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCA5ODM0MjMsIDAsIAorICAgIDQ2NjIsIDc4MDMzLCA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgCisgICAgMTAxMzAsIDY4NDUwLCA3ODExLCA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCAKKyAgICA0NjYxLCA0MjQzNCwgOTgzNDEzLCAxMjg3MzcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCAKKyAgICA0ODY3LCAxMTEwMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIAorICAgIDQzODg4LCA3MDMwMywgOTgzMzk1LCA2OTkwNSwgNjcxODgsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNjg4MzEsIAorICAgIDEyODgwLCA2NTMwNywgNDYxNywgNjg3NTcsIDk4MzM4OCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIAorICAgIDk4MzM4MiwgNTk1OCwgMCwgOTgzNDM1LCA0MjE1LCA5Nzg5LCAxMTk2MTksIDQzMjEsIDQ2MjEsIDE5NTAyOCwgNDEzMTMsIAorICAgIDUyMiwgNTM2OCwgMTExMzksIDY1ODAzLCAxMjg1NDYsIDUzNjYsIDEyMjAxLCA1MzcyLCAxMjEwNjAsIDExOTk0OSwgCisgICAgMTk0OTc1LCA3NzIwLCA3MzkwLCAyNjk2LCA5ODM0MDIsIDAsIDQ2MzgsIDk4MzQwNywgMTc5MCwgNzgyNDIsIDU5NjUsIAorICAgIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAxODM1LCA1MzM1LCAxMjE1MDUsIDEyODA4OSwgNDYzMywgMCwgCisgICAgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCA1MzMzLCAwLCAxMjUxMzIsIDQyMDk0LCA1MzMxLCA0NjM0LCAKKyAgICAxMTkyOCwgOTgzNTk0LCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCA0MzUwMCwgMTI2OCwgNjUwOTcsIAorICAgIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIAorICAgIDk4MzM3NiwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKKyAgICA3NDM4NCwgNjY2MTEsIDY4Mzc3LCA2MjQ4LCA5ODMzNjQsIDY3ODE1LCA3ODg3OCwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKKyAgICA0NzU3LCAwLCAxMjY1NzYsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAxMjg5MjYsIAorICAgIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCA4MzEyNCwgNjcxMDEsIDEyNjQ5NSwgODk1NCwgNzQ3NjAsIDY1MTg5LCAKKyAgICAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAxMjg5NjYsIDAsIAorICAgIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgCisgICAgMCwgNTUyNSwgNTMzMCwgNTMxOSwgNjgyOTIsIDEyNzMxMSwgNjUwNjYsIDQ0MDAzLCA2ODQzNywgOTgzNDgyLCA0Mzg0MywgCisgICAgMTIwNDk4LCAxMjc4NTEsIDQzOTE4LCA3NDg1MSwgNzQwMjIsIDk4MzQyNCwgNjQ2MDksIDY4NjQzLCA2NzQxMCwgMTI4NTkzLCAKKyAgICA1NzIxLCA3NDg5MiwgNTUxOSwgODYzMiwgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDc4Nzc4LCAxNjkyLCAKKyAgICA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMyNDIsIDUyODcsIDUzMDksIAorICAgIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDEyMDQ3OSwgCisgICAgOTgzMzQ4LCA5MjA4LCA0NjA4LCA0Mzk2NiwgNDExMjQsIDUxOTAsIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDAsIAorICAgIDY3OTk4LCA2NzYyMCwgOTMwNDcsIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCA2NzcyMiwgCisgICAgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIAorICAgIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDQzOTAwLCA0MTI1NiwgNzQxMzIsIDY3NzQwLCAKKyAgICAwLCA3MTE3OCwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIAorICAgIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY3MDk3LCAxMjg4NDQsIDU3MzksIDQxMDI0LCAKKyAgICA0ODY2LCA5ODM4ODAsIDczOTA0LCAxMjE0MjAsIDQ4NjksIDEyMDU2MywgMTI5MTcyLCA0MjIzLCAxMjgyMDEsIDY2NTAsIAorICAgIDEyNjUwOSwgMCwgMTIwMjEyLCAxMTk4NzIsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgCisgICAgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgODMxOTMsIDYyNDUsIDY4NjUyLCAKKyAgICAyNzMyLCA0MjczNCwgNzQ1LCA2ODA0NSwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMTI5MTM2LCA2ODYzMSwgNDI3NzUsIAorICAgIDE5NDY2MSwgMTI4NDQ1LCAxMjA2NzksIDMwOTcsIDEyMDkwOCwgNTk2NiwgMTIxMTk3LCA0Nzc4LCAxMjY0NjksIDEwODYzLCAKKyAgICAxMjc1MDYsIDQ3ODEsIDkyOTg2LCA2NDQwNywgMTI4NTAzLCAxMjgzMjMsIDg1NzcsIDcxMjIxLCA2ODE5NiwgNDMyODUsIAorICAgIDEwMjE2LCA0NzgyLCA5ODM0ODUsIDk4MzQxMSwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCAKKyAgICA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDEyOTEyOCwgMTMxNzYsIDY4MzYzLCAxMDQyNiwgNjcyNDcsIDcxMDkxLCAKKyAgICAxMDM2MiwgMTk0NzA2LCAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgNDMyNzgsIDQyNjM1LCAwLCAxMjcyMDcsIAorICAgIDU5NjMsIDkxNzkyNiwgOTgzNDgzLCAwLCA0ODUwLCA3MzkwMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIAorICAgIDEyNzkxOCwgNTE2NCwgNzM4MDcsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCA5MjQ3MSwgCisgICAgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMTIxMjczLCA0MTI2OCwgNDg0OCwgMjUzMCwgNzQ5NDEsIDIwNjgsIDE5NjQsIDAsIAorICAgIDczNzYyLCAxMDQ1OCwgOTgzNDE3LCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMTIxMTAyLCA2ODIxMSwgODMyMiwgCisgICAgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjYsIDMwMywgNzQ2MjUsIAorICAgIDY4MjI5LCA5ODM0MjcsIDI0MzcsIDc4NjU5LCA0MjIxLCA0ODQ0LCA5MjIxNiwgMCwgMCwgMCwgNzAwNDIsIDc0MDk1LCAKKyAgICA0MzI5MiwgMCwgMjQ0MSwgMTA3MzksIDY1MDkwLCAxOTQ2MjIsIDcwNDM2LCAxMTg5MjksIDI0NTEsIDI3MTQsIDExOTMyNiwgCisgICAgMCwgNDMzNzksIDQ5MzcsIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgMTE3MjIsIDkyNDgsIDkyNTU1LCAKKyAgICA0Mjg3OSwgMTE3MjUsIDkxNzk2OSwgMCwgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIAorICAgIDE0MDgsIDUyNjEsIDQ2MDcsIDE5NDcxNSwgMTgxLCA5ODM0MzIsIDQ5NDIsIDk1MzksIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCAKKyAgICA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgOTgzNjAxLCA2ODQ0LCA0OTY0LCA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCAKKyAgICA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIDQxMjMxLCAxODIyLCA0MjUyNiwgCisgICAgMTI3OTg5LCAxMjc1OCwgMzg2NSwgMTk0NjYwLCAxMjExMjksIDEwNTAwLCAwLCAxMTkwMjQsIDc4MDI4LCA5MjQwOCwgCisgICAgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMTI4MTE5LCAzMTI1LCA5NTY3LCAwLCAKKyAgICA0ODc4LCA1NDU5LCA0NjA0LCAxMTk2NTAsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAKKyAgICAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgNjg1MjEsIDc4NzE0LCA2NDE5MSwgNjQxOTAsIDg4OTgsIDY0MTg4LCAKKyAgICAxMjkxNTMsIDQxMDMwLCA3NDIyNiwgNzg3MTMsIDc0NjAwLCA3NDk5NCwgOTE3ODM0LCAwLCA3ODgwNSwgNDEwMzEsIAorICAgIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzMjY5LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgNzA3OSwgNTg1NiwgCisgICAgNjc4MzgsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMTE5MDEwLCAxMDU2NCwgNzc2MywgCisgICAgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCAKKyAgICA3Nzk3OSwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCAKICAgICA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAKLSAgICAxMzI4MiwgNjQxNzUsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDAsIDAsIDAsIDAsIDI1NDMsIAotICAgIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgCi0gICAgNjQ5NDksIDEwOTcyLCAxMDI1MSwgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCA1MzQ4LCAxMDk0MywgCi0gICAgMTIwMzc4LCAwLCAxMTM1MiwgNTUwLCA5OTEwLCAxMjY3MDUsIDAsIDY2NTc5LCAxMTU1MSwgMCwgMTk1MDgwLCA5NTA0LCAKLSAgICA3MTg3LCAwLCAxMDM3MywgMCwgMTIwNzkxLCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIAotICAgIDY1MjIyLCA2OTk4LCA3ODE4MCwgMCwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAKLSAgICAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIAotICAgIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgCi0gICAgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDAsIDQyNjA5LCAwLCA3NDE3NSwgMCwgMTI3MDE2LCAwLCA5ODM4NzMsIAotICAgIDQyMTMwLCAwLCA1MTUxLCA5MTc4MjksIDkxNzgyMywgMCwgOTM5ODAsIDAsIDc2MjAsIDM4MDAsIDY1MTIyLCAwLCAwLCAKLSAgICA4MzU1LCA3ODU0LCAwLCA5NTQsIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAKLSAgICAxMDcxMSwgNDU5MywgMTI3NzQ1LCAxMjA1ODQsIDk4MzQwOCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMCwgMCwgMCwgCi0gICAgNjQ3NTksIDYzODEsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAotICAgIDc4MjA0LCA2NDEzMSwgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgMCwgNzc4NzYsIDYzNiwgMTE2OTgsIAotICAgIDAsIDk4MzQ1MSwgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIDkyNDMxLCAKLSAgICAxMTk5NjAsIDE0NzcsIDQzMjg5LCAwLCA3NDM1OCwgODYxOCwgOTgzNDAyLCA5OTA4LCA5ODM5ODEsIDAsIDAsIDM5MzcsIAotICAgIDEyMzEyLCAwLCA5ODM0MDMsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIDkzOTU0LCA3NDUzMiwgMTI2NTk0LCA2MjQ0LCAKLSAgICA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgOTgzNDc2LCAwLCAxMTk1MCwgNTM5MiwgNDIyNDgsIDY1MTI5LCA2ODY1NiwgCi0gICAgNTM5NywgMCwgMTIwNDYsIDEyNTk5LCAwLCAxMjgyNjEsIDUzOTUsIDAsIDUzOTMsIDM1NCwgNjg2MTUsIDExOTk0OCwgCi0gICAgNzg1MDMsIDAsIDAsIDQyMDM5LCAwLCAwLCA2NDE0MiwgNjI2LCAwLCA1ODk1LCAwLCAwLCA1NzgwLCAwLCAwLCAxMjg4NzQsIAotICAgIDAsIDAsIDQzMjk3LCA5ODMwNzksIDQzMTEsIDQ2NDQsIDg4MTgsIDAsIDEyODE4NiwgMCwgNzE0NSwgMzkxOCwgNjY0NTIsIAotICAgIDM3OTcsIDE2NDQsIDkyMzQ2LCA5NjU4LCA0MTQwLCAxMTM4NSwgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCAKLSAgICA2ODEzMSwgNDE0NiwgMTE5OTU3LCA1MzYwLCAyNDY2LCAwLCA2NzY2OSwgMTE5OTQyLCA2MjQ5LCA0MjExNywgOTIyODcsIAotICAgIDEyODIyNCwgMCwgMCwgNzQwNDYsIDQzNzQ1LCA0OTExLCA5ODgsIDkxNzgwNywgMCwgOTgzNDY4LCA0MzA2MSwgNzA1NCwgCi0gICAgNjQxNDcsIDAsIDY0OTIwLCA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgMTIwMDA2LCAxMTk4MSwgMTIyMDIsIDAsIAotICAgIDExMDMyLCA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjg2NjIsIDY1ODQzLCAxNzAsIDAsIDAsIDQxNjksIDAsIDQxODU5LCAKLSAgICA2MDU4LCAxMjA0MDEsIDEzMjAzLCAxMjA2NTcsIDAsIDAsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIDQyMTA2LCAKLSAgICA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDkxNzg2NSwgNDczNywgMTE3NzksIDQ3NDIsIDEyMDU2NCwgOTIzOTEsIAotICAgIDczNzM2LCA5ODMzNjQsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgMCwgOTI1MjUsIDAsIDUzMDAsIDQ3NDEsIAotICAgIDQyMTA4LCA5ODMzNTQsIDY0MTU5LCA0NzM2LCA2NDE0OCwgMCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAwLCA2NjYyMCwgCi0gICAgOTE3OTE2LCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNjYsIDc4NzYsIDY4MTMyLCA5MTc4NzIsIAotICAgIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAwLCA0ODQxLCAwLCAKLSAgICA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgMCwgMTE5NTkxLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCAwLCAxMDExNCwgCi0gICAgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIAotICAgIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIDY4NjU1LCAwLCA5ODMzODgsIDAsIDAsIDY4NjI4LCA5ODMzNDcsIDk4NTAsIDExODkzNywgCi0gICAgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAKLSAgICAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAxMjY2MjYsIDY0MTAxLCAwLCAwLCAKLSAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAwLCAxODg4LCAxOTYwLCA3ODYxLCA5MTc4NTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIAotICAgIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDAsIDYyMTEsIDAsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgCi0gICAgMTA3NTgsIDY1Nzc0LCAwLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDAsIDAsIDExOTA1MywgMCwgMTI3NjUsIAotICAgIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAKLSAgICAzOTI0LCAwLCAxMTM2NiwgOTE3ODQzLCAwLCAwLCA5MTc4NDYsIDQxMTE2LCA5MTc4NDQsIDkxNzU2NCwgMCwgMTEzNjMsIAotICAgIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDEyNjY0MSwgNjYyMDIsIDg5NTcsIDQxMzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyNzQwLCAxMjg3MDIsIDQ3MjIsIDY4MTYsIDEyNzc5MywgMTI3NTksIDQ3MjUsIDk4MzM4MywgNDcyNiwgMCwgCi0gICAgMTk0ODkyLCA5ODM2MjIsIDEyODMyMSwgOTE3OTA1LCAwLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDAsIDgwNTIsIDQ3NiwgMCwgCi0gICAgMCwgMTI4Mjk0LCA2NDIxMiwgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgCi0gICAgMCwgMCwgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCAwLCA2NDA2NywgMTI3MzI4LCA4NTUyLCA2NDExMywgCi0gICAgNDE4NDUsIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgMTE5MDg1LCAwLCAKLSAgICAwLCA3OTM1LCAyNDIwLCAwLCAxMTE0LCA5MjU5OSwgNjc1ODUsIDcwMTA0LCAxMjAwNTMsIDkyMzUwLCAxMjAwNTEsIDM5MzgsIAotICAgIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDEyMDA2MSwgNjU0MTUsIDEyMDA1OSwgNjI5MiwgNjUzMDMsIDc5NTUsIAotICAgIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgOTE3ODkwLCA5MTc4OTEsIDY1MTUyLCA3MTksIDEyMDA0NCwgCi0gICAgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgNjY0NTAsIAotICAgIDQ3MTIsIDkxNzkwMiwgOTE3ODk5LCA5MTc5MDAsIDY1NDE2LCA4MTU1LCA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCAwLCAKLSAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDAsIDAsIDAsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAxMjY2MDYsIAotICAgIDY2NDM3LCA2NjAyNSwgNzg2OTksIDAsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDkxNzg3NCwgNzg2OTQsIDkxNzg4MCwgCi0gICAgOTE3ODc3LCA5MTc4NzgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDkxNzg4MiwgNTM2NSwgNDU0NSwgODkwMSwgOTI0MjEsIAotICAgIDExOTU1NSwgNDgxMywgMTI4MjYyLCAwLCA1OTI1LCA0ODA4LCA2NDMzMCwgMCwgNjU0NzUsIDExODk0MCwgMTk1MDI4LCAKLSAgICA0ODE0LCAwLCA0ODEwLCAwLCAwLCA2NDkyOCwgMTA1NDMsIDAsIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAwLCAxOTUwMjcsIAotICAgIDY0NTYsIDczODIwLCAwLCA2NjkxLCA0MjE5MywgOTIyMjUsIDEyODE3MSwgMCwgNzQ0OTUsIDAsIDAsIDAsIDExODgyMCwgCi0gICAgOTc1MSwgNjU0MDcsIDEyODA4NSwgMTE3NzAsIDM5MTksIDAsIDAsIDY1MDYxLCAwLCAwLCAwLCAxMjIzNSwgMCwgMCwgCi0gICAgMTI3MjMzLCA2NDA5MiwgOTgzNDcwLCA2NDA4MCwgMCwgNjQwOTAsIDAsIDY5OTEzLCAxMDE2MiwgMTAzMTAsIDAsIDg0NTQsIAotICAgIDEyNzg4OCwgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCAKLSAgICA3ODExNiwgMCwgOTgzMTM5LCAwLCA5ODMwNzQsIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgOTgzODc0LCAKLSAgICAwLCA5ODM0MzQsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMCwgNDUyOSwgCi0gICAgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCA2OTY5MiwgOTgzNDMyLCA2OTY5OCwgMTMxNTAsIDY0NDkyLCAwLCAwLCAKLSAgICAyMjkxLCAxMjkwMiwgMCwgNDI4OTEsIDY2MzI3LCA3NDI5OCwgOTE3ODU3LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAKLSAgICAwLCA0MTkzLCA5MjI1MCwgNDI0MSwgOTgzMDU3LCA3OTk4LCAwLCAwLCAwLCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgMCwgCi0gICAgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDAsIDUzNzMsIDAsIDk4Mzg4NiwgMzc2MiwgMTAwMTUsIDEyMDY3MiwgCi0gICAgMTE5MjMyLCAwLCA0MTU5MCwgMCwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDAsIDQyMDM3LCAwLCAzOTA2LCAxMjM0OSwgCi0gICAgMCwgODMyNiwgMCwgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIDAsIDQzNjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyODAsIDc0NTU4LCAxMjczMzIsIDY4MTM4LCAxMzA3MiwgMTg5NCwgMCwgMCwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAKLSAgICAxMTc3MywgMCwgMCwgMCwgMCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDk4Mzc1MiwgMTE5MjM3LCAwLCAxMjg4MDUsIAotICAgIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgMCwgNTM2NywgODc1NiwgMTI3MTQzLCAwLCAKLSAgICA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgOTgzMzU2LCA2OTY4NSwgOTgzNzU2LCAwLCAwLCA0NDAyMCwgCi0gICAgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDAsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIAotICAgIDM5NDMsIDAsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAwLCAwLCA1MzUyLCAwLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgCi0gICAgNDEyMDQsIDEyNzMyMiwgNDEyMDksIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDAsIDAsIDU0MjAsIDM4OTcsIDEwMTM0LCAwLCAKLSAgICA3NDQxNywgNDAxOCwgNzE1MCwgNjgxMjcsIDAsIDAsIDAsIDAsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAotICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAwLCA3ODc1MSwgNzE0NiwgMCwgNjUxNTAsIAotICAgIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCA5ODM0MzUsIDY5NjQxLCAxMDc1MywgCi0gICAgMTA4MzAsIDAsIDYxNSwgNjQ0OTAsIDc1NzQsIDkyNjE3LCA3NzkyMiwgMCwgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAKLSAgICAwLCAwLCA2Nzk5NiwgMjAyMCwgMCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgMCwgNzQzMjksIAotICAgIDAsIDY0NjIyLCA5MDcwLCAwLCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMCwgNzAwMCwgMzkwNCwgCi0gICAgMCwgMTI4MTk4LCAwLCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCi0gICAgMCwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMCwgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCAKLSAgICA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAwLCA2NDQwOSwgMzU5NiwgMCwgMCwgOTc2MywgCi0gICAgMTIwMjgwLCA5MjE5MiwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMCwgMCwgMTA4MjAsIAotICAgIDQzOTg3LCAwLCAwLCAxNzY5LCA0MTcxNSwgMjQ2MywgNzg0ODksIDAsIDEyNzcwLCAxMjY1MDAsIDE1MzgsIDAsIDQzMTI0LCAKLSAgICAwLCAxOTUwNTgsIDc3OTUsIDEyMDMwMCwgMCwgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAwLCA5NDk4LCAxMjcwMzIsIAorICAgIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgCisgICAgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIAorICAgIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCAKKyAgICA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIAorICAgIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCA5ODM0MTgsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAKKyAgICAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCAKKyAgICA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCAKKyAgICA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgCisgICAgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMTI1MDIzLCAKKyAgICA0MjYwOSwgMTE5ODU1LCA3NDE3NSwgNjY5MTIsIDEyNzAxNiwgMCwgMTIxMzAwLCA0MjEzMCwgMTIxMDQ2LCA1MTUxLCAKKyAgICAxMjEzNDYsIDgzNDg4LCAwLCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKKyAgICA3ODU0LCA4MzQ4MywgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIAorICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDk4MzQxMCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgOTgzNDE0LCAwLCA3ODY0MiwgCisgICAgNjQ3NTksIDEzMjUsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAorICAgIDc4MjA0LCA0MzkxMywgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgNzQ5OTYsIDc3ODc2LCA2MzYsIAorICAgIDExNjk4LCA4MzQ3NiwgODI5NjEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCAKKyAgICA3MDIwMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDQsIDk5MDgsIDc0OTcyLCAwLCAKKyAgICAwLCAzOTM3LCAxMjMxMiwgMCwgOTgzNDA1LCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIAorICAgIDEyNjU5NCwgNjI0NCwgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDEyODk2OSwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCAKKyAgICA2NTEyOSwgNjg2NTYsIDUzOTcsIDEyODMxMCwgMTIwNDYsIDEyNTk5LCA2NzQwNywgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAKKyAgICAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMCwgNDIwMzksIDExMzgxNywgMCwgNjQxNDIsIDYyNiwgMCwgCisgICAgNTg5NSwgMCwgNDM5MTAsIDU3ODAsIDAsIDEwMjIwLCAxMjEzMzcsIDQzOTA3LCA3MTEyMSwgNDMyOTcsIDcwMTg4LCA0MzExLCAKKyAgICA0NjQ0LCA4ODE4LCA3ODE1OCwgMTI4MTg2LCAxMjg4NjksIDcxNDUsIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgCisgICAgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgCisgICAgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDExOTI1NSwgCisgICAgNzQwNDYsIDQzNzQ1LCA0OTExLCA5ODgsIDcxMTgwLCAwLCA5ODM0NzAsIDQzMDYxLCA3MDU0LCA2NDE0NywgOTgzODQ3LCAKKyAgICA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDE5NTA4NywgMTEwMzIsIAorICAgIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2NjQxNSwgNjU4NDMsIDE3MCwgMCwgNjcyMzksIDQxNjksIDAsIDQxODU5LCAKKyAgICA2MDU4LCAxMjA0MDEsIDEzMjAzLCAxMjA2NTcsIDcwNTA3LCAxMjUwOTEsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIAorICAgIDQyMTA2LCA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyNzEyMCwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCAKKyAgICA2ODc1OCwgNjgzNDIsIDgzNDIwLCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIAorICAgIDUzMDAsIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCAKKyAgICA0MzI4OCwgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCAKKyAgICA3ODc2LCA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIAorICAgIDEyMDUzLCAxMjgxMjksIDY4NzQ2LCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIAorICAgIDgzNDEyLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCisgICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgMTIxNDQzLCAKKyAgICA2ODY1NSwgMCwgOTgzMzkwLCAwLCAwLCA2ODYyOCwgOTgzMzQ5LCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCAKKyAgICA2Njg3LCAxMjc0LCAxOTUwMjIsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgCisgICAgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCA4MzI5NywgNzg2NjksIDY0MTAxLCAwLCAxMjg0MzQsIAorICAgIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDEyNjk5MywgMTg4OCwgMTk2MCwgNzg2MSwgODM0MTYsIDc4NTI0LCA0MTgzNiwgCisgICAgNDMwMTIsIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDgzMjYwLCA2MjExLCAxMjAzODYsIDM1OCwgNDE5OTcsIAorICAgIDQxODMzLCAxMTQ0MiwgMTA3NTgsIDY1Nzc0LCAxMTM4MjMsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgOTgzNjExLCAKKyAgICA5ODM3MDgsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCAKKyAgICA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCisgICAgODM0MDMsIDgzNDA0LCA4MzM5NywgMTEzNjMsIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDgzMzk2LCAKKyAgICA2NjIwMiwgODk1NywgNDEzOSwgNzA1MTIsIDAsIDk4MzA3NCwgMCwgMCwgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgNjgxNiwgCisgICAgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgODM0NjMsIAorICAgIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIDY0MjEyLCAKKyAgICA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIDEyNTEyMSwgCisgICAgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCA5ODM0MjEsIDY0MDY3LCA5MjI4NywgODU1MiwgNjQxMTMsIDQxODQ1LCAKKyAgICAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgODMzMDIsIAorICAgIDkxNzYxMCwgNzkzNSwgMjQyMCwgMCwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgCisgICAgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCA2Njg4NCwgNjI5MiwgNjUzMDMsIAorICAgIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAxMjkwNzMsIDY1MTUyLCA3MTksIAorICAgIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgCisgICAgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgCisgICAgMCwgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIDAsIDExMzc1NiwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIAorICAgIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCAKKyAgICA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIAorICAgIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCAKKyAgICA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIAorICAgIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgODM0NDIsIDY0NTYsIDczODIwLCA4MzQ0NSwgNjY5MSwgCisgICAgNDIxOTMsIDY2Mjg0LCA4MzQ0MSwgMCwgNjgzMzcsIDAsIDQzODU4LCA0MzgzMiwgMTE4ODIwLCA5NzUxLCA2NTQwNywgCisgICAgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMTIwNzI0LCAwLCA2NTA2MSwgOTgzOTQ1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIAorICAgIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgOTgzNTg2LCA2OTkxMywgCisgICAgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCAKKyAgICA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAKKyAgICAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAxMjczMjUsIDk4MzQzNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCAKKyAgICA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIAorICAgIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIAorICAgIDAsIDQyODkxLCA2NjMyNywgNzA1MDIsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMTI4NjI4LCA0MTkzLCAKKyAgICA2NjgyMywgNDI0MSwgMTI5MTk1LCA3OTk4LCA4MzI3NiwgMCwgMTI3MDA5LCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgCisgICAgOTgzOTM0LCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAKKyAgICAxMDAxNSwgMTIwNjcyLCAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIAorICAgIDQyMDM3LCAwLCAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIAorICAgIDM3NzksIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAwLCAyODAsIDc0NTU4LCAKKyAgICAxMjEzNTMsIDY3Mzk2LCAxMzA3MiwgMTg5NCwgODMyOTEsIDY3NzM1LCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAKKyAgICAwLCAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgCisgICAgNzE4NzcsIDEyODY2OSwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCA5ODMwNjYsIAorICAgIDUzNjcsIDg3NTYsIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgCisgICAgNjk2ODUsIDk4Mzc1NiwgMCwgMTEzNzk0LCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIAorICAgIDIyOTAsIDcxMDU3LCAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCAKKyAgICA2NzE0OCwgNTM1MiwgMTEzNzUzLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIAorICAgIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDcxMjU0LCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgCisgICAgNzE1MCwgNjgxMjcsIDcxNDI1LCAwLCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCisgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDEyMDc1MCwgNzg3NTEsIDcxNDYsIAorICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCAKKyAgICA5ODM0MzcsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgNzQwODIsIDc3OTIyLCAwLCAKKyAgICAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDAsIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgNDAyMiwgCisgICAgMTI4NzgzLCAxMjA3MDEsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCA5MDcwLCAwLCAKKyAgICA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgOTgzODEzLCA3MDAwLCAzOTA0LCA5ODM2MjgsIAorICAgIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAKKyAgICA5MTc4OTEsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDExMzcyNSwgOTYzNiwgMCwgMTA3MzgsIAorICAgIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCA5ODM3MjMsIDY0NDA5LCAzNTk2LCAKKyAgICAxMjkwNDQsIDEyODA5MCwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCAKKyAgICA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAxNzY5LCA0MTcxNSwgMjQ2MywgCisgICAgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgMTk0NjE0LCAxOTUwNTgsIDc3OTUsIAorICAgIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDAsIDEyMTEzMCwgOTQ5OCwgMTI3MDMyLCAKICAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKLSAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAwLCAKLSAgICA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgNDEwMTksIDAsIAotICAgIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDc4MjA4LCAxMTg4NzksIAotICAgIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAwLCAxMzI3OSwgNzkxNywgNzQ3NTUsIDAsIDc3MzMsIDAsIAotICAgIDQ5OTgsIDk4Mzg5NiwgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCA3MDA2MSwgNDAxMywgMCwgMTA4ODEsIDAsIDAsIAotICAgIDAsIDc0Nzg4LCAyMDE0LCAwLCAwLCA5NzY1LCAwLCAwLCAwLCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgCi0gICAgMCwgMCwgMCwgMjAxNSwgMCwgMCwgMCwgNjYzMTgsIDQzMjMzLCAwLCA0MjUxNywgMCwgMCwgMCwgMTI2OTgsIDgwOTQsIAotICAgIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCAwLCAxMjY1NiwgMTI4MTIyLCAxMTkzNTMsIDEyODI3MCwgMTY2NSwgMCwgNDgzMywgCi0gICAgOTgzMDUzLCAxMTkzNTEsIDEyNzM2NywgMCwgMTg5LCAxMjYxMSwgMCwgMCwgMjg1OSwgNDgzOCwgMCwgNDgzNCwgNjUwNzgsIAotICAgIDAsIDAsIDQ4MzcsIDEyNzA2MSwgNzcwLCAwLCA4MTEsIDAsIDQxMDQyLCA5MTc1NTEsIDQxMzE4LCA2NDQyNywgMCwgCi0gICAgMTI4MjA4LCA3ODg0OCwgMzg5NSwgMCwgNzQzNDEsIDM5NzYsIDAsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgMCwgMjg3MSwgNjQ2MTQsIDEyODc4NSwgOTk5LCAwLCA2MzQ1LCAKLSAgICA0MTg3NiwgMjY2MywgMjAxNywgMCwgMCwgMTEwNDAsIDEwMTUwLCAwLCA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgCi0gICAgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIAotICAgIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDAsIDEwODEyLCA3ODg1MSwgMCwgMCwgMzA3OCwgMTQwMiwgMCwgMTI4Mjc1LCAwLCAwLCAKLSAgICAxMTkyNDgsIDM5NCwgMzA4OCwgMCwgOTIxNzIsIDAsIDM5OTEsIDY0MzkxLCAwLCAxMjg1MjQsIDQyNCwgNjYzMjgsIDE5OTksIAotICAgIDY5NjU5LCA3MzkxNCwgMCwgMCwgMCwgMCwgNDIyMzEsIDgyNDYsIDAsIDAsIDAsIDQxODQwLCA5ODM2MDksIDIzNzcsIAorICAgIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIDU1MjI4LCAxMTc3NCwgNDEwMTYsIAorICAgIDk4MzI2MiwgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIAorICAgIDQxMDE5LCAxMjc5NDQsIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIAorICAgIDcwODY0LCAxMTg4NzksIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCAKKyAgICA3NDc1NSwgOTE3OTQ4LCA3NzMzLCA5ODM0MDgsIDQ5OTgsIDY4NDkzLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDE5NDc5MCwgCisgICAgMTk1MDU2LCA3MDA2MSwgNDAxMywgMTI4NzE4LCAxMDg4MSwgMCwgOTgzMTYzLCAwLCA3NDc4OCwgMjAxNCwgMjQzMiwgCisgICAgNzE5MDEsIDk3NjUsIDE5NTA1MiwgMCwgOTE3ODU0LCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgCisgICAgMCwgMTE5MzE1LCAyMDE1LCAxMjEwODgsIDkyNzY1LCA3MTg0MCwgNjYzMTgsIDQzMjMzLCA5MTc5OTIsIDQyNTE3LCAKKyAgICA2ODA2MCwgMCwgMCwgMTI2OTgsIDgwOTQsIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCA0MzQ5NywgMTI2NTYsIDY2MzM1LCAKKyAgICAxMTkzNTMsIDY3Mjc5LCAxNjY1LCA3MTg1MywgNDgzMywgOTE3OTg1LCA3MTE4OCwgMTI3MzY3LCAxMjE0NjQsIDE4OSwgCisgICAgMTI2MTEsIDAsIDk4MzQyMCwgMjg1OSwgNDgzOCwgOTgzOTMwLCA0ODM0LCA2NTA3OCwgMCwgOTI5OTEsIDQ4MzcsIDY3NDEzLCAKKyAgICA3NzAsIDkyNjcxLCA4MTEsIDcwMDYyLCA0MTA0MiwgODMwNzMsIDQxMzE4LCA2NDQyNywgNzM5OTksIDY3NjkzLCA3ODg0OCwgCisgICAgMzg5NSwgOTI2MTUsIDc0MzQxLCAzOTc2LCAxMjg0NjYsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgNzg0ODgsIDAsIAorICAgIDQzNDk2LCAwLCAxMjEwMTUsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDk4Mzc0MywgMjg3MSwgNjQ2MTQsIDY4ODQzLCA5OTksIAorICAgIDk4Mzg0NCwgNjM0NSwgNDE4NzYsIDI2NjMsIDIwMTcsIDEyMTIzNCwgNjc4MjQsIDExMDQwLCAxMDE1MCwgMTIwNjc4LCAKKyAgICA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAKKyAgICAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDgzMzQ0LCAxMDgxMiwgNzg4NTEsIDAsIAorICAgIDgzMzQyLCAzMDc4LCAxNDAyLCAwLCA4MzM0OCwgMCwgMTI1MDcyLCAxMTkyNDgsIDM5NCwgMzA4OCwgODMzNDcsIDkyMTcyLCAKKyAgICA5MTc5NjUsIDM5OTEsIDY0MzkxLCA4MzM0MSwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCA2OTY1OSwgNzM5MTQsIDAsIAorICAgIDEyNzUzNCwgNjY5MDMsIDEyODQ2OCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAKICAgICAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgMTI1NTksIDEyNTcwLCA3NDc5LCAxMDAzLCAyMzczLCA5NDQ2LCAKLSAgICA3NDgxLCA5NDQ4LCA0OCwgMCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCAKLSAgICA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAwLCAwLCA5NDI0LCAKLSAgICA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMCwgMjAwNCwgOTA5NiwgOTc4MiwgCi0gICAgMTI4ODQ4LCA5MTcyLCAxMjg1NDUsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgNzQ3NzMsIDAsIDAsIDY0NzgyLCAKLSAgICAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAwLCAwLCAxMjczNjQsIDEwNjA2LCA4MDY1LCAKLSAgICAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgMCwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCA5ODMyODgsIDQzMjgwLCA4MjE5LCAKLSAgICA2ODQwMiwgMTgxMiwgMTE5OTYzLCA5ODM2OTIsIDAsIDEyNjQ4OCwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIAotICAgIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDk4MzI2MSwgNjg2NzgsIAotICAgIDAsIDAsIDEwNDksIDAsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAorICAgIDc0ODEsIDk0NDgsIDQ4LCA5ODMwODQsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCisgICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMTI5MTM1LCAKKyAgICA5MjkzNCwgOTQyNCwgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDEyODA1MCwgCisgICAgMjAwNCwgOTA5NiwgOTc4MiwgNzA4NDIsIDkxNzIsIDgzMDcxLCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIAorICAgIDc0NzczLCA3ODI3MSwgMTI4OTA5LCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgCisgICAgOTgzODE3LCAxMjA4MzgsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDExODgwNSwgMTAzNTMsIDEwNDE3LCAxMjcyMzgsIAorICAgIDEyODczOSwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCAxMjUwODIsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgMTE5OTYzLCAKKyAgICAxMjEwNjcsIDEyODQzMCwgMTIwOTM5LCA0MjQxMCwgNzQ0NDgsIDExOTEzMiwgNjA1NCwgMTA2OTcsIDMxNjksIDQyMjk3LCAKKyAgICA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDEyODg0OCwgMTI4MTM5LCA5ODMyNjMsIDY4Njc4LCA3NDk4NiwgOTgzNzkwLCAKKyAgICAxMDQ5LCA0MzUxNywgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCA2NDc2MCwgCiAgICAgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIDM2LCAwLCAKLSAgICA1MTUzLCA0MTgwNSwgMCwgNzM3MzUsIDc2MywgNDE4MDgsIDY0OTEwLCA5ODMxMzAsIDIwMDksIDAsIDAsIDEyNzE0MiwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCAxMjA2OTUsIDg2MjEsIDEyMDUyMywgMTI4NTIsIDMwMzEsIDk4MzA1MCwgNjQzNjEsIDAsIAotICAgIDE4MiwgMTk0NzE4LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgCi0gICAgMTE3NTQsIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCAKLSAgICA0MTAyNiwgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDAsIDQyMjUxLCAwLCA0MjUzNCwgNjUxNzksIDExMjg3LCAKLSAgICA2MTI4LCAwLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAwLCA2NTUwNiwgMCwgNjU4NjEsIDc0MDgzLCA5MjYwMCwgOTkzMiwgMCwgCi0gICAgOTI0MjMsIDExOTk1NSwgMCwgOTgxNywgMCwgMTIwMTQwLCAwLCAxMjExNywgNjY1ODYsIDQxODMsIDEwNTQwLCA2NjI1MCwgCi0gICAgOTA2MywgMTI3MDQ1LCAwLCAxMTk5NTQsIDAsIDEyODk3LCAzNzkyLCAyMDExLCAwLCA2MDY1LCA0MzE2MCwgMCwgMTk0NzE1LCAKLSAgICA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgCi0gICAgNzgwMDIsIDAsIDc1MTMsIDE4NjMsIDQ3MTAsIDAsIDU5NTYsIDc2MjEsIDc4MDA2LCA5MjYyNCwgNDcwNSwgNzE2LCAKLSAgICA3ODAwNCwgMCwgNDcwNCwgMTIwMDQwLCAxMjAyNzAsIDQyMjQxLCAxNjEsIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDAsIAotICAgIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIDExOTA2NSwgNDMyOTMsIDExOTk0NCwgMCwgMTE5MTY0LCAxMjAzMjgsIAotICAgIDkyNDY3LCAxMDE4NywgMTcwMCwgMTE5MjIzLCAwLCAwLCAxMjgxMTksIDQwMDQsIDAsIDEwOTY4LCA0MzI5NiwgOTgzNjQyLCAKLSAgICA4NTA2LCAwLCAwLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDAsIDc4MjE4LCA5ODMxMDksIDc0NjMsIAotICAgIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgMCwgMTIwNDIwLCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCA5ODMxNzQsIAotICAgIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgMCwgMCwgNDI1MjcsIDEyOTExLCA0MzQyNywgMTM4MywgCi0gICAgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIDEyMDQxNiwgMjY3NCwgCi0gICAgMTMyMzgsIDExOTIyLCAwLCAxMjAzMzAsIDM1MTAsIDEzMjM0LCAwLCAxMjA0MDcsIDU2MDUsIDQyMDk1LCAxMTM2NCwgMCwgCi0gICAgMTM4MCwgNjU2MTcsIDEyMDI1MywgMTIwMjYxLCAxMzE5NiwgMTMxOTcsIDEyMDMwOSwgMTIwNjgyLCA5NDk1LCAxMTkzNDYsIAotICAgIDAsIDU5NTksIDY3OTg0LCA3Mzk3NiwgMTIwMzA1LCA0MzM3MSwgNjk0MSwgMTE5MzQ5LCAxMzIwNSwgMTMyMTEsIDU4MDEsIAotICAgIDEyNzY5LCA2NTkwNSwgNDE2OTcsIDEyODMsIDEyMDMwMiwgNDc3OSwgMCwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgCi0gICAgMTI4NzczLCAyMDIxLCAxMTkzMzIsIDEyMDY5OSwgMTE5MTUwLCA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCAKLSAgICA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCA3Nzg3LCA3ODIzNCwgNjU0OTQsIDY4MTUzLCAwLCAwLCAKLSAgICAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgMCwgMCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgOTgzNzk0LCAKLSAgICA5NzQyLCA1MjEsIDAsIDEwODAwLCA5MjIyMiwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIDY2MzIzLCA5MjgsIDAsIAotICAgIDAsIDExOTAxOCwgMTA1OTksIDExNTg2LCAzOTg5LCAxMDk3MSwgNDM3NDgsIDY1NzgyLCA5ODQxLCA4ODQzLCAxMjE0NSwgCi0gICAgOTI0NzAsIDEwMDc0LCA3ODU0OCwgMCwgMzc2OSwgMCwgMCwgMCwgOTgzMTA3LCA5NTczLCAwLCA2NTI5MCwgODg0OSwgMCwgCi0gICAgNjU4NTUsIDY1MTEyLCAxNzk2LCAxMjA1MDUsIDAsIDY5NjY1LCA4MTY0LCA0MTMwMSwgMzUwMiwgMCwgNzM4OCwgMTA2MjEsIAotICAgIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCAwLCAxMjA0NTcsIDEyNjYxLCA3NjA4LCAxMDM1NCwgMTA0MTgsIAotICAgIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgMTM5MCwgMCwgMCwgNDIxLCAKLSAgICA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCA3NjAwLCAxMjAxMjEsIDY2MDM1LCAKLSAgICA5ODM5MTMsIDAsIDY1ODUxLCA0MjYwNywgMTI4MTkwLCA5MjQwMywgMzE2OCwgMCwgNDIxMzQsIDExODMxLCAyMzcwLCAKLSAgICAyODQ2LCA5MjYwNSwgMCwgMCwgMTIwMTMyLCAwLCAxODM2LCAwLCAwLCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIAotICAgIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAxMjA0MzQsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIAotICAgIDEyMDQ0NiwgMCwgMCwgODEyNywgODk3NSwgNjQ3MzksIDc5NDMsIDk4Mzc0MywgMCwgMTA2MTgsIDI1ODQsIDAsIDAsIDAsIAotICAgIDk5OTgsIDEyODU2NCwgMCwgMCwgMCwgMCwgNjIwNCwgMCwgMCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKLSAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMCwgMTk1MDQ2LCA2NTcwMCwgNjY1NjIsIDAsIDY0NjQ1LCAwLCAKLSAgICAwLCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjc5MjIsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCA5ODM3OTcsIAotICAgIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgMCwgNjYxNSwgMjI4NSwgOTIzNDQsIDM5ODYsIAotICAgIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgMCwgOTgzMzU4LCA5NTQxLCA3ODI3NiwgMCwgMTEyNzUsIDg1NDAsIAotICAgIDExNDk4LCAwLCA5ODMzNTcsIDQxMDQwLCAyNDU5LCAwLCAxMzA2MCwgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIDAsIDAsIAotICAgIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDk4MzM1MCwgMCwgMTYwNiwgMTIwMzQ4LCAKLSAgICAxMjAzNTEsIDMwOTMsIDY4NDM2LCAwLCA5ODMwNjEsIDExOTYxMywgMCwgMCwgNDMxMiwgNzQwOTEsIDEyMDMzNywgCi0gICAgMTIwMzM2LCAxMTkyMywgNDAyMywgMTIwMzMzLCA1NzYzLCA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgCi0gICAgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCAwLCAwLCAxMTg4MzcsIDExOTczLCAKLSAgICAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgNDI3NTgsIDEyMTk2LCA0MjgzNywgNDIyMjYsIDExOTMxOSwgMCwgCi0gICAgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAwLCAxMDM4OSwgMTI2NDg1LCAwLCA0ODk1LCAKLSAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDAsIDAsIAotICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDkzOTk2LCAyMzc2LCAwLCAxMTkzMjAsIAotICAgIDAsIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgCi0gICAgMCwgMCwgOTgzMDg0LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDk4MzA4NiwgOTgzNTczLCAxMjAwNDcsIDEyODU3NSwgMCwgCi0gICAgMCwgMTIwMDQ5LCAwLCAxODQ3LCAwLCAxMDMzOSwgOTgzMzY1LCA0MjM4NCwgMCwgNDIyNywgNzQxNTgsIDAsIDkyNTAxLCAKLSAgICA0MzAzMiwgMCwgNDIzNjUsIDAsIDEyNjcxLCAxMTM4NCwgMCwgOTgzNDY1LCAwLCA2NDc5NywgOTgzMzQ1LCA1ODIwLCAKLSAgICA5ODMzNDQsIDEyMDA1MiwgMTIwMDY1LCAwLCAxMjAwNjQsIDEyMDY1MCwgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAKLSAgICAxMjAwNjMsIDAsIDczNzcsIDEyNzg2NywgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIAotICAgIDk4MzM0MCwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCA5ODMzNjksIDc0MTg0LCA5ODMzNjgsIDEyMDA1NSwgMCwgNDMxNzUsIAotICAgIDAsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKLSAgICAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgOTgzNjgxLCA4MzYwLCAwLCA3ODA0NCwgMzIxLCA0MjI5LCAKLSAgICA2NDU0MywgOTE3OTQ2LCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDAsIDkxOTUsIDkyMzg2LCAKLSAgICAxODYxLCAwLCA3MzczMywgMCwgMCwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgCi0gICAgMCwgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMCwgNzQzLCA0NDE0LCAKLSAgICAxMjA3NjYsIDAsIDQyNjMyLCA5MTc5NzMsIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCAKLSAgICA0MzM0MSwgMCwgMTk5MTksIDAsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDAsIDAsIDM1MTMsIDAsIDExODg4MywgNDMzNDIsIAotICAgIDExOTA2NCwgNjU1MjksIDY1MzY0LCAxMjgxOTcsIDAsIDY0ODUsIDEzOTcsIDAsIDQxOTg2LCA5MjY3OCwgMCwgMCwgCi0gICAgNzQwOTcsIDAsIDc0NzEsIDEyMDc5LCA2Nzk5NywgMTI2ODIsIDQzMjg3LCA5MjMxNywgMCwgOTgzMTQzLCA5ODM3MDcsIDAsIAotICAgIDAsIDEwOTksIDEwNDkwLCAwLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAwLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIAotICAgIDc4MjIyLCAxMzQ2LCAwLCA5MTc2MzEsIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgMCwgODI3MiwgMTI3ODEyLCAKLSAgICAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyNzIzNCwgNDM1NjQsIDAsIDAsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIAotICAgIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIDEyMDIzMCwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAwLCAwLCAyNjUsIAotICAgIDQxNzk1LCA2NDY2NiwgMTI2NTA4LCA0MzUzMCwgMjc1MiwgMCwgMCwgOTgzNDkzLCA1OSwgMCwgOTgzNTkzLCAwLCA5MjM3MSwgCi0gICAgNzc4NzMsIDQxODEwLCAwLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgMCwgNDIyNTIsIDQyMjEzLCA4MDA5LCAKLSAgICAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNjYyNTUsIDEzMTI3LCAxMjAwNjcsIDAsIDc0Mzk3LCAxMjAyMzUsIDkxNzk3NywgCi0gICAgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgMTk0ODcwLCAyMTAzLCAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgCi0gICAgMTMxNTksIDAsIDY0ODEsIDQxMjEzLCAwLCAwLCAwLCAwLCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgMCwgCi0gICAgNDYyLCA2ODExMCwgMTA0OTMsIDAsIDgxMjksIDAsIDAsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAKLSAgICAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgMTE5MDEzLCA0MzM0MCwgMCwgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAwLCAKLSAgICAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAKLSAgICAwLCA0MTg0MSwgNDMzMzgsIDAsIDAsIDU3MjYsIDY0OTE1LCA0MjE3NSwgMCwgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIAotICAgIDI4NTEsIDQzMDE3LCA5ODM1ODksIDAsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIAotICAgIDAsIDY1MzYwLCAwLCA5MjM2NSwgOTE3Nzg5LCA2NDkyMiwgMCwgODE5MCwgMTIwODMsIDAsIDAsIDY1MDYsIDY0MzEyLCAKLSAgICA3NDM3NCwgMjM2OCwgMCwgNDQxOSwgOTgzODQ3LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEyMDEwNiwgODg5MSwgCi0gICAgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAwLCA4OTkwLCAyODQ4LCAwLCAxMjgyMjMsIDkyNTI4LCAyNDksIDAsIDAsIDAsIAotICAgIDEyMDY1OCwgMCwgMCwgODg4MywgOTE3ODAyLCA3MjgsIDY4MTc4LCA5OTUsIDAsIDAsIDY0ODI2LCAwLCA5MTc3OTgsIAotICAgIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIDE5NDgxNCwgOTgzODUwLCAxMjExMiwgNjk5MTIsIDAsIAotICAgIDAsIDc0NDE5LCAxMjMzNSwgMTIwMTA0LCA5MTc3OTUsIDM0NDMsIDMxMjksIDAsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgCi0gICAgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCA3ODI1NSwgMCwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMCwgNDE4OTQsIDAsIAotICAgIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyODY3OCwgMzU0MCwgMTI4NjQ5LCA4MzUsIDcxMzQwLCA2OTgxNiwgCi0gICAgMTE5ODY4LCA3NDQwOCwgMCwgNzM5NTksIDU0MjYsIDQyNTgsIDAsIDAsIDU0MjQsIDEyODEyNywgODI4MywgMCwgNTQzNCwgCi0gICAgOTgzNTkwLCAwLCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTI4MzA3LCAzNDY0LCAKLSAgICA2NDg2LCA0ODE5LCAxMjgyMzMsIDAsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgMTI4NTM5LCAKLSAgICA0MzEsIDAsIDAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgOTgzNjYzLCAxMzA5NiwgMTI4NjQzLCAwLCA0MzQwOCwgOTUxNiwgCi0gICAgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgCi0gICAgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDE5NTA2NiwgMCwgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgCi0gICAgNjYwMzksIDAsIDc4NzE4LCA5MjcyMywgMzU0OSwgMCwgOTExMCwgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTk0ODEyLCAKLSAgICA5MDk3LCAwLCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMCwgMTI2NDk0LCAwLCAwLCA0MjY5NCwgCi0gICAgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgMCwgNTg3MiwgNjQ5NSwgMCwgMCwgMCwgOTI1NDMsIDAsIDEyMDczMywgCi0gICAgMTI4NDksIDM5NTMsIDE4OTcsIDAsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMCwgCi0gICAgNjg0NzMsIDc0MTA0LCA1MjI4LCAxMjg4MDQsIDc4NjgsIDQzMTg0LCAwLCAwLCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAwLCAKLSAgICAxMTYyLCA5MTc4NDcsIDI2NzEsIDAsIDAsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgMCwgMTk1MDA1LCAKLSAgICAwLCAwLCAxOTkyMSwgNzQzMzEsIDExNDI0LCAxOTUwMDYsIDQ1NjcsIDQxODkxLCAwLCA5ODM3ODgsIDU1MjQ5LCA0ODIwLCAKLSAgICA2NTIzOSwgMTk0NjYyLCAwLCAxOTQ2NjUsIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgCi0gICAgMCwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAxOTQ5NDEsIDQzMjgyLCA4ODMzLCAwLCAwLCA2NTA0LCAKLSAgICA3ODQwOCwgMTI2OTc5LCAxMDcxOSwgMCwgMTg5OCwgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDAsIDE5NDY3MSwgCi0gICAgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCA5MTY5LCA4MzgsIDEyMDA4NywgMTIwNjk3LCA4NDQsIDUwMTQsIDAsIAotICAgIDI1NiwgMCwgOTk5MCwgMCwgNDI3MzksIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDAsIDY0ODksIDEwMDQ4LCA3NDMyNiwgCi0gICAgNzg3MTksIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxOTQ2NTUsIDAsIDQxMDk0LCAwLCAwLCAxOTQ4OTMsIDAsIAotICAgIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTk0ODkwLCAxMjgxODQsIDEyMDQ5MSwgMTE4MTYsIDE5NDk0MywgNTczMywgCi0gICAgMjkzMCwgMCwgMCwgNDEwOTgsIDAsIDQxMDkzLCAwLCA2NjYyNiwgNTg4LCA5NzYwLCAwLCAxOTQ3MTcsIDEyMzgsIDIwMCwgCi0gICAgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgMTE4OTA1LCA3NDM2MiwgMCwgOTI0ODUsIDE5NDY1MSwgMCwgOTgzNzA2LCAzMzk0LCAKLSAgICAxOTQ4OTQsIDEyMDY2OCwgMCwgMCwgMTI3MzU4LCA2NjIxOSwgMTI3MTgzLCA0MzI4NCwgMTk0NjU2LCA3ODE3LCAxODQxLCAKLSAgICAxMTA1NSwgMTIwNTMzLCAxOTQ5NzksIDE5NDk4MiwgMTY2OSwgMTA3NzYsIDE5NDk4MSwgNzcwMSwgMTk0OTgwLCAwLCAKLSAgICAxOTQ5OTUsIDE3MzIsIDQwMzAsIDAsIDM5NjMsIDY2NjExLCAxMjc1MzAsIDQxNzY4LCA2NDkxLCAwLCA2NTMyNCwgOTE0LCAKLSAgICA2NTMyMywgODA3MSwgMzUzOCwgMCwgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgMCwgMTE4MTksIDAsIAotICAgIDEyMDA5LCAxMjM5OSwgMCwgNjc4NTIsIDY1NTM3LCAwLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCAKLSAgICA4OTYwLCAwLCA5MjUyNywgNjUzMTcsIDc3ODgwLCAwLCAwLCAwLCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIAotICAgIDAsIDAsIDAsIDExOTYyMSwgOTI1MjksIDc0NTM2LCAxMjQ0NywgNjQ0ODYsIDEyNzM3NCwgMTI2NTYyLCA5ODMxMjksIDAsIAotICAgIDAsIDk4MzgwMiwgNDI3NjcsIDEwOTE1LCAwLCAxMjAwNywgNDM2OTUsIDEyMDUyMCwgMTE5NzUsIDE5NDg3OCwgMCwgCi0gICAgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDMxNjgsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCAxMjgxNDgsIAotICAgIDEyMDI0MSwgMCwgMCwgMCwgMCwgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCA2NTU5NiwgOTIzMDYsIAotICAgIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDEyNjQ3MywgNjc4NzEsIDc0Mzg2LCAwLCAKLSAgICA4MjMzLCAxMjgyMCwgMCwgNjY4MywgMTk0ODc2LCAzNDQyLCAxMjE0NCwgMjg0MSwgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCAKLSAgICA2NDMyOSwgMTI3ODMyLCAwLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCA0MTEwMCwgMCwgNDExMDQsIDk0MDAzLCAzNDA2LCAKLSAgICAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDAsIDQ0MzQsIDEwNjksIDAsIDExODg2MiwgNjU3MzcsIDkxNzc2NSwgCi0gICAgMTI4NzA1LCAwLCA5ODM2OTMsIDk2OTMsIDQxOTQzLCAxMjY1NjQsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDAsIAotICAgIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTgzNjk2LCA2NTkzNywgMCwgNDE3NjQsIDEwNjQ2LCAwLCAxMTg4MzMsIAotICAgIDkyMzcyLCAwLCA3NDgzMCwgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgCi0gICAgMTIyMDcsIDExOTYxOSwgNjMzNSwgNjY2MDIsIDExMzEyLCA2NDgwNywgMCwgMCwgNDE3NjcsIDExOTYyOSwgOTgzNzY0LCAKLSAgICA0MzAyMCwgMTI4MjcxLCAzOTU1LCA3NDI1NCwgMCwgOTgzNzU0LCA5MTc4NjEsIDAsIDc3OTI2LCA5NzcwLCA5MjQ2LCAKLSAgICAxMjIzMCwgMCwgMCwgMCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAKLSAgICAxOTQ5MjcsIDQ4NTcsIDAsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTI4MDYxLCA3ODU3NCwgMCwgNzQyODQsIDAsIDU3NDcsIAotICAgIDc4ODI1LCAwLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIAotICAgIDk4MzY5MSwgMTI3OTgsIDExMjcxLCA1NywgMCwgMCwgOTE3ODYwLCAxMTkwNDMsIDAsIDk0MDUxLCA0MzEzNywgNjk0LCAwLCAKLSAgICA5ODc2LCAwLCAxMTkxNjgsIDAsIDc4ODIyLCA2NDUzNywgMCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDAsIDAsIAotICAgIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDEyNjQ3OCwgMTU3NCwgNzM4MSwgMCwgMjUyNSwgNDg1MiwgNTc0OSwgCi0gICAgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIAotICAgIDAsIDc0MDE1LCA5MDU1LCA0MTg1MywgNDg1OCwgOTE3NzgwLCAwLCA0MzYsIDQ3NzEsIDAsIDI3ODYsIDAsIDQ4NTYsIAotICAgIDgwNTEsIDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDAsIDAsIDAsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCAKLSAgICA5ODMzNTksIDczOTA2LCAxMjg2ODAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCA0MjE1NywgMCwgMzE1NywgCi0gICAgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCA2NTE0MiwgCi0gICAgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTk0OTU5LCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAwLCA4ODM0LCAwLCAKLSAgICAxMjgxNSwgNDM1NzQsIDAsIDczOTA3LCAwLCA3NDE5NiwgNzIyMCwgNzQ1MDQsIDAsIDc0MzE2LCAwLCA2NTMyMiwgNDMwNCwgCi0gICAgNzQ1MDMsIDgxNjAsIDc4NzA3LCAxOTQ3NTMsIDAsIDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjY1MzksIAotICAgIDEzMzAzLCAwLCA5MjM5MiwgMTk0NzU1LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDAsIDAsIDc0Mzg3LCA3ODE3OSwgCi0gICAgNzg1OTgsIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCAKLSAgICAxOTQ3NjIsIDI2NzIsIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAwLCAKLSAgICA0Mzc0MiwgMCwgOTQ4NywgMTE5OTU5LCAxMTkxMTcsIDM4NDIsIDEyODc2OCwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAKLSAgICAxMjc5NzYsIDAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNzg0NjgsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCi0gICAgMTk0ODU1LCAxOTQ2OTAsIDE5NDg1NywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCAKLSAgICA0MjUwNywgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDAsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgCi0gICAgNTQzNywgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMCwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgCi0gICAgMTk0Njk5LCAxOTQ4NDcsIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDgwLCAxOTUwNzAsIAotICAgIDY0NzIsIDY1ODE0LCA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDk4MzgxNywgOTgzMjQ3LCAKLSAgICAxOTUwMjQsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDAsIDE5NTA1MSwgNjY3OSwgNzQ0MTIsIAotICAgIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgOTgzNjMxLCA5ODM2MzcsIDEyNzg5MSwgMTI3NDg0LCAxOTQ4MzMsIAotICAgIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNzgxOTUsIDY1NDQyLCAKLSAgICAxMTk2MTAsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTEzMjEsIDEyODg0NSwgMTk0ODIwLCAKLSAgICAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCAxOTQ4MjUsIDczOTI3LCA5MjQ0NCwgMTk0NzM2LCAKLSAgICA2NTc0NiwgMTI3NDc2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDE5NDgzMSwgMTY3NywgMCwgMCwgCi0gICAgMTI2NTkwLCA5MTc4NTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAxMDE2MCwgMCwgMCwgNzU4NSwgCi0gICAgNjUxNjksIDIwNTIsIDQzMDgsIDkyMTc0LCA0MzAwMCwgNzUwNSwgNTQzLCA2NDkxNiwgNjQ3MzYsIDAsIDAsIDY0NjU1LCAwLCAKLSAgICAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAwLCA2NTI2NSwgMTk0NjM5LCAwLCAxMjcxNzAsIDAsIDk4MzYyNSwgMCwgCi0gICAgMCwgMTI5OTQsIDkyNzI4LCAxMDgyOCwgOTgzOTQzLCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDAsIDAsIDAsIDUwNiwgCi0gICAgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCA5ODM2ODAsIDg4NDEsIDAsIDUxNiwgCi0gICAgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCi0gICAgMTE4MjcsIDc0MzA4LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAotICAgIDExMDM3LCAwLCAxNzU4LCAxMjcwOTIsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgCi0gICAgMTIwMTk2LCAxMjAxOTUsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgNjQ3MDIsIDEyNjQzLCA4MjUsIAotICAgIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCA3ODgyOSwgCi0gICAgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMCwgMTEzMTMsIDAsIDM0MDMsIDAsIDAsIDY0MzY0LCA5MjI2OSwgCi0gICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCA5ODM4NDksIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgCi0gICAgMzQzMywgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgNjkxNCwgNjc2MDMsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCAKLSAgICA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIAotICAgIDQxMzkzLCAxMjY2OCwgMTk0OTA0LCAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDE5NDg4MCwgMTI3MjM1LCAKLSAgICA1NzMsIDEyNzI4MiwgMTk0ODg0LCAxMTQxNywgMTk0ODg2LCAxMTk4MTQsIDE5NDg4OCwgNjc1OTksIDAsIDE5NDg4OSwgCi0gICAgNjc2MDcsIDExNDgyLCAwLCAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg4NDIsIDc4ODM5LCA2ODQxOSwgCi0gICAgNzg4MzcsIDExNTg5LCA0MjE5NSwgMTk0ODcyLCAxOTQ1OTksIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgCi0gICAgNDI3ODgsIDY4NDE2LCA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY4NDc2LCA5NzE3LCAwLCAwLCA5OTcsIDAsIAotICAgIDAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgCi0gICAgNzM3OTYsIDAsIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCi0gICAgMTA4NzMsIDEyMTk3LCAwLCAwLCA5MjI2NSwgNjk3MDYsIDAsIDc4MjEwLCAwLCAxMjgxMTAsIDE5NDg2NSwgMTI2OTgyLCAKLSAgICA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIAotICAgIDMyNzQsIDEyNzM2NSwgMTI2NTIzLCA5NDA0MiwgOTgzOTUwLCA3NDUyMiwgNDE5ODksIDAsIDAsIDEyODc5OCwgMzI2MywgMCwgCi0gICAgNjU2NzIsIDAsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgMCwgMCwgMCwgMCwgOTUwNSwgNjU1MTgsIDE5NDc3NiwgNzU2LCAKLSAgICAxOTQ2MDUsIDAsIDAsIDAsIDcyNjEsIDAsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAKLSAgICAxMjk0OSwgNjQ4NTYsIDEyODAwLCA5ODM5MDEsIDc0MjAzLCA2NDcxOCwgMTE1MDcsIDAsIDkyNDM0LCAxMTg5MjksIDAsIAotICAgIDExNTc4LCAwLCAxMTkyOTYsIDAsIDAsIDAsIDAsIDc0NTY4LCA5MjU0LCAwLCAxNzk0LCAxMjAyMTcsIDY0NTIxLCA1NjI0LCAKLSAgICAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgOTQwNjEsIDEyMDIxMiwgCi0gICAgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAwLCAKLSAgICA5ODM3NzEsIDkyNTI2LCA0NTExLCAwLCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDE5NDc4MywgCi0gICAgNjk5MDMsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCA5NTQ2LCAwLCAwLCAxMjA0NzgsIAotICAgIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgCi0gICAgNDIxMzEsIDAsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIDAsIDQzMTAzLCAwLCAxMjA3NTQsIAotICAgIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIAotICAgIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIDEwMzQsIDMzOTIsIDEyNzc3MSwgNDMwOTEsIDY0MDMzLCAKLSAgICA2NDAzMiwgNDI3MzUsIDY0MDM4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAxOTQ5MjgsIDY0MDE1LCA2NDAxNCwgCi0gICAgNjQ2ODEsIDE5NDkzMCwgMCwgNzgxNDUsIDAsIDQzMDkwLCAwLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCAKLSAgICA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgCi0gICAgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjY2LCAwLCA0NzY3LCA5MzQzLCAKLSAgICA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIAotICAgIDE5NDgzNSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgMCwgODQ4OSwgMTk0MiwgMCwgMTk0ODM0LCA0MjUyMCwgMTI4MjQ5LCAwLCAKLSAgICAwLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDAsIDY0MDI1LCA5MTY3LCA0MjE1MSwgNzgyNDQsIAotICAgIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAwLCA3NTgyLCA3ODI1MiwgNzgyNDgsIAotICAgIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDAsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCA3NTMyLCA0MTQxNCwgCi0gICAgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIDEwNzUxLCA5MDUxLCAKLSAgICAxMjA3MjAsIDY3MDgsIDEwNTM1LCA5ODM2MjcsIDY4MjE4LCA1NTI3NCwgMjAwOCwgNjQwMzEsIDY0MDMwLCAyOTQsIAotICAgIDQxODc0LCAwLCAxMjY5OTEsIDY1OTI5LCAwLCAwLCAwLCAwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIAotICAgIDAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIDAsIDExOTg4NiwgMTE5ODkxLCAxMTk4OTIsIDExOTg4OSwgMTE0MzMsIAotICAgIDExOTg5NSwgMTE5ODk2LCAwLCA3ODAxLCA2NTU3OCwgMTk0ODM5LCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDE5NDk1NSwgCi0gICAgMTEzNSwgMCwgMCwgMTI4NTI1LCAxOTk1LCA2NzIyLCA5ODM5MjUsIDAsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIAotICAgIDQxNTQ5LCA3ODQ5NiwgOTgzMzI3LCAwLCA2NjgyLCAwLCA3ODY3OSwgNjQ3MTAsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIAotICAgIDEyODI5MSwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCi0gICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCAwLCA3ODUzMywgMzQ2NiwgMCwgMCwgMTk5NiwgMCwgMzQ1MywgNjI4MiwgMCwgCi0gICAgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDAsIDQxNzksIDY1MTE5LCAxOTk4LCAwLCAxODQyLCAwLCA5MjY3NCwgOTYyOCwgCi0gICAgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgMCwgMCwgMTIwMjAxLCA5ODM2NDYsIDAsIDAsIDMwNTksIAotICAgIDQ0MDI0LCAxMjAyMDQsIDExOTk1MywgOTI2OTMsIDAsIDAsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDAsIDAsIAotICAgIDM1OTIsIDEwMDc4LCAwLCAwLCAwLCA4NTkyLCA2NTg3MCwgNjgxNjQsIDEyODc5MiwgMTA3NDIsIDAsIDQyOTE4LCAxOTk0LCAKLSAgICA5MjgxLCAzMjk2LCAxMjg2NSwgMTk5NywgMTg5NSwgCisgICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgMTIxMzg5LCAyMDA5LCAwLCAxMjc5ODUsIDc0MjQ1LCAKKyAgICA5NjQwLCAxMTk5NTEsIDAsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIAorICAgIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgCisgICAgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCAKKyAgICA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgCisgICAgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMjUwNTgsIDY1NTA2LCA5ODM5MTIsIDY1ODYxLCA3NDA4MywgNjY4NzIsIAorICAgIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCA5ODE3LCAwLCA3MTIzNCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAKKyAgICAxMDU0MCwgNjYyNTAsIDkwNjMsIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIAorICAgIDEyMTQxOCwgNjA2NSwgNDMxNjAsIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgCisgICAgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgNzgwMDIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgCisgICAgMCwgNTk1NiwgNzYyMSwgNzgwMDUsIDkyNjI0LCA0NzA1LCA3MTYsIDc0OTE4LCAwLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCAKKyAgICA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgCisgICAgMTE5MDY1LCA0MzI5MywgNjg3NzEsIDk4MzE5MCwgMTE5MTY0LCAxMjAzMjgsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCAKKyAgICA4MzMxNSwgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCAxMjgzMzEsIDg1MDYsIDExMzc0NCwgCisgICAgMTk0ODEyLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgCisgICAgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCA3NDg4NywgNzA0OTQsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIAorICAgIDEyODYyMywgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCA5MjU0OCwgMCwgNDI1MjcsIDEyOTExLCAKKyAgICA0MzQyNywgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIAorICAgIDEyMDQxNiwgMjY3NCwgMTMyMzgsIDExOTIyLCAwLCA5MjUyOSwgMzUxMCwgMTMyMzQsIDk4MzgzMiwgMTIwNDA3LCA1NjA1LCAKKyAgICA0MjA5NSwgMTEzNjQsIDkyMjg2LCAxMzgwLCA2NTYxNywgMTExNjIsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIAorICAgIDY3NzA4LCA5NDk1LCAxMTkzNDYsIDEyNzE1NCwgNTk1OSwgNjc5ODQsIDczOTc2LCA2NjI3NSwgNDMzNzEsIDY5NDEsIAorICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCA4Mjk1MiwgNDc3OSwgCisgICAgOTgzOTIyLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCA3MTE4NiwgMjAyMSwgMTE5MzMyLCA0Mzg3NywgODMxNDAsIAorICAgIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIAorICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgCisgICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgOTc0MiwgNTIxLCAwLCAxMDgwMCwgCisgICAgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAKKyAgICAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIDY3MjYxLCAxMDA3NCwgNzg1NDgsIAorICAgIDkzOTk5LCAzNzY5LCAwLCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCAKKyAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDgzMTM1LCA3Mzg4LCAKKyAgICAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDkyMjAzLCA5MjkxNSwgMTI2NjEsIDc2MDgsIAorICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKKyAgICAxMzkwLCA3MDE4NCwgMTk0NzA0LCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIAorICAgIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk1MDkxLCAwLCA2NTg1MSwgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCAKKyAgICA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAKKyAgICAxMjEyMDcsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIAorICAgIDExOTAwNiwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgODMzMTAsIDc3OTc1LCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgCisgICAgNzk0MywgMTI0OTY4LCAxMTkyMzQsIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIAorICAgIDEyNzc1MCwgNDM1MDgsIDYyMDQsIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAorICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NTA0NiwgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgCisgICAgMCwgOTI4ODcsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIAorICAgIDk4Mzc5NywgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgCisgICAgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzM2MCwgOTU0MSwgNzgyNzYsIAorICAgIDExMzY2OSwgMTEyNzUsIDg1NDAsIDExNDk4LCAxMjA4NjgsIDk4MzM1OSwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTMwNjAsIAorICAgIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgCisgICAgMzc2NSwgOTI4ODEsIDkxNzYxMiwgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEyODA0MCwgOTgzMDYxLCAKKyAgICAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIDc0OTgzLCAxMTkyMywgNDAyMywgNjgzOTksIDU3NjMsIAorICAgIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgCisgICAgNjY2NjAsIDI0OTksIDY3MTY3LCA2NzE2NiwgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIAorICAgIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDEyNzk5MiwgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAKKyAgICAzMTIwLCA5Nzk3LCAwLCAwLCAxMTA4NiwgMTAzODksIDEyNjQ4NSwgMTI4Nzg0LCA0ODk1LCA2NTM1OCwgMTI0OTQxLCAKKyAgICA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMTIxMTYwLCA5ODMxMDYsIAorICAgIDcwMDQsIDExMzY2NywgNjU4ODAsIDEyNjUxNCwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgOTgzODYzLCA5Mzk5NiwgMjM3NiwgCisgICAgNzg4NDEsIDgzNDAyLCAwLCA1MTk3LCA3MDgzOSwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTE5NjA0LCAKKyAgICA3MDgzNywgMTIwMDQ1LCAwLCAxMjg1NTQsIDAsIDkxNzg0NiwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIAorICAgIDExMzY3NSwgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDk4MzM2NiwgMTg0NywgMTIwOTc4LCAxMDMzOSwgCisgICAgOTgzMzY3LCA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMjExMjQsIDQyMzY1LCAwLCAKKyAgICAxMjY3MSwgMTEzODQsIDEyMDA1OSwgNzQyNjQsIDEyMDA1OCwgNjQ3OTcsIDk4MzM0NywgNTgyMCwgOTgzMzQ2LCAxMjAwNTIsIAorICAgIDEyMDA2NSwgMTI4ODI1LCAxMjAwNjQsIDEyMDA1MywgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAxMjAwNjMsIDEyMTI4NiwgCisgICAgNzM3NywgMTIwMDUxLCA0MTc5OSwgNjU1MzAsIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgMTIxMTMyLCAKKyAgICA2ODY2MCwgMCwgMTA4NTMsIDkyNiwgOTgzMzcxLCA3NDE4NCwgMTIwOTE1LCAxMjAwNTUsIDExOTMwMSwgNDMxNzUsIDAsIAorICAgIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKKyAgICAxMjY5OSwgODMzMSwgNzAxMTgsIDMwOTEsIDQxMDM0LCA2NjI5OCwgNzAyOTMsIDgzNjAsIDk4MzQ0NSwgNzgwNDQsIDMyMSwgCisgICAgNDIyOSwgNjQ1NDMsIDEyODQ3MCwgNjU1NjMsIDE5NDg3MywgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDEyMTQyOCwgCisgICAgOTE5NSwgOTIzODYsIDE4NjEsIDAsIDczNzMzLCA5MTc3ODAsIDY4ODM5LCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgCisgICAgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCA3NTAxNCwgNzQ3NTcsIDEyNzUxNCwgCisgICAgNDE2NTgsIDEyODM3NiwgMTIxMjM1LCA1NzYwLCAxMTM2OTksIDc0MywgNDQxNCwgMTIwNzY2LCAwLCA0MjYzMiwgMTI3MjM2LCAKKyAgICA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgNDMzNDEsIDAsIDE5OTE5LCA3MDI3OCwgCisgICAgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMTExOTksIDEyNTA3NywgMzUxMywgNzExMTUsIDcwMzQxLCA0MzM0MiwgMTE5MDY0LCAKKyAgICA2NTUyOSwgNjUzNjQsIDgzMjA4LCA4MzE3MCwgNjQ4NSwgMTM5NywgMTk0NzgxLCA0MTk4NiwgOTI2NzgsIDgzMjA0LCAKKyAgICA4MzIxMiwgNzQwOTcsIDgzMjEzLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDY4NDMsIDQzMjg3LCA5MjMxNywgMCwgNjc0MDYsIAorICAgIDEyMDIzOSwgMTk0Njc4LCA3MTkxNCwgMTA5OSwgMTA0OTAsIDgzMjAxLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAxMjg5NTIsIAorICAgIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgNzgyMjIsIDEzNDYsIDE5NDYwOSwgNjU2NzksIDY0NTczLCA2NDg5NywgNDIzLCAKKyAgICAxODE4LCA2NTE0NCwgODI5NjMsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjE0NDcsIAorICAgIDQzNTY0LCAwLCA5ODMxODIsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIAorICAgIDcxMjM1LCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDE5NDczMCwgMTI4MzMzLCAyNjUsIDQxNzk1LCA2NDY2NiwgNzQ2MjgsIAorICAgIDQzNTMwLCAyNzUyLCAxMjczNjUsIDEyODQ1OSwgMTI2NDgyLCA1OSwgOTgzNjcxLCAxMjE0MTAsIDExMTQ5LCA3ODA3NCwgCisgICAgNzc4NzMsIDQxODEwLCA4MzE2MiwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDU4NzcsIDQyMjUyLCA0MjIxMywgCisgICAgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDQzODQ4LCAxMzEyNywgMTIwMDY3LCA5ODM5NDYsIDc0Mzk3LCAKKyAgICAxMjAyMzUsIDEyODY0MSwgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgNzUwMTcsIDIxMDMsIDEwMzg3LCA0NDUzLCAKKyAgICA0MzI3NiwgOTE3NzgzLCAxMTE2OSwgMTI4OTM5LCA2NDgxLCA0MTIxMywgMCwgMCwgMTI5MTMzLCAxMTk5MjksIDQxOTgzLCAKKyAgICA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCA5Mjk5NSwgNDYyLCA2ODExMCwgMTA0OTMsIDEyMTQ0OSwgODEyOSwgOTI5OTQsIAorICAgIDEyODM2NSwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAKKyAgICAxMTkwMTMsIDQzMzQwLCAxMTEyMywgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAxMjkwNTEsIDExNDI2LCA3Nzg4NywgMTY4MSwgCisgICAgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIDAsIDQxODQxLCA0MzMzOCwgMCwgCisgICAgMTE5MzIzLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDk4MzkxMywgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIDI4NTEsIDQzMDE3LCAKKyAgICA5ODM1ODksIDEyMDg5NiwgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIAorICAgIDkxNzU4OSwgOTIzNjUsIDEyODIwMiwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCA4MzE0MSwgNjUwNiwgNjQzMTIsIAorICAgIDc0Mzc0LCAyMzY4LCA5ODMxODcsIDQ0MTksIDEyMTI1OSwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIAorICAgIDg4OTEsIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMTIwMTA3LCA4OTkwLCAyODQ4LCA5Mjk4MSwgMTIxMzcyLCA3Mzk0MiwgCisgICAgMjQ5LCAwLCAwLCAwLCAxMjA2NTgsIDExOTMyNCwgMTI4NzEyLCA4ODgzLCAxMTk4NjAsIDcyOCwgMTExNzMsIDk5NSwgMCwgCisgICAgMTIxMDQ3LCA2NDgyNiwgMTI0OTMxLCA5MTc3OTgsIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIAorICAgIDE5NDgxNCwgNjc3MTQsIDEyMTEyLCA2NzI3MiwgNjcyNjUsIDY3MjczLCA2NzI3NCwgMTIzMzUsIDEyMDEwNCwgNjgwMTksIAorICAgIDM0NDMsIDMxMjksIDY3MjY3LCAyMTAyLCA2NTQ0NSwgNzgyNTgsIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgMTExMjAsIAorICAgIDkyMDUsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDEyODUxOSwgNDE4OTQsIDAsIDYyNzcsIDQxNjcyLCA0MTg5MywgCisgICAgMTAwMTAsIDEyNzM4MSwgMzU0MCwgMTIxNDUwLCA4MzUsIDcxMzQwLCA2OTgxNiwgMTE5ODU0LCA3NDQwOCwgMCwgNjcxMDgsIAorICAgIDU0MjYsIDQyNTgsIDgzMTg4LCAxMjA4NTgsIDU0MjQsIDkyMzA2LCA4MjgzLCAxMjc5NzgsIDU0MzQsIDgzMTk2LCAKKyAgICAxMjkwMjcsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDEyODMzMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyMTEyMiwgMzQ2NCwgCisgICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAxMjkxMjMsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgCisgICAgMTI4NTM5LCA0MzEsIDY3ODIwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY2MywgMTMwOTYsIDEyODY0MywgCisgICAgMTIxMDE4LCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIAorICAgIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDU4NzgsIDk4Mzc5OSwgCisgICAgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgNjYwMzksIDExMzc3NywgNzgxNTcsIDkyNzIzLCAzNTQ5LCAxOTUwNjcsIDkxMTAsIAorICAgIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDEyODU4NSwgOTA5NywgMTk1MDI2LCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCAKKyAgICA0MjcwNywgODU3MywgMTIwOTAzLCAxMjY0OTQsIDAsIDcxMTAyLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgCisgICAgMTI1MTExLCA1ODcyLCA2NDk1LCAxMjkxMjUsIDAsIDAsIDkyNTQzLCA2NzE3MywgNjcxNzIsIDEyODQ5LCAzOTUzLCAxODk3LCAKKyAgICA5MzA3MSwgNjUwOTQsIDExOTk0LCA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAwLCAwLCAxMTkwODcsIDY4NDczLCAKKyAgICA3NDEwNCwgNTIyOCwgMTE5ODM1LCA3ODY4LCA0MzE4NCwgMCwgMTIwOTU1LCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAKKyAgICA5MTc1NTMsIDExNjIsIDc0OTk1LCAyNjcxLCAxMjg1NjcsIDEyNzE5OCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIAorICAgIDczODExLCA5ODM1NzMsIDE5NTAwNSwgMTE4OTI4LCA2ODA4NSwgMTk5MjEsIDczODIxLCAxMTQyNCwgMTk1MDAyLCA0NTY3LCAKKyAgICA0MTg5MSwgMCwgOTgzNzg4LCA1NTI0OSwgNDgyMCwgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAKKyAgICAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIDcwMjcyLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgMTEzMzEsIDYxNDcsIAorICAgIDE5NDk0MSwgNDMyODIsIDg4MzMsIDY5OTk4LCAwLCA2NTA0LCA3ODQwOCwgMTIxMTY2LCAxMDcxOSwgNzAyNzUsIDE4OTgsIAorICAgIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAxMjExMzgsIDgzMDk3LCA2NjQ4LCAxMDY3MSwgMjUyOCwgMCwgNjQ3ODksIAorICAgIDkxNjksIDgzOCwgNjg4MTksIDY4ODA3LCA4NDQsIDUwMTQsIDY2Mjk3LCAyNTYsIDY4ODE4LCA5OTkwLCAxMjgzOTgsIAorICAgIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCA4MzIyNCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgCisgICAgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDEyMTMxNCwgODMyMjYsIDQxMDk0LCAwLCA3Nzk1OCwgMTk0ODkzLCAKKyAgICA3ODQwMywgOTI2ODksIDYxOTYsIDY5NDUsIDkzOTY5LCAxMjA5NDIsIDY3MDk1LCAxMjA0OTEsIDExODE2LCA2ODg0NiwgCisgICAgNTczMywgMjkzMCwgNzAyNzQsIDEyNzE3OSwgNDEwOTgsIDkyNzcxLCA0MTA5MywgNjg4MzQsIDY2NjI2LCA1ODgsIDk3NjAsIAorICAgIDEyNTA5OSwgMTk0NzE3LCAxMjM4LCAyMDAsIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDY3MTQxLCA3NDM2MiwgMCwgCisgICAgOTI0ODUsIDEyNDkzMCwgMCwgNzQ5OTksIDMzOTQsIDE5NDg5NCwgMTIwNjY4LCAwLCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgCisgICAgNzI0MjUsIDQzMjg0LCA2ODA3MiwgNzgxNywgMTg0MSwgMTEwNTUsIDY2ODM1LCAxOTQ5NzksIDc0NjA3LCAxNjY5LCAKKyAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk4MCwgOTgzNDUwLCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKKyAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCA5ODM4NDUsIAorICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAxMjEyMTcsIAorICAgIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgNzAxMjMsIAorICAgIDY1MzE3LCA3Nzg4MCwgMCwgNTg3NiwgNzAzNzQsIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgNzE4NjIsIAorICAgIDAsIDEyNzk1NywgMTE5NjIxLCAxMTExNCwgNzE5MDksIDEyNDQ3LCA2NDQ4NiwgMTIxMjM2LCAxMjY1NjIsIDk4MzEyOSwgMCwgCisgICAgMTIxMzkzLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgOTgzMTc0LCAxMjAwNywgNDM2OTUsIDY4MDMzLCAxMTk3NSwgMTk0ODc4LCAKKyAgICAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIDQzNzA2LCA0NDk2LCAxOTQ4NzksIDgzMTA4LCAKKyAgICAxMjAyNDEsIDEyODE2NCwgMCwgMCwgOTgzNTUzLCA2NDczMCwgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIAorICAgIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCAKKyAgICA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgOTgzNzMwLCA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAKKyAgICAxMjU0MywgMCwgMTQ3MywgNDI4MjAsIDY0MzI5LCAxMjA4ODAsIDY3MjQzLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCAKKyAgICA0MTEwMCwgNzI0MTcsIDQxMTA0LCA5NDAwMywgMzQwNiwgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCA5ODMzODUsIDQ0MzQsIAorICAgIDEwNjksIDE5NDc4NCwgMTE4ODYyLCA2NTczNywgMTIxMjAyLCAxMjg3MDUsIDAsIDgzMjExLCA5NjkzLCA0MTk0MywgCisgICAgNjgzMDUsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDk4MzM1MywgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCAKKyAgICA5MTc3NzAsIDY1OTM3LCA3ODU3MiwgNDE3NTgsIDEwNjQ2LCAxMjExNTksIDExODgzMywgOTIzNzIsIDcwNDI0LCA3NDgzMCwgCisgICAgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCAKKyAgICA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIAorICAgIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAKKyAgICAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAxMjcwOTMsIDEyNzk3LCAyNzU1LCAKKyAgICA2NDU3MSwgNzg1NzgsIDE5NDkyNywgNDg1NywgOTgzNTc3LCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIAorICAgIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgCisgICAgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIDEyOTQxMiwgMTI3OTgsIDExMjcxLCA1NywgOTI3MTcsIDgzNDk1LCA5MTc4NjAsIAorICAgIDExOTA0MywgOTE3NjE4LCA5NDA1MSwgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAwLCAxMTkxNjgsIDAsIDcwMzkyLCAKKyAgICA2NDUzNywgMTI3OTE0LCAyNzcsIDc0Mzg1LCA3MjI5LCAxMjc2MSwgOTgzMTQ1LCA3NDQ2NiwgMTMwMjUsIDY0ODExLCAKKyAgICA4NzU3LCA3ODgyNCwgNzgxODgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIAorICAgIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMjkxNTYsIDY5NzI1LCA5MDU1LCAKKyAgICA0MTg1MywgNDg1OCwgNzUwMDAsIDkxNzk5MCwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCAKKyAgICA5MjUwMCwgMTE5NjA5LCA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIAorICAgIDY4MDg0LCA5ODMzNjEsIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc5MTYsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIAorICAgIDQyMTU3LCAwLCAzMTU3LCAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgCisgICAgMTAyMjYsIDY1MTQyLCAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxMjQ5OTMsIDQwLCAxMjY1NywgOTgzNjY1LCAwLCAzODYsIAorICAgIDEyMTQ2NywgODgzNCwgMTIwOTc0LCAxMjgxNSwgNDM1NzQsIDEyMTQzMCwgNzM5MDcsIDEyNzc5MiwgNzAxMTMsIDcyMjAsIAorICAgIDExODM5LCAxMjExNDMsIDc0MzE2LCAxOTQ3NTIsIDY1MzIyLCA0MzA0LCA3NDUwMywgODE2MCwgNzQzMTQsIDE5NDc1MywgCisgICAgMTIxMjc2LCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAKKyAgICAxMjg0NzQsIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCAxMjcxMTAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIAorICAgIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCA2ODc0NSwgMjY3MiwgCisgICAgMzczNSwgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIAorICAgIDEyODM3MywgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCisgICAgMTE5MzQ0LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDY2NzIxLCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAorICAgIDcwMDA2LCAxOTQ2OTAsIDEyNzUzNywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgCisgICAgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDEyMTAyMSwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCA1NDM3LCAKKyAgICA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCA5ODM3NzYsIDE5OSwgNjgwNzUsIDQxMDUsIDE5NDg0NSwgCisgICAgMTI3OTQyLCA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTk1MDcwLCAKKyAgICA2NDcyLCA2NTgxNCwgNzE5MTksIDEyMTIxOCwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIAorICAgIDEyMDI3MCwgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDAsIDY2ODAsIDE5NTA0MiwgOTgzNDI1LCAKKyAgICA3MTg3MiwgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzg1OTEsIAorICAgIDExMzczMywgMTk0Njc5LCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAKKyAgICAxMjgyNTIsIDQzODc0LCA2NTQ0MiwgNjgwNDcsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTEzMjEsIAorICAgIDEyODg0NSwgMTIwODA5LCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIAorICAgIDkyNDQ0LCAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAKKyAgICAxNjc3LCA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgCisgICAgMTAxNjAsIDAsIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCAKKyAgICA2NDkxNiwgNjQ3MzYsIDExODgzNSwgMCwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgCisgICAgOTgzMjMxLCA2NTI2NSwgMTk0NjM5LCAxMjEwODAsIDEyNzE3MCwgMTI3MDQxLCAxMjgwMDYsIDkyNTUwLCA5ODMxODYsIAorICAgIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDgzMjMxLCA3MjM4OSwgCisgICAgODMwNzksIDUwNiwgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAxMjE0MDcsIAorICAgIDg4NDEsIDk4Mzc0NywgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCAKKyAgICA3NDMzMywgMTIwMTgyLCAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgCisgICAgNjU4NCwgNzc0OSwgMTEwMzcsIDEyODc0MywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIAorICAgIDE5MzUsIDExNTE3LCAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgCisgICAgNjQ3MDIsIDEyNjQzLCA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgCisgICAgNzg4MzMsIDEyNjMxLCA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgCisgICAgMTk0ODAzLCAzNDAzLCA5ODM2NTUsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgCisgICAgMTE5OTgzLCA5MTUyLCA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIAorICAgIDE1OTQsIDQyMTkyLCA2OTE0LCA2NjM5MiwgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgCisgICAgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIDEyNjY4LCA3MjM5NSwgCisgICAgMjQ3NywgMTI3Mjg1LCAxMjEyNDksIDExODg4MCwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgyLCAKKyAgICAxMjA1NDMsIDExNDE3LCA5MjY2MSwgMTE5ODE0LCAxMTkzMDksIDY3NTk5LCAwLCA3MjQxMCwgNjc2MDcsIDExNDgyLCAwLCAKKyAgICAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKKyAgICA0MjE5NSwgNzQ0NzcsIDExOTk5NywgMTI3MTc4LCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAxMjEzNjYsIDQyNzg4LCA2ODQxNiwgCisgICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAwLCA5OTcsIDAsIDAsIDkyNTc3LCAKKyAgICAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgNzIzOTAsIDAsIAorICAgIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgOTgzMjc4LCA0MTcyLCA3MTI1MiwgMTE5OTkyLCAKKyAgICA4MzczLCAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgNjk3MDYsIDEyODU0MCwgNjgzNCwgNzQzNDcsIAorICAgIDc0OTU4LCAxMjkwMzMsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDE5NDU5OCwgCisgICAgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgODMyNTQsIDcxODYxLCA5ODM5NTAsIDc0NTIyLCAKKyAgICA0MTk4OSwgMTIxMzE3LCAwLCAxMTM3NjksIDMyNjMsIDkxNzkyMiwgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIAorICAgIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAxMjg0OTgsIDc1NiwgMTk0NjA1LCAwLCAwLCAxOTQ2MjEsIAorICAgIDcyNjEsIDkyNTQ3LCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKKyAgICAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCAKKyAgICA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCAKKyAgICA2ODMxMCwgNjQ1MjEsIDU2MjQsIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCAKKyAgICA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIAorICAgIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM3NzEsIDkyNTI2LCA0NTExLCAxMjA5NTgsIDk4Mzg3NywgNjQ2NzgsIDExNDI1LCAKKyAgICAwLCA0MzI0NSwgMTIzMSwgNjg4NjEsIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgCisgICAgOTU0NiwgMCwgMTI4MzMyLCA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIAorICAgIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCAKKyAgICA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIDAsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIAorICAgIDEwNzU2LCA2NDA0NywgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgCisgICAgMTAzNCwgMzM5MiwgODMzMzYsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCAKKyAgICA2NDAzNSwgNDI5MSwgMTI5MTU3LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCA4MzM5NCwgODMzOTUsIDc4MTQ1LCA3MTg5OCwgCisgICAgNDMwOTAsIDgzMzkxLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIAorICAgIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIAorICAgIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgCisgICAgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIAorICAgIDQxMzMzLCA4MzI1OSwgODQ4OSwgMTk0MiwgOTE3OTIxLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgCisgICAgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgCisgICAgNzgyNDQsIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMjEzNjEsIDc1ODIsIAorICAgIDc4MjUyLCA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCAKKyAgICA3NzkyMCwgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIAorICAgIDc0NDU0LCAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIAorICAgIDY0MDMxLCA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgCisgICAgODMzODAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgNjM0MywgNDMyNDcsIDExOTg4OCwgCisgICAgNzAxNTMsIDExOTg4NiwgMTE5ODkxLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAxMTk4OTYsIDE5NDY1NSwgCisgICAgNzgwMSwgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIAorICAgIDgzMzUyLCAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAorICAgIDc4NDk2LCA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIAorICAgIDgzMzYyLCA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAKKyAgICAxMTk5MDgsIDkxMzcsIDcxNTUsIDg5OTksIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDAsIDEyMTQ2NiwgMTk5NiwgMCwgMzQ1MywgCisgICAgNjI4MiwgMCwgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAKKyAgICAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgOTgzMjQ4LCAxMjAwMDEsIAorICAgIDEyMDIwMSwgOTgzNjQ2LCAxMjQ5NzUsIDEyNzk1MiwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgNDM0OTEsIDkyNjkzLCAwLCAKKyAgICAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgMCwgNzgxNjIsIAorICAgIDExOTU1OCwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgMzI5NiwgCisgICAgMTI4NjUsIDE5OTcsIDE4OTUsIAogfTsKIAogI2RlZmluZSBjb2RlX21hZ2ljIDQ3CkBAIC0xOTgzOSw3ICsyMzI2NSw3IEBACiAjZGVmaW5lIGNvZGVfcG9seSAzMjc3MQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfc3RhcnQgPSAweGYwMDAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9IDB4ZjAxYzk7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gMHhmMDFjYjsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7CiAgICAgMHgwMDAwLAogICAgIDB4MDAwMCwKQEAgLTIwMDM0LDYgKzIzNDYwLDggQEAKICAgICAweDIxMTgsCiAgICAgMHgyNDQ4LAogICAgIDB4MjQ0OSwKKyAgICAweDJCN0EsCisgICAgMHgyQjdDLAogICAgIDB4QTAxNSwKICAgICAweEZFMTgsCiAgICAgMHhGRTAwLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy93aW5yZXBhcnNlLmggYi9Nb2R1bGVzL3dpbnJlcGFyc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmY3Nzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKQEAgLTAsMCArMSw1MyBAQAorI2lmbmRlZiBQeV9XSU5SRVBBUlNFX0gKKyNkZWZpbmUgUHlfV0lOUkVQQVJTRV9ICisKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSA8V2luZG93cy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHdhcyBjb3BpZWQgZnJvbQorICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2ZmNTUyMDEyLmFzcHggYXMgdGhlIHJlcXVpcmVkCisgICBpbmNsdWRlIGRvZXNuJ3Qgc2VlbSB0byBiZSBwcmVzZW50IGluIHRoZSBXaW5kb3dzIFNESyAoYXQgbGVhc3QgYXMgaW5jbHVkZWQKKyAgIHdpdGggVmlzdWFsIFN0dWRpbyBFeHByZXNzKS4gKi8KK3R5cGVkZWYgc3RydWN0IF9SRVBBUlNFX0RBVEFfQlVGRkVSIHsKKyAgICBVTE9ORyBSZXBhcnNlVGFnOworICAgIFVTSE9SVCBSZXBhcnNlRGF0YUxlbmd0aDsKKyAgICBVU0hPUlQgUmVzZXJ2ZWQ7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVVNIT1JUIFN1YnN0aXR1dGVOYW1lT2Zmc2V0OworICAgICAgICAgICAgVVNIT1JUIFN1YnN0aXR1dGVOYW1lTGVuZ3RoOworICAgICAgICAgICAgVVNIT1JUIFByaW50TmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVMZW5ndGg7CisgICAgICAgICAgICBVTE9ORyBGbGFnczsKKyAgICAgICAgICAgIFdDSEFSIFBhdGhCdWZmZXJbMV07CisgICAgICAgIH0gU3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlcjsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVVNIT1JUIFN1YnN0aXR1dGVOYW1lT2Zmc2V0OworICAgICAgICAgICAgVVNIT1JUICBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKKyAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lT2Zmc2V0OworICAgICAgICAgICAgVVNIT1JUICBQcmludE5hbWVMZW5ndGg7CisgICAgICAgICAgICBXQ0hBUiAgUGF0aEJ1ZmZlclsxXTsKKyAgICAgICAgfSBNb3VudFBvaW50UmVwYXJzZUJ1ZmZlcjsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgVUNIQVIgIERhdGFCdWZmZXJbMV07CisgICAgICAgIH0gR2VuZXJpY1JlcGFyc2VCdWZmZXI7CisgICAgfTsKK30gUkVQQVJTRV9EQVRBX0JVRkZFUiwgKlBSRVBBUlNFX0RBVEFfQlVGRkVSOworCisjZGVmaW5lIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgIEZJRUxEX09GRlNFVChSRVBBUlNFX0RBVEFfQlVGRkVSLFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQorI2RlZmluZSBNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisjZW5kaWYgLyogIVB5X1dJTlJFUEFSU0VfSCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eGxpbWl0ZWQuYyBiL01vZHVsZXMveHhsaW1pdGVkLmMKaW5kZXggZWVjZGFiOS4uNDBjMTc2MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eGxpbWl0ZWQuYworKysgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCkBAIC00MCwxMSArNDAsMTggQEAKIAogLyogWHhvIG1ldGhvZHMgKi8KIAotc3RhdGljIHZvaWQKLVh4b19kZWFsbG9jKFh4b09iamVjdCAqc2VsZikKK3N0YXRpYyBpbnQKK1h4b190cmF2ZXJzZShYeG9PYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X1hERUNSRUYoc2VsZi0+eF9hdHRyKTsKLSAgICAoKGZyZWVmdW5jKVB5VHlwZV9HZXRTbG90KFB5X1RZUEUoc2VsZiksIFB5X3RwX2ZyZWUpKShzZWxmKTsKKyAgICBQeV9WSVNJVChzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitYeG9fZmluYWxpemUoWHhvT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPnhfYXR0cik7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMDIsNyArMTA5LDggQEAKIAogc3RhdGljIFB5VHlwZV9TbG90IFh4b19UeXBlX3Nsb3RzW10gPSB7CiAgICAge1B5X3RwX2RvYywgIlRoZSBYeG8gdHlwZSJ9LAotICAgIHtQeV90cF9kZWFsbG9jLCBYeG9fZGVhbGxvY30sCisgICAge1B5X3RwX3RyYXZlcnNlLCBYeG9fdHJhdmVyc2V9LAorICAgIHtQeV90cF9maW5hbGl6ZSwgWHhvX2ZpbmFsaXplfSwKICAgICB7UHlfdHBfZ2V0YXR0cm8sIFh4b19nZXRhdHRyb30sCiAgICAge1B5X3RwX3NldGF0dHIsIFh4b19zZXRhdHRyfSwKICAgICB7UHlfdHBfbWV0aG9kcywgWHhvX21ldGhvZHN9LApAQCAtMTEzLDcgKzEyMSw3IEBACiAgICAgInh4bGltaXRlZC5YeG8iLAogICAgIHNpemVvZihYeG9PYmplY3QpLAogICAgIDAsCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwKICAgICBYeG9fVHlwZV9zbG90cwogfTsKIApAQCAtMTY5LDcgKzE3Nyw3IEBACiAKIC8qIC0tLS0tLS0tLS0gKi8KIAotc3RhdGljIFB5VHlwZV9TbG90IFN0cl9UeXBlX3Nsb3RzW10gPSB7ICAgIAorc3RhdGljIFB5VHlwZV9TbG90IFN0cl9UeXBlX3Nsb3RzW10gPSB7CiAgICAge1B5X3RwX2Jhc2UsIE5VTEx9LCAvKiBmaWxsZWQgb3V0IGluIG1vZHVsZSBpbml0IGZ1bmN0aW9uICovCiAgICAgezAsIDB9LAogfTsKQEAgLTIyMiwyNSArMjMwLDkgQEAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIlRoaXMgaXMgYSB0ZW1wbGF0ZSBtb2R1bGUganVzdCBmb3IgaW5zdHJ1Y3Rpb24uIik7CiAKLS8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF94eCkgKi8KLQotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4bW9kdWxlID0gewotICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAieHhsaW1pdGVkIiwKLSAgICBtb2R1bGVfZG9jLAotICAgIC0xLAotICAgIHh4X21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF94eGxpbWl0ZWQodm9pZCkKK3N0YXRpYyBpbnQKK3h4X21vZGV4ZWMoUHlPYmplY3QgKm0pCiB7Ci0gICAgUHlPYmplY3QgKm0gPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvOwogCiAgICAgLyogRHVlIHRvIGNyb3NzIHBsYXRmb3JtIGNvbXBpbGVyIGlzc3VlcyB0aGUgc2xvdHMgbXVzdCBiZSBmaWxsZWQKQEAgLTI1NCwxMSArMjQ2LDYgQEAKICAgICBpZiAoWHhvX1R5cGUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQ3JlYXRlIHRoZSBtb2R1bGUgYW5kIGFkZCB0aGUgZnVuY3Rpb25zICovCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmeHhtb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgaWYgKEVycm9yT2JqZWN0ID09IE5VTEwpIHsKICAgICAgICAgRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInh4bGltaXRlZC5lcnJvciIsIE5VTEwsIE5VTEwpOwpAQCAtMjY4LDYgKzI1NSwxMiBAQAogICAgIFB5X0lOQ1JFRihFcnJvck9iamVjdCk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIEVycm9yT2JqZWN0KTsKIAorICAgIC8qIEFkZCBYeG8gKi8KKyAgICBvID0gUHlUeXBlX0Zyb21TcGVjKCZYeG9fVHlwZV9zcGVjKTsKKyAgICBpZiAobyA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJYeG8iLCBvKTsKKwogICAgIC8qIEFkZCBTdHIgKi8KICAgICBvID0gUHlUeXBlX0Zyb21TcGVjKCZTdHJfVHlwZV9zcGVjKTsKICAgICBpZiAobyA9PSBOVUxMKQpAQCAtMjc5LDggKzI3MiwzNCBAQAogICAgIGlmIChvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk51bGwiLCBvKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gMDsKICBmYWlsOgogICAgIFB5X1hERUNSRUYobSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIC0xOworfQorCisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHh4X3Nsb3RzW10gPSB7CisgICAge1B5X21vZF9leGVjLCB4eF9tb2RleGVjfSwKKyAgICB7MCwgTlVMTH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgeHhtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJ4eGxpbWl0ZWQiLAorICAgIG1vZHVsZV9kb2MsCisgICAgMCwKKyAgICB4eF9tZXRob2RzLAorICAgIHh4X3Nsb3RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisvKiBFeHBvcnQgZnVuY3Rpb24gZm9yIHRoZSBtb2R1bGUgKCptdXN0KiBiZSBjYWxsZWQgUHlJbml0X3h4KSAqLworCitQeU1PRElOSVRfRlVOQworUHlJbml0X3h4bGltaXRlZCh2b2lkKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ4eG1vZHVsZSk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bW9kdWxlLmMgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKaW5kZXggMGZlZmY2Ni4uODUyMzBkOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eG1vZHVsZS5jCisrKyBiL01vZHVsZXMveHhtb2R1bGUuYwpAQCAtMzM0LDI2ICszMzQsMTAgQEAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIlRoaXMgaXMgYSB0ZW1wbGF0ZSBtb2R1bGUganVzdCBmb3IgaW5zdHJ1Y3Rpb24uIik7CiAKLS8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF94eCkgKi8KIAotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4bW9kdWxlID0gewotICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAieHgiLAotICAgIG1vZHVsZV9kb2MsCi0gICAgLTEsCi0gICAgeHhfbWV0aG9kcywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X3h4KHZvaWQpCitzdGF0aWMgaW50Cit4eF9leGVjKFB5T2JqZWN0ICptKQogewotICAgIFB5T2JqZWN0ICptID0gTlVMTDsKLQogICAgIC8qIER1ZSB0byBjcm9zcyBwbGF0Zm9ybSBjb21waWxlciBpc3N1ZXMgdGhlIHNsb3RzIG11c3QgYmUgZmlsbGVkCiAgICAgICogaGVyZS4gSXQncyByZXF1aXJlZCBmb3IgcG9ydGFiaWxpdHkgdG8gV2luZG93cyB3aXRob3V0IHJlcXVpcmluZwogICAgICAqIEMrKy4gKi8KQEAgLTM2NiwxMSArMzUwLDYgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZYeG9fVHlwZSkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICAvKiBDcmVhdGUgdGhlIG1vZHVsZSBhbmQgYWRkIHRoZSBmdW5jdGlvbnMgKi8KLSAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ4eG1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCiAgICAgLyogQWRkIHNvbWUgc3ltYm9saWMgY29uc3RhbnRzIHRvIHRoZSBtb2R1bGUgKi8KICAgICBpZiAoRXJyb3JPYmplY3QgPT0gTlVMTCkgewogICAgICAgICBFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbigieHguZXJyb3IiLCBOVUxMLCBOVUxMKTsKQEAgLTM4OSw4ICszNjgsMzMgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZOdWxsX1R5cGUpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTnVsbCIsIChQeU9iamVjdCAqKSZOdWxsX1R5cGUpOwotICAgIHJldHVybiBtOworICAgIHJldHVybiAwOwogIGZhaWw6CiAgICAgUHlfWERFQ1JFRihtKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWZfU2xvdCB4eF9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgeHhfZXhlY30sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgInh4IiwKKyAgICBtb2R1bGVfZG9jLAorICAgIDAsCisgICAgeHhfbWV0aG9kcywKKyAgICB4eF9zbG90cywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworLyogRXhwb3J0IGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF94eCkgKi8KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF94eCh2b2lkKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ4eG1vZHVsZSk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4c3VidHlwZS5jIGIvTW9kdWxlcy94eHN1YnR5cGUuYwppbmRleCA2OTQ0ZTM3Li44ZDBkNmFlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4c3VidHlwZS5jCisrKyBiL01vZHVsZXMveHhzdWJ0eXBlLmMKQEAgLTI1NywxMyArMjU3LDUwIEBACiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBpbnQKK3h4c3VidHlwZV9leGVjKFB5T2JqZWN0KiBtKQoreworICAgIC8qIEZpbGwgaW4gZGVmZXJyZWQgZGF0YSBhZGRyZXNzZXMuICBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUKKyAgICAgICBQeVR5cGVfUmVhZHkoKSBpcyBjYWxsZWQuICBOb3RlIHRoYXQgUHlUeXBlX1JlYWR5KCkgYXV0b21hdGljYWxseQorICAgICAgIGluaXRpYWxpemVzIHRoZSBvYi5vYl90eXBlIGZpZWxkIHRvICZQeVR5cGVfVHlwZSBpZiBpdCdzIE5VTEwsCisgICAgICAgc28gaXQncyBub3QgbmVjZXNzYXJ5IHRvIGZpbGwgaW4gb2JfdHlwZSBmaXJzdC4gKi8KKyAgICBzcGFtZGljdF90eXBlLnRwX2Jhc2UgPSAmUHlEaWN0X1R5cGU7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzcGFtbGlzdF90eXBlLnRwX2Jhc2UgPSAmUHlMaXN0X1R5cGU7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcGFtbGlzdF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcGFtZGljdF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0lOQ1JFRigmc3BhbWxpc3RfdHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3BhbWxpc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopICZzcGFtbGlzdF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0lOQ1JFRigmc3BhbWRpY3RfdHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3BhbWRpY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopICZzcGFtZGljdF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZl9TbG90IHh4c3VidHlwZV9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgeHhzdWJ0eXBlX2V4ZWN9LAorICAgIHswLCBOVUxMfSwKK307CisKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgeHhzdWJ0eXBlbW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAieHhzdWJ0eXBlIiwKICAgICB4eHN1YnR5cGVfX2RvY19fLAotICAgIC0xLAorICAgIDAsCiAgICAgeHhzdWJ0eXBlX2Z1bmN0aW9ucywKLSAgICBOVUxMLAorICAgIHh4c3VidHlwZV9zbG90cywKICAgICBOVUxMLAogICAgIE5VTEwsCiAgICAgTlVMTApAQCAtMjczLDM3ICszMTAsNSBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF94eHN1YnR5cGUodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIC8qIEZpbGwgaW4gZGVmZXJyZWQgZGF0YSBhZGRyZXNzZXMuICBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUKLSAgICAgICBQeVR5cGVfUmVhZHkoKSBpcyBjYWxsZWQuICBOb3RlIHRoYXQgUHlUeXBlX1JlYWR5KCkgYXV0b21hdGljYWxseQotICAgICAgIGluaXRpYWxpemVzIHRoZSBvYi5vYl90eXBlIGZpZWxkIHRvICZQeVR5cGVfVHlwZSBpZiBpdCdzIE5VTEwsCi0gICAgICAgc28gaXQncyBub3QgbmVjZXNzYXJ5IHRvIGZpbGwgaW4gb2JfdHlwZSBmaXJzdC4gKi8KLSAgICBzcGFtZGljdF90eXBlLnRwX2Jhc2UgPSAmUHlEaWN0X1R5cGU7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWRpY3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNwYW1saXN0X3R5cGUudHBfYmFzZSA9ICZQeUxpc3RfVHlwZTsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcGFtbGlzdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmeHhzdWJ0eXBlbW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1saXN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWRpY3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRigmc3BhbWxpc3RfdHlwZSk7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3BhbWxpc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopICZzcGFtbGlzdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKCZzcGFtZGljdF90eXBlKTsKLSAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzcGFtZGljdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikgJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJnh4c3VidHlwZW1vZHVsZSk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3ppcGltcG9ydC5jIGIvTW9kdWxlcy96aXBpbXBvcnQuYwppbmRleCBmMmNjMjQ1Li4wNmFiYjMxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3ppcGltcG9ydC5jCisrKyBiL01vZHVsZXMvemlwaW1wb3J0LmMKQEAgLTIwLDE1ICsyMCwxMyBAQAogCiAvKiB6aXBfc2VhcmNob3JkZXIgZGVmaW5lcyBob3cgd2Ugc2VhcmNoIGZvciBhIG1vZHVsZSBpbiB0aGUgWmlwCiAgICBhcmNoaXZlOiB3ZSBmaXJzdCBzZWFyY2ggZm9yIGEgcGFja2FnZSBfX2luaXRfXywgdGhlbiBmb3IKLSAgIG5vbi1wYWNrYWdlIC5weWMsIC5weW8gYW5kIC5weSBlbnRyaWVzLiBUaGUgLnB5YyBhbmQgLnB5byBlbnRyaWVzCisgICBub24tcGFja2FnZSAucHljLCBhbmQgLnB5IGVudHJpZXMuIFRoZSAucHljIGVudHJpZXMKICAgIGFyZSBzd2FwcGVkIGJ5IGluaXR6aXBpbXBvcnQoKSBpZiB3ZSBydW4gaW4gb3B0aW1pemVkIG1vZGUuIEFsc28sCiAgICAnLycgaXMgcmVwbGFjZWQgYnkgU0VQIHRoZXJlLiAqLwogc3RhdGljIHN0cnVjdCBzdF96aXBfc2VhcmNob3JkZXIgemlwX3NlYXJjaG9yZGVyW10gPSB7CiAgICAgeyIvX19pbml0X18ucHljIiwgSVNfUEFDS0FHRSB8IElTX0JZVEVDT0RFfSwKLSAgICB7Ii9fX2luaXRfXy5weW8iLCBJU19QQUNLQUdFIHwgSVNfQllURUNPREV9LAogICAgIHsiL19faW5pdF9fLnB5IiwgSVNfUEFDS0FHRSB8IElTX1NPVVJDRX0sCiAgICAgeyIucHljIiwgSVNfQllURUNPREV9LAotICAgIHsiLnB5byIsIElTX0JZVEVDT0RFfSwKICAgICB7Ii5weSIsIElTX1NPVVJDRX0sCiAgICAgeyIiLCAwfQogfTsKQEAgLTg3NSw4ICs4NzMsMTIgQEAKIAogICAgIGZwID0gX1B5X2ZvcGVuX29iaihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX09TRXJyb3IpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKKyAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTkzOSw2ICs5NDEsOSBAQAogICAgICAgICBoZWFkZXJfc2l6ZSA9IG5hbWVfc2l6ZSArCiAgICAgICAgICAgIFB5TWFyc2hhbF9SZWFkU2hvcnRGcm9tRmlsZShmcCkgKwogICAgICAgICAgICBQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgaWYgKGZyZWFkKGR1bW15LCAxLCA4LCBmcCkgIT0gOCkgLyogU2tpcCB1bnVzZWQgZmllbGRzLCBhdm9pZCBmc2VlayAqLwogICAgICAgICAgICAgZ290byBmaWxlX2Vycm9yOwogICAgICAgICBmaWxlX29mZnNldCA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKSArIGFyY19vZmZzZXQ7CkBAIC0xMDczLDEyICsxMDc4LDggQEAKICAgICB9CiAKICAgICBmcCA9IF9QeV9mb3Blbl9vYmooYXJjaGl2ZSwgInJiIik7Ci0gICAgaWYgKCFmcCkgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICJ6aXBpbXBvcnQ6IGNhbiBub3Qgb3BlbiBmaWxlICVVIiwgYXJjaGl2ZSk7CisgICAgaWYgKCFmcCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgLyogQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBsb2NhbCBmaWxlIGhlYWRlciBpcyBjb3JyZWN0ICovCiAgICAgaWYgKGZzZWVrKGZwLCBmaWxlX29mZnNldCwgMCkgPT0gLTEpIHsKQEAgLTEzMTUsNyArMTMxNiw3IEBACiAgICAgcmV0dXJuIG1rdGltZSgmc3RtKTsKIH0KIAotLyogR2l2ZW4gYSBwYXRoIHRvIGEgLnB5YyBvciAucHlvIGZpbGUgaW4gdGhlIGFyY2hpdmUsIHJldHVybiB0aGUKKy8qIEdpdmVuIGEgcGF0aCB0byBhIC5weWMgZmlsZSBpbiB0aGUgYXJjaGl2ZSwgcmV0dXJuIHRoZQogICAgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIG1hdGNoaW5nIC5weSBmaWxlLCBvciAwIGlmIG5vIHNvdXJjZQogICAgaXMgYXZhaWxhYmxlLiAqLwogc3RhdGljIHRpbWVfdApAQCAtMTQ3OCwxNyArMTQ3OSw2IEBACiAgICAgLyogQ29ycmVjdCBkaXJlY3Rvcnkgc2VwYXJhdG9yICovCiAgICAgemlwX3NlYXJjaG9yZGVyWzBdLnN1ZmZpeFswXSA9IFNFUDsKICAgICB6aXBfc2VhcmNob3JkZXJbMV0uc3VmZml4WzBdID0gU0VQOwotICAgIHppcF9zZWFyY2hvcmRlclsyXS5zdWZmaXhbMF0gPSBTRVA7Ci0gICAgaWYgKFB5X09wdGltaXplRmxhZykgewotICAgICAgICAvKiBSZXZlcnNlICoucHljIGFuZCAqLnB5byAqLwotICAgICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyIHRtcDsKLSAgICAgICAgdG1wID0gemlwX3NlYXJjaG9yZGVyWzBdOwotICAgICAgICB6aXBfc2VhcmNob3JkZXJbMF0gPSB6aXBfc2VhcmNob3JkZXJbMV07Ci0gICAgICAgIHppcF9zZWFyY2hvcmRlclsxXSA9IHRtcDsKLSAgICAgICAgdG1wID0gemlwX3NlYXJjaG9yZGVyWzNdOwotICAgICAgICB6aXBfc2VhcmNob3JkZXJbM10gPSB6aXBfc2VhcmNob3JkZXJbNF07Ci0gICAgICAgIHppcF9zZWFyY2hvcmRlcls0XSA9IHRtcDsKLSAgICB9CiAKICAgICBtb2QgPSBQeU1vZHVsZV9DcmVhdGUoJnppcGltcG9ydG1vZHVsZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGlibW9kdWxlLmMgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwppbmRleCAwZDJlMTg4Li4xOTk3YjQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwpAQCAtODIsMTIgKzgyLDExIEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KLW91dHB1dCBwcmVzZXQgZmlsZQogbW9kdWxlIHpsaWIKIGNsYXNzIHpsaWIuQ29tcHJlc3MgImNvbXBvYmplY3QgKiIgIiZDb21wdHlwZSIKIGNsYXNzIHpsaWIuRGVjb21wcmVzcyAiY29tcG9iamVjdCAqIiAiJkRlY29tcHR5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iZmQ0YzM0MDU3M2JhOTFkXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0wOTM5MzUxMTVjM2UzMTU4XSovCiAKIHN0YXRpYyBjb21wb2JqZWN0ICoKIG5ld2NvbXBvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQpAQCAtMjgxLDggKzI4MCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywgdW5zaWduZWQgaW50IGJ1ZnNpemUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWU1NDY0ZTcyZGY5Y2I1ZiBpbnB1dD0wZjRiOWFiYjcxMDNmNTBlXSovCit6bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBidWZzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0NGQwOTg3ZjM0Mjk1NzQgaW5wdXQ9MGY0YjlhYmI3MTAzZjUwZV0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHRfc3RyID0gTlVMTDsKICAgICBCeXRlICppbnB1dDsKQEAgLTQxMSw4ICs0MTEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzc29ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLCBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OWU1YTZjMTQ0OWNhYTllIGlucHV0PWIwMzQ4NDdmODgyMWY2YWZdKi8KK3psaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTQ5YmJiOWE1NzIzY2NkIGlucHV0PWIwMzQ4NDdmODgyMWY2YWZdKi8KIHsKICAgICBjb21wb2JqZWN0ICpzZWxmID0gTlVMTDsKICAgICBpbnQgZXJyOwpAQCAtNzA0LDggKzcwNSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwgdW5zaWduZWQgaW50IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzU1Y2NjYzkwODdiZmU1NSBpbnB1dD0wMmNmYzA0NzM3N2NlYzg2XSovCit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heF9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjgyZTJhMmMxOWY1ZmU3YiBpbnB1dD0wMmNmYzA0NzM3N2NlYzg2XSovCiB7CiAgICAgaW50IGVycjsKICAgICB1bnNpZ25lZCBpbnQgb2xkX2xlbmd0aCwgbGVuZ3RoID0gREVGX0JVRl9TSVpFOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9SRUFETUUgYi9PYmplY3RzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTRiMTAzCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9SRUFETUUKQEAgLTAsMCArMSBAQAorU291cmNlIGZpbGVzIGZvciB2YXJpb3VzIGJ1aWx0aW4gb2JqZWN0cwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IGNhYmJhZjUuLjMxY2MwYTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTMwNSw3ICszMDUsNyBAQAogICAgICAgICBwYi0+YmZfZ2V0YnVmZmVyID09IE5VTEwgfHwKICAgICAgICAgKCgqcGItPmJmX2dldGJ1ZmZlcikob2JqLCAmdmlldywgUHlCVUZfV1JJVEFCTEUpICE9IDApKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gb2JqZWN0IHdpdGggYSB3cml0YWJsZSBidWZmZXIgaW50ZXJmYWNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSB3cml0YWJsZSBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0zMjQsNyArMzI0LDcgQEAKIAogICAgIGlmIChwYiA9PSBOVUxMIHx8IHBiLT5iZl9nZXRidWZmZXIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAgImEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnJS4xMDBzJyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzM3LDE2ICszMzcsMzUgQEAKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CiAKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICBpZiAodmlldy0+c3RyaWRlcyA9PSBOVUxMKSByZXR1cm4gKHZpZXctPm5kaW0gPT0gMSk7CisgICAgLyogMSkgbGVuID0gcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZQorICAgICAgIDIpIGl0ZW1zaXplID4gMAorICAgICAgIDMpIGxlbiA9IDAgPD09PiBleGlzdHMgaTogc2hhcGVbaV0gPSAwICovCisgICAgaWYgKHZpZXctPmxlbiA9PSAwKSByZXR1cm4gMTsKKyAgICBpZiAodmlldy0+c3RyaWRlcyA9PSBOVUxMKSB7ICAvKiBDLWNvbnRpZ3VvdXMgYnkgZGVmaW5pdGlvbiAqLworICAgICAgICAvKiBUcml2aWFsbHkgRi1jb250aWd1b3VzICovCisgICAgICAgIGlmICh2aWV3LT5uZGltIDw9IDEpIHJldHVybiAxOworCisgICAgICAgIC8qIG5kaW0gPiAxIGltcGxpZXMgc2hhcGUgIT0gTlVMTCAqLworICAgICAgICBhc3NlcnQodmlldy0+c2hhcGUgIT0gTlVMTCk7CisKKyAgICAgICAgLyogRWZmZWN0aXZlbHkgMS1kICovCisgICAgICAgIHNkID0gMDsKKyAgICAgICAgZm9yIChpPTA7IGk8dmlldy0+bmRpbTsgaSsrKSB7CisgICAgICAgICAgICBpZiAodmlldy0+c2hhcGVbaV0gPiAxKSBzZCArPSAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZCA8PSAxOworICAgIH0KKworICAgIC8qIHN0cmlkZXMgIT0gTlVMTCBpbXBsaWVzIGJvdGggb2YgdGhlc2UgKi8KKyAgICBhc3NlcnQodmlldy0+bmRpbSA+IDApOworICAgIGFzc2VydCh2aWV3LT5zaGFwZSAhPSBOVUxMKTsKIAogICAgIHNkID0gdmlldy0+aXRlbXNpemU7Ci0gICAgaWYgKHZpZXctPm5kaW0gPT0gMSkgcmV0dXJuICh2aWV3LT5zaGFwZVswXSA9PSAxIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2QgPT0gdmlldy0+c3RyaWRlc1swXSk7CiAgICAgZm9yIChpPTA7IGk8dmlldy0+bmRpbTsgaSsrKSB7CiAgICAgICAgIGRpbSA9IHZpZXctPnNoYXBlW2ldOwotICAgICAgICBpZiAoZGltID09IDApIHJldHVybiAxOwotICAgICAgICBpZiAodmlldy0+c3RyaWRlc1tpXSAhPSBzZCkgcmV0dXJuIDA7CisgICAgICAgIGlmIChkaW0gPiAxICYmIHZpZXctPnN0cmlkZXNbaV0gIT0gc2QpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIHNkICo9IGRpbTsKICAgICB9CiAgICAgcmV0dXJuIDE7CkBAIC0zNTgsMTYgKzM3NywyMiBAQAogICAgIFB5X3NzaXplX3Qgc2QsIGRpbTsKICAgICBpbnQgaTsKIAotICAgIGlmICh2aWV3LT5uZGltID09IDApIHJldHVybiAxOwotICAgIGlmICh2aWV3LT5zdHJpZGVzID09IE5VTEwpIHJldHVybiAxOworICAgIC8qIDEpIGxlbiA9IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUKKyAgICAgICAyKSBpdGVtc2l6ZSA+IDAKKyAgICAgICAzKSBsZW4gPSAwIDw9PT4gZXhpc3RzIGk6IHNoYXBlW2ldID0gMCAqLworICAgIGlmICh2aWV3LT5sZW4gPT0gMCkgcmV0dXJuIDE7CisgICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgcmV0dXJuIDE7IC8qIEMtY29udGlndW91cyBieSBkZWZpbml0aW9uICovCisKKyAgICAvKiBzdHJpZGVzICE9IE5VTEwgaW1wbGllcyBib3RoIG9mIHRoZXNlICovCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPiAwKTsKKyAgICBhc3NlcnQodmlldy0+c2hhcGUgIT0gTlVMTCk7CiAKICAgICBzZCA9IHZpZXctPml0ZW1zaXplOwotICAgIGlmICh2aWV3LT5uZGltID09IDEpIHJldHVybiAodmlldy0+c2hhcGVbMF0gPT0gMSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkID09IHZpZXctPnN0cmlkZXNbMF0pOwogICAgIGZvciAoaT12aWV3LT5uZGltLTE7IGk+PTA7IGktLSkgewogICAgICAgICBkaW0gPSB2aWV3LT5zaGFwZVtpXTsKLSAgICAgICAgaWYgKGRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICAgICAgaWYgKHZpZXctPnN0cmlkZXNbaV0gIT0gc2QpIHJldHVybiAwOworICAgICAgICBpZiAoZGltID4gMSAmJiB2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBzZCAqPSBkaW07CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtNDk5LDggKzUyNCw4IEBACiAgICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcihkZXN0KSB8fAogICAgICAgICAhUHlPYmplY3RfQ2hlY2tCdWZmZXIoc3JjKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImJvdGggZGVzdGluYXRpb24gYW5kIHNvdXJjZSBtdXN0IGhhdmUgdGhlICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgImJvdGggZGVzdGluYXRpb24gYW5kIHNvdXJjZSBtdXN0IGJlICJcCisgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMtbGlrZSBvYmplY3RzIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTU4Nyw3ICs2MTIsMTIgQEAKIFB5QnVmZmVyX0ZpbGxJbmZvKFB5X2J1ZmZlciAqdmlldywgUHlPYmplY3QgKm9iaiwgdm9pZCAqYnVmLCBQeV9zc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgIGludCByZWFkb25seSwgaW50IGZsYWdzKQogewotICAgIGlmICh2aWV3ID09IE5VTEwpIHJldHVybiAwOyAvKiBYWFggd2h5IG5vdCAtMT8gKi8KKyAgICBpZiAodmlldyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJQeUJ1ZmZlcl9GaWxsSW5mbzogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgaWYgKCgoZmxhZ3MgJiBQeUJVRl9XUklUQUJMRSkgPT0gUHlCVUZfV1JJVEFCTEUpICYmCiAgICAgICAgIChyZWFkb25seSA9PSAxKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCkBAIC02NjAsOCArNjkwLDkgQEAKICAgICBQeV9ERUNSRUYobWV0aCk7CiAKICAgICBpZiAocmVzdWx0ICYmICFQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIl9fZm9ybWF0X18gbWV0aG9kIGRpZCBub3QgcmV0dXJuIHN0cmluZyIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICJfX2Zvcm1hdF9fIG11c3QgcmV0dXJuIGEgc3RyLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gTlVMTDsKICAgICAgICAgZ290byBkb25lOwpAQCAtOTA1LDYgKzkzNiwxMiBAQAogfQogCiBQeU9iamVjdCAqCitQeU51bWJlcl9NYXRyaXhNdWx0aXBseShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgcmV0dXJuIGJpbmFyeV9vcCh2LCB3LCBOQl9TTE9UKG5iX21hdHJpeF9tdWx0aXBseSksICJAIik7Cit9CisKK1B5T2JqZWN0ICoKIFB5TnVtYmVyX0Zsb29yRGl2aWRlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKIHsKICAgICByZXR1cm4gYmluYXJ5X29wKHYsIHcsIE5CX1NMT1QobmJfZmxvb3JfZGl2aWRlKSwgIi8vIik7CkBAIC05ODUsNiArMTAyMiw3IEBACiBJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luUGxhY2VMc2hpZnQsIG5iX2lucGxhY2VfbHNoaWZ0LCBuYl9sc2hpZnQsICI8PD0iKQogSU5QTEFDRV9CSU5PUChQeU51bWJlcl9JblBsYWNlUnNoaWZ0LCBuYl9pbnBsYWNlX3JzaGlmdCwgbmJfcnNoaWZ0LCAiPj49IikKIElOUExBQ0VfQklOT1AoUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0LCBuYl9pbnBsYWNlX3N1YnRyYWN0LCBuYl9zdWJ0cmFjdCwgIi09IikKK0lOUExBQ0VfQklOT1AoUHlOdW1iZXJfSW5NYXRyaXhNdWx0aXBseSwgbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHksIG5iX21hdHJpeF9tdWx0aXBseSwgIkA9IikKIAogUHlPYmplY3QgKgogUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKQEAgLTEwNTEsNiArMTA4OSwxMyBAQAogfQogCiBQeU9iamVjdCAqCitQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIHJldHVybiBiaW5hcnlfaW9wKHYsIHcsIE5CX1NMT1QobmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHkpLAorICAgICAgICAgICAgICAgICAgICAgIE5CX1NMT1QobmJfbWF0cml4X211bHRpcGx5KSwgIkA9Iik7Cit9CisKK1B5T2JqZWN0ICoKIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQogewogICAgIHJldHVybiBiaW5hcnlfaW9wKHYsIHcsIE5CX1NMT1QobmJfaW5wbGFjZV9yZW1haW5kZXIpLApAQCAtMjAyOCwzMiArMjA3Myw4MiBAQAogICAgIHJldHVybiBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhvLCBhLCBOVUxMKTsKIH0KIAorUHlPYmplY3QqCitfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKnJlc3VsdCwgY29uc3QgY2hhciAqd2hlcmUpCit7CisgICAgaW50IGVycl9vY2N1cnJlZCA9IChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpOworCisgICAgYXNzZXJ0KChmdW5jICE9IE5VTEwpIF4gKHdoZXJlICE9IE5VTEwpKTsKKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBpZiAoIWVycl9vY2N1cnJlZCkgeworICAgICAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbiBlcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZyBpcyBjYXRjaGVkIGluIGRlYnVnIG1vZGUgKi8KKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImEgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IiKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChlcnJfb2NjdXJyZWQpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworCisgICAgICAgICAgICBpZiAoZnVuYykKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOworICAgICAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICAvKiBFbnN1cmUgdGhhdCB0aGUgYnVnIGlzIGNhdGNoZWQgaW4gZGVidWcgbW9kZSAqLworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYSBmdW5jdGlvbiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIpOworI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgdGVybmFyeWZ1bmMgY2FsbDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKChjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbCkgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZywga3cpOwotICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKLSNpZmRlZiBOREVCVUcKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgIk5VTEwgcmVzdWx0IHdpdGhvdXQgZXJyb3IgaW4gUHlPYmplY3RfQ2FsbCIpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBhc3NlcnQoKHJlc3VsdCAhPSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIHx8IChyZXN1bHQgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAvKiBQeU9iamVjdF9DYWxsKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb29zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKKyAgICBpZiAoY2FsbCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLAotICAgICAgICAgICAgICAgICBmdW5jLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdCIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgYXJnLCBrdyk7CisKKyAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKKworICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0yNDkyLDYgKzI1ODcsMTEgQEAKICAgICBpZiAoUHlfVFlQRShpbnN0KSA9PSAoUHlUeXBlT2JqZWN0ICopY2xzKQogICAgICAgICByZXR1cm4gMTsKIAorICAgIC8qIFdlIGtub3cgd2hhdCB0eXBlJ3MgX19pbnN0YW5jZWNoZWNrX18gZG9lcy4gKi8KKyAgICBpZiAoUHlUeXBlX0NoZWNrRXhhY3QoY2xzKSkgeworICAgICAgICByZXR1cm4gcmVjdXJzaXZlX2lzaW5zdGFuY2UoaW5zdCwgY2xzKTsKKyAgICB9CisKICAgICBpZiAoUHlUdXBsZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBuOwpAQCAtMjUzMCw2ICsyNjMwLDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIFByb2JhYmx5IG5ldmVyIHJlYWNoZWQgYW55bW9yZS4gKi8KICAgICByZXR1cm4gcmVjdXJzaXZlX2lzaW5zdGFuY2UoaW5zdCwgY2xzKTsKIH0KIApAQCAtMjU1Nyw2ICsyNjU4LDE0IEBACiAgICAgX1B5X0lERU5USUZJRVIoX19zdWJjbGFzc2NoZWNrX18pOwogICAgIFB5T2JqZWN0ICpjaGVja2VyOwogCisgICAgLyogV2Uga25vdyB3aGF0IHR5cGUncyBfX3N1YmNsYXNzY2hlY2tfXyBkb2VzLiAqLworICAgIGlmIChQeVR5cGVfQ2hlY2tFeGFjdChjbHMpKSB7CisgICAgICAgIC8qIFF1aWNrIHRlc3QgZm9yIGFuIGV4YWN0IG1hdGNoICovCisgICAgICAgIGlmIChkZXJpdmVkID09IGNscykKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gcmVjdXJzaXZlX2lzc3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKKyAgICB9CisKICAgICBpZiAoUHlUdXBsZV9DaGVjayhjbHMpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgUHlfc3NpemVfdCBuOwpAQCAtMjU5NSw2ICsyNzA0LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIFByb2JhYmx5IG5ldmVyIHJlYWNoZWQgYW55bW9yZS4gKi8KICAgICByZXR1cm4gcmVjdXJzaXZlX2lzc3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKaW5kZXggMTVjNTI1Yy4uNTY0N2I1NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCkBAIC00LDYgKzQsMTMgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCisjaW5jbHVkZSAiYnl0ZXNvYmplY3QuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBieXRlYXJyYXkgIlB5Qnl0ZUFycmF5T2JqZWN0ICoiICImUHlCeXRlQXJyYXlfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTU1MzViNzdjMzdhMTE5ZTBdKi8KIAogY2hhciBfUHlCeXRlQXJyYXlfZW1wdHlfc3RyaW5nW10gPSAiIjsKIApAQCAtNTQsMTggKzYxLDE3IEBACiBzdGF0aWMgaW50CiBieXRlYXJyYXlfZ2V0YnVmZmVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewotICAgIGludCByZXQ7CiAgICAgdm9pZCAqcHRyOwogICAgIGlmICh2aWV3ID09IE5VTEwpIHsKLSAgICAgICAgb2JqLT5vYl9leHBvcnRzKys7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiYnl0ZWFycmF5X2dldGJ1ZmZlcjogdmlldz09TlVMTCBhcmd1bWVudCBpcyBvYnNvbGV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHB0ciA9ICh2b2lkICopIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhvYmopOwotICAgIHJldCA9IFB5QnVmZmVyX0ZpbGxJbmZvKHZpZXcsIChQeU9iamVjdCopb2JqLCBwdHIsIFB5X1NJWkUob2JqKSwgMCwgZmxhZ3MpOwotICAgIGlmIChyZXQgPj0gMCkgewotICAgICAgICBvYmotPm9iX2V4cG9ydHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKKyAgICAvKiBjYW5ub3QgZmFpbCBpZiB2aWV3ICE9IE5VTEwgYW5kIHJlYWRvbmx5ID09IDAgKi8KKyAgICAodm9pZClQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgcHRyLCBQeV9TSVpFKG9iaiksIDAsIGZsYWdzKTsKKyAgICBvYmotPm9iX2V4cG9ydHMrKzsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTg1LDYgKzkxLDggQEAKICAgICByZXR1cm4gMTsKIH0KIAorI2luY2x1ZGUgImNsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oIgorCiAvKiBEaXJlY3QgQVBJIGZ1bmN0aW9ucyAqLwogCiBQeU9iamVjdCAqCkBAIC0yNzEsNiArMjc5LDMxIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9mb3JtYXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpieXRlc19pbiwgKmJ5dGVzX291dCwgKnJlczsKKyAgICBjaGFyICpieXRlc3RyaW5nOworCisgICAgaWYgKHNlbGYgPT0gTlVMTCB8fCAhUHlCeXRlQXJyYXlfQ2hlY2soc2VsZikgfHwgYXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgYnl0ZXN0cmluZyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBieXRlc19pbiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlc3RyaW5nKTsKKyAgICBpZiAoYnl0ZXNfaW4gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYnl0ZXNfb3V0ID0gX1B5Qnl0ZXNfRm9ybWF0KGJ5dGVzX2luLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYnl0ZXNfaW4pOworICAgIGlmIChieXRlc19vdXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChieXRlc19vdXQpOworICAgIFB5X0RFQ1JFRihieXRlc19vdXQpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJlczsKK30KKwogLyogRnVuY3Rpb25zIHN0dWZmZWQgaW50byB0aGUgdHlwZSBvYmplY3QgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTQyNSw3ICs0NTgsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGVhcnJheSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaW5kZXgpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogfQpAQCAtNjMwLDcgKzY2NSw5IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXIiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpbmRleCktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0xMTEwLDcgKzExNDcsNyBAQAogICAgIGNoYXIgYnl0ZTsKICAgICBQeV9idWZmZXIgc3ViYnVmOwogICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47CiAgICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKQEAgLTExMjksMTUgKzExNjYsMzQgQEAKICAgICAgICAgc3ViID0gJmJ5dGU7CiAgICAgICAgIHN1Yl9sZW4gPSAxOwogICAgIH0KKyAgICBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKIAotICAgIGlmIChkaXIgPiAwKQotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKKyNpZm5kZWYgSEFWRV9NRU1SQ0hSCisgICAgICAgICAgICAmJiBkaXIgPiAwCisjZW5kaWYKKyAgICApIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOworICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOworICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCisgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7CisgICAgICAgIGlmIChyZXMgPj0gMCkKKyAgICAgICAgICAgIHJlcyArPSBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgfQogCiAgICAgaWYgKHN1Ym9iaikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKQEAgLTEyMTAsMjYgKzEyNjYsMzQgQEAKICAgICByZXR1cm4gY291bnRfb2JqOwogfQogCi1QeURvY19TVFJWQVIoY2xlYXJfX2RvY19fLAotIkIuY2xlYXIoKSAtPiBOb25lXG5cCi1cblwKLVJlbW92ZSBhbGwgaXRlbXMgZnJvbSBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmNsZWFyCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGJ5dGVhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK2J5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1YzJmZTZhZWRlMDk1NmMgaW5wdXQ9ZTUyNGZkMzMwYWJjZGMxOF0qLwogewogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgMCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvcHlfX2RvY19fLAotIkIuY29weSgpIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuY29weQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmV0dXJuIGEgY29weSBvZiBCLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2NvcHkoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NmQ1ZDI5NzVhYTBmMzNmM10qLwogewogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcoKFB5T2JqZWN0ICopc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKQEAgLTE0NDgsMzYgKzE1MTIsNDIgQEAKIH0KIAogCi1QeURvY19TVFJWQVIodHJhbnNsYXRlX19kb2NfXywKLSJCLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZWNoYXJzXSkgLT4gYnl0ZWFycmF5XG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiwgd2hlcmUgYWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZVxuXAotb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUgcmVtYWluaW5nXG5cCi1jaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb25cblwKLXRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkudHJhbnNsYXRlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIHRhYmxlOiBvYmplY3QKKyAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KKyAgICBbCisgICAgZGVsZXRlY2hhcnM6IG9iamVjdAorICAgIF0KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfdHJhbnNsYXRlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJlYmM4NmE5YTFmZjA4MyBpbnB1dD1iNzQ5YWQ4NWY0ODYwODI0XSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7Ci0gICAgY29uc3QgY2hhciAqdGFibGU7CisgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CiAgICAgUHlfc3NpemVfdCBpLCBjOwogICAgIFB5T2JqZWN0ICppbnB1dF9vYmogPSAoUHlPYmplY3QqKXNlbGY7CiAgICAgY29uc3QgY2hhciAqb3V0cHV0X3N0YXJ0OwogICAgIFB5X3NzaXplX3QgaW5sZW47CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IHRyYW5zX3RhYmxlWzI1Nl07Ci0gICAgUHlPYmplY3QgKnRhYmxlb2JqID0gTlVMTCwgKmRlbG9iaiA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHZ0YWJsZSwgdmRlbDsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRyYW5zbGF0ZSIsIDEsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFibGVvYmosICZkZWxvYmopKQotICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHRhYmxlb2JqID09IFB5X05vbmUpIHsKKyAgICBpZiAodGFibGUgPT0gUHlfTm9uZSkgeworICAgICAgICB0YWJsZV9jaGFycyA9IE5VTEw7CiAgICAgICAgIHRhYmxlID0gTlVMTDsKLSAgICAgICAgdGFibGVvYmogPSBOVUxMOwotICAgIH0gZWxzZSBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHRhYmxlb2JqLCAmdnRhYmxlLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICB9IGVsc2UgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZSwgJnZ0YWJsZSwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICh2dGFibGUubGVuICE9IDI1NikgewpAQCAtMTQ4NiwxMiArMTU1NiwxMiBAQAogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnRhYmxlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHRhYmxlID0gKGNvbnN0IGNoYXIqKXZ0YWJsZS5idWY7CisgICAgICAgIHRhYmxlX2NoYXJzID0gKGNvbnN0IGNoYXIqKXZ0YWJsZS5idWY7CiAgICAgfQogCi0gICAgaWYgKGRlbG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGVsb2JqLCAmdmRlbCwgUHlCVUZfU0lNUExFKSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAodGFibGVvYmogIT0gTlVMTCkKKyAgICBpZiAoZGVsZXRlY2hhcnMgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbGV0ZWNoYXJzLCAmdmRlbCwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAodGFibGUgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dGFibGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTE1MDgsMjEgKzE1NzgsMjEgQEAKICAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKLSAgICBpZiAodmRlbC5sZW4gPT0gMCAmJiB0YWJsZSAhPSBOVUxMKSB7CisgICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewogICAgICAgICAvKiBJZiBubyBkZWxldGlvbnMgYXJlIHJlcXVpcmVkLCB1c2UgZmFzdGVyIGNvZGUgKi8KICAgICAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7Ci0gICAgICAgICAgICAqb3V0cHV0KysgPSB0YWJsZVtjXTsKKyAgICAgICAgICAgICpvdXRwdXQrKyA9IHRhYmxlX2NoYXJzW2NdOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAodGFibGUgPT0gTlVMTCkgeworICAgIGlmICh0YWJsZV9jaGFycyA9PSBOVUxMKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0soaSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZVtpXSk7CisgICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKHRhYmxlX2NoYXJzW2ldKTsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgdmRlbC5sZW47IGkrKykKQEAgLTE1NDIsMTggKzE2MTIsMzYgQEAKICAgICAgICAgfQogCiBkb25lOgotICAgIGlmICh0YWJsZW9iaiAhPSBOVUxMKQorICAgIGlmICh0YWJsZSAhPSBOVUxMKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dGFibGUpOwotICAgIGlmIChkZWxvYmogIT0gTlVMTCkKKyAgICBpZiAoZGVsZXRlY2hhcnMgIT0gTlVMTCkKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmRlbCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCisKK0BzdGF0aWNtZXRob2QKK2J5dGVhcnJheS5tYWtldHJhbnMKKworICAgIGZybTogUHlfYnVmZmVyCisgICAgdG86IFB5X2J1ZmZlcgorICAgIC8KKworUmV0dXJuIGEgdHJhbnNsYXRpb24gdGFibGUgdXNlYWJsZSBmb3IgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSB0cmFuc2xhdGUgbWV0aG9kLgorCitUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXQKK3RoZSBzYW1lIHBvc2l0aW9uIGluIHRvLgorCitUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X21ha2V0cmFucyhQeU9iamVjdCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWRmMjY3ZDk5ZjU2YjE1ZSBpbnB1dD01OTI1YTgxZDJmYmJmMTUxXSovCiB7Ci0gICAgICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGFyZ3MpOworICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGZybSwgdG8pOwogfQogCiAKQEAgLTIwNDQsNjEgKzIxMzIsNjMgQEAKIH0KIAogCi1QeURvY19TVFJWQVIocmVwbGFjZV9fZG9jX18sCi0iQi5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb25cblwKLW9sZCByZXBsYWNlZCBieSBuZXcuICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXNcblwKLWdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucmVwbGFjZQorCisgICAgb2xkOiBQeV9idWZmZXIKKyAgICBuZXc6IFB5X2J1ZmZlcgorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS4KKyAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy4KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlCityZXBsYWNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZXBsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yZXBsYWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKm5ldywgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMzk4ODRjNGRjNTk0MTJhIGlucHV0PWFhMzc5ZDk4ODYzN2M3ZmJdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwgJm9sZCwgJm5ldywgJmNvdW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVBcnJheU9iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQuYnVmLCBvbGQubGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXcuYnVmLCBuZXcubGVuLCBjb3VudCk7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvbGQpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJm5ldyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlQXJyYXlPYmplY3QgKikgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CiB9CiAKLVB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0iQi5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZWFycmF5c1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cblwKLUlmIHNlcCBpcyBub3QgZ2l2ZW4sIEIgaXMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cCi0oc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cblwKLUlmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5zcGxpdAorCisgICAgc2VwOiBvYmplY3QgPSBOb25lCisgICAgICAgIFRoZSBkZWxpbWl0ZXIgYWNjb3JkaW5nIHdoaWNoIHRvIHNwbGl0IHRoZSBieXRlYXJyYXkuCisgICAgICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMKKyAgICAgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuCisgICAgbWF4c3BsaXQ6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuCisKK1JldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlYXJyYXksIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitieXRlYXJyYXlfc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODMzZTJjZjM4NWQ5YTA0ZCBpbnB1dD0yNGY4MjY2OWY0MWJmNTIzXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBuOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5T2JqZWN0ICpsaXN0LCAqc3Vib2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqbGlzdDsKICAgICBQeV9idWZmZXIgdnN1YjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0yMTEwLDE5ICsyMjAwLDMwIEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLAotIkIucGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBhbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCxcblwKLXRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuXAotZm91bmQsIHJldHVybnMgQiBhbmQgdHdvIGVtcHR5IGJ5dGVhcnJheSBvYmplY3RzLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnBhcnRpdGlvbgorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBzZXA6IG9iamVjdAorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlYXJyYXkgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LiBJZiB0aGUgc2VwYXJhdG9yIGlzCitmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlCitzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCisKK0lmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBvcmlnaW5hbAorYnl0ZWFycmF5IG9iamVjdCBhbmQgdHdvIGVtcHR5IGJ5dGVhcnJheSBvYmplY3RzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcF9vYmopCitieXRlYXJyYXlfcGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9N2Q3ZmUzN2IxNjk2ZDUwNl0qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCi0gICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwX29iaik7CisgICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwKTsKICAgICBpZiAoISBieXRlc2VwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjEzNywyMCArMjIzOCwzMCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihycGFydGl0aW9uX19kb2NfXywKLSJCLnJwYXJ0aXRpb24oc2VwKSAtPiAoaGVhZCwgc2VwLCB0YWlsKVxuXAotXG5cCi1TZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIEIsIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQixcblwKLWFuZCByZXR1cm4gdGhlIHBhcnQgYmVmb3JlIGl0LCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZVxuXAotcGFydCBhZnRlciBpdC4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIHR3byBlbXB0eVxuXAotYnl0ZWFycmF5IG9iamVjdHMgYW5kIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucnBhcnRpdGlvbgorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBzZXA6IG9iamVjdAorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCisKK1RoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlYXJyYXksIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLgorSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlCitzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCisKK0lmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBieXRlYXJyYXkKK29iamVjdHMgYW5kIHRoZSBvcmlnaW5hbCBieXRlYXJyYXkgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBfb2JqKQorYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD05YjhjZDU0MGMxYjc1ODUzXSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKLSAgICBieXRlc2VwID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChzZXBfb2JqKTsKKyAgICBieXRlc2VwID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChzZXApOwogICAgIGlmICghIGJ5dGVzZXApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yMTY1LDM1ICsyMjc2LDMxIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKLVxuXAotUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIsXG5cCi1zdGFydGluZyBhdCB0aGUgZW5kIG9mIEIgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LlxuXAotSWYgc2VwIGlzIG5vdCBnaXZlbiwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblwKLShzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuXAotSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJzcGxpdCA9IGJ5dGVhcnJheS5zcGxpdAorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KKworU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J5dGVhcnJheV9yc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1NWUwYjVhMDNjYjYxOTAgaW5wdXQ9YTY4Mjg2ZTRkZDY5MmZmZV0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKLSAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwogCi0gICAgaWYgKHN1Ym9iaiA9PSBQeV9Ob25lKQorICAgIGlmIChzZXAgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0yMjA1LDEyICsyMzEyLDE3IEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVB5RG9jX1NUUlZBUihyZXZlcnNlX19kb2NfXywKLSJCLnJldmVyc2UoKSAtPiBOb25lXG5cCi1cblwKLVJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5yZXZlcnNlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmV2ZXJzZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2J5dGVhcnJheV9yZXZlcnNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD03OTMzYTQ5OWI4NTk3YmQxXSovCiB7CiAgICAgY2hhciBzd2FwLCAqaGVhZCwgKnRhaWw7CiAgICAgUHlfc3NpemVfdCBpLCBqLCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTIyMjcsNTcgKzIzMzksNzQgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGluc2VydF9fZG9jX18sCi0iQi5pbnNlcnQoaW5kZXgsIGludCkgLT4gTm9uZVxuXAotXG5cCi1JbnNlcnQgYSBzaW5nbGUgaXRlbSBpbnRvIHRoZSBieXRlYXJyYXkgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4iKTsKLXN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfaW5zZXJ0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgaW50IGl2YWw7Ci0gICAgUHlfc3NpemVfdCB3aGVyZSwgbiA9IFB5X1NJWkUoc2VsZik7Ci0gICAgY2hhciAqYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLCAmd2hlcmUsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgYnl0ZXN2YWx1ZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnQnCisgICAgY29udmVydGVyID0gJ19nZXRieXRldmFsdWUnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yOWMyZTdjMjZjMjEyODEyXSovCisKKworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5Lmluc2VydAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBpbmRleDogUHlfc3NpemVfdAorICAgICAgICBUaGUgaW5kZXggd2hlcmUgdGhlIHZhbHVlIGlzIHRvIGJlIGluc2VydGVkLgorICAgIGl0ZW06IGJ5dGVzdmFsdWUKKyAgICAgICAgVGhlIGl0ZW0gdG8gYmUgaW5zZXJ0ZWQuCisgICAgLworCitJbnNlcnQgYSBzaW5nbGUgaXRlbSBpbnRvIHRoZSBieXRlYXJyYXkgYmVmb3JlIHRoZSBnaXZlbiBpbmRleC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9pbnNlcnRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgaW50IGl0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD04MzM3NjY4MzZiYTMwZTFlXSovCit7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBjaGFyICpidWY7CiAKICAgICBpZiAobiA9PSBQWV9TU0laRV9UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIG1vcmUgb2JqZWN0cyB0byBieXRlYXJyYXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICghX2dldGJ5dGV2YWx1ZSh2YWx1ZSwgJml2YWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIG4gKyAxKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKIAotICAgIGlmICh3aGVyZSA8IDApIHsKLSAgICAgICAgd2hlcmUgKz0gbjsKLSAgICAgICAgaWYgKHdoZXJlIDwgMCkKLSAgICAgICAgICAgIHdoZXJlID0gMDsKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIGluZGV4ICs9IG47CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CiAgICAgfQotICAgIGlmICh3aGVyZSA+IG4pCi0gICAgICAgIHdoZXJlID0gbjsKLSAgICBtZW1tb3ZlKGJ1ZiArIHdoZXJlICsgMSwgYnVmICsgd2hlcmUsIG4gLSB3aGVyZSk7Ci0gICAgYnVmW3doZXJlXSA9IGl2YWw7CisgICAgaWYgKGluZGV4ID4gbikKKyAgICAgICAgaW5kZXggPSBuOworICAgIG1lbW1vdmUoYnVmICsgaW5kZXggKyAxLCBidWYgKyBpbmRleCwgbiAtIGluZGV4KTsKKyAgICBidWZbaW5kZXhdID0gaXRlbTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoYXBwZW5kX19kb2NfXywKLSJCLmFwcGVuZChpbnQpIC0+IE5vbmVcblwKLVxuXAotQXBwZW5kIGEgc2luZ2xlIGl0ZW0gdG8gdGhlIGVuZCBvZiBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmFwcGVuZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBpdGVtOiBieXRlc3ZhbHVlCisgICAgICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLgorICAgIC8KKworQXBwZW5kIGEgc2luZ2xlIGl0ZW0gdG8gdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2FwcGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK2J5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE1NGUxOWVkMTg4NmNiNiBpbnB1dD1hZTU2ZWE4NzM4MDQwN2NjXSovCiB7Ci0gICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAKLSAgICBpZiAoISBfZ2V0Ynl0ZXZhbHVlKGFyZywgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG4gPT0gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBtb3JlIG9iamVjdHMgdG8gYnl0ZWFycmF5Iik7CkBAIC0yMjg2LDE4ICsyNDE1LDI1IEBACiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuICsgMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKVtuXSA9IHZhbHVlOworICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKVtuXSA9IGl0ZW07CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGV4dGVuZF9fZG9jX18sCi0iQi5leHRlbmQoaXRlcmFibGVfb2ZfaW50cykgLT4gTm9uZVxuXAotXG5cCi1BcHBlbmQgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGVcblwKLWVuZCBvZiBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmV4dGVuZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICBpdGVyYWJsZV9vZl9pbnRzOiBvYmplY3QKKyAgICAgICAgVGhlIGl0ZXJhYmxlIG9mIGl0ZW1zIHRvIGFwcGVuZC4KKyAgICAvCisKK0FwcGVuZCBhbGwgdGhlIGl0ZW1zIGZyb20gdGhlIGl0ZXJhdG9yIG9yIHNlcXVlbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9leHRlbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfaW50cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWNlODNhNWQ3NWI3MGQ4NTBdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtLCAqYnl0ZWFycmF5X29iajsKICAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplID0gMCwgbGVuID0gMDsKQEAgLTIzMDUsMTkgKzI0NDEsMTkgQEAKICAgICBjaGFyICpidWY7CiAKICAgICAvKiBieXRlYXJyYXlfc2V0c2xpY2UgY29kZSBvbmx5IGFjY2VwdHMgc29tZXRoaW5nIHN1cHBvcnRpbmcgUEVQIDMxMTguICovCi0gICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZykpIHsKLSAgICAgICAgaWYgKGJ5dGVhcnJheV9zZXRzbGljZShzZWxmLCBQeV9TSVpFKHNlbGYpLCBQeV9TSVpFKHNlbGYpLCBhcmcpID09IC0xKQorICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihpdGVyYWJsZV9vZl9pbnRzKSkgeworICAgICAgICBpZiAoYnl0ZWFycmF5X3NldHNsaWNlKHNlbGYsIFB5X1NJWkUoc2VsZiksIFB5X1NJWkUoc2VsZiksIGl0ZXJhYmxlX29mX2ludHMpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGFyZyk7CisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlX29mX2ludHMpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFRyeSB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJndW1lbnQuIDMyIGlzIGFyYml0cmFyeS4gKi8KLSAgICBidWZfc2l6ZSA9IFB5T2JqZWN0X0xlbmd0aEhpbnQoYXJnLCAzMik7CisgICAgYnVmX3NpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KGl0ZXJhYmxlX29mX2ludHMsIDMyKTsKICAgICBpZiAoYnVmX3NpemUgPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzY5LDI5ICsyNTA1LDM2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3BfX2RvY19fLAotIkIucG9wKFtpbmRleF0pIC0+IGludFxuXAotXG5cCi1SZW1vdmUgYW5kIHJldHVybiBhIHNpbmdsZSBpdGVtIGZyb20gQi4gSWYgbm8gaW5kZXhcblwKLWFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCB2YWx1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5wb3AKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaW5kZXg6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBUaGUgaW5kZXggZnJvbSB3aGVyZSB0byByZW1vdmUgdGhlIGl0ZW0uCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVtb3ZlIHRoZSBsYXN0IGl0ZW0uCisgICAgLworCitSZW1vdmUgYW5kIHJldHVybiBhIHNpbmdsZSBpdGVtIGZyb20gQi4KKworSWYgbm8gaW5kZXggYXJndW1lbnQgaXMgZ2l2ZW4sIHdpbGwgcG9wIHRoZSBsYXN0IGl0ZW0uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcG9wKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTA3OTdlNmMwY2E5ZDVhODVdKi8KIHsKICAgICBpbnQgdmFsdWU7Ci0gICAgUHlfc3NpemVfdCB3aGVyZSA9IC0xLCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwgJndoZXJlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvcCBmcm9tIGVtcHR5IGJ5dGVhcnJheSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHdoZXJlIDwgMCkKLSAgICAgICAgd2hlcmUgKz0gUHlfU0laRShzZWxmKTsKLSAgICBpZiAod2hlcmUgPCAwIHx8IHdoZXJlID49IFB5X1NJWkUoc2VsZikpIHsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCArPSBQeV9TSVpFKHNlbGYpOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlfU0laRShzZWxmKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInBvcCBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjM5OSwyOCArMjU0MiwzMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICB2YWx1ZSA9IGJ1Zlt3aGVyZV07Ci0gICAgbWVtbW92ZShidWYgKyB3aGVyZSwgYnVmICsgd2hlcmUgKyAxLCBuIC0gd2hlcmUpOworICAgIHZhbHVlID0gYnVmW2luZGV4XTsKKyAgICBtZW1tb3ZlKGJ1ZiArIGluZGV4LCBidWYgKyBpbmRleCArIDEsIG4gLSBpbmRleCk7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuIC0gMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKHVuc2lnbmVkIGNoYXIpdmFsdWUpOwogfQogCi1QeURvY19TVFJWQVIocmVtb3ZlX19kb2NfXywKLSJCLnJlbW92ZShpbnQpIC0+IE5vbmVcblwKLVxuXAotUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdmFsdWUgaW4gQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5yZW1vdmUKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgdmFsdWU6IGJ5dGVzdmFsdWUKKyAgICAgICAgVGhlIHZhbHVlIHRvIHJlbW92ZS4KKyAgICAvCisKK1JlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHZhbHVlIGluIHRoZSBieXRlYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVtb3ZlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD00NzU2MGIxMWZkODU2YzI0XSovCiB7Ci0gICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3Qgd2hlcmUsIG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKIAotICAgIGlmICghIF9nZXRieXRldmFsdWUoYXJnLCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGZvciAod2hlcmUgPSAwOyB3aGVyZSA8IG47IHdoZXJlKyspIHsKICAgICAgICAgaWYgKGJ1Zlt3aGVyZV0gPT0gdmFsdWUpCiAgICAgICAgICAgICBicmVhazsKQEAgLTI0NjEsMTMyICsyNjA4LDE0NSBAQAogICAgIHJldHVybiBpICsgMTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmlwX19kb2NfXywKLSJCLnN0cmlwKFtieXRlc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50XG5cCi1hbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuc3RyaXAKKworICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3N0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9zdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzYwNDEyNjYxYTM0YWQ1YSBpbnB1dD1lZjdiYjU5YjA5YzIxZDYyXSovCiB7Ci0gICAgUHlfc3NpemVfdCBsZWZ0LCByaWdodCwgbXlzaXplLCBhcmdzaXplOwotICAgIGNoYXIgKm15cHRyLCAqYXJncHRyOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwotICAgIFB5X2J1ZmZlciB2YXJnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86c3RyaXAiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGFyZ3B0ciA9ICJcdFxuXHJcZlx2ICI7Ci0gICAgICAgIGFyZ3NpemUgPSA2OworICAgIFB5X3NzaXplX3QgbGVmdCwgcmlnaHQsIG15c2l6ZSwgYnl0ZXNsZW47CisgICAgY2hhciAqbXlwdHIsICpieXRlc3B0cjsKKyAgICBQeV9idWZmZXIgdmJ5dGVzOworCisgICAgaWYgKGJ5dGVzID09IFB5X05vbmUpIHsKKyAgICAgICAgYnl0ZXNwdHIgPSAiXHRcblxyXGZcdiAiOworICAgICAgICBieXRlc2xlbiA9IDY7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihieXRlcywgJnZieXRlcywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFyZ3B0ciA9IChjaGFyICopIHZhcmcuYnVmOwotICAgICAgICBhcmdzaXplID0gdmFyZy5sZW47CisgICAgICAgIGJ5dGVzcHRyID0gKGNoYXIgKikgdmJ5dGVzLmJ1ZjsKKyAgICAgICAgYnl0ZXNsZW4gPSB2Ynl0ZXMubGVuOwogICAgIH0KICAgICBteXB0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKICAgICBteXNpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CisgICAgbGVmdCA9IGxzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKICAgICBpZiAobGVmdCA9PSBteXNpemUpCiAgICAgICAgIHJpZ2h0ID0gbGVmdDsKICAgICBlbHNlCi0gICAgICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOwotICAgIGlmIChhcmcgIT0gUHlfTm9uZSkKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7CisgICAgICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBieXRlc3B0ciwgYnl0ZXNsZW4pOworICAgIGlmIChieXRlcyAhPSBQeV9Ob25lKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Ynl0ZXMpOwogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShteXB0ciArIGxlZnQsIHJpZ2h0IC0gbGVmdCk7CiB9CiAKLVB5RG9jX1NUUlZBUihsc3RyaXBfX2RvY19fLAotIkIubHN0cmlwKFtieXRlc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnRcblwKLWFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIG5ldyBieXRlYXJyYXkuXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmxzdHJpcAorCisgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1N0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2xzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfbHN0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMDA1YzlkMGFiOTA5ZTY2IGlucHV0PTgwODQzZjk3NWRkN2M0ODBdKi8KIHsKLSAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGFyZ3NpemU7Ci0gICAgY2hhciAqbXlwdHIsICphcmdwdHI7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7Ci0gICAgUHlfYnVmZmVyIHZhcmc7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzpsc3RyaXAiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGFyZ3B0ciA9ICJcdFxuXHJcZlx2ICI7Ci0gICAgICAgIGFyZ3NpemUgPSA2OworICAgIFB5X3NzaXplX3QgbGVmdCwgcmlnaHQsIG15c2l6ZSwgYnl0ZXNsZW47CisgICAgY2hhciAqbXlwdHIsICpieXRlc3B0cjsKKyAgICBQeV9idWZmZXIgdmJ5dGVzOworCisgICAgaWYgKGJ5dGVzID09IFB5X05vbmUpIHsKKyAgICAgICAgYnl0ZXNwdHIgPSAiXHRcblxyXGZcdiAiOworICAgICAgICBieXRlc2xlbiA9IDY7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihieXRlcywgJnZieXRlcywgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFyZ3B0ciA9IChjaGFyICopIHZhcmcuYnVmOwotICAgICAgICBhcmdzaXplID0gdmFyZy5sZW47CisgICAgICAgIGJ5dGVzcHRyID0gKGNoYXIgKikgdmJ5dGVzLmJ1ZjsKKyAgICAgICAgYnl0ZXNsZW4gPSB2Ynl0ZXMubGVuOwogICAgIH0KICAgICBteXB0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKICAgICBteXNpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7CisgICAgbGVmdCA9IGxzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKICAgICByaWdodCA9IG15c2l6ZTsKLSAgICBpZiAoYXJnICE9IFB5X05vbmUpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgIGlmIChieXRlcyAhPSBQeV9Ob25lKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Ynl0ZXMpOwogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShteXB0ciArIGxlZnQsIHJpZ2h0IC0gbGVmdCk7CiB9CiAKLVB5RG9jX1NUUlZBUihyc3RyaXBfX2RvY19fLAotIkIucnN0cmlwKFtieXRlc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1TdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50XG5cCi1hbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucnN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3JzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDMwZTJmYmQyZjcyNzZiZCBpbnB1dD1lNzI4Yjk5NDk1NGNmZDkxXSovCiB7Ci0gICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBhcmdzaXplOwotICAgIGNoYXIgKm15cHRyLCAqYXJncHRyOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwotICAgIFB5X2J1ZmZlciB2YXJnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cnN0cmlwIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICBhcmdwdHIgPSAiXHRcblxyXGZcdiAiOwotICAgICAgICBhcmdzaXplID0gNjsKKyAgICBQeV9zc2l6ZV90IHJpZ2h0LCBteXNpemUsIGJ5dGVzbGVuOworICAgIGNoYXIgKm15cHRyLCAqYnl0ZXNwdHI7CisgICAgUHlfYnVmZmVyIHZieXRlczsKKworICAgIGlmIChieXRlcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGJ5dGVzcHRyID0gIlx0XG5cclxmXHYgIjsKKyAgICAgICAgYnl0ZXNsZW4gPSA2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnl0ZXMsICZ2Ynl0ZXMsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcmdwdHIgPSAoY2hhciAqKSB2YXJnLmJ1ZjsKLSAgICAgICAgYXJnc2l6ZSA9IHZhcmcubGVuOworICAgICAgICBieXRlc3B0ciA9IChjaGFyICopIHZieXRlcy5idWY7CisgICAgICAgIGJ5dGVzbGVuID0gdmJ5dGVzLmxlbjsKICAgICB9CiAgICAgbXlwdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAgICAgbXlzaXplID0gUHlfU0laRShzZWxmKTsKLSAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYXJncHRyLCBhcmdzaXplKTsKLSAgICBpZiAoYXJnICE9IFB5X05vbmUpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBieXRlc3B0ciwgYnl0ZXNsZW4pOworICAgIGlmIChieXRlcyAhPSBQeV9Ob25lKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Ynl0ZXMpOwogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShteXB0ciwgcmlnaHQpOwogfQogCi1QeURvY19TVFJWQVIoZGVjb2RlX2RvYywKLSJCLmRlY29kZShlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpIC0+IHN0clxuXAotXG5cCi1EZWNvZGUgQiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuIERlZmF1bHQgZW5jb2RpbmdcblwKLWlzICd1dGYtOCcuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG5cCi1oYW5kbGluZyBzY2hlbWUuICBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVW5pY29kZURlY29kZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnXG5cCi1hcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpc1xuXAotYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5kZWNvZGUKKworICAgIGVuY29kaW5nOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAndXRmLTgnCisgICAgICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZWFycmF5LgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3N0cmljdCcKKyAgICAgICAgVGhlIGVycm9yIGhhbmRsaW5nIHNjaGVtZSB0byB1c2UgZm9yIHRoZSBoYW5kbGluZyBvZiBkZWNvZGluZyBlcnJvcnMuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYQorICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJworICAgICAgICBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdAorICAgICAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuCisKK0RlY29kZSB0aGUgYnl0ZWFycmF5IHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9kZWNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjU3ZDQzZjRhMDBiNDJjNSBpbnB1dD1mMjhkOGY5MDMwMjAyNTdiXSovCiB7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBrd2xpc3QsICZlbmNvZGluZywgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAogUHlEb2NfU1RSVkFSKGFsbG9jX2RvYywKQEAgLTI2MDAsNDggKzI3NjAsNDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPm9iX2FsbG9jKTsKIH0KIAotUHlEb2NfU1RSVkFSKGpvaW5fZG9jLAotIkIuam9pbihpdGVyYWJsZV9vZl9ieXRlcykgLT4gYnl0ZWFycmF5XG5cCi1cblwKLUNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMvYnl0ZWFycmF5IG9iamVjdHMsIHdpdGggQlxuXAotaW4gYmV0d2VlbiBlYWNoIHBhaXIsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIG5ldyBieXRlYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuam9pbgorCisgICAgaXRlcmFibGVfb2ZfYnl0ZXM6IG9iamVjdAorICAgIC8KKworQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcy9ieXRlYXJyYXkgb2JqZWN0cy4KKworVGhlIGJ5dGVhcnJheSB3aG9zZSBtZXRob2QgaXMgY2FsbGVkIGlzIGluc2VydGVkIGluIGJldHdlZW4gZWFjaCBwYWlyLgorCitUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVhcnJheSBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfam9pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlKQorYnl0ZWFycmF5X2pvaW4oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODUxNjM3MGJmNjhhZTA4IGlucHV0PWFiYTZiMWY5YjMwZmNiOGVdKi8KIHsKLSAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oc2VsZiwgaXRlcmFibGUpOworICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLAotIkIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKSAtPiBsaXN0IG9mIGxpbmVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIEIsIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cblwKLUxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kc1xuXAotaXMgZ2l2ZW4gYW5kIHRydWUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuc3BsaXRsaW5lcwogCi1zdGF0aWMgUHlPYmplY3QqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorICAgIGtlZXBlbmRzOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgYnl0ZWFycmF5LCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuCisKK0xpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmQKK3RydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDIyM2M5NGI4OTVmNmFkOSBpbnB1dD04Y2NhZGU5NDFlNWVhMGJkXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZWVwZW5kcyIsIDB9OwotICAgIGludCBrZWVwZW5kcyA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLAogICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwga2VlcGVuZHMKICAgICAgICAgKTsKIH0KIAotUHlEb2NfU1RSVkFSKGZyb21oZXhfZG9jLAotImJ5dGVhcnJheS5mcm9taGV4KHN0cmluZykgLT4gYnl0ZWFycmF5IChzdGF0aWMgbWV0aG9kKVxuXAotXG5cCi1DcmVhdGUgYSBieXRlYXJyYXkgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cblwKLVNwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC5cblwKLUV4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KCdCOSAwMUVGJykgLT4gYnl0ZWFycmF5KGInXFx4YjlcXHgwMVxceGVmJykuIik7Ci0KIHN0YXRpYyBpbnQKIGhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewpAQCAtMjY1OCwyNCArMjgxNywzNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitieXRlYXJyYXkuZnJvbWhleAorCisgICAgY2xzOiBzZWxmKHR5cGU9IlB5T2JqZWN0KiIpCisgICAgc3RyaW5nOiB1bmljb2RlCisgICAgLworCitDcmVhdGUgYSBieXRlYXJyYXkgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy4KKworU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLgorRXhhbXBsZTogYnl0ZWFycmF5LmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBieXRlYXJyYXkoYidcXHhiOVxceDAxXFx4ZWYnKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXgoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjNkYTYwMTI5YjM3MDBjIGlucHV0PTkwN2JiZDJkMzRkOTM2N2FdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3Ynl0ZXMsICpoZXhvYmo7CisgICAgUHlPYmplY3QgKm5ld2J5dGVzOwogICAgIGNoYXIgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7CiAgICAgaW50IHRvcCwgYm90OwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6ZnJvbWhleCIsICZoZXhvYmopKQorICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGhleG9iaikpOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaGV4b2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGhleG9iaik7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGhleG9iaik7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaGV4b2JqKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwogCiAgICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KICAgICBuZXdieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKQEAgLTI3MDcsNiArMjg3OSwxOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitQeURvY19TVFJWQVIoaGV4X19kb2NfXywKKyJCLmhleCgpIC0+IHN0cmluZ1xuXAorXG5cCitDcmVhdGUgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycyBmcm9tIGEgYnl0ZWFycmF5IG9iamVjdC5cblwKK0V4YW1wbGU6IGJ5dGVhcnJheShbMHhiOSwgMHgwMSwgMHhlZl0pLmhleCgpIC0+ICdiOTAxZWYnLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2hleChQeUJ5dGVzT2JqZWN0ICpzZWxmKQoreworICAgIGNoYXIqIGFyZ2J1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGFyZ2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KGFyZ2J1ZiwgYXJnbGVuKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb21tb25fcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgcHJvdG8pCkBAIC0yNzQzLDMzICsyOTI4LDQ5IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuX19yZWR1Y2VfXyBhcyBieXRlYXJyYXlfcmVkdWNlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK2J5dGVhcnJheV9yZWR1Y2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PWZiYjA3ZGU0ZDEwMmEwM2FdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgMik7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZXhfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5fX3JlZHVjZV9leF9fIGFzIGJ5dGVhcnJheV9yZWR1Y2VfZXgKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgcHJvdG86IGludCA9IDAKKyAgICAvCisKK1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVkdWNlX2V4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9MGUwOTFhNDJjYTZkYmQ5MV0qLwogewotICAgIGludCBwcm90byA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCBwcm90byk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaXplb2ZfZG9jLAotIkIuX19zaXplb2ZfXygpIC0+IGludFxuXAotIFxuXAotUmV0dXJucyB0aGUgc2l6ZSBvZiBCIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5fX3NpemVvZl9fIGFzIGJ5dGVhcnJheV9zaXplb2YKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisKK1JldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zaXplb2YoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD02YjIzZDMwNTM2MmI0NjJiXSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKQEAgLTI4MDQsMjYgKzMwMDUsMjYgQEAKIHN0YXRpYyBQeU1ldGhvZERlZgogYnl0ZWFycmF5X21ldGhvZHNbXSA9IHsKICAgICB7Il9fYWxsb2NfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYWxsb2MsIE1FVEhfTk9BUkdTLCBhbGxvY19kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCi0gICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2VfZXgsIE1FVEhfVkFSQVJHUywgcmVkdWNlX2V4X2RvY30sCi0gICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKLSAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYXBwZW5kLCBNRVRIX08sIGFwcGVuZF9fZG9jX199LAorICAgIEJZVEVBUlJBWV9SRURVQ0VfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JFRFVDRV9FWF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfU0laRU9GX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAotICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NsZWFyLCBNRVRIX05PQVJHUywgY2xlYXJfX2RvY19ffSwKLSAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvcHksIE1FVEhfTk9BUkdTLCBjb3B5X19kb2NfX30sCisgICAgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9DT1BZX01FVEhPRERFRgogICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZGVjb2RlX2RvY30sCisgICAgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYKICAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgZXhwYW5kdGFic19fZG9jX199LAotICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9leHRlbmQsIE1FVEhfTywgZXh0ZW5kX19kb2NfX30sCisgICAgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYKICAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAotICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZnJvbWhleCwgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsCi0gICAgIGZyb21oZXhfZG9jfSwKKyAgICBCWVRFQVJSQVlfRlJPTUhFWF9NRVRIT0RERUYKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaGV4LCBNRVRIX05PQVJHUywgaGV4X19kb2NfX30sCiAgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKLSAgICB7Imluc2VydCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5zZXJ0LCBNRVRIX1ZBUkFSR1MsIGluc2VydF9fZG9jX199LAorICAgIEJZVEVBUlJBWV9JTlNFUlRfTUVUSE9EREVGCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKICAgICB7ImlzYWxwaGEiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxwaGEsIE1FVEhfTk9BUkdTLApAQCAtMjgzOCwzOSArMzAzOSw1MSBAQAogICAgICBfUHlfaXN0aXRsZV9fZG9jX199LAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCi0gICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9qb2luLCBNRVRIX08sIGpvaW5fZG9jfSwKKyAgICBCWVRFQVJSQVlfSk9JTl9NRVRIT0RERUYKICAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBsanVzdF9fZG9jX199LAogICAgIHsibG93ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xvd2VyLCBNRVRIX05PQVJHUywgX1B5X2xvd2VyX19kb2NfX30sCi0gICAgeyJsc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2xzdHJpcCwgTUVUSF9WQVJBUkdTLCBsc3RyaXBfX2RvY19ffSwKLSAgICB7Im1ha2V0cmFucyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsCi0gICAgIF9QeV9tYWtldHJhbnNfX2RvY19ffSwKLSAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcGFydGl0aW9uLCBNRVRIX08sIHBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicG9wIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9wb3AsIE1FVEhfVkFSQVJHUywgcG9wX19kb2NfX30sCi0gICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlbW92ZSwgTUVUSF9PLCByZW1vdmVfX2RvY19ffSwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgcmVwbGFjZV9fZG9jX199LAotICAgIHsicmV2ZXJzZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIHJldmVyc2VfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfTFNUUklQX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9NQUtFVFJBTlNfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1BBUlRJVElPTl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfUE9QX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRU1PVkVfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JFUExBQ0VfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JFVkVSU0VfTUVUSE9EREVGCiAgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKICAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCi0gICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9ycGFydGl0aW9uLCBNRVRIX08sIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCByc3BsaXRfX2RvY19ffSwKLSAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywKLSAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRsaW5lc19fZG9jX199LAorICAgIEJZVEVBUlJBWV9SUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCi0gICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAotICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV90cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywKLSAgICAgdHJhbnNsYXRlX19kb2NfX30sCisgICAgQllURUFSUkFZX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAogICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCiAgICAge05VTEx9CiB9OwogCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgaWYgKCFQeUJ5dGVBcnJheV9DaGVjayh2KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIHJldHVybiBieXRlYXJyYXlfZm9ybWF0KChQeUJ5dGVBcnJheU9iamVjdCAqKXYsIHcpOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVhcnJheV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgIC8qbmJfYWRkKi8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9zdWJ0cmFjdCovCisgICAgMCwgICAgICAgICAgICAgIC8qbmJfbXVsdGlwbHkqLworICAgIGJ5dGVhcnJheV9tb2QsICAvKm5iX3JlbWFpbmRlciovCit9OworCiBQeURvY19TVFJWQVIoYnl0ZWFycmF5X2RvYywKICJieXRlYXJyYXkoaXRlcmFibGVfb2ZfaW50cykgLT4gYnl0ZWFycmF5XG5cCiBieXRlYXJyYXkoc3RyaW5nLCBlbmNvZGluZ1ssIGVycm9yc10pIC0+IGJ5dGVhcnJheVxuXApAQCAtMjg5OSw3ICszMTEyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpYnl0ZWFycmF5X3JlcHIsICAgICAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmJ5dGVhcnJheV9hc19udW1iZXIsICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJmJ5dGVhcnJheV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAmYnl0ZWFycmF5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtMzAyNiw3ICszMjM5LDcgQEAKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX2xlbmd0aF9oaW50LCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKICAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAotICAgICByZWR1Y2VfZG9jfSwKKyAgICAgYnl0ZWFycmF5X3JlZHVjZV9fZG9jX199LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggOWZmN2FjZS4uYTI5OTkxNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTM2NCwzOSArMzY0LDI2IEBACiBUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLiIpOwogCiBQeU9iamVjdCAqCi1fUHlfYnl0ZXNfbWFrZXRyYW5zKFB5T2JqZWN0ICphcmdzKQorX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0bykKIHsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICBQeV9idWZmZXIgYmZybSA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9idWZmZXIgYnRvID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBjaGFyICpwOwogCi0gICAgYmZybS5sZW4gPSAtMTsKLSAgICBidG8ubGVuID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwgJmJmcm0sICZidG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYmZybS5sZW4gIT0gYnRvLmxlbikgeworICAgIGlmIChmcm0tPmxlbiAhPSB0by0+bGVuKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm1ha2V0cmFucyBhcmd1bWVudHMgbXVzdCBoYXZlIHNhbWUgbGVuZ3RoIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMjU2KTsKLSAgICBpZiAoIXJlcykgewotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQorICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgIHBbaV0gPSAoY2hhcikgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgYmZybS5sZW47IGkrKykgewotICAgICAgICBwWygodW5zaWduZWQgY2hhciAqKWJmcm0uYnVmKVtpXV0gPSAoKGNoYXIgKilidG8uYnVmKVtpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZnJtLT5sZW47IGkrKykgeworICAgICAgICBwWygodW5zaWduZWQgY2hhciAqKWZybS0+YnVmKVtpXV0gPSAoKGNoYXIgKil0by0+YnVmKVtpXTsKICAgICB9CiAKLWRvbmU6Ci0gICAgaWYgKGJmcm0ub2JqICE9IE5VTEwpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJmcm0pOwotICAgIGlmIChiZnJtLm9iaiAhPSBOVUxMKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidG8pOwogICAgIHJldHVybiByZXM7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggNTc2ODE1NC4uMDgyNzVhZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtNSw4ICs1LDE2IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAorLypbY2xpbmljIGlucHV0XQorY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QqIiAiJlB5Qnl0ZXNfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTFhMWQ5MTAyYWZjMWIwMGNdKi8KKworI2luY2x1ZGUgImNsaW5pYy9ieXRlc29iamVjdC5jLmgiCisKICNpZmRlZiBDT1VOVF9BTExPQ1MKIFB5X3NzaXplX3QgbnVsbF9zdHJpbmdzLCBvbmVfc3RyaW5nczsKICNlbmRpZgpAQCAtNDQsNiArNTIsNDUgQEAKICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSkgb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIHRoZSBgc3RyJwogICAgcGFyYW1ldGVyIChmb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCkpLgogKi8KK3N0YXRpYyBQeU9iamVjdCAqCitfUHlCeXRlc19Gcm9tU2l6ZShQeV9zc2l6ZV90IHNpemUsIGludCB1c2VfY2FsbG9jKQoreworICAgIFB5Qnl0ZXNPYmplY3QgKm9wOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPT0gMCAmJiAob3AgPSBudWxsc3RyaW5nKSAhPSBOVUxMKSB7CisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgICAgIG51bGxfc3RyaW5ncysrOworI2VuZGlmCisgICAgICAgIFB5X0lOQ1JFRihvcCk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAtIFB5Qnl0ZXNPYmplY3RfU0laRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJieXRlIHN0cmluZyBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogSW5saW5lIFB5T2JqZWN0X05ld1ZhciAqLworICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfQ2FsbG9jKDEsIFB5Qnl0ZXNPYmplY3RfU0laRSArIHNpemUpOworICAgIGVsc2UKKyAgICAgICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X01hbGxvYyhQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBpZiAob3AgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOworICAgIG9wLT5vYl9zaGFzaCA9IC0xOworICAgIGlmICghdXNlX2NhbGxvYykKKyAgICAgICAgb3AtPm9iX3N2YWxbc2l6ZV0gPSAnXDAnOworICAgIC8qIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgbnVsbHN0cmluZyA9IG9wOworICAgICAgICBQeV9JTkNSRUYob3ApOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworfQorCiBQeU9iamVjdCAqCiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBzaXplKQogewpAQCAtNTMsMTMgKzEwMCw2IEBACiAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCAmJiAob3AgPSBudWxsc3RyaW5nKSAhPSBOVUxMKSB7Ci0jaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgICAgIG51bGxfc3RyaW5ncysrOwotI2VuZGlmCi0gICAgICAgIFB5X0lOQ1JFRihvcCk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKLSAgICB9CiAgICAgaWYgKHNpemUgPT0gMSAmJiBzdHIgIT0gTlVMTCAmJgogICAgICAgICAob3AgPSBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdKSAhPSBOVUxMKQogICAgIHsKQEAgLTcwLDI2ICsxMTAsMTUgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW9wOwogICAgIH0KIAotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBQeUJ5dGVzT2JqZWN0X1NJWkUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZSBzdHJpbmcgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIC8qIElubGluZSBQeU9iamVjdF9OZXdWYXIgKi8KLSAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNPYmplY3RfU0laRSArIHNpemUpOworICAgIG9wID0gKFB5Qnl0ZXNPYmplY3QgKilfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAwKTsKICAgICBpZiAob3AgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOwotICAgIG9wLT5vYl9zaGFzaCA9IC0xOwotICAgIGlmIChzdHIgIT0gTlVMTCkKLSAgICAgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOwotICAgIG9wLT5vYl9zdmFsW3NpemVdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworCisgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KLSAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgIG51bGxzdHJpbmcgPSBvcDsKLSAgICAgICAgUHlfSU5DUkVGKG9wKTsKLSAgICB9IGVsc2UgaWYgKHNpemUgPT0gMSAmJiBzdHIgIT0gTlVMTCkgeworICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSA9IG9wOwogICAgICAgICBQeV9JTkNSRUYob3ApOwogICAgIH0KQEAgLTM0Nyw2ICszNzYsNTgwIEBACiAgICAgcmV0dXJuIHJldDsKIH0KIAorLyogSGVscGVycyBmb3IgZm9ybWF0c3RyaW5nICovCisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorZ2V0bmV4dGFyZyhQeU9iamVjdCAqYXJncywgUHlfc3NpemVfdCBhcmdsZW4sIFB5X3NzaXplX3QgKnBfYXJnaWR4KQoreworICAgIFB5X3NzaXplX3QgYXJnaWR4ID0gKnBfYXJnaWR4OworICAgIGlmIChhcmdpZHggPCBhcmdsZW4pIHsKKyAgICAgICAgKCpwX2FyZ2lkeCkrKzsKKyAgICAgICAgaWYgKGFyZ2xlbiA8IDApCisgICAgICAgICAgICByZXR1cm4gYXJnczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFB5VHVwbGVfR2V0SXRlbShhcmdzLCBhcmdpZHgpOworICAgIH0KKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCBhcmd1bWVudHMgZm9yIGZvcm1hdCBzdHJpbmciKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogRm9ybWF0IGNvZGVzCisgKiBGX0xKVVNUICAgICAgJy0nCisgKiBGX1NJR04gICAgICAgJysnCisgKiBGX0JMQU5LICAgICAgJyAnCisgKiBGX0FMVCAgICAgICAgJyMnCisgKiBGX1pFUk8gICAgICAgJzAnCisgKi8KKyNkZWZpbmUgRl9MSlVTVCAoMTw8MCkKKyNkZWZpbmUgRl9TSUdOICAoMTw8MSkKKyNkZWZpbmUgRl9CTEFOSyAoMTw8MikKKyNkZWZpbmUgRl9BTFQgICAoMTw8MykKKyNkZWZpbmUgRl9aRVJPICAoMTw8NCkKKworLyogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBQeUJ5dGVzIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQoreworICAgIGNoYXIgKnA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBkb3VibGUgeDsKKworICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZmxvYXQgYXJndW1lbnQgcmVxdWlyZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChwcmVjIDwgMCkKKyAgICAgICAgcHJlYyA9IDY7CisKKyAgICBwID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsIHR5cGUsIHByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxhZ3MgJiBGX0FMVCkgPyBQeV9EVFNGX0FMVCA6IDAsIE5VTEwpOworCisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworICAgIFB5TWVtX0ZyZWUocCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdGxvbmcoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICppb2JqOworICAgIGlmICh0eXBlID09ICdpJykKKyAgICAgICAgdHlwZSA9ICdkJzsKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gb3JtYXRMb25nKHYsIGZsYWdzICYgRl9BTFQsIHByZWMsIHR5cGUpOworICAgIGlmIChQeU51bWJlcl9DaGVjayh2KSkgeworICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyIGZvciBvLCB4LCBhbmQgWCAqLworICAgICAgICBpZiAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpCisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgodik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlvYmogPSBQeU51bWJlcl9Mb25nKHYpOworICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghUHlMb25nX0NoZWNrKGlvYmopKQorICAgICAgICAgICAgUHlfQ0xFQVIoaW9iaik7CisgICAgICAgIGlmIChpb2JqICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRm9ybWF0TG9uZyhpb2JqLCBmbGFncyAmIEZfQUxULCBwcmVjLCB0eXBlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIiUlJWMgZm9ybWF0OiAlcyBpcyByZXF1aXJlZCwgbm90ICUuMjAwcyIsIHR5cGUsCisgICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykgPyAiYW4gaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJhIG51bWJlciIsCisgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50CitieXRlX2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCBjaGFyICpwKQoreworICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19TaXplKGFyZykgPT0gMSkgeworICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZylbMF07CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKSB7CisgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmlvYmo7CisgICAgICAgIGxvbmcgaXZhbDsKKyAgICAgICAgaW50IG92ZXJmbG93OworICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyICovCisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgeworICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhhcmcsICZvdmVyZmxvdyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgoYXJnKTsKKyAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpb2JqLCAmb3ZlcmZsb3cpOworICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOworICAgICAgICB9CisgICAgICAgIGlmICghb3ZlcmZsb3cgJiYgaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAob3ZlcmZsb3cgfHwgISgwIDw9IGl2YWwgJiYgaXZhbCA8PSAyNTUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAqcCA9IChjaGFyKWl2YWw7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgb25FcnJvcjoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdF9vYmooUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKipwYnVmLCBQeV9zc2l6ZV90ICpwbGVuKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9fYnl0ZXNfXyk7CisgICAgLyogaXMgaXQgYSBieXRlcyBvYmplY3Q/ICovCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodikpIHsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgKnBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sodikpIHsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcodik7CisgICAgICAgICpwbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUodik7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorICAgIC8qIGRvZXMgaXQgc3VwcG9ydCBfX2J5dGVzX18/ICovCisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICZQeUlkX19fYnl0ZXNfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiX19ieXRlc19fIHJldHVybmVkIG5vbi1ieXRlcyAodHlwZSAlLjIwMHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgICpwbGVuID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiJSViIHJlcXVpcmVzIGJ5dGVzLCBvciBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIF9fYnl0ZXNfXywgbm90ICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKQorCisgICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIHRoZSBpbnRzICYKKyAgIGNoYXJzIGFyZSBmb3JtYXR0ZWQuIFhYWCBUaGlzIGlzIGEgbWFnaWMgbnVtYmVyLiBFYWNoIGZvcm1hdHRpbmcKKyAgIHJvdXRpbmUgZG9lcyBib3VuZHMgY2hlY2tpbmcgdG8gZW5zdXJlIG5vIG92ZXJmbG93LCBidXQgYSBiZXR0ZXIKKyAgIHNvbHV0aW9uIG1heSBiZSB0byBtYWxsb2MgYSBidWZmZXIgb2YgYXBwcm9wcmlhdGUgc2l6ZSBmb3IgZWFjaAorICAgZm9ybWF0LiBGb3Igbm93LCB0aGUgY3VycmVudCBzb2x1dGlvbiBpcyBzdWZmaWNpZW50LgorKi8KKyNkZWZpbmUgRk9STUFUQlVGTEVOIChzaXplX3QpMTIwCisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpmbXQsICpyZXM7CisgICAgUHlfc3NpemVfdCBhcmdsZW4sIGFyZ2lkeDsKKyAgICBQeV9zc2l6ZV90IHJlc2xlbiwgcmVzY250LCBmbXRjbnQ7CisgICAgaW50IGFyZ3Nfb3duZWQgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOworICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCAhUHlCeXRlc19DaGVjayhmb3JtYXQpIHx8IGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7CisgICAgZm10Y250ID0gUHlCeXRlc19HRVRfU0laRShmb3JtYXQpOworICAgIHJlc2xlbiA9IHJlc2NudCA9IGZtdGNudCArIDEwMDsKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgcmVzbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgeworICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBhcmdpZHggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXJnbGVuID0gLTE7CisgICAgICAgIGFyZ2lkeCA9IC0yOworICAgIH0KKyAgICBpZiAoUHlfVFlQRShhcmdzKS0+dHBfYXNfbWFwcGluZyAmJiBQeV9UWVBFKGFyZ3MpLT50cF9hc19tYXBwaW5nLT5tcF9zdWJzY3JpcHQgJiYKKyAgICAgICAgIVB5VHVwbGVfQ2hlY2soYXJncykgJiYgIVB5Qnl0ZXNfQ2hlY2soYXJncykgJiYgIVB5VW5pY29kZV9DaGVjayhhcmdzKSAmJgorICAgICAgICAhUHlCeXRlQXJyYXlfQ2hlY2soYXJncykpIHsKKyAgICAgICAgICAgIGRpY3QgPSBhcmdzOworICAgIH0KKyAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKKyAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKKyAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7CisgICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CisgICAgICAgICAgICAgICAgLS1yZXNjbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcmVzKysgPSAqZm10Kys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCisgICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICAgICAgUHlfc3NpemVfdCB3aWR0aCA9IC0xOworICAgICAgICAgICAgaW50IHByZWMgPSAtMTsKKyAgICAgICAgICAgIGludCBjID0gJ1wwJzsKKyAgICAgICAgICAgIGludCBmaWxsOworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOworICAgICAgICAgICAgY29uc3QgY2hhciAqcGJ1ZiA9IE5VTEw7CisgICAgICAgICAgICBpbnQgc2lnbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gMDsKKyAgICAgICAgICAgIGNoYXIgb25lY2hhcjsgLyogRm9yIGJ5dGVfY29udmVydGVyKCkgKi8KKworICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKCcpIHsKKyAgICAgICAgICAgICAgICBjaGFyICprZXlzdGFydDsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OworICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOworCisgICAgICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHJlcXVpcmVzIGEgbWFwcGluZyIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2ZtdDsKKyAgICAgICAgICAgICAgICAtLWZtdGNudDsKKyAgICAgICAgICAgICAgICBrZXlzdGFydCA9IGZtdDsKKyAgICAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgYmFsYW5jZWQgcGFyZW50aGVzZXMgKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAocGNvdW50ID4gMCAmJiAtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcpJykKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tcGNvdW50OworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqZm10ID09ICcoJykKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcGNvdW50OworICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAga2V5bGVuID0gZm10IC0ga2V5c3RhcnQgLSAxOworICAgICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwIHx8IHBjb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluY29tcGxldGUgZm9ybWF0IGtleSIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBrZXkgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleXN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWxlbik7CisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmIChhcmdzX293bmVkKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgYXJnc19vd25lZCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ3MgPSBQeU9iamVjdF9HZXRJdGVtKGRpY3QsIGtleSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdzX293bmVkID0gMTsKKyAgICAgICAgICAgICAgICBhcmdsZW4gPSAtMTsKKyAgICAgICAgICAgICAgICBhcmdpZHggPSAtMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjID0gKmZtdCsrKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJysnOiBmbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJyAnOiBmbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcjJzogZmxhZ3MgfD0gRl9BTFQ7IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBmbGFncyB8PSBGX1pFUk87IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjID09ICcqJykgeworICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogd2FudHMgaW50Iik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdpZHRoID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZsYWdzIHw9IEZfTEpVU1Q7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMCAmJiBpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgd2lkdGggPSBjIC0gJzAnOworICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqZm10KyspOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoYykpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gKFBZX1NTSVpFX1RfTUFYIC0gKChpbnQpYyAtICcwJykpIC8gMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCB0b28gYmlnIik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gd2lkdGgqMTAgKyAoYyAtICcwJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgcHJlYyA9IDA7CisgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CisgICAgICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKiB3YW50cyBpbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IF9QeUxvbmdfQXNJbnQodik7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49IDAgJiYgaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICBwcmVjID0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqZm10KyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPiAoSU5UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlYyB0b28gYmlnIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSBwcmVjKjEwICsgKGMgLSAnMCcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAvKiBwcmVjICovCisgICAgICAgICAgICBpZiAoZm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaCcgfHwgYyA9PSAnbCcgfHwgYyA9PSAnTCcpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYyAhPSAnJScpIHsKKyAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzaWduID0gMDsKKyAgICAgICAgICAgIGZpbGwgPSAnICc7CisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgIHBidWYgPSAiJSI7CisgICAgICAgICAgICAgICAgbGVuID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgICAgIC8vICVyIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICVhCisgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICB0ZW1wID0gUHlPYmplY3RfQVNDSUkodik7CisgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0FTQ0lJKHRlbXApKTsKKyAgICAgICAgICAgICAgICBwYnVmID0gKGNvbnN0IGNoYXIgKilQeVVuaWNvZGVfMUJZVEVfREFUQSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZW1wKTsKKyAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCisgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgICAgICAvLyAlcyBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYgorICAgICAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdF9vYmoodiwgJnBidWYsICZsZW4pOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKHYsIGZsYWdzLCBwcmVjLCBjKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlbXApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSSh0ZW1wKSk7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IChjb25zdCBjaGFyICopUHlVbmljb2RlXzFCWVRFX0RBVEEodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGVtcCk7CisgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQorICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICBjYXNlICdFJzoKKyAgICAgICAgICAgIGNhc2UgJ2YnOgorICAgICAgICAgICAgY2FzZSAnRic6CisgICAgICAgICAgICBjYXNlICdnJzoKKyAgICAgICAgICAgIGNhc2UgJ0cnOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYyk7CisgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCisgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICBwYnVmID0gJm9uZWNoYXI7CisgICAgICAgICAgICAgICAgbGVuID0gYnl0ZV9jb252ZXJ0ZXIodiwgJm9uZWNoYXIpOworICAgICAgICAgICAgICAgIGlmICghbGVuKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICclYycgKDB4JXgpICIKKyAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAorICAgICAgICAgICAgICAgICAgYywgYywKKyAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgeworICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgbGVuLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9TSUdOKQorICAgICAgICAgICAgICAgICAgICBzaWduID0gJysnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9CTEFOSykKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcgJzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpZHRoIDwgbGVuKQorICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOworICAgICAgICAgICAgaWYgKHJlc2NudCAtIChzaWduICE9IDApIDwgd2lkdGgpIHsKKyAgICAgICAgICAgICAgICByZXNsZW4gLT0gcmVzY250OworICAgICAgICAgICAgICAgIHJlc2NudCA9IHdpZHRoICsgZm10Y250ICsgMTAwOworICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7CisgICAgICAgICAgICAgICAgaWYgKHJlc2xlbiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKKyAgICAgICAgICAgICAgICByZXNjbnQtLTsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCisgICAgICAgICAgICAgICAgICAgIHdpZHRoLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJykpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykgeworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXNjbnQgLT0gMjsKKyAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKKyAgICAgICAgICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbiAmJiAhKGZsYWdzICYgRl9MSlVTVCkpIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBmaWxsOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0td2lkdGggPiBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZpbGwgPT0gJyAnKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CisgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJgorICAgICAgICAgICAgICAgICAgICAoYyA9PSAneCcgfHwgYyA9PSAnWCcpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X01FTUNQWShyZXMsIHBidWYsIGxlbik7CisgICAgICAgICAgICByZXMgKz0gbGVuOworICAgICAgICAgICAgcmVzY250IC09IGxlbjsKKyAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgeworICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICB9IC8qICclJyAqLworICAgIH0gLyogdW50aWwgZW5kICovCisgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJlc3VsdDsKKworIGVycm9yOgorICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChhcmdzX293bmVkKSB7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qID0tPSAqLworCiBzdGF0aWMgdm9pZAogYnl0ZXNfZGVhbGxvYyhQeU9iamVjdCAqb3ApCiB7CkBAIC01NDAsOCArMTE0Myw4IEBACiAgICAgaWYgKGxlbiAhPSBOVUxMKQogICAgICAgICAqbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmopOwogICAgIGVsc2UgaWYgKHN0cmxlbigqcykgIT0gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKG9iaikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBieXRlcyB3aXRoIG5vIG51bGwiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC04MzMsNiArMTQzNiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXBhcmlzb24gYmV0d2VlbiBieXRlcyBhbmQgc3RyaW5nIiwgMSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc0luc3RhbmNlKChQeU9iamVjdCopYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUHlMb25nX1R5cGUpOworICAgICAgICAgICAgICAgIGlmICghcmMpCisgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNJbnN0YW5jZSgoUHlPYmplY3QqKWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSZQeUxvbmdfVHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfQnl0ZXNXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIGludCIsIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5X05vdEltcGxlbWVudGVkOwogICAgIH0KQEAgLTk1Nyw3ICsxNTc0LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiYnl0ZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgImJ5dGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtOTk3LDM3ICsxNjE0LDM0IEBACiAjZGVmaW5lIFJJR0hUU1RSSVAgMQogI2RlZmluZSBCT1RIU1RSSVAgMgogCi0vKiBBcnJheXMgaW5kZXhlZCBieSBhYm92ZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnNwbGl0CiAKLSNkZWZpbmUgU1RSSVBOQU1FKGkpIChzdHJpcGZvcm1hdFtpXSszKQorICAgIHNlcDogb2JqZWN0ID0gTm9uZQorICAgICAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuCisgICAgICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMKKyAgICAgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuCisgICAgbWF4c3BsaXQ6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuCiAKLVB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0iQi5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2YgYnl0ZXNcblwKLVxuXAotUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCi1JZiBzZXAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBOb25lLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2VcblwKLWNoYXJhY3RlcnMgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG5cCi1JZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJkZTQ0ZGFjYjM2ZWYyZSBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnNwbGl0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJvYmosICZtYXhzcGxpdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChtYXhzcGxpdCA8IDApCiAgICAgICAgIG1heHNwbGl0ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgaWYgKHN1Ym9iaiA9PSBQeV9Ob25lKQorICAgIGlmIChzZXAgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKChQeU9iamVjdCopIHNlbGYsIHMsIGxlbiwgbWF4c3BsaXQpOwotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0xMDM3LDg1ICsxNjUxLDg0IEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLVB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLAotIkIucGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBhbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCxcblwKLXRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuXAotZm91bmQsIHJldHVybnMgQiBhbmQgdHdvIGVtcHR5IGJ5dGVzIG9iamVjdHMuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5wYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBzZXA6IFB5X2J1ZmZlcgorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCisKK1RoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcy4gSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwKK3JldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IKK2l0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgorCitJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgYnl0ZXMKK29iamVjdCBhbmQgdHdvIGVtcHR5IGJ5dGVzIG9iamVjdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19wYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcF9vYmopCitieXRlc19wYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNTMyYjM5MmExN2ZmNjk1IGlucHV0PWJjODU1ZGM2M2NhOTQ5ZGVdKi8KIHsKLSAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcF9vYmosICZzZXAsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBzdHJpbmdsaWJfcGFydGl0aW9uKAorICAgIHJldHVybiBzdHJpbmdsaWJfcGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgc2VwX29iaiwgc2VwLmJ1Ziwgc2VwLmxlbgorICAgICAgICBzZXAtPm9iaiwgKGNvbnN0IGNoYXIgKilzZXAtPmJ1Ziwgc2VwLT5sZW4KICAgICAgICAgKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOwotICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihycGFydGl0aW9uX19kb2NfXywKLSJCLnJwYXJ0aXRpb24oc2VwKSAtPiAoaGVhZCwgc2VwLCB0YWlsKVxuXAotXG5cCi1TZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIEIsIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQixcblwKLWFuZCByZXR1cm4gdGhlIHBhcnQgYmVmb3JlIGl0LCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZVxuXAotcGFydCBhZnRlciBpdC4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIHR3byBlbXB0eVxuXAotYnl0ZXMgb2JqZWN0cyBhbmQgQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnJwYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBzZXA6IFB5X2J1ZmZlcgorICAgIC8KKworUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuCisKK1RoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcywgc3RhcnRpbmcgYW5kIHRoZSBlbmQuIElmCit0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUKK3NlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KKworSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzCitvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZXMgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnBhcnRpdGlvbihQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwX29iaikKK2J5dGVzX3JwYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY1ODhmZmYyNjJhOTE3MGVdKi8KIHsKLSAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcF9vYmosICZzZXAsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBzdHJpbmdsaWJfcnBhcnRpdGlvbigKKyAgICByZXR1cm4gc3RyaW5nbGliX3JwYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCiAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBzZXBfb2JqLCBzZXAuYnVmLCBzZXAubGVuCisgICAgICAgIHNlcC0+b2JqLCAoY29uc3QgY2hhciAqKXNlcC0+YnVmLCBzZXAtPmxlbgogICAgICAgICApOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7Ci0gICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0iQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLFxuXAotc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiBCIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC5cblwKLUlmIHNlcCBpcyBub3QgZ2l2ZW4sIEIgaXMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cCi0oc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cblwKLUlmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnJzcGxpdCA9IGJ5dGVzLnNwbGl0CiAKK1JldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlcywgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuCisKK1NwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVzIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2NTcwYjk3NzkxMWQ4OCBpbnB1dD0wZjg2YzlmMjhmN2Q3YjdiXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBtYXhzcGxpdCk7Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZXAsICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHN1YiA9IHZzdWIuYnVmOwogICAgIG4gPSB2c3ViLmxlbjsKQEAgLTExMjYsMTYgKzE3MzksMjYgQEAKIH0KIAogCi1QeURvY19TVFJWQVIoam9pbl9fZG9jX18sCi0iQi5qb2luKGl0ZXJhYmxlX29mX2J5dGVzKSAtPiBieXRlc1xuXAotXG5cCi1Db25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzIG9iamVjdHMsIHdpdGggQiBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cblwKLUV4YW1wbGU6IGInLicuam9pbihbYidhYicsIGIncHEnLCBiJ3JzJ10pIC0+IGInYWIucHEucnMnLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMuam9pbgorCisgICAgaXRlcmFibGVfb2ZfYnl0ZXM6IG9iamVjdAorICAgIC8KKworQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcyBvYmplY3RzLgorCitUaGUgYnl0ZXMgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci4KKworVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIG5ldyBieXRlcyBvYmplY3QuCisKK0V4YW1wbGU6IGInLicuam9pbihbYidhYicsIGIncHEnLCBiJ3JzJ10pIC0+IGInYWIucHEucnMnLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfam9pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlKQorYnl0ZXNfam9pbihQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzRhZmYxNDc2NGZmOTk3IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KIHsKLSAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oc2VsZiwgaXRlcmFibGUpOworICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMTE0Myw3ICsxNzY2LDcgQEAKIHsKICAgICBhc3NlcnQoc2VwICE9IE5VTEwgJiYgUHlCeXRlc19DaGVjayhzZXApKTsKICAgICBhc3NlcnQoeCAhPSBOVUxMKTsKLSAgICByZXR1cm4gYnl0ZXNfam9pbihzZXAsIHgpOworICAgIHJldHVybiBieXRlc19qb2luKChQeUJ5dGVzT2JqZWN0KilzZXAsIHgpOwogfQogCiAvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwpAQCAtMTE2OCw3ICsxNzkxLDcgQEAKICAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKICAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0xMTg3LDE1ICsxODEwLDM0IEBACiAgICAgICAgIHN1YiA9ICZieXRlOwogICAgICAgICBzdWJfbGVuID0gMTsKICAgICB9CisgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKIAotICAgIGlmIChkaXIgPiAwKQotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCisgICAgICAgIHJlcyA9IC0xOworICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMQorI2lmbmRlZiBIQVZFX01FTVJDSFIKKyAgICAgICAgICAgICYmIGRpciA+IDAKKyNlbmRpZgorICAgICkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7CisgICAgICAgIGludCBtb2RlID0gKGRpciA+IDApID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7CisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIG1vZGUpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICB9CiAKICAgICBpZiAoc3Vib2JqKQogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOwpAQCAtMTM1NCw2MiArMTk5Niw2OSBAQAogCiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotZG9fYXJnc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCitkb19hcmdzdHJpcChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqYnl0ZXMpCiB7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgc3RyaXBmb3JtYXRbc3RyaXB0eXBlXSwgJnNlcCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNlcCAhPSBOVUxMICYmIHNlcCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIHJldHVybiBkb194c3RyaXAoc2VsZiwgc3RyaXB0eXBlLCBzZXApOworICAgIGlmIChieXRlcyAhPSBOVUxMICYmIGJ5dGVzICE9IFB5X05vbmUpIHsKKyAgICAgICAgcmV0dXJuIGRvX3hzdHJpcChzZWxmLCBzdHJpcHR5cGUsIGJ5dGVzKTsKICAgICB9CiAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIHN0cmlwdHlwZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnN0cmlwCiAKLVB5RG9jX1NUUlZBUihzdHJpcF9fZG9jX18sCi0iQi5zdHJpcChbYnl0ZXNdKSAtPiBieXRlc1xuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19zdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PTM3ZGFhNWZhZDEzOTVkOTVdKi8KIHsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQotICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgQk9USFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGFyZ3MpOworICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGJ5dGVzKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYnl0ZXMubHN0cmlwCiAKLVB5RG9jX1NUUlZBUihsc3RyaXBfX2RvY19fLAotIkIubHN0cmlwKFtieXRlc10pIC0+IGJ5dGVzXG5cCi1cblwKLVN0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCBsZWFkaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgIEFTQ0lJIHdoaXRlc3BhY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19sc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD04ODgxMWIwOWRmYmMyOTg4XSovCiB7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKLSAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIExFRlRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCi0gICAgZWxzZQotICAgICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBhcmdzKTsKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBieXRlcyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnJzdHJpcAogCi1QeURvY19TVFJWQVIocnN0cmlwX19kb2NfXywKLSJCLnJzdHJpcChbYnl0ZXNdKSAtPiBieXRlc1xuXAotXG5cCi1TdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfcnN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0N2UzODE1Yzk1NDQ3ZGEgaW5wdXQ9OGY5M2M5Y2QzNjFmMDE0MF0qLwogewotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCi0gICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBSSUdIVFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBSSUdIVFNUUklQLCBhcmdzKTsKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYnl0ZXMpOwogfQogCiAKQEAgLTE0NjEsNDUgKzIxMTAsNTEgQEAKIH0KIAogCi1QeURvY19TVFJWQVIodHJhbnNsYXRlX19kb2NfXywKLSJCLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZWNoYXJzXSkgLT4gYnl0ZXNcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCLCB3aGVyZSBhbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlXG5cCi1vcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmdcblwKLWNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvblxuXAotdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnRyYW5zbGF0ZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQorICAgIHRhYmxlOiBvYmplY3QKKyAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KKyAgICBbCisgICAgZGVsZXRlY2hhcnM6IG9iamVjdAorICAgIF0KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzM2RmODUwZWI1MGJmOGQgaW5wdXQ9ZDhmYTU1MTlkN2NjNGJlN10qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIFB5X2J1ZmZlciB0YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OwogICAgIFB5X2J1ZmZlciBkZWxfdGFibGVfdmlldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBjb25zdCBjaGFyICp0YWJsZTsKKyAgICBjb25zdCBjaGFyICp0YWJsZV9jaGFyczsKICAgICBQeV9zc2l6ZV90IGksIGMsIGNoYW5nZWQgPSAwOwogICAgIFB5T2JqZWN0ICppbnB1dF9vYmogPSAoUHlPYmplY3QqKXNlbGY7Ci0gICAgY29uc3QgY2hhciAqb3V0cHV0X3N0YXJ0LCAqZGVsX3RhYmxlPU5VTEw7CisgICAgY29uc3QgY2hhciAqb3V0cHV0X3N0YXJ0LCAqZGVsX3RhYmxlX2NoYXJzPU5VTEw7CiAgICAgUHlfc3NpemVfdCBpbmxlbiwgdGFibGVuLCBkZWxsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IHRyYW5zX3RhYmxlWzI1Nl07Ci0gICAgUHlPYmplY3QgKnRhYmxlb2JqLCAqZGVsb2JqID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRyYW5zbGF0ZSIsIDEsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWJsZW9iaiwgJmRlbG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFibGVvYmopKSB7Ci0gICAgICAgIHRhYmxlID0gUHlCeXRlc19BU19TVFJJTkcodGFibGVvYmopOwotICAgICAgICB0YWJsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRhYmxlb2JqKTsKKyAgICBpZiAoUHlCeXRlc19DaGVjayh0YWJsZSkpIHsKKyAgICAgICAgdGFibGVfY2hhcnMgPSBQeUJ5dGVzX0FTX1NUUklORyh0YWJsZSk7CisgICAgICAgIHRhYmxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGFibGUpOwogICAgIH0KLSAgICBlbHNlIGlmICh0YWJsZW9iaiA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRhYmxlID0gTlVMTDsKKyAgICBlbHNlIGlmICh0YWJsZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHRhYmxlX2NoYXJzID0gTlVMTDsKICAgICAgICAgdGFibGVuID0gMjU2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZW9iaiwgJnRhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZSwgJnRhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0YWJsZSA9IHRhYmxlX3ZpZXcuYnVmOworICAgICAgICB0YWJsZV9jaGFycyA9IHRhYmxlX3ZpZXcuYnVmOwogICAgICAgICB0YWJsZW4gPSB0YWJsZV92aWV3LmxlbjsKICAgICB9CiAKQEAgLTE1MTAsMjIgKzIxNjUsMjIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGRlbG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGRlbG9iaikpIHsKLSAgICAgICAgICAgIGRlbF90YWJsZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGRlbG9iaik7Ci0gICAgICAgICAgICBkZWxsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGRlbG9iaik7CisgICAgaWYgKGRlbGV0ZWNoYXJzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soZGVsZXRlY2hhcnMpKSB7CisgICAgICAgICAgICBkZWxfdGFibGVfY2hhcnMgPSBQeUJ5dGVzX0FTX1NUUklORyhkZWxldGVjaGFycyk7CisgICAgICAgICAgICBkZWxsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGRlbGV0ZWNoYXJzKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGVsb2JqLCAmZGVsX3RhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihkZWxldGVjaGFycywgJmRlbF90YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlbF90YWJsZSA9IGRlbF90YWJsZV92aWV3LmJ1ZjsKKyAgICAgICAgICAgIGRlbF90YWJsZV9jaGFycyA9IGRlbF90YWJsZV92aWV3LmJ1ZjsKICAgICAgICAgICAgIGRlbGxlbiA9IGRlbF90YWJsZV92aWV3LmxlbjsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZGVsX3RhYmxlID0gTlVMTDsKKyAgICAgICAgZGVsX3RhYmxlX2NoYXJzID0gTlVMTDsKICAgICAgICAgZGVsbGVuID0gMDsKICAgICB9CiAKQEAgLTE1MzksMTEgKzIxOTQsMTEgQEAKICAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CiAgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhpbnB1dF9vYmopOwogCi0gICAgaWYgKGRlbGxlbiA9PSAwICYmIHRhYmxlICE9IE5VTEwpIHsKKyAgICBpZiAoZGVsbGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewogICAgICAgICAvKiBJZiBubyBkZWxldGlvbnMgYXJlIHJlcXVpcmVkLCB1c2UgZmFzdGVyIGNvZGUgKi8KICAgICAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7Ci0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKCpvdXRwdXQrKyA9IHRhYmxlW2NdKSkgIT0gYykKKyAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygoKm91dHB1dCsrID0gdGFibGVfY2hhcnNbY10pKSAhPSBjKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSAxOwogICAgICAgICB9CiAgICAgICAgIGlmICghY2hhbmdlZCAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoaW5wdXRfb2JqKSkgewpAQCAtMTU1NiwxNyArMjIxMSwxNyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGlmICh0YWJsZSA9PSBOVUxMKSB7CisgICAgaWYgKHRhYmxlX2NoYXJzID09IE5VTEwpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyhpKTsKICAgICB9IGVsc2UgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCi0gICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKHRhYmxlW2ldKTsKKyAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0sodGFibGVfY2hhcnNbaV0pOwogICAgIH0KICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBkZWxsZW47IGkrKykKLSAgICAgICAgdHJhbnNfdGFibGVbKGludCkgUHlfQ0hBUk1BU0soZGVsX3RhYmxlW2ldKV0gPSAtMTsKKyAgICAgICAgdHJhbnNfdGFibGVbKGludCkgUHlfQ0hBUk1BU0soZGVsX3RhYmxlX2NoYXJzW2ldKV0gPSAtMTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkZWxfdGFibGVfdmlldyk7CiAKICAgICBmb3IgKGkgPSBpbmxlbjsgLS1pID49IDA7ICkgewpAQCAtMTU4OCwxMCArMjI0MywyOCBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KKworQHN0YXRpY21ldGhvZAorYnl0ZXMubWFrZXRyYW5zCisKKyAgICBmcm06IFB5X2J1ZmZlcgorICAgIHRvOiBQeV9idWZmZXIKKyAgICAvCisKK1JldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC4KKworVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0Cit0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by4KKworVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX21ha2V0cmFucyhQeU9iamVjdCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19tYWtldHJhbnNfaW1wbChQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0bykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMzZmNjM5OWQ0Yjc3ZjZmIGlucHV0PWRlN2E4ZmM1NjMyYmI4ZjFdKi8KIHsKLSAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhhcmdzKTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhmcm0sIHRvKTsKIH0KIAogLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLwpAQCAtMjA4NiwzMSArMjc1OSwzMSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHJlcGxhY2VfX2RvY19fLAotIkIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSkgLT4gYnl0ZXNcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb25cblwKLW9sZCByZXBsYWNlZCBieSBuZXcuICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXNcblwKLWdpdmVuLCBvbmx5IGZpcnN0IGNvdW50IG9jY3VyYW5jZXMgYXJlIHJlcGxhY2VkLiIpOworCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yZXBsYWNlCisKKyAgICBvbGQ6IFB5X2J1ZmZlcgorICAgIG5ldzogUHlfYnVmZmVyCisgICAgY291bnQ6IFB5X3NzaXplX3QgPSAtMQorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBvY2N1cnJlbmNlcyB0byByZXBsYWNlLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzLgorICAgIC8KKworUmV0dXJuIGEgY29weSB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgb2xkIHJlcGxhY2VkIGJ5IG5ldy4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUKK3JlcGxhY2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQwM2RjOWQ3YTgzYzVhMWQgaW5wdXQ9YjJmYmJmMGJmMDRkZThlNV0qLwogewotICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9idWZmZXIgbmV3ID0ge05VTEwsIE5VTEx9OwotICAgIFB5X3NzaXplX3QgY291bnQgPSAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KnxuOnJlcGxhY2UiLCAmb2xkLCAmbmV3LCAmY291bnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlcyA9IChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLmJ1Ziwgb2xkLmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LmJ1ZiwgbmV3LmxlbiwgY291bnQpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKiogRW5kIERBTEtFICoqLwpAQCAtMjI1Nyw2MCArMjkzMCw1MSBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihkZWNvZGVfX2RvY19fLAotIkIuZGVjb2RlKGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykgLT4gc3RyXG5cCi1cblwKLURlY29kZSBCIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4gRGVmYXVsdCBlbmNvZGluZ1xuXAotaXMgJ3V0Zi04Jy4gZXJyb3JzIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3JcblwKLWhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZVxuXAotYSBVbmljb2RlRGVjb2RlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZSdcblwKLWFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXNcblwKLWFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5kZWNvZGUKKworICAgIGVuY29kaW5nOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAndXRmLTgnCisgICAgICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZXMuCisgICAgZXJyb3JzOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAnc3RyaWN0JworICAgICAgICBUaGUgZXJyb3IgaGFuZGxpbmcgc2NoZW1lIHRvIHVzZSBmb3IgdGhlIGhhbmRsaW5nIG9mIGRlY29kaW5nIGVycm9ycy4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGRlY29kaW5nIGVycm9ycyByYWlzZSBhCisgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnCisgICAgICAgIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0CisgICAgICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4KKworRGVjb2RlIHRoZSBieXRlcyB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZDIwMTZmZjhlMGJiMTc2IGlucHV0PTk1ODE3NDc2OWQyYTQwY2FdKi8KIHsKLSAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIGt3bGlzdCwgJmVuY29kaW5nLCAmZXJyb3JzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KChQeU9iamVjdCopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLAotIkIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKSAtPiBsaXN0IG9mIGxpbmVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIEIsIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cblwKLUxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kc1xuXAotaXMgZ2l2ZW4gYW5kIHRydWUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zcGxpdGxpbmVzCiAKLXN0YXRpYyBQeU9iamVjdCoKLWJ5dGVzX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKKyAgICBrZWVwZW5kczogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVzLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuCisKK0xpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmQKK3RydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk1YzM1OThmNzgzM2NhZCBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZWVwZW5kcyIsIDB9OwotICAgIGludCBrZWVwZW5kcyA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGtlZXBlbmRzCiAgICAgICAgICk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGZyb21oZXhfZG9jLAotImJ5dGVzLmZyb21oZXgoc3RyaW5nKSAtPiBieXRlc1xuXAotXG5cCi1DcmVhdGUgYSBieXRlcyBvYmplY3QgZnJvbSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzLlxuXAotU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLlxuXAotRXhhbXBsZTogYnl0ZXMuZnJvbWhleCgnQjkgMDFFRicpIC0+IGInXFx4YjlcXHgwMVxceGVmJy4iKTsKLQogc3RhdGljIGludAogaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCiB7CkBAIC0yMzI3LDI0ICsyOTkxLDM2IEBACiAgICAgcmV0dXJuIC0xOwogfQogCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK2J5dGVzLmZyb21oZXgKKworICAgIHN0cmluZzogdW5pY29kZQorICAgIC8KKworQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy4KKworU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLgorRXhhbXBsZTogYnl0ZXMuZnJvbWhleCgnQjkgMDFFRicpIC0+IGInXFx4YjlcXHgwMVxceGVmJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2Zyb21oZXgoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCitieXRlc19mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NzNhY2M2MzY2MWJiMmUgaW5wdXQ9YmY0ZDFjMzYxNjcwYWNkM10qLwogewotICAgIFB5T2JqZWN0ICpuZXdzdHJpbmcsICpoZXhvYmo7CisgICAgUHlPYmplY3QgKm5ld3N0cmluZzsKICAgICBjaGFyICpidWY7CiAgICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwogICAgIGludCB0b3AsIGJvdDsKICAgICB2b2lkICpkYXRhOwogICAgIHVuc2lnbmVkIGludCBraW5kOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmZyb21oZXgiLCAmaGV4b2JqKSkKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhoZXhvYmopKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKIAogICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCiAgICAgbmV3c3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7CkBAIC0yMzc2LDYgKzMwNTIsMjAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlEb2NfU1RSVkFSKGhleF9fZG9jX18sCisiQi5oZXgoKSAtPiBzdHJpbmdcblwKK1xuXAorQ3JlYXRlIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMgZnJvbSBhIGJ5dGVzIG9iamVjdC5cblwKK0V4YW1wbGU6IGInXFx4YjlcXHgwMVxceGVmJy5oZXgoKSAtPiAnYjkwMWVmJy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2hleChQeUJ5dGVzT2JqZWN0ICpzZWxmKQoreworICAgIGNoYXIqIGFyZ2J1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOworICAgIFB5X3NzaXplX3QgYXJnbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleChhcmdidWYsIGFyZ2xlbik7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19nZXRuZXdhcmdzKFB5Qnl0ZXNPYmplY3QgKnYpCiB7CkBAIC0yMzkwLDE0ICszMDgwLDE0IEBACiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKICAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkZWNvZGVfX2RvY19ffSwKKyAgICBCWVRFU19ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAogICAgICBlbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgZXhwYW5kdGFic19fZG9jX199LAogICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKLSAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZnJvbWhleCwgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsCi0gICAgIGZyb21oZXhfZG9jfSwKKyAgICBCWVRFU19GUk9NSEVYX01FVEhPRERFRgorICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAogICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LApAQCAtMjQxMywzOCArMzEwMyw0OSBAQAogICAgICBfUHlfaXN0aXRsZV9fZG9jX199LAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCi0gICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2pvaW4sIE1FVEhfTywgam9pbl9fZG9jX199LAorICAgIEJZVEVTX0pPSU5fTUVUSE9EREVGCiAgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAotICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2xzdHJpcCwgTUVUSF9WQVJBUkdTLCBsc3RyaXBfX2RvY19ffSwKLSAgICB7Im1ha2V0cmFucyIsIChQeUNGdW5jdGlvbilieXRlc19tYWtldHJhbnMsIE1FVEhfVkFSQVJHU3xNRVRIX1NUQVRJQywKLSAgICAgX1B5X21ha2V0cmFuc19fZG9jX199LAotICAgIHsicGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3BhcnRpdGlvbiwgTUVUSF9PLCBwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCByZXBsYWNlX19kb2NfX30sCisgICAgQllURVNfTFNUUklQX01FVEhPRERFRgorICAgIEJZVEVTX01BS0VUUkFOU19NRVRIT0RERUYKKyAgICBCWVRFU19QQVJUSVRJT05fTUVUSE9EREVGCisgICAgQllURVNfUkVQTEFDRV9NRVRIT0RERUYKICAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCiAgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCi0gICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JwYXJ0aXRpb24sIE1FVEhfTywKLSAgICAgcnBhcnRpdGlvbl9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCi0gICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIHNwbGl0bGluZXNfX2RvY19ffSwKKyAgICBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVTX1JTUExJVF9NRVRIT0RERUYKKyAgICBCWVRFU19SU1RSSVBfTUVUSE9EREVGCisgICAgQllURVNfU1BMSVRfTUVUSE9EREVGCisgICAgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCi0gICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19zdHJpcCwgTUVUSF9WQVJBUkdTLCBzdHJpcF9fZG9jX199LAorICAgIEJZVEVTX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywKLSAgICAgdHJhbnNsYXRlX19kb2NfX30sCisgICAgQllURVNfVFJBTlNMQVRFX01FVEhPRERFRgogICAgIHsidXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3VwcGVyLCBNRVRIX05PQVJHUywgX1B5X3VwcGVyX19kb2NfX30sCiAgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgemZpbGxfX2RvY19ffSwKICAgICB7TlVMTCwgICAgIE5VTEx9ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfRm9ybWF0KHYsIHcpOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVzX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgLypuYl9hZGQqLworICAgIDAsICAgICAgICAgICAgICAvKm5iX3N1YnRyYWN0Ki8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9tdWx0aXBseSovCisgICAgYnl0ZXNfbW9kLCAgICAgIC8qbmJfcmVtYWluZGVyKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCiBzdHJfc3VidHlwZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjQ3MSw3ICszMTcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcoIiIpOworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKICAgICB9CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHgpKSB7CkBAIC0yNTI4LDExICszMjI5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgICAgICBuZXcgPSBfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAxKTsKICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChzaXplID4gMCkKLSAgICAgICAgICAgIG1lbXNldCgoKFB5Qnl0ZXNPYmplY3QqKW5ldyktPm9iX3N2YWwsIDAsIHNpemUpOwogICAgICAgICByZXR1cm4gbmV3OwogICAgIH0KIApAQCAtMjYzMCwxMCArMzMyOSwxMiBAQAogICAgICAgIHJldHVybmluZyBhIHNoYXJlZCBlbXB0eSBieXRlcyBzdHJpbmcuIFRoaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZQogICAgICAgIHdhbnQgdG8gY2FsbCBfUHlCeXRlc19SZXNpemUoKSB0aGUgcmV0dXJuZWQgb2JqZWN0LCB3aGljaCB3ZSBjYW4KICAgICAgICBvbmx5IGRvIG9uIGJ5dGVzIG9iamVjdHMgd2l0aCByZWZjb3VudCA9PSAxLiAqLwotICAgIHNpemUgKz0gMTsKKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICBzaXplID0gMTsKICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmIChuZXcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5X1JFRkNOVChuZXcpID09IDEpOwogCiAgICAgLyogR2V0IHRoZSBpdGVyYXRvciAqLwogICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKQEAgLTI3MzUsNyArMzQzNiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwogICAgIChyZXByZnVuYylieXRlc19yZXByLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmJ5dGVzX2FzX251bWJlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAmYnl0ZXNfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgJmJ5dGVzX2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgKGhhc2hmdW5jKWJ5dGVzX2hhc2gsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCkBAIC0yNzcwLDcgKzM0NzEsNiBAQAogdm9pZAogUHlCeXRlc19Db25jYXQoUHlPYmplY3QgKipwdiwgUHlPYmplY3QgKncpCiB7Ci0gICAgUHlPYmplY3QgKnY7CiAgICAgYXNzZXJ0KHB2ICE9IE5VTEwpOwogICAgIGlmICgqcHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3OCw5ICszNDc4LDQ1IEBACiAgICAgICAgIFB5X0NMRUFSKCpwdik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgdiA9IGJ5dGVzX2NvbmNhdCgqcHYsIHcpOwotICAgIFB5X0RFQ1JFRigqcHYpOwotICAgICpwdiA9IHY7CisKKyAgICBpZiAoUHlfUkVGQ05UKCpwdikgPT0gMSAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoKnB2KSkgeworICAgICAgICAvKiBPbmx5IG9uZSByZWZlcmVuY2UsIHNvIHdlIGNhbiByZXNpemUgaW4gcGxhY2UgKi8KKyAgICAgICAgUHlfc3NpemVfdCBvbGRzaXplOworICAgICAgICBQeV9idWZmZXIgd2I7CisKKyAgICAgICAgd2IubGVuID0gLTE7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodywgJndiLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJjYW4ndCBjb25jYXQgJS4xMDBzIHRvICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh3KS0+dHBfbmFtZSwgUHlfVFlQRSgqcHYpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKCpwdik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBvbGRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqcHYpOworICAgICAgICBpZiAob2xkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gd2IubGVuKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKHB2LCBvbGRzaXplICsgd2IubGVuKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORygqcHYpICsgb2xkc2l6ZSwgd2IuYnVmLCB3Yi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3Yik7CisgICAgICAgIHJldHVybjsKKworICAgICAgZXJyb3I6CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJndiKTsKKyAgICAgICAgUHlfQ0xFQVIoKnB2KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVsc2UgeworICAgICAgICAvKiBNdWx0aXBsZSByZWZlcmVuY2VzLCBuZWVkIHRvIGNyZWF0ZSBuZXcgb2JqZWN0ICovCisgICAgICAgIFB5T2JqZWN0ICp2OworICAgICAgICB2ID0gYnl0ZXNfY29uY2F0KCpwdiwgdyk7CisgICAgICAgIFB5X0RFQ1JFRigqcHYpOworICAgICAgICAqcHYgPSB2OworICAgIH0KIH0KIAogdm9pZApAQCAtMjc5MSwxNCArMzUyNywxNCBAQAogfQogCiAKLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gYnJlYWtzIHRoZSBub3Rpb24gdGhhdCBzdHJpbmdzIGFyZSBpbW11dGFibGU6Ci0gICBpdCBjaGFuZ2VzIHRoZSBzaXplIG9mIGEgc3RyaW5nLiAgV2UgZ2V0IGF3YXkgd2l0aCB0aGlzIG9ubHkgaWYgdGhlcmUKKy8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gYnJlYWtzIHRoZSBub3Rpb24gdGhhdCBieXRlcyBhcmUgaW1tdXRhYmxlOgorICAgaXQgY2hhbmdlcyB0aGUgc2l6ZSBvZiBhIGJ5dGVzIG9iamVjdC4gIFdlIGdldCBhd2F5IHdpdGggdGhpcyBvbmx5IGlmIHRoZXJlCiAgICBpcyBvbmx5IG9uZSBtb2R1bGUgcmVmZXJlbmNpbmcgdGhlIG9iamVjdC4gIFlvdSBjYW4gYWxzbyB0aGluayBvZiBpdAotICAgYXMgY3JlYXRpbmcgYSBuZXcgc3RyaW5nIG9iamVjdCBhbmQgZGVzdHJveWluZyB0aGUgb2xkIG9uZSwgb25seQotICAgbW9yZSBlZmZpY2llbnRseS4gIEluIGFueSBjYXNlLCBkb24ndCB1c2UgdGhpcyBpZiB0aGUgc3RyaW5nIG1heQorICAgYXMgY3JlYXRpbmcgYSBuZXcgYnl0ZXMgb2JqZWN0IGFuZCBkZXN0cm95aW5nIHRoZSBvbGQgb25lLCBvbmx5CisgICBtb3JlIGVmZmljaWVudGx5LiAgSW4gYW55IGNhc2UsIGRvbid0IHVzZSB0aGlzIGlmIHRoZSBieXRlcyBvYmplY3QgbWF5CiAgICBhbHJlYWR5IGJlIGtub3duIHRvIHNvbWUgb3RoZXIgcGFydCBvZiB0aGUgY29kZS4uLgotICAgTm90ZSB0aGF0IGlmIHRoZXJlJ3Mgbm90IGVub3VnaCBtZW1vcnkgdG8gcmVzaXplIHRoZSBzdHJpbmcsIHRoZSBvcmlnaW5hbAotICAgc3RyaW5nIG9iamVjdCBhdCAqcHYgaXMgZGVhbGxvY2F0ZWQsICpwdiBpcyBzZXQgdG8gTlVMTCwgYW4gIm91dCBvZgorICAgTm90ZSB0aGF0IGlmIHRoZXJlJ3Mgbm90IGVub3VnaCBtZW1vcnkgdG8gcmVzaXplIHRoZSBieXRlcyBvYmplY3QsIHRoZQorICAgb3JpZ2luYWwgYnl0ZXMgb2JqZWN0IGF0ICpwdiBpcyBkZWFsbG9jYXRlZCwgKnB2IGlzIHNldCB0byBOVUxMLCBhbiAib3V0IG9mCiAgICBtZW1vcnkiIGV4Y2VwdGlvbiBpcyBzZXQsIGFuZCAtMSBpcyByZXR1cm5lZC4gIEVsc2UgKG9uIHN1Y2Nlc3MpIDAgaXMKICAgIHJldHVybmVkLCBhbmQgdGhlIHZhbHVlIGluICpwdiBtYXkgb3IgbWF5IG5vdCBiZSB0aGUgc2FtZSBhcyBvbiBpbnB1dC4KICAgIEFzIGFsd2F5cywgYW4gZXh0cmEgYnl0ZSBpcyBhbGxvY2F0ZWQgZm9yIGEgdHJhaWxpbmcgXDAgYnl0ZSAobmV3c2l6ZQpAQCAtMjgyMSw3ICszNTU3LDcgQEAKICAgICBfUHlfREVDX1JFRlRPVEFMOwogICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2Uodik7CiAgICAgKnB2ID0gKFB5T2JqZWN0ICopCi0gICAgICAgIFB5T2JqZWN0X1JFQUxMT0MoKGNoYXIgKil2LCBQeUJ5dGVzT2JqZWN0X1NJWkUgKyBuZXdzaXplKTsKKyAgICAgICAgUHlPYmplY3RfUkVBTExPQyh2LCBQeUJ5dGVzT2JqZWN0X1NJWkUgKyBuZXdzaXplKTsKICAgICBpZiAoKnB2ID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3RfRGVsKHYpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IDBjMGJkNDcuLjVlOGFjNTkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTE1LDYgKzE1LDcgQEAKICNlbmRpZgogCiBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CitfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOwogCiBQeU9iamVjdCAqCiBQeU1ldGhvZF9GdW5jdGlvbihQeU9iamVjdCAqaW0pCkBAIC0yNDMsNTEgKzI0NCwzMyBAQAogewogICAgIFB5T2JqZWN0ICpzZWxmID0gYS0+aW1fc2VsZjsKICAgICBQeU9iamVjdCAqZnVuYyA9IGEtPmltX2Z1bmM7Ci0gICAgUHlPYmplY3QgKmtsYXNzOwotICAgIFB5T2JqZWN0ICpmdW5jbmFtZSA9IE5VTEwgLCprbGFzc25hbWUgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKLSAgICBjaGFyICpkZWZuYW1lID0gIj8iOworICAgIFB5T2JqZWN0ICpmdW5jbmFtZSA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmRlZm5hbWUgPSAiPyI7CiAKLSAgICBpZiAoc2VsZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAga2xhc3MgPSAoUHlPYmplY3QqKVB5X1RZUEUoc2VsZik7Ci0KLSAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19uYW1lX18pOworICAgIGZ1bmNuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChmdW5jLCAmUHlJZF9fX3F1YWxuYW1lX18pOwogICAgIGlmIChmdW5jbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19uYW1lX18pOworICAgICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhmdW5jbmFtZSkpIHsKKworICAgIGlmIChmdW5jbmFtZSAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2soZnVuY25hbWUpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jbmFtZSk7CiAgICAgICAgIGZ1bmNuYW1lID0gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoa2xhc3MgPT0gTlVMTCkKLSAgICAgICAga2xhc3NuYW1lID0gTlVMTDsKLSAgICBlbHNlIHsKLSAgICAgICAga2xhc3NuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChrbGFzcywgJlB5SWRfX19uYW1lX18pOwotICAgICAgICBpZiAoa2xhc3NuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZ1bmNuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhrbGFzc25hbWUpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2xhc3NuYW1lKTsKLSAgICAgICAgICAgIGtsYXNzbmFtZSA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvKiBYWFggU2hvdWxkbid0IHVzZSByZXByKCkvJVIgaGVyZSEgKi8KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJvdW5kIG1ldGhvZCAlVi4lViBvZiAlUj4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtsYXNzbmFtZSwgZGVmbmFtZSwKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJvdW5kIG1ldGhvZCAlViBvZiAlUj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lLCBkZWZuYW1lLCBzZWxmKTsKIAogICAgIFB5X1hERUNSRUYoZnVuY25hbWUpOwotICAgIFB5X1hERUNSRUYoa2xhc3NuYW1lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODdhMjIxCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaApAQCAtMCwwICsxLDY5OCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9jbGVhcl9fZG9jX18sCisiY2xlYXIoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGJ5dGVhcnJheS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfQ0xFQVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jbGVhciwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9jbGVhcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2NsZWFyX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2NsZWFyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfY2xlYXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiBCLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3B5LCBNRVRIX05PQVJHUywgYnl0ZWFycmF5X2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jb3B5X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2NvcHkoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGJ5dGVhcnJheV9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfXywKKyJ0cmFuc2xhdGUodGFibGUsIFtkZWxldGVjaGFyc10pXG4iCisiUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuXG4iCisiXG4iCisiICB0YWJsZVxuIgorIiAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuIgorIlxuIgorIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuXG4iCisiVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1RSQU5TTEFURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV90cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfdHJhbnNsYXRlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFibGU7CisgICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOworICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5LnRyYW5zbGF0ZSByZXF1aXJlcyAxIHRvIDIgYXJndW1lbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoZnJtLCB0bywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXRcbiIKKyJ0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9NQUtFVFJBTlNfTUVUSE9EREVGICAgIFwKKyAgICB7Im1ha2V0cmFucyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsIGJ5dGVhcnJheV9tYWtldHJhbnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9tYWtldHJhbnNfaW1wbChQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0byk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfbWFrZXRyYW5zKHZvaWQgKm51bGwsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBmcm0gPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCisgICAgICAgICZmcm0sICZ0bykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoJmZybSwgJnRvKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmcm0gKi8KKyAgICBpZiAoZnJtLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIC8qIENsZWFudXAgZm9yIHRvICovCisgICAgaWYgKHRvLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JlcGxhY2VfX2RvY19fLAorInJlcGxhY2UoJHNlbGYsIG9sZCwgbmV3LCBjb3VudD0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuXG4iCisiXG4iCisiICBjb3VudFxuIgorIiAgICBNYXhpbXVtIG51bWJlciBvZiBvY2N1cnJlbmNlcyB0byByZXBsYWNlLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlcGxhY2UgYWxsIG9jY3VycmVuY2VzLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlXG4iCisicmVwbGFjZWQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3JlcGxhY2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZXBsYWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKm5ldywgUHlfc3NpemVfdCBjb3VudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVwbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgbmV3ID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgY291bnQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KnxuOnJlcGxhY2UiLAorICAgICAgICAmb2xkLCAmbmV3LCAmY291bnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCisgICAgaWYgKG9sZC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KKyAgICBpZiAobmV3Lm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIC8sIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlYXJyYXksIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuIgorIlxuIgorIiAgc2VwXG4iCisiICAgIFRoZSBkZWxpbWl0ZXIgYWNjb3JkaW5nIHdoaWNoIHRvIHNwbGl0IHRoZSBieXRlYXJyYXkuXG4iCisiICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcbiIKKyIgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG4iCisiICBtYXhzcGxpdFxuIgorIiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1NQTElUX01FVEhPRERFRiAgICBcCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9zcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9wYXJ0aXRpb25fX2RvY19fLAorInBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGFydGl0aW9uIHRoZSBieXRlYXJyYXkgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlYXJyYXkuIElmIHRoZSBzZXBhcmF0b3IgaXNcbiIKKyJmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlXG4iCisic2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LlxuIgorIlxuIgorIklmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBvcmlnaW5hbFxuIgorImJ5dGVhcnJheSBvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlYXJyYXkgb2JqZWN0cy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUEFSVElUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3BhcnRpdGlvbiwgTUVUSF9PLCBieXRlYXJyYXlfcGFydGl0aW9uX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcnBhcnRpdGlvbl9fZG9jX18sCisicnBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuXG4iCisiXG4iCisiVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVhcnJheSwgc3RhcnRpbmcgYW5kIHRoZSBlbmQuXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlXG4iCisic2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LlxuIgorIlxuIgorIklmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBieXRlYXJyYXlcbiIKKyJvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZWFycmF5IG9iamVjdC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUlBBUlRJVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnBhcnRpdGlvbiwgTUVUSF9PLCBieXRlYXJyYXlfcnBhcnRpdGlvbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JzcGxpdF9fZG9jX18sCisicnNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LlxuIgorIlxuIgorIlNwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheSBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JTUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOworICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpyc3BsaXQiLCBfa2V5d29yZHMsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnNwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yZXZlcnNlX19kb2NfXywKKyJyZXZlcnNlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHZhbHVlcyBpbiBCIGluIHBsYWNlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SRVZFUlNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXZlcnNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZXZlcnNlLCBNRVRIX05PQVJHUywgYnl0ZWFycmF5X3JldmVyc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZXZlcnNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JldmVyc2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGJ5dGVhcnJheV9yZXZlcnNlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfaW5zZXJ0X19kb2NfXywKKyJpbnNlcnQoJHNlbGYsIGluZGV4LCBpdGVtLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5zZXJ0IGEgc2luZ2xlIGl0ZW0gaW50byB0aGUgYnl0ZWFycmF5IGJlZm9yZSB0aGUgZ2l2ZW4gaW5kZXguXG4iCisiXG4iCisiICBpbmRleFxuIgorIiAgICBUaGUgaW5kZXggd2hlcmUgdGhlIHZhbHVlIGlzIHRvIGJlIGluc2VydGVkLlxuIgorIiAgaXRlbVxuIgorIiAgICBUaGUgaXRlbSB0byBiZSBpbnNlcnRlZC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfSU5TRVJUX01FVEhPRERFRiAgICBcCisgICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luc2VydCwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfaW5zZXJ0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfaW5zZXJ0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsIGludCBpdGVtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9pbnNlcnQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgaW50IGl0ZW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PJjppbnNlcnQiLAorICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpbmRleCwgaXRlbSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9hcHBlbmRfX2RvY19fLAorImFwcGVuZCgkc2VsZiwgaXRlbSwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBhIHNpbmdsZSBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheS5cbiIKKyJcbiIKKyIgIGl0ZW1cbiIKKyIgICAgVGhlIGl0ZW0gdG8gYmUgYXBwZW5kZWQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0FQUEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9hcHBlbmQsIE1FVEhfTywgYnl0ZWFycmF5X2FwcGVuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2FwcGVuZF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgaXRlbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfYXBwZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBpdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphcHBlbmQiLCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfYXBwZW5kX2ltcGwoc2VsZiwgaXRlbSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgaXRlcmFibGVfb2ZfaW50cywgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBhbGwgdGhlIGl0ZW1zIGZyb20gdGhlIGl0ZXJhdG9yIG9yIHNlcXVlbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheS5cbiIKKyJcbiIKKyIgIGl0ZXJhYmxlX29mX2ludHNcbiIKKyIgICAgVGhlIGl0ZXJhYmxlIG9mIGl0ZW1zIHRvIGFwcGVuZC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfRVhURU5EX01FVEhPRERFRiAgICBcCisgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2V4dGVuZCwgTUVUSF9PLCBieXRlYXJyYXlfZXh0ZW5kX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcG9wX19kb2NfXywKKyJwb3AoJHNlbGYsIGluZGV4PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGFuZCByZXR1cm4gYSBzaW5nbGUgaXRlbSBmcm9tIEIuXG4iCisiXG4iCisiICBpbmRleFxuIgorIiAgICBUaGUgaW5kZXggZnJvbSB3aGVyZSB0byByZW1vdmUgdGhlIGl0ZW0uXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVtb3ZlIHRoZSBsYXN0IGl0ZW0uXG4iCisiXG4iCisiSWYgbm8gaW5kZXggYXJndW1lbnQgaXMgZ2l2ZW4sIHdpbGwgcG9wIHRoZSBsYXN0IGl0ZW0uIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1BPUF9NRVRIT0RERUYgICAgXAorICAgIHsicG9wIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9wb3AsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3BvcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3BvcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9wb3AoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaW5kZXggPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKKyAgICAgICAgJmluZGV4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9wb3BfaW1wbChzZWxmLCBpbmRleCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSB2YWx1ZSBpbiB0aGUgYnl0ZWFycmF5LlxuIgorIlxuIgorIiAgdmFsdWVcbiIKKyIgICAgVGhlIHZhbHVlIHRvIHJlbW92ZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlbW92ZSwgTUVUSF9PLCBieXRlYXJyYXlfcmVtb3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVtb3ZlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCB2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVtb3ZlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB2YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6cmVtb3ZlIiwgX2dldGJ5dGV2YWx1ZSwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZW1vdmVfaW1wbChzZWxmLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9zdHJpcF9fZG9jX18sCisic3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1NUUklQX01FVEhPRERFRiAgICBcCisgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3N0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3RyaXBfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9zdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0cmlwIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X2xzdHJpcF9fZG9jX18sCisibHN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfTFNUUklQX01FVEhPRERFRiAgICBcCisgICAgeyJsc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2xzdHJpcCwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfbHN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfbHN0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfbHN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9sc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yc3RyaXBfX2RvY19fLAorInJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUlNUUklQX01FVEhPRERFRiAgICBcCisgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzdHJpcCwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfcnN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcnN0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcnN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9kZWNvZGVfX2RvY19fLAorImRlY29kZSgkc2VsZiwgLywgZW5jb2Rpbmc9XCd1dGYtOFwnLCBlcnJvcnM9XCdzdHJpY3RcJylcbiIKKyItLVxuIgorIlxuIgorIkRlY29kZSB0aGUgYnl0ZWFycmF5IHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy5cbiIKKyJcbiIKKyIgIGVuY29kaW5nXG4iCisiICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZWFycmF5LlxuIgorIiAgZXJyb3JzXG4iCisiICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLlxuIgorIiAgICBUaGUgZGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYVxuIgorIiAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgXCdpZ25vcmVcJyBhbmQgXCdyZXBsYWNlXCdcbiIKKyIgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXRcbiIKKyIgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZlbmNvZGluZywgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9qb2luX19kb2NfXywKKyJqb2luKCRzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcywgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMvYnl0ZWFycmF5IG9iamVjdHMuXG4iCisiXG4iCisiVGhlIGJ5dGVhcnJheSB3aG9zZSBtZXRob2QgaXMgY2FsbGVkIGlzIGluc2VydGVkIGluIGJldHdlZW4gZWFjaCBwYWlyLlxuIgorIlxuIgorIlRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBuZXcgYnl0ZWFycmF5IG9iamVjdC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfSk9JTl9NRVRIT0RERUYgICAgXAorICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfam9pbiwgTUVUSF9PLCBieXRlYXJyYXlfam9pbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19fLAorInNwbGl0bGluZXMoJHNlbGYsIC8sIGtlZXBlbmRzPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVhcnJheSwgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLlxuIgorIlxuIgorIkxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmRcbiIKKyJ0cnVlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRsaW5lcyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIGludCBrZWVwZW5kcyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLAorICAgICAgICAma2VlcGVuZHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3NwbGl0bGluZXNfaW1wbChzZWxmLCBrZWVwZW5kcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9mcm9taGV4X19kb2NfXywKKyJmcm9taGV4KCR0eXBlLCBzdHJpbmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBieXRlYXJyYXkgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cbiIKKyJcbiIKKyJTcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuXG4iCisiRXhhbXBsZTogYnl0ZWFycmF5LmZyb21oZXgoXCdCOSAwMUVGXCcpIC0+IGJ5dGVhcnJheShiXCdcXFxceGI5XFxcXHgwMVxcXFx4ZWZcJykiKTsKKworI2RlZmluZSBCWVRFQVJSQVlfRlJPTUhFWF9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZnJvbWhleCwgTUVUSF9PfE1FVEhfQ0xBU1MsIGJ5dGVhcnJheV9mcm9taGV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfZnJvbWhleChQeVR5cGVPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwoKFB5T2JqZWN0KiljbHMsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yZWR1Y2VfX2RvY19fLAorIl9fcmVkdWNlX18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SRURVQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlZHVjZSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9yZWR1Y2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfcmVkdWNlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVkdWNlX2V4X19kb2NfXywKKyJfX3JlZHVjZV9leF9fKCRzZWxmLCBwcm90bz0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVEVUNFX0VYX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2VfZXgsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3JlZHVjZV9leF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgcHJvdG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZV9leChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHByb3RvID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsCisgICAgICAgICZwcm90bykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoc2VsZiwgcHJvdG8pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc2l6ZW9mX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYnl0ZWFycmF5IG9iamVjdCBpbiBtZW1vcnksIGluIGJ5dGVzLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TSVpFT0ZfTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NpemVvZiwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9zaXplb2ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9zaXplb2ZfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc2l6ZW9mKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfc2l6ZW9mX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY2YzE1ZmYyMmM1ZTI0MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExYTVlOQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaApAQCAtMCwwICsxLDQ4NyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGJ5dGVzX3NwbGl0X19kb2NfXywKKyJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuXG4iCisiICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcbiIKKyIgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG4iCisiICBtYXhzcGxpdFxuIgorIiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuIik7CisKKyNkZWZpbmUgQllURVNfU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19wYXJ0aXRpb25fX2RvY19fLAorInBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuXG4iCisiXG4iCisiVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVzLiBJZiB0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLFxuIgorInJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiIKKyJpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgYnl0ZXNcbiIKKyJvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLiIpOworCisjZGVmaW5lIEJZVEVTX1BBUlRJVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsicGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3BhcnRpdGlvbiwgTUVUSF9PLCBieXRlc19wYXJ0aXRpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3BhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3BhcnRpdGlvbihQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCisgICAgaWYgKHNlcC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19ycGFydGl0aW9uX19kb2NfXywKKyJycGFydGl0aW9uKCRzZWxmLCBzZXAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQYXJ0aXRpb24gdGhlIGJ5dGVzIGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci5cbiIKKyJcbiIKKyJUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMsIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLiBJZlxuIgorInRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZVxuIgorInNlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZXNcbiIKKyJvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZXMgb2JqZWN0LiIpOworCisjZGVmaW5lIEJZVEVTX1JQQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnBhcnRpdGlvbiwgTUVUSF9PLCBieXRlc19ycGFydGl0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19ycGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnBhcnRpdGlvbihQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JwYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KKyAgICBpZiAoc2VwLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX3JzcGxpdF9fZG9jX18sCisicnNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuIgorIlxuIgorIiAgc2VwXG4iCisiICAgIFRoZSBkZWxpbWl0ZXIgYWNjb3JkaW5nIHdoaWNoIHRvIHNwbGl0IHRoZSBieXRlcy5cbiIKKyIgICAgTm9uZSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuIgorIiAgICAoc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cbiIKKyIgIG1heHNwbGl0XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIHNwbGl0cyB0byBkby5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC5cbiIKKyJcbiIKKyJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlcyBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuIik7CisKKyNkZWZpbmUgQllURVNfUlNQTElUX01FVEhPRERFRiAgICBcCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfcnNwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnNwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX2pvaW5fX2RvY19fLAorImpvaW4oJHNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcyBvYmplY3RzLlxuIgorIlxuIgorIlRoZSBieXRlcyB3aG9zZSBtZXRob2QgaXMgY2FsbGVkIGlzIGluc2VydGVkIGluIGJldHdlZW4gZWFjaCBwYWlyLlxuIgorIlxuIgorIlRoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBuZXcgYnl0ZXMgb2JqZWN0LlxuIgorIlxuIgorIkV4YW1wbGU6IGJcJy5cJy5qb2luKFtiXCdhYlwnLCBiXCdwcVwnLCBiXCdyc1wnXSkgLT4gYlwnYWIucHEucnNcJy4iKTsKKworI2RlZmluZSBCWVRFU19KT0lOX01FVEhPRERFRiAgICBcCisgICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2pvaW4sIE1FVEhfTywgYnl0ZXNfam9pbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZXNfc3RyaXBfX2RvY19fLAorInN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworCisjZGVmaW5lIEJZVEVTX1NUUklQX01FVEhPRERFRiAgICBcCisgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19zdHJpcCwgTUVUSF9WQVJBUkdTLCBieXRlc19zdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0cmlwIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19sc3RyaXBfX2RvY19fLAorImxzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nICBBU0NJSSB3aGl0ZXNwYWNlLiIpOworCisjZGVmaW5lIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2xzdHJpcCwgTUVUSF9WQVJBUkdTLCBieXRlc19sc3RyaXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2xzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19sc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19sc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX3JzdHJpcF9fZG9jX18sCisicnN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworCisjZGVmaW5lIEJZVEVTX1JTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzdHJpcCwgTUVUSF9WQVJBUkdTLCBieXRlc19yc3RyaXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX3RyYW5zbGF0ZV9fZG9jX18sCisidHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgorIlxuIgorIiAgdGFibGVcbiIKKyIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKKyJcbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOworCisjZGVmaW5lIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0YWJsZTsKKyAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CisgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKKworICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlcy50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19tYWtldHJhbnNfX2RvY19fLAorIm1ha2V0cmFucyhmcm0sIHRvLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgdHJhbnNsYXRpb24gdGFibGUgdXNlYWJsZSBmb3IgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSB0cmFuc2xhdGUgbWV0aG9kLlxuIgorIlxuIgorIlRoZSByZXR1cm5lZCB0YWJsZSB3aWxsIGJlIG9uZSB3aGVyZSBlYWNoIGJ5dGUgaW4gZnJtIGlzIG1hcHBlZCB0byB0aGUgYnl0ZSBhdFxuIgorInRoZSBzYW1lIHBvc2l0aW9uIGluIHRvLlxuIgorIlxuIgorIlRoZSBieXRlcyBvYmplY3RzIGZybSBhbmQgdG8gbXVzdCBiZSBvZiB0aGUgc2FtZSBsZW5ndGguIik7CisKKyNkZWZpbmUgQllURVNfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsIGJ5dGVzX21ha2V0cmFuc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbWFrZXRyYW5zKHZvaWQgKm51bGwsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBmcm0gPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCisgICAgICAgICZmcm0sICZ0bykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGZybSAqLworICAgIGlmIChmcm0ub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZybSk7CisgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KKyAgICBpZiAodG8ub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRvKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRzZWxmLCBvbGQsIG5ldywgY291bnQ9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LlxuIgorIlxuIgorIiAgY291bnRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy5cbiIKKyJcbiIKKyJJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZVxuIgorInJlcGxhY2VkLiIpOworCisjZGVmaW5lIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCBieXRlc19yZXBsYWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yZXBsYWNlKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgbmV3ID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgY291bnQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KnxuOnJlcGxhY2UiLAorICAgICAgICAmb2xkLCAmbmV3LCAmY291bnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KKyAgICBpZiAob2xkLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvbGQpOworICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLworICAgIGlmIChuZXcub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm5ldyk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfZGVjb2RlX19kb2NfXywKKyJkZWNvZGUoJHNlbGYsIC8sIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGUgdGhlIGJ5dGVzIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy5cbiIKKyJcbiIKKyIgIGVuY29kaW5nXG4iCisiICAgIFRoZSBlbmNvZGluZyB3aXRoIHdoaWNoIHRvIGRlY29kZSB0aGUgYnl0ZXMuXG4iCisiICBlcnJvcnNcbiIKKyIgICAgVGhlIGVycm9yIGhhbmRsaW5nIHNjaGVtZSB0byB1c2UgZm9yIHRoZSBoYW5kbGluZyBvZiBkZWNvZGluZyBlcnJvcnMuXG4iCisiICAgIFRoZSBkZWZhdWx0IGlzIFwnc3RyaWN0XCcgbWVhbmluZyB0aGF0IGRlY29kaW5nIGVycm9ycyByYWlzZSBhXG4iCisiICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSBcJ2lnbm9yZVwnIGFuZCBcJ3JlcGxhY2VcJ1xuIgorIiAgICBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdFxuIgorIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CisKKyNkZWZpbmUgQllURVNfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX3NwbGl0bGluZXNfX2RvY19fLAorInNwbGl0bGluZXMoJHNlbGYsIC8sIGtlZXBlbmRzPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVzLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuXG4iCisiXG4iCisiTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3QgdW5sZXNzIGtlZXBlbmRzIGlzIGdpdmVuIGFuZFxuIgorInRydWUuIik7CisKKyNkZWZpbmUgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgaW50IGtlZXBlbmRzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3NwbGl0bGluZXMoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgaW50IGtlZXBlbmRzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCisgICAgICAgICZrZWVwZW5kcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19mcm9taGV4X19kb2NfXywKKyJmcm9taGV4KCR0eXBlLCBzdHJpbmcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBieXRlcyBvYmplY3QgZnJvbSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzLlxuIgorIlxuIgorIlNwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC5cbiIKKyJFeGFtcGxlOiBieXRlcy5mcm9taGV4KFwnQjkgMDFFRlwnKSAtPiBiXCdcXFxceGI5XFxcXHgwMVxcXFx4ZWZcJy4iKTsKKworI2RlZmluZSBCWVRFU19GUk9NSEVYX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2Zyb21oZXgsIE1FVEhfT3xNRVRIX0NMQVNTLCBieXRlc19mcm9taGV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2Zyb21oZXgoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDBjZThmMjVkN2UxOGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI4OGI5YQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihkaWN0X2Zyb21rZXlzX19kb2NfXywKKyJmcm9ta2V5cygkdHlwZSwgaXRlcmFibGUsIHZhbHVlPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIGEgbmV3IGRpY3Qgd2l0aCBrZXlzIGZyb20gaXRlcmFibGUgYW5kIHZhbHVlcyBlcXVhbCB0byB2YWx1ZS4iKTsKKworI2RlZmluZSBESUNUX0ZST01LRVlTX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9ta2V5cyIsIChQeUNGdW5jdGlvbilkaWN0X2Zyb21rZXlzLCBNRVRIX1ZBUkFSR1N8TUVUSF9DTEFTUywgZGljdF9mcm9ta2V5c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZGljdF9mcm9ta2V5c19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKml0ZXJhYmxlLCBQeU9iamVjdCAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGljdF9mcm9ta2V5cyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYWJsZTsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZnJvbWtleXMiLAorICAgICAgICAxLCAyLAorICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBkaWN0X2Zyb21rZXlzX2ltcGwodHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZGljdF9fX2NvbnRhaW5zX19fX2RvY19fLAorIl9fY29udGFpbnNfXygkc2VsZiwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBEIGhhcyBhIGtleSBrLCBlbHNlIEZhbHNlLiIpOworCisjZGVmaW5lIERJQ1RfX19DT05UQUlOU19fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvbnRhaW5zX18iLCAoUHlDRnVuY3Rpb24pZGljdF9fX2NvbnRhaW5zX18sIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGRpY3RfX19jb250YWluc19fX19kb2NfX30sCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmU3NGQ2NzYzMzJmZGJhNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MmE3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApAQCAtMCwwICsxLDQxIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIodW5pY29kZV9tYWtldHJhbnNfX2RvY19fLAorIm1ha2V0cmFucyh4LCB5PU5vbmUsIHo9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3Igc3RyLnRyYW5zbGF0ZSgpLlxuIgorIlxuIgorIklmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nIFVuaWNvZGVcbiIKKyJvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBOb25lLlxuIgorIkNoYXJhY3RlciBrZXlzIHdpbGwgYmUgdGhlbiBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4iCisiSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCwgYW5kXG4iCisiaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkIHRvIHRoZVxuIgorImNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiBJZiB0aGVyZSBpcyBhIHRoaXJkIGFyZ3VtZW50LCBpdFxuIgorIm11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOworCisjZGVmaW5lIFVOSUNPREVfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pdW5pY29kZV9tYWtldHJhbnMsIE1FVEhfVkFSQVJHU3xNRVRIX1NUQVRJQywgdW5pY29kZV9tYWtldHJhbnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfbWFrZXRyYW5zX2ltcGwoUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFVVOm1ha2V0cmFucyIsCisgICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZV9tYWtldHJhbnNfaW1wbCh4LCB5LCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0YWZmZGZmNWIyZGFmZjUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCA3ZjRjZGQ5Li5kYzEyMTJlIDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtMTMsNyArMTMsNyBAQAogc3RhdGljIFB5X2NvbXBsZXggY18xID0gezEuLCAwLn07CiAKIFB5X2NvbXBsZXgKLWNfc3VtKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQorX1B5X2Nfc3VtKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSBhLnJlYWwgKyBiLnJlYWw7CkBAIC0yMiw3ICsyMiw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfZGlmZihQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX2RpZmYoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIHIucmVhbCA9IGEucmVhbCAtIGIucmVhbDsKQEAgLTMxLDcgKzMxLDcgQEAKIH0KIAogUHlfY29tcGxleAotY19uZWcoUHlfY29tcGxleCBhKQorX1B5X2NfbmVnKFB5X2NvbXBsZXggYSkKIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gLWEucmVhbDsKQEAgLTQwLDcgKzQwLDcgQEAKIH0KIAogUHlfY29tcGxleAotY19wcm9kKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQorX1B5X2NfcHJvZChQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gYS5yZWFsKmIucmVhbCAtIGEuaW1hZypiLmltYWc7CkBAIC00OSw3ICs0OSw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfcXVvdChQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX3F1b3QoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgIFRoaXMgd2FzIHRoZSBvcmlnaW5hbCBhbGdvcml0aG0uICBJdCdzIGdyb3NzbHkgcHJvbmUgdG8gc3B1cmlvdXMKQEAgLTEwNyw3ICsxMDcsNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX3BvdyhQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX3BvdyhQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgZG91YmxlIHZhYnMsbGVuLGF0LHBoYXNlOwpAQCAtMTQ1LDkgKzE0NSw5IEBACiAgICAgcCA9IHg7CiAgICAgd2hpbGUgKG1hc2sgPiAwICYmIG4gPj0gbWFzaykgewogICAgICAgICBpZiAobiAmIG1hc2spCi0gICAgICAgICAgICByID0gY19wcm9kKHIscCk7CisgICAgICAgICAgICByID0gX1B5X2NfcHJvZChyLHApOwogICAgICAgICBtYXNrIDw8PSAxOwotICAgICAgICBwID0gY19wcm9kKHAscCk7CisgICAgICAgIHAgPSBfUHlfY19wcm9kKHAscCk7CiAgICAgfQogICAgIHJldHVybiByOwogfQpAQCAtMTYwLDE3ICsxNjAsMTcgQEAKICAgICBpZiAobiA+IDEwMCB8fCBuIDwgLTEwMCkgewogICAgICAgICBjbi5yZWFsID0gKGRvdWJsZSkgbjsKICAgICAgICAgY24uaW1hZyA9IDAuOwotICAgICAgICByZXR1cm4gY19wb3coeCxjbik7CisgICAgICAgIHJldHVybiBfUHlfY19wb3coeCxjbik7CiAgICAgfQogICAgIGVsc2UgaWYgKG4gPiAwKQogICAgICAgICByZXR1cm4gY19wb3d1KHgsbik7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gY19xdW90KGNfMSxjX3Bvd3UoeCwtbikpOworICAgICAgICByZXR1cm4gX1B5X2NfcXVvdChjXzEsIGNfcG93dSh4LC1uKSk7CiAKIH0KIAogZG91YmxlCi1jX2FicyhQeV9jb21wbGV4IHopCitfUHlfY19hYnMoUHlfY29tcGxleCB6KQogewogICAgIC8qIHNldHMgZXJybm8gPSBFUkFOR0Ugb24gb3ZlcmZsb3c7ICBvdGhlcndpc2UgZXJybm8gPSAwICovCiAgICAgZG91YmxlIHJlc3VsdDsKQEAgLTQ0NSw3ICs0NDUsNyBAQAogICAgIFRPX0NPTVBMRVgodiwgYSk7CiAgICAgVE9fQ09NUExFWCh3LCBiKTsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X2FkZCIsIHJldHVybiAwKQotICAgIHJlc3VsdCA9IGNfc3VtKGEsIGIpOworICAgIHJlc3VsdCA9IF9QeV9jX3N1bShhLCBiKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXN1bHQpCiAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgocmVzdWx0KTsKIH0KQEAgLTQ1OCw3ICs0NTgsNyBAQAogICAgIFRPX0NPTVBMRVgodiwgYSk7CiAgICAgVE9fQ09NUExFWCh3LCBiKTsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X3N1YiIsIHJldHVybiAwKQotICAgIHJlc3VsdCA9IGNfZGlmZihhLCBiKTsKKyAgICByZXN1bHQgPSBfUHlfY19kaWZmKGEsIGIpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHJlc3VsdCkKICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleChyZXN1bHQpOwogfQpAQCAtNDcxLDcgKzQ3MSw3IEBACiAgICAgVE9fQ09NUExFWCh2LCBhKTsKICAgICBUT19DT01QTEVYKHcsIGIpOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXhfbXVsIiwgcmV0dXJuIDApCi0gICAgcmVzdWx0ID0gY19wcm9kKGEsIGIpOworICAgIHJlc3VsdCA9IF9QeV9jX3Byb2QoYSwgYik7CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmVzdWx0KQogICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHJlc3VsdCk7CiB9CkBAIC00ODUsNyArNDg1LDcgQEAKICAgICBUT19DT01QTEVYKHcsIGIpOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXhfZGl2IiwgcmV0dXJuIDApCiAgICAgZXJybm8gPSAwOwotICAgIHF1b3QgPSBjX3F1b3QoYSwgYik7CisgICAgcXVvdCA9IF9QeV9jX3F1b3QoYSwgYik7CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocXVvdCkKICAgICBpZiAoZXJybm8gPT0gRURPTSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IsICJjb21wbGV4IGRpdmlzaW9uIGJ5IHplcm8iKTsKQEAgLTUzMiw3ICs1MzIsNyBAQAogICAgIGlmIChleHBvbmVudC5pbWFnID09IDAuICYmIGV4cG9uZW50LnJlYWwgPT0gaW50X2V4cG9uZW50KQogICAgICAgICBwID0gY19wb3dpKGEsIGludF9leHBvbmVudCk7CiAgICAgZWxzZQotICAgICAgICBwID0gY19wb3coYSwgZXhwb25lbnQpOworICAgICAgICBwID0gX1B5X2NfcG93KGEsIGV4cG9uZW50KTsKIAogICAgIFB5RlBFX0VORF9QUk9URUNUKHApCiAgICAgUHlfQURKVVNUX0VSQU5HRTIocC5yZWFsLCBwLmltYWcpOwpAQCAtNTgzLDcgKzU4Myw3IEBACiAgICAgZG91YmxlIHJlc3VsdDsKIAogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXhfYWJzIiwgcmV0dXJuIDApCi0gICAgcmVzdWx0ID0gY19hYnModi0+Y3ZhbCk7CisgICAgcmVzdWx0ID0gX1B5X2NfYWJzKHYtPmN2YWwpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHJlc3VsdCkKIAogICAgIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCA2MTVmNDk5Li45ZmZiY2E3IDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC0xMzEzLDcgKzEzMTMsNyBAQAogICAgIHsiZmdldCIsIFRfT0JKRUNULCBvZmZzZXRvZihwcm9wZXJ0eW9iamVjdCwgcHJvcF9nZXQpLCBSRUFET05MWX0sCiAgICAgeyJmc2V0IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX3NldCksIFJFQURPTkxZfSwKICAgICB7ImZkZWwiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHJvcGVydHlvYmplY3QsIHByb3BfZGVsKSwgUkVBRE9OTFl9LAotICAgIHsiX19kb2NfXyIsICBUX09CSkVDVCwgb2Zmc2V0b2YocHJvcGVydHlvYmplY3QsIHByb3BfZG9jKSwgUkVBRE9OTFl9LAorICAgIHsiX19kb2NfXyIsICBUX09CSkVDVCwgb2Zmc2V0b2YocHJvcGVydHlvYmplY3QsIHByb3BfZG9jKSwgMH0sCiAgICAgezB9CiB9OwogCkBAIC0xMzcyLDYgKzEzNzIsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHByb3BlcnR5X2Rlc2NyX2dldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnR5cGUpCiB7CisgICAgc3RhdGljIFB5T2JqZWN0ICogdm9sYXRpbGUgY2FjaGVkX2FyZ3MgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgcHJvcGVydHlvYmplY3QgKmdzID0gKHByb3BlcnR5b2JqZWN0ICopc2VsZjsKIAogICAgIGlmIChvYmogPT0gTlVMTCB8fCBvYmogPT0gUHlfTm9uZSkgewpAQCAtMTM4Miw3ICsxMzg1LDI5IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgInVucmVhZGFibGUgYXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhncy0+cHJvcF9nZXQsIG9iaiwgTlVMTCk7CisgICAgYXJncyA9IGNhY2hlZF9hcmdzOworICAgIGlmICghYXJncyB8fCBQeV9SRUZDTlQoYXJncykgIT0gMSkgeworICAgICAgICBQeV9DTEVBUihjYWNoZWRfYXJncyk7CisgICAgICAgIGlmICghKGNhY2hlZF9hcmdzID0gYXJncyA9IFB5VHVwbGVfTmV3KDEpKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgYXNzZXJ0IChQeV9SRUZDTlQoYXJncykgPT0gMik7CisgICAgUHlfSU5DUkVGKG9iaik7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBvYmopOworICAgIHJldCA9IFB5T2JqZWN0X0NhbGwoZ3MtPnByb3BfZ2V0LCBhcmdzLCBOVUxMKTsKKyAgICBpZiAoYXJncyA9PSBjYWNoZWRfYXJncykgeworICAgICAgICBpZiAoUHlfUkVGQ05UKGFyZ3MpID09IDIpIHsKKyAgICAgICAgICAgIG9iaiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIE5VTEwpOworICAgICAgICAgICAgUHlfWERFQ1JFRihvYmopOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfQ0xFQVIoY2FjaGVkX2FyZ3MpOworICAgICAgICB9CisgICAgfQorICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50CkBAIC0xNTg0LDYgKzE2MDksMTQgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorcHJvcGVydHlfY2xlYXIoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcHJvcGVydHlvYmplY3QgKnBwID0gKHByb3BlcnR5b2JqZWN0ICopc2VsZjsKKyAgICBQeV9DTEVBUihwcC0+cHJvcF9kb2MpOworICAgIHJldHVybiAwOworfQorCiBQeVR5cGVPYmplY3QgUHlQcm9wZXJ0eV9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgInByb3BlcnR5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0xNjA5LDcgKzE2NDIsNyBAQAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBwcm9wZXJ0eV9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIHByb3BlcnR5X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgKGlucXVpcnkpcHJvcGVydHlfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3QtY29tbW9uLmggYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxMmViOQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvZGljdC1jb21tb24uaApAQCAtMCwwICsxLDIyIEBACisjaWZuZGVmIFB5X0RJQ1RfQ09NTU9OX0gKKyNkZWZpbmUgUHlfRElDVF9DT01NT05fSAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCisgICAgUHlfaGFzaF90IG1lX2hhc2g7CisgICAgUHlPYmplY3QgKm1lX2tleTsKKyAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KK30gUHlEaWN0S2V5RW50cnk7CisKK3R5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKKyhQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisKK3N0cnVjdCBfZGljdGtleXNvYmplY3QgeworICAgIFB5X3NzaXplX3QgZGtfcmVmY250OworICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKKyAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKyAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKKyAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3RvYmplY3QuYyBiL09iamVjdHMvZGljdG9iamVjdC5jCmluZGV4IGE0OTRkNmIuLjVhN2RlOWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvZGljdG9iamVjdC5jCkBAIC02Nyw2ICs2Nyw3IEBACiAjZGVmaW5lIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIDgKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCiAjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTc0LDI0ICs3NSw2IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mMTU3YTVhMGNlOTU4OWQ2XSovCiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIG1lX2tleS4gKi8KLSAgICBQeV9oYXNoX3QgbWVfaGFzaDsKLSAgICBQeU9iamVjdCAqbWVfa2V5OwotICAgIFB5T2JqZWN0ICptZV92YWx1ZTsgLyogVGhpcyBmaWVsZCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGNvbWJpbmVkIHRhYmxlcyAqLwotfSBQeURpY3RLZXlFbnRyeTsKLQotdHlwZWRlZiBQeURpY3RLZXlFbnRyeSAqKCpkaWN0X2xvb2t1cF9mdW5jKQotKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLQotc3RydWN0IF9kaWN0a2V5c29iamVjdCB7Ci0gICAgUHlfc3NpemVfdCBka19yZWZjbnQ7Ci0gICAgUHlfc3NpemVfdCBka19zaXplOwotICAgIGRpY3RfbG9va3VwX2Z1bmMgZGtfbG9va3VwOwotICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOwotICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07Ci19OwotCiAKIC8qCiBUbyBlbnN1cmUgdGhlIGxvb2t1cCBhbGdvcml0aG0gdGVybWluYXRlcywgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgVW51c2VkCkBAIC0yMzMsNiArMjE2LDggQEAKIHN0YXRpYyBQeURpY3RPYmplY3QgKmZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAorI2luY2x1ZGUgImNsaW5pYy9kaWN0b2JqZWN0LmMuaCIKKwogaW50CiBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKQogewpAQCAtMTEwMSw2ICsxMDg2LDQ0IEBACiAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCitQeU9iamVjdCAqCitfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKworICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBXZSBjYW4gYXJyaXZlIGhlcmUgd2l0aCBhIE5VTEwgdHN0YXRlIGR1cmluZyBpbml0aWFsaXphdGlvbjogdHJ5CisgICAgICAgcnVubmluZyAicHl0aG9uIC1XaSIgZm9yIGFuIGV4YW1wbGUgcmVsYXRlZCB0byBzdHJpbmcgaW50ZXJuaW5nLgorICAgICAgIExldCdzIGp1c3QgaG9wZSB0aGF0IG5vIGV4Y2VwdGlvbiBvY2N1cnMgdGhlbi4uLiAgVGhpcyBtdXN0IGJlCisgICAgICAgX1B5VGhyZWFkU3RhdGVfQ3VycmVudCBhbmQgbm90IFB5VGhyZWFkU3RhdGVfR0VUKCkgYmVjYXVzZSBpbiBkZWJ1ZworICAgICAgIG1vZGUsIHRoZSBsYXR0ZXIgY29tcGxhaW5zIGlmIHRzdGF0ZSBpcyBOVUxMLiAqLworICAgIHRzdGF0ZSA9IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgKKyAgICAgICAgJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOworICAgIGlmICh0c3RhdGUgIT0gTlVMTCAmJiB0c3RhdGUtPmN1cmV4Y190eXBlICE9IE5VTEwpIHsKKyAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLworICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CisgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7CisgICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLworICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7CisgICAgICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOworfQorCiAvKiBWYXJpYW50IG9mIFB5RGljdF9HZXRJdGVtKCkgdGhhdCBkb2Vzbid0IHN1cHByZXNzIGV4Y2VwdGlvbnMuCiAgICBUaGlzIHJldHVybnMgTlVMTCAqd2l0aCogYW4gZXhjZXB0aW9uIHNldCBpZiBhbiBleGNlcHRpb24gb2NjdXJyZWQuCiAgICBJdCByZXR1cm5zIE5VTEwgKndpdGhvdXQqIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGtleSB3YXNuJ3QgcHJlc2VudC4KQEAgLTEyMDgsNiArMTIzMSwyNCBAQAogfQogCiBpbnQKK19QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKworICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBhc3NlcnQoa2V5KTsKKyAgICBhc3NlcnQodmFsdWUpOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOworCisgICAgLyogaW5zZXJ0ZGljdCgpIGhhbmRsZXMgYW55IHJlc2l6aW5nIHRoYXQgbWlnaHQgYmUgbmVjZXNzYXJ5ICovCisgICAgcmV0dXJuIGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOworfQorCitpbnQKIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwpAQCAtMTM2Nyw2ICsxNDA4LDE0MSBAQAogICAgIHJldHVybiAxOwogfQogCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIGRpY3QucG9wKCkuICovCitQeU9iamVjdCAqCitfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmbHQpCit7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKworICAgIGlmIChtcC0+bWFfdXNlZCA9PSAwKSB7CisgICAgICAgIGlmIChkZWZsdCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKKyAgICAgICAgICAgIHJldHVybiBkZWZsdDsKKyAgICAgICAgfQorICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBpZiAoZGVmbHQpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CisgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgbXAtPm1hX3VzZWQtLTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQorICAgIHJldHVybiBvbGRfdmFsdWU7Cit9CisKKy8qIEludGVybmFsIHZlcnNpb24gb2YgZGljdC5mcm9tX2tleXMoKS4gIEl0IGlzIHN1YmNsYXNzLWZyaWVuZGx5LiAqLworUHlPYmplY3QgKgorX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqaXQ7ICAgICAgIC8qIGl0ZXIoaXRlcmFibGUpICovCisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZDsKKyAgICBpbnQgc3RhdHVzOworCisgICAgZCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCBOVUxMKTsKKyAgICBpZiAoZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChkKSAmJiAoKFB5RGljdE9iamVjdCAqKWQpLT5tYV91c2VkID09IDApIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilkOworICAgICAgICAgICAgUHlPYmplY3QgKm9sZHZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKKyAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KGl0ZXJhYmxlLCAmcG9zLCAma2V5LCAmb2xkdmFsdWUsICZoYXNoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICB9CisgICAgICAgIGlmIChQeUFueVNldF9DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilkOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKKyAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlTZXRfR0VUX1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKF9QeVNldF9OZXh0RW50cnkoaXRlcmFibGUsICZwb3MsICZrZXksICZoYXNoKSkgeworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkOworICAgICAgICB9CisgICAgfQorCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCl7CisgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGQpKSB7CisgICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBQeURpY3RfU2V0SXRlbShkLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IFB5T2JqZWN0X1NldEl0ZW0oZCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIEZhaWw7CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICByZXR1cm4gZDsKKworRmFpbDoKKyAgICBQeV9ERUNSRUYoaXQpOworICAgIFB5X0RFQ1JFRihkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogLyogTWV0aG9kcyAqLwogCiBzdGF0aWMgdm9pZApAQCAtMTcwMSwxMjEgKzE4NzcsMTEgQEAKIFJldHVybnMgYSBuZXcgZGljdCB3aXRoIGtleXMgZnJvbSBpdGVyYWJsZSBhbmQgdmFsdWVzIGVxdWFsIHRvIHZhbHVlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGljdF9mcm9ta2V5c19fZG9jX18sCi0iZnJvbWtleXMoJHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBhIG5ldyBkaWN0IHdpdGgga2V5cyBmcm9tIGl0ZXJhYmxlIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdmFsdWUuIik7Ci0KLSNkZWZpbmUgRElDVF9GUk9NS0VZU19NRVRIT0RERUYgICAgXAotICAgIHsiZnJvbWtleXMiLCAoUHlDRnVuY3Rpb24pZGljdF9mcm9ta2V5cywgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsIGRpY3RfZnJvbWtleXNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRpY3RfZnJvbWtleXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlcmFibGU7Ci0gICAgUHlPYmplY3QgKnZhbHVlID0gUHlfTm9uZTsKLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKLSAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gZGljdF9mcm9ta2V5c19pbXBsKHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1ZjhkYzBmZmE4NzQwNmYgaW5wdXQ9Yjg1YTY2N2Y5YmY0NjY5ZF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmYjk4ZTRiMTAzODQ5OTkgaW5wdXQ9Yjg1YTY2N2Y5YmY0NjY5ZF0qLwogewotICAgIFB5T2JqZWN0ICppdDsgICAgICAgLyogaXRlcihzZXEpICovCi0gICAgUHlPYmplY3QgKmtleTsKLSAgICBQeU9iamVjdCAqZDsKLSAgICBpbnQgc3RhdHVzOwotCi0gICAgZCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopdHlwZSwgTlVMTCk7Ci0gICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZCkgJiYgKChQeURpY3RPYmplY3QgKilkKS0+bWFfdXNlZCA9PSAwKSB7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKLSAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvbGR2YWx1ZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChpdGVyYWJsZSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlBbnlTZXRfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKLSAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdoaWxlIChfUHlTZXRfTmV4dEVudHJ5KGl0ZXJhYmxlLCAmcG9zLCAma2V5LCAmaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgaWYgKGl0ID09IE5VTEwpewotICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChkKSkgewotICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgc3RhdHVzID0gUHlEaWN0X1NldEl0ZW0oZCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBQeU9iamVjdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIEZhaWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBGYWlsOwotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgcmV0dXJuIGQ7Ci0KLUZhaWw6Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9ERUNSRUYoZCk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeURpY3RfRnJvbUtleXMoKFB5T2JqZWN0ICopdHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIH0KIAogc3RhdGljIGludApAQCAtMjIyMiwxOCArMjI4OCw5IEBACiBUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihkaWN0X19fY29udGFpbnNfX19fZG9jX18sCi0iX19jb250YWluc19fKCRzZWxmLCBrZXksIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UuIik7Ci0KLSNkZWZpbmUgRElDVF9fX0NPTlRBSU5TX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fY29udGFpbnNfXyIsIChQeUNGdW5jdGlvbilkaWN0X19fY29udGFpbnNfXywgTUVUSF9PfE1FVEhfQ09FWElTVCwgZGljdF9fX2NvbnRhaW5zX19fX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfX19jb250YWluc19fKFB5RGljdE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zY2YzZjhhYWYyY2M1Y2MzIGlucHV0PWI4NTJiMmExOWI1MWFiMjRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hM2QwM2RiNzA5ZWQ2ZTZiIGlucHV0PWI4NTJiMmExOWI1MWFiMjRdKi8KIHsKICAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wID0gc2VsZjsKICAgICBQeV9oYXNoX3QgaGFzaDsKQEAgLTIzNDgsNTAgKzI0MDUsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKICAgICBQeU9iamVjdCAqa2V5LCAqZGVmbHQgPSBOVUxMOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZighUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvcCIsIDEsIDIsICZrZXksICZkZWZsdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChtcC0+bWFfdXNlZCA9PSAwKSB7Ci0gICAgICAgIGlmIChkZWZsdCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKLSAgICAgICAgICAgIHJldHVybiBkZWZsdDsKLSAgICAgICAgfQotICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGVmbHQpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVmbHQ7Ci0gICAgICAgIH0KLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICAqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQotICAgIHJldHVybiBvbGRfdmFsdWU7CisKKyAgICByZXR1cm4gX1B5RGljdF9Qb3AobXAsIGtleSwgZGVmbHQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjQ5OCw4ICsyNTE3LDggQEAKIAogc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9uZXcoUHlEaWN0T2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLWRpY3Rfc2l6ZW9mKFB5RGljdE9iamVjdCAqbXApCitQeU9iamVjdCAqCitfUHlEaWN0X1NpemVPZihQeURpY3RPYmplY3QgKm1wKQogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgcmVzOwogCkBAIC0yNTY3LDcgKzI1ODYsNyBAQAogICAgIERJQ1RfX19DT05UQUlOU19fX01FVEhPRERFRgogICAgIHsiX19nZXRpdGVtX18iLCAoUHlDRnVuY3Rpb24pZGljdF9zdWJzY3JpcHQsICAgICAgICBNRVRIX08gfCBNRVRIX0NPRVhJU1QsCiAgICAgIGdldGl0ZW1fX2RvY19ffSwKLSAgICB7Il9fc2l6ZW9mX18iLCAgICAgIChQeUNGdW5jdGlvbilkaWN0X3NpemVvZiwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJfX3NpemVvZl9fIiwgICAgICAoUHlDRnVuY3Rpb24pX1B5RGljdF9TaXplT2YsICAgICAgIE1FVEhfTk9BUkdTLAogICAgICBzaXplb2ZfX2RvY19ffSwKICAgICB7ImdldCIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRpY3RfZ2V0LCAgICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIGdldF9fZG9jX199LApAQCAtMzA5Niw4ICszMTE1LDggQEAKICAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOworICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAxLCB2YWx1ZSk7ICAvKiBzdGVhbHMgcmVmZXJlbmNlICovCiAgICAgcmV0dXJuIHJlc3VsdDsKIAogZmFpbDoKQEAgLTMxOTIsMjggKzMyMTEsMjIgQEAKIAogLyogVGhlIGluc3RhbmNlIGxheS1vdXQgaXMgdGhlIHNhbWUgZm9yIGFsbCB0aHJlZTsgYnV0IHRoZSB0eXBlIGRpZmZlcnMuICovCiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgUHlEaWN0T2JqZWN0ICpkdl9kaWN0OwotfSBkaWN0dmlld29iamVjdDsKLQotCiBzdGF0aWMgdm9pZAotZGljdHZpZXdfZGVhbGxvYyhkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmlld19kZWFsbG9jKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBQeV9YREVDUkVGKGR2LT5kdl9kaWN0KTsKICAgICBQeU9iamVjdF9HQ19EZWwoZHYpOwogfQogCiBzdGF0aWMgaW50Ci1kaWN0dmlld190cmF2ZXJzZShkaWN0dmlld29iamVjdCAqZHYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQorZGljdHZpZXdfdHJhdmVyc2UoX1B5RGljdFZpZXdPYmplY3QgKmR2LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChkdi0+ZHZfZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1kaWN0dmlld19sZW4oZGljdHZpZXdvYmplY3QgKmR2KQorZGljdHZpZXdfbGVuKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgaWYgKGR2LT5kdl9kaWN0ICE9IE5VTEwpCkBAIC0zMjIxLDEwICszMjM0LDEwIEBACiAgICAgcmV0dXJuIGxlbjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWRpY3R2aWV3X25ldyhQeU9iamVjdCAqZGljdCwgUHlUeXBlT2JqZWN0ICp0eXBlKQorUHlPYmplY3QgKgorX1B5RGljdFZpZXdfTmV3KFB5T2JqZWN0ICpkaWN0LCBQeVR5cGVPYmplY3QgKnR5cGUpCiB7Ci0gICAgZGljdHZpZXdvYmplY3QgKmR2OworICAgIF9QeURpY3RWaWV3T2JqZWN0ICpkdjsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyMzYsNyArMzI0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCBkaWN0LT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGR2ID0gUHlPYmplY3RfR0NfTmV3KGRpY3R2aWV3b2JqZWN0LCB0eXBlKTsKKyAgICBkdiA9IFB5T2JqZWN0X0dDX05ldyhfUHlEaWN0Vmlld09iamVjdCwgdHlwZSk7CiAgICAgaWYgKGR2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihkaWN0KTsKQEAgLTMzNDAsNyArMzM1Myw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kaWN0dmlld19yZXByKGRpY3R2aWV3b2JqZWN0ICpkdikKK2RpY3R2aWV3X3JlcHIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIFB5T2JqZWN0ICpzZXE7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKQEAgLTMzNTcsNyArMzM3MCw3IEBACiAvKioqIGRpY3Rfa2V5cyAqKiovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kaWN0a2V5c19pdGVyKGRpY3R2aWV3b2JqZWN0ICpkdikKK2RpY3RrZXlzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzM2Niw3ICszMzc5LDcgQEAKIH0KIAogc3RhdGljIGludAotZGljdGtleXNfY29udGFpbnMoZGljdHZpZXdvYmplY3QgKmR2LCBQeU9iamVjdCAqb2JqKQorZGljdGtleXNfY29udGFpbnMoX1B5RGljdFZpZXdPYmplY3QgKmR2LCBQeU9iamVjdCAqb2JqKQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKQEAgLTM0MDQsOCArMzQxNyw4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZGljdHZpZXdzX2FuZChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm90aGVyKQorUHlPYmplY3QqCitfUHlEaWN0Vmlld19JbnRlcnNlY3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvdGhlcikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CkBAIC0zNDc5LDcgKzM0OTIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbmJfaW52ZXJ0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm5iX2xzaGlmdCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypuYl9yc2hpZnQqLwotICAgIChiaW5hcnlmdW5jKWRpY3R2aWV3c19hbmQsICAgICAgICAgIC8qbmJfYW5kKi8KKyAgICAoYmluYXJ5ZnVuYylfUHlEaWN0Vmlld19JbnRlcnNlY3QsICAvKm5iX2FuZCovCiAgICAgKGJpbmFyeWZ1bmMpZGljdHZpZXdzX3hvciwgICAgICAgICAgLypuYl94b3IqLwogICAgIChiaW5hcnlmdW5jKWRpY3R2aWV3c19vciwgICAgICAgICAgIC8qbmJfb3IqLwogfTsKQEAgLTM0OTEsNyArMzUwNCw3IEBACiAgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOwogCiAgICAgaWYgKHNlbGYgPT0gb3RoZXIpIHsKLSAgICAgICAgaWYgKGRpY3R2aWV3X2xlbigoZGljdHZpZXdvYmplY3QgKilzZWxmKSA9PSAwKQorICAgICAgICBpZiAoZGljdHZpZXdfbGVuKChfUHlEaWN0Vmlld09iamVjdCAqKXNlbGYpID09IDApCiAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMzUwMCw3ICszNTEzLDcgQEAKICAgICAvKiBJdGVyYXRlIG92ZXIgdGhlIHNob3J0ZXIgb2JqZWN0IChvbmx5IGlmIG90aGVyIGlzIGEgc2V0LAogICAgICAqIGJlY2F1c2UgUHlTZXF1ZW5jZV9Db250YWlucyBtYXkgYmUgZXhwZW5zaXZlIG90aGVyd2lzZSk6ICovCiAgICAgaWYgKFB5QW55U2V0X0NoZWNrKG90aGVyKSB8fCBQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9zc2l6ZV90IGxlbl9zZWxmID0gZGljdHZpZXdfbGVuKChkaWN0dmlld29iamVjdCAqKXNlbGYpOworICAgICAgICBQeV9zc2l6ZV90IGxlbl9zZWxmID0gZGljdHZpZXdfbGVuKChfUHlEaWN0Vmlld09iamVjdCAqKXNlbGYpOwogICAgICAgICBQeV9zc2l6ZV90IGxlbl9vdGhlciA9IFB5T2JqZWN0X1NpemUob3RoZXIpOwogICAgICAgICBpZiAobGVuX290aGVyID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNTQ3LDcgKzM1NjAsNyBAQAogUHlUeXBlT2JqZWN0IFB5RGljdEtleXNfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJkaWN0X2tleXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihkaWN0dmlld29iamVjdCksICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKF9QeURpY3RWaWV3T2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWRpY3R2aWV3X2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwpAQCAtMzU4MCwxMyArMzU5MywxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RrZXlzX25ldyhQeU9iamVjdCAqZGljdCkKIHsKLSAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RLZXlzX1R5cGUpOworICAgIHJldHVybiBfUHlEaWN0Vmlld19OZXcoZGljdCwgJlB5RGljdEtleXNfVHlwZSk7CiB9CiAKIC8qKiogZGljdF9pdGVtcyAqKiovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kaWN0aXRlbXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0aXRlbXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0zNTk1LDcgKzM2MDgsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1kaWN0aXRlbXNfY29udGFpbnMoZGljdHZpZXdvYmplY3QgKmR2LCBQeU9iamVjdCAqb2JqKQorZGljdGl0ZW1zX2NvbnRhaW5zKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpmb3VuZDsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkKQEAgLTM2MzMsNyArMzY0Niw3IEBACiBQeVR5cGVPYmplY3QgUHlEaWN0SXRlbXNfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJkaWN0X2l0ZW1zIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihkaWN0dmlld29iamVjdCksICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKF9QeURpY3RWaWV3T2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWRpY3R2aWV3X2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwpAQCAtMzY2NiwxMyArMzY3OSwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RpdGVtc19uZXcoUHlPYmplY3QgKmRpY3QpCiB7Ci0gICAgcmV0dXJuIGRpY3R2aWV3X25ldyhkaWN0LCAmUHlEaWN0SXRlbXNfVHlwZSk7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhkaWN0LCAmUHlEaWN0SXRlbXNfVHlwZSk7CiB9CiAKIC8qKiogZGljdF92YWx1ZXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdHZhbHVlc19pdGVyKGRpY3R2aWV3b2JqZWN0ICpkdikKK2RpY3R2YWx1ZXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0zNjk4LDcgKzM3MTEsNyBAQAogUHlUeXBlT2JqZWN0IFB5RGljdFZhbHVlc19UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImRpY3RfdmFsdWVzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6ZW9mKGRpY3R2aWV3b2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICBzaXplb2YoX1B5RGljdFZpZXdPYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpZGljdHZpZXdfZGVhbGxvYywgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCkBAIC0zNzMxLDcgKzM3NDQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpkaWN0KQogewotICAgIHJldHVybiBkaWN0dmlld19uZXcoZGljdCwgJlB5RGljdFZhbHVlc19UeXBlKTsKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CiB9CiAKIC8qIFJldHVybnMgTlVMTCBpZiBjYW5ub3QgYWxsb2NhdGUgYSBuZXcgUHlEaWN0S2V5c09iamVjdCwKZGlmZiAtLWdpdCBhL09iamVjdHMvZXhjZXB0aW9ucy5jIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKaW5kZXggYzc2ZWNhOC4uYTI3NTk5NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9leGNlcHRpb25zLmMKKysrIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKQEAgLTQ3Myw2ICs0NzMsMTMgQEAKIAogCiAvKgorICogICAgU3RvcEFzeW5jSXRlcmF0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCisgKi8KK1NpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBTdG9wQXN5bmNJdGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICJTaWduYWwgdGhlIGVuZCBmcm9tIGl0ZXJhdG9yLl9fYW5leHRfXygpLiIpOworCisKKy8qCiAgKiAgICBTdG9wSXRlcmF0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KIApAQCAtMTIyNCw2ICsxMjMxLDExIEBACiBTaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAiVW5zcGVjaWZpZWQgcnVuLXRpbWUgZXJyb3IuIik7CiAKKy8qCisgKiAgICBSZWN1cnNpb25FcnJvciBleHRlbmRzIFJ1bnRpbWVFcnJvcgorICovCitTaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX1J1bnRpbWVFcnJvciwgUmVjdXJzaW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICJSZWN1cnNpb24gbGltaXQgZXhjZWVkZWQuIik7CiAKIC8qCiAgKiAgICBOb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgUnVudGltZUVycm9yCkBAIC0yMzczLDcgKzIzODUsNyBAQAogCiAKIAotLyogUHJlLWNvbXB1dGVkIFJ1bnRpbWVFcnJvciBpbnN0YW5jZSBmb3Igd2hlbiByZWN1cnNpb24gZGVwdGggaXMgcmVhY2hlZC4KKy8qIFByZS1jb21wdXRlZCBSZWN1cnNpb25FcnJvciBpbnN0YW5jZSBmb3Igd2hlbiByZWN1cnNpb24gZGVwdGggaXMgcmVhY2hlZC4KICAgIE1lYW50IHRvIGJlIHVzZWQgd2hlbiBub3JtYWxpemluZyB0aGUgZXhjZXB0aW9uIGZvciBleGNlZWRpbmcgdGhlIHJlY3Vyc2lvbgogICAgZGVwdGggd2lsbCBjYXVzZSBpdHMgb3duIGluZmluaXRlIHJlY3Vyc2lvbi4KICovCkBAIC0yNDY4LDYgKzI0ODAsNyBAQAogICAgIFBSRV9JTklUKEJhc2VFeGNlcHRpb24pCiAgICAgUFJFX0lOSVQoRXhjZXB0aW9uKQogICAgIFBSRV9JTklUKFR5cGVFcnJvcikKKyAgICBQUkVfSU5JVChTdG9wQXN5bmNJdGVyYXRpb24pCiAgICAgUFJFX0lOSVQoU3RvcEl0ZXJhdGlvbikKICAgICBQUkVfSU5JVChHZW5lcmF0b3JFeGl0KQogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCkBAIC0yNDc2LDYgKzI0ODksNyBAQAogICAgIFBSRV9JTklUKE9TRXJyb3IpCiAgICAgUFJFX0lOSVQoRU9GRXJyb3IpCiAgICAgUFJFX0lOSVQoUnVudGltZUVycm9yKQorICAgIFBSRV9JTklUKFJlY3Vyc2lvbkVycm9yKQogICAgIFBSRV9JTklUKE5vdEltcGxlbWVudGVkRXJyb3IpCiAgICAgUFJFX0lOSVQoTmFtZUVycm9yKQogICAgIFBSRV9JTklUKFVuYm91bmRMb2NhbEVycm9yKQpAQCAtMjUzOCw2ICsyNTUyLDcgQEAKICAgICBQT1NUX0lOSVQoQmFzZUV4Y2VwdGlvbikKICAgICBQT1NUX0lOSVQoRXhjZXB0aW9uKQogICAgIFBPU1RfSU5JVChUeXBlRXJyb3IpCisgICAgUE9TVF9JTklUKFN0b3BBc3luY0l0ZXJhdGlvbikKICAgICBQT1NUX0lOSVQoU3RvcEl0ZXJhdGlvbikKICAgICBQT1NUX0lOSVQoR2VuZXJhdG9yRXhpdCkKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKQEAgLTI1NTEsNiArMjU2Niw3IEBACiAjZW5kaWYKICAgICBQT1NUX0lOSVQoRU9GRXJyb3IpCiAgICAgUE9TVF9JTklUKFJ1bnRpbWVFcnJvcikKKyAgICBQT1NUX0lOSVQoUmVjdXJzaW9uRXJyb3IpCiAgICAgUE9TVF9JTklUKE5vdEltcGxlbWVudGVkRXJyb3IpCiAgICAgUE9TVF9JTklUKE5hbWVFcnJvcikKICAgICBQT1NUX0lOSVQoVW5ib3VuZExvY2FsRXJyb3IpCkBAIC0yNjM0LDkgKzI2NTAsOSBAQAogICAgIHByZWFsbG9jYXRlX21lbWVycm9ycygpOwogCiAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpIHsKLSAgICAgICAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0ID0gQmFzZUV4Y2VwdGlvbl9uZXcoJl9QeUV4Y19SdW50aW1lRXJyb3IsIE5VTEwsIE5VTEwpOworICAgICAgICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3QgPSBCYXNlRXhjZXB0aW9uX25ldygmX1B5RXhjX1JlY3Vyc2lvbkVycm9yLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgcHJlLWFsbG9jYXRlIFJ1bnRpbWVFcnJvciBpbnN0YW5jZSBmb3IgIgorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IHByZS1hbGxvY2F0ZSBSZWN1cnNpb25FcnJvciBpbnN0YW5jZSBmb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN1cnNpb24gZXJyb3JzIik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICplcnJfaW5zdCA9CkBAIC0yNjQ1LDE1ICsyNjYxLDE1IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX21lc3NhZ2U7CiAgICAgICAgICAgICBleGNfbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIpOwogICAgICAgICAgICAgaWYgKCFleGNfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW5ub3QgYWxsb2NhdGUgYXJndW1lbnQgZm9yIFJ1bnRpbWVFcnJvciAiCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2Fubm90IGFsbG9jYXRlIGFyZ3VtZW50IGZvciBSZWN1cnNpb25FcnJvciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmUtYWxsb2NhdGlvbiIpOwogICAgICAgICAgICAgYXJnc190dXBsZSA9IFB5VHVwbGVfUGFjaygxLCBleGNfbWVzc2FnZSk7CiAgICAgICAgICAgICBpZiAoIWFyZ3NfdHVwbGUpCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2Fubm90IGFsbG9jYXRlIHR1cGxlIGZvciBSdW50aW1lRXJyb3IgIgorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbm5vdCBhbGxvY2F0ZSB0dXBsZSBmb3IgUmVjdXJzaW9uRXJyb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlLWFsbG9jYXRpb24iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihleGNfbWVzc2FnZSk7CiAgICAgICAgICAgICBpZiAoQmFzZUV4Y2VwdGlvbl9pbml0KGVycl9pbnN0LCBhcmdzX3R1cGxlLCBOVUxMKSkKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJpbml0IG9mIHByZS1hbGxvY2F0ZWQgUnVudGltZUVycm9yIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImluaXQgb2YgcHJlLWFsbG9jYXRlZCBSZWN1cnNpb25FcnJvciBmYWlsZWQiKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzX3R1cGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3MTgsNyArMjczNCw3IEBACiAgICAgc2FtZV9iYXNpY19zaXplID0gKAogICAgICAgICBjYXVnaHRfdHlwZV9zaXplID09IGJhc2VfZXhjX3NpemUgfHwKICAgICAgICAgKFB5VHlwZV9TVVBQT1JUU19XRUFLUkVGUyhjYXVnaHRfdHlwZSkgJiYKLSAgICAgICAgICAgIChjYXVnaHRfdHlwZV9zaXplID09IGJhc2VfZXhjX3NpemUgKyBzaXplb2YoUHlPYmplY3QgKikpCisgICAgICAgICAgICAoY2F1Z2h0X3R5cGVfc2l6ZSA9PSBiYXNlX2V4Y19zaXplICsgKFB5X3NzaXplX3Qpc2l6ZW9mKFB5T2JqZWN0ICopKQogICAgICAgICApCiAgICAgKTsKICAgICBpZiAoY2F1Z2h0X3R5cGUtPnRwX2luaXQgIT0gKGluaXRwcm9jKUJhc2VFeGNlcHRpb25faW5pdCB8fApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9maWxlb2JqZWN0LmMgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwppbmRleCA1OTZmOTA5Li4xYjE4NDEwIDEwMDY0NAotLS0gYS9PYmplY3RzL2ZpbGVvYmplY3QuYworKysgYi9PYmplY3RzL2ZpbGVvYmplY3QuYwpAQCAtMzcyLDcgKzM3Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3RkcHJpbnRlcl93cml0ZShQeVN0ZFByaW50ZXJfT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpjOworICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IG47CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKSB7CkBAIC0zODMsMjYgKzM4MywxNiBAQAogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiLCAmYykpIHsKKyAgICAvKiBlbmNvZGUgVW5pY29kZSB0byBVVEYtOCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIsICZzdHIpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbiA9IHN0cmxlbihjKTsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBlcnJubyA9IDA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChuID4gSU5UX01BWCkKLSAgICAgICAgbiA9IElOVF9NQVg7Ci0gICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBjLCAoaW50KW4pOwotI2Vsc2UKLSAgICBuID0gd3JpdGUoc2VsZi0+ZmQsIGMsIG4pOwotI2VuZGlmCi0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChuIDwgMCkgewotICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKQorICAgIG4gPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIHN0ciwgc3RybGVuKHN0cikpOworICAgIGlmIChuID09IC0xKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCmluZGV4IDFkY2E5NDcuLmQ2ODE5ODEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmxvYXRvYmplY3QuYworKysgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKQEAgLTk4Niw4ICs5ODYsOSBAQAogICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmb19uZGlnaXRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG9fbmRpZ2l0cyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIHNpbmdsZS1hcmd1bWVudCByb3VuZDogcm91bmQgdG8gbmVhcmVzdCBpbnRlZ2VyICovCisgICAgaWYgKG9fbmRpZ2l0cyA9PSBOVUxMIHx8IG9fbmRpZ2l0cyA9PSBQeV9Ob25lKSB7CisgICAgICAgIC8qIHNpbmdsZS1hcmd1bWVudCByb3VuZCBvciB3aXRoIE5vbmUgbmRpZ2l0czoKKyAgICAgICAgICogcm91bmQgdG8gbmVhcmVzdCBpbnRlZ2VyICovCiAgICAgICAgIHJvdW5kZWQgPSByb3VuZCh4KTsKICAgICAgICAgaWYgKGZhYnMoeC1yb3VuZGVkKSA9PSAwLjUpCiAgICAgICAgICAgICAvKiBoYWxmd2F5IGNhc2U6IHJvdW5kIHRvIGV2ZW4gKi8KQEAgLTIwMzMsNyArMjAzNCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBmbG9hdCB5ID0gKGZsb2F0KXg7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSAoY2hhciopJnk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciopJnk7CiAgICAgICAgIGludCBpLCBpbmNyID0gMTsKIAogICAgICAgICBpZiAoUHlfSVNfSU5GSU5JVFkoeSkgJiYgIVB5X0lTX0lORklOSVRZKHgpKQpAQCAtMjE2OSw3ICsyMTcwLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgY2hhciAqcyA9IChjaGFyKikmeDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcyA9ICh1bnNpZ25lZCBjaGFyKikmeDsKICAgICAgICAgaW50IGksIGluY3IgPSAxOwogCiAgICAgICAgIGlmICgoZG91YmxlX2Zvcm1hdCA9PSBpZWVlX2xpdHRsZV9lbmRpYW5fZm9ybWF0ICYmICFsZSkKZGlmZiAtLWdpdCBhL09iamVjdHMvZnJhbWVvYmplY3QuYyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwppbmRleCA1NWVlNTYzLi4xNzJmMmNiIDEwMDY0NAotLS0gYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCkBAIC0xOTYsNiArMTk2LDcgQEAKICAgICAgICAgY2FzZSBTRVRVUF9FWENFUFQ6CiAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgorICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICBibG9ja3N0YWNrW2Jsb2Nrc3RhY2tfdG9wKytdID0gYWRkcjsKICAgICAgICAgICAgIGluX2ZpbmFsbHlbYmxvY2tzdGFja190b3AtMV0gPSAwOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDMsNyArMjA0LDggQEAKICAgICAgICAgY2FzZSBQT1BfQkxPQ0s6CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2tzdGFja190b3AgPiAwKTsKICAgICAgICAgICAgIHNldHVwX29wID0gY29kZVtibG9ja3N0YWNrW2Jsb2Nrc3RhY2tfdG9wLTFdXTsKLSAgICAgICAgICAgIGlmIChzZXR1cF9vcCA9PSBTRVRVUF9GSU5BTExZIHx8IHNldHVwX29wID09IFNFVFVQX1dJVEgpIHsKKyAgICAgICAgICAgIGlmIChzZXR1cF9vcCA9PSBTRVRVUF9GSU5BTExZIHx8IHNldHVwX29wID09IFNFVFVQX1dJVEgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHNldHVwX29wID09IFNFVFVQX0FTWU5DX1dJVEgpIHsKICAgICAgICAgICAgICAgICBpbl9maW5hbGx5W2Jsb2Nrc3RhY2tfdG9wLTFdID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewpAQCAtMjE4LDcgKzIyMCw4IEBACiAgICAgICAgICAgICAgKiBiZSBzZWVpbmcgc3VjaCBhbiBFTkRfRklOQUxMWS4pICovCiAgICAgICAgICAgICBpZiAoYmxvY2tzdGFja190b3AgPiAwKSB7CiAgICAgICAgICAgICAgICAgc2V0dXBfb3AgPSBjb2RlW2Jsb2Nrc3RhY2tbYmxvY2tzdGFja190b3AtMV1dOwotICAgICAgICAgICAgICAgIGlmIChzZXR1cF9vcCA9PSBTRVRVUF9GSU5BTExZIHx8IHNldHVwX29wID09IFNFVFVQX1dJVEgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzZXR1cF9vcCA9PSBTRVRVUF9BU1lOQ19XSVRIKSB7CiAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc3RhY2tfdG9wLS07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjgxLDYgKzI4NCw3IEBACiAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgZGVsdGFfaWJsb2NrKys7CiAgICAgICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9nZW5vYmplY3QuYyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKaW5kZXggNjdlNmVmOS4uMDBlYmJmMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9nZW5vYmplY3QuYworKysgYi9PYmplY3RzL2dlbm9iamVjdC5jCkBAIC0xMiw2ICsxMiw4IEBACiB7CiAgICAgUHlfVklTSVQoKFB5T2JqZWN0ICopZ2VuLT5naV9mcmFtZSk7CiAgICAgUHlfVklTSVQoZ2VuLT5naV9jb2RlKTsKKyAgICBQeV9WSVNJVChnZW4tPmdpX25hbWUpOworICAgIFB5X1ZJU0lUKGdlbi0+Z2lfcXVhbG5hbWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMiw2ICsyNCwxOCBAQAogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKIAorICAgIC8qIElmIGBnZW5gIGlzIGEgY29yb3V0aW5lLCBhbmQgaWYgaXQgd2FzIG5ldmVyIGF3YWl0ZWQgb24sCisgICAgICAgaXNzdWUgYSBSdW50aW1lV2FybmluZy4gKi8KKyAgICBpZiAoZ2VuLT5naV9jb2RlICE9IE5VTEwKKyAgICAgICAgICAgICYmICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJiBDT19DT1JPVVRJTkUKKyAgICAgICAgICAgICYmIGdlbi0+Z2lfZnJhbWUgIT0gTlVMTAorICAgICAgICAgICAgJiYgZ2VuLT5naV9mcmFtZS0+Zl9sYXN0aSA9PSAtMQorICAgICAgICAgICAgJiYgIVB5RXJyX09jY3VycmVkKCkKKyAgICAgICAgICAgICYmIFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUnVudGltZVdhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgJyUuNTBTJyB3YXMgbmV2ZXIgYXdhaXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoZ2VuLT5naV9mcmFtZSA9PSBOVUxMIHx8IGdlbi0+Z2lfZnJhbWUtPmZfc3RhY2t0b3AgPT0gTlVMTCkKICAgICAgICAgLyogR2VuZXJhdG9yIGlzbid0IHBhdXNlZCwgc28gbm8gbmVlZCB0byBjbG9zZSAqLwogICAgICAgICByZXR1cm47CkBAIC01OCw2ICs3Miw4IEBACiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CiAgICAgUHlfQ0xFQVIoZ2VuLT5naV9mcmFtZSk7CiAgICAgUHlfQ0xFQVIoZ2VuLT5naV9jb2RlKTsKKyAgICBQeV9DTEVBUihnZW4tPmdpX25hbWUpOworICAgIFB5X0NMRUFSKGdlbi0+Z2lfcXVhbG5hbWUpOwogICAgIFB5T2JqZWN0X0dDX0RlbChnZW4pOwogfQogCkBAIC02OSw4ICs4NSwxMCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBpZiAoZ2VuLT5naV9ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyIpOworICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewpAQCAtODIsOSArMTAwLDEyIEBACiAKICAgICBpZiAoZi0+Zl9sYXN0aSA9PSAtMSkgewogICAgICAgICBpZiAoYXJnICYmIGFyZyAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgZ2VuZXJhdG9yIik7CisgICAgICAgICAgICBjaGFyICptc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgZ2VuZXJhdG9yIjsKKyAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIjsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CkBAIC0xMjYsNiArMTQ3LDUwIEBACiAgICAgICAgIH0KICAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKICAgICB9CisgICAgZWxzZSBpZiAoIXJlc3VsdCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7CisgICAgICAgIC8qIENoZWNrIGZvciBfX2Z1dHVyZV9fIGdlbmVyYXRvcl9zdG9wIGFuZCBjb25kaXRpb25hbGx5IHR1cm4KKyAgICAgICAgICogYSBsZWFraW5nIFN0b3BJdGVyYXRpb24gaW50byBSdW50aW1lRXJyb3IgKHdpdGggaXRzIGNhdXNlCisgICAgICAgICAqIHNldCBhcHByb3ByaWF0ZWx5KS4gKi8KKyAgICAgICAgaWYgKCgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgorICAgICAgICAgICAgICAoQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwgQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnZhbDIsICp0YjsKKyAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwsICZ0Yik7CisgICAgICAgICAgICBpZiAodGIgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwyLCAmdGIpOworICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOworICAgICAgICAgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDYXVzZSh2YWwyLCB2YWwpOworICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbDIsIHRiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKworICAgICAgICAgICAgLyogUG9wIHRoZSBleGNlcHRpb24gYmVmb3JlIGlzc3VpbmcgYSB3YXJuaW5nLiAqLworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgJyUuNTBTJyByYWlzZWQgU3RvcEl0ZXJhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4tPmdpX3F1YWxuYW1lKSkgeworICAgICAgICAgICAgICAgIC8qIFdhcm5pbmcgd2FzIGNvbnZlcnRlZCB0byBhbiBlcnJvci4gKi8KKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWwpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbCwgdGIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKCFyZXN1bHQgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIC8qIGdlbmVyYXRvciBjYW4ndCBiZSByZXJ1biwgc28gcmVsZWFzZSB0aGUgZnJhbWUgKi8KQEAgLTIyOSw5ICsyOTQsMTEgQEAKICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19HZW5lcmF0b3JFeGl0KTsKICAgICByZXR2YWwgPSBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEpOwogICAgIGlmIChyZXR2YWwpIHsKKyAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOworICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikKQEAgLTM3MywxMSArNDQwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKLSAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmV0OwotICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKLSAgICBQeV9YREVDUkVGKHZhbCk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwKTsKIH0KIAogLyoKQEAgLTQzNCwzMyArNDk3LDg0IEBACiBnZW5fcmVwcihQeUdlbk9iamVjdCAqZ2VuKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGdlbmVyYXRvciBvYmplY3QgJVMgYXQgJXA+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4tPmdpX3F1YWxuYW1lLCBnZW4pOwogfQogCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1nZW5fZ2V0X25hbWUoUHlHZW5PYmplY3QgKmdlbikKK2dlbl9nZXRfbmFtZShQeUdlbk9iamVjdCAqb3ApCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX25hbWU7Ci0gICAgUHlfSU5DUkVGKG5hbWUpOwotICAgIHJldHVybiBuYW1lOworICAgIFB5X0lOQ1JFRihvcC0+Z2lfbmFtZSk7CisgICAgcmV0dXJuIG9wLT5naV9uYW1lOwogfQogCitzdGF0aWMgaW50CitnZW5fc2V0X25hbWUoUHlHZW5PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKnRtcDsKIAotUHlEb2NfU1RSVkFSKGdlbl9fbmFtZV9fZG9jX18sCi0iUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0b3IncyBhc3NvY2lhdGVkIGNvZGUgb2JqZWN0LiIpOworICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZ2VuLmdpX25hbWUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCisgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+Z2lfbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5naV9uYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZW5fZ2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCkKK3sKKyAgICBQeV9JTkNSRUYob3AtPmdpX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gb3AtPmdpX3F1YWxuYW1lOworfQorCitzdGF0aWMgaW50CitnZW5fc2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisKKyAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCisgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdG1wID0gb3AtPmdpX3F1YWxuYW1lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgb3AtPmdpX3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZW5fZ2V0eWllbGRmcm9tKFB5R2VuT2JqZWN0ICpnZW4pCit7CisgICAgUHlPYmplY3QgKnlmID0gZ2VuX3lmKGdlbik7CisgICAgaWYgKHlmID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiB5ZjsKK30KIAogc3RhdGljIFB5R2V0U2V0RGVmIGdlbl9nZXRzZXRsaXN0W10gPSB7Ci0gICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9uYW1lLCBOVUxMLCBnZW5fX25hbWVfX2RvY19ffSwKLSAgICB7TlVMTH0KKyAgICB7Il9fbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X25hbWUsIChzZXR0ZXIpZ2VuX3NldF9uYW1lLAorICAgICBQeURvY19TVFIoIm5hbWUgb2YgdGhlIGdlbmVyYXRvciIpfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9xdWFsbmFtZSwgKHNldHRlcilnZW5fc2V0X3F1YWxuYW1lLAorICAgICBQeURvY19TVFIoInF1YWxpZmllZCBuYW1lIG9mIHRoZSBnZW5lcmF0b3IiKX0sCisgICAgeyJnaV95aWVsZGZyb20iLCAoZ2V0dGVyKWdlbl9nZXR5aWVsZGZyb20sIE5VTEwsCisgICAgIFB5RG9jX1NUUigib2JqZWN0IGJlaW5nIGl0ZXJhdGVkIGJ5IHlpZWxkIGZyb20sIG9yIE5vbmUiKX0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCiB9OwogCi0KIHN0YXRpYyBQeU1lbWJlckRlZiBnZW5fbWVtYmVybGlzdFtdID0gewotICAgIHsiZ2lfZnJhbWUiLCAgICAgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9mcmFtZSksICAgICAgUkVBRE9OTFl9LAotICAgIHsiZ2lfcnVubmluZyIsICAgICAgVF9CT09MLCAgICBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfcnVubmluZyksICAgIFJFQURPTkxZfSwKLSAgICB7ImdpX2NvZGUiLCAgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9jb2RlKSwgIFJFQURPTkxZfSwKKyAgICB7ImdpX2ZyYW1lIiwgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfZnJhbWUpLCAgICBSRUFET05MWX0sCisgICAgeyJnaV9ydW5uaW5nIiwgICBUX0JPT0wsICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgUkVBRE9OTFl9LAorICAgIHsiZ2lfY29kZSIsICAgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9jb2RlKSwgICAgIFJFQURPTkxZfSwKICAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNDgxLDcgKzU5NSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCiAgICAgKHJlcHJmdW5jKWdlbl9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCkBAIC01MjUsMTAgKzYzOSwxMSBAQAogICAgIF9QeUdlbl9GaW5hbGl6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKLVB5T2JqZWN0ICoKLVB5R2VuX05ldyhQeUZyYW1lT2JqZWN0ICpmKQorc3RhdGljIFB5T2JqZWN0ICoKK2dlbl9uZXdfd2l0aF9xdWFsbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5RnJhbWVPYmplY3QgKmYsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKLSAgICBQeUdlbk9iamVjdCAqZ2VuID0gUHlPYmplY3RfR0NfTmV3KFB5R2VuT2JqZWN0LCAmUHlHZW5fVHlwZSk7CisgICAgUHlHZW5PYmplY3QgKmdlbiA9IFB5T2JqZWN0X0dDX05ldyhQeUdlbk9iamVjdCwgdHlwZSk7CiAgICAgaWYgKGdlbiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MzksMTAgKzY1NCwzMiBAQAogICAgIGdlbi0+Z2lfY29kZSA9IChQeU9iamVjdCAqKShmLT5mX2NvZGUpOwogICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CiAgICAgZ2VuLT5naV93ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgaWYgKG5hbWUgIT0gTlVMTCkKKyAgICAgICAgZ2VuLT5naV9uYW1lID0gbmFtZTsKKyAgICBlbHNlCisgICAgICAgIGdlbi0+Z2lfbmFtZSA9ICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fbmFtZTsKKyAgICBQeV9JTkNSRUYoZ2VuLT5naV9uYW1lKTsKKyAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCkKKyAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSA9IHF1YWxuYW1lOworICAgIGVsc2UKKyAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSA9IGdlbi0+Z2lfbmFtZTsKKyAgICBQeV9JTkNSRUYoZ2VuLT5naV9xdWFsbmFtZSk7CiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGdlbik7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWdlbjsKIH0KIAorUHlPYmplY3QgKgorUHlHZW5fTmV3V2l0aFF1YWxOYW1lKFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCit7CisgICAgcmV0dXJuIGdlbl9uZXdfd2l0aF9xdWFsbmFtZSgmUHlHZW5fVHlwZSwgZiwgbmFtZSwgcXVhbG5hbWUpOworfQorCitQeU9iamVjdCAqCitQeUdlbl9OZXcoUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICByZXR1cm4gZ2VuX25ld193aXRoX3F1YWxuYW1lKCZQeUdlbl9UeXBlLCBmLCBOVUxMLCBOVUxMKTsKK30KKwogaW50CiBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKmdlbikKIHsKQEAgLTU2MCwzICs2OTcsMjg5IEBACiAgICAgLyogTm8gYmxvY2tzIGV4Y2VwdCBsb29wcywgaXQncyBzYWZlIHRvIHNraXAgZmluYWxpemF0aW9uLiAqLwogICAgIHJldHVybiAwOwogfQorCisvKiBDb3JvdXRpbmUgT2JqZWN0ICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlDb3JvT2JqZWN0ICpjd19jb3JvdXRpbmU7Cit9IFB5Q29yb1dyYXBwZXI7CisKK3N0YXRpYyBpbnQKK2dlbl9pc19jb3JvdXRpbmUoUHlPYmplY3QgKm8pCit7CisgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlDb2RlT2JqZWN0ICpjb2RlID0gKFB5Q29kZU9iamVjdCAqKSgoUHlHZW5PYmplY3QqKW8pLT5naV9jb2RlOworICAgICAgICBpZiAoY29kZS0+Y29fZmxhZ3MgJiBDT19JVEVSQUJMRV9DT1JPVVRJTkUpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogICBUaGlzIGhlbHBlciBmdW5jdGlvbiByZXR1cm5zIGFuIGF3YWl0YWJsZSBmb3IgYG9gOgorICogICAgIC0gYG9gIGlmIGBvYCBpcyBhIGNvcm91dGluZS1vYmplY3Q7CisgKiAgICAgLSBgdHlwZShvKS0+dHBfYXNfYXN5bmMtPmFtX2F3YWl0KG8pYAorICoKKyAqICAgUmFpc2VzIGEgVHlwZUVycm9yIGlmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHJldHVybgorICogICBhbiBhd2FpdGFibGUgYW5kIHJldHVybnMgTlVMTC4KKyAqLworUHlPYmplY3QgKgorX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKFB5T2JqZWN0ICpvKQoreworICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgIFB5VHlwZU9iamVjdCAqb3Q7CisKKyAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QobykgfHwgZ2VuX2lzX2Nvcm91dGluZShvKSkgeworICAgICAgICAvKiAnbycgaXMgYSBjb3JvdXRpbmUuICovCisgICAgICAgIFB5X0lOQ1JFRihvKTsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorCisgICAgb3QgPSBQeV9UWVBFKG8pOworICAgIGlmIChvdC0+dHBfYXNfYXN5bmMgIT0gTlVMTCkgeworICAgICAgICBnZXR0ZXIgPSBvdC0+dHBfYXNfYXN5bmMtPmFtX2F3YWl0OworICAgIH0KKyAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlcyA9ICgqZ2V0dGVyKShvKTsKKyAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QocmVzKSB8fCBnZW5faXNfY29yb3V0aW5lKHJlcykpIHsKKyAgICAgICAgICAgICAgICAvKiBfX2F3YWl0X18gbXVzdCByZXR1cm4gYW4gKml0ZXJhdG9yKiwgbm90CisgICAgICAgICAgICAgICAgICAgYSBjb3JvdXRpbmUgb3IgYW5vdGhlciBhd2FpdGFibGUgKHNlZSBQRVAgNDkyKSAqLworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2F3YWl0X18oKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFQeUl0ZXJfQ2hlY2socmVzKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2F3YWl0X18oKSByZXR1cm5lZCBub24taXRlcmF0b3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgdHlwZSAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzKS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvYmplY3QgJS4xMDBzIGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIiwKKyAgICAgICAgICAgICAgICAgb3QtPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb19yZXByKFB5Q29yb09iamVjdCAqY29ybykKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxjb3JvdXRpbmUgb2JqZWN0ICVTIGF0ICVwPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcm8tPmNyX3F1YWxuYW1lLCBjb3JvKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fYXdhaXQoUHlDb3JvT2JqZWN0ICpjb3JvKQoreworICAgIFB5Q29yb1dyYXBwZXIgKmN3ID0gUHlPYmplY3RfR0NfTmV3KFB5Q29yb1dyYXBwZXIsICZfUHlDb3JvV3JhcHBlcl9UeXBlKTsKKyAgICBpZiAoY3cgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGNvcm8pOworICAgIGN3LT5jd19jb3JvdXRpbmUgPSBjb3JvOworICAgIF9QeU9iamVjdF9HQ19UUkFDSyhjdyk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWN3OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb19nZXRfY3JfYXdhaXQoUHlDb3JvT2JqZWN0ICpjb3JvKQoreworICAgIFB5T2JqZWN0ICp5ZiA9IGdlbl95ZigoUHlHZW5PYmplY3QgKikgY29ybyk7CisgICAgaWYgKHlmID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiB5ZjsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIGNvcm9fZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgKHNldHRlcilnZW5fc2V0X25hbWUsCisgICAgIFB5RG9jX1NUUigibmFtZSBvZiB0aGUgY29yb3V0aW5lIil9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWdlbl9zZXRfcXVhbG5hbWUsCisgICAgIFB5RG9jX1NUUigicXVhbGlmaWVkIG5hbWUgb2YgdGhlIGNvcm91dGluZSIpfSwKKyAgICB7ImNyX2F3YWl0IiwgKGdldHRlciljb3JvX2dldF9jcl9hd2FpdCwgTlVMTCwKKyAgICAgUHlEb2NfU1RSKCJvYmplY3QgYmVpbmcgYXdhaXRlZCBvbiwgb3IgTm9uZSIpfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBjb3JvX21lbWJlcmxpc3RbXSA9IHsKKyAgICB7ImNyX2ZyYW1lIiwgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUNvcm9PYmplY3QsIGNyX2ZyYW1lKSwgICAgUkVBRE9OTFl9LAorICAgIHsiY3JfcnVubmluZyIsICAgVF9CT09MLCAgIG9mZnNldG9mKFB5Q29yb09iamVjdCwgY3JfcnVubmluZyksICBSRUFET05MWX0sCisgICAgeyJjcl9jb2RlIiwgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlDb3JvT2JqZWN0LCBjcl9jb2RlKSwgICAgIFJFQURPTkxZfSwKKyAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKGNvcm9fc2VuZF9kb2MsCisic2VuZChhcmcpIC0+IHNlbmQgJ2FyZycgaW50byBjb3JvdXRpbmUsXG5cCityZXR1cm4gbmV4dCBpdGVyYXRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLiIpOworCitQeURvY19TVFJWQVIoY29yb190aHJvd19kb2MsCisidGhyb3codHlwWyx2YWxbLHRiXV0pIC0+IHJhaXNlIGV4Y2VwdGlvbiBpbiBjb3JvdXRpbmUsXG5cCityZXR1cm4gbmV4dCBpdGVyYXRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLiIpOworCitQeURvY19TVFJWQVIoY29yb19jbG9zZV9kb2MsCisiY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBjb3JvdXRpbmUuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb3JvX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLChQeUNGdW5jdGlvbilfUHlHZW5fU2VuZCwgTUVUSF9PLCBjb3JvX3NlbmRfZG9jfSwKKyAgICB7InRocm93IiwoUHlDRnVuY3Rpb24pZ2VuX3Rocm93LCBNRVRIX1ZBUkFSR1MsIGNvcm9fdGhyb3dfZG9jfSwKKyAgICB7ImNsb3NlIiwoUHlDRnVuY3Rpb24pZ2VuX2Nsb3NlLCBNRVRIX05PQVJHUywgY29yb19jbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBjb3JvX2FzX2FzeW5jID0geworICAgICh1bmFyeWZ1bmMpY29yb19hd2FpdCwgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworUHlUeXBlT2JqZWN0IFB5Q29yb19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImNvcm91dGluZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5Q29yb09iamVjdCksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWdlbl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmY29yb19hc19hc3luYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgKHJlcHJmdW5jKWNvcm9fcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKKyAgICAgICAgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWdlbl90cmF2ZXJzZSwgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeUNvcm9PYmplY3QsIGNyX3dlYWtyZWZsaXN0KSwgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGNvcm9fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNvcm9fbWVtYmVybGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGNvcm9fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIF9QeUdlbl9GaW5hbGl6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKK3N0YXRpYyB2b2lkCitjb3JvX3dyYXBwZXJfZGVhbGxvYyhQeUNvcm9XcmFwcGVyICpjdykKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKiljdyk7CisgICAgUHlfQ0xFQVIoY3ctPmN3X2Nvcm91dGluZSk7CisgICAgUHlPYmplY3RfR0NfRGVsKGN3KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fd3JhcHBlcl9pdGVybmV4dChQeUNvcm9XcmFwcGVyICpjdykKK3sKKyAgICByZXR1cm4gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0ICopY3ctPmN3X2Nvcm91dGluZSwgTlVMTCwgMCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX3dyYXBwZXJfc2VuZChQeUNvcm9XcmFwcGVyICpjdywgUHlPYmplY3QgKmFyZykKK3sKKyAgICByZXR1cm4gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0ICopY3ctPmN3X2Nvcm91dGluZSwgYXJnLCAwKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fd3JhcHBlcl90aHJvdyhQeUNvcm9XcmFwcGVyICpjdywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGdlbl90aHJvdygoUHlHZW5PYmplY3QgKiljdy0+Y3dfY29yb3V0aW5lLCBhcmdzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fd3JhcHBlcl9jbG9zZShQeUNvcm9XcmFwcGVyICpjdywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKiljdy0+Y3dfY29yb3V0aW5lLCBhcmdzKTsKK30KKworc3RhdGljIGludAorY29yb193cmFwcGVyX3RyYXZlcnNlKFB5Q29yb1dyYXBwZXIgKmN3LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVCgoUHlPYmplY3QgKiljdy0+Y3dfY29yb3V0aW5lKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGNvcm9fd3JhcHBlcl9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwoUHlDRnVuY3Rpb24pY29yb193cmFwcGVyX3NlbmQsIE1FVEhfTywgY29yb19zZW5kX2RvY30sCisgICAgeyJ0aHJvdyIsKFB5Q0Z1bmN0aW9uKWNvcm9fd3JhcHBlcl90aHJvdywgTUVUSF9WQVJBUkdTLCBjb3JvX3Rocm93X2RvY30sCisgICAgeyJjbG9zZSIsKFB5Q0Z1bmN0aW9uKWNvcm9fd3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIGNvcm9fY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgX1B5Q29yb1dyYXBwZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJjb3JvdXRpbmVfd3JhcHBlciIsCisgICAgc2l6ZW9mKFB5Q29yb1dyYXBwZXIpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpY29yb193cmFwcGVyX2RlYWxsb2MsICAgICAgICAgICAvKiBkZXN0cnVjdG9yIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAiQSB3cmFwcGVyIG9iamVjdCBpbXBsZW1lbnRpbmcgX19hd2FpdF9fIGZvciBjb3JvdXRpbmVzLiIsCisgICAgKHRyYXZlcnNlcHJvYyljb3JvX3dyYXBwZXJfdHJhdmVyc2UsICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpY29yb193cmFwcGVyX2l0ZXJuZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjb3JvX3dyYXBwZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKK1B5T2JqZWN0ICoKK1B5Q29yb19OZXcoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK3sKKyAgICByZXR1cm4gZ2VuX25ld193aXRoX3F1YWxuYW1lKCZQeUNvcm9fVHlwZSwgZiwgbmFtZSwgcXVhbG5hbWUpOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCAzMDQ3ZDZiLi4yZmIwYzg4IDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpbnQgb2s7Ci0gICAgICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKICAgICAgICAgICAgIGlmIChvayA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0b2JqZWN0LmMgYi9PYmplY3RzL2xpc3RvYmplY3QuYwppbmRleCAxOTk2N2NhLi40NWU1NGNlIDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3RvYmplY3QuYworKysgYi9PYmplY3RzL2xpc3RvYmplY3QuYwpAQCAtMjQ0Nyw3ICsyNDQ3LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibGlzdCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYxMSw3ICsyNjExLDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibGlzdCBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvbG9uZ29iamVjdC5jIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKaW5kZXggNzAzNmMwZS4uNWYyMjQ1NSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sb25nb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKQEAgLTIxLDcgKzIxLDYgQEAKICAgICAgICAgIFB5X1NJWkUoeCkgPCAwID8gLShzZGlnaXQpKHgpLT5vYl9kaWdpdFswXSA6ICAgXAogICAgICAgICAgICAgIChQeV9TSVpFKHgpID09IDAgPyAoc2RpZ2l0KTAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAoc2RpZ2l0KSh4KS0+b2JfZGlnaXRbMF0pKQotI2RlZmluZSBBQlMoeCkgKCh4KSA8IDAgPyAtKHgpIDogKHgpKQogCiAjaWYgTlNNQUxMTkVHSU5UUyArIE5TTUFMTFBPU0lOVFMgPiAwCiAvKiBTbWFsbCBpbnRlZ2VycyBhcmUgcHJlYWxsb2NhdGVkIGluIHRoaXMgYXJyYXkgc28gdGhhdCB0aGV5CkBAIC01Nyw3ICs1Niw3IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIG1heWJlX3NtYWxsX2xvbmcoUHlMb25nT2JqZWN0ICp2KQogewotICAgIGlmICh2ICYmIEFCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CisgICAgaWYgKHYgJiYgUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpIHsKICAgICAgICAgc2RpZ2l0IGl2YWwgPSBNRURJVU1fVkFMVUUodik7CiAgICAgICAgIGlmICgtTlNNQUxMTkVHSU5UUyA8PSBpdmFsICYmIGl2YWwgPCBOU01BTExQT1NJTlRTKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0xMTQsNyArMTEzLDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogbG9uZ19ub3JtYWxpemUoUHlMb25nT2JqZWN0ICp2KQogewotICAgIFB5X3NzaXplX3QgaiA9IEFCUyhQeV9TSVpFKHYpKTsKKyAgICBQeV9zc2l6ZV90IGogPSBQeV9BQlMoUHlfU0laRSh2KSk7CiAgICAgUHlfc3NpemVfdCBpID0gajsKIAogICAgIHdoaWxlIChpID4gMCAmJiB2LT5vYl9kaWdpdFtpLTFdID09IDApCkBAIC03MTgsNyArNzE3LDcgQEAKIAogICAgIGFzc2VydCh2ICE9IE5VTEwpOwogICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOwotICAgIG5kaWdpdHMgPSBBQlMoUHlfU0laRSh2KSk7CisgICAgbmRpZ2l0cyA9IFB5X0FCUyhQeV9TSVpFKHYpKTsKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwpAQCAtMTU2NSw3ICsxNTY0LDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogZGl2cmVtMShQeUxvbmdPYmplY3QgKmEsIGRpZ2l0IG4sIGRpZ2l0ICpwcmVtKQogewotICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNpemUgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgUHlMb25nT2JqZWN0ICp6OwogCiAgICAgYXNzZXJ0KG4gPiAwICYmIG4gPD0gUHlMb25nX01BU0spOwpAQCAtMTU5Nyw3ICsxNTk2LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhdGl2ZSA9IFB5X1NJWkUoYSkgPCAwOwogCiAgICAgLyogcXVpY2sgYW5kIGRpcnR5IHVwcGVyIGJvdW5kIGZvciB0aGUgbnVtYmVyIG9mIGRpZ2l0cwpAQCAtMTc2Niw3ICsxNzY1LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhdGl2ZSA9IFB5X1NJWkUoYSkgPCAwOwogCiAgICAgLyogQ29tcHV0ZSBhIHJvdWdoIHVwcGVyIGJvdW5kIGZvciB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgKi8KQEAgLTIzMTMsNyArMjMxMiw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCwgKnN0cm9iajsKICAgICBjaGFyICplbmQgPSBOVUxMOwogCi0gICAgcmVzdWx0ID0gUHlMb25nX0Zyb21TdHJpbmcoKGNoYXIqKXMsICZlbmQsIGJhc2UpOworICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3RyaW5nKHMsICZlbmQsIGJhc2UpOwogICAgIGlmIChlbmQgPT0gTlVMTCB8fCAocmVzdWx0ICE9IE5VTEwgJiYgZW5kID09IHMgKyBsZW4pKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKQEAgLTIzODAsNyArMjM3OSw3IEBACiBsb25nX2RpdnJlbShQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYiwKICAgICAgICAgICAgIFB5TG9uZ09iamVjdCAqKnBkaXYsIFB5TG9uZ09iamVjdCAqKnByZW0pCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplX2EgPSBBQlMoUHlfU0laRShhKSksIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5TG9uZ09iamVjdCAqejsKIAogICAgIGlmIChzaXplX2IgPT0gMCkgewpAQCAtMjQzOSw3ICsyNDM4LDcgQEAKIH0KIAogLyogVW5zaWduZWQgaW50IGRpdmlzaW9uIHdpdGggcmVtYWluZGVyIC0tIHRoZSBhbGdvcml0aG0uICBUaGUgYXJndW1lbnRzIHYxCi0gICBhbmQgdzEgc2hvdWxkIHNhdGlzZnkgMiA8PSBBQlMoUHlfU0laRSh3MSkpIDw9IEFCUyhQeV9TSVpFKHYxKSkuICovCisgICBhbmQgdzEgc2hvdWxkIHNhdGlzZnkgMiA8PSBQeV9BQlMoUHlfU0laRSh3MSkpIDw9IFB5X0FCUyhQeV9TSVpFKHYxKSkuICovCiAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogeF9kaXZyZW0oUHlMb25nT2JqZWN0ICp2MSwgUHlMb25nT2JqZWN0ICp3MSwgUHlMb25nT2JqZWN0ICoqcHJlbSkKQEAgLTI0NTksOCArMjQ1OCw4IEBACiAgICAgICAgdGhhdCB3b24ndCBvdmVyZmxvdyBhIGRpZ2l0LiAqLwogCiAgICAgLyogYWxsb2NhdGUgc3BhY2U7IHcgd2lsbCBhbHNvIGJlIHVzZWQgdG8gaG9sZCB0aGUgZmluYWwgcmVtYWluZGVyICovCi0gICAgc2l6ZV92ID0gQUJTKFB5X1NJWkUodjEpKTsKLSAgICBzaXplX3cgPSBBQlMoUHlfU0laRSh3MSkpOworICAgIHNpemVfdiA9IFB5X0FCUyhQeV9TSVpFKHYxKSk7CisgICAgc2l6ZV93ID0gUHlfQUJTKFB5X1NJWkUodzEpKTsKICAgICBhc3NlcnQoc2l6ZV92ID49IHNpemVfdyAmJiBzaXplX3cgPj0gMik7IC8qIEFzc2VydCBjaGVja3MgYnkgZGl2KCkgKi8KICAgICB2ID0gX1B5TG9uZ19OZXcoc2l6ZV92KzEpOwogICAgIGlmICh2ID09IE5VTEwpIHsKQEAgLTI1OTEsNyArMjU5MCw3IEBACiAgICAgICAgbXVsdGlwbGUgb2YgNCwgcm91bmRpbmcgdGllcyB0byBhIG11bHRpcGxlIG9mIDguICovCiAgICAgc3RhdGljIGNvbnN0IGludCBoYWxmX2V2ZW5fY29ycmVjdGlvbls4XSA9IHswLCAtMSwgLTIsIDEsIDAsIC0xLCAyLCAxfTsKIAotICAgIGFfc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBhX3NpemUgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgaWYgKGFfc2l6ZSA9PSAwKSB7CiAgICAgICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgMDogc2lnbmlmaWNhbmQgMC4wLCBleHBvbmVudCAwLiAqLwogICAgICAgICAqZSA9IDA7CkBAIC0yNzMyLDcgKzI3MzEsNyBAQAogICAgICAgICBzaWduID0gUHlfU0laRShhKSAtIFB5X1NJWkUoYik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGkgPSBBQlMoUHlfU0laRShhKSk7CisgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICAgICAgd2hpbGUgKC0taSA+PSAwICYmIGEtPm9iX2RpZ2l0W2ldID09IGItPm9iX2RpZ2l0W2ldKQogICAgICAgICAgICAgOwogICAgICAgICBpZiAoaSA8IDApCkBAIC0yODUwLDcgKzI4NDksNyBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiB4X2FkZChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKIHsKLSAgICBQeV9zc2l6ZV90IHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpLCBzaXplX2IgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlMb25nT2JqZWN0ICp6OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBkaWdpdCBjYXJyeSA9IDA7CkBAIC0yODg0LDcgKzI4ODMsNyBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiB4X3N1YihQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKIHsKLSAgICBQeV9zc2l6ZV90IHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpLCBzaXplX2IgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlMb25nT2JqZWN0ICp6OwogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgc2lnbiA9IDE7CkBAIC0yOTQ0LDcgKzI5NDMsNyBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKLSAgICBpZiAoQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhNRURJVU1fVkFMVUUoYSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESVVNX1ZBTFVFKGIpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI5NzQsNyArMjk3Myw3IEBACiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAotICAgIGlmIChBQlMoUHlfU0laRShhKSkgPD0gMSAmJiBBQlMoUHlfU0laRShiKSkgPD0gMSkgeworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPD0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPD0gMSkgewogICAgICAgICBQeU9iamVjdCogcjsKICAgICAgICAgciA9IFB5TG9uZ19Gcm9tTG9uZyhNRURJVU1fVkFMVUUoYSktTUVESVVNX1ZBTFVFKGIpKTsKICAgICAgICAgcmV0dXJuIHI7CkBAIC0zMDAzLDggKzMwMDIsOCBAQAogeF9tdWwoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp6OwotICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOwotICAgIFB5X3NzaXplX3Qgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIFB5X3NzaXplX3Qgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIHogPSBfUHlMb25nX05ldyhzaXplX2EgKyBzaXplX2IpOwpAQCAtMzA5OCw3ICszMDk3LDcgQEAKIHsKICAgICBQeUxvbmdPYmplY3QgKmhpLCAqbG87CiAgICAgUHlfc3NpemVfdCBzaXplX2xvLCBzaXplX2hpOwotICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZV9uID0gQUJTKFB5X1NJWkUobikpOworICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZV9uID0gUHlfQUJTKFB5X1NJWkUobikpOwogCiAgICAgc2l6ZV9sbyA9IFB5X01JTihzaXplX24sIHNpemUpOwogICAgIHNpemVfaGkgPSBzaXplX24gLSBzaXplX2xvOwpAQCAtMzEyNyw4ICszMTI2LDggQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgoga19tdWwoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7Ci0gICAgUHlfc3NpemVfdCBhc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKLSAgICBQeV9zc2l6ZV90IGJzaXplID0gQUJTKFB5X1NJWkUoYikpOworICAgIFB5X3NzaXplX3QgYXNpemUgPSBQeV9BQlMoUHlfU0laRShhKSk7CisgICAgUHlfc3NpemVfdCBic2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBQeUxvbmdPYmplY3QgKmFoID0gTlVMTDsKICAgICBQeUxvbmdPYmplY3QgKmFsID0gTlVMTDsKICAgICBQeUxvbmdPYmplY3QgKmJoID0gTlVMTDsKQEAgLTMzNDgsOCArMzM0Nyw4IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGtfbG9wc2lkZWRfbXVsKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQogewotICAgIGNvbnN0IFB5X3NzaXplX3QgYXNpemUgPSBBQlMoUHlfU0laRShhKSk7Ci0gICAgUHlfc3NpemVfdCBic2l6ZSA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IGFzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIFB5X3NzaXplX3QgYnNpemUgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlfc3NpemVfdCBuYmRvbmU7ICAgICAgICAgIC8qICMgb2YgYiBkaWdpdHMgYWxyZWFkeSBtdWx0aXBsaWVkICovCiAgICAgUHlMb25nT2JqZWN0ICpyZXQ7CiAgICAgUHlMb25nT2JqZWN0ICpic2xpY2UgPSBOVUxMOwpAQCAtMzQwNyw3ICszNDA2LDcgQEAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAogICAgIC8qIGZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IG11bHRpcGxpY2F0aW9uICovCi0gICAgaWYgKEFCUyhQeV9TSVpFKGEpKSA8PSAxICYmIEFCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIHN0d29kaWdpdHMgdiA9IChzdHdvZGlnaXRzKShNRURJVU1fVkFMVUUoYSkpICogTUVESVVNX1ZBTFVFKGIpOwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdik7CkBAIC0zNjE0LDggKzM2MTMsOCBAQAogICAgICovCiAKICAgICAvKiBSZWR1Y2UgdG8gY2FzZSB3aGVyZSBhIGFuZCBiIGFyZSBib3RoIHBvc2l0aXZlLiAqLwotICAgIGFfc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKLSAgICBiX3NpemUgPSBBQlMoUHlfU0laRShiKSk7CisgICAgYV9zaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIGJfc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBuZWdhdGUgPSAoUHlfU0laRShhKSA8IDApIF4gKFB5X1NJWkUoYikgPCAwKTsKICAgICBpZiAoYl9zaXplID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1plcm9EaXZpc2lvbkVycm9yLApAQCAtMzczMSw3ICszNzMwLDcgQEAKICAgICAgICAgICAgIGluZXhhY3QgPSAxOwogICAgICAgICBQeV9ERUNSRUYocmVtKTsKICAgICB9Ci0gICAgeF9zaXplID0gQUJTKFB5X1NJWkUoeCkpOworICAgIHhfc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKHgpKTsKICAgICBhc3NlcnQoeF9zaXplID4gMCk7IC8qIHJlc3VsdCBvZiBkaXZpc2lvbiBpcyBuZXZlciB6ZXJvICovCiAgICAgeF9iaXRzID0gKHhfc2l6ZS0xKSpQeUxvbmdfU0hJRlQrYml0c19pbl9kaWdpdCh4LT5vYl9kaWdpdFt4X3NpemUtMV0pOwogCkBAIC0zODQxLDcgKzM4NDAsNyBAQAogCiAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7ICAvKiBpZiBleHBvbmVudCBpcyBuZWdhdGl2ZSAqLwogICAgICAgICBpZiAoYykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBvdygpIDJuZCBhcmd1bWVudCAiCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInBvdygpIDJuZCBhcmd1bWVudCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBiZSBuZWdhdGl2ZSB3aGVuIDNyZCBhcmd1bWVudCBzcGVjaWZpZWQiKTsKICAgICAgICAgICAgIGdvdG8gRXJyb3I7CiAgICAgICAgIH0KQEAgLTQwMDMsNyArNDAwMiw3IEBACiAgICAgLyogSW1wbGVtZW50IH54IGFzIC0oeCsxKSAqLwogICAgIFB5TG9uZ09iamVjdCAqeDsKICAgICBQeUxvbmdPYmplY3QgKnc7Ci0gICAgaWYgKEFCUyhQeV9TSVpFKHYpKSA8PTEpCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA8PTEpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLShNRURJVU1fVkFMVUUodikrMSkpOwogICAgIHcgPSAoUHlMb25nT2JqZWN0ICopUHlMb25nX0Zyb21Mb25nKDFMKTsKICAgICBpZiAodyA9PSBOVUxMKQpAQCAtNDAyMCw3ICs0MDE5LDcgQEAKIGxvbmdfbmVnKFB5TG9uZ09iamVjdCAqdikKIHsKICAgICBQeUxvbmdPYmplY3QgKno7Ci0gICAgaWYgKEFCUyhQeV9TSVpFKHYpKSA8PSAxKQorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPD0gMSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygtTUVESVVNX1ZBTFVFKHYpKTsKICAgICB6ID0gKFB5TG9uZ09iamVjdCAqKV9QeUxvbmdfQ29weSh2KTsKICAgICBpZiAoeiAhPSBOVUxMKQpAQCAtNDA3NSw3ICs0MDc0LDcgQEAKICAgICAgICAgICAgIGdvdG8gcnNoaWZ0X2Vycm9yOwogICAgICAgICB9CiAgICAgICAgIHdvcmRzaGlmdCA9IHNoaWZ0YnkgLyBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgIG5ld3NpemUgPSBBQlMoUHlfU0laRShhKSkgLSB3b3Jkc2hpZnQ7CisgICAgICAgIG5ld3NpemUgPSBQeV9BQlMoUHlfU0laRShhKSkgLSB3b3Jkc2hpZnQ7CiAgICAgICAgIGlmIChuZXdzaXplIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwogICAgICAgICBsb3NoaWZ0ID0gc2hpZnRieSAlIFB5TG9uZ19TSElGVDsKQEAgLTQxMjIsNyArNDEyMSw3IEBACiAgICAgd29yZHNoaWZ0ID0gc2hpZnRieSAvIFB5TG9uZ19TSElGVDsKICAgICByZW1zaGlmdCAgPSBzaGlmdGJ5IC0gd29yZHNoaWZ0ICogUHlMb25nX1NISUZUOwogCi0gICAgb2xkc2l6ZSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBvbGRzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIG5ld3NpemUgPSBvbGRzaXplICsgd29yZHNoaWZ0OwogICAgIGlmIChyZW1zaGlmdCkKICAgICAgICAgKytuZXdzaXplOwpAQCAtNDE4Myw3ICs0MTgyLDcgQEAKICAgICAgICByZXN1bHQgYmFjayB0byBzaWduLW1hZ25pdHVkZSBhdCB0aGUgZW5kLiAqLwogCiAgICAgLyogSWYgYSBpcyBuZWdhdGl2ZSwgcmVwbGFjZSBpdCBieSBpdHMgdHdvJ3MgY29tcGxlbWVudC4gKi8KLSAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CisgICAgc2l6ZV9hID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIG5lZ2EgPSBQeV9TSVpFKGEpIDwgMDsKICAgICBpZiAobmVnYSkgewogICAgICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV9hKTsKQEAgLTQxOTcsNyArNDE5Niw3IEBACiAgICAgICAgIFB5X0lOQ1JFRihhKTsKIAogICAgIC8qIFNhbWUgZm9yIGIuICovCi0gICAgc2l6ZV9iID0gQUJTKFB5X1NJWkUoYikpOworICAgIHNpemVfYiA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBuZWdiID0gUHlfU0laRShiKSA8IDA7CiAgICAgaWYgKG5lZ2IpIHsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfYik7CkBAIC00MzI4LDYgKzQzMjcsMjEzIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKK1B5T2JqZWN0ICoKK19QeUxvbmdfR0NEKFB5T2JqZWN0ICphYXJnLCBQeU9iamVjdCAqYmFyZykKK3sKKyAgICBQeUxvbmdPYmplY3QgKmEsICpiLCAqYyA9IE5VTEwsICpkID0gTlVMTCwgKnI7CisgICAgc3R3b2RpZ2l0cyB4LCB5LCBxLCBzLCB0LCBjX2NhcnJ5LCBkX2NhcnJ5OworICAgIHN0d29kaWdpdHMgQSwgQiwgQywgRCwgVDsKKyAgICBpbnQgbmJpdHMsIGs7CisgICAgUHlfc3NpemVfdCBzaXplX2EsIHNpemVfYiwgYWxsb2NfYSwgYWxsb2NfYjsKKyAgICBkaWdpdCAqYV9kaWdpdCwgKmJfZGlnaXQsICpjX2RpZ2l0LCAqZF9kaWdpdCwgKmFfZW5kLCAqYl9lbmQ7CisKKyAgICBhID0gKFB5TG9uZ09iamVjdCAqKWFhcmc7CisgICAgYiA9IChQeUxvbmdPYmplY3QgKiliYXJnOworICAgIHNpemVfYSA9IFB5X1NJWkUoYSk7CisgICAgc2l6ZV9iID0gUHlfU0laRShiKTsKKyAgICBpZiAoLTIgPD0gc2l6ZV9hICYmIHNpemVfYSA8PSAyICYmIC0yIDw9IHNpemVfYiAmJiBzaXplX2IgPD0gMikgeworICAgICAgICBQeV9JTkNSRUYoYSk7CisgICAgICAgIFB5X0lOQ1JFRihiKTsKKyAgICAgICAgZ290byBzaW1wbGU7CisgICAgfQorCisgICAgLyogSW5pdGlhbCByZWR1Y3Rpb246IG1ha2Ugc3VyZSB0aGF0IDAgPD0gYiA8PSBhLiAqLworICAgIGEgPSAoUHlMb25nT2JqZWN0ICopbG9uZ19hYnMoYSk7CisgICAgaWYgKGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYiA9IChQeUxvbmdPYmplY3QgKilsb25nX2FicyhiKTsKKyAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChsb25nX2NvbXBhcmUoYSwgYikgPCAwKSB7CisgICAgICAgIHIgPSBhOworICAgICAgICBhID0gYjsKKyAgICAgICAgYiA9IHI7CisgICAgfQorICAgIC8qIFdlIG5vdyBvd24gcmVmZXJlbmNlcyB0byBhIGFuZCBiICovCisKKyAgICBhbGxvY19hID0gUHlfU0laRShhKTsKKyAgICBhbGxvY19iID0gUHlfU0laRShiKTsKKyAgICAvKiByZWR1Y2UgdW50aWwgYSBmaXRzIGludG8gMiBkaWdpdHMgKi8KKyAgICB3aGlsZSAoKHNpemVfYSA9IFB5X1NJWkUoYSkpID4gMikgeworICAgICAgICBuYml0cyA9IGJpdHNfaW5fZGlnaXQoYS0+b2JfZGlnaXRbc2l6ZV9hLTFdKTsKKyAgICAgICAgLyogZXh0cmFjdCB0b3AgMipQeUxvbmdfU0hJRlQgYml0cyBvZiBhIGludG8geCwgYWxvbmcgd2l0aAorICAgICAgICAgICBjb3JyZXNwb25kaW5nIGJpdHMgb2YgYiBpbnRvIHkgKi8KKyAgICAgICAgc2l6ZV9iID0gUHlfU0laRShiKTsKKyAgICAgICAgYXNzZXJ0KHNpemVfYiA8PSBzaXplX2EpOworICAgICAgICBpZiAoc2l6ZV9iID09IDApIHsKKyAgICAgICAgICAgIGlmIChzaXplX2EgPCBhbGxvY19hKSB7CisgICAgICAgICAgICAgICAgciA9IChQeUxvbmdPYmplY3QgKilfUHlMb25nX0NvcHkoYSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHIgPSBhOworICAgICAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICAgICAgUHlfWERFQ1JFRihjKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZCk7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopcjsKKyAgICAgICAgfQorICAgICAgICB4ID0gKCgodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W3NpemVfYS0xXSA8PCAoMipQeUxvbmdfU0hJRlQtbmJpdHMpKSB8CisgICAgICAgICAgICAgKCh0d29kaWdpdHMpYS0+b2JfZGlnaXRbc2l6ZV9hLTJdIDw8IChQeUxvbmdfU0hJRlQtbmJpdHMpKSB8CisgICAgICAgICAgICAgKGEtPm9iX2RpZ2l0W3NpemVfYS0zXSA+PiBuYml0cykpOworCisgICAgICAgIHkgPSAoKHNpemVfYiA+PSBzaXplX2EgLSAyID8gYi0+b2JfZGlnaXRbc2l6ZV9hLTNdID4+IG5iaXRzIDogMCkgfAorICAgICAgICAgICAgIChzaXplX2IgPj0gc2l6ZV9hIC0gMSA/ICh0d29kaWdpdHMpYi0+b2JfZGlnaXRbc2l6ZV9hLTJdIDw8IChQeUxvbmdfU0hJRlQtbmJpdHMpIDogMCkgfAorICAgICAgICAgICAgIChzaXplX2IgPj0gc2l6ZV9hID8gKHR3b2RpZ2l0cyliLT5vYl9kaWdpdFtzaXplX2EtMV0gPDwgKDIqUHlMb25nX1NISUZULW5iaXRzKSA6IDApKTsKKworICAgICAgICAvKiBpbm5lciBsb29wIG9mIExlaG1lcidzIGFsZ29yaXRobTsgQSwgQiwgQywgRCBuZXZlciBncm93CisgICAgICAgICAgIGxhcmdlciB0aGFuIFB5TG9uZ19NQVNLIGR1cmluZyB0aGUgYWxnb3JpdGhtLiAqLworICAgICAgICBBID0gMTsgQiA9IDA7IEMgPSAwOyBEID0gMTsKKyAgICAgICAgZm9yIChrPTA7OyBrKyspIHsKKyAgICAgICAgICAgIGlmICh5LUMgPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHEgPSAoeCsoQS0xKSkvKHktQyk7CisgICAgICAgICAgICBzID0gQitxKkQ7CisgICAgICAgICAgICB0ID0geC1xKnk7CisgICAgICAgICAgICBpZiAocyA+IHQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB4ID0geTsgeSA9IHQ7CisgICAgICAgICAgICB0ID0gQStxKkM7IEEgPSBEOyBCID0gQzsgQyA9IHM7IEQgPSB0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGsgPT0gMCkgeworICAgICAgICAgICAgLyogbm8gcHJvZ3Jlc3M7IGRvIGEgRXVjbGlkZWFuIHN0ZXAgKi8KKyAgICAgICAgICAgIGlmIChsX2Rpdm1vZChhLCBiLCBOVUxMLCAmcikgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgICAgICBhID0gYjsKKyAgICAgICAgICAgIGIgPSByOworICAgICAgICAgICAgYWxsb2NfYSA9IGFsbG9jX2I7CisgICAgICAgICAgICBhbGxvY19iID0gUHlfU0laRShiKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICBhLCBiID0gQSpiLUIqYSwgRCphLUMqYiBpZiBrIGlzIG9kZAorICAgICAgICAgIGEsIGIgPSBBKmEtQipiLCBEKmItQyphIGlmIGsgaXMgZXZlbgorICAgICAgICAqLworICAgICAgICBpZiAoayYxKSB7CisgICAgICAgICAgICBUID0gLUE7IEEgPSAtQjsgQiA9IFQ7CisgICAgICAgICAgICBUID0gLUM7IEMgPSAtRDsgRCA9IFQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGMgIT0gTlVMTCkKKyAgICAgICAgICAgIFB5X1NJWkUoYykgPSBzaXplX2E7CisgICAgICAgIGVsc2UgaWYgKFB5X1JFRkNOVChhKSA9PSAxKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoYSk7CisgICAgICAgICAgICBjID0gYTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFsbG9jX2EgPSBzaXplX2E7CisgICAgICAgICAgICBjID0gX1B5TG9uZ19OZXcoc2l6ZV9hKTsKKyAgICAgICAgICAgIGlmIChjID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkICE9IE5VTEwpCisgICAgICAgICAgICBQeV9TSVpFKGQpID0gc2l6ZV9hOworICAgICAgICBlbHNlIGlmIChQeV9SRUZDTlQoYikgPT0gMSAmJiBzaXplX2EgPD0gYWxsb2NfYikgeworICAgICAgICAgICAgUHlfSU5DUkVGKGIpOworICAgICAgICAgICAgZCA9IGI7CisgICAgICAgICAgICBQeV9TSVpFKGQpID0gc2l6ZV9hOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWxsb2NfYiA9IHNpemVfYTsKKyAgICAgICAgICAgIGQgPSBfUHlMb25nX05ldyhzaXplX2EpOworICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGFfZW5kID0gYS0+b2JfZGlnaXQgKyBzaXplX2E7CisgICAgICAgIGJfZW5kID0gYi0+b2JfZGlnaXQgKyBzaXplX2I7CisKKyAgICAgICAgLyogY29tcHV0ZSBuZXcgYSBhbmQgbmV3IGIgaW4gcGFyYWxsZWwgKi8KKyAgICAgICAgYV9kaWdpdCA9IGEtPm9iX2RpZ2l0OworICAgICAgICBiX2RpZ2l0ID0gYi0+b2JfZGlnaXQ7CisgICAgICAgIGNfZGlnaXQgPSBjLT5vYl9kaWdpdDsKKyAgICAgICAgZF9kaWdpdCA9IGQtPm9iX2RpZ2l0OworICAgICAgICBjX2NhcnJ5ID0gMDsKKyAgICAgICAgZF9jYXJyeSA9IDA7CisgICAgICAgIHdoaWxlIChiX2RpZ2l0IDwgYl9lbmQpIHsKKyAgICAgICAgICAgIGNfY2FycnkgKz0gKEEgKiAqYV9kaWdpdCkgLSAoQiAqICpiX2RpZ2l0KTsKKyAgICAgICAgICAgIGRfY2FycnkgKz0gKEQgKiAqYl9kaWdpdCsrKSAtIChDICogKmFfZGlnaXQrKyk7CisgICAgICAgICAgICAqY19kaWdpdCsrID0gKGRpZ2l0KShjX2NhcnJ5ICYgUHlMb25nX01BU0spOworICAgICAgICAgICAgKmRfZGlnaXQrKyA9IChkaWdpdCkoZF9jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgIGNfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgICAgIGRfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoYV9kaWdpdCA8IGFfZW5kKSB7CisgICAgICAgICAgICBjX2NhcnJ5ICs9IEEgKiAqYV9kaWdpdDsKKyAgICAgICAgICAgIGRfY2FycnkgLT0gQyAqICphX2RpZ2l0Kys7CisgICAgICAgICAgICAqY19kaWdpdCsrID0gKGRpZ2l0KShjX2NhcnJ5ICYgUHlMb25nX01BU0spOworICAgICAgICAgICAgKmRfZGlnaXQrKyA9IChkaWdpdCkoZF9jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgIGNfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgICAgIGRfY2FycnkgPj49IFB5TG9uZ19TSElGVDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoY19jYXJyeSA9PSAwKTsKKyAgICAgICAgYXNzZXJ0KGRfY2FycnkgPT0gMCk7CisKKyAgICAgICAgUHlfSU5DUkVGKGMpOworICAgICAgICBQeV9JTkNSRUYoZCk7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBhID0gbG9uZ19ub3JtYWxpemUoYyk7CisgICAgICAgIGIgPSBsb25nX25vcm1hbGl6ZShkKTsKKyAgICB9CisgICAgUHlfWERFQ1JFRihjKTsKKyAgICBQeV9YREVDUkVGKGQpOworCitzaW1wbGU6CisgICAgYXNzZXJ0KFB5X1JFRkNOVChhKSA+IDApOworICAgIGFzc2VydChQeV9SRUZDTlQoYikgPiAwKTsKKy8qIElzc3VlICMyNDk5OTogdXNlIHR3byBzaGlmdHMgaW5zdGVhZCBvZiAiPj4gMipQeUxvbmdfU0hJRlQiIHRvIGF2b2lkCisgICB1bmRlZmluZWQgYmVoYXZpb3VyIHdoZW4gTE9OR19NQVggdHlwZSBpcyBzbWFsbGVyIHRoYW4gNjAgYml0cyAqLworI2lmIExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyAgICAvKiBhIGZpdHMgaW50byBhIGxvbmcsIHNvIGIgbXVzdCB0b28gKi8KKyAgICB4ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKilhKTsKKyAgICB5ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKiliKTsKKyNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAorICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZygoUHlPYmplY3QgKilhKTsKKyAgICB5ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYik7CisjZWxzZQorIyBlcnJvciAiX1B5TG9uZ19HQ0QiCisjZW5kaWYKKyAgICB4ID0gUHlfQUJTKHgpOworICAgIHkgPSBQeV9BQlMoeSk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKworICAgIC8qIHVzdWFsIEV1Y2xpZGVhbiBhbGdvcml0aG0gZm9yIGxvbmdzICovCisgICAgd2hpbGUgKHkgIT0gMCkgeworICAgICAgICB0ID0geTsKKyAgICAgICAgeSA9IHggJSB5OworICAgICAgICB4ID0gdDsKKyAgICB9CisjaWYgTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeCk7CisjZWxpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgJiYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKKyNlbHNlCisjIGVycm9yICJfUHlMb25nX0dDRCIKKyNlbmRpZgorCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIFB5X1hERUNSRUYoYyk7CisgICAgUHlfWERFQ1JFRihkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGxvbmdfZmxvYXQoUHlPYmplY3QgKnYpCiB7CkBAIC00NjMwLDcgKzQ4MzYsNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gb2Zmc2V0b2YoUHlMb25nT2JqZWN0LCBvYl9kaWdpdCkgKyBBQlMoUHlfU0laRSh2KSkqc2l6ZW9mKGRpZ2l0KTsKKyAgICByZXMgPSBvZmZzZXRvZihQeUxvbmdPYmplY3QsIG9iX2RpZ2l0KSArIFB5X0FCUyhQeV9TSVpFKHYpKSpzaXplb2YoZGlnaXQpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KIApAQCAtNDY0NCw3ICs0ODUwLDcgQEAKICAgICBhc3NlcnQodiAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKIAotICAgIG5kaWdpdHMgPSBBQlMoUHlfU0laRSh2KSk7CisgICAgbmRpZ2l0cyA9IFB5X0FCUyhQeV9TSVpFKHYpKTsKICAgICBpZiAobmRpZ2l0cyA9PSAwKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwogCkBAIC00ODQ5LDcgKzUwNTUsNyBAQAogICAgIGlmICh0eXBlICE9ICZQeUxvbmdfVHlwZSAmJiBQeVR5cGVfSXNTdWJ0eXBlKHR5cGUsICZQeUxvbmdfVHlwZSkpIHsKICAgICAgICAgUHlMb25nT2JqZWN0ICpuZXdvYmo7CiAgICAgICAgIGludCBpOwotICAgICAgICBQeV9zc2l6ZV90IG4gPSBBQlMoUHlfU0laRShsb25nX29iaikpOworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeV9BQlMoUHlfU0laRShsb25nX29iaikpOwogCiAgICAgICAgIG5ld29iaiA9IChQeUxvbmdPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCBuKTsKICAgICAgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CkBAIC00ODc0LDkgKzUwODAsNyBAQAogXG5cCiBSZXR1cm4gdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGFycmF5IG9mIGJ5dGVzLlxuXAogXG5cCi1UaGUgYnl0ZXMgYXJndW1lbnQgbXVzdCBlaXRoZXIgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIG9yIGJlIGFuXG5cCi1pdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGVzLiAgQnl0ZXMgYW5kIGJ5dGVhcnJheSBhcmUgZXhhbXBsZXMgb2ZcblwKLWJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wuXG5cCitUaGUgYnl0ZXMgYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IChlLmcuIGJ5dGVzIG9yIGJ5dGVhcnJheSkuXG5cCiBcblwKIFRoZSBieXRlb3JkZXIgYXJndW1lbnQgZGV0ZXJtaW5lcyB0aGUgYnl0ZSBvcmRlciB1c2VkIHRvIHJlcHJlc2VudCB0aGVcblwKIGludGVnZXIuICBJZiBieXRlb3JkZXIgaXMgJ2JpZycsIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgaXMgYXQgdGhlXG5cCkBAIC01MDk1LDEzICs1Mjk5LDEzIEBACiAgICAgICAgICAgICAgKiB0byB0aGUgb3JpZ2luYWwgcmVmY250ICsgMSAqLwogICAgICAgICAgICAgUHlfUkVGQ05UKG9wKSA9IHJlZmNudCArIDE7CiAgICAgICAgICAgICBhc3NlcnQoUHlfU0laRShvcCkgPT0gc2l6ZSk7Ci0gICAgICAgICAgICBhc3NlcnQodi0+b2JfZGlnaXRbMF0gPT0gYWJzKGl2YWwpKTsKKyAgICAgICAgICAgIGFzc2VydCh2LT5vYl9kaWdpdFswXSA9PSAoZGlnaXQpYWJzKGl2YWwpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICh2b2lkKVB5T2JqZWN0X0lOSVQodiwgJlB5TG9uZ19UeXBlKTsKICAgICAgICAgfQogICAgICAgICBQeV9TSVpFKHYpID0gc2l6ZTsKLSAgICAgICAgdi0+b2JfZGlnaXRbMF0gPSBhYnMoaXZhbCk7CisgICAgICAgIHYtPm9iX2RpZ2l0WzBdID0gKGRpZ2l0KWFicyhpdmFsKTsKICAgICB9CiAjZW5kaWYKICAgICAvKiBpbml0aWFsaXplIGludF9pbmZvICovCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCAwYmU4NDkzLi43NGNhZDdkIDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTEsNiArMSw3IEBACiAvKiBNZW1vcnl2aWV3IG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogCkBAIC00OCw5ICs0OSw2IEBACiAqLwogCiAKLSNkZWZpbmUgWFNUUklOR0laRSh2KSAjdgotI2RlZmluZSBTVFJJTkdJWkUodikgWFNUUklOR0laRSh2KQotCiAjZGVmaW5lIENIRUNLX01CVUZfUkVMRUFTRUQobWJ1ZikgXAogICAgIGlmICgoKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKiltYnVmKS0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEKSB7IFwKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xOTUsMTAgKzE5MywxMCBAQAogI2RlZmluZSBWSUVXX0FERFIobXYpICgmKChQeU1lbW9yeVZpZXdPYmplY3QgKiltdiktPnZpZXcpCiAKIC8qIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygc3Vib2Zmc2V0cyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLiAqLwotI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzWzBdID49IDApCisjZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMsIGRpbSkgKHN1Ym9mZnNldHMgJiYgc3Vib2Zmc2V0c1tkaW1dID49IDApCiAvKiBBZGp1c3QgcHRyIGlmIHN1Ym9mZnNldHMgYXJlIHByZXNlbnQuICovCi0jZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKSBcCi0gICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMpID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzWzBdIDogcHRyKQorI2RlZmluZSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cywgZGltKSBcCisgICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMsIGRpbSkgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbZGltXSA6IHB0cikKIAogLyogTWVtb3J5dmlldyBidWZmZXIgcHJvcGVydGllcyAqLwogI2RlZmluZSBNVl9DX0NPTlRJR1VPVVMoZmxhZ3MpIChmbGFncyYoX1B5X01FTU9SWVZJRVdfU0NBTEFSfF9QeV9NRU1PUllWSUVXX0MpKQpAQCAtMjIzLDcgKzIyMSw3IEBACiAKIAogUHlEb2NfU1RSVkFSKG1lbW9yeV9kb2MsCi0ibWVtb3J5dmlldyhvYmplY3QpXG5cCisibWVtb3J5dmlldygkbW9kdWxlLCBvYmplY3QpXG4tLVxuXAogXG5cCiBDcmVhdGUgYSBuZXcgbWVtb3J5dmlldyBvYmplY3Qgd2hpY2ggcmVmZXJlbmNlcyB0aGUgZ2l2ZW4gb2JqZWN0LiIpOwogCkBAIC0zMzUsMTEgKzMzMywxMSBAQAogICAgICAgICBjaGFyICpwOwogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgewotICAgICAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cywgMCk7CiAgICAgICAgICAgICBtZW1jcHkocCwgeHNwdHIsIGl0ZW1zaXplKTsKICAgICAgICAgfQogICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGkgPCBzaGFwZVswXTsgcCs9aXRlbXNpemUsIGRwdHIrPWRzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMsIDApOwogICAgICAgICAgICAgbWVtY3B5KHhkcHRyLCBwLCBpdGVtc2l6ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjcsOCArMzY1LDggQEAKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IGRwdHIrPWRzdHJpZGVzWzBdLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7Ci0gICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7Ci0gICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cywgMCk7CisgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cywgMCk7CiAKICAgICAgICAgY29weV9yZWMoc2hhcGUrMSwgbmRpbS0xLCBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICAgeGRwdHIsIGRzdHJpZGVzKzEsIGRzdWJvZmZzZXRzID8gZHN1Ym9mZnNldHMrMSA6IE5VTEwsCkBAIC02NjAsNyArNjU4LDcgQEAKICAgICBpZiAoc3JjLT5uZGltID4gUHlCVUZfTUFYX05ESU0pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAibWVtb3J5dmlldzogbnVtYmVyIG9mIGRpbWVuc2lvbnMgbXVzdCBub3QgZXhjZWVkICIKLSAgICAgICAgICAgIFNUUklOR0laRShQeUJVRl9NQVhfTkRJTSkpOworICAgICAgICAgICAgUHlfU1RSSU5HSUZZKFB5QlVGX01BWF9ORElNKSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzk1LDcgKzc5Myw3IEBACiAgICAgfQogCiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgIm1lbW9yeXZpZXc6ICUuMjAwcyBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgYnVmZmVyIGludGVyZmFjZSIsCisgICAgICAgICJtZW1vcnl2aWV3OiBhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMjAwcyciLAogICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTg5NSw3ICs4OTMsNyBAQAogICAgVGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgaXMgdGhlIHNhbWUKICAgIChpLmUuIHRvbGlzdChpbnB1dCkgPT0gdG9saXN0KG91dHB1dCkpLCBidXQgdGhlIHBoeXNpY2FsIGxheW91dCBpbgogICAgbWVtb3J5IGNhbiBiZSBleHBsaWNpdGx5IGNob3Nlbi4KLSAKKwogICAgQXMgdXN1YWwsIGlmIGJ1ZmZlcnR5cGU9UHlCVUZfV1JJVEUsIHRoZSBleHBvcnRlcidzIGJ1ZmZlciBtdXN0IGJlIHdyaXRhYmxlLAogICAgb3RoZXJ3aXNlIGl0IG1heSBiZSB3cml0YWJsZSBvciByZWFkLW9ubHkuCiAKQEAgLTExOTksMTMgKzExOTcsNiBAQAogICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzID09IG12LT5vYl9hcnJheSArIHZpZXctPm5kaW0pOwogICAgIGFzc2VydCh2aWV3LT5zdWJvZmZzZXRzID09IG12LT5vYl9hcnJheSArIDIqdmlldy0+bmRpbSk7CiAKLSAgICBpZiAoZ2V0X25hdGl2ZV9mbXRjaGFyKCZzcmNjaGFyLCB2aWV3LT5mb3JtYXQpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJtZW1vcnl2aWV3OiBzb3VyY2UgZm9ybWF0IG11c3QgYmUgYSBuYXRpdmUgc2luZ2xlIGNoYXJhY3RlciAiCi0gICAgICAgICAgICAiZm9ybWF0IHByZWZpeGVkIHdpdGggYW4gb3B0aW9uYWwgJ0AnIik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCiAgICAgYXNjaWlmbXQgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhmb3JtYXQpOwogICAgIGlmIChhc2NpaWZtdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMTIxOCw3ICsxMjA5LDggQEAKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgaWYgKCFJU19CWVRFX0ZPUk1BVChzcmNjaGFyKSAmJiAhSVNfQllURV9GT1JNQVQoZGVzdGNoYXIpKSB7CisgICAgaWYgKChnZXRfbmF0aXZlX2ZtdGNoYXIoJnNyY2NoYXIsIHZpZXctPmZvcm1hdCkgPCAwIHx8CisgICAgICAgICAhSVNfQllURV9GT1JNQVQoc3JjY2hhcikpICYmICFJU19CWVRFX0ZPUk1BVChkZXN0Y2hhcikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCBiZXR3ZWVuIHR3byBub24tYnl0ZSBmb3JtYXRzIik7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtMTI0NCw3ICsxMjM2LDcgQEAKICAgICB2aWV3LT5zdWJvZmZzZXRzID0gTlVMTDsKIAogICAgIGluaXRfZmxhZ3MobXYpOwotIAorCiAgICAgcmV0ID0gMDsKIAogb3V0OgpAQCAtMTM4OSw3ICsxMzgxLDcgQEAKICAgICAgICAgaWYgKG5kaW0gPiBQeUJVRl9NQVhfTkRJTSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXc6IG51bWJlciBvZiBkaW1lbnNpb25zIG11c3Qgbm90IGV4Y2VlZCAiCi0gICAgICAgICAgICAgICAgU1RSSU5HSVpFKFB5QlVGX01BWF9ORElNKSk7CisgICAgICAgICAgICAgICAgUHlfU1RSSU5HSUZZKFB5QlVGX01BWF9ORElNKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoc2VsZi0+dmlldy5uZGltICE9IDEgJiYgbmRpbSAhPSAxKSB7CkBAIC0yMDYwLDcgKzIwNTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgaXRlbSA9IHVucGFja19zaW5nbGUoeHB0ciwgZm10KTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CkBAIC0yMDk0LDcgKzIwODYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgaXRlbSA9IHRvbGlzdF9yZWMoeHB0ciwgbmRpbS0xLCBzaGFwZSsxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzKzEsIHN1Ym9mZnNldHMgPyBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQpOwpAQCAtMjE2MSw2ICsyMTUzLDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfaGV4KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIFB5X2J1ZmZlciAqc3JjID0gVklFV19BRERSKHNlbGYpOworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KHNyYy0+YnVmLCBzcmMtPmxlbik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfcmVwcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPmZsYWdzICYgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQpCkBAIC0yMTc0LDMzICsyMTc0LDY2IEBACiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhpbmcgYW5kIHNsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgaXRlbSBhdCBpbmRleC4gKi8KIHN0YXRpYyBjaGFyICoKLXB0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBpbmRleCkKK2xvb2t1cF9kaW1lbnNpb24oUHlfYnVmZmVyICp2aWV3LCBjaGFyICpwdHIsIGludCBkaW0sIFB5X3NzaXplX3QgaW5kZXgpCiB7Ci0gICAgY2hhciAqcHRyOwotICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uICovCisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBnaXZlbiBkaW1lbnNpb24gKi8KIAogICAgIGFzc2VydCh2aWV3LT5zaGFwZSk7CiAgICAgYXNzZXJ0KHZpZXctPnN0cmlkZXMpOwogCi0gICAgbml0ZW1zID0gdmlldy0+c2hhcGVbMF07CisgICAgbml0ZW1zID0gdmlldy0+c2hhcGVbZGltXTsKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGluZGV4ICs9IG5pdGVtczsKICAgICB9CiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBuaXRlbXMpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbmRleEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMgb24gZGltZW5zaW9uICVkIiwgZGltICsgMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOwotICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzWzBdICogaW5kZXg7CisgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbZGltXSAqIGluZGV4OwogCi0gICAgcHRyID0gQURKVVNUX1BUUihwdHIsIHZpZXctPnN1Ym9mZnNldHMpOworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCB2aWV3LT5zdWJvZmZzZXRzLCBkaW0pOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KIAorLyogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBpdGVtIGF0IGluZGV4LiAqLworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21faW5kZXgoUHlfYnVmZmVyICp2aWV3LCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGNoYXIgKnB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgIHJldHVybiBsb29rdXBfZGltZW5zaW9uKHZpZXcsIHB0ciwgMCwgaW5kZXgpOworfQorCisvKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZW0gYXQgdHVwbGUuICovCitzdGF0aWMgY2hhciAqCitwdHJfZnJvbV90dXBsZShQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICp0dXApCit7CisgICAgY2hhciAqcHRyID0gKGNoYXIgKil2aWV3LT5idWY7CisgICAgUHlfc3NpemVfdCBkaW0sIG5pbmRpY2VzID0gUHlUdXBsZV9HRVRfU0laRSh0dXApOworCisgICAgaWYgKG5pbmRpY2VzID4gdmlldy0+bmRpbSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmRleCAlemQtZGltZW5zaW9uIHZpZXcgd2l0aCAlemQtZWxlbWVudCB0dXBsZSIsCisgICAgICAgICAgICAgICAgICAgICB2aWV3LT5uZGltLCBuaW5kaWNlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoZGltID0gMDsgZGltIDwgbmluZGljZXM7IGRpbSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgICAgIGluZGV4ID0gUHlOdW1iZXJfQXNTc2l6ZV90KFB5VHVwbGVfR0VUX0lURU0odHVwLCBkaW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcHRyID0gbG9va3VwX2RpbWVuc2lvbih2aWV3LCBwdHIsIGRpbSwgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHB0cjsKK30KKwogLyogUmV0dXJuIHRoZSBpdGVtIGF0IGluZGV4LiBJbiBhIG9uZS1kaW1lbnNpb25hbCB2aWV3LCB0aGlzIGlzIGFuIG9iamVjdAogICAgd2l0aCB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdmlldy0+Zm9ybWF0LiBPdGhlcndpc2UsIHRoZSBpdGVtIGlzIGEgc3ViLXZpZXcuCiAgICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBtZW1vcnlfc3Vic2NyaXB0KCkgYW5kIG1lbW9yeV9hc19zZXF1ZW5jZS4gKi8KQEAgLTIyMzIsNiArMjI2NSwzMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBSZXR1cm4gdGhlIGl0ZW0gYXQgcG9zaXRpb24gKmtleSogKGEgdHVwbGUgb2YgaW5kaWNlcykuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2l0ZW1fbXVsdGkoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdHVwKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIFB5X3NzaXplX3QgbmluZGljZXMgPSBQeVR1cGxlX0dFVF9TSVpFKHR1cCk7CisgICAgY2hhciAqcHRyOworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobmluZGljZXMgPCB2aWV3LT5uZGltKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1Yi12aWV3cyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwdHIgPSBwdHJfZnJvbV90dXBsZSh2aWV3LCB0dXApOworICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOworfQorCiBQeV9MT0NBTF9JTkxJTkUoaW50KQogaW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCiB7CkBAIC0yMjgwLDYgKzIzMzksMjIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGljIFB5X3NzaXplX3QKK2lzX211bHRpaW5kZXgoUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soa2V5KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoa2V5KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShrZXksIGkpOworICAgICAgICBpZiAoIVB5SW5kZXhfQ2hlY2soeCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIG12W29ial0gcmV0dXJucyBhbiBvYmplY3QgaG9sZGluZyB0aGUgZGF0YSBmb3Igb25lIGVsZW1lbnQgaWYgb2JqCiAgICBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnl2aWV3IG9yIGFub3RoZXIgbWVtb3J5dmlldyBvYmplY3QgaWYgaXQKICAgIGRvZXMgbm90LgpAQCAtMjI5MSw3ICsyMzY2LDcgQEAKIHsKICAgICBQeV9idWZmZXIgKnZpZXc7CiAgICAgdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgCisKICAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKIAogICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKQEAgLTIzMzUsNiArMjQxMCw5IEBACiAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNsaWNlZDsKICAgICB9CisgICAgZWxzZSBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIHJldHVybiBtZW1vcnlfaXRlbV9tdWx0aShzZWxmLCBrZXkpOworICAgIH0KICAgICBlbHNlIGlmIChpc19tdWx0aXNsaWNlKGtleSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc2xpY2luZyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKQEAgLTIzNzksMTQgKzI0NTcsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIm1lbW9yeXZpZXcgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIG5kaW0gPSAxIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKICAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICAgICAgaWYgKDEgPCB2aWV3LT5uZGltKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViLXZpZXdzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOwpAQCAtMjQyMSw3ICsyNTAwLDE5IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSB8fCBpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA8IHZpZXctPm5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHB0ciA9IHB0cl9mcm9tX3R1cGxlKHZpZXcsIGtleSk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgfQorICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgfHwgaXNfbXVsdGlzbGljZShrZXkpKSB7CiAgICAgICAgIC8qIENhbGwgbWVtb3J5X3N1YnNjcmlwdCgpIHRvIHByb2R1Y2UgYSBzbGljZWQgbHZhbHVlLCB0aGVuIGNvcHkKICAgICAgICAgICAgcnZhbHVlIGludG8gbHZhbHVlLiBUaGlzIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gX3Rlc3RidWZmZXIuYy4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCkBAIC0yNTk0LDggKzI2ODUsOCBAQAogICAgIGludCBlcXVhbDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcCs9cHN0cmlkZXNbMF0sIHErPXFzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzKTsKLSAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzLCAwKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHhwLCB4cSwgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOwogICAgICAgICBpZiAoZXF1YWwgPD0gMCkKICAgICAgICAgICAgIHJldHVybiBlcXVhbDsKQEAgLTI2MjksOCArMjcyMCw4IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgewotICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOwotICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMsIDApOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMsIDApOwogICAgICAgICBlcXVhbCA9IGNtcF9yZWMoeHAsIHhxLCBuZGltLTEsIHNoYXBlKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcysxLCBwc3Vib2Zmc2V0cyA/IHBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMrMSwgcXN1Ym9mZnNldHMgPyBxc3Vib2Zmc2V0cysxIDogTlVMTCwKQEAgLTI5NDgsNiArMzAzOSw3IEBACiBQeURvY19TVFJWQVIobWVtb3J5X2NvbnRpZ3VvdXNfZG9jLAogICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4iKTsKIAorCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKICAgICB7Im9iaiIsICAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X29ial9nZXQsICAgICAgICBOVUxMLCBtZW1vcnlfb2JqX2RvY30sCiAgICAgeyJuYnl0ZXMiLCAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uYnl0ZXNfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X25ieXRlc19kb2N9LApAQCAtMjk2NSwyNSArMzA1NywzMCBAQAogfTsKIAogUHlEb2NfU1RSVkFSKG1lbW9yeV9yZWxlYXNlX2RvYywKLSJNLnJlbGVhc2UoKSAtPiBOb25lXG5cCisicmVsZWFzZSgkc2VsZiwgLylcbi0tXG5cCiBcblwKIFJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV90b2J5dGVzX2RvYywKLSJNLnRvYnl0ZXMoKSAtPiBieXRlc1xuXAorInRvYnl0ZXMoJHNlbGYsIC8pXG4tLVxuXAogXG5cCiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGUgc3RyaW5nLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9oZXhfZG9jLAorImhleCgkc2VsZiwgLylcbi0tXG5cCitcblwKK1JldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3RvbGlzdF9kb2MsCi0iTS50b2xpc3QoKSAtPiBsaXN0XG5cCisidG9saXN0KCRzZWxmLCAvKVxuLS1cblwKIFxuXAogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9jYXN0X2RvYywKLSJNLmNhc3QoZm9ybWF0Wywgc2hhcGVdKSAtPiBtZW1vcnl2aWV3XG5cCisiY2FzdCgkc2VsZiwgLywgZm9ybWF0LCAqLCBzaGFwZSlcbi0tXG5cCiBcblwKIENhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7CiAgICAgeyJyZWxlYXNlIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfcmVsZWFzZSwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCiAgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCisgICAgeyJoZXgiLCAgICAgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfaGV4LCBNRVRIX05PQVJHUywgbWVtb3J5X2hleF9kb2N9LAogICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKICAgICB7ImNhc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9jYXN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgbWVtb3J5X2Nhc3RfZG9jfSwKICAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCA5YjZlNWU0Li4xODE3NzIyIDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTM3LDYgKzM3LDcgQEAKICAgICAgICAgaWYgKG9wID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgb3AtPm1fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIG9wLT5tX21sID0gbWw7CiAgICAgUHlfWElOQ1JFRihzZWxmKTsKICAgICBvcC0+bV9zZWxmID0gc2VsZjsKQEAgLTc3LDY4ICs3OCw3MSBAQAogfQogCiBQeU9iamVjdCAqCi1QeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0jZGVmaW5lIENIRUNLX1JFU1VMVChyZXMpIGFzc2VydChyZXMgIT0gTlVMTCB8fCBQeUVycl9PY2N1cnJlZCgpKQotCiAgICAgUHlDRnVuY3Rpb25PYmplY3QqIGYgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmM7CiAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmFyZywgKnJlczsKICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IGZsYWdzOwogCi0gICAgc3dpdGNoIChQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCkpIHsKLSAgICBjYXNlIE1FVEhfVkFSQVJHUzoKLSAgICAgICAgaWYgKGt3ID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3cpID09IDApIHsKLSAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgYXJnKTsKLSAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOwotICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFM6Ci0gICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZywga3cpOwotICAgICAgICBDSEVDS19SRVNVTFQocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICBjYXNlIE1FVEhfTk9BUkdTOgotICAgICAgICBpZiAoa3cgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrdykgPT0gMCkgewotICAgICAgICAgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoYXJnKTsKLSAgICAgICAgICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgICAgICAgICByZXMgPSAoKm1ldGgpKHNlbGYsIE5VTEwpOwotICAgICAgICAgICAgICAgIENIRUNLX1JFU1VMVChyZXMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAotICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNRVRIX086Ci0gICAgICAgIGlmIChrdyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3KSA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwotICAgICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgUHlUdXBsZV9HRVRfSVRFTShhcmcsIDApKTsKLSAgICAgICAgICAgICAgICBDSEVDS19SRVNVTFQocmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCV6ZCBnaXZlbikiLAotICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiQmFkIGNhbGwgZmxhZ3MgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgIlB5Q0Z1bmN0aW9uX0NhbGwuIE1FVEhfT0xEQVJHUyBpcyBubyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAvKiBQeUNGdW5jdGlvbl9DYWxsKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb29zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCk7CisKKyAgICBpZiAoZmxhZ3MgPT0gKE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMpKSB7CisgICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZ3MsIGt3ZHMpOwogICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAotICAgICAgICAgICAgICAgICBmLT5tX21sLT5tbF9uYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAotI3VuZGVmIENIRUNLX1JFU1VMVAorICAgICAgICBzd2l0Y2ggKGZsYWdzKSB7CisgICAgICAgIGNhc2UgTUVUSF9WQVJBUkdTOgorICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBhcmdzKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTUVUSF9OT0FSR1M6CisgICAgICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgICAgIGlmIChzaXplICE9IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgZi0+bV9tbC0+bWxfbmFtZSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcyA9ICgqbWV0aCkoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1FVEhfTzoKKyAgICAgICAgICAgIHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICAgICAgaWYgKHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgIGYtPm1fbWwtPm1sX25hbWUsIHNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhcmcgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICAgICAgcmVzID0gKCptZXRoKShzZWxmLCBhcmcpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIGNhbGwgZmxhZ3MgaW4gUHlDRnVuY3Rpb25fQ2FsbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNRVRIX09MREFSR1MgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlcywgTlVMTCk7CiB9CiAKIC8qIE1ldGhvZHMgKHRoZSBzdGFuZGFyZCBidWlsdC1pbiBtZXRob2RzLCB0aGF0IGlzKSAqLwpAQCAtMTQ3LDYgKzE1MSw5IEBACiBtZXRoX2RlYWxsb2MoUHlDRnVuY3Rpb25PYmplY3QgKm0pCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0sobSk7CisgICAgaWYgKG0tPm1fd2Vha3JlZmxpc3QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCopIG0pOworICAgIH0KICAgICBQeV9YREVDUkVGKG0tPm1fc2VsZik7CiAgICAgUHlfWERFQ1JFRihtLT5tX21vZHVsZSk7CiAgICAgaWYgKG51bWZyZWUgPCBQeUNGdW5jdGlvbl9NQVhGUkVFTElTVCkgewpAQCAtMzUyLDcgKzM1OSw3IEBACiAgICAgKHRyYXZlcnNlcHJvYyltZXRoX3RyYXZlcnNlLCAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICBtZXRoX3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5Q0Z1bmN0aW9uT2JqZWN0LCBtX3dlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgbWV0aF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCmRpZmYgLS1naXQgYS9PYmplY3RzL21vZHVsZW9iamVjdC5jIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwppbmRleCBmNTA5OTMyLi43YjQxYjBiIDEwMDY0NAotLS0gYS9PYmplY3RzL21vZHVsZW9iamVjdC5jCisrKyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICAgICB7MH0KIH07CiAKLXN0YXRpYyBQeVR5cGVPYmplY3QgbW9kdWxlZGVmX3R5cGUgPSB7CitQeVR5cGVPYmplY3QgUHlNb2R1bGVEZWZfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJtb2R1bGVkZWYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihzdHJ1Y3QgUHlNb2R1bGVEZWYpLCAgICAgICAgICAgICAgICAgLyogdHBfc2l6ZSAqLwpAQCAtMjgsMjQgKzI4LDQ0IEBACiB9OwogCiAKK1B5T2JqZWN0KgorUHlNb2R1bGVEZWZfSW5pdChzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKK3sKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeU1vZHVsZURlZl9UeXBlKSA8IDApCisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZGVmLT5tX2Jhc2UubV9pbmRleCA9PSAwKSB7CisgICAgICAgIG1heF9tb2R1bGVfbnVtYmVyKys7CisgICAgICAgIFB5X1JFRkNOVChkZWYpID0gMTsKKyAgICAgICAgUHlfVFlQRShkZWYpID0gJlB5TW9kdWxlRGVmX1R5cGU7CisgICAgICAgIGRlZi0+bV9iYXNlLm1faW5kZXggPSBtYXhfbW9kdWxlX251bWJlcjsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCopZGVmOworfQorCiBzdGF0aWMgaW50CiBtb2R1bGVfaW5pdF9kaWN0KFB5TW9kdWxlT2JqZWN0ICptb2QsIFB5T2JqZWN0ICptZF9kaWN0LAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmRvYykKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fbG9hZGVyX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKKwogICAgIGlmIChtZF9kaWN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoZG9jID09IE5VTEwpCiAgICAgICAgIGRvYyA9IFB5X05vbmU7CiAKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fbmFtZV9fIiwgbmFtZSkgIT0gMCkKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQobWRfZGljdCwgJlB5SWRfX19uYW1lX18sIG5hbWUpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fZG9jX18iLCBkb2MpICE9IDApCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKG1kX2RpY3QsICZQeUlkX19fZG9jX18sIGRvYykgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19wYWNrYWdlX18iLCBQeV9Ob25lKSAhPSAwKQorICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChtZF9kaWN0LCAmUHlJZF9fX3BhY2thZ2VfXywgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtZF9kaWN0LCAiX19sb2FkZXJfXyIsIFB5X05vbmUpICE9IDApCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKG1kX2RpY3QsICZQeUlkX19fbG9hZGVyX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobWRfZGljdCwgIl9fc3BlY19fIiwgUHlfTm9uZSkgIT0gMCkKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQobWRfZGljdCwgJlB5SWRfX19zcGVjX18sIFB5X05vbmUpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QobmFtZSkpIHsKICAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwpAQCAtOTEsMjYgKzExMSwxMyBAQAogICAgIHJldHVybiBtb2R1bGU7CiB9CiAKLQotUHlPYmplY3QgKgotUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqIG1vZHVsZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKKy8qIENoZWNrIEFQSS9BQkkgdmVyc2lvbgorICogSXNzdWVzIGEgd2FybmluZyBvbiBtaXNtYXRjaCwgd2hpY2ggaXMgdXN1YWxseSBub3QgZmF0YWwuCisgKiBSZXR1cm5zIDAgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAqLworc3RhdGljIGludAorY2hlY2tfYXBpX3ZlcnNpb24oY29uc3QgY2hhciAqbmFtZSwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKIHsKLSAgICBQeU9iamVjdCAqZCwgKnYsICpuOwotICAgIFB5TWV0aG9kRGVmICptbDsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAgIFB5TW9kdWxlT2JqZWN0ICptOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHl0aG9uIGltcG9ydCBtYWNoaW5lcnkgbm90IGluaXRpYWxpemVkIik7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmbW9kdWxlZGVmX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG1vZHVsZS0+bV9iYXNlLm1faW5kZXggPT0gMCkgewotICAgICAgICBtYXhfbW9kdWxlX251bWJlcisrOwotICAgICAgICBQeV9SRUZDTlQobW9kdWxlKSA9IDE7Ci0gICAgICAgIFB5X1RZUEUobW9kdWxlKSA9ICZtb2R1bGVkZWZfdHlwZTsKLSAgICAgICAgbW9kdWxlLT5tX2Jhc2UubV9pbmRleCA9IG1heF9tb2R1bGVfbnVtYmVyOwotICAgIH0KLSAgICBuYW1lID0gbW9kdWxlLT5tX25hbWU7CiAgICAgaWYgKG1vZHVsZV9hcGlfdmVyc2lvbiAhPSBQWVRIT05fQVBJX1ZFUlNJT04gJiYgbW9kdWxlX2FwaV92ZXJzaW9uICE9IFBZVEhPTl9BQklfVkVSU0lPTikgewogICAgICAgICBpbnQgZXJyOwogICAgICAgICBlcnIgPSBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1J1bnRpbWVXYXJuaW5nLCAxLApAQCAtMTE5LDcgKzEyNiwzMCBAQAogICAgICAgICAgICAgIG5hbWUsCiAgICAgICAgICAgICAgUFlUSE9OX0FQSV9WRVJTSU9OLCBuYW1lLCBtb2R1bGVfYXBpX3ZlcnNpb24pOwogICAgICAgICBpZiAoZXJyKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK1B5T2JqZWN0ICoKK1B5TW9kdWxlX0NyZWF0ZTIoc3RydWN0IFB5TW9kdWxlRGVmKiBtb2R1bGUsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCit7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBQeU1vZHVsZU9iamVjdCAqbTsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKKyAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5dGhvbiBpbXBvcnQgbWFjaGluZXJ5IG5vdCBpbml0aWFsaXplZCIpOworICAgIGlmICghUHlNb2R1bGVEZWZfSW5pdChtb2R1bGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBuYW1lID0gbW9kdWxlLT5tX25hbWU7CisgICAgaWYgKCFjaGVja19hcGlfdmVyc2lvbihuYW1lLCBtb2R1bGVfYXBpX3ZlcnNpb24pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobW9kdWxlLT5tX3Nsb3RzKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIm1vZHVsZSAlczogUHlNb2R1bGVfQ3JlYXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIG1fc2xvdHMiLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIE1ha2Ugc3VyZSBuYW1lIGlzIGZ1bGx5IHF1YWxpZmllZC4KIApAQCAtMTUwLDUyICsxODAsMjYxIEBACiAgICAgICAgIG1lbXNldChtLT5tZF9zdGF0ZSwgMCwgbW9kdWxlLT5tX3NpemUpOwogICAgIH0KIAotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KChQeU9iamVjdCopbSk7CiAgICAgaWYgKG1vZHVsZS0+bV9tZXRob2RzICE9IE5VTEwpIHsKLSAgICAgICAgbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgICAgICBpZiAobiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeU1vZHVsZV9BZGRGdW5jdGlvbnMoKFB5T2JqZWN0ICopIG0sIG1vZHVsZS0+bV9tZXRob2RzKSAhPSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBmb3IgKG1sID0gbW9kdWxlLT5tX21ldGhvZHM7IG1sLT5tbF9uYW1lICE9IE5VTEw7IG1sKyspIHsKLSAgICAgICAgICAgIGlmICgobWwtPm1sX2ZsYWdzICYgTUVUSF9DTEFTUykgfHwKLSAgICAgICAgICAgICAgICAobWwtPm1sX2ZsYWdzICYgTUVUSF9TVEFUSUMpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgZnVuY3Rpb25zIGNhbm5vdCBzZXQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgTUVUSF9DTEFTUyBvciBNRVRIX1NUQVRJQyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2ID0gUHlDRnVuY3Rpb25fTmV3RXgobWwsIChQeU9iamVjdCopbSwgbik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG4pOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBtbC0+bWxfbmFtZSwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihuKTsKICAgICB9CiAgICAgaWYgKG1vZHVsZS0+bV9kb2MgIT0gTlVMTCkgewotICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kdWxlLT5tX2RvYyk7Ci0gICAgICAgIGlmICh2ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZG9jX18iLCB2KSAhPSAwKSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHYpOworICAgICAgICBpZiAoUHlNb2R1bGVfU2V0RG9jU3RyaW5nKChQeU9iamVjdCAqKSBtLCBtb2R1bGUtPm1fZG9jKSAhPSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQogICAgIG0tPm1kX2RlZiA9IG1vZHVsZTsKICAgICByZXR1cm4gKFB5T2JqZWN0KiltOwogfQogCitQeU9iamVjdCAqCitQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIoc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYsIFB5T2JqZWN0ICpzcGVjLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQoreworICAgIFB5TW9kdWxlRGVmX1Nsb3QqIGN1cl9zbG90OworICAgIFB5T2JqZWN0ICooKmNyZWF0ZSkoUHlPYmplY3QgKiwgUHlNb2R1bGVEZWYqKSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworICAgIGludCBoYXNfZXhlY3V0aW9uX3Nsb3RzID0gMDsKKyAgICBjaGFyICpuYW1lOworICAgIGludCByZXQ7CisKKyAgICBQeU1vZHVsZURlZl9Jbml0KGRlZik7CisKKyAgICBuYW1lb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAibmFtZSIpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWVvYmopOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIWNoZWNrX2FwaV92ZXJzaW9uKG5hbWUsIG1vZHVsZV9hcGlfdmVyc2lvbikpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZGVmLT5tX3NpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIm1vZHVsZSAlczogbV9zaXplIG1heSBub3QgYmUgbmVnYXRpdmUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIiwKKyAgICAgICAgICAgIG5hbWUpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZvciAoY3VyX3Nsb3QgPSBkZWYtPm1fc2xvdHM7IGN1cl9zbG90ICYmIGN1cl9zbG90LT5zbG90OyBjdXJfc2xvdCsrKSB7CisgICAgICAgIGlmIChjdXJfc2xvdC0+c2xvdCA9PSBQeV9tb2RfY3JlYXRlKSB7CisgICAgICAgICAgICBpZiAoY3JlYXRlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSAlcyBoYXMgbXVsdGlwbGUgY3JlYXRlIHNsb3RzIiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNyZWF0ZSA9IGN1cl9zbG90LT52YWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJfc2xvdC0+c2xvdCA8IDAgfHwgY3VyX3Nsb3QtPnNsb3QgPiBfUHlfbW9kX0xBU1RfU0xPVCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJtb2R1bGUgJXMgdXNlcyB1bmtub3duIHNsb3QgSUQgJWkiLAorICAgICAgICAgICAgICAgIG5hbWUsIGN1cl9zbG90LT5zbG90KTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBoYXNfZXhlY3V0aW9uX3Nsb3RzID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjcmVhdGUpIHsKKyAgICAgICAgbSA9IGNyZWF0ZShzcGVjLCBkZWYpOworICAgICAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiY3JlYXRpb24gb2YgbW9kdWxlICVzIGZhaWxlZCB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNyZWF0aW9uIG9mIG1vZHVsZSAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBtID0gUHlNb2R1bGVfTmV3KG5hbWUpOworICAgICAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFB5TW9kdWxlX0NoZWNrKG0pKSB7CisgICAgICAgICgoUHlNb2R1bGVPYmplY3QqKW0pLT5tZF9zdGF0ZSA9IE5VTEw7CisgICAgICAgICgoUHlNb2R1bGVPYmplY3QqKW0pLT5tZF9kZWYgPSBkZWY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGRlZi0+bV9zaXplID4gMCB8fCBkZWYtPm1fdHJhdmVyc2UgfHwgZGVmLT5tX2NsZWFyIHx8IGRlZi0+bV9mcmVlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgIm1vZHVsZSAlcyBpcyBub3QgYSBtb2R1bGUgb2JqZWN0LCBidXQgcmVxdWVzdHMgbW9kdWxlIHN0YXRlIiwKKyAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc19leGVjdXRpb25fc2xvdHMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAibW9kdWxlICVzIHNwZWNpZmllcyBleGVjdXRpb24gc2xvdHMsIGJ1dCBkaWQgbm90IGNyZWF0ZSAiCisgICAgICAgICAgICAgICAgICAgICJhIE1vZHVsZVR5cGUgaW5zdGFuY2UiLAorICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWYtPm1fbWV0aG9kcyAhPSBOVUxMKSB7CisgICAgICAgIHJldCA9IFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhtLCBkZWYtPm1fbWV0aG9kcyk7CisgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWYtPm1fZG9jICE9IE5VTEwpIHsKKyAgICAgICAgcmV0ID0gUHlNb2R1bGVfU2V0RG9jU3RyaW5nKG0sIGRlZi0+bV9kb2MpOworICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG07CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICBQeV9YREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOworfQorCitpbnQKK1B5TW9kdWxlX0V4ZWNEZWYoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICBQeU1vZHVsZURlZl9TbG90ICpjdXJfc2xvdDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIGludCByZXQ7CisKKyAgICBuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShtb2R1bGUpOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChQeU1vZHVsZV9DaGVjayhtb2R1bGUpICYmIGRlZi0+bV9zaXplID49IDApIHsKKyAgICAgICAgUHlNb2R1bGVPYmplY3QgKm1kID0gKFB5TW9kdWxlT2JqZWN0Kiltb2R1bGU7CisgICAgICAgIGlmIChtZC0+bWRfc3RhdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogQWx3YXlzIHNldCBhIHN0YXRlIHBvaW50ZXI7IHRoaXMgc2VydmVzIGFzIGEgbWFya2VyIHRvIHNraXAKKyAgICAgICAgICAgICAqIG11bHRpcGxlIGluaXRpYWxpemF0aW9uIChpbXBvcnRsaWIucmVsb2FkKCkgaXMgbm8tb3ApICovCisgICAgICAgICAgICBtZC0+bWRfc3RhdGUgPSBQeU1lbV9NQUxMT0MoZGVmLT5tX3NpemUpOworICAgICAgICAgICAgaWYgKCFtZC0+bWRfc3RhdGUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbXNldChtZC0+bWRfc3RhdGUsIDAsIGRlZi0+bV9zaXplKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZWYtPm1fc2xvdHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmb3IgKGN1cl9zbG90ID0gZGVmLT5tX3Nsb3RzOyBjdXJfc2xvdCAmJiBjdXJfc2xvdC0+c2xvdDsgY3VyX3Nsb3QrKykgeworICAgICAgICBzd2l0Y2ggKGN1cl9zbG90LT5zbG90KSB7CisgICAgICAgICAgICBjYXNlIFB5X21vZF9jcmVhdGU6CisgICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9DcmVhdGVGcm9tU2xvdHMgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUHlfbW9kX2V4ZWM6CisgICAgICAgICAgICAgICAgcmV0ID0gKChpbnQgKCopKFB5T2JqZWN0ICopKWN1cl9zbG90LT52YWx1ZSkobW9kdWxlKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN1dGlvbiBvZiBtb2R1bGUgJXMgZmFpbGVkIHdpdGhvdXQgc2V0dGluZyBhbiBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3V0aW9uIG9mIG1vZHVsZSAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgJXMgaW5pdGlhbGl6ZWQgd2l0aCB1bmtub3duIHNsb3QgJWkiLAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBjdXJfc2xvdC0+c2xvdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK1B5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqbSwgUHlNZXRob2REZWYgKmZ1bmN0aW9ucykKK3sKKyAgICBQeU9iamVjdCAqbmFtZSwgKmZ1bmM7CisgICAgUHlNZXRob2REZWYgKmZkZWY7CisKKyAgICBuYW1lID0gUHlNb2R1bGVfR2V0TmFtZU9iamVjdChtKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGZkZWYgPSBmdW5jdGlvbnM7IGZkZWYtPm1sX25hbWUgIT0gTlVMTDsgZmRlZisrKSB7CisgICAgICAgIGlmICgoZmRlZi0+bWxfZmxhZ3MgJiBNRVRIX0NMQVNTKSB8fAorICAgICAgICAgICAgKGZkZWYtPm1sX2ZsYWdzICYgTUVUSF9TVEFUSUMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIGZ1bmN0aW9ucyBjYW5ub3Qgc2V0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgTUVUSF9DTEFTUyBvciBNRVRIX1NUQVRJQyIpOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChmZGVmLCAoUHlPYmplY3QqKW0sIG5hbWUpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgZmRlZi0+bWxfbmFtZSwgZnVuYykgIT0gMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICB9CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIHJldHVybiAwOworfQorCitpbnQKK1B5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqZG9jKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIF9QeV9JREVOVElGSUVSKF9fZG9jX18pOworCisgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGRvYyk7CisgICAgaWYgKHYgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKG0sICZQeUlkX19fZG9jX18sIHYpICE9IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYodik7CisgICAgcmV0dXJuIDA7Cit9CiAKIFB5T2JqZWN0ICoKIFB5TW9kdWxlX0dldERpY3QoUHlPYmplY3QgKm0pCkBAIC0yMTQsNiArNDUzLDcgQEAKIFB5T2JqZWN0KgogUHlNb2R1bGVfR2V0TmFtZU9iamVjdChQeU9iamVjdCAqbSkKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewpAQCAtMjIyLDcgKzQ2Miw3IEBACiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSktPm1kX2RpY3Q7CiAgICAgaWYgKGQgPT0gTlVMTCB8fAotICAgICAgICAobmFtZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX25hbWVfXyIpKSA9PSBOVUxMIHx8CisgICAgICAgIChuYW1lID0gX1B5RGljdF9HZXRJdGVtSWQoZCwgJlB5SWRfX19uYW1lX18pKSA9PSBOVUxMIHx8CiAgICAgICAgICFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpCiAgICAgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJuYW1lbGVzcyBtb2R1bGUiKTsKQEAgLTI0NSw2ICs0ODUsNyBAQAogUHlPYmplY3QqCiBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqbSkKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX2ZpbGVfXyk7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgUHlPYmplY3QgKmZpbGVvYmo7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewpAQCAtMjUzLDcgKzQ5NCw3IEBACiAgICAgfQogICAgIGQgPSAoKFB5TW9kdWxlT2JqZWN0ICopbSktPm1kX2RpY3Q7CiAgICAgaWYgKGQgPT0gTlVMTCB8fAotICAgICAgICAoZmlsZW9iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2ZpbGVfXyIpKSA9PSBOVUxMIHx8CisgICAgICAgIChmaWxlb2JqID0gX1B5RGljdF9HZXRJdGVtSWQoZCwgJlB5SWRfX19maWxlX18pKSA9PSBOVUxMIHx8CiAgICAgICAgICFQeVVuaWNvZGVfQ2hlY2soZmlsZW9iaikpCiAgICAgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJtb2R1bGUgZmlsZW5hbWUgbWlzc2luZyIpOwpAQCAtNDExLDYgKzY1MiwzMSBAQAogICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKGludGVycC0+aW1wb3J0bGliLCAiX21vZHVsZV9yZXByIiwgIk8iLCBtKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorbW9kdWxlX2dldGF0dHJvKFB5TW9kdWxlT2JqZWN0ICptLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqYXR0ciwgKm1vZF9uYW1lOworICAgIGF0dHIgPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigoUHlPYmplY3QgKiltLCBuYW1lKTsKKyAgICBpZiAoYXR0ciB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIHJldHVybiBhdHRyOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKG0tPm1kX2RpY3QpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgICAgICBtb2RfbmFtZSA9IF9QeURpY3RfR2V0SXRlbUlkKG0tPm1kX2RpY3QsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKG1vZF9uYW1lKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlICclVScgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwgbW9kX25hbWUsIG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1vZHVsZSBoYXMgbm8gYXR0cmlidXRlICclVSciLCBuYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIGludAogbW9kdWxlX3RyYXZlcnNlKFB5TW9kdWxlT2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTQ2NCw3ICs3MzAsNiBAQAogICAgIHswfQogfTsKIAotCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJtb2R1bGUobmFtZVssIGRvY10pXG5cCiBcblwKQEAgLTQ4OCw3ICs3NTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChnZXRhdHRyb2Z1bmMpbW9kdWxlX2dldGF0dHJvLCAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggYTFhNjlmYS4uMTFiN2JmZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0zMyw2ICszMywyMiBAQAogICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CiAgICAgcmV0dXJuIHRvdGFsOwogfQorCit2b2lkCitfUHlEZWJ1Z19QcmludFRvdGFsUmVmcyh2b2lkKSB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd3JlZmNvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dyZWZjb3VudCk7CisgICAgaWYgKHZhbHVlID09IFB5X1RydWUpCisgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICJbJSIgUFlfRk9STUFUX1NJWkVfVCAiZCByZWZzLCAiCisgICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgYmxvY2tzXVxuIiwKKyAgICAgICAgICAgICAgICBfUHlfR2V0UmVmVG90YWwoKSwgX1B5X0dldEFsbG9jYXRlZEJsb2NrcygpKTsKK30KICNlbmRpZiAvKiBQeV9SRUZfREVCVUcgKi8KIAogLyogT2JqZWN0IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBORVdPQkogYW5kIE5FV1ZBUk9CSiBtYWNyb3MuCkBAIC0xNTQzLDYgKzE1NTksOSBAQAogdm9pZAogX1B5X1JlYWR5VHlwZXModm9pZCkKIHsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJhc2VPYmplY3RfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG9iamVjdCB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVR5cGVfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHR5cGUgdHlwZSIpOwogCkBAIC0xNTU1LDYgKzE1NzQsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeVdlYWtyZWZfUHJveHlUeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgd2Vha3JlZiBwcm94eSB0eXBlIik7CiAKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUxvbmdfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGludCB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJvb2xfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGJvb2wgdHlwZSIpOwogCkBAIC0xNTc5LDE1ICsxNjAxLDI3IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTdXBlcl9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc3VwZXIgdHlwZSIpOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlCYXNlT2JqZWN0X1R5cGUpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvYmplY3QgdHlwZSIpOwotCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlSYW5nZV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgcmFuZ2UgdHlwZSIpOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlEaWN0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBkaWN0IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIE9yZGVyZWREaWN0IHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RLZXlzX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9rZXlzIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RJdGVtc19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2RpY3RfaXRlbXMgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdFZhbHVlc19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2RpY3RfdmFsdWVzIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RJdGVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9rZXlpdGVyYXRvciB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNldF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc2V0IHR5cGUiKTsKIApAQCAtMTYwNiw5ICsxNjQwLDYgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZsb2F0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmbG9hdCB0eXBlIik7CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUxvbmdfVHlwZSkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGludCB0eXBlIik7Ci0KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZyb3plblNldF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgZnJvemVuc2V0IHR5cGUiKTsKIApAQCAtMTY5NSw2ICsxNzI2LDEyIEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNlcUl0ZXJfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHNlcXVlbmNlIGl0ZXJhdG9yIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Q29yb19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgY29yb3V0aW5lIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeUNvcm9XcmFwcGVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBjb3JvdXRpbmUgd3JhcHBlciB0eXBlIik7CiB9CiAKIApAQCAtMTgwOSw5ICsxODQ2LDYgQEAKIAogI2VuZGlmCiAKLS8qIEhhY2sgdG8gZm9yY2UgbG9hZGluZyBvZiBweWNhcHN1bGUubyAqLwotUHlUeXBlT2JqZWN0ICpfUHlDYXBzdWxlX2hhY2sgPSAmUHlDYXBzdWxlX1R5cGU7Ci0KIAogLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIGFic3RyYWN0Lm8gKi8KIFB5X3NzaXplX3QgKCpfUHlfYWJzdHJhY3RfaGFjaykoUHlPYmplY3QgKikgPSBQeU9iamVjdF9TaXplOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDNjMzMyNTUuLjdjYzg4OWYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTUsNiArNSw3IEBACiAjaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogCkBAIC00Myw2ICs0NCw3IEBACiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkKiBfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU9iamVjdF9DYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogc3RhdGljIHZvaWQgX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkKiBfUHlPYmplY3RfUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogI2VuZGlmCkBAIC01MSw3ICs1Myw3IEBACiBzdGF0aWMgdm9pZCAqCiBfUHlNZW1fUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgLyogUHlNZW1fTWFsbG9jKDApIG1lYW5zIG1hbGxvYygxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCisgICAgLyogUHlNZW1fUmF3TWFsbG9jKDApIG1lYW5zIG1hbGxvYygxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCiAgICAgICAgZm9yIG1hbGxvYygwKSwgd2hpY2ggd291bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4gU29tZSBwbGF0Zm9ybXMgd291bGQKICAgICAgICByZXR1cm4gYSBwb2ludGVyIHdpdGggbm8gbWVtb3J5IGJlaGluZCBpdCwgd2hpY2ggd291bGQgYnJlYWsgcHltYWxsb2MuCiAgICAgICAgVG8gc29sdmUgdGhlc2UgcHJvYmxlbXMsIGFsbG9jYXRlIGFuIGV4dHJhIGJ5dGUuICovCkBAIC02MSw2ICs2MywyMCBAQAogfQogCiBzdGF0aWMgdm9pZCAqCitfUHlNZW1fUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIC8qIFB5TWVtX1Jhd0NhbGxvYygwLCAwKSBtZWFucyBjYWxsb2MoMSwgMSkuIFNvbWUgc3lzdGVtcyB3b3VsZCByZXR1cm4gTlVMTAorICAgICAgIGZvciBjYWxsb2MoMCwgMCksIHdoaWNoIHdvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIFNvbWUgcGxhdGZvcm1zCisgICAgICAgd291bGQgcmV0dXJuIGEgcG9pbnRlciB3aXRoIG5vIG1lbW9yeSBiZWhpbmQgaXQsIHdoaWNoIHdvdWxkIGJyZWFrCisgICAgICAgcHltYWxsb2MuICBUbyBzb2x2ZSB0aGVzZSBwcm9ibGVtcywgYWxsb2NhdGUgYW4gZXh0cmEgYnl0ZS4gKi8KKyAgICBpZiAobmVsZW0gPT0gMCB8fCBlbHNpemUgPT0gMCkgeworICAgICAgICBuZWxlbSA9IDE7CisgICAgICAgIGVsc2l6ZSA9IDE7CisgICAgfQorICAgIHJldHVybiBjYWxsb2MobmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkICoKIF9QeU1lbV9SYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZSA9PSAwKQpAQCAtMTIzLDkgKzEzOSw5IEBACiAjZW5kaWYKIAogCi0jZGVmaW5lIFBZUkFXX0ZVTkNTIF9QeU1lbV9SYXdNYWxsb2MsIF9QeU1lbV9SYXdSZWFsbG9jLCBfUHlNZW1fUmF3RnJlZQorI2RlZmluZSBQWVJBV19GVU5DUyBfUHlNZW1fUmF3TWFsbG9jLCBfUHlNZW1fUmF3Q2FsbG9jLCBfUHlNZW1fUmF3UmVhbGxvYywgX1B5TWVtX1Jhd0ZyZWUKICNpZmRlZiBXSVRIX1BZTUFMTE9DCi0jICBkZWZpbmUgUFlPQkpfRlVOQ1MgX1B5T2JqZWN0X01hbGxvYywgX1B5T2JqZWN0X1JlYWxsb2MsIF9QeU9iamVjdF9GcmVlCisjICBkZWZpbmUgUFlPQkpfRlVOQ1MgX1B5T2JqZWN0X01hbGxvYywgX1B5T2JqZWN0X0NhbGxvYywgX1B5T2JqZWN0X1JlYWxsb2MsIF9QeU9iamVjdF9GcmVlCiAjZWxzZQogIyAgZGVmaW5lIFBZT0JKX0ZVTkNTIFBZUkFXX0ZVTkNTCiAjZW5kaWYKQEAgLTEzNSw3ICsxNTEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIFdlIHRhZyBlYWNoIGJsb2NrIHdpdGggYW4gQVBJIElEIGluIG9yZGVyIHRvIHRhZyBBUEkgdmlvbGF0aW9ucyAqLwogICAgIGNoYXIgYXBpX2lkOwotICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiB9IGRlYnVnX2FsbG9jX2FwaV90Owogc3RhdGljIHN0cnVjdCB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgcmF3OwpAQCAtMTQ3LDEwICsxNjMsMTAgQEAKICAgICB7J28nLCB7TlVMTCwgUFlPQkpfRlVOQ1N9fQogICAgIH07CiAKLSNkZWZpbmUgUFlEQkdfRlVOQ1MgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCisjZGVmaW5lIFBZREJHX0ZVTkNTIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCiAjZW5kaWYKIAotc3RhdGljIFB5TWVtQWxsb2NhdG9yIF9QeU1lbV9SYXcgPSB7CitzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW1fUmF3ID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTU4LDcgKzE3NCw3IEBACiAjZW5kaWYKICAgICB9OwogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5TWVtID0geworc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTY2LDcgKzE4Miw3IEBACiAjZW5kaWYKICAgICB9OwogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5T2JqZWN0ID0geworc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5T2JqZWN0ID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5vYmosIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTkzLDkgKzIwOSwxMCBAQAogUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpCiB7CiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCiAgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z0NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnRnJlZTsKIApAQCAtMjIwLDcgKzIzNyw3IEBACiB9CiAKIHZvaWQKLVB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCitQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiB7CiAgICAgc3dpdGNoKGRvbWFpbikKICAgICB7CkBAIC0yMjgsMTYgKzI0NSwxNyBAQAogICAgIGNhc2UgUFlNRU1fRE9NQUlOX01FTTogKmFsbG9jYXRvciA9IF9QeU1lbTsgYnJlYWs7CiAgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiAqYWxsb2NhdG9yID0gX1B5T2JqZWN0OyBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duIGRvbWFpbiAqLworICAgICAgICAvKiB1bmtub3duIGRvbWFpbjogc2V0IGFsbCBhdHRyaWJ1dGVzIHRvIE5VTEwgKi8KICAgICAgICAgYWxsb2NhdG9yLT5jdHggPSBOVUxMOwogICAgICAgICBhbGxvY2F0b3ItPm1hbGxvYyA9IE5VTEw7CisgICAgICAgIGFsbG9jYXRvci0+Y2FsbG9jID0gTlVMTDsKICAgICAgICAgYWxsb2NhdG9yLT5yZWFsbG9jID0gTlVMTDsKICAgICAgICAgYWxsb2NhdG9yLT5mcmVlID0gTlVMTDsKICAgICB9CiB9CiAKIHZvaWQKLVB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCitQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiB7CiAgICAgc3dpdGNoKGRvbWFpbikKICAgICB7CkBAIC0yNzIsMTAgKzI5MCwxOCBAQAogICAgICAqLwogICAgIGlmIChzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5TWVtX1Jhdy5tYWxsb2MoX1B5TWVtX1Jhdy5jdHgsIHNpemUpOwogfQogCit2b2lkICoKK1B5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKGVsc2l6ZSAhPSAwICYmIG5lbGVtID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU1lbV9SYXcuY2FsbG9jKF9QeU1lbV9SYXcuY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwogdm9pZCoKIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC0zMDAsNiArMzI2LDE1IEBACiB9CiAKIHZvaWQgKgorUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KKyAgICBpZiAoZWxzaXplICE9IDAgJiYgbmVsZW0gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TWVtLmNhbGxvYyhfUHlNZW0uY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwordm9pZCAqCiBQeU1lbV9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLwpAQCAtMzUyLDYgKzM4NywxNSBAQAogfQogCiB2b2lkICoKK1B5T2JqZWN0X0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKGVsc2l6ZSAhPSAwICYmIG5lbGVtID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU9iamVjdC5jYWxsb2MoX1B5T2JqZWN0LmN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3ZvaWQgKgogUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KQEAgLTExMjIsOCArMTE2Niw5IEBACiAgKi8KIAogc3RhdGljIHZvaWQgKgotX1B5T2JqZWN0X01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlPYmplY3RfQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogeworICAgIHNpemVfdCBuYnl0ZXM7CiAgICAgYmxvY2sgKmJwOwogICAgIHBvb2xwIHBvb2w7CiAgICAgcG9vbHAgbmV4dDsKQEAgLTExMzEsNiArMTE3Niw5IEBACiAKICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzKys7CiAKKyAgICBhc3NlcnQobmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOworICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOworCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIGlmIChVTkxJS0VMWShydW5uaW5nX29uX3ZhbGdyaW5kID09IC0xKSkKICAgICAgICAgcnVubmluZ19vbl92YWxncmluZCA9IFJVTk5JTkdfT05fVkFMR1JJTkQ7CkBAIC0xMTM4LDkgKzExODYsOSBAQAogICAgICAgICBnb3RvIHJlZGlyZWN0OwogI2VuZGlmCiAKLSAgICAvKgotICAgICAqIFRoaXMgaW1wbGljaXRseSByZWRpcmVjdHMgbWFsbG9jKDApLgotICAgICAqLworICAgIGlmIChuZWxlbSA9PSAwIHx8IGVsc2l6ZSA9PSAwKQorICAgICAgICBnb3RvIHJlZGlyZWN0OworCiAgICAgaWYgKChuYnl0ZXMgLSAxKSA8IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEKSB7CiAgICAgICAgIExPQ0soKTsKICAgICAgICAgLyoKQEAgLTExNTgsNiArMTIwNiw4IEBACiAgICAgICAgICAgICBhc3NlcnQoYnAgIT0gTlVMTCk7CiAgICAgICAgICAgICBpZiAoKHBvb2wtPmZyZWVibG9jayA9ICooYmxvY2sgKiopYnApICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBVTkxPQ0soKTsKKyAgICAgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGJwLCAwLCBuYnl0ZXMpOwogICAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKWJwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyoKQEAgLTExNzAsNiArMTIyMCw4IEBACiAgICAgICAgICAgICAgICAgcG9vbC0+bmV4dG9mZnNldCArPSBJTkRFWDJTSVpFKHNpemUpOwogICAgICAgICAgICAgICAgICooYmxvY2sgKiopKHBvb2wtPmZyZWVibG9jaykgPSBOVUxMOwogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBQb29sIGlzIGZ1bGwsIHVubGluayBmcm9tIHVzZWQgcG9vbHMuICovCkBAIC0xMTc4LDYgKzEyMzAsOCBAQAogICAgICAgICAgICAgbmV4dC0+cHJldnBvb2wgPSBwb29sOwogICAgICAgICAgICAgcG9vbC0+bmV4dHBvb2wgPSBuZXh0OwogICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgfQogCkBAIC0xMjU3LDYgKzEzMTEsOCBAQAogICAgICAgICAgICAgICAgIGFzc2VydChicCAhPSBOVUxMKTsKICAgICAgICAgICAgICAgICBwb29sLT5mcmVlYmxvY2sgPSAqKGJsb2NrICoqKWJwOwogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKgpAQCAtMTI3Miw2ICsxMzI4LDggQEAKICAgICAgICAgICAgIHBvb2wtPmZyZWVibG9jayA9IGJwICsgc2l6ZTsKICAgICAgICAgICAgICooYmxvY2sgKiopKHBvb2wtPmZyZWVibG9jaykgPSBOVUxMOwogICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgfQogCkBAIC0xMjgxLDcgKzEzMzksNyBAQAogICAgICAgICBwb29sID0gKHBvb2xwKXVzYWJsZV9hcmVuYXMtPnBvb2xfYWRkcmVzczsKICAgICAgICAgYXNzZXJ0KChibG9jayopcG9vbCA8PSAoYmxvY2sqKXVzYWJsZV9hcmVuYXMtPmFkZHJlc3MgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSRU5BX1NJWkUgLSBQT09MX1NJWkUpOwotICAgICAgICBwb29sLT5hcmVuYWluZGV4ID0gdXNhYmxlX2FyZW5hcyAtIGFyZW5hczsKKyAgICAgICAgcG9vbC0+YXJlbmFpbmRleCA9ICh1aW50KSh1c2FibGVfYXJlbmFzIC0gYXJlbmFzKTsKICAgICAgICAgYXNzZXJ0KCZhcmVuYXNbcG9vbC0+YXJlbmFpbmRleF0gPT0gdXNhYmxlX2FyZW5hcyk7CiAgICAgICAgIHBvb2wtPnN6aWR4ID0gRFVNTVlfU0laRV9JRFg7CiAgICAgICAgIHVzYWJsZV9hcmVuYXMtPnBvb2xfYWRkcmVzcyArPSBQT09MX1NJWkU7CkBAIC0xMzExLDEzICsxMzY5LDI5IEBACiAgICAgICogaGFzIGJlZW4gcmVhY2hlZC4KICAgICAgKi8KICAgICB7Ci0gICAgICAgIHZvaWQgKnJlc3VsdCA9IFB5TWVtX1Jhd01hbGxvYyhuYnl0ZXMpOworICAgICAgICB2b2lkICpyZXN1bHQ7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmVzdWx0ID0gUHlNZW1fUmF3Q2FsbG9jKG5lbGVtLCBlbHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBQeU1lbV9SYXdNYWxsb2MobmJ5dGVzKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzLS07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCitzdGF0aWMgdm9pZCAqCitfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDAsIGN0eCwgMSwgbmJ5dGVzKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5T2JqZWN0X0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKIC8qIGZyZWUgKi8KIAogQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCkBAIC0xNTYxLDcgKzE2MzUsNyBAQAogI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gX1B5T2JqZWN0X01hbGxvYyhjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwogCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIC8qIFRyZWF0IHJ1bm5pbmdfb25fdmFsZ3JpbmQgPT0gLTEgdGhlIHNhbWUgYXMgMCAqLwpAQCAtMTU4OSw3ICsxNjYzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXM7CiAgICAgICAgIH0KLSAgICAgICAgYnAgPSBfUHlPYmplY3RfTWFsbG9jKGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgYnAgPSBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwogICAgICAgICBpZiAoYnAgIT0gTlVMTCkgewogICAgICAgICAgICAgbWVtY3B5KGJwLCBwLCBzaXplKTsKICAgICAgICAgICAgIF9QeU9iamVjdF9GcmVlKGN0eCwgcCk7CkBAIC0xNzQ1LDcgKzE4MTksNyBAQAogKi8KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKICAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KQEAgLTE3NTgsNyArMTgzMiwxMCBAQAogICAgICAgICAvKiBvdmVyZmxvdzogIGNhbid0IHJlcHJlc2VudCB0b3RhbCBhcyBhIFB5X3NzaXplX3QgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKKyAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CisgICAgZWxzZQorICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc2Nyw3ICsxODQ0LDcgQEAKICAgICBwW1NTVF0gPSAodWNoYXIpYXBpLT5hcGlfaWQ7CiAgICAgbWVtc2V0KHAgKyBTU1QgKyAxLCBGT1JCSURERU5CWVRFLCBTU1QtMSk7CiAKLSAgICBpZiAobmJ5dGVzID4gMCkKKyAgICBpZiAobmJ5dGVzID4gMCAmJiAhdXNlX2NhbGxvYykKICAgICAgICAgbWVtc2V0KHAgKyAyKlNTVCwgQ0xFQU5CWVRFLCBuYnl0ZXMpOwogCiAgICAgLyogYXQgdGFpbCwgd3JpdGUgcGFkIChTU1QgYnl0ZXMpIGFuZCBzZXJpYWxubyAoU1NUIGJ5dGVzKSAqLwpAQCAtMTc3OCw2ICsxODU1LDIxIEBACiAgICAgcmV0dXJuIHAgKyAyKlNTVDsKIH0KIAorc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgc2l6ZV90IG5ieXRlczsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOworICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOworICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygxLCBjdHgsIG5ieXRlcyk7Cit9CisKIC8qIFRoZSBkZWJ1ZyBmcmVlIGZpcnN0IGNoZWNrcyB0aGUgMipTU1QgYnl0ZXMgb24gZWFjaCBlbmQgZm9yIHNhbml0eSAoaW4KICAgIHBhcnRpY3VsYXIsIHRoYXQgdGhlIEZPUkJJRERFTkJZVEVzIHdpdGggdGhlIGFwaSBJRCBhcmUgc3RpbGwgaW50YWN0KS4KICAgIFRoZW4gZmlsbHMgdGhlIG9yaWdpbmFsIGJ5dGVzIHdpdGggREVBREJZVEUuCkBAIC0xODExLDcgKzE5MDMsNyBAQAogICAgIGludCBpOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z01hbGxvYyhjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiAKICAgICBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoYXBpLT5hcGlfaWQsIHApOwogICAgIGJ1bXBzZXJpYWxubygpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vZGljdG9iamVjdC5jIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZjQxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKQEAgLTAsMCArMSwyNDkzIEBACisvKiBPcmRlcmVkIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uLgorCitUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5lY2Vzc2FyaWx5IGV4cGxpY2l0bHkgZXF1aXZhbGVudCB0byB0aGUgcHVyZSBQeXRob24KK09yZGVyZWREaWN0IGNsYXNzIGluIExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weS4gIFRoZSBzdHJhdGVneSB0aGVyZQoraW52b2x2ZXMgdXNpbmcgYSBkb3VibHktbGlua2VkLWxpc3QgdG8gY2FwdHVyZSB0aGUgb3JkZXIuICBXZSBrZWVwIHRvIHRoYXQKK3N0cmF0ZWd5LCB1c2luZyBhIGxvd2VyLWxldmVsIGxpbmtlZC1saXN0LgorCitBYm91dCB0aGUgTGlua2VkLUxpc3QKKz09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdGhlIGxpbmtlZCBsaXN0IHdlIHVzZSBhIGJhc2ljIGRvdWJseS1saW5rZWQtbGlzdC4gIFVzaW5nIGEgY2lyY3VsYXJseS0KK2xpbmtlZC1saXN0IGRvZXMgaGF2ZSBzb21lIGJlbmVmaXRzLCBidXQgdGhleSBkb24ndCBhcHBseSBzbyBtdWNoIGhlcmUKK3NpbmNlIE9yZGVyZWREaWN0IGlzIGZvY3VzZWQgb24gdGhlIGVuZHMgb2YgdGhlIGxpc3QgKGZvciB0aGUgbW9zdCBwYXJ0KS4KK0Z1cnRoZXJtb3JlLCB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyBvZiBnZW5lcmljIGxpbmtlZC1saXN0cyB0aGF0IHdlIHNpbXBseQorZG9uJ3QgbmVlZCBmb3IgT3JkZXJlZERpY3QuICBUaHVzIGEgc2ltcGxlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBtZWV0cyBvdXIKK25lZWRzLiAgQWx0ZXJuYXRpdmVzIHRvIG91ciBzaW1wbGUgYXBwcm9hY2ggaW5jbHVkZSB0aGUgUUNJUkNMRV8qCittYWNyb3MgZnJvbSBCU0QncyBxdWV1ZS5oLCBhbmQgdGhlIGxpbnV4J3MgbGlzdC5oLgorCitHZXR0aW5nIE8oMSkgTm9kZSBMb29rdXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgaW52YXJpYW50IG9mIFB5dGhvbidzIE9yZGVyZWREaWN0IGlzIHRoYXQgaXQgcHJlc2VydmVzIHRpbWUgY29tcGxleGl0eQorb2YgZGljdCdzIG1ldGhvZHMsIHBhcnRpY3VsYXJseSB0aGUgTygxKSBvcGVyYXRpb25zLiAgU2ltcGx5IGFkZGluZyBhCitsaW5rZWQtbGlzdCBvbiB0b3Agb2YgZGljdCBpcyBub3Qgc3VmZmljaWVudCBoZXJlOyBvcGVyYXRpb25zIGZvciBub2RlcyBpbgordGhlIG1pZGRsZSBvZiB0aGUgbGlua2VkLWxpc3QgaW1wbGljaXRseSByZXF1aXJlIGZpbmRpbmcgdGhlIG5vZGUgZmlyc3QuCitXaXRoIGEgc2ltcGxlIGxpbmtlZC1saXN0IGxpa2Ugd2UncmUgdXNpbmcsIHRoYXQgaXMgYW4gTyhuKSBvcGVyYXRpb24uCitDb25zZXF1ZW50bHksIG1ldGhvZHMgbGlrZSBfX2RlbGl0ZW1fXygpIHdvdWxkIGNoYW5nZSBmcm9tIE8oMSkgdG8gTyhuKSwKK3doaWNoIGlzIHVuYWNjZXB0YWJsZS4KKworSW4gb3JkZXIgdG8gcHJlc2VydmUgTygxKSBwZXJmb3JtYW5jZSBmb3Igbm9kZSByZW1vdmFsIChmaW5kaW5nIG5vZGVzKSwgd2UKK211c3QgZG8gYmV0dGVyIHRoYW4ganVzdCBsb29waW5nIHRocm91Z2ggdGhlIGxpbmtlZC1saXN0LiAgSGVyZSBhcmUgb3B0aW9ucword2UndmUgY29uc2lkZXJlZDoKKworMS4gdXNlIGEgc2Vjb25kIGRpY3QgdG8gbWFwIGtleXMgdG8gbm9kZXMgKGEgbGEgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24pLgorMi4ga2VlcCBhIHNpbXBsZSBoYXNoIHRhYmxlIG1pcnJvcmluZyB0aGUgb3JkZXIgb2YgZGljdCdzLCBtYXBwaW5nIGVhY2gga2V5CisgICB0byB0aGUgY29ycmVzcG9uZGluZyBub2RlIGluIHRoZSBsaW5rZWQtbGlzdC4KKzMuIHVzZSBhIHZlcnNpb24gb2Ygc2hhcmVkIGtleXMgKHNwbGl0IGRpY3QpIHRoYXQgYWxsb3dzIG5vbi11bmljb2RlIGtleXMuCis0LiBoYXZlIHRoZSB2YWx1ZSBzdG9yZWQgZm9yIGVhY2gga2V5IGJlIGEgKHZhbHVlLCBub2RlKSBwYWlyLCBhbmQgYWRqdXN0CisgICBfX2dldGl0ZW1fXygpLCBnZXQoKSwgZXRjLiBhY2NvcmRpbmdseS4KKworVGhlIGFwcHJvYWNoIHdpdGggdGhlIGxlYXN0IHBlcmZvcm1hbmNlIGltcGFjdCAodGltZSBhbmQgc3BhY2UpIGlzICMyLAorbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudGllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCitXaGlsZSBsb29rZGljdCgpIGFuZCBmcmllbmRzIChka19sb29rdXApIGRvbid0IGdpdmUgdXMgdGhlIGluZGV4IGludG8gdGhlCithcnJheSwgd2UgbWFrZSB1c2Ugb2YgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGF0IGluZGV4LiAgQW4gYWx0ZXJuYXRpdmUKK3dvdWxkIGJlIHRvIHJlZmFjdG9yIGxvb2tkaWN0KCkgdG8gcHJvdmlkZSB0aGUgaW5kZXgsIGV4cGxpY2l0bHkgZXhwb3NpbmcKK3RoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBXZSBjb3VsZCBldmVuIGp1c3QgdXNlIGEgY3VzdG9tIGxvb2t1cCBmdW5jdGlvbgorZm9yIE9yZGVyZWREaWN0IHRoYXQgZmFjaWxpdGF0ZXMgb3VyIG5lZWQuICBIb3dldmVyLCBib3RoIGFwcHJvYWNoZXMgYXJlCitzaWduaWZpY2FudGx5IG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBqdXN0IHVzaW5nIHBvaW50ZXIgYXJpdGhtZXRpYy4KKworVGhlIGNhdGNoIHdpdGggbWlycm9yaW5nIHRoZSBoYXNoIHRhYmxlIG9yZGVyaW5nIGlzIHRoYXQgd2UgaGF2ZSB0byBrZWVwCit0aGUgb3JkZXJpbmcgaW4gc3luYyB0aHJvdWdoIGFueSBkaWN0IHJlc2l6ZXMuICBIb3dldmVyLCB0aGF0IG9yZGVyIG9ubHkKK21hdHRlcnMgZHVyaW5nIG5vZGUgbG9va3VwLiAgV2UgY2FuIHNpbXBseSBkZWZlciBhbnkgcG90ZW50aWFsIHJlc2l6aW5nCit1bnRpbCB3ZSBuZWVkIHRvIGRvIGEgbG9va3VwLgorCitMaW5rZWQtTGlzdCBOb2RlcworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3RvcmVzIGEgcG9pbnRlciB0byB0aGUgYXNzb2NpYXRlZCBrZXkgb25seS4KK09uZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIFB5RGljdEtleUVudHJ5IGluc3RlYWQuCitUaGlzIHdvdWxkIHNhdmUgb25lIHBvaW50ZXIgZGUtcmVmZXJlbmNlIHBlciBpdGVtLCB3aGljaCBpcyBuaWNlIGR1cmluZworY2FsbHMgdG8gdmFsdWVzKCkgYW5kIGl0ZW1zKCkuICBIb3dldmVyLCBpdCBhZGRzIHVubmVjZXNzYXJ5IG92ZXJoZWFkCitvdGhlcndpc2UsIHNvIHdlIHN0aWNrIHdpdGgganVzdCB0aGUga2V5LgorCitMaW5rZWQtTGlzdCBBUEkKKy0tLS0tLS0tLS0tLS0tLQorCitBcyBub3RlZCwgdGhlIGxpbmtlZC1saXN0IGltcGxlbWVudGVkIGhlcmUgZG9lcyBub3QgaGF2ZSBhbGwgdGhlIGJlbGxzIGFuZAord2hpc3RsZXMuICBIb3dldmVyLCB3ZSByZWNvZ25pemUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gbWF5IG5lZWQgdG8KK2NoYW5nZSB0byBhY2NvbW1vZGF0ZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgb3IgZXh0cmEgZnVuY3Rpb25hbGl0eS4gIFRvCit0aGF0IGVuZCwgV2UgdXNlIGEgc2ltcGxlIEFQSSB0byBpbnRlcmFjdCB3aXRoIHRoZSBsaW5rZWQtbGlzdC4gIEhlcmUncyBhCitzdW1tYXJ5IG9mIHRoZSBtZXRob2RzL21hY3JvczoKKworTm9kZSBpbmZvOgorCisqIF9vZGljdG5vZGVfS0VZKG5vZGUpCisqIF9vZGljdG5vZGVfVkFMVUUob2QsIG5vZGUpCisqIF9vZGljdG5vZGVfUFJFVihub2RlKQorKiBfb2RpY3Rub2RlX05FWFQobm9kZSkKKworTGlua2VkLUxpc3QgaW5mbzoKKworKiBfb2RpY3RfRklSU1Qob2QpCisqIF9vZGljdF9MQVNUKG9kKQorKiBfb2RpY3RfRU1QVFkob2QpCisqIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSAtIHVzZWQgaW4gcGxhY2Ugb2YgYGZvciAobm9kZT0uLi4pYAorCitGb3IgYWRkaW5nIG5vZGVzOgorCisqIF9vZGljdF9hZGRfaGVhZChvZCwgbm9kZSkKKyogX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKQorKiBfb2RpY3RfYWRkX25ld19ub2RlKG9kLCBrZXkpCisKK0ZvciByZW1vdmluZyBub2RlczoKKworKiBfb2RpY3RfcG9wX25vZGUob2QsIG5vZGUsIGtleSkKKyogX29kaWN0X2NsZWFyX25vZGUob2QsIG5vZGUpCisqIF9vZGljdF9jbGVhcl9ub2RlcyhvZCwgY2xlYXJfZWFjaCkKKworT3RoZXJzOgorCisqIF9vZGljdF9maW5kX25vZGUob2QsIGtleSkKKyogX29kaWN0X2tleXNfZXF1YWwob2QxLCBvZDIpCisKK1VzZWQsIGJ1dCBzcGVjaWZpYyB0byB0aGUgbGlua2VkLWxpc3QgaW1wbGVtZW50YXRpb246CisKKyogX29kaWN0X2ZyZWVfZmFzdF9ub2RlcyhvZCkKKworQW5kIGhlcmUncyBhIGxvb2sgYXQgaG93IHRoZSBsaW5rZWQtbGlzdCByZWxhdGVzIHRvIHRoZSBPcmRlcmVkRGljdCBBUEk6CisKKz09PT09PT09PT09PSA9PT0gPT09ID09PT0gPT09PSA9PT09ID09PSA9PT09ID09PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT0gPT09CittZXRob2QgICAgICAga2V5IHZhbCBwcmV2IG5leHQgbWVtICAxc3QgbGFzdCBlbXB0eSBpdGVyIGZpbmQgYWRkIHJtdiAgY2xyIGtlcQorPT09PT09PT09PT09ID09PSA9PT0gPT09PSA9PT09ID09PT0gPT09ID09PT0gPT09PT0gPT09PSA9PT09ID09PSA9PT09ID09PSA9PT0KK19fZGVsX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4gICAgICAgICAgICAgICAgICAgICAgICBYCitfX2RlbGl0ZW1fXyAgICAgICAgICAgICAgICAgICAgZnJlZSAgICAgICAgICAgICAgICAgICAgIH4gICAgICAgIG5vZGUKK19fZXFfXyAgICAgICB+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorX19pdGVyX18gICAgIFggICAgICAgICAgICBYCitfX25ld19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYICAgWAorX19yZWR1Y2VfXyAgIFggICB+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorX19yZXByX18gICAgIFggICBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorX19yZXZlcnNlZF9fIFggICAgICAgWAorX19zZXRpdGVtX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleQorX19zaXplb2ZfXyAgICAgICAgICAgICAgICAgICAgIHNpemUgICAgICAgICAgWAorY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgIH4gICAgICAgICAgICAgfiAgICAgICAgICAgICAgICAgICAgICAgIFgKK2NvcHkgICAgICAgICBYICAgWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK2l0ZW1zICAgICAgICBYICAgWCAgICAgICAgWAora2V5cyAgICAgICAgIFggICAgICAgICAgICBYCittb3ZlX3RvX2VuZCAgWCAgICAgICAgICAgICAgICAgICAgICBYICAgWCAgICAgICAgICAgICAgIH4gICAgaC90IGtleQorcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkKK3BvcGl0ZW0gICAgICBYICAgWCAgICAgICAgICAgICBmcmVlIFggICBYICAgICAgICAgICAgICAgICAgICAgICAgbm9kZQorc2V0ZGVmYXVsdCAgICAgICB+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICAgIH4KK3ZhbHVlcyAgICAgICAgICAgWCAgICAgICAgWAorPT09PT09PT09PT09ID09PSA9PT0gPT09PSA9PT09ID09PT0gPT09ID09PT0gPT09PT0gPT09PSA9PT09ID09PSA9PT09ID09PSA9PT0KKworX19kZWxpdGVtX18gaXMgdGhlIG9ubHkgbWV0aG9kIHRoYXQgZGlyZWN0bHkgcmVsaWVzIG9uIGZpbmRpbmcgYW4gYXJiaXRyYXJ5Citub2RlIGluIHRoZSBsaW5rZWQtbGlzdC4gIEV2ZXJ5dGhpbmcgZWxzZSBpcyBpdGVyYXRpb24gb3IgcmVsYXRlcyB0byB0aGUKK2VuZHMgb2YgdGhlIGxpbmtlZC1saXN0LgorCitTaXR1YXRpb24gdGhhdCBFbmRhbmdlcnMgQ29uc2lzdGVuY3kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVXNpbmcgYSByYXcgbGlua2VkLWxpc3QgZm9yIE9yZGVyZWREaWN0IGV4cG9zZXMgYSBrZXkgc2l0dWF0aW9uIHRoYXQgY2FuCitjYXVzZSBwcm9ibGVtcy4gIElmIGEgbm9kZSBpcyBzdG9yZWQgaW4gYSB2YXJpYWJsZSwgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdAordGhlIG5vZGUgbWF5IGhhdmUgYmVlbiBkZWFsbG9jYXRlZCBiZWZvcmUgdGhlIHZhcmlhYmxlIGdldHMgdXNlZCwgdGh1cworcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHNlZ21lbnRhdGlvbiBmYXVsdC4gIEEga2V5IHBsYWNlIHdoZXJlIHRoaXMgc2hvd3MKK3VwIGlzIGR1cmluZyBpdGVyYXRpb24gdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgKHZpYSBfb2RpY3RfRk9SRUFDSCBvcgorb3RoZXJ3aXNlKS4KKworQSBudW1iZXIgb2Ygc29sdXRpb25zIGFyZSBhdmFpbGFibGUgdG8gcmVzb2x2ZSB0aGlzIHNpdHVhdGlvbjoKKworKiBkZWZlciBsb29raW5nIHVwIHRoZSBub2RlIHVudGlsIGFzIGxhdGUgYXMgcG9zc2libGUgYW5kIGNlcnRhaW5seSBhZnRlcgorICBhbnkgY29kZSB0aGF0IGNvdWxkIHBvc3NpYmx5IHJlc3VsdCBpbiBhIGRlbGV0aW9uOworKiBpZiB0aGUgbm9kZSBpcyBuZWVkZWQgYm90aCBiZWZvcmUgYW5kIGFmdGVyIGEgcG9pbnQgd2hlcmUgdGhlIG5vZGUgbWlnaHQKKyAgYmUgcmVtb3ZlZCwgZG8gYSBjaGVjayBiZWZvcmUgdXNpbmcgdGhlIG5vZGUgYXQgdGhlICJhZnRlciIgbG9jYXRpb24gdG8KKyAgc2VlIGlmIHRoZSBub2RlIGlzIHN0aWxsIHZhbGlkOworKiBsaWtlIHRoZSBsYXN0IG9uZSwgYnV0IHNpbXBseSBwdWxsIHRoZSBub2RlIGFnYWluIHRvIGVuc3VyZSBpdCdzIHJpZ2h0OworKiBrZWVwIHRoZSBrZXkgaW4gdGhlIHZhcmlhYmxlIGluc3RlYWQgb2YgdGhlIG5vZGUgYW5kIHRoZW4gbG9vayB1cCB0aGUKKyAgbm9kZSB1c2luZyB0aGUga2V5IGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgbm9kZSBpcyBuZWVkZWQgKHRoaXMgaXMgd2hhdAorICB3ZSBkbyBmb3IgdGhlIGl0ZXJhdG9ycykuCisKK0Fub3RoZXIgcmVsYXRlZCBwcm9ibGVtLCBwcmVzZXJ2aW5nIGNvbnNpc3RlbnQgb3JkZXJpbmcgZHVyaW5nIGl0ZXJhdGlvbiwKK2lzIGRlc2NyaWJlZCBiZWxvdy4gIFRoYXQgb25lIGlzIG5vdCBleGNsdXNpdmUgdG8gdXNpbmcgbGlua2VkLWxpc3RzLgorCisKK0NoYWxsZW5nZXMgZnJvbSBTdWJjbGFzc2luZyBkaWN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPcmRlcmVkRGljdCBzdWJjbGFzc2VzIGRpY3QsIHdoaWNoIGlzIGFuIHVudXN1YWwgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvCitidWlsdGluIHR5cGVzIChvdGhlciB0aGFuIHRoZSBiYXNlIG9iamVjdCB0eXBlKS4gIERvaW5nIHNvIHJlc3VsdHMgaW4KK3NvbWUgY29tcGxpY2F0aW9uIGFuZCBkZXNlcnZlcyBmdXJ0aGVyIGV4cGxhbmF0aW9uLiAgVGhlcmUgYXJlIHR3byB0aGluZ3MKK3RvIGNvbnNpZGVyIGhlcmUuICBGaXJzdCwgaW4gd2hhdCBjaXJjdW1zdGFuY2VzIG9yIHdpdGggd2hhdCBhZGp1c3RtZW50cworY2FuIE9yZGVyZWREaWN0IGJlIHVzZWQgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBkaWN0IChhdCB0aGUgQyBsZXZlbCk/CitTZWNvbmQsIGhvdyBjYW4gdGhlIE9yZGVyZWREaWN0IGltcGxlbWVudGF0aW9uIGxldmVyYWdlIHRoZSBkaWN0CitpbXBsZW1lbnRhdGlvbiBlZmZlY3RpdmVseSB3aXRob3V0IGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGNvdXBsaW5nIG9yCitpbmVmZmljaWVuY2llcz8KKworVGhpcyBzZWNvbmQgcG9pbnQgaXMgcmVmbGVjdGVkIGhlcmUgYW5kIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgc28gdGhlCitmdXJ0aGVyIGZvY3VzIGlzIG9uIHRoZSBmaXJzdCBwb2ludC4gIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IGZvcgorb3ZlcnJpZGRlbiBtZXRob2RzLCB0aGUgZGljdCBpbXBsZW1lbnRhdGlvbiBpcyBkZWZlcnJlZCB0byBhcyBtdWNoIGFzCitwb3NzaWJsZS4gIEZ1cnRoZXJtb3JlLCBjb3VwbGluZyBpcyBsaW1pdGVkIHRvIGFzIGxpdHRsZSBhcyBpcyByZWFzb25hYmxlLgorCitDb25jcmV0ZSBBUEkgQ29tcGF0aWJpbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNlIG9mIHRoZSBjb25jcmV0ZSBDLUFQSSBmb3IgZGljdCAoUHlEaWN0XyopIHdpdGggT3JkZXJlZERpY3QgaXMKK3Byb2JsZW1hdGljLiAgKFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA5NzcuKSAgVGhlIGNvbmNyZXRlIEFQSQoraGFzIGEgbnVtYmVyIG9mIGhhcmQtY29kZWQgYXNzdW1wdGlvbnMgdGllZCB0byB0aGUgZGljdCBpbXBsZW1lbnRhdGlvbi4KK1RoaXMgaXMsIGluIHBhcnQsIGR1ZSB0byBwZXJmb3JtYW5jZSByZWFzb25zLCB3aGljaCBpcyB1bmRlcnN0YW5kYWJsZQorZ2l2ZW4gdGhlIHBhcnQgZGljdCBwbGF5cyBpbiBQeXRob24uCisKK0FueSBhdHRlbXB0IHRvIHJlcGxhY2UgZGljdCB3aXRoIE9yZGVyZWREaWN0IGZvciBhbnkgcm9sZSBpbiB0aGUKK2ludGVycHJldGVyIChlLmcuICoqa3dkcykgZmFjZXMgYSBjaGFsbGVuZ2UuICBTdWNoIGFueSBlZmZvcnQgbXVzdAorcmVjb2duaXplIHRoYXQgdGhlIGluc3RhbmNlcyBpbiBhZmZlY3RlZCBsb2NhdGlvbnMgY3VycmVudGx5IGludGVyYWN0IHdpdGgKK3RoZSBjb25jcmV0ZSBBUEkuCisKK0hlcmUgYXJlIHNvbWUgd2F5cyB0byBhZGRyZXNzIHRoaXMgY2hhbGxlbmdlOgorCisxLiBDaGFuZ2UgdGhlIHJlbGV2YW50IHVzYWdlIG9mIHRoZSBjb25jcmV0ZSBBUEkgaW4gQ1B5dGhvbiBhbmQgYWRkCisgICBQeURpY3RfQ2hlY2tFeGFjdCgpIGNhbGxzIHRvIGVhY2ggb2YgdGhlIGNvbmNyZXRlIEFQSSBmdW5jaW9ucy4KKzIuIEFkanVzdCB0aGUgcmVsZXZhbnQgY29uY3JldGUgQVBJIGZ1bmN0aW9ucyB0byBleHBsaWNpdGx5IGFjY29tbW9kYXRlCisgICBPcmRlcmVkRGljdC4KKzMuIEFzIHdpdGggIzEsIGFkZCB0aGUgY2hlY2tzLCBidXQgaW1wcm92ZSB0aGUgYWJzdHJhY3QgQVBJIHdpdGggc21hcnQgZmFzdAorICAgcGF0aHMgZm9yIGRpY3QgYW5kIE9yZGVyZWREaWN0LCBhbmQgcmVmYWN0b3IgQ1B5dGhvbiB0byB1c2UgdGhlIGFic3RyYWN0CisgICBBUEkuICBJbXByb3ZlbWVudHMgdG8gdGhlIGFic3RyYWN0IEFQSSB3b3VsZCBiZSB2YWx1YWJsZSByZWdhcmRsZXNzLgorCitBZGRpbmcgdGhlIGNoZWNrcyB0byB0aGUgY29uY3JldGUgQVBJIHdvdWxkIGhlbHAgbWFrZSBhbnkgaW50ZXJwcmV0ZXIKK3N3aXRjaCB0byBPcmRlcmVkRGljdCBsZXNzIHBhaW5mdWwgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiAgSG93ZXZlciwgdGhpcword29uJ3Qgd29yay4gIFRoZSBlcXVpdmFsZW50IEMgQVBJIGNhbGwgdG8gYGRpY3QuX19zZXRpdGVtX18ob2JqLCBrLCB2KWAKK2lzICdQeURpY3RfU2V0SXRlbShvYmosIGssIHYpYC4gIFRoaXMgaWxsdXN0cmF0ZXMgaG93IHN1YmNsYXNzZXMgaW4gQyBjYWxsCit0aGUgYmFzZSBjbGFzcydzIG1ldGhvZHMsIHNpbmNlIHRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgb2Ygc3VwZXIoKSBpbiB0aGUKK0MgQVBJLiAgQ2FsbGluZyBpbnRvIFB5dGhvbiBmb3IgcGFyZW50IGNsYXNzIEFQSSB3b3VsZCB3b3JrLCBidXQgc29tZQorZXh0ZW5zaW9uIG1vZHVsZXMgYWxyZWFkeSByZWx5IG9uIHRoaXMgZmVhdHVyZSBvZiB0aGUgY29uY3JldGUgQVBJLgorCitGb3IgcmVmZXJlbmNlLCBoZXJlIGlzIGEgYnJlYWtkb3duIG9mIHNvbWUgb2YgdGhlIGRpY3QgY29uY3JldGUgQVBJOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09Citjb25jcmV0ZSBBUEkgICAgICAgICAgICAgICB1c2VzICAgICAgICAgIGFic3RyYWN0IEFQSQorPT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PQorUHlEaWN0X0NoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfQ2hlY2sKKyhQeURpY3RfQ2hlY2tFeGFjdCkgICAgICAgICAgICAgICAgICAgICAgLQorKFB5RGljdF9OZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCisoUHlEaWN0UHJveHlfTmV3KSAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9DbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X0NvbnRhaW5zICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNlcXVlbmNlX0NvbnRhaW5zCitQeURpY3RfQ29weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9TZXRJdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3RfU2V0SXRlbQorUHlEaWN0X1NldEl0ZW1TdHJpbmcgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZworUHlEaWN0X0RlbEl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfRGVsSXRlbQorUHlEaWN0X0RlbEl0ZW1TdHJpbmcgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfRGVsSXRlbVN0cmluZworUHlEaWN0X0dldEl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfR2V0SXRlbVdpdGhFcnJvciAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X0dldEl0ZW0KK19QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yICAgICAgICAgICAgICAgLQorUHlEaWN0X0dldEl0ZW1TdHJpbmcgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZworUHlEaWN0X0l0ZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfSXRlbXMKK1B5RGljdF9LZXlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0tleXMKK1B5RGljdF9WYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX1ZhbHVlcworUHlEaWN0X1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfU2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfTGVuZ3RoCitQeURpY3RfTmV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5SXRlcl9OZXh0CitfUHlEaWN0X05leHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9NZXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X1VwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfTWVyZ2VGcm9tU2VxMiAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9DbGVhckZyZWVMaXN0ICAgICAgICAgICAgICAgICAgICAgLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWFwcGluZ19IYXNLZXkKKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0KKworCitUaGUgZGljdCBJbnRlcmZhY2UgUmVsYXRpdmUgdG8gT3JkZXJlZERpY3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTaW5jZSBPcmRlcmVkRGljdCBzdWJjbGFzc2VzIGRpY3QsIHVuZGVyc3RhbmRpbmcgdGhlIHZhcmlvdXMgbWV0aG9kcyBhbmQKK2F0dHJpYnV0ZXMgb2YgZGljdCBpcyBpbXBvcnRhbnQgZm9yIGltcGxlbWVudGluZyBPcmRlcmVkRGljdC4KKworUmVsZXZhbnQgVHlwZSBTbG90cworLS0tLS0tLS0tLS0tLS0tLS0tLQorCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorc2xvdCAgICAgICAgICAgICAgYXR0cmlidXRlICAgICAgICBvYmplY3QgICAgICAgICAgICAgIGRpY3QKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09Cit0cF9kZWFsbG9jICAgICAgICAtICAgICAgICAgICAgICAgIG9iamVjdF9kZWFsbG9jICAgICAgZGljdF9kZWFsbG9jCit0cF9yZXByICAgICAgICAgICBfX3JlcHJfXyAgICAgICAgIG9iamVjdF9yZXByICAgICAgICAgZGljdF9yZXByCitzcV9jb250YWlucyAgICAgICBfX2NvbnRhaW5zX18gICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9jb250YWlucworbXBfbGVuZ3RoICAgICAgICAgX19sZW5fXyAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfbGVuZ3RoCittcF9zdWJzY3JpcHQgICAgICBfX2dldGl0ZW1fXyAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9zdWJzY3JpcHQKK21wX2Fzc19zdWJzY3JpcHQgIF9fc2V0aXRlbV9fICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2Fzc19zdWIKKyAgICAgICAgICAgICAgICAgIF9fZGVsaXRlbV9fCit0cF9oYXNoICAgICAgICAgICBfX2hhc2hfXyAgICAgICAgIF9QeV9IYXNoUG9pbnRlciAgICAgLi4uX0hhc2hOb3RJbXBsCit0cF9zdHIgICAgICAgICAgICBfX3N0cl9fICAgICAgICAgIG9iamVjdF9zdHIgICAgICAgICAgLQordHBfZ2V0YXR0cm8gICAgICAgX19nZXRhdHRyaWJ1dGVfXyAuLi5fR2VuZXJpY0dldEF0dHIgIChyZXBlYXRlZCkKKyAgICAgICAgICAgICAgICAgIF9fZ2V0YXR0cl9fCit0cF9zZXRhdHRybyAgICAgICBfX3NldGF0dHJfXyAgICAgIC4uLl9HZW5lcmljU2V0QXR0ciAgKGRpc2FibGVkKQordHBfZG9jICAgICAgICAgICAgX19kb2NfXyAgICAgICAgICAobGl0ZXJhbCkgICAgICAgICAgIGRpY3Rpb25hcnlfZG9jCit0cF90cmF2ZXJzZSAgICAgICAtICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF90cmF2ZXJzZQordHBfY2xlYXIgICAgICAgICAgLSAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfdHBfY2xlYXIKK3RwX3JpY2hjb21wYXJlICAgIF9fZXFfXyAgICAgICAgICAgb2JqZWN0X3JpY2hjb21wYXJlICBkaWN0X3JpY2hjb21wYXJlCisgICAgICAgICAgICAgICAgICBfX25lX18KK3RwX3dlYWtsaXN0b2Zmc2V0IChfX3dlYWtyZWZfXykgICAgLSAgICAgICAgICAgICAgICAgICAtCit0cF9pdGVyICAgICAgICAgICBfX2l0ZXJfXyAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9pdGVyCit0cF9kaWN0b2Zmc2V0ICAgICAoX19kaWN0X18pICAgICAgIC0gICAgICAgICAgICAgICAgICAgLQordHBfaW5pdCAgICAgICAgICAgX19pbml0X18gICAgICAgICBvYmplY3RfaW5pdCAgICAgICAgIGRpY3RfaW5pdAordHBfYWxsb2MgICAgICAgICAgLSAgICAgICAgICAgICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jIChyZXBlYXRlZCkKK3RwX25ldyAgICAgICAgICAgIF9fbmV3X18gICAgICAgICAgb2JqZWN0X25ldyAgICAgICAgICBkaWN0X25ldwordHBfZnJlZSAgICAgICAgICAgLSAgICAgICAgICAgICAgICBQeU9iamVjdF9EZWwgICAgICAgIFB5T2JqZWN0X0dDX0RlbAorPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KKworUmVsZXZhbnQgTWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLQorCis9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09CittZXRob2QgICAgICAgICAgIG9iamVjdCAgICAgICAgICAgICAgZGljdAorPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PQorX19yZWR1Y2VfXyAgICAgICBvYmplY3RfcmVkdWNlICAgICAgIC0KK19fc2l6ZW9mX18gICAgICAgb2JqZWN0X3NpemVvZiAgICAgICBkaWN0X3NpemVvZgorY2xlYXIgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfY2xlYXIKK2NvcHkgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2NvcHkKK2Zyb21rZXlzICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2Zyb21rZXlzCitnZXQgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9nZXQKK2l0ZW1zICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0aXRlbXNfbmV3CitrZXlzICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdGtleXNfbmV3Citwb3AgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9wb3AKK3BvcGl0ZW0gICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3BvcGl0ZW0KK3NldGRlZmF1bHQgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3NldGRlZmF1bHQKK3VwZGF0ZSAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3VwZGF0ZQordmFsdWVzICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3R2YWx1ZXNfbmV3Cis9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09CisKKworUHVyZSBQeXRob24gT3JkZXJlZERpY3QKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIGFscmVhZHkgbm90ZWQsIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgcHVyZSBQeXRob24gT3JkZXJlZERpY3QKK2ltcGxlbWVudGF0aW9uIGlzIGEga2V5IGdvYWwgb2YgdGhpcyBDIGltcGxlbWVudGF0aW9uLiAgVG8gZnVydGhlciB0aGF0Citnb2FsLCBoZXJlJ3MgYSBzdW1tYXJ5IG9mIGhvdyBPcmRlcmVkRGljdC1zcGVjaWZpYyBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZAoraW4gY29sbGVjdGlvbnMvX19pbml0X18ucHkuICBBbHNvIHByb3ZpZGVkIGlzIGFuIGluZGljYXRpb24gb2Ygd2hpY2gKK21ldGhvZHMgZGlyZWN0bHkgbXV0YXRlIG9yIGl0ZXJhdGUgdGhlIG9iamVjdCwgYXMgd2VsbCBhcyBhbnkgcmVsYXRpb25zaGlwCit3aXRoIHRoZSB1bmRlcmx5aW5nIGxpbmtlZC1saXN0LgorCis9PT09PT09PT09PT09ID09PT09PT09PT09PT09ID09ID09PT09PT09PT09PT09PT0gPT09ID09PSA9PT09CittZXRob2QgICAgICAgIGltcGwgdXNlZCAgICAgIGxsIHVzZXMgICAgICAgICAgICAgaW5xIG11dCBpdGVyCis9PT09PT09PT09PT09ID09PT09PT09PT09PT09ID09ID09PT09PT09PT09PT09PT0gPT09ID09PSA9PT09CitfX2NvbnRhaW5zX18gIGRpY3QgICAgICAgICAgIC0gIC0gICAgICAgICAgICAgICAgWAorX19kZWxpdGVtX18gICBPcmRlcmVkRGljdCAgICBZICBkaWN0Ll9fZGVsaXRlbV9fICAgICBYCitfX2VxX18gICAgICAgIE9yZGVyZWREaWN0ICAgIE4gIE9yZGVyZWREaWN0ICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0Ll9fZXFfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2l0ZXJfXworX19nZXRpdGVtX18gICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIFgKK19faXRlcl9fICAgICAgT3JkZXJlZERpY3QgICAgWSAgLSAgICAgICAgICAgICAgICAgICAgICAgIFgKK19faW5pdF9fICAgICAgT3JkZXJlZERpY3QgICAgTiAgdXBkYXRlCitfX2xlbl9fICAgICAgIGRpY3QgICAgICAgICAgIC0gIC0gICAgICAgICAgICAgICAgWAorX19uZV9fICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBfX2VxX18gICAgICAgICAgIH4KK19fcmVkdWNlX18gICAgT3JkZXJlZERpY3QgICAgTiAgT3JkZXJlZERpY3QgICAgICB+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcl9fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aXRlbV9fCitfX3JlcHJfXyAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fY2xhc3NfXyAgICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcworX19yZXZlcnNlZF9fICBPcmRlcmVkRGljdCAgICBZICAtICAgICAgICAgICAgICAgICAgICAgICAgWAorX19zZXRpdGVtX18gICBPcmRlcmVkRGljdCAgICBZICBfX2NvbnRhaW5zX18gICAgICAgICBYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18KK19fc2l6ZW9mX18gICAgT3JkZXJlZERpY3QgICAgWSAgX19sZW5fXyAgICAgICAgICB+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGljdF9fCitjbGVhciAgICAgICAgIE9yZGVyZWREaWN0ICAgIFkgIGRpY3QuY2xlYXIgICAgICAgICAgIFgKK2NvcHkgICAgICAgICAgT3JkZXJlZERpY3QgICAgTiAgX19jbGFzc19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5pdF9fCitmcm9ta2V5cyAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fc2V0aXRlbV9fCitnZXQgICAgICAgICAgIGRpY3QgICAgICAgICAgIC0gIC0gICAgICAgICAgICAgICAgfgoraXRlbXMgICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBJdGVtc1ZpZXcgICAgICAgICAgICAgICAgWAora2V5cyAgICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBLZXlzVmlldyAgICAgICAgICAgICAgICAgWAorbW92ZV90b19lbmQgICBPcmRlcmVkRGljdCAgICBZICAtICAgICAgICAgICAgICAgICAgICBYCitwb3AgICAgICAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fY29udGFpbnNfXyAgICAgICAgIFgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nZXRpdGVtX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZWxpdGVtX18KK3BvcGl0ZW0gICAgICAgT3JkZXJlZERpY3QgICAgWSAgZGljdC5wb3AgICAgICAgICAgICAgWAorc2V0ZGVmYXVsdCAgICBPcmRlcmVkRGljdCAgICBOICBfX2NvbnRhaW5zX18gICAgICAgICB+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aXRlbV9fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2V0aXRlbV9fCit1cGRhdGUgICAgICAgIE11dGFibGVNYXBwaW5nIC0gIF9fc2V0aXRlbV9fICAgICAgICAgIH4KK3ZhbHVlcyAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgVmFsdWVzVmlldyAgICAgICAgICAgICAgIFgKKz09PT09PT09PT09PT0gPT09PT09PT09PT09PT0gPT0gPT09PT09PT09PT09PT09PSA9PT0gPT09ID09PT0KKworX19yZXZlcnNlZF9fIGFuZCBtb3ZlX3RvX2VuZCBhcmUgYm90aCBleGNsdXNpdmUgdG8gT3JkZXJlZERpY3QuCisKKworQyBPcmRlcmVkRGljdCBJbXBsZW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CitzbG90ICAgICAgICAgICAgICBpbXBsCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09Cit0cF9kZWFsbG9jICAgICAgICBvZGljdF9kZWFsbG9jCit0cF9yZXByICAgICAgICAgICBvZGljdF9yZXByCittcF9hc3Nfc3Vic2NyaXB0ICBvZGljdF9hc3Nfc3ViCit0cF9kb2MgICAgICAgICAgICBvZGljdF9kb2MKK3RwX3RyYXZlcnNlICAgICAgIG9kaWN0X3RyYXZlcnNlCit0cF9jbGVhciAgICAgICAgICBvZGljdF90cF9jbGVhcgordHBfcmljaGNvbXBhcmUgICAgb2RpY3RfcmljaGNvbXBhcmUKK3RwX3dlYWtsaXN0b2Zmc2V0IChvZmZzZXQpCit0cF9pdGVyICAgICAgICAgICBvZGljdF9pdGVyCit0cF9kaWN0b2Zmc2V0ICAgICAob2Zmc2V0KQordHBfaW5pdCAgICAgICAgICAgb2RpY3RfaW5pdAordHBfYWxsb2MgICAgICAgICAgKHJlcGVhdGVkKQordHBfbmV3ICAgICAgICAgICAgb2RpY3RfbmV3Cis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KK21ldGhvZCAgICAgICAgICAgIGltcGwKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KK19fcmVkdWNlX18gICAgICAgIG9kaWN0X3JlZHVjZQorX19zaXplb2ZfXyAgICAgICAgb2RpY3Rfc2l6ZW9mCitjbGVhciAgICAgICAgICAgICBvZGljdF9jbGVhcgorY29weSAgICAgICAgICAgICAgb2RpY3RfY29weQorZnJvbWtleXMgICAgICAgICAgb2RpY3RfZnJvbWtleXMKK2l0ZW1zICAgICAgICAgICAgIG9kaWN0aXRlbXNfbmV3CitrZXlzICAgICAgICAgICAgICBvZGljdGtleXNfbmV3Citwb3AgICAgICAgICAgICAgICBvZGljdF9wb3AKK3BvcGl0ZW0gICAgICAgICAgIG9kaWN0X3BvcGl0ZW0KK3NldGRlZmF1bHQgICAgICAgIG9kaWN0X3NldGRlZmF1bHQKK3VwZGF0ZSAgICAgICAgICAgIG9kaWN0X3VwZGF0ZQordmFsdWVzICAgICAgICAgICAgb2RpY3R2YWx1ZXNfbmV3Cis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisKK0luaGVyaXRlZCB1bmNoYW5nZWQgZnJvbSBvYmplY3QvZGljdDoKKworPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PQorbWV0aG9kICAgICAgICAgICB0eXBlIGZpZWxkCis9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09CistICAgICAgICAgICAgICAgIHRwX2ZyZWUKK19fY29udGFpbnNfXyAgICAgdHBfYXNfc2VxdWVuY2Uuc3FfY29udGFpbnMKK19fZ2V0YXR0cl9fICAgICAgdHBfZ2V0YXR0cm8KK19fZ2V0YXR0cmlidXRlX18gdHBfZ2V0YXR0cm8KK19fZ2V0aXRlbV9fICAgICAgdHBfYXNfbWFwcGluZy5tcF9zdWJzY3JpcHQKK19faGFzaF9fICAgICAgICAgdHBfaGFzaAorX19sZW5fXyAgICAgICAgICB0cF9hc19tYXBwaW5nLm1wX2xlbmd0aAorX19zZXRhdHRyX18gICAgICB0cF9zZXRhdHRybworX19zdHJfXyAgICAgICAgICB0cF9zdHIKK2dldCAgICAgICAgICAgICAgLQorPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK090aGVyIENoYWxsZW5nZXMKKz09PT09PT09PT09PT09PT0KKworUHJlc2VydmluZyBPcmRlcmluZyBEdXJpbmcgSXRlcmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0R1cmluZyBpdGVyYXRpb24gdGhyb3VnaCBhbiBPcmRlcmVkRGljdCwgaXQgaXMgcG9zc2libGUgdGhhdCBpdGVtcyBjb3VsZAorZ2V0IGFkZGVkLCByZW1vdmVkLCBvciByZW9yZGVyZWQuICBGb3IgYSBsaW5rZWQtbGlzdCBpbXBsZW1lbnRhdGlvbiwgYXMKK3dpdGggc29tZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMsIHRoYXQgc2l0dWF0aW9uIG1heSBsZWFkIHRvIHVuZGVmaW5lZAorYmVoYXZpb3IuICBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgZGljdCBtZW50aW9ucyB0aGlzIGluIHRoZSBgaXRlcigpYCBzZWN0aW9uCitvZiBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC9saWJyYXJ5L3N0ZHR5cGVzLmh0bWwjZGljdGlvbmFyeS12aWV3LW9iamVjdHMuCitJbiB0aGlzIGltcGxlbWVudGF0aW9uIHdlIGZvbGxvdyBkaWN0J3MgbGVhZCAoYXMgZG9lcyB0aGUgcHVyZSBQeXRob24KK2ltcGxlbWVudGF0aW9uKSBmb3IgX19pdGVyX18oKSwga2V5cygpLCB2YWx1ZXMoKSwgYW5kIGl0ZW1zKCkuCisKK0ZvciBpbnRlcm5hbCBpdGVyYXRpb24gKHVzaW5nIF9vZGljdF9GT1JFQUNIIG9yIG5vdCksIHRoZXJlIGlzIHN0aWxsIHRoZQorcmlzayB0aGF0IG5vdCBhbGwgbm9kZXMgdGhhdCB3ZSBleHBlY3QgdG8gYmUgc2VlbiBpbiB0aGUgbG9vcCBhY3R1YWxseSBnZXQKK3NlZW4uICBUaHVzLCB3ZSBhcmUgY2FyZWZ1bCBpbiBlYWNoIG9mIHRob3NlIHBsYWNlcyB0byBlbnN1cmUgdGhhdCB0aGV5CithcmUuICBUaGlzIGNvbWVzLCBvZiBjb3Vyc2UsIGF0IGEgc21hbGwgcHJpY2UgYXQgZWFjaCBsb2NhdGlvbi4gIFRoZQorc29sdXRpb25zIGFyZSBtdWNoIHRoZSBzYW1lIGFzIHRob3NlIGRldGFpbGVkIGluIHRoZSBgU2l0dWF0aW9uIHRoYXQKK0VuZGFuZ2VycyBDb25zaXN0ZW5jeWAgc2VjdGlvbiBhYm92ZS4KKworCitQb3RlbnRpYWwgT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBBbGxvY2F0ZSB0aGUgbm9kZXMgYXMgYSBibG9jayB2aWEgb2RfZmFzdF9ub2RlcyBpbnN0ZWFkIG9mIGluZGl2aWR1YWxseS4KKyAgLSBTZXQgbm9kZS0+a2V5IHRvIE5VTEwgdG8gaW5kaWNhdGUgdGhlIG5vZGUgaXMgbm90LWluLXVzZS4KKyAgLSBBZGQgX29kaWN0X0VYSVNUUygpPworICAtIEhvdyB0byBtYWludGFpbiBjb25zaXN0ZW5jeSBhY3Jvc3MgcmVzaXplcz8gIEV4aXN0aW5nIG5vZGUgcG9pbnRlcnMKKyAgICB3b3VsZCBiZSBpbnZhbGlkYXRlIGFmdGVyIGEgcmVzaXplLCB3aGljaCBpcyBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMKKyAgICBmb3IgdGhlIGl0ZXJhdG9ycy4KKyogVXNlIGEgbW9yZSBzdHJlYW0tbGluZWQgaW1wbGVtZW50YXRpb24gb2YgdXBkYXRlKCkgYW5kLCBsaWtlbHkgaW5kaXJlY3RseSwKKyAgX19pbml0X18oKS4KKworKi8KKworLyogVE9ETworCitzb29uZXI6CistIHJlZW50cmFuY3kgKG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGF0IGEgdGhyZWFkLXNhZmUgc3RhdGUgd2hlbiBjYWxsaW5nCisgIGludG8gUHl0aG9uKS4gIEkndmUgYWxyZWFkeSBjaGVja2VkIHRoaXMgbXVsdGlwbGUgdGltZXMsIGJ1dCB3YW50IHRvCisgIG1ha2Ugb25lIG1vcmUgcGFzcy4KKy0gYWRkIHVuaXQgdGVzdHMgZm9yIHJlZW50cmFuY3k/CisKK2xhdGVyOgorLSBtYWtlIHRoZSBkaWN0IHZpZXdzIHN1cHBvcnQgdGhlIGZ1bGwgc2V0IEFQSSAodGhlIHB1cmUgUHl0aG9uIGltcGwgZG9lcykKKy0gaW1wbGVtZW50IGEgZnVsbGVyIE11dGFibGVNYXBwaW5nIEFQSSBpbiBDPworLSBtb3ZlIHRoZSBNdXRhYmxlTWFwcGluZyBpbXBsZW1lbnRhdGlvbiB0byBhYnN0cmFjdC5jPworLSBvcHRpbWl6ZSBtdXRhYmxlbWFwcGluZ191cGRhdGUKKy0gdXNlIFB5T2JqZWN0X01BTExPQyAoc21hbGwgb2JqZWN0IGFsbG9jYXRvcikgZm9yIG9kaWN0IG5vZGVzPworLSBzdXBwb3J0IHN1YmNsYXNzZXMgYmV0dGVyIChlLmcuIGluIG9kaWN0X3JpY2hjb21wYXJlKQorCisqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiZGljdC1jb21tb24uaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworCit0eXBlZGVmIHN0cnVjdCBfb2RpY3Rub2RlIF9PRGljdE5vZGU7CisKKy8qIFB5T0RpY3RPYmplY3QgKi8KK3N0cnVjdCBfb2RpY3RvYmplY3QgeworICAgIFB5RGljdE9iamVjdCBvZF9kaWN0OyAgICAgICAgLyogdGhlIHVuZGVybHlpbmcgZGljdCAqLworICAgIF9PRGljdE5vZGUgKm9kX2ZpcnN0OyAgICAgICAgLyogZmlyc3Qgbm9kZSBpbiB0aGUgbGlua2VkIGxpc3QsIGlmIGFueSAqLworICAgIF9PRGljdE5vZGUgKm9kX2xhc3Q7ICAgICAgICAgLyogbGFzdCBub2RlIGluIHRoZSBsaW5rZWQgbGlzdCwgaWYgYW55ICovCisgICAgLyogb2RfZmFzdF9ub2RlcyBhbmQgb2RfcmVzaXplX3NlbnRpbmVsIGFyZSBtYW5hZ2VkIGJ5IF9vZGljdF9yZXNpemUoKQorICAgICAqIE5vdGUgdGhhdCB3ZSByZWx5IG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgZGljdCBmb3IgYm90aC4gKi8KKyAgICBfT0RpY3ROb2RlICoqb2RfZmFzdF9ub2RlczsgIC8qIGhhc2ggdGFibGUgdGhhdCBtaXJyb3JzIHRoZSBkaWN0IHRhYmxlICovCisgICAgUHlfdWludHB0cl90IG9kX3Jlc2l6ZV9zZW50aW5lbDsgIC8qIGNoYW5nZXMgaWYgb2RpY3Qgc2hvdWxkIGJlIHJlc2l6ZWQgKi8KKworICAgIHNpemVfdCBvZF9zdGF0ZTsgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIExMIGNoYW5nZXMgKi8KKyAgICBQeU9iamVjdCAqb2RfaW5zdF9kaWN0OyAgICAgIC8qIE9yZGVyZWREaWN0KCkuX19kaWN0X18gKi8KKyAgICBQeU9iamVjdCAqb2Rfd2Vha3JlZmxpc3Q7ICAgIC8qIGhvbGRzIHdlYWtyZWZzIHRvIHRoZSBvZGljdCAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBvZGljdCBrZXlzIChhIHNpbXBsZSBkb3VibHktbGlua2VkIGxpc3QpCisgKi8KKworc3RydWN0IF9vZGljdG5vZGUgeworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgX09EaWN0Tm9kZSAqbmV4dDsKKyAgICBfT0RpY3ROb2RlICpwcmV2OworfTsKKworI2RlZmluZSBfb2RpY3Rub2RlX0tFWShub2RlKSBcCisgICAgKG5vZGUtPmtleSkKKyNkZWZpbmUgX29kaWN0bm9kZV9IQVNIKG5vZGUpIFwKKyAgICAobm9kZS0+aGFzaCkKKy8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLworI2RlZmluZSBfb2RpY3Rub2RlX1ZBTFVFKG5vZGUsIG9kKSBcCisgICAgUHlPRGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKW9kLCBfb2RpY3Rub2RlX0tFWShub2RlKSkKKyNkZWZpbmUgX29kaWN0bm9kZV9QUkVWKG5vZGUpIChub2RlLT5wcmV2KQorI2RlZmluZSBfb2RpY3Rub2RlX05FWFQobm9kZSkgKG5vZGUtPm5leHQpCisKKyNkZWZpbmUgX29kaWN0X0ZJUlNUKG9kKSAoKChQeU9EaWN0T2JqZWN0ICopb2QpLT5vZF9maXJzdCkKKyNkZWZpbmUgX29kaWN0X0xBU1Qob2QpICgoKFB5T0RpY3RPYmplY3QgKilvZCktPm9kX2xhc3QpCisjZGVmaW5lIF9vZGljdF9FTVBUWShvZCkgKF9vZGljdF9GSVJTVChvZCkgPT0gTlVMTCkKKyNkZWZpbmUgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIFwKKyAgICBmb3IgKG5vZGUgPSBfb2RpY3RfRklSU1Qob2QpOyBub2RlICE9IE5VTEw7IG5vZGUgPSBfb2RpY3Rub2RlX05FWFQobm9kZSkpCisKKyNkZWZpbmUgX29kaWN0X0ZBU1RfU0laRShvZCkgKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXMtPmRrX3NpemUKKworc3RhdGljIHZvaWQKK19vZGljdF9mcmVlX2Zhc3Rfbm9kZXMoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBpZiAob2QtPm9kX2Zhc3Rfbm9kZXMpIHsKKyAgICAgICAgUHlNZW1fRlJFRShvZC0+b2RfZmFzdF9ub2Rlcyk7CisgICAgfQorfQorCisvKiBSZXR1cm4gdGhlIGluZGV4IGludG8gdGhlIGhhc2ggdGFibGUsIHJlZ2FyZGxlc3Mgb2YgYSB2YWxpZCBub2RlLiAqLworc3RhdGljIFB5X3NzaXplX3QKK19vZGljdF9nZXRfaW5kZXhfaGFzaChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworCisgICAgZXAgPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCisgICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKK30KKworLyogUmVwbGFjZSBvZC0+b2RfZmFzdF9ub2RlcyB3aXRoIGEgbmV3IHRhYmxlIG1hdGNoaW5nIHRoZSBzaXplIG9mIGRpY3Qncy4gKi8KK3N0YXRpYyBpbnQKK19vZGljdF9yZXNpemUoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgX09EaWN0Tm9kZSAqKmZhc3Rfbm9kZXMsICpub2RlOworCisgICAgLyogSW5pdGlhbGl6ZSBhIG5ldyAiZmFzdCBub2RlcyIgdGFibGUuICovCisgICAgc2l6ZSA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzLT5ka19zaXplOworICAgIGZhc3Rfbm9kZXMgPSBQeU1lbV9ORVcoX09EaWN0Tm9kZSAqLCBzaXplKTsKKyAgICBpZiAoZmFzdF9ub2RlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgZmFzdF9ub2Rlc1tpXSA9IE5VTEw7CisKKyAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLworICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CisgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X2hhc2gob2QsIF9vZGljdG5vZGVfS0VZKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CisgICAgICAgIGlmIChpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRlJFRShmYXN0X25vZGVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBmYXN0X25vZGVzW2ldID0gbm9kZTsKKyAgICB9CisKKyAgICAvKiBSZXBsYWNlIHRoZSBvbGQgZmFzdCBub2RlcyB0YWJsZS4gKi8KKyAgICBfb2RpY3RfZnJlZV9mYXN0X25vZGVzKG9kKTsKKyAgICBvZC0+b2RfZmFzdF9ub2RlcyA9IGZhc3Rfbm9kZXM7CisgICAgb2QtPm9kX3Jlc2l6ZV9zZW50aW5lbCA9IChQeV91aW50cHRyX3QpKCgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogUmV0dXJuIHRoZSBpbmRleCBpbnRvIHRoZSBoYXNoIHRhYmxlLCByZWdhcmRsZXNzIG9mIGEgdmFsaWQgbm9kZS4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citfb2RpY3RfZ2V0X2luZGV4KFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXM7CisKKyAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBrZXlzID0gKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXM7CisKKyAgICAvKiBFbnN1cmUgb2RfZmFzdF9ub2RlcyBhbmQgZGtfZW50cmllcyBhcmUgaW4gc3luYy4gKi8KKyAgICBpZiAob2QtPm9kX3Jlc2l6ZV9zZW50aW5lbCAhPSAoUHlfdWludHB0cl90KWtleXMpIHsKKyAgICAgICAgaW50IHJlc2l6ZV9yZXMgPSBfb2RpY3RfcmVzaXplKG9kKTsKKyAgICAgICAgaWYgKHJlc2l6ZV9yZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBfb2RpY3RfZ2V0X2luZGV4X2hhc2gob2QsIGtleSwgaGFzaCk7Cit9CisKKy8qIFJldHVybnMgTlVMTCBpZiB0aGVyZSB3YXMgc29tZSBlcnJvciBvciB0aGUga2V5IHdhcyBub3QgZm91bmQuICovCitzdGF0aWMgX09EaWN0Tm9kZSAqCitfb2RpY3RfZmluZF9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaW5kZXg7CisKKyAgICBpZiAoX29kaWN0X0VNUFRZKG9kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW5kZXggPSBfb2RpY3RfZ2V0X2luZGV4KG9kLCBrZXkpOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBvZC0+b2RfZmFzdF9ub2Rlc1tpbmRleF07Cit9CisKK3N0YXRpYyB2b2lkCitfb2RpY3RfYWRkX2hlYWQoUHlPRGljdE9iamVjdCAqb2QsIF9PRGljdE5vZGUgKm5vZGUpCit7CisgICAgaWYgKF9vZGljdF9GSVJTVChvZCkgPT0gTlVMTCkgeworICAgICAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBOVUxMOworICAgICAgICBfb2RpY3Rub2RlX05FWFQobm9kZSkgPSBOVUxMOworICAgICAgICBfb2RpY3RfRklSU1Qob2QpID0gbm9kZTsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gbm9kZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9vZGljdG5vZGVfUFJFVihub2RlKSA9IE5VTEw7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IF9vZGljdF9GSVJTVChvZCk7CisgICAgICAgIF9vZGljdF9GSVJTVChvZCkgPSBub2RlOworICAgICAgICBfb2RpY3Rub2RlX1BSRVYoX29kaWN0X0ZJUlNUKG9kKSkgPSBub2RlOworICAgIH0KKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworc3RhdGljIHZvaWQKK19vZGljdF9hZGRfdGFpbChQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSkKK3sKKyAgICBpZiAoX29kaWN0X0xBU1Qob2QpID09IE5VTEwpIHsKKyAgICAgICAgX29kaWN0bm9kZV9QUkVWKG5vZGUpID0gTlVMTDsKKyAgICAgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gTlVMTDsKKyAgICAgICAgX29kaWN0X0ZJUlNUKG9kKSA9IG5vZGU7CisgICAgICAgIF9vZGljdF9MQVNUKG9kKSA9IG5vZGU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBfb2RpY3RfTEFTVChvZCk7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IE5VTEw7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChfb2RpY3RfTEFTVChvZCkpID0gbm9kZTsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gbm9kZTsKKyAgICB9CisKKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworLyogYWRkcyB0aGUgbm9kZSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0ICovCitzdGF0aWMgaW50Citfb2RpY3RfYWRkX25ld19ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBfT0RpY3ROb2RlICpub2RlOworCisgICAgUHlfSU5DUkVGKGtleSk7CisgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaSA9IF9vZGljdF9nZXRfaW5kZXgob2QsIGtleSk7CisgICAgaWYgKGkgPCAwKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSBpZiAob2QtPm9kX2Zhc3Rfbm9kZXNbaV0gIT0gTlVMTCkgeworICAgICAgICAvKiBXZSBhbHJlYWR5IGhhdmUgYSBub2RlIGZvciB0aGUga2V5IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBhZGQgb25lLiAqLworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogbXVzdCBub3QgYmUgYWRkZWQgeWV0ICovCisgICAgbm9kZSA9IChfT0RpY3ROb2RlICopUHlNZW1fTUFMTE9DKHNpemVvZihfT0RpY3ROb2RlKSk7CisgICAgaWYgKG5vZGUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9vZGljdG5vZGVfS0VZKG5vZGUpID0ga2V5OworICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSA9IGhhc2g7CisgICAgX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKTsKKyAgICBvZC0+b2RfZmFzdF9ub2Rlc1tpXSA9IG5vZGU7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFB1dHRpbmcgdGhlIGRlY3JlZiBhZnRlciB0aGUgZnJlZSBjYXVzZXMgcHJvYmxlbXMuICovCisjZGVmaW5lIF9vZGljdG5vZGVfREVBTExPQyhub2RlKSBcCisgICAgZG8geyBcCisgICAgICAgIFB5X0RFQ1JFRihfb2RpY3Rub2RlX0tFWShub2RlKSk7IFwKKyAgICAgICAgUHlNZW1fRlJFRSgodm9pZCAqKW5vZGUpOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVwZWF0ZWQgY2FsbHMgb24gdGhlIHNhbWUgbm9kZSBhcmUgbm8tb3BzLiAqLworc3RhdGljIHZvaWQKK19vZGljdF9yZW1vdmVfbm9kZShQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSkKK3sKKyAgICBpZiAoX29kaWN0X0ZJUlNUKG9kKSA9PSBub2RlKQorICAgICAgICBfb2RpY3RfRklSU1Qob2QpID0gX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgIGVsc2UgaWYgKF9vZGljdG5vZGVfUFJFVihub2RlKSAhPSBOVUxMKQorICAgICAgICBfb2RpY3Rub2RlX05FWFQoX29kaWN0bm9kZV9QUkVWKG5vZGUpKSA9IF9vZGljdG5vZGVfTkVYVChub2RlKTsKKworICAgIGlmIChfb2RpY3RfTEFTVChvZCkgPT0gbm9kZSkKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gX29kaWN0bm9kZV9QUkVWKG5vZGUpOworICAgIGVsc2UgaWYgKF9vZGljdG5vZGVfTkVYVChub2RlKSAhPSBOVUxMKQorICAgICAgICBfb2RpY3Rub2RlX1BSRVYoX29kaWN0bm9kZV9ORVhUKG5vZGUpKSA9IF9vZGljdG5vZGVfUFJFVihub2RlKTsKKworICAgIF9vZGljdG5vZGVfUFJFVihub2RlKSA9IE5VTEw7CisgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gTlVMTDsKKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworc3RhdGljIF9PRGljdE5vZGUgKgorX29kaWN0X3BvcF9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBfT0RpY3ROb2RlICpub2RlLCBQeU9iamVjdCAqa2V5KQoreworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgbm9kZSA9IF9vZGljdF9maW5kX25vZGUob2QsIGtleSk7CisgICAgICAgIGlmIChub2RlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgX29kaWN0X3JlbW92ZV9ub2RlKG9kLCBub2RlKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKworLyogSWYgc29tZW9uZSBjYWxscyBQeURpY3RfRGVsSXRlbSgpIGRpcmVjdGx5IG9uIGFuIE9yZGVyZWREaWN0LCB3ZSdsbAorICAgZ2V0IGFsbCBzb3J0cyBvZiBwcm9ibGVtcyBoZXJlLiAgSW4gUHlPRGljdF9EZWxJdGVtIHdlIG1ha2Ugc3VyZSB0bworICAgY2FsbCBfb2RpY3RfY2xlYXJfbm9kZSBmaXJzdC4KKworICAgVGhpcyBtYXR0ZXJzIGluIHRoZSBjYXNlIG9mIGNvbGxpZGluZyBrZXlzLiAgU3VwcG9zZSB3ZSBhZGQgMyBrZXlzOgorICAgW0EsIEIsIENdLCB3aGVyZSB0aGUgaGFzaCBvZiBDIGNvbGxpZGVzIHdpdGggQSBhbmQgdGhlIG5leHQgcG9zc2libGUKKyAgIGluZGV4IGluIHRoZSBoYXNoIHRhYmxlIGlzIG9jY3VwaWVkIGJ5IEIuICBJZiB3ZSByZW1vdmUgQiB0aGVuIGZvciBDCisgICB0aGUgZGljdCdzIGxvb2tub2RlIGZ1bmMgd2lsbCBnaXZlIHVzIHRoZSBvbGQgaW5kZXggb2YgQiBpbnN0ZWFkIG9mCisgICB0aGUgaW5kZXggd2UgZ290IGJlZm9yZSBkZWxldGluZyBCLiAgSG93ZXZlciwgdGhlIG5vZGUgZm9yIEMgaW4KKyAgIG9kX2Zhc3Rfbm9kZXMgaXMgc3RpbGwgYXQgdGhlIG9sZCBkaWN0IGluZGV4IG9mIEMuICBUaHVzIHRvIGJlIHN1cmUKKyAgIHRoaW5ncyBkb24ndCBnZXQgb3V0IG9mIHN5bmMsIHdlIGNsZWFyIHRoZSBub2RlIGluIG9kX2Zhc3Rfbm9kZXMKKyAgICpiZWZvcmUqIGNhbGxpbmcgUHlEaWN0X0RlbEl0ZW0uCisKKyAgIFRoZSBzYW1lIG11c3QgYmUgZG9uZSBmb3IgYW55IG90aGVyIE9yZGVyZWREaWN0IG9wZXJhdGlvbnMgd2hlcmUKKyAgIHdlIG1vZGlmeSBvZF9mYXN0X25vZGVzLgorKi8KK3N0YXRpYyBpbnQKK19vZGljdF9jbGVhcl9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBfT0RpY3ROb2RlICpub2RlLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAgaWYgKF9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgLyogTGV0IGxhdGVyIGNvZGUgZGVjaWRlIGlmIHRoaXMgaXMgYSBLZXlFcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaSA9IF9vZGljdF9nZXRfaW5kZXgob2QsIGtleSk7CisgICAgaWYgKGkgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfT2NjdXJyZWQoKSA/IC0xIDogMDsKKworICAgIGlmIChub2RlID09IE5VTEwpCisgICAgICAgIG5vZGUgPSBvZC0+b2RfZmFzdF9ub2Rlc1tpXTsKKyAgICBhc3NlcnQobm9kZSA9PSBvZC0+b2RfZmFzdF9ub2Rlc1tpXSk7CisgICAgaWYgKG5vZGUgPT0gTlVMTCkgeworICAgICAgICAvKiBMZXQgbGF0ZXIgY29kZSBkZWNpZGUgaWYgdGhpcyBpcyBhIEtleUVycm9yLiAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBOb3cgY2xlYXIgdGhlIG5vZGUuCisgICAgb2QtPm9kX2Zhc3Rfbm9kZXNbaV0gPSBOVUxMOworICAgIF9vZGljdF9yZW1vdmVfbm9kZShvZCwgbm9kZSk7CisgICAgX29kaWN0bm9kZV9ERUFMTE9DKG5vZGUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX29kaWN0X2NsZWFyX25vZGVzKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIF9PRGljdE5vZGUgKm5vZGUsICpuZXh0OworCisgICAgaWYgKCFfb2RpY3RfRU1QVFkob2QpKSB7CisgICAgICAgIG5vZGUgPSBfb2RpY3RfRklSU1Qob2QpOworICAgICAgICB3aGlsZSAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBuZXh0ID0gX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgICAgICAgICAgX29kaWN0bm9kZV9ERUFMTE9DKG5vZGUpOworICAgICAgICAgICAgbm9kZSA9IG5leHQ7CisgICAgICAgIH0KKyAgICAgICAgX29kaWN0X0ZJUlNUKG9kKSA9IE5VTEw7CisgICAgICAgIF9vZGljdF9MQVNUKG9kKSA9IE5VTEw7CisgICAgfQorCisgICAgX29kaWN0X2ZyZWVfZmFzdF9ub2RlcyhvZCk7CisgICAgb2QtPm9kX2Zhc3Rfbm9kZXMgPSBOVUxMOworfQorCisvKiBUaGVyZSBpc24ndCBhbnkgbWVtb3J5IG1hbmFnZW1lbnQgb2Ygbm9kZXMgcGFzdCB0aGlzIHBvaW50LiAqLworI3VuZGVmIF9vZGljdG5vZGVfREVBTExPQworCitzdGF0aWMgaW50Citfb2RpY3Rfa2V5c19lcXVhbChQeU9EaWN0T2JqZWN0ICphLCBQeU9EaWN0T2JqZWN0ICpiKQoreworICAgIF9PRGljdE5vZGUgKm5vZGVfYSwgKm5vZGVfYjsKKworICAgIG5vZGVfYSA9IF9vZGljdF9GSVJTVChhKTsKKyAgICBub2RlX2IgPSBfb2RpY3RfRklSU1QoYik7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKG5vZGVfYSA9PSBOVUxMICYmIG5vZGVfYiA9PSBOVUxMKQorICAgICAgICAgICAgLyogc3VjY2VzczogaGl0IHRoZSBlbmQgb2YgZWFjaCBhdCB0aGUgc2FtZSB0aW1lICovCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZWxzZSBpZiAobm9kZV9hID09IE5VTEwgfHwgbm9kZV9iID09IE5VTEwpCisgICAgICAgICAgICAvKiB1bmVxdWFsIGxlbmd0aCAqLworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHJlcyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopX29kaWN0bm9kZV9LRVkobm9kZV9hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopX29kaWN0bm9kZV9LRVkobm9kZV9iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRVEpOworICAgICAgICAgICAgaWYgKHJlcyA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlcyA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAvKiBvdGhlcndpc2UgaXQgbXVzdCBtYXRjaCwgc28gbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUgKi8KKyAgICAgICAgICAgIG5vZGVfYSA9IF9vZGljdG5vZGVfTkVYVChub2RlX2EpOworICAgICAgICAgICAgbm9kZV9iID0gX29kaWN0bm9kZV9ORVhUKG5vZGVfYik7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT3JkZXJlZERpY3QgbWFwcGluZyBtZXRob2RzCisgKi8KKworLyogbXBfYXNzX3N1YnNjcmlwdDogX19zZXRpdGVtX18oKSBhbmQgX19kZWxpdGVtX18oKSAqLworCitzdGF0aWMgaW50CitvZGljdF9tcF9hc3Nfc3ViKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5T0RpY3RfRGVsSXRlbSgoUHlPYmplY3QgKilvZCwgdik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlPRGljdF9TZXRJdGVtKChQeU9iamVjdCAqKW9kLCB2LCB3KTsKK30KKworLyogdHBfYXNfbWFwcGluZyAqLworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBvZGljdF9hc19tYXBwaW5nID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbXBfbGVuZ3RoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1wX3N1YnNjcmlwdCovCisgICAgKG9iam9iamFyZ3Byb2Mpb2RpY3RfbXBfYXNzX3N1YiwgICAgLyptcF9hc3Nfc3Vic2NyaXB0Ki8KK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT3JkZXJlZERpY3QgbWV0aG9kcworICovCisKKy8qIF9fZGVsaXRlbV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2RlbGl0ZW1fX2RvY19fLCAib2QuX19kZWxpdGVtX18oeSkgPD09PiBkZWwgb2RbeV0iKTsKKworLyogX19lcV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2VxX19kb2NfXywKKyJvZC5fX2VxX18oeSkgPD09PiBvZD09eS4gIENvbXBhcmlzb24gdG8gYW5vdGhlciBPRCBpcyBvcmRlci1zZW5zaXRpdmUgXG5cCisgICAgICAgIHdoaWxlIGNvbXBhcmlzb24gdG8gYSByZWd1bGFyIG1hcHBpbmcgaXMgb3JkZXItaW5zZW5zaXRpdmUuXG5cCisgICAgICAgICIpOworCisvKiBmb3J3YXJkICovCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdF9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9lcShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgcmV0dXJuIG9kaWN0X3JpY2hjb21wYXJlKGEsIGIsIFB5X0VRKTsKK30KKworLyogX19pbml0X18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfaW5pdF9fZG9jX18sCisiSW5pdGlhbGl6ZSBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuICBUaGUgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzXG5cCisgICAgICAgIHJlZ3VsYXIgZGljdGlvbmFyaWVzLCBidXQga2V5d29yZCBhcmd1bWVudHMgYXJlIG5vdCByZWNvbW1lbmRlZCBiZWNhdXNlXG5cCisgICAgICAgIHRoZWlyIGluc2VydGlvbiBvcmRlciBpcyBhcmJpdHJhcnkuXG5cCitcblwKKyAgICAgICAgIik7CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBpbnQgb2RpY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKworLyogX19pdGVyX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfaXRlcl9fZG9jX18sICJvZC5fX2l0ZXJfXygpIDw9PT4gaXRlcihvZCkiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RfaXRlcihQeU9EaWN0T2JqZWN0ICpzZWxmKTsgIC8qIGZvcndhcmQgKi8KKworLyogX19uZV9fKCkgKi8KKworLyogTWFwcGluZy5fX25lX18oKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X25lX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfbmUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQoreworICAgIHJldHVybiBvZGljdF9yaWNoY29tcGFyZShhLCBiLCBQeV9ORSk7Cit9CisKKy8qIF9fcmVwcl9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3JlcHJfX2RvY19fLCAib2QuX19yZXByX18oKSA8PT0+IHJlcHIob2QpIik7CisKK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0X3JlcHIoUHlPRGljdE9iamVjdCAqc2VsZik7ICAvKiBmb3J3YXJkICovCisKKy8qIF9fc2V0aXRlbV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3NldGl0ZW1fX2RvY19fLCAib2QuX19zZXRpdGVtX18oaSwgeSkgPD09PiBvZFtpXT15Iik7CisKKy8qIGZyb21rZXlzKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2Zyb21rZXlzX19kb2NfXywKKyJPRC5mcm9ta2V5cyhTWywgdl0pIC0+IE5ldyBvcmRlcmVkIGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gUy5cblwKKyAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHZhbHVlIGRlZmF1bHRzIHRvIE5vbmUuXG5cCitcblwKKyAgICAgICAgIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9mcm9ta2V5cyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgInZhbHVlIiwgMH07CisgICAgUHlPYmplY3QgKnNlcTsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBQeV9Ob25lOworCisgICAgLyogYm90aCBib3Jyb3dlZCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98Tzpmcm9ta2V5cyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VxLCAmdmFsdWUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5RGljdF9Gcm9tS2V5cyhjbHMsIHNlcSwgdmFsdWUpOworfQorCisvKiBfX3NpemVvZl9fKCkgKi8KKworLyogT3JkZXJlZERpY3QuX19zaXplb2ZfXygpIGRvZXMgbm90IGhhdmUgYSBkb2NzdHJpbmcuICovCitQeURvY19TVFJWQVIob2RpY3Rfc2l6ZW9mX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3Rfc2l6ZW9mKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIFB5T2JqZWN0ICpweWxvbmc7CisgICAgUHlfc3NpemVfdCByZXMsIHRlbXA7CisKKyAgICBweWxvbmcgPSBfUHlEaWN0X1NpemVPZigoUHlEaWN0T2JqZWN0ICopb2QpOworICAgIGlmIChweWxvbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlMb25nX0FzU3NpemVfdChweWxvbmcpOworICAgIFB5X0RFQ1JFRihweWxvbmcpOworICAgIGlmIChyZXMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXMgKz0gc2l6ZW9mKFB5T0RpY3RPYmplY3QpIC0gc2l6ZW9mKFB5RGljdE9iamVjdCk7CisKKyAgICAvKiBpbnN0YW5jZSBkaWN0ICovCisgICAgcHlsb25nID0gX1B5RGljdF9TaXplT2YoKFB5RGljdE9iamVjdCAqKW9kLT5vZF9pbnN0X2RpY3QpOworICAgIGlmIChweWxvbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdGVtcCA9IFB5TG9uZ19Bc1NzaXplX3QocHlsb25nKTsKKyAgICBQeV9ERUNSRUYocHlsb25nKTsKKyAgICBpZiAodGVtcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgKz0gdGVtcDsKKworICAgIHJlcyArPSBzaXplb2YoX09EaWN0Tm9kZSkgKiBfb2RpY3RfRkFTVF9TSVpFKG9kKTsgIC8qIG9kX2Zhc3Rfbm9kZXMgKi8KKyAgICBpZiAoIV9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgcmVzICs9IHNpemVvZihfT0RpY3ROb2RlKSAqIFB5T0RpY3RfU0laRShvZCk7ICAvKiBsaW5rZWQtbGlzdCAqLworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7Cit9CisKKy8qIF9fcmVkdWNlX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfcmVkdWNlX19kb2NfXywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmciKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3JlZHVjZShyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKKyAgICBQeU9iamVjdCAqdmFycyA9IE5VTEwsICpucyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqY2xzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlbXNfaXRlciA9IE5VTEwsICppdGVtcyA9IE5VTEwsICphcmdzID0gTlVMTDsKKworICAgIC8qIGNhcHR1cmUgYW55IGluc3RhbmNlIHN0YXRlICovCisgICAgdmFycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopb2QsICZQeUlkX19fZGljdF9fKTsKKyAgICBpZiAodmFycyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICplbXB0eSwgKm9kX3ZhcnMsICppdGVyYXRvciwgKmtleTsKKyAgICAgICAgUHlfc3NpemVfdCBuc19sZW47CisKKyAgICAgICAgLyogb2QuX19kaWN0X18gaXNuJ3QgbmVjZXNzYXJpbHkgYSBkaWN0Li4uICovCisgICAgICAgIG5zID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKil2YXJzLCAiY29weSIsIE5VTEwpOworICAgICAgICBpZiAobnMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgZW1wdHkgPSBQeU9EaWN0X05ldygpOworICAgICAgICBpZiAoZW1wdHkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgb2RfdmFycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZW1wdHksICZQeUlkX19fZGljdF9fKTsKKyAgICAgICAgUHlfREVDUkVGKGVtcHR5KTsKKyAgICAgICAgaWYgKG9kX3ZhcnMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKG9kX3ZhcnMpOworICAgICAgICBQeV9ERUNSRUYob2RfdmFycyk7CisgICAgICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworCisgICAgICAgIHdoaWxlICggKGtleSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkgKSB7CisgICAgICAgICAgICBpZiAoUHlNYXBwaW5nX0hhc0tleShucywga2V5KSAmJiBQeU1hcHBpbmdfRGVsSXRlbShucywga2V5KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICBuc19sZW4gPSBQeU9iamVjdF9MZW5ndGgobnMpOworICAgICAgICBpZiAobnNfbGVuID09IC0xKQorICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICBpZiAoIW5zX2xlbikgeworICAgICAgICAgICAgLyogbm90aGluZyBub3ZlbCB0byBwaWNrbGUgaW4gb2QuX19kaWN0X18gKi8KKyAgICAgICAgICAgIFB5X0NMRUFSKG5zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGJ1aWxkIHRoZSByZXN1bHQgKi8KKyAgICBjbHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKW9kLCAmUHlJZF9fX2NsYXNzX18pOworICAgIGlmIChjbHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilvZCwgIml0ZW1zIiwgTlVMTCk7CisgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGl0ZW1zX2l0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKKyAgICBpZiAoaXRlbXNfaXRlciA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soNSwgY2xzLCBhcmdzLCBucyA/IG5zIDogUHlfTm9uZSwgUHlfTm9uZSwgaXRlbXNfaXRlcik7CisKK0RvbmU6CisgICAgUHlfWERFQ1JFRih2YXJzKTsKKyAgICBQeV9YREVDUkVGKG5zKTsKKyAgICBQeV9YREVDUkVGKGNscyk7CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICBQeV9YREVDUkVGKGl0ZW1zKTsKKyAgICBQeV9YREVDUkVGKGl0ZW1zX2l0ZXIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogc2V0ZGVmYXVsdCgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9zZXRkZWZhdWx0X19kb2NfXywKKyAgICAgICAgIm9kLnNldGRlZmF1bHQoa1ssZF0pIC0+IG9kLmdldChrLGQpLCBhbHNvIHNldCBvZFtrXT1kIGlmIGsgbm90IGluIG9kIik7CisKKy8qIFNraXBzIF9fbWlzc2luZ19fKCkgY2FsbHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3Rfc2V0ZGVmYXVsdChyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKKworICAgIC8qIGJvdGggYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86c2V0ZGVmYXVsdCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmZmFpbG9iaikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPRGljdF9HZXRJdGVtV2l0aEVycm9yKG9kLCBrZXkpOyAgLyogYm9ycm93ZWQgKi8KKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGFzc2VydChfb2RpY3RfZmluZF9ub2RlKG9kLCBrZXkpID09IE5VTEwpOworICAgICAgICAgICAgaWYgKFB5T0RpY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZCwga2V5LCBmYWlsb2JqKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFpbG9iajsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmFpbG9iaik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGV4aXN0cyA9IFB5U2VxdWVuY2VfQ29udGFpbnMoKFB5T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIGlmIChleGlzdHMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChleGlzdHMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlPYmplY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZCwga2V5LCBmYWlsb2JqKSA+PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBmYWlsb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogcG9wKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3BvcF9fZG9jX18sCisib2QucG9wKGtbLGRdKSAtPiB2LCByZW1vdmUgc3BlY2lmaWVkIGtleSBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG5cCisgICAgICAgIHZhbHVlLiAgSWYga2V5IGlzIG5vdCBmb3VuZCwgZCBpcyByZXR1cm5lZCBpZiBnaXZlbiwgb3RoZXJ3aXNlIEtleUVycm9yXG5cCisgICAgICAgIGlzIHJhaXNlZC5cblwKK1xuXAorICAgICAgICAiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogX29kaWN0X3BvcGtleShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworLyogU2tpcHMgX19taXNzaW5nX18oKSBjYWxscy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9wb3AoUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJkZWZhdWx0IiwgMH07CisgICAgUHlPYmplY3QgKmtleSwgKmZhaWxvYmogPSBOVUxMOworCisgICAgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86cG9wIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXksICZmYWlsb2JqKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gX29kaWN0X3BvcGtleShvZCwga2V5LCBmYWlsb2JqKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19vZGljdF9wb3BrZXkoUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZmFpbG9iaikKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisKKyAgICAvKiBQb3AgdGhlIG5vZGUgZmlyc3QgdG8gYXZvaWQgYSBwb3NzaWJsZSBkaWN0IHJlc2l6ZSAoZHVlIHRvCisgICAgICAgZXZhbCBsb29wIHJlZW50cmFuY3kpIGFuZCBjb21wbGljYXRpb25zIGR1ZSB0byBoYXNoIGNvbGxpc2lvbgorICAgICAgIHJlc29sdXRpb24uICovCisgICAgbm9kZSA9IF9vZGljdF9maW5kX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwga2V5KTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgcmVzID0gX29kaWN0X2NsZWFyX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwgbm9kZSwga2V5KTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTm93IGRlbGV0ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGljdC4gKi8KKyAgICBpZiAoUHlPRGljdF9DaGVja0V4YWN0KG9kKSkgeworICAgICAgICBpZiAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBjb3VsZCBkbyBQeURpY3RfR2V0SXRlbSgpIGFuZCBQeURpY3RfRGVsSXRlbSgpIGRpcmVjdGx5Li4uICovCisgICAgICAgICAgICB2YWx1ZSA9IF9QeURpY3RfUG9wKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBmYWlsb2JqKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGV4aXN0cyA9IFB5U2VxdWVuY2VfQ29udGFpbnMob2QsIGtleSk7CisgICAgICAgIGlmIChleGlzdHMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChleGlzdHMpIHsKKyAgICAgICAgICAgIHZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShvZCwga2V5KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0RlbEl0ZW0ob2QsIGtleSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfQ0xFQVIodmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEFwcGx5IHRoZSBmYWxsYmFjayB2YWx1ZSwgaWYgbmVjZXNzYXJ5LiAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChmYWlsb2JqKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZhaWxvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZmFpbG9iaik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy8qIHBvcGl0ZW0oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfcG9waXRlbV9fZG9jX18sCisib2QucG9waXRlbSgpIC0+IChrLCB2KSwgcmV0dXJuIGFuZCByZW1vdmUgYSAoa2V5LCB2YWx1ZSkgcGFpci5cblwKKyAgICAgICAgUGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgbGFzdCBpcyB0cnVlIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuXG5cCitcblwKKyAgICAgICAgIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9wb3BpdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJsYXN0IiwgMH07CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqaXRlbSA9IE5VTEwsICpsYXN0ID0gTlVMTDsKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIGludCBwb3MgPSAtMTsKKworICAgIGlmIChfb2RpY3RfRU1QVFkoKFB5T0RpY3RPYmplY3QgKilvZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZGljdGlvbmFyeSBpcyBlbXB0eSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBwdWxsIHRoZSBpdGVtICovCisKKyAgICAvKiBib3Jyb3dlZCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnBvcGl0ZW0iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxhc3QpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChsYXN0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IGlzX3RydWU7CisgICAgICAgIGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUobGFzdCk7CisgICAgICAgIGlmIChpc190cnVlID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHBvcyA9IGlzX3RydWUgPyAtMSA6IDA7CisgICAgfQorICAgIGlmIChwb3MgPT0gMCkKKyAgICAgICAgbm9kZSA9IF9vZGljdF9GSVJTVCgoUHlPRGljdE9iamVjdCAqKW9kKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUgPSBfb2RpY3RfTEFTVCgoUHlPRGljdE9iamVjdCAqKW9kKTsKKworICAgIGtleSA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgIFB5X0lOQ1JFRihrZXkpOworICAgIHZhbHVlID0gX29kaWN0X3BvcGtleShvZCwga2V5LCBOVUxMKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaXRlbSA9IFB5VHVwbGVfUGFjaygyLCBrZXksIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiBpdGVtOworfQorCisvKiBrZXlzKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcua2V5cygpIGRvZXMgbm90IGhhdmUgYSBkb2NzdHJpbmcuICovCitQeURvY19TVFJWQVIob2RpY3Rfa2V5c19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RrZXlzX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiB2YWx1ZXMoKSAqLworCisvKiBNdXRhYmxlTWFwcGluZy52YWx1ZXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3ZhbHVlc19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpvZCk7ICAvKiBmb3J3YXJkICovCisKKy8qIGl0ZW1zKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcuaXRlbXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X2l0ZW1zX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdGl0ZW1zX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiB1cGRhdGUoKSAqLworCisvKiBNdXRhYmxlTWFwcGluZy51cGRhdGUoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3VwZGF0ZV9fZG9jX18sICIiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogbXV0YWJsZW1hcHBpbmdfdXBkYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworCisjZGVmaW5lIG9kaWN0X3VwZGF0ZSBtdXRhYmxlbWFwcGluZ191cGRhdGUKKworLyogY2xlYXIoKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfY2xlYXJfX2RvY19fLAorICAgICAgICAgICAgICJvZC5jbGVhcigpIC0+IE5vbmUuICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gb2QuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9jbGVhcihyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBQeURpY3RfQ2xlYXIoKFB5T2JqZWN0ICopb2QpOworICAgIF9vZGljdF9jbGVhcl9ub2RlcyhvZCk7CisgICAgX29kaWN0X0ZJUlNUKG9kKSA9IE5VTEw7CisgICAgX29kaWN0X0xBU1Qob2QpID0gTlVMTDsKKyAgICBpZiAoX29kaWN0X3Jlc2l6ZShvZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogY29weSgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9jb3B5X19kb2NfXywgIm9kLmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBvZCIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfY29weShyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIFB5T2JqZWN0ICpvZF9jb3B5OworCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpCisgICAgICAgIG9kX2NvcHkgPSBQeU9EaWN0X05ldygpOworICAgIGVsc2UKKyAgICAgICAgb2RfY29weSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopUHlfVFlQRShvZCksIE5VTEwpOworICAgIGlmIChvZF9jb3B5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpIHsKKyAgICAgICAgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBfb2RpY3Rub2RlX0tFWShub2RlKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IF9vZGljdG5vZGVfVkFMVUUobm9kZSwgb2QpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoUHlPRGljdF9TZXRJdGVtKChQeU9iamVjdCAqKW9kX2NvcHksIGtleSwgdmFsdWUpICE9IDApCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfb2RpY3RfRk9SRUFDSChvZCwgbm9kZSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0oKFB5T2JqZWN0ICopb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfS0VZKG5vZGUpKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2RfY29weSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9LRVkobm9kZSksIHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvZF9jb3B5OworCitmYWlsOgorICAgIFB5X0RFQ1JFRihvZF9jb3B5KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogX19yZXZlcnNlZF9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3JldmVyc2VkX19kb2NfXywgIm9kLl9fcmV2ZXJzZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpIik7CisKKyNkZWZpbmUgX29kaWN0X0lURVJfUkVWRVJTRUQgMQorI2RlZmluZSBfb2RpY3RfSVRFUl9LRVlTIDIKKyNkZWZpbmUgX29kaWN0X0lURVJfVkFMVUVTIDQKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RpdGVyX25ldyhQeU9EaWN0T2JqZWN0ICosIGludCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9yZXZlcnNlZChQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldyhvZCwgX29kaWN0X0lURVJfS0VZU3xfb2RpY3RfSVRFUl9SRVZFUlNFRCk7Cit9CisKKy8qIG1vdmVfdG9fZW5kKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X21vdmVfdG9fZW5kX19kb2NfXywKKyJNb3ZlIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gdGhlIGVuZCAob3IgYmVnaW5uaW5nIGlmIGxhc3Q9PUZhbHNlKS5cblwKK1xuXAorICAgICAgICBSYWlzZXMgS2V5RXJyb3IgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QuXG5cCisgICAgICAgIFdoZW4gbGFzdD1UcnVlLCBhY3RzIGxpa2UgYSBmYXN0IHZlcnNpb24gb2Ygc2VsZltrZXldPXNlbGYucG9wKGtleSkuXG5cCitcblwKKyAgICAgICAgIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9tb3ZlX3RvX2VuZChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAibGFzdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICpsYXN0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IC0xOworCisgICAgLyogYm90aCBib3Jyb3dlZCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98Tzptb3ZlX3RvX2VuZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmbGFzdCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChfb2RpY3RfRU1QVFkob2QpKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChsYXN0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IGlzX3RydWU7CisgICAgICAgIGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUobGFzdCk7CisgICAgICAgIGlmIChpc190cnVlID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHBvcyA9IGlzX3RydWUgPyAtMSA6IDA7CisgICAgfQorICAgIGlmIChwb3MgPT0gMCkgeworICAgICAgICAvKiBPbmx5IG1vdmUgaWYgbm90IGFscmVhZHkgdGhlIGZpcnN0IG9uZS4gKi8KKyAgICAgICAgUHlPYmplY3QgKmZpcnN0X2tleSA9IF9vZGljdG5vZGVfS0VZKF9vZGljdF9GSVJTVChvZCkpOworICAgICAgICBpbnQgbm90X2VxdWFsID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGtleSwgZmlyc3Rfa2V5LCBQeV9ORSk7CisgICAgICAgIGlmIChub3RfZXF1YWwgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG5vdF9lcXVhbCkgeworICAgICAgICAgICAgX09EaWN0Tm9kZSAqbm9kZSA9IF9vZGljdF9wb3Bfbm9kZShvZCwgTlVMTCwga2V5KTsKKyAgICAgICAgICAgIGlmIChub2RlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBfb2RpY3RfYWRkX2hlYWQob2QsIG5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAocG9zID09IC0xKSB7CisgICAgICAgIC8qIE9ubHkgbW92ZSBpZiBub3QgYWxyZWFkeSB0aGUgbGFzdCBvbmUuICovCisgICAgICAgIFB5T2JqZWN0ICpsYXN0X2tleSA9IF9vZGljdG5vZGVfS0VZKF9vZGljdF9MQVNUKG9kKSk7CisgICAgICAgIGludCBub3RfZXF1YWwgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woa2V5LCBsYXN0X2tleSwgUHlfTkUpOworICAgICAgICBpZiAobm90X2VxdWFsID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChub3RfZXF1YWwpIHsKKyAgICAgICAgICAgIF9PRGljdE5vZGUgKm5vZGUgPSBfb2RpY3RfcG9wX25vZGUob2QsIE5VTEwsIGtleSk7CisgICAgICAgICAgICBpZiAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKKy8qIHRwX21ldGhvZHMgKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0X21ldGhvZHNbXSA9IHsKKworICAgIC8qIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4gYWxpZ24gZG9jc3RyaW5ncyB3aXRoCisgICAgICogY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgKi8KKyAgICB7Il9fZGVsaXRlbV9fIiwgICAgIChQeUNGdW5jdGlvbilvZGljdF9tcF9hc3Nfc3ViLCAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2RlbGl0ZW1fX2RvY19ffSwKKyAgICB7Il9fZXFfXyIsICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9lcSwgICAgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2VxX19kb2NfX30sCisgICAgeyJfX2luaXRfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfaW5pdCwgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9pbml0X19kb2NfX30sCisgICAgeyJfX2l0ZXJfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfaXRlciwgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9pdGVyX19kb2NfX30sCisgICAgeyJfX25lX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfbmUsICAgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9uZV9fZG9jX199LAorICAgIHsiX19yZXByX18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3JlcHIsICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfcmVwcl9fZG9jX199LAorICAgIHsiX19zZXRpdGVtX18iLCAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X21wX2Fzc19zdWIsICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3Rfc2V0aXRlbV9fZG9jX199LAorICAgIHsiZnJvbWtleXMiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2Zyb21rZXlzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTIHwgTUVUSF9DTEFTUywgb2RpY3RfZnJvbWtleXNfX2RvY19ffSwKKworICAgIC8qIG92ZXJyaWRkZW4gZGljdCBtZXRob2RzICovCisgICAgeyJfX3NpemVvZl9fIiwgICAgICAoUHlDRnVuY3Rpb24pb2RpY3Rfc2l6ZW9mLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9zaXplb2ZfX2RvY19ffSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilvZGljdF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3JlZHVjZV9fZG9jX199LAorICAgIHsic2V0ZGVmYXVsdCIsICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3NldGRlZmF1bHQsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIG9kaWN0X3NldGRlZmF1bHRfX2RvY19ffSwKKyAgICB7InBvcCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9wb3AsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIG9kaWN0X3BvcF9fZG9jX199LAorICAgIHsicG9waXRlbSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3BvcGl0ZW0sCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIG9kaWN0X3BvcGl0ZW1fX2RvY19ffSwKKyAgICB7ImtleXMiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdGtleXNfbmV3LCAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2tleXNfX2RvY19ffSwKKyAgICB7InZhbHVlcyIsICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdHZhbHVlc19uZXcsICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3ZhbHVlc19fZG9jX199LAorICAgIHsiaXRlbXMiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0aXRlbXNfbmV3LCAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfaXRlbXNfX2RvY19ffSwKKyAgICB7InVwZGF0ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF91cGRhdGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgIG9kaWN0X3VwZGF0ZV9fZG9jX199LAorICAgIHsiY2xlYXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2NsZWFyLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfY2xlYXJfX2RvY19ffSwKKyAgICB7ImNvcHkiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9jb3B5LCAgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2NvcHlfX2RvY19ffSwKKworICAgIC8qIG5ldyBtZXRob2RzICovCisgICAgeyJfX3JldmVyc2VkX18iLCAgICAoUHlDRnVuY3Rpb24pb2RpY3RfcmV2ZXJzZWQsICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9yZXZlcnNlZF9fZG9jX199LAorICAgIHsibW92ZV90b19lbmQiLCAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X21vdmVfdG9fZW5kLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9tb3ZlX3RvX2VuZF9fZG9jX199LAorCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9yZGVyZWREaWN0IG1lbWJlcnMKKyAqLworCisvKiB0cF9tZW1iZXJzICovCisKK3N0YXRpYyBQeU1lbWJlckRlZiBvZGljdF9tZW1iZXJzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF9pbnN0X2RpY3QpLCBSRUFET05MWX0sCisgICAgezB9Cit9OworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9yZGVyZWREaWN0IHR5cGUgc2xvdCBtZXRob2RzCisgKi8KKworLyogdHBfZGVhbGxvYyAqLworCitzdGF0aWMgdm9pZAorb2RpY3RfZGVhbGxvYyhQeU9EaWN0T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihzZWxmKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPm9kX2luc3RfZGljdCk7CisgICAgaWYgKHNlbGYtPm9kX3dlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopc2VsZik7CisKKyAgICBfb2RpY3RfY2xlYXJfbm9kZXMoc2VsZik7CisgICAgUHlfVFJBU0hDQU5fU0FGRV9FTkQoc2VsZik7CisKKyAgICAvKiBtdXN0IGJlIGxhc3QgKi8KKyAgICBQeURpY3RfVHlwZS50cF9kZWFsbG9jKChQeU9iamVjdCAqKXNlbGYpOworfTsKKworLyogdHBfcmVwciAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcmVwcihQeU9EaWN0T2JqZWN0ICpzZWxmKQoreworICAgIGludCBpOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdHN0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisgICAgUHlPYmplY3QgKnBpZWNlcyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqY2xzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2xhc3NuYW1lID0gTlVMTCwgKmZvcm1hdCA9IE5VTEwsICphcmdzID0gTlVMTDsKKworICAgIGkgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0ICopc2VsZik7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgICByZXR1cm4gaSA+IDAgPyBQeVVuaWNvZGVfRnJvbVN0cmluZygiLi4uIikgOiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9EaWN0X1NJWkUoc2VsZikgPT0gMCkgeworICAgICAgICAvKiAiT3JkZXJlZERpY3QoKSIgKi8KKyAgICAgICAgZ290byBGaW5pc2g7CisgICAgfQorCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBfT0RpY3ROb2RlICpub2RlOworICAgICAgICBwaWVjZXMgPSBQeUxpc3RfTmV3KFB5T0RpY3RfU0laRShzZWxmKSk7CisgICAgICAgIGlmIChwaWVjZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICBfb2RpY3RfRk9SRUFDSChzZWxmLCBub2RlKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcGFpcjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBfb2RpY3Rub2RlX0tFWShub2RlKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IF9vZGljdG5vZGVfVkFMVUUobm9kZSwgc2VsZik7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhaXIgPSBQeVR1cGxlX1BhY2soMiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAocGFpciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHBpZWNlcywgKytjb3VudCwgcGFpcik7ICAvKiBzdGVhbHMgcmVmZXJlbmNlICovCisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgIml0ZW1zIiwgTlVMTCk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICBwaWVjZXMgPSBQeVNlcXVlbmNlX0xpc3QoaXRlbXMpOworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICBpZihwaWVjZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICB9CisKK0ZpbmlzaDoKKyAgICBjbHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX19fY2xhc3NfXyk7CisgICAgaWYgKGNscyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisgICAgY2xhc3NuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmFtZV9fKTsKKyAgICBpZiAoY2xhc3NuYW1lID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGlmIChwaWVjZXMgPT0gTlVMTCkgeworICAgICAgICBmb3JtYXRzdHIgPSAiJXMoKSI7CisgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgY2xhc3NuYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvcm1hdHN0ciA9ICIlcyglcikiOworICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIGNsYXNzbmFtZSwgcGllY2VzKTsKKyAgICB9CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoZm9ybWF0c3RyKTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKK0RvbmU6CisgICAgUHlfWERFQ1JFRihwaWVjZXMpOworICAgIFB5X1hERUNSRUYoY2xzKTsKKyAgICBQeV9YREVDUkVGKGNsYXNzbmFtZSk7CisgICAgUHlfWERFQ1JFRihmb3JtYXQpOworICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKXNlbGYpOworICAgIHJldHVybiByZXN1bHQ7Cit9OworCisvKiB0cF9kb2MgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2RvYywKKyAgICAgICAgIkRpY3Rpb25hcnkgdGhhdCByZW1lbWJlcnMgaW5zZXJ0aW9uIG9yZGVyIik7CisKKy8qIHRwX3RyYXZlcnNlICovCisKK3N0YXRpYyBpbnQKK29kaWN0X3RyYXZlcnNlKFB5T0RpY3RPYmplY3QgKm9kLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvZC0+b2RfaW5zdF9kaWN0KTsKKyAgICBQeV9WSVNJVChvZC0+b2Rfd2Vha3JlZmxpc3QpOworICAgIHJldHVybiBQeURpY3RfVHlwZS50cF90cmF2ZXJzZSgoUHlPYmplY3QgKilvZCwgdmlzaXQsIGFyZyk7Cit9CisKKy8qIHRwX2NsZWFyICovCisKK3N0YXRpYyBpbnQKK29kaWN0X3RwX2NsZWFyKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfQ0xFQVIob2QtPm9kX2luc3RfZGljdCk7CisgICAgUHlfQ0xFQVIob2QtPm9kX3dlYWtyZWZsaXN0KTsKKyAgICByZXMgPSBvZGljdF9jbGVhcihvZCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIHRwX3JpY2hjb21wYXJlICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK3sKKyAgICBpZiAoIVB5T0RpY3RfQ2hlY2sodikgfHwgIVB5RGljdF9DaGVjayh3KSkgeworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgfQorCisgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXMsICpjbXA7CisgICAgICAgIGludCBlcTsKKworICAgICAgICBjbXAgPSBQeURpY3RfVHlwZS50cF9yaWNoY29tcGFyZSh2LCB3LCBvcCk7CisgICAgICAgIGlmIChjbXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5T0RpY3RfQ2hlY2sodykpCisgICAgICAgICAgICByZXR1cm4gY21wOworICAgICAgICBpZiAob3AgPT0gUHlfRVEgJiYgY21wID09IFB5X0ZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgaWYgKG9wID09IFB5X05FICYmIGNtcCA9PSBQeV9UcnVlKQorICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgUHlfREVDUkVGKGNtcCk7CisKKyAgICAgICAgLyogVHJ5IGNvbXBhcmluZyBvZGljdCBrZXlzLiAqLworICAgICAgICBlcSA9IF9vZGljdF9rZXlzX2VxdWFsKChQeU9EaWN0T2JqZWN0ICopdiwgKFB5T0RpY3RPYmplY3QgKil3KTsKKyAgICAgICAgaWYgKGVxIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHJlcyA9IChlcSA9PSAob3AgPT0gUHlfRVEpKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KK307CisKKy8qIHRwX2l0ZXIgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X2l0ZXIoUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcob2QsIF9vZGljdF9JVEVSX0tFWVMpOworfTsKKworLyogdHBfaW5pdCAqLworCitzdGF0aWMgaW50CitvZGljdF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9zc2l6ZV90IGxlbiA9IFB5T2JqZWN0X0xlbmd0aChhcmdzKTsKKworICAgIGlmIChsZW4gPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobGVuID4gMSkgeworICAgICAgICBjaGFyICptc2cgPSAiZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkIjsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgbXNnLCBsZW4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogX19pbml0X18oKSB0cmlnZ2VyaW5nIHVwZGF0ZSgpIGlzIGp1c3QgdGhlIHdheSB0aGluZ3MgYXJlISAqLworICAgIHJlcyA9IG9kaWN0X3VwZGF0ZShzZWxmLCBhcmdzLCBrd2RzKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCisvKiB0cF9uZXcgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBQeU9EaWN0T2JqZWN0ICpvZDsKKworICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBvZCA9IChQeU9EaWN0T2JqZWN0ICopUHlEaWN0X1R5cGUudHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmIChvZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2QtPm9kX2luc3RfZGljdCA9IGRpY3Q7CisgICAgLyogdHlwZSBjb25zdHJ1Y3RvciBmaWxscyB0aGUgbWVtb3J5IHdpdGggemVyb3MgKHNlZQorICAgICAgIFB5VHlwZV9HZW5lcmljQWxsb2MoKSksIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHRoZW0gdG8gemVybyBhZ2FpbiAqLworICAgIGlmIChfb2RpY3RfcmVzaXplKG9kKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG9kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCopb2Q7Cit9CisKKy8qIFB5T0RpY3RfVHlwZSAqLworCitQeVR5cGVPYmplY3QgUHlPRGljdF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiwgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5T0RpY3RPYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3Ipb2RpY3RfZGVhbGxvYywgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpb2RpY3RfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmb2RpY3RfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgb2RpY3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW9kaWN0X3RyYXZlcnNlLCAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpb2RpY3RfdHBfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChyaWNoY21wZnVuYylvZGljdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF93ZWFrcmVmbGlzdCksICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKW9kaWN0X2l0ZXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG9kaWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG9kaWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgJlB5RGljdF9UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX2luc3RfZGljdCksICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylvZGljdF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAobmV3ZnVuYylvZGljdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiB0aGUgcHVibGljIE9yZGVyZWREaWN0IEFQSQorICovCisKK1B5T2JqZWN0ICoKK1B5T0RpY3RfTmV3KHZvaWQpIHsKKyAgICByZXR1cm4gb2RpY3RfbmV3KCZQeU9EaWN0X1R5cGUsIE5VTEwsIE5VTEwpOworfTsKKworaW50CitQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpIHsKKyAgICBpbnQgcmVzID0gUHlEaWN0X1NldEl0ZW0ob2QsIGtleSwgdmFsdWUpOworICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICByZXMgPSBfb2RpY3RfYWRkX25ld19ub2RlKChQeU9EaWN0T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIC8qIFhYWCBSZXZlcnQgc2V0dGluZyB0aGUgdmFsdWUgb24gdGhlIGRpY3Q/ICovCisgICAgfQorICAgIHJldHVybiByZXM7Cit9OworCitpbnQKK1B5T0RpY3RfRGVsSXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpIHsKKyAgICBpbnQgcmVzID0gX29kaWN0X2NsZWFyX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwgTlVMTCwga2V5KTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeURpY3RfRGVsSXRlbShvZCwga2V5KTsKK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIE9yZGVyZWREaWN0IHZpZXdzIChrZXlzL3ZhbHVlcy9pdGVtcykKKyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBraW5kOworICAgIFB5T0RpY3RPYmplY3QgKmRpX29kaWN0OworICAgIFB5X3NzaXplX3QgZGlfc2l6ZTsKKyAgICBzaXplX3QgZGlfc3RhdGU7CisgICAgUHlPYmplY3QgKmRpX2N1cnJlbnQ7CisgICAgUHlPYmplY3QgKmRpX3Jlc3VsdDsgLyogcmV1c2FibGUgcmVzdWx0IHR1cGxlIGZvciBpdGVyaXRlbXMgKi8KK30gb2RpY3RpdGVyb2JqZWN0OworCitzdGF0aWMgdm9pZAorb2RpY3RpdGVyX2RlYWxsb2Mob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkaSk7CisgICAgUHlfWERFQ1JFRihkaS0+ZGlfb2RpY3QpOworICAgIFB5X1hERUNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIGlmIChkaS0+a2luZCAmIChfb2RpY3RfSVRFUl9LRVlTIHwgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICBQeV9ERUNSRUYoZGktPmRpX3Jlc3VsdCk7CisgICAgfQorICAgIFB5T2JqZWN0X0dDX0RlbChkaSk7Cit9CisKK3N0YXRpYyBpbnQKK29kaWN0aXRlcl90cmF2ZXJzZShvZGljdGl0ZXJvYmplY3QgKmRpLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChkaS0+ZGlfb2RpY3QpOworICAgIFB5X1ZJU0lUKGRpLT5kaV9jdXJyZW50KTsgIC8qIEEga2V5IGNvdWxkIGJlIGFueSB0eXBlLCBub3QganVzdCBzdHIuICovCisgICAgUHlfVklTSVQoZGktPmRpX3Jlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEluIG9yZGVyIHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25zIGR1cmluZyBpdGVyYXRpb24sIHdlIHRyYWNrCisgKiB0aGUgY3VycmVudCBrZXkgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBub2RlLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9uZXh0a2V5KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKmtleSA9IE5VTEw7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBpbnQgcmV2ZXJzZWQgPSBkaS0+a2luZCAmIF9vZGljdF9JVEVSX1JFVkVSU0VEOworCisgICAgaWYgKGRpLT5kaV9vZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZGktPmRpX2N1cnJlbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOyAgLyogV2UncmUgYWxyZWFkeSBkb25lLiAqLworCisgICAgLyogQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNoYW5nZXMuICovCisgICAgaWYgKGRpLT5kaV9vZGljdC0+b2Rfc3RhdGUgIT0gZGktPmRpX3N0YXRlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZERpY3QgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgaWYgKGRpLT5kaV9zaXplICE9IFB5T0RpY3RfU0laRShkaS0+ZGlfb2RpY3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZERpY3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgZGktPmRpX3NpemUgPSAtMTsgLyogTWFrZSB0aGlzIHN0YXRlIHN0aWNreSAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIGtleS4gKi8KKyAgICBub2RlID0gX29kaWN0X2ZpbmRfbm9kZShkaS0+ZGlfb2RpY3QsIGRpLT5kaV9jdXJyZW50KTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIE11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQuICovCisgICAgICAgIFB5X0NMRUFSKGRpLT5kaV9jdXJyZW50KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IGRpLT5kaV9jdXJyZW50OworCisgICAgLyogQWR2YW5jZSB0byB0aGUgbmV4dCBrZXkuICovCisgICAgbm9kZSA9IHJldmVyc2VkID8gX29kaWN0bm9kZV9QUkVWKG5vZGUpIDogX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgLyogUmVhY2hlZCB0aGUgZW5kLiAqLworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgICAgICBQeV9JTkNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIH0KKworICAgIHJldHVybiBrZXk7CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX29kaWN0KTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVyX2l0ZXJuZXh0KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKnZhbHVlOworICAgIFB5T2JqZWN0ICprZXkgPSBvZGljdGl0ZXJfbmV4dGtleShkaSk7ICAvKiBuZXcgcmVmZXJlbmNlICovCisKKyAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogSGFuZGxlIHRoZSBrZXlzIGNhc2UuICovCisgICAgaWYgKCEgKGRpLT5raW5kICYgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KKworICAgIC8qIEhhbmRsZSB0aGUgaXRlbXMgY2FzZS4gKi8KKyAgICBpZiAoZGktPmtpbmQgJiBfb2RpY3RfSVRFUl9LRVlTKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBkaS0+ZGlfcmVzdWx0OworCisgICAgICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKworICAgICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgeworICAgICAgICAgICAgLyogbm90IGluIHVzZSBzbyB3ZSBjYW4gcmV1c2UgaXQKKyAgICAgICAgICAgICAqICh0aGUgY29tbW9uIGNhc2UgZHVyaW5nIGl0ZXJhdGlvbikgKi8KKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAwKSk7ICAvKiBib3Jyb3dlZCAqLworICAgICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAxKSk7ICAvKiBib3Jyb3dlZCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIC8qIEhhbmRsZSB0aGUgdmFsdWVzIGNhc2UuICovCisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX2N1cnJlbnQpOworICAgIFB5X0NMRUFSKGRpLT5kaV9vZGljdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIE5vIG5lZWQgZm9yIHRwX2NsZWFyIGJlY2F1c2Ugb2RpY3RpdGVyb2JqZWN0IGlzIG5vdCBtdXRhYmxlLiAqLworCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmciKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9yZWR1Y2Uob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdCwgKml0ZXI7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogaXRlcmF0ZSB0aGUgdGVtcG9yYXJ5IGludG8gYSBsaXN0ICovCisgICAgZm9yKDs7KSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gb2RpY3RpdGVyX2l0ZXJuZXh0KGRpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGRvbmUgaXRlcmF0aW5nPyAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaXRlciA9IF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIik7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIGl0ZXIsIGxpc3QpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb2RpY3RpdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEl0ZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJvZGljdF9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2Yob2RpY3RpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilvZGljdGl0ZXJfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylvZGljdGl0ZXJfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylvZGljdGl0ZXJfaXRlcm5leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZXJfbmV3KFB5T0RpY3RPYmplY3QgKm9kLCBpbnQga2luZCkKK3sKKyAgICBvZGljdGl0ZXJvYmplY3QgKmRpOworICAgIF9PRGljdE5vZGUgKm5vZGU7CisgICAgaW50IHJldmVyc2VkID0ga2luZCAmIF9vZGljdF9JVEVSX1JFVkVSU0VEOworCisgICAgZGkgPSBQeU9iamVjdF9HQ19OZXcob2RpY3RpdGVyb2JqZWN0LCAmUHlPRGljdEl0ZXJfVHlwZSk7CisgICAgaWYgKGRpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGtpbmQgJiAoX29kaWN0X0lURVJfS0VZUyB8IF9vZGljdF9JVEVSX1ZBTFVFUykpeworICAgICAgICBkaS0+ZGlfcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDIsIFB5X05vbmUsIFB5X05vbmUpOworICAgICAgICBpZiAoZGktPmRpX3Jlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGkpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgICBkaS0+ZGlfcmVzdWx0ID0gTlVMTDsKKworICAgIGRpLT5raW5kID0ga2luZDsKKyAgICBub2RlID0gcmV2ZXJzZWQgPyBfb2RpY3RfTEFTVChvZCkgOiBfb2RpY3RfRklSU1Qob2QpOworICAgIGRpLT5kaV9jdXJyZW50ID0gbm9kZSA/IF9vZGljdG5vZGVfS0VZKG5vZGUpIDogTlVMTDsKKyAgICBQeV9YSU5DUkVGKGRpLT5kaV9jdXJyZW50KTsKKyAgICBkaS0+ZGlfc2l6ZSA9IFB5T0RpY3RfU0laRShvZCk7CisgICAgZGktPmRpX3N0YXRlID0gb2QtPm9kX3N0YXRlOworICAgIGRpLT5kaV9vZGljdCA9IG9kOworICAgIFB5X0lOQ1JFRihvZCk7CisKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soZGkpOworICAgIHJldHVybiAoUHlPYmplY3QgKilkaTsKK30KKworLyoga2V5cygpICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGtleXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0a2V5c19yZXZlcnNlZChfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0a2V5c19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RrZXlzX3JldmVyc2VkLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlUeXBlT2JqZWN0IFB5T0RpY3RLZXlzX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3Rfa2V5cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RrZXlzX2l0ZXIsICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGtleXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RLZXlzX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGtleXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdEtleXNfVHlwZSk7Cit9CisKKy8qIGl0ZW1zKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlbXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1ZBTFVFUyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZW1zX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX0tFWVN8X29kaWN0X0lURVJfVkFMVUVTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0aXRlbXNfbWV0aG9kc1tdID0geworICAgIHsiX19yZXZlcnNlZF9fIiwgKFB5Q0Z1bmN0aW9uKW9kaWN0aXRlbXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEl0ZW1zX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3RfaXRlbXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RpdGVtc19pdGVyLCAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGl0ZW1zX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RJdGVtc19UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZW1zX25ldyhQeU9iamVjdCAqb2QpCit7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhvZCwgJlB5T0RpY3RJdGVtc19UeXBlKTsKK30KKworLyogdmFsdWVzKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0dmFsdWVzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQoreworICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldygoUHlPRGljdE9iamVjdCAqKWR2LT5kdl9kaWN0LAorICAgICAgICAgICAgX29kaWN0X0lURVJfVkFMVUVTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0dmFsdWVzX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX1ZBTFVFU3xfb2RpY3RfSVRFUl9SRVZFUlNFRCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBvZGljdHZhbHVlc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3R2YWx1ZXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdFZhbHVlc19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm9kaWN0X3ZhbHVlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKW9kaWN0dmFsdWVzX2l0ZXIsICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgb2RpY3R2YWx1ZXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAmUHlEaWN0VmFsdWVzX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdFZhbHVlc19UeXBlKTsKK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBNdXRhYmxlTWFwcHBpbmcgaW1wbGVtZW50YXRpb25zCisKK01hcHBpbmc6CisKKz09PT09PT09PT09PSA9PT09PT09PT09PQorbWV0aG9kICAgICAgIHVzZXMKKz09PT09PT09PT09PSA9PT09PT09PT09PQorX19jb250YWluc19fIF9fZ2V0aXRlbV9fCitfX2VxX18gICAgICAgaXRlbXMKK19fZ2V0aXRlbV9fICArCitfX2l0ZXJfXyAgICAgKworX19sZW5fXyAgICAgICsKK19fbmVfXyAgICAgICBfX2VxX18KK2dldCAgICAgICAgICBfX2dldGl0ZW1fXworaXRlbXMgICAgICAgIEl0ZW1zVmlldwora2V5cyAgICAgICAgIEtleXNWaWV3Cit2YWx1ZXMgICAgICAgVmFsdWVzVmlldworPT09PT09PT09PT09ID09PT09PT09PT09CisKK0l0ZW1zVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19nZXRpdGVtX18uCitLZXlzVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19jb250YWluc19fLgorVmFsdWVzVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19nZXRpdGVtX18uCisKK011dGFibGVNYXBwaW5nOgorCis9PT09PT09PT09PT0gPT09PT09PT09PT0KK21ldGhvZCAgICAgICB1c2VzCis9PT09PT09PT09PT0gPT09PT09PT09PT0KK19fZGVsaXRlbV9fICArCitfX3NldGl0ZW1fXyAgKworY2xlYXIgICAgICAgIHBvcGl0ZW0KK3BvcCAgICAgICAgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgIF9fZGVsaXRlbV9fCitwb3BpdGVtICAgICAgX19pdGVyX18KKyAgICAgICAgICAgICBfZ2V0aXRlbV9fCisgICAgICAgICAgICAgX19kZWxpdGVtX18KK3NldGRlZmF1bHQgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgIF9fc2V0aXRlbV9fCit1cGRhdGUgICAgICAgX19zZXRpdGVtX18KKz09PT09PT09PT09PSA9PT09PT09PT09PQorKi8KKworc3RhdGljIGludAorbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGFpcnMpCit7CisgICAgUHlPYmplY3QgKnBhaXIsICppdGVyYXRvciwgKnVuZXhwZWN0ZWQ7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIocGFpcnMpOworICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIHdoaWxlICgocGFpciA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkgIT0gTlVMTCkgeworICAgICAgICAvKiBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCAoc2VlIFVOUEFDS19TRVFVRU5DRSBpbiBjZXZhbC5jKSAqLworICAgICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTCwgKnZhbHVlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKnBhaXJfaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKHBhaXIpOworICAgICAgICBpZiAocGFpcl9pdGVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworCisgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KHBhaXJfaXRlcmF0b3IpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgbW9yZSB0aGFuIDAgdmFsdWVzIHRvIHVucGFjayIpOworICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICB9CisKKyAgICAgICAgdmFsdWUgPSBQeUl0ZXJfTmV4dChwYWlyX2l0ZXJhdG9yKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgbW9yZSB0aGFuIDEgdmFsdWUgdG8gdW5wYWNrIik7CisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIH0KKworICAgICAgICB1bmV4cGVjdGVkID0gUHlJdGVyX05leHQocGFpcl9pdGVyYXRvcik7CisgICAgICAgIGlmICh1bmV4cGVjdGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmV4cGVjdGVkKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAyKSIpOworICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgcmVzID0gUHlPYmplY3RfU2V0SXRlbShzZWxmLCBrZXksIHZhbHVlKTsKKworRG9uZToKKyAgICAgICAgUHlfREVDUkVGKHBhaXIpOworICAgICAgICBQeV9YREVDUkVGKHBhaXJfaXRlcmF0b3IpOworICAgICAgICBQeV9YREVDUkVGKGtleSk7CisgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworCisgICAgaWYgKHJlcyA8IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK211dGFibGVtYXBwaW5nX3VwZGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJlcyA9IDA7CisgICAgUHlfc3NpemVfdCBsZW4gPSAoYXJncyAhPSBOVUxMKSA/IFB5T2JqZWN0X1NpemUoYXJncykgOiAwOworCisgICAgLyogZmlyc3QgaGFuZGxlIGFyZ3MsIGlmIGFueSAqLworICAgIGlmIChsZW4gPCAwKSAvKiBQeU9iamVjdF9TaXplIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGxlbiA+IDEpIHsKKyAgICAgICAgY2hhciAqbXNnID0gInVwZGF0ZSgpIHRha2VzIGF0IG1vc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50ICglZCBnaXZlbikiOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCBtc2csIGxlbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgICAgIGlmIChvdGhlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihvdGhlcik7CisgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG90aGVyLCAiaXRlbXMiKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5TWFwcGluZ19JdGVtcyhvdGhlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgaXRlbXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvdGhlciwgImtleXMiKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzLCAqaXRlcmF0b3IsICprZXk7CisgICAgICAgICAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvdGhlciwgImtleXMiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGtleXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleXMpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHJlcyA9PSAwICYmIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShvdGhlciwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9TZXRJdGVtKHNlbGYsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisgICAgICAgICAgICBpZiAocmVzICE9IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBvdGhlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogbm93IGhhbmRsZSBrd2FyZ3MgKi8KKyAgICBsZW4gPSAoa3dhcmdzICE9IE5VTEwpID8gUHlPYmplY3RfU2l6ZShrd2FyZ3MpIDogMDsKKyAgICBpZiAobGVuIDwgMCkgLyogUHlPYmplY3RfU2l6ZSByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuID4gMCkgeworICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGt3YXJncykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBtYXBwaW5nIGZvciBrd2FyZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl0ZW1zID0gUHlNYXBwaW5nX0l0ZW1zKGt3YXJncyk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCBjNGJhNzE1Li5kYTFkNzAzIDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC05OTQsNyArOTk0LDcgQEAKIGxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUobG9uZ3JhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBjbXA7Ci0gICAKKwogICAgIC8qIGNsaXAgdGhlIHZhbHVlICovCiAgICAgUHlPYmplY3QgKnplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgaWYgKHplcm8gPT0gTlVMTCkKQEAgLTEwMTQsNyArMTAxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjbXAgPiAwKQogICAgICAgICBzdGF0ZSA9IHItPmxlbjsKLSAgICAKKwogICAgIFB5X0NMRUFSKHItPmluZGV4KTsKICAgICByLT5pbmRleCA9IHN0YXRlOwogICAgIFB5X0lOQ1JFRihyLT5pbmRleCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCAzMDQ1MTljLi43MDRkN2UyIDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTQsNyArNCw3IEBACiAgICBXcml0dGVuIGFuZCBtYWludGFpbmVkIGJ5IFJheW1vbmQgRC4gSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KICAgIERlcml2ZWQgZnJvbSBMaWIvc2V0cy5weSBhbmQgT2JqZWN0cy9kaWN0b2JqZWN0LmMuCiAKLSAgIENvcHlyaWdodCAoYykgMjAwMy0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgQ29weXJpZ2h0IChjKSAyMDAzLTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGUgYmFzaWMgbG9va3VwIGZ1bmN0aW9uIHVzZWQgYnkgYWxsIG9wZXJhdGlvbnMuCkBAIC0yMyw3ICsyMyw3IEBACiAKICAgIEFsbCBhcml0aG1ldGljIG9uIGhhc2ggc2hvdWxkIGlnbm9yZSBvdmVyZmxvdy4KIAotICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbnMgY2FuIHJldHVybgorICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbiBjYW4gcmV0dXJuCiAgICBOVUxMIGlmIHRoZSByaWNoIGNvbXBhcmlzb24gcmV0dXJucyBhbiBlcnJvci4KICovCiAKQEAgLTU2LDEyMCArNTYsNzMgQEAKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7IC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yLiAqLworICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KICAgICBzaXplX3QgajsKICAgICBpbnQgY21wOwogCi0gICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBlbnRyeTsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGtleSkKLSAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2ggJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIC8qIHN0YXJ0a2V5IGNhbm5vdCBiZSBhIGR1bW15IGJlY2F1c2UgdGhlIGR1bW15IGhhc2ggZmllbGQgaXMgLTEgKi8KKyAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIGlmIChjbXAgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVubGlrZWx5ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpICAgICAvKiB1bmxpa2VseSAqLwogICAgICAgICAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgaWYgKGNtcCA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGlrZWx5ICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCiAgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogCi0gICAgICAgIGZvciAoaiA9IDEgOyBqIDw9IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKLSAgICAgICAgICAgIGVudHJ5ID0gJnRhYmxlWyhpICsgaikgJiBtYXNrXTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0ga2V5KQotICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7Ci0gICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgICAgIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgeworICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0a2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlICE9IHNvLT50YWJsZSB8fCBlbnRyeS0+a2V5ICE9IHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgfQogCiAgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7Ci0gICAgICAgIGkgPSBpICogNSArIDEgKyBwZXJ0dXJiOworICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKIAotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107Ci0gICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7Ci0gICAgfQotICBmb3VuZF9udWxsOgotICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZW50cnkgOiBmcmVlc2xvdDsKLX0KLQotLyoKLSAqIEhhY2tlZCB1cCB2ZXJzaW9uIG9mIHNldF9sb29ra2V5IHdoaWNoIGNhbiBhc3N1bWUga2V5cyBhcmUgYWx3YXlzIHVuaWNvZGU7Ci0gKiBUaGlzIG1lYW5zIHdlIGNhbiBhbHdheXMgdXNlIHVuaWNvZGVfZXEgZGlyZWN0bHkgYW5kIG5vdCBoYXZlIHRvIGNoZWNrIHRvCi0gKiBzZWUgaWYgdGhlIGNvbXBhcmlzb24gYWx0ZXJlZCB0aGUgdGFibGUuCi0gKi8KLXN0YXRpYyBzZXRlbnRyeSAqCi1zZXRfbG9va2tleV91bmljb2RlKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCi17Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwotICAgIHNldGVudHJ5ICpmcmVlc2xvdCA9IE5VTEw7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKLSAgICBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwotICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoOwotICAgIHNpemVfdCBqOwotCi0gICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAotICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwotICAgICAgIHN0cmluZ3MgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCi0gICAgICAgdGhhdCBoZXJlLiAqLwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXk7Ci0gICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKLSAgICB9Ci0KLSAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIGVudHJ5OwotCi0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0ga2V5Ci0gICAgICAgICAgICB8fCAoZW50cnktPmhhc2ggPT0gaGFzaAotICAgICAgICAgICAgICAgICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVudHJ5LT5rZXksIGtleSkpKQotICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwotICAgICAgICBpZiAoZW50cnktPmtleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKLQotICAgICAgICBmb3IgKGogPSAxIDsgaiA8PSBMSU5FQVJfUFJPQkVTIDsgaisrKSB7Ci0gICAgICAgICAgICBlbnRyeSA9ICZ0YWJsZVsoaSArIGopICYgbWFza107Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKLSAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IGtleQotICAgICAgICAgICAgICAgIHx8IChlbnRyeS0+aGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAgICAgICAgICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShlbnRyeS0+a2V5LCBrZXkpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7Ci0gICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7Ci0gICAgICAgIH0KLQotICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOwotICAgICAgICBpID0gaSAqIDUgKyAxICsgcGVydHVyYjsKLQotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpICYgbWFza107CisgICAgICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOwogICAgIH0KQEAgLTE5MiwyMCArMTQ1LDIyIEBACiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3Qpc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7CisgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIHNpemVfdCBqOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKLSAgICAgICAgZm9yIChqID0gMSA7IGogPD0gTElORUFSX1BST0JFUyA7IGorKykgewotICAgICAgICAgICAgZW50cnkgPSAmdGFibGVbKGkgKyBqKSAmIG1hc2tdOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgTElORUFSX1BST0JFUzsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX251bGw7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKLSAgICAgICAgaSA9IGkgKiA1ICsgMSArIHBlcnR1cmI7CisgICAgICAgIGkgPSAoaSAqIDUgKyAxICsgcGVydHVyYikgJiBtYXNrOwogICAgIH0KICAgZm91bmRfbnVsbDoKICAgICBlbnRyeS0+a2V5ID0ga2V5OwpAQCAtMjI4LDE1ICsxODMsMTQgQEAKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBhc3NlcnQoc28tPmxvb2t1cCAhPSBOVUxMKTsKLSAgICBlbnRyeSA9IHNvLT5sb29rdXAoc28sIGtleSwgaGFzaCk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpIHsKICAgICAgICAgLyogVU5VU0VEICovCi0gICAgICAgIHNvLT5maWxsKys7CiAgICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7CiAgICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKKyAgICAgICAgc28tPmZpbGwrKzsKICAgICAgICAgc28tPnVzZWQrKzsKICAgICB9IGVsc2UgaWYgKGVudHJ5LT5rZXkgPT0gZHVtbXkpIHsKICAgICAgICAgLyogRFVNTVkgKi8KQEAgLTI2MCwxMyArMjE0LDE1IEBACiB7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwogICAgIHNldGVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZW50cnk7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgb2xkZmlsbCA9IHNvLT5maWxsOworICAgIFB5X3NzaXplX3Qgb2xkdXNlZCA9IHNvLT51c2VkOwogICAgIGludCBpc19vbGR0YWJsZV9tYWxsb2NlZDsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCiAgICAgYXNzZXJ0KG1pbnVzZWQgPj0gMCk7CiAKICAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICAvKiBYWFggc3BlZWQtdXAgd2l0aCBpbnRyaW5zaWNzICovCiAgICAgZm9yIChuZXdzaXplID0gUHlTZXRfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCkBAIC0zMTAsMTkgKzI2NiwyNyBAQAogCiAgICAgLyogTWFrZSB0aGUgc2V0IGVtcHR5LCB1c2luZyB0aGUgbmV3IHRhYmxlLiAqLwogICAgIGFzc2VydChuZXd0YWJsZSAhPSBvbGR0YWJsZSk7Ci0gICAgc28tPnRhYmxlID0gbmV3dGFibGU7Ci0gICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKICAgICBtZW1zZXQobmV3dGFibGUsIDAsIHNpemVvZihzZXRlbnRyeSkgKiBuZXdzaXplKTsKLSAgICBpID0gc28tPnVzZWQ7Ci0gICAgc28tPnVzZWQgPSAwOwogICAgIHNvLT5maWxsID0gMDsKKyAgICBzby0+dXNlZCA9IDA7CisgICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKKyAgICBzby0+dGFibGUgPSBuZXd0YWJsZTsKIAogICAgIC8qIENvcHkgdGhlIGRhdGEgb3ZlcjsgdGhpcyBpcyByZWZjb3VudC1uZXV0cmFsIGZvciBhY3RpdmUgZW50cmllczsKICAgICAgICBkdW1teSBlbnRyaWVzIGFyZW4ndCBjb3BpZWQgb3Zlciwgb2YgY291cnNlICovCi0gICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBpID4gMDsgZW50cnkrKykgewotICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgIC0taTsKLSAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICBpZiAob2xkZmlsbCA9PSBvbGR1c2VkKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBvbGR1c2VkLS07CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBvbGR1c2VkID4gMDsgZW50cnkrKykgeworICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gTlVMTCAmJiBlbnRyeS0+a2V5ICE9IGR1bW15KSB7CisgICAgICAgICAgICAgICAgb2xkdXNlZC0tOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMzQzLDcgKzMwNyw3IEBACiAgICAgYXNzZXJ0KHNvLT5maWxsIDw9IHNvLT5tYXNrKTsgIC8qIGF0IGxlYXN0IG9uZSBlbXB0eSBzbG90ICovCiAgICAgbl91c2VkID0gc28tPnVzZWQ7CiAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpID09IC0xKSB7CisgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzU1LDggKzMxOSw4IEBACiBzdGF0aWMgaW50CiBzZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlfc3NpemVfdCBuX3VzZWQ7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKQEAgLTM2NCwxNiArMzI4LDkgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGFzc2VydChzby0+ZmlsbCA8PSBzby0+bWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IHNvLT51c2VkOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIShzby0+dXNlZCA+IG5fdXNlZCAmJiBzby0+ZmlsbCozID49IChzby0+bWFzaysxKSoyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOworICAgIGVudHJ5LmtleSA9IGtleTsKKyAgICBlbnRyeS5oYXNoID0gaGFzaDsKKyAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywgJmVudHJ5KTsKIH0KIAogI2RlZmluZSBESVNDQVJEX05PVEZPVU5EIDAKQEAgLTM4MSwxNiArMzM4LDE4IEBACiAKIHN0YXRpYyBpbnQKIHNldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKm9sZGVudHJ5KQoteyAgICAgICBzZXRlbnRyeSAqZW50cnk7Cit7CisgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCi0gICAgZW50cnkgPSAoc28tPmxvb2t1cCkoc28sIG9sZGVudHJ5LT5rZXksIG9sZGVudHJ5LT5oYXNoKTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBvbGRlbnRyeS0+a2V5LCBvbGRlbnRyeS0+aGFzaCk7CiAgICAgaWYgKGVudHJ5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMICB8fCAgZW50cnktPmtleSA9PSBkdW1teSkKICAgICAgICAgcmV0dXJuIERJU0NBUkRfTk9URk9VTkQ7CiAgICAgb2xkX2tleSA9IGVudHJ5LT5rZXk7CiAgICAgZW50cnktPmtleSA9IGR1bW15OworICAgIGVudHJ5LT5oYXNoID0gLTE7CiAgICAgc28tPnVzZWQtLTsKICAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgcmV0dXJuIERJU0NBUkRfRk9VTkQ7CkBAIC0zOTksOSArMzU4LDggQEAKIHN0YXRpYyBpbnQKIHNldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwogCkBAIC00MTEsMTYgKzM2OSw5IEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbnRyeSA9IChzby0+bG9va3VwKShzbywga2V5LCBoYXNoKTsKLSAgICBpZiAoZW50cnkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgIHx8ICBlbnRyeS0+a2V5ID09IGR1bW15KQotICAgICAgICByZXR1cm4gRElTQ0FSRF9OT1RGT1VORDsKLSAgICBvbGRfa2V5ID0gZW50cnktPmtleTsKLSAgICBlbnRyeS0+a2V5ID0gZHVtbXk7Ci0gICAgc28tPnVzZWQtLTsKLSAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgcmV0dXJuIERJU0NBUkRfRk9VTkQ7CisgICAgZW50cnkua2V5ID0ga2V5OworICAgIGVudHJ5Lmhhc2ggPSBoYXNoOworICAgIHJldHVybiBzZXRfZGlzY2FyZF9lbnRyeShzbywgJmVudHJ5KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQzNywyMCArMzg4LDE1IEBACiBzdGF0aWMgaW50CiBzZXRfY2xlYXJfaW50ZXJuYWwoUHlTZXRPYmplY3QgKnNvKQogewotICAgIHNldGVudHJ5ICplbnRyeSwgKnRhYmxlOwotICAgIGludCB0YWJsZV9pc19tYWxsb2NlZDsKLSAgICBQeV9zc2l6ZV90IGZpbGw7CisgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKKyAgICBQeV9zc2l6ZV90IGZpbGwgPSBzby0+ZmlsbDsKKyAgICBQeV9zc2l6ZV90IHVzZWQgPSBzby0+dXNlZDsKKyAgICBpbnQgdGFibGVfaXNfbWFsbG9jZWQgPSB0YWJsZSAhPSBzby0+c21hbGx0YWJsZTsKICAgICBzZXRlbnRyeSBzbWFsbF9jb3B5W1B5U2V0X01JTlNJWkVdOwogCi0jaWZkZWYgUHlfREVCVUcKLSAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgIFB5X3NzaXplX3QgbiA9IHNvLT5tYXNrICsgMTsKLSNlbmRpZgotCiAgICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwotICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgIGFzc2VydCh0YWJsZSAhPSBOVUxMKTsKLSAgICB0YWJsZV9pc19tYWxsb2NlZCA9IHRhYmxlICE9IHNvLT5zbWFsbHRhYmxlOwogCiAgICAgLyogVGhpcyBpcyBkZWxpY2F0ZS4gIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyB0aGUgc2V0LAogICAgICAqIGRlY3JlZnMgY2FuIGNhdXNlIHRoZSBzZXQgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uCkBAIC00NTgsNyArNDA0LDYgQEAKICAgICAgKiBjbGVhcmluZyB0aGUgc2xvdHMsIGFuZCBuZXZlciByZWZlciB0byBhbnl0aGluZyB2aWEgc28tPnJlZiB3aGlsZQogICAgICAqIGNsZWFyaW5nLgogICAgICAqLwotICAgIGZpbGwgPSBzby0+ZmlsbDsKICAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCiAgICAgICAgIHNldF9lbXB0eV90b19taW5zaXplKHNvKTsKIApAQCAtNDc3LDIwICs0MjIsMTEgQEAKICAgICAgKiBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgb24gdGFibGUgaXMgMSBub3csIGkuZS4gdGhhdCB0aGlzIGZ1bmN0aW9uCiAgICAgICogaGFzIHVuaXF1ZSBhY2Nlc3MgdG8gaXQsIHNvIGRlY3JlZiBzaWRlLWVmZmVjdHMgY2FuJ3QgYWx0ZXIgaXQuCiAgICAgICovCi0gICAgZm9yIChlbnRyeSA9IHRhYmxlOyBmaWxsID4gMDsgKytlbnRyeSkgewotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgIGFzc2VydChpIDwgbik7Ci0gICAgICAgICsraTsKLSNlbmRpZgotICAgICAgICBpZiAoZW50cnktPmtleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gZHVtbXkpCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVudHJ5LT5rZXkpOworICAgIGZvciAoZW50cnkgPSB0YWJsZTsgdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgdXNlZC0tOworICAgICAgICAgICAgUHlfREVDUkVGKGVudHJ5LT5rZXkpOwogICAgICAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5rZXkgPT0gTlVMTCk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBpZiAodGFibGVfaXNfbWFsbG9jZWQpCkBAIC01MzcsMTYgKzQ3MywxNiBAQAogc2V0X2RlYWxsb2MoUHlTZXRPYmplY3QgKnNvKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBQeV9zc2l6ZV90IGZpbGwgPSBzby0+ZmlsbDsKKyAgICBQeV9zc2l6ZV90IHVzZWQgPSBzby0+dXNlZDsKKwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc28pOwogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4oc28pCiAgICAgaWYgKHNvLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzbyk7CiAKLSAgICBmb3IgKGVudHJ5ID0gc28tPnRhYmxlOyBmaWxsID4gMDsgZW50cnkrKykgewotICAgICAgICBpZiAoZW50cnktPmtleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgIT0gZHVtbXkpCisgICAgZm9yIChlbnRyeSA9IHNvLT50YWJsZTsgdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgICAgIHVzZWQtLTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW50cnktPmtleSk7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTIsMTYgKzU0OCwxNiBAQAogewogICAgIFB5U2V0T2JqZWN0ICpvdGhlcjsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgc2V0ZW50cnkgKnNvX2VudHJ5OworICAgIHNldGVudHJ5ICpvdGhlcl9lbnRyeTsKIAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKG90aGVyc2V0KSk7CiAKICAgICBvdGhlciA9IChQeVNldE9iamVjdCopb3RoZXJzZXQ7CiAgICAgaWYgKG90aGVyID09IHNvIHx8IG90aGVyLT51c2VkID09IDApCi0gICAgICAgIC8qIGEudXBkYXRlKGEpIG9yIGEudXBkYXRlKHt9KTsgbm90aGluZyB0byBkbyAqLworICAgICAgICAvKiBhLnVwZGF0ZShhKSBvciBhLnVwZGF0ZShzZXQoKSk7IG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogRG8gb25lIGJpZyByZXNpemUgYXQgdGhlIHN0YXJ0LCByYXRoZXIgdGhhbgogICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CkBAIC02MzEsMTQgKzU2Nyw0NSBAQAogICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBvdGhlci0+dXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBzb19lbnRyeSA9IHNvLT50YWJsZTsKKyAgICBvdGhlcl9lbnRyeSA9IG90aGVyLT50YWJsZTsKKworICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgYW5kIGJvdGggdGFibGVzIGhhdmUgdGhlIHNhbWUgc2l6ZSwgYW5kCisgICAgICAgdGhlcmUgYXJlIG5vIGR1bW1pZXMgdG8gZWxpbWluYXRlLCB0aGVuIGp1c3QgY29weSB0aGUgcG9pbnRlcnMuICovCisgICAgaWYgKHNvLT5maWxsID09IDAgJiYgc28tPm1hc2sgPT0gb3RoZXItPm1hc2sgJiYgb3RoZXItPmZpbGwgPT0gb3RoZXItPnVzZWQpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBzb19lbnRyeSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHNvX2VudHJ5LT5rZXkgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgc29fZW50cnktPmtleSA9IGtleTsKKyAgICAgICAgICAgICAgICBzb19lbnRyeS0+aGFzaCA9IG90aGVyX2VudHJ5LT5oYXNoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNvLT5maWxsID0gb3RoZXItPmZpbGw7CisgICAgICAgIHNvLT51c2VkID0gb3RoZXItPnVzZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgd2UgY2FuIHVzZSBzZXRfaW5zZXJ0X2NsZWFuKCkgKi8KKyAgICBpZiAoc28tPmZpbGwgPT0gMCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyssIG90aGVyX2VudHJ5KyspIHsKKyAgICAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CisgICAgICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogV2UgY2FuJ3QgYXNzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzLCBzbyBkbyBub3JtYWwgaW5zZXJ0aW9ucyAqLwogICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hc2s7IGkrKykgewotICAgICAgICBlbnRyeSA9ICZvdGhlci0+dGFibGVbaV07Ci0gICAgICAgIGtleSA9IGVudHJ5LT5rZXk7Ci0gICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmCi0gICAgICAgICAgICBrZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgb3RoZXJfZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOworICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTY0OCwxMCArNjE1LDIzIEBACiB9CiAKIHN0YXRpYyBpbnQKK3NldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKK3sKKyAgICBQeU9iamVjdCAqa2V5OworICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKKworICAgIGx1X2VudHJ5ID0gc2V0X2xvb2trZXkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICBpZiAobHVfZW50cnkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGtleSA9IGx1X2VudHJ5LT5rZXk7CisgICAgcmV0dXJuIGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teTsKK30KKworc3RhdGljIGludAogc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CkBAIC02NTksMzAgKzYzOSwxNiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZW50cnkgPSAoc28tPmxvb2t1cCkoc28sIGtleSwgaGFzaCk7Ci0gICAgaWYgKGVudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBlbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKLXsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKLQotICAgIGx1X2VudHJ5ID0gKHNvLT5sb29rdXApKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7Ci0gICAgaWYgKGx1X2VudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBsdV9lbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7CisgICAgZW50cnkua2V5ID0ga2V5OworICAgIGVudHJ5Lmhhc2ggPSBoYXNoOworICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcG9wKFB5U2V0T2JqZWN0ICpzbykKIHsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgIC8qIE1ha2Ugc3VyZSB0aGUgc2VhcmNoIGZpbmdlciBpcyBpbiBib3VuZHMgKi8KKyAgICBQeV9zc2l6ZV90IGkgPSBzby0+ZmluZ2VyICYgc28tPm1hc2s7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICprZXk7CiAKQEAgLTY5MiwzMiArNjU4LDE2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIFNldCBlbnRyeSB0byAidGhlIGZpcnN0IiB1bnVzZWQgb3IgZHVtbXkgc2V0IGVudHJ5LiAgV2UgYWJ1c2UKLSAgICAgKiB0aGUgaGFzaCBmaWVsZCBvZiBzbG90IDAgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXI6Ci0gICAgICogSWYgc2xvdCAwIGhhcyBhIHZhbHVlLCB1c2Ugc2xvdCAwLgotICAgICAqIEVsc2Ugc2xvdCAwIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXIsCi0gICAgICogYW5kIHdlIHVzZSBpdHMgaGFzaCB2YWx1ZSBhcyB0aGUgZmlyc3QgaW5kZXggdG8gbG9vay4KLSAgICAgKi8KLSAgICBlbnRyeSA9ICZzby0+dGFibGVbMF07Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGR1bW15KSB7Ci0gICAgICAgIGkgPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgLyogVGhlIGhhc2ggZmllbGQgbWF5IGJlIGEgcmVhbCBoYXNoIHZhbHVlLCBvciBpdCBtYXkgYmUgYQotICAgICAgICAgKiBsZWdpdCBzZWFyY2ggZmluZ2VyLCBvciBpdCBtYXkgYmUgYSBvbmNlLWxlZ2l0IHNlYXJjaAotICAgICAgICAgKiBmaW5nZXIgdGhhdCdzIG91dCBvZiBib3VuZHMgbm93IGJlY2F1c2UgaXQgd3JhcHBlZCBhcm91bmQKLSAgICAgICAgICogb3IgdGhlIHRhYmxlIHNocnVuayAtLSBzaW1wbHkgbWFrZSBzdXJlIGl0J3MgaW4gYm91bmRzIG5vdy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChpID4gc28tPm1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZW50cnkgPSAmc28tPnRhYmxlW2ldKS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleT09ZHVtbXkpIHsKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIGlmIChpID4gc28tPm1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKyAgICB3aGlsZSAoKGVudHJ5ID0gJnNvLT50YWJsZVtpXSktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXk9PWR1bW15KSB7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGkgPiBzby0+bWFzaykKKyAgICAgICAgICAgIGkgPSAwOwogICAgIH0KICAgICBrZXkgPSBlbnRyeS0+a2V5OwogICAgIGVudHJ5LT5rZXkgPSBkdW1teTsKKyAgICBlbnRyeS0+aGFzaCA9IC0xOwogICAgIHNvLT51c2VkLS07Ci0gICAgc28tPnRhYmxlWzBdLmhhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBzby0+ZmluZ2VyID0gaSArIDE7ICAgICAgICAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLwogICAgIHJldHVybiBrZXk7CiB9CiAKQEAgLTc2MCw3ICs3MTAsNyBAQAogICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewogICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAotICAgICAgICAgICB2YWx1ZXMuICBUaGUgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CisgICAgICAgICAgIHZhbHVlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CiAgICAgICAgICAgIGNvbWJpbmF0aW9ucyBvZiBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieQogICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5CiAgICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KQEAgLTc3MCw3ICs3MjAsNyBAQAogICAgIC8qIE1ha2UgdGhlIGZpbmFsIHJlc3VsdCBzcHJlYWQtb3V0IGluIGEgZGlmZmVyZW50IHBhdHRlcm4KICAgICAgICB0aGFuIHRoZSBhbGdvcml0aG0gZm9yIHR1cGxlcyBvciBvdGhlciBweXRob24gb2JqZWN0cy4gKi8KICAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1VMOwotICAgIGlmIChoYXNoID09IC0xKQorICAgIGlmIChoYXNoID09IChQeV91aGFzaF90KS0xKQogICAgICAgICBoYXNoID0gNTkwOTIzNzEzVUw7CiAgICAgc28tPmhhc2ggPSBoYXNoOwogICAgIHJldHVybiBoYXNoOwpAQCAtOTc0LDcgKzkyNCw3IEBACiAKICAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwogICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkgPT0gLTEpCisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC05ODUsNyArOTM1LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpID09IC0xKSB7CisgICAgICAgIGlmIChzZXRfYWRkX2tleShzbywga2V5KSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTAwNSw3ICs5NTUsNyBAQAogCiAgICAgZm9yIChpPTAgOyBpPFB5VHVwbGVfR0VUX1NJWkUoYXJncykgOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKm90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTEwMTQsNiArOTY0LDEyIEBACiBQeURvY19TVFJWQVIodXBkYXRlX2RvYywKICJVcGRhdGUgYSBzZXQgd2l0aCB0aGUgdW5pb24gb2YgaXRzZWxmIGFuZCBvdGhlcnMuIik7CiAKKy8qIFhYWCBUb2RvOgorICAgSWYgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgbWFrZSB0aGUKKyAgIHNldCBvYmplY3QgNjQgYnl0ZSBhbGlnbmVkIHNvIHRoYXQgbW9zdCBvZiB0aGUgZmllbGRzCisgICBjYW4gYmUgcmV0cmlldmVkIG9yIHVwZGF0ZWQgaW4gYSBzaW5nbGUgY2FjaGUgbGluZS4KKyovCisKIHN0YXRpYyBQeU9iamVjdCAqCiBtYWtlX25ld19zZXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7CkBAIC0xMDI4LDEyICs5ODQsMTIgQEAKICAgICBzby0+dXNlZCA9IDA7CiAgICAgc28tPm1hc2sgPSBQeVNldF9NSU5TSVpFIC0gMTsKICAgICBzby0+dGFibGUgPSBzby0+c21hbGx0YWJsZTsKLSAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXlfdW5pY29kZTsKICAgICBzby0+aGFzaCA9IC0xOworICAgIHNvLT5maW5nZXIgPSAwOwogICAgIHNvLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAKICAgICBpZiAoaXRlcmFibGUgIT0gTlVMTCkgewotICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgaXRlcmFibGUpID09IC0xKSB7CisgICAgICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBpdGVyYWJsZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzbyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTExNywxMCArMTA3Myw4IEBACiAgICAgIHQ9c2V0KGEpOyBhLmNsZWFyKCk7IGEudXBkYXRlKGIpOyBiLmNsZWFyKCk7IGIudXBkYXRlKHQpOyBkZWwgdAogCiAgICBUaGUgZnVuY3Rpb24gYWx3YXlzIHN1Y2NlZWRzIGFuZCBpdCBsZWF2ZXMgYm90aCBvYmplY3RzIGluIGEgc3RhYmxlIHN0YXRlLgotICAgVXNlZnVsIGZvciBjcmVhdGluZyB0ZW1wb3JhcnkgZnJvemVuc2V0cyBmcm9tIHNldHMgZm9yIG1lbWJlcnNoaXAgdGVzdGluZwotICAgaW4gX19jb250YWluc19fKCksIGRpc2NhcmQoKSwgYW5kIHJlbW92ZSgpLiAgQWxzbyB1c2VmdWwgZm9yIG9wZXJhdGlvbnMKLSAgIHRoYXQgdXBkYXRlIGluLXBsYWNlIChieSBhbGxvd2luZyBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0IHRvIGJlIHN3YXBwZWQKLSAgIGludG8gb25lIG9mIHRoZSBvcmlnaW5hbCBpbnB1dHMpLgorICAgVXNlZnVsIGZvciBvcGVyYXRpb25zIHRoYXQgdXBkYXRlIGluLXBsYWNlIChieSBhbGxvd2luZyBhbiBpbnRlcm1lZGlhdGUKKyAgIHJlc3VsdCB0byBiZSBzd2FwcGVkIGludG8gb25lIG9mIHRoZSBvcmlnaW5hbCBpbnB1dHMpLgogKi8KIAogc3RhdGljIHZvaWQKQEAgLTExMjgsNyArMTA4Miw2IEBACiB7CiAgICAgUHlfc3NpemVfdCB0OwogICAgIHNldGVudHJ5ICp1OwotICAgIHNldGVudHJ5ICooKmYpKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfc3NpemVfdCBoYXNoKTsKICAgICBzZXRlbnRyeSB0YWJbUHlTZXRfTUlOU0laRV07CiAgICAgUHlfaGFzaF90IGg7CiAKQEAgLTExNDQsOCArMTA5Nyw2IEBACiAgICAgICAgIGEtPnRhYmxlID0gYS0+c21hbGx0YWJsZTsKICAgICBiLT50YWJsZSA9IHU7CiAKLSAgICBmID0gYS0+bG9va3VwOyAgIGEtPmxvb2t1cCA9IGItPmxvb2t1cDsgICAgICBiLT5sb29rdXAgPSBmOwotCiAgICAgaWYgKGEtPnRhYmxlID09IGEtPnNtYWxsdGFibGUgfHwgYi0+dGFibGUgPT0gYi0+c21hbGx0YWJsZSkgewogICAgICAgICBtZW1jcHkodGFiLCBhLT5zbWFsbHRhYmxlLCBzaXplb2YodGFiKSk7CiAgICAgICAgIG1lbWNweShhLT5zbWFsbHRhYmxlLCBiLT5zbWFsbHRhYmxlLCBzaXplb2YodGFiKSk7CkBAIC0xMjAzLDcgKzExNTQsNyBAQAogICAgICAgICBvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTIyOSw3ICsxMTgwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHJlc3VsdCwgb3RoZXIpID09IC0xKSB7CisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwocmVzdWx0LCBvdGhlcikpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEyNDIsNyArMTE5Myw3IEBACiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc287CkBAIC0xMjc4LDcgKzEyMjksNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBlbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGVudHJ5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMxNCw3ICsxMjY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsICZlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwpAQCAtMTUyMiw3ICsxNDczLDcgQEAKIAogICAgIGZvciAoaT0wIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTU3OCw3ICsxNTI5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsICZlbnRyeWNvcHkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCAmZW50cnljb3B5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU5NSw3ICsxNTQ2LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTYyMCw3ICsxNTcxLDcgQEAKIAogICAgIGZvciAoaT0xIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIG90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKilyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKXJlc3VsdCwgb3RoZXIpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNjQ1LDcgKzE1OTYsNyBAQAogewogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQorICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc287CkBAIC0xNjc5LDcgKzE2MzAsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzA1LDcgKzE2NTYsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTg1Niw3ICsxODA3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfYWRkKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBpZiAoc2V0X2FkZF9rZXkoc28sIGtleSkgPT0gLTEpCisgICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTI0MDAsNyArMjM1MSw3IEBACiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzZXRfY2xlYXJfaW50ZXJuYWwoc28pOwotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBzdHIpID09IC0xKSB7CisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIHN0cikpIHsKICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKaW5kZXggZWUxYmYyYi4uMGZjNmI1OCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKQEAgLTcxOCw2ICs3MTgsOTMgQEAKICAgICByZXR1cm4gbGVuIC0gKGVuZCAtIGluICsgMSk7CiAjZW5kaWYKIH0KKworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisjIGRlZmluZSBTV0FCNChDSCwgdG1wKSAgKChDSCkgPDwgMjQpIC8qIGhpZ2ggYnl0ZXMgYXJlIHplcm8gKi8KKyNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisjIGRlZmluZSBTV0FCNChDSCwgdG1wKSAgKHRtcCA9IChDSCksIFwKKyAgICAgICAgICAgICgodG1wICYgMHgwMEZGdSkgPDwgMjQpICsgKCh0bXAgJiAweEZGMDB1KSA8PCA4KSkKKyAgICAgICAgICAgIC8qIGhpZ2ggYnl0ZXMgYXJlIHplcm8gKi8KKyNlbHNlCisjIGRlZmluZSBTV0FCNChDSCwgdG1wKSAgKHRtcCA9IChDSCksIFwKKyAgICAgICAgICAgIHRtcCA9ICgodG1wICYgMHgwMEZGMDBGRnUpIDw8IDgpICsgKCh0bXAgPj4gOCkgJiAweDAwRkYwMEZGdSksIFwKKyAgICAgICAgICAgICgodG1wICYgMHgwMDAwRkZGRnUpIDw8IDE2KSArICgodG1wID4+IDE2KSAmIDB4MDAwMEZGRkZ1KSkKKyNlbmRpZgorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitTVFJJTkdMSUIodXRmMzJfZW5jb2RlKShjb25zdCBTVFJJTkdMSUJfQ0hBUiAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBZX1VJTlQzMl9UICoqb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hdGl2ZV9vcmRlcmluZykKK3sKKyAgICBQWV9VSU5UMzJfVCAqb3V0ID0gKm91dHB0cjsKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gaW4gKyBsZW47CisgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKGxlbiwgNCk7CisgICAgICAgIHdoaWxlIChpbiA8IHVucm9sbGVkX2VuZCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIGFueSBjaGFyYWN0ZXIgaXMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyICovCisgICAgICAgICAgICBpZiAoKChpblswXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bMV0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzJdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblszXSBeIDB4ZDgwMCkgJiAweGY4MDApID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIG91dFswXSA9IGluWzBdOworICAgICAgICAgICAgb3V0WzFdID0gaW5bMV07CisgICAgICAgICAgICBvdXRbMl0gPSBpblsyXTsKKyAgICAgICAgICAgIG91dFszXSA9IGluWzNdOworICAgICAgICAgICAgaW4gKz0gNDsgb3V0ICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICAgICAgY2ggPSAqaW4rKzsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7CisgICAgICAgICAgICAgICAgLyogcmVqZWN0IHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIChVK0Q4MDAtVStERkZGKSAqLworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgKm91dCsrID0gY2g7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKGxlbiwgNCk7CisgICAgICAgIHdoaWxlIChpbiA8IHVucm9sbGVkX2VuZCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIFB5X1VDUzQgY2gxLCBjaDIsIGNoMywgY2g0OworICAgICAgICAgICAgLyogY2hlY2sgaWYgYW55IGNoYXJhY3RlciBpcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmICgoKGluWzBdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblsxXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bMl0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzNdIF4gMHhkODAwKSAmIDB4ZjgwMCkgPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgICAgb3V0WzBdID0gU1dBQjQoaW5bMF0sIGNoMSk7CisgICAgICAgICAgICBvdXRbMV0gPSBTV0FCNChpblsxXSwgY2gyKTsKKyAgICAgICAgICAgIG91dFsyXSA9IFNXQUI0KGluWzJdLCBjaDMpOworICAgICAgICAgICAgb3V0WzNdID0gU1dBQjQoaW5bM10sIGNoNCk7CisgICAgICAgICAgICBpbiArPSA0OyBvdXQgKz0gNDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqaW4rKzsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7CisgICAgICAgICAgICAgICAgLyogcmVqZWN0IHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIChVK0Q4MDAtVStERkZGKSAqLworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgKm91dCsrID0gU1dBQjQoY2gsIGNoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAqb3V0cHRyID0gb3V0OworICAgIHJldHVybiBsZW47CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICBmYWlsOgorICAgICpvdXRwdHIgPSBvdXQ7CisgICAgcmV0dXJuIGxlbiAtIChlbmQgLSBpbiArIDEpOworI2VuZGlmCit9CisjdW5kZWYgU1dBQjQKKwogI2VuZGlmCiAKICNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGNkN2NhYzQuLmNkYTY4ZTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTM2LDcgKzM2LDcgQEAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQogU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBjaCwgdW5zaWduZWQgY2hhciBuZWVkbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQsIGludCBtb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgewogICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gczsKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKLSAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbWF4Y291bnQsIG1vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtb2RlKTsKICAgICAgICAgfQogICAgICAgICBpZiAobW9kZSA9PSBGQVNUX0NPVU5UKSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IDUxOGUwMTIuLjE0ODE1ZjYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTExLDggKzExLDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHBvczsKIAotICAgIGlmIChzdHJfbGVuIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydChzdHJfbGVuID49IDApOwogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKQEAgLTMxLDggKzMwLDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHBvczsKIAotICAgIGlmIChzdHJfbGVuIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydChzdHJfbGVuID49IDApOwogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBzdHJfbGVuICsgb2Zmc2V0OwogCkBAIC00NCwyNyArNDIsMTEgQEAKICAgICByZXR1cm4gcG9zOwogfQogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCiBTVFJJTkdMSUIoZmluZF9zbGljZSkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7CiAgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCkBAIC03Myw3ICs1NSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwogICAgIHJldHVybiBTVFJJTkdMSUIocmZpbmQpKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKaW5kZXggY2FlNmVhMS4uYjU1OWI1MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKQEAgLTU5LDcgKzU5LDcgQEAKIAogICAgIGogPSAwOwogICAgIHEgPSBTVFJJTkdMSUJfU1RSKHUpOwotICAgIAorCiAgICAgZm9yIChwID0gU1RSSU5HTElCX1NUUihzZWxmKTsgcCA8IGU7IHArKykgewogICAgICAgICBpZiAoKnAgPT0gJ1x0JykgewogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggOGMwMDIxMC4uN2VmYTFhNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtOTcsNyArOTcsNyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAgICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQorICAgICAgICBpZiAoKHNpemVfdClzaXplID4gKChzaXplX3QpUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQogICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKikpIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQpAQCAtNzQ2LDcgKzc0Niw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2Vycywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAidHVwbGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCBkMzljOTQzLi5iYjgzNTMwIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtMTQsMTAgKzE0LDExIEBACiAgICBNQ0FDSEVfTUFYX0FUVFJfU0laRSwgc2luY2UgaXQgbWlnaHQgYmUgYSBwcm9ibGVtIGlmIHZlcnkgbGFyZ2UKICAgIHN0cmluZ3MgYXJlIHVzZWQgYXMgYXR0cmlidXRlIG5hbWVzLiAqLwogI2RlZmluZSBNQ0FDSEVfTUFYX0FUVFJfU0laRSAgICAxMDAKLSNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgOQorI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICAxMgogI2RlZmluZSBNQ0FDSEVfSEFTSCh2ZXJzaW9uLCBuYW1lX2hhc2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoKCh1bnNpZ25lZCBpbnQpKHZlcnNpb24pICogKHVuc2lnbmVkIGludCkobmFtZV9oYXNoKSkgICAgICAgICAgXAotICAgICAgICAgPj4gKDgqc2l6ZW9mKHVuc2lnbmVkIGludCkgLSBNQ0FDSEVfU0laRV9FWFApKQorICAgICAgICAoKCh1bnNpZ25lZCBpbnQpKHZlcnNpb24pIF4gKHVuc2lnbmVkIGludCkobmFtZV9oYXNoKSkgICAgICAgICAgXAorICAgICAgICAgJiAoKDEgPDwgTUNBQ0hFX1NJWkVfRVhQKSAtIDEpKQorCiAjZGVmaW5lIE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE1DQUNIRV9IQVNIKCh0eXBlKS0+dHBfdmVyc2lvbl90YWcsICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAoKFB5QVNDSUlPYmplY3QgKikobmFtZSkpLT5oYXNoKQpAQCAtMzUsNiArMzYsMTQgQEAKIHN0YXRpYyBzdHJ1Y3QgbWV0aG9kX2NhY2hlX2VudHJ5IG1ldGhvZF9jYWNoZVsxIDw8IE1DQUNIRV9TSVpFX0VYUF07CiBzdGF0aWMgdW5zaWduZWQgaW50IG5leHRfdmVyc2lvbl90YWcgPSAwOwogCisjZGVmaW5lIE1DQUNIRV9TVEFUUyAwCisKKyNpZiBNQ0FDSEVfU1RBVFMKK3N0YXRpYyBzaXplX3QgbWV0aG9kX2NhY2hlX2hpdHMgPSAwOworc3RhdGljIHNpemVfdCBtZXRob2RfY2FjaGVfbWlzc2VzID0gMDsKK3N0YXRpYyBzaXplX3QgbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMgPSAwOworI2VuZGlmCisKIC8qIGFscGhhYmV0aWNhbCBvcmRlciAqLwogX1B5X0lERU5USUZJRVIoX19hYnN0cmFjdG1ldGhvZHNfXyk7CiBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOwpAQCAtNTQsNiArNjMsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKIAorc3RhdGljIHZvaWQKK2NsZWFyX3Nsb3RkZWZzKHZvaWQpOworCiAvKgogICogZmluZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jc3RyaW5nJ3MgaW50cm9zcGVjdGlvbiBzaWduYXR1cmUuCiAgKiBpZiBwcmVzZW50LCByZXR1cm5zIGEgcG9pbnRlciBwb2ludGluZyB0byB0aGUgZmlyc3QgJygnLgpAQCAtMTI1LDcgKzEzNyw3IEBACiB7CiAgICAgY29uc3QgY2hhciAqZG9jID0gX1B5VHlwZV9Eb2NXaXRob3V0U2lnbmF0dXJlKG5hbWUsIGludGVybmFsX2RvYyk7CiAKLSAgICBpZiAoIWRvYykgeworICAgIGlmICghZG9jIHx8ICpkb2MgPT0gJ1wwJykgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KQEAgLTE2Miw2ICsxNzQsMTggQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgdW5zaWduZWQgaW50IGN1cl92ZXJzaW9uX3RhZyA9IG5leHRfdmVyc2lvbl90YWcgLSAxOwogCisjaWYgTUNBQ0hFX1NUQVRTCisgICAgc2l6ZV90IHRvdGFsID0gbWV0aG9kX2NhY2hlX2hpdHMgKyBtZXRob2RfY2FjaGVfY29sbGlzaW9ucyArIG1ldGhvZF9jYWNoZV9taXNzZXM7CisgICAgZnByaW50ZihzdGRlcnIsICItLSBNZXRob2QgY2FjaGUgaGl0cyAgICAgICAgPSAlemQgKCVkJSUpXG4iLAorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX2hpdHMsIChpbnQpICgxMDAuMCAqIG1ldGhvZF9jYWNoZV9oaXRzIC8gdG90YWwpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIi0tIE1ldGhvZCBjYWNoZSB0cnVlIG1pc3NlcyA9ICV6ZCAoJWQlJSlcbiIsCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfbWlzc2VzLCAoaW50KSAoMTAwLjAgKiBtZXRob2RfY2FjaGVfbWlzc2VzIC8gdG90YWwpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIi0tIE1ldGhvZCBjYWNoZSBjb2xsaXNpb25zICA9ICV6ZCAoJWQlJSlcbiIsCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfY29sbGlzaW9ucywgKGludCkgKDEwMC4wICogbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMgLyB0b3RhbCkpOworICAgIGZwcmludGYoc3RkZXJyLCAiLS0gTWV0aG9kIGNhY2hlIHNpemUgICAgICAgID0gJXpkIEtCXG4iLAorICAgICAgICAgICAgc2l6ZW9mKG1ldGhvZF9jYWNoZSkgLyAxMDI0KTsKKyNlbmRpZgorCiAgICAgZm9yIChpID0gMDsgaSA8ICgxIDw8IE1DQUNIRV9TSVpFX0VYUCk7IGkrKykgewogICAgICAgICBtZXRob2RfY2FjaGVbaV0udmVyc2lvbiA9IDA7CiAgICAgICAgIFB5X0NMRUFSKG1ldGhvZF9jYWNoZVtpXS5uYW1lKTsKQEAgLTE3Nyw2ICsyMDEsNyBAQAogX1B5VHlwZV9GaW5pKHZvaWQpCiB7CiAgICAgUHlUeXBlX0NsZWFyQ2FjaGUoKTsKKyAgICBjbGVhcl9zbG90ZGVmcygpOwogfQogCiB2b2lkCkBAIC0xMjAwLDggKzEyMjUsMTEgQEAKICAgICBhc3NlcnQoYmFzZWRlYWxsb2MpOwogICAgIGJhc2VkZWFsbG9jKHNlbGYpOwogCi0gICAgLyogQ2FuJ3QgcmVmZXJlbmNlIHNlbGYgYmV5b25kIHRoaXMgcG9pbnQgKi8KLSAgICBQeV9ERUNSRUYodHlwZSk7CisgICAgLyogQ2FuJ3QgcmVmZXJlbmNlIHNlbGYgYmV5b25kIHRoaXMgcG9pbnQuIEl0J3MgcG9zc2libGUgdHBfZGVsIHN3aXRjaGVkCisgICAgICAgb3VyIHR5cGUgZnJvbSBhIEhFQVBUWVBFIHRvIGEgbm9uLUhFQVBUWVBFLCBzbyBiZSBjYXJlZnVsIGFib3V0CisgICAgICAgcmVmZXJlbmNlIGNvdW50aW5nLiAqLworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCisgICAgICBQeV9ERUNSRUYodHlwZSk7CiAKICAgZW5kbGFiZWw6CiAgICAgKytfUHlUcmFzaF9kZWxldGVfbmVzdGluZzsKQEAgLTI0NzgsNiArMjUwNiw3IEBACiAgICAgICAgIHR5cGUtPnRwX2ZsYWdzIHw9IFB5X1RQRkxBR1NfSEFWRV9HQzsKIAogICAgIC8qIEluaXRpYWxpemUgZXNzZW50aWFsIGZpZWxkcyAqLworICAgIHR5cGUtPnRwX2FzX2FzeW5jID0gJmV0LT5hc19hc3luYzsKICAgICB0eXBlLT50cF9hc19udW1iZXIgPSAmZXQtPmFzX251bWJlcjsKICAgICB0eXBlLT50cF9hc19zZXF1ZW5jZSA9ICZldC0+YXNfc2VxdWVuY2U7CiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZldC0+YXNfbWFwcGluZzsKQEAgLTI2MTcsOSArMjY0NiwxMCBAQAogICAgIH0KICAgICB0eXBlLT50cF9kZWFsbG9jID0gc3VidHlwZV9kZWFsbG9jOwogCi0gICAgLyogRW5hYmxlIEdDIHVubGVzcyB0aGVyZSBhcmUgcmVhbGx5IG5vIGluc3RhbmNlIHZhcmlhYmxlcyBwb3NzaWJsZSAqLwotICAgIGlmICghKHR5cGUtPnRwX2Jhc2ljc2l6ZSA9PSBzaXplb2YoUHlPYmplY3QpICYmCi0gICAgICAgICAgdHlwZS0+dHBfaXRlbXNpemUgPT0gMCkpCisgICAgLyogRW5hYmxlIEdDIHVubGVzcyB0aGlzIGNsYXNzIGlzIG5vdCBhZGRpbmcgbmV3IGluc3RhbmNlIHZhcmlhYmxlcyBhbmQKKyAgICAgICB0aGUgYmFzZSBjbGFzcyBkaWQgbm90IHVzZSBHQy4gKi8KKyAgICBpZiAoKGJhc2UtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IQVZFX0dDKSB8fAorICAgICAgICB0eXBlLT50cF9iYXNpY3NpemUgPiBiYXNlLT50cF9iYXNpY3NpemUpCiAgICAgICAgIHR5cGUtPnRwX2ZsYWdzIHw9IFB5X1RQRkxBR1NfSEFWRV9HQzsKIAogICAgIC8qIEFsd2F5cyBvdmVycmlkZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHRvIHVzZSByZWd1bGFyIGhlYXAgKi8KQEAgLTI2NjQsNiArMjY5NCw3IEBACiB7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqcmVzID0gKFB5SGVhcFR5cGVPYmplY3QqKVB5VHlwZV9HZW5lcmljQWxsb2MoJlB5VHlwZV9UeXBlLCAwKTsKICAgICBQeVR5cGVPYmplY3QgKnR5cGUsICpiYXNlOworICAgIFB5T2JqZWN0ICptb2RuYW1lOwogICAgIGNoYXIgKnM7CiAgICAgY2hhciAqcmVzX3N0YXJ0ID0gKGNoYXIqKXJlczsKICAgICBQeVR5cGVfU2xvdCAqc2xvdDsKQEAgLTI3MjIsNiArMjc1Myw3IEBACiAgICAgfQogCiAgICAgLyogSW5pdGlhbGl6ZSBlc3NlbnRpYWwgZmllbGRzICovCisgICAgdHlwZS0+dHBfYXNfYXN5bmMgPSAmcmVzLT5hc19hc3luYzsKICAgICB0eXBlLT50cF9hc19udW1iZXIgPSAmcmVzLT5hc19udW1iZXI7CiAgICAgdHlwZS0+dHBfYXNfc2VxdWVuY2UgPSAmcmVzLT5hc19zZXF1ZW5jZTsKICAgICB0eXBlLT50cF9hc19tYXBwaW5nID0gJnJlcy0+YXNfbWFwcGluZzsKQEAgLTI3MzYsNyArMjc2OCw4IEBACiAgICAgdHlwZS0+dHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKIAogICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKLSAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgeworICAgICAgICBpZiAoc2xvdC0+c2xvdCA8IDAKKyAgICAgICAgICAgIHx8IChzaXplX3Qpc2xvdC0+c2xvdCA+PSBQeV9BUlJBWV9MRU5HVEgoc2xvdG9mZnNldHMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBzbG90IG9mZnNldCIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CkBAIC0yNzc1LDEwICsyODA4LDIwIEBACiAKICAgICAvKiBTZXQgdHlwZS5fX21vZHVsZV9fICovCiAgICAgcyA9IHN0cnJjaHIoc3BlYy0+bmFtZSwgJy4nKTsKLSAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLAotICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpKTsKKyAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgIG1vZG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgc3BlYy0+bmFtZSwgKFB5X3NzaXplX3QpKHMgLSBzcGVjLT5uYW1lKSk7CisgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLCBtb2RuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKG1vZG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAiYnVpbHRpbiB0eXBlICUuMjAwcyBoYXMgbm8gX19tb2R1bGVfXyBhdHRyaWJ1dGUiLAorICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUpKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KIAogICAgIHJldHVybiAoUHlPYmplY3QqKXJlczsKIApAQCAtMjc5NiwxMSArMjgzOSwxMSBAQAogdm9pZCAqCiBQeVR5cGVfR2V0U2xvdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzbG90KQogewotICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUodHlwZSwgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKHR5cGUsIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHx8IHNsb3QgPCAwKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgeworICAgIGlmICgoc2l6ZV90KXNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgewogICAgICAgICAvKiBFeHRlbnNpb24gbW9kdWxlIHJlcXVlc3Rpbmcgc2xvdCBmcm9tIGEgZnV0dXJlIHZlcnNpb24gKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjgyMSw4ICsyODY0LDEyIEBACiAgICAgICAgIC8qIGZhc3QgcGF0aCAqLwogICAgICAgICBoID0gTUNBQ0hFX0hBU0hfTUVUSE9EKHR5cGUsIG5hbWUpOwogICAgICAgICBpZiAobWV0aG9kX2NhY2hlW2hdLnZlcnNpb24gPT0gdHlwZS0+dHBfdmVyc2lvbl90YWcgJiYKLSAgICAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS5uYW1lID09IG5hbWUpCisgICAgICAgICAgICBtZXRob2RfY2FjaGVbaF0ubmFtZSA9PSBuYW1lKSB7CisjaWYgTUNBQ0hFX1NUQVRTCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfaGl0cysrOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbWV0aG9kX2NhY2hlW2hdLnZhbHVlOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogTG9vayBpbiB0cF9kaWN0IG9mIHR5cGVzIGluIE1STyAqLwpAQCAtMjg1Niw2ICsyOTAzLDEzIEBACiAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS52ZXJzaW9uID0gdHlwZS0+dHBfdmVyc2lvbl90YWc7CiAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS52YWx1ZSA9IHJlczsgIC8qIGJvcnJvd2VkICovCiAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgYXNzZXJ0KCgoUHlBU0NJSU9iamVjdCAqKShuYW1lKSktPmhhc2ggIT0gLTEpOworI2lmIE1DQUNIRV9TVEFUUworICAgICAgICBpZiAobWV0aG9kX2NhY2hlW2hdLm5hbWUgIT0gUHlfTm9uZSAmJiBtZXRob2RfY2FjaGVbaF0ubmFtZSAhPSBuYW1lKQorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX21pc3NlcysrOworI2VuZGlmCiAgICAgICAgIFB5X0RFQ1JFRihtZXRob2RfY2FjaGVbaF0ubmFtZSk7CiAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS5uYW1lID0gbmFtZTsKICAgICB9CkBAIC0zNTA2LDE3ICszNTYwLDE4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWVxdWl2X3N0cnVjdHMoUHlUeXBlT2JqZWN0ICphLCBQeVR5cGVPYmplY3QgKmIpCitjb21wYXRpYmxlX3dpdGhfdHBfYmFzZShQeVR5cGVPYmplY3QgKmNoaWxkKQogewotICAgIHJldHVybiBhID09IGIgfHwKLSAgICAgICAgICAgKGEgIT0gTlVMTCAmJgotICAgICAgICBiICE9IE5VTEwgJiYKLSAgICAgICAgYS0+dHBfYmFzaWNzaXplID09IGItPnRwX2Jhc2ljc2l6ZSAmJgotICAgICAgICBhLT50cF9pdGVtc2l6ZSA9PSBiLT50cF9pdGVtc2l6ZSAmJgotICAgICAgICBhLT50cF9kaWN0b2Zmc2V0ID09IGItPnRwX2RpY3RvZmZzZXQgJiYKLSAgICAgICAgYS0+dHBfd2Vha2xpc3RvZmZzZXQgPT0gYi0+dHBfd2Vha2xpc3RvZmZzZXQgJiYKLSAgICAgICAgKChhLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykgPT0KLSAgICAgICAgIChiLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykpKTsKKyAgICBQeVR5cGVPYmplY3QgKnBhcmVudCA9IGNoaWxkLT50cF9iYXNlOworICAgIHJldHVybiAocGFyZW50ICE9IE5VTEwgJiYKKyAgICAgICAgICAgIGNoaWxkLT50cF9iYXNpY3NpemUgPT0gcGFyZW50LT50cF9iYXNpY3NpemUgJiYKKyAgICAgICAgICAgIGNoaWxkLT50cF9pdGVtc2l6ZSA9PSBwYXJlbnQtPnRwX2l0ZW1zaXplICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfZGljdG9mZnNldCA9PSBwYXJlbnQtPnRwX2RpY3RvZmZzZXQgJiYKKyAgICAgICAgICAgIGNoaWxkLT50cF93ZWFrbGlzdG9mZnNldCA9PSBwYXJlbnQtPnRwX3dlYWtsaXN0b2Zmc2V0ICYmCisgICAgICAgICAgICAoKGNoaWxkLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykgPT0KKyAgICAgICAgICAgICAocGFyZW50LT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykpICYmCisgICAgICAgICAgICAoY2hpbGQtPnRwX2RlYWxsb2MgPT0gc3VidHlwZV9kZWFsbG9jIHx8CisgICAgICAgICAgICAgY2hpbGQtPnRwX2RlYWxsb2MgPT0gcGFyZW50LT50cF9kZWFsbG9jKSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTM1MzQsNiArMzU4OSwxMCBAQAogICAgICAgICBzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKIAogICAgIC8qIENoZWNrIHNsb3RzIGNvbXBsaWFuY2UgKi8KKyAgICBpZiAoIShhLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHx8CisgICAgICAgICEoYi0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgc2xvdHNfYSA9ICgoUHlIZWFwVHlwZU9iamVjdCAqKWEpLT5odF9zbG90czsKICAgICBzbG90c19iID0gKChQeUhlYXBUeXBlT2JqZWN0ICopYiktPmh0X3Nsb3RzOwogICAgIGlmIChzbG90c19hICYmIHNsb3RzX2IpIHsKQEAgLTM1NDksOSArMzYwOCw3IEBACiB7CiAgICAgUHlUeXBlT2JqZWN0ICpuZXdiYXNlLCAqb2xkYmFzZTsKIAotICAgIGlmIChuZXd0by0+dHBfZGVhbGxvYyAhPSBvbGR0by0+dHBfZGVhbGxvYyB8fAotICAgICAgICBuZXd0by0+dHBfZnJlZSAhPSBvbGR0by0+dHBfZnJlZSkKLSAgICB7CisgICAgaWYgKG5ld3RvLT50cF9mcmVlICE9IG9sZHRvLT50cF9mcmVlKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXMgYXNzaWdubWVudDogIgogICAgICAgICAgICAgICAgICAgICAgIiclcycgZGVhbGxvY2F0b3IgZGlmZmVycyBmcm9tICclcyciLApAQCAtMzU2MCwxMSArMzYxNywyMSBAQAogICAgICAgICAgICAgICAgICAgICAgb2xkdG8tPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgLyoKKyAgICAgSXQncyB0cmlja3kgdG8gdGVsbCBpZiB0d28gYXJiaXRyYXJ5IHR5cGVzIGFyZSBzdWZmaWNpZW50bHkgY29tcGF0aWJsZSBhcworICAgICB0byBiZSBpbnRlcmNoYW5nZWFibGU7IGUuZy4sIGV2ZW4gaWYgdGhleSBoYXZlIHRoZSBzYW1lIHRwX2Jhc2ljc2l6ZSwgdGhleQorICAgICBtaWdodCBoYXZlIHRvdGFsbHkgZGlmZmVyZW50IHN0cnVjdCBmaWVsZHMuIEl0J3MgbXVjaCBlYXNpZXIgdG8gdGVsbCBpZiBhCisgICAgIHR5cGUgYW5kIGl0cyBzdXBlcnR5cGUgYXJlIGNvbXBhdGlibGU7IGUuZy4sIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZQorICAgICB0cF9iYXNpY3NpemUsIHRoZW4gdGhhdCBtZWFucyB0aGV5IGhhdmUgaWRlbnRpY2FsIGZpZWxkcy4gU28gdG8gY2hlY2sKKyAgICAgd2hldGhlciB0d28gYXJiaXRyYXJ5IHR5cGVzIGFyZSBjb21wYXRpYmxlLCB3ZSBmaXJzdCBmaW5kIHRoZSBoaWdoZXN0CisgICAgIHN1cGVydHlwZSB0aGF0IGVhY2ggaXMgY29tcGF0aWJsZSB3aXRoLCBhbmQgdGhlbiBpZiB0aG9zZSBzdXBlcnR5cGVzIGFyZQorICAgICBjb21wYXRpYmxlIHRoZW4gdGhlIG9yaWdpbmFsIHR5cGVzIG11c3QgYWxzbyBiZSBjb21wYXRpYmxlLgorICAgICovCiAgICAgbmV3YmFzZSA9IG5ld3RvOwogICAgIG9sZGJhc2UgPSBvbGR0bzsKLSAgICB3aGlsZSAoZXF1aXZfc3RydWN0cyhuZXdiYXNlLCBuZXdiYXNlLT50cF9iYXNlKSkKKyAgICB3aGlsZSAoY29tcGF0aWJsZV93aXRoX3RwX2Jhc2UobmV3YmFzZSkpCiAgICAgICAgIG5ld2Jhc2UgPSBuZXdiYXNlLT50cF9iYXNlOwotICAgIHdoaWxlIChlcXVpdl9zdHJ1Y3RzKG9sZGJhc2UsIG9sZGJhc2UtPnRwX2Jhc2UpKQorICAgIHdoaWxlIChjb21wYXRpYmxlX3dpdGhfdHBfYmFzZShvbGRiYXNlKSkKICAgICAgICAgb2xkYmFzZSA9IG9sZGJhc2UtPnRwX2Jhc2U7CiAgICAgaWYgKG5ld2Jhc2UgIT0gb2xkYmFzZSAmJgogICAgICAgICAobmV3YmFzZS0+dHBfYmFzZSAhPSBvbGRiYXNlLT50cF9iYXNlIHx8CkBAIC0zNTk5LDE3ICszNjY2LDcxIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbmV3dG8gPSAoUHlUeXBlT2JqZWN0ICopdmFsdWU7Ci0gICAgaWYgKCEobmV3dG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgfHwKLSAgICAgICAgIShvbGR0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkKLSAgICB7CisgICAgLyogSW4gdmVyc2lvbnMgb2YgQ1B5dGhvbiBwcmlvciB0byAzLjUsIHRoZSBjb2RlIGluCisgICAgICAgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudCB3YXMgbm90IHNldCB1cCB0byBjb3JyZWN0bHkgY2hlY2sgZm9yIG1lbW9yeQorICAgICAgIGxheW91dCAvIHNsb3QgLyBldGMuIGNvbXBhdGliaWxpdHkgZm9yIG5vbi1IRUFQVFlQRSBjbGFzc2VzLCBzbyB3ZSBqdXN0CisgICAgICAgZGlzYWxsb3dlZCBfX2NsYXNzX18gYXNzaWdubWVudCBpbiBhbnkgY2FzZSB0aGF0IHdhc24ndCBIRUFQVFlQRSAtPgorICAgICAgIEhFQVBUWVBFLgorCisgICAgICAgRHVyaW5nIHRoZSAzLjUgZGV2ZWxvcG1lbnQgY3ljbGUsIHdlIGZpeGVkIHRoZSBjb2RlIGluCisgICAgICAgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudCB0byBjb3JyZWN0bHkgY2hlY2sgY29tcGF0aWJpbGl0eSBiZXR3ZWVuCisgICAgICAgYXJiaXRyYXJ5IHR5cGVzLCBhbmQgc3RhcnRlZCBhbGxvd2luZyBfX2NsYXNzX18gYXNzaWdubWVudCBpbiBhbGwgY2FzZXMKKyAgICAgICB3aGVyZSB0aGUgb2xkIGFuZCBuZXcgdHlwZXMgZGlkIGluIGZhY3QgaGF2ZSBjb21wYXRpYmxlIHNsb3RzIGFuZAorICAgICAgIG1lbW9yeSBsYXlvdXQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IHdlcmUgaW1wbGVtZW50ZWQgYXMgSEVBUFRZUEVzCisgICAgICAgb3Igbm90KS4KKworICAgICAgIEp1c3QgYmVmb3JlIDMuNSB3YXMgcmVsZWFzZWQsIHRob3VnaCwgd2UgZGlzY292ZXJlZCB0aGF0IHRoaXMgbGVkIHRvCisgICAgICAgcHJvYmxlbXMgd2l0aCBpbW11dGFibGUgdHlwZXMgbGlrZSBpbnQsIHdoZXJlIHRoZSBpbnRlcnByZXRlciBhc3N1bWVzCisgICAgICAgdGhleSBhcmUgaW1tdXRhYmxlIGFuZCBpbnRlcm5zIHNvbWUgdmFsdWVzLiBGb3JtZXJseSB0aGlzIHdhc24ndCBhCisgICAgICAgcHJvYmxlbSwgYmVjYXVzZSB0aGV5IHJlYWxseSB3ZXJlIGltbXV0YWJsZSAtLSBpbiBwYXJ0aWN1bGFyLCBhbGwgdGhlCisgICAgICAgdHlwZXMgd2hlcmUgdGhlIGludGVycHJldGVyIGFwcGxpZWQgdGhpcyBpbnRlcm5pbmcgdHJpY2sgaGFwcGVuZWQgdG8KKyAgICAgICBhbHNvIGJlIHN0YXRpY2FsbHkgYWxsb2NhdGVkLCBzbyB0aGUgb2xkIEhFQVBUWVBFIHJ1bGVzIHdlcmUKKyAgICAgICAiYWNjaWRlbnRhbGx5IiBzdG9wcGluZyB0aGVtIGZyb20gYWxsb3dpbmcgX19jbGFzc19fIGFzc2lnbm1lbnQuIEJ1dAorICAgICAgIHdpdGggdGhlIGNoYW5nZXMgdG8gX19jbGFzc19fIGFzc2lnbm1lbnQsIHdlIHN0YXJ0ZWQgYWxsb3dpbmcgY29kZSBsaWtlCisKKyAgICAgICAgIGNsYXNzIE15SW50KGludCk6CisgICAgICAgICAgICAgLi4uCisgICAgICAgICAjIE1vZGlmaWVzIHRoZSB0eXBlIG9mICphbGwqIGluc3RhbmNlcyBvZiAxIGluIHRoZSB3aG9sZSBwcm9ncmFtLAorICAgICAgICAgIyBpbmNsdWRpbmcgZnV0dXJlIGluc3RhbmNlcyAoISksIGJlY2F1c2UgdGhlIDEgb2JqZWN0IGlzIGludGVybmVkLgorICAgICAgICAgKDEpLl9fY2xhc3NfXyA9IE15SW50CisKKyAgICAgICAoc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjQ5MTIpLgorCisgICAgICAgSW4gdGhlb3J5IHRoZSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvIGlkZW50aWZ5IHdoaWNoIGNsYXNzZXMgcmVseSBvbgorICAgICAgIHRoaXMgaW52YXJpYW50IGFuZCBzb21laG93IGRpc2FsbG93IF9fY2xhc3NfXyBhc3NpZ25tZW50IG9ubHkgZm9yIHRoZW0sCisgICAgICAgcGVyaGFwcyB2aWEgc29tZSBtZWNoYW5pc20gbGlrZSBhIG5ldyBQeV9UUEZMQUdTX0lNTVVUQUJMRSBmbGFnIChhCisgICAgICAgImJsYWNrbGlzdGluZyIgYXBwcm9hY2gpLiBCdXQgaW4gcHJhY3RpY2UsIHNpbmNlIHRoaXMgcHJvYmxlbSB3YXNuJ3QKKyAgICAgICBub3RpY2VkIGxhdGUgaW4gdGhlIDMuNSBSQyBjeWNsZSwgd2UncmUgdGFraW5nIHRoZSBjb25zZXJ2YXRpdmUKKyAgICAgICBhcHByb2FjaCBhbmQgcmVpbnN0YXRpbmcgdGhlIHNhbWUgSEVBUFRZUEUtPkhFQVBUWVBFIGNoZWNrIHRoYXQgd2UgdXNlZAorICAgICAgIHRvIGhhdmUsIHBsdXMgYSAid2hpdGVsaXN0Ii4gRm9yIG5vdywgdGhlIHdoaXRlbGlzdCBjb25zaXN0cyBvbmx5IG9mCisgICAgICAgTW9kdWxlVHlwZSBzdWJ0eXBlcywgc2luY2UgdGhvc2UgYXJlIHRoZSBjYXNlcyB0aGF0IG1vdGl2YXRlZCB0aGUgcGF0Y2gKKyAgICAgICBpbiB0aGUgZmlyc3QgcGxhY2UgLS0gc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjI5ODYgLS0gYW5kCisgICAgICAgc2luY2UgbW9kdWxlIG9iamVjdHMgYXJlIG11dGFibGUgd2UgY2FuIGJlIHN1cmUgdGhhdCB0aGV5IGFyZQorICAgICAgIGRlZmluaXRlbHkgbm90IGJlaW5nIGludGVybmVkLiBTbyBub3cgd2UgYWxsb3cgSEVBUFRZUEUtPkhFQVBUWVBFICpvcioKKyAgICAgICBNb2R1bGVUeXBlIHN1YnR5cGUgLT4gTW9kdWxlVHlwZSBzdWJ0eXBlLgorCisgICAgICAgU28gZmFyIGFzIHdlIGtub3csIGFsbCB0aGUgY29kZSBiZXlvbmQgdGhlIGZvbGxvd2luZyAnaWYnIHN0YXRlbWVudAorICAgICAgIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBub24tSEVBUFRZUEUgY2xhc3NlcywgYW5kIHRoZSBIRUFQVFlQRSBjaGVjayBpcworICAgICAgIG5lZWRlZCBvbmx5IHRvIHByb3RlY3QgdGhhdCBzdWJzZXQgb2Ygbm9uLUhFQVBUWVBFIGNsYXNzZXMgZm9yIHdoaWNoCisgICAgICAgdGhlIGludGVycHJldGVyIGhhcyBiYWtlZCBpbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGFsbCBpbnN0YW5jZXMgYXJlCisgICAgICAgdHJ1bHkgaW1tdXRhYmxlLgorICAgICovCisgICAgaWYgKCEoUHlUeXBlX0lzU3VidHlwZShuZXd0bywgJlB5TW9kdWxlX1R5cGUpICYmCisgICAgICAgICAgUHlUeXBlX0lzU3VidHlwZShvbGR0bywgJlB5TW9kdWxlX1R5cGUpKSAmJgorICAgICAgICAoIShuZXd0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB8fAorICAgICAgICAgIShvbGR0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJfX2NsYXNzX18gYXNzaWdubWVudDogb25seSBmb3IgaGVhcCB0eXBlcyIpOworICAgICAgICAgICAgICAgICAgICAgIl9fY2xhc3NfXyBhc3NpZ25tZW50IG9ubHkgc3VwcG9ydGVkIGZvciBoZWFwIHR5cGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJvciBNb2R1bGVUeXBlIHN1YmNsYXNzZXMiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGlmIChjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KG9sZHRvLCBuZXd0bywgIl9fY2xhc3NfXyIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihuZXd0byk7CisgICAgICAgIGlmIChuZXd0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQorICAgICAgICAgICAgUHlfSU5DUkVGKG5ld3RvKTsKICAgICAgICAgUHlfVFlQRShzZWxmKSA9IG5ld3RvOwotICAgICAgICBQeV9ERUNSRUYob2xkdG8pOworICAgICAgICBpZiAob2xkdG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGR0byk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTM5NzIsNDggKzQwOTMsODcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV80KFB5T2JqZWN0ICpvYmopCityZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmosIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwogICAgIFB5T2JqZWN0ICpuZXdvYmosICpuZXdhcmdzLCAqc3RhdGUsICpsaXN0aXRlbXMsICpkaWN0aXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKIAotICAgIGlmIChfUHlPYmplY3RfR2V0TmV3QXJndW1lbnRzKG9iaiwgJmFyZ3MsICZrd2FyZ3MpIDwgMCkgeworICAgIGlmIChfUHlPYmplY3RfR2V0TmV3QXJndW1lbnRzKG9iaiwgJmFyZ3MsICZrd2FyZ3MpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoa3dhcmdzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmIChjb3B5cmVnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKLSAgICBQeV9ERUNSRUYoY29weXJlZyk7Ci0gICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3YXJncykgPT0gMCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKKyAgICAgICAgUHlPYmplY3QgKmNsczsKKyAgICAgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgICAgIFB5X1hERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9fKTsKKyAgICAgICAgUHlfREVDUkVGKGNvcHlyZWcpOworICAgICAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcobisxKTsKKyAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOworICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCBjbHMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGkrMSwgdik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIGlmIChwcm90byA+PSA0KSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworCisgICAgICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfZXhfXyk7CisgICAgICAgIFB5X0RFQ1JFRihjb3B5cmVnKTsKKyAgICAgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX1BhY2soMywgUHlfVFlQRShvYmopLCBhcmdzLCBrd2FyZ3MpOwogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Q7IHNpbmNlIF9fZ2V0bmV3YXJnc19leF9fIHJldHVybmVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50cy4iKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgUHlfREVDUkVGKGNvcHlyZWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3YXJncyA9IFB5VHVwbGVfUGFjaygzLCBQeV9UWVBFKG9iaiksIGFyZ3MsIGt3YXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKwogICAgIHN0YXRlID0gX1B5T2JqZWN0X0dldFN0YXRlKG9iaik7CiAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CkBAIC00MDM2LDg1ICs0MTk2LDEyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV8yKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKmNsczsKLSAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICphcmdzMiA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdGF0ZSA9IE5VTEwsICpsaXN0aXRlbXMgPSBOVUxMLCAqZGljdGl0ZW1zID0gTlVMTDsKLSAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEwsICpuZXdvYmogPSBOVUxMLCAqcmVzID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7Ci0KLSAgICBpZiAoX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhvYmosICZhcmdzLCAma3dhcmdzKSA8IDApIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMKTsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChrd2FyZ3MgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlEaWN0X1NpemUoa3dhcmdzKSA+IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0OyBzaW5jZSBfX2dldG5ld2FyZ3NfZXhfXyByZXR1cm5lZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnRzLiIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9DTEVBUihrd2FyZ3MpOwotICAgIH0KLQotICAgIHN0YXRlID0gX1B5T2JqZWN0X0dldFN0YXRlKG9iaik7Ci0gICAgaWYgKHN0YXRlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgaWYgKF9QeU9iamVjdF9HZXRJdGVtc0l0ZXIob2JqLCAmbGlzdGl0ZW1zLCAmZGljdGl0ZW1zKSA8IDApCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7Ci0gICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9fKTsKLSAgICBpZiAobmV3b2JqID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7Ci0gICAgYXJnczIgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChhcmdzMiA9PSBOVUxMKQotICAgICAgICBnb3RvIGVuZDsKLSAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOwotICAgIFB5X0lOQ1JFRihjbHMpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIDAsIGNscyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzMiwgaSsxLCB2KTsKLSAgICB9Ci0KLSAgICByZXMgPSBQeVR1cGxlX1BhY2soNSwgbmV3b2JqLCBhcmdzMiwgc3RhdGUsIGxpc3RpdGVtcywgZGljdGl0ZW1zKTsKLQotICBlbmQ6Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICBQeV9YREVDUkVGKGFyZ3MyKTsKLSAgICBQeV9YREVDUkVGKHN0YXRlKTsKLSAgICBQeV9YREVDUkVGKGxpc3RpdGVtcyk7Ci0gICAgUHlfWERFQ1JFRihkaWN0aXRlbXMpOwotICAgIFB5X1hERUNSRUYoY29weXJlZyk7Ci0gICAgUHlfWERFQ1JFRihuZXdvYmopOwotICAgIHJldHVybiByZXM7Ci19Ci0KIC8qCiAgKiBUaGVyZSB3ZXJlIHR3byBwcm9ibGVtcyB3aGVuIG9iamVjdC5fX3JlZHVjZV9fIGFuZCBvYmplY3QuX19yZWR1Y2VfZXhfXwogICogd2VyZSBpbXBsZW1lbnRlZCBpbiB0aGUgc2FtZSBmdW5jdGlvbjoKICAqICAtIHRyeWluZyB0byBwaWNrbGUgYW4gb2JqZWN0IHdpdGggYSBjdXN0b20gX19yZWR1Y2VfXyBtZXRob2QgdGhhdAogICogICAgZmVsbCBiYWNrIHRvIG9iamVjdC5fX3JlZHVjZV9fIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBsZWQgdG8KLSAqICAgIGluZmluaXRlIHJlY3Vyc2lvbiBhdCBQeXRob24gbGV2ZWwgYW5kIGV2ZW50dWFsIFJ1bnRpbWVFcnJvci4KKyAqICAgIGluZmluaXRlIHJlY3Vyc2lvbiBhdCBQeXRob24gbGV2ZWwgYW5kIGV2ZW50dWFsIFJlY3Vyc2lvbkVycm9yLgogICogIC0gUGlja2xpbmcgb2JqZWN0cyB0aGF0IGxpZWQgYWJvdXQgdGhlaXIgdHlwZSBieSBvdmVyd3JpdGluZyB0aGUKICAqICAgIF9fY2xhc3NfXyBkZXNjcmlwdG9yIGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uIGF0IEMgbGV2ZWwKICAqICAgIGFuZCBldmVudHVhbCBzZWdmYXVsdC4KQEAgLTQxMjksMTAgKzQyMTYsOCBAQAogewogICAgIFB5T2JqZWN0ICpjb3B5cmVnLCAqcmVzOwogCi0gICAgaWYgKHByb3RvID49IDQpCi0gICAgICAgIHJldHVybiByZWR1Y2VfNChzZWxmKTsKLSAgICBlbHNlIGlmIChwcm90byA+PSAyKQotICAgICAgICByZXR1cm4gcmVkdWNlXzIoc2VsZik7CisgICAgaWYgKHByb3RvID49IDIpCisgICAgICAgIHJldHVybiByZWR1Y2VfbmV3b2JqKHNlbGYsIHByb3RvKTsKIAogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmICghY29weXJlZykKQEAgLTQ1NDcsNiArNDYzMiw3IEBACiAjZGVmaW5lIENPUFlTTE9UKFNMT1QpIFwKICAgICBpZiAoIXR5cGUtPlNMT1QgJiYgU0xPVERFRklORUQoU0xPVCkpIHR5cGUtPlNMT1QgPSBiYXNlLT5TTE9UCiAKKyNkZWZpbmUgQ09QWUFTWU5DKFNMT1QpIENPUFlTTE9UKHRwX2FzX2FzeW5jLT5TTE9UKQogI2RlZmluZSBDT1BZTlVNKFNMT1QpIENPUFlTTE9UKHRwX2FzX251bWJlci0+U0xPVCkKICNkZWZpbmUgQ09QWVNFUShTTE9UKSBDT1BZU0xPVCh0cF9hc19zZXF1ZW5jZS0+U0xPVCkKICNkZWZpbmUgQ09QWU1BUChTTE9UKSBDT1BZU0xPVCh0cF9hc19tYXBwaW5nLT5TTE9UKQpAQCAtNDU5Miw2ICs0Njc4LDE3IEBACiAgICAgICAgIENPUFlOVU0obmJfaW5wbGFjZV90cnVlX2RpdmlkZSk7CiAgICAgICAgIENPUFlOVU0obmJfaW5wbGFjZV9mbG9vcl9kaXZpZGUpOwogICAgICAgICBDT1BZTlVNKG5iX2luZGV4KTsKKyAgICAgICAgQ09QWU5VTShuYl9tYXRyaXhfbXVsdGlwbHkpOworICAgICAgICBDT1BZTlVNKG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5KTsKKyAgICB9CisKKyAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCAmJiBiYXNlLT50cF9hc19hc3luYyAhPSBOVUxMKSB7CisgICAgICAgIGJhc2ViYXNlID0gYmFzZS0+dHBfYmFzZTsKKyAgICAgICAgaWYgKGJhc2ViYXNlLT50cF9hc19hc3luYyA9PSBOVUxMKQorICAgICAgICAgICAgYmFzZWJhc2UgPSBOVUxMOworICAgICAgICBDT1BZQVNZTkMoYW1fYXdhaXQpOworICAgICAgICBDT1BZQVNZTkMoYW1fYWl0ZXIpOworICAgICAgICBDT1BZQVNZTkMoYW1fYW5leHQpOwogICAgIH0KIAogICAgIGlmICh0eXBlLT50cF9hc19zZXF1ZW5jZSAhPSBOVUxMICYmIGJhc2UtPnRwX2FzX3NlcXVlbmNlICE9IE5VTEwpIHsKQEAgLTQ4MDMsMTQgKzQ5MDAsMTEgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpiID0gUHlUdXBsZV9HRVRfSVRFTShiYXNlcywgaSk7CiAgICAgICAgICAgICBpZiAoUHlUeXBlX0NoZWNrKGIpICYmCiAgICAgICAgICAgICAgICAgKCgoUHlUeXBlT2JqZWN0ICopYiktPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlszMDBdOwotICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYnV0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdHMgYmFzZSB0eXBlICclLjEwMHMnIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoKFB5VHlwZU9iamVjdCAqKWIpLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybihQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIGJ1ZikgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0cyBiYXNlIHR5cGUgJyUuMTAwcycgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgKChQeVR5cGVPYmplY3QgKiliKS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00ODY2LDYgKzQ5NjAsOCBAQAogICAgIC8qIFNvbWUgbW9yZSBzcGVjaWFsIHN0dWZmICovCiAgICAgYmFzZSA9IHR5cGUtPnRwX2Jhc2U7CiAgICAgaWYgKGJhc2UgIT0gTlVMTCkgeworICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgPT0gTlVMTCkKKyAgICAgICAgICAgIHR5cGUtPnRwX2FzX2FzeW5jID0gYmFzZS0+dHBfYXNfYXN5bmM7CiAgICAgICAgIGlmICh0eXBlLT50cF9hc19udW1iZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHR5cGUtPnRwX2FzX251bWJlciA9IGJhc2UtPnRwX2FzX251bWJlcjsKICAgICAgICAgaWYgKHR5cGUtPnRwX2FzX3NlcXVlbmNlID09IE5VTEwpCkBAIC00ODg2LDE2ICs0OTgyLDYgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgLyogV2FybiBmb3IgYSB0eXBlIHRoYXQgaW1wbGVtZW50cyB0cF9jb21wYXJlIChub3cga25vd24gYXMKLSAgICAgICB0cF9yZXNlcnZlZCkgYnV0IG5vdCB0cF9yaWNoY29tcGFyZS4gKi8KLSAgICBpZiAodHlwZS0+dHBfcmVzZXJ2ZWQgJiYgIXR5cGUtPnRwX3JpY2hjb21wYXJlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiVHlwZSAlLjEwMHMgZGVmaW5lcyB0cF9yZXNlcnZlZCAoZm9ybWVybHkgdHBfY29tcGFyZSkgIgotICAgICAgICAgICAgImJ1dCBub3QgdHBfcmljaGNvbXBhcmUuIENvbXBhcmlzb25zIG1heSBub3QgYmVoYXZlIGFzIGludGVuZGVkLiIsCi0gICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KICAgICAvKiBBbGwgZG9uZSAtLSBzZXQgdGhlIHJlYWR5IGZsYWcgKi8KICAgICBhc3NlcnQodHlwZS0+dHBfZGljdCAhPSBOVUxMKTsKICAgICB0eXBlLT50cF9mbGFncyA9CkBAIC01NzYyLDYgKzU4NDgsNyBAQAogU0xPVDFCSU4oc2xvdF9uYl9hZGQsIG5iX2FkZCwgIl9fYWRkX18iLCAiX19yYWRkX18iKQogU0xPVDFCSU4oc2xvdF9uYl9zdWJ0cmFjdCwgbmJfc3VidHJhY3QsICJfX3N1Yl9fIiwgIl9fcnN1Yl9fIikKIFNMT1QxQklOKHNsb3RfbmJfbXVsdGlwbHksIG5iX211bHRpcGx5LCAiX19tdWxfXyIsICJfX3JtdWxfXyIpCitTTE9UMUJJTihzbG90X25iX21hdHJpeF9tdWx0aXBseSwgbmJfbWF0cml4X211bHRpcGx5LCAiX19tYXRtdWxfXyIsICJfX3JtYXRtdWxfXyIpCiBTTE9UMUJJTihzbG90X25iX3JlbWFpbmRlciwgbmJfcmVtYWluZGVyLCAiX19tb2RfXyIsICJfX3Jtb2RfXyIpCiBTTE9UMUJJTihzbG90X25iX2Rpdm1vZCwgbmJfZGl2bW9kLCAiX19kaXZtb2RfXyIsICJfX3JkaXZtb2RfXyIpCiAKQEAgLTU4NTUsNiArNTk0Miw3IEBACiBTTE9UMShzbG90X25iX2lucGxhY2VfYWRkLCAiX19pYWRkX18iLCBQeU9iamVjdCAqLCAiTyIpCiBTTE9UMShzbG90X25iX2lucGxhY2Vfc3VidHJhY3QsICJfX2lzdWJfXyIsIFB5T2JqZWN0ICosICJPIikKIFNMT1QxKHNsb3RfbmJfaW5wbGFjZV9tdWx0aXBseSwgIl9faW11bF9fIiwgUHlPYmplY3QgKiwgIk8iKQorU0xPVDEoc2xvdF9uYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSwgIl9faW1hdG11bF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3JlbWFpbmRlciwgIl9faW1vZF9fIiwgUHlPYmplY3QgKiwgIk8iKQogLyogQ2FuJ3QgdXNlIFNMT1QxIGhlcmUsIGJlY2F1c2UgbmJfaW5wbGFjZV9wb3dlciBpcyB0ZXJuYXJ5ICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjI0NSw2ICs2MzMzLDU5IEBACiAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Nsb3RfYW1fYXdhaXQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19hd2FpdF9fKTsKKworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fYXdhaXRfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvYmplY3QgJS41MHMgZG9lcyBub3QgaGF2ZSBfX2F3YWl0X18gbWV0aG9kIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbG90X2FtX2FpdGVyKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fYWl0ZXJfXyk7CisKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2FpdGVyX18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAib2JqZWN0ICUuNTBzIGRvZXMgbm90IGhhdmUgX19haXRlcl9fIG1ldGhvZCIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2xvdF9hbV9hbmV4dChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihfX2FuZXh0X18pOworCisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19hbmV4dF9fKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9iamVjdCAlLjUwcyBkb2VzIG5vdCBoYXZlIF9fYW5leHRfXyBtZXRob2QiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KIAogLyoKIFRhYmxlIG1hcHBpbmcgX19mb29fXyBuYW1lcyB0byB0cF9mb28gb2Zmc2V0cyBhbmQgc2xvdF90cF9mb28gd3JhcHBlciBmdW5jdGlvbnMuCkBAIC02MjYxLDYgKzY0MDIsNyBAQAogCiAjdW5kZWYgVFBTTE9UCiAjdW5kZWYgRkxTTE9UCisjdW5kZWYgQU1TTE9UCiAjdW5kZWYgRVRTTE9UCiAjdW5kZWYgU1FTTE9UCiAjdW5kZWYgTVBTTE9UCkBAIC02Mjc5LDYgKzY0MjEsOCBAQAogI2RlZmluZSBFVFNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXAogICAgIHtOQU1FLCBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBTTE9UKSwgKHZvaWQgKikoRlVOQ1RJT04pLCBXUkFQUEVSLCBcCiAgICAgIFB5RG9jX1NUUihET0MpfQorI2RlZmluZSBBTVNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXAorICAgIEVUU0xPVChOQU1FLCBhc19hc3luYy5TTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKQogI2RlZmluZSBTUVNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXAogICAgIEVUU0xPVChOQU1FLCBhc19zZXF1ZW5jZS5TTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKQogI2RlZmluZSBNUFNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXApAQCAtNjM1OCw2ICs2NTAyLDEzIEBACiAgICAgICAgICAgICJDcmVhdGUgYW5kIHJldHVybiBuZXcgb2JqZWN0LiAgU2VlIGhlbHAodHlwZSkgZm9yIGFjY3VyYXRlIHNpZ25hdHVyZS4iKSwKICAgICBUUFNMT1QoIl9fZGVsX18iLCB0cF9maW5hbGl6ZSwgc2xvdF90cF9maW5hbGl6ZSwgKHdyYXBwZXJmdW5jKXdyYXBfZGVsLCAiIiksCiAKKyAgICBBTVNMT1QoIl9fYXdhaXRfXyIsIGFtX2F3YWl0LCBzbG90X2FtX2F3YWl0LCB3cmFwX3VuYXJ5ZnVuYywKKyAgICAgICAgICAgIl9fYXdhaXRfXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBhbiBpdGVyYXRvciB0byBiZSB1c2VkIGluIGF3YWl0IGV4cHJlc3Npb24uIiksCisgICAgQU1TTE9UKCJfX2FpdGVyX18iLCBhbV9haXRlciwgc2xvdF9hbV9haXRlciwgd3JhcF91bmFyeWZ1bmMsCisgICAgICAgICAgICJfX2FpdGVyX18oJHNlbGYsIC8pXG4tLVxuXG5SZXR1cm4gYW4gYXdhaXRhYmxlLCB0aGF0IHJlc29sdmVzIGluIGFzeW5jaHJvbm91cyBpdGVyYXRvci4iKSwKKyAgICBBTVNMT1QoIl9fYW5leHRfXyIsIGFtX2FuZXh0LCBzbG90X2FtX2FuZXh0LCB3cmFwX3VuYXJ5ZnVuYywKKyAgICAgICAgICAgIl9fYW5leHRfXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBhIHZhbHVlIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4iKSwKKwogICAgIEJJTlNMT1QoIl9fYWRkX18iLCBuYl9hZGQsIHNsb3RfbmJfYWRkLAogICAgICAgICAgICAiKyIpLAogICAgIFJCSU5TTE9UKCJfX3JhZGRfXyIsIG5iX2FkZCwgc2xvdF9uYl9hZGQsCkBAIC02NDM1LDYgKzY1ODYsMTIgQEAKICAgICAgICAgICAgIl9faW5kZXhfXygkc2VsZiwgLylcbi0tXG5cbiIKICAgICAgICAgICAgIlJldHVybiBzZWxmIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyLCBpZiBzZWxmIGlzIHN1aXRhYmxlICIKICAgICAgICAgICAgImZvciB1c2UgYXMgYW4gaW5kZXggaW50byBhIGxpc3QuIiksCisgICAgQklOU0xPVCgiX19tYXRtdWxfXyIsIG5iX21hdHJpeF9tdWx0aXBseSwgc2xvdF9uYl9tYXRyaXhfbXVsdGlwbHksCisgICAgICAgICAgICAiQCIpLAorICAgIFJCSU5TTE9UKCJfX3JtYXRtdWxfXyIsIG5iX21hdHJpeF9tdWx0aXBseSwgc2xvdF9uYl9tYXRyaXhfbXVsdGlwbHksCisgICAgICAgICAgICAgIkAiKSwKKyAgICBJQlNMT1QoIl9faW1hdG11bF9fIiwgbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHksIHNsb3RfbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHksCisgICAgICAgICAgIHdyYXBfYmluYXJ5ZnVuYywgIkA9IiksCiAgICAgTVBTTE9UKCJfX2xlbl9fIiwgbXBfbGVuZ3RoLCBzbG90X21wX2xlbmd0aCwgd3JhcF9sZW5mdW5jLAogICAgICAgICAgICAiX19sZW5fXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBsZW4oc2VsZikuIiksCiAgICAgTVBTTE9UKCJfX2dldGl0ZW1fXyIsIG1wX3N1YnNjcmlwdCwgc2xvdF9tcF9zdWJzY3JpcHQsCkBAIC02NTA0LDYgKzY2NjEsMTAgQEAKICAgICAgICAgcHRyID0gKGNoYXIgKil0eXBlLT50cF9hc19udW1iZXI7CiAgICAgICAgIG9mZnNldCAtPSBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19udW1iZXIpOwogICAgIH0KKyAgICBlbHNlIGlmICgoc2l6ZV90KW9mZnNldCA+PSBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYykpIHsKKyAgICAgICAgcHRyID0gKGNoYXIgKil0eXBlLT50cF9hc19hc3luYzsKKyAgICAgICAgb2Zmc2V0IC09IG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX2FzeW5jKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHB0ciA9IChjaGFyICopdHlwZTsKICAgICB9CkBAIC02NjU1LDE1ICs2ODE2LDE1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgc2xvdGRlZnNfaW5pdGlhbGl6ZWQgPSAwOwogLyogSW5pdGlhbGl6ZSB0aGUgc2xvdGRlZnMgdGFibGUgYnkgYWRkaW5nIGludGVybmVkIHN0cmluZyBvYmplY3RzIGZvciB0aGUKLSAgIG5hbWVzIGFuZCBzb3J0aW5nIHRoZSBlbnRyaWVzLiAqLworICAgbmFtZXMuICovCiBzdGF0aWMgdm9pZAogaW5pdF9zbG90ZGVmcyh2b2lkKQogewogICAgIHNsb3RkZWYgKnA7Ci0gICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAKLSAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgaWYgKHNsb3RkZWZzX2luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChwID0gc2xvdGRlZnM7IHAtPm5hbWU7IHArKykgewogICAgICAgICAvKiBTbG90cyBtdXN0IGJlIG9yZGVyZWQgYnkgdGhlaXIgb2Zmc2V0IGluIHRoZSBQeUhlYXBUeXBlT2JqZWN0LiAqLwpAQCAtNjY3Miw3ICs2ODMzLDE3IEBACiAgICAgICAgIGlmICghcC0+bmFtZV9zdHJvYmopCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJPdXQgb2YgbWVtb3J5IGludGVybmluZyBzbG90ZGVmIG5hbWVzIik7CiAgICAgfQotICAgIGluaXRpYWxpemVkID0gMTsKKyAgICBzbG90ZGVmc19pbml0aWFsaXplZCA9IDE7Cit9CisKKy8qIFVuZG8gaW5pdF9zbG90ZGVmcywgcmVsZWFzaW5nIHRoZSBpbnRlcm5lZCBzdHJpbmdzLiAqLworc3RhdGljIHZvaWQgY2xlYXJfc2xvdGRlZnModm9pZCkKK3sKKyAgICBzbG90ZGVmICpwOworICAgIGZvciAocCA9IHNsb3RkZWZzOyBwLT5uYW1lOyBwKyspIHsKKyAgICAgICAgUHlfQ0xFQVIocC0+bmFtZV9zdHJvYmopOworICAgIH0KKyAgICBzbG90ZGVmc19pbml0aWFsaXplZCA9IDA7CiB9CiAKIC8qIFVwZGF0ZSB0aGUgc2xvdHMgYWZ0ZXIgYXNzaWdubWVudCB0byBhIGNsYXNzICh0eXBlKSBhdHRyaWJ1dGUuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVzbG90cy5pbmMgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKaW5kZXggY2FhMWUwMy4uZGM3NTBjYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jCisrKyBiL09iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtNzMsMyArNzMsOSBAQAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgaHRfdHlwZS50cF9tZW1iZXJzKSwKIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGh0X3R5cGUudHBfZ2V0c2V0KSwKIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGh0X3R5cGUudHBfZnJlZSksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19udW1iZXIubmJfbWF0cml4X211bHRpcGx5KSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX251bWJlci5uYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYy5hbV9hd2FpdCksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYy5hbV9haXRlciksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYy5hbV9hbmV4dCksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBodF90eXBlLnRwX2ZpbmFsaXplKSwKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLnB5IGIvT2JqZWN0cy90eXBlc2xvdHMucHkKaW5kZXggYjI0YzdmNC4uYmEzN2M0MCAxMDA3NTUKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMucHkKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTEyLDYgKzEyLDggQEAKICAgICBtZW1iZXIgPSBtLmdyb3VwKDEpCiAgICAgaWYgbWVtYmVyLnN0YXJ0c3dpdGgoInRwXyIpOgogICAgICAgICBtZW1iZXIgPSAiaHRfdHlwZS4iK21lbWJlcgorICAgIGVsaWYgbWVtYmVyLnN0YXJ0c3dpdGgoImFtXyIpOgorICAgICAgICBtZW1iZXIgPSAiYXNfYXN5bmMuIittZW1iZXIKICAgICBlbGlmIG1lbWJlci5zdGFydHN3aXRoKCJuYl8iKToKICAgICAgICAgbWVtYmVyID0gImFzX251bWJlci4iK21lbWJlcgogICAgIGVsaWYgbWVtYmVyLnN0YXJ0c3dpdGgoIm1wXyIpOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYyBiL09iamVjdHMvdW5pY29kZWN0eXBlLmMKaW5kZXggZWE1NDBkNi4uZDhjOTVjOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYworKysgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEVYVEVOREVEX0NBU0VfTUFTSyAweDQwMDAKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIC8qIAorICAgIC8qCiAgICAgICAgVGhlc2UgYXJlIGVpdGhlciBkZWx0YXMgdG8gdGhlIGNoYXJhY3RlciBvciBvZmZzZXRzIGluCiAgICAgICAgX1B5VW5pY29kZV9FeHRlbmRlZENhc2UuCiAgICAgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggZTI4YmFlNC4uOTIyM2M5OSAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTI5MCw2ICsyOTAsOCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKIH07CiAKKyNpbmNsdWRlICJjbGluaWMvdW5pY29kZW9iamVjdC5jLmgiCisKIC8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgogICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCkBAIC01MTksMTAgKzUyMSw2IEBACiAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0NvcHkodW5pY29kZSk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKLXN0YXRpYyBPU1ZFUlNJT05JTkZPRVggd2ludmVyOwotI2VuZGlmCi0KIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC02NDUsNyArNjQzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKHZvaWQgKnMsIGludCBraW5kLAorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewpAQCAtNzI3LDcgKzcyNSw3IEBACiAgICAgX1B5X0RFQ19SRUZUT1RBTDsKICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHVuaWNvZGUpOwogCi0gICAgbmV3X3VuaWNvZGUgPSAoUHlPYmplY3QgKilQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdW5pY29kZSwgbmV3X3NpemUpOworICAgIG5ld191bmljb2RlID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQyh1bmljb2RlLCBuZXdfc2l6ZSk7CiAgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpIHsKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZSh1bmljb2RlKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTgxNiw3ICs4MTQsNyBAQAogICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CiAKICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSAtIDEpIHsKKyAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLyAoUHlfc3NpemVfdClzaXplb2Yod2NoYXJfdCkgLSAxKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC04ODgsNyArODg2LDcgQEAKICAgICB9CiAKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCi0gICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKKyAgICBpZiAobGVuZ3RoID4gKChQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KXNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgewogICAgICAgICByZXR1cm4gKFB5VW5pY29kZU9iamVjdCAqKVB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogICAgIGlmIChsZW5ndGggPCAwKSB7CkBAIC0yMzEzLDM1ICsyMzExLDYgQEAKIAogI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCi1zdGF0aWMgdm9pZAotbWFrZWZtdChjaGFyICpmbXQsIGludCBsb25nZmxhZywgaW50IGxvbmdsb25nZmxhZywgaW50IHNpemVfdGZsYWcsCi0gICAgICAgIGNoYXIgYykKLXsKLSAgICAqZm10KysgPSAnJSc7Ci0gICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAqZm10KysgPSAnbCc7Ci0gICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKSB7Ci0gICAgICAgIC8qIGxvbmdsb25nZmxhZyBzaG91bGQgb25seSBldmVyIGJlIG5vbnplcm8gb24gbWFjaGluZXMgd2l0aAotICAgICAgICAgICBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgY2hhciAqZiA9IFBZX0ZPUk1BVF9MT05HX0xPTkc7Ci0gICAgICAgIHdoaWxlICgqZikKLSAgICAgICAgICAgICpmbXQrKyA9ICpmKys7Ci0jZWxzZQotICAgICAgICAvKiB3ZSBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgICAgICpmbXQrKyA9ICdsJzsKLSNlbmRpZgotICAgIH0KLSAgICBlbHNlIGlmIChzaXplX3RmbGFnKSB7Ci0gICAgICAgIGNoYXIgKmYgPSBQWV9GT1JNQVRfU0laRV9UOwotICAgICAgICB3aGlsZSAoKmYpCi0gICAgICAgICAgICAqZm10KysgPSAqZisrOwotICAgIH0KLSAgICAqZm10KysgPSBjOwotICAgICpmbXQgPSAnXDAnOwotfQotCiAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KICAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAogICAgcGx1cyAxIGZvciB0aGUgc2lnbi4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLwpAQCAtMjUxNyw0OCArMjQ4Niw0MiBAQAogICAgIGNhc2UgJ3gnOgogICAgIHsKICAgICAgICAgLyogdXNlZCBieSBzcHJpbnRmICovCi0gICAgICAgIGNoYXIgZm10WzEwXTsgLyogc2hvdWxkIGJlIGVub3VnaCBmb3IgIiUwbGxkXDAiICovCiAgICAgICAgIGNoYXIgYnVmZmVyW01BWF9MT05HX0xPTkdfQ0hBUlNdOwogICAgICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKIAogICAgICAgICBpZiAoKmYgPT0gJ3UnKSB7Ci0gICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgKmYpOwotCiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nKSk7CiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKICNlbmRpZgogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBzaXplX3QpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJXUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgaW50KSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoKmYgPT0gJ3gnKSB7Ci0gICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgJ3gnKTsKLSAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsIHZhX2FyZygqdmFyZ3MsIGludCkpOworICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIleCIsIHZhX2FyZygqdmFyZ3MsIGludCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsICpmKTsKLQogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUFlfTE9OR19MT05HKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBpbnQpKTsKICAgICAgICAgfQogICAgICAgICBhc3NlcnQobGVuID49IDApOwpAQCAtMzI0MSw3ICszMjA0LDcgQEAKICAgICB3bGVuMiA9IHdjc2xlbih3c3RyKTsKICAgICBpZiAod2xlbjIgIT0gd2xlbikgewogICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyNDksNyArMzIxMiw3IEBACiAgICAgICAgIC8qICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yIGhhbmRsZXIgKi8KICAgICAgICAgY2hhciAqc3RyOwogCi0gICAgICAgIHN0ciA9IF9QeV93Y2hhcjJjaGFyKHdzdHIsICZlcnJvcl9wb3MpOworICAgICAgICBzdHIgPSBQeV9FbmNvZGVMb2NhbGUod3N0ciwgJmVycm9yX3Bvcyk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMzMDIsNyArMzI2NSw3IEBACiAKICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgc2l6ZV90IGVycmxlbjsKLSAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoZXJybXNnLCAmZXJybGVuKTsKICAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOwogICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3c3RyKTsKQEAgLTM0NzcsNyArMzQ0MCw3IEBACiAgICAgbWVtc2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOwogICAgIHdoaWxlIChsZW4pCiAgICAgewotICAgICAgICBjb252ZXJ0ZWQgPSBtYnJ0b3djKCZjaCwgKGNoYXIqKXN0ciwgbGVuLCAmbWJzKTsKKyAgICAgICAgY29udmVydGVkID0gbWJydG93YygmY2gsIHN0ciwgbGVuLCAmbWJzKTsKICAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAwKQogICAgICAgICAgICAgLyogUmVhY2hlZCBlbmQgb2Ygc3RyaW5nICovCiAgICAgICAgICAgICBicmVhazsKQEAgLTM1MDgsMTkgKzM0NzEsMjAgQEAKICAgICBpbnQgc3Vycm9nYXRlZXNjYXBlOwogICAgIHNpemVfdCBlcnJvcl9wb3M7CiAgICAgY2hhciAqZXJybXNnOwotICAgIFB5T2JqZWN0ICpyZWFzb24sICpleGM7CisgICAgUHlPYmplY3QgKnJlYXNvbiA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCisgICAgUHlPYmplY3QgKmV4YzsKIAogICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc3RyW2xlbl0gIT0gJ1wwJyB8fCBsZW4gIT0gc3RybGVuKHN0cikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgaWYgKHN0cltsZW5dICE9ICdcMCcgfHwgKHNpemVfdClsZW4gIT0gc3RybGVuKHN0cikpICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpIHsKICAgICAgICAgLyogInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciAqLwotICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoc3RyLCAmd2xlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoc3RyLCAmd2xlbik7CiAgICAgICAgIGlmICh3c3RyID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTM1NzMsNyArMzUzNyw3IEBACiAgICAgZXJyb3JfcG9zID0gbWJzdG93Y3NfZXJyb3Jwb3Moc3RyLCBsZW4pOwogICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgewogICAgICAgICBzaXplX3QgZXJybGVuOwotICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoZXJybXNnLCAmZXJybGVuKTsKKyAgICAgICAgd3N0ciA9IFB5X0RlY29kZUxvY2FsZShlcnJtc2csICZlcnJsZW4pOwogICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CiAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdzdHIpOwpAQCAtMzY0MywyMSArMzYwNyw2IEBACiAKIAogaW50Ci1fUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0KiBzdHIpCi17Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBwb3MgPSBmaW5kY2hhcihQeVVuaWNvZGVfREFUQShzdHIpLCBQeVVuaWNvZGVfS0lORChzdHIpLAotICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksICdcMCcsIDEpOwotICAgIGlmIChwb3MgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDE7Ci19Ci0KLWludAogUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CkBAIC0zNjg3LDggKzM2MzYsOCBAQAogICAgIH0KICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShvdXRwdXQpOwogICAgIGRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhvdXRwdXQpOwotICAgIGlmIChzaXplICE9IHN0cmxlbihkYXRhKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOworICAgIGlmICgoc2l6ZV90KXNpemUgIT0gc3RybGVuKGRhdGEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zNzMyLDcgKzM2ODEsNyBAQAogICAgIH0KICAgICBpZiAoZmluZGNoYXIoUHlVbmljb2RlX0RBVEEob3V0cHV0KSwgUHlVbmljb2RlX0tJTkQob3V0cHV0KSwKICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob3V0cHV0KSwgMCwgMSkgPj0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CiAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00ODM3LDcgKzQ3ODYsNyBAQAogCiAgICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKICAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgPCAoc2l6ZSArIDEpKQorICAgIGlmIChQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KXNpemVvZih3Y2hhcl90KSA8IChzaXplICsgMSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHVuaWNvZGUgPSBQeU1lbV9SYXdNYWxsb2MoKHNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCF1bmljb2RlKQpAQCAtNTEwMiwzMiArNTA1MSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7Ci0gICAgaW50IGtpbmQ7Ci0gICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgY29uc3Qgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGk7Ci0gICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCisgICAgUFlfVUlOVDMyX1QgKm91dDsKICNpZiBQWV9MSVRUTEVfRU5ESUFOCi0gICAgaW50IGlvcmRlcltdID0gezAsIDEsIDIsIDN9OworICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPD0gMDsKICNlbHNlCi0gICAgaW50IGlvcmRlcltdID0gezMsIDIsIDEsIDB9OworICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPj0gMDsKICNlbmRpZgogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworICAgIFB5X3NzaXplX3QgbnNpemUsIHBvczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKIAotI2RlZmluZSBTVE9SRUNIQVIoQ0gpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwW2lvcmRlclszXV0gPSAoKENIKSA+PiAyNCkgJiAweGZmOyAgICAgXAotICAgICAgICBwW2lvcmRlclsyXV0gPSAoKENIKSA+PiAxNikgJiAweGZmOyAgICAgXAotICAgICAgICBwW2lvcmRlclsxXV0gPSAoKENIKSA+PiA4KSAmIDB4ZmY7ICAgICAgXAotICAgICAgICBwW2lvcmRlclswXV0gPSAoQ0gpICYgMHhmZjsgICAgICAgICAgICAgXAotICAgICAgICBwICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cikpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MTM4LDU5ICs1MDc3LDUzIEBACiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CiAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKIAotICAgIG5zaXplID0gbGVuICsgKGJ5dGVvcmRlciA9PSAwKTsKLSAgICBpZiAobnNpemUgPiBQWV9TU0laRV9UX01BWCAvIDQpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gNCAtIChieXRlb3JkZXIgPT0gMCkpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG5zaXplID0gbGVuICsgKGJ5dGVvcmRlciA9PSAwKTsKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuc2l6ZSAqIDQpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyA0LWJ5dGVzIGFsaWduZWQgKi8KKyAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDQpKTsKKyAgICBvdXQgPSAoUFlfVUlOVDMyX1QgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAoYnl0ZW9yZGVyID09IDApCi0gICAgICAgIFNUT1JFQ0hBUigweEZFRkYpOworICAgICAgICAqb3V0KysgPSAweEZFRkY7CiAgICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZ290byBkb25lOwogCi0gICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpb3JkZXJbMF0gPSAwOwotICAgICAgICBpb3JkZXJbMV0gPSAxOwotICAgICAgICBpb3JkZXJbMl0gPSAyOwotICAgICAgICBpb3JkZXJbM10gPSAzOworICAgIGlmIChieXRlb3JkZXIgPT0gLTEpCiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0zMi1sZSI7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA9PSAxKSB7Ci0gICAgICAgIC8qIGZvcmNlIEJFICovCi0gICAgICAgIGlvcmRlclswXSA9IDM7Ci0gICAgICAgIGlvcmRlclsxXSA9IDI7Ci0gICAgICAgIGlvcmRlclsyXSA9IDE7Ci0gICAgICAgIGlvcmRlclszXSA9IDA7CisgICAgZWxzZSBpZiAoYnl0ZW9yZGVyID09IDEpCiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0zMi1iZSI7Ci0gICAgfQogICAgIGVsc2UKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTMyIjsKIAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIFNUT1JFQ0hBUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIHJldHVybiB2OworICAgICAgICB1Y3MxbGliX3V0ZjMyX2VuY29kZSgoY29uc3QgUHlfVUNTMSAqKWRhdGEsIGxlbiwgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgZ290byBkb25lOwogICAgIH0KIAotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47KSB7CisgICAgcG9zID0gMDsKKyAgICB3aGlsZSAocG9zIDwgbGVuKSB7CiAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgbW9yZXVuaXRzOwotICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgIGkrKzsKLSAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKLSAgICAgICAgICAgIFNUT1JFQ0hBUihjaCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgcG9zICs9IHVjczJsaWJfdXRmMzJfZW5jb2RlKChjb25zdCBQeV9VQ1MyICopZGF0YSArIHBvcywgbGVuIC0gcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICBwb3MgKz0gdWNzNGxpYl91dGYzMl9lbmNvZGUoKGNvbnN0IFB5X1VDUzQgKilkYXRhICsgcG9zLCBsZW4gLSBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zID09IGxlbikKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICBlbmNvZGluZywgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgIHN0ciwgJmV4YywgaS0xLCBpLCAmaSk7Ci0KKyAgICAgICAgICAgICAgICBzdHIsICZleGMsIHBvcywgcG9zICsgMSwgJnBvcyk7CiAgICAgICAgIGlmICghcmVwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNTE5OCw3ICs1MTMxLDcgQEAKICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7CiAgICAgICAgICAgICBpZiAocmVwc2l6ZSAmIDMpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCBpIC0gMSwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgcG9zIC0gMSwgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQpAQCAtNTIxMSw3ICs1MTQ0LDcgQEAKICAgICAgICAgICAgIG1vcmV1bml0cyA9IHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOwogICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkocmVwKSkgewogICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIGkgLSAxLCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCBwb3MgLSAxLCBwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CkBAIC01MjE5LDcgKzUxNTIsNyBAQAogCiAgICAgICAgIC8qIGZvdXIgYnl0ZXMgYXJlIHJlc2VydmVkIGZvciBlYWNoIHN1cnJvZ2F0ZSAqLwogICAgICAgICBpZiAobW9yZXVuaXRzID4gMSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBwIC0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG1vcmVieXRlcyA9IDQgKiAobW9yZXVuaXRzIC0gMSk7CiAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh2KSA+IFBZX1NTSVpFX1RfTUFYIC0gbW9yZWJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwpAQCAtNTIyOCwyMCArNTE2MSwxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgUHlCeXRlc19HRVRfU0laRSh2KSArIG1vcmVieXRlcykgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBwID0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKKyAgICAgICAgICAgIG91dCA9IChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOwotICAgICAgICAgICAgcCArPSByZXBzaXplOworICAgICAgICAgICAgUHlfTUVNQ1BZKG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CisgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgY29uc3QgUHlfVUNTMSAqcmVwZGF0YTsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKLSAgICAgICAgICAgIHJlcGRhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXApOwotICAgICAgICAgICAgd2hpbGUgKHJlcHNpemUtLSkgewotICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqcmVwZGF0YSsrOwotICAgICAgICAgICAgICAgIFNUT1JFQ0hBUihjaCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB1Y3MxbGliX3V0ZjMyX2VuY29kZShQeVVuaWNvZGVfMUJZVEVfREFUQShyZXApLCByZXBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKICAgICAgICAgfQogCiAgICAgICAgIFB5X0NMRUFSKHJlcCk7CkBAIC01MjUwLDExICs1MTc5LDEyIEBACiAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciwgZm9yIGV4YW1wbGUsCiAgICAgICAgZW5jb2Rpbmcgb2YgYSBzdHJpbmcgY29udGFpbmluZyBpc29sYXRlZCBzdXJyb2dhdGVzIGFuZCB0aGUgJ2lnbm9yZScKICAgICAgICBoYW5kbGVyIGlzIHVzZWQuICovCi0gICAgbnNpemUgPSBwIC0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICBuc2l6ZSA9ICh1bnNpZ25lZCBjaGFyKikgb3V0IC0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAobnNpemUgIT0gUHlCeXRlc19HRVRfU0laRSh2KSkKICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgbnNpemUpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CisgIGRvbmU6CiAgICAgcmV0dXJuIHY7CiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYocmVwKTsKQEAgLTUyNjIsNyArNTE5Miw2IEBACiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYodik7CiAgICAgcmV0dXJuIE5VTEw7Ci0jdW5kZWYgU1RPUkVDSEFSCiB9CiAKIFB5T2JqZWN0ICoKQEAgLTY4NDksMjggKzY3NzgsNiBAQAogICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORygqb2JqKTsKIH0KIAotc3RhdGljIGludAotaXNfZGJjc19sZWFkX2J5dGUoVUlOVCBjb2RlX3BhZ2UsIGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCi17Ci0gICAgY29uc3QgY2hhciAqY3VyciA9IHMgKyBvZmZzZXQ7Ci0gICAgY29uc3QgY2hhciAqcHJldjsKLQotICAgIGlmICghSXNEQkNTTGVhZEJ5dGVFeChjb2RlX3BhZ2UsICpjdXJyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBwcmV2ID0gQ2hhclByZXZFeEEoY29kZV9wYWdlLCBzLCBjdXJyLCAwKTsKLSAgICBpZiAocHJldiA9PSBjdXJyKQotICAgICAgICByZXR1cm4gMTsKLSAgICAvKiBGSVhNRTogVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywKLSAgICAgICBhcyBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlCi0gICAgICAgYnl0ZS4gKi8KLSAgICBpZiAoY3VyciAtIHByZXYgPT0gMikKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKnByZXYpKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIERXT1JECiBkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlKQogewpAQCAtNjk0NSw3ICs2ODUyLDcgQEAKIGRlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKFVJTlQgY29kZV9wYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sIGNvbnN0IGludCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRpbiA9IGluOwogICAgIGNvbnN0IGNoYXIgKmVuZGluID0gaW4gKyBzaXplOwpAQCAtNjk3Miw3ICs2ODc5LDcgQEAKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CisgICAgaWYgKChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgJiYgZmluYWwpIHsKICAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4gd2UgcmFpc2UgYQogICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuICovCiAgICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgaW4sIHNpemUsIDAsIDAsIHJlYXNvbik7CkBAIC03MDM1LDYgKzY5NDIsMTAgQEAKICAgICAgICAgaWYgKG91dHNpemUgPD0gMCkgewogICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zLCBlbmRpbnBvcywgb3V0cG9zOwogCisgICAgICAgICAgICAvKiBsYXN0IGNoYXJhY3RlciBpbiBwYXJ0aWFsIGRlY29kZT8gKi8KKyAgICAgICAgICAgIGlmIChpbiArIGluc2l6ZSA+PSBlbmRpbiAmJiAhZmluYWwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBpbiAtIHN0YXJ0aW47CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwogICAgICAgICAgICAgb3V0cG9zID0gb3V0IC0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOwpAQCAtNzA2Myw3ICs2OTc0LDggQEAKICAgICBhc3NlcnQob3V0c2l6ZSA8PSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgoKnYpKTsKICAgICBpZiAodW5pY29kZV9yZXNpemUodiwgb3V0c2l6ZSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldCA9IHNpemU7CisgICAgLyogKGluIC0gc3RhcnRpbikgPD0gc2l6ZSBhbmQgc2l6ZSBpcyBhbiBpbnQgKi8KKyAgICByZXQgPSBQeV9TQUZFX0RPV05DQVNUKGluIC0gc3RhcnRpbiwgUHlfc3NpemVfdCwgaW50KTsKIAogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOwpAQCAtNzEwNCwyNCArNzAxNiwxOSBAQAogICAgICAgICAgICAgZG9uZSA9IDE7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KLSAgICAgICAgaWYgKCFmaW5hbCAmJiBpc19kYmNzX2xlYWRfYnl0ZShjb2RlX3BhZ2UsIHMsIGNodW5rX3NpemUgLSAxKSkKLSAgICAgICAgICAgIC0tY2h1bmtfc2l6ZTsKLQogICAgICAgICBpZiAoY2h1bmtfc2l6ZSA9PSAwICYmIGRvbmUpIHsKICAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICAgICAgfQogCi0KICAgICAgICAgY29udmVydGVkID0gZGVjb2RlX2NvZGVfcGFnZV9zdHJpY3QoY29kZV9wYWdlLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgY2h1bmtfc2l6ZSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gLTIpCiAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBkZWNvZGVfY29kZV9wYWdlX2Vycm9ycyhjb2RlX3BhZ2UsICZ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgY2h1bmtfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgIGFzc2VydChjb252ZXJ0ZWQgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsIGZpbmFsKTsKKyAgICAgICAgYXNzZXJ0KGNvbnZlcnRlZCAhPSAwIHx8IGRvbmUpOwogCiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPCAwKSB7CiAgICAgICAgICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNzE2OSwxMyArNzA3Niw3IEBACiBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KSB7Ci0gICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikKLSAgICAgICAgICAgIC8qIENQX1VURjggc3VwcG9ydHMgV0NfRVJSX0lOVkFMSURfQ0hBUlMgb24gV2luZG93cyBWaXN0YQotICAgICAgICAgICAgICAgYW5kIGxhdGVyICovCi0gICAgICAgICAgICByZXR1cm4gV0NfRVJSX0lOVkFMSURfQ0hBUlM7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8qIENQX1VURjggb25seSBzdXBwb3J0cyBmbGFncz0wIG9uIFdpbmRvd3Mgb2xkZXIgdGhhbiBWaXN0YSAqLwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXQ19FUlJfSU5WQUxJRF9DSEFSUzsKICAgICB9CiAgICAgZWxzZSBpZiAoY29kZV9wYWdlID09IENQX1VURjcpIHsKICAgICAgICAgLyogQ1BfVVRGNyBvbmx5IHN1cHBvcnRzIGZsYWdzPTAgKi8KQEAgLTc0ODUsNiArNzM4NiwxMSBAQAogICAgIFB5X3NzaXplX3Qgb2Zmc2V0OwogICAgIGludCBjaHVua19sZW4sIHJldCwgZG9uZTsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwpAQCAtNzU1OCwxMCArNzQ2NCw2IEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiB9CiAKQEAgLTg1MjgsMTAgKzg0MzAsMTAgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHgpKSB7CiAgICAgICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQVNfTE9ORyh4KTsKLSAgICAgICAgbG9uZyBtYXggPSBQeVVuaWNvZGVfR2V0TWF4KCk7Ci0gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBtYXgpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHgleCkiLCBtYXgrMSk7CisgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHgleCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9VTklDT0RFKzEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC04NTUwLDc2ICs4NDUyLDE2OCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQotLyogZW5zdXJlIHRoYXQgKm91dG9iaiBpcyBhdCBsZWFzdCByZXF1aXJlZHNpemUgY2hhcmFjdGVycyBsb25nLAotICAgaWYgbm90IHJlYWxsb2NhdGUgYW5kIGFkanVzdCB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCisKKy8qIGxvb2t1cCB0aGUgY2hhcmFjdGVyLCB3cml0ZSB0aGUgcmVzdWx0IGludG8gdGhlIHdyaXRlci4KKyAgIFJldHVybiAxIGlmIHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gaW50byB0aGUgd3JpdGVyLCByZXR1cm4gMCBpZiB0aGUgbWFwcGluZworICAgd2FzIHVuZGVmaW5lZCwgcmFpc2UgYW4gZXhjZXB0aW9uIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLWNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKFB5X1VDUzQgKipvdXRvYmosIFB5X3NzaXplX3QgKnBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplKQorY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoUHlfVUNTNCBjaCwgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7Ci0gICAgUHlfc3NpemVfdCBvbGRzaXplID0gKnBzaXplOwotICAgIFB5X1VDUzQgKm5ld19vdXRvYmo7Ci0gICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG9sZHNpemUpIHsKLSAgICAgICAgLyogZXhwb25lbnRpYWxseSBvdmVyYWxsb2NhdGUgdG8gbWluaW1pemUgcmVhbGxvY2F0aW9ucyAqLwotICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMiAqIG9sZHNpemUpCi0gICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyICogb2xkc2l6ZTsKLSAgICAgICAgbmV3X291dG9iaiA9IFB5TWVtX1JlYWxsb2MoKm91dG9iaiwgcmVxdWlyZWRzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKLSAgICAgICAgaWYgKG5ld19vdXRvYmogPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm91dG9iaiA9IG5ld19vdXRvYmo7Ci0gICAgICAgICpwc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0vKiBsb29rdXAgdGhlIGNoYXJhY3RlciwgcHV0IHRoZSByZXN1bHQgaW4gdGhlIG91dHB1dCBzdHJpbmcgYW5kIGFkanVzdAotICAgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCB0aGF0Ci0gICB3YXMgcHV0IGluIHRoZSBvdXRwdXQgYnVmZmVyIGluICpyZXN1bHQsIG9yIFB5X05vbmUsIGlmIHRoZSBtYXBwaW5nIHdhcwotICAgdW5kZWZpbmVkIChpbiB3aGljaCBjYXNlIG5vIGNoYXJhY3RlciB3YXMgd3JpdHRlbikuCi0gICBUaGUgY2FsbGVkIG11c3QgZGVjcmVmIHJlc3VsdC4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLiAqLwotc3RhdGljIGludAotY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoUHlPYmplY3QgKmlucHV0LCBQeV9zc2l6ZV90IGlwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgUHlfVUNTNCAqKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm9zaXplLCBQeV9zc2l6ZV90ICpvcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCi17Ci0gICAgUHlfVUNTNCBjdXJpbnAgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGlucHV0LCBpcG9zKTsKLSAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY3VyaW5wLCBtYXBwaW5nLCByZXMpKQorICAgIFB5T2JqZWN0ICppdGVtOworCisgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGNoLCBtYXBwaW5nLCAmaXRlbSkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnJlcz09TlVMTCkgeworCisgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLwotICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IGN1cmlucDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoKnJlcz09UHlfTm9uZSkKLSAgICAgICAgOwotICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjaygqcmVzKSkgewotICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IChQeV9VQ1M0KVB5TG9uZ19BU19MT05HKCpyZXMpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soKnJlcykpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKCpyZXMpID09IC0xKQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUod3JpdGVyLCBjaCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcmVzKTsKLSAgICAgICAgaWYgKHJlcHNpemU9PTEpIHsKLSAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoKnJlcywgMCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocmVwc2l6ZSE9MCkgewotICAgICAgICAgICAgLyogbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplID0gKm9wb3MgKwotICAgICAgICAgICAgICAgIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCkgLSBpcG9zKSArCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSAtIDE7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0cHV0LCBvc2l6ZSwgcmVxdWlyZWRzaXplKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCByZXBzaXplOyBpKyspCi0gICAgICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIGkpOwotICAgICAgICB9CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBlbHNlCisKKyAgICBpZiAoaXRlbSA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgeworICAgICAgICBsb25nIGNoID0gKFB5X1VDUzQpUHlMb25nX0FTX0xPTkcoaXRlbSk7CisgICAgICAgIC8qIFB5TG9uZ19BU19MT05HKCkgY2Fubm90IGZhaWwsIGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCkgYWxyZWFkeQorICAgICAgICAgICB1c2VkIGl0ICovCisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSh3cml0ZXIsIGNoKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgaXRlbSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordW5pY29kZV9mYXN0X3RyYW5zbGF0ZV9sb29rdXAoUHlPYmplY3QgKm1hcHBpbmcsIFB5X1VDUzEgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1MxICp0cmFuc2xhdGUpCit7CisgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOworICAgIGludCByZXQgPSAwOworCisgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGNoLCBtYXBwaW5nLCAmaXRlbSkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpdGVtID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogZGVsZXRpb24gKi8KKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IDB4ZmU7CisgICAgfQorICAgIGVsc2UgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLworICAgICAgICB0cmFuc2xhdGVbY2hdID0gY2g7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgbG9uZyByZXBsYWNlID0gUHlMb25nX0FTX0xPTkcoaXRlbSk7CisgICAgICAgIC8qIFB5TG9uZ19BU19MT05HKCkgY2Fubm90IGZhaWwsIGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCkgYWxyZWFkeQorICAgICAgICAgICB1c2VkIGl0ICovCisgICAgICAgIGlmICgxMjcgPCByZXBsYWNlKSB7CisgICAgICAgICAgICAvKiBpbnZhbGlkIGNoYXJhY3RlciBvciBjaGFyYWN0ZXIgb3V0c2lkZSBBU0NJSToKKyAgICAgICAgICAgICAgIHNraXAgdGhlIGZhc3QgdHJhbnNsYXRlICovCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IChQeV9VQ1MxKXJlcGxhY2U7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhpdGVtKSkgeworICAgICAgICBQeV9VQ1M0IHJlcGxhY2U7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpdGVtKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKSAhPSAxKQorICAgICAgICAgICAgZ290byBleGl0OworCisgICAgICAgIHJlcGxhY2UgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGl0ZW0sIDApOworICAgICAgICBpZiAocmVwbGFjZSA+IDEyNykKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IChQeV9VQ1MxKXJlcGxhY2U7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBub3QgTm9uZSwgTlVMTCwgbG9uZyBvciB1bmljb2RlICovCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0ID0gMTsKKworICBleGl0OgorICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBGYXN0IHBhdGggZm9yIGFzY2lpID0+IGFzY2lpIHRyYW5zbGF0aW9uLiBSZXR1cm4gMSBpZiB0aGUgd2hvbGUgc3RyaW5nCisgICB3YXMgdHJhbnNsYXRlZCBpbnRvIHdyaXRlciwgcmV0dXJuIDAgaWYgdGhlIGlucHV0IHN0cmluZyB3YXMgcGFydGlhbGx5CisgICB0cmFuc2xhdGVkIGludG8gd3JpdGVyLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK3VuaWNvZGVfZmFzdF90cmFuc2xhdGUoUHlPYmplY3QgKmlucHV0LCBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBpbnQgaWdub3JlKQoreworICAgIFB5X1VDUzEgYXNjaWlfdGFibGVbMTI4XSwgY2gsIGNoMjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9VQ1MxICppbiwgKmVuZCwgKm91dDsKKyAgICBpbnQgcmVzID0gMDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoaW5wdXQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CisKKyAgICBtZW1zZXQoYXNjaWlfdGFibGUsIDB4ZmYsIDEyOCk7CisKKyAgICBpbiA9IFB5VW5pY29kZV8xQllURV9EQVRBKGlucHV0KTsKKyAgICBlbmQgPSBpbiArIGxlbjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkod3JpdGVyLT5idWZmZXIpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpID09IGxlbik7CisgICAgb3V0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEod3JpdGVyLT5idWZmZXIpOworCisgICAgZm9yICg7IGluIDwgZW5kOyBpbisrKSB7CisgICAgICAgIGNoID0gKmluOworICAgICAgICBjaDIgPSBhc2NpaV90YWJsZVtjaF07CisgICAgICAgIGlmIChjaDIgPT0gMHhmZikgeworICAgICAgICAgICAgaW50IHRyYW5zbGF0ZSA9IHVuaWNvZGVfZmFzdF90cmFuc2xhdGVfbG9va3VwKG1hcHBpbmcsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpX3RhYmxlKTsKKyAgICAgICAgICAgIGlmICh0cmFuc2xhdGUgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmICh0cmFuc2xhdGUgPT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBjaDIgPSBhc2NpaV90YWJsZVtjaF07CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoMiA9PSAweGZlKSB7CisgICAgICAgICAgICBpZiAoaWdub3JlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGFzc2VydChjaDIgPCAxMjgpOworICAgICAgICAqb3V0ID0gY2gyOworICAgICAgICBvdXQrKzsKKyAgICB9CisgICAgcmVzID0gMTsKKworZXhpdDoKKyAgICB3cml0ZXItPnBvcyA9IG91dCAtIFB5VW5pY29kZV8xQllURV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCkBAIC04NjI4LDIyICs4NjIyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIC8qIGlucHV0IG9iamVjdCAqLwotICAgIGNoYXIgKmlkYXRhOworICAgIGNoYXIgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBzaXplLCBpOwogICAgIGludCBraW5kOwogICAgIC8qIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9VQ1M0ICpvdXRwdXQgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgb3NpemU7Ci0gICAgUHlPYmplY3QgKnJlczsKLSAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwotICAgIFB5X3NzaXplX3Qgb3BvczsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICAvKiBlcnJvciBoYW5kbGVyICovCiAgICAgY2hhciAqcmVhc29uID0gImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsCi0gICAgICogMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgaW50IGlnbm9yZTsKKyAgICBpbnQgcmVzOwogCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwpAQCAtODY1MiwxMCArODY0MSw5IEBACiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CiAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKLSAgICBpID0gMDsKIAogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKQEAgLTg2NjQsMTIxICs4NjUyLDgxIEBACiAKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwotICAgIG9zaXplID0gc2l6ZTsKLSAgICBvdXRwdXQgPSBQeU1lbV9ORVcoUHlfVUNTNCwgb3NpemUpOwotICAgIG9wb3MgPSAwOwotICAgIGlmIChvdXRwdXQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPT0gLTEpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CiAKKyAgICBpZ25vcmUgPSAoZXJyb3JzICE9IE5VTEwgJiYgc3RyY21wKGVycm9ycywgImlnbm9yZSIpID09IDApOworCisgICAgcmVzID0gdW5pY29kZV9mYXN0X3RyYW5zbGF0ZShpbnB1dCwgbWFwcGluZywgJndyaXRlciwgaWdub3JlKTsKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAocmVzID09IDEpCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKKworICAgIGkgPSB3cml0ZXIucG9zOwogICAgIHdoaWxlIChpPHNpemUpIHsKICAgICAgICAgLyogdHJ5IHRvIGVuY29kZSBpdCAqLwotICAgICAgICBQeU9iamVjdCAqeCA9IE5VTEw7Ci0gICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChpbnB1dCwgaSwgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZvc2l6ZSwgJm9wb3MsICZ4KSkgewotICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgfQotICAgICAgICBQeV9YREVDUkVGKHgpOwotICAgICAgICBpZiAoeCE9UHlfTm9uZSkgLyogaXQgd29ya2VkID0+IGFkanVzdCBpbnB1dCBwb2ludGVyICovCi0gICAgICAgICAgICArK2k7Ci0gICAgICAgIGVsc2UgeyAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdW5pMjsKLSAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVudHJhbnNsYXRhYmxlIGNoYXJzICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IGk7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBpKzE7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGw7CisgICAgICAgIGludCB0cmFuc2xhdGU7CisgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCisgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOworICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bnRyYW5zbGF0YWJsZSBjaGFycyAqLworICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydDsKKyAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kOworICAgICAgICBQeV9VQ1M0IGNoOwogCi0gICAgICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IHNpemUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlVbmljb2RlX1JFQUQoa2luZCxpZGF0YSwgY29sbGVuZCksIG1hcHBpbmcsICZ4KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgaWYgKHghPVB5X05vbmUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICsrY29sbGVuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCi0gICAgICAgICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICAgICAgaWYgKGtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbigmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgY29sbHN0YXJ0LCBjb2xsZW5kLCByZWFzb24pOwotICAgICAgICAgICAgICAgIGlmIChleGMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgdHJhbnNsYXRlID0gY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoY2gsIG1hcHBpbmcsICZ3cml0ZXIpOworICAgICAgICBpZiAodHJhbnNsYXRlIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICBpZiAodHJhbnNsYXRlICE9IDApIHsKKyAgICAgICAgICAgIC8qIGl0IHdvcmtlZCA9PiBhZGp1c3QgaW5wdXQgcG9pbnRlciAqLworICAgICAgICAgICAgKytpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgY29sbHN0YXJ0ID0gaTsKKyAgICAgICAgY29sbGVuZCA9IGkrMTsKKworICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCisgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgc2l6ZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKng7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpOworICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGNoLCBtYXBwaW5nLCAmeCkpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBjaGVjayBmb3Igc3BhY2UsIHRoaXMgaXMgYSAxOjEgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGNvbGwgPSBjb2xsc3RhcnQ7IGNvbGw8Y29sbGVuZDsgY29sbCsrKQotICAgICAgICAgICAgICAgICAgICBvdXRwdXRbb3BvcysrXSA9ICc/JzsKLSAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICAgICAgaSA9IGNvbGxlbmQ7CisgICAgICAgICAgICBQeV9YREVDUkVGKHgpOworICAgICAgICAgICAgaWYgKHggIT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIGkpICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBpZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BvcytzdHJsZW4oYnVmZmVyKSsoc2l6ZS1jb2xsZW5kKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gKmNwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBpbnB1dCwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IDA7IHJlcHNpemUtLT4wOyArK3VuaTIpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCB1bmkyKTsKLSAgICAgICAgICAgICAgICBpID0gbmV3cG9zOworICAgICAgICAgICAgKytjb2xsZW5kOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlnbm9yZSkgeworICAgICAgICAgICAgaSA9IGNvbGxlbmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwgaW5wdXQsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKKyAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoJndyaXRlciwgcmVwdW5pY29kZSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgIGkgPSBuZXdwb3M7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmVzID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgb3V0cHV0LCBvcG9zKTsKLSAgICBpZiAoIXJlcykKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtODg4MCw3ICs4ODI4LDcgQEAKIAogICAgIG1heGNoYXIgPSAxMjc7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgICAgICBQeV9VQ1M0IGNoID0gc1tpXTsKICAgICAgICAgaWYgKGNoID4gMTI3KSB7CiAgICAgICAgICAgICBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCkBAIC04ODk3LDcgKzg4NDUsNyBAQAogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShkZWNpbWFsKTsKICAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgICAgIFB5X1VDUzQgY2ggPSBzW2ldOwogICAgICAgICBpZiAoY2ggPiAxMjcpIHsKICAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKQEAgLTg5NzgsMzUgKzg5MjYsNjEgQEAKIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCisjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCisgICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCiBzdGF0aWMgUHlfc3NpemVfdAogYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgcmVzdWx0OwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzMSk7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzMik7Ci0gICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzMSk7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHMyKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHMxLCBraW5kKTsKLSAgICBpZiAoIWJ1ZjEpCi0gICAgICAgIHJldHVybiAtMjsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHMyLCBraW5kKTsKLSAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9CisgICAgaWYgKGtpbmQxIDwga2luZDIpCisgICAgICAgIHJldHVybiAtMTsKKwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMSk7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMyKTsKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoczEpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzMik7CisgICAgaWYgKGxlbjIgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGJ1ZjIsIDApOworICAgICAgICByZXN1bHQgPSBmaW5kY2hhcigoY29uc3QgY2hhciAqKWJ1ZjEgKyBraW5kMSpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDEsIGVuZCAtIHN0YXJ0LCBjaCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ICsgcmVzdWx0OworICAgIH0KKworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoczIsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIC0yOworICAgIH0KIAogICAgIGlmIChkaXJlY3Rpb24gPiAwKSB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CkBAIC05MDI0LDcgKzg5OTgsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kMSkgewogICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9yZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKQEAgLTkwNDIsOSArOTAxNiw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTEzNCwyMSArOTEwNiw2IEBACiB9CiAKIAotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KIFB5X3NzaXplX3QKIFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCkBAIC05MTU4LDcgKzkxMTUsNyBAQAogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzdWJfb2JqOwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIApAQCAtOTE3OCwyNCArOTEzNSwzMCBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOwotICAgIGtpbmQgPSBraW5kMTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kKSB7Ci0gICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikgeworICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmICghYnVmMikKLSAgICAgICAgZ290byBvbkVycm9yOworCiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKLQogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIHN3aXRjaCAoa2luZCkgeworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3ViX29iaikpCiAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9jb3VudCgKQEAgLTkyMjcsMTQgKzkxOTAsMTQgQEAKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogCi0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIC0xOwogfQpAQCAtOTI4Nyw2ICs5MjUwLDggQEAKICAgICB9CiAgICAgaWYgKGVuZCA+IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpCiAgICAgICAgIGVuZCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgaWYgKHN0YXJ0ID49IGVuZCkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIHJlc3VsdCA9IGZpbmRjaGFyKFB5VW5pY29kZV8xQllURV9EQVRBKHN0cikgKyBraW5kKnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgIGtpbmQsIGVuZC1zdGFydCwgY2gsIGRpcmVjdGlvbik7CkBAIC05MzE1LDE0ICs5MjgwLDE0IEBACiAgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSA9PSAwKQotICAgICAgICByZXR1cm4gMTsKLQogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKICAgICBlbmQgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBpZiAoZW5kIDwgc3RhcnQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKICAgICBraW5kX3NlbGYgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBkYXRhX3NlbGYgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKICAgICBraW5kX3N1YiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CkBAIC05NDc0LDcgKzk0MzksNyBAQAogewogICAgIFB5X3NzaXplX3QgajsKICAgICBpbnQgZmluYWxfc2lnbWE7Ci0gICAgUHlfVUNTNCBjID0gMDsKKyAgICBQeV9VQ1M0IGMgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIC8qIFUrMDNBMyBpcyBpbiB0aGUgRmluYWxfU2lnbWEgY29udGV4dCB3aGVuLCBpdCBpcyBmb3VuZCBsaWtlIHRoaXM6CiAKICAgICAgXHB7Y2FzZWR9XHB7Y2FzZS1pZ25vcmFibGV9KlUrMDNBMyEoXHB7Y2FzZS1pZ25vcmFibGV9Klxwe2Nhc2VkfSkKQEAgLTEwMDMzLDcgKzk5OTgsNyBAQAogICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeU9iamVjdCogb3V0OwpAQCAtMTAwNzcsMjMgKzEwMDQyLDI1IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIG91dCA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShvdXQsIDAsIHNlbGYpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9zcGxpdCgKQEAgLTEwMTEzLDkgKzEwMDgwLDcgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBvdXQgPSBOVUxMOwogICAgIH0KLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIG91dDsKIH0KQEAgLTEwMTI1LDcgKzEwMDkwLDcgQEAKICAgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAogICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeU9iamVjdCogb3V0OwpAQCAtMTAxNjksMjMgKzEwMTM0LDI1IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIG91dCA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShvdXQsIDAsIHNlbGYpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9yc3BsaXQoCkBAIC0xMDIwNSw5ICsxMDE3Miw3IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgb3V0ID0gTlVMTDsKICAgICB9Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBvdXQ7CiB9CkBAIC0xMDQyNiw3ICsxMDM5MSw3IEBACiAgICAgICAgIH0KICAgICAgICAgLyogbmV3X3NpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSArIG4gKiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgLQogICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKSkpOyAqLwotICAgICAgICBpZiAobGVuMiA+IGxlbjEgJiYgbGVuMiAtIGxlbjEgPiAoUFlfU1NJWkVfVF9NQVggLSBzbGVuKSAvIG4pIHsKKyAgICAgICAgaWYgKGxlbjEgPCBsZW4yICYmIGxlbjIgLSBsZW4xID4gKFBZX1NTSVpFX1RfTUFYIC0gc2xlbikgLyBuKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xMDgzNSw3ICsxMDgwMCw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbjEgPiBsZW4yKQogICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHVuaSBpcyBsb25nZXIgKi8KLSAgICAgICAgaWYgKGxlbjIgPiBsZW4xKQorICAgICAgICBpZiAobGVuMSA8IGxlbjIpCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHN0ciBpcyBsb25nZXIgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTA4NDMsNyArMTA4MDgsNyBAQAogICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pKTsKICAgICAgICAgLyogQ29tcGFyZSBVbmljb2RlIHN0cmluZyBhbmQgc291cmNlIGNoYXJhY3RlciBzZXQgc3RyaW5nICovCiAgICAgICAgIGZvciAoaSA9IDA7IChjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkgJiYgc3RyW2ldOyBpKyspCi0gICAgICAgICAgICBpZiAoY2hyICE9IHN0cltpXSkKKyAgICAgICAgICAgIGlmIChjaHIgIT0gKHVuc2lnbmVkIGNoYXIpc3RyW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiAoY2hyIDwgKHVuc2lnbmVkIGNoYXIpKHN0cltpXSkpID8gLTEgOiAxOwogICAgICAgICAvKiBUaGlzIGNoZWNrIGtlZXBzIFB5dGhvbiBzdHJpbmdzIHRoYXQgZW5kIGluICdcMCcgZnJvbSBjb21wYXJpbmcgZXF1YWwKICAgICAgICAgIHRvIEMgc3RyaW5ncyBpZGVudGljYWwgdXAgdG8gdGhhdCBwb2ludC4gKi8KQEAgLTEwOTQ3LDIzICsxMDkxMiwzNSBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgaWYgKGtpbmQyID4ga2luZDEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7Ci0gICAgfQotICAgIGlmICghYnVmMikgeworICAgIGlmIChraW5kMSA8IGtpbmQyKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwogICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7CisgICAgaWYgKGxlbjEgPCBsZW4yKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGlmIChsZW4yID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBidWYyLCAwKTsKKyAgICAgICAgcmVzdWx0ID0gZmluZGNoYXIoKGNvbnN0IGNoYXIgKilidWYxLCBraW5kMSwgbGVuMSwgY2gsIDEpICE9IC0xOworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTExNDQsMTEgKzExMTIxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb3VudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZSB0byBmaXggYSBjb21waWxlciB3YXJuaW5nICovCiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKQEAgLTExMTU4LDI0ICsxMTEzNSwyNyBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQyID4ga2luZDEpIHsKKyAgICBpZiAoa2luZDEgPCBraW5kMikgewogICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKICAgICB9Ci0gICAga2luZCA9IGtpbmQxOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwotCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgc3dpdGNoIChraW5kKSB7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICB9CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaXJlc3VsdCA9IHVjczFsaWJfY291bnQoCiAgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LApAQCAtMTEyMDAsNyArMTExODAsNyBAQAogCiAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGlyZXN1bHQpOwogCi0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CkBAIC0xMTMzMiw2ICsxMTMxMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9maW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTE0MTksNiArMTE0MDAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIC8qIGluaXRpYWxpemUgdmFyaWFibGVzIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKQEAgLTEyNDk3LDYgKzEyNDc5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX3JmaW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTI1MzMsNiArMTI1MTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfcmluZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTI2NDcsOCArMTI2MzEsOCBAQAogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKLSAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIGludCBraW5kMSwga2luZDI7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CkBAIC0xMjY2NywyMSArMTI2NTEsMjkgQEAKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKLSAgICBraW5kID0gUHlfTUFYKGtpbmQxLCBraW5kMik7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyX29iaiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kKQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7Ci0gICAgaWYgKCFidWYyKQotICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMiB8fCBsZW4xIDwgbGVuMikgeworICAgICAgICBfUHlfSU5DUkVGX1VOSUNPREVfRU1QVFkoKTsKKyAgICAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQorICAgICAgICAgICAgb3V0ID0gTlVMTDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgc3RyX29iaiwgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKLSAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CkBAIC0xMjcwMSwxOCArMTI2OTMsMTQgQEAKIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTEyNzI0LDggKzEyNzEyLDggQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7Ci0gICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBpbnQga2luZDEsIGtpbmQyOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwpAQCAtMTI3MzksMjEgKzEyNzI3LDI5IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7Ci0gICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMikKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisgICAgaWYgKGtpbmQxIDwga2luZDIgfHwgbGVuMSA8IGxlbjIpIHsKKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIGlmICghdW5pY29kZV9lbXB0eSkKKyAgICAgICAgICAgIG91dCA9IE5VTEw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHksIHN0cl9vYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQogICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKQEAgLTEyNzczLDE4ICsxMjc2OSwxNCBAQAogCiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMTI5MzAsNDcgKzEyOTIyLDkgQEAKIG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIodW5pY29kZV9tYWtldHJhbnNfX2RvY19fLAotIm1ha2V0cmFucyh4LCB5PU5vbmUsIHo9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3Igc3RyLnRyYW5zbGF0ZSgpLlxuIgotIlxuIgotIklmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nIFVuaWNvZGVcbiIKLSJvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBOb25lLlxuIgotIkNoYXJhY3RlciBrZXlzIHdpbGwgYmUgdGhlbiBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4iCi0iSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCwgYW5kXG4iCi0iaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkIHRvIHRoZVxuIgotImNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiBJZiB0aGVyZSBpcyBhIHRoaXJkIGFyZ3VtZW50LCBpdFxuIgotIm11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOwotCi0jZGVmaW5lIFVOSUNPREVfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pdW5pY29kZV9tYWtldHJhbnMsIE1FVEhfVkFSQVJHU3xNRVRIX1NUQVRJQywgdW5pY29kZV9tYWtldHJhbnNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqeDsKLSAgICBQeU9iamVjdCAqeSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnogPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZV9tYWtldHJhbnNfaW1wbCh4LCB5LCB6KTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9tYWtldHJhbnNfaW1wbChQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NmVkZjYzMGY3NzQzNmEgaW5wdXQ9N2JmYmY1MjlhMjkzYzZjNV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5MjVjODk0NTJiZDU4ODEgaW5wdXQ9N2JmYmY1MjlhMjkzYzZjNV0qLwogewogICAgIFB5T2JqZWN0ICpuZXcgPSBOVUxMLCAqa2V5LCAqdmFsdWU7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKQEAgLTEzMzk4LDYgKzEzMzUyLDcgQEAKICAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CiAgICAgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgfHwgbGVuID4gd3JpdGVyLT5zaXplIC0gd3JpdGVyLT5wb3MpIHsKICAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwgJiYgIXdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgICAgICAgICAgd3JpdGVyLT5yZWFkb25seSA9IDE7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RyKTsKICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gc3RyOwpAQCAtMTM5MDYsOCArMTM4NjEsOCBAQAogICogQ0FVVElPTjogIG8sIHggYW5kIFggY29udmVyc2lvbnMgb24gcmVndWxhciBpbnRzIGNhbiBuZXZlcgogICogcHJvZHVjZSBhICctJyBzaWduLCBidXQgY2FuIGZvciBQeXRob24ncyB1bmJvdW5kZWQgaW50cy4KICAqLwotc3RhdGljIFB5T2JqZWN0KgotZm9ybWF0bG9uZyhQeU9iamVjdCAqdmFsLCBzdHJ1Y3QgdW5pY29kZV9mb3JtYXRfYXJnX3QgKmFyZykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRm9ybWF0TG9uZyhQeU9iamVjdCAqdmFsLCBpbnQgYWx0LCBpbnQgcHJlYywgaW50IHR5cGUpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgY2hhciAqYnVmOwpAQCAtMTM5MTcsOCArMTM4NzIsNiBAQAogICAgIFB5X3NzaXplX3QgbGxlbjsKICAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KICAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKLSAgICBpbnQgcHJlYyA9IGFyZy0+cHJlYzsKLSAgICBpbnQgdHlwZSA9IGFyZy0+Y2g7CiAKICAgICAvKiBBdm9pZCBleGNlZWRpbmcgU1NJWkVfVF9NQVggKi8KICAgICBpZiAocHJlYyA+IElOVF9NQVgtMykgewpAQCAtMTM5NjcsNyArMTM5MjAsNyBAQAogICAgIGlmIChsbGVuID4gSU5UX01BWCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsYXJnZSBpbiBfUHlCeXRlc19Gb3JtYXRMb25nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsYXJnZSBpbiBfUHlVbmljb2RlX0Zvcm1hdExvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGxlbiA9IChpbnQpbGxlbjsKQEAgLTEzOTc3LDcgKzEzOTMwLDcgQEAKICAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7CiAKICAgICAvKiBHZXQgcmlkIG9mIGJhc2UgbWFya2VyIHVubGVzcyBGX0FMVCAqLwotICAgIGlmICgoKGFyZy0+ZmxhZ3MgJiBGX0FMVCkgPT0gMCAmJgorICAgIGlmICgoKGFsdCkgPT0gMCAmJgogICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpKSkgewogICAgICAgICBhc3NlcnQoYnVmW3NpZ25dID09ICcwJyk7CiAgICAgICAgIGFzc2VydChidWZbc2lnbisxXSA9PSAneCcgfHwgYnVmW3NpZ24rMV0gPT0gJ1gnIHx8CkBAIC0xNDA1MiwyNCArMTQwMDUsMTQgQEAKICAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHYpKQogICAgICAgICBnb3RvIHdyb25ndHlwZTsKIAotICAgIC8qIG1ha2Ugc3VyZSBudW1iZXIgaXMgYSB0eXBlIG9mIGludGVnZXIgKi8KLSAgICAvKiBpZiBub3QsIGlzc3VlIGRlcHJlY2F0aW9uIHdhcm5pbmcgZm9yIG5vdyAqLworICAgIC8qIG1ha2Ugc3VyZSBudW1iZXIgaXMgYSB0eXBlIG9mIGludGVnZXIgZm9yIG8sIHgsIGFuZCBYICovCiAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKICAgICAgICAgaWYgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSB7CiAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgodik7CiAgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMgaW50IGNvbnZlcnNpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0xvbmcodik7Ci0gICAgICAgICAgICAgICAgaWYgKGlvYmogPT0gTlVMTCApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gd3Jvbmd0eXBlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gd3Jvbmd0eXBlOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE0MTIyLDcgKzE0MDY1LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgcmVzID0gZm9ybWF0bG9uZyhpb2JqLCBhcmcpOworICAgIHJlcyA9IF9QeVVuaWNvZGVfRm9ybWF0TG9uZyhpb2JqLCBhcmctPmZsYWdzICYgRl9BTFQsIGFyZy0+cHJlYywgdHlwZSk7CiAgICAgUHlfREVDUkVGKGlvYmopOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQxMzAsMTAgKzE0MDczLDIzIEBACiAgICAgcmV0dXJuIDA7CiAKIHdyb25ndHlwZToKLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIiUlJWMgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgIgotICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAotICAgICAgICAgICAgdHlwZSwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgc3dpdGNoKHR5cGUpCisgICAgeworICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIiUlJWMgZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCAiCisgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICIlJSVjIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsICIKKyAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICB0eXBlLCBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTE0MTUxLDIyICsxNDEwNywxMCBAQAogICAgICAgICBQeU9iamVjdCAqaW9iajsKICAgICAgICAgbG9uZyB4OwogICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyICovCi0gICAgICAgIC8qIGlmIG5vdCwgaXNzdWUgZGVwcmVjYXRpb24gd2FybmluZyBmb3Igbm93ICovCiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CiAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgodik7CiAgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMgaW50IGNvbnZlcnNpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0xvbmcodik7Ci0gICAgICAgICAgICAgICAgaWYgKGlvYmogPT0gTlVMTCApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2ID0gaW9iajsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKQEAgLTE0OTk4LDEzICsxNDk0Miw2IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlGb3JtYXR0ZXJJdGVyX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmb3JtYXR0ZXIgaXRlciB0eXBlIik7CiAKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOwotICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgogICAgIHJldHVybiAwOwogfQogCkBAIC0xNTQyMCw3ICsxNTM1Nyw3IEBACiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwotICAgIGlmIChsZW4gPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CisgICAgaWYgKGxlbiA+ICgoUFlfU1NJWkVfVF9NQVggLyAoUHlfc3NpemVfdClzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDFmZGMwOTIuLjdjNzgwYjYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTgyLDI1ICs4MiwzMiBAQAogICAgIHstMjA1LCAwLCAtMjA1LCAwLCAwLCA5OTkzfSwKICAgICB7LTIwMiwgMCwgLTIwMiwgMCwgMCwgOTk5M30sCiAgICAgey0yMDMsIDAsIC0yMDMsIDAsIDAsIDk5OTN9LAorICAgIHs0MjMxOSwgMCwgNDIzMTksIDAsIDAsIDk5OTN9LAorICAgIHs0MjMxNSwgMCwgNDIzMTUsIDAsIDAsIDk5OTN9LAogICAgIHstMjA3LCAwLCAtMjA3LCAwLCAwLCA5OTkzfSwKICAgICB7NDIyODAsIDAsIDQyMjgwLCAwLCAwLCA5OTkzfSwKICAgICB7NDIzMDgsIDAsIDQyMzA4LCAwLCAwLCA5OTkzfSwKICAgICB7LTIwOSwgMCwgLTIwOSwgMCwgMCwgOTk5M30sCiAgICAgey0yMTEsIDAsIC0yMTEsIDAsIDAsIDk5OTN9LAogICAgIHsxMDc0MywgMCwgMTA3NDMsIDAsIDAsIDk5OTN9LAorICAgIHs0MjMwNSwgMCwgNDIzMDUsIDAsIDAsIDk5OTN9LAogICAgIHsxMDc0OSwgMCwgMTA3NDksIDAsIDAsIDk5OTN9LAogICAgIHstMjEzLCAwLCAtMjEzLCAwLCAwLCA5OTkzfSwKICAgICB7LTIxNCwgMCwgLTIxNCwgMCwgMCwgOTk5M30sCiAgICAgezEwNzI3LCAwLCAxMDcyNywgMCwgMCwgOTk5M30sCiAgICAgey0yMTgsIDAsIC0yMTgsIDAsIDAsIDk5OTN9LAorICAgIHs0MjI4MiwgMCwgNDIyODIsIDAsIDAsIDk5OTN9LAogICAgIHstNjksIDAsIC02OSwgMCwgMCwgOTk5M30sCiAgICAgey0yMTcsIDAsIC0yMTcsIDAsIDAsIDk5OTN9LAogICAgIHstNzEsIDAsIC03MSwgMCwgMCwgOTk5M30sCiAgICAgey0yMTksIDAsIC0yMTksIDAsIDAsIDk5OTN9LAorICAgIHs0MjI2MSwgMCwgNDIyNjEsIDAsIDAsIDk5OTN9LAorICAgIHs0MjI1OCwgMCwgNDIyNTgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxNDA4OX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU4ODl9LAogICAgIHsxNjc3NzI0NCwgMTc4MjU4MTgsIDE2Nzc3MjQ0LCAwLCAwLCAzMDIxNn0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEzMzIxfSwKKyAgICB7MCwgMTE2LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDM4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDM3LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDY0LCAwLCAwLCAwLCAxMDExM30sCkBAIC0xMjIsNiArMTI5LDcgQEAKICAgICB7MTY3NzcyNzYsIDE3ODI1ODUwLCAxNjc3NzI3NiwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3NzI3OSwgMTc4MjU4NTMsIDE2Nzc3Mjc5LCAwLCAwLCAyNjM3N30sCiAgICAgezcsIDAsIDcsIDAsIDAsIDk5OTN9LAorICAgIHstMTE2LCAwLCAtMTE2LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgLTYwLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezE2Nzc3MjgyLCAxNzgyNTg1NiwgMTY3NzcyODIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTcsIDAsIDAsIDAsIDEwMTEzfSwKQEAgLTE0MywxMTAgKzE1MSwyMDIgQEAKICAgICB7MCwgMCwgMCwgMCwgNywgMzU4OH0sCiAgICAgezAsIDAsIDAsIDAsIDgsIDM1ODh9LAogICAgIHswLCAwLCAwLCAwLCA5LCAzNTg4fSwKKyAgICB7MTY3NzcyOTIsIDE3ODI1ODY2LCAxNjc3NzI5MiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzI5NSwgMTc4MjU4NjksIDE2Nzc3Mjk1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mjk4LCAxNzgyNTg3MiwgMTY3NzcyOTgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMDEsIDE3ODI1ODc1LCAxNjc3NzMwMSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMwNCwgMTc4MjU4NzgsIDE2Nzc3MzA0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzA3LCAxNzgyNTg4MSwgMTY3NzczMDcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMTAsIDE3ODI1ODg0LCAxNjc3NzMxMCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMxMywgMTc4MjU4ODcsIDE2Nzc3MzEzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzE2LCAxNzgyNTg5MCwgMTY3NzczMTYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMTksIDE3ODI1ODkzLCAxNjc3NzMxOSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMyMiwgMTc4MjU4OTYsIDE2Nzc3MzIyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzI1LCAxNzgyNTg5OSwgMTY3NzczMjUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMjgsIDE3ODI1OTAyLCAxNjc3NzMyOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMzMSwgMTc4MjU5MDUsIDE2Nzc3MzMxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzM0LCAxNzgyNTkwOCwgMTY3NzczMzQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMzcsIDE3ODI1OTExLCAxNjc3NzMzNywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM0MCwgMTc4MjU5MTQsIDE2Nzc3MzQwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzQzLCAxNzgyNTkxNywgMTY3NzczNDMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNDYsIDE3ODI1OTIwLCAxNjc3NzM0NiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM0OSwgMTc4MjU5MjMsIDE2Nzc3MzQ5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzUyLCAxNzgyNTkyNiwgMTY3NzczNTIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNTUsIDE3ODI1OTI5LCAxNjc3NzM1NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM1OCwgMTc4MjU5MzIsIDE2Nzc3MzU4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzYxLCAxNzgyNTkzNSwgMTY3NzczNjEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNjQsIDE3ODI1OTM4LCAxNjc3NzM2NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM2NywgMTc4MjU5NDEsIDE2Nzc3MzY3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzcwLCAxNzgyNTk0NCwgMTY3NzczNzAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNzMsIDE3ODI1OTQ3LCAxNjc3NzM3MywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM3NiwgMTc4MjU5NTAsIDE2Nzc3Mzc2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mzc5LCAxNzgyNTk1MywgMTY3NzczNzksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczODIsIDE3ODI1OTU2LCAxNjc3NzM4MiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM4NSwgMTc4MjU5NTksIDE2Nzc3Mzg1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mzg4LCAxNzgyNTk2MiwgMTY3NzczODgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczOTEsIDE3ODI1OTY1LCAxNjc3NzM5MSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM5NCwgMTc4MjU5NjgsIDE2Nzc3Mzk0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mzk3LCAxNzgyNTk3MSwgMTY3NzczOTcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MDAsIDE3ODI1OTc0LCAxNjc3NzQwMCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQwMywgMTc4MjU5NzcsIDE2Nzc3NDAzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDA2LCAxNzgyNTk4MCwgMTY3Nzc0MDYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MDksIDE3ODI1OTgzLCAxNjc3NzQwOSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQxMiwgMTc4MjU5ODYsIDE2Nzc3NDEyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDE1LCAxNzgyNTk4OSwgMTY3Nzc0MTUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MTgsIDE3ODI1OTkyLCAxNjc3NzQxOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQyMSwgMTc4MjU5OTUsIDE2Nzc3NDIxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDI0LCAxNzgyNTk5OCwgMTY3Nzc0MjQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MjcsIDE3ODI2MDAxLCAxNjc3NzQyNywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQzMCwgMTc4MjYwMDQsIDE2Nzc3NDMwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDMzLCAxNzgyNjAwNywgMTY3Nzc0MzMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MzYsIDE3ODI2MDEwLCAxNjc3NzQzNiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQzOSwgMTc4MjYwMTMsIDE2Nzc3NDM5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDQyLCAxNzgyNjAxNiwgMTY3Nzc0NDIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NDUsIDE3ODI2MDE5LCAxNjc3NzQ0NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ0OCwgMTc4MjYwMjIsIDE2Nzc3NDQ4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDUxLCAxNzgyNjAyNSwgMTY3Nzc0NTEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NTQsIDE3ODI2MDI4LCAxNjc3NzQ1NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ1NywgMTc4MjYwMzEsIDE2Nzc3NDU3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDYwLCAxNzgyNjAzNCwgMTY3Nzc0NjAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NjMsIDE3ODI2MDM3LCAxNjc3NzQ2MywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ2NiwgMTc4MjYwNDAsIDE2Nzc3NDY2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDY5LCAxNzgyNjA0MywgMTY3Nzc0NjksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NzIsIDE3ODI2MDQ2LCAxNjc3NzQ3MiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ3NSwgMTc4MjYwNDksIDE2Nzc3NDc1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDc4LCAxNzgyNjA1MiwgMTY3Nzc0NzgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0ODEsIDE3ODI2MDU1LCAxNjc3NzQ4MSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ4NCwgMTc4MjYwNTgsIDE2Nzc3NDg0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDg3LCAxNzgyNjA2MSwgMTY3Nzc0ODcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0OTAsIDE3ODI2MDY0LCAxNjc3NzQ5MCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ5MywgMTc4MjYwNjcsIDE2Nzc3NDkzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDk2LCAxNzgyNjA3MCwgMTY3Nzc0OTYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0OTksIDE3ODI2MDczLCAxNjc3NzQ5OSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUwMiwgMTc4MjYwNzYsIDE2Nzc3NTAyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTA1LCAxNzgyNjA3OSwgMTY3Nzc1MDUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MDgsIDE3ODI2MDgyLCAxNjc3NzUwOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUxMSwgMTc4MjYwODUsIDE2Nzc3NTExLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTE0LCAxNzgyNjA4OCwgMTY3Nzc1MTQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MTcsIDE3ODI2MDkxLCAxNjc3NzUxNywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUyMCwgMTc4MjYwOTQsIDE2Nzc3NTIwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTIzLCAxNzgyNjA5NywgMTY3Nzc1MjMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MjYsIDE3ODI2MTAwLCAxNjc3NzUyNiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUyOSwgMTc4MjYxMDMsIDE2Nzc3NTI5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTMyLCAxNzgyNjEwNiwgMTY3Nzc1MzIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MzUsIDE3ODI2MTA5LCAxNjc3NzUzNSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUzOCwgMTc4MjYxMTIsIDE2Nzc3NTM4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTQxLCAxNzgyNjExNSwgMTY3Nzc1NDEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1NDQsIDE3ODI2MTE4LCAxNjc3NzU0NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzU0NywgMTc4MjYxMjEsIDE2Nzc3NTQ3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTUwLCAxNzgyNjEyNCwgMTY3Nzc1NTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NTMsIDE3ODI2MTI3LCAxNjc3NzU1MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU1NiwgMTc4MjYxMzAsIDE2Nzc3NTU2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTU5LCAxNzgyNjEzMywgMTY3Nzc1NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NjIsIDE3ODI2MTM2LCAxNjc3NzU2MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU2NSwgMTc4MjYxMzksIDE2Nzc3NTY1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDM4NDB9LAogICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAogICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ1MDksIDE4ODc0NDQyLCAzMzU1NDUwOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDUxNCwgMTg4NzQ0NDcsIDMzNTU0NTE0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTE5LCAxODg3NDQ1MiwgMzM1NTQ1MTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1MjQsIDE4ODc0NDU3LCAzMzU1NDUyNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDUyOSwgMTg4NzQ0NjIsIDMzNTU0NTI5LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3MzE3LCAxNzgyNTg5MSwgMTY3NzczMTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzczMjEsIDE4ODc0NDcwLCAxNjc3NzMyMSwgMCwgMCwgMjY0OTd9LAorICAgIHszMzU1NDc4NSwgMTg4NzQ3MTgsIDMzNTU0Nzg1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzkwLCAxODg3NDcyMywgMzM1NTQ3OTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAzMzU1NDc5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgwMCwgMTg4NzQ3MzMsIDMzNTU0ODAwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODA1LCAxODg3NDczOCwgMzM1NTQ4MDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1OTMsIDE3ODI2MTY3LCAxNjc3NzU5MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU5NywgMTg4NzQ3NDYsIDE2Nzc3NTk3LCAwLCAwLCAyNjQ5N30sCiAgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDU0MSwgMTg4NzQ0NzQsIDMzNTU0NTQxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMxNzYzLCAxOTkyMzA1NSwgNTAzMzE3NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzE3NzAsIDE5OTIzMDYyLCA1MDMzMTc3MCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMTc3NywgMTk5MjMwNjksIDUwMzMxNzc3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwMzksIDE5OTIzMzMxLCA1MDMzMjAzOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA0NiwgMTk5MjMzMzgsIDUwMzMyMDQ2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDUzLCAxOTkyMzM0NSwgNTAzMzIwNTMsIDAsIDAsIDI2Mzc3fSwKICAgICB7NzQsIDAsIDc0LCAwLCAwLCA5OTkzfSwKICAgICB7ODYsIDAsIDg2LCAwLCAwLCA5OTkzfSwKICAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDk5OTN9LAogICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgOTk5M30sCiAgICAgezExMiwgMCwgMTEyLCAwLCAwLCA5OTkzfSwKICAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDU2NywgMTg4NzQ1MDAsIDE2Nzc3MzUzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTczLCAxODg3NDUwNiwgMTY3NzczNTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1NzksIDE4ODc0NTEyLCAxNjc3NzM2NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDU4NSwgMTg4NzQ1MTgsIDE2Nzc3MzcxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTkxLCAxODg3NDUyNCwgMTY3NzczNzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1OTcsIDE4ODc0NTMwLCAxNjc3NzM4MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDYwMywgMTg4NzQ1MzYsIDE2Nzc3Mzg5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NjA5LCAxODg3NDU0MiwgMTY3NzczOTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2MTUsIDE4ODc0NTQ4LCAxNjc3NzQwMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDYyMSwgMTg4NzQ1NTQsIDE2Nzc3NDA3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjI3LCAxODg3NDU2MCwgMTY3Nzc0MTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2MzMsIDE4ODc0NTY2LCAxNjc3NzQxOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDYzOSwgMTg4NzQ1NzIsIDE2Nzc3NDI1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjQ1LCAxODg3NDU3OCwgMTY3Nzc0MzEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2NTEsIDE4ODc0NTg0LCAxNjc3NzQzNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDY1NywgMTg4NzQ1OTAsIDE2Nzc3NDQzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjYzLCAxODg3NDU5NiwgMTY3Nzc0NDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2NjksIDE4ODc0NjAyLCAxNjc3NzQ1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDY3NSwgMTg4NzQ2MDgsIDE2Nzc3NDYxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NjgxLCAxODg3NDYxNCwgMTY3Nzc0NjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2ODcsIDE4ODc0NjIwLCAxNjc3NzQ3MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDY5MywgMTg4NzQ2MjYsIDE2Nzc3NDc5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Njk5LCAxODg3NDYzMiwgMTY3Nzc0ODUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3MDUsIDE4ODc0NjM4LCAxNjc3NzQ5MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDcxMSwgMTg4NzQ2NDQsIDE2Nzc3NDk3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzE3LCAxODg3NDY1MCwgMTY3Nzc1MDMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3MjMsIDE4ODc0NjU2LCAxNjc3NzUwOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDcyOSwgMTg4NzQ2NjIsIDE2Nzc3NTE1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzM1LCAxODg3NDY2OCwgMTY3Nzc1MjEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3NDEsIDE4ODc0Njc0LCAxNjc3NzUyNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDc0NywgMTg4NzQ2ODAsIDE2Nzc3NTMzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzUzLCAxODg3NDY4NiwgMTY3Nzc1MzksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3NTksIDE4ODc0NjkyLCAxNjc3NzU0NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc2NSwgMTg4NzQ2OTgsIDE2Nzc3NTUxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NzcxLCAxODg3NDcwNCwgMTY3Nzc1NTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3NzcsIDE4ODc0NzEwLCAxNjc3NzU2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc4MywgMTg4NzQ3MTYsIDE2Nzc3NTY5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzg5LCAxODg3NDcyMiwgMTY3Nzc1NzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAxNjc3NzU4MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwMSwgMTg4NzQ3MzQsIDE2Nzc3NTg3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODA3LCAxODg3NDc0MCwgMTY3Nzc1OTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4MTMsIDE4ODc0NzQ2LCAxNjc3NzU5OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDgxOSwgMTg4NzQ3NTIsIDE2Nzc3NjA1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODI1LCAxODg3NDc1OCwgMTY3Nzc2MTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4MzEsIDE4ODc0NzY0LCAxNjc3NzYxNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDgzNywgMTg4NzQ3NzAsIDE2Nzc3NjIzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDMzNTU0ODU3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODYyLCAxODg3NDc5NSwgMTY3Nzc2NDgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjgsIDE4ODc0ODAxLCAzMzU1NDg3MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3NSwgMTg4NzQ4MDgsIDMzNTU0ODc1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDk3LCAxOTkyMzM4OSwgNTAzMzIxMDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NDMsIDE4ODc0Nzc2LCAxNjc3NzYyOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg0OSwgMTg4NzQ3ODIsIDE2Nzc3NjM1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODU1LCAxODg3NDc4OCwgMTY3Nzc2NDEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NjEsIDE4ODc0Nzk0LCAxNjc3NzY0NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg2NywgMTg4NzQ4MDAsIDE2Nzc3NjUzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODczLCAxODg3NDgwNiwgMTY3Nzc2NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzksIDE4ODc0ODEyLCAxNjc3NzY2NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4NSwgMTg4NzQ4MTgsIDE2Nzc3NjcxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODkxLCAxODg3NDgyNCwgMTY3Nzc2NzcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4OTcsIDE4ODc0ODMwLCAxNjc3NzY4MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkwMywgMTg4NzQ4MzYsIDE2Nzc3Njg5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTA5LCAxODg3NDg0MiwgMTY3Nzc2OTUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MTUsIDE4ODc0ODQ4LCAxNjc3NzcwMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkyMSwgMTg4NzQ4NTQsIDE2Nzc3NzA3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTI3LCAxODg3NDg2MCwgMTY3Nzc3MTMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzMsIDE4ODc0ODY2LCAxNjc3NzcxOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzOSwgMTg4NzQ4NzIsIDE2Nzc3NzI1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTQ1LCAxODg3NDg3OCwgMTY3Nzc3MzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NTEsIDE4ODc0ODg0LCAxNjc3NzczNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk1NywgMTg4NzQ4OTAsIDE2Nzc3NzQzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTYzLCAxODg3NDg5NiwgMTY3Nzc3NDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NjksIDE4ODc0OTAyLCAxNjc3Nzc1NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3NSwgMTg4NzQ5MDgsIDE2Nzc3NzYxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTgxLCAxODg3NDkxNCwgMTY3Nzc3NjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODcsIDE4ODc0OTIwLCAxNjc3Nzc3MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk5MywgMTg4NzQ5MjYsIDE2Nzc3Nzc5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTk5LCAxODg3NDkzMiwgMTY3Nzc3ODUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMDUsIDE4ODc0OTM4LCAxNjc3Nzc5MSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAxMSwgMTg4NzQ5NDQsIDE2Nzc3Nzk3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDE3LCAxODg3NDk1MCwgMTY3Nzc4MDMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjMsIDE4ODc0OTU2LCAxNjc3NzgwOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyOSwgMTg4NzQ5NjIsIDE2Nzc3ODE1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDM1LCAxODg3NDk2OCwgMTY3Nzc4MjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNDEsIDE4ODc0OTc0LCAxNjc3NzgyNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA0NywgMTg4NzQ5ODAsIDE2Nzc3ODMzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDUzLCAxODg3NDk4NiwgMTY3Nzc4MzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNTksIDE4ODc0OTkyLCAxNjc3Nzg0NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA2NSwgMTg4NzQ5OTgsIDE2Nzc3ODUxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDcxLCAxODg3NTAwNCwgMTY3Nzc4NTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNzcsIDE4ODc1MDEwLCAxNjc3Nzg2MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4MywgMTg4NzUwMTYsIDE2Nzc3ODY5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDg5LCAxODg3NTAyMiwgMTY3Nzc4NzUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwOTUsIDE4ODc1MDI4LCAxNjc3Nzg4MSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEwMSwgMTg4NzUwMzQsIDE2Nzc3ODg3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMTY3Nzc4OTMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMTMsIDE4ODc1MDQ2LCAxNjc3Nzg5OSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTExOSwgMTg4NzUwNTIsIDE2Nzc3OTA1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTI1LCAxODg3NTA1OCwgMTY3Nzc5MTEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMzEsIDE4ODc1MDY0LCAzMzU1NTEzMywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEzOCwgMTg4NzUwNzEsIDE2Nzc3OTI0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTQ0LCAxODg3NTA3NywgMzM1NTUxNDYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNTEsIDE4ODc1MDg0LCAzMzU1NTE1MSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjM3MywgMTk5MjM2NjUsIDUwMzMyMzc2LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDg5MCwgMTg4NzQ4MjMsIDE2Nzc3Njc2LCAwLCAwLCAyNjQzM30sCi0gICAgezE2Nzc3Njc5LCAxNzgyNjI1MywgMTY3Nzc2NzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4OTksIDE4ODc0ODMyLCAzMzU1NDkwMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMzM1NTQ5MTQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5MTksIDE4ODc0ODUyLCAzMzU1NDkxOSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjE0MSwgMTk5MjM0MzMsIDUwMzMyMTQ0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTY2LCAxODg3NTA5OSwgMTY3Nzc5NTIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MTY3Nzc5NTUsIDE3ODI2NTI5LCAxNjc3Nzk1NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3NSwgMTg4NzUxMDgsIDMzNTU1MTc3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTgyLCAxODg3NTExNSwgMTY3Nzc5NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxODgsIDE4ODc1MTIxLCAzMzU1NTE5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE5NSwgMTg4NzUxMjgsIDMzNTU1MTk1LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDE3LCAxOTkyMzcwOSwgNTAzMzI0MjAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTg2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU0OTM0LCAxODg3NDg2NywgMTY3Nzc3MjAsIDAsIDAsIDI2NDMzfSwKLSAgICB7NTAzMzIxNTcsIDE5OTIzNDQ5LCA1MDMzMjE1NywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjE2NCwgMTk5MjM0NTYsIDUwMzMyMTY0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTU0LCAxODg3NDg4NywgMzM1NTQ5NTQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIxNzYsIDE5OTIzNDY4LCA1MDMzMjE3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIxMCwgMTg4NzUxNDMsIDE2Nzc3OTk2LCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyNDMzLCAxOTkyMzcyNSwgNTAzMzI0MzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NDAsIDE5OTIzNzMyLCA1MDMzMjQ0MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIzMCwgMTg4NzUxNjMsIDMzNTU1MjMwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDUyLCAxOTkyMzc0NCwgNTAzMzI0NTIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHs1MDMzMjE4MywgMTk5MjM0NzUsIDUwMzMyMTgzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMTkwLCAxOTkyMzQ4MiwgNTAzMzIxOTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODAsIDE4ODc0OTEzLCAzMzU1NDk4MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4NSwgMTg4NzQ5MTgsIDMzNTU0OTg1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMjA3LCAxOTkyMzQ5OSwgNTAzMzIyMDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NTksIDE5OTIzNzUxLCA1MDMzMjQ1OSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ2NiwgMTk5MjM3NTgsIDUwMzMyNDY2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjU2LCAxODg3NTE4OSwgMzM1NTUyNTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyNjEsIDE4ODc1MTk0LCAzMzU1NTI2MSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ4MywgMTk5MjM3NzUsIDUwMzMyNDgzLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTQ5OTcsIDE4ODc0OTMwLCAzMzU1NDk5OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTAwNCwgMTg4NzQ5MzcsIDE2Nzc3NzkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDEwLCAxODg3NDk0MywgMzM1NTUwMTIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAzMzU1NTAxNywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjIzOSwgMTk5MjM1MzEsIDUwMzMyMjQyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjczLCAxODg3NTIwNiwgMzM1NTUyNzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODAsIDE4ODc1MjEzLCAxNjc3ODA2NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4NiwgMTg4NzUyMTksIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjkzLCAxODg3NTIyNiwgMzM1NTUyOTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1MTUsIDE5OTIzODA3LCA1MDMzMjUxOCwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC0xMjYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUwMzIsIDE4ODc0OTY1LCAxNjc3NzgxOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTMwOCwgMTg4NzUyNDEsIDE2Nzc4MDk0LCAwLCAwLCAyNjQzM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCkBAIC0yODAsMjIgKzM4MCwxMTEgQEAKICAgICB7MCwgLTM1MzMyLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC00MjI4MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtNDIzMDgsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAzMzU1NTA0MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0NSwgMTg4NzQ5NzgsIDMzNTU1MDQ3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDUyLCAxODg3NDk4NSwgMzM1NTUwNTQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIyNzYsIDE5OTIzNTY4LCA1MDMzMjI3OSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjI4NiwgMTk5MjM1NzgsIDUwMzMyMjg5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDc5LCAxODg3NTAxMiwgMzM1NTUwODEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAzMzU1NTA4OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA5MywgMTg4NzUwMjYsIDMzNTU1MDk1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTAwLCAxODg3NTAzMywgMzM1NTUxMDIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAzMzU1NTEwOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTExNCwgMTg4NzUwNDcsIDMzNTU1MTE2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTIxLCAxODg3NTA1NCwgMzM1NTUxMjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTQyMzE5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjMxNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIzMDUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMjU4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjI4MiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIyNjEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgOTI4LCAwLCAwLCAwLCAxMDExM30sCisgICAgey05MjgsIDAsIC05MjgsIDAsIDAsIDk5OTN9LAorICAgIHsxNjc3ODA5NywgMTc4MjY2NzEsIDE2Nzc4MDk3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTAwLCAxNzgyNjY3NCwgMTY3NzgxMDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMDMsIDE3ODI2Njc3LCAxNjc3ODEwMywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEwNiwgMTc4MjY2ODAsIDE2Nzc4MTA2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTA5LCAxNzgyNjY4MywgMTY3NzgxMDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMTIsIDE3ODI2Njg2LCAxNjc3ODExMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODExNSwgMTc4MjY2ODksIDE2Nzc4MTE1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTE4LCAxNzgyNjY5MiwgMTY3NzgxMTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMjEsIDE3ODI2Njk1LCAxNjc3ODEyMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEyNCwgMTc4MjY2OTgsIDE2Nzc4MTI0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTI3LCAxNzgyNjcwMSwgMTY3NzgxMjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMzAsIDE3ODI2NzA0LCAxNjc3ODEzMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEzMywgMTc4MjY3MDcsIDE2Nzc4MTMzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTM2LCAxNzgyNjcxMCwgMTY3NzgxMzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMzksIDE3ODI2NzEzLCAxNjc3ODEzOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE0MiwgMTc4MjY3MTYsIDE2Nzc4MTQyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTQ1LCAxNzgyNjcxOSwgMTY3NzgxNDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNDgsIDE3ODI2NzIyLCAxNjc3ODE0OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE1MSwgMTc4MjY3MjUsIDE2Nzc4MTUxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTU0LCAxNzgyNjcyOCwgMTY3NzgxNTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNTcsIDE3ODI2NzMxLCAxNjc3ODE1NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE2MCwgMTc4MjY3MzQsIDE2Nzc4MTYwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTYzLCAxNzgyNjczNywgMTY3NzgxNjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNjYsIDE3ODI2NzQwLCAxNjc3ODE2NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE2OSwgMTc4MjY3NDMsIDE2Nzc4MTY5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTcyLCAxNzgyNjc0NiwgMTY3NzgxNzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNzUsIDE3ODI2NzQ5LCAxNjc3ODE3NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE3OCwgMTc4MjY3NTIsIDE2Nzc4MTc4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTgxLCAxNzgyNjc1NSwgMTY3NzgxODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxODQsIDE3ODI2NzU4LCAxNjc3ODE4NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE4NywgMTc4MjY3NjEsIDE2Nzc4MTg3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTkwLCAxNzgyNjc2NCwgMTY3NzgxOTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxOTMsIDE3ODI2NzY3LCAxNjc3ODE5MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE5NiwgMTc4MjY3NzAsIDE2Nzc4MTk2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTk5LCAxNzgyNjc3MywgMTY3NzgxOTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMDIsIDE3ODI2Nzc2LCAxNjc3ODIwMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIwNSwgMTc4MjY3NzksIDE2Nzc4MjA1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjA4LCAxNzgyNjc4MiwgMTY3NzgyMDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMTEsIDE3ODI2Nzg1LCAxNjc3ODIxMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIxNCwgMTc4MjY3ODgsIDE2Nzc4MjE0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjE3LCAxNzgyNjc5MSwgMTY3NzgyMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMjAsIDE3ODI2Nzk0LCAxNjc3ODIyMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIyMywgMTc4MjY3OTcsIDE2Nzc4MjIzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjI2LCAxNzgyNjgwMCwgMTY3NzgyMjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMjksIDE3ODI2ODAzLCAxNjc3ODIyOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIzMiwgMTc4MjY4MDYsIDE2Nzc4MjMyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjM1LCAxNzgyNjgwOSwgMTY3NzgyMzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMzgsIDE3ODI2ODEyLCAxNjc3ODIzOCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI0MSwgMTc4MjY4MTUsIDE2Nzc4MjQxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjQ0LCAxNzgyNjgxOCwgMTY3NzgyNDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNDcsIDE3ODI2ODIxLCAxNjc3ODI0NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI1MCwgMTc4MjY4MjQsIDE2Nzc4MjUwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjUzLCAxNzgyNjgyNywgMTY3NzgyNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNTYsIDE3ODI2ODMwLCAxNjc3ODI1NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI1OSwgMTc4MjY4MzMsIDE2Nzc4MjU5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjYyLCAxNzgyNjgzNiwgMTY3NzgyNjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNjUsIDE3ODI2ODM5LCAxNjc3ODI2NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI2OCwgMTc4MjY4NDIsIDE2Nzc4MjY4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjcxLCAxNzgyNjg0NSwgMTY3NzgyNzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNzQsIDE3ODI2ODQ4LCAxNjc3ODI3NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI3NywgMTc4MjY4NTEsIDE2Nzc4Mjc3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjgwLCAxNzgyNjg1NCwgMTY3NzgyODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyODMsIDE3ODI2ODU3LCAxNjc3ODI4MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI4NiwgMTc4MjY4NjAsIDE2Nzc4Mjg2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4Mjg5LCAxNzgyNjg2MywgMTY3NzgyODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyOTIsIDE3ODI2ODY2LCAxNjc3ODI5MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI5NSwgMTc4MjY4NjksIDE2Nzc4Mjk1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4Mjk4LCAxNzgyNjg3MiwgMTY3NzgyOTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMDEsIDE3ODI2ODc1LCAxNjc3ODMwMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMwNCwgMTc4MjY4NzgsIDE2Nzc4MzA0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzA3LCAxNzgyNjg4MSwgMTY3NzgzMDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMTAsIDE3ODI2ODg0LCAxNjc3ODMxMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMxMywgMTc4MjY4ODcsIDE2Nzc4MzEzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzE2LCAxNzgyNjg5MCwgMTY3NzgzMTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMTksIDE3ODI2ODkzLCAxNjc3ODMxOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMyMiwgMTc4MjY4OTYsIDE2Nzc4MzIyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzI1LCAxNzgyNjg5OSwgMTY3NzgzMjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMjgsIDE3ODI2OTAyLCAxNjc3ODMyOCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMzMSwgMTc4MjY5MDUsIDE2Nzc4MzMxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzM0LCAxNzgyNjkwOCwgMTY3NzgzMzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1NTQsIDE4ODc1NDg3LCAzMzU1NTU1NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU2MSwgMTg4NzU0OTQsIDMzNTU1NTYzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTY4LCAxODg3NTUwMSwgMzM1NTU1NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI3OTIsIDE5OTI0MDg0LCA1MDMzMjc5NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgwMiwgMTk5MjQwOTQsIDUwMzMyODA1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTk1LCAxODg3NTUyOCwgMzM1NTU1OTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MDIsIDE4ODc1NTM1LCAzMzU1NTYwNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYwOSwgMTg4NzU1NDIsIDMzNTU1NjExLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjE2LCAxODg3NTU0OSwgMzM1NTU2MTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjMsIDE4ODc1NTU2LCAzMzU1NTYyNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYzMCwgMTg4NzU1NjMsIDMzNTU1NjMyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjM3LCAxODg3NTU3MCwgMzM1NTU2MzksIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAogICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDkzNDR9LAogfTsKIAogLyogZXh0ZW5kZWQgY2FzZSBtYXBwaW5ncyAqLwpAQCAtMzc1LDYgKzU2NCwyODIgQEAKICAgICAxMzYyLAogICAgIDEzMzMsCiAgICAgMTQxMCwKKyAgICA0Mzg4OCwKKyAgICA1MDI0LAorICAgIDUwMjQsCisgICAgNDM4ODksCisgICAgNTAyNSwKKyAgICA1MDI1LAorICAgIDQzODkwLAorICAgIDUwMjYsCisgICAgNTAyNiwKKyAgICA0Mzg5MSwKKyAgICA1MDI3LAorICAgIDUwMjcsCisgICAgNDM4OTIsCisgICAgNTAyOCwKKyAgICA1MDI4LAorICAgIDQzODkzLAorICAgIDUwMjksCisgICAgNTAyOSwKKyAgICA0Mzg5NCwKKyAgICA1MDMwLAorICAgIDUwMzAsCisgICAgNDM4OTUsCisgICAgNTAzMSwKKyAgICA1MDMxLAorICAgIDQzODk2LAorICAgIDUwMzIsCisgICAgNTAzMiwKKyAgICA0Mzg5NywKKyAgICA1MDMzLAorICAgIDUwMzMsCisgICAgNDM4OTgsCisgICAgNTAzNCwKKyAgICA1MDM0LAorICAgIDQzODk5LAorICAgIDUwMzUsCisgICAgNTAzNSwKKyAgICA0MzkwMCwKKyAgICA1MDM2LAorICAgIDUwMzYsCisgICAgNDM5MDEsCisgICAgNTAzNywKKyAgICA1MDM3LAorICAgIDQzOTAyLAorICAgIDUwMzgsCisgICAgNTAzOCwKKyAgICA0MzkwMywKKyAgICA1MDM5LAorICAgIDUwMzksCisgICAgNDM5MDQsCisgICAgNTA0MCwKKyAgICA1MDQwLAorICAgIDQzOTA1LAorICAgIDUwNDEsCisgICAgNTA0MSwKKyAgICA0MzkwNiwKKyAgICA1MDQyLAorICAgIDUwNDIsCisgICAgNDM5MDcsCisgICAgNTA0MywKKyAgICA1MDQzLAorICAgIDQzOTA4LAorICAgIDUwNDQsCisgICAgNTA0NCwKKyAgICA0MzkwOSwKKyAgICA1MDQ1LAorICAgIDUwNDUsCisgICAgNDM5MTAsCisgICAgNTA0NiwKKyAgICA1MDQ2LAorICAgIDQzOTExLAorICAgIDUwNDcsCisgICAgNTA0NywKKyAgICA0MzkxMiwKKyAgICA1MDQ4LAorICAgIDUwNDgsCisgICAgNDM5MTMsCisgICAgNTA0OSwKKyAgICA1MDQ5LAorICAgIDQzOTE0LAorICAgIDUwNTAsCisgICAgNTA1MCwKKyAgICA0MzkxNSwKKyAgICA1MDUxLAorICAgIDUwNTEsCisgICAgNDM5MTYsCisgICAgNTA1MiwKKyAgICA1MDUyLAorICAgIDQzOTE3LAorICAgIDUwNTMsCisgICAgNTA1MywKKyAgICA0MzkxOCwKKyAgICA1MDU0LAorICAgIDUwNTQsCisgICAgNDM5MTksCisgICAgNTA1NSwKKyAgICA1MDU1LAorICAgIDQzOTIwLAorICAgIDUwNTYsCisgICAgNTA1NiwKKyAgICA0MzkyMSwKKyAgICA1MDU3LAorICAgIDUwNTcsCisgICAgNDM5MjIsCisgICAgNTA1OCwKKyAgICA1MDU4LAorICAgIDQzOTIzLAorICAgIDUwNTksCisgICAgNTA1OSwKKyAgICA0MzkyNCwKKyAgICA1MDYwLAorICAgIDUwNjAsCisgICAgNDM5MjUsCisgICAgNTA2MSwKKyAgICA1MDYxLAorICAgIDQzOTI2LAorICAgIDUwNjIsCisgICAgNTA2MiwKKyAgICA0MzkyNywKKyAgICA1MDYzLAorICAgIDUwNjMsCisgICAgNDM5MjgsCisgICAgNTA2NCwKKyAgICA1MDY0LAorICAgIDQzOTI5LAorICAgIDUwNjUsCisgICAgNTA2NSwKKyAgICA0MzkzMCwKKyAgICA1MDY2LAorICAgIDUwNjYsCisgICAgNDM5MzEsCisgICAgNTA2NywKKyAgICA1MDY3LAorICAgIDQzOTMyLAorICAgIDUwNjgsCisgICAgNTA2OCwKKyAgICA0MzkzMywKKyAgICA1MDY5LAorICAgIDUwNjksCisgICAgNDM5MzQsCisgICAgNTA3MCwKKyAgICA1MDcwLAorICAgIDQzOTM1LAorICAgIDUwNzEsCisgICAgNTA3MSwKKyAgICA0MzkzNiwKKyAgICA1MDcyLAorICAgIDUwNzIsCisgICAgNDM5MzcsCisgICAgNTA3MywKKyAgICA1MDczLAorICAgIDQzOTM4LAorICAgIDUwNzQsCisgICAgNTA3NCwKKyAgICA0MzkzOSwKKyAgICA1MDc1LAorICAgIDUwNzUsCisgICAgNDM5NDAsCisgICAgNTA3NiwKKyAgICA1MDc2LAorICAgIDQzOTQxLAorICAgIDUwNzcsCisgICAgNTA3NywKKyAgICA0Mzk0MiwKKyAgICA1MDc4LAorICAgIDUwNzgsCisgICAgNDM5NDMsCisgICAgNTA3OSwKKyAgICA1MDc5LAorICAgIDQzOTQ0LAorICAgIDUwODAsCisgICAgNTA4MCwKKyAgICA0Mzk0NSwKKyAgICA1MDgxLAorICAgIDUwODEsCisgICAgNDM5NDYsCisgICAgNTA4MiwKKyAgICA1MDgyLAorICAgIDQzOTQ3LAorICAgIDUwODMsCisgICAgNTA4MywKKyAgICA0Mzk0OCwKKyAgICA1MDg0LAorICAgIDUwODQsCisgICAgNDM5NDksCisgICAgNTA4NSwKKyAgICA1MDg1LAorICAgIDQzOTUwLAorICAgIDUwODYsCisgICAgNTA4NiwKKyAgICA0Mzk1MSwKKyAgICA1MDg3LAorICAgIDUwODcsCisgICAgNDM5NTIsCisgICAgNTA4OCwKKyAgICA1MDg4LAorICAgIDQzOTUzLAorICAgIDUwODksCisgICAgNTA4OSwKKyAgICA0Mzk1NCwKKyAgICA1MDkwLAorICAgIDUwOTAsCisgICAgNDM5NTUsCisgICAgNTA5MSwKKyAgICA1MDkxLAorICAgIDQzOTU2LAorICAgIDUwOTIsCisgICAgNTA5MiwKKyAgICA0Mzk1NywKKyAgICA1MDkzLAorICAgIDUwOTMsCisgICAgNDM5NTgsCisgICAgNTA5NCwKKyAgICA1MDk0LAorICAgIDQzOTU5LAorICAgIDUwOTUsCisgICAgNTA5NSwKKyAgICA0Mzk2MCwKKyAgICA1MDk2LAorICAgIDUwOTYsCisgICAgNDM5NjEsCisgICAgNTA5NywKKyAgICA1MDk3LAorICAgIDQzOTYyLAorICAgIDUwOTgsCisgICAgNTA5OCwKKyAgICA0Mzk2MywKKyAgICA1MDk5LAorICAgIDUwOTksCisgICAgNDM5NjQsCisgICAgNTEwMCwKKyAgICA1MTAwLAorICAgIDQzOTY1LAorICAgIDUxMDEsCisgICAgNTEwMSwKKyAgICA0Mzk2NiwKKyAgICA1MTAyLAorICAgIDUxMDIsCisgICAgNDM5NjcsCisgICAgNTEwMywKKyAgICA1MTAzLAorICAgIDUxMTIsCisgICAgNTEwNCwKKyAgICA1MTA0LAorICAgIDUxMTMsCisgICAgNTEwNSwKKyAgICA1MTA1LAorICAgIDUxMTQsCisgICAgNTEwNiwKKyAgICA1MTA2LAorICAgIDUxMTUsCisgICAgNTEwNywKKyAgICA1MTA3LAorICAgIDUxMTYsCisgICAgNTEwOCwKKyAgICA1MTA4LAorICAgIDUxMTcsCisgICAgNTEwOSwKKyAgICA1MTA5LAorICAgIDUxMTIsCisgICAgNTEwNCwKKyAgICA1MTA0LAorICAgIDUxMTMsCisgICAgNTEwNSwKKyAgICA1MTA1LAorICAgIDUxMTQsCisgICAgNTEwNiwKKyAgICA1MTA2LAorICAgIDUxMTUsCisgICAgNTEwNywKKyAgICA1MTA3LAorICAgIDUxMTYsCisgICAgNTEwOCwKKyAgICA1MTA4LAorICAgIDUxMTcsCisgICAgNTEwOSwKKyAgICA1MTA5LAogICAgIDc4MzAsCiAgICAgMTA0LAogICAgIDgxNywKQEAgLTkwNCw2ICsxMzY5LDI0NiBAQAogICAgIDkzNywKICAgICA5MjEsCiAgICAgODE4OCwKKyAgICA0Mzg4OCwKKyAgICA1MDI0LAorICAgIDUwMjQsCisgICAgNDM4ODksCisgICAgNTAyNSwKKyAgICA1MDI1LAorICAgIDQzODkwLAorICAgIDUwMjYsCisgICAgNTAyNiwKKyAgICA0Mzg5MSwKKyAgICA1MDI3LAorICAgIDUwMjcsCisgICAgNDM4OTIsCisgICAgNTAyOCwKKyAgICA1MDI4LAorICAgIDQzODkzLAorICAgIDUwMjksCisgICAgNTAyOSwKKyAgICA0Mzg5NCwKKyAgICA1MDMwLAorICAgIDUwMzAsCisgICAgNDM4OTUsCisgICAgNTAzMSwKKyAgICA1MDMxLAorICAgIDQzODk2LAorICAgIDUwMzIsCisgICAgNTAzMiwKKyAgICA0Mzg5NywKKyAgICA1MDMzLAorICAgIDUwMzMsCisgICAgNDM4OTgsCisgICAgNTAzNCwKKyAgICA1MDM0LAorICAgIDQzODk5LAorICAgIDUwMzUsCisgICAgNTAzNSwKKyAgICA0MzkwMCwKKyAgICA1MDM2LAorICAgIDUwMzYsCisgICAgNDM5MDEsCisgICAgNTAzNywKKyAgICA1MDM3LAorICAgIDQzOTAyLAorICAgIDUwMzgsCisgICAgNTAzOCwKKyAgICA0MzkwMywKKyAgICA1MDM5LAorICAgIDUwMzksCisgICAgNDM5MDQsCisgICAgNTA0MCwKKyAgICA1MDQwLAorICAgIDQzOTA1LAorICAgIDUwNDEsCisgICAgNTA0MSwKKyAgICA0MzkwNiwKKyAgICA1MDQyLAorICAgIDUwNDIsCisgICAgNDM5MDcsCisgICAgNTA0MywKKyAgICA1MDQzLAorICAgIDQzOTA4LAorICAgIDUwNDQsCisgICAgNTA0NCwKKyAgICA0MzkwOSwKKyAgICA1MDQ1LAorICAgIDUwNDUsCisgICAgNDM5MTAsCisgICAgNTA0NiwKKyAgICA1MDQ2LAorICAgIDQzOTExLAorICAgIDUwNDcsCisgICAgNTA0NywKKyAgICA0MzkxMiwKKyAgICA1MDQ4LAorICAgIDUwNDgsCisgICAgNDM5MTMsCisgICAgNTA0OSwKKyAgICA1MDQ5LAorICAgIDQzOTE0LAorICAgIDUwNTAsCisgICAgNTA1MCwKKyAgICA0MzkxNSwKKyAgICA1MDUxLAorICAgIDUwNTEsCisgICAgNDM5MTYsCisgICAgNTA1MiwKKyAgICA1MDUyLAorICAgIDQzOTE3LAorICAgIDUwNTMsCisgICAgNTA1MywKKyAgICA0MzkxOCwKKyAgICA1MDU0LAorICAgIDUwNTQsCisgICAgNDM5MTksCisgICAgNTA1NSwKKyAgICA1MDU1LAorICAgIDQzOTIwLAorICAgIDUwNTYsCisgICAgNTA1NiwKKyAgICA0MzkyMSwKKyAgICA1MDU3LAorICAgIDUwNTcsCisgICAgNDM5MjIsCisgICAgNTA1OCwKKyAgICA1MDU4LAorICAgIDQzOTIzLAorICAgIDUwNTksCisgICAgNTA1OSwKKyAgICA0MzkyNCwKKyAgICA1MDYwLAorICAgIDUwNjAsCisgICAgNDM5MjUsCisgICAgNTA2MSwKKyAgICA1MDYxLAorICAgIDQzOTI2LAorICAgIDUwNjIsCisgICAgNTA2MiwKKyAgICA0MzkyNywKKyAgICA1MDYzLAorICAgIDUwNjMsCisgICAgNDM5MjgsCisgICAgNTA2NCwKKyAgICA1MDY0LAorICAgIDQzOTI5LAorICAgIDUwNjUsCisgICAgNTA2NSwKKyAgICA0MzkzMCwKKyAgICA1MDY2LAorICAgIDUwNjYsCisgICAgNDM5MzEsCisgICAgNTA2NywKKyAgICA1MDY3LAorICAgIDQzOTMyLAorICAgIDUwNjgsCisgICAgNTA2OCwKKyAgICA0MzkzMywKKyAgICA1MDY5LAorICAgIDUwNjksCisgICAgNDM5MzQsCisgICAgNTA3MCwKKyAgICA1MDcwLAorICAgIDQzOTM1LAorICAgIDUwNzEsCisgICAgNTA3MSwKKyAgICA0MzkzNiwKKyAgICA1MDcyLAorICAgIDUwNzIsCisgICAgNDM5MzcsCisgICAgNTA3MywKKyAgICA1MDczLAorICAgIDQzOTM4LAorICAgIDUwNzQsCisgICAgNTA3NCwKKyAgICA0MzkzOSwKKyAgICA1MDc1LAorICAgIDUwNzUsCisgICAgNDM5NDAsCisgICAgNTA3NiwKKyAgICA1MDc2LAorICAgIDQzOTQxLAorICAgIDUwNzcsCisgICAgNTA3NywKKyAgICA0Mzk0MiwKKyAgICA1MDc4LAorICAgIDUwNzgsCisgICAgNDM5NDMsCisgICAgNTA3OSwKKyAgICA1MDc5LAorICAgIDQzOTQ0LAorICAgIDUwODAsCisgICAgNTA4MCwKKyAgICA0Mzk0NSwKKyAgICA1MDgxLAorICAgIDUwODEsCisgICAgNDM5NDYsCisgICAgNTA4MiwKKyAgICA1MDgyLAorICAgIDQzOTQ3LAorICAgIDUwODMsCisgICAgNTA4MywKKyAgICA0Mzk0OCwKKyAgICA1MDg0LAorICAgIDUwODQsCisgICAgNDM5NDksCisgICAgNTA4NSwKKyAgICA1MDg1LAorICAgIDQzOTUwLAorICAgIDUwODYsCisgICAgNTA4NiwKKyAgICA0Mzk1MSwKKyAgICA1MDg3LAorICAgIDUwODcsCisgICAgNDM5NTIsCisgICAgNTA4OCwKKyAgICA1MDg4LAorICAgIDQzOTUzLAorICAgIDUwODksCisgICAgNTA4OSwKKyAgICA0Mzk1NCwKKyAgICA1MDkwLAorICAgIDUwOTAsCisgICAgNDM5NTUsCisgICAgNTA5MSwKKyAgICA1MDkxLAorICAgIDQzOTU2LAorICAgIDUwOTIsCisgICAgNTA5MiwKKyAgICA0Mzk1NywKKyAgICA1MDkzLAorICAgIDUwOTMsCisgICAgNDM5NTgsCisgICAgNTA5NCwKKyAgICA1MDk0LAorICAgIDQzOTU5LAorICAgIDUwOTUsCisgICAgNTA5NSwKKyAgICA0Mzk2MCwKKyAgICA1MDk2LAorICAgIDUwOTYsCisgICAgNDM5NjEsCisgICAgNTA5NywKKyAgICA1MDk3LAorICAgIDQzOTYyLAorICAgIDUwOTgsCisgICAgNTA5OCwKKyAgICA0Mzk2MywKKyAgICA1MDk5LAorICAgIDUwOTksCisgICAgNDM5NjQsCisgICAgNTEwMCwKKyAgICA1MTAwLAorICAgIDQzOTY1LAorICAgIDUxMDEsCisgICAgNTEwMSwKKyAgICA0Mzk2NiwKKyAgICA1MTAyLAorICAgIDUxMDIsCisgICAgNDM5NjcsCisgICAgNTEwMywKKyAgICA1MTAzLAogICAgIDY0MjU2LAogICAgIDEwMiwKICAgICAxMDIsCkBAIC0xMDI5LDQwNSArMTczNCw1MTEgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIAogICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCi0gICAgNzEsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNTAsIDcxLCAxNTEsIDE1MiwgCi0gICAgMTUzLCA3MSwgMTU0LCA3MSwgMTU1LCA3MSwgNzEsIDcxLCAxNTYsIDcxLCA3MSwgNzEsIDE1NywgMTU4LCAxNTksIDE2MCwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTYxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjIsIDcxLCAKLSAgICAxNjMsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjQsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMTY1LCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjYsIDE2NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjgsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDY0LCAxNjksIDE3MCwgMTcxLCAxNzIsIDcxLCAxNzMsIDcxLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCi0gICAgMTc5LCAxODAsIDE4MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxODIsIDE4MywgNzEsIDcxLCAxODQsIAotICAgIDE4NSwgMTg2LCAxODcsIDE4OCwgNzEsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCA2NSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxOTcsIDE5OCwgCi0gICAgMTk5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjAwLCAKLSAgICAzNCwgMjAxLCAyMDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTQ1LCAzNCwgMzQsIDE1MiwgMTQ1LCAxNTMsIDE1NCwgMTU1LCAKKyAgICAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE0NSwgMTQ1LCAxNjMsIDE0NSwgMTQ1LCAxNDUsIDE2NCwgCisgICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNDUsIDE3MSwgMTQ1LCAxNzIsIDE3MywgMTc0LCAxNzUsIAorICAgIDE0NSwgMTQ1LCAxNzYsIDE0NSwgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTc4LCAxNzksIDM0LCAxODAsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MywgMTg0LCAxODUsIDE4NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTg3LCAxODgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxOTAsIDE5MSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDY0LCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE0NSwgMTk2LCAxNDUsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCA2NCwgCisgICAgNjQsIDY0LCA2NCwgMjA1LCAyMDYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAzNCwgMjA3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIwOCwgCisgICAgMjA5LCAxNDUsIDE0NSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDE0NSwgNjQsIDIxNSwgNjQsIDY0LCAyMTYsIDIxNywgCisgICAgNjQsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjI1LCAyMjYsIDIyNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIyOCwgMzQsIDIyOSwgMjMwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwMywgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMjMzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA2LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzUsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDIzNywgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAyMDgsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMjAzLCAzNCwgMzQsIDIwOSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgMjEwLCA3MSwgMjExLCAyMTIsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzMSwgMzQsIDM0LCAyMzksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0MCwgMTQ1LCAyNDEsIDI0MiwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0xNDYzLDggKzIyNzQsOCBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMjEzLCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMTUwMCw3ICsyMzExLDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjEzLCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xNTM1LDIwMyArMjM0NiwyMDQgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2NCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKICAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgNzcsIDIwLCAyMCwgODAsIDIwLCA4MSwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgMjAsIDIwLCAyMCwgODQsIDIwLCAKLSAgICA4NiwgODcsIDIwLCAyMCwgODgsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA4OSwgMjAsIDIwLCA5MCwgMjAsIDIwLCAKLSAgICA5MCwgMjAsIDIwLCAyMCwgMjAsIDkwLCA5MSwgOTIsIDkyLCA5MywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NCwgMjAsIDU1LCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTUsIDk1LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAKLSAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDk2LCA2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCi0gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDMxLCAzMCwgMzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgMjAsIDc3LCA3NywgMjAsIDc4LCAyMCwgNzksIDgwLCAyMCwgMjAsIAorICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgMjAsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAorICAgIDg5LCA5MCwgMjAsIDIwLCA5MSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDkyLCAyMCwgMjAsIDkzLCAyMCwgMjAsIAorICAgIDkzLCAyMCwgMjAsIDIwLCA5NCwgOTMsIDk1LCA5NiwgOTYsIDk3LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk4LCAyMCwgNTUsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTksIDEwMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMSwgMTAxLCA2LCA2LCA2LCA2LCAxMDIsIAorICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgMTAyLCA2LCAxMDIsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCA5NywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDEwMywgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgMzAsIDMxLCAwLCAwLCAKLSAgICA5OCwgNTAsIDUwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgOTksIDI1LCAxMDAsIDEwMCwgMTAwLCAwLCAxMDEsIDAsIAotICAgIDEwMiwgMTAyLCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTA3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDgsIDEwOSwgMTA5LCAxMTAsIDExMSwgMTEyLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTQsIDExNSwgMTE2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMTcsIDExOCwgMTE5LCAyMCwgCi0gICAgMTIwLCAxMjEsIDUsIDMwLCAzMSwgMTIyLCAzMCwgMzEsIDIwLCA2NCwgNjQsIDY0LCAxMjMsIDEyMywgMTIzLCAxMjMsIAotICAgIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDE3LCAxNywgMTcsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgMzAsIDMxLCAwLCAwLCAxMDQsIDUwLCA1MCwgNTAsIDUsIDEwNSwgMCwgCisgICAgMCwgMCwgMCwgNiwgNiwgMTA2LCAyNSwgMTA3LCAxMDcsIDEwNywgMCwgMTA4LCAwLCAxMDksIDEwOSwgMTEwLCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDExMSwgMTEyLCAxMTIsIDExMiwgMTEzLCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDExNCwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTE1LCAxMTYsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjAsIDEyMCwgMTIxLCAxMjIsIAorICAgIDEyMywgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNSwgMzAsIDMxLCAxMzAsIAorICAgIDMwLCAzMSwgMjAsIDY0LCA2NCwgNjQsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKICAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgCi0gICAgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMzIsIAorICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKKyAgICAxMzIsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAogICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAogICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI1LCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTMzLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEzNCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDAsIDk2LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI5LCAwLCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCA1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzcsIDAsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDUsIDI1LCAyNSwgNSwgMjUsIDI1LCAKLSAgICA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDIxLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjEsIDUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIAorICAgIDIxLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDk2LCA1LCA1LCA1LCA1LCA5NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDIxLCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxMDIsIDEwMiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMTAyLCA1LCA1LCA1LCA1LCAxMDIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxMDIsIDI1LCAyNSwgMjUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAyNSwgMCwgMTgsIAotICAgIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAKLSAgICAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCisgICAgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIAorICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIAorICAgIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIAotICAgIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTMwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIAotICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAKLSAgICAxMzAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgOTYsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgCi0gICAgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAKKyAgICAxMzksIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMTc0MiwzMSArMjU1NCwzMyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIAorICAgIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAKKyAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgCisgICAgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIAorICAgIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAKKyAgICAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgCisgICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIAorICAgIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgCisgICAgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMTc4NiwyOCArMjYwMCwyOCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDk2LCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgCisgICAgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMTgxNSw1OTAgKzI2MjksMjY3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxMzIsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTQwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDk2LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgMTQyLCAyMCwgMjAsIDIwLCAxNDMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNDIsIDIwLCAKKyAgICAyMCwgMjAsIDI0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxNDQsIAotICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAyMCwgMjAsIDE1MCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMCwgMCwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAotICAgIDE1MiwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKLSAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDE1MiwgMTUyLCAxNTIsIAotICAgIDE1MiwgMTUyLCAxNTIsIDAsIDAsIDE1MywgMTUxLCAxNTQsIDE1MSwgMTU1LCAxNTEsIDE1NiwgMTUxLCAwLCAxNTIsIDAsIAotICAgIDE1MiwgMCwgMTUyLCAwLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgCi0gICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTU3LCAxNTcsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU5LCAxNTksIAotICAgIDE2MCwgMTYwLCAxNjEsIDE2MSwgMTYyLCAxNjIsIDAsIDAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgCi0gICAgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIAotICAgIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAKLSAgICAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDE1MSwgCi0gICAgMTUxLCAyMTEsIDIxMiwgMjEzLCAwLCAyMTQsIDIxNSwgMTUyLCAxNTIsIDIxNiwgMjE2LCAyMTcsIDYsIDIxOCwgNiwgNiwgCi0gICAgNiwgMjE5LCAyMjAsIDIyMSwgMCwgMjIyLCAyMjMsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCA2LCA2LCA2LCAxNTEsIAotICAgIDE1MSwgMjI2LCAyMjcsIDAsIDAsIDIyOCwgMjI5LCAxNTIsIDE1MiwgMjMwLCAyMzAsIDAsIDYsIDYsIDYsIDE1MSwgMTUxLCAKLSAgICAyMzEsIDIzMiwgMjMzLCAxMTksIDIzNCwgMjM1LCAxNTIsIDE1MiwgMjM2LCAyMzYsIDEyMiwgNiwgNiwgNiwgMCwgMCwgCi0gICAgMjM3LCAyMzgsIDIzOSwgMCwgMjQwLCAyNDEsIDI0MiwgMjQyLCAyNDMsIDI0MywgMjQ0LCA2LCA2LCAwLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjQ1LCA5NSwgMCwgMCwgCi0gICAgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgOTUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAKLSAgICAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTEzLCA1LCA1LCAKLSAgICA1LCA1LCAxMTMsIDUsIDUsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDIwLCA1LCAxMTMsIDUsIAotICAgIDUsIDI1MiwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDUsIDUsIDUsIDUsIDUsIDExMywgNSwgMjUzLCA1LCAxMTMsIAotICAgIDUsIDI1NCwgMjU1LCAxMTMsIDExMywgMjUyLCAyMCwgMTEzLCAxMTMsIDI1NiwgMTEzLCAyMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDIwLCA1LCA1LCAyMCwgMjAsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCAxMTMsIDIwLCAyMCwgMjAsIDIwLCA1LCA1LCA1LCAKLSAgICA1LCAyNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgCi0gICAgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMTQxLCAxNDEsIDE0MSwgMzAsIDMxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgCi0gICAgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAKLSAgICAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAKLSAgICAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIAotICAgIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI0NSwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAKLSAgICAyNDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAKLSAgICAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIAotICAgIDI1MCwgMjUxLCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMzAsIDMxLCAyNjIsIDI2MywgCi0gICAgMjY0LCAyNjUsIDI2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjY3LCAyNjgsIDI2OSwgMjcwLCAyMCwgMzAsIDMxLCAKLSAgICAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgMjcxLCAyNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIDI1LCAyNSwgMjUsIDMwLCAzMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5NiwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3MywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyMCwgMjAsIDI1MCwgMjAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIAorICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgMCwgMjUyLCAyNTIsIDI1MiwgCisgICAgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAKKyAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCisgICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIAorICAgIDAsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MywgMjUxLCAyNTQsIDI1MSwgMjU1LCAyNTEsIDI1NiwgCisgICAgMjUxLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCisgICAgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjU3LCAyNTcsIDI1OCwgMjU4LCAyNTgsIAorICAgIDI1OCwgMjU5LCAyNTksIDI2MCwgMjYwLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDI2NiwgCisgICAgMjY3LCAyNjgsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIAorICAgIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDI5MywgMjk0LCAKKyAgICAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAzMDcsIDMwOCwgCisgICAgMzA5LCAzMTAsIDI1MSwgMjUxLCAzMTEsIDMxMiwgMzEzLCAwLCAzMTQsIDMxNSwgMjUyLCAyNTIsIDMxNiwgMzE2LCAzMTcsIAorICAgIDYsIDMxOCwgNiwgNiwgNiwgMzE5LCAzMjAsIDMyMSwgMCwgMzIyLCAzMjMsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCA2LCAKKyAgICA2LCA2LCAyNTEsIDI1MSwgMzI2LCAzMjcsIDAsIDAsIDMyOCwgMzI5LCAyNTIsIDI1MiwgMzMwLCAzMzAsIDAsIDYsIDYsIDYsIAorICAgIDI1MSwgMjUxLCAzMzEsIDMzMiwgMzMzLCAxMjYsIDMzNCwgMzM1LCAyNTIsIDI1MiwgMzM2LCAzMzYsIDEzMCwgNiwgNiwgNiwgCisgICAgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAzNDEsIDM0MiwgMzQyLCAzNDMsIDM0MywgMzQ0LCA2LCA2LCAwLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIAorICAgIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzQ1LCAxMDEsIAorICAgIDAsIDAsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzQ1LCAyNiwgMjIsIDIzLCAKKyAgICAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMTIwLCA1LCA1LCA1LCA1LCAxMjAsIDUsIDUsIDIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM1MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDEyMCwgNSwgMzUzLCA1LCAxMjAsIDUsIDM1NCwgMzU1LCAxMjAsIDEyMCwgMzUyLCAyMCwgMTIwLCAxMjAsIDM1NiwgMTIwLCAKKyAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDIwLCA1LCA1LCAyMCwgMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCAxMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIAorICAgIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAKKyAgICAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyLCA1LCA1LCA1LCA1LCA5NiwgNTUsIDE0MSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNSwgOTYsIAotICAgIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCA5NiwgNTUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCA2LCA2LCA5NiwgOTYsIDU1LCAKLSAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1LCA5NiwgOTYsIDk2LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgCisgICAgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAorICAgIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCisgICAgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAorICAgIDM2MCwgMzYwLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKKyAgICAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCisgICAgMzQ1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgCisgICAgMzQ5LCAzNTAsIDM1MSwgMjcsIDM0NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjc0LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDU1LCAyNSwgNiwgNiwgNiwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDk2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAKKyAgICAzNTAsIDM1MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMCwgCisgICAgMzAsIDMxLCAzNjIsIDM2MywgMzY0LCAzNjUsIDM2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzY3LCAzNjgsIDM2OSwgCisgICAgMzcwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzNzEsIDM3MSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzcyLCAzNzIsIDM3MiwgCisgICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAorICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKKyAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAotICAgIDYsIDYsIDYsIDYsIDYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAyNzUsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgNiwgMzAsIDMxLCAyNzYsIDIwLCAwLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMiwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MywgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUsIDk1LCAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDIsIDUsIAorICAgIDUsIDUsIDUsIDEwMiwgNTUsIDI0MSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDI0MSwgMjQxLCAyNDEsIDEwMiwgCisgICAgNTUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAKLSAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDk2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgCisgICAgMCwgMCwgMjUsIDI1LCA2LCA2LCAxMDIsIDEwMiwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgOTYsIDUsIDUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMTgsIDE4LCA1LCA1LCA1NSwgOTYsIDk2LCAKLSAgICAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAKLSAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCAxMDIsIDEwMiwgNTUsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI3OCwgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI0MDYsMTk4ICsyODk3LDYzOSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDI5MCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI5MCwgMjkwLCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAKLSAgICAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCAwLCAyOTAsIDU1LCAyOTAsIDU1LCAKLSAgICAyOTAsIDU1LCAyOTAsIDU1LCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA2LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI5MSwgMjkxLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMjcsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzc0LCAKKyAgICA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM3NCwgMzc0LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgCisgICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDEwMiwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCA1NSwgMjUsIDYsIDYsIDYsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCAxMDIsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDEsIDEwMSwgMjUsIDI1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzc1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM3NiwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM3NywgMzc4LCAzNzksIDM4MCwgMCwgMCwgMzgxLCAzODIsIDM4MywgMzg0LCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTAxLCAxMDEsIAorICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgNSwgNTUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAyLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTAyLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDE4LCAyNSwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMTAyLCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgNSwgCisgICAgNSwgNTUsIDEwMiwgMTAyLCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAzODUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMzg3LCAzODgsIDM4OSwgMzkwLCAKKyAgICAzOTEsIDM5MiwgMzkzLCAzOTQsIDM5NSwgMzk2LCAzOTcsIDM5OCwgMzk5LCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQwNCwgCisgICAgNDA1LCA0MDYsIDQwNywgNDA4LCA0MDksIDQxMCwgNDExLCA0MTIsIDQxMywgNDE0LCA0MTUsIDQxNiwgNDE3LCA0MTgsIAorICAgIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwgNDI2LCA0MjcsIDQyOCwgNDI5LCA0MzAsIDQzMSwgNDMyLCAKKyAgICA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCA0NDIsIDQ0MywgNDQ0LCA0NDUsIDQ0NiwgCisgICAgNDQ3LCA0NDgsIDQ0OSwgNDUwLCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCA0NTcsIDQ1OCwgNDU5LCA0NjAsIAorICAgIDQ2MSwgNDYyLCA0NjMsIDQ2NCwgNDY1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjYsIDQ2NywgNDY4LCA0NjksIAorICAgIDQ3MCwgNDcxLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNDc0LCA0NzUsIDQ3NiwgCisgICAgNDc3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIAotICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKLSAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTMsIDI5MywgCi0gICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIAotICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKLSAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgMCwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgCisgICAgNSwgNiwgMTgsIDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNDc5LCA0NzksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNiwgMjIsIDIzLCAyNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgCi0gICAgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjQxLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCA0ODAsIAorICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKKyAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCisgICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAorICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKKyAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCisgICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgCisgICAgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1LCAKKyAgICA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgCisgICAgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgCisgICAgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCkBAIC0yNjA3LDI5NyArMzUzOSwzNzkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICA1LCA1LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMCwgMTEzLCAxMTMsIDAsIDAsIDExMywgMCwgMCwgCi0gICAgMTEzLCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDAsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMCwgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAwLCAwLCAwLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDIwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCi0gICAgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NSwgMjQ1LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIAotICAgIDI1MCwgMjUxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKLSAgICA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAwLCAxMjAsIDEyMCwgMCwgMCwgMTIwLCAwLCAwLCAxMjAsIDEyMCwgMCwgMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAwLCAxMjAsIDAsIDAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMjAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCAKKyAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIAorICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNDUsIDM0NSwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAorICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKKyAgICA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCisgICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAorICAgIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDAsIDAsIDAsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKKyAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCisgICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA2LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCkBAIC0yOTEwLDEzICszOTI0LDEzIEBACiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMjk0MSw2ICszOTU1LDcgQEAKICAgICBjYXNlIDB4MEM3ODoKICAgICBjYXNlIDB4MENFNjoKICAgICBjYXNlIDB4MEQ2NjoKKyAgICBjYXNlIDB4MERFNjoKICAgICBjYXNlIDB4MEU1MDoKICAgICBjYXNlIDB4MEVEMDoKICAgICBjYXNlIDB4MEYyMDoKQEAgLTI5NjksNiArMzk4NCw3IEBACiAgICAgY2FzZSAweEE4RDA6CiAgICAgY2FzZSAweEE5MDA6CiAgICAgY2FzZSAweEE5RDA6CisgICAgY2FzZSAweEE5RjA6CiAgICAgY2FzZSAweEFBNTA6CiAgICAgY2FzZSAweEFCRjA6CiAgICAgY2FzZSAweEY5QjI6CkBAIC0yOTc5LDcgKzM5OTUsMTQgQEAKICAgICBjYXNlIDB4MTEwRjA6CiAgICAgY2FzZSAweDExMTM2OgogICAgIGNhc2UgMHgxMTFEMDoKKyAgICBjYXNlIDB4MTEyRjA6CisgICAgY2FzZSAweDExNEQwOgorICAgIGNhc2UgMHgxMTY1MDoKICAgICBjYXNlIDB4MTE2QzA6CisgICAgY2FzZSAweDExNzMwOgorICAgIGNhc2UgMHgxMThFMDoKKyAgICBjYXNlIDB4MTZBNjA6CisgICAgY2FzZSAweDE2QjUwOgogICAgIGNhc2UgMHgxRDdDRToKICAgICBjYXNlIDB4MUQ3RDg6CiAgICAgY2FzZSAweDFEN0UyOgpAQCAtMjk4Nyw2ICs0MDEwLDggQEAKICAgICBjYXNlIDB4MUQ3RjY6CiAgICAgY2FzZSAweDFGMTAwOgogICAgIGNhc2UgMHgxRjEwMToKKyAgICBjYXNlIDB4MUYxMEI6CisgICAgY2FzZSAweDFGMTBDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMC4wOwogICAgIGNhc2UgMHgwMDMxOgogICAgIGNhc2UgMHgwMEI5OgpAQCAtMzAwNCw2ICs0MDI5LDcgQEAKICAgICBjYXNlIDB4MEM3QzoKICAgICBjYXNlIDB4MENFNzoKICAgICBjYXNlIDB4MEQ2NzoKKyAgICBjYXNlIDB4MERFNzoKICAgICBjYXNlIDB4MEU1MToKICAgICBjYXNlIDB4MEVEMToKICAgICBjYXNlIDB4MEYyMToKQEAgLTMwNDcsNiArNDA3Myw3IEBACiAgICAgY2FzZSAweEE4RDE6CiAgICAgY2FzZSAweEE5MDE6CiAgICAgY2FzZSAweEE5RDE6CisgICAgY2FzZSAweEE5RjE6CiAgICAgY2FzZSAweEFBNTE6CiAgICAgY2FzZSAweEFCRjE6CiAgICAgY2FzZSAweEZGMTE6CkBAIC0zMDU1LDM5ICs0MDgyLDU5IEBACiAgICAgY2FzZSAweDEwMTU4OgogICAgIGNhc2UgMHgxMDE1OToKICAgICBjYXNlIDB4MTAxNUE6CisgICAgY2FzZSAweDEwMkUxOgogICAgIGNhc2UgMHgxMDMyMDoKICAgICBjYXNlIDB4MTAzRDE6CiAgICAgY2FzZSAweDEwNEExOgogICAgIGNhc2UgMHgxMDg1ODoKKyAgICBjYXNlIDB4MTA4Nzk6CisgICAgY2FzZSAweDEwOEE3OgorICAgIGNhc2UgMHgxMDhGQjoKICAgICBjYXNlIDB4MTA5MTY6CisgICAgY2FzZSAweDEwOUMwOgogICAgIGNhc2UgMHgxMEE0MDoKICAgICBjYXNlIDB4MTBBN0Q6CisgICAgY2FzZSAweDEwQTlEOgorICAgIGNhc2UgMHgxMEFFQjoKICAgICBjYXNlIDB4MTBCNTg6CiAgICAgY2FzZSAweDEwQjc4OgorICAgIGNhc2UgMHgxMEJBOToKKyAgICBjYXNlIDB4MTBDRkE6CiAgICAgY2FzZSAweDEwRTYwOgogICAgIGNhc2UgMHgxMTA1MjoKICAgICBjYXNlIDB4MTEwNjc6CiAgICAgY2FzZSAweDExMEYxOgogICAgIGNhc2UgMHgxMTEzNzoKICAgICBjYXNlIDB4MTExRDE6CisgICAgY2FzZSAweDExMUUxOgorICAgIGNhc2UgMHgxMTJGMToKKyAgICBjYXNlIDB4MTE0RDE6CisgICAgY2FzZSAweDExNjUxOgogICAgIGNhc2UgMHgxMTZDMToKKyAgICBjYXNlIDB4MTE3MzE6CisgICAgY2FzZSAweDExOEUxOgogICAgIGNhc2UgMHgxMjQxNToKICAgICBjYXNlIDB4MTI0MUU6CiAgICAgY2FzZSAweDEyNDJDOgogICAgIGNhc2UgMHgxMjQzNDoKICAgICBjYXNlIDB4MTI0NEY6CiAgICAgY2FzZSAweDEyNDU4OgorICAgIGNhc2UgMHgxNkE2MToKKyAgICBjYXNlIDB4MTZCNTE6CiAgICAgY2FzZSAweDFEMzYwOgogICAgIGNhc2UgMHgxRDdDRjoKICAgICBjYXNlIDB4MUQ3RDk6CiAgICAgY2FzZSAweDFEN0UzOgogICAgIGNhc2UgMHgxRDdFRDoKICAgICBjYXNlIDB4MUQ3Rjc6CisgICAgY2FzZSAweDFFOEM3OgogICAgIGNhc2UgMHgxRjEwMjoKICAgICBjYXNlIDB4MjA5MkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjA7CiAgICAgY2FzZSAweDIxNTI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTAuMDsKKyAgICBjYXNlIDB4MTA5RjY6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNDoKICAgICBjYXNlIDB4MEI3NToKICAgICBjYXNlIDB4QTgzMzoKQEAgLTMxMDEsMTIgKzQxNDgsMTUgQEAKICAgICBjYXNlIDB4MTAxNDE6CiAgICAgY2FzZSAweDEwMTc1OgogICAgIGNhc2UgMHgxMDE3NjoKKyAgICBjYXNlIDB4MTA5QkQ6CiAgICAgY2FzZSAweDEwRTdCOgorICAgIGNhc2UgMHgxMjQ2NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yLjA7CiAgICAgY2FzZSAweDIxNTM6CiAgICAgY2FzZSAweDEwRTdEOgogICAgIGNhc2UgMHgxMjQ1QToKICAgICBjYXNlIDB4MTI0NUQ6CisgICAgY2FzZSAweDEyNDY1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzMuMDsKICAgICBjYXNlIDB4MDBCQzoKICAgICBjYXNlIDB4MDlGNzoKQEAgLTMxMTQsOSArNDE2NCwxMSBAQAogICAgIGNhc2UgMHgwRDczOgogICAgIGNhc2UgMHhBODMwOgogICAgIGNhc2UgMHgxMDE0MDoKKyAgICBjYXNlIDB4MTAxOEI6CiAgICAgY2FzZSAweDEwRTdDOgogICAgIGNhc2UgMHgxMjQ2MDoKICAgICBjYXNlIDB4MTI0NjI6CisgICAgY2FzZSAweDEyNDYzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQuMDsKICAgICBjYXNlIDB4MjE1NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC81LjA7CkBAIC0zMTYzLDE3ICs0MjE1LDMyIEBACiAgICAgY2FzZSAweDEwMTYyOgogICAgIGNhc2UgMHgxMDE2MzoKICAgICBjYXNlIDB4MTAxNjQ6CisgICAgY2FzZSAweDEwMkVBOgogICAgIGNhc2UgMHgxMDMyMjoKICAgICBjYXNlIDB4MTAzRDM6CiAgICAgY2FzZSAweDEwODVCOgorICAgIGNhc2UgMHgxMDg3RToKKyAgICBjYXNlIDB4MTA4QUQ6CisgICAgY2FzZSAweDEwOEZEOgogICAgIGNhc2UgMHgxMDkxNzoKKyAgICBjYXNlIDB4MTA5Qzk6CiAgICAgY2FzZSAweDEwQTQ0OgorICAgIGNhc2UgMHgxMEE5RToKKyAgICBjYXNlIDB4MTBBRUQ6CiAgICAgY2FzZSAweDEwQjVDOgogICAgIGNhc2UgMHgxMEI3QzoKKyAgICBjYXNlIDB4MTBCQUQ6CisgICAgY2FzZSAweDEwQ0ZDOgogICAgIGNhc2UgMHgxMEU2OToKICAgICBjYXNlIDB4MTEwNUI6CisgICAgY2FzZSAweDExMUVBOgorICAgIGNhc2UgMHgxMTczQToKKyAgICBjYXNlIDB4MTE4RUE6CisgICAgY2FzZSAweDE2QjVCOgogICAgIGNhc2UgMHgxRDM2OToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwLjA7CisgICAgY2FzZSAweDEwOUZGOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAuMC8xMi4wOwogICAgIGNhc2UgMHgwQkYxOgogICAgIGNhc2UgMHgwRDcxOgogICAgIGNhc2UgMHgxMzdCOgpAQCAtMzE4NiwxNCArNDI1MywyMyBAQAogICAgIGNhc2UgMHgxMDE0QjoKICAgICBjYXNlIDB4MTAxNTI6CiAgICAgY2FzZSAweDEwMTZBOgorICAgIGNhc2UgMHgxMDJGMzoKICAgICBjYXNlIDB4MTAzRDU6CiAgICAgY2FzZSAweDEwODVEOgorICAgIGNhc2UgMHgxMDhBRjoKKyAgICBjYXNlIDB4MTA4RkY6CiAgICAgY2FzZSAweDEwOTE5OgorICAgIGNhc2UgMHgxMDlEMjoKICAgICBjYXNlIDB4MTBBNDY6CisgICAgY2FzZSAweDEwQUVGOgogICAgIGNhc2UgMHgxMEI1RToKICAgICBjYXNlIDB4MTBCN0U6CisgICAgY2FzZSAweDEwQkFGOgorICAgIGNhc2UgMHgxMENGRToKICAgICBjYXNlIDB4MTBFNzI6CiAgICAgY2FzZSAweDExMDY0OgorICAgIGNhc2UgMHgxMTFGMzoKKyAgICBjYXNlIDB4MTZCNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAuMDsKICAgICBjYXNlIDB4MEJGMjoKICAgICBjYXNlIDB4MEQ3MjoKQEAgLTMyMDgsMTAgKzQyODQsMTMgQEAKICAgICBjYXNlIDB4MTAxNTQ6CiAgICAgY2FzZSAweDEwMTcxOgogICAgIGNhc2UgMHgxMDg1RToKKyAgICBjYXNlIDB4MTA5REI6CiAgICAgY2FzZSAweDEwQTQ3OgogICAgIGNhc2UgMHgxMEI1RjoKICAgICBjYXNlIDB4MTBCN0Y6CisgICAgY2FzZSAweDEwQ0ZGOgogICAgIGNhc2UgMHgxMTA2NToKKyAgICBjYXNlIDB4MTExRjQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAwLjA7CiAgICAgY2FzZSAweDEzN0M6CiAgICAgY2FzZSAweDIxODI6CkBAIC0zMjIwLDEzICs0Mjk5LDIyIEBACiAgICAgY2FzZSAweDEwMTJCOgogICAgIGNhc2UgMHgxMDE1NToKICAgICBjYXNlIDB4MTA4NUY6CisgICAgY2FzZSAweDEwOUU0OgorICAgIGNhc2UgMHgxNkI1RDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwLjA7CiAgICAgY2FzZSAweDIxODg6CisgICAgY2FzZSAweDEwOUVEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwLjA7CisgICAgY2FzZSAweDE2QjVFOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwMC4wOwogICAgIGNhc2UgMHg0RUJGOgogICAgIGNhc2UgMHg1MTA0OgorICAgIGNhc2UgMHgxNkI1RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMC4wOworICAgIGNhc2UgMHgxNkI2MDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMDAwLjA7CiAgICAgY2FzZSAweDUxNDY6CisgICAgY2FzZSAweDE2QjYxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwMDAwMDAwMC4wOwogICAgIGNhc2UgMHgyMTZBOgogICAgIGNhc2UgMHgyMTdBOgpAQCAtMzIzNSw2ICs0MzIzLDggQEAKICAgICBjYXNlIDB4MjQ5MjoKICAgICBjYXNlIDB4MjRFQjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDExLjA7CisgICAgY2FzZSAweDEwOUJDOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTEuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTEuMC8yLjA7CiAgICAgY2FzZSAweDIxNkI6CkBAIC0zMzA1LDYgKzQzOTUsNyBAQAogICAgIGNhc2UgMHgwQzdEOgogICAgIGNhc2UgMHgwQ0U4OgogICAgIGNhc2UgMHgwRDY4OgorICAgIGNhc2UgMHgwREU4OgogICAgIGNhc2UgMHgwRTUyOgogICAgIGNhc2UgMHgwRUQyOgogICAgIGNhc2UgMHgwRjIyOgpAQCAtMzM0OSw2ICs0NDQwLDcgQEAKICAgICBjYXNlIDB4QThEMjoKICAgICBjYXNlIDB4QTkwMjoKICAgICBjYXNlIDB4QTlEMjoKKyAgICBjYXNlIDB4QTlGMjoKICAgICBjYXNlIDB4QUE1MjoKICAgICBjYXNlIDB4QUJGMjoKICAgICBjYXNlIDB4Rjk3ODoKQEAgLTMzNTgsMjAgKzQ0NTAsMzEgQEAKICAgICBjYXNlIDB4MTAxNUM6CiAgICAgY2FzZSAweDEwMTVEOgogICAgIGNhc2UgMHgxMDE1RToKKyAgICBjYXNlIDB4MTAyRTI6CiAgICAgY2FzZSAweDEwM0QyOgogICAgIGNhc2UgMHgxMDRBMjoKICAgICBjYXNlIDB4MTA4NTk6CisgICAgY2FzZSAweDEwODdBOgorICAgIGNhc2UgMHgxMDhBODoKICAgICBjYXNlIDB4MTA5MUE6CisgICAgY2FzZSAweDEwOUMxOgogICAgIGNhc2UgMHgxMEE0MToKICAgICBjYXNlIDB4MTBCNTk6CiAgICAgY2FzZSAweDEwQjc5OgorICAgIGNhc2UgMHgxMEJBQToKICAgICBjYXNlIDB4MTBFNjE6CiAgICAgY2FzZSAweDExMDUzOgogICAgIGNhc2UgMHgxMTA2ODoKICAgICBjYXNlIDB4MTEwRjI6CiAgICAgY2FzZSAweDExMTM4OgogICAgIGNhc2UgMHgxMTFEMjoKKyAgICBjYXNlIDB4MTExRTI6CisgICAgY2FzZSAweDExMkYyOgorICAgIGNhc2UgMHgxMTREMjoKKyAgICBjYXNlIDB4MTE2NTI6CiAgICAgY2FzZSAweDExNkMyOgorICAgIGNhc2UgMHgxMTczMjoKKyAgICBjYXNlIDB4MTE4RTI6CiAgICAgY2FzZSAweDEyNDAwOgogICAgIGNhc2UgMHgxMjQxNjoKICAgICBjYXNlIDB4MTI0MUY6CkBAIC0zMzgyLDIwICs0NDg1LDI2IEBACiAgICAgY2FzZSAweDEyNDUwOgogICAgIGNhc2UgMHgxMjQ1NjoKICAgICBjYXNlIDB4MTI0NTk6CisgICAgY2FzZSAweDE2QTYyOgorICAgIGNhc2UgMHgxNkI1MjoKICAgICBjYXNlIDB4MUQzNjE6CiAgICAgY2FzZSAweDFEN0QwOgogICAgIGNhc2UgMHgxRDdEQToKICAgICBjYXNlIDB4MUQ3RTQ6CiAgICAgY2FzZSAweDFEN0VFOgogICAgIGNhc2UgMHgxRDdGODoKKyAgICBjYXNlIDB4MUU4Qzg6CiAgICAgY2FzZSAweDFGMTAzOgogICAgIGNhc2UgMHgyMjM5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMDsKKyAgICBjYXNlIDB4MTA5Rjc6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjAvMTIuMDsKICAgICBjYXNlIDB4MjE1NDoKICAgICBjYXNlIDB4MTAxNzc6CiAgICAgY2FzZSAweDEwRTdFOgogICAgIGNhc2UgMHgxMjQ1QjoKICAgICBjYXNlIDB4MTI0NUU6CisgICAgY2FzZSAweDEyNDY2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wLzMuMDsKICAgICBjYXNlIDB4MjE1NjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMC81LjA7CkBAIC0zNDA5LDIzICs0NTE4LDQwIEBACiAgICAgY2FzZSAweDUzNDQ6CiAgICAgY2FzZSAweDVFRkY6CiAgICAgY2FzZSAweDEwMTExOgorICAgIGNhc2UgMHgxMDJFQjoKICAgICBjYXNlIDB4MTAzRDQ6CiAgICAgY2FzZSAweDEwODVDOgorICAgIGNhc2UgMHgxMDg3RjoKKyAgICBjYXNlIDB4MTA4QUU6CisgICAgY2FzZSAweDEwOEZFOgogICAgIGNhc2UgMHgxMDkxODoKKyAgICBjYXNlIDB4MTA5Q0E6CiAgICAgY2FzZSAweDEwQTQ1OgorICAgIGNhc2UgMHgxMEE5RjoKKyAgICBjYXNlIDB4MTBBRUU6CiAgICAgY2FzZSAweDEwQjVEOgogICAgIGNhc2UgMHgxMEI3RDoKKyAgICBjYXNlIDB4MTBCQUU6CiAgICAgY2FzZSAweDEwRTZBOgogICAgIGNhc2UgMHgxMTA1QzoKKyAgICBjYXNlIDB4MTExRUI6CisgICAgY2FzZSAweDExNzNCOgorICAgIGNhc2UgMHgxMThFQjoKICAgICBjYXNlIDB4MUQzNkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMC4wOwogICAgIGNhc2UgMHgxMDExQToKKyAgICBjYXNlIDB4MTAyRjQ6CisgICAgY2FzZSAweDEwOUQzOgogICAgIGNhc2UgMHgxMEU3MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwMC4wOwogICAgIGNhc2UgMHgxMDEyMzoKKyAgICBjYXNlIDB4MTA5REM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMDAwLjA7CiAgICAgY2FzZSAweDEwMTJDOgorICAgIGNhc2UgMHgxMDlFNToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwMDAwLjA7CisgICAgY2FzZSAweDEwOUVFOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAwMDAwLjA7CiAgICAgY2FzZSAweDMyNTE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMS4wOwogICAgIGNhc2UgMHgxMjQzMjoKQEAgLTM0NjIsNiArNDU4OCw3IEBACiAgICAgY2FzZSAweDBDN0U6CiAgICAgY2FzZSAweDBDRTk6CiAgICAgY2FzZSAweDBENjk6CisgICAgY2FzZSAweDBERTk6CiAgICAgY2FzZSAweDBFNTM6CiAgICAgY2FzZSAweDBFRDM6CiAgICAgY2FzZSAweDBGMjM6CkBAIC0zNTA1LDI0ICs0NjMyLDM2IEBACiAgICAgY2FzZSAweEE4RDM6CiAgICAgY2FzZSAweEE5MDM6CiAgICAgY2FzZSAweEE5RDM6CisgICAgY2FzZSAweEE5RjM6CiAgICAgY2FzZSAweEFBNTM6CiAgICAgY2FzZSAweEFCRjM6CiAgICAgY2FzZSAweEY5NkI6CiAgICAgY2FzZSAweEZGMTM6CiAgICAgY2FzZSAweDEwMTA5OgorICAgIGNhc2UgMHgxMDJFMzoKICAgICBjYXNlIDB4MTA0QTM6CiAgICAgY2FzZSAweDEwODVBOgorICAgIGNhc2UgMHgxMDg3QjoKKyAgICBjYXNlIDB4MTA4QTk6CiAgICAgY2FzZSAweDEwOTFCOgorICAgIGNhc2UgMHgxMDlDMjoKICAgICBjYXNlIDB4MTBBNDI6CiAgICAgY2FzZSAweDEwQjVBOgogICAgIGNhc2UgMHgxMEI3QToKKyAgICBjYXNlIDB4MTBCQUI6CiAgICAgY2FzZSAweDEwRTYyOgogICAgIGNhc2UgMHgxMTA1NDoKICAgICBjYXNlIDB4MTEwNjk6CiAgICAgY2FzZSAweDExMEYzOgogICAgIGNhc2UgMHgxMTEzOToKICAgICBjYXNlIDB4MTExRDM6CisgICAgY2FzZSAweDExMUUzOgorICAgIGNhc2UgMHgxMTJGMzoKKyAgICBjYXNlIDB4MTE0RDM6CisgICAgY2FzZSAweDExNjUzOgogICAgIGNhc2UgMHgxMTZDMzoKKyAgICBjYXNlIDB4MTE3MzM6CisgICAgY2FzZSAweDExOEUzOgogICAgIGNhc2UgMHgxMjQwMToKICAgICBjYXNlIDB4MTI0MDg6CiAgICAgY2FzZSAweDEyNDE3OgpAQCAtMzUzOCwxOCArNDY3NywyMyBAQAogICAgIGNhc2UgMHgxMjQ0QjoKICAgICBjYXNlIDB4MTI0NTE6CiAgICAgY2FzZSAweDEyNDU3OgorICAgIGNhc2UgMHgxNkE2MzoKKyAgICBjYXNlIDB4MTZCNTM6CiAgICAgY2FzZSAweDFEMzYyOgogICAgIGNhc2UgMHgxRDdEMToKICAgICBjYXNlIDB4MUQ3REI6CiAgICAgY2FzZSAweDFEN0U1OgogICAgIGNhc2UgMHgxRDdFRjoKICAgICBjYXNlIDB4MUQ3Rjk6CisgICAgY2FzZSAweDFFOEM5OgogICAgIGNhc2UgMHgxRjEwNDoKICAgICBjYXNlIDB4MjBBRkQ6CiAgICAgY2FzZSAweDIwQjE5OgogICAgIGNhc2UgMHgyMjk5ODoKICAgICBjYXNlIDB4MjNCMUI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjA7CisgICAgY2FzZSAweDEwOUY4OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjY6CiAgICAgY2FzZSAweDBCNzc6CiAgICAgY2FzZSAweEE4MzU6CkBAIC0zNTc0LDE5ICs0NzE4LDI5IEBACiAgICAgY2FzZSAweDUzNDU6CiAgICAgY2FzZSAweDEwMTEyOgogICAgIGNhc2UgMHgxMDE2NToKKyAgICBjYXNlIDB4MTAyRUM6CisgICAgY2FzZSAweDEwOUNCOgogICAgIGNhc2UgMHgxMEU2QjoKICAgICBjYXNlIDB4MTEwNUQ6CisgICAgY2FzZSAweDExMUVDOgorICAgIGNhc2UgMHgxMThFQzoKICAgICBjYXNlIDB4MUQzNkI6CiAgICAgY2FzZSAweDIwOTgzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAuMDsKICAgICBjYXNlIDB4MTAxMUI6CiAgICAgY2FzZSAweDEwMTZCOgorICAgIGNhc2UgMHgxMDJGNToKKyAgICBjYXNlIDB4MTA5RDQ6CiAgICAgY2FzZSAweDEwRTc0OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAwLjA7CiAgICAgY2FzZSAweDEwMTI0OgorICAgIGNhc2UgMHgxMDlERDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwMDAuMDsKICAgICBjYXNlIDB4MTAxMkQ6CisgICAgY2FzZSAweDEwOUU2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RUY6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzMDAwMDAuMDsKICAgICBjYXNlIDB4MzI1QjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMxLjA7CiAgICAgY2FzZSAweDMyNUM6CkBAIC0zNjE4LDYgKzQ3NzIsNyBAQAogICAgIGNhc2UgMHgwQzZBOgogICAgIGNhc2UgMHgwQ0VBOgogICAgIGNhc2UgMHgwRDZBOgorICAgIGNhc2UgMHgwREVBOgogICAgIGNhc2UgMHgwRTU0OgogICAgIGNhc2UgMHgwRUQ0OgogICAgIGNhc2UgMHgwRjI0OgpAQCAtMzY1OCwyMSArNDgxMywzNCBAQAogICAgIGNhc2UgMHhBOEQ0OgogICAgIGNhc2UgMHhBOTA0OgogICAgIGNhc2UgMHhBOUQ0OgorICAgIGNhc2UgMHhBOUY0OgogICAgIGNhc2UgMHhBQTU0OgogICAgIGNhc2UgMHhBQkY0OgogICAgIGNhc2UgMHhGRjE0OgogICAgIGNhc2UgMHgxMDEwQToKKyAgICBjYXNlIDB4MTAyRTQ6CiAgICAgY2FzZSAweDEwNEE0OgorICAgIGNhc2UgMHgxMDg3QzoKKyAgICBjYXNlIDB4MTA4QUE6CisgICAgY2FzZSAweDEwOEFCOgorICAgIGNhc2UgMHgxMDlDMzoKICAgICBjYXNlIDB4MTBBNDM6CiAgICAgY2FzZSAweDEwQjVCOgogICAgIGNhc2UgMHgxMEI3QjoKKyAgICBjYXNlIDB4MTBCQUM6CiAgICAgY2FzZSAweDEwRTYzOgogICAgIGNhc2UgMHgxMTA1NToKICAgICBjYXNlIDB4MTEwNkE6CiAgICAgY2FzZSAweDExMEY0OgogICAgIGNhc2UgMHgxMTEzQToKICAgICBjYXNlIDB4MTExRDQ6CisgICAgY2FzZSAweDExMUU0OgorICAgIGNhc2UgMHgxMTJGNDoKKyAgICBjYXNlIDB4MTE0RDQ6CisgICAgY2FzZSAweDExNjU0OgogICAgIGNhc2UgMHgxMTZDNDoKKyAgICBjYXNlIDB4MTE3MzQ6CisgICAgY2FzZSAweDExOEU0OgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtMzY4OCwxNyArNDg1NiwyMyBAQAogICAgIGNhc2UgMHgxMjQ0QzoKICAgICBjYXNlIDB4MTI0NTI6CiAgICAgY2FzZSAweDEyNDUzOgorICAgIGNhc2UgMHgxMjQ2OToKKyAgICBjYXNlIDB4MTZBNjQ6CisgICAgY2FzZSAweDE2QjU0OgogICAgIGNhc2UgMHgxRDM2MzoKICAgICBjYXNlIDB4MUQ3RDI6CiAgICAgY2FzZSAweDFEN0RDOgogICAgIGNhc2UgMHgxRDdFNjoKICAgICBjYXNlIDB4MUQ3RjA6CiAgICAgY2FzZSAweDFEN0ZBOgorICAgIGNhc2UgMHgxRThDQToKICAgICBjYXNlIDB4MUYxMDU6CiAgICAgY2FzZSAweDIwMDY0OgogICAgIGNhc2UgMHgyMDBFMjoKICAgICBjYXNlIDB4MjYyNkQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0LjA7CisgICAgY2FzZSAweDEwOUY5OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgNC4wLzEyLjA7CiAgICAgY2FzZSAweDIxNTg6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0LjAvNS4wOwogICAgIGNhc2UgMHgxMzc1OgpAQCAtMzcwNiwxOSArNDg4MCwzMCBAQAogICAgIGNhc2UgMHgzMkI1OgogICAgIGNhc2UgMHg1MzRDOgogICAgIGNhc2UgMHgxMDExMzoKKyAgICBjYXNlIDB4MTAyRUQ6CisgICAgY2FzZSAweDEwOUNDOgogICAgIGNhc2UgMHgxMEU2QzoKICAgICBjYXNlIDB4MTEwNUU6CisgICAgY2FzZSAweDExMUVEOgorICAgIGNhc2UgMHgxMThFRDoKKyAgICBjYXNlIDB4MTI0Njc6CiAgICAgY2FzZSAweDFEMzZDOgogICAgIGNhc2UgMHgyMDk4QzoKICAgICBjYXNlIDB4MjA5OUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MC4wOwogICAgIGNhc2UgMHgxMDExQzoKKyAgICBjYXNlIDB4MTAyRjY6CisgICAgY2FzZSAweDEwOUQ1OgogICAgIGNhc2UgMHgxMEU3NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQwMC4wOwogICAgIGNhc2UgMHgxMDEyNToKKyAgICBjYXNlIDB4MTA5REU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MDAwLjA7CiAgICAgY2FzZSAweDEwMTJFOgorICAgIGNhc2UgMHgxMDlFNzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQwMDAwLjA7CisgICAgY2FzZSAweDEwOUYwOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDAwMDAwLjA7CiAgICAgY2FzZSAweDMyQjY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MS4wOwogICAgIGNhc2UgMHgzMkI3OgpAQCAtMzc1Miw2ICs0OTM3LDcgQEAKICAgICBjYXNlIDB4MEM2QjoKICAgICBjYXNlIDB4MENFQjoKICAgICBjYXNlIDB4MEQ2QjoKKyAgICBjYXNlIDB4MERFQjoKICAgICBjYXNlIDB4MEU1NToKICAgICBjYXNlIDB4MEVENToKICAgICBjYXNlIDB4MEYyNToKQEAgLTM3OTIsNiArNDk3OCw3IEBACiAgICAgY2FzZSAweEE4RDU6CiAgICAgY2FzZSAweEE5MDU6CiAgICAgY2FzZSAweEE5RDU6CisgICAgY2FzZSAweEE5RjU6CiAgICAgY2FzZSAweEFBNTU6CiAgICAgY2FzZSAweEFCRjU6CiAgICAgY2FzZSAweEZGMTU6CkBAIC0zODAxLDE1ICs0OTg4LDI4IEBACiAgICAgY2FzZSAweDEwMTRGOgogICAgIGNhc2UgMHgxMDE1RjoKICAgICBjYXNlIDB4MTAxNzM6CisgICAgY2FzZSAweDEwMkU1OgogICAgIGNhc2UgMHgxMDMyMToKICAgICBjYXNlIDB4MTA0QTU6CisgICAgY2FzZSAweDEwODdEOgorICAgIGNhc2UgMHgxMDhBQzoKKyAgICBjYXNlIDB4MTA4RkM6CisgICAgY2FzZSAweDEwOUM0OgorICAgIGNhc2UgMHgxMEFFQzoKKyAgICBjYXNlIDB4MTBDRkI6CiAgICAgY2FzZSAweDEwRTY0OgogICAgIGNhc2UgMHgxMTA1NjoKICAgICBjYXNlIDB4MTEwNkI6CiAgICAgY2FzZSAweDExMEY1OgogICAgIGNhc2UgMHgxMTEzQjoKICAgICBjYXNlIDB4MTExRDU6CisgICAgY2FzZSAweDExMUU1OgorICAgIGNhc2UgMHgxMTJGNToKKyAgICBjYXNlIDB4MTE0RDU6CisgICAgY2FzZSAweDExNjU1OgogICAgIGNhc2UgMHgxMTZDNToKKyAgICBjYXNlIDB4MTE3MzU6CisgICAgY2FzZSAweDExOEU1OgogICAgIGNhc2UgMHgxMjQwMzoKICAgICBjYXNlIDB4MTI0MEE6CiAgICAgY2FzZSAweDEyNDEwOgpAQCAtMzgyMSwxNSArNTAyMSwyMSBAQAogICAgIGNhc2UgMHgxMjQ0RDoKICAgICBjYXNlIDB4MTI0NTQ6CiAgICAgY2FzZSAweDEyNDU1OgorICAgIGNhc2UgMHgxMjQ2QToKKyAgICBjYXNlIDB4MTZBNjU6CisgICAgY2FzZSAweDE2QjU1OgogICAgIGNhc2UgMHgxRDM2NDoKICAgICBjYXNlIDB4MUQ3RDM6CiAgICAgY2FzZSAweDFEN0REOgogICAgIGNhc2UgMHgxRDdFNzoKICAgICBjYXNlIDB4MUQ3RjE6CiAgICAgY2FzZSAweDFEN0ZCOgorICAgIGNhc2UgMHgxRThDQjoKICAgICBjYXNlIDB4MUYxMDY6CiAgICAgY2FzZSAweDIwMTIxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wOworICAgIGNhc2UgMHgxMDlGQToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDUuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wLzIuMDsKICAgICBjYXNlIDB4MjE1QToKQEAgLTM4NTIsMTAgKzUwNTgsMTYgQEAKICAgICBjYXNlIDB4MTAxNjg6CiAgICAgY2FzZSAweDEwMTY5OgogICAgIGNhc2UgMHgxMDE3NDoKKyAgICBjYXNlIDB4MTAyRUU6CiAgICAgY2FzZSAweDEwMzIzOgorICAgIGNhc2UgMHgxMDlDRDoKICAgICBjYXNlIDB4MTBBN0U6CisgICAgY2FzZSAweDEwQ0ZEOgogICAgIGNhc2UgMHgxMEU2RDoKICAgICBjYXNlIDB4MTEwNUY6CisgICAgY2FzZSAweDExMUVFOgorICAgIGNhc2UgMHgxMThFRToKKyAgICBjYXNlIDB4MTI0Njg6CiAgICAgY2FzZSAweDFEMzZEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAuMDsKICAgICBjYXNlIDB4MjE2RToKQEAgLTM4NjksNiArNTA4MSw4IEBACiAgICAgY2FzZSAweDEwMTZFOgogICAgIGNhc2UgMHgxMDE2RjoKICAgICBjYXNlIDB4MTAxNzA6CisgICAgY2FzZSAweDEwMkY3OgorICAgIGNhc2UgMHgxMDlENjoKICAgICBjYXNlIDB4MTBFNzY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MDAuMDsKICAgICBjYXNlIDB4MjE4MToKQEAgLTM4NzYsMTIgKzUwOTAsMTYgQEAKICAgICBjYXNlIDB4MTAxNDY6CiAgICAgY2FzZSAweDEwMTRFOgogICAgIGNhc2UgMHgxMDE3MjoKKyAgICBjYXNlIDB4MTA5REY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MDAwLjA7CiAgICAgY2FzZSAweDIxODc6CiAgICAgY2FzZSAweDEwMTJGOgogICAgIGNhc2UgMHgxMDE0NzoKICAgICBjYXNlIDB4MTAxNTY6CisgICAgY2FzZSAweDEwOUU4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjE6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA1MDAwMDAuMDsKICAgICBjYXNlIDB4MDAzNjoKICAgICBjYXNlIDB4MDY2NjoKICAgICBjYXNlIDB4MDZGNjoKQEAgLTM4OTUsNiArNTExMyw3IEBACiAgICAgY2FzZSAweDBDNkM6CiAgICAgY2FzZSAweDBDRUM6CiAgICAgY2FzZSAweDBENkM6CisgICAgY2FzZSAweDBERUM6CiAgICAgY2FzZSAweDBFNTY6CiAgICAgY2FzZSAweDBFRDY6CiAgICAgY2FzZSAweDBGMjY6CkBAIC0zOTM1LDIwICs1MTU0LDI5IEBACiAgICAgY2FzZSAweEE4RDY6CiAgICAgY2FzZSAweEE5MDY6CiAgICAgY2FzZSAweEE5RDY6CisgICAgY2FzZSAweEE5RjY6CiAgICAgY2FzZSAweEFBNTY6CiAgICAgY2FzZSAweEFCRjY6CiAgICAgY2FzZSAweEY5RDE6CiAgICAgY2FzZSAweEY5RDM6CiAgICAgY2FzZSAweEZGMTY6CiAgICAgY2FzZSAweDEwMTBDOgorICAgIGNhc2UgMHgxMDJFNjoKICAgICBjYXNlIDB4MTA0QTY6CisgICAgY2FzZSAweDEwOUM1OgogICAgIGNhc2UgMHgxMEU2NToKICAgICBjYXNlIDB4MTEwNTc6CiAgICAgY2FzZSAweDExMDZDOgogICAgIGNhc2UgMHgxMTBGNjoKICAgICBjYXNlIDB4MTExM0M6CiAgICAgY2FzZSAweDExMUQ2OgorICAgIGNhc2UgMHgxMTFFNjoKKyAgICBjYXNlIDB4MTEyRjY6CisgICAgY2FzZSAweDExNEQ2OgorICAgIGNhc2UgMHgxMTY1NjoKICAgICBjYXNlIDB4MTE2QzY6CisgICAgY2FzZSAweDExNzM2OgorICAgIGNhc2UgMHgxMThFNjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTM5NTYsMjkgKzUxODQsNDUgQEAKICAgICBjYXNlIDB4MTI0Mjg6CiAgICAgY2FzZSAweDEyNDQwOgogICAgIGNhc2UgMHgxMjQ0RToKKyAgICBjYXNlIDB4MTI0NkI6CisgICAgY2FzZSAweDE2QTY2OgorICAgIGNhc2UgMHgxNkI1NjoKICAgICBjYXNlIDB4MUQzNjU6CiAgICAgY2FzZSAweDFEN0Q0OgogICAgIGNhc2UgMHgxRDdERToKICAgICBjYXNlIDB4MUQ3RTg6CiAgICAgY2FzZSAweDFEN0YyOgogICAgIGNhc2UgMHgxRDdGQzoKKyAgICBjYXNlIDB4MUU4Q0M6CiAgICAgY2FzZSAweDFGMTA3OgogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKKyAgICBjYXNlIDB4MTA5RkI6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjAvMTIuMDsKICAgICBjYXNlIDB4MTM3NzoKICAgICBjYXNlIDB4MzI0RDoKICAgICBjYXNlIDB4MTAxMTU6CisgICAgY2FzZSAweDEwMkVGOgorICAgIGNhc2UgMHgxMDlDRToKICAgICBjYXNlIDB4MTBFNkU6CiAgICAgY2FzZSAweDExMDYwOgorICAgIGNhc2UgMHgxMTFFRjoKKyAgICBjYXNlIDB4MTE4RUY6CiAgICAgY2FzZSAweDFEMzZFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAuMDsKICAgICBjYXNlIDB4MTAxMUU6CisgICAgY2FzZSAweDEwMkY4OgorICAgIGNhc2UgMHgxMDlENzoKICAgICBjYXNlIDB4MTBFNzc6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MDAuMDsKICAgICBjYXNlIDB4MTAxMjc6CisgICAgY2FzZSAweDEwOUUwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAwMC4wOwogICAgIGNhc2UgMHgxMDEzMDoKKyAgICBjYXNlIDB4MTA5RTk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MDAwMC4wOworICAgIGNhc2UgMHgxMDlGMjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwMDAwMC4wOwogICAgIGNhc2UgMHgwMDM3OgogICAgIGNhc2UgMHgwNjY3OgogICAgIGNhc2UgMHgwNkY3OgpAQCAtMzk5Miw2ICs1MjM2LDcgQEAKICAgICBjYXNlIDB4MEM2RDoKICAgICBjYXNlIDB4MENFRDoKICAgICBjYXNlIDB4MEQ2RDoKKyAgICBjYXNlIDB4MERFRDoKICAgICBjYXNlIDB4MEU1NzoKICAgICBjYXNlIDB4MEVENzoKICAgICBjYXNlIDB4MEYyNzoKQEAgLTQwMzIsMTggKzUyNzcsMjcgQEAKICAgICBjYXNlIDB4QThENzoKICAgICBjYXNlIDB4QTkwNzoKICAgICBjYXNlIDB4QTlENzoKKyAgICBjYXNlIDB4QTlGNzoKICAgICBjYXNlIDB4QUE1NzoKICAgICBjYXNlIDB4QUJGNzoKICAgICBjYXNlIDB4RkYxNzoKICAgICBjYXNlIDB4MTAxMEQ6CisgICAgY2FzZSAweDEwMkU3OgogICAgIGNhc2UgMHgxMDRBNzoKKyAgICBjYXNlIDB4MTA5QzY6CiAgICAgY2FzZSAweDEwRTY2OgogICAgIGNhc2UgMHgxMTA1ODoKICAgICBjYXNlIDB4MTEwNkQ6CiAgICAgY2FzZSAweDExMEY3OgogICAgIGNhc2UgMHgxMTEzRDoKICAgICBjYXNlIDB4MTExRDc6CisgICAgY2FzZSAweDExMUU3OgorICAgIGNhc2UgMHgxMTJGNzoKKyAgICBjYXNlIDB4MTE0RDc6CisgICAgY2FzZSAweDExNjU3OgogICAgIGNhc2UgMHgxMTZDNzoKKyAgICBjYXNlIDB4MTE3Mzc6CisgICAgY2FzZSAweDExOEU3OgogICAgIGNhc2UgMHgxMjQwNToKICAgICBjYXNlIDB4MTI0MEM6CiAgICAgY2FzZSAweDEyNDEyOgpAQCAtNDA1MiwxNSArNTMwNiwyMSBAQAogICAgIGNhc2UgMHgxMjQ0MToKICAgICBjYXNlIDB4MTI0NDI6CiAgICAgY2FzZSAweDEyNDQzOgorICAgIGNhc2UgMHgxMjQ2QzoKKyAgICBjYXNlIDB4MTZBNjc6CisgICAgY2FzZSAweDE2QjU3OgogICAgIGNhc2UgMHgxRDM2NjoKICAgICBjYXNlIDB4MUQ3RDU6CiAgICAgY2FzZSAweDFEN0RGOgogICAgIGNhc2UgMHgxRDdFOToKICAgICBjYXNlIDB4MUQ3RjM6CiAgICAgY2FzZSAweDFEN0ZEOgorICAgIGNhc2UgMHgxRThDRDoKICAgICBjYXNlIDB4MUYxMDg6CiAgICAgY2FzZSAweDIwMDAxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wOworICAgIGNhc2UgMHgxMDlGQzoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wLzIuMDsKICAgICBjYXNlIDB4MjE1RToKQEAgLTQwNjgsMTcgKzUzMjgsMjcgQEAKICAgICBjYXNlIDB4MTM3ODoKICAgICBjYXNlIDB4MzI0RToKICAgICBjYXNlIDB4MTAxMTY6CisgICAgY2FzZSAweDEwMkYwOgorICAgIGNhc2UgMHgxMDlDRjoKICAgICBjYXNlIDB4MTBFNkY6CiAgICAgY2FzZSAweDExMDYxOgorICAgIGNhc2UgMHgxMTFGMDoKKyAgICBjYXNlIDB4MTE4RjA6CiAgICAgY2FzZSAweDFEMzZGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAuMDsKICAgICBjYXNlIDB4MTAxMUY6CisgICAgY2FzZSAweDEwMkY5OgorICAgIGNhc2UgMHgxMDlEODoKICAgICBjYXNlIDB4MTBFNzg6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3MDAuMDsKICAgICBjYXNlIDB4MTAxMjg6CisgICAgY2FzZSAweDEwOUUxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAwMC4wOwogICAgIGNhc2UgMHgxMDEzMToKKyAgICBjYXNlIDB4MTA5RUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3MDAwMC4wOworICAgIGNhc2UgMHgxMDlGMzoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwMDAwMC4wOwogICAgIGNhc2UgMHgwMDM4OgogICAgIGNhc2UgMHgwNjY4OgogICAgIGNhc2UgMHgwNkY4OgpAQCAtNDA5Miw2ICs1MzYyLDcgQEAKICAgICBjYXNlIDB4MEM2RToKICAgICBjYXNlIDB4MENFRToKICAgICBjYXNlIDB4MEQ2RToKKyAgICBjYXNlIDB4MERFRToKICAgICBjYXNlIDB4MEU1ODoKICAgICBjYXNlIDB4MEVEODoKICAgICBjYXNlIDB4MEYyODoKQEAgLTQxMzAsMTggKzU0MDEsMjcgQEAKICAgICBjYXNlIDB4QThEODoKICAgICBjYXNlIDB4QTkwODoKICAgICBjYXNlIDB4QTlEODoKKyAgICBjYXNlIDB4QTlGODoKICAgICBjYXNlIDB4QUE1ODoKICAgICBjYXNlIDB4QUJGODoKICAgICBjYXNlIDB4RkYxODoKICAgICBjYXNlIDB4MTAxMEU6CisgICAgY2FzZSAweDEwMkU4OgogICAgIGNhc2UgMHgxMDRBODoKKyAgICBjYXNlIDB4MTA5Qzc6CiAgICAgY2FzZSAweDEwRTY3OgogICAgIGNhc2UgMHgxMTA1OToKICAgICBjYXNlIDB4MTEwNkU6CiAgICAgY2FzZSAweDExMEY4OgogICAgIGNhc2UgMHgxMTEzRToKICAgICBjYXNlIDB4MTExRDg6CisgICAgY2FzZSAweDExMUU4OgorICAgIGNhc2UgMHgxMTJGODoKKyAgICBjYXNlIDB4MTE0RDg6CisgICAgY2FzZSAweDExNjU4OgogICAgIGNhc2UgMHgxMTZDODoKKyAgICBjYXNlIDB4MTE3Mzg6CisgICAgY2FzZSAweDExOEU4OgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtNDE0OSwyOCArNTQyOSw0MyBAQAogICAgIGNhc2UgMHgxMjQyQToKICAgICBjYXNlIDB4MTI0NDQ6CiAgICAgY2FzZSAweDEyNDQ1OgorICAgIGNhc2UgMHgxMjQ2RDoKKyAgICBjYXNlIDB4MTZBNjg6CisgICAgY2FzZSAweDE2QjU4OgogICAgIGNhc2UgMHgxRDM2NzoKICAgICBjYXNlIDB4MUQ3RDY6CiAgICAgY2FzZSAweDFEN0UwOgogICAgIGNhc2UgMHgxRDdFQToKICAgICBjYXNlIDB4MUQ3RjQ6CiAgICAgY2FzZSAweDFEN0ZFOgorICAgIGNhc2UgMHgxRThDRToKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CisgICAgY2FzZSAweDEwOUZEOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wLzEyLjA7CiAgICAgY2FzZSAweDEzNzk6CiAgICAgY2FzZSAweDMyNEY6CiAgICAgY2FzZSAweDEwMTE3OgorICAgIGNhc2UgMHgxMDJGMToKICAgICBjYXNlIDB4MTBFNzA6CiAgICAgY2FzZSAweDExMDYyOgorICAgIGNhc2UgMHgxMTFGMToKKyAgICBjYXNlIDB4MTE4RjE6CiAgICAgY2FzZSAweDFEMzcwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAuMDsKICAgICBjYXNlIDB4MTAxMjA6CisgICAgY2FzZSAweDEwMkZBOgorICAgIGNhc2UgMHgxMDlEOToKICAgICBjYXNlIDB4MTBFNzk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MDAuMDsKICAgICBjYXNlIDB4MTAxMjk6CisgICAgY2FzZSAweDEwOUUyOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAwMC4wOwogICAgIGNhc2UgMHgxMDEzMjoKKyAgICBjYXNlIDB4MTA5RUI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MDAwMC4wOworICAgIGNhc2UgMHgxMDlGNDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwMDAwMC4wOwogICAgIGNhc2UgMHgwMDM5OgogICAgIGNhc2UgMHgwNjY5OgogICAgIGNhc2UgMHgwNkY5OgpAQCAtNDE4NCw2ICs1NDc5LDcgQEAKICAgICBjYXNlIDB4MEM2RjoKICAgICBjYXNlIDB4MENFRjoKICAgICBjYXNlIDB4MEQ2RjoKKyAgICBjYXNlIDB4MERFRjoKICAgICBjYXNlIDB4MEU1OToKICAgICBjYXNlIDB4MEVEOToKICAgICBjYXNlIDB4MEYyOToKQEAgLTQyMjMsMTggKzU1MTksMjcgQEAKICAgICBjYXNlIDB4QThEOToKICAgICBjYXNlIDB4QTkwOToKICAgICBjYXNlIDB4QTlEOToKKyAgICBjYXNlIDB4QTlGOToKICAgICBjYXNlIDB4QUE1OToKICAgICBjYXNlIDB4QUJGOToKICAgICBjYXNlIDB4RkYxOToKICAgICBjYXNlIDB4MTAxMEY6CisgICAgY2FzZSAweDEwMkU5OgogICAgIGNhc2UgMHgxMDRBOToKKyAgICBjYXNlIDB4MTA5Qzg6CiAgICAgY2FzZSAweDEwRTY4OgogICAgIGNhc2UgMHgxMTA1QToKICAgICBjYXNlIDB4MTEwNkY6CiAgICAgY2FzZSAweDExMEY5OgogICAgIGNhc2UgMHgxMTEzRjoKICAgICBjYXNlIDB4MTExRDk6CisgICAgY2FzZSAweDExMUU5OgorICAgIGNhc2UgMHgxMTJGOToKKyAgICBjYXNlIDB4MTE0RDk6CisgICAgY2FzZSAweDExNjU5OgogICAgIGNhc2UgMHgxMTZDOToKKyAgICBjYXNlIDB4MTE3Mzk6CisgICAgY2FzZSAweDExOEU5OgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpAQCAtNDI0NCwzMiArNTU0OSw0NyBAQAogICAgIGNhc2UgMHgxMjQ0NzoKICAgICBjYXNlIDB4MTI0NDg6CiAgICAgY2FzZSAweDEyNDQ5OgorICAgIGNhc2UgMHgxMjQ2RToKKyAgICBjYXNlIDB4MTZBNjk6CisgICAgY2FzZSAweDE2QjU5OgogICAgIGNhc2UgMHgxRDM2ODoKICAgICBjYXNlIDB4MUQ3RDc6CiAgICAgY2FzZSAweDFEN0UxOgogICAgIGNhc2UgMHgxRDdFQjoKICAgICBjYXNlIDB4MUQ3RjU6CiAgICAgY2FzZSAweDFEN0ZGOgorICAgIGNhc2UgMHgxRThDRjoKICAgICBjYXNlIDB4MUYxMEE6CiAgICAgY2FzZSAweDJGODkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wOworICAgIGNhc2UgMHgxMDlGRToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wLzIuMDsKICAgICBjYXNlIDB4MTM3QToKICAgICBjYXNlIDB4MTAxMTg6CisgICAgY2FzZSAweDEwMkYyOgogICAgIGNhc2UgMHgxMDM0MToKICAgICBjYXNlIDB4MTBFNzE6CiAgICAgY2FzZSAweDExMDYzOgorICAgIGNhc2UgMHgxMTFGMjoKKyAgICBjYXNlIDB4MTE4RjI6CiAgICAgY2FzZSAweDFEMzcxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAuMDsKICAgICBjYXNlIDB4MTAxMjE6CisgICAgY2FzZSAweDEwMkZCOgogICAgIGNhc2UgMHgxMDM0QToKKyAgICBjYXNlIDB4MTA5REE6CiAgICAgY2FzZSAweDEwRTdBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAwLjA7CiAgICAgY2FzZSAweDEwMTJBOgorICAgIGNhc2UgMHgxMDlFMzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwMDAuMDsKICAgICBjYXNlIDB4MTAxMzM6CisgICAgY2FzZSAweDEwOUVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjU6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA5MDAwMDAuMDsKICAgICB9CiAgICAgcmV0dXJuIC0xLjA7CiB9CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fYnoyLnZjcHJvaiBiL1BDL1ZTOS4wL19iejIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ViOGM3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19iejIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTgxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfYnoyIg0KLQlQcm9qZWN0R1VJRD0iezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWJfcHJpdmF0ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iYnppcDIgMS4wLjYgU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNvbXByZXNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY3JjdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxkZWNvbXByZXNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcaHVmZm1hbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXHJhbmR0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qIGIvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNWNiYTEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw3MDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9jdHlwZXMiDQotCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlcyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMzM1NDYuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2N0eXBlc190ZXN0Ig0KLQlQcm9qZWN0R1VJRD0iezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXNfdGVzdCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvaiBiL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlmYWJiMC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw3NDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9kZWNpbWFsIg0KLQlQcm9qZWN0R1VJRD0iezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQotCVJvb3ROYW1lc3BhY2U9Il9kZWNpbWFsIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYml0cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcZG9jc3RyaW5ncy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0eXBlYXJpdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdW1vZGFyaXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjY29tcGF0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjc3RkaW50LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxfZGVjaW1hbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnRleHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGlvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjZGl2NjQuYXNtIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2ogYi9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWQ3Mzc1Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9lbGVtZW50dHJlZSINCi0JUHJvamVjdEdVSUQ9InsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KLQlSb290TmFtZXNwYWNlPSJfZWxlbWVudHRyZWUiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qIGIvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzQxN2VjLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2hhc2hsaWIiDQotCVByb2plY3RHVUlEPSJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUm9vdE5hbWVzcGFjZT0iX2hhc2hsaWIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fbHptYS52Y3Byb2ogYi9QQy9WUzkuMC9fbHptYS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNjAwM2YuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2x6bWEudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfbHptYSINCi0JUHJvamVjdEdVSUQ9IntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KLQlSb290TmFtZXNwYWNlPSJsem1hIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHptYW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19tc2kudmNwcm9qIGIvUEMvVlM5LjAvX21zaS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMjMwZTEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX21zaS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9tc2kiDQotCVByb2plY3RHVUlEPSJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCi0JUm9vdE5hbWVzcGFjZT0iX21zaSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcX21zaS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiM2QxZTcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1NDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9tdWx0aXByb2Nlc3NpbmciDQotCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUm9vdE5hbWVzcGFjZT0iX211bHRpcHJvY2Vzc2luZyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYxZjZkNC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjNTdhZS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9zcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0iezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19zc2wudmNwcm9qIGIvUEMvVlM5LjAvX3NzbC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0N2RjMjcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3NzbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il9zc2wiDQotCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMzc3ZTEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGVzdGJ1ZmZlciINCi0JUHJvamVjdEdVSUQ9IntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGVzdGJ1ZmZlciINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qIGIvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUzMzAwYS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGVzdGNhcGkiDQotCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGVzdGltcG9ydG11bHRpcGxlLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGQ5MTBkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlIg0KLQlQcm9qZWN0R1VJRD0iezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0iDQotCVJvb3ROYW1lc3BhY2U9Il90ZXN0aW1wb3J0bXVsdGlwbGUiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0aW1wb3J0bXVsdGlwbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNjMzMTcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTQxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGtpbnRlciINCi0JUHJvamVjdEdVSUQ9Ins0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGtpbnRlciINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliRGVidWcpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYkRlYnVnKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGtpbnRlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0a2FwcGluaXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvaiBiL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGNjN2FkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJiZGlzdF93aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCU91dHB1dERpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9InpsaWIiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMgYi9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzY0M2NiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iZGVidWciDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJLaWxsUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbl9kLmV4ZSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAva2lsbF9weXRob24uYyBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNDczMWYuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAva2lsbF9weXRob24uYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKLSAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCi0gKiBsb2NrZWQuCi0gKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHRsaGVscDMyLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI3ByYWdtYSBjb21tZW50KGxpYiwgInBzYXBpIikKLQotI2lmZGVmIF9ERUJVRwotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbl9kLmV4ZSIpCi0jZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEyKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uX2QuZXhlIikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTcpCi0jZWxzZQotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbi5leGUiKQotI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMCkKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbi5leGUiKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNSkKLSNlbmRpZgotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIEhBTkRMRSAgIGhwLCBoc3AsIGhzbTsgLyogcHJvY2Vzcywgc25hcHNob3QgcHJvY2Vzc2VzLCBzbmFwc2hvdCBtb2R1bGVzICovCi0gICAgRFdPUkQgICAgZGFjLCBvdXJfcGlkOwotICAgIHNpemVfdCAgIGxlbjsKLSAgICB3Y2hhcl90ICBwYXRoW01BWF9QQVRIKzFdOwotCi0gICAgTU9EVUxFRU5UUlkzMlcgIG1lOwotICAgIFBST0NFU1NFTlRSWTMyVyBwZTsKLQotICAgIG1lLmR3U2l6ZSA9IHNpemVvZihNT0RVTEVFTlRSWTMyVyk7Ci0gICAgcGUuZHdTaXplID0gc2l6ZW9mKFBST0NFU1NFTlRSWTMyVyk7Ci0KLSAgICBtZW1zZXQocGF0aCwgMCwgTUFYX1BBVEgrMSk7Ci0KLSAgICBvdXJfcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOwotCi0gICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBvdXJfcGlkKTsKLSAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKLSAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1sxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogRW51bWVyYXRlIG92ZXIgdGhlIG1vZHVsZXMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gb3JkZXIgdG8gZmluZAotICAgICAqIGtpbGxfcHJvY2Vzc1tfZF0uZXhlLCB0aGVuIHRha2UgYSBub3RlIG9mIHRoZSBkaXJlY3RvcnkgaXQgbGl2ZXMgaW4uCi0gICAgICovCi0gICAgZG8gewotICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBLSUxMX1BZVEhPTl9FWEUsIEtJTExfUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgbGVuID0gd2Nzbmxlbl9zKG1lLnN6RXhlUGF0aCwgTUFYX1BBVEgpIC0gS0lMTF9QWVRIT05fRVhFX0xFTjsKLSAgICAgICAgd2NzbmNweV9zKHBhdGgsIE1BWF9QQVRIKzEsIG1lLnN6RXhlUGF0aCwgbGVuKTsgCi0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc20pOwotCi0gICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICBwcmludGYoImZhaWxlZCB0byBkaXNjZXJuIGRpcmVjdG9yeSBvZiBydW5uaW5nIHByb2Nlc3NcbiIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFRha2UgYSBzbmFwc2hvdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzLiAgRW51bWVyYXRlIG92ZXIgdGhlIHNuYXBzaG90LAotICAgICAqIGxvb2tpbmcgZm9yIHB5dGhvbiBwcm9jZXNzZXMuICBXaGVuIHdlIGZpbmQgb25lLCB2ZXJpZnkgaXQgbGl2ZXMKLSAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2UgbGl2ZSBpbi4gIElmIGl0IGRvZXMsIGtpbGwgaXQuICBJZiB3ZSdyZQotICAgICAqIHVuYWJsZSB0byBraWxsIGl0LCB0cmVhdCB0aGlzIGFzIGEgZmF0YWwgZXJyb3IgYW5kIHJldHVybiAxLgotICAgICAqIAotICAgICAqIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgaXMgdGhhdCB3ZSdyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSAKLSAgICAgKiBidWlsZCBwcm9jZXNzIG9uIHRoZSBiYXNpcyB0aGF0IHdlJ2xsIHRha2UgY2FyZSBvZiBraWxsaW5nIGFueQotICAgICAqIHJ1bm5pbmcgaW5zdGFuY2VzLCBzdWNoIHRoYXQgdGhlIGJ1aWxkIHdvbid0IGVuY291bnRlciBwZXJtaXNzaW9uCi0gICAgICogZGVuaWVkIGVycm9ycyBkdXJpbmcgbGlua2luZy4gSWYgd2UgY2FuJ3Qga2lsbCBvbmUgb2YgdGhlIHByb2Nlc3NlcywKLSAgICAgKiB3ZSBjYW4ndCBwcm92aWRlIHRoaXMgYXNzdXJhbmNlLCBhbmQgdGhlIGJ1aWxkIHNob3VsZG4ndCBzdGFydC4KLSAgICAgKi8KLQotICAgIGhzcCA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIDApOwotICAgIGlmIChoc3AgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpZiAoIVByb2Nlc3MzMkZpcnN0Vyhoc3AsICZwZSkpIHsKLSAgICAgICAgcHJpbnRmKCJQcm9jZXNzMzJGaXJzdFcgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBkYWMgPSBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OIHwgUFJPQ0VTU19WTV9SRUFEIHwgUFJPQ0VTU19URVJNSU5BVEU7Ci0gICAgZG8gewotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCi0gICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjM0W19kXS5kbGwpLAotICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KLSAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAotICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCi0gICAgICAgICAqLwotCi0gICAgICAgIGlmIChfd2NzbmljbXAocGUuc3pFeGVGaWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgcHl0aG9uIHByb2Nlc3MuICovCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvKiBJdCdzIGEgcHl0aG9uIHByb2Nlc3MsIHNvIGZpZ3VyZSBvdXQgd2hpY2ggZGlyZWN0b3J5IGl0J3MgaW4uLi4gKi8KLSAgICAgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBwZS50aDMyUHJvY2Vzc0lEKTsKLSAgICAgICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIC8qIAotICAgICAgICAgICAgICogSWYgb3VyIG1vZHVsZSBzbmFwc2hvdCBmYWlscyAod2hpY2ggd2lsbCBoYXBwZW4gaWYgd2UgZG9uJ3Qgb3duCi0gICAgICAgICAgICAgKiB0aGUgcHJvY2VzcyksIGp1c3QgaWdub3JlIGl0IGFuZCBjb250aW51ZS4gIChJdCBzZWVtcyBkaWZmZXJlbnQKLSAgICAgICAgICAgICAqIHZlcnNpb25zIG9mIFdpbmRvd3MgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgZm9yIEdldExhc3RFcnJvcigpCi0gICAgICAgICAgICAgKiBpbiB0aGlzIHNpdHVhdGlvbjsgaXQncyBlYXNpZXIgdG8ganVzdCBpZ25vcmUgaXQgYW5kIG1vdmUgb24gdnMuCi0gICAgICAgICAgICAgKiBzdG9wcGluZyB0aGUgYnVpbGQgZm9yIHdoYXQgY291bGQgYmUgYSBmYWxzZSBwb3NpdGl2ZS4pCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgewotICAgICAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1syXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgICAgIC8qIFdyb25nIG1vZHVsZSwgd2UncmUgbG9va2luZyBmb3IgcHl0aG9uW19kXS5leGUuLi4gKi8KLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChwYXRoLCBtZS5zekV4ZVBhdGgsIGxlbikpCi0gICAgICAgICAgICAgICAgLyogUHJvY2VzcyBkb2Vzbid0IGxpdmUgaW4gb3VyIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLyogUHl0aG9uIHByb2Nlc3MgcmVzaWRpbmcgaW4gdGhlIHJpZ2h0IGRpcmVjdG9yeSwga2lsbCBpdCEgICovCi0gICAgICAgICAgICBocCA9IE9wZW5Qcm9jZXNzKGRhYywgRkFMU0UsIHBlLnRoMzJQcm9jZXNzSUQpOwotICAgICAgICAgICAgaWYgKCFocCkgewotICAgICAgICAgICAgICAgIHByaW50ZigiT3BlblByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFUZXJtaW5hdGVQcm9jZXNzKGhwLCAxKSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiVGVybWluYXRlUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOwotCi0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0KLSAgICB9IHdoaWxlIChQcm9jZXNzMzJOZXh0Vyhoc3AsICZwZSkpOwotCi0gICAgQ2xvc2VIYW5kbGUoaHNwKTsKLQotICAgIHJldHVybiAwOwotfQotCi0vKiB2aTogc2V0IHRzPTggc3c9NCBzdHM9NCBleHBhbmR0YWIgKi8KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0MTA3YS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9raWxsX3B5dGhvbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9ImtpbGxfcHl0aG9uIg0KLQlQcm9qZWN0R1VJRD0iezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQotCVJvb3ROYW1lc3BhY2U9ImtpbGxfcHl0aG9uIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii5ca2lsbF9weXRob24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI0YTY0YS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGlvLmg+Ci0KLSNkZWZpbmUgQ01EX1NJWkUgNTAwCi0KLS8qIFRoaXMgZmlsZSBjcmVhdGVzIHRoZSBnZXRidWlsZGluZm8ubyBvYmplY3QsIGJ5IGZpcnN0Ci0gICBpbnZva2luZyBzdWJ3Y3Jldi5leGUgKGlmIGZvdW5kKSwgYW5kIHRoZW4gaW52b2tpbmcgY2wuZXhlLgotICAgQXMgYSBzaWRlIGVmZmVjdCwgaXQgbWlnaHQgZ2VuZXJhdGUgUENCdWlsZFxnZXRidWlsZGluZm8yLmMKLSAgIGFsc28uIElmIHRoaXMgaXNuJ3QgYSBzdWJ2ZXJzaW9uIGNoZWNrb3V0LCBvciBzdWJ3Y3JldiBpc24ndAotICAgZm91bmQsIGl0IGNvbXBpbGVzIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgaW5zdGVhZC4KLQotICAgQ3VycmVudGx5LCBzdWJ3Y3Jldi5leGUgaXMgZm91bmQgZnJvbSB0aGUgcmVnaXN0cnkgZW50cmllcwotICAgb2YgVG9ydG9pc2VTVk4uCi0KLSAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBwbGFjZSBnZXRidWlsZGluZm8ubyBpbnRvIHRoZSBwcm9wZXIKLSAgIGJpbmFyeSBkaXJlY3RvcnkuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhcyB0aGlzIHRvb2wgaXMKLSAgIGludm9rZWQgYXMgYSBwcmUtbGluayBzdGVwIGZvciBweXRob25jb3JlLCBzbyB0aGF0IG92ZXJ3cml0ZXMKLSAgIGFueSBwcmV2aW91cyBnZXRidWlsZGluZm8uby4KLQotICAgSG93ZXZlciwgaWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCi0gICBhcyBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2hlcmUgYW55IGdldGJ1aWxkaW5mbzIuYyBhbmQKLSAgIGdldGJ1aWxkaW5mby5vIGZpbGVzIGFyZSBwdXQuICBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZQotICAgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGJ1aWx0IGluIHBhcmFsbGVsLCB0byBhdm9pZCB0aGVtCi0gICB0cmFtcGxpbmcgZWFjaCBvdGhlcidzIGZpbGVzLgotCi0qLwotCi1pbnQgbWFrZV9idWlsZGluZm8yKGNvbnN0IGNoYXIgKnRtcHBhdGgpCi17Ci0gICAgc3RydWN0IF9zdGF0IHN0OwotICAgIEhLRVkgaFRvcnRvaXNlOwotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRSsxXTsKLSAgICBEV09SRCB0eXBlLCBzaXplOwotICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KLSAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCi0gICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLwotICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOwotICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKLSAgICAgICAgdHlwZSAhPSBSRUdfU1opCi0gICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImJpblxcc3Vid2NyZXYuZXhlIik7Ci0gICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCi0gICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIC4uXFwuLiAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIFwiIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOyAvKiBxdW90ZWQgdG1wcGF0aCAqLwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLQotICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOwotICAgIGlmIChzeXN0ZW0oY29tbWFuZCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotY29uc3QgY2hhciBERUxJTVNbXSA9IHsgIiBcbiIgfTsKLQotaW50IGdldF9tZXJjdXJpYWxfaW5mbyhjaGFyICogaGdicmFuY2gsIGNoYXIgKiBoZ3RhZywgY2hhciAqIGhncmV2LCBpbnQgc2l6ZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICBjaGFyIGZpbGVuYW1lW0NNRF9TSVpFXTsKLSAgICBjaGFyIGNtZGxpbmVbQ01EX1NJWkVdOwotCi0gICAgc3RyY3B5X3MoZmlsZW5hbWUsIENNRF9TSVpFLCAidG1wWFhYWFhYIik7Ci0gICAgaWYgKF9ta3RlbXBfcyhmaWxlbmFtZSwgQ01EX1NJWkUpID09IDApIHsKLSAgICAgICAgaW50IHJjOwotCi0gICAgICAgIHN0cmNweV9zKGNtZGxpbmUsIENNRF9TSVpFLCAiaGcgaWQgLWJpdCA+ICIpOwotICAgICAgICBzdHJjYXRfcyhjbWRsaW5lLCBDTURfU0laRSwgZmlsZW5hbWUpOwotICAgICAgICByYyA9IHN5c3RlbShjbWRsaW5lKTsKLSAgICAgICAgaWYgKHJjID09IDApIHsKLSAgICAgICAgICAgIEZJTEUgKiBmcDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGZvcGVuX3MoJmZwLCBmaWxlbmFtZSwgInIiKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqIGNwID0gZmdldHMoY21kbGluZSwgQ01EX1NJWkUsIGZwKTsKLQotICAgICAgICAgICAgICAgIGlmIChjcCkgewotICAgICAgICAgICAgICAgICAgICBjaGFyICogY29udGV4dCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKiB0cCA9IHN0cnRva19zKGNwLCBERUxJTVMsICZjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3Jldiwgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhnYnJhbmNoLCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGd0YWcsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBfdW5saW5rKGZpbGVuYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQotewotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRV0gPSAiY2wuZXhlIC1jIC1EX1dJTjMyIC1EVVNFX0RMX0VYUE9SVCAtRF9XSU5ET1dTIC1EV0lOMzIgLURfV0lORExMICI7Ci0gICAgY2hhciB0bXBwYXRoW0NNRF9TSVpFXSA9ICIiOwotICAgIGludCBkb191bmxpbmssIHJlc3VsdDsKLSAgICBjaGFyICp0bXBkaXIgPSBOVUxMOwotICAgIGlmIChhcmdjIDw9IDIgfHwgYXJnYyA+IDMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWtlX2J1aWxkaW5mbyAkKENvbmZpZ3VyYXRpb25OYW1lKSBbdG1wZGlyXVxuIik7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgfQotICAgIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2UiKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIkRlYnVnIikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1EX0RFQlVHIC1NRGQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUl0YW5pdW0iKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19JVEFOSVVNICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VBTUQ2NCIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19PUFRFUk9OICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uICVzXG4iLCBhcmd2WzFdKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKGFyZ2MgPiAyKSB7Ci0gICAgICAgIHRtcGRpciA9IGFyZ3ZbMl07Ci0gICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCB0bXBkaXIpOwotICAgICAgICAvKiBIYWNrIGZpeCBmb3IgYmFkIGNvbW1hbmQgbGluZTogIElmIHRoZSBjb21tYW5kIGlzIGlzc3VlZCBsaWtlIHRoaXM6Ci0gICAgICAgICAqICQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIgotICAgICAgICAgKiB3ZSB3aWxsIGdldCBhIHRyYWlsaW5nIHF1b3RlIGJlY2F1c2UgSW50RGlyIGVuZHMgd2l0aCBhIGJhY2tzbGFzaCB0aGF0IHRoZW4KLSAgICAgICAgICogZXNjYXBlcyB0aGUgZmluYWwgIi4gIFRvIHNpbXBsaWZ5IHRoZSBsaWZlIGZvciBkZXZlbG9wZXJzLCBjYXRjaCB0aGF0IHByb2JsZW0KLSAgICAgICAgICogaGVyZSBieSBjdXR0aW5nIGl0IG9mZi4KLSAgICAgICAgICogVGhlIHByb3BlciBjb21tYW5kIGxpbmUsIGJ0dyBpczoKLSAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcilcIgotICAgICAgICAgKiBIb29yYXkgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nIG9uIHdpbmRvd3MuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoc3RybGVuKHRtcHBhdGgpID4gMCAmJiB0bXBwYXRoW3N0cmxlbih0bXBwYXRoKS0xXSA9PSAnIicpCi0gICAgICAgICAgICB0bXBwYXRoW3N0cmxlbih0bXBwYXRoKS0xXSA9ICdcMCc7Ci0gICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCAiXFwiKTsKLSAgICB9Ci0KLSAgICBpZiAoKGRvX3VubGluayA9IG1ha2VfYnVpbGRpbmZvMih0bXBwYXRoKSkpIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIgLURTVUJXQ1JFViAiKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgaGd0YWdbQ01EX1NJWkVdOwotICAgICAgICBjaGFyIGhnYnJhbmNoW0NNRF9TSVpFXTsKLSAgICAgICAgY2hhciBoZ3JldltDTURfU0laRV07Ci0KLSAgICAgICAgaWYgKGdldF9tZXJjdXJpYWxfaW5mbyhoZ2JyYW5jaCwgaGd0YWcsIGhncmV2LCBDTURfU0laRSkpIHsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURIR0JSQU5DSD1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdicmFuY2gpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7Ci0KLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdUQUc9XFxcIiIpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhndGFnKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOwotCi0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVkVSU0lPTj1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdyZXYpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiICIpOwotICAgICAgICB9Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyIpOwotICAgIH0KLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtRm9cIiIpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mby5vXCIgLUkuLlxcLi5cXEluY2x1ZGUgLUkuLlxcLi5cXFBDIik7Ci0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmQpOwotICAgIGlmIChkb191bmxpbmspIHsKLSAgICAgICAgY29tbWFuZFswXSA9ICdcMCc7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIik7Ci0gICAgICAgIF91bmxpbmsoY29tbWFuZCk7Ci0gICAgfQotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjQwNjVkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTAiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ibWFrZV9idWlsZGluZm8iDQotCVByb2plY3RHVUlEPSJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi0JUm9vdE5hbWVzcGFjZT0ibWFrZV9idWlsZGluZm8iDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuXG1ha2VfYnVpbGRpbmZvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2ogYi9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGExZmQyOC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JUHJvamVjdEdVSUQ9IntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGNidWlsZC5zbG4gYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3ZjY5Yy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9wY2J1aWxkLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDY5MCArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMA0KLSMgVmlzdWFsIFN0dWRpbyAyMDA4DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQotCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KLQkJLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCi0JCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2RlY2ltYWwiLCAiX2RlY2ltYWwudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmNwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjcHJvaiIsICJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0gPSB7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zc2wiLCAiX3NzbC52Y3Byb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9ID0gezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0aW1wb3J0bXVsdGlwbGUiLCAiX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3Byb2oiLCAiezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYnoyIiwgIl9iejIudmNwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2x6bWEiLCAiX2x6bWEudmNwcm9qIiwgIntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3Byb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3Byb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3Byb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmNwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmNwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3Byb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3Byb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RidWZmZXIiLCAiX3Rlc3RidWZmZXIudmNwcm9qIiwgIntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLUdsb2JhbA0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KLQkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KLQkJRGVidWd8eDY0ID0gRGVidWd8eDY0DQotCQlQR0luc3RydW1lbnR8V2luMzIgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCVBHSW5zdHJ1bWVudHx4NjQgPSBQR0luc3RydW1lbnR8eDY0DQotCQlQR1VwZGF0ZXxXaW4zMiA9IFBHVXBkYXRlfFdpbjMyDQotCQlQR1VwZGF0ZXx4NjQgPSBQR1VwZGF0ZXx4NjQNCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQotCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KLQlFbmRHbG9iYWxTZWN0aW9uDQotRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMgYi9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljMTE3Yi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJwZ2luc3RydW1lbnQiDQotCU91dHB1dERpcmVjdG9yeT0iJChPdXREaXJQR0kpIg0KLQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtcGdpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMiINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCUZhdm9yU2l6ZU9yU3BlZWQ9IjIiDQotCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCi0JCUVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM9ImZhbHNlIg0KLQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KLQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQotCQlFbmFibGVDT01EQVRGb2xkaW5nPSIxIg0KLQkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iMiINCi0JCVByb2ZpbGVHdWlkZWREYXRhYmFzZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCQoVGFyZ2V0TmFtZSkucGdkIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJPdXREaXJQR0kiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcyBiL1BDL1ZTOS4wL3BndXBkYXRlLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2Y2ZjMmQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJwZ3VwZGF0ZSINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ29cIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChTb2x1dGlvbkRpcilccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCUFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz0iIg0KLQkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iNCINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlkLnZzcHJvcHMgYi9QQy9WUzkuMC9weWQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRjMjFlMS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weWQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWQiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIg0KLQkJUnVudGltZUxpYnJhcnk9IjIiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkucHlkIg0KLQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLnBkYiINCi0JCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKVwkKFRhcmdldE5hbWUpLmxpYiINCi0JCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJQ29tbWFuZExpbmU9IiINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlkX2QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZF9kLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxM2EzMGIuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcHlkX2QudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWRfZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIg0KLQkJUnVudGltZUxpYnJhcnk9IjMiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5weWQiDQotCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5wZGIiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcilcJChUYXJnZXROYW1lKS5saWIiDQotCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJRW1iZWRNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCUNvbW1hbmRMaW5lPSIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKXB5dGhvbl9kLmV4ZSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlleHBhdC52Y3Byb2ogYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThkMmNkNy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHlleHBhdCINCi0JUHJvamVjdEdVSUQ9IntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlSb290TmFtZXNwYWNlPSJweWV4cGF0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweWV4cGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwOTg3NS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweXByb2plY3QiDQotCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjIiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0idHJ1ZSINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7IC4uXC4uXFBDIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU4zMiINCi0JCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQlFeGNlcHRpb25IYW5kbGluZz0iMCINCi0JCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJQ29tcGlsZUFzPSIwIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJChPdXREaXIpIg0KLQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KLQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQlTdWJTeXN0ZW09IjIiDQotCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCVRhcmdldE1hY2hpbmU9IjEiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cSW5jbHVkZSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHlEbGxOYW1lIg0KLQkJVmFsdWU9InB5dGhvbjM0Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeXRob25FeGUiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcilccHl0aG9uLmV4ZSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iZXh0ZXJuYWxzRGlyIg0KLQkJVmFsdWU9Ii4uXC4uXC4uIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJzcWxpdGUzRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy44LjMuMSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iYnoyRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0ibHptYURpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilceHotNS4wLjUiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9Im9wZW5zc2xEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjFnIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0RpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcdGNsdGsiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjREaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHRjbHRrNjQiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrTGliIg0KLQkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0a0RpcilcbGliXHRrODUubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0xpYkRlYnVnIg0KLQkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGtEaXIpXGxpYlx0azg1Zy5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjRMaWIiDQotCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODUubGliICQodGNsdGs2NERpcilcbGliXHRrODUubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0azY0TGliRGVidWciDQotCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODVnLmxpYiAkKHRjbHRrNjREaXIpXGxpYlx0azg1Zy5saWIiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDdkZTIxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9InB5dGhvbiINCi0JUHJvamVjdEdVSUQ9IntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIxMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbi5pY28iDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHl0aG9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9uM2RsbC52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ3MzMzYi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9uM2RsbCINCi0JUHJvamVjdEdVSUQ9Ins4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KLQlSb290TmFtZXNwYWNlPSJweXRob24zZGxsIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KLQkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KLQkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uMy5kZWYiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zZGxsLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iDQotCQkJPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjYwNDcwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTg3NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9uY29yZSINCi0JUHJvamVjdEdVSUQ9IntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlSb290TmFtZXNwYWNlPSJweXRob25jb3JlIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBEZWJ1ZyAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKV9kLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBEZWJ1ZyAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKV9kLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJnF1b3Q7JChJbnREaXIpXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJnF1b3Q7JChJbnREaXIpZ2V0YnVpbGRpbmZvLm8mcXVvdDsiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJJbmNsdWRlIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYWJzdHJhY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYWNjdS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhc2RsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxiaXRzZXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNldmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZWNzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBpbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkYXRldGltZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGV2YWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxldXRpbHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZnVuY29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxnZW5vYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ3JhbWluaXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ3JhbW1hci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbXBvcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaW50cmNoZWNrLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1hcnNoYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxuYW1lc3BhY2VvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbm9kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqaW1wbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvcGNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3NkZWZzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhcnNldG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGdlbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweV9jdXJzZXMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlhcmVuYS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWNhcHN1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHljdHlwZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWRlYnVnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXhwYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlmcGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlnZXRvcHQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWN0b29sYm94LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWF0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRpbWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWNyby5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1lbS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXBvcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdGF0ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cmNtcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cnRvZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkdG9hLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRocmVhZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzZXRvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeW10YWJsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdGltZWZ1bmNzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRva2VuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRyYWNlYmFjay5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1Y25oYXNoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVuaWNvZGVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iTW9kdWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Nzdi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfanNvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sc3Byb2YuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3BpY2tsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfd2Vha3JlZi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfd2luYXBpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdWRpb29wLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJpbmFzY2lpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xlcnJub21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xmYXVsdGhhbmRsZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1haW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfb3BlcmF0b3IuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzcmUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3JlX2NvbnN0YW50cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzcmVfbGliLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemlwaW1wb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9Il9pbyINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9InpsaWIiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpsaWIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iY2prY29kZWNzIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcZW11X2ppc3gwMjEzXzIwMDAuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc190dy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iT2JqZWN0cyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGFic3RyYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGFjY3UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYm9vbG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjYXBzdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNlbGxvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbGlzdG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG5hbWVzcGFjZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJccmVwbGFjZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzZXRvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlBhcnNlciINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGJpdHNldC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGZpcnN0c2V0cy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyMS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbm9kZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJQQyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5yZWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGNvbmZpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZGxfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGVycm1hcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1zdmNydG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlB5dGhvbiINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cX3dhcm5pbmdzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXNkbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY2V2YWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZXJyb3JzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZmlsZXV0aWxzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmcm96ZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmdXR1cmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHZlcnNpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtYXJzaGFsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbW9kc3VwcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c25wcmludGYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5YXJlbmEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlmcGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweW1hdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRpbWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJjbXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cnRvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR0b2EuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxQeXRob24tYXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aG9ucnVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5bXRhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkX250LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdHJhY2ViYWNrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fbnQucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9udy52Y3Byb2ogYi9QQy9WUzkuMC9weXRob253LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y1YzA0Yi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weXRob253LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYxOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9udyINCi0JUHJvamVjdEdVSUQ9IntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbndfZC5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xXaW5NYWluLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzIGIvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRlZjkwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3JlbGVhc2UudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJyZWxlYXNlIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iS2lsbFB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKE91dERpcilca2lsbF9weXRob24uZXhlIg0KLQkvPgkNCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc2VsZWN0LnZjcHJvaiBiL1BDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzN2ZkOTcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ic2VsZWN0Ig0KLQlQcm9qZWN0R1VJRD0iezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQotCVJvb3ROYW1lc3BhY2U9InNlbGVjdCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY4YzMyOC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ic3FsaXRlMyINCi0JUHJvamVjdEdVSUQ9IntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlSb290TmFtZXNwYWNlPSJzcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChzcWxpdGUzRGlyKSZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcyBiL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwMmRmNS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zcWxpdGUzLnZzcHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0ic3FsaXRlMyINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpIg0KLQkJV2FybmluZ0xldmVsPSIxIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9zc2wudmNwcm9qIGIvUEMvVlM5LjAvc3NsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMwZTg3Ny4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zc2wudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJzc2wiDQotCVByb2plY3RHVUlEPSJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCi0JUm9vdE5hbWVzcGFjZT0ic3NsIg0KLQlLZXl3b3JkPSJNYWtlRmlsZVByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvaiBiL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY2ZmY3Mi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9InVuaWNvZGVkYXRhIg0KLQlQcm9qZWN0R1VJRD0ie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQotCVJvb3ROYW1lc3BhY2U9InVuaWNvZGVkYXRhIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2ogYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZGJmMjkuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvd2luc291bmQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJ3aW5zb3VuZCINCi0JUHJvamVjdEdVSUQ9InsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5zb3VuZCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5zb3VuZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3g2NC52c3Byb3BzIGIvUEMvVlM5LjAveDY0LnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNmY0NzAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAveDY0LnZzcHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iYW1kNjQiDQotCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcilcYW1kNjRcIg0KLQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uTmFtZSlcJChQcm9qZWN0TmFtZSlcIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9HUy0iDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjY0O19NX1g2NCINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeXRob25FeGUiDQotCQlWYWx1ZT0iJChIT1NUX1BZVEhPTikiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2ogYi9QQy9WUzkuMC94eGxpbWl0ZWQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2FhYWQ2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Inh4bGltaXRlZCINCi0JUHJvamVjdEdVSUQ9IntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KLQlSb290TmFtZXNwYWNlPSJ4eGxpbWl0ZWQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUc7X1dJTjMyO19XSU5ETEw7UHlfTElNSVRFRF9BUEk7JChOT0lOSEVSSVQpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0xJTUlURURfQVBJIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0xJTUlURURfQVBJIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2FyY2hpdmUuaCBiL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oCmluZGV4IDMxYTc4MDUuLjUwZmYxNWMgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oCkBAIC0xLDEwICsxLDkgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAogI3ByYWdtYSBwYWNrKDEpCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2JkaXN0X3dpbmluc3QudmN4cHJvaiBiL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYjQ3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9iZGlzdF93aW5pbnN0L2JkaXN0X3dpbmluc3QudmN4cHJvagpAQCAtMCwwICsxLDEwMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPndpbmluc3Q8L1Jvb3ROYW1lc3BhY2U+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXI+JChQeVNvdXJjZVBhdGgpbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8VGFyZ2V0TmFtZT53aW5pbnN0LSQoVmlzdWFsU3R1ZGlvVmVyc2lvbik8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+JChUYXJnZXROYW1lKS1hbWQ2NDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0RXh0Pi5leGU8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKU1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpUENcYmRpc3Rfd2luaW5zdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZXh0cmFjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iaW5zdGFsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImFyY2hpdmUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSJpbnN0YWxsLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSJQeXRob25Qb3dlcmVkLmJtcCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycyBiL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKcmVuYW1lIHRvIFBDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvYnVpbGQuYmF0IGIvUEMvYmRpc3Rfd2luaW5zdC9idWlsZC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmNTY1YwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvYnVpbGQuYmF0CkBAIC0wLDAgKzEsMjIgQEAKK0BlY2hvIG9mZg0KK3NldGxvY2FsDQorDQorc2V0IEQ9JX5kcDANCitzZXQgUENCVUlMRD0lfmRwMC4uXC4uXFBDQnVpbGRcDQorDQorDQorZWNobyBCdWlsZGluZyBMaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC14eC4wLmV4ZQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisNCittc2J1aWxkICIlRCViZGlzdF93aW5pbnN0LnZjeHByb2oiICIvcDpTb2x1dGlvbkRpcj0lUENCVUlMRCVcIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09V2luMzINCitpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorDQorDQorZWNobyBCdWlsZGluZyBMaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC14eC4wLWFtZDY0LmV4ZQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Nl9hbWQ2NA0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisNCittc2J1aWxkICIlRCViZGlzdF93aW5pbnN0LnZjeHByb2oiICIvcDpTb2x1dGlvbkRpcj0lUENCVUlMRCVcIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDY0DQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9leHRyYWN0LmMgYi9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYwppbmRleCBhZWM4ZWRhLi4wMjQ5ZDlmIDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYwpAQCAtMSwxMCArMSw5IEBACiAvKgotICBJTVBPUlRBTlQgTk9URTogSUYgVEhJUyBGSUxFIElTIENIQU5HRUQsIFdJTklOU1QtNi5FWEUgTVVTVCBCRSBSRUNPTVBJTEVECi0gIFdJVEggVEhFIE1TVkM2IFdJTklOU1QuRFNXIFdPUktTUEFDRSBGSUxFIE1BTlVBTExZLCBBTkQgV0lOSU5TVC03LjEuRVhFIE1VU1QKLSAgQkUgUkVDT01QSUxFRCBXSVRIIFRIRSBNU1ZDIDIwMDMuTkVUIFdJTklOU1QtNy4xLlZDUFJPSiBGSUxFIE1BTlVBTExZLgorICBJTVBPUlRBTlQgTk9URTogSUYgVEhJUyBGSUxFIElTIENIQU5HRUQsIFBDQlVJTERcQkRJU1RfV0lOSU5TVC5WQ1hQUk9KIE1VU1QKKyAgQkUgUkVCVUlMVCBBUyBXRUxMLgogCi0gIElGIENIQU5HRVMgVE8gVEhJUyBGSUxFIEFSRSBDSEVDS0VEIElOVE8gUFlUSE9OIENWUywgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMKLSAgTVVTVCBCRSBDSEVDS0VEIElOIEFTIFdFTEwhCisgIElGIENIQU5HRVMgVE8gVEhJUyBGSUxFIEFSRSBDSEVDS0VEIElOLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUyBNVVNUIEJFCisgIENIRUNLRUQgSU4gQVMgV0VMTCEKICovCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCmluZGV4IGY0Y2YzNDguLmYzOWIzODEgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCkBAIC0xLDEwICsxLDkgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAogLyoKQEAgLTEyMTYsNyArMTIxNSw3IEBACiAKICNpbmNsdWRlIDxwcnNodC5oPgogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBJbnRyb0RsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0xNTY1LDcgKzE1NjQsNyBAQAogICAgIHJldHVybiBvbGRfc2NoZW1lOwogfQogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBTZWxlY3RQeXRob25EbGdQcm9jKEhXTkQgaHduZCwgVUlOVCBtc2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgTFBOTUhEUiBscG5tOwpAQCAtMTg2Nyw3ICsxODY2LDcgQEAKICAgICAgICAgZmNsb3NlKGxvZ2ZpbGUpOwogfQogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBJbnN0YWxsRmlsZXNEbGdQcm9jKEhXTkQgaHduZCwgVUlOVCBtc2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgTFBOTUhEUiBscG5tOwpAQCAtMjAyMiw3ICsyMDIxLDcgQEAKIH0KIAogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBGaW5pc2hlZERsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0yMTk4LDIzICsyMTk3LDYgQEAKICAgICByZXR1cm4gVFJVRTsKIH0KIAotLy8gUmV0dXJucyBUUlVFIGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBVQUMuCi1CT09MIFBsYXRmb3JtU3VwcG9ydHNVQUMoKQotewotICAgIC8vIE5vdGUgdGhhdCB3aW4yayBkb2VzIHNlZW0gdG8gc3VwcG9ydCBTaGVsbEV4ZWN1dGUgd2l0aCAncnVuYXMnLAotICAgIC8vIGJ1dCBkb2VzICpub3QqIHN1cHBvcnQgSXNVc2VyQW5BZG1pbiAtIHNvIHdlIGp1c3QgcHJldGVuZCB0aGluZ3MKLSAgICAvLyBvbmx5IHdvcmsgb24gWFAgYW5kIGxhdGVyLgotICAgIEJPT0wgYklzV2luZG93c1hQb3JMYXRlcjsKLSAgICBPU1ZFUlNJT05JTkZPIHdpbnZlcmluZm87Ci0gICAgd2ludmVyaW5mby5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcmluZm8pOwotICAgIGlmICghR2V0VmVyc2lvbkV4KCZ3aW52ZXJpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOyAvLyBzb21ldGhpbmcgYmFkIGhhcyBnb25lIHdyb25nCi0gICAgYklzV2luZG93c1hQb3JMYXRlciA9Ci0gICAgICAgKCAod2ludmVyaW5mby5kd01ham9yVmVyc2lvbiA+IDUpIHx8Ci0gICAgICAgKCAod2ludmVyaW5mby5kd01ham9yVmVyc2lvbiA9PSA1KSAmJiAod2ludmVyaW5mby5kd01pbm9yVmVyc2lvbiA+PSAxKSApKTsKLSAgICByZXR1cm4gYklzV2luZG93c1hQb3JMYXRlcjsKLX0KLQogLy8gU3Bhd24gb3Vyc2VsZiBhcyBhbiBlbGV2YXRlZCBhcHBsaWNhdGlvbi4gIE9uIGZhaWx1cmUsIGEgbWVzc2FnZSBpcwogLy8gZGlzcGxheWVkIHRvIHRoZSB1c2VyIC0gYnV0IHRoaXMgYXBwIHdpbGwgYWx3YXlzIHRlcm1pbmF0ZSwgZXZlbgogLy8gb24gZXJyb3IuCkBAIC0yMjcwLDcgKzIyNTIsNyBAQAogCiAgICAgLy8gU2VlIGlmIHdlIG5lZWQgdG8gZG8gdGhlIFZpc3RhIFVBQyBtYWdpYy4KICAgICBpZiAoc3RyY21wKHVzZXJfYWNjZXNzX2NvbnRyb2wsICJmb3JjZSIpPT0wKSB7Ci0gICAgICAgIGlmIChQbGF0Zm9ybVN1cHBvcnRzVUFDKCkgJiYgIU15SXNVc2VyQW5BZG1pbigpKSB7CisgICAgICAgIGlmICghTXlJc1VzZXJBbkFkbWluKCkpIHsKICAgICAgICAgICAgIFNwYXduVUFDKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjI3OCw3ICsyMjYwLDcgQEAKICAgICB9IGVsc2UgaWYgKHN0cmNtcCh1c2VyX2FjY2Vzc19jb250cm9sLCAiYXV0byIpPT0wKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIGl0IGxvb2tzIGxpa2Ugd2UgbmVlZCBVQUMgY29udHJvbCwgYmFzZWQKICAgICAgICAgLy8gb24gaG93IFB5dGhvbiBpdHNlbGYgd2FzIGluc3RhbGxlZC4KLSAgICAgICAgaWYgKFBsYXRmb3JtU3VwcG9ydHNVQUMoKSAmJiAhTXlJc1VzZXJBbkFkbWluKCkgJiYgTmVlZEF1dG9VQUMoKSkgeworICAgICAgICBpZiAoIU15SXNVc2VyQW5BZG1pbigpICYmIE5lZWRBdXRvVUFDKCkpIHsKICAgICAgICAgICAgIFNwYXduVUFDKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLnJjIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLnJjCmluZGV4IGQwMThiNDguLmRmYTJmZmMgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5yYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwucmMKQEAgLTEsOTcgKzEsMjAgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAotLy9NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgotLy8KKyNpbmNsdWRlIDx3aW5yZXMuaD4KICNpbmNsdWRlICJyZXNvdXJjZS5oIgogCi0jZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuCi0vLwotI2luY2x1ZGUgImFmeHJlcy5oIgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIE5ldXRyYWwgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX05FVSkKLSNpZmRlZiBfV0lOMzIKIExBTkdVQUdFIExBTkdfTkVVVFJBTCwgU1VCTEFOR19ORVVUUkFMCiAjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gQml0bWFwCi0vLwogCiBJREJfQklUTUFQICAgICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAiUHl0aG9uUG93ZXJlZC5ibXAiCi0jZW5kaWYgICAgLy8gTmV1dHJhbCByZXNvdXJjZXMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEdlcm1hbiAoR2VybWFueSkgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0RFVSkKLSNpZmRlZiBfV0lOMzIKLUxBTkdVQUdFIExBTkdfR0VSTUFOLCBTVUJMQU5HX0dFUk1BTgotI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKLSNlbmRpZiAvL19XSU4zMgotCi0jaWZkZWYgQVBTVFVESU9fSU5WT0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBURVhUSU5DTFVERQotLy8KLQotMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKLUJFR0lOCi0gICAgInJlc291cmNlLmhcMCIKLUVORAotCi0yIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIAotQkVHSU4KLSAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotMyBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKLUJFR0lOCi0gICAgIlxyXG4iCi0gICAgIlwwIgotRU5ECi0KLSNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECi0KLSNlbmRpZiAgICAvLyBHZXJtYW4gKEdlcm1hbnkpIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKLSNpZmRlZiBfV0lOMzIKLUxBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCi0jcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gRGlhbG9nCi0vLwotCiBJRERfSU5UUk8gRElBTE9HRVggMCwgMCwgMzc5LCAxNzgKIFNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQgfCBXU19DQVBUSU9OCiBDQVBUSU9OICJTZXR1cCIKQEAgLTE1Miw3OCArNzUsMyBAQAogICAgIEVESVRURVhUICAgICAgICBJRENfSU5GTywxMjUsNDAsMjQ3LDEzMSxFU19NVUxUSUxJTkUgfCBFU19SRUFET05MWSB8IAogICAgICAgICAgICAgICAgICAgICBXU19WU0NST0xMIHwgV1NfSFNDUk9MTCB8IE5PVCBXU19UQUJTVE9QCiBFTkQKLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIERFU0lHTklORk8KLS8vCi0KLSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi1HVUlERUxJTkVTIERFU0lHTklORk8gRElTQ0FSREFCTEUgCi1CRUdJTgotICAgIElERF9JTlRSTywgRElBTE9HCi0gICAgQkVHSU4KLSAgICAgICAgTEVGVE1BUkdJTiwgNwotICAgICAgICBSSUdIVE1BUkdJTiwgMzcyCi0gICAgICAgIFZFUlRHVUlERSwgMTI1Ci0gICAgICAgIFZFUlRHVUlERSwgMzcyCi0gICAgICAgIFRPUE1BUkdJTiwgNwotICAgICAgICBCT1RUT01NQVJHSU4sIDE3MQotICAgICAgICBIT1JaR1VJREUsIDgKLSAgICAgICAgSE9SWkdVSURFLCAzMQotICAgIEVORAotCi0gICAgSUREX1NFTEVDVFBZVEhPTiwgRElBTE9HCi0gICAgQkVHSU4KLSAgICAgICAgTEVGVE1BUkdJTiwgNwotICAgICAgICBSSUdIVE1BUkdJTiwgMzcyCi0gICAgICAgIFZFUlRHVUlERSwgMTI1Ci0gICAgICAgIFZFUlRHVUlERSwgMzcyCi0gICAgICAgIFRPUE1BUkdJTiwgNwotICAgICAgICBCT1RUT01NQVJHSU4sIDE3MQotICAgICAgICBIT1JaR1VJREUsIDgKLSAgICAgICAgSE9SWkdVSURFLCA0MQotICAgIEVORAotCi0gICAgSUREX0lOU1RBTExGSUxFUywgRElBTE9HCi0gICAgQkVHSU4KLSAgICAgICAgTEVGVE1BUkdJTiwgNwotICAgICAgICBSSUdIVE1BUkdJTiwgMzcyCi0gICAgICAgIFZFUlRHVUlERSwgMTI1Ci0gICAgICAgIFZFUlRHVUlERSwgMzcxCi0gICAgICAgIFRPUE1BUkdJTiwgNwotICAgICAgICBCT1RUT01NQVJHSU4sIDE3MQotICAgICAgICBIT1JaR1VJREUsIDgKLSAgICAgICAgSE9SWkdVSURFLCA0MQotICAgIEVORAotCi0gICAgSUREX0ZJTklTSEVELCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA2Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzIKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDQxCi0gICAgRU5ECi1FTkQKLSNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECi0KLSNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQotCi0jaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCi0vLwotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQKLQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9yZXNvdXJjZS5oIGIvUEMvYmRpc3Rfd2luaW5zdC9yZXNvdXJjZS5oCmluZGV4IDM1YmEzYzIuLjg2YWVhYmIgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvcmVzb3VyY2UuaAorKysgYi9QQy9iZGlzdF93aW5pbnN0L3Jlc291cmNlLmgKQEAgLTEsMTYgKzEsMTEgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAotLy97e05PX0RFUEVOREVOQ0lFU319Ci0vLyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgotLy8gVXNlZCBieSBpbnN0YWxsLnJjCi0vLwogI2RlZmluZSBJRERfRElBTE9HMSAgICAgICAgICAgICAgICAgICAgIDEwMQogI2RlZmluZSBJREJfQklUTUFQMSAgICAgICAgICAgICAgICAgICAgIDEwMwogI2RlZmluZSBJRERfSU5UUk8gICAgICAgICAgICAgICAgICAgICAgIDEwNwpAQCAtMzQsMTQgKzI5LDMgQEAKICNkZWZpbmUgSURDX0JVSUxEX0lORk8gICAgICAgICAgICAgICAgICAxMDI0CiAjZGVmaW5lIElEQ19CSVRNQVAgICAgICAgICAgICAgICAgICAgICAgMTAyNQogI2RlZmluZSBJRENfT1RIRVJQWVRIT04gICAgICAgICAgICAgICAgIDEwMjYKLQotLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKLS8vIAotI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKLSNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDExMgotI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCi0jZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAyOAotI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEuc2xuIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMDVkMjUuLjAwMDAwMDAKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA4LjAwDQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5pbnN0IiwgIndpbmluc3QtNy4xLnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24pID0gcHJlU29sdXRpb24NCi0JCURlYnVnID0gRGVidWcNCi0JCVJlbGVhc2UgPSBSZWxlYXNlDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvbikgPSBwb3N0U29sdXRpb24NCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBvc3RTb2x1dGlvbg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS52Y3Byb2ogYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBkYWFlOS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0id2luaW5zdCINCi0JUHJvamVjdEdVSUQ9IntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5pbnN0Ig0KLQlTY2NQcm9qZWN0TmFtZT0iIg0KLQlTY2NMb2NhbFBhdGg9IiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHRlbXAtcmVsZWFzZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXC4uXHpsaWItMS4yLjMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLXJlbGVhc2Uvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLXJlbGVhc2UvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tY3RsMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC03LjEuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJUUlVFIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1kZWJ1ZyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9Ii5cdGVtcC1kZWJ1Zy93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iLlx0ZW1wLWRlYnVnLyINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIxIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cemxpYi0xLjIuMVx6bGliLmxpYiBpbWFnZWhscC5saWIgY29tY3RsMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC03LjFfZC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0iVFJVRSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4vd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ij4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9ImV4dHJhY3QuYyI+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwuYyI+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwucmMiPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iYXJjaGl2ZS5oIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJQeXRob25Qb3dlcmVkLmJtcCI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVmMTZjZi4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDUNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbmluc3QiLCAid2luaW5zdC04LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2ogYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNDdkMWIuLjAwMDAwMDAKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTgudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJ3aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzEudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLXJlbGVhc2Uvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLXJlbGVhc2UvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTguZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1kZWJ1ZyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcxLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4vd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iaW1hZ2VobHAubGliIGNvbWN0bDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtOF9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJleHRyYWN0LmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJQeXRob25Qb3dlcmVkLmJtcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHNwIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk4NTU2OS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0id2luaW5zdCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iIDB4MDEwMQ0KLQ0KLUNGRz13aW5pbnN0IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIndpbmluc3QubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIndpbmluc3QubWFrIiBDRkc9Indpbmluc3QgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAid2luaW5zdCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJ3aW5pbnN0IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJ3aW5pbnN0IC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGVtcC1yZWxlYXNlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMSAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uXC4uXC4uXHpsaWItMS4yLjMiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIC4uXC4uXC4uXHpsaWItMS4yLjNcemxpYi5saWIgaW1hZ2VobHAubGliIGNvbWRsZzMyLmxpYiBvbGUzMi5saWIgY29tY3RsMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJMSUJDIiAvb3V0OiIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LjAuZXhlIg0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ3aW5pbnN0IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgInRlbXAtZGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvWjcgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi5cLi5cLi5cemxpYi0xLjIuMSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0ZSIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIC4uXC4uXC4uXHpsaWItMS4yLjNcemxpYi5saWIgaW1hZ2VobHAubGliIGNvbWRsZzMyLmxpYiBvbGUzMi5saWIgY29tY3RsMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL3BkYjpub25lIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IkxJQkMiIC9vdXQ6Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYuMF9kLmV4ZSINCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgIndpbmluc3QgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAid2luaW5zdCAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGV4dHJhY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGluc3RhbGwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGluc3RhbGwucmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cYXJjaGl2ZS5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9LlxQeXRob25Qb3dlcmVkLmJtcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzdyBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC5kc3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiYzY2YWEuLjAwMDAwMDAKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzdworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLU1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSENCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogIndpbmluc3QiPS5cd2luaW5zdC5kc3AgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotR2xvYmFsOg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08Mz4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmggYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGU2ZWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmgKQEAgLTAsMCArMSw1NTQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfaGVhcG1pbl9fZG9jX18sCisiaGVhcG1pbigkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWluaW1pemUgdGhlIG1hbGxvYygpIGhlYXAuXG4iCisiXG4iCisiRm9yY2UgdGhlIG1hbGxvYygpIGhlYXAgdG8gY2xlYW4gaXRzZWxmIHVwIGFuZCByZXR1cm4gdW51c2VkIGJsb2Nrc1xuIgorInRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyBPU0Vycm9yLiIpOworCisjZGVmaW5lIE1TVkNSVF9IRUFQTUlOX01FVEhPRERFRiAgICBcCisgICAgeyJoZWFwbWluIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9oZWFwbWluLCBNRVRIX05PQVJHUywgbXN2Y3J0X2hlYXBtaW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9oZWFwbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfaGVhcG1pbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBtc3ZjcnRfaGVhcG1pbl9pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfbG9ja2luZ19fZG9jX18sCisibG9ja2luZygkbW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTG9jayBwYXJ0IG9mIGEgZmlsZSBiYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQgZnJvbSB0aGUgQyBydW50aW1lLlxuIgorIlxuIgorIlJhaXNlcyBJT0Vycm9yIG9uIGZhaWx1cmUuIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbVxuIgorInRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yIG5ieXRlcyBieXRlcywgYW5kIG1heSBjb250aW51ZSBiZXlvbmRcbiIKKyJ0aGUgZW5kIG9mIHRoZSBmaWxlLiBtb2RlIG11c3QgYmUgb25lIG9mIHRoZSBMS18qIGNvbnN0YW50cyBsaXN0ZWRcbiIKKyJiZWxvdy4gTXVsdGlwbGUgcmVnaW9ucyBpbiBhIGZpbGUgbWF5IGJlIGxvY2tlZCBhdCB0aGUgc2FtZSB0aW1lLCBidXRcbiIKKyJtYXkgbm90IG92ZXJsYXAuIEFkamFjZW50IHJlZ2lvbnMgYXJlIG5vdCBtZXJnZWQ7IHRoZXkgbXVzdCBiZSB1bmxvY2tlZFxuIgorImluZGl2aWR1YWxseS4iKTsKKworI2RlZmluZSBNU1ZDUlRfTE9DS0lOR19NRVRIT0RERUYgICAgXAorICAgIHsibG9ja2luZyIsIChQeUNGdW5jdGlvbiltc3ZjcnRfbG9ja2luZywgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfbG9ja2luZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2xvY2tpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlLCBsb25nIG5ieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfbG9ja2luZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IG1vZGU7CisgICAgbG9uZyBuYnl0ZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwKKyAgICAgICAgJmZkLCAmbW9kZSwgJm5ieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfbG9ja2luZ19pbXBsKG1vZHVsZSwgZmQsIG1vZGUsIG5ieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9zZXRtb2RlX19kb2NfXywKKyJzZXRtb2RlKCRtb2R1bGUsIGZkLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBsaW5lLWVuZCB0cmFuc2xhdGlvbiBtb2RlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLlxuIgorIlxuIgorIlRvIHNldCBpdCB0byB0ZXh0IG1vZGUsIGZsYWdzIHNob3VsZCBiZSBvcy5PX1RFWFQ7IGZvciBiaW5hcnksIGl0XG4iCisic2hvdWxkIGJlIG9zLk9fQklOQVJZLlxuIgorIlxuIgorIlJldHVybiB2YWx1ZSBpcyB0aGUgcHJldmlvdXMgbW9kZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfU0VUTU9ERV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0bW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfc2V0bW9kZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfc2V0bW9kZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldG1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfc2V0bW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGZsYWdzOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0bW9kZSIsCisgICAgICAgICZmZCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0bW9kZV9pbXBsKG1vZHVsZSwgZmQsIGZsYWdzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX18sCisib3Blbl9vc2ZoYW5kbGUoJG1vZHVsZSwgaGFuZGxlLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgZmlsZSBoYW5kbGUgaGFuZGxlLlxuIgorIlxuIgorIlRoZSBmbGFncyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgYml0d2lzZSBPUiBvZiBvcy5PX0FQUEVORCwgb3MuT19SRE9OTFksXG4iCisiYW5kIG9zLk9fVEVYVC4gVGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCBhcyBhIHBhcmFtZXRlclxuIgorInRvIG9zLmZkb3BlbigpIHRvIGNyZWF0ZSBhIGZpbGUgb2JqZWN0LiIpOworCisjZGVmaW5lIE1TVkNSVF9PUEVOX09TRkhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9vcGVuX29zZmhhbmRsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50IGZsYWdzOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIl9QeV9QQVJTRV9JTlRQVFIiaTpvcGVuX29zZmhhbmRsZSIsCisgICAgICAgICZoYW5kbGUsICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGZsYWdzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfXywKKyJnZXRfb3NmaGFuZGxlKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJSYWlzZXMgSU9FcnJvciBpZiBmZCBpcyBub3QgcmVjb2duaXplZC4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUX09TRkhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0X29zZmhhbmRsZSwgTUVUSF9PLCBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgUHlfaW50cHRyX3QKK21zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9nZXRfb3NmaGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X2ludHB0cl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVZvaWRQdHIoKHZvaWQgKilfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X2tiaGl0X19kb2NfXywKKyJrYmhpdCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRydWUgaWYgYSBrZXlwcmVzcyBpcyB3YWl0aW5nIHRvIGJlIHJlYWQuIik7CisKKyNkZWZpbmUgTVNWQ1JUX0tCSElUX01FVEhPRERFRiAgICBcCisgICAgeyJrYmhpdCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfa2JoaXQsIE1FVEhfTk9BUkdTLCBtc3ZjcnRfa2JoaXRfX2RvY19ffSwKKworc3RhdGljIGxvbmcKK21zdmNydF9rYmhpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2tiaGl0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9rYmhpdF9pbXBsKG1vZHVsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfZ2V0Y2hfX2RvY19fLAorImdldGNoKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGEga2V5cHJlc3MgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBhcyBhIGJ5dGUgc3RyaW5nLlxuIgorIlxuIgorIk5vdGhpbmcgaXMgZWNob2VkIHRvIHRoZSBjb25zb2xlLiBUaGlzIGNhbGwgd2lsbCBibG9jayBpZiBhIGtleXByZXNzIGlzXG4iCisibm90IGFscmVhZHkgYXZhaWxhYmxlLCBidXQgd2lsbCBub3Qgd2FpdCBmb3IgRW50ZXIgdG8gYmUgcHJlc3NlZC4gSWYgdGhlXG4iCisicHJlc3NlZCBrZXkgd2FzIGEgc3BlY2lhbCBmdW5jdGlvbiBrZXksIHRoaXMgd2lsbCByZXR1cm4gXCdcXDAwMFwnIG9yXG4iCisiXCdcXHhlMFwnOyB0aGUgbmV4dCBjYWxsIHdpbGwgcmV0dXJuIHRoZSBrZXljb2RlLiBUaGUgQ29udHJvbC1DIGtleXByZXNzXG4iCisiY2Fubm90IGJlIHJlYWQgd2l0aCB0aGlzIGZ1bmN0aW9uLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldGNoLCBNRVRIX05PQVJHUywgbXN2Y3J0X2dldGNoX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK21zdmNydF9nZXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldGNoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBzWzFdOworCisgICAgc1swXSA9IG1zdmNydF9nZXRjaF9pbXBsKG1vZHVsZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCAxKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfZ2V0d2NoX19kb2NfXywKKyJnZXR3Y2goJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoKCksIHJldHVybmluZyBhIFVuaWNvZGUgdmFsdWUuIik7CisKKyNkZWZpbmUgTVNWQ1JUX0dFVFdDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0d2NoIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXR3Y2gsIE1FVEhfTk9BUkdTLCBtc3ZjcnRfZ2V0d2NoX19kb2NfX30sCisKK3N0YXRpYyB3Y2hhcl90Cittc3ZjcnRfZ2V0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0d2NoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgd2NoYXJfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9nZXR3Y2hfaW1wbChtb2R1bGUpOworICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChfcmV0dXJuX3ZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfZ2V0Y2hlX19kb2NfXywKKyJnZXRjaGUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNpbWlsYXIgdG8gZ2V0Y2goKSwgYnV0IHRoZSBrZXlwcmVzcyB3aWxsIGJlIGVjaG9lZCBpZiBwb3NzaWJsZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUQ0hFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjaGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldGNoZSwgTUVUSF9OT0FSR1MsIG1zdmNydF9nZXRjaGVfX2RvY19ffSwKKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldGNoZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgc1sxXTsKKworICAgIHNbMF0gPSBtc3ZjcnRfZ2V0Y2hlX2ltcGwobW9kdWxlKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXR3Y2hlX19kb2NfXywKKyJnZXR3Y2hlKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaGUoKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUV0NIRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0d2NoZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0d2NoZSwgTUVUSF9OT0FSR1MsIG1zdmNydF9nZXR3Y2hlX19kb2NfX30sCisKK3N0YXRpYyB3Y2hhcl90Cittc3ZjcnRfZ2V0d2NoZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldHdjaGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB3Y2hhcl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldHdjaGVfaW1wbChtb2R1bGUpOworICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChfcmV0dXJuX3ZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfcHV0Y2hfX2RvY19fLAorInB1dGNoKCRtb2R1bGUsIGNoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQcmludCB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byB0aGUgY29uc29sZSB3aXRob3V0IGJ1ZmZlcmluZy4iKTsKKworI2RlZmluZSBNU1ZDUlRfUFVUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InB1dGNoIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9wdXRjaCwgTUVUSF9PLCBtc3ZjcnRfcHV0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNoYXIgY2hhcl92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfcHV0Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjaGFyIGNoYXJfdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfcHV0d2NoX19kb2NfXywKKyJwdXR3Y2goJG1vZHVsZSwgdW5pY29kZV9jaGFyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2lkZSBjaGFyIHZhcmlhbnQgb2YgcHV0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfUFVUV0NIX01FVEhPRERFRiAgICBcCisgICAgeyJwdXR3Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3B1dHdjaCwgTUVUSF9PLCBtc3ZjcnRfcHV0d2NoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfcHV0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHVuaWNvZGVfY2hhcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfcHV0d2NoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHVuaWNvZGVfY2hhcjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF91bmdldGNoX19kb2NfXywKKyJ1bmdldGNoKCRtb2R1bGUsIGNoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcHBvc2l0ZSBvZiBnZXRjaC5cbiIKKyJcbiIKKyJDYXVzZSB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byBiZSBcInB1c2hlZCBiYWNrXCIgaW50byB0aGVcbiIKKyJjb25zb2xlIGJ1ZmZlcjsgaXQgd2lsbCBiZSB0aGUgbmV4dCBjaGFyYWN0ZXIgcmVhZCBieVxuIgorImdldGNoKCkgb3IgZ2V0Y2hlKCkuIik7CisKKyNkZWZpbmUgTVNWQ1JUX1VOR0VUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InVuZ2V0Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3VuZ2V0Y2gsIE1FVEhfTywgbXN2Y3J0X3VuZ2V0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF91bmdldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY2hhciBjaGFyX3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF91bmdldGNoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBjaGFyX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF91bmdldHdjaF9fZG9jX18sCisidW5nZXR3Y2goJG1vZHVsZSwgdW5pY29kZV9jaGFyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2lkZSBjaGFyIHZhcmlhbnQgb2YgdW5nZXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLiIpOworCisjZGVmaW5lIE1TVkNSVF9VTkdFVFdDSF9NRVRIT0RERUYgICAgXAorICAgIHsidW5nZXR3Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3VuZ2V0d2NoLCBNRVRIX08sIG1zdmNydF91bmdldHdjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3VuZ2V0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHVuaWNvZGVfY2hhcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfdW5nZXR3Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdW5pY29kZV9jaGFyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoX0RFQlVHKQorCitQeURvY19TVFJWQVIobXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfX2RvY19fLAorIkNydFNldFJlcG9ydEZpbGUoJG1vZHVsZSwgdHlwZSwgZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRGaWxlLlxuIgorIlxuIgorIk9ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4iKTsKKworI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3J0U2V0UmVwb3J0RmlsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdHlwZSwgaW50IGZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X0NydFNldFJlcG9ydEZpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHR5cGU7CisgICAgaW50IGZpbGU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRGaWxlIiwKKyAgICAgICAgJnR5cGUsICZmaWxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKG1vZHVsZSwgdHlwZSwgZmlsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9ERUJVRykgKi8KKworI2lmIGRlZmluZWQoX0RFQlVHKQorCitQeURvY19TVFJWQVIobXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfX2RvY19fLAorIkNydFNldFJlcG9ydE1vZGUoJG1vZHVsZSwgdHlwZSwgbW9kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRNb2RlLlxuIgorIlxuIgorIk9ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4iKTsKKworI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3J0U2V0UmVwb3J0TW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdHlwZSwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X0NydFNldFJlcG9ydE1vZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHR5cGU7CisgICAgaW50IG1vZGU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRNb2RlIiwKKyAgICAgICAgJnR5cGUsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKG1vZHVsZSwgdHlwZSwgbW9kZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9ERUJVRykgKi8KKworI2lmIGRlZmluZWQoX0RFQlVHKQorCitQeURvY19TVFJWQVIobXN2Y3J0X3NldF9lcnJvcl9tb2RlX19kb2NfXywKKyJzZXRfZXJyb3JfbW9kZSgkbW9kdWxlLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgX3NldF9lcnJvcl9tb2RlLlxuIgorIlxuIgorIk9ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4iKTsKKworI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9lcnJvcl9tb2RlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9zZXRfZXJyb3JfbW9kZSwgTUVUSF9PLCBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfX2RvY19ffSwKKworc3RhdGljIGxvbmcKK21zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9zZXRfZXJyb3JfbW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtb2RlOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfaW1wbChtb2R1bGUsIG1vZGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChfREVCVUcpICovCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfU2V0RXJyb3JNb2RlX19kb2NfXywKKyJTZXRFcnJvck1vZGUoJG1vZHVsZSwgbW9kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldyYXBwZXIgYXJvdW5kIFNldEVycm9yTW9kZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfU0VURVJST1JNT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRFcnJvck1vZGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X1NldEVycm9yTW9kZSwgTUVUSF9PLCBtc3ZjcnRfU2V0RXJyb3JNb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdW5zaWduZWQgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X1NldEVycm9yTW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBtb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOlNldEVycm9yTW9kZSIsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9TZXRFcnJvck1vZGVfaW1wbChtb2R1bGUsIG1vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZm5kZWYgTVNWQ1JUX0NSVFNFVFJFUE9SVEZJTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgTVNWQ1JUX0NSVFNFVFJFUE9SVE1PREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTY2MTNkMzExOWExZmQ0NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2lucmVnLmMuaCBiL1BDL2NsaW5pYy93aW5yZWcuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjMzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvd2lucmVnLmMuaApAQCAtMCwwICsxLDEwNTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUih3aW5yZWdfSEtFWVR5cGVfQ2xvc2VfX2RvY19fLAorIkNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIFdpbmRvd3MgaGFuZGxlLlxuIgorIlxuIgorIklmIHRoZSBoYW5kbGUgaXMgYWxyZWFkeSBjbG9zZWQsIG5vIGVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7IkNsb3NlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9DbG9zZSwgTUVUSF9OT0FSR1MsIHdpbnJlZ19IS0VZVHlwZV9DbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0Nsb3NlX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9DbG9zZShQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHdpbnJlZ19IS0VZVHlwZV9DbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0hLRVlUeXBlX0RldGFjaF9fZG9jX18sCisiRGV0YWNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGV0YWNoZXMgdGhlIFdpbmRvd3MgaGFuZGxlIGZyb20gdGhlIGhhbmRsZSBvYmplY3QuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGhhbmRsZSBiZWZvcmUgaXQgaXMgZGV0YWNoZWQuICBJZiB0aGVcbiIKKyJoYW5kbGUgaXMgYWxyZWFkeSBkZXRhY2hlZCwgdGhpcyB3aWxsIHJldHVybiB6ZXJvLlxuIgorIlxuIgorIkFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIGhhbmRsZSBpcyBlZmZlY3RpdmVseSBpbnZhbGlkYXRlZCxcbiIKKyJidXQgdGhlIGhhbmRsZSBpcyBub3QgY2xvc2VkLiAgWW91IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdVxuIgorIm5lZWQgdGhlIHVuZGVybHlpbmcgd2luMzIgaGFuZGxlIHRvIGV4aXN0IGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlXG4iCisiaGFuZGxlIG9iamVjdC4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJEZXRhY2giLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX0RldGFjaCwgTUVUSF9OT0FSR1MsIHdpbnJlZ19IS0VZVHlwZV9EZXRhY2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9EZXRhY2hfaW1wbChQeUhLRVlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0RldGFjaChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHdpbnJlZ19IS0VZVHlwZV9EZXRhY2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19IS0VZVHlwZV9fX2VudGVyX19fX2RvY19fLAorIl9fZW50ZXJfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgV0lOUkVHX0hLRVlUWVBFX19fRU5URVJfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2VudGVyX18sIE1FVEhfTk9BUkdTLCB3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX19kb2NfX30sCisKK3N0YXRpYyBQeUhLRVlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZW50ZXJfX19pbXBsKFB5SEtFWU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeUhLRVlPYmplY3QgKl9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0hLRVlUeXBlX19fZW50ZXJfX19pbXBsKHNlbGYpOworICAgIHJldHVybl92YWx1ZSA9IChQeU9iamVjdCAqKV9yZXR1cm5fdmFsdWU7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfXywKKyJfX2V4aXRfXygkc2VsZiwgLywgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXyhQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpleGNfdHlwZTsKKyAgICBQeU9iamVjdCAqZXhjX3ZhbHVlOworICAgIFB5T2JqZWN0ICp0cmFjZWJhY2s7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT086X19leGl0X18iLCBfa2V5d29yZHMsCisgICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfQ2xvc2VLZXlfX2RvY19fLAorIkNsb3NlS2V5KCRtb2R1bGUsIGhrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZXMgYSBwcmV2aW91c2x5IG9wZW5lZCByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBoa2V5XG4iCisiICAgIEEgcHJldmlvdXNseSBvcGVuZWQga2V5LlxuIgorIlxuIgorIk5vdGUgdGhhdCBpZiB0aGUga2V5IGlzIG5vdCBjbG9zZWQgdXNpbmcgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmVcbiIKKyJjbG9zZWQgd2hlbiB0aGUgaGtleSBvYmplY3QgaXMgZGVzdHJveWVkIGJ5IFB5dGhvbi4iKTsKKworI2RlZmluZSBXSU5SRUdfQ0xPU0VLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkNsb3NlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DbG9zZUtleSwgTUVUSF9PLCB3aW5yZWdfQ2xvc2VLZXlfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKHdpbnJlZ19Db25uZWN0UmVnaXN0cnlfX2RvY19fLAorIkNvbm5lY3RSZWdpc3RyeSgkbW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIHJlZ2lzdHJ5IG9uIG9uIGFub3RoZXIgY29tcHV0ZXIuXG4iCisiXG4iCisiICBjb21wdXRlcl9uYW1lXG4iCisiICAgIFRoZSBuYW1lIG9mIHRoZSByZW1vdGUgY29tcHV0ZXIsIG9mIHRoZSBmb3JtIHJcIlxcXFxjb21wdXRlcm5hbWVcIi4gIElmXG4iCisiICAgIE5vbmUsIHRoZSBsb2NhbCBjb21wdXRlciBpcyB1c2VkLlxuIgorIiAga2V5XG4iCisiICAgIFRoZSBwcmVkZWZpbmVkIGtleSB0byBjb25uZWN0IHRvLlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfQ09OTkVDVFJFR0lTVFJZX01FVEhPRERFRiAgICBcCisgICAgeyJDb25uZWN0UmVnaXN0cnkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0Nvbm5lY3RSZWdpc3RyeSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tcHV0ZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X1VOSUNPREUgKmNvbXB1dGVyX25hbWU7CisgICAgSEtFWSBrZXk7CisgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaTyY6Q29ubmVjdFJlZ2lzdHJ5IiwKKyAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKG1vZHVsZSwgY29tcHV0ZXJfbmFtZSwga2V5KTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfQ3JlYXRlS2V5X19kb2NfXywKKyJDcmVhdGVLZXkoJG1vZHVsZSwga2V5LCBzdWJfa2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgorIlxuIgorIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgorInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgorIlxuIgorIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3JlYXRlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0NyZWF0ZUtleV9fZG9jX199LAorCitzdGF0aWMgSEtFWQord2lucmVnX0NyZWF0ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19DcmVhdGVLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpDcmVhdGVLZXkiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX18sCisiQ3JlYXRlS2V5RXgoJG1vZHVsZSwgLywga2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLFxuIgorIiAgICAgICAgICAgIGFjY2Vzcz13aW5yZWcuS0VZX1dSSVRFKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlXG4iCisiICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XUklURS5cbiIKKyJcbiIKKyJJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSxcbiIKKyJ0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi5cbiIKKyJcbiIKKyJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXlcbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKKworc3RhdGljIEhLRVkKK3dpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19DcmVhdGVLZXlFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgaW50IHJlc2VydmVkID0gMDsKKyAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dSSVRFOworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0RlbGV0ZUtleV9fZG9jX18sCisiRGVsZXRlS2V5KCRtb2R1bGUsIGtleSwgc3ViX2tleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkRlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5XG4iCisiICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3RcbiIKKyIgICAgaGF2ZSBzdWJrZXlzLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgorIlxuIgorIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKKyJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiRGVsZXRlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0RlbGV0ZUtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0RlbGV0ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OkRlbGV0ZUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0RlbGV0ZUtleUV4X19kb2NfXywKKyJEZWxldGVLZXlFeCgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIGFjY2Vzcz13aW5yZWcuS0VZX1dPVzY0XzY0S0VZLFxuIgorIiAgICAgICAgICAgIHJlc2VydmVkPTApXG4iCisiLS1cbiIKKyJcbiIKKyJEZWxldGVzIHRoZSBzcGVjaWZpZWQga2V5ICg2NC1iaXQgT1Mgb25seSkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5XG4iCisiICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3RcbiIKKyIgICAgaGF2ZSBzdWJrZXlzLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlXG4iCisiICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XT1c2NF82NEtFWS5cbiIKKyIgIHJlc2VydmVkXG4iCisiICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy5cbiIKKyJcbiIKKyJJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsXG4iCisiaXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLlxuIgorIk9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFdJTlJFR19ERUxFVEVLRVlFWF9NRVRIT0RERUYgICAgXAorICAgIHsiRGVsZXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlS2V5RXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJhY2Nlc3MiLCAicmVzZXJ2ZWQiLCBOVUxMfTsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV09XNjRfNjRLRVk7CisgICAgaW50IHJlc2VydmVkID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0RlbGV0ZVZhbHVlX19kb2NfXywKKyJEZWxldGVWYWx1ZSgkbW9kdWxlLCBrZXksIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlcyBhIG5hbWVkIHZhbHVlIGZyb20gYSByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgdmFsdWVcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZSB0byByZW1vdmUuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RFTEVURVZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJEZWxldGVWYWx1ZSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlVmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX0RlbGV0ZVZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0RlbGV0ZVZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6RGVsZXRlVmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRW51bUtleV9fZG9jX18sCisiRW51bUtleSgkbW9kdWxlLCBrZXksIGluZGV4LCAvKVxuIgorIi0tXG4iCisiXG4iCisiRW51bWVyYXRlcyBzdWJrZXlzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIGluZGV4XG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUga2V5IHRvIHJldHJpZXZlLlxuIgorIlxuIgorIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgorIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpc1xuIgorInJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcyBhcmUgYXZhaWxhYmxlLiIpOworCisjZGVmaW5lIFdJTlJFR19FTlVNS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJFbnVtS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FbnVtS2V5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19FbnVtS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBpbnQgaW5kZXgpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VudW1LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgaW50IGluZGV4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtS2V5X2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0VudW1WYWx1ZV9fZG9jX18sCisiRW51bVZhbHVlKCRtb2R1bGUsIGtleSwgaW5kZXgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFbnVtZXJhdGVzIHZhbHVlcyBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBpbmRleFxuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlLlxuIgorIlxuIgorIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgorIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb25cbiIKKyJpcyByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6XG4iCisiICB2YWx1ZV9uYW1lXG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgdmFsdWUuXG4iCisiICB2YWx1ZV9kYXRhXG4iCisiICAgIEFuIG9iamVjdCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBkYXRhLCBhbmQgd2hvc2UgdHlwZSBkZXBlbmRzXG4iCisiICAgIG9uIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJ5IHR5cGUuXG4iCisiICBkYXRhX3R5cGVcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGRhdGEuIik7CisKKyNkZWZpbmUgV0lOUkVHX0VOVU1WQUxVRV9NRVRIT0RERUYgICAgXAorICAgIHsiRW51bVZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FbnVtVmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX0VudW1WYWx1ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VudW1WYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBpbnQgaW5kZXgpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VudW1WYWx1ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtVmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19fZG9jX18sCisiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCRtb2R1bGUsIHN0cmluZywgLylcbiIKKyItLVxuIgorIlxuIgorIkV4cGFuZCBlbnZpcm9ubWVudCB2YXJzLiIpOworCisjZGVmaW5lIFdJTlJFR19FWFBBTkRFTlZJUk9OTUVOVFNUUklOR1NfTUVUSE9EREVGICAgIFwKKyAgICB7IkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsIChQeUNGdW5jdGlvbil3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzLCBNRVRIX08sIHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5ncyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X1VOSUNPREUgKnN0cmluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19GbHVzaEtleV9fZG9jX18sCisiRmx1c2hLZXkoJG1vZHVsZSwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIGFsbCB0aGUgYXR0cmlidXRlcyBvZiBhIGtleSB0byB0aGUgcmVnaXN0cnkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIlxuIgorIkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBGbHVzaEtleSB0byBjaGFuZ2UgYSBrZXkuICBSZWdpc3RyeSBjaGFuZ2VzXG4iCisiYXJlIGZsdXNoZWQgdG8gZGlzayBieSB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIGxhenkgZmx1c2hlci4gIFJlZ2lzdHJ5XG4iCisiY2hhbmdlcyBhcmUgYWxzbyBmbHVzaGVkIHRvIGRpc2sgYXQgc3lzdGVtIHNodXRkb3duLiAgVW5saWtlXG4iCisiQ2xvc2VLZXkoKSwgdGhlIEZsdXNoS2V5KCkgbWV0aG9kIHJldHVybnMgb25seSB3aGVuIGFsbCB0aGUgZGF0YSBoYXNcbiIKKyJiZWVuIHdyaXR0ZW4gdG8gdGhlIHJlZ2lzdHJ5LlxuIgorIlxuIgorIkFuIGFwcGxpY2F0aW9uIHNob3VsZCBvbmx5IGNhbGwgRmx1c2hLZXkoKSBpZiBpdCByZXF1aXJlcyBhYnNvbHV0ZVxuIgorImNlcnRhaW50eSB0aGF0IHJlZ2lzdHJ5IGNoYW5nZXMgYXJlIG9uIGRpc2suICBJZiB5b3UgZG9uXCd0IGtub3cgd2hldGhlclxuIgorImEgRmx1c2hLZXkoKSBjYWxsIGlzIHJlcXVpcmVkLCBpdCBwcm9iYWJseSBpc25cJ3QuIik7CisKKyNkZWZpbmUgV0lOUkVHX0ZMVVNIS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJGbHVzaEtleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRmx1c2hLZXksIE1FVEhfTywgd2lucmVnX0ZsdXNoS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRmx1c2hLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRmx1c2hLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0ZsdXNoS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfTG9hZEtleV9fZG9jX18sCisiTG9hZEtleSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIGZpbGVfbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkluc2VydCBkYXRhIGludG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBmaWxlLlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWIta2V5IHRvIGxvYWQuXG4iCisiICBmaWxlX25hbWVcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gbG9hZCByZWdpc3RyeSBkYXRhIGZyb20uICBUaGlzIGZpbGUgbXVzdFxuIgorIiAgICBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBTYXZlS2V5KCkgZnVuY3Rpb24uICBVbmRlciB0aGUgZmlsZVxuIgorIiAgICBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtLCB0aGUgZmlsZW5hbWUgbWF5IG5vdCBoYXZlIGFuXG4iCisiICAgIGV4dGVuc2lvbi5cbiIKKyJcbiIKKyJDcmVhdGVzIGEgc3Via2V5IHVuZGVyIHRoZSBzcGVjaWZpZWQga2V5IGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uXG4iCisiaW5mb3JtYXRpb24gZnJvbSBhIHNwZWNpZmllZCBmaWxlIGludG8gdGhhdCBzdWJrZXkuXG4iCisiXG4iCisiQSBjYWxsIHRvIExvYWRLZXkoKSBmYWlscyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhlXG4iCisiU0VfUkVTVE9SRV9QUklWSUxFR0UgcHJpdmlsZWdlLlxuIgorIlxuIgorIklmIGtleSBpcyBhIGhhbmRsZSByZXR1cm5lZCBieSBDb25uZWN0UmVnaXN0cnkoKSwgdGhlbiB0aGUgcGF0aFxuIgorInNwZWNpZmllZCBpbiBmaWxlTmFtZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIGNvbXB1dGVyLlxuIgorIlxuIgorIlRoZSBNU0ROIGRvY3MgaW1wbHkga2V5IG11c3QgYmUgaW4gdGhlIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkVcbiIKKyJ0cmVlLiIpOworCisjZGVmaW5lIFdJTlJFR19MT0FES0VZX01FVEhPRERFRiAgICBcCisgICAgeyJMb2FkS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19Mb2FkS2V5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19Mb2FkS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfTG9hZEtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmaWxlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0xvYWRLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdXU6TG9hZEtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0xvYWRLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX09wZW5LZXlfX2RvY19fLAorIk9wZW5LZXkoJG1vZHVsZSwgLywga2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9d2lucmVnLktFWV9SRUFEKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi5cbiIKKyIgIHJlc2VydmVkXG4iCisiICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciB0aGF0IG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKKyIgIGFjY2Vzc1xuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBkZXNpcmVkXG4iCisiICAgIHNlY3VyaXR5IGFjY2VzcyBmb3IgdGhlIGtleS4gIERlZmF1bHQgaXMgS0VZX1JFQUQuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX09QRU5LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAorCitzdGF0aWMgSEtFWQord2lucmVnX09wZW5LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19PcGVuS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBpbnQgcmVzZXJ2ZWQgPSAwOworICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKKyAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfT3BlbktleUV4X19kb2NfXywKKyJPcGVuS2V5RXgoJG1vZHVsZSwgLywga2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9d2lucmVnLktFWV9SRUFEKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi5cbiIKKyIgIHJlc2VydmVkXG4iCisiICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciB0aGF0IG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKKyIgIGFjY2Vzc1xuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBkZXNpcmVkXG4iCisiICAgIHNlY3VyaXR5IGFjY2VzcyBmb3IgdGhlIGtleS4gIERlZmF1bHQgaXMgS0VZX1JFQUQuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX09QRU5LRVlFWF9NRVRIT0RERUYgICAgXAorICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleUV4X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19PcGVuS2V5RXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIGludCByZXNlcnZlZCA9IDA7CisgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX09wZW5LZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlJbmZvS2V5X19kb2NfXywKKyJRdWVyeUluZm9LZXkoJG1vZHVsZSwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6XG4iCisiQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiBzdWIga2V5cyB0aGlzIGtleSBoYXMuXG4iCisiQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhpcyBrZXkgaGFzLlxuIgorIkFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhlIGtleSB3YXMgbGFzdCBtb2RpZmllZCAoaWYgYXZhaWxhYmxlKVxuIgorImFzIDEwMFwncyBvZiBuYW5vc2Vjb25kcyBzaW5jZSBKYW4gMSwgMTYwMC4iKTsKKworI2RlZmluZSBXSU5SRUdfUVVFUllJTkZPS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJRdWVyeUluZm9LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1F1ZXJ5SW5mb0tleSwgTUVUSF9PLCB3aW5yZWdfUXVlcnlJbmZvS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlJbmZvS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5SW5mb0tleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5SW5mb0tleV9pbXBsKG1vZHVsZSwga2V5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1F1ZXJ5VmFsdWVfX2RvY19fLAorIlF1ZXJ5VmFsdWUoJG1vZHVsZSwga2V5LCBzdWJfa2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmVzIHRoZSB1bm5hbWVkIHZhbHVlIGZvciBhIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaG9sZHMgdGhlIG5hbWUgb2YgdGhlIHN1YmtleSB3aXRoIHdoaWNoIHRoZSB2YWx1ZVxuIgorIiAgICBpcyBhc3NvY2lhdGVkLiAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgTm9uZSBvciBlbXB0eSwgdGhlIGZ1bmN0aW9uXG4iCisiICAgIHJldHJpZXZlcyB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBTZXRWYWx1ZSgpIG1ldGhvZCBmb3IgdGhlIGtleVxuIgorIiAgICBpZGVudGlmaWVkIGJ5IGtleS5cbiIKKyJcbiIKKyJWYWx1ZXMgaW4gdGhlIHJlZ2lzdHJ5IGhhdmUgbmFtZSwgdHlwZSwgYW5kIGRhdGEgY29tcG9uZW50cy4gVGhpcyBtZXRob2RcbiIKKyJyZXRyaWV2ZXMgdGhlIGRhdGEgZm9yIGEga2V5XCdzIGZpcnN0IHZhbHVlIHRoYXQgaGFzIGEgTlVMTCBuYW1lLlxuIgorIkJ1dCBzaW5jZSB0aGUgdW5kZXJseWluZyBBUEkgY2FsbCBkb2VzblwndCByZXR1cm4gdGhlIHR5cGUsIHlvdVwnbGxcbiIKKyJwcm9iYWJseSBiZSBoYXBwaWVyIHVzaW5nIFF1ZXJ5VmFsdWVFeDsgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGhlcmUgZm9yXG4iCisiY29tcGxldGVuZXNzLiIpOworCisjZGVmaW5lIFdJTlJFR19RVUVSWVZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJRdWVyeVZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19RdWVyeVZhbHVlLCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19RdWVyeVZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpRdWVyeVZhbHVlIiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1F1ZXJ5VmFsdWVFeF9fZG9jX18sCisiUXVlcnlWYWx1ZUV4KCRtb2R1bGUsIGtleSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHJpZXZlcyB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgYSBzcGVjaWZpZWQgc3ViLWtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBuYW1lXG4iCisiICAgIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHZhbHVlIHRvIHF1ZXJ5LlxuIgorIlxuIgorIkJlaGF2ZXMgbW9zdGx5IGxpa2UgUXVlcnlWYWx1ZSgpLCBidXQgYWxzbyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZVxuIgorInNwZWNpZmllZCB2YWx1ZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiVGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIHR5cGVfaWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX1FVRVJZVkFMVUVFWF9NRVRIT0RERUYgICAgXAorICAgIHsiUXVlcnlWYWx1ZUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19RdWVyeVZhbHVlRXgsIE1FVEhfVkFSQVJHUywgd2lucmVnX1F1ZXJ5VmFsdWVFeF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlRXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWVFeCIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1NhdmVLZXlfX2RvY19fLAorIlNhdmVLZXkoJG1vZHVsZSwga2V5LCBmaWxlX25hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTYXZlcyB0aGUgc3BlY2lmaWVkIGtleSwgYW5kIGFsbCBpdHMgc3Via2V5cyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgZmlsZV9uYW1lXG4iCisiICAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHNhdmUgcmVnaXN0cnkgZGF0YSB0by4gIFRoaXMgZmlsZSBjYW5ub3RcbiIKKyIgICAgYWxyZWFkeSBleGlzdC4gSWYgdGhpcyBmaWxlbmFtZSBpbmNsdWRlcyBhbiBleHRlbnNpb24sIGl0IGNhbm5vdCBiZVxuIgorIiAgICB1c2VkIG9uIGZpbGUgYWxsb2NhdGlvbiB0YWJsZSAoRkFUKSBmaWxlIHN5c3RlbXMgYnkgdGhlIExvYWRLZXkoKSxcbiIKKyIgICAgUmVwbGFjZUtleSgpIG9yIFJlc3RvcmVLZXkoKSBtZXRob2RzLlxuIgorIlxuIgorIklmIGtleSByZXByZXNlbnRzIGEga2V5IG9uIGEgcmVtb3RlIGNvbXB1dGVyLCB0aGUgcGF0aCBkZXNjcmliZWQgYnlcbiIKKyJmaWxlX25hbWUgaXMgcmVsYXRpdmUgdG8gdGhlIHJlbW90ZSBjb21wdXRlci5cbiIKKyJcbiIKKyJUaGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG11c3QgcG9zc2VzcyB0aGUgU2VCYWNrdXBQcml2aWxlZ2VcbiIKKyJzZWN1cml0eSBwcml2aWxlZ2UuICBUaGlzIGZ1bmN0aW9uIHBhc3NlcyBOVUxMIGZvciBzZWN1cml0eV9hdHRyaWJ1dGVzXG4iCisidG8gdGhlIEFQSS4iKTsKKworI2RlZmluZSBXSU5SRUdfU0FWRUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiU2F2ZUtleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfU2F2ZUtleSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfU2F2ZUtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1NhdmVLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqZmlsZV9uYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TYXZlS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OlNhdmVLZXkiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NhdmVLZXlfaW1wbChtb2R1bGUsIGtleSwgZmlsZV9uYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1NldFZhbHVlX19kb2NfXywKKyJTZXRWYWx1ZSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIHR5cGUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQXNzb2NpYXRlcyBhIHZhbHVlIHdpdGggYSBzcGVjaWZpZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBuYW1lcyB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlIGlzIGFzc29jaWF0ZWQuXG4iCisiICB0eXBlXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBDdXJyZW50bHkgdGhpcyBtdXN0XG4iCisiICAgIGJlIFJFR19TWiwgbWVhbmluZyBvbmx5IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC5cbiIKKyIgIHZhbHVlXG4iCisiICAgIEEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuZXcgdmFsdWUuXG4iCisiXG4iCisiSWYgdGhlIGtleSBzcGVjaWZpZWQgYnkgdGhlIHN1Yl9rZXkgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0LCB0aGVcbiIKKyJTZXRWYWx1ZSBmdW5jdGlvbiBjcmVhdGVzIGl0LlxuIgorIlxuIgorIlZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhblxuIgorIjIwNDggYnl0ZXMpIHNob3VsZCBiZSBzdG9yZWQgYXMgZmlsZXMgd2l0aCB0aGUgZmlsZW5hbWVzIHN0b3JlZCBpblxuIgorInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IHRvIGhlbHAgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuXG4iCisiXG4iCisiVGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXkgcGFyYW1ldGVyIG11c3QgaGF2ZSBiZWVuIG9wZW5lZCB3aXRoXG4iCisiS0VZX1NFVF9WQUxVRSBhY2Nlc3MuIik7CisKKyNkZWZpbmUgV0lOUkVHX1NFVFZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRWYWx1ZSIsIChQeUNGdW5jdGlvbil3aW5yZWdfU2V0VmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX1NldFZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgIERXT1JEIHR5cGUsIFB5X1VOSUNPREUgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCB2YWx1ZV9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1NldFZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgRFdPUkQgdHlwZTsKKyAgICBQeV9VTklDT0RFICp2YWx1ZTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaa3UjOlNldFZhbHVlIiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIHZhbHVlX2xlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19TZXRWYWx1ZUV4X19kb2NfXywKKyJTZXRWYWx1ZUV4KCRtb2R1bGUsIGtleSwgdmFsdWVfbmFtZSwgcmVzZXJ2ZWQsIHR5cGUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RvcmVzIGRhdGEgaW4gdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHZhbHVlX25hbWVcbiIKKyIgICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgdmFsdWUgdG8gc2V0LCBvciBOb25lLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQ2FuIGJlIGFueXRoaW5nIC0gemVybyBpcyBhbHdheXMgcGFzc2VkIHRvIHRoZSBBUEkuXG4iCisiICB0eXBlXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjpcbiIKKyIgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKKyIgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKKyIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LlxuIgorIiAgICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZFxuIgorIiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgZXhhbXBsZSxcbiIKKyIgICAgICAgICAgICAgICAgICAgICAlUEFUSCUpLlxuIgorIiAgICBSRUdfTElOSyAtLSBBIFVuaWNvZGUgc3ltYm9saWMgbGluay5cbiIKKyIgICAgUkVHX01VTFRJX1NaIC0tIEFuIHNlcXVlbmNlIG9mIG51bGwtdGVybWluYXRlZCBzdHJpbmdzLCB0ZXJtaW5hdGVkXG4iCisiICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzXG4iCisiICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCisiICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS5cbiIKKyIgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCisiICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCisiICB2YWx1ZVxuIgorIiAgICBBIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbmV3IHZhbHVlLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGNhbiBhbHNvIHNldCBhZGRpdGlvbmFsIHZhbHVlIGFuZCB0eXBlIGluZm9ybWF0aW9uIGZvciB0aGVcbiIKKyJzcGVjaWZpZWQga2V5LiAgVGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXkgcGFyYW1ldGVyIG11c3QgaGF2ZSBiZWVuXG4iCisib3BlbmVkIHdpdGggS0VZX1NFVF9WQUxVRSBhY2Nlc3MuXG4iCisiXG4iCisiVG8gb3BlbiB0aGUga2V5LCB1c2UgdGhlIENyZWF0ZUtleUV4KCkgb3IgT3BlbktleUV4KCkgbWV0aG9kcy5cbiIKKyJcbiIKKyJWYWx1ZSBsZW5ndGhzIGFyZSBsaW1pdGVkIGJ5IGF2YWlsYWJsZSBtZW1vcnkuIExvbmcgdmFsdWVzIChtb3JlIHRoYW5cbiIKKyIyMDQ4IGJ5dGVzKSBzaG91bGQgYmUgc3RvcmVkIGFzIGZpbGVzIHdpdGggdGhlIGZpbGVuYW1lcyBzdG9yZWQgaW5cbiIKKyJ0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeSB0byBoZWxwIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LiIpOworCisjZGVmaW5lIFdJTlJFR19TRVRWQUxVRUVYX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRWYWx1ZUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19TZXRWYWx1ZUV4LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19TZXRWYWx1ZUV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICp2YWx1ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzZXJ2ZWQsIERXT1JEIHR5cGUsIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWVFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICp2YWx1ZV9uYW1lOworICAgIFB5T2JqZWN0ICpyZXNlcnZlZDsKKyAgICBEV09SRCB0eXBlOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaT2tPOlNldFZhbHVlRXgiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZV9uYW1lLCAmcmVzZXJ2ZWQsICZ0eXBlLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgdmFsdWVfbmFtZSwgcmVzZXJ2ZWQsIHR5cGUsIHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X19kb2NfXywKKyJEaXNhYmxlUmVmbGVjdGlvbktleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEaXNhYmxlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciAzMmJpdCBwcm9jZXNzZXMgcnVubmluZyBvbiBhIDY0Yml0IE9TLlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLlxuIgorIlxuIgorIklmIHRoZSBrZXkgaXMgbm90IG9uIHRoZSByZWZsZWN0aW9uIGxpc3QsIHRoZSBmdW5jdGlvbiBzdWNjZWVkcyBidXQgaGFzXG4iCisibm8gZWZmZWN0LiAgRGlzYWJsaW5nIHJlZmxlY3Rpb24gZm9yIGEga2V5IGRvZXMgbm90IGFmZmVjdCByZWZsZWN0aW9uXG4iCisib2YgYW55IHN1YmtleXMuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RJU0FCTEVSRUZMRUNUSU9OS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJEaXNhYmxlUmVmbGVjdGlvbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXksIE1FVEhfTywgd2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RGlzYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9fZG9jX18sCisiRW5hYmxlUmVmbGVjdGlvbktleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXN0b3JlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGRpc2FibGVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiXG4iCisiV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMmJpdCBPUy5cbiIKKyJSZXN0b3JpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24gb2YgYW55XG4iCisic3Via2V5cy4iKTsKKworI2RlZmluZSBXSU5SRUdfRU5BQkxFUkVGTEVDVElPTktFWV9NRVRIT0RERUYgICAgXAorICAgIHsiRW5hYmxlUmVmbGVjdGlvbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleSwgTUVUSF9PLCB3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X19kb2NfXywKKyJRdWVyeVJlZmxlY3Rpb25LZXkoJG1vZHVsZSwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgcmVmbGVjdGlvbiBzdGF0ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkgYXMgYSBib29sLlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLiIpOworCisjZGVmaW5lIFdJTlJFR19RVUVSWVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IlF1ZXJ5UmVmbGVjdGlvbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5LCBNRVRIX08sIHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzFmNWJjMzBiNjQ2ODA3YiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2luc291bmQuYy5oIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2E1YTQyCi0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaApAQCAtMCwwICsxLDEwMCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX18sCisiUGxheVNvdW5kKCRtb2R1bGUsIHNvdW5kLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS5cbiIKKyJcbiIKKyIgIHNvdW5kXG4iCisiICAgIFRoZSBzb3VuZCB0byBwbGF5OyBhIGZpbGVuYW1lLCBkYXRhLCBvciBOb25lLlxuIgorIiAgZmxhZ3NcbiIKKyIgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uIik7CisKKyNkZWZpbmUgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRiAgICBcCisgICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9QbGF5U291bmQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqc291bmQ7CisgICAgaW50IGZsYWdzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaaTpQbGF5U291bmQiLAorICAgICAgICAmc291bmQsICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9QbGF5U291bmRfaW1wbChtb2R1bGUsIHNvdW5kLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnNvdW5kX0JlZXBfX2RvY19fLAorIkJlZXAoJG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuXG4iCisiXG4iCisiICBmcmVxdWVuY3lcbiIKKyIgICAgRnJlcXVlbmN5IG9mIHRoZSBzb3VuZCBpbiBoZXJ0ei5cbiIKKyIgICAgTXVzdCBiZSBpbiB0aGUgcmFuZ2UgMzcgdGhyb3VnaCAzMiw3NjcuXG4iCisiICBkdXJhdGlvblxuIgorIiAgICBIb3cgbG9uZyB0aGUgc291bmQgc2hvdWxkIHBsYXksIGluIG1pbGxpc2Vjb25kcy4iKTsKKworI2RlZmluZSBXSU5TT1VORF9CRUVQX01FVEhPRERFRiAgICBcCisgICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfVkFSQVJHUywgd2luc291bmRfQmVlcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2luc291bmRfQmVlcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9CZWVwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmcmVxdWVuY3k7CisgICAgaW50IGR1cmF0aW9uOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpCZWVwIiwKKyAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX0JlZXBfaW1wbChtb2R1bGUsIGZyZXF1ZW5jeSwgZHVyYXRpb24pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX18sCisiTWVzc2FnZUJlZXAoJG1vZHVsZSwgeD1NQl9PSywgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS5cbiIKKyJcbiIKKyJ4IGRlZmF1bHRzIHRvIE1CX09LLiIpOworCisjZGVmaW5lIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRiAgICBcCisgICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgeCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9NZXNzYWdlQmVlcChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgeCA9IE1CX09LOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpNZXNzYWdlQmVlcCIsCisgICAgICAgICZ4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB4KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1YjAxOGFjOWRjMWY1MDAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCA3MmM5MzgxLi42NmJmNDU4IDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMSw3ICsxLDcgQEAKIC8qIE1vZHVsZSBjb25maWd1cmF0aW9uICovCiAKIC8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgdGFibGUgb2YgYnVpbHQtaW4gbW9kdWxlcy4KLSAgIFNlZSBpbml0X2J1aWx0aW4oKSBpbiBpbXBvcnQuYy4gKi8KKyAgIFNlZSBjcmVhdGVfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKQEAgLTE5LDcgKzE5LDcgQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19tZDUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9udCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19vcGVyYXRvcih2b2lkKTsKLWV4dGVybiBQeU9iamVjdCogUHlJbml0X3NpZ25hbCh2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19zaWduYWwodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEyNTYodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhNTEyKHZvaWQpOwpAQCAtOTEsNyArOTEsNyBAQAogICAgIHsibWF0aCIsIFB5SW5pdF9tYXRofSwKICAgICB7Im50IiwgUHlJbml0X250fSwgLyogVXNlIHRoZSBOVCBvcyBmdW5jdGlvbnMsIG5vdCBwb3NpeCAqLwogICAgIHsiX29wZXJhdG9yIiwgUHlJbml0X19vcGVyYXRvcn0sCi0gICAgeyJzaWduYWwiLCBQeUluaXRfc2lnbmFsfSwKKyAgICB7Il9zaWduYWwiLCBQeUluaXRfX3NpZ25hbH0sCiAgICAgeyJfbWQ1IiwgUHlJbml0X19tZDV9LAogICAgIHsiX3NoYTEiLCBQeUluaXRfX3NoYTF9LAogICAgIHsiX3NoYTI1NiIsIFB5SW5pdF9fc2hhMjU2fSwKZGlmZiAtLWdpdCBhL1BDL2RsX250LmMgYi9QQy9kbF9udC5jCmluZGV4IGFlMTBmYjUuLmM4N2M1MWUgMTAwNjQ0Ci0tLSBhL1BDL2RsX250LmMKKysrIGIvUEMvZGxfbnQuYwpAQCAtMTIsNyArMTIsMTIgQEAKICNpbmNsdWRlICJ3aW5kb3dzLmgiCiAKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECisjaWZkZWYgTVNfRExMX0lECisvLyBUaGUgc3RyaW5nIGlzIGF2YWlsYWJsZSBhdCBidWlsZCwgc28gZmlsbCB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5CitjaGFyIGRsbFZlcnNpb25CdWZmZXJbMTZdID0gTVNfRExMX0lEOworI2Vsc2UKIGNoYXIgZGxsVmVyc2lvbkJ1ZmZlclsxNl0gPSAiIjsgLy8gYSBwcml2YXRlIGJ1ZmZlcgorI2VuZGlmCiAKIC8vIFB5dGhvbiBHbG9iYWxzCiBITU9EVUxFIFB5V2luX0RMTGhNb2R1bGUgPSBOVUxMOwpAQCAtODgsOCArOTMsMTEgQEAKICAgICB7CiAgICAgICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNIOgogICAgICAgICAgICAgUHlXaW5fRExMaE1vZHVsZSA9IGhJbnN0OworI2lmbmRlZiBNU19ETExfSUQKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgTVNfRExMX0lELCB3ZSBkb24ndCBuZWVkIHRvIGxvYWQgdGhlIHN0cmluZy4KICAgICAgICAgICAgIC8vIDEwMDAgaXMgYSBtYWdpYyBudW1iZXIgSSBwaWNrZWQgb3V0IG9mIHRoZSBhaXIuICBDb3VsZCBkbyB3aXRoIGEgI2RlZmluZSwgSSBzcG9zZS4uLgogICAgICAgICAgICAgTG9hZFN0cmluZyhoSW5zdCwgMTAwMCwgZGxsVmVyc2lvbkJ1ZmZlciwgc2l6ZW9mKGRsbFZlcnNpb25CdWZmZXIpKTsKKyNlbmRpZgogCiAjaWYgSEFWRV9TWFMKICAgICAgICAgICAgIC8vIGFuZCBjYXB0dXJlIG91ciBhY3RpdmF0aW9uIGNvbnRleHQgZm9yIHVzZSB3aGVuIGxvYWRpbmcgZXh0ZW5zaW9ucy4KZGlmZiAtLWdpdCBhL1BDL2dldHBhdGhwLmMgYi9QQy9nZXRwYXRocC5jCmluZGV4IGRlYjQwZTcuLjI1YjMyOGIgMTAwNjQ0Ci0tLSBhL1BDL2dldHBhdGhwLmMKKysrIGIvUEMvZ2V0cGF0aHAuYwpAQCAtMTEzLDcgKzExMywxMCBAQAogc3RhdGljIHZvaWQKIHJlZHVjZSh3Y2hhcl90ICpkaXIpCiB7Ci0gICAgc2l6ZV90IGkgPSB3Y3NsZW4oZGlyKTsKKyAgICBzaXplX3QgaSA9IHdjc25sZW5fcyhkaXIsIE1BWFBBVEhMRU4rMSk7CisgICAgaWYgKGkgPj0gTUFYUEFUSExFTisxKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIHJlZHVjZSgpIik7CisKICAgICB3aGlsZSAoaSA+IDAgJiYgIWlzX3NlcChkaXJbaV0pKQogICAgICAgICAtLWk7CiAgICAgZGlyW2ldID0gJ1wwJzsKQEAgLTEzMCwxNiArMTMzLDIzIEBACiAgICBtYXkgZXh0ZW5kICdmaWxlbmFtZScgYnkgb25lIGNoYXJhY3Rlci4KICovCiBzdGF0aWMgaW50Ci1pc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSkgICAgIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLworaXNtb2R1bGUod2NoYXJfdCAqZmlsZW5hbWUsIGludCB1cGRhdGVfZmlsZW5hbWUpIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLwogeworICAgIGludCBuOworCiAgICAgaWYgKGV4aXN0cyhmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogQ2hlY2sgZm9yIHRoZSBjb21waWxlZCB2ZXJzaW9uIG9mIHByZWZpeC4gKi8KLSAgICBpZiAod2NzbGVuKGZpbGVuYW1lKSA8IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgd2NzY2F0KGZpbGVuYW1lLCBQeV9PcHRpbWl6ZUZsYWcgPyBMIm8iIDogTCJjIik7Ci0gICAgICAgIGlmIChleGlzdHMoZmlsZW5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgbiA9IHdjc25sZW5fcyhmaWxlbmFtZSwgTUFYUEFUSExFTisxKTsKKyAgICBpZiAobiA8IE1BWFBBVEhMRU4pIHsKKyAgICAgICAgaW50IGV4aXN0ID0gMDsKKyAgICAgICAgZmlsZW5hbWVbbl0gPSBQeV9PcHRpbWl6ZUZsYWcgPyBMJ28nIDogTCdjJzsKKyAgICAgICAgZmlsZW5hbWVbbiArIDFdID0gTCdcMCc7CisgICAgICAgIGV4aXN0ID0gZXhpc3RzKGZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCF1cGRhdGVfZmlsZW5hbWUpCisgICAgICAgICAgICBmaWxlbmFtZVtuXSA9IEwnXDAnOworICAgICAgICByZXR1cm4gZXhpc3Q7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMTU0LDIzICsxNjQsMjMgQEAKICAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KICovCiBzdGF0aWMgdm9pZAotam9pbih3Y2hhcl90ICpidWZmZXIsIHdjaGFyX3QgKnN0dWZmKQoram9pbih3Y2hhcl90ICpidWZmZXIsIGNvbnN0IHdjaGFyX3QgKnN0dWZmKQogewotICAgIHNpemVfdCBuLCBrOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgbiA9IHdjc2xlbihidWZmZXIpOwotICAgICAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbi0xXSkgJiYgbiA8IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBidWZmZXJbbisrXSA9IFNFUDsKKyAgICBzaXplX3QgbjsKKyAgICBpZiAoaXNfc2VwKHN0dWZmWzBdKSB8fAorICAgICAgICAod2Nzbmxlbl9zKHN0dWZmLCA0KSA+PSAzICYmIHN0dWZmWzFdID09ICc6JyAmJiBpc19zZXAoc3R1ZmZbMl0pKSkgeworICAgICAgICBpZiAod2NzY3B5X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobiA+IE1BWFBBVEhMRU4pCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbnBhdGgoKSIpOwotICAgIGsgPSB3Y3NsZW4oc3R1ZmYpOwotICAgIGlmIChuICsgayA+IE1BWFBBVEhMRU4pCi0gICAgICAgIGsgPSBNQVhQQVRITEVOIC0gbjsKLSAgICB3Y3NuY3B5KGJ1ZmZlcituLCBzdHVmZiwgayk7Ci0gICAgYnVmZmVyW24ra10gPSAnXDAnOworCisgICAgbiA9IHdjc25sZW5fcyhidWZmZXIsIE1BWFBBVEhMRU4rMSk7CisgICAgaWYgKG4gPiAwICYmICFpc19zZXAoYnVmZmVyW24gLSAxXSkgJiYgbiA8IE1BWFBBVEhMRU4pIHsKKyAgICAgICAgYnVmZmVyW25dID0gU0VQOworICAgICAgICBidWZmZXJbbiArIDFdID0gJ1wwJzsKKyAgICB9CisgICAgaWYgKHdjc2NhdF9zKGJ1ZmZlciwgTUFYUEFUSExFTisxLCBzdHVmZikgIT0gMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKIH0KIAogLyogZ290bGFuZG1hcmsgb25seSBjYWxsZWQgYnkgc2VhcmNoX2Zvcl9wcmVmaXgsIHdoaWNoIGVuc3VyZXMKQEAgLTE4MSwxMSArMTkxLDEwIEBACiBnb3RsYW5kbWFyayh3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICBpbnQgb2s7Ci0gICAgUHlfc3NpemVfdCBuOworICAgIFB5X3NzaXplX3QgbiA9IHdjc25sZW5fcyhwcmVmaXgsIE1BWFBBVEhMRU4pOwogCi0gICAgbiA9IHdjc2xlbihwcmVmaXgpOwogICAgIGpvaW4ocHJlZml4LCBsYW5kbWFyayk7Ci0gICAgb2sgPSBpc21vZHVsZShwcmVmaXgpOworICAgIG9rID0gaXNtb2R1bGUocHJlZml4LCBGQUxTRSk7CiAgICAgcHJlZml4W25dID0gJ1wwJzsKICAgICByZXR1cm4gb2s7CiB9CkBAIC0xOTYsNyArMjA1LDcgQEAKIHNlYXJjaF9mb3JfcHJlZml4KHdjaGFyX3QgKmFyZ3YwX3BhdGgsIHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIC8qIFNlYXJjaCBmcm9tIGFyZ3YwX3BhdGgsIHVudGlsIGxhbmRtYXJrIGlzIGZvdW5kICovCi0gICAgd2NzY3B5KHByZWZpeCwgYXJndjBfcGF0aCk7CisgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOICsgMSwgYXJndjBfcGF0aCk7CiAgICAgZG8gewogICAgICAgICBpZiAoZ290bGFuZG1hcmsobGFuZG1hcmspKQogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0yMzYsNyArMjQ1LDcgQEAKICAgICBXQ0hBUiAqZGF0YUJ1ZiA9IE5VTEw7CiAgICAgc3RhdGljIGNvbnN0IFdDSEFSIGtleVByZWZpeFtdID0gTCJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFwiOwogICAgIHN0YXRpYyBjb25zdCBXQ0hBUiBrZXlTdWZmaXhbXSA9IEwiXFxQeXRob25QYXRoIjsKLSAgICBzaXplX3QgdmVyc2lvbkxlbjsKKyAgICBzaXplX3QgdmVyc2lvbkxlbiwga2V5QnVmTGVuOwogICAgIERXT1JEIGluZGV4OwogICAgIFdDSEFSICprZXlCdWYgPSBOVUxMOwogICAgIFdDSEFSICprZXlCdWZQdHI7CkBAIC0yNDUsMTIgKzI1NCwxMyBAQAogICAgIC8qIFRyaWVkIHRvIHVzZSBzeXNnZXQoIndpbnZlciIpIGJ1dCBoZXJlIGlzIHRvbyBlYXJseSA6LSggKi8KICAgICB2ZXJzaW9uTGVuID0gc3RybGVuKFB5V2luX0RMTFZlcnNpb25TdHJpbmcpOwogICAgIC8qIFNwYWNlIGZvciBhbGwgdGhlIGNoYXJzLCBwbHVzIG9uZSBcMCAqLwotICAgIGtleUJ1ZiA9IGtleUJ1ZlB0ciA9IFB5TWVtX1Jhd01hbGxvYyhzaXplb2Yoa2V5UHJlZml4KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihXQ0hBUikqKHZlcnNpb25MZW4tMSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5U3VmZml4KSk7CisgICAga2V5QnVmTGVuID0gc2l6ZW9mKGtleVByZWZpeCkgKworICAgICAgICAgICAgICAgIHNpemVvZihXQ0hBUikqKHZlcnNpb25MZW4tMSkgKworICAgICAgICAgICAgICAgIHNpemVvZihrZXlTdWZmaXgpOworICAgIGtleUJ1ZiA9IGtleUJ1ZlB0ciA9IFB5TWVtX1Jhd01hbGxvYyhrZXlCdWZMZW4pOwogICAgIGlmIChrZXlCdWY9PU5VTEwpIGdvdG8gZG9uZTsKIAotICAgIG1lbWNweShrZXlCdWZQdHIsIGtleVByZWZpeCwgc2l6ZW9mKGtleVByZWZpeCktc2l6ZW9mKFdDSEFSKSk7CisgICAgbWVtY3B5X3Moa2V5QnVmUHRyLCBrZXlCdWZMZW4sIGtleVByZWZpeCwgc2l6ZW9mKGtleVByZWZpeCktc2l6ZW9mKFdDSEFSKSk7CiAgICAga2V5QnVmUHRyICs9IFB5X0FSUkFZX0xFTkdUSChrZXlQcmVmaXgpIC0gMTsKICAgICBtYnN0b3djcyhrZXlCdWZQdHIsIFB5V2luX0RMTFZlcnNpb25TdHJpbmcsIHZlcnNpb25MZW4pOwogICAgIGtleUJ1ZlB0ciArPSB2ZXJzaW9uTGVuOwpAQCAtNDUxLDExICs0NjEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBidWZmZXIsIE1BWFBBVEhMRU4gKiAyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKICAgICAgICAgICAgIGlmIChrID49IDApIHsKLSAgICAgICAgICAgICAgICB3Y2hhcl90ICogdG9rID0gd2NzdG9rKHRtcGJ1ZmZlciwgTCIgXHRcclxuIik7CisgICAgICAgICAgICAgICAgd2NoYXJfdCAqIGNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2tfcyh0bXBidWZmZXIsIEwiIFx0XHJcbiIsICZjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywga2V5KSkgewotICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCIgXHQiKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rX3MoTlVMTCwgTCIgXHQiLCAmY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rX3MoTlVMTCwgTCJcclxuIiwgJmNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvayAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbmNweSh2YWx1ZSwgdG9rLCBNQVhQQVRITEVOKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwpAQCAtNDgzLDcgKzQ5NCw3IEBACiAgICAgd2NoYXJfdCAqbWFjaGluZXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKnVzZXJwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90IHppcF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBpbnQgYXBwbG9jYWwgPSAwOwogCiAgICAgaWYgKCFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcpIHsKICAgICAgICAgZW52cGF0aCA9IF93Z2V0ZW52KEwiUFlUSE9OUEFUSCIpOwpAQCAtNTAxLDcgKzUxMiw3IEBACiAKICAgICBnZXRfcHJvZ3BhdGgoKTsKICAgICAvKiBwcm9ncGF0aCBndWFyYW50ZWVkIFwwIHRlcm1pbmF0ZWQgaW4gTUFYUEFUSCsxIGJ5dGVzLiAqLwotICAgIHdjc2NweShhcmd2MF9wYXRoLCBwcm9ncGF0aCk7CisgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCiAgICAgLyogU2VhcmNoIGZvciBhbiBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZpbGUsIGZpcnN0IGluIHRoZQpAQCAtNTEwLDI3ICs1MjEsMzkgQEAKICAgICAqLwogCiAgICAgeworICAgICAgICB3Y2hhcl90IGVudmJ1ZmZlcltNQVhQQVRITEVOKzFdOwogICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKzFdOwotICAgICAgICB3Y2hhcl90ICplbnZfY2ZnID0gTCJweXZlbnYuY2ZnIjsKKyAgICAgICAgY29uc3Qgd2NoYXJfdCAqZW52X2NmZyA9IEwicHl2ZW52LmNmZyI7CiAgICAgICAgIEZJTEUgKiBlbnZfZmlsZSA9IE5VTEw7CiAKLSAgICAgICAgd2NzY3B5KHRtcGJ1ZmZlciwgYXJndjBfcGF0aCk7Ci0gICAgICAgIGpvaW4odG1wYnVmZmVyLCBlbnZfY2ZnKTsKLSAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgIHdjc2NweV9zKGVudmJ1ZmZlciwgTUFYUEFUSExFTisxLCBhcmd2MF9wYXRoKTsKKyAgICAgICAgam9pbihlbnZidWZmZXIsIGVudl9jZmcpOworICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4oZW52YnVmZmVyLCBMInIiKTsKICAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKICAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOwotICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7Ci0gICAgICAgICAgICBqb2luKHRtcGJ1ZmZlciwgZW52X2NmZyk7Ci0gICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIHJlZHVjZShlbnZidWZmZXIpOworICAgICAgICAgICAgcmVkdWNlKGVudmJ1ZmZlcik7CisgICAgICAgICAgICBqb2luKGVudmJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4oZW52YnVmZmVyLCBMInIiKTsKICAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhbiAnYXBwbG9jYWwnIHZhcmlhYmxlIGFuZCwgaWYgdHJ1ZSwgaWdub3JlIGFsbCByZWdpc3RyeQorICAgICAgICAgICAgICoga2V5cyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBidXQgcmV0YWluIHRoZSBkZWZhdWx0IHBhdGhzCisgICAgICAgICAgICAgKiAoRExMcywgTGliKSBhbmQgdGhlIHppcCBmaWxlLiBTZXR0aW5nIHB5dGhvbmhvbWUgaGVyZSBzdXBwcmVzc2VzCisgICAgICAgICAgICAgKiB0aGUgc2VhcmNoIGZvciBMQU5ETUFSSyBiZWxvdyBhbmQgb3ZlcnJpZGVzICVQWVRIT05IT01FJS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJhcHBsb2NhbCIsIHRtcGJ1ZmZlcikgJiYKKyAgICAgICAgICAgICAgICAoYXBwbG9jYWwgPSAod2NzaWNtcCh0bXBidWZmZXIsIEwidHJ1ZSIpID09IDApKSkgeworICAgICAgICAgICAgICAgIGVudnBhdGggPSBOVUxMOworICAgICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBhcmd2MF9wYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCiAgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7Ci0gICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCB0bXBidWZmZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZmNsb3NlKGVudl9maWxlKTsKICAgICAgICAgICAgIGVudl9maWxlID0gTlVMTDsKQEAgLTU0NCwzMyArNTY3LDMwIEBACiAgICAgICAgICAgICBweXRob25ob21lID0gTlVMTDsKICAgICB9CiAgICAgZWxzZQotICAgICAgICB3Y3NuY3B5KHByZWZpeCwgcHl0aG9uaG9tZSwgTUFYUEFUSExFTik7CisgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCBweXRob25ob21lKTsKIAogICAgIGlmIChlbnZwYXRoICYmICplbnZwYXRoID09ICdcMCcpCiAgICAgICAgIGVudnBhdGggPSBOVUxMOwogCiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggKi8KLSAgICBpZiAoZGxscGF0aFswXSkgICAgICAgICAgICAgLyogdXNlIG5hbWUgb2YgcHl0aG9uIERMTCAqLwotICAgICAgICB3Y3NuY3B5KHppcF9wYXRoLCBkbGxwYXRoLCBNQVhQQVRITEVOKTsKLSAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgLyogdXNlIG5hbWUgb2YgZXhlY3V0YWJsZSBwcm9ncmFtICovCi0gICAgICAgIHdjc25jcHkoemlwX3BhdGgsIHByb2dwYXRoLCBNQVhQQVRITEVOKTsKLSAgICB6aXBfcGF0aFtNQVhQQVRITEVOXSA9ICdcMCc7Ci0gICAgbGVuID0gd2NzbGVuKHppcF9wYXRoKTsKLSAgICBpZiAobGVuID4gNCkgewotICAgICAgICB6aXBfcGF0aFtsZW4tM10gPSAneic7ICAgICAgICAgIC8qIGNoYW5nZSBlbmRpbmcgdG8gInppcCIgKi8KLSAgICAgICAgemlwX3BhdGhbbGVuLTJdID0gJ2knOwotICAgICAgICB6aXBfcGF0aFtsZW4tMV0gPSAncCc7Ci0gICAgfQorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQorICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCisgICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKICAgICBlbHNlIHsKLSAgICAgICAgemlwX3BhdGhbMF0gPSAwOworICAgICAgICB3Y2hhcl90ICpkb3QgPSB3Y3NyY2hyKHppcF9wYXRoLCAnLicpOworICAgICAgICBpZiAoIWRvdCB8fCB3Y3NjcHlfcyhkb3QsIE1BWFBBVEhMRU4rMSAtIChkb3QgLSB6aXBfcGF0aCksIEwiLnppcCIpKQorICAgICAgICAgICAgLyogZXhjZWVkZWQgYnVmZmVyIGxlbmd0aCAtIGlnbm9yZSB6aXBfcGF0aCAqLworICAgICAgICAgICAgemlwX3BhdGhbMF0gPSBMJ1wwJzsKICAgICB9CiAKICAgICBza2lwaG9tZSA9IHB5dGhvbmhvbWU9PU5VTEwgPyAwIDogMTsKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECi0gICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOworICAgIGlmICghYXBwbG9jYWwpIHsKKyAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKKyAgICB9CiAjZW5kaWYKICAgICAvKiBXZSBvbmx5IHVzZSB0aGUgZGVmYXVsdCByZWxhdGl2ZSBQWVRIT05QQVRIIGlmIHdlIGhhdmVudAogICAgICAgIGFueXRoaW5nIGJldHRlciB0byB1c2UhICovCkBAIC01ODksNiArNjA5LDcgQEAKICAgICAgICBFeHRyYSBydWxlczoKICAgICAgICAtIElmIFBZVEhPTkhPTUUgaXMgc2V0IChpbiBhbnkgd2F5KSBpdGVtICgzKSBpcyBpZ25vcmVkLgogICAgICAgIC0gSWYgcmVnaXN0cnkgdmFsdWVzIGFyZSB1c2VkLCAoNCkgYW5kICg1KSBhcmUgaWdub3JlZC4KKyAgICAgICAtIElmIGFwcGxvY2FsIGlzIHNldCwgKDEpLCAoMyksIGFuZCByZWdpc3RyeSB2YWx1ZXMgYXJlIGlnbm9yZWQKICAgICAqLwogCiAgICAgLyogQ2FsY3VsYXRlIHNpemUgb2YgcmV0dXJuIGJ1ZmZlciAqLwpAQCAtNjA2LDkgKzYyNyw5IEBACiAgICAgYnVmc3ogKz0gd2NzbGVuKFBZVEhPTlBBVEgpICsgMTsKICAgICBidWZzeiArPSB3Y3NsZW4oYXJndjBfcGF0aCkgKyAxOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAodXNlcnBhdGgpCisgICAgaWYgKCFhcHBsb2NhbCAmJiB1c2VycGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKHVzZXJwYXRoKSArIDE7Ci0gICAgaWYgKG1hY2hpbmVwYXRoKQorICAgIGlmICghYXBwbG9jYWwgJiYgbWFjaGluZXBhdGgpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihtYWNoaW5lcGF0aCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbih6aXBfcGF0aCkgKyAxOwogI2VuZGlmCkBAIC02MzUsMzggKzY1Niw0NSBAQAogICAgIH0KIAogICAgIGlmIChlbnZwYXRoKSB7Ci0gICAgICAgIHdjc2NweShidWYsIGVudnBhdGgpOworICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCBlbnZwYXRoKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7Ci0gICAgICAgIHdjc2NweShidWYsIHppcF9wYXRoKTsKKyAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgemlwX3BhdGgpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQogICAgIGlmICh1c2VycGF0aCkgewotICAgICAgICB3Y3NjcHkoYnVmLCB1c2VycGF0aCk7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHVzZXJwYXRoKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKICAgICB9CiAgICAgaWYgKG1hY2hpbmVwYXRoKSB7Ci0gICAgICAgIHdjc2NweShidWYsIG1hY2hpbmVwYXRoKTsKKyAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgbWFjaGluZXBhdGgpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgIH0KICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghc2tpcGRlZmF1bHQpIHsKLSAgICAgICAgICAgIHdjc2NweShidWYsIFBZVEhPTlBBVEgpOworICAgICAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgUFlUSE9OUEFUSCkpCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CisgICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgfQogICAgIH0KICNlbHNlCiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCkgewogICAgICAgICB3Y3NjcHkoYnVmLCBQWVRIT05QQVRIKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOworICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIGVsc2UgewpAQCAtNjgwLDI1ICs3MDgsMjYgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuID0gcS1wOwogICAgICAgICAgICAgaWYgKHBbMF0gPT0gJy4nICYmIGlzX3NlcChwWzFdKSkgewotICAgICAgICAgICAgICAgIHdjc2NweShidWYsIHB5dGhvbmhvbWUpOworICAgICAgICAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHB5dGhvbmhvbWUpKQorICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICAgICAgICAgcCsrOwogICAgICAgICAgICAgICAgIG4tLTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdjc25jcHkoYnVmLCBwLCBuKTsKICAgICAgICAgICAgIGJ1ZiArPSBuOworICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgICAgICBpZiAocSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgICAgICBwID0gcSsxOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChhcmd2MF9wYXRoKSB7Ci0gICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICB3Y3NjcHkoYnVmLCBhcmd2MF9wYXRoKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOworICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9Ci0gICAgKmJ1ZiA9IEwnXDAnOworICAgICooYnVmIC0gMSkgPSBMJ1wwJzsKICAgICAvKiBOb3cgdG8gcHVsbCBvbmUgbGFzdCBoYWNrL3RyaWNrLiAgSWYgc3lzLnByZWZpeCBpcwogICAgICAgIGVtcHR5LCB0aGVuIHRyeSBhbmQgZmluZCBpdCBzb21ld2hlcmUgb24gdGhlIHBhdGhzCiAgICAgICAgd2UgY2FsY3VsYXRlZC4gIFdlIHNjYW4gYmFja3dhcmRzLCBhcyBvdXIgZ2VuZXJhbCBwb2xpY3kKZGlmZiAtLWdpdCBhL1BDL2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYyBiL1BDL2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjM0NzEwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jCkBAIC0wLDAgKzEsMjIgQEAKKyNpZmRlZiBfTVNDX1ZFUgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiBfTVNDX1ZFUiA+PSAxOTAwCisvKiBweWNvbmZpZy5oIHVzZXMgdGhpcyBmdW5jdGlvbiBpbiB0aGUgX1B5X0JFR0lOL0VORF9TVVBQUkVTU19JUEgKKyAqIG1hY3Jvcy4gSXQgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIHdoZW4gYnVpbGRpbmcgdXNpbmcgTVNWQworICogZWFybGllciB0aGFuIDE0LjAgKF9NU0NfVkVSID09IDE5MDApLgorICovCisKK3N0YXRpYyB2b2lkIF9fY2RlY2wgX3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKAorICAgIHdjaGFyX3QgY29uc3QqIGV4cHJlc3Npb24sCisgICAgd2NoYXJfdCBjb25zdCogZnVuY3Rpb24sCisgICAgd2NoYXJfdCBjb25zdCogZmlsZSwKKyAgICB1bnNpZ25lZCBpbnQgbGluZSwKKyAgICB1aW50cHRyX3QgcFJlc2VydmVkKSB7IH0KKworX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX1B5X3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyID0gX3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyOworCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCBmYTA4Njg0Li5mYWRhNGM5IDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTg3LDE2ICs4NywxNiBAQAogICAgIGlmIChyYyA9PSAwKSB7ICAvKiBhIFdpbmRvd3MgZXJyb3IgKi8KICAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIHdpbl9tZXNzYWdlLCBNU0dTSVpFKTsKICAgICAgICAgaWYgKGxlbiA+PSAwKSB7Ci0gICAgICAgICAgICBfc253cHJpbnRmX3MoJm1lc3NhZ2VbbGVuXSwgTVNHU0laRSAtIGxlbiwgX1RSVU5DQVRFLCBMIjogJXMiLAorICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZtZXNzYWdlW2xlbl0sIE1TR1NJWkUgLSBsZW4sIF9UUlVOQ0FURSwgTCI6ICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgd2luX21lc3NhZ2UpOwogICAgICAgICB9CiAgICAgfQogCiAjaWYgIWRlZmluZWQoX1dJTkRPV1MpCi0gICAgZndwcmludGYoc3RkZXJyLCBMIiVzXG4iLCBtZXNzYWdlKTsKKyAgICBmd3ByaW50ZihzdGRlcnIsIEwiJWxzXG4iLCBtZXNzYWdlKTsKICNlbHNlCiAgICAgTWVzc2FnZUJveChOVUxMLCBtZXNzYWdlLCBURVhUKCJQeXRob24gTGF1bmNoZXIgaXMgc29ycnkgdG8gc2F5IC4uLiIpLAotICAgICAgICAgICAgICAgTUJfT0spOyAKKyAgICAgICAgICAgICAgIE1CX09LKTsKICNlbmRpZgogICAgIEV4aXRQcm9jZXNzKHJjKTsKIH0KQEAgLTE1NywxNCArMTU3LDE5IEBACiAKIHN0YXRpYyBzaXplX3QgbnVtX2luc3RhbGxlZF9weXRob25zID0gMDsKIAotLyogdG8gaG9sZCBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVxYLllcSW5zdGFsbFBhdGggKi8KKy8qCisgKiBUbyBob2xkIFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXFguWS4uLlxJbnN0YWxsUGF0aAorICogVGhlIHZlcnNpb24gbmFtZSBjYW4gYmUgbG9uZ2VyIHRoYW4gTUFYX1ZFUlNJT05fU0laRSwgYnV0IHdpbGwgYmUKKyAqIHRydW5jYXRlZCB0byBqdXN0IFguWSBmb3IgY29tcGFyaXNvbnMuCisgKi8KICNkZWZpbmUgSVBfQkFTRV9TSVpFIDQwCi0jZGVmaW5lIElQX1NJWkUgKElQX0JBU0VfU0laRSArIE1BWF9WRVJTSU9OX1NJWkUpCisjZGVmaW5lIElQX1ZFUlNJT05fU0laRSA4CisjZGVmaW5lIElQX1NJWkUgKElQX0JBU0VfU0laRSArIElQX1ZFUlNJT05fU0laRSkKICNkZWZpbmUgQ09SRV9QQVRIIEwiU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZSIKIAogc3RhdGljIHdjaGFyX3QgKiBsb2NhdGlvbl9jaGVja3NbXSA9IHsKICAgICBMIlxcIiwKLSAgICBMIlxcUENCdWlsZFxcIiwKKyAgICBMIlxcUENCdWlsZFxcd2luMzJcXCIsCiAgICAgTCJcXFBDQnVpbGRcXGFtZDY0XFwiLAogICAgIE5VTEwKIH07CkBAIC0xOTYsMzUgKzIwMSwzOCBAQAogICAgIEJPT0wgb2s7CiAgICAgRFdPUkQgdHlwZSwgZGF0YV9zaXplLCBhdHRyczsKICAgICBJTlNUQUxMRURfUFlUSE9OICogaXAsICogcGlwOworICAgIHdjaGFyX3QgaXBfdmVyc2lvbltJUF9WRVJTSU9OX1NJWkVdOwogICAgIHdjaGFyX3QgaXBfcGF0aFtJUF9TSVpFXTsKICAgICB3Y2hhcl90ICogY2hlY2s7CiAgICAgd2NoYXJfdCAqKiBjaGVja3A7CiAgICAgd2NoYXJfdCAqa2V5X25hbWUgPSAocm9vdCA9PSBIS0VZX0xPQ0FMX01BQ0hJTkUpID8gTCJIS0xNIiA6IEwiSEtDVSI7CiAKICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJXNcbiIsCisgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJWxzXG4iLAogICAgICAgICAgICAgICBrZXlfbmFtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlwID0gJmluc3RhbGxlZF9weXRob25zW251bV9pbnN0YWxsZWRfcHl0aG9uc107CiAgICAgICAgIGZvciAoaSA9IDA7IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA8IE1BWF9JTlNUQUxMRURfUFlUSE9OUzsgaSsrKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBSZWdFbnVtS2V5Vyhjb3JlX3Jvb3QsIGksIGlwLT52ZXJzaW9uLCBNQVhfVkVSU0lPTl9TSVpFKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IFJlZ0VudW1LZXlXKGNvcmVfcm9vdCwgaSwgaXBfdmVyc2lvbiwgSVBfVkVSU0lPTl9TSVpFKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgewogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfTk9fTU9SRV9JVEVNUykgewogICAgICAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVycm9yICovCiAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiQ2FuJ3QgZW51bWVyYXRlIHJlZ2lzdHJ5IGtleSBmb3IgdmVyc2lvbiAlczogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJDYW4ndCBlbnVtZXJhdGUgcmVnaXN0cnkga2V5IGZvciB2ZXJzaW9uICVsczogJWxzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcF92ZXJzaW9uLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB3Y3NuY3B5X3MoaXAtPnZlcnNpb24sIE1BWF9WRVJTSU9OX1NJWkUsIGlwX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9WRVJTSU9OX1NJWkUtMSk7CiAgICAgICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGlwX3BhdGgsIElQX1NJWkUsIF9UUlVOQ0FURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlc1xcJXNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcC0+dmVyc2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJWxzXFwlbHNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcF92ZXJzaW9uKTsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBSZWdPcGVuS2V5RXhXKHJvb3QsIGlwX3BhdGgsIDAsIGZsYWdzLCAmaXBfa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogJ21lc3NhZ2UnIGFscmVhZHkgaGFzIGEgdHJhaWxpbmcgXG4KLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVsc1xcJWxzOiAlbHMiLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkYXRhX3NpemUgPSBzaXplb2YoaXAtPmV4ZWN1dGFibGUpIC0gMTsKQEAgLTIzMyw3ICsyNDEsNyBAQAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGlwX2tleSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJXNcXCVzOiAlc1xuIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVsc1xcJWxzOiAlbHNcbiIsIGtleV9uYW1lLCBpcF9wYXRoLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJFR19TWikgewpAQCAtMjQ2LDI3ICsyNTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIF9zbndwcmludGZfcygmaXAtPmV4ZWN1dGFibGVbZGF0YV9zaXplXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzJXMiLCBjaGVjaywgUFlUSE9OX0VYRUNVVEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJWxzJWxzIiwgY2hlY2ssIFBZVEhPTl9FWEVDVVRBQkxFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGlwLT5leGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHM6ICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cnMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICclcycgaXMgYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAnJWxzJyBpcyBhIFwKIGRpcmVjdG9yeVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmluZF9leGlzdGluZ19weXRob24oaXAtPmV4ZWN1dGFibGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogYWxyZWFkeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHM6IGFscmVhZHkgXAogZm91bmRcbiIsIGlwLT5leGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoZSBleGVjdXRhYmxlIHR5cGUuICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBHZXRCaW5hcnlUeXBlVyhpcC0+ZXhlY3V0YWJsZSwgJmF0dHJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiRmFpbHVyZSBnZXR0aW5nIGJpbmFyeSB0eXBlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJGYWlsdXJlIGdldHRpbmcgYmluYXJ5IHR5cGU6ICVsc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI3Nyw3ICsyODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcC0+Yml0cyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVsczogXAogaW52YWxpZCBiaW5hcnkgdHlwZTogJVhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yOTEsNyArMjk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMV0gPSBMJ1wiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMl0gPSBMJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHMgXAogaXMgYSAlZGJpdCBleGVjdXRhYmxlXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBpcC0+Yml0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK251bV9pbnN0YWxsZWRfcHl0aG9uczsKQEAgLTM0MSw3ICszNDksNyBAQAogICAgICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CiAgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CiAgICAgfQotI2VuZGlmICAgIAorI2VuZGlmCiAgICAgLy8gbm93IGhpdCB0aGUgIm5hdGl2ZSIga2V5IGZvciB0aGlzIHByb2Nlc3MgYml0dGVkbmVzcy4KICAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gbmF0aXZlIHJlZ2lzdHJ5XG4iKTsKICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCk7CkBAIC0zNzYsNiArMzg0LDMxIEBACiB9CiAKIAorc3RhdGljIHdjaGFyX3QgKgorZmluZF9weXRob25fYnlfdmVudigpCit7CisgICAgc3RhdGljIHdjaGFyX3QgdmVudl9weXRob25bTUFYX1BBVEhdOworICAgIHdjaGFyX3QgKnZpcnR1YWxfZW52ID0gZ2V0X2VudihMIlZJUlRVQUxfRU5WIik7CisgICAgRFdPUkQgYXR0cnM7CisKKyAgICAvKiBDaGVjayBmb3IgVklSVFVBTF9FTlYgZW52aXJvbm1lbnQgdmFyaWFibGUgKi8KKyAgICBpZiAodmlydHVhbF9lbnYgPT0gTlVMTCB8fCB2aXJ0dWFsX2VudlswXSA9PSBMJ1wwJykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3IgYSBweXRob24gZXhlY3V0YWJsZSBpbiB0aGUgdmVudiAqLworICAgIGRlYnVnKEwiQ2hlY2tpbmcgZm9yIFB5dGhvbiBleGVjdXRhYmxlIGluIHZpcnR1YWwgZW52ICclbHMnXG4iLCB2aXJ0dWFsX2Vudik7CisgICAgX3Nud3ByaW50Zl9zKHZlbnZfcHl0aG9uLCBNQVhfUEFUSCwgX1RSVU5DQVRFLAorICAgICAgICAgICAgTCIlbHNcXFNjcmlwdHNcXCVscyIsIHZpcnR1YWxfZW52LCBQWVRIT05fRVhFQ1VUQUJMRSk7CisgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1codmVudl9weXRob24pOworICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgeworICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBleGVjdXRhYmxlICVscyBtaXNzaW5nIGZyb20gdmlydHVhbCBlbnZcbiIsIHZlbnZfcHl0aG9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHZlbnZfcHl0aG9uOworfQorCiBzdGF0aWMgd2NoYXJfdCBhcHBkYXRhX2luaV9wYXRoW01BWF9QQVRIXTsKIHN0YXRpYyB3Y2hhcl90IGxhdW5jaGVyX2luaV9wYXRoW01BWF9QQVRIXTsKIApAQCAtMzk3LDcgKzQzMCw3IEBACiAgICAgRFdPUkQgc2l6ZTsKIAogICAgIC8qIEZpcnN0LCBzZWFyY2ggdGhlIGVudmlyb25tZW50LiAqLwotICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJXMiLCBrZXkpOworICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJWxzIiwga2V5KTsKICAgICByZXN1bHQgPSBnZXRfZW52KGNvbmZpZ3VyZWRfdmFsdWUpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiBhcHBkYXRhX2luaV9wYXRoWzBdKSB7CiAgICAgICAgIC8qIE5vdCBpbiBlbnZpcm9ubWVudDogY2hlY2sgbG9jYWwgY29uZmlndXJhdGlvbi4gKi8KQEAgLTQyMCwxMCArNDUzLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBkZWJ1ZyhMImZvdW5kIGNvbmZpZ3VyZWQgdmFsdWUgJyVzPSVzJyBpbiAlc1xuIiwKKyAgICAgICAgZGVidWcoTCJmb3VuZCBjb25maWd1cmVkIHZhbHVlICclbHM9JWxzJyBpbiAlbHNcbiIsCiAgICAgICAgICAgICAgIGtleSwgcmVzdWx0LCBmb3VuZF9pbiA/IGZvdW5kX2luIDogTCIodW5rbm93bikiKTsKICAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZyhMImZvdW5kIG5vIGNvbmZpZ3VyZWQgdmFsdWUgZm9yICclcydcbiIsIGtleSk7CisgICAgICAgIGRlYnVnKEwiZm91bmQgbm8gY29uZmlndXJlZCB2YWx1ZSBmb3IgJyVscydcbiIsIGtleSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00NDksOSArNDgyLDkgQEAKICAgICB9CiAgICAgaWYgKCp3YW50ZWRfdmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2FudGVkX3Zlcik7Ci0gICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBQeXRob24gdmVyc2lvbiAnJXMnIGZvdW5kICIsIHdhbnRlZF92ZXIpOworICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgUHl0aG9uIHZlcnNpb24gJyVscycgZm91bmQgIiwgd2FudGVkX3Zlcik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGRlYnVnKEwiJyVzJ1xuIiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIGRlYnVnKEwiJyVscydcbiIsIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKICAgICAgICAgfQpAQCAtNDY3LDcgKzUwMCw3IEBACiAgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMyIpOwogICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgZGVmYXVsdCBQeXRob24gZm91bmQgIik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGRlYnVnKEwidmVyc2lvbiAlcyBhdCAnJXMnXG4iLAorICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVscyBhdCAnJWxzJ1xuIiwKICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dmVyc2lvbiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRlYnVnKEwibm8gaW50ZXJwcmV0ZXJcbiIpOwpAQCAtNTA1LDE5ICs1MzgsMTkgQEAKICAgICBwbGVuID0gR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIHdyYXBwZWRfc2NyaXB0X3BhdGgsIE1BWF9QQVRIKTsKICAgICBwID0gd2NzcmNocih3cmFwcGVkX3NjcmlwdF9wYXRoLCBMJy4nKTsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBleHRlbnNpb246ICVzXG4iLAorICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gZXh0ZW5zaW9uOiAlbHNcbiIsCiAgICAgICAgICAgICAgIHdyYXBwZWRfc2NyaXB0X3BhdGgpOwotICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiV3JhcHBlciBuYW1lICclcycgaXMgbm90IHZhbGlkLiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiV3JhcHBlciBuYW1lICclbHMnIGlzIG5vdCB2YWxpZC4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICB9CiAKICAgICB3Y3NuY3B5X3MocCwgTUFYX1BBVEggLSAocCAtIHdyYXBwZWRfc2NyaXB0X3BhdGgpICsgMSwgU0NSSVBUX1NVRkZJWCwgX1RSVU5DQVRFKTsKICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKLSAgICAgICAgZXJyb3IoUkNfTk9fU0NSSVBULCBMIlNjcmlwdCBmaWxlICclcycgaXMgbm90IHByZXNlbnQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGRlYnVnKEwiRmlsZSAnJWxzJyBub24tZXhpc3RlbnRcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiU2NyaXB0IGZpbGUgJyVscycgaXMgbm90IHByZXNlbnQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiAgICAgfQogCi0gICAgZGVidWcoTCJVc2luZyB3cmFwcGVkIHNjcmlwdCBmaWxlICclcydcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgIGRlYnVnKEwiVXNpbmcgd3JhcHBlZCBzY3JpcHQgZmlsZSAnJWxzJ1xuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiB9CiAjZW5kaWYKIApAQCAtNTcxLDcgKzYwNCw3IEBACiAgICAgLy8gd2luZG93LCBvciBmZXRjaGluZyBhIG1lc3NhZ2UpLiAgQXMgdGhpcyBsYXVuY2hlciBkb2Vzbid0IGRvIHRoaXMKICAgICAvLyBkaXJlY3RseSwgdGhhdCBjdXJzb3IgcmVtYWlucyBldmVuIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgdGhlc2UKICAgICAvLyB0aGluZ3MuICBXZSBhdm9pZCB0aGF0IGJ5IGRvaW5nIGEgc2ltcGxlIHBvc3QrZ2V0IG1lc3NhZ2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQgCisgICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQKICAgICAvLyBodHRwczovL2JpdGJ1Y2tldC5vcmcvdmluYXkuc2FqaXAvcHlsYXVuY2hlci9pc3N1ZS8yMC9idXN5LWN1cnNvci1mb3ItYS1sb25nLXRpbWUtd2hlbi1ydW5uaW5nCiAgICAgTVNHIG1zZzsKIApAQCAtNTc5LDcgKzYxMiw3IEBACiAgICAgR2V0TWVzc2FnZSgmbXNnLCAwLCAwLCAwKTsKICNlbmRpZgogCi0gICAgZGVidWcoTCJydW5fY2hpbGQ6IGFib3V0IHRvIHJ1biAnJXMnXG4iLCBjbWRsaW5lKTsKKyAgICBkZWJ1ZyhMInJ1bl9jaGlsZDogYWJvdXQgdG8gcnVuICclbHMnXG4iLCBjbWRsaW5lKTsKICAgICBqb2IgPSBDcmVhdGVKb2JPYmplY3QoTlVMTCwgTlVMTCk7CiAgICAgb2sgPSBRdWVyeUluZm9ybWF0aW9uSm9iT2JqZWN0KGpvYiwgSm9iT2JqZWN0RXh0ZW5kZWRMaW1pdEluZm9ybWF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLCBzaXplb2YoaW5mbyksICZyYyk7CkBAIC02MTEsNyArNjQ0LDcgQEAKICAgICBvayA9IENyZWF0ZVByb2Nlc3NXKE5VTEwsIGNtZGxpbmUsIE5VTEwsIE5VTEwsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMLCAmc2ksICZwaSk7CiAgICAgaWYgKCFvaykKLSAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclcyciLCBjbWRsaW5lKTsKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclbHMnIiwgY21kbGluZSk7CiAgICAgQXNzaWduUHJvY2Vzc1RvSm9iT2JqZWN0KGpvYiwgcGkuaFByb2Nlc3MpOwogICAgIENsb3NlSGFuZGxlKHBpLmhUaHJlYWQpOwogICAgIFdhaXRGb3JTaW5nbGVPYmplY3RFeChwaS5oUHJvY2VzcywgSU5GSU5JVEUsIEZBTFNFKTsKQEAgLTY0OCwxMSArNjgxLDExIEBACiAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUpOwogICAgICAgICBpZiAobm9fc3VmZml4KQogICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVscyAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIGNtZGxpbmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBfc253cHJpbnRmX3MoY2hpbGRfY29tbWFuZCwgY2hpbGRfY29tbWFuZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJXMgJXMgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJWxzICVscyAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIHN1ZmZpeCwgY21kbGluZSk7CiAgICAgICAgIHJ1bl9jaGlsZChjaGlsZF9jb21tYW5kKTsKICAgICAgICAgZnJlZShjaGlsZF9jb21tYW5kKTsKQEAgLTc5MSw3ICs4MjQsNyBAQAogYWRkX2NvbW1hbmQod2NoYXJfdCAqIG5hbWUsIHdjaGFyX3QgKiBjbWRsaW5lKQogewogICAgIGlmIChudW1fY29tbWFuZHMgPj0gTUFYX0NPTU1BTkRTKSB7Ci0gICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVzID0gJyVzJzogbm8gcm9vbVxuIiwgbmFtZSwgY21kbGluZSk7CisgICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVscyA9ICclbHMnOiBubyByb29tXG4iLCBuYW1lLCBjbWRsaW5lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIENPTU1BTkQgKiBjcCA9ICZjb21tYW5kc1tudW1fY29tbWFuZHMrK107CkBAIC04MTMsMTQgKzg0NiwxNCBAQAogICAgIHJlYWQgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJjb21tYW5kcyIsIE5VTEwsIE5VTEwsIGtleW5hbWVzLCBNU0dTSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOwogICAgIGlmIChyZWFkID09IE1TR1NJWkUgLSAxKSB7Ci0gICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJXM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yIG5hbWVzXG4iLCBjb25maWdfcGF0aCk7CisgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJWxzOiBub3QgZW5vdWdoIHNwYWNlIGZvciBuYW1lc1xuIiwgY29uZmlnX3BhdGgpOwogICAgIH0KICAgICBrZXkgPSBrZXluYW1lczsKICAgICB3aGlsZSAoKmtleSkgewogICAgICAgICByZWFkID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiY29tbWFuZHMiLCBrZXksIE5VTEwsIHZhbHVlLCBNU0dTSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOwogICAgICAgICBpZiAocmVhZCA9PSBNU0dTSVpFIC0gMSkgewotICAgICAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgJXNcbiIsCisgICAgICAgICAgICBkZWJ1ZyhMInJlYWRfY29tbWFuZHM6ICVsczogbm90IGVub3VnaCBzcGFjZSBmb3IgJWxzXG4iLAogICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgsIGtleSk7CiAgICAgICAgIH0KICAgICAgICAgY21kcCA9IHNraXBfd2hpdGVzcGFjZSh2YWx1ZSk7CkBAIC0xMDk3LDcgKzExMzAsNyBAQAogICAgICAgICBpZiAoKHJlYWQgPj0gNCkgJiYgKGJ1ZmZlclszXSA9PSAnXG4nKSAmJiAoYnVmZmVyWzJdID09ICdccicpKSB7CiAgICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKGJ1ZmZlclsxXSA8PCA4IHwgYnVmZmVyWzBdKSAmIDB4RkZGRik7CiAgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJXNcbiIsCisgICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlbHNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24pOwogICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY21kbGluZSk7CiAgICAgICAgICAgICB9CkBAIC0xMjAwLDcgKzEyMzMsNyBAQAogICAgICAgICAgICAgICAgIGlzX3ZpcnQgPSBwYXJzZV9zaGViYW5nKHNoZWJhbmdfbGluZSwgbmNoYXJzLCAmY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4LCAmc2VhcmNoKTsKICAgICAgICAgICAgICAgICBpZiAoY29tbWFuZCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwicGFyc2Vfc2hlYmFuZzogZm91bmQgY29tbWFuZDogJXNcbiIsIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMInBhcnNlX3NoZWJhbmc6IGZvdW5kIGNvbW1hbmQ6ICVsc1xuIiwgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfdmlydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGNvbW1hbmQsIHN1ZmZpeCwgY21kbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMTIsNyArMTI0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2NzbmNtcChjb21tYW5kLCBMInB5dGhvbiIsIDYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX0JBRF9WSVJUVUFMX1BBVEgsIEwiVW5rbm93biB2aXJ0dWFsIFwKLXBhdGggJyVzJyIsIGNvbW1hbmQpOworcGF0aCAnJWxzJyIsIGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCArPSA2OyAgIC8qIHNraXAgcGFzdCAicHl0aG9uIiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaCAmJiAoKCpjb21tYW5kID09IEwnXDAnKSB8fCBpc3NwYWNlKCpjb21tYW5kKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb21tYW5kIGlzIGVsaWdpYmxlIGZvciBwYXRoIHNlYXJjaCwgYW5kIHRoZXJlCkBAIC0xMjIwLDkgKzEyNTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwic2VhcmNoaW5nIFBBVEggZm9yIHB5dGhvbiBleGVjdXRhYmxlXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSBmaW5kX29uX3BhdGgoTCJweXRob24iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBvbiBwYXRoOiAlc1xuIiwgY21kID8gY21kLT52YWx1ZSA6IEwiPG5vdCBmb3VuZD4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBvbiBwYXRoOiAlbHNcbiIsIGNtZCA/IGNtZC0+dmFsdWUgOiBMIjxub3QgZm91bmQ+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZWQgcHl0aG9uIG9uIFBBVEg6ICVzXG4iLCBjbWQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVkIHB5dGhvbiBvbiBQQVRIOiAlbHNcbiIsIGNtZC0+dmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoY21kLT52YWx1ZSwgc3VmZml4LCBjbWRsaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRXhpdCBoZXJlLCBhcyB3ZSBoYXZlIGZvdW5kIHRoZSBjb21tYW5kICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMzMsMTQgKzEyNjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqY29tbWFuZCAmJiAhdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIkludmFsaWQgdmVyc2lvbiBcCi1zcGVjaWZpY2F0aW9uOiAnJXMnLlxuSW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNjcmlwdCwgJ3B5dGhvbicgbmVlZHMgdG8gYmUgXAorc3BlY2lmaWNhdGlvbjogJyVscycuXG5JbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2NyaXB0LCAncHl0aG9uJyBuZWVkcyB0byBiZSBcCiBmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKLSglcykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOworKCVscykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBzdWZmaXgsIGNtZGxpbmUpOwpAQCAtMTMwMSw2ICsxMzM0LDcgQEAKIHsKICAgICB3Y2hhcl90ICogd3A7CiAgICAgd2NoYXJfdCAqIGNvbW1hbmQ7CisgICAgd2NoYXJfdCAqIGV4ZWN1dGFibGU7CiAgICAgd2NoYXJfdCAqIHA7CiAgICAgaW50IHJjID0gMDsKICAgICBzaXplX3QgcGxlbjsKQEAgLTEzNDcsMTcgKzEzODEsMTcgQEAKICAgICAgICAgd2NzbmNweV9zKHAsIE1BWF9QQVRIIC0gcGxlbiwgTCJcXHB5LmluaSIsIF9UUlVOQ0FURSk7CiAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGFwcGRhdGFfaW5pX3BhdGgpOwogICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVscycgbm9uLWV4aXN0ZW50XG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKICAgICAgICAgICAgIGFwcGRhdGFfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlICclcydcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICAgICAgZGVidWcoTCJVc2luZyBsb2NhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVscydcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOwogICAgICAgICB9CiAgICAgfQogICAgIHBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZVcoTlVMTCwgbGF1bmNoZXJfaW5pX3BhdGgsIE1BWF9QQVRIKTsKICAgICBzaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcobGF1bmNoZXJfaW5pX3BhdGgsICZzaXplKTsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgZGVidWcoTCJHZXRGaWxlVmVyc2lvbkluZm9TaXplIGZhaWxlZDogJXNcbiIsIG1lc3NhZ2UpOworICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mb1NpemUgZmFpbGVkOiAlbHNcbiIsIG1lc3NhZ2UpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgdmVyc2lvbl9kYXRhID0gbWFsbG9jKHNpemUpOwpAQCAtMTM4MSw3ICsxNDE1LDcgQEAKICAgICB9CiAgICAgcCA9IHdjc3JjaHIobGF1bmNoZXJfaW5pX3BhdGgsIEwnXFwnKTsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBiYWNrc2xhc2g6ICVzXG4iLAorICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gYmFja3NsYXNoOiAlbHNcbiIsCiAgICAgICAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoKTsKICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKICAgICB9CkBAIC0xMzkwLDE1ICsxNDI0LDE1IEBACiAgICAgICAgICAgICAgICAgICBfVFJVTkNBVEUpOwogICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhsYXVuY2hlcl9pbmlfcGF0aCk7CiAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVscycgbm9uLWV4aXN0ZW50XG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CiAgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aFswXSA9IEwnXDAnOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGVidWcoTCJVc2luZyBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlICclcydcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJWxzJ1xuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgY29tbWFuZCA9IHNraXBfbWUoR2V0Q29tbWFuZExpbmVXKCkpOwotICAgIGRlYnVnKEwiQ2FsbGVkIHdpdGggY29tbWFuZCBsaW5lOiAlc1xuIiwgY29tbWFuZCk7CisgICAgZGVidWcoTCJDYWxsZWQgd2l0aCBjb21tYW5kIGxpbmU6ICVsc1xuIiwgY29tbWFuZCk7CiAKICNpZiBkZWZpbmVkKFNDUklQVF9XUkFQUEVSKQogICAgIC8qIFRoZSBsYXVuY2hlciBpcyBiZWluZyB1c2VkIGluICJzY3JpcHQgd3JhcHBlciIgbW9kZS4KQEAgLTE0MjIsNyArMTQ1Niw3IEBACiAgICAgICAgIHdjc2NweV9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiAgICAgICAgIHdjc2NhdF9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgTCIgIik7CiAgICAgICAgIHdjc2NhdF9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgY29tbWFuZCk7Ci0gICAgICAgIGRlYnVnKEwiUnVubmluZyB3cmFwcGVkIHNjcmlwdCB3aXRoIGNvbW1hbmQgbGluZSAnJXMnXG4iLCBuZXdjb21tYW5kKTsKKyAgICAgICAgZGVidWcoTCJSdW5uaW5nIHdyYXBwZWQgc2NyaXB0IHdpdGggY29tbWFuZCBsaW5lICclbHMnXG4iLCBuZXdjb21tYW5kKTsKICAgICAgICAgcmVhZF9jb21tYW5kcygpOwogICAgICAgICBhdlswXSA9IHdyYXBwZWRfc2NyaXB0X3BhdGg7CiAgICAgICAgIGF2WzFdID0gTlVMTDsKQEAgLTE0NDMsOCArMTQ3Nyw5IEBACiAgICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gKCVzKSBub3QgXAorICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gKCVscykgbm90IFwKIGluc3RhbGxlZCIsICZwWzFdKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBpcC0+ZXhlY3V0YWJsZTsKICAgICAgICAgICAgIGNvbW1hbmQgKz0gd2NzbGVuKHApOwogICAgICAgICAgICAgY29tbWFuZCA9IHNraXBfd2hpdGVzcGFjZShjb21tYW5kKTsKICAgICAgICAgfQpAQCAtMTQ2Miw5ICsxNDk3LDE2IEBACiAjZW5kaWYKIAogICAgIGlmICghdmFsaWQpIHsKLSAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIik7Ci0gICAgICAgIGlmIChpcCA9PSBOVUxMKQotICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIkNhbid0IGZpbmQgYSBkZWZhdWx0IFB5dGhvbi4iKTsKKyAgICAgICAgLyogTG9vayBmb3IgYW4gYWN0aXZlIHZpcnR1YWxlbnYgKi8KKyAgICAgICAgZXhlY3V0YWJsZSA9IGZpbmRfcHl0aG9uX2J5X3ZlbnYoKTsKKworICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgZmluZCBvbmUsIGxvb2sgZm9yIHRoZSBkZWZhdWx0IFB5dGhvbiAqLworICAgICAgICBpZiAoZXhlY3V0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CisgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CisgICAgICAgIH0KICAgICAgICAgaWYgKChhcmdjID09IDIpICYmICghX3djc2ljbXAocCwgTCItaCIpIHx8ICFfd2NzaWNtcChwLCBMIi0taGVscCIpKSkgewogI2lmIGRlZmluZWQoX01fWDY0KQogICAgICAgICAgICAgQk9PTCBjYW5EbzY0Yml0ID0gVFJVRTsKQEAgLTE0NzYsOSArMTUxOCw5IEBACiAKICAgICAgICAgICAgIGdldF92ZXJzaW9uX2luZm8odmVyc2lvbl90ZXh0LCBNQVhfUEFUSCk7CiAgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAotUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIFZlcnNpb24gJXNcblxuIiwgdmVyc2lvbl90ZXh0KTsKK1B5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBWZXJzaW9uICVsc1xuXG4iLCB2ZXJzaW9uX3RleHQpOwogICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKLXVzYWdlOiAlcyBbIGxhdW5jaGVyLWFyZ3VtZW50cyBdIFsgcHl0aG9uLWFyZ3VtZW50cyBdIHNjcmlwdCBbIHNjcmlwdC1hcmd1bWVudHMgXVxuXG4iLCBhcmd2WzBdKTsKK3VzYWdlOiAlbHMgWyBsYXVuY2hlci1hcmd1bWVudHMgXSBbIHB5dGhvbi1hcmd1bWVudHMgXSBzY3JpcHQgWyBzY3JpcHQtYXJndW1lbnRzIF1cblxuIiwgYXJndlswXSk7CiAgICAgICAgICAgICBmcHV0d3MoTCJcCiBMYXVuY2hlciBhcmd1bWVudHM6XG5cblwKIC0yICAgICA6IExhdW5jaCB0aGUgbGF0ZXN0IFB5dGhvbiAyLnggdmVyc2lvblxuXApAQCAtMTQ5Miw3ICsxNTM0LDcgQEAKICAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgICB9CiAgICAgfQotICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY29tbWFuZCk7CisgICAgaW52b2tlX2NoaWxkKGV4ZWN1dGFibGUsIE5VTEwsIGNvbW1hbmQpOwogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCAxOGRlYzZkLi41MmQ0MTAwIDEwMDY0NAotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMzIsNDIxICszMiw0NTEgQEAKICNlbmRpZgogI2VuZGlmCiAKLS8vIEZvcmNlIHRoZSBtYWxsb2MgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAsIGFuZCBmcmVlIHVudXNlZCBibG9ja3MKLS8vIGJhY2sgdG8gdGhlIE9TLiAgKEFjY29yZGluZyB0byB0aGUgZG9jcywgb25seSB3b3JrcyBvbiBOVC4pCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2hlYXBtaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmhlYXBtaW4iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltweXRob24gaW5wdXRdCitjbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICBmb3JtYXRfdW5pdCA9ICciX1B5X1BBUlNFX0lOVFBUUiInCiAKK2NsYXNzIGhhbmRsZV9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICBjYXN0ID0gJyh2b2lkICopJworICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21Wb2lkUHRyJworCitjbGFzcyBieXRlX2NoYXJfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludCcKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBkYXRhLmRlY2xhcmF0aW9ucy5hcHBlbmQoJ2NoYXIgc1sxXTsnKQorICAgICAgICBkYXRhLnJldHVybl92YWx1ZSA9ICdzWzBdJworICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpO1xuJykKKworY2xhc3Mgd2NoYXJfdF9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnd2NoYXJfdCcKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCisgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpO1xuJykKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhNTRmYzRlNzNkMGIzNjddKi8KKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIG1zdmNydAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjMxYTg3YTc4M2QwMzZjZF0qLworCisjaW5jbHVkZSAiY2xpbmljL21zdmNydG1vZHVsZS5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5oZWFwbWluCisKK01pbmltaXplIHRoZSBtYWxsb2MoKSBoZWFwLgorCitGb3JjZSB0aGUgbWFsbG9jKCkgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIHJldHVybiB1bnVzZWQgYmxvY2tzCit0byB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgT1NFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9oZWFwbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NjRmODY2ZmViNTdjNDM2IGlucHV0PTgyZTE3NzFkMjFiZGUyZDhdKi8KK3sKICAgICBpZiAoX2hlYXBtaW4oKSAhPSAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmxvY2tpbmcKIAotUHlEb2NfU1RSVkFSKGhlYXBtaW5fZG9jLAotImhlYXBtaW4oKSAtPiBOb25lXG5cCi1cblwKLUZvcmNlIHRoZSBtYWxsb2MoKSBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3NcblwKLXRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyBJT0Vycm9yLiIpOworICAgIGZkOiBpbnQKKyAgICBtb2RlOiBpbnQKKyAgICBuYnl0ZXM6IGxvbmcKKyAgICAvCiAKLS8vIFBlcmZvcm0gbG9ja2luZyBvcGVyYXRpb25zIG9uIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvci4KK0xvY2sgcGFydCBvZiBhIGZpbGUgYmFzZWQgb24gZmlsZSBkZXNjcmlwdG9yIGZkIGZyb20gdGhlIEMgcnVudGltZS4KKworUmFpc2VzIElPRXJyb3Igb24gZmFpbHVyZS4gVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tCit0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGZvciBuYnl0ZXMgYnl0ZXMsIGFuZCBtYXkgY29udGludWUgYmV5b25kCit0aGUgZW5kIG9mIHRoZSBmaWxlLiBtb2RlIG11c3QgYmUgb25lIG9mIHRoZSBMS18qIGNvbnN0YW50cyBsaXN0ZWQKK2JlbG93LiBNdWx0aXBsZSByZWdpb25zIGluIGEgZmlsZSBtYXkgYmUgbG9ja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dAorbWF5IG5vdCBvdmVybGFwLiBBZGphY2VudCByZWdpb25zIGFyZSBub3QgbWVyZ2VkOyB0aGV5IG11c3QgYmUgdW5sb2NrZWQKK2luZGl2aWR1YWxseS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9sb2NraW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF9sb2NraW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgbW9kZSwgbG9uZyBuYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGZmNDFlNWU3NmQ1NDRkZSBpbnB1dD1kOWYxM2YwZjZhNzEzYmE3XSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBtb2RlOwotICAgIGxvbmcgbmJ5dGVzOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwgJmZkLCAmbW9kZSwgJm5ieXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGVyciA9IF9sb2NraW5nKGZkLCBtb2RlLCBuYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIobG9ja2luZ19kb2MsCi0ibG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKSAtPiBOb25lXG5cCi1cblwKLUxvY2sgcGFydCBvZiBhIGZpbGUgYmFzZWQgb24gZmlsZSBkZXNjcmlwdG9yIGZkIGZyb20gdGhlIEMgcnVudGltZS5cblwKLVJhaXNlcyBJT0Vycm9yIG9uIGZhaWx1cmUuIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbVxuXAotdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBmb3IgbmJ5dGVzIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZFxuXAotdGhlIGVuZCBvZiB0aGUgZmlsZS4gbW9kZSBtdXN0IGJlIG9uZSBvZiB0aGUgTEtfKiBjb25zdGFudHMgbGlzdGVkXG5cCi1iZWxvdy4gTXVsdGlwbGUgcmVnaW9ucyBpbiBhIGZpbGUgbWF5IGJlIGxvY2tlZCBhdCB0aGUgc2FtZSB0aW1lLCBidXRcblwKLW1heSBub3Qgb3ZlcmxhcC4gQWRqYWNlbnQgcmVnaW9ucyBhcmUgbm90IG1lcmdlZDsgdGhleSBtdXN0IGJlIHVubG9ja2VkXG5cCi1pbmRpdmlkdWFsbHkuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuc2V0bW9kZSAtPiBsb25nCiAKLS8vIFNldCB0aGUgZmlsZSB0cmFuc2xhdGlvbiBtb2RlIGZvciBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IuCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3NldG1vZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICBtb2RlIGFzIGZsYWdzOiBpbnQKKyAgICAvCisKK1NldCB0aGUgbGluZS1lbmQgdHJhbnNsYXRpb24gbW9kZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworVG8gc2V0IGl0IHRvIHRleHQgbW9kZSwgZmxhZ3Mgc2hvdWxkIGJlIG9zLk9fVEVYVDsgZm9yIGJpbmFyeSwgaXQKK3Nob3VsZCBiZSBvcy5PX0JJTkFSWS4KKworUmV0dXJuIHZhbHVlIGlzIHRoZSBwcmV2aW91cyBtb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldG1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04Yzg0ZTViMzdjNTg2ZDBkIGlucHV0PTc2ZTdjMDFmNmIxMzdmNzVdKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgaW50IGZsYWdzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTpzZXRtb2RlIiwgJmZkLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGZsYWdzID0gX3NldG1vZGUoZmQsIGZsYWdzKTsKICAgICBpZiAoZmxhZ3MgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZmxhZ3MpOworICAgIHJldHVybiBmbGFnczsKIH0KIAotUHlEb2NfU1RSVkFSKHNldG1vZGVfZG9jLAotInNldG1vZGUoZmQsIG1vZGUpIC0+IFByZXZpb3VzIG1vZGVcblwKLVxuXAotU2V0IHRoZSBsaW5lLWVuZCB0cmFuc2xhdGlvbiBtb2RlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLiBUbyBzZXRcblwKLWl0IHRvIHRleHQgbW9kZSwgZmxhZ3Mgc2hvdWxkIGJlIG9zLk9fVEVYVDsgZm9yIGJpbmFyeSwgaXQgc2hvdWxkIGJlXG5cCi1vcy5PX0JJTkFSWS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5vcGVuX29zZmhhbmRsZSAtPiBsb25nCiAKLS8vIENvbnZlcnQgYW4gT1MgZmlsZSBoYW5kbGUgdG8gYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yLgotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9vcGVuX29zZmhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGZsYWdzOiBpbnQKKyAgICAvCisKK0NyZWF0ZSBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgZmlsZSBoYW5kbGUgaGFuZGxlLgorCitUaGUgZmxhZ3MgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGJpdHdpc2UgT1Igb2Ygb3MuT19BUFBFTkQsIG9zLk9fUkRPTkxZLAorYW5kIG9zLk9fVEVYVC4gVGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCBhcyBhIHBhcmFtZXRlcgordG8gb3MuZmRvcGVuKCkgdG8gY3JlYXRlIGEgZmlsZSBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODZiY2UzMjU4MmM0OWMwNiBpbnB1dD00ZDg1MTZlZDMyZGI4ZjY1XSovCiB7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOwotICAgIGludCBmbGFnczsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX0lOVFBUUiAiaTpvcGVuX29zZmhhbmRsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZmQgPSBfb3Blbl9vc2ZoYW5kbGUoaGFuZGxlLCBmbGFncyk7CiAgICAgaWYgKGZkID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGZkKTsKKyAgICByZXR1cm4gZmQ7CiB9CiAKLVB5RG9jX1NUUlZBUihvcGVuX29zZmhhbmRsZV9kb2MsCi0ib3Blbl9vc2ZoYW5kbGUoaGFuZGxlLCBmbGFncykgLT4gZmlsZSBkZXNjcmlwdG9yXG5cCi1cblwKLUNyZWF0ZSBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgZmlsZSBoYW5kbGUgaGFuZGxlLiBUaGVcblwKLWZsYWdzIHBhcmFtZXRlciBzaG91bGQgYmUgYSBiaXR3aXNlIE9SIG9mIG9zLk9fQVBQRU5ELCBvcy5PX1JET05MWSxcblwKLWFuZCBvcy5PX1RFWFQuIFRoZSByZXR1cm5lZCBmaWxlIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXJcblwKLXRvIG9zLmZkb3BlbigpIHRvIGNyZWF0ZSBhIGZpbGUgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmdldF9vc2ZoYW5kbGUgLT4gaGFuZGxlCiAKLS8vIENvbnZlcnQgYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yIHRvIGFuIE9TIGZpbGUgaGFuZGxlLgotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXRfb3NmaGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBmZDogaW50CisgICAgLworCitSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgorCitSYWlzZXMgSU9FcnJvciBpZiBmZCBpcyBub3QgcmVjb2duaXplZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X2ludHB0cl90Cittc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNzZiZmY1MjU4NmI1NWE2IGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIFB5X2ludHB0cl90IGhhbmRsZSA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgfQorICAgIGVsc2UgeworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIGlmIChoYW5kbGUgPT0gLTEpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgfQogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotCi0gICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0KLSAgICAvKiB0ZWNobmljYWxseSAnaGFuZGxlJyBpcyBub3QgYSBwb2ludGVyLCBidXQgYSBpbnRlZ2VyIGFzCi0gICAgICAgbGFyZ2UgYXMgYSBwb2ludGVyLCBQeXRob24ncyAqVm9pZFB0ciBpbnRlcmZhY2UgaXMgdGhlCi0gICAgICAgbW9zdCBhcHByb3ByaWF0ZSBoZXJlICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCopaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCi1QeURvY19TVFJWQVIoZ2V0X29zZmhhbmRsZV9kb2MsCi0iZ2V0X29zZmhhbmRsZShmZCkgLT4gZmlsZSBoYW5kbGVcblwKLVxuXAotUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gUmFpc2VzIElPRXJyb3JcblwKLWlmIGZkIGlzIG5vdCByZWNvZ25pemVkLiIpOwotCiAvKiBDb25zb2xlIEkvTyAqLworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmtiaGl0IC0+IGxvbmcKIAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9rYmhpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitSZXR1cm4gdHJ1ZSBpZiBhIGtleXByZXNzIGlzIHdhaXRpbmcgdG8gYmUgcmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9rYmhpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmI3MjkzZmNiZTVjYjI0ZSBpbnB1dD1lNzBkNjc4YTVjMmY2YWNjXSovCiB7Ci0gICAgaW50IG9rOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6a2JoaXQiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBvayA9IF9rYmhpdCgpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob2spOworICAgIHJldHVybiBfa2JoaXQoKTsKIH0KIAotUHlEb2NfU1RSVkFSKGtiaGl0X2RvYywKLSJrYmhpdCgpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHRydWUgaWYgYSBrZXlwcmVzcyBpcyB3YWl0aW5nIHRvIGJlIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0Y2ggLT4gYnl0ZV9jaGFyCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmVhZCBhIGtleXByZXNzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIgYXMgYSBieXRlIHN0cmluZy4KKworTm90aGluZyBpcyBlY2hvZWQgdG8gdGhlIGNvbnNvbGUuIFRoaXMgY2FsbCB3aWxsIGJsb2NrIGlmIGEga2V5cHJlc3MgaXMKK25vdCBhbHJlYWR5IGF2YWlsYWJsZSwgYnV0IHdpbGwgbm90IHdhaXQgZm9yIEVudGVyIHRvIGJlIHByZXNzZWQuIElmIHRoZQorcHJlc3NlZCBrZXkgd2FzIGEgc3BlY2lhbCBmdW5jdGlvbiBrZXksIHRoaXMgd2lsbCByZXR1cm4gJ1wwMDAnIG9yCisnXHhlMCc7IHRoZSBuZXh0IGNhbGwgd2lsbCByZXR1cm4gdGhlIGtleWNvZGUuIFRoZSBDb250cm9sLUMga2V5cHJlc3MKK2Nhbm5vdCBiZSByZWFkIHdpdGggdGhpcyBmdW5jdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTllM2Q4OWY0OWMxNjZhIGlucHV0PTM3YTQwY2YwZWQwZDExNTNdKi8KIHsKICAgICBpbnQgY2g7Ci0gICAgY2hhciBzWzFdOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0Y2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0Y2goKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHNbMF0gPSBjaDsKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCAxKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXRjaF9kb2MsCi0iZ2V0Y2goKSAtPiBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVJlYWQgYSBrZXlwcmVzcyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyIGFzIGEgYnl0ZSBzdHJpbmcuXG5cCi1Ob3RoaW5nIGlzIGVjaG9lZCB0byB0aGUgY29uc29sZS4gVGhpcyBjYWxsIHdpbGwgYmxvY2sgaWYgYSBrZXlwcmVzcyBpc1xuXAotbm90IGFscmVhZHkgYXZhaWxhYmxlLCBidXQgd2lsbCBub3Qgd2FpdCBmb3IgRW50ZXIgdG8gYmUgcHJlc3NlZC4gSWYgdGhlXG5cCi1wcmVzc2VkIGtleSB3YXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGtleSwgdGhpcyB3aWxsIHJldHVybiAnXFwwMDAnIG9yXG5cCi0nXFx4ZTAnOyB0aGUgbmV4dCBjYWxsIHdpbGwgcmV0dXJuIHRoZSBrZXljb2RlLiBUaGUgQ29udHJvbC1DIGtleXByZXNzXG5cCi1jYW5ub3QgYmUgcmVhZCB3aXRoIHRoaXMgZnVuY3Rpb24uIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0d2NoIC0+IHdjaGFyX3QKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXR3Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2goKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlkMzc2Mjg2MTMyOGIxZmUgaW5wdXQ9MjdiM2RlYzhhZDgyM2Q3Y10qLwogewogICAgIHdjaGFyX3QgY2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXR3Y2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0d2NoKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXR3Y2hfZG9jLAotImdldHdjaCgpIC0+IFVuaWNvZGUga2V5IGNoYXJhY3RlclxuXAotXG5cCi1XaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaCgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLiIpOwotI2VuZGlmCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0Y2hlIC0+IGJ5dGVfY2hhcgogCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2dldGNoZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitTaW1pbGFyIHRvIGdldGNoKCksIGJ1dCB0aGUga2V5cHJlc3Mgd2lsbCBiZSBlY2hvZWQgaWYgcG9zc2libGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK21zdmNydF9nZXRjaGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThhYTM2OWJlNjU1MDA2OGUgaW5wdXQ9NDMzMTFhZGU5ZWQ0YTljMF0qLwogewogICAgIGludCBjaDsKLSAgICBjaGFyIHNbMV07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXRjaGUiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0Y2hlKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBzWzBdID0gY2g7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgMSk7CisgICAgcmV0dXJuIGNoOwogfQogCi1QeURvY19TVFJWQVIoZ2V0Y2hlX2RvYywKLSJnZXRjaGUoKSAtPiBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVNpbWlsYXIgdG8gZ2V0Y2goKSwgYnV0IHRoZSBrZXlwcmVzcyB3aWxsIGJlIGVjaG9lZCBpZiBpdCByZXByZXNlbnRzXG5cCi1hIHByaW50YWJsZSBjaGFyYWN0ZXIuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0d2NoZSAtPiB3Y2hhcl90CiAKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0d2NoZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitXaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaGUoKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjkzY2Y3OGUzZWEwY2Y2IGlucHV0PTQ5MzM3ZDU5ZDFhNTkxZjhdKi8KIHsKICAgICB3Y2hhcl90IGNoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0d2NoZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2hlKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXR3Y2hlX2RvYywKLSJnZXR3Y2hlKCkgLT4gVW5pY29kZSBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoZSgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLiIpOwotI2VuZGlmCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQucHV0Y2gKKworICAgIGNoYXI6IGNoYXIKKyAgICAvCisKK1ByaW50IHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIHRoZSBjb25zb2xlIHdpdGhvdXQgYnVmZmVyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3B1dGNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF9wdXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNoYXIgY2hhcl92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMDU1NDhiMTE1NTRmMzZmIGlucHV0PWVjMDc4ZGQxMGNiMDU0ZDZdKi8KIHsKLSAgICBjaGFyIGNoOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJjOnB1dGNoIiwgJmNoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBfcHV0Y2goY2gpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBfcHV0Y2goY2hhcl92YWx1ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwdXRjaF9kb2MsCi0icHV0Y2goY2hhcikgLT4gTm9uZVxuXAotXG5cCi1QcmludCB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byB0aGUgY29uc29sZSB3aXRob3V0IGJ1ZmZlcmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5wdXR3Y2gKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAorICAgIHVuaWNvZGVfY2hhcjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1dpZGUgY2hhciB2YXJpYW50IG9mIHB1dGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfcHV0d2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF9wdXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMyMTZhNzM2OTRjYTczZGQgaW5wdXQ9OTk2Y2NkMGJiY2JhYzRjM10qLwogewotICAgIGludCBjaDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQzpwdXR3Y2giLCAmY2gpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIF9wdXR3Y2goY2gpOworICAgIF9wdXR3Y2godW5pY29kZV9jaGFyKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogfQogCi1QeURvY19TVFJWQVIocHV0d2NoX2RvYywKLSJwdXR3Y2godW5pY29kZV9jaGFyKSAtPiBOb25lXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIHB1dGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuIik7Ci0jZW5kaWYKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC51bmdldGNoCisKKyAgICBjaGFyOiBjaGFyCisgICAgLworCitPcHBvc2l0ZSBvZiBnZXRjaC4KKworQ2F1c2UgdGhlIGJ5dGUgc3RyaW5nIGNoYXIgdG8gYmUgInB1c2hlZCBiYWNrIiBpbnRvIHRoZQorY29uc29sZSBidWZmZXI7IGl0IHdpbGwgYmUgdGhlIG5leHQgY2hhcmFjdGVyIHJlYWQgYnkKK2dldGNoKCkgb3IgZ2V0Y2hlKCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfdW5nZXRjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfdW5nZXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNoYXIgY2hhcl92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOWE0Y2QzMjQ5NzA5ZWM5IGlucHV0PTIyZjA3ZWU5MDAxYmJmMGZdKi8KIHsKLSAgICBjaGFyIGNoOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJjOnVuZ2V0Y2giLCAmY2gpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChfdW5nZXRjaChjaCkgPT0gRU9GKQorICAgIGlmIChfdW5nZXRjaChjaGFyX3ZhbHVlKSA9PSBFT0YpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIodW5nZXRjaF9kb2MsCi0idW5nZXRjaChjaGFyKSAtPiBOb25lXG5cCi1cblwKLUNhdXNlIHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIGJlIFwicHVzaGVkIGJhY2tcIiBpbnRvIHRoZVxuXAotY29uc29sZSBidWZmZXI7IGl0IHdpbGwgYmUgdGhlIG5leHQgY2hhcmFjdGVyIHJlYWQgYnlcblwKLWdldGNoKCkgb3IgZ2V0Y2hlKCkuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQudW5nZXR3Y2gKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAorICAgIHVuaWNvZGVfY2hhcjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1dpZGUgY2hhciB2YXJpYW50IG9mIHVuZ2V0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF91bmdldHdjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfdW5nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFlZTc2NzQ3MTAzMjJiZDEgaW5wdXQ9ODNlYzA0OTJiZTA0ZDU2NF0qLwogewotICAgIGludCBjaDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQzp1bmdldHdjaCIsICZjaCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF91bmdldHdjaChjaCkgPT0gV0VPRikKKyAgICBpZiAoX3VuZ2V0d2NoKHVuaWNvZGVfY2hhcikgPT0gV0VPRikKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0KLVB5RG9jX1NUUlZBUih1bmdldHdjaF9kb2MsCi0idW5nZXR3Y2godW5pY29kZV9jaGFyKSAtPiBOb25lXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIHVuZ2V0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKLSNlbmRpZgotCi1zdGF0aWMgdm9pZAotaW5zZXJ0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsKLSAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIERvbid0IGJvdGhlciByZXBvcnRpbmcgdGhpcyBlcnJvciAqLwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgbmFtZSwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKICNpZmRlZiBfREVCVUcKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5DcnRTZXRSZXBvcnRGaWxlIC0+IGxvbmcKIAotc3RhdGljIFB5T2JqZWN0KgotbXN2Y3J0X3NldHJlcG9ydGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHR5cGU6IGludAorICAgIGZpbGU6IGludAorICAgIC8KKworV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydEZpbGUuCisKK09ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9DcnRTZXRSZXBvcnRGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHR5cGUsIGludCBmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjMzY0NGZiMmVkZmE4MDggaW5wdXQ9YmI4ZjcyMWE2MDRmY2M0NV0qLwogewotICAgIGludCB0eXBlLCBmaWxlOwotICAgIF9IRklMRSByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJnR5cGUsICZmaWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gX0NydFNldFJlcG9ydEZpbGUodHlwZSwgKF9IRklMRSlmaWxlKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXJlcyk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiAobG9uZylfQ3J0U2V0UmVwb3J0RmlsZSh0eXBlLCAoX0hGSUxFKWZpbGUpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tc3ZjcnRfc2V0cmVwb3J0bW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZSAtPiBsb25nCisKKyAgICB0eXBlOiBpbnQKKyAgICBtb2RlOiBpbnQKKyAgICAvCisKK1dyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRNb2RlLgorCitPbmx5IGF2YWlsYWJsZSBvbiBEZWJ1ZyBidWlsZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDA3ZmJmODcxNmE1MmI5IGlucHV0PTkzMTlkMjliNDMxOTQyNmJdKi8KIHsKLSAgICBpbnQgdHlwZSwgbW9kZTsKICAgICBpbnQgcmVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ0eXBlLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IF9DcnRTZXRSZXBvcnRNb2RlKHR5cGUsIG1vZGUpOwogICAgIGlmIChyZXMgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbXN2Y3J0X3NldGVycm9ybW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IG1vZGUsIHJlczsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5zZXRfZXJyb3JfbW9kZSAtPiBsb25nCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IF9zZXRfZXJyb3JfbW9kZShtb2RlKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJlcyk7CisgICAgbW9kZTogaW50CisgICAgLworCitXcmFwcGVyIGFyb3VuZCBfc2V0X2Vycm9yX21vZGUuCisKK09ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYyMTQ4YWRmZmE5MDg2N2QgaW5wdXQ9MDQ2ZmNhNTljMGYyMDg3Ml0qLworeworICAgIHJldHVybiBfc2V0X2Vycm9yX21vZGUobW9kZSk7CiB9CisjZW5kaWYgLyogX0RFQlVHICovCiAKLSNlbmRpZgorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LlNldEVycm9yTW9kZQogCi1zdGF0aWMgUHlPYmplY3QqCi1zZXRlcnJvcm1vZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIG1vZGU6IHVuc2lnbmVkX2ludChiaXR3aXNlPVRydWUpCisgICAgLworCitXcmFwcGVyIGFyb3VuZCBTZXRFcnJvck1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdW5zaWduZWQgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ0YzYwYjA4NWJlNzljNiBpbnB1dD1kOGIxNjcyNThkMzJkOTA3XSovCiB7Ci0gICAgdW5zaWduZWQgaW50IG1vZGUsIHJlczsKKyAgICB1bnNpZ25lZCBpbnQgcmVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJIiwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBTZXRFcnJvck1vZGUobW9kZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlcyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWRhMzlhM2VlNWU2YjRiMGRdKi8KIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbXN2Y3J0X2Z1bmN0aW9uc1tdID0gewotICAgIHsiaGVhcG1pbiIsICAgICAgICAgICAgICAgICBtc3ZjcnRfaGVhcG1pbiwgTUVUSF9WQVJBUkdTLCBoZWFwbWluX2RvY30sCi0gICAgeyJsb2NraW5nIiwgICAgICAgICAgICAgbXN2Y3J0X2xvY2tpbmcsIE1FVEhfVkFSQVJHUywgbG9ja2luZ19kb2N9LAotICAgIHsic2V0bW9kZSIsICAgICAgICAgICAgICAgICBtc3ZjcnRfc2V0bW9kZSwgTUVUSF9WQVJBUkdTLCBzZXRtb2RlX2RvY30sCi0gICAgeyJvcGVuX29zZmhhbmRsZSIsICAgICAgICAgIG1zdmNydF9vcGVuX29zZmhhbmRsZSwgTUVUSF9WQVJBUkdTLCBvcGVuX29zZmhhbmRsZV9kb2N9LAotICAgIHsiZ2V0X29zZmhhbmRsZSIsICAgICAgICAgICBtc3ZjcnRfZ2V0X29zZmhhbmRsZSwgTUVUSF9WQVJBUkdTLCBnZXRfb3NmaGFuZGxlX2RvY30sCi0gICAgeyJrYmhpdCIsICAgICAgICAgICAgICAgICAgIG1zdmNydF9rYmhpdCwgTUVUSF9WQVJBUkdTLCBrYmhpdF9kb2N9LAotICAgIHsiZ2V0Y2giLCAgICAgICAgICAgICAgICAgICBtc3ZjcnRfZ2V0Y2gsIE1FVEhfVkFSQVJHUywgZ2V0Y2hfZG9jfSwKLSAgICB7ImdldGNoZSIsICAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldGNoZSwgTUVUSF9WQVJBUkdTLCBnZXRjaGVfZG9jfSwKLSAgICB7InB1dGNoIiwgICAgICAgICAgICAgICAgICAgbXN2Y3J0X3B1dGNoLCBNRVRIX1ZBUkFSR1MsIHB1dGNoX2RvY30sCi0gICAgeyJ1bmdldGNoIiwgICAgICAgICAgICAgICAgIG1zdmNydF91bmdldGNoLCBNRVRIX1ZBUkFSR1MsIHVuZ2V0Y2hfZG9jfSwKLSAgICB7IlNldEVycm9yTW9kZSIsICAgICAgICAgICAgc2V0ZXJyb3Jtb2RlLCBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIF9ERUJVRwotICAgIHsiQ3J0U2V0UmVwb3J0RmlsZSIsICAgICAgICBtc3ZjcnRfc2V0cmVwb3J0ZmlsZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7IkNydFNldFJlcG9ydE1vZGUiLCAgICAgICAgbXN2Y3J0X3NldHJlcG9ydG1vZGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzZXRfZXJyb3JfbW9kZSIsICAgICAgICAgIG1zdmNydF9zZXRlcnJvcm1vZGUsIE1FVEhfVkFSQVJHU30sCi0jZW5kaWYKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKLSAgICB7ImdldHdjaCIsICAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldHdjaCwgTUVUSF9WQVJBUkdTLCBnZXR3Y2hfZG9jfSwKLSAgICB7ImdldHdjaGUiLCAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldHdjaGUsIE1FVEhfVkFSQVJHUywgZ2V0d2NoZV9kb2N9LAotICAgIHsicHV0d2NoIiwgICAgICAgICAgICAgICAgICBtc3ZjcnRfcHV0d2NoLCBNRVRIX1ZBUkFSR1MsIHB1dHdjaF9kb2N9LAotICAgIHsidW5nZXR3Y2giLCAgICAgICAgICAgICAgICBtc3ZjcnRfdW5nZXR3Y2gsIE1FVEhfVkFSQVJHUywgdW5nZXR3Y2hfZG9jfSwKLSNlbmRpZgorICAgIE1TVkNSVF9IRUFQTUlOX01FVEhPRERFRgorICAgIE1TVkNSVF9MT0NLSU5HX01FVEhPRERFRgorICAgIE1TVkNSVF9TRVRNT0RFX01FVEhPRERFRgorICAgIE1TVkNSVF9PUEVOX09TRkhBTkRMRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfR0VUX09TRkhBTkRMRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfS0JISVRfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVENIX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRDSEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX1BVVENIX01FVEhPRERFRgorICAgIE1TVkNSVF9VTkdFVENIX01FVEhPRERFRgorICAgIE1TVkNSVF9TRVRFUlJPUk1PREVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0NSVFNFVFJFUE9SVEZJTEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0NSVFNFVFJFUE9SVE1PREVfTUVUSE9EREVGCisgICAgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRXQ0hfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVFdDSEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX1BVVFdDSF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfVU5HRVRXQ0hfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9CiB9OwogCkBAIC00NjMsNiArNDkzLDIwIEBACiAgICAgTlVMTAogfTsKIAorc3RhdGljIHZvaWQKK2luc2VydGludChQeU9iamVjdCAqZCwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQoreworICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7CisgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICAvKiBEb24ndCBib3RoZXIgcmVwb3J0aW5nIHRoaXMgZXJyb3IgKi8KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgfQorfQorCiBQeU1PRElOSVRfRlVOQwogUHlJbml0X21zdmNydCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggZTFjMTk4OC4uZDQ0MTczYSAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0xNDUsMTggKzE0NSwyNCBAQAogI2lmIGRlZmluZWQoX01fSUE2NCkKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjY0IGJpdCAoSXRhbml1bSkiKQogI2RlZmluZSBNU19XSU5JNjQKKyNkZWZpbmUgUFlEX1BMQVRGT1JNX1RBRyAid2luX2lhNjQiCiAjZWxpZiBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfTV9BTUQ2NCkKKyNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisjZGVmaW5lIENPTVBJTEVSICgiW0lDQyB2LiIgX1B5X1NUUklOR0laRShfX0lOVEVMX0NPTVBJTEVSKSAiIDY0IGJpdCAoYW1kNjQpIHdpdGggTVNDIHYuIiBfUHlfU1RSSU5HSVpFKF9NU0NfVkVSKSAiIENSVF0iKQorI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjY0IGJpdCAoQU1ENjQpIikKKyNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCiAjZGVmaW5lIE1TX1dJTlg2NAorI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW5fYW1kNjQiCiAjZWxzZQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiNjQgYml0IChVbmtub3duKSIpCiAjZW5kaWYKICNlbmRpZiAvKiBNU19XSU42NCAqLwogCiAvKiBzZXQgdGhlIHZlcnNpb24gbWFjcm9zIGZvciB0aGUgd2luZG93cyBoZWFkZXJzICovCi0vKiBQeXRob24gMy40KyByZXF1aXJlcyBXaW5kb3dzIFhQIG9yIGdyZWF0ZXIgKi8KLSNkZWZpbmUgUHlfV0lOVkVSIDB4MDUwMSAvKiBfV0lOMzJfV0lOTlRfV0lOWFAgKi8KLSNkZWZpbmUgUHlfTlREREkgTlRERElfV0lOWFAKKy8qIFB5dGhvbiAzLjUrIHJlcXVpcmVzIFdpbmRvd3MgVmlzdGEgb3IgZ3JlYXRlciAqLworI2RlZmluZSBQeV9XSU5WRVIgMHgwNjAwIC8qIF9XSU4zMl9XSU5OVF9WSVNUQSAqLworI2RlZmluZSBQeV9OVERESSBOVERESV9WSVNUQQogCiAvKiBXZSBvbmx5IHNldCB0aGVzZSB2YWx1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gLSB3ZSBkb24ndCB3YW50IHRvIGZvcmNlCiAgICB0aGVzZSB2YWx1ZXMgb24gZXh0ZW5zaW9ucywgYXMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgcHJvdG90eXBlcyBhbmQKQEAgLTE5Miw5ICsxOTgsMTUgQEAKIAogI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQogI2lmIGRlZmluZWQoX01fSVg4NikKKyNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisjZGVmaW5lIENPTVBJTEVSICgiW0lDQyB2LiIgX1B5X1NUUklOR0laRShfX0lOVEVMX0NPTVBJTEVSKSAiIDMyIGJpdCAoSW50ZWwpIHdpdGggTVNDIHYuIiBfUHlfU1RSSU5HSVpFKF9NU0NfVkVSKSAiIENSVF0iKQorI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjMyIGJpdCAoSW50ZWwpIikKKyNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCisjZGVmaW5lIFBZRF9QTEFURk9STV9UQUcgIndpbjMyIgogI2VsaWYgZGVmaW5lZChfTV9BUk0pCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCIzMiBiaXQgKEFSTSkiKQorI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW5fYXJtIgogI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjMyIGJpdCAoVW5rbm93bikiKQogI2VuZGlmCkBAIC0yMTMsNiArMjI1LDEzIEBACiAjZGVmaW5lIGh5cG90IF9oeXBvdAogI2VuZGlmCiAKKy8qIFZTIDIwMTUgZGVmaW5lcyB0aGVzZSBuYW1lcyB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlICovCisjaWYgX01TQ19WRVIgPj0gMTkwMAorI2RlZmluZSB0aW1lem9uZSBfdGltZXpvbmUKKyNkZWZpbmUgZGF5bGlnaHQgX2RheWxpZ2h0CisjZGVmaW5lIHR6bmFtZSBfdHpuYW1lCisjZW5kaWYKKwogLyogU2lkZSBieSBTaWRlIGFzc2VtYmxpZXMgc3VwcG9ydGVkIGluIFZTIDIwMDUgYW5kIFZTIDIwMDggYnV0IG5vdCAyMDEwKi8KICNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTYwMAogI2RlZmluZSBIQVZFX1NYUyAxCkBAIC0yMjcsMzUgKzI0Niw2IEBACiAjZW5kaWYgLyogX01TQ19WRVIgKi8KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIFRoZSBCb3JsYW5kIGNvbXBpbGVyIGRlZmluZXMgX19CT1JMQU5EQ19fICovCi0vKiBYWFggVGhlc2UgZGVmaW5lcyBhcmUgbGlrZWx5IGluY29tcGxldGUsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBmaXguICovCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIENPTVBJTEVSICJbQm9ybGFuZF0iCi0KLSNpZmRlZiBfV0lOMzIKLS8qIHRlc3RlZCB3aXRoIEJDQyA1LjUgKF9fQk9STEFORENfXyA+PSAweDA1NTApCi0gKi8KLQotdHlwZWRlZiBpbnQgcGlkX3Q7Ci0vKiBCQ0M1NSBzZWVtcyB0byB1bmRlcnN0YW5kIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSwgaXQgaXMgdXNlZCBpbiBpdHMKLSAgIG93biBoZWFkZXIgZmlsZXMgKHdpbm50LmgsIC4uLikgLSBzbyB3ZSBjYW4gZG8gbm90aGluZyBhbmQgZ2V0IHRoZSBkZWZhdWx0Ki8KLQotI3VuZGVmIEhBVkVfU1lTX1VUSU1FX0gKLSNkZWZpbmUgSEFWRV9VVElNRV9ICi0jZGVmaW5lIEhBVkVfRElSRU5UX0gKLQotLyogcmVuYW1lIGEgZmV3IGZ1bmN0aW9ucyBmb3IgdGhlIEJvcmxhbmQgY29tcGlsZXIgKi8KLSNpbmNsdWRlIDxpby5oPgotI2RlZmluZSBfY2hzaXplIGNoc2l6ZQotI2RlZmluZSBfc2V0bW9kZSBzZXRtb2RlCi0KLSNlbHNlIC8qICFfV0lOMzIgKi8KLSNlcnJvciAiT25seSBXaW4zMiBhbmQgbGF0ZXIgYXJlIHN1cHBvcnRlZCIKLSNlbmRpZiAvKiAhX1dJTjMyICovCi0KLSNlbmRpZiAvKiBCT1JMQU5EQyAqLwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogZWdjcy9nbnUtd2luMzIgZGVmaW5lcyBfX0dOVUNfXyBhbmQgX1dJTjMyICovCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfV0lOMzIpCiAvKiBYWFggVGhlc2UgZGVmaW5lcyBhcmUgbGlrZWx5IGluY29tcGxldGUsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBmaXguCkBAIC0zMjIsMTEgKzMxMiwxMSBAQAogCQkJdGhlaXIgTWFrZWZpbGUgKG90aGVyIGNvbXBpbGVycyBhcmUgZ2VuZXJhbGx5CiAJCQl0YWtlbiBjYXJlIG9mIGJ5IGRpc3R1dGlscy4pICovCiAjCQkJaWYgZGVmaW5lZChfREVCVUcpCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzRfZC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1X2QubGliIikKICMJCQllbGlmIGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMy5saWIiKQogIwkJCWVsc2UKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1LmxpYiIpCiAjCQkJZW5kaWYgLyogX0RFQlVHICovCiAjCQllbmRpZiAvKiBfTVNDX1ZFUiAqLwogIwllbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCmRpZmYgLS1naXQgYS9QQy9weWxhdW5jaGVyLnJjIGIvUEMvcHlsYXVuY2hlci5yYwppbmRleCBkZjU4MjRhLi5hOGRiMGE4IDEwMDY0NAotLS0gYS9QQy9weWxhdW5jaGVyLnJjCisrKyBiL1BDL3B5bGF1bmNoZXIucmMKQEAgLTEsNTEgKzEsNTAgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLSNkZWZpbmUgTVNfV0lORE9XUwotI2luY2x1ZGUgIi4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIgotI2luY2x1ZGUgIi4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIgotI2lmZGVmIF9ERUJVRwotIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjX2QuaCIKLSNlbHNlCi0jICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKLSNlbmRpZgorI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKIAotI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKLSNkZWZpbmUgUFlWRVJTSU9ONjQgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTiwgRklFTEQzLCBQWVRIT05fQVBJX1ZFUlNJT04KKy8vIEluY2x1ZGUgdGhlIG1hbmlmZXN0IGZpbGUgdGhhdCBpbmRpY2F0ZXMgd2Ugc3VwcG9ydCBhbGwKKy8vIGN1cnJlbnQgdmVyc2lvbnMgb2YgV2luZG93cy4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CisxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCisKKzEgSUNPTiBESVNDQVJEQUJMRSAibGF1bmNoZXIuaWNvIiAKKzIgSUNPTiBESVNDQVJEQUJMRSAicHkuaWNvIiAKKzMgSUNPTiBESVNDQVJEQUJMRSAicHljLmljbyIgCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KIAogVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCiAgRklMRVZFUlNJT04gUFlWRVJTSU9ONjQKICBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAotIEZJTEVGTEFHU01BU0sgMHgxN0wKKyBGSUxFRkxBR1NNQVNLIDB4M2ZMCiAjaWZkZWYgX0RFQlVHCi0gRklMRUZMQUdTIDB4MUwKKyBGSUxFRkxBR1MgVlNfRkZfREVCVUcKICNlbHNlCiAgRklMRUZMQUdTIDB4MEwKICNlbmRpZgotIEZJTEVPUyAweDRMCi0gRklMRVRZUEUgMHgxTAorIEZJTEVPUyBWT1NfX1dJTkRPV1MzMgorIEZJTEVUWVBFIFZGVF9BUFAKICBGSUxFU1VCVFlQRSAweDBMCiBCRUdJTgogICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgICBCRUdJTgotICAgICAgICBCTE9DSyAiMDgwOTA0YjAiCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKICAgICAgICAgQkVHSU4KLSAgICAgICAgICAgIFZBTFVFICJDb21tZW50cyIsICJQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MiCi0gICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iCi0gICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyAoQ29uc29sZSkiCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCBQWVRIT05fQ09NUEFOWSAiXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvblwwIgogICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KLSAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAicHkiCi0gICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iCi0gICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJweSIKLSAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MiCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIlB5dGhvbiBMYXVuY2hlclwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgUFlUSE9OX0NPUFlSSUdIVCAiXDAiCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJweSIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgogICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KICAgICAgICAgRU5ECiAgICAgRU5ECiAgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgogICAgIEJFR0lOCi0gICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4ODA5LCAxMjAwCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAogICAgIEVORAotRU5ECi0KLUlESV9JQ09OMSAgICAgICAgICAgICAgIElDT04gICAgICAgICAgICAgICAgICAgICJsYXVuY2hlci5pY28iCi0KLQorRU5EClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uLm1hbmlmZXN0IGIvUEMvcHl0aG9uLm1hbmlmZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliN2IyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9weXRob24ubWFuaWZlc3QKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PgorPGFzc2VtYmx5IHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MSIgbWFuaWZlc3RWZXJzaW9uPSIxLjAiPgorICA8dHJ1c3RJbmZvPgorICAgIDxzZWN1cml0eT4KKyAgICAgIDxyZXF1ZXN0ZWRQcml2aWxlZ2VzPgorICAgICAgICA8cmVxdWVzdGVkRXhlY3V0aW9uTGV2ZWwgbGV2ZWw9ImFzSW52b2tlciIgdWlBY2Nlc3M9ImZhbHNlIi8+CisgICAgICA8L3JlcXVlc3RlZFByaXZpbGVnZXM+CisgICAgPC9zZWN1cml0eT4KKyAgPC90cnVzdEluZm8+CisgIDxjb21wYXRpYmlsaXR5IHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmNvbXBhdGliaWxpdHkudjEiPiAKKyAgICA8YXBwbGljYXRpb24+IAorICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7ZTIwMTE0NTctMTU0Ni00M2M1LWE1ZmUtMDA4ZGVlZTNkM2YwfSIvPiAKKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezM1MTM4YjlhLTVkOTYtNGZiZC04ZTJkLWEyNDQwMjI1ZjkzYX0iLz4KKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezRhMmYyOGUzLTUzYjktNDQ0MS1iYTljLWQ2OWQ0YTRhNmUzOH0iLz4KKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezFmNjc2Yzc2LTgwZTEtNDIzOS05NWJiLTgzZDBmNmQwZGE3OH0iLz4KKyAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezhlMGY3YTEyLWJmYjMtNGZlOC1iOWE1LTQ4ZmQ1MGExNWE5YX0iLz4KKyAgICA8L2FwcGxpY2F0aW9uPiAKKyAgPC9jb21wYXRpYmlsaXR5PgorPC9hc3NlbWJseT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IDM3ZTQ1NGIuLjg4YzA3NDIgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0xLDcwMSArMSw3MTMgQEAKLTsgV2hlbiBjaGFuZ2luZyB0aGlzIGZpbGUsIHJ1biBweXRob24zNGdlbi5weQorOyBUaGlzIGZpbGUgc3BlY2lmaWVzIHRoZSBpbXBvcnQgZm9yd2FyZGluZyBmb3IgcHl0aG9uMy5kbGwKKzsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzQuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNC5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNC5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzQuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNC5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM0LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNC5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzQuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzQuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM0LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzQuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNC5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzQuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzQuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNC5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM0LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM0LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzQuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzQuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzQuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzQuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNC5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM0LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzQuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzQuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzQuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNC5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNC5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzQuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNC5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzQuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM0LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzQuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNC5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNC5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNC5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNC5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM0LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzQuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNC5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM0LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM0LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzQuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM0LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNC5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzQuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM0LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNC5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNC5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNC5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzQuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzQuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM0LlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM0LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM0LlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM0LlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzQuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzQuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM0LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzQuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM0LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzQuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzQuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzQuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNC5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNC5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM0LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM0LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM0LlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zNC5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNC5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzQuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzQuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zNC5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzQuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzQuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzQuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzQuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM0LlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zNC5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzQuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM0LlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzQuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zNC5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zNC5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNC5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zNC5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zNC5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzQuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjM0LlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM0LlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjM0LlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzQuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM0LlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzQuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjM0LlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzQuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM0LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzQuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjM0LlB5RXJyX0Zvcm1hdAotICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzQuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNC5QeUVycl9OZXdFeGNlcHRpb24KLSAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNC5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi0gIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM0LlB5RXJyX05vTWVtb3J5Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNC5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLSAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzQuUHlFcnJfT2NjdXJyZWQKLSAgUHlFcnJfUHJpbnQ9cHl0aG9uMzQuUHlFcnJfUHJpbnQKLSAgUHlFcnJfUHJpbnRFeD1weXRob24zNC5QeUVycl9QcmludEV4Ci0gIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM0LlB5RXJyX1Byb2dyYW1UZXh0Ci0gIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzQuUHlFcnJfUmVzdG9yZQotICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzQuUHlFcnJfU2V0RnJvbUVycm5vCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNC5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM0LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzQuUHlFcnJfU2V0SW50ZXJydXB0Ci0gIFB5RXJyX1NldE5vbmU9cHl0aG9uMzQuUHlFcnJfU2V0Tm9uZQotICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzQuUHlFcnJfU2V0T2JqZWN0Ci0gIFB5RXJyX1NldFN0cmluZz1weXRob24zNC5QeUVycl9TZXRTdHJpbmcKLSAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzQuUHlFcnJfU3ludGF4TG9jYXRpb24KLSAgUHlFcnJfV2FybkV4PXB5dGhvbjM0LlB5RXJyX1dhcm5FeAotICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzQuUHlFcnJfV2FybkV4cGxpY2l0Ci0gIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzQuUHlFcnJfV2FybkZvcm1hdAotICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzQuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCi0gIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zNC5QeUV2YWxfQWNxdWlyZUxvY2sKLSAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzQuUHlFdmFsX0FjcXVpcmVUaHJlYWQKLSAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zNC5QeUV2YWxfQ2FsbEZ1bmN0aW9uCi0gIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjM0LlB5RXZhbF9DYWxsTWV0aG9kCi0gIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjM0LlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCi0gIFB5RXZhbF9FdmFsQ29kZT1weXRob24zNC5QeUV2YWxfRXZhbENvZGUKLSAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzQuUHlFdmFsX0V2YWxDb2RlRXgKLSAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zNC5QeUV2YWxfRXZhbEZyYW1lCi0gIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zNC5QeUV2YWxfRXZhbEZyYW1lRXgKLSAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjM0LlB5RXZhbF9HZXRCdWlsdGlucwotICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjM0LlB5RXZhbF9HZXRDYWxsU3RhdHMKLSAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjM0LlB5RXZhbF9HZXRGcmFtZQotICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzQuUHlFdmFsX0dldEZ1bmNEZXNjCi0gIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zNC5QeUV2YWxfR2V0RnVuY05hbWUKLSAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzQuUHlFdmFsX0dldEdsb2JhbHMKLSAgUHlFdmFsX0dldExvY2Fscz1weXRob24zNC5QeUV2YWxfR2V0TG9jYWxzCi0gIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zNC5QeUV2YWxfSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzQuUHlFdmFsX1JlSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjM0LlB5RXZhbF9SZWxlYXNlTG9jawotICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zNC5QeUV2YWxfUmVsZWFzZVRocmVhZAotICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zNC5QeUV2YWxfUmVzdG9yZVRocmVhZAotICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zNC5QeUV2YWxfU2F2ZVRocmVhZAotICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjM0LlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLSAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjM0LlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCi0gIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjM0LlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKLSAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzQuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQotICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjM0LlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQotICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zNC5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCi0gIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zNC5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQotICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzQuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzQuUHlFeGNfRU9GRXJyb3IgREFUQQotICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM0LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQotICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzQuUHlFeGNfRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM0LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCi0gIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzQuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCi0gIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzQuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCi0gIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzQuUHlFeGNfSU9FcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM0LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNC5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKLSAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNC5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNC5QeUV4Y19JbmRleEVycm9yIERBVEEKLSAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzQuUHlFeGNfS2V5RXJyb3IgREFUQQotICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zNC5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCi0gIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjM0LlB5RXhjX0xvb2t1cEVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzQuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzQuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjM0LlB5RXhjX05hbWVFcnJvciBEQVRBCi0gIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzQuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCi0gIFB5RXhjX09TRXJyb3I9cHl0aG9uMzQuUHlFeGNfT1NFcnJvciBEQVRBCi0gIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzQuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCi0gIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzQuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNC5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQotICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNC5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zNC5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zNC5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCi0gIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzQuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCi0gIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjM0LlB5RXhjX1N5bnRheEVycm9yIERBVEEKLSAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zNC5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzQuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQotICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjM0LlB5RXhjX1N5c3RlbUV4aXQgREFUQQotICBQeUV4Y19UYWJFcnJvcj1weXRob24zNC5QeUV4Y19UYWJFcnJvciBEQVRBCi0gIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNC5QeUV4Y19UeXBlRXJyb3IgREFUQQotICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNC5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNC5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCi0gIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKLSAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNC5QeUV4Y19WYWx1ZUVycm9yIERBVEEKLSAgUHlFeGNfV2FybmluZz1weXRob24zNC5QeUV4Y19XYXJuaW5nIERBVEEKLSAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzQuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQotICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zNC5QeUV4Y2VwdGlvbl9HZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjM0LlB5RXhjZXB0aW9uX0dldENvbnRleHQKLSAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjM0LlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjawotICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zNC5QeUV4Y2VwdGlvbl9TZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjM0LlB5RXhjZXB0aW9uX1NldENvbnRleHQKLSAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjM0LlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjawotICBQeUZpbGVfRnJvbUZkPXB5dGhvbjM0LlB5RmlsZV9Gcm9tRmQKLSAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzQuUHlGaWxlX0dldExpbmUKLSAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjM0LlB5RmlsZV9Xcml0ZU9iamVjdAotICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzQuUHlGaWxlX1dyaXRlU3RyaW5nCi0gIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzQuUHlGaWx0ZXJfVHlwZSBEQVRBCi0gIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzQuUHlGbG9hdF9Bc0RvdWJsZQotICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzQuUHlGbG9hdF9Gcm9tRG91YmxlCi0gIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zNC5QeUZsb2F0X0Zyb21TdHJpbmcKLSAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjM0LlB5RmxvYXRfR2V0SW5mbwotICBQeUZsb2F0X0dldE1heD1weXRob24zNC5QeUZsb2F0X0dldE1heAotICBQeUZsb2F0X0dldE1pbj1weXRob24zNC5QeUZsb2F0X0dldE1pbgotICBQeUZsb2F0X1R5cGU9cHl0aG9uMzQuUHlGbG9hdF9UeXBlIERBVEEKLSAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjM0LlB5RnJvemVuU2V0X05ldwotICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjM0LlB5RnJvemVuU2V0X1R5cGUgREFUQQotICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzQuUHlHQ19Db2xsZWN0Ci0gIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjM0LlB5R0lMU3RhdGVfRW5zdXJlCi0gIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjM0LlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi0gIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zNC5QeUdJTFN0YXRlX1JlbGVhc2UKLSAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjM0LlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCi0gIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zNC5QeUltcG9ydF9BZGRNb2R1bGUKLSAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNC5QeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzQuUHlJbXBvcnRfQ2xlYW51cAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNC5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM0LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM0LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNC5QeUltcG9ydF9HZXRJbXBvcnRlcgotICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNC5QeUltcG9ydF9HZXRNYWdpY051bWJlcgotICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNC5QeUltcG9ydF9HZXRNYWdpY1RhZwotICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM0LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydAotICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zNC5QeUltcG9ydF9JbXBvcnRNb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zNC5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCi0gIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zNC5QeUltcG9ydF9SZWxvYWRNb2R1bGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjM0LlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgotICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjM0LlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zNC5QeUludGVycHJldGVyU3RhdGVfTmV3Ci0gIFB5SXRlcl9OZXh0PXB5dGhvbjM0LlB5SXRlcl9OZXh0Ci0gIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zNC5QeUxpc3RJdGVyX1R5cGUgREFUQQotICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzQuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0X0FwcGVuZD1weXRob24zNC5QeUxpc3RfQXBwZW5kCi0gIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjM0LlB5TGlzdF9Bc1R1cGxlCi0gIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjM0LlB5TGlzdF9HZXRJdGVtCi0gIFB5TGlzdF9HZXRTbGljZT1weXRob24zNC5QeUxpc3RfR2V0U2xpY2UKLSAgUHlMaXN0X0luc2VydD1weXRob24zNC5QeUxpc3RfSW5zZXJ0Ci0gIFB5TGlzdF9OZXc9cHl0aG9uMzQuUHlMaXN0X05ldwotICBQeUxpc3RfUmV2ZXJzZT1weXRob24zNC5QeUxpc3RfUmV2ZXJzZQotICBQeUxpc3RfU2V0SXRlbT1weXRob24zNC5QeUxpc3RfU2V0SXRlbQotICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzQuUHlMaXN0X1NldFNsaWNlCi0gIFB5TGlzdF9TaXplPXB5dGhvbjM0LlB5TGlzdF9TaXplCi0gIFB5TGlzdF9Tb3J0PXB5dGhvbjM0LlB5TGlzdF9Tb3J0Ci0gIFB5TGlzdF9UeXBlPXB5dGhvbjM0LlB5TGlzdF9UeXBlIERBVEEKLSAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzQuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzQuUHlMb25nX0FzRG91YmxlCi0gIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzQuUHlMb25nX0FzTG9uZwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzQuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Bc0xvbmdMb25nCi0gIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzQuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzQuUHlMb25nX0FzU2l6ZV90Ci0gIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzQuUHlMb25nX0FzU3NpemVfdAotICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zNC5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzawotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLSAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zNC5QeUxvbmdfQXNWb2lkUHRyCi0gIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjM0LlB5TG9uZ19Gcm9tRG91YmxlCi0gIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbUxvbmcKLSAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbUxvbmdMb25nCi0gIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Gcm9tU2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zNC5QeUxvbmdfRnJvbVNzaXplX3QKLSAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21TdHJpbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzQuUHlMb25nX0Zyb21Wb2lkUHRyCi0gIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjM0LlB5TG9uZ19HZXRJbmZvCi0gIFB5TG9uZ19UeXBlPXB5dGhvbjM0LlB5TG9uZ19UeXBlIERBVEEKLSAgUHlNYXBfVHlwZT1weXRob24zNC5QeU1hcF9UeXBlIERBVEEKLSAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjM0LlB5TWFwcGluZ19DaGVjawotICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zNC5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjM0LlB5TWFwcGluZ19IYXNLZXkKLSAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zNC5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCi0gIFB5TWFwcGluZ19JdGVtcz1weXRob24zNC5QeU1hcHBpbmdfSXRlbXMKLSAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzQuUHlNYXBwaW5nX0tleXMKLSAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zNC5QeU1hcHBpbmdfTGVuZ3RoCi0gIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjM0LlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19TaXplPXB5dGhvbjM0LlB5TWFwcGluZ19TaXplCi0gIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzQuUHlNYXBwaW5nX1ZhbHVlcwotICBQeU1lbV9GcmVlPXB5dGhvbjM0LlB5TWVtX0ZyZWUKLSAgUHlNZW1fTWFsbG9jPXB5dGhvbjM0LlB5TWVtX01hbGxvYwotICBQeU1lbV9SZWFsbG9jPXB5dGhvbjM0LlB5TWVtX1JlYWxsb2MKLSAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjM0LlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjM0LlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0Ci0gIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjM0LlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi0gIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjM0LlB5TWVtb3J5Vmlld19UeXBlIERBVEEKLSAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM0LlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjM0LlB5TW9kdWxlX0FkZEludENvbnN0YW50Ci0gIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zNC5QeU1vZHVsZV9BZGRPYmplY3QKLSAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzQuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKLSAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zNC5QeU1vZHVsZV9DcmVhdGUyCi0gIFB5TW9kdWxlX0dldERlZj1weXRob24zNC5QeU1vZHVsZV9HZXREZWYKLSAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zNC5QeU1vZHVsZV9HZXREaWN0Ci0gIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjM0LlB5TW9kdWxlX0dldEZpbGVuYW1lCi0gIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM0LlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0Ci0gIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzQuUHlNb2R1bGVfR2V0TmFtZQotICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zNC5QeU1vZHVsZV9HZXRTdGF0ZQotICBQeU1vZHVsZV9OZXc9cHl0aG9uMzQuUHlNb2R1bGVfTmV3Ci0gIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzQuUHlNb2R1bGVfVHlwZSBEQVRBCi0gIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzQuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCi0gIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM0LlB5TnVtYmVyX0Fic29sdXRlCi0gIFB5TnVtYmVyX0FkZD1weXRob24zNC5QeU51bWJlcl9BZGQKLSAgUHlOdW1iZXJfQW5kPXB5dGhvbjM0LlB5TnVtYmVyX0FuZAotICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzQuUHlOdW1iZXJfQXNTc2l6ZV90Ci0gIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM0LlB5TnVtYmVyX0NoZWNrCi0gIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNC5QeU51bWJlcl9EaXZtb2QKLSAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzQuUHlOdW1iZXJfRmxvYXQKLSAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlQWRkCi0gIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUFuZAotICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5Ci0gIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlT3IKLSAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VQb3dlcgotICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlUnNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKLSAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNC5QeU51bWJlcl9JblBsYWNlWG9yCi0gIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM0LlB5TnVtYmVyX0luZGV4Ci0gIFB5TnVtYmVyX0ludmVydD1weXRob24zNC5QeU51bWJlcl9JbnZlcnQKLSAgUHlOdW1iZXJfTG9uZz1weXRob24zNC5QeU51bWJlcl9Mb25nCi0gIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNC5QeU51bWJlcl9Mc2hpZnQKLSAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzQuUHlOdW1iZXJfTXVsdGlwbHkKLSAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzQuUHlOdW1iZXJfTmVnYXRpdmUKLSAgUHlOdW1iZXJfT3I9cHl0aG9uMzQuUHlOdW1iZXJfT3IKLSAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzQuUHlOdW1iZXJfUG9zaXRpdmUKLSAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzQuUHlOdW1iZXJfUG93ZXIKLSAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM0LlB5TnVtYmVyX1JlbWFpbmRlcgotICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzQuUHlOdW1iZXJfUnNoaWZ0Ci0gIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM0LlB5TnVtYmVyX1N1YnRyYWN0Ci0gIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNC5QeU51bWJlcl9Ub0Jhc2UKLSAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNC5QeU51bWJlcl9UcnVlRGl2aWRlCi0gIFB5TnVtYmVyX1hvcj1weXRob24zNC5QeU51bWJlcl9Yb3IKLSAgUHlPU19BZnRlckZvcms9cHl0aG9uMzQuUHlPU19BZnRlckZvcmsKLSAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNC5QeU9TX0luaXRJbnRlcnJ1cHRzCi0gIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM0LlB5T1NfSW5wdXRIb29rIERBVEEKLSAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNC5QeU9TX0ludGVycnVwdE9jY3VycmVkCi0gIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzQuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCi0gIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNC5QeU9TX2RvdWJsZV90b19zdHJpbmcKLSAgUHlPU19nZXRzaWc9cHl0aG9uMzQuUHlPU19nZXRzaWcKLSAgUHlPU19teXN0cmljbXA9cHl0aG9uMzQuUHlPU19teXN0cmljbXAKLSAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM0LlB5T1NfbXlzdHJuaWNtcAotICBQeU9TX3NldHNpZz1weXRob24zNC5QeU9TX3NldHNpZwotICBQeU9TX3NucHJpbnRmPXB5dGhvbjM0LlB5T1Nfc25wcmludGYKLSAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM0LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotICBQeU9TX3N0cnRvbD1weXRob24zNC5QeU9TX3N0cnRvbAotICBQeU9TX3N0cnRvdWw9cHl0aG9uMzQuUHlPU19zdHJ0b3VsCi0gIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM0LlB5T1NfdnNucHJpbnRmCi0gIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM0LlB5T2JqZWN0X0FTQ0lJCi0gIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLSAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNC5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCi0gIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCi0gIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM0LlB5T2JqZWN0X0J5dGVzCi0gIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbAotICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzQuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxNZXRob2QKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNC5QeU9iamVjdF9DYWxsT2JqZWN0Ci0gIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNC5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNC5QeU9iamVjdF9DbGVhcldlYWtSZWZzCi0gIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzQuUHlPYmplY3RfRGVsSXRlbQotICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlPYmplY3RfRGlyPXB5dGhvbjM0LlB5T2JqZWN0X0RpcgotICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzQuUHlPYmplY3RfRm9ybWF0Ci0gIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzQuUHlPYmplY3RfRnJlZQotICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzQuUHlPYmplY3RfR0NfRGVsCi0gIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM0LlB5T2JqZWN0X0dDX1RyYWNrCi0gIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzQuUHlPYmplY3RfR0NfVW5UcmFjawotICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgotICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM0LlB5T2JqZWN0X0dldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNC5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzQuUHlPYmplY3RfR2V0SXRlbQotICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM0LlB5T2JqZWN0X0dldEl0ZXIKLSAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNC5QeU9iamVjdF9IYXNBdHRyCi0gIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfSGFzQXR0clN0cmluZwotICBQeU9iamVjdF9IYXNoPXB5dGhvbjM0LlB5T2JqZWN0X0hhc2gKLSAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM0LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAotICBQeU9iamVjdF9Jbml0PXB5dGhvbjM0LlB5T2JqZWN0X0luaXQKLSAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNC5QeU9iamVjdF9Jbml0VmFyCi0gIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzQuUHlPYmplY3RfSXNJbnN0YW5jZQotICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM0LlB5T2JqZWN0X0lzU3ViY2xhc3MKLSAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM0LlB5T2JqZWN0X0lzVHJ1ZQotICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzQuUHlPYmplY3RfTGVuZ3RoCi0gIFB5T2JqZWN0X01hbGxvYz1weXRob24zNC5QeU9iamVjdF9NYWxsb2MKLSAgUHlPYmplY3RfTm90PXB5dGhvbjM0LlB5T2JqZWN0X05vdAotICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM0LlB5T2JqZWN0X1JlYWxsb2MKLSAgUHlPYmplY3RfUmVwcj1weXRob24zNC5QeU9iamVjdF9SZXByCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM0LlB5T2JqZWN0X1JpY2hDb21wYXJlCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNC5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKLSAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzQuUHlPYmplY3RfU2VsZkl0ZXIKLSAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNC5QeU9iamVjdF9TZXRBdHRyCi0gIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfU2V0QXR0clN0cmluZwotICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM0LlB5T2JqZWN0X1NldEl0ZW0KLSAgUHlPYmplY3RfU2l6ZT1weXRob24zNC5QeU9iamVjdF9TaXplCi0gIFB5T2JqZWN0X1N0cj1weXRob24zNC5QeU9iamVjdF9TdHIKLSAgUHlPYmplY3RfVHlwZT1weXRob24zNC5QeU9iamVjdF9UeXBlIERBVEEKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzQuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNC5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi0gIFB5UHJvcGVydHlfVHlwZT1weXRob24zNC5QeVByb3BlcnR5X1R5cGUgREFUQQotICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjM0LlB5UmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeVJhbmdlX1R5cGU9cHl0aG9uMzQuUHlSYW5nZV9UeXBlIERBVEEKLSAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjM0LlB5UmV2ZXJzZWRfVHlwZSBEQVRBCi0gIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzQuUHlTZXFJdGVyX05ldwotICBQeVNlcUl0ZXJfVHlwZT1weXRob24zNC5QeVNlcUl0ZXJfVHlwZSBEQVRBCi0gIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzQuUHlTZXF1ZW5jZV9DaGVjawotICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zNC5QeVNlcXVlbmNlX0NvbmNhdAotICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjM0LlB5U2VxdWVuY2VfQ29udGFpbnMKLSAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zNC5QeVNlcXVlbmNlX0NvdW50Ci0gIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zNC5QeVNlcXVlbmNlX0RlbEl0ZW0KLSAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zNC5QeVNlcXVlbmNlX0RlbFNsaWNlCi0gIFB5U2VxdWVuY2VfRmFzdD1weXRob24zNC5QeVNlcXVlbmNlX0Zhc3QKLSAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM0LlB5U2VxdWVuY2VfR2V0SXRlbQotICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjM0LlB5U2VxdWVuY2VfR2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9Jbj1weXRob24zNC5QeVNlcXVlbmNlX0luCi0gIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zNC5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKLSAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjM0LlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAotICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjM0LlB5U2VxdWVuY2VfSW5kZXgKLSAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzQuUHlTZXF1ZW5jZV9MZW5ndGgKLSAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjM0LlB5U2VxdWVuY2VfTGlzdAotICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zNC5QeVNlcXVlbmNlX1JlcGVhdAotICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzQuUHlTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzQuUHlTZXF1ZW5jZV9TZXRTbGljZQotICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzQuUHlTZXF1ZW5jZV9TaXplCi0gIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzQuUHlTZXF1ZW5jZV9UdXBsZQotICBQeVNldEl0ZXJfVHlwZT1weXRob24zNC5QeVNldEl0ZXJfVHlwZSBEQVRBCi0gIFB5U2V0X0FkZD1weXRob24zNC5QeVNldF9BZGQKLSAgUHlTZXRfQ2xlYXI9cHl0aG9uMzQuUHlTZXRfQ2xlYXIKLSAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzQuUHlTZXRfQ29udGFpbnMKLSAgUHlTZXRfRGlzY2FyZD1weXRob24zNC5QeVNldF9EaXNjYXJkCi0gIFB5U2V0X05ldz1weXRob24zNC5QeVNldF9OZXcKLSAgUHlTZXRfUG9wPXB5dGhvbjM0LlB5U2V0X1BvcAotICBQeVNldF9TaXplPXB5dGhvbjM0LlB5U2V0X1NpemUKLSAgUHlTZXRfVHlwZT1weXRob24zNC5QeVNldF9UeXBlIERBVEEKLSAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjM0LlB5U2xpY2VfR2V0SW5kaWNlcwotICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zNC5QeVNsaWNlX0dldEluZGljZXNFeAotICBQeVNsaWNlX05ldz1weXRob24zNC5QeVNsaWNlX05ldwotICBQeVNsaWNlX1R5cGU9cHl0aG9uMzQuUHlTbGljZV9UeXBlIERBVEEKLSAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjM0LlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCi0gIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zNC5QeVN0YXRlX0ZpbmRNb2R1bGUKLSAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzQuUHlTdGF0ZV9BZGRNb2R1bGUKLSAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzQuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM0LlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX05ldwotICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCi0gIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTdXBlcl9UeXBlPXB5dGhvbjM0LlB5U3VwZXJfVHlwZSBEQVRBCi0gIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzQuUHlTeXNfQWRkV2Fybk9wdGlvbgotICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zNC5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQotICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzQuUHlTeXNfRm9ybWF0U3RkZXJyCi0gIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNC5QeVN5c19Gb3JtYXRTdGRvdXQKLSAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM0LlB5U3lzX0dldE9iamVjdAotICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNC5QeVN5c19IYXNXYXJuT3B0aW9ucwotICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM0LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLSAgUHlTeXNfU2V0QXJndj1weXRob24zNC5QeVN5c19TZXRBcmd2Ci0gIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNC5QeVN5c19TZXRBcmd2RXgKLSAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM0LlB5U3lzX1NldE9iamVjdAotICBQeVN5c19TZXRQYXRoPXB5dGhvbjM0LlB5U3lzX1NldFBhdGgKLSAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzQuUHlTeXNfV3JpdGVTdGRlcnIKLSAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzQuUHlTeXNfV3JpdGVTdGRvdXQKLSAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNC5QeVRocmVhZFN0YXRlX0NsZWFyCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNC5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLSAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9HZXQKLSAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfR2V0RGljdAotICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNC5QeVRocmVhZFN0YXRlX05ldwotICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLSAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfU3dhcAotICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM0LlB5VHJhY2VCYWNrX0hlcmUKLSAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzQuUHlUcmFjZUJhY2tfUHJpbnQKLSAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNC5QeVRyYWNlQmFja19UeXBlIERBVEEKLSAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNC5QeVR1cGxlSXRlcl9UeXBlIERBVEEKLSAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM0LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzQuUHlUdXBsZV9HZXRJdGVtCi0gIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzQuUHlUdXBsZV9HZXRTbGljZQotICBQeVR1cGxlX05ldz1weXRob24zNC5QeVR1cGxlX05ldwotICBQeVR1cGxlX1BhY2s9cHl0aG9uMzQuUHlUdXBsZV9QYWNrCi0gIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNC5QeVR1cGxlX1NldEl0ZW0KLSAgUHlUdXBsZV9TaXplPXB5dGhvbjM0LlB5VHVwbGVfU2l6ZQotICBQeVR1cGxlX1R5cGU9cHl0aG9uMzQuUHlUdXBsZV9UeXBlIERBVEEKLSAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzQuUHlUeXBlX0NsZWFyQ2FjaGUKLSAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM0LlB5VHlwZV9Gcm9tU3BlYwotICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzQuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCi0gIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzQuUHlUeXBlX0dlbmVyaWNBbGxvYwotICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNC5QeVR5cGVfR2VuZXJpY05ldwotICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzQuUHlUeXBlX0dldEZsYWdzCi0gIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM0LlB5VHlwZV9HZXRTbG90Ci0gIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzQuUHlUeXBlX0lzU3VidHlwZQotICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzQuUHlUeXBlX01vZGlmaWVkCi0gIFB5VHlwZV9SZWFkeT1weXRob24zNC5QeVR5cGVfUmVhZHkKLSAgUHlUeXBlX1R5cGU9cHl0aG9uMzQuUHlUeXBlX1R5cGUgREFUQQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM0LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM0LlB5VW5pY29kZV9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNC5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCi0gIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzQuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNC5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVVEYxNlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1VURjhTdHJpbmcKLSAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjM0LlB5VW5pY29kZV9DbGVhckZyZWVsaXN0Ci0gIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM0LlB5VW5pY29kZV9Db21wYXJlCi0gIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzQuUHlVbmljb2RlX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzQuUHlVbmljb2RlX0NvbnRhaW5zCi0gIFB5VW5pY29kZV9Db3VudD1weXRob24zNC5QeVVuaWNvZGVfQ291bnQKLSAgUHlVbmljb2RlX0RlY29kZT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlQVNDSUkKLSAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0gIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUxhdGluMQotICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjE2Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjgKLSAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNC5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKLSAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNC5QeVVuaWNvZGVfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM0LlB5VW5pY29kZV9GaW5kCi0gIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzQuUHlVbmljb2RlX0Zvcm1hdAotICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNC5QeVVuaWNvZGVfRnJvbUZvcm1hdFYKLSAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tT3JkaW5hbAotICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfRnJvbVN0cmluZwotICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgotICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzQuUHlVbmljb2RlX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zNC5QeVVuaWNvZGVfSXNJZGVudGlmaWVyCi0gIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM0LlB5VW5pY29kZV9Kb2luCi0gIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzQuUHlVbmljb2RlX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zNC5QeVVuaWNvZGVfUlBhcnRpdGlvbgotICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM0LlB5VW5pY29kZV9SU3BsaXQKLSAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzQuUHlVbmljb2RlX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zNC5QeVVuaWNvZGVfUmVzaXplCi0gIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNC5QeVVuaWNvZGVfUmljaENvbXBhcmUKLSAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zNC5QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zNC5QeVVuaWNvZGVfU3BsaXQKLSAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzQuUHlVbmljb2RlX1NwbGl0bGluZXMKLSAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zNC5QeVVuaWNvZGVfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzQuUHlVbmljb2RlX1RyYW5zbGF0ZQotICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNC5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAotICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGNwotICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKLSAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNC5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNC5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKLSAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzQuUHlVbmljb2RlX0ludGVybkluUGxhY2UKLSAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzQuUHlVbmljb2RlX1R5cGUgREFUQQotICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM0LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQotICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzQuUHlXZWFrcmVmX05ld1Byb3h5Ci0gIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzQuUHlXZWFrcmVmX05ld1JlZgotICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM0LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQotICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM0LlB5V3JhcHBlcl9OZXcKLSAgUHlaaXBfVHlwZT1weXRob24zNC5QeVppcF9UeXBlIERBVEEKLSAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzQuUHlfQWRkUGVuZGluZ0NhbGwKLSAgUHlfQXRFeGl0PXB5dGhvbjM0LlB5X0F0RXhpdAotICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM0LlB5X0J1aWxkVmFsdWUKLSAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNC5QeV9Db21waWxlU3RyaW5nCi0gIFB5X0RlY1JlZj1weXRob24zNC5QeV9EZWNSZWYKLSAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzQuUHlfRW5kSW50ZXJwcmV0ZXIKLSAgUHlfRXhpdD1weXRob24zNC5QeV9FeGl0Ci0gIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzQuUHlfRmF0YWxFcnJvcgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9GaW5hbGl6ZT1weXRob24zNC5QeV9GaW5hbGl6ZQotICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzQuUHlfR2V0QnVpbGRJbmZvCi0gIFB5X0dldENvbXBpbGVyPXB5dGhvbjM0LlB5X0dldENvbXBpbGVyCi0gIFB5X0dldENvcHlyaWdodD1weXRob24zNC5QeV9HZXRDb3B5cmlnaHQKLSAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNC5QeV9HZXRFeGVjUHJlZml4Ci0gIFB5X0dldFBhdGg9cHl0aG9uMzQuUHlfR2V0UGF0aAotICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNC5QeV9HZXRQbGF0Zm9ybQotICBQeV9HZXRQcmVmaXg9cHl0aG9uMzQuUHlfR2V0UHJlZml4Ci0gIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNC5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLSAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzQuUHlfR2V0UHJvZ3JhbU5hbWUKLSAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNC5QeV9HZXRQeXRob25Ib21lCi0gIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM0LlB5X0dldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X0dldFZlcnNpb249cHl0aG9uMzQuUHlfR2V0VmVyc2lvbgotICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9JbmNSZWY9cHl0aG9uMzQuUHlfSW5jUmVmCi0gIFB5X0luaXRpYWxpemU9cHl0aG9uMzQuUHlfSW5pdGlhbGl6ZQotICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzQuUHlfSW5pdGlhbGl6ZUV4Ci0gIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzQuUHlfSXNJbml0aWFsaXplZAotICBQeV9NYWluPXB5dGhvbjM0LlB5X01haW4KLSAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNC5QeV9NYWtlUGVuZGluZ0NhbGxzCi0gIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM0LlB5X05ld0ludGVycHJldGVyCi0gIFB5X1JlcHJFbnRlcj1weXRob24zNC5QeV9SZXByRW50ZXIKLSAgUHlfUmVwckxlYXZlPXB5dGhvbjM0LlB5X1JlcHJMZWF2ZQotICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNC5QeV9TZXRQcm9ncmFtTmFtZQotICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM0LlB5X1NldFB5dGhvbkhvbWUKLSAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzQuUHlfU2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzQuUHlfU3ltdGFibGVTdHJpbmcKLSAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM0LlB5X1ZhQnVpbGRWYWx1ZQotICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM0Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNC5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi0gIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM0Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi0gIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX01hbGxvYwotICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM0Ll9QeU9iamVjdF9HQ19OZXcKLSAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNC5fUHlPYmplY3RfR0NfTmV3VmFyCi0gIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX1Jlc2l6ZQotICBfUHlPYmplY3RfTmV3PXB5dGhvbjM0Ll9QeU9iamVjdF9OZXcKLSAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNC5fUHlPYmplY3RfTmV3VmFyCi0gIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNC5fUHlTdGF0ZV9BZGRNb2R1bGUKLSAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNC5fUHlUaHJlYWRTdGF0ZV9Jbml0Ci0gIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM0Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi0gIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNC5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQotICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNC5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCi0gIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM0Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzQuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM0Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNC5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNC5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfQnVpbGRWYWx1ZV9TaXplVAotICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNC5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCi0gIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzQuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAotICBfUHlfRGVhbGxvYz1weXRob24zNC5fUHlfRGVhbGxvYwotICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzQuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKLSAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM0Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM0Ll9QeV9Ob25lU3RydWN0IERBVEEKLSAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM0Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCi0gIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzQuX1B5X1N3YXBwZWRPcCBEQVRBCi0gIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM0Ll9QeV9UcnVlU3RydWN0IERBVEEKLSAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCi0gIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19WYVBhcnNlX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNC5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzQuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKKyAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKKyAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCisgIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKKyAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQorICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCisgIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZworICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0CisgIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAorICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCisgIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQorICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQorICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKKyAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKKyAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKKyAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKKyAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAorICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKKyAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAorICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCisgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCisgIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKKyAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCisgIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAorICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKKyAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKKyAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KKyAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCisgIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXIKKyAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgorICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19SZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtUmVhZGVyCisgIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtV3JpdGVyCisgIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfU3RyaWN0RXJyb3JzCisgIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycworICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzUuUHlDb21wbGV4X0Zyb21Eb3VibGVzCisgIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQorICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKKyAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzUuUHlDb21wbGV4X1R5cGUgREFUQQorICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKKyAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzUuUHlEZXNjcl9OZXdHZXRTZXQKKyAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZW1iZXIKKyAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZXRob2QKKyAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeURpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNS5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKKyAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5RGljdEtleXNfVHlwZSBEQVRBCisgIFB5RGljdFByb3h5X05ldz1weXRob24zNS5QeURpY3RQcm94eV9OZXcKKyAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNS5QeURpY3RQcm94eV9UeXBlIERBVEEKKyAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeURpY3RfQ2xlYXI9cHl0aG9uMzUuUHlEaWN0X0NsZWFyCisgIFB5RGljdF9Db250YWlucz1weXRob24zNS5QeURpY3RfQ29udGFpbnMKKyAgUHlEaWN0X0NvcHk9cHl0aG9uMzUuUHlEaWN0X0NvcHkKKyAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW0KKyAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW0KKyAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKKyAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM1LlB5RGljdF9JdGVtcworICBQeURpY3RfS2V5cz1weXRob24zNS5QeURpY3RfS2V5cworICBQeURpY3RfTWVyZ2U9cHl0aG9uMzUuUHlEaWN0X01lcmdlCisgIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM1LlB5RGljdF9NZXJnZUZyb21TZXEyCisgIFB5RGljdF9OZXc9cHl0aG9uMzUuUHlEaWN0X05ldworICBQeURpY3RfTmV4dD1weXRob24zNS5QeURpY3RfTmV4dAorICBQeURpY3RfU2V0SXRlbT1weXRob24zNS5QeURpY3RfU2V0SXRlbQorICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfU2V0SXRlbVN0cmluZworICBQeURpY3RfU2l6ZT1weXRob24zNS5QeURpY3RfU2l6ZQorICBQeURpY3RfVHlwZT1weXRob24zNS5QeURpY3RfVHlwZSBEQVRBCisgIFB5RGljdF9VcGRhdGU9cHl0aG9uMzUuUHlEaWN0X1VwZGF0ZQorICBQeURpY3RfVmFsdWVzPXB5dGhvbjM1LlB5RGljdF9WYWx1ZXMKKyAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM1LlB5RWxsaXBzaXNfVHlwZSBEQVRBCisgIFB5RW51bV9UeXBlPXB5dGhvbjM1LlB5RW51bV9UeXBlIERBVEEKKyAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzUuUHlFcnJfQmFkQXJndW1lbnQKKyAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1LlB5RXJyX0JhZEludGVybmFsQ2FsbAorICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzUuUHlFcnJfQ2hlY2tTaWduYWxzCisgIFB5RXJyX0NsZWFyPXB5dGhvbjM1LlB5RXJyX0NsZWFyCisgIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzUuUHlFcnJfRGlzcGxheQorICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfRmV0Y2g9cHl0aG9uMzUuUHlFcnJfRmV0Y2gKKyAgUHlFcnJfRm9ybWF0PXB5dGhvbjM1LlB5RXJyX0Zvcm1hdAorICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM1LlB5RXJyX0Zvcm1hdFYKKyAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uCisgIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYworICBQeUVycl9Ob01lbW9yeT1weXRob24zNS5QeUVycl9Ob01lbW9yeQorICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCisgIFB5RXJyX09jY3VycmVkPXB5dGhvbjM1LlB5RXJyX09jY3VycmVkCisgIFB5RXJyX1ByaW50PXB5dGhvbjM1LlB5RXJyX1ByaW50CisgIFB5RXJyX1ByaW50RXg9cHl0aG9uMzUuUHlFcnJfUHJpbnRFeAorICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNS5QeUVycl9Qcm9ncmFtVGV4dAorICBQeUVycl9SZXN0b3JlPXB5dGhvbjM1LlB5RXJyX1Jlc3RvcmUKKyAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJubworICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1dhcm5FeD1weXRob24zNS5QeUVycl9XYXJuRXgKKyAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM1LlB5RXJyX1dhcm5FeHBsaWNpdAorICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM1LlB5RXJyX1dhcm5Gb3JtYXQKKyAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM1LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQorICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVMb2NrCisgIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlVGhyZWFkCisgIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlFdmFsX0NhbGxGdW5jdGlvbgorICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNS5QeUV2YWxfQ2FsbE1ldGhvZAorICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNS5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcworICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlCisgIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZUV4CisgIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZQorICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZUV4CisgIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNS5QeUV2YWxfR2V0QnVpbHRpbnMKKyAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNS5QeUV2YWxfR2V0Q2FsbFN0YXRzCisgIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnJhbWUKKyAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jRGVzYworICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNOYW1lCisgIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRHbG9iYWxzCisgIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzUuUHlFdmFsX0dldExvY2FscworICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX0luaXRUaHJlYWRzCisgIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9SZUluaXRUaHJlYWRzCisgIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNS5QeUV2YWxfUmVsZWFzZUxvY2sKKyAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VUaHJlYWQKKyAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKKyAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1NhdmVUaHJlYWQKKyAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNS5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCisgIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNS5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQorICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNS5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCisgIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKKyAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM1LlB5RXhjX0VPRkVycm9yIERBVEEKKyAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNS5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKKyAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNS5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQorICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQorICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM1LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQorICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM1LlB5RXhjX0lPRXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNS5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCisgIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCisgIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZXhFcnJvciBEQVRBCisgIFB5RXhjX0tleUVycm9yPXB5dGhvbjM1LlB5RXhjX0tleUVycm9yIERBVEEKKyAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQorICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQorICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM1LlB5RXhjX09TRXJyb3IgREFUQQorICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM1LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQorICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzUuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM1LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQorICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNS5QeUV4Y19TeW50YXhFcnJvciBEQVRBCisgIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCisgIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM1LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKKyAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNS5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKKyAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzUuUHlFeGNfVGFiRXJyb3IgREFUQQorICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVHlwZUVycm9yIERBVEEKKyAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQorICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNS5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCisgIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVmFsdWVFcnJvciBEQVRBCisgIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfV2FybmluZyBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzUuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgorICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM1LlB5SW1wb3J0X0NsZWFudXAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4CisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKKyAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNUYWcKKyAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNS5QeUltcG9ydF9HZXRNb2R1bGVEaWN0CisgIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNS5QeUltcG9ydF9JbXBvcnQKKyAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaworICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKKyAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX05ldworICBQeUl0ZXJfTmV4dD1weXRob24zNS5QeUl0ZXJfTmV4dAorICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzUuUHlMaXN0X0FwcGVuZAorICBQeUxpc3RfQXNUdXBsZT1weXRob24zNS5QeUxpc3RfQXNUdXBsZQorICBQeUxpc3RfR2V0SXRlbT1weXRob24zNS5QeUxpc3RfR2V0SXRlbQorICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X0dldFNsaWNlCisgIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzUuUHlMaXN0X0luc2VydAorICBQeUxpc3RfTmV3PXB5dGhvbjM1LlB5TGlzdF9OZXcKKyAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzUuUHlMaXN0X1JldmVyc2UKKyAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzUuUHlMaXN0X1NldEl0ZW0KKyAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9TZXRTbGljZQorICBQeUxpc3RfU2l6ZT1weXRob24zNS5QeUxpc3RfU2l6ZQorICBQeUxpc3RfU29ydD1weXRob24zNS5QeUxpc3RfU29ydAorICBQeUxpc3RfVHlwZT1weXRob24zNS5QeUxpc3RfVHlwZSBEQVRBCisgIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Bc0RvdWJsZQorICBQeUxvbmdfQXNMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmcKKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZworICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NpemVfdAorICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NzaXplX3QKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCisgIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0FzVm9pZFB0cgorICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNS5QeUxvbmdfRnJvbURvdWJsZQorICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nCisgIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nTG9uZworICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNpemVfdAorICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21Tc2l6ZV90CisgIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3RyaW5nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVm9pZFB0cgorICBQeUxvbmdfR2V0SW5mbz1weXRob24zNS5QeUxvbmdfR2V0SW5mbworICBQeUxvbmdfVHlwZT1weXRob24zNS5QeUxvbmdfVHlwZSBEQVRBCisgIFB5TWFwX1R5cGU9cHl0aG9uMzUuUHlNYXBfVHlwZSBEQVRBCisgIFB5TWFwcGluZ19DaGVjaz1weXRob24zNS5QeU1hcHBpbmdfQ2hlY2sKKyAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5CisgIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleVN0cmluZworICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzUuUHlNYXBwaW5nX0l0ZW1zCisgIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM1LlB5TWFwcGluZ19LZXlzCisgIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzUuUHlNYXBwaW5nX0xlbmd0aAorICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNS5QeU1hcHBpbmdfU2l6ZQorICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM1LlB5TWFwcGluZ19WYWx1ZXMKKyAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0U3RhdGUKKyAgUHlNb2R1bGVfTmV3PXB5dGhvbjM1LlB5TW9kdWxlX05ldworICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlX1R5cGUgREFUQQorICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKKyAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKKyAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNS5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKKyAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzUuUHlOdW1iZXJfQWJzb2x1dGUKKyAgUHlOdW1iZXJfQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0FkZAorICBQeU51bWJlcl9BbmQ9cHl0aG9uMzUuUHlOdW1iZXJfQW5kCisgIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNS5QeU51bWJlcl9Bc1NzaXplX3QKKyAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzUuUHlOdW1iZXJfQ2hlY2sKKyAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM1LlB5TnVtYmVyX0Rpdm1vZAorICBQeU51bWJlcl9GbG9hdD1weXRob24zNS5QeU51bWJlcl9GbG9hdAorICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9GbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBZGQKKyAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQW5kCisgIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTHNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKKyAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgorICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCisgIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgorICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAorICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQorICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKKyAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKKyAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAorICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKKyAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAorICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQorICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQorICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgorICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQorICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgorICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCisgIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKKyAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKKyAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQorICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKKyAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgorICBQeU9TX0FmdGVyRm9yaz1weXRob24zNS5QeU9TX0FmdGVyRm9yaworICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM1LlB5T1NfSW5pdEludGVycnVwdHMKKyAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzUuUHlPU19JbnB1dEhvb2sgREFUQQorICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM1LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKKyAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNS5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKKyAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM1LlB5T1NfZG91YmxlX3RvX3N0cmluZworICBQeU9TX2dldHNpZz1weXRob24zNS5QeU9TX2dldHNpZworICBQeU9TX215c3RyaWNtcD1weXRob24zNS5QeU9TX215c3RyaWNtcAorICBQeU9TX215c3RybmljbXA9cHl0aG9uMzUuUHlPU19teXN0cm5pY21wCisgIFB5T1Nfc2V0c2lnPXB5dGhvbjM1LlB5T1Nfc2V0c2lnCisgIFB5T1Nfc25wcmludGY9cHl0aG9uMzUuUHlPU19zbnByaW50ZgorICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzUuUHlPU19zdHJpbmdfdG9fZG91YmxlCisgIFB5T1Nfc3RydG9sPXB5dGhvbjM1LlB5T1Nfc3RydG9sCisgIFB5T1Nfc3RydG91bD1weXRob24zNS5QeU9TX3N0cnRvdWwKKyAgUHlPU192c25wcmludGY9cHl0aG9uMzUuUHlPU192c25wcmludGYKKyAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzUuUHlPYmplY3RfQVNDSUkKKyAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgorICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM1LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKKyAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKKyAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzUuUHlPYmplY3RfQnl0ZXMKKyAgUHlPYmplY3RfQ2FsbD1weXRob24zNS5QeU9iamVjdF9DYWxsCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb24KKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZAorICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncworICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxPYmplY3QKKyAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKKyAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCisgIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZworICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCisgIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKKyAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCisgIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKKyAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKKyAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCisgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCisgIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgorICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKKyAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAorICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCisgIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAorICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKKyAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCisgIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcworICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCisgIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKKyAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYworICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90CisgIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYworICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKKyAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKKyAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAorICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgorICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKKyAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQorICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKKyAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgorICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUgREFUQQorICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCisgIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3CisgIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KKyAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlcl9UeXBlIERBVEEKKyAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNS5QeU9EaWN0S2V5c19UeXBlIERBVEEKKyAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncworICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzUuUHlQcm9wZXJ0eV9UeXBlIERBVEEKKyAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeVJhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlSYW5nZV9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VfVHlwZSBEQVRBCisgIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNS5QeVJldmVyc2VkX1R5cGUgREFUQQorICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM1LlB5U2VxSXRlcl9OZXcKKyAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXFJdGVyX1R5cGUgREFUQQorICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ2hlY2sKKyAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db25jYXQKKyAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNS5QeVNlcXVlbmNlX0NvbnRhaW5zCisgIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db3VudAorICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxJdGVtCisgIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxTbGljZQorICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9GYXN0CisgIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0dldFNsaWNlCisgIFB5U2VxdWVuY2VfSW49cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbgorICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0CisgIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKKyAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNS5QeVNlcXVlbmNlX0luZGV4CisgIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM1LlB5U2VxdWVuY2VfTGVuZ3RoCisgIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNS5QeVNlcXVlbmNlX0xpc3QKKyAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9SZXBlYXQKKyAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0SXRlbQorICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2l6ZQorICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM1LlB5U2VxdWVuY2VfVHVwbGUKKyAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXRJdGVyX1R5cGUgREFUQQorICBQeVNldF9BZGQ9cHl0aG9uMzUuUHlTZXRfQWRkCisgIFB5U2V0X0NsZWFyPXB5dGhvbjM1LlB5U2V0X0NsZWFyCisgIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM1LlB5U2V0X0NvbnRhaW5zCisgIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzUuUHlTZXRfRGlzY2FyZAorICBQeVNldF9OZXc9cHl0aG9uMzUuUHlTZXRfTmV3CisgIFB5U2V0X1BvcD1weXRob24zNS5QeVNldF9Qb3AKKyAgUHlTZXRfU2l6ZT1weXRob24zNS5QeVNldF9TaXplCisgIFB5U2V0X1R5cGU9cHl0aG9uMzUuUHlTZXRfVHlwZSBEQVRBCisgIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXMKKyAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzRXgKKyAgUHlTbGljZV9OZXc9cHl0aG9uMzUuUHlTbGljZV9OZXcKKyAgUHlTbGljZV9UeXBlPXB5dGhvbjM1LlB5U2xpY2VfVHlwZSBEQVRBCisgIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNS5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQorICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9GaW5kTW9kdWxlCisgIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfQWRkTW9kdWxlCisgIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCisgIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQorICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U3VwZXJfVHlwZT1weXRob24zNS5QeVN1cGVyX1R5cGUgREFUQQorICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb24KKyAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKKyAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZGVycgorICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3Rkb3V0CisgIFB5U3lzX0dldE9iamVjdD1weXRob24zNS5QeVN5c19HZXRPYmplY3QKKyAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfSGFzV2Fybk9wdGlvbnMKKyAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19SZXNldFdhcm5PcHRpb25zCisgIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzUuUHlTeXNfU2V0QXJndgorICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzUuUHlTeXNfU2V0QXJndkV4CisgIFB5U3lzX1NldE9iamVjdD1weXRob24zNS5QeVN5c19TZXRPYmplY3QKKyAgUHlTeXNfU2V0UGF0aD1weXRob24zNS5QeVN5c19TZXRQYXRoCisgIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM1LlB5U3lzX1dyaXRlU3RkZXJyCisgIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM1LlB5U3lzX1dyaXRlU3Rkb3V0CisgIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9DbGVhcgorICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZQorICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50CisgIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0CisgIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldERpY3QKKyAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9OZXcKKyAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNS5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCisgIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNS5QeVRocmVhZFN0YXRlX1N3YXAKKyAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNS5QeVRyYWNlQmFja19IZXJlCisgIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM1LlB5VHJhY2VCYWNrX1ByaW50CisgIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCisgIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCisgIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKKyAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfR2V0SXRlbQorICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM1LlB5VHVwbGVfR2V0U2xpY2UKKyAgUHlUdXBsZV9OZXc9cHl0aG9uMzUuUHlUdXBsZV9OZXcKKyAgUHlUdXBsZV9QYWNrPXB5dGhvbjM1LlB5VHVwbGVfUGFjaworICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9TZXRJdGVtCisgIFB5VHVwbGVfU2l6ZT1weXRob24zNS5QeVR1cGxlX1NpemUKKyAgUHlUdXBsZV9UeXBlPXB5dGhvbjM1LlB5VHVwbGVfVHlwZSBEQVRBCisgIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM1LlB5VHlwZV9DbGVhckNhY2hlCisgIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWMKKyAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcworICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljQWxsb2MKKyAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNOZXcKKyAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM1LlB5VHlwZV9HZXRGbGFncworICBQeVR5cGVfR2V0U2xvdD1weXRob24zNS5QeVR5cGVfR2V0U2xvdAorICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM1LlB5VHlwZV9Jc1N1YnR5cGUKKyAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM1LlB5VHlwZV9Nb2RpZmllZAorICBQeVR5cGVfUmVhZHk9cHl0aG9uMzUuUHlUeXBlX1JlYWR5CisgIFB5VHlwZV9UeXBlPXB5dGhvbjM1LlB5VHlwZV9UeXBlIERBVEEKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNS5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kCisgIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZEFuZERlbAorICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZworICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfQXNXaWRlQ2hhcgorICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNS5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAorICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZQorICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM1LlB5VW5pY29kZV9Db25jYXQKKyAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM1LlB5VW5pY29kZV9Db250YWlucworICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvdW50CisgIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZQorICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUFTQ0lJCisgIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQorICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4CisgIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTQ29udmVydGVyCisgIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTRGVjb2RlcgorICBQeVVuaWNvZGVfRmluZD1weXRob24zNS5QeVVuaWNvZGVfRmluZAorICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCisgIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9yZGluYWwKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmcKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKKyAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRTaXplCisgIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzUuUHlVbmljb2RlX0lzSWRlbnRpZmllcgorICBQeVVuaWNvZGVfSm9pbj1weXRob24zNS5QeVVuaWNvZGVfSm9pbgorICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9QYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1JQYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNS5QeVVuaWNvZGVfUlNwbGl0CisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQorICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0CisgIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdGxpbmVzCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKKyAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKKyAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjcKKyAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCisgIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZworICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCisgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCisgIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZV9UeXBlIERBVEEKKyAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKKyAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdQcm94eQorICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdSZWYKKyAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNS5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlXcmFwcGVyX05ldz1weXRob24zNS5QeVdyYXBwZXJfTmV3CisgIFB5WmlwX1R5cGU9cHl0aG9uMzUuUHlaaXBfVHlwZSBEQVRBCisgIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM1LlB5X0FkZFBlbmRpbmdDYWxsCisgIFB5X0F0RXhpdD1weXRob24zNS5QeV9BdEV4aXQKKyAgUHlfQnVpbGRWYWx1ZT1weXRob24zNS5QeV9CdWlsZFZhbHVlCisgIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzUuUHlfQ29tcGlsZVN0cmluZworICBQeV9EZWNSZWY9cHl0aG9uMzUuUHlfRGVjUmVmCisgIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM1LlB5X0VuZEludGVycHJldGVyCisgIFB5X0V4aXQ9cHl0aG9uMzUuUHlfRXhpdAorICBQeV9GYXRhbEVycm9yPXB5dGhvbjM1LlB5X0ZhdGFsRXJyb3IKKyAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfRmluYWxpemU9cHl0aG9uMzUuUHlfRmluYWxpemUKKyAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM1LlB5X0dldEJ1aWxkSW5mbworICBQeV9HZXRDb21waWxlcj1weXRob24zNS5QeV9HZXRDb21waWxlcgorICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzUuUHlfR2V0Q29weXJpZ2h0CisgIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzUuUHlfR2V0RXhlY1ByZWZpeAorICBQeV9HZXRQYXRoPXB5dGhvbjM1LlB5X0dldFBhdGgKKyAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzUuUHlfR2V0UGxhdGZvcm0KKyAgUHlfR2V0UHJlZml4PXB5dGhvbjM1LlB5X0dldFByZWZpeAorICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCisgIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X0dldFByb2dyYW1OYW1lCisgIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfR2V0UHl0aG9uSG9tZQorICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9HZXRSZWN1cnNpb25MaW1pdAorICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM1LlB5X0dldFZlcnNpb24KKyAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfSW5jUmVmPXB5dGhvbjM1LlB5X0luY1JlZgorICBQeV9Jbml0aWFsaXplPXB5dGhvbjM1LlB5X0luaXRpYWxpemUKKyAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM1LlB5X0luaXRpYWxpemVFeAorICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5X0lzSW5pdGlhbGl6ZWQKKyAgUHlfTWFpbj1weXRob24zNS5QeV9NYWluCisgIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzUuUHlfTWFrZVBlbmRpbmdDYWxscworICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNS5QeV9OZXdJbnRlcnByZXRlcgorICBQeV9SZXByRW50ZXI9cHl0aG9uMzUuUHlfUmVwckVudGVyCisgIFB5X1JlcHJMZWF2ZT1weXRob24zNS5QeV9SZXByTGVhdmUKKyAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKKyAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCisgIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0CisgIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCisgIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKKyAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAorICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19NYWxsb2MKKyAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3CisgIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ld1ZhcgorICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19SZXNpemUKKyAgX1B5T2JqZWN0X05ldz1weXRob24zNS5fUHlPYmplY3RfTmV3CisgIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X05ld1ZhcgorICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuX1B5U3RhdGVfQWRkTW9kdWxlCisgIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfSW5pdAorICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYworICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKKyAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQorICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNS5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAorICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KKyAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQorICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKKyAgX1B5X0RlYWxsb2M9cHl0aG9uMzUuX1B5X0RlYWxsb2MKKyAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM1Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCisgIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNS5fUHlfRmFsc2VTdHJ1Y3QgREFUQQorICBfUHlfTm9uZVN0cnVjdD1weXRob24zNS5fUHlfTm9uZVN0cnVjdCBEQVRBCisgIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNS5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQorICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM1Ll9QeV9Td2FwcGVkT3AgREFUQQorICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNS5fUHlfVHJ1ZVN0cnVjdCBEQVRBCisgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAorICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCmRpZmYgLS1naXQgYS9QQy9weXRob24zLm1hayBiL1BDL3B5dGhvbjMubWFrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjhlN2FhLi4wMDAwMDAwCi0tLSBhL1BDL3B5dGhvbjMubWFrCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotJChPdXREaXIpcHl0aG9uMy5kbGw6CXB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIKLQljbCAvTEQgL0ZlJChPdXREaXIpcHl0aG9uMy5kbGwgcHl0aG9uM2RsbC5jIHB5dGhvbjMuZGVmICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIKLQotJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYjoJcHl0aG9uMzRzdHViLmRlZgotCWxpYiAvZGVmOnB5dGhvbjM0c3R1Yi5kZWYgL291dDokKE91dERpcilweXRob24zNHN0dWIubGliIC9NQUNISU5FOiQoTUFDSElORSkKLQotY2xlYW46Ci0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMy5kbGwgZGVsICQoT3V0RGlyKXB5dGhvbjMuZGxsCi0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMy5saWIgZGVsICQoT3V0RGlyKXB5dGhvbjMubGliCi0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYiBkZWwgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYgotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjMuZXhwIGRlbCAkKE91dERpcilweXRob24zLmV4cAotCUlGIEVYSVNUICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5leHAgZGVsICQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5leHAKLQotcmVidWlsZDogY2xlYW4gJChPdXREaXIpcHl0aG9uMy5kbGwKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjM0Z2VuLnB5IGIvUEMvcHl0aG9uMzRnZW4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MGNlMTEuLjAwMDAwMDAKLS0tIGEvUEMvcHl0aG9uMzRnZW4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0jIEdlbmVyYXRlIHB5dGhvbjM0c3R1Yi5kZWYgb3V0IG9mIHB5dGhvbjMuZGVmCi0jIFRoZSByZWd1bGFyIGltcG9ydCBsaWJyYXJ5IGNhbm5vdCBiZSB1c2VkLAotIyBzaW5jZSBpdCBkb2Vzbid0IHByb3ZpZGUgdGhlIHJpZ2h0IHN5bWJvbHMgZm9yCi0jIGRhdGEgZm9yd2FyZGluZwotb3V0ID0gb3BlbigicHl0aG9uMzRzdHViLmRlZiIsICJ3IikKLW91dC53cml0ZSgnTElCUkFSWSAicHl0aG9uMzQiXG4nKQotb3V0LndyaXRlKCdFWFBPUlRTXG4nKQotCi1pbnAgPSBvcGVuKCJweXRob24zLmRlZiIpCi1saW5lID0gaW5wLnJlYWRsaW5lKCkKLXdoaWxlIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCc7Jyk6Ci0gICAgbGluZSA9IGlucC5yZWFkbGluZSgpCi1saW5lID0gaW5wLnJlYWRsaW5lKCkgIyBMSUJSQVJZCi1hc3NlcnQgbGluZS5zdHJpcCgpPT0nRVhQT1JUUycKLQotZm9yIGxpbmUgaW4gaW5wOgotICAgICMgU1lNMT1weXRob24zNC5TWU0yWyBEQVRBXQotICAgIGhlYWQsIHRhaWwgPSBsaW5lLnNwbGl0KCcuJykKLSAgICBpZiAnREFUQScgaW4gdGFpbDoKLSAgICAgICAgc3ltYm9sLCB0YWlsID0gdGFpbC5zcGxpdCgnICcpCi0gICAgZWxzZToKLSAgICAgICAgc3ltYm9sID0gdGFpbC5zdHJpcCgpCi0gICAgb3V0LndyaXRlKHN5bWJvbCsnXG4nKQotCi1pbnAuY2xvc2UoKQotb3V0LmNsb3NlKCkKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjM0c3R1Yi5kZWYgYi9QQy9weXRob24zNHN0dWIuZGVmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDc0Y2YzLi4wMDAwMDAwCi0tLSBhL1BDL3B5dGhvbjM0c3R1Yi5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSw3MDAgKzAsMCBAQAotTElCUkFSWSAicHl0aG9uMzQiCi1FWFBPUlRTCi1QeUFyZ19QYXJzZQotUHlBcmdfUGFyc2VUdXBsZQotUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCi1QeUFyZ19VbnBhY2tUdXBsZQotUHlBcmdfVmFQYXJzZQotUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKLVB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwotUHlCYXNlT2JqZWN0X1R5cGUKLVB5Qm9vbF9Gcm9tTG9uZwotUHlCb29sX1R5cGUKLVB5Qnl0ZUFycmF5SXRlcl9UeXBlCi1QeUJ5dGVBcnJheV9Bc1N0cmluZwotUHlCeXRlQXJyYXlfQ29uY2F0Ci1QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0Ci1QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotUHlCeXRlQXJyYXlfUmVzaXplCi1QeUJ5dGVBcnJheV9TaXplCi1QeUJ5dGVBcnJheV9UeXBlCi1QeUJ5dGVzSXRlcl9UeXBlCi1QeUJ5dGVzX0FzU3RyaW5nCi1QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQotUHlCeXRlc19Db25jYXQKLVB5Qnl0ZXNfQ29uY2F0QW5kRGVsCi1QeUJ5dGVzX0RlY29kZUVzY2FwZQotUHlCeXRlc19Gcm9tRm9ybWF0Ci1QeUJ5dGVzX0Zyb21Gb3JtYXRWCi1QeUJ5dGVzX0Zyb21PYmplY3QKLVB5Qnl0ZXNfRnJvbVN0cmluZwotUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotUHlCeXRlc19SZXByCi1QeUJ5dGVzX1NpemUKLVB5Qnl0ZXNfVHlwZQotUHlDRnVuY3Rpb25fQ2FsbAotUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAotUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLVB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi1QeUNGdW5jdGlvbl9HZXRTZWxmCi1QeUNGdW5jdGlvbl9OZXcKLVB5Q0Z1bmN0aW9uX05ld0V4Ci1QeUNGdW5jdGlvbl9UeXBlCi1QeUNhbGxJdGVyX05ldwotUHlDYWxsSXRlcl9UeXBlCi1QeUNhbGxhYmxlX0NoZWNrCi1QeUNhcHN1bGVfR2V0Q29udGV4dAotUHlDYXBzdWxlX0dldERlc3RydWN0b3IKLVB5Q2Fwc3VsZV9HZXROYW1lCi1QeUNhcHN1bGVfR2V0UG9pbnRlcgotUHlDYXBzdWxlX0ltcG9ydAotUHlDYXBzdWxlX0lzVmFsaWQKLVB5Q2Fwc3VsZV9OZXcKLVB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci1QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgotUHlDYXBzdWxlX1NldE5hbWUKLVB5Q2Fwc3VsZV9TZXRQb2ludGVyCi1QeUNhcHN1bGVfVHlwZQotUHlDbGFzc01ldGhvZERlc2NyX1R5cGUKLVB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwotUHlDb2RlY19EZWNvZGUKLVB5Q29kZWNfRGVjb2RlcgotUHlDb2RlY19FbmNvZGUKLVB5Q29kZWNfRW5jb2RlcgotUHlDb2RlY19JZ25vcmVFcnJvcnMKLVB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi1QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotUHlDb2RlY19Lbm93bkVuY29kaW5nCi1QeUNvZGVjX0xvb2t1cEVycm9yCi1QeUNvZGVjX1JlZ2lzdGVyCi1QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLVB5Q29kZWNfUmVwbGFjZUVycm9ycwotUHlDb2RlY19TdHJlYW1SZWFkZXIKLVB5Q29kZWNfU3RyZWFtV3JpdGVyCi1QeUNvZGVjX1N0cmljdEVycm9ycwotUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotUHlDb21wbGV4X0Zyb21Eb3VibGVzCi1QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi1QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi1QeUNvbXBsZXhfVHlwZQotUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotUHlEZXNjcl9OZXdHZXRTZXQKLVB5RGVzY3JfTmV3TWVtYmVyCi1QeURlc2NyX05ld01ldGhvZAotUHlEaWN0SXRlbXNfVHlwZQotUHlEaWN0SXRlckl0ZW1fVHlwZQotUHlEaWN0SXRlcktleV9UeXBlCi1QeURpY3RJdGVyVmFsdWVfVHlwZQotUHlEaWN0S2V5c19UeXBlCi1QeURpY3RQcm94eV9OZXcKLVB5RGljdFByb3h5X1R5cGUKLVB5RGljdFZhbHVlc19UeXBlCi1QeURpY3RfQ2xlYXIKLVB5RGljdF9Db250YWlucwotUHlEaWN0X0NvcHkKLVB5RGljdF9EZWxJdGVtCi1QeURpY3RfRGVsSXRlbVN0cmluZwotUHlEaWN0X0dldEl0ZW0KLVB5RGljdF9HZXRJdGVtU3RyaW5nCi1QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotUHlEaWN0X0l0ZW1zCi1QeURpY3RfS2V5cwotUHlEaWN0X01lcmdlCi1QeURpY3RfTWVyZ2VGcm9tU2VxMgotUHlEaWN0X05ldwotUHlEaWN0X05leHQKLVB5RGljdF9TZXRJdGVtCi1QeURpY3RfU2V0SXRlbVN0cmluZwotUHlEaWN0X1NpemUKLVB5RGljdF9UeXBlCi1QeURpY3RfVXBkYXRlCi1QeURpY3RfVmFsdWVzCi1QeUVsbGlwc2lzX1R5cGUKLVB5RW51bV9UeXBlCi1QeUVycl9CYWRBcmd1bWVudAotUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi1QeUVycl9DaGVja1NpZ25hbHMKLVB5RXJyX0NsZWFyCi1QeUVycl9EaXNwbGF5Ci1QeUVycl9FeGNlcHRpb25NYXRjaGVzCi1QeUVycl9GZXRjaAotUHlFcnJfRm9ybWF0Ci1QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLVB5RXJyX05ld0V4Y2VwdGlvbgotUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotUHlFcnJfTm9NZW1vcnkKLVB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotUHlFcnJfT2NjdXJyZWQKLVB5RXJyX1ByaW50Ci1QeUVycl9QcmludEV4Ci1QeUVycl9Qcm9ncmFtVGV4dAotUHlFcnJfUmVzdG9yZQotUHlFcnJfU2V0RnJvbUVycm5vCi1QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLVB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotUHlFcnJfU2V0SW50ZXJydXB0Ci1QeUVycl9TZXROb25lCi1QeUVycl9TZXRPYmplY3QKLVB5RXJyX1NldFN0cmluZwotUHlFcnJfU3ludGF4TG9jYXRpb24KLVB5RXJyX1dhcm5FeAotUHlFcnJfV2FybkV4cGxpY2l0Ci1QeUVycl9XYXJuRm9ybWF0Ci1QeUVycl9Xcml0ZVVucmFpc2FibGUKLVB5RXZhbF9BY3F1aXJlTG9jawotUHlFdmFsX0FjcXVpcmVUaHJlYWQKLVB5RXZhbF9DYWxsRnVuY3Rpb24KLVB5RXZhbF9DYWxsTWV0aG9kCi1QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotUHlFdmFsX0V2YWxDb2RlCi1QeUV2YWxfRXZhbENvZGVFeAotUHlFdmFsX0V2YWxGcmFtZQotUHlFdmFsX0V2YWxGcmFtZUV4Ci1QeUV2YWxfR2V0QnVpbHRpbnMKLVB5RXZhbF9HZXRDYWxsU3RhdHMKLVB5RXZhbF9HZXRGcmFtZQotUHlFdmFsX0dldEZ1bmNEZXNjCi1QeUV2YWxfR2V0RnVuY05hbWUKLVB5RXZhbF9HZXRHbG9iYWxzCi1QeUV2YWxfR2V0TG9jYWxzCi1QeUV2YWxfSW5pdFRocmVhZHMKLVB5RXZhbF9SZUluaXRUaHJlYWRzCi1QeUV2YWxfUmVsZWFzZUxvY2sKLVB5RXZhbF9SZWxlYXNlVGhyZWFkCi1QeUV2YWxfUmVzdG9yZVRocmVhZAotUHlFdmFsX1NhdmVUaHJlYWQKLVB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLVB5RXhjX0FyaXRobWV0aWNFcnJvcgotUHlFeGNfQXNzZXJ0aW9uRXJyb3IKLVB5RXhjX0F0dHJpYnV0ZUVycm9yCi1QeUV4Y19CYXNlRXhjZXB0aW9uCi1QeUV4Y19CdWZmZXJFcnJvcgotUHlFeGNfQnl0ZXNXYXJuaW5nCi1QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcKLVB5RXhjX0VPRkVycm9yCi1QeUV4Y19FbnZpcm9ubWVudEVycm9yCi1QeUV4Y19FeGNlcHRpb24KLVB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcgotUHlFeGNfRnV0dXJlV2FybmluZwotUHlFeGNfR2VuZXJhdG9yRXhpdAotUHlFeGNfSU9FcnJvcgotUHlFeGNfSW1wb3J0RXJyb3IKLVB5RXhjX0ltcG9ydFdhcm5pbmcKLVB5RXhjX0luZGVudGF0aW9uRXJyb3IKLVB5RXhjX0luZGV4RXJyb3IKLVB5RXhjX0tleUVycm9yCi1QeUV4Y19LZXlib2FyZEludGVycnVwdAotUHlFeGNfTG9va3VwRXJyb3IKLVB5RXhjX01lbW9yeUVycm9yCi1QeUV4Y19NZW1vcnlFcnJvckluc3QKLVB5RXhjX05hbWVFcnJvcgotUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcgotUHlFeGNfT1NFcnJvcgotUHlFeGNfT3ZlcmZsb3dFcnJvcgotUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZwotUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0Ci1QeUV4Y19SZWZlcmVuY2VFcnJvcgotUHlFeGNfUnVudGltZUVycm9yCi1QeUV4Y19SdW50aW1lV2FybmluZwotUHlFeGNfU3RvcEl0ZXJhdGlvbgotUHlFeGNfU3ludGF4RXJyb3IKLVB5RXhjX1N5bnRheFdhcm5pbmcKLVB5RXhjX1N5c3RlbUVycm9yCi1QeUV4Y19TeXN0ZW1FeGl0Ci1QeUV4Y19UYWJFcnJvcgotUHlFeGNfVHlwZUVycm9yCi1QeUV4Y19VbmJvdW5kTG9jYWxFcnJvcgotUHlFeGNfVW5pY29kZURlY29kZUVycm9yCi1QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IKLVB5RXhjX1VuaWNvZGVFcnJvcgotUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yCi1QeUV4Y19Vbmljb2RlV2FybmluZwotUHlFeGNfVXNlcldhcm5pbmcKLVB5RXhjX1ZhbHVlRXJyb3IKLVB5RXhjX1dhcm5pbmcKLVB5RXhjX1plcm9EaXZpc2lvbkVycm9yCi1QeUV4Y2VwdGlvbl9HZXRDYXVzZQotUHlFeGNlcHRpb25fR2V0Q29udGV4dAotUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCi1QeUV4Y2VwdGlvbl9TZXRDYXVzZQotUHlFeGNlcHRpb25fU2V0Q29udGV4dAotUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCi1QeUZpbGVfRnJvbUZkCi1QeUZpbGVfR2V0TGluZQotUHlGaWxlX1dyaXRlT2JqZWN0Ci1QeUZpbGVfV3JpdGVTdHJpbmcKLVB5RmlsdGVyX1R5cGUKLVB5RmxvYXRfQXNEb3VibGUKLVB5RmxvYXRfRnJvbURvdWJsZQotUHlGbG9hdF9Gcm9tU3RyaW5nCi1QeUZsb2F0X0dldEluZm8KLVB5RmxvYXRfR2V0TWF4Ci1QeUZsb2F0X0dldE1pbgotUHlGbG9hdF9UeXBlCi1QeUZyb3plblNldF9OZXcKLVB5RnJvemVuU2V0X1R5cGUKLVB5R0NfQ29sbGVjdAotUHlHSUxTdGF0ZV9FbnN1cmUKLVB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi1QeUdJTFN0YXRlX1JlbGVhc2UKLVB5R2V0U2V0RGVzY3JfVHlwZQotUHlJbXBvcnRfQWRkTW9kdWxlCi1QeUltcG9ydF9BcHBlbmRJbml0dGFiCi1QeUltcG9ydF9DbGVhbnVwCi1QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCi1QeUltcG9ydF9HZXRJbXBvcnRlcgotUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLVB5SW1wb3J0X0dldE1hZ2ljVGFnCi1QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci1QeUltcG9ydF9JbXBvcnQKLVB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi1QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLVB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLVB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLVB5SXRlcl9OZXh0Ci1QeUxpc3RJdGVyX1R5cGUKLVB5TGlzdFJldkl0ZXJfVHlwZQotUHlMaXN0X0FwcGVuZAotUHlMaXN0X0FzVHVwbGUKLVB5TGlzdF9HZXRJdGVtCi1QeUxpc3RfR2V0U2xpY2UKLVB5TGlzdF9JbnNlcnQKLVB5TGlzdF9OZXcKLVB5TGlzdF9SZXZlcnNlCi1QeUxpc3RfU2V0SXRlbQotUHlMaXN0X1NldFNsaWNlCi1QeUxpc3RfU2l6ZQotUHlMaXN0X1NvcnQKLVB5TGlzdF9UeXBlCi1QeUxvbmdSYW5nZUl0ZXJfVHlwZQotUHlMb25nX0FzRG91YmxlCi1QeUxvbmdfQXNMb25nCi1QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLVB5TG9uZ19Bc0xvbmdMb25nCi1QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci1QeUxvbmdfQXNTaXplX3QKLVB5TG9uZ19Bc1NzaXplX3QKLVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLVB5TG9uZ19Bc1ZvaWRQdHIKLVB5TG9uZ19Gcm9tRG91YmxlCi1QeUxvbmdfRnJvbUxvbmcKLVB5TG9uZ19Gcm9tTG9uZ0xvbmcKLVB5TG9uZ19Gcm9tU2l6ZV90Ci1QeUxvbmdfRnJvbVNzaXplX3QKLVB5TG9uZ19Gcm9tU3RyaW5nCi1QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi1QeUxvbmdfRnJvbVZvaWRQdHIKLVB5TG9uZ19HZXRJbmZvCi1QeUxvbmdfVHlwZQotUHlNYXBfVHlwZQotUHlNYXBwaW5nX0NoZWNrCi1QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotUHlNYXBwaW5nX0hhc0tleQotUHlNYXBwaW5nX0hhc0tleVN0cmluZwotUHlNYXBwaW5nX0l0ZW1zCi1QeU1hcHBpbmdfS2V5cwotUHlNYXBwaW5nX0xlbmd0aAotUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLVB5TWFwcGluZ19TaXplCi1QeU1hcHBpbmdfVmFsdWVzCi1QeU1lbV9GcmVlCi1QeU1lbV9NYWxsb2MKLVB5TWVtX1JlYWxsb2MKLVB5TWVtYmVyRGVzY3JfVHlwZQotUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKLVB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi1QeU1lbW9yeVZpZXdfVHlwZQotUHlNZXRob2REZXNjcl9UeXBlCi1QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotUHlNb2R1bGVfQWRkT2JqZWN0Ci1QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAotUHlNb2R1bGVfQ3JlYXRlMgotUHlNb2R1bGVfR2V0RGVmCi1QeU1vZHVsZV9HZXREaWN0Ci1QeU1vZHVsZV9HZXRGaWxlbmFtZQotUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKLVB5TW9kdWxlX0dldE5hbWUKLVB5TW9kdWxlX0dldFN0YXRlCi1QeU1vZHVsZV9OZXcKLVB5TW9kdWxlX1R5cGUKLVB5TnVsbEltcG9ydGVyX1R5cGUKLVB5TnVtYmVyX0Fic29sdXRlCi1QeU51bWJlcl9BZGQKLVB5TnVtYmVyX0FuZAotUHlOdW1iZXJfQXNTc2l6ZV90Ci1QeU51bWJlcl9DaGVjawotUHlOdW1iZXJfRGl2bW9kCi1QeU51bWJlcl9GbG9hdAotUHlOdW1iZXJfRmxvb3JEaXZpZGUKLVB5TnVtYmVyX0luUGxhY2VBZGQKLVB5TnVtYmVyX0luUGxhY2VBbmQKLVB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5Ci1QeU51bWJlcl9JblBsYWNlT3IKLVB5TnVtYmVyX0luUGxhY2VQb3dlcgotUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci1QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotUHlOdW1iZXJfSW5QbGFjZVhvcgotUHlOdW1iZXJfSW5kZXgKLVB5TnVtYmVyX0ludmVydAotUHlOdW1iZXJfTG9uZwotUHlOdW1iZXJfTHNoaWZ0Ci1QeU51bWJlcl9NdWx0aXBseQotUHlOdW1iZXJfTmVnYXRpdmUKLVB5TnVtYmVyX09yCi1QeU51bWJlcl9Qb3NpdGl2ZQotUHlOdW1iZXJfUG93ZXIKLVB5TnVtYmVyX1JlbWFpbmRlcgotUHlOdW1iZXJfUnNoaWZ0Ci1QeU51bWJlcl9TdWJ0cmFjdAotUHlOdW1iZXJfVG9CYXNlCi1QeU51bWJlcl9UcnVlRGl2aWRlCi1QeU51bWJlcl9Yb3IKLVB5T1NfQWZ0ZXJGb3JrCi1QeU9TX0luaXRJbnRlcnJ1cHRzCi1QeU9TX0lucHV0SG9vawotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcgotUHlPU19kb3VibGVfdG9fc3RyaW5nCi1QeU9TX2dldHNpZwotUHlPU19teXN0cmljbXAKLVB5T1NfbXlzdHJuaWNtcAotUHlPU19zZXRzaWcKLVB5T1Nfc25wcmludGYKLVB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotUHlPU19zdHJ0b2wKLVB5T1Nfc3RydG91bAotUHlPU192c25wcmludGYKLVB5T2JqZWN0X0FTQ0lJCi1QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLVB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLVB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotUHlPYmplY3RfQnl0ZXMKLVB5T2JqZWN0X0NhbGwKLVB5T2JqZWN0X0NhbGxGdW5jdGlvbgotUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotUHlPYmplY3RfQ2FsbE1ldGhvZAotUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLVB5T2JqZWN0X0NhbGxPYmplY3QKLVB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotUHlPYmplY3RfRGVsSXRlbQotUHlPYmplY3RfRGVsSXRlbVN0cmluZwotUHlPYmplY3RfRGlyCi1QeU9iamVjdF9Gb3JtYXQKLVB5T2JqZWN0X0ZyZWUKLVB5T2JqZWN0X0dDX0RlbAotUHlPYmplY3RfR0NfVHJhY2sKLVB5T2JqZWN0X0dDX1VuVHJhY2sKLVB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi1QeU9iamVjdF9HZW5lcmljU2V0QXR0cgotUHlPYmplY3RfR2V0QXR0cgotUHlPYmplY3RfR2V0QXR0clN0cmluZwotUHlPYmplY3RfR2V0SXRlbQotUHlPYmplY3RfR2V0SXRlcgotUHlPYmplY3RfSGFzQXR0cgotUHlPYmplY3RfSGFzQXR0clN0cmluZwotUHlPYmplY3RfSGFzaAotUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi1QeU9iamVjdF9Jbml0Ci1QeU9iamVjdF9Jbml0VmFyCi1QeU9iamVjdF9Jc0luc3RhbmNlCi1QeU9iamVjdF9Jc1N1YmNsYXNzCi1QeU9iamVjdF9Jc1RydWUKLVB5T2JqZWN0X0xlbmd0aAotUHlPYmplY3RfTWFsbG9jCi1QeU9iamVjdF9Ob3QKLVB5T2JqZWN0X1JlYWxsb2MKLVB5T2JqZWN0X1JlcHIKLVB5T2JqZWN0X1JpY2hDb21wYXJlCi1QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKLVB5T2JqZWN0X1NlbGZJdGVyCi1QeU9iamVjdF9TZXRBdHRyCi1QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi1QeU9iamVjdF9TZXRJdGVtCi1QeU9iamVjdF9TaXplCi1QeU9iamVjdF9TdHIKLVB5T2JqZWN0X1R5cGUKLVB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi1QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi1QeVByb3BlcnR5X1R5cGUKLVB5UmFuZ2VJdGVyX1R5cGUKLVB5UmFuZ2VfVHlwZQotUHlSZXZlcnNlZF9UeXBlCi1QeVNlcUl0ZXJfTmV3Ci1QeVNlcUl0ZXJfVHlwZQotUHlTZXF1ZW5jZV9DaGVjawotUHlTZXF1ZW5jZV9Db25jYXQKLVB5U2VxdWVuY2VfQ29udGFpbnMKLVB5U2VxdWVuY2VfQ291bnQKLVB5U2VxdWVuY2VfRGVsSXRlbQotUHlTZXF1ZW5jZV9EZWxTbGljZQotUHlTZXF1ZW5jZV9GYXN0Ci1QeVNlcXVlbmNlX0dldEl0ZW0KLVB5U2VxdWVuY2VfR2V0U2xpY2UKLVB5U2VxdWVuY2VfSW4KLVB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci1QeVNlcXVlbmNlX0luZGV4Ci1QeVNlcXVlbmNlX0xlbmd0aAotUHlTZXF1ZW5jZV9MaXN0Ci1QeVNlcXVlbmNlX1JlcGVhdAotUHlTZXF1ZW5jZV9TZXRJdGVtCi1QeVNlcXVlbmNlX1NldFNsaWNlCi1QeVNlcXVlbmNlX1NpemUKLVB5U2VxdWVuY2VfVHVwbGUKLVB5U2V0SXRlcl9UeXBlCi1QeVNldF9BZGQKLVB5U2V0X0NsZWFyCi1QeVNldF9Db250YWlucwotUHlTZXRfRGlzY2FyZAotUHlTZXRfTmV3Ci1QeVNldF9Qb3AKLVB5U2V0X1NpemUKLVB5U2V0X1R5cGUKLVB5U2xpY2VfR2V0SW5kaWNlcwotUHlTbGljZV9HZXRJbmRpY2VzRXgKLVB5U2xpY2VfTmV3Ci1QeVNsaWNlX1R5cGUKLVB5U29ydFdyYXBwZXJfVHlwZQotUHlTdGF0ZV9GaW5kTW9kdWxlCi1QeVN0YXRlX0FkZE1vZHVsZQotUHlTdGF0ZV9SZW1vdmVNb2R1bGUKLVB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLVB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi1QeVN1cGVyX1R5cGUKLVB5U3lzX0FkZFdhcm5PcHRpb24KLVB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi1QeVN5c19Gb3JtYXRTdGRlcnIKLVB5U3lzX0Zvcm1hdFN0ZG91dAotUHlTeXNfR2V0T2JqZWN0Ci1QeVN5c19IYXNXYXJuT3B0aW9ucwotUHlTeXNfUmVzZXRXYXJuT3B0aW9ucwotUHlTeXNfU2V0QXJndgotUHlTeXNfU2V0QXJndkV4Ci1QeVN5c19TZXRPYmplY3QKLVB5U3lzX1NldFBhdGgKLVB5U3lzX1dyaXRlU3RkZXJyCi1QeVN5c19Xcml0ZVN0ZG91dAotUHlUaHJlYWRTdGF0ZV9DbGVhcgotUHlUaHJlYWRTdGF0ZV9EZWxldGUKLVB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAotUHlUaHJlYWRTdGF0ZV9HZXQKLVB5VGhyZWFkU3RhdGVfR2V0RGljdAotUHlUaHJlYWRTdGF0ZV9OZXcKLVB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLVB5VGhyZWFkU3RhdGVfU3dhcAotUHlUcmFjZUJhY2tfSGVyZQotUHlUcmFjZUJhY2tfUHJpbnQKLVB5VHJhY2VCYWNrX1R5cGUKLVB5VHVwbGVJdGVyX1R5cGUKLVB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotUHlUdXBsZV9HZXRJdGVtCi1QeVR1cGxlX0dldFNsaWNlCi1QeVR1cGxlX05ldwotUHlUdXBsZV9QYWNrCi1QeVR1cGxlX1NldEl0ZW0KLVB5VHVwbGVfU2l6ZQotUHlUdXBsZV9UeXBlCi1QeVR5cGVfQ2xlYXJDYWNoZQotUHlUeXBlX0Zyb21TcGVjCi1QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKLVB5VHlwZV9HZW5lcmljQWxsb2MKLVB5VHlwZV9HZW5lcmljTmV3Ci1QeVR5cGVfR2V0RmxhZ3MKLVB5VHlwZV9HZXRTbG90Ci1QeVR5cGVfSXNTdWJ0eXBlCi1QeVR5cGVfTW9kaWZpZWQKLVB5VHlwZV9SZWFkeQotUHlUeXBlX1R5cGUKLVB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLVB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLVB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci1QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLVB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLVB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLVB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi1QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLVB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci1QeVVuaWNvZGVJdGVyX1R5cGUKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLVB5VW5pY29kZV9BcHBlbmQKLVB5VW5pY29kZV9BcHBlbmRBbmREZWwKLVB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi1QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCi1QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci1QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQotUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLVB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLVB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCi1QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi1QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi1QeVVuaWNvZGVfQXNXaWRlQ2hhcgotUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKLVB5VW5pY29kZV9Db21wYXJlCi1QeVVuaWNvZGVfQ29uY2F0Ci1QeVVuaWNvZGVfQ29udGFpbnMKLVB5VW5pY29kZV9Db3VudAotUHlVbmljb2RlX0RlY29kZQotUHlVbmljb2RlX0RlY29kZUFTQ0lJCi1QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAotUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLVB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLVB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi1QeVVuaWNvZGVfRGVjb2RlVVRGMTYKLVB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCi1QeVVuaWNvZGVfRGVjb2RlVVRGMzIKLVB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi1QeVVuaWNvZGVfRGVjb2RlVVRGOAotUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKLVB5VW5pY29kZV9GU0NvbnZlcnRlcgotUHlVbmljb2RlX0ZTRGVjb2RlcgotUHlVbmljb2RlX0ZpbmQKLVB5VW5pY29kZV9Gb3JtYXQKLVB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotUHlVbmljb2RlX0Zyb21Gb3JtYXQKLVB5VW5pY29kZV9Gcm9tRm9ybWF0VgotUHlVbmljb2RlX0Zyb21PYmplY3QKLVB5VW5pY29kZV9Gcm9tT3JkaW5hbAotUHlVbmljb2RlX0Zyb21TdHJpbmcKLVB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgotUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZwotUHlVbmljb2RlX0dldFNpemUKLVB5VW5pY29kZV9Jc0lkZW50aWZpZXIKLVB5VW5pY29kZV9Kb2luCi1QeVVuaWNvZGVfUGFydGl0aW9uCi1QeVVuaWNvZGVfUlBhcnRpdGlvbgotUHlVbmljb2RlX1JTcGxpdAotUHlVbmljb2RlX1JlcGxhY2UKLVB5VW5pY29kZV9SZXNpemUKLVB5VW5pY29kZV9SaWNoQ29tcGFyZQotUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotUHlVbmljb2RlX1NwbGl0Ci1QeVVuaWNvZGVfU3BsaXRsaW5lcwotUHlVbmljb2RlX1RhaWxtYXRjaAotUHlVbmljb2RlX1RyYW5zbGF0ZQotUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi1QeVVuaWNvZGVfRGVjb2RlVVRGNwotUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAotUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKLVB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAotUHlVbmljb2RlX0ludGVybkluUGxhY2UKLVB5VW5pY29kZV9UeXBlCi1QeVdlYWtyZWZfR2V0T2JqZWN0Ci1QeVdlYWtyZWZfTmV3UHJveHkKLVB5V2Vha3JlZl9OZXdSZWYKLVB5V3JhcHBlckRlc2NyX1R5cGUKLVB5V3JhcHBlcl9OZXcKLVB5WmlwX1R5cGUKLVB5X0FkZFBlbmRpbmdDYWxsCi1QeV9BdEV4aXQKLVB5X0J1aWxkVmFsdWUKLVB5X0NvbXBpbGVTdHJpbmcKLVB5X0RlY1JlZgotUHlfRW5kSW50ZXJwcmV0ZXIKLVB5X0V4aXQKLVB5X0ZhdGFsRXJyb3IKLVB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcKLVB5X0ZpbmFsaXplCi1QeV9HZXRCdWlsZEluZm8KLVB5X0dldENvbXBpbGVyCi1QeV9HZXRDb3B5cmlnaHQKLVB5X0dldEV4ZWNQcmVmaXgKLVB5X0dldFBhdGgKLVB5X0dldFBsYXRmb3JtCi1QeV9HZXRQcmVmaXgKLVB5X0dldFByb2dyYW1GdWxsUGF0aAotUHlfR2V0UHJvZ3JhbU5hbWUKLVB5X0dldFB5dGhvbkhvbWUKLVB5X0dldFJlY3Vyc2lvbkxpbWl0Ci1QeV9HZXRWZXJzaW9uCi1QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nCi1QeV9JbmNSZWYKLVB5X0luaXRpYWxpemUKLVB5X0luaXRpYWxpemVFeAotUHlfSXNJbml0aWFsaXplZAotUHlfTWFpbgotUHlfTWFrZVBlbmRpbmdDYWxscwotUHlfTmV3SW50ZXJwcmV0ZXIKLVB5X1JlcHJFbnRlcgotUHlfUmVwckxlYXZlCi1QeV9TZXRQcm9ncmFtTmFtZQotUHlfU2V0UHl0aG9uSG9tZQotUHlfU2V0UmVjdXJzaW9uTGltaXQKLVB5X1N5bXRhYmxlU3RyaW5nCi1QeV9WYUJ1aWxkVmFsdWUKLV9QeUVycl9CYWRJbnRlcm5hbENhbGwKLV9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKLV9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi1fUHlPYmplY3RfR0NfTWFsbG9jCi1fUHlPYmplY3RfR0NfTmV3Ci1fUHlPYmplY3RfR0NfTmV3VmFyCi1fUHlPYmplY3RfR0NfUmVzaXplCi1fUHlPYmplY3RfTmV3Ci1fUHlPYmplY3RfTmV3VmFyCi1fUHlTdGF0ZV9BZGRNb2R1bGUKLV9QeVRocmVhZFN0YXRlX0luaXQKLV9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi1fUHlUcmFzaF9kZWxldGVfbGF0ZXIKLV9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nCi1fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZQotX1B5V2Vha3JlZl9Qcm94eVR5cGUKLV9QeVdlYWtyZWZfUmVmVHlwZQotX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLV9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0Ci1fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCi1fUHlfRGVhbGxvYwotX1B5X0VsbGlwc2lzT2JqZWN0Ci1fUHlfRmFsc2VTdHJ1Y3QKLV9QeV9Ob25lU3RydWN0Ci1fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QKLV9QeV9Td2FwcGVkT3AKLV9QeV9UcnVlU3RydWN0Ci1fUHlfVmFCdWlsZFZhbHVlX1NpemVUCi1fUHlBcmdfUGFyc2VfU2l6ZVQKLV9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi1fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi1fUHlBcmdfVmFQYXJzZV9TaXplVAotX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi1fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX2V4ZS5yYyBiL1BDL3B5dGhvbl9leGUucmMKaW5kZXggMTRlMjU3NC4uOTE3ODVhMSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uX2V4ZS5yYworKysgYi9QQy9weXRob25fZXhlLnJjCkBAIC0xICsxLDQ5IEBACi0xICAgICAgICAgICBJQ09OICAgIERJU0NBUkRBQkxFICAgICAicHljb24uaWNvIiAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJweWNvbi5pY28iIAorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gUFlWRVJTSU9ONjQKKyBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAorIEZJTEVGTEFHU01BU0sgMHgzZkwKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgVlNfRkZfREVCVUcKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwKKyNlbmRpZgorIEZJTEVPUyBWT1NfX1dJTkRPV1MzMgorIEZJTEVUWVBFIFZGVF9BUFAKKyBGSUxFU1VCVFlQRSAweDBMCitCRUdJTgorICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBCTE9DSyAiMDAwMDA0YjAiCisgICAgICAgIEJFR0lOCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCBQWVRIT05fQ09NUEFOWSAiXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiUHl0aG9uIENvbnNvbGVcMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9uIiBQWVRIT05fREVCVUdfRVhUICIuZXhlXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHgwLCAxMjAwCisgICAgRU5ECitFTkQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9udC5yYyBiL1BDL3B5dGhvbl9udC5yYwppbmRleCBmODVkNTM5Li5mYWM2MTA1IDEwMDY0NAotLS0gYS9QQy9weXRob25fbnQucmMKKysrIGIvUEMvcHl0aG9uX250LnJjCkBAIC0xLDMzICsxLDExIEBACiAvLyBSZXNvdXJjZSBzY3JpcHQgZm9yIFB5dGhvbiBjb3JlIERMTC4KLS8vIEN1cnJlbnRseSBvbmx5IGhvbGRzIHZlcnNpb24gaW5mb3JtYXRpb24uCi0vLwotI2luY2x1ZGUgIndpbnZlci5oIgogCi0jZGVmaW5lIE1TX1dJTkRPV1MKLSNpbmNsdWRlICJtb2RzdXBwb3J0LmgiCi0jaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgotI2lmZGVmIF9ERUJVRwotIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjX2QuaCIKLSNlbHNlCi0jICAgaW5jbHVkZSAicHl0aG9ubnRfcmMuaCIKLSNlbmRpZgorI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKIAotLyogZS5nLiwgMy4zLjBhMQotICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNoZXZlbC5oCi0gKi8KLSNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCi0KLS8qIDY0LWJpdCB2ZXJzaW9uIG51bWJlciBhcyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiA0IDE2LWJpdCBpbnRzICovCi0jaWYgUFlfTUlDUk9fVkVSU0lPTiA+IDY0Ci0jICAgZXJyb3IgIlBZX01JQ1JPX1ZFUlNJT04gPiA2NCIKLSNlbmRpZgotI2lmIFBZX1JFTEVBU0VfTEVWRUwgPiA5OQotIyAgIGVycm9yICJQWV9SRUxFQVNFX0xFVkVMID4gOTkiCi0jZW5kaWYKLSNpZiBQWV9SRUxFQVNFX1NFUklBTCA+IDkKLSMgICBlcnJvciAiUFlfUkVMRUFTRV9TRVJJQUwgPiA5IgotI2VuZGlmCi0jZGVmaW5lIFBZVkVSU0lPTjY0IFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04sIEZJRUxEMywgUFlUSE9OX0FQSV9WRVJTSU9OCisvLyBJbmNsdWRlIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaW5kaWNhdGVzIHdlIHN1cHBvcnQgYWxsCisvLyBjdXJyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisjaW5jbHVkZSA8d2ludXNlci5oPgorMiBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgogCiAvLyBTdHJpbmcgVGFibGVzCiBTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpAQCAtNDUsMjMgKzIzLDIzIEBACiAgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKICBGSUxFRkxBR1NNQVNLIDB4M2ZMCiAjaWZkZWYgX0RFQlVHCi0gRklMRUZMQUdTIDB4MUwKKyBGSUxFRkxBR1MgVlNfRkZfREVCVUcKICNlbHNlCiAgRklMRUZMQUdTIDB4MEwKICNlbmRpZgotIEZJTEVPUyAweDQwMDA0TAotIEZJTEVUWVBFIDB4MUwKKyBGSUxFT1MgVk9TX19XSU5ET1dTMzIKKyBGSUxFVFlQRSBWRlRfRExMCiAgRklMRVNVQlRZUEUgMHgwTAogQkVHSU4KICAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCiAgICAgQkVHSU4KICAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgogICAgICAgICBCRUdJTgotICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgIlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uXDAiCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCBQWVRIT05fQ09NUEFOWSAiXDAiCiAgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBDb3JlXDAiCiAgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgogICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gRExMXDAiCi0gICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IKkgMjAwMS0yMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBDb3B5cmlnaHQgqSAyMDAwIEJlT3Blbi5jb20uIENvcHlyaWdodCCpIDE5OTUtMjAwMSBDTlJJLiBDb3B5cmlnaHQgqSAxOTkxLTE5OTUgU01DLlwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgUFlUSE9OX0NPUFlSSUdIVCAiXDAiCiAgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsIFBZVEhPTl9ETExfTkFNRSAiXDAiCiAgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uXDAiCiAgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX3Zlcl9yYy5oIGIvUEMvcHl0aG9uX3Zlcl9yYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyN2U5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9weXRob25fdmVyX3JjLmgKQEAgLTAsMCArMSwzNSBAQAorLy8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29yZSBETEwuCisvLyBDdXJyZW50bHkgb25seSBob2xkcyB2ZXJzaW9uIGluZm9ybWF0aW9uLgorLy8KKyNpbmNsdWRlICJ3aW52ZXIuaCIKKworI2RlZmluZSBQWVRIT05fQ09NUEFOWSAgICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKKyNkZWZpbmUgUFlUSE9OX0NPUFlSSUdIVCAiQ29weXJpZ2h0IFx4QTkgMjAwMS0yMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBDb3B5cmlnaHQgXHhBOSAyMDAwIEJlT3Blbi5jb20uIENvcHlyaWdodCBceEE5IDE5OTUtMjAwMSBDTlJJLiBDb3B5cmlnaHQgXHhBOSAxOTkxLTE5OTUgU01DLiIKKworI2RlZmluZSBNU19XSU5ET1dTCisjaW5jbHVkZSAibW9kc3VwcG9ydC5oIgorI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKKyNpZmRlZiBfREVCVUcKKyMgICBpbmNsdWRlICJweXRob25udF9yY19kLmgiCisjICAgZGVmaW5lIFBZVEhPTl9ERUJVR19FWFQgIl9kIgorI2Vsc2UKKyMgICBpbmNsdWRlICJweXRob25udF9yYy5oIgorIyAgIGRlZmluZSBQWVRIT05fREVCVUdfRVhUCisjZW5kaWYKKworLyogZS5nLiwgMy4zLjBhMQorICogUFlfVkVSU0lPTiBjb21lcyBmcm9tIHBhdGNobGV2ZWwuaAorICovCisjZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgorCisvKiA2NC1iaXQgdmVyc2lvbiBudW1iZXIgYXMgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgNCAxNi1iaXQgaW50cyAqLworI2lmIFBZX01JQ1JPX1ZFUlNJT04gPiA2NAorIyAgIGVycm9yICJQWV9NSUNST19WRVJTSU9OID4gNjQiCisjZW5kaWYKKyNpZiBQWV9SRUxFQVNFX0xFVkVMID4gOTkKKyMgICBlcnJvciAiUFlfUkVMRUFTRV9MRVZFTCA+IDk5IgorI2VuZGlmCisjaWYgUFlfUkVMRUFTRV9TRVJJQUwgPiA5CisjICAgZXJyb3IgIlBZX1JFTEVBU0VfU0VSSUFMID4gOSIKKyNlbmRpZgorI2RlZmluZSBQWVZFUlNJT042NCBQWV9NQUpPUl9WRVJTSU9OLCBQWV9NSU5PUl9WRVJTSU9OLCBGSUVMRDMsIFBZVEhPTl9BUElfVkVSU0lPTgpkaWZmIC0tZ2l0IGEvUEMvcmVhZG1lLnR4dCBiL1BDL3JlYWRtZS50eHQKaW5kZXggOTkwMDZiZi4uMGE5NmQyNiAxMDA2NDQKLS0tIGEvUEMvcmVhZG1lLnR4dAorKysgYi9QQy9yZWFkbWUudHh0CkBAIC03MiwxMSArNzIsNiBAQAogICAgICAgICAgICAgICAgdmFyaW91cyBETExzLCB0byBhdm9pZCBydW4tdGltZSByZWxvY2F0aW9uLgogCiAKLUxlZ2FjeSBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotVGhlIHN1YmRpcmVjdG9yaWVzIFZDNiwgVlM3LjEgYW5kIFZTOC4wIGNvbnRhaW4gbGVnYWN5IHN1cHBvcnQgb2xkZXIKLXZlcnNpb25zIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLiBTZWUgUENidWlsZC9yZWFkbWUudHh0LgotCiBOb3RlIGZvciBXaW5kb3dzIDMueCBhbmQgRE9TIHVzZXJzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKZGlmZiAtLWdpdCBhL1BDL3dpbnJlZy5jIGIvUEMvd2lucmVnLmMKaW5kZXggMTlkNWE3MC4uMzMxMzIwMiAxMDA2NDQKLS0tIGEvUEMvd2lucmVnLmMKKysrIGIvUEMvd2lucmVnLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJ3aW5kb3dzLmgiCiAKIHN0YXRpYyBCT09MIFB5SEtFWV9Bc0hLRVkoUHlPYmplY3QgKm9iLCBIS0VZICpwUmVzLCBCT09MIGJOb25lT0spOworc3RhdGljIEJPT0wgY2xpbmljX0hLRVlfY29udmVydGVyKFB5T2JqZWN0ICpvYiwgdm9pZCAqcCk7CiBzdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9Gcm9tSEtFWShIS0VZIGgpOwogc3RhdGljIEJPT0wgUHlIS0VZX0Nsb3NlKFB5T2JqZWN0ICpvYkhhbmRsZSk7CiAKQEAgLTQ2LDEwICs0NywxMiBAQAogIkRlbGV0ZVZhbHVlKCkgLSBSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSB0aGUgc3BlY2lmaWVkIHJlZ2lzdHJ5IGtleS5cbiIKICJFbnVtS2V5KCkgLSBFbnVtZXJhdGVzIHN1YmtleXMgb2YgdGhlIHNwZWNpZmllZCBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKICJFbnVtVmFsdWUoKSAtIEVudW1lcmF0ZXMgdmFsdWVzIG9mIHRoZSBzcGVjaWZpZWQgb3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCkgLSBFeHBhbmQgdGhlIGVudiBzdHJpbmdzIGluIGEgUkVHX0VYUEFORF9TWiBzdHJpbmcuXG4iCisiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCkgLSBFeHBhbmQgdGhlIGVudiBzdHJpbmdzIGluIGEgUkVHX0VYUEFORF9TWlxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLlxuIgogIkZsdXNoS2V5KCkgLSBXcml0ZXMgYWxsIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBzcGVjaWZpZWQga2V5IHRvIHRoZSByZWdpc3RyeS5cbiIKLSJMb2FkS2V5KCkgLSBDcmVhdGVzIGEgc3Via2V5IHVuZGVyIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUgYW5kIHN0b3Jlc1xuIgotIiAgICAgICAgICAgIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS5cbiIKKyJMb2FkS2V5KCkgLSBDcmVhdGVzIGEgc3Via2V5IHVuZGVyIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUgYW5kXG4iCisiICAgICAgICAgICAgc3RvcmVzIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0XG4iCisiICAgICAgICAgICAgc3Via2V5LlxuIgogIk9wZW5LZXkoKSAtIE9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgogIk9wZW5LZXlFeCgpIC0gQWxpYXMgb2YgT3BlbktleSgpLlxuIgogIlF1ZXJ5VmFsdWUoKSAtIFJldHJpZXZlcyB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB1bm5hbWVkIHZhbHVlIGZvciBhXG4iCkBAIC03MSwyOTkgKzc0LDYgQEAKICJ0byBzZWUgd2hhdCBjb25zdGFudHMgYXJlIHVzZWQsIGFuZCB3aGVyZS4iKTsKIAogCi1QeURvY19TVFJWQVIoQ2xvc2VLZXlfZG9jLAotIkNsb3NlS2V5KGhrZXkpXG4iCi0iQ2xvc2VzIGEgcHJldmlvdXNseSBvcGVuZWQgcmVnaXN0cnkga2V5LlxuIgotIlxuIgotIlRoZSBoa2V5IGFyZ3VtZW50IHNwZWNpZmllcyBhIHByZXZpb3VzbHkgb3BlbmVkIGtleS5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgaWYgdGhlIGtleSBpcyBub3QgY2xvc2VkIHVzaW5nIHRoaXMgbWV0aG9kLCBpdCB3aWxsIGJlXG4iCi0iY2xvc2VkIHdoZW4gdGhlIGhrZXkgb2JqZWN0IGlzIGRlc3Ryb3llZCBieSBQeXRob24uIik7Ci0KLVB5RG9jX1NUUlZBUihDb25uZWN0UmVnaXN0cnlfZG9jLAotIkNvbm5lY3RSZWdpc3RyeShjb21wdXRlcl9uYW1lLCBrZXkpIC0+IGtleVxuIgotIkVzdGFibGlzaGVzIGEgY29ubmVjdGlvbiB0byBhIHByZWRlZmluZWQgcmVnaXN0cnkgaGFuZGxlIG9uIGFub3RoZXIgY29tcHV0ZXIuXG4iCi0iXG4iCi0iY29tcHV0ZXJfbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGNvbXB1dGVyLCBvZiB0aGUgZm9ybSBcXFxcY29tcHV0ZXJuYW1lLlxuIgotIiAgICAgICAgICAgICAgSWYgTm9uZSwgdGhlIGxvY2FsIGNvbXB1dGVyIGlzIHVzZWQuXG4iCi0ia2V5IGlzIHRoZSBwcmVkZWZpbmVkIGhhbmRsZSB0byBjb25uZWN0IHRvLlxuIgotIlxuIgotIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKLSJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKENyZWF0ZUtleV9kb2MsCi0iQ3JlYXRlS2V5KGtleSwgc3ViX2tleSkgLT4ga2V5XG4iCi0iQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG5hbWVzIHRoZSBrZXkgdGhpcyBtZXRob2Qgb3BlbnMgb3IgY3JlYXRlcy5cbiIKLSJcbiIKLSJJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSxcbiIKLSJ0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuXG4iCi0iXG4iCi0iVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwotCi1QeURvY19TVFJWQVIoQ3JlYXRlS2V5RXhfZG9jLAotIkNyZWF0ZUtleUV4KGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQ9MCwgYWNjZXNzPUtFWV9XUklURSkgLT4ga2V5XG4iCi0iQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3Igb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHNcbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgotInJlc2VydmVkIGlzIGEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKLSJhY2Nlc3MgaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUgXG4iCi0iICAgICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XUklURS5cbiIKLSJcbiIKLSJJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSxcbiIKLSJ0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXlcbiIKLSJcbiIKLSJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihEZWxldGVLZXlfZG9jLAotIkRlbGV0ZUtleShrZXksIHN1Yl9rZXkpXG4iCi0iRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBtdXN0IGJlIGEgc3Via2V5IG9mIHRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5XG4iCi0iICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdCBoYXZlXG4iCi0iICAgICAgICBzdWJrZXlzLlxuIgotIlxuIgotIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgotIlxuIgotIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKLSJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihEZWxldGVLZXlFeF9kb2MsCi0iRGVsZXRlS2V5RXgoa2V5LCBzdWJfa2V5LCBhY2Nlc3M9S0VZX1dPVzY0XzY0S0VZLCByZXNlcnZlZD0wKVxuIgotIkRlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkgKDY0LWJpdCBPUyBvbmx5KS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBtdXN0IGJlIGEgc3Via2V5IG9mIHRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5XG4iCi0iICAgICAgICBwYXJhbWV0ZXIuIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgTm9uZSwgYW5kIHRoZSBrZXkgbWF5IG5vdCBoYXZlXG4iCi0iICAgICAgICBzdWJrZXlzLlxuIgotInJlc2VydmVkIGlzIGEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKLSJhY2Nlc3MgaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUgXG4iCi0iICAgICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XT1c2NF82NEtFWS5cbiIKLSJcbiIKLSJUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy5cbiIKLSJcbiIKLSJJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsXG4iCi0iaXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLlxuIgotIk9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLiIpOwotCi1QeURvY19TVFJWQVIoRGVsZXRlVmFsdWVfZG9jLAotIkRlbGV0ZVZhbHVlKGtleSwgdmFsdWUpXG4iCi0iUmVtb3ZlcyBhIG5hbWVkIHZhbHVlIGZyb20gYSByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJ2YWx1ZSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHZhbHVlIHRvIHJlbW92ZS4iKTsKLQotUHlEb2NfU1RSVkFSKEVudW1LZXlfZG9jLAotIkVudW1LZXkoa2V5LCBpbmRleCkgLT4gc3RyaW5nXG4iCi0iRW51bWVyYXRlcyBzdWJrZXlzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0iaW5kZXggaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuXG4iCi0iXG4iCi0iVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuXG4iCi0iSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzXG4iCi0icmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuIik7Ci0KLVB5RG9jX1NUUlZBUihFbnVtVmFsdWVfZG9jLAotIkVudW1WYWx1ZShrZXksIGluZGV4KSAtPiB0dXBsZVxuIgotIkVudW1lcmF0ZXMgdmFsdWVzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0iaW5kZXggaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0byByZXRyaWV2ZS5cbiIKLSJcbiIKLSJUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC5cbiIKLSJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uXG4iCi0iaXMgcmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzLlxuIgotIlxuIgotIlRoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOlxuIgotInZhbHVlX25hbWUgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZS5cbiIKLSJ2YWx1ZV9kYXRhIGlzIGFuIG9iamVjdCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBkYXRhLCBhbmQgd2hvc2UgdHlwZSBkZXBlbmRzXG4iCi0iICAgICAgICAgICBvbiB0aGUgdW5kZXJseWluZyByZWdpc3RyeSB0eXBlLlxuIgotImRhdGFfdHlwZSBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgZGF0YS4iKTsKLQotUHlEb2NfU1RSVkFSKEV4cGFuZEVudmlyb25tZW50U3RyaW5nc19kb2MsCi0iRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKHN0cmluZykgLT4gc3RyaW5nXG4iCi0iRXhwYW5kIGVudmlyb25tZW50IHZhcnMuXG4iKTsKLQotUHlEb2NfU1RSVkFSKEZsdXNoS2V5X2RvYywKLSJGbHVzaEtleShrZXkpXG4iCi0iV3JpdGVzIGFsbCB0aGUgYXR0cmlidXRlcyBvZiBhIGtleSB0byB0aGUgcmVnaXN0cnkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJcbiIKLSJJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNhbGwgRmx1c2hLZXkgdG8gY2hhbmdlIGEga2V5LiAgUmVnaXN0cnkgY2hhbmdlcyBhcmVcbiIKLSJmbHVzaGVkIHRvIGRpc2sgYnkgdGhlIHJlZ2lzdHJ5IHVzaW5nIGl0cyBsYXp5IGZsdXNoZXIuICBSZWdpc3RyeSBjaGFuZ2VzIGFyZVxuIgotImFsc28gZmx1c2hlZCB0byBkaXNrIGF0IHN5c3RlbSBzaHV0ZG93bi4gIFVubGlrZSBDbG9zZUtleSgpLCB0aGUgRmx1c2hLZXkoKVxuIgotIm1ldGhvZCByZXR1cm5zIG9ubHkgd2hlbiBhbGwgdGhlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuXG4iCi0iXG4iCi0iQW4gYXBwbGljYXRpb24gc2hvdWxkIG9ubHkgY2FsbCBGbHVzaEtleSgpIGlmIGl0IHJlcXVpcmVzIGFic29sdXRlIGNlcnRhaW50eVxuIgotInRoYXQgcmVnaXN0cnkgY2hhbmdlcyBhcmUgb24gZGlzay4gIElmIHlvdSBkb24ndCBrbm93IHdoZXRoZXIgYSBGbHVzaEtleSgpXG4iCi0iY2FsbCBpcyByZXF1aXJlZCwgaXQgcHJvYmFibHkgaXNuJ3QuIik7Ci0KLVB5RG9jX1NUUlZBUihMb2FkS2V5X2RvYywKLSJMb2FkS2V5KGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKVxuIgotIkNyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgdGhlIHNwZWNpZmllZCBrZXkgYW5kIHN0b3JlcyByZWdpc3RyYXRpb24gaW5mb3JtYXRpb25cbiIKLSJmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWJfa2V5IHRvIGxvYWQuXG4iCi0iZmlsZV9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGxvYWQgcmVnaXN0cnkgZGF0YSBmcm9tLiAgVGhpcyBmaWxlIG11c3RcbiIKLSIgICAgICAgICAgaGF2ZSBiZWVuIGNyZWF0ZWQgd2l0aCB0aGUgU2F2ZUtleSgpIGZ1bmN0aW9uLiAgVW5kZXIgdGhlIGZpbGVcbiIKLSIgICAgICAgICAgYWxsb2NhdGlvbiB0YWJsZSAoRkFUKSBmaWxlIHN5c3RlbSwgdGhlIGZpbGVuYW1lIG1heSBub3QgaGF2ZSBhblxuIgotIiAgICAgICAgICBleHRlbnNpb24uXG4iCi0iXG4iCi0iQSBjYWxsIHRvIExvYWRLZXkoKSBmYWlscyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhlXG4iCi0iU0VfUkVTVE9SRV9QUklWSUxFR0UgcHJpdmlsZWdlLlxuIgotIlxuIgotIklmIGtleSBpcyBhIGhhbmRsZSByZXR1cm5lZCBieSBDb25uZWN0UmVnaXN0cnkoKSwgdGhlbiB0aGUgcGF0aCBzcGVjaWZpZWRcbiIKLSJpbiBmaWxlTmFtZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIGNvbXB1dGVyLlxuIgotIlxuIgotIlRoZSBkb2NzIGltcGx5IGtleSBtdXN0IGJlIGluIHRoZSBIS0VZX1VTRVIgb3IgSEtFWV9MT0NBTF9NQUNISU5FIHRyZWUiKTsKLQotUHlEb2NfU1RSVkFSKE9wZW5LZXlfZG9jLAotIk9wZW5LZXkoa2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9S0VZX1JFQUQpIC0+IGtleVxuIgotIk9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi5cbiIKLSJyZXNlcnZlZCBpcyBhIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uXG4iCi0iYWNjZXNzIGlzIGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWRcbiIKLSIgICAgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRFxuIgotIlxuIgotIlRoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5XG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihPcGVuS2V5RXhfZG9jLCAiU2VlIE9wZW5LZXkoKSIpOwotCi1QeURvY19TVFJWQVIoUXVlcnlJbmZvS2V5X2RvYywKLSJRdWVyeUluZm9LZXkoa2V5KSAtPiB0dXBsZVxuIgotIlJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJcbiIKLSJUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczoiCi0iQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiBzdWIga2V5cyB0aGlzIGtleSBoYXMuXG4iCi0iQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhpcyBrZXkgaGFzLlxuIgotIkFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhlIGtleSB3YXMgbGFzdCBtb2RpZmllZCAoaWYgYXZhaWxhYmxlKVxuIgotIiBhcyAxMDAncyBvZiBuYW5vc2Vjb25kcyBzaW5jZSBKYW4gMSwgMTYwMC4iKTsKLQotUHlEb2NfU1RSVkFSKFF1ZXJ5VmFsdWVfZG9jLAotIlF1ZXJ5VmFsdWUoa2V5LCBzdWJfa2V5KSAtPiBzdHJpbmdcbiIKLSJSZXRyaWV2ZXMgdGhlIHVubmFtZWQgdmFsdWUgZm9yIGEga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IGhvbGRzIHRoZSBuYW1lIG9mIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWVcbiIKLSIgICAgICAgIGlzIGFzc29jaWF0ZWQuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBOb25lIG9yIGVtcHR5LCB0aGUgZnVuY3Rpb25cbiIKLSIgICAgICAgIHJldHJpZXZlcyB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBTZXRWYWx1ZSgpIG1ldGhvZCBmb3IgdGhlIGtleVxuIgotIiAgICAgICAgaWRlbnRpZmllZCBieSBrZXkuIgotIlxuIgotIlZhbHVlcyBpbiB0aGUgcmVnaXN0cnkgaGF2ZSBuYW1lLCB0eXBlLCBhbmQgZGF0YSBjb21wb25lbnRzLiBUaGlzIG1ldGhvZFxuIgotInJldHJpZXZlcyB0aGUgZGF0YSBmb3IgYSBrZXkncyBmaXJzdCB2YWx1ZSB0aGF0IGhhcyBhIE5VTEwgbmFtZS5cbiIKLSJCdXQgdGhlIHVuZGVybHlpbmcgQVBJIGNhbGwgZG9lc24ndCByZXR1cm4gdGhlIHR5cGUsIExhbWUgTGFtZSBMYW1lLCBET05UIFVTRSBUSElTISEhIik7Ci0KLVB5RG9jX1NUUlZBUihRdWVyeVZhbHVlRXhfZG9jLAotIlF1ZXJ5VmFsdWVFeChrZXksIHZhbHVlX25hbWUpIC0+ICh2YWx1ZSwgdHlwZV9pZClcbiIKLSJSZXRyaWV2ZXMgdGhlIHR5cGUgYW5kIGRhdGEgZm9yIGEgc3BlY2lmaWVkIHZhbHVlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGFuXG4iCi0ib3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJ2YWx1ZV9uYW1lIGlzIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHZhbHVlIHRvIHF1ZXJ5Iik7Ci0KLVB5RG9jX1NUUlZBUihTYXZlS2V5X2RvYywKLSJTYXZlS2V5KGtleSwgZmlsZV9uYW1lKVxuIgotIlNhdmVzIHRoZSBzcGVjaWZpZWQga2V5LCBhbmQgYWxsIGl0cyBzdWJrZXlzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotImZpbGVfbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBzYXZlIHJlZ2lzdHJ5IGRhdGEgdG8uICBUaGlzIGZpbGUgY2Fubm90XG4iCi0iICAgICAgICAgIGFscmVhZHkgZXhpc3QuIElmIHRoaXMgZmlsZW5hbWUgaW5jbHVkZXMgYW4gZXh0ZW5zaW9uLCBpdCBjYW5ub3QgYmVcbiIKLSIgICAgICAgICAgdXNlZCBvbiBmaWxlIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW1zIGJ5IHRoZSBMb2FkS2V5KCksXG4iCi0iICAgICAgICAgIFJlcGxhY2VLZXkoKSBvciBSZXN0b3JlS2V5KCkgbWV0aG9kcy5cbiIKLSJcbiIKLSJJZiBrZXkgcmVwcmVzZW50cyBhIGtleSBvbiBhIHJlbW90ZSBjb21wdXRlciwgdGhlIHBhdGggZGVzY3JpYmVkIGJ5IGZpbGVfbmFtZVxuIgotImlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuXG4iCi0iXG4iCi0iVGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCBtdXN0IHBvc3Nlc3MgdGhlIFNlQmFja3VwUHJpdmlsZWdlIHNlY3VyaXR5XG4iCi0icHJpdmlsZWdlLiAgVGhpcyBmdW5jdGlvbiBwYXNzZXMgTlVMTCBmb3Igc2VjdXJpdHlfYXR0cmlidXRlcyB0byB0aGUgQVBJLiIpOwotCi1QeURvY19TVFJWQVIoU2V0VmFsdWVfZG9jLAotIlNldFZhbHVlKGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUpXG4iCi0iQXNzb2NpYXRlcyBhIHZhbHVlIHdpdGggYSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG5hbWVzIHRoZSBzdWJrZXkgd2l0aCB3aGljaCB0aGUgdmFsdWUgaXMgYXNzb2NpYXRlZC5cbiIKLSJ0eXBlIGlzIGFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBDdXJyZW50bHkgdGhpcyBtdXN0XG4iCi0iICAgICBiZSBSRUdfU1osIG1lYW5pbmcgb25seSBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQuXG4iCi0idmFsdWUgaXMgYSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IHNwZWNpZmllZCBieSB0aGUgc3ViX2tleSBwYXJhbWV0ZXIgZG9lcyBub3QgZXhpc3QsIHRoZSBTZXRWYWx1ZVxuIgotImZ1bmN0aW9uIGNyZWF0ZXMgaXQuXG4iCi0iXG4iCi0iVmFsdWUgbGVuZ3RocyBhcmUgbGltaXRlZCBieSBhdmFpbGFibGUgbWVtb3J5LiBMb25nIHZhbHVlcyAobW9yZSB0aGFuXG4iCi0iMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluIFxuIgotInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5LiAgVGhpcyBoZWxwcyB0aGUgcmVnaXN0cnkgcGVyZm9ybSBlZmZpY2llbnRseS5cbiIKLSJcbiIKLSJUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW4gb3BlbmVkIHdpdGhcbiIKLSJLRVlfU0VUX1ZBTFVFIGFjY2Vzcy4iKTsKLQotUHlEb2NfU1RSVkFSKFNldFZhbHVlRXhfZG9jLAotIlNldFZhbHVlRXgoa2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpXG4iCi0iU3RvcmVzIGRhdGEgaW4gdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0idmFsdWVfbmFtZSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YWx1ZSB0byBzZXQsIG9yIE5vbmUuXG4iCi0icmVzZXJ2ZWQgY2FuIGJlIGFueXRoaW5nIC0gemVybyBpcyBhbHdheXMgcGFzc2VkIHRvIHRoZSBBUEkuXG4iCi0idHlwZSBpcyBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLiAgVGhpcyBzaG91bGQgYmUgb25lIG9mOlxuIgotIiAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKLSIgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuXG4iCi0iICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCi0iICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuXG4iCi0iICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQgcmVmZXJlbmNlc1xuIgotIiAgICAgICAgICAgICAgICAgICB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLCAlUEFUSCUpLlxuIgotIiAgUkVHX0xJTksgLS0gQSBVbmljb2RlIHN5bWJvbGljIGxpbmsuXG4iCi0iICBSRUdfTVVMVElfU1ogLS0gQW4gc2VxdWVuY2Ugb2YgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MsIHRlcm1pbmF0ZWQgYnlcbiIKLSIgICAgICAgICAgICAgICAgICB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzIHRoaXNcbiIKLSIgICAgICAgICAgICAgICAgICB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LlxuIgotIiAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgotIiAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCi0iICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLlxuIgotInZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuZXcgdmFsdWUuXG4iCi0iXG4iCi0iVGhpcyBtZXRob2QgY2FuIGFsc28gc2V0IGFkZGl0aW9uYWwgdmFsdWUgYW5kIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoZVxuIgotInNwZWNpZmllZCBrZXkuICBUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW5cbiIKLSJvcGVuZWQgd2l0aCBLRVlfU0VUX1ZBTFVFIGFjY2Vzcy5cbiIKLSJcbiIKLSJUbyBvcGVuIHRoZSBrZXksIHVzZSB0aGUgQ3JlYXRlS2V5RXgoKSBvciBPcGVuS2V5RXgoKSBtZXRob2RzLlxuIgotIlxuIgotIlZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhblxuIgotIjIwNDggYnl0ZXMpIHNob3VsZCBiZSBzdG9yZWQgYXMgZmlsZXMgd2l0aCB0aGUgZmlsZW5hbWVzIHN0b3JlZCBpbiBcbiIKLSJ0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeS4gIFRoaXMgaGVscHMgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuIik7Ci0KLVB5RG9jX1NUUlZBUihEaXNhYmxlUmVmbGVjdGlvbktleV9kb2MsCi0iRGlzYWJsZXMgcmVnaXN0cnkgcmVmbGVjdGlvbiBmb3IgMzItYml0IHByb2Nlc3NlcyBydW5uaW5nIG9uIGEgNjQtYml0XG4iCi0iT3BlcmF0aW5nIFN5c3RlbS4gIFdpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uXG4iCi0iYSAzMi1iaXQgT3BlcmF0aW5nIFN5c3RlbS5cbiIKLSJcbiIKLSJJZiB0aGUga2V5IGlzIG5vdCBvbiB0aGUgcmVmbGVjdGlvbiBsaXN0LCB0aGUgZnVuY3Rpb24gc3VjY2VlZHMgYnV0IGhhcyBubyBlZmZlY3QuXG4iCi0iRGlzYWJsaW5nIHJlZmxlY3Rpb24gZm9yIGEga2V5IGRvZXMgbm90IGFmZmVjdCByZWZsZWN0aW9uIG9mIGFueSBzdWJrZXlzLiIpOwotCi1QeURvY19TVFJWQVIoRW5hYmxlUmVmbGVjdGlvbktleV9kb2MsCi0iUmVzdG9yZXMgcmVnaXN0cnkgcmVmbGVjdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBkaXNhYmxlZCBrZXkuXG4iCi0iV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMi1iaXQgT3BlcmF0aW5nIFN5c3RlbS5cbiIKLSJSZXN0b3JpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24gb2YgYW55IHN1YmtleXMuIik7Ci0KLVB5RG9jX1NUUlZBUihRdWVyeVJlZmxlY3Rpb25LZXlfZG9jLAotIlF1ZXJ5UmVmbGVjdGlvbktleShoa2V5KSAtPiBib29sXG4iCi0iRGV0ZXJtaW5lcyB0aGUgcmVmbGVjdGlvbiBzdGF0ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG4iCi0iV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMi1iaXQgT3BlcmF0aW5nIFN5c3RlbS5cbiIpOwogCiAvKiBQeUhLRVkgZG9jc3RyaW5ncyAqLwogUHlEb2NfU1RSVkFSKFB5SEtFWV9kb2MsCkBAIC0zODksMjQgKzk5LDYgQEAKICJyaWNoIGNvbXBhcmlzb24gLSBIYW5kbGUgb2JqZWN0cyBhcmUgY29tcGFyZWQgdXNpbmcgdGhlIGhhbmRsZSB2YWx1ZS4iKTsKIAogCi1QeURvY19TVFJWQVIoUHlIS0VZX0Nsb3NlX2RvYywKLSJrZXkuQ2xvc2UoKVxuIgotIkNsb3NlcyB0aGUgdW5kZXJseWluZyBXaW5kb3dzIGhhbmRsZS5cbiIKLSJcbiIKLSJJZiB0aGUgaGFuZGxlIGlzIGFscmVhZHkgY2xvc2VkLCBubyBlcnJvciBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihQeUhLRVlfRGV0YWNoX2RvYywKLSJrZXkuRGV0YWNoKCkgLT4gaW50XG4iCi0iRGV0YWNoZXMgdGhlIFdpbmRvd3MgaGFuZGxlIGZyb20gdGhlIGhhbmRsZSBvYmplY3QuXG4iCi0iXG4iCi0iVGhlIHJlc3VsdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGhhbmRsZSBiZWZvcmUgaXQgaXMgZGV0YWNoZWQuICBJZiB0aGVcbiIKLSJoYW5kbGUgaXMgYWxyZWFkeSBkZXRhY2hlZCwgdGhpcyB3aWxsIHJldHVybiB6ZXJvLlxuIgotIlxuIgotIkFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIGhhbmRsZSBpcyBlZmZlY3RpdmVseSBpbnZhbGlkYXRlZCxcbiIKLSJidXQgdGhlIGhhbmRsZSBpcyBub3QgY2xvc2VkLiAgWW91IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdVxuIgotIm5lZWQgdGhlIHVuZGVybHlpbmcgd2luMzIgaGFuZGxlIHRvIGV4aXN0IGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlXG4iCi0iaGFuZGxlIG9iamVjdC4iKTsKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKQEAgLTUxNiwxNiArMjA4LDEzNSBAQAogICAgIFB5SEtFWV91bmFyeUZhaWx1cmVGdW5jLCAgICAgICAgICAgIC8qIG5iX2Zsb2F0ICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9DbG9zZU1ldGhvZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIFB5T2JqZWN0ICpQeUhLRVlfRGV0YWNoTWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9FbnRlcihQeU9iamVjdCAqc2VsZik7Ci1zdGF0aWMgUHlPYmplY3QgKlB5SEtFWV9FeGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7CisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgd2lucmVnCitjbGFzcyB3aW5yZWcuSEtFWVR5cGUgIlB5SEtFWU9iamVjdCAqIiAiJlB5SEtFWV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NGM5NjRlYmEzYmY5MTRkNl0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBSRUdTQU1fY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUkVHU0FNJworICAgIGZvcm1hdF91bml0ID0gJ2knCisKK2NsYXNzIERXT1JEX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ0RXT1JEJworICAgIGZvcm1hdF91bml0ID0gJ2snCisKK2NsYXNzIEhLRVlfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnSEtFWScKKyAgICBjb252ZXJ0ZXIgPSAnY2xpbmljX0hLRVlfY29udmVydGVyJworCitjbGFzcyBIS0VZX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CisgICAgdHlwZSA9ICdIS0VZJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoIl9yZXR1cm5fdmFsdWUiLCBkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7XG4nKQorCisjIEhBQ0s6IHRoaXMgb25seSB3b3JrcyBmb3IgUHlIS0VZT2JqZWN0cywgbm90aGluZyBlbHNlLgorIyAgICAgICBTaG91bGQgdGhpcyBiZSBnZW5lcmFsaXplZCBhbmQgZW5zaHJpbmVkIGluIGNsaW5pYy5weSwKKyMgICAgICAgZGVzdHJveSB0aGlzIGNvbnZlcnRlciB3aXRoIHByZWp1ZGljZS4KK2NsYXNzIHNlbGZfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5SEtFWU9iamVjdCAqJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSAoUHlPYmplY3QgKilfcmV0dXJuX3ZhbHVlO1xuJykKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIyZjdhZWRjNmQ2OGU4MGVdKi8KKworI2luY2x1ZGUgImNsaW5pYy93aW5yZWcuYy5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyAgVGhlIFB5SEtFWSBvYmplY3QgbWV0aG9kcworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuQ2xvc2UKKworQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIFdpbmRvd3MgaGFuZGxlLgorCitJZiB0aGUgaGFuZGxlIGlzIGFscmVhZHkgY2xvc2VkLCBubyBlcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfQ2xvc2VfaW1wbChQeUhLRVlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmNlZDNhNjI0ZmIwYzM0NCBpbnB1dD02Nzg2YWM3NWY2Yjg5ZGU2XSovCit7CisgICAgaWYgKCFQeUhLRVlfQ2xvc2UoKFB5T2JqZWN0ICopc2VsZikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuRGV0YWNoCisKK0RldGFjaGVzIHRoZSBXaW5kb3dzIGhhbmRsZSBmcm9tIHRoZSBoYW5kbGUgb2JqZWN0LgorCitUaGUgcmVzdWx0IGlzIHRoZSB2YWx1ZSBvZiB0aGUgaGFuZGxlIGJlZm9yZSBpdCBpcyBkZXRhY2hlZC4gIElmIHRoZQoraGFuZGxlIGlzIGFscmVhZHkgZGV0YWNoZWQsIHRoaXMgd2lsbCByZXR1cm4gemVyby4KKworQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgaGFuZGxlIGlzIGVmZmVjdGl2ZWx5IGludmFsaWRhdGVkLAorYnV0IHRoZSBoYW5kbGUgaXMgbm90IGNsb3NlZC4gIFlvdSB3b3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiB5b3UKK25lZWQgdGhlIHVuZGVybHlpbmcgd2luMzIgaGFuZGxlIHRvIGV4aXN0IGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlCitoYW5kbGUgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0RldGFjaF9pbXBsKFB5SEtFWU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZGE1YTllMWEwMWFlNzhmIGlucHV0PWRkMmNjMDllNmM2YmE4MzNdKi8KK3sKKyAgICB2b2lkKiByZXQ7CisgICAgcmV0ID0gKHZvaWQqKXNlbGYtPmhrZXk7CisgICAgc2VsZi0+aGtleSA9IDA7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cihyZXQpOworfQorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuSEtFWVR5cGUuX19lbnRlcl9fIC0+IHNlbGYKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5SEtFWU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyYzM0OTg2ZGFiMjg5OTAgaW5wdXQ9YzQwZmFiMWYwNjkwYThlMl0qLworeworICAgIFB5X1hJTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKworLypbY2xpbmljIGlucHV0XQord2lucmVnLkhLRVlUeXBlLl9fZXhpdF9fCisKKyAgICBleGNfdHlwZTogb2JqZWN0CisgICAgZXhjX3ZhbHVlOiBvYmplY3QKKyAgICB0cmFjZWJhY2s6IG9iamVjdAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyM2ViZTczODllNmEyNjMgaW5wdXQ9ZmIzMjQ4OWVlOTI0MDNjN10qLworeworICAgIGlmICghUHlIS0VZX0Nsb3NlKChQeU9iamVjdCAqKXNlbGYpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLypbY2xpbmljIGlucHV0XQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZGEzOWEzZWU1ZTZiNGIwZF0qLwogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIFB5SEtFWV9tZXRob2RzW10gPSB7Ci0gICAgeyJDbG9zZSIsICBQeUhLRVlfQ2xvc2VNZXRob2QsIE1FVEhfVkFSQVJHUywgUHlIS0VZX0Nsb3NlX2RvY30sCi0gICAgeyJEZXRhY2giLCBQeUhLRVlfRGV0YWNoTWV0aG9kLCBNRVRIX1ZBUkFSR1MsIFB5SEtFWV9EZXRhY2hfZG9jfSwKLSAgICB7Il9fZW50ZXJfXyIsIChQeUNGdW5jdGlvbilQeUhLRVlfRW50ZXIsIE1FVEhfTk9BUkdTLCBOVUxMfSwKLSAgICB7Il9fZXhpdF9fIiwgUHlIS0VZX0V4aXQsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgV0lOUkVHX0hLRVlUWVBFX0NMT1NFX01FVEhPRERFRgorICAgIFdJTlJFR19IS0VZVFlQRV9ERVRBQ0hfTUVUSE9EREVGCisgICAgV0lOUkVHX0hLRVlUWVBFX19fRU5URVJfX19NRVRIT0RERUYKKyAgICBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGCiAgICAge05VTEx9CiB9OwogCkBAIC01NzAsNTAgKzM4MSw2IEBACiB9OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSAgVGhlIFB5SEtFWSBvYmplY3QgbWV0aG9kcwotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdGF0aWMgUHlPYmplY3QgKgotUHlIS0VZX0Nsb3NlTWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpDbG9zZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9DbG9zZShzZWxmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotUHlIS0VZX0RldGFjaE1ldGhvZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgdm9pZCogcmV0OwotICAgIFB5SEtFWU9iamVjdCAqcFRoaXMgPSAoUHlIS0VZT2JqZWN0ICopc2VsZjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpEZXRhY2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gKHZvaWQqKXBUaGlzLT5oa2V5OwotICAgIHBUaGlzLT5oa2V5ID0gMDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHJldCk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1QeUhLRVlfRW50ZXIoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfWElOQ1JFRihzZWxmKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLVB5SEtFWV9FeGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpZiAoIVB5SEtFWV9DbG9zZShzZWxmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgVGhlIHB1YmxpYyBQeUhLRVkgQVBJICh3ZWxsLCBub3QgcHVibGljIHlldCA6LSkKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIFB5T2JqZWN0ICoKQEAgLTY3NSw2ICs0NDIsMTQgQEAKICAgICByZXR1cm4gVFJVRTsKIH0KIAorQk9PTAorY2xpbmljX0hLRVlfY29udmVydGVyKFB5T2JqZWN0ICpvYiwgdm9pZCAqcCkKK3sKKyAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2IsIChIS0VZICopcCwgRkFMU0UpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIFRSVUU7Cit9CisKIFB5T2JqZWN0ICoKIFB5SEtFWV9Gcm9tSEtFWShIS0VZIGgpCiB7CkBAIC05ODUsMTIwICs3NjAsMTk5IEBACiAKIC8qIFRoZSBQeXRob24gbWV0aG9kcyAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlDbG9zZUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpDbG9zZUtleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0Nsb3NlKG9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQorLypbY2xpbmljIGlucHV0XQord2lucmVnLkNsb3NlS2V5CisKKyAgICBoa2V5OiBvYmplY3QKKyAgICAgICAgQSBwcmV2aW91c2x5IG9wZW5lZCBrZXkuCisgICAgLworCitDbG9zZXMgYSBwcmV2aW91c2x5IG9wZW5lZCByZWdpc3RyeSBrZXkuCisKK05vdGUgdGhhdCBpZiB0aGUga2V5IGlzIG5vdCBjbG9zZWQgdXNpbmcgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmUKK2Nsb3NlZCB3aGVuIHRoZSBoa2V5IG9iamVjdCBpcyBkZXN0cm95ZWQgYnkgUHl0aG9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDb25uZWN0UmVnaXN0cnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0Nsb3NlS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpoa2V5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ5NmY3MzQzOTQwM2EwNjQgaW5wdXQ9NWIxYWFjNjViYTUxMjdhZF0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqc3pDb21wTmFtZSA9IE5VTEw7CisgICAgaWYgKCFQeUhLRVlfQ2xvc2UoaGtleSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuQ29ubmVjdFJlZ2lzdHJ5IC0+IEhLRVkKKworICAgIGNvbXB1dGVyX25hbWU6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBjb21wdXRlciwgb2YgdGhlIGZvcm0gciJcXGNvbXB1dGVybmFtZSIuICBJZgorICAgICAgICBOb25lLCB0aGUgbG9jYWwgY29tcHV0ZXIgaXMgdXNlZC4KKyAgICBrZXk6IEhLRVkKKyAgICAgICAgVGhlIHByZWRlZmluZWQga2V5IHRvIGNvbm5lY3QgdG8uCisgICAgLworCitFc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIHJlZ2lzdHJ5IG9uIG9uIGFub3RoZXIgY29tcHV0ZXIuCisKK1RoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4KK0lmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEtFWQord2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKmNvbXB1dGVyX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEtFWSBrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM1MmY2ZjdiYTZlN2I0NiBpbnB1dD05YTA1NjU1OGNlMzE4NDMzXSovCit7CiAgICAgSEtFWSByZXRLZXk7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPOkNvbm5lY3RSZWdpc3RyeSIsICZzekNvbXBOYW1lLCAmb2JLZXkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFJlZ0Nvbm5lY3RSZWdpc3RyeVcoc3pDb21wTmFtZSwgaEtleSwgJnJldEtleSk7CisgICAgcmMgPSBSZWdDb25uZWN0UmVnaXN0cnlXKGNvbXB1dGVyX25hbWUsIGtleSwgJnJldEtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3RSZWdpc3RyeSIpOwotICAgIHJldHVybiBQeUhLRVlfRnJvbUhLRVkocmV0S2V5KTsKKyAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIkNvbm5lY3RSZWdpc3RyeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3JlYXRlS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5DcmVhdGVLZXkgLT4gSEtFWQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLgorICAgIC8KKworQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS4KKworSWYga2V5IGlzIG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBrZXlzLCBzdWJfa2V5IG1heSBiZSBOb25lLiBJbiB0aGF0IGNhc2UsCit0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi4KKworSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LgorCitUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuCitJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhLRVkKK3dpbnJlZ19DcmVhdGVLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZDY4NDNmMzBhNzNmYzBlIGlucHV0PTNjZGQxNjIyNDg4YWNlYTJdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIHdjaGFyX3QgKnN1YktleTsKICAgICBIS0VZIHJldEtleTsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1o6Q3JlYXRlS2V5IiwgJm9iS2V5LCAmc3ViS2V5KSkKKworICAgIHJjID0gUmVnQ3JlYXRlS2V5VyhrZXksIHN1Yl9rZXksICZyZXRLZXkpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ3JlYXRlS2V5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmMgPSBSZWdDcmVhdGVLZXlXKGhLZXksIHN1YktleSwgJnJldEtleSk7Ci0gICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIkNyZWF0ZUtleSIpOwotICAgIHJldHVybiBQeUhLRVlfRnJvbUhLRVkocmV0S2V5KTsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3JlYXRlS2V5RXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorLypbY2xpbmljIGlucHV0XQord2lucmVnLkNyZWF0ZUtleUV4IC0+IEhLRVkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBrZXkgdGhpcyBtZXRob2Qgb3BlbnMgb3IgY3JlYXRlcy4KKyAgICByZXNlcnZlZDogaW50ID0gMAorICAgICAgICBBIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uCisgICAgYWNjZXNzOiBSRUdTQU0oY19kZWZhdWx0PSdLRVlfV1JJVEUnKSA9IHdpbnJlZy5LRVlfV1JJVEUKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBhbiBhY2Nlc3MgbWFzayB0aGF0IGRlc2NyaWJlcyB0aGUKKyAgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dSSVRFLgorCitDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LgorCitJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSwKK3RoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLgorCitJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkKKworVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LgorSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2VzcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYjgzNWQ1YmU4NGU3MmIyIGlucHV0PTQyYzJiMDNmOTg0MDZiNjZdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKmtleTsKLSAgICB3Y2hhcl90ICpzdWJfa2V5OwogICAgIEhLRVkgcmV0S2V5OwotICAgIGludCByZXNlcnZlZCA9IDA7Ci0gICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XUklURTsKICAgICBsb25nIHJjOwogCi0gICAgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT1p8aWk6Q3JlYXRlS2V5RXgiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShrZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmMgPSBSZWdDcmVhdGVLZXlFeFcoaEtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIE5VTEwsIChEV09SRClOVUxMLAorICAgIHJjID0gUmVnQ3JlYXRlS2V5RXhXKGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIE5VTEwsIChEV09SRClOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VzcywgTlVMTCwgJnJldEtleSwgTlVMTCk7Ci0gICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIkNyZWF0ZUtleUV4Iik7Ci0gICAgcmV0dXJuIFB5SEtFWV9Gcm9tSEtFWShyZXRLZXkpOworICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiQ3JlYXRlS2V5RXgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiByZXRLZXk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5EZWxldGVLZXkKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBtdXN0IGJlIHRoZSBuYW1lIG9mIGEgc3Via2V5IG9mIHRoZSBrZXkgaWRlbnRpZmllZCBieQorICAgICAgICB0aGUga2V5IHBhcmFtZXRlci4gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBOb25lLCBhbmQgdGhlIGtleSBtYXkgbm90CisgICAgICAgIGhhdmUgc3Via2V5cy4KKyAgICAvCisKK0RlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkuCisKK1RoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLgorCitJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsCitpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeURlbGV0ZUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRGVsZXRlS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODc1Yzg5MTdkYWNiYzk5ZCBpbnB1dD1iMzFkMjI1YjkzNWU0MjExXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk91OkRlbGV0ZUtleSIsICZvYktleSwgJnN1YktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmMgPSBSZWdEZWxldGVLZXlXKGhLZXksIHN1YktleSApOworICAgIHJjID0gUmVnRGVsZXRlS2V5VyhrZXksIHN1Yl9rZXkgKTsKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnRGVsZXRlS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRGVsZXRlS2V5RXgKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERQorICAgICAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5CisgICAgICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3QKKyAgICAgICAgaGF2ZSBzdWJrZXlzLgorICAgIGFjY2VzczogUkVHU0FNKGNfZGVmYXVsdD0nS0VZX1dPVzY0XzY0S0VZJykgPSB3aW5yZWcuS0VZX1dPVzY0XzY0S0VZCisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlCisgICAgICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XT1c2NF82NEtFWS4KKyAgICByZXNlcnZlZDogaW50ID0gMAorICAgICAgICBBIHJlc2VydmVkIGludGVnZXIsIGFuZCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uCisKK0RlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkgKDY0LWJpdCBPUyBvbmx5KS4KKworVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuCisKK0lmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywKK2lzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK09uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlEZWxldGVLZXlFeChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMzYyYTBhYzY1MDIzNzlmIGlucHV0PTcxMWQ5ZDg5ZTdlY2JlZDddKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKmtleTsKICAgICBITU9EVUxFIGhNb2Q7CiAgICAgdHlwZWRlZiBMT05HIChXSU5BUEkgKlJES0VGdW5jKShIS0VZLCBjb25zdCB3Y2hhcl90KiwgUkVHU0FNLCBpbnQpOwogICAgIFJES0VGdW5jIHBmbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqc3ViX2tleTsKICAgICBsb25nIHJjOwotICAgIGludCByZXNlcnZlZCA9IDA7Ci0gICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XT1c2NF82NEtFWTsKLQotICAgIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAic3ViX2tleSIsICJhY2Nlc3MiLCAicmVzZXJ2ZWQiLCBOVUxMfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPdXxpaTpEZWxldGVLZXlFeCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKGtleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiAqLwpAQCAtMTExMiw0MiArOTY2LDYwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSAoKnBmbikoaEtleSwgc3ViX2tleSwgYWNjZXNzLCByZXNlcnZlZCk7CisgICAgcmMgPSAoKnBmbikoa2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0RlbGV0ZUtleUV4Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRGVsZXRlVmFsdWUKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgdmFsdWU6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZSB0byByZW1vdmUuCisgICAgLworCitSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSBhIHJlZ2lzdHJ5IGtleS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RGVsZXRlVmFsdWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0RlbGV0ZVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwODU1MGI4Y2RjZmQ4ZTEgaW5wdXQ9YTc4ZDM0MDdhNDE5N2IyMV0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqc3ViS2V5OwogICAgIGxvbmcgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPWjpEZWxldGVWYWx1ZSIsICZvYktleSwgJnN1YktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnRGVsZXRlVmFsdWVXKGhLZXksIHN1YktleSk7CisgICAgcmMgPSBSZWdEZWxldGVWYWx1ZVcoa2V5LCB2YWx1ZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT1FUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRGVsZXRlVmFsdWUiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5FbnVtS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIGluZGV4OiBpbnQKKyAgICAgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuCisgICAgLworCitFbnVtZXJhdGVzIHN1YmtleXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuCisKK1RoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLgorSXQgaXMgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzCityYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RW51bUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRW51bUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBpbnQgaW5kZXgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTgwNzRmZmFiYmM2Nzg5NiBpbnB1dD1mYWQ5YTdjMDBhYjBlMDRiXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICBpbnQgaW5kZXg7CiAgICAgbG9uZyByYzsKICAgICBQeU9iamVjdCAqcmV0U3RyOwogCkBAIC0xMTYwLDEzICsxMDMyLDggQEAKICAgICB3Y2hhcl90IHRtcGJ1ZlsyNTddOwogICAgIERXT1JEIGxlbiA9IHNpemVvZih0bXBidWYpL3NpemVvZih3Y2hhcl90KTsgLyogaW5jbHVkZXMgTlVMTCB0ZXJtaW5hdG9yICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pOkVudW1LZXkiLCAmb2JLZXksICZpbmRleCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdFbnVtS2V5RXhXKGhLZXksIGluZGV4LCB0bXBidWYsICZsZW4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIHJjID0gUmVnRW51bUtleUV4VyhrZXksIGluZGV4LCB0bXBidWYsICZsZW4sIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0VudW1LZXlFeCIpOwpAQCAtMTE3NSwxMiArMTA0MiwzNSBAQAogICAgIHJldHVybiByZXRTdHI7ICAvKiBjYW4gYmUgTlVMTCAqLwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuRW51bVZhbHVlCisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBpbmRleDogaW50CisgICAgICAgIEFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuCisgICAgLworCitFbnVtZXJhdGVzIHZhbHVlcyBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhlIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbmFtZSBvZiBvbmUgc3Via2V5IGVhY2ggdGltZSBpdCBpcyBjYWxsZWQuCitJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGFuIE9TRXJyb3IgZXhjZXB0aW9uCitpcyByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuCisKK1RoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOgorICB2YWx1ZV9uYW1lCisgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZS4KKyAgdmFsdWVfZGF0YQorICAgIEFuIG9iamVjdCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBkYXRhLCBhbmQgd2hvc2UgdHlwZSBkZXBlbmRzCisgICAgb24gdGhlIHVuZGVybHlpbmcgcmVnaXN0cnkgdHlwZS4KKyAgZGF0YV90eXBlCisgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUVudW1WYWx1ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRW51bVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIGludCBpbmRleCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTcwMzY3ZWJhZjBlOTc5IGlucHV0PTQ0MTRmNDdhNmZiMjM4YjVdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwotICAgIGludCBpbmRleDsKICAgICBsb25nIHJjOwogICAgIHdjaGFyX3QgKnJldFZhbHVlQnVmOwogICAgIEJZVEUgKnRtcEJ1ZjsKQEAgLTExOTEsMTIgKzEwODEsNyBAQAogICAgIFB5T2JqZWN0ICpvYkRhdGE7CiAgICAgUHlPYmplY3QgKnJldFZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2k6RW51bVZhbHVlIiwgJm9iS2V5LCAmaW5kZXgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChyYyA9IFJlZ1F1ZXJ5SW5mb0tleVcoaEtleSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKyAgICBpZiAoKHJjID0gUmVnUXVlcnlJbmZvS2V5VyhrZXksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJldFZhbHVlU2l6ZSwgJnJldERhdGFTaXplLCBOVUxMLCBOVUxMKSkKICAgICAgICAgIT0gRVJST1JfU1VDQ0VTUykKQEAgLTEyMTcsNyArMTEwMiw3IEBACiAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJjID0gUmVnRW51bVZhbHVlVyhoS2V5LAorICAgICAgICByYyA9IFJlZ0VudW1WYWx1ZVcoa2V5LAogICAgICAgICAgICAgICAgICAgaW5kZXgsCiAgICAgICAgICAgICAgICAgICByZXRWYWx1ZUJ1ZiwKICAgICAgICAgICAgICAgICAgICZyZXRWYWx1ZVNpemUsCkBAIC0xMjYwLDE5ICsxMTQ1LDI1IEBACiAgICAgcmV0dXJuIHJldFZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkV4cGFuZEVudmlyb25tZW50U3RyaW5ncworCisgICAgc3RyaW5nOiBQeV9VTklDT0RFCisgICAgLworCitFeHBhbmQgZW52aXJvbm1lbnQgdmFycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGNiNjkxNDA2NWE4NjYzYyBpbnB1dD1iMmE5NzE0ZDJiNzUxYWE2XSovCiB7CiAgICAgd2NoYXJfdCAqcmV0VmFsdWUgPSBOVUxMOwotICAgIHdjaGFyX3QgKnNyYzsKICAgICBEV09SRCByZXRWYWx1ZVNpemU7CiAgICAgRFdPUkQgcmM7CiAgICAgUHlPYmplY3QgKm87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnNyYykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0VmFsdWVTaXplID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhzcmMsIHJldFZhbHVlLCAwKTsKKyAgICByZXRWYWx1ZVNpemUgPSBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKHN0cmluZywgcmV0VmFsdWUsIDApOwogICAgIGlmIChyZXRWYWx1ZVNpemUgPT0gMCkgewogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiKTsKQEAgLTEyODIsNyArMTE3Myw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KIAotICAgIHJjID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhzcmMsIHJldFZhbHVlLCByZXRWYWx1ZVNpemUpOworICAgIHJjID0gRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhzdHJpbmcsIHJldFZhbHVlLCByZXRWYWx1ZVNpemUpOwogICAgIGlmIChyYyA9PSAwKSB7CiAgICAgICAgIFB5TWVtX0ZyZWUocmV0VmFsdWUpOwogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLApAQCAtMTI5Myw5MCArMTE4NCwxNjYgQEAKICAgICByZXR1cm4gbzsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkZsdXNoS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIC8KKworV3JpdGVzIGFsbCB0aGUgYXR0cmlidXRlcyBvZiBhIGtleSB0byB0aGUgcmVnaXN0cnkuCisKK0l0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBGbHVzaEtleSB0byBjaGFuZ2UgYSBrZXkuICBSZWdpc3RyeSBjaGFuZ2VzCithcmUgZmx1c2hlZCB0byBkaXNrIGJ5IHRoZSByZWdpc3RyeSB1c2luZyBpdHMgbGF6eSBmbHVzaGVyLiAgUmVnaXN0cnkKK2NoYW5nZXMgYXJlIGFsc28gZmx1c2hlZCB0byBkaXNrIGF0IHN5c3RlbSBzaHV0ZG93bi4gIFVubGlrZQorQ2xvc2VLZXkoKSwgdGhlIEZsdXNoS2V5KCkgbWV0aG9kIHJldHVybnMgb25seSB3aGVuIGFsbCB0aGUgZGF0YSBoYXMKK2JlZW4gd3JpdHRlbiB0byB0aGUgcmVnaXN0cnkuCisKK0FuIGFwcGxpY2F0aW9uIHNob3VsZCBvbmx5IGNhbGwgRmx1c2hLZXkoKSBpZiBpdCByZXF1aXJlcyBhYnNvbHV0ZQorY2VydGFpbnR5IHRoYXQgcmVnaXN0cnkgY2hhbmdlcyBhcmUgb24gZGlzay4gIElmIHlvdSBkb24ndCBrbm93IHdoZXRoZXIKK2EgRmx1c2hLZXkoKSBjYWxsIGlzIHJlcXVpcmVkLCBpdCBwcm9iYWJseSBpc24ndC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVB5Rmx1c2hLZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0ZsdXNoS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjlhN2E2ZTQwNTQ2NjQyMCBpbnB1dD1mNTc0NTdjMTIyOTdkODJmXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKICAgICBsb25nIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpGbHVzaEtleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnRmx1c2hLZXkoaEtleSk7CisgICAgcmMgPSBSZWdGbHVzaEtleShrZXkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ0ZsdXNoS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotc3RhdGljIFB5T2JqZWN0ICoKLVB5TG9hZEtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7Ci0gICAgd2NoYXJfdCAqZmlsZU5hbWU7CiAKKworLypbY2xpbmljIGlucHV0XQord2lucmVnLkxvYWRLZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERQorICAgICAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yi1rZXkgdG8gbG9hZC4KKyAgICBmaWxlX25hbWU6IFB5X1VOSUNPREUKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gbG9hZCByZWdpc3RyeSBkYXRhIGZyb20uICBUaGlzIGZpbGUgbXVzdAorICAgICAgICBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBTYXZlS2V5KCkgZnVuY3Rpb24uICBVbmRlciB0aGUgZmlsZQorICAgICAgICBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtLCB0aGUgZmlsZW5hbWUgbWF5IG5vdCBoYXZlIGFuCisgICAgICAgIGV4dGVuc2lvbi4KKyAgICAvCisKK0luc2VydCBkYXRhIGludG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBmaWxlLgorCitDcmVhdGVzIGEgc3Via2V5IHVuZGVyIHRoZSBzcGVjaWZpZWQga2V5IGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uCitpbmZvcm1hdGlvbiBmcm9tIGEgc3BlY2lmaWVkIGZpbGUgaW50byB0aGF0IHN1YmtleS4KKworQSBjYWxsIHRvIExvYWRLZXkoKSBmYWlscyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhlCitTRV9SRVNUT1JFX1BSSVZJTEVHRSBwcml2aWxlZ2UuCisKK0lmIGtleSBpcyBhIGhhbmRsZSByZXR1cm5lZCBieSBDb25uZWN0UmVnaXN0cnkoKSwgdGhlbiB0aGUgcGF0aAorc3BlY2lmaWVkIGluIGZpbGVOYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuCisKK1RoZSBNU0ROIGRvY3MgaW1wbHkga2V5IG11c3QgYmUgaW4gdGhlIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkUKK3RyZWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfTG9hZEtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmaWxlX25hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjhiNzAwZTM5YzY5NWI5MCBpbnB1dD1lM2I1YjQ1YWRlMzExNTgyXSovCit7CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk91dTpMb2FkS2V5IiwgJm9iS2V5LCAmc3ViS2V5LCAmZmlsZU5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnTG9hZEtleVcoaEtleSwgc3ViS2V5LCBmaWxlTmFtZSApOworICAgIHJjID0gUmVnTG9hZEtleVcoa2V5LCBzdWJfa2V5LCBmaWxlX25hbWUgKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdMb2FkS2V5Iik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlPcGVuS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5PcGVuS2V5IC0+IEhLRVkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgc3ViX2tleTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi4KKyAgICByZXNlcnZlZDogaW50ID0gMAorICAgICAgICBBIHJlc2VydmVkIGludGVnZXIgdGhhdCBtdXN0IGJlIHplcm8uICBEZWZhdWx0IGlzIHplcm8uCisgICAgYWNjZXNzOiBSRUdTQU0oY19kZWZhdWx0PSdLRVlfUkVBRCcpID0gd2lucmVnLktFWV9SRUFECisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlIGRlc2lyZWQKKyAgICAgICAgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiAgRGVmYXVsdCBpcyBLRVlfUkVBRC4KKworT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuCisKK1RoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5LgorSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzk4MThlYTM1NjQ5MGE1NSBpbnB1dD0wOTg1MDVhYzM2YTlhZTI4XSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgd2NoYXJfdCAqc3ViX2tleTsKLSAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIEhLRVkgcmV0S2V5OwogICAgIGxvbmcgcmM7Ci0gICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOwotCi0gICAgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT1p8aWk6T3BlbktleSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKGtleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdPcGVuS2V5RXhXKGhLZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MsICZyZXRLZXkpOworICAgIHJjID0gUmVnT3BlbktleUV4VyhrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MsICZyZXRLZXkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ09wZW5LZXlFeCIpOwotICAgIHJldHVybiBQeUhLRVlfRnJvbUhLRVkocmV0S2V5KTsKKyAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ09wZW5LZXlFeCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJldEtleTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLk9wZW5LZXlFeCA9IHdpbnJlZy5PcGVuS2V5CisKK09wZW5zIHRoZSBzcGVjaWZpZWQga2V5LgorCitUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS4KK0lmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEtFWQord2lucmVnX09wZW5LZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2VzcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGQ5ZjI5ZTg0ZWEyZGJjIGlucHV0PWM2YzQ5NzJhZjg2MjI5NTldKi8KK3sKKyAgICByZXR1cm4gd2lucmVnX09wZW5LZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeUluZm9LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEga2V5LgorCitUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczoKK0FuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBudW1iZXIgb2Ygc3ViIGtleXMgdGhpcyBrZXkgaGFzLgorQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhpcyBrZXkgaGFzLgorQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgd2hlbiB0aGUga2V5IHdhcyBsYXN0IG1vZGlmaWVkIChpZiBhdmFpbGFibGUpCithcyAxMDAncyBvZiBuYW5vc2Vjb25kcyBzaW5jZSBKYW4gMSwgMTYwMC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5UXVlcnlJbmZvS2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTg4NTIyMmZlOTY2YTM0IGlucHV0PWMzNTkzODAyMzkwY2RlMWZdKi8KIHsKLSAgSEtFWSBoS2V5OwotICBQeU9iamVjdCAqb2JLZXk7CiAgIGxvbmcgcmM7CiAgIERXT1JEIG5TdWJLZXlzLCBuVmFsdWVzOwogICBGSUxFVElNRSBmdDsKICAgTEFSR0VfSU5URUdFUiBsaTsKICAgUHlPYmplY3QgKmw7CiAgIFB5T2JqZWN0ICpyZXQ7Ci0gIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpRdWVyeUluZm9LZXkiLCAmb2JLZXkpKQotICAgIHJldHVybiBOVUxMOwotICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgcmV0dXJuIE5VTEw7Ci0gIGlmICgocmMgPSBSZWdRdWVyeUluZm9LZXkoaEtleSwgTlVMTCwgTlVMTCwgMCwgJm5TdWJLZXlzLCBOVUxMLCBOVUxMLAorCisgIGlmICgocmMgPSBSZWdRdWVyeUluZm9LZXkoa2V5LCBOVUxMLCBOVUxMLCAwLCAmblN1YktleXMsIE5VTEwsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5WYWx1ZXMsICBOVUxMLCAgTlVMTCwgTlVMTCwgJmZ0KSkKICAgICAgICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLCAiUmVnUXVlcnlJbmZvS2V5Iik7CkBAIC0xMzkwLDEyICsxMzU3LDMxIEBACiAgIHJldHVybiByZXQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeVZhbHVlCisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIHN1Yl9rZXk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBob2xkcyB0aGUgbmFtZSBvZiB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlCisgICAgICAgIGlzIGFzc29jaWF0ZWQuICBJZiB0aGlzIHBhcmFtZXRlciBpcyBOb25lIG9yIGVtcHR5LCB0aGUgZnVuY3Rpb24KKyAgICAgICAgcmV0cmlldmVzIHRoZSB2YWx1ZSBzZXQgYnkgdGhlIFNldFZhbHVlKCkgbWV0aG9kIGZvciB0aGUga2V5CisgICAgICAgIGlkZW50aWZpZWQgYnkga2V5LgorICAgIC8KKworUmV0cmlldmVzIHRoZSB1bm5hbWVkIHZhbHVlIGZvciBhIGtleS4KKworVmFsdWVzIGluIHRoZSByZWdpc3RyeSBoYXZlIG5hbWUsIHR5cGUsIGFuZCBkYXRhIGNvbXBvbmVudHMuIFRoaXMgbWV0aG9kCityZXRyaWV2ZXMgdGhlIGRhdGEgZm9yIGEga2V5J3MgZmlyc3QgdmFsdWUgdGhhdCBoYXMgYSBOVUxMIG5hbWUuCitCdXQgc2luY2UgdGhlIHVuZGVybHlpbmcgQVBJIGNhbGwgZG9lc24ndCByZXR1cm4gdGhlIHR5cGUsIHlvdSdsbAorcHJvYmFibHkgYmUgaGFwcGllciB1c2luZyBRdWVyeVZhbHVlRXg7IHRoaXMgZnVuY3Rpb24gaXMganVzdCBoZXJlIGZvcgorY29tcGxldGVuZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlRdWVyeVZhbHVlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19RdWVyeVZhbHVlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkxY2I2ZjYyM2MzYjY1YSBpbnB1dD00MWNhZmJiZjQyM2IyMWQ2XSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7CiAgICAgbG9uZyByYzsKICAgICBQeU9iamVjdCAqcmV0U3RyOwogICAgIHdjaGFyX3QgKnJldEJ1ZjsKQEAgLTE0MDMsMTMgKzEzODksNyBAQAogICAgIERXT1JEIHJldFNpemUgPSAwOwogICAgIHdjaGFyX3QgKnRtcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1o6UXVlcnlWYWx1ZSIsICZvYktleSwgJnN1YktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJjID0gUmVnUXVlcnlWYWx1ZVcoaEtleSwgc3ViS2V5LCBOVUxMLCAmcmV0U2l6ZSk7CisgICAgcmMgPSBSZWdRdWVyeVZhbHVlVyhrZXksIHN1Yl9rZXksIE5VTEwsICZyZXRTaXplKTsKICAgICBpZiAocmMgPT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICByZXRTaXplID0gMjU2OwogICAgIGVsc2UgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0xNDIzLDcgKzE0MDMsNyBAQAogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcmV0U2l6ZSA9IGJ1ZlNpemU7Ci0gICAgICAgIHJjID0gUmVnUXVlcnlWYWx1ZVcoaEtleSwgc3ViS2V5LCByZXRCdWYsICZyZXRTaXplKTsKKyAgICAgICAgcmMgPSBSZWdRdWVyeVZhbHVlVyhrZXksIHN1Yl9rZXksIHJldEJ1ZiwgJnJldFNpemUpOwogICAgICAgICBpZiAocmMgIT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE0NDcsMTMgKzE0MjcsMjggQEAKICAgICByZXR1cm4gcmV0U3RyOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotUHlRdWVyeVZhbHVlRXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqdmFsdWVOYW1lOwogCisvKltjbGluaWMgaW5wdXRdCit3aW5yZWcuUXVlcnlWYWx1ZUV4CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIG5hbWU6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgdmFsdWUgdG8gcXVlcnkuCisgICAgLworCitSZXRyaWV2ZXMgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIGEgc3BlY2lmaWVkIHN1Yi1rZXkuCisKK0JlaGF2ZXMgbW9zdGx5IGxpa2UgUXVlcnlWYWx1ZSgpLCBidXQgYWxzbyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZQorc3BlY2lmaWVkIHZhbHVlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIHR5cGVfaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRiMDdmNzgwNzE5NGYyMyBpbnB1dD1jZjM2NmNhZGE0ODM2ODkxXSovCit7CiAgICAgbG9uZyByYzsKICAgICBCWVRFICpyZXRCdWYsICp0bXA7CiAgICAgRFdPUkQgYnVmU2l6ZSA9IDAsIHJldFNpemU7CkBAIC0xNDYxLDEzICsxNDU2LDcgQEAKICAgICBQeU9iamVjdCAqb2JEYXRhOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9aOlF1ZXJ5VmFsdWVFeCIsICZvYktleSwgJnZhbHVlTmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJjID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCB2YWx1ZU5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsICZidWZTaXplKTsKKyAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoa2V5LCBuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCAmYnVmU2l6ZSk7CiAgICAgaWYgKHJjID09IEVSUk9SX01PUkVfREFUQSkKICAgICAgICAgYnVmU2l6ZSA9IDI1NjsKICAgICBlbHNlIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQpAQCAtMTQ3OSw3ICsxNDY4LDcgQEAKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHJldFNpemUgPSBidWZTaXplOwotICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgdmFsdWVOYW1lLCBOVUxMLCAmdHlwLAorICAgICAgICByYyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoa2V5LCBuYW1lLCBOVUxMLCAmdHlwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQllURSAqKXJldEJ1ZiwgJnJldFNpemUpOwogICAgICAgICBpZiAocmMgIT0gRVJST1JfTU9SRV9EQVRBKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTA3LDkxICsxNDk2LDE0OSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5TYXZlS2V5CisKKyAgICBrZXk6IEhLRVkKKyAgICAgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLgorICAgIGZpbGVfbmFtZTogUHlfVU5JQ09ERQorICAgICAgICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBzYXZlIHJlZ2lzdHJ5IGRhdGEgdG8uICBUaGlzIGZpbGUgY2Fubm90CisgICAgICAgIGFscmVhZHkgZXhpc3QuIElmIHRoaXMgZmlsZW5hbWUgaW5jbHVkZXMgYW4gZXh0ZW5zaW9uLCBpdCBjYW5ub3QgYmUKKyAgICAgICAgdXNlZCBvbiBmaWxlIGFsbG9jYXRpb24gdGFibGUgKEZBVCkgZmlsZSBzeXN0ZW1zIGJ5IHRoZSBMb2FkS2V5KCksCisgICAgICAgIFJlcGxhY2VLZXkoKSBvciBSZXN0b3JlS2V5KCkgbWV0aG9kcy4KKyAgICAvCisKK1NhdmVzIHRoZSBzcGVjaWZpZWQga2V5LCBhbmQgYWxsIGl0cyBzdWJrZXlzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4KKworSWYga2V5IHJlcHJlc2VudHMgYSBrZXkgb24gYSByZW1vdGUgY29tcHV0ZXIsIHRoZSBwYXRoIGRlc2NyaWJlZCBieQorZmlsZV9uYW1lIGlzIHJlbGF0aXZlIHRvIHRoZSByZW1vdGUgY29tcHV0ZXIuCisKK1RoZSBjYWxsZXIgb2YgdGhpcyBtZXRob2QgbXVzdCBwb3NzZXNzIHRoZSBTZUJhY2t1cFByaXZpbGVnZQorc2VjdXJpdHkgcHJpdmlsZWdlLiAgVGhpcyBmdW5jdGlvbiBwYXNzZXMgTlVMTCBmb3Igc2VjdXJpdHlfYXR0cmlidXRlcwordG8gdGhlIEFQSS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U2F2ZUtleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfU2F2ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpmaWxlX25hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzMxMDliOTZiZmFiZWY4ZiBpbnB1dD1kYTczNTI0MWY5MWFjN2EyXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpmaWxlTmFtZTsKICAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgcFNBID0gTlVMTDsKIAogICAgIGxvbmcgcmM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPdTpTYXZlS2V5IiwgJm9iS2V5LCAmZmlsZU5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogLyogIE9uZSBkYXkgd2UgbWF5IGdldCBzZWN1cml0eSBpbnRvIHRoZSBjb3JlPwogICAgIGlmICghUHlXaW5PYmplY3RfQXNTRUNVUklUWV9BVFRSSUJVVEVTKG9iU0EsICZwU0EsIFRSVUUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnU2F2ZUtleVcoaEtleSwgZmlsZU5hbWUsIHBTQSApOworICAgIHJjID0gUmVnU2F2ZUtleVcoa2V5LCBmaWxlX25hbWUsIHBTQSApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywgIlJlZ1NhdmVLZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5TZXRWYWx1ZQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICBzdWJfa2V5OiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgICAgIEEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIHN1YmtleSB3aXRoIHdoaWNoIHRoZSB2YWx1ZSBpcyBhc3NvY2lhdGVkLgorICAgIHR5cGU6IERXT1JECisgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBDdXJyZW50bHkgdGhpcyBtdXN0CisgICAgICAgIGJlIFJFR19TWiwgbWVhbmluZyBvbmx5IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC4KKyAgICB2YWx1ZTogUHlfVU5JQ09ERSh6ZXJvZXM9VHJ1ZSkKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS4KKyAgICAvCisKK0Fzc29jaWF0ZXMgYSB2YWx1ZSB3aXRoIGEgc3BlY2lmaWVkIGtleS4KKworSWYgdGhlIGtleSBzcGVjaWZpZWQgYnkgdGhlIHN1Yl9rZXkgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0LCB0aGUKK1NldFZhbHVlIGZ1bmN0aW9uIGNyZWF0ZXMgaXQuCisKK1ZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhbgorMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluCit0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeSB0byBoZWxwIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LgorCitUaGUga2V5IGlkZW50aWZpZWQgYnkgdGhlIGtleSBwYXJhbWV0ZXIgbXVzdCBoYXZlIGJlZW4gb3BlbmVkIHdpdGgKK0tFWV9TRVRfVkFMVUUgYWNjZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTZXRWYWx1ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfU2V0VmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgIERXT1JEIHR5cGUsIFB5X1VOSUNPREUgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCB2YWx1ZV9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2M5YzdjMjc2OWU4Zjk1MyBpbnB1dD0yY2QyYWRhYjc5MzM5YzUzXSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKLSAgICB3Y2hhcl90ICpzdWJLZXk7Ci0gICAgd2NoYXJfdCAqc3RyOwotICAgIERXT1JEIHR5cDsKLSAgICBEV09SRCBsZW47CiAgICAgbG9uZyByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9aaXUjOlNldFZhbHVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3ViS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAodHlwICE9IFJFR19TWikgeworCisgICAgaWYgKHR5cGUgIT0gUkVHX1NaKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVHlwZSBtdXN0IGJlIHdpbnJlZy5SRUdfU1oiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUmVnU2V0VmFsdWVXKGhLZXksIHN1YktleSwgUkVHX1NaLCBzdHIsIGxlbisxKTsKKyAgICByYyA9IFJlZ1NldFZhbHVlVyhrZXksIHN1Yl9rZXksIFJFR19TWiwgdmFsdWUsIHZhbHVlX2xlbmd0aCsxKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdTZXRWYWx1ZSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLlNldFZhbHVlRXgKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgdmFsdWVfbmFtZTogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSB2YWx1ZSB0byBzZXQsIG9yIE5vbmUuCisgICAgcmVzZXJ2ZWQ6IG9iamVjdAorICAgICAgICBDYW4gYmUgYW55dGhpbmcgLSB6ZXJvIGlzIGFsd2F5cyBwYXNzZWQgdG8gdGhlIEFQSS4KKyAgICB0eXBlOiBEV09SRAorICAgICAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLCBvbmUgb2Y6CisgICAgICAgIFJFR19CSU5BUlkgLS0gQmluYXJ5IGRhdGEgaW4gYW55IGZvcm0uCisgICAgICAgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4KKyAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgorICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJVBBVEglKS4KKyAgICAgICAgUkVHX0xJTksgLS0gQSBVbmljb2RlIHN5bWJvbGljIGxpbmsuCisgICAgICAgIFJFR19NVUxUSV9TWiAtLSBBbiBzZXF1ZW5jZSBvZiBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncywgdGVybWluYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgorICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgorICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgorICAgIHZhbHVlOiBvYmplY3QKKyAgICAgICAgQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyB2YWx1ZS4KKyAgICAvCisKK1N0b3JlcyBkYXRhIGluIHRoZSB2YWx1ZSBmaWVsZCBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS4KKworVGhpcyBtZXRob2QgY2FuIGFsc28gc2V0IGFkZGl0aW9uYWwgdmFsdWUgYW5kIHR5cGUgaW5mb3JtYXRpb24gZm9yIHRoZQorc3BlY2lmaWVkIGtleS4gIFRoZSBrZXkgaWRlbnRpZmllZCBieSB0aGUga2V5IHBhcmFtZXRlciBtdXN0IGhhdmUgYmVlbgorb3BlbmVkIHdpdGggS0VZX1NFVF9WQUxVRSBhY2Nlc3MuCisKK1RvIG9wZW4gdGhlIGtleSwgdXNlIHRoZSBDcmVhdGVLZXlFeCgpIG9yIE9wZW5LZXlFeCgpIG1ldGhvZHMuCisKK1ZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhbgorMjA0OCBieXRlcykgc2hvdWxkIGJlIHN0b3JlZCBhcyBmaWxlcyB3aXRoIHRoZSBmaWxlbmFtZXMgc3RvcmVkIGluCit0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeSB0byBoZWxwIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTZXRWYWx1ZUV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnJlZ19TZXRWYWx1ZUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXNlcnZlZCwgRFdPUkQgdHlwZSwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVhMDkyYTkzNWMzNjE1ODIgaW5wdXQ9ZTczZGVjNTM1ZWJlZWE3ZF0qLwogewotICAgIEhLRVkgaEtleTsKLSAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgd2NoYXJfdCAqdmFsdWVOYW1lOwotICAgIFB5T2JqZWN0ICpvYlJlczsKLSAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47Ci0gICAgRFdPUkQgdHlwOwogCiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT1pPaU86U2V0VmFsdWVFeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvYktleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iUmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHkyUmVnKHZhbHVlLCB0eXAsICZkYXRhLCAmbGVuKSkKKyAgICBpZiAoIVB5MlJlZyh2YWx1ZSwgdHlwZSwgJmRhdGEsICZsZW4pKQogICAgIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNTk5LDMxICsxNjQ2LDQwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBSZWdTZXRWYWx1ZUV4VyhoS2V5LCB2YWx1ZU5hbWUsIDAsIHR5cCwgZGF0YSwgbGVuKTsKKyAgICByYyA9IFJlZ1NldFZhbHVlRXhXKGtleSwgdmFsdWVfbmFtZSwgMCwgdHlwZSwgZGF0YSwgbGVuKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIFB5TWVtX0RFTChkYXRhKTsKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ1NldFZhbHVlRXgiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5EaXNhYmxlUmVmbGVjdGlvbktleQorCisgICAga2V5OiBIS0VZCisgICAgICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy4KKyAgICAvCisKK0Rpc2FibGVzIHJlZ2lzdHJ5IHJlZmxlY3Rpb24gZm9yIDMyYml0IHByb2Nlc3NlcyBydW5uaW5nIG9uIGEgNjRiaXQgT1MuCisKK1dpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuCisKK0lmIHRoZSBrZXkgaXMgbm90IG9uIHRoZSByZWZsZWN0aW9uIGxpc3QsIHRoZSBmdW5jdGlvbiBzdWNjZWVkcyBidXQgaGFzCitubyBlZmZlY3QuICBEaXNhYmxpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24KK29mIGFueSBzdWJrZXlzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlEaXNhYmxlUmVmbGVjdGlvbktleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MGZlNmUyNjA0MzI0Y2RkIGlucHV0PWE2YzllNWNhNTQxMDE5M2NdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwogICAgIEhNT0RVTEUgaE1vZDsKICAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSAqUkRSS0Z1bmMpKEhLRVkpOwogICAgIFJEUktGdW5jIHBmbiA9IE5VTEw7CiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpEaXNhYmxlUmVmbGVjdGlvbktleSIsICZvYktleSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlIS0VZX0FzSEtFWShvYktleSwgJmhLZXksIEZBTFNFKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCiAgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKQEAgLTE2MzYsMzAgKzE2OTIsMzcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9ICgqcGZuKShoS2V5KTsKKyAgICByYyA9ICgqcGZuKShrZXkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGdW5jdGlvbihyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdEaXNhYmxlUmVmbGVjdGlvbktleSIpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQord2lucmVnLkVuYWJsZVJlZmxlY3Rpb25LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitSZXN0b3JlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGRpc2FibGVkIGtleS4KKworV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMmJpdCBPUy4KK1Jlc3RvcmluZyByZWZsZWN0aW9uIGZvciBhIGtleSBkb2VzIG5vdCBhZmZlY3QgcmVmbGVjdGlvbiBvZiBhbnkKK3N1YmtleXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUVuYWJsZVJlZmxlY3Rpb25LZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lM2YyM2VkYjQxNGYyNGE0IGlucHV0PTc3NDhhYmJhY2QxZTE2NmFdKi8KIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgUHlPYmplY3QgKm9iS2V5OwogICAgIEhNT0RVTEUgaE1vZDsKICAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSAqUkVSS0Z1bmMpKEhLRVkpOwogICAgIFJFUktGdW5jIHBmbiA9IE5VTEw7CiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpFbmFibGVSZWZsZWN0aW9uS2V5IiwgJm9iS2V5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUhLRVlfQXNIS0VZKG9iS2V5LCAmaEtleSwgRkFMU0UpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIDY0Yml0IHBsYXRmb3Jtcywgc28gd2UgbXVzdCBsb2FkIGl0CiAgICAgICAgZHluYW1pY2FsbHkuKi8KICAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwpAQCAtMTY3MiwzMSArMTczNSwzNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gKCpwZm4pKGhLZXkpOworICAgIHJjID0gKCpwZm4pKGtleSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0VuYWJsZVJlZmxlY3Rpb25LZXkiKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnJlZy5RdWVyeVJlZmxlY3Rpb25LZXkKKworICAgIGtleTogSEtFWQorICAgICAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuCisgICAgLworCitSZXR1cm5zIHRoZSByZWZsZWN0aW9uIHN0YXRlIGZvciB0aGUgc3BlY2lmaWVkIGtleSBhcyBhIGJvb2wuCisKK1dpbGwgZ2VuZXJhbGx5IHJhaXNlIE5vdEltcGxlbWVudGVkIGlmIGV4ZWN1dGVkIG9uIGEgMzJiaXQgT1MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVF1ZXJ5UmVmbGVjdGlvbktleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmE0OWM1NjRjYTE2MmU1MCBpbnB1dD05ZjMyNWVhY2I1YTY1ZDg4XSovCiB7Ci0gICAgSEtFWSBoS2V5OwotICAgIFB5T2JqZWN0ICpvYktleTsKICAgICBITU9EVUxFIGhNb2Q7CiAgICAgdHlwZWRlZiBMT05HIChXSU5BUEkgKlJRUktGdW5jKShIS0VZLCBCT09MICopOwogICAgIFJRUktGdW5jIHBmbiA9IE5VTEw7CiAgICAgQk9PTCByZXN1bHQ7CiAgICAgTE9ORyByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpRdWVyeVJlZmxlY3Rpb25LZXkiLCAmb2JLZXkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5SEtFWV9Bc0hLRVkob2JLZXksICZoS2V5LCBGQUxTRSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwogICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CkBAIC0xNzA5LDcgKzE3NzcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gKCpwZm4pKGhLZXksICZyZXN1bHQpOworICAgIHJjID0gKCpwZm4pKGtleSwgJnJlc3VsdCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZ1bmN0aW9uKHJjLApAQCAtMTcxOCwzNCArMTc4NiwyOSBAQAogfQogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIHdpbnJlZ19tZXRob2RzW10gPSB7Ci0gICAgeyJDbG9zZUtleSIsICAgICAgICAgUHlDbG9zZUtleSwgICAgICAgIE1FVEhfVkFSQVJHUywgQ2xvc2VLZXlfZG9jfSwKLSAgICB7IkNvbm5lY3RSZWdpc3RyeSIsICBQeUNvbm5lY3RSZWdpc3RyeSwgTUVUSF9WQVJBUkdTLCBDb25uZWN0UmVnaXN0cnlfZG9jfSwKLSAgICB7IkNyZWF0ZUtleSIsICAgICAgICBQeUNyZWF0ZUtleSwgICAgICAgTUVUSF9WQVJBUkdTLCBDcmVhdGVLZXlfZG9jfSwKLSAgICB7IkNyZWF0ZUtleUV4IiwgICAgICAoUHlDRnVuY3Rpb24pUHlDcmVhdGVLZXlFeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBDcmVhdGVLZXlFeF9kb2N9LAotICAgIHsiRGVsZXRlS2V5IiwgICAgICAgIFB5RGVsZXRlS2V5LCAgICAgICBNRVRIX1ZBUkFSR1MsIERlbGV0ZUtleV9kb2N9LAotICAgIHsiRGVsZXRlS2V5RXgiLCAgICAgIChQeUNGdW5jdGlvbilQeURlbGV0ZUtleUV4LAotICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIERlbGV0ZUtleUV4X2RvY30sCi0gICAgeyJEZWxldGVWYWx1ZSIsICAgICAgUHlEZWxldGVWYWx1ZSwgICAgIE1FVEhfVkFSQVJHUywgRGVsZXRlVmFsdWVfZG9jfSwKLSAgICB7IkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgUHlEaXNhYmxlUmVmbGVjdGlvbktleSwgTUVUSF9WQVJBUkdTLCBEaXNhYmxlUmVmbGVjdGlvbktleV9kb2N9LAotICAgIHsiRW5hYmxlUmVmbGVjdGlvbktleSIsICBQeUVuYWJsZVJlZmxlY3Rpb25LZXksICBNRVRIX1ZBUkFSR1MsIEVuYWJsZVJlZmxlY3Rpb25LZXlfZG9jfSwKLSAgICB7IkVudW1LZXkiLCAgICAgICAgICBQeUVudW1LZXksICAgICAgICAgTUVUSF9WQVJBUkdTLCBFbnVtS2V5X2RvY30sCi0gICAgeyJFbnVtVmFsdWUiLCAgICAgICAgUHlFbnVtVmFsdWUsICAgICAgIE1FVEhfVkFSQVJHUywgRW51bVZhbHVlX2RvY30sCi0gICAgeyJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCBQeUV4cGFuZEVudmlyb25tZW50U3RyaW5ncywgTUVUSF9WQVJBUkdTLAotICAgICAgICBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfZG9jIH0sCi0gICAgeyJGbHVzaEtleSIsICAgICAgICAgUHlGbHVzaEtleSwgICAgICAgIE1FVEhfVkFSQVJHUywgRmx1c2hLZXlfZG9jfSwKLSAgICB7IkxvYWRLZXkiLCAgICAgICAgICBQeUxvYWRLZXksICAgICAgICAgTUVUSF9WQVJBUkdTLCBMb2FkS2V5X2RvY30sCi0gICAgeyJPcGVuS2V5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5T3BlbktleSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuS2V5X2RvY30sCi0gICAgeyJPcGVuS2V5RXgiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5T3BlbktleSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuS2V5RXhfZG9jfSwKLSAgICB7IlF1ZXJ5VmFsdWUiLCAgICAgICBQeVF1ZXJ5VmFsdWUsICAgICAgTUVUSF9WQVJBUkdTLCBRdWVyeVZhbHVlX2RvY30sCi0gICAgeyJRdWVyeVZhbHVlRXgiLCAgICAgUHlRdWVyeVZhbHVlRXgsICAgIE1FVEhfVkFSQVJHUywgUXVlcnlWYWx1ZUV4X2RvY30sCi0gICAgeyJRdWVyeUluZm9LZXkiLCAgICAgUHlRdWVyeUluZm9LZXksICAgIE1FVEhfVkFSQVJHUywgUXVlcnlJbmZvS2V5X2RvY30sCi0gICAgeyJRdWVyeVJlZmxlY3Rpb25LZXkiLFB5UXVlcnlSZWZsZWN0aW9uS2V5LE1FVEhfVkFSQVJHUywgUXVlcnlSZWZsZWN0aW9uS2V5X2RvY30sCi0gICAgeyJTYXZlS2V5IiwgICAgICAgICAgUHlTYXZlS2V5LCAgICAgICAgIE1FVEhfVkFSQVJHUywgU2F2ZUtleV9kb2N9LAotICAgIHsiU2V0VmFsdWUiLCAgICAgICAgIFB5U2V0VmFsdWUsICAgICAgICBNRVRIX1ZBUkFSR1MsIFNldFZhbHVlX2RvY30sCi0gICAgeyJTZXRWYWx1ZUV4IiwgICAgICAgUHlTZXRWYWx1ZUV4LCAgICAgIE1FVEhfVkFSQVJHUywgU2V0VmFsdWVFeF9kb2N9LAorICAgIFdJTlJFR19DTE9TRUtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfQ09OTkVDVFJFR0lTVFJZX01FVEhPRERFRgorICAgIFdJTlJFR19DUkVBVEVLRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRgorICAgIFdJTlJFR19ERUxFVEVLRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRgorICAgIFdJTlJFR19ERUxFVEVWQUxVRV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRElTQUJMRVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0VOQUJMRVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0VOVU1LRVlfTUVUSE9EREVGCisgICAgV0lOUkVHX0VOVU1WQUxVRV9NRVRIT0RERUYKKyAgICBXSU5SRUdfRVhQQU5ERU5WSVJPTk1FTlRTVFJJTkdTX01FVEhPRERFRgorICAgIFdJTlJFR19GTFVTSEtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfTE9BREtFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfT1BFTktFWUVYX01FVEhPRERFRgorICAgIFdJTlJFR19RVUVSWVZBTFVFX01FVEhPRERFRgorICAgIFdJTlJFR19RVUVSWVZBTFVFRVhfTUVUSE9EREVGCisgICAgV0lOUkVHX1FVRVJZSU5GT0tFWV9NRVRIT0RERUYKKyAgICBXSU5SRUdfUVVFUllSRUZMRUNUSU9OS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19TQVZFS0VZX01FVEhPRERFRgorICAgIFdJTlJFR19TRVRWQUxVRV9NRVRIT0RERUYKKyAgICBXSU5SRUdfU0VUVkFMVUVFWF9NRVRIT0RERUYKICAgICBOVUxMLAogfTsKIApkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggYjU2NGVhYi4uOGU3N2QxMyAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC0zOSwyMiArMzksNiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxtbXN5c3RlbS5oPgogCi1QeURvY19TVFJWQVIoc291bmRfcGxheXNvdW5kX2RvYywKLSJQbGF5U291bmQoc291bmQsIGZsYWdzKSAtIGEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSVxuIgotIlxuIgotIlRoZSBzb3VuZCBhcmd1bWVudCBjYW4gYmUgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS5cbiIKLSJGb3IgZmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIsIHNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKLQotUHlEb2NfU1RSVkFSKHNvdW5kX2JlZXBfZG9jLAotIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBhIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJXG4iCi0iXG4iCi0iVGhlIGZyZXF1ZW5jeSBhcmd1bWVudCBzcGVjaWZpZXMgZnJlcXVlbmN5LCBpbiBoZXJ0eiwgb2YgdGhlIHNvdW5kLlxuIgotIlRoaXMgcGFyYW1ldGVyIG11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LlxuIgotIlRoZSBkdXJhdGlvbiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4iKTsKLQotUHlEb2NfU1RSVkFSKHNvdW5kX21zZ2JlZXBfZG9jLAotIk1lc3NhZ2VCZWVwKHgpIC0gY2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLiB4IGRlZmF1bHRzIHRvIE1CX09LLiIpOwotCiBQeURvY19TVFJWQVIoc291bmRfbW9kdWxlX2RvYywKICJQbGF5U291bmQoc291bmQsIGZsYWdzKSAtIHBsYXkgYSBzb3VuZFxuIgogIlNORF9GSUxFTkFNRSAtIHNvdW5kIGlzIGEgd2F2IGZpbGUgbmFtZVxuIgpAQCAtNjcsNzkgKzUxLDExMiBAQAogIlNORF9OT1NUT1AgLSBEbyBub3QgaW50ZXJydXB0IGFueSBzb3VuZHMgY3VycmVudGx5IHBsYXlpbmdcbiIgIC8vIFJhaXNpbmcgUnVudGltZUVycm9yIGlmIG5lZWRlZAogIlNORF9OT1dBSVQgLSBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHNvdW5kIGRyaXZlciBpcyBidXN5XG4iIC8vIFdpdGhvdXQgYW55IGVycm9ycwogIlxuIgotIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBNYWtlIGEgYmVlcCB0aHJvdWdoIHRoZSBQQyBzcGVha2VyLiIpOworIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBNYWtlIGEgYmVlcCB0aHJvdWdoIHRoZSBQQyBzcGVha2VyLlxuIgorIk1lc3NhZ2VCZWVwKHgpIC0gQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwLiIpOworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgd2luc291bmQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWExODQwMTE0MmQ5N2I4ZDVdKi8KKworI2luY2x1ZGUgImNsaW5pYy93aW5zb3VuZC5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK3dpbnNvdW5kLlBsYXlTb3VuZAorCisgICAgc291bmQ6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICAgICAgVGhlIHNvdW5kIHRvIHBsYXk7IGEgZmlsZW5hbWUsIGRhdGEsIG9yIE5vbmUuCisgICAgZmxhZ3M6IGludAorICAgICAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4KKyAgICAvCisKK0Egd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNvdW5kX3BsYXlzb3VuZChQeU9iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYxNDI3Mzc4NGJmNTllNWMgaW5wdXQ9MzQxMWIxYjdjMWYzNmQ5M10qLwogewotICAgIHdjaGFyX3QgKndzb3VuZDsKLSAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG9rOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsICZ3c291bmQsICZmbGFncykpIHsKLSAgICAgICAgaWYgKGZsYWdzICYgU05EX0FTWU5DICYmIGZsYWdzICYgU05EX01FTU9SWSkgewotICAgICAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbwotICAgICAgICAgICAgICAgcHJldmVudCBTTkRfTE9PUCBmcm9tIG1lbW9yeS4gKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBvayA9IFBsYXlTb3VuZFcod3NvdW5kLCBOVUxMLCBmbGFncyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmICghb2spIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7CisgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRmFpbGVkIHRvIHBsYXkgc291bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5zb3VuZC5CZWVwCisKKyAgICBmcmVxdWVuY3k6IGludAorICAgICAgICBGcmVxdWVuY3kgb2YgdGhlIHNvdW5kIGluIGhlcnR6LgorICAgICAgICBNdXN0IGJlIGluIHRoZSByYW5nZSAzNyB0aHJvdWdoIDMyLDc2Ny4KKyAgICBkdXJhdGlvbjogaW50CisgICAgICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLgorICAgIC8KKworQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBCZWVwIEFQSS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNvdW5kX2JlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfQmVlcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNzVmMjgyMDM1YTg3MmJkIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KIHsKLSAgICBpbnQgZnJlcTsKLSAgICBpbnQgZHVyOwogICAgIEJPT0wgb2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkJlZXAiLCAmZnJlcSwgICZkdXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChmcmVxIDwgMzcgfHwgZnJlcSA+IDMyNzY3KSB7CisgICAgaWYgKGZyZXF1ZW5jeSA8IDM3IHx8IGZyZXF1ZW5jeSA+IDMyNzY3KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZyZXF1ZW5jeSBtdXN0IGJlIGluIDM3IHRocnUgMzI3NjciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gQmVlcChmcmVxLCBkdXIpOworICAgIG9rID0gQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmICghb2spIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwiRmFpbGVkIHRvIGJlZXAiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCit3aW5zb3VuZC5NZXNzYWdlQmVlcAorCisgICAgeDogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCisgICAgLworCitDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuCisKK3ggZGVmYXVsdHMgdG8gTUJfT0suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zb3VuZF9tc2diZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTJhYTZhODIyYmRjNjZhZCBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCiB7Ci0gICAgaW50IHggPSBNQl9PSzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwgJngpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBNZXNzYWdlQmVlcCh4KTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgc291bmRfbWV0aG9kc1tdID0KIHsKLSAgICB7IlBsYXlTb3VuZCIsIHNvdW5kX3BsYXlzb3VuZCwgTUVUSF9WQVJBUkdTLCBzb3VuZF9wbGF5c291bmRfZG9jfSwKLSAgICB7IkJlZXAiLCAgICAgIHNvdW5kX2JlZXAsICAgICAgTUVUSF9WQVJBUkdTLCBzb3VuZF9iZWVwX2RvY30sCi0gICAgeyJNZXNzYWdlQmVlcCIsIHNvdW5kX21zZ2JlZXAsIE1FVEhfVkFSQVJHUywgc291bmRfbXNnYmVlcF9kb2N9LAorICAgIFdJTlNPVU5EX1BMQVlTT1VORF9NRVRIT0RERUYKKyAgICBXSU5TT1VORF9CRUVQX01FVEhPRERFRgorICAgIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRgogICAgIHtOVUxMLCAgTlVMTH0KIH07CiAKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2J6Mi52Y3hwcm9qIGIvUENidWlsZC9fYnoyLnZjeHByb2oKaW5kZXggOTM4N2U1NC4uNjRjM2RjZCAxMDA2NDQKLS0tIGEvUENidWlsZC9fYnoyLnZjeHByb2oKKysrIGIvUENidWlsZC9fYnoyLnZjeHByb2oKQEAgLTM5LDExNyArMzksMjggQEAKICAgICA8Um9vdE5hbWVzcGFjZT5iejI8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU4LDgzICs2OSw2IEBACiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmN4cHJvaiBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCmluZGV4IDIwMmNiMWYuLjY4YjhlMjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCkBAIC0zOSwyMDQgKzM5LDMzIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlczwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjU3LDMwICs4NiwxNCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0neDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDdXN0b21CdWlsZCBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChJbnREaXIpd2luNjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSI8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KICAgICA8L0N1c3RvbUJ1aWxkPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ogYi9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qCmluZGV4IDM1ZTI5OWIuLmMxMjYwYjUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2oKKysrIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagpAQCAtMzgsMTQzICszOCwyOCBAQAogICAgIDxQcm9qZWN0R3VpZD57OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlc190ZXN0PC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ogYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2oKaW5kZXggOThiYTgxZC4uOTQzYmZiMCAxMDA2NDQKLS0tIGEvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvagpAQCAtMzksMjA4ICszOSwzNyBAQAogICAgIDxSb290TmFtZXNwYWNlPl9kZWNpbWFsPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7TUFTTTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPkNPTkZJR18zMjtQUFJPOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPkNPTkZJR182NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzsuLlxJbmNsdWRlOy4uXFBDOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCIgLz4KQEAgLTI3OSwyMiArMTA4LDkgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNkaXY2NC5hc20iPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXZjZGl2NjQub2JqIiAiJShGdWxsUGF0aCkiCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZD5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSI8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgogICAgIDwvQ3VzdG9tQnVpbGQ+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvaiBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2oKaW5kZXggNzgwMmFiMy4uNDE0YmQ4YiAxMDA2NDQKLS0tIGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvagorKysgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCkBAIC0zOSwxMTcgKzM5LDI3IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X2VsZW1lbnR0cmVlPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC0xNTgsODMgKzY4LDYgQEAKICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagppbmRleCA1NTE5N2FmLi5mNzcxNGMwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKKysrIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCkBAIC05LDYgKzksMjIgQEAKICAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTIyLDE1MiArMzgsMzIgQEAKICAgICA8UHJvamVjdEd1aWQ+ezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ308L1Byb2plY3RHdWlkPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fZnJlZXplX2ltcG9ydGxpYjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CiAgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CiAgICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0RFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7TkRFQlVHO19DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz50cnVlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoVGFyZ2V0UGF0aCkgLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IC4uXFB5dGhvblxpbXBvcnRsaWIuaDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPmNyZWF0aW5nIGltcG9ydGxpYi5oPC9NZXNzYWdlPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgIDwvTGluaz4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9mcmVlemVfaW1wb3J0bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xfZnJlZXplX2ltcG9ydGxpYi5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgpAQCAtMTg1LDQgKzgxLDI2IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICA8VGFyZ2V0IE5hbWU9IlJlYnVpbGRJbXBvcnRMaWIiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1Zycgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUmVsZWFzZSciPgorICAgIDxFeGVjIENvbW1hbmQ9JyIkKFRhcmdldFBhdGgpIiAiJChQeVNvdXJjZVBhdGgpTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IiAiJChJbnREaXIpaW1wb3J0bGliLmcuaCInIC8+CisgICAgCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X09sZENvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKFB5U291cmNlUGF0aClQeXRob25caW1wb3J0bGliLmgnKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpPC9fT2xkQ29udGVudD4KKyAgICAgIDxfTmV3Q29udGVudCBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpcilpbXBvcnRsaWIuZy5oJykuUmVwbGFjZShgJiN4MEQ7JiN4MEE7YCwgYCYjeDBBO2ApKTwvX05ld0NvbnRlbnQ+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIkKEludERpcilpbXBvcnRsaWIuZy5oIgorICAgICAgICAgIERlc3RpbmF0aW9uRmlsZXM9IiQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaCIKKyAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIGFuZCAnJChfT2xkQ29udGVudCknICE9ICckKF9OZXdDb250ZW50KSciIC8+CisgICAgCisgICAgPFdhcm5pbmcgVGV4dD0iaW1wb3J0bGliLmggaGFzIGJlZW4gdXBkYXRlZC4gWW91IHdpbGwgbmVlZCB0byByZWJ1aWxkIHB5dGhvbmNvcmUgdG8gc2VlIHRoZSBjaGFuZ2VzLiIKKyAgICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIGFuZCAnJChfT2xkQ29udGVudCknICE9ICckKF9OZXdDb250ZW50KScgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyIgLz4KKyAgICA8RXJyb3IgVGV4dD0iaW1wb3J0bGliLmggaGFzIGJlZW4gdXBkYXRlZC4gWW91IHdpbGwgbmVlZCB0byByZWJ1aWxkIHB5dGhvbmNvcmUgdG8gc2VlIHRoZSBjaGFuZ2VzLiIKKyAgICAgICAgICAgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKSBhbmQgJyQoX09sZENvbnRlbnQpJyAhPSAnJChfTmV3Q29udGVudCknIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdSZWxlYXNlJyIgLz4KKyAgPC9UYXJnZXQ+CisgIDxUYXJnZXQgTmFtZT0iX0NsZWFuSW1wb3J0TGliIiBCZWZvcmVUYXJnZXRzPSJDb3JlQ2xlYW4iPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8Q2xlYW4gSW5jbHVkZT0iJChJbnREaXIpaW1wb3J0bGliLmcuaCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCmluZGV4IDUwZWMxOTMuLmNjYWQwNTMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgPC9GaWx0ZXI+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnJlZXplX2ltcG9ydGxpYi5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXF9mcmVlemVfaW1wb3J0bGliLmMiPgogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CkBAIC0yNCw0ICsyNCw0IEBACiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvTm9uZT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qCmluZGV4IDUyNDMzZWQuLmQ4MmIyNjYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvagorKysgYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2oKQEAgLTM5LDIzOSArMzksNDcgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5faGFzaGxpYjwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQoT3V0RGlyKWxpYmVheSQoUHlEZWJ1Z0V4dCkubGliOyQoT3V0RGlyKXNzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbC52Y3hwcm9qIj4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2xlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTA2MTViMjQtNzNiZi00ZWZhLTkzYWEtMjM2OTE2MzIxMzE3fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImxpYmVheS52Y3hwcm9qIj4KICAgICAgIDxQcm9qZWN0PntlNWIwNGNjMC1lYjRjLTQyYWItYjRkYy0xOGVmOTVmODY0YjB9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19sem1hLnZjeHByb2ogYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKaW5kZXggYWMyNWM4MC4uYWY1MDQ5NCAxMDA2NDQKLS0tIGEvUENidWlsZC9fbHptYS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpAQCAtMzksMjAwICszOSwzNSBAQAogICAgIDxSb290TmFtZXNwYWNlPmx6bWE8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnV2luMzInIj4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+ZmFsc2U8L0ltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXNpLnZjeHByb2ogYi9QQ2J1aWxkL19tc2kudmN4cHJvagppbmRleCAxMzIzZDE2Li5mNWJhN2JmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19tc2kudmN4cHJvagorKysgYi9QQ2J1aWxkL19tc2kudmN4cHJvagpAQCAtMzksMTc4ICszOSwzMiBAQAogICAgIDxSb290TmFtZXNwYWNlPl9tc2k8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNhYmluZXQubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcX21zaS5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKaW5kZXggYjRiYjU2OC4uMWViOTJiNiAxMDA2NDQKLS0tIGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKKysrIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKQEAgLTM5LDE3OCArMzksMzIgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fbXVsdGlwcm9jZXNzaW5nPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX292ZXJsYXBwZWQudmN4cHJvaiBiL1BDYnVpbGQvX292ZXJsYXBwZWQudmN4cHJvagppbmRleCBkMGVlNzJmLi41NTMwMWVhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19vdmVybGFwcGVkLnZjeHByb2oKKysrIGIvUENidWlsZC9fb3ZlcmxhcHBlZC52Y3hwcm9qCkBAIC0zOSwxODYgKzM5LDMyIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X292ZXJsYXBwZWQ8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG92ZXJsYXBwZWQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmN4cHJvaiBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCmluZGV4IDYzODM2ZTkuLjAzYjZmNzUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCkBAIC0zOSwxNzggKzM5LDMyIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X3NvY2tldDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qCmluZGV4IGVkMzVkNWIuLjVlODg5ZDAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvagorKysgYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2oKQEAgLTM5LDExNyArMzksMjcgQEAKICAgICA8Um9vdE5hbWVzcGFjZT5fc3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgpAQCAtMTU4LDgzICs2OCw2IEBACiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zc2wudmN4cHJvaiBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qCmluZGV4IDczNzg3OTQuLjg1OTRhMDYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NzbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3NzbC52Y3hwcm9qCkBAIC0zOSwyNDIgKzM5LDUwIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+X3NzbDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjtjcnlwdDMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliOyQoT3V0RGlyKWxpYmVheSQoUHlEZWJ1Z0V4dCkubGliOyQoT3V0RGlyKXNzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zc2wuYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgogICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CiAgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2wudmN4cHJvaiI+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGliZWF5LnZjeHByb2oiPgogICAgICAgPFByb2plY3Q+e2U1YjA0Y2MwLWViNGMtNDJhYi1iNGRjLTE4ZWY5NWY4NjRiMH08L1Byb2plY3Q+CiAgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2xlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTA2MTViMjQtNzNiZi00ZWZhLTkzYWEtMjM2OTE2MzIxMzE3fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Il9zb2NrZXQudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57ODY5MzdmNTMtYzE4OS00MGVmLThjZTgtODc1OWQ4ZTdkNDgwfTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2oKaW5kZXggZTEyNjVmNi4uOGNiZjEyNSAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvagpAQCAtMzgsMTcxICszOCwzMyBAQAogICAgIDxQcm9qZWN0R3VpZD57QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3RidWZmZXI8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2oKaW5kZXggZTk5YTdlNC4uZGJmNDRlNiAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGNhcGkudmN4cHJvagorKysgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCkBAIC0zOCwxNzEgKzM4LDMzIEBACiAgICAgPFByb2plY3RHdWlkPns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGNhcGk8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RlbWJlZC52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2oKaW5kZXggODNjN2FkMi4uZjBlNGQ5ZiAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2oKKysrIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2oKQEAgLTksNiArOSwyMiBAQAogICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KICAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMjIsMTM3ICszOCwzNyBAQAogICAgIDxQcm9qZWN0R3VpZD57NkRBQzY2RDktRTcwMy00NjI0LUJFMDMtNDkxMTJBQjVBQTYyfTwvUHJvamVjdEd1aWQ+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICAgIDxSb290TmFtZXNwYWNlPl90ZXN0ZW1iZWQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgogICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CiAgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8L1ByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgotICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGVtYmVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xfdGVzdGVtYmVkLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KLSAgICAgIDxQcml2YXRlPnRydWU8L1ByaXZhdGU+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+dHJ1ZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgICA8Q29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz5mYWxzZTwvQ29weUxvY2FsU2F0ZWxsaXRlQXNzZW1ibGllcz4KLSAgICAgIDxMaW5rTGlicmFyeURlcGVuZGVuY2llcz50cnVlPC9MaW5rTGlicmFyeURlcGVuZGVuY2llcz4KLSAgICAgIDxVc2VMaWJyYXJ5RGVwZW5kZW5jeUlucHV0cz5mYWxzZTwvVXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdGVtYmVkLnZjeHByb2ouZmlsdGVycwppbmRleCBkZWE1NGQ0Li5mN2Y5YWJlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0ZW1iZWQudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvX3Rlc3RlbWJlZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTE1LDcgKzE1LDcgQEAKICAgICA8L0ZpbHRlcj4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0ZW1iZWQuYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xfdGVzdGVtYmVkLmMiPgogICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0aW1wb3J0bXVsdGlwbGUudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCmluZGV4IDg0OTg0ZmYuLmNlYzA0MmMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3hwcm9qCkBAIC0zOCwxNzEgKzM4LDMzIEBACiAgICAgPFByb2plY3RHdWlkPnszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGltcG9ydG11bHRpcGxlPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGltcG9ydG11bHRpcGxlLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3YjM4MAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2oKQEAgLTAsMCArMSw4MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdG11bHRpcGhhc2U8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3RtdWx0aXBoYXNlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzI1MTAxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdG11bHRpcGhhc2UudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ogYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2oKaW5kZXggNjdmNzJmZS4uZjMxODVlYiAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX3RraW50ZXIudmN4cHJvagpAQCAtMzksMjAyICszOSwzNiBAQAogICAgIDxSb290TmFtZXNwYWNlPl90a2ludGVyPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InRjbHRrLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYkRlYnVnKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrNjREaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0azY0TGliRGVidWcpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKEJ1aWxkRm9yUmVsZWFzZSknICE9ICd0cnVlJyI+UHlfVENMVEtfRElSPSIkKHRjbHRrRGlyLlRyaW1FbmQoJ1wnKS5SZXBsYWNlKCdcJywgJ1xcJykpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIiAvPgpAQCAtMjQ0LDYgKzc4LDEyIEBACiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRjbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiNWZkNmYxZC0xMjllLTRiZmYtOTM0MC0wMzYwNmZhYzcyODN9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ0ay52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns3ZTg1ZWNjZi1hNzJjLTRkYTQtOWU1Mi04ODQ1MDhlODBiYTF9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvaiBiL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTI3NmEyLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ308L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPndpbmluc3Q8L1Jvb3ROYW1lc3BhY2U+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFw8L091dERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi5leGU8L1RhcmdldEV4dD4KLSAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uZXhlPC9UYXJnZXRFeHQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgotICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgotICAgICAgPEhlYWRlckZpbGVOYW1lPgotICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwMDAwPC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KLSAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KLSAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgotICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICAgIDxUeXBlTGlicmFyeU5hbWU+LlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KLSAgICAgIDxIZWFkZXJGaWxlTmFtZT4KLSAgICAgIDwvSGVhZGVyRmlsZU5hbWU+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDAwMDwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPE91dHB1dEZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC1hbWQ2NC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+TElCQzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KLSAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KLSAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KLSAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiIC8+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGQuYmF0IGIvUENidWlsZC9idWlsZC5iYXQKaW5kZXggZjNiYzFlMy4uMmM0MWZiMiAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZC5iYXQKKysrIGIvUENidWlsZC9idWlsZC5iYXQKQEAgLTEsMTA3ICsxLDEwMiBAQAogQGVjaG8gb2ZmDQotcmVtIEEgYmF0Y2ggcHJvZ3JhbSB0byBidWlsZCBvciByZWJ1aWxkIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uLA0KLXJlbSBqdXN0IGZvciBjb252ZW5pZW5jZS4NCitnb3RvIFJ1bg0KKzpVc2FnZQ0KK2VjaG8uJX5ueDAgW2ZsYWdzIGFuZCBhcmd1bWVudHNdIFtxdW90ZWQgTVNCdWlsZCBvcHRpb25zXQ0KK2VjaG8uDQorZWNoby5CdWlsZCBDUHl0aG9uIGZyb20gdGhlIGNvbW1hbmQgbGluZS4gIFJlcXVpcmVzIHRoZSBhcHByb3ByaWF0ZQ0KK2VjaG8udmVyc2lvbihzKSBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0byBiZSBpbnN0YWxsZWQgKHNlZSByZWFkbWUudHh0KS4NCitlY2hvLkFsc28gcmVxdWlyZXMgU3VidmVyc2lvbiAoc3ZuLmV4ZSkgdG8gYmUgb24gUEFUSCBpZiB0aGUgJy1lJyBmbGFnIGlzDQorZWNoby5naXZlbi4NCitlY2hvLg0KK2VjaG8uQWZ0ZXIgdGhlIGZsYWdzIHJlY29nbml6ZWQgYnkgdGhpcyBzY3JpcHQsIHVwIHRvIDkgYXJndW1lbnRzIHRvIGJlIHBhc3NlZA0KK2VjaG8uZGlyZWN0bHkgdG8gTVNCdWlsZCBtYXkgYmUgcGFzc2VkLiAgSWYgdGhlIGFyZ3VtZW50IGNvbnRhaW5zIGFuICc9JywgdGhlDQorZWNoby5lbnRpcmUgYXJndW1lbnQgbXVzdCBiZSBxdW90ZWQgKGUuZy4gYCV+bngwICIvcDpQbGF0Zm9ybVRvb2xzZXQ9djEwMCJgKQ0KK2VjaG8uDQorZWNoby5BdmFpbGFibGUgZmxhZ3M6DQorZWNoby4gIC1oICBEaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlDQorZWNoby4gIC1WICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IGJ1aWxkDQorZWNoby4gIC1yICBUYXJnZXQgUmVidWlsZCBpbnN0ZWFkIG9mIEJ1aWxkDQorZWNoby4gIC1kICBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gRGVidWcNCitlY2hvLiAgLWUgIEJ1aWxkIGV4dGVybmFsIGxpYnJhcmllcyBmZXRjaGVkIGJ5IGdldF9leHRlcm5hbHMuYmF0DQorZWNoby4gICAgICBFeHRlbnNpb24gbW9kdWxlcyB0aGF0IGRlcGVuZCBvbiBleHRlcm5hbCBsaWJyYXJpZXMgd2lsbCBub3QgYXR0ZW1wdA0KK2VjaG8uICAgICAgdG8gYnVpbGQgaWYgdGhpcyBmbGFnIGlzIG5vdCBwcmVzZW50DQorZWNoby4gIC1tICBFbmFibGUgcGFyYWxsZWwgYnVpbGQgKGVuYWJsZWQgYnkgZGVmYXVsdCkNCitlY2hvLiAgLU0gIERpc2FibGUgcGFyYWxsZWwgYnVpbGQNCitlY2hvLiAgLXYgIEluY3JlYXNlZCBvdXRwdXQgbWVzc2FnZXMNCitlY2hvLiAgLWsgIEF0dGVtcHQgdG8ga2lsbCBhbnkgcnVubmluZyBQeXRob25zIGJlZm9yZSBidWlsZGluZyAodXN1YWxseSBkb25lDQorZWNoby4gICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBweXRob25jb3JlIHByb2plY3QpDQorZWNoby4NCitlY2hvLkF2YWlsYWJsZSBmbGFncyB0byBhdm9pZCBidWlsZGluZyBjZXJ0YWluIG1vZHVsZXMuDQorZWNoby5UaGVzZSBmbGFncyBoYXZlIG5vIGVmZmVjdCBpZiAnLWUnIGlzIG5vdCBnaXZlbjoNCitlY2hvLiAgLS1uby1zc2wgICAgICBEbyBub3QgYXR0ZW1wdCB0byBidWlsZCBfc3NsDQorZWNoby4gIC0tbm8tdGtpbnRlciAgRG8gbm90IGF0dGVtcHQgdG8gYnVpbGQgVGtpbnRlcg0KK2VjaG8uDQorZWNoby5BdmFpbGFibGUgYXJndW1lbnRzOg0KK2VjaG8uICAtYyBSZWxlYXNlIF58IERlYnVnIF58IFBHSW5zdHJ1bWVudCBefCBQR1VwZGF0ZQ0KK2VjaG8uICAgICBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHQ6IFJlbGVhc2UpDQorZWNoby4gIC1wIHg2NCBefCBXaW4zMg0KK2VjaG8uICAgICBTZXQgdGhlIHBsYXRmb3JtIChkZWZhdWx0OiBXaW4zMikNCitlY2hvLiAgLXQgQnVpbGQgXnwgUmVidWlsZCBefCBDbGVhbiBefCBDbGVhbkFsbA0KK2VjaG8uICAgICBTZXQgdGhlIHRhcmdldCBtYW51YWxseQ0KK2V4aXQgL2IgMTI3DQogDQotcmVtIEFyZ3VtZW50czoNCi1yZW0gIC1jICBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gKGRlZmF1bHQ6IFJlbGVhc2UpDQotcmVtICAtcCAgU2V0IHRoZSBwbGF0Zm9ybSAoeDY0IG9yIFdpbjMyLCBkZWZhdWx0OiBXaW4zMikNCi1yZW0gIC1yICBUYXJnZXQgUmVidWlsZCBpbnN0ZWFkIG9mIEJ1aWxkDQotcmVtICAtdCAgU2V0IHRoZSB0YXJnZXQgbWFudWFsbHkgKEJ1aWxkLCBSZWJ1aWxkLCBvciBDbGVhbikNCi1yZW0gIC1kICBTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gRGVidWcNCi1yZW0gIC1lICBQdWxsIGluIGV4dGVybmFsIGxpYnJhcmllcyB1c2luZyBnZXRfZXh0ZXJuYWxzLmJhdA0KLXJlbSAgLW0gIEVuYWJsZSBwYXJhbGxlbCBidWlsZA0KLXJlbSAgLU0gIERpc2FibGUgcGFyYWxsZWwgYnVpbGQgKGRpc2FibGVkIGJ5IGRlZmF1bHQpDQotcmVtICAtdiAgSW5jcmVhc2VkIG91dHB1dCBtZXNzYWdlcw0KLXJlbSAgLWsgIEF0dGVtcHQgdG8ga2lsbCBhbnkgcnVubmluZyBQeXRob25zIGJlZm9yZSBidWlsZGluZw0KLQ0KKzpSdW4NCiBzZXRsb2NhbA0KIHNldCBwbGF0Zj1XaW4zMg0KIHNldCB2c19wbGF0Zj14ODYNCiBzZXQgY29uZj1SZWxlYXNlDQogc2V0IHRhcmdldD1CdWlsZA0KIHNldCBkaXI9JX5kcDANCi1zZXQgcGFyYWxsZWw9DQorc2V0IHBhcmFsbGVsPS9tDQogc2V0IHZlcmJvc2U9L25vbG9nbyAvdjptDQogc2V0IGtpbGw9DQotc2V0IGJ1aWxkX3RraW50ZXI9DQogDQogOkNoZWNrT3B0cw0KLWlmICclMSc9PSctYycgKHNldCBjb25mPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctcCcgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLXInIChzZXQgdGFyZ2V0PVJlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctdCcgKHNldCB0YXJnZXQ9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1kJyAoc2V0IGNvbmY9RGVidWcpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctZScgY2FsbCAiJWRpciVnZXRfZXh0ZXJuYWxzLmJhdCIgJiAoc2V0IGJ1aWxkX3RraW50ZXI9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1tJyAoc2V0IHBhcmFsbGVsPS9tKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLU0nIChzZXQgcGFyYWxsZWw9KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLXYnIChzZXQgdmVyYm9zZT0vdjpuKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLWsnIChzZXQga2lsbD10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1oIiBnb3RvIFVzYWdlDQoraWYgIiV+MSI9PSItYyIgKHNldCBjb25mPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItciIgKHNldCB0YXJnZXQ9UmVidWlsZCkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItdCIgKHNldCB0YXJnZXQ9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItZCIgKHNldCBjb25mPURlYnVnKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1tIiAoc2V0IHBhcmFsbGVsPS9tKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1NIiAoc2V0IHBhcmFsbGVsPSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItdiIgKHNldCB2ZXJib3NlPS92Om4pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLWsiIChzZXQga2lsbD10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1WIiBzaGlmdCAmIGdvdG8gVmVyc2lvbg0KK3JlbSBUaGVzZSB1c2UgdGhlIGFjdHVhbCBwcm9wZXJ0eSBuYW1lcyB1c2VkIGJ5IE1TQnVpbGQuICBXZSBjb3VsZCBqdXN0IGxldA0KK3JlbSB0aGVtIGluIHRocm91Z2ggdGhlIGVudmlyb25tZW50LCBidXQgd2Ugc3BlY2lmeSB0aGVtIG9uIHRoZSBjb21tYW5kIGxpbmUNCityZW0gYW55d2F5IGZvciB2aXNpYmlsaXR5IHNvIHNldCBkZWZhdWx0cyBhZnRlciB0aGlzDQoraWYgIiV+MSI9PSItZSIgKHNldCBJbmNsdWRlRXh0ZXJuYWxzPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLS1uby1zc2wiIChzZXQgSW5jbHVkZVNTTD1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItLW5vLXRraW50ZXIiIChzZXQgSW5jbHVkZVRraW50ZXI9ZmFsc2UpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLWlmICclY29uZiUnPT0nRGVidWcnIChzZXQgZGJnX2V4dD1fZCkgZWxzZSAoc2V0IGRiZ19leHQ9KQ0KLWlmICclcGxhdGYlJz09J3g2NCcgKA0KLSAgICBzZXQgdnNfcGxhdGY9eDg2X2FtZDY0DQotICAgIHNldCBidWlsZGRpcj0lZGlyJWFtZDY0XA0KLSkgZWxzZSAoDQotICAgIHNldCBidWlsZGRpcj0lZGlyJQ0KLSkNCitpZiAiJUluY2x1ZGVFeHRlcm5hbHMlIj09IiIgc2V0IEluY2x1ZGVFeHRlcm5hbHM9ZmFsc2UNCitpZiAiJUluY2x1ZGVTU0wlIj09IiIgc2V0IEluY2x1ZGVTU0w9dHJ1ZQ0KK2lmICIlSW5jbHVkZVRraW50ZXIlIj09IiIgc2V0IEluY2x1ZGVUa2ludGVyPXRydWUNCisNCitpZiAiJUluY2x1ZGVFeHRlcm5hbHMlIj09InRydWUiIGNhbGwgIiVkaXIlZ2V0X2V4dGVybmFscy5iYXQiDQorDQoraWYgIiVwbGF0ZiUiPT0ieDY0IiAoc2V0IHZzX3BsYXRmPXg4Nl9hbWQ2NCkNCiANCiByZW0gU2V0dXAgdGhlIGVudmlyb25tZW50DQotY2FsbCAiJWRpciVlbnYuYmF0IiAldnNfcGxhdGYlDQorY2FsbCAiJWRpciVlbnYuYmF0IiAldnNfcGxhdGYlID5udWwNCiANCi1pZiAnJWtpbGwlJz09J3RydWUnICgNCi0gICAgbXNidWlsZCAiJWRpciVraWxsX3B5dGhvbi52Y3hwcm9qIiAldmVyYm9zZSUgL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJSAmJiAiJWJ1aWxkZGlyJWtpbGxfcHl0aG9uJWRiZ19leHQlLmV4ZSINCi0pDQotDQotc2V0IGV4dGVybmFsc19kaXI9JWRpciUuLlxleHRlcm5hbHMNCi1pZiAnJWJ1aWxkX3RraW50ZXIlJz09J3RydWUnICgNCi0gICAgaWYgJyVwbGF0ZiUnPT0neDY0JyAoDQotICAgICAgICBzZXQgdGNsdGtkaXI9JWV4dGVybmFsc19kaXIlXHRjbHRrNjQNCi0gICAgICAgIHNldCBtYWNoaW5lPUFNRDY0DQotICAgICkgZWxzZSAoDQotICAgICAgICBzZXQgdGNsdGtkaXI9JWV4dGVybmFsc19kaXIlXHRjbHRrDQotICAgICAgICBzZXQgbWFjaGluZT1JWDg2DQotICAgICkNCi0gICAgaWYgJyVjb25mJSc9PSdEZWJ1ZycgKA0KLSAgICAgICAgc2V0IHRjbF9kYmdfZXh0PWcNCi0gICAgICAgIHNldCBkZWJ1Z19mbGFnPTENCi0gICAgICAgIHNldCBvcHRpb25zPXN5bWJvbHMNCi0gICAgKSBlbHNlICgNCi0gICAgICAgIHNldCB0Y2xfZGJnX2V4dD0NCi0gICAgICAgIHNldCBkZWJ1Z19mbGFnPTANCi0gICAgICAgIHNldCBvcHRpb25zPQ0KLSAgICApDQotICAgIHNldCB0Y2xkaXI9JWV4dGVybmFsc19kaXIlXHRjbC04LjYuMS4wDQotICAgIHNldCB0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGstOC42LjEuMA0KLSAgICBzZXQgdGl4ZGlyPSVleHRlcm5hbHNfZGlyJVx0aXgtOC40LjMuNA0KLSkNCi1pZiAnJWJ1aWxkX3RraW50ZXIlJz09J3RydWUnICgNCi0gICAgaWYgbm90IGV4aXN0ICIldGNsdGtkaXIlXGJpblx0Y2w4NnQldGNsX2RiZ19leHQlLmRsbCIgKA0KLSAgICAgICAgQHJlbSBhbGwgYW5kIGluc3RhbGwgbmVlZCB0byBiZSBzZXBhcmF0ZSBpbnZvY2F0aW9ucywgb3RoZXJ3aXNlIG5tYWtlaGxwIGlzIG5vdCBmb3VuZCBvbiBpbnN0YWxsDQotICAgICAgICBwdXNoZCAiJXRjbGRpciVcd2luIg0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgT1BUUz0lb3B0aW9ucyUgSU5TVEFMTERJUj0iJXRjbHRrZGlyJSIgY2xlYW4gYWxsDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBpbnN0YWxsLWJpbmFyaWVzIGluc3RhbGwtbGlicmFyaWVzDQotICAgICAgICBwb3BkDQotICAgICkNCi0NCi0gICAgaWYgbm90IGV4aXN0ICIldGNsdGtkaXIlXGJpblx0azg2dCV0Y2xfZGJnX2V4dCUuZGxsIiAoDQotICAgICAgICBwdXNoZCAiJXRrZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBUQ0xESVI9IiV0Y2xkaXIlIiBjbGVhbg0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgT1BUUz0lb3B0aW9ucyUgSU5TVEFMTERJUj0iJXRjbHRrZGlyJSIgVENMRElSPSIldGNsZGlyJSIgYWxsDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBUQ0xESVI9IiV0Y2xkaXIlIiBpbnN0YWxsLWJpbmFyaWVzIGluc3RhbGwtbGlicmFyaWVzDQotICAgICAgICBwb3BkDQotICAgICkNCi0NCi0gICAgaWYgbm90IGV4aXN0ICIldGNsdGtkaXIlXGxpYlx0aXg4LjQuM1x0aXg4NCV0Y2xfZGJnX2V4dCUuZGxsIiAoDQotICAgICAgICBwdXNoZCAiJXRpeGRpciVcd2luIg0KLSAgICAgICAgbm1ha2UgLWYgcHl0aG9uLm1hayBERUJVRz0lZGVidWdfZmxhZyUgTUFDSElORT0lbWFjaGluZSUgVENMX0RJUj0iJXRjbGRpciUiIFRLX0RJUj0iJXRrZGlyJSIgSU5TVEFMTF9ESVI9IiV0Y2x0a2RpciUiIGNsZWFuDQotICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgYWxsDQotICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgaW5zdGFsbA0KLSAgICAgICAgcG9wZA0KLSAgICApDQoraWYgIiVraWxsJSI9PSJ0cnVlIiAoDQorICAgIG1zYnVpbGQgL3Y6bSAvbm9sb2dvIC90YXJnZXQ6S2lsbFB5dGhvbiAiJWRpciVccHl0aG9uY29yZS52Y3hwcm9qIiAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlIC9wOktpbGxQeXRob249dHJ1ZQ0KICkNCiANCiByZW0gQ2FsbCBvbiBNU0J1aWxkIHRvIGRvIHRoZSB3b3JrLCBlY2hvIHRoZSBjb21tYW5kLg0KIHJlbSBQYXNzaW5nICUxLTkgaXMgbm90IHRoZSBwcmVmZXJyZWQgb3B0aW9uLCBidXQgYXJndW1lbnQgcGFyc2luZyBpbg0KIHJlbSBiYXRjaCBpcywgc2hhbGwgd2Ugc2F5LCAibGFja2x1c3RlciINCiBlY2hvIG9uDQotbXNidWlsZCAiJWRpciVwY2J1aWxkLnNsbiIgL3Q6JXRhcmdldCUgJXBhcmFsbGVsJSAldmVyYm9zZSUgL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KK21zYnVpbGQgIiVkaXIlcGNidWlsZC5wcm9qIiAvdDoldGFyZ2V0JSAlcGFyYWxsZWwlICV2ZXJib3NlJV4NCisgL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJV4NCisgL3A6SW5jbHVkZUV4dGVybmFscz0lSW5jbHVkZUV4dGVybmFscyVeDQorIC9wOkluY2x1ZGVTU0w9JUluY2x1ZGVTU0wlIC9wOkluY2x1ZGVUa2ludGVyPSVJbmNsdWRlVGtpbnRlciVeDQorICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQorDQorQGdvdG8gOmVvZg0KKw0KKzpWZXJzaW9uDQorcmVtIERpc3BsYXkgdGhlIGN1cnJlbnQgYnVpbGQgdmVyc2lvbiBpbmZvcm1hdGlvbg0KK21zYnVpbGQgIiVkaXIlcHl0aG9uLnByb3BzIiAvdDpTaG93VmVyc2lvbkluZm8gL3Y6bSAvbm9sb2dvICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9wZ28uYmF0IGIvUENidWlsZC9idWlsZF9wZ28uYmF0CmluZGV4IGQ3ZTRlOGIuLjc5ZWMyNjcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKQEAgLTcsMTQgKzcsMTYgQEAKIA0KIHNldGxvY2FsDQogc2V0IHBsYXRmPVdpbjMyDQorc2V0IHBhcmFsbGVsPS9tDQorc2V0IGRpcj0lfmRwMA0KIA0KIHJlbSB1c2UgdGhlIHBlcmZvcm1hbmNlIHRlc3RzdWl0ZS4gIFRoaXMgaXMgcXVpY2sgYW5kIHNpbXBsZQ0KLXNldCBqb2IxPS4uXHRvb2xzXHB5YmVuY2hccHliZW5jaC5weSAtbiAxIC1DIDEgLS13aXRoLWdjDQotc2V0IHBhdGgxPS4uXHRvb2xzXHB5YmVuY2gNCitzZXQgam9iMT0iJWRpciUuLlx0b29sc1xweWJlbmNoXHB5YmVuY2gucHkiIC1uIDEgLUMgMSAtLXdpdGgtZ2MNCitzZXQgcGF0aDE9IiVkaXIlLi5cdG9vbHNccHliZW5jaCINCiANCiByZW0gb3IgdGhlIHdob2xlIHRlc3RzdWl0ZSBmb3IgbW9yZSB0aG9yb3VnaCB0ZXN0aW5nDQotc2V0IGpvYjI9Li5cbGliXHRlc3RccmVncnRlc3QucHkNCi1zZXQgcGF0aDI9Li5cbGliDQorc2V0IGpvYjI9IiVkaXIlLi5cbGliXHRlc3RccmVncnRlc3QucHkiDQorc2V0IHBhdGgyPSIlZGlyJS4uXGxpYiINCiANCiBzZXQgam9iPSVqb2IxJQ0KIHNldCBjbHJwYXRoPSVwYXRoMSUNCkBAIC0yMiwyMCArMjQsMjUgQEAKIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii0yIiAoc2V0IGpvYj0lam9iMiUpICYgKHNldCBjbHJwYXRoPSVwYXRoMiUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSItTSIgKHNldCBwYXJhbGxlbD0pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLXNldCBQR0k9JXBsYXRmJS1wZ2kNCi1zZXQgUEdPPSVwbGF0ZiUtcGdvDQogDQotQGVjaG8gb24NCityZW0gV2UgY2Fubm90IGNyb3NzIGNvbXBpbGUgUEdPIGJ1aWxkcywgYXMgdGhlIG9wdGltaXphdGlvbiBuZWVkcyB0byBiZSBydW4gbmF0aXZlbHkNCitzZXQgdnNfcGxhdGY9eDg2DQorc2V0IFBHTz0lZGlyJXdpbjMyLXBnbw0KKw0KK2lmICIlcGxhdGYlIj09Ing2NCIgKHNldCB2c19wbGF0Zj1hbWQ2NCkgJiAoc2V0IFBHTz0lZGlyJWFtZDY0LXBnbykNCityZW0gU2V0dXAgdGhlIGVudmlyb25tZW50DQorY2FsbCAiJWRpciVlbnYuYmF0IiAldnNfcGxhdGYlDQorDQorDQogcmVtIGJ1aWxkIHRoZSBpbnN0cnVtZW50ZWQgdmVyc2lvbg0KLWNhbGwgYnVpbGQgLXAgJXBsYXRmJSAtYyBQR0luc3RydW1lbnQNCittc2J1aWxkICIlZGlyJXBjYnVpbGQucHJvaiIgJXBhcmFsbGVsJSAvdDpCdWlsZCAvcDpDb25maWd1cmF0aW9uPVBHSW5zdHJ1bWVudCAvcDpQbGF0Zm9ybT0lcGxhdGYlICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQogDQogcmVtIHJlbW92ZSAucHljIGZpbGVzLCAucGdjIGZpbGVzIGFuZCBleGVjdXRlIHRoZSBqb2INCi0lUEdJJVxweXRob24uZXhlIHJtcHljLnB5ICVjbHJwYXRoJQ0KLWRlbCAlUEdJJVwqLnBnYw0KLSVQR0klXHB5dGhvbi5leGUgJWpvYiUNCisiJVBHTyVccHl0aG9uLmV4ZSIgIiVkaXIlcm1weWMucHkiICVjbHJwYXRoJQ0KK2RlbCAiJVBHTyVcKi5wZ2MiDQorIiVQR08lXHB5dGhvbi5leGUiICVqb2IlDQogDQotcmVtIGZpbmFsbHkgYnVpbGQgdGhlIG9wdGltaXplZCB2ZXJzaW9uDQotaWYgZXhpc3QgJVBHTyUgZGVsIC9zIC9xICVQR08lDQotY2FsbCBidWlsZCAtcCAlcGxhdGYlIC1jIFBHVXBkYXRlDQotDQorcmVtIGJ1aWxkIG9wdGltaXplZCB2ZXJzaW9uDQorbXNidWlsZCAiJWRpciVwY2J1aWxkLnByb2oiICVwYXJhbGxlbCUgL3Q6QnVpbGQgL3A6Q29uZmlndXJhdGlvbj1QR1VwZGF0ZSAvcDpQbGF0Zm9ybT0lcGxhdGYlICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9zc2wuYmF0IGIvUENidWlsZC9idWlsZF9zc2wuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc1YjhkLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLUBlY2hvIG9mZg0KLWlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgNCi0gIGlmICUxIEVRVSBEZWJ1ZyAoDQotICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM0X2QuZGxsIGV4aXQgMQ0KLSAgKSBFTFNFICgNCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM0LmRsbCBleGl0IDENCi0gICkNCi0pDQotJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMNCi0NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5weSBiL1BDYnVpbGQvYnVpbGRfc3NsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWVlNzE1Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjY5ICswLDAgQEAKLSMgU2NyaXB0IGZvciBidWlsZGluZyB0aGUgX3NzbCBhbmQgX2hhc2hsaWIgbW9kdWxlcyBmb3IgV2luZG93cy4KLSMgVXNlcyBQZXJsIHRvIHNldHVwIHRoZSBPcGVuU1NMIGVudmlyb25tZW50IGNvcnJlY3RseQotIyBhbmQgYnVpbGQgT3BlblNTTCwgdGhlbiBpbnZva2VzIGEgc2ltcGxlIG5tYWtlIHNlc3Npb24KLSMgZm9yIHRoZSBhY3R1YWwgX3NzbC5weWQgYW5kIF9oYXNobGliLnB5ZCBETExzLgotCi0jIFRIRU9SRVRJQ0FMTFksIHlvdSBjYW46Ci0jICogVW5wYWNrIHRoZSBsYXRlc3QgU1NMIHJlbGVhc2Ugb25lIGxldmVsIGFib3ZlIHlvdXIgbWFpbiBQeXRob24gc291cmNlCi0jICAgZGlyZWN0b3J5LiAgSXQgaXMgbGlrZWx5IHlvdSB3aWxsIGFscmVhZHkgZmluZCB0aGUgemxpYiBsaWJyYXJ5IGFuZAotIyAgIGFueSBvdGhlciBleHRlcm5hbCBwYWNrYWdlcyB0aGVyZS4KLSMgKiBJbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBpcyBzb21ld2hlcmUgb24geW91ciBwYXRoLgotIyAqIFJ1biB0aGlzIHNjcmlwdCBmcm9tIHRoZSBQQ0J1aWxkIGRpcmVjdG9yeS4KLSMKLSMgaXQgc2hvdWxkIGNvbmZpZ3VyZSBhbmQgYnVpbGQgU1NMLCB0aGVuIGJ1aWxkIHRoZSBfc3NsIGFuZCBfaGFzaGxpYgotIyBQeXRob24gZXh0ZW5zaW9ucyB3aXRob3V0IGludGVydmVudGlvbi4KLQotIyBNb2RpZmllZCBieSBDaHJpc3RpYW4gSGVpbWVzCi0jIE5vdyB0aGlzIHNjcmlwdCBzdXBwb3J0cyBwcmUtZ2VuZXJhdGVkIG1ha2VmaWxlcyBhbmQgYXNzZW1ibHkgZmlsZXMuCi0jIERldmVsb3BlcnMgZG9uJ3QgbmVlZCBhbiBpbnN0YWxsYXRpb24gb2YgUGVybCBhbnltb3JlIHRvIGJ1aWxkIFB5dGhvbi4gQSBzdm4KLSMgY2hlY2tvdXQgZnJvbSBvdXIgc3ZuIHJlcG9zaXRvcnkgaXMgZW5vdWdoLgotIwotIyBJbiBPcmRlciB0byBjcmVhdGUgdGhlIGZpbGVzIGluIHRoZSBjYXNlIG9mIGFuIHVwZGF0ZSB5b3Ugc3RpbGwgbmVlZCBQZXJsLgotIyBSdW4gYnVpbGRfc3NsIGluIHRoaXMgb3JkZXI6Ci0jIHB5dGhvbi5leGUgYnVpbGRfc3NsLnB5IFJlbGVhc2UgeDY0Ci0jIHB5dGhvbi5leGUgYnVpbGRfc3NsLnB5IFJlbGVhc2UgV2luMzIKLQotaW1wb3J0IG9zLCBzeXMsIHJlLCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi0KLSMgRmluZCBhbGwgImZvby5leGUiIGZpbGVzIG9uIHRoZSBQQVRILgotZGVmIGZpbmRfYWxsX29uX3BhdGgoZmlsZW5hbWUsIGV4dHJhcyA9IE5vbmUpOgotICAgIGVudHJpZXMgPSBvcy5lbnZpcm9uWyJQQVRIIl0uc3BsaXQob3MucGF0aHNlcCkKLSAgICByZXQgPSBbXQotICAgIGZvciBwIGluIGVudHJpZXM6Ci0gICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKLSAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCi0gICAgaWYgZXh0cmFzOgotICAgICAgICBmb3IgcCBpbiBleHRyYXM6Ci0gICAgICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgotICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm5hbWUpCi0gICAgcmV0dXJuIHJldAotCi0jIEZpbmQgYSBzdWl0YWJsZSBQZXJsIGluc3RhbGxhdGlvbiBmb3IgT3BlblNTTC4KLSMgY3lnd2luIHBlcmwgZG9lcyAqbm90KiB3b3JrLiAgQWN0aXZlUGVybCBkb2VzLgotIyBCZWluZyBhIFBlcmwgZHVtbXksIHRoZSBzaW1wbGVzdCB3YXkgSSBjYW4gY2hlY2sgaXMgaWYgdGhlICJXaW4zMiIgcGFja2FnZQotIyBpcyBhdmFpbGFibGUuCi1kZWYgZmluZF93b3JraW5nX3BlcmwocGVybHMpOgotICAgIGZvciBwZXJsIGluIHBlcmxzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbcGVybCwgIi1lIiwgInVzZSBXaW4zMjsiXSkKLSAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBwZXJsCi0KLSAgICBpZiBwZXJsczoKLSAgICAgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZDoiKQotICAgICAgICBmb3IgcCBpbiBwZXJsczoKLSAgICAgICAgICAgIHByaW50KCIgIiwgcCkKLSAgICAgICAgcHJpbnQoIiBOb25lIG9mIHRoZXNlIHZlcnNpb25zIGFwcGVhciBzdWl0YWJsZSBmb3IgYnVpbGRpbmcgT3BlblNTTCIpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIk5PIHBlcmwgaW50ZXJwcmV0ZXJzIHdlcmUgZm91bmQgb24gdGhpcyBtYWNoaW5lIGF0IGFsbCEiKQotICAgIHByaW50KCIgUGxlYXNlIGluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGFwcGVhcnMgb24geW91ciBwYXRoIikKLQotIyBGZXRjaCBTU0wgZGlyZWN0b3J5IGZyb20gVkMgcHJvcGVydGllcwotZGVmIGdldF9zc2xfZGlyKCk6Ci0gICAgcHJvcGZpbGUgPSAob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdweXByb2plY3QucHJvcHMnKSkKLSAgICB3aXRoIG9wZW4ocHJvcGZpbGUsIGVuY29kaW5nPSd1dGYtOC1zaWcnKSBhcyBmOgotICAgICAgICBtID0gcmUuc2VhcmNoKCdvcGVuc3NsLShbXjxdKyk8JywgZi5yZWFkKCkpCi0gICAgICAgIHJldHVybiAiLi5cZXh0ZXJuYWxzXG9wZW5zc2wtIittLmdyb3VwKDEpCi0KLQotZGVmIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpOgotICAgICIiIkNyZWF0ZSBhbmQgZml4IG1ha2VmaWxlIGZvciA2NGJpdAotCi0gICAgUmVwbGFjZSAzMiB3aXRoIDY0Yml0IGRpcmVjdG9yaWVzCi0gICAgIiIiCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG0zMik6Ci0gICAgICAgIHJldHVybgotICAgIHdpdGggb3BlbihtMzIpIGFzIGZpbjoKLSAgICAgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPXRtcDMyIiwgIj10bXA2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPW91dDMyIiwgIj1vdXQ2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiPWluYzMyIiwgIj1pbmM2NCIpCi0gICAgICAgICAgICAgICAgIyBmb3JjZSA2NCBiaXQgbWFjaGluZQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIk1LTElCPWxpYiIsICJNS0xJQj1saWIgL01BQ0hJTkU6WDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJMRkxBR1M9IiwgIkxGTEFHUz0vTUFDSElORTpYNjQgIikKLSAgICAgICAgICAgICAgICAjIGRvbid0IGxpbmsgYWdhaW5zdCB0aGUgbGliIG9uIDY0Yml0IHN5c3RlbXMKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJidWZmZXJvdmVyZmxvd3UubGliIiwgIiIpCi0gICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQotICAgIG9zLnVubGluayhtMzIpCi0KLWRlZiBmaXhfbWFrZWZpbGUobWFrZWZpbGUpOgotICAgICIiIkZpeCBzb21lIHN0dWZmIGluIGFsbCBtYWtlZmlsZXMKLSAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpOgotICAgICAgICByZXR1cm4KLSAgICB3aXRoIG9wZW4obWFrZWZpbGUpIGFzIGZpbjoKLSAgICAgICAgbGluZXMgPSBmaW4ucmVhZGxpbmVzKCkKLSAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBFUkw9Iik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ1A9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICJDUD1jb3B5XG4iCi0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk1LRElSPSIpOgotICAgICAgICAgICAgICAgIGxpbmUgPSAiTUtESVI9bWtkaXJcbiIKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ0ZMQUc9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgICAgIGZvciBhbGdvIGluICgiUkM1IiwgIk1EQzIiLCAiSURFQSIpOgotICAgICAgICAgICAgICAgICAgICBub2FsZ28gPSAiIC1ET1BFTlNTTF9OT18lcyIgJSBhbGdvCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vYWxnbyBub3QgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgbm9hbGdvCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyAnXG4nCi0gICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCi0KLWRlZiBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KToKLSAgICBwcmludCgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQotICAgIG9zLnN5c3RlbSgicGVybCBDb25maWd1cmUgIitjb25maWd1cmUrIiBuby1pZGVhIG5vLW1kYzIiKQotICAgIHByaW50KGRvX3NjcmlwdCkKLSAgICBvcy5zeXN0ZW0oZG9fc2NyaXB0KQotCi1kZWYgY21wKGYxLCBmMik6Ci0gICAgYnVmc2l6ZSA9IDEwMjQgKiA4Ci0gICAgd2l0aCBvcGVuKGYxLCAncmInKSBhcyBmcDEsIG9wZW4oZjIsICdyYicpIGFzIGZwMjoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGIxID0gZnAxLnJlYWQoYnVmc2l6ZSkKLSAgICAgICAgICAgIGIyID0gZnAyLnJlYWQoYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIGIxICE9IGIyOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IGIxOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLWRlZiBjb3B5KHNyYywgZHN0KToKLSAgICBpZiBvcy5wYXRoLmlzZmlsZShkc3QpIGFuZCBjbXAoc3JjLCBkc3QpOgotICAgICAgICByZXR1cm4KLSAgICBzaHV0aWwuY29weShzcmMsIGRzdCkKLQotZGVmIG1haW4oKToKLSAgICBidWlsZF9hbGwgPSAiLWEiIGluIHN5cy5hcmd2Ci0gICAgaWYgc3lzLmFyZ3ZbMV0gPT0gIlJlbGVhc2UiOgotICAgICAgICBkZWJ1ZyA9IEZhbHNlCi0gICAgZWxpZiBzeXMuYXJndlsxXSA9PSAiRGVidWciOgotICAgICAgICBkZWJ1ZyA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihzeXMuYXJndikpCi0KLSAgICBpZiBzeXMuYXJndlsyXSA9PSAiV2luMzIiOgotICAgICAgICBhcmNoID0gIng4NiIKLSAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjMyIgotICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX25hc20iCi0gICAgICAgIG1ha2VmaWxlPSJtc1xcbnQubWFrIgotICAgICAgICBtMzIgPSBtYWtlZmlsZQotICAgICAgICBkaXJzdWZmaXggPSAiMzIiCi0gICAgZWxpZiBzeXMuYXJndlsyXSA9PSAieDY0IjoKLSAgICAgICAgYXJjaD0iYW1kNjQiCi0gICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU42NEEiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fd2luNjRhIgotICAgICAgICBtYWtlZmlsZSA9ICJtc1xcbnQ2NC5tYWsiCi0gICAgICAgIG0zMiA9IG1ha2VmaWxlLnJlcGxhY2UoJzY0JywgJycpCi0gICAgICAgIGRpcnN1ZmZpeCA9ICI2NCIKLSAgICAgICAgI29zLmVudmlyb25bIlZTRVhUQ09NUF9VU0VDTCJdID0gIk1TX09QVEVST04iCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoc3lzLmFyZ3YpKQotCi0gICAgbWFrZV9mbGFncyA9ICIiCi0gICAgaWYgYnVpbGRfYWxsOgotICAgICAgICBtYWtlX2ZsYWdzID0gIi1hIgotICAgICMgcGVybCBzaG91bGQgYmUgb24gdGhlIHBhdGgsIGJ1dCB3ZSBhbHNvIGxvb2sgaW4gIlxwZXJsIiBhbmQgImM6XFxwZXJsIgotICAgICMgYXMgIndlbGwga25vd24iIGxvY2F0aW9ucwotICAgIHBlcmxzID0gZmluZF9hbGxfb25fcGF0aCgicGVybC5leGUiLCBbciJccGVybFxiaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsXGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlxwZXJsNjRcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiQzpccGVybDY0XGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgcGVybCA9IGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKQotICAgIGlmIHBlcmw6Ci0gICAgICAgIHByaW50KCJGb3VuZCBhIHdvcmtpbmcgcGVybCBhdCAnJXMnIiAlIChwZXJsLCkpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIk5vIFBlcmwgaW5zdGFsbGF0aW9uIHdhcyBmb3VuZC4gRXhpc3RpbmcgTWFrZWZpbGVzIGFyZSB1c2VkLiIpCi0gICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgIyBMb29rIGZvciBTU0wgMiBsZXZlbHMgdXAgZnJvbSBwY2J1aWxkIC0gaWUsIHNhbWUgcGxhY2UgemxpYiBldGMgYWxsIGxpdmUuCi0gICAgc3NsX2RpciA9IGdldF9zc2xfZGlyKCkKLSAgICBpZiBzc2xfZGlyIGlzIE5vbmU6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAjIGFkZCBvdXIgY29weSBvZiBOQVNNIHRvIFBBVEguICBJdCB3aWxsIGJlIG9uIHRoZSBzYW1lIGxldmVsIGFzIG9wZW5zc2wKLSAgICBmb3IgZGlyIGluIG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNzbF9kaXIsIG9zLnBhcmRpcikpOgotICAgICAgICBpZiBkaXIuc3RhcnRzd2l0aCgnbmFzbScpOgotICAgICAgICAgICAgbmFzbV9kaXIgPSBvcy5wYXRoLmpvaW4oc3NsX2Rpciwgb3MucGFyZGlyLCBkaXIpCi0gICAgICAgICAgICBuYXNtX2RpciA9IG9zLnBhdGguYWJzcGF0aChuYXNtX2RpcikKLSAgICAgICAgICAgIG9sZF9wYXRoID0gb3MuZW52aXJvblsnUEFUSCddCi0gICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvcy5wYXRoc2VwLmpvaW4oW25hc21fZGlyLCBvbGRfcGF0aF0pCi0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCdOQVNNIHdhcyBub3QgZm91bmQsIG1ha2Ugc3VyZSBpdCBpcyBvbiBQQVRIJykKLQotCi0gICAgb2xkX2NkID0gb3MuZ2V0Y3dkKCkKLSAgICB0cnk6Ci0gICAgICAgIG9zLmNoZGlyKHNzbF9kaXIpCi0gICAgICAgICMgcmVidWlsZCBtYWtlZmlsZSB3aGVuIHdlIGRvIHRoZSByb2xlIG92ZXIgZnJvbSAzMiB0byA2NCBidWlsZAotICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCIgYW5kIG9zLnBhdGguaXNmaWxlKG0zMikgYW5kIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6Ci0gICAgICAgICAgICBvcy51bmxpbmsobTMyKQotCi0gICAgICAgICMgSWYgdGhlIHNzbCBtYWtlZmlsZXMgZG8gbm90IGV4aXN0LCB3ZSBpbnZva2UgUGVybCB0byBnZW5lcmF0ZSB0aGVtLgotICAgICAgICAjIER1ZSB0byBhIGJ1ZyBpbiB0aGlzIHNjcmlwdCwgdGhlIG1ha2VmaWxlIHNvbWV0aW1lcyBlbmRlZCB1cCBlbXB0eQotICAgICAgICAjIEZvcmNlIGEgcmVnZW5lcmF0aW9uIGlmIGl0IGlzLgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpIG9yIG9zLnBhdGguZ2V0c2l6ZShtYWtlZmlsZSk9PTA6Ci0gICAgICAgICAgICBpZiBwZXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlBlcmwgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIG1ha2VmaWxlcyEiKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgICAgIHByaW50KCJDcmVhdGluZyB0aGUgbWFrZWZpbGVzLi4uIikKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgIyBQdXQgb3VyIHdvcmtpbmcgUGVybCBhdCB0aGUgZnJvbnQgb2Ygb3VyIHBhdGgKLSAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXSA9IG9zLnBhdGguZGlybmFtZShwZXJsKSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGhzZXAgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0KLSAgICAgICAgICAgIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpCi0gICAgICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgICAgICBwcmludCgiT3BlblNTTCBkZWJ1ZyBidWlsZHMgYXJlbid0IHN1cHBvcnRlZC4iKQotICAgICAgICAgICAgI2lmIGFyY2g9PSJ4ODYiIGFuZCBkZWJ1ZzoKLSAgICAgICAgICAgICMgICAgIyB0aGUgZG9fbWFzbSBzY3JpcHQgaW4gb3BlbnNzbCBkb2Vzbid0IGdlbmVyYXRlIGEgZGVidWcKLSAgICAgICAgICAgICMgICAgIyBidWlsZCBtYWtlZmlsZSBzbyB3ZSBnZW5lcmF0ZSBpdCBoZXJlOgotICAgICAgICAgICAgIyAgICBvcy5zeXN0ZW0oInBlcmwgdXRpbFxtazFtZi5wbCBkZWJ1ZyAiK2NvbmZpZ3VyZSsiID4iK21ha2VmaWxlKQotCi0gICAgICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCI6Ci0gICAgICAgICAgICAgICAgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMikKLSAgICAgICAgICAgIGZpeF9tYWtlZmlsZShtYWtlZmlsZSkKLSAgICAgICAgICAgIGNvcHkociJjcnlwdG9cYnVpbGRpbmYuaCIsIHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCkKLSAgICAgICAgICAgIGNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmYuaCIsIHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCkKLQotICAgICAgICAjIElmIHRoZSBhc3NlbWJsZXIgZmlsZXMgZG9uJ3QgZXhpc3QgaW4gdG1wWFgsIGNvcHkgdGhlbSB0aGVyZQotICAgICAgICBpZiBwZXJsIGlzIE5vbmUgYW5kIG9zLnBhdGguZXhpc3RzKCJhc20iK2RpcnN1ZmZpeCk6Ci0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoInRtcCIrZGlyc3VmZml4KToKLSAgICAgICAgICAgICAgICBvcy5ta2RpcigidG1wIitkaXJzdWZmaXgpCi0gICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKCJhc20iK2RpcnN1ZmZpeCk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGYuZW5kc3dpdGgoIi5hc20iKTogY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShyInRtcCVzXCVzIiAlIChkaXJzdWZmaXgsIGYpKTogY29udGludWUKLSAgICAgICAgICAgICAgICBzaHV0aWwuY29weShyImFzbSVzXCVzIiAlIChkaXJzdWZmaXgsIGYpLCAidG1wIitkaXJzdWZmaXgpCi0KLSAgICAgICAgIyBOb3cgcnVuIG1ha2UuCi0gICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgIHJjID0gb3Muc3lzdGVtKCJuYXNtIC1mIHdpbjY0IC1ETkVBUiAtT3ggLWcgbXNcXHVwdGFibGUuYXNtIikKLSAgICAgICAgICAgIGlmIHJjOgotICAgICAgICAgICAgICAgIHByaW50KCJuYXNtIGFzc2VtYmxlciBoYXMgZmFpbGVkLiIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQocmMpCi0KLSAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZl8lcy5oIiAlIGFyY2gsIHIiY3J5cHRvXGJ1aWxkaW5mLmgiKQotICAgICAgICBjb3B5KHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cb3BlbnNzbGNvbmYuaCIpCi0KLSAgICAgICAgI21ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gUEVSTD1cIiVzXCIgLWYgXCIlc1wiIiAlKHBlcmwsIG1ha2VmaWxlKQotICAgICAgICBtYWtlQ29tbWFuZCA9ICJubWFrZSAvbm9sb2dvIC1mIFwiJXNcIiIgJSBtYWtlZmlsZQotICAgICAgICBwcmludCgiRXhlY3V0aW5nIHNzbCBtYWtlZmlsZXM6IiwgbWFrZUNvbW1hbmQpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByYyA9IG9zLnN5c3RlbShtYWtlQ29tbWFuZCkKLSAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICBwcmludCgiRXhlY3V0aW5nICIrbWFrZWZpbGUrIiBmYWlsZWQiKQotICAgICAgICAgICAgcHJpbnQocmMpCi0gICAgICAgICAgICBzeXMuZXhpdChyYykKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy5jaGRpcihvbGRfY2QpCi0gICAgc3lzLmV4aXQocmMpCi0KLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5IGIvUENidWlsZC9idWlsZF90a2ludGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODA3ZTdiLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLSIiIlNjcmlwdCB0byBjb21waWxlIHRoZSBkZXBlbmRlbmNpZXMgb2YgX3RraW50ZXIKLQotQ29weXJpZ2h0IChjKSAyMDA3IGJ5IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBjaGVpbWVzLmRlPgotCi1MaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCi0iIiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWhlcmUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLXBhciA9IG9zLnBhdGgucGFyZGlyCi0KLVRDTCA9ICJ0Y2w4LjYuMSIKLVRLID0gInRrOC42LjEiCi1USVggPSAidGl4LTguNC4zLjMiCi0KLVJPT1QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIHBhciwgcGFyKSkKLU5NQUtFID0gKCdubWFrZSAvbm9sb2dvIC9mICVzICVzICVzJykKLQotZGVmIG5tYWtlKG1ha2VmaWxlLCBjb21tYW5kPSIiLCAqKmt3KToKLSAgICBkZWZpbmVzID0gJyAnLmpvaW4oaysnPScrc3RyKHYpIGZvciBrLCB2IGluIGt3Lml0ZW1zKCkpCi0gICAgY21kID0gTk1BS0UgJSAobWFrZWZpbGUsIGRlZmluZXMsIGNvbW1hbmQpCi0gICAgcHJpbnQoIlxuXG4iK2NtZCsiXG4iKQotICAgIGlmIG9zLnN5c3RlbShjbWQpICE9IDA6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcihjbWQpCi0KLWRlZiBidWlsZChwbGF0Zm9ybSwgY2xlYW4pOgotICAgIGlmIHBsYXRmb3JtID09ICJXaW4zMiI6Ci0gICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oUk9PVCwgInRjbHRrIikKLSAgICAgICAgbWFjaGluZSA9ICJJWDg2IgotICAgIGVsaWYgcGxhdGZvcm0gPT0gIkFNRDY0IjoKLSAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGs2NCIpCi0gICAgICAgIG1hY2hpbmUgPSAiQU1ENjQiCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihwbGF0Zm9ybSkKLQotICAgICMgVENMCi0gICAgdGNsZGlyID0gb3MucGF0aC5qb2luKFJPT1QsIFRDTCkKLSAgICBpZiAxOgotICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4odGNsZGlyLCAid2luIikpCi0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgImNsZWFuIikKLSAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgTUFDSElORT1tYWNoaW5lKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiaW5zdGFsbCIsIElOU1RBTExESVI9ZGVzdCwgTUFDSElORT1tYWNoaW5lKQotCi0gICAgIyBUSwotICAgIGlmIDE6Ci0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihST09ULCBUSywgIndpbiIpKQotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsICJjbGVhbiIsIERFQlVHPTAsIFRDTERJUj10Y2xkaXIpCi0gICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsIERFQlVHPTAsIE1BQ0hJTkU9bWFjaGluZSwgVENMRElSPXRjbGRpcikKLSAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgImluc3RhbGwiLCBERUJVRz0wLCBJTlNUQUxMRElSPWRlc3QsIE1BQ0hJTkU9bWFjaGluZSwgVENMRElSPXRjbGRpcikKLQotICAgICMgVElYCi0gICAgaWYgMToKLSAgICAgICAgIyBweXRob245Lm1hayBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3N2bi5weXRob24ub3JnCi0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbihST09ULCBUSVgsICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgicHl0aG9uLm1hayIsICJjbGVhbiIpCi0gICAgICAgIG5tYWtlKCJweXRob24ubWFrIiwgTUFDSElORT1tYWNoaW5lLCBJTlNUQUxMX0RJUj1kZXN0KQotICAgICAgICBubWFrZSgicHl0aG9uLm1hayIsICJpbnN0YWxsIiwgTUFDSElORT1tYWNoaW5lLCBJTlNUQUxMX0RJUj1kZXN0KQotCi1kZWYgbWFpbigpOgotICAgIGlmIGxlbihzeXMuYXJndikgPCAyIG9yIHN5cy5hcmd2WzFdIG5vdCBpbiAoIldpbjMyIiwgIkFNRDY0Iik6Ci0gICAgICAgIHByaW50KCIlcyBXaW4zMnxBTUQ2NCIgJSBzeXMuYXJndlswXSkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmICItYyIgaW4gc3lzLmFyZ3Y6Ci0gICAgICAgIGNsZWFuID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIGNsZWFuID0gRmFsc2UKLQotICAgIGJ1aWxkKHN5cy5hcmd2WzFdLCBjbGVhbikKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9jbGVhbi5iYXQgYi9QQ2J1aWxkL2NsZWFuLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODUxN2QyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9jbGVhbi5iYXQKQEAgLTAsMCArMSw1IEBACitAZWNobyBvZmYNCityZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGNsZWFuIGEgcGFydGljdWxhciBjb25maWd1cmF0aW9uLA0KK3JlbSBqdXN0IGZvciBjb252ZW5pZW5jZS4NCisNCitjYWxsICV+ZHAwYnVpbGQuYmF0IC10IENsZWFuICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9kZWJ1Zy5wcm9wcyBiL1BDYnVpbGQvZGVidWcucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliN2E2NWEuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9kZWJ1Zy5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgotICAgIDxQeURlYnVnRXh0Pl9kPC9QeURlYnVnRXh0PgotICAgIDxLaWxsUHl0aG9uRXhlPiQoT3V0RGlyKWtpbGxfcHl0aG9uX2QuZXhlPC9LaWxsUHl0aG9uRXhlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8VGFyZ2V0TmFtZT4kKFByb2plY3ROYW1lKV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURlYnVnRXh0Ij4KLSAgICAgIDxWYWx1ZT4kKFB5RGVidWdFeHQpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iS2lsbFB5dGhvbkV4ZSI+Ci0gICAgICA8VmFsdWU+JChLaWxsUHl0aG9uRXhlKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2Vudi5iYXQgYi9QQ2J1aWxkL2Vudi5iYXQKaW5kZXggMDE3MGJjZS4uMmIyYzAwNSAxMDA2NDQKLS0tIGEvUENidWlsZC9lbnYuYmF0CisrKyBiL1BDYnVpbGQvZW52LmJhdApAQCAtMSw0ICsxLDE2IEBACiBAZWNobyBvZmYNCi1lY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBpYTY0LCBhbWQ2NCwgeDg2X2FtZDY0LCB4ODZfaWE2NA0KK3JlbSBUaGlzIHNjcmlwdCBhZGRzIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHRvb2xzIHRvIHRoZSBwYXRoIGZvciB0aGUgY3VycmVudA0KK3JlbSBjb21tYW5kIHdpbmRvdy4gSG93ZXZlciwgbW9zdCBidWlsZHMgb2YgUHl0aG9uIHdpbGwgaWdub3JlIHRoZSB2ZXJzaW9uDQorcmVtIG9mIHRoZSB0b29scyBvbiBQQVRIIGFuZCB1c2UgUGxhdGZvcm1Ub29sc2V0IGluc3RlYWQuIElkZWFsbHksIGJvdGggc2V0cyBvZg0KK3JlbSB0b29scyBzaG91bGQgYmUgdGhlIHNhbWUgdmVyc2lvbiB0byBhdm9pZCBwb3RlbnRpYWwgY29uZmxpY3RzLg0KK3JlbQ0KK3JlbSBUbyBidWlsZCBQeXRob24gd2l0aCBhbiBlYXJsaWVyIHRvb2xzZXQsIHBhc3MgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwIiAob3INCityZW0gJ3YxMTAnLCAndjEyMCcgb3IgJ3YxNDAnKSB0byB0aGUgYnVpbGQgc2NyaXB0Lg0KKw0KK2VjaG8gQnVpbGQgZW52aXJvbm1lbnRzOiB4ODYsIGFtZDY0LCB4ODZfYW1kNjQNCiBlY2hvLg0KLWNhbGwgIiVWUzEwMENPTU5UT09MUyUuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiAlKg0KK3NldCBWU1RPT0xTPSVWUzE0MENPTU5UT09MUyUNCitpZiAiJVZTVE9PTFMlIj09IiIgc2V0IFZTVE9PTFM9JVZTMTIwQ09NTlRPT0xTJQ0KK2lmICIlVlNUT09MUyUiPT0iIiBzZXQgVlNUT09MUz0lVlMxMTBDT01OVE9PTFMlDQoraWYgIiVWU1RPT0xTJSI9PSIiIHNldCBWU1RPT0xTPSVWUzEwMENPTU5UT09MUyUNCitjYWxsICIlVlNUT09MUyUuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiAlKg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CmluZGV4IDBiOGYwYjguLjBiM2MwOGIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKKysrIGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdApAQCAtNTEsMTYgKzUxLDE3IEBACiANCiBlY2hvLkZldGNoaW5nIGV4dGVybmFsIGxpYnJhcmllcy4uLg0KIA0KLWZvciAlJWUgaW4gKA0KLSAgICAgICAgICAgIGJ6aXAyLTEuMC42DQotICAgICAgICAgICAgbmFzbS0yLjExLjA2DQotICAgICAgICAgICAgb3BlbnNzbC0xLjAuMmQNCi0gICAgICAgICAgICB0Y2wtOC42LjEuMA0KLSAgICAgICAgICAgIHRrLTguNi4xLjANCi0gICAgICAgICAgICB0aXgtOC40LjMuNA0KLSAgICAgICAgICAgIHNxbGl0ZS0zLjguMTEuMA0KLSAgICAgICAgICAgIHh6LTUuMC41DQotICAgICAgICAgICAgKSBkbyAoDQorc2V0IGxpYnJhcmllcz0NCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDItMS4wLjYNCitpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgbmFzbS0yLjExLjA2DQoraWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG9wZW5zc2wtMS4wLjJkDQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZS0zLjguMTEuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0Y2wtY29yZS04LjYuNC4yDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRrLTguNi40LjINCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGl4LTguNC4zLjYNCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHotNS4wLjUNCisNCitmb3IgJSVlIGluICglbGlicmFyaWVzJSkgZG8gKA0KICAgICBpZiBleGlzdCAlJWUgKA0KICAgICAgICAgZWNoby4lJWUgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nLg0KICAgICApIGVsc2UgKA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvaWRsZS5iYXQgYi9QQ2J1aWxkL2lkbGUuYmF0CmluZGV4IDVhYjE1ZjUuLmJhY2FhYTggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvaWRsZS5iYXQKKysrIGIvUENidWlsZC9pZGxlLmJhdApAQCAtNCwxMCArNCwxMCBAQAogcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLg0KIA0KIHNldGxvY2FsDQotc2V0IGV4ZT1weXRob24NCi1QQVRIICVQQVRIJTsuLlwuLlx0Y2x0a1xiaW4NCitzZXQgZXhlPXdpbjMyXHB5dGhvbg0KK1BBVEggJVBBVEglOy4uXGV4dGVybmFsc1x0Y2x0a1xiaW4NCiANCi1pZiAiJTEiPT0iLWQiIChzZXQgZXhlPXB5dGhvbl9kKSAmIHNoaWZ0DQoraWYgIiUxIj09Ii1kIiAoc2V0IGV4ZT0lZXhlJV9kKSAmIHNoaWZ0DQogDQogc2V0IGNtZD0lZXhlJSAuLi9MaWIvaWRsZWxpYi9pZGxlLnB5ICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQogDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9pbnN0YWxsZXIuYm1wIGIvUENidWlsZC9pbnN0YWxsZXIuYm1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODc1ZTE5Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvaW5zdGFsbGVyLmJtcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24uYyBiL1BDYnVpbGQva2lsbF9weXRob24uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA0NzMxZi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotLyoKLSAqIEhlbHBlciBwcm9ncmFtIGZvciBraWxsaW5nIGxpbmdlcmluZyBweXRob25bX2RdLmV4ZSBwcm9jZXNzZXMgYmVmb3JlCi0gKiBidWlsZGluZywgdGh1cyBhdHRlbXB0aW5nIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byBmaWxlcyBiZWluZwotICogbG9ja2VkLgotICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d2NoYXIuaD4KLSNpbmNsdWRlIDx0bGhlbHAzMi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNwcmFnbWEgY29tbWVudChsaWIsICJwc2FwaSIpCi0KLSNpZmRlZiBfREVCVUcKLSNkZWZpbmUgUFlUSE9OX0VYRSAgICAgICAgICAoTCJweXRob25fZC5leGUiKQotI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbl9kLmV4ZSIpCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRV9MRU4gKDE3KQotI2Vsc2UKLSNkZWZpbmUgUFlUSE9OX0VYRSAgICAgICAgICAoTCJweXRob24uZXhlIikKLSNkZWZpbmUgUFlUSE9OX0VYRV9MRU4gICAgICAoMTApCi0jZGVmaW5lIEtJTExfUFlUSE9OX0VYRSAgICAgKEwia2lsbF9weXRob24uZXhlIikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTUpCi0jZW5kaWYKLQotaW50Ci1tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgICBIQU5ETEUgICBocCwgaHNwLCBoc207IC8qIHByb2Nlc3MsIHNuYXBzaG90IHByb2Nlc3Nlcywgc25hcHNob3QgbW9kdWxlcyAqLwotICAgIERXT1JEICAgIGRhYywgb3VyX3BpZDsKLSAgICBzaXplX3QgICBsZW47Ci0gICAgd2NoYXJfdCAgcGF0aFtNQVhfUEFUSCsxXTsKLQotICAgIE1PRFVMRUVOVFJZMzJXICBtZTsKLSAgICBQUk9DRVNTRU5UUlkzMlcgcGU7Ci0KLSAgICBtZS5kd1NpemUgPSBzaXplb2YoTU9EVUxFRU5UUlkzMlcpOwotICAgIHBlLmR3U2l6ZSA9IHNpemVvZihQUk9DRVNTRU5UUlkzMlcpOwotCi0gICAgbWVtc2V0KHBhdGgsIDAsIE1BWF9QQVRIKzEpOwotCi0gICAgb3VyX3BpZCA9IEdldEN1cnJlbnRQcm9jZXNzSWQoKTsKLQotICAgIGhzbSA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUE1PRFVMRSwgb3VyX3BpZCk7Ci0gICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBwcmludGYoIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdFsxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7Ci0gICAgICAgIHByaW50ZigiTW9kdWxlMzJGaXJzdFdbMV0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIEVudW1lcmF0ZSBvdmVyIHRoZSBtb2R1bGVzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIGluIG9yZGVyIHRvIGZpbmQKLSAgICAgKiBraWxsX3Byb2Nlc3NbX2RdLmV4ZSwgdGhlbiB0YWtlIGEgbm90ZSBvZiB0aGUgZGlyZWN0b3J5IGl0IGxpdmVzIGluLgotICAgICAqLwotICAgIGRvIHsKLSAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgS0lMTF9QWVRIT05fRVhFLCBLSUxMX1BZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGxlbiA9IHdjc25sZW5fcyhtZS5zekV4ZVBhdGgsIE1BWF9QQVRIKSAtIEtJTExfUFlUSE9OX0VYRV9MRU47Ci0gICAgICAgIHdjc25jcHlfcyhwYXRoLCBNQVhfUEFUSCsxLCBtZS5zekV4ZVBhdGgsIGxlbik7IAotCi0gICAgICAgIGJyZWFrOwotCi0gICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOwotCi0gICAgQ2xvc2VIYW5kbGUoaHNtKTsKLQotICAgIGlmIChwYXRoID09IE5VTEwpIHsKLSAgICAgICAgcHJpbnRmKCJmYWlsZWQgdG8gZGlzY2VybiBkaXJlY3Rvcnkgb2YgcnVubmluZyBwcm9jZXNzXG4iKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBUYWtlIGEgc25hcHNob3Qgb2Ygc3lzdGVtIHByb2Nlc3Nlcy4gIEVudW1lcmF0ZSBvdmVyIHRoZSBzbmFwc2hvdCwKLSAgICAgKiBsb29raW5nIGZvciBweXRob24gcHJvY2Vzc2VzLiAgV2hlbiB3ZSBmaW5kIG9uZSwgdmVyaWZ5IGl0IGxpdmVzCi0gICAgICogaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdlIGxpdmUgaW4uICBJZiBpdCBkb2VzLCBraWxsIGl0LiAgSWYgd2UncmUKLSAgICAgKiB1bmFibGUgdG8ga2lsbCBpdCwgdHJlYXQgdGhpcyBhcyBhIGZhdGFsIGVycm9yIGFuZCByZXR1cm4gMS4KLSAgICAgKiAKLSAgICAgKiBUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGlzIHRoYXQgd2UncmUgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgCi0gICAgICogYnVpbGQgcHJvY2VzcyBvbiB0aGUgYmFzaXMgdGhhdCB3ZSdsbCB0YWtlIGNhcmUgb2Yga2lsbGluZyBhbnkKLSAgICAgKiBydW5uaW5nIGluc3RhbmNlcywgc3VjaCB0aGF0IHRoZSBidWlsZCB3b24ndCBlbmNvdW50ZXIgcGVybWlzc2lvbgotICAgICAqIGRlbmllZCBlcnJvcnMgZHVyaW5nIGxpbmtpbmcuIElmIHdlIGNhbid0IGtpbGwgb25lIG9mIHRoZSBwcm9jZXNzZXMsCi0gICAgICogd2UgY2FuJ3QgcHJvdmlkZSB0aGlzIGFzc3VyYW5jZSwgYW5kIHRoZSBidWlsZCBzaG91bGRuJ3Qgc3RhcnQuCi0gICAgICovCi0KLSAgICBoc3AgPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBQUk9DRVNTLCAwKTsKLSAgICBpZiAoaHNwID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaWYgKCFQcm9jZXNzMzJGaXJzdFcoaHNwLCAmcGUpKSB7Ci0gICAgICAgIHByaW50ZigiUHJvY2VzczMyRmlyc3RXIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgZGFjID0gUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiB8IFBST0NFU1NfVk1fUkVBRCB8IFBST0NFU1NfVEVSTUlOQVRFOwotICAgIGRvIHsKLQotICAgICAgICAvKgotICAgICAgICAgKiBYWFggVE9ETzogaWYgd2UgcmVhbGx5IHdhbnRlZCB0byBiZSBmYW5jeSwgd2UgY291bGQgY2hlY2sgdGhlIAotICAgICAgICAgKiBtb2R1bGVzIGZvciBhbGwgcHJvY2Vzc2VzIChub3QganVzdCB0aGUgcHl0aG9uW19kXS5leGUgb25lcykKLSAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zNFtfZF0uZGxsKSwKLSAgICAgICAgICogYXMgdGhhdCB3b3VsZCBhbHNvIGluaGliaXQgb3VyIGFiaWxpdHkgdG8gcmVidWlsZCB0aGUgc29sdXRpb24uCi0gICAgICAgICAqIE5vdCB3b3J0aCBsb29zaW5nIHNsZWVwIG92ZXIgdGhvdWdoOyBmb3Igbm93LCBhIHNpbXBsZSBjaGVjayAKLSAgICAgICAgICogZm9yIGp1c3QgdGhlIHB5dGhvbiBleGVjdXRhYmxlIHNob3VsZCBiZSBzdWZmaWNpZW50LgotICAgICAgICAgKi8KLQotICAgICAgICBpZiAoX3djc25pY21wKHBlLnN6RXhlRmlsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgLyogVGhpcyBpc24ndCBhIHB5dGhvbiBwcm9jZXNzLiAqLwotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLyogSXQncyBhIHB5dGhvbiBwcm9jZXNzLCBzbyBmaWd1cmUgb3V0IHdoaWNoIGRpcmVjdG9yeSBpdCdzIGluLi4uICovCi0gICAgICAgIGhzbSA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUE1PRFVMRSwgcGUudGgzMlByb2Nlc3NJRCk7Ci0gICAgICAgIGlmIChoc20gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgICAgICAvKiAKLSAgICAgICAgICAgICAqIElmIG91ciBtb2R1bGUgc25hcHNob3QgZmFpbHMgKHdoaWNoIHdpbGwgaGFwcGVuIGlmIHdlIGRvbid0IG93bgotICAgICAgICAgICAgICogdGhlIHByb2Nlc3MpLCBqdXN0IGlnbm9yZSBpdCBhbmQgY29udGludWUuICAoSXQgc2VlbXMgZGlmZmVyZW50Ci0gICAgICAgICAgICAgKiB2ZXJzaW9ucyBvZiBXaW5kb3dzIHJldHVybiBkaWZmZXJlbnQgdmFsdWVzIGZvciBHZXRMYXN0RXJyb3IoKQotICAgICAgICAgICAgICogaW4gdGhpcyBzaXR1YXRpb247IGl0J3MgZWFzaWVyIHRvIGp1c3QgaWdub3JlIGl0IGFuZCBtb3ZlIG9uIHZzLgotICAgICAgICAgICAgICogc3RvcHBpbmcgdGhlIGJ1aWxkIGZvciB3aGF0IGNvdWxkIGJlIGEgZmFsc2UgcG9zaXRpdmUuKQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKLSAgICAgICAgICAgIHByaW50ZigiTW9kdWxlMzJGaXJzdFdbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGlmIChfd2NzbmljbXAobWUuc3pNb2R1bGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKLSAgICAgICAgICAgICAgICAvKiBXcm9uZyBtb2R1bGUsIHdlJ3JlIGxvb2tpbmcgZm9yIHB5dGhvbltfZF0uZXhlLi4uICovCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGlmIChfd2NzbmljbXAocGF0aCwgbWUuc3pFeGVQYXRoLCBsZW4pKQotICAgICAgICAgICAgICAgIC8qIFByb2Nlc3MgZG9lc24ndCBsaXZlIGluIG91ciBkaXJlY3RvcnkuICovCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8qIFB5dGhvbiBwcm9jZXNzIHJlc2lkaW5nIGluIHRoZSByaWdodCBkaXJlY3RvcnksIGtpbGwgaXQhICAqLwotICAgICAgICAgICAgaHAgPSBPcGVuUHJvY2VzcyhkYWMsIEZBTFNFLCBwZS50aDMyUHJvY2Vzc0lEKTsKLSAgICAgICAgICAgIGlmICghaHApIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIk9wZW5Qcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghVGVybWluYXRlUHJvY2VzcyhocCwgMSkpIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIlRlcm1pbmF0ZVByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIH0gd2hpbGUgKE1vZHVsZTMyTmV4dFcoaHNtLCAmbWUpKTsKLQotICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotCi0gICAgfSB3aGlsZSAoUHJvY2VzczMyTmV4dFcoaHNwLCAmcGUpKTsKLQotICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogdmk6IHNldCB0cz04IHN3PTQgc3RzPTQgZXhwYW5kdGFiICovCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ogYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNjdjNDAuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5raWxsX3B5dGhvbjwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyIgLz4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMzZDc1MS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjeHByb2ouZmlsdGVycworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgotICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQ4NjA2NTkxLWM4YjYtNDFhNS05NWM1LTlhMDg5MGM1NTA0Zn08L1VuaXF1ZUlkZW50aWZpZXI+Ci0gICAgPC9GaWx0ZXI+Ci0gIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyI+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2xpYmVheS52Y3hwcm9qIGIvUENidWlsZC9saWJlYXkudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjYyY2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9saWJlYXkudmN4cHJvagpAQCAtMCwwICsxLDkwNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmVheTwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgIAorICA8SW1wb3J0IFByb2plY3Q9Im9wZW5zc2wucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorCisgIDxUYXJnZXQgTmFtZT0iQ3JlYXRlQnVpbGRpbmZIIiBJbnB1dHM9IiQoTVNCdWlsZFByb2plY3RGdWxsUGF0aCkiIE91dHB1dHM9IiQoSW50RGlyKVxidWlsZGluZi5oIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X0RBVEVWYWx1ZT4jZGVmaW5lIERBVEUgIiQoW1N5c3RlbS5EYXRlVGltZV06Ok5vdy5Ub1N0cmluZyhgZGRkIE1NTSBkZCBISCc6J21tJzonc3MgeXl5eWApKSI8L19EQVRFVmFsdWU+CisgICAgICA8X0NGTEFHU1ZhbHVlPiNkZWZpbmUgQ0ZMQUdTICJjbCAvTUQgL094IC1XMyAtR3MwIC1HeSAtbm9sb2dvIEAoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMtPictRCUoSWRlbnRpdHkpJywnICcpIjwvX0NGTEFHU1ZhbHVlPgorICAgICAgPF9QTEFURk9STVZhbHVlIENvbmRpdGlvbj0iJChQbGF0Zm9ybSk9PSdXaW4zMiciPiNkZWZpbmUgUExBVEZPUk0gIlZDLVdJTjMyIjwvX1BMQVRGT1JNVmFsdWU+CisgICAgICA8X1BMQVRGT1JNVmFsdWUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKT09J3g2NCciPiNkZWZpbmUgUExBVEZPUk0gIlZDLVdJTjY0QSI8L19QTEFURk9STVZhbHVlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKEludERpcilcYnVpbGRpbmYuaCIKKyAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0iJChfREFURVZhbHVlKTskKF9DRkxBR1NWYWx1ZSk7JChfUExBVEZPUk1WYWx1ZSkiCisgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICAgIDxNZXNzYWdlIFRleHQ9IlVwZGF0aW5nIGJ1aWxkaW5mLmg6CisgICAgJChfREFURVZhbHVlKQorICAgICQoX0NGTEFHU1ZhbHVlKQorICAgICQoX1BMQVRGT1JNVmFsdWUpIiBJbXBvcnRhbmNlPSJub3JtYWwiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iU3VwcHJlc3NPcmlnaW5hbEJ1aWxkaW5mSCIgQ29uZGl0aW9uPSJFeGlzdHMoJyQob3BlbnNzbERpciljcnlwdG9cYnVpbGRpbmYuaCcpIiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiPgorICAgIDxNb3ZlIFNvdXJjZUZpbGVzPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1aWxkaW5mLmgiIERlc3RpbmF0aW9uRmlsZXM9IiQob3BlbnNzbERpciljcnlwdG9cYnVpbGRpbmYuaC5vcmlnIiAvPgorICA8L1RhcmdldD4KKworICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjdmVyc2lvbi5jIj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoSW50RGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJdGVtR3JvdXA+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWFwcHNcZXJyc3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfY2ZiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfY3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfZWNiLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfaWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFlc1xhZXNfbWlzYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc19vZmIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYWVzXGFlc193cmFwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9iaXRzdHIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2Jvb2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2J5dGVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9kMmlfZnAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX2RpZ2VzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfZHVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9lbnVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9nZW50bS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfaTJkX2ZwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9pbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX21ic3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9vYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhX29jdGV0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9wcmludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfc2V0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV9zdHJleC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfc3RybmlkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV90aW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV90eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYV91dGN0bS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfdXRmOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFfdmVyaWZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYW1ldGhfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuX21pbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc25fbW9pZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFzbl9wYWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuMV9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxhc24xX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGFzbjFfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcYXNuMV9wYXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxiaW9fYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGJpb19uZGVmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZDJpX3ByLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGQyaV9wdS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGV2cF9hc24xLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGZfZW51bS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXGZfaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcZl9zdHJpbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxpMmRfcHIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcaTJkX3B1LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcbl9wa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcbnNzZXEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxwNV9wYmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVxwNV9wYmV2Mi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHA4X3BrZXkuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9iaXRzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRfY3JsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9wa2V5LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRfcmVxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF9zcGtpLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF94NTA5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdF94NTA5YS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fZGVjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0YXNuX2ZyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fbmV3LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFcdGFzbl9wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx0YXNuX3R5cC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHRhc25fdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9hbGdvci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfYXR0cmliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9iaWdudW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2NybC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfZXh0ZW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2luZm8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X2xvbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X25hbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X254NTA5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9wa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9wdWJrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3JlcS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xhc24xXHhfc2lnLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF9zcGtpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjFceF92YWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3g1MDkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYXNuMVx4X3g1MDlhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX2NmYjY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJmXGJmX2VjYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiZlxiZl9vZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiZlxiZl9za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xiX2R1bXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJfcHJpbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJfc29jay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmZfYnVmZi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJmX25iaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJmX251bGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJpb19jYi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmlvX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYmlvX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19hY3B0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfYmlvLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfY29ubi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19kZ3JhbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiaW9cYnNzX2ZkLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3NfZmlsZS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19sb2cuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19tZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYmlvXGJzc19udWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJpb1xic3Nfc29jay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9hZGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fYmxpbmQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2NvbnN0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2N0eC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fZGVwci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9kaXYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2V4cC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9leHAyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2djZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9nZjJtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX2tyb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX21vZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9tb250LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9tcGkuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fbXVsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX25pc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fcHJpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fcHJpbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fcmFuZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9yZWNwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3NoaWZ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3Nxci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiblxibl9zcXJ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3dvcmQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJuXGJuX3g5MzFwLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1ZmZlclxidWZfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1ZmZlclxidWZfc3RyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGJ1ZmZlclxidWZmZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY2FtZWxsaWFcY21sbF9jZmIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfY3RyLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfZWNiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfb2ZiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19jZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYXN0XGNfZWNiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhc3RcY19vZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYXN0XGNfc2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbWFjXGNtX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtYWNcY21fcG1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21hY1xjbWFjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2F0dC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19jZC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2RkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZW52LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfZXJyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2Vzcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2lvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNtc1xjbXNfa2FyaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjbXNcY21zX3B3cmkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19zZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY21zXGNtc19zbWltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb21wXGNfcmxlLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbXBcY196bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbXBcY29tcF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29tcFxjb21wX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb25mXGNvbmZfYXBpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9kZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY29uZlxjb25mX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjb25mXGNvbmZfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9tYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9tb2QuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNvbmZcY29uZl9zYXAuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cY3B0X2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjcnlwdGxpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcY2JjX2Nrc20uYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjYmNfZW5jLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjZmJfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xjZmI2NGVkZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcY2ZiNjRlbmMuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xkZXNfb2xkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xkZXNfb2xkMi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZWNiX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZWNiM19lbmMuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xlZGVfY2JjbV9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXGVuY19yZWFkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xlbmNfd3JpdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcZmNyeXB0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xvZmJfZW5jLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xvZmI2NGVkZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcb2ZiNjRlbmMuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xwY2JjX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNccXVkX2Nrc20uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHJhbmRfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xyZWFkMnB3ZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNccnBjX2VuYy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkZXNcc2V0X2tleS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHN0cjJrZXkuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGVzXHhjYmNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2FzbjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfY2hlY2suYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2RlcHIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9rZGYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkaFxkaF9wbWV0aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZGhcZGhfcHJuLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRoXGRoX3JmYzUxMTQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9hbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2FzbjEuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfZGVwci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2dlbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc2FcZHNhX29zc2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9wbWV0aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9wcm4uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNhXGRzYV9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzYVxkc2FfdnJmLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX2Jlb3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNvXGRzb19kbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX2RsZmNuLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRzb1xkc29fbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX251bGwuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZHNvXGRzb19vcGVuc3NsLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX3Ztcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xkc29cZHNvX3dpbjMyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlYmNkaWMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfYW1ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfYXNuMS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfY2hlY2suYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfY3VydmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfY3Z0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY19rZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX211bHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNfb2N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX3BtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjX3ByaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjMl9tdWx0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjMl9vY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWMyX3NtcGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNrX3Bybi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbW9udC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbmlzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNwX25pc3RwMjI0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9uaXN0cDI1Ni5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3BfbmlzdHA1MjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNcZWNwX25pc3RwdXRpbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY1xlY3Bfb2N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjXGVjcF9zbXBsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZGhcZWNoX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RoXGVjaF9rZGYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkaFxlY2hfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZGhcZWNoX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RoXGVjaF9vc3NsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc19hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVjZHNhXGVjc19lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZWNkc2FcZWNzX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3Nfb3NzbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3Nfc2lnbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlY2RzYVxlY3NfdnJmLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfY25mLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2NyeXB0b2Rldi5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcZW5nX2N0cmwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19keW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19mYXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19pbml0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfbGlzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19vcGVuc3NsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfcGtleS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19yZHJhbmQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXGVuZ19yc2F4LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVxlbmdfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2Fzbm10aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfY2lwaGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9kaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xlbmdpbmVcdGJfZGlnZXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9kc2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2VjZGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX2VjZHNhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVuZ2luZVx0Yl9wa21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3JhbmQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3JzYS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZW5naW5lXHRiX3N0b3JlLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGVyclxlcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXJyXGVycl9hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXJyXGVycl9wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19iNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19tZC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGJpb19vay5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcY19hbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGNfYWxsYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcY19hbGxkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxkaWdlc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfYWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX2Flc19jYmNfaG1hY19zaGExLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX2Flc19jYmNfaG1hY19zaGEyNTYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfYmYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfY2FtZWxsaWEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfY2FzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9kZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfZGVzMy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfaWRlYS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9udWxsLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9vbGQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGVfcmMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3JjNC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9yYzRfaG1hY19tZDUuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3JjNS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZV9zZWVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxlX3hjYmNfZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZW5jb2RlLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2FjbmYuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9jbmYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXGV2cF9lcnIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxldnBfZmlwcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2tleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX3BiZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcZXZwX3BrZXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fZHNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX2RzczEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fZWNkc2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fbWQ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX21kNS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fbnVsbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBcbV9yaXBlbWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fc2hhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX3NoYTEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXG1fc2lndmVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxtX3dwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxuYW1lcy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfZGVjLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwX2xpYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfb3Blbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccF9zZWFsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBfdmVyaWZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwNV9jcnB0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwNV9jcnB0Mi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xldnBccG1ldGhfZm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXZwXHBtZXRoX2duLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGV2cFxwbWV0aF9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZXhfZGF0YS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cZmlwc19lcnMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9caG1hY1xobV9hbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xobWFjXGhtX3BtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGhtYWNcaG1hYy5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ca3JiNVxrcmI1X2Fzbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xsaGFzaFxsaF9zdGF0cy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xsaGFzaFxsaGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtZDRcbWQ0X2Rnc3QuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1kNFxtZDRfb25lLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1kNVxtZDVfZGdzdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWQ1XG1kNV9vbmUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbWVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1lbV9kYmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcY2JjMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXGNjbTEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xjZmIxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcY3RyMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXGN0czEyOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xtb2Rlc1xnY20xMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNcb2ZiMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzXHdyYXAxMjguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cbW9kZXNceHRzMTI4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9fZGlyLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX2ZpcHMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb19pbml0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX3N0ci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvX3RpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2JqZWN0c1xvX25hbWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9iamVjdHNcb2JqX2RhdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvYmplY3RzXG9ial9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2JqZWN0c1xvYmpfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9iamVjdHNcb2JqX3hyZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2Fzbi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2NsLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9lcnIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9leHQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX2h0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXG9jc3Bcb2NzcF9wcm4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cb2NzcFxvY3NwX3Nydi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xvY3NwXG9jc3BfdmZ5LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fYWxsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1faW5mby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX290aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3BrOC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3BrZXkuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1fc2VhbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccGVtX3NpZ24uYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGVtXHBlbV94NTA5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBlbVxwZW1feGF1eC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwZW1ccHZrZm10LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfYWRkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfYXNuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfYXR0ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX2NycHQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfY3J0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfZGVjci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczEyXHAxMl9pbml0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfa2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfa2lzcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX211dGwuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHBrY3MxMlxwMTJfbnBhcy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX3A4ZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX3A4ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccDEyX3V0bC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzMTJccGsxMmVyci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczdcYmlvX3BrNy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfYXR0ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfZG9pdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfbWltZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xwa2NzN1xwazdfc21pbWUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccGtjczdccGtjczdlcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccHF1ZXVlXHBxdWV1ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXG1kX3JhbmQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmFuZFxyYW5kX2VnZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXHJhbmRfZXJyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF9saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF9udy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYW5kXHJhbmRfb3MyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF91bml4LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZF93aW4uYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJhbmRccmFuZGZpbGUuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMl9jYmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMl9lY2IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmMyXHJjMl9za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJjMlxyYzJjZmI2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyYzJccmMyb2ZiNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmM0XHJjNF91dGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccmlwZW1kXHJtZF9kZ3N0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyaXBlbWRccm1kX29uZS5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfYXNuMS5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9jaGsuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9jcnB0LmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX2RlcHIuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9lYXkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9nZW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9ub25lLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX251bGwuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9vYWVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcGsxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcG1ldGguYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcHJuLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2FfcHNzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHJzYVxyc2Ffc2Fvcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xyc2FccnNhX3NpZ24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV9zc2wuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ccnNhXHJzYV94OTMxLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNlZWRcc2VlZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzZWVkXHNlZWRfY2JjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNlZWRcc2VlZF9jZmIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2VlZFxzZWVkX2VjYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzZWVkXHNlZWRfb2ZiLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNoYVxzaGFfZGdzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzaGFcc2hhX29uZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzaGFcc2hhMV9vbmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2hhXHNoYTFkZ3N0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHNoYVxzaGEyNTYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cc2hhXHNoYTUxMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzcnBcc3JwX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzcnBcc3JwX3ZmeS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xzdGFja1xzdGFjay5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfYXNuMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19jb25mLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX2Vyci5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JlcV9wcmludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19yZXFfdXRpbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHNcdHNfcnNwX3ByaW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JzcF9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3JzcF91dGlscy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x0c1x0c19yc3BfdmVyaWZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHRzXHRzX3ZlcmlmeV9jdHguYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdHh0X2RiXHR4dF9kYi5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdWlcdWlfY29tcGF0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHVpXHVpX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aVx1aV9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cdWlcdWlfb3BlbnNzbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aVx1aV91dGlsLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x1aWQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cd2hybHBvb2xcd3BfZGdzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XGJ5X2Rpci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XGJ5X2ZpbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4X2FsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfYXR0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9jbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2QyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9kZWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfZXh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9sdS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfb2JqLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfcjJ4LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9yZXEuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV9zZXQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5X3Rycy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfdHh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV92My5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDlfdmZ5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOV92cG0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5Y3NldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5XHg1MDluYW1lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOXJzZXQuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDlceDUwOXNwa2kuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOVx4NTA5dHlwZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X2NhY2hlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1xwY3lfZGF0YS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X21hcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNccGN5X25vZGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHBjeV90cmVlLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWRkci5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWtleS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfYWtleWEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2FsdC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2FzaWQuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2Jjb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19iaXRzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfY29uZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfY3BvbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2NybGQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2VudW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2V4dGt1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19nZW5uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19pYTUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2luZm8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9ceDUwOXYzXHYzX2ludC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19uY29ucy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfb2NzcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfcGNpLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wY2lhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wY29ucy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfcGt1LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wbWFwcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfcHJuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19wdXJwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19zY3RzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19za2V5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M19zeG5ldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1x4NTA5djNcdjNfdXRsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHg1MDl2M1x2M2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGVfZ29zdF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2FtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9jcnlwdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcY2Nnb3N0XGdvc3RfY3RsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9lbmcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X2tleXdyYXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X21kLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9wYXJhbXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0X3BtZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdF9zaWduLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdDIwMDEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0MjAwMV9rZXl4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdDg5LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xjY2dvc3RcZ29zdDk0X2tleXguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGNjZ29zdFxnb3N0aGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV80NzU4Y2NhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2FlcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9hdGFsbGEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfY2FwaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9jaGlsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpZW5naW5lc1xlX2Nzd2lmdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9nbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfbnVyb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcillbmdpbmVzXGVfcGFkbG9jay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV9zdXJld2FyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWVuZ2luZXNcZV91YnNlYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2V4dC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9zcnZyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXHdocmxwb29sXHdwX2Jsb2NrLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xiZlxiZl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpciljcnlwdG9cYm5cYm5fYXNtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGNhbWVsbGlhXGNtbGxfbWlzYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWNyeXB0b1xjYXN0XGNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xkZXNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpY3J5cHRvXGRlc1xmY3J5cHRfYi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgPEl0ZW1Hcm91cCBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICdXaW4zMiciPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcYWVzLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxhZXNuaS14ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcYmYtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXGJuLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjYXN0LTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjbWxsLXg4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxjby01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcY3J5cHQ1ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcZGVzLTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxnaGFzaC14ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcbWQ1LTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxyYzQtNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHJtZC01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcc2hhMS01ODYuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJcc2hhMjU2LTU4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlxzaGE1MTItNTg2LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDMyXHZwYWVzLXg4Ni5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXAzMlx3cC1tbXguYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJceDg2Y3B1aWQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJceDg2LWdmMm0uYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wMzJceDg2LW1vbnQuYXNtIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cCBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLXNoYTEteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLXNoYTEteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLWdjbS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmktbWIteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlc25pLXNoYTI1Ni14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYWVzbmkteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGFlcy14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcYnNhZXMteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGNtbGwteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XGdoYXNoLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxtZDUteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHJjNC1tZDUteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHJjNC14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhMS14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhMS1tYi14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcc2hhMjU2LW1iLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFxzaGEyNTYteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHNoYTUxMi14ODZfNjQuYXNtIiAvPgorICAgIDxOYXNtQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpdG1wNjRcdnBhZXMteDg2XzY0LmFzbSIgLz4KKyAgICA8TmFzbUNvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXRtcDY0XHdwLXg4Nl82NC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjRjcHVpZC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjQtZ2YybS5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjQtbW9udC5hc20iIC8+CisgICAgPE5hc21Db21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcil0bXA2NFx4ODZfNjQtbW9udDUuYXNtIiAvPgorICA8L0l0ZW1Hcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8RGVsZXRlIEZpbGVzPSIkKFRhcmdldFBhdGgpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWFhZGVlLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYworKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxpby5oPgotCi0jZGVmaW5lIENNRF9TSVpFIDUwMAotCi0vKiBUaGlzIGZpbGUgY3JlYXRlcyB0aGUgZ2V0YnVpbGRpbmZvLm8gb2JqZWN0LCBieSBmaXJzdAotICAgaW52b2tpbmcgc3Vid2NyZXYuZXhlIChpZiBmb3VuZCksIGFuZCB0aGVuIGludm9raW5nIGNsLmV4ZS4KLSAgIEFzIGEgc2lkZSBlZmZlY3QsIGl0IG1pZ2h0IGdlbmVyYXRlIFBDQnVpbGRcZ2V0YnVpbGRpbmZvMi5jCi0gICBhbHNvLiBJZiB0aGlzIGlzbid0IGEgc3VidmVyc2lvbiBjaGVja291dCwgb3Igc3Vid2NyZXYgaXNuJ3QKLSAgIGZvdW5kLCBpdCBjb21waWxlcyAuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgaW5zdGVhZC4KLQotICAgQ3VycmVudGx5LCBzdWJ3Y3Jldi5leGUgaXMgZm91bmQgZnJvbSB0aGUgcmVnaXN0cnkgZW50cmllcwotICAgb2YgVG9ydG9pc2VTVk4uCi0KLSAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBwbGFjZSBnZXRidWlsZGluZm8ubyBpbnRvIHRoZSBwcm9wZXIKLSAgIGJpbmFyeSBkaXJlY3RvcnkuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhcyB0aGlzIHRvb2wgaXMKLSAgIGludm9rZWQgYXMgYSBwcmUtbGluayBzdGVwIGZvciBweXRob25jb3JlLCBzbyB0aGF0IG92ZXJ3cml0ZXMKLSAgIGFueSBwcmV2aW91cyBnZXRidWlsZGluZm8uby4KLQotICAgSG93ZXZlciwgaWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCi0gICBhcyBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2hlcmUgYW55IGdldGJ1aWxkaW5mbzIuYyBhbmQKLSAgIGdldGJ1aWxkaW5mby5vIGZpbGVzIGFyZSBwdXQuICBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZQotICAgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGJ1aWx0IGluIHBhcmFsbGVsLCB0byBhdm9pZCB0aGVtCi0gICB0cmFtcGxpbmcgZWFjaCBvdGhlcidzIGZpbGVzLgotCi0qLwotCi1pbnQgbWFrZV9idWlsZGluZm8yKGNvbnN0IGNoYXIgKnRtcHBhdGgpCi17Ci0gICAgc3RydWN0IF9zdGF0IHN0OwotICAgIEhLRVkgaFRvcnRvaXNlOwotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRSsxXTsKLSAgICBEV09SRCB0eXBlLCBzaXplOwotICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KLSAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCi0gICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLwotICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOwotICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKLSAgICAgICAgdHlwZSAhPSBSRUdfU1opCi0gICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImJpblxcc3Vid2NyZXYuZXhlIik7Ci0gICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCi0gICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIC4uIC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyBcIiIpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsgLyogcXVvdGVkIHRtcHBhdGggKi8KLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIik7Ci0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgaWYgKHN5c3RlbShjb21tYW5kKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCi1jb25zdCBjaGFyIERFTElNU1tdID0geyAiIFxuIiB9OwotCi1pbnQgZ2V0X21lcmN1cmlhbF9pbmZvKGNoYXIgKiBoZ2JyYW5jaCwgY2hhciAqIGhndGFnLCBjaGFyICogaGdyZXYsIGludCBzaXplKQotewotICAgIGludCByZXN1bHQgPSAwOwotICAgIGNoYXIgZmlsZW5hbWVbQ01EX1NJWkVdOwotICAgIGNoYXIgY21kbGluZVtDTURfU0laRV07Ci0KLSAgICBzdHJjcHlfcyhmaWxlbmFtZSwgQ01EX1NJWkUsICJ0bXBYWFhYWFgiKTsKLSAgICBpZiAoX21rdGVtcF9zKGZpbGVuYW1lLCBDTURfU0laRSkgPT0gMCkgewotICAgICAgICBpbnQgcmM7Ci0KLSAgICAgICAgc3RyY3B5X3MoY21kbGluZSwgQ01EX1NJWkUsICJoZyBpZCAtYml0ID4gIik7Ci0gICAgICAgIHN0cmNhdF9zKGNtZGxpbmUsIENNRF9TSVpFLCBmaWxlbmFtZSk7Ci0gICAgICAgIHJjID0gc3lzdGVtKGNtZGxpbmUpOwotICAgICAgICBpZiAocmMgPT0gMCkgewotICAgICAgICAgICAgRklMRSAqIGZwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoZm9wZW5fcygmZnAsIGZpbGVuYW1lLCAiciIpID09IDApIHsKLSAgICAgICAgICAgICAgICBjaGFyICogY3AgPSBmZ2V0cyhjbWRsaW5lLCBDTURfU0laRSwgZnApOwotCi0gICAgICAgICAgICAgICAgaWYgKGNwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKiBjb250ZXh0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqIHRwID0gc3RydG9rX3MoY3AsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhncmV2LCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGdicmFuY2gsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cCA9IHN0cnRva19zKE5VTEwsIERFTElNUywgJmNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3RhZywgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIF91bmxpbmsoZmlsZW5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciphcmd2W10pCi17Ci0gICAgY2hhciBjb21tYW5kW0NNRF9TSVpFXSA9ICJjbC5leGUgLWMgLURfV0lOMzIgLURVU0VfRExfRVhQT1JUIC1EX1dJTkRPV1MgLURXSU4zMiAtRF9XSU5ETEwgIjsKLSAgICBjaGFyIHRtcHBhdGhbQ01EX1NJWkVdID0gIiI7Ci0gICAgaW50IGRvX3VubGluaywgcmVzdWx0OwotICAgIGNoYXIgKnRtcGRpciA9IE5VTEw7Ci0gICAgaWYgKGFyZ2MgPD0gMiB8fCBhcmdjID4gMykgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2VfYnVpbGRpbmZvICQoQ29uZmlndXJhdGlvbk5hbWUpIFt0bXBkaXJdXG4iKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiRGVidWciKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURfREVCVUcgLU1EZCAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJSZWxlYXNlSXRhbml1bSIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX0lUQU5JVU0gIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUFNRDY0IikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1NRCAiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgL1VTRUNMOk1TX09QVEVST04gIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gJXNcbiIsIGFyZ3ZbMV0pOwotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIH0KLSAgICBpZiAoYXJnYyA+IDIpIHsKLSAgICAgICAgdG1wZGlyID0gYXJndlsyXTsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksIHRtcGRpcik7Ci0gICAgICAgIC8qIEhhY2sgZml4IGZvciBiYWQgY29tbWFuZCBsaW5lOiAgSWYgdGhlIGNvbW1hbmQgaXMgaXNzdWVkIGxpa2UgdGhpczoKLSAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcikiCi0gICAgICAgICAqIHdlIHdpbGwgZ2V0IGEgdHJhaWxpbmcgcXVvdGUgYmVjYXVzZSBJbnREaXIgZW5kcyB3aXRoIGEgYmFja3NsYXNoIHRoYXQgdGhlbgotICAgICAgICAgKiBlc2NhcGVzIHRoZSBmaW5hbCAiLiAgVG8gc2ltcGxpZnkgdGhlIGxpZmUgZm9yIGRldmVsb3BlcnMsIGNhdGNoIHRoYXQgcHJvYmxlbQotICAgICAgICAgKiBoZXJlIGJ5IGN1dHRpbmcgaXQgb2ZmLgotICAgICAgICAgKiBUaGUgcHJvcGVyIGNvbW1hbmQgbGluZSwgYnR3IGlzOgotICAgICAgICAgKiAkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKVwiCi0gICAgICAgICAqIEhvb3JheSBmb3IgY29tbWFuZCBsaW5lIHBhcnNpbmcgb24gd2luZG93cy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChzdHJsZW4odG1wcGF0aCkgPiAwICYmIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID09ICciJykKLSAgICAgICAgICAgIHRtcHBhdGhbc3RybGVuKHRtcHBhdGgpLTFdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3ModG1wcGF0aCwgX2NvdW50b2YodG1wcGF0aCksICJcXCIpOwotICAgIH0KLQotICAgIGlmICgoZG9fdW5saW5rID0gbWFrZV9idWlsZGluZm8yKHRtcHBhdGgpKSkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8yLmNcIiAtRFNVQldDUkVWICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBoZ3RhZ1tDTURfU0laRV07Ci0gICAgICAgIGNoYXIgaGdicmFuY2hbQ01EX1NJWkVdOwotICAgICAgICBjaGFyIGhncmV2W0NNRF9TSVpFXTsKLQotICAgICAgICBpZiAoZ2V0X21lcmN1cmlhbF9pbmZvKGhnYnJhbmNoLCBoZ3RhZywgaGdyZXYsIENNRF9TSVpFKSkgewotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItREhHQlJBTkNIPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ2JyYW5jaCk7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKLQotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1RBRz1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGd0YWcpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7Ci0KLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdWRVJTSU9OPVxcXCIiKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3Jldik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIgIik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMiKTsKLSAgICB9Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLUZvXCIiKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJnZXRidWlsZGluZm8ub1wiIC1JLi5cXEluY2x1ZGUgLUkuLlxcUEMiKTsKLSAgICBwdXRzKGNvbW1hbmQpOyBmZmx1c2goc3Rkb3V0KTsKLSAgICByZXN1bHQgPSBzeXN0ZW0oY29tbWFuZCk7Ci0gICAgaWYgKGRvX3VubGluaykgewotICAgICAgICBjb21tYW5kWzBdID0gJ1wwJzsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLSAgICAgICAgX3VubGluayhjb21tYW5kKTsKLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA8IDApCi0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ogYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZTdmOTEuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5tYWtlX2J1aWxkaW5mbzwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpbWFrZV9idWlsZGluZm8uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby5jIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjI3ZjhjLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgotICAgIDwvRmlsdGVyPgotICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLmMiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ogYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmNTA3Yi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagorKysgL2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICA8L0l0ZW1Hcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgotICAgIDxQcm9qZWN0R3VpZD57RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfTwvUHJvamVjdEd1aWQ+Ci0gICAgPFJvb3ROYW1lc3BhY2U+bWFrZV92ZXJzaW9uaW5mbzwvUm9vdE5hbWVzcGFjZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQotbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oCi08L0NvbW1hbmQ+Ci0gICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICAgIDxJbnB1dHM+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvSW5wdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudCAvPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxDdXN0b21CdWlsZFN0ZXA+Ci0gICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCi1tYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjLmgKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmMuaDslKE91dHB1dHMpPC9PdXRwdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCi1tYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udC5oCi08L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPEN1c3RvbUJ1aWxkU3RlcD4KLSAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKLW1ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgKLTwvQ29tbWFuZD4KLSAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oOyUoT3V0cHV0cyk8L091dHB1dHM+Ci0gICAgICA8SW5wdXRzPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvSW5wdXRzPgotICAgIDwvQ3VzdG9tQnVpbGRTdGVwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q3VzdG9tQnVpbGRTdGVwPgotICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQotbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaAotPC9Db21tYW5kPgotICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KLSAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKLW1ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25fbnRfZC5oCi08L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIiAvPgotICA8L0l0ZW1Hcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KLSAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ouZmlsdGVycwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjMDQzNC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvai5maWx0ZXJzCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+Ci0gICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTQxODA5NTQtYzNhNS00NzQ5LWI5YTQtMzFiODA0ZWU0ZmE4fTwvVW5pcXVlSWRlbnRpZmllcj4KLSAgICA8L0ZpbHRlcj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiPgotICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9vcGVuc3NsLnByb3BzIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOTRlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKQEAgLTAsMCArMSw3NyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFB5X0ludERpciBDb25kaXRpb249IickKFB5X0ludERpciknID09ICcnIj4kKG9wZW5zc2xEaXIpdG1wXDwvUHlfSW50RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKworICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iRFNPX1dJTjMyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJXSU4zMl9MRUFOX0FORF9NRUFOIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJMX0VORElBTiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9USFJFQURTIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1NZU05BTUVfV0lOMzIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfSUEzMl9TU0UyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0NQVUlEX09CSiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMV9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTI1Nl9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTUxMl9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik1ENV9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IkFFU19BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlZQQUVTX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iV0hJUkxQT09MX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iR0hBU0hfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0lERUEiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fUkM1IiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX01EMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19NREMyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0tSQjUiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fSlBBS0UiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fUkRSQU5EIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX1JTQVgiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX01PTlQiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlJNRDE2MF9BU00iIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9QcmVwcm9jZXNzb3JEZWZpbml0aW9uTGlzdD5AKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvX1ByZXByb2Nlc3NvckRlZmluaXRpb25MaXN0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPCEtLSBTdXBwcmVzcyA2NC1iaXQgdHJ1bmNhdGlvbiB3YXJuaW5ncyAtIHRoZXkgYXJlbid0IG91cnMgdG8gd29ycnkgYWJvdXQgLS0+CisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDI0NDs0MjY3PC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcik7JChvcGVuc3NsRGlyKWluY2x1ZGU7JChvcGVuc3NsRGlyKWNyeXB0bzskKG9wZW5zc2xEaXIpY3J5cHRvXGFzbjE7JChvcGVuc3NsRGlyKWNyeXB0b1xldnA7JChvcGVuc3NsRGlyKWNyeXB0b1xtb2RlczwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKF9QcmVwcm9jZXNzb3JEZWZpbml0aW9uTGlzdCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIAorICA8VGFyZ2V0IE5hbWU9IkZpbmROYXNtIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxuYXNtIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyI+bmFzbS5leGUgLWYgd2luMzI8L25hc20+CisgICAgICA8bmFzbSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj5uYXNtLmV4ZSAtZiB3aW42NCAtRE5FQVIgLU94IC1nPC9uYXNtPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgPC9UYXJnZXQ+CisKKyAgPFRhcmdldCBOYW1lPSJCdWlsZE5hc21GaWxlcyIgQmVmb3JlVGFyZ2V0cz0iUHJlQnVpbGRFdmVudCIgRGVwZW5kc09uVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkO0ZpbmROYXNtIiBJbnB1dHM9IkAoTmFzbUNvbXBpbGUpIiBPdXRwdXRzPSJAKE5hc21Db21waWxlLT4nJChJbnREaXIpJShGaWxlbmFtZSkub2JqJykiPgorICAgIDxFeGVjIENvbW1hbmQ9J3NldGxvY2FsCitzZXQgUEFUSD0kKG5hc21EaXIpOyVQQVRIJQorJChuYXNtKSAtbyAiJChJbnREaXIpJShOYXNtQ29tcGlsZS5GaWxlbmFtZSkub2JqIiAiJShOYXNtQ29tcGlsZS5GdWxsUGF0aCkiJyAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8TGluayBJbmNsdWRlPSIkKEludERpciklKE5hc21Db21waWxlLkZpbGVuYW1lKS5vYmoiIC8+CisgICAgICA8TGliIEluY2x1ZGU9IiQoSW50RGlyKSUoTmFzbUNvbXBpbGUuRmlsZW5hbWUpLm9iaiIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnByb2ogYi9QQ2J1aWxkL3BjYnVpbGQucHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjYyMWM5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wY2J1aWxkLnByb2oKQEAgLTAsMCArMSw5MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDQzlCOTNBMi00MzlELTQwNTgtOUQyOS02RENGNDM3NzQ0MDV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8UGxhdGZvcm0gQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICcnIj5XaW4zMjwvUGxhdGZvcm0+CisgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgPEluY2x1ZGVFeHRlbnNpb25zIENvbmRpdGlvbj0iJyQoSW5jbHVkZUV4dGVuc2lvbnMpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZUV4dGVuc2lvbnM+CisgICAgPEluY2x1ZGVFeHRlcm5hbHMgQ29uZGl0aW9uPSInJChJbmNsdWRlRXh0ZXJuYWxzKScgPT0gJyciPnRydWU8L0luY2x1ZGVFeHRlcm5hbHM+CisgICAgPEluY2x1ZGVUZXN0cyBDb25kaXRpb249IickKEluY2x1ZGVUZXN0KScgPT0gJyciPnRydWU8L0luY2x1ZGVUZXN0cz4KKyAgICA8SW5jbHVkZVNTTCBDb25kaXRpb249IickKEluY2x1ZGVTU0wpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZVNTTD4KKyAgICA8SW5jbHVkZVRraW50ZXIgQ29uZGl0aW9uPSInJChJbmNsdWRlVGtpbnRlciknID09ICcnIj50cnVlPC9JbmNsdWRlVGtpbnRlcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxQcm9qZWN0cz4KKyAgICAgIDxQbGF0Zm9ybT4kKFBsYXRmb3JtKTwvUGxhdGZvcm0+CisgICAgICA8Q29uZmlndXJhdGlvbj4kKENvbmZpZ3VyYXRpb24pPC9Db25maWd1cmF0aW9uPgorICAgICAgPFByb3BlcnRpZXM+PC9Qcm9wZXJ0aWVzPgorICAgICAgPEJ1aWxkVGFyZ2V0PkJ1aWxkPC9CdWlsZFRhcmdldD4KKyAgICAgIDxDbGVhblRhcmdldD5DbGVhbjwvQ2xlYW5UYXJnZXQ+CisgICAgICA8Q2xlYW5BbGxUYXJnZXQ+Q2xlYW5BbGw8L0NsZWFuQWxsVGFyZ2V0PgorICAgICAgPEJ1aWxkSW5QYXJhbGxlbD50cnVlPC9CdWlsZEluUGFyYWxsZWw+CisgICAgPC9Qcm9qZWN0cz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDwhLS0gcHl0aG9uWFkuZGxsIC0tPgorICAgIDwhLS0KKyAgICBQYXJhbGxlbCBidWlsZCBpcyBleHBsaWNpdGx5IGRpc2FibGVkIGZvciB0aGlzIHByb2plY3QgYmVjYXVzZSBpdAorICAgIGNhdXNlcyBtYW55IGNvbmZsaWN0cyBiZXR3ZWVuIHB5dGhvbmNvcmUgYW5kIHByb2plY3RzIHRoYXQgZGVwZW5kCisgICAgb24gcHl0aG9uY29yZS4gT25jZSB0aGUgY29yZSBETEwgaGFzIGJlZW4gYnVpbHQsIHN1YnNlcXVlbnQKKyAgICBwcm9qZWN0cyB3aWxsIGJlIGJ1aWx0IGluIHBhcmFsbGVsLgorICAgIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPEJ1aWxkSW5QYXJhbGxlbD5mYWxzZTwvQnVpbGRJblBhcmFsbGVsPgorICAgIDwvUHJvamVjdHM+CisgICAgPCEtLSBweXRob25bd10uZXhlIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweXRob24udmN4cHJvajtweXRob253LnZjeHByb2oiIC8+CisgICAgPCEtLSBweXRob24zLmRsbCAtLT4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0icHl0aG9uM2RsbC52Y3hwcm9qIiAvPgorICAgIDwhLS0gcHlbd10uZXhlIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweWxhdW5jaGVyLnZjeHByb2o7cHl3bGF1bmNoZXIudmN4cHJvaiIgLz4KKyAgICA8IS0tIF9mcmVlemVfaW1wb3J0bGliIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiAvPgorICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgLS0+CisgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO3B5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kIiAvPgorICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCByZXF1aXJlIGV4dGVybmFsIHNvdXJjZXMgLS0+CisgICAgPEV4dGVybmFsTW9kdWxlcyBJbmNsdWRlPSJfYnoyO19sem1hO19zcWxpdGUzIiAvPgorICAgIDwhLS0gX3NzbCB3aWxsIGJ1aWxkIF9zb2NrZXQgYXMgd2VsbCwgd2hpY2ggbWF5IGNhdXNlIGNvbmZsaWN0cyBpbiBwYXJhbGxlbCBidWlsZHMgLS0+CisgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX3NvY2tldCIgQ29uZGl0aW9uPSIhJChJbmNsdWRlU1NMKSBvciAhJChJbmNsdWRlRXh0ZXJuYWxzKSIgLz4KKyAgICA8RXh0ZXJuYWxNb2R1bGVzIEluY2x1ZGU9Il9zc2w7X2hhc2hsaWIiIENvbmRpdGlvbj0iJChJbmNsdWRlU1NMKSIgLz4KKyAgICA8RXh0ZXJuYWxNb2R1bGVzIEluY2x1ZGU9Il90a2ludGVyO3RpeCIgQ29uZGl0aW9uPSIkKEluY2x1ZGVUa2ludGVyKSIgLz4KKyAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJAKEV4dGVybmFsTW9kdWxlcy0+JyUoSWRlbnRpdHkpJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZXJuYWxzKSIgLz4KKyAgICA8UHJvamVjdHMgSW5jbHVkZT0iQChFeHRlbnNpb25Nb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZUV4dGVuc2lvbnMpIiAvPgorICAgIDwhLS0gVGVzdCBtb2R1bGVzIC0tPgorICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzX3Rlc3Q7X3Rlc3RidWZmZXI7X3Rlc3RjYXBpO190ZXN0ZW1iZWQ7X3Rlc3RpbXBvcnRtdWx0aXBsZTtfdGVzdG11bHRpcGhhc2UiIC8+CisgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Inh4bGltaXRlZCIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ1JlbGVhc2UnIiAvPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKFRlc3RNb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZVRlc3RzKSI+CisgICAgICA8IS0tIERpc2FibGUgcGFyYWxsZWwgYnVpbGQgZm9yIHRlc3QgbW9kdWxlcyAtLT4KKyAgICAgIDxCdWlsZEluUGFyYWxsZWw+ZmFsc2U8L0J1aWxkSW5QYXJhbGxlbD4KKyAgICA8L1Byb2plY3RzPgorICA8L0l0ZW1Hcm91cD4KKworICA8VGFyZ2V0IE5hbWU9IkJ1aWxkIj4KKyAgICA8TVNCdWlsZCBQcm9qZWN0cz0iQChQcm9qZWN0cykiCisgICAgICAgICAgICAgUHJvcGVydGllcz0iQ29uZmlndXJhdGlvbj0lKENvbmZpZ3VyYXRpb24pO1BsYXRmb3JtPSUoUGxhdGZvcm0pOyUoUHJvcGVydGllcykiCisgICAgICAgICAgICAgQnVpbGRJblBhcmFsbGVsPSIlKEJ1aWxkSW5QYXJhbGxlbCkiCisgICAgICAgICAgICAgVGFyZ2V0cz0iJShCdWlsZFRhcmdldCkiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iPgorICAgIDxNU0J1aWxkIFByb2plY3RzPSJAKFByb2plY3RzKSIKKyAgICAgICAgICAgICBQcm9wZXJ0aWVzPSJDb25maWd1cmF0aW9uPSUoQ29uZmlndXJhdGlvbik7UGxhdGZvcm09JShQbGF0Zm9ybSk7JShQcm9wZXJ0aWVzKSIKKyAgICAgICAgICAgICBCdWlsZEluUGFyYWxsZWw9IiUoQnVpbGRJblBhcmFsbGVsKSIKKyAgICAgICAgICAgICBTdG9wT25GaXJzdEZhaWx1cmU9ImZhbHNlIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iJShDbGVhblRhcmdldCkgIT0gJyciCisgICAgICAgICAgICAgVGFyZ2V0cz0iJShDbGVhblRhcmdldCkiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxNU0J1aWxkIFByb2plY3RzPSJAKFByb2plY3RzKSIKKyAgICAgICAgICAgICBQcm9wZXJ0aWVzPSJDb25maWd1cmF0aW9uPSUoQ29uZmlndXJhdGlvbik7UGxhdGZvcm09JShQbGF0Zm9ybSk7JShQcm9wZXJ0aWVzKSIKKyAgICAgICAgICAgICBCdWlsZEluUGFyYWxsZWw9IiUoQnVpbGRJblBhcmFsbGVsKSIKKyAgICAgICAgICAgICBTdG9wT25GaXJzdEZhaWx1cmU9ImZhbHNlIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iJShDbGVhbkFsbFRhcmdldCkgIT0gJyciCisgICAgICAgICAgICAgVGFyZ2V0cz0iJShDbGVhbkFsbFRhcmdldCkiIC8+CisgIDwvVGFyZ2V0PgorCisgIDxUYXJnZXQgTmFtZT0iUmVidWlsZCIgRGVwZW5kc09uVGFyZ2V0cz0iQ2xlYW47QnVpbGQiIC8+CisgIDxUYXJnZXQgTmFtZT0iUmVidWlsZEFsbCIgRGVwZW5kc09uVGFyZ2V0cz0iQ2xlYW5BbGw7QnVpbGQiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggYTM0NmUxMC4uNzY2YTg3MCAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC0xLDUgKzEsNyBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTEuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAxMA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEyLjAwDQorIyBWaXN1YWwgU3R1ZGlvIDE0DQorVmlzdWFsU3R1ZGlvVmVyc2lvbiA9IDE0LjAuMjI4MjMuMQ0KK01pbmltdW1WaXN1YWxTdHVkaW9WZXJzaW9uID0gMTAuMC40MDIxOS4xDQogUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCiAJUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQogCQkuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KQEAgLTgsMTQgKzEwLDEwIEBACiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjeHByb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjeHByb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjeHByb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmN4cHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi1FbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3hwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9kZWNpbWFsIiwgIl9kZWNpbWFsLnZjeHByb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQpAQCAtNTAsNyArNDgsNyBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjeHByb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjeHByb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgIi4uXFBDXGJkaXN0X3dpbmluc3RcYmRpc3Rfd2luaW5zdC52Y3hwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjeHByb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQogRW5kUHJvamVjdA0KQEAgLTU4LDEwICs1Niw2IEBACiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmN4cHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzc2wiLCAic3NsLnZjeHByb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmN4cHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCi1FbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24zZGxsIiwgInB5dGhvbjNkbGwudmN4cHJvaiIsICJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCiBFbmRQcm9qZWN0DQogUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjeHByb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQpAQCAtNzgsNiArNzIsMTggQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0ZW1iZWQiLCAiX3Rlc3RlbWJlZC52Y3hwcm9qIiwgIns2REFDNjZEOS1FNzAzLTQ2MjQtQkUwMy00OTExMkFCNUFBNjJ9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0bXVsdGlwaGFzZSIsICJfdGVzdG11bHRpcGhhc2UudmN4cHJvaiIsICJ7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0Y2wiLCAidGNsLnZjeHByb2oiLCAie0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidGl4IiwgInRpeC52Y3hwcm9qIiwgIntDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInRrIiwgInRrLnZjeHByb2oiLCAiezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliZWF5IiwgImxpYmVheS52Y3hwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbGVheSIsICJzc2xlYXkudmN4cHJvaiIsICJ7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fSINCitFbmRQcm9qZWN0DQogR2xvYmFsDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQogCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQpAQCAtMTA2LDIyICsxMTIsNiBAQAogCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC0xNDIsMzQgKzEzMiwxOCBAQAogCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCkBAIC0yMjIsMTQgKzE5NiwxNCBAQAogCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCkBAIC0zMzQsMTQgKzMwOCwxNCBAQAogCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCkBAIC00NDIsNyArNDE2LDcgQEAKIAkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCkBAIC00OTgsNDkgKzQ3MiwxOCBAQAogCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTU2MywxNCArNTA2LDE0IEBACiAJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KQEAgLTU3OSwzNCArNTIyLDM0IEBACiAJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KIAkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCiAJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQogCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KQEAgLTYxNCw3ICs1NTcsOSBAQAogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KIAkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7RUI2RTY5REQtMDRCRi00NTQzLTlCOTItNDlGQUFCQ0VBQzJFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJe0VCNkU2OURELTA0QkYtNDU0My05QjkyLTQ5RkFBQkNFQUMyRX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7RUI2RTY5REQtMDRCRi00NTQzLTlCOTItNDlGQUFCQ0VBQzJFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQpAQCAtNjQ1LDYgKzU5MCwxMDAgQEAKIAkJezZEQUM2NkQ5LUU3MDMtNDYyNC1CRTAzLTQ5MTEyQUI1QUE2Mn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezZEQUM2NkQ5LUU3MDMtNDYyNC1CRTAzLTQ5MTEyQUI1QUE2Mn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXs2REFDNjZEOS1FNzAzLTQ2MjQtQkUwMy00OTExMkFCNUFBNjJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezE2QkZFNkYwLTIyRUYtNDBCNS1CODMxLTdFOTM3MTE5RUYxMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxNkJGRTZGMC0yMkVGLTQwQjUtQjgzMS03RTkzNzExOUVGMTB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MTZCRkU2RjAtMjJFRi00MEI1LUI4MzEtN0U5MzcxMTlFRjEwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAlFbmRHbG9iYWxTZWN0aW9uDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQogCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BnaW5zdHJ1bWVudC5wcm9wcyBiL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTg0OTk1Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvcGdpbnN0cnVtZW50LnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPE91dERpclBHST4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVw8L091dERpclBHST4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE91dERpcj4kKE91dERpclBHSSlcPC9PdXREaXI+Ci0gICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLXBnaVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8RmF2b3JTaXplT3JTcGVlZD5TaXplPC9GYXZvclNpemVPclNwZWVkPgotICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPgotICAgICAgPEVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+ZmFsc2U8L0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+Ci0gICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+Ci0gICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPgotICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24+UEdJbnN0cnVtZW50PC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgotICAgICAgPFByb2ZpbGVHdWlkZWREYXRhYmFzZT4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVwkKFRhcmdldE5hbWUpLnBnZDwvUHJvZmlsZUd1aWRlZERhdGFiYXNlPgotICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Ik91dERpclBHSSI+Ci0gICAgICA8VmFsdWU+JChPdXREaXJQR0kpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcyBiL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NzVhMDIuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1w8L091dERpcj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM+JShBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM+Ci0gICAgICA8TGlua1RpbWVDb2RlR2VuZXJhdGlvbj5QR1VwZGF0ZTwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0IGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA4YTlmMwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CkBAIC0wLDAgKzEsMTIgQEAKK0BlY2hvIG9mZg0KK2lmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgNCisgIGlmICUxIEVRVSBEZWJ1ZyAoDQorICAgIHNoaWZ0DQorICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1X2QuZGxsIGV4aXQgMQ0KKyAgKSBFTFNFICgNCisgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1LmRsbCBleGl0IDENCisgICkNCispDQorJUhPU1RfUFlUSE9OJSBwcmVwYXJlX3NzbC5weSAlMQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMDNkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLnB5CkBAIC0wLDAgKzEsMjQ4IEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBTY3JpcHQgZm9yIHByZXBhcmluZyBPcGVuU1NMIGZvciBidWlsZGluZyBvbiBXaW5kb3dzLgorIyBVc2VzIFBlcmwgdG8gY3JlYXRlIG5tYWtlIG1ha2VmaWxlcyBhbmQgb3RoZXJ3aXNlIHByZXBhcmUgdGhlIHdheQorIyBmb3IgYnVpbGRpbmcgb24gMzIgb3IgNjQgYml0IHBsYXRmb3Jtcy4KKworIyBTY3JpcHQgb3JpZ2luYWxseSBhdXRob3JlZCBieSBNYXJrIEhhbW1vbmQuCisjIE1ham9yIHJldmlzaW9ucyBieToKKyMgICBNYXJ0aW4gdi4gTMO2d2lzCisjICAgQ2hyaXN0aWFuIEhlaW1lcworIyAgIFphY2hhcnkgV2FyZQorCisjIFRIRU9SRVRJQ0FMTFksIHlvdSBjYW46CisjICogVW5wYWNrIHRoZSBsYXRlc3QgT3BlblNTTCByZWxlYXNlIHdoZXJlICQob3BlbnNzbERpcikgaW4KKyMgICBQQ2J1aWxkXHB5cHJvamVjdC5wcm9wcyBleHBlY3RzIGl0IHRvIGJlLgorIyAqIEluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGlzIHNvbWV3aGVyZSBvbiB5b3VyIHBhdGguCisjICogUnVuIHRoaXMgc2NyaXB0IHdpdGggdGhlIE9wZW5TU0wgc291cmNlIGRpciBhcyB0aGUgb25seSBhcmd1bWVudC4KKyMKKyMgaXQgc2hvdWxkIGNvbmZpZ3VyZSBPcGVuU1NMIHN1Y2ggdGhhdCBpdCBpcyByZWFkeSB0byBiZSBidWlsdCBieQorIyBzc2wudmN4cHJvaiBvbiAzMiBvciA2NCBiaXQgcGxhdGZvcm1zLgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKKworIyBGaW5kIGFsbCAiZm9vLmV4ZSIgZmlsZXMgb24gdGhlIFBBVEguCitkZWYgZmluZF9hbGxfb25fcGF0aChmaWxlbmFtZSwgZXh0cmFzID0gTm9uZSk6CisgICAgZW50cmllcyA9IG9zLmVudmlyb25bIlBBVEgiXS5zcGxpdChvcy5wYXRoc2VwKQorICAgIHJldCA9IFtdCisgICAgZm9yIHAgaW4gZW50cmllczoKKyAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgorICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKKyAgICBpZiBleHRyYXM6CisgICAgICAgIGZvciBwIGluIGV4dHJhczoKKyAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6CisgICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKKyAgICByZXR1cm4gcmV0CisKKyMgRmluZCBhIHN1aXRhYmxlIFBlcmwgaW5zdGFsbGF0aW9uIGZvciBPcGVuU1NMLgorIyBjeWd3aW4gcGVybCBkb2VzICpub3QqIHdvcmsuICBBY3RpdmVQZXJsIGRvZXMuCisjIEJlaW5nIGEgUGVybCBkdW1teSwgdGhlIHNpbXBsZXN0IHdheSBJIGNhbiBjaGVjayBpcyBpZiB0aGUgIldpbjMyIiBwYWNrYWdlCisjIGlzIGF2YWlsYWJsZS4KK2RlZiBmaW5kX3dvcmtpbmdfcGVybChwZXJscyk6CisgICAgZm9yIHBlcmwgaW4gcGVybHM6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtwZXJsLCAiLWUiLCAidXNlIFdpbjMyOyJdKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHBlcmwKKworICAgIGlmIHBlcmxzOgorICAgICAgICBwcmludCgiVGhlIGZvbGxvd2luZyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kOiIpCisgICAgICAgIGZvciBwIGluIHBlcmxzOgorICAgICAgICAgICAgcHJpbnQoIiAiLCBwKQorICAgICAgICBwcmludCgiIE5vbmUgb2YgdGhlc2UgdmVyc2lvbnMgYXBwZWFyIHN1aXRhYmxlIGZvciBidWlsZGluZyBPcGVuU1NMIikKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiTk8gcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZCBvbiB0aGlzIG1hY2hpbmUgYXQgYWxsISIpCisgICAgcHJpbnQoIiBQbGVhc2UgaW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgYXBwZWFycyBvbiB5b3VyIHBhdGgiKQorCitkZWYgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMik6CisgICAgIiIiQ3JlYXRlIGFuZCBmaXggbWFrZWZpbGUgZm9yIDY0Yml0CisKKyAgICBSZXBsYWNlIDMyIHdpdGggNjRiaXQgZGlyZWN0b3JpZXMKKyAgICAiIiIKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobTMyKToKKyAgICAgICAgcmV0dXJuCisgICAgd2l0aCBvcGVuKG0zMikgYXMgZmluOgorICAgICAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9dG1wMzIiLCAiPXRtcDY0IikKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9b3V0MzIiLCAiPW91dDY0IikKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9aW5jMzIiLCAiPWluYzY0IikKKyAgICAgICAgICAgICAgICAjIGZvcmNlIDY0IGJpdCBtYWNoaW5lCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTUtMSUI9bGliIiwgIk1LTElCPWxpYiAvTUFDSElORTpYNjQiKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkxGTEFHUz0iLCAiTEZMQUdTPS9NQUNISU5FOlg2NCAiKQorICAgICAgICAgICAgICAgICMgZG9uJ3QgbGluayBhZ2FpbnN0IHRoZSBsaWIgb24gNjRiaXQgc3lzdGVtcworICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImJ1ZmZlcm92ZXJmbG93dS5saWIiLCAiIikKKyAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCisgICAgb3MudW5saW5rKG0zMikKKworZGVmIGNyZWF0ZV9hc21zKG1ha2VmaWxlKToKKyAgICAjY3JlYXRlIGEgY3VzdG9tIG1ha2VmaWxlIG91dCBvZiB0aGUgcHJvdmlkZWQgb25lCisgICAgYXNtX21ha2VmaWxlID0gb3MucGF0aC5zcGxpdGV4dChtYWtlZmlsZSlbMF0gKyAnLmFzbS5tYWsnCisgICAgd2l0aCBvcGVuKG1ha2VmaWxlKSBhcyBmaW46CisgICAgICAgIHdpdGggb3Blbihhc21fbWFrZWZpbGUsICd3JykgYXMgZm91dDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgICAgICAjIEtlZXAgZXZlcnl0aGluZyB1cCB0byB0aGUgaW5zdGFsbCB0YXJnZXQgKGl0J3MgY29udmVuaWVudCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ2luc3RhbGw6IGFsbCcpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKyAgICAgICAgICAgIGFzbXMgPSBbXQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgorICAgICAgICAgICAgICAgIGlmICcuYXNtJyBpbiBsaW5lIGFuZCBsaW5lLnN0cmlwKCkuZW5kc3dpdGgoJy5wbCcpOgorICAgICAgICAgICAgICAgICAgICBhc21zLmFwcGVuZChsaW5lLnNwbGl0KCc6JylbMF0pCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIGxpbmUuc3RyaXAoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBuZXh0KGZpbikKKyAgICAgICAgICAgICAgICAgICAgZm91dC53cml0ZSgnXG4nKQorCisgICAgICAgICAgICBmb3V0LndyaXRlKCdhc21zOiAkKFRNUF9EKSAnKQorICAgICAgICAgICAgZm91dC53cml0ZSgnICcuam9pbihhc21zKSkKKyAgICAgICAgICAgIGZvdXQud3JpdGUoJ1xuJykKKworICAgIG9zLnN5c3RlbSgnbm1ha2UgL2Yge30gUEVSTD1wZXJsIGFzbXMnLmZvcm1hdChhc21fbWFrZWZpbGUpKQorICAgIG9zLnVubGluayhhc21fbWFrZWZpbGUpCisKKworCitkZWYgZml4X21ha2VmaWxlKG1ha2VmaWxlKToKKyAgICAiIiJGaXggc29tZSBzdHVmZiBpbiBhbGwgbWFrZWZpbGVzCisgICAgIiIiCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKKyAgICAgICAgcmV0dXJuCisgICAgY29weV9pZl9kaWZmZXJlbnQgPSByJyQoUEVSTCkgJChTUkNfRClcdXRpbFxjb3B5LWlmLWRpZmZlcmVudC5wbCcKKyAgICB3aXRoIG9wZW4obWFrZWZpbGUpIGFzIGZpbjoKKyAgICAgICAgbGluZXMgPSBmaW4ucmVhZGxpbmVzKCkKKyAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBFUkw9Iik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ1A9Iik6CisgICAgICAgICAgICAgICAgbGluZSA9ICJDUD1jb3B5XG4iCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIk1LRElSPSIpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAiTUtESVI9bWtkaXJcbiIKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiQ0ZMQUc9Iik6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgIGZvciBhbGdvIGluICgiUkM1IiwgIk1EQzIiLCAiSURFQSIpOgorICAgICAgICAgICAgICAgICAgICBub2FsZ28gPSAiIC1ET1BFTlNTTF9OT18lcyIgJSBhbGdvCisgICAgICAgICAgICAgICAgICAgIGlmIG5vYWxnbyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgbm9hbGdvCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyAnXG4nCisgICAgICAgICAgICBpZiBjb3B5X2lmX2RpZmZlcmVudCBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoY29weV9pZl9kaWZmZXJlbnQsICdjb3B5IC9ZJykKKyAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKworZGVmIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpOgorICAgIHByaW50KCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCisgICAgb3Muc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCisgICAgcHJpbnQoZG9fc2NyaXB0KQorICAgIG9zLnN5c3RlbShkb19zY3JpcHQpCisKK2RlZiBjbXAoZjEsIGYyKToKKyAgICBidWZzaXplID0gMTAyNCAqIDgKKyAgICB3aXRoIG9wZW4oZjEsICdyYicpIGFzIGZwMSwgb3BlbihmMiwgJ3JiJykgYXMgZnAyOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYjEgPSBmcDEucmVhZChidWZzaXplKQorICAgICAgICAgICAgYjIgPSBmcDIucmVhZChidWZzaXplKQorICAgICAgICAgICAgaWYgYjEgIT0gYjI6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBpZiBub3QgYjE6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworZGVmIGNvcHkoc3JjLCBkc3QpOgorICAgIGlmIG9zLnBhdGguaXNmaWxlKGRzdCkgYW5kIGNtcChzcmMsIGRzdCk6CisgICAgICAgIHJldHVybgorICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQorCitkZWYgcHJlcChhcmNoKToKKyAgICBpZiBhcmNoID09ICJ4ODYiOgorICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lOMzIiCisgICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fbmFzbSIKKyAgICAgICAgbWFrZWZpbGU9Im1zXFxudC5tYWsiCisgICAgICAgIG0zMiA9IG1ha2VmaWxlCisgICAgICAgIGRpcnN1ZmZpeCA9ICIzMiIKKyAgICBlbGlmIGFyY2ggPT0gImFtZDY0IjoKKyAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjY0QSIKKyAgICAgICAgZG9fc2NyaXB0ID0gIm1zXFxkb193aW42NGEiCisgICAgICAgIG1ha2VmaWxlID0gIm1zXFxudDY0Lm1hayIKKyAgICAgICAgbTMyID0gbWFrZWZpbGUucmVwbGFjZSgnNjQnLCAnJykKKyAgICAgICAgZGlyc3VmZml4ID0gIjY0IgorICAgICAgICAjb3MuZW52aXJvblsiVlNFWFRDT01QX1VTRUNMIl0gPSAiTVNfT1BURVJPTiIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbml6ZWQgcGxhdGZvcm06ICVzJyAlIGFyY2gpCisKKyAgICAjIHJlYnVpbGQgbWFrZWZpbGUgd2hlbiB3ZSBkbyB0aGUgcm9sZSBvdmVyIGZyb20gMzIgdG8gNjQgYnVpbGQKKyAgICBpZiBhcmNoID09ICJhbWQ2NCIgYW5kIG9zLnBhdGguaXNmaWxlKG0zMikgYW5kIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6CisgICAgICAgIG9zLnVubGluayhtMzIpCisKKyAgICAjIElmIHRoZSBzc2wgbWFrZWZpbGVzIGRvIG5vdCBleGlzdCwgd2UgaW52b2tlIFBlcmwgdG8gZ2VuZXJhdGUgdGhlbS4KKyAgICAjIER1ZSB0byBhIGJ1ZyBpbiB0aGlzIHNjcmlwdCwgdGhlIG1ha2VmaWxlIHNvbWV0aW1lcyBlbmRlZCB1cCBlbXB0eQorICAgICMgRm9yY2UgYSByZWdlbmVyYXRpb24gaWYgaXQgaXMuCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKSBvciBvcy5wYXRoLmdldHNpemUobWFrZWZpbGUpPT0wOgorICAgICAgICBwcmludCgiQ3JlYXRpbmcgdGhlIG1ha2VmaWxlcy4uLiIpCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KQorCisgICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKKyAgICAgICAgICAgIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpCisgICAgICAgIGZpeF9tYWtlZmlsZShtYWtlZmlsZSkKKyAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQorICAgICAgICBjb3B5KHIiY3J5cHRvXG9wZW5zc2xjb25mLmgiLCByImNyeXB0b1xvcGVuc3NsY29uZl8lcy5oIiAlIGFyY2gpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQobWFrZWZpbGUsICdhbHJlYWR5IGV4aXN0cyEnKQorCisgICAgcHJpbnQoJ2NyZWF0aW5nIGFzbXMuLi4nKQorICAgIGNyZWF0ZV9hc21zKG1ha2VmaWxlKQorCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKKyAgICAgICAgcHJpbnQoIk5vdCBlbm91Z2ggYXJndW1lbnRzOiBkaXJlY3RvcnkgY29udGFpbmluZyBPcGVuU1NMIiwKKyAgICAgICAgICAgICAgInNvdXJjZXMgbXVzdCBiZSBzdXBwbGllZCIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID4gMjoKKyAgICAgICAgcHJpbnQoIlRvbyBtYW55IGFyZ3VtZW50cyBzdXBwbGllZCwgYWxsIHdlIG5lZWQgaXMgdGhlIGRpcmVjdG9yeSIsCisgICAgICAgICAgICAgICJjb250YWluaW5nIE9wZW5TU0wgc291cmNlcyIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBzc2xfZGlyID0gc3lzLmFyZ3ZbMV0KKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHNzbF9kaXIpOgorICAgICAgICBwcmludChzc2xfZGlyLCAiaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeSEiKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgIyBwZXJsIHNob3VsZCBiZSBvbiB0aGUgcGF0aCwgYnV0IHdlIGFsc28gbG9vayBpbiAiXHBlcmwiIGFuZCAiYzpcXHBlcmwiCisgICAgIyBhcyAid2VsbCBrbm93biIgbG9jYXRpb25zCisgICAgcGVybHMgPSBmaW5kX2FsbF9vbl9wYXRoKCJwZXJsLmV4ZSIsIFtyIlxwZXJsXGJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIkM6XHBlcmxcYmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHBlcmw2NFxiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsNjRcYmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICBwZXJsID0gZmluZF93b3JraW5nX3BlcmwocGVybHMpCisgICAgaWYgcGVybDoKKyAgICAgICAgcHJpbnQoIkZvdW5kIGEgd29ya2luZyBwZXJsIGF0ICclcyciICUgKHBlcmwsKSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuZXhpdCgxKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgIyBQdXQgb3VyIHdvcmtpbmcgUGVybCBhdCB0aGUgZnJvbnQgb2Ygb3VyIHBhdGgKKyAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5wYXRoLmRpcm5hbWUocGVybCkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGhzZXAgKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXQorCisgICAgb2xkX2N3ZCA9IG9zLmdldGN3ZCgpCisgICAgdHJ5OgorICAgICAgICBvcy5jaGRpcihzc2xfZGlyKQorICAgICAgICBmb3IgYXJjaCBpbiBbJ2FtZDY0JywgJ3g4NiddOgorICAgICAgICAgICAgcHJlcChhcmNoKQorICAgIGZpbmFsbHk6CisgICAgICAgIG9zLmNoZGlyKG9sZF9jd2QpCisKK2lmIF9fbmFtZV9fPT0nX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWQucHJvcHMgYi9QQ2J1aWxkL3B5ZC5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY5OTY2ZS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3B5ZC5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+Ci0gICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+Ci0gICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9CVUlMRF9DT1JFX01PRFVMRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgPC9MaW5rPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZF9kLnByb3BzIGIvUENidWlsZC9weWRfZC5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyMzI4OC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3B5ZF9kLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KLSAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KLSAgICA8RW1iZWRNYW5pZmVzdD5mYWxzZTwvRW1iZWRNYW5pZmVzdD4KLSAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KLSAgICA8VGFyZ2V0TmFtZT4kKFByb2plY3ROYW1lKV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfQlVJTERfQ09SRV9NT0RVTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbmsgLz4KLSAgICA8UG9zdEJ1aWxkRXZlbnQ+Ci0gICAgICA8Q29tbWFuZD4KLSAgICAgIDwvQ29tbWFuZD4KLSAgICA8L1Bvc3RCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXAgLz4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvaiBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qCmluZGV4IDk3NGZkM2QuLjRlNzYyMWVjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagpAQCAtMzUsMTg2ICszNSwzMyBAQAogICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgIDwvSXRlbUdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgogICAgIDxQcm9qZWN0R3VpZD57RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHlleHBhdDwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKaW5kZXggOWZhOTNkZC4uNmEyMTc4NSAxMDA2NDQKLS0tIGEvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKKysrIGIvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2oKQEAgLTM3LDI1NiArMzcsMzMgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHlsYXVuY2hlcjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHlfZDwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHk8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgogICAgIDwvTGluaz4KQEAgLTMwMCwxMSArNzcsNiBAQAogICA8SXRlbUdyb3VwPgogICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHlsYXVuY2hlci5yYyIgLz4KICAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PntmMGUwNTQxZS1mMTdkLTQzMGItOTdjNC05M2FkZjBkZDI4NGV9PC9Qcm9qZWN0PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCmluZGV4IDAzNDEzNjguLmMxMzAzZTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCisrKyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCkBAIC0xLDQ4ICsxLDUzIEBACiDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIiBUcmVhdEFzTG9jYWxQcm9wZXJ0eT0iUHlfSW50RGlyIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpPC9PdXREaXI+Ci0gICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICA8L1Byb3BlcnR5R3JvdXA+ICAKLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0neDY0JyI+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxfUHJvcGVydHlTaGVldERpc3BsYXlOYW1lPmFtZDY0PC9fUHJvcGVydHlTaGVldERpc3BsYXlOYW1lPgotICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcilhbWQ2NFw8L091dERpcj4KLSAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VmlzdWFsU3R1ZGlvVmVyc2lvbiBDb25kaXRpb249IickKFZpc3VhbFN0dWRpb1ZlcnNpb24pJyA9PSAnJyI+MTAuMDwvVmlzdWFsU3R1ZGlvVmVyc2lvbj4KKyAgICA8T3V0RGlyPiQoQnVpbGRQYXRoKTwvT3V0RGlyPgorICAgIDxPdXREaXIgQ29uZGl0aW9uPSInJChQeV9PdXREaXIpJyAhPSAnJyI+JChQeV9PdXREaXIpPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoT3V0RGlyKSkiPiQoT3V0RGlyKVw8L091dERpcj4KKyAgICA8UHlfSW50RGlyIENvbmRpdGlvbj0iJyQoUHlfSW50RGlyKScgPT0gJyciPiQoU29sdXRpb25EaXIpb2JqXDwvUHlfSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKEludERpcikpIj4kKEludERpcilcPC9JbnREaXI+CisgICAgPEludERpcj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8SW50RGlyIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV9QR09cJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChUYXJnZXROYW1lKScgPT0gJyciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPiQoVGFyZ2V0TmFtZSkkKFB5RGVidWdFeHQpPC9UYXJnZXROYW1lPgorICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgorICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgorICAgIDxTdXBwb3J0UEdPIENvbmRpdGlvbj0iJyQoU3VwcG9ydFBHTyknID09ICcnIj50cnVlPC9TdXBwb3J0UEdPPgorICAgIDxTdXBwb3J0U2lnbmluZyBDb25kaXRpb249IickKFN1cHBvcnRTaWduaW5nKScgPT0gJyciPnRydWU8L1N1cHBvcnRTaWduaW5nPgorICAgIDxTdXBwb3J0U2lnbmluZyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5mYWxzZTwvU3VwcG9ydFNpZ25pbmc+CisgICAgPFN1cHBvcnRTaWduaW5nIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvblR5cGUpJyA9PSAnU3RhdGljTGlicmFyeSciPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPFB5RGxsTmFtZT5weXRob24zNCQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KLSAgICA8UHl0aG9uRXhlPiQoT3V0RGlyKXB5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9QeXRob25FeGU+Ci0gICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob24kKFB5RGVidWdFeHQpLmV4ZTwvS2lsbFB5dGhvbkV4ZT4KLSAgICA8ZXh0ZXJuYWxzRGlyPi4uXGV4dGVybmFsczwvZXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy44LjExLjA8L3NxbGl0ZTNEaXI+Ci0gICAgPGJ6MkRpcj4kKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjY8L2J6MkRpcj4KLSAgICA8bHptYURpcj4kKGV4dGVybmFsc0RpcilceHotNS4wLjU8L2x6bWFEaXI+Ci0gICAgPG9wZW5zc2xEaXI+JChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjJkPC9vcGVuc3NsRGlyPgotICAgIDx0Y2x0a0Rpcj4kKGV4dGVybmFsc0RpcilcdGNsdGs8L3RjbHRrRGlyPgotICAgIDx0Y2x0azY0RGlyPiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azY0PC90Y2x0azY0RGlyPgotICAgIDx0Y2x0a0xpYj4kKHRjbHRrRGlyKVxsaWJcdGNsODZ0LmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NnQubGliPC90Y2x0a0xpYj4KLSAgICA8dGNsdGtMaWJEZWJ1Zz4kKHRjbHRrRGlyKVxsaWJcdGNsODZ0Zy5saWI7JCh0Y2x0a0RpcilcbGliXHRrODZ0Zy5saWI8L3RjbHRrTGliRGVidWc+Ci0gICAgPHRjbHRrNjRMaWI+JCh0Y2x0azY0RGlyKVxsaWJcdGNsODZ0LmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg2dC5saWI8L3RjbHRrNjRMaWI+Ci0gICAgPHRjbHRrNjRMaWJEZWJ1Zz4kKHRjbHRrNjREaXIpXGxpYlx0Y2w4NnRnLmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg2dGcubGliPC90Y2x0azY0TGliRGVidWc+CisKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24+TkRFQlVHOzwvX0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj4KKyAgICA8X0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+X0RFQlVHOzwvX0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj4KKyAgICA8X1BsYXRmb3JtUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj5fV0lOMzI7PC9fUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPl9XSU42NDtfTV9YNjQ7PC9fUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfUHlkUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiBDb25kaXRpb249IiQoVGFyZ2V0RXh0KSA9PSAnLnB5ZCciPlB5X0JVSUxEX0NPUkVfTU9EVUxFOzwvX1B5ZFByZXByb2Nlc3NvckRlZmluaXRpb24+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKUluY2x1ZGU7JChQeVNvdXJjZVBhdGgpUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjskKF9QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24pJChfRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uKSQoX1B5ZFByZXByb2Nlc3NvckRlZmluaXRpb24pJShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgCiAgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KICAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTsgLi5cUEM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxFeGNlcHRpb25IYW5kbGluZz4KLSAgICAgIDwvRXhjZXB0aW9uSGFuZGxpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+PC9FeGNlcHRpb25IYW5kbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KICAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KICAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CiAgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CiAgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPmZhbHNlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiQoT3V0RGlyKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgpAQCAtNTEsNTQgKzU2LDEwNSBAQAogICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CiAgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPnRydWU8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KICAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj50cnVlPC9EYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAneDY0JyI+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICAgIDxQcm9maWxlR3VpZGVkRGF0YWJhc2UgQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIj4kKE91dERpcikkKFRhcmdldE5hbWUpLnBnZDwvUHJvZmlsZUd1aWRlZERhdGFiYXNlPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdSZWxlYXNlJyI+VXNlTGlua1RpbWVDb2RlR2VuZXJhdGlvbjwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KKyAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uIENvbmRpdGlvbj0iJChTdXBwb3J0UEdPKSBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyI+UEdJbnN0cnVtZW50PC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKFN1cHBvcnRQR08pIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPlBHVXBkYXRlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgogICAgIDwvTGluaz4KKyAgICA8TGliPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24gQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdSZWxlYXNlJyI+dHJ1ZTwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KKyAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uIENvbmRpdGlvbj0iJChTdXBwb3J0UEdPKSBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyI+dHJ1ZTwvTGlua1RpbWVDb2RlR2VuZXJhdGlvbj4KKyAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uIENvbmRpdGlvbj0iJChTdXBwb3J0UEdPKSBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj50cnVlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgIDwvTGliPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQQzsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFB5U291cmNlUGF0aClQQzskKFB5U291cmNlUGF0aClJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JChfRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uKSUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TWlkbD4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4kKF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24pJShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPE1rVHlwTGliQ29tcGF0aWJsZT50cnVlPC9Na1R5cExpYkNvbXBhdGlibGU+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5XaW4zMjwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4kKE91dERpcil3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURsbE5hbWUiPgotICAgICAgPFZhbHVlPiQoUHlEbGxOYW1lKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5dGhvbkV4ZSI+Ci0gICAgICA8VmFsdWU+JChQeXRob25FeGUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iS2lsbFB5dGhvbkV4ZSI+Ci0gICAgICA8VmFsdWU+JChLaWxsUHl0aG9uRXhlKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9ImV4dGVybmFsc0RpciI+Ci0gICAgICA8VmFsdWU+JChleHRlcm5hbHNEaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ic3FsaXRlM0RpciI+Ci0gICAgICA8VmFsdWU+JChzcWxpdGUzRGlyKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9ImJ6MkRpciI+Ci0gICAgICA8VmFsdWU+JChiejJEaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ibHptYURpciI+Ci0gICAgICA8VmFsdWU+JChsem1hRGlyKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Im9wZW5zc2xEaXIiPgotICAgICAgPFZhbHVlPiQob3BlbnNzbERpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0RpciI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0a0Rpcik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0azY0RGlyIj4KLSAgICAgIDxWYWx1ZT4kKHRjbHRrNjREaXIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGtMaWIiPgotICAgICAgPFZhbHVlPiQodGNsdGtMaWIpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGtMaWJEZWJ1ZyI+Ci0gICAgICA8VmFsdWU+JCh0Y2x0a0xpYkRlYnVnKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjRMaWIiPgotICAgICAgPFZhbHVlPiQodGNsdGs2NExpYik8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0azY0TGliRGVidWciPgotICAgICAgPFZhbHVlPiQodGNsdGs2NExpYkRlYnVnKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KKworICA8VGFyZ2V0IE5hbWU9IkdlbmVyYXRlUHl0aG9uTnRSY0giCisgICAgICAgICAgQmVmb3JlVGFyZ2V0cz0iJChNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQpIgorICAgICAgICAgIElucHV0cz0iJChQeVNvdXJjZVBhdGgpSW5jbHVkZVxwYXRjaGxldmVsLmgiCisgICAgICAgICAgT3V0cHV0cz0iJChQeVNvdXJjZVBhdGgpUENccHl0aG9ubnRfcmMkKFB5RGVidWdFeHQpLmgiPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoUHlTb3VyY2VQYXRoKVBDXHB5dGhvbm50X3JjJChQeURlYnVnRXh0KS5oIiBPdmVyd3JpdGU9InRydWUiIEVuY29kaW5nPSJhc2NpaSIKKyAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0nLyogVGhpcyBmaWxlIGNyZWF0ZWQgYnkgcHl0aG9uLnByb3BzIC90OkdlbmVyYXRlUHl0aG9uTnRSY0ggKi8KKyNkZWZpbmUgRklFTEQzICQoRmllbGQzVmFsdWUpCisjZGVmaW5lIE1TX0RMTF9JRCAiJChTeXNXaW5WZXIpIgorI2RlZmluZSBQWVRIT05fRExMX05BTUUgIiQoUHlEbGxOYW1lKS5kbGwiCisnIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEZpbGVXcml0ZXMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpUENccHl0aG9ubnRfcmMkKFB5RGVidWdFeHQpLmgiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgIDwvVGFyZ2V0PgorCisgIDxVc2luZ1Rhc2sgVGFza05hbWU9IktpbGxQeXRob24iIFRhc2tGYWN0b3J5PSJDb2RlVGFza0ZhY3RvcnkiIEFzc2VtYmx5RmlsZT0iJChNU0J1aWxkVG9vbHNQYXRoKVxNaWNyb3NvZnQuQnVpbGQuVGFza3MudjQuMC5kbGwiPgorICAgIDxQYXJhbWV0ZXJHcm91cD4KKyAgICAgIDxGaWxlTmFtZSBSZXF1aXJlZD0idHJ1ZSIgLz4KKyAgICA8L1BhcmFtZXRlckdyb3VwPgorICAgIDxUYXNrPgorICAgICAgPENvZGUgVHlwZT0iRnJhZ21lbnQiIExhbmd1YWdlPSJjcyI+Cis8IVtDREFUQVsKK3N0cmluZyBmdWxsUGF0aCA9IFN5c3RlbS5JTy5QYXRoLkdldEZ1bGxQYXRoKEZpbGVOYW1lKTsKK0xvZy5Mb2dNZXNzYWdlKCJMb29raW5nIGZvciAiICsgZnVsbFBhdGgsIE1lc3NhZ2VJbXBvcnRhbmNlLk5vcm1hbCk7Citmb3JlYWNoIChTeXN0ZW0uRGlhZ25vc3RpY3MuUHJvY2VzcyBwIGluIFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzLkdldFByb2Nlc3NlcygpKSB7CisgICAgdHJ5IHsKKyAgICAgICAgTG9nLkxvZ01lc3NhZ2UoIkZvdW5kIHJ1bm5pbmcgcHJvY2VzczogIiArIHAuTWFpbk1vZHVsZS5GaWxlTmFtZSwgTWVzc2FnZUltcG9ydGFuY2UuTG93KTsKKyAgICAgICAgaWYgKGZ1bGxQYXRoLkVxdWFscyhTeXN0ZW0uSU8uUGF0aC5HZXRGdWxsUGF0aChwLk1haW5Nb2R1bGUuRmlsZU5hbWUpLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkgeworICAgICAgICAgICAgTG9nLkxvZ01lc3NhZ2UoIlRlcm1pbmF0aW5nICIgKyBwLk1haW5Nb2R1bGUuRmlsZU5hbWUsIE1lc3NhZ2VJbXBvcnRhbmNlLkhpZ2gpOworICAgICAgICAgICAgcC5LaWxsKCk7CisgICAgICAgIH0KKyAgICB9IGNhdGNoIHsKKyAgICB9Cit9CitdXT4KKyAgICAgIDwvQ29kZT4KKyAgICA8L1Rhc2s+CisgIDwvVXNpbmdUYXNrPgorICAKKyAgPFRhcmdldCBOYW1lPSJLaWxsUHl0aG9uIiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJyQoS2lsbFB5dGhvbiknID09ICd0cnVlJyI+CisgICAgPE1lc3NhZ2UgVGV4dD0iS2lsbGluZyBhbnkgcnVubmluZyBweXRob24uZXhlIGluc3RhbmNlcy4uLiIgSW1wb3J0YW5jZT0iaGlnaCIgLz4KKyAgICA8S2lsbFB5dGhvbiBGaWxlTmFtZT0iJChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGUiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPCEtLQorICBBIGRlZmF1bHQgdGFyZ2V0IHRvIGhhbmRsZSBtc2J1aWxkIHBjYnVpbGQucHJvaiAvdDpDbGVhbkFsbC4KKyAgCisgIFNvbWUgZXh0ZXJuYWxzIHByb2plY3RzIGRvbid0IHJlc3BvbmQgdG8gL3Q6Q2xlYW4sIHNvIHdlIGludm9rZQorICBDbGVhbkFsbCBvbiB0aGVtIHdoZW4gd2UgcmVhbGx5IHdhbnQgdG8gY2xlYW4gdXAuCisgIC0tPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIiBEZXBlbmRzT25UYXJnZXRzPSJDbGVhbiI+CisgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUHJvamVjdFJlZmVyZW5jZS0+JyUoRnVsbFBhdGgpJykiCisgICAgICAgICAgICAgUHJvcGVydGllcz0iQ29uZmlndXJhdGlvbj0kKENvbmZpZ3VyYXRpb24pO1BsYXRmb3JtPSQoUGxhdGZvcm0pIgorICAgICAgICAgICAgIEJ1aWxkSW5QYXJhbGxlbD0idHJ1ZSIKKyAgICAgICAgICAgICBTdG9wT25GaXJzdEZhaWx1cmU9ImZhbHNlIgorICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCUoRnVsbFBhdGgpKSIKKyAgICAgICAgICAgICBUYXJnZXRzPSJDbGVhbkFsbCIgLz4KKyAgPC9UYXJnZXQ+CisKKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPgorICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSInJChTaWduVG9vbFBhdGgpJyA9PSAnJyBvciAhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290ODEpXGJpblx4ODZcc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+CisgICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QpXGJpblx4ODZcc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+CisgICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcTWljcm9zb2Z0XE1pY3Jvc29mdCBTREtzXFdpbmRvd3NcdjcuMUFASW5zdGFsbGF0aW9uRm9sZGVyKVxCaW5cc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+CisgICAgPF9TaWduQ29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4iJChTaWduVG9vbFBhdGgpIiBzaWduIC9xIC9uICIkKFNpZ25pbmdDZXJ0aWZpY2F0ZSkiIC90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAvZCAiUHl0aG9uICQoUHl0aG9uVmVyc2lvbikiPC9fU2lnbkNvbW1hbmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iX1NpZ25CdWlsZCIgQWZ0ZXJUYXJnZXRzPSJBZnRlckJ1aWxkIiBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+CisgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgIDxFeGVjIENvbW1hbmQ9JyQoX1NpZ25Db21tYW5kKSAiJChUYXJnZXRQYXRoKSIgfHwgJChfU2lnbkNvbW1hbmQpICIkKFRhcmdldFBhdGgpIiB8fCAkKF9TaWduQ29tbWFuZCkgIiQoVGFyZ2V0UGF0aCkiJyBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcyBiL1BDYnVpbGQvcHl0aG9uLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZDZkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMCwwICsxLDE1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+V2luMzI8L1BsYXRmb3JtPgorICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICcnIj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgIDwhLS0KKyAgICBVc2UgdGhlIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbiBvZiBWaXN1YWwgU3R1ZGlvIHRvIGJ1aWxkLiBUbyBvdmVycmlkZQorICAgIHRoaXMgYW5kIGJ1aWxkIHdpdGggYW4gZWFybGllciB2ZXJzaW9uLCBwYXNzICIvcDpQbGF0Zm9ybVRvb2xzZXQ9djEwMCIKKyAgICAoZm9yIGV4YW1wbGUpIHdoZW4gYnVpbGRpbmcuCisgICAgLS0+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTQpJyAhPSAnJyI+djE0MDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAnJyBhbmQgJyQoVkNUYXJnZXRzUGF0aDEyKScgIT0gJyciPnYxMjA8L1BsYXRmb3JtVG9vbHNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxMSknICE9ICcnIj52MTEwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTApJyAhPSAnJyI+djEwMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIAorICAgIDwhLS0KKyAgICBDb252aW5jaW5nIE1TVkMvTVNCdWlsZCB0byBwcmVmZXIgb3VyIHBsYXRmb3JtIG5hbWVzIGlzIHRvbyBkaWZmaWN1bHQsCisgICAgc28gd2UgZGVmaW5lIG91ciBvd24gY29uc3RhbnQgQXJjaE5hbWUgYW5kIHVzZSB3aGVyZXZlciB3ZSBuZWVkIGl0LgorICAgIC0tPgorICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJycgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5hbWQ2NDwvQXJjaE5hbWU+CisgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyI+d2luMzI8L0FyY2hOYW1lPgorICAgIDxBcmNoTmFtZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKEFyY2hOYW1lKS1wZ288L0FyY2hOYW1lPgorICAgIAorICAgIDwhLS0gUm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgLS0+CisgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IickKFB5U291cmNlUGF0aCknID09ICcnIj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlwpKTwvUHlTb3VyY2VQYXRoPgorICAgIDxQeVNvdXJjZVBhdGggQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKFB5U291cmNlUGF0aCkpIj4kKFB5U291cmNlUGF0aClcPC9QeVNvdXJjZVBhdGg+CisgICAgCisgICAgPCEtLSBEaXJlY3Rvcnkgd2hlcmUgYnVpbGQgb3V0cHV0cyBhcmUgcHV0IC0tPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSInJChQeUJ1aWxkUGF0aCknID09ICcnIj4kKFB5U291cmNlUGF0aClQQ0J1aWxkXCQoQXJjaE5hbWUpXDwvQnVpbGRQYXRoPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSInJChQeUJ1aWxkUGF0aCknICE9ICcnIj4kKFB5QnVpbGRQYXRoKTwvQnVpbGRQYXRoPgorICAgIDxCdWlsZFBhdGggQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKEJ1aWxkUGF0aCkpIj4kKEJ1aWxkUGF0aClcPC9CdWlsZFBhdGg+CisgICAgCisgICAgPCEtLSBEaXJlY3RvcmllcyBvZiBleHRlcm5hbCBwcm9qZWN0cy4gdGNsdGsgaXMgaGFuZGxlZCBpbiB0Y2x0ay5wcm9wcyAtLT4KKyAgICA8RXh0ZXJuYWxzRGlyPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoYCQoUHlTb3VyY2VQYXRoKWV4dGVybmFsc1xgKSk8L0V4dGVybmFsc0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy44LjExLjBcPC9zcWxpdGUzRGlyPgorICAgIDxiejJEaXI+JChFeHRlcm5hbHNEaXIpYnppcDItMS4wLjZcPC9iejJEaXI+CisgICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4wLjVcPC9sem1hRGlyPgorICAgIDxvcGVuc3NsRGlyPiQoRXh0ZXJuYWxzRGlyKW9wZW5zc2wtMS4wLjJkXDwvb3BlbnNzbERpcj4KKyAgICA8bmFzbURpcj4kKEV4dGVybmFsc0RpcilcbmFzbS0yLjExLjA2XDwvbmFzbURpcj4KKyAgICAKKyAgICA8IS0tIFN1ZmZpeCBmb3IgYWxsIGJpbmFyaWVzIHdoZW4gYnVpbGRpbmcgZm9yIGRlYnVnIC0tPgorICAgIDxQeURlYnVnRXh0IENvbmRpdGlvbj0iJyQoUHlEZWJ1Z0V4dCknID09ICcnIGFuZCAkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPl9kPC9QeURlYnVnRXh0PgorICAgIAorICAgIDwhLS0gRnVsbCBwYXRoIG9mIHRoZSByZXN1bHRpbmcgcHl0aG9uLmV4ZSBiaW5hcnkgLS0+CisgICAgPFB5dGhvbkV4ZSBDb25kaXRpb249IickKFB5dGhvbkV4ZSknID09ICcnIj4kKEJ1aWxkUGF0aClweXRob24kKFB5RGVidWdFeHQpLmV4ZTwvUHl0aG9uRXhlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKE92ZXJyaWRlVmVyc2lvbiknID09ICcnIj4KKyAgICA8IS0tCisgICAgUmVhZCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gSW5jbHVkZVxwYXRjaGxldmVsLmguIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgc2V0OgorICAgIAorICAgICAgICBNYWpvclZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzMnIGluICczLjUuMmExJworICAgICAgICBNaW5vclZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzUnIGluICczLjUuMmExJworICAgICAgICBNaWNyb1ZlcnNpb25OdW1iZXIgIC0gICB0aGUgJzInIGluICczLjUuMmExJworICAgICAgICBSZWxlYXNlU2VyaWFsICAgICAgIC0gICB0aGUgJzEnIGluICczLjUuMmExJworICAgICAgICBSZWxlYXNlTGV2ZWxOYW1lICAgIC0gICB0aGUgJ2ExJyBpbiAnMy41LjJhMScKKyAgICAgICAgUHl0aG9uVmVyc2lvbk51bWJlciAtICAgJzMuNS4yJyBmb3IgJzMuNS4yYTEnCisgICAgICAgIFB5dGhvblZlcnNpb24gICAgICAgLSAgICczLjUuMmExJworICAgICAgICBQeXRob25WZXJzaW9uSGV4ICAgIC0gICAweDAzMDUwMmExIGZvciAnMy41LjJhMScKKyAgICAgICAgUmVsZWFzZUxldmVsTnVtYmVyICAtICAgMTAgZm9yIGFscGhhLCAxMSBmb3IgYmV0YSwgMTIgZm9yIFJDIChnYW1tYSksIGFuZCAxNSBmb3IgZmluYWwKKyAgICAgICAgRmllbGQzVmFsdWUgICAgICAgICAtICAgMjEwMSBmb3IgJzMuNS4yYTEnICg9PSAxMDAwKjIgKyAxMCoxMCAoJ2EnKSArIDEpCisgICAgLS0+CisgICAgPF9QYXRjaExldmVsQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KGAkKFB5U291cmNlUGF0aClJbmNsdWRlXHBhdGNobGV2ZWwuaGApKTwvX1BhdGNoTGV2ZWxDb250ZW50PgorICAgIDxNYWpvclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUFKT1JfVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWFqb3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaW5vclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUlOT1JfVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWlub3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaWNyb1ZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfTUlDUk9fVkVSU0lPTlxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvTWljcm9WZXJzaW9uTnVtYmVyPgorICAgIDxfUmVsZWFzZUxldmVsPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoX1BhdGNoTGV2ZWxDb250ZW50KSwgYGRlZmluZVxzK1BZX1JFTEVBU0VfTEVWRUxccytQWV9SRUxFQVNFX0xFVkVMXyhcdyspYCkuR3JvdXBzWzFdLlZhbHVlKTwvX1JlbGVhc2VMZXZlbD4KKyAgICA8UmVsZWFzZVNlcmlhbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKF9QYXRjaExldmVsQ29udGVudCksIGBkZWZpbmVccytQWV9SRUxFQVNFX1NFUklBTFxzKyhcZCspYCkuR3JvdXBzWzFdLlZhbHVlKTwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyPjE1PC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0FMUEhBJyI+MTA8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnQkVUQSciPjExPC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0dBTU1BJyI+MTI8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTmFtZSBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0FMUEhBJyI+YSQoUmVsZWFzZVNlcmlhbCk8L1JlbGVhc2VMZXZlbE5hbWU+CisgICAgPFJlbGVhc2VMZXZlbE5hbWUgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdCRVRBJyI+YiQoUmVsZWFzZVNlcmlhbCk8L1JlbGVhc2VMZXZlbE5hbWU+CisgICAgPFJlbGVhc2VMZXZlbE5hbWUgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdHQU1NQSciPnJjJChSZWxlYXNlU2VyaWFsKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChPdmVycmlkZVZlcnNpb24pJyAhPSAnJyI+CisgICAgPCEtLQorICAgIE92ZXJyaWRlIHRoZSB2ZXJzaW9uIG51bWJlciB3aGVuIGJ1aWxkaW5nIGJ5IHNwZWNpZnlpbmcgT3ZlcnJpZGVWZXJzaW9uLgorICAgIEZvciBleGFtcGxlOgorICAgIAorICAgICAgICBQQ0J1aWxkXGJ1aWxkLmJhdCAiL3A6T3ZlcnJpZGVWZXJzaW9uPTMuNS4yYTEiCisgICAgCisgICAgVXNlIHRoZSAtViBvcHRpb24gdG8gY2hlY2sgeW91ciB2ZXJzaW9uIGlzIHZhbGlkOgorICAgIAorICAgICAgICBQQ0J1aWxkXGJ1aWxkLmJhdCAtViAiL3A6T3ZlcnJpZGVWZXJzaW9uPTMuNS4yYTEiCisgICAgICAgICAgUHl0aG9uVmVyc2lvbk51bWJlcjogMy41LjIKKyAgICAgICAgICBQeXRob25WZXJzaW9uOiAgICAgICAzLjUuMmExCisgICAgICAgICAgUHl0aG9uVmVyc2lvbkhleDogICAgMHgwMzA1MDJBMQorICAgICAgICAgIEZpZWxkM1ZhbHVlOiAgICAgICAgIDIxMDEKKyAgICAKKyAgICBOb3RlIHRoYXQgdGhpcyBvbmx5IGFmZmVjdHMgdGhlIHZlcnNpb24gbnVtYmVycyBlbWJlZGRlZCBpbiByZXNvdXJjZXMgYW5kCisgICAgaW5zdGFsbGVycywgYnV0IG5vdCBzeXMudmVyc2lvbi4KKyAgICAtLT4KKyAgICA8TWFqb3JWZXJzaW9uTnVtYmVyPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoT3ZlcnJpZGVWZXJzaW9uKSwgYChcZCspXC4oXGQrKVwuKFxkKykoKGF8YnxyYykoXGQpKT9gKS5Hcm91cHNbMV0uVmFsdWUpPC9NYWpvclZlcnNpb25OdW1iZXI+CisgICAgPE1pbm9yVmVyc2lvbk51bWJlcj4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzJdLlZhbHVlKTwvTWlub3JWZXJzaW9uTnVtYmVyPgorICAgIDxNaWNyb1ZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChPdmVycmlkZVZlcnNpb24pLCBgKFxkKylcLihcZCspXC4oXGQrKSgoYXxifHJjKShcZCkpP2ApLkdyb3Vwc1szXS5WYWx1ZSk8L01pY3JvVmVyc2lvbk51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTmFtZT4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzRdLlZhbHVlKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgICA8X1JlbGVhc2VMZXZlbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzVdLlZhbHVlKTwvX1JlbGVhc2VMZXZlbD4KKyAgICA8UmVsZWFzZVNlcmlhbD4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzZdLlZhbHVlKTwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZVNlcmlhbCBDb25kaXRpb249IickKFJlbGVhc2VTZXJpYWwpJyA9PSAnJyI+MDwvUmVsZWFzZVNlcmlhbD4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyPjE1PC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ2EnIj4xMDwvUmVsZWFzZUxldmVsTnVtYmVyPgorICAgIDxSZWxlYXNlTGV2ZWxOdW1iZXIgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdiJyI+MTE8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAncmMnIj4xMjwvUmVsZWFzZUxldmVsTnVtYmVyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8UHl0aG9uVmVyc2lvbk51bWJlcj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvUHl0aG9uVmVyc2lvbk51bWJlcj4KKyAgICA8UHl0aG9uVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKSQoUmVsZWFzZUxldmVsTmFtZSk8L1B5dGhvblZlcnNpb24+CisgICAgPFB5dGhvblZlcnNpb25IZXg+JChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoTWFqb3JWZXJzaW9uTnVtYmVyKSwgMTY3NzcyMTYpKSwKKyAgICAgICAgJChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pbm9yVmVyc2lvbk51bWJlciksIDY1NTM2KSksCisgICAgICAgICAgICAkKFttc2J1aWxkXTo6Qml0d2lzZU9yKAorICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pY3JvVmVyc2lvbk51bWJlciksIDI1NikpLAorICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpCaXR3aXNlT3IoCisgICAgICAgICAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKFJlbGVhc2VMZXZlbE51bWJlciksIDE2KSksCisgICAgICAgICAgICAgICAgICAgICQoUmVsZWFzZVNlcmlhbCkKKyAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgKSkKKyAgICAgICAgKSkKKyAgICApKTwvUHl0aG9uVmVyc2lvbkhleD4KKyAgICA8RmllbGQzVmFsdWU+JChbbXNidWlsZF06OkFkZCgKKyAgICAgICAgJChSZWxlYXNlU2VyaWFsKSwKKyAgICAgICAgJChbbXNidWlsZF06OkFkZCgKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKFJlbGVhc2VMZXZlbE51bWJlciksIDEwKSksCisgICAgICAgICAgICAkKFttc2J1aWxkXTo6TXVsdGlwbHkoJChNaWNyb1ZlcnNpb25OdW1iZXIpLCAxMDAwKSkKKyAgICAgICAgKSkKKyAgICApKTwvRmllbGQzVmFsdWU+CisgICAgCisgICAgPCEtLSBUaGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5nIHB5dGhvblhZLmRsbCAod2l0aG91dCB0aGUgZXh0ZW5zaW9uKSAtLT4KKyAgICA8UHlEbGxOYW1lPnB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlEZWJ1Z0V4dCk8L1B5RGxsTmFtZT4KKworICAgIDwhLS0gVGhlIHZlcnNpb24gYW5kIHBsYXRmb3JtIHRhZyB0byBpbmNsdWRlIGluIC5weWQgZmlsZW5hbWVzIC0tPgorICAgIDxQeWRUYWcgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAnV2luMzInIG9yICQoUGxhdGZvcm0pID09ICd4ODYnIj4uY3AkKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlciktd2luMzI8L1B5ZFRhZz4KKyAgICA8UHlkVGFnIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPi5jcCQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKS13aW5fYW1kNjQ8L1B5ZFRhZz4KKyAgICAKKyAgICA8IS0tIFRoZSB2ZXJzaW9uIG51bWJlciBmb3Igc3lzLndpbnZlciAtLT4KKyAgICA8U3lzV2luVmVyPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcik8L1N5c1dpblZlcj4KKyAgICA8U3lzV2luVmVyIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ1dpbjMyJyBvciAkKFBsYXRmb3JtKSA9PSAneDg2JyI+JChTeXNXaW5WZXIpLTMyPC9TeXNXaW5WZXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDwhLS0gRGlzcGxheXMgdGhlIGNhbGN1bGF0ZWQgdmVyc2lvbiBpbmZvIC0tPgorICA8VGFyZ2V0IE5hbWU9IlNob3dWZXJzaW9uSW5mbyI+CisgICAgPE1lc3NhZ2UgSW1wb3J0YW5jZT0iaGlnaCIgVGV4dD0iUHl0aG9uVmVyc2lvbk51bWJlcjogJChQeXRob25WZXJzaW9uTnVtYmVyKSIgLz4KKyAgICA8TWVzc2FnZSBJbXBvcnRhbmNlPSJoaWdoIiBUZXh0PSJQeXRob25WZXJzaW9uOiAgICAgICAkKFB5dGhvblZlcnNpb24pIiAvPgorICAgIDxNZXNzYWdlIEltcG9ydGFuY2U9ImhpZ2giIFRleHQ9IlB5dGhvblZlcnNpb25IZXg6ICAgIDB4JChbU3lzdGVtLlVJbnQzMl06OlBhcnNlKCQoUHl0aG9uVmVyc2lvbkhleCkpLlRvU3RyaW5nKGBYMDhgKSkiIC8+CisgICAgPE1lc3NhZ2UgSW1wb3J0YW5jZT0iaGlnaCIgVGV4dD0iRmllbGQzVmFsdWU6ICAgICAgICAgJChGaWVsZDNWYWx1ZSkiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKaW5kZXggYmQxMjYyNC4uMGFlNDg4MiAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24udmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCkBAIC0zNiw0NCArMzYsMTEgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+e0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX08L1Byb2plY3RHdWlkPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KQEAgLTgxLDI2OCArNDgsMjQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxCcm93c2VJbmZvcm1hdGlvbj50cnVlPC9Ccm93c2VJbmZvcm1hdGlvbj4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbl9kLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+NDE5NDMwNDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHljb24uaWNvIiAvPgogICA8L0l0ZW1Hcm91cD4KQEAgLTM1MCw3ICs3Myw3IEBACiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHl0aG9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xweXRob24uYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KQEAgLTM2MSw0ICs4NCwxOSBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgorICA8VGFyZ2V0IE5hbWU9IkdlbmVyYXRlUHl0aG9uQmF0IiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9Db250ZW50PkByZW0gVGhpcyBzY3JpcHQgaW52b2tlcyB0aGUgbW9zdCByZWNlbnRseSBidWlsdCBQeXRob24gd2l0aCBhbGwgYXJndW1lbnRzCitAcmVtIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBpbnRlcnByZXRlci4gIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlCitAcmVtIGJ1aWxkIHByb2Nlc3MgYW5kIGFueSBjaGFuZ2VzICp3aWxsKiBiZSB0aHJvd24gYXdheSBieSB0aGUgbmV4dAorQHJlbSByZWJ1aWxkLgorQHJlbSBUaGlzIGlzIG9ubHkgbWVhbnQgYXMgYSBjb252ZW5pZW5jZSBmb3IgZGV2ZWxvcGluZyBDUHl0aG9uCitAcmVtIGFuZCB1c2luZyBpdCBvdXRzaWRlIG9mIHRoYXQgY29udGV4dCBpcyBpbGwtYWR2aXNlZC4KK0BlY2hvIFJ1bm5pbmcgJChDb25maWd1cmF0aW9uKV58JChQbGF0Zm9ybSkgaW50ZXJwcmV0ZXIuLi4KK0AiJChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGUiICUqCis8L19Db250ZW50PgorICAgICAgPF9FeGlzdGluZ0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoUHlTb3VyY2VQYXRoKXB5dGhvbi5iYXQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCcpKTwvX0V4aXN0aW5nQ29udGVudD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCIgTGluZXM9IiQoX0NvbnRlbnQpIiBPdmVyd3JpdGU9InRydWUiIENvbmRpdGlvbj0iJyQoX0NvbnRlbnQpJyAhPSAnJChfRXhpc3RpbmdDb250ZW50KSciIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycwppbmRleCBlNDkwNmE0Li4wNjYyYTRlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0xOSw4ICsxOSw4IEBACiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyI+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQcm9ncmFtc1xweXRob24uYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCmluZGV4IGJjOGZmMzEuLjE4ZmY0YTggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCkBAIC0xLDYgKzEsMTQgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CiAgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CiAgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgpAQCAtMzAsMTQ0ICszOCw0MyBAQAogICAgIDxQcm9qZWN0R3VpZD57ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+cHl0aG9uM2RsbDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFRhcmdldE5hbWU+cHl0aG9uMzwvVGFyZ2V0TmFtZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPF9NYWNoaW5lPlg4NjwvX01hY2hpbmU+CisgICAgPF9NYWNoaW5lIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPlg2NDwvX01hY2hpbmU+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxCdWZmZXJTZWN1cml0eUNoZWNrPmZhbHNlPC9CdWZmZXJTZWN1cml0eUNoZWNrPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE1vZHVsZURlZmluaXRpb25GaWxlIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSAhPSAnRGVidWcnIj4kKFB5U291cmNlUGF0aClQQ1xweXRob24zLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+CisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPiQoSW50RGlyKXB5dGhvbjNfZC5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPgorICAgICAgPEVudHJ5UG9pbnRTeW1ib2w+RGxsTWFpbjwvRW50cnlQb2ludFN5bWJvbD4KKyAgICA8L0xpbms+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPmxpYiAvbm9sb2dvIC9kZWY6IiQoSW50RGlyKXB5dGhvbjNzdHViLmRlZiIgL291dDoiJChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliIiAvTUFDSElORTokKF9NYWNoaW5lKTwvQ29tbWFuZD4KKyAgICAgIDxNZXNzYWdlPlJlYnVpbGRpbmcgJChUYXJnZXROYW1lKXN0dWIubGliPC9NZXNzYWdlPgorICAgICAgPE91dHB1dHM+JChPdXREaXIpJChUYXJnZXROYW1lKXN0dWIubGliPC9PdXRwdXRzPgorICAgIDwvUHJlTGlua0V2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHl0aG9uMy5kZWYiIC8+CkBAIC0xODEsNCArODgsNTUgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQnVpbGRQeXRob24zX2REZWYiIEJlZm9yZVRhcmdldHM9IkJ1aWxkU3R1YkRlZiIgSW5wdXRzPSIuLlxQQ1xweXRob24zLmRlZiIgT3V0cHV0cz0iJChJbnREaXIpcHl0aG9uM19kLmRlZiIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8X0RlZkxpbmVzIFJlbW92ZT0iQChfRGVmTGluZXMpIiAvPgorICAgICAgPF9MaW5lcyBSZW1vdmU9IkAoX0xpbmVzKSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8UmVhZExpbmVzRnJvbUZpbGUgRmlsZT0iLi5cUENccHl0aG9uMy5kZWYiPgorICAgICAgPE91dHB1dCBUYXNrUGFyYW1ldGVyPSJMaW5lcyIgSXRlbU5hbWU9Il9EZWZMaW5lcyIgLz4KKyAgICA8L1JlYWRMaW5lc0Zyb21GaWxlPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9QYXR0ZXJuMT4oPXB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSlcLjwvX1BhdHRlcm4xPgorICAgICAgPF9TdWIxPiQxX2QuPC9fU3ViMT4KKyAgICAgIDxfUGF0dGVybjI+InB5dGhvbjMiPC9fUGF0dGVybjI+CisgICAgICA8X1N1YjI+InB5dGhvbjNfZCI8L19TdWIyPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPF9MaW5lcyBJbmNsdWRlPSJAKF9EZWZMaW5lcykiPgorICAgICAgICA8TmV3PiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06OlJlcGxhY2UoJChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6UmVwbGFjZShgJShJZGVudGl0eSlgLCBgJChfUGF0dGVybjEpYCwgYCQoX1N1YjEpYCkpLCBgJChfUGF0dGVybjIpYCwgYCQoX1N1YjIpYCkpPC9OZXc+CisgICAgICA8L19MaW5lcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50RGlyKXB5dGhvbjNfZC5kZWYiIExpbmVzPSJAKF9MaW5lcy0+JyUoTmV3KScpIiBPdmVyd3JpdGU9InRydWUiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPFRhcmdldCBOYW1lPSJCdWlsZFN0dWJEZWYiIEJlZm9yZVRhcmdldHM9IlByZUxpbmtFdmVudCIgSW5wdXRzPSIuLlxQQ1xweXRob24zLmRlZiIgT3V0cHV0cz0iJChJbnREaXIpcHl0aG9uM3N0dWIuZGVmIj4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPF9EZWZMaW5lcyBSZW1vdmU9IkAoX0RlZkxpbmVzKSIgLz4KKyAgICAgIDxfTGluZXMgUmVtb3ZlPSJAKF9MaW5lcykiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPFJlYWRMaW5lc0Zyb21GaWxlIEZpbGU9Ii4uXFBDXHB5dGhvbjMuZGVmIj4KKyAgICAgIDxPdXRwdXQgVGFza1BhcmFtZXRlcj0iTGluZXMiIEl0ZW1OYW1lPSJfRGVmTGluZXMiIC8+CisgICAgPC9SZWFkTGluZXNGcm9tRmlsZT4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgIDxfUGF0dGVybj5eW1x3Ll0rPS4rP1wuKFteIF0rKS4qJDwvX1BhdHRlcm4+CisgICAgICA8X1N1Yj4kMTwvX1N1Yj4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxfTGluZXMgSW5jbHVkZT0iRVhQT1JUUyIgLz4KKyAgICAgIDxfU3ltYm9scyBJbmNsdWRlPSJAKF9EZWZMaW5lcykiIENvbmRpdGlvbj0iJChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6SXNNYXRjaChgJShJZGVudGl0eSlgLCBgJChfUGF0dGVybilgKSkiPgorICAgICAgICA8U3ltYm9sPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06OlJlcGxhY2UoYCUoSWRlbnRpdHkpYCwgYCQoX1BhdHRlcm4pYCwgYCQoX1N1YilgKSk8L1N5bWJvbD4KKyAgICAgIDwvX1N5bWJvbHM+CisgICAgICA8X0xpbmVzIEluY2x1ZGU9IkAoX1N5bWJvbHMtPiclKFN5bWJvbCknKSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50RGlyKXB5dGhvbjNzdHViLmRlZiIgTGluZXM9IkAoX0xpbmVzKSIgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICA8L1RhcmdldD4KKyAgPFRhcmdldCBOYW1lPSJfQ2xlYW5TdHViRGVmIiBCZWZvcmVUYXJnZXRzPSJDb3JlQ2xlYW4iPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8Q2xlYW4gSW5jbHVkZT0iJChJbnREaXIpcHl0aG9uM3N0dWIuZGVmIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICA8L1RhcmdldD4KIDwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCmluZGV4IDYwMjFjZDcuLjljYmU4YjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0zOCw0MDUgKzM4LDQxIEBACiAgICAgPFByb2plY3RHdWlkPntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5weXRob25jb3JlPC9Sb290TmFtZXNwYWNlPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxLaWxsUHl0aG9uPnRydWU8L0tpbGxQeXRob24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+Ci0gICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgotICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KLSAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkQmVmb3JlVGFyZ2V0cz5MaW5rPC9DdXN0b21CdWlsZEJlZm9yZVRhcmdldHM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFB5U291cmNlUGF0aClQeXRob247JChQeVNvdXJjZVBhdGgpTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7TVNfRExMX0lEPSIkKFN5c1dpblZlcikiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxQcmVMaW5rRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KLSAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSI8L0NvbW1hbmQ+Ci0gICAgPC9QcmVMaW5rRXZlbnQ+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8UHJlTGlua0V2ZW50PgotICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+Ci0gICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKVwiPC9Db21tYW5kPgotICAgIDwvUHJlTGlua0V2ZW50PgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICAgIDxQcmVCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+JChLaWxsUHl0aG9uRXhlKQotSUYgJUVSUk9STEVWRUwlIE5FUSAwICgKLSAgICBlY2hvIGtpbGxfcHl0aG9uOiB3YXJebmluZzogY291bGQgbm90IGtpbGwgcnVubmluZyBQeXRob25zLCBleGl0IGNvZGUgJUVSUk9STEVWRUwlCi0gICAgZXhpdCAvYiAwCi0pPC9Db21tYW5kPgotICAgIDwvUHJlQnVpbGRFdmVudD4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxNZXNzYWdlPktpbGxpbmcgYW55IHJ1bm5pbmcgJChQeXRob25FeGUpIGluc3RhbmNlcy4uLjwvTWVzc2FnZT4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPFByZUxpbmtFdmVudD4KLSAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgotICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcilcIjwvQ29tbWFuZD4KLSAgICA8L1ByZUxpbmtFdmVudD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgICA8UHJlQnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPiQoS2lsbFB5dGhvbkV4ZSkKLUlGICVFUlJPUkxFVkVMJSBORVEgMCAoCi0gICAgZWNobyBraWxsX3B5dGhvbjogd2FyXm5pbmc6IGNvdWxkIG5vdCBraWxsIHJ1bm5pbmcgUHl0aG9ucywgZXhpdCBjb2RlICVFUlJPUkxFVkVMJQotICAgIGV4aXQgL2IgMAotKTwvQ29tbWFuZD4KLSAgICA8L1ByZUJ1aWxkRXZlbnQ+Ci0gICAgPFByZUJ1aWxkRXZlbnQ+Ci0gICAgICA8TWVzc2FnZT5LaWxsaW5nIGFueSBydW5uaW5nICQoUHl0aG9uRXhlKSBpbnN0YW5jZXMuLi48L01lc3NhZ2U+Ci0gICAgPC9QcmVCdWlsZEV2ZW50PgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFic3RyYWN0LmgiIC8+CkBAIC00ODYsNiArMTIyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbm9kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvZGljdG9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvcGNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiIC8+CkBAIC01MDIsNiArMTM5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlleHBhdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWZwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWdldG9wdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWxpZmVjeWNsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hdGguaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWFjcm8uaCIgLz4KQEAgLTUxMCw2ICsxNDgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyaGV4LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR0b2EuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24uaCIgLz4KQEAgLTY3NSw2ICszMTQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9kaWN0b2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNldG9iamVjdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIiAvPgpAQCAtNjk2LDkgKzMzNiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2V0b2suYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnJlZy5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcY29uZmlnLmMiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xkbF9udC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZ2V0cGF0aHAuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5aGFzaC5jIiAvPgpAQCAtNzM0LDEwICszNzQsMTIgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWFyZW5hLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHljdHlwZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5ZnBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlsaWZlY3ljbGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweW1hdGguYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRpbWUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0YXRlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJjbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmhleC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RydG9kLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRvYS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyIgLz4KQEAgLTc0OSwyMyArMzkxLDMwIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cdHJhY2ViYWNrLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZGxfbnQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ia2lsbF9weXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57NmRlMTA3NDQtZTM5Ni00MGE1LWI0ZTItMWI2OWFhN2M4ZDMxfTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Im1ha2VfYnVpbGRpbmZvLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2M3M2YwZWMxLTM1OGItNDE3Ny05NDBmLTA4NDZhYzhiMDRjZH08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+CisgIDxUYXJnZXQgTmFtZT0iX0dldEJ1aWxkSW5mbyIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KKyAgICA8RXhlYyBDb21tYW5kPSJoZyBpZCAtYiAmZ3Q7ICZxdW90OyQoSW50RGlyKWhnYnJhbmNoLnR4dCZxdW90OyIgQ29udGludWVPbkVycm9yPSJ0cnVlIiAvPgorICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC1pICZndDsgJnF1b3Q7JChJbnREaXIpaGd2ZXJzaW9uLnR4dCZxdW90OyIgQ29udGludWVPbkVycm9yPSJ0cnVlIiAvPgorICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC10ICZndDsgJnF1b3Q7JChJbnREaXIpaGd0YWcudHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8SGdCcmFuY2ggQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhnYnJhbmNoLnR4dCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpciloZ2JyYW5jaC50eHQnKS5UcmltKCkpPC9IZ0JyYW5jaD4KKyAgICAgIDxIZ1ZlcnNpb24gQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhndmVyc2lvbi50eHQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpaGd2ZXJzaW9uLnR4dCcpLlRyaW0oKSk8L0hnVmVyc2lvbj4KKyAgICAgIDxIZ1RhZyBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaGd0YWcudHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWhndGFnLnR4dCcpLlRyaW0oKSk8L0hnVGFnPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jIj4KKyAgICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPkhHVkVSU0lPTj0iJChIZ1ZlcnNpb24pIjtIR1RBRz0iJChIZ1RhZykiO0hHQlJBTkNIPSIkKEhnQnJhbmNoKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPC9DbENvbXBpbGU+CisgICAgPC9JdGVtR3JvdXA+CisgIDwvVGFyZ2V0PgorICA8VGFyZ2V0IE5hbWU9Il9XYXJuQWJvdXRUb29sc2V0IiBCZWZvcmVUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpICE9ICd2MTQwJyI+CisgICAgPFdhcm5pbmcgVGV4dD0iVG9vbHNldCAkKFBsYXRmb3JtVG9vbHNldCkgaXMgbm90IHVzZWQgZm9yIG9mZmljaWFsIGJ1aWxkcy4gWW91ciBidWlsZCBtYXkgaGF2ZSBlcnJvcnMgb3IgaW5jb21wYXRpYmlsaXRpZXMuIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA4YzY1MjQ3Li4zYjI3NWJiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTIxNiw2ICsyMTYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWdldG9wdC5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWxpZmVjeWNsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hdGguaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTI0MCw2ICsyNDMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIj4KICAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cmhleC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkdG9hLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC04OTAsNiArODk2LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWZwZS5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlsaWZlY3ljbGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5bWF0aC5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05MDIsNiArOTExLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmNtcC5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJoZXguYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5c3RydG9kLmMiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTk1Myw2ICs5NjUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xoYXNodGFibGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIj4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qIGIvUENidWlsZC9weXRob253LnZjeHByb2oKaW5kZXggMTIxNDU2OS4uYjBhMjA5YSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob253LnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTM2LDI5NiArMzYsMzAgQEAKICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+e0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX08L1Byb2plY3RHdWlkPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbndfZC5leGU8L091dHB1dEZpbGU+CiAgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbndfZC5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvaiBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvagppbmRleCA5NmVhNDIxLi44ODJmMWM0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2oKKysrIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qCkBAIC0zNywyMDAgKzM3LDM3IEBACiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KICAgICA8UHJvamVjdEd1aWQ+ezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn08L1Byb2plY3RHdWlkPgogICAgIDxSb290TmFtZXNwYWNlPnB5d2xhdW5jaGVyPC9Sb290TmFtZXNwYWNlPgorICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgogICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8TWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PkNsQ29tcGlsZTwvTWFrZVZlcnNpb25JbmZvQmVmb3JlVGFyZ2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KICAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weXdfZDwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxUYXJnZXROYW1lPnB5d19kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRztfV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7X1dJTjY0O19NX1g2NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgpAQCAtMjQwLDExICs3Nyw2IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVhZG1lLnR4dCBiL1BDYnVpbGQvcmVhZG1lLnR4dAppbmRleCBhM2M3ZmJkLi4wOWE5OTZmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3JlYWRtZS50eHQKKysrIGIvUENidWlsZC9yZWFkbWUudHh0CkBAIC0xLDQ5ICsxLDU0IEBACitRdWljayBTdGFydCBHdWlkZQ0KKy0tLS0tLS0tLS0tLS0tLS0tDQorDQorMS4gIEluc3RhbGwgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxNSwgYW55IGVkaXRpb24uDQorMi4gIEluc3RhbGwgU3VidmVyc2lvbiwgYW5kIG1ha2Ugc3VyZSAnc3ZuLmV4ZScgaXMgb24geW91ciBQQVRILg0KKzMuICBSdW4gImJ1aWxkLmJhdCAtZSIgdG8gYnVpbGQgUHl0aG9uIGluIDMyLWJpdCBSZWxlYXNlIGNvbmZpZ3VyYXRpb24uDQorNC4gIChPcHRpb25hbCwgYnV0IHJlY29tbWVuZGVkKSBSdW4gdGhlIHRlc3Qgc3VpdGUgd2l0aCAicnQuYmF0IC1xIi4NCisNCisNCiBCdWlsZGluZyBQeXRob24gdXNpbmcgTWljcm9zb2Z0IFZpc3VhbCBDKysNCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCiBUaGlzIGRpcmVjdG9yeSBpcyB1c2VkIHRvIGJ1aWxkIENQeXRob24gZm9yIE1pY3Jvc29mdCBXaW5kb3dzIE5UIHZlcnNpb24NCi01LjEgb3IgaGlnaGVyIChXaW5kb3dzIFhQLCBXaW5kb3dzIFNlcnZlciAyMDAzLCBvciBsYXRlcikgb24gMzIgYW5kIDY0DQorNi4wIG9yIGhpZ2hlciAoV2luZG93cyBWaXN0YSwgV2luZG93cyBTZXJ2ZXIgMjAwOCwgb3IgbGF0ZXIpIG9uIDMyIGFuZCA2NA0KIGJpdCBwbGF0Zm9ybXMuICBVc2luZyB0aGlzIGRpcmVjdG9yeSByZXF1aXJlcyBhbiBpbnN0YWxsYXRpb24gb2YNCi1NaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDEwIChNU1ZDIDEwLjApIG9mIGFueSBlZGl0aW9uLiAgVGhlIHNwZWNpZmljDQorTWljcm9zb2Z0IFZpc3VhbCBDKysgMjAxNSAoTVNWQyAxNC4wKSBvZiBhbnkgZWRpdGlvbi4gIFRoZSBzcGVjaWZpYw0KIHJlcXVpcmVtZW50cyBhcmUgYXMgZm9sbG93czoNCiANCi1WaXN1YWwgQysrIDIwMTAgRXhwcmVzcyBFZGl0aW9uDQotICAgIFJlcXVpcmVkIGZvciBidWlsZGluZyAzMi1iaXQgRGVidWcgYW5kIFJlbGVhc2UgY29uZmlndXJhdGlvbiBidWlsZHMuDQorVmlzdWFsIFN0dWRpbyBFeHByZXNzIDIwMTUgZm9yIERlc2t0b3ANCitWaXN1YWwgU3R1ZGlvIFByb2Zlc3Npb25hbCAyMDE1DQorICAgIEVpdGhlciBlZGl0aW9uIGlzIHN1ZmZpY2llbnQgZm9yIGJ1aWxkaW5nIGFsbCBjb25maWd1cmF0aW9ucyBleGNlcHQNCisgICAgZm9yIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbi4NCiAgICAgVGhlIFB5dGhvbiBidWlsZCBzb2x1dGlvbiBwY2J1aWxkLnNsbiBtYWtlcyB1c2Ugb2YgU29sdXRpb24gRm9sZGVycywNCiAgICAgd2hpY2ggdGhpcyBlZGl0aW9uIGRvZXMgbm90IHN1cHBvcnQuICBBbnkgdGltZSBwY2J1aWxkLnNsbiBpcyBvcGVuZWQNCi0gICAgb3IgcmVsb2FkZWQgYnkgVmlzdWFsIEMrKywgYSB3YXJuaW5nIGFib3V0IFNvbHV0aW9uIEZvbGRlcnMgd2lsbCBiZQ0KLSAgICBkaXNwbGF5ZWQgd2hpY2ggY2FuIGJlIHNhZmVseSBkaXNtaXNzZWQgd2l0aCBubyBpbXBhY3Qgb24geW91cg0KKyAgICBvciByZWxvYWRlZCBieSBWaXN1YWwgU3R1ZGlvLCBhIHdhcm5pbmcgYWJvdXQgU29sdXRpb24gRm9sZGVycyB3aWxsDQorICAgIGJlIGRpc3BsYXllZCwgd2hpY2ggY2FuIGJlIHNhZmVseSBkaXNtaXNzZWQgd2l0aCBubyBpbXBhY3Qgb24geW91cg0KICAgICBhYmlsaXR5IHRvIGJ1aWxkIFB5dGhvbi4NCi1WaXN1YWwgU3R1ZGlvIDIwMTAgUHJvZmVzc2lvbmFsIEVkaXRpb24NCiAgICAgUmVxdWlyZWQgZm9yIGJ1aWxkaW5nIDY0LWJpdCBEZWJ1ZyBhbmQgUmVsZWFzZSBjb25maWd1cmF0aW9uIGJ1aWxkcw0KLVZpc3VhbCBTdHVkaW8gMjAxMCBQcmVtaXVtIEVkaXRpb24NCitWaXN1YWwgU3R1ZGlvIFByZW1pdW0gMjAxNQ0KICAgICBSZXF1aXJlZCBmb3IgYnVpbGRpbmcgUmVsZWFzZSBjb25maWd1cmF0aW9uIGJ1aWxkcyB0aGF0IG1ha2UgdXNlIG9mDQogICAgIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiAoUEdPKSwgb24gZWl0aGVyIHBsYXRmb3JtLg0KIA0KLUluc3RhbGxpbmcgU2VydmljZSBQYWNrIDEgZm9yIFZpc3VhbCBTdHVkaW8gMjAxMCBpcyBoaWdobHkgcmVjb21tZW5kZWQNCi10byBhdm9pZCBMTksxMTIzIGVycm9ycy4NCi0NCiBBbGwgeW91IG5lZWQgdG8gZG8gdG8gYnVpbGQgaXMgb3BlbiB0aGUgc29sdXRpb24gInBjYnVpbGQuc2xuIiBpbiBWaXN1YWwNCiBTdHVkaW8sIHNlbGVjdCB0aGUgZGVzaXJlZCBjb21iaW5hdGlvbiBvZiBjb25maWd1cmF0aW9uIGFuZCBwbGF0Zm9ybSwNCi10aGVuIGJ1aWxkIHdpdGggIkJ1aWxkIFNvbHV0aW9uIiBvciB0aGUgRjcga2V5Ym9hcmQgc2hvcnRjdXQuICBZb3UgY2FuDQotYWxzbyBidWlsZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgdXNpbmcgdGhlICJidWlsZC5iYXQiIHNjcmlwdCBpbiB0aGlzDQotZGlyZWN0b3J5LiAgVGhlIHNvbHV0aW9uIGlzIGNvbmZpZ3VyZWQgdG8gYnVpbGQgdGhlIHByb2plY3RzIGluIHRoZQ0KLWNvcnJlY3Qgb3JkZXIuDQordGhlbiBidWlsZCB3aXRoICJCdWlsZCBTb2x1dGlvbiIuICBZb3UgY2FuIGFsc28gYnVpbGQgZnJvbSB0aGUgY29tbWFuZA0KK2xpbmUgdXNpbmcgdGhlICJidWlsZC5iYXQiIHNjcmlwdCBpbiB0aGlzIGRpcmVjdG9yeTsgc2VlIGJlbG93IGZvcg0KK2RldGFpbHMuICBUaGUgc29sdXRpb24gaXMgY29uZmlndXJlZCB0byBidWlsZCB0aGUgcHJvamVjdHMgaW4gdGhlIGNvcnJlY3QNCitvcmRlci4NCiANCiBUaGUgc29sdXRpb24gY3VycmVudGx5IHN1cHBvcnRzIHR3byBwbGF0Zm9ybXMuICBUaGUgV2luMzIgcGxhdGZvcm0gaXMNCi11c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIHg4Ni1jb21wYXRpYmxlIDMyLWJpdCBiaW5hcmllcywgb3V0cHV0IGludG8gdGhpcw0KLWRpcmVjdG9yeS4gIFRoZSB4NjQgcGxhdGZvcm0gaXMgdXNlZCBmb3IgYnVpbGRpbmcgNjQtYml0IEFNRDY0IChha2ENCi14ODZfNjQgb3IgRU02NFQpIGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGUgYW1kNjQgc3ViLWRpcmVjdG9yeSB3aGljaA0KLXdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QuICBUaGUgSXRhbml1bSAoSUEtNjQpDQotcGxhdGZvcm0gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIFNlZSB0aGUgIkJ1aWxkaW5nIGZvciBBTUQ2NCIgc2VjdGlvbg0KLWJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IDY0LWJpdCBidWlsZHMuDQordXNlZCB0byBidWlsZCBzdGFuZGFyZCB4ODYtY29tcGF0aWJsZSAzMi1iaXQgYmluYXJpZXMsIG91dHB1dCBpbnRvIHRoZQ0KK3dpbjMyIHN1Yi1kaXJlY3RvcnkuICBUaGUgeDY0IHBsYXRmb3JtIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIDY0LWJpdCBBTUQ2NA0KKyhha2EgeDg2XzY0IG9yIEVNNjRUKSBiaW5hcmllcywgb3V0cHV0IGludG8gdGhlIGFtZDY0IHN1Yi1kaXJlY3RvcnkuDQorVGhlIEl0YW5pdW0gKElBLTY0KSBwbGF0Zm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLg0KIA0KIEZvdXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIHNvbHV0aW9uOg0KIERlYnVnDQogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIHdpdGggZXh0cmEgZGVidWdnaW5nIGNhcGFiaWxpdGllcywgZXF1aXZhbGVudA0KICAgICB0byB1c2luZyAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZyBvbiBVTklYLiAgQWxsIGJpbmFyaWVzIGJ1aWx0DQogICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToNCi0gICAgcHl0aG9uMzRfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KKyAgICBweXRob24zNV9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQogICAgIGJ1aWxkIGFuZCBydCAocnVuIHRlc3QpIGJhdGNoIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFjY2VwdCBhIC1kDQogICAgIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLiAgSWYgeW91IGFyZSBidWlsZGluZyBQeXRob24gdG8gaGVscCB3aXRoDQogICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uDQpAQCAtNTIsMjggKzU3LDMxIEBACiAgICAgcmVxdWlyZXMgUHJlbWl1bSBFZGl0aW9uIG9mIFZpc3VhbCBTdHVkaW8uICBTZWUgdGhlICJQcm9maWxlDQogICAgIEd1aWRlZCBPcHRpbWl6YXRpb24iIHNlY3Rpb24gYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uICBCdWlsZA0KICAgICBvdXRwdXQgZnJvbSBlYWNoIG9mIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGxhbmRzIGluIGl0cyBvd24NCi0gICAgc3ViLWRpcmVjdG9yeSBvZiB0aGlzIGRpcmVjdG9yeS4gIFRoZSBvZmZpY2lhbCBQeXRob24gcmVsZWFzZXMgYXJlDQotICAgIGJ1aWx0IHVzaW5nIHRoZXNlIGNvbmZpZ3VyYXRpb25zLg0KKyAgICBzdWItZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LiAgVGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcyBtYXkNCisgICAgYmUgYnVpbHQgdXNpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMuDQogUmVsZWFzZQ0KICAgICBVc2VkIHRvIGJ1aWxkIFB5dGhvbiBhcyBpdCBpcyBtZWFudCB0byBiZSB1c2VkIGluIHByb2R1Y3Rpb24NCiAgICAgc2V0dGluZ3MsIHRob3VnaCB3aXRob3V0IFBHTy4NCiANCiANCi1MZWdhY3kgc3VwcG9ydA0KLS0tLS0tLS0tLS0tLS0tDQorQnVpbGRpbmcgUHl0aG9uIHVzaW5nIHRoZSBidWlsZC5iYXQgc2NyaXB0DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KLVlvdSBjYW4gZmluZCBidWlsZCBkaXJlY3RvcmllcyBmb3Igb2xkZXIgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpbyBhbmQNCi1WaXN1YWwgQysrIGluIHRoZSBQQyBkaXJlY3RvcnkuIFRoZSBsZWdhY3kgYnVpbGQgZGlyZWN0b3JpZXMgYXJlIG5vDQotbG9uZ2VyIGFjdGl2ZWx5IG1haW50YWluZWQgYW5kIG1heSBub3Qgd29yayBvdXQgb2YgdGhlIGJveC4NCitJbiB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgYnVpbGQuYmF0LCBhIHNjcmlwdCBkZXNpZ25lZCB0byBtYWtlDQorYnVpbGRpbmcgUHl0aG9uIG9uIFdpbmRvd3Mgc2ltcGxlci4gIFRoaXMgc2NyaXB0IHdpbGwgdXNlIHRoZSBlbnYuYmF0DQorc2NyaXB0IHRvIGRldGVjdCBvbmUgb2YgVmlzdWFsIFN0dWRpbyAyMDE1LCAyMDEzLCAyMDEyLCBvciAyMDEwLCBhbnkgb2YNCit3aGljaCBtYXkgYmUgdXNlZCB0byBidWlsZCBQeXRob24sIHRob3VnaCBvbmx5IFZpc3VhbCBTdHVkaW8gMjAxNSBpcw0KK29mZmljaWFsbHkgc3VwcG9ydGVkLg0KIA0KLUN1cnJlbnRseSwgdGhlIG9ubHkgbGVnYWN5IGJ1aWxkIGRpcmVjdG9yeSBpcyBQQ1xWUzkuMCwgZm9yIFZpc3VhbA0KLVN0dWRpbyAyMDA4ICg5LjApLg0KK0J5IGRlZmF1bHQsIGJ1aWxkLmJhdCB3aWxsIGJ1aWxkIFB5dGhvbiBpbiBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gZm9yDQordGhlIDMyLWJpdCBXaW4zMiBwbGF0Zm9ybS4gIEl0IGFjY2VwdHMgc2V2ZXJhbCBhcmd1bWVudHMgdG8gY2hhbmdlDQordGhpcyBiZWhhdmlvciwgdHJ5IGBidWlsZC5iYXQgLWhgIHRvIGxlYXJuIG1vcmUuDQogDQogDQogQyBSdW50aW1lDQogLS0tLS0tLS0tDQogDQotVmlzdWFsIFN0dWRpbyAyMDEwIHVzZXMgdmVyc2lvbiAxMCBvZiB0aGUgQyBydW50aW1lIChNU1ZDUlQxMCkuICBUaGUNCitWaXN1YWwgU3R1ZGlvIDIwMTUgdXNlcyB2ZXJzaW9uIDE0IG9mIHRoZSBDIHJ1bnRpbWUgKE1TVkNSVDE0KS4gIFRoZQ0KIGV4ZWN1dGFibGVzIG5vIGxvbmdlciB1c2UgdGhlICJTaWRlIGJ5IFNpZGUiIGFzc2VtYmxpZXMgdXNlZCBpbiBwcmV2aW91cw0KIHZlcnNpb25zIG9mIHRoZSBjb21waWxlci4gIFRoaXMgc2ltcGxpZmllcyBkaXN0cmlidXRpb24gb2YgYXBwbGljYXRpb25zLg0KIA0KQEAgLTk4LDEyICsxMDYsNiBAQAogICAgIC5kbGwgYW5kIC5saWINCiBweXRob24NCiAgICAgLmV4ZQ0KLWtpbGxfcHl0aG9uDQotICAgIGtpbGxfcHl0aG9uLmV4ZSwgYSBzbWFsbCBwcm9ncmFtIGRlc2lnbmVkIHRvIGtpbGwgYW55IGluc3RhbmNlcyBvZg0KLSAgICBweXRob24oX2QpLmV4ZSB0aGF0IGFyZSBydW5uaW5nIGFuZCBsaXZlIGluIHRoZSBidWlsZCBvdXRwdXQNCi0gICAgZGlyZWN0b3J5OyB0aGlzIGlzIG1lYW50IHRvIGF2b2lkIGJ1aWxkIGlzc3VlcyBkdWUgdG8gbG9ja2VkIGZpbGVzDQotbWFrZV9idWlsZGluZm8sIG1ha2VfdmVyc2lvbmluZm8NCi0gICAgaGVscGVycyB0byBwcm92aWRlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB0aGUgYnVpbGQgcHJvY2Vzcw0KIA0KIFRoZXNlIHN1Yi1wcm9qZWN0cyBwcm92aWRlIGV4dHJhIGV4ZWN1dGFibGVzIHRoYXQgYXJlIHVzZWZ1bCBmb3IgcnVubmluZw0KIENQeXRob24gaW4gZGlmZmVyZW50IHdheXM6DQpAQCAtMTIxLDE0ICsxMjMsMTAgQEAKICAgICBwdXJwb3NlcywgdXNlZCBieSB0ZXN0X2NhcGkucHkNCiANCiBUaGVzZSBhcmUgbWlzY2VsbGFuZW91cyBzdWItcHJvamVjdHMgdGhhdCBkb24ndCByZWFsbHkgZml0IHRoZSBvdGhlcg0KLWNhdGVnb3JpZXMuICBCeSBkZWZhdWx0LCB0aGVzZSBwcm9qZWN0cyBkbyBub3QgYnVpbGQgaW4gRGVidWcNCi1jb25maWd1cmF0aW9uOg0KK2NhdGVnb3JpZXM6DQogX2ZyZWV6ZV9pbXBvcnRsaWINCiAgICAgX2ZyZWV6ZV9pbXBvcnRsaWIuZXhlLCB1c2VkIHRvIHJlZ2VuZXJhdGUgUHl0aG9uXGltcG9ydGxpYi5oIGFmdGVyDQogICAgIGNoYW5nZXMgaGF2ZSBiZWVuIG1hZGUgdG8gTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5DQotYmRpc3Rfd2luaW5zdA0KLSAgICAuLlxMaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wWy1hbWQ2NF0uZXhlLCB0aGUgYmFzZQ0KLSAgICBleGVjdXRhYmxlIHVzZWQgYnkgdGhlIGRpc3R1dGlscyBiZGlzdF93aW5pbnN0IGNvbW1hbmQNCiBweXRob24zZGxsDQogICAgIHB5dGhvbjMuZGxsLCB0aGUgUEVQIDM4NCBTdGFibGUgQUJJIGRsbA0KIHh4bGltaXRlZA0KQEAgLTE4NCw1MCArMTgyLDQ5IEBACiAgICAgeW91IHNob3VsZCBmaXJzdCB0cnkgdG8gdXBkYXRlIE5BU00gYW5kIGRvIGEgZnVsbCByZWJ1aWxkIG9mDQogICAgIE9wZW5TU0wuICBJZiB5b3UgdXNlIHRoZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IG1ldGhvZA0KICAgICBmb3IgZ2V0dGluZyBzb3VyY2VzLCBpdCBhbHNvIGRvd25sb2FkcyBhIHZlcnNpb24gb2YgTkFTTSB3aGljaCB0aGUNCi0gICAgc3NsIGJ1aWxkIHNjcmlwdCB3aWxsIGFkZCB0byBQQVRILg0KKyAgICBsaWJlYXkvc3NsZWF5IHN1Yi1wcm9qZWN0cyB1c2UuDQogDQotICAgIElmIHlvdSBsaWtlIHRvIHVzZSB0aGUgb2ZmaWNpYWwgc291cmNlcyBpbnN0ZWFkIG9mIHRoZSBmaWxlcyBmcm9tDQotICAgIHB5dGhvbi5vcmcncyBzdWJ2ZXJzaW9uIHJlcG9zaXRvcnksIFBlcmwgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlDQotICAgIG5lY2Vzc2FyeSBtYWtlZmlsZXMgYW5kIGFzc2VtYmx5IGZpbGVzLiAgQWN0aXZlUGVybCBpcyBhdmFpbGFibGUNCi0gICAgZnJvbQ0KKyAgICBUaGUgbGliZWF5L3NzbGVheSBzdWItcHJvamVjdHMgZXhwZWN0IHlvdXIgT3BlblNTTCBzb3VyY2VzIHRvIGhhdmUNCisgICAgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQgYW5kIGJlIHJlYWR5IHRvIGJ1aWxkLiAgSWYgeW91IGdldCB5b3VyIHNvdXJjZXMNCisgICAgZnJvbSBzdm4ucHl0aG9uLm9yZyBhcyBzdWdnZXN0ZWQgaW4gdGhlICJHZXR0aW5nIEV4dGVybmFsIFNvdXJjZXMiDQorICAgIHNlY3Rpb24gYmVsb3csIHRoZSBPcGVuU1NMIHNvdXJjZSB3aWxsIGFscmVhZHkgYmUgcmVhZHkgdG8gZ28uICBJZg0KKyAgICB5b3Ugd2FudCB0byBidWlsZCBhIGRpZmZlcmVudCB2ZXJzaW9uLCB5b3Ugd2lsbCBuZWVkIHRvIHJ1bg0KKw0KKyAgICAgICBQQ2J1aWxkXHByZXBhcmVfc3NsLnB5IHBhdGhcdG9cb3BlbnNzbC1zb3VyY2UtZGlyDQorDQorICAgIFRoYXQgc2NyaXB0IHdpbGwgcHJlcGFyZSB5b3VyIE9wZW5TU0wgc291cmNlcyBpbiB0aGUgc2FtZSB3YXkgdGhhdA0KKyAgICB0aG9zZSBhdmFpbGFibGUgb24gc3ZuLnB5dGhvbi5vcmcgaGF2ZSBiZWVuIHByZXBhcmVkLiAgTm90ZSB0aGF0DQorICAgIFBlcmwgbXVzdCBiZSBpbnN0YWxsZWQgYW5kIGF2YWlsYWJsZSBvbiB5b3VyIFBBVEggdG8gY29uZmlndXJlDQorICAgIE9wZW5TU0wuICBBY3RpdmVQZXJsIGlzIHJlY29tbWVuZGVkIGFuZCBpcyBhdmFpbGFibGUgZnJvbQ0KICAgICAgICAgaHR0cDovL3d3dy5hY3RpdmVzdGF0ZS5jb20vYWN0aXZlcGVybC8NCi0gICAgVGhlIHN2bi5weXRob24ub3JnIHZlcnNpb24gY29udGFpbnMgcHJlLWJ1aWx0IG1ha2VmaWxlcyBhbmQgYXNzZW1ibHkNCi0gICAgZmlsZXMuDQogDQotICAgIFRoZSBidWlsZCBwcm9jZXNzIG1ha2VzIHN1cmUgdGhhdCBubyBwYXRlbnRlZCBhbGdvcml0aG1zIGFyZQ0KLSAgICBpbmNsdWRlZC4gIEZvciBub3cgUkM1LCBNREMyIGFuZCBJREVBIGFyZSBleGNsdWRlZCBmcm9tIHRoZSBidWlsZC4NCi0gICAgWW91IG1heSBoYXZlIHRvIG1hbnVhbGx5IHJlbW92ZSAkKE9CSl9EKVxpXyoub2JqIGZyb20gbXNcbnQubWFrIGlmDQotICAgIHVzaW5nIG9mZmljaWFsIHNvdXJjZXM7IHRoZSBzdm4ucHl0aG9uLm9yZy1ob3N0ZWQgdmVyc2lvbiBpcyBhbHJlYWR5DQotICAgIGZpeGVkLg0KLQ0KLSAgICBUaGUgc3NsLnZjeHByb2ogc3ViLXByb2plY3Qgc2ltcGx5IGludm9rZXMgUENidWlsZC9idWlsZF9zc2wucHksDQotICAgIHdoaWNoIGxvY2F0ZXMgYW5kIGJ1aWxkcyBPcGVuU1NMLg0KLQ0KLSAgICBidWlsZF9zc2wucHkgYXR0ZW1wdHMgdG8gY2F0Y2ggdGhlIG1vc3QgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBub3QNCi0gICAgYmVpbmcgYWJsZSB0byBmaW5kIE9wZW5TU0wgc291cmNlcywgb3Igbm90IGJlaW5nIGFibGUgdG8gZmluZCBhIFBlcmwNCi0gICAgdGhhdCB3b3JrcyB3aXRoIE9wZW5TU0wpIGFuZCBnaXZlIGEgcmVhc29uYWJsZSBlcnJvciBtZXNzYWdlLiAgSWYNCi0gICAgeW91IGhhdmUgYSBwcm9ibGVtIHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIGhhbmRsZWQgY29ycmVjdGx5IChlLmcuLA0KLSAgICB5b3Uga25vdyB5b3UgaGF2ZSBBY3RpdmVQZXJsIGJ1dCB3ZSBjYW4ndCBmaW5kIGl0KSwgcGxlYXNlIHRha2UgYQ0KLSAgICBwZWVrIGF0IGJ1aWxkX3NzbC5weSBhbmQgc3VnZ2VzdCBwYXRjaGVzLiAgTm90ZSB0aGF0IGJ1aWxkX3NzbC5weQ0KLSAgICBzaG91bGQgYmUgYWJsZSB0byBiZSBydW4gZGlyZWN0bHkgZnJvbSB0aGUgY29tbWFuZC1saW5lLg0KLQ0KLSAgICBUaGUgc3NsIHN1Yi1wcm9qZWN0IGRvZXMgbm90IGhhdmUgdGhlIGFiaWxpdHkgdG8gY2xlYW4gdGhlIE9wZW5TU0wNCi0gICAgYnVpbGQ7IGlmIHlvdSBuZWVkIHRvIHJlYnVpbGQsIHlvdSdsbCBoYXZlIHRvIGNsZWFuIGl0IGJ5IGhhbmQuDQorICAgIFRoZSBsaWJlYXkgYW5kIHNzbGVheSBzdWItcHJvamVjdHMgd2lsbCBidWlsZCB0aGUgbW9kdWxlcyBvZiBPcGVuU1NMDQorICAgIHJlcXVpcmVkIGJ5IF9zc2wgYW5kIF9oYXNobGliIGFuZCBtYXkgbmVlZCB0byBiZSBtYW51YWxseSB1cGRhdGVkIHdoZW4NCisgICAgdXBncmFkaW5nIHRvIGEgbmV3ZXIgdmVyc2lvbiBvZiBPcGVuU1NMIG9yIHdoZW4gYWRkaW5nIG5ldw0KKyAgICBmdW5jdGlvbmFsaXR5IHRvIF9zc2wgb3IgX2hhc2hsaWIuIFRoZXkgd2lsbCBub3QgY2xlYW4gdXAgdGhlaXIgb3V0cHV0DQorICAgIHdpdGggdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IENsZWFuQWxsIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuDQogX3NxbGl0ZTMNCiAgICAgV3JhcHMgU1FMaXRlIDMuOC4xMS4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy5zcWxpdGUub3JnLw0KIF90a2ludGVyDQotICAgIFdyYXBzIHZlcnNpb24gOC42LjEgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQorICAgIFdyYXBzIHZlcnNpb24gOC42LjQgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy50Y2wudGsvDQogDQotICAgIFVubGlrZSB0aGUgb3RoZXIgZXh0ZXJuYWwgbGlicmFyaWVzIGxpc3RlZCBhYm92ZSwgVGsgbXVzdCBiZSBidWlsdA0KLSAgICBzZXBhcmF0ZWx5IGJlZm9yZSB0aGUgX3RraW50ZXIgbW9kdWxlIGNhbiBiZSBidWlsdC4gVGhpcyBtZWFucyB0aGF0DQotICAgIGEgcHJlLWJ1aWx0IFRjbC9UayBpbnN0YWxsYXRpb24gaXMgZXhwZWN0ZWQgaW4gLi5cZXh0ZXJuYWxzXHRjbHRrDQotICAgICh0Y2x0azY0IGZvciA2NC1iaXQpIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LiAgU2VlICJHZXR0aW5nDQotICAgIEV4dGVybmFsIFNvdXJjZXMiIGJlbG93IGZvciB0aGUgZWFzaWVzdCBtZXRob2QgdG8gZW5zdXJlIFRjbC9UayBpcw0KLSAgICBidWlsdC4NCisgICAgVGtpbnRlcidzIGRlcGVuZGVuY2llcyBhcmUgYnVpbHQgYnkgdGhlIHRjbC52Y3hwcm9qIGFuZCB0ay52Y3hwcm9qDQorICAgIHByb2plY3RzLiAgVGhlIHRpeC52Y3hwcm9qIHByb2plY3QgYWxzbyBidWlsZHMgdGhlIFRpeCBleHRlbmRlZA0KKyAgICB3aWRnZXQgc2V0IGZvciB1c2Ugd2l0aCBUa2ludGVyLg0KKw0KKyAgICBUaG9zZSB0aHJlZSBwcm9qZWN0cyBpbnN0YWxsIHRoZWlyIHJlc3BlY3RpdmUgY29tcG9uZW50cyBpbiBhDQorICAgIGRpcmVjdG9yeSBhbG9uZ3NpZGUgdGhlIHNvdXJjZSBkaXJlY3RvcmllcyBjYWxsZWQgInRjbHRrIiBvbg0KKyAgICBXaW4zMiBhbmQgInRjbHRrNjQiIG9uIHg2NC4gIFRoZXkgYWxzbyBjb3B5IHRoZSBUY2wgYW5kIFRrIERMTHMNCisgICAgaW50byB0aGUgY3VycmVudCBvdXRwdXQgZGlyZWN0b3J5LCB3aGljaCBzaG91bGQgZW5zdXJlIHRoYXQgVGtpbnRlcg0KKyAgICBpcyBhYmxlIHRvIGxvYWQgVGNsL1RrIHdpdGhvdXQgaGF2aW5nIHRvIGNoYW5nZSB5b3VyIFBBVEguDQorDQorICAgIFRoZSB0Y2wsIHRrLCBhbmQgdGl4IHN1Yi1wcm9qZWN0cyBkbyBub3QgY2xlYW4gdGhlaXIgYnVpbGRzIHdpdGgNCisgICAgdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IGlmIHlvdSBuZWVkIHRvIHJlYnVpbGQsIHlvdSBzaG91bGQgdXNlIHRoZQ0KKyAgICBDbGVhbkFsbCB0YXJnZXQgb3IgbWFudWFsbHkgZGVsZXRlIHRoZWlyIGJ1aWxkcy4NCiANCiANCiBHZXR0aW5nIEV4dGVybmFsIFNvdXJjZXMNCkBAIC0yMzYsMjQgKzIzMywyMSBAQAogVGhlIGxhc3QgY2F0ZWdvcnkgb2Ygc3ViLXByb2plY3RzIGxpc3RlZCBhYm92ZSB3cmFwIGV4dGVybmFsIHByb2plY3RzDQogUHl0aG9uIGRvZXNuJ3QgY29udHJvbCwgYW5kIGFzIHN1Y2ggYSBsaXR0bGUgbW9yZSB3b3JrIGlzIHJlcXVpcmVkIGluDQogb3JkZXIgdG8gZG93bmxvYWQgdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcyBmb3IgZWFjaCBwcm9qZWN0IGJlZm9yZSB0aGV5DQotY2FuIGJlIGJ1aWx0LiAgVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdG8gdXNlIHRoZSBgYnVpbGQuYmF0YA0KLXNjcmlwdCBpbiB0aGlzIGRpcmVjdG9yeSB0byBidWlsZCBQeXRob24sIGFuZCBwYXNzIHRoZSAnLWUnIHN3aXRjaCB0bw0KLXRlbGwgaXQgdG8gdXNlIGdldF9leHRlcm5hbHMuYmF0IHRvIGZldGNoIGV4dGVybmFsIHNvdXJjZXMgYW5kIGJ1aWxkDQotVGNsL1RrIGFuZCBUaXguICBUbyB1c2UgZ2V0X2V4dGVybmFscy5iYXQsIHlvdSdsbCBuZWVkIHRvIGhhdmUNCi1TdWJ2ZXJzaW9uIGluc3RhbGxlZCBhbmQgc3ZuLmV4ZSBvbiB5b3VyIFBBVEguICBUaGUgc2NyaXB0IHdpbGwgZmV0Y2gNCi1leHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMgZnJvbSBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvZXh0ZXJuYWwgYW5kIHBsYWNlDQotdGhlbSBpbiAuLlxleHRlcm5hbHMgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KS4NCitjYW4gYmUgYnVpbHQuICBIb3dldmVyLCBhIHNpbXBsZSBzY3JpcHQgaXMgcHJvdmlkZWQgdG8gbWFrZSB0aGlzIGFzDQorcGFpbmxlc3MgYXMgcG9zc2libGUsIGNhbGxlZCAiZ2V0X2V4dGVybmFscy5iYXQiIGFuZCBsb2NhdGVkIGluIHRoaXMNCitkaXJlY3RvcnkuICBUaGlzIHNjcmlwdCBleHRyYWN0cyBhbGwgdGhlIGV4dGVybmFsIHN1Yi1wcm9qZWN0cyBmcm9tDQorICAgIGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbA0KK3ZpYSBTdWJ2ZXJzaW9uIChzbyB5b3UnbGwgbmVlZCBzdm4uZXhlIG9uIHlvdXIgUEFUSCkgYW5kIHBsYWNlcyB0aGVtDQoraW4gLi5cZXh0ZXJuYWxzIChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkuDQogDQorSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkb3dubG9hZCBzb3VyY2VzIGZyb20gZWFjaCBwcm9qZWN0J3MgaG9tZXBhZ2UsDQordGhvdWdoIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2UgZm9sZGVyIG5hbWVzIG9yIHBhc3MgdGhlIG5hbWVzIHRvIE1TQnVpbGQNCithcyB0aGUgdmFsdWVzIG9mIGNlcnRhaW4gcHJvcGVydGllcyBpbiBvcmRlciBmb3IgdGhlIGJ1aWxkIHNvbHV0aW9uIHRvDQorZmluZCB0aGVtLiAgVGhpcyBpcyBhbiBhZHZhbmNlZCB0b3BpYyBhbmQgbm90IG5lY2Vzc2FyaWx5IGZ1bGx5DQorc3VwcG9ydGVkLg0KIA0KLUJ1aWxkaW5nIGZvciBBTUQ2NA0KLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLVRoZSBidWlsZCBwcm9jZXNzIGZvciBBTUQ2NCAvIHg2NCBpcyB2ZXJ5IHNpbWlsYXIgdG8gc3RhbmRhcmQgYnVpbGRzLA0KLXlvdSBqdXN0IGhhdmUgdG8gc2V0IHg2NCBhcyBwbGF0Zm9ybS4gSW4gYWRkaXRpb24sIHRoZSBIT1NUX1BZVEhPTg0KLWVudmlyb25tZW50IHZhcmlhYmxlIG11c3QgcG9pbnQgdG8gYSBQeXRob24gaW50ZXJwcmV0ZXIgKGF0IGxlYXN0IDIuNCksDQotdG8gc3VwcG9ydCBjcm9zcy1jb21waWxhdGlvbiBmcm9tIFdpbjMyLiAgTm90ZSB0aGF0IFZpc3VhbCBTdHVkaW8NCi1yZXF1aXJlcyBQcm9mZXNzaW9uYWwgRWRpdGlvbiBvciBiZXR0ZXIgaW4gb3JkZXIgdG8gYnVpbGQgNjQtYml0DQotYmluYXJpZXMuDQorVGhlIGdldF9leHRlcm5hbHMuYmF0IHNjcmlwdCBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBieSBidWlsZC5iYXQgd2hlbg0KK3lvdSBwYXNzIHRoZSAnLWUnIG9wdGlvbiB0byBpdC4NCiANCiANCiBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24NCkBAIC0yNzAsNyArMjY0LDcgQEAKIFBHSSBweXRob24sIGFuZCBmaW5hbGx5IGNyZWF0ZXMgdGhlIG9wdGltaXplZCBmaWxlcy4NCiANCiBTZWUNCi0gICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2U3azMyZjRrKFZTLjEwMCkuYXNweA0KKyAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZTdrMzJmNGsoVlMuMTQwKS5hc3B4DQogZm9yIG1vcmUgb24gdGhpcyB0b3BpYy4NCiANCiANCkBAIC0yODgsMjcgKzI4MiwxOSBAQAogVmlzdWFsIFN0dWRpbyBwcm9wZXJ0aWVzDQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQotVGhlIFBDYnVpbGQgc29sdXRpb24gbWFrZXMgaGVhdnkgdXNlIG9mIFZpc3VhbCBTdHVkaW8gcHJvcGVydHkgZmlsZXMNCi0oKi5wcm9wcykuIFRoZSBwcm9wZXJ0aWVzIGNhbiBiZSB2aWV3ZWQgYW5kIGFsdGVyZWQgaW4gdGhlIFByb3BlcnR5DQotTWFuYWdlciAoVmlldyAtPiBPdGhlciBXaW5kb3dzIC0+IFByb3BlcnR5IE1hbmFnZXIpLg0KK1RoZSBQQ2J1aWxkIHNvbHV0aW9uIG1ha2VzIHVzZSBvZiBWaXN1YWwgU3R1ZGlvIHByb3BlcnR5IGZpbGVzICgqLnByb3BzKQ0KK3RvIHNpbXBsaWZ5IGVhY2ggcHJvamVjdC4gVGhlIHByb3BlcnRpZXMgY2FuIGJlIHZpZXdlZCBpbiB0aGUgUHJvcGVydHkNCitNYW5hZ2VyIChWaWV3IC0+IE90aGVyIFdpbmRvd3MgLT4gUHJvcGVydHkgTWFuYWdlcikgYnV0IHNob3VsZCBiZQ0KK2NhcmVmdWxseSBtb2RpZmllZCBieSBoYW5kLg0KIA0KLVRoZSBwcm9wZXJ0eSBmaWxlcyB1c2VkIGFyZSAoKy0tID0gImFsc28gaW1wb3J0cyIpOg0KLSAqIGRlYnVnIChkZWJ1ZyBtYWNybzogX0RFQlVHKQ0KLSAqIHBnaW5zdHJ1bWVudCAoUEdPKQ0KLSAqIHBndXBkYXRlIChQR08pDQotICAgICstLSBwZ2luc3RydW1lbnQNCi0gKiBweWQgKHB5dGhvbiBleHRlbnNpb24sIHJlbGVhc2UgYnVpbGQpDQotICAgICstLSByZWxlYXNlDQotICAgICstLSBweXByb2plY3QNCi0gKiBweWRfZCAocHl0aG9uIGV4dGVuc2lvbiwgZGVidWcgYnVpbGQpDQotICAgICstLSBkZWJ1Zw0KLSAgICArLS0gcHlwcm9qZWN0DQotICogcHlwcm9qZWN0IChiYXNlIHNldHRpbmdzIGZvciBhbGwgcHJvamVjdHMsIHVzZXIgbWFjcm9zIGxpa2UgUHlEbGxOYW1lKQ0KLSAqIHJlbGVhc2UgKHJlbGVhc2UgbWFjcm86IE5ERUJVRykNCi0gKiBzcWxpdGUzICh1c2VkIG9ubHkgYnkgc3FsaXRlMy52Y3hwcm9qKQ0KLSAqIHg2NCAoQU1ENjQgLyB4NjQgcGxhdGZvcm0gc3BlY2lmaWMgc2V0dGluZ3MpDQorVGhlIHByb3BlcnR5IGZpbGVzIHVzZWQgYXJlOg0KKyAqIHB5dGhvbiAodmVyc2lvbnMsIGRpcmVjdG9yaWVzIGFuZCBidWlsZCBuYW1lcykNCisgKiBweXByb2plY3QgKGJhc2Ugc2V0dGluZ3MgZm9yIGFsbCBwcm9qZWN0cykNCisgKiBvcGVuc3NsICh1c2VkIGJ5IGxpYmVheSBhbmQgc3NsZWF5IHByb2plY3RzKQ0KKyAqIHRjbHRrICh1c2VkIGJ5IF90a2ludGVyLCB0Y2wsIHRrIGFuZCB0aXggcHJvamVjdHMpDQogDQotVGhlIHB5cHJvamVjdCBwcm9wZXJ0eSBmaWxlIGRlZmluZXMgX1dJTjMyIGFuZCB4NjQgZGVmaW5lcyBfV0lONjQgYW5kDQotX01fWDY0IGFsdGhvdWdoIHRoZSBtYWNyb3MgYXJlIHNldCBieSB0aGUgY29tcGlsZXIsIHRvby4gVGhlIEdVSSBkb2Vzbid0DQotYWx3YXlzIGtub3cgYWJvdXQgdGhlIG1hY3JvcyBhbmQgY29uZnVzZSB0aGUgdXNlciB3aXRoIGZhbHNlDQotaW5mb3JtYXRpb24uDQorVGhlIHB5cHJvamVjdCBwcm9wZXJ0eSBmaWxlIGRlZmluZXMgYWxsIG9mIHRoZSBidWlsZCBzZXR0aW5ncyBmb3IgZWFjaA0KK3Byb2plY3QsIHdpdGggc29tZSBwcm9qZWN0cyBvdmVycmlkaW5nIGNlcnRhaW4gc3BlY2lmaWMgdmFsdWVzLiBUaGUgR1VJDQorZG9lc24ndCBhbHdheXMgcmVmbGVjdCB0aGUgY29ycmVjdCBzZXR0aW5ncyBhbmQgbWF5IGNvbmZ1c2UgdGhlIHVzZXINCit3aXRoIGZhbHNlIGluZm9ybWF0aW9uLCBlc3BlY2lhbGx5IGZvciBzZXR0aW5ncyB0aGF0IGF1dG9tYXRpY2FsbHkgYWRhcHQNCitmb3IgZGlmZmlyZW50IGNvbmZpZ3VyYXRpb25zLg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVsZWFzZS5wcm9wcyBiL1BDYnVpbGQvcmVsZWFzZS5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNmZTNlNC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3JlbGVhc2UucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KLSAgICA8UHlEZWJ1Z0V4dCAvPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeURlYnVnRXh0Ij4KLSAgICAgIDxWYWx1ZT4kKFB5RGVidWdFeHQpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcnQuYmF0IGIvUENidWlsZC9ydC5iYXQKaW5kZXggMTNjOWQ2Mi4uMmQ5M2I4MCAxMDA2NDQKLS0tIGEvUENidWlsZC9ydC5iYXQKKysrIGIvUENidWlsZC9ydC5iYXQKQEAgLTI4LDI1ICsyOCwyNSBAQAogc2V0bG9jYWwNCiANCiBzZXQgcGNidWlsZD0lfmRwMA0KLXNldCBwcmVmaXg9JXBjYnVpbGQlDQorc2V0IHByZWZpeD0lcGNidWlsZCV3aW4zMlwNCiBzZXQgc3VmZml4PQ0KIHNldCBxbW9kZT0NCiBzZXQgZGFzaE89DQotc2V0IHRjbHRrPXRjbHRrDQorc2V0IHJlZ3J0ZXN0YXJncz0NCiANCiA6Q2hlY2tPcHRzDQogaWYgIiUxIj09Ii1PIiAoc2V0IGRhc2hPPS1PKSAgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii1xIiAoc2V0IHFtb2RlPXllcykgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIj09Ii1kIiAoc2V0IHN1ZmZpeD1fZCkgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiUxIj09Ii14NjQiIChzZXQgcHJlZml4PSVwcmVmaXglYW1kNjQpICYgKHNldCB0Y2x0az10Y2x0azY0KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLXg2NCIgKHNldCBwcmVmaXg9JXBjYnVpbGQlYW1kNjRcKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdGFyZ3M9JXJlZ3J0ZXN0YXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLVBBVEggJVBBVEglOyVwY2J1aWxkJS4uXGV4dGVybmFsc1wldGNsdGslXGJpbg0KLXNldCBleGU9IiVwcmVmaXglXHB5dGhvbiVzdWZmaXglIg0KLXNldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtV2QgLUUgLWJiICIlcGNidWlsZCUuLlxsaWJcdGVzdFxyZWdydGVzdC5weSIgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCitzZXQgZXhlPSVwcmVmaXglcHl0aG9uJXN1ZmZpeCUuZXhlDQorc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICVyZWdydGVzdGFyZ3MlDQogaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQogDQogZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQotJWV4ZSUgIiVwY2J1aWxkJVxybXB5Yy5weSINCisiJWV4ZSUiICIlcGNidWlsZCVybXB5Yy5weSINCiANCiBlY2hvIG9uDQogJWNtZCUNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagppbmRleCA3YzM2ZDY0Li4zY2QwNjk0IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2oKQEAgLTM3LDE4OCArMzcsMzMgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+c2VsZWN0PC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgogICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMgYi9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZWUwMmMuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9zcWxpdGUzLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKaW5kZXggZGFmMDEwZC4uYjYyNDZmYSAxMDA2NDQKLS0tIGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTM3LDE4OCArMzcsMzEgQEAKICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfTwvUHJvamVjdEd1aWQ+CiAgICAgPFJvb3ROYW1lc3BhY2U+c3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTIyOCwxMiArNzEsNiBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+ezZkZTEwNzQ0LWUzOTYtNDBhNS1iNGUyLTFiNjlhYTdjOGQzMX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbC52Y3hwcm9qIGIvUENidWlsZC9zc2wudmN4cHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlYWM5YS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3NzbC52Y3hwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgotICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgotICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+Ci0gIDwvSXRlbUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+Ci0gICAgPFByb2plY3RHdWlkPntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9PC9Qcm9qZWN0R3VpZD4KLSAgICA8Um9vdE5hbWVzcGFjZT5zc2w8L1Jvb3ROYW1lc3BhY2U+Ci0gICAgPEtleXdvcmQ+TWFrZUZpbGVQcm9qPC9LZXl3b3JkPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KLSAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KLSAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgotICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KLSAgICA8L1Byb2plY3RSZWZlcmVuY2U+Ci0gIDwvSXRlbUdyb3VwPgotICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgotICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3NsZWF5LnZjeHByb2ogYi9QQ2J1aWxkL3NzbGVheS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOWUzYWMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NzbGVheS52Y3hwcm9qCkBAIC0wLDAgKzEsMTE5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c3NsZWF5PC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0ib3BlbnNzbC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGJpb19zc2wuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfYm90aC5jIiAvPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9lbmMuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfbGliLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9tZXRoLmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX3BrdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9zcnRwLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGtzc2wuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfcGt0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfcGt0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyM19zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2JvdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfY2JjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19tZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX3BrdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19zcnZyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9hbGdzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9hc24xLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9jZXJ0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9jaXBoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9lcnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2VycjIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfcnNhLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9zZXNzLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfc3RhdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfdHh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF91dHN0LmMiIC8+CisgICAgLS0+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2NsbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfZW5jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX2xpYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9tZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX3JlbmVnLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdGxzX3NycC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxEZWxldGUgRmlsZXM9IiQoVGFyZ2V0UGF0aCkiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbC52Y3hwcm9qIGIvUENidWlsZC90Y2wudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjRjODNjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90Y2wudmN4cHJvagpAQCAtMCwwICsxLDkxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfTwvUHJvamVjdEd1aWQ+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSJ0Y2x0ay5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxPdXREaXI+JCh0Y2x0a0Rpcik8L091dERpcj4KKyAgICA8VGFyZ2V0UGF0aD4kKE91dERpciliaW5cJCh0Y2xETExOYW1lKTwvVGFyZ2V0UGF0aD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8RXhwZWN0ZWRPdXRwdXRzIEluY2x1ZGU9IgorICAgICAgICAkKE91dERpcilcYmluXCQodGNsRExMTmFtZSk7CisgICAgICAgICQoT3V0RGlyKVxiaW5cJCh0Y2xTaEV4ZU5hbWUpOworICAgICAgICAkKE91dERpcilcaW5jbHVkZVx0Y2wuaDsKKyAgICAgICAgJChPdXREaXIpXGxpYlx0Y2wkKFRjbE1ham9yVmVyc2lvbik7CisgICAgICAgICQoT3V0RGlyKVxsaWJcdGNsJChUY2xNYWpvclZlcnNpb24pLiQoVGNsTWlub3JWZXJzaW9uKTsKKyAgICAgICAgJChPdXREaXIpXGxpYlwkKHRjbExpYk5hbWUpIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRjbE9wdHM+bXN2Y3J0PC9UY2xPcHRzPgorICAgIDxUY2xPcHRzIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5zeW1ib2xzLG1zdmNydDwvVGNsT3B0cz4KKyAgICA8VGNsRGlycz5JTlNUQUxMRElSPSIkKE91dERpci5UcmltRW5kKGBcYCkpIiBJTlNUQUxMX0RJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RjbERpcnM+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+REVCVUdGTEFHUz0iLXdkNDQ1NiAtd2Q0NDU3IC13ZDQ0NTggLXdkNDQ1OSAtd2Q0OTk2IjwvRGVidWdGbGFncz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lPnNldGxvY2FsCitAKEV4cGVjdGVkT3V0cHV0cy0+J2lmIG5vdCBleGlzdCAiJShGdWxsUGF0aCkiIGdvdG8gYnVpbGQnLCcKKycpCitnb3RvIDplb2YKKzpidWlsZAorc2V0IFZDSU5TVEFMTERJUj0kKFZDSW5zdGFsbERpcikKK2NkIC9EICIkKHRjbERpcil3aW4iCitubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSQoVGNsTWFjaGluZSkgT1BUUz0kKFRjbE9wdHMpICQoVGNsRGlycykgJChEZWJ1Z0ZsYWdzKSBjb3JlIHNoZWxsIGRsbHMKK25tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGNsT3B0cykgJChUY2xEaXJzKSAkKERlYnVnRmxhZ3MpIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQ29weURsbCIgSW5wdXRzPSIkKE91dERpcilcYmluXCQodGNsRExMTmFtZSkiIE91dHB1dHM9IiQoQnVpbGRQYXRoKSQodGNsRExMTmFtZSkiIEFmdGVyVGFyZ2V0cz0iQnVpbGQiPgorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIkKE91dERpcilcYmluXCQodGNsRExMTmFtZSkiIERlc3RpbmF0aW9uRmlsZXM9IiQoQnVpbGRQYXRoKSQodGNsRExMTmFtZSkiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPFRhcmdldCBOYW1lPSJDbGVhbiIgLz4KKyAgPFRhcmdldCBOYW1lPSJDbGVhbkFsbCI+CisgICAgPERlbGV0ZSBGaWxlcz0iJChUYXJnZXRQYXRoKTskKEJ1aWxkUGF0aCkkKHRjbERMTE5hbWUpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2x0ay5wcm9wcyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3OTRlNQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKQEAgLTAsMCArMSw0NSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUY2xNYWpvclZlcnNpb24+ODwvVGNsTWFqb3JWZXJzaW9uPgorICAgIDxUY2xNaW5vclZlcnNpb24+NjwvVGNsTWlub3JWZXJzaW9uPgorICAgIDxUY2xQYXRjaExldmVsPjQ8L1RjbFBhdGNoTGV2ZWw+CisgICAgPFRjbFJldmlzaW9uPjI8L1RjbFJldmlzaW9uPgorICAgIDxUa01ham9yVmVyc2lvbj4kKFRjbE1ham9yVmVyc2lvbik8L1RrTWFqb3JWZXJzaW9uPgorICAgIDxUa01pbm9yVmVyc2lvbj4kKFRjbE1pbm9yVmVyc2lvbik8L1RrTWlub3JWZXJzaW9uPgorICAgIDxUa1BhdGNoTGV2ZWw+JChUY2xQYXRjaExldmVsKTwvVGtQYXRjaExldmVsPgorICAgIDxUa1JldmlzaW9uPiQoVGNsUmV2aXNpb24pPC9Ua1JldmlzaW9uPgorICAgIDxUaXhNYWpvclZlcnNpb24+ODwvVGl4TWFqb3JWZXJzaW9uPgorICAgIDxUaXhNaW5vclZlcnNpb24+NDwvVGl4TWlub3JWZXJzaW9uPgorICAgIDxUaXhQYXRjaExldmVsPjM8L1RpeFBhdGNoTGV2ZWw+CisgICAgPFRpeFJldmlzaW9uPjY8L1RpeFJldmlzaW9uPgorICAgIDx0Y2xEaXI+JChFeHRlcm5hbHNEaXIpdGNsLWNvcmUtJChUY2xNYWpvclZlcnNpb24pLiQoVGNsTWlub3JWZXJzaW9uKS4kKFRjbFBhdGNoTGV2ZWwpLiQoVGNsUmV2aXNpb24pXDwvdGNsRGlyPgorICAgIDx0a0Rpcj4kKEV4dGVybmFsc0Rpcil0ay0kKFRrTWFqb3JWZXJzaW9uKS4kKFRrTWlub3JWZXJzaW9uKS4kKFRrUGF0Y2hMZXZlbCkuJChUa1JldmlzaW9uKVw8L3RrRGlyPgorICAgIDx0aXhEaXI+JChFeHRlcm5hbHNEaXIpdGl4LSQoVGl4TWFqb3JWZXJzaW9uKS4kKFRpeE1pbm9yVmVyc2lvbikuJChUaXhQYXRjaExldmVsKS4kKFRpeFJldmlzaW9uKVw8L3RpeERpcj4KKyAgICA8dGNsdGtEaXI+JChFeHRlcm5hbHNEaXIpdGNsdGtcPC90Y2x0a0Rpcj4KKyAgICA8dGNsdGtEaXIgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKEV4dGVybmFsc0Rpcil0Y2x0azY0XDwvdGNsdGtEaXI+CisgICAgPFRjbERlYnVnRXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICdEZWJ1ZyciPmc8L1RjbERlYnVnRXh0PgorICAgIDx0Y2xETExOYW1lPnRjbCQoVGNsTWFqb3JWZXJzaW9uKSQoVGNsTWlub3JWZXJzaW9uKXQkKFRjbERlYnVnRXh0KS5kbGw8L3RjbERMTE5hbWU+CisgICAgPHRjbExpYk5hbWU+dGNsJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmxpYjwvdGNsTGliTmFtZT4KKyAgICA8dGNsU2hFeGVOYW1lPnRjbHNoJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmV4ZTwvdGNsU2hFeGVOYW1lPgorICAgIDx0a0RMTE5hbWU+dGskKFRrTWFqb3JWZXJzaW9uKSQoVGtNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmRsbDwvdGtETExOYW1lPgorICAgIDx0a0xpYk5hbWU+dGskKFRrTWFqb3JWZXJzaW9uKSQoVGtNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmxpYjwvdGtMaWJOYW1lPgorICAgIDx0aXhETExOYW1lPnRpeCQoVGl4TWFqb3JWZXJzaW9uKSQoVGl4TWlub3JWZXJzaW9uKSQoVGNsRGVidWdFeHQpLmRsbDwvdGl4RExMTmFtZT4KKyAgICA8dGl4RExMUGF0aD4kKHRjbHRrRGlyKWxpYlx0aXgkKFRpeE1ham9yVmVyc2lvbikuJChUaXhNaW5vclZlcnNpb24pLiQoVGl4UGF0Y2hMZXZlbClcJCh0aXhETExOYW1lKTwvdGl4RExMUGF0aD4KKyAgICA8dGNsdGtMaWI+JCh0Y2x0a0RpcilsaWJcdGNsJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmxpYjskKHRjbHRrRGlyKWxpYlx0ayQoVGtNYWpvclZlcnNpb24pJChUa01pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliPC90Y2x0a0xpYj4KKyAgICA8VGNsTWFjaGluZT5JWDg2PC9UY2xNYWNoaW5lPgorICAgIDxUY2xNYWNoaW5lIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAneDY0JyI+QU1ENjQ8L1RjbE1hY2hpbmU+CisgICAgPFRjbFZlcnNpb25zPlRDTF9NQUpPUl9WRVJTSU9OPSQoVGNsTWFqb3JWZXJzaW9uKSBUQ0xfTUlOT1JfVkVSU0lPTj0kKFRjbE1pbm9yVmVyc2lvbikgVENMX1BBVENIX0xFVkVMPSQoVGNsUGF0Y2hMZXZlbCk8L1RjbFZlcnNpb25zPgorICAgIDxUY2xTaG9ydFZlcnNpb25zPlRDTF9NQUpPUj0kKFRjbE1ham9yVmVyc2lvbikgVENMX01JTk9SPSQoVGNsTWlub3JWZXJzaW9uKSBUQ0xfUEFUQ0g9JChUY2xQYXRjaExldmVsKTwvVGNsU2hvcnRWZXJzaW9ucz4KKyAgICA8VGtWZXJzaW9ucz5US19NQUpPUl9WRVJTSU9OPSQoVGtNYWpvclZlcnNpb24pIFRLX01JTk9SX1ZFUlNJT049JChUa01pbm9yVmVyc2lvbikgVEtfUEFUQ0hfTEVWRUw9JChUa1BhdGNoTGV2ZWwpPC9Ua1ZlcnNpb25zPgorCisgICAgPEJ1aWxkRGlyVG9wPlJlbGVhc2U8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+RGVidWc8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVGNsTWFjaGluZSkgIT0gJ0lYODYnIj4kKEJ1aWxkRGlyVG9wKV8kKFRjbE1hY2hpbmUpPC9CdWlsZERpclRvcD4KKyAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFZpc3VhbFN0dWRpb1ZlcnNpb24pID09ICcxNC4wJyI+JChCdWlsZERpclRvcClfVkMxMzwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChWaXN1YWxTdHVkaW9WZXJzaW9uKSA9PSAnMTIuMCciPiQoQnVpbGREaXJUb3ApX1ZDMTI8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVmlzdWFsU3R1ZGlvVmVyc2lvbikgPT0gJzExLjAnIj4kKEJ1aWxkRGlyVG9wKV9WQzExPC9CdWlsZERpclRvcD4KKyAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFZpc3VhbFN0dWRpb1ZlcnNpb24pID09ICcxMC4wJyI+JChCdWlsZERpclRvcClfVkMxMDwvQnVpbGREaXJUb3A+CisgIDwvUHJvcGVydHlHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RpeC52Y3hwcm9qIGIvUENidWlsZC90aXgudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODU3ZjllCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90aXgudmN4cHJvagpAQCAtMCwwICsxLDkyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dGl4PC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0idGNsdGsucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8T3V0RGlyPiQodGNsdGtEaXIpPC9PdXREaXI+CisgICAgPFRhcmdldFBhdGg+JCh0aXhETExQYXRoKTwvVGFyZ2V0UGF0aD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8RXhwZWN0ZWRPdXRwdXRzIEluY2x1ZGU9IiQoVGFyZ2V0UGF0aCkiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGl4RGlycz5CVUlMRERJUlRPUD0iJChCdWlsZERpclRvcCkiIFRDTF9ESVI9IiQodGNsRGlyLlRyaW1FbmQoYFxgKSkiIFRLX0RJUj0iJCh0a0Rpci5UcmltRW5kKGBcYCkpIiBJTlNUQUxMX0RJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RpeERpcnM+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+REVCVUc9MSBOT0RFQlVHPTAgVENMX0RCR1g9ZyBUS19EQkdYPWc8L0RlYnVnRmxhZ3M+CisgICAgPERlYnVnRmxhZ3MgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgIT0gJ0RlYnVnJyI+REVCVUc9MCBOT0RFQlVHPTE8L0RlYnVnRmxhZ3M+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZT5zZXRsb2NhbAorQChFeHBlY3RlZE91dHB1dHMtPidpZiBub3QgZXhpc3QgIiUoRnVsbFBhdGgpIiBnb3RvIGJ1aWxkJywnCisnKQorZ290byA6ZW9mCis6YnVpbGQKK3NldCBWQ0lOU1RBTExESVI9JChWQ0luc3RhbGxEaXIpCitjZCAvRCAiJCh0aXhEaXIpd2luIgorbm1ha2UgL25vbG9nbyAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSQoVGNsTWFjaGluZSkgJChEZWJ1Z0ZsYWdzKSAkKFRjbFNob3J0VmVyc2lvbnMpICQoVGl4RGlycykgYWxsIGluc3RhbGwKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmU+cm1kaXIgL3EvcyAiJChPdXREaXIuVHJpbUVuZChgXGApKSI8L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ0Y2wudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjVmZDZmMWQtMTI5ZS00YmZmLTkzNDAtMDM2MDZmYWM3MjgzfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRrLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezdlODVlY2NmLWE3MmMtNGRhNC05ZTUyLTg4NDUwOGU4MGJhMX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKworICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8UmVtb3ZlRGlyIERpcmVjdG9yaWVzPSIkKE91dERpcikiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RrLnZjeHByb2ogYi9QQ2J1aWxkL3RrLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA3NDlmNwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdGsudmN4cHJvagpAQCAtMCwwICsxLDk1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dGs8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9InRjbHRrLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPE91dERpcj4kKHRjbHRrRGlyKTwvT3V0RGlyPgorICAgIDxUYXJnZXRQYXRoPiQoT3V0RGlyKWJpblwkKHRrRExMTmFtZSk8L1RhcmdldFBhdGg+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJdGVtR3JvdXA+CisgICAgPEV4cGVjdGVkT3V0cHV0cyBJbmNsdWRlPSIKKyAgICAgICAgJChPdXREaXIpYmluXCQodGtETExOYW1lKTsKKyAgICAgICAgJChPdXREaXIpaW5jbHVkZVx0ay5oOworICAgICAgICAkKE91dERpcilsaWJcJCh0a0xpYk5hbWUpOworICAgICAgICAkKE91dERpcilsaWJcdGskKFRrTWFqb3JWZXJzaW9uKS4kKFRrTWlub3JWZXJzaW9uKSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUa09wdHM+bXN2Y3J0PC9Ua09wdHM+CisgICAgPFRrT3B0cyBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+c3ltYm9scyxtc3ZjcnQ8L1RrT3B0cz4KKyAgICA8VGtEaXJzPlRDTERJUj0iJCh0Y2xEaXIuVHJpbUVuZChgXGApKSIgSU5TVEFMTERJUj0iJChPdXREaXIuVHJpbUVuZChgXGApKSI8L1RrRGlycz4KKyAgICA8RGVidWdGbGFncyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5ERUJVR0ZMQUdTPSItd2Q0NDU2IC13ZDQ0NTcgLXdkNDQ1OCAtd2Q0NDU5IC13ZDQ5OTYiPC9EZWJ1Z0ZsYWdzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmU+c2V0bG9jYWwKK0AoRXhwZWN0ZWRPdXRwdXRzLT4naWYgbm90IGV4aXN0ICIlKEZ1bGxQYXRoKSIgZ290byBidWlsZCcsJworJykKK2dvdG8gOmVvZgorOmJ1aWxkCitzZXQgVkNJTlNUQUxMRElSPSQoVkNJbnN0YWxsRGlyKQorY2QgL0QgIiQodGtEaXIpd2luIgorbm1ha2UgL25vbG9nbyAtZiBtYWtlZmlsZS52YyBSQz1yYyBNQUNISU5FPSQoVGNsTWFjaGluZSkgT1BUUz0kKFRrT3B0cykgJChUa0RpcnMpICQoRGVidWdGbGFncykgYWxsCitubWFrZSAvbm9sb2dvIC1mIG1ha2VmaWxlLnZjIFJDPXJjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGtPcHRzKSAkKFRrRGlycykgJChEZWJ1Z0ZsYWdzKSBpbnN0YWxsLWJpbmFyaWVzIGluc3RhbGwtbGlicmFyaWVzCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRjbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiNWZkNmYxZC0xMjllLTRiZmYtOTM0MC0wMzYwNmZhYzcyODN9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICAKKyAgPFRhcmdldCBOYW1lPSJDb3B5RGxsIiBJbnB1dHM9IiQoT3V0RGlyKVxiaW5cJCh0a0RMTE5hbWUpIiBPdXRwdXRzPSIkKEJ1aWxkUGF0aCkkKHRrRExMTmFtZSkiIEFmdGVyVGFyZ2V0cz0iQnVpbGQiPgorICAgIDxDb3B5IFNvdXJjZUZpbGVzPSIkKE91dERpcilcYmluXCQodGtETExOYW1lKSIgRGVzdGluYXRpb25GaWxlcz0iJChCdWlsZFBhdGgpJCh0a0RMTE5hbWUpIiAvPgorICA8L1RhcmdldD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxEZWxldGUgRmlsZXM9IiQoVGFyZ2V0UGF0aCk7JChCdWlsZFBhdGgpJCh0a0RMTE5hbWUpIiAvPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoSW50RGlyKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCmluZGV4IGM5ZDUyNzguLmEzMDcxZmIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagorKysgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKQEAgLTM5LDE3MCArMzksMzEgQEAKICAgICA8Um9vdE5hbWVzcGFjZT51bmljb2RlZGF0YTwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgogICA8UHJvcGVydHlHcm91cD4KICAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPExpbms+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdnM5dG8xMC5weSBiL1BDYnVpbGQvdnM5dG8xMC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI3ZGFiNS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3ZzOXRvMTAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jUnVuIHRoaXMgZmlsZSBhZnRlciBhdXRvbWF0aWMgY29udmVyc2lvbiBvZiB0aGUgVmlzdWFsU3R1ZGlvIDIwMDggc29sdXRpb24gYnkgVmlzdWFsU3R1ZGlvIDIwMTAuCi0jVGhpcyBjYW4gYmUgZG9uZSB3aGVuZXZlciB0aGUgMjAwOCBzb2x1dGlvbiBjaGFuZ2VzLgotI0l0IHdpbGwgbWFrZSB0aGUgbmVjZXNzYXJ5IGNsZWFudXAgYW5kIHVwZGF0ZXMgdG8gdGhlIHZjeHByb2ogZmlsZXMKLSN0aGUgLnByb3BzIGZpbGVzIG5lZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBoYW5kIGlmIHRoZSAudnNwcm9wcyBmaWxlcyBjaGFuZ2UKLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotCi1kZWYgdnM5dG8xMChzcmMsIGRlc3QpOgotICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoc3JjKToKLSAgICAgICAgcGF0aCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBleHQubG93ZXIoKSBub3QgaW4gKCcudmN4cHJvaicsKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzcmMsIG5hbWUpKQotICAgICAgICBkZXN0bmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRlc3QsIG5hbWUpKQotICAgICAgICBwcmludCgiJXMgLT4gJXMiICUgKGZpbGVuYW1lLCBkZXN0bmFtZSkpCi0KLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsYXN0bGluZSA9IGIiIgotICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZmluOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgotICAgICAgICAgICAgICAgICNyZW1vdmUgcmVkdW5kYW50IGxpbmtlciBvdXRwdXQgaW5mbwotICAgICAgICAgICAgICAgIGlmIGIiPE91dHB1dExpbmU+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGIiPFByb2dyYW1EYXRhYmFzZUZpbGU+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydExpYnJhcnk+IiBpbiBsaW5lIGFuZCBiIjwvSW1wb3J0TGlicmFyeT4iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAjYWRkIG5ldyBwcm9wZXJ0eSBzaGVldCB0byB0aGUgcHl0aG9uY29yZQotICAgICAgICAgICAgICAgIGlmIGltcG9ydGdyb3VwIGFuZCAicHl0aG9uY29yZSIgaW4gbmFtZS5sb3dlcigpOgotICAgICAgICAgICAgICAgICAgICBpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYiJkZWJ1Zy5wcm9wcyIgaW4gbGFzdGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZV9kLnByb3BzIiAvPlxyXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBiInB5dGhvbmNvcmUiIG5vdCBpbiBsYXN0bGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlLnByb3BzIiAvPlxyXG4nKQotICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydEdyb3VwIENvbmRpdGlvbiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBUcnVlCi0gICAgICAgICAgICAgICAgZWxpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCi0gICAgICAgIHdpdGggb3BlbihkZXN0bmFtZSwgJ3diJykgYXMgZm91dDoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBzcmMgPSAiLiIgaWYgbGVuKHN5cy5hcmd2KSA8IDIgZWxzZSBzeXMuYXJndlsxXQotICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguYWJzcGF0aChzcmMpKQotICAgIGRlc3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNyYywgIi4uIiwgbmFtZSArICJVcGQiKSkKLSAgICBvcy5tYWtlZGlycyhkZXN0KQotICAgIHZzOXRvMTAoc3JjLCBkZXN0KQpkaWZmIC0tZ2l0IGEvUENidWlsZC92czl0bzgucHkgYi9QQ2J1aWxkL3ZzOXRvOC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I4OGExNi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3ZzOXRvOC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9ydCBvcwotCi1kZWYgdnM5dG84KHNyYywgZGVzdCk6Ci0gICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihzcmMpOgotICAgICAgICBwYXRoLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIGV4dC5sb3dlcigpIG5vdCBpbiAoJy5zbG4nLCAnLnZjcHJvaicsICcudnNwcm9wcycpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNyYywgbmFtZSkpCi0gICAgICAgIGRlc3RuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGVzdCwgbmFtZSkpCi0gICAgICAgIHByaW50KCIlcyAtPiAlcyIgJSAoZmlsZW5hbWUsIGRlc3RuYW1lKSkKLQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyVScpIGFzIGZpbjoKLSAgICAgICAgICAgIGxpbmVzID0gZmluLnJlYWQoKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCdWZXJzaW9uPSI5LDAwIicsICdWZXJzaW9uPSI4LjAwIicpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ1ZlcnNpb249IjkuMDAiJywgJ1ZlcnNpb249IjguMDAiJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnRm9ybWF0IFZlcnNpb24gMTAuMDAnLCAnRm9ybWF0IFZlcnNpb24gOS4wMCcpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ1Zpc3VhbCBTdHVkaW8gMjAwOCcsICdWaXN1YWwgU3R1ZGlvIDIwMDUnKQotCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ3dpbmluc3QtOS4wJywgJ3dpbmluc3QtOC4wJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnLi5cXCcsICcuLlxcLi5cXCcpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJy4uXFwuLlxcLi5cXC4uXFwnLCAnLi5cXC4uXFwuLlxcJykKLQotICAgICAgICAgICAgIyBCYWguIFZTOC4wIGRvZXMgbm90IGV4cGFuZCBtYWNyb3MgaW4gZmlsZSBuYW1lcy4KLSAgICAgICAgICAgICMgUmVwbGFjZSB0aGVtIGhlcmUuCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJyQoc3FsaXRlM0RpciknLCAnLi5cXC4uXFwuLlxcc3FsaXRlLTMuNi4yMScpCi0KLSAgICAgICAgd2l0aCBvcGVuKGRlc3RuYW1lLCAnd2InKSBhcyBmb3V0OgotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCJcbiIsICJcclxuIikuZW5jb2RlKCkKLSAgICAgICAgICAgIGZvdXQud3JpdGUobGluZXMpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdnM5dG84KHNyYz0iLiIsIGRlc3Q9Ii4uL1BDL1ZTOC4wIikKZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvaiBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagppbmRleCBjZjUxOGU5Li41NDAyMzVhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKKysrIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCkBAIC0zOSwxNzAgKzM5LDMxIEBACiAgICAgPFJvb3ROYW1lc3BhY2U+d2luc291bmQ8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2luc291bmQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3g2NC5wcm9wcyBiL1BDYnVpbGQveDY0LnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODVjMGVmLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQveDY0LnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgQ29uZGl0aW9uPSInJChIT1NUX1BZVEhPTiknIT0nJyI+Ci0gICAgPFB5dGhvbkV4ZT4kKEhPU1RfUFlUSE9OKTwvUHl0aG9uRXhlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QnVmZmVyU2VjdXJpdHlDaGVjaz5mYWxzZTwvQnVmZmVyU2VjdXJpdHlDaGVjaz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagppbmRleCBhYmY0MWY5Li4wMTQ0ZmE5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKQEAgLTEsNiArMSwxNCBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0zMSwxNTggKzM5LDQ0IEBACiAgICAgPFJvb3ROYW1lc3BhY2U+eHhsaW1pdGVkPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X1dJTjMyO19XSU5ETEw7UHlfTElNSVRFRF9BUEk9MHgwMzA0MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA1MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk9MHgwMzA0MDAwMDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQST0weDAzMDQwMDAwOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiIC8+CiAgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbjNkbGwudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ODg1ZDQ4OTgtZDA4ZC00MDkxLTljNDAtYzcwMGNmZTNmYzVhfTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IGRlYmQ4OWUuLmNkMDgzMmQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTksMTMgKzksMTQgQEAKICAgICAgICAgLS0gbm90IHJlYWxseSBhbiBhY3R1YWwgbm9kZSBidXQgdXNlZnVsIGluIEp5dGhvbidzIHR5cGVzeXN0ZW0uCiAgICAgICAgIHwgU3VpdGUoc3RtdCogYm9keSkKIAotICAgIHN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQotICAgICAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCAKKyAgICBzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMpCisgICAgICAgICAgfCBBc3luY0Z1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXQqIGJvZHksIGV4cHIqIGRlY29yYXRvcl9saXN0LCBleHByPyByZXR1cm5zKQorCisgICAgICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsCiAgICAgICAgICAgICAgZXhwciogYmFzZXMsCiAgICAgICAgICAgICAga2V5d29yZCoga2V5d29yZHMsCi0gICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsCi0gICAgICAgICAgICAgZXhwcj8ga3dhcmdzLAogICAgICAgICAgICAgIHN0bXQqIGJvZHksCiAgICAgICAgICAgICAgZXhwciogZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgICAgfCBSZXR1cm4oZXhwcj8gdmFsdWUpCkBAIC0yNiw5ICsyNywxMSBAQAogCiAgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwogICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IEFzeW5jRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKICAgICAgICAgICB8IFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQogICAgICAgICAgIHwgSWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCiAgICAgICAgICAgfCBXaXRoKHdpdGhpdGVtKiBpdGVtcywgc3RtdCogYm9keSkKKyAgICAgICAgICB8IEFzeW5jV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHkpCiAKICAgICAgICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCiAgICAgICAgICAgfCBUcnkoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSwgc3RtdCogZmluYWxib2R5KQpAQCAtNTksMTMgKzYyLDEzIEBACiAgICAgICAgICB8IERpY3RDb21wKGV4cHIga2V5LCBleHByIHZhbHVlLCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQogICAgICAgICAgfCBHZW5lcmF0b3JFeHAoZXhwciBlbHQsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCiAgICAgICAgICAtLSB0aGUgZ3JhbW1hciBjb25zdHJhaW5zIHdoZXJlIHlpZWxkIGV4cHJlc3Npb25zIGNhbiBvY2N1cgorICAgICAgICAgfCBBd2FpdChleHByIHZhbHVlKQogICAgICAgICAgfCBZaWVsZChleHByPyB2YWx1ZSkKICAgICAgICAgIHwgWWllbGRGcm9tKGV4cHIgdmFsdWUpCiAgICAgICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCiAgICAgICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCiAgICAgICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKLSAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAotICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCisgICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcykKICAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgogICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KICAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKQEAgLTc3LDcgKzgwLDcgQEAKICAgICAgICAgIHwgU3Vic2NyaXB0KGV4cHIgdmFsdWUsIHNsaWNlIHNsaWNlLCBleHByX2NvbnRleHQgY3R4KQogICAgICAgICAgfCBTdGFycmVkKGV4cHIgdmFsdWUsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgICAgICB8IE5hbWUoaWRlbnRpZmllciBpZCwgZXhwcl9jb250ZXh0IGN0eCkKLSAgICAgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KSAKKyAgICAgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQogICAgICAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQogCiAgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcwpAQCAtODUsMTMgKzg4LDEzIEBACiAKICAgICBleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQogCi0gICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAotICAgICAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAotICAgICAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCisgICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApCisgICAgICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykKKyAgICAgICAgICB8IEluZGV4KGV4cHIgdmFsdWUpCiAKLSAgICBib29sb3AgPSBBbmQgfCBPciAKKyAgICBib29sb3AgPSBBbmQgfCBPcgogCi0gICAgb3BlcmF0b3IgPSBBZGQgfCBTdWIgfCBNdWx0IHwgRGl2IHwgTW9kIHwgUG93IHwgTFNoaWZ0IAorICAgIG9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IE1hdE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQKICAgICAgICAgICAgICAgICAgfCBSU2hpZnQgfCBCaXRPciB8IEJpdFhvciB8IEJpdEFuZCB8IEZsb29yRGl2CiAKICAgICB1bmFyeW9wID0gSW52ZXJ0IHwgTm90IHwgVUFkZCB8IFVTdWIKQEAgLTEwOSw4ICsxMTIsOCBAQAogICAgIGFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLSAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCi0gICAga2V5d29yZCA9IChpZGVudGlmaWVyIGFyZywgZXhwciB2YWx1ZSkKKyAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsIChOVUxMIGlkZW50aWZpZXIgZm9yICoqa3dhcmdzKQorICAgIGtleXdvcmQgPSAoaWRlbnRpZmllcj8gYXJnLCBleHByIHZhbHVlKQogCiAgICAgLS0gaW1wb3J0IG5hbWUgd2l0aCBvcHRpb25hbCAnYXMnIGFsaWFzLgogICAgIGFsaWFzID0gKGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllcj8gYXNuYW1lKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCBmYzFiMTZjLi4xMjFjZGFiIDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMSwyNTUgKzEsNTIgQEAKLSIiIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBaZXBoeXIgQWJzdHJhY3QgU3ludGF4IERlZmluaXRpb24gTGFuZ3VhZ2UuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQYXJzZXIgZm9yIEFTREwgWzFdIGRlZmluaXRpb24gZmlsZXMuIFJlYWRzIGluIGFuIEFTREwgZGVzY3JpcHRpb24gYW5kIHBhcnNlcworIyBpdCBpbnRvIGFuIEFTVCB0aGF0IGRlc2NyaWJlcyBpdC4KKyMKKyMgVGhlIEVCTkYgd2UncmUgcGFyc2luZyBoZXJlOiBGaWd1cmUgMSBvZiB0aGUgcGFwZXIgWzFdLiBFeHRlbmRlZCB0byBzdXBwb3J0CisjIG1vZHVsZXMgYW5kIGF0dHJpYnV0ZXMgYWZ0ZXIgYSBwcm9kdWN0LiBXb3JkcyBzdGFydGluZyB3aXRoIENhcGl0YWwgbGV0dGVycworIyBhcmUgdGVybWluYWxzLiBMaXRlcmFsIHRva2VucyBhcmUgaW4gImRvdWJsZSBxdW90ZXMiLiBPdGhlcnMgYXJlCisjIG5vbi10ZXJtaW5hbHMuIElkIGlzIGVpdGhlciBUb2tlbklkIG9yIENvbnN0cnVjdG9ySWQuCisjCisjIG1vZHVsZSAgICAgICAgOjo9ICJtb2R1bGUiIElkICJ7IiBbZGVmaW5pdGlvbnNdICJ9IgorIyBkZWZpbml0aW9ucyAgIDo6PSB7IFR5cGVJZCAiPSIgdHlwZSB9CisjIHR5cGUgICAgICAgICAgOjo9IHByb2R1Y3QgfCBzdW0KKyMgcHJvZHVjdCAgICAgICA6Oj0gZmllbGRzIFsiYXR0cmlidXRlcyIgZmllbGRzXQorIyBmaWVsZHMgICAgICAgIDo6PSAiKCIgeyBmaWVsZCwgIiwiIH0gZmllbGQgIikiCisjIGZpZWxkICAgICAgICAgOjo9IFR5cGVJZCBbIj8iIHwgIioiXSBbSWRdCisjIHN1bSAgICAgICAgICAgOjo9IGNvbnN0cnVjdG9yIHsgInwiIGNvbnN0cnVjdG9yIH0gWyJhdHRyaWJ1dGVzIiBmaWVsZHNdCisjIGNvbnN0cnVjdG9yICAgOjo9IENvbnN0cnVjdG9ySWQgW2ZpZWxkc10KKyMKKyMgWzFdICJUaGUgWmVwaHlyIEFic3RyYWN0IFN5bnRheCBEZXNjcmlwdGlvbiBMYW5ndWFnZSIgYnkgV2FuZywgZXQuIGFsLiBTZWUKKyMgICAgIGh0dHA6Ly9hc2RsLnNvdXJjZWZvcmdlLm5ldC8KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitpbXBvcnQgcmUKIAotU2VlIGh0dHA6Ly9hc2RsLnNvdXJjZWZvcmdlLm5ldC8gYW5kCi1odHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvcmVzZWFyY2gvdGVjaHJlcHMvVFItNTU0LTk3CitfX2FsbF9fID0gWworICAgICdidWlsdGluX3R5cGVzJywgJ3BhcnNlJywgJ0FTVCcsICdNb2R1bGUnLCAnVHlwZScsICdDb25zdHJ1Y3RvcicsCisgICAgJ0ZpZWxkJywgJ1N1bScsICdQcm9kdWN0JywgJ1Zpc2l0b3JCYXNlJywgJ0NoZWNrJywgJ2NoZWNrJ10KIAotT25seSBzdXBwb3J0cyB0b3AgbGV2ZWwgbW9kdWxlIGRlY2wsIG5vdCB2aWV3LiAgSSdtIGd1ZXNzaW5nIHRoYXQgdmlldwotaXMgaW50ZW5kZWQgdG8gc3VwcG9ydCB0aGUgYnJvd3NlciBhbmQgSSdtIG5vdCBpbnRlcmVzdGVkIGluIHRoZQotYnJvd3Nlci4KKyMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGRlZmluZSBub2RlcyBpbnRvIHdoaWNoIHRoZSBBU0RMIGRlc2NyaXB0aW9uIGlzIHBhcnNlZC4KKyMgTm90ZTogdGhpcyBpcyBhICJtZXRhLUFTVCIuIEFTREwgZmlsZXMgKHN1Y2ggYXMgUHl0aG9uLmFzZGwpIGRlc2NyaWJlIHRoZSBBU1QKKyMgc3RydWN0dXJlIHVzZWQgYnkgYSBwcm9ncmFtbWluZyBsYW5ndWFnZS4gQnV0IEFTREwgZmlsZXMgdGhlbXNlbHZlcyBuZWVkIHRvIGJlCisjIHBhcnNlZC4gVGhpcyBtb2R1bGUgcGFyc2VzIEFTREwgZmlsZXMgYW5kIHVzZXMgYSBzaW1wbGUgQVNUIHRvIHJlcHJlc2VudCB0aGVtLgorIyBTZWUgdGhlIEVCTkYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb24KKyMgYmV0d2VlbiB0aGUgdmFyaW91cyBub2RlIHR5cGVzLgogCi1DaGFuZ2VzIGZvciBQeXRob246IEFkZCBzdXBwb3J0IGZvciBtb2R1bGUgdmVyc2lvbnMKLSIiIgorYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nfQogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0cmFjZWJhY2sKLQotaW1wb3J0IHNwYXJrCi0KLWRlZiBvdXRwdXQoKnN0cmluZ3MpOgotICAgIGZvciBzIGluIHN0cmluZ3M6Ci0gICAgICAgIHN5cy5zdGRvdXQud3JpdGUoc3RyKHMpICsgIlxuIikKLQotCi1jbGFzcyBUb2tlbihvYmplY3QpOgotICAgICMgc3Bhcmsgc2VlbXMgdG8gZGlzcGF0Y2ggaW4gdGhlIHBhcnNlciBiYXNlZCBvbiBhIHRva2VuJ3MKLSAgICAjIHR5cGUgYXR0cmlidXRlCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGUsIGxpbmVubyk6Ci0gICAgICAgIHNlbGYudHlwZSA9IHR5cGUKLSAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50eXBlCi0KK2NsYXNzIEFTVDoKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIoc2VsZikKLQotY2xhc3MgSWQoVG9rZW4pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSwgbGluZW5vKToKLSAgICAgICAgc2VsZi50eXBlID0gJ0lkJwotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKLSAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQotCi1jbGFzcyBTdHJpbmcoVG9rZW4pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSwgbGluZW5vKToKLSAgICAgICAgc2VsZi50eXBlID0gJ1N0cmluZycKLSAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCi0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0KLWNsYXNzIEFTRExTeW50YXhFcnJvcihFeGNlcHRpb24pOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVubywgdG9rZW49Tm9uZSwgbXNnPU5vbmUpOgotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotICAgICAgICBzZWxmLnRva2VuID0gdG9rZW4KLSAgICAgICAgc2VsZi5tc2cgPSBtc2cKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1zZyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJFcnJvciBhdCAnJXMnLCBsaW5lICVkIiAlIChzZWxmLnRva2VuLCBzZWxmLmxpbmVubykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiJXMsIGxpbmUgJWQiICUgKHNlbGYubXNnLCBzZWxmLmxpbmVubykKLQotY2xhc3MgQVNETFNjYW5uZXIoc3BhcmsuR2VuZXJpY1NjYW5uZXIsIG9iamVjdCk6Ci0KLSAgICBkZWYgdG9rZW5pemUoc2VsZiwgaW5wdXQpOgotICAgICAgICBzZWxmLnJ2ID0gW10KLSAgICAgICAgc2VsZi5saW5lbm8gPSAxCi0gICAgICAgIHN1cGVyKEFTRExTY2FubmVyLCBzZWxmKS50b2tlbml6ZShpbnB1dCkKLSAgICAgICAgcmV0dXJuIHNlbGYucnYKLQotICAgIGRlZiB0X2lkKHNlbGYsIHMpOgotICAgICAgICByIltcd1wuXSsiCi0gICAgICAgICMgWFhYIGRvZXNuJ3QgZGlzdGluZ3Vpc2ggdXBwZXIgdnMuIGxvd2VyLCB3aGljaCBpcwotICAgICAgICAjIHNpZ25pZmljYW50IGZvciBBU0RMLgotICAgICAgICBzZWxmLnJ2LmFwcGVuZChJZChzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF9zdHJpbmcoc2VsZiwgcyk6Ci0gICAgICAgIHInIlteIl0qIicKLSAgICAgICAgc2VsZi5ydi5hcHBlbmQoU3RyaW5nKHMsIHNlbGYubGluZW5vKSkKLQotICAgIGRlZiB0X3h4eChzZWxmLCBzKTogIyBub3Qgc3VyZSB3aGF0IHRoaXMgcHJvZHVjdGlvbiBtZWFucwotICAgICAgICByIjw9IgotICAgICAgICBzZWxmLnJ2LmFwcGVuZChUb2tlbihzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF9wdW5jdHVhdGlvbihzZWxmLCBzKToKLSAgICAgICAgciJbXHtcfVwqXD1cfFwoXClcLFw/XDpdIgotICAgICAgICBzZWxmLnJ2LmFwcGVuZChUb2tlbihzLCBzZWxmLmxpbmVubykpCi0KLSAgICBkZWYgdF9jb21tZW50KHNlbGYsIHMpOgotICAgICAgICByIlwtXC1bXlxuXSoiCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0X25ld2xpbmUoc2VsZiwgcyk6Ci0gICAgICAgIHIiXG4iCi0gICAgICAgIHNlbGYubGluZW5vICs9IDEKLQotICAgIGRlZiB0X3doaXRlc3BhY2Uoc2VsZiwgcyk6Ci0gICAgICAgIHIiWyBcdF0rIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdF9kZWZhdWx0KHNlbGYsIHMpOgotICAgICAgICByIiAuICsiCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVubWF0Y2hlZCBpbnB1dDogJXIiICUgcykKLQotY2xhc3MgQVNETFBhcnNlcihzcGFyay5HZW5lcmljUGFyc2VyLCBvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoQVNETFBhcnNlciwgc2VsZikuX19pbml0X18oIm1vZHVsZSIpCi0KLSAgICBkZWYgdHlwZXN0cmluZyhzZWxmLCB0b2spOgotICAgICAgICByZXR1cm4gdG9rLnR5cGUKLQotICAgIGRlZiBlcnJvcihzZWxmLCB0b2spOgotICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IodG9rLmxpbmVubywgdG9rKQotCi0gICAgZGVmIHBfbW9kdWxlXzAoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBfMSA9IGluZm8KLSAgICAgICAgaWYgbW9kdWxlLnZhbHVlICE9ICJtb2R1bGUiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKG1vZHVsZS5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAnbW9kdWxlJywgZm91bmQgJXMiICUgbW9kdWxlKQotICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIE5vbmUpCi0KLSAgICBkZWYgcF9tb2R1bGUoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IGRlZmluaXRpb25zIH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCi0gICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKLSAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucykKLQotICAgIGRlZiBwX2RlZmluaXRpb25fMChzZWxmLCBkZWZpbml0aW9uKToKLSAgICAgICAgIiBkZWZpbml0aW9ucyA6Oj0gZGVmaW5pdGlvbiAiCi0gICAgICAgIHJldHVybiBkZWZpbml0aW9uWzBdCi0KLSAgICBkZWYgcF9kZWZpbml0aW9uXzEoc2VsZiwgZGVmaW5pdGlvbnMpOgotICAgICAgICAiIGRlZmluaXRpb25zIDo6PSBkZWZpbml0aW9uIGRlZmluaXRpb25zICIKLSAgICAgICAgcmV0dXJuIGRlZmluaXRpb25zWzBdICsgZGVmaW5pdGlvbnNbMV0KLQotICAgIGRlZiBwX2RlZmluaXRpb24oc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZGVmaW5pdGlvbiA6Oj0gSWQgPSB0eXBlICIKLSAgICAgICAgaWQsIF8sIHR5cGUgPSBpbmZvCi0gICAgICAgIHJldHVybiBbVHlwZShpZCwgdHlwZSldCi0KLSAgICBkZWYgcF90eXBlXzAoc2VsZiwgcHJvZHVjdCk6Ci0gICAgICAgICIgdHlwZSA6Oj0gcHJvZHVjdCAiCi0gICAgICAgIHJldHVybiBwcm9kdWN0WzBdCi0KLSAgICBkZWYgcF90eXBlXzEoc2VsZiwgc3VtKToKLSAgICAgICAgIiB0eXBlIDo6PSBzdW0gIgotICAgICAgICByZXR1cm4gU3VtKHN1bVswXSkKLQotICAgIGRlZiBwX3R5cGVfMihzZWxmLCBpbmZvKToKLSAgICAgICAgIiB0eXBlIDo6PSBzdW0gSWQgKCBmaWVsZHMgKSAiCi0gICAgICAgIHN1bSwgaWQsIF8wLCBhdHRyaWJ1dGVzLCBfMSA9IGluZm8KLSAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICByZXR1cm4gU3VtKHN1bSwgYXR0cmlidXRlcykKLQotICAgIGRlZiBwX3Byb2R1Y3RfMChzZWxmLCBpbmZvKToKLSAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApICIKLSAgICAgICAgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcykKLQotICAgIGRlZiBwX3Byb2R1Y3RfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApIElkICggZmllbGRzICkgIgotICAgICAgICBfMCwgZmllbGRzLCBfMSwgaWQsIF8yLCBhdHRyaWJ1dGVzLCBfMyA9IGluZm8KLSAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICByZXR1cm4gUHJvZHVjdChmaWVsZHMsIGF0dHJpYnV0ZXMpCi0KLSAgICBkZWYgcF9zdW1fMChzZWxmLCBjb25zdHJ1Y3Rvcik6Ci0gICAgICAgICIgc3VtIDo6PSBjb25zdHJ1Y3RvciAiCi0gICAgICAgIHJldHVybiBbY29uc3RydWN0b3JbMF1dCi0KLSAgICBkZWYgcF9zdW1fMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBzdW0gOjo9IGNvbnN0cnVjdG9yIHwgc3VtICIKLSAgICAgICAgY29uc3RydWN0b3IsIF8sIHN1bSA9IGluZm8KLSAgICAgICAgcmV0dXJuIFtjb25zdHJ1Y3Rvcl0gKyBzdW0KLQotICAgIGRlZiBwX3N1bV8yKHNlbGYsIGluZm8pOgotICAgICAgICAiIHN1bSA6Oj0gY29uc3RydWN0b3IgfCBzdW0gIgotICAgICAgICBjb25zdHJ1Y3RvciwgXywgc3VtID0gaW5mbwotICAgICAgICByZXR1cm4gW2NvbnN0cnVjdG9yXSArIHN1bQotCi0gICAgZGVmIHBfY29uc3RydWN0b3JfMChzZWxmLCBpZCk6Ci0gICAgICAgICIgY29uc3RydWN0b3IgOjo9IElkICIKLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdG9yKGlkWzBdKQotCi0gICAgZGVmIHBfY29uc3RydWN0b3JfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBjb25zdHJ1Y3RvciA6Oj0gSWQgKCBmaWVsZHMgKSAiCi0gICAgICAgIGlkLCBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgcmV0dXJuIENvbnN0cnVjdG9yKGlkLCBmaWVsZHMpCi0KLSAgICBkZWYgcF9maWVsZHNfMChzZWxmLCBmaWVsZCk6Ci0gICAgICAgICIgZmllbGRzIDo6PSBmaWVsZCAiCi0gICAgICAgIHJldHVybiBbZmllbGRbMF1dCi0KLSAgICBkZWYgcF9maWVsZHNfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkcyAsIGZpZWxkICIKLSAgICAgICAgZmllbGRzLCBfLCBmaWVsZCA9IGluZm8KLSAgICAgICAgcmV0dXJuIGZpZWxkcyArIFtmaWVsZF0KLQotICAgIGRlZiBwX2ZpZWxkXzAoc2VsZiwgdHlwZV8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCAiCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlX1swXSkKLQotICAgIGRlZiBwX2ZpZWxkXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkIElkICIKLSAgICAgICAgdHlwZSwgbmFtZSA9IGluZm8KLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGUsIG5hbWUpCi0KLSAgICBkZWYgcF9maWVsZF8yKHNlbGYsIGluZm8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCAqIElkICIKLSAgICAgICAgdHlwZSwgXywgbmFtZSA9IGluZm8KLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGUsIG5hbWUsIHNlcT1UcnVlKQotCi0gICAgZGVmIHBfZmllbGRfMyhzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgPyBJZCAiCi0gICAgICAgIHR5cGUsIF8sIG5hbWUgPSBpbmZvCi0gICAgICAgIHJldHVybiBGaWVsZCh0eXBlLCBuYW1lLCBvcHQ9VHJ1ZSkKLQotICAgIGRlZiBwX2ZpZWxkXzQoc2VsZiwgdHlwZV8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCAqICIKLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVfWzBdLCBzZXE9VHJ1ZSkKLQotICAgIGRlZiBwX2ZpZWxkXzUoc2VsZiwgdHlwZV8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCA/ICIKLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVbMF0sIG9wdD1UcnVlKQotCi1idWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJieXRlcyIsICJpbnQiLCAib2JqZWN0IiwgInNpbmdsZXRvbiIpCi0KLSMgYmVsb3cgaXMgYSBjb2xsZWN0aW9uIG9mIGNsYXNzZXMgdG8gY2FwdHVyZSB0aGUgQVNUIG9mIGFuIEFTVCA6LSkKLSMgbm90IHN1cmUgaWYgYW55IG9mIHRoZSBtZXRob2RzIGFyZSB1c2VmdWwgeWV0LCBidXQgSSdtIGFkZGluZyB0aGVtCi0jIHBpZWNlbWVhbCBhcyB0aGV5IHNlZW0gaGVscGZ1bAotCi1jbGFzcyBBU1Qob2JqZWN0KToKLSAgICBwYXNzICMgYSBtYXJrZXIgY2xhc3MKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiBjbGFzcyBNb2R1bGUoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZGZucyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5kZm5zID0gZGZucwotICAgICAgICBzZWxmLnR5cGVzID0ge30gIyBtYXBzIHR5cGUgbmFtZSB0byB2YWx1ZSAoZnJvbSBkZm5zKQotICAgICAgICBmb3IgdHlwZSBpbiBkZm5zOgotICAgICAgICAgICAgc2VsZi50eXBlc1t0eXBlLm5hbWUudmFsdWVdID0gdHlwZS52YWx1ZQorICAgICAgICBzZWxmLnR5cGVzID0ge3R5cGUubmFtZTogdHlwZS52YWx1ZSBmb3IgdHlwZSBpbiBkZm5zfQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIk1vZHVsZSglcywgJXMpIiAlIChzZWxmLm5hbWUsIHNlbGYuZGZucykKKyAgICAgICAgcmV0dXJuICdNb2R1bGUoezAubmFtZX0sIHswLmRmbnN9KScuZm9ybWF0KHNlbGYpCiAKIGNsYXNzIFR5cGUoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdmFsdWUpOgpAQCAtMjU3LDcgKzU0LDcgQEAKICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiVHlwZSglcywgJXMpIiAlIChzZWxmLm5hbWUsIHNlbGYudmFsdWUpCisgICAgICAgIHJldHVybiAnVHlwZSh7MC5uYW1lfSwgezAudmFsdWV9KScuZm9ybWF0KHNlbGYpCiAKIGNsYXNzIENvbnN0cnVjdG9yKEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGZpZWxkcz1Ob25lKToKQEAgLTI2NSw3ICs2Miw3IEBACiAgICAgICAgIHNlbGYuZmllbGRzID0gZmllbGRzIG9yIFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiQ29uc3RydWN0b3IoJXMsICVzKSIgJSAoc2VsZi5uYW1lLCBzZWxmLmZpZWxkcykKKyAgICAgICAgcmV0dXJuICdDb25zdHJ1Y3Rvcih7MC5uYW1lfSwgezAuZmllbGRzfSknLmZvcm1hdChzZWxmKQogCiBjbGFzcyBGaWVsZChBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlLCBuYW1lPU5vbmUsIHNlcT1GYWxzZSwgb3B0PUZhbHNlKToKQEAgLTI4Miw5ICs3OSw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHRyYSA9ICIiCiAgICAgICAgIGlmIHNlbGYubmFtZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJGaWVsZCglcyVzKSIgJSAoc2VsZi50eXBlLCBleHRyYSkKKyAgICAgICAgICAgIHJldHVybiAnRmllbGQoezAudHlwZX17MX0pJy5mb3JtYXQoc2VsZiwgZXh0cmEpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIkZpZWxkKCVzLCAlcyVzKSIgJSAoc2VsZi50eXBlLCBzZWxmLm5hbWUsIGV4dHJhKQorICAgICAgICAgICAgcmV0dXJuICdGaWVsZCh7MC50eXBlfSwgezAubmFtZX17MX0pJy5mb3JtYXQoc2VsZiwgZXh0cmEpCiAKIGNsYXNzIFN1bShBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlcywgYXR0cmlidXRlcz1Ob25lKToKQEAgLTI5MiwxMCArODksMTAgQEAKICAgICAgICAgc2VsZi5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyBvciBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAiU3VtKCVzKSIgJSBzZWxmLnR5cGVzCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlczoKKyAgICAgICAgICAgIHJldHVybiAnU3VtKHswLnR5cGVzfSwgezAuYXR0cmlidXRlc30pJy5mb3JtYXQoc2VsZikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiU3VtKCVzLCAlcykiICUgKHNlbGYudHlwZXMsIHNlbGYuYXR0cmlidXRlcykKKyAgICAgICAgICAgIHJldHVybiAnU3VtKHswLnR5cGVzfSknLmZvcm1hdChzZWxmKQogCiBjbGFzcyBQcm9kdWN0KEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpZWxkcywgYXR0cmlidXRlcz1Ob25lKToKQEAgLTMwMyw0OSArMTAwLDQzIEBACiAgICAgICAgIHNlbGYuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgb3IgW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5hdHRyaWJ1dGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIlByb2R1Y3QoJXMpIiAlIHNlbGYuZmllbGRzCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlczoKKyAgICAgICAgICAgIHJldHVybiAnUHJvZHVjdCh7MC5maWVsZHN9LCB7MC5hdHRyaWJ1dGVzfSknLmZvcm1hdChzZWxmKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJQcm9kdWN0KCVzLCAlcykiICUgKHNlbGYuZmllbGRzLCBzZWxmLmF0dHJpYnV0ZXMpCisgICAgICAgICAgICByZXR1cm4gJ1Byb2R1Y3QoezAuZmllbGRzfSknLmZvcm1hdChzZWxmKQorCisjIEEgZ2VuZXJpYyB2aXNpdG9yIGZvciB0aGUgbWV0YS1BU1QgdGhhdCBkZXNjcmliZXMgQVNETC4gVGhpcyBjYW4gYmUgdXNlZCBieQorIyBlbWl0dGVycy4gTm90ZSB0aGF0IHRoaXMgdmlzaXRvciBkb2VzIG5vdCBwcm92aWRlIGEgZ2VuZXJpYyB2aXNpdCBtZXRob2QsIHNvIGEKKyMgc3ViY2xhc3MgbmVlZHMgdG8gZGVmaW5lIHZpc2l0IG1ldGhvZHMgZnJvbSB2aXNpdE1vZHVsZSB0byBhcyBkZWVwIGFzIHRoZQorIyBpbnRlcmVzdGluZyBub2RlLgorIyBXZSBhbHNvIGRlZmluZSBhIENoZWNrIHZpc2l0b3IgdGhhdCBtYWtlcyBzdXJlIHRoZSBwYXJzZWQgQVNETCBpcyB3ZWxsLWZvcm1lZC4KIAogY2xhc3MgVmlzaXRvckJhc2Uob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBza2lwPUZhbHNlKToKKyAgICAiIiJHZW5lcmljIHRyZWUgdmlzaXRvciBmb3IgQVNUcy4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuY2FjaGUgPSB7fQotICAgICAgICBzZWxmLnNraXAgPSBza2lwCiAKLSAgICBkZWYgdmlzaXQoc2VsZiwgb2JqZWN0LCAqYXJncyk6Ci0gICAgICAgIG1ldGggPSBzZWxmLl9kaXNwYXRjaChvYmplY3QpCi0gICAgICAgIGlmIG1ldGggaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZXRoKG9iamVjdCwgKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBvdXRwdXQoIkVycm9yIHZpc2l0aW5nIiArIHJlcHIob2JqZWN0KSkKLSAgICAgICAgICAgIG91dHB1dChzdHIoc3lzLmV4Y19pbmZvKClbMV0pKQotICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAjIFhYWCBoYWNrCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdmaWxlJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5maWxlLmZsdXNoKCkKLSAgICAgICAgICAgIG9zLl9leGl0KDEpCi0KLSAgICBkZWYgX2Rpc3BhdGNoKHNlbGYsIG9iamVjdCk6Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG9iamVjdCwgQVNUKSwgcmVwcihvYmplY3QpCi0gICAgICAgIGtsYXNzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgIGRlZiB2aXNpdChzZWxmLCBvYmosICphcmdzKToKKyAgICAgICAga2xhc3MgPSBvYmouX19jbGFzc19fCiAgICAgICAgIG1ldGggPSBzZWxmLmNhY2hlLmdldChrbGFzcykKICAgICAgICAgaWYgbWV0aCBpcyBOb25lOgogICAgICAgICAgICAgbWV0aG5hbWUgPSAidmlzaXQiICsga2xhc3MuX19uYW1lX18KLSAgICAgICAgICAgIGlmIHNlbGYuc2tpcDoKLSAgICAgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCBtZXRobmFtZSwgTm9uZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgbWV0aG5hbWUpCisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCBtZXRobmFtZSwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuY2FjaGVba2xhc3NdID0gbWV0aAotICAgICAgICByZXR1cm4gbWV0aAorICAgICAgICBpZiBtZXRoOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1ldGgob2JqLCAqYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwcmludCgiRXJyb3IgdmlzaXRpbmcgJXI6ICVzIiAlIChvYmosIGUpKQorICAgICAgICAgICAgICAgIHJhaXNlCiAKIGNsYXNzIENoZWNrKFZpc2l0b3JCYXNlKToKKyAgICAiIiJBIHZpc2l0b3IgdGhhdCBjaGVja3MgYSBwYXJzZWQgQVNETCB0cmVlIGZvciBjb3JyZWN0bmVzcy4KIAorICAgIEVycm9ycyBhcmUgcHJpbnRlZCBhbmQgYWNjdW11bGF0ZWQuCisgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihDaGVjaywgc2VsZikuX19pbml0X18oc2tpcD1UcnVlKQorICAgICAgICBzdXBlcihDaGVjaywgc2VsZikuX19pbml0X18oKQogICAgICAgICBzZWxmLmNvbnMgPSB7fQogICAgICAgICBzZWxmLmVycm9ycyA9IDAKICAgICAgICAgc2VsZi50eXBlcyA9IHt9CkBAIC0zNjcsOCArMTU4LDggQEAKICAgICAgICAgaWYgY29uZmxpY3QgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuY29uc1trZXldID0gbmFtZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0cHV0KCJSZWRlZmluaXRpb24gb2YgY29uc3RydWN0b3IgJXMiICUga2V5KQotICAgICAgICAgICAgb3V0cHV0KCJEZWZpbmVkIGluICVzIGFuZCAlcyIgJSAoY29uZmxpY3QsIG5hbWUpKQorICAgICAgICAgICAgcHJpbnQoJ1JlZGVmaW5pdGlvbiBvZiBjb25zdHJ1Y3RvciB7fScuZm9ybWF0KGtleSkpCisgICAgICAgICAgICBwcmludCgnRGVmaW5lZCBpbiB7fSBhbmQge30nLmZvcm1hdChjb25mbGljdCwgbmFtZSkpCiAgICAgICAgICAgICBzZWxmLmVycm9ycyArPSAxCiAgICAgICAgIGZvciBmIGluIGNvbnMuZmllbGRzOgogICAgICAgICAgICAgc2VsZi52aXNpdChmLCBrZXkpCkBAIC0zODMsNiArMTc0LDExIEBACiAgICAgICAgICAgICBzZWxmLnZpc2l0KGYsIG5hbWUpCiAKIGRlZiBjaGVjayhtb2QpOgorICAgICIiIkNoZWNrIHRoZSBwYXJzZWQgQVNETCB0cmVlIGZvciBjb3JyZWN0bmVzcy4KKworICAgIFJldHVybiBUcnVlIGlmIHN1Y2Nlc3MuIEZvciBmYWlsdXJlLCB0aGUgZXJyb3JzIGFyZSBwcmludGVkIG91dCBhbmQgRmFsc2UKKyAgICBpcyByZXR1cm5lZC4KKyAgICAiIiIKICAgICB2ID0gQ2hlY2soKQogICAgIHYudmlzaXQobW9kKQogCkBAIC0zOTAsNDcgKzE4NiwxOTAgQEAKICAgICAgICAgaWYgdCBub3QgaW4gbW9kLnR5cGVzIGFuZCBub3QgdCBpbiBidWlsdGluX3R5cGVzOgogICAgICAgICAgICAgdi5lcnJvcnMgKz0gMQogICAgICAgICAgICAgdXNlcyA9ICIsICIuam9pbih2LnR5cGVzW3RdKQotICAgICAgICAgICAgb3V0cHV0KCJVbmRlZmluZWQgdHlwZSAlcywgdXNlZCBpbiAlcyIgJSAodCwgdXNlcykpCi0KKyAgICAgICAgICAgIHByaW50KCdVbmRlZmluZWQgdHlwZSB7fSwgdXNlZCBpbiB7fScuZm9ybWF0KHQsIHVzZXMpKQogICAgIHJldHVybiBub3Qgdi5lcnJvcnMKIAotZGVmIHBhcnNlKGZpbGUpOgotICAgIHNjYW5uZXIgPSBBU0RMU2Nhbm5lcigpCi0gICAgcGFyc2VyID0gQVNETFBhcnNlcigpCisjIFRoZSBBU0RMIHBhcnNlciBpdHNlbGYgY29tZXMgbmV4dC4gVGhlIG9ubHkgaW50ZXJlc3RpbmcgZXh0ZXJuYWwgaW50ZXJmYWNlCisjIGhlcmUgaXMgdGhlIHRvcC1sZXZlbCBwYXJzZSBmdW5jdGlvbi4KIAotICAgIGYgPSBvcGVuKGZpbGUpCi0gICAgdHJ5OgotICAgICAgICBidWYgPSBmLnJlYWQoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQotICAgIHRva2VucyA9IHNjYW5uZXIudG9rZW5pemUoYnVmKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZSh0b2tlbnMpCi0gICAgZXhjZXB0IEFTRExTeW50YXhFcnJvcjoKLSAgICAgICAgZXJyID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAgb3V0cHV0KHN0cihlcnIpKQotICAgICAgICBsaW5lcyA9IGJ1Zi5zcGxpdCgiXG4iKQotICAgICAgICBvdXRwdXQobGluZXNbZXJyLmxpbmVubyAtIDFdKSAjIGxpbmVzIHN0YXJ0cyBhdCAwLCBmaWxlcyBhdCAxCitkZWYgcGFyc2UoZmlsZW5hbWUpOgorICAgICIiIlBhcnNlIEFTREwgZnJvbSB0aGUgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGEgTW9kdWxlIG5vZGUgZGVzY3JpYmluZyBpdC4iIiIKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgIHBhcnNlciA9IEFTRExQYXJzZXIoKQorICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKGYucmVhZCgpKQogCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBnbG9iCi0gICAgaW1wb3J0IHN5cworIyBUeXBlcyBmb3IgZGVzY3JpYmluZyB0b2tlbnMgaW4gYW4gQVNETCBzcGVjaWZpY2F0aW9uLgorY2xhc3MgVG9rZW5LaW5kOgorICAgICIiIlRva2VuS2luZCBpcyBwcm92aWRlcyBhIHNjb3BlIGZvciBlbnVtZXJhdGVkIHRva2VuIGtpbmRzLiIiIgorICAgIChDb25zdHJ1Y3RvcklkLCBUeXBlSWQsIEVxdWFscywgQ29tbWEsIFF1ZXN0aW9uLCBQaXBlLCBBc3RlcmlzaywKKyAgICAgTFBhcmVuLCBSUGFyZW4sIExCcmFjZSwgUkJyYWNlKSA9IHJhbmdlKDExKQogCi0gICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6Ci0gICAgICAgIGZpbGVzID0gc3lzLmFyZ3ZbMTpdCi0gICAgZWxzZToKLSAgICAgICAgdGVzdGRpciA9ICJ0ZXN0cyIKLSAgICAgICAgZmlsZXMgPSBnbG9iLmdsb2IodGVzdGRpciArICIvKi5hc2RsIikKKyAgICBvcGVyYXRvcl90YWJsZSA9IHsKKyAgICAgICAgJz0nOiBFcXVhbHMsICcsJzogQ29tbWEsICAgICc/JzogUXVlc3Rpb24sICd8JzogUGlwZSwgICAgJygnOiBMUGFyZW4sCisgICAgICAgICcpJzogUlBhcmVuLCAnKic6IEFzdGVyaXNrLCAneyc6IExCcmFjZSwgICAnfSc6IFJCcmFjZX0KIAotICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICBvdXRwdXQoZmlsZSkKLSAgICAgICAgbW9kID0gcGFyc2UoZmlsZSkKLSAgICAgICAgaWYgbm90IG1vZDoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIG91dHB1dCgibW9kdWxlIiwgbW9kLm5hbWUpCi0gICAgICAgIG91dHB1dChsZW4obW9kLmRmbnMpLCAiZGVmaW5pdGlvbnMiKQotICAgICAgICBpZiBub3QgY2hlY2sobW9kKToKLSAgICAgICAgICAgIG91dHB1dCgiQ2hlY2sgZmFpbGVkIikKK1Rva2VuID0gbmFtZWR0dXBsZSgnVG9rZW4nLCAna2luZCB2YWx1ZSBsaW5lbm8nKQorCitjbGFzcyBBU0RMU3ludGF4RXJyb3IoRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnLCBsaW5lbm89Tm9uZSk6CisgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vIG9yICc8dW5rbm93bj4nCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdTeW50YXggZXJyb3Igb24gbGluZSB7MC5saW5lbm99OiB7MC5tc2d9Jy5mb3JtYXQoc2VsZikKKworZGVmIHRva2VuaXplX2FzZGwoYnVmKToKKyAgICAiIiJUb2tlbml6ZSB0aGUgZ2l2ZW4gYnVmZmVyLiBZaWVsZCBUb2tlbiBvYmplY3RzLiIiIgorICAgIGZvciBsaW5lbm8sIGxpbmUgaW4gZW51bWVyYXRlKGJ1Zi5zcGxpdGxpbmVzKCksIDEpOgorICAgICAgICBmb3IgbSBpbiByZS5maW5kaXRlcihyJ1xzKihcdyt8LS0uKnwuKScsIGxpbmUuc3RyaXAoKSk6CisgICAgICAgICAgICBjID0gbS5ncm91cCgxKQorICAgICAgICAgICAgaWYgY1swXS5pc2FscGhhKCk6CisgICAgICAgICAgICAgICAgIyBTb21lIGtpbmQgb2YgaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIGlmIGNbMF0uaXN1cHBlcigpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihUb2tlbktpbmQuQ29uc3RydWN0b3JJZCwgYywgbGluZW5vKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuS2luZC5UeXBlSWQsIGMsIGxpbmVubykKKyAgICAgICAgICAgIGVsaWYgY1s6Ml0gPT0gJy0tJzoKKyAgICAgICAgICAgICAgICAjIENvbW1lbnQKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE9wZXJhdG9ycworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Bfa2luZCA9IFRva2VuS2luZC5vcGVyYXRvcl90YWJsZVtjXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKCdJbnZhbGlkIG9wZXJhdG9yICVzJyAlIGMsIGxpbmVubykKKyAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbihvcF9raW5kLCBjLCBsaW5lbm8pCisKK2NsYXNzIEFTRExQYXJzZXI6CisgICAgIiIiUGFyc2VyIGZvciBBU0RMIGZpbGVzLgorCisgICAgQ3JlYXRlLCB0aGVuIGNhbGwgdGhlIHBhcnNlIG1ldGhvZCBvbiBhIGJ1ZmZlciBjb250YWluaW5nIEFTREwuCisgICAgVGhpcyBpcyBhIHNpbXBsZSByZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIgdGhhdCB1c2VzIHRva2VuaXplX2FzZGwgZm9yIHRoZQorICAgIGxleGluZy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX3Rva2VuaXplciA9IE5vbmUKKyAgICAgICAgc2VsZi5jdXJfdG9rZW4gPSBOb25lCisKKyAgICBkZWYgcGFyc2Uoc2VsZiwgYnVmKToKKyAgICAgICAgIiIiUGFyc2UgdGhlIEFTREwgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJuIGFuIEFTVCB3aXRoIGEgTW9kdWxlIHJvb3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl90b2tlbml6ZXIgPSB0b2tlbml6ZV9hc2RsKGJ1ZikKKyAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9tb2R1bGUoKQorCisgICAgZGVmIF9wYXJzZV9tb2R1bGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2F0X2tleXdvcmQoJ21vZHVsZScpOgorICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgZGZuIGluIG1vZC5kZm5zOgotICAgICAgICAgICAgICAgIG91dHB1dChkZm4ubmFtZSwgZGZuLnZhbHVlKQorICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKAorICAgICAgICAgICAgICAgICdFeHBlY3RlZCAibW9kdWxlIiAoZm91bmQge30pJy5mb3JtYXQoc2VsZi5jdXJfdG9rZW4udmFsdWUpLAorICAgICAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLmxpbmVubykKKyAgICAgICAgbmFtZSA9IHNlbGYuX21hdGNoKHNlbGYuX2lkX2tpbmRzKQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuTEJyYWNlKQorICAgICAgICBkZWZzID0gc2VsZi5fcGFyc2VfZGVmaW5pdGlvbnMoKQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuUkJyYWNlKQorICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIGRlZnMpCisKKyAgICBkZWYgX3BhcnNlX2RlZmluaXRpb25zKHNlbGYpOgorICAgICAgICBkZWZzID0gW10KKyAgICAgICAgd2hpbGUgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuVHlwZUlkOgorICAgICAgICAgICAgdHlwZW5hbWUgPSBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5FcXVhbHMpCisgICAgICAgICAgICB0eXBlID0gc2VsZi5fcGFyc2VfdHlwZSgpCisgICAgICAgICAgICBkZWZzLmFwcGVuZChUeXBlKHR5cGVuYW1lLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIGRlZnMKKworICAgIGRlZiBfcGFyc2VfdHlwZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuTFBhcmVuOgorICAgICAgICAgICAgIyBJZiB3ZSBzZWUgYSAoLCBpdCdzIGEgcHJvZHVjdAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX3Byb2R1Y3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPdGhlcndpc2UgaXQncyBhIHN1bS4gTG9vayBmb3IgQ29uc3RydWN0b3JJZAorICAgICAgICAgICAgc3VtbGlzdCA9IFtDb25zdHJ1Y3RvcihzZWxmLl9tYXRjaChUb2tlbktpbmQuQ29uc3RydWN0b3JJZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX29wdGlvbmFsX2ZpZWxkcygpKV0KKyAgICAgICAgICAgIHdoaWxlIHNlbGYuY3VyX3Rva2VuLmtpbmQgID09IFRva2VuS2luZC5QaXBlOgorICAgICAgICAgICAgICAgICMgTW9yZSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgICAgICBzdW1saXN0LmFwcGVuZChDb25zdHJ1Y3RvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLkNvbnN0cnVjdG9ySWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV9vcHRpb25hbF9maWVsZHMoKSkpCisgICAgICAgICAgICByZXR1cm4gU3VtKHN1bWxpc3QsIHNlbGYuX3BhcnNlX29wdGlvbmFsX2F0dHJpYnV0ZXMoKSkKKworICAgIGRlZiBfcGFyc2VfcHJvZHVjdChzZWxmKToKKyAgICAgICAgcmV0dXJuIFByb2R1Y3Qoc2VsZi5fcGFyc2VfZmllbGRzKCksIHNlbGYuX3BhcnNlX29wdGlvbmFsX2F0dHJpYnV0ZXMoKSkKKworICAgIGRlZiBfcGFyc2VfZmllbGRzKHNlbGYpOgorICAgICAgICBmaWVsZHMgPSBbXQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuTFBhcmVuKQorICAgICAgICB3aGlsZSBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5UeXBlSWQ6CisgICAgICAgICAgICB0eXBlbmFtZSA9IHNlbGYuX2FkdmFuY2UoKQorICAgICAgICAgICAgaXNfc2VxLCBpc19vcHQgPSBzZWxmLl9wYXJzZV9vcHRpb25hbF9maWVsZF9xdWFudGlmaWVyKCkKKyAgICAgICAgICAgIGlkID0gKHNlbGYuX2FkdmFuY2UoKSBpZiBzZWxmLmN1cl90b2tlbi5raW5kIGluIHNlbGYuX2lkX2tpbmRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lKQorICAgICAgICAgICAgZmllbGRzLmFwcGVuZChGaWVsZCh0eXBlbmFtZSwgaWQsIHNlcT1pc19zZXEsIG9wdD1pc19vcHQpKQorICAgICAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuUlBhcmVuOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLkNvbW1hOgorICAgICAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuUlBhcmVuKQorICAgICAgICByZXR1cm4gZmllbGRzCisKKyAgICBkZWYgX3BhcnNlX29wdGlvbmFsX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuTFBhcmVuOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2ZpZWxkcygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9wYXJzZV9vcHRpb25hbF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hdF9rZXl3b3JkKCdhdHRyaWJ1dGVzJyk6CisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZV9maWVsZHMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcGFyc2Vfb3B0aW9uYWxfZmllbGRfcXVhbnRpZmllcihzZWxmKToKKyAgICAgICAgaXNfc2VxLCBpc19vcHQgPSBGYWxzZSwgRmFsc2UKKyAgICAgICAgaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuQXN0ZXJpc2s6CisgICAgICAgICAgICBpc19zZXEgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgZWxpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5RdWVzdGlvbjoKKyAgICAgICAgICAgIGlzX29wdCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICByZXR1cm4gaXNfc2VxLCBpc19vcHQKKworICAgIGRlZiBfYWR2YW5jZShzZWxmKToKKyAgICAgICAgIiIiIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdG9rZW4gYW5kIHJlYWQgdGhlIG5leHQgb25lIGludG8KKyAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLgorICAgICAgICAiIiIKKyAgICAgICAgY3VyX3ZhbCA9IE5vbmUgaWYgc2VsZi5jdXJfdG9rZW4gaXMgTm9uZSBlbHNlIHNlbGYuY3VyX3Rva2VuLnZhbHVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuID0gbmV4dChzZWxmLl90b2tlbml6ZXIpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4gPSBOb25lCisgICAgICAgIHJldHVybiBjdXJfdmFsCisKKyAgICBfaWRfa2luZHMgPSAoVG9rZW5LaW5kLkNvbnN0cnVjdG9ySWQsIFRva2VuS2luZC5UeXBlSWQpCisKKyAgICBkZWYgX21hdGNoKHNlbGYsIGtpbmQpOgorICAgICAgICAiIiJUaGUgJ21hdGNoJyBwcmltaXRpdmUgb2YgUkQgcGFyc2Vycy4KKworICAgICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIGN1cnJlbnQgdG9rZW4gaXMgb2YgdGhlIGdpdmVuIGtpbmQgKGtpbmQgY2FuCisgICAgICAgICAgYmUgYSB0dXBsZSwgaW4gd2hpY2ggdGhlIGtpbmQgbXVzdCBtYXRjaCBvbmUgb2YgaXRzIG1lbWJlcnMpLgorICAgICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IHRva2VuCisgICAgICAgICogUmVhZHMgaW4gdGhlIG5leHQgdG9rZW4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIChpc2luc3RhbmNlKGtpbmQsIHR1cGxlKSBhbmQgc2VsZi5jdXJfdG9rZW4ua2luZCBpbiBraW5kIG9yCisgICAgICAgICAgICBzZWxmLmN1cl90b2tlbi5raW5kID09IGtpbmQKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuY3VyX3Rva2VuLnZhbHVlCisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKAorICAgICAgICAgICAgICAgICdVbm1hdGNoZWQge30gKGZvdW5kIHt9KScuZm9ybWF0KGtpbmQsIHNlbGYuY3VyX3Rva2VuLmtpbmQpLAorICAgICAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLmxpbmVubykKKworICAgIGRlZiBfYXRfa2V5d29yZChzZWxmLCBrZXl3b3JkKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5UeXBlSWQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4udmFsdWUgPT0ga2V5d29yZCkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5CmluZGV4IGQ2MDg2ZTYuLmE1ZTM1ZDkgMTAwNzU1Ci0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtMSw5ICsxLDYgQEAKICMhIC91c3IvYmluL2VudiBweXRob24KICIiIkdlbmVyYXRlIEMgY29kZSBmcm9tIGFuIEFTREwgZGVzY3JpcHRpb24uIiIiCiAKLSMgVE8gRE8KLSMgaGFuZGxlIGZpZWxkcyB0aGF0IGhhdmUgYSB0eXBlIGJ1dCBubyBuYW1lCi0KIGltcG9ydCBvcywgc3lzCiAKIGltcG9ydCBhc2RsCkBAIC0xNCwxMiArMTEsOCBAQAogZGVmIGdldF9jX3R5cGUobmFtZSk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIGZvciB0aGUgQyBuYW1lIG9mIHRoZSB0eXBlLgogCi0gICAgVGhpcyBmdW5jdGlvbiBzcGVjaWFsIGNhc2VzIHRoZSBkZWZhdWx0IHR5cGVzIHByb3ZpZGVkIGJ5IGFzZGw6Ci0gICAgaWRlbnRpZmllciwgc3RyaW5nLCBpbnQuCisgICAgVGhpcyBmdW5jdGlvbiBzcGVjaWFsIGNhc2VzIHRoZSBkZWZhdWx0IHR5cGVzIHByb3ZpZGVkIGJ5IGFzZGwuCiAgICAgIiIiCi0gICAgIyBYWFggYWNrISAgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIElkIGlzIHVzZWZ1bCBhbmQgd2hlcmUgc3RyaW5nCi0gICAgaWYgaXNpbnN0YW5jZShuYW1lLCBhc2RsLklkKToKLSAgICAgICAgbmFtZSA9IG5hbWUudmFsdWUKICAgICBpZiBuYW1lIGluIGFzZGwuYnVpbHRpbl90eXBlczoKICAgICAgICAgcmV0dXJuIG5hbWUKICAgICBlbHNlOgpAQCAtMTQ0LDcgKzEzNyw3IEBACiAKIAogY2xhc3MgU3RydWN0VmlzaXRvcihFbWl0VmlzaXRvcik6Ci0gICAgIiIiVmlzaXRvciB0byBnZW5lcmF0ZSB0eXBkZWZzIGZvciBBU1QuIiIiCisgICAgIiIiVmlzaXRvciB0byBnZW5lcmF0ZSB0eXBlZGVmcyBmb3IgQVNULiIiIgogCiAgICAgZGVmIHZpc2l0TW9kdWxlKHNlbGYsIG1vZCk6CiAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6CkBAIC0xODgsOSArMTgxLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLnZpc2l0KGYsIGRlcHRoICsgMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgifSAlczsiICUgY29ucy5uYW1lLCBkZXB0aCkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiIiwgZGVwdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFhYWCBub3Qgc3VyZSB3aGF0IEkgd2FudCBoZXJlLCBub3RoaW5nIGlzIHByb2JhYmx5IGZpbmUKLSAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB2aXNpdEZpZWxkKHNlbGYsIGZpZWxkLCBkZXB0aCk6CiAgICAgICAgICMgWFhYIG5lZWQgdG8gbG9va3VwIGZpZWxkLnR5cGUsIGJlY2F1c2UgaXQgbWlnaHQgYmUgc29tZXRoaW5nCkBAIC0xOTgsNyArMTg4LDcgQEAKICAgICAgICAgY3R5cGUgPSBnZXRfY190eXBlKGZpZWxkLnR5cGUpCiAgICAgICAgIG5hbWUgPSBmaWVsZC5uYW1lCiAgICAgICAgIGlmIGZpZWxkLnNlcToKLSAgICAgICAgICAgIGlmIGZpZWxkLnR5cGUudmFsdWUgaW4gKCdjbXBvcCcsKToKKyAgICAgICAgICAgIGlmIGZpZWxkLnR5cGUgPT0gJ2NtcG9wJzoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImFzZGxfaW50X3NlcSAqJShuYW1lKXM7IiAlIGxvY2FscygpLCBkZXB0aCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJhc2RsX3NlcSAqJShuYW1lKXM7IiAlIGxvY2FscygpLCBkZXB0aCkKQEAgLTI1Myw3ICsyNDMsNyBAQAogICAgICAgICAgICAgICAgIG5hbWUgPSBmLm5hbWUKICAgICAgICAgICAgICMgWFhYIHNob3VsZCBleHRlbmQgZ2V0X2NfdHlwZSgpIHRvIGhhbmRsZSB0aGlzCiAgICAgICAgICAgICBpZiBmLnNlcToKLSAgICAgICAgICAgICAgICBpZiBmLnR5cGUudmFsdWUgaW4gKCdjbXBvcCcsKToKKyAgICAgICAgICAgICAgICBpZiBmLnR5cGUgPT0gJ2NtcG9wJzoKICAgICAgICAgICAgICAgICAgICAgY3R5cGUgPSAiYXNkbF9pbnRfc2VxICoiCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgY3R5cGUgPSAiYXNkbF9zZXEgKiIKQEAgLTQzNyw3ICs0MjcsNyBAQAogICAgICAgICAgICAgc2VsZi5lbWl0KCIiLCAwKQogICAgICAgICAgICAgZm9yIGYgaW4gdC5maWVsZHM6CiAgICAgICAgICAgICAgICAgc2VsZi52aXNpdEZpZWxkKGYsIHQubmFtZSwgc3VtPXN1bSwgZGVwdGg9MikKLSAgICAgICAgICAgIGFyZ3MgPSBbZi5uYW1lLnZhbHVlIGZvciBmIGluIHQuZmllbGRzXSArIFthLm5hbWUudmFsdWUgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXNdCisgICAgICAgICAgICBhcmdzID0gW2YubmFtZSBmb3IgZiBpbiB0LmZpZWxkc10gKyBbYS5uYW1lIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzXQogICAgICAgICAgICAgc2VsZi5lbWl0KCIqb3V0ID0gJXMoJXMpOyIgJSAodC5uYW1lLCBzZWxmLmJ1aWxkQXJncyhhcmdzKSksIDIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOyIsIDIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInJldHVybiAwOyIsIDIpCkBAIC00NjUsNyArNDU1LDcgQEAKICAgICAgICAgc2VsZi5lbWl0KCIiLCAwKQogICAgICAgICBmb3IgZiBpbiBwcm9kLmZpZWxkczoKICAgICAgICAgICAgIHNlbGYudmlzaXRGaWVsZChmLCBuYW1lLCBwcm9kPXByb2QsIGRlcHRoPTEpCi0gICAgICAgIGFyZ3MgPSBbZi5uYW1lLnZhbHVlIGZvciBmIGluIHByb2QuZmllbGRzXQorICAgICAgICBhcmdzID0gW2YubmFtZSBmb3IgZiBpbiBwcm9kLmZpZWxkc10KICAgICAgICAgc2VsZi5lbWl0KCIqb3V0ID0gJXMoJXMpOyIgJSAobmFtZSwgc2VsZi5idWlsZEFyZ3MoYXJncykpLCAxKQogICAgICAgICBzZWxmLmVtaXQoInJldHVybiAwOyIsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgiZmFpbGVkOiIsIDApCkBAIC00ODcsOCArNDc3LDggQEAKIAogICAgIGRlZiBpc1NpbXBsZVN1bShzZWxmLCBmaWVsZCk6CiAgICAgICAgICMgWFhYIGNhbiB0aGUgbWVtYmVycyBvZiB0aGlzIGxpc3QgYmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5PwotICAgICAgICByZXR1cm4gZmllbGQudHlwZS52YWx1ZSBpbiAoJ2V4cHJfY29udGV4dCcsICdib29sb3AnLCAnb3BlcmF0b3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuYXJ5b3AnLCAnY21wb3AnKQorICAgICAgICByZXR1cm4gZmllbGQudHlwZSBpbiAoJ2V4cHJfY29udGV4dCcsICdib29sb3AnLCAnb3BlcmF0b3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuYXJ5b3AnLCAnY21wb3AnKQogCiAgICAgZGVmIGlzTnVtZXJpYyhzZWxmLCBmaWVsZCk6CiAgICAgICAgIHJldHVybiBnZXRfY190eXBlKGZpZWxkLnR5cGUpIGluICgiaW50IiwgImJvb2wiKQpAQCAtOTYwLDcgKzk1MCw3IEBACiAKICAgICBkZWYgdmlzaXRQcm9kdWN0KHNlbGYsIHByb2QsIG5hbWUpOgogICAgICAgICBpZiBwcm9kLmZpZWxkczoKLSAgICAgICAgICAgIGZpZWxkcyA9IG5hbWUudmFsdWUrIl9maWVsZHMiCisgICAgICAgICAgICBmaWVsZHMgPSBuYW1lKyJfZmllbGRzIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmllbGRzID0gIk5VTEwiCiAgICAgICAgIHNlbGYuZW1pdCgnJXNfdHlwZSA9IG1ha2VfdHlwZSgiJXMiLCAmQVNUX3R5cGUsICVzLCAlZCk7JyAlCkBAIC05ODcsNyArOTc3LDcgQEAKIAogICAgIGRlZiB2aXNpdENvbnN0cnVjdG9yKHNlbGYsIGNvbnMsIG5hbWUsIHNpbXBsZSk6CiAgICAgICAgIGlmIGNvbnMuZmllbGRzOgotICAgICAgICAgICAgZmllbGRzID0gY29ucy5uYW1lLnZhbHVlKyJfZmllbGRzIgorICAgICAgICAgICAgZmllbGRzID0gY29ucy5uYW1lKyJfZmllbGRzIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmllbGRzID0gIk5VTEwiCiAgICAgICAgIHNlbGYuZW1pdCgnJXNfdHlwZSA9IG1ha2VfdHlwZSgiJXMiLCAlc190eXBlLCAlcywgJWQpOycgJQpAQCAtMTE3MCw3ICsxMTYwLDcgQEAKICAgICBkZWYgc2V0KHNlbGYsIGZpZWxkLCB2YWx1ZSwgZGVwdGgpOgogICAgICAgICBpZiBmaWVsZC5zZXE6CiAgICAgICAgICAgICAjIFhYWCBzaG91bGQgcmVhbGx5IGNoZWNrIGZvciBpc19zaW1wbGUsIGJ1dCB0aGF0IHJlcXVpcmVzIGEgc3ltYm9sIHRhYmxlCi0gICAgICAgICAgICBpZiBmaWVsZC50eXBlLnZhbHVlID09ICJjbXBvcCI6CisgICAgICAgICAgICBpZiBmaWVsZC50eXBlID09ICJjbXBvcCI6CiAgICAgICAgICAgICAgICAgIyBXaGlsZSB0aGUgc2VxdWVuY2UgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyB2b2lkKiwKICAgICAgICAgICAgICAgICAjIGFzdDJvYmpfY21wb3AgZXhwZWN0cyBhbiBlbnVtCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJ7IiwgZGVwdGgpCkBAIC0xMjQ5LDEyICsxMjM5LDE1IEBACiAKIGNvbW1vbl9tc2cgPSAiLyogRmlsZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSAlcy4gKi9cblxuIgogCi1kZWYgbWFpbihzcmNmaWxlKToKK2RlZiBtYWluKHNyY2ZpbGUsIGR1bXBfbW9kdWxlPUZhbHNlKToKICAgICBhcmd2MCA9IHN5cy5hcmd2WzBdCiAgICAgY29tcG9uZW50cyA9IGFyZ3YwLnNwbGl0KG9zLnNlcCkKICAgICBhcmd2MCA9IG9zLnNlcC5qb2luKGNvbXBvbmVudHNbLTI6XSkKICAgICBhdXRvX2dlbl9tc2cgPSBjb21tb25fbXNnICUgYXJndjAKICAgICBtb2QgPSBhc2RsLnBhcnNlKHNyY2ZpbGUpCisgICAgaWYgZHVtcF9tb2R1bGU6CisgICAgICAgIHByaW50KCdQYXJzZWQgTW9kdWxlOicpCisgICAgICAgIHByaW50KG1vZCkKICAgICBpZiBub3QgYXNkbC5jaGVjayhtb2QpOgogICAgICAgICBzeXMuZXhpdCgxKQogICAgIGlmIElOQ19ESVI6CkBAIC0xMzAxLDE2ICsxMjk0LDE5IEBACiAKICAgICBJTkNfRElSID0gJycKICAgICBTUkNfRElSID0gJycKLSAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJoOmM6IikKLSAgICBpZiBsZW4ob3B0cykgIT0gMToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiTXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIG91dHB1dCBmaWxlXG4iKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgIGR1bXBfbW9kdWxlID0gRmFsc2UKKyAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJkaDpjOiIpCiAgICAgZm9yIG8sIHYgaW4gb3B0czoKICAgICAgICAgaWYgbyA9PSAnLWgnOgogICAgICAgICAgICAgSU5DX0RJUiA9IHYKICAgICAgICAgaWYgbyA9PSAnLWMnOgogICAgICAgICAgICAgU1JDX0RJUiA9IHYKLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiTXVzdCBzcGVjaWZ5IHNpbmdsZSBpbnB1dCBmaWxlXG4iKQorICAgICAgICBpZiBvID09ICctZCc6CisgICAgICAgICAgICBkdW1wX21vZHVsZSA9IFRydWUKKyAgICBpZiBJTkNfRElSIGFuZCBTUkNfRElSOgorICAgICAgICBwcmludCgnTXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIG91dHB1dCBmaWxlJykKICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBtYWluKGFyZ3NbMF0pCisgICAgZWxpZiBsZW4oYXJncykgIT0gMToKKyAgICAgICAgcHJpbnQoJ011c3Qgc3BlY2lmeSBzaW5nbGUgaW5wdXQgZmlsZScpCisgICAgICAgIHN5cy5leGl0KDEpCisgICAgbWFpbihhcmdzWzBdLCBkdW1wX21vZHVsZSkKZGlmZiAtLWdpdCBhL1BhcnNlci9ub2RlLmMgYi9QYXJzZXIvbm9kZS5jCmluZGV4IDU2NGJkOTEuLjAwMTAzMjQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ub2RlLmMKKysrIGIvUGFyc2VyL25vZGUuYwpAQCAtNzAsOCArNzAsOCBAQAogICogTm90ZSB0aGF0IHRoaXMgd291bGQgYmUgc3RyYWlnaHRmb3J3YXJkIGlmIGEgbm9kZSBzdG9yZWQgaXRzIGN1cnJlbnQKICAqIGNhcGFjaXR5LiAgVGhlIGNvZGUgaXMgdHJpY2t5IHRvIGF2b2lkIHRoYXQuCiAgKi8KLSNkZWZpbmUgWFhYUk9VTkRVUChuKSAoKG4pIDw9IDEgPyAobikgOiAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/IF9QeV9TSVpFX1JPVU5EX1VQKChuKSwgNCkgOiBcCisjZGVmaW5lIFhYWFJPVU5EVVAobikgKChuKSA8PSAxID8gKG4pIDogICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/IChpbnQpX1B5X1NJWkVfUk9VTkRfVVAoKG4pLCA0KSA6ICAgIFwKICAgICAgICAgICAgICAgIGZhbmN5X3JvdW5kdXAobikpCiAKIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW4uYyBiL1BhcnNlci9wZ2VuLmMKaW5kZXggYjJmODQ3MC4uZjMwMzFhZSAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW4uYworKysgYi9QYXJzZXIvcGdlbi5jCkBAIC0xMzYsMTEgKzEzNiwxMiBAQAogCiBzdGF0aWMgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKIAotI2RlZmluZSBSRVFOKGksIGNvdW50KSBcCisjZGVmaW5lIFJFUU4oaSwgY291bnQpIGRvIHsgXAogICAgIGlmIChpIDwgY291bnQpIHsgXAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgUkVRTkZNVCwgY291bnQpOyBcCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlJFUU4iKTsgXAotICAgIH0gZWxzZQorICAgIH0gXAorfSB3aGlsZSAoMCkKIAogI2Vsc2UKICNkZWZpbmUgUkVRTihpLCBjb3VudCkgIC8qIGVtcHR5ICovCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDAxN2E0ZjkuLjBmMDU1ZDYgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC05NiwxMCArOTYsMTEgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJQYXJzaW5nIGVycm9yICVkLCBsaW5lICVkLlxuIiwKICAgICAgICAgICAgIGVyci5lcnJvciwgZXJyLmxpbmVubyk7CiAgICAgICAgIGlmIChlcnIudGV4dCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBzaXplX3QgaTsKKyAgICAgICAgICAgIHNpemVfdCBsZW47CisgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBlcnIudGV4dCk7Ci0gICAgICAgICAgICBpID0gc3RybGVuKGVyci50ZXh0KTsKLSAgICAgICAgICAgIGlmIChpID09IDAgfHwgZXJyLnRleHRbaS0xXSAhPSAnXG4nKQorICAgICAgICAgICAgbGVuID0gc3RybGVuKGVyci50ZXh0KTsKKyAgICAgICAgICAgIGlmIChsZW4gPT0gMCB8fCBlcnIudGV4dFtsZW4tMV0gIT0gJ1xuJykKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXJyLm9mZnNldDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGVyci50ZXh0W2ldID09ICdcdCcpCmRpZmYgLS1naXQgYS9QYXJzZXIvcHJpbnRncmFtbWFyLmMgYi9QYXJzZXIvcHJpbnRncmFtbWFyLmMKaW5kZXggZGQ3ZTZhZS4uNzMxMWU1NSAxMDA2NDQKLS0tIGEvUGFyc2VyL3ByaW50Z3JhbW1hci5jCisrKyBiL1BhcnNlci9wcmludGdyYW1tYXIuYwpAQCAtODQsNyArODQsNyBAQAogcHJpbnRkZmFzKGdyYW1tYXIgKmcsIEZJTEUgKmZwKQogewogICAgIGRmYSAqZDsKLSAgICBpbnQgaSwgajsKKyAgICBpbnQgaSwgaiwgbjsKIAogICAgIHByaW50c3RhdGVzKGcsIGZwKTsKICAgICBmcHJpbnRmKGZwLCAic3RhdGljIGRmYSBkZmFzWyVkXSA9IHtcbiIsIGctPmdfbmRmYXMpOwpAQCAtOTMsNyArOTMsOCBAQAogICAgICAgICBmcHJpbnRmKGZwLCAiICAgIHslZCwgXCIlc1wiLCAlZCwgJWQsIHN0YXRlc18lZCxcbiIsCiAgICAgICAgICAgICBkLT5kX3R5cGUsIGQtPmRfbmFtZSwgZC0+ZF9pbml0aWFsLCBkLT5kX25zdGF0ZXMsIGkpOwogICAgICAgICBmcHJpbnRmKGZwLCAiICAgICBcIiIpOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgTkJZVEVTKGctPmdfbGwubGxfbmxhYmVscyk7IGorKykKKyAgICAgICAgbiA9IE5CWVRFUyhnLT5nX2xsLmxsX25sYWJlbHMpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKQogICAgICAgICAgICAgZnByaW50ZihmcCwgIlxcJTAzbyIsIGQtPmRfZmlyc3Rbal0gJiAweGZmKTsKICAgICAgICAgZnByaW50ZihmcCwgIlwifSxcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1BhcnNlci9zcGFyay5weSBiL1BhcnNlci9zcGFyay5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhjMWE4OS4uMDAwMDAwMAotLS0gYS9QYXJzZXIvc3BhcmsucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4NDkgKzAsMCBAQAotIyAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIgSm9obiBBeWNvY2sKLSMKLSMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0jICAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0jICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0jICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSMgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotIyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotIwotIyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKLSMgIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotIwotIyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0jICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSMgIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCi0jICBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAotIyAgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKLSMgIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi1fX3ZlcnNpb25fXyA9ICdTUEFSSy0wLjcgKHByZS1hbHBoYS01KScKLQotaW1wb3J0IHJlCi0KLSMgQ29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHB5dGhvbnMuCi1kZWYgb3V0cHV0KHN0cmluZz0nJywgZW5kPSdcbicpOgotICAgIHN5cy5zdGRvdXQud3JpdGUoc3RyaW5nICsgZW5kKQotCi10cnk6Ci0gICAgc29ydGVkCi1leGNlcHQgTmFtZUVycm9yOgotICAgIGRlZiBzb3J0ZWQoc2VxKToKLSAgICAgICAgc2VxMiA9IHNlcVs6XQotICAgICAgICBzZXEyLnNvcnQoKQotICAgICAgICByZXR1cm4gc2VxMgotCi1kZWYgX25hbWVsaXN0KGluc3RhbmNlKToKLSAgICBuYW1lbGlzdCwgbmFtZWRpY3QsIGNsYXNzbGlzdCA9IFtdLCB7fSwgW2luc3RhbmNlLl9fY2xhc3NfX10KLSAgICBmb3IgYyBpbiBjbGFzc2xpc3Q6Ci0gICAgICAgIGZvciBiIGluIGMuX19iYXNlc19fOgotICAgICAgICAgICAgY2xhc3NsaXN0LmFwcGVuZChiKQotICAgICAgICBmb3IgbmFtZSBpbiBjLl9fZGljdF9fLmtleXMoKToKLSAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIG5hbWVkaWN0OgotICAgICAgICAgICAgICAgIG5hbWVsaXN0LmFwcGVuZChuYW1lKQotICAgICAgICAgICAgICAgIG5hbWVkaWN0W25hbWVdID0gMQotICAgIHJldHVybiBuYW1lbGlzdAotCi1jbGFzcyBHZW5lcmljU2Nhbm5lcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmxhZ3M9MCk6Ci0gICAgICAgIHBhdHRlcm4gPSBzZWxmLnJlZmxlY3QoKQotICAgICAgICBzZWxmLnJlID0gcmUuY29tcGlsZShwYXR0ZXJuLCByZS5WRVJCT1NFfGZsYWdzKQotCi0gICAgICAgIHNlbGYuaW5kZXgyZnVuYyA9IHt9Ci0gICAgICAgIGZvciBuYW1lLCBudW1iZXIgaW4gc2VsZi5yZS5ncm91cGluZGV4Lml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmluZGV4MmZ1bmNbbnVtYmVyLTFdID0gZ2V0YXR0cihzZWxmLCAndF8nICsgbmFtZSkKLQotICAgIGRlZiBtYWtlUkUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGRvYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkuX19kb2NfXwotICAgICAgICBydiA9ICcoP1A8JXM+JXMpJyAlIChuYW1lWzI6XSwgZG9jKQotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiByZWZsZWN0KHNlbGYpOgotICAgICAgICBydiA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIF9uYW1lbGlzdChzZWxmKToKLSAgICAgICAgICAgIGlmIG5hbWVbOjJdID09ICd0XycgYW5kIG5hbWUgIT0gJ3RfZGVmYXVsdCc6Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKHNlbGYubWFrZVJFKG5hbWUpKQotCi0gICAgICAgIHJ2LmFwcGVuZChzZWxmLm1ha2VSRSgndF9kZWZhdWx0JykpCi0gICAgICAgIHJldHVybiAnfCcuam9pbihydikKLQotICAgIGRlZiBlcnJvcihzZWxmLCBzLCBwb3MpOgotICAgICAgICBvdXRwdXQoIkxleGljYWwgZXJyb3IgYXQgcG9zaXRpb24gJXMiICUgcG9zKQotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0Ci0KLSAgICBkZWYgdG9rZW5pemUoc2VsZiwgcyk6Ci0gICAgICAgIHBvcyA9IDAKLSAgICAgICAgbiA9IGxlbihzKQotICAgICAgICB3aGlsZSBwb3MgPCBuOgotICAgICAgICAgICAgbSA9IHNlbGYucmUubWF0Y2gocywgcG9zKQotICAgICAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IocywgcG9zKQotCi0gICAgICAgICAgICBncm91cHMgPSBtLmdyb3VwcygpCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZ3JvdXBzKSk6Ci0gICAgICAgICAgICAgICAgaWYgZ3JvdXBzW2ldIGFuZCBpIGluIHNlbGYuaW5kZXgyZnVuYzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmRleDJmdW5jW2ldKGdyb3Vwc1tpXSkKLSAgICAgICAgICAgIHBvcyA9IG0uZW5kKCkKLQotICAgIGRlZiB0X2RlZmF1bHQoc2VsZiwgcyk6Ci0gICAgICAgIHInKCAuIHwgXG4gKSsnCi0gICAgICAgIG91dHB1dCgiU3BlY2lmaWNhdGlvbiBlcnJvcjogdW5tYXRjaGVkIGlucHV0IikKLSAgICAgICAgcmFpc2UgU3lzdGVtRXhpdAotCi0jCi0jICBFeHRyYWN0ZWQgZnJvbSBHZW5lcmljUGFyc2VyIGFuZCBtYWRlIGdsb2JhbCBzbyB0aGF0IFt1bl1waWNraW5nIHdvcmtzLgotIwotY2xhc3MgX1N0YXRlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGF0ZW5vLCBpdGVtcyk6Ci0gICAgICAgIHNlbGYuVCwgc2VsZi5jb21wbGV0ZSwgc2VsZi5pdGVtcyA9IFtdLCBbXSwgaXRlbXMKLSAgICAgICAgc2VsZi5zdGF0ZW5vID0gc3RhdGVubwotCi1jbGFzcyBHZW5lcmljUGFyc2VyOgotICAgICMKLSAgICAjICBBbiBFYXJsZXkgcGFyc2VyLCBhcyBwZXIgSi4gRWFybGV5LCAiQW4gRWZmaWNpZW50IENvbnRleHQtRnJlZQotICAgICMgIFBhcnNpbmcgQWxnb3JpdGhtIiwgQ0FDTSAxMygyKSwgcHAuIDk0LTEwMi4gIEFsc28gSi4gQy4gRWFybGV5LAotICAgICMgICJBbiBFZmZpY2llbnQgQ29udGV4dC1GcmVlIFBhcnNpbmcgQWxnb3JpdGhtIiwgUGguRC4gdGhlc2lzLAotICAgICMgIENhcm5lZ2llLU1lbGxvbiBVbml2ZXJzaXR5LCBBdWd1c3QgMTk2OC4gIE5ldyBmb3JtdWxhdGlvbiBvZgotICAgICMgIHRoZSBwYXJzZXIgYWNjb3JkaW5nIHRvIEouIEF5Y29jaywgIlByYWN0aWNhbCBFYXJsZXkgUGFyc2luZwotICAgICMgIGFuZCB0aGUgU1BBUksgVG9vbGtpdCIsIFBoLkQuIHRoZXNpcywgVW5pdmVyc2l0eSBvZiBWaWN0b3JpYSwKLSAgICAjICAyMDAxLCBhbmQgSi4gQXljb2NrIGFuZCBSLiBOLiBIb3JzcG9vbCwgIlByYWN0aWNhbCBFYXJsZXkKLSAgICAjICBQYXJzaW5nIiwgdW5wdWJsaXNoZWQgcGFwZXIsIDIwMDEuCi0gICAgIwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0KToKLSAgICAgICAgc2VsZi5ydWxlcyA9IHt9Ci0gICAgICAgIHNlbGYucnVsZTJmdW5jID0ge30KLSAgICAgICAgc2VsZi5ydWxlMm5hbWUgPSB7fQotICAgICAgICBzZWxmLmNvbGxlY3RSdWxlcygpCi0gICAgICAgIHNlbGYuYXVnbWVudChzdGFydCkKLSAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAxCi0KLSAgICBfTlVMTEFCTEUgPSAnXGVfJwotICAgIF9TVEFSVCA9ICdTVEFSVCcKLSAgICBfQk9GID0gJ3wtJwotCi0gICAgIwotICAgICMgIFdoZW4gcGlja2xpbmcsIHRha2UgdGhlIHRpbWUgdG8gZ2VuZXJhdGUgdGhlIGZ1bGwgc3RhdGUgbWFjaGluZTsKLSAgICAjICBzb21lIGluZm9ybWF0aW9uIGlzIHRoZW4gZXh0cmFuZW91cywgdG9vLiAgVW5mb3J0dW5hdGVseSB3ZQotICAgICMgIGNhbid0IHNhdmUgdGhlIHJ1bGUyZnVuYyBtYXAuCi0gICAgIwotICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucnVsZXNjaGFuZ2VkOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAgWFhYIC0gZHVwbGljYXRlZCBmcm9tIHBhcnNlKCkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHNlbGYuY29tcHV0ZU51bGwoKQotICAgICAgICAgICAgc2VsZi5uZXdydWxlcyA9IHt9Ci0gICAgICAgICAgICBzZWxmLm5ldzJvbGQgPSB7fQotICAgICAgICAgICAgc2VsZi5tYWtlTmV3UnVsZXMoKQotICAgICAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAwCi0gICAgICAgICAgICBzZWxmLmVkZ2VzLCBzZWxmLmNvcmVzID0ge30sIHt9Ci0gICAgICAgICAgICBzZWxmLnN0YXRlcyA9IHsgMDogc2VsZi5tYWtlU3RhdGUwKCkgfQotICAgICAgICAgICAgc2VsZi5tYWtlU3RhdGUoMCwgc2VsZi5fQk9GKQotICAgICAgICAjCi0gICAgICAgICMgIFhYWCAtIHNob3VsZCBmaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGlzLi4KLSAgICAgICAgIwotICAgICAgICBjaGFuZ2VzID0gMQotICAgICAgICB3aGlsZSBjaGFuZ2VzOgotICAgICAgICAgICAgY2hhbmdlcyA9IDAKLSAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuZWRnZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiB2IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLCBzeW0gPSBrCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlIGluIHNlbGYuc3RhdGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nb3RvKHN0YXRlLCBzeW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzID0gMQotICAgICAgICBydiA9IHNlbGYuX19kaWN0X18uY29weSgpCi0gICAgICAgIGZvciBzIGluIHNlbGYuc3RhdGVzLnZhbHVlcygpOgotICAgICAgICAgICAgZGVsIHMuaXRlbXMKLSAgICAgICAgZGVsIHJ2WydydWxlMmZ1bmMnXQotICAgICAgICBkZWwgcnZbJ251bGxhYmxlJ10KLSAgICAgICAgZGVsIHJ2Wydjb3JlcyddCi0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBEKToKLSAgICAgICAgc2VsZi5ydWxlcyA9IHt9Ci0gICAgICAgIHNlbGYucnVsZTJmdW5jID0ge30KLSAgICAgICAgc2VsZi5ydWxlMm5hbWUgPSB7fQotICAgICAgICBzZWxmLmNvbGxlY3RSdWxlcygpCi0gICAgICAgIHN0YXJ0ID0gRFsncnVsZXMnXVtzZWxmLl9TVEFSVF1bMF1bMV1bMV0gICAgICAgICMgQmxlY2guCi0gICAgICAgIHNlbGYuYXVnbWVudChzdGFydCkKLSAgICAgICAgRFsncnVsZTJmdW5jJ10gPSBzZWxmLnJ1bGUyZnVuYwotICAgICAgICBEWydtYWtlU2V0J10gPSBzZWxmLm1ha2VTZXRfZmFzdAotICAgICAgICBzZWxmLl9fZGljdF9fID0gRAotCi0gICAgIwotICAgICMgIEEgaG9vayBmb3IgR2VuZXJpY0FTVEJ1aWxkZXIgYW5kIEdlbmVyaWNBU1RNYXRjaGVyLiAgTWVzcwotICAgICMgIHRoZWUgbm90IHdpdGggdGhpczsgbm9yIHNoYWxsIHRoZWUgdG91Y2hldGggdGhlIF9wcmVwcm9jZXNzCi0gICAgIyAgYXJndW1lbnQgdG8gYWRkUnVsZS4KLSAgICAjCi0gICAgZGVmIHByZXByb2Nlc3Moc2VsZiwgcnVsZSwgZnVuYyk6ICAgICAgIHJldHVybiBydWxlLCBmdW5jCi0KLSAgICBkZWYgYWRkUnVsZShzZWxmLCBkb2MsIGZ1bmMsIF9wcmVwcm9jZXNzPTEpOgotICAgICAgICBmbiA9IGZ1bmMKLSAgICAgICAgcnVsZXMgPSBkb2Muc3BsaXQoKQotCi0gICAgICAgIGluZGV4ID0gW10KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJ1bGVzKSk6Ci0gICAgICAgICAgICBpZiBydWxlc1tpXSA9PSAnOjo9JzoKLSAgICAgICAgICAgICAgICBpbmRleC5hcHBlbmQoaS0xKQotICAgICAgICBpbmRleC5hcHBlbmQobGVuKHJ1bGVzKSkKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oaW5kZXgpLTEpOgotICAgICAgICAgICAgbGhzID0gcnVsZXNbaW5kZXhbaV1dCi0gICAgICAgICAgICByaHMgPSBydWxlc1tpbmRleFtpXSsyOmluZGV4W2krMV1dCi0gICAgICAgICAgICBydWxlID0gKGxocywgdHVwbGUocmhzKSkKLQotICAgICAgICAgICAgaWYgX3ByZXByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgcnVsZSwgZm4gPSBzZWxmLnByZXByb2Nlc3MocnVsZSwgZnVuYykKLQotICAgICAgICAgICAgaWYgbGhzIGluIHNlbGYucnVsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydWxlc1tsaHNdLmFwcGVuZChydWxlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bGVzW2xoc10gPSBbIHJ1bGUgXQotICAgICAgICAgICAgc2VsZi5ydWxlMmZ1bmNbcnVsZV0gPSBmbgotICAgICAgICAgICAgc2VsZi5ydWxlMm5hbWVbcnVsZV0gPSBmdW5jLl9fbmFtZV9fWzI6XQotICAgICAgICBzZWxmLnJ1bGVzY2hhbmdlZCA9IDEKLQotICAgIGRlZiBjb2xsZWN0UnVsZXMoc2VsZik6Ci0gICAgICAgIGZvciBuYW1lIGluIF9uYW1lbGlzdChzZWxmKToKLSAgICAgICAgICAgIGlmIG5hbWVbOjJdID09ICdwXyc6Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkKLSAgICAgICAgICAgICAgICBkb2MgPSBmdW5jLl9fZG9jX18KLSAgICAgICAgICAgICAgICBzZWxmLmFkZFJ1bGUoZG9jLCBmdW5jKQotCi0gICAgZGVmIGF1Z21lbnQoc2VsZiwgc3RhcnQpOgotICAgICAgICBydWxlID0gJyVzIDo6PSAlcyAlcycgJSAoc2VsZi5fU1RBUlQsIHNlbGYuX0JPRiwgc3RhcnQpCi0gICAgICAgIHNlbGYuYWRkUnVsZShydWxlLCBsYW1iZGEgYXJnczogYXJnc1sxXSwgMCkKLQotICAgIGRlZiBjb21wdXRlTnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5udWxsYWJsZSA9IHt9Ci0gICAgICAgIHRiZCA9IFtdCi0KLSAgICAgICAgZm9yIHJ1bGVsaXN0IGluIHNlbGYucnVsZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICBsaHMgPSBydWxlbGlzdFswXVswXQotICAgICAgICAgICAgc2VsZi5udWxsYWJsZVtsaHNdID0gMAotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gcnVsZWxpc3Q6Ci0gICAgICAgICAgICAgICAgcmhzID0gcnVsZVsxXQotICAgICAgICAgICAgICAgIGlmIGxlbihyaHMpID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubnVsbGFibGVbbGhzXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyAgV2Ugb25seSBuZWVkIHRvIGNvbnNpZGVyIHJ1bGVzIHdoaWNoCi0gICAgICAgICAgICAgICAgIyAgY29uc2lzdCBlbnRpcmVseSBvZiBub250ZXJtaW5hbCBzeW1ib2xzLgotICAgICAgICAgICAgICAgICMgIFRoaXMgc2hvdWxkIGJlIGEgc2F2aW5ncyBvbiB0eXBpY2FsCi0gICAgICAgICAgICAgICAgIyAgZ3JhbW1hcnMuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIGZvciBzeW0gaW4gcmhzOgotICAgICAgICAgICAgICAgICAgICBpZiBzeW0gbm90IGluIHNlbGYucnVsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRiZC5hcHBlbmQocnVsZSkKLSAgICAgICAgY2hhbmdlcyA9IDEKLSAgICAgICAgd2hpbGUgY2hhbmdlczoKLSAgICAgICAgICAgIGNoYW5nZXMgPSAwCi0gICAgICAgICAgICBmb3IgbGhzLCByaHMgaW4gdGJkOgotICAgICAgICAgICAgICAgIGlmIHNlbGYubnVsbGFibGVbbGhzXToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3Igc3ltIGluIHJoczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYubnVsbGFibGVbc3ltXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5udWxsYWJsZVtsaHNdID0gMQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzID0gMQotCi0gICAgZGVmIG1ha2VTdGF0ZTAoc2VsZik6Ci0gICAgICAgIHMwID0gX1N0YXRlKDAsIFtdKQotICAgICAgICBmb3IgcnVsZSBpbiBzZWxmLm5ld3J1bGVzW3NlbGYuX1NUQVJUXToKLSAgICAgICAgICAgIHMwLml0ZW1zLmFwcGVuZCgocnVsZSwgMCkpCi0gICAgICAgIHJldHVybiBzMAotCi0gICAgZGVmIGZpbmFsU3RhdGUoc2VsZiwgdG9rZW5zKToKLSAgICAgICAgIwotICAgICAgICAjICBZdWNrLgotICAgICAgICAjCi0gICAgICAgIGlmIGxlbihzZWxmLm5ld3J1bGVzW3NlbGYuX1NUQVJUXSkgPT0gMiBhbmQgbGVuKHRva2VucykgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIHN0YXJ0ID0gc2VsZi5ydWxlc1tzZWxmLl9TVEFSVF1bMF1bMV1bMV0KLSAgICAgICAgcmV0dXJuIHNlbGYuZ290bygxLCBzdGFydCkKLQotICAgIGRlZiBtYWtlTmV3UnVsZXMoc2VsZik6Ci0gICAgICAgIHdvcmtsaXN0ID0gW10KLSAgICAgICAgZm9yIHJ1bGVsaXN0IGluIHNlbGYucnVsZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICBmb3IgcnVsZSBpbiBydWxlbGlzdDoKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5hcHBlbmQoKHJ1bGUsIDAsIDEsIHJ1bGUpKQotCi0gICAgICAgIGZvciBydWxlLCBpLCBjYW5kaWRhdGUsIG9sZHJ1bGUgaW4gd29ya2xpc3Q6Ci0gICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgIG4gPSBsZW4ocmhzKQotICAgICAgICAgICAgd2hpbGUgaSA8IG46Ci0gICAgICAgICAgICAgICAgc3ltID0gcmhzW2ldCi0gICAgICAgICAgICAgICAgaWYgc3ltIG5vdCBpbiBzZWxmLnJ1bGVzIG9yIFwKLSAgICAgICAgICAgICAgICAgICBub3Qgc2VsZi5udWxsYWJsZVtzeW1dOgotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSAwCi0gICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgbmV3cmhzID0gbGlzdChyaHMpCi0gICAgICAgICAgICAgICAgbmV3cmhzW2ldID0gc2VsZi5fTlVMTEFCTEUrc3ltCi0gICAgICAgICAgICAgICAgbmV3cnVsZSA9IChsaHMsIHR1cGxlKG5ld3JocykpCi0gICAgICAgICAgICAgICAgd29ya2xpc3QuYXBwZW5kKChuZXdydWxlLCBpKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUsIG9sZHJ1bGUpKQotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IDAKLSAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgY2FuZGlkYXRlOgotICAgICAgICAgICAgICAgICAgICBsaHMgPSBzZWxmLl9OVUxMQUJMRStsaHMKLSAgICAgICAgICAgICAgICAgICAgcnVsZSA9IChsaHMsIHJocykKLSAgICAgICAgICAgICAgICBpZiBsaHMgaW4gc2VsZi5uZXdydWxlczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdydWxlc1tsaHNdLmFwcGVuZChydWxlKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3cnVsZXNbbGhzXSA9IFsgcnVsZSBdCi0gICAgICAgICAgICAgICAgc2VsZi5uZXcyb2xkW3J1bGVdID0gb2xkcnVsZQotCi0gICAgZGVmIHR5cGVzdHJpbmcoc2VsZiwgdG9rZW4pOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGVycm9yKHNlbGYsIHRva2VuKToKLSAgICAgICAgb3V0cHV0KCJTeW50YXggZXJyb3IgYXQgb3IgbmVhciBgJXMnIHRva2VuIiAlIHRva2VuKQotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0Ci0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgdG9rZW5zKToKLSAgICAgICAgc2V0cyA9IFsgWygxLDApLCAoMiwwKV0gXQotICAgICAgICBzZWxmLmxpbmtzID0ge30KLQotICAgICAgICBpZiBzZWxmLnJ1bGVzY2hhbmdlZDoKLSAgICAgICAgICAgIHNlbGYuY29tcHV0ZU51bGwoKQotICAgICAgICAgICAgc2VsZi5uZXdydWxlcyA9IHt9Ci0gICAgICAgICAgICBzZWxmLm5ldzJvbGQgPSB7fQotICAgICAgICAgICAgc2VsZi5tYWtlTmV3UnVsZXMoKQotICAgICAgICAgICAgc2VsZi5ydWxlc2NoYW5nZWQgPSAwCi0gICAgICAgICAgICBzZWxmLmVkZ2VzLCBzZWxmLmNvcmVzID0ge30sIHt9Ci0gICAgICAgICAgICBzZWxmLnN0YXRlcyA9IHsgMDogc2VsZi5tYWtlU3RhdGUwKCkgfQotICAgICAgICAgICAgc2VsZi5tYWtlU3RhdGUoMCwgc2VsZi5fQk9GKQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbih0b2tlbnMpKToKLSAgICAgICAgICAgIHNldHMuYXBwZW5kKFtdKQotCi0gICAgICAgICAgICBpZiBzZXRzW2ldID09IFtdOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzZWxmLm1ha2VTZXQodG9rZW5zW2ldLCBzZXRzLCBpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2V0cy5hcHBlbmQoW10pCi0gICAgICAgICAgICBzZWxmLm1ha2VTZXQoTm9uZSwgc2V0cywgbGVuKHRva2VucykpCi0KLSAgICAgICAgI19kdW1wKHRva2Vucywgc2V0cywgc2VsZi5zdGF0ZXMpCi0KLSAgICAgICAgZmluYWxpdGVtID0gKHNlbGYuZmluYWxTdGF0ZSh0b2tlbnMpLCAwKQotICAgICAgICBpZiBmaW5hbGl0ZW0gbm90IGluIHNldHNbLTJdOgotICAgICAgICAgICAgaWYgbGVuKHRva2VucykgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IodG9rZW5zW2ktMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoTm9uZSkKLQotICAgICAgICByZXR1cm4gc2VsZi5idWlsZFRyZWUoc2VsZi5fU1RBUlQsIGZpbmFsaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VucywgbGVuKHNldHMpLTIpCi0KLSAgICBkZWYgaXNudWxsYWJsZShzZWxmLCBzeW0pOgotICAgICAgICAjCi0gICAgICAgICMgIEZvciBzeW1ib2xzIGluIEdfZSBvbmx5LiAgSWYgd2Ugd2VyZW4ndCBzdXBwb3J0aW5nIDEuNSwKLSAgICAgICAgIyAgY291bGQganVzdCB1c2Ugc3ltLnN0YXJ0c3dpdGgoKS4KLSAgICAgICAgIwotICAgICAgICByZXR1cm4gc2VsZi5fTlVMTEFCTEUgPT0gc3ltWzA6bGVuKHNlbGYuX05VTExBQkxFKV0KLQotICAgIGRlZiBza2lwKHNlbGYsIGhzLCBwb3M9MCk6Ci0gICAgICAgIG4gPSBsZW4oaHNbMV0pCi0gICAgICAgIHdoaWxlIHBvcyA8IG46Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5pc251bGxhYmxlKGhzWzFdW3Bvc10pOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgPSBwb3MgKyAxCi0gICAgICAgIHJldHVybiBwb3MKLQotICAgIGRlZiBtYWtlU3RhdGUoc2VsZiwgc3RhdGUsIHN5bSk6Ci0gICAgICAgIGFzc2VydCBzeW0gaXMgbm90IE5vbmUKLSAgICAgICAgIwotICAgICAgICAjICBDb21wdXRlIFxlcHNpbG9uLWtlcm5lbCBzdGF0ZSdzIGNvcmUgYW5kIHNlZSBpZgotICAgICAgICAjICBpdCBleGlzdHMgYWxyZWFkeS4KLSAgICAgICAgIwotICAgICAgICBraXRlbXMgPSBbXQotICAgICAgICBmb3IgcnVsZSwgcG9zIGluIHNlbGYuc3RhdGVzW3N0YXRlXS5pdGVtczoKLSAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgaWYgcmhzW3Bvczpwb3MrMV0gPT0gKHN5bSwpOgotICAgICAgICAgICAgICAgIGtpdGVtcy5hcHBlbmQoKHJ1bGUsIHNlbGYuc2tpcChydWxlLCBwb3MrMSkpKQotICAgICAgICBjb3JlID0ga2l0ZW1zCi0KLSAgICAgICAgY29yZS5zb3J0KCkKLSAgICAgICAgdGNvcmUgPSB0dXBsZShjb3JlKQotICAgICAgICBpZiB0Y29yZSBpbiBzZWxmLmNvcmVzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29yZXNbdGNvcmVdCi0gICAgICAgICMKLSAgICAgICAgIyAgTm9wZSwgZG9lc24ndCBleGlzdC4gIENvbXB1dGUgaXQgYW5kIHRoZSBhc3NvY2lhdGVkCi0gICAgICAgICMgIFxlcHNpbG9uLW5vbmtlcm5lbCBzdGF0ZSB0b2dldGhlcjsgd2UnbGwgbmVlZCBpdCByaWdodCBhd2F5LgotICAgICAgICAjCi0gICAgICAgIGsgPSBzZWxmLmNvcmVzW3Rjb3JlXSA9IGxlbihzZWxmLnN0YXRlcykKLSAgICAgICAgSywgTksgPSBfU3RhdGUoaywga2l0ZW1zKSwgX1N0YXRlKGsrMSwgW10pCi0gICAgICAgIHNlbGYuc3RhdGVzW2tdID0gSwotICAgICAgICBwcmVkaWN0ZWQgPSB7fQotCi0gICAgICAgIGVkZ2VzID0gc2VsZi5lZGdlcwotICAgICAgICBydWxlcyA9IHNlbGYubmV3cnVsZXMKLSAgICAgICAgZm9yIFggaW4gSywgTks6Ci0gICAgICAgICAgICB3b3JrbGlzdCA9IFguaXRlbXMKLSAgICAgICAgICAgIGZvciBpdGVtIGluIHdvcmtsaXN0OgotICAgICAgICAgICAgICAgIHJ1bGUsIHBvcyA9IGl0ZW0KLSAgICAgICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgICAgICAgICBpZiBwb3MgPT0gbGVuKHJocyk6Ci0gICAgICAgICAgICAgICAgICAgIFguY29tcGxldGUuYXBwZW5kKHJ1bGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBuZXh0U3ltID0gcmhzW3Bvc10KLSAgICAgICAgICAgICAgICBrZXkgPSAoWC5zdGF0ZW5vLCBuZXh0U3ltKQotICAgICAgICAgICAgICAgIGlmIG5leHRTeW0gbm90IGluIHJ1bGVzOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGVkZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgZWRnZXNba2V5XSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgIFguVC5hcHBlbmQobmV4dFN5bSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlZGdlc1trZXldID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBpZiBuZXh0U3ltIG5vdCBpbiBwcmVkaWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0ZWRbbmV4dFN5bV0gPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJ1bGUgaW4gcnVsZXNbbmV4dFN5bV06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHBvcyA9IHNlbGYuc2tpcChwcnVsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgPSAocHJ1bGUsIHBwb3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTksuaXRlbXMuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgIFByb2JsZW06IHdlIGtub3cgSyBuZWVkcyBnZW5lcmF0aW5nLCBidXQgd2UKLSAgICAgICAgICAgICMgIGRvbid0IHlldCBrbm93IGFib3V0IE5LLiAgQ2FuJ3QgY29tbWl0IGFueXRoaW5nCi0gICAgICAgICAgICAjICByZWdhcmRpbmcgTksgdG8gc2VsZi5lZGdlcyB1bnRpbCB3ZSdyZSBzdXJlLiAgU2hvdWxkCi0gICAgICAgICAgICAjICB3ZSBkZWxheSBjb21taXR0aW5nIG9uIGJvdGggSyBhbmQgTksgdG8gYXZvaWQgdGhpcwotICAgICAgICAgICAgIyAgaGFja3kgY29kZT8gIFRoaXMgY3JlYXRlcyBvdGhlciBwcm9ibGVtcy4uCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBpZiBYIGlzIEs6Ci0gICAgICAgICAgICAgICAgZWRnZXMgPSB7fQotCi0gICAgICAgIGlmIE5LLml0ZW1zID09IFtdOgotICAgICAgICAgICAgcmV0dXJuIGsKLQotICAgICAgICAjCi0gICAgICAgICMgIENoZWNrIGZvciBcZXBzaWxvbi1ub25rZXJuZWwncyBjb3JlLiAgVW5mb3J0dW5hdGVseSB3ZQotICAgICAgICAjICBuZWVkIHRvIGtub3cgdGhlIGVudGlyZSBzZXQgb2YgcHJlZGljdGVkIG5vbnRlcm1pbmFscwotICAgICAgICAjICB0byBkbyB0aGlzIHdpdGhvdXQgYWNjaWRlbnRhbGx5IGR1cGxpY2F0aW5nIHN0YXRlcy4KLSAgICAgICAgIwotICAgICAgICBjb3JlID0gc29ydGVkKHByZWRpY3RlZC5rZXlzKCkpCi0gICAgICAgIHRjb3JlID0gdHVwbGUoY29yZSkKLSAgICAgICAgaWYgdGNvcmUgaW4gc2VsZi5jb3JlczoKLSAgICAgICAgICAgIHNlbGYuZWRnZXNbKGssIE5vbmUpXSA9IHNlbGYuY29yZXNbdGNvcmVdCi0gICAgICAgICAgICByZXR1cm4gawotCi0gICAgICAgIG5rID0gc2VsZi5jb3Jlc1t0Y29yZV0gPSBzZWxmLmVkZ2VzWyhrLCBOb25lKV0gPSBOSy5zdGF0ZW5vCi0gICAgICAgIHNlbGYuZWRnZXMudXBkYXRlKGVkZ2VzKQotICAgICAgICBzZWxmLnN0YXRlc1tua10gPSBOSwotICAgICAgICByZXR1cm4gawotCi0gICAgZGVmIGdvdG8oc2VsZiwgc3RhdGUsIHN5bSk6Ci0gICAgICAgIGtleSA9IChzdGF0ZSwgc3ltKQotICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuZWRnZXM6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjICBObyB0cmFuc2l0aW9ucyBmcm9tIHN0YXRlIG9uIHN5bS4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcnYgPSBzZWxmLmVkZ2VzW2tleV0KLSAgICAgICAgaWYgcnYgaXMgTm9uZToKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgIFRhcmdldCBzdGF0ZSBpc24ndCBnZW5lcmF0ZWQgeWV0LiAgUmVtZWR5IHRoaXMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBydiA9IHNlbGYubWFrZVN0YXRlKHN0YXRlLCBzeW0pCi0gICAgICAgICAgICBzZWxmLmVkZ2VzW2tleV0gPSBydgotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiBnb3RvVChzZWxmLCBzdGF0ZSwgdCk6Ci0gICAgICAgIHJldHVybiBbc2VsZi5nb3RvKHN0YXRlLCB0KV0KLQotICAgIGRlZiBnb3RvU1Qoc2VsZiwgc3RhdGUsIHN0KToKLSAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgdCBpbiBzZWxmLnN0YXRlc1tzdGF0ZV0uVDoKLSAgICAgICAgICAgIGlmIHN0ID09IHQ6Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKHNlbGYuZ290byhzdGF0ZSwgdCkpCi0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIGFkZChzZWxmLCBzZXQsIGl0ZW0sIGk9Tm9uZSwgcHJlZGVjZXNzb3I9Tm9uZSwgY2F1c2FsPU5vbmUpOgotICAgICAgICBpZiBwcmVkZWNlc3NvciBpcyBOb25lOgotICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gc2V0OgotICAgICAgICAgICAgICAgIHNldC5hcHBlbmQoaXRlbSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGtleSA9IChpdGVtLCBpKQotICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gc2V0OgotICAgICAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XSA9IFtdCi0gICAgICAgICAgICAgICAgc2V0LmFwcGVuZChpdGVtKQotICAgICAgICAgICAgc2VsZi5saW5rc1trZXldLmFwcGVuZCgocHJlZGVjZXNzb3IsIGNhdXNhbCkpCi0KLSAgICBkZWYgbWFrZVNldChzZWxmLCB0b2tlbiwgc2V0cywgaSk6Ci0gICAgICAgIGN1ciwgbmV4dCA9IHNldHNbaV0sIHNldHNbaSsxXQotCi0gICAgICAgIHR0eXBlID0gdG9rZW4gaXMgbm90IE5vbmUgYW5kIHNlbGYudHlwZXN0cmluZyh0b2tlbikgb3IgTm9uZQotICAgICAgICBpZiB0dHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZuLCBhcmcgPSBzZWxmLmdvdG9ULCB0dHlwZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm4sIGFyZyA9IHNlbGYuZ290b1NULCB0b2tlbgotCi0gICAgICAgIGZvciBpdGVtIGluIGN1cjoKLSAgICAgICAgICAgIHB0ciA9IChpdGVtLCBpKQotICAgICAgICAgICAgc3RhdGUsIHBhcmVudCA9IGl0ZW0KLSAgICAgICAgICAgIGFkZCA9IGZuKHN0YXRlLCBhcmcpCi0gICAgICAgICAgICBmb3IgayBpbiBhZGQ6Ci0gICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQobmV4dCwgKGssIHBhcmVudCksIGkrMSwgcHRyKQotICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZ290byhrLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKG5leHQsIChuaywgaSsxKSkKLQotICAgICAgICAgICAgaWYgcGFyZW50ID09IGk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLmNvbXBsZXRlOgotICAgICAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgICAgIGZvciBwaXRlbSBpbiBzZXRzW3BhcmVudF06Ci0gICAgICAgICAgICAgICAgICAgIHBzdGF0ZSwgcHBhcmVudCA9IHBpdGVtCi0gICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLmdvdG8ocHN0YXRlLCBsaHMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3aHkgPSAoaXRlbSwgaSwgcnVsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBwdHIgPSAocGl0ZW0sIHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKGN1ciwgKGssIHBwYXJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgcHB0ciwgd2h5KQotICAgICAgICAgICAgICAgICAgICAgICAgbmsgPSBzZWxmLmdvdG8oaywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKGN1ciwgKG5rLCBpKSkKLQotICAgIGRlZiBtYWtlU2V0X2Zhc3Qoc2VsZiwgdG9rZW4sIHNldHMsIGkpOgotICAgICAgICAjCi0gICAgICAgICMgIENhbGwgKm9ubHkqIHdoZW4gdGhlIGVudGlyZSBzdGF0ZSBtYWNoaW5lIGhhcyBiZWVuIGJ1aWx0IQotICAgICAgICAjICBJdCByZWxpZXMgb24gc2VsZi5lZGdlcyBiZWluZyBmaWxsZWQgaW4gY29tcGxldGVseSwgYW5kCi0gICAgICAgICMgIHRoZW4gZHVwbGljYXRlcyBhbmQgaW5saW5lcyBjb2RlIHRvIGJvb3N0IHNwZWVkIGF0IHRoZQotICAgICAgICAjICBjb3N0IG9mIGV4dHJlbWUgdWdsaW5lc3MuCi0gICAgICAgICMKLSAgICAgICAgY3VyLCBuZXh0ID0gc2V0c1tpXSwgc2V0c1tpKzFdCi0gICAgICAgIHR0eXBlID0gdG9rZW4gaXMgbm90IE5vbmUgYW5kIHNlbGYudHlwZXN0cmluZyh0b2tlbikgb3IgTm9uZQotCi0gICAgICAgIGZvciBpdGVtIGluIGN1cjoKLSAgICAgICAgICAgIHB0ciA9IChpdGVtLCBpKQotICAgICAgICAgICAgc3RhdGUsIHBhcmVudCA9IGl0ZW0KLSAgICAgICAgICAgIGlmIHR0eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGsgPSBzZWxmLmVkZ2VzLmdldCgoc3RhdGUsIHR0eXBlKSwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAjc2VsZi5hZGQobmV4dCwgKGssIHBhcmVudCksIGkrMSwgcHRyKQotICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLXYKLSAgICAgICAgICAgICAgICAgICAgbmV3ID0gKGssIHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAga2V5ID0gKG5ldywgaSsxKQotICAgICAgICAgICAgICAgICAgICBpZiBuZXcgbm90IGluIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0gPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQobmV3KQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0uYXBwZW5kKChwdHIsIE5vbmUpKQotICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLV4KLSAgICAgICAgICAgICAgICAgICAgI25rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIG5rID0gc2VsZi5lZGdlcy5nZXQoKGssIE5vbmUpLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBpZiBuayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICNzZWxmLmFkZChuZXh0LCAobmssIGkrMSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLXYKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyA9IChuaywgaSsxKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3IG5vdCBpbiBuZXh0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tXgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhZGQgPSBzZWxmLmdvdG9TVChzdGF0ZSwgdG9rZW4pCi0gICAgICAgICAgICAgICAgZm9yIGsgaW4gYWRkOgotICAgICAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQobmV4dCwgKGssIHBhcmVudCksIGkrMSwgcHRyKQotICAgICAgICAgICAgICAgICAgICAgICAgI25rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZWRnZXMuZ2V0KChrLCBOb25lKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkKG5leHQsIChuaywgaSsxKSkKLQotICAgICAgICAgICAgaWYgcGFyZW50ID09IGk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLmNvbXBsZXRlOgotICAgICAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgICAgIGZvciBwaXRlbSBpbiBzZXRzW3BhcmVudF06Ci0gICAgICAgICAgICAgICAgICAgIHBzdGF0ZSwgcHBhcmVudCA9IHBpdGVtCi0gICAgICAgICAgICAgICAgICAgICNrID0gc2VsZi5nb3RvKHBzdGF0ZSwgbGhzKQotICAgICAgICAgICAgICAgICAgICBrID0gc2VsZi5lZGdlcy5nZXQoKHBzdGF0ZSwgbGhzKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoeSA9IChpdGVtLCBpLCBydWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcHB0ciA9IChwaXRlbSwgcGFyZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGYuYWRkKGN1ciwgKGssIHBwYXJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgaSwgcHB0ciwgd2h5KQotICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS12Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgPSAoaywgcHBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IChuZXcsIGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXcgbm90IGluIGN1cjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0gPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ci5hcHBlbmQobmV3KQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5rc1trZXldLmFwcGVuZCgocHB0ciwgd2h5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tXgotICAgICAgICAgICAgICAgICAgICAgICAgI25rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZWRnZXMuZ2V0KChrLCBOb25lKSwgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWxmLmFkZChjdXIsIChuaywgaSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS12Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ID0gKG5rLCBpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ldyBub3QgaW4gY3VyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIuYXBwZW5kKG5ldykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLV4KLQotICAgIGRlZiBwcmVkZWNlc3NvcihzZWxmLCBrZXksIGNhdXNhbCk6Ci0gICAgICAgIGZvciBwLCBjIGluIHNlbGYubGlua3Nba2V5XToKLSAgICAgICAgICAgIGlmIGMgPT0gY2F1c2FsOgotICAgICAgICAgICAgICAgIHJldHVybiBwCi0gICAgICAgIGFzc2VydCAwCi0KLSAgICBkZWYgY2F1c2FsKHNlbGYsIGtleSk6Ci0gICAgICAgIGxpbmtzID0gc2VsZi5saW5rc1trZXldCi0gICAgICAgIGlmIGxlbihsaW5rcykgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBsaW5rc1swXVsxXQotICAgICAgICBjaG9pY2VzID0gW10KLSAgICAgICAgcnVsZTJjYXVzZSA9IHt9Ci0gICAgICAgIGZvciBwLCBjIGluIGxpbmtzOgotICAgICAgICAgICAgcnVsZSA9IGNbMl0KLSAgICAgICAgICAgIGNob2ljZXMuYXBwZW5kKHJ1bGUpCi0gICAgICAgICAgICBydWxlMmNhdXNlW3J1bGVdID0gYwotICAgICAgICByZXR1cm4gcnVsZTJjYXVzZVtzZWxmLmFtYmlndWl0eShjaG9pY2VzKV0KLQotICAgIGRlZiBkZXJpdmVFcHNpbG9uKHNlbGYsIG50KToKLSAgICAgICAgaWYgbGVuKHNlbGYubmV3cnVsZXNbbnRdKSA+IDE6Ci0gICAgICAgICAgICBydWxlID0gc2VsZi5hbWJpZ3VpdHkoc2VsZi5uZXdydWxlc1tudF0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBydWxlID0gc2VsZi5uZXdydWxlc1tudF1bMF0KLSAgICAgICAgI291dHB1dChydWxlKQotCi0gICAgICAgIHJocyA9IHJ1bGVbMV0KLSAgICAgICAgYXR0ciA9IFtOb25lXSAqIGxlbihyaHMpCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJocyktMSwgLTEsIC0xKToKLSAgICAgICAgICAgIGF0dHJbaV0gPSBzZWxmLmRlcml2ZUVwc2lsb24ocmhzW2ldKQotICAgICAgICByZXR1cm4gc2VsZi5ydWxlMmZ1bmNbc2VsZi5uZXcyb2xkW3J1bGVdXShhdHRyKQotCi0gICAgZGVmIGJ1aWxkVHJlZShzZWxmLCBudCwgaXRlbSwgdG9rZW5zLCBrKToKLSAgICAgICAgc3RhdGUsIHBhcmVudCA9IGl0ZW0KLQotICAgICAgICBjaG9pY2VzID0gW10KLSAgICAgICAgZm9yIHJ1bGUgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLmNvbXBsZXRlOgotICAgICAgICAgICAgaWYgcnVsZVswXSA9PSBudDoKLSAgICAgICAgICAgICAgICBjaG9pY2VzLmFwcGVuZChydWxlKQotICAgICAgICBydWxlID0gY2hvaWNlc1swXQotICAgICAgICBpZiBsZW4oY2hvaWNlcykgPiAxOgotICAgICAgICAgICAgcnVsZSA9IHNlbGYuYW1iaWd1aXR5KGNob2ljZXMpCi0gICAgICAgICNvdXRwdXQocnVsZSkKLQotICAgICAgICByaHMgPSBydWxlWzFdCi0gICAgICAgIGF0dHIgPSBbTm9uZV0gKiBsZW4ocmhzKQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihyaHMpLTEsIC0xLCAtMSk6Ci0gICAgICAgICAgICBzeW0gPSByaHNbaV0KLSAgICAgICAgICAgIGlmIHN5bSBub3QgaW4gc2VsZi5uZXdydWxlczoKLSAgICAgICAgICAgICAgICBpZiBzeW0gIT0gc2VsZi5fQk9GOgotICAgICAgICAgICAgICAgICAgICBhdHRyW2ldID0gdG9rZW5zW2stMV0KLSAgICAgICAgICAgICAgICAgICAga2V5ID0gKGl0ZW0sIGspCi0gICAgICAgICAgICAgICAgICAgIGl0ZW0sIGsgPSBzZWxmLnByZWRlY2Vzc29yKGtleSwgTm9uZSkKLSAgICAgICAgICAgICNlbGlmIHNlbGYuaXNudWxsYWJsZShzeW0pOgotICAgICAgICAgICAgZWxpZiBzZWxmLl9OVUxMQUJMRSA9PSBzeW1bMDpsZW4oc2VsZi5fTlVMTEFCTEUpXToKLSAgICAgICAgICAgICAgICBhdHRyW2ldID0gc2VsZi5kZXJpdmVFcHNpbG9uKHN5bSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAga2V5ID0gKGl0ZW0sIGspCi0gICAgICAgICAgICAgICAgd2h5ID0gc2VsZi5jYXVzYWwoa2V5KQotICAgICAgICAgICAgICAgIGF0dHJbaV0gPSBzZWxmLmJ1aWxkVHJlZShzeW0sIHdoeVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLCB3aHlbMV0pCi0gICAgICAgICAgICAgICAgaXRlbSwgayA9IHNlbGYucHJlZGVjZXNzb3Ioa2V5LCB3aHkpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bGUyZnVuY1tzZWxmLm5ldzJvbGRbcnVsZV1dKGF0dHIpCi0KLSAgICBkZWYgYW1iaWd1aXR5KHNlbGYsIHJ1bGVzKToKLSAgICAgICAgIwotICAgICAgICAjICBYWFggLSBwcm9ibGVtIGhlcmUgYW5kIGluIGNvbGxlY3RSdWxlcygpIGlmIHRoZSBzYW1lIHJ1bGUKLSAgICAgICAgIyAgICAgICAgYXBwZWFycyBpbiA+MSBtZXRob2QuICBBbHNvIHVuZGVmaW5lZCByZXN1bHRzIGlmIHJ1bGVzCi0gICAgICAgICMgICAgICAgIGNhdXNpbmcgdGhlIGFtYmlndWl0eSBhcHBlYXIgaW4gdGhlIHNhbWUgbWV0aG9kLgotICAgICAgICAjCi0gICAgICAgIHNvcnRsaXN0ID0gW10KLSAgICAgICAgbmFtZTJpbmRleCA9IHt9Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihydWxlcykpOgotICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlID0gcnVsZXNbaV0KLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLnJ1bGUybmFtZVtzZWxmLm5ldzJvbGRbcnVsZV1dCi0gICAgICAgICAgICBzb3J0bGlzdC5hcHBlbmQoKGxlbihyaHMpLCBuYW1lKSkKLSAgICAgICAgICAgIG5hbWUyaW5kZXhbbmFtZV0gPSBpCi0gICAgICAgIHNvcnRsaXN0LnNvcnQoKQotICAgICAgICBsaXN0ID0gW2IgZm9yIGEsIGIgaW4gc29ydGxpc3RdCi0gICAgICAgIHJldHVybiBydWxlc1tuYW1lMmluZGV4W3NlbGYucmVzb2x2ZShsaXN0KV1dCi0KLSAgICBkZWYgcmVzb2x2ZShzZWxmLCBsaXN0KToKLSAgICAgICAgIwotICAgICAgICAjICBSZXNvbHZlIGFtYmlndWl0eSBpbiBmYXZvciBvZiB0aGUgc2hvcnRlc3QgUkhTLgotICAgICAgICAjICBTaW5jZSB3ZSB3YWxrIHRoZSB0cmVlIGZyb20gdGhlIHRvcCBkb3duLCB0aGlzCi0gICAgICAgICMgIHNob3VsZCBlZmZlY3RpdmVseSByZXNvbHZlIGluIGZhdm9yIG9mIGEgInNoaWZ0Ii4KLSAgICAgICAgIwotICAgICAgICByZXR1cm4gbGlzdFswXQotCi0jCi0jICBHZW5lcmljQVNUQnVpbGRlciBhdXRvbWFnaWNhbGx5IGNvbnN0cnVjdHMgYSBjb25jcmV0ZS9hYnN0cmFjdCBzeW50YXggdHJlZQotIyAgZm9yIGEgZ2l2ZW4gaW5wdXQuICBUaGUgZXh0cmEgYXJndW1lbnQgaXMgYSBjbGFzcyAobm90IGFuIGluc3RhbmNlISkKLSMgIHdoaWNoIHN1cHBvcnRzIHRoZSAiX19zZXRzbGljZV9fIiBhbmQgIl9fbGVuX18iIG1ldGhvZHMuCi0jCi0jICBYWFggLSBzaWxlbnRseSBvdmVycmlkZXMgYW55IHVzZXIgY29kZSBpbiBtZXRob2RzLgotIwotCi1jbGFzcyBHZW5lcmljQVNUQnVpbGRlcihHZW5lcmljUGFyc2VyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgQVNULCBzdGFydCk6Ci0gICAgICAgIEdlbmVyaWNQYXJzZXIuX19pbml0X18oc2VsZiwgc3RhcnQpCi0gICAgICAgIHNlbGYuQVNUID0gQVNUCi0KLSAgICBkZWYgcHJlcHJvY2VzcyhzZWxmLCBydWxlLCBmdW5jKToKLSAgICAgICAgcmViaW5kID0gbGFtYmRhIGxocywgc2VsZj1zZWxmOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYXJncywgbGhzPWxocywgc2VsZj1zZWxmOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRBU1ROb2RlKGFyZ3MsIGxocykKLSAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgIHJldHVybiBydWxlLCByZWJpbmQobGhzKQotCi0gICAgZGVmIGJ1aWxkQVNUTm9kZShzZWxmLCBhcmdzLCBsaHMpOgotICAgICAgICBjaGlsZHJlbiA9IFtdCi0gICAgICAgIGZvciBhcmcgaW4gYXJnczoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBzZWxmLkFTVCk6Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGFyZykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKHNlbGYudGVybWluYWwoYXJnKSkKLSAgICAgICAgcmV0dXJuIHNlbGYubm9udGVybWluYWwobGhzLCBjaGlsZHJlbikKLQotICAgIGRlZiB0ZXJtaW5hbChzZWxmLCB0b2tlbik6ICAgICAgcmV0dXJuIHRva2VuCi0KLSAgICBkZWYgbm9udGVybWluYWwoc2VsZiwgdHlwZSwgYXJncyk6Ci0gICAgICAgIHJ2ID0gc2VsZi5BU1QodHlwZSkKLSAgICAgICAgcnZbOmxlbihhcmdzKV0gPSBhcmdzCi0gICAgICAgIHJldHVybiBydgotCi0jCi0jICBHZW5lcmljQVNUVHJhdmVyc2FsIGlzIGEgVmlzaXRvciBwYXR0ZXJuIGFjY29yZGluZyB0byBEZXNpZ24gUGF0dGVybnMuICBGb3IKLSMgIGVhY2ggbm9kZSBpdCBhdHRlbXB0cyB0byBpbnZva2UgdGhlIG1ldGhvZCBuXzxub2RlIHR5cGU+LCBmYWxsaW5nCi0jICBiYWNrIG9udG8gdGhlIGRlZmF1bHQoKSBtZXRob2QgaWYgdGhlIG5fKiBjYW4ndCBiZSBmb3VuZC4gIFRoZSBwcmVvcmRlcgotIyAgdHJhdmVyc2FsIGFsc28gbG9va3MgZm9yIGFuIGV4aXQgaG9vayBuYW1lZCBuXzxub2RlIHR5cGU+X2V4aXQgKG5vIGRlZmF1bHQKLSMgIHJvdXRpbmUgaXMgY2FsbGVkIGlmIGl0J3Mgbm90IGZvdW5kKS4gIFRvIHByZW1hdHVyZWx5IGhhbHQgdHJhdmVyc2FsCi0jICBvZiBhIHN1YnRyZWUsIGNhbGwgdGhlIHBydW5lKCkgbWV0aG9kIC0tIHRoaXMgb25seSBtYWtlcyBzZW5zZSBmb3IgYQotIyAgcHJlb3JkZXIgdHJhdmVyc2FsLiAgTm9kZSB0eXBlIGlzIGRldGVybWluZWQgdmlhIHRoZSB0eXBlc3RyaW5nKCkgbWV0aG9kLgotIwotCi1jbGFzcyBHZW5lcmljQVNUVHJhdmVyc2FsUHJ1bmluZ0V4Y2VwdGlvbjoKLSAgICBwYXNzCi0KLWNsYXNzIEdlbmVyaWNBU1RUcmF2ZXJzYWw6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFzdCk6Ci0gICAgICAgIHNlbGYuYXN0ID0gYXN0Ci0KLSAgICBkZWYgdHlwZXN0cmluZyhzZWxmLCBub2RlKToKLSAgICAgICAgcmV0dXJuIG5vZGUudHlwZQotCi0gICAgZGVmIHBydW5lKHNlbGYpOgotICAgICAgICByYWlzZSBHZW5lcmljQVNUVHJhdmVyc2FsUHJ1bmluZ0V4Y2VwdGlvbgotCi0gICAgZGVmIHByZW9yZGVyKHNlbGYsIG5vZGU9Tm9uZSk6Ci0gICAgICAgIGlmIG5vZGUgaXMgTm9uZToKLSAgICAgICAgICAgIG5vZGUgPSBzZWxmLmFzdAotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSAnbl8nICsgc2VsZi50eXBlc3RyaW5nKG5vZGUpCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICAgICAgZnVuYyhub2RlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHQobm9kZSkKLSAgICAgICAgZXhjZXB0IEdlbmVyaWNBU1RUcmF2ZXJzYWxQcnVuaW5nRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIGtpZCBpbiBub2RlOgotICAgICAgICAgICAgc2VsZi5wcmVvcmRlcihraWQpCi0KLSAgICAgICAgbmFtZSA9IG5hbWUgKyAnX2V4aXQnCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgZnVuYyhub2RlKQotCi0gICAgZGVmIHBvc3RvcmRlcihzZWxmLCBub2RlPU5vbmUpOgotICAgICAgICBpZiBub2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBub2RlID0gc2VsZi5hc3QKLQotICAgICAgICBmb3Iga2lkIGluIG5vZGU6Ci0gICAgICAgICAgICBzZWxmLnBvc3RvcmRlcihraWQpCi0KLSAgICAgICAgbmFtZSA9ICduXycgKyBzZWxmLnR5cGVzdHJpbmcobm9kZSkKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKLSAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICBmdW5jKG5vZGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmRlZmF1bHQobm9kZSkKLQotCi0gICAgZGVmIGRlZmF1bHQoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHBhc3MKLQotIwotIyAgR2VuZXJpY0FTVE1hdGNoZXIuICBBU1Qgbm9kZXMgbXVzdCBoYXZlICJfX2dldGl0ZW1fXyIgYW5kICJfX2NtcF9fIgotIyAgaW1wbGVtZW50ZWQuCi0jCi0jICBYWFggLSBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCBob3cgR2VuZXJpY1BhcnNlciB3YWxrcyB0aGUgcGFyc2UgdHJlZS4KLSMKLQotY2xhc3MgR2VuZXJpY0FTVE1hdGNoZXIoR2VuZXJpY1BhcnNlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0LCBhc3QpOgotICAgICAgICBHZW5lcmljUGFyc2VyLl9faW5pdF9fKHNlbGYsIHN0YXJ0KQotICAgICAgICBzZWxmLmFzdCA9IGFzdAotCi0gICAgZGVmIHByZXByb2Nlc3Moc2VsZiwgcnVsZSwgZnVuYyk6Ci0gICAgICAgIHJlYmluZCA9IGxhbWJkYSBmdW5jLCBzZWxmPXNlbGY6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBhcmdzLCBmdW5jPWZ1bmMsIHNlbGY9c2VsZjogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvdW5kTWF0Y2goYXJncywgZnVuYykKLSAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgIHJoc2xpc3QgPSBsaXN0KHJocykKLSAgICAgICAgcmhzbGlzdC5yZXZlcnNlKCkKLQotICAgICAgICByZXR1cm4gKGxocywgdHVwbGUocmhzbGlzdCkpLCByZWJpbmQoZnVuYykKLQotICAgIGRlZiBmb3VuZE1hdGNoKHNlbGYsIGFyZ3MsIGZ1bmMpOgotICAgICAgICBmdW5jKGFyZ3NbLTFdKQotICAgICAgICByZXR1cm4gYXJnc1stMV0KLQotICAgIGRlZiBtYXRjaF9yKHNlbGYsIG5vZGUpOgotICAgICAgICBzZWxmLmlucHV0Lmluc2VydCgwLCBub2RlKQotICAgICAgICBjaGlsZHJlbiA9IDAKLQotICAgICAgICBmb3IgY2hpbGQgaW4gbm9kZToKLSAgICAgICAgICAgIGlmIGNoaWxkcmVuID09IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5pbnB1dC5pbnNlcnQoMCwgJygnKQotICAgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbiArIDEKLSAgICAgICAgICAgIHNlbGYubWF0Y2hfcihjaGlsZCkKLQotICAgICAgICBpZiBjaGlsZHJlbiA+IDA6Ci0gICAgICAgICAgICBzZWxmLmlucHV0Lmluc2VydCgwLCAnKScpCi0KLSAgICBkZWYgbWF0Y2goc2VsZiwgYXN0PU5vbmUpOgotICAgICAgICBpZiBhc3QgaXMgTm9uZToKLSAgICAgICAgICAgIGFzdCA9IHNlbGYuYXN0Ci0gICAgICAgIHNlbGYuaW5wdXQgPSBbXQotCi0gICAgICAgIHNlbGYubWF0Y2hfcihhc3QpCi0gICAgICAgIHNlbGYucGFyc2Uoc2VsZi5pbnB1dCkKLQotICAgIGRlZiByZXNvbHZlKHNlbGYsIGxpc3QpOgotICAgICAgICAjCi0gICAgICAgICMgIFJlc29sdmUgYW1iaWd1aXR5IGluIGZhdm9yIG9mIHRoZSBsb25nZXN0IFJIUy4KLSAgICAgICAgIwotICAgICAgICByZXR1cm4gbGlzdFstMV0KLQotZGVmIF9kdW1wKHRva2Vucywgc2V0cywgc3RhdGVzKToKLSAgICBmb3IgaSBpbiByYW5nZShsZW4oc2V0cykpOgotICAgICAgICBvdXRwdXQoJ3NldCAlZCcgJSBpKQotICAgICAgICBmb3IgaXRlbSBpbiBzZXRzW2ldOgotICAgICAgICAgICAgb3V0cHV0KCdcdCcsIGl0ZW0pCi0gICAgICAgICAgICBmb3IgKGxocywgcmhzKSwgcG9zIGluIHN0YXRlc1tpdGVtWzBdXS5pdGVtczoKLSAgICAgICAgICAgICAgICBvdXRwdXQoJ1x0XHQnLCBsaHMsICc6Oj0nLCBlbmQ9JycpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCcgJy5qb2luKHJoc1s6cG9zXSksIGVuZD0nJykKLSAgICAgICAgICAgICAgICBvdXRwdXQoJy4nLCBlbmQ9JycpCi0gICAgICAgICAgICAgICAgb3V0cHV0KCcgJy5qb2luKHJoc1twb3M6XSkpCi0gICAgICAgIGlmIGkgPCBsZW4odG9rZW5zKToKLSAgICAgICAgICAgIG91dHB1dCgpCi0gICAgICAgICAgICBvdXRwdXQoJ3Rva2VuICVzJyAlIHN0cih0b2tlbnNbaV0pKQotICAgICAgICAgICAgb3V0cHV0KCkKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCA1ZTA0MWVhLi4wNGJhZWFmIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC05OCwxMCArOTgsMTMgQEAKICAgICAiRE9VQkxFU0xBU0giLAogICAgICJET1VCTEVTTEFTSEVRVUFMIiwKICAgICAiQVQiLAorICAgICJBVEVRVUFMIiwKICAgICAiUkFSUk9XIiwKICAgICAiRUxMSVBTSVMiLAogICAgIC8qIFRoaXMgdGFibGUgbXVzdCBtYXRjaCB0aGUgI2RlZmluZXMgaW4gdG9rZW4uaCEgKi8KICAgICAiT1AiLAorICAgICJBV0FJVCIsCisgICAgIkFTWU5DIiwKICAgICAiPEVSUk9SVE9LRU4+IiwKICAgICAiPE5fVE9LRU5TPiIKIH07CkBAIC0xMjMsNiArMTI2LDcgQEAKICAgICB0b2stPnRhYnNpemUgPSBUQUJTSVpFOwogICAgIHRvay0+aW5kZW50ID0gMDsKICAgICB0b2stPmluZHN0YWNrWzBdID0gMDsKKwogICAgIHRvay0+YXRib2wgPSAxOwogICAgIHRvay0+cGVuZGluID0gMDsKICAgICB0b2stPnByb21wdCA9IHRvay0+bmV4dHByb21wdCA9IE5VTEw7CkBAIC0xNDMsNiArMTQ3LDExIEBACiAgICAgdG9rLT5kZWNvZGluZ19yZWFkbGluZSA9IE5VTEw7CiAgICAgdG9rLT5kZWNvZGluZ19idWZmZXIgPSBOVUxMOwogI2VuZGlmCisKKyAgICB0b2stPmFzeW5jX2RlZiA9IDA7CisgICAgdG9rLT5hc3luY19kZWZfaW5kZW50ID0gMDsKKyAgICB0b2stPmFzeW5jX2RlZl9ubCA9IDA7CisKICAgICByZXR1cm4gdG9rOwogfQogCkBAIC0xMTMxLDcgKzExNDAsNyBAQAogICAgIGNhc2UgJ30nOiAgICAgICAgICAgcmV0dXJuIFJCUkFDRTsKICAgICBjYXNlICdeJzogICAgICAgICAgIHJldHVybiBDSVJDVU1GTEVYOwogICAgIGNhc2UgJ34nOiAgICAgICAgICAgcmV0dXJuIFRJTERFOwotICAgIGNhc2UgJ0AnOiAgICAgICByZXR1cm4gQVQ7CisgICAgY2FzZSAnQCc6ICAgICAgICAgICByZXR1cm4gQVQ7CiAgICAgZGVmYXVsdDogICAgICAgICAgICByZXR1cm4gT1A7CiAgICAgfQogfQpAQCAtMTIwNyw2ICsxMjE2LDExIEBACiAgICAgICAgIGNhc2UgJz0nOiAgICAgICAgICAgICAgIHJldHVybiBDSVJDVU1GTEVYRVFVQUw7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnQCc6CisgICAgICAgIHN3aXRjaCAoYzIpIHsKKyAgICAgICAgY2FzZSAnPSc6ICAgICAgICAgICAgICAgcmV0dXJuIEFURVFVQUw7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBPUDsKIH0KQEAgLTE0MjQsNiArMTQzOCwyMSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHRvay0+YXN5bmNfZGVmCisgICAgICAgICYmICFibGFua2xpbmUKKyAgICAgICAgJiYgdG9rLT5sZXZlbCA9PSAwCisgICAgICAgIC8qIFRoZXJlIHdhcyBhIE5FV0xJTkUgYWZ0ZXIgQVNZTkMgREVGLAorICAgICAgICAgICBzbyB3ZSdyZSBwYXN0IHRoZSBzaWduYXR1cmUuICovCisgICAgICAgICYmIHRvay0+YXN5bmNfZGVmX25sCisgICAgICAgIC8qIEN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWwgaXMgbGVzcyB0aGFuIHdoZXJlCisgICAgICAgICAgIHRoZSBhc3luYyBmdW5jdGlvbiB3YXMgZGVmaW5lZCAqLworICAgICAgICAmJiB0b2stPmFzeW5jX2RlZl9pbmRlbnQgPj0gdG9rLT5pbmRlbnQpCisgICAgeworICAgICAgICB0b2stPmFzeW5jX2RlZiA9IDA7CisgICAgICAgIHRvay0+YXN5bmNfZGVmX2luZGVudCA9IDA7CisgICAgICAgIHRvay0+YXN5bmNfZGVmX25sID0gMDsKKyAgICB9CisKICBhZ2FpbjoKICAgICB0b2stPnN0YXJ0ID0gTlVMTDsKICAgICAvKiBTa2lwIHNwYWNlcyAqLwpAQCAtMTQ3NSw2ICsxNTA0LDQyIEBACiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKKworICAgICAgICAvKiBhc3luYy9hd2FpdCBwYXJzaW5nIGJsb2NrLiAqLworICAgICAgICBpZiAodG9rLT5jdXIgLSB0b2stPnN0YXJ0ID09IDUpIHsKKyAgICAgICAgICAgIC8qIEN1cnJlbnQgdG9rZW4gbGVuZ3RoIGlzIDUuICovCisgICAgICAgICAgICBpZiAodG9rLT5hc3luY19kZWYpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSdyZSBpbnNpZGUgYW4gJ2FzeW5jIGRlZicgZnVuY3Rpb24uICovCisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVNZTkM7CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVdBSVQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCisgICAgICAgICAgICAgICAgICAgTG9vayBhaGVhZCBvbmUgdG9rZW4uKi8KKworICAgICAgICAgICAgICAgIHN0cnVjdCB0b2tfc3RhdGUgYWhlYWRfdG9rOworICAgICAgICAgICAgICAgIGNoYXIgKmFoZWFkX3Rva19zdGFydCA9IE5VTEwsICphaGVhZF90b2tfZW5kID0gTlVMTDsKKyAgICAgICAgICAgICAgICBpbnQgYWhlYWRfdG9rX2tpbmQ7CisKKyAgICAgICAgICAgICAgICBtZW1jcHkoJmFoZWFkX3RvaywgdG9rLCBzaXplb2YoYWhlYWRfdG9rKSk7CisgICAgICAgICAgICAgICAgYWhlYWRfdG9rX2tpbmQgPSB0b2tfZ2V0KCZhaGVhZF90b2ssICZhaGVhZF90b2tfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhaGVhZF90b2tfZW5kKTsKKworICAgICAgICAgICAgICAgIGlmIChhaGVhZF90b2tfa2luZCA9PSBOQU1FCisgICAgICAgICAgICAgICAgICAgICYmIGFoZWFkX3Rvay5jdXIgLSBhaGVhZF90b2suc3RhcnQgPT0gMworICAgICAgICAgICAgICAgICAgICAmJiBtZW1jbXAoYWhlYWRfdG9rLnN0YXJ0LCAiZGVmIiwgMykgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBuZXh0IHRva2VuIGlzIGdvaW5nIHRvIGJlICdkZWYnLCBzbyBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybmluZyAnYXN5bmMnIE5BTUUgdG9rZW4sIHdlIHJldHVybiBBU1lOQy4gKi8KKyAgICAgICAgICAgICAgICAgICAgdG9rLT5hc3luY19kZWZfaW5kZW50ID0gdG9rLT5pbmRlbnQ7CisgICAgICAgICAgICAgICAgICAgIHRvay0+YXN5bmNfZGVmID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBOQU1FOwogICAgIH0KIApAQCAtMTQ4Niw2ICsxNTUxLDExIEBACiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKKyAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CisgICAgICAgICAgICAvKiBXZSdyZSBzb21ld2hlcmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLCBhbmQKKyAgICAgICAgICAgICAgIHdlJ3ZlIGVuY291bnRlcmVkIGEgTkVXTElORSBhZnRlciBpdHMgc2lnbmF0dXJlLiAqLworICAgICAgICAgICAgdG9rLT5hc3luY19kZWZfbmwgPSAxOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBORVdMSU5FOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5oIGIvUGFyc2VyL3Rva2VuaXplci5oCmluZGV4IDFjZTZlZWIuLmFmMDUzZTIgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuaAorKysgYi9QYXJzZXIvdG9rZW5pemVyLmgKQEAgLTY1LDYgKzY1LDEzIEBACiAgICAgY29uc3QgY2hhciogZW5jOyAgICAgICAgLyogRW5jb2RpbmcgZm9yIHRoZSBjdXJyZW50IHN0ci4gKi8KICAgICBjb25zdCBjaGFyKiBzdHI7CiAgICAgY29uc3QgY2hhciogaW5wdXQ7IC8qIFRva2VuaXplcidzIG5ld2xpbmUgdHJhbnNsYXRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuICovCisKKyAgICAvKiBhc3luYy9hd2FpdCByZWxhdGVkIGZpZWxkczsgY2FuIGJlIHJlbW92ZWQgaW4gMy43IHdoZW4gYXN5bmMgYW5kIGF3YWl0CisgICAgICAgYmVjb21lIG5vcm1hbCBrZXl3b3Jkcy4gKi8KKyAgICBpbnQgYXN5bmNfZGVmOyAgICAgICAgLyogPTEgaWYgdG9rZW5zIGFyZSBpbnNpZGUgYW4gJ2FzeW5jIGRlZicgYm9keS4gKi8KKyAgICBpbnQgYXN5bmNfZGVmX2luZGVudDsgLyogSW5kZW50YXRpb24gbGV2ZWwgb2YgdGhlIG91dGVybW9zdCAnYXN5bmMgZGVmJy4gKi8KKyAgICBpbnQgYXN5bmNfZGVmX25sOyAgICAgLyogPTEgaWYgdGhlIG91dGVybW9zdCAnYXN5bmMgZGVmJyBoYWQgYXQgbGVhc3Qgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FV0xJTkUgdG9rZW4gYWZ0ZXIgaXQuICovCiB9OwogCiBleHRlcm4gc3RydWN0IHRva19zdGF0ZSAqUHlUb2tlbml6ZXJfRnJvbVN0cmluZyhjb25zdCBjaGFyICosIGludCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9SRUFETUUgYi9Qcm9ncmFtcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0NTc4YgotLS0gL2Rldi9udWxsCisrKyBiL1Byb2dyYW1zL1JFQURNRQpAQCAtMCwwICsxIEBACitTb3VyY2UgZmlsZXMgZm9yIGJpbmFyeSBleGVjdXRhYmxlcyAoYXMgb3Bwb3NlZCB0byBzaGFyZWQgbW9kdWxlcykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCnJlbmFtZSB0byBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCmluZGV4IDU3YjFhYzAuLmFlY2IxMjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC0xMiwxMiArMTIsMTEgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgogCi0KIC8qIFRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBvbiBmcm96ZW4ubywgd2UgY3JlYXRlIG91ciBvd24gc3RydWN0dXJlCiAgICBvZiBmcm96ZW4gbW9kdWxlcyBpbnN0ZWFkLCBsZWZ0IGRlbGliZXJhdGVseSBibGFuayBzbyBhcyB0byBhdm9pZAogICAgdW5pbnRlbnRpb25hbCBpbXBvcnQgb2YgYSBzdGFsZSB2ZXJzaW9uIG9mIF9mcm96ZW5faW1wb3J0bGliLiAqLwogCi1jb25zdCBzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0gewogICAgIHswLCAwLCAwfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjgsMTggKzI3LDE5IEBACiBjb25zdCBzdHJ1Y3QgX2Zyb3plbiAqUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKICNlbmRpZgogCi1jb25zdCBjaGFyIGhlYWRlcltdID0gIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLyI7Citjb25zdCBjaGFyIGhlYWRlcltdID0gIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8iOwogCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKLSAgICBjaGFyICppbnBhdGgsICpvdXRwYXRoOworICAgIGNoYXIgKmlucGF0aCwgKm91dHBhdGgsICpjb2RlX25hbWU7CiAgICAgRklMRSAqaW5maWxlID0gTlVMTCwgKm91dGZpbGUgPSBOVUxMOwotICAgIHN0cnVjdCBzdGF0IHN0OworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOwogICAgIHNpemVfdCB0ZXh0X3NpemUsIGRhdGFfc2l6ZSwgbjsKICAgICBjaGFyICp0ZXh0ID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyICpkYXRhOwogICAgIFB5T2JqZWN0ICpjb2RlID0gTlVMTCwgKm1hcnNoYWxsZWQgPSBOVUxMOworICAgIGludCBpc19ib290c3RyYXAgPSAxOwogCiAgICAgUHlJbXBvcnRfRnJvemVuTW9kdWxlcyA9IF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOwogCkBAIC01NCwxMSArNTQsMTEgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nXG4iLCBpbnBhdGgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBpZiAoZnN0YXQoZmlsZW5vKGluZmlsZSksICZzdCkpIHsKKyAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UoZmlsZW5vKGluZmlsZSksICZzdGF0dXMpKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0LnN0X3NpemU7CisgICAgdGV4dF9zaXplID0gc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CkBAIC04Miw4ICs4MiwxNCBAQAogICAgIC8qIERvbid0IGluc3RhbGwgaW1wb3J0bGliLCBzaW5jZSBpdCBjb3VsZCBleGVjdXRlIG91dGRhdGVkIGJ5dGVjb2RlLiAqLwogICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZSgxLCAwKTsKIAotICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nRXhGbGFncyh0ZXh0LCAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9maWxlX2lucHV0LCBOVUxMLCAwKTsKKyAgICBpZiAoc3Ryc3RyKGlucGF0aCwgIl9leHRlcm5hbCIpICE9IE5VTEwpIHsKKyAgICAgICAgaXNfYm9vdHN0cmFwID0gMDsKKyAgICB9CisKKyAgICBjb2RlX25hbWUgPSBpc19ib290c3RyYXAgPworICAgICAgICAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iIDoKKyAgICAgICAgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWw+IjsKKyAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZ0V4RmxhZ3ModGV4dCwgY29kZV9uYW1lLCBQeV9maWxlX2lucHV0LCBOVUxMLCAwKTsKICAgICBpZiAoY29kZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGZyZWUodGV4dCk7CkBAIC0xMDYsNyArMTEyLDExIEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGZwcmludGYob3V0ZmlsZSwgIiVzXG4iLCBoZWFkZXIpOwotICAgIGZwcmludGYob3V0ZmlsZSwgImNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0ge1xuIik7CisgICAgaWYgKGlzX2Jvb3RzdHJhcCkKKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBlbHNlCisgICAgICAgIGZwcmludGYob3V0ZmlsZSwKKyAgICAgICAgICAgICAgICAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7XG4iKTsKICAgICBmb3IgKG4gPSAwOyBuIDwgZGF0YV9zaXplOyBuICs9IDE2KSB7CiAgICAgICAgIHNpemVfdCBpLCBlbmQgPSBQeV9NSU4obiArIDE2LCBkYXRhX3NpemUpOwogICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0ZW1iZWQuYyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBNb2R1bGVzL190ZXN0ZW1iZWQuYwpyZW5hbWUgdG8gUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCmluZGV4IGEyMWQyNTEuLjM5ZmYwOTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtMTA5LDExICsxMDksMTEgQEAKICAgICBwcmludGYoIi0tLSBVc2UgZGVmYXVsdHMgLS0tXG4iKTsKICAgICBjaGVja19zdGRpb19kZXRhaWxzKE5VTEwsIE5VTEwpOwogICAgIHByaW50ZigiLS0tIFNldCBlcnJvcnMgb25seSAtLS1cbiIpOwotICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoTlVMTCwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoTlVMTCwgImlnbm9yZSIpOwogICAgIHByaW50ZigiLS0tIFNldCBlbmNvZGluZyBvbmx5IC0tLVxuIik7CiAgICAgY2hlY2tfc3RkaW9fZGV0YWlscygibGF0aW4tMSIsIE5VTEwpOwogICAgIHByaW50ZigiLS0tIFNldCBlbmNvZGluZyBhbmQgZXJyb3JzIC0tLVxuIik7Ci0gICAgY2hlY2tfc3RkaW9fZGV0YWlscygibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICBjaGVja19zdGRpb19kZXRhaWxzKCJsYXRpbi0xIiwgInJlcGxhY2UiKTsKIAogICAgIC8qIENoZWNrIGNhbGxpbmcgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gZmFpbHMgKi8KICAgICBQeV9Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B5dGhvbi5jIGIvUHJvZ3JhbXMvcHl0aG9uLmMKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTW9kdWxlcy9weXRob24uYwpyZW5hbWUgdG8gUHJvZ3JhbXMvcHl0aG9uLmMKaW5kZXggOTgxMWMwMS4uMmU1ZTRlMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weXRob24uYworKysgYi9Qcm9ncmFtcy9weXRob24uYwpAQCAtNTIsNyArNTIsNyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpOwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgYXJndl9jb3B5W2ldID0gX1B5X2NoYXIyd2NoYXIoYXJndltpXSwgTlVMTCk7CisgICAgICAgIGFyZ3ZfY29weVtpXSA9IFB5X0RlY29kZUxvY2FsZShhcmd2W2ldLCBOVUxMKTsKICAgICAgICAgaWYgKCFhcmd2X2NvcHlbaV0pIHsKICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUob2xkbG9jKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiCmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCA0NGZkYWZjLi44YTJkYzdjIDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTQ1LDE3ICs0NSwyMSBAQAogICAgICJkZWNvcmF0b3JfbGlzdCIsCiAgICAgInJldHVybnMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFzeW5jRnVuY3Rpb25EZWZfdHlwZTsKK3N0YXRpYyBjaGFyICpBc3luY0Z1bmN0aW9uRGVmX2ZpZWxkc1tdPXsKKyAgICAibmFtZSIsCisgICAgImFyZ3MiLAorICAgICJib2R5IiwKKyAgICAiZGVjb3JhdG9yX2xpc3QiLAorICAgICJyZXR1cm5zIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDbGFzc0RlZl90eXBlOwogX1B5X0lERU5USUZJRVIoYmFzZXMpOwogX1B5X0lERU5USUZJRVIoa2V5d29yZHMpOwotX1B5X0lERU5USUZJRVIoc3RhcmFyZ3MpOwotX1B5X0lERU5USUZJRVIoa3dhcmdzKTsKIHN0YXRpYyBjaGFyICpDbGFzc0RlZl9maWVsZHNbXT17CiAgICAgIm5hbWUiLAogICAgICJiYXNlcyIsCiAgICAgImtleXdvcmRzIiwKLSAgICAic3RhcmFyZ3MiLAotICAgICJrd2FyZ3MiLAogICAgICJib2R5IiwKICAgICAiZGVjb3JhdG9yX2xpc3QiLAogfTsKQEAgLTkxLDYgKzk1LDEzIEBACiAgICAgImJvZHkiLAogICAgICJvcmVsc2UiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFzeW5jRm9yX3R5cGU7CitzdGF0aWMgY2hhciAqQXN5bmNGb3JfZmllbGRzW109eworICAgICJ0YXJnZXQiLAorICAgICJpdGVyIiwKKyAgICAiYm9keSIsCisgICAgIm9yZWxzZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqV2hpbGVfdHlwZTsKIF9QeV9JREVOVElGSUVSKHRlc3QpOwogc3RhdGljIGNoYXIgKldoaWxlX2ZpZWxkc1tdPXsKQEAgLTExMCw2ICsxMjEsMTEgQEAKICAgICAiaXRlbXMiLAogICAgICJib2R5IiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBc3luY1dpdGhfdHlwZTsKK3N0YXRpYyBjaGFyICpBc3luY1dpdGhfZmllbGRzW109eworICAgICJpdGVtcyIsCisgICAgImJvZHkiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlJhaXNlX3R5cGU7CiBfUHlfSURFTlRJRklFUihleGMpOwogX1B5X0lERU5USUZJRVIoY2F1c2UpOwpAQCAtMjMyLDYgKzI0OCwxMCBAQAogICAgICJlbHQiLAogICAgICJnZW5lcmF0b3JzIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBd2FpdF90eXBlOworc3RhdGljIGNoYXIgKkF3YWl0X2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKllpZWxkX3R5cGU7CiBzdGF0aWMgY2hhciAqWWllbGRfZmllbGRzW109ewogICAgICJ2YWx1ZSIsCkBAIC0yNTQsOCArMjc0LDYgQEAKICAgICAiZnVuYyIsCiAgICAgImFyZ3MiLAogICAgICJrZXl3b3JkcyIsCi0gICAgInN0YXJhcmdzIiwKLSAgICAia3dhcmdzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOdW1fdHlwZTsKIF9QeV9JREVOVElGSUVSKG4pOwpAQCAtMzQ5LDEzICszNjcsMTQgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk9yX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpvcGVyYXRvcl90eXBlOwogc3RhdGljIFB5T2JqZWN0ICpBZGRfc2luZ2xldG9uLCAqU3ViX3NpbmdsZXRvbiwgKk11bHRfc2luZ2xldG9uLAotKkRpdl9zaW5nbGV0b24sICpNb2Rfc2luZ2xldG9uLCAqUG93X3NpbmdsZXRvbiwgKkxTaGlmdF9zaW5nbGV0b24sCi0qUlNoaWZ0X3NpbmdsZXRvbiwgKkJpdE9yX3NpbmdsZXRvbiwgKkJpdFhvcl9zaW5nbGV0b24sICpCaXRBbmRfc2luZ2xldG9uLAotKkZsb29yRGl2X3NpbmdsZXRvbjsKKypNYXRNdWx0X3NpbmdsZXRvbiwgKkRpdl9zaW5nbGV0b24sICpNb2Rfc2luZ2xldG9uLCAqUG93X3NpbmdsZXRvbiwKKypMU2hpZnRfc2luZ2xldG9uLCAqUlNoaWZ0X3NpbmdsZXRvbiwgKkJpdE9yX3NpbmdsZXRvbiwgKkJpdFhvcl9zaW5nbGV0b24sCisqQml0QW5kX3NpbmdsZXRvbiwgKkZsb29yRGl2X3NpbmdsZXRvbjsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9vcGVyYXRvcihvcGVyYXRvcl90eSk7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBZGRfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlN1Yl90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqTXVsdF90eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCAqTWF0TXVsdF90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqRGl2X3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpNb2RfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlBvd190eXBlOwpAQCAtODExLDcgKzgzMCwxMCBAQAogICAgIEZ1bmN0aW9uRGVmX3R5cGUgPSBtYWtlX3R5cGUoIkZ1bmN0aW9uRGVmIiwgc3RtdF90eXBlLCBGdW5jdGlvbkRlZl9maWVsZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1KTsKICAgICBpZiAoIUZ1bmN0aW9uRGVmX3R5cGUpIHJldHVybiAwOwotICAgIENsYXNzRGVmX3R5cGUgPSBtYWtlX3R5cGUoIkNsYXNzRGVmIiwgc3RtdF90eXBlLCBDbGFzc0RlZl9maWVsZHMsIDcpOworICAgIEFzeW5jRnVuY3Rpb25EZWZfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNGdW5jdGlvbkRlZiIsIHN0bXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN5bmNGdW5jdGlvbkRlZl9maWVsZHMsIDUpOworICAgIGlmICghQXN5bmNGdW5jdGlvbkRlZl90eXBlKSByZXR1cm4gMDsKKyAgICBDbGFzc0RlZl90eXBlID0gbWFrZV90eXBlKCJDbGFzc0RlZiIsIHN0bXRfdHlwZSwgQ2xhc3NEZWZfZmllbGRzLCA1KTsKICAgICBpZiAoIUNsYXNzRGVmX3R5cGUpIHJldHVybiAwOwogICAgIFJldHVybl90eXBlID0gbWFrZV90eXBlKCJSZXR1cm4iLCBzdG10X3R5cGUsIFJldHVybl9maWVsZHMsIDEpOwogICAgIGlmICghUmV0dXJuX3R5cGUpIHJldHVybiAwOwpAQCAtODIzLDEyICs4NDUsMTYgQEAKICAgICBpZiAoIUF1Z0Fzc2lnbl90eXBlKSByZXR1cm4gMDsKICAgICBGb3JfdHlwZSA9IG1ha2VfdHlwZSgiRm9yIiwgc3RtdF90eXBlLCBGb3JfZmllbGRzLCA0KTsKICAgICBpZiAoIUZvcl90eXBlKSByZXR1cm4gMDsKKyAgICBBc3luY0Zvcl90eXBlID0gbWFrZV90eXBlKCJBc3luY0ZvciIsIHN0bXRfdHlwZSwgQXN5bmNGb3JfZmllbGRzLCA0KTsKKyAgICBpZiAoIUFzeW5jRm9yX3R5cGUpIHJldHVybiAwOwogICAgIFdoaWxlX3R5cGUgPSBtYWtlX3R5cGUoIldoaWxlIiwgc3RtdF90eXBlLCBXaGlsZV9maWVsZHMsIDMpOwogICAgIGlmICghV2hpbGVfdHlwZSkgcmV0dXJuIDA7CiAgICAgSWZfdHlwZSA9IG1ha2VfdHlwZSgiSWYiLCBzdG10X3R5cGUsIElmX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFJZl90eXBlKSByZXR1cm4gMDsKICAgICBXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIldpdGgiLCBzdG10X3R5cGUsIFdpdGhfZmllbGRzLCAyKTsKICAgICBpZiAoIVdpdGhfdHlwZSkgcmV0dXJuIDA7CisgICAgQXN5bmNXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jV2l0aCIsIHN0bXRfdHlwZSwgQXN5bmNXaXRoX2ZpZWxkcywgMik7CisgICAgaWYgKCFBc3luY1dpdGhfdHlwZSkgcmV0dXJuIDA7CiAgICAgUmFpc2VfdHlwZSA9IG1ha2VfdHlwZSgiUmFpc2UiLCBzdG10X3R5cGUsIFJhaXNlX2ZpZWxkcywgMik7CiAgICAgaWYgKCFSYWlzZV90eXBlKSByZXR1cm4gMDsKICAgICBUcnlfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5Iiwgc3RtdF90eXBlLCBUcnlfZmllbGRzLCA0KTsKQEAgLTg3NywxMyArOTAzLDE1IEBACiAgICAgR2VuZXJhdG9yRXhwX3R5cGUgPSBtYWtlX3R5cGUoIkdlbmVyYXRvckV4cCIsIGV4cHJfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0b3JFeHBfZmllbGRzLCAyKTsKICAgICBpZiAoIUdlbmVyYXRvckV4cF90eXBlKSByZXR1cm4gMDsKKyAgICBBd2FpdF90eXBlID0gbWFrZV90eXBlKCJBd2FpdCIsIGV4cHJfdHlwZSwgQXdhaXRfZmllbGRzLCAxKTsKKyAgICBpZiAoIUF3YWl0X3R5cGUpIHJldHVybiAwOwogICAgIFlpZWxkX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkIiwgZXhwcl90eXBlLCBZaWVsZF9maWVsZHMsIDEpOwogICAgIGlmICghWWllbGRfdHlwZSkgcmV0dXJuIDA7CiAgICAgWWllbGRGcm9tX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkRnJvbSIsIGV4cHJfdHlwZSwgWWllbGRGcm9tX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFZaWVsZEZyb21fdHlwZSkgcmV0dXJuIDA7CiAgICAgQ29tcGFyZV90eXBlID0gbWFrZV90eXBlKCJDb21wYXJlIiwgZXhwcl90eXBlLCBDb21wYXJlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFDb21wYXJlX3R5cGUpIHJldHVybiAwOwotICAgIENhbGxfdHlwZSA9IG1ha2VfdHlwZSgiQ2FsbCIsIGV4cHJfdHlwZSwgQ2FsbF9maWVsZHMsIDUpOworICAgIENhbGxfdHlwZSA9IG1ha2VfdHlwZSgiQ2FsbCIsIGV4cHJfdHlwZSwgQ2FsbF9maWVsZHMsIDMpOwogICAgIGlmICghQ2FsbF90eXBlKSByZXR1cm4gMDsKICAgICBOdW1fdHlwZSA9IG1ha2VfdHlwZSgiTnVtIiwgZXhwcl90eXBlLCBOdW1fZmllbGRzLCAxKTsKICAgICBpZiAoIU51bV90eXBlKSByZXR1cm4gMDsKQEAgLTk3MCw2ICs5OTgsMTAgQEAKICAgICBpZiAoIU11bHRfdHlwZSkgcmV0dXJuIDA7CiAgICAgTXVsdF9zaW5nbGV0b24gPSBQeVR5cGVfR2VuZXJpY05ldyhNdWx0X3R5cGUsIE5VTEwsIE5VTEwpOwogICAgIGlmICghTXVsdF9zaW5nbGV0b24pIHJldHVybiAwOworICAgIE1hdE11bHRfdHlwZSA9IG1ha2VfdHlwZSgiTWF0TXVsdCIsIG9wZXJhdG9yX3R5cGUsIE5VTEwsIDApOworICAgIGlmICghTWF0TXVsdF90eXBlKSByZXR1cm4gMDsKKyAgICBNYXRNdWx0X3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE1hdE11bHRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKCFNYXRNdWx0X3NpbmdsZXRvbikgcmV0dXJuIDA7CiAgICAgRGl2X3R5cGUgPSBtYWtlX3R5cGUoIkRpdiIsIG9wZXJhdG9yX3R5cGUsIE5VTEwsIDApOwogICAgIGlmICghRGl2X3R5cGUpIHJldHVybiAwOwogICAgIERpdl9zaW5nbGV0b24gPSBQeVR5cGVfR2VuZXJpY05ldyhEaXZfdHlwZSwgTlVMTCwgTlVMTCk7CkBAIC0xMjAyLDkgKzEyMzQsMzkgQEAKIH0KIAogc3RtdF90eQotQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqIGJhc2VzLCBhc2RsX3NlcSAqIGtleXdvcmRzLCBleHByX3R5Ci0gICAgICAgICBzdGFyYXJncywgZXhwcl90eSBrd2FyZ3MsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwKLSAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK0FzeW5jRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHNfdHkgYXJncywgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcQorICAgICAgICAgICAgICAgICAqIGRlY29yYXRvcl9saXN0LCBleHByX3R5IHJldHVybnMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBzdG10X3R5IHA7CisgICAgaWYgKCFuYW1lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIG5hbWUgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghYXJncykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBhcmdzIGlzIHJlcXVpcmVkIGZvciBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEFzeW5jRnVuY3Rpb25EZWZfa2luZDsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZSA9IG5hbWU7CisgICAgcC0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MgPSBhcmdzOworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5ID0gYm9keTsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QgPSBkZWNvcmF0b3JfbGlzdDsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucyA9IHJldHVybnM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CitDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICogYmFzZXMsIGFzZGxfc2VxICoga2V5d29yZHMsIGFzZGxfc2VxICoKKyAgICAgICAgIGJvZHksIGFzZGxfc2VxICogZGVjb3JhdG9yX2xpc3QsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAqYXJlbmEpCiB7CiAgICAgc3RtdF90eSBwOwogICAgIGlmICghbmFtZSkgewpAQCAtMTIxOSw4ICsxMjgxLDYgQEAKICAgICBwLT52LkNsYXNzRGVmLm5hbWUgPSBuYW1lOwogICAgIHAtPnYuQ2xhc3NEZWYuYmFzZXMgPSBiYXNlczsKICAgICBwLT52LkNsYXNzRGVmLmtleXdvcmRzID0ga2V5d29yZHM7Ci0gICAgcC0+di5DbGFzc0RlZi5zdGFyYXJncyA9IHN0YXJhcmdzOwotICAgIHAtPnYuQ2xhc3NEZWYua3dhcmdzID0ga3dhcmdzOwogICAgIHAtPnYuQ2xhc3NEZWYuYm9keSA9IGJvZHk7CiAgICAgcC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCA9IGRlY29yYXRvcl9saXN0OwogICAgIHAtPmxpbmVubyA9IGxpbmVubzsKQEAgLTEzMzgsNiArMTM5OCwzNCBAQAogfQogCiBzdG10X3R5CitBc3luY0ZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQKKyAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB0YXJnZXQgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIWl0ZXIpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgaXRlciBpcyByZXF1aXJlZCBmb3IgQXN5bmNGb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXN5bmNGb3Jfa2luZDsKKyAgICBwLT52LkFzeW5jRm9yLnRhcmdldCA9IHRhcmdldDsKKyAgICBwLT52LkFzeW5jRm9yLml0ZXIgPSBpdGVyOworICAgIHAtPnYuQXN5bmNGb3IuYm9keSA9IGJvZHk7CisgICAgcC0+di5Bc3luY0Zvci5vcmVsc2UgPSBvcmVsc2U7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CiBXaGlsZShleHByX3R5IHRlc3QsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sIGludAogICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0xMzk4LDYgKzE0ODYsMjIgQEAKIH0KIAogc3RtdF90eQorQXN5bmNXaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCisgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXN5bmNXaXRoX2tpbmQ7CisgICAgcC0+di5Bc3luY1dpdGguaXRlbXMgPSBpdGVtczsKKyAgICBwLT52LkFzeW5jV2l0aC5ib2R5ID0gYm9keTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIFJhaXNlKGV4cHJfdHkgZXhjLCBleHByX3R5IGNhdXNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgc3RtdF90eSBwOwpAQCAtMTgyNSw2ICsxOTI5LDI1IEBACiB9CiAKIGV4cHJfdHkKK0F3YWl0KGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgQXdhaXQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXdhaXRfa2luZDsKKyAgICBwLT52LkF3YWl0LnZhbHVlID0gdmFsdWU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBZaWVsZChleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgZXhwcl90eSBwOwpAQCAtMTg4MCw4ICsyMDAzLDggQEAKIH0KIAogZXhwcl90eQotQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgZXhwcl90eSBzdGFyYXJncywKLSAgICAgZXhwcl90eSBrd2FyZ3MsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK0NhbGwoZXhwcl90eSBmdW5jLCBhc2RsX3NlcSAqIGFyZ3MsIGFzZGxfc2VxICoga2V5d29yZHMsIGludCBsaW5lbm8sIGludAorICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CiAgICAgaWYgKCFmdW5jKSB7CkBAIC0xODk2LDggKzIwMTksNiBAQAogICAgIHAtPnYuQ2FsbC5mdW5jID0gZnVuYzsKICAgICBwLT52LkNhbGwuYXJncyA9IGFyZ3M7CiAgICAgcC0+di5DYWxsLmtleXdvcmRzID0ga2V5d29yZHM7Ci0gICAgcC0+di5DYWxsLnN0YXJhcmdzID0gc3RhcmFyZ3M7Ci0gICAgcC0+di5DYWxsLmt3YXJncyA9IGt3YXJnczsKICAgICBwLT5saW5lbm8gPSBsaW5lbm87CiAgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CiAgICAgcmV0dXJuIHA7CkBAIC0yMjcxLDExICsyMzkyLDYgQEAKIGtleXdvcmQoaWRlbnRpZmllciBhcmcsIGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGtleXdvcmRfdHkgcDsKLSAgICBpZiAoIWFyZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBhcmcgaXMgcmVxdWlyZWQgZm9yIGtleXdvcmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIGtleXdvcmQiKTsKQEAgLTI0MTksNiArMjUzNSwzNiBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXN5bmNGdW5jdGlvbkRlZl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBc3luY0Z1bmN0aW9uRGVmX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPnYuQXN5bmNGdW5jdGlvbkRlZi5uYW1lKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9hcmd1bWVudHMoby0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY0Z1bmN0aW9uRGVmLmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhwcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlY29yYXRvcl9saXN0LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3luY0Z1bmN0aW9uRGVmLnJldHVybnMpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9yZXR1cm5zLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDbGFzc0RlZl9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhDbGFzc0RlZl90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMjQzNywxNiArMjU4Myw2IEBACiAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5d29yZHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNsYXNzRGVmLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RhcmFyZ3MsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNsYXNzRGVmLmt3YXJncyk7Ci0gICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJncywgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CiAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQpAQCAtMjUzMyw2ICsyNjY5LDMwIEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Zvcl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBc3luY0Zvcl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzeW5jRm9yLnRhcmdldCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXN5bmNGb3IuaXRlcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZXIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jRm9yLmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jRm9yLm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGlsZV9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhXaGlsZV90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMjU4NSw2ICsyNzQ1LDIwIEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXN5bmNXaXRoX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNXaXRoLml0ZW1zLCBhc3Qyb2JqX3dpdGhpdGVtKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlbXMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jV2l0aC5ib2R5LCBhc3Qyb2JqX3N0bXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSYWlzZV9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhSYWlzZV90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMjg5OCw2ICszMDcyLDE1IEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBd2FpdF9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBd2FpdF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF3YWl0LnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFlpZWxkX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFlpZWxkX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yOTU5LDE2ICszMTQyLDYgQEAKICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5zdGFyYXJncyk7Ci0gICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0YXJhcmdzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLmt3YXJncyk7Ci0gICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJncywgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KE51bV90eXBlLCBOVUxMLCBOVUxMKTsKQEAgLTMyMzIsNiArMzQwNSw5IEBACiAgICAgICAgIGNhc2UgTXVsdDoKICAgICAgICAgICAgIFB5X0lOQ1JFRihNdWx0X3NpbmdsZXRvbik7CiAgICAgICAgICAgICByZXR1cm4gTXVsdF9zaW5nbGV0b247CisgICAgICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgICAgIFB5X0lOQ1JFRihNYXRNdWx0X3NpbmdsZXRvbik7CisgICAgICAgICAgICByZXR1cm4gTWF0TXVsdF9zaW5nbGV0b247CiAgICAgICAgIGNhc2UgRGl2OgogICAgICAgICAgICAgUHlfSU5DUkVGKERpdl9zaW5nbGV0b24pOwogICAgICAgICAgICAgcmV0dXJuIERpdl9zaW5nbGV0b247CkBAIC0zODU5LDYgKzQwMzUsMTAyIEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFzeW5jRnVuY3Rpb25EZWZfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKKyAgICAgICAgYXJndW1lbnRzX3R5IGFyZ3M7CisgICAgICAgIGFzZGxfc2VxKiBib2R5OworICAgICAgICBhc2RsX3NlcSogZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIGV4cHJfdHkgcmV0dXJuczsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVcIiBtaXNzaW5nIGZyb20gQXN5bmNGdW5jdGlvbkRlZiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2FyZ3VtZW50cyh0bXAsICZhcmdzLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gQXN5bmNGdW5jdGlvbkRlZiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNGdW5jdGlvbkRlZiBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgYm9keSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jRnVuY3Rpb25EZWYgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBkZWNvcmF0b3JfbGlzdCA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoZGVjb3JhdG9yX2xpc3QgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZGVjb3JhdG9yX2xpc3QsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfcmV0dXJucykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcmV0dXJucyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnJldHVybnMsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJucyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFzeW5jRnVuY3Rpb25EZWYobmFtZSwgYXJncywgYm9keSwgZGVjb3JhdG9yX2xpc3QsIHJldHVybnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilDbGFzc0RlZl90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTM4NjcsOCArNDEzOSw2IEBACiAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKICAgICAgICAgYXNkbF9zZXEqIGJhc2VzOwogICAgICAgICBhc2RsX3NlcSoga2V5d29yZHM7Ci0gICAgICAgIGV4cHJfdHkgc3RhcmFyZ3M7Ci0gICAgICAgIGV4cHJfdHkga3dhcmdzOwogICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgYXNkbF9zZXEqIGRlY29yYXRvcl9saXN0OwogCkBAIC0zOTMxLDI2ICs0MjAxLDYgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXdvcmRzXCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7Ci0gICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKTsKLSAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RhcmFyZ3MsIGFyZW5hKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICBQeV9DTEVBUih0bXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RhcmFyZ3MgPSBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9rd2FyZ3MpKSB7Ci0gICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJncyk7Ci0gICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmt3YXJncywgYXJlbmEpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBrd2FyZ3MgPSBOVUxMOwotICAgICAgICB9CiAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTM5OTksOCArNDI0OSw4IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgKm91dCA9IENsYXNzRGVmKG5hbWUsIGJhc2VzLCBrZXl3b3Jkcywgc3RhcmFyZ3MsIGt3YXJncywgYm9keSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlY29yYXRvcl9saXN0LCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgKm91dCA9IENsYXNzRGVmKG5hbWUsIGJhc2VzLCBrZXl3b3JkcywgYm9keSwgZGVjb3JhdG9yX2xpc3QsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQyMzcsNiArNDQ4Nyw5MCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBc3luY0Zvcl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgIGV4cHJfdHkgaXRlcjsKKyAgICAgICAgYXNkbF9zZXEqIGJvZHk7CisgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRhcmdldCwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gQXN5bmNGb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlcikpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlcik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJml0ZXIsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlclwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNGb3IgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIGJvZHkgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gQXN5bmNGb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY0ZvciBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBvcmVsc2UgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKG9yZWxzZSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChvcmVsc2UsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcmVsc2VcIiBtaXNzaW5nIGZyb20gQXN5bmNGb3IiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBc3luY0Zvcih0YXJnZXQsIGl0ZXIsIGJvZHksIG9yZWxzZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVdoaWxlX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNDQ0MSw2ICs0Nzc1LDY2IEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFzeW5jV2l0aF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgYXNkbF9zZXEqIGl0ZW1zOworICAgICAgICBhc2RsX3NlcSogYm9keTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZW1zKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2l0ZW1zKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jV2l0aCBmaWVsZCBcIml0ZW1zXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIGl0ZW1zID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHdpdGhpdGVtX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfd2l0aGl0ZW0oUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGl0ZW1zLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlbXNcIiBtaXNzaW5nIGZyb20gQXN5bmNXaXRoIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY1dpdGggZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIGJvZHkgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gQXN5bmNXaXRoIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQXN5bmNXaXRoKGl0ZW1zLCBib2R5LCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopUmFpc2VfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC01Mzc1LDYgKzU3NjksMjggQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXdhaXRfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBBd2FpdCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEF3YWl0KHZhbHVlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopWWllbGRfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC01NDk4LDggKzU5MTQsNiBAQAogICAgICAgICBleHByX3R5IGZ1bmM7CiAgICAgICAgIGFzZGxfc2VxKiBhcmdzOwogICAgICAgICBhc2RsX3NlcSoga2V5d29yZHM7Ci0gICAgICAgIGV4cHJfdHkgc3RhcmFyZ3M7Ci0gICAgICAgIGV4cHJfdHkga3dhcmdzOwogCiAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZnVuYykpIHsKICAgICAgICAgICAgIGludCByZXM7CkBAIC01NTYwLDI4ICs1OTc0LDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXdvcmRzXCIgbWlzc2luZyBmcm9tIENhbGwiKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKLSAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwotICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGFyYXJncywgYXJlbmEpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2t3YXJncykpIHsKLSAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKLSAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdzLCBhcmVuYSk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGt3YXJncyA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKm91dCA9IENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHN0YXJhcmdzLCBrd2FyZ3MsIGxpbmVubywgY29sX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgYXJlbmEpOworICAgICAgICAqb3V0ID0gQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC02MTc1LDYgKzY1NjgsMTQgQEAKICAgICAgICAgKm91dCA9IE11bHQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCAqKU1hdE11bHRfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgICpvdXQgPSBNYXRNdWx0OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QgKilEaXZfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02NzIxLDcgKzcxMjIsNyBAQAogICAgIGlkZW50aWZpZXIgYXJnOwogICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZykpIHsKKyAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfYXJnKSkgewogICAgICAgICBpbnQgcmVzOwogICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJnKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKQEAgLTY3MjksOCArNzEzMCw3IEBACiAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0NMRUFSKHRtcCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnXCIgbWlzc2luZyBmcm9tIGtleXdvcmQiKTsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGFyZyA9IE5VTEw7CiAgICAgfQogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgIGludCByZXM7CkBAIC02ODQ3LDYgKzcyNDcsOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAic3RtdCIsIChQeU9iamVjdCopc3RtdF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRnVuY3Rpb25EZWYiLCAoUHlPYmplY3QqKUZ1bmN0aW9uRGVmX3R5cGUpIDwKICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBc3luY0Z1bmN0aW9uRGVmIiwKKyAgICAgICAgKFB5T2JqZWN0KilBc3luY0Z1bmN0aW9uRGVmX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDbGFzc0RlZiIsIChQeU9iamVjdCopQ2xhc3NEZWZfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlJldHVybiIsIChQeU9iamVjdCopUmV0dXJuX3R5cGUpIDwgMCkgcmV0dXJuCkBAIC02ODU4LDEwICs3MjYwLDE0IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBdWdBc3NpZ24iLCAoUHlPYmplY3QqKUF1Z0Fzc2lnbl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRm9yIiwgKFB5T2JqZWN0KilGb3JfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRm9yIiwgKFB5T2JqZWN0KilBc3luY0Zvcl90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiV2hpbGUiLCAoUHlPYmplY3QqKVdoaWxlX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJZiIsIChQeU9iamVjdCopSWZfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIldpdGgiLCAoUHlPYmplY3QqKVdpdGhfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jV2l0aCIsIChQeU9iamVjdCopQXN5bmNXaXRoX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJSYWlzZSIsIChQeU9iamVjdCopUmFpc2VfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRyeSIsIChQeU9iamVjdCopVHJ5X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CkBAIC02OTAyLDYgKzczMDgsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkdlbmVyYXRvckV4cCIsIChQeU9iamVjdCopR2VuZXJhdG9yRXhwX3R5cGUpIDwKICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBd2FpdCIsIChQeU9iamVjdCopQXdhaXRfdHlwZSkgPCAwKSByZXR1cm4KKyAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIllpZWxkIiwgKFB5T2JqZWN0KilZaWVsZF90eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGRGcm9tIiwgKFB5T2JqZWN0KilZaWVsZEZyb21fdHlwZSkgPCAwKQpAQCAtNjk1Niw2ICs3MzY0LDggQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFkZCIsIChQeU9iamVjdCopQWRkX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTdWIiLCAoUHlPYmplY3QqKVN1Yl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTXVsdCIsIChQeU9iamVjdCopTXVsdF90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTWF0TXVsdCIsIChQeU9iamVjdCopTWF0TXVsdF90eXBlKSA8IDApIHJldHVybgorICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRGl2IiwgKFB5T2JqZWN0KilEaXZfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1vZCIsIChQeU9iamVjdCopTW9kX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJQb3ciLCAoUHlPYmplY3QqKVBvd190eXBlKSA8IDApIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL1JFQURNRSBiL1B5dGhvbi9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzYjYyOAotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9SRUFETUUKQEAgLTAsMCArMSBAQAorTWlzY2VsbGFuZW91cyBzb3VyY2UgZmlsZXMgZm9yIHRoZSBtYWluIFB5dGhvbiBzaGFyZWQgbGlicmFyeQpkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IDZkZmYwYTIuLjljYTgzMTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTUxMyw2ICs1MTMsNjQgQEAKICAgICByZXR1cm4gcmVzdWx0OyAgLyogUHlfTm9uZSBvciBOVUxMLiAqLwogfQogCitzdGF0aWMgaW50Citpc19pbnRlcm5hbF9mcmFtZShQeUZyYW1lT2JqZWN0ICpmcmFtZSkKK3sKKyAgICBzdGF0aWMgUHlPYmplY3QgKmltcG9ydGxpYl9zdHJpbmcgPSBOVUxMOworICAgIHN0YXRpYyBQeU9iamVjdCAqYm9vdHN0cmFwX3N0cmluZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lOworICAgIGludCBjb250YWluczsKKworICAgIGlmIChpbXBvcnRsaWJfc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgaW1wb3J0bGliX3N0cmluZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJpbXBvcnRsaWIiKTsKKyAgICAgICAgaWYgKGltcG9ydGxpYl9zdHJpbmcgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBib290c3RyYXBfc3RyaW5nID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIl9ib290c3RyYXAiKTsKKyAgICAgICAgaWYgKGJvb3RzdHJhcF9zdHJpbmcgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGltcG9ydGxpYl9zdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKGltcG9ydGxpYl9zdHJpbmcpOworICAgICAgICBQeV9JTkNSRUYoYm9vdHN0cmFwX3N0cmluZyk7CisgICAgfQorCisgICAgaWYgKGZyYW1lID09IE5VTEwgfHwgZnJhbWUtPmZfY29kZSA9PSBOVUxMIHx8CisgICAgICAgICAgICBmcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmaWxlbmFtZSA9IGZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZpbGVuYW1lKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY29udGFpbnMgPSBQeVVuaWNvZGVfQ29udGFpbnMoZmlsZW5hbWUsIGltcG9ydGxpYl9zdHJpbmcpOworICAgIGlmIChjb250YWlucyA8IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKGNvbnRhaW5zID4gMCkgeworICAgICAgICBjb250YWlucyA9IFB5VW5pY29kZV9Db250YWlucyhmaWxlbmFtZSwgYm9vdHN0cmFwX3N0cmluZyk7CisgICAgICAgIGlmIChjb250YWlucyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5zID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5RnJhbWVPYmplY3QgKgorbmV4dF9leHRlcm5hbF9mcmFtZShQeUZyYW1lT2JqZWN0ICpmcmFtZSkKK3sKKyAgICBkbyB7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPmZfYmFjazsKKyAgICB9IHdoaWxlIChmcmFtZSAhPSBOVUxMICYmIGlzX2ludGVybmFsX2ZyYW1lKGZyYW1lKSk7CisKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKIC8qIGZpbGVuYW1lLCBtb2R1bGUsIGFuZCByZWdpc3RyeSBhcmUgbmV3IHJlZnMsIGdsb2JhbHMgaXMgYm9ycm93ZWQgKi8KIC8qIFJldHVybnMgMCBvbiBlcnJvciAobm8gbmV3IHJlZnMpLCAxIG9uIHN1Y2Nlc3MgKi8KIHN0YXRpYyBpbnQKQEAgLTUyMyw4ICs1ODEsMTggQEAKIAogICAgIC8qIFNldHVwIGdsb2JhbHMgYW5kIGxpbmVuby4gKi8KICAgICBQeUZyYW1lT2JqZWN0ICpmID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+ZnJhbWU7Ci0gICAgd2hpbGUgKC0tc3RhY2tfbGV2ZWwgPiAwICYmIGYgIT0gTlVMTCkKLSAgICAgICAgZiA9IGYtPmZfYmFjazsKKyAgICAvLyBTdGFjayBsZXZlbCBjb21wYXJpc29ucyB0byBQeXRob24gY29kZSBpcyBvZmYgYnkgb25lIGFzIHRoZXJlIGlzIG5vCisgICAgLy8gd2FybmluZ3MtcmVsYXRlZCBzdGFjayBsZXZlbCB0byBhdm9pZC4KKyAgICBpZiAoc3RhY2tfbGV2ZWwgPD0gMCB8fCBpc19pbnRlcm5hbF9mcmFtZShmKSkgeworICAgICAgICB3aGlsZSAoLS1zdGFja19sZXZlbCA+IDAgJiYgZiAhPSBOVUxMKSB7CisgICAgICAgICAgICBmID0gZi0+Zl9iYWNrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3aGlsZSAoLS1zdGFja19sZXZlbCA+IDAgJiYgZiAhPSBOVUxMKSB7CisgICAgICAgICAgICBmID0gbmV4dF9leHRlcm5hbF9mcmFtZShmKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmIChmID09IE5VTEwpIHsKICAgICAgICAgZ2xvYmFscyA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycC0+c3lzZGljdDsKQEAgLTU4MCwxMyArNjQ4LDEyIEBACiAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSgqZmlsZW5hbWUpOwogCiAjZGVmaW5lIGFzY2lpX2xvd2VyKGMpICgoYyA8PSAxMjcpID8gUHlfVE9MT1dFUihjKSA6IDApCi0gICAgICAgIC8qIGlmIGZpbGVuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCIucHljIiwgIi5weW8iKSk6ICovCisgICAgICAgIC8qIGlmIGZpbGVuYW1lLmxvd2VyKCkuZW5kc3dpdGgoIi5weWMiKTogKi8KICAgICAgICAgaWYgKGxlbiA+PSA0ICYmCiAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tNCkgPT0gJy4nICYmCiAgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMykpID09ICdwJyAmJgogICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTIpKSA9PSAneScgJiYKLSAgICAgICAgICAgIChhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdjJyB8fAotICAgICAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ28nKSkKKyAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ2MnKQogICAgICAgICB7CiAgICAgICAgICAgICAqZmlsZW5hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKCpmaWxlbmFtZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoKmZpbGVuYW1lKS0xKTsKQEAgLTY1NCwxNiArNzIxLDE3IEBACiAKICAgICBpZiAocmMgPT0gMSkKICAgICAgICAgY2F0ZWdvcnkgPSAoUHlPYmplY3QqKW1lc3NhZ2UtPm9iX3R5cGU7Ci0gICAgZWxzZSBpZiAoY2F0ZWdvcnkgPT0gTlVMTCkKKyAgICBlbHNlIGlmIChjYXRlZ29yeSA9PSBOVUxMIHx8IGNhdGVnb3J5ID09IFB5X05vbmUpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfVXNlcldhcm5pbmc7CiAKICAgICAvKiBWYWxpZGF0ZSBjYXRlZ29yeS4gKi8KICAgICByYyA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoY2F0ZWdvcnksIFB5RXhjX1dhcm5pbmcpOwotICAgIGlmIChyYyA9PSAtMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJjID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2F0ZWdvcnkgaXMgbm90IGEgc3ViY2xhc3Mgb2YgV2FybmluZyIpOworICAgIC8qIGNhdGVnb3J5IGlzIG5vdCBhIHN1YmNsYXNzIG9mIFB5RXhjX1dhcm5pbmcgb3IKKyAgICAgICBQeU9iamVjdF9Jc1N1YmNsYXNzIHJhaXNlZCBhbiBlcnJvciAqLworICAgIGlmIChyYyA9PSAtMSB8fCByYyA9PSAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoY2F0ZWdvcnkpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vYXNkbC5jIGIvUHl0aG9uL2FzZGwuYwppbmRleCA3NGZhOTQxLi5kZjM4N2IyIDEwMDY0NAotLS0gYS9QeXRob24vYXNkbC5jCisrKyBiL1B5dGhvbi9hc2RsLmMKQEAgLTUsMjEgKzUsMjEgQEAKIF9QeV9hc2RsX3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX3NlcSAqc2VxID0gTlVMTDsKLSAgICBzaXplX3QgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKKyAgICBzaXplX3QgbjsKIAogICAgIC8qIGNoZWNrIHNpemUgaXMgc2FuZSAqLwotICAgIGlmIChzaXplIDwgMCB8fCBzaXplID09IElOVF9NSU4gfHwKLSAgICAgICAgKHNpemUgJiYgKChzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgIGlmIChzaXplIDwgMCB8fAorICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KICAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KICAgICBuICs9IHNpemVvZihhc2RsX3NlcSk7CiAKICAgICBzZXEgPSAoYXNkbF9zZXEgKilQeUFyZW5hX01hbGxvYyhhcmVuYSwgbik7CkBAIC0zNiwyMSArMzYsMjEgQEAKIF9QeV9hc2RsX2ludF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgYXNkbF9pbnRfc2VxICpzZXEgPSBOVUxMOwotICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOworICAgIHNpemVfdCBuOwogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCi0gICAgaWYgKHNpemUgPCAwIHx8IHNpemUgPT0gSU5UX01JTiB8fAotICAgICAgICAoc2l6ZSAmJiAoKHNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgaWYgKHNpemUgPCAwIHx8CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwogCiAgICAgLyogY2hlY2sgaWYgc2l6ZSBjYW4gYmUgYWRkZWQgc2FmZWx5ICovCiAgICAgaWYgKG4gPiBQWV9TSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCiAgICAgbiArPSBzaXplb2YoYXNkbF9zZXEpOwogCiAgICAgc2VxID0gKGFzZGxfaW50X3NlcSAqKVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBuKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc3QuYyBiL1B5dGhvbi9hc3QuYwppbmRleCBkNTBjYjgwLi5kZDUxODdhIDEwMDY0NAotLS0gYS9QeXRob24vYXN0LmMKKysrIGIvUHl0aG9uL2FzdC5jCkBAIC0xMTUsNyArMTE1LDcgQEAKICAgICB9CiAgICAgaWYgKCF2YWxpZGF0ZV9hcmdzKGFyZ3MtPmt3b25seWFyZ3MpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYXJncy0+a3dhcmcgJiYgYXJncy0+a3dhcmctPmFubm90YXRpb24gCisgICAgaWYgKGFyZ3MtPmt3YXJnICYmIGFyZ3MtPmt3YXJnLT5hbm5vdGF0aW9uCiAgICAgICAgICYmICF2YWxpZGF0ZV9leHByKGFyZ3MtPmt3YXJnLT5hbm5vdGF0aW9uLCBMb2FkKSkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTY0LDYgKzE2NCw4IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBjaGVja19jdHggPSAwOworICAgICAgICAvKiBzZXQgYWN0dWFsX2N0eCB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCisgICAgICAgIGFjdHVhbF9jdHggPSAwOwogICAgIH0KICAgICBpZiAoY2hlY2tfY3R4ICYmIGFjdHVhbF9jdHggIT0gY3R4KSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiZXhwcmVzc2lvbiBtdXN0IGhhdmUgJXMgY29udGV4dCBidXQgaGFzICVzIGluc3RlYWQiLApAQCAtMTk3LDggKzE5OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Yga2V5cyBhcyB2YWx1ZXMiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC5rZXlzLCBMb2FkLCAwKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3QudmFsdWVzLCBMb2FkLCAwKTsKKyAgICAgICAgLyogbnVsbF9vaz0xIGZvciBrZXlzIGV4cHJlc3Npb25zIHRvIGFsbG93IGRpY3QgdW5wYWNraW5nIHRvIHdvcmsgaW4KKyAgICAgICAgICAgZGljdCBsaXRlcmFscywgaS5lLiBgYHsqKnthOmJ9fWBgICovCisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC5rZXlzLCBMb2FkLCAvKm51bGxfb2s9Ki8gMSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LnZhbHVlcywgTG9hZCwgLypudWxsX29rPSovIDApOwogICAgIGNhc2UgU2V0X2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuU2V0LmVsdHMsIExvYWQsIDApOwogI2RlZmluZSBDT01QKE5BTUUpIFwKQEAgLTIxNyw2ICsyMjEsOCBAQAogICAgICAgICByZXR1cm4gIWV4cC0+di5ZaWVsZC52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZC52YWx1ZSwgTG9hZCk7CiAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LllpZWxkRnJvbS52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBd2FpdF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQXdhaXQudmFsdWUsIExvYWQpOwogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBpZiAoIWFzZGxfc2VxX0xFTihleHAtPnYuQ29tcGFyZS5jb21wYXJhdG9ycykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcGFyZSB3aXRoIG5vIGNvbXBhcmF0b3JzIik7CkBAIC0yMzMsOSArMjM5LDcgQEAKICAgICBjYXNlIENhbGxfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuZnVuYywgTG9hZCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5DYWxsLmFyZ3MsIExvYWQsIDApICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhleHAtPnYuQ2FsbC5rZXl3b3JkcykgJiYKLSAgICAgICAgICAgICghZXhwLT52LkNhbGwuc3RhcmFyZ3MgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5zdGFyYXJncywgTG9hZCkpICYmCi0gICAgICAgICAgICAoIWV4cC0+di5DYWxsLmt3YXJncyB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmt3YXJncywgTG9hZCkpOworICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpOwogICAgIGNhc2UgTnVtX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKm4gPSBleHAtPnYuTnVtLm47CiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrRXhhY3QobikgJiYgIVB5RmxvYXRfQ2hlY2tFeGFjdChuKSAmJgpAQCAtMzIwLDkgKzMyNCw3IEBACiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuQ2xhc3NEZWYuYm9keSwgIkNsYXNzRGVmIikgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuYmFzZXMsIExvYWQsIDApICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhzdG10LT52LkNsYXNzRGVmLmtleXdvcmRzKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCkgJiYKLSAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5zdGFyYXJncyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MsIExvYWQpKSAmJgotICAgICAgICAgICAgKCFzdG10LT52LkNsYXNzRGVmLmt3YXJncyB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQ2xhc3NEZWYua3dhcmdzLCBMb2FkKSk7CisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0LCBMb2FkLCAwKTsKICAgICBjYXNlIFJldHVybl9raW5kOgogICAgICAgICByZXR1cm4gIXN0bXQtPnYuUmV0dXJuLnZhbHVlIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SZXR1cm4udmFsdWUsIExvYWQpOwogICAgIGNhc2UgRGVsZXRlX2tpbmQ6CkBAIC0zMzgsNiArMzQwLDExIEBACiAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuRm9yLmJvZHksICJGb3IiKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5Gb3Iub3JlbHNlKTsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXN5bmNGb3IudGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3luY0Zvci5pdGVyLCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LkFzeW5jRm9yLmJvZHksICJBc3luY0ZvciIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LkFzeW5jRm9yLm9yZWxzZSk7CiAgICAgY2FzZSBXaGlsZV9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LldoaWxlLnRlc3QsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuV2hpbGUuYm9keSwgIldoaWxlIikgJiYKQEAgLTM1Niw2ICszNjMsMTYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LldpdGguYm9keSwgIldpdGgiKTsKKyAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICBpZiAoIXZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LkFzeW5jV2l0aC5pdGVtcywgIml0ZW1zIiwgIkFzeW5jV2l0aCIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc3RtdC0+di5Bc3luY1dpdGguaXRlbXMpOyBpKyspIHsKKyAgICAgICAgICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQoc3RtdC0+di5Bc3luY1dpdGguaXRlbXMsIGkpOworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGl0ZW0tPmNvbnRleHRfZXhwciwgTG9hZCkgfHwKKyAgICAgICAgICAgICAgICAoaXRlbS0+b3B0aW9uYWxfdmFycyAmJiAhdmFsaWRhdGVfZXhwcihpdGVtLT5vcHRpb25hbF92YXJzLCBTdG9yZSkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuQXN5bmNXaXRoLmJvZHksICJBc3luY1dpdGgiKTsKICAgICBjYXNlIFJhaXNlX2tpbmQ6CiAgICAgICAgIGlmIChzdG10LT52LlJhaXNlLmV4YykgewogICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SYWlzZS5leGMsIExvYWQpICYmCkBAIC00MDcsNiArNDI0LDEyIEBACiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5Ob25sb2NhbC5uYW1lcywgIm5hbWVzIiwgIk5vbmxvY2FsIik7CiAgICAgY2FzZSBFeHByX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRXhwci52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5LCAiQXN5bmNGdW5jdGlvbkRlZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9hcmd1bWVudHMoc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zIHx8CisgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucywgTG9hZCkpOwogICAgIGNhc2UgUGFzc19raW5kOgogICAgIGNhc2UgQnJlYWtfa2luZDoKICAgICBjYXNlIENvbnRpbnVlX2tpbmQ6CkBAIC00NTEsNyArNDc0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBkaXNhbGxvd2VkIGluIGV4cHJlc3Npb24gbGlzdCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtNTA1LDYgKzUyOCw5IEBACiBzdGF0aWMgZXhwcl90eSBhc3RfZm9yX3Rlc3RsaXN0KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqKTsKIHN0YXRpYyBzdG10X3R5IGFzdF9mb3JfY2xhc3NkZWYoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICosIGFzZGxfc2VxICopOwogCitzdGF0aWMgc3RtdF90eSBhc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgaW50KTsKK3N0YXRpYyBzdG10X3R5IGFzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICosIGludCk7CisKIC8qIE5vdGUgZGlmZmVyZW50IHNpZ25hdHVyZSBmb3IgYXN0X2Zvcl9jYWxsICovCiBzdGF0aWMgZXhwcl90eSBhc3RfZm9yX2NhbGwoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICosIGV4cHJfdHkpOwogCkBAIC04MjUsNiArODUxLDggQEAKICAgICAgICAgICAgIHJldHVybiBTdWI7CiAgICAgICAgIGNhc2UgU1RBUjoKICAgICAgICAgICAgIHJldHVybiBNdWx0OworICAgICAgICBjYXNlIEFUOgorICAgICAgICAgICAgcmV0dXJuIE1hdE11bHQ7CiAgICAgICAgIGNhc2UgU0xBU0g6CiAgICAgICAgICAgICByZXR1cm4gRGl2OwogICAgICAgICBjYXNlIERPVUJMRVNMQVNIOgpAQCAtODQ0LDcgKzg3Miw4IEBACiB9OwogCiBzdGF0aWMgaW50Ci1mb3JiaWRkZW5fbmFtZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sIGludCBmdWxsX2NoZWNrcykKK2ZvcmJpZGRlbl9uYW1lKHN0cnVjdCBjb21waWxpbmcgKmMsIGlkZW50aWZpZXIgbmFtZSwgY29uc3Qgbm9kZSAqbiwKKyAgICAgICAgICAgICAgIGludCBmdWxsX2NoZWNrcykKIHsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG5hbWUpKTsKICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIl9fZGVidWdfXyIpID09IDApIHsKQEAgLTk0MCw2ICs5NjksOSBAQAogICAgICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gInlpZWxkIGV4cHJlc3Npb24iOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJhd2FpdCBleHByZXNzaW9uIjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpc3RDb21wX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGlzdCBjb21wcmVoZW5zaW9uIjsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAzMCw2ICsxMDYyLDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gUG93OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBNdWx0OworICAgICAgICBjYXNlICdAJzoKKyAgICAgICAgICAgIHJldHVybiBNYXRNdWx0OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiaW52YWxpZCBhdWdhc3NpZ246ICVzIiwgU1RSKG4pKTsKICAgICAgICAgICAgIHJldHVybiAob3BlcmF0b3JfdHkpMDsKQEAgLTE0MzksNyArMTQ3Myw3IEBACiAgICAgICAgIG5hbWVfZXhwciA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKE5DSChuKSA9PSA1KSB7IC8qIENhbGwgd2l0aCBubyBhcmd1bWVudHMgKi8KLSAgICAgICAgZCA9IENhbGwobmFtZV9leHByLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCisgICAgICAgIGQgPSBDYWxsKG5hbWVfZXhwciwgTlVMTCwgTlVMTCwgTElORU5PKG4pLAogICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0NzcsNyArMTUxMSw4IEBACiB9CiAKIHN0YXRpYyBzdG10X3R5Ci1hc3RfZm9yX2Z1bmNkZWYoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgYXNkbF9zZXEgKmRlY29yYXRvcl9zZXEpCithc3RfZm9yX2Z1bmNkZWZfaW1wbChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLAorICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmRlY29yYXRvcl9zZXEsIGludCBpc19hc3luYykKIHsKICAgICAvKiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlICovCiAgICAgaWRlbnRpZmllciBuYW1lOwpAQCAtMTUwNiwxNCArMTU0MSw2OCBAQAogICAgIGlmICghYm9keSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gRnVuY3Rpb25EZWYobmFtZSwgYXJncywgYm9keSwgZGVjb3JhdG9yX3NlcSwgcmV0dXJucywgTElORU5PKG4pLAotICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIGlmIChpc19hc3luYykKKyAgICAgICAgcmV0dXJuIEFzeW5jRnVuY3Rpb25EZWYobmFtZSwgYXJncywgYm9keSwgZGVjb3JhdG9yX3NlcSwgcmV0dXJucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uRGVmKG5hbWUsIGFyZ3MsIGJvZHksIGRlY29yYXRvcl9zZXEsIHJldHVybnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQorCitzdGF0aWMgc3RtdF90eQorYXN0X2Zvcl9hc3luY19mdW5jZGVmKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGFzZGxfc2VxICpkZWNvcmF0b3Jfc2VxKQoreworICAgIC8qIGFzeW5jX2Z1bmNkZWY6IEFTWU5DIGZ1bmNkZWYgKi8KKyAgICBSRVEobiwgYXN5bmNfZnVuY2RlZik7CisgICAgUkVRKENISUxEKG4sIDApLCBBU1lOQyk7CisgICAgUkVRKENISUxEKG4sIDEpLCBmdW5jZGVmKTsKKworICAgIHJldHVybiBhc3RfZm9yX2Z1bmNkZWZfaW1wbChjLCBDSElMRChuLCAxKSwgZGVjb3JhdG9yX3NlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvKiBpc19hc3luYyAqLyk7Cit9CisKK3N0YXRpYyBzdG10X3R5Cithc3RfZm9yX2Z1bmNkZWYoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgYXNkbF9zZXEgKmRlY29yYXRvcl9zZXEpCit7CisgICAgLyogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZSAqLworICAgIHJldHVybiBhc3RfZm9yX2Z1bmNkZWZfaW1wbChjLCBuLCBkZWNvcmF0b3Jfc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC8qIGlzX2FzeW5jICovKTsKK30KKworCitzdGF0aWMgc3RtdF90eQorYXN0X2Zvcl9hc3luY19zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgLyogYXN5bmNfc3RtdDogQVNZTkMgKGZ1bmNkZWYgfCB3aXRoX3N0bXQgfCBmb3Jfc3RtdCkgKi8KKyAgICBSRVEobiwgYXN5bmNfc3RtdCk7CisgICAgUkVRKENISUxEKG4sIDApLCBBU1lOQyk7CisKKyAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQobiwgMSkpKSB7CisgICAgICAgIGNhc2UgZnVuY2RlZjoKKyAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Z1bmNkZWZfaW1wbChjLCBDSElMRChuLCAxKSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKKyAgICAgICAgY2FzZSB3aXRoX3N0bXQ6CisgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aXRoX3N0bXQoYywgQ0hJTEQobiwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvKiBpc19hc3luYyAqLyk7CisKKyAgICAgICAgY2FzZSBmb3Jfc3RtdDoKKyAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Zvcl9zdG10KGMsIENISUxEKG4sIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvKiBpc19hc3luYyAqLyk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhc3luYyBzdGFtZW50OiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1RSKENISUxEKG4sIDEpKSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiB9CiAKIHN0YXRpYyBzdG10X3R5CiBhc3RfZm9yX2RlY29yYXRlZChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIC8qIGRlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKSAqLworICAgIC8qIGRlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmIHwgYXN5bmNfZnVuY2RlZikgKi8KICAgICBzdG10X3R5IHRoaW5nID0gTlVMTDsKICAgICBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSA9IE5VTEw7CiAKQEAgLTE1MjQsMTIgKzE2MTMsMTUgQEAKICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgYXNzZXJ0KFRZUEUoQ0hJTEQobiwgMSkpID09IGZ1bmNkZWYgfHwKKyAgICAgICAgICAgVFlQRShDSElMRChuLCAxKSkgPT0gYXN5bmNfZnVuY2RlZiB8fAogICAgICAgICAgICBUWVBFKENISUxEKG4sIDEpKSA9PSBjbGFzc2RlZik7CiAKICAgICBpZiAoVFlQRShDSElMRChuLCAxKSkgPT0gZnVuY2RlZikgewogICAgICAgdGhpbmcgPSBhc3RfZm9yX2Z1bmNkZWYoYywgQ0hJTEQobiwgMSksIGRlY29yYXRvcl9zZXEpOwogICAgIH0gZWxzZSBpZiAoVFlQRShDSElMRChuLCAxKSkgPT0gY2xhc3NkZWYpIHsKICAgICAgIHRoaW5nID0gYXN0X2Zvcl9jbGFzc2RlZihjLCBDSElMRChuLCAxKSwgZGVjb3JhdG9yX3NlcSk7CisgICAgfSBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBhc3luY19mdW5jZGVmKSB7CisgICAgICB0aGluZyA9IGFzdF9mb3JfYXN5bmNfZnVuY2RlZihjLCBDSElMRChuLCAxKSwgZGVjb3JhdG9yX3NlcSk7CiAgICAgfQogICAgIC8qIHdlIGNvdW50IHRoZSBkZWNvcmF0b3JzIGluIHdoZW4gdGFsa2luZyBhYm91dCB0aGUgY2xhc3MnIG9yCiAgICAgICogZnVuY3Rpb24ncyBsaW5lIG51bWJlciAqLwpAQCAtMTcyOSwxNiArMTgyMSwyMiBAQAogc3RhdGljIGV4cHJfdHkKIGFzdF9mb3JfaXRlcmNvbXAoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IHR5cGUpCiB7Ci0gICAgLyogdGVzdGxpc3RfY29tcDogdGVzdCAoIGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10gKQotICAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddIHRlc3QgW2NvbXBfZm9yXSAgICAgICAjIFJlYWxseSBba2V5d29yZCAnPSddIHRlc3QgKi8KKyAgICAvKiB0ZXN0bGlzdF9jb21wOiAodGVzdHxzdGFyX2V4cHIpCisgICAgICogICAgICAgICAgICAgICAgKCBjb21wX2ZvciB8ICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddICkgKi8KICAgICBleHByX3R5IGVsdDsKICAgICBhc2RsX3NlcSAqY29tcHM7CisgICAgbm9kZSAqY2g7CiAKICAgICBhc3NlcnQoTkNIKG4pID4gMSk7CiAKLSAgICBlbHQgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMCkpOworICAgIGNoID0gQ0hJTEQobiwgMCk7CisgICAgZWx0ID0gYXN0X2Zvcl9leHByKGMsIGNoKTsKICAgICBpZiAoIWVsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAiaXRlcmFibGUgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbXByZWhlbnNpb24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgY29tcHMgPSBhc3RfZm9yX2NvbXByZWhlbnNpb24oYywgQ0hJTEQobiwgMSkpOwogICAgIGlmICghY29tcHMpCkBAIC0xNzU1LDIzICsxODUzLDU5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogfQogCisvKiBGaWxscyBpbiB0aGUga2V5LCB2YWx1ZSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRpY3QgZWxlbWVudC4gIEluIGNhc2UKKyAqIG9mIGFuIHVucGFja2luZywga2V5IGlzIE5VTEwuICAqaSBpcyBhZHZhbmNlZCBieSB0aGUgbnVtYmVyIG9mIGFzdAorICogZWxlbWVudHMuICBJZmYgc3VjY2Vzc2Z1bCwgbm9uemVybyBpcyByZXR1cm5lZC4KKyAqLworc3RhdGljIGludAorYXN0X2Zvcl9kaWN0ZWxlbWVudChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmksCisgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgKmtleSwgZXhwcl90eSAqdmFsdWUpCit7CisgICAgZXhwcl90eSBleHByZXNzaW9uOworICAgIGlmIChUWVBFKENISUxEKG4sICppKSkgPT0gRE9VQkxFU1RBUikgeworICAgICAgICBhc3NlcnQoTkNIKG4pIC0gKmkgPj0gMik7CisKKyAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAqaSArIDEpKTsKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICprZXkgPSBOVUxMOworICAgICAgICAqdmFsdWUgPSBleHByZXNzaW9uOworCisgICAgICAgICppICs9IDI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoTkNIKG4pIC0gKmkgPj0gMyk7CisKKyAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAqaSkpOworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKmtleSA9IGV4cHJlc3Npb247CisKKyAgICAgICAgUkVRKENISUxEKG4sICppICsgMSksIENPTE9OKTsKKworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sICppICsgMikpOworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKnZhbHVlID0gZXhwcmVzc2lvbjsKKworICAgICAgICAqaSArPSAzOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGV4cHJfdHkKIGFzdF9mb3JfZGljdGNvbXAoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBleHByX3R5IGtleSwgdmFsdWU7CiAgICAgYXNkbF9zZXEgKmNvbXBzOworICAgIGludCBpID0gMDsKIAotICAgIGFzc2VydChOQ0gobikgPiAzKTsKLSAgICBSRVEoQ0hJTEQobiwgMSksIENPTE9OKTsKLQotICAgIGtleSA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAwKSk7Ci0gICAgaWYgKCFrZXkpCisgICAgaWYgKCFhc3RfZm9yX2RpY3RlbGVtZW50KGMsIG4sICZpLCAma2V5LCAmdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWx1ZSA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAyKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KGtleSk7CisgICAgYXNzZXJ0KE5DSChuKSAtIGkgPj0gMSk7CiAKLSAgICBjb21wcyA9IGFzdF9mb3JfY29tcHJlaGVuc2lvbihjLCBDSElMRChuLCAzKSk7CisgICAgY29tcHMgPSBhc3RfZm9yX2NvbXByZWhlbnNpb24oYywgQ0hJTEQobiwgaSkpOwogICAgIGlmICghY29tcHMpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzc5LDYgKzE5MTMsMzkgQEAKIH0KIAogc3RhdGljIGV4cHJfdHkKK2FzdF9mb3JfZGljdGRpc3BsYXkoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBpbnQgaTsKKyAgICBpbnQgajsKKyAgICBpbnQgc2l6ZTsKKyAgICBhc2RsX3NlcSAqa2V5cywgKnZhbHVlczsKKworICAgIHNpemUgPSAoTkNIKG4pICsgMSkgLyAzOyAvKiArMSBpbiBjYXNlIG5vIHRyYWlsaW5nIGNvbW1hICovCisgICAga2V5cyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFrZXlzKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZhbHVlcyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7CisgICAgaWYgKCF2YWx1ZXMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkga2V5LCB2YWx1ZTsKKworICAgICAgICBpZiAoIWFzdF9mb3JfZGljdGVsZW1lbnQoYywgbiwgJmksICZrZXksICZ2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYXNkbF9zZXFfU0VUKGtleXMsIGosIGtleSk7CisgICAgICAgIGFzZGxfc2VxX1NFVCh2YWx1ZXMsIGosIHZhbHVlKTsKKworICAgICAgICBqKys7CisgICAgfQorICAgIGtleXMtPnNpemUgPSBqOworICAgIHZhbHVlcy0+c2l6ZSA9IGo7CisgICAgcmV0dXJuIERpY3Qoa2V5cywgdmFsdWVzLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Cit9CisKK3N0YXRpYyBleHByX3R5CiBhc3RfZm9yX2dlbmV4cChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIGFzc2VydChUWVBFKG4pID09ICh0ZXN0bGlzdF9jb21wKSB8fCBUWVBFKG4pID09IChhcmd1bWVudCkpOwpAQCAtMTc5OSw2ICsxOTY2LDI3IEBACiAgICAgcmV0dXJuIGFzdF9mb3JfaXRlcmNvbXAoYywgbiwgQ09NUF9TRVRDT01QKTsKIH0KIAorc3RhdGljIGV4cHJfdHkKK2FzdF9mb3Jfc2V0ZGlzcGxheShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIGludCBpOworICAgIGludCBzaXplOworICAgIGFzZGxfc2VxICplbHRzOworCisgICAgYXNzZXJ0KFRZUEUobikgPT0gKGRpY3RvcnNldG1ha2VyKSk7CisgICAgc2l6ZSA9IChOQ0gobikgKyAxKSAvIDI7IC8qICsxIGluIGNhc2Ugbm8gdHJhaWxpbmcgY29tbWEgKi8KKyAgICBlbHRzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIWVsdHMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkgKz0gMikgeworICAgICAgICBleHByX3R5IGV4cHJlc3Npb247CisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgaSkpOworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGkgLyAyLCBleHByZXNzaW9uKTsKKyAgICB9CisgICAgcmV0dXJuIFNldChlbHRzLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Cit9CiAKIHN0YXRpYyBleHByX3R5CiBhc3RfZm9yX2F0b20oc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKQEAgLTE5MDksNjIgKzIwOTcsNDggQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfbGlzdGNvbXAoYywgY2gpOwogICAgIGNhc2UgTEJSQUNFOiB7Ci0gICAgICAgIC8qIGRpY3RvcnNldG1ha2VyOiB0ZXN0ICc6JyB0ZXN0ICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddIHwKLSAgICAgICAgICogICAgICAgICAgICAgICAgIHRlc3QgKGdlbl9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSkgICovCi0gICAgICAgIGludCBpLCBzaXplOwotICAgICAgICBhc2RsX3NlcSAqa2V5cywgKnZhbHVlczsKLQorICAgICAgICAvKiBkaWN0b3JzZXRtYWtlcjogKCAoKHRlc3QgJzonIHRlc3QgfCAnKionIHRlc3QpCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyB0ZXN0KSkqIFsnLCddKSkgfAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAoKHRlc3QgfCAnKicgdGVzdCkKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCAnKicgdGVzdCkpKiBbJywnXSkpICkgKi8KKyAgICAgICAgZXhwcl90eSByZXM7CiAgICAgICAgIGNoID0gQ0hJTEQobiwgMSk7CiAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBSQlJBQ0UpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYW4gZW1wdHkgZGljdCAqLworICAgICAgICAgICAgLyogSXQncyBhbiBlbXB0eSBkaWN0LiAqLwogICAgICAgICAgICAgcmV0dXJuIERpY3QoTlVMTCwgTlVMTCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwotICAgICAgICB9IGVsc2UgaWYgKE5DSChjaCkgPT0gMSB8fCBUWVBFKENISUxEKGNoLCAxKSkgPT0gQ09NTUEpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBzaW1wbGUgc2V0ICovCi0gICAgICAgICAgICBhc2RsX3NlcSAqZWx0czsKLSAgICAgICAgICAgIHNpemUgPSAoTkNIKGNoKSArIDEpIC8gMjsgLyogKzEgaW4gY2FzZSBubyB0cmFpbGluZyBjb21tYSAqLwotICAgICAgICAgICAgZWx0cyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgICAgICBpZiAoIWVsdHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKGNoKTsgaSArPSAyKSB7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBleHByZXNzaW9uOwotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIGkpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChlbHRzLCBpIC8gMiwgZXhwcmVzc2lvbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgaXNfZGljdCA9IChUWVBFKENISUxEKGNoLCAwKSkgPT0gRE9VQkxFU1RBUik7CisgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAxIHx8CisgICAgICAgICAgICAgICAgICAgIChOQ0goY2gpID4gMSAmJgorICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRChjaCwgMSkpID09IENPTU1BKSkgeworICAgICAgICAgICAgICAgIC8qIEl0J3MgYSBzZXQgZGlzcGxheS4gKi8KKyAgICAgICAgICAgICAgICByZXMgPSBhc3RfZm9yX3NldGRpc3BsYXkoYywgY2gpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFNldChlbHRzLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoVFlQRShDSElMRChjaCwgMSkpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgc2V0IGNvbXByZWhlbnNpb24gKi8KLSAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX3NldGNvbXAoYywgY2gpOwotICAgICAgICB9IGVsc2UgaWYgKE5DSChjaCkgPiAzICYmIFRZUEUoQ0hJTEQoY2gsIDMpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZGljdGNvbXAoYywgY2gpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogaXQncyBhIGRpY3QgKi8KLSAgICAgICAgICAgIHNpemUgPSAoTkNIKGNoKSArIDEpIC8gNDsgLyogKzEgaW4gY2FzZSBubyB0cmFpbGluZyBjb21tYSAqLwotICAgICAgICAgICAga2V5cyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgICAgICBpZiAoIWtleXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgICAgIHZhbHVlcyA9IF9QeV9hc2RsX3NlcV9uZXcoc2l6ZSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlcykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChjaCk7IGkgKz0gNCkgewotICAgICAgICAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbjsKLQotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIGkpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGtleXMsIGkgLyA0LCBleHByZXNzaW9uKTsKLQotICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIGkgKyAyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVCh2YWx1ZXMsIGkgLyA0LCBleHByZXNzaW9uKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKE5DSChjaCkgPiAxICYmCisgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikgeworICAgICAgICAgICAgICAgIC8qIEl0J3MgYSBzZXQgY29tcHJlaGVuc2lvbi4gKi8KKyAgICAgICAgICAgICAgICByZXMgPSBhc3RfZm9yX3NldGNvbXAoYywgY2gpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIERpY3Qoa2V5cywgdmFsdWVzLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBlbHNlIGlmIChOQ0goY2gpID4gMyAtIGlzX2RpY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRChjaCwgMyAtIGlzX2RpY3QpKSA9PSBjb21wX2ZvcikgeworICAgICAgICAgICAgICAgIC8qIEl0J3MgYSBkaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCisgICAgICAgICAgICAgICAgaWYgKGlzX2RpY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJkaWN0IHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3QgY29tcHJlaGVuc2lvbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzID0gYXN0X2Zvcl9kaWN0Y29tcChjLCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBJdCdzIGEgZGljdGlvbmFyeSBkaXNwbGF5LiAqLworICAgICAgICAgICAgICAgIHJlcyA9IGFzdF9mb3JfZGljdGRpc3BsYXkoYywgY2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcykgeworICAgICAgICAgICAgICAgIHJlcy0+bGluZW5vID0gTElORU5PKG4pOworICAgICAgICAgICAgICAgIHJlcy0+Y29sX29mZnNldCA9IG4tPm5fY29sX29mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTIxMDAsNyArMjI3NCw3IEBACiAgICAgUkVRKG4sIHRyYWlsZXIpOwogICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBMUEFSKSB7CiAgICAgICAgIGlmIChOQ0gobikgPT0gMikKLSAgICAgICAgICAgIHJldHVybiBDYWxsKGxlZnRfZXhwciwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTElORU5PKG4pLAorICAgICAgICAgICAgcmV0dXJuIENhbGwobGVmdF9leHByLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCiAgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9jYWxsKGMsIENISUxEKG4sIDEpLCBsZWZ0X2V4cHIpOwpAQCAtMjE5MiwxOSArMjM2NiwyOSBAQAogfQogCiBzdGF0aWMgZXhwcl90eQotYXN0X2Zvcl9wb3dlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorYXN0X2Zvcl9hdG9tX2V4cHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICAvKiBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgotICAgICAqLwotICAgIGludCBpOworICAgIGludCBpLCBuY2gsIHN0YXJ0ID0gMDsKICAgICBleHByX3R5IGUsIHRtcDsKLSAgICBSRVEobiwgcG93ZXIpOwotICAgIGUgPSBhc3RfZm9yX2F0b20oYywgQ0hJTEQobiwgMCkpOworCisgICAgUkVRKG4sIGF0b21fZXhwcik7CisgICAgbmNoID0gTkNIKG4pOworCisgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IEFXQUlUKSB7CisgICAgICAgIHN0YXJ0ID0gMTsKKyAgICAgICAgYXNzZXJ0KG5jaCA+IDEpOworICAgIH0KKworICAgIGUgPSBhc3RfZm9yX2F0b20oYywgQ0hJTEQobiwgc3RhcnQpKTsKICAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChOQ0gobikgPT0gMSkKKyAgICBpZiAobmNoID09IDEpCiAgICAgICAgIHJldHVybiBlOwotICAgIGZvciAoaSA9IDE7IGkgPCBOQ0gobik7IGkrKykgeworICAgIGlmIChzdGFydCAmJiBuY2ggPT0gMikgeworICAgICAgICByZXR1cm4gQXdhaXQoZSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIH0KKworICAgIGZvciAoaSA9IHN0YXJ0ICsgMTsgaSA8IG5jaDsgaSsrKSB7CiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgIGlmIChUWVBFKGNoKSAhPSB0cmFpbGVyKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjE1LDYgKzIzOTksMjggQEAKICAgICAgICAgdG1wLT5jb2xfb2Zmc2V0ID0gZS0+Y29sX29mZnNldDsKICAgICAgICAgZSA9IHRtcDsKICAgICB9CisKKyAgICBpZiAoc3RhcnQpIHsKKyAgICAgICAgLyogdGhlcmUgd2FzIGFuIEFXQUlUICovCisgICAgICAgIHJldHVybiBBd2FpdChlLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZTsKKyAgICB9Cit9CisKK3N0YXRpYyBleHByX3R5Cithc3RfZm9yX3Bvd2VyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgLyogcG93ZXI6IGF0b20gdHJhaWxlciogKCcqKicgZmFjdG9yKSoKKyAgICAgKi8KKyAgICBleHByX3R5IGU7CisgICAgUkVRKG4sIHBvd2VyKTsKKyAgICBlID0gYXN0X2Zvcl9hdG9tX2V4cHIoYywgQ0hJTEQobiwgMCkpOworICAgIGlmICghZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKE5DSChuKSA9PSAxKQorICAgICAgICByZXR1cm4gZTsKICAgICBpZiAoVFlQRShDSElMRChuLCBOQ0gobikgLSAxKSkgPT0gZmFjdG9yKSB7CiAgICAgICAgIGV4cHJfdHkgZiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCBOQ0gobikgLSAxKSk7CiAgICAgICAgIGlmICghZikKQEAgLTIyNTcsOSArMjQ2MywxMSBAQAogICAgICAgIGFuZF9leHByOiBzaGlmdF9leHByICgnJicgc2hpZnRfZXhwcikqCiAgICAgICAgc2hpZnRfZXhwcjogYXJpdGhfZXhwciAoKCc8PCd8Jz4+JykgYXJpdGhfZXhwcikqCiAgICAgICAgYXJpdGhfZXhwcjogdGVybSAoKCcrJ3wnLScpIHRlcm0pKgotICAgICAgIHRlcm06IGZhY3RvciAoKCcqJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCisgICAgICAgdGVybTogZmFjdG9yICgoJyonfCdAJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCiAgICAgICAgZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi0gICAgICAgcG93ZXI6IGF0b20gdHJhaWxlciogKCcqKicgZmFjdG9yKSoKKyAgICAgICBwb3dlcjogYXRvbV9leHByIFsnKionIGZhY3Rvcl0KKyAgICAgICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgorICAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KICAgICAqLwogCiAgICAgYXNkbF9zZXEgKnNlcTsKQEAgLTI0MDksMTUgKzI2MTcsMTQgQEAKIGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBleHByX3R5IGZ1bmMpCiB7CiAgICAgLyoKLSAgICAgIGFyZ2xpc3Q6IChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ118ICcqJyB0ZXN0IFsnLCcgJyoqJyB0ZXN0XQotICAgICAgICAgICAgICAgfCAnKionIHRlc3QpCi0gICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSAodGVzdCkgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisgICAgICBhcmdsaXN0OiBhcmd1bWVudCAoJywnIGFyZ3VtZW50KSogIFsnLCddCisgICAgICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfCAnKicgdGVzdCB8IHRlc3QgJz0nIHRlc3QgfCAnKionIHRlc3QgKQogICAgICovCiAKICAgICBpbnQgaSwgbmFyZ3MsIG5rZXl3b3JkcywgbmdlbnM7CisgICAgaW50IG5kb3VibGVzdGFyczsKICAgICBhc2RsX3NlcSAqYXJnczsKICAgICBhc2RsX3NlcSAqa2V5d29yZHM7Ci0gICAgZXhwcl90eSB2YXJhcmcgPSBOVUxMLCBrd2FyZyA9IE5VTEw7CiAKICAgICBSRVEobiwgYXJnbGlzdCk7CiAKQEAgLTI0MzEsNyArMjYzOCwxMCBAQAogICAgICAgICAgICAgICAgIG5hcmdzKys7CiAgICAgICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpCiAgICAgICAgICAgICAgICAgbmdlbnMrKzsKKyAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQoY2gsIDApKSA9PSBTVEFSKQorICAgICAgICAgICAgICAgIG5hcmdzKys7CiAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgLyogVFlQRShDSElMRChjaCwgMCkpID09IERPVUJMRVNUQVIgb3Iga2V5d29yZCBhcmd1bWVudCAqLwogICAgICAgICAgICAgICAgIG5rZXl3b3JkcysrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ1Miw0MSArMjY2Miw4MSBAQAogICAgIGtleXdvcmRzID0gX1B5X2FzZGxfc2VxX25ldyhua2V5d29yZHMsIGMtPmNfYXJlbmEpOwogICAgIGlmICgha2V5d29yZHMpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG5hcmdzID0gMDsKLSAgICBua2V5d29yZHMgPSAwOworCisgICAgbmFyZ3MgPSAwOyAgLyogcG9zaXRpb25hbCBhcmd1bWVudHMgKyBpdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmdzICovCisgICAgbmtleXdvcmRzID0gMDsgIC8qIGtleXdvcmQgYXJndW1lbnRzICsga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmdzICovCisgICAgbmRvdWJsZXN0YXJzID0gMDsgIC8qIGp1c3Qga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmdzICovCiAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSsrKSB7CiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBhcmd1bWVudCkgewogICAgICAgICAgICAgZXhwcl90eSBlOworICAgICAgICAgICAgbm9kZSAqY2hjaCA9IENISUxEKGNoLCAwKTsKICAgICAgICAgICAgIGlmIChOQ0goY2gpID09IDEpIHsKKyAgICAgICAgICAgICAgICAvKiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgKi8KICAgICAgICAgICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWtleXdvcmQgYXJnIGFmdGVyIGtleXdvcmQgYXJnIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZG91Ymxlc3RhcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2hjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh2YXJhcmcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IG5hbWVkIGFyZ3VtZW50cyBtYXkgZm9sbG93ICpleHByZXNzaW9uIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICAgICAgZSA9IGFzdF9mb3JfZXhwcihjLCBjaGNoKTsKICAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhcmdzLCBuYXJncysrLCBlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoY2hjaCkgPT0gU1RBUikgeworICAgICAgICAgICAgICAgIC8qIGFuIGl0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyAqLworICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcnJlZDsKKyAgICAgICAgICAgICAgICBpZiAobmRvdWJsZXN0YXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmcgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAxKSk7CisgICAgICAgICAgICAgICAgaWYgKCFlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBzdGFycmVkID0gU3RhcnJlZChlLCBMb2FkLCBMSU5FTk8oY2hjaCksCisgICAgICAgICAgICAgICAgICAgICAgICBjaGNoLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXJyZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhcmdzLCBuYXJncysrLCBzdGFycmVkKTsKKworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoVFlQRShjaGNoKSA9PSBET1VCTEVTVEFSKSB7CisgICAgICAgICAgICAgICAgLyogYSBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZyAqLworICAgICAgICAgICAgICAgIGtleXdvcmRfdHkga3c7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIDEpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGt3ID0ga2V5d29yZChOVUxMLCBlLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5d29yZHMsIG5rZXl3b3JkcysrLCBrdyk7CisgICAgICAgICAgICAgICAgbmRvdWJsZXN0YXJzKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgICAgICAgICAvKiB0aGUgbG9uZSBnZW5lcmF0b3IgZXhwcmVzc2lvbiAqLwogICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2dlbmV4cChjLCBjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYXJncywgbmFyZ3MrKywgZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBhIGtleXdvcmQgYXJndW1lbnQgKi8KICAgICAgICAgICAgICAgICBrZXl3b3JkX3R5IGt3OwogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIga2V5LCB0bXA7CiAgICAgICAgICAgICAgICAgaW50IGs7CiAKLSAgICAgICAgICAgICAgICAvKiBDSElMRChjaCwgMCkgaXMgdGVzdCwgYnV0IG11c3QgYmUgYW4gaWRlbnRpZmllcj8gKi8KLSAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICAgICAgLyogY2hjaCBpcyB0ZXN0LCBidXQgbXVzdCBiZSBhbiBpZGVudGlmaWVyPyAqLworICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgY2hjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAvKiBmKGxhbWJkYSB4OiB4WzBdID0gMykgZW5kcyB1cCBnZXR0aW5nIHBhcnNlZCB3aXRoCkBAIC0yNDk1LDE5ICsyNzQ1LDI0IEBACiAgICAgICAgICAgICAgICAgICogdGhlbiBpcyB2ZXJ5IGNvbmZ1c2luZy4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAoZS0+a2luZCA9PSBMYW1iZGFfa2luZCkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlLT5raW5kICE9IE5hbWVfa2luZCkgeworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2hjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGtleSA9IGUtPnYuTmFtZS5pZDsKICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmtleXdvcmRzOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaykpLT5hcmc7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUodG1wLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOworICAgICAgICAgICAgICAgICAgICBpZiAodG1wICYmICFQeVVuaWNvZGVfQ29tcGFyZSh0bXAsIGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yNTIwLDIxICsyNzc1LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5d29yZHMsIG5rZXl3b3JkcysrLCBrdyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShjaCkgPT0gU1RBUikgewotICAgICAgICAgICAgdmFyYXJnID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIGkrMSkpOwotICAgICAgICAgICAgaWYgKCF2YXJhcmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShjaCkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAgICAga3dhcmcgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgaSsxKSk7Ci0gICAgICAgICAgICBpZiAoIWt3YXJnKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaSsrOwotICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHZhcmFyZywga3dhcmcsIGZ1bmMtPmxpbmVubywgZnVuYy0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgcmV0dXJuIENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGZ1bmMtPmxpbmVubywgZnVuYy0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBleHByX3R5CkBAIC0yNTY4LDcgKzI4MTEsNyBAQAogICAgIC8qIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpCiAgICAgICAgICAgICAgICAgfCAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0KSkqKQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KLSAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nCisgICAgICAgYXVnYXNzaWduOiAnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScKICAgICAgICAgICAgICAgICB8ICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nCiAgICAgICAgdGVzdDogLi4uIGhlcmUgc3RhcnRzIHRoZSBvcGVyYXRvciBwcmVjZW5kZW5jZSBkYW5jZQogICAgICAqLwpAQCAtMzI4OCw3ICszNTMxLDcgQEAKIH0KIAogc3RhdGljIHN0bXRfdHkKLWFzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK2FzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IGlzX2FzeW5jKQogewogICAgIGFzZGxfc2VxICpfdGFyZ2V0LCAqc2VxID0gTlVMTCwgKnN1aXRlX3NlcTsKICAgICBleHByX3R5IGV4cHJlc3Npb247CkBAIC0zMzIyLDggKzM1NjUsMTQgQEAKICAgICBpZiAoIXN1aXRlX3NlcSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gRm9yKHRhcmdldCwgZXhwcmVzc2lvbiwgc3VpdGVfc2VxLCBzZXEsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgaWYgKGlzX2FzeW5jKQorICAgICAgICByZXR1cm4gQXN5bmNGb3IodGFyZ2V0LCBleHByZXNzaW9uLCBzdWl0ZV9zZXEsIHNlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRm9yKHRhcmdldCwgZXhwcmVzc2lvbiwgc3VpdGVfc2VxLCBzZXEsCisgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBleGNlcHRoYW5kbGVyX3R5CkBAIC0zNDcwLDcgKzM3MTksNyBAQAogCiAvKiB3aXRoX3N0bXQ6ICd3aXRoJyB3aXRoX2l0ZW0gKCcsJyB3aXRoX2l0ZW0pKiAnOicgc3VpdGUgKi8KIHN0YXRpYyBzdG10X3R5Ci1hc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IGlzX2FzeW5jKQogewogICAgIGludCBpLCBuX2l0ZW1zOwogICAgIGFzZGxfc2VxICppdGVtcywgKmJvZHk7CkBAIC0zNDkyLDcgKzM3NDEsMTAgQEAKICAgICBpZiAoIWJvZHkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFdpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoaXNfYXN5bmMpCisgICAgICAgIHJldHVybiBBc3luY1dpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBXaXRoKGl0ZW1zLCBib2R5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBzdG10X3R5CkBAIC0zNTE0LDggKzM3NjYsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAotICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLCBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KIAogICAgIGlmIChUWVBFKENISUxEKG4sIDMpKSA9PSBSUEFSKSB7IC8qIGNsYXNzIE5BTUUgJygnICcpJyAnOicgc3VpdGUgKi8KQEAgLTM1MjcsOCArMzc3OSw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogCiAgICAgLyogY2xhc3MgTkFNRSAnKCcgYXJnbGlzdCAnKScgJzonIHN1aXRlICovCkBAIC0zNTUzLDggKzM4MDUsNyBAQAogICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBjYWxsLT52LkNhbGwuYXJncywgY2FsbC0+di5DYWxsLmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICBjYWxsLT52LkNhbGwuc3RhcmFyZ3MsIGNhbGwtPnYuQ2FsbC5rd2FyZ3MsIHMsCisgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgY2FsbC0+di5DYWxsLmFyZ3MsIGNhbGwtPnYuQ2FsbC5rZXl3b3JkcywgcywKICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX3NlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCkBAIC0zNjAwLDcgKzM4NTEsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10CiAgICAgICAgICovCiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7CiAgICAgICAgIFJFUShuLCBjb21wb3VuZF9zdG10KTsKQEAgLTM2MTAsMTcgKzM4NjEsMTkgQEAKICAgICAgICAgICAgIGNhc2Ugd2hpbGVfc3RtdDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aGlsZV9zdG10KGMsIGNoKTsKICAgICAgICAgICAgIGNhc2UgZm9yX3N0bXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZm9yX3N0bXQoYywgY2gpOworICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Zvcl9zdG10KGMsIGNoLCAwKTsKICAgICAgICAgICAgIGNhc2UgdHJ5X3N0bXQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfdHJ5X3N0bXQoYywgY2gpOwogICAgICAgICAgICAgY2FzZSB3aXRoX3N0bXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfd2l0aF9zdG10KGMsIGNoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aXRoX3N0bXQoYywgY2gsIDApOwogICAgICAgICAgICAgY2FzZSBmdW5jZGVmOgogICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Z1bmNkZWYoYywgY2gsIE5VTEwpOwogICAgICAgICAgICAgY2FzZSBjbGFzc2RlZjoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9jbGFzc2RlZihjLCBjaCwgTlVMTCk7CiAgICAgICAgICAgICBjYXNlIGRlY29yYXRlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kZWNvcmF0ZWQoYywgY2gpOworICAgICAgICAgICAgY2FzZSBhc3luY19zdG10OgorICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2FzeW5jX3N0bXQoYywgY2gpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmhhbmRsZWQgc21hbGxfc3RtdDogVFlQRT0lZCBOQ0g9JWRcbiIsCmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IDRiNGY5NzkuLjJmMjIyMDkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC00NiwxMyArNDYsMTYgQEAKIF9QeV9JREVOVElGSUVSKHN0ZG91dCk7CiBfUHlfSURFTlRJRklFUihzdGRlcnIpOwogCisjaW5jbHVkZSAiY2xpbmljL2JsdGlubW9kdWxlLmMuaCIKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgd2FpdGluZyBmb3IgKmFyZ3Mgc3VwcG9ydCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fX19idWlsZF9jbGFzc19fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqY2VsbDsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwotICAgIGludCBpc2NsYXNzOworICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewpAQCAtMjI5LDI1ICsyMzIsNDIgQEAKIGlzIHRoZSBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb2R1bGUuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorYWJzIGFzIGJ1aWx0aW5fYWJzCisKKyAgICB4OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9hYnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjgzMzA0N2M0OTNlY2VhMiBpbnB1dD1iZWQ0Y2ExNGUyOWMyMGQxXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Fic29sdXRlKHYpOworICAgIHJldHVybiBQeU51bWJlcl9BYnNvbHV0ZSh4KTsKIH0KIAotUHlEb2NfU1RSVkFSKGFic19kb2MsCi0iYWJzKG51bWJlcikgLT4gbnVtYmVyXG5cCi1cblwKLVJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LiIpOworLypbY2xpbmljIGlucHV0XQorYWxsIGFzIGJ1aWx0aW5fYWxsCisKKyAgICBpdGVyYWJsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFsbCB2YWx1ZXMgeCBpbiB0aGUgaXRlcmFibGUuCisKK0lmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2FsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FsbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlcmFibGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDg5ZTZkMWI3YmRlMjdiMSBpbnB1dD0xYTdjNWQxYmMzNDM4YTIxXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CiAgICAgaW50IGNtcDsKIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2KTsKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CkBAIC0yNzcsMjAgKzI5NywyNiBAQAogICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCi1QeURvY19TVFJWQVIoYWxsX2RvYywKLSJhbGwoaXRlcmFibGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbGwgdmFsdWVzIHggaW4gdGhlIGl0ZXJhYmxlLlxuXAotSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gVHJ1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FueSBhcyBidWlsdGluX2FueQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbnkgeCBpbiB0aGUgaXRlcmFibGUuCisKK0lmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hbnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9hbnkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZXJhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiZTk5NGIyYzIzMDc0OTIgaW5wdXQ9NDFkNzQ1MWMyMzM4NGYyNF0qLwogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CiAgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOwogICAgIGludCBjbXA7CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodik7CisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwpAQCAtMzIwLDU2ICszNDYsNjcgQEAKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLVB5RG9jX1NUUlZBUihhbnlfZG9jLAotImFueShpdGVyYWJsZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFueSB4IGluIHRoZSBpdGVyYWJsZS5cblwKLUlmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLiIpOworLypbY2xpbmljIGlucHV0XQorYXNjaWkgYXMgYnVpbHRpbl9hc2NpaQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1JldHVybiBhbiBBU0NJSS1vbmx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4KKworQXMgcmVwcigpLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhbgorb2JqZWN0LCBidXQgZXNjYXBlIHRoZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5CityZXByKCkgdXNpbmcgXFx4LCBcXHUgb3IgXFxVIGVzY2FwZXMuIFRoaXMgZ2VuZXJhdGVzIGEgc3RyaW5nIHNpbWlsYXIKK3RvIHRoYXQgcmV0dXJuZWQgYnkgcmVwcigpIGluIFB5dGhvbiAyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hc2NpaShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FzY2lpKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDRlODYyYzQ4YWYyYTkzMyBpbnB1dD00YzYyNzMyZTFiM2EzY2M5XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0FTQ0lJKHYpOworICAgIHJldHVybiBQeU9iamVjdF9BU0NJSShvYmopOwogfQogCi1QeURvY19TVFJWQVIoYXNjaWlfZG9jLAotImFzY2lpKG9iamVjdCkgLT4gc3RyaW5nXG5cCi1cblwKLUFzIHJlcHIoKSwgcmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYW5cblwKLW9iamVjdCwgYnV0IGVzY2FwZSB0aGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieVxuXAotcmVwcigpIHVzaW5nIFxceCwgXFx1IG9yIFxcVSBlc2NhcGVzLiAgVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhclxuXAotdG8gdGhhdCByZXR1cm5lZCBieSByZXByKCkgaW4gUHl0aG9uIDIuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2JpbiBhcyBidWlsdGluX2JpbgorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuCisKKyAgID4+PiBiaW4oMjc5NjIwMikKKyAgICcwYjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2JpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2JpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZWUyNmM2Y2YzYmJiNTQgaW5wdXQ9NTNmOGEwMjY0YmFjYWY5MF0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgMik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDIpOwogfQogCi1QeURvY19TVFJWQVIoYmluX2RvYywKLSJiaW4obnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGJpbigyNzk2MjAyKVxuXAotICAgJzBiMTAxMDEwMTAxMDEwMTAxMDEwMTAxMCdcblwKLSIpOwogCisvKltjbGluaWMgaW5wdXRdCitjYWxsYWJsZSBhcyBidWlsdGluX2NhbGxhYmxlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSAoaS5lLiwgc29tZSBraW5kIG9mIGZ1bmN0aW9uKS4KKworTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhCitfX2NhbGxfXygpIG1ldGhvZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fY2FsbGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9jYWxsYWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0ZGYyY2U5MjM2NGI2NTYgaW5wdXQ9MTQyM2JhYjk5Y2M0MWY1OF0qLwogewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpUHlDYWxsYWJsZV9DaGVjayh2KSk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylQeUNhbGxhYmxlX0NoZWNrKG9iaikpOwogfQogCi1QeURvY19TVFJWQVIoY2FsbGFibGVfZG9jLAotImNhbGxhYmxlKG9iamVjdCkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlIChpLmUuLCBzb21lIGtpbmQgb2YgZnVuY3Rpb24pLlxuXAotTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhXG5cCi1fX2NhbGxfXygpIG1ldGhvZC4iKTsKLQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNTI0LDQwICs1NjEsNDIgQEAKIH07CiAKIAorLypbY2xpbmljIGlucHV0XQorZm9ybWF0IGFzIGJ1aWx0aW5fZm9ybWF0CisKKyAgICB2YWx1ZTogb2JqZWN0CisgICAgZm9ybWF0X3NwZWM6IHVuaWNvZGUoY19kZWZhdWx0PSJOVUxMIikgPSAnJworICAgIC8KKworUmV0dXJuIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpCisKK2Zvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmcKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZm9ybWF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5fZm9ybWF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM0MWZkNzhhNWYwMTc2NCBpbnB1dD02MzI1ZTc1MWExYjI5Yjg2XSovCiB7Ci0gICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VTpmb3JtYXQiLCAmdmFsdWUsICZmb3JtYXRfc3BlYykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm9ybWF0X3NwZWMpOwogfQogCi1QeURvY19TVFJWQVIoZm9ybWF0X2RvYywKLSJmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pIC0+IHN0cmluZ1xuXAotXG5cCi1SZXR1cm5zIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpXG5cCi1mb3JtYXRfc3BlYyBkZWZhdWx0cyB0byBcIlwiIik7CisvKltjbGluaWMgaW5wdXRdCitjaHIgYXMgYnVpbHRpbl9jaHIKKworICAgIGk6IGludAorICAgIC8KKworUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jaHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9jaHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02N2ZlNGQ4N2U2OTBmMzczIGlucHV0PTNmNjA0ZWY0NWE3MDc1MGRdKi8KIHsKLSAgICBpbnQgeDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjaHIiLCAmeCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh4KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGkpOwogfQogCi1QeURvY19TVFJWQVIoY2hyX2RvYywKLSJjaHIoaSkgLT4gVW5pY29kZSBjaGFyYWN0ZXJcblwKLVxuXAotUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIpOwotCiAKIHN0YXRpYyBjb25zdCBjaGFyICoKIHNvdXJjZV9hc19zdHJpbmcoUHlPYmplY3QgKmNtZCwgY29uc3QgY2hhciAqZnVuY25hbWUsIGNvbnN0IGNoYXIgKndoYXQsIFB5Q29tcGlsZXJGbGFncyAqY2YsIFB5X2J1ZmZlciAqdmlldykKQEAgLTU4Miw4ICs2MjEsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc3RybGVuKHN0cikgIT0gc2l6ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgIGlmIChzdHJsZW4oc3RyKSAhPSAoc2l6ZV90KXNpemUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMiKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSh2aWV3KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01OTEsMzUgKzYzMCw0NyBAQAogICAgIHJldHVybiBzdHI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NvbXBpbGUgYXMgYnVpbHRpbl9jb21waWxlCisKKyAgICBzb3VyY2U6IG9iamVjdAorICAgIGZpbGVuYW1lOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNEZWNvZGVyIikKKyAgICBtb2RlOiBzdHIKKyAgICBmbGFnczogaW50ID0gMAorICAgIGRvbnRfaW5oZXJpdDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICBvcHRpbWl6ZTogaW50ID0gLTEKKworQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuCisKK1RoZSBzb3VyY2UgY29kZSBtYXkgcmVwcmVzZW50IGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24uCitUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy4KK1RoZSBtb2RlIG11c3QgYmUgJ2V4ZWMnIHRvIGNvbXBpbGUgYSBtb2R1bGUsICdzaW5nbGUnIHRvIGNvbXBpbGUgYQorc2luZ2xlIChpbnRlcmFjdGl2ZSkgc3RhdGVtZW50LCBvciAnZXZhbCcgdG8gY29tcGlsZSBhbiBleHByZXNzaW9uLgorVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2UKK3RoZSBjb21waWxhdGlvbiBvZiB0aGUgY29kZS4KK1RoZSBkb250X2luaGVyaXQgYXJndW1lbnQsIGlmIHRydWUsIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nCit0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmcKK2NvbXBpbGU7IGlmIGFic2VudCBvciBmYWxzZSB0aGVzZSBzdGF0ZW1lbnRzIGRvIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24sCitpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J1aWx0aW5fY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2luaGVyaXQsIGludCBvcHRpbWl6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTg4MTc2MmMxYmI5MGM0IGlucHV0PTlkNTNlOGNmYjNjODY0MTRdKi8KIHsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpzdHI7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIGNoYXIgKnN0YXJ0c3RyOwotICAgIGludCBtb2RlID0gLTE7Ci0gICAgaW50IGRvbnRfaW5oZXJpdCA9IDA7Ci0gICAgaW50IHN1cHBsaWVkX2ZsYWdzID0gMDsKLSAgICBpbnQgb3B0aW1pemUgPSAtMTsKKyAgICBpbnQgY29tcGlsZV9tb2RlID0gLTE7CiAgICAgaW50IGlzX2FzdDsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7Ci0gICAgUHlPYmplY3QgKmNtZDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OwogICAgIGludCBzdGFydFtdID0ge1B5X2ZpbGVfaW5wdXQsIFB5X2V2YWxfaW5wdXQsIFB5X3NpbmdsZV9pbnB1dH07CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPTyZzfGlpaTpjb21waWxlIiwgIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzdHIsICZzdXBwbGllZF9mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjZi5jZl9mbGFncyA9IGZsYWdzIHwgUHlDRl9TT1VSQ0VfSVNfVVRGODsKIAotICAgIGNmLmNmX2ZsYWdzID0gc3VwcGxpZWRfZmxhZ3MgfCBQeUNGX1NPVVJDRV9JU19VVEY4OwotCi0gICAgaWYgKHN1cHBsaWVkX2ZsYWdzICYKKyAgICBpZiAoZmxhZ3MgJgogICAgICAgICB+KFB5Q0ZfTUFTSyB8IFB5Q0ZfTUFTS19PQlNPTEVURSB8IFB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQgfCBQeUNGX09OTFlfQVNUKSkKICAgICB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNjM4LDI1ICs2ODksMjUgQEAKICAgICAgICAgUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAoc3RhcnRzdHIsICJleGVjIikgPT0gMCkKLSAgICAgICAgbW9kZSA9IDA7Ci0gICAgZWxzZSBpZiAoc3RyY21wKHN0YXJ0c3RyLCAiZXZhbCIpID09IDApCi0gICAgICAgIG1vZGUgPSAxOwotICAgIGVsc2UgaWYgKHN0cmNtcChzdGFydHN0ciwgInNpbmdsZSIpID09IDApCi0gICAgICAgIG1vZGUgPSAyOworICAgIGlmIChzdHJjbXAobW9kZSwgImV4ZWMiKSA9PSAwKQorICAgICAgICBjb21waWxlX21vZGUgPSAwOworICAgIGVsc2UgaWYgKHN0cmNtcChtb2RlLCAiZXZhbCIpID09IDApCisgICAgICAgIGNvbXBpbGVfbW9kZSA9IDE7CisgICAgZWxzZSBpZiAoc3RyY21wKG1vZGUsICJzaW5nbGUiKSA9PSAwKQorICAgICAgICBjb21waWxlX21vZGUgPSAyOwogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21waWxlKCkgYXJnIDMgbXVzdCBiZSAnZXhlYycsICdldmFsJyBvciAnc2luZ2xlJyIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBpbGUoKSBtb2RlIG11c3QgYmUgJ2V4ZWMnLCAnZXZhbCcgb3IgJ3NpbmdsZSciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBpc19hc3QgPSBQeUFTVF9DaGVjayhjbWQpOworICAgIGlzX2FzdCA9IFB5QVNUX0NoZWNrKHNvdXJjZSk7CiAgICAgaWYgKGlzX2FzdCA9PSAtMSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoaXNfYXN0KSB7Ci0gICAgICAgIGlmIChzdXBwbGllZF9mbGFncyAmIFB5Q0ZfT05MWV9BU1QpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihjbWQpOwotICAgICAgICAgICAgcmVzdWx0ID0gY21kOworICAgICAgICBpZiAoZmxhZ3MgJiBQeUNGX09OTFlfQVNUKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc291cmNlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hOwpAQCAtNjY1LDcgKzcxNiw3IEBACiAgICAgICAgICAgICBhcmVuYSA9IFB5QXJlbmFfTmV3KCk7CiAgICAgICAgICAgICBpZiAoYXJlbmEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgbW9kID0gUHlBU1Rfb2JqMm1vZChjbWQsIGFyZW5hLCBtb2RlKTsKKyAgICAgICAgICAgIG1vZCA9IFB5QVNUX29iajJtb2Qoc291cmNlLCBhcmVuYSwgY29tcGlsZV9tb2RlKTsKICAgICAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTY4MSwxMSArNzMyLDExIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZ2aWV3KTsKKyAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHNvdXJjZSwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZ2aWV3KTsKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICByZXN1bHQgPSBQeV9Db21waWxlU3RyaW5nT2JqZWN0KHN0ciwgZmlsZW5hbWUsIHN0YXJ0W21vZGVdLCAmY2YsIG9wdGltaXplKTsKKyAgICByZXN1bHQgPSBQeV9Db21waWxlU3RyaW5nT2JqZWN0KHN0ciwgZmlsZW5hbWUsIHN0YXJ0W2NvbXBpbGVfbW9kZV0sICZjZiwgb3B0aW1pemUpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIGdvdG8gZmluYWxseTsKIApAQCAtNjk2LDIxICs3NDcsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihjb21waWxlX2RvYywKLSJjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGVbLCBmbGFnc1ssIGRvbnRfaW5oZXJpdF1dKSAtPiBjb2RlIG9iamVjdFxuXAotXG5cCi1Db21waWxlIHRoZSBzb3VyY2UgKGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24pXG5cCi1pbnRvIGEgY29kZSBvYmplY3QgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYnkgZXhlYygpIG9yIGV2YWwoKS5cblwKLVRoZSBmaWxlbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHJ1bi10aW1lIGVycm9yIG1lc3NhZ2VzLlxuXAotVGhlIG1vZGUgbXVzdCBiZSAnZXhlYycgdG8gY29tcGlsZSBhIG1vZHVsZSwgJ3NpbmdsZScgdG8gY29tcGlsZSBhXG5cCi1zaW5nbGUgKGludGVyYWN0aXZlKSBzdGF0ZW1lbnQsIG9yICdldmFsJyB0byBjb21waWxlIGFuIGV4cHJlc3Npb24uXG5cCi1UaGUgZmxhZ3MgYXJndW1lbnQsIGlmIHByZXNlbnQsIGNvbnRyb2xzIHdoaWNoIGZ1dHVyZSBzdGF0ZW1lbnRzIGluZmx1ZW5jZVxuXAotdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBjb2RlLlxuXAotVGhlIGRvbnRfaW5oZXJpdCBhcmd1bWVudCwgaWYgbm9uLXplcm8sIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nXG5cCi10aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmdcblwKLWNvbXBpbGU7IGlmIGFic2VudCBvciB6ZXJvIHRoZXNlIHN0YXRlbWVudHMgZG8gaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbixcblwKLWluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03MzUsMzMgKzc3Miw1MSBAQAogIiAgZm9yIGFueSBvdGhlciBvYmplY3Q6IGl0cyBhdHRyaWJ1dGVzLCBpdHMgY2xhc3MncyBhdHRyaWJ1dGVzLCBhbmRcbiIKICIgICAgcmVjdXJzaXZlbHkgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNsYXNzJ3MgYmFzZSBjbGFzc2VzLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9kaXZtb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICp2LCAqdzsKKy8qW2NsaW5pYyBpbnB1dF0KK2Rpdm1vZCBhcyBidWlsdGluX2Rpdm1vZAogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwgMiwgMiwgJnYsICZ3KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Rpdm1vZCh2LCB3KTsKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGl2bW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhZDAwNzYxMjBlYmY5YWMgaW5wdXQ9N2ZkYjE1ZjhhOTdhNWZlN10qLworeworICAgIHJldHVybiBQeU51bWJlcl9EaXZtb2QoeCwgeSk7CiB9CiAKLVB5RG9jX1NUUlZBUihkaXZtb2RfZG9jLAotImRpdm1vZCh4LCB5KSAtPiAoZGl2LCBtb2QpXG5cCi1cblwKLVJldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorZXZhbCBhcyBidWlsdGluX2V2YWwKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXZhbHVhdGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuCisKK1RoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI4NDUwMWZiN2I0ZDY2NiBpbnB1dD0xMWVlNzE4YTg2NDBlNTI3XSovCiB7Ci0gICAgUHlPYmplY3QgKmNtZCwgKnJlc3VsdCwgKnRtcCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeV9Ob25lLCAqbG9jYWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wID0gTlVMTDsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgUHlDb21waWxlckZsYWdzIGNmOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsIDEsIDMsICZjbWQsICZnbG9iYWxzLCAmbG9jYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGxvY2FscyAhPSBQeV9Ob25lICYmICFQeU1hcHBpbmdfQ2hlY2sobG9jYWxzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibG9jYWxzIG11c3QgYmUgYSBtYXBwaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzk2LDE3ICs4NTEsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUNvZGVfQ2hlY2soY21kKSkgewotICAgICAgICBpZiAoUHlDb2RlX0dldE51bUZyZWUoKFB5Q29kZU9iamVjdCAqKWNtZCkgPiAwKSB7CisgICAgaWYgKFB5Q29kZV9DaGVjayhzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUNvZGVfR2V0TnVtRnJlZSgoUHlDb2RlT2JqZWN0ICopc291cmNlKSA+IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICJjb2RlIG9iamVjdCBwYXNzZWQgdG8gZXZhbCgpIG1heSBub3QgY29udGFpbiBmcmVlIHZhcmlhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5RXZhbF9FdmFsQ29kZShjbWQsIGdsb2JhbHMsIGxvY2Fscyk7CisgICAgICAgIHJldHVybiBQeUV2YWxfRXZhbENvZGUoc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogICAgIH0KIAogICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9TT1VSQ0VfSVNfVVRGODsKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImV2YWwiLCAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CisgICAgc3RyID0gc291cmNlX2FzX3N0cmluZyhzb3VyY2UsICJldmFsIiwgInN0cmluZywgYnl0ZXMgb3IgY29kZSIsICZjZiwgJnZpZXcpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTgyMCwyNCArODc1LDI5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKGV2YWxfZG9jLAotImV2YWwoc291cmNlWywgZ2xvYmFsc1ssIGxvY2Fsc11dKSAtPiB2YWx1ZVxuXAotXG5cCi1FdmFsdWF0ZSB0aGUgc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cblwKLVRoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uXG5cCi1vciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS5cblwKLVRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLFxuXAotZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuXG5cCi1JZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC5cbiIpOworLypbY2xpbmljIGlucHV0XQorZXhlYyBhcyBidWlsdGluX2V4ZWMKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXhlY3V0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy4KKworVGhlIHNvdXJjZSBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIG9uZSBvciBtb3JlIFB5dGhvbiBzdGF0ZW1lbnRzCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXhlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V4ZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODNkNTc0ZWY5ZDVkMGI0NiBpbnB1dD0wMWNhM2UxYzAxNjkyODI5XSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKnByb2csICpnbG9iYWxzID0gUHlfTm9uZSwgKmxvY2FscyA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwgMSwgMywgJnByb2csICZnbG9iYWxzLCAmbG9jYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGdsb2JhbHMgPSBQeUV2YWxfR2V0R2xvYmFscygpOwpAQCAtODU2LDEzICs5MTYsMTMgQEAKICAgICAgICAgbG9jYWxzID0gZ2xvYmFsczsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKGdsb2JhbHMpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJleGVjKCkgYXJnIDIgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjEwMHMiLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZXhlYygpIGdsb2JhbHMgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjEwMHMiLAogICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhsb2NhbHMpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiYXJnIDMgbXVzdCBiZSBhIG1hcHBpbmcgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAibG9jYWxzIG11c3QgYmUgYSBtYXBwaW5nIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAogICAgICAgICAgICAgbG9jYWxzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtODcyLDIyICs5MzIsMjIgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUNvZGVfQ2hlY2socHJvZykpIHsKLSAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilwcm9nKSA+IDApIHsKKyAgICBpZiAoUHlDb2RlX0NoZWNrKHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilzb3VyY2UpID4gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAiY29kZSBvYmplY3QgcGFzc2VkIHRvIGV4ZWMoKSBtYXkgbm90ICIKICAgICAgICAgICAgICAgICAiY29udGFpbiBmcmVlIHZhcmlhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgdiA9IFB5RXZhbF9FdmFsQ29kZShwcm9nLCBnbG9iYWxzLCBsb2NhbHMpOworICAgICAgICB2ID0gUHlFdmFsX0V2YWxDb2RlKHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OwogICAgICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKICAgICAgICAgY2YuY2ZfZmxhZ3MgPSBQeUNGX1NPVVJDRV9JU19VVEY4OwotICAgICAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHByb2csICJleGVjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CisgICAgICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoc291cmNlLCAiZXhlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpKQpAQCAtOTAzLDE1ICs5NjMsOCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZXhlY19kb2MsCi0iZXhlYyhvYmplY3RbLCBnbG9iYWxzWywgbG9jYWxzXV0pXG5cCi1cblwKLVJlYWQgYW5kIGV4ZWN1dGUgY29kZSBmcm9tIGFuIG9iamVjdCwgd2hpY2ggY2FuIGJlIGEgc3RyaW5nIG9yIGEgY29kZVxuXAotb2JqZWN0LlxuXAotVGhlIGdsb2JhbHMgYW5kIGxvY2FscyBhcmUgZGljdGlvbmFyaWVzLCBkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50XG5cCi1nbG9iYWxzIGFuZCBsb2NhbHMuICBJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fZ2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC05NDUsOCArOTk4LDE4IEBACiBleGlzdDsgd2l0aG91dCBpdCwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGF0IGNhc2UuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorZ2xvYmFscyBhcyBidWlsdGluX2dsb2JhbHMKKworUmV0dXJuIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBnbG9iYWwgdmFyaWFibGVzLgorCitOT1RFOiBVcGRhdGVzIHRvIHRoaXMgZGljdGlvbmFyeSAqd2lsbCogYWZmZWN0IG5hbWUgbG9va3VwcyBpbiB0aGUgY3VycmVudAorZ2xvYmFsIHNjb3BlIGFuZCB2aWNlLXZlcnNhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9nbG9iYWxzKFB5T2JqZWN0ICpzZWxmKQorYnVpbHRpbl9nbG9iYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OTU4NjQ1ZTk2ZGQ4MTM4IGlucHV0PTkzMjc1NzZmOTJiYjQ4YmFdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtOTU1LDI2ICsxMDE4LDMxIEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihnbG9iYWxzX2RvYywKLSJnbG9iYWxzKCkgLT4gZGljdGlvbmFyeVxuXAotXG5cCi1SZXR1cm4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZSdzIGdsb2JhbCB2YXJpYWJsZXMuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2F0dHIgYXMgYnVpbHRpbl9oYXNhdHRyCisKKyAgICBvYmo6IG9iamVjdAorICAgIG5hbWU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuCisKK1RoaXMgaXMgZG9uZSBieSBjYWxsaW5nIGdldGF0dHIob2JqLCBuYW1lKSBhbmQgY2F0Y2hpbmcgQXR0cmlidXRlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2hhc2F0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9oYXNhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODExNTRmZGQ2MzYzNDY5NiBpbnB1dD0wZmFlYzk3ODdkOTc5NTQyXSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNhdHRyKCk6IGF0dHJpYnV0ZSBuYW1lIG11c3QgYmUgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0cih2LCBuYW1lKTsKKyAgICB2ID0gUHlPYmplY3RfR2V0QXR0cihvYmosIG5hbWUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtOTg2LDI1ICsxMDU0LDMxIEBACiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNhdHRyX2RvYywKLSJoYXNhdHRyKG9iamVjdCwgbmFtZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cblwKLShUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRhdHRyKG9iamVjdCwgbmFtZSkgYW5kIGNhdGNoaW5nIEF0dHJpYnV0ZUVycm9yLikiKTsKIAorLyogQUM6IGdkYidzIGludGVncmF0aW9uIHdpdGggQ1B5dGhvbiByZWxpZXMgb24gYnVpbHRpbl9pZCBoYXZpbmcKKyAqIHRoZSAqZXhhY3QqIHBhcmFtZXRlciBuYW1lcyBvZiAic2VsZiIgYW5kICJ2Iiwgc28gd2UgZW5zdXJlIHdlCisgKiBwcmVzZXJ2ZSB0aG9zZSBuYW1lIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBBQyBkZWZhdWx0cy4KKyAqLworLypbY2xpbmljIGlucHV0XQoraWQgYXMgYnVpbHRpbl9pZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeU1vZHVsZURlZiAqIikKKyAgICBvYmogYXMgdjogb2JqZWN0CisgICAgLworCitSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4KKworVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhbW9uZyBzaW11bHRhbmVvdXNseSBleGlzdGluZyBvYmplY3RzLgorKENQeXRob24gdXNlcyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2lkKFB5TW9kdWxlRGVmICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYWE2NDA3ODVmNjk3ZjY1IGlucHV0PTVhNTM0MTM2NDE5NjMxZjRdKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHYpOwogfQogCi1QeURvY19TVFJWQVIoaWRfZG9jLAotImlkKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4gIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgYW1vbmdcblwKLXNpbXVsdGFuZW91c2x5IGV4aXN0aW5nIG9iamVjdHMuICAoSGludDogaXQncyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKSIpOwotCiAKIC8qIG1hcCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMTc3LDYgKzEyNTEsOCBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX25leHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTIxOCw4MyArMTI5NCwxMDAgQEAKIGlzIGV4aGF1c3RlZCwgaXQgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiByYWlzaW5nIFN0b3BJdGVyYXRpb24uIik7CiAKIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fc2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnZhbHVlOworLypbY2xpbmljIGlucHV0XQorc2V0YXR0ciBhcyBidWlsdGluX3NldGF0dHIKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLCAzLCAzLCAmdiwgJm5hbWUsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKHYsIG5hbWUsIHZhbHVlKSAhPSAwKQorICAgIG9iajogb2JqZWN0CisgICAgbmFtZTogb2JqZWN0CisgICAgdmFsdWU6IG9iamVjdAorICAgIC8KKworU2V0cyB0aGUgbmFtZWQgYXR0cmlidXRlIG9uIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKworc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG8gYGB4LnkgPSB2JycKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc2V0YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4ODFjNjU1YzBmN2UzNGYgaW5wdXQ9YmQyYjdjYTY4NzVhMTg5OV0qLworeworICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKG9iaiwgbmFtZSwgdmFsdWUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldGF0dHJfZG9jLAotInNldGF0dHIob2JqZWN0LCBuYW1lLCB2YWx1ZSlcblwKLVxuXAotU2V0IGEgbmFtZWQgYXR0cmlidXRlIG9uIGFuIG9iamVjdDsgc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG9cblwKLWBgeC55ID0gdicnLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitkZWxhdHRyIGFzIGJ1aWx0aW5fZGVsYXR0cgorCisgICAgb2JqOiBvYmplY3QKKyAgICBuYW1lOiBvYmplY3QKKyAgICAvCisKK0RlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuCisKK2RlbGF0dHIoeCwgJ3knKSBpcyBlcXVpdmFsZW50IHRvIGBgZGVsIHgueScnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2RlbGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9kZWxhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY2NTNlNjk4YTBiNDE4NyBpbnB1dD1kYjE2Njg1ZDZiNGI5NDEwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHIodiwgbmFtZSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0cihvYmosIG5hbWUsIChQeU9iamVjdCAqKU5VTEwpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlbGF0dHJfZG9jLAotImRlbGF0dHIob2JqZWN0LCBuYW1lKVxuXAotXG5cCi1EZWxldGUgYSBuYW1lZCBhdHRyaWJ1dGUgb24gYW4gb2JqZWN0OyBkZWxhdHRyKHgsICd5JykgaXMgZXF1aXZhbGVudCB0b1xuXAotYGBkZWwgeC55JycuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2ggYXMgYnVpbHRpbl9oYXNoCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LgorCitUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZQorcmV2ZXJzZSBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGFzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2hhc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZjMyZmYxNTRjMWY3NTFhIGlucHV0PTU4YzQ4YmU4MjJiZjljNTRdKi8KIHsKICAgICBQeV9oYXNoX3QgeDsKIAotICAgIHggPSBQeU9iamVjdF9IYXNoKHYpOworICAgIHggPSBQeU9iamVjdF9IYXNoKG9iaik7CiAgICAgaWYgKHggPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNoX2RvYywKLSJoYXNoKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gYSBoYXNoIHZhbHVlIGZvciB0aGUgb2JqZWN0LiAgVHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSBoYXZlXG5cCi10aGUgc2FtZSBoYXNoIHZhbHVlLiAgVGhlIHJldmVyc2UgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUsIGJ1dCBsaWtlbHkuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hleCBhcyBidWlsdGluX2hleAorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci4KKworICAgPj4+IGhleCgxMjY0ODQzMCkKKyAgICcweGMwZmZlZScKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5faGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpudW1iZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjE4NDg5Y2UzY2JjNTg1OCBpbnB1dD1lNjQ1YWZmNWZjN2Q1NDBlXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZSh2LCAxNik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDE2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGhleF9kb2MsCi0iaGV4KG51bWJlcikgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGhleCgzNzM1OTI4NTU5KVxuXAotICAgJzB4ZGVhZGJlZWYnXG5cCi0iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5faXRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMzIxLDI1ICsxNDE0LDQxIEBACiBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjYWxsYWJsZSBpcyBjYWxsZWQgdW50aWwgaXQgcmV0dXJucyB0aGUgc2VudGluZWwuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorbGVuIGFzIGJ1aWx0aW5fbGVuCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBjb250YWluZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2xlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlNTgzN2I2ZjgxZDkxNWIgaW5wdXQ9YmM1NTU5OGRhOWU5YzliNV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gUHlPYmplY3RfU2l6ZSh2KTsKKyAgICByZXMgPSBQeU9iamVjdF9TaXplKG9iaik7CiAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCi1QeURvY19TVFJWQVIobGVuX2RvYywKLSJsZW4ob2JqZWN0KVxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBvZiBhIHNlcXVlbmNlIG9yIGNvbGxlY3Rpb24uIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2xvY2FscyBhcyBidWlsdGluX2xvY2FscworCitSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuCisKK05PVEU6IFdoZXRoZXIgb3Igbm90IHVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgYWZmZWN0IG5hbWUgbG9va3VwcyBpbgordGhlIGxvY2FsIHNjb3BlIGFuZCB2aWNlLXZlcnNhIGlzICppbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQqIGFuZCBub3QKK2NvdmVyZWQgYnkgYW55IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xvY2FscyhQeU9iamVjdCAqc2VsZikKK2J1aWx0aW5fbG9jYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjVhNDFmMTJlMTlkMTNhIGlucHV0PTc4NzQwMThkNDc4ZDVjNGJdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtMTM0OCwxMSArMTQ1Nyw2IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihsb2NhbHNfZG9jLAotImxvY2FscygpIC0+IGRpY3Rpb25hcnlcblwKLVxuXAotVXBkYXRlIGFuZCByZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuIik7Ci0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG1pbl9tYXgoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBpbnQgb3ApCkBAIC0xNDU1LDYgKzE1NTksNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9taW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0NzEsNiArMTU3Niw3IEBACiBXaXRoIHR3byBvciBtb3JlIGFyZ3VtZW50cywgcmV0dXJuIHRoZSBzbWFsbGVzdCBhcmd1bWVudC4iKTsKIAogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0ODcsNTYgKzE1OTMsNzAgQEAKIFdpdGggdHdvIG9yIG1vcmUgYXJndW1lbnRzLCByZXR1cm4gdGhlIGxhcmdlc3QgYXJndW1lbnQuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorb2N0IGFzIGJ1aWx0aW5fb2N0CisKKyAgICBudW1iZXI6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLgorCisgICA+Pj4gb2N0KDM0MjM5MSkKKyAgICcwbzEyMzQ1NjcnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX29jdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX29jdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4ZjcwMWJjNmQ4ZjgwNGEgaW5wdXQ9YWQ2YjI3NGFmNDAxNmM3Ml0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgOCk7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDgpOwogfQogCi1QeURvY19TVFJWQVIob2N0X2RvYywKLSJvY3QobnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuXAotXG5cCi0gICA+Pj4gb2N0KDM0MjM5MSlcblwKLSAgICcwbzEyMzQ1NjcnXG5cCi0iKTsKIAorLypbY2xpbmljIGlucHV0XQorb3JkIGFzIGJ1aWx0aW5fb3JkCisKKyAgICBjOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9vcmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBvYmopCitidWlsdGluX29yZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNGZkMjcyNzJkOTQ2MmY2IGlucHV0PTMwNjRlNWQ2MjAzYWQwMTJdKi8KIHsKICAgICBsb25nIG9yZDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7Ci0gICAgICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG9iaik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYykpIHsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYyk7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlc19BU19TVFJJTkcob2JqKSk7CisgICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZXNfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGMpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjKTsKICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihjLCAwKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhvYmopKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYykpIHsKICAgICAgICAgLyogWFhYIEhvcGVmdWxseSB0aGlzIGlzIHRlbXBvcmFyeSAqLwotICAgICAgICBzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGMpOwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7Ci0gICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZUFycmF5X0FTX1NUUklORyhvYmopKTsKKyAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJvcmQoKSBleHBlY3RlZCBzdHJpbmcgb2YgbGVuZ3RoIDEsIGJ1dCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMgZm91bmQiLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyBmb3VuZCIsIGMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE1NDcsMzEgKzE2NjcsMzAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfVkFSKG9yZF9kb2MpID0gUHlEb2NfU1RSKAotIm9yZChjKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiB0aGUgaW50ZWdlciBvcmRpbmFsIG9mIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIgotKTsKIAorLypbY2xpbmljIGlucHV0XQorcG93IGFzIGJ1aWx0aW5fcG93CisKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICB6OiBvYmplY3QgPSBOb25lCisgICAgLworCitFcXVpdmFsZW50IHRvIHgqKnkgKHdpdGggdHdvIGFyZ3VtZW50cykgb3IgeCoqeSAlIHogKHdpdGggdGhyZWUgYXJndW1lbnRzKQorCitTb21lIHR5cGVzLCBzdWNoIGFzIGludHMsIGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50IGFsZ29yaXRobSB3aGVuCitpbnZva2VkIHVzaW5nIHRoZSB0aHJlZSBhcmd1bWVudCBmb3JtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9wb3coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9wb3dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmYmEyNjhhZGJhOWI0NWYgaW5wdXQ9NjUzZDU3ZDM4ZDQxZmMwN10qLwogewotICAgIFB5T2JqZWN0ICp2LCAqdywgKnogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwgMiwgMywgJnYsICZ3LCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU51bWJlcl9Qb3dlcih2LCB3LCB6KTsKKyAgICByZXR1cm4gUHlOdW1iZXJfUG93ZXIoeCwgeSwgeik7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3dfZG9jLAotInBvdyh4LCB5Wywgel0pIC0+IG51bWJlclxuXAotXG5cCi1XaXRoIHR3byBhcmd1bWVudHMsIGVxdWl2YWxlbnQgdG8geCoqeS4gIFdpdGggdGhyZWUgYXJndW1lbnRzLFxuXAotZXF1aXZhbGVudCB0byAoeCoqeSkgJSB6LCBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IChlLmcuIGZvciBpbnRzKS4iKTsKIAotCi0KKy8qIEFDOiBjYW5ub3QgY29udmVydCB5ZXQsIHdhaXRpbmcgZm9yICphcmdzIHN1cHBvcnQgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3ByaW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xNjY3LDEwICsxNzg2LDI1IEBACiBmbHVzaDogd2hldGhlciB0byBmb3JjaWJseSBmbHVzaCB0aGUgc3RyZWFtLiIpOwogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2lucHV0IGFzIGJ1aWx0aW5faW5wdXQKKworICAgIHByb21wdDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gTm9uZQorICAgIC8KKworUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuCisKK1RoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbiwgaXMgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXRwdXQgd2l0aG91dCBhCit0cmFpbGluZyBuZXdsaW5lIGJlZm9yZSByZWFkaW5nIGlucHV0LgorCitJZiB0aGUgdXNlciBoaXRzIEVPRiAoKm5peDogQ3RybC1ELCBXaW5kb3dzOiBDdHJsLVorUmV0dXJuKSwgcmFpc2UgRU9GRXJyb3IuCitPbiAqbml4IHN5c3RlbXMsIHJlYWRsaW5lIGlzIHVzZWQgaWYgYXZhaWxhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pbnB1dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2lucHV0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnByb21wdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNzc3MzFmNTllMTUxNWM0IGlucHV0PTVlOGJiNzBjMjkwOGZlM2NdKi8KIHsKLSAgICBQeU9iamVjdCAqcHJvbXB0YXJnID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmluID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGluKTsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CkBAIC0xNjc4LDEwICsxODEyLDYgQEAKICAgICBsb25nIGZkOwogICAgIGludCB0dHk7CiAKLSAgICAvKiBQYXJzZSBhcmd1bWVudHMgKi8KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsIDAsIDEsICZwcm9tcHRhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIENoZWNrIHRoYXQgc3RkaW4vb3V0L2VyciBhcmUgaW50YWN0ICovCiAgICAgaWYgKGZpbiA9PSBOVUxMIHx8IGZpbiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNzM3LDcgKzE4NjcsNyBAQAogICAgIC8qIElmIHdlJ3JlIGludGVyYWN0aXZlLCB1c2UgKEdOVSkgcmVhZGxpbmUgKi8KICAgICBpZiAodHR5KSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgICAgIGNoYXIgKnByb21wdDsKKyAgICAgICAgY2hhciAqcHJvbXB0c3RyOwogICAgICAgICBjaGFyICpzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKnN0ZGluX2VuY29kaW5nID0gTlVMTCwgKnN0ZGluX2Vycm9ycyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpzdGRvdXRfZW5jb2RpbmcgPSBOVUxMLCAqc3Rkb3V0X2Vycm9ycyA9IE5VTEw7CkBAIC0xNzYwLDcgKzE4OTAsNyBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgICAgIGlmIChwcm9tcHRhcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBwcm9tcHQsIGVuY29kZSBpdCBhcyBzdGRvdXQgd291bGQgKi8KICAgICAgICAgICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHIsICpzdGRvdXRfZXJyb3JzX3N0cjsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmdwbzsKQEAgLTE3NzIsNyArMTkwMiw3IEBACiAgICAgICAgICAgICBzdGRvdXRfZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZ19zdHIgfHwgIXN0ZG91dF9lcnJvcnNfc3RyKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHN0cmluZ3BvID0gUHlPYmplY3RfU3RyKHByb21wdGFyZyk7CisgICAgICAgICAgICBzdHJpbmdwbyA9IFB5T2JqZWN0X1N0cihwcm9tcHQpOwogICAgICAgICAgICAgaWYgKHN0cmluZ3BvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwogICAgICAgICAgICAgcG8gPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0cmluZ3BvLApAQCAtMTc4MiwxNSArMTkxMiwxNSBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0ID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0ID09IE5VTEwpCisgICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBvKTsKKyAgICAgICAgICAgIGlmIChwcm9tcHRzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwbyA9IE5VTEw7Ci0gICAgICAgICAgICBwcm9tcHQgPSAiIjsKKyAgICAgICAgICAgIHByb21wdHN0ciA9ICIiOwogICAgICAgICB9Ci0gICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdCk7CisgICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdHN0cik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTgzMiw4ICsxOTYyLDggQEAKICAgICB9CiAKICAgICAvKiBGYWxsYmFjayBpZiB3ZSdyZSBub3QgaW50ZXJhY3RpdmUgKi8KLSAgICBpZiAocHJvbXB0YXJnICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHRhcmcsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKKyAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHQsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CkBAIC0xODQ0LDI4ICsxOTc0LDI5IEBACiAgICAgcmV0dXJuIFB5RmlsZV9HZXRMaW5lKGZpbiwgLTEpOwogfQogCi1QeURvY19TVFJWQVIoaW5wdXRfZG9jLAotImlucHV0KFtwcm9tcHRdKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuXG5cCi1JZiB0aGUgdXNlciBoaXRzIEVPRiAoVW5peDogQ3RsLUQsIFdpbmRvd3M6IEN0bC1aK1JldHVybiksIHJhaXNlIEVPRkVycm9yLlxuXAotT24gVW5peCwgR05VIHJlYWRsaW5lIGlzIHVzZWQgaWYgZW5hYmxlZC4gIFRoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbixcblwKLWlzIHByaW50ZWQgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIHJlYWRpbmcuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3JlcHIgYXMgYnVpbHRpbl9yZXByCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKK0ZvciBtYW55IG9iamVjdCB0eXBlcywgaW5jbHVkaW5nIG1vc3QgYnVpbHRpbnMsIGV2YWwocmVwcihvYmopKSA9PSBvYmouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX3JlcHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9yZXByKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGM0MTc4NGZhNDM0MTgzNCBpbnB1dD0xYzllNmQ2NmQzZTNiZTA0XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIodik7CisgICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIob2JqKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlcHJfZG9jLAotInJlcHIob2JqZWN0KSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuXG5cCi1Gb3IgbW9zdCBvYmplY3QgdHlwZXMsIGV2YWwocmVwcihvYmplY3QpKSA9PSBvYmplY3QuIik7CiAKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QKKyAqICAgICBvciBhIHNlbWFudGljIGNoYW5nZSB0byBhY2NlcHQgTm9uZSBmb3IgIm5kaWdpdHMiCisgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3JvdW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xOTA3LDYgKzIwMzgsMzUgQEAKIHNhbWUgdHlwZSBhcyB0aGUgbnVtYmVyLiBuZGlnaXRzIG1heSBiZSBuZWdhdGl2ZS4iKTsKIAogCisvKkFDOiB3ZSBuZWVkIHRvIGtlZXAgdGhlIGt3ZHMgZGljdCBpbnRhY3QgdG8gZWFzaWx5IGNhbGwgaW50byB0aGUKKyAqIGxpc3Quc29ydCBtZXRob2QsIHdoaWNoIGlzbid0IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gQUMuIFNvIHdlIGp1c3QgdXNlCisgKiB0aGUgaW5pdGlhbGx5IGdlbmVyYXRlZCBzaWduYXR1cmUgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4KKyAqLworLyogW2Rpc2FibGVkIGNsaW5pYyBpbnB1dF0KK3NvcnRlZCBhcyBidWlsdGluX3NvcnRlZAorCisgICAgaXRlcmFibGUgYXMgc2VxOiBvYmplY3QKKyAgICBrZXkgYXMga2V5ZnVuYzogb2JqZWN0ID0gTm9uZQorICAgIHJldmVyc2U6IG9iamVjdCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgYWxsIGl0ZW1zIGZyb20gdGhlIGl0ZXJhYmxlIGluIGFzY2VuZGluZyBvcmRlci4KKworQSBjdXN0b20ga2V5IGZ1bmN0aW9uIGNhbiBiZSBzdXBwbGllZCB0byBjdXN0b21pc2UgdGhlIHNvcnQgb3JkZXIsIGFuZCB0aGUKK3JldmVyc2UgZmxhZyBjYW4gYmUgc2V0IHRvIHJlcXVlc3QgdGhlIHJlc3VsdCBpbiBkZXNjZW5kaW5nIG9yZGVyLgorW2VuZCBkaXNhYmxlZCBjbGluaWMgaW5wdXRdKi8KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc29ydGVkX19kb2NfXywKKyJzb3J0ZWQoJG1vZHVsZSwgaXRlcmFibGUsIGtleT1Ob25lLCByZXZlcnNlPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IGxpc3QgY29udGFpbmluZyBhbGwgaXRlbXMgZnJvbSB0aGUgaXRlcmFibGUgaW4gYXNjZW5kaW5nIG9yZGVyLlxuIgorIlxuIgorIkEgY3VzdG9tIGtleSBmdW5jdGlvbiBjYW4gYmUgc3VwcGxpZWQgdG8gY3VzdG9taXNlIHRoZSBzb3J0IG9yZGVyLCBhbmQgdGhlXG4iCisicmV2ZXJzZSBmbGFnIGNhbiBiZSBzZXQgdG8gcmVxdWVzdCB0aGUgcmVzdWx0IGluIGRlc2NlbmRpbmcgb3JkZXIuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGICAgIFwKKyAgICB7InNvcnRlZCIsIChQeUNGdW5jdGlvbilidWlsdGluX3NvcnRlZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fc29ydGVkX19kb2NfX30sCisKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3NvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTk0OCw5ICsyMTA4LDggQEAKICAgICByZXR1cm4gbmV3bGlzdDsKIH0KIAotUHlEb2NfU1RSVkFSKHNvcnRlZF9kb2MsCi0ic29ydGVkKGl0ZXJhYmxlLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgLS0+IG5ldyBzb3J0ZWQgbGlzdCIpOwogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fdmFycyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTgyLDE3ICsyMTQxLDI5IEBACiBXaXRob3V0IGFyZ3VtZW50cywgZXF1aXZhbGVudCB0byBsb2NhbHMoKS5cblwKIFdpdGggYW4gYXJndW1lbnQsIGVxdWl2YWxlbnQgdG8gb2JqZWN0Ll9fZGljdF9fLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1idWlsdGluX3N1bShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisKKy8qW2NsaW5pYyBpbnB1dF0KK3N1bSBhcyBidWlsdGluX3N1bQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIHN0YXJ0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitSZXR1cm4gdGhlIHN1bSBvZiBhICdzdGFydCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdXMgYW4gaXRlcmFibGUgb2YgbnVtYmVycworCitXaGVuIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIHRoZSBzdGFydCB2YWx1ZS4KK1RoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5CityZWplY3Qgbm9uLW51bWVyaWMgdHlwZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3N1bV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnN0YXJ0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMzNjU1YjI0OGIyMWQ1ODEgaW5wdXQ9M2I1YjdhOWQ3NjExYzczYV0qLwogewotICAgIFB5T2JqZWN0ICpzZXE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IHN0YXJ0OwogICAgIFB5T2JqZWN0ICp0ZW1wLCAqaXRlbSwgKml0ZXI7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLCAxLCAyLCAmc2VxLCAmcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihzZXEpOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjAyMiw3ICsyMTkzLDYgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgfQogCkBAIC0yMTQ4LDYyICsyMzE4LDYyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHN1bV9kb2MsCi0ic3VtKGl0ZXJhYmxlWywgc3RhcnRdKSAtPiB2YWx1ZVxuXAotXG5cCi1SZXR1cm4gdGhlIHN1bSBvZiBhbiBpdGVyYWJsZSBvZiBudW1iZXJzIChOT1Qgc3RyaW5ncykgcGx1cyB0aGUgdmFsdWVcblwKLW9mIHBhcmFtZXRlciAnc3RhcnQnICh3aGljaCBkZWZhdWx0cyB0byAwKS4gIFdoZW4gdGhlIGl0ZXJhYmxlIGlzXG5cCi1lbXB0eSwgcmV0dXJuIHN0YXJ0LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitpc2luc3RhbmNlIGFzIGJ1aWx0aW5faXNpbnN0YW5jZQorCisgICAgb2JqOiBvYmplY3QKKyAgICBjbGFzc19vcl90dXBsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuCisKK0EgdHVwbGUsIGFzIGluIGBgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG8KK2NoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKQorb3IgLi4uYGAgZXRjLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pc2luc3RhbmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5faXNpbnN0YW5jZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Zjk2MGI3YzEyZGJiZWRhMCBpbnB1dD1mZmE3NDNkYjFkYWY3NTQ5XSovCiB7Ci0gICAgUHlPYmplY3QgKmluc3Q7Ci0gICAgUHlPYmplY3QgKmNsczsKICAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsIDIsIDIsICZpbnN0LCAmY2xzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR2YWwgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGluc3QsIGNscyk7CisgICAgcmV0dmFsID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIGNsYXNzX29yX3R1cGxlKTsKICAgICBpZiAocmV0dmFsIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXR2YWwpOwogfQogCi1QeURvY19TVFJWQVIoaXNpbnN0YW5jZV9kb2MsCi0iaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzLW9yLXR5cGUtb3ItdHVwbGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgb3Igb2YgYSBzdWJjbGFzcyB0aGVyZW9mLlxuXAotV2l0aCBhIHR5cGUgYXMgc2Vjb25kIGFyZ3VtZW50LCByZXR1cm4gd2hldGhlciB0aGF0IGlzIHRoZSBvYmplY3QncyB0eXBlLlxuXAotVGhlIGZvcm0gdXNpbmcgYSB0dXBsZSwgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSksIGlzIGEgc2hvcnRjdXQgZm9yXG5cCi1pc2luc3RhbmNlKHgsIEEpIG9yIGlzaW5zdGFuY2UoeCwgQikgb3IgLi4uIChldGMuKS4iKTsKIAorLypbY2xpbmljIGlucHV0XQoraXNzdWJjbGFzcyBhcyBidWlsdGluX2lzc3ViY2xhc3MKKworICAgIGNsczogb2JqZWN0CisgICAgY2xhc3Nfb3JfdHVwbGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgJ2NscycgaXMgYSBkZXJpdmVkIGZyb20gYW5vdGhlciBjbGFzcyBvciBpcyB0aGUgc2FtZSBjbGFzcy4KKworQSB0dXBsZSwgYXMgaW4gYGBpc3N1YmNsYXNzKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0bworY2hlY2sgYWdhaW5zdC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgaXNzdWJjbGFzcyh4LCBBKSBvciBpc3N1YmNsYXNzKHgsIEIpCitvciAuLi5gYCBldGMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2lzc3ViY2xhc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNscywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjAxMmExNTE5NDBiYmYyIGlucHV0PWFmNWYzNWU5Y2VhZGRhZjZdKi8KIHsKLSAgICBQeU9iamVjdCAqZGVyaXZlZDsKLSAgICBQeU9iamVjdCAqY2xzOwogICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwgMiwgMiwgJmRlcml2ZWQsICZjbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKKyAgICByZXR2YWwgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGNscywgY2xhc3Nfb3JfdHVwbGUpOwogICAgIGlmIChyZXR2YWwgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldHZhbCk7CiB9CiAKLVB5RG9jX1NUUlZBUihpc3N1YmNsYXNzX2RvYywKLSJpc3N1YmNsYXNzKEMsIEIpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgY2xhc3MgQyBpcyBhIHN1YmNsYXNzIChpLmUuLCBhIGRlcml2ZWQgY2xhc3MpIG9mIGNsYXNzIEIuXG5cCi1XaGVuIHVzaW5nIGEgdHVwbGUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBpc3N1YmNsYXNzKFgsIChBLCBCLCAuLi4pKSxcblwKLWlzIGEgc2hvcnRjdXQgZm9yIGlzc3ViY2xhc3MoWCwgQSkgb3IgaXNzdWJjbGFzcyhYLCBCKSBvciAuLi4gKGV0Yy4pLiIpOwotCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0yMzk4LDQ0ICsyNTY4LDQ0IEBACiAgICAgeyJfX2J1aWxkX2NsYXNzX18iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18sCiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGJ1aWxkX2NsYXNzX2RvY30sCiAgICAgeyJfX2ltcG9ydF9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2ltcG9ydF9fLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBpbXBvcnRfZG9jfSwKLSAgICB7ImFicyIsICAgICAgICAgICAgIGJ1aWx0aW5fYWJzLCAgICAgICAgTUVUSF9PLCBhYnNfZG9jfSwKLSAgICB7ImFsbCIsICAgICAgICAgICAgIGJ1aWx0aW5fYWxsLCAgICAgICAgTUVUSF9PLCBhbGxfZG9jfSwKLSAgICB7ImFueSIsICAgICAgICAgICAgIGJ1aWx0aW5fYW55LCAgICAgICAgTUVUSF9PLCBhbnlfZG9jfSwKLSAgICB7ImFzY2lpIiwgICAgICAgICAgIGJ1aWx0aW5fYXNjaWksICAgICAgTUVUSF9PLCBhc2NpaV9kb2N9LAotICAgIHsiYmluIiwgICAgICAgICAgICAgYnVpbHRpbl9iaW4sICAgICAgICBNRVRIX08sIGJpbl9kb2N9LAotICAgIHsiY2FsbGFibGUiLCAgICAgICAgYnVpbHRpbl9jYWxsYWJsZSwgICBNRVRIX08sIGNhbGxhYmxlX2RvY30sCi0gICAgeyJjaHIiLCAgICAgICAgICAgICBidWlsdGluX2NociwgICAgICAgIE1FVEhfVkFSQVJHUywgY2hyX2RvY30sCi0gICAgeyJjb21waWxlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBjb21waWxlX2RvY30sCi0gICAgeyJkZWxhdHRyIiwgICAgICAgICBidWlsdGluX2RlbGF0dHIsICAgIE1FVEhfVkFSQVJHUywgZGVsYXR0cl9kb2N9LAorICAgIEJVSUxUSU5fQUJTX01FVEhPRERFRgorICAgIEJVSUxUSU5fQUxMX01FVEhPRERFRgorICAgIEJVSUxUSU5fQU5ZX01FVEhPRERFRgorICAgIEJVSUxUSU5fQVNDSUlfTUVUSE9EREVGCisgICAgQlVJTFRJTl9CSU5fTUVUSE9EREVGCisgICAgQlVJTFRJTl9DQUxMQUJMRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NIUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGCisgICAgQlVJTFRJTl9ERUxBVFRSX01FVEhPRERFRgogICAgIHsiZGlyIiwgICAgICAgICAgICAgYnVpbHRpbl9kaXIsICAgICAgICBNRVRIX1ZBUkFSR1MsIGRpcl9kb2N9LAotICAgIHsiZGl2bW9kIiwgICAgICAgICAgYnVpbHRpbl9kaXZtb2QsICAgICBNRVRIX1ZBUkFSR1MsIGRpdm1vZF9kb2N9LAotICAgIHsiZXZhbCIsICAgICAgICAgICAgYnVpbHRpbl9ldmFsLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV2YWxfZG9jfSwKLSAgICB7ImV4ZWMiLCAgICAgICAgYnVpbHRpbl9leGVjLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV4ZWNfZG9jfSwKLSAgICB7ImZvcm1hdCIsICAgICAgICAgIGJ1aWx0aW5fZm9ybWF0LCAgICAgTUVUSF9WQVJBUkdTLCBmb3JtYXRfZG9jfSwKKyAgICBCVUlMVElOX0RJVk1PRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0VWQUxfTUVUSE9EREVGCisgICAgQlVJTFRJTl9FWEVDX01FVEhPRERFRgorICAgIEJVSUxUSU5fRk9STUFUX01FVEhPRERFRgogICAgIHsiZ2V0YXR0ciIsICAgICAgICAgYnVpbHRpbl9nZXRhdHRyLCAgICBNRVRIX1ZBUkFSR1MsIGdldGF0dHJfZG9jfSwKLSAgICB7Imdsb2JhbHMiLCAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX2dsb2JhbHMsICAgIE1FVEhfTk9BUkdTLCBnbG9iYWxzX2RvY30sCi0gICAgeyJoYXNhdHRyIiwgICAgICAgICBidWlsdGluX2hhc2F0dHIsICAgIE1FVEhfVkFSQVJHUywgaGFzYXR0cl9kb2N9LAotICAgIHsiaGFzaCIsICAgICAgICAgICAgYnVpbHRpbl9oYXNoLCAgICAgICBNRVRIX08sIGhhc2hfZG9jfSwKLSAgICB7ImhleCIsICAgICAgICAgICAgIGJ1aWx0aW5faGV4LCAgICAgICAgTUVUSF9PLCBoZXhfZG9jfSwKLSAgICB7ImlkIiwgICAgICAgICAgICAgIGJ1aWx0aW5faWQsICAgICAgICAgTUVUSF9PLCBpZF9kb2N9LAotICAgIHsiaW5wdXQiLCAgICAgICAgICAgYnVpbHRpbl9pbnB1dCwgICAgICBNRVRIX1ZBUkFSR1MsIGlucHV0X2RvY30sCi0gICAgeyJpc2luc3RhbmNlIiwgIGJ1aWx0aW5faXNpbnN0YW5jZSwgTUVUSF9WQVJBUkdTLCBpc2luc3RhbmNlX2RvY30sCi0gICAgeyJpc3N1YmNsYXNzIiwgIGJ1aWx0aW5faXNzdWJjbGFzcywgTUVUSF9WQVJBUkdTLCBpc3N1YmNsYXNzX2RvY30sCisgICAgQlVJTFRJTl9HTE9CQUxTX01FVEhPRERFRgorICAgIEJVSUxUSU5fSEFTQVRUUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0hBU0hfTUVUSE9EREVGCisgICAgQlVJTFRJTl9IRVhfTUVUSE9EREVGCisgICAgQlVJTFRJTl9JRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lOUFVUX01FVEhPRERFRgorICAgIEJVSUxUSU5fSVNJTlNUQU5DRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lTU1VCQ0xBU1NfTUVUSE9EREVGCiAgICAgeyJpdGVyIiwgICAgICAgICAgICBidWlsdGluX2l0ZXIsICAgICAgIE1FVEhfVkFSQVJHUywgaXRlcl9kb2N9LAotICAgIHsibGVuIiwgICAgICAgICAgICAgYnVpbHRpbl9sZW4sICAgICAgICBNRVRIX08sIGxlbl9kb2N9LAotICAgIHsibG9jYWxzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbG9jYWxzLCAgICAgTUVUSF9OT0FSR1MsIGxvY2Fsc19kb2N9LAorICAgIEJVSUxUSU5fTEVOX01FVEhPRERFRgorICAgIEJVSUxUSU5fTE9DQUxTX01FVEhPRERFRgogICAgIHsibWF4IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbWF4LCAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgbWF4X2RvY30sCiAgICAgeyJtaW4iLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9taW4sICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBtaW5fZG9jfSwKICAgICB7Im5leHQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX25leHQsICAgICAgIE1FVEhfVkFSQVJHUywgbmV4dF9kb2N9LAotICAgIHsib2N0IiwgICAgICAgICAgICAgYnVpbHRpbl9vY3QsICAgICAgICBNRVRIX08sIG9jdF9kb2N9LAotICAgIHsib3JkIiwgICAgICAgICAgICAgYnVpbHRpbl9vcmQsICAgICAgICBNRVRIX08sIG9yZF9kb2N9LAotICAgIHsicG93IiwgICAgICAgICAgICAgYnVpbHRpbl9wb3csICAgICAgICBNRVRIX1ZBUkFSR1MsIHBvd19kb2N9LAorICAgIEJVSUxUSU5fT0NUX01FVEhPRERFRgorICAgIEJVSUxUSU5fT1JEX01FVEhPRERFRgorICAgIEJVSUxUSU5fUE9XX01FVEhPRERFRgogICAgIHsicHJpbnQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcHJpbnQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcHJpbnRfZG9jfSwKLSAgICB7InJlcHIiLCAgICAgICAgICAgIGJ1aWx0aW5fcmVwciwgICAgICAgTUVUSF9PLCByZXByX2RvY30sCisgICAgQlVJTFRJTl9SRVBSX01FVEhPRERFRgogICAgIHsicm91bmQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcm91bmQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcm91bmRfZG9jfSwKLSAgICB7InNldGF0dHIiLCAgICAgICAgIGJ1aWx0aW5fc2V0YXR0ciwgICAgTUVUSF9WQVJBUkdTLCBzZXRhdHRyX2RvY30sCi0gICAgeyJzb3J0ZWQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zb3J0ZWQsICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzb3J0ZWRfZG9jfSwKLSAgICB7InN1bSIsICAgICAgICAgICAgIGJ1aWx0aW5fc3VtLCAgICAgICAgTUVUSF9WQVJBUkdTLCBzdW1fZG9jfSwKKyAgICBCVUlMVElOX1NFVEFUVFJfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TVU1fTUVUSE9EREVGCiAgICAgeyJ2YXJzIiwgICAgICAgICAgICBidWlsdGluX3ZhcnMsICAgICAgIE1FVEhfVkFSQVJHUywgdmFyc19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCAyNzUyMjk4Li44ZDJjZGMyIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTIsOCArMTIsMTAgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogI2luY2x1ZGUgImNvZGUuaCIKKyNpbmNsdWRlICJkaWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC03MzUsNyArNzM3LDcgQEAKICAgICBpZiAodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggPiByZWN1cnNpb25fbGltaXQpIHsKICAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKICAgICAgICAgdHN0YXRlLT5vdmVyZmxvd2VkID0gMTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1JlY3Vyc2lvbkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkJXMiLAogICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xMTg5LDcgKzExOTEsNyBAQAogICAgIGYtPmZfc3RhY2t0b3AgPSBOVUxMOyAgICAgICAvKiByZW1haW5zIE5VTEwgdW5sZXNzIHlpZWxkIHN1c3BlbmRzIGZyYW1lICovCiAgICAgZi0+Zl9leGVjdXRpbmcgPSAxOwogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xNTA0LDYgKzE1MDYsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQklOQVJZX01BVFJJWF9NVUxUSVBMWSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQklOQVJZX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xNjk0LDYgKzE3MDgsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChJTlBMQUNFX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xOTAwLDExICsxOTI2LDExNSBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChHRVRfQUlURVIpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmF3YWl0YWJsZSA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gVE9QKCk7CisgICAgICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKG9iaik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9haXRlcjsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaXRlciA9ICgqZ2V0dGVyKShvYmopOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgU0VUX1RPUChOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gb2JqZWN0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19haXRlcl9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihpdGVyKTsKKyAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFNFVF9UT1AoTlVMTCk7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYWl0ZXJfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKworICAgICAgICAgICAgU0VUX1RPUChhd2FpdGFibGUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChHRVRfQU5FWFQpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKm5leHRfaXRlciA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYXdhaXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphaXRlciA9IFRPUCgpOworICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShhaXRlcik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOworICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKworICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsgLyogRXZlbiBpZiBpdCdzIE5VTEwgKi8KKworICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNpZXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSkgeworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjaWV2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2lldmVyKSkgewogICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2lldmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CkBAIC0yMzU1LDYgKzI0ODUsNDMgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX1RVUExFX1VOUEFDSywgX2J1aWxkX2xpc3RfdW5wYWNrKQorICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spCisgICAgICAgIF9idWlsZF9saXN0X3VucGFjazogeworICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLOworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9uZV92YWw7CisKKyAgICAgICAgICAgICAgICBub25lX3ZhbCA9IF9QeUxpc3RfRXh0ZW5kKChQeUxpc3RPYmplY3QgKilzdW0sIFBFRUsoaSkpOworICAgICAgICAgICAgICAgIGlmIChub25lX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobm9uZV92YWwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udmVydF90b190dXBsZSkgeworICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IFB5TGlzdF9Bc1R1cGxlKHN1bSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgaWYgKHJldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gc3VtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgUFVTSChyZXR1cm5fdmFsdWUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChCVUlMRF9TRVQpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXQgPSBQeVNldF9OZXcoTlVMTCk7CiAgICAgICAgICAgICBpbnQgZXJyID0gMDsKQEAgLTIzNzQsMjYgKzI1NDEsMTI3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NFVF9VTlBBQ0spIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5U2V0X05ldyhOVUxMKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlTZXRfVXBkYXRlKHN1bSwgUEVFSyhpKSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfTUFQKSB7CisgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKICAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQRUVLKDIqaSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUEVFSygyKmkgLSAxKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChtYXApOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9NQVApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBUT1AoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFNFQ09ORCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IFRISVJEKCk7Ci0gICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgU1RBQ0tBREooLTIpOwotICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG1hcCkpOwotICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0obWFwLCBrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQorICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogeworICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKKyAgICAgICAgICAgIGludCBudW1fbWFwczsKKyAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbjsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgeworICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGkgPSBudW1fbWFwczsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVNldF9OZXh0RW50cnkoaW50ZXJzZWN0aW9uLCAmaWR4LCAma2V5LCAmaGFzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKHN1bSwgYXJnKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMjY1NSw2ICsyOTIzLDM0IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEdFVF9ZSUVMRF9GUk9NX0lURVIpIHsKKyAgICAgICAgICAgIC8qIGJlZm9yZTogW29ial07IGFmdGVyIFtnZXRpdGVyKG9iaildICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgICAgIC8qIGBpdGVyYWJsZWAgaXMgYSBjb3JvdXRpbmUgKi8KKyAgICAgICAgICAgICAgICBpZiAoIShjby0+Y29fZmxhZ3MgJiAoQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYW5kIGl0IGlzIHVzZWQgaW4gYSAneWllbGQgZnJvbScgZXhwcmVzc2lvbiBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ3VsYXIgZ2VuZXJhdG9yLiAqLworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCAneWllbGQgZnJvbScgYSBjb3JvdXRpbmUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBhIG5vbi1jb3JvdXRpbmUgZ2VuZXJhdG9yIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5R2VuX0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7CisgICAgICAgICAgICAgICAgLyogYGl0ZXJhYmxlYCBpcyBub3QgYSBnZW5lcmF0b3IuICovCisgICAgICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhGT1JfSVRFUik7CiAgICAgICAgIFRBUkdFVChGT1JfSVRFUikgewogICAgICAgICAgICAgLyogYmVmb3JlOiBbaXRlcl07IGFmdGVyOiBbaXRlciwgaXRlcigpXSAqb3IqIFtdICovCkBAIC0yNzA3LDYgKzMwMDMsMzkgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQkVGT1JFX0FTWU5DX1dJVEgpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYWV4aXRfXyk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2FlbnRlcl9fKTsKKworICAgICAgICAgICAgUHlPYmplY3QgKm1nciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmV4aXQgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fYWV4aXRfXyksCisgICAgICAgICAgICAgICAgICAgICAqZW50ZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgaWYgKGV4aXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgU0VUX1RPUChleGl0KTsKKyAgICAgICAgICAgIGVudGVyID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2FlbnRlcl9fKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtZ3IpOworICAgICAgICAgICAgaWYgKGVudGVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZW50ZXIsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKGVudGVyKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChTRVRVUF9BU1lOQ19XSVRIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICAvKiBTZXR1cCB0aGUgZmluYWxseSBibG9jayBiZWZvcmUgcHVzaGluZyB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICBvZiBfX2FlbnRlcl9fIG9uIHRoZSBzdGFjay4gKi8KKyAgICAgICAgICAgIFB5RnJhbWVfQmxvY2tTZXR1cChmLCBTRVRVUF9GSU5BTExZLCBJTlNUUl9PRkZTRVQoKSArIG9wYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUNLX0xFVkVMKCkpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwpAQCAtMjczMyw3ICszMDYyLDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoV0lUSF9DTEVBTlVQKSB7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfU1RBUlQpIHsKICAgICAgICAgICAgIC8qIEF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGFyZSAxLTYgdmFsdWVzIGluZGljYXRpbmcKICAgICAgICAgICAgICAgIGhvdy93aHkgd2UgZW50ZXJlZCB0aGUgZmluYWxseSBjbGF1c2U6CiAgICAgICAgICAgICAgICAtIFRPUCA9IE5vbmUKQEAgLTI3NjEsNyArMzA5MCw2IEBACiAKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGl0X2Z1bmM7CiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gVE9QKCksICp2YWwgPSBQeV9Ob25lLCAqdGIgPSBQeV9Ob25lLCAqcmVzOwotICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIGlmIChleGMgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgICh2b2lkKVBPUCgpOwogICAgICAgICAgICAgICAgIGV4aXRfZnVuYyA9IFRPUCgpOwpAQCAtMjgxMSwxMSArMzEzOSwyNiBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyAgICAgICAgICAgIFB5X0lOQ1JFRihleGMpOyAvKiBEdXBsaWNhdGluZyB0aGUgZXhjZXB0aW9uIG9uIHRoZSBzdGFjayAqLworICAgICAgICAgICAgUFVTSChleGMpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgUFJFRElDVChXSVRIX0NMRUFOVVBfRklOSVNIKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBQUkVESUNURUQoV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfRklOSVNIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gUE9QKCk7CisgICAgICAgICAgICBpbnQgZXJyOworCiAgICAgICAgICAgICBpZiAoZXhjICE9IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXJyID0gMDsKKwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKIAogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMwMjYsNiArMzM2OSw3IEBACiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCisKICNpZiBVU0VfQ09NUFVURURfR09UT1MKICAgICAgICAgX3Vua25vd25fb3Bjb2RlOgogI2VuZGlmCkBAIC0zMTY4LDExICszNTEyLDEwIEBACiAgICAgaWYgKHdoeSAhPSBXSFlfUkVUVVJOKQogICAgICAgICByZXR2YWwgPSBOVUxMOwogCi0gICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHx8IChyZXR2YWwgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CisgICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAKIGZhc3RfeWllbGQ6Ci0gICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgewogCiAgICAgICAgIC8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmxvY2sgaXMgdG8gcHV0IGFzaWRlIHRoZSBnZW5lcmF0b3IncyBleGNlcHRpb24KICAgICAgICAgICAgc3RhdGUgYW5kIHJlc3RvcmUgdGhhdCBvZiB0aGUgY2FsbGluZyBmcmFtZS4gSWYgdGhlIGN1cnJlbnQKQEAgLTMyMzAsNyArMzU3Myw3IEBACiAgICAgZi0+Zl9leGVjdXRpbmcgPSAwOwogICAgIHRzdGF0ZS0+ZnJhbWUgPSBmLT5mX2JhY2s7CiAKLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChOVUxMLCByZXR2YWwsICJQeUV2YWxfRXZhbEZyYW1lRXgiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzODcsMTAgKzM3MzAsMTEgQEAKICAgIFB5RXZhbF9FdmFsRnJhbWUoKSBhbmQgUHlFdmFsX0V2YWxDb2RlRXgoKSB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdAogICAgdGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudHMgaW4gTWlzYy9nZGJpbml0IChweXN0YWNrIGFuZCBweXN0YWNrdikuICovCiAKLVB5T2JqZWN0ICoKLVB5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShQeU9iamVjdCAqX2NvLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKICAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBpbnQgYXJnY291bnQsIFB5T2JqZWN0ICoqa3dzLCBpbnQga3djb3VudCwKLSAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwpAQCAtMzU3Myw3ICszOTE3LDIxIEBACiAgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKICAgICB9CiAKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKSB7CisgICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpnZW47CisgICAgICAgIFB5T2JqZWN0ICpjb3JvX3dyYXBwZXIgPSB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOworICAgICAgICBpbnQgaXNfY29ybyA9IGNvLT5jb19mbGFncyAmIENPX0NPUk9VVElORTsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyKSB7CisgICAgICAgICAgICBhc3NlcnQoY29yb193cmFwcGVyICE9IE5VTEwpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIgJS4yMDBSIGF0dGVtcHRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHJlY3Vyc2l2ZWx5IHdyYXAgJS4yMDBSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3dyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKICAgICAgICAgLyogRG9uJ3QgbmVlZCB0byBrZWVwIHRoZSByZWZlcmVuY2UgdG8gZl9iYWNrLCBpdCB3aWxsIGJlIHNldAogICAgICAgICAgKiB3aGVuIHRoZSBnZW5lcmF0b3IgaXMgcmVzdW1lZC4gKi8KICAgICAgICAgUHlfQ0xFQVIoZi0+Zl9iYWNrKTsKQEAgLTM1ODIsNyArMzk0MCwyMyBAQAogCiAgICAgICAgIC8qIENyZWF0ZSBhIG5ldyBnZW5lcmF0b3IgdGhhdCBvd25zIHRoZSByZWFkeSB0byBydW4gZnJhbWUKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5R2VuX05ldyhmKTsKKyAgICAgICAgaWYgKGlzX2Nvcm8pIHsKKyAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ2VuID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiBjb3JvX3dyYXBwZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKndyYXBwZWQ7CisgICAgICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMTsKKyAgICAgICAgICAgIHdyYXBwZWQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY29yb193cmFwcGVyLCAiTiIsIGdlbik7CisgICAgICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMDsKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVkOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdlbjsKICAgICB9CiAKICAgICByZXR2YWwgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKQEAgLTM2MDEsNiArMzk3NSwxNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShfY28sIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LCBrd3MsIGt3Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZzLCBkZWZjb3VudCwga3dkZWZzLCBjbG9zdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKmlkKQpAQCAtMzc5MSw5ICs0MTc1LDE3IEBACiAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKICAgICAgICAgICAgIC8qIEl0ZXJhdG9yIGRvbmUsIHZpYSBlcnJvciBvciBleGhhdXN0aW9uLiAqLwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJuZWVkIG1vcmUgdGhhbiAlZCB2YWx1ZSVzIHRvIHVucGFjayIsCi0gICAgICAgICAgICAgICAgICAgIGksIGkgPT0gMSA/ICIiIDogInMiKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJnY250YWZ0ZXIgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAlZCwgZ290ICVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdjbnQsIGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIoZXhwZWN0ZWQgYXQgbGVhc3QgJWQsIGdvdCAlZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnY250ICsgYXJnY250YWZ0ZXIsIGkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gRXJyb3I7CiAgICAgICAgIH0KQEAgLTM4MTAsOCArNDIwMiw5IEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAidG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAiCi0gICAgICAgICAgICAgICAgICAgICAiKGV4cGVjdGVkICVkKSIsIGFyZ2NudCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkICVkKSIsCisgICAgICAgICAgICBhcmdjbnQpOwogICAgICAgICBnb3RvIEVycm9yOwogICAgIH0KIApAQCAtMzgyMyw4ICs0MjE2LDkgQEAKIAogICAgIGxsID0gUHlMaXN0X0dFVF9TSVpFKGwpOwogICAgIGlmIChsbCA8IGFyZ2NudGFmdGVyKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAibmVlZCBtb3JlIHRoYW4gJXpkIHZhbHVlcyB0byB1bnBhY2siLAotICAgICAgICAgICAgICAgICAgICAgYXJnY250ICsgbGwpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0ICVkLCBnb3QgJXpkKSIsCisgICAgICAgICAgICBhcmdjbnQgKyBhcmdjbnRhZnRlciwgYXJnY250ICsgbGwpOwogICAgICAgICBnb3RvIEVycm9yOwogICAgIH0KIApAQCAtNDAwOCw2ICs0NDAyLDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAodHN0YXRlLT5jX3Byb2ZpbGVmdW5jICE9IE5VTEwpKTsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICp3cmFwcGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKKworICAgIFB5X1hJTkNSRUYod3JhcHBlcik7CisgICAgdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlciA9IHdyYXBwZXI7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0Q29yb3V0aW5lV3JhcHBlcih2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7Cit9CisKIFB5T2JqZWN0ICoKIFB5RXZhbF9HZXRCdWlsdGlucyh2b2lkKQogewpAQCAtNDA4Niw4ICs0NDk4LDggQEAKIAogI2lmZGVmIFB5X0RFQlVHCiAgICAgLyogUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24KLSAgICAgICBzZXQsIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KQotICAgICAgIGFuZCBzbyB0aGUgY2FsbGVyIGxvb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgICAgc2V0LiBJdCByYWlzZXMgYSBuZXcgZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgb3IgaWYKKyAgICAgICBQeVR1cGxlX05ldygpIGZhaWxzLCBhbmQgc28gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBpcyBsb3N0LiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAjZW5kaWYKIApAQCAtNDExNCw4ICs0NTI2LDYgQEAKICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZywga3cpOwogICAgIFB5X0RFQ1JFRihhcmcpOwogCi0gICAgYXNzZXJ0KChyZXN1bHQgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgfHwgKHJlc3VsdCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MjE4LDExICs0NjI4LDE1IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwogICAgICAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MgJiYgbmEgPT0gMCkgewogICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLE5VTEwpKTsKKworICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTUVUSF9PICYmIG5hID09IDEpIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwogICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLGFyZykpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOworCisgICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZXJyX2FyZ3MoZnVuYywgZmxhZ3MsIG5hKTsKQEAgLTQyNDIsNyArNDY1Niw4IEBACiAgICAgICAgICAgICAgICAgeCA9IE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5TWV0aG9kX0NoZWNrKGZ1bmMpICYmIFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIG9wdGltaXplIGFjY2VzcyB0byBib3VuZCBtZXRob2RzICovCiAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwpAQCAtNDI2NCw5ICs0Njc5LDkgQEAKICAgICAgICAgICAgIHggPSBkb19jYWxsKGZ1bmMsIHBwX3N0YWNrLCBuYSwgbmspOwogICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworCisgICAgICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICB9Ci0gICAgYXNzZXJ0KCh4ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8ICh4ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwogCiAgICAgLyogQ2xlYXIgdGhlIHN0YWNrIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBBbHNvIHJlbW92ZXMKICAgICAgICB0aGUgYXJndW1lbnRzIGluIGNhc2UgdGhleSB3ZXJlbid0IGNvbnN1bWVkIGFscmVhZHkKQEAgLTQyNzgsOCArNDY5Myw3IEBACiAgICAgICAgIFBDQUxMKFBDQUxMX1BPUCk7CiAgICAgfQogCi0gICAgYXNzZXJ0KCh4ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8ICh4ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOworICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICByZXR1cm4geDsKIH0KIApAQCAtNDI5OSw2ICs0NzEzLDggQEAKICAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmFyZ2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9ERUZBVUxUUyhmdW5jKTsKICAgICBQeU9iamVjdCAqa3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKICAgICBQeU9iamVjdCAqKmQgPSBOVUxMOwogICAgIGludCBuZCA9IDA7CiAKQEAgLTQzNDEsMTAgKzQ3NTcsMTEgQEAKICAgICAgICAgZCA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOwogICAgICAgICBuZCA9IFB5X1NJWkUoYXJnZGVmcyk7CiAgICAgfQotICAgIHJldHVybiBQeUV2YWxfRXZhbENvZGVFeCgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpwcF9zdGFjayktMipuaywgbmssIGQsIG5kLCBrd2RlZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYykpOworICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKU5VTEwsICgqcHBfc3RhY2spLW4sIG5hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpwcF9zdGFjayktMipuaywgbmssIGQsIG5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgcXVhbG5hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUwOCw2ICs0OTI1LDEyIEBACiAgICAgICAgICAgICBrd2RpY3QgPSBkOwogICAgICAgICB9CiAgICAgfQorICAgIGlmIChuayA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhrd2RpY3QsIG5rLCBwcF9zdGFjaywgZnVuYyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKKyAgICB9CisKICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKSB7CiAgICAgICAgIHN0YXJhcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7CiAgICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGFyYXJnKSkgewpAQCAtNDUyOSwxMSArNDk1Miw2IEBACiAgICAgICAgIH0KICAgICAgICAgbnN0YXIgPSBQeVR1cGxlX0dFVF9TSVpFKHN0YXJhcmcpOwogICAgIH0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgfQogICAgIGNhbGxhcmdzID0gdXBkYXRlX3N0YXJfYXJncyhuYSwgbnN0YXIsIHN0YXJhcmcsIHBwX3N0YWNrKTsKICAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwpAQCAtNDU2MywxMiArNDk4MSwxMCBAQAogICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwogICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKICAgICBQeV9YREVDUkVGKHN0YXJhcmcpOwotICAgIGFzc2VydCgocmVzdWx0ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8IChyZXN1bHQgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUludCBvciBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCisvKiBFeHRyYWN0IGEgc2xpY2UgaW5kZXggZnJvbSBhIFB5TG9uZyBvciBhbiBvYmplY3Qgd2l0aCB0aGUKICAgIG5iX2luZGV4IHNsb3QgZGVmaW5lZCwgYW5kIHN0b3JlIGluICpwaS4KICAgIFNpbGVudGx5IHJlZHVjZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gUFlfU1NJWkVfVF9NQVggdG8gUFlfU1NJWkVfVF9NQVgsCiAgICBhbmQgc2lsZW50bHkgYm9vc3QgdmFsdWVzIGxlc3MgdGhhbiAtUFlfU1NJWkVfVF9NQVgtMSB0byAtUFlfU1NJWkVfVF9NQVgtMS4KQEAgLTQ2NTgsMTIgKzUwNzQsMzUgQEAKIGltcG9ydF9mcm9tKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqeDsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgUHlPYmplY3QgKmZ1bGxtb2RuYW1lLCAqcGtnbmFtZTsKIAogICAgIHggPSBQeU9iamVjdF9HZXRBdHRyKHYsIG5hbWUpOwotICAgIGlmICh4ID09IE5VTEwgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLCAiY2Fubm90IGltcG9ydCBuYW1lICVSIiwgbmFtZSk7CisgICAgaWYgKHggIT0gTlVMTCB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIHJldHVybiB4OworICAgIC8qIElzc3VlICMxNzYzNjogaW4gY2FzZSB0aGlzIGZhaWxlZCBiZWNhdXNlIG9mIGEgY2lyY3VsYXIgcmVsYXRpdmUKKyAgICAgICBpbXBvcnQsIHRyeSB0byBmYWxsYmFjayBvbiByZWFkaW5nIHRoZSBtb2R1bGUgZGlyZWN0bHkgZnJvbQorICAgICAgIHN5cy5tb2R1bGVzLiAqLworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcGtnbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19uYW1lX18pOworICAgIGlmIChwa2duYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgZnVsbG1vZG5hbWUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUuJVUiLCBwa2duYW1lLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYocGtnbmFtZSk7CisgICAgaWYgKGZ1bGxtb2RuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHggPSBQeURpY3RfR2V0SXRlbShQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIGZ1bGxtb2RuYW1lKTsKKyAgICBQeV9ERUNSRUYoZnVsbG1vZG5hbWUpOworICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfSU5DUkVGKHgpOwogICAgIHJldHVybiB4OworIGVycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwgImNhbm5vdCBpbXBvcnQgbmFtZSAlUiIsIG5hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggMjcwMmQ1Yy4uYWFmY2JjMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtMzEsNyArMzEsNyBAQAogICAgICB2YXJpYWJsZSAoZ2lsX2Ryb3BfcmVxdWVzdCkgaXMgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLCB3aGljaCBpcyBjaGVja2VkCiAgICAgIGF0IGV2ZXJ5IHR1cm4gb2YgdGhlIGV2YWwgbG9vcC4gVGhhdCB2YXJpYWJsZSBpcyBzZXQgYWZ0ZXIgYSB3YWl0IG9mCiAgICAgIGBpbnRlcnZhbGAgbWljcm9zZWNvbmRzIG9uIGBnaWxfY29uZGAgaGFzIHRpbWVkIG91dC4KLSAgICAgIAorCiAgICAgICBbQWN0dWFsbHksIGFub3RoZXIgdm9sYXRpbGUgYm9vbGVhbiB2YXJpYWJsZSAoZXZhbF9icmVha2VyKSBpcyB1c2VkCiAgICAgICAgd2hpY2ggT1JzIHNldmVyYWwgY29uZGl0aW9ucyBpbnRvIG9uZS4gVm9sYXRpbGUgYm9vbGVhbnMgYXJlCiAgICAgICAgc3VmZmljaWVudCBhcyBpbnRlci10aHJlYWQgc2lnbmFsbGluZyBtZWFucyBzaW5jZSBQeXRob24gaXMgcnVuCkBAIC00MSw3ICs0MSw3IEBACiAgICAgIHRpbWUgKGBpbnRlcnZhbGAgbWljcm9zZWNvbmRzKSBiZWZvcmUgc2V0dGluZyBnaWxfZHJvcF9yZXF1ZXN0LiBUaGlzCiAgICAgIGVuY291cmFnZXMgYSBkZWZpbmVkIHN3aXRjaGluZyBwZXJpb2QsIGJ1dCBkb2Vzbid0IGVuZm9yY2UgaXQgc2luY2UKICAgICAgb3Bjb2RlcyBjYW4gdGFrZSBhbiBhcmJpdHJhcnkgdGltZSB0byBleGVjdXRlLgotIAorCiAgICAgIFRoZSBgaW50ZXJ2YWxgIHZhbHVlIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHVzZXIgdG8gcmVhZCBhbmQgbW9kaWZ5CiAgICAgIHVzaW5nIHRoZSBQeXRob24gQVBJIGBzeXMue2dldCxzZXR9c3dpdGNoaW50ZXJ2YWwoKWAuCiAKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgdGhlIHZhbHVlIG9mIGdpbF9sYXN0X2hvbGRlciBpcyBjaGFuZ2VkIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gaXRzCiAgICAgIG93biB0aHJlYWQgc3RhdGUgcG9pbnRlciwgaW5kaWNhdGluZyB0aGF0IGFub3RoZXIgdGhyZWFkIHdhcyBhYmxlIHRvCiAgICAgIHRha2UgdGhlIEdJTC4KLSAKKwogICAgICBUaGlzIGlzIG1lYW50IHRvIHByb2hpYml0IHRoZSBsYXRlbmN5LWFkdmVyc2UgYmVoYXZpb3VyIG9uIG11bHRpLWNvcmUKICAgICAgbWFjaGluZXMgd2hlcmUgb25lIHRocmVhZCB3b3VsZCBzcGVjdWxhdGl2ZWx5IHJlbGVhc2UgdGhlIEdJTCwgYnV0IHN0aWxsCiAgICAgIHJ1biBhbmQgZW5kIHVwIGJlaW5nIHRoZSBmaXJzdCB0byByZS1hY3F1aXJlIGl0LCBtYWtpbmcgdGhlICJ0aW1lc2xpY2VzIgpAQCAtMTg2LDEyICsxODYsMTIgQEAKICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sb2NrZWQsIDApOwogICAgIENPTkRfU0lHTkFMKGdpbF9jb25kKTsKICAgICBNVVRFWF9VTkxPQ0soZ2lsX211dGV4KTsKLSAgICAKKwogI2lmZGVmIEZPUkNFX1NXSVRDSElORwogICAgIGlmIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2Ryb3BfcmVxdWVzdCkgJiYgdHN0YXRlICE9IE5VTEwpIHsKICAgICAgICAgTVVURVhfTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgICAgICAvKiBOb3Qgc3dpdGNoZWQgeWV0ID0+IHdhaXQgKi8KLSAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgeworICAgICAgICBpZiAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgewogICAgICAgICBSRVNFVF9HSUxfRFJPUF9SRVFVRVNUKCk7CiAgICAgICAgICAgICAvKiBOT1RFOiBpZiBDT05EX1dBSVQgZG9lcyBub3QgYXRvbWljYWxseSBzdGFydCB3YWl0aW5nIHdoZW4KICAgICAgICAgICAgICAgIHJlbGVhc2luZyB0aGUgbXV0ZXgsIGFub3RoZXIgdGhyZWFkIGNhbiBydW4gdGhyb3VnaCwgdGFrZQpAQCAtMjE1LDcgKzIxNSw3IEBACiAKICAgICBpZiAoIV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbG9ja2VkKSkKICAgICAgICAgZ290byBfcmVhZHk7Ci0gICAgCisKICAgICB3aGlsZSAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sb2NrZWQpKSB7CiAgICAgICAgIGludCB0aW1lZF9vdXQgPSAwOwogICAgICAgICB1bnNpZ25lZCBsb25nIHNhdmVkX3N3aXRjaG51bTsKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xvY2tlZCwgMSk7CiAgICAgX1B5X0FOTk9UQVRFX1JXTE9DS19BQ1FVSVJFRCgmZ2lsX2xvY2tlZCwgLyppc193cml0ZT0qLzEpOwogCi0gICAgaWYgKHRzdGF0ZSAhPSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSkgeworICAgIGlmICh0c3RhdGUgIT0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpKSB7CiAgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCB0c3RhdGUpOwogICAgICAgICArK2dpbF9zd2l0Y2hfbnVtYmVyOwogICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQAogICAgIGlmICh0c3RhdGUtPmFzeW5jX2V4YyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeUV2YWxfU2lnbmFsQXN5bmNFeGMoKTsKICAgICB9Ci0gICAgCisKICAgICBNVVRFWF9VTkxPQ0soZ2lsX211dGV4KTsKICAgICBlcnJubyA9IGVycjsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2OTE0OAotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCkBAIC0wLDAgKzEsNjYzIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoYnVpbHRpbl9hYnNfX2RvY19fLAorImFicygkbW9kdWxlLCB4LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9BQlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImFicyIsIChQeUNGdW5jdGlvbilidWlsdGluX2FicywgTUVUSF9PLCBidWlsdGluX2Fic19fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9hbGxfX2RvY19fLAorImFsbCgkbW9kdWxlLCBpdGVyYWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYWxsIHZhbHVlcyB4IGluIHRoZSBpdGVyYWJsZS5cbiIKKyJcbiIKKyJJZiB0aGUgaXRlcmFibGUgaXMgZW1wdHksIHJldHVybiBUcnVlLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJhbGwiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9hbGwsIE1FVEhfTywgYnVpbHRpbl9hbGxfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fYW55X19kb2NfXywKKyJhbnkoJG1vZHVsZSwgaXRlcmFibGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFueSB4IGluIHRoZSBpdGVyYWJsZS5cbiIKKyJcbiIKKyJJZiB0aGUgaXRlcmFibGUgaXMgZW1wdHksIHJldHVybiBGYWxzZS4iKTsKKworI2RlZmluZSBCVUlMVElOX0FOWV9NRVRIT0RERUYgICAgXAorICAgIHsiYW55IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYW55LCBNRVRIX08sIGJ1aWx0aW5fYW55X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2FzY2lpX19kb2NfXywKKyJhc2NpaSgkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYW4gQVNDSUktb25seSByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuXG4iCisiXG4iCisiQXMgcmVwcigpLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhblxuIgorIm9iamVjdCwgYnV0IGVzY2FwZSB0aGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieVxuIgorInJlcHIoKSB1c2luZyBcXFxceCwgXFxcXHUgb3IgXFxcXFUgZXNjYXBlcy4gVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhclxuIgorInRvIHRoYXQgcmV0dXJuZWQgYnkgcmVwcigpIGluIFB5dGhvbiAyLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQVNDSUlfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzY2lpIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYXNjaWksIE1FVEhfTywgYnVpbHRpbl9hc2NpaV9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9iaW5fX2RvY19fLAorImJpbigkbW9kdWxlLCBudW1iZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuIgorIlxuIgorIiAgID4+PiBiaW4oMjc5NjIwMilcbiIKKyIgICBcJzBiMTAxMDEwMTAxMDEwMTAxMDEwMTAxMFwnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9CSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImJpbiIsIChQeUNGdW5jdGlvbilidWlsdGluX2JpbiwgTUVUSF9PLCBidWlsdGluX2Jpbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9jYWxsYWJsZV9fZG9jX18sCisiY2FsbGFibGUoJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSAoaS5lLiwgc29tZSBraW5kIG9mIGZ1bmN0aW9uKS5cbiIKKyJcbiIKKyJOb3RlIHRoYXQgY2xhc3NlcyBhcmUgY2FsbGFibGUsIGFzIGFyZSBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aXRoIGFcbiIKKyJfX2NhbGxfXygpIG1ldGhvZC4iKTsKKworI2RlZmluZSBCVUlMVElOX0NBTExBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJjYWxsYWJsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NhbGxhYmxlLCBNRVRIX08sIGJ1aWx0aW5fY2FsbGFibGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZm9ybWF0X19kb2NfXywKKyJmb3JtYXQoJG1vZHVsZSwgdmFsdWUsIGZvcm1hdF9zcGVjPVwnXCcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdmFsdWUuX19mb3JtYXRfXyhmb3JtYXRfc3BlYylcbiIKKyJcbiIKKyJmb3JtYXRfc3BlYyBkZWZhdWx0cyB0byB0aGUgZW1wdHkgc3RyaW5nIik7CisKKyNkZWZpbmUgQlVJTFRJTl9GT1JNQVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImZvcm1hdCIsIChQeUNGdW5jdGlvbilidWlsdGluX2Zvcm1hdCwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2Zvcm1hdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9mb3JtYXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Zvcm1hdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVOmZvcm1hdCIsCisgICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZm9ybWF0X2ltcGwobW9kdWxlLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2Nocl9fZG9jX18sCisiY2hyKCRtb2R1bGUsIGksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9DSFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNociIsIChQeUNGdW5jdGlvbilidWlsdGluX2NociwgTUVUSF9PLCBidWlsdGluX2Nocl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9jaHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2NocihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY2hyX2ltcGwobW9kdWxlLCBpKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9jb21waWxlX19kb2NfXywKKyJjb21waWxlKCRtb2R1bGUsIC8sIHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzPTAsXG4iCisiICAgICAgICBkb250X2luaGVyaXQ9RmFsc2UsIG9wdGltaXplPS0xKVxuIgorIi0tXG4iCisiXG4iCisiQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuXG4iCisiXG4iCisiVGhlIHNvdXJjZSBjb2RlIG1heSByZXByZXNlbnQgYSBQeXRob24gbW9kdWxlLCBzdGF0ZW1lbnQgb3IgZXhwcmVzc2lvbi5cbiIKKyJUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy5cbiIKKyJUaGUgbW9kZSBtdXN0IGJlIFwnZXhlY1wnIHRvIGNvbXBpbGUgYSBtb2R1bGUsIFwnc2luZ2xlXCcgdG8gY29tcGlsZSBhXG4iCisic2luZ2xlIChpbnRlcmFjdGl2ZSkgc3RhdGVtZW50LCBvciBcJ2V2YWxcJyB0byBjb21waWxlIGFuIGV4cHJlc3Npb24uXG4iCisiVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2VcbiIKKyJ0aGUgY29tcGlsYXRpb24gb2YgdGhlIGNvZGUuXG4iCisiVGhlIGRvbnRfaW5oZXJpdCBhcmd1bWVudCwgaWYgdHJ1ZSwgc3RvcHMgdGhlIGNvbXBpbGF0aW9uIGluaGVyaXRpbmdcbiIKKyJ0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmdcbiIKKyJjb21waWxlOyBpZiBhYnNlbnQgb3IgZmFsc2UgdGhlc2Ugc3RhdGVtZW50cyBkbyBpbmZsdWVuY2UgdGhlIGNvbXBpbGF0aW9uLFxuIgorImluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKKworI2RlZmluZSBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2NvbXBpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICBpbnQgZG9udF9pbmhlcml0LCBpbnQgb3B0aW1pemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9jb21waWxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNvdXJjZTsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisgICAgY29uc3QgY2hhciAqbW9kZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCBkb250X2luaGVyaXQgPSAwOworICAgIGludCBvcHRpbWl6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jb21waWxlX2ltcGwobW9kdWxlLCBzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncywgZG9udF9pbmhlcml0LCBvcHRpbWl6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZGl2bW9kX19kb2NfXywKKyJkaXZtb2QoJG1vZHVsZSwgeCwgeSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4iKTsKKworI2RlZmluZSBCVUlMVElOX0RJVk1PRF9NRVRIT0RERUYgICAgXAorICAgIHsiZGl2bW9kIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZGl2bW9kLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZGl2bW9kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Rpdm1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Rpdm1vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRpdm1vZCIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZ4LCAmeSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Rpdm1vZF9pbXBsKG1vZHVsZSwgeCwgeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZXZhbF9fZG9jX18sCisiZXZhbCgkbW9kdWxlLCBzb3VyY2UsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFdmFsdWF0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJcbiIKKyJUaGUgc291cmNlIG1heSBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBQeXRob24gZXhwcmVzc2lvblxuIgorIm9yIGEgY29kZSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgY29tcGlsZSgpLlxuIgorIlRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLFxuIgorImRlZmF1bHRpbmcgdG8gdGhlIGN1cnJlbnQgZ2xvYmFscyBhbmQgbG9jYWxzLlxuIgorIklmIG9ubHkgZ2xvYmFscyBpcyBnaXZlbiwgbG9jYWxzIGRlZmF1bHRzIHRvIGl0LiIpOworCisjZGVmaW5lIEJVSUxUSU5fRVZBTF9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbCIsIChQeUNGdW5jdGlvbilidWlsdGluX2V2YWwsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9ldmFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2V2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9ldmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2U7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsCisgICAgICAgIDEsIDMsCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXZhbF9pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2V4ZWNfX2RvY19fLAorImV4ZWMoJG1vZHVsZSwgc291cmNlLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJcbiIKKyJUaGUgc291cmNlIG1heSBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgb25lIG9yIG1vcmUgUHl0aG9uIHN0YXRlbWVudHNcbiIKKyJvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS5cbiIKKyJUaGUgZ2xvYmFscyBtdXN0IGJlIGEgZGljdGlvbmFyeSBhbmQgbG9jYWxzIGNhbiBiZSBhbnkgbWFwcGluZyxcbiIKKyJkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50IGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4iKTsKKworI2RlZmluZSBCVUlMVElOX0VYRUNfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4ZWMiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9leGVjLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZXhlY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9leGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZXhlYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc291cmNlOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqbG9jYWxzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV4ZWMiLAorICAgICAgICAxLCAzLAorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V4ZWNfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9nbG9iYWxzX19kb2NfXywKKyJnbG9iYWxzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZVwncyBnbG9iYWwgdmFyaWFibGVzLlxuIgorIlxuIgorIk5PVEU6IFVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5ICp3aWxsKiBhZmZlY3QgbmFtZSBsb29rdXBzIGluIHRoZSBjdXJyZW50XG4iCisiZ2xvYmFsIHNjb3BlIGFuZCB2aWNlLXZlcnNhLiIpOworCisjZGVmaW5lIEJVSUxUSU5fR0xPQkFMU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2xvYmFscyIsIChQeUNGdW5jdGlvbilidWlsdGluX2dsb2JhbHMsIE1FVEhfTk9BUkdTLCBidWlsdGluX2dsb2JhbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZ2xvYmFsc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9nbG9iYWxzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGJ1aWx0aW5fZ2xvYmFsc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2hhc2F0dHJfX2RvY19fLAorImhhc2F0dHIoJG1vZHVsZSwgb2JqLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuXG4iCisiXG4iCisiVGhpcyBpcyBkb25lIGJ5IGNhbGxpbmcgZ2V0YXR0cihvYmosIG5hbWUpIGFuZCBjYXRjaGluZyBBdHRyaWJ1dGVFcnJvci4iKTsKKworI2RlZmluZSBCVUlMVElOX0hBU0FUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7Imhhc2F0dHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9oYXNhdHRyLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5faGFzYXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9oYXNhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9oYXNhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9oYXNhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2lkX19kb2NfXywKKyJpZCgkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC5cbiIKKyJcbiIKKyJUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGFtb25nIHNpbXVsdGFuZW91c2x5IGV4aXN0aW5nIG9iamVjdHMuXG4iCisiKENQeXRob24gdXNlcyB0aGUgb2JqZWN0XCdzIG1lbW9yeSBhZGRyZXNzLikiKTsKKworI2RlZmluZSBCVUlMVElOX0lEX01FVEhPRERFRiAgICBcCisgICAgeyJpZCIsIChQeUNGdW5jdGlvbilidWlsdGluX2lkLCBNRVRIX08sIGJ1aWx0aW5faWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc2V0YXR0cl9fZG9jX18sCisic2V0YXR0cigkbW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0cyB0aGUgbmFtZWQgYXR0cmlidXRlIG9uIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiIKKyJcbiIKKyJzZXRhdHRyKHgsIFwneVwnLCB2KSBpcyBlcXVpdmFsZW50IHRvIGBgeC55ID0gdlwnXCciKTsKKworI2RlZmluZSBCVUlMVElOX1NFVEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGF0dHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zZXRhdHRyLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fc2V0YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zZXRhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zZXRhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0YXR0ciIsCisgICAgICAgIDMsIDMsCisgICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zZXRhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9kZWxhdHRyX19kb2NfXywKKyJkZWxhdHRyKCRtb2R1bGUsIG9iaiwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkRlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuXG4iCisiXG4iCisiZGVsYXR0cih4LCBcJ3lcJykgaXMgZXF1aXZhbGVudCB0byBgYGRlbCB4LnlcJ1wnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9ERUxBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxhdHRyIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZGVsYXR0ciwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2RlbGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGVsYXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGVsYXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVsYXR0ciIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGVsYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9oYXNoX19kb2NfXywKKyJoYXNoKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhlIGdpdmVuIG9iamVjdC5cbiIKKyJcbiIKKyJUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZVxuIgorInJldmVyc2UgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9IQVNIX01FVEhPRERFRiAgICBcCisgICAgeyJoYXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faGFzaCwgTUVUSF9PLCBidWlsdGluX2hhc2hfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faGV4X19kb2NfXywKKyJoZXgoJG1vZHVsZSwgbnVtYmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuIgorIlxuIgorIiAgID4+PiBoZXgoMTI2NDg0MzApXG4iCisiICAgXCcweGMwZmZlZVwnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9IRVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilidWlsdGluX2hleCwgTUVUSF9PLCBidWlsdGluX2hleF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9sZW5fX2RvY19fLAorImxlbigkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIGNvbnRhaW5lci4iKTsKKworI2RlZmluZSBCVUlMVElOX0xFTl9NRVRIT0RERUYgICAgXAorICAgIHsibGVuIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbGVuLCBNRVRIX08sIGJ1aWx0aW5fbGVuX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2xvY2Fsc19fZG9jX18sCisibG9jYWxzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGVcJ3MgbG9jYWwgdmFyaWFibGVzLlxuIgorIlxuIgorIk5PVEU6IFdoZXRoZXIgb3Igbm90IHVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgYWZmZWN0IG5hbWUgbG9va3VwcyBpblxuIgorInRoZSBsb2NhbCBzY29wZSBhbmQgdmljZS12ZXJzYSBpcyAqaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KiBhbmQgbm90XG4iCisiY292ZXJlZCBieSBhbnkgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZ3VhcmFudGVlcy4iKTsKKworI2RlZmluZSBCVUlMVElOX0xPQ0FMU19NRVRIT0RERUYgICAgXAorICAgIHsibG9jYWxzIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbG9jYWxzLCBNRVRIX05PQVJHUywgYnVpbHRpbl9sb2NhbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fbG9jYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2xvY2FscyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBidWlsdGluX2xvY2Fsc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX29jdF9fZG9jX18sCisib2N0KCRtb2R1bGUsIG51bWJlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgb2N0YWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cbiIKKyJcbiIKKyIgICA+Pj4gb2N0KDM0MjM5MSlcbiIKKyIgICBcJzBvMTIzNDU2N1wnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9PQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7Im9jdCIsIChQeUNGdW5jdGlvbilidWlsdGluX29jdCwgTUVUSF9PLCBidWlsdGluX29jdF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9vcmRfX2RvY19fLAorIm9yZCgkbW9kdWxlLCBjLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgZm9yIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9PUkRfTUVUSE9EREVGICAgIFwKKyAgICB7Im9yZCIsIChQeUNGdW5jdGlvbilidWlsdGluX29yZCwgTUVUSF9PLCBidWlsdGluX29yZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9wb3dfX2RvY19fLAorInBvdygkbW9kdWxlLCB4LCB5LCB6PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIHgqKnkgKHdpdGggdHdvIGFyZ3VtZW50cykgb3IgeCoqeSAlIHogKHdpdGggdGhyZWUgYXJndW1lbnRzKVxuIgorIlxuIgorIlNvbWUgdHlwZXMsIHN1Y2ggYXMgaW50cywgYXJlIGFibGUgdG8gdXNlIGEgbW9yZSBlZmZpY2llbnQgYWxnb3JpdGhtIHdoZW5cbiIKKyJpbnZva2VkIHVzaW5nIHRoZSB0aHJlZSBhcmd1bWVudCBmb3JtLiIpOworCisjZGVmaW5lIEJVSUxUSU5fUE9XX01FVEhPRERFRiAgICBcCisgICAgeyJwb3ciLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9wb3csIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9wb3dfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fcG93X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3BvdyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeTsKKyAgICBQeU9iamVjdCAqeiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3ciLAorICAgICAgICAyLCAzLAorICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fcG93X2ltcGwobW9kdWxlLCB4LCB5LCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9pbnB1dF9fZG9jX18sCisiaW5wdXQoJG1vZHVsZSwgcHJvbXB0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGEgc3RyaW5nIGZyb20gc3RhbmRhcmQgaW5wdXQuICBUaGUgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZC5cbiIKKyJcbiIKKyJUaGUgcHJvbXB0IHN0cmluZywgaWYgZ2l2ZW4sIGlzIHByaW50ZWQgdG8gc3RhbmRhcmQgb3V0cHV0IHdpdGhvdXQgYVxuIgorInRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIHJlYWRpbmcgaW5wdXQuXG4iCisiXG4iCisiSWYgdGhlIHVzZXIgaGl0cyBFT0YgKCpuaXg6IEN0cmwtRCwgV2luZG93czogQ3RybC1aK1JldHVybiksIHJhaXNlIEVPRkVycm9yLlxuIgorIk9uICpuaXggc3lzdGVtcywgcmVhZGxpbmUgaXMgdXNlZCBpZiBhdmFpbGFibGUuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9JTlBVVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5wdXQiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9pbnB1dCwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2lucHV0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lucHV0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnByb21wdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lucHV0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwcm9tcHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaW5wdXQiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcHJvbXB0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faW5wdXRfaW1wbChtb2R1bGUsIHByb21wdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fcmVwcl9fZG9jX18sCisicmVwcigkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGNhbm9uaWNhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC5cbiIKKyJcbiIKKyJGb3IgbWFueSBvYmplY3QgdHlwZXMsIGluY2x1ZGluZyBtb3N0IGJ1aWx0aW5zLCBldmFsKHJlcHIob2JqKSkgPT0gb2JqLiIpOworCisjZGVmaW5lIEJVSUxUSU5fUkVQUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVwciIsIChQeUNGdW5jdGlvbilidWlsdGluX3JlcHIsIE1FVEhfTywgYnVpbHRpbl9yZXByX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX3N1bV9fZG9jX18sCisic3VtKCRtb2R1bGUsIGl0ZXJhYmxlLCBzdGFydD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzdW0gb2YgYSBcJ3N0YXJ0XCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdXMgYW4gaXRlcmFibGUgb2YgbnVtYmVyc1xuIgorIlxuIgorIldoZW4gdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gdGhlIHN0YXJ0IHZhbHVlLlxuIgorIlRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5XG4iCisicmVqZWN0IG5vbi1udW1lcmljIHR5cGVzLiIpOworCisjZGVmaW5lIEJVSUxUSU5fU1VNX01FVEhPRERFRiAgICBcCisgICAgeyJzdW0iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zdW0sIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9zdW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc3VtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZXJhYmxlLCBQeU9iamVjdCAqc3RhcnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zdW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0ZXJhYmxlOworICAgIFB5T2JqZWN0ICpzdGFydCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLAorICAgICAgICAxLCAyLAorICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3N1bV9pbXBsKG1vZHVsZSwgaXRlcmFibGUsIHN0YXJ0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9pc2luc3RhbmNlX19kb2NfXywKKyJpc2luc3RhbmNlKCRtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuXG4iCisiXG4iCisiQSB0dXBsZSwgYXMgaW4gYGBpc2luc3RhbmNlKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0b1xuIgorImNoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKVxuIgorIm9yIC4uLmBgIGV0Yy4iKTsKKworI2RlZmluZSBCVUlMVElOX0lTSU5TVEFOQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzaW5zdGFuY2UiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9pc2luc3RhbmNlLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5faXNpbnN0YW5jZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pc2luc3RhbmNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lzaW5zdGFuY2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc2luc3RhbmNlIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNpbnN0YW5jZV9pbXBsKG1vZHVsZSwgb2JqLCBjbGFzc19vcl90dXBsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faXNzdWJjbGFzc19fZG9jX18sCisiaXNzdWJjbGFzcygkbW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgXCdjbHNcJyBpcyBhIGRlcml2ZWQgZnJvbSBhbm90aGVyIGNsYXNzIG9yIGlzIHRoZSBzYW1lIGNsYXNzLlxuIgorIlxuIgorIkEgdHVwbGUsIGFzIGluIGBgaXNzdWJjbGFzcyh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG9cbiIKKyJjaGVjayBhZ2FpbnN0LiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBpc3N1YmNsYXNzKHgsIEEpIG9yIGlzc3ViY2xhc3MoeCwgQilcbiIKKyJvciAuLi5gYCBldGMuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9JU1NVQkNMQVNTX01FVEhPRERFRiAgICBcCisgICAgeyJpc3N1YmNsYXNzIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faXNzdWJjbGFzcywgTUVUSF9WQVJBUkdTLCBidWlsdGluX2lzc3ViY2xhc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faXNzdWJjbGFzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pc3N1YmNsYXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjbHM7CisgICAgUHlPYmplY3QgKmNsYXNzX29yX3R1cGxlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNzdWJjbGFzcyIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzc3ViY2xhc3NfaW1wbChtb2R1bGUsIGNscywgY2xhc3Nfb3JfdHVwbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmVjMzM5OWMwYWVlOThkNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmggYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3NzY2NQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaApAQCAtMCwwICsxLDM1NSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pbXBfbG9ja19oZWxkX19kb2NfXywKKyJsb2NrX2hlbGQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZSBGYWxzZS5cbiIKKyJcbiIKKyJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuIik7CisKKyNkZWZpbmUgX0lNUF9MT0NLX0hFTERfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvY2tfaGVsZCIsIChQeUNGdW5jdGlvbilfaW1wX2xvY2tfaGVsZCwgTUVUSF9OT0FSR1MsIF9pbXBfbG9ja19oZWxkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2xvY2tfaGVsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9sb2NrX2hlbGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2ltcF9sb2NrX2hlbGRfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoX2ltcF9hY3F1aXJlX2xvY2tfX2RvY19fLAorImFjcXVpcmVfbG9jaygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWNxdWlyZXMgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuXG4iCisiXG4iCisiVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZ1xuIgorIm1vZHVsZXMuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JTVBfQUNRVUlSRV9MT0NLX01FVEhPRERFRiAgICBcCisgICAgeyJhY3F1aXJlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9hY3F1aXJlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX2FjcXVpcmVfbG9ja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfYWNxdWlyZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pbXBfYWNxdWlyZV9sb2NrX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfcmVsZWFzZV9sb2NrX19kb2NfXywKKyJyZWxlYXNlX2xvY2soJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbGVhc2UgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrLlxuIgorIlxuIgorIk9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JTVBfUkVMRUFTRV9MT0NLX01FVEhPRERFRiAgICBcCisgICAgeyJyZWxlYXNlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9yZWxlYXNlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX3JlbGVhc2VfbG9ja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9yZWxlYXNlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfcmVsZWFzZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pbXBfcmVsZWFzZV9sb2NrX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfX2ZpeF9jb19maWxlbmFtZV9fZG9jX18sCisiX2ZpeF9jb19maWxlbmFtZSgkbW9kdWxlLCBjb2RlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlcyBjb2RlLmNvX2ZpbGVuYW1lIHRvIHNwZWNpZnkgdGhlIHBhc3NlZC1pbiBmaWxlIHBhdGguXG4iCisiXG4iCisiICBjb2RlXG4iCisiICAgIENvZGUgb2JqZWN0IHRvIGNoYW5nZS5cbiIKKyIgIHBhdGhcbiIKKyIgICAgRmlsZSBwYXRoIHRvIHVzZS4iKTsKKworI2RlZmluZSBfSU1QX19GSVhfQ09fRklMRU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9maXhfY29fZmlsZW5hbWUiLCAoUHlDRnVuY3Rpb24pX2ltcF9fZml4X2NvX2ZpbGVuYW1lLCBNRVRIX1ZBUkFSR1MsIF9pbXBfX2ZpeF9jb19maWxlbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlDb2RlT2JqZWN0ICpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9fZml4X2NvX2ZpbGVuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5Q29kZU9iamVjdCAqY29kZTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAorICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChtb2R1bGUsIGNvZGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2NyZWF0ZV9idWlsdGluX19kb2NfXywKKyJjcmVhdGVfYnVpbHRpbigkbW9kdWxlLCBzcGVjLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9DUkVBVEVfQlVJTFRJTl9NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRlX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9jcmVhdGVfYnVpbHRpbiwgTUVUSF9PLCBfaW1wX2NyZWF0ZV9idWlsdGluX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX18sCisiZXh0ZW5zaW9uX3N1ZmZpeGVzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKKworI2RlZmluZSBfSU1QX0VYVEVOU0lPTl9TVUZGSVhFU19NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzLCBNRVRIX05PQVJHUywgX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2V4dGVuc2lvbl9zdWZmaXhlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2luaXRfZnJvemVuX19kb2NfXywKKyJpbml0X2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5pdGlhbGl6ZXMgYSBmcm96ZW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfSU5JVF9GUk9aRU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImluaXRfZnJvemVuIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaW5pdF9mcm96ZW4sIE1FVEhfTywgX2ltcF9pbml0X2Zyb3plbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pbml0X2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaW5pdF9mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaW5pdF9mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfXywKKyJnZXRfZnJvemVuX29iamVjdCgkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgY29kZSBvYmplY3QgZm9yIGEgZnJvemVuIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0dFVF9GUk9aRU5fT0JKRUNUX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfZnJvemVuX29iamVjdCIsIChQeUNGdW5jdGlvbilfaW1wX2dldF9mcm96ZW5fb2JqZWN0LCBNRVRIX08sIF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2dldF9mcm96ZW5fb2JqZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pc19mcm96ZW5fcGFja2FnZV9fZG9jX18sCisiaXNfZnJvemVuX3BhY2thZ2UoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgaXMgb2YgYSBmcm96ZW4gcGFja2FnZS4iKTsKKworI2RlZmluZSBfSU1QX0lTX0ZST1pFTl9QQUNLQUdFX01FVEhPRERFRiAgICBcCisgICAgeyJpc19mcm96ZW5fcGFja2FnZSIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2Zyb3plbl9wYWNrYWdlLCBNRVRIX08sIF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2Zyb3plbl9wYWNrYWdlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pc19idWlsdGluX19kb2NfXywKKyJpc19idWlsdGluKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfSVNfQlVJTFRJTl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2J1aWx0aW4sIE1FVEhfTywgX2ltcF9pc19idWlsdGluX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2J1aWx0aW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19idWlsdGluX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pc19mcm96ZW5fX2RvY19fLAorImlzX2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGZyb3plbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9JU19GUk9aRU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImlzX2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2Zyb3plbiwgTUVUSF9PLCBfaW1wX2lzX2Zyb3plbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2Zyb3plbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykKKworUHlEb2NfU1RSVkFSKF9pbXBfY3JlYXRlX2R5bmFtaWNfX2RvY19fLAorImNyZWF0ZV9keW5hbWljKCRtb2R1bGUsIHNwZWMsIGZpbGU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZV9keW5hbWljIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfY3JlYXRlX2R5bmFtaWMsIE1FVEhfVkFSQVJHUywgX2ltcF9jcmVhdGVfZHluYW1pY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9jcmVhdGVfZHluYW1pY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzcGVjLCBQeU9iamVjdCAqZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2NyZWF0ZV9keW5hbWljKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzcGVjOworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImNyZWF0ZV9keW5hbWljIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJnNwZWMsICZmaWxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChtb2R1bGUsIHNwZWMsIGZpbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykKKworUHlEb2NfU1RSVkFSKF9pbXBfZXhlY19keW5hbWljX19kb2NfXywKKyJleGVjX2R5bmFtaWMoJG1vZHVsZSwgbW9kLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjX2R5bmFtaWMiLCAoUHlDRnVuY3Rpb24pX2ltcF9leGVjX2R5bmFtaWMsIE1FVEhfTywgX2ltcF9leGVjX2R5bmFtaWNfX2RvY19ffSwKKworc3RhdGljIGludAorX2ltcF9leGVjX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXhlY19keW5hbWljKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2R5bmFtaWNfaW1wbChtb2R1bGUsIG1vZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKSAqLworCitQeURvY19TVFJWQVIoX2ltcF9leGVjX2J1aWx0aW5fX2RvY19fLAorImV4ZWNfYnVpbHRpbigkbW9kdWxlLCBtb2QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbml0aWFsaXplIGEgYnVpbHQtaW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfRVhFQ19CVUlMVElOX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9leGVjX2J1aWx0aW4sIE1FVEhfTywgX2ltcF9leGVjX2J1aWx0aW5fX2RvY19ffSwKKworc3RhdGljIGludAorX2ltcF9leGVjX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXhlY19idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2J1aWx0aW5faW1wbChtb2R1bGUsIG1vZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZm5kZWYgX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzIzMjRhNWU0NmNkZmM0YiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY29kZWNzLmMgYi9QeXRob24vY29kZWNzLmMKaW5kZXggMjdmMmFlYi4uZDkwYmY3MyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvZGVjcy5jCisrKyBiL1B5dGhvbi9jb2RlY3MuYwpAQCAtOSw2ICs5LDcgQEAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAidWNuaGFzaC5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKIGNvbnN0IGNoYXIgKlB5X2hleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKQEAgLTg1Niw2ICs4NTcsMTE4IEBACiAKIFB5T2JqZWN0ICpQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKIHsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0OworICAgIFB5X3NzaXplX3QgZW5kOworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKKyAgICBpbnQgcmVzc2l6ZTsKKyAgICBQeV9VQ1M0IGM7CisKKyAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKGV4YywgKFB5VHlwZU9iamVjdCAqKVB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKKyAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKHAgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19Bc1N0cmluZyhvYmplY3QpKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDQgKiAoZW5kIC0gc3RhcnQpLCAxMjcpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgb3V0cCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyssIG91dHAgKz0gNCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgICAgIG91dHBbMF0gPSAnXFwnOworICAgICAgICAgICAgb3V0cFsxXSA9ICd4JzsKKyAgICAgICAgICAgIG91dHBbMl0gPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICAgICBvdXRwWzNdID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhleGMsIChQeVR5cGVPYmplY3QgKilQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChQeU9iamVjdF9UeXBlQ2hlY2soZXhjLCAoUHlUeXBlT2JqZWN0ICopUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KSkKKyAgICAgICAgZW5kID0gc3RhcnQgKyBQWV9TU0laRV9UX01BWCAvICgxKzErOCk7CisgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKKyAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErMjsKKyAgICB9CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgKm91dHArKyA9ICdcXCc7CisgICAgICAgIGlmIChjID49IDB4MDAwMTAwMDApIHsKKyAgICAgICAgICAgICpvdXRwKysgPSAnVSc7CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI0KSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjApJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICAqb3V0cCsrID0gJ3UnOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvdXRwKysgPSAneCc7CisgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbYyYweGZdOworICAgIH0KKworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7Cit9CisKK3N0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKKworUHlPYmplY3QgKlB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKK3sKICAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKGV4YywgKFB5VHlwZU9iamVjdCAqKVB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKICAgICAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgICAgICBQeU9iamVjdCAqb2JqZWN0OwpAQCAtODY1LDM2ICs5NzgsNTYgQEAKICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgUHlfc3NpemVfdCByZXNzaXplOworICAgICAgICBpbnQgcmVwbHNpemU7CiAgICAgICAgIFB5X1VDUzQgYzsKKyAgICAgICAgY2hhciBidWZmZXJbMjU2XTsgLyogTkFNRV9NQVhMRU4gKi8KICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KSkKLSAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUFlfU1NJWkVfVF9NQVggLyAoMSsxKzgpOworICAgICAgICBpZiAoIXVjbmhhc2hfQ0FQSSkgeworICAgICAgICAgICAgLyogbG9hZCB0aGUgdW5pY29kZSBkYXRhIG1vZHVsZSAqLworICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOworICAgICAgICAgICAgaWYgKCF1Y25oYXNoX0NBUEkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKICAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7Ci0gICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKKyAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEktPmdldG5hbWUoTlVMTCwgYywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMSkpIHsKKyAgICAgICAgICAgICAgICByZXBsc2l6ZSA9IDErMSsxKyhpbnQpc3RybGVuKGJ1ZmZlcikrMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgICAgIHJlcGxzaXplID0gMSsxKzg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKKyAgICAgICAgICAgICAgICByZXBsc2l6ZSA9IDErMSs0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzI7CisgICAgICAgICAgICAgICAgcmVwbHNpemUgPSAxKzErMjsKKyAgICAgICAgICAgIGlmIChyZXNzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBsc2l6ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlc3NpemUgKz0gcmVwbHNpemU7CiAgICAgICAgIH0KKyAgICAgICAgZW5kID0gaTsKICAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOwotICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICBpZiAocmVzPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgZm9yIChpID0gc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOwogICAgICAgICAgICAgaSA8IGVuZDsgKytpKSB7CiAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgKm91dHArKyA9ICdcXCc7CisgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJLT5nZXRuYW1lKE5VTEwsIGMsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDEpKSB7CisgICAgICAgICAgICAgICAgKm91dHArKyA9ICdOJzsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ3snOworICAgICAgICAgICAgICAgIHN0cmNweSgoY2hhciAqKW91dHAsIGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgb3V0cCArPSBzdHJsZW4oYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ30nOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGMgPj0gMHgwMDAxMDAwMCkgewogICAgICAgICAgICAgICAgICpvdXRwKysgPSAnVSc7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjgpJjB4Zl07CkBAIC05MTUsNiArMTA0OCw3IEBACiAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKICAgICAgICAgfQogCisgICAgICAgIGFzc2VydChvdXRwID09IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykgKyByZXNzaXplKTsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKQEAgLTkyNiw2ICsxMDYwLDcgQEAKICAgICB9CiB9CiAKKyNkZWZpbmUgRU5DX1VOS05PV04gICAgIC0xCiAjZGVmaW5lIEVOQ19VVEY4ICAgICAgICAwCiAjZGVmaW5lIEVOQ19VVEYxNkJFICAgICAxCiAjZGVmaW5lIEVOQ19VVEYxNkxFICAgICAyCkBAIC05NDEsNyArMTA3NiwxMSBAQAogICAgICAgICBlbmNvZGluZyArPSAzOwogICAgICAgICBpZiAoKmVuY29kaW5nID09ICctJyB8fCAqZW5jb2RpbmcgPT0gJ18nICkKICAgICAgICAgICAgIGVuY29kaW5nKys7Ci0gICAgICAgIGlmIChlbmNvZGluZ1swXSA9PSAnMScgJiYgZW5jb2RpbmdbMV0gPT0gJzYnKSB7CisgICAgICAgIGlmIChlbmNvZGluZ1swXSA9PSAnOCcgJiYgZW5jb2RpbmdbMV0gPT0gJ1wwJykgeworICAgICAgICAgICAgKmJ5dGVsZW5ndGggPSAzOworICAgICAgICAgICAgcmV0dXJuIEVOQ19VVEY4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVuY29kaW5nWzBdID09ICcxJyAmJiBlbmNvZGluZ1sxXSA9PSAnNicpIHsKICAgICAgICAgICAgIGVuY29kaW5nICs9IDI7CiAgICAgICAgICAgICAqYnl0ZWxlbmd0aCA9IDI7CiAgICAgICAgICAgICBpZiAoKmVuY29kaW5nID09ICdcMCcpIHsKQEAgLTk4MCw5ICsxMTE5LDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogdXRmLTggKi8KLSAgICAqYnl0ZWxlbmd0aCA9IDM7Ci0gICAgcmV0dXJuIEVOQ19VVEY4OworICAgIGVsc2UgaWYgKHN0cmNtcChlbmNvZGluZywgIkNQX1VURjgiKSA9PSAwKSB7CisgICAgICAgICpieXRlbGVuZ3RoID0gMzsKKyAgICAgICAgcmV0dXJuIEVOQ19VVEY4OworICAgIH0KKyAgICByZXR1cm4gRU5DX1VOS05PV047CiB9CiAKIC8qIFRoaXMgaGFuZGxlciBpcyBkZWNsYXJlZCBzdGF0aWMgdW50aWwgc29tZW9uZSBkZW1vbnN0cmF0ZXMKQEAgLTEwMjAsNiArMTE2MSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGNvZGUgPSBnZXRfc3RhbmRhcmRfZW5jb2RpbmcoZW5jb2RpbmcsICZieXRlbGVuZ3RoKTsKICAgICAgICAgUHlfREVDUkVGKGVuY29kZSk7CisgICAgICAgIGlmIChjb2RlID09IEVOQ19VTktOT1dOKSB7CisgICAgICAgICAgICAvKiBOb3Qgc3VwcG9ydGVkLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOworICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gYnl0ZWxlbmd0aCkKICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUFlfU1NJWkVfVF9NQVggLyBieXRlbGVuZ3RoOwpAQCAtMTA5Niw2ICsxMjQzLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgY29kZSA9IGdldF9zdGFuZGFyZF9lbmNvZGluZyhlbmNvZGluZywgJmJ5dGVsZW5ndGgpOwogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlKTsKKyAgICAgICAgaWYgKGNvZGUgPT0gRU5DX1VOS05PV04pIHsKKyAgICAgICAgICAgIC8qIE5vdCBzdXBwb3J0ZWQsIGZhaWwgd2l0aCBvcmlnaW5hbCBleGNlcHRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgLyogVHJ5IGRlY29kaW5nIGEgc2luZ2xlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIuIElmCiAgICAgICAgICAgIHRoZXJlIGFyZSBtb3JlLCBsZXQgdGhlIGNvZGVjIGNhbGwgdXMgYWdhaW4uICovCkBAIC0xMjUyLDYgKzE0MDUsMTEgQEAKICAgICByZXR1cm4gUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKGV4Yyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqbmFtZXJlcGxhY2VfZXJyb3JzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjKQoreworICAgIHJldHVybiBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKGV4Yyk7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqc3Vycm9nYXRlcGFzc19lcnJvcnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGMpCiB7CiAgICAgcmV0dXJuIFB5Q29kZWNfU3Vycm9nYXRlUGFzc0Vycm9ycyhleGMpOwpAQCAtMTMxNyw4ICsxNDc1LDE5IEBACiAgICAgICAgICAgICAgICAgYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICAgICAgTUVUSF9PLAogICAgICAgICAgICAgICAgIFB5RG9jX1NUUigiSW1wbGVtZW50cyB0aGUgJ2JhY2tzbGFzaHJlcGxhY2UnIGVycm9yIGhhbmRsaW5nLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCByZXBsYWNlcyBtYWxmb3JtZWQgZGF0YSB3aXRoIGEgYmFja3NsYXNoZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXNjYXBlIHNlcXVlbmNlLiIpCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lcmVwbGFjZSIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWVyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICAgICAgbmFtZXJlcGxhY2VfZXJyb3JzLAorICAgICAgICAgICAgICAgIE1FVEhfTywKKyAgICAgICAgICAgICAgICBQeURvY19TVFIoIkltcGxlbWVudHMgdGhlICduYW1lcmVwbGFjZScgZXJyb3IgaGFuZGxpbmcsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoaWNoIHJlcGxhY2VzIGFuIHVuZW5jb2RhYmxlIGNoYXJhY3RlciB3aXRoIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcXE57Li4ufSBlc2NhcGUgc2VxdWVuY2UuIikKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbXBpbGUuYyBiL1B5dGhvbi9jb21waWxlLmMKaW5kZXggNjg2NTEwYy4uOTdiYjEyZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbXBpbGUuYworKysgYi9QeXRob24vY29tcGlsZS5jCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAotaW50IFB5X09wdGltaXplRmxhZyA9IDA7Ci0KICNkZWZpbmUgREVGQVVMVF9CTE9DS19TSVpFIDE2CiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tTIDgKICNkZWZpbmUgREVGQVVMVF9DT0RFX1NJWkUgMTI4CkBAIC05NCw2ICs5Miw3IEBACiAgICAgQ09NUElMRVJfU0NPUEVfTU9EVUxFLAogICAgIENPTVBJTEVSX1NDT1BFX0NMQVNTLAogICAgIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLAorICAgIENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OLAogICAgIENPTVBJTEVSX1NDT1BFX0xBTUJEQSwKICAgICBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAogfTsKQEAgLTE5NSwxMSArMTk0LDExIEBACiBzdGF0aWMgaW50IGV4cHJfY29uc3RhbnQoc3RydWN0IGNvbXBpbGVyICosIGV4cHJfdHkpOwogCiBzdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgUHlfc3NpemVfdCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3Jkcyk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9zZXRfcXVhbG5hbWUoc3RydWN0IGNvbXBpbGVyICopOwogCkBAIC02NzcsNyArNjc2LDkgQEAKICAgICAgICAgcGFyZW50ID0gKHN0cnVjdCBjb21waWxlcl91bml0ICopUHlDYXBzdWxlX0dldFBvaW50ZXIoY2Fwc3VsZSwgQ0FQU1VMRV9OQU1FKTsKICAgICAgICAgYXNzZXJ0KHBhcmVudCk7CiAKLSAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiB8fCB1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpIHsKKyAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTgorICAgICAgICAgICAgfHwgdS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OCisgICAgICAgICAgICB8fCB1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpIHsKICAgICAgICAgICAgIGFzc2VydCh1LT51X25hbWUpOwogICAgICAgICAgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUocGFyZW50LT51X3ByaXZhdGUsIHUtPnVfbmFtZSk7CiAgICAgICAgICAgICBpZiAoIW1hbmdsZWQpCkBAIC02OTEsNiArNjkyLDcgQEAKIAogICAgICAgICBpZiAoIWZvcmNlX2dsb2JhbCkgewogICAgICAgICAgICAgaWYgKHBhcmVudC0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OCisgICAgICAgICAgICAgICAgfHwgcGFyZW50LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04KICAgICAgICAgICAgICAgICB8fCBwYXJlbnQtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9MQU1CREEpIHsKICAgICAgICAgICAgICAgICBkb3RfbG9jYWxzX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZkb3RfbG9jYWxzKTsKICAgICAgICAgICAgICAgICBpZiAoZG90X2xvY2Fsc19zdHIgPT0gTlVMTCkKQEAgLTg4MSw2ICs4ODMsNyBAQAogCiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICBjYXNlIEJJTkFSWV9NVUxUSVBMWToKKyAgICAgICAgY2FzZSBCSU5BUllfTUFUUklYX01VTFRJUExZOgogICAgICAgICBjYXNlIEJJTkFSWV9NT0RVTE86CiAgICAgICAgIGNhc2UgQklOQVJZX0FERDoKICAgICAgICAgY2FzZSBCSU5BUllfU1VCVFJBQ1Q6CkBAIC04OTUsMTIgKzg5OCwxMSBAQAogICAgICAgICBjYXNlIElOUExBQ0VfQUREOgogICAgICAgICBjYXNlIElOUExBQ0VfU1VCVFJBQ1Q6CiAgICAgICAgIGNhc2UgSU5QTEFDRV9NVUxUSVBMWToKKyAgICAgICAgY2FzZSBJTlBMQUNFX01BVFJJWF9NVUxUSVBMWToKICAgICAgICAgY2FzZSBJTlBMQUNFX01PRFVMTzoKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBTVE9SRV9TVUJTQ1I6CiAgICAgICAgICAgICByZXR1cm4gLTM7Ci0gICAgICAgIGNhc2UgU1RPUkVfTUFQOgotICAgICAgICAgICAgcmV0dXJuIC0yOwogICAgICAgICBjYXNlIERFTEVURV9TVUJTQ1I6CiAgICAgICAgICAgICByZXR1cm4gLTI7CiAKQEAgLTkyOSw3ICs5MzEsOSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKICAgICAgICAgICAgIHJldHVybiA3OwotICAgICAgICBjYXNlIFdJVEhfQ0xFQU5VUDoKKyAgICAgICAgY2FzZSBXSVRIX0NMRUFOVVBfU1RBUlQ6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBXSVRIX0NMRUFOVVBfRklOSVNIOgogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBYWFggU29tZXRpbWVzIG1vcmUgKi8KICAgICAgICAgY2FzZSBSRVRVUk5fVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC05NzMsOCArOTc3LDE1IEBACiAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6CiAgICAgICAgICAgICByZXR1cm4gMS1vcGFyZzsKKyAgICAgICAgY2FzZSBCVUlMRF9MSVNUX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9UVVBMRV9VTlBBQ0s6CisgICAgICAgIGNhc2UgQlVJTERfU0VUX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9NQVBfVU5QQUNLOgorICAgICAgICAgICAgcmV0dXJuIDEgLSBvcGFyZzsKKyAgICAgICAgY2FzZSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDoKKyAgICAgICAgICAgIHJldHVybiAxIC0gKG9wYXJnICYgMHhGRik7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQOgotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4gMSAtIDIqb3Bhcmc7CiAgICAgICAgIGNhc2UgTE9BRF9BVFRSOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKQEAgLTEwNDMsNiArMTA1NCwxOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIERFTEVURV9ERVJFRjoKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIEdFVF9BV0FJVEFCTEU6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgorICAgICAgICAgICAgcmV0dXJuIDY7CisgICAgICAgIGNhc2UgQkVGT1JFX0FTWU5DX1dJVEg6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHRVRfQUlURVI6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHRVRfQU5FWFQ6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHRVRfWUlFTERfRlJPTV9JVEVSOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUFlfSU5WQUxJRF9TVEFDS19FRkZFQ1Q7CiAgICAgfQpAQCAtMTEyMyw4ICsxMTQ2LDEwIEBACiAKICAgICB2ID0gUHlEaWN0X0dldEl0ZW0oZGljdCwgdCk7CiAgICAgaWYgKCF2KSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHQpOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIGFyZyA9IFB5RGljdF9TaXplKGRpY3QpOwogICAgICAgICB2ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGFyZyk7CiAgICAgICAgIGlmICghdikgewpAQCAtMTUzNiwzMiArMTU2MSwzMSBAQAogICAgICAgICBWSVNJVChjLCBleHByLCBhbm5vdGF0aW9uKTsKICAgICAgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUoYy0+dS0+dV9wcml2YXRlLCBpZCk7CiAgICAgICAgIGlmICghbWFuZ2xlZCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChuYW1lcywgbWFuZ2xlZCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50CiBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxKiBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzKQogewotICAgIGludCBpLCBlcnJvcjsKKyAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGFyZ3MpOyBpKyspIHsKICAgICAgICAgYXJnX3R5IGFyZyA9IChhcmdfdHkpYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOwotICAgICAgICBlcnJvciA9IGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oCisgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgIGMsCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPmFyZywKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+YW5ub3RhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50CkBAIC0xNTgxLDE2ICsxNjA1LDE2IEBACiAgICAgaWYgKCFuYW1lcykKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmFyZ3MsIG5hbWVzKSkKKyAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmFyZ3MsIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoYXJncy0+dmFyYXJnICYmIGFyZ3MtPnZhcmFyZy0+YW5ub3RhdGlvbiAmJgotICAgICAgICBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIGFyZ3MtPnZhcmFyZy0+YXJnLAorICAgICAgICAhY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCBhcmdzLT52YXJhcmctPmFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT52YXJhcmctPmFubm90YXRpb24sIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbnMoYywgYXJncy0+a3dvbmx5YXJncywgbmFtZXMpKQorICAgIGlmICghY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbnMoYywgYXJncy0+a3dvbmx5YXJncywgbmFtZXMpKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlmIChhcmdzLT5rd2FyZyAmJiBhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiAmJgotICAgICAgICBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIGFyZ3MtPmt3YXJnLT5hcmcsCisgICAgICAgICFjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIGFyZ3MtPmt3YXJnLT5hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dhcmctPmFubm90YXRpb24sIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTU5OSw3ICsxNjIzLDcgQEAKICAgICAgICAgaWYgKCFyZXR1cm5fc3RyKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgaWYgKGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oYywgcmV0dXJuX3N0ciwgcmV0dXJucywgbmFtZXMpKSB7CisgICAgaWYgKCFjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIHJldHVybl9zdHIsIHJldHVybnMsIG5hbWVzKSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMTYzNywxOSArMTY2MSw0MyBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK2NvbXBpbGVyX2Z1bmN0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpmaXJzdF9jb25zdCA9IFB5X05vbmU7Ci0gICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBzLT52LkZ1bmN0aW9uRGVmLmFyZ3M7Ci0gICAgZXhwcl90eSByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOwotICAgIGFzZGxfc2VxKiBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgYXJndW1lbnRzX3R5IGFyZ3M7CisgICAgZXhwcl90eSByZXR1cm5zOworICAgIGlkZW50aWZpZXIgbmFtZTsKKyAgICBhc2RsX3NlcSogZGVjb3M7CisgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgc3RtdF90eSBzdDsKICAgICBQeV9zc2l6ZV90IGksIG4sIGFyZ2xlbmd0aDsKICAgICBpbnQgZG9jc3RyaW5nLCBrd19kZWZhdWx0X2NvdW50ID0gMDsKICAgICBpbnQgbnVtX2Fubm90YXRpb25zOworICAgIGludCBzY29wZV90eXBlOwogCi0gICAgYXNzZXJ0KHMtPmtpbmQgPT0gRnVuY3Rpb25EZWZfa2luZCk7CisKKyAgICBpZiAoaXNfYXN5bmMpIHsKKyAgICAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gQXN5bmNGdW5jdGlvbkRlZl9raW5kKTsKKworICAgICAgICBhcmdzID0gcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3M7CisgICAgICAgIHJldHVybnMgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJuczsKKyAgICAgICAgZGVjb3MgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIG5hbWUgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZTsKKyAgICAgICAgYm9keSA9IHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5OworCisgICAgICAgIHNjb3BlX3R5cGUgPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTjsKKyAgICB9IGVsc2UgeworICAgICAgICBhc3NlcnQocy0+a2luZCA9PSBGdW5jdGlvbkRlZl9raW5kKTsKKworICAgICAgICBhcmdzID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOworICAgICAgICByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOworICAgICAgICBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIG5hbWUgPSBzLT52LkZ1bmN0aW9uRGVmLm5hbWU7CisgICAgICAgIGJvZHkgPSBzLT52LkZ1bmN0aW9uRGVmLmJvZHk7CisKKyAgICAgICAgc2NvcGVfdHlwZSA9IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OOworICAgIH0KIAogICAgIGlmICghY29tcGlsZXJfZGVjb3JhdG9ycyhjLCBkZWNvcykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2NywxMiArMTcxNSwxMiBAQAogICAgICAgICByZXR1cm4gMDsKICAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sICh2b2lkICopcywKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZV90eXBlLCAodm9pZCAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgMCk7CisgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoYm9keSwgMCk7CiAgICAgZG9jc3RyaW5nID0gY29tcGlsZXJfaXNkb2NzdHJpbmcoc3QpOwogICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpCiAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKQEAgLTE2ODMsMTAgKzE3MzEsMTAgQEAKIAogICAgIGMtPnUtPnVfYXJnY291bnQgPSBhc2RsX3NlcV9MRU4oYXJncy0+YXJncyk7CiAgICAgYy0+dS0+dV9rd29ubHlhcmdjb3VudCA9IGFzZGxfc2VxX0xFTihhcmdzLT5rd29ubHlhcmdzKTsKLSAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CisgICAgbiA9IGFzZGxfc2VxX0xFTihib2R5KTsKICAgICAvKiBpZiB0aGVyZSB3YXMgYSBkb2NzdHJpbmcsIHdlIG5lZWQgdG8gc2tpcCB0aGUgZmlyc3Qgc3RhdGVtZW50ICovCiAgICAgZm9yIChpID0gZG9jc3RyaW5nOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgaSk7CisgICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKGJvZHksIGkpOwogICAgICAgICBWSVNJVF9JTl9TQ09QRShjLCBzdG10LCBzdCk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CkBAIC0xNzAyLDYgKzE3NTAsOCBAQAogICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7CiAgICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKICAgICBhcmdsZW5ndGggfD0gbnVtX2Fubm90YXRpb25zIDw8IDE2OworICAgIGlmIChpc19hc3luYykKKyAgICAgICAgY28tPmNvX2ZsYWdzIHw9IENPX0NPUk9VVElORTsKICAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKQEAgLTE3MTEsNyArMTc2MSw3IEBACiAgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgMSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbXBpbGVyX25hbWVvcChjLCBzLT52LkZ1bmN0aW9uRGVmLm5hbWUsIFN0b3JlKTsKKyAgICByZXR1cm4gY29tcGlsZXJfbmFtZW9wKGMsIG5hbWUsIFN0b3JlKTsKIH0KIAogc3RhdGljIGludApAQCAtMTgyMSw5ICsxODcxLDcgQEAKICAgICAvKiA1LiBnZW5lcmF0ZSB0aGUgcmVzdCBvZiB0aGUgY29kZSBmb3IgdGhlIGNhbGwgKi8KICAgICBpZiAoIWNvbXBpbGVyX2NhbGxfaGVscGVyKGMsIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5DbGFzc0RlZi5rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmt3YXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmtleXdvcmRzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiA2LiBhcHBseSBkZWNvcmF0b3JzICovCkBAIC0xOTM4LDcgKzE5ODYsNyBAQAogICAgIH0gZWxzZSBpZiAoY29uc3RhbnQgPT0gMSkgewogICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5JZi5ib2R5KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAocy0+di5JZi5vcmVsc2UpIHsKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihzLT52LklmLm9yZWxzZSkpIHsKICAgICAgICAgICAgIG5leHQgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CiAgICAgICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTk0OCw4ICsxOTk2LDggQEAKICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5JZi50ZXN0KTsKICAgICAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgbmV4dCk7CiAgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LklmLmJvZHkpOwotICAgICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgZW5kKTsKLSAgICAgICAgaWYgKHMtPnYuSWYub3JlbHNlKSB7CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4ocy0+di5JZi5vcmVsc2UpKSB7CisgICAgICAgICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgZW5kKTsKICAgICAgICAgICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIG5leHQpOwogICAgICAgICAgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuSWYub3JlbHNlKTsKICAgICAgICAgfQpAQCAtMTk4Niw2ICsyMDM0LDkyIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKworc3RhdGljIGludAorY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIHN0YXRpYyBQeU9iamVjdCAqc3RvcGl0ZXJfZXJyb3IgPSBOVUxMOworICAgIGJhc2ljYmxvY2sgKnRyeSwgKmV4Y2VwdCwgKmVuZCwgKmFmdGVyX3RyeSwgKnRyeV9jbGVhbnVwLAorICAgICAgICAgICAgICAgKmFmdGVyX2xvb3AsICphZnRlcl9sb29wX2Vsc2U7CisKKyAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICBzdG9waXRlcl9lcnJvciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJTdG9wQXN5bmNJdGVyYXRpb24iKTsKKyAgICAgICAgaWYgKHN0b3BpdGVyX2Vycm9yID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZXhjZXB0ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGVuZCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl90cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgdHJ5X2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYWZ0ZXJfbG9vcCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl9sb29wX2Vsc2UgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisKKyAgICBpZiAodHJ5ID09IE5VTEwgfHwgZXhjZXB0ID09IE5VTEwgfHwgZW5kID09IE5VTEwKKyAgICAgICAgICAgIHx8IGFmdGVyX3RyeSA9PSBOVUxMIHx8IHRyeV9jbGVhbnVwID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9MT09QLCBhZnRlcl9sb29wKTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIExPT1AsIHRyeSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVklTSVQoYywgZXhwciwgcy0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeSk7CisKKworICAgIEFERE9QX0pSRUwoYywgU0VUVVBfRVhDRVBULCBleGNlcHQpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCB0cnkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFERE9QKGMsIEdFVF9BTkVYVCk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQXN5bmNGb3IudGFyZ2V0KTsKKyAgICBBRERPUChjLCBQT1BfQkxPQ0spOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCB0cnkpOworICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBhZnRlcl90cnkpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOworICAgIEFERE9QKGMsIERVUF9UT1ApOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOworICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKKworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9FWENFUFQpOyAvKiBmb3IgU0VUVVBfRVhDRVBUICovCisgICAgQURET1AoYywgUE9QX0JMT0NLKTsgLyogZm9yIFNFVFVQX0xPT1AgKi8KKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIGFmdGVyX2xvb3BfZWxzZSk7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeV9jbGVhbnVwKTsKKyAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl90cnkpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LkFzeW5jRm9yLmJvZHkpOworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgdHJ5KTsKKworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7IC8qIGZvciBTRVRVUF9MT09QICovCisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBMT09QLCB0cnkpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfbG9vcCk7CisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCBlbmQpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfbG9vcF9lbHNlKTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Gb3Iub3JlbHNlKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGVuZCk7CisKKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGludAogY29tcGlsZXJfd2hpbGUoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CkBAIC0yNTEyLDcgKzI2NDYsNyBAQAogCiAgICAgc3dpdGNoIChzLT5raW5kKSB7CiAgICAgY2FzZSBGdW5jdGlvbkRlZl9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfZnVuY3Rpb24oYywgcyk7CisgICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzLCAwKTsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jbGFzcyhjLCBzKTsKICAgICBjYXNlIFJldHVybl9raW5kOgpAQCAtMjU5MSw3ICsyNzI1LDE0IEBACiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb250aW51ZShjKTsKICAgICBjYXNlIFdpdGhfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3dpdGgoYywgcywgMCk7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzLCAxKTsKKyAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfYXN5bmNfd2l0aChjLCBzLCAwKTsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hc3luY19mb3IoYywgcyk7CiAgICAgfQorCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTI2MjQsNiArMjc2NSw4IEBACiAgICAgICAgIHJldHVybiBCSU5BUllfU1VCVFJBQ1Q7CiAgICAgY2FzZSBNdWx0OgogICAgICAgICByZXR1cm4gQklOQVJZX01VTFRJUExZOworICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgcmV0dXJuIEJJTkFSWV9NQVRSSVhfTVVMVElQTFk7CiAgICAgY2FzZSBEaXY6CiAgICAgICAgIHJldHVybiBCSU5BUllfVFJVRV9ESVZJREU7CiAgICAgY2FzZSBNb2Q6CkBAIC0yNjg4LDYgKzI4MzEsOCBAQAogICAgICAgICByZXR1cm4gSU5QTEFDRV9TVUJUUkFDVDsKICAgICBjYXNlIE11bHQ6CiAgICAgICAgIHJldHVybiBJTlBMQUNFX01VTFRJUExZOworICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgcmV0dXJuIElOUExBQ0VfTUFUUklYX01VTFRJUExZOwogICAgIGNhc2UgRGl2OgogICAgICAgICByZXR1cm4gSU5QTEFDRV9UUlVFX0RJVklERTsKICAgICBjYXNlIE1vZDoKQEAgLTI3NDksOCArMjg5NCw3IEBACiAgICAgICAgICAgICBvcHR5cGUgPSBPUF9GQVNUOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdMT0JBTF9JTVBMSUNJVDoKLSAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrICYmCi0gICAgICAgICAgICAhYy0+dS0+dV9zdGUtPnN0ZV91bm9wdGltaXplZCkKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgb3B0eXBlID0gT1BfR0xPQkFMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdMT0JBTF9FWFBMSUNJVDoKQEAgLTI4NjgsNjcgKzMwMTIsMTQ1IEBACiB9CiAKIHN0YXRpYyBpbnQKK3N0YXJ1bnBhY2tfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmVsdHMsCisgICAgICAgICAgICAgICAgICBpbnQgc2luZ2xlX29wLCBpbnQgaW5uZXJfb3AsIGludCBvdXRlcl9vcCkKK3sKKyAgICBQeV9zc2l6ZV90IG4gPSBhc2RsX3NlcV9MRU4oZWx0cyk7CisgICAgUHlfc3NpemVfdCBpLCBuc3ViaXRlbXMgPSAwLCBuc2VlbiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChlbHRzLCBpKTsKKyAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKKyAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgIEFERE9QX0koYywgaW5uZXJfb3AsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1Yml0ZW1zKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CisgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBuc2VlbisrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChuc3ViaXRlbXMpIHsKKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIGlubmVyX29wLCBuc2Vlbik7CisgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIG91dGVyX29wLCBuc3ViaXRlbXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIEFERE9QX0koYywgc2luZ2xlX29wLCBuc2Vlbik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2Fzc2lnbm1lbnRfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmVsdHMpCit7CisgICAgUHlfc3NpemVfdCBuID0gYXNkbF9zZXFfTEVOKGVsdHMpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgc2Vlbl9zdGFyID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGVsdHMsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCAmJiAhc2Vlbl9zdGFyKSB7CisgICAgICAgICAgICBpZiAoKGkgPj0gKDEgPDwgOCkpIHx8CisgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKKyAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4cHJlc3Npb25zIGluICIKKyAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgIEFERE9QX0koYywgVU5QQUNLX0VYLCAoaSArICgobi1pLTEpIDw8IDgpKSk7CisgICAgICAgICAgICBzZWVuX3N0YXIgPSAxOworICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKKyAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghc2Vlbl9zdGFyKSB7CisgICAgICAgIEFERE9QX0koYywgVU5QQUNLX1NFUVVFTkNFLCBuKTsKKyAgICB9CisgICAgVklTSVRfU0VRKGMsIGV4cHIsIGVsdHMpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9saXN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlLT52Lkxpc3QuZWx0cyk7CisgICAgYXNkbF9zZXEgKmVsdHMgPSBlLT52Lkxpc3QuZWx0czsKICAgICBpZiAoZS0+di5MaXN0LmN0eCA9PSBTdG9yZSkgewotICAgICAgICBpbnQgaSwgc2Vlbl9zdGFyID0gMDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZS0+di5MaXN0LmVsdHMsIGkpOwotICAgICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQgJiYgIXNlZW5fc3RhcikgewotICAgICAgICAgICAgICAgIGlmICgoaSA+PSAoMSA8PCA4KSkgfHwKLSAgICAgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgZXhwcmVzc2lvbnMgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19FWCwgKGkgKyAoKG4taS0xKSA8PCA4KSkpOwotICAgICAgICAgICAgICAgIHNlZW5fc3RhciA9IDE7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGUtPnYuTGlzdC5lbHRzLCBpLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKLSAgICAgICAgICAgICAgICAgICAgInR3byBzdGFycmVkIGV4cHJlc3Npb25zIGluIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIXNlZW5fc3RhcikgewotICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfU0VRVUVOQ0UsIG4pOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBhc3NpZ25tZW50X2hlbHBlcihjLCBlbHRzKTsKICAgICB9Ci0gICAgVklTSVRfU0VRKGMsIGV4cHIsIGUtPnYuTGlzdC5lbHRzKTsKLSAgICBpZiAoZS0+di5MaXN0LmN0eCA9PSBMb2FkKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfTElTVCwgbik7CisgICAgZWxzZSBpZiAoZS0+di5MaXN0LmN0eCA9PSBMb2FkKSB7CisgICAgICAgIHJldHVybiBzdGFydW5wYWNrX2hlbHBlcihjLCBlbHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVJTERfTElTVCwgQlVJTERfVFVQTEUsIEJVSUxEX0xJU1RfVU5QQUNLKTsKICAgICB9CisgICAgZWxzZQorICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZWx0cyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX3R1cGxlKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpOworICAgIGFzZGxfc2VxICplbHRzID0gZS0+di5UdXBsZS5lbHRzOwogICAgIGlmIChlLT52LlR1cGxlLmN0eCA9PSBTdG9yZSkgewotICAgICAgICBpbnQgaSwgc2Vlbl9zdGFyID0gMDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZS0+di5UdXBsZS5lbHRzLCBpKTsKLSAgICAgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kICYmICFzZWVuX3N0YXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGkgPj0gKDEgPDwgOCkpIHx8Ci0gICAgICAgICAgICAgICAgICAgIChuLWktMSA+PSAoSU5UX01BWCA+PiA4KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4cHJlc3Npb25zIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdGFyLXVucGFja2luZyBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfRVgsIChpICsgKChuLWktMSkgPDwgOCkpKTsKLSAgICAgICAgICAgICAgICBzZWVuX3N0YXIgPSAxOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChlLT52LlR1cGxlLmVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOwotICAgICAgICAgICAgfQorICAgICAgICByZXR1cm4gYXNzaWdubWVudF9oZWxwZXIoYywgZWx0cyk7CisgICAgfQorICAgIGVsc2UgaWYgKGUtPnYuVHVwbGUuY3R4ID09IExvYWQpIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUlMRF9UVVBMRSwgQlVJTERfVFVQTEUsIEJVSUxEX1RVUExFX1VOUEFDSyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGVsdHMpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zZXQoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGUtPnYuU2V0LmVsdHMsIEJVSUxEX1NFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVJTERfU0VULCBCVUlMRF9TRVRfVU5QQUNLKTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG4sIGNvbnRhaW5lcnMsIGVsZW1lbnRzOworICAgIGludCBpc191bnBhY2tpbmcgPSAwOworICAgIG4gPSBhc2RsX3NlcV9MRU4oZS0+di5EaWN0LnZhbHVlcyk7CisgICAgY29udGFpbmVycyA9IDA7CisgICAgZWxlbWVudHMgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgaXNfdW5wYWNraW5nID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSA9PSBOVUxMOworICAgICAgICBpZiAoZWxlbWVudHMgPT0gMHhGRkZGIHx8IChlbGVtZW50cyAmJiBpc191bnBhY2tpbmcpKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgZWxlbWVudHMpOworICAgICAgICAgICAgY29udGFpbmVycysrOworICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc2Vlbl9zdGFyKSB7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19TRVFVRU5DRSwgbik7CisgICAgICAgIGlmIChpc191bnBhY2tpbmcpIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgICAgICBjb250YWluZXJzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQotICAgIFZJU0lUX1NFUShjLCBleHByLCBlLT52LlR1cGxlLmVsdHMpOwotICAgIGlmIChlLT52LlR1cGxlLmN0eCA9PSBMb2FkKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG4pOworICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgY29udGFpbmVycysrOworICAgIH0KKyAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldworICAgICAqIGRpY3QuICBJZiB0aGVyZSBpcyBvbmUgZGljdCBhbmQgaXQncyBhbiB1bnBhY2tpbmcsIHRoZW4gaXQgbmVlZHMKKyAgICAgKiB0byBiZSBjb3BpZWQgaW50byBhIG5ldyBkaWN0LiIgKi8KKyAgICB3aGlsZSAoY29udGFpbmVycyA+IDEgfHwgaXNfdW5wYWNraW5nKSB7CisgICAgICAgIGludCBvcGFyZyA9IGNvbnRhaW5lcnMgPCAyNTUgPyBjb250YWluZXJzIDogMjU1OworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0ssIG9wYXJnKTsKKyAgICAgICAgY29udGFpbmVycyAtPSAob3BhcmcgLSAxKTsKKyAgICAgICAgaXNfdW5wYWNraW5nID0gMDsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0yOTg0LDkgKzMyMDYsNyBAQAogICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQ2FsbC5mdW5jKTsKICAgICByZXR1cm4gY29tcGlsZXJfY2FsbF9oZWxwZXIoYywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnYuQ2FsbC5rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLnN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwua3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAogLyogc2hhcmVkIGNvZGUgYmV0d2VlbiBjb21waWxlcl9jYWxsIGFuZCBjb21waWxlcl9jbGFzcyAqLwpAQCAtMjk5NCwyNiArMzIxNCwxMDIgQEAKIGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLwogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpCiB7CiAgICAgaW50IGNvZGUgPSAwOworICAgIFB5X3NzaXplX3QgbmVsdHMsIGksIG5zZWVuLCBua3c7CiAKLSAgICBuICs9IGFzZGxfc2VxX0xFTihhcmdzKTsKLSAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncyk7Ci0gICAgaWYgKGtleXdvcmRzKSB7Ci0gICAgICAgIFZJU0lUX1NFUShjLCBrZXl3b3JkLCBrZXl3b3Jkcyk7Ci0gICAgICAgIG4gfD0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKSA8PCA4OworICAgIC8qIHRoZSBudW1iZXIgb2YgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgb24gdGhlIHN0YWNrICovCisgICAgUHlfc3NpemVfdCBuc3ViYXJncyA9IDAsIG5zdWJrd2FyZ3MgPSAwOworCisgICAgbmt3ID0gMDsKKyAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLworICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGFyZ3MpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgeworICAgICAgICAgICAgLyogQSBzdGFyLWFyZy4gSWYgd2UndmUgc2VlbiBwb3NpdGlvbmFsIGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYQorICAgICAgICAgICAgICAgdHVwbGUuICovCisgICAgICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgICAgICAgICAgICAgIG5zdWJhcmdzKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CisgICAgICAgICAgICBuc3ViYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzKSB7CisgICAgICAgICAgICAvKiBXZSd2ZSBzZWVuIHN0YXItYXJncyBhbHJlYWR5LCBzbyB3ZQorICAgICAgICAgICAgICAgY291bnQgdG93YXJkcyBpdGVtcy10by1wYWNrLWludG8tdHVwbGUuICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBzdGFyLWFyZ3VtZW50cworICAgICAgICAgICAgICAgYXJlIGxlZnQgb24gdGhlIHN0YWNrLiAqLworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoc3RhcmFyZ3MpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwgc3RhcmFyZ3MpOworICAgIGlmIChuc2VlbikgeworICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOworICAgICAgICBuc3ViYXJncysrOworICAgIH0KKyAgICBpZiAobnN1YmFyZ3MpIHsKICAgICAgICAgY29kZSB8PSAxOworICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAorICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9MSVNUX1VOUEFDSywgbnN1YmFyZ3MpOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChrd2FyZ3MpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwga3dhcmdzKTsKKworICAgIC8qIFNhbWUgZGFuY2UgYWdhaW4gZm9yIGtleXdvcmQgYXJndW1lbnRzICovCisgICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCisgICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CisgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLworICAgICAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuc3Via3dhcmdzKSB7CisgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGRpY3QuICovCisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGtleXdvcmQgYXJndW1lbnQgKi8KKyAgICAgICAgICAgIFZJU0lUKGMsIGtleXdvcmQsIGt3KQorICAgICAgICAgICAgbmt3Kys7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG5zZWVuKSB7CisgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOworICAgICAgICBuc3Via3dhcmdzKys7CisgICAgfQorICAgIGlmIChuc3Via3dhcmdzKSB7CiAgICAgICAgIGNvZGUgfD0gMjsKKyAgICAgICAgaWYgKG5zdWJrd2FyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBQYWNrIGl0IGFsbCB1cCAqLworICAgICAgICAgICAgaW50IGZ1bmN0aW9uX3BvcyA9IG4gKyAoY29kZSAmIDEpICsgbmt3ICsgMTsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MgfCAoZnVuY3Rpb25fcG9zIDw8IDgpKTsKKyAgICAgICAgfQogICAgIH0KKyAgICBhc3NlcnQobiA8IDE8PDgpOworICAgIGFzc2VydChua3cgPCAxPDwyNCk7CisgICAgbiB8PSBua3cgPDwgODsKKwogICAgIHN3aXRjaCAoY29kZSkgewogICAgIGNhc2UgMDoKICAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuKTsKQEAgLTMxMzgsOCArMzQzNCw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLCBpZGVudGlmaWVyIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwpCitjb21waWxlcl9jb21wcmVoZW5zaW9uKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlLCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgZXhwcl90eSBlbHQsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwogICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CkBAIC0zMzEyLDYgKzM2MDksMTAyIEBACiAgICAgfQogfQogCisKKy8qCisgICBJbXBsZW1lbnRzIHRoZSBhc3luYyB3aXRoIHN0YXRlbWVudC4KKworICAgVGhlIHNlbWFudGljcyBvdXRsaW5lZCBpbiB0aGF0IFBFUCBhcmUgYXMgZm9sbG93czoKKworICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjoKKyAgICAgICBCTE9DSworCisgICBJdCBpcyBpbXBsZW1lbnRlZCByb3VnaGx5IGFzOgorCisgICBjb250ZXh0ID0gRVhQUgorICAgZXhpdCA9IGNvbnRleHQuX19hZXhpdF9fICAjIG5vdCBjYWxsaW5nIGl0CisgICB2YWx1ZSA9IGF3YWl0IGNvbnRleHQuX19hZW50ZXJfXygpCisgICB0cnk6CisgICAgICAgVkFSID0gdmFsdWUgICMgaWYgVkFSIHByZXNlbnQgaW4gdGhlIHN5bnRheAorICAgICAgIEJMT0NLCisgICBmaW5hbGx5OgorICAgICAgIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgorICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKKyAgICAgICBlbHNlOgorICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQorICAgICAgIGlmIG5vdCAoYXdhaXQgZXhpdCgqZXhjKSk6CisgICAgICAgICAgIHJhaXNlCisgKi8KK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBwb3MpCit7CisgICAgYmFzaWNibG9jayAqYmxvY2ssICpmaW5hbGx5OworICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQocy0+di5Bc3luY1dpdGguaXRlbXMsIHBvcyk7CisKKyAgICBhc3NlcnQocy0+a2luZCA9PSBBc3luY1dpdGhfa2luZCk7CisKKyAgICBibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBmaW5hbGx5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGlmICghYmxvY2sgfHwgIWZpbmFsbHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogRXZhbHVhdGUgRVhQUiAqLworICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CisKKyAgICBBRERPUChjLCBCRUZPUkVfQVNZTkNfV0lUSCk7CisgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9BU1lOQ19XSVRILCBmaW5hbGx5KTsKKworICAgIC8qIFNFVFVQX0FTWU5DX1dJVEggcHVzaGVzIGEgZmluYWxseSBibG9jay4gKi8KKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBibG9jayk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYmxvY2spKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAvKiBEaXNjYXJkIHJlc3VsdCBmcm9tIGNvbnRleHQuX19hZW50ZXJfXygpICovCisgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIH0KKworICAgIHBvcysrOworICAgIGlmIChwb3MgPT0gYXNkbF9zZXFfTEVOKHMtPnYuQXN5bmNXaXRoLml0ZW1zKSkKKyAgICAgICAgLyogQkxPQ0sgY29kZSAqLworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Bc3luY1dpdGguYm9keSkKKyAgICBlbHNlIGlmICghY29tcGlsZXJfYXN5bmNfd2l0aChjLCBzLCBwb3MpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBFbmQgb2YgdHJ5IGJsb2NrOyBzdGFydCB0aGUgZmluYWxseSBibG9jayAqLworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYmxvY2spOworCisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGZpbmFsbHkpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGZpbmFsbHkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIEZpbmFsbHkgYmxvY2sgc3RhcnRzOyBjb250ZXh0Ll9fZXhpdF9fIGlzIG9uIHRoZSBzdGFjayB1bmRlcgorICAgICAgIHRoZSBleGNlcHRpb24gb3IgcmV0dXJuIGluZm9ybWF0aW9uLiBKdXN0IGlzc3VlIG91ciBtYWdpYworICAgICAgIG9wY29kZS4gKi8KKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfU1RBUlQpOworCisgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgQURET1AoYywgV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisKKyAgICAvKiBGaW5hbGx5IGJsb2NrIGVuZHMuICovCisgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGZpbmFsbHkpOworICAgIHJldHVybiAxOworfQorCisKIC8qCiAgICBJbXBsZW1lbnRzIHRoZSB3aXRoIHN0YXRlbWVudCBmcm9tIFBFUCAzNDMuCiAKQEAgLTMzODUsNyArMzc3OCw4IEBACiAgICAgLyogRmluYWxseSBibG9jayBzdGFydHM7IGNvbnRleHQuX19leGl0X18gaXMgb24gdGhlIHN0YWNrIHVuZGVyCiAgICAgICAgdGhlIGV4Y2VwdGlvbiBvciByZXR1cm4gaW5mb3JtYXRpb24uIEp1c3QgaXNzdWUgb3VyIG1hZ2ljCiAgICAgICAgb3Bjb2RlLiAqLwotICAgIEFERE9QKGMsIFdJVEhfQ0xFQU5VUCk7CisgICAgQURET1AoYywgV0lUSF9DTEVBTlVQX1NUQVJUKTsKKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfRklOSVNIKTsKIAogICAgIC8qIEZpbmFsbHkgYmxvY2sgZW5kcy4gKi8KICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CkBAIC0zMzk2LDggKzM3OTAsNiBAQAogc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0KICAgICAvKiBJZiBleHByIGUgaGFzIGEgZGlmZmVyZW50IGxpbmUgbnVtYmVyIHRoYW4gdGhlIGxhc3QgZXhwci9zdG10LAogICAgICAgIHNldCBhIG5ldyBsaW5lIG51bWJlciBmb3IgdGhlIG5leHQgaW5zdHJ1Y3Rpb24uCiAgICAgKi8KQEAgLTM0MjQsMjMgKzM4MTYsOSBAQAogICAgIGNhc2UgSWZFeHBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2lmZXhwKGMsIGUpOwogICAgIGNhc2UgRGljdF9raW5kOgotICAgICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwotICAgICAgICAvKiBCVUlMRF9NQVAgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCB0byBwcmVhbGxvY2F0ZSB0aGUgZGljdGlvbmFyeSwKLSAgICAgICAgICAgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGV4YWN0ICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCAobj4weEZGRkYgPyAweEZGRkYgOiBuKSk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsCi0gICAgICAgICAgICAgICAgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsCi0gICAgICAgICAgICAgICAgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7Ci0gICAgICAgICAgICBBRERPUChjLCBTVE9SRV9NQVApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfZGljdChjLCBlKTsKICAgICBjYXNlIFNldF9raW5kOgotICAgICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuU2V0LmVsdHMpOwotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5TZXQuZWx0cyk7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfU0VULCBuKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBjb21waWxlcl9zZXQoYywgZSk7CiAgICAgY2FzZSBHZW5lcmF0b3JFeHBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2dlbmV4cChjLCBlKTsKICAgICBjYXNlIExpc3RDb21wX2tpbmQ6CkBAIC0zNDUyLDYgKzM4MzAsOCBAQAogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKyAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOwogICAgICAgICB9CkBAIC0zNDYzLDggKzM4NDMsMjggQEAKICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOworCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCBmcm9tJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKKwogICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7Ci0gICAgICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICAgICAgQURET1AoYywgR0VUX1lJRUxEX0ZST01fSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKworICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04pCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgYywgIidhd2FpdCcgZXhwcmVzc2lvbnMgaW4gY29tcHJlaGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKKworICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKKworICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKKyAgICAgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKICAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU1MSw3ICszOTUxLDcgQEAKICAgICAgICAgICAgICAgICAic3RhcnJlZCBhc3NpZ25tZW50IHRhcmdldCBtdXN0IGJlIGluIGEgbGlzdCBvciB0dXBsZSIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgImNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lX2tpbmQ6CkBAIC00MTgxLDkgKzQ1ODEsNyBAQAogICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIGlmIChzdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2spIHsKLSAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTOwotICAgICAgICBpZiAoIXN0ZS0+c3RlX3Vub3B0aW1pemVkKQotICAgICAgICAgICAgZmxhZ3MgfD0gQ09fT1BUSU1JWkVEOworICAgICAgICBmbGFncyB8PSBDT19ORVdMT0NBTFMgfCBDT19PUFRJTUlaRUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9uZXN0ZWQpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19ORVNURUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9QeXRob24vY29uZHZhci5oIGIvUHl0aG9uL2NvbmR2YXIuaAppbmRleCBlZjgxOGM0Li5iYjViMWI2IDEwMDY0NAotLS0gYS9QeXRob24vY29uZHZhci5oCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTEsNCArMSw0IEBACi0vKiAKKy8qCiAgKiBQb3J0YWJsZSBjb25kaXRpb24gdmFyaWFibGUgc3VwcG9ydCBmb3Igd2luZG93cyBhbmQgcHRocmVhZHMuCiAgKiBFdmVyeXRoaW5nIGlzIGlubGluZSwgdGhpcyBoZWFkZXIgY2FuIGJlIGluY2x1ZGVkIHdoZXJlIG5lZWRlZC4KICAqCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgZWxzZSBpZiAocikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGVsc2UgCisgICAgZWxzZQogICAgICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjU1LDcgKzI1NSw3IEBACiAgICAgICAgICAqIGEgbmV3IHRocmVhZCBjb21lcyBhbG9uZywgaXQgd2lsbCBwYXNzIHJpZ2h0IHRocm91aGdoLCBoYXZpbmcKICAgICAgICAgICogYWRqdXN0ZWQgaXQgdG8gKHdhaXRpbmcgPT0gMCAmJiBzZW0uY291bnQgPT0gMCkuCiAgICAgICAgICAqLwotICAgICAgICAgCisKICAgICBpZiAod2FpdCA9PSBXQUlUX0ZBSUxFRCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIC8qIHJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gdGltZW91dCAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R0b2EuYyBiL1B5dGhvbi9kdG9hLmMKaW5kZXggODk5NmE3Mi4uM2RhNTQ2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2R0b2EuYworKysgYi9QeXRob24vZHRvYS5jCkBAIC0zNzMsNyArMzczLDcgQEAKICAgICAgICAgeCA9IDEgPDwgazsKICAgICAgICAgbGVuID0gKHNpemVvZihCaWdpbnQpICsgKHgtMSkqc2l6ZW9mKFVMb25nKSArIHNpemVvZihkb3VibGUpIC0gMSkKICAgICAgICAgICAgIC9zaXplb2YoZG91YmxlKTsKLSAgICAgICAgaWYgKGsgPD0gS21heCAmJiBwbWVtX25leHQgLSBwcml2YXRlX21lbSArIGxlbiA8PSBQUklWQVRFX21lbSkgeworICAgICAgICBpZiAoayA8PSBLbWF4ICYmIHBtZW1fbmV4dCAtIHByaXZhdGVfbWVtICsgbGVuIDw9IChQeV9zc2l6ZV90KVBSSVZBVEVfbWVtKSB7CiAgICAgICAgICAgICBydiA9IChCaWdpbnQqKXBtZW1fbmV4dDsKICAgICAgICAgICAgIHBtZW1fbmV4dCArPSBsZW47CiAgICAgICAgIH0KQEAgLTEwODcsNyArMTA4Nyw3IEBACiAgICAgYiA9IEJhbGxvYygxKTsKICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKKwogICAgIC8qIEZpcnN0IGNvbnN0cnVjdCBiIGFuZCBlIGFzc3VtaW5nIHRoYXQgc2NhbGUgPT0gMC4gKi8KICAgICBiLT53ZHMgPSAyOwogICAgIGItPnhbMF0gPSB3b3JkMShkKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2FpeC5jIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKaW5kZXggNWFjMzBlZC4uYjNmZjhlMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKQEAgLTE1NCw4ICsxNTQsOSBAQAogfQogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2RsLmMgYi9QeXRob24vZHlubG9hZF9kbC5jCmluZGV4IDU4MzZjYjNiLi4yYmVjNjQ1IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9kbC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKQEAgLTEyLDExICsxMiwxMiBAQAogY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5vIiwgTlVMTH07CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogICAgIHJldHVybiBkbF9sb2FkbW9kKFB5X0dldFByb2dyYW1OYW1lKCksIHBhdGhuYW1lLCBmdW5jbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9ocHV4LmMgYi9QeXRob24vZHlubG9hZF9ocHV4LmMKaW5kZXggYzk1NTQxNC4uNDk2N2FmYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwpAQCAtOCwxNSArOCwxNiBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKICNpZiBkZWZpbmVkKF9faHA5MDAwczMwMCkKLSNkZWZpbmUgRlVOQ05BTUVfUEFUVEVSTiAiX1B5SW5pdF8lLjIwMHMiCisjZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIl8lLjIwc18lLjIwMHMiCiAjZWxzZQotI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICJQeUluaXRfJS4yMDBzIgorI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICIlLjIwc18lLjIwMHMiCiAjZW5kaWYKIAogY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7U0hMSUJfRVhULCBOVUxMfTsKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICBzaGxfdCBsaWI7CkBAIC01MCw3ICs1MSw4IEBACiAgICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCBGVU5DTkFNRV9QQVRURVJOLCBzaG9ydG5hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksIEZVTkNOQU1FX1BBVFRFUk4sCisgICAgICAgICAgICAgICAgICBwcmVmaXgsIHNob3J0bmFtZSk7CiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICBwcmludGYoInNobF9maW5kc3ltICVzXG4iLCBmdW5jbmFtZSk7CiAgICAgaWYgKHNobF9maW5kc3ltKCZsaWIsIGZ1bmNuYW1lLCBUWVBFX1VOREVGSU5FRCwgKHZvaWQgKikgJnApID09IC0xKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9uZXh0LmMgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKaW5kZXggODVjOTViNC4uODNhOGIyYmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX25leHQuYworKysgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKQEAgLTI3LDggKzI3LDkgQEAKICNkZWZpbmUgTElOS09QVElPTlMgTlNMSU5LTU9EVUxFX09QVElPTl9CSU5ETk9XfCBcCiAgICAgTlNMSU5LTU9EVUxFX09QVElPTl9SRVRVUk5fT05fRVJST1J8TlNMSU5LTU9EVUxFX09QVElPTl9QUklWQVRFCiAjZW5kaWYKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHAgPSBOVUxMOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKQEAgLTM5LDcgKzQwLDcgQEAKICAgICBjb25zdCBjaGFyICplcnJTdHJpbmc7CiAgICAgY2hhciBlcnJCdWZbNTEyXTsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJfUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CisgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIl8lLjIwc18lLjIwMHMiLCBwcmVmaXgsIHNob3J0bmFtZSk7CiAKICNpZmRlZiBVU0VfRFlMRF9HTE9CQUxfTkFNRVNQQUNFCiAgICAgaWYgKE5TSXNTeW1ib2xOYW1lRGVmaW5lZChmdW5jbmFtZSkpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCmluZGV4IDVjZDFlZmQuLjdmOGYxMzQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3NobGliLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYwpAQCAtNTEsOCArNTEsMTAgQEAKIHN0YXRpYyBpbnQgbmhhbmRsZXMgPSAwOwogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIKK19QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAgICAgdm9pZCAqaGFuZGxlOwpAQCAtNjcsMjYgKzY5LDI0IEBACiAgICAgfQogCiAgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwKLSAgICAgICAgICAgICAgICAgIExFQURfVU5ERVJTQ09SRSAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CisgICAgICAgICAgICAgICAgICBMRUFEX1VOREVSU0NPUkUgIiUuMjBzXyUuMjAwcyIsIHByZWZpeCwgc2hvcnRuYW1lKTsKIAogICAgIGlmIChmcCAhPSBOVUxMKSB7CiAgICAgICAgIGludCBpOwotICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YjsKLSAgICAgICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdGF0YikgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CisgICAgICAgIGlmIChfUHlfZnN0YXQoZmlsZW5vKGZwKSwgJnN0YXR1cykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmhhbmRsZXM7IGkrKykgewotICAgICAgICAgICAgaWYgKHN0YXRiLnN0X2RldiA9PSBoYW5kbGVzW2ldLmRldiAmJgotICAgICAgICAgICAgICAgIHN0YXRiLnN0X2lubyA9PSBoYW5kbGVzW2ldLmlubykgeworICAgICAgICAgICAgaWYgKHN0YXR1cy5zdF9kZXYgPT0gaGFuZGxlc1tpXS5kZXYgJiYKKyAgICAgICAgICAgICAgICBzdGF0dXMuc3RfaW5vID09IGhhbmRsZXNbaV0uaW5vKSB7CiAgICAgICAgICAgICAgICAgcCA9IChkbF9mdW5jcHRyKSBkbHN5bShoYW5kbGVzW2ldLmhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobmhhbmRsZXMgPCAxMjgpIHsKLSAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmRldiA9IHN0YXRiLnN0X2RldjsKLSAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmlubyA9IHN0YXRiLnN0X2lubzsKKyAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmRldiA9IHN0YXR1cy5zdF9kZXY7CisgICAgICAgICAgICBoYW5kbGVzW25oYW5kbGVzXS5pbm8gPSBzdGF0dXMuc3RfaW5vOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF93aW4uYyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCmluZGV4IGZmY2YwZWUuLmYyYzc5NmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3dpbi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCkBAIC05LDYgKzksNyBAQAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgorI2luY2x1ZGUgInBhdGNobGV2ZWwuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIC8vICJhY3RpdmF0aW9uIGNvbnRleHQiIG1hZ2ljIC0gc2VlIGRsX250LmMuLi4KQEAgLTE3LDE2ICsxOCwyOCBAQAogdm9pZCBfUHlfRGVhY3RpdmF0ZUFjdEN0eChVTE9OR19QVFIgY29va2llKTsKICNlbmRpZgogCi1jb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKICNpZmRlZiBfREVCVUcKLSAgICAiX2QucHlkIiwKKyNkZWZpbmUgUFlEX0RFQlVHX1NVRkZJWCAiX2QiCiAjZWxzZQotICAgICIucHlkIiwKKyNkZWZpbmUgUFlEX0RFQlVHX1NVRkZJWCAiIgogI2VuZGlmCisKKyNkZWZpbmUgU1RSSU5HSVpFMih4KSAjeAorI2RlZmluZSBTVFJJTkdJWkUoeCkgU1RSSU5HSVpFMih4KQorI2lmZGVmIFBZRF9QTEFURk9STV9UQUcKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgorI2Vsc2UKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgorI2VuZGlmCisKKyNkZWZpbmUgUFlEX1VOVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIucHlkIgorCitjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKKyAgICBQWURfVEFHR0VEX1NVRkZJWCwKKyAgICBQWURfVU5UQUdHRURfU1VGRklYLAogICAgIE5VTEwKIH07CiAKLQogLyogQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyZSwgdG8gYXZvaWQgYW55IGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyCiAgICBDIFJUTCBpbXBsZW1lbnRhdGlvbnMgKi8KIApAQCAtMTczLDggKzE4Niw5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cldpbmRvd3MoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICBjaGFyIGZ1bmNuYW1lWzI1OF0sICppbXBvcnRfcHl0aG9uOwpAQCAtMTg4LDcgKzIwMiw3IEBACiAgICAgaWYgKHdwYXRobmFtZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogCiAgICAgewogICAgICAgICBISU5TVEFOQ0UgaERMTCA9IE5VTEw7CmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggYjBhZDlhYS4uYWVkMmJkYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtNzQsMTEgKzc0LDExIEBACiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICAgICAgLyogV2UgbXVzdCBub3JtYWxpemUgdGhlIHZhbHVlIHJpZ2h0IG5vdyAqLwogICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpmaXhlZF92YWx1ZTsKLSNpZmRlZiBQeV9ERUJVRwotICAgICAgICAgICAgLyogaW4gZGVidWcgbW9kZSwgUHlFdmFsX0V2YWxGcmFtZUV4KCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24KLSAgICAgICAgICAgICAgIGVycm9yIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KKworICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBQeUV2YWxfQ2FsbE9iamVjdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCisgICAgICAgICAgICAgICBleGNlcHRpb24gc2V0ICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCisKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTMxOSw3ICszMTksNyBAQAogICAgICAgICBQeV9ERUNSRUYoKmV4Yyk7CiAgICAgICAgIFB5X0RFQ1JFRigqdmFsKTsKICAgICAgICAgLyogLi4uIGFuZCB1c2UgdGhlIHJlY3Vyc2lvbiBlcnJvciBpbnN0ZWFkICovCi0gICAgICAgICpleGMgPSBQeUV4Y19SdW50aW1lRXJyb3I7CisgICAgICAgICpleGMgPSBQeUV4Y19SZWN1cnNpb25FcnJvcjsKICAgICAgICAgKnZhbCA9IFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdDsKICAgICAgICAgUHlfSU5DUkVGKCpleGMpOwogICAgICAgICBQeV9JTkNSRUYoKnZhbCk7CkBAIC03NzMsMzQgKzc3MywzOCBAQAogI2RlZmluZSBQeUVycl9CYWRJbnRlcm5hbENhbGwoKSBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKF9fRklMRV9fLCBfX0xJTkVfXykKIAogCitQeU9iamVjdCAqCitQeUVycl9Gb3JtYXRWKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCogc3RyaW5nOworCisgICAgLyogSXNzdWUgIzIzNTcxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbgorICAgICAgIGV4Y2VwdGlvbiBzZXQsIGl0IGNhbGxzIGFyYml0cmFyeSBQeXRob24gY29kZSBsaWtlIFB5T2JqZWN0X1JlcHIoKSAqLworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7CisKKyAgICBQeUVycl9TZXRPYmplY3QoZXhjZXB0aW9uLCBzdHJpbmcpOworICAgIFB5X1hERUNSRUYoc3RyaW5nKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogCiBQeU9iamVjdCAqCiBQeUVycl9Gb3JtYXQoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YXJnczsKLSAgICBQeU9iamVjdCogc3RyaW5nOwotCiAjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwogICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOwogI2Vsc2UKICAgICB2YV9zdGFydCh2YXJncyk7CiAjZW5kaWYKLQotI2lmZGVmIFB5X0RFQlVHCi0gICAgLyogaW4gZGVidWcgbW9kZSwgUHlFdmFsX0V2YWxGcmFtZUV4KCkgZmFpbHMgd2l0aCBhbiBhc3NlcnRpb24gZXJyb3IKLSAgICAgICBpZiBhbiBleGNlcHRpb24gaXMgc2V0IHdoZW4gaXQgaXMgY2FsbGVkICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSNlbmRpZgotCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGZvcm1hdCwgdmFyZ3MpOwotICAgIFB5RXJyX1NldE9iamVjdChleGNlcHRpb24sIHN0cmluZyk7Ci0gICAgUHlfWERFQ1JFRihzdHJpbmcpOworICAgIFB5RXJyX0Zvcm1hdFYoZXhjZXB0aW9uLCBmb3JtYXQsIHZhcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAKLQogUHlPYmplY3QgKgogUHlFcnJfTmV3RXhjZXB0aW9uKGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpiYXNlLCBQeU9iamVjdCAqZGljdCkKIHsKQEAgLTExMjEsNiArMTEyNSwxMCBAQAogICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMIHx8IGxpbmVubyA8PSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmcCA9IF9QeV9mb3Blbl9vYmooZmlsZW5hbWUsICJyIiBQWV9TVERJT1RFWFRNT0RFKTsKKyAgICBpZiAoZnAgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIGVycl9wcm9ncmFtdGV4dChmcCwgbGluZW5vKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2ZpbGV1dGlscy5jIGIvUHl0aG9uL2ZpbGV1dGlscy5jCmluZGV4IDMxNjg5YzAuLmJjY2QzMjEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9maWxldXRpbHMuYworKysgYi9QeXRob24vZmlsZXV0aWxzLmMKQEAgLTMsNyArMyw5IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBNU19XSU5ET1dTCisjICBpbmNsdWRlIDxtYWxsb2MuaD4KICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KK2V4dGVybiBpbnQgd2luZXJyb3JfdG9fZXJybm8oaW50KTsKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICkBAIC0yOSw3ICszMSw4IEBACiAgICAgMDogb3BlbigpIGlnbm9yZXMgT19DTE9FWEVDIGZsYWcsIGV4OiBMaW51eCBrZXJuZWwgb2xkZXIgdGhhbiAyLjYuMjMKICAgICAxOiBvcGVuKCkgc3VwcG9ydHMgT19DTE9FWEVDIGZsYWcsIGNsb3NlLW9uLWV4ZWMgaXMgc2V0CiAKLSAgIFRoZSBmbGFnIGlzIHVzZWQgYnkgX1B5X29wZW4oKSwgaW8uRmlsZUlPIGFuZCBvcy5vcGVuKCkgKi8KKyAgIFRoZSBmbGFnIGlzIHVzZWQgYnkgX1B5X29wZW4oKSwgX1B5X29wZW5fbm9yYWlzZSgpLCBpby5GaWxlSU8KKyAgIGFuZCBvcy5vcGVuKCkuICovCiBpbnQgX1B5X29wZW5fY2xvZXhlY193b3JrcyA9IC0xOwogI2VuZGlmCiAKQEAgLTM5LDkgKzQyLDEzIEBACiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIFVJTlQgY3A7CiAjZW5kaWYKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKKyAgICBpbnQgdmFsaWQ7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHZhbGlkID0gX1B5VmVyaWZ5X2ZkKGZkKSAmJiBpc2F0dHkoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKCF2YWxpZCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQorCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIGlmIChmZCA9PSAwKQogICAgICAgICBjcCA9IEdldENvbnNvbGVDUCgpOwpAQCAtODIsMTEgKzg5LDExIEBACiAKICAgIFZhbHVlcyBvZiBmb3JjZV9hc2NpaToKIAotICAgICAgIDE6IHRoZSB3b3JrYXJvdW5kIGlzIHVzZWQ6IF9QeV93Y2hhcjJjaGFyKCkgdXNlcwotICAgICAgICAgIGVuY29kZV9hc2NpaV9zdXJyb2dhdGVlc2NhcGUoKSBhbmQgX1B5X2NoYXIyd2NoYXIoKSB1c2VzCisgICAgICAgMTogdGhlIHdvcmthcm91bmQgaXMgdXNlZDogUHlfRW5jb2RlTG9jYWxlKCkgdXNlcworICAgICAgICAgIGVuY29kZV9hc2NpaV9zdXJyb2dhdGVlc2NhcGUoKSBhbmQgUHlfRGVjb2RlTG9jYWxlKCkgdXNlcwogICAgICAgICAgIGRlY29kZV9hc2NpaV9zdXJyb2dhdGVlc2NhcGUoKQotICAgICAgIDA6IHRoZSB3b3JrYXJvdW5kIGlzIG5vdCB1c2VkOiBfUHlfd2NoYXIyY2hhcigpIHVzZXMgd2NzdG9tYnMoKSBhbmQKLSAgICAgICAgICBfUHlfY2hhcjJ3Y2hhcigpIHVzZXMgbWJzdG93Y3MoKQorICAgICAgIDA6IHRoZSB3b3JrYXJvdW5kIGlzIG5vdCB1c2VkOiBQeV9FbmNvZGVMb2NhbGUoKSB1c2VzIHdjc3RvbWJzKCkgYW5kCisgICAgICAgICAgUHlfRGVjb2RlTG9jYWxlKCkgdXNlcyBtYnN0b3djcygpCiAgICAgICAtMTogdW5rbm93biwgbmVlZCB0byBjYWxsIGNoZWNrX2ZvcmNlX2FzY2lpKCkgdG8gZ2V0IHRoZSB2YWx1ZQogKi8KIHN0YXRpYyBpbnQgZm9yY2VfYXNjaWkgPSAtMTsKQEAgLTI0NCwyNCArMjUxLDI2IEBACiAKIAogLyogRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nIHdpdGggdGhlCi0gICBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciAodW5kZWNvZGFibGUgYnl0ZXMgYXJlIGRlY29kZWQgYXMgY2hhcmFjdGVycwotICAgaW4gcmFuZ2UgVStEQzgwLi5VK0RDRkYpLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuIGJlIGRlY29kZWQgYXMgYSBzdXJyb2dhdGUKKyAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyOiB1bmRlY29kYWJsZSBieXRlcyBhcmUgZGVjb2RlZCBhcyBjaGFyYWN0ZXJzCisgICBpbiByYW5nZSBVK0RDODAuLlUrRENGRi4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbiBiZSBkZWNvZGVkIGFzIGEgc3Vycm9nYXRlCiAgICBjaGFyYWN0ZXIsIGVzY2FwZSB0aGUgYnl0ZXMgdXNpbmcgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGluc3RlYWQKICAgIG9mIGRlY29kaW5nIHRoZW0uCiAKLSAgIFVzZSBfUHlfd2NoYXIyY2hhcigpIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyIHN0cmluZyBiYWNrIHRvIGEgYnl0ZSBzdHJpbmcuCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZywgdXNlCisgICBQeU1lbV9SYXdGcmVlKCkgdG8gZnJlZSB0aGUgbWVtb3J5LiBJZiBzaXplIGlzIG5vdCBOVUxMLCB3cml0ZSB0aGUgbnVtYmVyIG9mCisgICB3aWRlIGNoYXJhY3RlcnMgZXhjbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpbnRvICpzaXplCiAKLSAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICh1c2UKLSAgIFB5TWVtX1Jhd0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkpIGFuZCB3cml0ZSB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gd2lkZQotICAgY2hhcmFjdGVycyBleGNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGludG8gKnNpemUgaWYgc2l6ZSBpcyBub3QgTlVMTCwgb3IKLSAgIE5VTEwgb24gZXJyb3IgKGRlY29kaW5nIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yKS4gSWYgc2l6ZSBpcyBub3QgTlVMTCwKLSAgICpzaXplIGlzIHNldCB0byAoc2l6ZV90KS0xIG9uIG1lbW9yeSBlcnJvciBhbmQgKHNpemVfdCktMiBvbiBkZWNvZGluZwotICAgZXJyb3IuCisgICBSZXR1cm4gTlVMTCBvbiBkZWNvZGluZyBlcnJvciBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4gSWYgKnNpemUqIGlzIG5vdAorICAgTlVMTCwgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIG9yIHNldCB0byAoc2l6ZV90KS0yIG9uCisgICBkZWNvZGluZyBlcnJvci4KIAotICAgQ29udmVyc2lvbiBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCi0gICBsaWJyYXJ5LiAqLworICAgRGVjb2RpbmcgZXJyb3JzIHNob3VsZCBuZXZlciBoYXBwZW4sIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgQworICAgbGlicmFyeS4KKworICAgVXNlIHRoZSBQeV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbiB0byBlbmNvZGUgdGhlIGNoYXJhY3RlciBzdHJpbmcgYmFjayB0byBhCisgICBieXRlIHN0cmluZy4gKi8KIHdjaGFyX3QqCi1fUHlfY2hhcjJ3Y2hhcihjb25zdCBjaGFyKiBhcmcsIHNpemVfdCAqc2l6ZSkKK1B5X0RlY29kZUxvY2FsZShjb25zdCBjaGFyKiBhcmcsIHNpemVfdCAqc2l6ZSkKIHsKICNpZmRlZiBfX0FQUExFX18KICAgICB3Y2hhcl90ICp3c3RyOwpAQCAtMzk5LDE5ICs0MDgsMjAgQEAKICNlbmRpZiAgIC8qIF9fQVBQTEVfXyAqLwogfQogCi0vKiBFbmNvZGUgYSAod2lkZSkgY2hhcmFjdGVyIHN0cmluZyB0byB0aGUgbG9jYWxlIGVuY29kaW5nIHdpdGggdGhlCi0gICBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciAoY2hhcmFjdGVycyBpbiByYW5nZSBVK0RDODAuLlUrRENGRiBhcmUKLSAgIGNvbnZlcnRlZCB0byBieXRlcyAweDgwLi4weEZGKS4KKy8qIEVuY29kZSBhIHdpZGUgY2hhcmFjdGVyIHN0cmluZyB0byB0aGUgbG9jYWxlIGVuY29kaW5nIHdpdGggdGhlCisgICBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlcjogc3Vycm9nYXRlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCisgICBVK0RDODAuLlUrRENGRiBhcmUgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYuCiAKLSAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHJldmVyc2Ugb2YgX1B5X2NoYXIyd2NoYXIoKS4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBzdHJpbmcsIHVzZSBQeU1lbV9GcmVlKCkgdG8gZnJlZQorICAgdGhlIG1lbW9yeS4gUmV0dXJuIE5VTEwgb24gZW5jb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCiAKLSAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBzdHJpbmcgKHVzZSBQeU1lbV9GcmVlKCkgdG8gZnJlZQotICAgdGhlIG1lbW9yeSksIG9yIE5VTEwgb24gZW5jb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCisgICBJZiBlcnJvcl9wb3MgaXMgbm90IE5VTEwsICplcnJvcl9wb3MgaXMgc2V0IHRvIHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZAorICAgY2hhcmFjdGVyIG9uIGVuY29kaW5nIGVycm9yLCBvciBzZXQgdG8gKHNpemVfdCktMSBvdGhlcndpc2UuCiAKLSAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTDogKmVycm9yX3BvcyBpcyB0aGUgaW5kZXggb2YgdGhlIGludmFsaWQgY2hhcmFjdGVyCi0gICBvbiBlbmNvZGluZyBlcnJvciwgb3IgKHNpemVfdCktMSBvdGhlcndpc2UuICovCisgICBVc2UgdGhlIFB5X0RlY29kZUxvY2FsZSgpIGZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgYnl0ZXMgc3RyaW5nIGJhY2sgdG8gYSB3aWRlCisgICBjaGFyYWN0ZXIgc3RyaW5nLiAqLwogY2hhcioKLV9QeV93Y2hhcjJjaGFyKGNvbnN0IHdjaGFyX3QgKnRleHQsIHNpemVfdCAqZXJyb3JfcG9zKQorUHlfRW5jb2RlTG9jYWxlKGNvbnN0IHdjaGFyX3QgKnRleHQsIHNpemVfdCAqZXJyb3JfcG9zKQogewogI2lmZGVmIF9fQVBQTEVfXwogICAgIFB5X3NzaXplX3QgbGVuOwpAQCAtNTE0LDM0ICs1MjQsMTc5IEBACiAjZW5kaWYgICAvKiBfX0FQUExFX18gKi8KIH0KIAotLyogSW4gcHJpbmNpcGxlLCB0aGlzIHNob3VsZCB1c2UgSEFWRV9fV1NUQVQsIGFuZCBfd3N0YXQKLSAgIHNob3VsZCBiZSBkZXRlY3RlZCBieSBhdXRvY29uZi4gSG93ZXZlciwgbm8gY3VycmVudAotICAgUE9TSVggc3lzdGVtIHByb3ZpZGVzIHRoYXQgZnVuY3Rpb24sIHNvIHRlc3RpbmcgZm9yCi0gICBpdCBpcyBwb2ludGxlc3MuCi0gICBOb3Qgc3VyZSB3aGV0aGVyIHRoZSBNU19XSU5ET1dTIGd1YXJkcyBhcmUgbmVjZXNzYXJ5OgotICAgcGVyaGFwcyBmb3IgY3lnd2luL21pbmd3IGJ1aWxkcz8KLSovCi0jaWYgZGVmaW5lZChIQVZFX1NUQVQpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAKLS8qIEdldCBmaWxlIHN0YXR1cy4gRW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIF9faW50NjQgc2Vjc19iZXR3ZWVuX2Vwb2NocyA9IDExNjQ0NDczNjAwOyAvKiBTZWNvbmRzIGJldHdlZW4gMS4xLjE2MDEgYW5kIDEuMS4xOTcwICovCiAKLWludAotX1B5X3dzdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCitzdGF0aWMgdm9pZAorRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKEZJTEVUSU1FICppbl9wdHIsIHRpbWVfdCAqdGltZV9vdXQsIGludCogbnNlY19vdXQpCiB7Ci0gICAgaW50IGVycjsKLSAgICBjaGFyICpmbmFtZTsKLSAgICBmbmFtZSA9IF9QeV93Y2hhcjJjaGFyKHBhdGgsIE5VTEwpOwotICAgIGlmIChmbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIGVycm5vID0gRUlOVkFMOwotICAgICAgICByZXR1cm4gLTE7CisgICAgLyogWFhYIGVuZGlhbm5lc3MuIFNob3VsZG4ndCBtYXR0ZXIsIGFzIGFsbCBXaW5kb3dzIGltcGxlbWVudGF0aW9ucyBhcmUgbGl0dGxlLWVuZGlhbiAqLworICAgIC8qIENhbm5vdCBzaW1wbHkgY2FzdCBhbmQgZGVyZWZlcmVuY2UgaW5fcHRyLAorICAgICAgIHNpbmNlIGl0IG1pZ2h0IG5vdCBiZSBhbGlnbmVkIHByb3Blcmx5ICovCisgICAgX19pbnQ2NCBpbjsKKyAgICBtZW1jcHkoJmluLCBpbl9wdHIsIHNpemVvZihpbikpOworICAgICpuc2VjX291dCA9IChpbnQpKGluICUgMTAwMDAwMDApICogMTAwOyAvKiBGSUxFVElNRSBpcyBpbiB1bml0cyBvZiAxMDAgbnNlYy4gKi8KKyAgICAqdGltZV9vdXQgPSBQeV9TQUZFX0RPV05DQVNUKChpbiAvIDEwMDAwMDAwKSAtIHNlY3NfYmV0d2Vlbl9lcG9jaHMsIF9faW50NjQsIHRpbWVfdCk7Cit9CisKK3ZvaWQKK19QeV90aW1lX3RfdG9fRklMRV9USU1FKHRpbWVfdCB0aW1lX2luLCBpbnQgbnNlY19pbiwgRklMRVRJTUUgKm91dF9wdHIpCit7CisgICAgLyogWFhYIGVuZGlhbm5lc3MgKi8KKyAgICBfX2ludDY0IG91dDsKKyAgICBvdXQgPSB0aW1lX2luICsgc2Vjc19iZXR3ZWVuX2Vwb2NoczsKKyAgICBvdXQgPSBvdXQgKiAxMDAwMDAwMCArIG5zZWNfaW4gLyAxMDA7CisgICAgbWVtY3B5KG91dF9wdHIsICZvdXQsIHNpemVvZihvdXQpKTsKK30KKworLyogQmVsb3csIHdlICprbm93KiB0aGF0IHVnbytyIGlzIDA0NDQgKi8KKyNpZiBfU19JUkVBRCAhPSAwNDAwCisjZXJyb3IgVW5zdXBwb3J0ZWQgQyBsaWJyYXJ5CisjZW5kaWYKK3N0YXRpYyBpbnQKK2F0dHJpYnV0ZXNfdG9fbW9kZShEV09SRCBhdHRyKQoreworICAgIGludCBtID0gMDsKKyAgICBpZiAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkKKyAgICAgICAgbSB8PSBfU19JRkRJUiB8IDAxMTE7IC8qIElGRVhFQyBmb3IgdXNlcixncm91cCxvdGhlciAqLworICAgIGVsc2UKKyAgICAgICAgbSB8PSBfU19JRlJFRzsKKyAgICBpZiAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKQorICAgICAgICBtIHw9IDA0NDQ7CisgICAgZWxzZQorICAgICAgICBtIHw9IDA2NjY7CisgICAgcmV0dXJuIG07Cit9CisKK3ZvaWQKK19QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyByZXBhcnNlX3RhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKK3sKKyAgICBtZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOworICAgIHJlc3VsdC0+c3RfbW9kZSA9IGF0dHJpYnV0ZXNfdG9fbW9kZShpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzKTsKKyAgICByZXN1bHQtPnN0X3NpemUgPSAoKChfX2ludDY0KWluZm8tPm5GaWxlU2l6ZUhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZVNpemVMb3c7CisgICAgcmVzdWx0LT5zdF9kZXYgPSBpbmZvLT5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKKyAgICByZXN1bHQtPnN0X3JkZXYgPSByZXN1bHQtPnN0X2RldjsKKyAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0Q3JlYXRpb25UaW1lLCAmcmVzdWx0LT5zdF9jdGltZSwgJnJlc3VsdC0+c3RfY3RpbWVfbnNlYyk7CisgICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdExhc3RXcml0ZVRpbWUsICZyZXN1bHQtPnN0X210aW1lLCAmcmVzdWx0LT5zdF9tdGltZV9uc2VjKTsKKyAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUsICZyZXN1bHQtPnN0X2F0aW1lLCAmcmVzdWx0LT5zdF9hdGltZV9uc2VjKTsKKyAgICByZXN1bHQtPnN0X25saW5rID0gaW5mby0+bk51bWJlck9mTGlua3M7CisgICAgcmVzdWx0LT5zdF9pbm8gPSAoKChfX2ludDY0KWluZm8tPm5GaWxlSW5kZXhIaWdoKTw8MzIpICsgaW5mby0+bkZpbGVJbmRleExvdzsKKyAgICBpZiAocmVwYXJzZV90YWcgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykgeworICAgICAgICAvKiBmaXJzdCBjbGVhciB0aGUgU19JRk1UIGJpdHMgKi8KKyAgICAgICAgcmVzdWx0LT5zdF9tb2RlIF49IChyZXN1bHQtPnN0X21vZGUgJiBTX0lGTVQpOworICAgICAgICAvKiBub3cgc2V0IHRoZSBiaXRzIHRoYXQgbWFrZSB0aGlzIGEgc3ltbGluayAqLworICAgICAgICByZXN1bHQtPnN0X21vZGUgfD0gU19JRkxOSzsKICAgICB9Ci0gICAgZXJyID0gc3RhdChmbmFtZSwgYnVmKTsKLSAgICBQeU1lbV9GcmVlKGZuYW1lKTsKLSAgICByZXR1cm4gZXJyOworICAgIHJlc3VsdC0+c3RfZmlsZV9hdHRyaWJ1dGVzID0gaW5mby0+ZHdGaWxlQXR0cmlidXRlczsKIH0KICNlbmRpZgogCi0jaWZkZWYgSEFWRV9TVEFUCisvKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgYSBmaWxlLgorCisgICBPbiBQT1NJWCwgdXNlIGZzdGF0KCkuCisKKyAgIE9uIFdpbmRvd3MsIHVzZSBHZXRGaWxlVHlwZSgpIGFuZCBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSgpIHdoaWNoIHN1cHBvcnQKKyAgIGZpbGVzIGxhcmdlciB0aGFuIDIgR0IuICBmc3RhdCgpIG1heSBmYWlsIHdpdGggRU9WRVJGTE9XIG9uIGZpbGVzIGxhcmdlcgorICAgdGhhbiAyIEdCIGJlY2F1c2UgdGhlIGZpbGUgc2l6ZSB0eXBlIGlzIGFuIHNpZ25lZCAzMi1iaXQgaW50ZWdlcjogc2VlIGlzc3VlCisgICAjMjMxNTIuCisKKyAgIE9uIFdpbmRvd3MsIHNldCB0aGUgbGFzdCBXaW5kb3dzIGVycm9yIGFuZCByZXR1cm4gbm9uemVybyBvbiBlcnJvci4gT24KKyAgIFBPU0lYLCBzZXQgZXJybm8gYW5kIHJldHVybiBub256ZXJvIG9uIGVycm9yLiBGaWxsIHN0YXR1cyBhbmQgcmV0dXJuIDAgb24KKyAgIHN1Y2Nlc3MuICovCitpbnQKK19QeV9mc3RhdF9ub3JhaXNlKGludCBmZCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBpbmZvOworICAgIEhBTkRMRSBoOworICAgIGludCB0eXBlOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgZWxzZSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIH0KKworICAgIGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIC8qIGVycm5vIGlzIGFscmVhZHkgc2V0IGJ5IF9nZXRfb3NmaGFuZGxlLCBidXQgd2UgYWxzbyBzZXQKKyAgICAgICAgICAgdGhlIFdpbjMyIGVycm9yIGZvciBjYWxsZXJzIHdobyBleHBlY3QgdGhhdCAqLworICAgICAgICBTZXRMYXN0RXJyb3IoRVJST1JfSU5WQUxJRF9IQU5ETEUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG1lbXNldChzdGF0dXMsIDAsIHNpemVvZigqc3RhdHVzKSk7CisKKyAgICB0eXBlID0gR2V0RmlsZVR5cGUoaCk7CisgICAgaWYgKHR5cGUgPT0gRklMRV9UWVBFX1VOS05PV04pIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgICAgIGVycm5vID0gd2luZXJyb3JfdG9fZXJybm8oZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qIGVsc2U6IHZhbGlkIGJ1dCB1bmtub3duIGZpbGUgKi8KKyAgICB9CisKKyAgICBpZiAodHlwZSAhPSBGSUxFX1RZUEVfRElTSykgeworICAgICAgICBpZiAodHlwZSA9PSBGSUxFX1RZUEVfQ0hBUikKKyAgICAgICAgICAgIHN0YXR1cy0+c3RfbW9kZSA9IF9TX0lGQ0hSOworICAgICAgICBlbHNlIGlmICh0eXBlID09IEZJTEVfVFlQRV9QSVBFKQorICAgICAgICAgICAgc3RhdHVzLT5zdF9tb2RlID0gX1NfSUZJRk87CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaCwgJmluZm8pKSB7CisgICAgICAgIC8qIFRoZSBXaW4zMiBlcnJvciBpcyBhbHJlYWR5IHNldCwgYnV0IHdlIGFsc28gc2V0IGVycm5vIGZvcgorICAgICAgICAgICBjYWxsZXJzIHdobyBleHBlY3QgaXQgKi8KKyAgICAgICAgZXJybm8gPSB3aW5lcnJvcl90b19lcnJubyhHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgMCwgc3RhdHVzKTsKKyAgICAvKiBzcGVjaWZpYyB0byBmc3RhdCgpICovCisgICAgc3RhdHVzLT5zdF9pbm8gPSAoKChfX2ludDY0KWluZm8ubkZpbGVJbmRleEhpZ2gpPDwzMikgKyBpbmZvLm5GaWxlSW5kZXhMb3c7CisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiBmc3RhdChmZCwgc3RhdHVzKTsKKyNlbmRpZgorfQorCisvKiBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgYSBmaWxlLgorCisgICBPbiBQT1NJWCwgdXNlIGZzdGF0KCkuCisKKyAgIE9uIFdpbmRvd3MsIHVzZSBHZXRGaWxlVHlwZSgpIGFuZCBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSgpIHdoaWNoIHN1cHBvcnQKKyAgIGZpbGVzIGxhcmdlciB0aGFuIDIgR0IuICBmc3RhdCgpIG1heSBmYWlsIHdpdGggRU9WRVJGTE9XIG9uIGZpbGVzIGxhcmdlcgorICAgdGhhbiAyIEdCIGJlY2F1c2UgdGhlIGZpbGUgc2l6ZSB0eXBlIGlzIGFuIHNpZ25lZCAzMi1iaXQgaW50ZWdlcjogc2VlIGlzc3VlCisgICAjMjMxNTIuCisKKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiBPbiBXaW5kb3dzLCBzZXQgdGhlIGxhc3QgV2luZG93cworICAgZXJyb3Igb24gZXJyb3IuIE9uIFBPU0lYLCBzZXQgZXJybm8gb24gZXJyb3IuIEZpbGwgc3RhdHVzIGFuZCByZXR1cm4gMCBvbgorICAgc3VjY2Vzcy4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgR2V0RmlsZVR5cGUoKSBhbmQgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKSwgb3IKKyAgIHRvIGNhbGwgZnN0YXQoKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIEdJTC4gKi8KK2ludAorX1B5X2ZzdGF0KGludCBmZCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKQoreworICAgIGludCByZXM7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gX1B5X2ZzdGF0X25vcmFpc2UoZmQsIHN0YXR1cyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXMgIT0gMCkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisjZWxzZQorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAogLyogQ2FsbCBfd3N0YXQoKSBvbiBXaW5kb3dzLCBvciBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kCiAgICBjYWxsIHN0YXQoKSBvdGhlcndpc2UuIE9ubHkgZmlsbCBzdF9tb2RlIGF0dHJpYnV0ZSBvbiBXaW5kb3dzLgpAQCAtNTc1LDcgKzczMCw2IEBACiAjZW5kaWYKIH0KIAotI2VuZGlmCiAKIHN0YXRpYyBpbnQKIGdldF9pbmhlcml0YWJsZShpbnQgZmQsIGludCByYWlzZSkKQEAgLTU5MCw3ICs3NDQsOSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC02NjUsNyArODIxLDkgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtNzY3LDQwICs5MjUsOTAgQEAKICAgICByZXR1cm4gc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgMSwgYXRvbWljX2ZsYWdfd29ya3MpOwogfQogCi0vKiBPcGVuIGEgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgZmxhZ3MgKHdyYXBwZXIgdG8gb3BlbigpIGZ1bmN0aW9uKS4KLSAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuICovCi1pbnQKLV9QeV9vcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCitzdGF0aWMgaW50CitfUHlfb3Blbl9pbXBsKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIGludCBnaWxfaGVsZCkKIHsKICAgICBpbnQgZmQ7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGZkID0gb3BlbihwYXRobmFtZSwgZmxhZ3MgfCBPX05PSU5IRVJJVCk7Ci0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIGZkOwotI2Vsc2UKLQorICAgIGludCBhc3luY19lcnIgPSAwOworI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrczsKLSNpZmRlZiBPX0NMT0VYRUMKKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIGZsYWdzIHw9IE9fTk9JTkhFUklUOworI2VsaWYgZGVmaW5lZChPX0NMT0VYRUMpCiAgICAgYXRvbWljX2ZsYWdfd29ya3MgPSAmX1B5X29wZW5fY2xvZXhlY193b3JrczsKICAgICBmbGFncyB8PSBPX0NMT0VYRUM7CiAjZWxzZQogICAgIGF0b21pY19mbGFnX3dvcmtzID0gTlVMTDsKICNlbmRpZgotICAgIGZkID0gb3BlbihwYXRobmFtZSwgZmxhZ3MpOwotICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBmZDsKIAotICAgIGlmIChzZXRfaW5oZXJpdGFibGUoZmQsIDAsIDAsIGF0b21pY19mbGFnX3dvcmtzKSA8IDApIHsKKyAgICBpZiAoZ2lsX2hlbGQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBmbGFncyk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IHdoaWxlIChmZCA8IDAKKyAgICAgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgICAgICBpZiAoYXN5bmNfZXJyKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfT1NFcnJvciwgcGF0aG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmZCA9IG9wZW4ocGF0aG5hbWUsIGZsYWdzKTsKKyAgICAgICAgaWYgKGZkIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIGlmIChzZXRfaW5oZXJpdGFibGUoZmQsIDAsIGdpbF9oZWxkLCBhdG9taWNfZmxhZ193b3JrcykgPCAwKSB7CiAgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisjZW5kaWYKKwogICAgIHJldHVybiBmZDsKIH0KIAorLyogT3BlbiBhIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGZsYWdzICh3cmFwcGVyIHRvIG9wZW4oKSBmdW5jdGlvbikuCisgICBSZXR1cm4gYSBmaWxlIGRlc2NyaXB0b3Igb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24KKyAgIGVycm9yLgorCisgICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLgorCisgICBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChvcGVuKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsLAorICAgZXhjZXB0IGlmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgb3BlbigpLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgR0lMLiAqLworaW50CitfUHlfb3Blbihjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQoreworICAgIC8qIF9QeV9vcGVuKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgR0lMIGhlbGQuICovCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisgICAgcmV0dXJuIF9QeV9vcGVuX2ltcGwocGF0aG5hbWUsIGZsYWdzLCAxKTsKK30KKworLyogT3BlbiBhIGZpbGUgd2l0aCB0aGUgc3BlY2lmaWVkIGZsYWdzICh3cmFwcGVyIHRvIG9wZW4oKSBmdW5jdGlvbikuCisgICBSZXR1cm4gYSBmaWxlIGRlc2NyaXB0b3Igb24gc3VjY2Vzcy4gU2V0IGVycm5vIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIElmIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBmYWlsIHdpdGggRUlOVFIuICovCitpbnQKK19QeV9vcGVuX25vcmFpc2UoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncykKK3sKKyAgICByZXR1cm4gX1B5X29wZW5faW1wbChwYXRobmFtZSwgZmxhZ3MsIDApOworfQorCiAvKiBPcGVuIGEgZmlsZS4gVXNlIF93Zm9wZW4oKSBvbiBXaW5kb3dzLCBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZQotICAgZW5jb2RpbmcgYW5kIHVzZSBmb3BlbigpIG90aGVyd2lzZS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkCi0gICBub24taW5oZXJpdGFibGUuICovCisgICBlbmNvZGluZyBhbmQgdXNlIGZvcGVuKCkgb3RoZXJ3aXNlLgorCisgICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLgorCisgICBJZiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgZmFpbCB3aXRoIEVJTlRSLiAqLwogRklMRSAqCiBfUHlfd2ZvcGVuKGNvbnN0IHdjaGFyX3QgKnBhdGgsIGNvbnN0IHdjaGFyX3QgKm1vZGUpCiB7CkBAIC04MTQsNyArMTAyMiw3IEBACiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY3BhdGggPSBfUHlfd2NoYXIyY2hhcihwYXRoLCBOVUxMKTsKKyAgICBjcGF0aCA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKICAgICBpZiAoY3BhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZiA9IGZvcGVuKGNwYXRoLCBjbW9kZSk7CkBAIC04MzEsNyArMTAzOSwxMSBAQAogICAgIHJldHVybiBmOwogfQogCi0vKiBXcmFwcGVyIHRvIGZvcGVuKCkuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuICovCisvKiBXcmFwcGVyIHRvIGZvcGVuKCkuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIElmIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBmYWlsIHdpdGggRUlOVFIuICovCiBGSUxFKgogX1B5X2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBjaGFyICptb2RlKQogewpAQCAtODQ2LDIwICsxMDU4LDMwIEBACiB9CiAKIC8qIE9wZW4gYSBmaWxlLiBDYWxsIF93Zm9wZW4oKSBvbiBXaW5kb3dzLCBvciBlbmNvZGUgdGhlIHBhdGggdG8gdGhlIGZpbGVzeXN0ZW0KLSAgIGVuY29kaW5nIGFuZCBjYWxsIGZvcGVuKCkgb3RoZXJ3aXNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQKLSAgIG5vbi1pbmhlcml0YWJsZS4KKyAgIGVuY29kaW5nIGFuZCBjYWxsIGZvcGVuKCkgb3RoZXJ3aXNlLgogCi0gICBSZXR1cm4gdGhlIG5ldyBmaWxlIG9iamVjdCBvbiBzdWNjZXNzLCBvciBOVUxMIGlmIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuIG9yCi0gICAoaWYgUHlFcnJfT2NjdXJyZWQoKSkgb24gdW5pY29kZSBlcnJvci4gKi8KKyAgIFJldHVybiB0aGUgbmV3IGZpbGUgb2JqZWN0IG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwKKyAgIG9uIGVycm9yLgorCisgICBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQgbm9uLWluaGVyaXRhYmxlLgorCisgICBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChvcGVuKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsLAorICAgZXhjZXB0IGlmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgX3dmb3BlbigpIG9yIGZvcGVuKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkCisgICB0aGUgR0lMLiAqLwogRklMRSoKIF9QeV9mb3Blbl9vYmooUHlPYmplY3QgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiB7CiAgICAgRklMRSAqZjsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCAqd3BhdGg7CiAgICAgd2NoYXJfdCB3bW9kZVsxMF07CiAgICAgaW50IHVzaXplOwogCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYXRoKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInN0ciBmaWxlIHBhdGggZXhwZWN0ZWQgdW5kZXIgV2luZG93cywgZ290ICVSIiwKQEAgLTg3MSwyNiArMTA5MywyNDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB1c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCBtb2RlLCAtMSwgd21vZGUsIHNpemVvZih3bW9kZSkpOwotICAgIGlmICh1c2l6ZSA9PSAwKQorICAgIGlmICh1c2l6ZSA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBmID0gX3dmb3Blbih3cGF0aCwgd21vZGUpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBmID0gX3dmb3Blbih3cGF0aCwgd21vZGUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKGYgPT0gTlVMTAorICAgICAgICAgICAgICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICNlbHNlCiAgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIGNoYXIgKnBhdGhfYnl0ZXM7CisKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKwogICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHBhdGgsICZieXRlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGYgPSBmb3BlbihQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIG1vZGUpOworICAgIHBhdGhfYnl0ZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZiA9IGZvcGVuKHBhdGhfYnl0ZXMsIG1vZGUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKGYgPT0gTlVMTAorICAgICAgICAgICAgICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKwogICAgIFB5X0RFQ1JFRihieXRlcyk7CiAjZW5kaWYKLSAgICBpZiAoZiA9PSBOVUxMKQorICAgIGlmIChhc3luY19lcnIpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChtYWtlX25vbl9pbmhlcml0YWJsZShmaWxlbm8oZikpIDwgMCkgeworCisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzZXRfaW5oZXJpdGFibGUoZmlsZW5vKGYpLCAwLCAxLCBOVUxMKSA8IDApIHsKICAgICAgICAgZmNsb3NlKGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGY7CiB9CiAKKy8qIFJlYWQgY291bnQgYnl0ZXMgZnJvbSBmZCBpbnRvIGJ1Zi4KKworICAgT24gc3VjY2VzcywgcmV0dXJuIHRoZSBudW1iZXIgb2YgcmVhZCBieXRlcywgaXQgY2FuIGJlIGxvd2VyIHRoYW4gY291bnQuCisgICBJZiB0aGUgY3VycmVudCBmaWxlIG9mZnNldCBpcyBhdCBvciBwYXN0IHRoZSBlbmQgb2YgZmlsZSwgbm8gYnl0ZXMgYXJlIHJlYWQsCisgICBhbmQgcmVhZCgpIHJldHVybnMgemVyby4KKworICAgT24gZXJyb3IsIHJhaXNlIGFuIGV4Y2VwdGlvbiwgc2V0IGVycm5vIGFuZCByZXR1cm4gLTEuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKHJlYWQoKSBmYWlscyB3aXRoIEVJTlRSKSwgcmV0cnkgdGhlIHN5c2NhbGwuCisgICBJZiB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIC0xCisgICAodGhlIHN5c2NhbGwgaXMgbm90IHJldHJpZWQpLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCByZWFkKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBHSUwuICovCitQeV9zc2l6ZV90CitfUHlfcmVhZChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBpbnQgZXJyOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgLyogX1B5X3JlYWQoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCisgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHJlYWQoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKKyAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCisgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjb3VudCA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCisgICAgICAgIGNvdW50ID0gSU5UX01BWDsKKyAgICB9CisjZWxzZQorICAgIGlmIChjb3VudCA+IFBZX1NTSVpFX1RfTUFYKSB7CisgICAgICAgIC8qIGlmIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiBQWV9TU0laRV9UX01BWCwKKyAgICAgICAgICogcmVhZCgpIHJlc3VsdCBpcyB1bmRlZmluZWQgKi8KKyAgICAgICAgY291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJybm8gPSAwOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZiwgKGludCljb3VudCk7CisjZWxzZQorICAgICAgICBuID0gcmVhZChmZCwgYnVmLCBjb3VudCk7CisjZW5kaWYKKyAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfQ2hlY2tTaWduYWxzKCkKKyAgICAgICAgICogYW5kIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJyID09IEVJTlRSICYmCisgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKworICAgIGlmIChhc3luY19lcnIpIHsKKyAgICAgICAgLyogcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGggRUlOVFIpCisgICAgICAgICAqIGFuZCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24gKi8KKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIGFzc2VydChlcnJubyA9PSBFSU5UUiAmJiBQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorX1B5X3dyaXRlX2ltcGwoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgaW50IGdpbF9oZWxkKQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBpbnQgZXJyOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIGlmIChnaWxfaGVsZCkgeworICAgICAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLworICAgICAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY291bnQgPiAzMjc2NyAmJiBpc2F0dHkoZmQpKSB7CisgICAgICAgIC8qIElzc3VlICMxMTM5NTogdGhlIFdpbmRvd3MgY29uc29sZSByZXR1cm5zIGFuIGVycm9yICgxMjogbm90CisgICAgICAgICAgIGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQgbW9kZSBpcworICAgICAgICAgICBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywKKyAgICAgICAgICAgZGVwZW5kaW5nIG9uIGhlYXAgdXNhZ2UpLiAqLworICAgICAgICBjb3VudCA9IDMyNzY3OworICAgIH0KKyAgICBlbHNlIGlmIChjb3VudCA+IElOVF9NQVgpCisgICAgICAgIGNvdW50ID0gSU5UX01BWDsKKyNlbHNlCisgICAgaWYgKGNvdW50ID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgLyogd3JpdGUoKSBzaG91bGQgdHJ1bmNhdGUgY291bnQgdG8gUFlfU1NJWkVfVF9NQVgsIGJ1dCBpdCdzIHNhZmVyCisgICAgICAgICAqIHRvIGRvIGl0IG91cnNlbGYgdG8gaGF2ZSBhIHBvcnRhYmxlIGJlaGF2aW91ci4gKi8KKyAgICAgICAgY291bnQgPSBQWV9TU0laRV9UX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIGlmIChnaWxfaGVsZCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIChpbnQpY291bnQpOworI2Vsc2UKKyAgICAgICAgICAgIG4gPSB3cml0ZShmZCwgYnVmLCBjb3VudCk7CisjZW5kaWYKKyAgICAgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX0NoZWNrU2lnbmFscygpCisgICAgICAgICAgICAgKiBhbmQgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLworICAgICAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnIgPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIChpbnQpY291bnQpOworI2Vsc2UKKyAgICAgICAgICAgIG4gPSB3cml0ZShmZCwgYnVmLCBjb3VudCk7CisjZW5kaWYKKyAgICAgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnIgPT0gRUlOVFIpOworICAgIH0KKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKGFzeW5jX2VycikgeworICAgICAgICAvKiB3cml0ZSgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZmFpbGVkIHdpdGggRUlOVFIpCisgICAgICAgICAgIGFuZCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24gKGlmIGdpbF9oZWxkIGlzCisgICAgICAgICAgIG5vbnplcm8pLiAqLworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgYXNzZXJ0KGVycm5vID09IEVJTlRSICYmICghZ2lsX2hlbGQgfHwgUHlFcnJfT2NjdXJyZWQoKSkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuIDwgMCkgeworICAgICAgICBpZiAoZ2lsX2hlbGQpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKKy8qIFdyaXRlIGNvdW50IGJ5dGVzIG9mIGJ1ZiBpbnRvIGZkLgorCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzLCBpdCBjYW4gYmUgbG93ZXIgdGhhbiBjb3VudAorICAgaW5jbHVkaW5nIDAuIE9uIGVycm9yLCByYWlzZSBhbiBleGNlcHRpb24sIHNldCBlcnJubyBhbmQgcmV0dXJuIC0xLgorCisgICBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICh3cml0ZSgpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbC4KKyAgIElmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgLTEKKyAgICh0aGUgc3lzY2FsbCBpcyBub3QgcmV0cmllZCkuCisKKyAgIFJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHdyaXRlKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBHSUwuICovCitQeV9zc2l6ZV90CitfUHlfd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICAvKiBfUHlfd3JpdGUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCisgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCisgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICByZXR1cm4gX1B5X3dyaXRlX2ltcGwoZmQsIGJ1ZiwgY291bnQsIDEpOworfQorCisvKiBXcml0ZSBjb3VudCBieXRlcyBvZiBidWYgaW50byBmZC4KKyAqCisgKiBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGJ5dGVzLCBpdCBjYW4gYmUgbG93ZXIgdGhhbiBjb3VudAorICogaW5jbHVkaW5nIDAuIE9uIGVycm9yLCBzZXQgZXJybm8gYW5kIHJldHVybiAtMS4KKyAqCisgKiBXaGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICh3cml0ZSgpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbAorICogd2l0aG91dCBjYWxsaW5nIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIuICovCitQeV9zc2l6ZV90CitfUHlfd3JpdGVfbm9yYWlzZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgIHJldHVybiBfUHlfd3JpdGVfaW1wbChmZCwgYnVmLCBjb3VudCwgMCk7Cit9CisKICNpZmRlZiBIQVZFX1JFQURMSU5LCiAKIC8qIFJlYWQgdmFsdWUgb2Ygc3ltYm9saWMgbGluay4gRW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGRlY29kZQpAQCAtOTA1LDcgKzEzNDgsNyBAQAogICAgIGludCByZXM7CiAgICAgc2l6ZV90IHIxOwogCi0gICAgY3BhdGggPSBfUHlfd2NoYXIyY2hhcihwYXRoLCBOVUxMKTsKKyAgICBjcGF0aCA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKICAgICBpZiAoY3BhdGggPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtOTE5LDcgKzEzNjIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGNidWZbcmVzXSA9ICdcMCc7IC8qIGJ1ZiB3aWxsIGJlIG51bGwgdGVybWluYXRlZCAqLwotICAgIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihjYnVmLCAmcjEpOworICAgIHdidWYgPSBQeV9EZWNvZGVMb2NhbGUoY2J1ZiwgJnIxKTsKICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CkBAIC05NTAsNyArMTM5Myw3IEBACiAgICAgd2NoYXJfdCAqd3Jlc29sdmVkX3BhdGg7CiAgICAgY2hhciAqcmVzOwogICAgIHNpemVfdCByOwotICAgIGNwYXRoID0gX1B5X3djaGFyMmNoYXIocGF0aCwgTlVMTCk7CisgICAgY3BhdGggPSBQeV9FbmNvZGVMb2NhbGUocGF0aCwgTlVMTCk7CiAgICAgaWYgKGNwYXRoID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTYwLDcgKzE0MDMsNyBAQAogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB3cmVzb2x2ZWRfcGF0aCA9IF9QeV9jaGFyMndjaGFyKGNyZXNvbHZlZF9wYXRoLCAmcik7CisgICAgd3Jlc29sdmVkX3BhdGggPSBQeV9EZWNvZGVMb2NhbGUoY3Jlc29sdmVkX3BhdGgsICZyKTsKICAgICBpZiAod3Jlc29sdmVkX3BhdGggPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05OTMsNyArMTQzNiw3IEBACiAKICAgICBpZiAoZ2V0Y3dkKGZuYW1lLCBQeV9BUlJBWV9MRU5HVEgoZm5hbWUpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3bmFtZSA9IF9QeV9jaGFyMndjaGFyKGZuYW1lLCAmbGVuKTsKKyAgICB3bmFtZSA9IFB5X0RlY29kZUxvY2FsZShmbmFtZSwgJmxlbik7CiAgICAgaWYgKHduYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplIDw9IGxlbikgewpAQCAtMTAyNSw3ICsxNDY4LDkgQEAKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMzUsNyArMTQ4MCw5IEBACiAgICAgZnR5cGUgPSBHZXRGaWxlVHlwZShoYW5kbGUpOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBmZCA9IGR1cChmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTA0NSwxMyArMTQ5MiwxNyBAQAogICAgIC8qIENoYXJhY3RlciBmaWxlcyBsaWtlIGNvbnNvbGUgY2Fubm90IGJlIG1ha2Ugbm9uLWluaGVyaXRhYmxlICovCiAgICAgaWYgKGZ0eXBlICE9IEZJTEVfVFlQRV9DSEFSKSB7CiAgICAgICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCAwLCBOVUxMKSA8IDApIHsKKyAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9CiAjZWxpZiBkZWZpbmVkKEhBVkVfRkNOVExfSCkgJiYgZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMpCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBmZCA9IGZjbnRsKGZkLCBGX0RVUEZEX0NMT0VYRUMsIDApOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoZmQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTEwNjAsNyArMTUxMSw5IEBACiAKICNlbHNlCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBmZCA9IGR1cChmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTA2OCwxMCArMTUyMSwxNTIgQEAKICAgICB9CiAKICAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShmZCwgMCwgTlVMTCkgPCAwKSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIGZkOwogfQogCisjaWZuZGVmIE1TX1dJTkRPV1MKKy8qIEdldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yLgorICAgUmV0dXJuIDAgaWYgdGhlIE9fTk9OQkxPQ0sgZmxhZyBpcyBzZXQsIDEgaWYgdGhlIGZsYWcgaXMgY2xlYXJlZCwKKyAgIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlfZ2V0X2Jsb2NraW5nKGludCBmZCkKK3sKKyAgICBpbnQgZmxhZ3M7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkwsIDApOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgaWYgKGZsYWdzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gIShmbGFncyAmIE9fTk9OQkxPQ0spOworfQorCisvKiBTZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuCisKKyAgIFNldCB0aGUgT19OT05CTE9DSyBmbGFnIGlmIGJsb2NraW5nIGlzIEZhbHNlLCBjbGVhciB0aGUgT19OT05CTE9DSyBmbGFnCisgICBvdGhlcndpc2UuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKQoreworI2lmIGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKQorICAgIGludCBhcmcgPSAhYmxvY2tpbmc7CisgICAgaWYgKGlvY3RsKGZkLCBGSU9OQklPLCAmYXJnKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisjZWxzZQorICAgIGludCBmbGFncywgcmVzOworCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkwsIDApOworICAgIGlmIChmbGFncyA+PSAwKSB7CisgICAgICAgIGlmIChibG9ja2luZykKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgJiAofk9fTk9OQkxPQ0spOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgT19OT05CTE9DSzsKKworICAgICAgICByZXMgPSBmY250bChmZCwgRl9TRVRGTCwgZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIHJldHVybiAtMTsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAorLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZCB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCisgKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCisgKi8KKworLyogTWljcm9zb2Z0IENSVCBpbiBWUzIwMDUgYW5kIGhpZ2hlciB3aWxsIHZlcmlmeSB0aGF0IGEgZmlsZWhhbmRsZSBpcworICogdmFsaWQgYW5kIHJhaXNlIGFuIGFzc2VydGlvbiBpZiBpdCBpc24ndC4KKyAqIE5vcm1hbGx5LCBhbiBpbnZhbGlkIGZkIGlzIGxpa2VseSB0byBiZSBhIEMgcHJvZ3JhbSBlcnJvciBhbmQgdGhlcmVmb3JlCisgKiBhbiBhc3NlcnRpb24gY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGRvZXMgY29udHJhZGljdCB0aGUgUE9TSVggc3RhbmRhcmQKKyAqIHdoaWNoIGZvciB3cml0ZSgyKSBzdGF0ZXM6CisgKiAgICAiT3RoZXJ3aXNlLCAtMSBzaGFsbCBiZSByZXR1cm5lZCBhbmQgZXJybm8gc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4iCisgKiAgICAiW0VCQURGXSBUaGUgZmlsZGVzIGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvciBvcGVuIGZvcgorICogICAgIHdyaXRpbmcuIgorICogRnVydGhlcm1vcmUsIHB5dGhvbiBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW55IG9sZCBpbnRlZ2VyCisgKiBhcyBhIGZkIGFuZCBzaG91bGQgbWVyZWx5IHJhaXNlIGEgcHl0aG9uIGV4Y2VwdGlvbiBvbiBlcnJvci4KKyAqIFRoZSBNaWNyb3NvZnQgQ1JUIGRvZXNuJ3QgcHJvdmlkZSBhbiBvZmZpY2lhbCB3YXkgdG8gY2hlY2sgZm9yIHRoZQorICogdmFsaWRpdHkgb2YgYSBmaWxlIGRlc2NyaXB0b3IsIGJ1dCB3ZSBjYW4gZW11bGF0ZSBpdHMgaW50ZXJuYWwgYmVoYXZpb3VyCisgKiBieSB1c2luZyB0aGUgZXhwb3J0ZWQgX19waW5mbyBkYXRhIG1lbWJlciBhbmQga25vd2xlZGdlIG9mIHRoZQorICogaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZvbHZlZC4KKyAqIFRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgdXBkYXRlZCBmb3IgZWFjaCB2ZXJzaW9uIG9mIHZpc3VhbCBzdHVkaW8KKyAqIGFjY29yZGluZyB0byB0aGUgZmlsZSBpbnRlcm5hbC5oIGluIHRoZSBDUlQgc291cmNlLCB1bnRpbCBNUyBjb21lcworICogdXAgd2l0aCBhIGxlc3MgaGFja3kgd2F5IHRvIGRvIHRoaXMuCisgKiAoYWxsIG9mIHRoaXMgaXMgdG8gYXZvaWQgZ2xvYmFsbHkgbW9kaWZ5aW5nIHRoZSBDUlQgYmVoYXZpb3VyIHVzaW5nCisgKiBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKSBhbmQgX0NydFNldFJlcG9ydE1vZGUoKSkKKyAqLworLyogVGhlIGFjdHVhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgorICogT25seSB0aGUgZmlyc3QgaXRlbXMgbXVzdCBiZSBwcmVzZW50LgorICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50cHRyX3Qgb3NmaG5kOworICAgIGNoYXIgb3NmaWxlOworfSBteV9pb2luZm87CisKK2V4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciAqIF9fcGlvaW5mb1tdOworI2RlZmluZSBJT0lORk9fTDJFIDUKKyNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAorI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCisjZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKKyNkZWZpbmUgRk9QRU4gMHgwMQorI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCisKKy8qIFRoaXMgZnVuY3Rpb24gZW11bGF0ZXMgd2hhdCB0aGUgd2luZG93cyBDUlQgZG9lcyB0byB2YWxpZGF0ZSBmaWxlIGhhbmRsZXMgKi8KK2ludAorX1B5VmVyaWZ5X2ZkKGludCBmZCkKK3sKKyAgICBjb25zdCBpbnQgaTEgPSBmZCA+PiBJT0lORk9fTDJFOworICAgIGNvbnN0IGludCBpMiA9IGZkICYgKCgxIDw8IElPSU5GT19MMkUpIC0gMSk7CisKKyAgICBzdGF0aWMgc2l6ZV90IHNpemVvZl9pb2luZm8gPSAwOworCisgICAgLyogRGV0ZXJtaW5lIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgaW9pbmZvIHN0cnVjdHVyZSwKKyAgICAgKiBhcyB1c2VkIGJ5IHRoZSBDUlQgbG9hZGVkIGluIG1lbW9yeQorICAgICAqLworICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDAgJiYgX19waW9pbmZvWzBdICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZW9mX2lvaW5mbyA9IF9tc2l6ZShfX3Bpb2luZm9bMF0pIC8gSU9JTkZPX0FSUkFZX0VMVFM7CisgICAgfQorICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDApIHsKKyAgICAgICAgLyogVGhpcyBzaG91bGQgbm90IGhhcHBlbi4uLiAqLworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogU2VlIHRoYXQgaXQgaXNuJ3QgYSBzcGVjaWFsIENMRUFSIGZpbGVubyAqLworICAgIGlmIChmZCAhPSBfTk9fQ09OU09MRV9GSUxFTk8pIHsKKyAgICAgICAgLyogTWljcm9zb2Z0IENSVCB3b3VsZCBjaGVjayB0aGF0IDA8PWZkPF9uaGFuZGxlIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0LiAgSW5zdGVhZAorICAgICAgICAgKiB3ZSBjaGVjayBwb2ludGVyIHZhbGlkaXR5IGFuZCBvdGhlciBpbmZvCisgICAgICAgICAqLworICAgICAgICBpZiAoMCA8PSBpMSAmJiBpMSA8IElPSU5GT19BUlJBWVMgJiYgX19waW9pbmZvW2kxXSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBmaW5hbGx5LCBjaGVjayB0aGF0IHRoZSBmaWxlIGlzIG9wZW4gKi8KKyAgICAgICAgICAgIG15X2lvaW5mbyogaW5mbyA9IChteV9pb2luZm8qKShfX3Bpb2luZm9baTFdICsgaTIgKiBzaXplb2ZfaW9pbmZvKTsKKyAgICAgICAgICAgIGlmIChpbmZvLT5vc2ZpbGUgJiBGT1BFTikgeworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICBmYWlsOgorICAgIGVycm5vID0gRUJBREY7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwICovCmRpZmYgLS1naXQgYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCmluZGV4IGUzYTgxNDkuLjA1NmJiNzYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCisrKyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCkBAIC04NDYsNiArODQ2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CisgICAgICAgIC8qIGVycm9yIHRvIHJlcXVlc3QgYWx0ZXJuYXRlIGZvcm1hdCAqLworICAgICAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbHRlcm5hdGUgZm9ybSAoIykgbm90IGFsbG93ZWQgd2l0aCBpbnRlZ2VyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm9ybWF0IHNwZWNpZmllciAnYyciKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jIGZvcm1hdGNoYXIoKSAqLwogICAgICAgICAvKiBJbnRlZ2VyIGlucHV0IHRydW5jYXRlZCB0byBhIGNoYXJhY3RlciAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbi5jIGIvUHl0aG9uL2Zyb3plbi5jCmluZGV4IDliYzY2MmIuLjY3NmYzOTUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW4uYworKysgYi9QeXRob24vZnJvemVuLmMKQEAgLTMsNiArMyw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJpbXBvcnRsaWIuaCIKKyNpbmNsdWRlICJpbXBvcnRsaWJfZXh0ZXJuYWwuaCIKIAogLyogSW4gb3JkZXIgdG8gdGVzdCB0aGUgc3VwcG9ydCBmb3IgZnJvemVuIG1vZHVsZXMsIGJ5IGRlZmF1bHQgd2UKICAgIGRlZmluZSBhIHNpbmdsZSBmcm96ZW4gbW9kdWxlLCBfX2hlbGxvX18uICBMb2FkaW5nIGl0IHdpbGwgcHJpbnQKQEAgLTMxLDYgKzMyLDggQEAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0gewogICAgIC8qIGltcG9ydGxpYiAqLwogICAgIHsiX2Zyb3plbl9pbXBvcnRsaWIiLCBfUHlfTV9faW1wb3J0bGliLCAoaW50KXNpemVvZihfUHlfTV9faW1wb3J0bGliKX0sCisgICAgeyJfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCIsIF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWwsCisgICAgICAgIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWwpfSwKICAgICAvKiBUZXN0IG1vZHVsZSAqLwogICAgIHsiX19oZWxsb19fIiwgTV9fX2hlbGxvX18sIFNJWkV9LAogICAgIC8qIFRlc3QgcGFja2FnZSAobmVnYXRpdmUgc2l6ZSBpbmRpY2F0ZXMgcGFja2FnZS1uZXNzKSAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbm1haW4uYyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKaW5kZXggYjA1Yzk0YS4uZGU4YmQzNSAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbm1haW4uYworKysgYi9QeXRob24vZnJvemVubWFpbi5jCkBAIC01NCw3ICs1NCw3IEBACiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBhcmd2X2NvcHlbaV0gPSBfUHlfY2hhcjJ3Y2hhcihhcmd2W2ldLCBOVUxMKTsKKyAgICAgICAgYXJndl9jb3B5W2ldID0gUHlfRGVjb2RlTG9jYWxlKGFyZ3ZbaV0sIE5VTEwpOwogICAgICAgICBhcmd2X2NvcHkyW2ldID0gYXJndl9jb3B5W2ldOwogICAgICAgICBpZiAoIWFyZ3ZfY29weVtpXSkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIyVpXG4iLApkaWZmIC0tZ2l0IGEvUHl0aG9uL2Z1dHVyZS5jIGIvUHl0aG9uL2Z1dHVyZS5jCmluZGV4IDgxZWFiNTQuLjE2M2Y4N2YgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mdXR1cmUuYworKysgYi9QeXRob24vZnV0dXJlLmMKQEAgLTQwLDYgKzQwLDggQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChmZWF0dXJlLCBGVVRVUkVfQkFSUllfQVNfQkRGTCkgPT0gMCkgewogICAgICAgICAgICAgZmYtPmZmX2ZlYXR1cmVzIHw9IENPX0ZVVFVSRV9CQVJSWV9BU19CREZMOworICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChmZWF0dXJlLCBGVVRVUkVfR0VORVJBVE9SX1NUT1ApID09IDApIHsKKyAgICAgICAgICAgIGZmLT5mZl9mZWF0dXJlcyB8PSBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1A7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGZlYXR1cmUsICJicmFjZXMiKSA9PSAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhIGNoYW5jZSIpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGFyZ3MuYyBiL1B5dGhvbi9nZXRhcmdzLmMKaW5kZXggNjkwMmQxMy4uYzM2NWZjMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGFyZ3MuYworKysgYi9QeXRob24vZ2V0YXJncy5jCkBAIC04NzIsMTAgKzg3MiwxMCBAQAogICAgICAgICAgICAgU1RPUkVfU0laRShjb3VudCk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdHJsZW4oKnApICE9IGNvdW50KQotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgd2l0aG91dCBudWxsIGJ5dGVzIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgaWYgKHN0cmxlbigqcCkgIT0gKHNpemVfdCljb3VudCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CisgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC05NDgsMTYgKzk0OCwxNSBAQAogICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oc2FyZykgIT0gKHNpemVfdClsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAqcCA9IHNhcmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAneicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKCpwICE9IE5VTEwgJiYgc2FyZyAhPSBOVUxMICYmIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IGxlbikKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgYyA9PSAneicgPyAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyIsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CkBAIC05OTUsMTAgKzk5NCwxMCBAQAogICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKICAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IGxlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmxlbigqcCkgIT0gKHNpemVfdClsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ1onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTEyNDYsNyArMTI0NSw4IEBACiAgICAgICAgICAgIHN1cHBvcnRzIGl0IGRpcmVjdGx5LiAqLwogICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgKFB5X2J1ZmZlciopcCwgUHlCVUZfV1JJVEFCTEUpIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJyZWFkLXdyaXRlIGJ1ZmZlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJyZWFkLXdyaXRlIGJ5dGVzLWxpa2Ugb2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIVB5QnVmZmVyX0lzQ29udGlndW91cygoUHlfYnVmZmVyKilwLCAnQycpKSB7CiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKChQeV9idWZmZXIqKXApOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAKICAgICAqZXJybXNnID0gTlVMTDsKICAgICAqcCA9IE5VTEw7CiAgICAgaWYgKHBiICE9IE5VTEwgJiYgcGItPmJmX3JlbGVhc2VidWZmZXIgIT0gTlVMTCkgewotICAgICAgICAqZXJybXNnID0gInJlYWQtb25seSBwaW5uZWQgYnVmZmVyIjsKKyAgICAgICAgKmVycm1zZyA9ICJyZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3QiOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC0xMzAwLDcgKzEzMDAsNyBAQAogZ2V0YnVmZmVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqdmlldywgY2hhciAqKmVycm1zZykKIHsKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7Ci0gICAgICAgICplcnJtc2cgPSAiYnl0ZXMgb3IgYnVmZmVyIjsKKyAgICAgICAgKmVycm1zZyA9ICJieXRlcy1saWtlIG9iamVjdCI7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCFQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgJ0MnKSkgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dyYW1pbml0LmMgYi9QeXRob24vZ3JhbWluaXQuYwppbmRleCBlMDQ5OTliLi44MjEyYjJhIDEwMDY0NAotLS0gYS9QeXRob24vZ3JhbWluaXQuYworKysgYi9QeXRob24vZ3JhbWluaXQuYwpAQCAtOTIsMzkzICs5Miw0MDYgQEAKIHN0YXRpYyBhcmMgYXJjc181XzBbMV0gPSB7CiAgICAgezE2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzVfMVszXSA9IHsKICAgICB7MTgsIDJ9LAogICAgIHsxOSwgMn0sCisgICAgezIwLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNV8yWzFdID0gewogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzVbM10gPSB7CiAgICAgezEsIGFyY3NfNV8wfSwKLSAgICB7MiwgYXJjc181XzF9LAorICAgIHszLCBhcmNzXzVfMX0sCiAgICAgezEsIGFyY3NfNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNl8wWzFdID0gewotICAgIHsyMCwgMX0sCisgICAgezIxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNl8xWzFdID0gewotICAgIHsyMSwgMn0sCisgICAgezE5LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNl8yWzFdID0gewotICAgIHsyMiwgM30sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182XzNbMl0gPSB7Ci0gICAgezIzLCA0fSwKLSAgICB7MjUsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182XzRbMV0gPSB7Ci0gICAgezI0LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNl81WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzZfNlsxXSA9IHsKLSAgICB7MjUsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNls4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNlszXSA9IHsKICAgICB7MSwgYXJjc182XzB9LAogICAgIHsxLCBhcmNzXzZfMX0sCiAgICAgezEsIGFyY3NfNl8yfSwKLSAgICB7MiwgYXJjc182XzN9LAotICAgIHsxLCBhcmNzXzZfNH0sCi0gICAgezEsIGFyY3NfNl81fSwKLSAgICB7MSwgYXJjc182XzZ9LAotICAgIHsxLCBhcmNzXzZfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzdfMFsxXSA9IHsKLSAgICB7MTMsIDF9LAorICAgIHsyMiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzdfMVsyXSA9IHsKLSAgICB7MjcsIDJ9LAotICAgIHsxNSwgM30sCitzdGF0aWMgYXJjIGFyY3NfN18xWzFdID0geworICAgIHsyMywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzdfMlsxXSA9IHsKLSAgICB7MTUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183XzNbMV0gPSB7Ci0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfN1s0XSA9IHsKLSAgICB7MSwgYXJjc183XzB9LAotICAgIHsyLCBhcmNzXzdfMX0sCi0gICAgezEsIGFyY3NfN18yfSwKLSAgICB7MSwgYXJjc183XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzBbM10gPSB7Ci0gICAgezI4LCAxfSwKLSAgICB7MzEsIDJ9LAotICAgIHszMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMVszXSA9IHsKLSAgICB7MjksIDR9LAotICAgIHszMCwgNX0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzJbM10gPSB7Ci0gICAgezI4LCA2fSwKLSAgICB7MzAsIDd9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8zWzFdID0gewotICAgIHsyOCwgOH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfNFsxXSA9IHsKLSAgICB7MjQsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzVbNF0gPSB7Ci0gICAgezI4LCAxMH0sCi0gICAgezMxLCAxMX0sCi0gICAgezMyLCAzfSwKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfNlsyXSA9IHsKLSAgICB7MzAsIDd9LAotICAgIHswLCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF83WzJdID0gewotICAgIHsyOCwgMTJ9LAotICAgIHszMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfOFsxXSA9IHsKLSAgICB7MCwgOH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfOVsyXSA9IHsKLSAgICB7MzAsIDV9LAotICAgIHswLCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xMFszXSA9IHsKLSAgICB7MzAsIDV9LAotICAgIHsyOSwgNH0sCi0gICAgezAsIDEwfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xMVszXSA9IHsKLSAgICB7MjgsIDEzfSwKLSAgICB7MzAsIDE0fSwKLSAgICB7MCwgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzEyWzNdID0gewotICAgIHszMCwgN30sCi0gICAgezI5LCAxNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xM1syXSA9IHsKLSAgICB7MzAsIDE0fSwKLSAgICB7MCwgMTN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzE0WzJdID0gewotICAgIHsyOCwgMTZ9LAotICAgIHszMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTVbMV0gPSB7Ci0gICAgezI0LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xNlszXSA9IHsKLSAgICB7MzAsIDE0fSwKLSAgICB7MjksIDE3fSwKLSAgICB7MCwgMTZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzE3WzFdID0gewotICAgIHsyNCwgMTN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfOFsxOF0gPSB7Ci0gICAgezMsIGFyY3NfOF8wfSwKLSAgICB7MywgYXJjc184XzF9LAotICAgIHszLCBhcmNzXzhfMn0sCi0gICAgezEsIGFyY3NfOF8zfSwKLSAgICB7MSwgYXJjc184XzR9LAotICAgIHs0LCBhcmNzXzhfNX0sCi0gICAgezIsIGFyY3NfOF82fSwKLSAgICB7MiwgYXJjc184Xzd9LAotICAgIHsxLCBhcmNzXzhfOH0sCi0gICAgezIsIGFyY3NfOF85fSwKLSAgICB7MywgYXJjc184XzEwfSwKLSAgICB7MywgYXJjc184XzExfSwKLSAgICB7MywgYXJjc184XzEyfSwKLSAgICB7MiwgYXJjc184XzEzfSwKLSAgICB7MiwgYXJjc184XzE0fSwKLSAgICB7MSwgYXJjc184XzE1fSwKLSAgICB7MywgYXJjc184XzE2fSwKLSAgICB7MSwgYXJjc184XzE3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOV8wWzFdID0gewotICAgIHsyMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzlfMVsyXSA9IHsKLSAgICB7MjUsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOV8yWzFdID0gewogICAgIHsyNCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183XzNbMl0gPSB7CisgICAgezI1LCA0fSwKKyAgICB7MjcsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183XzRbMV0gPSB7CisgICAgezI2LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfN181WzFdID0geworICAgIHsyOCwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzdfNlsxXSA9IHsKKyAgICB7MjcsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfN1s4XSA9IHsKKyAgICB7MSwgYXJjc183XzB9LAorICAgIHsxLCBhcmNzXzdfMX0sCisgICAgezEsIGFyY3NfN18yfSwKKyAgICB7MiwgYXJjc183XzN9LAorICAgIHsxLCBhcmNzXzdfNH0sCisgICAgezEsIGFyY3NfN181fSwKKyAgICB7MSwgYXJjc183XzZ9LAorICAgIHsxLCBhcmNzXzdfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzhfMFsxXSA9IHsKKyAgICB7MTMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184XzFbMl0gPSB7CisgICAgezI5LCAyfSwKKyAgICB7MTUsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184XzJbMV0gPSB7CisgICAgezE1LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfOF8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzlbNF0gPSB7Ci0gICAgezEsIGFyY3NfOV8wfSwKLSAgICB7MiwgYXJjc185XzF9LAotICAgIHsxLCBhcmNzXzlfMn0sCi0gICAgezEsIGFyY3NfOV8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfOFs0XSA9IHsKKyAgICB7MSwgYXJjc184XzB9LAorICAgIHsyLCBhcmNzXzhfMX0sCisgICAgezEsIGFyY3NfOF8yfSwKKyAgICB7MSwgYXJjc184XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8wWzNdID0gewotICAgIHszNCwgMX0sCi0gICAgezMxLCAyfSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfMFszXSA9IHsKKyAgICB7MzAsIDF9LAorICAgIHszMywgMn0sCisgICAgezM0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMVszXSA9IHsKLSAgICB7MjksIDR9LAotICAgIHszMCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfOV8xWzNdID0geworICAgIHszMSwgNH0sCisgICAgezMyLCA1fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzJbM10gPSB7Ci0gICAgezM0LCA2fSwKLSAgICB7MzAsIDd9LAorc3RhdGljIGFyYyBhcmNzXzlfMlszXSA9IHsKKyAgICB7MzAsIDZ9LAorICAgIHszMiwgN30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8zWzFdID0gewotICAgIHszNCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfOV8zWzFdID0geworICAgIHszMCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzRbMV0gPSB7Ci0gICAgezI0LCA5fSwKK3N0YXRpYyBhcmMgYXJjc185XzRbMV0gPSB7CisgICAgezI2LCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfNVs0XSA9IHsKLSAgICB7MzQsIDEwfSwKLSAgICB7MzEsIDExfSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfNVs0XSA9IHsKKyAgICB7MzAsIDEwfSwKKyAgICB7MzMsIDExfSwKKyAgICB7MzQsIDN9LAogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfNlsyXSA9IHsKLSAgICB7MzAsIDd9LAorc3RhdGljIGFyYyBhcmNzXzlfNlsyXSA9IHsKKyAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfN1syXSA9IHsKLSAgICB7MzQsIDEyfSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfN1syXSA9IHsKKyAgICB7MzAsIDEyfSwKKyAgICB7MzQsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfOFsxXSA9IHsKICAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzlbMl0gPSB7Ci0gICAgezMwLCA1fSwKK3N0YXRpYyBhcmMgYXJjc185XzlbMl0gPSB7CisgICAgezMyLCA1fSwKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzEwWzNdID0gewotICAgIHszMCwgNX0sCi0gICAgezI5LCA0fSwKK3N0YXRpYyBhcmMgYXJjc185XzEwWzNdID0geworICAgIHszMiwgNX0sCisgICAgezMxLCA0fSwKICAgICB7MCwgMTB9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xMVszXSA9IHsKLSAgICB7MzQsIDEzfSwKLSAgICB7MzAsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc185XzExWzNdID0geworICAgIHszMCwgMTN9LAorICAgIHszMiwgMTR9LAogICAgIHswLCAxMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzEyWzNdID0gewotICAgIHszMCwgN30sCi0gICAgezI5LCAxNX0sCitzdGF0aWMgYXJjIGFyY3NfOV8xMlszXSA9IHsKKyAgICB7MzIsIDd9LAorICAgIHszMSwgMTV9LAogICAgIHswLCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzEzWzJdID0gewotICAgIHszMCwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTNbMl0gPSB7CisgICAgezMyLCAxNH0sCiAgICAgezAsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTRbMl0gPSB7Ci0gICAgezM0LCAxNn0sCi0gICAgezMyLCAzfSwKK3N0YXRpYyBhcmMgYXJjc185XzE0WzJdID0geworICAgIHszMCwgMTZ9LAorICAgIHszNCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzE1WzFdID0gewotICAgIHsyNCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfOV8xNVsxXSA9IHsKKyAgICB7MjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xNlszXSA9IHsKLSAgICB7MzAsIDE0fSwKLSAgICB7MjksIDE3fSwKK3N0YXRpYyBhcmMgYXJjc185XzE2WzNdID0geworICAgIHszMiwgMTR9LAorICAgIHszMSwgMTd9LAogICAgIHswLCAxNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzE3WzFdID0gewotICAgIHsyNCwgMTN9LAorc3RhdGljIGFyYyBhcmNzXzlfMTdbMV0gPSB7CisgICAgezI2LCAxM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMFsxOF0gPSB7Ci0gICAgezMsIGFyY3NfMTBfMH0sCi0gICAgezMsIGFyY3NfMTBfMX0sCi0gICAgezMsIGFyY3NfMTBfMn0sCi0gICAgezEsIGFyY3NfMTBfM30sCi0gICAgezEsIGFyY3NfMTBfNH0sCi0gICAgezQsIGFyY3NfMTBfNX0sCi0gICAgezIsIGFyY3NfMTBfNn0sCi0gICAgezIsIGFyY3NfMTBfN30sCi0gICAgezEsIGFyY3NfMTBfOH0sCi0gICAgezIsIGFyY3NfMTBfOX0sCi0gICAgezMsIGFyY3NfMTBfMTB9LAotICAgIHszLCBhcmNzXzEwXzExfSwKLSAgICB7MywgYXJjc18xMF8xMn0sCi0gICAgezIsIGFyY3NfMTBfMTN9LAotICAgIHsyLCBhcmNzXzEwXzE0fSwKLSAgICB7MSwgYXJjc18xMF8xNX0sCi0gICAgezMsIGFyY3NfMTBfMTZ9LAotICAgIHsxLCBhcmNzXzEwXzE3fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfOVsxOF0gPSB7CisgICAgezMsIGFyY3NfOV8wfSwKKyAgICB7MywgYXJjc185XzF9LAorICAgIHszLCBhcmNzXzlfMn0sCisgICAgezEsIGFyY3NfOV8zfSwKKyAgICB7MSwgYXJjc185XzR9LAorICAgIHs0LCBhcmNzXzlfNX0sCisgICAgezIsIGFyY3NfOV82fSwKKyAgICB7MiwgYXJjc185Xzd9LAorICAgIHsxLCBhcmNzXzlfOH0sCisgICAgezIsIGFyY3NfOV85fSwKKyAgICB7MywgYXJjc185XzEwfSwKKyAgICB7MywgYXJjc185XzExfSwKKyAgICB7MywgYXJjc185XzEyfSwKKyAgICB7MiwgYXJjc185XzEzfSwKKyAgICB7MiwgYXJjc185XzE0fSwKKyAgICB7MSwgYXJjc185XzE1fSwKKyAgICB7MywgYXJjc185XzE2fSwKKyAgICB7MSwgYXJjc185XzE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzEwXzBbMV0gPSB7CisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMF8xWzJdID0geworICAgIHsyNywgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMl0gPSB7Ci0gICAgezEsIGFyY3NfMTFfMH0sCi0gICAgezEsIGFyY3NfMTFfMX0sCitzdGF0aWMgYXJjIGFyY3NfMTBfMlsxXSA9IHsKKyAgICB7MjYsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMl8wWzJdID0gewotICAgIHszLCAxfSwKLSAgICB7NCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTBfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18xMFs0XSA9IHsKKyAgICB7MSwgYXJjc18xMF8wfSwKKyAgICB7MiwgYXJjc18xMF8xfSwKKyAgICB7MSwgYXJjc18xMF8yfSwKKyAgICB7MSwgYXJjc18xMF8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMFszXSA9IHsKKyAgICB7MzYsIDF9LAorICAgIHszMywgMn0sCisgICAgezM0LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMVszXSA9IHsKKyAgICB7MzEsIDR9LAorICAgIHszMiwgNX0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8yWzNdID0geworICAgIHszNiwgNn0sCisgICAgezMyLCA3fSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzNbMV0gPSB7CisgICAgezM2LCA4fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfNFsxXSA9IHsKKyAgICB7MjYsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV81WzRdID0geworICAgIHszNiwgMTB9LAorICAgIHszMywgMTF9LAorICAgIHszNCwgM30sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV82WzJdID0geworICAgIHszMiwgN30sCisgICAgezAsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV83WzJdID0geworICAgIHszNiwgMTJ9LAorICAgIHszNCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzhbMV0gPSB7CisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV85WzJdID0geworICAgIHszMiwgNX0sCisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xMFszXSA9IHsKKyAgICB7MzIsIDV9LAorICAgIHszMSwgNH0sCisgICAgezAsIDEwfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMTFbM10gPSB7CisgICAgezM2LCAxM30sCisgICAgezMyLCAxNH0sCisgICAgezAsIDExfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMTJbM10gPSB7CisgICAgezMyLCA3fSwKKyAgICB7MzEsIDE1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xM1syXSA9IHsKKyAgICB7MzIsIDE0fSwKKyAgICB7MCwgMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNFsyXSA9IHsKKyAgICB7MzYsIDE2fSwKKyAgICB7MzQsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNVsxXSA9IHsKKyAgICB7MjYsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNlszXSA9IHsKKyAgICB7MzIsIDE0fSwKKyAgICB7MzEsIDE3fSwKKyAgICB7MCwgMTZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xN1sxXSA9IHsKKyAgICB7MjYsIDEzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE4XSA9IHsKKyAgICB7MywgYXJjc18xMV8wfSwKKyAgICB7MywgYXJjc18xMV8xfSwKKyAgICB7MywgYXJjc18xMV8yfSwKKyAgICB7MSwgYXJjc18xMV8zfSwKKyAgICB7MSwgYXJjc18xMV80fSwKKyAgICB7NCwgYXJjc18xMV81fSwKKyAgICB7MiwgYXJjc18xMV82fSwKKyAgICB7MiwgYXJjc18xMV83fSwKKyAgICB7MSwgYXJjc18xMV84fSwKKyAgICB7MiwgYXJjc18xMV85fSwKKyAgICB7MywgYXJjc18xMV8xMH0sCisgICAgezMsIGFyY3NfMTFfMTF9LAorICAgIHszLCBhcmNzXzExXzEyfSwKKyAgICB7MiwgYXJjc18xMV8xM30sCisgICAgezIsIGFyY3NfMTFfMTR9LAorICAgIHsxLCBhcmNzXzExXzE1fSwKKyAgICB7MywgYXJjc18xMV8xNn0sCisgICAgezEsIGFyY3NfMTFfMTd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMl8wWzFdID0geworICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzEyXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTJbMl0gPSB7Ci0gICAgezIsIGFyY3NfMTJfMH0sCisgICAgezEsIGFyY3NfMTJfMH0sCiAgICAgezEsIGFyY3NfMTJfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzBbMV0gPSB7Ci0gICAgezM1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xM18wWzJdID0geworICAgIHszLCAxfSwKKyAgICB7NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzFbMl0gPSB7Ci0gICAgezM2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18xM18xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzEzWzJdID0geworICAgIHsyLCBhcmNzXzEzXzB9LAorICAgIHsxLCBhcmNzXzEzXzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNF8wWzFdID0geworICAgIHszNywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE0XzFbMl0gPSB7CisgICAgezM4LCAyfSwKICAgICB7MiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzJbMl0gPSB7Ci0gICAgezM1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xNF8yWzJdID0geworICAgIHszNywgMX0sCiAgICAgezIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xM18zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzE0XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTNbNF0gPSB7Ci0gICAgezEsIGFyY3NfMTNfMH0sCi0gICAgezIsIGFyY3NfMTNfMX0sCi0gICAgezIsIGFyY3NfMTNfMn0sCi0gICAgezEsIGFyY3NfMTNfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE0WzRdID0geworICAgIHsxLCBhcmNzXzE0XzB9LAorICAgIHsyLCBhcmNzXzE0XzF9LAorICAgIHsyLCBhcmNzXzE0XzJ9LAorICAgIHsxLCBhcmNzXzE0XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNF8wWzhdID0gewotICAgIHszNywgMX0sCi0gICAgezM4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xNV8wWzhdID0gewogICAgIHszOSwgMX0sCiAgICAgezQwLCAxfSwKICAgICB7NDEsIDF9LAogICAgIHs0MiwgMX0sCiAgICAgezQzLCAxfSwKICAgICB7NDQsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xNF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE0WzJdID0gewotICAgIHs4LCBhcmNzXzE0XzB9LAotICAgIHsxLCBhcmNzXzE0XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xNV8wWzFdID0gewogICAgIHs0NSwgMX0sCisgICAgezQ2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfMVszXSA9IHsKLSAgICB7NDYsIDJ9LAotICAgIHsyOSwgM30sCitzdGF0aWMgYXJjIGFyY3NfMTVfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzJbMl0gPSB7Ci0gICAgezQ3LCA0fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTVbMl0gPSB7CisgICAgezgsIGFyY3NfMTVfMH0sCisgICAgezEsIGFyY3NfMTVfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzBbMV0gPSB7CisgICAgezQ3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTZfMVszXSA9IHsKKyAgICB7NDgsIDJ9LAorICAgIHszMSwgM30sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNl8yWzJdID0geworICAgIHs0OSwgNH0sCiAgICAgezksIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNV8zWzJdID0geworc3RhdGljIGFyYyBhcmNzXzE2XzNbMl0gPSB7CisgICAgezQ5LCA1fSwKICAgICB7NDcsIDV9LAotICAgIHs0NSwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTZfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzVbMl0gPSB7Ci0gICAgezI5LCAzfSwKK3N0YXRpYyBhcmMgYXJjc18xNl81WzJdID0geworICAgIHszMSwgM30sCiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTVbNl0gPSB7Ci0gICAgezEsIGFyY3NfMTVfMH0sCi0gICAgezMsIGFyY3NfMTVfMX0sCi0gICAgezIsIGFyY3NfMTVfMn0sCi0gICAgezIsIGFyY3NfMTVfM30sCi0gICAgezEsIGFyY3NfMTVfNH0sCi0gICAgezIsIGFyY3NfMTVfNX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE2WzZdID0geworICAgIHsxLCBhcmNzXzE2XzB9LAorICAgIHszLCBhcmNzXzE2XzF9LAorICAgIHsyLCBhcmNzXzE2XzJ9LAorICAgIHsyLCBhcmNzXzE2XzN9LAorICAgIHsxLCBhcmNzXzE2XzR9LAorICAgIHsyLCBhcmNzXzE2XzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8wWzJdID0gewotICAgIHsyNCwgMX0sCi0gICAgezQ4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xN18wWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzE3XzFbMl0gPSB7CisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzJbM10gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7NDgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzJbM10gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTAsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE2WzNdID0gewotICAgIHsyLCBhcmNzXzE2XzB9LAotICAgIHsyLCBhcmNzXzE2XzF9LAotICAgIHszLCBhcmNzXzE2XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc18xN1szXSA9IHsKKyAgICB7MiwgYXJjc18xN18wfSwKKyAgICB7MiwgYXJjc18xN18xfSwKKyAgICB7MywgYXJjc18xN18yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMFsxMl0gPSB7Ci0gICAgezQ5LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE4XzBbMTNdID0gewogICAgIHs1MSwgMX0sCiAgICAgezUyLCAxfSwKICAgICB7NTMsIDF9LApAQCAtNDg5LDY0ICs1MDIsNTcgQEAKICAgICB7NTgsIDF9LAogICAgIHs1OSwgMX0sCiAgICAgezYwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18xN1syXSA9IHsKLSAgICB7MTIsIGFyY3NfMTdfMH0sCi0gICAgezEsIGFyY3NfMTdfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE4XzBbMV0gPSB7CiAgICAgezYxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMVsxXSA9IHsKLSAgICB7NjIsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzNdID0gewotICAgIHsxLCBhcmNzXzE4XzB9LAotICAgIHsxLCBhcmNzXzE4XzF9LAotICAgIHsxLCBhcmNzXzE4XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8wWzFdID0geworICAgIHs2MiwgMX0sCiAgICAgezYzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18xOFsyXSA9IHsKKyAgICB7MTMsIGFyY3NfMThfMH0sCisgICAgezEsIGFyY3NfMThfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE5XzBbMV0gPSB7CisgICAgezY0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTlfMVsxXSA9IHsKKyAgICB7NjUsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzNdID0gewogICAgIHsxLCBhcmNzXzE5XzB9LAogICAgIHsxLCBhcmNzXzE5XzF9LAorICAgIHsxLCBhcmNzXzE5XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMF8wWzVdID0gewotICAgIHs2NCwgMX0sCi0gICAgezY1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0gewogICAgIHs2NiwgMX0sCi0gICAgezY3LCAxfSwKLSAgICB7NjgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMF8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIwWzJdID0gewotICAgIHs1LCBhcmNzXzIwXzB9LAorICAgIHsxLCBhcmNzXzIwXzB9LAogICAgIHsxLCBhcmNzXzIwXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMV8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzIxXzBbNV0gPSB7CisgICAgezY3LCAxfSwKKyAgICB7NjgsIDF9LAogICAgIHs2OSwgMX0sCisgICAgezcwLCAxfSwKKyAgICB7NzEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMV8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIxWzJdID0gewotICAgIHsxLCBhcmNzXzIxXzB9LAorICAgIHs1LCBhcmNzXzIxXzB9LAogICAgIHsxLCBhcmNzXzIxXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMl8wWzFdID0gewotICAgIHs3MCwgMX0sCisgICAgezcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjJfMVsxXSA9IHsKICAgICB7MCwgMX0sCkBAIC01NTYsMTQ4ICs1NjIsMTM5IEBACiAgICAgezEsIGFyY3NfMjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIzXzBbMV0gPSB7Ci0gICAgezcxLCAxfSwKKyAgICB7NzMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yM18xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzIzXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjNbMl0gPSB7CisgICAgezEsIGFyY3NfMjNfMH0sCisgICAgezEsIGFyY3NfMjNfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI0XzBbMV0gPSB7CisgICAgezc0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjRfMVsyXSA9IHsKICAgICB7OSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yM18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI0XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjNbM10gPSB7Ci0gICAgezEsIGFyY3NfMjNfMH0sCi0gICAgezIsIGFyY3NfMjNfMX0sCi0gICAgezEsIGFyY3NfMjNfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI0XzBbMV0gPSB7Ci0gICAgezQ3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNFsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjRbM10gPSB7CiAgICAgezEsIGFyY3NfMjRfMH0sCi0gICAgezEsIGFyY3NfMjRfMX0sCisgICAgezIsIGFyY3NfMjRfMX0sCisgICAgezEsIGFyY3NfMjRfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI1XzBbMV0gPSB7Ci0gICAgezcyLCAxfSwKKyAgICB7NDksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8xWzJdID0gewotICAgIHsyNCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMjVfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI1XzJbMl0gPSB7Ci0gICAgezczLCAzfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI1XzNbMV0gPSB7Ci0gICAgezI0LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNVs1XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjVbMl0gPSB7CiAgICAgezEsIGFyY3NfMjVfMH0sCi0gICAgezIsIGFyY3NfMjVfMX0sCi0gICAgezIsIGFyY3NfMjVfMn0sCi0gICAgezEsIGFyY3NfMjVfM30sCi0gICAgezEsIGFyY3NfMjVfNH0sCisgICAgezEsIGFyY3NfMjVfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzBbMl0gPSB7Ci0gICAgezc0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yNl8wWzFdID0gewogICAgIHs3NSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzFbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjZfMVsyXSA9IHsKKyAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzJdID0gewotICAgIHsyLCBhcmNzXzI2XzB9LAotICAgIHsxLCBhcmNzXzI2XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yN18wWzFdID0gewotICAgIHs3NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7Ci0gICAgezc3LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNl8yWzJdID0geworICAgIHs3NiwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbM10gPSB7Ci0gICAgezEsIGFyY3NfMjdfMH0sCi0gICAgezEsIGFyY3NfMjdfMX0sCi0gICAgezEsIGFyY3NfMjdfMn0sCitzdGF0aWMgYXJjIGFyY3NfMjZfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8wWzFdID0gewotICAgIHs3MywgMX0sCitzdGF0aWMgYXJjIGFyY3NfMjZfNFsxXSA9IHsKKyAgICB7MCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzFbM10gPSB7Ci0gICAgezc4LCAyfSwKLSAgICB7NzksIDJ9LAotICAgIHsxMiwgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzVdID0geworICAgIHsxLCBhcmNzXzI2XzB9LAorICAgIHsyLCBhcmNzXzI2XzF9LAorICAgIHsyLCBhcmNzXzI2XzJ9LAorICAgIHsxLCBhcmNzXzI2XzN9LAorICAgIHsxLCBhcmNzXzI2XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8yWzRdID0gewotICAgIHs3OCwgMn0sCi0gICAgezc5LCAyfSwKLSAgICB7MTIsIDN9LAotICAgIHs3NiwgNH0sCitzdGF0aWMgYXJjIGFyY3NfMjdfMFsyXSA9IHsKKyAgICB7NzcsIDF9LAorICAgIHs3OCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzNbMV0gPSB7Ci0gICAgezc2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfNFszXSA9IHsKLSAgICB7MzEsIDV9LAotICAgIHsxMywgNn0sCi0gICAgezgwLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzZbMV0gPSB7Ci0gICAgezgwLCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfN1sxXSA9IHsKLSAgICB7MTUsIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjhbOF0gPSB7Ci0gICAgezEsIGFyY3NfMjhfMH0sCi0gICAgezMsIGFyY3NfMjhfMX0sCi0gICAgezQsIGFyY3NfMjhfMn0sCi0gICAgezEsIGFyY3NfMjhfM30sCi0gICAgezMsIGFyY3NfMjhfNH0sCi0gICAgezEsIGFyY3NfMjhfNX0sCi0gICAgezEsIGFyY3NfMjhfNn0sCi0gICAgezEsIGFyY3NfMjhfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMVsyXSA9IHsKLSAgICB7ODIsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8yWzFdID0gewotICAgIHsyMSwgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI3WzJdID0geworICAgIHsyLCBhcmNzXzI3XzB9LAorICAgIHsxLCBhcmNzXzI3XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOF8wWzFdID0geworICAgIHs3OSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI4XzFbMV0gPSB7CisgICAgezgwLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjhfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOFszXSA9IHsKKyAgICB7MSwgYXJjc18yOF8wfSwKKyAgICB7MSwgYXJjc18yOF8xfSwKKyAgICB7MSwgYXJjc18yOF8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKKyAgICB7NzYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8xWzNdID0geworICAgIHs4MSwgMn0sCisgICAgezgyLCAyfSwKKyAgICB7MTIsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8yWzRdID0geworICAgIHs4MSwgMn0sCisgICAgezgyLCAyfSwKKyAgICB7MTIsIDN9LAorICAgIHs3OSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI5XzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHs3OSwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOVs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yOV80WzNdID0geworICAgIHszMywgNX0sCisgICAgezEzLCA2fSwKKyAgICB7ODMsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfNlsxXSA9IHsKKyAgICB7ODMsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV83WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOVs4XSA9IHsKICAgICB7MSwgYXJjc18yOV8wfSwKLSAgICB7MiwgYXJjc18yOV8xfSwKLSAgICB7MSwgYXJjc18yOV8yfSwKKyAgICB7MywgYXJjc18yOV8xfSwKKyAgICB7NCwgYXJjc18yOV8yfSwKICAgICB7MSwgYXJjc18yOV8zfSwKKyAgICB7MywgYXJjc18yOV80fSwKKyAgICB7MSwgYXJjc18yOV81fSwKKyAgICB7MSwgYXJjc18yOV82fSwKKyAgICB7MSwgYXJjc18yOV83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKLSAgICB7MTIsIDF9LAorICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzFbMl0gPSB7Ci0gICAgezgyLCAyfSwKKyAgICB7ODUsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfMlsxXSA9IHsKLSAgICB7MjEsIDN9LAorICAgIHsyMywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzNbMV0gPSB7CiAgICAgezAsIDN9LApAQCAtNzA5LDM3ICs3MDYsNDUgQEAKICAgICB7MSwgYXJjc18zMF8zfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMFsxXSA9IHsKLSAgICB7ODEsIDF9LAorICAgIHsxMiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzFbMl0gPSB7Ci0gICAgezMwLCAyfSwKKyAgICB7ODUsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzFfMlsyXSA9IHsKLSAgICB7ODEsIDF9LAotICAgIHswLCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zMV8yWzFdID0geworICAgIHsyMywgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMV8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMxWzRdID0gewogICAgIHsxLCBhcmNzXzMxXzB9LAogICAgIHsyLCBhcmNzXzMxXzF9LAotICAgIHsyLCBhcmNzXzMxXzJ9LAorICAgIHsxLCBhcmNzXzMxXzJ9LAorICAgIHsxLCBhcmNzXzMxXzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8wWzFdID0gewotICAgIHs4MywgMX0sCisgICAgezg0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzJfMVsyXSA9IHsKLSAgICB7MzAsIDB9LAorICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMzJfMlsyXSA9IHsKKyAgICB7ODQsIDF9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMyWzNdID0gewogICAgIHsxLCBhcmNzXzMyXzB9LAogICAgIHsyLCBhcmNzXzMyXzF9LAorICAgIHsyLCBhcmNzXzMyXzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zM18wWzFdID0gewotICAgIHsyMSwgMX0sCisgICAgezg2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKLSAgICB7NzgsIDB9LAorICAgIHszMiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbMl0gPSB7CkBAIC03NDcsMjggKzc1MiwyNCBAQAogICAgIHsyLCBhcmNzXzMzXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8wWzFdID0gewotICAgIHs4NCwgMX0sCisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzRfMVsxXSA9IHsKLSAgICB7MjEsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM0XzFbMl0gPSB7CisgICAgezgxLCAwfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM0XzJbMl0gPSB7Ci0gICAgezMwLCAxfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNFszXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzRbMl0gPSB7CiAgICAgezEsIGFyY3NfMzRfMH0sCi0gICAgezEsIGFyY3NfMzRfMX0sCi0gICAgezIsIGFyY3NfMzRfMn0sCisgICAgezIsIGFyY3NfMzRfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM1XzBbMV0gPSB7Ci0gICAgezg1LCAxfSwKKyAgICB7ODcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8xWzFdID0gewotICAgIHsyMSwgMn0sCisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzVfMlsyXSA9IHsKLSAgICB7MzAsIDF9LAorICAgIHszMiwgMX0sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbM10gPSB7CkBAIC03NzcsNTA0ICs3NzgsNTE0IEBACiAgICAgezIsIGFyY3NfMzVfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzBbMV0gPSB7Ci0gICAgezg2LCAxfSwKKyAgICB7ODgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNl8xWzFdID0gewotICAgIHsyNCwgMn0sCisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzZfMlsyXSA9IHsKLSAgICB7MzAsIDN9LAorICAgIHszMiwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNl8zWzFdID0gewotICAgIHsyNCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM2XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzZbNV0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM2WzNdID0gewogICAgIHsxLCBhcmNzXzM2XzB9LAogICAgIHsxLCBhcmNzXzM2XzF9LAogICAgIHsyLCBhcmNzXzM2XzJ9LAotICAgIHsxLCBhcmNzXzM2XzN9LAotICAgIHsxLCBhcmNzXzM2XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zN18wWzhdID0gewotICAgIHs4NywgMX0sCi0gICAgezg4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18zN18wWzFdID0gewogICAgIHs4OSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM3XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzdfMlsyXSA9IHsKKyAgICB7MzIsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzdfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zN180WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzVdID0geworICAgIHsxLCBhcmNzXzM3XzB9LAorICAgIHsxLCBhcmNzXzM3XzF9LAorICAgIHsyLCBhcmNzXzM3XzJ9LAorICAgIHsxLCBhcmNzXzM3XzN9LAorICAgIHsxLCBhcmNzXzM3XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8wWzldID0gewogICAgIHs5MCwgMX0sCiAgICAgezkxLCAxfSwKKyAgICB7OTIsIDF9LAorICAgIHs5MywgMX0sCisgICAgezk0LCAxfSwKICAgICB7MTksIDF9LAogICAgIHsxOCwgMX0sCiAgICAgezE3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zN1syXSA9IHsKLSAgICB7OCwgYXJjc18zN18wfSwKLSAgICB7MSwgYXJjc18zN18xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMFsxXSA9IHsKLSAgICB7OTIsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0gewotICAgIHsyNCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzJbMV0gPSB7Ci0gICAgezI1LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF80WzNdID0gewotICAgIHs5MywgMX0sCi0gICAgezk0LCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzVbMV0gPSB7Ci0gICAgezI1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfNlsxXSA9IHsKLSAgICB7MjYsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzhdID0gewotICAgIHsxLCBhcmNzXzM4XzB9LAotICAgIHsxLCBhcmNzXzM4XzF9LAotICAgIHsxLCBhcmNzXzM4XzJ9LAotICAgIHsxLCBhcmNzXzM4XzN9LAotICAgIHszLCBhcmNzXzM4XzR9LAotICAgIHsxLCBhcmNzXzM4XzV9LAotICAgIHsxLCBhcmNzXzM4XzZ9LAotICAgIHsxLCBhcmNzXzM4Xzd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0gewogICAgIHs5NSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM5XzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzJdID0geworICAgIHs5LCBhcmNzXzM4XzB9LAorICAgIHsxLCBhcmNzXzM4XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0geworICAgIHsyMSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM5XzFbM10gPSB7CisgICAgezE5LCAyfSwKKyAgICB7OTQsIDJ9LAorICAgIHs5MiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM5XzJbMV0gPSB7Ci0gICAgezI1LCAzfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM5XzNbMV0gPSB7Ci0gICAgezI2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfNFsyXSA9IHsKLSAgICB7OTQsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfNVsxXSA9IHsKLSAgICB7MjUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV82WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM5WzNdID0gewogICAgIHsxLCBhcmNzXzM5XzB9LAotICAgIHsxLCBhcmNzXzM5XzF9LAorICAgIHszLCBhcmNzXzM5XzF9LAogICAgIHsxLCBhcmNzXzM5XzJ9LAotICAgIHsxLCBhcmNzXzM5XzN9LAotICAgIHsyLCBhcmNzXzM5XzR9LAotICAgIHsxLCBhcmNzXzM5XzV9LAotICAgIHsxLCBhcmNzXzM5XzZ9LAotICAgIHsxLCBhcmNzXzM5Xzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8wWzFdID0gewogICAgIHs5NiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzFbMV0gPSB7Ci0gICAgezYyLCAyfSwKKyAgICB7MjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8yWzFdID0gewotICAgIHs5NywgM30sCisgICAgezI3LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfM1sxXSA9IHsKLSAgICB7OSwgNH0sCisgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNFsxXSA9IHsKLSAgICB7MjUsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQwXzRbM10gPSB7CisgICAgezk3LCAxfSwKKyAgICB7OTgsIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfNVsxXSA9IHsKLSAgICB7MjYsIDZ9LAorICAgIHsyNywgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzZbMl0gPSB7Ci0gICAgezk0LCA3fSwKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDBfNlsxXSA9IHsKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF83WzFdID0gewotICAgIHsyNSwgOH0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF84WzFdID0gewotICAgIHsyNiwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzlbMV0gPSB7Ci0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDBbMTBdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MFs4XSA9IHsKICAgICB7MSwgYXJjc180MF8wfSwKICAgICB7MSwgYXJjc180MF8xfSwKICAgICB7MSwgYXJjc180MF8yfSwKICAgICB7MSwgYXJjc180MF8zfSwKLSAgICB7MSwgYXJjc180MF80fSwKKyAgICB7MywgYXJjc180MF80fSwKICAgICB7MSwgYXJjc180MF81fSwKLSAgICB7MiwgYXJjc180MF82fSwKKyAgICB7MSwgYXJjc180MF82fSwKICAgICB7MSwgYXJjc180MF83fSwKLSAgICB7MSwgYXJjc180MF84fSwKLSAgICB7MSwgYXJjc180MF85fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMFsxXSA9IHsKLSAgICB7OTgsIDF9LAorICAgIHs5OSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzFbMV0gPSB7Ci0gICAgezI1LCAyfSwKKyAgICB7MjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8yWzFdID0gewotICAgIHsyNiwgM30sCisgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfM1syXSA9IHsKLSAgICB7OTksIDR9LAotICAgIHsxMDAsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQxXzNbMV0gPSB7CisgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfNFsxXSA9IHsKLSAgICB7MjUsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzQxXzRbMl0gPSB7CisgICAgezk4LCA1fSwKKyAgICB7MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzVbMV0gPSB7Ci0gICAgezI1LCA3fSwKKyAgICB7MjcsIDZ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV82WzFdID0gewotICAgIHsyNiwgOH0sCisgICAgezI4LCA3fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfN1sxXSA9IHsKLSAgICB7MjYsIDl9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfOFs0XSA9IHsKLSAgICB7OTksIDR9LAotICAgIHs5NCwgMTB9LAotICAgIHsxMDAsIDV9LAotICAgIHswLCA4fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfOVsxXSA9IHsKLSAgICB7MCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQxXzEwWzFdID0gewotICAgIHsyNSwgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MV8xMVsxXSA9IHsKLSAgICB7MjYsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfMTJbMl0gPSB7Ci0gICAgezEwMCwgNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQxWzEzXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDFbOF0gPSB7CiAgICAgezEsIGFyY3NfNDFfMH0sCiAgICAgezEsIGFyY3NfNDFfMX0sCiAgICAgezEsIGFyY3NfNDFfMn0sCi0gICAgezIsIGFyY3NfNDFfM30sCi0gICAgezEsIGFyY3NfNDFfNH0sCisgICAgezEsIGFyY3NfNDFfM30sCisgICAgezIsIGFyY3NfNDFfNH0sCiAgICAgezEsIGFyY3NfNDFfNX0sCiAgICAgezEsIGFyY3NfNDFfNn0sCiAgICAgezEsIGFyY3NfNDFfN30sCi0gICAgezQsIGFyY3NfNDFfOH0sCi0gICAgezEsIGFyY3NfNDFfOX0sCi0gICAgezEsIGFyY3NfNDFfMTB9LAotICAgIHsxLCBhcmNzXzQxXzExfSwKLSAgICB7MiwgYXJjc180MV8xMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzBbMV0gPSB7Ci0gICAgezEwMSwgMX0sCisgICAgezEwMCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzFbMV0gPSB7Ci0gICAgezEwMiwgMn0sCisgICAgezY1LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfMlsyXSA9IHsKLSAgICB7MzAsIDF9LAotICAgIHsyNSwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDJfMlsxXSA9IHsKKyAgICB7MTAxLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAorICAgIHs5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfNFsxXSA9IHsKLSAgICB7MCwgNH0sCisgICAgezI3LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQyWzVdID0geworc3RhdGljIGFyYyBhcmNzXzQyXzVbMV0gPSB7CisgICAgezI4LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDJfNlsyXSA9IHsKKyAgICB7OTgsIDd9LAorICAgIHswLCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDJfN1sxXSA9IHsKKyAgICB7MjcsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Ml84WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQyXzlbMV0gPSB7CisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbMTBdID0gewogICAgIHsxLCBhcmNzXzQyXzB9LAogICAgIHsxLCBhcmNzXzQyXzF9LAotICAgIHsyLCBhcmNzXzQyXzJ9LAorICAgIHsxLCBhcmNzXzQyXzJ9LAogICAgIHsxLCBhcmNzXzQyXzN9LAogICAgIHsxLCBhcmNzXzQyXzR9LAorICAgIHsxLCBhcmNzXzQyXzV9LAorICAgIHsyLCBhcmNzXzQyXzZ9LAorICAgIHsxLCBhcmNzXzQyXzd9LAorICAgIHsxLCBhcmNzXzQyXzh9LAorICAgIHsxLCBhcmNzXzQyXzl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18wWzFdID0gewotICAgIHsyNCwgMX0sCisgICAgezEwMiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzFbMl0gPSB7Ci0gICAgezgyLCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNDNfMVsxXSA9IHsKKyAgICB7MjcsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18yWzFdID0gewotICAgIHsxMDMsIDN9LAorICAgIHsyOCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorc3RhdGljIGFyYyBhcmNzXzQzXzNbMl0gPSB7CisgICAgezEwMywgNH0sCisgICAgezEwNCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180M1s0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc180M180WzFdID0geworICAgIHsyNywgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzVbMV0gPSB7CisgICAgezI3LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfNlsxXSA9IHsKKyAgICB7MjgsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M183WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzhbNF0gPSB7CisgICAgezEwMywgNH0sCisgICAgezk4LCAxMH0sCisgICAgezEwNCwgNX0sCisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M185WzFdID0geworICAgIHswLCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfMTBbMV0gPSB7CisgICAgezI3LCAxMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzExWzFdID0geworICAgIHsyOCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M18xMlsyXSA9IHsKKyAgICB7MTA0LCA1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTNdID0gewogICAgIHsxLCBhcmNzXzQzXzB9LAotICAgIHsyLCBhcmNzXzQzXzF9LAorICAgIHsxLCBhcmNzXzQzXzF9LAogICAgIHsxLCBhcmNzXzQzXzJ9LAotICAgIHsxLCBhcmNzXzQzXzN9LAorICAgIHsyLCBhcmNzXzQzXzN9LAorICAgIHsxLCBhcmNzXzQzXzR9LAorICAgIHsxLCBhcmNzXzQzXzV9LAorICAgIHsxLCBhcmNzXzQzXzZ9LAorICAgIHsxLCBhcmNzXzQzXzd9LAorICAgIHs0LCBhcmNzXzQzXzh9LAorICAgIHsxLCBhcmNzXzQzXzl9LAorICAgIHsxLCBhcmNzXzQzXzEwfSwKKyAgICB7MSwgYXJjc180M18xMX0sCisgICAgezIsIGFyY3NfNDNfMTJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8wWzFdID0gewotICAgIHsxMDQsIDF9LAorICAgIHsxMDUsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF8xWzJdID0gewotICAgIHsyNCwgMn0sCi0gICAgezAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzQ0XzFbMV0gPSB7CisgICAgezEwNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzJbMl0gPSB7Ci0gICAgezgyLCAzfSwKLSAgICB7MCwgMn0sCisgICAgezMyLCAxfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8zWzFdID0gewotICAgIHsyMSwgNH0sCisgICAgezI4LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc180NFs1XSA9IHsKICAgICB7MSwgYXJjc180NF8wfSwKLSAgICB7MiwgYXJjc180NF8xfSwKKyAgICB7MSwgYXJjc180NF8xfSwKICAgICB7MiwgYXJjc180NF8yfSwKICAgICB7MSwgYXJjc180NF8zfSwKICAgICB7MSwgYXJjc180NF80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMFsyXSA9IHsKLSAgICB7MywgMX0sCi0gICAgezIsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzQ1XzBbMV0gPSB7CisgICAgezI2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV8xWzJdID0geworICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NV8yWzFdID0gewotICAgIHsxMDUsIDN9LAorICAgIHsxMDcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewotICAgIHs2LCA0fSwKKyAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ1XzRbMl0gPSB7Ci0gICAgezYsIDR9LAotICAgIHsxMDYsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNV0gPSB7Ci0gICAgezIsIGFyY3NfNDVfMH0sCi0gICAgezEsIGFyY3NfNDVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzRdID0geworICAgIHsxLCBhcmNzXzQ1XzB9LAorICAgIHsyLCBhcmNzXzQ1XzF9LAogICAgIHsxLCBhcmNzXzQ1XzJ9LAogICAgIHsxLCBhcmNzXzQ1XzN9LAotICAgIHsyLCBhcmNzXzQ1XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8wWzJdID0gewotICAgIHsxMDcsIDF9LAotICAgIHsxMDgsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzQ2XzBbMV0gPSB7CisgICAgezEwOCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzFbMl0gPSB7Ci0gICAgezkyLCAzfSwKKyAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180Nl8yWzJdID0geworICAgIHs4NSwgM30sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0gewotICAgIHsxMDcsIDR9LAorICAgIHsyMywgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzRbMV0gPSB7Ci0gICAgezk0LCA1fSwKKyAgICB7MCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzVbMV0gPSB7Ci0gICAgezI0LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzZdID0gewotICAgIHsyLCBhcmNzXzQ2XzB9LAorc3RhdGljIHN0YXRlIHN0YXRlc180Nls1XSA9IHsKKyAgICB7MSwgYXJjc180Nl8wfSwKICAgICB7MiwgYXJjc180Nl8xfSwKLSAgICB7MSwgYXJjc180Nl8yfSwKKyAgICB7MiwgYXJjc180Nl8yfSwKICAgICB7MSwgYXJjc180Nl8zfSwKICAgICB7MSwgYXJjc180Nl80fSwKLSAgICB7MSwgYXJjc180Nl81fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDdfMFsyXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7MTEwLCAxfSwKKyAgICB7MywgMX0sCisgICAgezIsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180N18xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzJdID0geworc3RhdGljIGFyYyBhcmNzXzQ3XzJbMV0gPSB7CisgICAgezEwOSwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzNbMV0gPSB7CisgICAgezYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N180WzJdID0geworICAgIHs2LCA0fSwKKyAgICB7MTEwLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzVdID0gewogICAgIHsyLCBhcmNzXzQ3XzB9LAogICAgIHsxLCBhcmNzXzQ3XzF9LAorICAgIHsxLCBhcmNzXzQ3XzJ9LAorICAgIHsxLCBhcmNzXzQ3XzN9LAorICAgIHsyLCBhcmNzXzQ3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7CiAgICAgezExMSwgMX0sCisgICAgezExMiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzFbMl0gPSB7Ci0gICAgezMzLCAyfSwKLSAgICB7MjUsIDN9LAorICAgIHs5NiwgM30sCisgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8yWzFdID0gewotICAgIHsyNSwgM30sCisgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8zWzFdID0gewotICAgIHsyNCwgNH0sCisgICAgezExMSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzRbMV0gPSB7Ci0gICAgezAsIDR9LAorICAgIHs5OCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180OFs1XSA9IHsKLSAgICB7MSwgYXJjc180OF8wfSwKK3N0YXRpYyBhcmMgYXJjc180OF81WzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180OFs2XSA9IHsKKyAgICB7MiwgYXJjc180OF8wfSwKICAgICB7MiwgYXJjc180OF8xfSwKICAgICB7MSwgYXJjc180OF8yfSwKICAgICB7MSwgYXJjc180OF8zfSwKICAgICB7MSwgYXJjc180OF80fSwKKyAgICB7MSwgYXJjc180OF81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8wWzJdID0gewogICAgIHsxMTEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV8xWzJdID0gewotICAgIHszMywgMn0sCi0gICAgezI1LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMlsxXSA9IHsKLSAgICB7MjUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV8zWzFdID0gewotICAgIHsxMDksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzVdID0gewotICAgIHsxLCBhcmNzXzQ5XzB9LAotICAgIHsyLCBhcmNzXzQ5XzF9LAotICAgIHsxLCBhcmNzXzQ5XzJ9LAotICAgIHsxLCBhcmNzXzQ5XzN9LAotICAgIHsxLCBhcmNzXzQ5XzR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF8wWzFdID0gewotICAgIHsxMTIsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF8xWzJdID0gewotICAgIHsxMTMsIDB9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzJdID0gewotICAgIHsxLCBhcmNzXzUwXzB9LAotICAgIHsyLCBhcmNzXzUwXzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MV8wWzFdID0gewogICAgIHsxMTQsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MV8xWzJdID0gewotICAgIHsxMTUsIDB9LAorc3RhdGljIGFyYyBhcmNzXzQ5XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTFbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzJdID0geworICAgIHsyLCBhcmNzXzQ5XzB9LAorICAgIHsxLCBhcmNzXzQ5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8wWzFdID0geworICAgIHsxMTUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8xWzJdID0geworICAgIHszNSwgMn0sCisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfMlsxXSA9IHsKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbNV0gPSB7CisgICAgezEsIGFyY3NfNTBfMH0sCisgICAgezIsIGFyY3NfNTBfMX0sCisgICAgezEsIGFyY3NfNTBfMn0sCisgICAgezEsIGFyY3NfNTBfM30sCisgICAgezEsIGFyY3NfNTBfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzBbMV0gPSB7CisgICAgezExNSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzFbMl0gPSB7CisgICAgezM1LCAyfSwKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MV8yWzFdID0geworICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzNbMV0gPSB7CisgICAgezExMywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTFbNV0gPSB7CiAgICAgezEsIGFyY3NfNTFfMH0sCiAgICAgezIsIGFyY3NfNTFfMX0sCisgICAgezEsIGFyY3NfNTFfMn0sCisgICAgezEsIGFyY3NfNTFfM30sCisgICAgezEsIGFyY3NfNTFfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUyXzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTJfMFsxXSA9IHsKICAgICB7MTE2LCAxfSwKLSAgICB7MTE3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTJfMVsxXSA9IHsKLSAgICB7MTE0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc181Ml8xWzJdID0geworICAgIHsxMTcsIDB9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTJfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181MlszXSA9IHsKLSAgICB7MiwgYXJjc181Ml8wfSwKLSAgICB7MSwgYXJjc181Ml8xfSwKLSAgICB7MSwgYXJjc181Ml8yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTJbMl0gPSB7CisgICAgezEsIGFyY3NfNTJfMH0sCisgICAgezIsIGFyY3NfNTJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzBbMV0gPSB7Ci0gICAgezEwMywgMX0sCisgICAgezExOCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzFbMl0gPSB7Ci0gICAgezExOCwgMH0sCisgICAgezExOSwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTNbMl0gPSB7CiAgICAgezEsIGFyY3NfNTNfMH0sCiAgICAgezIsIGFyY3NfNTNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzBbMTBdID0gewotICAgIHsxMTksIDF9LAorc3RhdGljIGFyYyBhcmNzXzU0XzBbMl0gPSB7CiAgICAgezEyMCwgMX0sCi0gICAgezEyMSwgMX0sCi0gICAgezEyMiwgMX0sCisgICAgezEyMSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU0XzFbMV0gPSB7CisgICAgezExOCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU0XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbM10gPSB7CisgICAgezIsIGFyY3NfNTRfMH0sCisgICAgezEsIGFyY3NfNTRfMX0sCisgICAgezEsIGFyY3NfNTRfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzBbMV0gPSB7CisgICAgezEwNywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzFbMl0gPSB7CisgICAgezEyMiwgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbMl0gPSB7CisgICAgezEsIGFyY3NfNTVfMH0sCisgICAgezIsIGFyY3NfNTVfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU2XzBbMTBdID0gewogICAgIHsxMjMsIDF9LAogICAgIHsxMjQsIDF9LAogICAgIHsxMjUsIDF9LAotICAgIHs5NywgMX0sCi0gICAgezExNiwgMn0sCi0gICAgezEyNiwgM30sCisgICAgezEyNiwgMX0sCisgICAgezEyNywgMX0sCisgICAgezEyOCwgMX0sCisgICAgezEyOSwgMX0sCisgICAgezEwMSwgMX0sCisgICAgezEyMCwgMn0sCisgICAgezEzMCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzFbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTZfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzJbMV0gPSB7Ci0gICAgezk3LCAxfSwKK3N0YXRpYyBhcmMgYXJjc181Nl8yWzFdID0geworICAgIHsxMDEsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8zWzJdID0gewotICAgIHsxMTYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU2XzNbMl0gPSB7CisgICAgezEyMCwgMX0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbNF0gPSB7Ci0gICAgezEwLCBhcmNzXzU0XzB9LAotICAgIHsxLCBhcmNzXzU0XzF9LAotICAgIHsxLCBhcmNzXzU0XzJ9LAotICAgIHsyLCBhcmNzXzU0XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8wWzFdID0gewotICAgIHszMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzFbMV0gPSB7Ci0gICAgezEwMywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbM10gPSB7Ci0gICAgezEsIGFyY3NfNTVfMH0sCi0gICAgezEsIGFyY3NfNTVfMX0sCi0gICAgezEsIGFyY3NfNTVfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzBbMV0gPSB7Ci0gICAgezEyNywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzFbMl0gPSB7Ci0gICAgezEyOCwgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTZfMH0sCi0gICAgezIsIGFyY3NfNTZfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzRdID0geworICAgIHsxMCwgYXJjc181Nl8wfSwKKyAgICB7MSwgYXJjc181Nl8xfSwKKyAgICB7MSwgYXJjc181Nl8yfSwKKyAgICB7MiwgYXJjc181Nl8zfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTdfMFsxXSA9IHsKLSAgICB7MTI5LCAxfSwKKyAgICB7MzMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181N18xWzJdID0gewotICAgIHsxMzAsIDB9LAotICAgIHswLCAxfSwKK3N0YXRpYyBhcmMgYXJjc181N18xWzFdID0geworICAgIHsxMDcsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181N1szXSA9IHsKICAgICB7MSwgYXJjc181N18wfSwKLSAgICB7MiwgYXJjc181N18xfSwKKyAgICB7MSwgYXJjc181N18xfSwKKyAgICB7MSwgYXJjc181N18yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNThfMFsxXSA9IHsKICAgICB7MTMxLCAxfSwKQEAgLTEyOTAsNzUyICsxMzAxLDc5MyBAQAogc3RhdGljIGFyYyBhcmNzXzU5XzBbMV0gPSB7CiAgICAgezEzMywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU5XzFbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTlfMVsyXSA9IHsKICAgICB7MTM0LCAwfSwKLSAgICB7MTM1LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181OVsyXSA9IHsKICAgICB7MSwgYXJjc181OV8wfSwKLSAgICB7MywgYXJjc181OV8xfSwKKyAgICB7MiwgYXJjc181OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMFsxXSA9IHsKLSAgICB7MTM2LCAxfSwKKyAgICB7MTM1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjBfMVszXSA9IHsKLSAgICB7MTM3LCAwfSwKLSAgICB7MTM4LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MF8xWzJdID0geworICAgIHsxMzYsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYwWzJdID0gewogICAgIHsxLCBhcmNzXzYwXzB9LAotICAgIHszLCBhcmNzXzYwXzF9LAorICAgIHsyLCBhcmNzXzYwXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MV8wWzFdID0gewotICAgIHsxMzksIDF9LAorICAgIHsxMzcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182MV8xWzVdID0gewotICAgIHszMSwgMH0sCi0gICAgezE0MCwgMH0sCi0gICAgezE0MSwgMH0sCi0gICAgezE0MiwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNjFfMVszXSA9IHsKKyAgICB7MTM4LCAwfSwKKyAgICB7MTM5LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MVsyXSA9IHsKICAgICB7MSwgYXJjc182MV8wfSwKLSAgICB7NSwgYXJjc182MV8xfSwKKyAgICB7MywgYXJjc182MV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjJfMFs0XSA9IHsKLSAgICB7MTM3LCAxfSwKLSAgICB7MTM4LCAxfSwKLSAgICB7MTQzLCAxfSwKLSAgICB7MTQ0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc182Ml8wWzFdID0geworICAgIHsxNDAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Ml8xWzFdID0gewotICAgIHsxMzksIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Ml8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzNdID0gewotICAgIHs0LCBhcmNzXzYyXzB9LAotICAgIHsxLCBhcmNzXzYyXzF9LAotICAgIHsxLCBhcmNzXzYyXzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182M18wWzFdID0gewotICAgIHsxNDUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182M18xWzNdID0gewotICAgIHsxNDYsIDF9LAotICAgIHszMiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjJfMVszXSA9IHsKKyAgICB7MTQxLCAwfSwKKyAgICB7MTQyLCAwfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzJbMV0gPSB7Ci0gICAgezEzOSwgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzJdID0geworICAgIHsxLCBhcmNzXzYyXzB9LAorICAgIHszLCBhcmNzXzYyXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182M18zWzFdID0gewotICAgIHswLCAzfSwKK3N0YXRpYyBhcmMgYXJjc182M18wWzFdID0geworICAgIHsxNDMsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbNF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjNfMVs2XSA9IHsKKyAgICB7MzMsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezE0NCwgMH0sCisgICAgezE0NSwgMH0sCisgICAgezE0NiwgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbMl0gPSB7CiAgICAgezEsIGFyY3NfNjNfMH0sCi0gICAgezMsIGFyY3NfNjNfMX0sCi0gICAgezEsIGFyY3NfNjNfMn0sCi0gICAgezEsIGFyY3NfNjNfM30sCisgICAgezYsIGFyY3NfNjNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzBbMTBdID0gewotICAgIHsxMywgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMFs0XSA9IHsKKyAgICB7MTQxLCAxfSwKKyAgICB7MTQyLCAxfSwKKyAgICB7MTQ3LCAxfSwKICAgICB7MTQ4LCAyfSwKLSAgICB7MTUwLCAzfSwKLSAgICB7MjEsIDR9LAotICAgIHsxNTMsIDR9LAotICAgIHsxNTQsIDV9LAotICAgIHs3OSwgNH0sCi0gICAgezE1NSwgNH0sCi0gICAgezE1NiwgNH0sCi0gICAgezE1NywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzFbM10gPSB7Ci0gICAgezQ3LCA2fSwKLSAgICB7MTQ3LCA2fSwKLSAgICB7MTUsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY0XzFbMV0gPSB7CisgICAgezE0MywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzJbMl0gPSB7Ci0gICAgezE0NywgN30sCi0gICAgezE0OSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzNbMl0gPSB7Ci0gICAgezE1MSwgOH0sCi0gICAgezE1MiwgNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzNdID0geworICAgIHs0LCBhcmNzXzY0XzB9LAorICAgIHsxLCBhcmNzXzY0XzF9LAorICAgIHsxLCBhcmNzXzY0XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF80WzFdID0gewotICAgIHswLCA0fSwKK3N0YXRpYyBhcmMgYXJjc182NV8wWzFdID0geworICAgIHsxNDksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF81WzJdID0gewotICAgIHsxNTQsIDV9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfNlsxXSA9IHsKLSAgICB7MTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NF83WzFdID0gewotICAgIHsxNDksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NF84WzFdID0gewotICAgIHsxNTIsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbOV0gPSB7Ci0gICAgezEwLCBhcmNzXzY0XzB9LAotICAgIHszLCBhcmNzXzY0XzF9LAotICAgIHsyLCBhcmNzXzY0XzJ9LAotICAgIHsyLCBhcmNzXzY0XzN9LAotICAgIHsxLCBhcmNzXzY0XzR9LAotICAgIHsyLCBhcmNzXzY0XzV9LAotICAgIHsxLCBhcmNzXzY0XzZ9LAotICAgIHsxLCBhcmNzXzY0Xzd9LAotICAgIHsxLCBhcmNzXzY0Xzh9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NV8wWzJdID0gewotICAgIHsyNCwgMX0sCi0gICAgezQ4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMVszXSA9IHsKLSAgICB7MTU4LCAyfSwKLSAgICB7MzAsIDN9LAorc3RhdGljIGFyYyBhcmNzXzY1XzFbMl0gPSB7CisgICAgezM0LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxNDMsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8zWzNdID0gewotICAgIHsyNCwgNH0sCi0gICAgezQ4LCA0fSwKK3N0YXRpYyBhcmMgYXJjc182NV8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfNFsyXSA9IHsKLSAgICB7MzAsIDN9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzVdID0gewotICAgIHsyLCBhcmNzXzY1XzB9LAotICAgIHszLCBhcmNzXzY1XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc182NVs0XSA9IHsKKyAgICB7MSwgYXJjc182NV8wfSwKKyAgICB7MiwgYXJjc182NV8xfSwKICAgICB7MSwgYXJjc182NV8yfSwKLSAgICB7MywgYXJjc182NV8zfSwKLSAgICB7MiwgYXJjc182NV80fSwKKyAgICB7MSwgYXJjc182NV8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8wWzJdID0geworICAgIHsxNTAsIDF9LAorICAgIHsxNTEsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182Nl8xWzFdID0geworICAgIHsxNTEsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182Nl8yWzJdID0geworICAgIHsxNTIsIDJ9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzNdID0geworICAgIHsyLCBhcmNzXzY2XzB9LAorICAgIHsxLCBhcmNzXzY2XzF9LAorICAgIHsyLCBhcmNzXzY2XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182N18wWzEwXSA9IHsKICAgICB7MTMsIDF9LAotICAgIHsxNDgsIDJ9LAotICAgIHs3OCwgM30sCisgICAgezE1NCwgMn0sCisgICAgezE1NiwgM30sCisgICAgezIzLCA0fSwKKyAgICB7MTU5LCA0fSwKKyAgICB7MTYwLCA1fSwKKyAgICB7ODIsIDR9LAorICAgIHsxNjEsIDR9LAorICAgIHsxNjIsIDR9LAorICAgIHsxNjMsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8xWzJdID0gewotICAgIHsxNCwgNH0sCi0gICAgezE1LCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMlsxXSA9IHsKLSAgICB7MTU5LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfM1sxXSA9IHsKLSAgICB7MjEsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl80WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzVbMV0gPSB7Ci0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl82WzFdID0gewotICAgIHsxNDksIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbN10gPSB7Ci0gICAgezMsIGFyY3NfNjZfMH0sCi0gICAgezIsIGFyY3NfNjZfMX0sCi0gICAgezEsIGFyY3NfNjZfMn0sCi0gICAgezEsIGFyY3NfNjZfM30sCi0gICAgezEsIGFyY3NfNjZfNH0sCi0gICAgezEsIGFyY3NfNjZfNX0sCi0gICAgezEsIGFyY3NfNjZfNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzBbMV0gPSB7Ci0gICAgezE2MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzFbMl0gPSB7Ci0gICAgezMwLCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjdfMVszXSA9IHsKKyAgICB7NDksIDZ9LAorICAgIHsxNTMsIDZ9LAorICAgIHsxNSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY3XzJbMl0gPSB7Ci0gICAgezE2MCwgMX0sCi0gICAgezAsIDJ9LAorICAgIHsxNTMsIDd9LAorICAgIHsxNTUsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbM10gPSB7Ci0gICAgezEsIGFyY3NfNjdfMH0sCi0gICAgezIsIGFyY3NfNjdfMX0sCitzdGF0aWMgYXJjIGFyY3NfNjdfM1syXSA9IHsKKyAgICB7MTU3LCA4fSwKKyAgICB7MTU4LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzVbMl0gPSB7CisgICAgezE2MCwgNX0sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182N182WzFdID0geworICAgIHsxNSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzdbMV0gPSB7CisgICAgezE1NSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzhbMV0gPSB7CisgICAgezE1OCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182N1s5XSA9IHsKKyAgICB7MTAsIGFyY3NfNjdfMH0sCisgICAgezMsIGFyY3NfNjdfMX0sCiAgICAgezIsIGFyY3NfNjdfMn0sCisgICAgezIsIGFyY3NfNjdfM30sCisgICAgezEsIGFyY3NfNjdfNH0sCisgICAgezIsIGFyY3NfNjdfNX0sCisgICAgezEsIGFyY3NfNjdfNn0sCisgICAgezEsIGFyY3NfNjdfN30sCisgICAgezEsIGFyY3NfNjdfOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY4XzBbMl0gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7MjUsIDJ9LAorICAgIHsyNiwgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMVsyXSA9IHsKLSAgICB7MjUsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzY4XzFbM10gPSB7CisgICAgezE2NCwgMn0sCisgICAgezMyLCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzJbM10gPSB7Ci0gICAgezI0LCAzfSwKLSAgICB7MTYxLCA0fSwKK3N0YXRpYyBhcmMgYXJjc182OF8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfM1syXSA9IHsKLSAgICB7MTYxLCA0fSwKK3N0YXRpYyBhcmMgYXJjc182OF8zWzNdID0geworICAgIHsyNiwgNH0sCisgICAgezUwLCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjhfNFsyXSA9IHsKKyAgICB7MzIsIDN9LAogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzVdID0gewogICAgIHsyLCBhcmNzXzY4XzB9LAotICAgIHsyLCBhcmNzXzY4XzF9LAotICAgIHszLCBhcmNzXzY4XzJ9LAotICAgIHsyLCBhcmNzXzY4XzN9LAotICAgIHsxLCBhcmNzXzY4XzR9LAorICAgIHszLCBhcmNzXzY4XzF9LAorICAgIHsxLCBhcmNzXzY4XzJ9LAorICAgIHszLCBhcmNzXzY4XzN9LAorICAgIHsyLCBhcmNzXzY4XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8wWzFdID0gewotICAgIHsyNSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjlfMFszXSA9IHsKKyAgICB7MTMsIDF9LAorICAgIHsxNTQsIDJ9LAorICAgIHs4MSwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY5XzFbMl0gPSB7Ci0gICAgezI0LCAyfSwKLSAgICB7MCwgMX0sCisgICAgezE0LCA0fSwKKyAgICB7MTUsIDV9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewotICAgIHswLCAyfSwKKyAgICB7MTY1LCA2fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzNdID0gewotICAgIHsxLCBhcmNzXzY5XzB9LAorc3RhdGljIGFyYyBhcmNzXzY5XzNbMV0gPSB7CisgICAgezIzLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfNFsxXSA9IHsKKyAgICB7MTUsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfNlsxXSA9IHsKKyAgICB7MTU1LCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzddID0geworICAgIHszLCBhcmNzXzY5XzB9LAogICAgIHsyLCBhcmNzXzY5XzF9LAogICAgIHsxLCBhcmNzXzY5XzJ9LAorICAgIHsxLCBhcmNzXzY5XzN9LAorICAgIHsxLCBhcmNzXzY5XzR9LAorICAgIHsxLCBhcmNzXzY5XzV9LAorICAgIHsxLCBhcmNzXzY5XzZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8wWzJdID0gewotICAgIHsxMDMsIDF9LAotICAgIHs0OCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzBfMFsxXSA9IHsKKyAgICB7MTY2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzBfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAorICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8yWzNdID0gewotICAgIHsxMDMsIDF9LAotICAgIHs0OCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzBfMlsyXSA9IHsKKyAgICB7MTY2LCAxfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183MFszXSA9IHsKLSAgICB7MiwgYXJjc183MF8wfSwKKyAgICB7MSwgYXJjc183MF8wfSwKICAgICB7MiwgYXJjc183MF8xfSwKLSAgICB7MywgYXJjc183MF8yfSwKKyAgICB7MiwgYXJjc183MF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMFsxXSA9IHsKLSAgICB7MjQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MjcsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183MV8xWzJdID0gewotICAgIHszMCwgMn0sCisgICAgezI3LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzJbMl0gPSB7Ci0gICAgezI0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8yWzNdID0geworICAgIHsyNiwgM30sCisgICAgezE2NywgNH0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbM10gPSB7Ci0gICAgezEsIGFyY3NfNzFfMH0sCitzdGF0aWMgYXJjIGFyY3NfNzFfM1syXSA9IHsKKyAgICB7MTY3LCA0fSwKKyAgICB7MCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzcxXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbNV0gPSB7CisgICAgezIsIGFyY3NfNzFfMH0sCiAgICAgezIsIGFyY3NfNzFfMX0sCi0gICAgezIsIGFyY3NfNzFfMn0sCisgICAgezMsIGFyY3NfNzFfMn0sCisgICAgezIsIGFyY3NfNzFfM30sCisgICAgezEsIGFyY3NfNzFfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzcyXzBbMV0gPSB7Ci0gICAgezI0LCAxfSwKKyAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xWzRdID0gewotICAgIHsyNSwgMn0sCi0gICAgezE1OCwgM30sCi0gICAgezMwLCA0fSwKK3N0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0geworICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183Ml8yWzFdID0gewotICAgIHsyNCwgNX0sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8zWzFdID0gewotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfNFsyXSA9IHsKLSAgICB7MjQsIDZ9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfNVszXSA9IHsKLSAgICB7MTU4LCAzfSwKLSAgICB7MzAsIDd9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfNlsyXSA9IHsKLSAgICB7MzAsIDR9LAotICAgIHswLCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfN1syXSA9IHsKLSAgICB7MjQsIDh9LAotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfOFsxXSA9IHsKLSAgICB7MjUsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml85WzFdID0gewotICAgIHsyNCwgMTB9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xMFsyXSA9IHsKLSAgICB7MzAsIDd9LAotICAgIHswLCAxMH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183MlsxMV0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzNdID0gewogICAgIHsxLCBhcmNzXzcyXzB9LAotICAgIHs0LCBhcmNzXzcyXzF9LAorICAgIHsyLCBhcmNzXzcyXzF9LAogICAgIHsxLCBhcmNzXzcyXzJ9LAotICAgIHsxLCBhcmNzXzcyXzN9LAotICAgIHsyLCBhcmNzXzcyXzR9LAotICAgIHszLCBhcmNzXzcyXzV9LAotICAgIHsyLCBhcmNzXzcyXzZ9LAotICAgIHsyLCBhcmNzXzcyXzd9LAotICAgIHsxLCBhcmNzXzcyXzh9LAotICAgIHsxLCBhcmNzXzcyXzl9LAotICAgIHsyLCBhcmNzXzcyXzEwfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMFsxXSA9IHsKLSAgICB7MTYyLCAxfSwKK3N0YXRpYyBhcmMgYXJjc183M18wWzJdID0geworICAgIHsxMDcsIDF9LAorICAgIHs1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzczXzFbMV0gPSB7Ci0gICAgezIxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMlsyXSA9IHsKLSAgICB7MTMsIDN9LAotICAgIHsyNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzNbMl0gPSB7Ci0gICAgezE0LCA1fSwKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M180WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzVbMV0gPSB7Ci0gICAgezE1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfNlsxXSA9IHsKLSAgICB7MjUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M183WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzczWzhdID0gewotICAgIHsxLCBhcmNzXzczXzB9LAotICAgIHsxLCBhcmNzXzczXzF9LAotICAgIHsyLCBhcmNzXzczXzJ9LAotICAgIHsyLCBhcmNzXzczXzN9LAotICAgIHsxLCBhcmNzXzczXzR9LAotICAgIHsxLCBhcmNzXzczXzV9LAotICAgIHsxLCBhcmNzXzczXzZ9LAotICAgIHsxLCBhcmNzXzczXzd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183NF8wWzNdID0gewotICAgIHsxNjMsIDF9LAotICAgIHszMSwgMn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMVsyXSA9IHsKLSAgICB7MzAsIDR9LAorc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7CisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzJbMV0gPSB7Ci0gICAgezI0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183M18yWzNdID0geworICAgIHsxMDcsIDF9LAorICAgIHs1MCwgMX0sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF8zWzFdID0gewotICAgIHsyNCwgNn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzczWzNdID0geworICAgIHsyLCBhcmNzXzczXzB9LAorICAgIHsyLCBhcmNzXzczXzF9LAorICAgIHszLCBhcmNzXzczXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF80WzRdID0gewotICAgIHsxNjMsIDF9LAotICAgIHszMSwgMn0sCi0gICAgezMyLCAzfSwKLSAgICB7MCwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF81WzJdID0gewotICAgIHszMCwgN30sCi0gICAgezAsIDV9LAorc3RhdGljIGFyYyBhcmNzXzc0XzFbMl0gPSB7CisgICAgezMyLCAyfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzZbMV0gPSB7Ci0gICAgezAsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzc0XzJbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzdbMl0gPSB7Ci0gICAgezE2MywgNX0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc0WzhdID0gewotICAgIHszLCBhcmNzXzc0XzB9LAorc3RhdGljIHN0YXRlIHN0YXRlc183NFszXSA9IHsKKyAgICB7MSwgYXJjc183NF8wfSwKICAgICB7MiwgYXJjc183NF8xfSwKLSAgICB7MSwgYXJjc183NF8yfSwKLSAgICB7MSwgYXJjc183NF8zfSwKLSAgICB7NCwgYXJjc183NF80fSwKLSAgICB7MiwgYXJjc183NF81fSwKLSAgICB7MSwgYXJjc183NF82fSwKLSAgICB7MiwgYXJjc183NF83fSwKKyAgICB7MiwgYXJjc183NF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMFsxXSA9IHsKLSAgICB7MjQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc1XzBbM10gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MzQsIDJ9LAorICAgIHs1MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzFbM10gPSB7Ci0gICAgezE1OCwgMn0sCi0gICAgezI5LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183NV8xWzRdID0geworICAgIHsyNywgNH0sCisgICAgezE2NCwgNX0sCisgICAgezMyLCA2fSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc1XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxMDcsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8zWzFdID0gewotICAgIHsyNCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183NVs0XSA9IHsKLSAgICB7MSwgYXJjc183NV8wfSwKLSAgICB7MywgYXJjc183NV8xfSwKLSAgICB7MSwgYXJjc183NV8yfSwKLSAgICB7MSwgYXJjc183NV8zfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMFsyXSA9IHsKLSAgICB7MTU4LCAxfSwKLSAgICB7MTY1LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183NlsyXSA9IHsKLSAgICB7MiwgYXJjc183Nl8wfSwKLSAgICB7MSwgYXJjc183Nl8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMFsxXSA9IHsKLSAgICB7OTYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N18xWzFdID0gewotICAgIHs2MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc3XzJbMV0gPSB7Ci0gICAgezk3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfM1sxXSA9IHsKLSAgICB7MTA3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfNFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183NV8zWzNdID0gewogICAgIHsxNjQsIDV9LAotICAgIHswLCA0fSwKKyAgICB7MzIsIDZ9LAorICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183NV80WzFdID0geworICAgIHsyNiwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzVbMV0gPSB7CiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbNl0gPSB7Ci0gICAgezEsIGFyY3NfNzdfMH0sCi0gICAgezEsIGFyY3NfNzdfMX0sCi0gICAgezEsIGFyY3NfNzdfMn0sCi0gICAgezEsIGFyY3NfNzdfM30sCi0gICAgezIsIGFyY3NfNzdfNH0sCi0gICAgezEsIGFyY3NfNzdfNX0sCitzdGF0aWMgYXJjIGFyY3NfNzVfNlszXSA9IHsKKyAgICB7MjYsIDh9LAorICAgIHs1MCwgOH0sCisgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8wWzFdID0gewotICAgIHs5MiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzVfN1szXSA9IHsKKyAgICB7MTY0LCA1fSwKKyAgICB7MzIsIDl9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMVsxXSA9IHsKLSAgICB7MTA5LCAyfSwKK3N0YXRpYyBhcmMgYXJjc183NV84WzJdID0geworICAgIHszMiwgNn0sCisgICAgezAsIDh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8yWzJdID0gewotICAgIHsxNjQsIDN9LAorc3RhdGljIGFyYyBhcmNzXzc1XzlbM10gPSB7CisgICAgezI2LCAxMH0sCisgICAgezM0LCAxMX0sCisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xMFsxXSA9IHsKKyAgICB7MjcsIDEyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMTFbMV0gPSB7CisgICAgezEwNywgMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xMlsxXSA9IHsKKyAgICB7MjYsIDEzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMTNbMl0gPSB7CisgICAgezMyLCA5fSwKKyAgICB7MCwgMTN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbMTRdID0geworICAgIHszLCBhcmNzXzc1XzB9LAorICAgIHs0LCBhcmNzXzc1XzF9LAorICAgIHsxLCBhcmNzXzc1XzJ9LAorICAgIHszLCBhcmNzXzc1XzN9LAorICAgIHsxLCBhcmNzXzc1XzR9LAorICAgIHsxLCBhcmNzXzc1XzV9LAorICAgIHszLCBhcmNzXzc1XzZ9LAorICAgIHszLCBhcmNzXzc1Xzd9LAorICAgIHsyLCBhcmNzXzc1Xzh9LAorICAgIHszLCBhcmNzXzc1Xzl9LAorICAgIHsxLCBhcmNzXzc1XzEwfSwKKyAgICB7MSwgYXJjc183NV8xMX0sCisgICAgezEsIGFyY3NfNzVfMTJ9LAorICAgIHsyLCBhcmNzXzc1XzEzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfMFsxXSA9IHsKKyAgICB7MTY4LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKKyAgICB7MjMsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8yWzJdID0geworICAgIHsxMywgM30sCisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfM1syXSA9IHsKKyAgICB7MTQsIDV9LAorICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl82WzFdID0geworICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbOF0gPSB7CisgICAgezEsIGFyY3NfNzZfMH0sCisgICAgezEsIGFyY3NfNzZfMX0sCisgICAgezIsIGFyY3NfNzZfMn0sCisgICAgezIsIGFyY3NfNzZfM30sCisgICAgezEsIGFyY3NfNzZfNH0sCisgICAgezEsIGFyY3NfNzZfNX0sCisgICAgezEsIGFyY3NfNzZfNn0sCisgICAgezEsIGFyY3NfNzZfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzBbMV0gPSB7CisgICAgezE2OSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzFbMl0gPSB7CisgICAgezMyLCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7CisgICAgezE2OSwgMX0sCiAgICAgezAsIDJ9LAogfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbM10gPSB7CisgICAgezEsIGFyY3NfNzdfMH0sCisgICAgezIsIGFyY3NfNzdfMX0sCisgICAgezIsIGFyY3NfNzdfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzBbM10gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MzQsIDJ9LAorICAgIHszMywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzFbM10gPSB7CisgICAgezE2NCwgM30sCisgICAgezMxLCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzJbMV0gPSB7CisgICAgezI2LCAzfSwKK307CiBzdGF0aWMgYXJjIGFyY3NfNzhfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183OFs0XSA9IHsKLSAgICB7MSwgYXJjc183OF8wfSwKLSAgICB7MSwgYXJjc183OF8xfSwKLSAgICB7MiwgYXJjc183OF8yfSwKKyAgICB7MywgYXJjc183OF8wfSwKKyAgICB7MywgYXJjc183OF8xfSwKKyAgICB7MSwgYXJjc183OF8yfSwKICAgICB7MSwgYXJjc183OF8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc5XzBbMl0gPSB7CisgICAgezE2NCwgMX0sCisgICAgezE3MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc5XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzlbMl0gPSB7Ci0gICAgezEsIGFyY3NfNzlfMH0sCisgICAgezIsIGFyY3NfNzlfMH0sCiAgICAgezEsIGFyY3NfNzlfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzBbMV0gPSB7Ci0gICAgezE2NywgMX0sCisgICAgezEwMCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgwXzFbMl0gPSB7Ci0gICAgezE2OCwgMn0sCi0gICAgezAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzgwXzFbMV0gPSB7CisgICAgezY1LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezEwMSwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184MF8zWzFdID0geworICAgIHsxMTEsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MF80WzJdID0geworICAgIHsxNzAsIDV9LAorICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODBfNVsxXSA9IHsKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MFs2XSA9IHsKICAgICB7MSwgYXJjc184MF8wfSwKLSAgICB7MiwgYXJjc184MF8xfSwKKyAgICB7MSwgYXJjc184MF8xfSwKICAgICB7MSwgYXJjc184MF8yfSwKKyAgICB7MSwgYXJjc184MF8zfSwKKyAgICB7MiwgYXJjc184MF80fSwKKyAgICB7MSwgYXJjc184MF81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKLSAgICB7NzMsIDF9LAotICAgIHs5LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzFdID0geworICAgIHs5NiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKKyAgICB7MTEzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184MV8yWzJdID0geworICAgIHsxNzAsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzNdID0gewotICAgIHsyLCBhcmNzXzgxXzB9LAotICAgIHsxLCBhcmNzXzgxXzF9LAotICAgIHsxLCBhcmNzXzgxXzJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzNbMV0gPSB7CisgICAgezAsIDN9LAogfTsKLXN0YXRpYyBkZmEgZGZhc1s4Ml0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzRdID0geworICAgIHsxLCBhcmNzXzgxXzB9LAorICAgIHsxLCBhcmNzXzgxXzF9LAorICAgIHsyLCBhcmNzXzgxXzJ9LAorICAgIHsxLCBhcmNzXzgxXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184Ml8wWzFdID0geworICAgIHsyMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgyXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbMl0gPSB7CisgICAgezEsIGFyY3NfODJfMH0sCisgICAgezEsIGFyY3NfODJfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7CisgICAgezE3MywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzFbMl0gPSB7CisgICAgezE3NCwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzNdID0geworICAgIHsxLCBhcmNzXzgzXzB9LAorICAgIHsyLCBhcmNzXzgzXzF9LAorICAgIHsxLCBhcmNzXzgzXzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NF8wWzJdID0geworICAgIHs3NiwgMX0sCisgICAgezksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NF8xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg0XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODRbM10gPSB7CisgICAgezIsIGFyY3NfODRfMH0sCisgICAgezEsIGFyY3NfODRfMX0sCisgICAgezEsIGFyY3NfODRfMn0sCit9Oworc3RhdGljIGRmYSBkZmFzWzg1XSA9IHsKICAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCi0gICAgICJcMDA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgICJcMDA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCiAgICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKLSAgICAgIlwyMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICAgIlwyMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKICAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAogICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKICAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKICAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYyLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc182LAotICAgICAiXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjMsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzcsCisgICAgezI2MiwgImFzeW5jX2Z1bmNkZWYiLCAwLCAzLCBzdGF0ZXNfNiwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYzLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc183LAorICAgICAiXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjQsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzgsCiAgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NSwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc185LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjYsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTAsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY4LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMiwKLSAgICAgIlwwMDBcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKLSAgICB7MjY5LCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCi0gICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCi0gICAgezI3MSwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MjcyLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE2LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NCwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKLSAgICB7Mjc3LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc4LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MCwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCi0gICAgezI4MSwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjUsCisgICAgezI2NSwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzksCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NiwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc18xMCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzExLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjgsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OSwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTMsCisgICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgezI3MCwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzE0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgIHsyNzEsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgIHsyNzIsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezI3MywgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7Mjc0LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3MFwzNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzUsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc2LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzcsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCisgICAgezI3OCwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCiAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODMsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjgsCisgICAgezI3OSwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCiAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAorICAgIHsyODAsICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgxLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKKyAgICB7MjgyLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgzLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMxLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODgsICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OSwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTIsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk0LCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zOCwKKyAgICAgIlwwMDBcMDEwXDE0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMzFcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKKyAgICB7Mjk1LCAiYXN5bmNfc3RtdCIsIDAsIDMsIHN0YXRlc18zOSwKICAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMyLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MSwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAotICAgIHsyOTQsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzM4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCisgICAgezI5NiwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDAsCiAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NywgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwMCwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAotICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAotICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDMsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwNiwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzA5LCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTIsICJleHByIiwgMCwgMiwgc3RhdGVzXzU2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxNSwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxOCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyMSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjUsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyNCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc182OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyNywgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAotICAgIHszMzAsICJhcmdsaXN0IiwgMCwgOCwgc3RhdGVzXzc0LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzMsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc183NywKKyAgICB7Mjk3LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAxLCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQ1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMDIsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDMsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NywKKyAgICAgIlwwMDRcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKKyAgICB7MzA0LCAidGVzdCIsIDAsIDYsIHN0YXRlc180OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzA1LCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMwNiwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNywgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDgsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMDksICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzEwLCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxMSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxMiwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMzcxXDAwN1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxMywgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzE0LCAiZXhwciIsIDAsIDIsIHN0YXRlc181OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzE1LCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxNiwgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTcsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzYxLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTgsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTksICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzYzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMjAsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzY1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMjIsICJhdG9tX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMywgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyNCwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyNSwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjksCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwIn0sCisgICAgezMyNiwgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyNywgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc183MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI4LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzI5LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzMCwgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMzEsICJkaWN0b3JzZXRtYWtlciIsIDAsIDE0LCBzdGF0ZXNfNzUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzMiwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAorICAgIHszMzMsICJhcmdsaXN0IiwgMCwgMywgc3RhdGVzXzc3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMzQsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzM1LCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzYsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM3LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc184MSwKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM2LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKLSAgICB7MzM3LCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzgxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMlwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzgsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzgyLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzksICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAorICAgIHszNDAsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCiB9Owotc3RhdGljIGxhYmVsIGxhYmVsc1sxNjldID0geworc3RhdGljIGxhYmVsIGxhYmVsc1sxNzVdID0gewogICAgIHswLCAiRU1QVFkifSwKICAgICB7MjU2LCAwfSwKICAgICB7NCwgMH0sCi0gICAgezI2OSwgMH0sCi0gICAgezI5MywgMH0sCisgICAgezI3MCwgMH0sCisgICAgezI5NCwgMH0sCiAgICAgezI1NywgMH0sCi0gICAgezI2OCwgMH0sCisgICAgezI2OSwgMH0sCiAgICAgezAsIDB9LAogICAgIHsyNTgsIDB9LAotICAgIHszMjcsIDB9LAorICAgIHszMzAsIDB9LAogICAgIHsyNTksIDB9LAogICAgIHs0OSwgMH0sCi0gICAgezI4OSwgMH0sCisgICAgezI5MCwgMH0sCiAgICAgezcsIDB9LAotICAgIHszMzAsIDB9LAorICAgIHszMzMsIDB9LAogICAgIHs4LCAwfSwKICAgICB7MjYwLCAwfSwKICAgICB7MjYxLCAwfSwKLSAgICB7MzI5LCAwfSwKKyAgICB7MzMyLCAwfSwKKyAgICB7MjYzLCAwfSwKICAgICB7MjYyLCAwfSwKKyAgICB7NTUsIDB9LAogICAgIHsxLCAiZGVmIn0sCiAgICAgezEsIDB9LAotICAgIHsyNjMsIDB9LAotICAgIHs1MCwgMH0sCi0gICAgezMwMiwgMH0sCi0gICAgezExLCAwfSwKLSAgICB7MzAxLCAwfSwKICAgICB7MjY0LCAwfSwKKyAgICB7NTEsIDB9LAorICAgIHszMDQsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezMwMywgMH0sCiAgICAgezI2NSwgMH0sCisgICAgezI2NiwgMH0sCiAgICAgezIyLCAwfSwKICAgICB7MTIsIDB9LAogICAgIHsxNiwgMH0sCiAgICAgezM1LCAwfSwKLSAgICB7MjY2LCAwfSwKICAgICB7MjY3LCAwfSwKLSAgICB7MjcwLCAwfSwKLSAgICB7MTMsIDB9LAorICAgIHsyNjgsIDB9LAogICAgIHsyNzEsIDB9LAotICAgIHsyNzQsIDB9LAorICAgIHsxMywgMH0sCisgICAgezI3MiwgMH0sCiAgICAgezI3NSwgMH0sCiAgICAgezI3NiwgMH0sCi0gICAgezI4MiwgMH0sCi0gICAgezI5MCwgMH0sCisgICAgezI3NywgMH0sCisgICAgezI4MywgMH0sCiAgICAgezI5MSwgMH0sCiAgICAgezI5MiwgMH0sCi0gICAgezI3MiwgMH0sCisgICAgezI5MywgMH0sCiAgICAgezI3MywgMH0sCi0gICAgezMzNiwgMH0sCi0gICAgezMxMSwgMH0sCisgICAgezI3NCwgMH0sCisgICAgezMzOSwgMH0sCisgICAgezMxMywgMH0sCiAgICAgezM2LCAwfSwKICAgICB7MzcsIDB9LAogICAgIHszOCwgMH0sCisgICAgezUwLCAwfSwKICAgICB7MzksIDB9LAogICAgIHs0MCwgMH0sCiAgICAgezQxLCAwfSwKQEAgLTIwNDYsMzYgKzIwOTgsMzcgQEAKICAgICB7NDYsIDB9LAogICAgIHs0OCwgMH0sCiAgICAgezEsICJkZWwifSwKLSAgICB7MzI2LCAwfSwKKyAgICB7MzI5LCAwfSwKICAgICB7MSwgInBhc3MifSwKLSAgICB7Mjc3LCAwfSwKICAgICB7Mjc4LCAwfSwKICAgICB7Mjc5LCAwfSwKLSAgICB7MjgxLCAwfSwKICAgICB7MjgwLCAwfSwKKyAgICB7MjgyLCAwfSwKKyAgICB7MjgxLCAwfSwKICAgICB7MSwgImJyZWFrIn0sCiAgICAgezEsICJjb250aW51ZSJ9LAogICAgIHsxLCAicmV0dXJuIn0sCiAgICAgezEsICJyYWlzZSJ9LAogICAgIHsxLCAiZnJvbSJ9LAotICAgIHsyODMsIDB9LAogICAgIHsyODQsIDB9LAotICAgIHsxLCAiaW1wb3J0In0sCi0gICAgezI4OCwgMH0sCi0gICAgezIzLCAwfSwKLSAgICB7NTEsIDB9LAotICAgIHsyODcsIDB9LAogICAgIHsyODUsIDB9LAotICAgIHsxLCAiYXMifSwKKyAgICB7MSwgImltcG9ydCJ9LAorICAgIHsyODksIDB9LAorICAgIHsyMywgMH0sCisgICAgezUyLCAwfSwKKyAgICB7Mjg4LCAwfSwKICAgICB7Mjg2LCAwfSwKKyAgICB7MSwgImFzIn0sCisgICAgezI4NywgMH0sCiAgICAgezEsICJnbG9iYWwifSwKICAgICB7MSwgIm5vbmxvY2FsIn0sCiAgICAgezEsICJhc3NlcnQifSwKLSAgICB7Mjk0LCAwfSwKLSAgICB7Mjk1LCAwfSwKICAgICB7Mjk2LCAwfSwKICAgICB7Mjk3LCAwfSwKICAgICB7Mjk4LCAwfSwKKyAgICB7Mjk5LCAwfSwKKyAgICB7MzAwLCAwfSwKKyAgICB7Mjk1LCAwfSwKICAgICB7MSwgImlmIn0sCiAgICAgezEsICJlbGlmIn0sCiAgICAgezEsICJlbHNlIn0sCkBAIC0yMDgzLDI2ICsyMTM2LDI2IEBACiAgICAgezEsICJmb3IifSwKICAgICB7MSwgImluIn0sCiAgICAgezEsICJ0cnkifSwKLSAgICB7MzAwLCAwfSwKKyAgICB7MzAyLCAwfSwKICAgICB7MSwgImZpbmFsbHkifSwKICAgICB7MSwgIndpdGgifSwKLSAgICB7Mjk5LCAwfSwKLSAgICB7MzEyLCAwfSwKKyAgICB7MzAxLCAwfSwKKyAgICB7MzE0LCAwfSwKICAgICB7MSwgImV4Y2VwdCJ9LAogICAgIHs1LCAwfSwKICAgICB7NiwgMH0sCi0gICAgezMwNiwgMH0sCi0gICAgezMwNCwgMH0sCi0gICAgezMwMywgMH0sCi0gICAgezMwNSwgMH0sCi0gICAgezEsICJsYW1iZGEifSwKLSAgICB7MzA3LCAwfSwKLSAgICB7MSwgIm9yIn0sCiAgICAgezMwOCwgMH0sCisgICAgezMwNiwgMH0sCisgICAgezMwNSwgMH0sCisgICAgezMwNywgMH0sCisgICAgezEsICJsYW1iZGEifSwKKyAgICB7MzA5LCAwfSwKKyAgICB7MSwgIm9yIn0sCisgICAgezMxMCwgMH0sCiAgICAgezEsICJhbmQifSwKICAgICB7MSwgIm5vdCJ9LAotICAgIHszMDksIDB9LAotICAgIHszMTAsIDB9LAorICAgIHszMTEsIDB9LAorICAgIHszMTIsIDB9LAogICAgIHsyMCwgMH0sCiAgICAgezIxLCAwfSwKICAgICB7MjcsIDB9LApAQCAtMjExMSw1MiArMjE2NCw1NCBAQAogICAgIHsyOCwgMH0sCiAgICAgezI4LCAwfSwKICAgICB7MSwgImlzIn0sCi0gICAgezMxMywgMH0sCi0gICAgezE4LCAwfSwKLSAgICB7MzE0LCAwfSwKLSAgICB7MzIsIDB9LAogICAgIHszMTUsIDB9LAotICAgIHsxOSwgMH0sCisgICAgezE4LCAwfSwKICAgICB7MzE2LCAwfSwKKyAgICB7MzIsIDB9LAorICAgIHszMTcsIDB9LAorICAgIHsxOSwgMH0sCisgICAgezMxOCwgMH0sCiAgICAgezMzLCAwfSwKICAgICB7MzQsIDB9LAotICAgIHszMTcsIDB9LAorICAgIHszMTksIDB9LAogICAgIHsxNCwgMH0sCiAgICAgezE1LCAwfSwKLSAgICB7MzE4LCAwfSwKKyAgICB7MzIwLCAwfSwKICAgICB7MTcsIDB9LAogICAgIHsyNCwgMH0sCiAgICAgezQ3LCAwfSwKICAgICB7MzEsIDB9LAotICAgIHszMTksIDB9LAotICAgIHszMjAsIDB9LAotICAgIHszMjIsIDB9LAogICAgIHszMjEsIDB9LAorICAgIHszMjIsIDB9LAorICAgIHs1NCwgMH0sCisgICAgezMyMywgMH0sCisgICAgezMyNSwgMH0sCisgICAgezMyNCwgMH0sCiAgICAgezksIDB9LAogICAgIHsxMCwgMH0sCiAgICAgezI1LCAwfSwKLSAgICB7MzI4LCAwfSwKKyAgICB7MzMxLCAwfSwKICAgICB7MjYsIDB9LAogICAgIHsyLCAwfSwKICAgICB7MywgMH0sCiAgICAgezEsICJOb25lIn0sCiAgICAgezEsICJUcnVlIn0sCiAgICAgezEsICJGYWxzZSJ9LAotICAgIHszMzMsIDB9LAotICAgIHszMjMsIDB9LAotICAgIHszMjQsIDB9LAotICAgIHszMjUsIDB9LAorICAgIHszMzYsIDB9LAorICAgIHszMjYsIDB9LAorICAgIHszMjcsIDB9LAorICAgIHszMjgsIDB9LAogICAgIHsxLCAiY2xhc3MifSwKLSAgICB7MzMxLCAwfSwKLSAgICB7MzMyLCAwfSwKICAgICB7MzM0LCAwfSwKICAgICB7MzM1LCAwfSwKLSAgICB7MSwgInlpZWxkIn0sCiAgICAgezMzNywgMH0sCisgICAgezMzOCwgMH0sCisgICAgezEsICJ5aWVsZCJ9LAorICAgIHszNDAsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODIsCisgICAgODUsCiAgICAgZGZhcywKLSAgICB7MTY5LCBsYWJlbHN9LAorICAgIHsxNzUsIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IDRmMDc2NWEuLmVkZjAzMGQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTM2LDYgKzM2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTljMzMyNDc1ZDg2ODYyODRdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9pbXBvcnQuYy5oIgorCiAvKltweXRob24gaW5wdXRdCiBjbGFzcyBmc191bmljb2RlX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5T2JqZWN0IConCkBAIC0yMzksMjkgKzI0MSw5IEBACiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2xvY2tfaGVsZF9fZG9jX18sCi0ibG9ja19oZWxkKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gVHJ1ZSBpZiB0aGUgaW1wb3J0IGxvY2sgaXMgY3VycmVudGx5IGhlbGQsIGVsc2UgRmFsc2UuXG4iCi0iXG4iCi0iT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgcmV0dXJuIEZhbHNlLiIpOwotCi0jZGVmaW5lIF9JTVBfTE9DS19IRUxEX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2NrX2hlbGQiLCAoUHlDRnVuY3Rpb24pX2ltcF9sb2NrX2hlbGQsIE1FVEhfTk9BUkdTLCBfaW1wX2xvY2tfaGVsZF9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2NrX2hlbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfbG9ja19oZWxkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfbG9ja19oZWxkX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfbG9ja19oZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWU2NTY3NDk2NmJhYTY1IGlucHV0PTliMDg4ZjliMjE3ZDliZGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kN2E4Y2MzYTUxNjkwODFhIGlucHV0PTliMDg4ZjliMjE3ZDliZGZdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoaW1wb3J0X2xvY2tfdGhyZWFkICE9IC0xKTsKQEAgLTI3OSwzMCArMjYxLDkgQEAKIG1vZHVsZXMuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9hY3F1aXJlX2xvY2tfX2RvY19fLAotImFjcXVpcmVfbG9jaygkbW9kdWxlLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iQWNxdWlyZXMgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuXG4iCi0iXG4iCi0iVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZ1xuIgotIm1vZHVsZXMuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwotCi0jZGVmaW5lIF9JTVBfQUNRVUlSRV9MT0NLX01FVEhPRERFRiAgICBcCi0gICAgeyJhY3F1aXJlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9hY3F1aXJlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX2FjcXVpcmVfbG9ja19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfYWNxdWlyZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfYWNxdWlyZV9sb2NrX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfYWNxdWlyZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzhmMWZhMDg5ZmRiOWE0IGlucHV0PTRhMmQ0MzgxODY2ZDVmZGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYzE0M2IxZDE2NDIyY2FlIGlucHV0PTRhMmQ0MzgxODY2ZDVmZGNdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwpAQCAtMzE5LDI5ICsyODAsOSBAQAogT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX3JlbGVhc2VfbG9ja19fZG9jX18sCi0icmVsZWFzZV9sb2NrKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZWxlYXNlIHRoZSBpbnRlcnByZXRlclwncyBpbXBvcnQgbG9jay5cbiIKLSJcbiIKLSJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKLQotI2RlZmluZSBfSU1QX1JFTEVBU0VfTE9DS19NRVRIT0RERUYgICAgXAotICAgIHsicmVsZWFzZV9sb2NrIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfcmVsZWFzZV9sb2NrLCBNRVRIX05PQVJHUywgX2ltcF9yZWxlYXNlX2xvY2tfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfcmVsZWFzZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX3JlbGVhc2VfbG9jayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQotewotICAgIHJldHVybiBfaW1wX3JlbGVhc2VfbG9ja19pbXBsKG1vZHVsZSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX3JlbGVhc2VfbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZjNzdhNjgzMmZkYWZkNCBpbnB1dD05MzRmYjExNTE2ZGQ3NzhiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzRkMjhlMzhlYmUyYjIyNCBpbnB1dD05MzRmYjExNTE2ZGQ3NzhiXSovCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CkBAIC01NTAsOCArNDkxLDEzIEBACiB7CiAgICAgbG9uZyByZXM7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgUHlPYmplY3QgKnB5Y19tYWdpYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9SQVdfTUFHSUNfTlVNQkVSIik7CisgICAgUHlPYmplY3QgKmV4dGVybmFsLCAqcHljX21hZ2ljOworCisgICAgZXh0ZXJuYWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCAiX2Jvb3RzdHJhcF9leHRlcm5hbCIpOworICAgIGlmIChleHRlcm5hbCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcHljX21hZ2ljID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhleHRlcm5hbCwgIl9SQVdfTUFHSUNfTlVNQkVSIik7CisgICAgUHlfREVDUkVGKGV4dGVybmFsKTsKICAgICBpZiAocHljX21hZ2ljID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXMgPSBQeUxvbmdfQXNMb25nKHB5Y19tYWdpYyk7CkBAIC03OTYsNyArNzQyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjcGF0aG5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm0gPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcGF0aG9iaiA9IE5VTEwsICpjcGF0aG9iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICpwYXRob2JqID0gTlVMTCwgKmNwYXRob2JqID0gTlVMTCwgKmV4dGVybmFsPSBOVUxMOwogCiAgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpCkBAIC04MjQsOSArNzcwLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBpbnRlcnByZXRlciEiKTsKICAgICAgICAgfQogCi0gICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19nZXRfc291cmNlZmlsZSwgY3BhdGhvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgZXh0ZXJuYWw9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfYm9vdHN0cmFwX2V4dGVybmFsIik7CisgICAgICAgIGlmIChleHRlcm5hbCAhPSBOVUxMKSB7CisgICAgICAgICAgICBwYXRob2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoZXh0ZXJuYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihleHRlcm5hbCk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQpAQCAtODkyLDcgKzg0Myw3IEBACiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmNvLCBQeU9iamVjdCAqcGF0aG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY3BhdGhuYW1lKQogewotICAgIFB5T2JqZWN0ICpkLCAqcmVzOworICAgIFB5T2JqZWN0ICpkLCAqZXh0ZXJuYWwsICpyZXM7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgX1B5X0lERU5USUZJRVIoX2ZpeF91cF9tb2R1bGUpOwogCkBAIC05MDQsOSArODU1LDEzIEBACiAgICAgaWYgKHBhdGhuYW1lID09IE5VTEwpIHsKICAgICAgICAgcGF0aG5hbWUgPSAoKFB5Q29kZU9iamVjdCAqKWNvKS0+Y29fZmlsZW5hbWU7CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgIGV4dGVybmFsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwgIl9ib290c3RyYXBfZXh0ZXJuYWwiKTsKKyAgICBpZiAoZXh0ZXJuYWwgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoZXh0ZXJuYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2ZpeF91cF9tb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgbmFtZSwgcGF0aG5hbWUsIGNwYXRobmFtZSwgTlVMTCk7CisgICAgUHlfREVDUkVGKGV4dGVybmFsKTsKICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJlcyA9IGV4ZWNfY29kZV9pbl9tb2R1bGUobmFtZSwgZCwgY28pOwpAQCAtOTY2LDQzICs5MjEsMTAgQEAKIENoYW5nZXMgY29kZS5jb19maWxlbmFtZSB0byBzcGVjaWZ5IHRoZSBwYXNzZWQtaW4gZmlsZSBwYXRoLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9fZml4X2NvX2ZpbGVuYW1lX19kb2NfXywKLSJfZml4X2NvX2ZpbGVuYW1lKCRtb2R1bGUsIGNvZGUsIHBhdGgsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDaGFuZ2VzIGNvZGUuY29fZmlsZW5hbWUgdG8gc3BlY2lmeSB0aGUgcGFzc2VkLWluIGZpbGUgcGF0aC5cbiIKLSJcbiIKLSIgIGNvZGVcbiIKLSIgICAgQ29kZSBvYmplY3QgdG8gY2hhbmdlLlxuIgotIiAgcGF0aFxuIgotIiAgICBGaWxlIHBhdGggdG8gdXNlLiIpOwotCi0jZGVmaW5lIF9JTVBfX0ZJWF9DT19GSUxFTkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsiX2ZpeF9jb19maWxlbmFtZSIsIChQeUNGdW5jdGlvbilfaW1wX19maXhfY29fZmlsZW5hbWUsIE1FVEhfVkFSQVJHUywgX2ltcF9fZml4X2NvX2ZpbGVuYW1lX19kb2NfX30sCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1faW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeUNvZGVPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpwYXRoKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfX2ZpeF9jb19maWxlbmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeUNvZGVPYmplY3QgKmNvZGU7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8hVTpfZml4X2NvX2ZpbGVuYW1lIiwKLSAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwobW9kdWxlLCBjb2RlLCBwYXRoKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlDb2RlT2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqcGF0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YjRiMWVkZWIwZDU1YzVkIGlucHV0PTg5NWJhNTBlNzhiODJmMDVdKi8KK19pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5Q29kZU9iamVjdCAqY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0ZGI1NmFhYzBhMTMyN2YgaW5wdXQ9ODk1YmE1MGU3OGI4MmYwNV0qLwogCiB7CiAgICAgdXBkYXRlX2NvbXBpbGVkX21vZHVsZShjb2RlLCBwYXRoKTsKQEAgLTExMDQsNTAgKzEwMjYsNzQgQEAKICAgICByZXR1cm4gaW1wb3J0ZXI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pbXAuY3JlYXRlX2J1aWx0aW4KIAotc3RhdGljIGludCBpbml0X2J1aWx0aW4oUHlPYmplY3QgKik7IC8qIEZvcndhcmQgKi8KKyAgICBzcGVjOiBvYmplY3QKKyAgICAvCiAKLS8qIEluaXRpYWxpemUgYSBidWlsdC1pbiBtb2R1bGUuCi0gICBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIC0xIHdpdGgKLSAgIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gKi8KK0NyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1zdGF0aWMgaW50Ci1pbml0X2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9jcmVhdGVfYnVpbHRpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3BlYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MDM4ZjQ2NzYxNzIyNmJkIGlucHV0PTM3Zjk2NmY4OTAzODRlNDddKi8KIHsKICAgICBzdHJ1Y3QgX2luaXR0YWIgKnA7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgY2hhciAqbmFtZXN0cjsKICAgICBQeU9iamVjdCAqbW9kOwogCisgICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm5hbWUiKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIG1vZCA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWUsIG5hbWUpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKG1vZCAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAobW9kIHx8IFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgcmV0dXJuIG1vZDsKKyAgICB9CisKKyAgICBuYW1lc3RyID0gUHlVbmljb2RlX0FzVVRGOChuYW1lKTsKKyAgICBpZiAobmFtZXN0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgZm9yIChwID0gUHlJbXBvcnRfSW5pdHRhYjsgcC0+bmFtZSAhPSBOVUxMOyBwKyspIHsKLSAgICAgICAgUHlPYmplY3QgKm1vZDsKICAgICAgICAgUHlNb2R1bGVEZWYgKmRlZjsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApIHsKICAgICAgICAgICAgIGlmIChwLT5pbml0ZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHJlLWluaXQgaW50ZXJuYWwgbW9kdWxlICVSIiwKLSAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIC8qIENhbm5vdCByZS1pbml0IGludGVybmFsIG1vZHVsZSAoInN5cyIgb3IgImJ1aWx0aW5zIikgKi8KKyAgICAgICAgICAgICAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZXN0cik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBtb2Q7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtb2QgPSAoKnAtPmluaXRmdW5jKSgpOwotICAgICAgICAgICAgaWYgKG1vZCA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCi0gICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKLSAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAvKiBGaXh1cEV4dGVuc2lvbiBoYXMgcHV0IHRoZSBtb2R1bGUgaW50byBzeXMubW9kdWxlcywKLSAgICAgICAgICAgICAgIHNvIHdlIGNhbiByZWxlYXNlIG91ciBvd24gcmVmZXJlbmNlLiAqLwotICAgICAgICAgICAgUHlfREVDUkVGKG1vZCk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9UeXBlQ2hlY2sobW9kLCAmUHlNb2R1bGVEZWZfVHlwZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjKChQeU1vZHVsZURlZiopbW9kLCBzcGVjKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KKyAgICAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwLT5pbml0ZnVuYzsKKyAgICAgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAwOworICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCkBAIC0xMzM3LDYgKzEyODMsNyBAQAogcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXModm9pZCkKIHsKICAgICBjb25zdCBjaGFyICppbXBvcnRsaWJfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iOworICAgIGNvbnN0IGNoYXIgKmV4dGVybmFsX2ZpbGVuYW1lID0gIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWw+IjsKICAgICBjb25zdCBjaGFyICpyZW1vdmVfZnJhbWVzID0gIl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQiOwogICAgIGludCBhbHdheXNfdHJpbSA9IDA7CiAgICAgaW50IGluX2ltcG9ydGxpYiA9IDA7CkBAIC0xMzY2LDcgKzEzMTMsMTAgQEAKICAgICAgICAgYXNzZXJ0KFB5VHJhY2VCYWNrX0NoZWNrKHRiKSk7CiAgICAgICAgIG5vd19pbl9pbXBvcnRsaWIgPSAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmNvX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWJfZmlsZW5hbWUpID09IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWJfZmlsZW5hbWUpID09IDApIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9maWxlbmFtZSkgPT0gMCk7CiAgICAgICAgIGlmIChub3dfaW5faW1wb3J0bGliICYmICFpbl9pbXBvcnRsaWIpIHsKICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxpbmsgdG8gdGhpcyBjaHVuayBvZiBpbXBvcnRsaWIgdHJhY2ViYWNrcyAqLwogICAgICAgICAgICAgb3V0ZXJfbGluayA9IHByZXZfbGluazsKQEAgLTE4NjgsMjcgKzE4MTgsOSBAQAogUmV0dXJucyB0aGUgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIHVzZWQgdG8gaWRlbnRpZnkgZXh0ZW5zaW9uIG1vZHVsZXMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX18sCi0iZXh0ZW5zaW9uX3N1ZmZpeGVzKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKLQotI2RlZmluZSBfSU1QX0VYVEVOU0lPTl9TVUZGSVhFU19NRVRIT0RERUYgICAgXAotICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzLCBNRVRIX05PQVJHUywgX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2V4dGVuc2lvbl9zdWZmaXhlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQotewotICAgIHJldHVybiBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKG1vZHVsZSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmIzMGEyNDM4MTY3Nzk4YyBpbnB1dD1lY2RlZWVjZmNiNmY4MzllXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQ0YzE1NjZlZjM2MjIyOSBpbnB1dD1lY2RlZWVjZmNiNmY4MzllXSovCiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAgICAgY29uc3QgY2hhciAqc3VmZml4OwpAQCAtMTkxNyw2MiArMTg0OSw2IEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KLV9pbXAuaW5pdF9idWlsdGluCi0KLSAgICBuYW1lOiB1bmljb2RlCi0gICAgLwotCi1Jbml0aWFsaXplcyBhIGJ1aWx0LWluIG1vZHVsZS4KLVtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLQotUHlEb2NfU1RSVkFSKF9pbXBfaW5pdF9idWlsdGluX19kb2NfXywKLSJpbml0X2J1aWx0aW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkluaXRpYWxpemVzIGEgYnVpbHQtaW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSU5JVF9CVUlMVElOX01FVEhPRERFRiAgICBcCi0gICAgeyJpbml0X2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pbml0X2J1aWx0aW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pbml0X2J1aWx0aW5fX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pbml0X2J1aWx0aW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aW5pdF9idWlsdGluIiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2luaXRfYnVpbHRpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwMjQ0OTQ4YTQzZjhlMjYgaW5wdXQ9ZjkzNGQyMjMxZWM1MmEyZV0qLwotewotICAgIGludCByZXQ7Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICByZXQgPSBpbml0X2J1aWx0aW4obmFtZSk7Ci0gICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXQgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwotICAgIFB5X1hJTkNSRUYobSk7Ci0gICAgcmV0dXJuIG07Ci19Ci0KLS8qW2NsaW5pYyBpbnB1dF0KIF9pbXAuaW5pdF9mcm96ZW4KIAogICAgIG5hbWU6IHVuaWNvZGUKQEAgLTE5ODEsMzcgKzE4NTcsOSBAQAogSW5pdGlhbGl6ZXMgYSBmcm96ZW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9pbml0X2Zyb3plbl9fZG9jX18sCi0iaW5pdF9mcm96ZW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkluaXRpYWxpemVzIGEgZnJvemVuIG1vZHVsZS4iKTsKLQotI2RlZmluZSBfSU1QX0lOSVRfRlJPWkVOX01FVEhPRERFRiAgICBcCi0gICAgeyJpbml0X2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2luaXRfZnJvemVuLCBNRVRIX1ZBUkFSR1MsIF9pbXBfaW5pdF9mcm96ZW5fX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2luaXRfZnJvemVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVOmluaXRfZnJvemVuIiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfaW5pdF9mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNGJjMmJmZjI5NmY4ZjIyIGlucHV0PTEzMDE5YWRmYzA0ZjNmYjNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOWRlNDkzYmRkNzExODc4IGlucHV0PTEzMDE5YWRmYzA0ZjNmYjNdKi8KIHsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptOwpAQCAtMjAzNywzNyArMTg4NSw5IEBACiBDcmVhdGUgYSBjb2RlIG9iamVjdCBmb3IgYSBmcm96ZW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9nZXRfZnJvemVuX29iamVjdF9fZG9jX18sCi0iZ2V0X2Zyb3plbl9vYmplY3QoJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkNyZWF0ZSBhIGNvZGUgb2JqZWN0IGZvciBhIGZyb3plbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9HRVRfRlJPWkVOX09CSkVDVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0X2Zyb3plbl9vYmplY3QiLCAoUHlDRnVuY3Rpb24pX2ltcF9nZXRfZnJvemVuX29iamVjdCwgTUVUSF9WQVJBUkdTLCBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9nZXRfZnJvemVuX29iamVjdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTpnZXRfZnJvemVuX29iamVjdCIsCi0gICAgICAgICZuYW1lKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDA4OWVjNzAyYTlkNzBjNSBpbnB1dD1lZDY4OWJjMDUzNThmZGJkXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzExNGM5NzBhNDdmMmUzYyBpbnB1dD1lZDY4OWJjMDUzNThmZGJkXSovCiB7CiAgICAgcmV0dXJuIGdldF9mcm96ZW5fb2JqZWN0KG5hbWUpOwogfQpAQCAtMjA4MSwzNyArMTkwMSw5IEBACiBSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGlzIG9mIGEgZnJvemVuIHBhY2thZ2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX19kb2NfXywKLSJpc19mcm96ZW5fcGFja2FnZSgkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBpcyBvZiBhIGZyb3plbiBwYWNrYWdlLiIpOwotCi0jZGVmaW5lIF9JTVBfSVNfRlJPWkVOX1BBQ0tBR0VfTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2Zyb3plbl9wYWNrYWdlIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaXNfZnJvemVuX3BhY2thZ2UsIE1FVEhfVkFSQVJHUywgX2ltcF9pc19mcm96ZW5fcGFja2FnZV9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaXNfZnJvemVuX3BhY2thZ2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aXNfZnJvemVuX3BhY2thZ2UiLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg2YWFiMTRkY2Q0Yjk1OWIgaW5wdXQ9ODFiNmNkZWNkMDgwZmJiOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlNGNhYjgwMmI1NmQ2NDkgaW5wdXQ9ODFiNmNkZWNkMDgwZmJiOF0qLwogewogICAgIHJldHVybiBpc19mcm96ZW5fcGFja2FnZShuYW1lKTsKIH0KQEAgLTIxMjUsMzcgKzE5MTcsOSBAQAogUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGJ1aWx0LWluIG1vZHVsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfaXNfYnVpbHRpbl9fZG9jX18sCi0iaXNfYnVpbHRpbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGJ1aWx0LWluIG1vZHVsZS4iKTsKLQotI2RlZmluZSBfSU1QX0lTX0JVSUxUSU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19idWlsdGluLCBNRVRIX1ZBUkFSR1MsIF9pbXBfaXNfYnVpbHRpbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVOmlzX2J1aWx0aW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2lzX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNTg0N2Y4Y2FjNTA5NDZlIGlucHV0PTg2YmVmZGFjMDIxZGQxYzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGVlYzljYWM2ZmI5YTdlIGlucHV0PTg2YmVmZGFjMDIxZGQxYzddKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGlzX2J1aWx0aW4obmFtZSkpOwogfQpAQCAtMjE2OSwzNyArMTkzMyw5IEBACiBSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgZnJvemVuIG1vZHVsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfaXNfZnJvemVuX19kb2NfXywKLSJpc19mcm96ZW4oJG1vZHVsZSwgbmFtZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgY29ycmVzcG9uZHMgdG8gYSBmcm96ZW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSVNfRlJPWkVOX01FVEhPRERFRiAgICBcCi0gICAgeyJpc19mcm96ZW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19mcm96ZW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pc19mcm96ZW5fX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaXNfZnJvemVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aXNfZnJvemVuIiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2lzX2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2OTFhZjg4NGJhNDk4N2QgaW5wdXQ9NzMwMWRiY2ExODk3ZDY2Yl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkZThlMjYwYzhlMzZhZWQgaW5wdXQ9NzMwMWRiY2ExODk3ZDY2Yl0qLwogewogICAgIGNvbnN0IHN0cnVjdCBfZnJvemVuICpwOwogCkBAIC0yMjA3LDg0ICsxOTQzLDEzMSBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIChwID09IE5VTEwgPyAwIDogcC0+c2l6ZSkpOwogfQogCisvKiBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIF9pbXAuZXhlY19keW5hbWljIGFuZCBfaW1wLmV4ZWNfYnVpbHRpbiAqLworc3RhdGljIGludAorZXhlY19idWlsdGluX29yX2R5bmFtaWMoUHlPYmplY3QgKm1vZCkgeworICAgIFB5TW9kdWxlRGVmICpkZWY7CisgICAgdm9pZCAqc3RhdGU7CisKKyAgICBpZiAoIVB5TW9kdWxlX0NoZWNrKG1vZCkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CisgICAgaWYgKGRlZiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHN0YXRlID0gUHlNb2R1bGVfR2V0U3RhdGUobW9kKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzdGF0ZSkgeworICAgICAgICAvKiBBbHJlYWR5IGluaXRpYWxpemVkOyBza2lwIHJlbG9hZCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5TW9kdWxlX0V4ZWNEZWYobW9kLCBkZWYpOworfQorCiAjaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKIAogLypbY2xpbmljIGlucHV0XQotX2ltcC5sb2FkX2R5bmFtaWMKK19pbXAuY3JlYXRlX2R5bmFtaWMKIAotICAgIG5hbWU6IHVuaWNvZGUKLSAgICBwYXRoOiBmc191bmljb2RlCisgICAgc3BlYzogb2JqZWN0CiAgICAgZmlsZTogb2JqZWN0ID0gTlVMTAogICAgIC8KIAotTG9hZHMgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KK0NyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9sb2FkX2R5bmFtaWNfX2RvY19fLAotImxvYWRfZHluYW1pYygkbW9kdWxlLCBuYW1lLCBwYXRoLCBmaWxlPU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJMb2FkcyBhbiBleHRlbnNpb24gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX2R5bmFtaWMiLCAoUHlDRnVuY3Rpb24pX2ltcF9sb2FkX2R5bmFtaWMsIE1FVEhfVkFSQVJHUywgX2ltcF9sb2FkX2R5bmFtaWNfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfbG9hZF9keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqZmlsZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2xvYWRfZHluYW1pYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3BlYywgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM1Y2RlNWIzODcyZDU2ZCBpbnB1dD1jMzFiOTU0ZjRjZjRlMDlkXSovCiB7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVTyZ8Tzpsb2FkX2R5bmFtaWMiLAotICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgsICZmaWxlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfbG9hZF9keW5hbWljX2ltcGwobW9kdWxlLCBuYW1lLCBwYXRoLCBmaWxlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2FkX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICpmaWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZDExYTFmYmQxZWEwYTggaW5wdXQ9YWY2NGYwNmU0YmFkMzUyNl0qLwotewotICAgIFB5T2JqZWN0ICptb2Q7CisgICAgUHlPYmplY3QgKm1vZCwgKm5hbWUsICpwYXRoOwogICAgIEZJTEUgKmZwOwogCisgICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm5hbWUiKTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJvcmlnaW4iKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbW9kID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgcmV0dXJuIG1vZDsKKyAgICB9CisKICAgICBpZiAoZmlsZSAhPSBOVUxMKSB7CiAgICAgICAgIGZwID0gX1B5X2ZvcGVuX29iaihwYXRoLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgZnAgPSBOVUxMOwotICAgIG1vZCA9IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShuYW1lLCBwYXRoLCBmcCk7CisKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGVXaXRoU3BlYyhzcGVjLCBmcCk7CisKKyAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICByZXR1cm4gbW9kOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW1wLmV4ZWNfZHluYW1pYyAtPiBpbnQKKworICAgIG1vZDogb2JqZWN0CisgICAgLworCitJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pbXBfZXhlY19keW5hbWljX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm1vZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Yjg0ZjEzMDFiMjJkNGJkIGlucHV0PTlmZGJmY2IyNTAyODBkM2FdKi8KK3sKKyAgICByZXR1cm4gZXhlY19idWlsdGluX29yX2R5bmFtaWMobW9kKTsKK30KKworCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAogLypbY2xpbmljIGlucHV0XQorX2ltcC5leGVjX2J1aWx0aW4gLT4gaW50CisKKyAgICBtb2Q6IG9iamVjdAorICAgIC8KKworSW5pdGlhbGl6ZSBhIGJ1aWx0LWluIG1vZHVsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2ltcF9leGVjX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIxNWU5OTg3NmEyN2UyODQgaW5wdXQ9N2JlZWQ1YTJmMTJhNjBjYV0qLworeworICAgIHJldHVybiBleGVjX2J1aWx0aW5fb3JfZHluYW1pYyhtb2QpOworfQorCisvKltjbGluaWMgaW5wdXRdCiBkdW1wIGJ1ZmZlcgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotCi0jaWZuZGVmIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRgotICAgICNkZWZpbmUgX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwN2MxZDRhMzQzYTk1NzkgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLwogCiAKIFB5RG9jX1NUUlZBUihkb2NfaW1wLApAQCAtMjI5NywxMSArMjA4MCwxMyBAQAogICAgIF9JTVBfUkVMRUFTRV9MT0NLX01FVEhPRERFRgogICAgIF9JTVBfR0VUX0ZST1pFTl9PQkpFQ1RfTUVUSE9EREVGCiAgICAgX0lNUF9JU19GUk9aRU5fUEFDS0FHRV9NRVRIT0RERUYKLSAgICBfSU1QX0lOSVRfQlVJTFRJTl9NRVRIT0RERUYKKyAgICBfSU1QX0NSRUFURV9CVUlMVElOX01FVEhPRERFRgogICAgIF9JTVBfSU5JVF9GUk9aRU5fTUVUSE9EREVGCiAgICAgX0lNUF9JU19CVUlMVElOX01FVEhPRERFRgogICAgIF9JTVBfSVNfRlJPWkVOX01FVEhPRERFRgotICAgIF9JTVBfTE9BRF9EWU5BTUlDX01FVEhPRERFRgorICAgIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGCisgICAgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCisgICAgX0lNUF9FWEVDX0JVSUxUSU5fTUVUSE9EREVGCiAgICAgX0lNUF9fRklYX0NPX0ZJTEVOQU1FX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CkBAIC0yMzg0LDcgKzIxNjksNyBAQAogCiAgICAgbWVtc2V0KG5ld3RhYiwgJ1wwJywgc2l6ZW9mIG5ld3RhYik7CiAKLSAgICBuZXd0YWJbMF0ubmFtZSA9IChjaGFyICopbmFtZTsKKyAgICBuZXd0YWJbMF0ubmFtZSA9IG5hbWU7CiAgICAgbmV3dGFiWzBdLmluaXRmdW5jID0gaW5pdGZ1bmM7CiAKICAgICByZXR1cm4gUHlJbXBvcnRfRXh0ZW5kSW5pdHRhYihuZXd0YWIpOwpAQCAtMjM5Myw0ICsyMTc4LDMgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggYjYwZjFjNy4uMWFhNTg1ZCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTEzLDg3ICsxMywxODUgQEAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cldpbmRvd3MoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqZnApOwogI2Vsc2UKLWV4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotUHlPYmplY3QgKgotX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgRklMRSAqZnApCi17Ci0gICAgUHlPYmplY3QgKm0gPSBOVUxMOwotI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKnBhdGhieXRlczsKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpuYW1lYXNjaWk7Ci0gICAgY2hhciAqbmFtZXN0ciwgKmxhc3Rkb3QsICpzaG9ydG5hbWUsICpwYWNrYWdlY29udGV4dCwgKm9sZGNvbnRleHQ7Ci0gICAgZGxfZnVuY3B0ciBwMDsKLSAgICBQeU9iamVjdCogKCpwKSh2b2lkKTsKLSAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKK3N0YXRpYyBjb25zdCBjaGFyICphc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKm5vbmFzY2lpX3ByZWZpeCA9ICJQeUluaXRVIjsKIAotICAgIG0gPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBwYXRoKTsKLSAgICBpZiAobSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgcmV0dXJuIG07CisvKiBHZXQgdGhlIHZhcmlhYmxlIHBhcnQgb2YgYSBtb2R1bGUncyBleHBvcnQgc3ltYm9sIG5hbWUuCisgKiBSZXR1cm5zIGEgYnl0ZXMgaW5zdGFuY2UuIEZvciBub24tQVNDSUktbmFtZWQgbW9kdWxlcywgdGhlIG5hbWUgaXMKKyAqIGVuY29kZWQgYXMgcGVyIFBFUCA0ODkuCisgKiBUaGUgaG9va19wcmVmaXggcG9pbnRlciBpcyBzZXQgdG8gZWl0aGVyIGFzY2lpX29ubHlfcHJlZml4IG9yCisgKiBub25hc2NpaV9wcmVmaXgsIGFzIGFwcHJvcHJpYXRlLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2VuY29kZWRfbmFtZShQeU9iamVjdCAqbmFtZSwgY29uc3QgY2hhciAqKmhvb2tfcHJlZml4KSB7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQeU9iamVjdCAqZW5jb2RlZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmFtZV9sZW4sIGxhc3Rkb3Q7CisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisKKyAgICAvKiBHZXQgdGhlIHNob3J0IG5hbWUgKHN1YnN0cmluZyBhZnRlciBsYXN0IGRvdCkgKi8KKyAgICBuYW1lX2xlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgobmFtZSk7CisgICAgbGFzdGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIDAsIG5hbWVfbGVuLCAtMSk7CisgICAgaWYgKGxhc3Rkb3QgPCAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGxhc3Rkb3QgPj0gMCkgeworICAgICAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIGxhc3Rkb3QgKyAxLCBuYW1lX2xlbik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBuYW1lID0gdG1wOworICAgICAgICAvKiAibmFtZSIgbm93IGhvbGRzIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgc3Vic3RyaW5nICovCisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwogICAgIH0KIAotICAgIC8qIG5hbWUgbXVzdCBiZSBlbmNvZGFibGUgdG8gQVNDSUkgYmVjYXVzZSBkeW5hbWljIG1vZHVsZSBtdXN0IGhhdmUgYQotICAgICAgIGZ1bmN0aW9uIGNhbGxlZCAiUHlJbml0X05BTUUiLCB0aGV5IGFyZSB3cml0dGVuIGluIEMsIGFuZCB0aGUgQyBsYW5ndWFnZQotICAgICAgIGRvZXNuJ3QgYWNjZXB0IG5vbi1BU0NJSSBpZGVudGlmaWVycy4gKi8KLSAgICBuYW1lYXNjaWkgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOwotICAgIGlmIChuYW1lYXNjaWkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogRW5jb2RlIHRvIEFTQ0lJIG9yIFB1bnljb2RlLCBhcyBuZWVkZWQgKi8KKyAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAiYXNjaWkiLCBOVUxMKTsKKyAgICBpZiAoZW5jb2RlZCAhPSBOVUxMKSB7CisgICAgICAgICpob29rX3ByZWZpeCA9IGFzY2lpX29ubHlfcHJlZml4OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAicHVueWNvZGUiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKmhvb2tfcHJlZml4ID0gbm9uYXNjaWlfcHJlZml4OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KIAotICAgIG5hbWVzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhuYW1lYXNjaWkpOwotICAgIGlmIChuYW1lc3RyID09IE5VTEwpCisgICAgLyogUmVwbGFjZSAnLScgYnkgJ18nICovCisgICAgbW9kbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZW5jb2RlZCwgJlB5SWRfcmVwbGFjZSwgImNjIiwgJy0nLCAnXycpOworICAgIGlmIChtb2RuYW1lID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBsYXN0ZG90ID0gc3RycmNocihuYW1lc3RyLCAnLicpOwotICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKLSAgICAgICAgcGFja2FnZWNvbnRleHQgPSBOVUxMOwotICAgICAgICBzaG9ydG5hbWUgPSBuYW1lc3RyOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcGFja2FnZWNvbnRleHQgPSBuYW1lc3RyOwotICAgICAgICBzaG9ydG5hbWUgPSBsYXN0ZG90KzE7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKKyAgICByZXR1cm4gbW9kbmFtZTsKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBQeV9YREVDUkVGKGVuY29kZWQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGVXaXRoU3BlYyhQeU9iamVjdCAqc3BlYywgRklMRSAqZnApCit7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqcGF0aGJ5dGVzID0gTlVMTDsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpuYW1lX3VuaWNvZGUgPSBOVUxMLCAqbmFtZSA9IE5VTEwsICpwYXRoID0gTlVMTCwgKm0gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWVfYnVmLCAqaG9va19wcmVmaXg7CisgICAgY2hhciAqb2xkY29udGV4dDsKKyAgICBkbF9mdW5jcHRyIGV4cG9ydGZ1bmM7CisgICAgUHlNb2R1bGVEZWYgKmRlZjsKKyAgICBQeU9iamVjdCAqKCpwMCkodm9pZCk7CisKKyAgICBuYW1lX3VuaWNvZGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJuYW1lIik7CisgICAgaWYgKG5hbWVfdW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIG5hbWUgPSBnZXRfZW5jb2RlZF9uYW1lKG5hbWVfdW5pY29kZSwgJmhvb2tfcHJlZml4KTsKKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG5hbWVfYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmFtZSk7CisKKyAgICBwYXRoID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAib3JpZ2luIik7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhzaG9ydG5hbWUsIHBhdGgsIGZwKTsKKyAgICBleHBvcnRmdW5jID0gX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyV2luZG93cyhob29rX3ByZWZpeCwgbmFtZV9idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgZnApOwogI2Vsc2UKICAgICBwYXRoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOwogICAgIGlmIChwYXRoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwgZnApOworICAgIGV4cG9ydGZ1bmMgPSBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoaG9va19wcmVmaXgsIG5hbWVfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwKTsKICAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKICNlbmRpZgotICAgIHAgPSAoUHlPYmplY3QqKCopKHZvaWQpKXAwOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXQgZnVuY3Rpb24gKFB5SW5pdF8lcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKLSAgICAgICAgaWYgKG1zZyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBuYW1lLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG1zZyk7CisKKyAgICBpZiAoZXhwb3J0ZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm1zZzsKKyAgICAgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgICAgICJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICJtb2R1bGUgZXhwb3J0IGZ1bmN0aW9uICglc18lcykiLAorICAgICAgICAgICAgICAgIGhvb2tfcHJlZml4LCBuYW1lX2J1Zik7CisgICAgICAgICAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgbmFtZV91bmljb2RlLCBwYXRoKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOworICAgICAgICB9CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIG9sZGNvbnRleHQgPSBfUHlfUGFja2FnZUNvbnRleHQ7Ci0gICAgX1B5X1BhY2thZ2VDb250ZXh0ID0gcGFja2FnZWNvbnRleHQ7Ci0gICAgbSA9ICgqcCkoKTsKLSAgICBfUHlfUGFja2FnZUNvbnRleHQgPSBvbGRjb250ZXh0OwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIHAwID0gKFB5T2JqZWN0ICooKikodm9pZCkpZXhwb3J0ZnVuYzsKKworICAgIC8qIFBhY2thZ2UgY29udGV4dCBpcyBuZWVkZWQgZm9yIHNpbmdsZS1waGFzZSBpbml0ICovCisgICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKKyAgICBfUHlfUGFja2FnZUNvbnRleHQgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWVfdW5pY29kZSk7CisgICAgbSA9IHAwKCk7CisgICAgX1B5X1BhY2thZ2VDb250ZXh0ID0gb2xkY29udGV4dDsKKworICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIGZhaWxlZCB3aXRob3V0IHJhaXNpbmcgYW4gZXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICBuYW1lX2J1Zik7CisgICAgICAgIH0KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9IGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAiaW5pdGlhbGl6YXRpb24gb2YgJXMgcmFpc2VkIHVucmVwb3J0ZWQgZXhjZXB0aW9uIiwKKyAgICAgICAgICAgIG5hbWVfYnVmKTsKKyAgICAgICAgbSA9IE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeV9UWVBFKG0pID09IE5VTEwpIHsKKyAgICAgICAgLyogVGhpcyBjYW4gaGFwcGVuIHdoZW4gYSBQeU1vZHVsZURlZiBpcyByZXR1cm5lZCB3aXRob3V0IGNhbGxpbmcKKyAgICAgICAgICogUHlNb2R1bGVEZWZfSW5pdCBvbiBpdAorICAgICAgICAgKi8KICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgImluaXQgZnVuY3Rpb24gb2YgJXMgcmV0dXJuZWQgdW5pbml0aWFsaXplZCBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgbmFtZV9idWYpOworICAgICAgICBtID0gTlVMTDsgLyogcHJldmVudCBzZWdmYXVsdCBpbiBERUNSRUYgKi8KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhtLCAmUHlNb2R1bGVEZWZfVHlwZSkpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVfdW5pY29kZSk7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICByZXR1cm4gUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMoKFB5TW9kdWxlRGVmKiltLCBzcGVjKTsKKyAgICB9CisKKyAgICAvKiBGYWxsIGJhY2sgdG8gc2luZ2xlLXBoYXNlIGluaXQgbWVjaGFuaXNtICovCisKKyAgICBpZiAoaG9va19wcmVmaXggPT0gbm9uYXNjaWlfcHJlZml4KSB7CisgICAgICAgIC8qIGRvbid0IGFsbG93IGxlZ2FjeSBpbml0IGZvciBub24tQVNDSUkgbW9kdWxlIG5hbWVzICovCisgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICogZGlkIG5vdCByZXR1cm4gUHlNb2R1bGVEZWYiLAorICAgICAgICAgICAgbmFtZV9idWYpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMTAyLDEwICsyMDAsMTAgQEAKICAgICBpZiAoZGVmID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIGRpZCBub3QgcmV0dXJuIGFuIGV4dGVuc2lvbiAiCi0gICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgc2hvcnRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCBuYW1lX2J1Zik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHA7CisgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcDA7CiAKICAgICAvKiBSZW1lbWJlciB0aGUgZmlsZW5hbWUgYXMgdGhlIF9fZmlsZV9fIGF0dHJpYnV0ZSAqLwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fZmlsZV9fIiwgcGF0aCkgPCAwKQpAQCAtMTEzLDEzICsyMTEsMTkgQEAKICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihwYXRoKTsKIAotICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZSwgcGF0aCkgPCAwKQorICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZV91bmljb2RlLCBwYXRoKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisKKyAgICBQeV9ERUNSRUYobmFtZV91bmljb2RlKTsKKyAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgUHlfREVDUkVGKHBhdGgpOworCiAgICAgcmV0dXJuIG07CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIFB5X0RFQ1JFRihuYW1lX3VuaWNvZGUpOworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgUHlfWERFQ1JFRihwYXRoKTsKICAgICBQeV9YREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmggYi9QeXRob24vaW1wb3J0ZGwuaAppbmRleCA2YTUxYTkxLi45ODQ3NjUyIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuaAorKysgYi9QeXRob24vaW1wb3J0ZGwuaApAQCAtOCw4ICs4LDcgQEAKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdOwogCi1leHRlcm4gUHlPYmplY3QgKl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRSAqKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlV2l0aFNwZWMoUHlPYmplY3QgKnNwZWMsIEZJTEUgKik7CiAKIC8qIE1heCBsZW5ndGggb2YgbW9kdWxlIHN1ZmZpeCBzZWFyY2hlZCBmb3IgLS0gYWNjb21tb2RhdGVzICJtb2R1bGUuc2xiIiAqLwogI2RlZmluZSBNQVhTVUZGSVhTSVpFIDEyCmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliLmggYi9QeXRob24vaW1wb3J0bGliLmgKaW5kZXggZWY4YmYyNy4uYTRkYWY2MiAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGxpYi5oCisrKyBiL1B5dGhvbi9pbXBvcnRsaWIuaApAQCAtMSwyMjYyICsxLDE0NTIgQEAKLS8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLworLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjI4LDQsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCwxNjMsMCw5MCwxLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDMsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKLSAgICA2LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCw5LDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwKLSAgICAxMCwwLDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEzMiwxLDAsOTAsMTEsCi0gICAgMCwxMDAsMjUsMCwxMDAsMjYsMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDI3LDAsCi0gICAgMTAwLDI4LDAsMTMyLDAsMCw5MCwxMywwLDEwMSwxNCwwLDEwMSwxMiwwLDEwNiwKLSAgICAxNSwwLDEzMSwxLDAsOTAsMTYsMCw3MSwxMDAsMjksMCwxMDAsMzAsMCwxMzIsCi0gICAgMCwwLDEwMCwzMCwwLDEzMSwyLDAsOTAsMTcsMCwxMDUsMCwwLDkwLDE4LAotICAgIDAsMTA1LDAsMCw5MCwxOSwwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLAotICAgIDAsMTAwLDMyLDAsMTAxLDIwLDAsMTMxLDMsMCw5MCwyMSwwLDcxLDEwMCwzMywKLSAgICAwLDEwMCwzNCwwLDEzMiwwLDAsMTAwLDM0LDAsMTMxLDIsMCw5MCwyMiwwLAotICAgIDcxLDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwwLDAsMTAwLDM2LDAsMTMxLDIsMCwKLSAgICA5MCwyMywwLDcxLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsMTAwLDM4LDAsCi0gICAgMTMxLDIsMCw5MCwyNCwwLDEwMCwzOSwwLDEwMCw0MCwwLDEzMiwwLDAsOTAsCi0gICAgMjUsMCwxMDAsNDEsMCwxMDAsNDIsMCwxMzIsMCwwLDkwLDI2LDAsMTAwLDQzLAotICAgIDAsMTAwLDQ0LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw0NSwwLDEwNiwyOCwwLAotICAgIDEwMCw0NiwwLDEwMCw0NywwLDEzMSwyLDAsMTAwLDQ4LDAsMjMsOTAsMjksMCwKLSAgICAxMDEsMzAsMCwxMDYsMzEsMCwxMDEsMjksMCwxMDAsNDcsMCwxMzEsMiwwLDkwLAotICAgIDMyLDAsMTAwLDQ5LDAsOTAsMzMsMCwxMDAsNTAsMCwxMDMsMSwwLDkwLDM0LAotICAgIDAsMTAwLDUxLDAsMTAzLDEsMCw5MCwzNSwwLDEwMCw1MiwwLDEwMywxLDAsCi0gICAgOTAsMzYsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMDAsNTUsMCwxMzIsMSwwLDkwLAotICAgIDM3LDAsMTAwLDU2LDAsMTAwLDU3LDAsMTMyLDAsMCw5MCwzOCwwLDEwMCw1OCwKLSAgICAwLDEwMCw1OSwwLDEzMiwwLDAsOTAsMzksMCwxMDAsNjAsMCwxMDAsNjEsMCwKLSAgICAxMzIsMCwwLDkwLDQwLDAsMTAwLDYyLDAsMTAwLDYzLDAsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMSw5MCw0MSwwLDEwMCw2NiwwLDEwMCw2NywwLDEzMiwwLAotICAgIDAsOTAsNDIsMCwxMDAsNjgsMCwxMDAsNjksMCwxMzIsMCwwLDkwLDQzLDAsCi0gICAgMTAwLDcwLDAsMTAwLDcxLDAsMTMyLDAsMCw5MCw0NCwwLDEwMCw3MiwwLDEwMCwKLSAgICA3MywwLDEzMiwwLDAsOTAsNDUsMCwxMDAsNzQsMCwxMDAsNzUsMCwxMzIsMCwKLSAgICAwLDkwLDQ2LDAsMTAwLDUzLDAsMTAwLDUzLDAsMTAwLDUzLDAsMTAwLDc2LDAsCi0gICAgMTAwLDc3LDAsMTMyLDMsMCw5MCw0NywwLDEwMCw1MywwLDEwMCw1MywwLDEwMCwKLSAgICA1MywwLDEwMCw3OCwwLDEwMCw3OSwwLDEzMiwzLDAsOTAsNDgsMCwxMDAsODAsCi0gICAgMCwxMDAsODAsMCwxMDAsODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ5LDAsCi0gICAgMTAwLDgzLDAsMTAwLDg0LDAsMTMyLDAsMCw5MCw1MCwwLDEwMCw4NSwwLDEwMCwKLSAgICA4NiwwLDEzMiwwLDAsOTAsNTEsMCw3MSwxMDAsODcsMCwxMDAsODgsMCwxMzIsCi0gICAgMCwwLDEwMCw4OCwwLDEzMSwyLDAsOTAsNTIsMCw3MSwxMDAsODksMCwxMDAsCi0gICAgOTAsMCwxMzIsMCwwLDEwMCw5MCwwLDEzMSwyLDAsOTAsNTMsMCwxMDAsOTEsCi0gICAgMCwxMDAsNTMsMCwxMDAsOTIsMCwxMDAsNTMsMCwxMDAsOTMsMCwxMDAsOTQsMCwKLSAgICAxMzIsMCwyLDkwLDU0LDAsMTAxLDU1LDAsMTMxLDAsMCw5MCw1NiwwLDEwMCwKLSAgICA1MywwLDEwMCw5NSwwLDEwMCw1MywwLDEwMCw5NiwwLDEwMSw1NiwwLDEwMCw5NywKLSAgICAwLDEwMCw5OCwwLDEzMiwxLDIsOTAsNTcsMCwxMDAsNTMsMCwxMDAsNTMsMCwKLSAgICAxMDAsOTksMCwxMDAsMTAwLDAsMTMyLDIsMCw5MCw1OCwwLDcxLDEwMCwxMDEsMCwKLSAgICAxMDAsMTAyLDAsMTMyLDAsMCwxMDAsMTAyLDAsMTMxLDIsMCw5MCw1OSwwLDEwMCwKLSAgICA1MywwLDEwMCwxMDMsMCwxMDAsMTA0LDAsMTMyLDEsMCw5MCw2MCwwLDcxLDEwMCwKLSAgICAxMDUsMCwxMDAsMTA2LDAsMTMyLDAsMCwxMDAsMTA2LDAsMTMxLDIsMCw5MCw2MSwKLSAgICAwLDcxLDEwMCwxMDcsMCwxMDAsMTA4LDAsMTMyLDAsMCwxMDAsMTA4LDAsMTMxLDIsCi0gICAgMCw5MCw2MiwwLDcxLDEwMCwxMDksMCwxMDAsMTEwLDAsMTMyLDAsMCwxMDAsMTEwLAotICAgIDAsMTMxLDIsMCw5MCw2MywwLDcxLDEwMCwxMTEsMCwxMDAsMTEyLDAsMTMyLDAsCi0gICAgMCwxMDAsMTEyLDAsMTMxLDIsMCw5MCw2NCwwLDcxLDEwMCwxMTMsMCwxMDAsMTE0LAotICAgIDAsMTMyLDAsMCwxMDAsMTE0LDAsMTAxLDY0LDAsMTMxLDMsMCw5MCw2NSwwLAotICAgIDcxLDEwMCwxMTUsMCwxMDAsMTE2LDAsMTMyLDAsMCwxMDAsMTE2LDAsMTMxLDIsMCwKLSAgICA5MCw2NiwwLDcxLDEwMCwxMTcsMCwxMDAsMTE4LDAsMTMyLDAsMCwxMDAsMTE4LDAsCi0gICAgMTAxLDY2LDAsMTAxLDY1LDAsMTMxLDQsMCw5MCw2NywwLDcxLDEwMCwxMTksMCwKLSAgICAxMDAsMTIwLDAsMTMyLDAsMCwxMDAsMTIwLDAsMTAxLDY2LDAsMTAxLDY0LDAsMTMxLAotICAgIDQsMCw5MCw2OCwwLDEwMywwLDAsOTAsNjksMCw3MSwxMDAsMTIxLDAsMTAwLAotICAgIDEyMiwwLDEzMiwwLDAsMTAwLDEyMiwwLDEzMSwyLDAsOTAsNzAsMCw3MSwxMDAsCi0gICAgMTIzLDAsMTAwLDEyNCwwLDEzMiwwLDAsMTAwLDEyNCwwLDEzMSwyLDAsOTAsNzEsCi0gICAgMCw3MSwxMDAsMTI1LDAsMTAwLDEyNiwwLDEzMiwwLDAsMTAwLDEyNiwwLDEzMSwyLAotICAgIDAsOTAsNzIsMCw3MSwxMDAsMTI3LDAsMTAwLDEyOCwwLDEzMiwwLDAsMTAwLDEyOCwKLSAgICAwLDEzMSwyLDAsOTAsNzMsMCw3MSwxMDAsMTI5LDAsMTAwLDEzMCwwLDEzMiwwLAotICAgIDAsMTAwLDEzMCwwLDEzMSwyLDAsOTAsNzQsMCw3MSwxMDAsMTMxLDAsMTAwLDEzMiwKLSAgICAwLDEzMiwwLDAsMTAwLDEzMiwwLDEzMSwyLDAsOTAsNzUsMCwxMDAsMTMzLDAsCi0gICAgMTAwLDEzNCwwLDEzMiwwLDAsOTAsNzYsMCwxMDAsMTM1LDAsMTAwLDEzNiwwLDEzMiwKLSAgICAwLDAsOTAsNzcsMCwxMDAsNTMsMCwxMDAsMTM3LDAsMTAwLDEzOCwwLDEzMiwxLAotICAgIDAsOTAsNzgsMCwxMDAsMTM5LDAsMTAwLDE0MCwwLDEzMiwwLDAsOTAsNzksMCwKLSAgICAxMDAsMTQxLDAsOTAsODAsMCwxMDEsODAsMCwxMDAsMTQyLDAsMjMsOTAsODEsMCwKLSAgICAxMDAsMTQzLDAsMTAwLDE0NCwwLDEzMiwwLDAsOTAsODIsMCwxMDAsMTQ1LDAsMTAwLAotICAgIDE0NiwwLDEzMiwwLDAsOTAsODMsMCwxMDAsNTMsMCwxMDAsODAsMCwxMDAsMTQ3LAotICAgIDAsMTAwLDE0OCwwLDEzMiwyLDAsOTAsODQsMCwxMDAsMTQ5LDAsMTAwLDE1MCwwLAotICAgIDEzMiwwLDAsOTAsODUsMCwxMDAsMTUxLDAsMTAwLDE1MiwwLDEzMiwwLDAsOTAsCi0gICAgODYsMCwxMDAsMTUzLDAsMTAwLDE1NCwwLDEzMiwwLDAsOTAsODcsMCwxMDAsNTMsCi0gICAgMCwxMDAsNTMsMCwxMDIsMCwwLDEwMCw4MCwwLDEwMCwxNTUsMCwxMDAsMTU2LDAsCi0gICAgMTMyLDQsMCw5MCw4OCwwLDEwMCwxNTcsMCwxMDAsMTU4LDAsMTMyLDAsMCw5MCwKLSAgICA4OSwwLDEwMCwxNTksMCwxMDAsMTYwLDAsMTMyLDAsMCw5MCw5MCwwLDEwMCwxNjEsCi0gICAgMCwxMDAsMTYyLDAsMTMyLDAsMCw5MCw5MSwwLDEwMCw1MywwLDgzLDQxLDE2NCwKLSAgICA5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLAotICAgIDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsCi0gICAgMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LAotICAgIDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiwKLSAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsCi0gICAgMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsCi0gICAgMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LAotICAgIDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwKLSAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LAotICAgIDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LAotICAgIDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsCi0gICAgMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksCi0gICAgMTIxLDEwMywxMTksMTA1LDExMCwyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwKLSAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQ5LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLAotICAgIDExNiwzLDAsMTMxLDEsMCwxMTQsMzMsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLAotICAgIDAsMCwxMjUsMCwwLDExMCwxMiwwLDEwMCwzLDAsMTAwLDIsMCwxMzIsMCwKLSAgICAwLDEyNSwwLDAsMTI0LDAsMCw4Myw0MSw0LDc4LDk5LDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsODMsMCwwLDAsCi0gICAgMTE1LDEzLDAsMCwwLDEwMCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LAotICAgIDAsODMsNDEsMiwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsCi0gICAgOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0NiwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsNDEsMiwyMTgsMywKLSAgICA5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDE2OSwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAotICAgIDk5LDk3LDExNSwxMDEsMzAsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKLSAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAotICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCi0gICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCi0gICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCi0gICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDYsMCwwLDAsMzQsMCwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDQxLDQsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCi0gICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAotICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCi0gICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCi0gICAgODMsNDEsMSwxMTQsNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LAotICAgIDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMjgsMCwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCwxLDE4LDEsMTUsNCwxMiwzLDExNCwxMSwwLDAsMCw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMDAsMSwwLDY0LDEwNiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzMSwKLSAgICAyLDAsODMsNDEsNCwxMjIsNDIsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsCi0gICAgMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsCi0gICAgMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLAotICAgIDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsMjU1LDEyNywzLDAsMjMzLDQsMCwwLAotICAgIDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwKLSAgICAyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsNywKLSAgICA5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQwLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMTQsMTcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLAotICAgIDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwKLSAgICAxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLAotICAgIDEwMywxMDEsMTE0LDQ2LDExNCwxMywwLDAsMCw0MSwyLDExNCwxNCwwLDAsMCwKLSAgICAyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksCi0gICAgMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwKLSAgICAxMDMsNDUsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwxOSwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsCi0gICAgMCwwLDcxLDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDAsMCw2OCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsODMsNDEsMywxMjIsMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAotICAgIDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDgzLDAsMCwwLDExNSwzNywwLAotICAgIDAsMCwxMDMsMCwwLDEyNCwwLDAsOTMsMjcsMCwxMjUsMSwwLDEyNCwxLAotICAgIDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwwLDAsMTE2LDEsMCwxMzEsMSwwLAotICAgIDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsNCwwLDAsMCw0MSwyLDIxOCw2LAotICAgIDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwKLSAgICA5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLAotICAgIDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw1MiwwLAotICAgIDAsMCwxMTUsMiwwLDAsMCw5LDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsCi0gICAgMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA2LDExMSwxMDUsMTEwLDUwLDAsMCwwLDExNSw0LDAsMCwwLDAsMiwxNSwKLSAgICAxLDExNCwyOCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwxMzQsMCwwLDAsCi0gICAgMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKLSAgICA1MiwwLDEyNCwwLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLDAsOTIsMywKLSAgICAwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwKLSAgICAxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLAotICAgIDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsNCwwLDExNiwxLDAsMTA3LDYsMCwKLSAgICAxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMSw5MiwyLDAsMTI1LDEsMCwxMjUsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMDIsMiwwLDgzLDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LAotICAgIDAsMCwxMDIsMiwwLDgzLDQxLDQsMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLDQxLDQ2LDIzMywxLDAsMCwwLDkwLAotICAgIDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LAotICAgIDEwMSwxMTAsMTE0LDIxLDAsMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwKLSAgICAxMDUsMTExLDExMCwxMTQsMjUsMCwwLDAsMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsCi0gICAgMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywKLSAgICAxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsCi0gICAgMTA1LDEwOCwxMTQsMTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsCi0gICAgMTA4LDEwNSwxMTYsNTYsMCwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxOCwxLAotICAgIDI0LDEsMTAsMSwxOSwxLDEyLDEsMjcsMSwxNCwxLDExNCwzOCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsCi0gICAgMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsCi0gICAgMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwKLSAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LAotICAgIDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsCi0gICAgMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw0MSwyLDExNCwzLDAsMCwKLSAgICAwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsMSwxMTQsMzUsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDY4LDAsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNywxMTQsMzksMCwwLDAsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDU4LAotICAgIDAsMCwwLDEyMSwxNiwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKLSAgICAyLDAsODcsMTEwLDIyLDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCw0MCwwLAotICAgIDEsMSwxLDEwMCwxLDAsODMsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwKLSAgICAyLDAsMTAwLDIsMCw2NCwxMjQsMSwwLDEwNywyLDAsODMsNDEsMywxMjIsCi0gICAgNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsCi0gICAgMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsMzksMCwwLDAsMjE4LAotICAgIDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsCi0gICAgMTAxLDQxLDMsMTE0LDM1LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LAotICAgIDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDc4LDAsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMywxLDE2LDEsMTMsMSw5LDEsMTE0LAotICAgIDQzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsMzEsODIsCi0gICAgMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLAotICAgIDEyOCwwLDAsNDEsMSwxMTQsNDMsMCwwLDAsNDEsMSwxMTQsMzUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMjE4LDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDg3LDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsNDQsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMCwxMTUsMjEsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMCwwLDExMCwwLDAsMTE2LDIsMCwKLSAgICAxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiwzMCw4MiwxMDEsCi0gICAgMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwwLAotICAgIDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsMTAxLDExNiw5OSwxMTksMTAwLAotICAgIDExNCw0MywwLDAsMCw0MSwxLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5MiwwLDAsMCwxMTUsNiwwLDAsCi0gICAgMCwwLDIsNiwxLDE1LDEsMTE0LDQ2LDAsMCwwLDEwNSwxODIsMSwwLAotICAgIDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE5MiwwLDAsMCwxMDAsMSwwLDEwNiwwLAotICAgIDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTE2LDIsMCwxMDYsCi0gICAgNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwwLDEwNiw2LDAsNjYsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LDQsMCwxMjEsNjAsMCwKLSAgICAxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywwLDEzMSwyLDAsMTQzLAotICAgIDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsMTI0LDEsMCwxMzEsMSwKLSAgICAwLDEsODcsMTAwLDQsMCw4MSw4OCwxMTYsMiwwLDEwNiwxMCwwLDEyNCwzLAotICAgIDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLDU5LDAsNCwxMTYsMTEsMCwKLSAgICAxMDcsMTAsMCwxMTQsMTg3LDAsMSwxLDEsMTIxLDE3LDAsMTE2LDIsMCwxMDYsCi0gICAgMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMTgsMCw0LDExNiwxMSwKLSAgICAwLDEwNywxMCwwLDExNCwxNzksMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEzMCwKLSAgICAwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQxLDUsMTIyLDE2Miw2NiwKLSAgICAxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDEwMCw5NywxMTYsCi0gICAgOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTYsMTExLDEwOSwKLSAgICAxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsNjYsMTAxLDMyLDExMiwKLSAgICAxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKLSAgICAxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsCi0gICAgMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwKLSAgICA0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwxLDAsMCw5MCwyLDExOSwKLSAgICA5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDIxOCwyLDEwNSwxMDAsCi0gICAgMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwxMTAsOTAsNiw3OSw5NSw2OSwKLSAgICA4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LDY1LDg0LDkwLDgsNzksOTUsCi0gICAgODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LDExMSwyMTgsNiw3MCwxMDUsMTA4LAotICAgIDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLDIxOCw3LDExNCwxMDEsMTEyLDEwOCwKLSAgICA5Nyw5OSwxMDEsMTE0LDQwLDAsMCwwLDkwLDYsMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsCi0gICAgNDEsNiwxMTQsMzUsMCwwLDAsMjE4LDQsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwKLSAgICAwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsMTA5LDExMiw5MCwyLDEwMiwxMDAsCi0gICAgMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwKLSAgICAxMTEsMTA5LDEwNSw5OSw5OSwwLDAsMCwxMTUsMjYsMCwwLDAsMCw1LDI0LAotICAgIDEsOSwxLDMzLDEsMywzLDIxLDEsMTksMSwyMCwxLDEzLDEsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMTE0LDU1LDAsMCwwLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDk1LDAsMCwwLDEyMCw2OSwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEwMCw0LDAsMTAzLDQsMCw2OCw5Myw0OSwwLDEyNSwyLDAsMTE2LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwKLSAgICAwLDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMzEsMiwwLDEzMSwzLDAsMSwxMTMsMTksMCwxMTMsMTksMCw4NywxMjQsMCwKLSAgICAwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwKLSAgICAxLDEwMCw1LDAsODMsNDEsNiwxMjIsNDcsODMsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiwKLSAgICAxMTUsMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDIsCi0gICAgMTE3LDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsOTUsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMjE4LDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwxMiwKLSAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwKLSAgICAxMDAsMTExLDk5LDk1LDk1LDc4LDQxLDUsMjE4LDcsMTA0LDk3LDExNSw5NywxMTYsMTE2LAotICAgIDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLDExNiw5NywKLSAgICAxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsNiwxMTcsCi0gICAgMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsMTAxLDExOSw5MCwzLDExMSwxMDgsCi0gICAgMTAwLDExNCw1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwxMjEsMCwwLDAsCi0gICAgMTE1LDgsMCwwLDAsMCwyLDI1LDEsMTUsMSwzMiwxLDExNCw2NSwwLAotICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDExNiwKLSAgICAxLDAsMTMxLDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDIxOCw0LDExNiwxMjEsMTEyLDEwMSwxMTQsNywwLDAsMCw0MSwxLDIxOCw0LAotICAgIDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMjksMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNCw2OCwwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSw1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAotICAgIDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwKLSAgICAxMDAsOCwwLDgzLDQxLDksMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLAotICAgIDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LAotICAgIDExMCw0NSwxMTcsMTEyLDMyLDExMSwxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDQwLDQxLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDEsMjE4LDUsOTUsMTEwLDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwKLSAgICAxMDIsMTE0LDY3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxNDEsCi0gICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSw3Nyw5NywxMTAsCi0gICAgOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDYsMCwxMjQsMCwwLDk1LDMsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNCwxMTQsNzAsMCwwLDAsMTE0LAotICAgIDcsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwKLSAgICAxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsNDEsMSwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LAotICAgIDksOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSwxNDQsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDEyMiwyMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsCi0gICAgMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw3MSwKLSAgICAwLDAsMCwxMTUsODAsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLAotICAgIDAsMTMyLDAsMCwxMjQsMSwwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTQsNzYsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTIsMTE0LDc2LDAsMTIxLDE3LDAsMTE2LDIsCi0gICAgMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCw2MSw4NywxMTMsNzYsMCw0LAotICAgIDExNiw1LDAsMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEzLDc2LDAsCi0gICAgODgsMTEwLDAsMCwxMDAsMCwwLDgzLDQxLDMsNzgsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsCi0gICAgMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMjE4LAotICAgIDMsOTcsMTE0LDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTQ4LDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsNDEsOTUsNzcsOTcsMTEwLDk3LAotICAgIDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSwKLSAgICA5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLAotICAgIDEyMCwxMTIsMTE0LDYyLDQxLDYsMjE4LDMsOTcsMTEwLDEyMSwxMTQsNzQsMCwwLDAsCi0gICAgMTE0LDcsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw3MCwwLDAsMCwyMTgsCi0gICAgOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCw0MSwyLDExNCw3MSwwLDAsMCwKLSAgICAyMTgsNCw5NywxMTQsMTAzLDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsMTQ3LAotICAgIDAsMCwwLDExNSwxMCwwLDAsMCwwLDEsMzUsMSwzLDEsMTcsMSwKLSAgICAxMywxLDEyMiwyMiw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywKLSAgICAxMDAsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDcsMTE0LDU3LDAsCi0gICAgMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwKLSAgICAwLDExNCw3MiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDgxLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCw2OSwwLDAsMCwxMzcsMCwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMTIsMiw2LDIsMTIsMywxMiwzLDExNCw2OSwwLDAsMCw5OSwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSwKLSAgICA5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDU3LAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDgyLDAsMCwwLDE2MiwwLDAsMCwxMTUsMiwwLDAsMCwxMiwKLSAgICAxLDExNCw4MiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw4MiwwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCi0gICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwKLSAgICAxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCwKLSAgICA3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEyLAotICAgIDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAotICAgIDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDk4LDEwOCwxMDEsCi0gICAgMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwKLSAgICAxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExNiwKLSAgICAxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LAotICAgIDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjUsMzIsMTE2LAotICAgIDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LAotICAgIDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NiwzMiwxMTYsCi0gICAgMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LAotICAgIDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsCi0gICAgMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDQsMCwxMDAsMCwwLAotICAgIDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LDAsMCw5NSw2LDAsMTAwLAotICAgIDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMjMzLAotICAgIDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDkwLAotICAgIDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMjE4LDQsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsMTE3LDExMiwxMTQsNjcsMCwwLAotICAgIDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMjE4LAotICAgIDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDY3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCw3MiwwLDAsMCwxNzIsMCwwLDAsMTE1LDEyLDAsMCwKLSAgICAwLDAsMSwxNSwxLDE1LDEsOSwxLDksMSw5LDEsMTIyLDIwLDk1LAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTI1LAotICAgIDIsMCwxMjAsNjAsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwKLSAgICAwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDU1LDAsCi0gICAgMTAwLDEsMCw4MywxMjQsMywwLDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLAotICAgIDEyNCwxLDAsMTA3LDIsMCwxMTQsMjQsMCwxMDAsMiwwLDgzLDExMywyNCwwLAotICAgIDg3LDEwMCwwLDAsODMsNDEsMyw3OCw3MCw4NCw0MSw1LDExNCw4NSwwLDAsCi0gICAgMCwyMTgsOSwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNCw4OCwwLDAsCi0gICAgMCwyMTgsMTIsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwyMTgsCi0gICAgMywxMDMsMTAxLDExNiw0MSw0LDExNCw3MSwwLDAsMCwyMTgsMiwxMDksMTAxLDIxOCwKLSAgICAzLDExNiwxMDUsMTAwLDExNCw4NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwxMDAsMTAxLAotICAgIDk3LDEwMCwxMDgsMTExLDk5LDEwNywxODAsMCwwLDAsMTE1LDE4LDAsMCwwLDAsCi0gICAgMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwxLDQsMSw5LDEsMTIsCi0gICAgMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCwKLSAgICA5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMTYsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDIxNSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwKLSAgICAwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLDYwLDEyMiwxNzgsMCwxMjAsMTcxLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMzAsMCwxLDEyNCwwLDAsMTA2LDQsCi0gICAgMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwyLDAsNTUsMiw5NSw0LAotICAgIDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LDAsMTMxLDAsMCwxMTQsMTI3LAotICAgIDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsMjIsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDExMCwwLDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsMTAwLDUsMCwKLSAgICAxMzEsMSwwLDExNCwxNjMsMCwxMjQsMCwwLDQsMTA2LDEwLDAsMTAwLDIsMCwKLSAgICA1NSwyLDk1LDEwLDAsMTEwLDAsMCw4NywxMDAsNiwwLDgxLDg4LDEyNCwwLAotICAgIDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMjQsMCwwLDEwNiw4LAotICAgIDAsMTA2LDExLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDg3LDEwMCw2LDAsCi0gICAgMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw2LDAsODMsNDEsNywxMjIsMTg1LAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCi0gICAgNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywKLSAgICAxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAotICAgIDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwKLSAgICAxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwKLSAgICAxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDg0LDAsMCwwLDExNCwyOSwKLSAgICAwLDAsMCw4NCwxMjIsMjMsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTAwLAotICAgIDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwzNywxMTQsNzAsNzgsNDEsCi0gICAgMTIsMTE0LDg1LDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsCi0gICAgMTE0LDg2LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LAotICAgIDk2LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsODcsMCwwLDAsMjE4LDcsCi0gICAgOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTQsOTAsMCwwLDAsMjE4LDcsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCw5NywwLDAsMCwxOTIsMCwwLDAsMTE1LDMyLDAsMCwwLDAsNiwKLSAgICAxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LDEsCi0gICAgNCwxLDEyLDEsMTksMSwxOCwxLDI0LDIsMTMsMSwyMSwyLDEyMiwxOSwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTY1LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLDE0MywKLSAgICAxMzgsMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsMTE0LAotICAgIDUyLDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNyw0LDAsMTE1LDczLDAsCi0gICAgMTE2LDYsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsNSwwLDEwMCwzLDAsCi0gICAgNTYsMiw5NSw1LDAsMTI0LDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDIsCi0gICAgMCwxMTQsMTU1LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDMsMCwxMjQsMCwwLAotICAgIDEwNiw3LDAsMTE0LDE1NSwwLDEyNCwwLDAsNCwxMDYsNywwLDEwMCwzLDAsCi0gICAgNTYsMiw5NSw3LDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsCi0gICAgMCwxLDExMywxNTUsMCwxMTAsMCwwLDg3LDEwMCwwLDAsODEsODgsMTAwLDAsCi0gICAgMCw4Myw0MSw0LDc4LDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsODQsMCwwLDAsMTE0LDI5LDAsMCwwLAotICAgIDQxLDEwLDExNCw4NSwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDg2LDAsMCwKLSAgICAwLDExNCw4OCwwLDAsMCwyMTgsMTIsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDExNCw4OSwwLDAsMCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LAotICAgIDExNiwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDkwLDAsMCwwLDExNCw4NywKLSAgICAwLDAsMCwxMTQsOTgsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDk1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCw5OCwwLDAsMCwyMTcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDAsMSwxMiwxLDEwLDEsMTUsMSwxNSwxLDIxLDEsMTUsMSwxNSwKLSAgICAxLDksMSw5LDEsMTUsMSwxMjIsMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsCi0gICAgMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsNDcsMCwKLSAgICAwLDAsMTE0LDY3LDAsMCwwLDExNCw0OCwwLDAsMCw0MSwxLDExNCw3MSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjMwLDAsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LAotICAgIDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwKLSAgICA1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5NywKLSAgICAwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsODMsMCwwLDAsMTY2LDAsMCwwLDExNSwxMiwwLDAsMCwxMiwKLSAgICA0LDYsMiwxMiw4LDEyLDEyLDEyLDI1LDEyLDEzLDExNCw4MywwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSw3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLAotICAgIDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwKLSAgICAxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsCi0gICAgNDEsMTEsMjE4LDE2LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc2LDExMSw5OSwxMDcsMTIyLDg2LDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDk1LAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLDExNywxMDUsMTE4LAotICAgIDk3LDEwOCwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLAotICAgIDMyLDk4LDExNywxMDUsMTA4LDEwMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwxMTcsMTE2LDEwLAotICAgIDMyLDMyLDMyLDMyLDEwOSwxMTcsMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsCi0gICAgODQsMCwwLDAsNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwwLDAsCi0gICAgMjM4LDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI1LDk1LAotICAgIDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCi0gICAgMCwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLAotICAgIDAsMTAwLDIsMCw4Myw0MSwzLDc4LDExNCwyOSwwLDAsMCw4NCw0MSwxLAotICAgIDExNCw4OSwwLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsOTcsMCwwLDAsCi0gICAgMjQyLDAsMCwwLDExNSw0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDksMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMzAsMCwKLSAgICAxMTYsMSwwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LAotICAgIDAsMCw0LDEwNiwwLDAsMTAwLDMsMCw1NiwyLDk1LDAsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDQsNzgsMTE0LDg0LDAsMCwwLDEyMiwzMSw5OSw5NywxMTAsMTEwLAotICAgIDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwKLSAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsMjksMCwwLDAsCi0gICAgNDEsMiwxMTQsODksMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDEsMTE0LDcxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw5OCwwLDAsMCwyNDYsMCwwLDAsMTE1LDYsMCwwLDAsCi0gICAgMCwxLDE1LDEsMTUsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMiw3OCwxMjIsMjgsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCisgICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKKyAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAorICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAorICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCisgICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAorICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKKyAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKKyAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAorICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCisgICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAorICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAorICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAorICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCisgICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCisgICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCisgICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKKyAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKKyAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCisgICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCisgICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKKyAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAorICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAorICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCisgICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCisgICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAorICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAorICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAorICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAorICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKKyAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAorICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKKyAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKKyAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCisgICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAorICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCisgICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCisgICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAorICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCisgICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAorICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCisgICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKKyAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAorICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAorICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCisgICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKKyAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAorICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCisgICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCisgICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCisgICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKKyAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCisgICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAorICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCisgICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCisgICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCisgICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKKyAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCisgICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAorICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKKyAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAorICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKKyAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCisgICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCisgICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCisgICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKKyAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCisgICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKKyAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCisgICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCisgICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCisgICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAorICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKKyAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKKyAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCisgICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAorICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCisgICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAorICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAorICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKKyAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAorICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAorICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCisgICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCisgICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKKyAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCisgICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKKyAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKKyAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCisgICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKKyAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAorICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKKyAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKKyAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAorICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKKyAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAorICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKKyAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCisgICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAorICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCisgICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAorICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCisgICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAorICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKKyAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCisgICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAorICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKKyAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCisgICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKKyAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCisgICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAorICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKKyAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKKyAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAorICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAorICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAorICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKKyAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCisgICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKKyAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKKyAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAorICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKKyAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKKyAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKKyAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCisgICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCisgICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKKyAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKKyAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAorICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAorICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCisgICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKKyAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAorICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCisgICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKKyAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAorICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKKyAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCisgICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKKyAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAorICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCisgICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAorICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAorICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAorICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAorICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCisgICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKKyAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAorICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAorICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAorICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCisgICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKKyAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAorICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAorICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAorICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAorICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKKyAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKKyAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCisgICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAorICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKKyAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAorICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCisgICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCisgICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAorICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCisgICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAorICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKKyAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCisgICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKKyAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCisgICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKKyAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAorICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCisgICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAorICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKKyAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKKyAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAorICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAorICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCisgICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCisgICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCisgICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAogICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDQ3LDAsMCwwLDExNCw2NywwLDAsMCwKLSAgICAxMTQsNDgsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDEwMSwwLDAsMCwKLSAgICAyNTEsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw2OCwxMTcsCi0gICAgMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LAotICAgIDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw4LDExNCw1NywwLDAsMCwxMTQsNTYsCi0gICAgMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMTE0LDk3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTAxLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCwxMDIsMCwwLDAsMjM0LDAsMCwwLDExNSwxMCwKLSAgICAwLDAsMCwxMiwyLDYsMiwxMiw0LDEyLDQsMTIsNSwxMTQsMTAyLDAsCi0gICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNjQsMCwwLDAsMTE1LDUyLDAsMCwwLDEwMSwwLDAsOTAsCi0gICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwKLSAgICAwLDkwLDMsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsCi0gICAgMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsODMsCi0gICAgNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LAotICAgIDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwKLSAgICAxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsMTI0LDAsMCw5NSwKLSAgICAxLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDcwLDAsMCwwLAotICAgIDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLDIsMTE0LDcxLDAsMCwwLDExNCw2NywKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsMSwxLDAsMCwxMTUsNCwwLDAsMCwKLSAgICAwLDEsOSwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKLSAgICAxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSwKLSAgICA5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNTMsMCwwLDAsMTIyLDIyLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDIsMCwKLSAgICA4NywxMDAsMCwwLDExNiwzLDAsMTA2LDQsMCwxMzEsMCwwLDEsODgsMTI0LAotICAgIDAsMCwxMDYsMiwwLDEwNiw1LDAsMTMxLDAsMCwxLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCw0MSw2LDIxOCwxNiw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsNzAsMCwwLDAsMTE0LDEwNCwwLDAsCi0gICAgMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsCi0gICAgOTUsMTA4LDExMSw5OSwxMDcsMTE0LDk3LDAsMCwwLDQxLDEsMTE0LDcxLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCw3NSwwLDAsMCw1LDEsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAzLDEsMjIsMiwxMSwxLDEyMiwyOCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LAotICAgIDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LAotICAgIDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMSwwLDAsMCw3OSwwLDAsMCwxMTUsMTcsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDk4LDAsMCwwLDQxLDMsCi0gICAgMTE0LDcxLDAsMCwwLDExNCw4MCwwLDAsMCwyMTgsNiwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDMsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw4MSwwLDAsMCwxMiwxLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywKLSAgICAxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLAotICAgIDYsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsCi0gICAgMTE0LDcyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDEwMywwLDAsMCwyNTUsMCwwLDAsMTE1LDYsMCwwLAotICAgIDAsMTIsMiwxMiw0LDEyLDcsMTE0LDEwMywwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCwzLDAsMCwKLSAgICAwLDExNSwxNDIsMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDEyMSwxNywwLDExNiwKLSAgICAwLDAsMTM2LDAsMCwyNSwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiwyLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCw4MywwLDExNiwzLDAsMTM2LDAsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwKLSAgICAxLDAsMTI1LDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzNCwwLDAsMTI1LDIsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDEsMCwKLSAgICAxMjQsMiwwLDEzMSwyLDAsMTE2LDAsMCwxMzYsMCwwLDYwLDExMCwwLDAsCi0gICAgMTI0LDEsMCw4Myw0MSw0LDEyMiwxMDksNzEsMTAxLDExNiwzMiwxMTEsMTE0LDMyLDk5LAotICAgIDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLAotICAgIDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiwKLSAgICA5NywxMDcsMTAxLDExMCw0Niw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMSwwLDAsMCwKLSAgICAxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsCi0gICAgMjE4LDEzLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSw0MSwKLSAgICAxLDExNCwzNiwwLDAsMCw0MSwxLDExNCw2NywwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsMiw5OSw5OCwzMiwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKLSAgICA2Miw0Niw5OSw5OCw0MSw3LDExNCwxMDksMCwwLDAsMTE0LDc5LDAsMCwwLAotICAgIDExNCw4NSwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCw4MywwLDAsMCwyMTgsCi0gICAgOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCwzLDExNCwxMDEsMTAyLDQxLDMsCi0gICAgMTE0LDY3LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDQxLDEsMTE0LDY3LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwxMDUsMCwwLDAsMTgsMSwwLDAsMTE1LDI0LDAsMCwwLDAsNCwKLSAgICA2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwxLDE1LDIsCi0gICAgMTIsMSwxOCwyLDI1LDEsMTE0LDEwNSwwLDAsMCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsCi0gICAgMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDEyMSwxNCwwLDEyNCwxLAotICAgIDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLDE4LDAsNCwxMTYsNCwwLAotICAgIDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LDExMCwxMSwwLDg4LDEyNCwxLAotICAgIDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDk3LDIxLAotICAgIDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLAotICAgIDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLAotICAgIDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsMzIsODQsMTA0LAotICAgIDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLAotICAgIDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwxMTAsMTA1LDExNiwKLSAgICAxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwxMDUsMTE1LDMyLAotICAgIDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDk4LAotICAgIDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwKLSAgICAxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsCi0gICAgMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCwxMDUsMCwwLDAsCi0gICAgMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsCi0gICAgODIsMCwwLDAsMTE0LDk4LDAsMCwwLDQxLDIsMTE0LDY3LDAsMCwwLAotICAgIDExNCw4NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLAotICAgIDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNywxLDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywzLDUsMiwKLSAgICAxMTQsMTEyLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsMSw5Nyw0NiwKLSAgICAxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsMTA4LDExOSw5NywKLSAgICAxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLAotICAgIDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsCi0gICAgMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwzMiwxMDUsMTEwLAotICAgIDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsMTE0LDEwOSw5NywKLSAgICAxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsOTksMTAxLDExNSwKLSAgICAzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LDExNCwxMTEsMTAwLAotICAgIDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwzMiwxMTAsMTExLAotICAgIDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTYsMTE0LDk3LAotICAgIDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTksMTA0LDEwMSwKLSAgICAxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsNCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsODAsMCwwLDAsCi0gICAgOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsCi0gICAgMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLAotICAgIDU3LDEsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTQsMTE0LDAsMCwwLAotICAgIDEwNSwyMzgsMTIsMCwwLDIzMywyLDAsMCwwLDExNCwxMywwLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsOTUsOTUsMTIyLDMsNDYsMTEyLDEyMSwxMjIsNCw0NiwxMTIsMTIxLDk5LDEyMiw0LAotICAgIDQ2LDExMiwxMjEsMTExLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxOTIsMCwwLDAsMTI0LAotICAgIDEsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDI1LDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEwNiwyLDAsMTIsMTEwLDMsMCwxMjQsMSwwLDEyNSwyLDAsMTI0LDIsCi0gICAgMCwxMTQsNDYsMCwxMTYsMywwLDEyNSwzLDAsMTEwLDYsMCwxMTYsNCwwLAotICAgIDEyNSwzLDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSwKLSAgICA0LDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw2LDAsMTAwLDIsMCwxMzEsMSwKLSAgICAwLDkyLDMsMCwxMjUsNiwwLDEyNSw3LDAsMTI1LDgsMCwxMTYsMCwwLAotICAgIDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwwLDEyNCw5LDAsMTAwLDEsMCwxMDcsCi0gICAgOCwwLDExNCwxMzMsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDExMCwwLDAsMTAwLDQsMCwxMDYsMTAsMCwxMjQsNiwwLDExNCwxNTEsMCwKLSAgICAxMjQsNiwwLDExMCwzLDAsMTI0LDgsMCwxMjQsNywwLDEyNCw5LDAsMTI0LAotICAgIDMsMCwxMDAsNSwwLDI1LDEwMyw0LDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsCi0gICAgMTEsMCwxMjQsNCwwLDExNiwxMiwwLDEyNCwxMCwwLDEzMSwzLDAsODMsNDEsCi0gICAgNiw5NywyNDQsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDk5LDQ3LAotICAgIDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAotICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAotICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLAotICAgIDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksCi0gICAgMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLDMyLDExOSwxMDUsMTA4LDEwOCwKLSAgICAzMiw5OCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMTcsMTEwLDEwOCwxMDEsMTE1LDExNSwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsCi0gICAgMTIyLDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTEwLDQ1LDEyMiwxMDEsMTE0LDExMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLAotICAgIDQ2LDExMiwxMjEsMTExLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMDAsMTAxLAotICAgIDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLAotICAgIDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMDUsCi0gICAgMTE2LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTcsMzIsOTgsMTExLDExMSwxMDgsCi0gICAgMTAxLDk3LDExMCwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMzIsMTExLDEwMiwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsCi0gICAgMTIyLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLAotICAgIDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAotICAgIDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDIxOCwxLDQ2LDEyMiwzNiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LAotICAgIDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsCi0gICAgNzgsMTExLDExMCwxMDEsMTE0LDMwLDAsMCwwLDExNCw4NCwwLDAsMCw0MSwxMywKLSAgICAxMTQsNywwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDgsMTExLDExMiwKLSAgICAxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwyMTgsMjMsNjgsNjksNjYsODUsNzEsOTUsNjYsODksCi0gICAgODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMjE4LAotICAgIDI3LDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LDY3LAotICAgIDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNCwzOCwwLDAsCi0gICAgMCwxMTQsMzIsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCi0gICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywKLSAgICAxMDMsMjE4LDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjYsMCwwLDAsMTE0LDI4LDAsMCwwLAotICAgIDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDQxLDExLDExNCwzNSwwLDAsCi0gICAgMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAotICAgIDEwMSwyMTgsNSwxMDAsMTAxLDk4LDExNywxMDMsMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsCi0gICAgMTAxLDExNSwyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzcsMCwwLDAsMjE4LDQsOTgsCi0gICAgOTcsMTE1LDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLDExNSwxMTYsOTAsMywKLSAgICAxMTYsOTcsMTAzLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxODEsCi0gICAgMSwwLDAsMTE1LDIyLDAsMCwwLDAsMTMsMzEsMSw2LDEsOSwyLAotICAgIDYsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDE1LDEsNDMsMSwxMTQsMTMyLAotICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAotICAgIDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDMzLDAsMTE2LAotICAgIDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDExNiw0LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsCi0gICAgMTE2LDQsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LAotICAgIDMsMCwxMjQsMywwLDExNiw1LDAsMTA3LDMsMCwxMTQsMTA4LDAsMTE2LDYsCi0gICAgMCwxMDAsMywwLDEwNiw3LDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwyLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsOCwwLDEwMCwKLSAgICA0LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDE1MywwLDExNiw2LAotICAgIDAsMTAwLDYsMCwxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEwMCw3LDAsMjUsMTI1LDQsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwKLSAgICA0LDAsMTE2LDExLDAsMTAwLDcsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDgsCi0gICAgOTcsMTIxLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsOTksNDYsNDcsNDYsCi0gICAgMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsCi0gICAgMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLAotICAgIDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsCi0gICAgMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LAotICAgIDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LAotICAgIDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksCi0gICAgNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDMyLDczLDEwMiwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwzMiw4MCw2OSw4MCwKLSAgICAzMiw1MSw0OSw1Miw1NSwzMiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQ0LDMyLDg2LDk3LAotICAgIDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLAotICAgIDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiwKLSAgICA3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLAotICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsCi0gICAgMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsCi0gICAgMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAotICAgIDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDExMSwKLSAgICAxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsOTksCi0gICAgMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDExNiwwLDAsCi0gICAgMCwxMTQsMTE1LDAsMCwwLDEyMiwyOCwxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDUwLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEyMywzMywxMTQsMTI1LDExNCw4NCwwLDAsMCw0MSwxMiwxMTQsNywwLDAsMCwKLSAgICAxMTQsMTIxLDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCi0gICAgMzgsMCwwLDAsMTE0LDEyNCwwLDAsMCwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0NywwLDAsMCwxMTQsODksMCwwLDAsMjE4LAotICAgIDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjgsMCwwLDAsMjE4LAotICAgIDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLAotICAgIDQxLDUsMTE0LDM1LDAsMCwwLDExNCwxMjcsMCwwLDAsOTAsMTYsMTEyLDEyMSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5MCw3LAotICAgIDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCwxMyw5OCw5NywxMTUsMTAxLDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LAotICAgIDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSwyMDgsMSwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsOSwxOCwxLDE1LDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE4LAotICAgIDEsMjEsMSw5LDEsMTUsMSwxOSwxLDExNCwxMzYsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMTIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2NCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMDAsMSwwLDEwNywyLDAsMTE0LDIyLDAsMTAwLDIsMCw4MywxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTAwLDMsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLAotICAgIDEyNSwyLDAsMTI1LDMsMCwxMjQsMSwwLDEyLDExNSw4MSwwLDEyNCwzLDAsCi0gICAgMTA2LDIsMCwxMzEsMCwwLDEwMCw3LDAsMTAwLDgsMCwxMzMsMiwwLDI1LAotICAgIDEwMCw2LDAsMTA3LDMsMCwxMTQsODUsMCwxMjQsMCwwLDgzLDEyMSwxNiwwLAotICAgIDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw0LDAsODcsMTEwLDQwLDAsCi0gICAgNCwxMTYsNCwwLDExNiw1LDAsMTAyLDIsMCwxMDcsMTAsMCwxMTQsMTQzLDAsCi0gICAgMSwxLDEsMTI0LDAsMCwxMDAsMiwwLDEwMCw5LDAsMTMzLDIsMCwyNSwKLSAgICAxMjUsNCwwLDg5LDExMCwxLDAsODgsMTE2LDYsMCwxMjQsNCwwLDEzMSwxLAotICAgIDAsMTE0LDE2MCwwLDEyNCw0LDAsODMsMTI0LDAsMCw4Myw0MSwxMCwxMjIsMTg4LAotICAgIDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLAotICAgIDk3LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsMTA1LAotICAgIDEwMiwzMiwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsNDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLAotICAgIDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMiwxMTcsMTE0LDEwMSwxMDgsMTIxLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCwxMTUsNDUsOTksMTExLDEwOSwxMTIsCi0gICAgOTcsMTE2LDEwNSw5OCwxMDUsMTA4LDEwNSwxMTYsMTIxLDMyLDEwMiwxMTEsMTE0LDEwLDMyLDMyLAotICAgIDMyLDMyLDgwLDEyMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDk1LDY5LDEyMCwxMDEsOTksNjcsCi0gICAgMTExLDEwMCwxMDEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4NywxMDUsMTE2LDEwNCw3MCwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsNDAsNDEsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA2NywzMiw2NSw4MCw3Myw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsODQsMCwwLAotICAgIDAsNzgsMTE0LDExNiwwLDAsMCwyMzMsMywwLDAsMCwxMTQsMjksMCwwLAotICAgIDAsOTAsMiwxMTIsMTIxLDIzMywyNTMsMjU1LDI1NSwyNTUsMjMzLDI1NSwyNTUsMjU1LDI1NSwxMTQsCi0gICAgMTM5LDAsMCwwLDQxLDcsMTE0LDMxLDAsMCwwLDExNCwzMiwwLDAsMCwKLSAgICAyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCwxMzYsMCwwLDAsMTE0LDEyMywwLDAsCi0gICAgMCwxMTQsMTMzLDAsMCwwLDExNCw0NCwwLDAsMCw0MSw1LDIxOCwxMyw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTMwLDAsMCwKLSAgICAwLDExNCwzNiwwLDAsMCw5MCw5LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCi0gICAgMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNSw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSwyMzEsMSwKLSAgICAwLDAsMTE1LDIwLDAsMCwwLDAsNywxOCwxLDQsMSwyNCwxLDM1LAotICAgIDEsNCwxLDMsMSwxNiwxLDE5LDEsMjEsMSwxMTQsMTQzLDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw2MCwwLDAsMCwxMjEsMTksMCwxMTYsMCwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMDYsMSwwLDEyNSwxLDAsODcsMTEwLDI0LDAsCi0gICAgNCwxMTYsMiwwLDEwNywxMCwwLDExNCw0NSwwLDEsMSwxLDEwMCwxLDAsCi0gICAgMTI1LDEsMCw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDIsMCw3OSwxMjUsCi0gICAgMSwwLDEyNCwxLDAsODMsNDEsMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsCi0gICAgOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTEyLDEwMSwxMTQsCi0gICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDE4MiwxLAotICAgIDAsMCwyMzMsMTI4LDAsMCwwLDQxLDMsMTE0LDM5LDAsMCwwLDExNCw0MSwKLSAgICAwLDAsMCwxMTQsNDAsMCwwLDAsNDEsMiwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxMCw5NSw5OSw5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDI1MCwKLSAgICAxLDAsMCwxMTUsMTIsMCwwLDAsMCwyLDMsMSwxOSwxLDEzLDEsCi0gICAgMTEsMywxMCwxLDExNCwxNDUsMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLAotICAgIDExNSwxMDUsMTE2LDEyMSwxMTQsMjksMCwwLDAsOTksMSwwLDAsMCwxLDAsCi0gICAgMCwwLDMsMCwwLDAsNCwwLDAsMCw3MSwwLDAsMCwxMTUsODEsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsCi0gICAgNSwwLDExNCw3NywwLDEyNCwwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLAotICAgIDAsMTE1LDQ2LDAsMTAwLDMsMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTEwLDAsCi0gICAgMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMiwwLDE0MCwwLDAsCi0gICAgMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsMTMxLDEsMSwxLDExMCwwLDAsCi0gICAgMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwxMTYsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwzMiwxMTUsMTE2LDEwMCwKLSAgICAxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSw4NCw3Miw3OSw3OCwKLSAgICA4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwxMTcsMTE0LDExMCwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMzIsMTIyLDIsMzUsMzIsMTE0LDU0LDAsMCwwLDc4LDQxLDIsMTE0LDE0NywwLAotICAgIDAsMCwxMTQsMTQ4LDAsMCwwLDQxLDcsMTE0LDcsMCwwLDAsMTE0LDExNywKLSAgICAwLDAsMCwyMTgsNywxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTQsOSwwLDAsCi0gICAgMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw0NywwLDAsMCwyMTgsNiwxMTUsCi0gICAgMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLAotICAgIDExNCwxNDYsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwKLSAgICAxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw2LDIsMCwwLDExNSwKLSAgICA4LDAsMCwwLDAsMiwxOCwxLDE1LDEsMTMsMSwxMTQsMTUzLDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwKLSAgICAwLDAsMywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLDEsMCwxMzUsMCwKLSAgICAwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLDAsMTI1LDEsMCwKLSAgICAxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCwKLSAgICA4Myw0MSw0LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTE0LAotICAgIDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwzMiwxMDQsOTcsMTEwLDEwMCwKLSAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTQsCi0gICAgMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsNDAsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5NSwKLSAgICAxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAotICAgIDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LAotICAgIDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTAxLDEwMCwzMiw5NywKLSAgICAxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiw5NywxMDUsMTA4LDExNSwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDUsCi0gICAgMCwwLDAsMzEsMCwwLDAsMTE1LDgzLDAsMCwwLDEyNCwxLDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwyNCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwKLSAgICAwLDExMCw0MCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDY0LDAsMTE2LDEsMCwxMDAsMSwwLDEyNCwxLDAsMjIsMTAwLDIsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsMiwwLDgzLDQxLAotICAgIDMsNzgsMTIyLDIzLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDExMCwxMTEsCi0gICAgMTE2LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDExNCw2NywwLDAsMCwKLSAgICA0MSwyLDExNCw2NywwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LDY3LDAsMCwwLAotICAgIDExNCw4MCwwLDAsMCwxMTQsMTA4LDAsMCwwLDQxLDEsMjE4LDYsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE5LAotICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLAotICAgIDExMiwxMDEsMTE0LDIyLDIsMCwwLDExNSwxMCwwLDAsMCwwLDEsMTIsMSwKLSAgICAxMiwxLDE1LDEsMjUsMSwxMjIsNDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDk5LDEwNCwKLSAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAotICAgIDQxLDEsMTE0LDY1LDAsMCwwLDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsMTU2LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDE1NSwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyMTgsMTEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTQsMiwwLDAsMTE1LDYsMCwwLDAsMCw4LDIxLDYsMTMsMSwKLSAgICAxMTQsMTU3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LAotICAgIDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLAotICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLAotICAgIDAsODMsNDEsMywxMjIsNDksNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsCi0gICAgMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsCi0gICAgMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLDAsCi0gICAgMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNywwLDExNCw0NSwwLAorICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCisgICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAorICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAorICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKKyAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKKyAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCisgICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKKyAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAorICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCisgICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKKyAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKKyAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKKyAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCisgICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAorICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKKyAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAorICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAorICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAorICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLDAsMCwxMjQsMCwwLAorICAgIDQsMTA2LDAsMCwxMDAsMSwwLDU1LDIsOTUsMCwwLDEwMCwyLDAsODMsCisgICAgNDEsMyw3OCwxMTQsNDUsMCwwLDAsODQsNDEsMSwxMTQsMzgsMCwwLDAsCisgICAgNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDQ2LDAsMCwwLDE0NCwwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDEsMTUsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAorICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDEsMCwxMDAsMiwKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMywKKyAgICAwLDU2LDIsOTUsMCwwLDEwMCwwLDAsODMsNDEsNCw3OCwxMTQsMzMsMCwKKyAgICAwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsCisgICAgMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDExNCw0NSwwLDAsMCw0MSwyLDExNCwzOCwwLDAsMCwxMTQsCisgICAgNDgsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ3LDAsMCwwLDE0OCwKKyAgICAwLDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxMiwxLDEyMiwyNCwKKyAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCisgICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCisgICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKKyAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAorICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAorICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCisgICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLAorICAgIDgsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCisgICAgNDcsMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTMsMCwKKyAgICAwLDAsMTM2LDAsMCwwLDExNSwxMCwwLDAsMCwxMiwyLDYsMiwxMiwKKyAgICA0LDEyLDQsMTIsNSwxMTQsNTMsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLDAsMTAwLAorICAgIDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsCisgICAgMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxOCw5NSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLAorICAgIDAsMTAwLDAsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsCisgICAgNzgsNDEsMiwxMTQsMTgsMCwwLDAsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsCisgICAgMiwxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNTksCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjcsOTUsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCwKKyAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLAorICAgIDAsMCwwLDEyMiwyMiwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAxLDAsMTI0LDAsMCw5NSwyLDAsODcsMTAwLDAsMCwxMTYsMywwLDEwNiwKKyAgICA0LDAsMTMxLDAsMCwxLDg4LDEyNCwwLDAsMTA2LDIsMCwxMDYsNSwwLAorICAgIDEzMSwwLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsMTYsOTUsCisgICAgMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LAorICAgIDE4LDAsMCwwLDExNCw1NSwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwyMTgsCisgICAgMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDQ2LDAsCisgICAgMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMywwLDAsMCwxNjMsMCwwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwxLDMsMSwyMiwyLDExLDEsMTIyLDI4LAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLAorICAgIDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDc5LDAsMCwKKyAgICAwLDExNSwxNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMzEsCisgICAgMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDU1LDAsMCwKKyAgICAwLDExNCw0NywwLDAsMCw0MSwzLDExNCwxOSwwLDAsMCwxMTQsMjksMCwKKyAgICAwLDAsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwwLDAsMCwxNzAsMCwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LAorICAgIDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLAorICAgIDAsMCwwLDExNCwyLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwKKyAgICAwLDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTQsMCwwLDAsCisgICAgMTU3LDAsMCwwLDExNSw2LDAsMCwwLDEyLDIsMTIsNCwxMiw3LDExNCwKKyAgICA1NCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCwzLDAsMCwwLDExNSwxMzksMCwwLDAsMTAwLDEsCisgICAgMCwxMjUsMSwwLDEyMSwxNywwLDExNiwwLDAsMTM2LDAsMCwyNSwxMzEsMCwKKyAgICAwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwKKyAgICA0MywwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMSwwLAorICAgIDEwNyw4LDAsMTE0LDEzNSwwLDExNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICA4MywwLDExNiwzLDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTEwLDEyLAorICAgIDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMzUsMCwwLAorICAgIDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTI1LDIsMCwxMTYsCisgICAgNSwwLDEwNiw2LDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE2LDAsCisgICAgMCwxMzYsMCwwLDYwLDEyNCwxLDAsODMsNDEsNCwxMjIsMTA5LDcxLDEwMSwxMTYsCisgICAgMzIsMTExLDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsCisgICAgMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLAorICAgIDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwKKyAgICAxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwxOSwwLDAsMCwKKyAgICAxMTUsMTEsMCwwLDAsMTE2LDAsMCwxMzYsMCwwLDYxLDEwMCwwLDAsODMsCisgICAgNDEsMSw3OCw0MSwxLDIxOCwxMyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsNDEsMSwyMTgsMSw5NSw0MSwxLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyLDk5LDk4LDE5MCwwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDQ2LDYwLDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw0MSw3LDExNCw1OSwwLDAsMCwxMTQsMjgsCisgICAgMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsMzIsMCwKKyAgICAwLDAsMjE4LDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLAorICAgIDEwMiw0MSwzLDExNCwxNSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDYxLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDU2LDAsMCwwLDE3NiwwLDAsMCwxMTUsMjQsMCwwLAorICAgIDAsMCw0LDYsMSwzLDEsMTcsMSwxMywxLDUsMSwxMiwxLDEyLAorICAgIDEsMTUsMiwxMiwxLDE4LDIsMjIsMSwxMTQsNTYsMCwwLDAsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDcxLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwwLDAsMSwxMjEsMTQsCisgICAgMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDAsMCwxLDg3LDExMCwxOCwwLDQsCisgICAgMTE2LDQsMCwxMDcsMTAsMCwxMTQsNTYsMCwxLDEsMSw4OSwxMTAsMTEsMCwKKyAgICA4OCwxMjQsMSwwLDEwNiw1LDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDEsCisgICAgMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsCisgICAgMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsCisgICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsMTA1LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTYsMzIsCisgICAgMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsCisgICAgMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLAorICAgIDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLAorICAgIDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsNDEsNiwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwKKyAgICAwLDAsMTE0LDMxLDAsMCwwLDExNCw0NywwLDAsMCw0MSwyLDExNCwxNSwKKyAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywKKyAgICAxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk1LDAsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLAorICAgIDMsNSwyLDExNCw2MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCwzLDAsMCwwLDc5LDAsMCwwLDExNSwxMywwLAorICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxNDIsMCwwLDgzLDQxLAorICAgIDEsOTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk3LAorICAgIDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwzMiwxMTUsMTAxLDExMywKKyAgICAxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDExNiwKKyAgICAxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw5NywzMiw5OSwKKyAgICA5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LAorICAgIDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwNSwxMTYsCisgICAgMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiw5NywzMiwxMTAsMTExLAorICAgIDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwzMiwxMTIsMTA4LDk3LAorICAgIDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDExNiwKKyAgICAxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywxMTAsMTE2LDEwMSwxMDAsCisgICAgMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsCisgICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMCwxMDMsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDEsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE0LDEwLDAsMCwwLDQxLDMsMjE4LDEsMTAyLDExNCwyOSwKKyAgICAwLDAsMCw5MCw0LDEwNywxMTksMTAwLDExNSwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwKKyAgICAxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsCisgICAgMTE4LDEwMSwxMDAsMjE0LDAsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTQsNjUsCisgICAgMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSwxMTQsNDUsCisgICAgMCwwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCisgICAgNCwwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCw3MSwwLDEyNCwKKyAgICAwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLDAsMTAwLDMsCisgICAgMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LAorICAgIDAsMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLAorICAgIDEzMSwxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLAorICAgIDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLAorICAgIDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LAorICAgIDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LAorICAgIDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw5MCw0LDEwMiwxMDUsMTA4LDEwMSw3OCwKKyAgICA0MSwyLDExNCw2NywwLDAsMCwxMTQsNjgsMCwwLDAsNDEsNywxMTQsMTQsCisgICAgMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LDIxOCw3LDExOCwxMDEsMTE0LDk4LAorICAgIDExMSwxMTUsMTAxLDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwyMTgsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw1MCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw2NiwKKyAgICAwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKKyAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKKyAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCisgICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKKyAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKKyAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCisgICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKKyAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAorICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCisgICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKKyAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKKyAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAorICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCisgICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAorICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKKyAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKKyAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKKyAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKKyAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKICAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMyw3OCwxMjIsMjksCi0gICAgMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsNjcsMCwKLSAgICAwLDAsNDEsNCwxMTQsNywwLDAsMCwyMTgsMjAsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNCwKLSAgICAxNTQsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsCi0gICAgMTEwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyNSw5NSwxMTQsMTAxLAotICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDM0LDIsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMSwxNSwxLDE4LDEsMTIsMSwxMjIsNTIsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LAotICAgIDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwKLSAgICA2NSwwLDAsMCw0MSwyLDExNCwxNjAsMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCw0MSwxLDExNCwxNjAsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMjE4LDE3LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDEwNSwxMTAsMzIsMiwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LAotICAgIDUsMTMsMSwxMTQsMTYyLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwKLSAgICAwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwKLSAgICAwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwKLSAgICAxLDEyNCwxLDAsODMsNDEsMywxMjIsNDcsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LAotICAgIDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKLSAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0NSwKLSAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwzLDc4LDEyMiwKLSAgICAyNywxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwKLSAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw2NywwLDAsCi0gICAgMCw0MSw0LDExNCwxMDYsMCwwLDAsMjE4LDksMTA1LDExNSw5NSwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwxMTQsMTU0LDAsMCwwLDExNCw0NywwLDAsMCw0MSwyLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDQxLDEsMTE0LDE2MCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjQsOTUsMTE0LDEwMSwxMTMsCi0gICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LAotICAgIDExMiwxMTIsMTAxLDExNCw0NSwyLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsCi0gICAgMSwxOCwxLDEyLDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsCi0gICAgOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsNjUsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTYwLDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsNDEsMSwxMTQsMTYwLDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQzLAotICAgIDIsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDE2NSwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4NywwLDAsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMiwwLDEyNSwKLSAgICAzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDgzLDAsMTE2LDEsCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgzLDAsMTAwLDIsMCwxMjUsNCwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LDAsMTI0LDMsMCwxMDAsCi0gICAgMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwwLDEsMTEwLDAsMCwKLSAgICAxMjQsMiwwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMyw5NywxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLDEwNSwxMTAsCi0gICAgMzIsMTAyLDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSwKLSAgICA1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDExNCw4NCwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMzEsMCwwLDAsMjE4LDksOTUsMTE5LDk3LAotICAgIDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDExNCw0NywwLDAsCi0gICAgMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAotICAgIDQxLDUsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMjE4LDYsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLAotICAgIDEwOSwxMTUsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE1LDEwNCwxMDUsMTA5LDU0LDIsMCwwLDExNSwxMCwwLDAsMCwwLDEwLAotICAgIDIxLDEsMjQsMSw2LDEsMzIsMSwxMTQsMTczLDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCw1LDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDkzLDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDEzMSwyLDAsMTI1LDIsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTE2LDIsMCwxMDYsMywwLDEwNyw2LDAsMTE0LDc5LAotICAgIDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMjUsMTI1LDQsMCwxMjQsMywKLSAgICAwLDEwNiw0LDAsMTI0LDQsMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsMywKLSAgICAwLDEyNCwxLDAsMjUsODMsMTI0LDMsMCwxMDYsNSwwLDEzMSwwLDAsODMsCi0gICAgMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMDUsMTE2LAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwKLSAgICAxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwKLSAgICA0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwKLSAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNiwyMTgsMTYsMTE1LDExMiwxMDEsCi0gICAgOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMjE4LDEyLDk1LAotICAgIDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMTE0LDcsMCwwLDAsCi0gICAgMTE0LDczLDAsMCwwLDIxOCw0LDEwMSwxMjAsMTAxLDk5LDIxOCw0LDEwOCwxMTEsOTcsCi0gICAgMTAwLDQxLDUsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMjE4LDQsMTE1LAotICAgIDExMiwxMDEsOTksMjE4LDcsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDIxOCw2LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksNzEsMiwwLDAsMTE1LDE0LDAsMCwwLDAsCi0gICAgNiwxNSwxLDEyLDEsMTUsMSwxMywxLDEzLDEsMTEsMiwxMTQsMTgxLDAsCi0gICAgMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCwxMSwwLDAsMCwxOSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjQzLDEsMCwwLDEwNSwwLDAsMTI1LAotICAgIDQsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzEsMCwxMjQsMiwKLSAgICAwLDEyNCw0LDAsMTAwLDIsMCw2MCwxMTAsNiwwLDEwMCwzLDAsMTI1LDIsCi0gICAgMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjIsMCwxMjQsMywwLAotICAgIDEyNCw0LDAsMTAwLDQsMCw2MCwxMTAsMCwwLDEyNCwwLDAsMTAwLDEsMCwKLSAgICAxMDAsNSwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMCwwLDEwMCw1LDAsCi0gICAgMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDAsMCwxMDAsNiwwLAotICAgIDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDAsMCwKLSAgICAxMDcsMywwLDExNCwxNjgsMCwxMDAsOCwwLDEwNiwxLDAsMTI0LDIsMCwxMjQsCi0gICAgNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTMxLDEsCi0gICAgMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsNCwwLDE0MSwxLDAsMTMwLDEsCi0gICAgMCwxMTAsMTE2LDAsMTE2LDQsMCwxMjQsNiwwLDEzMSwxLDAsMTAwLDUsMCwKLSAgICAxMDcsMywwLDExNCwyMjYsMCwxMDAsOSwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsCi0gICAgMSwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTYsCi0gICAgNSwwLDEyNCw4LDAsMTMxLDEsMCwxMzAsMSwwLDExMCw1OCwwLDExNiw0LAotICAgIDAsMTI0LDcsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjgsMSwKLSAgICAxMDAsMTAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwKLSAgICAyLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTE2LDUsMCwxMjQsOCwwLDEzMSwKLSAgICAxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsOSwKLSAgICAwLDExNCwyMjksMSwxMjEsMjAsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLDExLDAsCi0gICAgMjUsMTMxLDEsMCwxMjUsOSwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsCi0gICAgMTAsMCwxMTQsODAsMSwxLDEsMSw4OSwxMTAsNjIsMCw4OCwxMTYsOCwwLAotICAgIDEyNCw2LDAsMTMxLDEsMCwxMjQsOSwwLDEwNywzLDAsMTE0LDE0MiwxLDEwMCwKLSAgICAxMiwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsCi0gICAgMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LDQsCi0gICAgMCwxNDEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjEsMTgsMCwxMjQsMSwwLAotICAgIDEwMCwxMywwLDI1LDEwMCwxNCwwLDY0LDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsCi0gICAgMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTgwLDEsMSwxLDEsODksMTEzLDIyOSwxLAotICAgIDg4LDExNiw4LDAsMTI0LDcsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsCi0gICAgMTE0LDIyOSwxLDExNiwzLDAsMTAwLDEyLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwKLSAgICAxLDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTEzLDIyOSwxLDExMCwwLAotICAgIDAsMTI0LDAsMCwxMDAsNywwLDEwMCwxLDAsMTMzLDIsMCwyNSw4Myw0MSwKLSAgICAxNSw5NywxMjIsMSwwLDAsODYsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCw0NSwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDQxLDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwKLSAgICAxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwKLSAgICAxMDgsMTAxLDQwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLAotICAgIDExNiwxMDQsMTAxLDExNCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LAotICAgIDExNCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLAotICAgIDk5LDEwMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywKLSAgICAxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LAotICAgIDExNiwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCi0gICAgMTAxLDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsCi0gICAgMTExLDMyLDk4LDEwMSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDc4LDExNCw2NywwLDAsMCwxMjIsMTAsNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKLSAgICAxMDEsNjIsMTE0LDM1LDAsMCwwLDExNCwxMiwwLDAsMCwyMzMsOCwwLDAsCi0gICAgMCwyMzMsMTIsMCwwLDAsMTIyLDMwLDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSwKLSAgICA5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsCi0gICAgNTgsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDQzLDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsCi0gICAgNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLAotICAgIDEwMywzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMTIyLDQ4LDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsCi0gICAgMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsCi0gICAgMTA1LDEyMiwxMDEsMzIsMTExLDEwMiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsCi0gICAgMzIsMTIzLDMzLDExNCwxMjUsMjE4LDUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLAotICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsCi0gICAgMTAyLDExMSwxMTQsMzIsMTIzLDMzLDExNCwxMjUsMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLAotICAgIDAsMCwwLDI1NSwxMjcsMjU1LDEyNywzLDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsCi0gICAgNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsMTE0LDQ3LDAsMCwwLDExNCwxNTMsCi0gICAgMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMzEsMCwwLDAsMjE4LDgsNjksCi0gICAgNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLAotICAgIDAsMTE0LDE5LDAsMCwwLDQxLDExLDExNCw1MywwLDAsMCwyMTgsMTIsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE0LDY3LDAsMCwwLAotICAgIDExNCwzNSwwLDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwKLSAgICAxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwxMTYsCi0gICAgMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsMTA1LAotICAgIDEyMiwxMDEsMTE0LDE1MiwwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKLSAgICAxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsCi0gICAgMTIyLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCw4NywyLDAsMCwKLSAgICAxMTUsNzYsMCwwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwxMiwKLSAgICAxLDEzLDEsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEwLDEsMTgsCi0gICAgMSwxOCwxLDE1LDEsMTAsMSwxNSwxLDE4LDEsMTUsMSwxMCwxLDE1LAotICAgIDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsMTAsCi0gICAgMSwxOCwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwxNSwKLSAgICAxLDExNCwxOTEsMCwwLDAsOTksNCwwLDAsMCwwLDAsMCwwLDUsCi0gICAgMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTE1LDAsMCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCwxMTYsCi0gICAgMiwwLDEyNCw0LDAsMTE2LDMsMCwxMzEsMiwwLDExNCw3OCwwLDExNiw0LAotICAgIDAsMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsMywwLDEwMCwyLAotICAgIDAsMTA3LDksMCwxMTQsNzQsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwKLSAgICAxMjQsMywwLDEzMSwyLDAsMSwxMTAsMCwwLDEyNCw0LDAsODMsMTE2LDcsCi0gICAgMCwxMDAsMywwLDEwNiw4LDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsCi0gICAgMTI0LDEsMCwxMDAsNSwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwKLSAgICAyLDAsODMsNDEsNiwxMjIsNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsCi0gICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDAsNDEsNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsCi0gICAgNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsCi0gICAgMTIzLDMzLDExNCwxMjUsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSw5LAotICAgIDIxOCw3LDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsOTAsNSwxMDgsMTExLDk3LDEwMCwxMTUsCi0gICAgMjE4LDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDEwLDk1LDk5LAotICAgIDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUzLDAsMCwwLDExNCwxMDYsMCwKLSAgICAwLDAsOTAsMTYsOTUsMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTQsMTU0LDAsMCwwLDExNCw0NywwLDAsMCw0MSw1LAotICAgIDExNCw1MywwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsCi0gICAgMTQyLDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwKLSAgICAxMDUsMTA4LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxNDIsMiwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDAsMiwxNSwxLDE1LDEsMTMsMSwxMiwxLDE5LAotICAgIDEsNCwyLDE4LDEsMTE0LDE5NiwwLDAsMCwxMTQsODQsMCwwLDAsOTksCi0gICAgMywwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNzYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDMsMCwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwxMjQsMSwKLSAgICAwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywKLSAgICAwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwKLSAgICAwLDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwKLSAgICAxLDEyNCwzLDAsODMsNDEsMSwxMjIsODAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCi0gICAgMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwKLSAgICAxMTAsMTE2LDExMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDExNywxMTYsMzIsMTE2LDExMSwzMiwKLSAgICA5NywzMiw5OCwxMjEsMTE2LDEwMSw0NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDQxLDYsMjE4LDksOTgsMTIxLDExNiwKLSAgICAxMDEsOTcsMTE0LDExNCw5NywxMjEsMTE0LDE4NiwwLDAsMCwyMTgsNiwxMDEsMTIwLDExNiwKLSAgICAxMDEsMTEwLDEwMCwxMTQsMTcsMCwwLDAsMTE0LDE5MiwwLDAsMCw5MCw1LDEwMCwKLSAgICAxMTcsMTA5LDExMiwxMTUsNDEsNCwxMTQsMTk1LDAsMCwwLDExNCwxODQsMCwwLDAsCi0gICAgMTE0LDE5MCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDAsMTAxLAotICAgIDk1LDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTU0LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDMsMTIsMSwxOSwxLDE5LDEsMjIsMSwxMTQsCi0gICAgMTk5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg5LDAsMCwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMDgsMCwwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMDYsMywwLDEyNSwyLDAsMTI0LDEsMCwxMDYsCi0gICAgNCwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiwxLDAsMTA2LDUsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw0LDAsCi0gICAgMTA2LDYsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMDAsMSwwLDI1LAotICAgIDEzMSwxLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsCi0gICAgMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLAotICAgIDExNiwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTEwLDEwNSwKLSAgICAxMTgsMTAxLDExNCwxMTUsOTcsMTA4LDMyLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSwzMiwxMTUsCi0gICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTA1LAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsNDYsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTE0LDg0LDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LAotICAgIDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNDksMCwwLDAsOTAsNyw2NiwxMjEsCi0gICAgMTE2LDEwMSwxMTUsNzMsNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsOTAsCi0gICAgMTUsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsCi0gICAgOTAsMjUsNzMsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LAotICAgIDEwOCwxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LDEwMCwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsNDEsNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsCi0gICAgMTE2LDEwMSwxMTUsMTE0LDIwMCwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMjE4LAotICAgIDgsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsMTE5LDEwOCwxMDUsCi0gICAgMTEwLDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTMsMTAwLDEwMSw5OSwxMTEsMTAwLAotICAgIDEwMSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDE2NCwyLDAsMCwxMTUsMTAsMCwwLAotICAgIDAsMCw1LDEyLDEsMTgsMSwxNSwxLDE4LDEsMTE0LDIwNCwwLDAsMCwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMTUsMSwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEyNSwxLDAsMTE2LDEsMCwxMjQsCi0gICAgMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNzQsMCwxMjEsMTcsMCwxMjQsMSwKLSAgICAwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDExMyw3NCwwLDQsCi0gICAgMTE2LDMsMCwxMDcsMTAsMCwxMTQsNzAsMCwxLDEsMSw4OSwxMTMsNzQsMCwKLSAgICA4OCwxMTAsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMiwwLAotICAgIDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTA3LDAsMSwxLAotICAgIDEsODksMTEwLDI5LDAsODgsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LAotICAgIDEzNiwwLDExNiw2LDAsMTI0LDIsMCwxMzEsMSwwLDEwNiwyLDAsMTMxLDAsCi0gICAgMCw4MywxMjEsMTMsMCwxMjQsMCwwLDEwNiw3LDAsMTI1LDMsMCw4NywxMTAsCi0gICAgMjQsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE3NSwwLDEsMSwxLDEwMCwKLSAgICAzLDAsMTI1LDMsMCw4OSwxMTAsMSwwLDg4LDEyMSwxMywwLDEyNCwwLDAsCi0gICAgMTA2LDgsMCwxMjUsNCwwLDg3LDExMCw1OSwwLDQsMTE2LDUsMCwxMDcsMTAsCi0gICAgMCwxMTQsMjUwLDAsMSwxLDEsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsCi0gICAgMTE0LDIzMCwwLDEwMCw0LDAsMTA2LDksMCwxMjQsMywwLDEzMSwxLDAsODMsCi0gICAgMTAwLDUsMCwxMDYsOSwwLDEyNCwzLDAsMTI0LDEsMCwxMzEsMiwwLDgzLAotICAgIDg5LDExMCwxNywwLDg4LDEwMCw2LDAsMTA2LDksMCwxMjQsMywwLDEyNCw0LAotICAgIDAsMTMxLDIsMCw4MywxMDAsMCwwLDgzLDQxLDcsNzgsMjE4LDEwLDk1LDk1LAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExNCwxMDEsMTEyLDExNCwyNTAsMSw2MywxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksCi0gICAgMzIsMTIzLDMzLDExNCwxMjUsNjIsNDEsMTAsMTE0LDYyLDAsMCwwLDExNCw2MCwwLAotICAgIDAsMCwxMTQsMjA2LDAsMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsCi0gICAgMTExLDExMCwyMTgsOCw5NSw5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwyMTgsMTQsNjUsMTE2LAotICAgIDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTc1LDAsMCwKLSAgICAwLDExNCw1NywwLDAsMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsCi0gICAgMTE0LDQ3LDAsMCwwLDQxLDUsMTE0LDE4MCwwLDAsMCwxMTQsMTcwLDAsMCwKLSAgICAwLDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LAotICAgIDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxNzgsMiwwLAotICAgIDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywxLDE3LDEsCi0gICAgMTMsMSw4LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsMSwxNiw0LAotICAgIDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywxLDEyLDEsCi0gICAgMTMsMiwyMSwyLDExNCwyMTIsMCwwLDAsOTksMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNTIsCi0gICAgMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLAotICAgIDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLDAsMTAwLDQsCi0gICAgMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCwKLSAgICA5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsMTEwLDExNSwxMTYsCi0gICAgOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsCi0gICAgMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDIwOSwwLAotICAgIDAsMCwyMTgsNSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDExNCw3MSwwLDAsMCwKLSAgICAxMTQsMTgwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCw3MiwwLDAsMCwyMTYsMiwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsCi0gICAgMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwwLDExNiwzLAotICAgIDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCw2MCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMjE1LDAsMCwwLDIxOCwxMyw5NSwKLSAgICAxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwyMTQsMCwwLAotICAgIDAsMTE0LDcsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw2NywwLDAsMCwKLSAgICA0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwxMTQsNzUsMCwwLDAsMjIwLDIsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLDExNSwxMTYsOTcsCi0gICAgMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDExMCwKLSAgICAxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsMCwwLDEyMiwKLSAgICAxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsMCwxMzEsMSwKLSAgICAwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwxMjQsMiwwLAotICAgIDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsCi0gICAgNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsMTE2LDYsMCwKLSAgICAxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiw3LDAsMTMxLAotICAgIDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwKLSAgICAxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsCi0gICAgMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwxMTQsCi0gICAgNzYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDc3LDAsMCwwLDIzMCwyLDAsMCwxMTUsMiwwLDAsCi0gICAgMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsCi0gICAgMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsCi0gICAgNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLAotICAgIDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwxMjUsMzIsCi0gICAgMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMjE1LDAsMCwwLDExNCw3OCwKLSAgICAwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwwLDAsMTE0LDY3LDAsCi0gICAgMCwwLDExNCw3OSwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxNzAsMCwwLAotICAgIDAsMTE0LDIxNiwwLDAsMCw0MSwzLDExNCw3MSwwLDAsMCwxMTQsODAsMCwKLSAgICAwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwxMTQsODEsMCwwLDAsMjI3LDIsMCwwLDExNSwKLSAgICAxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsMSwxNywxLAotICAgIDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAorICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsCisgICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAorICAgIDU3LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAorICAgIDc3LDAsMCwwLDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwKKyAgICAxMTQsNzgsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwyMTgsMjQsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKKyAgICAyNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTgsMSw5LAorICAgIDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzksCisgICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKKyAgICA3OSwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjQ0LDAsMCwwLDExNSwKKyAgICA2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDg0LDAsMCwwLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgxLDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsCisgICAgMCwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMSwwLDExNiwxLDAsMTA2LDIsCisgICAgMCwxMDcsNiwwLDExNCw2NywwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLAorICAgIDI1LDEyNSwzLDAsMTE2LDMsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDIsMCwKKyAgICAxLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDI1LDgzLDExNiw0LDAsMTI0LAorICAgIDIsMCwxMzEsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTI4LDc2LDExMSwKKyAgICA5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE1LDEyMSwxMTUsCisgICAgNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsMTA1LDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLAorICAgIDUsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMjE4LDUsOTUsCisgICAgMTAxLDEyMCwxMDEsOTksMjE4LDUsOTUsMTA4LDExMSw5NywxMDAsNDEsNCwxMTQsMTksMCwKKyAgICAwLDAsMTE0LDc4LDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCw2LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMCwxLDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMCw2LDE1LDEsMTUsMSwxMywxLDEzLDEsMTEsMiwxMTQsOTAsMCwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMzUsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDYsMSwwLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEyNSwxLDAsMTE2LDEsMCwKKyAgICAxMjQsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNzEsMCwxMjEsMTcsMCwxMjQsCisgICAgMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDExMCwxOCwwLAorICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNzAsMCwxLDEsMSw4OSwxMTAsMSwKKyAgICAwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCwKKyAgICAxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksCisgICAgMTEwLDIzLDAsODgsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEyNywwLAorICAgIDExNiw2LDAsMTI0LDIsMCwxMzEsMSwwLDgzLDEyMSwxMywwLDEyNCwwLDAsCisgICAgMTA2LDcsMCwxMjUsMywwLDg3LDExMCwyNCwwLDQsMTE2LDUsMCwxMDcsMTAsCisgICAgMCwxMTQsMTY2LDAsMSwxLDEsMTAwLDMsMCwxMjUsMywwLDg5LDExMCwxLAorICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsOCwwLDEyNSw0LDAsODcsMTEwLAorICAgIDU5LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwyNDEsMCwxLDEsMSwxMjQsCisgICAgMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTAwLDQsMCwxMDYsOSwKKyAgICAwLDEyNCwzLDAsMTMxLDEsMCw4MywxMDAsNSwwLDEwNiw5LDAsMTI0LDMsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsODksMTEwLDE3LDAsODgsMTAwLDYsMCwKKyAgICAxMDYsOSwwLDEyNCwzLDAsMTI0LDQsMCwxMzEsMiwwLDgzLDEwMCwwLDAsCisgICAgODMsNDEsNyw3OCwyMTgsMTAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwKKyAgICAyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDI1MCwxLDYzLAorICAgIDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsCisgICAgMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLAorICAgIDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2Miw0MSwxMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsOTIsMCwwLDAsMjE4LAorICAgIDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsCisgICAgMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDIxOCwyMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAorICAgIDExMiwxMTQsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDExNCwxLDAsMCwKKyAgICAwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwxMTQsNTAsMCwwLDAsCisgICAgNDEsNSwxMTQsODksMCwwLDAsMjE4LDYsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsCisgICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDE2LDEsMCwwLDExNSw0NiwwLDAsMCwwLDIsMTgsMSwxNSw0LDMsCisgICAgMSwxNywxLDEzLDEsNSwxLDMsMSwxMywxLDEzLDEsNSwyLDEyLAorICAgIDEsMTAsNCwzLDEsMTMsMSwxMywxLDExLDEsMywxLDEzLDEsMTMsCisgICAgMSwxMiwxLDEzLDIsMjEsMiwxMTQsMTAxLDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDUyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCisgICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywKKyAgICAwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsODMsNDEsOCwyMTgsMTcsOTUsMTA1LAorICAgIDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKKyAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEyNCwwLDAsOTUsMiwwLDEwMCwwLAorICAgIDAsODMsNDEsMSw3OCw0MSwzLDIxOCw3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNCw5NSwwLDAsMCwyMTgsNSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDExNCwxOSwKKyAgICAwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDU0LDEsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLAorICAgIDEsMCwxMjQsMCwwLDEwNiwwLDAsOTUsMSwwLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxMTYsMywwLDEwNiw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw1LDAsCisgICAgNjAsMTAwLDAsMCw4Myw0MSwyLDc4LDg0LDQxLDYsMTE0LDEwNCwwLDAsMCwKKyAgICAyMTgsMTMsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLDEwMywxMTQsCisgICAgMTAzLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDE1LAorICAgIDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMywwLDAsMCw1OCwxLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDQsMTIsMSwxMjIsMjcsOTUsMTA1LDExMCwKKyAgICAxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LAorICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDMsMCwwLDAsMTcsMCwwLDAsNzEsMCwwLDAsMTE1LDEyMSwwLAorICAgIDAsMCwxMjIsMTAxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsCisgICAgMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMSwwLDY4LDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMTQsNzgsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsCisgICAgMTI0LDIsMCwxMDYsNCwwLDYxLDg3LDExMywxMDAsMCw0LDExNiw1LDAsMTA3LAorICAgIDEwLDAsMTE0LDc0LDAsMSwxLDEsODksMTEzLDEwMCwwLDg4LDExMCwyMiwwLAorICAgIDExNiw2LDAsMTAwLDMsMCwxMjQsMiwwLDEwNiw0LDAsMTI0LDIsMCwxMDYsCisgICAgNywwLDEzMSwzLDAsMSw4NywxMDAsMCwwLDEwMCw0LDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDk1LDgsMCw4OCwxMDAsMCwwLDgzLDQxLDUsNzgsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsCisgICAgMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwKKyAgICAwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsMTEzLDMsMCwxMDAsCisgICAgMCwwLDgzLDQxLDEsNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDI0LDAsCisgICAgMCwwLDExNCwyNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsMjYsMCwwLDAsNjgsMSwwLDAsMTE1LAorICAgIDIsMCwwLDAsNiwwLDEyMiw0NSw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKICAgICAxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LAotICAgIDk1LDk1LDc4LDQxLDYsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsMTE0LDcyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsODEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDIxMywwLDAsMCwyMTQsMiwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMTIsMiwxMiw0LDEyLDcsMTE0LDIxMywwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNzIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEwMCw0LDAsMTAwLDMsMCwxMDAsNSwwLDEwMCwzLDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEzMiwwLDMsOTAsNCwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzIsMCwwLDkwLDUsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAotICAgIDYsMCwxMDEsNywwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCw5MCw4LDAsMTAxLDgsMCwxMDYsOSwwLDEwMCwxNCwwLDEwMCwxMywwLAotICAgIDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsMTUsMCwxMDAsCi0gICAgMTYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLDEwMCwxNywKLSAgICAwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSwxMSwwLAotICAgIDEwNiw5LDAsMTAwLDE5LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLAotICAgIDExLDAsMTAwLDMsMCw4Myw0MSwyMCwyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsMCw4NCwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTExLDExNCwzMiw5NywKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDMyLAotICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsOTgsCi0gICAgMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwzMiwxMDAsOTcsMTE2LDk3LDMyLDk3LDExNSwKLSAgICAxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ0LDMyLDExNywxMTUsMTAxLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwxMCwzMiwzMiwzMiwzMiwxMDgsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMCw5NywxMDksCi0gICAgMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LAotICAgIDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk2LAotICAgIDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDgsCi0gICAgMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDQ2LDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE0LAotICAgIDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTA1LDExNSw5NSwxMTIsOTcsOTksCi0gICAgMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwxMTYsMTAxLDExNCwxMDksMTA1LDExMCwxMDEsMTE1LAotICAgIDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAotICAgIDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLAotICAgIDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDEwMSwxMDAsCi0gICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOCwxMTEsOTksOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE5LDEwNCwxMDUsCi0gICAgOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LAotICAgIDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LAotICAgIDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ2LDMyLDMyLDg3LDEwNCwKLSAgICAxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDUsMTE1LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDMyLDExOSwKLSAgICAxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5NywzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMzQsMzIsCi0gICAgMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LDMyLDk3LDMyLDEwOCwxMTEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwxMTcsMTAxLDQ0LDMyLDk2LDk1LDk1LDEwMiwKLSAgICAxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCi0gICAgMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDk5LDk3LDk5LAotICAgIDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCi0gICAgNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLDQ2LDMyLDMyLDczLDExNiwxMCwzMiwzMiwKLSAgICAzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwxMTUsMzIsMTE2LDExMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwKLSAgICA5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LAotICAgIDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEwNSwxMDEsMTE1LDMyLDExNiwKLSAgICAxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDExOSwxMDQsMTAxLAotICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDk4LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsMTE1LDEwMSwxMTYsNDQsCi0gICAgMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LAotICAgIDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDg0LDExNCwxMTcsMTAxLDQ1LDQ1LAotICAgIDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksCi0gICAgMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODAsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDQwLDEwOSw5NywxMjEsNDEsCi0gICAgMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCi0gICAgNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDEwLDMyLDMyLDMyLAotICAgIDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLDExMSwxMTAsNDUsNzgsMTExLDExMCwxMDEsMzIsCi0gICAgMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExOSwxMDUsMTA4LAotICAgIDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExMCwxMDgsMTIxLDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwxMTUsMTAxLDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDc3LDEwMSwxMTYsOTcsODAsOTcsCi0gICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw4MCwKLSAgICA5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDMyLAotICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTIxLDMyLDc3LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LAotICAgIDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMjE4LDYsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsNzgsMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE1LDExNiw5NywxMTYsMTAxLAotICAgIDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw3OSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwKLSAgICAyLDAsMTI0LDAsMCw5NSwxLDAsMTI0LDMsMCwxMjQsMCwwLDk1LDIsCi0gICAgMCwxMjQsNCwwLDEyNCwwLDAsOTUsMywwLDEyNCw1LDAsMTE0LDQ4LDAsCi0gICAgMTAzLDAsMCwxMTAsMywwLDEwMCwwLDAsMTI0LDAsMCw5NSw0LDAsMTAwLAotICAgIDEsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNiwKLSAgICAwLDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCw2NywwLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIxOSwwLDAsMCwyMTgsCi0gICAgMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwKLSAgICAxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwxMyw5NSwxMTUsMTAxLAotICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDcsOTUsOTksOTcsOTksCi0gICAgMTA0LDEwMSwxMDAsNDEsNiwxMTQsNzEsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwKLSAgICAxNzAsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjE5LDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDcyLDAsMCwwLDIyLDMsMCwwLDExNSwxNCwwLDAsMCwKLSAgICAwLDIsOSwxLDksMSw5LDEsOSwxLDIxLDMsOSwxLDEyMiwxOSwKLSAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE1MywwLDAsMCwxMDAsMSwwLAotICAgIDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTAwLDIsMCwxMDYsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEwMywyLDAsMTI1LDEsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw3OSwwLAotICAgIDEyNCwxLDAsMTA2LDQsMCwxMDAsMywwLDEwNiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMywwLDEzMSwxLDAsMTMxLDEsMCwxLDExMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTIyLDAsMTI0LDEsMCwxMDYsNCwKKyAgICA5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDEyMiwxOCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwzMiwzNSwzMiwxMjMsMzMsMTE0LDEyNSw3MCw0MSw5LDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDI3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDE1LDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LAorICAgIDk5LDAsMCwwLDExNCwxMDUsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsCisgICAgMTE0LDI5LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsNjUsMSwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMSwzLDEsOSwxLDI1LDEsMywKKyAgICAxLDE3LDEsMTMsMSw4LDIsMjYsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAorICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwKKyAgICAxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAorICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDUyLAorICAgIDEsMCwwLDExNSw2LDAsMCwwLDEyLDIsMTIsNCwxMiw3LDExNCwxMDIsCisgICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgOCwwLDAsMCw2NCwwLDAsMCwxMTUsMTcyLDAsMCwwLDEwMSwwLDAsCisgICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKKyAgICAyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMCwzLDAsMTAwLDUsMCwxMDAsMywKKyAgICAwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwzLDkwLDQsMCwxMDAsOCwwLAorICAgIDEwMCw5LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLAorICAgIDAsMCw5MCw2LDAsMTAxLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwKKyAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw4LDAsMTA2LDksMCwxMDAsMTQsMCwKKyAgICAxMDAsMTMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLAorICAgIDE1LDAsMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsCisgICAgMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwKKyAgICAxMDEsMTEsMCwxMDYsOSwwLDEwMCwxOSwwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLAorICAgIDEsMCw5MCwxMSwwLDEwMCwzLDAsODMsNDEsMjAsMjE4LDEwLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5NywyMDgsNSwwLDAsODQsMTA0LDEwMSwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTE3LDExNSwxMDEsMTAwLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDY1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDk3LDk4LDExMSwxMTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQ2LDMyLDMyLDcwLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsMTAwLDk3LDExNiw5NywKKyAgICAzMiw5NywxMTUsMTE1LDExMSw5OSwxMDUsOTcsMTE2LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMTAsOTksCisgICAgMTA4LDExNywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NCwzMiwxMTcsCisgICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDk3LDk4LDExNSwKKyAgICAxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTksMTA0LDEwMSwKKyAgICAxMTAsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsOTYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NiwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA1LDExMCw0NiwKKyAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwKKyAgICAxMDAsMTAxLDExNCwxMDUsMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk2LDMyLDEwMCwxMDEsMTE2LDEwMSwxMTQsMTA5LDEwNSwKKyAgICAxMTAsMTAxLDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsCisgICAgOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMSwxMTQsMTAsMzIsMzIsMzIsCisgICAgMzIsMTEwLDExMSwxMTYsNDYsMzIsMzIsNzksMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LAorICAgIDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsOTYsMzIsMTA1LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsOTgsMTIxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsCisgICAgMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSw0NiwzMiwKKyAgICAzMiw4NywxMDQsMTAxLDExMCwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA1LAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDExNiw0NCwzMiwxMTEsMTE0LDEwNSwxMDMsMTA1LAorICAgIDExMCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTA5LDk3LDExNiw5OSwxMDQsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTYsMTA0LDk3LDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICA5NiwzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDM0LDExMSwxMTQsMTA1LDEwMywxMDUsCisgICAgMTEwLDM0LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDExNSwzMiw5NywzMiwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwzMiwzMiwzMiwzMiw4NywxMDQsMTAxLDExMCwKKyAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiw4NCwxMTQsMTE3LDEwMSw0NCwzMiw5NiwKKyAgICA5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LAorICAgIDExNywxMTYsMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDQ0LDMyLDEwNSwxMDIsMzIsOTcsMTEwLDEyMSw0NiwzMiwzMiw3MywxMTYsCisgICAgMTAsMzIsMzIsMzIsMzIsOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMTE1LAorICAgIDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMDAsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDk2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwKKyAgICA5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LAorICAgIDEwMSwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsMTAxLAorICAgIDExNSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwKKyAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTE1LAorICAgIDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDExNSwKKyAgICAxMDEsMTE2LDQ0LDMyLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNSwKKyAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiw4NCwxMTQsMTE3LAorICAgIDEwMSw0NSw0NSw5NywxMTAsMTAwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExMSwxMTYsMTA0LAorICAgIDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgwLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiw0MCwxMDksCisgICAgOTcsMTIxLDQxLDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDExMCwxMTEsMTEwLDQ1LDc4LDExMSwKKyAgICAxMTAsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDk2LDExNSwxMTcsOTgsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw5Niw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwKKyAgICAxMTksMTA1LDEwOCwxMDgsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTAsMTA4LAorICAgIDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMzIsNDAsMTE1LDEwMSwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw3NywxMDEsMTE2LAorICAgIDk3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsCisgICAgOTksNDYsODAsOTcsMTE2LDEwNCw2OSwxMTAsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0MSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwKKyAgICAzMiw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksMzIsMTA1LDExMCwxMTUsMTE2LAorICAgIDk3LDExMCw5OSwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDIxOCw2LDExMSwxMTQsCisgICAgMTA1LDEwMywxMDUsMTEwLDc4LDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExNSwxMTYsCisgICAgOTcsMTE2LDEwMSwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksCisgICAgMywwLDAsMCwzLDAsMCwwLDYsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNzksMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAorICAgIDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDEyNCwzLDAsMTI0LDAsCisgICAgMCw5NSwyLDAsMTI0LDQsMCwxMjQsMCwwLDk1LDMsMCwxMjQsNSwwLAorICAgIDExNCw0OCwwLDEwMywwLDAsMTEwLDMsMCwxMDAsMCwwLDEyNCwwLDAsOTUsCisgICAgNCwwLDEwMCwxLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCwxMjQsMCwKKyAgICAwLDk1LDYsMCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsMTUsCisgICAgMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLAorICAgIDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLAorICAgIDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwxMywKKyAgICA5NSwxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDcsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMDAsNDEsNiwxMTQsMTksMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDEwOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTE2LDEsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwwLDIsOSwxLDksMSw5LDEsOSwxLDIxLDMsOSwKKyAgICAxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTUsOTUsCisgICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE0NywwLDAsMCwKKyAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTAwLAorICAgIDIsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEwMywyLAorICAgIDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDAsMCwxMDcsOSwwLAorICAgIDExNCw3NiwwLDEyNCwxLDAsMTA2LDQsMCwxMDAsMywwLDEwNiwwLDAsMTI0LAorICAgIDAsMCwxMDYsMywwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwwLDAsMTA2LAorICAgIDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDExNiwwLDEyNCwxLDAsMTA2LDQsCiAgICAgMCwxMDAsNCwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNSwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxLDExMCwwLDAsMTAwLDUsMCwxMDYsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDYsMCwxMDYsNywwLDEwMCw2LDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTMxLDIsMCw4Myw0MSw3LDc4LDEyMiw5LDExMCw5NywxMDksMTAxLDYxLAotICAgIDEyMywzMywxMTQsMTI1LDEyMiwxMSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDEyMywzMywxMTQsCi0gICAgMTI1LDEyMiwxMSwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMjksCi0gICAgMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDYxLDEyMywxMjUsMTIyLDYsMTIzLAotICAgIDEyNSw0MCwxMjMsMTI1LDQxLDEyMiwyLDQ0LDMyLDQxLDksMTE0LDQ3LDAsMCwwLAotICAgIDExNCw2NywwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMTgsMCwwLDAsMjE4LAotICAgIDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTQsMjIxLDAsMCwwLDIxOCw5LDk1LDk1LAotICAgIDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDExNCw1NywwLDAsMCwxMTQsMjYsMCwwLAotICAgIDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxMDEsMCwwLAotICAgIDAsMzQsMywwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsCi0gICAgMTUsMSwyOCwxLDE1LDEsMTIsMSwxNiwxLDEyMiwxOSw3NywxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwKLSAgICAyLDAsMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLAotICAgIDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMTA2LDIsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LAotICAgIDEsMCwxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsCi0gICAgMCwxMDYsMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwKLSAgICAxMjQsMSwwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsCi0gICAgNSwwLDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLAotICAgIDQsMTE2LDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCwKLSAgICA4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LAotICAgIDExNCwyMjEsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LAotICAgIDIxOCwwLDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LAotICAgIDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMjEwLDAsMCwwLDQxLAotICAgIDMsMTE0LDcxLDAsMCwwLDIxOCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsMjE4LDQsMTE1LAotICAgIDEwOSwxMTUsMTA4LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsNDQsMywwLDAsMTE1LDIwLAotICAgIDAsMCwwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LAotICAgIDEsMTgsMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsCi0gICAgMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxNTgsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsMTA3LDgsMCwKLSAgICAxMTQsMTUxLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgMTUxLDAsMTI0LDAsMCwxMDYsMiwwLDExNCwxNTEsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwzLDAsMTE2LDQsMCwxMTYsNSwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMTQsMTEyLDAsMTIxLDE5LDAsMTE2LDYsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwwLDAsODcsMTEzLDE0NSwwLDQsCi0gICAgMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTA4LDAsMSwxLDEsODksMTEzLDE0NSwwLAotICAgIDg4LDExMywxNDgsMCwxMjQsMSwwLDEwNiwzLDAsMTE2LDQsMCwxMTYsOCwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMTQsMTQ4LDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMTMsMTQ4LDAsMTEzLDE1MSwwLDExMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDgzLDQxLDEsNzgsNDEsOSwxMTQsMjIzLDAsMCwwLDExNCwyMTgsMCwwLAotICAgIDAsMTE0LDIyMiwwLDAsMCwyMTgsOCwxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LAotICAgIDIxOCw1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE0LDEzNSwwLDAsMCwxMTQsMTMyLDAsMCwKLSAgICAwLDExNCwxMjMsMCwwLDAsMjE4LDE3LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LAotICAgIDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxMzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDIyNiwwLDAsMCw1NiwzLDAsMCwxMTUsMjIsMCwKLSAgICAwLDAsMCwyLDE1LDEsMjQsMSw5LDEsMjEsMSwzLDEsMTksMSwKLSAgICAxMywxLDgsMSwyMSwxLDE4LDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODMsMTEyLDEwMSw5OSw0Niw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxMywwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLAotICAgIDAsODMsNDEsMSw3OCw0MSwxLDExNCwyMjMsMCwwLDAsNDEsMiwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDIyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMjI2LDAsMCwwLDcwLDMsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMiw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLAotICAgIDEyNCwwLDAsMTA2LDEsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsCi0gICAgMywwLDI1LDgzLDEyNCwwLDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLAotICAgIDQsMTIyLDMyLDg0LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsCi0gICAgMTEwLDExNiw0Niw3OCwxMTQsMTE2LDAsMCwwLDExNCw4NCwwLDAsMCw0MSwzLAotICAgIDExNCwyMjEsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwzMiwwLDAsMCw0MSwKLSAgICAxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDc0LDMsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMywxNSwxLDIwLDIsMTIyLDE3LDc3LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwxMTQsMjIyLDAsMCwwLDQxLDEsMTE0LDcxLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwyMjcsMCwwLDAsODIsMywwLDAsMTE1LDIsMCwwLDAsMCwyLAotICAgIDEyMiwyMyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwKLSAgICAwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LAotICAgIDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCw5OCwxMTEsMTExLAotICAgIDEwOCwxMTQsMjIyLDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDIxOCw1LDExOCwKLSAgICA5NywxMDgsMTE3LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsMjI3LDAsMCwwLDg2LDMsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsMiw0MSwxMiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCwKLSAgICA1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDcyLDAsMCwwLDExNCwxMDEsCi0gICAgMCwwLDAsMTE0LDIzMCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwKLSAgICAxMTYsMTIxLDExNCwyMjYsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LDEwMSwxMTQsMTE0LAotICAgIDIzNCwwLDAsMCwxMTQsMjI3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMTcsMCwKLSAgICAwLDAsMjQxLDIsMCwwLDExNSwyMCwwLDAsMCwxMiwzNSw2LDIsMTUsCi0gICAgMSwxNSwxMSwxMiwxMCwxMiwxMiwxOCwxNCwyMSw0LDE4LDgsMTgsNCwxMTQsCi0gICAgMjE3LDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIyMCwwLDAsMCw5OSwyLAotICAgIDAsMCwwLDIsMCwwLDAsNSwwLDAsMCwxNSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTkzLDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsMSwKLSAgICAwLDEzMSwyLDAsMTE0LDgzLDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsCi0gICAgMTE0LDQzLDAsMTE2LDEsMCwxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwxLDgzLDEyNCwzLDAsMTE0LDU1LDAsMTAzLDAsMCwxMTAsMywwLDEwMCwKLSAgICAyLDAsMTI1LDQsMCwxMTYsMSwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwKLSAgICAwLDEwMCw0LDAsMTI0LDQsMCwxMzEsMSwyLDgzLDEyNCwzLDAsMTAwLDIsCi0gICAgMCwxMDcsOCwwLDExNCwxNjgsMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDUsMCwKLSAgICAxMzEsMiwwLDExNCwxNTksMCwxMjEsMTksMCwxMjQsMSwwLDEwNiwyLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSwzLDAsODcsMTEzLDE2NSwwLDQsMTE2LDMsMCwKLSAgICAxMDcsMTAsMCwxMTQsMTU1LDAsMSwxLDEsMTAwLDIsMCwxMjUsMywwLDg5LAotICAgIDExMywxNjUsMCw4OCwxMTMsMTY4LDAsMTAwLDYsMCwxMjUsMywwLDExMCwwLDAsCi0gICAgMTE2LDQsMCwxMjQsMCwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsMiwwLDEwMCwKLSAgICA1LDAsMTI0LDMsMCwxMzEsMiwyLDgzLDQxLDgsMTIyLDUzLDgyLDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsCi0gICAgOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTgsOTcsMTE0LDEwNSwxMTEsCi0gICAgMTE3LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDExNSw0NiwyMTgsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAotICAgIDc4LDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsMjIwLDAsMCwwLAotICAgIDcwLDExNCwyMTgsMCwwLDAsNDEsNSwxMTQsNjAsMCwwLDAsMjE4LDIzLDExNSwKLSAgICAxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDIyMCwwLDAsMCwxMTQsMTU0LDAsMCwwLAotICAgIDExNCwyMTcsMCwwLDAsNDEsNSwxMTQsNjcsMCwwLDAsMTE0LDE3MCwwLDAsCi0gICAgMCwxMTQsMjE4LDAsMCwwLDExNCwyMjAsMCwwLDAsOTAsNiwxMTUsMTAxLDk3LAotICAgIDExNCw5OSwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDE3NCwwLDAsMCw5MSwzLDAsMCwxMTUsMjgsMCwwLDAsCi0gICAgMCwyLDE1LDEsMTIsMSwxNiwxLDE4LDEsMTUsMSw3LDIsMTIsMSwKLSAgICAxNSwxLDMsMSwxOSwxLDEzLDEsMTQsMyw5LDIsMTE0LDE3NCwwLDAsCi0gICAgMCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsOTksMiwwLDAsMCwKLSAgICAyLDAsMCwwLDksMCwwLDAsMTksMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDExMCwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNzksCi0gICAgMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMiwwLDEwMCwzLDAsCi0gICAgMTMxLDIsMCwxMTQsNzksMCwxMjEsMTksMCwxMjQsMiwwLDEwNiwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEzLDc2LDAsNCwxMTYsMiwwLAotICAgIDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMyw3NiwwLDg4LDExMyw3OSwKLSAgICAwLDExMCwwLDAsMTE2LDMsMCwxMjQsMCwwLDEyNCwyLDAsMTAwLDQsMCwKLSAgICAxMjQsMSwwLDEzMSwyLDEsMTI1LDQsMCwxMDAsNSwwLDEyNCw0LDAsOTUsCi0gICAgNCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMDMsMCwxMjAsNzksCi0gICAgMCwxMTYsNSwwLDEzMSwwLDAsNjgsOTMsNjEsMCw5MiwyLDAsMTI1LDUsCi0gICAgMCwxMjUsNiwwLDEyNCwxLDAsMTA2LDYsMCwxMTYsNywwLDEyNCw2LDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNCwxMzEsMCwxMjQsNSwwLDEyNCwwLDAsMTI0LAotICAgIDEsMCwxMzEsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMjQsNCwwLDk1LDgsCi0gICAgMCw4MCwxMTMsMTMxLDAsMTEzLDEzMSwwLDg3LDEwMCwxLDAsODMsMTEwLDAsMCwKLSAgICAxMjQsMywwLDExNiw5LDAsMTA3LDgsMCwxMTQsMzgsMSwxMTYsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDYsMCwxMzEsMiwwLDExNCw0NywxLDEyMSwxOSwwLDEyNCwyLAotICAgIDAsMTA2LDEwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDE4LAotICAgIDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxMywxLDEsMSwxLDg5LDExMywKLSAgICAzNSwxLDg4LDEyNCw3LDAsMTE0LDM1LDEsMTAzLDAsMCwxMjQsNCwwLDk1LAotICAgIDExLDAsMTEzLDM1LDEsMTEzLDQ3LDEsMTEwLDksMCwxMjQsMywwLDEyNCw0LAotICAgIDAsOTUsMTEsMCwxMjQsNCwwLDEwNiwxMSwwLDEwMywwLDAsMTA3LDIsMCwKLSAgICAxMTQsMTA2LDEsMTI0LDEsMCwxMTQsMTA2LDEsMTE2LDEyLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsNCwwLDEwNiwxMSwwLDEwNiwKLSAgICAxMywwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMDYsMSwxMTAsMCwwLDEyNCwKLSAgICA0LDAsODMsNDEsOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LAotICAgIDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwKLSAgICAzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwKLSAgICAxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsCi0gICAgMTIxLDMyLDExMiw5NywxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsCi0gICAgMTE3LDEwMiwxMDIsMTA1LDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLAotICAgIDEwNCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LAotICAgIDEyMSwzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMywKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLAotICAgIDExOSwxMTAsNjIsMTE0LDIzOSwwLDAsMCwxMTQsMjE4LDAsMCwwLDg0LDExNCwyMjAsCi0gICAgMCwwLDAsMTE0LDg0LDAsMCwwLDQxLDE0LDExNCw2MCwwLDAsMCwxMTQsCi0gICAgMjM5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDIxNywwLDAsMCwxMTQsMjIyLAotICAgIDAsMCwwLDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwKLSAgICAxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCi0gICAgMTE0LDIzMSwwLDAsMCwxMTQsMjMyLDAsMCwwLDExNCwxNzAsMCwwLDAsMjE4LAotICAgIDksOTUsODAsNzksODAsODUsNzYsNjUsODQsNjksMTE0LDIyMCwwLDAsMCwxMTQsCi0gICAgMjIxLDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMjI0LDAsMCwwLDQxLDksCi0gICAgMTE0LDY3LDAsMCwwLDIxOCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwKLSAgICAxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsMTc4LDAsMCwwLDIxOCwxMiwKLSAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk5LDEwOCw5NywxMTUsMTE1LDExNCwxMjYsMCwwLAotICAgIDAsMTE0LDIyMCwwLDAsMCw5MCw3LDEwMCwxMDUsMTE0LDExMCw5NywxMDksMTAxLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyNDAsCi0gICAgMCwwLDAsMTE2LDMsMCwwLDExNSw2MCwwLDAsMCwwLDEyLDEyLDQsCi0gICAgNiwxLDE1LDIsMywxLDE5LDEsMTMsMSwxMSw4LDIxLDEsOSwzLAotICAgIDEyLDEsMjIsMSwyMSwxLDE1LDEsOSwxLDgsMiw3LDMsMTIsMiwKLSAgICAxNSwxLDMsMSwxOSwxLDEzLDEsNSwyLDYsMSwxOCwyLDksMSwKLSAgICAxNSwxLDYsMSwxNiwxLDIyLDIsMTE0LDI0MCwwLDAsMCw5OSwzLDAsCisgICAgMTMxLDEsMCwxLDEwMCw1LDAsMTA2LDAsMCwxMjQsMCwwLDEwNiw2LDAsCisgICAgMTA2LDcsMCwxMDAsNiwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwKKyAgICAyLDAsODMsNDEsNyw3OCwxMjIsOSwxMTAsOTcsMTA5LDEwMSw2MSwxMjMsMzMsMTE0LAorICAgIDEyNSwxMjIsMTEsMTA4LDExMSw5NywxMDAsMTAxLDExNCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMTEsCisgICAgMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDI5LDExNSwxMTcsOTgsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw2MSwxMjMsMTI1LDEyMiw2LDEyMywxMjUsNDAsMTIzLAorICAgIDEyNSw0MSwxMjIsMiw0NCwzMiw0MSw5LDExNCw1MCwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMjE4LDYsOTcsMTEyLAorICAgIDExMiwxMDEsMTEwLDEwMCwxMTQsMTEwLDAsMCwwLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDk1LDk1LDExNCwxLDAsMCwwLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwKKyAgICAyLDExNCwxOSwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUyLDAsMCwwLDEyOCwKKyAgICAxLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDE1LDEsMjEsMSwxNSwxLAorICAgIDI1LDEsMTUsMSwxMiwxLDEzLDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE0NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwKKyAgICAxMjEsMTA3LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsCisgICAgMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMDYsMiwKKyAgICAwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLAorICAgIDEwNiwzLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiwKKyAgICAwLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLAorICAgIDAsMTA2LDQsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw1LDAsCisgICAgMTI0LDEsMCwxMDYsNSwwLDEwNywyLDAsODMsODcsMTEwLDIyLDAsNCwxMTYsCisgICAgNiwwLDEwNywxMCwwLDExNCwxNDAsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LAorICAgIDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDExMCwKKyAgICAwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwKKyAgICAwLDAsMjE4LDYsOTksOTcsOTksMTA0LDEwMSwxMDAsMjE4LDEyLDEwNCw5NywxMTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDk2LDAsMCwwLDQxLDMsMTE0LAorICAgIDE5LDAsMCwwLDkwLDUsMTExLDExNiwxMDQsMTAxLDExNCw5MCw0LDExNSwxMDksMTE1LAorICAgIDEwOCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDEzOCwxLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsMCwxLDksMSwzLDEsMTgsMSwxOCwxLDE4LDEsMTUsMSwxOCwKKyAgICAxLDIwLDEsMTMsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLAorICAgIDk5LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsODUsMCwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNzgsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw3OCwwLAorICAgIDEyNCwwLDAsMTA2LDIsMCwxMTQsNzgsMCwxMTYsMywwLDEwMCwwLDAsMTA3LAorICAgIDgsMCwxMTQsNTcsMCwxMTYsNCwwLDEzMCwxLDAsMTE2LDMsMCwxMDYsNSwKKyAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMCwwLAorICAgIDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDc4LDQxLDYsMTE0LDExMiwwLDAsCisgICAgMCwxMTQsMTA3LDAsMCwwLDExNCwxMTEsMCwwLDAsMjE4LDE5LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsCisgICAgMjE4LDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLAorICAgIDY5LDExNCwxMTQsMTExLDExNCw5MCwxMSw5NSwxMDMsMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTE2LDAsMCwwLDE1MCwxLDAsCisgICAgMCwxMTUsMTIsMCwwLDAsMCwyLDE1LDEsMjQsMSwxMiwxLDYsMSwKKyAgICAyMSwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMDAsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LAorICAgIDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsCisgICAgMSwxMTQsMTEyLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwxMTYsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDExNiwwLDAsMCwxNTksMSwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDM1LDAsMTI0LDAsMCwxMDYsMSwwLAorICAgIDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwzLDAsMjUsODMsMTI0LDAsCisgICAgMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsNCwxMjIsMzIsODQsMTA0LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDc4LDIxOCwxLAorICAgIDQ2LDExNCwzMywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MSwxLAorICAgIDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE2MywxLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDMsMTUsMSwyMCwyLDEyMiwxNyw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwKKyAgICAxLDc4LDQxLDEsMTE0LDExMSwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgMTE3LDAsMCwwLDE3MSwxLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAorICAgIDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LAorICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCisgICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMSwKKyAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LAorICAgIDExNCwxMTEsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LDUsMTE4LDk3LAorICAgIDEwOCwxMTcsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDExNCwxMTcsMCwwLDAsMTc1LDEsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMiw0MSwxMiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKKyAgICAwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDUyLDAsCisgICAgMCwwLDExNCwxMTgsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LAorICAgIDEyMSwxMTQsMTE2LDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwNiwwLDAsCisgICAgMCw3OSwxLDAsMCwxMTUsMjAsMCwwLDAsMTIsMzUsNiwyLDE1LDEsCisgICAgMTUsMTEsMTIsMTAsMTIsMTIsMTgsOSwyMSw0LDE4LDgsMTgsNCwxMTQsMTA2LAorICAgIDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCw5OSwyLDAsCisgICAgMCwwLDIsMCwwLDAsNiwwLDAsMCwxNSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjE3LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsMSwwLAorICAgIDEzMSwyLDAsMTE0LDExMCwwLDExNiwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwKKyAgICAzMywwLDExNiwyLDAsMTMwLDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI1LDQsCisgICAgMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzAsMCwxMjQsNCwwLAorICAgIDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwxLDEsODMsMTI0LDMsMCwKKyAgICAxMTQsODIsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDIsMCwxMjUsNSwwLDEyNCwKKyAgICA0LDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTAwLDQsMCwxMjQsNSwKKyAgICAwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE5MiwKKyAgICAwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLDEzMSwyLDAsMTE0LDE4NiwwLAorICAgIDEyMSwxOSwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAorICAgIDMsMCw4NywxMTMsMTkyLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxODIsMCwKKyAgICAxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksMTEzLDE5MiwwLDg4LDExMCw2LAorICAgIDAsMTAwLDYsMCwxMjUsMywwLDExNiw2LDAsMTI0LDAsMCwxMjQsMSwwLAorICAgIDEwMCw3LDAsMTI0LDIsMCwxMDAsNSwwLDEyNCwzLDAsMTMxLDIsMiw4MywKKyAgICA0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLDExNywxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTAsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsCisgICAgMCwwLDExNCwxMDksMCwwLDAsNzAsMTE0LDEwNywwLDAsMCw0MSw3LDExNCwKKyAgICA0LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwyMTgsMjMsCisgICAgMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTA5LDAsMCwwLDExNCw3NywwLDAsCisgICAgMCwxMTQsMTA2LDAsMCwwLDQxLDYsMTE0LDE1LDAsMCwwLDExNCw5OSwwLAorICAgIDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyOCwwLDAsCisgICAgMCw5MCw2LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODUsMCwwLDAsMTgwLDEsMCwKKyAgICAwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxMiwxLDYsMSw5LDIsCisgICAgMTIsMSwxNiwxLDE4LDEsMTUsMSw3LDIsMTIsMSwxNSwxLDMsMSwKKyAgICAxOSwxLDEzLDEsMTQsMyw2LDIsMTE0LDg1LDAsMCwwLDk5LDMsMCwKICAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDUzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxMjQsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDAsMCwxMTUsMTE4LDEsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDAsMCwKICAgICAxMjUsMywwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMzMsCiAgICAgMCwxLDEsMSw4OSwxMTAsMTcsMCw4OCwxMjQsMywwLDEwMCwwLDAsMTA3LAogICAgIDksMCwxMTQsNTAsMCwxMjQsMywwLDgzLDEyNCwwLDAsMTA2LDIsMCwxMjUsCi0gICAgNCwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDgsMCwxMjEsMTMsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI1LDEsMCw4NywxMTMsMTA4LDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwxMTMsMTA4LDAsODgsCi0gICAgMTEwLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDUsMCw4NywKLSAgICAxMTAsMjQsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDE0NywwLDEsMSwxLAotICAgIDEwMCwwLDAsMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMjQsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwKLSAgICAxMTQsMjE1LDAsMTIxLDEzLDAsMTI0LDEsMCwxMDYsNSwwLDEyNSwyLDAsODcsCi0gICAgMTEzLDIyMSwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMjExLDAsMSwxLDEsCi0gICAgMTAwLDAsMCwxMjUsMiwwLDg5LDExMywyMjEsMCw4OCwxMTMsMjI0LDAsMTI0LDUsCi0gICAgMCwxMjUsMiwwLDExMCwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEyNSw2LDAsODcsMTEwLDI0LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCw3LAotICAgIDEsMSwxLDEsMTAwLDAsMCwxMjUsNiwwLDg5LDExMCwxLDAsODgsMTIxLAotICAgIDE5LDAsMTE2LDcsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDEsMCwxMjUsNywKLSAgICAwLDg3LDExMCwyNCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsNTMsMSwxLAotICAgIDEsMSwxMDAsMCwwLDEyNSw3LDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLAotICAgIDEyNCw0LDAsMTI0LDEsMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMSwxMjUsCi0gICAgMywwLDEyNCw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCw5MywxLDEwMCwyLAotICAgIDAsMTEwLDMsMCwxMDAsMywwLDEyNCwzLDAsOTUsMTAsMCwxMjQsNiwwLAotICAgIDEyNCwzLDAsOTUsMTEsMCwxMjQsNywwLDEyNCwzLDAsOTUsMTIsMCwxMjQsCi0gICAgMywwLDgzLDQxLDQsNzgsMTE0LDIxOCwwLDAsMCw3MCw4NCw0MSwxMywxMTQsCi0gICAgMjA5LDAsMCwwLDExNCwyMTAsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCwyMDUsCi0gICAgMCwwLDAsMTE0LDIxMSwwLDAsMCw5MCw3LDk1LDc5LDgyLDczLDcxLDczLAotICAgIDc4LDIxOCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwyMTgsNCwxMDgsCi0gICAgMTA1LDExNSwxMTYsMjE4LDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDIxNywwLAotICAgIDAsMCwxMTQsMjIyLDAsMCwwLDExNCwyMjYsMCwwLDAsMTE0LDIyMSwwLDAsCi0gICAgMCw0MSw4LDExNCwxODAsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjE4LDAsCi0gICAgMCwwLDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwyNDMsMCwwLAotICAgIDAsMTE0LDIyNiwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSwKLSAgICA5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTgwLDMsMCwKLSAgICAwLDExNSw3MiwwLDAsMCwwLDIsMywxLDEzLDEsMTMsMSw1LDIsCi0gICAgMTIsMSw0LDIsOSwxLDEyLDEsMywxLDEzLDEsMTMsMiw4LDEsCi0gICAgMywxLDEzLDEsMTMsMSwxMSwxLDEyLDEsMTIsMSwzLDEsMTMsMSwKLSAgICAxMywxLDE0LDIsOSwxLDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsCi0gICAgMTksMSwxMywxLDExLDIsMjEsMSwyNywxLDksMSw5LDEsMTE0LDI0OCwKLSAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICA2LDAsMCwwLDY0LDAsMCwwLDExNSwxNDIsMCwwLDAsMTAxLDAsMCwKLSAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDIsOTAsNiwwLDEwMCwKLSAgICAxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsNywwLDEwMCwxNCwwLDEwMCwxNSwKLSAgICAwLDEzMiwwLDAsOTAsOCwwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsCi0gICAgOTAsOSwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsCi0gICAgMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDIyLDAsMTAwLDIzLAotICAgIDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwyNCwwLDgzLDQxLDI1LDExNCwxNzUsMCwKLSAgICAwLDAsMTIyLDc3LDY3LDExMSwxMTAsMTE4LDEwMSwxMTAsMTA1LDEwMSwxMTAsOTksMTAxLDMyLAotICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDMyLDk3LDExNCwxMTEsMTE3LDExMCwxMDAsMzIsMTE1LAotICAgIDExMiwxMDEsOTksMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSwzMiwxMTYsMTExLDMyLDExMiwKLSAgICAxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwzMiwxMTUsMTEyLDEwMSw5OSw0NSwxMTUsMTEyLDEwMSw5OSwKLSAgICAxMDUsMTAyLDEwNSw5OSwxMCwzMiwzMiwzMiwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsCi0gICAgNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LDEsMCwxMjQsMCwKLSAgICAwLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMTc4LDAsCi0gICAgMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDcyLDAsCi0gICAgMCwwLDIzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIxLDk1LAotICAgIDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTUsOTUsMTA1LDExMCwKLSAgICAxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE1OCwwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwzMCwwLDEwMCwyLDAsMTEwLDYsMCwxMjQsMSwwLDEwNiwKLSAgICAxLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDEsMCwxMDcsOCwKLSAgICAwLDExNCwxMDQsMCwxMjQsMSwwLDEwNiwzLDAsMTAwLDEsMCwxMDcsOCwwLAotICAgIDExNCw4MiwwLDEwMCwzLDAsMTA2LDQsMCwxMjQsMiwwLDEzMSwxLDAsODMsCi0gICAgMTAwLDQsMCwxMDYsNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsMywwLDEzMSwKLSAgICAyLDAsODMsMTEwLDUwLDAsMTI0LDEsMCwxMDYsNSwwLDExNCwxMzIsMCwxMDAsCi0gICAgNSwwLDEwNiw0LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiwyLDAsMTMxLDIsCi0gICAgMCw4MywxMDAsNiwwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsMTA2LDIsMCwxMzEsMiwwLDgzLDEwMCwxLDAsODMsNDEsNywxMjIsMzgsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDExMiwxMTQsMzIsCi0gICAgMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMTQsMjA3LDAsMCwwLDEyMiwxMyw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsCi0gICAgNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAotICAgIDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMTgsNjAsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDEyNSw0MSw2Miw0MSw2LAotICAgIDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LAotICAgIDE3MCwwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDIyNywwLDAsMCw0MSwzLAotICAgIDExNCw3MSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw2NywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjA2LAotICAgIDAsMCwwLDIzNSwzLDAsMCwxMTUsMTgsMCwwLDAsMCwzLDksMSwKLSAgICAzMCwxLDE1LDEsMTUsMSwxMywyLDIyLDIsOSwxLDE5LDIsMTIyLDI0LAotICAgIDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDIxOCw5LDk1LDExMSwxMTgsMTAxLDExNCwxMTQsCi0gICAgMTA1LDEwMCwxMDEsNzAsMjE4LDExLDk1LDEwMiwxMTEsMTE0LDk5LDEwMSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw4NCw5OSwyLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCw1OSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzUsMiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEyNSw0LDAsMTI0LDIsMCwxMTUsNDUsMCwxMjQsMywwLDExNSw0NSwKLSAgICAwLDExNiwxLDAsMTI0LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLDMsMCwKLSAgICAxMDAsMiwwLDEwNyw4LDAsMTE0LDg1LDAsMTIxLDE2LDAsMTI0LDQsMCwxMDYsCi0gICAgMiwwLDEyNCwxLDAsOTUsMywwLDg3LDExMyw4NSwwLDQsMTE2LDQsMCwKLSAgICAxMDcsMTAsMCwxMTQsODEsMCwxLDEsMSw4OSwxMTMsODUsMCw4OCwxMTAsMCwKLSAgICAwLDEyNCwyLDAsMTE1LDExNSwwLDExNiwxLDAsMTI0LDEsMCwxMDAsMywwLAotICAgIDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDIyMSwwLDEyNCwKLSAgICA0LDAsMTA2LDUsMCwxMjUsNSwwLDEyNCw1LDAsMTAwLDIsMCwxMDcsOCwKLSAgICAwLDExNCwxODQsMCwxMjQsNCwwLDEwNiw2LDAsMTAwLDIsMCwxMDcsOSwwLAotICAgIDExNCwxODQsMCwxMTYsNywwLDEwNiw4LDAsMTE2LDcsMCwxMzEsMSwwLDEyNSwKLSAgICA1LDAsMTI0LDQsMCwxMDYsNiwwLDEyNCw1LDAsOTUsOSwwLDExMywxODQsCi0gICAgMCwxMTAsMCwwLDEyMSwxMywwLDEyNCw1LDAsMTI0LDEsMCw5NSwxMCwwLAotICAgIDg3LDExMywyMjEsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDIxNywwLDEsMSwKLSAgICAxLDg5LDExMywyMjEsMCw4OCwxMTAsMCwwLDEyNCwyLDAsMTE1LDI1MSwwLDExNiwKLSAgICAxLDAsMTI0LDEsMCwxMDAsNCwwLDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwKLSAgICAwLDEwNyw4LDAsMTE0LDM1LDEsMTIxLDE2LDAsMTI0LDQsMCwxMDYsMTEsMCwKLSAgICAxMjQsMSwwLDk1LDEyLDAsODcsMTEzLDM1LDEsNCwxMTYsNCwwLDEwNywxMCwKLSAgICAwLDExNCwzMSwxLDEsMSwxLDg5LDExMywzNSwxLDg4LDExMCwwLDAsMTIxLAotICAgIDEzLDAsMTI0LDQsMCwxMjQsMSwwLDk1LDEzLDAsODcsMTEwLDE4LDAsNCwKLSAgICAxMTYsNCwwLDEwNywxMCwwLDExNCw2OCwxLDEsMSwxLDg5LDExMCwxLDAsCi0gICAgODgsMTI0LDIsMCwxMTUsOTksMSwxMTYsMSwwLDEyNCwxLDAsMTAwLDUsMCwKLSAgICAxMDAsMiwwLDEzMSwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxNTcsMSwxMjQsCi0gICAgNCwwLDEwNiw2LDAsMTAwLDIsMCwxMDcsOSwwLDExNCwxNTcsMSwxMjEsMTYsCi0gICAgMCwxMjQsNCwwLDEwNiw2LDAsMTI0LDEsMCw5NSwxNCwwLDg3LDExMywxNTQsCi0gICAgMSw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDE1MCwxLDEsMSwxLDg5LDExMywKLSAgICAxNTQsMSw4OCwxMTMsMTU3LDEsMTEwLDAsMCwxMjQsNCwwLDEwNiwxNSwwLDExNCwKLSAgICA3MSwyLDEyNCwyLDAsMTE1LDE5NiwxLDExNiwxLDAsMTI0LDEsMCwxMDAsNiwKLSAgICAwLDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDIzNiwxLAotICAgIDEyMSwxNiwwLDEyNCw0LDAsMTA2LDE2LDAsMTI0LDEsMCw5NSwxNywwLDg3LAotICAgIDExMywyMzYsMSw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDIzMiwxLDEsMSwxLAotICAgIDg5LDExMywyMzYsMSw4OCwxMTAsMCwwLDEyNCwyLDAsMTE1LDEwLDIsMTE2LDEsCi0gICAgMCwxMjQsMSwwLDEwMCw3LDAsMTAwLDIsMCwxMzEsMywwLDEwMCwyLDAsCi0gICAgMTA3LDgsMCwxMTQsNzEsMiwxMjQsNCwwLDEwNiwxOCwwLDEwMCwyLDAsMTA3LAotICAgIDksMCwxMTQsNjgsMiwxMjEsMTYsMCwxMjQsNCwwLDEwNiwxOCwwLDEyNCwxLAotICAgIDAsOTUsMTksMCw4NywxMTMsNjUsMiw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LAotICAgIDYxLDIsMSwxLDEsODksMTEzLDY1LDIsODgsMTEzLDY4LDIsMTEzLDcxLDIsCi0gICAgMTEwLDAsMCwxMDAsMiwwLDgzLDQxLDgsOTcsMjksMiwwLDAsODMsMTAxLAotICAgIDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsOTcsCi0gICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NSwxMTQsMTAxLDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LAotICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsNDYsMzIsMzIsNzIsCi0gICAgMTAxLDExNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMDQsCi0gICAgMTExLDExOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTYsMTE2LDExNCwKLSAgICAxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwOSw5NywxMTIsMzIsMTExLDExMCwxMTYsMTExLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDU4LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDExMCw5NywxMDksMTAxLDMyLDQ1LAotICAgIDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAotICAgIDk1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMzIsNDUsNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsCi0gICAgOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDQ1LAotICAgIDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSw5NSw5NSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSwKLSAgICA5OSwzMiw0NSw2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5NSw5NSwxMTUsMTEyLAotICAgIDEwMSw5OSw5NSw5NSwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OSwxMTIsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSw0NiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwzMiw0NSw2MiwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMzIsNDAsCi0gICAgMTA1LDEwMiwzMiwxMTUsMTEyLDEwMSw5OSw0NiwxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCi0gICAgOTcsMTE2LDExNiwxMTQsMzIsMTA1LDExNSwzMiwxMTYsMTE0LDExNywxMDEsNDEsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsOTksOTcsOTksMTA0LDEwMSwKLSAgICAxMDAsMzIsNDUsNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSwxMDAsOTUsOTUsMzIsNDAsMTA1LDEwMiwzMiw5NSw5NSwxMDIsMTA1LDEwOCwKLSAgICAxMDEsOTUsOTUsMzIsOTcsMTA4LDExNSwxMTEsMzIsMTE1LDEwMSwxMTYsNDEsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTE1LDExNyw5OCwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDQ1LDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LAotICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDMyLDQwLDEwNSwxMDIsMzIsMTE1LDEwMSwxMTYsCi0gICAgNDEsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDU3LDAsMCwwLAotICAgIDc4LDExNCwyMDUsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAotICAgIDEwMSw5NSw5NSwxMTQsMjQ3LDAsMCwwLDExNCwyMTEsMCwwLDAsMTE0LDI0NSwwLAotICAgIDAsMCw0MSwyMCwxMTQsMTc4LDAsMCwwLDExNCw2MiwwLDAsMCwxMTQsNjcsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDExNCwyMTAsMCwwLDAsMTE0LDE3MCwwLAotICAgIDAsMCwxMTQsMjIxLDAsMCwwLDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCi0gICAgOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSwKLSAgICA5NSw5NSwyMTgsNSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMjA1LDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMTE0LDI1MSwwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCwyNDcsMCwKLSAgICAwLDAsMTE0LDIyNywwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwyMTEsMCwwLAotICAgIDAsMTE0LDIyNiwwLDAsMCwxMTQsMjQ1LDAsMCwwLDQxLDYsMTE0LDcxLDAsCi0gICAgMCwwLDExNCwxODAsMCwwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjUwLDAsMCwKLSAgICAwLDExNCwxNzgsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSwyNTEsMywwLAotICAgIDAsMTE1LDg4LDAsMCwwLDAsMTcsOSw2LDEyLDEsMjQsMSwzLDEsCi0gICAgMTYsMSwxMywxLDgsMywzMCwxLDksMSwxMiwyLDE1LDEsMTUsMSwKLSAgICAxOCwxLDMsMSwxMywxLDEzLDEsOCwzLDMwLDEsMywxLDE2LDEsCi0gICAgMTMsMSw4LDMsMywxLDEzLDEsMTMsMSw1LDMsMzAsMSwxNSwxLAotICAgIDMsMSwxNiwxLDEzLDEsMTEsMiw5LDIsMzAsMSwzLDEsMTYsMSwKLSAgICAxMywxLDgsMywzMCwxLDE1LDEsMywxLDE2LDEsMTMsMSwxMjIsMzAsCi0gICAgOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0NiwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwxMTQsMTE1LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDEwMSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsCi0gICAgMCwxMTYsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMSwwLDEzMSwyLDAsCi0gICAgMTE0LDQ4LDAsMTI0LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTEwLDYsMCwxMDAsMiwwLDEyNSwyLDAsMTI0LDIsCi0gICAgMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDg0LDAsMTE2LDQsMCwxMjQsMSwwLAotICAgIDEwNiw1LDAsMTMxLDEsMCwxMjUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgNiwwLDEyNCwyLDAsMTMxLDEsMCwxLDEyNCwyLDAsODMsNDEsMywxMjIsCi0gICAgMTUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ1LDExNCwxMDEsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsCi0gICAgMzIsOTcsMTE0LDEwMSwzMiw5NywxMDgsMTE1LDExMSwzMiwxMTUsMTAxLDExNiwzMiwxMTksMTA1LAotICAgIDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsCi0gICAgMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LDk3LDExNiwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLAotICAgIDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMjE4LDEzLDk5LDExNCwxMDEsOTcsCi0gICAgMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw3LDExNCwxNzgsMCwwLAotICAgIDAsMTE0LDYwLDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDAsMSwwLDAsCi0gICAgMTE0LDY4LDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMjU1LDAsMCwwLDQxLAotICAgIDMsMTE0LDcxLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE4MCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCi0gICAgNiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsNzUsNCwwLDAsMTE1LDE2LDAsMCwwLAotICAgIDAsNyw5LDIsMTgsMywyMSwyLDYsMSwxMiw0LDE4LDEsMTMsMSwKLSAgICAxMjIsMTksOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5OSwKLSAgICAxMTQsMTAxLDk3LDExNiwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjMsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDE4OSw2OCwxMTEsMzIsMTAxLDExOCwxMDEsCi0gICAgMTE0LDEyMSwxMTYsMTA0LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsOTksMTAxLDExNSwxMTUsOTcsMTE0LAotICAgIDEyMSwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiw5NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NiwzMiwxMDUsMTE1LDMyLDExNywKLSAgICAxMTUsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE2LDk3LDExNCwxMDMsMTAxLAotICAgIDExNiwzMiwxMTEsMTAyLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMSwxMTAsNDYsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMzksMTE1LDMyLDk2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDQwLDQxLDk2LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDMsMTE0LDE3OCwwLDAsMCwxMTQsCi0gICAgMTcwLDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw1LDk1LDEwMSwKLSAgICAxMjAsMTAxLDk5LDk4LDQsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMTgsCi0gICAgOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5NSwxMDEsMTIwLAotICAgIDEwMSw5OSw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTcsMSwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTYsMiwwLDEwNiwzLDAsMTMxLDAsCi0gICAgMCwxLDExNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDE0MywyMjYsMCwxLDExNiwKLSAgICA1LDAsMTA2LDYsMCwxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMSwKLSAgICAwLDEwNyw5LDAsMTE0LDk1LDAsMTAwLDEsMCwxMDYsOCwwLDEyNCwyLDAsCi0gICAgMTMxLDEsMCwxMjUsMywwLDExNiw5LDAsMTI0LDMsMCwxMDAsMiwwLDEyNCwKLSAgICAyLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwNiwxMCwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTgxLDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDEwNiwxMSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTU4LDAsMTE2LAotICAgIDksMCwxMDAsNCwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTI0LDAsMCwxMDYsMTIsMCwKLSAgICAxMjQsMSwwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMSwxLDEsMTI0LDEsMCwKLSAgICA4MywxMjQsMCwwLDEwNiwxMiwwLDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLAotICAgIDEzMSwxLDEsMSwxMTYsMTMsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEwLDAsCi0gICAgMTAwLDcsMCwxMzEsMiwwLDExNSwyNDMsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LAotICAgIDEwLDAsMTA2LDE0LDAsMTI0LDIsMCwxMzEsMSwwLDEsMTEwLDEzLDAsMTI0LAotICAgIDAsMCwxMDYsMTUsMCwxMjQsMSwwLDEzMSwxLDAsMSw4NywxMDAsMywwLAotICAgIDgxLDg4LDExNiw1LDAsMTA2LDYsMCwxMjQsMiwwLDI1LDgzLDQxLDgsMTIyLAotICAgIDUxLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsCi0gICAgOTksMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE1LDExNCw2NywwLDAsMCw3OCwxMjIsMTQsMTA5LDEwNSwxMTUsMTE1LAotICAgIDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDI0OSwwLDAsMCw4NCwKLSAgICAxMTQsMiwxLDAsMCw0MSwxNiwxMTQsMTc4LDAsMCwwLDExNCw2NywwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LAotICAgIDEwOCwxMTEsOTksMTA3LDExNCwxMDMsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDczLAotICAgIDAsMCwwLDExNCw5MywwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDE1NCwwLAotICAgIDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDI1NSwwLDAsCi0gICAgMCwxMTQsNjAsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwzLDEsMCwwLDQxLDQsMTE0LDcxLDAsMCwwLDExNCwKLSAgICAxODAsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwxNzIsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3NiwwLAotICAgIDAsMCwxMDgsNCwwLDAsMTE1LDMyLDAsMCwwLDAsMiwxMiwxLDEwLAotICAgIDEsMTMsMSwyNCwxLDE1LDEsMjEsMSwxOCwxLDE4LDEsMjcsMiwxOSwKLSAgICAxLDQsMSwxOSwxLDIxLDQsMjIsMiwxOSwxLDEyMiwxNyw5NSw4MywxMTIsCi0gICAgMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDEwMSwxMjAsMTAxLDk5LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDI3LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyNCwxLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsCi0gICAgMCwxMjQsMSwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNiwzLDAsCi0gICAgMTMxLDEsMCwxLDExNiw0LDAsMTA2LDUsMCwxMjQsMSwwLDEwNiwzLDAsCi0gICAgMjUsMTI1LDIsMCwxMTYsNiwwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMCwwLAotICAgIDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDgsMCwxMjEsMTYsMCwxMjQsCi0gICAgMSwwLDEwNiwxLDAsMTI0LDIsMCw5NSw3LDAsODcsMTEzLDEwOCwwLDQsCi0gICAgMTE2LDgsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEzLDEwOCwwLAotICAgIDg4LDExMCwwLDAsMTE2LDYsMCwxMjQsMiwwLDEwMCwyLDAsMTAwLDAsMCwKLSAgICAxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjE1LDAsMTIxLDU5LDAsMTI0LAotICAgIDIsMCwxMDYsOSwwLDEyNCwyLDAsOTUsMTAsMCwxMTYsMTEsMCwxMjQsMiwKLSAgICAwLDEwMCwzLDAsMTMxLDIsMCwxMTUsMTkwLDAsMTI0LDEsMCwxMDYsMywwLAotICAgIDEwNiwxMiwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsNSwwLDI1LDEyNCwyLDAsCi0gICAgOTUsMTAsMCwxMTAsMCwwLDg3LDExMywyMTUsMCw0LDExNiw4LDAsMTA3LDEwLAotICAgIDAsMTE0LDIxMSwwLDEsMSwxLDg5LDExMywyMTUsMCw4OCwxMTAsMCwwLDExNiwKLSAgICA2LDAsMTI0LDIsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDIwLDEsMTIxLDEzLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDk1LDEzLDAsODcsMTEzLDIwLDEsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwxNiwKLSAgICAxLDEsMSwxLDg5LDExMywyMCwxLDg4LDExMCwwLDAsMTI0LDIsMCw4MywKLSAgICA0MSw3LDc4LDExNCwyMDUsMCwwLDAsMTE0LDI1MSwwLDAsMCwxMTQsMjQ3LDAsCi0gICAgMCwwLDExNCwxMTYsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwyMDksMCwwLAotICAgIDAsNDEsMTQsMTE0LDE3OCwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw1LDEsCi0gICAgMCwwLDExNCw2NywwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwwLAotICAgIDAsMTE0LDYyLDAsMCwwLDExNCwyMDUsMCwwLDAsMTE0LDIxMCwwLDAsMCwKLSAgICAxMTQsNTcsMCwwLDAsMTE0LDI1MSwwLDAsMCwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDMyLDAsMCwwLDExNCwyMDksMCwwLDAsNDEsMywxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyNSw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICA5NSw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsOTUsOTksMTExLDEwOSwxMTIsOTcsMTE2LAotICAgIDEwNSw5OCwxMDgsMTAxLDEzMiw0LDAsMCwxMTUsNDIsMCwwLDAsMCw0LDksCi0gICAgMSwxOSwyLDE2LDEsMjQsMSwzLDEsMTYsMSwxMywxLDgsMSwyNCwKLSAgICAxLDMsNCwxMiwxLDE1LDEsMzIsMSwxMywxLDgsMSwyNCwxLDMsCi0gICAgMSwxMywxLDEzLDEsOCwxLDEyMiwzOCw5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywKLSAgICAxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDE3OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LAotICAgIDEsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDUyLDAsMTE2LDIsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTE1LDUyLDAsCi0gICAgMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsODMsMTEwLDAsMCwxMjQsMCwwLAotICAgIDEwNiw0LDAsMTMxLDAsMCwxMjUsMSwwLDExNiw1LDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDE0Myw4NCwwLDEsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwxNDMsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDYsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDE1NiwwLDExNiw3LDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsOCwwLDEzMSwxLDEsMTMwLAotICAgIDEsMCwxMTMsMTU2LDAsMTEwLDEzLDAsMTI0LDAsMCwxMDYsOSwwLDEyNCwxLAotICAgIDAsMTMxLDEsMCwxLDg3LDEwMCwwLDAsODEsODgsMTE2LDEwLDAsMTA2LDExLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMjUsODMsNDEsNCw3OCwxMTQsCi0gICAgMiwxLDAsMCwxMjIsMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMTE0LDY3LDAsMCwwLDQxLDEyLDExNCwxNzgsMCwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCwxMTQsNjAsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LAotICAgIDEsMSwwLDAsMTE0LDIxMywwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwxNTQsCi0gICAgMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwzLDEsMCwwLDExNCw3LDAsCi0gICAgMCwwLDExNCw3MywwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTgwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCwxNCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LAotICAgIDEwMSwxMDAsMTYyLDQsMCwwLDExNSwyMCwwLDAsMCwwLDIsMTgsMiwyMSwKLSAgICAxLDEzLDIsMTIsMSwxMywxLDE4LDEsMTgsMSwzMCwzLDE5LDUsMTIyLAotICAgIDI3LDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTUsMTA4LAotICAgIDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDgsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDQ5LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsCi0gICAgMTE2LDIsMCwxMjQsMCwwLDEwNiwzLDAsMTA2LDQsMCwxMzEsMSwwLDE0MywKLSAgICAxNSwwLDEsMTI0LDAsMCwxMDYsNSwwLDEzMSwwLDAsODMsODcsMTAwLDEsCi0gICAgMCw4MSw4OCwxMDAsMSwwLDgzLDQxLDIsMTIyLDIwNyw4MiwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDk3LDMyLDExMCwxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwKLSAgICA5OCwxMDYsMTAxLDk5LDExNiw0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsCi0gICAgMTAwLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsCi0gICAgMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsCi0gICAgOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSwKLSAgICA5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMTE1LDQ0LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTA1LDExMCwKLSAgICAxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDYsMTE0LDEwNiwwLAotICAgIDAsMCwxMTQsNCwxLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxNzgsMCwwLAotICAgIDAsMTE0LDY3LDAsMCwwLDExNCw3LDEsMCwwLDQxLDEsMTE0LDcxLDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwxNzcsMCwwLDAsMTg1LDQsMCwwLDExNSw2LDAsMCwwLDAsCi0gICAgOSwxMCwxLDE5LDEsMTIyLDE3LDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwxMTUsNDYsMTA4LDExMSw5NywxMDAsNzgsNDEsMTMsMTE0LDU3LDAsMCwwLAotICAgIDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwKLSAgICA3MiwwLDAsMCwxMTQsMjA2LDAsMCwwLDExNCwyNTUsMCwwLDAsMTE0LDEsCi0gICAgMSwwLDAsMTE0LDMsMSwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsNiwxLAotICAgIDAsMCwxMTQsNywxLDAsMCwxMTQsMTc3LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwxNzUsMCwwLDAsMjI1LDMsMCwwLDExNSwyMCwwLDAsMCwxMiwzLAotICAgIDYsNCwxMiwzLDEyLDE2LDI0LDgwLDEyLDIzLDEyLDEwLDEyLDI0LDEyLDMwLAotICAgIDEyLDIzLDExNCwxNzUsMCwwLDAsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDYsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDIwMSwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSw0LDAsCi0gICAgMTI0LDAsMCwxMDYsMCwwLDEwMCwyLDAsMTMxLDEsMCwxMjUsNSwwLDEyNCwKLSAgICA0LDAsMTE1LDEwMiwwLDEyNCw1LDAsMTE0LDU0LDAsMTI0LDUsMCwxMDYsMSwKLSAgICAwLDEyNSw0LDAsMTEzLDEwMiwwLDEyNCwyLDAsMTI0LDMsMCwxMDcsMiwwLAotICAgIDExNCw4NCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LAotICAgIDQsMCwxMTMsMTAyLDAsMTE2LDMsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsCi0gICAgMCwxMjUsNCwwLDExMCwwLDAsMTI0LDUsMCwxMTUsMTMyLDAsMTE2LDQsMCwKLSAgICAxMjQsMSwwLDEyNCwyLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDEsMTI1LAotICAgIDUsMCwxMTAsMCwwLDEyMSw0NCwwLDEyNCw1LDAsMTI0LDAsMCwxMDAsMiwKLSAgICAwLDYwLDEyNCw0LDAsMTI0LDAsMCwxMDAsMSwwLDYwLDEyNCwyLDAsMTI0LAotICAgIDAsMCwxMDAsNCwwLDYwLDEyNCwzLDAsMTI0LDAsMCwxMDAsNSwwLDYwLAotICAgIDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTk2LDAsMSwxLAotICAgIDEsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDYsNzgsMTE0LDIwNSwwLAotICAgIDAsMCwxMTQsMjA5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIxMSwwLDAsCi0gICAgMCwxMTQsMjQ1LDAsMCwwLDQxLDYsMTE0LDkzLDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwyNDAsMCwwLDAsMTE0LAotICAgIDIwOCwwLDAsMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsNjcsMCwwLDAsOTAsCi0gICAgOCwxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiw5NywxMTYsMTA0LAotICAgIDExMCw5NywxMDksMTAxLDExNCwxNzAsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTQsOTUsCi0gICAgMTAyLDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTksNCwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDE1LDEsNiwxLDYsMSwKLSAgICAxMiwxLDEyLDEsMTgsMiwxOCwxLDYsMSwyNCwxLDMsMSwxMCwxLAotICAgIDEwLDEsMTAsMSwxNCwxLDEzLDIsMTE0LDEwLDEsMCwwLDk5LDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwKLSAgICAwLDAsMTE1LDE4MSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLAotICAgIDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsCi0gICAgMCwxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsCi0gICAgOTAsNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLAotICAgIDEsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMSw5LDAsMTAwLDksCi0gICAgMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMCwwLAotICAgIDEwMSw2LDAsMTAxLDksMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw2LDAsMTAxLDksMCwxMDAsMTMsCi0gICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMiwwLAotICAgIDEwMSw2LDAsMTAxLDksMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsMTMxLDEsMCw5MCwxMywwLDEwMCw0LDAsODMsNDEsMTcsMjE4LDE1LAotICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsCi0gICAgMTQ0LDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsCi0gICAgMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LAotICAgIDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsCi0gICAgMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsCi0gICAgMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsCi0gICAgMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTIyLDI0LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAotICAgIDMyLDQwLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQxLDYyLDQxLDIsMTE0LDQ3LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCw0MSwxLDExNCwxODAsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIwNiwKLSAgICAwLDAsMCwyMzMsNCwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNywKLSAgICA2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDU4LDAsMCwwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICAxNiwwLDEwMCwwLDAsODMsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMTQsNTAsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTMxLDIsMSw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsCi0gICAgNDEsMyw3OCwxMTQsMjE4LDAsMCwwLDEyMiw4LDk4LDExNywxMDUsMTA4LDExNiw0NSwKLSAgICAxMDUsMTEwLDQxLDMsMTE0LDEwNiwwLDAsMCw5MCwxMCwxMDUsMTE1LDk1LDk4LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDExNCwxNzQsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsCi0gICAgMTE1LDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDIxOCw2LDExNiw5NywxMTQsCi0gICAgMTAzLDEwMSwxMTYsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDI0Miw0LDAsCi0gICAgMCwxMTUsMTAsMCwwLDAsMCwyLDEyLDEsNCwxLDE1LDEsMTksMiwKLSAgICAxMjIsMjUsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLAotICAgIDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSw0MSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwKLSAgICAxMTQsMzcsMCwxMjQsMywwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLAotICAgIDEyMiwxNzUsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwKLSAgICAxMTUsMzIsMTAxLDExOCwxMDEsMTE0LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LAotICAgIDMyLDEwMiw5NywxMDUsMTA4LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwKLSAgICAxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwKLSAgICAxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3OCw0MSwyLDExNCwxNCwxLDAsMCwxMTQsMTcwLDAsMCwwLDQxLDQsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAyNTEsNCwwLDAsMTE1LDQsMCwwLDAsMCw5LDE4LDEsMTIyLDI3LDY2LAotICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDMsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDU5LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDE0MywyMywwLAotICAgIDEsMTE2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMiwwLAotICAgIDEyNSwyLDAsODcsMTAwLDEsMCw4MSw4OCwxMjQsMCwwLDEyNCwyLDAsOTUsCi0gICAgNCwwLDEwMCwyLDAsMTI0LDIsMCw5NSw1LDAsMTI0LDIsMCw4Myw0MSwKLSAgICAzLDEyMiwyMyw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwKLSAgICAxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCwzMCwwLDAsMCwKLSAgICA0MSw2LDExNCw2OSwwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxMDYsMCwwLAotICAgIDAsOTAsMTIsMTA1LDExMCwxMDUsMTE2LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNCwKLSAgICAyMDUsMCwwLDAsMTE0LDI1MSwwLDAsMCw0MSwzLDExNCwxMiwxLDAsMCwKLSAgICAxMTQsMTU5LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUsMSwwLDAsNyw1LAotICAgIDAsMCwxMTUsMTAsMCwwLDAsMCw2LDEzLDEsMjQsMSw5LDEsOSwKLSAgICAxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwNSwwLDEyMSwxMywKKyAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LAorICAgIDEsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEwLDEsMCw4OCwKKyAgICAxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDUsMCw4NywxMTAsMjQsMCwKKyAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDE0NCwwLDEsMSwxLDEwMCwwLDAsCisgICAgMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwKKyAgICAwLDExNCwyMTgsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjEyLDAsCisgICAgMTIxLDEzLDAsMTI0LDEsMCwxMDYsNSwwLDEyNSwyLDAsODcsMTEzLDIxOCwwLAorICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMjA4LDAsMSwxLDEsMTAwLDAsMCwKKyAgICAxMjUsMiwwLDg5LDExMywyMTgsMCw4OCwxMTAsNiwwLDEyNCw1LDAsMTI1LDIsCisgICAgMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsMTI1LDYsMCw4NywxMTAsMjQsCisgICAgMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDEsMSwxLDEsMSwxMDAsMCwKKyAgICAwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsMTksMCwxMTYsNywwLDEyNCwKKyAgICAwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKKyAgICAxMTYsMSwwLDEwNywxMCwwLDExNCw0NywxLDEsMSwxLDEwMCwwLDAsMTI1LAorICAgIDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDQsMCwxMjQsMSwwLAorICAgIDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwzLDAsMTI0LDUsMCwxMDAsCisgICAgMCwwLDEwNyw4LDAsMTE0LDg3LDEsMTAwLDIsMCwxMTAsMywwLDEwMCwzLAorICAgIDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsMTI0LDMsMCw5NSwxMSwwLAorICAgIDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwzLDAsODMsNDEsNCw3OCwKKyAgICAxMTQsMTA3LDAsMCwwLDcwLDg0LDQxLDEzLDExNCw5NSwwLDAsMCwxMTQsOTYsCisgICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5OCwwLAorICAgIDAsMCw5MCw3LDk1LDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDEwNiwwLDAsMCwxMTQsMTExLDAsMCwKKyAgICAwLDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCw0MSw4LDExNCw4OSwwLAorICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsODgsMCwwLAorICAgIDAsMTE0LDE1LDAsMCwwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSwKKyAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjA5LDEsMCwwLAorICAgIDExNSw3MiwwLDAsMCwwLDIsMywxLDEzLDEsMTMsMSw1LDIsMTIsCisgICAgMSw0LDIsOSwxLDEyLDEsMywxLDEzLDEsMTMsMiw1LDEsMywKKyAgICAxLDEzLDEsMTMsMSwxMSwxLDEyLDEsMTIsMSwzLDEsMTMsMSwxMywKKyAgICAxLDE0LDIsNiwxLDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTksCisgICAgMSwxMywxLDExLDIsMjEsMSwyNywxLDksMSw5LDEsMTE0LDEzMiwwLAorICAgIDAsMCwyMTgsOCwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDcwLDk5LDIsMCwKKyAgICAwLDAsMSwwLDAsMCw1LDAsMCwwLDU5LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw1NCwyLDAsMCwxMjQsMiwwLDExNSwzMCwwLDExNiwwLDAsCisgICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDY3LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAorICAgIDAsOTUsMiwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCisgICAgNjYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk3LDAsCisgICAgMTE2LDAsMCwxMjQsMSwwLDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwKKyAgICAwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwzLAorICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDE4NywwLDEyNCwwLDAsCisgICAgMTA2LDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE4NywwLDExNiw2LDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCwxNTEsMCwxMTYsNywwLDEzMCwxLDAsMTE2LDYsCisgICAgMCwxMDYsOCwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsOSwwLDEyNCw0LDAsCisgICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMywwLDk1LAorICAgIDEwLDAsMTIxLDEzLDAsMTI0LDMsMCwxMjQsMSwwLDk1LDExLDAsODcsMTEwLAorICAgIDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjAsMCwxLDEsMSw4OSwKKyAgICAxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1MSwwLDExNiwwLDAsMTI0LDEsMCwKKyAgICAxMDAsMywwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAorICAgIDMyLDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjQsMSwwLDk1LDEzLAorICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwzMSwxLDEsCisgICAgMSwxLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAorICAgIDk1LDE0LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2NSwKKyAgICAxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTYsMSwxMTYsCisgICAgMCwwLDEyNCwxLDAsMTAwLDQsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCisgICAgMCwxMDcsOCwwLDExNCwxNDgsMSwxMjQsMCwwLDEwNiw1LDAsMTAwLDAsMCwKKyAgICAxMDcsOSwwLDExNCwxNDgsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LAorICAgIDEsMCw5NSwxNSwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKKyAgICAxMTQsMTQ3LDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMCwwLDEwNiwxNiwKKyAgICAwLDExNCw1MCwyLDEyNCwyLDAsMTE1LDE4NywxLDExNiwwLDAsMTI0LDEsMCwKKyAgICAxMDAsNSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAorICAgIDIyNCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE3LDAsMTI0LDEsMCw5NSwxOCwKKyAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIzLDEsMSwKKyAgICAxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTQsMSwxMTYsMCwwLAorICAgIDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCw1MCwyLDEyNCwwLDAsMTA2LDE5LDAsMTAwLDAsMCwxMDcsOSwKKyAgICAwLDExNCw1MCwyLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE5LDAsMTI0LDEsMCwKKyAgICA5NSwyMCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDksCisgICAgMiwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKKyAgICAxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTMxLDAsMCwwLDExNCw5OCwwLDAsCisgICAgMCwxMTQsMTI5LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCwxMTQsMSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk5LDAsMCwKKyAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLAorICAgIDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDExNCw5MSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxMzQsMCwwLAorICAgIDAsMTE0LDk1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDExNywwLDAsMCwKKyAgICAxMTQsMTA3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwKKyAgICAxMjksMCwwLDAsNDEsNSwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLAorICAgIDExNCwxMzMsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LAorICAgIDExNCwxMTUsMjU0LDEsMCwwLDExNSw5MiwwLDAsMCwwLDQsMzAsMSwzLAorICAgIDEsMTYsMSwxMywxLDUsMiwzMCwxLDksMSwxMiwyLDE1LDEsMTIsCisgICAgMSw2LDEsOSwyLDE1LDEsMTIsMSwzLDEsMTMsMSwxMywxLDUsCisgICAgMiwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMsMSwxMywxLDEzLAorICAgIDEsNSwyLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDUsMiw5LAorICAgIDEsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzMCwxLDE1LDEsMywKKyAgICAxLDE2LDEsMTMsMSw1LDEsMTE0LDEzNywwLDAsMCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMjksMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMDYsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNDUsMCwxMjQsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwKKyAgICAxMTAsNDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwKKyAgICAyLDAsMTE0LDg1LDAsMTE2LDMsMCwxMDYsNCwwLDEwMCw0LDAsMTE2LDUsCisgICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDEyNCwxLDAsMTAwLDEsCisgICAgMCwxMDcsOCwwLDExNCwxMTIsMCwxMTYsNiwwLDEyNCwwLDAsMTA2LDcsMCwKKyAgICAxMzEsMSwwLDEyNSwxLDAsMTE2LDgsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAorICAgIDIsMCwxLDEyNCwxLDAsODMsNDEsNywxMjIsNDMsNjcsMTE0LDEwMSw5NywxMTYsCisgICAgMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAorICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDEwMCwKKyAgICAzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMjIsODcsMTE1LDExNiw5NywxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTAsCisgICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw1MSw0Niw1NCw0NCwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDEwMSwxMjAsCisgICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwKKyAgICAzMiw5NywxMDgsMTE1LDExMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5OSwxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsOTAsMTAsMTE1LDExNiwKKyAgICA5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwyMzMsMiwwLDAsMCw0MSw5LDExNCwKKyAgICA0LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM4LDAsMCwwLDIxOCw5LAorICAgIDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsCisgICAgMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLAorICAgIDEwNSwxMTAsMTAzLDExNCwxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzNywwLAorICAgIDAsMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw1OCwKKyAgICAyLDAsMCwxMTUsMjAsMCwwLDAsMCwzLDYsMSwxOCwzLDIxLDEsCisgICAgMTgsMSw5LDIsMTMsMSwxMiwxLDE1LDEsMTMsMSwxMTQsMTQ0LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDEwMCwyLDAsMTEwLDYsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLAorICAgIDEsMCwxMDcsOCwwLDExNCw5NSwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMSwKKyAgICAwLDEwNyw4LDAsMTE0LDczLDAsMTAwLDMsMCwxMDYsMywwLDEyNCwxLDAsCisgICAgMTMxLDEsMCw4MywxMDAsNCwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLAorICAgIDEwNiwyLDAsMTMxLDIsMCw4MywxMTAsNTAsMCwxMjQsMCwwLDEwNiw0LDAsCisgICAgMTE0LDEyMywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LAorICAgIDEsMCwxMzEsMiwwLDgzLDEwMCw2LDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsODMsMTAwLDEsMCw4MywKKyAgICA0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwKKyAgICAxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw5MywwLDAsMCwKKyAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAorICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKKyAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LAorICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsCisgICAgNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsOTksCisgICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMTcsMCwwLDAsNDEsMiwxMTQsCisgICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5NywwLDAsMCw3NiwyLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMCwzLDMwLDEsMTUsMSwxNSwxLDEzLDIsCisgICAgMjIsMiw5LDEsMTksMiwxMTQsOTcsMCwwLDAsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDI1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKKyAgICAwLDEwNiwyLDAsMTMxLDAsMCwxLDExNiwzLDAsMTI0LDIsMCwxMzEsMSwKKyAgICAwLDE0MywyMDgsMCwxLDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDEyNCwyLAorICAgIDAsMTMxLDEsMCwxMjQsMSwwLDEwNyw5LDAsMTE0LDg5LDAsMTAwLDEsMCwKKyAgICAxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiw4LDAsMTI0LAorICAgIDMsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsMSwxMzAsMSwwLDEyNCwwLAorICAgIDAsMTA2LDksMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE2MywwLDEyNCwwLDAsCisgICAgMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNDAsMCwxMTYsOCwwLDEwMCwKKyAgICA0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDEsMSwxMzAsMSwKKyAgICAwLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCisgICAgMTMxLDIsMSwxLDEyNCwxLDAsODMsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwKKyAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTE2LDEyLDAsMTI0LDAsCisgICAgMCwxMDYsOSwwLDEwMCw3LDAsMTMxLDIsMCwxMTUsMjE5LDAsMTI0LDAsMCwKKyAgICAxMDYsOSwwLDEwNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxLDExMCwxNiwwLAorICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTQsMCwxMjQsMSwwLDEzMSwxLDAsMSwKKyAgICA4NywxMDAsMywwLDgxLDgyLDg4LDExNiw0LDAsMTA2LDUsMCwxMjQsMiwwLAorICAgIDI1LDgzLDQxLDgsMTIyLDUxLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsCisgICAgMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwKKyAgICAxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNCwxNSwwLDAsMCw3OCwxMjIsCisgICAgMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAorICAgIDEzMywwLDAsMCw4NCwxMTQsMTM5LDAsMCwwLDQxLDE1LDExNCwxNSwwLDAsCisgICAgMCwxMTQsNTcsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMTE0LDU0LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsCisgICAgMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwKKyAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEzNywwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsMCw0MSw0LDExNCw4OCwwLDAsMCwxMTQsCisgICAgODksMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCwzLDEwOSwxMTUsMTAzLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NiwwLAorICAgIDAsMCw5MywyLDAsMCwxMTUsMzIsMCwwLDAsMCwyLDksMSwxMCwKKyAgICAxLDEzLDEsMjQsMSwxNSwxLDE4LDEsMTUsMSwxNSwxLDIxLDIsMTksCisgICAgMSw0LDEsMTksMSwxOCw0LDE5LDIsMjMsMSwxMTQsODYsMCwwLDAsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDMsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEwNiwxLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMSwxMTYsMywwLAorICAgIDEwNiw0LDAsMTI0LDAsMCwxMDYsMiwwLDI1LDEyNSwxLDAsMTE2LDUsMCwKKyAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAorICAgIDgsMCwxMTQsOTYsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCisgICAgMCw5NSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKKyAgICA5NSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LDUsMCwxMjQsMSwwLAorICAgIDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMTk3LDAsMTIxLDU2LDAsMTI0LDEsMCwxMDYsOCwwLDEyNCwxLDAsOTUsOSwKKyAgICAwLDExNiwxMCwwLDEyNCwxLDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxNzUsMCwKKyAgICAxMjQsMCwwLDEwNiwyLDAsMTA2LDExLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwKKyAgICA1LDAsMjUsMTI0LDEsMCw5NSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywKKyAgICAwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiwKKyAgICA1LDAsMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKKyAgICAwLDEwNyw4LDAsMTE0LDI1NSwwLDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKKyAgICA5NSwxMiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMjU0LAorICAgIDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCisgICAgMTE0LDkxLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCisgICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsMTMsCisgICAgMTE0LDk5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKKyAgICAxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDkxLAorICAgIDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTM0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDk1LDAsMCwKKyAgICAwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTA4LAorICAgIDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksCisgICAgMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSwxMTgsMiwwLDAsMTE1LDQwLDAsMCwwLAorICAgIDAsNCwxOSwyLDE2LDEsMjQsMSwzLDEsMTYsMSwxMywxLDUsMSwKKyAgICAyNCwxLDMsNCwxMiwxLDE1LDEsMjksMSwxMywxLDUsMSwyNCwxLAorICAgIDMsMSwxMywxLDEzLDEsNSwxLDExNCwxNDgsMCwwLDAsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwKKyAgICAxMDcsOSwwLDExNCw0MywwLDExNiwxLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKKyAgICAxLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsCisgICAgMCw4MywxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDExNiw0LAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDE0Myw3NSwwLDEsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTIyLDAsMTI0LDAsMCwxMDYsNSwwLAorICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDYsMCwxMDAsMiwwLDEwMCwKKyAgICAzLDAsMTI0LDAsMCwxMDYsNywwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMTYsCisgICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgMSw4NywxMDAsMCwwLDgxLDgyLDg4LDExNiw5LDAsMTA2LDEwLDAsMTI0LDAsCisgICAgMCwxMDYsNywwLDI1LDgzLDQxLDQsNzgsMTE0LDEzOSwwLDAsMCwxMjIsMTQsCisgICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDE1LAorICAgIDAsMCwwLDQxLDExLDExNCw5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgMTQ4LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTEwLAorICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzOSwwLAorICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDQxLDIsMTE0LDg4LAorICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAorICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE0NywyLDAsMCwxMTUsMjAsMCwwLDAsCisgICAgMCwyLDE1LDIsMTgsMSwxMCwyLDEyLDEsMTMsMSwxNSwxLDE1LDEsCisgICAgMjQsMywyMyw1LDExNCwxNDksMCwwLDAsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsNDcsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMTYsMiwwLAorICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMSwwLDE0MywxNSwwLDEsMTE2LDQsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwKKyAgICAwLDgzLDQxLDIsMTIyLDE5MSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwKKyAgICAxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKKyAgICA0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LAorICAgIDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA3MywxMDIsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywKKyAgICAxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwKKyAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LAorICAgIDEwLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwKKyAgICAwLDAsMTE0LDU0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQ5LDAsMCwKKyAgICAwLDQxLDEsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw4NywwLDAsMCwxNzAsMiwwLDAsCisgICAgMTE1LDYsMCwwLDAsMCw5LDEwLDEsMTYsMSwxMTQsODcsMCwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjA1LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLAorICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsCisgICAgMCwxMDAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsCisgICAgMTMxLDEsMCw5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLAorICAgIDgsMCwxMzIsMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksCisgICAgMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw2LDAsCisgICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLAorICAgIDYsMCwxMDEsMTEsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE1LDAsCisgICAgMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsCisgICAgNiwwLDEwMSwxMSwwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDkwLDE0LDAsMTAxLDYsMCwxMDEsMTUsMCwxMzEsMSwwLAorICAgIDkwLDE2LDAsMTAwLDQsMCw4Myw0MSwxOSwyMTgsMTUsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDQsNzcsMTAxLDExNiw5NywKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwKKyAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAorICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCisgICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCisgICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCisgICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCisgICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAorICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAorICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKKyAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAorICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCisgICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCisgICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCisgICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKKyAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCisgICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCisgICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAorICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAorICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAorICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAorICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKKyAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCisgICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKKyAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAorICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKKyAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAorICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKKyAgICAxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjEzLDIsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsOSwxOCwxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLAorICAgIDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsCisgICAgNTEsMCwxMTYsMywwLDEwMCwxLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwwLAorICAgIDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTA2LDAsMCwxMzEsMSwxLAorICAgIDEzMCwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsCisgICAgMiwwLDgzLDQxLDMsMTIyLDI0LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCisgICAgMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsCisgICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKKyAgICA3NiwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwKKyAgICAwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsMTM4LDAsMCwwLDIyNSwyLDAsMCwxMTUsOCwwLDAsCisgICAgMCwwLDMsMTgsMSwyMSwxLDEyLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKKyAgICAwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyMiw2OSwxMjAsMTAxLDk5LDMyLDk3LAorICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc4LDQxLDMsMTE0LDY1LDAsMCwwLDExNCw1NywwLDAsMCw5MCwxMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLAorICAgIDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsMCwyMzMsMiwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLAorICAgIDgzLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsCisgICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LAorICAgIDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAorICAgIDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjM4LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NywKKyAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDU2LAogICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk4LAogICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICAxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwKLSAgICA5OSwxMTEsMTAwLDEwMSwxOSw1LDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLAotICAgIDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKLSAgICA0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAotICAgIDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsODIsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsCi0gICAgMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwKLSAgICAxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDI1LDUsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsCi0gICAgMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDUyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCi0gICAgNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMDEsCi0gICAgMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0Niw3MCwxMTQsNCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMzEsNSwwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNiwKLSAgICA2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMTQsMTE0LDU3LDAsMCwKLSAgICAwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLAotICAgIDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDIwNiwKLSAgICAwLDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMTE0LDE0LDEsMCwwLDExNCwxNSwxLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwKLSAgICA1LDEsMCwwLDExNCwxNiwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDIyMCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTEsMSwwLDAsMjI0LDQsMCwwLAotICAgIDExNSwyOCwwLDAsMCwxMiw3LDYsMiwxOCw5LDMsMSwyMSw4LDMsCi0gICAgMSwxOCwxMSwzLDEsMjEsMTEsMywxLDIxLDUsMywxLDIxLDUsMywKLSAgICAxLDExNCwxMSwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCw1LDAsMCwwLDY0LDAsMCwwLDExNSwxOTMsMCwwLDAsCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKLSAgICAzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDUsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDQsMCwxMDAsNSwwLAotICAgIDEwMCw2LDAsMTMyLDIsMCwxMzEsMSwwLDkwLDcsMCwxMDEsNiwwLDEwMCwKLSAgICA0LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwxLDAsMTMxLDEsMCw5MCw4LAotICAgIDAsMTAxLDQsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCwKLSAgICA5MCw5LDAsMTAxLDYsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTAsMCwxMDEsNiwwLDEwMSwxMSwwLDEwMCwxMywwLDEwMCwxNCwKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEyLDAsMTAxLDYsMCwKLSAgICAxMDEsMTEsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE3LDAsMTAwLDE4LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDAsNCwwLAotICAgIDgzLDQxLDE5LDIxOCwxNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LAotICAgIDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLAotICAgIDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsCi0gICAgMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywKLSAgICAxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsCi0gICAgMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwKLSAgICAxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LAotICAgIDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwKLSAgICAxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDQ3LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCw0MSwxLDIxOCwxLDEwOSwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjA2LDAsMCwKLSAgICAwLDQ3LDUsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LAotICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwwLAotICAgIDAsMCw0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLAorICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyNDQsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAorICAgIDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAorICAgIDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxMDksMCwwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAorICAgIDE3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMTE0LDkyLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LAorICAgIDEzOCwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsMTU2LAorICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTAsMCwKKyAgICAwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1MCwwLDAsMCwKKyAgICAxODYsMiwwLDAsMTE1LDMwLDAsMCwwLDEyLDcsNiwyLDE4LDksMywKKyAgICAxLDIxLDgsMywxLDE4LDExLDE4LDgsMTgsNSwzLDEsMjEsNSwzLAorICAgIDEsMjEsNSwzLDEsMjEsNSwxMTQsMTUwLDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDIxMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAorICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsCisgICAgNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsCisgICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LDAsMTAwLDEwLDAsCisgICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMSwwLDEwMCwKKyAgICAxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAwLDEzLAorICAgIDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwKKyAgICAxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDEyLDAsMTAwLDE3LDAsMTAwLDE4LAorICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLAorICAgIDEwMSwxMiwwLDEwMCwxOSwwLDEwMCwyMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDE1LDAsMTAwLDQsMCw4Myw0MSwyMSwyMTgsMTQsNzAsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0Miw3NywxMDEsMTE2LAorICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwKKyAgICAwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwKKyAgICA0MSwxLDIxOCwxLDEwOSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIsMywwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgNzgsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMzQsMCwxMTYsMiwwLDEyNCwxLDAsCisgICAgMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLDIsMSw4MywxMDAsMCwwLAorICAgIDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LDAsMCwwLDkwLDYsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsMywxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwKKyAgICAwLDExNCw4NSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsCisgICAgMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU0LDAsMCwwLAorICAgIDIxLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxNSwxLDE5LDIsMTIyLAorICAgIDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywKICAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCwKLSAgICAzNCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsCi0gICAgMCwxMzEsMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LAotICAgIDExNCwyMTgsMCwwLDAsOTAsNiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCwKLSAgICAxMDYsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDQsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAxMywxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsMTQsMSwwLDAsNTYsNSwwLDAsMTE1LDYsMCwwLAotICAgIDAsMCwyLDE1LDEsMTksMiwxMjIsMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLAotICAgIDk5LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDE5LDAsMTI0LDAsMCw4MywxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDkzLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKLSAgICAzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LDE2MywwLDAsMCwKLSAgICA0MSwzLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMTUsMSwwLDAsNjMsNSwwLDAsMTE1LDIsMCwwLDAsMCw3LAotICAgIDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKLSAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsOTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTI1LAotICAgIDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw1NywKLSAgICAwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTE2LAotICAgIDYsMCwxMTYsMiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwyLAotICAgIDAsMTE2LDgsMCwxMjQsMiwwLDEyNCwwLDAsMTA2LDksMCwxMzEsMiwwLAotICAgIDEsMTAwLDAsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwzMiwxMDUsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCw2NywwLDAsMCw0MSwxMCwxMTQsMjA5LDAsMCwKLSAgICAwLDExNCw2NywwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwxNjMsMCwwLDAsCi0gICAgMTE0LDE1NCwwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsCi0gICAgMTcsMTAzLDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsCi0gICAgOTksMTE2LDExNCwxNzYsMCwwLDAsMTE0LDYzLDAsMCwwLDQxLDMsMTE0LDE4MCwKLSAgICAwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMiwxLDAsCi0gICAgMCw3Miw1LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEyLDEsMTUsMSwKLSAgICAxOCwxLDEyLDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCisgICAgMTksMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsOTMsNzAsMTA1LAorICAgIDExMCwxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDU3LAorICAgIDAsMCwwLDExNCw4MiwwLDAsMCw0MSwzLDExNCwxNTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1NSwwLDAsMCwyOCwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LAorICAgIDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsCisgICAgNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsODgsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDEzOCwwLDAsMCwzNywzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMjgsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDkyLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLAorICAgIDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMTUsCisgICAgNTQsMCwxMTYsNCwwLDEwMCwxLDAsMTA2LDUsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTYsNiwwLAorICAgIDExNiwyLDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMTYsCisgICAgOCwwLDEyNCwyLDAsMTI0LDAsMCwxMDYsOSwwLDEzMSwyLDAsMSwxMDAsCisgICAgMCwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDEwLDExNCw5NSwwLDAsMCwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsNzcsCisgICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwwLDAsMCwyMTgsMTcsMTAzLAorICAgIDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCw3LDAsMCwwLDQxLDMsMTE0LDg5LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM5LDAsMCwKKyAgICAwLDQxLDMsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTIsMSwxNSwxLAorICAgIDE4LDEsOSwxLDE4LDEsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LAogICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKICAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCiAgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LApAQCAtMjI2NiwxMCArMTQ1NiwxMCBAQAogICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKICAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAogICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDE4MSwKLSAgICAwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw1LAotICAgIDEsMCwwLDgxLDUsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsCisgICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAorICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKKyAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAogICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKICAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKICAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LApAQCAtMjI3Nyw5ICsxNDY3LDkgQEAKICAgICA4Myw0MSwxLDEyMiw0NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0Niw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LDIyLDEsMCwwLDQxLDIsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE2LDEsMCwwLDkwLDUsCisgICAgMTAxLDQ2LDQxLDIsMTE0LDU3LDAsMCwwLDExNCwxNjIsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU2LDAsMCwwLDU5LDMsCiAgICAgMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjMsNzAsMTE0LDExMSwxMjIsMTAxLAogICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAogICAgIDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKQEAgLTIyODcsMTAgKzE0NzcsMTAgQEAKICAgICA0MSwyLDEyMiw1NCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAogICAgIDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLAotICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLAotICAgIDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3LDEsMCwwLAotICAgIDk2LDUsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsCisgICAgNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDY1LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKICAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCiAgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKICAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKQEAgLTIyOTgsMjA3OSArMTQ4OCw1MDEgQEAKICAgICA0Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsCi0gICAgMiwxMTQsMTA2LDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LDEyLDEsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMDIsNSwwLDAsMTE1LDIsMCwKKyAgICAyLDExNCw1NywwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNTEsMCwwLDAsCisgICAgMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCwxMDksMCwwLDAsNzEsMywwLDAsMTE1LDIsMCwKICAgICAwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAogICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNSwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwKLSAgICAxMTQsNTksMCwwLDAsMTE0LDE4LDEsMCwwLDExNCwyMDYsMCwwLDAsMTE0LAotICAgIDE5LDEsMCwwLDExNCwxNCwxLDAsMCwxMTQsMTUsMSwwLDAsMTE0LDIsCi0gICAgMSwwLDAsMTE0LDUsMSwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTYsMSwKLSAgICAwLDAsMTE0LDE3LDEsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDIwLDEsMCwwLDM4LDUsMCwwLDExNSwyOCwwLDAsMCwxMiw3LAotICAgIDYsMiwxOCw5LDMsMSwyMSw2LDMsMSwxOCw4LDE4LDksMTgsOSwKLSAgICAzLDEsMjEsNSwzLDEsMjEsNSwzLDEsMTE0LDIwLDEsMCwwLDk5LAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDkwLDQsCi0gICAgMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsMCwxMDEsNywwLAotICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSwKLSAgICA3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LAotICAgIDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwxMDAsOSwwLDEwMCwKLSAgICAxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMCw5LAotICAgIDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsCi0gICAgMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiw2Miw3NywxMDEsMTE2LAotICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsCi0gICAgMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTIyLDU5LDgzLDExMSwxMDIsCi0gICAgMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsCi0gICAgMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsMTAyLAotICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMjIsNjUsODMsMTExLDEwMiwxMTYsMTE5LDk3LAotICAgIDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLAotICAgIDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDcwLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LAotICAgIDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMTAsMzcsMCwKLSAgICA0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLDEsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNSwyMTgsNywKLSAgICA5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsMTEwLDc1LDEwMSwxMjEsCi0gICAgOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksNzgsODQsOTUsODUsCi0gICAgODMsNjksODIsMTE0LDQwLDAsMCwwLDkwLDE4LDcyLDc1LDY5LDg5LDk1LDc2LAotICAgIDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQxLDIsMTE0LDEyLAotICAgIDEsMCwwLDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LAotICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMjEsNSwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCwyLDMsMSwyMywxLDEzLDEsMTIyLDM2LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNDIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNCwyMSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLDEwMCwxLDAsMTI0LAotICAgIDEsMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsMCwwLDEwMCwzLAotICAgIDAsMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLDQ2LDAsMTI0LDAsCi0gICAgMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsMCwxMjUsNCwwLAotICAgIDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsMTMxLDIsMCwxMjUsCi0gICAgNSwwLDg3LDEwMCwwLDAsODEsODgsODcsMTEwLDIyLDAsNCwxMTYsOSwwLAotICAgIDEwNywxMCwwLDExNCwxMzcsMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDUsMCw4Myw0MSw1LDc4LDExNCwxNTksMCwwLDAsOTAsMTEsCi0gICAgMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDMwLDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSw2Niw4NSw3MSw5NSw2NiwKLSAgICA4NSw3Myw3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsCi0gICAgNjksODksOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLDY5LDcxLDczLDgzLDg0LAotICAgIDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0NywwLDAsMCwxMTQsNywwLDAsMCwKLSAgICAyMTgsNywxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDI2LDEsMCwwLDExNCwyNCwKLSAgICAxLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LDExNywxMDEsMTE0LAotICAgIDQwLDAsMCwwLDQxLDYsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsCi0gICAgOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLDEyMSwxMTQsMjUsCi0gICAgMSwwLDAsOTAsNCwxMDQsMTA3LDEwMSwxMjEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMiwKLSAgICA5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCwxNiw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LAotICAgIDExNSwxMTYsMTE0LDEyMSwxMjgsNSwwLDAsMTE1LDIyLDAsMCwwLDAsMiw5LAotICAgIDEsMTIsMiw5LDEsMTUsMSwyMiwxLDMsMSwxOCwxLDI4LDEsMTMsCi0gICAgMSw5LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LAotICAgIDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsMTE0LAotICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDc4LDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxNTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzMSwKLSAgICAwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwxMjQsNCwwLDEzMSwxLAotICAgIDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY5LDAsCi0gICAgMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLDg4LDEyMCw3OCwwLDExNiwKLSAgICAzLDAsMTMxLDAsMCw2OCw5Myw2NywwLDkyLDIsMCwxMjUsNSwwLDEyNSwKLSAgICA2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsMTI0LDYsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMjQsMSwwLDEyNCw1LDAsCi0gICAgMTI0LDEsMCwxMjQsNCwwLDEzMSwyLDAsMTAwLDEsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDEsMTI1LDcsMCwxMjQsNywwLDgzLDExMyw4MCwwLDg3LDEwMCwwLDAsCi0gICAgODMsNDEsMiw3OCwxMTQsMjE4LDAsMCwwLDQxLDcsMTE0LDMyLDEsMCwwLAotICAgIDExNCwzOSwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsCi0gICAgMjMxLDAsMCwwLDExNCwyMzIsMCwwLDAsMTE0LDE3NCwwLDAsMCw0MSw4LAotICAgIDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgMTMsMSwwLDAsMTE0LDMxLDEsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDEyNiwKLSAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNCwxLDAsMCwxNDMsNSwwLDAsCi0gICAgMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDEyLDEsNCwxLDMsMSwxNCwKLSAgICAxLDEzLDEsOSwxLDIyLDEsMjEsMSwyMSwxLDksMSwxMjIsMzEsODcsCi0gICAgMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKLSAgICAwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwKLSAgICAxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAotICAgIDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTQsMSwwLDAsMTE0LDE3MCwwLAotICAgIDAsMCw0MSw0LDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwKLSAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNSwxLDAsMCwxNTgsNSwwLDAsCi0gICAgMTE1LDgsMCwwLDAsMCw3LDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LAotICAgIDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MSwxMiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsCi0gICAgMCwxMTQsNTksMCwwLDAsMTE0LDI5LDEsMCwwLDExNCwyOCwxLDAsMCwKLSAgICAxMTQsMjcsMSwwLDAsMTE0LDE5LDEsMCwwLDExNCwyNiwxLDAsMCwxMTQsCi0gICAgMzIsMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwxNSwxLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsMjMsMSwwLDAsMTA5LDUsMCwwLDExNSwyMCwwLDAsMCwKLSAgICAxMiwyLDYsMyw2LDMsNiwyLDYsMiwxOCw3LDE4LDE1LDMsMSwKLSAgICAyMSwxNCwzLDEsMTE0LDIzLDEsMCwwLDk5LDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDUyLAotICAgIDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKLSAgICAxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsCi0gICAgMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCwKLSAgICA5MCw3LDAsMTAwLDYsMCw4Myw0MSw3LDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTIyLDgzLDY2LDk3LDExNSwxMDEsMzIsOTksCi0gICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsCi0gICAgMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsCi0gICAgMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDUsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMjUsMiwwLAotICAgIDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDIsMCwxMDAsCi0gICAgMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwxMDYsMywwLDEwMCwyLDAsMTMxLAotICAgIDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsMTI0LDMsMCwxMDAsNSwwLDEwNywKLSAgICAyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsNSwwLDEwNywzLDAsODMsNDEsCi0gICAgNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwKLSAgICAxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsCi0gICAgOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwKLSAgICAxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsCi0gICAgMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LAotICAgIDExNCwyOSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsCi0gICAgMTE1LDAsMCwwLDExNCw3MiwwLDAsMCw0MSw0LDExNCwzOCwwLDAsMCwKLSAgICAxMTQsMjM5LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsCi0gICAgNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTMxLDAsMCwwLAotICAgIDkwLDEzLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDkwLAotICAgIDksMTE2LDk3LDEwNSwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyMCwwLDAsMCwxNzcsNSwKLSAgICAwLDAsMTE1LDgsMCwwLDAsMCwzLDI1LDEsMjIsMSwxOSwxLDEyMiwKLSAgICAyNCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA1LAotICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU3LAotICAgIDAsMTE2LDIsMCwxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTE2LDQsMCwxMTYsCi0gICAgNSwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMDAsCi0gICAgMSwwLDgzLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwKLSAgICAxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKLSAgICAxMjMsMzMsMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLAotICAgIDEwMCwxMDEsNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsCi0gICAgMTAxLDQxLDcsMTE0LDE2LDEsMCwwLDExNCw1NywwLDAsMCwxMTQsMTU0LDAsCi0gICAgMCwwLDExNCw0NywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxNzYsMCwwLAotICAgIDAsMTE0LDYzLDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLDExNCwxODAsMCwKLSAgICAwLDAsMTE0LDE5NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwxMTQsMiwxLDAsMCwxODUsNSwwLDAsMTE1LAotICAgIDEwLDAsMCwwLDAsMiwxOCwxLDEyLDEsOSwxLDE4LDEsMTIyLDI1LAotICAgIDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLAotICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw4LDExNCw1NywwLDAsCi0gICAgMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwKLSAgICAxMTQsMjIwLDAsMCwwLDExNCwyLDEsMCwwLDExNCwxODEsMCwwLDAsMTE0LAotICAgIDUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDMzLDEsMCwwLDE3Miw1LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDgsMTE0LDMzLAotICAgIDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLAotICAgIDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsCi0gICAgMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsMTQsCi0gICAgMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLAotICAgIDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsCi0gICAgMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsNzksCi0gICAgMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LDEwOSwKLSAgICAxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKLSAgICAxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwzMiwKLSAgICA3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsCi0gICAgMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDksCi0gICAgMTE2LDEwNSwxMDksMTAxLDE5OCw1LDAsMCwxMTUsMiwwLDAsMCwwLDYsMTIyLAotICAgIDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAotICAgIDAsMCwxMDUsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCw1NCw4Myw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LAotICAgIDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiw5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LAotICAgIDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKLSAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsNDAsMTE1LDExNiwxMTQsNDEsNDYsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsODAsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTA3LDEwMSwxMjEsCi0gICAgMTE1LDU4LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDEwOSwxMTYsCi0gICAgMTA1LDEwOSwxMDEsMzksMzIsNDAsMTA5LDk3LDExMCwxMDAsOTcsMTE2LDExMSwxMTQsMTIxLDQxLAotICAgIDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsCi0gICAgMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMTEsMTAyLDMyLDEwOCw5NywxMTUsCi0gICAgMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsOTksMTExLDEwMCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDU5LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLAotICAgIDM5LDExNSwxMDUsMTIyLDEwMSwzOSwzMiw0MCwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsCi0gICAgNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTA1LDExMCwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLAotICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsCi0gICAgMTExLDExOSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTYsCi0gICAgMTExLDMyLDExNCwxMDEsOTcsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsCi0gICAgOTcsMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LAotICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwKLSAgICAxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTg0LDAsMCwwLDQxLDEsMTE0LDM2LAotICAgIDEsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDIwNiw1LDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LAotICAgIDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICA5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKLSAgICAxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwKLSAgICAxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDQxLDEsMjE4LDgsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCw3MSwKLSAgICAwLDAsMCwxMTQsMTQyLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIxOSw1LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDgsMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsMTUwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwKLSAgICAxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsCi0gICAgMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMywxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw1MywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMzgsMSwwLDAsMjI5LDUsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSwKLSAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LAotICAgIDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwKLSAgICAwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNSwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDg3LDExMCw1OCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEyNSwKLSAgICA0LDAsMSwxMjIsMjYsMCwxMTYsMywwLDEwMCwxLDAsMTAwLDIsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDEsMTI0LDQsMCwxMzAsMiwwLDg3LDg5LDEwMCwzLDAsCi0gICAgMTAwLDMsMCwxMjUsNCwwLDEyNiw0LDAsODgsMTEwLDEsMCw4OCwxMTYsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw1Miw2NywxMTEsMTEwLDk5LAotICAgIDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LAotICAgIDEyMiwzOSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywKLSAgICAxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLDExNywxMDMsMTA0LDMyLDEwMywKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsMTE0LDY3LDAsMCwwLDc4LDQxLAotICAgIDUsMTE0LDIzOSwwLDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAotICAgIDExNCw0MCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwyMDQsMCwwLDAsNDEsCi0gICAgNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsCi0gICAgMTE0LDIwMiwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNywxLDAsMCwyMzYsNSwKLSAgICAwLDAsMTE1LDE0LDAsMCwwLDAsMiwxNSwxLDMsMSwxOSwxLDE4LAotICAgIDEsOSwxLDMxLDEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTgsOSwKLSAgICA5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNCwyOSwwLDAsMCw5OSwzLAotICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw5LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwzMSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsCi0gICAgMTI0LDMsMCwxMzEsNCwyLDgzLDQxLDUsMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LAotICAgIDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAotICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwzOSwxMDAsOTcsMTE2LDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LAotICAgIDEwOSwxMDEsMTEwLDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsCi0gICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLAotICAgIDExNCwxMTYsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxNzYsMCwKLSAgICAwLDAsMjE4LDEyLDEwMCwxMTEsMTEwLDExNiw5NSwxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsCi0gICAgODQsMTE0LDExOCwwLDAsMCw0MSwyLDExNCwxMTQsMCwwLDAsMjE4LDcsOTksCi0gICAgMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LDUzLDAsCi0gICAgMCwwLDExNCwzNSwwLDAsMCwxMTQsNDIsMSwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyNDYsNSwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCw1LDE4LDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLAotICAgIDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLAotICAgIDAsMCw0MywwLDAsMCw2NywwLDAsMCwxMTUsMTc3LDEsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwKLSAgICAwLDEyNSwzLDAsMTIxLDE2LDAsMTE2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDQsMCw4NywxMTAsMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDYzLAotICAgIDAsMSwxLDEsMTAwLDEsMCwxMjUsNCwwLDg5LDExMCwyMDIsMCw4OCwxMjEsCi0gICAgMTksMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwxMDMsMCwxLAotICAgIDEsMSw4OSwxMTAsMTYyLDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwyLDAsCi0gICAgMjUsMTMxLDEsMCwxMjUsMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwKLSAgICAxMjQsNCwwLDEzMSwxLDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE1OSwwLDEsMSwxLDg5LDExMCwxMDYsMCw4OCwxMjEsCi0gICAgMzQsMCwxMTYsOCwwLDEyNCw2LDAsMTAwLDMsMCwxMjQsNSwwLDEwMCw0LAotICAgIDAsMTI0LDEsMCwxMDAsNSwwLDEyNCw0LDAsMTMxLDEsMywxMjUsNywwLAotICAgIDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwKLSAgICAwLDExNCwyMjAsMCwxLDEsMSw4OSwxMTAsNDUsMCw4OCwxMTYsMTEsMCwxMDAsCi0gICAgNiwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTI0LAotICAgIDcsMCwxMDAsNCwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsNCwwLDEwMCw4LAotICAgIDAsMTI0LDIsMCwxMzEsMSwzLDgzLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwKLSAgICAwLDEzMSwxLDAsMTI1LDgsMCwxMjQsMCwwLDEwNiwxMywwLDEyNCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsMiwwLDEyNSw5LDAsMTE2LDExLDAsMTAwLDksMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMSwxMTYsMTQsMCwxMDYsMTUsMCwxMiwxMTQsMTczLDEsCi0gICAgMTI0LDQsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE3MywxLDEyNCwzLDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCwxNzMsMSwxMTYsMTYsMCwxMjQsOSwwLDEyNCwzLAotICAgIDAsMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEzMSwzLDAsMTI1LDYsMCwKLSAgICAxMjEsMzYsMCwxMjQsMCwwLDEwNiwxOCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsCi0gICAgNiwwLDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsMTAsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsMTczLDEsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksCi0gICAgMSwxLDEsMSw4OSwxMTMsMTczLDEsODgsMTEwLDAsMCwxMjQsOSwwLDgzLAotICAgIDQxLDExLDEyMiwxOTAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsCi0gICAgMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsCi0gICAgMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksCi0gICAgMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsMTE0LDE4NCwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCw2NywwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwKLSAgICAxMDQsMTAxLDExNSwzMiwxMjMsMTI1LDExNCwxNDEsMCwwLDAsMTE0LDE0MiwwLDAsMCwKLSAgICAxMjIsMTksOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsCi0gICAgMTExLDEwOSwzMiwxMjMsMTI1LDEyMiwxMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDQxLDE5LDExNCwyMzksMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTIzLDAsCi0gICAgMCwwLDExNCwzNywxLDAsMCwxMTQsMzUsMSwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCw0MCwxLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDE5MSwwLDAsMCwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCw0NSwxLDAsMCwxMTQsNywwLDAsMCwyMTgsMTksCi0gICAgMTAwLDExMSwxMTAsMTE2LDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsMTE0LDE5OSwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM5LDEsCi0gICAgMCwwLDQxLDEwLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxNDIsCi0gICAgMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQxLDAsMCwwLDIxOCwyLDExNSwKLSAgICAxMTYsMTE0LDUzLDAsMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LAotICAgIDExNiw5NywxMTQsMjAyLDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwKLSAgICAxMDYsMTAxLDk5LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsMTYsMSwwLDAsMjU0LDUsMCwwLDExNSw3OCwwLDAsCi0gICAgMCwwLDcsMTUsMSw2LDEsMywxLDE2LDEsMTMsMSwxMSwyLDMsCi0gICAgMSwxOSwxLDEzLDEsNSwyLDE2LDEsMywxLDE5LDEsMTMsMSw1LAotICAgIDIsMywxLDksMSwxMiwxLDEzLDEsMTksMSw1LDIsOSwxLDcsCi0gICAgMSwxNSwxLDYsMSw3LDEsMTUsMSwxOCwxLDEzLDEsMjIsMSwxMiwKLSAgICAxLDksMSwxNSwxLDMsMSwxOSwxLDE3LDEsMTMsMSw4LDEsMTIyLAotICAgIDIxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKLSAgICAxMTYsOTUsOTksMTExLDEwMCwxMDEsNzgsMTE0LDEzOSwwLDAsMCw0MSwxMCwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsMzYsMSwKLSAgICAwLDAsMTE0LDM3LDEsMCwwLDExNCwzOSwxLDAsMCwxMTQsMzgsMSwwLAotICAgIDAsMTE0LDE3LDEsMCwwLDExNCw0NSwxLDAsMCwxMTQsMTYsMSwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDM0LDEsMCwwLDE5Niw1LDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMTIsMiwxMiw4LDEyLDEzLDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwKLSAgICAxMTQsMzQsMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwwLDAsMCwwLDExNSwxMTIsMCwwLDAsMTAxLAotICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsCi0gICAgMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLAotICAgIDAsMCw5MCw2LDAsMTAxLDcsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzNCwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwKLSAgICAxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMCwKLSAgICAxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsMTAsMCwxMzUsMCwwLDgzLDQxLAotICAgIDE0LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2NiwKLSAgICA5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsCi0gICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LAotICAgIDEsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LAotICAgIDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwyLDExNCw2NywwLDAsMCwxMTQsMzUsMCwKLSAgICAwLDAsNDEsMywxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDcyLDAsMCwwLDU1LDYsMCwwLDExNSw0LDAsMCwwLAotICAgIDAsMyw5LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsCi0gICAgMiwwLDExMSwzMywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLAotICAgIDAsMTA3LDIsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIyNSwwLDAsMCwxMTQsCi0gICAgNjMsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDIyOCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCi0gICAgMjMwLDAsMCwwLDYxLDYsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwKLSAgICAxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCi0gICAgMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsMSw3OCw0MSwzLDIxOCw0LDEwNCwKLSAgICA5NywxMTUsMTA0LDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsNjUsNiwwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwzLDAsCi0gICAgMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTI0LDAsMCwKLSAgICAxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLAotICAgIDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwKLSAgICAxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAotICAgIDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwxMTUsMTE3LDExMiwxMDEsMTE0LDExNCw0OSwKLSAgICAxLDAsMCwxMTQsNSwxLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsCi0gICAgMTU5LDAsMCwwLDQxLDEsMTE0LDIyNSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwxMTQsNSwxLDAsMCw2OCw2LDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSwKLSAgICAxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwxLDExNCwzNSwKLSAgICAwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMzksCi0gICAgMCwwLDAsODAsNiwwLDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwyMywKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAzLDAsMCwwLDgsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwKLSAgICAxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsMCwwLDgzLAotICAgIDg3LDEwMCwyLDAsODEsODgsMTAwLDIsMCw4Myw0MSwzLDEyMiwzOSw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwKLSAgICAxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsNzgsNDEsMywxMTQsNDksMCwwLDAsCi0gICAgMTE0LDUwLDAsMCwwLDkwLDQsMTE0LDEwMSw5NywxMDAsNDEsMywxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDM1LDAsMCwwLDExNCw1NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNDAsMSwwLDAsCi0gICAgODUsNiwwLDAsMTE1LDQsMCwwLDAsMCwyLDIxLDEsMTIyLDE5LDcwLAotICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCi0gICAgMTE2LDk3LDQxLDExLDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDIzMCwwLAotICAgIDAsMCwxMTQsNTEsMSwwLDAsMTE0LDE1NywwLDAsMCwxMTQsNSwxLDAsCi0gICAgMCwxMTQsMjM5LDAsMCwwLDExNCw0MCwxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCw0MSwxLDExNCwyMjUsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDQ5LDEsMCwwLDUwLDYsMCwwLDExNSwxNCwwLDAsMCwxMiwKLSAgICAzLDYsMiwxMiw2LDEyLDQsMTIsMywyNCwxMiwxOCw1LDExNCw0OSwxLAotICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LAotICAgIDAsMCwwLDY0LDAsMCwwLDExNSw2NCwwLDAsMCwxMDEsMCwwLDkwLAotICAgIDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLAotICAgIDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMSw5MCw2LDAsMTAwLDEwLDAsODMsNDEsMTEsMTE0LDksCi0gICAgMSwwLDAsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAotICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsCi0gICAgMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LAotICAgIDEwMSwxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDUsMiwwLDEyNCwyLDAsMTA2LAotICAgIDEsMCwxMDAsMSwwLDU0LDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDU0LAotICAgIDgzLDQxLDMsMTIyLDMzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTQsMTg0LDAsMCwwLDExNCwxODUsMCwwLDAsCi0gICAgNDEsMywxMTQsMzksMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksMTE2LDEwNSwxMDksCi0gICAgMTAxLDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsNzEsMCwwLAotICAgIDAsMTE0LDM1LDAsMCwwLDExNCw0NywxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMzcsMSwwLDAsOTUsCi0gICAgNiwwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLDI3LDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLDAsMCwwLAotICAgIDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LAotICAgIDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwwLDEyNCw0LAotICAgIDAsMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwKLSAgICAyLDExNCwxNDUsMCwwLDAsMTE0LDM4LDEsMCwwLDQxLDUsMTE0LDcxLDAsCi0gICAgMCwwLDExNCwxNDIsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsNTMsMCwwLAotICAgIDAsMTE0LDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCwzOSwxLDAsMCwxMDAsNiwwLDAsMTE1LDQsCi0gICAgMCwwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNTUsMSwwLDAsMTA1LDE4MiwKLSAgICAxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwwLDAsMCwKLSAgICAxNywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMDMsCi0gICAgMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsMCwxMTYsMSwKLSAgICAwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwwLDEyNCw0LAotICAgIDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLDEyNCw2LDAsCi0gICAgMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCw4NywxMjAsMTMyLAotICAgIDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LDAsMTI1LDcsCi0gICAgMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLDEyNSw0LDAsCi0gICAgMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLDEsMCwxLAotICAgIDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LDAsMSwxLAotICAgIDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKLSAgICAyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLDEwMCwxLDAsCi0gICAgMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLDgzLDg3LDg5LAotICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEzLDk0LDAsCi0gICAgODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsMTA3LDEwLDAsCi0gICAgMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksMCwxMDAsMSwKLSAgICAwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksMTAwLDIsMCwKLSAgICAxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLDg4LDEwMCwyLAotICAgIDAsODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLAotICAgIDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSwKLSAgICA5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwKLSAgICAxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLDExLDExNCwKLSAgICAzOCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMzMsCi0gICAgMCwwLDAsMTE0LDI4LDAsMCwwLDExNCwzLDAsMCwwLDkwLDUsMTA5LAotICAgIDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQwLDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LAotICAgIDU1LDAsMCwwLDQxLDksMTE0LDcxLDAsMCwwLDExNCwzNSwwLDAsMCwKLSAgICAxMTQsNTMsMCwwLDAsMTE0LDU1LDEsMCwwLDExNCwyMzQsMCwwLDAsMTE0LAotICAgIDEzMSwwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDIzLDAsMCwwLDExNCw0MSwKLSAgICAxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsMzgsMSwwLDAsMTA1LDYsMCwwLDExNSwzOCwwLDAsMCwKLSAgICAwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwxNSwxLAotICAgIDMsMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwyNywxLDMsMSwKLSAgICAxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LAotICAgIDk3LDc4LDQxLDcsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsCi0gICAgMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwzNywxLDAsMCwxMTQsMzksMSwKLSAgICAwLDAsMTE0LDM4LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw5LDEsMCwwLAotICAgIDkxLDYsMCwwLDExNSw4LDAsMCwwLDEyLDIsNiwyLDEyLDUsMTIsCi0gICAgNSwxMTQsOSwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKKyAgICAxMTQsMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCisgICAgMTU5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTM4LAorICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODQsMCwKKyAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwxNjAsMCwwLDAsMywzLDAsMCwxMTUsMzAsCisgICAgMCwwLDAsMTIsNyw2LDIsMTgsOSwzLDEsMjEsNiwzLDEsMTgsCisgICAgOCwxOCw0LDE4LDksMTgsOSwzLDEsMjEsNSwzLDEsMjEsNSwzLAorICAgIDEsMTE0LDE2MCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKICAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLDAsMCwKICAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAogICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCiAgICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsNDEsNywKLSAgICAxMTQsOCwxLDAsMCwxMjIsNDUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsCi0gICAgMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDc2LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDIsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsCi0gICAgMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsMCwxMDAsMSwwLDEyNCwxLDAsCi0gICAgMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsODMsNDEsNCw3OCwxMTQsNjcsMCwKLSAgICAwLDAsMTE0LDM1LDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsNCwxMTQsMjM5LAotICAgIDAsMCwwLDExNCw0MCwxLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwxOTYsMCwKLSAgICAwLDAsNDEsNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsCi0gICAgMCwwLDAsMTE0LDUzLDAsMCwwLDExNCw0OCwxLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTYsMSwwLAotICAgIDAsMTM4LDYsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE1LDEsCi0gICAgMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwKLSAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTcsMSwwLDAsCi0gICAgMTQ0LDYsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzEsODMsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwKLSAgICA1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwKLSAgICAwLDAsMCwxMTQsMTYsMSwwLDAsMTE0LDE3LDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw4LDEsMCwwLDEzNCw2LDAsMCwxMTUsNiwwLDAsMCwxMiwKLSAgICAyLDYsMiwxMiw2LDExNCw4LDEsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDEzMCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDEsNywwLDEwMCw4LDAsCi0gICAgMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMCwxMCwwLDEwMCwKLSAgICAxMSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLAotICAgIDAsOTAsMTAsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDExLDAsCi0gICAgMTAxLDcsMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsCi0gICAgMTIsMCwxMDAsMTgsMCw4Myw0MSwxOSwyMTgsMTksNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDkzLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMTksMTExLDExNCwxMDcsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsCi0gICAgMiwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMywxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwwLDAsCi0gICAgMTYxLDYsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI4LDY5LAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwzNCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwKLSAgICAwLDEwNywyLDAsMTExLDMzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsCi0gICAgMTA2LDEsMCwxMDcsMiwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjI1LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMjI4LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwyMzAsMCwwLDAsMTY1LDYsMCwwLDExNSw0LDAsMCwwLDAsCi0gICAgMSwxOCwxLDEyMiwyNiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwxLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsCi0gICAgMCw2NSw4Myw0MSwxLDc4LDQxLDMsMTE0LDUwLDEsMCwwLDExNCw2NywwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUxLDEsCi0gICAgMCwwLDE2OSw2LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDY5LAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxODMsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDI5LAotICAgIDAsMSwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLAotICAgIDAsMTA2LDQsMCwxMzEsMywwLDEyNSwyLDAsODcsMTAwLDEsMCw4MSw4OCwKLSAgICAxMTYsNSwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsMTI0LAotICAgIDMsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMjQsMiwwLDEwMCwzLDAsMTMxLDIsCi0gICAgMCwxMiwxMTQsMTI0LDAsMTE2LDgsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxMDAsNCwwLDI1LDEwMywxLDAsMTI0LDIsMCw5NSw5LDAsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDEyNCwyLDAsOTUsMTAsMCwxMjQsMiwwLDEwNiwxMSwwLAotICAgIDEyNCwyLDAsOTUsMTIsMCwxMjQsMywwLDExNSwxNzksMCwxMjQsMiwwLDEwNiwKLSAgICAxMiwwLDEwNiwxMywwLDEwMCw1LDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNCwKLSAgICAyLDAsOTUsMTIsMCwxMTAsMCwwLDEyNCwyLDAsODMsNDEsNiwxMjIsMjUsCi0gICAgNzYsMTExLDk3LDEwMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDMzLDEwMSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDExNCwyNDcsMCwKLSAgICAwLDAsMTE0LDg0LDAsMCwwLDExNCwxMTYsMCwwLDAsNDEsMTQsMTE0LDY5LAotICAgIDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDEwNiwwLDAsMCw5MCwxMiwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwzNSwwLDAsMCwKLSAgICAxMTQsMTUzLDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzOCwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwyMDUsMCwwLDAsMTE0LDU3LAotICAgIDAsMCwwLDExNCwyNTEsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLDQsMTE0LAotICAgIDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw1LDEsMCwwLDE3Miw2LDAsMCwxMTUsMjQsMCwwLDAsCi0gICAgMCw1LDEzLDEsOSwxLDIxLDEsMTYsMSwxNSwxLDIyLDEsMjgsMSwKLSAgICA5LDEsMTIsMSw2LDEsMjgsMSwxMjIsMzEsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKLSAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDExNSw0OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAxLDAsMjUsMTM3LDAsMCwxMTYsMiwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTM0LDAsMCwxMTYsMywwLDY4LDEzMSwxLDAsMTMxLAotICAgIDEsMCw4Myw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwKLSAgICAxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwKLSAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDI5LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNTEsMCwKLSAgICAwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsOTMsMjEsMCwxMjUsMSwwLAotICAgIDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLDIzLDEwNywyLDAsODYsMSwxMTMsCi0gICAgMywwLDEwMCwxLDAsODMsNDEsMiwxMTQsNzIsMCwwLDAsNzgsMTE0LDQsCi0gICAgMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMjE4LDYsMTE1LDExNywxMDIsMTAyLAotICAgIDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc3LDAsMCwwLDE5Myw2LAotICAgIDAsMCwxMTUsMiwwLDAsMCw2LDEsMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwKLSAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwKLSAgICAxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNCwxMTQsMzgsCi0gICAgMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw3OCwwLDAsMCwyMTgsMTgsNjksCi0gICAgODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksCi0gICAgODMsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCw0MSwxLDExNCw1OSwxLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDE5MCw2LDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSwKLSAgICAxOCwxLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCi0gICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNjMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICA5NywxMTUsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsCi0gICAgMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCi0gICAgOTksMTE2LDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDE2LDEsMCwwLDE5Niw2LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDIsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwKLSAgICAxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAotICAgIDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLAotICAgIDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3LDEsMCwwLDIwMCwKLSAgICA2LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsCi0gICAgMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwxLDExNCwzNSwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMzksMCwwLDAsCi0gICAgMjA0LDYsMCwwLDExNSwyLDAsMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDEzLAotICAgIDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwKLSAgICA1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsNTEsCi0gICAgMSwwLDAsMTE0LDE1NywwLDAsMCwxMTQsNSwxLDAsMCwxMTQsMjIwLDAsCi0gICAgMCwwLDExNCwxNiwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDIzOSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwxMTQsNTcsMSwwLDAsMTUzLDYsMCwwLDExNSwxOCwKLSAgICAwLDAsMCwxMiw2LDYsMiwxMiw0LDEyLDQsMTIsMywxOCwxOCwxMiwKLSAgICA2LDEyLDQsMTIsNCwxMTQsNTcsMSwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTQsCi0gICAgMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LDAsMTAwLDE3LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwxMTUsCi0gICAgMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwxMTIsCi0gICAgMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCi0gICAgOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LAotICAgIDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLAotICAgIDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAotICAgIDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCi0gICAgNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywKLSAgICAxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LAotICAgIDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LAotICAgIDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKLSAgICAxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDExNiwKLSAgICAyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjQsMCwKLSAgICAwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsCi0gICAgODMsNDEsMSw3OCw0MSw2LDExNCw3MCwwLDAsMCwxMTQsMjU0LDAsMCwwLAotICAgIDExNCwyMzIsMCwwLDAsMjE4LDE2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDE3LDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDEyLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDQsMTE0LDcxLDAsMCwwLDExNCwKLSAgICA2NywwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCw3MiwwLDAsMCwyMTcsNiwwLDAsMTE1LDgsCi0gICAgMCwwLDAsMCwxLDksMSw5LDEsMjEsMSwxMjIsMjMsOTUsNzgsOTcsCi0gICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTAsCi0gICAgMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw1MywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsOTIsMywwLAotICAgIDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsMTAwLDIsMCwxMDcsCi0gICAgMiwwLDExNCw0MywwLDEwMCw2LDAsODMsMTI0LDEsMCwxMDAsNSwwLDEwMiwKLSAgICAyLDAsODMsNDEsNywxMjIsNjIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsCi0gICAgMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiw5NywxMTQsMTAxLDExMCwKLSAgICAxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywxMTYsMTE2LDExNCw0NSwKLSAgICAxMTAsOTcsMTA5LDEwMSw0MSwxMTQsMTE2LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsCi0gICAgNywwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDI0NywwLDAsMCw0MSwyLAotICAgIDEyMiwzLDExNSwxMjEsMTE1LDEyMiw0LDExMiw5NywxMTYsMTA0LDQxLDIsMTE0LDcwLDAsCi0gICAgMCwwLDExNCwzMiwwLDAsMCw0MSw0LDExNCw3MSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDIxOCwzLDEwMCwxMTEsMTE2LDExNCw5NCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjMsOTUsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE1LDIyMyw2LDAsMCwxMTUsOCwwLDAsMCwwLDIsCi0gICAgMjcsMSwxMiwyLDQsMywxMjIsMzgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LAotICAgIDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwzOCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsCi0gICAgMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLDExNiwxLDAsMTE2LDIsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMjUsMTI0LDIsMCwxMzEsMiwwLDgzLDQxLDEsCi0gICAgNzgsNDEsNCwxMTQsNjcsMSwwLDAsMTE0LDYyLDAsMCwwLDExNCw3LDAsCi0gICAgMCwwLDExNCw3MywwLDAsMCw0MSwzLDExNCw3MSwwLDAsMCw5MCwxOCwKLSAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywKLSAgICAxMDksMTAxLDkwLDE0LDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw2MiwxLDAsMCwyMzMsNiwwLDAsMTE1LDQsMCwwLDAsMCwKLSAgICAxLDE4LDEsMTIyLDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCi0gICAgOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LAotICAgIDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEyNywwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMjQsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMDcsMywwLDExNCwxMjAsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsCi0gICAgMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMDgsMCwKLSAgICAxMjQsMiwwLDEwNiw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDgsMCwxMjQsCi0gICAgMiwwLDEwNiw2LDAsMTE0LDEwOCwwLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwKLSAgICAwLDk1LDcsMCwxMTMsMTA4LDAsMTEwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCi0gICAgOTUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsNywwLDgzLDQxLDEsNzgsCi0gICAgNDEsOCwxMTQsMjMyLDAsMCwwLDExNCw2MiwxLDAsMCwxMTQsNjMsMSwwLAotICAgIDAsMTE0LDY0LDEsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTcwLDAsMCwwLAotICAgIDExNCwyMjEsMCwwLDAsMTE0LDI1NCwwLDAsMCw0MSwzLDExNCw3MSwwLDAsCi0gICAgMCw5MCwxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNzgsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwKLSAgICAyMzcsNiwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxOCwxLDE1LDEsMjEsCi0gICAgMywyNywxLDksMSwxOCwxLDEyLDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDY4LDEsMCwwLAotICAgIDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwKLSAgICAyNTAsNiwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMyw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExNiwKLSAgICAxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKLSAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDMxLDAsMCwwLDExNCw2OCwxLDAsMCw0MSwxLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsNyw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwyNTMsNiwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCi0gICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDIwLDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LAotICAgIDEyNSw0MSw0MSwyLDExNCw0NywwLDAsMCwxMTQsMjU0LDAsMCwwLDQxLDEsCi0gICAgMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCwxMDEsMCwwLDAsMCw3LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCi0gICAgODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTMxLDAsMCwxMDcsNiwwLDgzLDQxLDEsNzgsNDEsMSwxMTQsNjgsMSwwLAotICAgIDAsNDEsMiwxMTQsNzEsMCwwLDAsMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMiw5NSwKLSAgICA5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwzLDcsMCwwLDExNSwKLSAgICAyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsCi0gICAgMTE1LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsCi0gICAgODMsNDEsMSw3OCw0MSwyLDExNCwyNTQsMCwwLDAsMTE0LDIyNCwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsNzIsMSwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyNCwwLDAsMCwKLSAgICA2LDcsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjEsOTUsNzgsOTcsCi0gICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLAotICAgIDExMCwxMDAsNzgsNDEsMTMsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsNjcsCi0gICAgMSwwLDAsMTE0LDYyLDEsMCwwLDExNCw2OCwxLDAsMCwxMTQsNzAsMSwKLSAgICAwLDAsMTE0LDcxLDEsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDczLDEsMCwKLSAgICAwLDExNCwyMjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDYxLDEsMCwwLDIxMCwKLSAgICA2LDAsMCwxMTUsMjAsMCwwLDAsMTIsNSw2LDIsMTIsNiwxMiwxMCwKLSAgICAxMiw0LDEyLDEzLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDYxLDEsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwKLSAgICA5MCwzLDAsMTAxLDQsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDUsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsOTAsNywwLDEwMCw5LDAsCi0gICAgMTAwLDEwLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLAotICAgIDAsMCw5MCw5LDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwKLSAgICAwLDEwMCwxNSwwLDgzLDQxLDE2LDExNCwyNTIsMCwwLDAsOTksNCwwLDAsCisgICAgMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAorICAgIDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LAorICAgIDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsMjQsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwKKyAgICAyLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDEsMTE0LDE5LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCwyMywwLDAsMCw4NCwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDIsMTIyLDI4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsCisgICAgMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsCisgICAgMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiw2MCw4MiwxMDEsMTA4LDEwMSw5NywKKyAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCisgICAgOTksMTA3LDMyLDExNCwxMDEsMTAzLDk3LDExNCwxMDAsMTA4LDEwMSwxMTUsMTE1LDMyLDExMSwxMDIsCisgICAgMzIsOTcsMTEwLDEyMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDEwMSwxMjAsOTksMTAxLAorICAgIDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQxLDIsMTE0LDU3LDAsMCwwLDExNCwKKyAgICA1OCwwLDAsMCw0MSw0LDExNCwxOSwwLDAsMCw5MCw4LDEwMSwxMjAsOTksCisgICAgOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsCisgICAgOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLAorICAgIDAsMCwwLDg4LDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsCisgICAgOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwKKyAgICAxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCwxLAorICAgIDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsCisgICAgMCwwLDExNCwyMywwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxNjUsMCwwLDAsODAsMywwLDAsMTE1LDYsMCwwLDAsMTIsMiwKKyAgICA2LDIsMTIsNCwxMTQsMTY1LDAsMCwwLDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LAorICAgIDAsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLAorICAgIDIsMCwyNCwxMzEsMiwwLDEyNSwzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwKKyAgICAxLDAsMTI0LDIsMCwxMDcsMCwwLDExNCw1MiwwLDExNiwyLDAsMTAwLDMsCisgICAgMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEyNSw0LAorICAgIDAsMTI0LDAsMCwxMTQsODQsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDQsMCwKKyAgICAxMjQsMCwwLDEzMSwyLDAsODMsMTI0LDQsMCw4Myw0MSw2LDEyMiw1MCw4MiwKKyAgICAxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwKKyAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwKKyAgICAzMiw5NywxMTAsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsCisgICAgNDYsMTE0LDEyMSwwLDAsMCwxMTQsNDUsMCwwLDAsMTIyLDUwLDk3LDExNiwxMTYsCisgICAgMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsMzIsMTE2LDExMSwKKyAgICAxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LAorICAgIDMzLDAsMCwwLDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw0MSw0LDIxOCw2LDExNCwKKyAgICAxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwzLDEwOCwxMDEsMTEwLDIxOCwxMCw4Niw5NywxMDgsMTE3LAorICAgIDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDUsMTE0LDE1LDAsCisgICAgMCwwLDIxOCw3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMTgsNSwxMDgsMTAxLDExOCwKKyAgICAxMDEsMTA4LDkwLDQsOTgsMTA1LDExNiwxMTUsOTAsNCw5OCw5NywxMTUsMTAxLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwKKyAgICAxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTMsMywwLDAsCisgICAgMTE1LDEwLDAsMCwwLDAsMiwyMiwxLDE4LDEsMTIsMSwxMCwxLDExNCwKKyAgICAxNzEsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwwLDAsMTI0LDAsCisgICAgMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsCisgICAgMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDM0LDAsMTAwLDAsMCw4MywKKyAgICAxMTYsMSwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsNzgsCisgICAgNDEsMiwxMTQsMTU1LDAsMCwwLDExNCw4NSwwLDAsMCw0MSw0LDIxOCw2LAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCwxNSwwLDAsMCwxMTQsMTUyLDAsMCwwLAorICAgIDExNCw5OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSwxMDIsMywwLDAsMTE1LDgsMCwwLDAsCisgICAgMCwzLDE4LDEsMTIsMSw0LDEsMTE0LDE3MywwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsOSwwLDAsMCwyNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDIsMSwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsCisgICAgMTA3LDksMCwxMTQsNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsCisgICAgMTE2LDIsMCwxMDYsMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsCisgICAgMTI0LDAsMCwxMTYsMCwwLDEwNiw1LDAsMTA3LDYsMCwxMjUsMywwLDEyMCwKKyAgICAyMzUsMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsMjIwLDAsMTI1LDQsMCwxMTYsCisgICAgNiwwLDEzMSwwLDAsMTQzLDkwLDAsMSwxMjEsMTMsMCwxMjQsNCwwLDEwNiwKKyAgICA3LDAsMTI1LDUsMCw4NywxMTAsNTEsMCw0LDExNiw4LDAsMTA3LDEwLDAsCisgICAgMTE0LDE0OCwwLDEsMSwxLDExNiw5LDAsMTI0LDQsMCwxMjQsMCwwLDEyNCwKKyAgICAxLDAsMTMxLDMsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDEsMCwxMDcsOCwKKyAgICAwLDExNCwxNDQsMCwxMTksNjYsMCw4OSwxMTAsMTksMCw4OCwxMjQsNSwwLDEyNCwKKyAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDYsMCw4NywxMDAsCisgICAgMSwwLDgxLDgyLDg4LDEyNCw2LDAsMTAwLDEsMCwxMDcsOSwwLDExNCw2NiwKKyAgICAwLDEyNCwzLDAsMTIsMTE0LDI2LDEsMTI0LDAsMCwxMTYsMCwwLDEwNiw1LAorICAgIDAsMTA3LDYsMCwxMTQsMjYsMSwxMTYsMCwwLDEwNiw1LDAsMTI0LDAsMCwKKyAgICAyNSwxMjUsNywwLDEyMSwxMywwLDEyNCw3LDAsMTA2LDEwLDAsMTI1LDgsMCwKKyAgICA4NywxMTAsMjIsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIsMSwxLDEsCisgICAgMSwxMjQsNiwwLDgzLDg5LDExMywzMCwxLDg4LDEyNCw4LDAsMTAwLDEsMCwKKyAgICAxMDcsOCwwLDExNCwxOSwxLDEyNCw2LDAsODMsMTI0LDgsMCw4MywxMTMsNjYsCisgICAgMCwxMjQsNiwwLDgzLDExMyw2NiwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCwKKyAgICA4Myw0MSwzLDEyMiwyMyw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0Niw3OCwxMjIsMjIsMTE1LAorICAgIDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwKKyAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDQxLDExLDExNCwxNCwwLDAsMCwyMTgsOSwxMDksMTAxLAorICAgIDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTQxLDAsMCwwLDExNCwxNDIsMCwwLAorICAgIDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKKyAgICAxMTQsMjEsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwKKyAgICA5NiwwLDAsMCwxMTQsMTczLDAsMCwwLDExNCw5NSwwLDAsMCw0MSw5LAorICAgIDExNCwxNSwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTMsMCwwLDAsOTAsCisgICAgOSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE0LDE3MiwwLDAsMCwxMTQsCisgICAgMTU0LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDk1LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwxMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTExLDMsCisgICAgMCwwLDExNSw0OCwwLDAsMCwwLDIsMjUsMSwxNiw0LDE1LDEsMTYsCisgICAgMSwxMCwxLDMsMSwxMywxLDEzLDEsMTgsMSwxMiwxLDgsMiwyNSwKKyAgICAxLDEyLDIsMjIsMSwxMywxLDMsMSwxMywxLDEzLDQsOSwyLDEyLAorICAgIDEsNCwyLDcsMiw4LDIsMTE0LDE3NiwwLDAsMCw5OSwzLDAsMCwKICAgICAwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDIsMTE0LDYxLDEsMCwwLDExNCwyNTQsMCwwLDAsNDEsNCwKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgNjUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDcyLDAsMCwwLDEyLDcsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwKLSAgICAwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsCi0gICAgMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwKLSAgICAxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLAotICAgIDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDExMCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsMTE0LDQ3LDAsMCwKLSAgICAwLDExNCw1NywwLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsMTgwLDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwyMDYsMCwwLDAsMTUsNywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICA3LDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsCi0gICAgODQsMTE0LDQsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsMjIwLDAsMCwwLDI0LDcsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LAotICAgIDMwLDAsMCwwLDExNCw0LDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDE3LDEsMCwwLDI3LDcsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAwLDUsMCwxMzEsMywxLAotICAgIDgzLDQxLDYsNzgsMTE0LDMwLDAsMCwwLDEyMiw4LDYwLDExNSwxMTYsMTE0LDEwNSwKLSAgICAxMTAsMTAzLDYyLDExNCwxNzYsMCwwLDAsMTE0LDQzLDEsMCwwLDg0LDQxLDEsCi0gICAgMTE0LDQ0LDEsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDE2LDEsMCwwLDMwLDcsMCwwLDExNSwyLDAsMCwwLDAsMSwKLSAgICAxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDQsMCwwLAotICAgIDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMiwxLDAsCi0gICAgMCwzMyw3LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwKLSAgICAxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDI5LDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwxLDAsCi0gICAgMTMxLDIsMCwxLDExNiwyLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsCi0gICAgODMsNDEsMiwxMjIsOTgsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsCi0gICAgNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsCi0gICAgMywxMTQsMTUzLDAsMCwwLDExNCwyNTQsMCwwLDAsMTE0LDE4MSwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw1LDEsMCwwLAotICAgIDM2LDcsMCwwLDExNSw0LDAsMCwwLDAsNywxNiwxLDEyMiwyOCw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwxMSwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMTE0LDE5LDEsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDIyMCwwLDAsCi0gICAgMCwxMTQsMTcsMSwwLDAsMTE0LDE2LDEsMCwwLDExNCwyLDEsMCwwLAotICAgIDExNCw1LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyNTIsMCwwLDAsMTEsNywKLSAgICAwLDAsMTE1LDE0LDAsMCwwLDEyLDEsMTIsMywxOCw5LDEyLDMsMTIsCi0gICAgMywxMiwzLDEyLDMsMTE0LDI1MiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICAxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLAotICAgIDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLDEwMSw0LDAsMTAwLDYsMCwKLSAgICAxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDAsCi0gICAgOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNCwKLSAgICAwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsMTMxLDEsMCwKLSAgICA5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsMTAsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNCwwLDEwMCwxMCwKLSAgICAwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLDAsMTMxLDEsMCw5MCwxMSwwLAotICAgIDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLAotICAgIDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsMCwxMjAsNTEsMCwxMTYsCi0gICAgMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDY4LDkzLDM0LDAsMTI1LAotICAgIDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwxNiwKLSAgICAwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLDEsMTEzLDE2LDAsMTEzLDE2LAotICAgIDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LDEwOCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExMSwxMTAsCi0gICAgMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAotICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKLSAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsMTE0LDcsMCwKLSAgICAwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDExNCwKLSAgICA2MCwwLDAsMCwxMTQsNzUsMSwwLDAsNDEsMiwxMTQsMTIsMSwwLDAsCi0gICAgMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDc1LDEsMCwwLDUzLDcsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LDgwLDk3LDExNiwKLSAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywKLSAgICAxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSw5NCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsMCwxMDYsCi0gICAgMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsMCwxMjAsCi0gICAgNTksMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsNDQsMCwxMjUsMiwwLDEyMSwKLSAgICAxNCwwLDEyNCwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDg3LDExMywzOCwwLAotICAgIDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsODEsMCwxLDEsMSwxMTksMzgsMCwKLSAgICA4OSwxMTMsMzgsMCw4OCwxMTMsMzgsMCw4NywxMDAsMiwwLDgzLDEwMCwyLDAsCi0gICAgODMsNDEsMywxMjIsMTEzLDgzLDEwMSw5NywxMTQsOTksMTA0LDMyLDExNSwxMDEsMTEzLDExNywKLSAgICAxMDEsMTEwLDk5LDEwMSwzMiwxMTEsMTAyLDMyLDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsOTcsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksCi0gICAgMTEyLDk3LDExNiwxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDM5LDEwNCwxMTEsMTExLDEwNywxMTUsMzksMzIsMTA1LDExNSwzMiwxMDIsOTcsCi0gICAgMTA4LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNywxMTUsMTAxLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIzLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LAotICAgIDQxLDYsMTE0LDcsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNywxMTUsMTE0LDE2NywwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwKLSAgICAwLDAsMTE0LDE1NCwwLDAsMCw0MSwzLDExNCwxMiwxLDAsMCwxMTQsMzUsCi0gICAgMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNCwxMTEsMTExLDEwNywxMTUsNjEsNywwLDAsMTE1LDE2LDAsMCwwLDAsNywKLSAgICA5LDEsMTksMSwxNiwxLDMsMSwxNCwxLDEzLDEsMTIsMiwxMjIsMjIsCi0gICAgODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDk3LDAsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsMTA2LAotICAgIDEsMCwxMzEsMCwwLDEyNSwxLDAsMTEwLDAsMCwxMjEsMTcsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDEsMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsCi0gICAgMTE2LDQsMCwxMDcsMTAsMCwxMTQsOTIsMCwxLDEsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDEsMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsCi0gICAgODMsNDEsMiwxMjIsMjEwLDcxLDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCi0gICAgMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAotICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsCi0gICAgMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk5LDk3LDk5LAotICAgIDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsCi0gICAgNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzAsMCwwLDAsNDEsNiwxMTQsMywKLSAgICAwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDc2LDEsCi0gICAgMCwwLDExNCw3OSwwLDAsMCwxMTQsODAsMSwwLDAsNDEsMywxMTQsMTIsCi0gICAgMSwwLDAsMTE0LDM1LDAsMCwwLDExNCw3OCwxLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjAsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDc4LDcsMCwwLDExNSwxNiwwLDAsMCwwLDgsMTIsMSwxNSwKLSAgICAxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwzMSw4MCw5NywxMTYsCi0gICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwwLAotICAgIDAsMCwwLDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDExMywwLDAsMCwxMTYsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMzEsCi0gICAgMiwwLDExNCwzOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTAsMjEsMCwxMjQsMiwwLAotICAgIDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsMTAzLDAsMCwxMjUsCi0gICAgNCwwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw4NSwwLDExNiwzLAotICAgIDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTMxLDIsMCwxMjUsNSwwLDEyNCw0LDAsMTI0LDUsMCwKLSAgICA5NSw1LDAsMTI0LDUsMCw4Myw0MSwyLDc4LDExNCwxNjYsMCwwLDAsNDEsCi0gICAgNiwxMTQsNjAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTUsMSwwLDAsCi0gICAgMTE0LDE3NCwwLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwyMjEsMCwwLDAsNDEsCi0gICAgNiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNzgsMSwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LAotICAgIDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSw3LDAsMCwxMTUsMTgsMCwwLDAsMCw0LDE1LDEsMjQsMiwxNSwKLSAgICAxLDYsMSwxMiwxLDEzLDEsMTUsMSw5LDEsMTIyLDI3LDgwLDk3LDExNiwKLSAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsCi0gICAgMCwwLDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjUyLAotICAgIDAsMCwwLDEwMywwLDAsMTI1LDQsMCwxMjAsMjM5LDAsMTI0LDIsMCw2OCwKLSAgICA5MywyMDMsMCwxMjUsNSwwLDExNiwwLDAsMTI0LDUsMCwxMTYsMSwwLDExNiwKLSAgICAyLDAsMTAyLDIsMCwxMzEsMiwwLDExNSw0NiwwLDExMywxMywwLDExMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLAotICAgIDEyNCw2LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LAotICAgIDYsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDEwOSwwLDEyNCw2LDAsMTA2LDUsCi0gICAgMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLAotICAgIDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsCi0gICAgNywwLDEyNCw3LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNDUsMCwxMTMsMTMsCi0gICAgMCwxMTAsMCwwLDEyNCw3LDAsMTA2LDcsMCwxMDAsMSwwLDEwNyw5LDAsCi0gICAgMTE0LDE2NCwwLDEyNCw3LDAsODMsMTI0LDcsMCwxMDYsOCwwLDEyNSw4LDAsCi0gICAgMTI0LDgsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIwMCwwLDExNiw5LDAsMTAwLAotICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwNiwxMCwKLSAgICAwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMywwLDExMywxMywwLDg3LDExNiwKLSAgICAxMSwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDEyNSw3LDAsMTI0LDQsCi0gICAgMCwxMjQsNywwLDk1LDgsMCwxMjQsNywwLDgzLDEwMCwxLDAsODMsNDEsCi0gICAgNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEwLDk3LDEwOSwKLSAgICAxMDEsNDYsNzgsMTE0LDE0LDEsMCwwLDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwzMiwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSwxMiwxMTQsCi0gICAgMTkzLDAsMCwwLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw1LDk4LDEyMSwxMTYsMTAxLDExNSwKLSAgICAxMTQsODEsMSwwLDAsMTE0LDYwLDAsMCwwLDExNCwxNCwxLDAsMCwxMTQsCi0gICAgODIsMSwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwxNTQsCi0gICAgMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsMjE3LDAsMCwwLDQxLDksMTE0LAotICAgIDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxMywKLSAgICAxLDAsMCwyMTgsMTQsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTAsNSwxMDEsMTEwLDExNiwxMTQsMTIxLDExNCw3OCwxLDAsMCwxMTQsCi0gICAgMTc4LDAsMCwwLDExNCwxNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMiwxMDEsOTksMTEwLDcsMCwwLDExNSw0MCwwLDAsMCwwLDUsNiwxLAotICAgIDEzLDEsMjEsMSw2LDEsMTUsMSwxMiwxLDE1LDEsMjEsMiwxOCwxLAotICAgIDEyLDEsNiwxLDE1LDEsNCwxLDksMSwxMiwxLDE1LDUsMjAsMiwKLSAgICAxNSwxLDksMSwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDk5LDQsMCwwLDAsMCwKLSAgICAwLDAsMCw2LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE0MywwLDAsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDIsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNSw0LAotICAgIDAsMTI0LDQsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDYxLDAsMTAwLDEsMCwKLSAgICA4MywxMjQsNCwwLDEwNiwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzUsMCwKLSAgICAxMjQsNCwwLDEwNiw0LDAsMTI1LDUsMCwxMjQsNSwwLDExNCwxMjgsMCwxMDAsCi0gICAgMiwwLDEyNCw0LDAsOTUsNSwwLDExNiw2LDAsMTI0LDEsMCwxMjQsNSwKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMywwLDEyNCw0LDAsOTUsNCwwLAotICAgIDEyNCw0LDAsODMsMTAwLDEsMCw4MywxMTAsNCwwLDEyNCw0LDAsODMsMTAwLAotICAgIDEsMCw4Myw0MSwzLDEyMiw5OCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwKLSAgICAxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAotICAgIDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0Niw3OCw5MCw5LDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LDcsMCwwLDAsMTE0LDM1LDAsMCwKLSAgICAwLDExNCw4NiwxLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsCi0gICAgMTE0LDIxOCwwLDAsMCwxMTQsNjEsMSwwLDAsNDEsNiwxMTQsMTIsMSwwLAotICAgIDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEzLDEsMCwwLAotICAgIDExNCwxNzgsMCwwLDAsMTE0LDg1LDEsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNCwxLDAsMCwxNDIsNywKLSAgICAwLDAsMTE1LDI2LDAsMCwwLDAsNCwxMiwxLDEyLDEsMjEsMSwxMiwKLSAgICAxLDQsMSwxNSwxLDksMSw2LDMsOSwxLDI0LDEsNCwyLDcsCi0gICAgMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsCi0gICAgMSwwLDgzLDEyNCwzLDAsMTA2LDEsMCw4Myw0MSwyLDEyMiwxNzAsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsCi0gICAgMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAotICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKLSAgICAxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE0LDEsMCwwLAotICAgIDExNCwxNzAsMCwwLDAsNDEsNCwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTUsMSwwLDAsMTY0LAotICAgIDcsMCwwLDExNSw4LDAsMCwwLDAsOCwxOCwxLDEyLDEsNCwxLAotICAgIDEyMiwyMiw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsMTksCi0gICAgMSwwLDAsMTE0LDc1LDEsMCwwLDExNCw4MCwxLDAsMCwxMTQsODEsMSwKLSAgICAwLDAsMTE0LDgyLDEsMCwwLDExNCw4NiwxLDAsMCwxMTQsMTQsMSwwLAotICAgIDAsMTE0LDE1LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NCwxLDAsMCw0OSwKLSAgICA3LDAsMCwxMTUsMjIsMCwwLDAsMTIsMiw2LDIsMTgsOCwxOCwxNywKLSAgICAxOCwxNywxOCwxNSwzLDEsMTgsMzEsMywxLDIxLDIxLDMsMSwxMTQsNzQsCi0gICAgMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMywwLDAsMCw2NCwwLDAsMCwxMTUsMTMzLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LAotICAgIDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCw5MCw3LDAsMTAwLDYsMCwKLSAgICAxMDAsNywwLDEzMiwwLDAsOTAsOCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsCi0gICAgMCwwLDkwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMSwKLSAgICAwLDkwLDEwLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMSwwLAotICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICAxMywwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsOTAsMTQsMCwxMDAsMTAsCi0gICAgMCw4Myw0MSwxOSwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICAxMjIsMTcyLDcwLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwMiwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDExMCwxMTYsMTAxLDExNCw5NywKLSAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTcsMTE0LDEwMSwzMiwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTIsMTAxLDExNCwxMDIsMTExLAotICAgIDExNCwxMDksOTcsMTEwLDk5LDEwMSw0NCwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMTAsMzIsMzIsCi0gICAgMzIsMzIsMTE0LDEwMSwxMDIsMTE0LDEwMSwxMTUsMTA0LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDQsOTcsMTEwLAotICAgIDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNywKLSAgICAwLDAsMCwxMTUsMTIyLDAsMCwwLDEwMywwLDAsMTI1LDMsMCwxMjAsNTIsCi0gICAgMCwxMjQsMiwwLDY4LDkzLDQ0LDAsOTIsMiwwLDEzNywwLDAsMTI1LDQsCi0gICAgMCwxMjQsMywwLDEwNiwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsCi0gICAgMTAwLDIsMCwxMzQsMCwwLDEyNCw0LDAsNjgsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEsMTEzLDEzLDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMSwKLSAgICAwLDExMiw3OSwwLDEwMCwzLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDYsMCwKLSAgICAxMjQsMCwwLDk1LDMsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSwKLSAgICA1LDAsMTE2LDQsMCwxMzEsMCwwLDEyNCwwLDAsOTUsNiwwLDEwMCw1LAotICAgIDAsODMsNDEsNywxMjIsMTU0LDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsCi0gICAgMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDExMSwxMTAsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICA5NywzMiwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwxMDgsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwKLSAgICAxMTQsMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw1MCw0NSwxMTYsCi0gICAgMTE3LDExMiwxMDgsMTAxLDExNSwzMiw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTE1LDQ2LAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLAotICAgIDAsNTEsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwKLSAgICAxMjUsMSwwLDEyNCwxLDAsMTM2LDAsMCwxMDIsMiwwLDg2LDEsMTEzLDMsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsCi0gICAgMjIsMCwwLDAsMTE0LDU4LDEsMCwwLDQxLDEsMTE0LDE3MCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsMTkzLAotICAgIDcsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsCi0gICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsCi0gICAgNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLAotICAgIDExNCw2MiwxMTQsMTE2LDAsMCwwLDExNCwyOSwwLDAsMCw3OCwxMTQsMTM5LDAsCi0gICAgMCwwLDQxLDcsMTE0LDE5OCwwLDAsMCwyMTgsOCw5NSwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDExNSwxMTQsMzUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDMsMTE1LDEwMSwxMTYsMjE4LDExLDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDE5LDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsCi0gICAgMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDEsNSwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDM1LDAsMCwwLDIxOCwxNCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDcsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICAxMTUsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDcyLDAsMCwwLDE4Nyw3LDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwxLDM2LDEsOSwyLDE1LAotICAgIDEsOSwxLDEyLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDEwMCwzLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDIsMCwKLSAgICA4Myw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LAotICAgIDEwNSwxMDksMTAxLDQ2LDExNCwyOSwwLDAsMCw3OCwxMTQsMTM5LDAsMCwwLDQxLAotICAgIDEsMTE0LDg5LDEsMCwwLDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NSwxLDAsCi0gICAgMCwyMDEsNywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAotICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNywwLDEwMCwKLSAgICAxLDAsMTAzLDAsMCwxMDIsMiwwLDgzLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMiwwLDEwNiwyLDAsMTEyLDU1LDAsMTAzLDAsMCwxMDIsMiwwLDgzLDQxLAotICAgIDIsMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LAotICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwKLSAgICAxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCi0gICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LAotICAgIDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMywxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwKLSAgICAwLDExNCwxNTksMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTY2LDAsMCwwLDIwNywKLSAgICA3LDAsMCwxMTUsOCwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsCi0gICAgMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNiwwLDAsMCwwLDAsMCwKLSAgICAwLDcsMCwwLDAsNywwLDAsMCw2NywwLDAsMCwxMTUsNDAsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNiwKLSAgICAwLDExNiwwLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDYsMCwKLSAgICAxMDAsMiwwLDEyNCw0LDAsMTMxLDIsMiw4Myw0MSwzLDc4LDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDIyMSwwLDAsMCw0MSwxLDExNCwyNDAsMCwwLDAsNDEsNywKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDI0NCwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwKLSAgICAzNSwwLDAsMCwxMTQsMjI5LDAsMCwwLDExNCwxMywxLDAsMCwxMTQsMTcwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw4NiwxLDAsMCwyMTksNywwLDAsMTE1LDYsMCwwLDAsCi0gICAgMCwxLDE1LDEsMTgsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSwzLDAsCi0gICAgMCwwLDAsMCwwLDAsMTQsMCwwLDAsMTUsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDI0MCwxLDAsMCwxMDAsMSwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMCwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDEyNSw0LDAsCi0gICAgMTIxLDM0LDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTEyLDQ5LDAsMTE2LAotICAgIDMsMCwxMDYsNCwwLDEzMSwwLDAsMTMxLDEsMCwxMDYsNSwwLDEyNSw1LAotICAgIDAsODcsMTEwLDI0LDAsNCwxMTYsNiwwLDEwNywxMCwwLDExNCw4NSwwLDEsCi0gICAgMSwxLDEwMCwxMCwwLDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsNSwwLAotICAgIDEyNCwwLDAsMTA2LDcsMCwxMDcsMywwLDExNCwxMjMsMCwxMjQsMCwwLDEwNiwKLSAgICA4LDAsMTMxLDAsMCwxLDEyNCw1LDAsMTI0LDAsMCw5NSw3LDAsMTEwLAotICAgIDAsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1NiwwLDEyNCwwLDAsMTA2LDEwLAotICAgIDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLDEzMSwwLDAsMTI1LDcsMCwKLSAgICAxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSw2LDAsMTI0LDQsMCwxMjUsCi0gICAgNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwwLDExNCw1MSwxLDExNiwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEzMSwyLDAsMTI1LDgsMCwKLSAgICAxMjAsMTAzLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCw5Myw3NywwLDkyLDIsMCwKLSAgICAxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LDksMCwyMywxMjUsMTEsMCwKLSAgICAxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwyLDAsMTI1LDEyLDAsMTE2LAotICAgIDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjExLDAsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEyNCw4LDAsMTAzLDEsMCwKLSAgICAxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIxMSwwLDg3LDExNiwxNywwLDEyNCw4LAotICAgIDAsMTMxLDEsMCwxMjUsMywwLDExMCwwLDAsMTIwLDEyNiwwLDEyNCwwLDAsCi0gICAgMTA2LDE0LDAsNjgsOTMsMTE1LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsCi0gICAgMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTI0LDksMCwyMywKLSAgICAxMzEsMiwwLDEyNSwxMiwwLDExNiwxOCwwLDEwMCw2LDAsMTA2LDE5LDAsMTI0LAotICAgIDEyLDAsMTMxLDEsMCwxMDAsNywwLDEwMCwzLDAsMTMxLDEsMSwxLDEyNCwKLSAgICA3LDAsMTI0LDksMCwyMywxMjQsNiwwLDEwNyw2LDAsMTE0LDYxLDEsMTE2LAotICAgIDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMTc2LDEsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsMTI0LDIsMCwKLSAgICAxMzEsNSwwLDgzLDExMyw2MSwxLDExMyw2MSwxLDg3LDEyNCwzLDAsMTE0LDIzNiwKLSAgICAxLDExNiwxOCwwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTYsMjAsMCwxMjQsMSwwLDEwMCw4LDAsMTMxLDIsMCwKLSAgICAxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsMjEsMCwxMjQsCi0gICAgMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMjUsODQsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsNzAsMTE0LDExNiwwLDAsMCwxMTQsMTE1LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsNzIsMCwwLDAsMTIyLDksMTE2LAotICAgIDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSwxMTQsMTQ2LDAsMCwwLDc4LDEyMiwyNSwKLSAgICAxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsMTM5LDAsMCwwLDQxLDIyLAotICAgIDExNCwzMiwwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAzLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNTQsMSwwLDAsMTE0LDQwLAotICAgIDAsMCwwLDExNCw4OSwxLDAsMCwyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE0LDYsMCwwLDAsMTE0LDkyLDEsMCwwLDExNCwKLSAgICAxNDAsMCwwLDAsMTE0LDkxLDEsMCwwLDExNCwyOCwwLDAsMCwxMTQsODgsCi0gICAgMSwwLDAsMTE0LDQ0LDAsMCwwLDExNCw4NiwxLDAsMCwxMTQsNDYsMCwKLSAgICAwLDAsMTE0LDE1MywwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDIxNywwLDAsCi0gICAgMCwxMTQsMjIxLDAsMCwwLDQxLDE0LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsCi0gICAgMCwwLDExNCwxMywxLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNCwxODQsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDEyLAotICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCw5NywKLSAgICAxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw1OCwxLDAsMCwxMTQsMjQ0LDAsMCwKLSAgICAwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCi0gICAgOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE3OCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCi0gICAgMTQsMSwwLDAsMjI0LDcsMCwwLDExNSw2OCwwLDAsMCwwLDMsNiwKLSAgICAxLDE5LDEsMywxLDM0LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwxMiwKLSAgICAyLDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwyMiwKLSAgICAxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTUsMiwyMiwxLDIyLDEsMjUsCi0gICAgMSwxNiwxLDEyLDEsMzIsMSw2LDEsMTksMSwxNSwxLDEyLDEsNCwKLSAgICAxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTQsMSwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDMxLDAsMTE2LDEsMCwKLSAgICAxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsMCwxMDYsMywwLDEzMSwKLSAgICAwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LDQsMCwKLSAgICAxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNzUsMCwxLAotICAgIDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsNywwLAotICAgIDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDExMiwwLDExNiwKLSAgICAxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDExLDAsMTEwLDExMSwKLSAgICAwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsOTAsMCwxMjQsMiwwLAotICAgIDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwxMiwwLDEwMCwyLDAsCi0gICAgMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwwLDEyNSw3LDAsMTI0LAotICAgIDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwxMjQsNSwwLDEyNCw3LAotICAgIDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSw4LDAsMTEwLDYsMCwKLSAgICAxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsMCwxMjQsOCwwLDEzMSwKLSAgICAxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDExLDAsCi0gICAgMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LDAsMTMxLDEsMCwxMTQsCi0gICAgMTAsMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjQsMiwwLDY4LDEzMSwKLSAgICAxLDAsMTI0LDAsMCw5NSwxNywwLDExMCwwLDAsMTAwLDYsMCw4Myw0MSwKLSAgICA3LDEyMiw2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwKLSAgICAxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCwxMTYsMCwwLAotICAgIDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LDI4LDAsCi0gICAgMCwwLDEwNCwwLDAsMTI0LDAsMCw5MywxOCwwLDEyNSwxLDAsMTI0LDEsCi0gICAgMCwxMDYsMCwwLDEzMSwwLDAsMTQ2LDIsMCwxMTMsNiwwLDgzLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDE0MCwwLDAsMCw0MSwyLDExNCwyMiwwLDAsCi0gICAgMCw5MCwyLDEwMiwxMTAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDIsCi0gICAgOCwwLDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsMTA4LDEwMSwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsMTAxLDExNiwKLSAgICA5OSwxMTEsMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzUsMCwwLDAsMTE0LDMsMCwKLSAgICAwLDAsOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ1LDAsMCwwLAotICAgIDIxOCwxNyw3MCwxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMjE4LDE1LDgwLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwyMTgsMTgsNzgsMTExLDExNiw2NSw2OCwxMDUsMTE0LDEwMSw5OSwxMTYsCi0gICAgMTExLDExNCwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw3LDAsMCwwLDExNCw4LDAsCi0gICAgMCwwLDExNCw5LDAsMCwwLDExNCw5MCwxLDAsMCwxMTQsOTEsMSwwLAotICAgIDAsMTE0LDEzNCwwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDE0MCwwLDAsMCwKLSAgICAyMTgsMyw5NywxMDAsMTAwLDExNCwxMCwwLDAsMCwxMTQsOTIsMSwwLDAsNDEsCi0gICAgOSwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLDgsOTksMTExLDExMCwKLSAgICAxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywxMDIsCi0gICAgMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNCw3MiwxLDAsCi0gICAgMCwxMTQsNjcsMCwwLDAsMTE0LDY2LDEsMCwwLDExNCw1OCwxLDAsMCwKLSAgICA5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw5NCwxLDAsMCwxMyw4LAotICAgIDAsMCwxMTUsMzQsMCwwLDAsMCwyLDksMSwzLDEsMzEsMSwyMiwKLSAgICAzLDExLDMsMTgsMSwxOCw3LDksMSwxMywxLDI0LDEsNiwxLDI3LAotICAgIDIsNiwxLDE3LDEsOSwxLDE4LDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAotICAgIDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLDEzNSwxLAotICAgIDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsODMsNDEsMyw5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCi0gICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsCi0gICAgMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsCi0gICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwKLSAgICAxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywKLSAgICAxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLAotICAgIDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKLSAgICAxOSwwLDAsMCwxMTUsNDYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTE1LDMzLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsCi0gICAgMTM2LDEsMCwxNDAsMSwwLDgzLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsCi0gICAgMTA0LDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsCi0gICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsCi0gICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsCi0gICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzUsMCwwLDAsNDEsMiwxMTQsCi0gICAgNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwxLDExNCwzNSwwLDAsMCwKLSAgICA0MSwyLDExNCwxMiwxLDAsMCwxMTQsOTMsMSwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAotICAgIDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDU0LDgsMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDIxLDEsMTIyLAotICAgIDU0LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxMiwKLSAgICAxLDAsMCwxMTQsOTMsMSwwLDAsMTE0LDEwMCwxLDAsMCwxMTQsNCwwLAotICAgIDAsMCw0MSwyLDExNCwxMiwxLDAsMCwxMTQsOTMsMSwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDksMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ0LDgsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsMTAsMjEsNiwxMjIsMjAsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDE2LAotICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsCi0gICAgNDEsMiwxMTQsNDcsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDEsMTE0LDcxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwxMDEsMCwwLDAsNjIsOCwwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAotICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsNTcsMCwwLDAsMTE0LDU2LAotICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDcyLDAsCi0gICAgMCwwLDExNCw3NSwxLDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNSwxLDAsCi0gICAgMCwxMTQsMTY2LDAsMCwwLDExNCw4NiwxLDAsMCwxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDk0LDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsMTAxLDEsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDg3LDEsMCwwLDE3OCw3LDAsCi0gICAgMCwxMTUsMjAsMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LDIsCi0gICAgMTIsMTIsMTIsNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsODcsMSwwLDAsOTksCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICA2NCwwLDAsMCwxMTUsNDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLAotICAgIDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLAotICAgIDkwLDUsMCwxMDAsNiwwLDgzLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsCi0gICAgMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAotICAgIDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKLSAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsMjQsNjUsCi0gICAgOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LAotICAgIDQsMSwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc1LDAsMCwwLDcyLAotICAgIDgsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LAotICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksNCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLAotICAgIDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsCi0gICAgMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwzMiw5NywxMTAsMTIxLDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsCi0gICAgNzgsNDEsMiwxMTQsMTA2LDAsMCwwLDExNCwxMDcsMCwwLDAsNDEsNCwxMTQsCi0gICAgNzEsMCwwLDAsOTAsOCwxMDEsMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LAotICAgIDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwxMTcsMTAxLDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LAotICAgIDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCw4MSwwLDAsMCw3Niw4LDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDI3LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLAotICAgIDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTAyLDEsMCwwLDY4LDgsCi0gICAgMCwwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDQsMTE0LDEwMiwxLAotICAgIDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw5MSwwLDAsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMjQsMTMxLDIsMCwxMjUsCi0gICAgMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsMSwwLDEyNCwyLDAsMTA3LDAsCi0gICAgMCwxMTQsNTUsMCwxMTYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwwLAotICAgIDExMCwwLDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEyNSw0LDAsMTI0LDAsMCwKLSAgICAxMTQsODcsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDQsMCwxMjQsMCwwLDEzMSwKLSAgICAyLDAsODMsMTI0LDQsMCw4Myw0MSw2LDEyMiw1MCw4MiwxMDEsMTE1LDExMSwxMDgsCi0gICAgMTE4LDEwMSwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsCi0gICAgOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsNDYsMTE0LDExNiwwLAotICAgIDAsMCwxMTQsMjksMCwwLDAsMTIyLDUwLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LAotICAgIDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwKLSAgICAxMTgsMTAxLDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDg0LDAsMCwwLAotICAgIDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw0MSw0LDExNCwzNCwwLDAsMCwxMTQsMzEsCi0gICAgMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsNDcsMCwwLDAsNDEsNSwxMTQsCi0gICAgNjcsMCwwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSwxMTQsMTI4LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMywKLSAgICA5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsODEsOCwwLAotICAgIDAsMTE1LDEwLDAsMCwwLDAsMiwyMiwxLDE4LDEsMTUsMSwxMCwxLAotICAgIDExNCwxMDUsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDQsMCwKLSAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLAotICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDM0LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMSwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsCi0gICAgNzgsNDEsMiwxMTQsMTUsMSwwLDAsMTE0LDE3NCwwLDAsMCw0MSw0LDExNCwKLSAgICA3OCwxLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDgsCi0gICAgMTAxLDEwMyw5Nyw5OSwxMjEsOTAsOCwwLDAsMTE1LDgsMCwwLDAsMCwzLAotICAgIDE4LDEsMTIsMSw0LDEsMTE0LDEwNiwxLDAsMCw5OSwzLDAsMCwwLAotICAgIDAsMCwwLDAsOSwwLDAsMCwyNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMzQsMSwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNSwyOCwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMDAsMSwwLDExNiw0LDAsMTMxLDIsMCwxLDExMCwwLAotICAgIDAsMTI0LDAsMCwxMTYsMCwwLDEwNiw1LDAsMTA3LDYsMCwxMjUsMywwLAotICAgIDEyMCwyNDAsMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsMjI1LDAsMTI1LDQsMCwKLSAgICAxMTYsNiwwLDEzMSwwLDAsMTQzLDkzLDAsMSwxMjEsMTMsMCwxMjQsNCwwLAotICAgIDEwNiw3LDAsMTI1LDUsMCw4NywxMTAsNTQsMCw0LDExNiw4LDAsMTA3LDEwLAotICAgIDAsMTE0LDEzOCwwLDEsMSwxLDExNiw5LDAsMTI0LDQsMCwxMjQsMCwwLAotICAgIDEyNCwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDIsMCwxMDcsCi0gICAgOCwwLDExNCwxMzQsMCwxMTksNTMsMCwxMTAsMCwwLDg5LDExMCwxOSwwLDg4LAotICAgIDEyNCw1LDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsCi0gICAgNiwwLDg3LDEwMCwyLDAsODEsODgsMTI0LDYsMCwxMDAsMiwwLDEwNyw5LAotICAgIDAsMTE0LDUzLDAsMTI0LDMsMCwxMiwxMTQsMTUsMSwxMjQsMCwwLDExNiwwLAotICAgIDAsMTA2LDUsMCwxMDcsNiwwLDExNCwxNSwxLDExNiwwLDAsMTA2LDUsMCwKLSAgICAxMjQsMCwwLDI1LDEyNSw3LDAsMTIxLDEzLDAsMTI0LDcsMCwxMDYsMTAsMCwKLSAgICAxMjUsOCwwLDg3LDExMCwyMiwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjQ3LAotICAgIDAsMSwxLDEsMTI0LDYsMCw4Myw4OSwxMTMsMTksMSw4OCwxMjQsOCwwLAotICAgIDEwMCwyLDAsMTA3LDgsMCwxMTQsOCwxLDEyNCw2LDAsODMsMTI0LDgsMCwKLSAgICA4MywxMTMsMjIsMSwxMjQsNiwwLDgzLDExMyw1MywwLDExMyw1MywwLDg3LDEwMCwKLSAgICAyLDAsODMsMTAwLDIsMCw4Myw0MSwzLDEyMiwyMyw3MCwxMDUsMTEwLDEwMCwzMiwKLSAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMjIsMjIsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LDQxLDExLDExNCw3LDAsCi0gICAgMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjcsMCwKLSAgICAwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCw3MywwLDAsCi0gICAgMCwxMTQsMTAyLDEsMCwwLDExNCwxNCwxLDAsMCwxMTQsMjEwLDAsMCwwLAotICAgIDExNCwxMDYsMSwwLDAsMTE0LDIwOSwwLDAsMCw0MSw5LDExNCw2NywwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDEzLDEsMCwwLDkwLDksMTA1LDExNSw5NSwKLSAgICAxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCw3OCwxLDAsMCwxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyMDksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLAotICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSw4LDAsMCwxMTUsNDgsCi0gICAgMCwwLDAsMCwyLDksMSwxOSw0LDE1LDEsMTYsMSwxMCwxLDMsCi0gICAgMSwxMywxLDEzLDEsMTgsMSwxMiwxLDExLDIsMjQsMSwxMiwyLDIyLAotICAgIDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwxLDQsMiw3LAotICAgIDIsMTEsMiwxMTQsMTA4LDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsCi0gICAgMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE5NCwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMzEsMiwwLDExNSw0NSwKLSAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDExNiw0LDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LAotICAgIDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDcyLDAsMTE2LDUsMCwxMDAsMywKLSAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwxLDAsMTE0LDE1NiwwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDEwOCwwLDExNiwKLSAgICAyLDAsMTAwLDQsMCwxMzEsMSwwLDEzMCwxLDAsMTEzLDE1NiwwLDEyNCwxLAotICAgIDAsMTE2LDYsMCwxMDYsNywwLDEwNyw3LDAsMTE0LDE1NiwwLDEwMCw1LDAsCi0gICAgMTI1LDMsMCwxMTYsOCwwLDEyNCwzLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTMxLDEsMCwxMzAsMSwwLDExMywxNTYsMCwxMTAsMCwwLDEyNCwwLAotICAgIDAsMTIsMTE0LDE5MCwwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMiwwLDExNCwxOTAsCi0gICAgMCwxMTYsNSwwLDEwMCw2LDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsCi0gICAgMTAwLDcsMCw4Myw0MSw4LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LAotICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsCi0gICAgMTEwLDEwMSwzNCw0NiwxMjIsMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwKLSAgICAxMDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsCi0gICAgMTExLDExNiwzMiwxMjMsMTI1LDExNCw4NCwwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLAotICAgIDEwOCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSwKLSAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsCi0gICAgMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsCi0gICAgNjEsODAsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsCi0gICAgMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LAotICAgIDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSw3OCw0MSw5LDExNCwxOTMsMCwwLDAsMTE0LDgzLDEsMCwwLDIxOCw5LAotICAgIDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDcsMCwwLDAsMTE0LDY2LAotICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLDExNCw0MSwKLSAgICA0LDExNCw2NywwLDAsMCwxMTQsMTAzLDEsMCwwLDExNCwxMDQsMSwwLDAsCi0gICAgMTE0LDE3MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsCi0gICAgMTAxLDk5LDEwNywxMzksOCwwLDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLAotICAgIDMwLDEsMTIsMSwxNSwxLDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsCi0gICAgMjcsMSwxOSwxLDExNCwxMTEsMSwwLDAsMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwKLSAgICAxMjUsOTksMiwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDUyLDEsMCwwLDEwMCwwLDAsMTI1LDIsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsCi0gICAgMjUsMTI1LDMsMCwxMjQsMywwLDExNCwxNzgsMCwxMjQsMywwLDExNiwxLDAsCi0gICAgMTA2LDIsMCwxMDcsNywwLDExNCw2MiwwLDExNiwzLDAsMTI0LDEsMCwxMjQsCi0gICAgMywwLDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMDYsCi0gICAgMiwwLDEwNyw2LDAsMTE0LDg4LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLAotICAgIDAsMjUsODMsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwKLSAgICAxMjEsMTMsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTMsMTc4LDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxNzQsMCwxLDEsMSwxMTYsNiwwLAotICAgIDEwMCwzLDAsMjMsMTA2LDcsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNSwwLDExNiw4LDAsMTI0LDUsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDg5LDExMywxNzgsMCw4OCwxMTAsMCwwLDExNiw5LDAsCi0gICAgMTI0LDAsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjM1LDAsMTE2LDgsMCwxMTYsNiwwLDEwNiw3LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLAotICAgIDEzMCwxLDAsMTEwLDE4LDAsMTE2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEwNiwKLSAgICAxMSwwLDEzMSwwLDAsMTI1LDcsMCwxMjQsMywwLDExNCw0OCwxLDExNiwxLAotICAgIDAsMTA2LDIsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTE2LDEyLDAsMTI0LDQsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsCi0gICAgMjUsMTI0LDcsMCwxMzEsMywwLDEsMTEwLDAsMCwxMjQsNywwLDgzLDQxLAotICAgIDYsNzgsMTE0LDExNiwwLDAsMCwxMTQsODQsMCwwLDAsMTIyLDIzLDU5LDMyLAorICAgIDAsMTE1LDE3OSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMzEsCisgICAgMiwwLDExNSw0MiwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDExNiw0LAorICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLAorICAgIDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwwLDExNCw2NiwwLDExNiw1LDAsMTAwLAorICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMTQsMTQ0LDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwxMTUsMTAyLDAsMTE2LDIsMCwKKyAgICAxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNDIsMCwxMjQsMSwwLDExNiwKKyAgICA2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNDQsMCwxMDAsNSwwLDEyNSwzLAorICAgIDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLDExNCwxNzUsMCwxMjQsMiwwLAorICAgIDEwMCwyLDAsMTA3LDIsMCwxMTQsMTc1LDAsMTE2LDUsMCwxMDAsNiwwLDEzMSwKKyAgICAxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLDgsMTIyLDI4LDg2LDEwMSwxMTQsCisgICAgMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsCisgICAgMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwKKyAgICAxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsMTE0LDMzLDAsMCwwLDEyMiwKKyAgICAxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsCisgICAgNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsCisgICAgMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLAorICAgIDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LDksODQsMTIxLDExMiwxMDEsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LAorICAgIDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDIxOCwxMSwKKyAgICA4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLDExNCw0MSw0LDExNCwxNSwwLAorICAgIDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDE0NywwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywxNTEsCisgICAgMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDI3LDEsMTIsMSwKKyAgICAxMiwxLDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsMjEsMSwxOSwxLAorICAgIDExNCwxODEsMCwwLDAsMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwxMjUsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDgsMCwwLDAsMTIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQwLDEsMCwwLDEwMCwwLDAsMTI1LDIsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsMCwKKyAgICAxMjQsMywwLDExNCwxNzUsMCwxMjQsMywwLDExNiwxLDAsMTA2LDIsMCwxMDcsCisgICAgNywwLDExNCw1OSwwLDExNiwzLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLAorICAgIDAsMSwxMjQsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNiwwLDExNCw4NSwKKyAgICAwLDExNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDI1LDgzLDExNiwxLDAsMTA2LAorICAgIDIsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCisgICAgNCwwLDEyNSwyLDAsODcsMTEwLDYxLDAsNCwxMTYsNSwwLDEwNywxMCwwLAorICAgIDExNCwxNzQsMCwxLDEsMSwxMTYsNiwwLDEwMCwzLDAsMjMsMTA2LDcsMCwKKyAgICAxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNSwwLDExNiw4LDAsMTI0LAorICAgIDUsMCwxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMDAsMCwwLDEzMCwyLAorICAgIDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCwwLDAsMTI0LDIsMCwxMzEsCisgICAgMiwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIzMiwKKyAgICAwLDExNiw4LDAsMTE2LDYsMCwxMDYsNywwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxMDAsNCwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwxMiwwLDExNiwKKyAgICAxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLDEyNCwzLDAsMTE0LDM2LAorICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTEsCisgICAgMCwxMjQsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsCisgICAgMTAwLDUsMCwyNSwxMjQsNywwLDEzMSwzLDAsMSwxMjQsNywwLDgzLDQxLAorICAgIDYsNzgsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsMTIyLDIzLDU5LDMyLAogICAgIDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNCw2NywwLDAsMCwxMTQsMTE1LDAsMCwwLDQxLAotICAgIDEzLDExNCwzMiwwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwwLDAsCi0gICAgMTE0LDExNCwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwyMTAsMCwwLDAsMjE4LAotICAgIDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDQ3LDAsMCwwLDExNCwxNTQsCi0gICAgMCwwLDAsMTE0LDEwOCwxLDAsMCwxMTQsMTc1LDAsMCwwLDExNCw3LDEsCi0gICAgMCwwLDExNCw2MSwwLDAsMCw0MSw4LDExNCw2NywwLDAsMCwyMTgsNywKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTQsMzUsMCwwLDAsMTE0LDIzNCwwLDAsCi0gICAgMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMywKLSAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsCi0gICAgMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTU5LDgsMCwwLDExNSw0MiwwLDAsMCwKLSAgICAwLDEsNiwxLDE5LDEsNiwxLDE1LDEsMTYsMiwxNSwxLDExLDEsCi0gICAgMTMsMSwzLDEsMTMsMSwxMywxLDIyLDEsMjYsMSwxNSwxLDEyLDEsCi0gICAgMzAsMiwxOCwxLDYsMiwxMywxLDMyLDEsMTE0LDExNCwxLDAsMCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTQzLDE4LDAsMSwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDgzLDg3LDEwMCwxLDAsODEsODgsMTAwLDEsMCw4Myw0MSwyLDEyMiwKLSAgICA1NCw3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE0LAotICAgIDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwKLSAgICAxMTQsMSwwLDAsNDEsMiwxMTQsNjcsMCwwLDAsMTE0LDExMywxLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCi0gICAgMTQsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTg2LAotICAgIDgsMCwwLDExNSw0LDAsMCwwLDAsMiwxMywxLDExNCwxMTUsMSwwLAotICAgIDAsOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTcyLDAsMCwwLDExNiwwLDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDcsNCwwLDExNCw0OSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLDExMCwwLDAsMTE2LDIsMCwxMDYsCi0gICAgMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsMTA2LDUsMCwxMDcsCi0gICAgNywwLDExNCw4NywwLDExNiw2LDAsMTI0LDAsMCwxMTYsNywwLDEzMSwyLAotICAgIDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsMTI1LDMsMCwxMjQsCi0gICAgMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTU4LDAsMTE2LDIsMCwxMDYsOCwKLSAgICAwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LDAsMCwxMzEsMSwKLSAgICAwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTE2LDExLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDEsMTI0LDMsMCw4Myw0MSw1LDk3LDUwLDEsMCwwLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMTEsMTEwLDMyLDEwNSwxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKLSAgICAxMDgsMTA4LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLAotICAgIDEwOSw5NywxMDAsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwxMDksCi0gICAgMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLAotICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsCi0gICAgMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsMzIsCi0gICAgOTksMTExLDEwOSwxMDksMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsMTE2LAotICAgIDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAotICAgIDEwNSwxMTYsMTIxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExMCwKLSAgICAxMDAsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsMTA0LAotICAgIDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LDExNiwKLSAgICAxMDUsMTEwLDEwMywzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsCi0gICAgMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwMCwxMDUsMTAwLDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDExNCw4NCwwLDAsMCw3OCwxMjIsNDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTExLAotICAgIDEwMiwzMiwxMjMsMTI1LDMyLDEwNCw5NywxMDgsMTE2LDEwMSwxMDAsNTksMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCi0gICAgMTE0LDY3LDAsMCwwLDQxLDEyLDExNCwxMTEsMSwwLDAsMTE0LDEwNSwxLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDExNCw0LDEsMCwwLDExNCw3LDAsMCwwLAotICAgIDExNCw3MywwLDAsMCwxMTQsMTE1LDEsMCwwLDIxOCwxMSw5NSwxMDMsOTksMTAwLAotICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCwxMDcsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDExNCwxNTQsMCwwLDAsMTE0LDExMiwwLDAsMCw0MSw1LDExNCw2NywwLAotICAgIDAsMCwxMTQsMTAzLDEsMCwwLDExNCwxMDQsMSwwLDAsMTE0LDE4MCwwLDAsCi0gICAgMCwxMTQsMTUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCwxMTYsMSwwLDAsMTkyLDgsMCwwLDExNSwyOCwKLSAgICAwLDAsMCwwLDksMTYsMSwxMiwxLDIxLDEsMTAsMSwxNSwxLDEzLAotICAgIDEsMTMsMSwxMiwxLDEwLDEsNiwxLDksMSwyMSwxLDEwLDEsMTE0LAotICAgIDExNiwxLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsCi0gICAgMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsMSwxLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyNTMsMCwxMDAsMiwwLAotICAgIDEyNCwxLDAsMTA3LDYsMCwxMTQsODksMCwxMTYsMSwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwxLAotICAgIDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCw4OSwKLSAgICAwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsMCwKLSAgICAxLDExMyw4OSwwLDExMCwwLDAsMTIwLDE2MSwwLDEyNCwxLDAsNjgsOTMsMTUwLAotICAgIDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDExNSw5NiwwLDEwMCw0LDAsMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAotICAgIDMsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLDE3LDAsMTE2LDcsMCwxMjQsMiwKLSAgICAwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMywyNDYsMCw0LDExNiw4LDAsCi0gICAgMTA3LDEwLDAsMTE0LDI0MiwwLDEsMTI1LDUsMCwxLDEyMiw1MywwLDExNiw5LAotICAgIDAsMTI0LDUsMCwxMzEsMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsCi0gICAgMTE0LDIyMSwwLDEyNCw1LDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwKLSAgICAyMjEsMCwxMTksOTYsMCwxMTMsMjIxLDAsMTEwLDAsMCwxMzAsMCwwLDg3LDg5LAotICAgIDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEzLDI0NiwwLAotICAgIDg4LDExMyw5NiwwLDExMyw5NiwwLDg3LDExMCwwLDAsMTI0LDAsMCw4Myw0MSwKLSAgICA2LDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LAotICAgIDk3LDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LAotICAgIDExMSwxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwKLSAgICAxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksCi0gICAgMzIsOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKLSAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMjQ3LDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsCi0gICAgOTUsOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw2MCwwLDAsCi0gICAgMCwxMTQsMjQ2LDAsMCwwLDIxOCw2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDExOCwxLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDU3LDAsCi0gICAgMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsODMsMSwwLAotICAgIDAsMTE0LDksMCwwLDAsMjE4LDE1LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLAotICAgIDk1LDgwLDgyLDY5LDcwLDczLDg4LDExNCw2NywwLDAsMCw0MSw2LDExNCwxODAsCi0gICAgMCwwLDAsMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTQsMTEzLDEsCi0gICAgMCwwLDExNCwxNiwwLDAsMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsCi0gICAgMTA5LDEwMSwxMTQsNDEsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsCi0gICAgMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwyMTYsOCwwLDAsMTE1LDM0LDAsMCwKLSAgICAwLDAsMTAsMTUsMSwxMiwxLDEyLDEsMTMsMSwxNSwxLDIyLDEsMTMsCi0gICAgMSwxNSwxLDIxLDEsMywxLDE3LDEsMTgsNCwyMSwxLDE1LDEsOSwKLSAgICAxLDMyLDEsMTE0LDEyMiwxLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw3OCwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDc0LDAsMTI0LDAsMCwKLSAgICAxMDAsMywwLDI1LDEyNSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEwNyw3LDAsCi0gICAgMTE0LDc0LDAsMTI0LDEsMCwxMDYsMSwwLDEwMCw1LDAsMTMxLDEsMCwxMDAsCi0gICAgNiwwLDI1LDEyNSwxLDAsMTEzLDc0LDAsMTEwLDAsMCwxMjQsMSwwLDgzLAotICAgIDQxLDcsMTIyLDE2Nyw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsCi0gICAgOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsCi0gICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKLSAgICAxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAotICAgIDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsCi0gICAgMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLAotICAgIDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwKLSAgICAxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwKLSAgICAxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywKLSAgICAxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDI1MSwwLDAsMCwKLSAgICA3OCwxMTQsNTcsMCwwLDAsMTE0LDI0NywwLDAsMCwxMTQsMTE2LDAsMCwwLAotICAgIDExNCw4NCwwLDAsMCw0MSwyLDExNCw5MywwLDAsMCwxMTQsMzIsMCwwLAotICAgIDAsNDEsMiwyMTgsNywxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNCwxMDMsMSwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMjE4LDE3LDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywKLSAgICAxMDEsOTUsOTUsMjQ4LDgsMCwwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwKLSAgICAxMiwxLDEwLDEsMTIsMSwyNSwxLDExNCwxMjQsMSwwLDAsOTksMCwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNTUsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsCi0gICAgMTMxLDAsMCwxMDIsMiwwLDEyNSwwLDAsMTE2LDMsMCwxMTYsNCwwLDEwMiwKLSAgICAyLDAsMTI1LDEsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDIsMCwxMjUsMiwKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEwMywzLDAsODMsNDEsMSwKLSAgICAxMjIsOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LAotICAgIDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwKLSAgICAzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwKLSAgICAzMiw0MSw3LDExNCw1NywxLDAsMCwxMTQsMTA2LDAsMCwwLDIxOCwxOCwxMDEsCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCi0gICAgMTE1LDExNCw5LDEsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDgsMSwwLDAsCi0gICAgMTE0LDIzMywwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsMTE2LAotICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMjQxLDAsMCwwLDcsOSwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCw1LDE4LDEsMTIsMSwxMiwxLDExNCwyNDEsMCwwLDAsOTksCi0gICAgNSwwLDAsMCwwLDAsMCwwLDksMCwwLDAsNSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjI3LDAsMCwwLDEyNCw0LDAsMTAwLDEsMCwxMDcsCi0gICAgMiwwLDExNCwyNywwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw1LAotICAgIDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDQ1LDAsCi0gICAgMTI0LDEsMCwxMTAsMywwLDEwNSwwLDAsMTI1LDYsMCwxMTYsMSwwLDEyNCwKLSAgICA2LDAsMTMxLDEsMCwxMjUsNywwLDExNiwwLDAsMTI0LDAsMCwxMjQsNywKLSAgICAwLDEyNCw0LDAsMTMxLDMsMCwxMjUsNSwwLDEyNCwzLDAsMTE1LDIwNywwLAotICAgIDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMDAsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsCi0gICAgMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwwLDEyNCw1LDAsODMsMTE2LDMsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTE2LDMsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLAotICAgIDMsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwyNCwxMjUsOCwwLAotICAgIDExNiw0LDAsMTA2LDUsMCwxMjQsNSwwLDEwNiw2LDAsMTAwLDIsMCwxMTYsCi0gICAgMywwLDEyNCw1LDAsMTA2LDYsMCwxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLAotICAgIDIsMCwyNSwyNSw4MywxMTAsMTYsMCwxMTYsNywwLDEyNCw1LDAsMTI0LDMsCi0gICAgMCwxMTYsMCwwLDEzMSwzLDAsODMsMTAwLDIsMCw4Myw0MSw0LDk3LDIxNCwKLSAgICAxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwKLSAgICAxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LAotICAgIDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksMTE3LDExNCwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LAotICAgIDExMSwxMDksMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLAotICAgIDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMTUsNDYsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMzksMzIsCi0gICAgOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTA1LDEwMywxMTAsMTExLAotICAgIDExNCwxMDEsMTAwLDQ2LDMyLDg0LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzksMTAyLDExNCwKLSAgICAxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDExNSwzMiwxMTksMTA0LDk3LDExNiwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDMyLDk3LDExNSwzMiwKLSAgICA5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwKLSAgICAxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsNDAsMTAxLDQ2LDEwMywKLSAgICA0NiwzMiw5Niw5NiwxMDIsMTE0LDExMSwxMDksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsNjAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwKLSAgICA2Miw5Niw5Niw0MSw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwKLSAgICAxMDgsMzksMTAsMzIsMzIsMzIsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLAotICAgIDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LAotICAgIDExMCwzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5Niw5NiwKLSAgICAxMDIsMTE0LDExMSwxMDksMzIsNDYsNDYsMTEyLDEwNywxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMzIsMTA5LDExMSwxMDAsOTYsOTYsMzIsMTE5LDExMSwxMTcsMTA4LDEwMCwzMiwxMDQsOTcsCi0gICAgMTE4LDEwMSwzMiw5NywzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDMyLDExMSwxMDIsMzIsCi0gICAgNTAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDg0LDAsMCwwLDc4LDExNCwKLSAgICAxMTYsMCwwLDAsNDEsOCwxMTQsMTE2LDEsMCwwLDExNCwxMjQsMSwwLDAsCi0gICAgMTE0LDEzNCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LAotICAgIDczLDAsMCwwLDExNCw1NywwLDAsMCwxMTQsMTIyLDEsMCwwLDQxLDksCi0gICAgMTE0LDY3LDAsMCwwLDExNCwxMjMsMSwwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywKLSAgICAxMDgsMTE1LDExNCwxMjEsMSwwLDAsMTE0LDEwNCwxLDAsMCwxMTQsMTgwLDAsMCwKLSAgICAwLDkwLDgsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSw5NSwxMTQsMTAzLDEsMCwwLAotICAgIDkwLDcsOTksMTE3LDExNiw5NSwxMTEsMTAyLDEwMiwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsOTUsOTUsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsOTUsOTUsMTgsOSwwLDAsMTE1LDI2LDAsMCwwLDAsMTEsMTIsCi0gICAgMSwxNSwyLDI0LDEsMTIsMSwxOCwxLDYsMywxMiwxLDIzLDEsNiwKLSAgICAxLDQsNCwzNSwzLDQwLDIsMTE0LDEyNywxLDAsMCw5OSwxLDAsMCwKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDE0MCwwLDAsMCw0MSwKKyAgICAxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDk2LDAsMCwwLDIxOCwKKyAgICA4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCw1MCwwLDAsMCwxMTQsNzcsCisgICAgMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCw3LDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLDAsMCw5MCwxMywxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNDcsMCwwLDAsCisgICAgMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMDEsMTAwLDE3MSwzLDAsMCwxMTUsNDIsMCwwLDAsMCwxLDYsMSwxOSwKKyAgICAxLDYsMSwxNSwxLDEzLDIsMTUsMSwxMSwxLDEzLDEsMywxLDEzLAorICAgIDEsMTMsMSwyMiwxLDI2LDEsMTUsMSwxMiwxLDMwLDIsMTIsMSw2LAorICAgIDIsMTMsMSwyOSwxLDExNCwxODQsMCwwLDAsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDM3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDE0MywxOCwwLAorICAgIDEsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw4NywxMDAsCisgICAgMSwwLDgxLDgyLDg4LDEwMCwxLDAsODMsNDEsMiwxMjIsNTQsNzAsMTA1LDExMCwKKyAgICAxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywKKyAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCisgICAgOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDU0LDAsMCwwLDExNCwxODQsMCwwLDAsCisgICAgNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTk4LDMsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMiwxMywxLDExNCwxODUsMCwwLDAsMTE0LDMzLDAsCisgICAgMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2NiwwLDAsMCwxMTYsMCwwLDEyNCwKKyAgICAwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMjQsMiwwLDEwMCwKKyAgICAxLDAsMTA3LDQsMCwxMTQsNDYsMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsCisgICAgMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDAsMCwxMTYsMiwwLDEwNiwzLDAsCisgICAgMTMxLDAsMCwxLDEyNCwwLDAsMTE2LDQsMCwxMDYsNSwwLDEwNyw3LDAsCisgICAgMTE0LDg0LDAsMTE2LDYsMCwxMjQsMCwwLDExNiw3LDAsMTMxLDIsMCw4MywKKyAgICAxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwyNSwxMjUsMywwLDEyNCwzLDAsCisgICAgMTAwLDIsMCwxMDcsOCwwLDExNCwxNTIsMCwxMTYsMiwwLDEwNiw4LDAsMTMxLAorICAgIDAsMCwxLDEwMCwzLDAsMTA2LDksMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAorICAgIDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwKKyAgICAxLDEzMCwxLDAsMTE2LDExLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTI0LDMsCisgICAgMCw4Myw0MSw1LDk3LDUwLDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDEwNSwKKyAgICAxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwOSw5NywxMDAsMTAxLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMDEsCisgICAgMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwxMDksMTAxLDExMCwxMTYsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsMzIsOTksMTExLDEwOSwxMDksMTExLAorICAgIDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsMTE2LDExMSwxMTQsMzIsMTExLDEwMiwKKyAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDEwNSwxMTYsMTIxLDEwLDMyLAorICAgIDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExMCwxMDAsMzIsOTUsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExMCwKKyAgICA5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDEwMiwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMCwxMDUsMTAwLAorICAgIDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwzMywwLDAsMCwKKyAgICA3OCwxMjIsNDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTExLDEwMiwzMiwxMjMsMTI1LDMyLAorICAgIDEwNCw5NywxMDgsMTE2LDEwMSwxMDAsNTksMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE0LDE1LDAsMCwwLAorICAgIDQxLDEyLDExNCwxODEsMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsNTcsMCwwLAorICAgIDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAorICAgIDExNCwxODUsMCwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTE0LDU4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwwLAorICAgIDAsMTE0LDYzLDAsMCwwLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxNjksMCwKKyAgICAwLDAsMTE0LDE3MCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDc0LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxODYsMCwwLDAsMjA0LDMsMCwwLDExNSwyOCwwLDAsMCwwLDksCisgICAgMTYsMSwxMiwxLDE4LDEsMTAsMSwxNSwxLDEzLDEsMTMsMSwxMiwxLAorICAgIDEwLDEsNiwxLDksMSwxOCwxLDEwLDEsMTE0LDE4NiwwLDAsMCw5OSwKKyAgICAzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjM5LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsCisgICAgMSwwLDEzMSwyLDAsMTE0LDIzNSwwLDEwMCwyLDAsMTI0LDEsMCwxMDcsNiwKKyAgICAwLDExNCw4MywwLDExNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwxLDAsCisgICAgMTI0LDEsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMDAsMywwLDEzMSwyLDAsMTE0LDgzLDAsMTI0LDEsMCwxMDYsCisgICAgMywwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwwLDEsMTIwLDE0OSwwLDEyNCwKKyAgICAxLDAsNjgsOTMsMTQxLDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LAorICAgIDMsMCwxMzEsMiwwLDExNSw5MCwwLDEwMCw0LDAsMTA2LDUsMCwxMjQsMCwKKyAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw0LDAsMTIxLDE3LDAsCisgICAgMTE2LDcsMCwxMjQsMiwwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMyw5MCwKKyAgICAwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjMwLDAsMSwxMjUsNSwwLDEsCisgICAgMTIyLDQ3LDAsMTE2LDksMCwxMjQsNSwwLDEzMSwxLDAsMTA2LDEwLDAsMTE2LAorICAgIDExLDAsMTMxLDEsMCwxMTQsMjA5LDAsMTI0LDUsMCwxMDYsMTIsMCwxMjQsNCwKKyAgICAwLDEwNywyLDAsMTE0LDIwOSwwLDExOSw5MCwwLDEzMCwwLDAsODcsODksMTAwLAorICAgIDUsMCwxMDAsNSwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTMsOTAsMCw4OCwKKyAgICAxMTMsOTAsMCw4NywxMjQsMCwwLDgzLDQxLDYsMTIyLDIzOCw3MCwxMDUsMTAzLDExNywKKyAgICAxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwKKyAgICAxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLAorICAgIDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwKKyAgICAxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsCisgICAgMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LAorICAgIDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LAorICAgIDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxMzEsMCwwLDAsMjUwLAorICAgIDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMjIsNSwxMjMsMTI1LDQ2LAorICAgIDEyMywxMjUsNzgsNDEsMTMsMTE0LDQsMCwwLDAsMTE0LDEzMCwwLDAsMCwyMTgsCisgICAgNiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwyMTgsNiwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTQsCisgICAgMTg4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsNjUsCisgICAgMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDcxLDAsCisgICAgMCwwLDIxOCwxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSw5NSw4MCw4Miw2OSwKKyAgICA3MCw3Myw4OCwxMTQsMTUsMCwwLDAsNDEsNiwxMTQsODksMCwwLDAsMjE4LAorICAgIDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTQsMTgzLDAsMCwwLDIxOCwxLAorICAgIDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw5MCwzLDEwMSwxMjAsCisgICAgOTksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsCisgICAgMTE1LDExNiwyMjgsMywwLDAsMTE1LDM0LDAsMCwwLDAsMTAsMTUsMSwxMiwKKyAgICAxLDEyLDEsMTMsMSwxNSwxLDE2LDEsMTMsMSwxNSwxLDIxLDEsMywKKyAgICAxLDE3LDEsMTgsNCwyMSwxLDE1LDEsMywxLDI2LDEsMTE0LDE5NCwwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3MiwwLDAsMCwxMjQsMCwwLDEwNiwKKyAgICAwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMiwKKyAgICAwLDEwNyw4LDAsMTE0LDY4LDAsMTI0LDAsMCwxMDAsMywwLDI1LDEyNSwxLAorICAgIDAsMTAwLDQsMCwxMjQsMCwwLDEwNyw3LDAsMTE0LDY4LDAsMTI0LDEsMCwKKyAgICAxMDYsMSwwLDEwMCw1LDAsMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSwxLDAsCisgICAgMTI0LDEsMCw4Myw0MSw3LDEyMiwxNjcsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICAxMzQsMCwwLDAsNzgsMTE0LDEsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCisgICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCw0MSwyLDExNCw0MiwwLDAsMCwKKyAgICAxMTQsMTIyLDAsMCwwLDQxLDIsMjE4LDcsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwKKyAgICAxMTQsMTY5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSw5OSw5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDQsNCwwLDAsMTE1LDEyLDAsMCwwLAorICAgIDAsNywxNSwxLDEyLDEsMTAsMSwxMiwxLDE5LDEsMTE0LDE5NiwwLDAsCisgICAgMCw5OSw1LDAsMCwwLDAsMCwwLDAsOSwwLDAsMCw1LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsMTI0LDQsMCwxMDAsMSwKKyAgICAwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsCisgICAgMTI1LDUsMCwxMTAsNTQsMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDksMCwxMTQsCisgICAgNDUsMCwxMjQsMSwwLDExMCwzLDAsMTA1LDAsMCwxMjUsNiwwLDExNiwxLAorICAgIDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEyNCw3LDAsMTI0LDQsMCwxMzEsMywwLDEyNSw1LDAsMTI0LDMsMCwxMTUsCisgICAgMjA3LDAsMTI0LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDEyMiwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLAorICAgIDI1LDEzMSwxLDAsODMsMTI0LDAsMCwxMTUsMTMyLDAsMTI0LDUsMCw4MywxMTYsCisgICAgMywwLDEyNCwwLDAsMTMxLDEsMCwxMTYsMywwLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxMDAsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDI0LDEyNSwKKyAgICA4LDAsMTE2LDQsMCwxMDYsNSwwLDEyNCw1LDAsMTA2LDYsMCwxMDAsMiwKKyAgICAwLDExNiwzLDAsMTI0LDUsMCwxMDYsNiwwLDEzMSwxLDAsMTI0LDgsMCwKKyAgICAyNCwxMzMsMiwwLDI1LDI1LDgzLDExMCwxNiwwLDExNiw3LDAsMTI0LDUsMCwKKyAgICAxMjQsMywwLDExNiwwLDAsMTMxLDMsMCw4MywxMDAsMiwwLDgzLDQxLDQsCisgICAgOTcsMjE0LDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKKyAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLAorICAgIDEwMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICAzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLAorICAgIDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwKKyAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsCisgICAgMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsCisgICAgMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsCisgICAgMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwKKyAgICAxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAorICAgIDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLAorICAgIDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLAorICAgIDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsCisgICAgNzgsMTE0LDEyMSwwLDAsMCw0MSw4LDExNCwxODYsMCwwLDAsMTE0LDE5NiwwLAorICAgIDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwxNjcsMCwKKyAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMSwwLDAsCisgICAgMCwxMTQsMTk0LDAsMCwwLDQxLDksMTE0LDE1LDAsMCwwLDExNCwxOTUsMCwKKyAgICAwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwxOTIsMCwwLDAsMTE0LAorICAgIDE3MCwwLDAsMCwxMTQsODksMCwwLDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywKKyAgICAxMDgsMTE1LDk1LDExNCwxNjksMCwwLDAsOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsCisgICAgMTAyLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwxOSw0LDAsMCwKKyAgICAxMTUsMjYsMCwwLDAsMCwxMSwxMiwxLDE1LDIsMjQsMSwxMiwxLDE4LAorICAgIDEsNiwzLDEyLDEsMjMsMSw2LDEsNCw0LDM1LDMsNDAsMiwxMTQsCisgICAgMTk5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLAorICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsNDMsMCwxMTYsMiwwLDEwMCwxLDAsMTI0LAorICAgIDAsMCwyMywxMzEsMSwwLDEzMCwxLDAsMTE2LDMsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsODMsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsCisgICAgMzIsNDEsNCwxMTQsMTUwLDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDc3LDAsCisgICAgMCwwLDExNCwxNDksMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDg4LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTQsNCwwLDAsMTE1LDgsMCwwLDAsMCwKKyAgICAxLDE1LDEsMTIsMSwxNiwxLDExNCwyMDAsMCwwLDAsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw3NCwxLDAsMCwxMjQsMSwwLDk3LDAsMCwxMjQsMCwwLDk3LAorICAgIDEsMCwxMTYsMiwwLDExNiwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMCwxMjMsCisgICAgMCwxMTYsMSwwLDEwNiwzLDAsMTA2LDQsMCwxMzEsMCwwLDY4LDkzLDEwNiwKKyAgICAwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTE2LDUsMCwxMjQsNCwwLAorICAgIDEyNCwyLDAsMTMxLDIsMCwxMTQsNDAsMCwxMjQsMywwLDExNiwxLDAsMTA2LAorICAgIDYsMCwxMDcsNiwwLDExNCw5MSwwLDExNiw3LDAsMTI1LDUsMCwxMTAsMjcsCisgICAgMCwxMTYsMCwwLDEwNiw4LDAsMTI0LDMsMCwxMzEsMSwwLDExNCw0MCwwLAorICAgIDExNiw5LDAsMTI1LDUsMCwxMTAsMywwLDExMyw0MCwwLDExNiwxMCwwLDEyNCwKKyAgICA0LDAsMTI0LDUsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDExLDAsMTI0LDYsCisgICAgMCwxMjQsNCwwLDEzMSwyLDAsMSwxMTMsNDAsMCw4NywxMTYsMSwwLDEwNiwKKyAgICAzLDAsMTE2LDEyLDAsMjUsMTI1LDcsMCwxMjAsNzMsMCwxMDAsNSwwLDY4LAorICAgIDkzLDY1LDAsMTI1LDgsMCwxMjQsOCwwLDExNiwxLDAsMTA2LDMsMCwxMDcsCisgICAgNywwLDExNCwyMDYsMCwxMTYsMTMsMCwxMjQsOCwwLDEzMSwxLDAsMTI1LDksCisgICAgMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLDAsMTI0LDgsMCwyNSwxMjUsOSwKKyAgICAwLDExNiwxNCwwLDEyNCw3LDAsMTI0LDgsMCwxMjQsOSwwLDEzMSwzLDAsCisgICAgMSwxMTMsMTcwLDAsODcsMTIxLDE2LDAsMTE2LDEzLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAwLDEyNSwxMCwwLDg3LDExMCwyNCwwLDQsMTE2LDE1LDAsMTA3LDEwLDAsMTE0LAorICAgIDI1LDEsMSwxLDEsMTAwLDMsMCwxMjUsMTAsMCw4OSwxMTAsMSwwLDg4LAorICAgIDExNiwxNCwwLDEyNCw3LDAsMTAwLDIsMCwxMjQsMTAsMCwxMzEsMywwLDEsCisgICAgMTE2LDEzLDAsMTAwLDQsMCwxMzEsMSwwLDEyNSwxMSwwLDExNiwxNCwwLDEyNCwKKyAgICA3LDAsMTAwLDQsMCwxMjQsMTEsMCwxMzEsMywwLDEsMTAwLDMsMCw4MywKKyAgICA0MSw2LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LAorICAgIDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsCisgICAgMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwKKyAgICAxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsCisgICAgOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywKKyAgICAxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTQxLAorICAgIDAsMCwwLDExNCwzNCwwLDAsMCw3OCwxMTQsNjIsMCwwLDAsNDEsMSwKKyAgICAxMjIsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsNDEsMTYsMTE0LDU3LDAsCisgICAgMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsMCwKKyAgICAwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsMCwKKyAgICAwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLDAsCisgICAgMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLDAsCisgICAgMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsNDEsCisgICAgMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSw5NSwKKyAgICAxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLDAsCisgICAgMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsMTA4LAorICAgIDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLDAsCisgICAgMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwxNSwKKyAgICAxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsMTMsCisgICAgMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsMTMsCisgICAgMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwwLAogICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDY4LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNDYsCi0gICAgMCwxMTYsMiwwLDEwMCwxLDAsMTI0LDAsMCwyMywxMzEsMSwwLDEzMCwxLAotICAgIDAsMTEwLDAsMCwxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsMTA2LDQsMCwxMzEsMCwwLDgzLDQxLDIsNzgsMTIyLDI1LDExMCwKLSAgICAxMTEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDQxLDUsMTE0LDExLDEsMCwwLDExNCwKLSAgICAxNCwxLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDcsCi0gICAgMSwwLDAsNDEsMywxMTQsNjcsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCi0gICAgMTc5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LAotICAgIDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTMsOSwwLDAsMTE1LDEwLDAsMCwwLAotICAgIDAsMSwxNSwxLDEyLDEsMTksMSwxMiwxLDExNCwxMjgsMSwwLDAsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDE5LDAsMCwwLDEyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyMzIsMiwwLDAsMTI0LDEsMCw5NywwLDAsMTI0LAotICAgIDAsMCw5NywxLDAsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE0LDMzLAotICAgIDAsMTE2LDQsMCw5Nyw1LDAsMTEwLDYsMCwxMTYsNiwwLDk3LDUsMCwKLSAgICAxMTYsNywwLDExNiwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMCwxMzgsMCwxMTYsCi0gICAgMSwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDY4LDkzLDEyMSwwLDkyLAotICAgIDIsMCwxMjUsMywwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMTE0LDY3LDAsMTI0LDMsMCwxMTYsMSwwLDEwNiwxMSwwLAotICAgIDEwNyw2LDAsMTE0LDExOCwwLDExNiwxMiwwLDEyNSw1LDAsMTEwLDI3LDAsMTE2LAotICAgIDAsMCwxMDYsMTMsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDY3LDAsMTE2LDE0LAotICAgIDAsMTI1LDUsMCwxMTAsMywwLDExMyw2NywwLDExNiwxNSwwLDEyNCw0LDAsCi0gICAgMTI0LDUsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDE2LDAsMTI0LDYsMCwxMzEsCi0gICAgMSwwLDEyNSw3LDAsMTI0LDcsMCwxMDYsMTcsMCwxMjQsNCwwLDEzMSwxLAotICAgIDAsMSwxMTMsNjcsMCwxMTMsNjcsMCw4NywxMTYsMSwwLDEwNiw4LDAsMTE2LAotICAgIDE4LDAsMjUsMTI1LDgsMCwxMjAsNzMsMCwxMDAsMjYsMCw2OCw5Myw2NSwwLAotICAgIDEyNSw5LDAsMTI0LDksMCwxMTYsMSwwLDEwNiw4LDAsMTA3LDcsMCwxMTQsCi0gICAgMjQ4LDAsMTE2LDE5LDAsMTI0LDksMCwxMzEsMSwwLDEyNSwxMCwwLDExMCwxMywKLSAgICAwLDExNiwxLDAsMTA2LDgsMCwxMjQsOSwwLDI1LDEyNSwxMCwwLDExNiwyMCwKLSAgICAwLDEyNCw4LDAsMTI0LDksMCwxMjQsMTAsMCwxMzEsMywwLDEsMTEzLDIxMiwKLSAgICAwLDg3LDEwMCw1LDAsMTAwLDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsCi0gICAgMCwxMDAsOCwwLDEwMCw2LDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsCi0gICAgMTI1LDExLDAsMTIwLDE0NiwwLDEyNCwxMSwwLDY4LDkzLDEyNiwwLDkyLDIsMCwKLSAgICAxMjUsMTIsMCwxMjUsMTMsMCwxMTYsMjEsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwKLSAgICAwLDAsMTI0LDEzLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNSwxMDgsMSwxMTYsCi0gICAgMjIsMCwxMzAsMSwwLDEyNCwxMywwLDEwMCwxMSwwLDI1LDEyNSwxNCwwLDEyNCwKLSAgICAxMiwwLDExNiwxLDAsMTA2LDgsMCwxMDcsNiwwLDExNCwxNTAsMSwxMTYsMSwKLSAgICAwLDEwNiw4LDAsMTI0LDEyLDAsMjUsMTI1LDE1LDAsODAsMTEzLDY1LDEsMTIxLAotICAgIDE3LDAsMTE2LDE5LDAsMTI0LDEyLDAsMTMxLDEsMCwxMjUsMTUsMCw4MCw4NywKLSAgICAxMTMsNjUsMSw0LDExNiwyMywwLDEwNywxMCwwLDExNCwxOTAsMSwxLDEsMSwKLSAgICAxMTksNjUsMSw4OSwxMTMsNjUsMSw4OCwxMTMsNjUsMSw4NywxMTYsMjMsMCwxMDAsCi0gICAgMTIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTMsCi0gICAgMCwxMjQsMTUsMCwxMzEsMywwLDEsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTQsCi0gICAgMCwxMjQsMTQsMCwxMzEsMywwLDEsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTUsCi0gICAgMCwxMDAsMTYsMCwxMDYsMjQsMCwxMjQsMTMsMCwxMzEsMSwwLDEzMSwzLDAsCi0gICAgMSwxMjEsMTYsMCwxMTYsMTksMCwxMDAsMTcsMCwxMzEsMSwwLDEyNSwxNiwwLAotICAgIDg3LDExMCwyNCwwLDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LDUwLDIsMSwxLAotICAgIDEsMTAwLDE4LDAsMTI1LDE2LDAsODksMTEwLDEsMCw4OCwxMTYsMjAsMCwxMjQsCi0gICAgOCwwLDEwMCwxNywwLDEyNCwxNiwwLDEzMSwzLDAsMSwxMTYsMTksMCwxMDAsCi0gICAgMTksMCwxMzEsMSwwLDEyNSwxNywwLDExNiwyMCwwLDEyNCw4LDAsMTAwLDE5LAotICAgIDAsMTI0LDE3LDAsMTMxLDMsMCwxLDEyNCwxMiwwLDEwMCw3LDAsMTA3LDIsCi0gICAgMCwxMTQsMTM4LDIsMTE2LDE5LDAsMTAwLDIwLDAsMTMxLDEsMCwxMjUsMTgsMCwKLSAgICAxMTYsMjAsMCwxMjQsOCwwLDEwMCwyMSwwLDEyNCwxOCwwLDEzMSwzLDAsMSwKLSAgICAxMTAsMCwwLDExNiwyMCwwLDEyNCw4LDAsMTAwLDIyLDAsMTE2LDI1LDAsMTMxLAotICAgIDAsMCwxMzEsMywwLDEsMTE2LDI2LDAsMTA2LDI3LDAsMTE2LDAsMCwxMDYsCi0gICAgMjgsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsMTIsMCwxMDAsNywwLDEwNywKLSAgICAyLDAsMTE0LDIyOCwyLDExNiwyOSwwLDEwNiwzMCwwLDEwMCwyMywwLDEzMSwxLAotICAgIDAsMSwxMDAsMjQsMCwxMTYsMjYsMCwxMDcsNiwwLDExNCwyMjgsMiwxMDAsMjUsCi0gICAgMCwxMTYsMzEsMCw5NSwzMiwwLDExMywyMjgsMiwxMTAsMCwwLDEwMCwxOCwwLAotICAgIDgzLDQxLDI3LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsCi0gICAgMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsCi0gICAgMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLAotICAgIDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwKLSAgICAxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwKLSAgICAxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLAotICAgIDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsCi0gICAgMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiwKLSAgICA5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsCi0gICAgNDksMCwwLDAsMTE0LDE2NywwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCwxMTUsMTE0LDE5MiwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsMjUwLAotICAgIDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsCi0gICAgMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTE0LDI5LDAsMCwwLDc4LDQxLDEsMTE0LDMxLAotICAgIDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc3LAotICAgIDAsMCwwLDEwNSw5LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDI1LAotICAgIDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAotICAgIDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsODQsMCwwLDAsMTIyLDMwLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsMTEwLDExNiwxMTQsMywKLSAgICAwLDAsMCwxMTQsMjUsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwzMCwwLAotICAgIDAsMCwxMTQsODUsMCwwLDAsNzgsMTE0LDExMSwwLDAsMCw5MCw2LDExOSwKLSAgICAxMDUsMTEwLDExNCwxMDEsMTAzLDExNCwyNCwxLDAsMCwxMTQsNiwwLDAsMCwxMjIsCi0gICAgNCw0NiwxMTIsMTIxLDExOSwxMjIsNiw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsNCwKLSAgICAxMjIsMyw5NSwxMDUsMTExLDEyMiw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwKLSAgICAxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTIyLDcsMTA5LDk3LDExNCwxMTUsCi0gICAgMTA0LDk3LDEwOCw0MSwzMywxMTQsMTA2LDAsMCwwLDExNCw3LDAsMCwwLDExNCwKLSAgICAxMTcsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwyMzMsCi0gICAgMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE5MywwLDAsMCwxMTQsMTU4LAotICAgIDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwyMCwxLAotICAgIDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDI1NSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMTE0LDEyOCwxLDAsMCwxMTQsNjEsMCwwLDAsCi0gICAgMjE4LDMsOTcsMTA4LDEwOCwxMTQsMTAwLDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LAotICAgIDI2LDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNjAsMSwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTI1LDEsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDIyNCwwLAotICAgIDAsMCwxMTQsMjMsMSwwLDAsMTE0LDI3LDEsMCwwLDQxLDE5LDIxOCwxMCwKLSAgICAxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsOTUsMTA1LDEwOSwxMTIsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDExNCw2NywwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTc5LDAsMCwwLDkwLDExLDExNSwKLSAgICAxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAotICAgIDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LAotICAgIDk3LDEwNSwxMDgsMTE1LDkwLDEwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMSwxMTUsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwyNSwwLDAsMCw5MCw5LDExMSwxMTUsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDYxLDksMCwwLDExNSwxMDgsCi0gICAgMCwwLDAsMCw5LDYsMSw2LDIsMTIsMSw5LDIsNiwzLDEyLAotICAgIDEsMjgsMSwxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwKLSAgICAxLDEyLDEsMjAsMywxMywxLDEzLDEsMTUsMSwxNSwyLDEzLDEsMjAsCi0gICAgMywzMywxLDE5LDIsMzEsMSwxMCwxLDE1LDEsMTMsMSw0LDIsMywKLSAgICAxLDEyLDEsNSwxLDEzLDEsMTIsMiwxMiwxLDE2LDEsMTYsMSwyNSwKLSAgICAzLDMsMSwxNiwxLDEzLDIsMTEsMSwxNiwzLDEyLDEsMTYsMywxMiwKLSAgICAxLDEyLDEsMTksMywxOSwxLDE5LDEsMTIsMSwxMywxLDEyLDEsMTE0LAotICAgIDEzNywxLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMzYsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCwxLDExNiwxLDAsMTMxLDAsCi0gICAgMCwxMjUsMiwwLDExNiwyLDAsMTA2LDMsMCwxMDYsNCwwLDExNiw1LDAsCi0gICAgMTA2LDYsMCwxMjQsMiwwLDE0MCwwLDAsMTAzLDEsMCwxMzEsMSwwLDEsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDksMCwxMzEsMSwwLDEsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDEwLDAsMTMxLDEsMCwxLAotICAgIDExNiwxMSwwLDEwNiwxMiwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTE2LDAsMTE2LAotICAgIDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDEzLDAsMTMxLDEsMCwxLDExMCwKLSAgICAwLDAsMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsMTE2LDE0LDAsMTMxLDEsCi0gICAgMCwxLDEwMCwyLDAsODMsNDEsMywxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LAotICAgIDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTQsMTMxLDEsMCwKLSAgICAwLDc4LDQxLDE1LDExNCwxMzcsMSwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsNywKLSAgICAwLDAsMCwxMTQsNzksMSwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsODcsMSwKLSAgICAwLDAsMTE0LDEwMSwxLDAsMCwxMTQsMTA3LDEsMCwwLDExNCwyMjQsMCwwLAotICAgIDAsMTE0LDExLDEsMCwwLDExNCwyMCwxLDAsMCwxMTQsMywwLDAsMCwKLSAgICAxMTQsNTcsMCwwLDAsMTE0LDIzLDEsMCwwLDExNCw3NCwxLDAsMCw0MSwKLSAgICAzLDExNCwxMzUsMSwwLDAsMTE0LDEzNiwxLDAsMCw5MCwxNywxMTUsMTE3LDExMiwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSwKLSAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxNDgsOSwwLDAsMTE1LDE2LDAsMCwwLAotICAgIDAsMiwxMywxLDksMSwyOCwxLDE2LDEsMTYsMSwxNSwxLDE5LDEsCi0gICAgMTE0LDEzOCwxLDAsMCw0MSwzLDEyMiwzLDExOSwxMDUsMTEwLDExNCwxLDAsMCwKLSAgICAwLDExNCwyLDAsMCwwLDQxLDkyLDExNCw1OSwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwxMTQsMTksMCwwLAotICAgIDAsMTE0LDI4LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMzksMCwwLDAsCi0gICAgMTE0LDQzLDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAotICAgIDU1LDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY2LAotICAgIDAsMCwwLDIxOCw4LDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNCwxOTQsMCwKLSAgICAwLDAsMTE0LDY5LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDkyLDAsMCwKLSAgICAwLDExNCw5OSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLAotICAgIDExNCwxMDIsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA1LDAsMCwwLDExNCwKLSAgICAxMTIsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE4NiwKLSAgICAwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDE4LDAsMCwwLDkwLDE3LDk1LAotICAgIDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLAotICAgIDExNCwxMjQsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwKLSAgICAxMjAsMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTM2LDAsMCwwLDExNCwxNDMsCi0gICAgMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxNTcsMCwKLSAgICAwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzMsMCwwLAotICAgIDAsMTE0LDE4MSwwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwxOTYsMCwwLDAsCi0gICAgMTE0LDE5OSwwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LAotICAgIDIxMywwLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwxNzQsMCwwLDAsMjE4LDYsCi0gICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwyNDIsMCwwLDAsMTE0LDI0MCwwLDAsMCwKLSAgICAxMTQsMjQ4LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwKLSAgICAxMSwxLDAsMCwxMTQsMjAsMSwwLDAsMTE0LDIzLDEsMCwwLDExNCwzMywKLSAgICAxLDAsMCwxMTQsMzQsMSwwLDAsMTE0LDQ5LDEsMCwwLDExNCw5LDEsCi0gICAgMCwwLDExNCw4LDEsMCwwLDExNCw2MCwxLDAsMCwxMTQsNTcsMSwwLAotICAgIDAsMTE0LDYxLDEsMCwwLDExNCwyNTIsMCwwLDAsMTE0LDc0LDEsMCwwLAotICAgIDExNCw4NywxLDAsMCwxMTQsMTAyLDEsMCwwLDExNCwxMDUsMSwwLDAsMTE0LAotICAgIDEwNiwxLDAsMCwxMTQsMTA4LDEsMCwwLDExNCwxMTEsMSwwLDAsMTE0LDEyMCwKLSAgICAxLDAsMCwxMTQsMTEyLDEsMCwwLDExNCwxMTQsMSwwLDAsMTE0LDExNSwxLAotICAgIDAsMCwxMTQsMTE2LDEsMCwwLDExNCwxMjIsMSwwLDAsMTE0LDEyNCwxLDAsCi0gICAgMCwxMTQsMjQxLDAsMCwwLDExNCwxMjcsMSwwLDAsMTE0LDEyOCwxLDAsMCwKLSAgICAxMTQsMTM3LDEsMCwwLDExNCwxMzgsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDgsCi0gICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsMTcwLDAsMCwKLSAgICAwLDYsMTcsNiwzLDEyLDEyLDEyLDUsMTIsNSwxMiw2LDEyLDEyLDEyLAotICAgIDEwLDEyLDksMTIsNSwxMiw3LDE1LDIyLDEyLDgsMTIsNCwxNSw0LDE5LAotICAgIDIwLDYsMiw2LDMsMjIsNCwxOSw2OCwxOSwyMSwxOSwxOSwxMiwxOSwxMiwKLSAgICAyMCwxMiwxMTQsMjIsMSwxOCwyLDYsMiw5LDIsOSwxLDksMiwxNSwKLSAgICAyNywxMiwyMywxMiwxOSwxMiwxMiwxOCw4LDEyLDE4LDEyLDExLDEyLDExLDEyLAotICAgIDE3LDEyLDE2LDIxLDU1LDIxLDEyLDE4LDEwLDEyLDE0LDEyLDM2LDE5LDI3LDE5LAotICAgIDEwNiwyNCwyMiw5LDMsMTIsMSwxNSw2MywxOCw0NSwxOSwyMzAsMTUsMjUsMTksCi0gICAgNzAsMTksNzEsMTksNjMsMTksMjQsMjIsMTEwLDE5LDQxLDI1LDQzLDI1LDE2LDYsCi0gICAgMywxOSw1NywxOSw1NywxOSwzOCwxOSwxMjksMTksMTQ2LDE5LDEzLDEyLDksMTIsCi0gICAgOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwyNywxMiw2LDE4LDI0LDEyLAotICAgIDMyLDEyLDE1LDEyLDExLDI0LDM1LDEyLDgsMTIsODcsCisgICAgMCwxMTUsODcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAorICAgIDIsMCwxLDExNiwxLDAsMTA2LDIsMCwxMDYsMywwLDExNiw0LDAsMTMxLAorICAgIDEsMCwxLDExNiwxLDAsMTA2LDIsMCwxMDYsMywwLDExNiw1LDAsMTMxLAorICAgIDEsMCwxLDEwMCwxLDAsMTAwLDIsMCwxMDgsNiwwLDEyNSwyLDAsMTI0LAorICAgIDIsMCw5Nyw3LDAsMTI0LDIsMCwxMDYsOCwwLDExNiwxLDAsMTA2LDksCisgICAgMCwxMTYsMTAsMCwyNSwxMzEsMSwwLDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwKKyAgICA1MCw3MywxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDQ2LDExNCwzMywwLDAsMCw3OCw0MSwxMSwxMTQsMjA0LDAsMCwwLAorICAgIDExNCwxNCwwLDAsMCwxMTQsMTc0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LAorICAgIDE1MCwwLDAsMCwxMTQsMTYwLDAsMCwwLDIxOCwyNiw5NSwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMSwxMjAsMTE2LAorICAgIDEwMSwxMTQsMTEwLDk3LDEwOCwxMTQsMTE5LDAsMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMDgsMTA4LDExNCwyMSwwLDAsMCwxMTQsMSwwLDAsMCw0MSwzLAorICAgIDExNCwyMDIsMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMjA1LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMDYsCisgICAgMCwwLDAsMTA4LDQsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTMsMiwKKyAgICAxNiwxLDE2LDMsMTIsMSw2LDEsMTE0LDIwNiwwLDAsMCw0MSw1MSwxMTQsCisgICAgMywwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMiwwLDAsMCwxMTQsMTYsCisgICAgMCwwLDAsMTE0LDE3LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE0LDQ4LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzIsMCwwLAorICAgIDAsMTE0LDUzLDAsMCwwLDExNCw1NCwwLDAsMCwxMTQsNTYsMCwwLDAsCisgICAgMTE0LDYzLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LAorICAgIDgxLDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEwMSwKKyAgICAwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDg1LDAsCisgICAgMCwwLDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LDExNiw5MCw5LDk1LDgwLDc5LDgwLAorICAgIDg1LDc2LDY1LDg0LDY5LDExNCwxMzIsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsCisgICAgMTQ0LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDE0OCwKKyAgICAwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCw4NywwLDAsMCwxMTQsMTUwLDAsCisgICAgMCwwLDExNCwxNjAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcxLDAsMCwKKyAgICAwLDExNCwxNzMsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTgxLDAsMCwwLAorICAgIDExNCwxOTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwKKyAgICAxODUsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxOTYsCisgICAgMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwyMDQsMCwKKyAgICAwLDAsMTE0LDIwNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsNjAsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsOTYsMCwwLDAsNiwxNywKKyAgICA2LDIsMTIsOCwxMiw0LDE5LDIwLDYsMiw2LDMsMjIsNCwxOSw2OCwKKyAgICAxOSwyMSwxOSwxOSwxMiwxOSwxMiwxOSwxMiwxMSwxOCw4LDEyLDExLDEyLDEyLAorICAgIDEyLDE2LDEyLDM2LDE5LDI3LDE5LDEwMSwyNCwyNiw5LDMsMTgsNDUsMTgsNjAsCisgICAgMTIsMTgsMTIsMTcsMTIsMjUsMTIsMjksMTIsMjMsMTIsMTYsMTksNzMsMTksNzcsCisgICAgMTksMTMsMTIsOSwxMiw5LDE1LDQwLDEyLDE3LDYsMSwxMCwyLDEyLDI3LAorICAgIDEyLDYsMTgsMjQsMTIsMzIsMTIsMTUsMjQsMzUsMTIsNywxMiw0NywKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmggYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhkNmJlNQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaApAQCAtMCwwICsxLDI1OTYgQEAKKy8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8KK2NvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbFtdID0geworICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIyOCwyLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsOTYsMCw5MCwxLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCisgICAgMiwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDMsMCwxMDAsOCwKKyAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDEwLDAsMTAwLDExLDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKKyAgICA2LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDE2LAorICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDE4LDAsMTAwLDE5LDAsCisgICAgMTMyLDAsMCw5MCw5LDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwKKyAgICAxMCwwLDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEzMiwxLDAsOTAsMTEsCisgICAgMCwxMDEsMTIsMCwxMDEsMTEsMCwxMDYsMTMsMCwxMzEsMSwwLDkwLDE0LDAsCisgICAgMTAwLDI1LDAsMTA2LDE1LDAsMTAwLDI2LDAsMTAwLDI3LDAsMTMxLDIsMCwxMDAsCisgICAgMjgsMCwyMyw5MCwxNiwwLDEwMSwxNywwLDEwNiwxOCwwLDEwMSwxNiwwLDEwMCwKKyAgICAyNywwLDEzMSwyLDAsOTAsMTksMCwxMDAsMjksMCw5MCwyMCwwLDEwMCwzMCwKKyAgICAwLDkwLDIxLDAsMTAwLDMxLDAsMTAzLDEsMCw5MCwyMiwwLDEwMCwzMiwwLAorICAgIDEwMywxLDAsOTAsMjMsMCwxMDEsMjMsMCw0LDkwLDI0LDAsOTAsMjUsMCwKKyAgICAxMDAsMzMsMCwxMDAsMzQsMCwxMDAsMzMsMCwxMDAsMzUsMCwxMDAsMzYsMCwxMzIsCisgICAgMSwxLDkwLDI2LDAsMTAwLDM3LDAsMTAwLDM4LDAsMTMyLDAsMCw5MCwyNywKKyAgICAwLDEwMCwzOSwwLDEwMCw0MCwwLDEzMiwwLDAsOTAsMjgsMCwxMDAsNDEsMCwKKyAgICAxMDAsNDIsMCwxMzIsMCwwLDkwLDI5LDAsMTAwLDQzLDAsMTAwLDQ0LDAsMTMyLAorICAgIDAsMCw5MCwzMCwwLDEwMCw0NSwwLDEwMCw0NiwwLDEwMCw0NywwLDEwMCw0OCwKKyAgICAwLDEzMiwwLDEsOTAsMzEsMCwxMDAsNDksMCwxMDAsNTAsMCwxMzIsMCwwLAorICAgIDkwLDMyLDAsMTAwLDUxLDAsMTAwLDUyLDAsMTMyLDAsMCw5MCwzMywwLDEwMCwKKyAgICAzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1MywwLDEwMCw1NCwwLDEzMiwzLAorICAgIDAsOTAsMzQsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTUsMCwKKyAgICAxMDAsNTYsMCwxMzIsMywwLDkwLDM1LDAsMTAwLDU3LDAsMTAwLDU3LDAsMTAwLAorICAgIDU4LDAsMTAwLDU5LDAsMTMyLDIsMCw5MCwzNiwwLDEwMCw2MCwwLDEwMCw2MSwKKyAgICAwLDEzMiwwLDAsOTAsMzcsMCwxMDEsMzgsMCwxMzEsMCwwLDkwLDM5LDAsCisgICAgMTAwLDMzLDAsMTAwLDYyLDAsMTAwLDMzLDAsMTAwLDYzLDAsMTAxLDM5LDAsMTAwLAorICAgIDY0LDAsMTAwLDY1LDAsMTMyLDEsMiw5MCw0MCwwLDcxLDEwMCw2NiwwLDEwMCwKKyAgICA2NywwLDEzMiwwLDAsMTAwLDY3LDAsMTMxLDIsMCw5MCw0MSwwLDcxLDEwMCwKKyAgICA2OCwwLDEwMCw2OSwwLDEzMiwwLDAsMTAwLDY5LDAsMTMxLDIsMCw5MCw0MiwKKyAgICAwLDcxLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwwLDAsMTAwLDcxLDAsMTAxLDQyLAorICAgIDAsMTMxLDMsMCw5MCw0MywwLDcxLDEwMCw3MiwwLDEwMCw3MywwLDEzMiwwLAorICAgIDAsMTAwLDczLDAsMTMxLDIsMCw5MCw0NCwwLDcxLDEwMCw3NCwwLDEwMCw3NSwKKyAgICAwLDEzMiwwLDAsMTAwLDc1LDAsMTAxLDQ0LDAsMTAxLDQzLDAsMTMxLDQsMCwKKyAgICA5MCw0NSwwLDcxLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsMTAwLDc3LDAsCisgICAgMTAxLDQ0LDAsMTAxLDQyLDAsMTMxLDQsMCw5MCw0NiwwLDEwMywwLDAsOTAsCisgICAgNDcsMCw3MSwxMDAsNzgsMCwxMDAsNzksMCwxMzIsMCwwLDEwMCw3OSwwLDEwMSwKKyAgICA0NCwwLDEwMSw0MiwwLDEzMSw0LDAsOTAsNDgsMCw3MSwxMDAsODAsMCwxMDAsCisgICAgODEsMCwxMzIsMCwwLDEwMCw4MSwwLDEzMSwyLDAsOTAsNDksMCw3MSwxMDAsCisgICAgODIsMCwxMDAsODMsMCwxMzIsMCwwLDEwMCw4MywwLDEzMSwyLDAsOTAsNTAsCisgICAgMCw3MSwxMDAsODQsMCwxMDAsODUsMCwxMzIsMCwwLDEwMCw4NSwwLDEzMSwyLAorICAgIDAsOTAsNTEsMCw3MSwxMDAsODYsMCwxMDAsODcsMCwxMzIsMCwwLDEwMCw4NywKKyAgICAwLDEzMSwyLDAsOTAsNTIsMCwxMDAsMzMsMCwxMDAsODgsMCwxMDAsODksMCwKKyAgICAxMzIsMSwwLDkwLDUzLDAsMTAwLDkwLDAsMTAwLDkxLDAsMTMyLDAsMCw5MCwKKyAgICA1NCwwLDEwMCw5MiwwLDEwMCw5MywwLDEzMiwwLDAsOTAsNTUsMCwxMDAsOTQsCisgICAgMCwxMDAsOTUsMCwxMzIsMCwwLDkwLDU2LDAsMTAwLDMzLDAsODMsNDEsOTcsCisgICAgOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsCisgICAgODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCwKKyAgICA3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLAorICAgIDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCisgICAgMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwKKyAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LAorICAgIDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwKKyAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LAorICAgIDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywKKyAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsCisgICAgMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLAorICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LAorICAgIDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsCisgICAgMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwxMDMsMTE5LDEwNSwxMTAsCisgICAgMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw0OSwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAorICAgIDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI1LDAsMCwKKyAgICAxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsMCwxMjUsMCwwLDEyNCwKKyAgICAwLDAsODMsNDEsNCw3OCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDgzLDAsMCwwLDExNSwxMywwLDAsMCwKKyAgICAxMDAsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwwLDgzLDQxLDIsMTIyLAorICAgIDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LAorICAgIDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LAorICAgIDc4LDY3LDY1LDgzLDY5LDc5LDc1LDQxLDIsMjE4LDMsOTUsMTExLDExNSw5MCw3LAorICAgIDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwyNTAsMzgsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDYyLDIxOCwxMSw5NSwxMTQsMTAxLAorICAgIDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzMCwwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsMTIyLDM3LDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwKKyAgICA5NSw5OSw5NywxMTUsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwKKyAgICAxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDgzLDAsMCwwLDExNSwKKyAgICA0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTMsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw3MCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAzNCwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsNDEsNCwyMTgsMywxMTUsCisgICAgMTIxLDExNSwyMTgsOCwxMTIsMTA4LDk3LDExNiwxMDIsMTExLDExNCwxMDksMjE4LDEwLDExNSwxMTYsCisgICAgOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwyNyw5NSw2Nyw2NSw4Myw2OSw5NSwKKyAgICA3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCwKKyAgICA3MCw3OSw4Miw3Nyw4Myw0MSwxLDExNCw2LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMDksOTcsCisgICAgMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwyOCwwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDEsMTgsMSwxNSw0LDEyLDMsMTE0LDExLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDEwMCwxLDAsNjQsMTA2LDEsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMxLDIsMCw4Myw0MSw0LDEyMiw0Miw2NywxMTEsMTEwLDExOCwxMDEsCisgICAgMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwKKyAgICAxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsCisgICAgMTAwLDEwNSw5NywxMTAsNDYsMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCwKKyAgICAyMzMsNCwwLDAsMCwyMTgsNiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0MSwyLDIxOCwKKyAgICAzLDEwNSwxMTAsMTE2LDIxOCw4LDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDEsCisgICAgMjE4LDEsMTIwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDIxOCw3LDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDAsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDExNCwxNywwLDAsMCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsODMsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsCisgICAgMzIsNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LAorICAgIDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwKKyAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDEzLDAsMCwwLDQxLDIsMTE0LAorICAgIDE0LDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LAorICAgIDQxLDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDcsOTUsMTE0LAorICAgIDk1LDEwOCwxMTEsMTEwLDEwMyw0NSwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTE0LDE5LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMCwKKyAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCw4Myw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLAorICAgIDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsODMsMCwwLAorICAgIDAsMTE1LDM3LDAsMCwwLDEwMywwLDAsMTI0LDAsMCw5MywyNywwLDEyNSwKKyAgICAxLDAsMTI0LDEsMCwxMTQsNiwwLDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwKKyAgICAwLDEzMSwxLDAsMTQ1LDIsMCwxMTMsNiwwLDgzLDExNCw0LDAsMCwwLAorICAgIDQxLDIsMjE4LDYsMTE0LDExNSwxMTYsMTE0LDEwNSwxMTIsMjE4LDE1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNDEsMiwyMTgsMiw0NiwKKyAgICA0OCwyMTgsNCwxMTIsOTcsMTE0LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyNTAsMTAsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksCisgICAgMTEyLDYyLDUyLDAsMCwwLDExNSwyLDAsMCwwLDksMSwxMjIsMzAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAorICAgIDExNSw2Miw0Niw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDEsMiwyMTgsCisgICAgOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCisgICAgMSwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNTAsMCwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwyLDE1LDEsMTE0LDI4LDAsMCwwLDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDEzNCwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsMCwxMDAsMSwwLAorICAgIDEwNywyLDAsMTE0LDUyLDAsMTI0LDAsMCwxMDYsMiwwLDExNiwzLDAsMTMxLAorICAgIDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsCisgICAgMCwxMjQsMywwLDEwMiwyLDAsODMsMTIwLDY5LDAsMTE2LDQsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsNjgsOTMsNTUsMCwxMjUsNCwwLDEyNCw0LDAsMTE2LDEsCisgICAgMCwxMDcsNiwwLDExNCw2NSwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsNCwwLAorICAgIDEwMCwyLDAsMTAwLDEsMCwxMzEsMSwxLDkyLDIsMCwxMjUsMSwwLDEyNSwKKyAgICAzLDAsMTI0LDEsMCwxMjQsMywwLDEwMiwyLDAsODMsMTEzLDY1LDAsODcsCisgICAgMTAwLDMsMCwxMjQsMCwwLDEwMiwyLDAsODMsNDEsNCwxMjIsMzIsODIsMTAxLAorICAgIDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LAorICAgIDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsCisgICAgMCwwLDAsOTAsOCwxMDksOTcsMTIwLDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDAsNDEsCisgICAgNiwyMTgsMywxMDgsMTAxLDExMCwxMTQsMjEsMCwwLDAsMjE4LDEwLDExNCwxMTIsOTcsCisgICAgMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwyNSwwLDAsMCwyMTgsOCwxMTQsMTAxLAorICAgIDExOCwxMDEsMTE0LDExNSwxMDEsMTAwLDIxOCw2LDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDQxLDUsCisgICAgMjE4LDQsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDIsMTE0LDExMSwxMTAsMTE2LDIxOCwxLDk1LAorICAgIDIxOCw0LDExNiw5NywxMDUsMTA4LDExNCwxNiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiw1NiwwLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwyLDE4LDEsMjQsMSwxMCwxLDE5LDEsMTIsMSwyNywxLDE0LDEsCisgICAgMTE0LDM4LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsNDEsMSwxMjIsMTI2LAorICAgIDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiw5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsCisgICAgOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwKKyAgICAxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSw5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LAorICAgIDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwKKyAgICAxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LAorICAgIDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDQxLDIsCisgICAgMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LDk3LDExNiw0MSwxLDExNCwzNSwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsNjgsMCwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCw3LDExNCwzOSwwLDAsMCw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNTgsMCwwLDAsMTIxLDE2LDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjIsMCw0LDExNiwxLDAsMTA3LDEwLAorICAgIDAsMTE0LDQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwxMTAsMSwwLDg4LAorICAgIDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDY0LDEyNCwxLDAsMTA3LDIsMCwKKyAgICA4Myw0MSwzLDEyMiw0OSw4NCwxMDEsMTE1LDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTYsMTIxLDExMiwxMDEsNDYsNzAsMTA1LDAsMjQwLDAsMCw0MSwzLDExNCwzOSwKKyAgICAwLDAsMCwyMTgsNyw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDcsMTE1LDExNiwKKyAgICA5NSwxMDksMTExLDEwMCwxMDEsNDEsMywxMTQsMzUsMCwwLDAsMjE4LDQsMTA5LDExMSwKKyAgICAxMDAsMTAxLDkwLDksMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDIsMTExLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxOCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsCisgICAgNzgsMCwwLDAsMTE1LDEwLDAsMCwwLDAsMiwzLDEsMTYsMSwxMywKKyAgICAxLDksMSwxMTQsNDMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKKyAgICAyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0MywwLDAsMCw0MSwxLAorICAgIDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LAorICAgIDEwOCwxMDEsODcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCw0NCwwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwwLDExNSwKKyAgICAxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwwLDAsMTE2LDIsCisgICAgMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiwzMCw4MiwKKyAgICAxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwKKyAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwKKyAgICAwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsMTAxLDExNiw5OSwxMTksCisgICAgMTAwLDExNCw0MywwLDAsMCw0MSwxLDExNCwzNSwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5MiwwLDAsMCwxMTUsNiwwLAorICAgIDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ2LDAsMCwwLDEwNSwxODIsMSwKKyAgICAwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMDAsMSwwLDEwNiwKKyAgICAwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwKKyAgICAwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTE2LDIsMCwKKyAgICAxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwwLDEwNiw2LDAsCisgICAgNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LDQsMCwxMjEsNjEsCisgICAgMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywwLDEzMSwyLDAsCisgICAgMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsMTI0LDEsMCwxMzEsCisgICAgMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwwLDEwNiwxMCwwLAorICAgIDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLDU5LDAsNCwxMTYsCisgICAgMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLDE3LDAsMTE2LDIsCisgICAgMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywxMTAsMTgsMCw0LAorICAgIDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSw4OSwxMTAsMSwwLAorICAgIDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQxLDUsMTIyLAorICAgIDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDEwMCwKKyAgICA5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTYsCisgICAgMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsNjYsMTAxLAorICAgIDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLDk5LDExNywxMTQsMTE0LAorICAgIDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsCisgICAgMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwxLDAsMCw5MCwKKyAgICAyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDIxOCwyLAorICAgIDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwxMTAsOTAsNiw3OSwKKyAgICA5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LDY1LDg0LDkwLDgsCisgICAgNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LDExMSwyMTgsNiw3MCwKKyAgICAxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLDIxOCw3LDExNCwxMDEsCisgICAgMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQwLDAsMCwwLDkwLDYsMTE3LDExMCwxMDgsMTA1LAorICAgIDExMCwxMDcsNDEsNiwxMTQsMzUsMCwwLDAsMjE4LDQsMTAwLDk3LDExNiw5NywxMTQsCisgICAgNDIsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsMTA5LDExMiw5MCwyLAorICAgIDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LAorICAgIDk3LDExNiwxMTEsMTA5LDEwNSw5OSw5OSwwLDAsMCwxMTUsMjYsMCwwLDAsMCwKKyAgICA1LDI0LDEsOSwxLDMzLDEsMywzLDIxLDEsMjAsMSwyMCwxLDEzLAorICAgIDEsMywxLDE3LDEsMTMsMSw1LDEsMTE0LDU1LDAsMCwwLDEwNSwyMiwKKyAgICAxMywwLDAsMjMzLDIsMCwwLDAsMTE0LDEzLDAsMCwwLDExNSwyLDAsCisgICAgMCwwLDEzLDEwLDkwLDExLDk1LDk1LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICA5NSwxMjIsNCwxMTEsMTEyLDExNiw0NSwxMjIsMyw0NiwxMTIsMTIxLDEyMiw0LDQ2LDExMiwKKyAgICAxMjEsOTksNzgsMjE4LDEyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsOTksMiwwLDAsMCwxLDAsMCwwLDExLDAsMCwwLDYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDg3LDEsMCwwLDEyNCwxLDAsMTAwLDEsCisgICAgMCwxMDcsOSwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMiwwLAorICAgIDExNiwyLDAsMTMxLDIsMCwxLDEyNCwyLDAsMTAwLDEsMCwxMDcsOSwwLAorICAgIDExNCw1OCwwLDEwMCwzLDAsMTI1LDMsMCwxMTYsMywwLDEyNCwzLDAsMTMxLAorICAgIDEsMCwxMzAsMSwwLDEyNCwxLDAsMTE0LDcwLDAsMTAwLDQsMCwxMTAsMywKKyAgICAwLDEwMCw1LDAsMTI1LDIsMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICA5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDUsMCwxMDAsCisgICAgNiwwLDEzMSwxLDAsOTIsMywwLDEyNSw2LDAsMTI1LDcsMCwxMjUsOCwKKyAgICAwLDExNiw2LDAsMTA2LDcsMCwxMDYsOCwwLDEyNSw5LDAsMTI0LDksMCwKKyAgICAxMDAsMSwwLDEwNyw4LDAsMTE0LDE1NCwwLDExNiw5LDAsMTAwLDcsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTAwLDQsMCwxMDYsMTAsMCwxMjQsNiwwLDExNCwxNzIsCisgICAgMCwxMjQsNiwwLDExMCwzLDAsMTI0LDgsMCwxMjQsNywwLDEyNCw5LDAsCisgICAgMTAzLDMsMCwxMzEsMSwwLDEyNSwxMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsCisgICAgOCwwLDExNCwyNDEsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEwMCw4LAorICAgIDAsMTA3LDIsMCwxMTQsMjI5LDAsMTAwLDQsMCwxMjUsMiwwLDExMCwxMiwwLAorICAgIDExNiw2LDAsMTA2LDExLDAsMTA2LDEyLDAsMTI1LDIsMCwxMTYsMTMsMCwxMjQsCisgICAgMiwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCw0LDAsMTA3LDMsCisgICAgMCwxMTQsNjMsMSwxMjQsMiwwLDEwNiwxNCwwLDEzMSwwLDAsMTE1LDQyLDEsCisgICAgMTE2LDE1LDAsMTAwLDksMCwxMDYsMTYsMCwxMjQsMiwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCwxMzAsMSwwLDEwMCwxMCwwLDEwNiwxNiwwLDEyNCwxMCwwLDExNiwxNywKKyAgICAwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMTAsMCwxMTYsMTgsMCwxMjQsNCwwLAorICAgIDExNiwxOSwwLDEyNCwxMCwwLDExNiwyMCwwLDEwMCw4LDAsMjUsMjMsMTMxLDMsCisgICAgMCw4Myw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsCisgICAgMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsCisgICAgMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwKKyAgICA5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAorICAgIDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LAorICAgIDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLDEwLAorICAgIDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwKKyAgICAxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLAorICAgIDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsMTAwLAorICAgIDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsCisgICAgOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLDEwOCwKKyAgICAxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsCisgICAgMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsCisgICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDczLAorICAgIDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLDMyLAorICAgIDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsMTAxLAorICAgIDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLDExNiwKKyAgICAxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsCisgICAgMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsCisgICAgMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSwKKyAgICA5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCwKKyAgICA5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSwKKyAgICA5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLAorICAgIDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwKKyAgICAzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLAorICAgIDc4LDExMSwxMTAsMTAxLDExNCwzMCwwLDAsMCwxMTQsMjksMCwwLDAsMjE4LDEsCisgICAgNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsCisgICAgMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLDMzLAorICAgIDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsCisgICAgMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSw0MSwKKyAgICAyMSwyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LAorICAgIDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsODcsCisgICAgOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE0LDM4LDAsMCwwLDExNCwzMiwwLDAsMCwxMTQsNywwLDAsMCwKKyAgICAyMTgsMTQsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDIxOCw5LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywyMTgsMTksNzgsMTExLDExNiwKKyAgICA3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCwyNiwwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDgsMTExLDExMiwKKyAgICAxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsNywxMDUsMTE1LDk3LAorICAgIDEwOCwxMTAsMTE3LDEwOSwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCw0NywwLDAsMCwyMTgsNCw5NSw3OSw4MCw4NCwxMTQsMjgsMCwwLDAsCisgICAgMjE4LDgsOTUsODAsODksNjcsNjUsNjcsNzIsNjksMjE4LDE3LDY2LDg5LDg0LDY5LAorICAgIDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDExLDExNCwKKyAgICAzNSwwLDAsMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LAorICAgIDExNCwxMDUsMTAwLDEwMSwxMTQsNTcsMCwwLDAsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMjE4LDQsMTA0LDEwMSw5NywxMDAsMTE0LDM3LDAsMCwwLDkwLDQsOTgsCisgICAgOTcsMTE1LDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLDExNSwxMTYsOTAsMywKKyAgICAxMTYsOTcsMTAzLDkwLDE1LDk3LDEwOCwxMDksMTExLDExNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDIxOCwxNyw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDI0MywwLDAsMCwxMTUsNDYsMCwwLDAsMCwKKyAgICAxOCwxMiwxLDksMSw3LDEsMTIsMSw2LDEsMTIsMSwxOCwxLDE4LAorICAgIDEsMjQsMSwxMiwxLDEyLDEsMTIsMSwzNiwxLDEyLDEsMTgsMSw5LAorICAgIDIsMTIsMSwxMiwxLDEyLDEsMTIsMSwyMSwxLDIxLDEsMTE0LDc5LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDYyLDEsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMDYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzAsMCwxMTYsMywKKyAgICAwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LDAsMTI0LDAsMCwKKyAgICAxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDMsMCwxMjQsMywKKyAgICAwLDExNiw1LDAsMTA3LDMsMCwxMTQsMTAyLDAsMTE2LDYsMCwxMDAsMywwLAorICAgIDEwNiw3LDAsMTE2LDUsMCwxMjQsMCwwLDEzMSwyLDAsMTMxLDEsMCwxMzAsCisgICAgMSwwLDEyNCwyLDAsMTA2LDgsMCwxMDAsNCwwLDEzMSwxLDAsMTI1LDQsCisgICAgMCwxMjQsNCwwLDEwMCwxMSwwLDEwNyw3LDAsMTE0LDE1MywwLDExNiw2LDAsCisgICAgMTAwLDcsMCwxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTEwLDEyNSwwLDEyNCw0LDAsMTAwLDYsMCwxMDcsMiwwLDExNCwyMiwKKyAgICAxLDEyNCwyLDAsMTA2LDksMCwxMDAsNCwwLDEwMCw1LDAsMTMxLDIsMCwKKyAgICAxMDAsMTIsMCwyNSwxMjUsNSwwLDEyNCw1LDAsMTA2LDEwLDAsMTE2LDExLDAsCisgICAgMTMxLDEsMCwxMTUsMjIzLDAsMTE2LDYsMCwxMDAsOCwwLDEwNiw3LDAsMTE2LAorICAgIDExLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDUsMCwxMTYsMTIsCisgICAgMCwxMTYsMTEsMCwxMzEsMSwwLDEwMCwxLDAsMTMzLDIsMCwyNSwxMjUsNiwKKyAgICAwLDEyNCw2LDAsMTA2LDEzLDAsMTMxLDAsMCwxMTUsMjIsMSwxMTYsNiwwLAorICAgIDEwMCw5LDAsMTA2LDcsMCwxMjQsNSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsCisgICAgMSwwLDEyNCwyLDAsMTA2LDE0LDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwxMCwKKyAgICAwLDI1LDEyNSw3LDAsMTE2LDE1LDAsMTI0LDEsMCwxMjQsNywwLDExNiwxNiwKKyAgICAwLDEwMCwxMCwwLDI1LDIzLDEzMSwyLDAsODMsNDEsMTMsOTcsMTEwLDEsMCwKKyAgICAwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsOTksNDYsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwKKyAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsCisgICAgMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwKKyAgICAxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwKKyAgICAxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDMyLDczLDEwMiwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwxMTYsMzIsOTksCisgICAgMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwzMiw4MCw2OSw4MCwzMiw1MSw0OSwKKyAgICA1Miw1NSw0Nyw1Miw1Niw1NiwzMiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDQ0LDMyLDg2LAorICAgIDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsCisgICAgMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLDEwLDMyLDMyLDMyLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwKKyAgICAxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsCisgICAgMTE1LDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LAorICAgIDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsCisgICAgOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDU4LDAsCisgICAgMCwwLDExNCw1NiwwLDAsMCwyMzMsMywwLDAsMCwxMjIsMzMsMTAxLDEyMCwKKyAgICAxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMTEsMTE0LAorICAgIDMyLDUxLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiwKKyAgICA1NywxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMiwxMTEsCisgICAgMTE0LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDExNiw5NywxMTQsMTE2LAorICAgIDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNTIsMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTEwLDMyLDk3LDEwOCwKKyAgICAxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExOCw5NywxMDgsMTE3LDEwMSwKKyAgICAxMTQsNTksMCwwLDAsNjIsMiwwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAorICAgIDgwLDAsMCwwLDIzMywyNTQsMjU1LDI1NSwyNTUsNDEsMTcsMTE0LDcsMCwwLDAsCisgICAgMTE0LDY0LDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LAorICAgIDM4LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDQ3LAorICAgIDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzQsMCwwLDAsMTE0LAorICAgIDksMCwwLDAsMTE0LDcyLDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsNzAsCisgICAgMCwwLDAsMjE4LDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjgsCisgICAgMCwwLDAsMjE4LDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLAorICAgIDczLDg4LDY5LDgzLDQxLDgsMTE0LDM1LDAsMCwwLDExNCw3NiwwLDAsMCwKKyAgICA5MCwxNiwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDkwLDcsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDksMTAwLDExMSwxMTYsCisgICAgOTUsOTksMTExLDExNywxMTAsMTE2LDExNCw1NywwLDAsMCw5MCw5LDExMSwxMTIsMTE2LAorICAgIDk1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsMTMsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDE3LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsCisgICAgMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsMzEsMSwwLDAsMTE1LDQ0LDAsMCwwLAorICAgIDAsOSwxOCwxLDEyLDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE1LDEsCisgICAgMTUsMSwxMiwxLDksMSwxNSwxLDEyLDEsMjIsMSwxNSwxLDksMSwKKyAgICAxMiwxLDIyLDEsMTIsMSw5LDEsMTIsMSwxOSwxLDExNCw4NSwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTY0LDAsMCwwLDExNiwwLDAsMTI0LDAsCisgICAgMCwxMzEsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjIsMCwxMDAsMiwwLAorICAgIDgzLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwxLDAsOTIsMywwLAorICAgIDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsMTIsMTE1LDgxLDAsCisgICAgMTI0LDMsMCwxMDYsMiwwLDEzMSwwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMywKKyAgICAyLDAsMjUsMTAwLDYsMCwxMDcsMywwLDExNCw4NSwwLDEyNCwwLDAsODMsCisgICAgMTIxLDE2LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCw4NywKKyAgICAxMTAsNDAsMCw0LDExNiw0LDAsMTE2LDUsMCwxMDIsMiwwLDEwNywxMCwwLAorICAgIDExNCwxNDMsMCwxLDEsMSwxMjQsMCwwLDEwMCwyLDAsMTAwLDksMCwxMzMsCisgICAgMiwwLDI1LDEyNSw0LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEyNCw0LAorICAgIDAsMTMxLDEsMCwxMTQsMTYwLDAsMTI0LDQsMCw4MywxMjQsMCwwLDgzLDQxLAorICAgIDEwLDEyMiwxODgsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsCisgICAgMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLAorICAgIDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LAorICAgIDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICA1OSwwLDAsMCw3OCwxMTQsNTgsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCwKKyAgICAyOSwwLDAsMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LDI1NSwyMzMsMjU1LDI1NSwKKyAgICAyNTUsMjU1LDExNCw4NywwLDAsMCw0MSw3LDExNCwzMSwwLDAsMCwxMTQsMzIsCisgICAgMCwwLDAsMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsODUsMCwwLDAsMTE0LAorICAgIDY2LDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsNDQsMCwwLDAsNDEsNSwKKyAgICAyMTgsMTMsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDc4LDAsMCwwLDExNCwzNiwwLDAsMCw5MCw5LDEwMSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCwxNSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LAorICAgIDEwMSw2NCwxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwxLAorICAgIDI0LDEsMzUsMSw0LDEsMywxLDE2LDEsMTksMSwyMSwxLDExNCw5MSwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDExNiwxLDAsMTE2LDIsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LAorICAgIDU5LDAsMTIxLDE0LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsCisgICAgMTEzLDg4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NSwwLDEsMSwxLAorICAgIDg5LDExMyw4OCwwLDg4LDExMCwyOSwwLDEyNCwwLDAsMTA2LDAsMCwxMTYsMSwKKyAgICAwLDExNiw1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4NCwwLDEyNCwwLDAsCisgICAgODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsOCwKKyAgICAxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE0LAorICAgIDg0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDc0LAorICAgIDAsMCwwLDQxLDEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw4MywxLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMCwxLDIxLDEsMywxLDE0LDEsMTMsMSw4LDEsCisgICAgMjEsMSw0LDIsMTE0LDk1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw2MCwKKyAgICAwLDAsMCwxMjEsMTksMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDYsCisgICAgMSwwLDEyNSwxLDAsODcsMTEwLDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLAorICAgIDExNCw0NSwwLDEsMSwxLDEwMCwxLDAsMTI1LDEsMCw4OSwxMTAsMSwwLAorICAgIDg4LDEyNCwxLDAsMTAwLDIsMCw3OSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsCisgICAgMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMDEsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLAorICAgIDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDE4MiwxLDAsMCwyMzMsMTI4LDAsMCwwLAorICAgIDQxLDMsMTE0LDM5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDAsMCwwLAorICAgIDAsNDEsMiwxMTQsMzUsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSw5OSwKKyAgICA5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDk1LDEsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDIsMywxLDE5LDEsMTMsMSwxMSwzLDEwLDEsMTE0LDk3LDAsCisgICAgMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsMTE0LDI5LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDQsCisgICAgMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsNzEsMCwxMjQsMCwKKyAgICAwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywwLDEwMCwzLDAsCisgICAgMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwwLAorICAgIDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwxMzEsCisgICAgMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwxMTYsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwzMiwKKyAgICAxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSw4NCwKKyAgICA3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwxMTcsCisgICAgMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsMTE0LDU0LDAsMCwwLDc4LDQxLDIsCisgICAgMTE0LDk5LDAsMCwwLDExNCwxMDAsMCwwLDAsNDEsNywxMTQsNywwLDAsCisgICAgMCwxMTQsNjcsMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsMTE0LAorICAgIDksMCwwLDAsMjE4LDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsNDcsMCwwLDAsCisgICAgMjE4LDYsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDEsMywxMTQsNzUsMCwwLDAsMTE0LAorICAgIDk4LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwKKyAgICAxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMDcsMSwwLDAsMTE1LAorICAgIDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLDExNCwxMDUsMCwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKKyAgICAwLDAsMywwLDAsMCwxMTUsODQsMCwwLDAsMTAwLDEsMCwxMzUsMCwKKyAgICAwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLDAsMTI1LDEsMCwKKyAgICAxMjEsMTMsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCw4NywxMTAsMzAsMCwKKyAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY2LDAsMSwxLDEsMTAwLDQsMCwKKyAgICAxMDAsNSwwLDEzMiwwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLAorICAgIDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQxLAorICAgIDYsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMywKKyAgICAxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDExNCwxMTUsMTE2LAorICAgIDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsMTAxLDEwOCwxMDIsNDEsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk1LDExMCw5NywKKyAgICAxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk5LAorICAgIDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDEwLAorICAgIDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLDMyLDk3LDEwMyw5NywKKyAgICAxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDksCisgICAgMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLDAsCisgICAgMCwzMSwwLDAsMCwxMTUsODksMCwwLDAsMTI0LDEsMCwxMDAsMCwwLAorICAgIDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTEwLAorICAgIDQ2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA3LDMsMCwxMTQsNzAsCisgICAgMCwxMTYsMSwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsCisgICAgMTAyLDIsMCwyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLAorICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsCisgICAgMiwwLDgzLDQxLDMsNzgsMTIyLDMwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMzcsMTE1LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTEwLAorICAgIDEwMCwxMDgsMTAxLDMyLDM3LDExNSwyMTgsNCwxMTAsOTcsMTA5LDEwMSw0MSwyLDExNCwxMDYsCisgICAgMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDYsMCwwLDAsMTE0LDEwNCwwLAorICAgIDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsNDEsMSwyMTgsNiwxMDksMTAxLAorICAgIDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTksCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsMTIzLDEsMCwwLDExNSwxMiwwLDAsMCwwLDEsMTIsMSwKKyAgICAxMiwxLDE1LDEsNiwxLDI1LDEsMTIyLDQwLDk1LDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwKKyAgICA5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw3LAorICAgIDAsMCwwLDgzLDAsMCwwLDExNSw5MiwwLDAsMCwxMjAsNjYsMCwxMDAsCisgICAgMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LDAsNjgsOTMsCisgICAgNDYsMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLAorICAgIDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsMTE2LDIsMCwKKyAgICAxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLDEsMTEzLDE5LDAsCisgICAgODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMywwLAorICAgIDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDUsNzgsMjE4LDEwLDk1LDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsCisgICAgNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDUsMjE4LDcsMTA0LDk3LDExNSw5NywKKyAgICAxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLAorICAgIDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsCisgICAgNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsMTAxLDExOSw5MCwzLAorICAgIDExMSwxMDgsMTAwLDExNCw1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwxMzQsMSwKKyAgICAwLDAsMTE1LDgsMCwwLDAsMCwxLDI1LDEsMTUsMSwyOSwxLDEyMiwKKyAgICAyNiw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE5LDExNCw5NywxMTIsNDEsMywyMTgsMTAsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExNCwxMjAsMCwwLDAsMjE4LDksCisgICAgNzgsOTcsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMywxMTQsMTA5LDAsMCwwLAorICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwKKyAgICAxLDExNCwxMDksMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDExNSwxLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMCw4LDIxLDcsMywxLDEzLDEsMTMsMiwxNyw1LDEzLDEsMTE0LAorICAgIDEyMywwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4NCwwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMiwwLAorICAgIDEyNSwzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDgwLDAsMTE2LAorICAgIDEsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgwLDAsMTAwLDIsMCwxMjUsNCwKKyAgICAwLDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LDAsMTI0LDMsMCwKKyAgICAxMDAsMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwwLDEsMTI0LDIsCisgICAgMCw4Myw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLAorICAgIDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsCisgICAgMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDEwMiwKKyAgICA5NywxMTgsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw3OCwxMjIsNDQsNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLAorICAgIDEwMywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsNTgsMzIsCisgICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICAxMTQsNTksMCwwLDAsNDEsNiwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE0LDMxLDAsMCwwLDExNCw2MCwwLDAsMCwxMTQsNjEsCisgICAgMCwwLDAsMTE0LDQ3LDAsMCwwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDEsNSwxMTQsMTA4LDAsMCwwLDIxOCw4LAorICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDIxOCw4LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDMsMTA5LDExNSwxMDMsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LAorICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwKKyAgICAxMDksMTQzLDEsMCwwLDExNSwxMCwwLDAsMCwwLDEwLDIxLDEsMjQsMSwKKyAgICA2LDEsMjksMSwxMTQsMTMwLDAsMCwwLDk5LDQsMCwwLDAsMCwwLAorICAgIDAsMCwxMSwwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMjI4LAorICAgIDEsMCwwLDEwNSwwLDAsMTI1LDQsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LAorICAgIDksMCwxMTQsMzEsMCwxMjQsMiwwLDEyNCw0LDAsMTAwLDIsMCw2MCwxMTAsCisgICAgNiwwLDEwMCwzLDAsMTI1LDIsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksCisgICAgMCwxMTQsNTksMCwxMjQsMywwLDEyNCw0LDAsMTAwLDQsMCw2MCwxMjQsMCwKKyAgICAwLDEwMCwxLDAsMTAwLDUsMCwxMzMsMiwwLDI1LDEyNSw1LDAsMTI0LDAsCisgICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMzLDIsMCwyNSwxMjUsNiwwLDEyNCwwLAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMywyLDAsMjUsMTI1LDcsMCwxMjQsNSwKKyAgICAwLDExNiwwLDAsMTA3LDMsMCwxMTQsMTY1LDAsMTAwLDgsMCwxMDYsMSwwLAorICAgIDEyNCwyLDAsMTI0LDUsMCwxMzEsMiwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LDQsMCwxNDEsCisgICAgMSwwLDEzMCwxLDAsMTEwLDExMywwLDExNiw0LDAsMTI0LDYsMCwxMzEsMSwKKyAgICAwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjIzLDAsMTAwLDksMCwxMDYsMSwwLAorICAgIDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTI0LDgsMCwxMzEsCisgICAgMSwwLDEsMTE2LDUsMCwxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCisgICAgNTUsMCwxMTYsNCwwLDEyNCw3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLAorICAgIDAsMTE0LDIyLDEsMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCisgICAgMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiw1LDAsCisgICAgMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMDAsMSwwLDEwNywKKyAgICA5LDAsMTE0LDIxNCwxLDEyMSwyMCwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTEsCisgICAgMCwyNSwxMzEsMSwwLDEyNSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLAorICAgIDEwNywxMCwwLDExNCw3NCwxLDEsMSwxLDg5LDExMCw1OSwwLDg4LDExNiw4LAorICAgIDAsMTI0LDYsMCwxMzEsMSwwLDEyNCw5LDAsMTA3LDMsMCwxMTQsMTMzLDEsCisgICAgMTAwLDEyLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsCisgICAgMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsCisgICAgNCwwLDE0MSwxLDAsMTMwLDEsMCwxMjEsMTgsMCwxMjQsMSwwLDEwMCwxMywKKyAgICAwLDI1LDEwMCwxNCwwLDY0LDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCisgICAgMCwxMDcsMTAsMCwxMTQsMTcxLDEsMSwxLDEsODksMTEwLDQzLDAsODgsMTE2LAorICAgIDgsMCwxMjQsNywwLDEzMSwxLDAsMTI0LDEwLDAsMTA3LDMsMCwxMTQsMjE0LAorICAgIDEsMTE2LDMsMCwxMDAsMTIsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKKyAgICAxMjQsNCwwLDE0MSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEwMCw3LDAsMTAwLAorICAgIDEsMCwxMzMsMiwwLDI1LDgzLDQxLDE1LDk3LDEyMiwxLDAsMCw4Niw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDQ1LAorICAgIDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTAzLDk3LDEwNSwKKyAgICAxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwKKyAgICAzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsNDEsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwKKyAgICA5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiwKKyAgICA5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDk3LDExNCwxMDMsCisgICAgMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCisgICAgMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsOTksMTAxLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsCisgICAgMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwKKyAgICAxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsCisgICAgMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDExNSwxMTYsOTcsCisgICAgMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwKKyAgICAxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLAorICAgIDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTE0LDExNywxMTAsOTksOTcsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE0LDEwNiwwLDAsMCwxMjIsMTAsCisgICAgNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsMTE0LDM1LDAsMCwwLDExNCwKKyAgICAxMiwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsMTIsMCwwLDAsMTIyLDMwLAorICAgIDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDQzLAorICAgIDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LAorICAgIDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiwKKyAgICA5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDQ4LDExNCwxMDEsOTcsCisgICAgOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsCisgICAgMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTExLDEwMiwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMjE4LDUsMTA5LAorICAgIDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDMzLDExNCwxMjUsCisgICAgMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLDAsMCwwLDI1NSwxMjcsMjU1LDEyNywzLAorICAgIDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksCisgICAgODIsMTE0LDQ3LDAsMCwwLDExNCwxMDUsMCwwLDAsMTE0LDEwNywwLDAsMCwKKyAgICAxMTQsMzEsMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwKKyAgICAxNCwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTksCisgICAgMCwwLDAsNDEsMTEsMTE0LDUzLDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLAorICAgIDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLAorICAgIDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LAorICAgIDc1LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyNSwKKyAgICA5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE2MCwxLDAsMCwxMTUsNzYsMCwKKyAgICAwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwxMiwxLDEwLDEsCisgICAgMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEwLDEsMTgsMSwxOCwxLAorICAgIDE1LDEsMTAsMSwxNSwxLDE4LDEsMTUsMSwxMCwxLDEyLDEsMTIsMSwKKyAgICAzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsMTAsMSwxNSwxLAorICAgIDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSw5LDEsMTE0LDE0MSwKKyAgICAwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKKyAgICA2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLDAsMTE2LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwyLDAsMTI0LAorICAgIDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc1LDAsMTE2LDQsMCwxMDAsMSwKKyAgICAwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLDIsMCwxMDcsOSwKKyAgICAwLDExNCw3MSwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEyNCwzLDAsCisgICAgMTMxLDIsMCwxLDEyNCw0LDAsODMsMTE2LDcsMCwxMDAsMywwLDEwNiw4LAorICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNSwwLAorICAgIDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwyLDAsODMsNDEsNiwxMjIsCisgICAgNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLAorICAgIDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTE0LDEwNiwKKyAgICAwLDAsMCwxMTQsMzUsMCwwLDAsNDEsOSwyMTgsNywxMDksOTcsMTE0LDExNSwKKyAgICAxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsCisgICAgMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLAorICAgIDExMiwxMDEsMTE0LDEwNSwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiw5MCwxNiw5NSwKKyAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCwKKyAgICAxMDcsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDUsMTE0LDUzLDAsMCwwLAorICAgIDExNCwxMDYsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5MCwwLDAsMCwyMTgsCisgICAgNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjE1LDEsMCwwLDExNSwxNiwwLDAsMCwKKyAgICAwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxNiwxLDQsMiwxOCwxLAorICAgIDExNCwxNDcsMCwwLDAsMTE0LDU5LDAsMCwwLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwzLDAsCisgICAgMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwxMTYsNCwwLDEwNiwKKyAgICA1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDgzLAorICAgIDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsCisgICAgMTIxLDExNCwxMzUsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE3LAorICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwxMTIsMTE1LDQxLAorICAgIDQsMTE0LDE0NiwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwxNDAsMCwwLDAsCisgICAgMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTExLDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIyNywxLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LDE1MCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwwLDEwMCwyLDAsMTA4LAorICAgIDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLAorICAgIDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMiwwLAorICAgIDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LDAsMTAwLDIsMCwxMDAsCisgICAgMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiw2LDAsMTI0LDAsCisgICAgMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDEzMSwxLAorICAgIDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExMCwxMDUsMTE4LDEwMSwxMTQsMTE1LDk3LAorICAgIDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsCisgICAgMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICA1OSwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LAorICAgIDEyMiwxMDEsMTE0LDQ5LDAsMCwwLDkwLDcsNjYsMTIxLDExNiwxMDEsMTE1LDczLDc5LAorICAgIDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLDE1LDEwMCwxMDEsMTE2LDEwMSwKKyAgICA5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDI1LDczLDExMCw5OSwKKyAgICAxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsNjgsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDQxLDUsCisgICAgMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCwxNTEsCisgICAgMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCw4LDEwMSwxMTAsOTksMTExLAorICAgIDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsOTUsMTAwLDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwyMzcsMSwwLDAsMTE1LDEwLDAsMCwwLDAsNSwxMiwxLAorICAgIDE4LDEsMTUsMSwxOCwxLDExNCwxNTUsMCwwLDAsMTE0LDEyNywwLDAsMCwKKyAgICAyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk5LDIsMCwwLAorICAgIDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw4OSwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCisgICAgNzMsMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMiwwLDEwMCwzLAorICAgIDAsMTMxLDIsMCwxMTQsNzMsMCwxMjEsMTksMCwxMjQsMiwwLDEwNiwxLDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKKyAgICAwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LAorICAgIDMsMCwxMDYsNCwwLDEyNCwwLDAsMTI0LDIsMCwxMDAsNCwwLDEyNCwxLAorICAgIDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsMCw5NSw1LDAsCisgICAgMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE5NCwwLDEyMCw3MywwLDExNiwKKyAgICA2LDAsMTMxLDAsMCw2OCw5Myw1OCwwLDkyLDIsMCwxMjUsNSwwLDEyNSwKKyAgICA2LDAsMTI0LDEsMCwxMDYsNywwLDExNiw4LDAsMTI0LDYsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTE0LDEyOCwwLDEyNCw1LDAsMTI0LDAsMCwxMjQsMSwwLAorICAgIDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsOTUsOSwwLDgwLAorICAgIDExMywxMjgsMCw4NywxMDAsMSwwLDgzLDEyNCwzLDAsMTE2LDEwLDAsMTA3LDgsCisgICAgMCwxMTQsMjMsMSwxMTYsMCwwLDEyNCwyLDAsMTAwLDYsMCwxMzEsMiwwLAorICAgIDExNCwzMiwxLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDExLDAsMTI0LDAsMCwxMzEsCisgICAgMSwwLDEyNSw3LDAsODcsMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLAorICAgIDExNCw0LDEsMSwxLDEsODksMTEzLDMyLDEsODgsMTI0LDcsMCwxMTQsMzIsCisgICAgMSwxMDMsMCwwLDEyNCw0LDAsOTUsMTIsMCwxMTAsOSwwLDEyNCwzLDAsCisgICAgMTI0LDQsMCw5NSwxMiwwLDEyNCw0LDAsMTA2LDEyLDAsMTAzLDAsMCwxMDcsCisgICAgMiwwLDExNCw4NSwxLDEyNCwxLDAsMTE0LDg1LDEsMTE2LDEzLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsNCwwLDEwNiwxMiwKKyAgICAwLDEwNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwxLDEyNCw0LDAsODMsNDEsCisgICAgOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLAorICAgIDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwzMiwxMDUsMTEwLDEwMCwKKyAgICAxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwxMTUsMTE3LDk4LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsCisgICAgMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsMzIsMTAxLDEwOSwxMTIsCisgICAgMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDUsMTE2LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSwzMiwKKyAgICAxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLAorICAgIDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsMzIsMTE1LDExMiwxMDEsCisgICAgOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5NSw5NSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMyw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNjIsMjE4LAorICAgIDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMTEsCisgICAgMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsMTE0LDU5LDAsMCwwLDQxLDE1LDExNCwxMTUsMCwwLDAsMTE0LDE1NywKKyAgICAwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMjEsMCwwLDAsMjE4LDEwLDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwxMTUsMTAxLDExNiw5NSwKKyAgICAxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsOTIsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMjcsMCwwLDAsMjE4LDksOTUsODAsNzksODAsODUsNzYsNjUsODQsNjksMTE0LAorICAgIDE1OSwwLDAsMCwxMTQsMTU2LDAsMCwwLDExNCwzOCwwLDAsMCwyMTgsNiwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQxLDksMTE0LDEwNiwwLDAsMCw5MCw4LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMjcsMCwwLDAsMTE0LDE1NiwwLDAsCisgICAgMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSwyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNCwKKyAgICAxNTksMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMjMsMTE1LDExMiwKKyAgICAxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwyNTQsMSwwLDAsMTE1LDYwLDAsMCwwLDAsMTIsCisgICAgMTIsNCw2LDEsMTUsMiwzLDEsMTksMSwxMywxLDUsOCwyNCwxLAorICAgIDksMywxMiwxLDIyLDEsMjEsMSwxNSwxLDksMSw1LDIsNCwzLAorICAgIDEyLDIsMTUsMSwzLDEsMTksMSwxMywxLDUsMiw2LDEsMTIsMiwKKyAgICA5LDEsMTUsMSw2LDEsMTYsMSwxNiwyLDExNCwxNjcsMCwwLDAsOTksCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKKyAgICA2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwKKyAgICAwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsOTAsNCwKKyAgICAwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwwLDEwMSw3LDAsCisgICAgMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLAorICAgIDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksCisgICAgMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLDEwMCw5LDAsMTAwLAorICAgIDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDksCisgICAgMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywKKyAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsCisgICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICAxMTUsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMjIsNTksODMsMTExLDEwMiwKKyAgICAxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LAorICAgIDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsCisgICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDEyMiw2NSw4MywxMTEsMTAyLDExNiwxMTksOTcsCisgICAgMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCisgICAgNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAorICAgIDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLDAsMTA2LDEsMCwxMTYsCisgICAgMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDExMCwzNywwLAorICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLDEsMSwxMTYsMCwwLAorICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCw4MywKKyAgICA4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMSw3OCw0MSw1LDIxOCw3LAorICAgIDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsNzUsMTAxLDEyMSwKKyAgICA5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCw4NCw5NSw4NSwKKyAgICA4Myw2OSw4MiwxMTQsNDAsMCwwLDAsOTAsMTgsNzIsNzUsNjksODksOTUsNzYsCisgICAgNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsMiwyMTgsMywKKyAgICA5OSwxMDgsMTE1LDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3NiwyLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDIsMywxLDIzLDEsMTMsMSwxMjIsMzYsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE0MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTE0LDIxLAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksMCwxMjQsMCwwLAorICAgIDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMjQsCisgICAgMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwwLDAsMTAwLDMsCisgICAgMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsNDcsMCwxMjQsMCwKKyAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwwLDEyNSw0LDAsCisgICAgMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwxMzEsMiwwLDEyNSwKKyAgICA1LDAsODcsMTAwLDAsMCw4MSw4Miw4OCw4NywxMTAsMjIsMCw0LDExNiw5LAorICAgIDAsMTA3LDEwLDAsMTE0LDEzOCwwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLAorICAgIDEsMCw4OCwxMjQsNSwwLDgzLDQxLDUsNzgsMTE0LDEyNiwwLDAsMCw5MCwKKyAgICAxMSwxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDgwLDAsMCwKKyAgICAwLDExNCwzMCwwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsOTUsCisgICAgNjYsODUsNzMsNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LAorICAgIDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3Myw4MywKKyAgICA4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTQsNDcsMCwwLDAsMTE0LDcsMCwwLAorICAgIDAsMjE4LDcsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwxNzIsMCwwLDAsMTE0LAorICAgIDE2OSwwLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LDExNywxMDEsCisgICAgMTE0LDQwLDAsMCwwLDQxLDYsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwKKyAgICAwLDkwLDEyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsMTA3LDEwMSwxMjEsMTE0LAorICAgIDE3MSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywKKyAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDgzLDIsMCwwLDExNSwyMiwwLDAsMCwwLDIsCisgICAgOSwxLDEyLDIsOSwxLDE1LDEsMjIsMSwzLDEsMTgsMSwyOSwxLAorICAgIDEzLDEsOSwxLDEyMiwzOCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTUsMTAxLDk3LAorICAgIDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3OCw5OSw0LDAsCisgICAgMCwwLDAsMCwwLDAsOCwwLDAsMCwxNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLAorICAgIDEzMSwxLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMzEsMCwxMDAsMCwwLDgzLDEyMSwxNCwwLDExNiwxLDAsMTI0LDQsMCwxMzEsCisgICAgMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2OSwKKyAgICAwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsMCw4OCwxMjAsODEsMCwKKyAgICAxMTYsMywwLDEzMSwwLDAsNjgsOTMsNzAsMCw5MiwyLDAsMTI1LDUsMCwKKyAgICAxMjUsNiwwLDEyNCw0LDAsMTA2LDQsMCwxMTYsNSwwLDEyNCw2LDAsMTMxLAorICAgIDEsMCwxMzEsMSwwLDExNCw4MCwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwKKyAgICAwLDEyNCw1LDAsMTI0LDEsMCwxMjQsNCwwLDEzMSwyLDAsMTAwLDEsMCwKKyAgICAxMjQsNCwwLDEzMSwyLDEsMTI1LDcsMCwxMjQsNywwLDgzLDExMyw4MCwwLAorICAgIDg3LDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMTU4LDAsMCwwLDQxLDgsMTE0LAorICAgIDE3OCwwLDAsMCwxMTQsMzksMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxNjEsCisgICAgMCwwLDAsMTE0LDkyLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTIxLDAsCisgICAgMCwwLDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0MSw4LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLDExNiwxMTQsMTc3LDAsCisgICAgMCwwLDExNCwxMjcsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTY0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OCwyLDAsMCwxMTUsCisgICAgMjYsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsMywxLDE0LDEsCisgICAgMTMsMSw5LDEsMjIsMSwyMSwxLDksMSwxNSwxLDksMSwxMjIsMzEsCisgICAgODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCisgICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCisgICAgMCwxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsMCw4MywxMDAsMSwKKyAgICAwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTgxLDAsMCwwLDExNCwxMjcsCisgICAgMCwwLDAsNDEsNCwxMTQsMTcwLDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LAorICAgIDM1LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMiwwLDAsMTE1LDgsMCwwLDAsMCw3LAorICAgIDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsMTEyLDAsMCwwLAorICAgIDExNCwxMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwKKyAgICAxNzUsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTczLDAsMCwwLDIxOCwxMSwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTcyLDAsMCwwLAorICAgIDExNCwxNzgsMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwxNjgsMCwwLDAsNjQsMiwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LDcsMTgsMTUsMywKKyAgICAxLDIxLDE1LDMsMSwxMTQsMTY4LDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTMsOTUsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDEyMiw4Myw2Niw5NywxMTUsCisgICAgMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksMTExLDEwOSwxMDksMTExLAorICAgIDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwxMjEsCisgICAgMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLDEwMCwxLDAsMjUsCisgICAgMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwxMDAsMSwwLDEzMSwKKyAgICAyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsMTA2LDMsMCwxMDAsCisgICAgMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLDEyNCwzLDAsMTAwLAorICAgIDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLDUsMCwxMDcsMywKKyAgICAwLDgzLDQxLDYsMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsCisgICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSwKKyAgICA5OSwxMDcsMTA1LDExMCwxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLAorICAgIDEyMSwzOSw0NiwxMTQsMjksMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLAorICAgIDAsMCwxMTQsNTYsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDk1LDQxLDQsMTE0LDM4LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDM0LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCw0MSw1LDExNCwxMDgsMCwwLDAsMTE0LDEyNiwKKyAgICAwLDAsMCwxMTQsOTQsMCwwLDAsOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTU5LDAsMCwwLDEzMywyLDAsMCwxMTUsOCwwLDAsMCwwLAorICAgIDMsMjUsMSwyMiwxLDE5LDEsMTIyLDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsCisgICAgMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTUsCisgICAgMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsNzgsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLAorICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNDEsMiwwLAorICAgIDAsMTE1LDAsMCwwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2NiwKKyAgICA5NywxMTUsMTA1LDk5LDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LAorICAgIDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU0LDAsMTE2LDIsMCwxMDAsMiwKKyAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsMTMxLDEsMCwKKyAgICAxMzAsMSwwLDExNiw0LDAsMTA2LDUsMCwxMTYsNiwwLDEyNCwyLDAsMTI0LAorICAgIDEsMCwxMDYsNywwLDEzMSwzLDAsMSwxMDAsMSwwLDgzLDQxLDMsMTIyLAorICAgIDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTksCisgICAgMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDAsNDEsMzIsMTE0LAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLDgsMjE4LDgsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExMiwwLDAsMCwxMTQsMTA3LDAsMCwKKyAgICAwLDExNCw0NywwLDAsMCwxMTQsMTIxLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywKKyAgICAxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwKKyAgICAxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsMTE4LDAsMCwKKyAgICAwLDQxLDMsMTE0LDEwOCwwLDAsMCwyMTgsNiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTQsMTQ2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxNDQsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwxOCwxLDEyLDEsCisgICAgOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsCisgICAgMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwxMjEsCisgICAgMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTUyLDIsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwKKyAgICAwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTU5LDAsMCwwLAorICAgIDExNCwxODYsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsMTkzLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwxODQsMCwwLDAsMTI4LDIsMCwwLDExNSwxMCwwLDAsCisgICAgMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsMTg0LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwKKyAgICAzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LAorICAgIDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywwLDEwMCw4LDAsCisgICAgMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDkwLAorICAgIDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwKKyAgICAxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDkwLDksMCwKKyAgICAxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwKKyAgICAwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsNzksMTEyLDExNiwxMDUsCisgICAgMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMzIsNDAsCisgICAgOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKKyAgICAxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsCisgICAgMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LAorICAgIDEwMSwxNTgsMiwwLDAsMTE1LDIsMCwwLDAsMCw2LDEyMiwyMyw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwwLDAsMTAwLAorICAgIDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEwNSwxLAorICAgIDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywKKyAgICAxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LAorICAgIDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDAsMTA1LAorICAgIDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsCisgICAgMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDExNiwxMTEsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDgwLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDEwNywxMDEsMTIxLDExNSw1OCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMDksMTE2LDEwNSwxMDksMTAxLDM5LAorICAgIDMyLDQwLDEwOSw5NywxMTAsMTAwLDk3LDExNiwxMTEsMTE0LDEyMSw0MSwzMiwxMDUsMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTExLDEwMiwzMiwxMDgsOTcsMTE1LDExNiwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICA1OSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMTUsMTA1LDEyMiwKKyAgICAxMDEsMzksMzIsNDAsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDQxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTQsMTAxLAorICAgIDk3LDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLAorICAgIDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwKKyAgICAxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTE0LDEzMywwLDAsMCw0MSwxLDExNCwxOTYsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDExNiw5NywxMTYsMTE1LDE2NiwyLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICA0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwKKyAgICAxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwKKyAgICAxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LAorICAgIDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMjE4LDgsCisgICAgMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMDgsMCwwLDAsMTE0LAorICAgIDkwLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDE3OSwyLDAsMCwxMTUsMiwwLDAsMCwwLDgsCisgICAgMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsMTUwLAorICAgIDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTA4LAorICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE5OCwwLDAsCisgICAgMCwxODksMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTA1LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjEsMTksMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsODcsMTEwLDU4LDAsCisgICAgNCwxMTYsMiwwLDEwNywxMCwwLDExNCw5NCwwLDEsMTI1LDQsMCwxLDEyMiwKKyAgICAyNiwwLDExNiwzLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsCisgICAgMSwxMjQsNCwwLDEzMCwyLDAsODcsODksMTAwLDMsMCwxMDAsMywwLDEyNSwKKyAgICA0LDAsMTI2LDQsMCw4OCwxMTAsMSwwLDg4LDExNiw0LDAsMTI0LDMsMCwKKyAgICAxMzEsMSwwLDgzLDQxLDQsMTIyLDUyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTIyLDM5LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsCisgICAgMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLDEwMSwxMTYsOTUsMTAwLAorICAgIDk3LDExNiw5Nyw0MCw0MSwxMTQsMTA2LDAsMCwwLDc4LDQxLDUsMTE0LDE1NywwLAorICAgIDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDExNCw0MCwwLDAsCisgICAgMCwxMTQsMTA3LDAsMCwwLDExNCwxNTUsMCwwLDAsNDEsNSwxMTQsMTA4LDAsCisgICAgMCwwLDExNCwxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNTMsMCwwLAorICAgIDAsMjE4LDMsMTAxLDEyMCw5OSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxOTYsMiwwLDAsMTE1LDE0LDAsMCwwLDAsMiwxNSwxLDMsMSwKKyAgICAxOSwxLDE4LDEsOSwxLDMxLDEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwyMTgsOSw5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNCwyOSwwLDAsCisgICAgMCw5OSwzLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw5LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTAwLDQsMCwxMjQsMywwLDEzMSw0LDIsODMsNDEsNSwxMjIsCisgICAgMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMCw5NywxMTYsOTcsCisgICAgMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwKKyAgICAxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwxMTIsCisgICAgMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLAorICAgIDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTE0LDE4OSwwLDAsMCwyMTgsMTIsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwKKyAgICAxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiw4NCwxMTQsNjgsMCwwLDAsNDEsMywxMTQsMTIxLAorICAgIDAsMCwwLDExNCwxODgsMCwwLDAsMjE4LDcsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwKKyAgICAxMDEsNDEsNCwxMTQsMTA4LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsMzUsMCwKKyAgICAwLDAsMTE0LDIwMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsCisgICAgMTExLDk1LDk5LDExMSwxMDAsMTAxLDIwNiwyLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDUsMjEsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwwLDQzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxNzQsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLDAsMTI1LDMsMCwxMjEsCisgICAgMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCwKKyAgICAyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsMCwxLDEsMSwxMDAsCisgICAgMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwxOSwwLDEyNCwwLDAsCisgICAgMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsMCw4NywxMTAsMTgsMCwKKyAgICA0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsMSwxLDg5LDExMCwxNjIsCisgICAgMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwyNSwxMzEsMSwwLDEyNSwKKyAgICAzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLDEsCisgICAgMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCisgICAgMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwzNCwwLDExNiw4LDAsCisgICAgMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMSwwLDEwMCwKKyAgICA1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKKyAgICAxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDIyMCwwLDEsCisgICAgMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCw2LDAsMTI0LDQsMCwKKyAgICAxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsNywwLDEwMCw0LDAsCisgICAgMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCisgICAgOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwxMjQsMiwwLDEzMSwyLAorICAgIDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwyLDAsMTMxLDIsMCwKKyAgICAxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzAsMSwxMjQsNCwwLDEwMCwxLAorICAgIDAsMTA3LDksMCwxMTQsMTcwLDEsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsCisgICAgMTE0LDE3MCwxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsMCwxMTYsMTcsMCwxMjQsCisgICAgOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyMSwzNiwwLDEyNCwwLAorICAgIDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCw2LDAsMTMxLDMsMCwKKyAgICAxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLDIsMCwxLDg3LDExMCwKKyAgICAxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsMTY5LDEsMSwxLDEsODksCisgICAgMTEwLDEsMCw4OCwxMjQsOSwwLDgzLDQxLDExLDEyMiwxOTAsNjcsMTExLDExMCw5OSwKKyAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLAorICAgIDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwKKyAgICAxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsCisgICAgMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDEzMywwLDAsMCwKKyAgICAxMTQsMTM4LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDEyMiwKKyAgICAxMywxMjMsMTI1LDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTIzLDEyNSwxMTQsODksCisgICAgMCwwLDAsMTE0LDkwLDAsMCwwLDEyMiwxOSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsCisgICAgOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsMTIyLDEwLDExOSwKKyAgICAxMTQsMTExLDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTksMTE0LDE1NywwLDAsMCwKKyAgICAxMTQsNzksMCwwLDAsMTE0LDY2LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LAorICAgIDE5NSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsNDAsCisgICAgMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMzYsMCwKKyAgICAwLDAsMTE0LDEwNSwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyMDYsMCwwLAorICAgIDAsMTE0LDcsMCwwLDAsMjE4LDE5LDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LDEwNSwKKyAgICAxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxNTAsMCwwLDAsCisgICAgMTE0LDMxLDAsMCwwLDExNCwxOTksMCwwLDAsNDEsMTAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTI2LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsMTM5LDAsMCwwLAorICAgIDExNCw4OSwwLDAsMCwyMTgsMiwxMTUsMTE2LDExNCw1MywwLDAsMCwyMTgsMTAsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE0LDE1MywwLDAsMCw5MCwKKyAgICAxMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NywwLDAsMCwKKyAgICAyMTQsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxNSwxLDYsMSwzLAorICAgIDEsMTYsMSwxMywxLDExLDIsMywxLDE5LDEsMTMsMSw1LDIsMTYsCisgICAgMSwzLDEsMTksMSwxMywxLDUsMiwzLDEsOSwxLDEyLDEsMTMsCisgICAgMSwxOSwxLDUsMiw5LDEsNywxLDE1LDEsNiwxLDcsMSwxNSwKKyAgICAxLDE4LDEsMTMsMSwyMiwxLDEyLDEsOSwxLDE1LDEsMywxLDE5LAorICAgIDEsMTcsMSwxMywxLDUsMSwxMjIsMjEsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw3OCwxMTQsCisgICAgODcsMCwwLDAsNDEsMTAsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxMTMsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICAxOTksMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCwyMDYsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTk0LDAsMCwKKyAgICAwLDE1NiwyLDAsMCwxMTUsMTQsMCwwLDAsMTIsMiwxMiw4LDEyLDEzLAorICAgIDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwxMTQsMTk0LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMCwwLAorICAgIDAsMCwxMTUsMTEyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCisgICAgMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMSw3LDAsCisgICAgMTM1LDAsMCwxMDIsMSwwLDEwMCw4LDAsMTAwLDksMCwxMzQsMCwwLDEzMSwKKyAgICAxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCisgICAgMCwxMzEsMSwwLDkwLDksMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLAorICAgIDkwLDEwLDAsMTM1LDAsMCw4Myw0MSwxNCwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwKKyAgICAxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTA0LDk3LDExNiwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAorICAgIDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLDEwMSw0Niw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKKyAgICAwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDEsMCw4Myw0MSwyLAorICAgIDEyMiw3NSw2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNzgsNDEsMiwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NSwwLDAsMCwxNSwKKyAgICAzLDAsMCwxMTUsNCwwLDAsMCwwLDMsOSwxLDEyMiwxOSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMzMsMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywyLDAsODMsNDEsMSw3OCwKKyAgICA0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDExNCwxMTgsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDIxOCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LAorICAgIDYsOTUsOTUsMTAxLDExMyw5NSw5NSwyMSwzLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAwLDEsMTgsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMTYsMCwwLAorICAgIDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLDEsNzgsNDEsMywKKyAgICAyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwxLDExNCwxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsCisgICAgMjUsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCisgICAgMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsCisgICAgMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLAorICAgIDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsCisgICAgMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwxMTUsMTE3LDExMiwxMDEsCisgICAgMTE0LDExNCwyMTAsMCwwLDAsMTE0LDE5MywwLDAsMCw0MSwyLDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDEyNiwwLDAsMCw0MSwxLDExNCwyMTEsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE5MywwLDAsMCwyOCwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLAorICAgIDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwKKyAgICAxLDExNCwzNSwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTU3LDAsMCwwLDQwLDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMywxMjIsMjMsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsCisgICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDAsMSwwLAorICAgIDEzMSwyLDAsMTQzLDE3LDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTMxLAorICAgIDAsMCw4Myw4NywxMDAsMiwwLDgxLDgyLDg4LDEwMCwyLDAsODMsNDEsMywKKyAgICAxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LAorICAgIDk3LDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMjE4LDEsMTE0LDc4LDQxLDMsMTE0LAorICAgIDQ5LDAsMCwwLDExNCw1MCwwLDAsMCw5MCw0LDExNCwxMDEsOTcsMTAwLDQxLAorICAgIDMsMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDU0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAyMDAsMCwwLDAsNDUsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDIxLAorICAgIDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDExLDExNCwxMTIsMCwwLDAsMTE0LDExMSwwLAorICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE4NSwwLDAsCisgICAgMCwxMTQsMjEzLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDEyMywwLDAsMCwKKyAgICAxMTQsMTkzLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMTEsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMTE0LDIxMCwwLDAsMCwxMCwzLDAsMCwxMTUsMTQsCisgICAgMCwwLDAsMTIsMyw2LDIsMTIsNiwxMiw0LDEyLDMsMjQsMTIsMTgsCisgICAgNSwxMTQsMjEwLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDY0LDAsMCwwLAorICAgIDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsCisgICAgMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwKKyAgICAwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLAorICAgIDEwMCw4LDAsMTAwLDksMCwxMzIsMCwxLDkwLDYsMCwxMDAsMTAsMCw4MywKKyAgICA0MSwxMSwyMTgsMTYsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMjIsNjIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTcsMTE1LAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwKKyAgICAxMTYsMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLDAsMTI0LDIsMCwKKyAgICAxMDYsMSwwLDEwMCwyLDAsMTI0LDIsMCwxMDYsMiwwLDEwNSwyLDAsODMsCisgICAgNDEsMywxMjIsMzMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDExNCwxMzMsMCwwLDAsMTE0LDEzNCwwLDAsMCw0MSwKKyAgICAzLDExNCwzOSwwLDAsMCwyMTgsOCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgOTAsNywxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MSwzLDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDM1LDAsMCwwLDExNCwyMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE5NywwLDAsMCw1NSwzLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMjcsODMsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsMCwKKyAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDQsMCwKKyAgICAxMzEsMiwxLDgzLDQxLDIsNzgsMjE4LDUsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDIsCisgICAgMTE0LDk3LDAsMCwwLDExNCwxOTgsMCwwLDAsNDEsNSwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCw5MCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDUzLDAsMCwwLAorICAgIDExNCw0MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTk5LDAsMCwwLDYwLDMsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsMiwxMiwxLDEyMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIyMCwwLDAsMCwxMDUsMTgyLDEsCisgICAgMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDE3LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw1MywxLDAsMCwxMTYsMCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEwMywwLAorICAgIDAsMTI1LDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwwLDExNiwxLDAsCisgICAgMTI0LDQsMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLDAsMTI0LDQsMCwKKyAgICAxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsMTI0LDYsMCwxMDYsCisgICAgMiwwLDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLDg3LDEyMCwxMzIsMCwKKyAgICAxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCw2OCw5MywxMTgsMCwxMjUsNywwLAorICAgIDExNiw0LDAsMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsCisgICAgMTcsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEsODcsCisgICAgMTEzLDk0LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsMCwxLDEsMSwKKyAgICAxMTksOTQsMCw4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIxMSwKKyAgICAwLDEsMTI1LDgsMCwxLDEyMiwyNSwwLDExNiw5LDAsMTAwLDEsMCwxMjQsCisgICAgNCwwLDEyNCw4LDAsMTMxLDMsMCwxLDEwMCwyLDAsODMsODcsODksMTAwLAorICAgIDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTMsOTQsMCw4OCwKKyAgICAxMTMsOTQsMCw4NywxMjEsMzMsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwyLDAsCisgICAgMTI0LDMsMCwxMzEsMywwLDEsMTE2LDksMCwxMDAsMywwLDEyNCwxLDAsCisgICAgMTMxLDIsMCwxLDg3LDExMCw1MywwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsCisgICAgNDgsMSwxLDEyNSw4LDAsMSwxMjIsMjEsMCwxMTYsOSwwLDEwMCwxLDAsCisgICAgMTI0LDEsMCwxMjQsOCwwLDEzMSwzLDAsMSw4Nyw4OSwxMDAsMiwwLDEwMCwKKyAgICAyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMCwxLDAsODgsMTAwLDIsMCwKKyAgICA4Myw0MSw0LDEyMiwyNyw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LAorICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCisgICAgMTIyLDI3LDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LAorICAgIDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDEyLAorICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTEsMTE0LDM4LAorICAgIDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwzMywwLAorICAgIDAsMCwxMTQsMjgsMCwwLDAsMTE0LDMsMCwwLDAsOTAsNSwxMDksMTA3LAorICAgIDEwMCwxMDUsMTE0LDIxOCwxNSw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTQsNDAsMCwwLDAsMTE0LDEwNSwwLDAsMCwxMTQsNTUsCisgICAgMCwwLDAsNDEsOSwxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCisgICAgNTMsMCwwLDAsMTE0LDIyMCwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDExNCw5NCwwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDIzLDAsMCwwLAorICAgIDExNCwyMDEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDE5OCwwLDAsMCw2NSwzLDAsMCwxMTUsMzgsMCwKKyAgICAwLDAsMCwyLDE4LDEsNiwyLDIyLDEsMTgsMSwxNywyLDE5LDEsCisgICAgMTUsMSwzLDEsMTcsMSwxMywyLDcsMSwxOCwzLDE2LDEsMjcsMSwKKyAgICAzLDEsMTYsMSwxNywxLDE4LDIsMTIyLDI1LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLAorICAgIDk3LDExNiw5Nyw3OCw0MSw3LDExNCwxMTIsMCwwLDAsMTE0LDExMSwwLDAsMCwKKyAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsCisgICAgMTk5LDAsMCwwLDExNCwxOTgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxOCwwLAorICAgIDAsMCw1MSwzLDAsMCwxMTUsOCwwLDAsMCwxMiwyLDYsMiwxMiwKKyAgICA1LDEyLDUsMTE0LDIxOCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLAorICAgIDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwKKyAgICAwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsCisgICAgMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsCisgICAgNDEsNywyMTgsMjAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDQ1LDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgNSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSw3NiwwLDAsCisgICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsCisgICAgMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiwKKyAgICAyLDAsMTI0LDMsMCwxMDAsMSwwLDEyNCwxLDAsMTAwLDIsMCwxMjQsMiwKKyAgICAwLDEzMSwxLDIsMTI1LDQsMCwxMTYsMywwLDEyNCw0LDAsMTAwLDEsMCwKKyAgICAxMjQsMSwwLDEwMCwzLDAsMTI0LDIsMCwxMzEsMSwyLDgzLDQxLDQsNzgsCisgICAgMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDg5LDAsMCwwLDQxLAorICAgIDQsMTE0LDE1NywwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwxNDEsMCwwLDAsCisgICAgMTE0LDE0NywwLDAsMCw0MSw1LDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwyMDksMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDE4NywwLDAsMCw5OCwzLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsCisgICAgMSwxNSwxLDI0LDEsMTIyLDI5LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwKKyAgICAxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwKKyAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LAorICAgIDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDIsCisgICAgMCwwLDAsMTA0LDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzEsCisgICAgODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCwKKyAgICA0MSw2LDExNCwxMTIsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTEzLDAsMCwKKyAgICAwLDExNCwxMTQsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsMjAyLDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwyMjMsMCwwLDAsOTQsMywwLDAsMTE1LDYsMCwKKyAgICAwLDAsMTIsMiw2LDIsMTIsNiwxMTQsMjIzLDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDEzNiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLAorICAgIDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLAorICAgIDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwKKyAgICAwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLAorICAgIDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLAorICAgIDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCw5LAorICAgIDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNiwwLAorICAgIDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDEsMTIsMCwxMDAsMTgsMCwxMDAsCisgICAgMTksMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsMjAsMCw4Myw0MSwKKyAgICAyMSwyMTgsMTksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDkzLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCisgICAgMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw5OSwKKyAgICAxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTksMTExLDExNCwxMDcsMzIsMTE5LAorICAgIDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LAorICAgIDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwKKyAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LAorICAgIDM1LDAsMCwwLDQxLDMsMTE0LDEwOCwwLDAsMCwxMTQsMTA2LDAsMCwwLAorICAgIDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTg1LDAsMCwwLDEyMSwzLDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDEsOSwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCisgICAgMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLAorICAgIDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsCisgICAgMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwwLDExMSwzMywwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LDIsMCw4MywKKyAgICA0MSwxLDc4LDQxLDIsMTE0LDIxMSwwLDAsMCwxMTQsMTE4LDAsMCwwLDQxLAorICAgIDIsMTE0LDEwOCwwLDAsMCwxMTQsMjEyLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMTMsMCwwLDAsMTI1LAorICAgIDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLDEyMiwyNiw2OSwxMjAsCisgICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCw2NSw4Myw0MSwxLDc4LDQxLAorICAgIDMsMTE0LDIxNCwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwxLDExNCwxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMTE0LDIxNSwwLDAsMCwxMjksMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCisgICAgMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsCisgICAgMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDIsMCwKKyAgICAxMjUsMiwwLDExNiw0LDAsMTAwLDEsMCwxMjQsMSwwLDEwNiw1LDAsMTI0LAorICAgIDAsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMjQsMiwwLDgzLDQxLDIsMTIyLAorICAgIDM4LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywxMTAsMzIsMTE3LDExMCwxMDUsMTE2LDEwNSwKKyAgICA5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwzOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCisgICAgMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwKKyAgICA3LDExNCwxMjEsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsMTQ1LDAsMCwwLAorICAgIDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LAorICAgIDExNCwxMDUsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsNDEsCisgICAgMywxMTQsMTA4LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDE5MCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMTg2LDAsMCwwLDEzMiwzLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDYsCisgICAgMSwxNSwxLDYsMSwxNiwxLDEyMiwzMyw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5OSwxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNDUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMjQsMSwwLDEzMSwyLDAsMSwxMTYsNCwwLDEwMCwxLDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTAwLDIsMCwKKyAgICA4Myw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLAorICAgIDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLDEyMCwxMDEsOTksMTE3LAorICAgIDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw3OCw0MSw3LAorICAgIDExNCwxMjEsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsMTQ1LDAsMCwwLDkwLAorICAgIDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDEwNSwwLAorICAgIDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwxMDgsCisgICAgMCwwLDAsMTE0LDE5MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTkxLDAsMCwwLDE0MCwzLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDIsMTksMSw2LDEsMTIyLDMxLDY5LDEyMCwxMTYsCisgICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMywwLDAsCisgICAgMCwxMTUsNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAorICAgIDEsMCwxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwxMzUsMCwwLDEwMiwKKyAgICAxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LDMsMCw2OCwxMzEsCisgICAgMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsNDksODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDExNCwyOSwwLDAsMCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKKyAgICAwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwwLDkzLDIxLDAsCisgICAgMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwyMywxMDcsMiwwLAorICAgIDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQxLDIsMTE0LDE4NSwwLDAsMCwKKyAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwyMTgsNiwxMTUsCisgICAgMTE3LDEwMiwxMDIsMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LDEwMSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyNTAsOSw2MCwxMDMsCisgICAgMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTQ5LDMsMCwwLDExNSwyLDAsMCwwLAorICAgIDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAorICAgIDEwMSwxMjAsMTEyLDExNCw2Miw0MSw0LDExNCwzOCwwLDAsMCwxMTQsMzUsMCwwLAorICAgIDAsMjE4LDMsOTcsMTEwLDEyMSwyMTgsMTgsNjksODgsODQsNjksNzgsODMsNzMsNzksCisgICAgNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMiwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMjYsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMjI2LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNTksMCwwLDAsMTQ2LDMsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsMiwxOSwxLDE4LDEsMTIyLDMwLDY5LDEyMCwxMTYsCisgICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw2Myw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5NywxMTAsMzIsMTAxLAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsNzgsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NywwLAorICAgIDAsMCwxNTIsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw2OSwKKyAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTMsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNCw5NywKKyAgICAxMTgsMTAxLDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLAorICAgIDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LAorICAgIDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMjAyLDAsMCwwLDE1NiwzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLAorICAgIDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0Niw0MSwxLDExNCwzNSwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTU3LDAsMCwwLDE2MCwzLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDMsMTIyLDMyLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsCisgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsCisgICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxNCwxMTQsMTEyLDAsMCwwLDExNCwxMTEsCisgICAgMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxODUsMCwKKyAgICAwLDAsMTE0LDIxMywwLDAsMCwxMTQsMjE1LDAsMCwwLDExNCwxODYsMCwwLAorICAgIDAsMTE0LDE5MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxODcsMCwwLDAsCisgICAgMTE0LDIwMiwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTMsMywwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDEyLDYsNiwyLDEyLDQsMTIsNCwxMiwzLDEyLDgsMTIsNiwxMiwKKyAgICA2LDEyLDQsMTIsNCwxMTQsMjI0LDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDEzMCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsCisgICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKKyAgICA4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCw5LDAsMTAwLDE0LAorICAgIDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNiwwLDEwMCwxNywwLAorICAgIDEzMiwwLDAsOTAsMTEsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwwLDkwLAorICAgIDEyLDAsMTAwLDIwLDAsODMsNDEsMjEsMjE4LDE0LDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw5NywzOCwxLDAsMCw4MiwxMDEsMTEyLAorICAgIDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzksMTE1LDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDQ2LDMyLDMyLDczLDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA4LDExMSwKKyAgICAxMTEsMTA3LDExNSwzMiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDQ2LDMyLDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiw5OSwxMDQsOTcsCisgICAgMTEwLDEwMywxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDM5LDExNSwzMiwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNCwKKyAgICAxMDEsOTksMTExLDEwOSwxMTIsMTE3LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDExNywKKyAgICAxMTUsMTA1LDExMCwxMDMsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDYsMzIsMzIsNzAsMTExLDExNCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDQ2LDk5LDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwwLDEyNCwxLDAsCisgICAgMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMTYsCisgICAgMiwwLDEyNCwwLDAsMTA2LDMsMCwxMzEsMCwwLDEzMSwxLDAsMTI0LDAsCisgICAgMCw5NSw0LDAsMTI0LDMsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLAorICAgIDgzLDQxLDEsNzgsNDEsNiwyMTgsNSw5NSwxMTAsOTcsMTA5LDEwMSwyMTgsNSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTQsOTMsMCwwLDAsMjE4LDE2LDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDE3LDk1LDEwOCw5NywKKyAgICAxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDEyLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDQsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwyMTgsMTEsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NSwwLDAsMCwxNzMsMywKKyAgICAwLDAsMTE1LDgsMCwwLDAsMCwxLDksMSw5LDEsMjEsMSwxMjIsCisgICAgMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw1MywwLAorICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLAorICAgIDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwyLDAsCisgICAgMTAwLDIsMCwxMDcsMiwwLDExNCw0MywwLDEwMCw2LDAsODMsMTI0LDEsMCwKKyAgICAxMDAsNSwwLDEwMiwyLDAsODMsNDEsNywxMjIsNjIsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLDQwLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLDk3LDEwOSwKKyAgICAxMDEsNDQsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCw0NSw5NywKKyAgICAxMTYsMTE2LDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwxMTQsNTgsMCwwLDAsMTE0LDMwLAorICAgIDAsMCwwLDExNCw3LDAsMCwwLDExNCwzNSwwLDAsMCw5MCw4LDk1LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQxLDIsMTIyLDMsMTE1LDEyMSwxMTUsMTIyLDQsCisgICAgMTEyLDk3LDExNiwxMDQsNDEsMiwxMTQsMjMxLDAsMCwwLDExNCwzMiwwLDAsMCwKKyAgICA0MSw0LDExNCwxMDgsMCwwLDAsMTE0LDIyMiwwLDAsMCwyMTgsMywxMDAsMTExLAorICAgIDExNiw5MCwyLDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxNzksMywwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LDMsMTIyLDM4LAorICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwxLDAsMTI1LAorICAgIDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDI1LDEyNCwKKyAgICAyLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDIzOCwwLDAsMCwKKyAgICAxMTQsMTE3LDAsMCwwLDExNCw3LDAsMCwwLDIxOCw3LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSw0MSwzLDExNCwxMDgsMCwwLDAsOTAsMTgsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjMzLDAsCisgICAgMCwwLDE4OSwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwxMjIsCisgICAgMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LAorICAgIDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTI0LAorICAgIDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDExMSwwLDEyNCwwLDAsMTA2LDMsCisgICAgMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwyLDAsCisgICAgMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwMiwwLDEyNCwyLDAsMTA2LAorICAgIDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwMiwwLDEyNCwyLDAsMTA2LDYsCisgICAgMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLDAsOTUsNywwLAorICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTI0LDAsMCwxMDYsNywwLDgzLAorICAgIDQxLDEsNzgsNDEsOCwxMTQsOTMsMCwwLDAsMTE0LDIzMywwLDAsMCwxMTQsCisgICAgMjM0LDAsMCwwLDExNCwyMzUsMCwwLDAsMTE0LDIzMSwwLDAsMCwxMTQsMTI3LAorICAgIDAsMCwwLDExNCwxNTYsMCwwLDAsMTE0LDIzMiwwLDAsMCw0MSwzLDExNCwKKyAgICAxMDgsMCwwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LAorICAgIDk3LDExNiwxMDEsMTkzLDMsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTgsMSwKKyAgICAxNSwxLDIxLDMsMjcsMSw5LDEsMTIsMSw5LDEsMTIyLDI3LDk1LDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsMTAxLAorICAgIDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsCisgICAgMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDI0MCwKKyAgICAwLDAsMCw0MSwxLDExNCwxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsCisgICAgMTE0LDk1LDk1LDIwNiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLAorICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwKKyAgICA5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLAorICAgIDgzLDQxLDEsNzgsNDEsMiwxMTQsMzEsMCwwLDAsMTE0LDI0MCwwLDAsMCwKKyAgICA0MSwxLDExNCwxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDUsMCwwLDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsMjA5LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwOCwxMDEsMTEwLAorICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LAorICAgIDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwKKyAgICAyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDAsCisgICAgMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNDcsMCwwLDAsMTE0LDIzMiwwLDAsCisgICAgMCw0MSwxLDExNCwxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LAorICAgIDk1LDIxMiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LAorICAgIDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwwLDgzLDQxLAorICAgIDEsNzgsNDEsMSwxMTQsMjQwLDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwKKyAgICAyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDEyLDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsCisgICAgMTE1LDk1LDk1LDIxNSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LAorICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwKKyAgICA5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjMyLAorICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICAyNDUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCwyMTgsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxMywxMTQsMTEyLDAsCisgICAgMCwwLDExNCwxMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwKKyAgICAwLDExNCwxODUsMCwwLDAsMTE0LDIzOCwwLDAsMCwxMTQsMjMzLDAsMCwwLAorICAgIDExNCwyNDAsMCwwLDAsMTE0LDI0MiwwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwKKyAgICAyNDQsMCwwLDAsMTE0LDI0NiwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDExNCwyMzAsMCwwLDAsMTY2LDMsMCwwLDExNSwyMCwwLDAsMCwKKyAgICAxMiw1LDYsMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTMsMTIsMywxMiwzLAorICAgIDEyLDMsMTIsMywxMTQsMjMwLDAsMCwwLDk5LDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsMTE1LDExOCwKKyAgICAwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMywKKyAgICAwLDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDAsNSwwLAorICAgIDEwMCw2LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwKKyAgICAwLDAsOTAsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCw5MCw4LAorICAgIDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEzLDAsCisgICAgMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwKKyAgICAwLDAsOTAsMTEsMCwxMDAsMTcsMCw4Myw0MSwxOCwyMTgsMTYsOTUsNzgsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsCisgICAgMTI0LDMsMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsCisgICAgNDEsMSw3OCw0MSwyLDExNCwyMzAsMCwwLDAsMTE0LDIzMiwwLDAsMCw0MSwKKyAgICA0LDExNCwxMDgsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgMTE0LDIzNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTg1LDAsMCwwLDIyNCwzLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LAorICAgIDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwKKyAgICAxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsCisgICAgMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwKKyAgICAxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MSwyLDExNCw0NywwLAorICAgIDAsMCwxMTQsMTEyLDAsMCwwLDQxLDIsMTE0LDE3MCwwLDAsMCwxMTQsMTkwLAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjI3LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjgsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMTAwLDEsMCw4Myw0MSwyLDc4LDg0LDExNCw0LDAsMCwwLDQxLAorICAgIDIsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNTksMCwwLDAsMjM2LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsCisgICAgMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LDMwLDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDIsMCwKKyAgICAwLDAsMjM5LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsCisgICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyMiwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywwLAorICAgIDEwMCw0LDAsMTAwLDUsMCwxMzEsMywxLDgzLDQxLDYsNzgsMTE0LDMwLDAsCisgICAgMCwwLDEyMiw4LDYwLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDYyLDExNCwxODksMCwwLAorICAgIDAsMTE0LDIwNCwwLDAsMCw4NCw0MSwxLDExNCwyMDUsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4NywwLDAsMCwyNDIsMywKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LAorICAgIDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsCisgICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxNjQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMTE0LDE4NiwwLDAsMCwyNDUsMywwLDAsMTE1LDAsMCwwLDAsMTIyLAorICAgIDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCwKKyAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDE5MCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAxMTQsMTkxLDAsMCwwLDI0OCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMjQsMCwKKyAgICAwLDEwNiwxLDAsMTMxLDIsMCwxLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiw5OCw3NiwxMTEsOTcsMTAwLAorICAgIDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCisgICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsCisgICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwzOCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiwxMjMsMzMsMTE0LDEyNSw0MSw0LDExNCwxMDUsMCwwLDAsMTE0LDIzMiwwLAorICAgIDAsMCwxMTQsMTIxLDAsMCwwLDExNCwxOTIsMCwwLDAsNDEsMiwxMTQsMTA4LAorICAgIDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE5MywwLDAsMCwyNTEsMywwLDAsCisgICAgMTE1LDQsMCwwLDAsMCw3LDE2LDEsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMTIsMCwwLDAsMTE0LAorICAgIDExMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxODUsMCwwLDAsMTE0LDE4MywKKyAgICAwLDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDIwMiwwLAorICAgIDAsMCwxMTQsMTg3LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDE5MSwwLDAsCisgICAgMCwxMTQsMTkzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyNDcsMCwwLDAsMjIzLAorICAgIDMsMCwwLDExNSwxNiwwLDAsMCwxMiwxLDEyLDMsMTgsOSwxMiwzLAorICAgIDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDI0NywwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDY0LDAsCisgICAgMCwwLDExNSwxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKKyAgICA5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwKKyAgICAzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCw0LAorICAgIDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLDEwMSw0LDAsCisgICAgMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAxLAorICAgIDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsCisgICAgMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsCisgICAgMTMxLDEsMCw5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsMTAsMCwxMDAsCisgICAgMTMsMCwxMDAsMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNCwKKyAgICAwLDEwMCwxMCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLDAsMTMxLDEsMCwKKyAgICA5MCwxMSwwLDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCw5NywxMTYsMTA0LDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LAorICAgIDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NSwwLDAsMCwxMjAsCisgICAgNDgsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDY4LDkzLAorICAgIDMxLDAsMTI1LDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwKKyAgICAwLDExNCwxNiwwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLDEsMTEzLDE2LAorICAgIDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LDEwOCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExMSwxMTAsCisgICAgMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKKyAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsMTE0LDcsMCwKKyAgICAwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDExNCwKKyAgICAxMTUsMCwwLDAsMTE0LDI1MCwwLDAsMCw0MSwyLDExNCwxNzAsMCwwLDAsCisgICAgMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDI1MCwwLDAsMCwxMiw0LDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDEyMiwyOCw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsCisgICAgMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTA3LAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LAorICAgIDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLDExNiwyLDAsMTA2LAorICAgIDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLDEyMCw1OSwwLDExNiwKKyAgICAwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLDE0LDAsMTI0LAorICAgIDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDUxLDAsNCwxMTYsNSwKKyAgICAwLDEwNywxMCwwLDExNCw5NCwwLDEsMSwxLDExOSw1MSwwLDg5LDExMyw1MSwKKyAgICAwLDg4LDExMyw1MSwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCw4Myw0MSwzLAorICAgIDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLDExNCwzMiw5NywKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LAorICAgIDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsCisgICAgMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywxMDgsMTE1LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAorICAgIDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNDEsNiwxMTQsCisgICAgNywwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwKKyAgICAxMTQsNjAsMCwwLDAsMTE0LDYxLDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LAorICAgIDEwNywwLDAsMCw0MSwzLDExNCwxNzAsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKKyAgICAxMDcsMTE1LDIwLDQsMCwwLDExNSwxNiwwLDAsMCwwLDcsMjUsMSwxNiwKKyAgICAxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwyMiw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKKyAgICAxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICAxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTIzLDAsMCwwLDEyNCwxLDAsCisgICAgMTAwLDEsMCwxMDcsMiwwLDExNCw1MywwLDEyMSwxNiwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDIyLDAsNCwxMTYsMiwwLAorICAgIDEwNywxMCwwLDExNCw1MiwwLDEsMSwxLDEwMCwyLDAsODMsODksMTEwLDEsCisgICAgMCw4OCwxMjEsMTcsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwyNSwxMjUsCisgICAgMiwwLDg3LDExMCw0NiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTE4LDAsCisgICAgMSwxLDEsMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsCisgICAgMiwwLDEyNCwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLDAsNjAsODksCisgICAgMTEwLDEsMCw4OCwxMjQsMiwwLDgzLDQxLDMsMTIyLDIxMCw3MSwxMDEsMTE2LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwxMDIsMTA1LDExMCwxMDAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LDk3LDExNiwxMDEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsNDYsMzIsNzMsMTAyLAorICAgIDMyLDExMCwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywxMTgsCisgICAgOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLDExNCwxMDEsMzIsNzgsCisgICAgMTExLDExMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDMwLAorICAgIDAsMCwwLDc4LDQxLDcsMTE0LDMsMCwwLDAsMTE0LDQ1LDAsMCwwLAorICAgIDIxOCwxNyw3MCwxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE0LDcsMCwwLDAsMTE0LDI1MSwwLDAsMCwxMTQsMTM3LDAsCisgICAgMCwwLDExNCwyNTUsMCwwLDAsNDEsMywxMTQsMTcwLDAsMCwwLDExNCwzNSwKKyAgICAwLDAsMCwxMTQsMjUzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMzcsNCwwLAorICAgIDAsMTE1LDIyLDAsMCwwLDAsOCwxMiwxLDMsMSwxNiwxLDEzLDMsCisgICAgOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwzMSw4MCw5NywKKyAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDExOSwwLDAsMCwxMTYsMCwwLDEyNCwyLDAsMTAwLDEsMCwKKyAgICAxMzEsMiwwLDExNCwzOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTAsMjEsMCwxMjQsMiwKKyAgICAwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsMTAzLDAsMCwKKyAgICAxMjUsNCwwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCw4OCwwLDExNiwKKyAgICAzLDAsMTA2LDQsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4MywxMTYsCisgICAgMywwLDEwNiw1LDAsMTI0LDEsMCwxMDAsMCwwLDEzMSwyLDAsMTI1LDUsCisgICAgMCwxMjQsNCwwLDEyNCw1LDAsOTUsNiwwLDEyNCw1LDAsODMsNDEsMiwKKyAgICA3OCwxMTQsMTI0LDAsMCwwLDQxLDcsMTE0LDExNSwwLDAsMCwxMTQsMTI0LDAsCisgICAgMCwwLDExNCwxODIsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMTc5LDAsMCwKKyAgICAwLDExNCwxNjAsMCwwLDAsMTE0LDE1NiwwLDAsMCw0MSw2LDExNCwxNzAsMCwKKyAgICAwLDAsMTE0LDEyNiwwLDAsMCwxMTQsMjUzLDAsMCwwLDExNCwxMjcsMCwwLAorICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMDgsMTAxLDEwMywKKyAgICA5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNTksNCwwLDAsCisgICAgMTE1LDE4LDAsMCwwLDAsNCwxNSwxLDI0LDIsMTUsMSw2LDEsMTIsCisgICAgMSwxNiwxLDE4LDEsOSwxLDEyMiwyNyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDYsOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDExNSwxMTIsMTAxLDk5LDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw5LDAsCisgICAgMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDI0MywwLDAsMCwxMDMsCisgICAgMCwwLDEyNSw0LDAsMTIwLDIzMCwwLDEyNCwyLDAsNjgsOTMsMTkxLDAsMTI1LAorICAgIDUsMCwxMTYsMCwwLDEyNCw1LDAsMTE2LDEsMCwxMTYsMiwwLDEwMiwyLAorICAgIDAsMTMxLDIsMCwxMTUsNDMsMCwxMTMsMTMsMCwxMjQsMCwwLDEwNiwzLDAsCisgICAgMTI0LDUsMCwxMzEsMSwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMSwwLDEwNywKKyAgICA5LDAsMTE0LDEzLDAsMTE2LDQsMCwxMjQsNiwwLDEwMCwyLDAsMTMxLDIsCisgICAgMCwxMTQsMTA2LDAsMTI0LDYsMCwxMDYsNSwwLDEyNCwxLDAsMTI0LDMsMCwKKyAgICAxMzEsMiwwLDEyNSw3LDAsMTEwLDE4LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwKKyAgICAxLDAsMTI0LDYsMCwxMzEsMiwwLDEyNSw3LDAsMTI0LDcsMCwxMDAsMSwKKyAgICAwLDEwNyw4LDAsMTE0LDEzOSwwLDExMywxMywwLDEyNCw3LDAsMTA2LDcsMCwKKyAgICAxMDAsMSwwLDEwNyw5LDAsMTE0LDE1OCwwLDEyNCw3LDAsODMsMTI0LDcsMCwKKyAgICAxMDYsOCwwLDEyNSw4LDAsMTI0LDgsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAorICAgIDE5MSwwLDExNiw5LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDQsCisgICAgMCwxMDYsMTAsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMTYsCisgICAgMTEsMCwxMDYsMTIsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxMjUsNywKKyAgICAwLDEyNCw0LDAsMTI0LDcsMCw5NSw4LDAsMTI0LDcsMCw4MywxMDAsMSwKKyAgICAwLDgzLDQxLDQsMTIyLDYzLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDExNCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAorICAgIDExMCw5NywxMDksMTAxLDQ2LDc4LDExNCwxODEsMCwwLDAsMTIyLDE5LDExNSwxMTIsMTAxLAorICAgIDk5LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQxLDEzLDExNCwxNDMsMCwwLDAsMTE0LDY5LDAsMCwwLDIxOCw1LDk4LDEyMSwKKyAgICAxMTYsMTAxLDExNSwxMTQsMSwxLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxODEsMCwKKyAgICAwLDAsMTE0LDIsMSwwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTU2LDAsMCwKKyAgICAwLDExNCwxMDcsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsMTIxLDAsMCwwLAorICAgIDExNCwxNjAsMCwwLDAsNDEsOSwxMTQsMTcwLDAsMCwwLDExNCwxMjYsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDExNCwxODAsMCwwLDAsMjE4LDE0LDExMCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDkwLDUsMTAxLDExMCwxMTYsCisgICAgMTE0LDEyMSwxMTQsMjUzLDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDEyOCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAyMTgsOSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3NCw0LDAsMCwxMTUsCisgICAgNDAsMCwwLDAsMCw1LDYsMSwxMywxLDIxLDEsMywxLDE1LDEsCisgICAgMTIsMSwxNSwxLDIxLDIsMTgsMSwxMiwxLDMsMSwxNSwxLDQsMSwKKyAgICA5LDEsMTIsMSwxMiw1LDE3LDIsMTgsMSw5LDEsMTIyLDIwLDgwLDk3LAorICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLAorICAgIDEwMSw5OSw5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLDAsMCw0LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNDAsMCwwLDAsMTI0LDIsMCwxMDAsCisgICAgMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTE2LDAsMCwxMDYsMSwwLDEyNSwyLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEzMSwzLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCisgICAgNTgsMCwxMDAsMSwwLDgzLDEyNCw0LDAsMTA2LDMsMCwxMDAsMSwwLDEwNywKKyAgICA4LDAsMTE0LDEzMiwwLDEyNCw0LDAsMTA2LDQsMCwxMjUsNSwwLDEyNCw1LAorICAgIDAsMTE0LDEyNSwwLDEwMCwyLDAsMTI0LDQsMCw5NSw1LDAsMTE2LDYsMCwKKyAgICAxMjQsMSwwLDEyNCw1LDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwzLDAsMTI0LAorICAgIDQsMCw5NSw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLDExMCw0LDAsCisgICAgMTI0LDQsMCw4MywxMDAsMSwwLDgzLDQxLDMsMTIyLDk4LDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwKKyAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsCisgICAgMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDc4LDkwLAorICAgIDksMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsNywwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDEyNywwLDAsMCwKKyAgICAxMTQsMTU2LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDIzMCwwLDAsMCw0MSwKKyAgICA2LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgMTE0LDE4MCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCw0LDEsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMTA2LDQsMCwwLDExNSwyNiwwLDAsMCwwLDQsMTIsMSwKKyAgICA5LDEsMjEsMSwxMiwxLDQsMSwxNSwxLDksMSw2LDMsOSwxLAorICAgIDI0LDEsNCwyLDcsMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0MSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsCisgICAgMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDgsCisgICAgMCwxMTQsMzQsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDEsMCw4Myw0MSwKKyAgICAyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLAorICAgIDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsCisgICAgMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsCisgICAgMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAorICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsCisgICAgMTE0LDE4MSwwLDAsMCwxMTQsMTI3LDAsMCwwLDQxLDQsMTE0LDE3MCwwLDAsCisgICAgMCwxMTQsMTI2LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTY0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAxODIsMCwwLDAsMTI4LDQsMCwwLDExNSw4LDAsMCwwLDAsOCwxOCwKKyAgICAxLDEyLDEsNCwxLDEyMiwyMiw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCwKKyAgICAxMTIsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsCisgICAgMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMjUwLDAsMCwwLDExNCwyNTUsMCwKKyAgICAwLDAsMTE0LDEsMSwwLDAsMTE0LDIsMSwwLDAsMTE0LDUsMSwwLAorICAgIDAsMTE0LDE4MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAyNDksMCwwLDAsOCw0LDAsMCwxMTUsMjIsMCwwLDAsMTIsMiw2LAorICAgIDIsMTgsOCwxOCwxNywxOCwyMiwxOCwxNSwzLDEsMTgsMzEsMywxLDIxLAorICAgIDIxLDMsMSwxMTQsMjQ5LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsMTE1LDEzMywwLAorICAgIDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwKKyAgICAwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsCisgICAgMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsOTAsCisgICAgNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsOCwKKyAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsCisgICAgMTAwLDEyLDAsMTMyLDEsMCw5MCwxMCwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwKKyAgICAwLDAsOTAsMTEsMCwxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKKyAgICAwLDEzMSwxLDAsOTAsMTMsMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLAorICAgIDkwLDE0LDAsMTAwLDEwLDAsODMsNDEsMTksMjE4LDEwLDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDE3Miw3MCwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywKKyAgICAxMTAsMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LAorICAgIDMyLDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsNDQsMzIsOTgsMTAxLDEwNSwKKyAgICAxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwxMDEsMTE1LDEwNCwxMDEsMTAwLAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LAorICAgIDExMSwxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLDEwNCw5NywxMTUsMzIsOTgsCisgICAgMTAxLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKKyAgICA1LDAsMCwwLDcsMCwwLDAsMTE1LDEyMiwwLDAsMCwxMDMsMCwwLAorICAgIDEyNSwzLDAsMTIwLDUyLDAsMTI0LDIsMCw2OCw5Myw0NCwwLDkyLDIsMCwKKyAgICAxMzcsMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDYsMCwwLDEzNSwwLDAsMTAyLAorICAgIDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjQsNCwwLDY4LDEzMSwKKyAgICAxLDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDEyNCwzLDAsMTI0LDAsMCwKKyAgICA5NSwxLDAsMTI0LDEsMCwxMTIsNzksMCwxMDAsMywwLDEyNCwwLDAsOTUsCisgICAgMiwwLDEwMCw2LDAsMTI0LDAsMCw5NSwzLDAsMTE2LDQsMCwxMzEsMCwKKyAgICAwLDEyNCwwLDAsOTUsNSwwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLAorICAgIDk1LDYsMCwxMDAsNSwwLDgzLDQxLDcsMTIyLDE1NCw3MywxMTAsMTA1LDExNiwxMDUsCisgICAgOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTEsMTEwLAorICAgIDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsOTcsOTgsMTA4LDEwMSwzMiwKKyAgICAxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDExMSwxMDIsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsNTAsNDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTUsMzIsOTksMTExLDExMCwxMTYsOTcsCisgICAgMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMTcsCisgICAgMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTAxLDk5LDExMSwxMDMsMTEwLAorICAgIDEwNSwxMjIsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyNywwLDAsMCwxMjQsCisgICAgMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEzNiwwLDAsMTAyLDIsCisgICAgMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDExNCw0LDAsCisgICAgMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDExNCwyMjUsMCwwLDAsNDEsMSwKKyAgICAxMTQsMTI3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAyMjcsMCwwLDAsMTU3LDQsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsCisgICAgMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLAorICAgIDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywKKyAgICAxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNTgsMCwwLDAsMTE0LDI5LDAsMCwKKyAgICAwLDc4LDExNCw4NywwLDAsMCw0MSw3LDExNCwxNDksMCwwLDAsMjE4LDgsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM1LDAsMCwwLDIxOCwxMSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLDExNSwxMDEsMTE2LDIxOCwKKyAgICAxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCwxOSw5NSwxMTQsCisgICAgMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDQxLDUsMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDE0LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDQxLDEsMTE0LDEyNywwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg1LDAsMCwKKyAgICAwLDE1MSw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwxLAorICAgIDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsMTI0LDAsMCw5NSwKKyAgICAwLDAsMTAwLDIsMCw4Myw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LDk3LDEwOCwxMDUsCisgICAgMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsCisgICAgMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksMTAxLDQ2LDExNCwyOSwwLDAsMCw3OCwxMTQsCisgICAgODcsMCwwLDAsNDEsMSwxMTQsOCwxLDAsMCw0MSwxLDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAorICAgIDAsMTE0LDI1MCwwLDAsMCwxNjUsNCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAyLDEyMiwyOCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsCisgICAgMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwKKyAgICAwLDExNCwzNywwLDEwMCwxLDAsMTAzLDAsMCwxMDIsMiwwLDgzLDEyNCwyLAorICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEwNiwyLDAsMTEyLDU1LDAsMTAzLDAsMCwKKyAgICAxMDIsMiwwLDgzLDQxLDIsMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LAorICAgIDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDExNSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMywKKyAgICAxMTQsMTgxLDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDE1NiwwLDAsMCw0MSwKKyAgICAzLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsMTY0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAxMjQsMCwwLDAsMTcxLDQsMCwwLDExNSw4LDAsMCwwLDAsNywxNSwKKyAgICAxLDEyLDEsMTAsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSw2LDAsCisgICAgMCwwLDAsMCwwLDAsNywwLDAsMCw3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0MCwwLDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwKKyAgICAxMzEsMiwwLDEyNSw2LDAsMTE2LDAsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLAorICAgIDEsMCwxMjQsNiwwLDEwMCwyLDAsMTI0LDQsMCwxMzEsMiwyLDgzLDQxLAorICAgIDMsNzgsMTE0LDEyNywwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLDEsMTE0LDE2NywKKyAgICAwLDAsMCw0MSw3LDExNCwxMDgsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsCisgICAgMTI2LDAsMCwwLDExNCwzNSwwLDAsMCw5MCw0LDExNSwxMDksMTE1LDEwOCwxMTQsCisgICAgMTgwLDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUsMSwwLDAsMTgzLDQsMCwKKyAgICAwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIyLDIwLDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksNzgsOTksMywwLDAsMCwwLDAsMCwwLDE0LDAsMCwwLAorICAgIDE1LDAsMCwwLDY3LDAsMCwwLDExNSwyMzQsMSwwLDAsMTAwLDEsMCwKKyAgICAxMjUsMywwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLAorICAgIDMsMCwyNSwxMjUsNCwwLDEyMSwzNCwwLDExNiwxLDAsMTI0LDAsMCwxMDYsCisgICAgMiwwLDExMiw0OSwwLDExNiwzLDAsMTA2LDQsMCwxMzEsMCwwLDEzMSwxLAorICAgIDAsMTA2LDUsMCwxMjUsNSwwLDg3LDExMCwyNCwwLDQsMTE2LDYsMCwxMDcsCisgICAgMTAsMCwxMTQsODUsMCwxLDEsMSwxMDAsMTAsMCwxMjUsNSwwLDg5LDExMCwKKyAgICAxLDAsODgsMTI0LDUsMCwxMjQsMCwwLDEwNiw3LDAsMTA3LDMsMCwxMTQsCisgICAgMTIwLDAsMTI0LDAsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMjQsNSwwLDEyNCwKKyAgICAwLDAsOTUsNywwLDExNiw5LDAsMTMxLDAsMCwxMTQsMTUzLDAsMTI0LDAsCisgICAgMCwxMDYsMTAsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDExLDAsMTMxLDAsMCwKKyAgICAxMjUsNywwLDExMCwxNSwwLDEyNCwwLDAsMTA2LDEyLDAsMTI1LDYsMCwxMjQsCisgICAgNCwwLDEyNSw3LDAsMTI0LDcsMCwxMjQsNiwwLDEwNyw2LDAsMTE0LDQ1LAorICAgIDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTMxLDIsMCwKKyAgICAxMjUsOCwwLDEyMCwxMDAsMCwxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDc3LDAsCisgICAgOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsMTAwLDUsMCwxMjQsOSwwLDIzLAorICAgIDEyNSwxMSwwLDExNiwxMywwLDEyNCw4LDAsMTI0LDExLDAsMTMxLDIsMCwxMjUsCisgICAgMTIsMCwxMTYsMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwyMDgsMCwxMjQsMCwKKyAgICAwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTI0LDgsMCwKKyAgICAxMDMsMSwwLDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsMjA4LDAsODcsMTE2LDE3LAorICAgIDAsMTI0LDgsMCwxMzEsMSwwLDEyNSwzLDAsMTIwLDEyMywwLDEyNCwwLDAsCisgICAgMTA2LDE0LDAsNjgsOTMsMTEyLDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsCisgICAgMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTI0LDksMCwyMywKKyAgICAxMzEsMiwwLDEyNSwxMiwwLDExNiwxOCwwLDEwMCw2LDAsMTA2LDE5LDAsMTI0LAorICAgIDEyLDAsMTMxLDEsMCwxMDAsNywwLDEwMCwzLDAsMTMxLDEsMSwxLDEyNCwKKyAgICA3LDAsMTI0LDksMCwyMywxMjQsNiwwLDEwNyw2LDAsMTE0LDU1LDEsMTE2LAorICAgIDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsNTUsMSwxMjQsMCwwLDEwNiwxNiwKKyAgICAwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTAwLDgsMCwxMjQsMiwwLAorICAgIDEzMSw1LDAsODMsMTEzLDU1LDEsODcsMTI0LDMsMCwxMTQsMjMwLDEsMTE2LDE4LAorICAgIDAsMTAwLDksMCwxMDYsMTksMCwxMjQsOCwwLDEzMSwxLDAsMTMxLDEsMCwKKyAgICAxLDExNiwyMCwwLDEwNiwyMSwwLDEyNCwxLDAsMTAwLDgsMCwxMzEsMiwwLAorICAgIDEyNSwxMywwLDEyNCw4LDAsMTAzLDEsMCwxMjQsMTMsMCw5NSwyMiwwLDEyNCwKKyAgICAxMywwLDgzLDEwMCw4LDAsODMsNDEsMTEsMTIyLDEyNSw4NCwxMTQsMTIxLDMyLDExNiwKKyAgICAxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAorICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LAorICAgIDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0Niw3MCwxMTQsNTgsMCwwLDAsMTE0LDU2LAorICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTg1LDAsMCwwLDEyMiw5LDExNiwKKyAgICAxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDEyMywxMjUsMTE0LDk4LDAsMCwwLDc4LDEyMiwyNSwKKyAgICAxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsODcsMCwwLDAsNDEsMjMsCisgICAgMTE0LDMyLDAsMCwwLDExNCwzOSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDMsMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCwyMTksMCwwLDAsMTE0LDQwLAorICAgIDAsMCwwLDExNCw4LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMTQsNiwwLDAsMCwxMTQsMTEsMSwwLDAsMTE0LAorICAgIDg4LDAsMCwwLDExNCwxMCwxLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDcsCisgICAgMSwwLDAsMTE0LDQ0LDAsMCwwLDExNCw1LDEsMCwwLDExNCw0NiwwLAorICAgIDAsMCwxMTQsMTA1LDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTIxLDAsMCwKKyAgICAwLDExNCwxNjAsMCwwLDAsMTE0LDE1NiwwLDAsMCw0MSwxNCwxMTQsMTA4LDAsCisgICAgMCwwLDExNCwxMjYsMCwwLDAsMTE0LDE4MCwwLDAsMCw5MCwxMiwxMDUsMTE1LAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMzMsMCwwLDAsOTAsNSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDkwLDEyLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTAsOSw5OCw5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMjUsMCwwLAorICAgIDAsMTE0LDE2NSwwLDAsMCw5MCwxMywxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExMCw5NywxMDksMTAxLDkwLDksMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDE4MSwwLDAsMCwxODgsNCwwLDAsMTE1LDY4LDAsCisgICAgMCwwLDAsMyw2LDEsMTksMSwzLDEsMzQsMSwxMywxLDExLDEsCisgICAgMTUsMSwxMCwxLDksMiw5LDEsOSwxLDE1LDIsOSwxLDYsMiwKKyAgICAxMiwxLDE4LDEsMjIsMSwxMCwxLDE1LDEsMTIsMSwzMiw0LDEyLDIsCisgICAgMjIsMSwyMiwxLDI1LDEsMTYsMSwxMiwxLDI5LDEsNiwxLDE5LDEsCisgICAgMTgsMSwxMiwxLDQsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDksMCwwLDAsMTMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDExLDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyMSwKKyAgICAzMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDExMiwzMywwLDExNiwxLAorICAgIDAsMTA2LDMsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMzMsCisgICAgMCw0LDExNiw0LDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwzLDAsMTA3LDEwLAorICAgIDAsMTE0LDc1LDAsMSwxLDEsMTAzLDAsMCwxMjUsMiwwLDg5LDExMCwxLAorICAgIDAsODgsMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTAwLDEsMCwxMzEsMSwKKyAgICAwLDExNSwxMTIsMCwxMTYsMTAsMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDAsMCwKKyAgICA5NSwxMSwwLDExMCwxMTEsMCwxMTYsMTAsMCwxMzEsMCwwLDEyNSwzLDAsMTIwLAorICAgIDkwLDAsMTI0LDIsMCw2OCw5Myw4MiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsCisgICAgMTIsMCwxMDAsMiwwLDEzMSwxLDAsOTIsMywwLDEyNSw1LDAsMTI1LDYsCisgICAgMCwxMjUsNywwLDEyNCw2LDAsMTE0LDE5MSwwLDEwMCwzLDAsMTA2LDEzLDAsCisgICAgMTI0LDUsMCwxMjQsNywwLDEwNiwxNCwwLDEzMSwwLDAsMTMxLDIsMCwxMjUsCisgICAgOCwwLDExMCw2LDAsMTI0LDUsMCwxMjUsOCwwLDEyNCwzLDAsMTA2LDE1LAorICAgIDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEyOCwwLDg3LDEyNCwzLDAsMTI0LAorICAgIDAsMCw5NSwxMSwwLDExNiw3LDAsMTA2LDgsMCwxMDYsOSwwLDExNiwxNiwKKyAgICAwLDEzMSwxLDAsMTE0LDcsMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwKKyAgICAxMjQsMiwwLDY4LDEzMSwxLDAsMTI0LDAsMCw5NSwxNywwLDEwMCw2LDAsCisgICAgODMsNDEsNywxMjIsNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsCisgICAgOTksMTA0LDEwMSwzMiwxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAwLAorICAgIDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwwLDAsMCwxMTQsNTgsCisgICAgMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LAorICAgIDI4LDAsMCwwLDEwNCwwLDAsMTI0LDAsMCw5MywxOCwwLDEyNSwxLDAsCisgICAgMTI0LDEsMCwxMDYsMCwwLDEzMSwwLDAsMTQ2LDIsMCwxMTMsNiwwLDgzLAorICAgIDExNCw0LDAsMCwwLDQxLDEsMTE0LDg4LDAsMCwwLDQxLDIsMTE0LDIyLAorICAgIDAsMCwwLDkwLDIsMTAyLDExMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiw5OSwxMTEsMTA5LDExMiwKKyAgICA2Miw2LDUsMCwwLDExNSwyLDAsMCwwLDksMCwxMjIsNDEsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LAorICAgIDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM1LDAsMCwwLDExNCwKKyAgICAzLDAsMCwwLDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NSwwLAorICAgIDAsMCwxMTQsMCwxLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwKKyAgICAxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDcsMCwwLAorICAgIDAsMTE0LDgsMCwwLDAsMTE0LDksMCwwLDAsMTE0LDksMSwwLDAsCisgICAgMTE0LDEwLDEsMCwwLDExNCw4MywwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LAorICAgIDg4LDAsMCwwLDIxOCwzLDk3LDEwMCwxMDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAxLDAsMCw0MSw5LDExNCwxMDgsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLAorICAgIDgsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwxMTEsMTE5LDEwMSwxMTQsCisgICAgOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LAorICAgIDExNCwyNDUsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMjM3LDAsMCwwLDExNCwKKyAgICAyMjUsMCwwLDAsOTAsOCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTMsMSwKKyAgICAwLDAsMjMzLDQsMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsCisgICAgMSwzMSwxLDIyLDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsCisgICAgMSw2LDEsMjcsMiw2LDEsMTcsMSw5LDEsMTgsMSwxMjIsMjIsNzAsCisgICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwzLDAsMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwKKyAgICAwLDAsMTM1LDEsMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwKKyAgICAwLDEyNSwyLDAsMTI0LDIsMCw4Myw0MSwzLDk3LDIwLDEsMCwwLDY1LAorICAgIDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsCisgICAgMTA1LDk5LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsOTksMTA4LAorICAgIDExMSwxMTUsMTE3LDExNCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTEsMTEwLDMyLAorICAgIDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDEwNSwxMDgsMTA4LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNSwxMTYsOTcsCisgICAgMTEwLDk5LDEwMSwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsCisgICAgMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksCisgICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwKKyAgICAxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICA0LDAsMCwwLDE5LDAsMCwwLDExNSw0MywwLDAsMCwxMTYsMCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMTUsMzAsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLAorICAgIDIsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAorICAgIDAsMTM2LDEsMCwxNDAsMSwwLDgzLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsCisgICAgMzIsMTA0LDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwKKyAgICAxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwKKyAgICAxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzUsMCwwLDAsNDEsMiwKKyAgICAxMTQsNDYsMCwwLDAsMTE0LDEwNywwLDAsMCw0MSwxLDExNCwzNSwwLDAsCisgICAgMCw0MSwyLDExNCwxNzAsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxOCw1LDAsMCwxMTUsNiwwLDAsMCwwLDIsMTIsMSwxOCwxLAorICAgIDEyMiw1NCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsCisgICAgMTcwLDAsMCwwLDExNCwxMiwxLDAsMCwxMTQsMTgsMSwwLDAsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMTcwLDAsMCwwLDExNCwxMiwxLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOCwKKyAgICA1LDAsMCwxMTUsNCwwLDAsMCwwLDEwLDIxLDYsMTIyLDIwLDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKKyAgICAxMTEsMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LAorICAgIDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwKKyAgICAxNiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDEyMywzMywxMTQsMTI1LAorICAgIDQxLDQxLDIsMTE0LDQ3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwxLDExNCwKKyAgICAxMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDI0NCwwLDAsMCwyNiw1LDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDQxLDE1LDExNCwxMTIsMCwwLDAsMTE0LAorICAgIDExMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE4NSwKKyAgICAwLDAsMCwxMTQsMjUwLDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDE4MiwwLAorICAgIDAsMCwxMTQsMTI0LDAsMCwwLDExNCw1LDEsMCwwLDExNCwxODEsMCwwLAorICAgIDAsMTE0LDEzLDEsMCwwLDExNCwxODMsMCwwLDAsMTE0LDE5LDEsMCwwLAorICAgIDExNCwyNDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDYsMSwwLDAsMTQyLDQsCisgICAgMCwwLDExNSwyMCwwLDAsMCwxMiw3LDYsMiwxMiwxNCwxMiw0LDYsCisgICAgMiwxMiwxMiwxMiw1LDE1LDQ1LDEyLDMxLDE4LDE4LDExNCw2LDEsMCwwLAorICAgIDk5LDQsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDExLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxOTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEwMCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsCisgICAgMiwwLDEzMSwxLDAsMTI1LDUsMCwxMjQsNCwwLDExNSw5OSwwLDEyNCw1LAorICAgIDAsMTE0LDU0LDAsMTI0LDUsMCwxMDYsMSwwLDEyNSw0LDAsMTEwLDQ1LDAsCisgICAgMTI0LDIsMCwxMjQsMywwLDEwNywyLDAsMTE0LDg0LDAsMTE2LDIsMCwxMjQsCisgICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNCwwLDExMCwxNSwwLDExNiwzLAorICAgIDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNSwwLAorICAgIDExNSwxMjYsMCwxMTYsNCwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMywwLDEyNCwKKyAgICA0LDAsMTMxLDIsMSwxMjUsNSwwLDEyMSw0NCwwLDEyNCw1LDAsMTI0LDAsCisgICAgMCwxMDAsMiwwLDYwLDEyNCw0LDAsMTI0LDAsMCwxMDAsMSwwLDYwLDEyNCwKKyAgICAyLDAsMTI0LDAsMCwxMDAsNCwwLDYwLDEyNCwzLDAsMTI0LDAsMCwxMDAsCisgICAgNSwwLDYwLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTkwLAorICAgIDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDYsNzgsCisgICAgMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMjE4LDgsOTUsOTUsCisgICAgMTE1LDExMiwxMDEsOTksOTUsOTUsMTE0LDEyNywwLDAsMCw5MCw4LDk1LDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwMSw5NSw5NSw5MCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSwKKyAgICA5NSw0MSw2LDIxOCwzLDEwMywxMDEsMTE2LDExNCwxMjcsMCwwLDAsMTE0LDIyMywwLAorICAgIDAsMCwxMTQsMjE4LDAsMCwwLDExNCwxNjcsMCwwLDAsMjE4LDksNjksMTIwLAorICAgIDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCwxMDYsMCwKKyAgICAwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiwKKyAgICA5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDExNCwxMjcsMCwwLDAsMTE0LDE2NCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKKyAgICAyMTgsMTQsOTUsMTAyLDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiw1LDAsMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTUsMSw2LAorICAgIDEsNiwxLDEyLDEsMTIsMSwxOCwyLDE1LDEsNiwxLDIxLDEsMywKKyAgICAxLDEwLDEsMTAsMSwxMCwxLDE0LDEsMTMsMiwxMTQsMjQsMSwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNTUsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLAorICAgIDEwNiwyLDAsMTMxLDAsMCwxMDIsMiwwLDEyNSwwLDAsMTE2LDMsMCwxMTYsCisgICAgNCwwLDEwMiwyLDAsMTI1LDEsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDIsCisgICAgMCwxMjUsMiwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEwMywzLDAsCisgICAgODMsNDEsMSwxMjIsOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LAorICAgIDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsCisgICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksCisgICAgMzIsMTA1LDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwKKyAgICAzMiwzMiwzMiwzMiw0MSw3LDExNCwyMjQsMCwwLDAsMTE0LDE0NSwwLDAsMCwKKyAgICAyMTgsMTgsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLAorICAgIDEwNSwxMjAsMTAxLDExNSwxMTQsMjE4LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsMjIzLAorICAgIDAsMCwwLDExNCw3NCwwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTYxLDAsMCwwLDU1LDUsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsNSwxOCwxLDEyLDEsMTIsMSwxMTQsMTYxLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMiwwLDAsMTI0LDAsMCw5NywKKyAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDk3LDEsMCwxMTYsMCwwLDEwNiwyLAorICAgIDAsOTcsMiwwLDExNiwxLDAsMTA2LDMsMCwxMTYsNCwwLDI1LDEyNSwxLAorICAgIDAsMTIwLDc2LDAsMTAwLDI2LDAsNjgsOTMsNjgsMCwxMjUsMiwwLDEyNCwyLAorICAgIDAsMTE2LDEsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDgzLDAsMTE2LDAsMCwKKyAgICAxMDYsNSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExMCwxMywwLDExNiwKKyAgICAxLDAsMTA2LDMsMCwxMjQsMiwwLDI1LDEyNSwzLDAsMTE2LDYsMCwxMjQsCisgICAgMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEsMTEzLDQ0LDAsODcsCisgICAgMTAwLDUsMCwxMDAsNiwwLDEwMywxLDAsMTAyLDIsMCwxMDAsNywwLDEwMCwKKyAgICA4LDAsMTAwLDYsMCwxMDMsMiwwLDEwMiwyLDAsMTAyLDIsMCwxMjUsNCwKKyAgICAwLDEyMCwxNDksMCwxMjQsNCwwLDY4LDkzLDEyOSwwLDkyLDIsMCwxMjUsNSwKKyAgICAwLDEyNSw2LDAsMTE2LDcsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsCisgICAgMTI0LDYsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE1LDE5OSwwLDExNiw4LDAsCisgICAgMTMwLDEsMCwxMjQsNiwwLDEwMCwxMSwwLDI1LDEyNSw3LDAsMTI0LDUsMCwKKyAgICAxMTYsMSwwLDEwNiwzLDAsMTA3LDYsMCwxMTQsMjQxLDAsMTE2LDEsMCwxMDYsCisgICAgMywwLDEyNCw1LDAsMjUsMTI1LDgsMCw4MCwxMTMsMTU2LDAsMTIxLDIwLDAsCisgICAgMTE2LDAsMCwxMDYsNSwwLDEyNCw1LDAsMTMxLDEsMCwxMjUsOCwwLDgwLAorICAgIDg3LDExMywxNTYsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDI4LDEsMSwxLAorICAgIDEsMTE5LDE1NiwwLDg5LDExMywxNTYsMCw4OCwxMTMsMTU2LDAsODcsMTE2LDksMCwKKyAgICAxMDAsMTIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwKKyAgICAxMywwLDEyNCw4LDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsCisgICAgMTQsMCwxMjQsNywwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLAorICAgIDE1LDAsMTAwLDE2LDAsMTA2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEzMSwzLAorICAgIDAsMSwxMjEsMTksMCwxMTYsMCwwLDEwNiw1LDAsMTAwLDE3LDAsMTMxLDEsCisgICAgMCwxMjUsOSwwLDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsCisgICAgMTQ3LDEsMSwxLDEsMTAwLDE4LDAsMTI1LDksMCw4OSwxMTAsMSwwLDg4LAorICAgIDExNiw2LDAsMTI0LDEsMCwxMDAsMTcsMCwxMjQsOSwwLDEzMSwzLDAsMSwKKyAgICAxMTYsMCwwLDEwNiw1LDAsMTAwLDE5LDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsCisgICAgNiwwLDEyNCwxLDAsMTAwLDE5LDAsMTI0LDEwLDAsMTMxLDMsMCwxLDEyNCwKKyAgICA1LDAsMTAwLDcsMCwxMDcsMiwwLDExNCwyMzgsMSwxMTYsMCwwLDEwNiw1LAorICAgIDAsMTAwLDIwLDAsMTMxLDEsMCwxMjUsMTEsMCwxMTYsNiwwLDEyNCwxLDAsCisgICAgMTAwLDIxLDAsMTI0LDExLDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwKKyAgICAxMDAsMjIsMCwxMTYsMTEsMCwxMzEsMCwwLDEzMSwzLDAsMSwxMTYsMTIsMCwKKyAgICAxMDYsMTMsMCwxMTYsMiwwLDEwNiwxNCwwLDEzMSwwLDAsMTMxLDEsMCwxLAorICAgIDEyNCw1LDAsMTAwLDcsMCwxMDcsMiwwLDExNCw2NiwyLDExNiwxNSwwLDEwNiwKKyAgICAxNiwwLDEwMCwyMywwLDEzMSwxLDAsMSwxMDAsMjQsMCwxMTYsMTIsMCwxMDcsCisgICAgNiwwLDExNCw2NiwyLDEwMCwyNSwwLDExNiwxNywwLDk1LDE4LDAsMTAwLDE4LAorICAgIDAsODMsNDEsMjcsMTIyLDIwNSw4MywxMDEsMTE2LDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsCisgICAgMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMzIsMTA1LAorICAgIDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwKKyAgICAxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsMTEwLDExNiwxMTUsMzIsCisgICAgOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExNiwxMTQsOTcsOTksMTE2LDEwMSwxMDAsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMTQsMTAxLDMyLDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTQsNDksMCwwLDAsMTE0LDYwLDAsMCwwLDIxOCw4LDk4LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTQsMTQyLDAsMCwwLDkwLDUsMTEyLDExMSwKKyAgICAxMTUsMTA1LDEyMCwyNTAsMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLDkyLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsCisgICAgMCwwLDExNSwzMywwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsMCwKKyAgICAxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsODYsCisgICAgMSwxMTMsMywwLDEwMCwxLDAsODMsNDEsMiwxMTQsMjksMCwwLDAsNzgsCisgICAgNDEsMSwxMTQsMzEsMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMTE0LDc3LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCisgICAgMCwwLDExNCwyMjcsMCwwLDAsOTEsNSwwLDAsMTE1LDIsMCwwLDAsCisgICAgNiwwLDEyMiwyNSw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsCisgICAgMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDU5LDAsCisgICAgMCwwLDEyMiwzMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLAorICAgIDExMCwxMTYsMTE0LDMsMCwwLDAsMTE0LDI1LDAsMCwwLDExNCwyMSwwLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsOTAsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LAorICAgIDkwLDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsCisgICAgMTAxLDEwMywxMTQsMTY5LDAsMCwwLDExNCw2LDAsMCwwLDEyMiw0LDQ2LDExMiwKKyAgICAxMjEsMTE5LDEyMiw2LDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDEyMiwzLDk1LAorICAgIDEwNSwxMTEsMTIyLDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDEyMiw4LDk4LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMjIsNywxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LAorICAgIDQxLDE5LDExNCwxMjEsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDE0NSwwLDAsCisgICAgMCwxMTQsMjM5LDAsMCwwLDExNCwxMTIsMCwwLDAsOTAsMTgsOTUsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDExNCwKKyAgICAxMTYsMCwwLDAsMjE4LDMsOTcsMTA4LDEwOCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LAorICAgIDExNiwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDEwNywwLDAsMCwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMjksMCwwLDAsMTE0LDE0OSwwLAorICAgIDAsMCwxMTQsMjUsMSwwLDAsMTE0LDg0LDAsMCwwLDExNCwxNjMsMCwwLAorICAgIDAsMTE0LDE2OCwwLDAsMCwxMTQsMTczLDAsMCwwLDQxLDEyLDIxOCwxNyw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTAsMTEsMTE1LDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsCisgICAgMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEwLDExMSwxMTUsOTUsCisgICAgMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsMTAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCisgICAgOTUsMTExLDExNSwxMTQsMjEsMCwwLDAsMTE0LDI1LDAsMCwwLDkwLDksMTExLAorICAgIDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjYsNSwwLAorICAgIDAsMTE1LDgyLDAsMCwwLDAsOCw2LDEsOSwxLDksMywxMywxLAorICAgIDEzLDEsMTUsMSwxOCwyLDEzLDEsMjAsMywzMywxLDE5LDIsMzEsMSwKKyAgICAxMCwxLDE1LDEsMTMsMSw0LDIsMywxLDE1LDEsNSwxLDEzLDEsCisgICAgMTIsMiwxMiwxLDE2LDEsMTYsMSwyNSwzLDMsMSwxOSwxLDEzLDIsCisgICAgMTEsMSwxNiwzLDE1LDEsMTYsMywxMiwxLDE1LDEsMTYsMywxOSwxLAorICAgIDE5LDEsMTIsMSwxMywxLDEyLDEsMTE0LDMzLDEsMCwwLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDExNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxLDExNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMDYsNCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsMSwwLDE0MCwwLDAsMTAzLAorICAgIDEsMCwxMzEsMSwwLDEsMTE2LDcsMCwxMDYsOCwwLDEwMCwxLDAsMTA3LAorICAgIDIsMCwxMTQsNzgsMCwxMTYsMiwwLDEwNiw5LDAsMTA2LDEwLDAsMTE2LDExLAorICAgIDAsMTMxLDEsMCwxLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTIsCisgICAgMCwxMzEsMSwwLDEsMTE2LDUsMCwxMjQsMCwwLDk1LDUsMCwxMTYsMTMsCisgICAgMCwxMjQsMCwwLDk1LDEzLDAsMTAwLDIsMCw4Myw0MSwzLDEyMiw0MSw3MywKKyAgICAxMTAsMTE1LDExNiw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ1LAorICAgIDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk5LDExMSwxMDksCisgICAgMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDQ2LDExNCwyOCwxLDAsMCw3OCw0MSwxNCwKKyAgICAxMTQsMzMsMSwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsCisgICAgMjU0LDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDE5LAorICAgIDEsMCwwLDExNCwzLDAsMCwwLDExNCwxMTIsMCwwLDAsMjE4LDksMTA5LAorICAgIDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2MywwLDAsMCwxMTQsMTY4LDAsCisgICAgMCwwLDExNCwyNDksMCwwLDAsMTE0LDIxOCwwLDAsMCw0MSwyLDExNCwzMiwKKyAgICAxLDAsMCw5MCwxNywxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMzQsCisgICAgNSwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMCwxLDksMSwyOCwxLAorICAgIDE1LDEsMTYsMSwxNiw0LDksMSwxMTQsMzUsMSwwLDAsNDEsMywxMjIsCisgICAgMywxMTksMTA1LDExMCwxMTQsMSwwLDAsMCwxMTQsMiwwLDAsMCw0MSw1NywKKyAgICAxMTQsMTE0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDE3LDAsMCwwLDExNCwxOSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDM4LAorICAgIDAsMCwwLDExNCwzOSwwLDAsMCwxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsCisgICAgMCwwLDExNCw0NiwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDIxOCw4LDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNCwxNDQsMCwwLAorICAgIDAsMTE0LDE1LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDE0LDAsMCwwLAorICAgIDExNCwxOCwwLDAsMCw5MCwxNyw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3MywKKyAgICA2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNzMsMCwwLDAsMTE0LDcyLDAsCisgICAgMCwwLDExNCw4NCwwLDAsMCwxMTQsNzQsMCwwLDAsOTAsMjMsNjgsNjksCisgICAgNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsCisgICAgNzAsNzMsODgsNjksODMsOTAsMjcsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsCisgICAgOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsMTE0LDc5LDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTEsMCwwLAorICAgIDAsMTE0LDk1LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTA1LDAsMCwwLAorICAgIDExNCwxMjMsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCwKKyAgICAxNDcsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsMTU1LDAsMCwwLDIxOCw2LAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTQsMTYyLDAsMCwwLDExNCwxNjcsMCwwLDAsCisgICAgMTE0LDE2OCwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LAorICAgIDIxMCwwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwyMjMsMCwwLDAsMTE0LDIyOSwKKyAgICAwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LDI0NywwLAorICAgIDAsMCwxMTQsMjQ5LDAsMCwwLDExNCw2LDEsMCwwLDExNCwyNCwxLDAsCisgICAgMCwxMTQsMTYxLDAsMCwwLDExNCwzMywxLDAsMCwxMTQsMzUsMSwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDgsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLAorICAgIDAsMCwxMTUsMTAwLDAsMCwwLDYsMTcsNiwzLDEyLDEyLDEyLDUsMTIsCisgICAgNSwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsNSwxMiw3LDE1LDIyLDE1LAorICAgIDExMCwyMiwxLDE4LDIsNiwxLDYsMiw5LDIsOSwyLDEwLDIsMjEsCisgICAgNDQsMTIsMzMsMTIsMTksMTIsMTIsMTIsMTIsMTgsOCwxMiwyOCwxMiwxNywyMSwKKyAgICA1NSwyMSwxMiwxOCwxMCwxMiwxNCw5LDMsMTIsMSwxNSw2NSwxOSw2NCwxOSwKKyAgICAyOCwyMiwxMTAsMTksNDEsMjUsNDMsMjUsMTYsNiwzLDI1LDUzLDE5LDU3LDE5LAorICAgIDQxLDE5LDEzNCwxOSwxNDYsMTUsMjMsMTIsMTEsMTIsNjgsCit9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21hcnNoYWwuYyBiL1B5dGhvbi9tYXJzaGFsLmMKaW5kZXggNmYwZWU1ZS4uZjg5Y2QwNCAxMDA2NDQKLS0tIGEvUHl0aG9uL21hcnNoYWwuYworKysgYi9QeXRob24vbWFyc2hhbC5jCkBAIC0xMiw4ICsxMiw3IEBACiAjaW5jbHVkZSAibG9uZ2ludHJlcHIuaCIKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAibWFyc2hhbC5oIgotCi0jZGVmaW5lIEFCUyh4KSAoKHgpIDwgMCA/IC0oeCkgOiAoeCkpCisjaW5jbHVkZSAiLi4vTW9kdWxlcy9oYXNodGFibGUuaCIKIAogLyogSGlnaCB3YXRlciBtYXJrIHRvIGRldGVybWluZSB3aGVuIHRoZSBtYXJzaGFsbGVkIG9iamVjdCBpcyBkYW5nZXJvdXNseSBkZWVwCiAgKiBhbmQgcmlza3MgY29yaW5nIHRoZSBpbnRlcnByZXRlci4gIFdoZW4gdGhlIG9iamVjdCBzdGFjayBnZXRzIHRoaXMgZGVlcCwKQEAgLTIxLDcgKzIwLDcgQEAKICAqIE9uIFdpbmRvd3MgZGVidWcgYnVpbGRzLCByZWR1Y2UgdGhpcyB2YWx1ZS4KICAqLwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChfREVCVUcpCi0jZGVmaW5lIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIIDE1MDAKKyNkZWZpbmUgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggMTAwMAogI2Vsc2UKICNkZWZpbmUgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggMjAwMAogI2VuZGlmCkBAIC02Niw1NCArNjUsODMgQEAKICAgICBGSUxFICpmcDsKICAgICBpbnQgZXJyb3I7ICAvKiBzZWUgV0ZFUlJfKiB2YWx1ZXMgKi8KICAgICBpbnQgZGVwdGg7Ci0gICAgLyogSWYgZnAgPT0gTlVMTCwgdGhlIGZvbGxvd2luZyBhcmUgdmFsaWQ6ICovCi0gICAgUHlPYmplY3QgKnJlYWRhYmxlOyAgICAvKiBTdHJlYW0tbGlrZSBvYmplY3QgYmVpbmcgcmVhZCBmcm9tICovCiAgICAgUHlPYmplY3QgKnN0cjsKLSAgICBQeU9iamVjdCAqY3VycmVudF9maWxlbmFtZTsKICAgICBjaGFyICpwdHI7CiAgICAgY2hhciAqZW5kOwogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplOwotICAgIFB5T2JqZWN0ICpyZWZzOyAvKiBkaWN0IG9uIG1hcnNoYWwsIGxpc3Qgb24gdW5tYXJzaGFsICovCisgICAgX1B5X2hhc2h0YWJsZV90ICpoYXNodGFibGU7CiAgICAgaW50IHZlcnNpb247CiB9IFdGSUxFOwogCi0jZGVmaW5lIHdfYnl0ZShjLCBwKSBpZiAoKChwKS0+ZnApKSBwdXRjKChjKSwgKHApLT5mcCk7IFwKLSAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgocCktPnB0ciAhPSAocCktPmVuZCkgKihwKS0+cHRyKysgPSAoYyk7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugd19tb3JlKChjKSwgcCkKKyNkZWZpbmUgd19ieXRlKGMsIHApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoKHApLT5wdHIgIT0gKHApLT5lbmQgfHwgd19yZXNlcnZlKChwKSwgMSkpICBcCisgICAgICAgICAgICAqKHApLT5wdHIrKyA9IChjKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlKDApCiAKIHN0YXRpYyB2b2lkCi13X21vcmUoY2hhciBjLCBXRklMRSAqcCkKK3dfZmx1c2goV0ZJTEUgKnApCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplLCBuZXdzaXplOwotICAgIGlmIChwLT5zdHIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuOyAvKiBBbiBlcnJvciBhbHJlYWR5IG9jY3VycmVkICovCi0gICAgc2l6ZSA9IFB5Qnl0ZXNfU2l6ZShwLT5zdHIpOwotICAgIG5ld3NpemUgPSBzaXplICsgc2l6ZSArIDEwMjQ7Ci0gICAgaWYgKG5ld3NpemUgPiAzMioxMDI0KjEwMjQpIHsKLSAgICAgICAgbmV3c2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKTsgICAgICAgICAgIC8qIDEyLjUlIG92ZXJhbGxvY2F0aW9uICovCisgICAgYXNzZXJ0KHAtPmZwICE9IE5VTEwpOworICAgIGZ3cml0ZShwLT5idWYsIDEsIHAtPnB0ciAtIHAtPmJ1ZiwgcC0+ZnApOworICAgIHAtPnB0ciA9IHAtPmJ1ZjsKK30KKworc3RhdGljIGludAord19yZXNlcnZlKFdGSUxFICpwLCBQeV9zc2l6ZV90IG5lZWRlZCkKK3sKKyAgICBQeV9zc2l6ZV90IHBvcywgc2l6ZSwgZGVsdGE7CisgICAgaWYgKHAtPnB0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsgLyogQW4gZXJyb3IgYWxyZWFkeSBvY2N1cnJlZCAqLworICAgIGlmIChwLT5mcCAhPSBOVUxMKSB7CisgICAgICAgIHdfZmx1c2gocCk7CisgICAgICAgIHJldHVybiBuZWVkZWQgPD0gcC0+ZW5kIC0gcC0+cHRyOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZwLT5zdHIsIG5ld3NpemUpICE9IDApIHsKLSAgICAgICAgcC0+cHRyID0gcC0+ZW5kID0gTlVMTDsKKyAgICBhc3NlcnQocC0+c3RyICE9IE5VTEwpOworICAgIHBvcyA9IHAtPnB0ciAtIHAtPmJ1ZjsKKyAgICBzaXplID0gUHlCeXRlc19TaXplKHAtPnN0cik7CisgICAgaWYgKHNpemUgPiAxNioxMDI0KjEwMjQpCisgICAgICAgIGRlbHRhID0gKHNpemUgPj4gMyk7ICAgICAgICAgICAgLyogMTIuNSUgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICBlbHNlCisgICAgICAgIGRlbHRhID0gc2l6ZSArIDEwMjQ7CisgICAgZGVsdGEgPSBQeV9NQVgoZGVsdGEsIG5lZWRlZCk7CisgICAgaWYgKGRlbHRhID4gUFlfU1NJWkVfVF9NQVggLSBzaXplKSB7CisgICAgICAgIHAtPmVycm9yID0gV0ZFUlJfTk9NRU1PUlk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBzaXplICs9IGRlbHRhOworICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnAtPnN0ciwgc2l6ZSkgIT0gMCkgeworICAgICAgICBwLT5wdHIgPSBwLT5idWYgPSBwLT5lbmQgPSBOVUxMOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHAtPnB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopcC0+c3RyKSArIHNpemU7Ci0gICAgICAgIHAtPmVuZCA9Ci0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXAtPnN0cikgKyBuZXdzaXplOwotICAgICAgICAqcC0+cHRyKysgPSBjOworICAgICAgICBwLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhwLT5zdHIpOworICAgICAgICBwLT5wdHIgPSBwLT5idWYgKyBwb3M7CisgICAgICAgIHAtPmVuZCA9IHAtPmJ1ZiArIHNpemU7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KIH0KIAogc3RhdGljIHZvaWQKIHdfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbiwgV0ZJTEUgKnApCiB7CisgICAgUHlfc3NpemVfdCBtOworICAgIGlmICghbiB8fCBwLT5wdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIG0gPSBwLT5lbmQgLSBwLT5wdHI7CiAgICAgaWYgKHAtPmZwICE9IE5VTEwpIHsKLSAgICAgICAgZndyaXRlKHMsIDEsIG4sIHAtPmZwKTsKKyAgICAgICAgaWYgKG4gPD0gbSkgeworICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBwLT5wdHIgKz0gbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHdfZmx1c2gocCk7CisgICAgICAgICAgICBmd3JpdGUocywgMSwgbiwgcC0+ZnApOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB3aGlsZSAoLS1uID49IDApIHsKLSAgICAgICAgICAgIHdfYnl0ZSgqcywgcCk7Ci0gICAgICAgICAgICBzKys7CisgICAgICAgIGlmIChuIDw9IG0gfHwgd19yZXNlcnZlKHAsIG4gLSBtKSkgeworICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBwLT5wdHIgKz0gbjsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE5Miw3ICsyMjAsNyBAQAogICAgIH0KIAogICAgIC8qIHNldCBsIHRvIG51bWJlciBvZiBiYXNlIFB5TG9uZ19NQVJTSEFMX0JBU0UgZGlnaXRzICovCi0gICAgbiA9IEFCUyhQeV9TSVpFKG9iKSk7CisgICAgbiA9IFB5X0FCUyhQeV9TSVpFKG9iKSk7CiAgICAgbCA9IChuLTEpICogUHlMb25nX01BUlNIQUxfUkFUSU87CiAgICAgZCA9IG9iLT5vYl9kaWdpdFtuLTFdOwogICAgIGFzc2VydChkICE9IDApOyAvKiBhIFB5TG9uZyBpcyBhbHdheXMgbm9ybWFsaXplZCAqLwpAQCAtMjI1LDQ2ICsyNTMsMzggQEAKIHN0YXRpYyBpbnQKIHdfcmVmKFB5T2JqZWN0ICp2LCBjaGFyICpmbGFnLCBXRklMRSAqcCkKIHsKLSAgICBQeU9iamVjdCAqaWQ7Ci0gICAgUHlPYmplY3QgKmlkeDsKKyAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OworICAgIGludCB3OwogCi0gICAgaWYgKHAtPnZlcnNpb24gPCAzIHx8IHAtPnJlZnMgPT0gTlVMTCkKKyAgICBpZiAocC0+dmVyc2lvbiA8IDMgfHwgcC0+aGFzaHRhYmxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOyAvKiBub3Qgd3JpdGluZyBvYmplY3QgcmVmZXJlbmNlcyAqLwogCiAgICAgLyogaWYgaXQgaGFzIG9ubHkgb25lIHJlZmVyZW5jZSwgaXQgZGVmaW5pdGVseSBpc24ndCBzaGFyZWQgKi8KICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWQgPSBQeUxvbmdfRnJvbVZvaWRQdHIoKHZvaWQqKXYpOwotICAgIGlmIChpZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycjsKLSAgICBpZHggPSBQeURpY3RfR2V0SXRlbShwLT5yZWZzLCBpZCk7Ci0gICAgaWYgKGlkeCAhPSBOVUxMKSB7CisgICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShwLT5oYXNodGFibGUsIHYpOworICAgIGlmIChlbnRyeSAhPSBOVUxMKSB7CiAgICAgICAgIC8qIHdyaXRlIHRoZSByZWZlcmVuY2UgaW5kZXggdG8gdGhlIHN0cmVhbSAqLwotICAgICAgICBsb25nIHcgPSBQeUxvbmdfQXNMb25nKGlkeCk7Ci0gICAgICAgIFB5X0RFQ1JFRihpZCk7Ci0gICAgICAgIGlmICh3ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICB9CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgJncsIHNpemVvZih3KSwgZW50cnkpOwogICAgICAgICAvKiB3ZSBkb24ndCBzdG9yZSAibG9uZyIgaW5kaWNlcyBpbiB0aGUgZGljdCAqLwogICAgICAgICBhc3NlcnQoMCA8PSB3ICYmIHcgPD0gMHg3ZmZmZmZmZik7CiAgICAgICAgIHdfYnl0ZShUWVBFX1JFRiwgcCk7CiAgICAgICAgIHdfbG9uZyh3LCBwKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaW50IG9rOwotICAgICAgICBQeV9zc2l6ZV90IHMgPSBQeURpY3RfU2l6ZShwLT5yZWZzKTsKKyAgICAgICAgc2l6ZV90IHMgPSBwLT5oYXNodGFibGUtPmVudHJpZXM7CiAgICAgICAgIC8qIHdlIGRvbid0IHN1cHBvcnQgbG9uZyBpbmRpY2VzICovCiAgICAgICAgIGlmIChzID49IDB4N2ZmZmZmZmYpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidG9vIG1hbnkgb2JqZWN0cyIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KLSAgICAgICAgaWR4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHMpOwotICAgICAgICBvayA9IGlkeCAmJiBQeURpY3RfU2V0SXRlbShwLT5yZWZzLCBpZCwgaWR4KSA9PSAwOwotICAgICAgICBQeV9ERUNSRUYoaWQpOwotICAgICAgICBQeV9YREVDUkVGKGlkeCk7Ci0gICAgICAgIGlmICghb2spCisgICAgICAgIHcgPSAoaW50KXM7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgaWYgKF9QeV9IQVNIVEFCTEVfU0VUKHAtPmhhc2h0YWJsZSwgdiwgdykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQogICAgICAgICAqZmxhZyB8PSBGTEFHX1JFRjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNTQ3LDM3ICs1NjcsODEgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBpbnQKK3dfaW5pdF9yZWZzKFdGSUxFICp3ZiwgaW50IHZlcnNpb24pCit7CisgICAgaWYgKHZlcnNpb24gPj0gMykgeworICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKGludCksIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKKyAgICAgICAgaWYgKHdmLT5oYXNodGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAord19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQoreworICAgIFB5X1hERUNSRUYoZW50cnktPmtleSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCit3X2NsZWFyX3JlZnMoV0ZJTEUgKndmKQoreworICAgIGlmICh3Zi0+aGFzaHRhYmxlICE9IE5VTEwpIHsKKyAgICAgICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoKHdmLT5oYXNodGFibGUsIHdfZGVjcmVmX2VudHJ5LCBOVUxMKTsKKyAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHdmLT5oYXNodGFibGUpOworICAgIH0KK30KKwogLyogdmVyc2lvbiBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCBmb3Igd3JpdGluZyBpbnRzLiAqLwogdm9pZAogUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZShsb25nIHgsIEZJTEUgKmZwLCBpbnQgdmVyc2lvbikKIHsKKyAgICBjaGFyIGJ1Zls0XTsKICAgICBXRklMRSB3ZjsKKyAgICBtZW1zZXQoJndmLCAwLCBzaXplb2Yod2YpKTsKICAgICB3Zi5mcCA9IGZwOworICAgIHdmLnB0ciA9IHdmLmJ1ZiA9IGJ1ZjsKKyAgICB3Zi5lbmQgPSB3Zi5wdHIgKyBzaXplb2YoYnVmKTsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwotICAgIHdmLmRlcHRoID0gMDsKLSAgICB3Zi5yZWZzID0gTlVMTDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB3X2xvbmcoeCwgJndmKTsKKyAgICB3X2ZsdXNoKCZ3Zik7CiB9CiAKIHZvaWQKIFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvRmlsZShQeU9iamVjdCAqeCwgRklMRSAqZnAsIGludCB2ZXJzaW9uKQogeworICAgIGNoYXIgYnVmW0JVRlNJWl07CiAgICAgV0ZJTEUgd2Y7CisgICAgbWVtc2V0KCZ3ZiwgMCwgc2l6ZW9mKHdmKSk7CiAgICAgd2YuZnAgPSBmcDsKKyAgICB3Zi5wdHIgPSB3Zi5idWYgPSBidWY7CisgICAgd2YuZW5kID0gd2YucHRyICsgc2l6ZW9mKGJ1Zik7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKLSAgICB3Zi5kZXB0aCA9IDA7Ci0gICAgaWYgKHZlcnNpb24gPj0gMykgewotICAgICAgICBpZiAoKHdmLnJlZnMgPSBQeURpY3RfTmV3KCkpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm47IC8qIGNhbGxlciBtdXNoIGNoZWNrIFB5RXJyX09jY3VycmVkKCkgKi8KLSAgICB9IGVsc2UKLSAgICAgICAgd2YucmVmcyA9IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CisgICAgaWYgKHdfaW5pdF9yZWZzKCZ3ZiwgdmVyc2lvbikpCisgICAgICAgIHJldHVybjsgLyogY2FsbGVyIG11c2ggY2hlY2sgUHlFcnJfT2NjdXJyZWQoKSAqLwogICAgIHdfb2JqZWN0KHgsICZ3Zik7Ci0gICAgUHlfWERFQ1JFRih3Zi5yZWZzKTsKKyAgICB3X2NsZWFyX3JlZnMoJndmKTsKKyAgICB3X2ZsdXNoKCZ3Zik7CiB9CiAKLXR5cGVkZWYgV0ZJTEUgUkZJTEU7IC8qIFNhbWUgc3RydWN0IHdpdGggZGlmZmVyZW50IGludmFyaWFudHMgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBGSUxFICpmcDsKKyAgICBpbnQgZGVwdGg7CisgICAgUHlPYmplY3QgKnJlYWRhYmxlOyAgLyogU3RyZWFtLWxpa2Ugb2JqZWN0IGJlaW5nIHJlYWQgZnJvbSAqLworICAgIFB5T2JqZWN0ICpjdXJyZW50X2ZpbGVuYW1lOworICAgIGNoYXIgKnB0cjsKKyAgICBjaGFyICplbmQ7CisgICAgY2hhciAqYnVmOworICAgIFB5X3NzaXplX3QgYnVmX3NpemU7CisgICAgUHlPYmplY3QgKnJlZnM7ICAvKiBhIGxpc3QgKi8KK30gUkZJTEU7CiAKIHN0YXRpYyBjaGFyICoKIHJfc3RyaW5nKFB5X3NzaXplX3QgbiwgUkZJTEUgKnApCkBAIC03MjcsOCArNzkxLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgc2l6ZSA9IDEgKyAoQUJTKG4pIC0gMSkgLyBQeUxvbmdfTUFSU0hBTF9SQVRJTzsKLSAgICBzaG9ydHNfaW5fdG9wX2RpZ2l0ID0gMSArIChBQlMobikgLSAxKSAlIFB5TG9uZ19NQVJTSEFMX1JBVElPOworICAgIHNpemUgPSAxICsgKFB5X0FCUyhuKSAtIDEpIC8gUHlMb25nX01BUlNIQUxfUkFUSU87CisgICAgc2hvcnRzX2luX3RvcF9kaWdpdCA9IDEgKyAoUHlfQUJTKG4pIC0gMSkgJSBQeUxvbmdfTUFSU0hBTF9SQVRJTzsKICAgICBvYiA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChvYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0MTcsMTggKzE0ODEsMjAgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi0jaWZkZWYgSEFWRV9GU1RBVAotLyogUmV0dXJuIHNpemUgb2YgZmlsZSBpbiBieXRlczsgPCAwIGlmIHVua25vd24uICovCisvKiBSZXR1cm4gc2l6ZSBvZiBmaWxlIGluIGJ5dGVzOyA8IDAgaWYgdW5rbm93biBvciBJTlRfTUFYIGlmIHRvbyBiaWcgKi8KIHN0YXRpYyBvZmZfdAogZ2V0ZmlsZXNpemUoRklMRSAqZnApCiB7Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdCkgIT0gMCkKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oZnApLCAmc3QpICE9IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBzdC5zdF9zaXplOwotfQorI2lmIFNJWkVPRl9PRkZfVCA9PSA0CisgICAgZWxzZSBpZiAoc3Quc3Rfc2l6ZSA+PSBJTlRfTUFYKQorICAgICAgICByZXR1cm4gKG9mZl90KUlOVF9NQVg7CiAjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAob2ZmX3Qpc3Quc3Rfc2l6ZTsKK30KIAogLyogSWYgd2UgY2FuIGdldCB0aGUgc2l6ZSBvZiB0aGUgZmlsZSB1cC1mcm9udCwgYW5kIGl0J3MgcmVhc29uYWJseSBzbWFsbCwKICAqIHJlYWQgaXQgaW4gb25lIGd1bHAgYW5kIGRlbGVnYXRlIHRvIC4uLkZyb21TdHJpbmcoKSBpbnN0ZWFkLiAgTXVjaCBxdWlja2VyCkBAIC0xNDQxLDcgKzE1MDcsNiBAQAogewogLyogUkVBU09OQUJMRV9GSUxFX0xJTUlUIGlzIGJ5IGRlZm4gc29tZXRoaW5nIGJpZyBlbm91Z2ggZm9yIFRraW50ZXIucHljLiAqLwogI2RlZmluZSBSRUFTT05BQkxFX0ZJTEVfTElNSVQgKDFMIDw8IDE4KQotI2lmZGVmIEhBVkVfRlNUQVQKICAgICBvZmZfdCBmaWxlc2l6ZTsKICAgICBmaWxlc2l6ZSA9IGdldGZpbGVzaXplKGZwKTsKICAgICBpZiAoZmlsZXNpemUgPiAwICYmIGZpbGVzaXplIDw9IFJFQVNPTkFCTEVfRklMRV9MSU1JVCkgewpAQCAtMTQ1NCw3ICsxNTE5LDYgQEAKICAgICAgICAgfQogCiAgICAgfQotI2VuZGlmCiAgICAgLyogV2UgZG9uJ3QgaGF2ZSBmc3RhdCwgb3Igd2UgZG8gYnV0IHRoZSBmaWxlIGlzIGxhcmdlciB0aGFuCiAgICAgICogUkVBU09OQUJMRV9GSUxFX0xJTUlUIG9yIG1hbGxvYyBmYWlsZWQgLS0gcmVhZCBhIGJ5dGUgYXQgYSB0aW1lLgogICAgICAqLwpAQCAtMTUxMSwyNSArMTU3NSwyMCBAQAogewogICAgIFdGSUxFIHdmOwogCi0gICAgd2YuZnAgPSBOVUxMOwotICAgIHdmLnJlYWRhYmxlID0gTlVMTDsKKyAgICBtZW1zZXQoJndmLCAwLCBzaXplb2Yod2YpKTsKICAgICB3Zi5zdHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgNTApOwogICAgIGlmICh3Zi5zdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2YucHRyID0gUHlCeXRlc19BU19TVFJJTkcoKFB5Qnl0ZXNPYmplY3QgKil3Zi5zdHIpOworICAgIHdmLnB0ciA9IHdmLmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopd2Yuc3RyKTsKICAgICB3Zi5lbmQgPSB3Zi5wdHIgKyBQeUJ5dGVzX1NpemUod2Yuc3RyKTsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwotICAgIHdmLmRlcHRoID0gMDsKICAgICB3Zi52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICBpZiAodmVyc2lvbiA+PSAzKSB7Ci0gICAgICAgIGlmICgod2YucmVmcyA9IFB5RGljdF9OZXcoKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHdmLnN0cik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICB3Zi5yZWZzID0gTlVMTDsKKyAgICBpZiAod19pbml0X3JlZnMoJndmLCB2ZXJzaW9uKSkgeworICAgICAgICBQeV9ERUNSRUYod2Yuc3RyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHdfb2JqZWN0KHgsICZ3Zik7Ci0gICAgUHlfWERFQ1JFRih3Zi5yZWZzKTsKKyAgICB3X2NsZWFyX3JlZnMoJndmKTsKICAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKICAgICAgICAgY2hhciAqYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopd2Yuc3RyKTsKICAgICAgICAgaWYgKHdmLnB0ciAtIGJhc2UgPiBQWV9TU0laRV9UX01BWCkgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmggYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAppbmRleCBmOTBhMTdhLi4xOTI1OWUxIDEwMDY0NAotLS0gYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAorKysgYi9QeXRob24vb3Bjb2RlX3RhcmdldHMuaApAQCAtMTUsOCArMTUsOCBAQAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1VOQVJZX0lOVkVSVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9CSU5BUllfTUFUUklYX01VTFRJUExZLAorICAgICYmVEFSR0VUX0lOUExBQ0VfTUFUUklYX01VTFRJUExZLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX0JJTkFSWV9QT1dFUiwKICAgICAmJlRBUkdFVF9CSU5BUllfTVVMVElQTFksCkBAIC00OSwxMSArNDksMTEgQEAKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9HRVRfQUlURVIsCisgICAgJiZUQVJHRVRfR0VUX0FORVhULAorICAgICYmVEFSR0VUX0JFRk9SRV9BU1lOQ19XSVRILAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmVEFSR0VUX1NUT1JFX01BUCwKICAgICAmJlRBUkdFVF9JTlBMQUNFX0FERCwKICAgICAmJlRBUkdFVF9JTlBMQUNFX1NVQlRSQUNULAogICAgICYmVEFSR0VUX0lOUExBQ0VfTVVMVElQTFksCkBAIC02OCwxMSArNjgsMTEgQEAKICAgICAmJlRBUkdFVF9CSU5BUllfT1IsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9QT1dFUiwKICAgICAmJlRBUkdFVF9HRVRfSVRFUiwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9HRVRfWUlFTERfRlJPTV9JVEVSLAogICAgICYmVEFSR0VUX1BSSU5UX0VYUFIsCiAgICAgJiZUQVJHRVRfTE9BRF9CVUlMRF9DTEFTUywKICAgICAmJlRBUkdFVF9ZSUVMRF9GUk9NLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0dFVF9BV0FJVEFCTEUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9MU0hJRlQsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9SU0hJRlQsCkBAIC04MCw4ICs4MCw4IEBACiAgICAgJiZUQVJHRVRfSU5QTEFDRV9YT1IsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9PUiwKICAgICAmJlRBUkdFVF9CUkVBS19MT09QLAotICAgICYmVEFSR0VUX1dJVEhfQ0xFQU5VUCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9XSVRIX0NMRUFOVVBfU1RBUlQsCisgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCkBAIC0xNDgsMTIgKzE0OCwxMiBAQAogICAgICYmVEFSR0VUX1NFVF9BREQsCiAgICAgJiZUQVJHRVRfTUFQX0FERCwKICAgICAmJlRBUkdFVF9MT0FEX0NMQVNTREVSRUYsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfQlVJTERfTElTVF9VTlBBQ0ssCisgICAgJiZUQVJHRVRfQlVJTERfTUFQX1VOUEFDSywKKyAgICAmJlRBUkdFVF9CVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwKKyAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0ssCisgICAgJiZUQVJHRVRfQlVJTERfU0VUX1VOUEFDSywKKyAgICAmJlRBUkdFVF9TRVRVUF9BU1lOQ19XSVRILAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCBjNTZjOGZjLi41OWFkM2I3IDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtMTgsNyArMTgsMTEgQEAKICAgICB8fCBvcD09SlVNUF9JRl9GQUxTRV9PUl9QT1AgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCiAjZGVmaW5lIEpVTVBTX09OX1RSVUUob3ApIChvcD09UE9QX0pVTVBfSUZfVFJVRSB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgR0VUSlVNUFRHVChhcnIsIGkpIChHRVRBUkcoYXJyLGkpICsgKEFCU09MVVRFX0pVTVAoYXJyW2ldKSA/IDAgOiBpKzMpKQotI2RlZmluZSBTRVRBUkcoYXJyLCBpLCB2YWwpIGFycltpKzJdID0gdmFsPj44OyBhcnJbaSsxXSA9IHZhbCAmIDI1NQorI2RlZmluZSBTRVRBUkcoYXJyLCBpLCB2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFzc2VydCgwIDw9IHZhbCAmJiB2YWwgPD0gMHhmZmZmKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGFycltpKzJdID0gKHVuc2lnbmVkIGNoYXIpKCgodW5zaWduZWQgaW50KXZhbCk+PjgpOyAgICAgXAorICAgIGFycltpKzFdID0gKHVuc2lnbmVkIGNoYXIpKCgodW5zaWduZWQgaW50KXZhbCkgJiAyNTUpOyAgXAorfSB3aGlsZSgwKQogI2RlZmluZSBDT0RFU0laRShvcCkgIChIQVNfQVJHKG9wKSA/IDMgOiAxKQogI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgYnl0ZXMpIFwKICAgICAoYmxvY2tzW3N0YXJ0XT09YmxvY2tzW3N0YXJ0K2J5dGVzLTFdKQpAQCAtMzE1LDYgKzMxOSw3IEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgICAgICBqID0gR0VUSlVNUFRHVChjb2RlLCBpKTsKICAgICAgICAgICAgICAgICBibG9ja3Nbal0gPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU1LDcgKzM2MCw4IEBACiAgICAgdW5zaWduZWQgY2hhciAqY29kZXN0ciA9IE5VTEw7CiAgICAgdW5zaWduZWQgY2hhciAqbGluZW5vOwogICAgIGludCAqYWRkcm1hcCA9IE5VTEw7Ci0gICAgaW50IG5ld19saW5lLCBjdW1fb3JpZ19saW5lLCBsYXN0X2xpbmUsIHRhYnNpejsKKyAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZTsKKyAgICBQeV9zc2l6ZV90IHRhYnNpejsKICAgICBQeU9iamVjdCAqKmNvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90ICpsb2FkX2NvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3RvcCA9IC0xOwpAQCAtNjE1LDYgKzYyMSw3IEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgICAgICB0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOwogICAgICAgICAgICAgICAgIC8qIFJlcGxhY2UgSlVNUF8qIHRvIGEgUkVUVVJOIGludG8ganVzdCBhIFJFVFVSTiAqLwogICAgICAgICAgICAgICAgIGlmIChVTkNPTkRJVElPTkFMX0pVTVAob3Bjb2RlKSAmJgpAQCAtNjYwLDcgKzY2Nyw4IEBACiAKICAgICAvKiBGaXh1cCBsaW5lbm90YWIgKi8KICAgICBmb3IgKGk9MCwgbm9wcz0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgewotICAgICAgICBhZGRybWFwW2ldID0gaSAtIG5vcHM7CisgICAgICAgIGFzc2VydChpIC0gbm9wcyA8PSBJTlRfTUFYKTsKKyAgICAgICAgYWRkcm1hcFtpXSA9IChpbnQpKGkgLSBub3BzKTsKICAgICAgICAgaWYgKGNvZGVzdHJbaV0gPT0gTk9QKQogICAgICAgICAgICAgbm9wcysrOwogICAgIH0KQEAgLTY5OCw2ICs3MDYsNyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9FWENFUFQ6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpICsgaSArIDNdIC0gYWRkcm1hcFtpXSAtIDM7CiAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIGopOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5ZnBlLmMgYi9QeXRob24vcHlmcGUuYwppbmRleCA0YjdmNWJhLi5hYjBlZjgzIDEwMDY0NAotLS0gYS9QeXRob24vcHlmcGUuYworKysgYi9QeXRob24vcHlmcGUuYwpAQCAtMSw2ICsxLDYgQEAKICNpbmNsdWRlICJweWNvbmZpZy5oIgogI2luY2x1ZGUgInB5ZnBlLmgiCi0vKiAKKy8qCiAgKiBUaGUgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR0ZQRSBpcyBhY3R1YWxseSBkZWNsYXJlZCBpbiBhbiBleHRlcm5hbAogICogbW9kdWxlIGZwZWN0bCwgb3IgYXMgcHJlZmVycmVkIGJ5IHRoZSB1c2VyLiAgVGhlc2UgdmFyaWFibGUKICAqIGRlZmluaXRpb25zIGFyZSByZXF1aXJlZCBpbiBvcmRlciB0byBjb21waWxlIFB5dGhvbiB3aXRob3V0CkBAIC0xMyw3ICsxMyw3IEBACiBpbnQgUHlGUEVfY291bnRlciA9IDA7CiAjZW5kaWYKIAotLyogSGF2ZSB0aGlzIG91dHNpZGUgdGhlIGFib3ZlICNpZmRlZiwgc2luY2Ugc29tZSBwaWNreSBBTlNJIGNvbXBpbGVycyBpc3N1ZSBhIAorLyogSGF2ZSB0aGlzIG91dHNpZGUgdGhlIGFib3ZlICNpZmRlZiwgc2luY2Ugc29tZSBwaWNreSBBTlNJIGNvbXBpbGVycyBpc3N1ZSBhCiAgICB3YXJuaW5nIHdoZW4gY29tcGlsaW5nIGFuIGVtcHR5IGZpbGUuICovCiAKIGRvdWJsZQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5bGlmZWN5Y2xlLmMgYi9QeXRob24vcHlsaWZlY3ljbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjVlZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKQEAgLTAsMCArMSwxNTgyIEBACisvKiBQeXRob24gaW50ZXJwcmV0ZXIgdG9wLWxldmVsIHJvdXRpbmVzLCBpbmNsdWRpbmcgaW5pdC9leGl0ICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2luY2x1ZGUgIlB5dGhvbi1hc3QuaCIKKyN1bmRlZiBZaWVsZCAvKiB1bmRlZmluZSBtYWNybyBjb25mbGljdGluZyB3aXRoIHdpbmJhc2UuaCAqLworI2luY2x1ZGUgImdyYW1tYXIuaCIKKyNpbmNsdWRlICJub2RlLmgiCisjaW5jbHVkZSAidG9rZW4uaCIKKyNpbmNsdWRlICJwYXJzZXRvay5oIgorI2luY2x1ZGUgImVycmNvZGUuaCIKKyNpbmNsdWRlICJjb2RlLmgiCisjaW5jbHVkZSAic3ltdGFibGUuaCIKKyNpbmNsdWRlICJhc3QuaCIKKyNpbmNsdWRlICJtYXJzaGFsLmgiCisjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKyNpZmRlZiBIQVZFX1NJR05BTF9ICisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJtYWxsb2MuaCIgLyogZm9yIGFsbG9jYSAqLworI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKKyNpbmNsdWRlIDxsYW5naW5mby5oPgorI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisjdW5kZWYgQllURQorI2luY2x1ZGUgIndpbmRvd3MuaCIKKyNlbmRpZgorCitfUHlfSURFTlRJRklFUihmbHVzaCk7CitfUHlfSURFTlRJRklFUihuYW1lKTsKK19QeV9JREVOVElGSUVSKHN0ZGluKTsKK19QeV9JREVOVElGSUVSKHN0ZG91dCk7CitfUHlfSURFTlRJRklFUihzdGRlcnIpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2V4dGVybiB3Y2hhcl90ICpQeV9HZXRQYXRoKHZvaWQpOworCitleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCisKKy8qIEZvcndhcmQgKi8KK3N0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKK3N0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOworc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7CitzdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKK3N0YXRpYyB2b2lkIGluaXRzaWdzKHZvaWQpOworc3RhdGljIHZvaWQgY2FsbF9weV9leGl0ZnVuY3Modm9pZCk7CitzdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7CitzdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBfUHlGYXVsdGhhbmRsZXJfRmluaSh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUhhc2hfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfSW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECitleHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqLCBQeVRocmVhZFN0YXRlICopOworZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfRmluaSh2b2lkKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisvKiBHbG9iYWwgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYXJlIGluIHB5ZGVidWcuaCAqLworLyogWFhYIChuY29naGxhbik6IG1vdmUgdGhvc2UgZGVjbGFyYXRpb25zIHRvIHB5bGlmZWN5Y2xlLmg/ICovCitpbnQgUHlfRGVidWdGbGFnOyAvKiBOZWVkZWQgYnkgcGFyc2VyLmMgKi8KK2ludCBQeV9WZXJib3NlRmxhZzsgLyogTmVlZGVkIGJ5IGltcG9ydC5jICovCitpbnQgUHlfUXVpZXRGbGFnOyAvKiBOZWVkZWQgYnkgc3lzbW9kdWxlLmMgKi8KK2ludCBQeV9JbnRlcmFjdGl2ZUZsYWc7IC8qIE5lZWRlZCBieSBQeV9GZElzSW50ZXJhY3RpdmUoKSBiZWxvdyAqLworaW50IFB5X0luc3BlY3RGbGFnOyAvKiBOZWVkZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gZXhpdCBhdCBTeXN0ZW1FeGl0ICovCitpbnQgUHlfT3B0aW1pemVGbGFnID0gMDsgLyogTmVlZGVkIGJ5IGNvbXBpbGUuYyAqLworaW50IFB5X05vU2l0ZUZsYWc7IC8qIFN1cHByZXNzICdpbXBvcnQgc2l0ZScgKi8KK2ludCBQeV9CeXRlc1dhcm5pbmdGbGFnOyAvKiBXYXJuIG9uIHN0cihieXRlcykgYW5kIHN0cihidWZmZXIpICovCitpbnQgUHlfVXNlQ2xhc3NFeGNlcHRpb25zRmxhZyA9IDE7IC8qIE5lZWRlZCBieSBibHRpbm1vZHVsZS5jOiBkZXByZWNhdGVkICovCitpbnQgUHlfRnJvemVuRmxhZzsgLyogTmVlZGVkIGJ5IGdldHBhdGguYyAqLworaW50IFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsgLyogZS5nLiBQWVRIT05QQVRILCBQWVRIT05IT01FICovCitpbnQgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOyAvKiBTdXBwcmVzcyB3cml0aW5nIGJ5dGVjb2RlIGZpbGVzICgqLnB5W2NvXSkgKi8KK2ludCBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5ID0gMDsgLyogZm9yIC1zIGFuZCBzaXRlLnB5ICovCitpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLworaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KK2ludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisKK1B5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKKworLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIG9iamVjdCBmaWxlcyAqLworaW50ICgqX1B5T1NfbXlzdHJuaWNtcF9oYWNrKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCkgPSBcCisgICAgUHlPU19teXN0cm5pY21wOyAvKiBQeXRob24vcHlzdHJjbXAubyAqLworCisvKiBQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFzIG9mIDIuNgorc2luY2UgX3dhcm5pbmdzIGlzIGJ1aWx0aW4uICBUaGlzIEFQSSBzaG91bGQgbm90IGJlIHVzZWQuICovCitQeU9iamVjdCAqCitQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSh2b2lkKQoreworICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Cit9CisKK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOworCisvKiBBUEkgdG8gYWNjZXNzIHRoZSBpbml0aWFsaXplZCBmbGFnIC0tIHVzZWZ1bCBmb3IgZXNvdGVyaWMgdXNlICovCisKK2ludAorUHlfSXNJbml0aWFsaXplZCh2b2lkKQoreworICAgIHJldHVybiBpbml0aWFsaXplZDsKK30KKworLyogSGVscGVyIHRvIGFsbG93IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiB0byBvdmVycmlkZSB0aGUgbm9ybWFsCisgKiBtZWNoYW5pc20gdGhhdCBhdHRlbXB0cyB0byBmaWd1cmUgb3V0IGFuIGFwcHJvcHJpYXRlIElPIGVuY29kaW5nCisgKi8KKworc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKK3N0YXRpYyBjaGFyICpfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOworCitpbnQKK1B5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBpZiAoUHlfSXNJbml0aWFsaXplZCgpKSB7CisgICAgICAgIC8qIFRoaXMgaXMgdG9vIGxhdGUgdG8gaGF2ZSBhbnkgZWZmZWN0ICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyogQ2FuJ3QgY2FsbCBQeUVycl9Ob01lbW9yeSgpIG9uIGVycm9ycywgYXMgUHl0aG9uIGhhc24ndCBiZWVuCisgICAgICogaW5pdGlhbGlzZWQgeWV0LgorICAgICAqCisgICAgICogSG93ZXZlciwgdGhlIHJhdyBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgaW5pdGlhbGlzZWQgYXBwcm9wcmlhdGVseQorICAgICAqIGFzIEMgc3RhdGljIHZhcmlhYmxlcywgc28gX1B5TWVtX1Jhd1N0cmR1cCBpcyBPSyBldmVuIHRob3VnaAorICAgICAqIFB5X0luaXRpYWxpemUgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4KKyAgICAgKi8KKyAgICBpZiAoZW5jb2RpbmcpIHsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBfUHlNZW1fUmF3U3RyZHVwKGVuY29kaW5nKTsKKyAgICAgICAgaWYgKCFfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgeworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorICAgIGlmIChlcnJvcnMpIHsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gX1B5TWVtX1Jhd1N0cmR1cChlcnJvcnMpOworICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICAgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAorICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcworICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQorICAgYmVlbiBjcmVhdGVkLgorCisgICBMb2NraW5nOiB5b3UgbXVzdCBob2xkIHRoZSBpbnRlcnByZXRlciBsb2NrIHdoaWxlIGNhbGxpbmcgdGhpcy4KKyAgIChJZiB0aGUgbG9jayBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCB0aGF0J3MgZXF1aXZhbGVudCB0bworICAgaGF2aW5nIHRoZSBsb2NrLCBidXQgeW91IGNhbm5vdCB1c2UgbXVsdGlwbGUgdGhyZWFkcy4pCisKKyovCisKK3N0YXRpYyBpbnQKK2FkZF9mbGFnKGludCBmbGFnLCBjb25zdCBjaGFyICplbnZzKQoreworICAgIGludCBlbnYgPSBhdG9pKGVudnMpOworICAgIGlmIChmbGFnIDwgZW52KQorICAgICAgICBmbGFnID0gZW52OworICAgIGlmIChmbGFnIDwgMSkKKyAgICAgICAgZmxhZyA9IDE7CisgICAgcmV0dXJuIGZsYWc7Cit9CisKK3N0YXRpYyBjaGFyKgorZ2V0X2NvZGVjX25hbWUoY29uc3QgY2hhciAqZW5jb2RpbmcpCit7CisgICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7CisgICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7CisKKyAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7CisgICAgaWYgKCFjb2RlYykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKKyAgICBQeV9DTEVBUihjb2RlYyk7CisgICAgaWYgKCFuYW1lKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gbmFtZV9zdHI7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoY29kZWMpOworICAgIFB5X1hERUNSRUYobmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjaGFyKgorZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBjaGFyIGNvZGVwYWdlWzEwMF07CisgICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCisgICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOworICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKKyNlbHNlCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAoraW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCit7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKKyAgICBQeU9iamVjdCAqaW1wbW9kOworICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCisgICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7CisgICAgfQorICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOworICAgIH0KKyAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOworCisgICAgLyogSW1wb3J0IHRoZSBfaW1wIG1vZHVsZSAqLworICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKKyAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IF9pbXAiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgX2ltcCAjIGJ1aWx0aW5cbiIpOworICAgIH0KKyAgICBzeXNfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKyAgICBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgc3lzICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhzeXNfbW9kdWxlcywgIl9pbXAiLCBpbXBtb2QpIDwgMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzYXZlIF9pbXAgdG8gc3lzLm1vZHVsZXMiKTsKKyAgICB9CisKKyAgICAvKiBJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0ICovCisgICAgdmFsdWUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGltcG9ydGxpYiwgIl9pbnN0YWxsIiwgIk9PIiwgc3lzbW9kLCBpbXBtb2QpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGltcG9ydGxpYiBpbnN0YWxsIGZhaWxlZCIpOworICAgIH0KKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihpbXBtb2QpOworCisgICAgX1B5SW1wb3J0WmlwX0luaXQoKTsKK30KKworCit2b2lkCitfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50IGluc3RhbGxfc2lncywgaW50IGluc3RhbGxfaW1wb3J0bGliKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2QsICpwc3RkZXJyOworICAgIGNoYXIgKnA7CisgICAgZXh0ZXJuIHZvaWQgX1B5X1JlYWR5VHlwZXModm9pZCk7CisKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IDE7CisgICAgX1B5X0ZpbmFsaXppbmcgPSBOVUxMOworCisjaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoSEFWRV9TRVRMT0NBTEUpCisgICAgLyogU2V0IHVwIHRoZSBMQ19DVFlQRSBsb2NhbGUsIHNvIHdlIGNhbiBvYnRhaW4KKyAgICAgICB0aGUgbG9jYWxlJ3MgY2hhcnNldCB3aXRob3V0IGhhdmluZyB0byBzd2l0Y2gKKyAgICAgICBsb2NhbGVzLiAqLworICAgIHNldGxvY2FsZShMQ19DVFlQRSwgIiIpOworI2VuZGlmCisKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkRFQlVHIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0RlYnVnRmxhZyA9IGFkZF9mbGFnKFB5X0RlYnVnRmxhZywgcCk7CisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05WRVJCT1NFIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X1ZlcmJvc2VGbGFnID0gYWRkX2ZsYWcoUHlfVmVyYm9zZUZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OT1BUSU1JWkUiKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gYWRkX2ZsYWcoUHlfT3B0aW1pemVGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZyA9IGFkZF9mbGFnKFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZywgcCk7CisgICAgLyogVGhlIHZhcmlhYmxlIGlzIG9ubHkgdGVzdGVkIGZvciBleGlzdGVuY2UgaGVyZTsgX1B5UmFuZG9tX0luaXQgd2lsbAorICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gYWRkX2ZsYWcoUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnLCBwKTsKKworICAgIF9QeVJhbmRvbV9Jbml0KCk7CisKKyAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CisgICAgaWYgKGludGVycCA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIGZpcnN0IGludGVycHJldGVyIik7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05ldyhpbnRlcnApOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCB0aHJlYWQiKTsKKyAgICAodm9pZCkgUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplIGJlY2F1c2UKKyAgICAgICBkZXN0cm95aW5nIHRoZSBHSUwgbWlnaHQgZmFpbCB3aGVuIGl0IGlzIGJlaW5nIHJlZmVyZW5jZWQgZnJvbQorICAgICAgIGFub3RoZXIgcnVubmluZyB0aHJlYWQgKHNlZSBpc3N1ZSAjOTkwMSkuCisgICAgICAgSW5zdGVhZCB3ZSBkZXN0cm95IHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgR0lMIGhlcmUsIHdoaWNoIGVuc3VyZXMKKyAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZSBtdWx0aXBsZSB0aW1lcy4gKi8KKyAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7CisKKyAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KKyAgICBfUHlHSUxTdGF0ZV9Jbml0KGludGVycCwgdHN0YXRlKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisgICAgX1B5X1JlYWR5VHlwZXMoKTsKKworICAgIGlmICghX1B5RnJhbWVfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGZyYW1lcyIpOworCisgICAgaWYgKCFfUHlMb25nX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBsb25ncyIpOworCisgICAgaWYgKCFQeUJ5dGVBcnJheV9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgYnl0ZWFycmF5Iik7CisKKyAgICBpZiAoIV9QeUZsb2F0X0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmbG9hdCIpOworCisgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzIGRpY3Rpb25hcnkiKTsKKworICAgIC8qIEluaXQgVW5pY29kZSBpbXBsZW1lbnRhdGlvbjsgcmVsaWVzIG9uIHRoZSBjb2RlYyByZWdpc3RyeSAqLworICAgIGlmIChfUHlVbmljb2RlX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdW5pY29kZSIpOworICAgIGlmIChfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN0cnVjdHNlcSIpOworCisgICAgYmltb2QgPSBfUHlCdWlsdGluX0luaXQoKTsKKyAgICBpZiAoYmltb2QgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBidWlsdGlucyBtb2R1bGVzIik7CisgICAgX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbihiaW1vZCwgImJ1aWx0aW5zIik7CisgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOworICAgIGlmIChpbnRlcnAtPmJ1aWx0aW5zID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgZGljdCIpOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKKworICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCisgICAgX1B5RXhjX0luaXQoYmltb2QpOworCisgICAgc3lzbW9kID0gX1B5U3lzX0luaXQoKTsKKyAgICBpZiAoc3lzbW9kID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIik7CisgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOworICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgZGljdCIpOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPnN5c2RpY3QpOworICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oc3lzbW9kLCAic3lzIik7CisgICAgUHlTeXNfU2V0UGF0aChQeV9HZXRQYXRoKCkpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGludGVycC0+c3lzZGljdCwgIm1vZHVsZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7CisKKyAgICAvKiBTZXQgdXAgYSBwcmVsaW1pbmFyeSBzdGRlcnIgcHJpbnRlciB1bnRpbCB3ZSBoYXZlIGVub3VnaAorICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLworICAgIHBzdGRlcnIgPSBQeUZpbGVfTmV3U3RkUHJpbnRlcihmaWxlbm8oc3RkZXJyKSk7CisgICAgaWYgKHBzdGRlcnIgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOworICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHBzdGRlcnIpOworICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRlcnJfXyIsIHBzdGRlcnIpOworICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKKworICAgIF9QeUltcG9ydF9Jbml0KCk7CisKKyAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CisKKyAgICAvKiBJbml0aWFsaXplIF93YXJuaW5ncy4gKi8KKyAgICBfUHlXYXJuaW5nc19Jbml0KCk7CisKKyAgICBpZiAoIWluc3RhbGxfaW1wb3J0bGliKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX1B5VGltZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHRpbWUiKTsKKworICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKworICAgIC8qIGluaXRpYWxpemUgdGhlIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBpZiAoX1B5RmF1bHRoYW5kbGVyX0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBmYXVsdGhhbmRsZXIiKTsKKworICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogdW5hYmxlIHRvIGxvYWQgdGhlIGZpbGUgc3lzdGVtIGNvZGVjIik7CisKKyAgICBpZiAoaW5zdGFsbF9zaWdzKQorICAgICAgICBpbml0c2lncygpOyAvKiBTaWduYWwgaGFuZGxpbmcgc3R1ZmYsIGluY2x1ZGluZyBpbml0aW50cigpICovCisKKyAgICBpZiAoX1B5VHJhY2VNYWxsb2NfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB0cmFjZW1hbGxvYyIpOworCisgICAgaW5pdG1haW4oaW50ZXJwKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCisgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigKKyAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CisKKyAgICAvKiBJbml0aWFsaXplIHdhcm5pbmdzLiAqLworICAgIGlmIChQeVN5c19IYXNXYXJuT3B0aW9ucygpKSB7CisgICAgICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7CisgICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICInaW1wb3J0IHdhcm5pbmdzJyBmYWlsZWQ7IHRyYWNlYmFjazpcbiIpOworICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgfQorCisgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQorICAgICAgICBpbml0c2l0ZSgpOyAvKiBNb2R1bGUgc2l0ZSAqLworfQorCit2b2lkCitQeV9Jbml0aWFsaXplRXgoaW50IGluc3RhbGxfc2lncykKK3sKKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW5zdGFsbF9zaWdzLCAxKTsKK30KKwordm9pZAorUHlfSW5pdGlhbGl6ZSh2b2lkKQoreworICAgIFB5X0luaXRpYWxpemVFeCgxKTsKK30KKworCisjaWZkZWYgQ09VTlRfQUxMT0NTCitleHRlcm4gdm9pZCBkdW1wX2NvdW50cyhGSUxFKik7CisjZW5kaWYKKworLyogRmx1c2ggc3Rkb3V0IGFuZCBzdGRlcnIgKi8KKworc3RhdGljIGludAorZmlsZV9pc19jbG9zZWQoUHlPYmplY3QgKmZvYmopCit7CisgICAgaW50IHI7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZm9iaiwgImNsb3NlZCIpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZSh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChyIDwgMCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICByZXR1cm4gciA+IDA7Cit9CisKK3N0YXRpYyB2b2lkCitmbHVzaF9zdGRfZmlsZXModm9pZCkKK3sKKyAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOworICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CisgICAgUHlPYmplY3QgKnRtcDsKKworICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgeworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorfQorCisvKiBVbmRvIHRoZSBlZmZlY3Qgb2YgUHlfSW5pdGlhbGl6ZSgpLgorCisgICBCZXdhcmU6IGlmIG11bHRpcGxlIGludGVycHJldGVyIGFuZC9vciB0aHJlYWQgc3RhdGVzIGV4aXN0LCB0aGVzZQorICAgYXJlIG5vdCB3aXBlZCBvdXQ7IG9ubHkgdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBpbnRlcnByZXRlciBzdGF0ZQorICAgYXJlIGRlbGV0ZWQuICBCdXQgc2luY2UgZXZlcnl0aGluZyBlbHNlIGlzIGRlbGV0ZWQsIHRob3NlIG90aGVyCisgICBpbnRlcnByZXRlciBhbmQgdGhyZWFkIHN0YXRlcyBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuCisKKyAgIChYWFggV2Ugc2hvdWxkIGRvIGJldHRlciwgZS5nLiB3aXBlIG91dCBhbGwgaW50ZXJwcmV0ZXJzIGFuZAorICAgdGhyZWFkcy4pCisKKyAgIExvY2tpbmc6IGFzIGFib3ZlLgorCisqLworCit2b2lkCitQeV9GaW5hbGl6ZSh2b2lkKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bigpOworCisgICAgLyogVGhlIGludGVycHJldGVyIGlzIHN0aWxsIGVudGlyZWx5IGludGFjdCBhdCB0aGlzIHBvaW50LCBhbmQgdGhlCisgICAgICogZXhpdCBmdW5jcyBtYXkgYmUgcmVseWluZyBvbiB0aGF0LiAgSW4gcGFydGljdWxhciwgaWYgc29tZSB0aHJlYWQKKyAgICAgKiBvciBleGl0IGZ1bmMgaXMgc3RpbGwgd2FpdGluZyB0byBkbyBhbiBpbXBvcnQsIHRoZSBpbXBvcnQgbWFjaGluZXJ5CisgICAgICogZXhwZWN0cyBQeV9Jc0luaXRpYWxpemVkKCkgdG8gcmV0dXJuIHRydWUuICBTbyBkb24ndCBzYXkgdGhlCisgICAgICogaW50ZXJwcmV0ZXIgaXMgdW5pbml0aWFsaXplZCB1bnRpbCBhZnRlciB0aGUgZXhpdCBmdW5jcyBoYXZlIHJ1bi4KKyAgICAgKiBOb3RlIHRoYXQgVGhyZWFkaW5nLnB5IHVzZXMgYW4gZXhpdCBmdW5jIHRvIGRvIGEgam9pbiBvbiBhbGwgdGhlCisgICAgICogdGhyZWFkcyBjcmVhdGVkIHRocnUgaXQsIHNvIHRoaXMgYWxzbyBwcm90ZWN0cyBwZW5kaW5nIGltcG9ydHMgaW4KKyAgICAgKiB0aGUgdGhyZWFkcyBjcmVhdGVkIHZpYSBUaHJlYWRpbmcuCisgICAgICovCisgICAgY2FsbF9weV9leGl0ZnVuY3MoKTsKKworICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisKKyAgICAvKiBSZW1haW5pbmcgdGhyZWFkcyAoZS5nLiBkYWVtb24gdGhyZWFkcykgd2lsbCBhdXRvbWF0aWNhbGx5IGV4aXQKKyAgICAgICBhZnRlciB0YWtpbmcgdGhlIEdJTCAoaW4gUHlFdmFsX1Jlc3RvcmVUaHJlYWQoKSkuICovCisgICAgX1B5X0ZpbmFsaXppbmcgPSB0c3RhdGU7CisgICAgaW5pdGlhbGl6ZWQgPSAwOworCisgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLworICAgIGZsdXNoX3N0ZF9maWxlcygpOworCisgICAgLyogRGlzYWJsZSBzaWduYWwgaGFuZGxpbmcgKi8KKyAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzKCk7CisKKyAgICAvKiBDb2xsZWN0IGdhcmJhZ2UuICBUaGlzIG1heSBjYWxsIGZpbmFsaXplcnM7IGl0J3MgbmljZSB0byBjYWxsIHRoZXNlCisgICAgICogYmVmb3JlIGFsbCBtb2R1bGVzIGFyZSBkZXN0cm95ZWQuCisgICAgICogWFhYIElmIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCBoZXJlLCBhbmQgdHJpZXMgdG8KKyAgICAgKiBYWFggaW1wb3J0IGEgbW9kdWxlLCBiYWQgdGhpbmdzIGNhbiBoYXBwZW4sIGJlY2F1c2UgUHl0aG9uIG5vCisgICAgICogWFhYIGxvbmdlciBiZWxpZXZlcyBpdCdzIGluaXRpYWxpemVkLgorICAgICAqIFhYWCAgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBJbnRlcnByZXRlciBub3QgaW5pdGlhbGl6ZWQgKHZlcnNpb24gbWlzbWF0Y2g/KQorICAgICAqIFhYWCBpcyBlYXN5IHRvIHByb3Zva2UgdGhhdCB3YXkuICBJJ3ZlIGFsc28gc2VlbiwgZS5nLiwKKyAgICAgKiBYWFggICAgIEV4Y2VwdGlvbiBleGNlcHRpb25zLkltcG9ydEVycm9yOiAnTm8gbW9kdWxlIG5hbWVkIHNoYScKKyAgICAgKiBYWFggICAgICAgICBpbiA8ZnVuY3Rpb24gY2FsbGJhY2sgYXQgMHgwMDhGNTcxOD4gaWdub3JlZAorICAgICAqIFhYWCBidXQgSSdtIHVuY2xlYXIgb24gZXhhY3RseSBob3cgdGhhdCBvbmUgaGFwcGVucy4gIEluIGFueSBjYXNlLAorICAgICAqIFhYWCBJIGhhdmVuJ3Qgc2VlbiBhIHJlYWwtbGlmZSByZXBvcnQgb2YgZWl0aGVyIG9mIHRoZXNlLgorICAgICAqLworICAgIFB5R0NfQ29sbGVjdCgpOworI2lmZGVmIENPVU5UX0FMTE9DUworICAgIC8qIFdpdGggQ09VTlRfQUxMT0NTLCBpdCBoZWxwcyB0byBydW4gR0MgbXVsdGlwbGUgdGltZXM6CisgICAgICAgZWFjaCBjb2xsZWN0aW9uIG1pZ2h0IHJlbGVhc2Ugc29tZSB0eXBlcyBmcm9tIHRoZSB0eXBlCisgICAgICAgbGlzdCwgc28gdGhleSBiZWNvbWUgZ2FyYmFnZS4gKi8KKyAgICB3aGlsZSAoUHlHQ19Db2xsZWN0KCkgPiAwKQorICAgICAgICAvKiBub3RoaW5nICovOworI2VuZGlmCisgICAgLyogRGVzdHJveSBhbGwgbW9kdWxlcyAqLworICAgIFB5SW1wb3J0X0NsZWFudXAoKTsKKworICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKGFnYWluLCBpbiBjYXNlIG1vcmUgd2FzIHByaW50ZWQpICovCisgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisKKyAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5CisgICAgICogY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgorICAgICAqIFhYWCBUaGlzIGlzIGRpc2FibGVkIGJlY2F1c2UgaXQgY2F1c2VkIHRvbyBtYW55IHByb2JsZW1zLiAgSWYKKyAgICAgKiBYWFggYSBfX2RlbF9fIG9yIHdlYWtyZWYgY2FsbGJhY2sgdHJpZ2dlcnMgaGVyZSwgUHl0aG9uIGNvZGUgaGFzCisgICAgICogWFhYIGEgaGFyZCB0aW1lIHJ1bm5pbmcsIGJlY2F1c2UgZXZlbiB0aGUgc3lzIG1vZHVsZSBoYXMgYmVlbgorICAgICAqIFhYWCBjbGVhcmVkIG91dCAoc3lzLnN0ZG91dCBpcyBnb25lLCBzeXMuZXhjZXB0aG9vayBpcyBnb25lLCBldGMpLgorICAgICAqIFhYWCBPbmUgc3ltcHRvbSBpcyBhIHNlcXVlbmNlIG9mIGluZm9ybWF0aW9uLWZyZWUgbWVzc2FnZXMKKyAgICAgKiBYWFggY29taW5nIGZyb20gdGhyZWFkcyAoaWYgYSBfX2RlbF9fIG9yIGNhbGxiYWNrIGlzIGludm9rZWQsCisgICAgICogWFhYIG90aGVyIHRocmVhZHMgY2FuIGV4ZWN1dGUgdG9vLCBhbmQgYW55IGV4Y2VwdGlvbiB0aGV5IGVuY291bnRlcgorICAgICAqIFhYWCB0cmlnZ2VycyBhIGNvbWVkeSBvZiBlcnJvcnMgYXMgc3Vic3lzdGVtIGFmdGVyIHN1YnN5c3RlbQorICAgICAqIFhYWCBmYWlscyB0byBmaW5kIHdoYXQgaXQgKmV4cGVjdHMqIHRvIGZpbmQgaW4gc3lzIHRvIGhlbHAgcmVwb3J0CisgICAgICogWFhYIHRoZSBleGNlcHRpb24gYW5kIGNvbnNlcXVlbnQgdW5leHBlY3RlZCBmYWlsdXJlcykuICBJJ3ZlIGFsc28KKyAgICAgKiBYWFggc2VlbiBzZWdmYXVsdHMgdGhlbiwgYWZ0ZXIgYWRkaW5nIHByaW50IHN0YXRlbWVudHMgdG8gdGhlCisgICAgICogWFhYIFB5dGhvbiBjb2RlIGdldHRpbmcgY2FsbGVkLgorICAgICAqLworI2lmIDAKKyAgICBQeUdDX0NvbGxlY3QoKTsKKyNlbmRpZgorCisgICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKKyAgICAgICBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdHJhY2VtYWxsb2MgaW4gb2JqZWN0cyBkZXN0cnVjdG9yLiAqLworICAgIF9QeVRyYWNlTWFsbG9jX0ZpbmkoKTsKKworICAgIC8qIERlc3Ryb3kgdGhlIGRhdGFiYXNlIHVzZWQgYnkgX1B5SW1wb3J0X3tGaXh1cCxGaW5kfUV4dGVuc2lvbiAqLworICAgIF9QeUltcG9ydF9GaW5pKCk7CisKKyAgICAvKiBDbGVhbnVwIHR5cGVvYmplY3QuYydzIGludGVybmFsIGNhY2hlcy4gKi8KKyAgICBfUHlUeXBlX0ZpbmkoKTsKKworICAgIC8qIHVubG9hZCBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKworICAgIC8qIERlYnVnZ2luZyBzdHVmZiAqLworI2lmZGVmIENPVU5UX0FMTE9DUworICAgIGR1bXBfY291bnRzKHN0ZG91dCk7CisjZW5kaWYKKyAgICAvKiBkdW1wIGhhc2ggc3RhdHMgKi8KKyAgICBfUHlIYXNoX0ZpbmkoKTsKKworICAgIF9QWV9ERUJVR19QUklOVF9UT1RBTF9SRUZTKCk7CisKKyNpZmRlZiBQeV9UUkFDRV9SRUZTCisgICAgLyogRGlzcGxheSBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZSAtLSB0aGlzIGNhbiBpbnZva2UgYXJiaXRyYXJ5CisgICAgICogX19yZXByX18gb3ZlcnJpZGVzLCBzbyByZXF1aXJlcyBhIG1vc3RseS1pbnRhY3QgaW50ZXJwcmV0ZXIuCisgICAgICogQWxhcywgYSBsb3Qgb2Ygc3R1ZmYgbWF5IHN0aWxsIGJlIGFsaXZlIG5vdyB0aGF0IHdpbGwgYmUgY2xlYW5lZAorICAgICAqIHVwIGxhdGVyLgorICAgICAqLworICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCisgICAgICAgIF9QeV9QcmludFJlZmVyZW5jZXMoc3RkZXJyKTsKKyNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCisKKyAgICAvKiBDbGVhciBpbnRlcnByZXRlciBzdGF0ZSBhbmQgYWxsIHRocmVhZCBzdGF0ZXMuICovCisgICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7CisKKyAgICAvKiBOb3cgd2UgZGVjcmVmIHRoZSBleGNlcHRpb24gY2xhc3Nlcy4gIEFmdGVyIHRoaXMgcG9pbnQgbm90aGluZworICAgICAgIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBUaGF0J3Mgb2theSwgYmVjYXVzZSBlYWNoIEZpbmkoKSBtZXRob2QKKyAgICAgICBiZWxvdyBoYXMgYmVlbiBjaGVja2VkIHRvIG1ha2Ugc3VyZSBubyBleGNlcHRpb25zIGFyZSBldmVyCisgICAgICAgcmFpc2VkLgorICAgICovCisKKyAgICBfUHlFeGNfRmluaSgpOworCisgICAgLyogU3VuZHJ5IGZpbmFsaXplcnMgKi8KKyAgICBQeU1ldGhvZF9GaW5pKCk7CisgICAgUHlGcmFtZV9GaW5pKCk7CisgICAgUHlDRnVuY3Rpb25fRmluaSgpOworICAgIFB5VHVwbGVfRmluaSgpOworICAgIFB5TGlzdF9GaW5pKCk7CisgICAgUHlTZXRfRmluaSgpOworICAgIFB5Qnl0ZXNfRmluaSgpOworICAgIFB5Qnl0ZUFycmF5X0ZpbmkoKTsKKyAgICBQeUxvbmdfRmluaSgpOworICAgIFB5RmxvYXRfRmluaSgpOworICAgIFB5RGljdF9GaW5pKCk7CisgICAgUHlTbGljZV9GaW5pKCk7CisgICAgX1B5R0NfRmluaSgpOworICAgIF9QeVJhbmRvbV9GaW5pKCk7CisKKyAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KKyAgICBfUHlVbmljb2RlX0ZpbmkoKTsKKworICAgIC8qIHJlc2V0IGZpbGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcgKi8KKyAgICBpZiAoIVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgeworICAgICAgICBQeU1lbV9SYXdGcmVlKChjaGFyKilQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7CisgICAgfQorCisgICAgLyogWFhYIFN0aWxsIGFsbG9jYXRlZDoKKyAgICAgICAtIHZhcmlvdXMgc3RhdGljIGFkLWhvYyBwb2ludGVycyB0byBpbnRlcm5lZCBzdHJpbmdzCisgICAgICAgLSBpbnQgYW5kIGZsb2F0IGZyZWUgbGlzdCBibG9ja3MKKyAgICAgICAtIHdoYXRldmVyIHZhcmlvdXMgbW9kdWxlcyBhbmQgbGlicmFyaWVzIGFsbG9jYXRlCisgICAgKi8KKworICAgIFB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMoJl9QeVBhcnNlcl9HcmFtbWFyKTsKKworICAgIC8qIENsZWFudXAgYXV0by10aHJlYWQtc3RhdGUgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeUdJTFN0YXRlX0ZpbmkoKTsKKyNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLworCisgICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCisgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKKworI2lmZGVmIFB5X1RSQUNFX1JFRlMKKyAgICAvKiBEaXNwbGF5IGFkZHJlc3NlcyAoJiByZWZjbnRzKSBvZiBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZS4KKyAgICAgKiBBbiBhZGRyZXNzIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIHJlcHIgb2YgdGhlIG9iamVjdCwgcHJpbnRlZAorICAgICAqIGFib3ZlIGJ5IF9QeV9QcmludFJlZmVyZW5jZXMuCisgICAgICovCisgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKKyAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7CisjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLworI2lmZGVmIFBZTUFMTE9DX0RFQlVHCisgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyNlbmRpZgorCisgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKK30KKworLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCisgICBuZXcgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IFB5X0luaXRpYWxpemUoKSBoYXMgYmVlbiBjYWxsZWQKKyAgIGZpcnN0LgorCisgICBVbnN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24geWllbGRzIGEgTlVMTCBwb2ludGVyLiAgTm90ZSB0aGF0ICpubyoKKyAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZXZlbiBpbiB0aGlzIGNhc2UgLS0gdGhlCisgICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgaGVsZCBpbiB0aGUgdGhyZWFkLCBhbmQgdGhlcmUgaXMgbm8KKyAgIHRocmVhZC4KKworICAgTG9ja2luZzogYXMgYWJvdmUuCisKKyovCisKK1B5VGhyZWFkU3RhdGUgKgorUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUsICpzYXZlX3RzdGF0ZTsKKyAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2Q7CisKKyAgICBpZiAoIWluaXRpYWxpemVkKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7CisKKyAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CisgICAgaWYgKGludGVycCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV3KGludGVycCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2F2ZV90c3RhdGUgPSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKKworICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLworCisgICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOworCisgICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7CisgICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKKyAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOworICAgICAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CisgICAgICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKKyAgICB9CisKKyAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKKworICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7CisgICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7CisKKyAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOworICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKKyAgICAgICAgUHlfSU5DUkVGKGludGVycC0+c3lzZGljdCk7CisgICAgICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW50ZXJwLT5zeXNkaWN0LCAibW9kdWxlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7CisgICAgICAgIC8qIFNldCB1cCBhIHByZWxpbWluYXJ5IHN0ZGVyciBwcmludGVyIHVudGlsIHdlIGhhdmUgZW5vdWdoCisgICAgICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLworICAgICAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOworICAgICAgICBpZiAocHN0ZGVyciA9PSBOVUxMKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOworICAgICAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKKyAgICAgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgcHN0ZGVycik7CisgICAgICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKKworICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7CisKKyAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCisgICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOworCisgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAorICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKyAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKKyAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQorICAgICAgICAgICAgaW5pdHNpdGUoKTsKKyAgICB9CisKKyAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiB0c3RhdGU7CisKK2hhbmRsZV9lcnJvcjoKKyAgICAvKiBPb3BzLCBpdCBkaWRuJ3Qgd29yay4gIFVuZG8gaXQgYWxsLiAqLworCisgICAgUHlFcnJfUHJpbnRFeCgwKTsKKyAgICBQeVRocmVhZFN0YXRlX0NsZWFyKHRzdGF0ZSk7CisgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKHNhdmVfdHN0YXRlKTsKKyAgICBQeVRocmVhZFN0YXRlX0RlbGV0ZSh0c3RhdGUpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKKworICAgIHJldHVybiBOVUxMOworfQorCisvKiBEZWxldGUgYW4gaW50ZXJwcmV0ZXIgYW5kIGl0cyBsYXN0IHRocmVhZC4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKKyAgIGdpdmVuIHRocmVhZCBzdGF0ZSBpcyBjdXJyZW50LCB0aGF0IHRoZSB0aHJlYWQgaGFzIG5vIHJlbWFpbmluZworICAgZnJhbWVzLCBhbmQgdGhhdCBpdCBpcyBpdHMgaW50ZXJwcmV0ZXIncyBvbmx5IHJlbWFpbmluZyB0aHJlYWQuCisgICBJdCBpcyBhIGZhdGFsIGVycm9yIHRvIHZpb2xhdGUgdGhlc2UgY29uc3RyYWludHMuCisKKyAgIChQeV9GaW5hbGl6ZSgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCisgICBldmVyeXRoaW5nLCByZWdhcmRsZXNzLikKKworICAgTG9ja2luZzogYXMgYWJvdmUuCisKKyovCisKK3ZvaWQKK1B5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworCisgICAgaWYgKHRzdGF0ZSAhPSBQeVRocmVhZFN0YXRlX0dFVCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIGlzIG5vdCBjdXJyZW50Iik7CisgICAgaWYgKHRzdGF0ZS0+ZnJhbWUgIT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IHRocmVhZCBzdGlsbCBoYXMgYSBmcmFtZSIpOworCisgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CisKKyAgICBpZiAodHN0YXRlICE9IGludGVycC0+dHN0YXRlX2hlYWQgfHwgdHN0YXRlLT5uZXh0ICE9IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiBub3QgdGhlIGxhc3QgdGhyZWFkIik7CisKKyAgICBQeUltcG9ydF9DbGVhbnVwKCk7CisgICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7CisgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKK30KKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uIjsKKyNlbHNlCitzdGF0aWMgd2NoYXJfdCAqcHJvZ25hbWUgPSBMInB5dGhvbjMiOworI2VuZGlmCisKK3ZvaWQKK1B5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKnBuKQoreworICAgIGlmIChwbiAmJiAqcG4pCisgICAgICAgIHByb2duYW1lID0gcG47Cit9CisKK3djaGFyX3QgKgorUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCkKK3sKKyAgICByZXR1cm4gcHJvZ25hbWU7Cit9CisKK3N0YXRpYyB3Y2hhcl90ICpkZWZhdWx0X2hvbWUgPSBOVUxMOworc3RhdGljIHdjaGFyX3QgZW52X2hvbWVbTUFYUEFUSExFTisxXTsKKwordm9pZAorUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICpob21lKQoreworICAgIGRlZmF1bHRfaG9tZSA9IGhvbWU7Cit9CisKK3djaGFyX3QgKgorUHlfR2V0UHl0aG9uSG9tZSh2b2lkKQoreworICAgIHdjaGFyX3QgKmhvbWUgPSBkZWZhdWx0X2hvbWU7CisgICAgaWYgKGhvbWUgPT0gTlVMTCAmJiAhUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7CisgICAgICAgIGNoYXIqIGNob21lID0gUHlfR0VURU5WKCJQWVRIT05IT01FIik7CisgICAgICAgIGlmIChjaG9tZSkgeworICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoZW52X2hvbWUpOworICAgICAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyhlbnZfaG9tZSwgY2hvbWUsIHNpemUpOworICAgICAgICAgICAgaWYgKHIgIT0gKHNpemVfdCktMSAmJiByIDwgc2l6ZSkKKyAgICAgICAgICAgICAgICBob21lID0gZW52X2hvbWU7CisgICAgICAgIH0KKworICAgIH0KKyAgICByZXR1cm4gaG9tZTsKK30KKworLyogQ3JlYXRlIF9fbWFpbl9fIG1vZHVsZSAqLworCitzdGF0aWMgdm9pZAoraW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCit7CisgICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOworICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CisgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoYmltb2QpOworICAgIH0KKyAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgorICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKKyAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCisgICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAorICAgICAqIHByb2Nlc3MuCisgICAgICovCisgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKTsKKyAgICBpZiAobG9hZGVyID09IE5VTEwgfHwgbG9hZGVyID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlPYmplY3QgKmxvYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsdGluSW1wb3J0ZXIiKTsKKyAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18iKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2luaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQoreworICAgIFB5T2JqZWN0ICpjb2RlYzsKKworICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOworICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7CisKKyAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CisgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLworICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOworICAgIGlmICghY29kZWMpIHsKKyAgICAgICAgLyogU3VjaCBlcnJvciBjYW4gb25seSBvY2N1cnMgaW4gY3JpdGljYWwgc2l0dWF0aW9uczogbm8gbW9yZQorICAgICAgICAgKiBtZW1vcnksIGltcG9ydCBhIG1vZHVsZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBmYWlsZWQsCisgICAgICAgICAqIGV0Yy4gKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYoY29kZWMpOworICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEltcG9ydCB0aGUgc2l0ZSBtb2R1bGUgKG5vdCBpbnRvIF9fbWFpbl9fIHRob3VnaCkgKi8KKworc3RhdGljIHZvaWQKK2luaXRzaXRlKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisgICAgbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2l0ZSIpOworICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZVxuIik7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgfQorfQorCisvKiBDaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvciBub3QuCisgICBSZXR1cm4gMCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGludmFsaWQsIHJldHVybiBub24temVybyBvdGhlcndpc2UuICovCitzdGF0aWMgaW50Citpc192YWxpZF9mZChpbnQgZmQpCit7CisgICAgaW50IGZkMjsKKyAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZmQyID0gZHVwKGZkKTsKKyAgICBpZiAoZmQyID49IDApCisgICAgICAgIGNsb3NlKGZkMik7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICByZXR1cm4gZmQyID49IDA7Cit9CisKKy8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCitzdGF0aWMgUHlPYmplY3QqCitjcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAorICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCisgICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7CisgICAgY29uc3QgY2hhciogbW9kZTsKKyAgICBjb25zdCBjaGFyKiBuZXdsaW5lOworICAgIFB5T2JqZWN0ICpsaW5lX2J1ZmZlcmluZzsKKyAgICBpbnQgYnVmZmVyaW5nLCBpc2F0dHk7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CisgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKKyAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKKyAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKKworICAgIGlmICghaXNfdmFsaWRfZmQoZmQpKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIC8qIHN0ZGluIGlzIGFsd2F5cyBvcGVuZWQgaW4gYnVmZmVyZWQgbW9kZSwgZmlyc3QgYmVjYXVzZSBpdCBzaG91bGRuJ3QKKyAgICAgICBtYWtlIGEgZGlmZmVyZW5jZSBpbiBjb21tb24gdXNlIGNhc2VzLCBzZWNvbmQgYmVjYXVzZSBUZXh0SU9XcmFwcGVyCisgICAgICAgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSByZWFkMSgpIG1ldGhvZCB3aGljaCBvbmx5IGV4aXN0cyBvbgorICAgICAgIGJ1ZmZlcmVkIHN0cmVhbXMuCisgICAgKi8KKyAgICBpZiAoUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyAmJiB3cml0ZV9tb2RlKQorICAgICAgICBidWZmZXJpbmcgPSAwOworICAgIGVsc2UKKyAgICAgICAgYnVmZmVyaW5nID0gLTE7CisgICAgaWYgKHdyaXRlX21vZGUpCisgICAgICAgIG1vZGUgPSAid2IiOworICAgIGVsc2UKKyAgICAgICAgbW9kZSA9ICJyYiI7CisgICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOworICAgIGlmIChidWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChidWZmZXJpbmcpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKKyAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7CisgICAgICAgIGlmIChyYXcgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByYXcgPSBidWY7CisgICAgICAgIFB5X0lOQ1JFRihyYXcpOworICAgIH0KKworICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKKyAgICBQeV9ERUNSRUYocmVzKTsKKyAgICBpZiAoaXNhdHR5ID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChpc2F0dHkgfHwgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZykKKyAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9UcnVlOworICAgIGVsc2UKKyAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9GYWxzZTsKKworICAgIFB5X0NMRUFSKHJhdyk7CisgICAgUHlfQ0xFQVIodGV4dCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogc3lzLnN0ZGluOiBlbmFibGUgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSwgdHJhbnNsYXRlICJcclxuIiBhbmQgIlxyIgorICAgICAgIG5ld2xpbmVzIHRvICJcbiIuCisgICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogdHJhbnNsYXRlICJcbiIgdG8gIlxyXG4iLiAqLworICAgIG5ld2xpbmUgPSBOVUxMOworI2Vsc2UKKyAgICAvKiBzeXMuc3RkaW46IHNwbGl0IGxpbmVzIGF0ICJcbiIuCisgICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzICh1c2UgIlxuIikuICovCisgICAgbmV3bGluZSA9ICJcbiI7CisjZW5kaWYKKworICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7CisgICAgUHlfQ0xFQVIoYnVmKTsKKyAgICBpZiAoc3RyZWFtID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAod3JpdGVfbW9kZSkKKyAgICAgICAgbW9kZSA9ICJ3IjsKKyAgICBlbHNlCisgICAgICAgIG1vZGUgPSAiciI7CisgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOworICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKHRleHQpOworICAgIHJldHVybiBzdHJlYW07CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoYnVmKTsKKyAgICBQeV9YREVDUkVGKHN0cmVhbSk7CisgICAgUHlfWERFQ1JFRih0ZXh0KTsKKyAgICBQeV9YREVDUkVGKHJhdyk7CisKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSAmJiAhaXNfdmFsaWRfZmQoZmQpKSB7CisgICAgICAgIC8qIElzc3VlICMyNDg5MTogdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIGFmdGVyIHRoZSBmaXJzdAorICAgICAgICAgICBpc192YWxpZF9mZCgpIGNoZWNrIHdhcyBjYWxsZWQuIElnbm9yZSB0aGUgT1NFcnJvciBhbmQgc2V0IHRoZQorICAgICAgICAgICBzdHJlYW0gdG8gTm9uZS4gKi8KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvKiBJbml0aWFsaXplIHN5cy5zdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGJ1aWx0aW5zLm9wZW4gKi8KK3N0YXRpYyBpbnQKK2luaXRzdGRpbyh2b2lkKQoreworICAgIFB5T2JqZWN0ICppb21vZCA9IE5VTEwsICp3cmFwcGVyOworICAgIFB5T2JqZWN0ICpiaW1vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm07CisgICAgUHlPYmplY3QgKnN0ZCA9IE5VTEw7CisgICAgaW50IHN0YXR1cyA9IDAsIGZkOworICAgIFB5T2JqZWN0ICogZW5jb2RpbmdfYXR0cjsKKyAgICBjaGFyICpweXRob25pb2VuY29kaW5nID0gTlVMTCwgKmVuY29kaW5nLCAqZXJyb3JzOworCisgICAgLyogSGFjayB0byBhdm9pZCBhIG5hc3R5IHJlY3Vyc2lvbiBpc3N1ZSB3aGVuIFB5dGhvbiBpcyBpbnZva2VkCisgICAgICAgaW4gdmVyYm9zZSBtb2RlOiBwcmUtaW1wb3J0IHRoZSBMYXRpbi0xIGFuZCBVVEYtOCBjb2RlY3MgKi8KKyAgICBpZiAoKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy51dGZfOCIpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRihtKTsKKworICAgIGlmICghKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy5sYXRpbl8xIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRihtKTsKKworICAgIGlmICghKGJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICghKGlvbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpKSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoISh3cmFwcGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpb21vZCwgIk9wZW5XcmFwcGVyIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGJ1aWx0aW5zLm9wZW4gKi8KKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhiaW1vZCwgIm9wZW4iLCB3cmFwcGVyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKworICAgIGVuY29kaW5nID0gX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2Rpbmc7CisgICAgZXJyb3JzID0gX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzOworICAgIGlmICghZW5jb2RpbmcgfHwgIWVycm9ycykgeworICAgICAgICBpZiAoIWVycm9ycykgeworICAgICAgICAgICAgLyogV2hlbiB0aGUgTENfQ1RZUEUgbG9jYWxlIGlzIHRoZSBQT1NJWCBsb2NhbGUgKCJDIGxvY2FsZSIpLAorICAgICAgICAgICAgICAgc3RkaW4gYW5kIHN0ZG91dCB1c2UgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGJ5CisgICAgICAgICAgICAgICBkZWZhdWx0LCBpbnN0ZWFkIG9mIHRoZSBzdHJpY3QgZXJyb3IgaGFuZGxlci4gKi8KKyAgICAgICAgICAgIGNoYXIgKmxvYyA9IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7CisgICAgICAgICAgICBpZiAobG9jICE9IE5VTEwgJiYgc3RyY21wKGxvYywgIkMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGVycm9ycyA9ICJzdXJyb2dhdGVlc2NhcGUiOworICAgICAgICB9CisKKyAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IFB5X0dFVEVOVigiUFlUSE9OSU9FTkNPRElORyIpOworICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZykgeworICAgICAgICAgICAgY2hhciAqZXJyOworICAgICAgICAgICAgcHl0aG9uaW9lbmNvZGluZyA9IF9QeU1lbV9TdHJkdXAocHl0aG9uaW9lbmNvZGluZyk7CisgICAgICAgICAgICBpZiAocHl0aG9uaW9lbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJyID0gc3RyY2hyKHB5dGhvbmlvZW5jb2RpbmcsICc6Jyk7CisgICAgICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICAgICAgKmVyciA9ICdcMCc7CisgICAgICAgICAgICAgICAgZXJyKys7CisgICAgICAgICAgICAgICAgaWYgKCplcnIgJiYgIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCpweXRob25pb2VuY29kaW5nICYmICFlbmNvZGluZykgeworICAgICAgICAgICAgICAgIGVuY29kaW5nID0gcHl0aG9uaW9lbmNvZGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFNldCBzeXMuc3RkaW4gKi8KKyAgICBmZCA9IGZpbGVubyhzdGRpbik7CisgICAgLyogVW5kZXIgc29tZSBjb25kaXRpb25zIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBtYXkgbm90IGJlIGNvbm5lY3RlZAorICAgICAqIGFuZCBmaWxlbm8oKSBtYXkgcG9pbnQgdG8gYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuIEZvciBleGFtcGxlCisgICAgICogR1VJIGFwcHMgZG9uJ3QgaGF2ZSB2YWxpZCBzdGFuZGFyZCBzdHJlYW1zIGJ5IGRlZmF1bHQuCisgICAgICovCisgICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMCwgIjxzdGRpbj4iLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICBpZiAoc3RkID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGluX18iLCBzdGQpOworICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRpbiwgc3RkKTsKKyAgICBQeV9ERUNSRUYoc3RkKTsKKworICAgIC8qIFNldCBzeXMuc3Rkb3V0ICovCisgICAgZmQgPSBmaWxlbm8oc3Rkb3V0KTsKKyAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAxLCAiPHN0ZG91dD4iLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICBpZiAoc3RkID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZG91dF9fIiwgc3RkKTsKKyAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0LCBzdGQpOworICAgIFB5X0RFQ1JFRihzdGQpOworCisjaWYgMSAvKiBEaXNhYmxlIHRoaXMgaWYgeW91IGhhdmUgdHJvdWJsZSBkZWJ1Z2dpbmcgYm9vdHN0cmFwIHN0dWZmICovCisgICAgLyogU2V0IHN5cy5zdGRlcnIsIHJlcGxhY2VzIHRoZSBwcmVsaW1pbmFyeSBzdGRlcnIgKi8KKyAgICBmZCA9IGZpbGVubyhzdGRlcnIpOworICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3RkZXJyPiIsIGVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpOworICAgIGlmIChzdGQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIFNhbWUgYXMgaGFjayBhYm92ZSwgcHJlLWltcG9ydCBzdGRlcnIncyBjb2RlYyB0byBhdm9pZCByZWN1cnNpb24KKyAgICAgICB3aGVuIGltcG9ydC5jIHRyaWVzIHRvIHdyaXRlIHRvIHN0ZGVyciBpbiB2ZXJib3NlIG1vZGUuICovCisgICAgZW5jb2RpbmdfYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RkLCAiZW5jb2RpbmciKTsKKyAgICBpZiAoZW5jb2RpbmdfYXR0ciAhPSBOVUxMKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKiBzdGRfZW5jb2Rpbmc7CisgICAgICAgIHN0ZF9lbmNvZGluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZW5jb2RpbmdfYXR0cik7CisgICAgICAgIGlmIChzdGRfZW5jb2RpbmcgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVjX2luZm8gPSBfUHlDb2RlY19Mb29rdXAoc3RkX2VuY29kaW5nKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoY29kZWNfaW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nX2F0dHIpOworICAgIH0KKyAgICBQeUVycl9DbGVhcigpOyAgLyogTm90IGEgZmF0YWwgZXJyb3IgaWYgY29kZWMgaXNuJ3QgYXZhaWxhYmxlICovCisKKyAgICBpZiAoUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgc3RkKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0ZCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBzdGQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RkKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfREVDUkVGKHN0ZCk7CisjZW5kaWYKKworICAgIGlmICgwKSB7CisgIGVycm9yOgorICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICB9CisKKyAgICAvKiBXZSB3b24ndCBuZWVkIHRoZW0gYW55bW9yZS4gKi8KKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7CisgICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgeworICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyk7CisgICAgICAgIF9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyA9IE5VTEw7CisgICAgfQorICAgIFB5TWVtX0ZyZWUocHl0aG9uaW9lbmNvZGluZyk7CisgICAgUHlfWERFQ1JFRihiaW1vZCk7CisgICAgUHlfWERFQ1JFRihpb21vZCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworCisvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKKyAqIG9yIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrLgorICoKKyAqIERvbid0IGNhbGwgUHlFcnJfUHJpbnRFeCgpIGFuZCB0aGUgZXhjZXB0IGhvb2ssIGJlY2F1c2UgUHlfRmF0YWxFcnJvcigpIGlzCisgKiBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzLiAqLworCitzdGF0aWMgdm9pZAorX1B5X1ByaW50RmF0YWxFcnJvcihpbnQgZmQpCit7CisgICAgUHlPYmplY3QgKmZlcnIsICpyZXM7CisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwgKnYsICp0YjsKKyAgICBpbnQgaGFzX3RiOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2LCAmdGIpOworICAgIGlmIChleGNlcHRpb24gPT0gTlVMTCkgeworICAgICAgICAvKiBObyBjdXJyZW50IGV4Y2VwdGlvbiAqLworICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7CisgICAgfQorCisgICAgZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOworICAgIGlmIChmZXJyID09IE5VTEwgfHwgZmVyciA9PSBQeV9Ob25lKSB7CisgICAgICAgIC8qIHN5cy5zdGRlcnIgaXMgbm90IHNldCB5ZXQgb3Igc2V0IHRvIE5vbmUsCisgICAgICAgICAgIG5vIG5lZWQgdG8gdHJ5IHRvIGRpc3BsYXkgdGhlIGV4Y2VwdGlvbiAqLworICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7CisgICAgfQorCisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGNlcHRpb24sICZ2LCAmdGIpOworICAgIGlmICh0YiA9PSBOVUxMKSB7CisgICAgICAgIHRiID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHRiKTsKKyAgICB9CisgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHYsIHRiKTsKKyAgICBpZiAoZXhjZXB0aW9uID09IE5VTEwpIHsKKyAgICAgICAgLyogUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCkgZmFpbGVkICovCisgICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKKyAgICB9CisKKyAgICBoYXNfdGIgPSAodGIgIT0gUHlfTm9uZSk7CisgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKKyAgICBQeV9YREVDUkVGKGV4Y2VwdGlvbik7CisgICAgUHlfWERFQ1JFRih2KTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKworICAgIC8qIHN5cy5zdGRlcnIgbWF5IGJlIGJ1ZmZlcmVkOiBjYWxsIHN5cy5zdGRlcnIuZmx1c2goKSAqLworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKKworICAgIGlmIChoYXNfdGIpCisgICAgICAgIHJldHVybjsKKworZGlzcGxheV9zdGFjazoKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLworICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisjZWxzZQorICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisjZW5kaWYKKyAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5CisgICAgICAgICAqIGZyYW1lcyAqLworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKKworICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCisgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKK30KKy8qIFByaW50IGZhdGFsIGVycm9yIG1lc3NhZ2UgYW5kIGFib3J0ICovCisKK3ZvaWQKK1B5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbXNnKQoreworICAgIGNvbnN0IGludCBmZCA9IGZpbGVubyhzdGRlcnIpOworICAgIHN0YXRpYyBpbnQgcmVlbnRyYW50ID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgc2l6ZV90IGxlbjsKKyAgICBXQ0hBUiogYnVmZmVyOworICAgIHNpemVfdCBpOworI2VuZGlmCisKKyAgICBpZiAocmVlbnRyYW50KSB7CisgICAgICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSBjYXVzZWQgYSBzZWNvbmQgZmF0YWwgZXJyb3IuCisgICAgICAgICAgIEV4YW1wbGU6IGZsdXNoX3N0ZF9maWxlcygpIHJhaXNlcyBhIHJlY3Vyc2lvbiBlcnJvci4gKi8KKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZWVudHJhbnQgPSAxOworCisgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICVzXG4iLCBtc2cpOworICAgIGZmbHVzaChzdGRlcnIpOyAvKiBpdCBoZWxwcyBpbiBXaW5kb3dzIGRlYnVnIGJ1aWxkICovCisKKyAgICAvKiBQcmludCB0aGUgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCisgICAgICogb3IgZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2suICovCisgICAgX1B5X1ByaW50RmF0YWxFcnJvcihmZCk7CisKKyAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyICovCisgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisKKyAgICAvKiBUaGUgbWFpbiBwdXJwb3NlIG9mIGZhdWx0aGFuZGxlciBpcyB0byBkaXNwbGF5IHRoZSB0cmFjZWJhY2suIFdlIGFscmVhZHkKKyAgICAgKiBkaWQgb3VyIGJlc3QgdG8gZGlzcGxheSBpdC4gU28gZmF1bHRoYW5kbGVyIGNhbiBub3cgYmUgZGlzYWJsZWQuCisgICAgICogKERvbid0IHRyaWdnZXIgaXQgb24gYWJvcnQoKS4pICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBsZW4gPSBzdHJsZW4obXNnKTsKKworICAgIC8qIENvbnZlcnQgdGhlIG1lc3NhZ2UgdG8gd2NoYXJfdC4gVGhpcyB1c2VzIGEgc2ltcGxlIG9uZS10by1vbmUKKyAgICBjb252ZXJzaW9uLCBhc3N1bWluZyB0aGF0IHRoZSB0aGlzIGVycm9yIG1lc3NhZ2UgYWN0dWFsbHkgdXNlcyBBU0NJSQorICAgIG9ubHkuIElmIHRoaXMgY2Vhc2VzIHRvIGJlIHRydWUsIHdlIHdpbGwgaGF2ZSB0byBjb252ZXJ0LiAqLworICAgIGJ1ZmZlciA9IGFsbG9jYSggKGxlbisxKSAqIChzaXplb2YgKmJ1ZmZlcikpOworICAgIGZvciggaT0wOyBpPD1sZW47ICsraSkKKyAgICAgICAgYnVmZmVyW2ldID0gbXNnW2ldOworICAgIE91dHB1dERlYnVnU3RyaW5nVyhMIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKGJ1ZmZlcik7CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiXG4iKTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKK2V4aXQ6CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKF9ERUJVRykKKyAgICBEZWJ1Z0JyZWFrKCk7CisjZW5kaWYKKyAgICBhYm9ydCgpOworfQorCisvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKK3N0YXRpYyB2b2lkICgqcHlleGl0ZnVuYykodm9pZCkgPSBOVUxMOworLyogRm9yIHRoZSBhdGV4aXQgbW9kdWxlLiAqLwordm9pZCBfUHlfUHlBdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQoreworICAgIHB5ZXhpdGZ1bmMgPSBmdW5jOworfQorCitzdGF0aWMgdm9pZAorY2FsbF9weV9leGl0ZnVuY3Modm9pZCkKK3sKKyAgICBpZiAocHlleGl0ZnVuYyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICAoKnB5ZXhpdGZ1bmMpKCk7CisgICAgUHlFcnJfQ2xlYXIoKTsKK30KKworLyogV2FpdCB1bnRpbCB0aHJlYWRpbmcuX3NodXRkb3duIGNvbXBsZXRlcywgcHJvdmlkZWQKKyAgIHRoZSB0aHJlYWRpbmcgbW9kdWxlIHdhcyBpbXBvcnRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCisgICBUaGUgc2h1dGRvd24gcm91dGluZSB3aWxsIHdhaXQgdW50aWwgYWxsIG5vbi1kYWVtb24KKyAgICJ0aHJlYWRpbmciIHRocmVhZHMgaGF2ZSBjb21wbGV0ZWQuICovCitzdGF0aWMgdm9pZAord2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlfSURFTlRJRklFUihfc2h1dGRvd24pOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeU9iamVjdCAqdGhyZWFkaW5nID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcodHN0YXRlLT5pbnRlcnAtPm1vZHVsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aHJlYWRpbmciKTsKKyAgICBpZiAodGhyZWFkaW5nID09IE5VTEwpIHsKKyAgICAgICAgLyogdGhyZWFkaW5nIG5vdCBpbXBvcnRlZCAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgUHlfREVDUkVGKHRocmVhZGluZyk7CisjZW5kaWYKK30KKworI2RlZmluZSBORVhJVEZVTkNTIDMyCitzdGF0aWMgdm9pZCAoKmV4aXRmdW5jc1tORVhJVEZVTkNTXSkodm9pZCk7CitzdGF0aWMgaW50IG5leGl0ZnVuY3MgPSAwOworCitpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSkKK3sKKyAgICBpZiAobmV4aXRmdW5jcyA+PSBORVhJVEZVTkNTKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZXhpdGZ1bmNzW25leGl0ZnVuY3MrK10gPSBmdW5jOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorY2FsbF9sbF9leGl0ZnVuY3Modm9pZCkKK3sKKyAgICB3aGlsZSAobmV4aXRmdW5jcyA+IDApCisgICAgICAgICgqZXhpdGZ1bmNzWy0tbmV4aXRmdW5jc10pKCk7CisKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwordm9pZAorUHlfRXhpdChpbnQgc3RzKQoreworICAgIFB5X0ZpbmFsaXplKCk7CisKKyAgICBleGl0KHN0cyk7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0c2lncyh2b2lkKQoreworI2lmZGVmIFNJR1BJUEUKKyAgICBQeU9TX3NldHNpZyhTSUdQSVBFLCBTSUdfSUdOKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGWgorICAgIFB5T1Nfc2V0c2lnKFNJR1hGWiwgU0lHX0lHTik7CisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisgICAgUHlPU19zZXRzaWcoU0lHWEZTWiwgU0lHX0lHTik7CisjZW5kaWYKKyAgICBQeU9TX0luaXRJbnRlcnJ1cHRzKCk7IC8qIE1heSBpbXBseSBpbml0c2lnbmFsKCkgKi8KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgc2lnbmFsIik7CisgICAgfQorfQorCisKKy8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4KKyAqCisgKiBBbGwgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgdXNlIGFzeW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9ucywKKyAqIGxpc3RlZCBhdCBgbWFuIDcgc2lnbmFsYCBvcgorICogaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy94c2hfY2hhcDAyXzA0Lmh0bWwuCisgKi8KK3ZvaWQKK19QeV9SZXN0b3JlU2lnbmFscyh2b2lkKQoreworI2lmZGVmIFNJR1BJUEUKKyAgICBQeU9TX3NldHNpZyhTSUdQSVBFLCBTSUdfREZMKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGWgorICAgIFB5T1Nfc2V0c2lnKFNJR1hGWiwgU0lHX0RGTCk7CisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisgICAgUHlPU19zZXRzaWcoU0lHWEZTWiwgU0lHX0RGTCk7CisjZW5kaWYKK30KKworCisvKgorICogVGhlIGZpbGUgZGVzY3JpcHRvciBmZCBpcyBjb25zaWRlcmVkIGBgaW50ZXJhY3RpdmUnJyBpZiBlaXRoZXIKKyAqICAgYSkgaXNhdHR5KGZkKSBpcyBUUlVFLCBvcgorICogICBiKSB0aGUgLWkgZmxhZyB3YXMgZ2l2ZW4sIGFuZCB0aGUgZmlsZW5hbWUgYXNzb2NpYXRlZCB3aXRoCisgKiAgICAgIHRoZSBkZXNjcmlwdG9yIGlzIE5VTEwgb3IgIjxzdGRpbj4iIG9yICI/Pz8iLgorICovCitpbnQKK1B5X0ZkSXNJbnRlcmFjdGl2ZShGSUxFICpmcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisgICAgaWYgKGlzYXR0eSgoaW50KWZpbGVubyhmcCkpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoIVB5X0ludGVyYWN0aXZlRmxhZykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIChmaWxlbmFtZSA9PSBOVUxMKSB8fAorICAgICAgICAgICAoc3RyY21wKGZpbGVuYW1lLCAiPHN0ZGluPiIpID09IDApIHx8CisgICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI/Pz8iKSA9PSAwKTsKK30KKworCisvKiBXcmFwcGVycyBhcm91bmQgc2lnYWN0aW9uKCkgb3Igc2lnbmFsKCkuICovCisKK1B5T1Nfc2lnaGFuZGxlcl90CitQeU9TX2dldHNpZyhpbnQgc2lnKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0OworICAgIGlmIChzaWdhY3Rpb24oc2lnLCBOVUxMLCAmY29udGV4dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBTSUdfRVJSOworICAgIHJldHVybiBjb250ZXh0LnNhX2hhbmRsZXI7CisjZWxzZQorICAgIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXI7CisvKiBTcGVjaWFsIHNpZ25hbCBoYW5kbGluZyBmb3IgdGhlIHNlY3VyZSBDUlQgaW4gVmlzdWFsIFN0dWRpbyAyMDA1ICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTQwMAorICAgIHN3aXRjaCAoc2lnKSB7CisgICAgLyogT25seSB0aGVzZSBzaWduYWxzIGFyZSB2YWxpZCAqLworICAgIGNhc2UgU0lHSU5UOgorICAgIGNhc2UgU0lHSUxMOgorICAgIGNhc2UgU0lHRlBFOgorICAgIGNhc2UgU0lHU0VHVjoKKyAgICBjYXNlIFNJR1RFUk06CisgICAgY2FzZSBTSUdCUkVBSzoKKyAgICBjYXNlIFNJR0FCUlQ6CisgICAgICAgIGJyZWFrOworICAgIC8qIERvbid0IGNhbGwgc2lnbmFsKCkgd2l0aCBvdGhlciB2YWx1ZXMgb3IgaXQgd2lsbCBhc3NlcnQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU0lHX0VSUjsKKyAgICB9CisjZW5kaWYgLyogX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAqLworICAgIGhhbmRsZXIgPSBzaWduYWwoc2lnLCBTSUdfSUdOKTsKKyAgICBpZiAoaGFuZGxlciAhPSBTSUdfRVJSKQorICAgICAgICBzaWduYWwoc2lnLCBoYW5kbGVyKTsKKyAgICByZXR1cm4gaGFuZGxlcjsKKyNlbmRpZgorfQorCisvKgorICogQWxsIG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IHVzZSBhc3luYy1zaWduYWwtc2FmZSBmdW5jdGlvbnMsCisgKiBsaXN0ZWQgYXQgYG1hbiA3IHNpZ25hbGAgb3IKKyAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMveHNoX2NoYXAwMl8wNC5odG1sLgorICovCitQeU9TX3NpZ2hhbmRsZXJfdAorUHlPU19zZXRzaWcoaW50IHNpZywgUHlPU19zaWdoYW5kbGVyX3QgaGFuZGxlcikKK3sKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIC8qIFNvbWUgY29kZSBpbiBNb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGRlcGVuZHMgb24gc2lnYWN0aW9uKCkgYmVpbmcKKyAgICAgKiB1c2VkIGhlcmUgaWYgSEFWRV9TSUdBQ1RJT04gaXMgZGVmaW5lZC4gIEZpeCB0aGF0IGlmIHRoaXMgY29kZQorICAgICAqIGNoYW5nZXMgdG8gaW52YWxpZGF0ZSB0aGF0IGFzc3VtcHRpb24uCisgICAgICovCisgICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0LCBvY29udGV4dDsKKyAgICBjb250ZXh0LnNhX2hhbmRsZXIgPSBoYW5kbGVyOworICAgIHNpZ2VtcHR5c2V0KCZjb250ZXh0LnNhX21hc2spOworICAgIGNvbnRleHQuc2FfZmxhZ3MgPSAwOworICAgIGlmIChzaWdhY3Rpb24oc2lnLCAmY29udGV4dCwgJm9jb250ZXh0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFNJR19FUlI7CisgICAgcmV0dXJuIG9jb250ZXh0LnNhX2hhbmRsZXI7CisjZWxzZQorICAgIFB5T1Nfc2lnaGFuZGxlcl90IG9sZGhhbmRsZXI7CisgICAgb2xkaGFuZGxlciA9IHNpZ25hbChzaWcsIGhhbmRsZXIpOworI2lmZGVmIEhBVkVfU0lHSU5URVJSVVBUCisgICAgc2lnaW50ZXJydXB0KHNpZywgMSk7CisjZW5kaWYKKyAgICByZXR1cm4gb2xkaGFuZGxlcjsKKyNlbmRpZgorfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RhdGUuYyBiL1B5dGhvbi9weXN0YXRlLmMKaW5kZXggMmFjMmZkNS4uN2UwMjY3YSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RhdGUuYworKysgYi9QeXRob24vcHlzdGF0ZS5jCkBAIC0yMTIsNiArMjEyLDkgQEAKICAgICAgICAgdHN0YXRlLT5vbl9kZWxldGUgPSBOVUxMOwogICAgICAgICB0c3RhdGUtPm9uX2RlbGV0ZV9kYXRhID0gTlVMTDsKIAorICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisKICAgICAgICAgaWYgKGluaXQpCiAgICAgICAgICAgICBfUHlUaHJlYWRTdGF0ZV9Jbml0KHRzdGF0ZSk7CiAKQEAgLTI1Myw2ICsyNTYsOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSBtb2R1bGUtPm1fYmFzZS5tX2luZGV4OwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAobW9kdWxlLT5tX3Nsb3RzKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoaW5kZXggPT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4ID09IE5VTEwpCkBAIC0yNjYsNyArMjcyLDEzIEBACiBpbnQKIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCogbW9kdWxlLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGU7CisgICAgaWYgKGRlZi0+bV9zbG90cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHlTdGF0ZV9BZGRNb2R1bGUgY2FsbGVkIG9uIG1vZHVsZSB3aXRoIHNsb3RzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgaWYgKCFkZWYpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIXN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSB7CkBAIC0zMDYsOCArMzE4LDE0IEBACiBpbnQKIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQogeworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGU7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlZi0+bV9iYXNlLm1faW5kZXg7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoZGVmLT5tX3Nsb3RzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQeVN0YXRlX1JlbW92ZU1vZHVsZSBjYWxsZWQgb24gbW9kdWxlIHdpdGggc2xvdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpZiAoaW5kZXggPT0gMCkgewogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IGludmFsaWQuIik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTM3Miw2ICszOTAsOCBAQAogICAgIHRzdGF0ZS0+Y190cmFjZWZ1bmMgPSBOVUxMOwogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y19wcm9maWxlb2JqKTsKICAgICBQeV9DTEVBUih0c3RhdGUtPmNfdHJhY2VvYmopOworCisgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CiB9CiAKIApAQCAtNDAzLDcgKzQyMyw3IEBACiB2b2lkCiBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7Ci0gICAgaWYgKHRzdGF0ZSA9PSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCisgICAgaWYgKHRzdGF0ZSA9PSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVRocmVhZFN0YXRlX0RlbGV0ZTogdHN0YXRlIGlzIHN0aWxsIGN1cnJlbnQiKTsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChhdXRvSW50ZXJwcmV0ZXJTdGF0ZSAmJiBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpID09IHRzdGF0ZSkKQEAgLTY2Miw3ICs2ODIsNyBAQAogewogICAgIC8qIE11c3QgYmUgdGhlIHRzdGF0ZSBmb3IgdGhpcyB0aHJlYWQgKi8KICAgICBhc3NlcnQoUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKT09dHN0YXRlKTsKLSAgICByZXR1cm4gdHN0YXRlID09IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICByZXR1cm4gdHN0YXRlID09IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CiB9CiAKIC8qIEludGVybmFsIGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGJ5CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJoZXguYyBiL1B5dGhvbi9weXN0cmhleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNTllZDEKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vcHlzdHJoZXguYwpAQCAtMCwwICsxLDYxIEBACisvKiBieXRlcyB0byBoZXggaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCitzdGF0aWMgUHlPYmplY3QgKl9QeV9zdHJoZXhfaW1wbChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldHVybl9ieXRlcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworICAgIFB5X1VDUzEqIHJldGJ1ZjsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisKKyAgICBhc3NlcnQoYXJnbGVuID49IDApOworICAgIGlmIChhcmdsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgaWYgKHJldHVybl9ieXRlcykgeworICAgICAgICAvKiBJZiBfUHlCeXRlc19Gcm9tU2l6ZSgpIHdlcmUgcHVibGljIHdlIGNvdWxkIGF2b2lkIG1hbGxvYytjb3B5LiAqLworICAgICAgICByZXRidWYgPSAoUHlfVUNTMSopIFB5TWVtX01hbGxvYyhhcmdsZW4qMik7CisJaWYgKCFyZXRidWYpCisJICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR2YWwgPSBOVUxMOyAgLyogc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcsIGFzc2lnbmVkIGxhdGVyLiAqLworICAgIH0gZWxzZSB7CisJcmV0dmFsID0gUHlVbmljb2RlX05ldyhhcmdsZW4qMiwgMTI3KTsKKwlpZiAoIXJldHZhbCkKKwkgICAgcmV0dXJuIE5VTEw7CisJcmV0YnVmID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKKyAgICB9CisKKyAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLworICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CisgICAgICAgIGMgPSAoYXJnYnVmW2ldID4+IDQpICYgMHhmOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKKyAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKKyAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107CisgICAgfQorCisgICAgaWYgKHJldHVybl9ieXRlcykgeworICAgICAgICByZXR2YWwgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopcmV0YnVmLCBhcmdsZW4qMik7CisgICAgICAgIFB5TWVtX0ZyZWUocmV0YnVmKTsKKyAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKQoreworICAgIHJldHVybiBfUHlfc3RyaGV4X2ltcGwoYXJnYnVmLCBhcmdsZW4sIDApOworfQorCisvKiBTYW1lIGFzIGFib3ZlIGJ1dCByZXR1cm5zIGEgYnl0ZXMoKSBpbnN0ZWFkIG9mIHN0cigpIHRvIGF2b2lkIHRoZQorICogbmVlZCB0byBkZWNvZGUgdGhlIHN0cigpIHdoZW4gYnl0ZXMgYXJlIG5lZWRlZC4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKQoreworICAgIHJldHVybiBfUHlfc3RyaGV4X2ltcGwoYXJnYnVmLCBhcmdsZW4sIDEpOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDA5NjdhNDcuLmViZWRkMTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJhc3QuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBIQVZFX1NJR05BTF9ICiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC0yNSwxOCArMjYsMTIgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCi0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KLSNlbmRpZgotCi0jaWZkZWYgX19nbnVfaHVyZF9fCi0jZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KICNlbmRpZgogCiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CkBAIC00NSw3ICs0MCw2IEBACiBfUHlfSURFTlRJRklFUihsYXN0X3RyYWNlYmFjayk7CiBfUHlfSURFTlRJRklFUihsYXN0X3R5cGUpOwogX1B5X0lERU5USUZJRVIobGFzdF92YWx1ZSk7Ci1fUHlfSURFTlRJRklFUihuYW1lKTsKIF9QeV9JREVOVElGSUVSKHBzMSk7CiBfUHlfSURFTlRJRklFUihwczIpOwogX1B5X0lERU5USUZJRVIoc3RkaW4pOwpAQCAtNTMsNDMgKzQ3LDEzIEBACiBfUHlfSURFTlRJRklFUihzdGRlcnIpOwogX1B5X3N0YXRpY19zdHJpbmcoUHlJZF9zdHJpbmcsICI8c3RyaW5nPiIpOwogCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1zdGF0aWMKLXZvaWQgX3ByaW50X3RvdGFsX3JlZnModm9pZCkgewotICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOwotICAgIF9QeV9JREVOVElGSUVSKHNob3dyZWZjb3VudCk7Ci0KLSAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7Ci0gICAgaWYgKHhvcHRpb25zID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93cmVmY291bnQpOwotICAgIGlmICh2YWx1ZSA9PSBQeV9UcnVlKQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAiWyUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgcmVmcywgIgotICAgICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIGJsb2Nrc11cbiIsCi0gICAgICAgICAgICAgICAgX1B5X0dldFJlZlRvdGFsKCksIF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3MoKSk7Ci19Ci0jZW5kaWYKLQotI2lmbmRlZiBQeV9SRUZfREVCVUcKLSNkZWZpbmUgUFJJTlRfVE9UQUxfUkVGUygpCi0jZWxzZSAvKiBQeV9SRUZfREVCVUcgKi8KLSNkZWZpbmUgUFJJTlRfVE9UQUxfUkVGUygpIF9wcmludF90b3RhbF9yZWZzKCkKLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLWV4dGVybiB3Y2hhcl90ICpQeV9HZXRQYXRoKHZvaWQpOwotCiBleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCiAKIC8qIEZvcndhcmQgKi8KLXN0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKLXN0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwotc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7Ci1zdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKIHN0YXRpYyB2b2lkIGZsdXNoX2lvKHZvaWQpOwogc3RhdGljIFB5T2JqZWN0ICpydW5fbW9kKG1vZF90eSwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlDb21waWxlckZsYWdzICosIFB5QXJlbmEgKik7CkBAIC05NywxMTc3ICs2MSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKik7CiBzdGF0aWMgdm9pZCBlcnJfaW5wdXQocGVycmRldGFpbCAqKTsKIHN0YXRpYyB2b2lkIGVycl9mcmVlKHBlcnJkZXRhaWwgKik7Ci1zdGF0aWMgdm9pZCBpbml0c2lncyh2b2lkKTsKLXN0YXRpYyB2b2lkIGNhbGxfcHlfZXhpdGZ1bmNzKHZvaWQpOwotc3RhdGljIHZvaWQgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpOwotc3RhdGljIHZvaWQgY2FsbF9sbF9leGl0ZnVuY3Modm9pZCk7Ci1leHRlcm4gaW50IF9QeVVuaWNvZGVfSW5pdCh2b2lkKTsKLWV4dGVybiBpbnQgX1B5U3RydWN0U2VxdWVuY2VfSW5pdCh2b2lkKTsKLWV4dGVybiB2b2lkIF9QeVVuaWNvZGVfRmluaSh2b2lkKTsKLWV4dGVybiBpbnQgX1B5TG9uZ19Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgUHlMb25nX0Zpbmkodm9pZCk7Ci1leHRlcm4gaW50IF9QeUZhdWx0aGFuZGxlcl9Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCk7Ci1leHRlcm4gdm9pZCBfUHlIYXNoX0Zpbmkodm9pZCk7Ci1leHRlcm4gaW50IF9QeVRyYWNlTWFsbG9jX0luaXQodm9pZCk7Ci1leHRlcm4gaW50IF9QeVRyYWNlTWFsbG9jX0Zpbmkodm9pZCk7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfSW5pdChQeUludGVycHJldGVyU3RhdGUgKiwgUHlUaHJlYWRTdGF0ZSAqKTsKLWV4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0Zpbmkodm9pZCk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQotaW50IFB5X0RlYnVnRmxhZzsgLyogTmVlZGVkIGJ5IHBhcnNlci5jICovCi1pbnQgUHlfVmVyYm9zZUZsYWc7IC8qIE5lZWRlZCBieSBpbXBvcnQuYyAqLwotaW50IFB5X1F1aWV0RmxhZzsgLyogTmVlZGVkIGJ5IHN5c21vZHVsZS5jICovCi1pbnQgUHlfSW50ZXJhY3RpdmVGbGFnOyAvKiBOZWVkZWQgYnkgUHlfRmRJc0ludGVyYWN0aXZlKCkgYmVsb3cgKi8KLWludCBQeV9JbnNwZWN0RmxhZzsgLyogTmVlZGVkIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGV4aXQgYXQgU3lzdGVtRXhpdCAqLwotaW50IFB5X05vU2l0ZUZsYWc7IC8qIFN1cHByZXNzICdpbXBvcnQgc2l0ZScgKi8KLWludCBQeV9CeXRlc1dhcm5pbmdGbGFnOyAvKiBXYXJuIG9uIHN0cihieXRlcykgYW5kIHN0cihidWZmZXIpICovCi1pbnQgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOyAvKiBTdXBwcmVzcyB3cml0aW5nIGJ5dGVjb2RlIGZpbGVzICgqLnB5W2NvXSkgKi8KLWludCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnID0gMTsgLyogTmVlZGVkIGJ5IGJsdGlubW9kdWxlLmM6IGRlcHJlY2F0ZWQgKi8KLWludCBQeV9Gcm96ZW5GbGFnOyAvKiBOZWVkZWQgYnkgZ2V0cGF0aC5jICovCi1pbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOyAvKiBlLmcuIFBZVEhPTlBBVEgsIFBZVEhPTkhPTUUgKi8KLWludCBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5ID0gMDsgLyogZm9yIC1zIGFuZCBzaXRlLnB5ICovCi1pbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwotaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KLWludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCi0KLVB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKLQotLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIG9iamVjdCBmaWxlcyAqLwotaW50ICgqX1B5T1NfbXlzdHJuaWNtcF9oYWNrKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCkgPSBcCi0gICAgUHlPU19teXN0cm5pY21wOyAvKiBQeXRob24vcHlzdHJjbXAubyAqLwotCi0vKiBQeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGFzIG9mIDIuNgotc2luY2UgX3dhcm5pbmdzIGlzIGJ1aWx0aW4uICBUaGlzIEFQSSBzaG91bGQgbm90IGJlIHVzZWQuICovCi1QeU9iamVjdCAqCi1QeU1vZHVsZV9HZXRXYXJuaW5nc01vZHVsZSh2b2lkKQotewotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Ci19Ci0KLXN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwotCi0vKiBBUEkgdG8gYWNjZXNzIHRoZSBpbml0aWFsaXplZCBmbGFnIC0tIHVzZWZ1bCBmb3IgZXNvdGVyaWMgdXNlICovCi0KLWludAotUHlfSXNJbml0aWFsaXplZCh2b2lkKQotewotICAgIHJldHVybiBpbml0aWFsaXplZDsKLX0KLQotLyogSGVscGVyIHRvIGFsbG93IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiB0byBvdmVycmlkZSB0aGUgbm9ybWFsCi0gKiBtZWNoYW5pc20gdGhhdCBhdHRlbXB0cyB0byBmaWd1cmUgb3V0IGFuIGFwcHJvcHJpYXRlIElPIGVuY29kaW5nCi0gKi8KLQotc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nID0gTlVMTDsKLXN0YXRpYyBjaGFyICpfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOwotCi1pbnQKLVB5X1NldFN0YW5kYXJkU3RyZWFtRW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLXsKLSAgICBpZiAoUHlfSXNJbml0aWFsaXplZCgpKSB7Ci0gICAgICAgIC8qIFRoaXMgaXMgdG9vIGxhdGUgdG8gaGF2ZSBhbnkgZWZmZWN0ICovCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuJ3QgY2FsbCBQeUVycl9Ob01lbW9yeSgpIG9uIGVycm9ycywgYXMgUHl0aG9uIGhhc24ndCBiZWVuCi0gICAgICogaW5pdGlhbGlzZWQgeWV0LgotICAgICAqCi0gICAgICogSG93ZXZlciwgdGhlIHJhdyBtZW1vcnkgYWxsb2NhdG9ycyBhcmUgaW5pdGlhbGlzZWQgYXBwcm9wcmlhdGVseQotICAgICAqIGFzIEMgc3RhdGljIHZhcmlhYmxlcywgc28gX1B5TWVtX1Jhd1N0cmR1cCBpcyBPSyBldmVuIHRob3VnaAotICAgICAqIFB5X0luaXRpYWxpemUgaGFzbid0IGJlZW4gY2FsbGVkIHlldC4KLSAgICAgKi8KLSAgICBpZiAoZW5jb2RpbmcpIHsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBfUHlNZW1fUmF3U3RyZHVwKGVuY29kaW5nKTsKLSAgICAgICAgaWYgKCFfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgewotICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChlcnJvcnMpIHsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gX1B5TWVtX1Jhd1N0cmR1cChlcnJvcnMpOwotICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycykgewotICAgICAgICAgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gLTM7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgotICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwotICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQotICAgYmVlbiBjcmVhdGVkLgotCi0gICBMb2NraW5nOiB5b3UgbXVzdCBob2xkIHRoZSBpbnRlcnByZXRlciBsb2NrIHdoaWxlIGNhbGxpbmcgdGhpcy4KLSAgIChJZiB0aGUgbG9jayBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCB0aGF0J3MgZXF1aXZhbGVudCB0bwotICAgaGF2aW5nIHRoZSBsb2NrLCBidXQgeW91IGNhbm5vdCB1c2UgbXVsdGlwbGUgdGhyZWFkcy4pCi0KLSovCi0KLXN0YXRpYyBpbnQKLWFkZF9mbGFnKGludCBmbGFnLCBjb25zdCBjaGFyICplbnZzKQotewotICAgIGludCBlbnYgPSBhdG9pKGVudnMpOwotICAgIGlmIChmbGFnIDwgZW52KQotICAgICAgICBmbGFnID0gZW52OwotICAgIGlmIChmbGFnIDwgMSkKLSAgICAgICAgZmxhZyA9IDE7Ci0gICAgcmV0dXJuIGZsYWc7Ci19Ci0KLXN0YXRpYyBjaGFyKgotZ2V0X2NvZGVjX25hbWUoY29uc3QgY2hhciAqZW5jb2RpbmcpCi17Ci0gICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7Ci0gICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7Ci0KLSAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7Ci0gICAgaWYgKCFjb2RlYykKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKLSAgICBQeV9DTEVBUihjb2RlYyk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgbmFtZV91dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gbmFtZV9zdHI7Ci0KLWVycm9yOgotICAgIFB5X1hERUNSRUYoY29kZWMpOwotICAgIFB5X1hERUNSRUYobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjaGFyKgotZ2V0X2xvY2FsZV9lbmNvZGluZyh2b2lkKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBjaGFyIGNvZGVwYWdlWzEwMF07Ci0gICAgUHlPU19zbnByaW50Zihjb2RlcGFnZSwgc2l6ZW9mKGNvZGVwYWdlKSwgImNwJWQiLCBHZXRBQ1AoKSk7Ci0gICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVwYWdlKTsKLSNlbGlmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCi0gICAgY2hhciogY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwotICAgIGlmICghY29kZXNldCB8fCBjb2Rlc2V0WzBdID09ICdcMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDT0RFU0VUIGlzIG5vdCBzZXQgb3IgZW1wdHkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKLSNlbHNlCi0gICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZAotaW1wb3J0X2luaXQoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsIFB5T2JqZWN0ICpzeXNtb2QpCi17Ci0gICAgUHlPYmplY3QgKmltcG9ydGxpYjsKLSAgICBQeU9iamVjdCAqaW1wbW9kOwotICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKLSAgICBQeU9iamVjdCAqdmFsdWU7Ci0KLSAgICAvKiBJbXBvcnQgX2ltcG9ydGxpYiB0aHJvdWdoIGl0cyBmcm96ZW4gdmVyc2lvbiwgX2Zyb3plbl9pbXBvcnRsaWIuICovCi0gICAgaWYgKFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKSA8PSAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiIpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiAjIGZyb3plblxuIik7Ci0gICAgfQotICAgIGltcG9ydGxpYiA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX2Zyb3plbl9pbXBvcnRsaWIiKTsKLSAgICBpZiAoaW1wb3J0bGliID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY291bGRuJ3QgZ2V0IF9mcm96ZW5faW1wb3J0bGliIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyIpOwotICAgIH0KLSAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOwotCi0gICAgLyogSW5zdGFsbCBfaW1wb3J0bGliIGFzIF9faW1wb3J0X18gKi8KLSAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7Ci0gICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBpbXAiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgaW1wICMgYnVpbHRpblxuIik7Ci0gICAgfQotICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKLSAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOwotICAgIH0KLQotICAgIHZhbHVlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRsaWIsICJfaW5zdGFsbCIsICJPTyIsIHN5c21vZCwgaW1wbW9kKTsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBpbXBvcnRsaWIgaW5zdGFsbCBmYWlsZWQiKTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICBQeV9ERUNSRUYoaW1wbW9kKTsKLQotICAgIF9QeUltcG9ydFppcF9Jbml0KCk7Ci19Ci0KLQotdm9pZAotX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCBpbnN0YWxsX3NpZ3MsIGludCBpbnN0YWxsX2ltcG9ydGxpYikKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0gICAgUHlPYmplY3QgKmJpbW9kLCAqc3lzbW9kLCAqcHN0ZGVycjsKLSAgICBjaGFyICpwOwotICAgIGV4dGVybiB2b2lkIF9QeV9SZWFkeVR5cGVzKHZvaWQpOwotCi0gICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0gICAgaW5pdGlhbGl6ZWQgPSAxOwotICAgIF9QeV9GaW5hbGl6aW5nID0gTlVMTDsKLQotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKEhBVkVfU0VUTE9DQUxFKQotICAgIC8qIFNldCB1cCB0aGUgTENfQ1RZUEUgbG9jYWxlLCBzbyB3ZSBjYW4gb2J0YWluCi0gICAgICAgdGhlIGxvY2FsZSdzIGNoYXJzZXQgd2l0aG91dCBoYXZpbmcgdG8gc3dpdGNoCi0gICAgICAgbG9jYWxlcy4gKi8KLSAgICBzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKLSNlbmRpZgotCi0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ERUJVRyIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9EZWJ1Z0ZsYWcgPSBhZGRfZmxhZyhQeV9EZWJ1Z0ZsYWcsIHApOwotICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OVkVSQk9TRSIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9WZXJib3NlRmxhZyA9IGFkZF9mbGFnKFB5X1ZlcmJvc2VGbGFnLCBwKTsKLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTk9QVElNSVpFIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X09wdGltaXplRmxhZyA9IGFkZF9mbGFnKFB5X09wdGltaXplRmxhZywgcCk7Ci0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05ET05UV1JJVEVCWVRFQ09ERSIpKSAmJiAqcCAhPSAnXDAnKQotICAgICAgICBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcgPSBhZGRfZmxhZyhQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcsIHApOwotICAgIC8qIFRoZSB2YXJpYWJsZSBpcyBvbmx5IHRlc3RlZCBmb3IgZXhpc3RlbmNlIGhlcmU7IF9QeVJhbmRvbV9Jbml0IHdpbGwKLSAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7Ci0KLSAgICBfUHlSYW5kb21fSW5pdCgpOwotCi0gICAgaW50ZXJwID0gUHlJbnRlcnByZXRlclN0YXRlX05ldygpOwotICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCBpbnRlcnByZXRlciIpOwotCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXcoaW50ZXJwKTsKLSAgICBpZiAodHN0YXRlID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgZmlyc3QgdGhyZWFkIik7Ci0gICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCi0gICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KLSAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgotICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCi0gICAgX1B5RXZhbF9GaW5pVGhyZWFkcygpOwotCi0gICAgLyogQXV0by10aHJlYWQtc3RhdGUgQVBJICovCi0gICAgX1B5R0lMU3RhdGVfSW5pdChpbnRlcnAsIHRzdGF0ZSk7Ci0jZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KLQotICAgIF9QeV9SZWFkeVR5cGVzKCk7Ci0KLSAgICBpZiAoIV9QeUZyYW1lX0luaXQoKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmcmFtZXMiKTsKLQotICAgIGlmICghX1B5TG9uZ19Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgbG9uZ3MiKTsKLQotICAgIGlmICghUHlCeXRlQXJyYXlfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGJ5dGVhcnJheSIpOwotCi0gICAgaWYgKCFfUHlGbG9hdF9Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgZmxvYXQiKTsKLQotICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlcyBkaWN0aW9uYXJ5Iik7Ci0KLSAgICAvKiBJbml0IFVuaWNvZGUgaW1wbGVtZW50YXRpb247IHJlbGllcyBvbiB0aGUgY29kZWMgcmVnaXN0cnkgKi8KLSAgICBpZiAoX1B5VW5pY29kZV9Jbml0KCkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHVuaWNvZGUiKTsKLSAgICBpZiAoX1B5U3RydWN0U2VxdWVuY2VfSW5pdCgpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzdHJ1Y3RzZXEiKTsKLQotICAgIGJpbW9kID0gX1B5QnVpbHRpbl9Jbml0KCk7Ci0gICAgaWYgKGJpbW9kID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgbW9kdWxlcyIpOwotICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oYmltb2QsICJidWlsdGlucyIpOwotICAgIGludGVycC0+YnVpbHRpbnMgPSBQeU1vZHVsZV9HZXREaWN0KGJpbW9kKTsKLSAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGJ1aWx0aW5zIGRpY3QiKTsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5idWlsdGlucyk7Ci0KLSAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKLQotICAgIHN5c21vZCA9IF9QeVN5c19Jbml0KCk7Ci0gICAgaWYgKHN5c21vZCA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyIpOwotICAgIGludGVycC0+c3lzZGljdCA9IFB5TW9kdWxlX0dldERpY3Qoc3lzbW9kKTsKLSAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIGRpY3QiKTsKLSAgICBQeV9JTkNSRUYoaW50ZXJwLT5zeXNkaWN0KTsKLSAgICBfUHlJbXBvcnRfRml4dXBCdWlsdGluKHN5c21vZCwgInN5cyIpOwotICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhpbnRlcnAtPnN5c2RpY3QsICJtb2R1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPm1vZHVsZXMpOwotCi0gICAgLyogU2V0IHVwIGEgcHJlbGltaW5hcnkgc3RkZXJyIHByaW50ZXIgdW50aWwgd2UgaGF2ZSBlbm91Z2gKLSAgICAgICBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIGlvIG1vZHVsZSBpbiBwbGFjZS4gKi8KLSAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOwotICAgIGlmIChwc3RkZXJyID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNldCBwcmVsaW1pbmFyeSBzdGRlcnIiKTsKLSAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBwc3RkZXJyKTsKLSAgICBQeV9ERUNSRUYocHN0ZGVycik7Ci0KLSAgICBfUHlJbXBvcnRfSW5pdCgpOwotCi0gICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOwotCi0gICAgLyogSW5pdGlhbGl6ZSBfd2FybmluZ3MuICovCi0gICAgX1B5V2FybmluZ3NfSW5pdCgpOwotCi0gICAgaWYgKCFpbnN0YWxsX2ltcG9ydGxpYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOwotCi0gICAgLyogaW5pdGlhbGl6ZSB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLwotICAgIGlmIChfUHlGYXVsdGhhbmRsZXJfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGZhdWx0aGFuZGxlciIpOwotCi0gICAgX1B5VGltZV9Jbml0KCk7Ci0KLSAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IHVuYWJsZSB0byBsb2FkIHRoZSBmaWxlIHN5c3RlbSBjb2RlYyIpOwotCi0gICAgaWYgKGluc3RhbGxfc2lncykKLSAgICAgICAgaW5pdHNpZ3MoKTsgLyogU2lnbmFsIGhhbmRsaW5nIHN0dWZmLCBpbmNsdWRpbmcgaW5pdGludHIoKSAqLwotCi0gICAgaWYgKF9QeVRyYWNlTWFsbG9jX0luaXQoKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdHJhY2VtYWxsb2MiKTsKLQotICAgIGluaXRtYWluKGludGVycCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLwotICAgIGlmIChpbml0c3RkaW8oKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwotCi0gICAgLyogSW5pdGlhbGl6ZSB3YXJuaW5ncy4gKi8KLSAgICBpZiAoUHlTeXNfSGFzV2Fybk9wdGlvbnMoKSkgewotICAgICAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJ3YXJuaW5ncyIpOwotICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJ2ltcG9ydCB3YXJuaW5ncycgZmFpbGVkOyB0cmFjZWJhY2s6XG4iKTsKLSAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfWERFQ1JFRih3YXJuaW5nc19tb2R1bGUpOwotICAgIH0KLQotICAgIGlmICghUHlfTm9TaXRlRmxhZykKLSAgICAgICAgaW5pdHNpdGUoKTsgLyogTW9kdWxlIHNpdGUgKi8KLX0KLQotdm9pZAotUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCi17Ci0gICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGluc3RhbGxfc2lncywgMSk7Ci19Ci0KLXZvaWQKLVB5X0luaXRpYWxpemUodm9pZCkKLXsKLSAgICBQeV9Jbml0aWFsaXplRXgoMSk7Ci19Ci0KLQotI2lmZGVmIENPVU5UX0FMTE9DUwotZXh0ZXJuIHZvaWQgZHVtcF9jb3VudHMoRklMRSopOwotI2VuZGlmCi0KLS8qIEZsdXNoIHN0ZG91dCBhbmQgc3RkZXJyICovCi0KLXN0YXRpYyBpbnQKLWZpbGVfaXNfY2xvc2VkKFB5T2JqZWN0ICpmb2JqKQotewotICAgIGludCByOwotICAgIFB5T2JqZWN0ICp0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvYmosICJjbG9zZWQiKTsKLSAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHIgPSBQeU9iamVjdF9Jc1RydWUodG1wKTsKLSAgICBQeV9ERUNSRUYodG1wKTsKLSAgICBpZiAociA8IDApCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgcmV0dXJuIHIgPiAwOwotfQotCi1zdGF0aWMgdm9pZAotZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKLSAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZm91dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgIH0KLQotICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwotICAgIH0KLX0KLQotLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KLQotICAgQmV3YXJlOiBpZiBtdWx0aXBsZSBpbnRlcnByZXRlciBhbmQvb3IgdGhyZWFkIHN0YXRlcyBleGlzdCwgdGhlc2UKLSAgIGFyZSBub3Qgd2lwZWQgb3V0OyBvbmx5IHRoZSBjdXJyZW50IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUKLSAgIGFyZSBkZWxldGVkLiAgQnV0IHNpbmNlIGV2ZXJ5dGhpbmcgZWxzZSBpcyBkZWxldGVkLCB0aG9zZSBvdGhlcgotICAgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCBzdGF0ZXMgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgotCi0gICAoWFhYIFdlIHNob3VsZCBkbyBiZXR0ZXIsIGUuZy4gd2lwZSBvdXQgYWxsIGludGVycHJldGVycyBhbmQKLSAgIHRocmVhZHMuKQotCi0gICBMb2NraW5nOiBhcyBhYm92ZS4KLQotKi8KLQotdm9pZAotUHlfRmluYWxpemUodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKLQotICAgIC8qIFRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBlbnRpcmVseSBpbnRhY3QgYXQgdGhpcyBwb2ludCwgYW5kIHRoZQotICAgICAqIGV4aXQgZnVuY3MgbWF5IGJlIHJlbHlpbmcgb24gdGhhdC4gIEluIHBhcnRpY3VsYXIsIGlmIHNvbWUgdGhyZWFkCi0gICAgICogb3IgZXhpdCBmdW5jIGlzIHN0aWxsIHdhaXRpbmcgdG8gZG8gYW4gaW1wb3J0LCB0aGUgaW1wb3J0IG1hY2hpbmVyeQotICAgICAqIGV4cGVjdHMgUHlfSXNJbml0aWFsaXplZCgpIHRvIHJldHVybiB0cnVlLiAgU28gZG9uJ3Qgc2F5IHRoZQotICAgICAqIGludGVycHJldGVyIGlzIHVuaW5pdGlhbGl6ZWQgdW50aWwgYWZ0ZXIgdGhlIGV4aXQgZnVuY3MgaGF2ZSBydW4uCi0gICAgICogTm90ZSB0aGF0IFRocmVhZGluZy5weSB1c2VzIGFuIGV4aXQgZnVuYyB0byBkbyBhIGpvaW4gb24gYWxsIHRoZQotICAgICAqIHRocmVhZHMgY3JlYXRlZCB0aHJ1IGl0LCBzbyB0aGlzIGFsc28gcHJvdGVjdHMgcGVuZGluZyBpbXBvcnRzIGluCi0gICAgICogdGhlIHRocmVhZHMgY3JlYXRlZCB2aWEgVGhyZWFkaW5nLgotICAgICAqLwotICAgIGNhbGxfcHlfZXhpdGZ1bmNzKCk7Ci0KLSAgICAvKiBHZXQgY3VycmVudCB0aHJlYWQgc3RhdGUgYW5kIGludGVycHJldGVyIHBvaW50ZXIgKi8KLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotCi0gICAgLyogUmVtYWluaW5nIHRocmVhZHMgKGUuZy4gZGFlbW9uIHRocmVhZHMpIHdpbGwgYXV0b21hdGljYWxseSBleGl0Ci0gICAgICAgYWZ0ZXIgdGFraW5nIHRoZSBHSUwgKGluIFB5RXZhbF9SZXN0b3JlVGhyZWFkKCkpLiAqLwotICAgIF9QeV9GaW5hbGl6aW5nID0gdHN0YXRlOwotICAgIGluaXRpYWxpemVkID0gMDsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKLQotICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCi0gICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwotCi0gICAgLyogQ29sbGVjdCBnYXJiYWdlLiAgVGhpcyBtYXkgY2FsbCBmaW5hbGl6ZXJzOyBpdCdzIG5pY2UgdG8gY2FsbCB0aGVzZQotICAgICAqIGJlZm9yZSBhbGwgbW9kdWxlcyBhcmUgZGVzdHJveWVkLgotICAgICAqIFhYWCBJZiBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgaGVyZSwgYW5kIHRyaWVzIHRvCi0gICAgICogWFhYIGltcG9ydCBhIG1vZHVsZSwgYmFkIHRoaW5ncyBjYW4gaGFwcGVuLCBiZWNhdXNlIFB5dGhvbiBubwotICAgICAqIFhYWCBsb25nZXIgYmVsaWV2ZXMgaXQncyBpbml0aWFsaXplZC4KLSAgICAgKiBYWFggICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogSW50ZXJwcmV0ZXIgbm90IGluaXRpYWxpemVkICh2ZXJzaW9uIG1pc21hdGNoPykKLSAgICAgKiBYWFggaXMgZWFzeSB0byBwcm92b2tlIHRoYXQgd2F5LiAgSSd2ZSBhbHNvIHNlZW4sIGUuZy4sCi0gICAgICogWFhYICAgICBFeGNlcHRpb24gZXhjZXB0aW9ucy5JbXBvcnRFcnJvcjogJ05vIG1vZHVsZSBuYW1lZCBzaGEnCi0gICAgICogWFhYICAgICAgICAgaW4gPGZ1bmN0aW9uIGNhbGxiYWNrIGF0IDB4MDA4RjU3MTg+IGlnbm9yZWQKLSAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKLSAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KLSAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgotICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQotICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCi0gICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKLSAgICAgICAgLyogbm90aGluZyAqLzsKLSNlbmRpZgotICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KLSAgICBQeUltcG9ydF9DbGVhbnVwKCk7Ci0KLSAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOwotCi0gICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQotICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KLSAgICAgKiBYWFggVGhpcyBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IGNhdXNlZCB0b28gbWFueSBwcm9ibGVtcy4gIElmCi0gICAgICogWFhYIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIHRyaWdnZXJzIGhlcmUsIFB5dGhvbiBjb2RlIGhhcwotICAgICAqIFhYWCBhIGhhcmQgdGltZSBydW5uaW5nLCBiZWNhdXNlIGV2ZW4gdGhlIHN5cyBtb2R1bGUgaGFzIGJlZW4KLSAgICAgKiBYWFggY2xlYXJlZCBvdXQgKHN5cy5zdGRvdXQgaXMgZ29uZSwgc3lzLmV4Y2VwdGhvb2sgaXMgZ29uZSwgZXRjKS4KLSAgICAgKiBYWFggT25lIHN5bXB0b20gaXMgYSBzZXF1ZW5jZSBvZiBpbmZvcm1hdGlvbi1mcmVlIG1lc3NhZ2VzCi0gICAgICogWFhYIGNvbWluZyBmcm9tIHRocmVhZHMgKGlmIGEgX19kZWxfXyBvciBjYWxsYmFjayBpcyBpbnZva2VkLAotICAgICAqIFhYWCBvdGhlciB0aHJlYWRzIGNhbiBleGVjdXRlIHRvbywgYW5kIGFueSBleGNlcHRpb24gdGhleSBlbmNvdW50ZXIKLSAgICAgKiBYWFggdHJpZ2dlcnMgYSBjb21lZHkgb2YgZXJyb3JzIGFzIHN1YnN5c3RlbSBhZnRlciBzdWJzeXN0ZW0KLSAgICAgKiBYWFggZmFpbHMgdG8gZmluZCB3aGF0IGl0ICpleHBlY3RzKiB0byBmaW5kIGluIHN5cyB0byBoZWxwIHJlcG9ydAotICAgICAqIFhYWCB0aGUgZXhjZXB0aW9uIGFuZCBjb25zZXF1ZW50IHVuZXhwZWN0ZWQgZmFpbHVyZXMpLiAgSSd2ZSBhbHNvCi0gICAgICogWFhYIHNlZW4gc2VnZmF1bHRzIHRoZW4sIGFmdGVyIGFkZGluZyBwcmludCBzdGF0ZW1lbnRzIHRvIHRoZQotICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KLSAgICAgKi8KLSNpZiAwCi0gICAgUHlHQ19Db2xsZWN0KCk7Ci0jZW5kaWYKLQotICAgIC8qIERpc2FibGUgdHJhY2VtYWxsb2MgYWZ0ZXIgYWxsIFB5dGhvbiBvYmplY3RzIGhhdmUgYmVlbiBkZXN0cm95ZWQsCi0gICAgICAgc28gaXQgaXMgcG9zc2libGUgdG8gdXNlIHRyYWNlbWFsbG9jIGluIG9iamVjdHMgZGVzdHJ1Y3Rvci4gKi8KLSAgICBfUHlUcmFjZU1hbGxvY19GaW5pKCk7Ci0KLSAgICAvKiBEZXN0cm95IHRoZSBkYXRhYmFzZSB1c2VkIGJ5IF9QeUltcG9ydF97Rml4dXAsRmluZH1FeHRlbnNpb24gKi8KLSAgICBfUHlJbXBvcnRfRmluaSgpOwotCi0gICAgLyogQ2xlYW51cCB0eXBlb2JqZWN0LmMncyBpbnRlcm5hbCBjYWNoZXMuICovCi0gICAgX1B5VHlwZV9GaW5pKCk7Ci0KLSAgICAvKiB1bmxvYWQgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLwotICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7Ci0KLSAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KLSNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOwotI2VuZGlmCi0gICAgLyogZHVtcCBoYXNoIHN0YXRzICovCi0gICAgX1B5SGFzaF9GaW5pKCk7Ci0KLSAgICBQUklOVF9UT1RBTF9SRUZTKCk7Ci0KLSNpZmRlZiBQeV9UUkFDRV9SRUZTCi0gICAgLyogRGlzcGxheSBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZSAtLSB0aGlzIGNhbiBpbnZva2UgYXJiaXRyYXJ5Ci0gICAgICogX19yZXByX18gb3ZlcnJpZGVzLCBzbyByZXF1aXJlcyBhIG1vc3RseS1pbnRhY3QgaW50ZXJwcmV0ZXIuCi0gICAgICogQWxhcywgYSBsb3Qgb2Ygc3R1ZmYgbWF5IHN0aWxsIGJlIGFsaXZlIG5vdyB0aGF0IHdpbGwgYmUgY2xlYW5lZAotICAgICAqIHVwIGxhdGVyLgotICAgICAqLwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCi0gICAgICAgIF9QeV9QcmludFJlZmVyZW5jZXMoc3RkZXJyKTsKLSNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0KLSAgICAvKiBDbGVhciBpbnRlcnByZXRlciBzdGF0ZSBhbmQgYWxsIHRocmVhZCBzdGF0ZXMuICovCi0gICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7Ci0KLSAgICAvKiBOb3cgd2UgZGVjcmVmIHRoZSBleGNlcHRpb24gY2xhc3Nlcy4gIEFmdGVyIHRoaXMgcG9pbnQgbm90aGluZwotICAgICAgIGNhbiByYWlzZSBhbiBleGNlcHRpb24uICBUaGF0J3Mgb2theSwgYmVjYXVzZSBlYWNoIEZpbmkoKSBtZXRob2QKLSAgICAgICBiZWxvdyBoYXMgYmVlbiBjaGVja2VkIHRvIG1ha2Ugc3VyZSBubyBleGNlcHRpb25zIGFyZSBldmVyCi0gICAgICAgcmFpc2VkLgotICAgICovCi0KLSAgICBfUHlFeGNfRmluaSgpOwotCi0gICAgLyogU3VuZHJ5IGZpbmFsaXplcnMgKi8KLSAgICBQeU1ldGhvZF9GaW5pKCk7Ci0gICAgUHlGcmFtZV9GaW5pKCk7Ci0gICAgUHlDRnVuY3Rpb25fRmluaSgpOwotICAgIFB5VHVwbGVfRmluaSgpOwotICAgIFB5TGlzdF9GaW5pKCk7Ci0gICAgUHlTZXRfRmluaSgpOwotICAgIFB5Qnl0ZXNfRmluaSgpOwotICAgIFB5Qnl0ZUFycmF5X0ZpbmkoKTsKLSAgICBQeUxvbmdfRmluaSgpOwotICAgIFB5RmxvYXRfRmluaSgpOwotICAgIFB5RGljdF9GaW5pKCk7Ci0gICAgUHlTbGljZV9GaW5pKCk7Ci0gICAgX1B5R0NfRmluaSgpOwotICAgIF9QeVJhbmRvbV9GaW5pKCk7Ci0KLSAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KLSAgICBfUHlVbmljb2RlX0ZpbmkoKTsKLQotICAgIC8qIHJlc2V0IGZpbGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcgKi8KLSAgICBpZiAoIVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgewotICAgICAgICBQeU1lbV9SYXdGcmVlKChjaGFyKilQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKLSAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7Ci0gICAgfQotCi0gICAgLyogWFhYIFN0aWxsIGFsbG9jYXRlZDoKLSAgICAgICAtIHZhcmlvdXMgc3RhdGljIGFkLWhvYyBwb2ludGVycyB0byBpbnRlcm5lZCBzdHJpbmdzCi0gICAgICAgLSBpbnQgYW5kIGZsb2F0IGZyZWUgbGlzdCBibG9ja3MKLSAgICAgICAtIHdoYXRldmVyIHZhcmlvdXMgbW9kdWxlcyBhbmQgbGlicmFyaWVzIGFsbG9jYXRlCi0gICAgKi8KLQotICAgIFB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMoJl9QeVBhcnNlcl9HcmFtbWFyKTsKLQotICAgIC8qIENsZWFudXAgYXV0by10aHJlYWQtc3RhdGUgKi8KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUdJTFN0YXRlX0ZpbmkoKTsKLSNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwotCi0gICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCi0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQotI2lmZGVmIFB5X1RSQUNFX1JFRlMKLSAgICAvKiBEaXNwbGF5IGFkZHJlc3NlcyAoJiByZWZjbnRzKSBvZiBhbGwgb2JqZWN0cyBzdGlsbCBhbGl2ZS4KLSAgICAgKiBBbiBhZGRyZXNzIGNhbiBiZSB1c2VkIHRvIGZpbmQgdGhlIHJlcHIgb2YgdGhlIG9iamVjdCwgcHJpbnRlZAotICAgICAqIGFib3ZlIGJ5IF9QeV9QcmludFJlZmVyZW5jZXMuCi0gICAgICovCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKLSAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7Ci0jZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSNlbmRpZgotCi0gICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKLX0KLQotLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCi0gICBuZXcgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IFB5X0luaXRpYWxpemUoKSBoYXMgYmVlbiBjYWxsZWQKLSAgIGZpcnN0LgotCi0gICBVbnN1Y2Nlc3NmdWwgaW5pdGlhbGl6YXRpb24geWllbGRzIGEgTlVMTCBwb2ludGVyLiAgTm90ZSB0aGF0ICpubyoKLSAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZXZlbiBpbiB0aGlzIGNhc2UgLS0gdGhlCi0gICBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgaGVsZCBpbiB0aGUgdGhyZWFkLCBhbmQgdGhlcmUgaXMgbm8KLSAgIHRocmVhZC4KLQotICAgTG9ja2luZzogYXMgYWJvdmUuCi0KLSovCi0KLVB5VGhyZWFkU3RhdGUgKgotUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUsICpzYXZlX3RzdGF0ZTsKLSAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2Q7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7Ci0KLSAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7Ci0gICAgaWYgKGludGVycCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV3KGludGVycCk7Ci0gICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc2F2ZV90c3RhdGUgPSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKLQotICAgIC8qIFhYWCBUaGUgZm9sbG93aW5nIGlzIGxheCBpbiBlcnJvciBjaGVja2luZyAqLwotCi0gICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotCi0gICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7Ci0gICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKLSAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOwotICAgICAgICBpZiAoaW50ZXJwLT5idWlsdGlucyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7Ci0gICAgICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKLSAgICB9Ci0KLSAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKLQotICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7Ci0gICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7Ci0KLSAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOwotICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKLSAgICAgICAgUHlfSU5DUkVGKGludGVycC0+c3lzZGljdCk7Ci0gICAgICAgIFB5U3lzX1NldFBhdGgoUHlfR2V0UGF0aCgpKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW50ZXJwLT5zeXNkaWN0LCAibW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7Ci0gICAgICAgIC8qIFNldCB1cCBhIHByZWxpbWluYXJ5IHN0ZGVyciBwcmludGVyIHVudGlsIHdlIGhhdmUgZW5vdWdoCi0gICAgICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLwotICAgICAgICBwc3RkZXJyID0gUHlGaWxlX05ld1N0ZFByaW50ZXIoZmlsZW5vKHN0ZGVycikpOwotICAgICAgICBpZiAocHN0ZGVyciA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOwotICAgICAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyLCBwc3RkZXJyKTsKLSAgICAgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgcHN0ZGVycik7Ci0gICAgICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKLQotICAgICAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7Ci0KLSAgICAgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOwotCi0gICAgICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKLSAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwotCi0gICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKLSAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKLSAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQotICAgICAgICAgICAgaW5pdHNpdGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiB0c3RhdGU7Ci0KLWhhbmRsZV9lcnJvcjoKLSAgICAvKiBPb3BzLCBpdCBkaWRuJ3Qgd29yay4gIFVuZG8gaXQgYWxsLiAqLwotCi0gICAgUHlFcnJfUHJpbnRFeCgwKTsKLSAgICBQeVRocmVhZFN0YXRlX0NsZWFyKHRzdGF0ZSk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKHNhdmVfdHN0YXRlKTsKLSAgICBQeVRocmVhZFN0YXRlX0RlbGV0ZSh0c3RhdGUpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiBEZWxldGUgYW4gaW50ZXJwcmV0ZXIgYW5kIGl0cyBsYXN0IHRocmVhZC4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUKLSAgIGdpdmVuIHRocmVhZCBzdGF0ZSBpcyBjdXJyZW50LCB0aGF0IHRoZSB0aHJlYWQgaGFzIG5vIHJlbWFpbmluZwotICAgZnJhbWVzLCBhbmQgdGhhdCBpdCBpcyBpdHMgaW50ZXJwcmV0ZXIncyBvbmx5IHJlbWFpbmluZyB0aHJlYWQuCi0gICBJdCBpcyBhIGZhdGFsIGVycm9yIHRvIHZpb2xhdGUgdGhlc2UgY29uc3RyYWludHMuCi0KLSAgIChQeV9GaW5hbGl6ZSgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCi0gICBldmVyeXRoaW5nLCByZWdhcmRsZXNzLikKLQotICAgTG9ja2luZzogYXMgYWJvdmUuCi0KLSovCi0KLXZvaWQKLVB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotCi0gICAgaWYgKHRzdGF0ZSAhPSBQeVRocmVhZFN0YXRlX0dFVCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIGlzIG5vdCBjdXJyZW50Iik7Ci0gICAgaWYgKHRzdGF0ZS0+ZnJhbWUgIT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IHRocmVhZCBzdGlsbCBoYXMgYSBmcmFtZSIpOwotCi0gICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7Ci0KLSAgICBpZiAodHN0YXRlICE9IGludGVycC0+dHN0YXRlX2hlYWQgfHwgdHN0YXRlLT5uZXh0ICE9IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiBub3QgdGhlIGxhc3QgdGhyZWFkIik7Ci0KLSAgICBQeUltcG9ydF9DbGVhbnVwKCk7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKGludGVycCk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOwotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKLX0KLQotI2lmZGVmIE1TX1dJTkRPV1MKLXN0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uIjsKLSNlbHNlCi1zdGF0aWMgd2NoYXJfdCAqcHJvZ25hbWUgPSBMInB5dGhvbjMiOwotI2VuZGlmCi0KLXZvaWQKLVB5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKnBuKQotewotICAgIGlmIChwbiAmJiAqcG4pCi0gICAgICAgIHByb2duYW1lID0gcG47Ci19Ci0KLXdjaGFyX3QgKgotUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCkKLXsKLSAgICByZXR1cm4gcHJvZ25hbWU7Ci19Ci0KLXN0YXRpYyB3Y2hhcl90ICpkZWZhdWx0X2hvbWUgPSBOVUxMOwotc3RhdGljIHdjaGFyX3QgZW52X2hvbWVbTUFYUEFUSExFTisxXTsKLQotdm9pZAotUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICpob21lKQotewotICAgIGRlZmF1bHRfaG9tZSA9IGhvbWU7Ci19Ci0KLXdjaGFyX3QgKgotUHlfR2V0UHl0aG9uSG9tZSh2b2lkKQotewotICAgIHdjaGFyX3QgKmhvbWUgPSBkZWZhdWx0X2hvbWU7Ci0gICAgaWYgKGhvbWUgPT0gTlVMTCAmJiAhUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7Ci0gICAgICAgIGNoYXIqIGNob21lID0gUHlfR0VURU5WKCJQWVRIT05IT01FIik7Ci0gICAgICAgIGlmIChjaG9tZSkgewotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoZW52X2hvbWUpOwotICAgICAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyhlbnZfaG9tZSwgY2hvbWUsIHNpemUpOwotICAgICAgICAgICAgaWYgKHIgIT0gKHNpemVfdCktMSAmJiByIDwgc2l6ZSkKLSAgICAgICAgICAgICAgICBob21lID0gZW52X2hvbWU7Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICByZXR1cm4gaG9tZTsKLX0KLQotLyogQ3JlYXRlIF9fbWFpbl9fIG1vZHVsZSAqLwotCi1zdGF0aWMgdm9pZAotaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCi17Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOwotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7Ci0gICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoYmltb2QpOwotICAgIH0KLSAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgotICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKLSAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCi0gICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAotICAgICAqIHByb2Nlc3MuCi0gICAgICovCi0gICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iKTsKLSAgICBpZiAobG9hZGVyID09IE5VTEwgfHwgbG9hZGVyID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlPYmplY3QgKmxvYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsdGluSW1wb3J0ZXIiKTsKLSAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgQnVpbHRpbkltcG9ydGVyIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18iKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbnQKLWluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQotewotICAgIFB5T2JqZWN0ICpjb2RlYzsKLQotICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCi0gICAgewotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwotICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7Ci0KLSAgICAgICAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7Ci0gICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwotICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwotICAgIGlmICghY29kZWMpIHsKLSAgICAgICAgLyogU3VjaCBlcnJvciBjYW4gb25seSBvY2N1cnMgaW4gY3JpdGljYWwgc2l0dWF0aW9uczogbm8gbW9yZQotICAgICAgICAgKiBtZW1vcnksIGltcG9ydCBhIG1vZHVsZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBmYWlsZWQsCi0gICAgICAgICAqIGV0Yy4gKi8KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoY29kZWMpOwotICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIEltcG9ydCB0aGUgc2l0ZSBtb2R1bGUgKG5vdCBpbnRvIF9fbWFpbl9fIHRob3VnaCkgKi8KLQotc3RhdGljIHZvaWQKLWluaXRzaXRlKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2l0ZSIpOwotICAgIGlmIChtID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZVxuIik7Ci0gICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIFB5X0ZpbmFsaXplKCk7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgfQotfQotCi0vKiBDaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvciBub3QuCi0gICBSZXR1cm4gMCBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGludmFsaWQsIHJldHVybiBub24temVybyBvdGhlcndpc2UuICovCi1zdGF0aWMgaW50Ci1pc192YWxpZF9mZChpbnQgZmQpCi17Ci0gICAgaW50IGZkMjsKLSAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBmZDIgPSBkdXAoZmQpOwotICAgIGlmIChmZDIgPj0gMCkKLSAgICAgICAgY2xvc2UoZmQyKTsKLSAgICByZXR1cm4gZmQyID49IDA7Ci19Ci0KLS8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCi1zdGF0aWMgUHlPYmplY3QqCi1jcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKLXsKLSAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7Ci0gICAgY29uc3QgY2hhciogbW9kZTsKLSAgICBjb25zdCBjaGFyKiBuZXdsaW5lOwotICAgIFB5T2JqZWN0ICpsaW5lX2J1ZmZlcmluZzsKLSAgICBpbnQgYnVmZmVyaW5nLCBpc2F0dHk7Ci0gICAgX1B5X0lERU5USUZJRVIob3Blbik7Ci0gICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKLSAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKLSAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKLQotICAgIGlmICghaXNfdmFsaWRfZmQoZmQpKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLQotICAgIC8qIHN0ZGluIGlzIGFsd2F5cyBvcGVuZWQgaW4gYnVmZmVyZWQgbW9kZSwgZmlyc3QgYmVjYXVzZSBpdCBzaG91bGRuJ3QKLSAgICAgICBtYWtlIGEgZGlmZmVyZW5jZSBpbiBjb21tb24gdXNlIGNhc2VzLCBzZWNvbmQgYmVjYXVzZSBUZXh0SU9XcmFwcGVyCi0gICAgICAgZGVwZW5kcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSByZWFkMSgpIG1ldGhvZCB3aGljaCBvbmx5IGV4aXN0cyBvbgotICAgICAgIGJ1ZmZlcmVkIHN0cmVhbXMuCi0gICAgKi8KLSAgICBpZiAoUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyAmJiB3cml0ZV9tb2RlKQotICAgICAgICBidWZmZXJpbmcgPSAwOwotICAgIGVsc2UKLSAgICAgICAgYnVmZmVyaW5nID0gLTE7Ci0gICAgaWYgKHdyaXRlX21vZGUpCi0gICAgICAgIG1vZGUgPSAid2IiOwotICAgIGVsc2UKLSAgICAgICAgbW9kZSA9ICJyYiI7Ci0gICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOwotICAgIGlmIChidWYgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmIChidWZmZXJpbmcpIHsKLSAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKLSAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7Ci0gICAgICAgIGlmIChyYXcgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByYXcgPSBidWY7Ci0gICAgICAgIFB5X0lOQ1JFRihyYXcpOwotICAgIH0KLQotICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKLSAgICBQeV9ERUNSRUYocmVzKTsKLSAgICBpZiAoaXNhdHR5ID09IC0xKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChpc2F0dHkgfHwgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZykKLSAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9UcnVlOwotICAgIGVsc2UKLSAgICAgICAgbGluZV9idWZmZXJpbmcgPSBQeV9GYWxzZTsKLQotICAgIFB5X0NMRUFSKHJhdyk7Ci0gICAgUHlfQ0xFQVIodGV4dCk7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogc3lzLnN0ZGluOiBlbmFibGUgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSwgdHJhbnNsYXRlICJcclxuIiBhbmQgIlxyIgotICAgICAgIG5ld2xpbmVzIHRvICJcbiIuCi0gICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogdHJhbnNsYXRlICJcbiIgdG8gIlxyXG4iLiAqLwotICAgIG5ld2xpbmUgPSBOVUxMOwotI2Vsc2UKLSAgICAvKiBzeXMuc3RkaW46IHNwbGl0IGxpbmVzIGF0ICJcbiIuCi0gICAgICAgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVycjogZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzICh1c2UgIlxuIikuICovCi0gICAgbmV3bGluZSA9ICJcbiI7Ci0jZW5kaWYKLQotICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX1RleHRJT1dyYXBwZXIsICJPc3NzTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7Ci0gICAgUHlfQ0xFQVIoYnVmKTsKLSAgICBpZiAoc3RyZWFtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBpZiAod3JpdGVfbW9kZSkKLSAgICAgICAgbW9kZSA9ICJ3IjsKLSAgICBlbHNlCi0gICAgICAgIG1vZGUgPSAiciI7Ci0gICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1vZGUpOwotICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5X0NMRUFSKHRleHQpOwotICAgIHJldHVybiBzdHJlYW07Ci0KLWVycm9yOgotICAgIFB5X1hERUNSRUYoYnVmKTsKLSAgICBQeV9YREVDUkVGKHN0cmVhbSk7Ci0gICAgUHlfWERFQ1JFRih0ZXh0KTsKLSAgICBQeV9YREVDUkVGKHJhdyk7Ci0KLSAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSAmJiAhaXNfdmFsaWRfZmQoZmQpKSB7Ci0gICAgICAgIC8qIElzc3VlICMyNDg5MTogdGhlIGZpbGUgZGVzY3JpcHRvciB3YXMgY2xvc2VkIGFmdGVyIHRoZSBmaXJzdAotICAgICAgICAgICBpc192YWxpZF9mZCgpIGNoZWNrIHdhcyBjYWxsZWQuIElnbm9yZSB0aGUgT1NFcnJvciBhbmQgc2V0IHRoZQotICAgICAgICAgICBzdHJlYW0gdG8gTm9uZS4gKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiBJbml0aWFsaXplIHN5cy5zdGRpbiwgc3Rkb3V0LCBzdGRlcnIgYW5kIGJ1aWx0aW5zLm9wZW4gKi8KLXN0YXRpYyBpbnQKLWluaXRzdGRpbyh2b2lkKQotewotICAgIFB5T2JqZWN0ICppb21vZCA9IE5VTEwsICp3cmFwcGVyOwotICAgIFB5T2JqZWN0ICpiaW1vZCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKnN0ZCA9IE5VTEw7Ci0gICAgaW50IHN0YXR1cyA9IDAsIGZkOwotICAgIFB5T2JqZWN0ICogZW5jb2RpbmdfYXR0cjsKLSAgICBjaGFyICpweXRob25pb2VuY29kaW5nID0gTlVMTCwgKmVuY29kaW5nLCAqZXJyb3JzOwotCi0gICAgLyogSGFjayB0byBhdm9pZCBhIG5hc3R5IHJlY3Vyc2lvbiBpc3N1ZSB3aGVuIFB5dGhvbiBpcyBpbnZva2VkCi0gICAgICAgaW4gdmVyYm9zZSBtb2RlOiBwcmUtaW1wb3J0IHRoZSBMYXRpbi0xIGFuZCBVVEYtOCBjb2RlY3MgKi8KLSAgICBpZiAoKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy51dGZfOCIpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtKTsKLQotICAgIGlmICghKG0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImVuY29kaW5ncy5sYXRpbl8xIikpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtKTsKLQotICAgIGlmICghKGJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIGlmICghKGlvbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpKSkgewotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBpZiAoISh3cmFwcGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpb21vZCwgIk9wZW5XcmFwcGVyIikpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgLyogU2V0IGJ1aWx0aW5zLm9wZW4gKi8KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhiaW1vZCwgIm9wZW4iLCB3cmFwcGVyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKLQotICAgIGVuY29kaW5nID0gX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2Rpbmc7Ci0gICAgZXJyb3JzID0gX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzOwotICAgIGlmICghZW5jb2RpbmcgfHwgIWVycm9ycykgewotICAgICAgICBweXRob25pb2VuY29kaW5nID0gUHlfR0VURU5WKCJQWVRIT05JT0VOQ09ESU5HIik7Ci0gICAgICAgIGlmIChweXRob25pb2VuY29kaW5nKSB7Ci0gICAgICAgICAgICBjaGFyICplcnI7Ci0gICAgICAgICAgICBweXRob25pb2VuY29kaW5nID0gX1B5TWVtX1N0cmR1cChweXRob25pb2VuY29kaW5nKTsKLSAgICAgICAgICAgIGlmIChweXRob25pb2VuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnIgPSBzdHJjaHIocHl0aG9uaW9lbmNvZGluZywgJzonKTsKLSAgICAgICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgICAgICAqZXJyID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBlcnIrKzsKLSAgICAgICAgICAgICAgICBpZiAoKmVyciAmJiAhZXJyb3JzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGVycjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKnB5dGhvbmlvZW5jb2RpbmcgJiYgIWVuY29kaW5nKSB7Ci0gICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBweXRob25pb2VuY29kaW5nOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogU2V0IHN5cy5zdGRpbiAqLwotICAgIGZkID0gZmlsZW5vKHN0ZGluKTsKLSAgICAvKiBVbmRlciBzb21lIGNvbmRpdGlvbnMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIG1heSBub3QgYmUgY29ubmVjdGVkCi0gICAgICogYW5kIGZpbGVubygpIG1heSBwb2ludCB0byBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4gRm9yIGV4YW1wbGUKLSAgICAgKiBHVUkgYXBwcyBkb24ndCBoYXZlIHZhbGlkIHN0YW5kYXJkIHN0cmVhbXMgYnkgZGVmYXVsdC4KLSAgICAgKi8KLSAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAwLCAiPHN0ZGluPiIsIGVuY29kaW5nLCBlcnJvcnMpOwotICAgIGlmIChzdGQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkaW5fXyIsIHN0ZCk7Ci0gICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGluLCBzdGQpOwotICAgIFB5X0RFQ1JFRihzdGQpOwotCi0gICAgLyogU2V0IHN5cy5zdGRvdXQgKi8KLSAgICBmZCA9IGZpbGVubyhzdGRvdXQpOwotICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3Rkb3V0PiIsIGVuY29kaW5nLCBlcnJvcnMpOwotICAgIGlmIChzdGQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeVN5c19TZXRPYmplY3QoIl9fc3Rkb3V0X18iLCBzdGQpOwotICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQsIHN0ZCk7Ci0gICAgUHlfREVDUkVGKHN0ZCk7Ci0KLSNpZiAxIC8qIERpc2FibGUgdGhpcyBpZiB5b3UgaGF2ZSB0cm91YmxlIGRlYnVnZ2luZyBib290c3RyYXAgc3R1ZmYgKi8KLSAgICAvKiBTZXQgc3lzLnN0ZGVyciwgcmVwbGFjZXMgdGhlIHByZWxpbWluYXJ5IHN0ZGVyciAqLwotICAgIGZkID0gZmlsZW5vKHN0ZGVycik7Ci0gICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMSwgIjxzdGRlcnI+IiwgZW5jb2RpbmcsICJiYWNrc2xhc2hyZXBsYWNlIik7Ci0gICAgaWYgKHN0ZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgLyogU2FtZSBhcyBoYWNrIGFib3ZlLCBwcmUtaW1wb3J0IHN0ZGVycidzIGNvZGVjIHRvIGF2b2lkIHJlY3Vyc2lvbgotICAgICAgIHdoZW4gaW1wb3J0LmMgdHJpZXMgdG8gd3JpdGUgdG8gc3RkZXJyIGluIHZlcmJvc2UgbW9kZS4gKi8KLSAgICBlbmNvZGluZ19hdHRyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdGQsICJlbmNvZGluZyIpOwotICAgIGlmIChlbmNvZGluZ19hdHRyICE9IE5VTEwpIHsKLSAgICAgICAgY29uc3QgY2hhciAqIHN0ZF9lbmNvZGluZzsKLSAgICAgICAgc3RkX2VuY29kaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZyhlbmNvZGluZ19hdHRyKTsKLSAgICAgICAgaWYgKHN0ZF9lbmNvZGluZyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqY29kZWNfaW5mbyA9IF9QeUNvZGVjX0xvb2t1cChzdGRfZW5jb2RpbmcpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihjb2RlY19pbmZvKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmdfYXR0cik7Ci0gICAgfQotICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBOb3QgYSBmYXRhbCBlcnJvciBpZiBjb2RlYyBpc24ndCBhdmFpbGFibGUgKi8KLQotICAgIGlmIChQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBzdGQpIDwgMCkgewotICAgICAgICBQeV9ERUNSRUYoc3RkKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgaWYgKF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHN0ZCkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdGQpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9ERUNSRUYoc3RkKTsKLSNlbmRpZgotCi0gICAgaWYgKDApIHsKLSAgZXJyb3I6Ci0gICAgICAgIHN0YXR1cyA9IC0xOwotICAgIH0KLQotICAgIC8qIFdlIHdvbid0IG5lZWQgdGhlbSBhbnltb3JlLiAqLwotICAgIGlmIChfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgewotICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKTsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBOVUxMOwotICAgIH0KLSAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKSB7Ci0gICAgICAgIFB5TWVtX1Jhd0ZyZWUoX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKTsKLSAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gTlVMTDsKLSAgICB9Ci0gICAgUHlNZW1fRnJlZShweXRob25pb2VuY29kaW5nKTsKLSAgICBQeV9YREVDUkVGKGJpbW9kKTsKLSAgICBQeV9YREVDUkVGKGlvbW9kKTsKLSAgICByZXR1cm4gc3RhdHVzOwotfQogCiAvKiBQYXJzZSBpbnB1dCBmcm9tIGEgZmlsZSBhbmQgZXhlY3V0ZSBpdCAqLwogCkBAIC0xMzE3LDcgKzExMCw3IEBACiAgICAgZXJyID0gLTE7CiAgICAgZm9yICg7OykgewogICAgICAgICByZXQgPSBQeVJ1bl9JbnRlcmFjdGl2ZU9uZU9iamVjdChmcCwgZmlsZW5hbWUsIGZsYWdzKTsKLSAgICAgICAgUFJJTlRfVE9UQUxfUkVGUygpOworICAgICAgICBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpOwogICAgICAgICBpZiAocmV0ID09IEVfRU9GKSB7CiAgICAgICAgICAgICBlcnIgPSAwOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDcyLDcgKzI2NSw3IEBACiBzdGF0aWMgaW50CiBtYXliZV9weWNfZmlsZShGSUxFICpmcCwgY29uc3QgY2hhciogZmlsZW5hbWUsIGNvbnN0IGNoYXIqIGV4dCwgaW50IGNsb3NlaXQpCiB7Ci0gICAgaWYgKHN0cmNtcChleHQsICIucHljIikgPT0gMCB8fCBzdHJjbXAoZXh0LCAiLnB5byIpID09IDApCisgICAgaWYgKHN0cmNtcChleHQsICIucHljIikgPT0gMCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvKiBPbmx5IGxvb2sgaW50byB0aGUgZmlsZSBpZiB3ZSBhcmUgYWxsb3dlZCB0byBjbG9zZSBpdCwgc2luY2UKQEAgLTE1MTEsNyArMzA0LDcgQEAKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lX29iaiwgKmxvYWRlcl90eXBlLCAqbG9hZGVyOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmosICpib290c3RyYXAsICpsb2FkZXJfdHlwZSA9IE5VTEwsICpsb2FkZXI7CiAgICAgaW50IHJlc3VsdCA9IDA7CiAKICAgICBmaWxlbmFtZV9vYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKQEAgLTE1MjAsNyArMzEzLDEyIEBACiAgICAgLyogR2V0IGN1cnJlbnQgdGhyZWFkIHN0YXRlIGFuZCBpbnRlcnByZXRlciBwb2ludGVyICovCiAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBpbnRlcnAgPSB0c3RhdGUtPmludGVycDsKLSAgICBsb2FkZXJfdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsIGxvYWRlcl9uYW1lKTsKKyAgICBib290c3RyYXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9ib290c3RyYXBfZXh0ZXJuYWwiKTsKKyAgICBpZiAoYm9vdHN0cmFwICE9IE5VTEwpIHsKKyAgICAgICAgbG9hZGVyX3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJvb3RzdHJhcCwgbG9hZGVyX25hbWUpOworICAgICAgICBQeV9ERUNSRUYoYm9vdHN0cmFwKTsKKyAgICB9CiAgICAgaWYgKGxvYWRlcl90eXBlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lX29iaik7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE1NzgsOSArMzc2LDYgQEAKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBDYW4ndCByZW9wZW4gLnB5YyBmaWxlXG4iKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQotICAgICAgICAvKiBUdXJuIG9uIG9wdGltaXphdGlvbiBpZiBhIC5weW8gZmlsZSBpcyBnaXZlbiAqLwotICAgICAgICBpZiAoc3RyY21wKGV4dCwgIi5weW8iKSA9PSAwKQotICAgICAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gMTsKIAogICAgICAgICBpZiAoc2V0X21haW5fbG9hZGVyKGQsIGZpbGVuYW1lLCAiU291cmNlbGVzc0ZpbGVMb2FkZXIiKSA8IDApIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBmYWlsZWQgdG8gc2V0IF9fbWFpbl9fLl9fbG9hZGVyX19cbiIpOwpAQCAtMTcyNCw3ICs1MTksNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAob2Zmc2V0ID49IDApIHsKLSAgICAgICAgaWYgKG9mZnNldCA+IDAgJiYgb2Zmc2V0ID09IHN0cmxlbih0ZXh0KSAmJiB0ZXh0W29mZnNldCAtIDFdID09ICdcbicpCisgICAgICAgIGlmIChvZmZzZXQgPiAwICYmIChzaXplX3Qpb2Zmc2V0ID09IHN0cmxlbih0ZXh0KSAmJiB0ZXh0W29mZnNldCAtIDFdID09ICdcbicpCiAgICAgICAgICAgICBvZmZzZXQtLTsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgbmwgPSBzdHJjaHIodGV4dCwgJ1xuJyk7CkBAIC0yMTg4LDEzICs5ODMsMTcgQEAKIAogICAgIG1hZ2ljID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgIGlmIChtYWdpYyAhPSBQeUltcG9ydF9HZXRNYWdpY051bWJlcigpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlIik7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICJCYWQgbWFnaWMgbnVtYmVyIGluIC5weWMgZmlsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogU2tpcCBtdGltZSBhbmQgc2l6ZSAqLwogICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB2ID0gUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUoZnApOwogICAgIGlmICh2ID09IE5VTEwgfHwgIVB5Q29kZV9DaGVjayh2KSkgewogICAgICAgICBQeV9YREVDUkVGKHYpOwpAQCAtMjU4MiwyNzYgKzEzODEsNiBAQAogICAgIH0KIH0KIAotLyogUHJpbnQgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCi0gKiBvciBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjay4KLSAqCi0gKiBEb24ndCBjYWxsIFB5RXJyX1ByaW50RXgoKSBhbmQgdGhlIGV4Y2VwdCBob29rLCBiZWNhdXNlIFB5X0ZhdGFsRXJyb3IoKSBpcwotICogY2FsbGVkIG9uIGNhdGFzdHJvcGhpYyBjYXNlcy4gKi8KLQotc3RhdGljIHZvaWQKLV9QeV9QcmludEZhdGFsRXJyb3IoaW50IGZkKQotewotICAgIFB5T2JqZWN0ICpmZXJyLCAqcmVzOwotICAgIFB5T2JqZWN0ICpleGNlcHRpb24sICp2LCAqdGI7Ci0gICAgaW50IGhhc190YjsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdiwgJnRiKTsKLSAgICBpZiAoZXhjZXB0aW9uID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gY3VycmVudCBleGNlcHRpb24gKi8KLSAgICAgICAgZ290byBkaXNwbGF5X3N0YWNrOwotICAgIH0KLQotICAgIGZlcnIgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKLSAgICBpZiAoZmVyciA9PSBOVUxMIHx8IGZlcnIgPT0gUHlfTm9uZSkgewotICAgICAgICAvKiBzeXMuc3RkZXJyIGlzIG5vdCBzZXQgeWV0IG9yIHNldCB0byBOb25lLAotICAgICAgICAgICBubyBuZWVkIHRvIHRyeSB0byBkaXNwbGF5IHRoZSBleGNlcHRpb24gKi8KLSAgICAgICAgZ290byBkaXNwbGF5X3N0YWNrOwotICAgIH0KLQotICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjZXB0aW9uLCAmdiwgJnRiKTsKLSAgICBpZiAodGIgPT0gTlVMTCkgewotICAgICAgICB0YiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih0Yik7Ci0gICAgfQotICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2LCB0Yik7Ci0gICAgaWYgKGV4Y2VwdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigpIGZhaWxlZCAqLwotICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7Ci0gICAgfQotCi0gICAgaGFzX3RiID0gKHRiICE9IE5VTEwgJiYgdGIgIT0gUHlfTm9uZSk7Ci0gICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKLSAgICBQeV9YREVDUkVGKGV4Y2VwdGlvbik7Ci0gICAgUHlfWERFQ1JFRih2KTsKLSAgICBQeV9YREVDUkVGKHRiKTsKLQotICAgIC8qIHN5cy5zdGRlcnIgbWF5IGJlIGJ1ZmZlcmVkOiBjYWxsIHN5cy5zdGRlcnIuZmx1c2goKSAqLwotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZQotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLQotICAgIGlmIChoYXNfdGIpCi0gICAgICAgIHJldHVybjsKLQotZGlzcGxheV9zdGFjazoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLwotICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7Ci0jZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0jZW5kaWYKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKLSAgICBmZmx1c2goc3RkZXJyKTsKLQotICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKLX0KLQotLyogUHJpbnQgZmF0YWwgZXJyb3IgbWVzc2FnZSBhbmQgYWJvcnQgKi8KLQotdm9pZAotUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCi17Ci0gICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7Ci0gICAgc3RhdGljIGludCByZWVudHJhbnQgPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBzaXplX3QgbGVuOwotICAgIFdDSEFSKiBidWZmZXI7Ci0gICAgc2l6ZV90IGk7Ci0jZW5kaWYKLQotICAgIGlmIChyZWVudHJhbnQpIHsKLSAgICAgICAgLyogUHlfRmF0YWxFcnJvcigpIGNhdXNlZCBhIHNlY29uZCBmYXRhbCBlcnJvci4KLSAgICAgICAgICAgRXhhbXBsZTogZmx1c2hfc3RkX2ZpbGVzKCkgcmFpc2VzIGEgcmVjdXJzaW9uIGVycm9yLiAqLwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotICAgIHJlZW50cmFudCA9IDE7Ci0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogJXNcbiIsIG1zZyk7Ci0gICAgZmZsdXNoKHN0ZGVycik7IC8qIGl0IGhlbHBzIGluIFdpbmRvd3MgZGVidWcgYnVpbGQgKi8KLQotICAgIC8qIFByaW50IHRoZSBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKLSAgICAgKiBvciBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjay4gKi8KLSAgICBfUHlfUHJpbnRGYXRhbEVycm9yKGZkKTsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKLQotICAgIC8qIFRoZSBtYWluIHB1cnBvc2Ugb2YgZmF1bHRoYW5kbGVyIGlzIHRvIGRpc3BsYXkgdGhlIHRyYWNlYmFjay4gV2UgYWxyZWFkeQotICAgICAqIGRpZCBvdXIgYmVzdCB0byBkaXNwbGF5IGl0LiBTbyBmYXVsdGhhbmRsZXIgY2FuIG5vdyBiZSBkaXNhYmxlZC4KLSAgICAgKiAoRG9uJ3QgdHJpZ2dlciBpdCBvbiBhYm9ydCgpLikgKi8KLSAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOwotCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIGxlbiA9IHN0cmxlbihtc2cpOwotCi0gICAgLyogQ29udmVydCB0aGUgbWVzc2FnZSB0byB3Y2hhcl90LiBUaGlzIHVzZXMgYSBzaW1wbGUgb25lLXRvLW9uZQotICAgIGNvbnZlcnNpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHRoaXMgZXJyb3IgbWVzc2FnZSBhY3R1YWxseSB1c2VzIEFTQ0lJCi0gICAgb25seS4gSWYgdGhpcyBjZWFzZXMgdG8gYmUgdHJ1ZSwgd2Ugd2lsbCBoYXZlIHRvIGNvbnZlcnQuICovCi0gICAgYnVmZmVyID0gYWxsb2NhKCAobGVuKzEpICogKHNpemVvZiAqYnVmZmVyKSk7Ci0gICAgZm9yKCBpPTA7IGk8PWxlbjsgKytpKQotICAgICAgICBidWZmZXJbaV0gPSBtc2dbaV07Ci0gICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coYnVmZmVyKTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coTCJcbiIpOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLQotZXhpdDoKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoX0RFQlVHKQotICAgIERlYnVnQnJlYWsoKTsKLSNlbmRpZgotICAgIGFib3J0KCk7Ci19Ci0KLS8qIENsZWFuIHVwIGFuZCBleGl0ICovCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0jZW5kaWYKLQotc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7Ci0vKiBGb3IgdGhlIGF0ZXhpdCBtb2R1bGUuICovCi12b2lkIF9QeV9QeUF0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpCi17Ci0gICAgcHlleGl0ZnVuYyA9IGZ1bmM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jYWxsX3B5X2V4aXRmdW5jcyh2b2lkKQotewotICAgIGlmIChweWV4aXRmdW5jID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLQotICAgICgqcHlleGl0ZnVuYykoKTsKLSAgICBQeUVycl9DbGVhcigpOwotfQotCi0vKiBXYWl0IHVudGlsIHRocmVhZGluZy5fc2h1dGRvd24gY29tcGxldGVzLCBwcm92aWRlZAotICAgdGhlIHRocmVhZGluZyBtb2R1bGUgd2FzIGltcG9ydGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KLSAgIFRoZSBzaHV0ZG93biByb3V0aW5lIHdpbGwgd2FpdCB1bnRpbCBhbGwgbm9uLWRhZW1vbgotICAgInRocmVhZGluZyIgdGhyZWFkcyBoYXZlIGNvbXBsZXRlZC4gKi8KLXN0YXRpYyB2b2lkCi13YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCkKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeV9JREVOVElGSUVSKF9zaHV0ZG93bik7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgIFB5T2JqZWN0ICp0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyh0c3RhdGUtPmludGVycC0+bW9kdWxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocmVhZGluZyIpOwotICAgIGlmICh0aHJlYWRpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiB0aHJlYWRpbmcgbm90IGltcG9ydGVkICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgIH0KLSAgICBQeV9ERUNSRUYodGhyZWFkaW5nKTsKLSNlbmRpZgotfQotCi0jZGVmaW5lIE5FWElURlVOQ1MgMzIKLXN0YXRpYyB2b2lkICgqZXhpdGZ1bmNzW05FWElURlVOQ1NdKSh2b2lkKTsKLXN0YXRpYyBpbnQgbmV4aXRmdW5jcyA9IDA7Ci0KLWludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQotewotICAgIGlmIChuZXhpdGZ1bmNzID49IE5FWElURlVOQ1MpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBleGl0ZnVuY3NbbmV4aXRmdW5jcysrXSA9IGZ1bmM7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jYWxsX2xsX2V4aXRmdW5jcyh2b2lkKQotewotICAgIHdoaWxlIChuZXhpdGZ1bmNzID4gMCkKLSAgICAgICAgKCpleGl0ZnVuY3NbLS1uZXhpdGZ1bmNzXSkoKTsKLQotICAgIGZmbHVzaChzdGRvdXQpOwotICAgIGZmbHVzaChzdGRlcnIpOwotfQotCi12b2lkCi1QeV9FeGl0KGludCBzdHMpCi17Ci0gICAgUHlfRmluYWxpemUoKTsKLQotICAgIGV4aXQoc3RzKTsKLX0KLQotc3RhdGljIHZvaWQKLWluaXRzaWdzKHZvaWQpCi17Ci0jaWZkZWYgU0lHUElQRQotICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19JR04pOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZaCi0gICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfSUdOKTsKLSNlbmRpZgotI2lmZGVmIFNJR1hGU1oKLSAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfSUdOKTsKLSNlbmRpZgotICAgIFB5T1NfSW5pdEludGVycnVwdHMoKTsgLyogTWF5IGltcGx5IGluaXRzaWduYWwoKSAqLwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBzaWduYWwiKTsKLSAgICB9Ci19Ci0KLQotLyogUmVzdG9yZSBzaWduYWxzIHRoYXQgdGhlIGludGVycHJldGVyIGhhcyBjYWxsZWQgU0lHX0lHTiBvbiB0byBTSUdfREZMLgotICoKLSAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAotICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCi0gKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KLSAqLwotdm9pZAotX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpCi17Ci0jaWZkZWYgU0lHUElQRQotICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19ERkwpOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZaCi0gICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfREZMKTsKLSNlbmRpZgotI2lmZGVmIFNJR1hGU1oKLSAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfREZMKTsKLSNlbmRpZgotfQotCi0KLS8qCi0gKiBUaGUgZmlsZSBkZXNjcmlwdG9yIGZkIGlzIGNvbnNpZGVyZWQgYGBpbnRlcmFjdGl2ZScnIGlmIGVpdGhlcgotICogICBhKSBpc2F0dHkoZmQpIGlzIFRSVUUsIG9yCi0gKiAgIGIpIHRoZSAtaSBmbGFnIHdhcyBnaXZlbiwgYW5kIHRoZSBmaWxlbmFtZSBhc3NvY2lhdGVkIHdpdGgKLSAqICAgICAgdGhlIGRlc2NyaXB0b3IgaXMgTlVMTCBvciAiPHN0ZGluPiIgb3IgIj8/PyIuCi0gKi8KLWludAotUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBpZiAoaXNhdHR5KChpbnQpZmlsZW5vKGZwKSkpCi0gICAgICAgIHJldHVybiAxOwotICAgIGlmICghUHlfSW50ZXJhY3RpdmVGbGFnKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gKGZpbGVuYW1lID09IE5VTEwpIHx8Ci0gICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI8c3RkaW4+IikgPT0gMCkgfHwKLSAgICAgICAgICAgKHN0cmNtcChmaWxlbmFtZSwgIj8/PyIpID09IDApOwotfQotCiAKICNpZiBkZWZpbmVkKFVTRV9TVEFDS0NIRUNLKQogI2lmIGRlZmluZWQoV0lOMzIpICYmIGRlZmluZWQoX01TQ19WRVIpCkBAIC0yODkwLDczICsxNDE5LDYgQEAKIAogI2VuZGlmIC8qIFVTRV9TVEFDS0NIRUNLICovCiAKLQotLyogV3JhcHBlcnMgYXJvdW5kIHNpZ2FjdGlvbigpIG9yIHNpZ25hbCgpLiAqLwotCi1QeU9TX3NpZ2hhbmRsZXJfdAotUHlPU19nZXRzaWcoaW50IHNpZykKLXsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIHN0cnVjdCBzaWdhY3Rpb24gY29udGV4dDsKLSAgICBpZiAoc2lnYWN0aW9uKHNpZywgTlVMTCwgJmNvbnRleHQpID09IC0xKQotICAgICAgICByZXR1cm4gU0lHX0VSUjsKLSAgICByZXR1cm4gY29udGV4dC5zYV9oYW5kbGVyOwotI2Vsc2UKLSAgICBQeU9TX3NpZ2hhbmRsZXJfdCBoYW5kbGVyOwotLyogU3BlY2lhbCBzaWduYWwgaGFuZGxpbmcgZm9yIHRoZSBzZWN1cmUgQ1JUIGluIFZpc3VhbCBTdHVkaW8gMjAwNSAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49IDE0MDAKLSAgICBzd2l0Y2ggKHNpZykgewotICAgIC8qIE9ubHkgdGhlc2Ugc2lnbmFscyBhcmUgdmFsaWQgKi8KLSAgICBjYXNlIFNJR0lOVDoKLSAgICBjYXNlIFNJR0lMTDoKLSAgICBjYXNlIFNJR0ZQRToKLSAgICBjYXNlIFNJR1NFR1Y6Ci0gICAgY2FzZSBTSUdURVJNOgotICAgIGNhc2UgU0lHQlJFQUs6Ci0gICAgY2FzZSBTSUdBQlJUOgotICAgICAgICBicmVhazsKLSAgICAvKiBEb24ndCBjYWxsIHNpZ25hbCgpIHdpdGggb3RoZXIgdmFsdWVzIG9yIGl0IHdpbGwgYXNzZXJ0ICovCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFNJR19FUlI7Ci0gICAgfQotI2VuZGlmIC8qIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgKi8KLSAgICBoYW5kbGVyID0gc2lnbmFsKHNpZywgU0lHX0lHTik7Ci0gICAgaWYgKGhhbmRsZXIgIT0gU0lHX0VSUikKLSAgICAgICAgc2lnbmFsKHNpZywgaGFuZGxlcik7Ci0gICAgcmV0dXJuIGhhbmRsZXI7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAotICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCi0gKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KLSAqLwotUHlPU19zaWdoYW5kbGVyX3QKLVB5T1Nfc2V0c2lnKGludCBzaWcsIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXIpCi17Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICAvKiBTb21lIGNvZGUgaW4gTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBkZXBlbmRzIG9uIHNpZ2FjdGlvbigpIGJlaW5nCi0gICAgICogdXNlZCBoZXJlIGlmIEhBVkVfU0lHQUNUSU9OIGlzIGRlZmluZWQuICBGaXggdGhhdCBpZiB0aGlzIGNvZGUKLSAgICAgKiBjaGFuZ2VzIHRvIGludmFsaWRhdGUgdGhhdCBhc3N1bXB0aW9uLgotICAgICAqLwotICAgIHN0cnVjdCBzaWdhY3Rpb24gY29udGV4dCwgb2NvbnRleHQ7Ci0gICAgY29udGV4dC5zYV9oYW5kbGVyID0gaGFuZGxlcjsKLSAgICBzaWdlbXB0eXNldCgmY29udGV4dC5zYV9tYXNrKTsKLSAgICBjb250ZXh0LnNhX2ZsYWdzID0gMDsKLSAgICBpZiAoc2lnYWN0aW9uKHNpZywgJmNvbnRleHQsICZvY29udGV4dCkgPT0gLTEpCi0gICAgICAgIHJldHVybiBTSUdfRVJSOwotICAgIHJldHVybiBvY29udGV4dC5zYV9oYW5kbGVyOwotI2Vsc2UKLSAgICBQeU9TX3NpZ2hhbmRsZXJfdCBvbGRoYW5kbGVyOwotICAgIG9sZGhhbmRsZXIgPSBzaWduYWwoc2lnLCBoYW5kbGVyKTsKLSNpZmRlZiBIQVZFX1NJR0lOVEVSUlVQVAotICAgIHNpZ2ludGVycnVwdChzaWcsIDEpOwotI2VuZGlmCi0gICAgcmV0dXJuIG9sZGhhbmRsZXI7Ci0jZW5kaWYKLX0KLQogLyogRGVwcmVjYXRlZCBDIEFQSSBmdW5jdGlvbnMgc3RpbGwgcHJvdmlkZWQgZm9yIGJpbmFyeSBjb21wYXRpYmxpdHkgKi8KIAogI3VuZGVmIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IGRlNmE0MWYuLjVhNWNkZDkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTMsMTE1ICszLDI1IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQotICAvKgotICAgKiBfUHlUaW1lX2dldHRpbWVvZmRheSBmYWxscyBiYWNrIHRvIGZ0aW1lIHdoZW4gZ2V0dHRpbWVvZmRheSBmYWlscyBiZWNhdXNlIHRoZSBsYXR0ZXIKLSAgICogbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3Jtcy4gVGhpcyBmYWxsYmFjayBpcyB1bndhbnRlZCBvbiBNYWNPU1ggYmVjYXVzZQotICAgKiB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgYmluYXJ5IGJ1aWxkIG9uIE9TWCAxMC40IG9uIGVhcmxpZXIKLSAgICogcmVsZWFzZXMgb2YgdGhlIE9TLiBUaGVyZWZvcmUgY2xhaW0gd2UgZG9uJ3Qgc3VwcG9ydCBmdGltZS4KLSAgICovCi0jIHVuZGVmIEhBVkVfRlRJTUUKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+Ci1leHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKLSNlbmRpZgorLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLworI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCi1zdGF0aWMgdm9pZAotcHlnZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKLXsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7Ci0gICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7Ci0gICAgVUxPTkdMT05HIG1pY3Jvc2Vjb25kczsKKy8qIFRvIG1pY3Jvc2Vjb25kcyAoMTBeLTYpICovCisjZGVmaW5lIE1TX1RPX1VTIDEwMDAKKyNkZWZpbmUgU0VDX1RPX1VTIChTRUNfVE9fTVMgKiBNU19UT19VUykKIAotICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7Ci0gICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKLSAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7Ci0gICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMDogbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuCi0gICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCi0gICAgICAgZGF5cykuICovCi0gICAgbWljcm9zZWNvbmRzID0gbGFyZ2UuUXVhZFBhcnQgLyAxMCAtIDExNjQ0NDczNjAwMDAwMDAwOwotICAgIHRwLT50dl9zZWMgPSBtaWNyb3NlY29uZHMgLyAxMDAwMDAwOwotICAgIHRwLT50dl91c2VjID0gbWljcm9zZWNvbmRzICUgMTAwMDAwMDsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKLSAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQ7CisvKiBUbyBuYW5vc2Vjb25kcyAoMTBeLTkpICovCisjZGVmaW5lIFVTX1RPX05TIDEwMDAKKyNkZWZpbmUgTVNfVE9fTlMgKE1TX1RPX1VTICogVVNfVE9fTlMpCisjZGVmaW5lIFNFQ19UT19OUyAoU0VDX1RPX01TICogTVNfVE9fTlMpCiAKLSAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKSI7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICh2b2lkKSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgfQotI2Vsc2UKLSAgICAvKiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBnZXQgdGhlIHRpbWU6Ci0gICAgICAoMSkgZ2V0dGltZW9mZGF5KCkgLS0gcmVzb2x1dGlvbiBpbiBtaWNyb3NlY29uZHMKLSAgICAgICgyKSBmdGltZSgpIC0tIHJlc29sdXRpb24gaW4gbWlsbGlzZWNvbmRzCi0gICAgICAoMykgdGltZSgpIC0tIHJlc29sdXRpb24gaW4gc2Vjb25kcwotICAgICAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm4gdmFsdWUgaW4gYSB0aW1ldmFsIHN0cnVjdC4KLSAgICAgIFNpbmNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTQ08gT0RUIDMuMCkgZ2V0dGltZW9mZGF5KCkgbWF5Ci0gICAgICBmYWlsLCBzbyB3ZSBmYWxsIGJhY2sgb24gZnRpbWUoKSBvciB0aW1lKCkuCi0gICAgICBOb3RlOiBjbG9jayByZXNvbHV0aW9uIGRvZXMgbm90IGltcGx5IGNsb2NrIGFjY3VyYWN5ISAqLwotCi0jaWZkZWYgSEFWRV9HRVRUSU1FT0ZEQVkKLSAgICBpbnQgZXJyOwotI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgotICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCk7Ci0jZWxzZQotICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOwotI2VuZGlmCi0gICAgaWYgKGVyciA9PSAwKSB7Ci0gICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXR0aW1lb2ZkYXkoKSI7Ci0gICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKLSAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmICAgLyogSEFWRV9HRVRUSU1FT0ZEQVkgKi8KLQotI2lmIGRlZmluZWQoSEFWRV9GVElNRSkKLSAgICB7Ci0gICAgICAgIHN0cnVjdCB0aW1lYiB0OwotICAgICAgICBmdGltZSgmdCk7Ci0gICAgICAgIHRwLT50dl9zZWMgPSB0LnRpbWU7Ci0gICAgICAgIHRwLT50dl91c2VjID0gdC5taWxsaXRtICogMTAwMDsKLSAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImZ0aW1lKCkiOwotICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTM7Ci0gICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZSAvKiAhSEFWRV9GVElNRSAqLwotICAgIHRwLT50dl9zZWMgPSB0aW1lKE5VTEwpOwotICAgIHRwLT50dl91c2VjID0gMDsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJ0aW1lKCkiOwotICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wOwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICB9Ci0jZW5kaWYgLyogIUhBVkVfRlRJTUUgKi8KLQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLX0KLQotdm9pZAotX1B5VGltZV9nZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCkKLXsKLSAgICBweWdldHRpbWVvZmRheSh0cCwgTlVMTCk7Ci19Ci0KLXZvaWQKLV9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKLXsKLSAgICBweWdldHRpbWVvZmRheSh0cCwgaW5mbyk7Ci19CisvKiBDb252ZXJzaW9uIGZyb20gbmFub3NlY29uZHMgKi8KKyNkZWZpbmUgTlNfVE9fTVMgKDEwMDAgKiAxMDAwKQorI2RlZmluZSBOU19UT19VUyAoMTAwMCkKIAogc3RhdGljIHZvaWQKIGVycm9yX3RpbWVfdF9vdmVyZmxvdyh2b2lkKQpAQCAtMTY4LDE3ICs3OCwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9VUCkgewotICAgICAgICAgICAgaWYgKGludHBhcnQgPj0gMCkgewotICAgICAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0cGFydCA9IDAuMDsKLSAgICAgICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7CisgICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOworICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZsb2F0cGFydCA9IGZsb29yKGZsb2F0cGFydCk7CiAgICAgICAgIH0KIAogICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OwpAQCAtMjA3LDEyICsxMTUsMTAgQEAKICAgICAgICAgZG91YmxlIGQsIGludHBhcnQsIGVycjsKIAogICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9VUCkgewotICAgICAgICAgICAgaWYgKGQgPj0gMCkKLSAgICAgICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgICAgIGQgPSBjZWlsKGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkID0gZmxvb3IoZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0yNDUsOCArMTUxLDU0NiBAQAogICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOwogfQogCi12b2lkCi1fUHlUaW1lX0luaXQoKQorc3RhdGljIHZvaWQKK19QeVRpbWVfb3ZlcmZsb3codm9pZCkKIHsKLSAgICAvKiBEbyBub3RoaW5nLiAgTmVlZGVkIHRvIGZvcmNlIGxpbmtpbmcuICovCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgdG9vIGxhcmdlIHRvIGNvbnZlcnQgdG8gQyBfUHlUaW1lX3QiKTsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0Zyb21TZWNvbmRzKGludCBzZWNvbmRzKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKKyAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKKyAgICAgICBiaXRzKS4gKi8KKyAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgcmV0dXJuIHQ7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIFBZX0xPTkdfTE9ORywgX1B5VGltZV90KTsKKyAgICByZXR1cm4gdDsKK30KKworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIGludAorX1B5VGltZV9Gcm9tVGltZXNwZWMoX1B5VGltZV90ICp0cCwgc3RydWN0IHRpbWVzcGVjICp0cywgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGludCByZXMgPSAwOworCisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKKyAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorCisgICAgdCArPSB0cy0+dHZfbnNlYzsKKworICAgICp0cCA9IHQ7CisgICAgcmV0dXJuIHJlczsKK30KKyNlbGlmICFkZWZpbmVkKE1TX1dJTkRPV1MpCitzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21UaW1ldmFsKF9QeVRpbWVfdCAqdHAsIHN0cnVjdCB0aW1ldmFsICp0diwgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGludCByZXMgPSAwOworCisgICAgdCA9IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAqIFNFQ19UT19OUzsKKyAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0di0+dHZfc2VjKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorCisgICAgdCArPSAoX1B5VGltZV90KXR2LT50dl91c2VjICogVVNfVE9fTlM7CisKKyAgICAqdHAgPSB0OworICAgIHJldHVybiByZXM7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCit7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQsIGVycjsKKworICAgICAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7CisKKyAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgICAgIGQgPSBjZWlsKGQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkID0gZmxvb3IoZCk7CisKKyAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7CisgICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOworICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworI2Vsc2UKKyAgICAgICAgbG9uZyBzZWM7CisgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyNlbmRpZgorICAgICAgICBpZiAoc2VjID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHRvX25hbm9zZWNvbmRzOworICAgICAgICBpZiAoKnQgLyB0b19uYW5vc2Vjb25kcyAhPSBzZWMpIHsKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Gcm9tT2JqZWN0KHQsIG9iaiwgcm91bmQsIFNFQ19UT19OUyk7Cit9CisKK2ludAorX1B5VGltZV9Gcm9tTWlsbGlzZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0Zyb21PYmplY3QodCwgb2JqLCByb3VuZCwgTVNfVE9fTlMpOworfQorCitkb3VibGUKK19QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQoreworICAgIF9QeVRpbWVfdCBzZWMsIG5zOworICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KKyAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICBzZWMgPSB0IC8gU0VDX1RPX05TOworICAgIG5zID0gdCAlIFNFQ19UT19OUzsKKyAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKK30KKworUHlPYmplY3QgKgorX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQoreworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOworI2Vsc2UKKyAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOworI2VuZGlmCit9CisKK3N0YXRpYyBfUHlUaW1lX3QKK19QeVRpbWVfRGl2aWRlKGNvbnN0IF9QeVRpbWVfdCB0LCBjb25zdCBfUHlUaW1lX3QgaywKKyAgICAgICAgICAgICAgIGNvbnN0IF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBhc3NlcnQoayA+IDEpOworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKKyAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiAodCArIGsgLSAxKSAvIGs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB0IC8gazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0ID49IDApCisgICAgICAgICAgICByZXR1cm4gdCAvIGs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAodCAtIChrIC0gMSkpIC8gazsKKyAgICB9Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Bc01pbGxpc2Vjb25kcyhfUHlUaW1lX3QgdCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0RpdmlkZSh0LCBOU19UT19NUywgcm91bmQpOworfQorCitfUHlUaW1lX3QKK19QeVRpbWVfQXNNaWNyb3NlY29uZHMoX1B5VGltZV90IHQsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9EaXZpZGUodCwgTlNfVE9fVVMsIHJvdW5kKTsKK30KKworc3RhdGljIGludAorX1B5VGltZV9Bc1RpbWV2YWxfaW1wbChfUHlUaW1lX3QgdCwgX1B5VGltZV90ICpwX3NlY3MsIGludCAqcF91cywKKyAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIF9QeVRpbWVfdCBzZWNzLCBuczsKKyAgICBpbnQgdXNlYzsKKyAgICBpbnQgcmVzID0gMDsKKworICAgIHNlY3MgPSB0IC8gU0VDX1RPX05TOworICAgIG5zID0gdCAlIFNFQ19UT19OUzsKKworICAgIHVzZWMgPSAoaW50KV9QeVRpbWVfRGl2aWRlKG5zLCBVU19UT19OUywgcm91bmQpOworICAgIGlmICh1c2VjIDwgMCkgeworICAgICAgICB1c2VjICs9IFNFQ19UT19VUzsKKyAgICAgICAgaWYgKHNlY3MgIT0gX1B5VGltZV9NSU4pCisgICAgICAgICAgICBzZWNzIC09IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBlbHNlIGlmICh1c2VjID49IFNFQ19UT19VUykgeworICAgICAgICB1c2VjIC09IFNFQ19UT19VUzsKKyAgICAgICAgaWYgKHNlY3MgIT0gX1B5VGltZV9NQVgpCisgICAgICAgICAgICBzZWNzICs9IDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IC0xOworICAgIH0KKyAgICBhc3NlcnQoMCA8PSB1c2VjICYmIHVzZWMgPCBTRUNfVE9fVVMpOworCisgICAgKnBfc2VjcyA9IHNlY3M7CisgICAgKnBfdXMgPSB1c2VjOworCisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAorX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsIGludCByYWlzZSkKK3sKKyAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBpbnQgdXM7CisgICAgaW50IHJlczsKKworICAgIHJlcyA9IF9QeVRpbWVfQXNUaW1ldmFsX2ltcGwodCwgJnNlY3MsICZ1cywgcm91bmQpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIHR2LT50dl9zZWMgPSAobG9uZylzZWNzOworI2Vsc2UKKyAgICB0di0+dHZfc2VjID0gc2VjczsKKyNlbmRpZgorICAgIHR2LT50dl91c2VjID0gdXM7CisKKyAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBpZiAocmFpc2UpCisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlUaW1lX0FzVGltZXZhbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfQXNUaW1ldmFsU3RydWN0X2ltcGwodCwgdHYsIHJvdW5kLCAxKTsKK30KKworaW50CitfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXZhbCAqdHYsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbCh0LCB0diwgcm91bmQsIDApOworfQorCitpbnQKK19QeVRpbWVfQXNUaW1ldmFsVGltZV90KF9QeVRpbWVfdCB0LCB0aW1lX3QgKnBfc2VjcywgaW50ICp1cywKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBpbnQgcmVzOworCisgICAgcmVzID0gX1B5VGltZV9Bc1RpbWV2YWxfaW1wbCh0LCAmc2VjcywgdXMsIHJvdW5kKTsKKworICAgICpwX3NlY3MgPSBzZWNzOworCisgICAgaWYgKHJlcyA8IDAgfHwgKF9QeVRpbWVfdCkqcF9zZWNzICE9IHNlY3MpIHsKKyAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKK2ludAorX1B5VGltZV9Bc1RpbWVzcGVjKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQoreworICAgIF9QeVRpbWVfdCBzZWNzLCBuc2VjOworCisgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgbnNlYyA9IHQgJSBTRUNfVE9fTlM7CisgICAgaWYgKG5zZWMgPCAwKSB7CisgICAgICAgIG5zZWMgKz0gU0VDX1RPX05TOworICAgICAgICBzZWNzIC09IDE7CisgICAgfQorICAgIHRzLT50dl9zZWMgPSAodGltZV90KXNlY3M7CisgICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0cy0+dHZfbnNlYyA9IG5zZWM7CisKKyAgICBhc3NlcnQoMCA8PSB0cy0+dHZfbnNlYyAmJiB0cy0+dHZfbnNlYyA8PSA5OTk5OTk5OTkpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3B5Z2V0dGltZW9mZGF5X25ldyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvLCBpbnQgcmFpc2UpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEZJTEVUSU1FIHN5c3RlbV90aW1lOworICAgIFVMQVJHRV9JTlRFR0VSIGxhcmdlOworCisgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CisKKyAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmc3lzdGVtX3RpbWUpOworICAgIGxhcmdlLnUuTG93UGFydCA9IHN5c3RlbV90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IHN5c3RlbV90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIC8qIDExLDY0NCw0NzMsNjAwLDAwMCwwMDAsMDAwOiBudW1iZXIgb2YgbmFub3NlY29uZHMgYmV0d2VlbgorICAgICAgIHRoZSAxc3QgamFudWFyeSAxNjAxIGFuZCB0aGUgMXN0IGphbnVhcnkgMTk3MCAoMzY5IHllYXJzICsgODkgbGVhcAorICAgICAgIGRheXMpLiAqLworICAgICp0cCA9IGxhcmdlLlF1YWRQYXJ0ICogMTAwIC0gMTE2NDQ0NzM2MDAwMDAwMDAwMDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CisgICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkLCBvazsKKworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpIjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgb2sgPSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgIH0KKworI2Vsc2UgICAvKiBNU19XSU5ET1dTICovCisgICAgaW50IGVycjsKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisjZWxzZQorICAgIHN0cnVjdCB0aW1ldmFsIHR2OworI2VuZGlmCisKKyAgICBhc3NlcnQoaW5mbyA9PSBOVUxMIHx8IHJhaXNlKTsKKworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIGVyciA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisgICAgaWYgKGVycikgeworICAgICAgICBpZiAocmFpc2UpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKF9QeVRpbWVfRnJvbVRpbWVzcGVjKHRwLCAmdHMsIHJhaXNlKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgIGlmIChjbG9ja19nZXRyZXMoQ0xPQ0tfUkVBTFRJTUUsICZyZXMpID09IDApCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgfQorI2Vsc2UgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKworICAgICAvKiB0ZXN0IGdldHRpbWVvZmRheSgpICovCisjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCisgICAgZXJyID0gZ2V0dGltZW9mZGF5KCZ0dik7CisjZWxzZQorICAgIGVyciA9IGdldHRpbWVvZmRheSgmdHYsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKTsKKyNlbmRpZgorICAgIGlmIChlcnIpIHsKKyAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChfUHlUaW1lX0Zyb21UaW1ldmFsKHRwLCAmdHYsIHJhaXNlKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImdldHRpbWVvZmRheSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTY7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgIH0KKyNlbmRpZiAgIC8qICFIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKyNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCisgICAgcmV0dXJuIDA7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9HZXRTeXN0ZW1DbG9jayh2b2lkKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGlmIChweWdldHRpbWVvZmRheV9uZXcoJnQsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAvKiBzaG91bGQgbm90IGhhcHBlbiwgX1B5VGltZV9Jbml0KCkgY2hlY2tlZCB0aGUgY2xvY2sgYXQgc3RhcnR1cCAqLworICAgICAgICBhc3NlcnQoMCk7CisKKyAgICAgICAgLyogdXNlIGEgZml4ZWQgdmFsdWUgaW5zdGVhZCBvZiBhIHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBzdGFjayAqLworICAgICAgICB0ID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHQ7Cit9CisKK2ludAorX1B5VGltZV9HZXRTeXN0ZW1DbG9ja1dpdGhJbmZvKF9QeVRpbWVfdCAqdCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKK3sKKyAgICByZXR1cm4gcHlnZXR0aW1lb2ZkYXlfbmV3KHQsIGluZm8sIDEpOworfQorCisKK3N0YXRpYyBpbnQKK3B5bW9ub3RvbmljKF9QeVRpbWVfdCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8sIGludCByYWlzZSkKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgVUxPTkdMT05HIHJlc3VsdDsKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisgICAgcmVzdWx0ID0gR2V0VGlja0NvdW50NjQoKTsKKworICAgICp0cCA9IHJlc3VsdCAqIE1TX1RPX05TOworICAgIGlmICgqdHAgLyBNU19UT19OUyAhPSByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogSGVsbG8sIHRpbWUgdHJhdmVsZXIhICovCisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgb2sgPSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKworI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgc3RhdGljIG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2U7CisgICAgdWludDY0X3QgdGltZTsKKworICAgIGlmICh0aW1lYmFzZS5kZW5vbSA9PSAwKSB7CisgICAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgVGVjaG5pY2FsIFEmQSBRQTEzOTgsIG1hY2hfdGltZWJhc2VfaW5mbygpIGNhbm5vdAorICAgICAgICAgICBmYWlsOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9tYWMvI3FhL3FhMTM5OC8gKi8KKyAgICAgICAgKHZvaWQpbWFjaF90aW1lYmFzZV9pbmZvKCZ0aW1lYmFzZSk7CisgICAgfQorCisgICAgdGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworCisgICAgLyogYXBwbHkgdGltZWJhc2UgZmFjdG9yICovCisgICAgdGltZSAqPSB0aW1lYmFzZS5udW1lcjsKKyAgICB0aW1lIC89IHRpbWViYXNlLmRlbm9tOworCisgICAgKnRwID0gdGltZTsKKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKworI2Vsc2UKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19ISUdIUkVTOworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfSElHSFJFUykiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfTU9OT1RPTklDOworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDKSI7CisjZW5kaWYKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHMpICE9IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb247CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKGNsa19pZCwgJnJlcykgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgIH0KKyAgICBpZiAoX1B5VGltZV9Gcm9tVGltZXNwZWModHAsICZ0cywgcmFpc2UpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jayh2b2lkKQoreworICAgIF9QeVRpbWVfdCB0OworICAgIGlmIChweW1vbm90b25pYygmdCwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIC8qIHNob3VsZCBub3QgaGFwcGVuLCBfUHlUaW1lX0luaXQoKSBjaGVja2VkIHRoYXQgbW9ub3RvbmljIGNsb2NrIGF0CisgICAgICAgICAgIHN0YXJ0dXAgKi8KKyAgICAgICAgYXNzZXJ0KDApOworCisgICAgICAgIC8qIHVzZSBhIGZpeGVkIHZhbHVlIGluc3RlYWQgb2YgYSByYW5kb20gdmFsdWUgZnJvbSB0aGUgc3RhY2sgKi8KKyAgICAgICAgdCA9IDA7CisgICAgfQorICAgIHJldHVybiB0OworfQorCitpbnQKK19QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworICAgIHJldHVybiBweW1vbm90b25pYyh0cCwgaW5mbywgMSk7Cit9CisKK2ludAorX1B5VGltZV9Jbml0KHZvaWQpCit7CisgICAgX1B5VGltZV90IHQ7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgc3lzdGVtIGNsb2NrIHdvcmtzICovCisgICAgaWYgKF9QeVRpbWVfR2V0U3lzdGVtQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBhIG1vbm90b25pYyBjbG9jayAqLworICAgIGlmIChfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrV2l0aEluZm8oJnQsIE5VTEwpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogY2hlY2sgdGhhdCBfUHlUaW1lX0Zyb21TZWNvbmRzKCkgY2Fubm90IG92ZXJmbG93ICovCisgICAgYXNzZXJ0KElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIGFzc2VydChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCAzZjMwN2NmLi5lYTA5ZTg0IDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDExICsxLDE0IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbHNlCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCisjICBpbmNsdWRlIDxmY250bC5oPgorIyAgaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjICAgIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisjICBlbmRpZgorIyAgaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorIyAgICBpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorIyAgZW5kaWYKICNlbmRpZgogCiAjaWZkZWYgUHlfREVCVUcKQEAgLTEwMiwxMyArMTA1LDczIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbHNlCisjZWxzZSAgIC8qICFIQVZFX0dFVEVOVFJPUFkgKi8KKworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKK3N0YXRpYyBpbnQKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQoreworICAgIC8qIGlzIGdldHJhbmRvbSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/CisgICAgICogbmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBsYXRlciAqLworICAgIHN0YXRpYyBpbnQgZ2V0cmFuZG9tX3dvcmtzID0gMTsKKyAgICAvKiBVc2UgL2Rldi91cmFuZG9tLCBibG9jayBpZiB0aGUga2VybmVsIGhhcyBubyBlbnRyb3B5ICovCisgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgbjsKKworICAgIGlmICghZ2V0cmFuZG9tX3dvcmtzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHdoaWxlICgwIDwgc2l6ZSkgeworICAgICAgICBlcnJubyA9IDA7CisKKyAgICAgICAgLyogVXNlIHN5c2NhbGwoKSBiZWNhdXNlIHRoZSBsaWJjIGRvZXNuJ3QgZXhwb3NlIGdldHJhbmRvbSgpIHlldCwgc2VlOgorICAgICAgICAgKiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZSwgZmxhZ3MpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZSwgZmxhZ3MpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG4gPCAwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTKSB7CisgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpICovCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgc2l6ZSAtPSBuOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZgorCiBzdGF0aWMgc3RydWN0IHsKICAgICBpbnQgZmQ7CiAgICAgZGV2X3Qgc3RfZGV2OwogICAgIGlub190IHN0X2lubzsKIH0gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKIAorCiAvKiBSZWFkIHNpemUgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20gaW50byBidWZmZXIuCiAgICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KIHN0YXRpYyB2b2lkCkBAIC0xMTksNyArMTgyLDE0IEBACiAKICAgICBhc3NlcnQgKDAgPCBzaXplKTsKIAotICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKyNpZmRlZiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMCisgICAgaWYgKHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDApID09IDEpCisgICAgICAgIHJldHVybjsKKyAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCisgICAgICogb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KKyNlbmRpZgorCisgICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CiAgICAgaWYgKGZkIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIG9wZW4gL2Rldi91cmFuZG9tIik7CiAKQEAgLTE0NywxNCArMjE3LDI3IEBACiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpbnQgcmVzOworI2VuZGlmCiAKICAgICBpZiAoc2l6ZSA8PSAwKQogICAgICAgICByZXR1cm4gMDsKIAorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChyZXMgPT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogZ2V0cmFuZG9tKCkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWwsIGZhbGwgYmFjaworICAgICAqIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCisjZW5kaWYKKwogICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKICAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLwotICAgICAgICBpZiAoZnN0YXQodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQorICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQogICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2CiAgICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKICAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LApAQCAtMTY2LDE3ICsyNDksMTMgQEAKICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQogICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoZmQgPCAwKQotICAgICAgICB7CisgICAgICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9FTlQgfHwgZXJybm8gPT0gRU5YSU8gfHwKICAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2Rldi91cmFuZG9tIChvciBlcXVpdmFsZW50KSBub3QgZm91bmQiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICAvKiBvdGhlcndpc2UsIGtlZXAgdGhlIE9TRXJyb3IgZXhjZXB0aW9uIHJhaXNlZCBieSBfUHlfb3BlbigpICovCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewpAQCAtMTg2LDggKzI2NSw3IEBACiAgICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZnN0YXQoZmQsICZzdCkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CiAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTE5OSwyOSArMjc3LDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgZG8gewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0gICAgICAgIGlmIChuIDw9IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gKFB5X3NzaXplX3QpbjsKLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChuIDw9IDApCi0gICAgewotICAgICAgICAvKiBzdG9wIG9uIGVycm9yIG9yIGlmIHJlYWQoc2l6ZSkgcmV0dXJuZWQgMCAqLwotICAgICAgICBpZiAobiA8IDApCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7CisgICAgICAgIGlmIChuID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgc2l6ZSAtPSBuOworICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKKwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IDk1MTI2NzMuLjY0OTEwZDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC00Nyw3ICs0Nyw2IEBACiAgICAgc3RlLT5zdGVfZGlyZWN0aXZlcyA9IE5VTEw7CiAKICAgICBzdGUtPnN0ZV90eXBlID0gYmxvY2s7Ci0gICAgc3RlLT5zdGVfdW5vcHRpbWl6ZWQgPSAwOwogICAgIHN0ZS0+c3RlX25lc3RlZCA9IDA7CiAgICAgc3RlLT5zdGVfZnJlZSA9IDA7CiAgICAgc3RlLT5zdGVfdmFyYXJncyA9IDA7CkBAIC0xMTMsNyArMTEyLDYgQEAKICAgICB7InN5bWJvbHMiLCAgVF9PQkpFQ1QsIE9GRihzdGVfc3ltYm9scyksIFJFQURPTkxZfSwKICAgICB7InZhcm5hbWVzIiwgVF9PQkpFQ1QsIE9GRihzdGVfdmFybmFtZXMpLCBSRUFET05MWX0sCiAgICAgeyJjaGlsZHJlbiIsIFRfT0JKRUNULCBPRkYoc3RlX2NoaWxkcmVuKSwgUkVBRE9OTFl9LAotICAgIHsib3B0aW1pemVkIixUX0lOVCwgICAgT0ZGKHN0ZV91bm9wdGltaXplZCksIFJFQURPTkxZfSwKICAgICB7Im5lc3RlZCIsICAgVF9JTlQsICAgIE9GRihzdGVfbmVzdGVkKSwgUkVBRE9OTFl9LAogICAgIHsidHlwZSIsICAgICBUX0lOVCwgICAgT0ZGKHN0ZV90eXBlKSwgUkVBRE9OTFl9LAogICAgIHsibGluZW5vIiwgICBUX0lOVCwgICAgT0ZGKHN0ZV9saW5lbm8pLCBSRUFET05MWX0sCkBAIC0xODIsNyArMTgwLDcgQEAKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfcGFyYW1zKHN0cnVjdCBzeW10YWJsZSAqc3QsIGFzZGxfc2VxICphcmdzKTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYXJnYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgYXNkbF9zZXEgKmFyZ3MpOwogc3RhdGljIGludCBzeW10YWJsZV9pbXBsaWNpdF9hcmcoc3RydWN0IHN5bXRhYmxlICpzdCwgaW50IHBvcyk7Ci1zdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcyk7CitzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcywgYXJndW1lbnRzX3R5LCBleHByX3R5KTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfd2l0aGl0ZW0oc3RydWN0IHN5bXRhYmxlICpzdCwgd2l0aGl0ZW1fdHkgaXRlbSk7CiAKIApAQCAtMjcxLDcgKzI2OSw2IEBACiAgICAgfQogCiAgICAgc3QtPnN0X3RvcCA9IHN0LT5zdF9jdXI7Ci0gICAgc3QtPnN0X2N1ci0+c3RlX3Vub3B0aW1pemVkID0gT1BUX1RPUExFVkVMOwogICAgIHN3aXRjaCAobW9kLT5raW5kKSB7CiAgICAgY2FzZSBNb2R1bGVfa2luZDoKICAgICAgICAgc2VxID0gbW9kLT52Lk1vZHVsZS5ib2R5OwpAQCAtMTA4NiwxMyArMTA4MywxMyBAQAogICAgIH0gXAogfQogCi0jZGVmaW5lIFZJU0lUX0tXT05MWURFRkFVTFRTKFNULCBLV19ERUZBVUxUUykgeyBcCisjZGVmaW5lIFZJU0lUX1NFUV9XSVRIX05VTEwoU1QsIFRZUEUsIFNFUSkgeyAgICAgXAogICAgIGludCBpID0gMDsgXAotICAgIGFzZGxfc2VxICpzZXEgPSAoS1dfREVGQVVMVFMpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKKyAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAogICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7IFwKLSAgICAgICAgZXhwcl90eSBlbHQgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAorICAgICAgICBUWVBFICMjIF90eSBlbHQgPSAoVFlQRSAjIyBfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7IFwKICAgICAgICAgaWYgKCFlbHQpIGNvbnRpbnVlOyAvKiBjYW4gYmUgTlVMTCAqLyBcCi0gICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfZXhwcigoU1QpLCBlbHQpKSBcCisgICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgZWx0KSkgXAogICAgICAgICAgICAgVklTSVRfUVVJVCgoU1QpLCAwKTsgICAgICAgICAgICAgXAogICAgIH0gXAogfQpAQCAtMTEzOCw3ICsxMTM1LDcgQEAKIHN5bXRhYmxlX3Zpc2l0X3N0bXQoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKQogewogICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SZWN1cnNpb25FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCBkdXJpbmcgY29tcGlsYXRpb24iKTsKICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgfQpAQCAtMTE0OSw5ICsxMTQ2LDkgQEAKICAgICAgICAgaWYgKHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+ZGVmYXVsdHMpOwogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cykKLSAgICAgICAgICAgIFZJU0lUX0tXT05MWURFRkFVTFRTKHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0LCBzKSkKKyAgICAgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYuYXJncy0+a3dfZGVmYXVsdHMpOworICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0LCBzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zKSkKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBpZiAocy0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCkKICAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCk7CkBAIC0xMTcwLDEwICsxMTY3LDYgQEAKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuYmFzZXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGtleXdvcmQsIHMtPnYuQ2xhc3NEZWYua2V5d29yZHMpOwotICAgICAgICBpZiAocy0+di5DbGFzc0RlZi5zdGFyYXJncykKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkNsYXNzRGVmLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKHMtPnYuQ2xhc3NEZWYua3dhcmdzKQotICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYua3dhcmdzKTsKICAgICAgICAgaWYgKHMtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBzLT52LkNsYXNzRGVmLm5hbWUsIENsYXNzQmxvY2ssCkBAIC0xMjQ1LDIxICsxMjM4LDkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbXBvcnRfa2luZDoKICAgICAgICAgVklTSVRfU0VRKHN0LCBhbGlhcywgcy0+di5JbXBvcnQubmFtZXMpOwotICAgICAgICAvKiBYWFggRG9uJ3QgaGF2ZSB0aGUgbGluZW5vIGF2YWlsYWJsZSBpbnNpZGUKLSAgICAgICAgICAgdmlzaXRfYWxpYXMgKi8KLSAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV91bm9wdGltaXplZCAmJiAhc3QtPnN0X2N1ci0+c3RlX29wdF9saW5lbm8pIHsKLSAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9vcHRfbGluZW5vID0gcy0+bGluZW5vOwotICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX29wdF9jb2xfb2Zmc2V0ID0gcy0+Y29sX29mZnNldDsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKICAgICAgICAgVklTSVRfU0VRKHN0LCBhbGlhcywgcy0+di5JbXBvcnRGcm9tLm5hbWVzKTsKLSAgICAgICAgLyogWFhYIERvbid0IGhhdmUgdGhlIGxpbmVubyBhdmFpbGFibGUgaW5zaWRlCi0gICAgICAgICAgIHZpc2l0X2FsaWFzICovCi0gICAgICAgIGlmIChzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgJiYgIXN0LT5zdF9jdXItPnN0ZV9vcHRfbGluZW5vKSB7Ci0gICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfb3B0X2xpbmVubyA9IHMtPmxpbmVubzsKLSAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9vcHRfY29sX29mZnNldCA9IHMtPmNvbF9vZmZzZXQ7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHbG9iYWxfa2luZDogewogICAgICAgICBpbnQgaTsKQEAgLTEzMzUsNiArMTMxNiwzOSBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIHdpdGhpdGVtLCBzLT52LldpdGguaXRlbXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuV2l0aC5ib2R5KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLm5hbWUsIERFRl9MT0NBTCkpCisgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgaWYgKHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLT5kZWZhdWx0cykKKyAgICAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MtPmRlZmF1bHRzKTsKKyAgICAgICAgaWYgKHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cykKKyAgICAgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGV4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLT5rd19kZWZhdWx0cyk7CisgICAgICAgIGlmICghc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3QsIHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zKSkKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBpZiAocy0+di5Bc3luY0Z1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0KQorICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QpOworICAgICAgICBpZiAoIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKXMsIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KSkKKyAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncyk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmJvZHkpOworICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpKQorICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXN5bmNXaXRoX2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgd2l0aGl0ZW0sIHMtPnYuQXN5bmNXaXRoLml0ZW1zKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jV2l0aC5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Zvcl9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3luY0Zvci50YXJnZXQpOworICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRm9yLmJvZHkpOworICAgICAgICBpZiAocy0+di5Bc3luY0Zvci5vcmVsc2UpCisgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNGb3Iub3JlbHNlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIFZJU0lUX1FVSVQoc3QsIDEpOwogfQpAQCAtMTM0Myw3ICsxMzU3LDcgQEAKIHN5bXRhYmxlX3Zpc2l0X2V4cHIoc3RydWN0IHN5bXRhYmxlICpzdCwgZXhwcl90eSBlKQogewogICAgIGlmICgrK3N0LT5yZWN1cnNpb25fZGVwdGggPiBzdC0+cmVjdXJzaW9uX2xpbWl0KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SZWN1cnNpb25FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCBkdXJpbmcgY29tcGlsYXRpb24iKTsKICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgfQpAQCAtMTM2NCw4ICsxMzc4LDcgQEAKICAgICAgICAgaWYgKGUtPnYuTGFtYmRhLmFyZ3MtPmRlZmF1bHRzKQogICAgICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkxhbWJkYS5hcmdzLT5kZWZhdWx0cyk7CiAgICAgICAgIGlmIChlLT52LkxhbWJkYS5hcmdzLT5rd19kZWZhdWx0cykKLSAgICAgICAgICAgIFZJU0lUX0tXT05MWURFRkFVTFRTKHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5MYW1iZGEuYXJncy0+a3dfZGVmYXVsdHMpOworICAgICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwgZXhwciwgZS0+di5MYW1iZGEuYXJncy0+a3dfZGVmYXVsdHMpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBsYW1iZGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKillLCBlLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+Y29sX29mZnNldCkpCkBAIC0xMzgyLDcgKzEzOTUsNyBAQAogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5JZkV4cC5vcmVsc2UpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERpY3Rfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkRpY3Qua2V5cyk7CisgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGV4cHIsIGUtPnYuRGljdC5rZXlzKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkRpY3QudmFsdWVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRfa2luZDoKQEAgLTE0MTMsNiArMTQyNiwxMCBAQAogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5ZaWVsZEZyb20udmFsdWUpOwogICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBd2FpdF9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Bd2FpdC52YWx1ZSk7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpOwpAQCAtMTQyMCwxMSArMTQzNyw3IEBACiAgICAgY2FzZSBDYWxsX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNhbGwuZnVuYyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5DYWxsLmFyZ3MpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIGtleXdvcmQsIGUtPnYuQ2FsbC5rZXl3b3Jkcyk7Ci0gICAgICAgIGlmIChlLT52LkNhbGwuc3RhcmFyZ3MpCi0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5DYWxsLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKGUtPnYuQ2FsbC5rd2FyZ3MpCi0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5DYWxsLmt3YXJncyk7CisgICAgICAgIFZJU0lUX1NFUV9XSVRIX05VTEwoc3QsIGtleXdvcmQsIGUtPnYuQ2FsbC5rZXl3b3Jkcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgY2FzZSBTdHJfa2luZDoKQEAgLTE1MTcsMTAgKzE1MzAsOSBAQAogfQogCiBzdGF0aWMgaW50Ci1zeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpCitzeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNfdHkgYSwgZXhwcl90eSByZXR1cm5zKQogewotICAgIGFyZ3VtZW50c190eSBhID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOwotCiAgICAgaWYgKGEtPmFyZ3MgJiYgIXN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0LCBhLT5hcmdzKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGEtPnZhcmFyZyAmJiBhLT52YXJhcmctPmFubm90YXRpb24pCkBAIC0xNTI5LDggKzE1NDEsOCBAQAogICAgICAgICBWSVNJVChzdCwgZXhwciwgYS0+a3dhcmctPmFubm90YXRpb24pOwogICAgIGlmIChhLT5rd29ubHlhcmdzICYmICFzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdCwgYS0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChzLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpCi0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpOworICAgIGlmIChyZXR1cm5zKQorICAgICAgICBWSVNJVChzdCwgZXhwciwgcmV0dXJucyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE2MTUsNyArMTYyNyw2IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RvcmVfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgfD0gT1BUX0lNUE9SVF9TVEFSOwogICAgICAgICBQeV9ERUNSRUYoc3RvcmVfbmFtZSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCAyOTBlZWMxLi5mNjAwYmFmIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC02NDUsNiArNjQ1LDQ4IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfc2V0X2Nvcm91dGluZV93cmFwcGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqd3JhcHBlcikKK3sKKyAgICBpZiAod3JhcHBlciAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayh3cmFwcGVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUgZXhwZWN0ZWQsIGdvdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh3cmFwcGVyKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlFdmFsX1NldENvcm91dGluZVdyYXBwZXIod3JhcHBlcik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfUHlFdmFsX1NldENvcm91dGluZVdyYXBwZXIoTlVMTCk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0X2Nvcm91dGluZV93cmFwcGVyX2RvYywKKyJzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcilcblwKK1xuXAorU2V0IGEgd3JhcHBlciBmb3IgY29yb3V0aW5lIG9iamVjdHMuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRfY29yb3V0aW5lX3dyYXBwZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp3cmFwcGVyID0gX1B5RXZhbF9HZXRDb3JvdXRpbmVXcmFwcGVyKCk7CisgICAgaWYgKHdyYXBwZXIgPT0gTlVMTCkgeworICAgICAgICB3cmFwcGVyID0gUHlfTm9uZTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHdyYXBwZXIpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCitQeURvY19TVFJWQVIoZ2V0X2Nvcm91dGluZV93cmFwcGVyX2RvYywKKyJnZXRfY29yb3V0aW5lX3dyYXBwZXIoKVxuXAorXG5cCitSZXR1cm4gdGhlIHdyYXBwZXIgZm9yIGNvcm91dGluZSBvYmplY3RzIHNldCBieSBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyLiIKKyk7CisKKwogc3RhdGljIFB5VHlwZU9iamVjdCBIYXNoX0luZm9UeXBlOwogCiBQeURvY19TVFJWQVIoaGFzaF9pbmZvX2RvYywKQEAgLTc3Miw2ICs4MTQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpYSBpbmRleGluZywgdGhlIHJlc3QgYXJlIG5hbWUgb25seSAqLwogfTsKIAorLyogRGlzYWJsZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBhYm91dCBHZXRWZXJzaW9uRXggYXMgdGhlIHJlc3VsdCBpcworICAgYmVpbmcgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGNhbGxlciwgd2hvIGlzIHJlc3BvbnNpYmxlIGZvcgorICAgdXNpbmcgaXQgY29ycmVjdGx5LiAqLworI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQorCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX2dldHdpbmRvd3N2ZXJzaW9uKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtODAzLDYgKzg1MSw4IEBACiAgICAgcmV0dXJuIHZlcnNpb247CiB9CiAKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBIQVZFX0RMT1BFTgpAQCAtMTEyMSw2ICsxMTcxLDE2IEBACiAiX2NsZWFyX3R5cGVfY2FjaGUoKSAtPiBOb25lXG5cCiBDbGVhciB0aGUgaW50ZXJuYWwgdHlwZSBsb29rdXAgY2FjaGUuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfaXNfZmluYWxpemluZyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhfUHlfRmluYWxpemluZyAhPSBOVUxMKTsKK30KKworUHlEb2NfU1RSVkFSKGlzX2ZpbmFsaXppbmdfZG9jLAorImlzX2ZpbmFsaXppbmcoKVxuXAorUmV0dXJuIFRydWUgaWYgUHl0aG9uIGlzIGV4aXRpbmcuIik7CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIHN5c19tZXRob2RzW10gPSB7CiAgICAgLyogTWlnaHQgYXMgd2VsbCBrZWVwIHRoaXMgaW4gYWxwaGFiZXRpYyBvcmRlciAqLwpAQCAtMTE2Nyw2ICsxMjI3LDcgQEAKICAgICAgZ2V0d2luZG93c3ZlcnNpb25fZG9jfSwKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgeyJpbnRlcm4iLCAgICAgICAgICBzeXNfaW50ZXJuLCAgICAgTUVUSF9WQVJBUkdTLCBpbnRlcm5fZG9jfSwKKyAgICB7ImlzX2ZpbmFsaXppbmciLCAgIHN5c19pc19maW5hbGl6aW5nLCBNRVRIX05PQVJHUywgaXNfZmluYWxpemluZ19kb2N9LAogI2lmZGVmIFVTRV9NQUxMT1BUCiAgICAgeyJtZGVidWciLCAgICAgICAgICBzeXNfbWRlYnVnLCBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCkBAIC0xMTk2LDYgKzEyNTcsMTAgQEAKICAgICB7ImNhbGxfdHJhY2luZyIsIHN5c19jYWxsX3RyYWNpbmcsIE1FVEhfVkFSQVJHUywgY2FsbF90cmFjaW5nX2RvY30sCiAgICAgeyJfZGVidWdtYWxsb2NzdGF0cyIsIHN5c19kZWJ1Z21hbGxvY3N0YXRzLCBNRVRIX05PQVJHUywKICAgICAgZGVidWdtYWxsb2NzdGF0c19kb2N9LAorICAgIHsic2V0X2Nvcm91dGluZV93cmFwcGVyIiwgc3lzX3NldF9jb3JvdXRpbmVfd3JhcHBlciwgTUVUSF9PLAorICAgICBzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKKyAgICB7ImdldF9jb3JvdXRpbmVfd3JhcHBlciIsIHN5c19nZXRfY29yb3V0aW5lX3dyYXBwZXIsIE1FVEhfTk9BUkdTLAorICAgICBnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTY3MCw4ICsxNzM1LDggQEAKICAgICB0aGUgc2hlbGwgYWxyZWFkeSBwcmV2ZW50cyB0aGF0LiAqLwogI2lmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgewotICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgICAgaWYgKGZzdGF0KGZpbGVubyhzdGRpbiksICZzYikgPT0gMCAmJgorICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHNiOworICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UoZmlsZW5vKHN0ZGluKSwgJnNiKSA9PSAwICYmCiAgICAgICAgICAgICBTX0lTRElSKHNiLnN0X21vZGUpKSB7CiAgICAgICAgICAgICAvKiBUaGVyZSdzIG5vdGhpbmcgbW9yZSB3ZSBjYW4gZG8uICovCiAgICAgICAgICAgICAvKiBQeV9GYXRhbEVycm9yKCkgd2lsbCBjb3JlIGR1bXAsIHNvIGp1c3QgZXhpdC4gKi8KQEAgLTE2ODEsNyArMTc0Niw3IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICAvKiBzdGRpbi9zdGRvdXQvc3RkZXJyIGFyZSBub3cgc2V0IGJ5IHB5dGhvbnJ1bi5jICovCisgICAgLyogc3RkaW4vc3Rkb3V0L3N0ZGVyciBhcmUgc2V0IGluIHB5bGlmZWN5Y2xlLmMgKi8KIAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkdfQk9SUk9XKCJfX2Rpc3BsYXlob29rX18iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtU3RyaW5nKHN5c2RpY3QsICJkaXNwbGF5aG9vayIpKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWQuYyBiL1B5dGhvbi90aHJlYWQuYwppbmRleCA0ZTY5NWFlLi40NGMwNzFlIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkLmMKKysrIGIvUHl0aG9uL3RocmVhZC5jCkBAIC00MzEsNyArNDMxLDcgQEAKICAgICAgJiYgZGVmaW5lZChfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTikpCiAgICAgdmFsdWUgPSBOVUxMOwogICAgIGxlbiA9IGNvbmZzdHIoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotICAgIGlmICgxIDwgbGVuICYmIGxlbiA8IHNpemVvZihidWZmZXIpKSB7CisgICAgaWYgKDEgPCBsZW4gJiYgKHNpemVfdClsZW4gPCBzaXplb2YoYnVmZmVyKSkgewogICAgICAgICB2YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuLTEpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX2Zvb2Jhci5oIGIvUHl0aG9uL3RocmVhZF9mb29iYXIuaAppbmRleCBkMmI3OGM1Li5lYTk2ZjljIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX2Zvb2Jhci5oCisrKyBiL1B5dGhvbi90aHJlYWRfZm9vYmFyLmgKQEAgLTEsNCArMSwzIEBACi0KIC8qCiAgKiBJbml0aWFsaXphdGlvbi4KICAqLwpAQCAtNjEsMTAgKzYwLDE4IEBACiBpbnQKIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQogeworICAgIHJldHVybiBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgd2FpdGZsYWcgPyAtMSA6IDAsIDApOworfQorCitQeUxvY2tTdGF0dXMKK1B5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgUFlfVElNRU9VVF9UIG1pY3Jvc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW50cl9mbGFnKQorewogICAgIGludCBzdWNjZXNzOwogCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7CisgICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZCglcCwgJWxsZCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgbWljcm9zZWNvbmRzLCBpbnRyX2ZsYWcpKTsKKyAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKCVwLCAlbGxkLCAlZCkgLT4gJWRcbiIsCisJICAgICBsb2NrLCBtaWNyb3NlY29uZHMsIGludHJfZmxhZywgc3VjY2VzcykpOwogICAgIHJldHVybiBzdWNjZXNzOwogfQogCkBAIC03MywzICs4MCw1MyBAQAogewogICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwogfQorCisvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IG5lZWRlZCBpZiBuYXRpdmUgVExTIHN1cHBvcnQgZXhpc3RzICovCisjZGVmaW5lIFB5X0hBVkVfTkFUSVZFX1RMUworCisjaWZkZWYgUHlfSEFWRV9OQVRJVkVfVExTCitpbnQKK1B5VGhyZWFkX2NyZWF0ZV9rZXkodm9pZCkKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK1B5VGhyZWFkX2RlbGV0ZV9rZXkoaW50IGtleSkKK3sKKworfQorCitpbnQKK1B5VGhyZWFkX3NldF9rZXlfdmFsdWUoaW50IGtleSwgdm9pZCAqdmFsdWUpCit7CisgICAgaW50IG9rOworCisgICAgLyogQSBmYWlsdXJlIGluIHRoaXMgY2FzZSByZXR1cm5zIC0xICovCisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAwOworfQorCit2b2lkICoKK1B5VGhyZWFkX2dldF9rZXlfdmFsdWUoaW50IGtleSkKK3sKKyAgICB2b2lkICpyZXN1bHQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkCitQeVRocmVhZF9kZWxldGVfa2V5X3ZhbHVlKGludCBrZXkpCit7CisKK30KKwordm9pZAorUHlUaHJlYWRfUmVJbml0VExTKHZvaWQpCit7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaCBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCmluZGV4IGQ5ZjdjNzYuLjI3ZTBkYzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCisrKyBiL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oCkBAIC02MDgsNyArNjA4LDE1IEBACiB7CiAgICAgcHRocmVhZF9rZXlfdCBrZXk7CiAgICAgaW50IGZhaWwgPSBwdGhyZWFkX2tleV9jcmVhdGUoJmtleSwgTlVMTCk7Ci0gICAgcmV0dXJuIGZhaWwgPyAtMSA6IGtleTsKKyAgICBpZiAoZmFpbCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChrZXkgPiBJTlRfTUFYKSB7CisgICAgICAgIC8qIElzc3VlICMyMjIwNjogaGFuZGxlIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgcHRocmVhZF9rZXlfZGVsZXRlKGtleSk7CisgICAgICAgIGVycm5vID0gRU5PTUVNOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAoaW50KWtleTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvUHl0aG9uL3RyYWNlYmFjay5jIGIvUHl0aG9uL3RyYWNlYmFjay5jCmluZGV4IDdkMWZjMmUuLjk0MWQxY2IgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90cmFjZWJhY2suYworKysgYi9QeXRob24vdHJhY2ViYWNrLmMKQEAgLTEzLDcgKzEzLDcgQEAKIAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlUcmFjZWJhY2tPYmplY3QsIHgpCiAKLSNkZWZpbmUgUFVUUyhmZCwgc3RyKSB3cml0ZShmZCwgc3RyLCAoaW50KXN0cmxlbihzdHIpKQorI2RlZmluZSBQVVRTKGZkLCBzdHIpIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCiAjZGVmaW5lIE1BWF9TVFJJTkdfTEVOR1RIIDUwMAogI2RlZmluZSBNQVhfRlJBTUVfREVQVEggMTAwCiAjZGVmaW5lIE1BWF9OVEhSRUFEUyAxMDAKQEAgLTIzMSw3ICsyMzEsNyBAQAogICAgICAgICB9CiAgICAgICAgIHN0cmNweShuYW1lYnVmLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRoKSk7CiAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKLSAgICAgICAgaWYgKHN0cmxlbihuYW1lYnVmKSAhPSBsZW4pCisgICAgICAgIGlmIChzdHJsZW4obmFtZWJ1ZikgIT0gKHNpemVfdClsZW4pCiAgICAgICAgICAgICBjb250aW51ZTsgLyogdiBjb250YWlucyAnXDAnICovCiAgICAgICAgIGlmIChsZW4gPiAwICYmIG5hbWVidWZbbGVuLTFdICE9IFNFUCkKICAgICAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwpAQCAtNTEyLDcgKzUxMiw3IEBACiAgICAgICAgIGxlbisrOwogICAgIH0gd2hpbGUgKHZhbHVlKTsKICAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7Ci0gICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOwogfQogCiAvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMHhmZmZmZmZmZl0gdG8gaGV4YWRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCkBAIC01MzIsNyArNTMyLDcgQEAKICAgICAgICAgbGVuKys7CiAgICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOwogICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CiB9CiAKIC8qIFdyaXRlIGFuIHVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZmQgdXNpbmcgYXNjaWkrYmFja3NsYXNocmVwbGFjZS4KQEAgLTU4MiwxNSArNTgyLDE2IEBACiAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjaCA9IHdzdHJbaV07Ci0gICAgICAgIGlmIChjaCA8IDEyOCkgeworICAgICAgICBpZiAoJyAnIDw9IGNoICYmIGNoIDw9IDEyNikgeworICAgICAgICAgICAgLyogcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgY2hhciBjID0gKGNoYXIpY2g7Ci0gICAgICAgICAgICB3cml0ZShmZCwgJmMsIDEpOworICAgICAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsICZjLCAxKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA8IDB4ZmYpIHsKKyAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZikgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxceCIpOwogICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDIpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZmZmKSB7CisgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxcdSIpOwogICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDQpOwogICAgICAgICB9CkBAIC02MTgsOSArNjE5LDkgQEAKICAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX2ZpbGVuYW1lICE9IE5VTEwKICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX2ZpbGVuYW1lKSkKICAgICB7Ci0gICAgICAgIHdyaXRlKGZkLCAiXCIiLCAxKTsKKyAgICAgICAgUFVUUyhmZCwgIlwiIik7CiAgICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKLSAgICAgICAgd3JpdGUoZmQsICJcIiIsIDEpOworICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICB9IGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CiAgICAgfQpAQCAtNjM3LDcgKzYzOCw3IEBACiAgICAgZWxzZQogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CiAKLSAgICB3cml0ZShmZCwgIlxuIiwgMSk7CisgICAgUFVUUyhmZCwgIlxuIik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC02NjcsNiArNjY4LDEyIEBACiAgICAgfQogfQogCisvKiBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgYSBQeXRob24gdGhyZWFkIGludG8gZmQuIFVzZSB3cml0ZSgpIHRvIHdyaXRlIHRoZQorICAgdHJhY2ViYWNrIGFuZCByZXRyeSBpZiB3cml0ZSgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChmYWlsZWQgd2l0aAorICAgRUlOVFIpLCBidXQgZG9uJ3QgY2FsbCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyLgorCisgICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIHRvIGNhbGwgUHlFcnJfQ2hlY2tTaWduYWxzKCkgdG8gY2FsbCBQeXRob24gc2lnbmFsCisgICBoYW5kbGVycyBpZiBzaWduYWxzIHdlcmUgcmVjZWl2ZWQuICovCiB2b2lkCiBfUHlfRHVtcFRyYWNlYmFjayhpbnQgZmQsIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIHsKQEAgLTY4NSwxMCArNjkyLDE2IEBACiAgICAgICAgIFBVVFMoZmQsICJDdXJyZW50IHRocmVhZCAweCIpOwogICAgIGVsc2UKICAgICAgICAgUFVUUyhmZCwgIlRocmVhZCAweCIpOwotICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBzaXplb2YobG9uZykqMik7CisgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIHNpemVvZih1bnNpZ25lZCBsb25nKSoyKTsKICAgICBQVVRTKGZkLCAiIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbiIpOwogfQogCisvKiBEdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIFB5dGhvbiB0aHJlYWRzIGludG8gZmQuIFVzZSB3cml0ZSgpIHRvIHdyaXRlIHRoZQorICAgdHJhY2ViYWNrIGFuZCByZXRyeSBpZiB3cml0ZSgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChmYWlsZWQgd2l0aAorICAgRUlOVFIpLCBidXQgZG9uJ3QgY2FsbCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVyLgorCisgICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIHRvIGNhbGwgUHlFcnJfQ2hlY2tTaWduYWxzKCkgdG8gY2FsbCBQeXRob24gc2lnbmFsCisgICBoYW5kbGVycyBpZiBzaWduYWxzIHdlcmUgcmVjZWl2ZWQuICovCiBjb25zdCBjaGFyKgogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpCkBAIC03MDQsMTAgKzcxNywxMSBAQAogICAgIC8qIER1bXAgdGhlIHRyYWNlYmFjayBvZiBlYWNoIHRocmVhZCAqLwogICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CiAgICAgbnRocmVhZHMgPSAwOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBkbwogICAgIHsKICAgICAgICAgaWYgKG50aHJlYWRzICE9IDApCi0gICAgICAgICAgICB3cml0ZShmZCwgIlxuIiwgMSk7CisgICAgICAgICAgICBQVVRTKGZkLCAiXG4iKTsKICAgICAgICAgaWYgKG50aHJlYWRzID49IE1BWF9OVEhSRUFEUykgewogICAgICAgICAgICAgUFVUUyhmZCwgIi4uLlxuIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTcxNyw2ICs3MzEsNyBAQAogICAgICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05leHQodHN0YXRlKTsKICAgICAgICAgbnRocmVhZHMrKzsKICAgICB9IHdoaWxlICh0c3RhdGUgIT0gTlVMTCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDI3NzUxNTEuLjgyZDE2OTcgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsMTMgKzEsMTQgQEAKLVRoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy40LjMKK1RoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy41LjAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLAogMjAxMiwgMjAxMywgMjAxNCwgMjAxNSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKLVB5dGhvbiAzLnggaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgbGFuZ3VhZ2UsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSAyLngKLWxpbmUgb2YgcmVsZWFzZXMuICBUaGUgbGFuZ3VhZ2UgaXMgbW9zdGx5IHRoZSBzYW1lLCBidXQgbWFueSBkZXRhaWxzLCBlc3BlY2lhbGx5Ci1ob3cgYnVpbHQtaW4gb2JqZWN0cyBsaWtlIGRpY3Rpb25hcmllcyBhbmQgc3RyaW5ncyB3b3JrLCBoYXZlIGNoYW5nZWQKLWNvbnNpZGVyYWJseSwgYW5kIGEgbG90IG9mIGRlcHJlY2F0ZWQgZmVhdHVyZXMgaGF2ZSBmaW5hbGx5IGJlZW4gcmVtb3ZlZC4KK1B5dGhvbiAzLnggaXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgbGFuZ3VhZ2UsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQorMi54IGxpbmUgb2YgcmVsZWFzZXMuICBUaGUgbGFuZ3VhZ2UgaXMgbW9zdGx5IHRoZSBzYW1lLCBidXQgbWFueSBkZXRhaWxzLAorZXNwZWNpYWxseSBob3cgYnVpbHQtaW4gb2JqZWN0cyBsaWtlIGRpY3Rpb25hcmllcyBhbmQgc3RyaW5ncyB3b3JrLAoraGF2ZSBjaGFuZ2VkIGNvbnNpZGVyYWJseSwgYW5kIGEgbG90IG9mIGRlcHJlY2F0ZWQgZmVhdHVyZXMgaGF2ZSBmaW5hbGx5CitiZWVuIHJlbW92ZWQuCiAKIAogQnVpbGQgSW5zdHJ1Y3Rpb25zCkBAIC0xNSw4ICsxNiw2IEBACiAKIE9uIFVuaXgsIExpbnV4LCBCU0QsIE9TWCwgYW5kIEN5Z3dpbjoKIAotTmV3IHRleHQKLQogICAgIC4vY29uZmlndXJlCiAgICAgbWFrZQogICAgIG1ha2UgdGVzdApAQCAtMjksMTQgKzI4LDE0IEBACiBlbHNld2hlcmUgaXQncyBqdXN0IHB5dGhvbi4KIAogT24gTWFjIE9TIFgsIGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgUHl0aG9uIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrLCB5b3Ugc2hvdWxkCi11c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzIHRoZQotUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkgd2FudCB0bwotc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KK3VzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMKK3RoZSBQeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heQord2FudCB0byBzZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgogCiBPbiBXaW5kb3dzLCBzZWUgUENidWlsZC9yZWFkbWUudHh0LgogCi1JZiB5b3Ugd2lzaCwgeW91IGNhbiBjcmVhdGUgYSBzdWJkaXJlY3RvcnkgYW5kIGludm9rZSBjb25maWd1cmUgZnJvbSB0aGVyZS4gIEZvcgotZXhhbXBsZToKK0lmIHlvdSB3aXNoLCB5b3UgY2FuIGNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgaW52b2tlIGNvbmZpZ3VyZSBmcm9tIHRoZXJlLgorRm9yIGV4YW1wbGU6CiAKICAgICBta2RpciBkZWJ1ZwogICAgIGNkIGRlYnVnCkBAIC00NCwyMSArNDMsNDkgQEAKICAgICBtYWtlCiAgICAgbWFrZSB0ZXN0CiAKLShUaGlzIHdpbGwgZmFpbCBpZiB5b3UgKmFsc28qIGJ1aWx0IGF0IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgWW91IHNob3VsZCBkbyBhCi0ibWFrZSBjbGVhbiIgYXQgdGhlIHRvcGxldmVsIGZpcnN0LikKKyhUaGlzIHdpbGwgZmFpbCBpZiB5b3UgKmFsc28qIGJ1aWx0IGF0IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorWW91IHNob3VsZCBkbyBhICJtYWtlIGNsZWFuIiBhdCB0aGUgdG9wbGV2ZWwgZmlyc3QuKQorCitJZiB5b3UgbmVlZCBhbiBvcHRpbWl6ZWQgdmVyc2lvbiBvZiBQeXRob24sIHlvdSB0eXBlICJtYWtlIHByb2ZpbGUtb3B0IiBpbiB0aGUKK3RvcCBsZXZlbCBkaXJlY3RvcnkuIFRoaXMgd2lsbCByZWJ1aWxkIHRoZSBpbnRlcnByZXRlciBleGVjdXRhYmxlIHVzaW5nIFByb2ZpbGUKK0d1aWRlZCBPcHRpbWl6YXRpb24gKFBHTykuIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgc2VjdGlvbiBiZWxsb3cuCisKKworUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUEdPIHRha2VzIGFkdmFudGFnZSBvZiByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdDQyBvciBDbGFuZyBjb21waWxlcnMuCitJZiByYW4sIHRoZSAicHJvZmlsZS1vcHQiIHJ1bGUgd2lsbCBkbyBzZXZlcmFsIHN0ZXBzLgorCitGaXJzdCwgdGhlIGVudGlyZSBQeXRob24gZGlyZWN0b3J5IGlzIGNsZWFuZWQgb2YgdGVtcG9yYXJ5IGZpbGVzIHRoYXQKK21heSByZXN1bHRlZCBpbiBhIHByZXZpb3VzIGNvbXBpbGF0aW9uLgorCitUaGVuLCBhbiBpbnN0cnVtZW50ZWQgdmVyc2lvbiBvZiB0aGUgaW50ZXJwcmV0ZXIgaXMgYnVpbHQsIHVzaW5nIHN1aXRhYmxlCitjb21waWxlciBmbGFncyBmb3IgZWFjaCBmbGF2b3VyLiBOb3RlIHRoYXQgdGhpcyBpcyBqdXN0IGFuIGludGVybWVkaWFyeQorc3RlcCBhbmQgdGhlIGJpbmFyeSByZXN1bHRlZCBhZnRlciB0aGlzIHN0ZXAgaXMgbm90IGdvb2QgZm9yIHJlYWwgbGlmZQord29ya2xvYWRzLCBhcyBpdCBoYXMgcHJvZmlsaW5nIGluc3RydWN0aW9ucyBlbWJlZGRlZCBpbnNpZGUuCisKK0FmdGVyIHRoaXMgaW5zdHJ1bWVudGVkIHZlcnNpb24gb2YgdGhlIGludGVycHJldGVyIGlzIGJ1aWx0LCB0aGUgTWFrZWZpbGUKK3dpbGwgYXV0b21hdGljYWxseSBydW4gYSB0cmFpbmluZyB3b3JrbG9hZC4gVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8KK3Byb2ZpbGUgdGhlIGludGVycHJldGVyIGV4ZWN1dGlvbi4gTm90ZSBhbHNvIHRoYXQgYW55IG91dHB1dCwgYm90aCBzdGRvdXQKK2FuZCBzdGRlcnIsIHRoYXQgbWF5IGFwcGVhciBhdCB0aGlzIHN0ZXAgaXMgc3VwcmVzc2VkLgorCitGaW5hbGx5LCB0aGUgbGFzdCBzdGVwIGlzIHRvIHJlYnVpbGQgdGhlIGludGVycHJldGVyLCB1c2luZyB0aGUgaW5mb3JtYXRpb24KK2NvbGxlY3RlZCBpbiB0aGUgcHJldmlvdXMgb25lLiBUaGUgZW5kIHJlc3VsdCB3aWxsIGJlIGEgdGhlIFB5dGhvbiBiaW5hcnkKK3RoYXQgaXMgb3B0aW1pemVkIGFuZCBzdWl0YWJsZSBmb3IgZGlzdHJpYnV0aW9uIG9yIHByb2R1Y3Rpb24gaW5zdGFsbGF0aW9uLgogCiAKIFdoYXQncyBOZXcKIC0tLS0tLS0tLS0KIAotV2UgdHJ5IHRvIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuNCIgZG9jdW1lbnQsIGZvdW5kIGF0CitXZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiB0aGUgIldoYXQncyBOZXcgaW4KK1B5dGhvbiAzLjUiIGRvY3VtZW50LCBmb3VuZCBhdAogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvd2hhdHNuZXcvMy40Lmh0bWwKKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy8zLjUuaHRtbAogCi1Gb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sIGlzCi1pbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNyByZWxlYXNlIHVuZGVyCi1kZXZlbG9wbWVudCkuCitGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sCitpcyBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNworcmVsZWFzZSB1bmRlciBkZXZlbG9wbWVudCkuCiAKIElmIHlvdSB3YW50IHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIHNlZSB0aGUgc2VjdGlvbiBiZWxvdwogZW50aXRsZWQgIkluc3RhbGxpbmcgbXVsdGlwbGUgdmVyc2lvbnMiLgpAQCAtNjcsOSArOTQsOSBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi1Eb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy40IGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKK0RvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjUgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvCisgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtOTQsMTYgKzEyMSwxNyBAQAogQSBzb3VyY2UtdG8tc291cmNlIHRyYW5zbGF0aW9uIHRvb2wsICIydG8zIiwgY2FuIHRha2UgY2FyZSBvZiB0aGUgbXVuZGFuZSB0YXNrCiBvZiBjb252ZXJ0aW5nIGxhcmdlIGFtb3VudHMgb2Ygc291cmNlIGNvZGUuICBJdCBpcyBub3QgYSBjb21wbGV0ZSBzb2x1dGlvbiBidXQKIGlzIGNvbXBsZW1lbnRlZCBieSB0aGUgZGVwcmVjYXRpb24gd2FybmluZ3MgaW4gMi42LiAgU2VlCi1odHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKIC0tLS0tLS0KIAotVG8gdGVzdCB0aGUgaW50ZXJwcmV0ZXIsIHR5cGUgIm1ha2UgdGVzdCIgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuICBUaGUgdGVzdAotc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbiBnZW5lcmFsbHkgaWdub3JlIHRoZSBtZXNzYWdlcyBhYm91dCBza2lwcGVkCi10ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2ggY2FuJ3QgYmUgaW1wb3J0ZWQuICBJZiBhIG1lc3NhZ2UgaXMgcHJpbnRlZAotYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjayBvciBjb3JlIGR1bXAgaXMgcHJvZHVjZWQsIHNvbWV0aGluZyBpcyB3cm9uZy4KK1RvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorVGhlIHRlc3Qgc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbiBnZW5lcmFsbHkgaWdub3JlIHRoZSBtZXNzYWdlcworYWJvdXQgc2tpcHBlZCB0ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2ggY2FuJ3QgYmUgaW1wb3J0ZWQuCitJZiBhIG1lc3NhZ2UgaXMgcHJpbnRlZCBhYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrIG9yIGNvcmUgZHVtcAoraXMgcHJvZHVjZWQsIHNvbWV0aGluZyBpcyB3cm9uZy4KIAogQnkgZGVmYXVsdCwgdGVzdHMgYXJlIHByZXZlbnRlZCBmcm9tIG92ZXJ1c2luZyByZXNvdXJjZXMgbGlrZSBkaXNrIHNwYWNlIGFuZAogbWVtb3J5LiAgVG8gZW5hYmxlIHRoZXNlIHRlc3RzLCBydW4gIm1ha2UgdGVzdGFsbCIuCkBAIC0xMjMsMTYgKzE1MSwxNiBAQAogCiBPbiBVbml4IGFuZCBNYWMgc3lzdGVtcyBpZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uCiB1c2luZyB0aGUgc2FtZSBpbnN0YWxsYXRpb24gcHJlZml4ICgtLXByZWZpeCBhcmd1bWVudCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCkKLXlvdSBtdXN0IHRha2UgY2FyZSB0aGF0IHlvdXIgcHJpbWFyeSBweXRob24gZXhlY3V0YWJsZSBpcyBub3Qgb3ZlcndyaXR0ZW4gYnkgdGhlCi1pbnN0YWxsYXRpb24gb2YgYSBkaWZmZXJlbnQgdmVyc2lvbi4gIEFsbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW5zdGFsbGVkIHVzaW5nCi0ibWFrZSBhbHRpbnN0YWxsIiBjb250YWluIHRoZSBtYWpvciBhbmQgbWlub3IgdmVyc2lvbiBhbmQgY2FuIHRodXMgbGl2ZQotc2lkZS1ieS1zaWRlLiAgIm1ha2UgaW5zdGFsbCIgYWxzbyBjcmVhdGVzICR7cHJlZml4fS9iaW4vcHl0aG9uMyB3aGljaCByZWZlcnMgdG8KLSR7cHJlZml4fS9iaW4vcHl0aG9uWC5ZLiAgSWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIHVzaW5nIHRoZQotc2FtZSBwcmVmaXggeW91IG11c3QgZGVjaWRlIHdoaWNoIHZlcnNpb24gKGlmIGFueSkgaXMgeW91ciAicHJpbWFyeSIgdmVyc2lvbi4KLUluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIgdmVyc2lvbnMgdXNpbmcKLSJtYWtlIGFsdGluc3RhbGwiLgoreW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieQordGhlIGluc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQKK3VzaW5nICJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCitzaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycwordG8gJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcKK3RoZSBzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IgordmVyc2lvbi4gIEluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIKK3ZlcnNpb25zIHVzaW5nICJtYWtlIGFsdGluc3RhbGwiLgogCi1Gb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuNCB3aXRoIDIuNyBiZWluZyB0aGUKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy41IHdpdGggMi43IGJlaW5nIHRoZQogcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNyBidWlsZCBkaXJlY3RvcnkKIGFuZCAibWFrZSBhbHRpbnN0YWxsIiBpbiB0aGUgb3RoZXJzLgogCkBAIC0xNDEsNyArMTY5LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZSdyZSBzb2xpY2l0aW5nIGJ1ZyByZXBvcnRzIGFib3V0IGFsbCBhc3BlY3RzIG9mIHRoZSBsYW5ndWFnZS4gIEZpeGVzIGFyZSBhbHNvCi13ZWxjb21lLCBwcmVmZXJhYmxlIGluIHVuaWZpZWQgZGlmZiBmb3JtYXQuICBQbGVhc2UgdXNlIHRoZSBpc3N1ZSB0cmFja2VyOgord2VsY29tZSwgcHJlZmVyYWJseSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKIAogICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvCiAKQEAgLTE2OCw3ICsxOTYsNyBAQAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQyOSBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0MjkvCitTZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCkBAIC0xODQsMTEgKzIxMiwxMSBAQAogCiBDb3B5cmlnaHQgKGMpIDE5OTEtMTk5NSBTdGljaHRpbmcgTWF0aGVtYXRpc2NoIENlbnRydW0uICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCi1TZWUgdGhlIGZpbGUgIkxJQ0VOU0UiIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaGlzdG9yeSBvZiB0aGlzIHNvZnR3YXJlLCB0ZXJtcyAmCi1jb25kaXRpb25zIGZvciB1c2FnZSwgYW5kIGEgRElTQ0xBSU1FUiBPRiBBTEwgV0FSUkFOVElFUy4KK1NlZSB0aGUgZmlsZSAiTElDRU5TRSIgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBoaXN0b3J5IG9mIHRoaXMgc29mdHdhcmUsCit0ZXJtcyAmIGNvbmRpdGlvbnMgZm9yIHVzYWdlLCBhbmQgYSBESVNDTEFJTUVSIE9GIEFMTCBXQVJSQU5USUVTLgogCi1UaGlzIFB5dGhvbiBkaXN0cmlidXRpb24gY29udGFpbnMgKm5vKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBjb2RlLCBzbwotaXQgbWF5IGJlIHVzZWQgaW4gcHJvcHJpZXRhcnkgcHJvamVjdHMuICBUaGVyZSBhcmUgaW50ZXJmYWNlcyB0byBzb21lIEdOVSBjb2RlCi1idXQgdGhlc2UgYXJlIGVudGlyZWx5IG9wdGlvbmFsLgorVGhpcyBQeXRob24gZGlzdHJpYnV0aW9uIGNvbnRhaW5zICpubyogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgY29kZSwKK3NvIGl0IG1heSBiZSB1c2VkIGluIHByb3ByaWV0YXJ5IHByb2plY3RzLiAgVGhlcmUgYXJlIGludGVyZmFjZXMgdG8gc29tZSBHTlUKK2NvZGUgYnV0IHRoZXNlIGFyZSBlbnRpcmVseSBvcHRpb25hbC4KIAogQWxsIHRyYWRlbWFya3MgcmVmZXJlbmNlZCBoZXJlaW4gYXJlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgaG9sZGVycy4KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAppbmRleCA0Y2E1NjA0Li5lM2MyZGJkIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CkBAIC0xLDIxICsxLDkgQEAKIEByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImJ1aWxkbXNpIiBzdGVwLg0KK3NldGxvY2FsDQogDQotY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLmJhdA0KLUByZW0gYnVpbGQgcmVsZWFzZSB2ZXJzaW9ucyBvZiB0aGluZ3MNCi1jYWxsICIlVlMxMDBDT01OVE9PTFMldnN2YXJzMzIuYmF0Ig0KK3B1c2hkDQogDQotQHJlbSBidWlsZCBQeXRob24NCi1tc2J1aWxkIC9wOnVzZWVudj10cnVlIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPVdpbjMyDQorQHJlbSBidWlsZCBib3RoIHNuYXBzaG90IE1TSXMNCitjYWxsICIlfmRwMC4uXG1zaVxidWlsZC5iYXQiIC14ODYgLXg2NA0KIA0KLUByZW0gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24NCi1iYXNoLmV4ZSAtYyAnY2QgRG9jO21ha2UgUFlUSE9OPXB5dGhvbjIuNSB1cGRhdGUgaHRtbGhlbHAnDQotIiVQcm9ncmFtRmlsZXMlXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhlIiBEb2NcYnVpbGRcaHRtbGhlbHBccHl0aG9uMjZhMy5oaHANCi0NCi1AcmVtIGJ1aWxkIHRoZSBNU0kgZmlsZQ0KLWNkIFBDDQotbm1ha2UgL2YgaWNvbnMubWFrDQotY2QgLi5cVG9vbHNcbXNpDQotZGVsICoubXNpDQotbm1ha2UgL2YgbXNpc3VwcG9ydC5tYWsNCi0lSE9TVF9QWVRIT04lIG1zaS5weQ0KLQ0KK3BvcGQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IDE1NGRmYTUuLmQxZjVmNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC0xLDE1ICsxLDE5IEBACi1AcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJ0ZXN0IiBzdGVwLg0KLUBzZXRsb2NhbA0KK0BlY2hvIG9mZg0KK3JlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCitzZXRsb2NhbA0KIA0KLUBzZXQgaGVyZT0lfmRwMA0KLUBzZXQgcnRfb3B0cz0tcSAtZA0KK3NldCBoZXJlPSV+ZHAwDQorc2V0IHJ0X29wdHM9LXEgLWQNCitzZXQgcmVncnRlc3RfYXJncz0NCiANCiA6Q2hlY2tPcHRzDQotQGlmICclMSc9PScteDY0JyAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1AaWYgJyUxJz09Jy1kJyAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1AaWYgJyUxJz09Jy1PJyAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1AaWYgJyUxJz09Jy1xJyAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1AaWYgJyUxJz09JytkJyAoc2V0IHJ0X29wdHM9JXJ0X29wdHM6LWQ9JSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotQGlmICclMSc9PScrcScgKHNldCBydF9vcHRzPSVydF9vcHRzOi1xPSUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSIteDY0IiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLWQiIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSItTyIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09Ii1xIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iK2QiIChzZXQgcnRfb3B0cz0lcnRfb3B0czotZD0lKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iK3EiIChzZXQgcnRfb3B0cz0lcnRfb3B0czotcT0lKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdF9hcmdzPSVyZWdydGVzdF9hcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQotY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC1uIC0tdGltZW91dD0zNjAwICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQorZWNobyBvbg0KK2NhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAtbiAtLXRpbWVvdXQ9MzYwMCAlcmVncnRlc3RfYXJncyUNCmRpZmYgLS1naXQgYS9Ub29scy9jbGluaWMvY2xpbmljLnB5IGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQppbmRleCBjNmFjM2I5Li4zY2UzNTg3IDEwMDc1NQotLS0gYS9Ub29scy9jbGluaWMvY2xpbmljLnB5CisrKyBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKQEAgLTI2LDggKzI2LDEyIEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5cGVzCiBpbXBvcnQgdXVpZAogCitmcm9tIHR5cGVzIGltcG9ydCAqCitOb25lVHlwZSA9IHR5cGUoTm9uZSkKKwogIyBUT0RPOgogIwogIyBzb29uOgpAQCAtNjYsNiArNzAsMTAgQEAKIAogdW5rbm93biA9IFVua25vd24oKQogCitzaWdfZW5kX21hcmtlciA9ICctLScKKworCitfdGV4dF9hY2N1bXVsYXRvcl9udCA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoIl90ZXh0X2FjY3VtdWxhdG9yIiwgInRleHQgYXBwZW5kIG91dHB1dCIpCiAKIGRlZiBfdGV4dF9hY2N1bXVsYXRvcigpOgogICAgIHRleHQgPSBbXQpAQCAtNzMsOSArODEsMTEgQEAKICAgICAgICAgcyA9ICcnLmpvaW4odGV4dCkKICAgICAgICAgdGV4dC5jbGVhcigpCiAgICAgICAgIHJldHVybiBzCi0gICAgcmV0dXJuIHRleHQsIHRleHQuYXBwZW5kLCBvdXRwdXQKKyAgICByZXR1cm4gX3RleHRfYWNjdW11bGF0b3JfbnQodGV4dCwgdGV4dC5hcHBlbmQsIG91dHB1dCkKIAogCit0ZXh0X2FjY3VtdWxhdG9yX250ID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgidGV4dF9hY2N1bXVsYXRvciIsICJ0ZXh0IGFwcGVuZCIpCisKIGRlZiB0ZXh0X2FjY3VtdWxhdG9yKCk6CiAgICAgIiIiCiAgICAgQ3JlYXRlcyBhIHNpbXBsZSB0ZXh0IGFjY3VtdWxhdG9yIC8gam9pbmVyLgpAQCAtODgsNyArOTgsNyBAQAogICAgICAgIGVtcHRpZXMgdGhlIGFjY3VtdWxhdG9yLgogICAgICIiIgogICAgIHRleHQsIGFwcGVuZCwgb3V0cHV0ID0gX3RleHRfYWNjdW11bGF0b3IoKQotICAgIHJldHVybiBhcHBlbmQsIG91dHB1dAorICAgIHJldHVybiB0ZXh0X2FjY3VtdWxhdG9yX250KGFwcGVuZCwgb3V0cHV0KQogCiAKIGRlZiB3YXJuX29yX2ZhaWwoZmFpbD1GYWxzZSwgKmFyZ3MsIGZpbGVuYW1lPU5vbmUsIGxpbmVfbnVtYmVyPU5vbmUpOgpAQCAtNTIxLDYgKzUzMSw1OCBAQAogICAgIHJldHVybiBzCiAKIAorZGVmIHdyYXBfZGVjbGFyYXRpb25zKHRleHQsIGxlbmd0aD03OCk6CisgICAgIiIiCisgICAgQSBzaW1wbGUtbWluZGVkIHRleHQgd3JhcHBlciBmb3IgQyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisKKyAgICBJdCB2aWV3cyBhIGRlY2xhcmF0aW9uIGxpbmUgYXMgbG9va2luZyBsaWtlIHRoaXM6CisgICAgICAgIHh4eHh4eHh4KHh4eHh4eHh4eCx4eHh4eHh4eHgpCisgICAgSWYgY2FsbGVkIHdpdGggbGVuZ3RoPTMwLCBpdCB3b3VsZCB3cmFwIHRoYXQgbGluZSBpbnRvCisgICAgICAgIHh4eHh4eHh4KHh4eHh4eHh4eCwKKyAgICAgICAgICAgICAgICAgeHh4eHh4eHh4KQorICAgIChJZiB0aGUgZGVjbGFyYXRpb24gaGFzIHplcm8gb3Igb25lIHBhcmFtZXRlcnMsIHRoaXMKKyAgICBmdW5jdGlvbiB3b24ndCB3cmFwIGl0LikKKworICAgIElmIHRoaXMgZG9lc24ndCB3b3JrIHByb3Blcmx5LCBpdCdzIHByb2JhYmx5IGJldHRlciB0bworICAgIHN0YXJ0IGZyb20gc2NyYXRjaCB3aXRoIGEgbW9yZSBzb3BoaXN0aWNhdGVkIGFsZ29yaXRobSwKKyAgICByYXRoZXIgdGhhbiB0cnkgYW5kIGltcHJvdmUvZGVidWcgdGhpcyBkdW1iIGxpdHRsZSBmdW5jdGlvbi4KKyAgICAiIiIKKyAgICBsaW5lcyA9IFtdCisgICAgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdCgnXG4nKToKKyAgICAgICAgcHJlZml4LCBfLCBhZnRlcl9sX3BhcmVuID0gbGluZS5wYXJ0aXRpb24oJygnKQorICAgICAgICBpZiBub3QgYWZ0ZXJfbF9wYXJlbjoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGFyYW1ldGVycywgXywgYWZ0ZXJfcl9wYXJlbiA9IGFmdGVyX2xfcGFyZW4ucGFydGl0aW9uKCcpJykKKyAgICAgICAgaWYgbm90IF86CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcsJyBub3QgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcGFyYW1ldGVycyA9IFt4LnN0cmlwKCkgKyAiLCAiIGZvciB4IGluIHBhcmFtZXRlcnMuc3BsaXQoJywnKV0KKyAgICAgICAgcHJlZml4ICs9ICIoIgorICAgICAgICBpZiBsZW4ocHJlZml4KSA8IGxlbmd0aDoKKyAgICAgICAgICAgIHNwYWNlcyA9ICIgIiAqIGxlbihwcmVmaXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcGFjZXMgPSAiICIgKiA0CisKKyAgICAgICAgd2hpbGUgcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGxpbmUgPSBwcmVmaXgKKyAgICAgICAgICAgIGZpcnN0ID0gVHJ1ZQorICAgICAgICAgICAgd2hpbGUgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICBpZiAobm90IGZpcnN0IGFuZAorICAgICAgICAgICAgICAgICAgICAobGVuKGxpbmUpICsgbGVuKHBhcmFtZXRlcnNbMF0pID4gbGVuZ3RoKSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbGluZSArPSBwYXJhbWV0ZXJzLnBvcCgwKQorICAgICAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgiLCAiKSArICIpIiArIGFmdGVyX3JfcGFyZW4KKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lLnJzdHJpcCgpKQorICAgICAgICAgICAgcHJlZml4ID0gc3BhY2VzCisgICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykKKworCiBjbGFzcyBDTGFuZ3VhZ2UoTGFuZ3VhZ2UpOgogCiAgICAgYm9keV9wcmVmaXggICA9ICIjIgpAQCAtNTU1LDggKzYxNywxMyBAQAogICAgICAgICAgICAgYWRkKHF1b3RlZF9mb3JfY19zdHJpbmcobGluZSkpCiAgICAgICAgICAgICBhZGQoJ1xcbiJcbicpCiAKLSAgICAgICAgdGV4dC5wb3AoKQotICAgICAgICBhZGQoJyInKQorICAgICAgICBpZiB0ZXh0Wy0yXSA9PSBzaWdfZW5kX21hcmtlcjoKKyAgICAgICAgICAgICMgSWYgd2Ugb25seSBoYXZlIGEgc2lnbmF0dXJlLCBhZGQgdGhlIGJsYW5rIGxpbmUgdGhhdCB0aGUKKyAgICAgICAgICAgICMgX190ZXh0X3NpZ25hdHVyZV9fIGdldHRlciBleHBlY3RzIHRvIGJlIHRoZXJlLgorICAgICAgICAgICAgYWRkKCciXFxuIicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXh0LnBvcCgpCisgICAgICAgICAgICBhZGQoJyInKQogICAgICAgICByZXR1cm4gJycuam9pbih0ZXh0KQogCiAgICAgZGVmIG91dHB1dF90ZW1wbGF0ZXMoc2VsZiwgZik6CkBAIC01ODksOCArNjU2LDYgQEAKICAgICAgICAgbWV0aF9vID0gKGxlbihwYXJhbWV0ZXJzKSA9PSAxIGFuZAogICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGFuZAogICAgICAgICAgICAgICBub3QgY29udmVydGVyc1swXS5pc19vcHRpb25hbCgpIGFuZAotICAgICAgICAgICAgICBpc2luc3RhbmNlKGNvbnZlcnRlcnNbMF0sIG9iamVjdF9jb252ZXJ0ZXIpIGFuZAotICAgICAgICAgICAgICBjb252ZXJ0ZXJzWzBdLmZvcm1hdF91bml0ID09ICdPJyBhbmQKICAgICAgICAgICAgICAgbm90IG5ld19vcl9pbml0KQogCiAgICAgICAgICMgd2UgaGF2ZSB0byBzZXQgdGhlc2UgdGhpbmdzIGJlZm9yZSB3ZSdyZSBkb25lOgpAQCAtNjk2LDIyICs3NjEsMzggQEAKICAgICAgICAgZWxpZiBtZXRoX286CiAgICAgICAgICAgICBmbGFncyA9ICJNRVRIX08iCiAKLSAgICAgICAgICAgIG1ldGhfb19wcm90b3R5cGUgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgotICAgICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7aW1wbF9wYXJhbWV0ZXJzfSkKLSAgICAgICAgICAgICAgICAiIiIpCisgICAgICAgICAgICBpZiAoaXNpbnN0YW5jZShjb252ZXJ0ZXJzWzBdLCBvYmplY3RfY29udmVydGVyKSBhbmQKKyAgICAgICAgICAgICAgICBjb252ZXJ0ZXJzWzBdLmZvcm1hdF91bml0ID09ICdPJyk6CisgICAgICAgICAgICAgICAgbWV0aF9vX3Byb3RvdHlwZSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgorICAgICAgICAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe2ltcGxfcGFyYW1ldGVyc30pCisgICAgICAgICAgICAgICAgICAgICIiIikKIAotICAgICAgICAgICAgaWYgZGVmYXVsdF9yZXR1cm5fY29udmVydGVyOgotICAgICAgICAgICAgICAgICMgbWFwcyBwZXJmZWN0bHkgdG8gTUVUSF9PLCBkb2Vzbid0IG5lZWQgYSByZXR1cm4gY29udmVydGVyLgotICAgICAgICAgICAgICAgICMgc28gd2Ugc2tpcCBtYWtpbmcgYSBwYXJzZSBmdW5jdGlvbgotICAgICAgICAgICAgICAgICMgYW5kIGNhbGwgZGlyZWN0bHkgaW50byB0aGUgaW1wbCBmdW5jdGlvbi4KLSAgICAgICAgICAgICAgICBpbXBsX3Byb3RvdHlwZSA9IHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfZGVmaW5pdGlvbiA9ICcnCi0gICAgICAgICAgICAgICAgaW1wbF9kZWZpbml0aW9uID0gbWV0aF9vX3Byb3RvdHlwZQorICAgICAgICAgICAgICAgIGlmIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlcjoKKyAgICAgICAgICAgICAgICAgICAgIyBtYXBzIHBlcmZlY3RseSB0byBNRVRIX08sIGRvZXNuJ3QgbmVlZCBhIHJldHVybiBjb252ZXJ0ZXIuCisgICAgICAgICAgICAgICAgICAgICMgc28gd2Ugc2tpcCBtYWtpbmcgYSBwYXJzZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAjIGFuZCBjYWxsIGRpcmVjdGx5IGludG8gdGhlIGltcGwgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIGltcGxfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZSA9IHBhcnNlcl9kZWZpbml0aW9uID0gJycKKyAgICAgICAgICAgICAgICAgICAgaW1wbF9kZWZpbml0aW9uID0gbWV0aF9vX3Byb3RvdHlwZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgU0xJR0hUIEhBQ0sKKyAgICAgICAgICAgICAgICAgICAgIyB1c2UgaW1wbF9wYXJhbWV0ZXJzIGZvciB0aGUgcGFyc2VyIGhlcmUhCisgICAgICAgICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBtZXRoX29fcHJvdG90eXBlCisgICAgICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSkKKwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFNMSUdIVCBIQUNLCi0gICAgICAgICAgICAgICAgIyB1c2UgaW1wbF9wYXJhbWV0ZXJzIGZvciB0aGUgcGFyc2VyIGhlcmUhCi0gICAgICAgICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZSA9IG1ldGhfb19wcm90b3R5cGUKLSAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUpCisgICAgICAgICAgICAgICAgYXJnbmFtZSA9ICdhcmcnCisgICAgICAgICAgICAgICAgaWYgcGFyYW1ldGVyc1swXS5uYW1lID09IGFyZ25hbWU6CisgICAgICAgICAgICAgICAgICAgIGFyZ25hbWUgKz0gJ18nCisgICAgICAgICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgorICAgICAgICAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe3NlbGZfdHlwZX17c2VsZl9uYW1lfSwgUHlPYmplY3QgKiVzKQorICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lKQorCisgICAgICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZSglcywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICAgICAgIiIiICUgYXJnbmFtZSwgaW5kZW50PTQpKQogCiAgICAgICAgIGVsaWYgaGFzX29wdGlvbl9ncm91cHM6CiAgICAgICAgICAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3aXRoIG9wdGlvbiBncm91cHMKQEAgLTc0Niw4ICs4MjcsNyBAQAogICAgICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZSA9IHBhcnNlcl9wcm90b3R5cGVfdmFyYXJncwogCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAie2Zvcm1hdF91bml0c306e25hbWV9IiwKKyAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsCiAgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQpAQCAtNzU5LDE0ICs4MzksMTIgQEAKICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2tleXdvcmQKIAogICAgICAgICAgICAgYm9keSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgICAgICAgICAgICAgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAgICAgICAgICAgICAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAorICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCkBAIC04MjAsNyArODk4LDggQEAKICAgICAgICAgICAgIGNwcF9pZiA9ICIjaWYgIiArIGNvbmRpdGlvbmFsCiAgICAgICAgICAgICBjcHBfZW5kaWYgPSAiI2VuZGlmIC8qICIgKyBjb25kaXRpb25hbCArICIgKi8iCiAKLSAgICAgICAgICAgIGlmIG1ldGhvZGRlZl9kZWZpbmU6CisgICAgICAgICAgICBpZiBtZXRob2RkZWZfZGVmaW5lIGFuZCBmLm5hbWUgbm90IGluIGNsaW5pYy5pZm5kZWZfc3ltYm9sczoKKyAgICAgICAgICAgICAgICBjbGluaWMuaWZuZGVmX3N5bWJvbHMuYWRkKGYubmFtZSkKICAgICAgICAgICAgICAgICBtZXRob2RkZWZfaWZuZGVmID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICAgICAgICAgICNpZm5kZWYge21ldGhvZGRlZl9uYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgI2RlZmluZSB7bWV0aG9kZGVmX25hbWV9CkBAIC0xMDIwLDcgKzEwOTksNyBAQAogICAgICAgICAjIE1FVEhfTywgd2UgaGF2ZSBleGFjdGx5IG9uZSBhbnl3YXksIHNvIHdlIGtub3cgZXhhY3RseQogICAgICAgICAjIHdoZXJlIGl0IGlzLgogICAgICAgICBpZiAoIk1FVEhfTyIgaW4gdGVtcGxhdGVzWydtZXRob2RkZWZfZGVmaW5lJ10gYW5kCi0gICAgICAgICAgICBub3QgZGVmYXVsdF9yZXR1cm5fY29udmVydGVyKToKKyAgICAgICAgICAgICd7aW1wbF9wYXJhbWV0ZXJzfScgaW4gdGVtcGxhdGVzWydwYXJzZXJfcHJvdG90eXBlJ10pOgogICAgICAgICAgICAgZGF0YS5kZWNsYXJhdGlvbnMucG9wKDApCiAKICAgICAgICAgdGVtcGxhdGVfZGljdCA9IHt9CkBAIC0xMDc4LDcgKzExNTcsOCBAQAogICAgICAgICBpZiBoYXNfb3B0aW9uX2dyb3VwczoKICAgICAgICAgICAgIHNlbGYucmVuZGVyX29wdGlvbl9ncm91cF9wYXJzaW5nKGYsIHRlbXBsYXRlX2RpY3QpCiAKLSAgICAgICAgZm9yIG5hbWUsIGRlc3RpbmF0aW9uIGluIGNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnMuaXRlbXMoKToKKyAgICAgICAgIyBidWZmZXJzLCBub3QgZGVzdGluYXRpb24KKyAgICAgICAgZm9yIG5hbWUsIGRlc3RpbmF0aW9uIGluIGNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlc1tuYW1lXQogICAgICAgICAgICAgaWYgaGFzX29wdGlvbl9ncm91cHM6CiAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSBsaW5lYXJfZm9ybWF0KHRlbXBsYXRlLApAQCAtMTEwMCw2ICsxMTgwLDExIEBACiAKICAgICAgICAgICAgIHMgPSB0ZW1wbGF0ZS5mb3JtYXRfbWFwKHRlbXBsYXRlX2RpY3QpCiAKKyAgICAgICAgICAgICMgbWlsZCBoYWNrOgorICAgICAgICAgICAgIyByZWZsb3cgbG9uZyBpbXBsIGRlY2xhcmF0aW9ucworICAgICAgICAgICAgaWYgbmFtZSBpbiB7ImltcGxfcHJvdG90eXBlIiwgImltcGxfZGVmaW5pdGlvbiJ9OgorICAgICAgICAgICAgICAgIHMgPSB3cmFwX2RlY2xhcmF0aW9ucyhzKQorCiAgICAgICAgICAgICBpZiBjbGluaWMubGluZV9wcmVmaXg6CiAgICAgICAgICAgICAgICAgcyA9IGluZGVudF9hbGxfbGluZXMocywgY2xpbmljLmxpbmVfcHJlZml4KQogICAgICAgICAgICAgaWYgY2xpbmljLmxpbmVfc3VmZml4OgpAQCAtMTI1MiwxMCArMTMzNywxMSBAQAogICAgICAgICBtYXRjaCA9IHNlbGYuc3RhcnRfcmUubWF0Y2gobGluZS5sc3RyaXAoKSkKICAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKDEpIGlmIG1hdGNoIGVsc2UgTm9uZQogCi0gICAgZGVmIF9saW5lKHNlbGYpOgorICAgIGRlZiBfbGluZShzZWxmLCBsb29rYWhlYWQ9RmFsc2UpOgogICAgICAgICBzZWxmLmxpbmVfbnVtYmVyICs9IDEKICAgICAgICAgbGluZSA9IHNlbGYuaW5wdXQucG9wKCkKLSAgICAgICAgc2VsZi5sYW5ndWFnZS5wYXJzZV9saW5lKGxpbmUpCisgICAgICAgIGlmIG5vdCBsb29rYWhlYWQ6CisgICAgICAgICAgICBzZWxmLmxhbmd1YWdlLnBhcnNlX2xpbmUobGluZSkKICAgICAgICAgcmV0dXJuIGxpbmUKIAogICAgIGRlZiBwYXJzZV92ZXJiYXRpbV9ibG9jayhzZWxmKToKQEAgLTEzMTEsNyArMTM5Nyw3IEBACiAgICAgICAgIG91dHB1dF9hZGQsIG91dHB1dF9vdXRwdXQgPSB0ZXh0X2FjY3VtdWxhdG9yKCkKICAgICAgICAgYXJndW1lbnRzID0gTm9uZQogICAgICAgICB3aGlsZSBzZWxmLmlucHV0OgotICAgICAgICAgICAgbGluZSA9IHNlbGYuX2xpbmUoKQorICAgICAgICAgICAgbGluZSA9IHNlbGYuX2xpbmUobG9va2FoZWFkPVRydWUpCiAgICAgICAgICAgICBtYXRjaCA9IGNoZWNrc3VtX3JlLm1hdGNoKGxpbmUubHN0cmlwKCkpCiAgICAgICAgICAgICBhcmd1bWVudHMgPSBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAgICAgICAgIGlmIGFyZ3VtZW50czoKQEAgLTE0MDIsMTIgKzE0ODgsNDggQEAKICAgICAgICAgc2VsZi5mLndyaXRlKHRleHQpCiAKIAorY2xhc3MgQnVmZmVyU2VyaWVzOgorICAgICIiIgorICAgIEJlaGF2ZXMgbGlrZSBhICJkZWZhdWx0bGlzdCIuCisgICAgV2hlbiB5b3UgYXNrIGZvciBhbiBpbmRleCB0aGF0IGRvZXNuJ3QgZXhpc3QgeWV0LAorICAgIHRoZSBvYmplY3QgZ3Jvd3MgdGhlIGxpc3QgdW50aWwgdGhhdCBpdGVtIGV4aXN0cy4KKyAgICBTbyBvW25dIHdpbGwgYWx3YXlzIHdvcmsuCisKKyAgICBTdXBwb3J0cyBuZWdhdGl2ZSBpbmRpY2VzIGZvciBhY3R1YWwgaXRlbXMuCisgICAgZS5nLiBvWy0xXSBpcyBhbiBlbGVtZW50IGltbWVkaWF0ZWx5IHByZWNlZGluZyBvWzBdLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9zdGFydCA9IDAKKyAgICAgICAgc2VsZi5fYXJyYXkgPSBbXQorICAgICAgICBzZWxmLl9jb25zdHJ1Y3RvciA9IF90ZXh0X2FjY3VtdWxhdG9yCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIGkgLT0gc2VsZi5fc3RhcnQKKyAgICAgICAgaWYgaSA8IDA6CisgICAgICAgICAgICBzZWxmLl9zdGFydCArPSBpCisgICAgICAgICAgICBwcmVmaXggPSBbc2VsZi5fY29uc3RydWN0b3IoKSBmb3IgeCBpbiByYW5nZSgtaSldCisgICAgICAgICAgICBzZWxmLl9hcnJheSA9IHByZWZpeCArIHNlbGYuX2FycmF5CisgICAgICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSBpID49IGxlbihzZWxmLl9hcnJheSk6CisgICAgICAgICAgICBzZWxmLl9hcnJheS5hcHBlbmQoc2VsZi5fY29uc3RydWN0b3IoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FycmF5W2ldCisKKyAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgIGZvciB0YSBpbiBzZWxmLl9hcnJheToKKyAgICAgICAgICAgIHRhLl90ZXh0LmNsZWFyKCkKKworICAgIGRlZiBkdW1wKHNlbGYpOgorICAgICAgICB0ZXh0cyA9IFt0YS5vdXRwdXQoKSBmb3IgdGEgaW4gc2VsZi5fYXJyYXldCisgICAgICAgIHJldHVybiAiIi5qb2luKHRleHRzKQorCisKIGNsYXNzIERlc3RpbmF0aW9uOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB0eXBlLCBjbGluaWMsICphcmdzKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCiAgICAgICAgIHNlbGYuY2xpbmljID0gY2xpbmljCi0gICAgICAgIHZhbGlkX3R5cGVzID0gKCdidWZmZXInLCAnZmlsZScsICdzdXBwcmVzcycsICd0d28tcGFzcycpCisgICAgICAgIHZhbGlkX3R5cGVzID0gKCdidWZmZXInLCAnZmlsZScsICdzdXBwcmVzcycpCiAgICAgICAgIGlmIHR5cGUgbm90IGluIHZhbGlkX3R5cGVzOgogICAgICAgICAgICAgZmFpbCgiSW52YWxpZCBkZXN0aW5hdGlvbiB0eXBlICIgKyByZXByKHR5cGUpICsgIiBmb3IgIiArIG5hbWUgKyAiICwgbXVzdCBiZSAiICsgJywgJy5qb2luKHZhbGlkX3R5cGVzKSkKICAgICAgICAgZXh0cmFfYXJndW1lbnRzID0gMSBpZiB0eXBlID09ICJmaWxlIiBlbHNlIDAKQEAgLTE0MjYsMTAgKzE1NDgsOCBAQAogICAgICAgICAgICAgZFsnYmFzZW5hbWUnXSA9IGJhc2VuYW1lCiAgICAgICAgICAgICBkWydiYXNlbmFtZV9yb290J10sIGRbJ2Jhc2VuYW1lX2V4dGVuc2lvbiddID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBhcmdzWzBdLmZvcm1hdF9tYXAoZCkKLSAgICAgICAgaWYgdHlwZSA9PSAndHdvLXBhc3MnOgotICAgICAgICAgICAgc2VsZi5pZCA9IE5vbmUKIAotICAgICAgICBzZWxmLnRleHQsIHNlbGYuYXBwZW5kLCBzZWxmLl9kdW1wID0gX3RleHRfYWNjdW11bGF0b3IoKQorICAgICAgICBzZWxmLmJ1ZmZlcnMgPSBCdWZmZXJTZXJpZXMoKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnR5cGUgPT0gJ2ZpbGUnOgpAQCAtMTQ0MSwxNSArMTU2MSwxMCBAQAogICAgIGRlZiBjbGVhcihzZWxmKToKICAgICAgICAgaWYgc2VsZi50eXBlICE9ICdidWZmZXInOgogICAgICAgICAgICAgZmFpbCgiQ2FuJ3QgY2xlYXIgZGVzdGluYXRpb24iICsgc2VsZi5uYW1lICsgIiAsIGl0J3Mgbm90IG9mIHR5cGUgYnVmZmVyIikKLSAgICAgICAgc2VsZi50ZXh0LmNsZWFyKCkKKyAgICAgICAgc2VsZi5idWZmZXJzLmNsZWFyKCkKIAogICAgIGRlZiBkdW1wKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnR5cGUgPT0gJ3R3by1wYXNzJzoKLSAgICAgICAgICAgIGlmIHNlbGYuaWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmlkID0gc3RyKHV1aWQudXVpZDQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pZAotICAgICAgICAgICAgZmFpbCgiWW91IGNhbiBvbmx5IGR1bXAgYSB0d28tcGFzcyBidWZmZXIgZXhhY3RseSBvbmNlISIpCi0gICAgICAgIHJldHVybiBzZWxmLl9kdW1wKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuYnVmZmVycy5kdW1wKCkKIAogCiAjIG1hcHMgc3RyaW5ncyB0byBMYW5ndWFnZSBvYmplY3RzLgpAQCAtMTQ4OCw0OSArMTYwMyw0NCBAQAogICAgIHByZXNldHNfdGV4dCA9ICIiIgogcHJlc2V0IGJsb2NrCiBldmVyeXRoaW5nIGJsb2NrCittZXRob2RkZWZfaWZuZGVmIGJ1ZmZlciAxCiBkb2NzdHJpbmdfcHJvdG90eXBlIHN1cHByZXNzCiBwYXJzZXJfcHJvdG90eXBlIHN1cHByZXNzCiBjcHBfaWYgc3VwcHJlc3MKIGNwcF9lbmRpZiBzdXBwcmVzcwotbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIKIAogcHJlc2V0IG9yaWdpbmFsCiBldmVyeXRoaW5nIGJsb2NrCittZXRob2RkZWZfaWZuZGVmIGJ1ZmZlciAxCiBkb2NzdHJpbmdfcHJvdG90eXBlIHN1cHByZXNzCiBwYXJzZXJfcHJvdG90eXBlIHN1cHByZXNzCiBjcHBfaWYgc3VwcHJlc3MKIGNwcF9lbmRpZiBzdXBwcmVzcwotbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIKIAogcHJlc2V0IGZpbGUKIGV2ZXJ5dGhpbmcgZmlsZQorbWV0aG9kZGVmX2lmbmRlZiBmaWxlIDEKIGRvY3N0cmluZ19wcm90b3R5cGUgc3VwcHJlc3MKIHBhcnNlcl9wcm90b3R5cGUgc3VwcHJlc3MKIGltcGxfZGVmaW5pdGlvbiBibG9jawogCiBwcmVzZXQgYnVmZmVyCiBldmVyeXRoaW5nIGJ1ZmZlcgorbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIgMQoraW1wbF9kZWZpbml0aW9uIGJsb2NrCiBkb2NzdHJpbmdfcHJvdG90eXBlIHN1cHByZXNzCiBpbXBsX3Byb3RvdHlwZSBzdXBwcmVzcwogcGFyc2VyX3Byb3RvdHlwZSBzdXBwcmVzcwotaW1wbF9kZWZpbml0aW9uIGJsb2NrCiAKIHByZXNldCBwYXJ0aWFsLWJ1ZmZlcgogZXZlcnl0aGluZyBidWZmZXIKK21ldGhvZGRlZl9pZm5kZWYgYnVmZmVyIDEKIGRvY3N0cmluZ19wcm90b3R5cGUgYmxvY2sKIGltcGxfcHJvdG90eXBlIHN1cHByZXNzCiBtZXRob2RkZWZfZGVmaW5lIGJsb2NrCiBwYXJzZXJfcHJvdG90eXBlIGJsb2NrCiBpbXBsX2RlZmluaXRpb24gYmxvY2sKIAotcHJlc2V0IHR3by1wYXNzCi1ldmVyeXRoaW5nIGJ1ZmZlcgotZG9jc3RyaW5nX3Byb3RvdHlwZSB0d28tcGFzcwotaW1wbF9wcm90b3R5cGUgc3VwcHJlc3MKLW1ldGhvZGRlZl9kZWZpbmUgdHdvLXBhc3MKLXBhcnNlcl9wcm90b3R5cGUgdHdvLXBhc3MKLWltcGxfZGVmaW5pdGlvbiBibG9jawotCiAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsYW5ndWFnZSwgcHJpbnRlcj1Ob25lLCAqLCBmb3JjZT1GYWxzZSwgdmVyaWZ5PVRydWUsIGZpbGVuYW1lPU5vbmUpOgpAQCAtMTU1NCwyNSArMTY2NCwyNSBAQAogICAgICAgICBzZWxmLmFkZF9kZXN0aW5hdGlvbigiYmxvY2siLCAiYnVmZmVyIikKICAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oInN1cHByZXNzIiwgInN1cHByZXNzIikKICAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oImJ1ZmZlciIsICJidWZmZXIiKQotICAgICAgICBzZWxmLmFkZF9kZXN0aW5hdGlvbigidHdvLXBhc3MiLCAidHdvLXBhc3MiKQogICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJmaWxlIiwgImZpbGUiLCAie2Rpcm5hbWV9L2NsaW5pYy97YmFzZW5hbWV9LmgiKQogCi0gICAgICAgIGQgPSBzZWxmLmRlc3RpbmF0aW9ucy5nZXQKLSAgICAgICAgc2VsZi5maWVsZF9kZXN0aW5hdGlvbnMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgoCi0gICAgICAgICAgICAoJ2NwcF9pZicsIGQoJ3N1cHByZXNzJykpLAorICAgICAgICBkID0gc2VsZi5nZXRfZGVzdGluYXRpb25fYnVmZmVyCisgICAgICAgIHNlbGYuZGVzdGluYXRpb25fYnVmZmVycyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCgKKyAgICAgICAgICAgICgnY3BwX2lmJywgZCgnZmlsZScpKSwKICAgICAgICAgICAgICgnZG9jc3RyaW5nX3Byb3RvdHlwZScsIGQoJ3N1cHByZXNzJykpLAotICAgICAgICAgICAgKCdkb2NzdHJpbmdfZGVmaW5pdGlvbicsIGQoJ2Jsb2NrJykpLAotICAgICAgICAgICAgKCdtZXRob2RkZWZfZGVmaW5lJywgZCgnYmxvY2snKSksCi0gICAgICAgICAgICAoJ2ltcGxfcHJvdG90eXBlJywgZCgnYmxvY2snKSksCisgICAgICAgICAgICAoJ2RvY3N0cmluZ19kZWZpbml0aW9uJywgZCgnZmlsZScpKSwKKyAgICAgICAgICAgICgnbWV0aG9kZGVmX2RlZmluZScsIGQoJ2ZpbGUnKSksCisgICAgICAgICAgICAoJ2ltcGxfcHJvdG90eXBlJywgZCgnZmlsZScpKSwKICAgICAgICAgICAgICgncGFyc2VyX3Byb3RvdHlwZScsIGQoJ3N1cHByZXNzJykpLAotICAgICAgICAgICAgKCdwYXJzZXJfZGVmaW5pdGlvbicsIGQoJ2Jsb2NrJykpLAotICAgICAgICAgICAgKCdjcHBfZW5kaWYnLCBkKCdzdXBwcmVzcycpKSwKLSAgICAgICAgICAgICgnbWV0aG9kZGVmX2lmbmRlZicsIGQoJ2J1ZmZlcicpKSwKKyAgICAgICAgICAgICgncGFyc2VyX2RlZmluaXRpb24nLCBkKCdmaWxlJykpLAorICAgICAgICAgICAgKCdjcHBfZW5kaWYnLCBkKCdmaWxlJykpLAorICAgICAgICAgICAgKCdtZXRob2RkZWZfaWZuZGVmJywgZCgnZmlsZScsIDEpKSwKICAgICAgICAgICAgICgnaW1wbF9kZWZpbml0aW9uJywgZCgnYmxvY2snKSksCiAgICAgICAgICkpCiAKLSAgICAgICAgc2VsZi5maWVsZF9kZXN0aW5hdGlvbnNfc3RhY2sgPSBbXQorICAgICAgICBzZWxmLmRlc3RpbmF0aW9uX2J1ZmZlcnNfc3RhY2sgPSBbXQorICAgICAgICBzZWxmLmlmbmRlZl9zeW1ib2xzID0gc2V0KCkKIAogICAgICAgICBzZWxmLnByZXNldHMgPSB7fQogICAgICAgICBwcmVzZXQgPSBOb25lCkBAIC0xNTgwLDM3ICsxNjkwLDQzIEBACiAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbmFtZSwgdmFsdWUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgIG5hbWUsIHZhbHVlLCAqb3B0aW9ucyA9IGxpbmUuc3BsaXQoKQogICAgICAgICAgICAgaWYgbmFtZSA9PSAncHJlc2V0JzoKICAgICAgICAgICAgICAgICBzZWxmLnByZXNldHNbdmFsdWVdID0gcHJlc2V0ID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gc2VsZi5nZXRfZGVzdGluYXRpb24odmFsdWUpCisgICAgICAgICAgICBpZiBsZW4ob3B0aW9ucyk6CisgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQob3B0aW9uc1swXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW5kZXggPSAwCisgICAgICAgICAgICBidWZmZXIgPSBzZWxmLmdldF9kZXN0aW5hdGlvbl9idWZmZXIodmFsdWUsIGluZGV4KQogCiAgICAgICAgICAgICBpZiBuYW1lID09ICdldmVyeXRoaW5nJzoKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmZpZWxkX2Rlc3RpbmF0aW9uczoKLSAgICAgICAgICAgICAgICAgICAgcHJlc2V0W25hbWVdID0gZGVzdGluYXRpb24KKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmRlc3RpbmF0aW9uX2J1ZmZlcnM6CisgICAgICAgICAgICAgICAgICAgIHByZXNldFtuYW1lXSA9IGJ1ZmZlcgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIGFzc2VydCBuYW1lIGluIHNlbGYuZmllbGRfZGVzdGluYXRpb25zCi0gICAgICAgICAgICBwcmVzZXRbbmFtZV0gPSBkZXN0aW5hdGlvbgorICAgICAgICAgICAgYXNzZXJ0IG5hbWUgaW4gc2VsZi5kZXN0aW5hdGlvbl9idWZmZXJzCisgICAgICAgICAgICBwcmVzZXRbbmFtZV0gPSBidWZmZXIKIAogICAgICAgICBnbG9iYWwgY2xpbmljCiAgICAgICAgIGNsaW5pYyA9IHNlbGYKIAotICAgIGRlZiBnZXRfZGVzdGluYXRpb24oc2VsZiwgbmFtZSwgZGVmYXVsdD11bnNwZWNpZmllZCk6Ci0gICAgICAgIGQgPSBzZWxmLmRlc3RpbmF0aW9ucy5nZXQobmFtZSkKLSAgICAgICAgaWYgbm90IGQ6Ci0gICAgICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCB1bnNwZWNpZmllZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAotICAgICAgICAgICAgZmFpbCgiRGVzdGluYXRpb24gZG9lcyBub3QgZXhpc3Q6ICIgKyByZXByKG5hbWUpKQotICAgICAgICByZXR1cm4gZAotCiAgICAgZGVmIGFkZF9kZXN0aW5hdGlvbihzZWxmLCBuYW1lLCB0eXBlLCAqYXJncyk6CiAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5kZXN0aW5hdGlvbnM6CiAgICAgICAgICAgICBmYWlsKCJEZXN0aW5hdGlvbiBhbHJlYWR5IGV4aXN0czogIiArIHJlcHIobmFtZSkpCiAgICAgICAgIHNlbGYuZGVzdGluYXRpb25zW25hbWVdID0gRGVzdGluYXRpb24obmFtZSwgdHlwZSwgc2VsZiwgKmFyZ3MpCiAKKyAgICBkZWYgZ2V0X2Rlc3RpbmF0aW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBkID0gc2VsZi5kZXN0aW5hdGlvbnMuZ2V0KG5hbWUpCisgICAgICAgIGlmIG5vdCBkOgorICAgICAgICAgICAgZmFpbCgiRGVzdGluYXRpb24gZG9lcyBub3QgZXhpc3Q6ICIgKyByZXByKG5hbWUpKQorICAgICAgICByZXR1cm4gZAorCisgICAgZGVmIGdldF9kZXN0aW5hdGlvbl9idWZmZXIoc2VsZiwgbmFtZSwgaXRlbT0wKToKKyAgICAgICAgZCA9IHNlbGYuZ2V0X2Rlc3RpbmF0aW9uKG5hbWUpCisgICAgICAgIHJldHVybiBkLmJ1ZmZlcnNbaXRlbV0KKwogICAgIGRlZiBwYXJzZShzZWxmLCBpbnB1dCk6CiAgICAgICAgIHByaW50ZXIgPSBzZWxmLnByaW50ZXIKICAgICAgICAgc2VsZi5ibG9ja19wYXJzZXIgPSBCbG9ja1BhcnNlcihpbnB1dCwgc2VsZi5sYW5ndWFnZSwgdmVyaWZ5PXNlbGYudmVyaWZ5KQpAQCAtMTYzMCwxNyArMTc0NiwxMSBAQAogCiAgICAgICAgIHNlY29uZF9wYXNzX3JlcGxhY2VtZW50cyA9IHt9CiAKKyAgICAgICAgIyB0aGVzZSBhcmUgZGVzdGluYXRpb25zIG5vdCBidWZmZXJzCiAgICAgICAgIGZvciBuYW1lLCBkZXN0aW5hdGlvbiBpbiBzZWxmLmRlc3RpbmF0aW9ucy5pdGVtcygpOgogICAgICAgICAgICAgaWYgZGVzdGluYXRpb24udHlwZSA9PSAnc3VwcHJlc3MnOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBvdXRwdXQgPSBkZXN0aW5hdGlvbi5fZHVtcCgpCi0KLSAgICAgICAgICAgIGlmIGRlc3RpbmF0aW9uLnR5cGUgPT0gJ3R3by1wYXNzJzoKLSAgICAgICAgICAgICAgICBpZiBkZXN0aW5hdGlvbi5pZDoKLSAgICAgICAgICAgICAgICAgICAgc2Vjb25kX3Bhc3NfcmVwbGFjZW1lbnRzW2Rlc3RpbmF0aW9uLmlkXSA9IG91dHB1dAotICAgICAgICAgICAgICAgIGVsaWYgb3V0cHV0OgotICAgICAgICAgICAgICAgICAgICBmYWlsKCJUd28tcGFzcyBidWZmZXIgIiArIHJlcHIobmFtZSkgKyAiIG5vdCBlbXB0eSBhdCBlbmQgb2YgZmlsZSEiKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBvdXRwdXQgPSBkZXN0aW5hdGlvbi5kdW1wKCkKIAogICAgICAgICAgICAgaWYgb3V0cHV0OgogCkBAIC0xODMyLDYgKzE5NDIsNyBAQAogX19pYW5kX18KIF9faWZsb29yZGl2X18KIF9faWxzaGlmdF9fCitfX2ltYXRtdWxfXwogX19pbW9kX18KIF9faW11bF9fCiBfX2luZGV4X18KQEAgLTE4NDgsNiArMTk1OSw3IEBACiBfX2xlbl9fCiBfX2xzaGlmdF9fCiBfX2x0X18KK19fbWF0bXVsX18KIF9fbW9kX18KIF9fbXVsX18KIF9fbmVnX18KQEAgLTE4NjIsNiArMTk3NCw3IEBACiBfX3JlcHJfXwogX19yZmxvb3JkaXZfXwogX19ybHNoaWZ0X18KK19fcm1hdG11bF9fCiBfX3Jtb2RfXwogX19ybXVsX18KIF9fcm9yX18KQEAgLTIzNzksMTIgKzI0OTIsMTIgQEAKIAogY2xhc3MgY2hhcl9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdjaGFyJwotICAgIGRlZmF1bHRfdHlwZSA9IHN0cgorICAgIGRlZmF1bHRfdHlwZSA9IChieXRlcywgYnl0ZWFycmF5KQogICAgIGZvcm1hdF91bml0ID0gJ2MnCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiJ1wwJyIKIAogICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmRlZmF1bHQsIHN0cikgYW5kIChsZW4oc2VsZi5kZWZhdWx0KSAhPSAxKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmRlZmF1bHQsIHNlbGYuZGVmYXVsdF90eXBlKSBhbmQgKGxlbihzZWxmLmRlZmF1bHQpICE9IDEpOgogICAgICAgICAgICAgZmFpbCgiY2hhcl9jb252ZXJ0ZXI6IGlsbGVnYWwgZGVmYXVsdCB2YWx1ZSAiICsgcmVwcihzZWxmLmRlZmF1bHQpKQogCiAKQEAgLTI0MTcsMTggKzI1MzAsMjAgQEAKICAgICAgICAgaWYgbm90IGJpdHdpc2U6CiAgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBzaG9ydHMgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQogCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignQycsIHR5cGVzPSdzdHInKQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ0MnLCBhY2NlcHQ9e3N0cn0pCiBjbGFzcyBpbnRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnaW50JwogICAgIGRlZmF1bHRfdHlwZSA9IGludAogICAgIGZvcm1hdF91bml0ID0gJ2knCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiMCIKIAotICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCB0eXBlcz0naW50Jyk6Ci0gICAgICAgIGlmIHR5cGVzID09ICdzdHInOgorICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBhY2NlcHQ9e2ludH0sIHR5cGU9Tm9uZSk6CisgICAgICAgIGlmIGFjY2VwdCA9PSB7c3RyfToKICAgICAgICAgICAgIHNlbGYuZm9ybWF0X3VuaXQgPSAnQycKLSAgICAgICAgZWxpZiB0eXBlcyAhPSAnaW50JzoKLSAgICAgICAgICAgIGZhaWwoImludF9jb252ZXJ0ZXI6IGlsbGVnYWwgJ3R5cGVzJyBhcmd1bWVudCIpCisgICAgICAgIGVsaWYgYWNjZXB0ICE9IHtpbnR9OgorICAgICAgICAgICAgZmFpbCgiaW50X2NvbnZlcnRlcjogaWxsZWdhbCAnYWNjZXB0JyBhcmd1bWVudCAiICsgcmVwcihhY2NlcHQpKQorICAgICAgICBpZiB0eXBlICE9IE5vbmU6CisgICAgICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCiAKIGNsYXNzIHVuc2lnbmVkX2ludF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICd1bnNpZ25lZCBpbnQnCkBAIC0yNTE3LDEzNyArMjYzMiwxNTMgQEAKICAgICAgICAgICAgIHNlbGYudHlwZSA9IHR5cGUKIAogCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigncyMnLCBsZW5ndGg9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd5JywgdHlwZXM9ImJ5dGVzIikKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd5IycsIHR5cGVzPSJieXRlcyIsIGxlbmd0aD1UcnVlKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3onLCBudWxsYWJsZT1UcnVlKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3ojJywgbnVsbGFibGU9VHJ1ZSwgbGVuZ3RoPVRydWUpCisjCisjIFdlIGRlZmluZSB0aHJlZSBjb252ZW50aW9ucyBmb3IgYnVmZmVyIHR5cGVzIGluIHRoZSAnYWNjZXB0JyBhcmd1bWVudDoKKyMKKyMgIGJ1ZmZlciAgOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UKKyMgIHJ3YnVmZmVyOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIGJ1dCBtdXN0IGJlIHdyaXRlYWJsZQorIyAgcm9idWZmZXI6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZSwgYnV0IG11c3Qgbm90IGJlIHdyaXRlYWJsZQorIworCitjbGFzcyBidWZmZXI6IHBhc3MKK2NsYXNzIHJ3YnVmZmVyOiBwYXNzCitjbGFzcyByb2J1ZmZlcjogcGFzcworCitkZWYgc3RyX2NvbnZlcnRlcl9rZXkodHlwZXMsIGVuY29kaW5nLCB6ZXJvZXMpOgorICAgIHJldHVybiAoZnJvemVuc2V0KHR5cGVzKSwgYm9vbChlbmNvZGluZyksIGJvb2woemVyb2VzKSkKKworc3RyX2NvbnZlcnRlcl9hcmd1bWVudF9tYXAgPSB7fQorCiBjbGFzcyBzdHJfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnY29uc3QgY2hhciAqJwogICAgIGRlZmF1bHRfdHlwZSA9IChzdHIsIE51bGwsIE5vbmVUeXBlKQogICAgIGZvcm1hdF91bml0ID0gJ3MnCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgZW5jb2Rpbmc9Tm9uZSwgdHlwZXM9InN0ciIsCi0gICAgICAgIGxlbmd0aD1GYWxzZSwgbnVsbGFibGU9RmFsc2UsIHplcm9lcz1GYWxzZSk6CisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGFjY2VwdD17c3RyfSwgZW5jb2Rpbmc9Tm9uZSwgemVyb2VzPUZhbHNlKToKIAotICAgICAgICB0eXBlcyA9IHNldCh0eXBlcy5zdHJpcCgpLnNwbGl0KCkpCi0gICAgICAgIGJ5dGVzX3R5cGUgPSBzZXQoKCJieXRlcyIsKSkKLSAgICAgICAgc3RyX3R5cGUgPSBzZXQoKCJzdHIiLCkpCi0gICAgICAgIGFsbF8zX3R5cGUgPSBzZXQoKCJieXRlYXJyYXkiLCkpIHwgYnl0ZXNfdHlwZSB8IHN0cl90eXBlCi0gICAgICAgIGlzX2J5dGVzID0gdHlwZXMgPT0gYnl0ZXNfdHlwZQotICAgICAgICBpc19zdHIgPSB0eXBlcyA9PSBzdHJfdHlwZQotICAgICAgICBpc19hbGxfMyA9IHR5cGVzID09IGFsbF8zX3R5cGUKLQotICAgICAgICBzZWxmLmxlbmd0aCA9IGJvb2wobGVuZ3RoKQotICAgICAgICBmb3JtYXRfdW5pdCA9IE5vbmUKLQotICAgICAgICBpZiBlbmNvZGluZzoKLSAgICAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZwotCi0gICAgICAgICAgICBpZiBpc19zdHIgYW5kIG5vdCAobGVuZ3RoIG9yIHplcm9lcyBvciBudWxsYWJsZSk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAnZXMnCi0gICAgICAgICAgICBlbGlmIGlzX2FsbF8zIGFuZCBub3QgKGxlbmd0aCBvciB6ZXJvZXMgb3IgbnVsbGFibGUpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2V0JwotICAgICAgICAgICAgZWxpZiBpc19zdHIgYW5kIGxlbmd0aCBhbmQgemVyb2VzIGFuZCBub3QgbnVsbGFibGU6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAnZXMjJwotICAgICAgICAgICAgZWxpZiBpc19hbGxfMyBhbmQgbGVuZ3RoIGFuZCBub3QgKG51bGxhYmxlIG9yIHplcm9lcyk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAnZXQjJwotCi0gICAgICAgICAgICBpZiBmb3JtYXRfdW5pdC5lbmRzd2l0aCgnIycpOgotICAgICAgICAgICAgICAgIGZhaWwoIlNvcnJ5OiBjb2RlIHVzaW5nIGZvcm1hdCB1bml0ICIsIHJlcHIoZm9ybWF0X3VuaXQpLCAicHJvYmFibHkgZG9lc24ndCB3b3JrIHByb3Blcmx5IHlldC5cbkdpdmUgTGFycnkgeW91ciB0ZXN0IGNhc2UgYW5kIGhlJ2xsIGl0LiIpCi0gICAgICAgICAgICAgICAgIyBUT0RPIHNldCBwb2ludGVyIHRvIE5VTEwKLSAgICAgICAgICAgICAgICAjIFRPRE8gYWRkIGNsZWFudXAgZm9yIGJ1ZmZlcgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgemVyb2VzOgotICAgICAgICAgICAgICAgIGZhaWwoInN0cl9jb252ZXJ0ZXI6IGlsbGVnYWwgY29tYmluYXRpb24gb2YgYXJndW1lbnRzICh6ZXJvZXMgaXMgb25seSBsZWdhbCB3aXRoIGFuIGVuY29kaW5nKSIpCi0KLSAgICAgICAgICAgIGlmIGlzX2J5dGVzIGFuZCBub3QgKG51bGxhYmxlIG9yIGxlbmd0aCk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneScKLSAgICAgICAgICAgIGVsaWYgaXNfYnl0ZXMgYW5kIGxlbmd0aCBhbmQgbm90IG51bGxhYmxlOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3kjJwotICAgICAgICAgICAgZWxpZiBpc19zdHIgYW5kIG5vdCAobnVsbGFibGUgb3IgbGVuZ3RoKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdzJwotICAgICAgICAgICAgZWxpZiBpc19zdHIgYW5kIGxlbmd0aCBhbmQgbm90IG51bGxhYmxlOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3MjJwotICAgICAgICAgICAgZWxpZiBpc19zdHIgYW5kIG51bGxhYmxlICBhbmQgbm90IGxlbmd0aDoKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd6JwotICAgICAgICAgICAgZWxpZiBpc19zdHIgYW5kIG51bGxhYmxlIGFuZCBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneiMnCi0KKyAgICAgICAga2V5ID0gc3RyX2NvbnZlcnRlcl9rZXkoYWNjZXB0LCBlbmNvZGluZywgemVyb2VzKQorICAgICAgICBmb3JtYXRfdW5pdCA9IHN0cl9jb252ZXJ0ZXJfYXJndW1lbnRfbWFwLmdldChrZXkpCiAgICAgICAgIGlmIG5vdCBmb3JtYXRfdW5pdDoKLSAgICAgICAgICAgIGZhaWwoInN0cl9jb252ZXJ0ZXI6IGlsbGVnYWwgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIikKKyAgICAgICAgICAgIGZhaWwoInN0cl9jb252ZXJ0ZXI6IGlsbGVnYWwgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIiwga2V5KQorCiAgICAgICAgIHNlbGYuZm9ybWF0X3VuaXQgPSBmb3JtYXRfdW5pdAorICAgICAgICBzZWxmLmxlbmd0aCA9IGJvb2woemVyb2VzKQorICAgICAgICBpZiBlbmNvZGluZzoKKyAgICAgICAgICAgIGlmIHNlbGYuZGVmYXVsdCBub3QgaW4gKE51bGwsIE5vbmUsIHVuc3BlY2lmaWVkKToKKyAgICAgICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBBcmd1bWVudCBDbGluaWMgZG9lc24ndCBzdXBwb3J0IGRlZmF1bHQgdmFsdWVzIGZvciBlbmNvZGVkIHN0cmluZ3MiKQorICAgICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgICAgICAgICBzZWxmLnR5cGUgPSAnY2hhciAqJworICAgICAgICAgICAgIyBzb3JyeSwgY2xpbmljIGNhbid0IHN1cHBvcnQgcHJlYWxsb2NhdGVkIGJ1ZmZlcnMKKyAgICAgICAgICAgICMgZm9yIGVzIyBhbmQgZXQjCisgICAgICAgICAgICBzZWxmLmNfZGVmYXVsdCA9ICJOVUxMIgorCisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZW5jb2Rpbmc6CisgICAgICAgICAgICBuYW1lID0gZW5zdXJlX2xlZ2FsX2NfaWRlbnRpZmllcihzZWxmLm5hbWUpCisgICAgICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiKVxuICAgUHlNZW1fRlJFRSgiLCBuYW1lLCAiKTtcbiJdKQorCisjCisjIFRoaXMgaXMgdGhlIGZvdXJ0aCBvciBmaWZ0aCByZXdyaXRlIG9mIHJlZ2lzdGVyaW5nIGFsbCB0aGUKKyMgY3Jhenkgc3RyaW5nIGNvbnZlcnRlciBmb3JtYXQgdW5pdHMuICBQcmV2aW91cyBhcHByb2FjaGVzIGhpZAorIyBidWdzLS1nZW5lcmFsbHkgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIGZvcm1hdAorIyB1bml0IGFuZCB0aGUgYXJndW1lbnRzIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhvc2Ugc2VtYW50aWNzCisjIHByb3Blcmx5LiAgSG9wZWZ1bGx5IHdpdGggdGhpcyBhcHByb2FjaCB3ZSdsbCBnZXQgaXQgMTAwJSByaWdodC4KKyMKKyMgVGhlIHIoKSBmdW5jdGlvbiAoc2hvcnQgZm9yICJyZWdpc3RlciIpIGJvdGggcmVnaXN0ZXJzIHRoZQorIyBtYXBwaW5nIGZyb20gYXJndW1lbnRzIHRvIGZvcm1hdCB1bml0ICphbmQqIHJlZ2lzdGVycyB0aGUKKyMgbGVnYWN5IEMgY29udmVydGVyIGZvciB0aGF0IGZvcm1hdCB1bml0LgorIworZGVmIHIoZm9ybWF0X3VuaXQsICosIGFjY2VwdCwgZW5jb2Rpbmc9RmFsc2UsIHplcm9lcz1GYWxzZSk6CisgICAgaWYgbm90IGVuY29kaW5nIGFuZCBmb3JtYXRfdW5pdCAhPSAncyc6CisgICAgICAgICMgYWRkIHRoZSBsZWdhY3kgYyBjb252ZXJ0ZXJzIGhlcmUgdG9vLgorICAgICAgICAjCisgICAgICAgICMgbm90ZTogYWRkX2xlZ2FjeV9jX2NvbnZlcnRlciBjYW4ndCB3b3JrIGZvcgorICAgICAgICAjICAgZXMsIGVzIywgZXQsIG9yIGV0IworICAgICAgICAjICAgYmVjYXVzZSBvZiB0aGVpciBleHRyYSBlbmNvZGluZyBhcmd1bWVudAorICAgICAgICAjCisgICAgICAgICMgYWxzbyBkb24ndCBhZGQgdGhlIGNvbnZlcnRlciBmb3IgJ3MnIGJlY2F1c2UKKyAgICAgICAgIyB0aGUgbWV0YWNsYXNzIGZvciBDQ29udmVydGVyIGFkZHMgaXQgZm9yIHVzLgorICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBpZiBhY2NlcHQgIT0ge3N0cn06CisgICAgICAgICAgICBrd2FyZ3NbJ2FjY2VwdCddID0gYWNjZXB0CisgICAgICAgIGlmIHplcm9lczoKKyAgICAgICAgICAgIGt3YXJnc1snemVyb2VzJ10gPSBUcnVlCisgICAgICAgIGFkZGVkX2YgPSBmdW5jdG9vbHMucGFydGlhbChzdHJfY29udmVydGVyLCAqKmt3YXJncykKKyAgICAgICAgbGVnYWN5X2NvbnZlcnRlcnNbZm9ybWF0X3VuaXRdID0gYWRkZWRfZgorCisgICAgZCA9IHN0cl9jb252ZXJ0ZXJfYXJndW1lbnRfbWFwCisgICAga2V5ID0gc3RyX2NvbnZlcnRlcl9rZXkoYWNjZXB0LCBlbmNvZGluZywgemVyb2VzKQorICAgIGlmIGtleSBpbiBkOgorICAgICAgICBzeXMuZXhpdCgiRHVwbGljYXRlIGtleXMgc3BlY2lmaWVkIGZvciBzdHJfY29udmVydGVyX2FyZ3VtZW50X21hcCEiKQorICAgIGRba2V5XSA9IGZvcm1hdF91bml0CisKK3IoJ2VzJywgIGVuY29kaW5nPVRydWUsICAgICAgICAgICAgICBhY2NlcHQ9e3N0cn0pCityKCdlcyMnLCBlbmNvZGluZz1UcnVlLCB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtzdHJ9KQorcignZXQnLCAgZW5jb2Rpbmc9VHJ1ZSwgICAgICAgICAgICAgIGFjY2VwdD17Ynl0ZXMsIGJ5dGVhcnJheSwgc3RyfSkKK3IoJ2V0IycsIGVuY29kaW5nPVRydWUsIHplcm9lcz1UcnVlLCBhY2NlcHQ9e2J5dGVzLCBieXRlYXJyYXksIHN0cn0pCityKCdzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtzdHJ9KQorcigncyMnLCAgICAgICAgICAgICAgICAgemVyb2VzPVRydWUsIGFjY2VwdD17cm9idWZmZXIsIHN0cn0pCityKCd5JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtyb2J1ZmZlcn0pCityKCd5IycsICAgICAgICAgICAgICAgICB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtyb2J1ZmZlcn0pCityKCd6JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKK3IoJ3ojJywgICAgICAgICAgICAgICAgIHplcm9lcz1UcnVlLCBhY2NlcHQ9e3JvYnVmZmVyLCBzdHIsIE5vbmVUeXBlfSkKK2RlbCByCiAKIAogY2xhc3MgUHlCeXRlc09iamVjdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeUJ5dGVzT2JqZWN0IConCiAgICAgZm9ybWF0X3VuaXQgPSAnUycKKyAgICAjIGFjY2VwdCA9IHtieXRlc30KIAogY2xhc3MgUHlCeXRlQXJyYXlPYmplY3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlCeXRlQXJyYXlPYmplY3QgKicKICAgICBmb3JtYXRfdW5pdCA9ICdZJworICAgICMgYWNjZXB0ID0ge2J5dGVhcnJheX0KIAogY2xhc3MgdW5pY29kZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeU9iamVjdCAqJwogICAgIGRlZmF1bHRfdHlwZSA9IChzdHIsIE51bGwsIE5vbmVUeXBlKQogICAgIGZvcm1hdF91bml0ID0gJ1UnCiAKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd1IycsIGxlbmd0aD1UcnVlKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ1onLCBudWxsYWJsZT1UcnVlKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ1ojJywgbnVsbGFibGU9VHJ1ZSwgbGVuZ3RoPVRydWUpCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigndSMnLCB6ZXJvZXM9VHJ1ZSkKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCdaJywgYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCdaIycsIGFjY2VwdD17c3RyLCBOb25lVHlwZX0sIHplcm9lcz1UcnVlKQogY2xhc3MgUHlfVU5JQ09ERV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9VTklDT0RFIConCiAgICAgZGVmYXVsdF90eXBlID0gKHN0ciwgTnVsbCwgTm9uZVR5cGUpCiAgICAgZm9ybWF0X3VuaXQgPSAndScKIAotICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBudWxsYWJsZT1GYWxzZSwgbGVuZ3RoPUZhbHNlKToKLSAgICAgICAgZm9ybWF0X3VuaXQgPSAnWicgaWYgbnVsbGFibGUgZWxzZSAndScKLSAgICAgICAgaWYgbGVuZ3RoOgorICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBhY2NlcHQ9e3N0cn0sIHplcm9lcz1GYWxzZSk6CisgICAgICAgIGZvcm1hdF91bml0ID0gJ1onIGlmIGFjY2VwdD09e3N0ciwgTm9uZVR5cGV9IGVsc2UgJ3UnCisgICAgICAgIGlmIHplcm9lczoKICAgICAgICAgICAgIGZvcm1hdF91bml0ICs9ICcjJwogICAgICAgICAgICAgc2VsZi5sZW5ndGggPSBUcnVlCiAgICAgICAgIHNlbGYuZm9ybWF0X3VuaXQgPSBmb3JtYXRfdW5pdAogCi0jCi0jIFdlIGRlZmluZSB0aHJlZSBzdHJpbmcgY29udmVudGlvbnMgZm9yIGJ1ZmZlciB0eXBlcyBpbiB0aGUgJ3R5cGVzJyBhcmd1bWVudDoKLSMgICdidWZmZXInIDogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlCi0jICAncndidWZmZXInOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIGJ1dCBtdXN0IGJlIHdyaXRlYWJsZQotIyAgJ3JvYnVmZmVyJzogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlLCBidXQgbXVzdCBub3QgYmUgd3JpdGVhYmxlCi0jCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigncyonLCB0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInKQotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3oqJywgdHlwZXM9J3N0ciBieXRlcyBieXRlYXJyYXkgYnVmZmVyJywgbnVsbGFibGU9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd3KicsIHR5cGVzPSdieXRlYXJyYXkgcndidWZmZXInKQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3MqJywgYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneionLCBhY2NlcHQ9e3N0ciwgYnVmZmVyLCBOb25lVHlwZX0pCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigndyonLCBhY2NlcHQ9e3J3YnVmZmVyfSkKIGNsYXNzIFB5X2J1ZmZlcl9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9idWZmZXInCiAgICAgZm9ybWF0X3VuaXQgPSAneSonCiAgICAgaW1wbF9ieV9yZWZlcmVuY2UgPSBUcnVlCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAie05VTEwsIE5VTEx9IgogCi0gICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIHR5cGVzPSdieXRlcyBieXRlYXJyYXkgYnVmZmVyJywgbnVsbGFibGU9RmFsc2UpOgorICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBhY2NlcHQ9e2J1ZmZlcn0pOgogICAgICAgICBpZiBzZWxmLmRlZmF1bHQgbm90IGluICh1bnNwZWNpZmllZCwgTm9uZSk6CiAgICAgICAgICAgICBmYWlsKCJUaGUgb25seSBsZWdhbCBkZWZhdWx0IHZhbHVlIGZvciBQeV9idWZmZXIgaXMgTm9uZS4iKQotICAgICAgICBzZWxmLmNfZGVmYXVsdCA9IHNlbGYuY19pZ25vcmVkX2RlZmF1bHQKLSAgICAgICAgdHlwZXMgPSBzZXQodHlwZXMuc3RyaXAoKS5zcGxpdCgpKQotICAgICAgICBieXRlc190eXBlID0gc2V0KCgnYnl0ZXMnLCkpCi0gICAgICAgIGJ5dGVhcnJheV90eXBlID0gc2V0KCgnYnl0ZWFycmF5JywpKQotICAgICAgICBidWZmZXJfdHlwZSA9IHNldCgoJ2J1ZmZlcicsKSkKLSAgICAgICAgcndidWZmZXJfdHlwZSA9IHNldCgoJ3J3YnVmZmVyJywpKQotICAgICAgICByb2J1ZmZlcl90eXBlID0gc2V0KCgncm9idWZmZXInLCkpCi0gICAgICAgIHN0cl90eXBlID0gc2V0KCgnc3RyJywpKQotICAgICAgICBieXRlc19ieXRlYXJyYXlfYnVmZmVyX3R5cGUgPSBieXRlc190eXBlIHwgYnl0ZWFycmF5X3R5cGUgfCBidWZmZXJfdHlwZQogCi0gICAgICAgIGZvcm1hdF91bml0ID0gTm9uZQotICAgICAgICBpZiB0eXBlcyA9PSAoc3RyX3R5cGUgfCBieXRlc19ieXRlYXJyYXlfYnVmZmVyX3R5cGUpOgotICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAncyonIGlmIG5vdCBudWxsYWJsZSBlbHNlICd6KicKKyAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSBzZWxmLmNfaWdub3JlZF9kZWZhdWx0CisKKyAgICAgICAgaWYgYWNjZXB0ID09IHtzdHIsIGJ1ZmZlciwgTm9uZVR5cGV9OgorICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneionCisgICAgICAgIGVsaWYgYWNjZXB0ID09IHtzdHIsIGJ1ZmZlcn06CisgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdzKicKKyAgICAgICAgZWxpZiBhY2NlcHQgPT0ge2J1ZmZlcn06CisgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd5KicKKyAgICAgICAgZWxpZiBhY2NlcHQgPT0ge3J3YnVmZmVyfToKKyAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3cqJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbnVsbGFibGU6Ci0gICAgICAgICAgICAgICAgZmFpbCgnUHlfYnVmZmVyX2NvbnZlcnRlcjogaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMgKG51bGxhYmxlPVRydWUpJykKLSAgICAgICAgICAgIGVsaWYgdHlwZXMgPT0gKGJ5dGVzX2J5dGVhcnJheV9idWZmZXJfdHlwZSk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneSonCi0gICAgICAgICAgICBlbGlmIHR5cGVzID09IChieXRlYXJyYXlfdHlwZSB8IHJ3YnVmZmVyX3R5cGUpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3cqJwotICAgICAgICBpZiBub3QgZm9ybWF0X3VuaXQ6CiAgICAgICAgICAgICBmYWlsKCJQeV9idWZmZXJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyIpCiAKICAgICAgICAgc2VsZi5mb3JtYXRfdW5pdCA9IGZvcm1hdF91bml0CkBAIC0yODYzLDEwICsyOTk0LDExIEBACiAgICAgdHlwZSA9ICdsb25nJwogICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21Mb25nJwogICAgIGNhc3QgPSAnJworICAgIHVuc2lnbmVkX2Nhc3QgPSAnJwogCiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQotICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSAtMSIsIGRhdGEpCisgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IHt9LTEiLmZvcm1hdChzZWxmLnVuc2lnbmVkX2Nhc3QpLCBkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKICAgICAgICAgICAgICcnLmpvaW4oKCdyZXR1cm5fdmFsdWUgPSAnLCBzZWxmLmNvbnZlcnNpb25fZm4sICcoJywgc2VsZi5jYXN0LCAnX3JldHVybl92YWx1ZSk7XG4nKSkpCiAKQEAgLTI4ODcsMTAgKzMwMTksMTIgQEAKIGNsYXNzIHVuc2lnbmVkX2xvbmdfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAndW5zaWduZWQgbG9uZycKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tVW5zaWduZWRMb25nJworICAgIHVuc2lnbmVkX2Nhc3QgPSAnKHVuc2lnbmVkIGxvbmcpJwogCiBjbGFzcyB1bnNpZ25lZF9pbnRfcmV0dXJuX2NvbnZlcnRlcih1bnNpZ25lZF9sb25nX3JldHVybl9jb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAndW5zaWduZWQgaW50JwogICAgIGNhc3QgPSAnKHVuc2lnbmVkIGxvbmcpJworICAgIHVuc2lnbmVkX2Nhc3QgPSAnKHVuc2lnbmVkIGludCknCiAKIGNsYXNzIFB5X3NzaXplX3RfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKQEAgLTI4OTksNiArMzAzMyw3IEBACiBjbGFzcyBzaXplX3RfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnc2l6ZV90JwogICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21TaXplX3QnCisgICAgdW5zaWduZWRfY2FzdCA9ICcoc2l6ZV90KScKIAogCiBjbGFzcyBkb3VibGVfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKQEAgLTI5MjYsNiArMzA2MSwyNCBAQAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoX3JldHVybl92YWx1ZSk7XG4nKQogCiAKK2RlZiBldmFsX2FzdF9leHByKG5vZGUsIGdsb2JhbHMsICosIGZpbGVuYW1lPSctJyk6CisgICAgIiIiCisgICAgVGFrZXMgYW4gYXN0LkV4cHIgbm9kZS4gIENvbXBpbGVzIGFuZCBldmFsdWF0ZXMgaXQuCisgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBleHByZXNzaW9uLgorCisgICAgZ2xvYmFscyByZXByZXNlbnRzIHRoZSBnbG9iYWxzIGRpY3QgdGhlIGV4cHJlc3Npb24KKyAgICBzaG91bGQgc2VlLiAgKFRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBmb3IgImxvY2FscyIgaGVyZS4pCisgICAgIiIiCisKKyAgICBpZiBpc2luc3RhbmNlKG5vZGUsIGFzdC5FeHByKToKKyAgICAgICAgbm9kZSA9IG5vZGUudmFsdWUKKworICAgIG5vZGUgPSBhc3QuRXhwcmVzc2lvbihub2RlKQorICAgIGNvID0gY29tcGlsZShub2RlLCBmaWxlbmFtZSwgJ2V2YWwnKQorICAgIGZuID0gdHlwZXMuRnVuY3Rpb25UeXBlKGNvLCBnbG9iYWxzKQorICAgIHJldHVybiBmbigpCisKKwogY2xhc3MgSW5kZW50U3RhY2s6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmluZGVudHMgPSBbXQpAQCAtMzA5NCw0MyArMzI0Nyw0MyBAQAogICAgICAgICBmYWlsKCJ1bmtub3duIGRlc3RpbmF0aW9uIGNvbW1hbmQiLCByZXByKGNvbW1hbmQpKQogCiAKLSAgICBkZWYgZGlyZWN0aXZlX291dHB1dChzZWxmLCBmaWVsZCwgZGVzdGluYXRpb249JycpOgotICAgICAgICBmZCA9IHNlbGYuY2xpbmljLmZpZWxkX2Rlc3RpbmF0aW9ucworICAgIGRlZiBkaXJlY3RpdmVfb3V0cHV0KHNlbGYsIGNvbW1hbmRfb3JfbmFtZSwgZGVzdGluYXRpb249JycpOgorICAgICAgICBmZCA9IHNlbGYuY2xpbmljLmRlc3RpbmF0aW9uX2J1ZmZlcnMKIAotICAgICAgICBpZiBmaWVsZCA9PSAicHJlc2V0IjoKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJwcmVzZXQiOgogICAgICAgICAgICAgcHJlc2V0ID0gc2VsZi5jbGluaWMucHJlc2V0cy5nZXQoZGVzdGluYXRpb24pCiAgICAgICAgICAgICBpZiBub3QgcHJlc2V0OgogICAgICAgICAgICAgICAgIGZhaWwoIlVua25vd24gcHJlc2V0ICIgKyByZXByKGRlc3RpbmF0aW9uKSArICIhIikKICAgICAgICAgICAgIGZkLnVwZGF0ZShwcmVzZXQpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBmaWVsZCA9PSAicHVzaCI6Ci0gICAgICAgICAgICBzZWxmLmNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnNfc3RhY2suYXBwZW5kKGZkLmNvcHkoKSkKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJwdXNoIjoKKyAgICAgICAgICAgIHNlbGYuY2xpbmljLmRlc3RpbmF0aW9uX2J1ZmZlcnNfc3RhY2suYXBwZW5kKGZkLmNvcHkoKSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIGZpZWxkID09ICJwb3AiOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xpbmljLmZpZWxkX2Rlc3RpbmF0aW9uc19zdGFjazoKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJwb3AiOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xpbmljLmRlc3RpbmF0aW9uX2J1ZmZlcnNfc3RhY2s6CiAgICAgICAgICAgICAgICAgZmFpbCgiQ2FuJ3QgJ291dHB1dCBwb3AnLCBzdGFjayBpcyBlbXB0eSEiKQotICAgICAgICAgICAgcHJldmlvdXNfZmQgPSBzZWxmLmNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnNfc3RhY2sucG9wKCkKKyAgICAgICAgICAgIHByZXZpb3VzX2ZkID0gc2VsZi5jbGluaWMuZGVzdGluYXRpb25fYnVmZmVyc19zdGFjay5wb3AoKQogICAgICAgICAgICAgZmQudXBkYXRlKHByZXZpb3VzX2ZkKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBzZWNyZXQgY29tbWFuZCBmb3IgZGVidWdnaW5nIQotICAgICAgICBpZiBmaWVsZCA9PSAicHJpbnQiOgorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgPT0gInByaW50IjoKICAgICAgICAgICAgIHNlbGYuYmxvY2sub3V0cHV0LmFwcGVuZChwcHJpbnQucGZvcm1hdChmZCkpCiAgICAgICAgICAgICBzZWxmLmJsb2NrLm91dHB1dC5hcHBlbmQoJ1xuJykKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGQgPSBzZWxmLmNsaW5pYy5nZXRfZGVzdGluYXRpb24oZGVzdGluYXRpb24pCiAKLSAgICAgICAgaWYgZmllbGQgPT0gImV2ZXJ5dGhpbmciOgorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgPT0gImV2ZXJ5dGhpbmciOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdChmZCk6CiAgICAgICAgICAgICAgICAgZmRbbmFtZV0gPSBkCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBmaWVsZCBub3QgaW4gZmQ6Ci0gICAgICAgICAgICBmYWlsKCJJbnZhbGlkIGZpZWxkICIgKyByZXByKGZpZWxkKSArICIsIG11c3QgYmUgb25lIG9mOlxuICBwcmVzZXQgcHVzaCBwb3AgcHJpbnQgZXZlcnl0aGluZyAiICsgIiAiLmpvaW4oZmQpKQotICAgICAgICBmZFtmaWVsZF0gPSBkCisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSBub3QgaW4gZmQ6CisgICAgICAgICAgICBmYWlsKCJJbnZhbGlkIGNvbW1hbmQgLyBkZXN0aW5hdGlvbiBuYW1lICIgKyByZXByKGNvbW1hbmRfb3JfbmFtZSkgKyAiLCBtdXN0IGJlIG9uZSBvZjpcbiAgcHJlc2V0IHB1c2ggcG9wIHByaW50IGV2ZXJ5dGhpbmcgIiArICIgIi5qb2luKGZkKSkKKyAgICAgICAgZmRbY29tbWFuZF9vcl9uYW1lXSA9IGQKIAogICAgIGRlZiBkaXJlY3RpdmVfZHVtcChzZWxmLCBuYW1lKToKICAgICAgICAgc2VsZi5ibG9jay5vdXRwdXQuYXBwZW5kKHNlbGYuY2xpbmljLmdldF9kZXN0aW5hdGlvbihuYW1lKS5kdW1wKCkpCkBAIC0zNTEzLDcgKzM2NjYsNyBAQAogICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyB0aGUgbGFzdCA9IHdhcyBwcm9iYWJseSBpbnNpZGUgYSBmdW5jdGlvbiBjYWxsLCBsaWtlCi0gICAgICAgICAgICAgICAgIyAgIGk6IGludChudWxsYWJsZT1UcnVlKQorICAgICAgICAgICAgICAgICMgICBjOiBpbnQoYWNjZXB0PXtzdHJ9KQogICAgICAgICAgICAgICAgICMgc28gYXNzdW1lIHRoZXJlIHdhcyBubyBhY3R1YWwgZGVmYXVsdCB2YWx1ZS4KICAgICAgICAgICAgICAgICBkZWZhdWx0ID0gTm9uZQogICAgICAgICAgICAgICAgIGFzdF9pbnB1dCA9ICJkZWYgeCh7fSk6IHBhc3MiLmZvcm1hdChsaW5lKQpAQCAtMzUyNCw2ICszNjc3LDE0IEBACiAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gaW52YWxpZCBwYXJhbWV0ZXIgZGVjbGFyYXRpb246XG5cdCIgKyBsaW5lKQogCiAgICAgICAgIGZ1bmN0aW9uX2FyZ3MgPSBtb2R1bGUuYm9keVswXS5hcmdzCisKKyAgICAgICAgaWYgbGVuKGZ1bmN0aW9uX2FyZ3MuYXJncykgPiAxOgorICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIGludmFsaWQgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIChjb21tYT8pOlxuXHQiICsgbGluZSkKKyAgICAgICAgaWYgZnVuY3Rpb25fYXJncy5kZWZhdWx0cyBvciBmdW5jdGlvbl9hcmdzLmt3X2RlZmF1bHRzOgorICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIGludmFsaWQgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIChkZWZhdWx0IHZhbHVlPyk6XG5cdCIgKyBsaW5lKQorICAgICAgICBpZiBmdW5jdGlvbl9hcmdzLnZhcmFyZyBvciBmdW5jdGlvbl9hcmdzLmt3YXJnOgorICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIGludmFsaWQgcGFyYW1ldGVyIGRlY2xhcmF0aW9uICgqYXJncz8gKiprd2FyZ3M/KTpcblx0IiArIGxpbmUpCisKICAgICAgICAgcGFyYW1ldGVyID0gZnVuY3Rpb25fYXJncy5hcmdzWzBdCiAKICAgICAgICAgcGFyYW1ldGVyX25hbWUgPSBwYXJhbWV0ZXIuYXJnCkBAIC0zNjg2LDcgKzM4NDcsOSBAQAogICAgICAgICAgICAgZmFpbCgiQW5ub3RhdGlvbnMgbXVzdCBiZSBlaXRoZXIgYSBuYW1lLCBhIGZ1bmN0aW9uIGNhbGwsIG9yIGEgc3RyaW5nLiIpCiAKICAgICAgICAgbmFtZSA9IGFubm90YXRpb24uZnVuYy5pZAotICAgICAgICBrd2FyZ3MgPSB7bm9kZS5hcmc6IGFzdC5saXRlcmFsX2V2YWwobm9kZS52YWx1ZSkgZm9yIG5vZGUgaW4gYW5ub3RhdGlvbi5rZXl3b3Jkc30KKyAgICAgICAgc3ltYm9scyA9IGdsb2JhbHMoKQorCisgICAgICAgIGt3YXJncyA9IHtub2RlLmFyZzogZXZhbF9hc3RfZXhwcihub2RlLnZhbHVlLCBzeW1ib2xzKSBmb3Igbm9kZSBpbiBhbm5vdGF0aW9uLmtleXdvcmRzfQogICAgICAgICByZXR1cm4gbmFtZSwgRmFsc2UsIGt3YXJncwogCiAgICAgZGVmIHBhcnNlX3NwZWNpYWxfc3ltYm9sKHNlbGYsIHN5bWJvbCk6CkBAIC0zOTU5LDcgKzQxMjIsNyBAQAogICAgICAgICAjICAgICBhZGQoZi5yZXR1cm5fY29udmVydGVyLnB5X2RlZmF1bHQpCiAKICAgICAgICAgaWYgbm90IGYuZG9jc3RyaW5nX29ubHk6Ci0gICAgICAgICAgICBhZGQoIlxuLS1cbiIpCisgICAgICAgICAgICBhZGQoIlxuIiArIHNpZ19lbmRfbWFya2VyICsgIlxuIikKIAogICAgICAgICBkb2NzdHJpbmdfZmlyc3RfbGluZSA9IG91dHB1dCgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2RlbW8vc3MxLnB5IGIvVG9vbHMvZGVtby9zczEucHkKaW5kZXggNjQ5NzkwZi4uYzUxZjA0MSAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9zczEucHkKKysrIGIvVG9vbHMvZGVtby9zczEucHkKQEAgLTI2MSw3ICsyNjEsNyBAQAogICAgIGRlZiBlbmRfaW50KHNlbGYsIHRleHQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnZhbHVlID0gaW50KHRleHQpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IE5vbmUKIAogICAgIGVuZF9sb25nID0gZW5kX2ludApAQCAtMjY5LDEzICsyNjksMTMgQEAKICAgICBkZWYgZW5kX2RvdWJsZShzZWxmLCB0ZXh0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGZsb2F0KHRleHQpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IE5vbmUKIAogICAgIGRlZiBlbmRfY29tcGxleChzZWxmLCB0ZXh0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGNvbXBsZXgodGV4dCkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnZhbHVlID0gTm9uZQogCiAgICAgZGVmIGVuZF9zdHJpbmcoc2VsZiwgdGV4dCk6CkBAIC03NjMsNyArNzYzLDcgQEAKICAgICAgICAgICAgIGZvciBjbHMgaW4gaW50LCBmbG9hdCwgY29tcGxleDoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY2xzKHRleHQpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBjZWxsID0gTnVtZXJpY0NlbGwodmFsdWUpCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvUkVBRE1FIGIvVG9vbHMvZnJlZXplL1JFQURNRQppbmRleCA4MWJlMmM4Li41YmM1YjA0IDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvUkVBRE1FCisrKyBiL1Rvb2xzL2ZyZWV6ZS9SRUFETUUKQEAgLTEwMCw4ICsxMDAsOCBAQAogdGhlbiBkZWNsYXJlIHRoZXNlIGRpcmVjdG9yaWVzIGluIHlvdXIgZnJvemVuIFB5dGhvbiBwcm9ncmFtIHVzaW5nCiB0aGUgVENMX0xJQlJBUlksIFRLX0xJQlJBUlkgYW5kIFRJWF9MSUJSQVJZIGVudmlyb25tZW50IHZhcmlhYmxlcy4KIAotRm9yIGV4YW1wbGUsIGFzc3VtZSB5b3Ugd2lsbCBzaGlwIHlvdXIgZnJvemVuIHByb2dyYW0gaW4gdGhlIGRpcmVjdG9yeSAKLTxyb290Pi9iaW4vd2luZG93cy14ODYgYW5kIHdpbGwgcGxhY2UgeW91ciBUY2wgbGlicmFyeSBmaWxlcyAKK0ZvciBleGFtcGxlLCBhc3N1bWUgeW91IHdpbGwgc2hpcCB5b3VyIGZyb3plbiBwcm9ncmFtIGluIHRoZSBkaXJlY3RvcnkKKzxyb290Pi9iaW4vd2luZG93cy14ODYgYW5kIHdpbGwgcGxhY2UgeW91ciBUY2wgbGlicmFyeSBmaWxlcwogaW4gPHJvb3Q+L2xpYi90Y2w4LjIgYW5kIHlvdXIgVGsgbGlicmFyeSBmaWxlcyBpbiA8cm9vdD4vbGliL3RrOC4yLiBUaGVuCiBwbGFjaW5nIHRoZSBmb2xsb3dpbmcgbGluZXMgaW4geW91ciBmcm96ZW4gUHl0aG9uIHNjcmlwdCBiZWZvcmUgaW1wb3J0aW5nCiBUa2ludGVyIG9yIFRpeCB3b3VsZCBzZXQgdGhlIGVudmlyb25tZW50IGNvcnJlY3RseSBmb3IgVGNsL1RrL1RpeDoKQEAgLTEzOCw4ICsxMzgsOCBAQAogZW52aXJvbm1lbnQgdmFyaWFibGUgTERfTElCUkFSWV9QQVRIIGFuZC9vciB0aGUgc3lzdGVtCiBzaGFyZWQgbGlicmFyeSBjYWNoZSAobGQuc28pLiBBbiBhZGRpdGlvbmFsIHByZWZlcnJlZCBkaXJlY3RvcnkgZm9yCiBmaW5kaW5nIHRoZSBkeW5hbWljIGxpYnJhcmllcyBpcyBidWlsdCBpbnRvIHRoZSAuZGxsIG9yIC5zbyBmaWxlcyBhdAotY29tcGlsZSB0aW1lIC0gc2VlIHRoZSBMSUJfUlVOVElNRV9ESVIgdmFyaWFibGUgaW4gdGhlIFRjbCBtYWtlZmlsZS4gCi1UaGUgT1MgbXVzdCBmaW5kIHRoZSBkeW5hbWljIGxpYnJhcmllcyBvciB5b3VyIGZyb3plbiBwcm9ncmFtIHdvbid0IHN0YXJ0LiAKK2NvbXBpbGUgdGltZSAtIHNlZSB0aGUgTElCX1JVTlRJTUVfRElSIHZhcmlhYmxlIGluIHRoZSBUY2wgbWFrZWZpbGUuCitUaGUgT1MgbXVzdCBmaW5kIHRoZSBkeW5hbWljIGxpYnJhcmllcyBvciB5b3VyIGZyb3plbiBwcm9ncmFtIHdvbid0IHN0YXJ0LgogVXN1YWxseSBJIG1ha2Ugc3VyZSB0aGF0IHRoZSAuc28gb3IgLmRsbCBmaWxlcyBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CiBhcyB0aGUgZXhlY3V0YWJsZSwgYnV0IHRoaXMgbWF5IG5vdCBiZSBmb29scHJvb2YuCiAKQEAgLTE0OSw4ICsxNDksOCBAQAogdG8gYSB0ZW1wb3JhcnkgbG9jYXRpb24gd2hlbiB0aGUgcHJvZ3JhbSBydW5zOyB0aGlzIGlzIGN1cnJlbnRseSBsZWZ0CiBhcyBhbiBleGVyY2lzZSBmb3IgdGhlIHJlYWRlci4gIEFuIGVhc2llciBhcHByb2FjaCBpcyB0byBmcmVlemUgdGhlCiBUY2wvVGsvVGl4IGNvZGUgaW50byB0aGUgZHluYW1pYyBsaWJyYXJpZXMgdXNpbmcgdGhlIFRjbCBFVCBjb2RlLAotb3IgdGhlIFRpeCBTdGFuZC1BbG9uZS1Nb2R1bGUgY29kZS4gT2YgY291cnNlLCB5b3UgY2FuIGFsc28gc2ltcGx5IAotcmVxdWlyZSB0aGF0IFRjbC9UayBpcyByZXF1aXJlZCBvbiB0aGUgdGFyZ2V0IGluc3RhbGxhdGlvbiwgYnV0IGJlIAorb3IgdGhlIFRpeCBTdGFuZC1BbG9uZS1Nb2R1bGUgY29kZS4gT2YgY291cnNlLCB5b3UgY2FuIGFsc28gc2ltcGx5CityZXF1aXJlIHRoYXQgVGNsL1RrIGlzIHJlcXVpcmVkIG9uIHRoZSB0YXJnZXQgaW5zdGFsbGF0aW9uLCBidXQgYmUKIGNhcmVmdWwgdGhhdCB0aGUgdmVyc2lvbiBjb3JyZXNwb25kcy4KIAogVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB1c2luZyBmcm96ZW4gVGtpbnRlciBhcHBsaWNhdGlvbnM6CkBAIC0xNjQsNyArMTY0LDcgQEAKIEEgd2FybmluZyBhYm91dCBzaGFyZWQgbGlicmFyeSBtb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGVuIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiB1c2VzIHNoYXJlZCBsaWJyYXJ5IG1vZHVsZXMgc3VjaCBhcyAKK1doZW4geW91ciBQeXRob24gaW5zdGFsbGF0aW9uIHVzZXMgc2hhcmVkIGxpYnJhcnkgbW9kdWxlcyBzdWNoIGFzCiBfdGtpbnRlci5weWQsIHRoZXNlIHdpbGwgbm90IGJlIGluY29ycG9yYXRlZCBpbiB0aGUgZnJvemVuIHByb2dyYW0uCiAgQWdhaW4sIHRoZSBmcm96ZW4gcHJvZ3JhbSB3aWxsIHdvcmsgd2hlbiB5b3UgdGVzdCBpdCwgYnV0IGl0IHdvbid0CiAgd29yayB3aGVuIHlvdSBzaGlwIGl0IHRvIGEgc2l0ZSB3aXRob3V0IGEgUHl0aG9uIGluc3RhbGxhdGlvbi4KQEAgLTI3NSw5ICsyNzUsOSBAQAogICAgICAgICAgICAgICBhcmUgcmVhZCBhbmQgdGhlIC1pIG9wdGlvbiByZXBsYWNlZCB3aXRoIHRoZSBwYXJzZWQKICAgICAgICAgICAgICAgcGFyYW1zIChub3RlIC0gcXVvdGluZyBhcmdzIGluIHRoaXMgZmlsZSBpcyBOT1Qgc3VwcG9ydGVkKQogCi0tcyBzdWJzeXN0ZW06IFNwZWNpZnkgdGhlIHN1YnN5c3RlbSAoRm9yIFdpbmRvd3Mgb25seS4pOyAKKy1zIHN1YnN5c3RlbTogU3BlY2lmeSB0aGUgc3Vic3lzdGVtIChGb3IgV2luZG93cyBvbmx5Lik7CiAgICAgICAgICAgICAgICdjb25zb2xlJyAoZGVmYXVsdCksICd3aW5kb3dzJywgJ3NlcnZpY2UnIG9yICdjb21fZGxsJwotICAgICAgICAgICAgICAKKwogLXc6ICAgICAgICAgICBUb2dnbGUgV2luZG93cyAoTlQgb3IgOTUpIGJlaGF2aW9yLgogICAgICAgICAgICAgICAoRm9yIGRlYnVnZ2luZyBvbmx5IC0tIG9uIGEgd2luMzIgcGxhdGZvcm0sIHdpbjMyIGJlaGF2aW9yCiAgICAgICAgICAgICAgIGlzIGF1dG9tYXRpYy4pCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvYmtmaWxlLnB5IGIvVG9vbHMvZnJlZXplL2JrZmlsZS5weQppbmRleCA2YWJhY2M5Li4yMGE3MGIwIDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvYmtmaWxlLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkKQEAgLTEsNDkgKzEsMjYgQEAKIGZyb20gYnVpbHRpbnMgaW1wb3J0IG9wZW4gYXMgX29yaWdfb3BlbgogCi1jbGFzcyBfQmtGaWxlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBtb2RlLCBidWZzaXplKToKLSAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgIHNlbGYuX19maWxlbmFtZSA9IGZpbGUKLSAgICAgICAgc2VsZi5fX2JhY2t1cCA9IGZpbGUgKyAnficKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuX19iYWNrdXApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5yZW5hbWUoZmlsZSwgc2VsZi5fX2JhY2t1cCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9fYmFja3VwID0gTm9uZQotICAgICAgICBzZWxmLl9fZmlsZSA9IF9vcmlnX29wZW4oZmlsZSwgbW9kZSwgYnVmc2l6ZSkKLSAgICAgICAgc2VsZi5jbG9zZWQgPSBzZWxmLl9fZmlsZS5jbG9zZWQKLSAgICAgICAgc2VsZi5maWxlbm8gPSBzZWxmLl9fZmlsZS5maWxlbm8KLSAgICAgICAgc2VsZi5mbHVzaCA9IHNlbGYuX19maWxlLmZsdXNoCi0gICAgICAgIHNlbGYuaXNhdHR5ID0gc2VsZi5fX2ZpbGUuaXNhdHR5Ci0gICAgICAgIHNlbGYubW9kZSA9IHNlbGYuX19maWxlLm1vZGUKLSAgICAgICAgc2VsZi5uYW1lID0gc2VsZi5fX2ZpbGUubmFtZQotICAgICAgICBzZWxmLnJlYWQgPSBzZWxmLl9fZmlsZS5yZWFkCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYucmVhZGludG8gPSBzZWxmLl9fZmlsZS5yZWFkaW50bwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYucmVhZGxpbmUgPSBzZWxmLl9fZmlsZS5yZWFkbGluZQotICAgICAgICBzZWxmLnJlYWRsaW5lcyA9IHNlbGYuX19maWxlLnJlYWRsaW5lcwotICAgICAgICBzZWxmLnNlZWsgPSBzZWxmLl9fZmlsZS5zZWVrCi0gICAgICAgIHNlbGYudGVsbCA9IHNlbGYuX19maWxlLnRlbGwKLSAgICAgICAgc2VsZi50cnVuY2F0ZSA9IHNlbGYuX19maWxlLnRydW5jYXRlCi0gICAgICAgIHNlbGYud3JpdGUgPSBzZWxmLl9fZmlsZS53cml0ZQotICAgICAgICBzZWxmLndyaXRlbGluZXMgPSBzZWxmLl9fZmlsZS53cml0ZWxpbmVzCi0KLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX19maWxlLmNsb3NlKCkKLSAgICAgICAgaWYgc2VsZi5fX2JhY2t1cCBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGltcG9ydCBmaWxlY21wCi0gICAgICAgIGlmIGZpbGVjbXAuY21wKHNlbGYuX19iYWNrdXAsIHNlbGYuX19maWxlbmFtZSwgc2hhbGxvdyA9IDApOgotICAgICAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5fX2ZpbGVuYW1lKQotICAgICAgICAgICAgb3MucmVuYW1lKHNlbGYuX19iYWNrdXAsIHNlbGYuX19maWxlbmFtZSkKLQotZGVmIG9wZW4oZmlsZSwgbW9kZSA9ICdyJywgYnVmc2l6ZSA9IC0xKToKK2RlZiBvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZzaXplPS0xKToKICAgICBpZiAndycgbm90IGluIG1vZGU6CiAgICAgICAgIHJldHVybiBfb3JpZ19vcGVuKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCi0gICAgcmV0dXJuIF9Ca0ZpbGUoZmlsZSwgbW9kZSwgYnVmc2l6ZSkKKyAgICBpbXBvcnQgb3MKKyAgICBiYWNrdXAgPSBmaWxlICsgJ34nCisgICAgdHJ5OgorICAgICAgICBvcy51bmxpbmsoYmFja3VwKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICBvcy5yZW5hbWUoZmlsZSwgYmFja3VwKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICByZXR1cm4gX29yaWdfb3BlbihmaWxlLCBtb2RlLCBidWZzaXplKQorICAgIGYgPSBfb3JpZ19vcGVuKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCisgICAgX29yaWdfY2xvc2UgPSBmLmNsb3NlCisgICAgZGVmIGNsb3NlKCk6CisgICAgICAgIF9vcmlnX2Nsb3NlKCkKKyAgICAgICAgaW1wb3J0IGZpbGVjbXAKKyAgICAgICAgaWYgZmlsZWNtcC5jbXAoYmFja3VwLCBmaWxlLCBzaGFsbG93PUZhbHNlKToKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCisgICAgICAgICAgICBvcy5yZW5hbWUoYmFja3VwLCBmaWxlKQorICAgIGYuY2xvc2UgPSBjbG9zZQorICAgIHJldHVybiBmCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvZXh0ZW5zaW9uc193aW4zMi5pbmkgYi9Ub29scy9mcmVlemUvZXh0ZW5zaW9uc193aW4zMi5pbmkKaW5kZXggMWUzNmFiYS4uZDAxZmQ2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL2V4dGVuc2lvbnNfd2luMzIuaW5pCisrKyBiL1Rvb2xzL2ZyZWV6ZS9leHRlbnNpb25zX3dpbjMyLmluaQpAQCAtNiw3ICs2LDcgQEAKIAogOyBUaGlzIGlzIGFsbCBzZXR1cCBmb3IgYWxsIHRoZSB3aW4zMiBleHRlbnNpb24gbW9kdWxlcwogOyByZWxlYXNlZCBieSBNYXJrIEhhbW1vbmQuCi07IFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQWVRIT05FWCBpcyBzZXQgCis7IFlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQWVRIT05FWCBpcyBzZXQKIDsgdG8gcG9pbnQgdG8gdGhlIHJvb3Qgd2luMzIgZXh0ZW5zaW9ucyBkaXJlY3RvcnkKIAogOyBQWVRIT05QUkVGSVggbXVzdCBwb2ludCB0byB0aGUgUHl0aG9uIGJ1aWxkIHJvb3QgZGlyZWN0b3J5CkBAIC00OSw3ICs0OSw3IEBACiAKIFt6bGliXQogZHNwPSVQWVRIT05QUkVGSVglXFBDQnVpbGRcemxpYi5kc3AKLWNsPS9JICVQWVRIT05QUkVGSVglXC4uXHpsaWItMS4xLjQgL0QgX1dJTkRPV1MgL0QgV0lOMzIgCitjbD0vSSAlUFlUSE9OUFJFRklYJVwuLlx6bGliLTEuMS40IC9EIF9XSU5ET1dTIC9EIFdJTjMyCiBsaWJzPSVQWVRIT05QUkVGSVglXC4uXHpsaWItMS4xLjRcemxpYi5saWIgL25vZGVmYXVsdGxpYjpsaWJjCiAKIFt3aW5yZWddCkBAIC05NSw3ICs5NSw3IEBACiBjbD0vSSAlUFlUSE9ORVglXHdpbjMyXHNyYwogCiBbd2luMzJmaWxlXQotZHNwPSVQWVRIT05FWCVcd2luMzJcd2luMzJmaWxlLmRzcCAKK2RzcD0lUFlUSE9ORVglXHdpbjMyXHdpbjMyZmlsZS5kc3AKIGNsPS9JICVQWVRIT05FWCVcd2luMzJcc3JjCiAKIFt3aW4zMm5ldF0KQEAgLTEwOCw3ICsxMDgsNyBAQAogY2w9L0kgJVBZVEhPTkVYJVx3aW4zMlxzcmMKIAogW3dpbjMycGlwZV0KLWRzcD0lUFlUSE9ORVglXHdpbjMyXHdpbjMycGlwZS5kc3AgCitkc3A9JVBZVEhPTkVYJVx3aW4zMlx3aW4zMnBpcGUuZHNwCiBjbD0vSSAlUFlUSE9ORVglXHdpbjMyXHNyYwogCiBbd2luMzJzZWN1cml0eV0KZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IGUwYzZjMmMuLmMwNzU4MDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMzY2LDggKzM2NiwxMCBAQAogICAgICAgICAgICAgbWYubG9hZF9maWxlKG1vZCkKIAogICAgICMgQWxpYXMgImltcG9ydGxpYi5fYm9vdHN0cmFwIiB0byAiX2Zyb3plbl9pbXBvcnRsaWIiIHNvIHRoYXQgdGhlCi0gICAgIyBpbXBvcnQgbWFjaGluZXJ5IGNhbiBib290c3RyYXAuCisgICAgIyBpbXBvcnQgbWFjaGluZXJ5IGNhbiBib290c3RyYXAuICBEbyB0aGUgc2FtZSBmb3IKKyAgICAjIGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLgogICAgIG1mLm1vZHVsZXNbIl9mcm96ZW5faW1wb3J0bGliIl0gPSBtZi5tb2R1bGVzWyJpbXBvcnRsaWIuX2Jvb3RzdHJhcCJdCisgICAgbWYubW9kdWxlc1siX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwiXSA9IG1mLm1vZHVsZXNbImltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsIl0KIAogICAgICMgQWRkIHRoZSBtYWluIHNjcmlwdCBhcyBlaXRoZXIgX19tYWluX18sIG9yIHRoZSBhY3R1YWwgbW9kdWxlIG5hbWUuCiAgICAgaWYgcHl0aG9uX2VudHJ5X2lzX21haW46CkBAIC00MzksMjUgKzQ0MSwxNyBAQAogICAgICAgICAgICAgICAgICBmcm96ZW5kbGxtYWluX2MsIG9zLnBhdGguYmFzZW5hbWUoZXh0ZW5zaW9uc19jKV0gKyBmaWxlcwogICAgICAgICBtYWluZGVmbiA9IGNoZWNrZXh0ZW5zaW9uc193aW4zMi5DRXh0ZW5zaW9uKCAnX19tYWluX18nLCB4dHJhcyApCiAgICAgICAgIGZyb3plbl9leHRlbnNpb25zLmFwcGVuZCggbWFpbmRlZm4gKQotICAgICAgICBvdXRmcCA9IG9wZW4obWFrZWZpbGUsICd3JykKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgb3V0ZnA6CiAgICAgICAgICAgICB3aW5tYWtlbWFrZWZpbGUubWFrZW1ha2VmaWxlKG91dGZwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuX2V4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUodGFyZ2V0KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG91dGZwLmNsb3NlKCkKICAgICAgICAgcmV0dXJuCiAKICAgICAjIGdlbmVyYXRlIGNvbmZpZy5jIGFuZCBNYWtlZmlsZQogICAgIGJ1aWx0aW5zLnNvcnQoKQotICAgIGluZnAgPSBvcGVuKGNvbmZpZ19jX2luKQotICAgIG91dGZwID0gYmtmaWxlLm9wZW4oY29uZmlnX2MsICd3JykKLSAgICB0cnk6CisgICAgd2l0aCBvcGVuKGNvbmZpZ19jX2luKSBhcyBpbmZwLCBia2ZpbGUub3Blbihjb25maWdfYywgJ3cnKSBhcyBvdXRmcDoKICAgICAgICAgbWFrZWNvbmZpZy5tYWtlY29uZmlnKGluZnAsIG91dGZwLCBidWlsdGlucykKLSAgICBmaW5hbGx5OgotICAgICAgICBvdXRmcC5jbG9zZSgpCi0gICAgaW5mcC5jbG9zZSgpCiAKICAgICBjZmxhZ3MgPSBbJyQoT1BUKSddCiAgICAgY3BwZmxhZ3MgPSBkZWZpbmVzICsgaW5jbHVkZXMKQEAgLTQ3NSwxMSArNDY5LDggQEAKICAgICAgICAgICAgIGZpbGVzICsgc3VwcF9zb3VyY2VzICsgIGFkZGZpbGVzICsgbGlicyArIFwKICAgICAgICAgICAgIFsnJChNT0RMSUJTKScsICckKExJQlMpJywgJyQoU1lTTElCUyknXQogCi0gICAgb3V0ZnAgPSBia2ZpbGUub3BlbihtYWtlZmlsZSwgJ3cnKQotICAgIHRyeToKKyAgICB3aXRoIGJrZmlsZS5vcGVuKG1ha2VmaWxlLCAndycpIGFzIG91dGZwOgogICAgICAgICBtYWtlbWFrZWZpbGUubWFrZW1ha2VmaWxlKG91dGZwLCBzb21ldmFycywgZmlsZXMsIGJhc2VfdGFyZ2V0KQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG91dGZwLmNsb3NlKCkKIAogICAgICMgRG9uZSEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkgYi9Ub29scy9mcmVlemUvbWFrZWZyZWV6ZS5weQppbmRleCBlZjE4ZWM3Li42NGUzZTZiIDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvbWFrZWZyZWV6ZS5weQorKysgYi9Ub29scy9mcmVlemUvbWFrZWZyZWV6ZS5weQpAQCAtMzksMzYgKzM5LDM0IEBACiAgICAgICAgIG1hbmdsZWQgPSAiX18iLmpvaW4obW9kLnNwbGl0KCIuIikpCiAgICAgICAgIGlmIG0uX19jb2RlX186CiAgICAgICAgICAgICBmaWxlID0gJ01fJyArIG1hbmdsZWQgKyAnLmMnCi0gICAgICAgICAgICBvdXRmcCA9IGJrZmlsZS5vcGVuKGJhc2UgKyBmaWxlLCAndycpCi0gICAgICAgICAgICBmaWxlcy5hcHBlbmQoZmlsZSkKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIHByaW50KCJmcmVlemluZyIsIG1vZCwgIi4uLiIpCi0gICAgICAgICAgICBzdHIgPSBtYXJzaGFsLmR1bXBzKG0uX19jb2RlX18pCi0gICAgICAgICAgICBzaXplID0gbGVuKHN0cikKLSAgICAgICAgICAgIGlmIG0uX19wYXRoX186Ci0gICAgICAgICAgICAgICAgIyBJbmRpY2F0ZSBwYWNrYWdlIGJ5IG5lZ2F0aXZlIHNpemUKLSAgICAgICAgICAgICAgICBzaXplID0gLXNpemUKLSAgICAgICAgICAgIGRvbmUuYXBwZW5kKChtb2QsIG1hbmdsZWQsIHNpemUpKQotICAgICAgICAgICAgd3JpdGVjb2RlKG91dGZwLCBtYW5nbGVkLCBzdHIpCi0gICAgICAgICAgICBvdXRmcC5jbG9zZSgpCisgICAgICAgICAgICB3aXRoIGJrZmlsZS5vcGVuKGJhc2UgKyBmaWxlLCAndycpIGFzIG91dGZwOgorICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgIGlmIGRlYnVnOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiZnJlZXppbmciLCBtb2QsICIuLi4iKQorICAgICAgICAgICAgICAgIHN0ciA9IG1hcnNoYWwuZHVtcHMobS5fX2NvZGVfXykKKyAgICAgICAgICAgICAgICBzaXplID0gbGVuKHN0cikKKyAgICAgICAgICAgICAgICBpZiBtLl9fcGF0aF9fOgorICAgICAgICAgICAgICAgICAgICAjIEluZGljYXRlIHBhY2thZ2UgYnkgbmVnYXRpdmUgc2l6ZQorICAgICAgICAgICAgICAgICAgICBzaXplID0gLXNpemUKKyAgICAgICAgICAgICAgICBkb25lLmFwcGVuZCgobW9kLCBtYW5nbGVkLCBzaXplKSkKKyAgICAgICAgICAgICAgICB3cml0ZWNvZGUob3V0ZnAsIG1hbmdsZWQsIHN0cikKICAgICBpZiBkZWJ1ZzoKICAgICAgICAgcHJpbnQoImdlbmVyYXRpbmcgdGFibGUgb2YgZnJvemVuIG1vZHVsZXMiKQotICAgIG91dGZwID0gYmtmaWxlLm9wZW4oYmFzZSArICdmcm96ZW4uYycsICd3JykKLSAgICBmb3IgbW9kLCBtYW5nbGVkLCBzaXplIGluIGRvbmU6Ci0gICAgICAgIG91dGZwLndyaXRlKCdleHRlcm4gdW5zaWduZWQgY2hhciBNXyVzW107XG4nICUgbWFuZ2xlZCkKLSAgICBvdXRmcC53cml0ZShoZWFkZXIpCi0gICAgZm9yIG1vZCwgbWFuZ2xlZCwgc2l6ZSBpbiBkb25lOgotICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTV8lcywgJWR9LFxuJyAlIChtb2QsIG1hbmdsZWQsIHNpemUpKQotICAgIG91dGZwLndyaXRlKCdcbicpCi0gICAgIyBUaGUgZm9sbG93aW5nIG1vZHVsZXMgaGF2ZSBhIE5VTEwgY29kZSBwb2ludGVyLCBpbmRpY2F0aW5nCi0gICAgIyB0aGF0IHRoZSBmcm96ZW4gcHJvZ3JhbSBzaG91bGQgbm90IHNlYXJjaCBmb3IgdGhlbSBvbiB0aGUgaG9zdAotICAgICMgc3lzdGVtLiBJbXBvcnRpbmcgdGhlbSB3aWxsICphbHdheXMqIHJhaXNlIGFuIEltcG9ydEVycm9yLgotICAgICMgVGhlIHplcm8gdmFsdWUgc2l6ZSBpcyBuZXZlciB1c2VkLgotICAgIGZvciBtb2QgaW4gZmFpbF9pbXBvcnQ6Ci0gICAgICAgIG91dGZwLndyaXRlKCdcdHsiJXMiLCBOVUxMLCAwfSxcbicgJSAobW9kLCkpCi0gICAgb3V0ZnAud3JpdGUodHJhaWxlcikKLSAgICBvdXRmcC53cml0ZShlbnRyeV9wb2ludCkKLSAgICBvdXRmcC5jbG9zZSgpCisgICAgd2l0aCBia2ZpbGUub3BlbihiYXNlICsgJ2Zyb3plbi5jJywgJ3cnKSBhcyBvdXRmcDoKKyAgICAgICAgZm9yIG1vZCwgbWFuZ2xlZCwgc2l6ZSBpbiBkb25lOgorICAgICAgICAgICAgb3V0ZnAud3JpdGUoJ2V4dGVybiB1bnNpZ25lZCBjaGFyIE1fJXNbXTtcbicgJSBtYW5nbGVkKQorICAgICAgICBvdXRmcC53cml0ZShoZWFkZXIpCisgICAgICAgIGZvciBtb2QsIG1hbmdsZWQsIHNpemUgaW4gZG9uZToKKyAgICAgICAgICAgIG91dGZwLndyaXRlKCdcdHsiJXMiLCBNXyVzLCAlZH0sXG4nICUgKG1vZCwgbWFuZ2xlZCwgc2l6ZSkpCisgICAgICAgIG91dGZwLndyaXRlKCdcbicpCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgYSBOVUxMIGNvZGUgcG9pbnRlciwgaW5kaWNhdGluZworICAgICAgICAjIHRoYXQgdGhlIGZyb3plbiBwcm9ncmFtIHNob3VsZCBub3Qgc2VhcmNoIGZvciB0aGVtIG9uIHRoZSBob3N0CisgICAgICAgICMgc3lzdGVtLiBJbXBvcnRpbmcgdGhlbSB3aWxsICphbHdheXMqIHJhaXNlIGFuIEltcG9ydEVycm9yLgorICAgICAgICAjIFRoZSB6ZXJvIHZhbHVlIHNpemUgaXMgbmV2ZXIgdXNlZC4KKyAgICAgICAgZm9yIG1vZCBpbiBmYWlsX2ltcG9ydDoKKyAgICAgICAgICAgIG91dGZwLndyaXRlKCdcdHsiJXMiLCBOVUxMLCAwfSxcbicgJSAobW9kLCkpCisgICAgICAgIG91dGZwLndyaXRlKHRyYWlsZXIpCisgICAgICAgIG91dGZwLndyaXRlKGVudHJ5X3BvaW50KQogICAgIHJldHVybiBmaWxlcwogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5IGIvVG9vbHMvaTE4bi9tYWtlbG9jYWxlYWxpYXMucHkKaW5kZXggMTA4ODdjZS4uYzdlY2FjZSAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9tYWtlbG9jYWxlYWxpYXMucHkKKysrIGIvVG9vbHMvaTE4bi9tYWtlbG9jYWxlYWxpYXMucHkKQEAgLTgsOSArOCwxMiBAQAogIiIiCiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCitfbG9jYWxlID0gbG9jYWxlCiAKLSMgTG9jYXRpb24gb2YgdGhlIGFsaWFzIGZpbGUKKyMgTG9jYXRpb24gb2YgdGhlIFgxMSBhbGlhcyBmaWxlLgogTE9DQUxFX0FMSUFTID0gJy91c3Ivc2hhcmUvWDExL2xvY2FsZS9sb2NhbGUuYWxpYXMnCisjIExvY2F0aW9uIG9mIHRoZSBnbGliYyBTVVBQT1JURUQgbG9jYWxlcyBmaWxlLgorU1VQUE9SVEVEID0gJy91c3Ivc2hhcmUvaTE4bi9TVVBQT1JURUQnCiAKIGRlZiBwYXJzZShmaWxlbmFtZSk6CiAKQEAgLTQ0LDEwICs0NywzOSBAQAogICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCctJywgJycpCiAgICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLnJlcGxhY2UoJ18nLCAnJykKICAgICAgICAgICAgIGxvY2FsZSA9IGxhbmcgKyAnLicgKyBlbmNvZGluZwotICAgICAgICAgICAgaWYgZW5jb2RpbmcubG93ZXIoKSA9PSAndXRmOCc6Ci0gICAgICAgICAgICAgICAgIyBJZ25vcmUgVVRGLTggbWFwcGluZ3MgLSB0aGlzIGVuY29kaW5nIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICMgYXZhaWxhYmxlIGZvciBhbGwgbG9jYWxlcwotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGRhdGFbbG9jYWxlXSA9IGFsaWFzCisgICAgcmV0dXJuIGRhdGEKKworZGVmIHBhcnNlX2dsaWJjX3N1cHBvcnRlZChmaWxlbmFtZSk6CisKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsIGVuY29kaW5nPSdsYXRpbjEnKSBhcyBmOgorICAgICAgICBsaW5lcyA9IGxpc3QoZikKKyAgICBkYXRhID0ge30KKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGxpbmVbOjFdID09ICcjJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJy8nLCAnICcpLnN0cmlwKCkKKyAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCdcXCcpLnJzdHJpcCgpCisgICAgICAgIHdvcmRzID0gbGluZS5zcGxpdCgpCisgICAgICAgIGlmIGxlbih3b3JkcykgIT0gMjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGFsaWFzLCBhbGlhc19lbmNvZGluZyA9IHdvcmRzCisgICAgICAgICMgTG93ZXItY2FzZSBsb2NhbGUKKyAgICAgICAgbG9jYWxlID0gYWxpYXMubG93ZXIoKQorICAgICAgICAjIE5vcm1hbGl6ZSBlbmNvZGluZywgaWYgZ2l2ZW4KKyAgICAgICAgaWYgJy4nIGluIGxvY2FsZToKKyAgICAgICAgICAgIGxhbmcsIGVuY29kaW5nID0gbG9jYWxlLnNwbGl0KCcuJylbOjJdCisgICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLnJlcGxhY2UoJy0nLCAnJykKKyAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcucmVwbGFjZSgnXycsICcnKQorICAgICAgICAgICAgbG9jYWxlID0gbGFuZyArICcuJyArIGVuY29kaW5nCisgICAgICAgICMgQWRkIGFuIGVuY29kaW5nIHRvIGFsaWFzCisgICAgICAgIGFsaWFzLCBfLCBtb2RpZmllciA9IGFsaWFzLnBhcnRpdGlvbignQCcpCisgICAgICAgIGFsaWFzID0gX2xvY2FsZS5fcmVwbGFjZV9lbmNvZGluZyhhbGlhcywgYWxpYXNfZW5jb2RpbmcpCisgICAgICAgIGlmIG1vZGlmaWVyIGFuZCBub3QgKG1vZGlmaWVyID09ICdldXJvJyBhbmQgYWxpYXNfZW5jb2RpbmcgPT0gJ0lTTy04ODU5LTE1Jyk6CisgICAgICAgICAgICBhbGlhcyArPSAnQCcgKyBtb2RpZmllcgogICAgICAgICBkYXRhW2xvY2FsZV0gPSBhbGlhcwogICAgIHJldHVybiBkYXRhCiAKQEAgLTkyLDkgKzEyNCwyNSBAQAogICAgIHJldHVybiBlcnJvcnMKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgYXJncGFyc2UKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1sb2NhbGUtYWxpYXMnLCBkZWZhdWx0PUxPQ0FMRV9BTElBUywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2xvY2F0aW9uIG9mIHRoZSBYMTEgYWxpYXMgZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZGVmYXVsdDogJWEpJyAlIExPQ0FMRV9BTElBUykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWdsaWJjLXN1cHBvcnRlZCcsIGRlZmF1bHQ9U1VQUE9SVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbG9jYXRpb24gb2YgdGhlIGdsaWJjIFNVUFBPUlRFRCBsb2NhbGVzIGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQ6ICVhKScgJSBTVVBQT1JURUQpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKwogICAgIGRhdGEgPSBsb2NhbGUubG9jYWxlX2FsaWFzLmNvcHkoKQotICAgIGRhdGEudXBkYXRlKHBhcnNlKExPQ0FMRV9BTElBUykpCi0gICAgZGF0YSA9IG9wdGltaXplKGRhdGEpCisgICAgZGF0YS51cGRhdGUocGFyc2VfZ2xpYmNfc3VwcG9ydGVkKGFyZ3MuZ2xpYmNfc3VwcG9ydGVkKSkKKyAgICBkYXRhLnVwZGF0ZShwYXJzZShhcmdzLmxvY2FsZV9hbGlhcykpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgIyBSZXBlYXQgb3B0aW1pemF0aW9uIHdoaWxlIHRoZSBzaXplIGlzIGRlY3JlYXNlZC4KKyAgICAgICAgbiA9IGxlbihkYXRhKQorICAgICAgICBkYXRhID0gb3B0aW1pemUoZGF0YSkKKyAgICAgICAgaWYgbGVuKGRhdGEpID09IG46CisgICAgICAgICAgICBicmVhawogICAgIHByaW50X2RpZmZlcmVuY2VzKGRhdGEsIGxvY2FsZS5sb2NhbGVfYWxpYXMpCiAgICAgcHJpbnQoKQogICAgIHByaW50KCdsb2NhbGVfYWxpYXMgPSB7JykKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggOWZmZWIxNy4uM2M2YzE0YyAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTQ0MSw5ICs0NDEsNyBAQAogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGZwKToKICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX19vcHRpb25zCi0gICAgICAgIHRpbWVzdGFtcCA9IHRpbWUuc3RyZnRpbWUoJyVZLSVtLSVkICVIOiVNKyVaJykKLSAgICAgICAgIyBUaGUgdGltZSBzdGFtcCBpbiB0aGUgaGVhZGVyIGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBmb3JtYXQgYXMgdGhhdAotICAgICAgICAjIGdlbmVyYXRlZCBieSB4Z2V0dGV4dC4uLgorICAgICAgICB0aW1lc3RhbXAgPSB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTSV6JykKICAgICAgICAgZW5jb2RpbmcgPSBmcC5lbmNvZGluZyBpZiBmcC5lbmNvZGluZyBlbHNlICdVVEYtOCcKICAgICAgICAgcHJpbnQocG90X2hlYWRlciAlIHsndGltZSc6IHRpbWVzdGFtcCwgJ3ZlcnNpb24nOiBfX3ZlcnNpb25fXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhcnNldCc6IGVuY29kaW5nLApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL1JFQURNRS50eHQgYi9Ub29scy9tc2kvUkVBRE1FLnR4dAppbmRleCBkYzRhZTkwLi4yNWRjZjMyIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvUkVBRE1FLnR4dAorKysgYi9Ub29scy9tc2kvUkVBRE1FLnR4dApAQCAtMSwyNSArMSw0OTIgQEAKLVBhY2thZ2luZyBQeXRob24gYXMgYSBNaWNyb3NvZnQgSW5zdGFsbGVyIFBhY2thZ2UgKE1TSSkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1F1aWNrIEJ1aWxkIEluZm8KKz09PT09PT09PT09PT09PT0KIAotVXNpbmcgdGhpcyBsaWJyYXJ5LCBQeXRob24gY2FuIGJlIHBhY2thZ2VkIGFzIGEgTVMtV2luZG93cwotTVNJIGZpbGUuIFRvIGdlbmVyYXRlIGFuIGluc3RhbGxlciBwYWNrYWdlLCB5b3UgbmVlZAotYSBidWlsZCB0cmVlLiBCeSBkZWZhdWx0LCB0aGUgYnVpbGQgdHJlZSByb290IGRpcmVjdG9yeQotaXMgYXNzdW1lZCB0byBiZSBpbiAiLi4vLi4iLiBUaGlzIGxvY2F0aW9uIGNhbiBiZSBjaGFuZ2VkCi1ieSBhZGRpbmcgYSBmaWxlIGNvbmZpZy5weTsgc2VlIHRoZSBiZWdpbm5pbmcgb2YgbXNpLnB5Ci1mb3IgYWRkaXRpb25hbCBjdXN0b21pemF0aW9uIG9wdGlvbnMuCitGb3IgdGVzdGluZywgdGhlIGluc3RhbGxlciBzaG91bGQgYmUgYnVpbHQgd2l0aCB0aGUgVG9vbHMvbXNpL2J1aWxkLmJhdAorc2NyaXB0OgogCi1UaGUgcGFja2FnaW5nIHByb2Nlc3MgYXNzdW1lcyB0aGF0IGJpbmFyaWVzIGhhdmUgYmVlbiAKLWdlbmVyYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucyBpbiBQQ0J1aWxkL1JFQURNRS50eHQsCi1hbmQgdGhhdCB5b3UgaGF2ZSBlaXRoZXIgVmlzdWFsIFN0dWRpbyBvciB0aGUgUGxhdGZvcm0gU0RLCi1pbnN0YWxsZWQuIEluIGFkZGl0aW9uLCB5b3UgbmVlZCB0aGUgUHl0aG9uIENPTSBleHRlbnNpb25zLAotZWl0aGVyIGZyb20gUHl0aG9uV2luLCBvciBmcm9tIEFjdGl2ZVB5dGhvbi4KKyAgICBidWlsZC5iYXQgWy14ODZdIFsteDY0XSBbLS1kb2NdCiAKLVRvIGludm9rZSB0aGUgc2NyaXB0LCBvcGVuIGEgY21kLmV4ZSB3aW5kb3cgd2hpY2ggaGFzIAotY2FiYXJjLmV4ZSBpbiBpdHMgUEFUSCAoZS5nLiAiVmlzdWFsIFN0dWRpbyAuTkVUIDIwMDMKLUNvbW1hbmQgUHJvbXB0IikuIFRoZW4gaW52b2tlCitGb3IgYW4gb2ZmaWNpYWwgcmVsZWFzZSwgdGhlIGluc3RhbGxlciBzaG91bGQgYmUgYnVpbHQgd2l0aCB0aGUKK1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IHNjcmlwdCBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogCi08cGF0aC10by1weXRob24uZXhlPiBtc2kucHkKKyAgICBzZXQgUFlUSE9OPTxwYXRoIHRvIFB5dGhvbiAyLjcgb3IgMy40PgorICAgIHNldCBTUEhJTlhCVUlMRD08cGF0aCB0byBzcGhpbngtYnVpbGQuZXhlPgorICAgIHNldCBQQVRIPTxwYXRoIHRvIE1lcmN1cmlhbCAoaGcuZXhlKT47CisgICAgICAgICAgICAgPHBhdGggdG8gSFRNTCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKT47JVBBVEglCiAKLUlmIGV2ZXJ5dGhpbmcgc3VjY2VlZHMsIHB5dGhvblguWS5aLm1zaSBpcyBnZW5lcmF0ZWQKLWluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgICBidWlsZHJlbGVhc2UuYmF0IFsteDg2XSBbLXg2NF0gWy1EXSBbLUJdCisgICAgICAgIFstbyA8b3V0cHV0IGRpcmVjdG9yeT5dIFstYyA8Y2VydGlmaWNhdGUgbmFtZT5dCisKK1NlZSB0aGUgQnVpbGRpbmcgdGhlIEluc3RhbGxlciBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitPdmVydmlldworPT09PT09PT0KKworUHl0aG9uIGlzIGRpc3RyaWJ1dGVkIG9uIFdpbmRvd3MgYXMgYW4gaW5zdGFsbGVyIHRoYXQgd2lsbCBjb25maWd1cmUgdGhlCit1c2VyJ3Mgc3lzdGVtLiBUaGlzIGFsbG93cyB1c2VycyB0byBoYXZlIGEgZnVuY3Rpb25pbmcgY29weSBvZiBQeXRob24KK3dpdGhvdXQgaGF2aW5nIHRvIGJ1aWxkIGl0IHRoZW1zZWx2ZXMuCisKK1RoZSBtYWluIHRhc2tzIG9mIHRoZSBpbnN0YWxsZXIgYXJlOgorCisqIGNvcHkgcmVxdWlyZWQgZmlsZXMgaW50byB0aGUgZXhwZWN0ZWQgbGF5b3V0CisqIGNvbmZpZ3VyZSBzeXN0ZW0gc2V0dGluZ3Mgc28gdGhlIGluc3RhbGxhdGlvbiBjYW4gYmUgbG9jYXRlZCBieQorICBvdGhlciBwcm9ncmFtcworKiBhZGQgZW50cnkgcG9pbnRzIGZvciBtb2RpZnlpbmcsIHJlcGFpcmluZyBhbmQgdW5pbnN0YWxsaW5nIFB5dGhvbgorKiBtYWtlIGl0IGVhc3kgdG8gbGF1bmNoIFB5dGhvbiwgaXRzIGRvY3VtZW50YXRpb24sIGFuZCBJRExFCisKK0VhY2ggb2YgdGhlc2UgaXMgZGlzY3Vzc2VkIGluIGEgbGF0ZXIgc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50LgorCitTdHJ1Y3R1cmUgb2YgdGhlIEluc3RhbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGluc3RhbGxlciBpcyBzdHJ1Y3R1cmVkIGFzIGEgJ2xheW91dCcsIHdoaWNoIGNvbnNpc3RzIG9mIGEgbnVtYmVyIG9mCitDQUIgYW5kIE1TSSBmaWxlcyBhbmQgYSBzaW5nbGUgRVhFLgorCitUaGUgRVhFIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGludG8gdGhlIGluc3RhbGxlci4gSXQgY29udGFpbnMgdGhlIFVJCithbmQgY29tbWFuZC1saW5lIGxvZ2ljLCBhcyB3ZWxsIGFzIHRoZSBhYmlsaXR5IHRvIGxvY2F0ZSBhbmQgb3B0aW9uYWxseQorZG93bmxvYWQgb3RoZXIgcGFydHMgb2YgdGhlIGxheW91dC4KKworRWFjaCBNU0kgY29udGFpbnMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIGluc3RhbGwgYSBjb21wb25lbnQgb3IgZmVhdHVyZQorb2YgUHl0aG9uLiBUaGVzZSBNU0lzIHNob3VsZCBub3QgYmUgbGF1bmNoZWQgZGlyZWN0bHkgYnkgdXNlcnMuIE1TSXMgY2FuCitiZSBlbWJlZGRlZCBpbnRvIHRoZSBFWEUgb3IgYXV0b21hdGljYWxseSBkb3dubG9hZGVkIGFzIG5lZWRlZC4KKworRWFjaCBDQUIgY29udGFpbnMgdGhlIGZpbGVzIG1ha2luZyB1cCBhIFB5dGhvbiBpbnN0YWxsYXRpb24uIENBQnMgYXJlCitlbWJlZGRlZCBpbnRvIHRoZWlyIGFzc29jaWF0ZWQgTVNJIGFuZCBhcmUgbmV2ZXIgc2VlbiBieSB1c2Vycy4KKworTVNJcyBhcmUgb25seSByZXF1aXJlZCB3aGVuIHRoZSByZWxhdGVkIGZlYXR1cmUgb3IgY29tcG9uZW50IGlzIGJlaW5nCitpbnN0YWxsZWQuIFdoZW4gY29tcG9uZW50cyBhcmUgbm90IHNlbGVjdGVkIGZvciBpbnN0YWxsYXRpb24sIHRoZQorYXNzb2NpYXRlZCBNU0kgaXMgbm90IGRvd25sb2FkZWQuIFRoaXMgYWxsb3dzIHRoZSBpbnN0YWxsZXIgdG8gb2ZmZXIKK29wdGlvbnMgdG8gaW5zdGFsbCBkZWJ1Z2dpbmcgc3ltYm9scyBhbmQgYmluYXJpZXMgd2l0aG91dCBpbmNyZWFzaW5nCit0aGUgaW5pdGlhbCBkb3dubG9hZCBzaXplIGJ5IHNlcGFyYXRpbmcgdGhlbSBpbnRvIHRoZWlyIG93biBNU0lzLgorCitCdWlsZGluZyB0aGUgSW5zdGFsbGVyCis9PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciB0ZXN0aW5nLCB0aGUgaW5zdGFsbGVyIHNob3VsZCBiZSBidWlsdCB3aXRoIHRoZSBUb29scy9tc2kvYnVpbGQuYmF0CitzY3JpcHQ6CisKKyAgICBidWlsZC5iYXQgWy14ODZdIFsteDY0XSBbLS1kb2NdCisKK1RoaXMgc2NyaXB0IHdpbGwgYnVpbGQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIG9mIFB5dGhvbiBhbmQKK2dlbmVyYXRlIGFuIGluc3RhbGxlciBsYXlvdXQgaW4gUENCdWlsZC8od2luMzJ8YW1kNjQpL2VuLXVzLgorCitTcGVjaWZ5IC14ODYgYW5kL29yIC14NjQgdG8gYnVpbGQgZm9yIGVhY2ggcGxhdGZvcm0uIElmIG5laXRoZXIgaXMKK3NwZWNpZmllZCwgYm90aCBwbGF0Zm9ybXMgd2lsbCBiZSBidWlsdC4gQ3VycmVudGx5LCBib3RoIHRoZSBkZWJ1ZyBhbmQKK3JlbGVhc2UgdmVyc2lvbnMgb2YgUHl0aG9uIGFyZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxlci4KKworU3BlY2lmeSAtLWRvYyB0byBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbiAoLmNobSkgZmlsZS4gSWYgdGhlIGZpbGUgaXMgbm90CithdmFpbGFibGUsIGl0IHdpbGwgc2ltcGx5IGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGluc3RhbGxlci4gRW5zdXJlCislUFlUSE9OJSBhbmQgJVNQSElOWEJVSUxEJSBhcmUgc2V0IHdoZW4gcGFzc2luZyB0aGlzIG9wdGlvbi4gWW91IG1heQorYWxzbyBzZXQgJUhUTUxIRUxQJSB0byB0aGUgSHRtbCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKSwgb3IgcHV0IEhIQyBvbgoreW91ciBQQVRIIG9yIGluIGV4dGVybmFscy8uCisKK0lmIFdpWCBpcyBub3QgZm91bmQgb24geW91ciBzeXN0ZW0sIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBkb3dubG9hZGVkCithbmQgZXh0cmFjdGVkIHRvIHRoZSBleHRlcm5hbHMvIGRpcmVjdG9yeS4KKworCitGb3IgYW4gb2ZmaWNpYWwgcmVsZWFzZSwgdGhlIGluc3RhbGxlciBzaG91bGQgYmUgYnVpbHQgd2l0aCB0aGUKK1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IHNjcmlwdDoKKworICAgIHNldCBQWVRIT049PHBhdGggdG8gUHl0aG9uIDIuNyBvciAzLjQ+CisgICAgc2V0IFNQSElOWEJVSUxEPTxwYXRoIHRvIHNwaGlueC1idWlsZC5leGU+CisgICAgc2V0IFBBVEg9PHBhdGggdG8gTWVyY3VyaWFsIChoZy5leGUpPjsKKyAgICAgICAgICAgICA8cGF0aCB0byBIVE1MIEhlbHAgQ29tcGlsZXIgKGhoYy5leGUpPjslUEFUSCUKKworICAgIGJ1aWxkcmVsZWFzZS5iYXQgWy14ODZdIFsteDY0XSBbLURdIFstQl0KKyAgICAgICAgWy1vIDxvdXRwdXQgZGlyZWN0b3J5Pl0gWy1jIDxjZXJ0aWZpY2F0ZSBuYW1lPl0KKworU3BlY2lmeSAteDg2IGFuZC9vciAteDY0IHRvIGJ1aWxkIGZvciBlYWNoIHBsYXRmb3JtLiBJZiBuZWl0aGVyIGlzCitzcGVjaWZpZWQsIGJvdGggcGxhdGZvcm1zIHdpbGwgYmUgYnVpbHQuIEN1cnJlbnRseSwgYm90aCB0aGUgZGVidWcgYW5kCityZWxlYXNlIHZlcnNpb25zIG9mIFB5dGhvbiBhcmUgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsZXIuCisKK1NwZWNpZnkgLUQgdG8gc2tpcCByZWJ1aWxkaW5nIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgZG9jdW1lbnRhdGlvbiBpcworcmVxdWlyZWQgZm9yIGEgcmVsZWFzZSBhbmQgdGhlIGJ1aWxkIHdpbGwgZmFpbCBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLgorCitTcGVjaWZ5IC1CIHRvIHNraXAgcmVidWlsZGluZyBQeXRob24uIFRoaXMgaXMgdXNlZnVsIHRvIG9ubHkgcmVidWlsZCB0aGUKK2luc3RhbGxlciBsYXlvdXQgYWZ0ZXIgYSBwcmV2aW91cyBjYWxsIHRvIGJ1aWxkcmVsZWFzZS5iYXQuCisKK1NwZWNpZnkgLW8gdG8gc2V0IGFuIG91dHB1dCBkaXJlY3RvcnkuIFRoZSBpbnN0YWxsZXIgbGF5b3V0cyB3aWxsIGJlCitjb3BpZWQgdG8gcGxhdGZvcm0tc3BlY2lmaWMgc3ViZGlyZWN0b3JpZXMgb2YgdGhpcyBwYXRoLgorCitTcGVjaWZ5IC1jIHRvIGNob29zZSBhIGNvZGUtc2lnbmluZyBjZXJ0aWZpY2F0ZSB0byBiZSB1c2VkIGZvciBhbGwgdGhlCitzaWduYWJsZSBiaW5hcmllcyBpbiBQeXRob24gYXMgd2VsbCBhcyBlYWNoIGZpbGUgbWFraW5nIHVwIHRoZQoraW5zdGFsbGVyLiBPZmZpY2lhbCByZWxlYXNlcyBvZiBQeXRob24gbXVzdCBiZSBzaWduZWQuCisKK0Vuc3VyZSAlUFlUSE9OJSBhbmQgJVNQSElOWEJVSUxEJSBhcmUgc2V0IHdoZW4gcGFzc2luZyB0aGlzIG9wdGlvbi4gWW91CittYXkgYWxzbyBzZXQgJUhUTUxIRUxQJSB0byB0aGUgSHRtbCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKSwgb3IgcHV0IEhIQworb24geW91ciBQQVRIIG9yIGluIGV4dGVybmFscy8uIFlvdSB3aWxsIGFsc28gbmVlZCBNZXJjdXJpYWwgKGhnLmV4ZSkgb24KK3lvdXIgUEFUSC4KKworSWYgV2lYIGlzIG5vdCBmb3VuZCBvbiB5b3VyIHN5c3RlbSwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRvd25sb2FkZWQKK2FuZCBleHRyYWN0ZWQgdG8gdGhlIGV4dGVybmFscy8gZGlyZWN0b3J5LgorCitUbyBtYW51YWxseSBidWlsZCBsYXlvdXRzIG9mIHRoZSBpbnN0YWxsZXIsIGJ1aWxkIG9uZSBvZiB0aGUgcHJvamVjdHMgaW4KK3RoZSBidW5kbGUgZm9sZGVyLgorCisgICAgbXNidWlsZCBidW5kbGVcc25hcHNob3Qud2l4cHJvagorICAgIG1zYnVpbGQgYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvagorICAgIG1zYnVpbGQgYnVuZGxlXHJlbGVhc2Vsb2NhbC53aXhwcm9qCisgICAgbXNidWlsZCBidW5kbGVcZnVsbC53aXhwcm9qCisKK3NuYXBzaG90LndpeHByb2ogcHJvZHVjZXMgYSB0ZXN0IGluc3RhbGxlciB2ZXJzaW9uZWQgYmFzZWQgb24gdGhlIGRhdGUuCisKK3JlbGVhc2V3ZWIud2l4cHJvaiBwcm9kdWNlcyBhIHJlbGVhc2UgaW5zdGFsbGVyIHRoYXQgZG9lcyBub3QgZW1iZWQgYW55CitvZiB0aGUgbGF5b3V0LgorCityZWxlYXNlbG9jYWwud2l4cHJvaiBwcm9kdWNlcyBhIHJlbGVhc2UgaW5zdGFsbGVyIHRoYXQgZW1iZWRzIHRoZSBmaWxlcworcmVxdWlyZWQgZm9yIGEgZGVmYXVsdCBpbnN0YWxsYXRpb24uCisKK2Z1bGwud2l4cHJvaiBwcm9kdWNlcyBhIHRlc3QgaW5zdGFsbGVyIHRoYXQgZW1iZWRzIHRoZSBlbnRpcmUgbGF5b3V0LgorCitUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgbWF5IGJlIHBhc3NlZCB3aGVuIGJ1aWxkaW5nIHRoZXNlIHByb2plY3RzLgorCisgIC9wOkJ1aWxkRm9yUmVsZWFzZT0odHJ1ZXxmYWxzZSkKKyAgICBXaGVuIHRydWUsIGFkZHMgZXh0cmEgdmVyaWZpY2F0aW9uIHRvIGVuc3VyZSBhIGNvbXBsZXRlIGluc3RhbGxlciBpcworICAgIHByb2R1Y2VkLiBGb3IgZXhhbXBsZSwgYmludXRpbHMgaXMgcmVxdWlyZWQgd2hlbiBidWlsZGluZyBmb3IgYSByZWxlYXNlCisgICAgdG8gZ2VuZXJhdGUgTWluR1ctY29tcGF0aWJsZSBsaWJyYXJpZXMsIGFuZCB0aGUgYnVpbGQgd2lsbCBiZSBhYm9ydGVkIGlmCisgICAgdGhpcyBmYWlscy4gRGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgL3A6UmVsZWFzZVVyaT0oYW55IFVSSSkKKyAgICBVc2VkIHRvIGdlbmVyYXRlIHVuaXF1ZSBJRHMgZm9yIHRoZSBpbnN0YWxsZXJzIHRvIGFsbG93IHNpZGUtYnktc2lkZQorICAgIGluc3RhbGxhdGlvbi4gRm9ya3Mgb2YgUHl0aG9uIGNhbiB1c2UgdGhlIHNhbWUgaW5zdGFsbGVyIGluZnJhc3RydWN0dXJlCisgICAgYnkgcHJvdmlkaW5nIGEgdW5pcXVlIFVSSSBmb3IgdGhpcyBwcm9wZXJ0eS4gSXQgZG9lcyBub3QgbmVlZCB0byBiZSBhbgorICAgIGFjdGl2ZSBpbnRlcm5ldCBhZGRyZXNzLiBEZWZhdWx0cyB0byAkKENvbXB1dGVyTmFtZSkuCisKKyAgICBPZmZpY2lhbCByZWxlYXNlcyB1c2UgaHR0cDovL3d3dy5weXRob24ub3JnLyhhcmNoaXRlY3R1cmUgbmFtZSkKKworICAvcDpEb3dubG9hZFVybEJhc2U9KGFueSBVUkkpCisgICAgU3BlY2lmaWVzIHRoZSBiYXNlIG9mIGEgVVJMIHdoZXJlIG1pc3NpbmcgcGFydHMgb2YgdGhlIGluc3RhbGxlciBsYXlvdXQKKyAgICBjYW4gYmUgZG93bmxvYWRlZCBmcm9tLiBUaGUgYnVpbGQgdmVyc2lvbiBhbmQgYXJjaGl0ZWN0dXJlIHdpbGwgYmUKKyAgICBhcHBlbmRlZCB0byBjcmVhdGUgdGhlIGZ1bGwgYWRkcmVzcy4gSWYgb21pdHRlZCwgbWlzc2luZyBjb21wb25lbnRzIHdpbGwKKyAgICBub3QgYmUgYXV0b21hdGljYWxseSBkb3dubG9hZGVkLgorCisgIC9wOkRvd25sb2FkVXJsPShhbnkgVVJJKQorICAgIFNwZWNpZmllcyB0aGUgZnVsbCBVUkwgd2hlcmUgbWlzc2luZyBwYXJ0cyBvZiB0aGUgaW5zdGFsbGVyIGxheW91dCBjYW4KKyAgICBiZSBkb3dubG9hZGVkIGZyb20uIFNob3VsZCBub3JtYWxseSBpbmNsdWRlICd7Mn0nLCB3aGljaCB3aWxsIGJlCisgICAgc3Vic3RpdHV0ZWQgZm9yIHRoZSBmaWxlbmFtZS4gSWYgb21pdHRlZCwgbWlzc2luZyBjb21wb25lbnRzIHdpbGwgbm90IGJlCisgICAgYXV0b21hdGljYWxseSBkb3dubG9hZGVkLiBJZiBzcGVjaWZpZWQsIHRoaXMgdmFsdWUgb3ZlcnJpZGVzCisgICAgRG93bmxvYWRVcmxCYXNlLgorCisgIC9wOlNpZ25pbmdDZXJ0aWZpY2F0ZT0oY2VydGlmaWNhdGUgbmFtZSkKKyAgICBTcGVjaWZpZXMgdGhlIGNlcnRpZmljYXRlIHRvIHNpZ24gdGhlIGluc3RhbGxlciBsYXlvdXQgd2l0aC4gSWYgb21pdHRlZCwKKyAgICB0aGUgbGF5b3V0IHdpbGwgbm90IGJlIHNpZ25lZC4KKworICAvcDpSZWJ1aWxkQWxsPSh0cnVlfGZhbHNlKQorICAgIFdoZW4gdHJ1ZSwgcmVidWlsZHMgYWxsIG9mIHRoZSBNU0lzIG1ha2luZyB1cCB0aGUgbGF5b3V0LiBEZWZhdWx0cyB0bworICAgIHRydWUuCisKK01vZGlmeWluZyB0aGUgSW5zdGFsbGVyCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgY29kZSBmb3IgdGhlIGluc3RhbGxlciBpcyBkaXZpZGVkIGludG8gdGhyZWUgbWFpbiBncm91cHM6IHBhY2thZ2VzLAordGhlIGJ1bmRsZSBhbmQgdGhlIGJvb3RzdHJhcCBhcHBsaWNhdGlvbi4KKworUGFja2FnZXMKKy0tLS0tLS0tCisKK1BhY2thZ2VzIGFwcGVhciBhcyBzdWJkaXJlY3RvcmllcyBvZiBUb29scy9tc2kgKG90aGVyIHRoYW4gdGhlIGJ1bmRsZS8KK2RpcmVjdG9yeSkuIFRoZSBwcm9qZWN0IGZpbGUgaXMgYSAud2l4cHJvaiBhbmQgdGhlIGJ1aWxkIG91dHB1dCBpcyBhCitzaW5nbGUgTVNJLiBQYWNrYWdlcyBhcmUgYnVpbHQgd2l0aCB0aGUgV2lYIFRvb2xzZXQuIFNvbWUgcHJvamVjdCBmaWxlcworc2hhcmUgc291cmNlIGZpbGVzIGFuZCB1c2UgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgdG8gZW5hYmxlIHBhcnRpY3VsYXIKK2ZlYXR1cmVzLiBUaGVzZSBhcmUgdHlwaWNhbGx5IHVzZWQgdG8ga2VlcCB0aGUgc291cmNlcyBjbG9zZSB3aGVuIHRoZQorZmlsZXMgYXJlIHJlbGF0ZWQsIGJ1dCBwcm9kdWNlIG11bHRpcGxlIGluZGVwZW5kZW50IHBhY2thZ2VzLgorCitBIHBhY2thZ2UgaXMgdGhlIHNtYWxsZXN0IGVsZW1lbnQgdGhhdCBtYXkgYmUgaW5kZXBlbmRlbnRseSBpbnN0YWxsZWQgb3IKK3VuaW5zdGFsbGVkIChhcyB1c2VkIGluIHRoaXMgaW5zdGFsbGVyKS4gRm9yIGV4YW1wbGUsIHRoZSB0ZXN0IHN1aXRlIGhhcworaXRzIG93biBwYWNrYWdlLCBhcyB1c2VycyBjYW4gY2hvb3NlIHRvIGFkZCBvciByZW1vdmUgaXQgYWZ0ZXIgdGhlCitpbml0aWFsIGluc3RhbGxhdGlvbi4KKworQWxsIHRoZSBmaWxlcyBpbnN0YWxsZWQgYnkgYSBzaW5nbGUgcGFja2FnZSBzaG91bGQgYmUgcmVsYXRlZCwgdGhvdWdoCitzb21lIHBhY2thZ2VzIG1heSBub3QgaW5zdGFsbCBhbnkgZmlsZXMuIEZvciBleGFtcGxlLCB0aGUgcGlwIHBhY2thZ2UKK2V4ZWN1dGVzIHRoZSBlbnN1cmVwaXAgcGFja2FnZSwgYnV0IGRvZXMgbm90IGFkZCBvciByZW1vdmUgYW55IG9mIGl0cworb3duIGZpbGVzLiAoSXQgaXMgcmVwcmVzZW50ZWQgYXMgYSBwYWNrYWdlIGJlY2F1c2Ugb2YgaXRzCitpbnN0YWxsZWQvdW5pbnN0YWxsZWQgbmF0dXJlLCBhcyBvcHBvc2VkIHRvIHRoZSAicHJlY29tcGlsZSBzdGFuZGFyZAorbGlicmFyeSIgb3B0aW9uLCBmb3IgZXhhbXBsZS4pIERlcGVuZGVuY2llcyBiZXR3ZWVuIHBhY2thZ2VzIGFyZSBoYW5kbGVkCitieSB0aGUgYnVuZGxlLCBidXQgcGFja2FnZXMgc2hvdWxkIGRldGVjdCB3aGVuIGRlcGVuZGVuY2llcyBhcmUgbWlzc2luZworYW5kIHJhaXNlIGFuIGVycm9yLgorCitQYWNrYWdlcyB0aGF0IGluY2x1ZGUgYSBsb3Qgb2YgZmlsZXMgbWF5IHVzZSBhbiBJbnN0YWxsRmlsZXMgZWxlbWVudCBpbgordGhlIC53aXhwcm9qIGZpbGUgdG8gZ2VuZXJhdGUgc291cmNlcy4gU2VlIGxpYi9saWIud2l4cHJvaiBmb3IgYW4KK2V4YW1wbGUsIGFuZCBtc2kudGFyZ2V0cyBhbmQgY3N2X3RvX3d4cy5weSBmb3IgdGhlIGltcGxlbWVudGF0aW9uLiBUaGlzCitlbGVtZW50IGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGNvZGUgZm9yIGNsZWFuaW5nIHVwIGFuZAorcmVtb3ZpbmcgX19weWNhY2hlX18gZm9sZGVycyBpbiBhbnkgZGlyZWN0b3J5IGNvbnRhaW5pbmcgLnB5IGZpbGVzLgorCitBbGwgcGFja2FnZXMgYXJlIGJ1aWx0IHdpdGggdGhlIFRvb2xzL21zaS9jb21tb24ud3hzIGZpbGUsIGFuZCBzbyBhbnkKK2RpcmVjdG9yeSBvciBwcm9wZXJ0eSBpbiB0aGlzIGZpbGUgbWF5IGJlIHJlZmVyZW5jZWQuIE9mIHBhcnRpY3VsYXIKK2ludGVyZXN0OgorCisgIFJFR0lTVFJZS0VZIChwcm9wZXJ0eSkKKyAgICBUaGUgcmVnaXN0cnkga2V5IGZvciB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24uCisKKyAgSW5zdGFsbERpcmVjdG9yeSAoZGlyZWN0b3J5KQorICAgIFRoZSByb290IGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24uIFN1YmRpcmVjdG9yaWVzCisgICAgYXJlIGFsc28gc3BlY2lmaWVkIGluIHRoaXMgZmlsZSAoRExMcywgTGliLCBldGMuKQorCisgIE1lbnVEaXIgKGRpcmVjdG9yeSkKKyAgICBUaGUgU3RhcnQgTWVudSBmb2xkZXIgZm9yIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbi4KKworICBVcGdyYWRlVGFibGUgKHByb3BlcnR5KQorICAgIEV2ZXJ5IHBhY2thZ2Ugc2hvdWxkIHJlZmVyZW5jZSB0aGlzIHByb3BlcnR5IHRvIGluY2x1ZGUgdXBncmFkZQorICAgIGluZm9ybWF0aW9uLgorCisgIE9wdGlvbmFsRmVhdHVyZSAoQ29tcG9uZW50KQorICAgIFBhY2thZ2VzIHRoYXQgbWF5IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgc2hvdWxkIHJlZmVyZW5jZSB0aGlzIGNvbXBvbmVudAorICAgIGFuZCBoYXZlIGFuIE9QVElPTkFMX0ZFQVRVUkVTIGVudHJ5IGluIHRoZSBib290c3RyYXAgYXBwbGljYXRpb24gdG8KKyAgICBwcm9wZXJseSBoYW5kbGUgTW9kaWZ5IGFuZCBVcGdyYWRlLgorCitUaGUgLnd4bF90ZW1wbGF0ZSBmaWxlIGlzIHNwZWNpYWxseSBoYW5kbGVkIGJ5IHRoZSBidWlsZCBzeXN0ZW0gZm9yIHRoaXMKK3Byb2plY3QgdG8gcGVyZm9ybSB7e3N1YnN0aXR1dGlvbnN9fSBhcyBkZWZpbmVkIGluIG1zaS50YXJnZXRzLiBUaGV5CitzaG91bGQgYmUgaW5jbHVkZWQgaW4gcHJvamVjdHMgYXMgPFd4bFRlbXBsYXRlPiBpdGVtcywgd2hlcmUgLnd4bCBmaWxlcworYXJlIG5vcm1hbGx5IGluY2x1ZGVkIGFzIDxFbWJlZGRlZFJlc291cmNlPiBpdGVtcy4KKworQnVuZGxlCistLS0tLS0KKworVGhlIGJ1bmRsZSBpcyBjb21waWxlZCB0byB0aGUgbWFpbiBFWEUgZW50cnkgcG9pbnQgdGhhdCBmb3IgbW9zdCB1c2Vycword2lsbCByZXByZXNlbnQgdGhlIFB5dGhvbiBpbnN0YWxsZXIuIEl0IGlzIGJ1aWx0IGZyb20gVG9vbHMvbXNpL2J1bmRsZQord2l0aCBwYWNrYWdlcyByZWZlcmVuY2VzIGluIFRvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy4KKworQnVpbGQgbG9naWMgZm9yIHRoZSBidW5kbGUgaXMgaW4gYnVuZGxlLnRhcmdldHMsIGJ1dCBzaG91bGQgYmUgaW52b2tlZAordGhyb3VnaCBvbmUgb2YgdGhlIC53aXhwcm9qIGZpbGVzIGFzIGRlc2NyaWJlZCBpbiBCdWlsZGluZyB0aGUKK0luc3RhbGxlci4KKworVGhlIFVJIGlzIHNlcGFyYXRlZCBiZXR3ZWVuIERlZmF1bHQudGhtIChVSSBsYXlvdXQpLCBEZWZhdWx0Lnd4bAorKHN0cmluZ3MpLCBidW5kbGUud3hzIChwcm9wZXJ0aWVzKSBhbmQgdGhlIGJvb3RzdHJhcCBhcHBsaWNhdGlvbi4KK0J1bmRsZS53eHMgYWxzbyBjb250YWlucyB0aGUgY2hhaW4sIHdoaWNoIGlzIHRoZSBsaXN0IG9mIHBhY2thZ2VzIHRvCitpbnN0YWxsIGFuZCB0aGUgb3JkZXIgdGhleSBzaG91bGQgYmUgaW5zdGFsbGVkIGluLiBUaGVzZSByZWZlciB0byBuYW1lZAorcGFja2FnZSBncm91cHMgaW4gYnVuZGxlL3BhY2thZ2Vncm91cHMuCisKK0VhY2ggcGFja2FnZSBncm91cCBzcGVjaWZpZXMgb25lIG9yIG1vcmUgcGFja2FnZXMgdG8gaW5zdGFsbC4gTW9zdAorcGFja2FnZXMgcmVxdWlyZSB0d28gc2VwYXJhdGUgZW50cmllcyB0byBzdXBwb3J0IGJvdGggcGVyLXVzZXIgYW5kCithbGwtdXNlcnMgaW5zdGFsbGF0aW9ucy4gQmVjYXVzZSB0aGVzZSByZXVzZSB0aGUgc2FtZSBwYWNrYWdlLCBpdCBkb2VzCitub3QgaW5jcmVhc2UgdGhlIG92ZXJhbGwgc2l6ZSBvZiB0aGUgcGFja2FnZS4KKworUGFja2FnZSBncm91cHMgcmVmZXIgdG8gcGF5bG9hZCBncm91cHMsIHdoaWNoIGFsbG93IGJldHRlciBjb250cm9sIG92ZXIKK2VtYmVkZGluZyBhbmQgZG93bmxvYWRpbmcgZmlsZXMgdGhhbiB0aGUgZGVmYXVsdCBzZXR0aW5ncy4gV2hldGhlciBmaWxlcworYXJlIGVtYmVkZGVkIGFuZCB3aGVyZSB0aGV5IGFyZSBkb3dubG9hZGVkIGZyb20gZGVwZW5kcyBvbiBzZXR0aW5ncworY3JlYXRlZCBieSB0aGUgcHJvamVjdCBmaWxlcy4KKworUGFja2FnZSByZWZlcmVuY2VzIGNhbiBpbmNsdWRlIGluc3RhbGwgY29uZGl0aW9ucyB0aGF0IGRldGVybWluZSB3aGVuIHRvCitpbnN0YWxsIHRoZSBwYWNrYWdlLiBXaGVuIGEgcGFja2FnZSBpcyBhIGRlcGVuZGVuY3kgZm9yIG90aGVycywgdGhlCitjb25kaXRpb24gc2hvdWxkIGJlIGNyYWZ0ZWQgdG8gZW5zdXJlIGl0IGlzIGluc3RhbGxlZC4KKworTVNJIHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQgb3IgdW5pbnN0YWxsZWQgYmFzZWQgb24gdGhlaXIgY3VycmVudCBzdGF0ZQorYW5kIHRoZSBpbnN0YWxsIGNvbmRpdGlvbi4gVGhpcyBtYWtlcyB0aGVtIG1vc3Qgc3VpdGFibGUgZm9yIGZlYXR1cmVzCit0aGF0IGFyZSBjbGVhcmx5IHByZXNlbnQgb3IgYWJzZW50IGZyb20gdGhlIHVzZXIncyBtYWNoaW5lLgorCitFWEUgcGFja2FnZXMgYXJlIGV4ZWN1dGVkIGJhc2VkIG9uIGEgY3VzdG9taXNhYmxlIGNvbmRpdGlvbiB0aGF0IGNhbiBiZQorb21pdHRlZC4gVGhpcyBtYWtlcyB0aGVtIHN1aXRhYmxlIGZvciBwcmUtIG9yIHBvc3QtaW5zdGFsbCB0YXNrcyB0aGF0CituZWVkIHRvIHJ1biByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIHJlbW92ZWQuCisKK0Jvb3RzdHJhcCBBcHBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBib290c3RyYXAgYXBwbGljYXRpb24gaXMgYSBDKysgYXBwbGljYXRpb24gdGhhdCBjb250cm9scyB0aGUgVUkgYW5kCitpbnN0YWxsYXRpb24uIFdoaWxlIGl0IGRvZXMgbm90IGRpcmVjdGx5IGNvbXBpbGUgaW50byB0aGUgbWFpbiBFWEUgb2YKK3RoZSBpbnN0YWxsZXIsIGl0IGZvcm1zIHRoZSBtYWluIGFjdGl2ZSBjb21wb25lbnQuIE1vc3Qgb2YgdGhlCitpbnN0YWxsYXRpb24gZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSBXaVgsIGFuZCBzbyB0aGUgYm9vdHN0cmFwCithcHBsaWNhdGlvbiBpcyBwcmVkb21pbmFudGx5IHJlc3BvbnNpYmxlIGZvciB0aGUgY29kZSBiZWhpbmQgdGhlIFVJIHRoYXQKK2lzIGRlZmluZWQgaW4gdGhlIERlZmF1bHQudGhtIGZpbGUuIFRoZSBib290c3RyYXAgYXBwbGljYXRpb24gY29kZSBpcyBpbgorYnVuZGxlL2Jvb3RzdHJhcCBhbmQgaXMgYnVpbHQgYXV0b21hdGljYWxseSB3aGVuIGJ1aWxkaW5nIHRoZSBidW5kbGUuCisKK0luc3RhbGxhdGlvbiBMYXlvdXQKKz09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHR3byBpbnN0YWxsYXRpb24gbGF5b3V0cyBmb3IgUHl0aG9uIG9uIFdpbmRvd3MsIHdpdGggdGhlIG9ubHkKK2RpZmZlcmVuY2VzIGJlaW5nIHN1cHBvcnRpbmcgZmlsZXMuIEEgbGF5b3V0IGlzIHNlbGVjdGVkIGltcGxpY2l0bHkKK2Jhc2VkIG9uIHdoZXRoZXIgdGhlIGluc3RhbGwgaXMgZm9yIGFsbCB1c2VycyBvZiB0aGUgbWFjaGluZSBvciBqdXN0IGZvcgordGhlIHVzZXIgcGVyZm9ybWluZyB0aGUgaW5zdGFsbGF0aW9uLgorCitUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gbG9jYXRpb24gd2hlbiBpbnN0YWxsaW5nIGZvciBhbGwgdXNlcnMgaXMKKyIlUHJvZ3JhbUZpbGVzJVxQeXRob24gMy5YIiBmb3IgdGhlIDY0LWJpdCBpbnRlcnByZXRlciBhbmQKKyIlUHJvZ3JhbUZpbGVzKHg4NiklXFB5dGhvbiAzLlgiIGZvciB0aGUgMzItYml0IGludGVycHJldGVyLiAoTm90ZSB0aGF0Cit0aGUgbGF0dGVyIHBhdGggaXMgZXF1aXZhbGVudCB0byAiJVByb2dyYW1GaWxlcyVcUHl0aG9uIDMuWCIgd2hlbgorcnVubmluZyBhIDMyLWJpdCB2ZXJzaW9uIG9mIFdpbmRvd3MuKSBUaGlzIGxvY2F0aW9uIHJlcXVpcmVzCithZG1pbmlzdHJhdGl2ZSBwcml2aWxlZ2VzIHRvIGluc3RhbGwgb3IgbGF0ZXIgbW9kaWZ5IHRoZSBpbnN0YWxsYXRpb24uCisKK1RoZSBkZWZhdWx0IGluc3RhbGxhdGlvbiBsb2NhdGlvbiB3aGVuIGluc3RhbGxpbmcgZm9yIHRoZSBjdXJyZW50IHVzZXIKK2lzICIlTG9jYWxBcHBEYXRhJVxQcm9ncmFtc1xQeXRob25cUHl0aG9uM1giIGZvciB0aGUgNjQtYml0IGludGVycHJldGVyCithbmQgIiVMb2NhbEFwcERhdGElXFByb2dyYW1zXFB5dGhvblxQeXRob24zWC0zMiIgZm9yIHRoZSAzMi1iaXQKK2ludGVycHJldGVyLiBPbmx5IHRoZSBjdXJyZW50IHVzZXIgY2FuIGFjY2VzcyB0aGlzIGxvY2F0aW9uLiBUaGlzCitwcm92aWRlcyBhIHN1aXRhYmxlIGxldmVsIG9mIHByb3RlY3Rpb24gYWdhaW5zdCBtYWxpY2lvdXMgbW9kaWZpY2F0aW9uCitvZiBQeXRob24ncyBmaWxlcy4KKworV2l0aGluIHRoaXMgaW5zdGFsbCBkaXJlY3RvcnkgaXMgdGhlIGZvbGxvd2luZyBhcHByb3hpbWF0ZSBsYXlvdXQ6CisKKy5ccHl0aG9uW3ddLmV4ZSBUaGUgY29yZSBleGVjdXRhYmxlIGZpbGVzCisuXERMTHMgICAgICAgICAgU3RkbGliIGV4dGVuc2lvbnMgKCoucHlkKSBhbmQgZGVwZW5kZW5jaWVzCisuXERvYyAgICAgICAgICAgRG9jdW1lbnRhdGlvbiAoKi5jaG0pCisuXGluY2x1ZGUgICAgICAgRGV2ZWxvcG1lbnQgaGVhZGVycyAoKi5oKQorLlxMaWIgICAgICAgICAgIFN0YW5kYXJkIGxpYnJhcnkKKy5cTGliXHRlc3QgICAgICBUZXN0IHN1aXRlCisuXGxpYnMgICAgICAgICAgRGV2ZWxvcG1lbnQgbGlicmFyaWVzICgqLmxpYikKKy5cU2NyaXB0cyAgICAgICBMYXVuY2hlciBzY3JpcHRzICgqLmV4ZSwgKi5weSkKKy5cdGNsICAgICAgICAgICBUY2wgZGVwZW5kZW5jaWVzICgqLmRsbCwgKi50Y2wgYW5kIG90aGVycykKKy5cVG9vbHMgICAgICAgICBUb29sIHNjcmlwdHMgKCoucHkpCisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMsIHRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGluc3RhbGxlZCB0bworZWl0aGVyICIlU3lzdGVtUm9vdCVcU3lzdGVtMzIiIG9yICIlU3lzdGVtUm9vdCVcU3lzV09XNjQiIGFzCithcHByb3ByaWF0ZS4gRm9yIHRoZSBjdXJyZW50IHVzZXIsIHRoZXkgYXJlIGluc3RhbGxlZCBpbiB0aGUgUHl0aG9uCitpbnN0YWxsIGRpcmVjdG9yeS4KKworLlxweXRob24zeC5kbGwgICAgICBUaGUgY29yZSBpbnRlcnByZXRlcgorLlxweXRob24zLmRsbCAgICAgICBUaGUgc3RhYmxlIEFCSSByZWZlcmVuY2UKKworV2hlbiBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycywgdGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgaW5zdGFsbGVkIHRvCisiJVN5c3RlbVJvb3QlIiAodHlwaWNhbGx5ICJDOlxXaW5kb3dzIikgdG8gZW5zdXJlIHRoZXkgYXJlIGFsd2F5cworYXZhaWxhYmxlIG9uIFBBVEguIChTZWUgTGF1bmNoaW5nIFB5dGhvbiBiZWxvdy4pIEZvciB0aGUgY3VycmVudCB1c2VyLAordGhleSBhcmUgaW5zdGFsbGVkIGluICIlTG9jYWxBcHBEYXRhJVxQcm9ncmFtc1xQeXRob25cUHlMYXVuY2hlciIuCisKKy5ccHlbd10uZXhlICAgICAgICAgUEVQIDM5NyBsYXVuY2hlcgorCitTeXN0ZW0gU2V0dGluZ3MKKz09PT09PT09PT09PT09PQorCitPbiBpbnN0YWxsYXRpb24sIHJlZ2lzdHJ5IGtleXMgYXJlIGNyZWF0ZWQgc28gdGhhdCBvdGhlciBhcHBsaWNhdGlvbnMKK2NhbiBsb2NhdGUgYW5kIGlkZW50aWZ5IGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uLiBUaGUgbG9jYXRpb25zIG9mIHRoZXNlCitrZXlzIHZhcnkgYmFzZWQgb24gdGhlIGluc3RhbGwgdHlwZS4KKworRm9yIDY0LWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMsIHRoZSByb290IGtleSBpczoKKyAgICBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcMy5YCisKK0ZvciAzMi1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzIG9uIGEgNjQtYml0IG9wZXJhdGluZworc3lzdGVtLCB0aGUgcm9vdCBrZXkgaXM6CisgICAgSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFdvdzY0MzJOb2RlXFB5dGhvblxQeXRob25Db3JlXDMuWC0zMgorCitGb3IgMzItYml0IGludGVycHJldGVycyBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycyBvbiBhIDMyLWJpdCBvcGVyYXRpbmcKK3N5c3RlbSwgdGhlIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwzLlgtMzIKKworRm9yIDY0LWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciB0aGUgY3VycmVudCB1c2VyOgorICAgIEhLRVlfQ1VSUkVOVF9VU0VSXFNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXDMuWAorCitGb3IgMzItYml0IGludGVycHJldGVycyBpbnN0YWxsZWQgZm9yIHRoZSBjdXJyZW50IHVzZXI6CisgICAgSEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcMy5YLTMyCisKK1doZW4gdGhlIGNvcmUgUHl0aG9uIGV4ZWN1dGFibGVzIGFyZSBpbnN0YWxsZWQsIGEga2V5ICJJbnN0YWxsUGF0aCIgaXMKK2NyZWF0ZWQgd2l0aGluIHRoZSByb290IGtleSB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlIHNldCB0byB0aGUKK2V4ZWN1dGFibGUncyBpbnN0YWxsIGRpcmVjdG9yeS4gQSB2YWx1ZSBuYW1lZCAiRXhlY3V0YWJsZVBhdGgiIGlzIGFkZGVkCit3aXRoIHRoZSBmdWxsIHBhdGggdG8gdGhlIG1haW4gUHl0aG9uIGludGVycHJldGVyLCBhbmQgYSBrZXkKKyJJbnN0YWxsR3JvdXAiIGlzIGNyZWF0ZWQgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlIHByb2R1Y3QKK25hbWUgIlB5dGhvbiAzLlgiLgorCitXaGVuIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSBpcyBpbnN0YWxsZWQsIGEga2V5ICJQeXRob25QYXRoIiBpcworY3JlYXRlZCB3aXRoaW4gdGhlIHJvb3Qga2V5IHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBmdWxsIHBhdGgKK3RvIHRoZSBMaWIgZm9sZGVyIGZvbGxvd2VkIGJ5IHRoZSBwYXRoIHRvIHRoZSBETExzIGZvbGRlciwgc2VwYXJhdGVkIGJ5CithIHNlbWljb2xvbi4KKworV2hlbiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBpbnN0YWxsZWQsIGEga2V5ICJIZWxwIiBpcyBjcmVhdGVkIHdpdGhpbiB0aGUKK3Jvb3Qga2V5LCB3aXRoIGEgc3Via2V5ICJNYWluIFB5dGhvbiBEb2N1bWVudGF0aW9uIiB3aXRoIGl0cyBkZWZhdWx0Cit2YWx1ZSBzZXQgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgaW5zdGFsbGVkIENITSBmaWxlLgorCisKK1RoZSBweS5leGUgbGF1bmNoZXIgaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgYSByZWd1bGFyIFB5dGhvbiBpbnN0YWxsLAorYnV0IHVzaW5nIGEgc2VwYXJhdGUgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIGl0IHRvIG1vcmUgZWFzaWx5IHNwYW4KK3ZlcnNpb25zIG9mIFB5dGhvbi4gQXMgYSByZXN1bHQsIGl0IGhhcyBkaWZmZXJlbnQgcm9vdCBrZXlzIGZvciBpdHMKK3JlZ2lzdHJ5IGVudHJpZXM6CisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSA2NC1iaXQgb3BlcmF0aW5nIHN5c3RlbSwgdGhlCitsYXVuY2hlcidzIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxXb3c2NDMyTm9kZVxQeXRob25cTGF1bmNoZXIKKworV2hlbiBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycyBvbiBhIDMyLWJpdCBvcGVyYXRpbmcgc3lzdGVtLCB0aGUKK2xhdW5jaGVyJ3Mgcm9vdCBrZXkgaXM6CisgICAgSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFB5dGhvblxMYXVuY2hlcgorCitXaGVuIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlcjoKKyAgICBIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxQeXRob25cTGF1bmNoZXIKKworV2hlbiB0aGUgbGF1bmNoZXIgaXMgaW5zdGFsbGVkLCBhIGtleSAiSW5zdGFsbFBhdGgiIGlzIGNyZWF0ZWQgd2l0aGluCitpdHMgcm9vdCBrZXkgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlIGxhdW5jaGVyJ3MgaW5zdGFsbAorZGlyZWN0b3J5LiBGaWxlIGFzc29jaWF0aW9ucyBhcmUgYWxzbyBjcmVhdGVkIGZvciAucHksIC5weXcsIC5weWMgYW5kCisucHlvIGZpbGVzLgorCitMYXVuY2hpbmcgUHl0aG9uCis9PT09PT09PT09PT09PT09CisKK1doZW4gYSBmZWF0dXJlIG9mZmVyaW5nIHVzZXIgZW50cnkgcG9pbnRzIGluIHRoZSBTdGFydCBNZW51IGlzCitpbnN0YWxsZWQsIGEgZm9sZGVyICJQeXRob24gMy5YIiBpcyBjcmVhdGVkLiBFdmVyeSBzaG9ydGN1dCBzaG91bGQgYmUKK2NyZWF0ZWQgd2l0aGluIHRoaXMgZm9sZGVyLCBhbmQgZWFjaCBzaG9ydGN1dCBzaG91bGQgaW5jbHVkZSB0aGUgdmVyc2lvbgorYW5kIHBsYXRmb3JtIHRvIGFsbG93IHVzZXJzIHRvIGlkZW50aWZ5IHRoZSBzaG9ydGN1dCBpbiBhIHNlYXJjaCByZXN1bHRzCitwYWdlLgorCitUaGUgY29yZSBQeXRob24gZXhlY3V0YWJsZXMgY3JlYXRlcyBhIHNob3J0Y3V0ICJQeXRob24gMy5YICgzMi1iaXQpIiBvcgorIlB5dGhvbiAzLlggKDY0LWJpdCkiIGRlcGVuZGluZyBvbiB0aGUgaW50ZXJwcmV0ZXIuCisKK1RoZSBkb2N1bWVudGF0aW9uIGNyZWF0ZXMgYSBzaG9ydGN1dCAiUHl0aG9uIDMuWCAzMi1iaXQgTWFudWFscyIgb3IKKyJQeXRob24gMy5YIDY0LWJpdCBNYW51YWxzIi4gVGhlIGRvY3VtZW50YXRpb24gaXMgaWRlbnRpY2FsIGZvciBhbGwKK3BsYXRmb3JtcywgYnV0IHRoZSBzaG9ydGN1dHMgbmVlZCB0byBiZSBzZXBhcmF0ZSB0byBhdm9pZCB1bmluc3RhbGxhdGlvbgorY29uZmxpY3RzLgorCitJbnN0YWxsaW5nIElETEUgY3JlYXRlcyBhIHNob3J0Y3V0ICJJRExFIChQeXRob24gMy5YIDMyLWJpdCkiIG9yICJJRExFCisoUHl0aG9uIDMuWCA2NC1iaXQpIiBkZXBlbmRpbmcgb24gdGhlIGludGVycHJldGVyLgorCisKK0ZvciB1c2VycyB3aG8gb2Z0ZW4gbGF1bmNoIFB5dGhvbiBmcm9tIGEgQ29tbWFuZCBQcm9tcHQsIGFuIG9wdGlvbiBpcworcHJvdmlkZWQgdG8gYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBweXRob24uZXhlIHRvIHRoZSB1c2VyIG9yCitzeXN0ZW0gUEFUSCB2YXJpYWJsZS4gSWYgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5CithbmQgdGhlIFNjcmlwdHMgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzeXN0ZW0gUEFUSAorZm9yIGFuIGFsbCB1c2VycyBpbnN0YWxsIGFuZCB0aGUgdXNlciBQQVRIIGZvciBhIHBlci11c2VyIGluc3RhbGwuCisKK1doZW4gdGhlIHVzZXIgb25seSBoYXMgb25lIHZlcnNpb24gb2YgUHl0aG9uIGluc3RhbGxlZCwgdGhpcyB3aWxsIGJlaGF2ZQorYXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIGJlY2F1c2UgV2luZG93cyBzZWFyY2hlcyB0aGUgc3lzdGVtIFBBVEggYmVmb3JlCit0aGUgdXNlciBQQVRILCB1c2VycyBjYW5ub3Qgb3ZlcnJpZGUgYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gb2YKK1B5dGhvbiBvbiB0aGVpciBQQVRILiBGdXJ0aGVyLCBiZWNhdXNlIHRoZSBpbnN0YWxsZXIgY2FuIG9ubHkgcHJlcGVuZCB0bwordGhlIHBhdGgsIGxhdGVyIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIHdpbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIKK2VhcmxpZXIgaW5zdGFsbGF0aW9ucywgcmVnYXJkbGVzcyBvZiBpbnRlcnByZXRlciB2ZXJzaW9uLgorCitCZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHNlbnNpYmxlIFBBVEgKK2NvbmZpZ3VyYXRpb24sIHVzZXJzIGFyZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIHB5LmV4ZSBsYXVuY2hlciBhbmQKK21hbnVhbGx5IG1vZGlmeSB0aGVpciBQQVRIIHZhcmlhYmxlIHRvIGFkZCBTY3JpcHRzIGRpcmVjdG9yaWVzIGluIHRoZWlyCitwcmVmZXJyZWQgb3JkZXIuIFN5c3RlbS13aWRlIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIHNob3VsZCBjb25zaWRlciBub3QKK21vZGlmeWluZyBQQVRILCBvciB1c2luZyBhbiBhbHRlcm5hdGl2ZSB0ZWNobm9sb2d5IHRvIG1vZGlmeSB0aGVpcgordXNlcnMnIFBBVEggdmFyaWFibGVzLgorCisKK1RoZSBweS5leGUgbGF1bmNoZXIgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBpdCB1c2VzIGEgY29uc2lzdGVudCBhbmQKK3NlbnNpYmxlIHNlYXJjaCBvcmRlciBmb3IgUHl0aG9uIGluc3RhbGxhdGlvbnMuIFVzZXIgaW5zdGFsbGF0aW9ucyBhcmUKK3ByZWZlcnJlZCBvdmVyIHN5c3RlbS13aWRlIGluc3RhbGxzLCBhbmQgbGF0ZXIgdmVyc2lvbnMgYXJlIHByZWZlcnJlZAorcmVnYXJkbGVzcyBvZiBpbnN0YWxsYXRpb24gb3JkZXIgKHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHB5LmV4ZQorY3VycmVudGx5IHByZWZlcnMgMi54IHZlcnNpb25zIG92ZXIgMy54IHZlcnNpb25zIHdpdGhvdXQgdGhlIC0zIGNvbW1hbmQKK2xpbmUgYXJndW1lbnQpLgorCitGb3IgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlcnByZXRlcnMsIHRoZSAzMi1iaXQgdmVyc2lvbiBvZiB0aGUKK2xhdW5jaGVyIGlzIGluc3RhbGxlZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHNlYXJjaCBvcmRlciBpcyBhbHdheXMKK2NvbnNpc3RlbnQgKGFzIHRoZSA2NC1iaXQgbGF1bmNoZXIgaXMgc3VidGx5IGRpZmZlcmVudCBmcm9tIHRoZSAzMi1iaXQKK2xhdW5jaGVyKSBhbmQgYWxzbyBhdm9pZHMgdGhlIG5lZWQgdG8gaW5zdGFsbCBpdCBtdWx0aXBsZSB0aW1lcy4gRnV0dXJlCit2ZXJzaW9ucyBvZiBQeXRob24gd2lsbCB1cGdyYWRlIHRoZSBsYXVuY2hlciBpbi1wbGFjZSwgdXNpbmcgV2luZG93cworSW5zdGFsbGVyJ3MgdXBncmFkZSBmdW5jdGlvbmFsaXR5IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIGVhcmxpZXIKK2luc3RhbGxlZCB2ZXJzaW9ucy4KKworV2hlbiBpbnN0YWxsZWQsIGZpbGUgYXNzb2NpYXRpb25zIGFyZSBjcmVhdGVkIGZvciAucHksIC5weWMgYW5kIC5weW8KK2ZpbGVzIHRvIGxhdW5jaCB3aXRoIHB5LmV4ZSBhbmQgLnB5dyBmaWxlcyB0byBsYXVuY2ggd2l0aCBweXcuZXhlLiBUaGlzCittYWtlcyBQeXRob24gZmlsZXMgcmVzcGVjdCBzaGViYW5nIGxpbmVzIGJ5IGRlZmF1bHQgYW5kIGFsc28gYXZvaWRzCitjb25mbGljdHMgYmV0d2VlbiBtdWx0aXBsZSBQeXRob24gaW5zdGFsbGF0aW9ucy4KKworCitSZXBhaXIsIE1vZGlmeSBhbmQgVW5pbnN0YWxsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FmdGVyIGluc3RhbGxhdGlvbiwgUHl0aG9uIG1heSBiZSBtb2RpZmllZCwgcmVwYWlyZWQgb3IgdW5pbnN0YWxsZWQgYnkKK3J1bm5pbmcgdGhlIG9yaWdpbmFsIEVYRSBhZ2FpbiBvciB2aWEgdGhlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyBhcHBsZXQKKyhmb3JtZXJseSBrbm93biBhcyBBZGQgb3IgUmVtb3ZlIFByb2dyYW1zKS4KKworTW9kaWZpY2F0aW9ucyBhbGxvdyBmZWF0dXJlcyB0byBiZSBhZGRlZCBvciByZW1vdmVkLiBUaGUgaW5zdGFsbAorZGlyZWN0b3J5IGFuZCBraW5kIChhbGwgdXNlcnMvc2luZ2xlIHVzZXIpIGNhbm5vdCBiZSBtb2RpZmllZC4gQmVjYXVzZQorV2luZG93cyBJbnN0YWxsZXIgY2FjaGVzIGluc3RhbGxhdGlvbiBwYWNrYWdlcywgcmVtb3ZpbmcgZmVhdHVyZXMgd2lsbAorbm90IHJlcXVpcmUgaW50ZXJuZXQgYWNjZXNzIHVubGVzcyB0aGUgcGFja2FnZSBjYWNoZSBoYXMgYmVlbiBjb3JydXB0ZWQKK29yIGRlbGV0ZWQuIEFkZGluZyBmZWF0dXJlcyB0aGF0IHdlcmUgbm90IHByZXZpb3VzbHkgaW5zdGFsbGVkIGFuZCBhcmUKK25vdCBlbWJlZGRlZCBvciBvdGhlcndpc2UgYXZhaWxhYmxlIHdpbGwgcmVxdWlyZSBpbnRlcm5ldCBhY2Nlc3MuCisKK1JlcGFpcmluZyB3aWxsIHJlcnVuIHRoZSBpbnN0YWxsYXRpb24gZm9yIGFsbCBjdXJyZW50bHkgaW5zdGFsbGVkCitmZWF0dXJlcywgcmVzdG9yaW5nIGZpbGVzIGFuZCByZWdpc3RyeSBrZXlzIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkIG9yCityZW1vdmVkLiBUaGlzIG9wZXJhdGlvbiBnZW5lcmFsbHkgd2lsbCBub3QgcmVkb3dubG9hZCBhbnkgZmlsZXMgdW5sZXNzCit0aGUgY2FjaGVkIHBhY2thZ2VzIGhhdmUgYmVlbiBjb3JydXB0ZWQgb3IgZGVsZXRlZC4KKworUmVtb3ZpbmcgUHl0aG9uIHdpbGwgY2xlYW4gdXAgYWxsIHRoZSBmaWxlcyBhbmQgcmVnaXN0cnkga2V5cyB0aGF0IHdlcmUKK2NyZWF0ZWQgYnkgdGhlIGluc3RhbGxlciwgYXMgd2VsbCBhcyBfX3B5Y2FjaGVfXyBmb2xkZXJzIHRoYXQgYXJlCitleHBsaWNpdGx5IGhhbmRsZWQgYnkgdGhlIGluc3RhbGxlci4gUHl0aG9uIHBhY2thZ2VzIGluc3RhbGxlZCBsYXRlcgordXNpbmcgYSB0b29sIGxpa2UgcGlwIHdpbGwgbm90IGJlIHJlbW92ZWQuIFNvbWUgY29tcG9uZW50cyBtYXkgYmUKK2luc3RhbGxlZCBieSBvdGhlciBpbnN0YWxsZXJzIChzdWNoIGFzIHRoZSBNU1ZDUlQpIGFuZCB0aGVzZSB3aWxsIG5vdCBiZQorcmVtb3ZlZCBpZiBhbm90aGVyIHByb2R1Y3QgaGFzIGEgZGVwZW5kZW5jeSBvbiB0aGVtLgogCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVpbGQuYmF0IGIvVG9vbHMvbXNpL2J1aWxkLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjUzYTFiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1aWxkLmJhdApAQCAtMCwwICsxLDcwIEBACitAZWNobyBvZmYNCitzZXRsb2NhbA0KK3NldCBEPSV+ZHAwDQorc2V0IFBDQlVJTEQ9JUQlLi5cLi5cUENCdWlsZFwNCisNCitzZXQgQlVJTERYODY9DQorc2V0IEJVSUxEWDY0PQ0KK3NldCBCVUlMRERPQz0NCitzZXQgQlVJTERQWD0NCitzZXQgQlVJTERQQUNLPQ0KKw0KKzpDaGVja09wdHMNCitpZiAiJX4xIiBFUVUgIi1oIiBnb3RvIEhlbHANCitpZiAiJX4xIiBFUVUgIi14ODYiIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIiBFUVUgIi14NjQiIChzZXQgQlVJTERYNjQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIiBFUVUgIi0tZG9jIiAoc2V0IEJVSUxERE9DPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICItLXRlc3QtbWFya2VyIiAoc2V0IEJVSUxEUFg9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIiBFUVUgIi0tcGFjayIgKHNldCBCVUlMRFBBQ0s9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCisNCitpZiBub3QgZGVmaW5lZCBCVUlMRFg4NiBpZiBub3QgZGVmaW5lZCBCVUlMRFg2NCAoc2V0IEJVSUxEWDg2PTEpICYmIChzZXQgQlVJTERYNjQ9MSkNCisNCitjYWxsICIlUENCVUlMRCVlbnYuYmF0IiB4ODYNCisNCitpZiBkZWZpbmVkIEJVSUxEWDg2ICgNCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZCAtZQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorICAgIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCitpZiBkZWZpbmVkIEJVSUxEWDY0ICgNCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtcCB4NjQgLWQgLWUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1wIHg2NCAtZQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorKQ0KKw0KK2lmIGRlZmluZWQgQlVJTERET0MgKA0KKyAgICBjYWxsICIlUENCVUlMRCUuLlxEb2NcbWFrZS5iYXQiIGh0bWxoZWxwDQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCispDQorDQorc2V0IEJVSUxEX0NNRD0iJUQlYnVuZGxlXHNuYXBzaG90LndpeHByb2oiDQoraWYgZGVmaW5lZCBCVUlMRFBYICgNCisgICAgc2V0IEJVSUxEX0NNRD0lQlVJTERfQ01EJSAvcDpVc2VUZXN0TWFya2VyPXRydWUNCispDQoraWYgZGVmaW5lZCBCVUlMRFBBQ0sgKA0KKyAgICBzZXQgQlVJTERfQ01EPSVCVUlMRF9DTUQlIC9wOlBhY2s9dHJ1ZQ0KKykNCisNCitpZiBkZWZpbmVkIEJVSUxEWDg2ICgNCisgICAgIiVQQ0JVSUxEJXdpbjMyXHB5dGhvbi5leGUiICIlRCVnZXRfd2l4LnB5Ig0KKyAgICBtc2J1aWxkICVCVUlMRF9DTUQlDQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCispDQoraWYgZGVmaW5lZCBCVUlMRFg2NCAoDQorICAgICIlUENCVUlMRCVhbWQ2NFxweXRob24uZXhlIiAiJUQlZ2V0X3dpeC5weSINCisgICAgbXNidWlsZCAvcDpQbGF0Zm9ybT14NjQgJUJVSUxEX0NNRCUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCisNCitleGl0IC9CIDANCisNCis6SGVscA0KK2VjaG8gYnVpbGQuYmF0IFsteDg2XSBbLXg2NF0gWy0tZG9jXSBbLWhdIFstLXRlc3QtbWFya2VyXSBbLS1wYWNrXQ0KK2VjaG8uDQorZWNobyAgICAteDg2ICAgICAgICAgICAgICAgIEJ1aWxkIHg4NiBpbnN0YWxsZXJzDQorZWNobyAgICAteDY0ICAgICAgICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLWRvYyAgICAgICAgICAgICAgIEJ1aWxkIENITSBkb2N1bWVudGF0aW9uDQorZWNobyAgICAtLXRlc3QtbWFya2VyICAgICAgIEJ1aWxkIGluc3RhbGxlcnMgd2l0aCAneCcgbWFya2Vycw0KK2VjaG8gICAgLS1wYWNrICAgICAgICAgICAgICBFbWJlZCBjb3JlIE1TSXMgaW50byBpbnN0YWxsZXINCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBiL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMmJhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApAQCAtMCwwICsxLDE2NiBAQAorQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorDQorcmVtIFRoaXMgc2NyaXB0IGlzIGludGVuZGVkIGZvciBidWlsZGluZyBvZmZpY2lhbCByZWxlYXNlcyBvZiBQeXRob24uDQorcmVtIFRvIHVzZSBpdCB0byBidWlsZCBhbHRlcm5hdGl2ZSByZWxlYXNlcywgeW91IHNob3VsZCBjbG9uZSB0aGlzIGZpbGUNCityZW0gYW5kIG1vZGlmeSB0aGUgZm9sbG93aW5nIHRocmVlIFVSSXMuDQorcmVtDQorcmVtIFRoZSBmaXJzdCB0d28gd2lsbCBlbnN1cmUgdGhhdCB5b3VyIHJlbGVhc2UgY2FuIGJlIGluc3RhbGxlZA0KK3JlbSBhbG9uZ3NpZGUgYW4gb2ZmaWNpYWwgUHl0aG9uIHJlbGVhc2UsIHdoaWxlIHRoZSBzZWNvbmQgc3BlY2lmaWVzDQorcmVtIHRoZSBVUkwgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZG93bmxvYWQgaW5zdGFsbGF0aW9uIGZpbGVzLiBUaGUNCityZW0gZmlsZXMgYXZhaWxhYmxlIGZyb20gdGhpcyBVUkwgKndpbGwqIGNvbmZsaWN0IHdpdGggeW91ciBpbnN0YWxsZXIuDQorcmVtIFRydXN0IG1lLCB5b3UgZG9uJ3Qgd2FudCB0aGVtLCBldmVuIGlmIGl0IHNlZW1zIGxpa2UgYSBnb29kIGlkZWEuDQorDQorc2V0IFJFTEVBU0VfVVJJX1g4Nj1odHRwOi8vd3d3LnB5dGhvbi5vcmcvd2luMzINCitzZXQgUkVMRUFTRV9VUklfWDY0PWh0dHA6Ly93d3cucHl0aG9uLm9yZy9hbWQ2NA0KK3NldCBET1dOTE9BRF9VUkxfQkFTRT1odHRwczovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24NCitzZXQgRE9XTkxPQURfVVJMPQ0KKw0KK3NldCBEPSV+ZHAwDQorc2V0IFBDQlVJTEQ9JUQlLi5cLi5cUENCdWlsZFwNCisNCitzZXQgQlVJTERYODY9DQorc2V0IEJVSUxEWDY0PQ0KK3NldCBUQVJHRVQ9UmVidWlsZA0KK3NldCBURVNUVEFSR0VURElSPQ0KKw0KKw0KKzpDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWgiIGdvdG8gSGVscA0KK2lmICIlMSIgRVFVICItYyIgKHNldCBDRVJUTkFNRT0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tY2VydGlmaWNhdGUiIChzZXQgQ0VSVE5BTUU9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItbyIgKHNldCBPVVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLW91dCIgKHNldCBPVVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItRCIgKHNldCBTS0lQRE9DPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tc2tpcC1kb2MiIChzZXQgU0tJUERPQz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItQiIgKHNldCBTS0lQQlVJTEQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1za2lwLWJ1aWxkIiAoc2V0IFNLSVBCVUlMRD0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWRvd25sb2FkIiAoc2V0IERPV05MT0FEX1VSTD0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tdGVzdCIgKHNldCBURVNUVEFSR0VURElSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWIiIChzZXQgVEFSR0VUPUJ1aWxkKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWJ1aWxkIiAoc2V0IFRBUkdFVD1CdWlsZCkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXg4NiIgKHNldCBCVUlMRFg4Nj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgQlVJTERYODYgaWYgbm90IGRlZmluZWQgQlVJTERYNjQgKHNldCBCVUlMRFg4Nj0xKSAmJiAoc2V0IEJVSUxEWDY0PTEpDQorDQorOmJ1aWxkZG9jDQoraWYgIiVTS0lQQlVJTEQlIiBFUVUgIjEiIGdvdG8gc2tpcGRvYw0KK2lmICIlU0tJUERPQyUiIEVRVSAiMSIgZ290byBza2lwZG9jDQorDQoraWYgbm90IGRlZmluZWQgUFlUSE9OIHdoZXJlIHB5IC1xIHx8IGVjaG8gQ2Fubm90IGZpbmQgcHkgb24gcGF0aCBhbmQgUFlUSE9OIGlzIG5vdCBzZXQuICYmIGV4aXQgL0IgMQ0KK2lmIG5vdCBkZWZpbmVkIFNQSElOWEJVSUxEIHdoZXJlIHNwaGlueC1idWlsZCAtcSB8fCBlY2hvIENhbm5vdCBmaW5kIHNwaGlueC1idWlsZCBvbiBwYXRoIGFuZCBTUEhJTlhCVUlMRCBpcyBub3Qgc2V0LiAmJiBleGl0IC9CIDENCitjYWxsICIlRCUuLlwuLlxkb2NcbWFrZS5iYXQiIGh0bWxoZWxwDQoraWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKzpza2lwZG9jDQorDQord2hlcmUgaGcgL3EgfHwgZWNobyBDYW5ub3QgZmluZCBNZXJjdXJpYWwgb24gUEFUSCAmJiBleGl0IC9CIDENCisNCit3aGVyZSBkbGx0b29sIC9xICYmIGdvdG8gc2tpcGRsbHRvb2xzZWFyY2gNCitzZXQgX0RMTFRPT0xfUEFUSD0NCit3aGVyZSAvUiAiJUQlLi5cLi5cZXh0ZXJuYWxzIiBkbGx0b29sID4gIiVURU1QJVxkbGx0b29sLmxvYyIgMj4gbnVsICYmIHNldCAvUCBfRExMVE9PTF9QQVRIPSA8ICIlVEVNUCVcZGxsdG9vbC5sb2MiICYgZGVsICIlVEVNUCVcZGxsdG9vbC5sb2MiIA0KK2lmIG5vdCBleGlzdCAiJV9ETExUT09MX1BBVEglIiBlY2hvIENhbm5vdCBmaW5kIGJpbnV0aWxzIG9uIFBBVEggb3IgaW4gZXh0ZXJuYWwgJiYgZXhpdCAvQiAxDQorZm9yICUlZiBpbiAoJV9ETExUT09MX1BBVEglKSBkbyBzZXQgUEFUSD0lUEFUSCU7JSV+ZHBmDQorc2V0IF9ETExUT09MX1BBVEg9DQorOnNraXBkbGx0b29sc2VhcmNoDQorDQoraWYgZGVmaW5lZCBCVUlMRFg4NiAoDQorICAgIGNhbGwgOmJ1aWxkIHg4Ng0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitpZiBkZWZpbmVkIEJVSUxEWDY0ICgNCisgICAgY2FsbCA6YnVpbGQgeDY0DQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKQ0KKw0KK2lmIGRlZmluZWQgVEVTVFRBUkdFVERJUiAoDQorICAgIGNhbGwgIiVEJXRlc3RyZWxlYXNlLmJhdCIgLXQgIiVURVNUVEFSR0VURElSJSINCispDQorDQorZXhpdCAvQiAwDQorDQorOmJ1aWxkDQorQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorDQoraWYgIiUxIiBFUVUgIng4NiIgKA0KKyAgICBjYWxsICIlUENCVUlMRCVlbnYuYmF0IiB4ODYNCisgICAgc2V0IEJVSUxEPSVQQ0JVSUxEJXdpbjMyXA0KKyAgICBzZXQgQlVJTERfUExBVD1XaW4zMg0KKyAgICBzZXQgT1VURElSX1BMQVQ9d2luMzINCisgICAgc2V0IE9CSkRJUl9QTEFUPXg4Ng0KKyAgICBzZXQgUkVMRUFTRV9VUkk9JVJFTEVBU0VfVVJJX1g4NiUNCispIEVMU0UgKA0KKyAgICBjYWxsICIlUENCVUlMRCVlbnYuYmF0IiB4ODZfYW1kNjQNCisgICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0XA0KKyAgICBzZXQgQlVJTERfUExBVD14NjQNCisgICAgc2V0IE9VVERJUl9QTEFUPWFtZDY0DQorICAgIHNldCBPQkpESVJfUExBVD14NjQNCisgICAgc2V0IFJFTEVBU0VfVVJJPSVSRUxFQVNFX1VSSV9YNjQlDQorKQ0KKw0KK2lmIGV4aXN0ICIlQlVJTEQlZW4tdXMiICgNCisgICAgZWNobyBEZWxldGluZyAlQlVJTEQlZW4tdXMNCisgICAgcm1kaXIgL3EvcyAiJUJVSUxEJWVuLXVzIg0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitpZiBleGlzdCAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSIgKA0KKyAgICBlY2hvIERlbGV0aW5nICIlRCVvYmpcUmVsZWFzZV8lT0JKRElSX1BMQVQlIg0KKyAgICBybWRpciAvcS9zICIlRCVvYmpcUmVsZWFzZV8lT0JKRElSX1BMQVQlIg0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitpZiBub3QgIiVDRVJUTkFNRSUiIEVRVSAiIiAoDQorICAgIHNldCBDRVJUT1BUUz0iL3A6U2lnbmluZ0NlcnRpZmljYXRlPSVDRVJUTkFNRSUiDQorKSBlbHNlICgNCisgICAgc2V0IENFUlRPUFRTPQ0KKykNCisNCitpZiBub3QgIiVTS0lQQlVJTEQlIiBFUVUgIjEiICgNCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLWQgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1wICVCVUlMRF9QTEFUJSAtdCAlVEFSR0VUJSAlQ0VSVE9QVFMlDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgIEByZW0gYnVpbGQuYmF0IHR1cm5zIGVjaG8gYmFjayBvbiwgc28gd2UgZGlzYWJsZSBpdCBhZ2Fpbg0KKyAgICBAZWNobyBvZmYNCispDQorDQorIiVCVUlMRCVweXRob24uZXhlIiAiJUQlZ2V0X3dpeC5weSINCisNCitzZXQgQlVJTERPUFRTPS9wOlBsYXRmb3JtPSUxIC9wOkJ1aWxkRm9yUmVsZWFzZT10cnVlIC9wOkRvd25sb2FkVXJsPSVET1dOTE9BRF9VUkwlIC9wOkRvd25sb2FkVXJsQmFzZT0lRE9XTkxPQURfVVJMX0JBU0UlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KK2lmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCitpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKw0KK21zYnVpbGQgIiVEJW1ha2VfemlwLnByb2oiIC90OkJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUNCisNCitpZiBub3QgIiVPVVRESVIlIiBFUVUgIiIgKA0KKyAgICBta2RpciAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCouY2FiIiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCouZXhlIiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCoubXNpIiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCisgICAgY29weSAvWSAiJUJVSUxEJWVuLXVzXCoubXN1IiAiJU9VVERJUiVcJU9VVERJUl9QTEFUJSINCispDQorDQorZXhpdCAvQiAwDQorDQorOkhlbHANCitlY2hvIGJ1aWxkcmVsZWFzZS5iYXQgWy0tb3V0IERJUl0gWy14ODZdIFsteDY0XSBbLS1jZXJ0aWZpY2F0ZSBDRVJUTkFNRV0gWy0tYnVpbGRdIFstLXNraXAtYnVpbGRdDQorZWNobyAgICAgICAgICAgICAgICAgIFstLXNraXAtZG9jXSBbLS1kb3dubG9hZCBET1dOTE9BRCBVUkxdIFstLXRlc3QgVEFSR0VURElSXSBbLWhdDQorZWNoby4NCitlY2hvICAgIC0tb3V0ICgtbykgICAgICAgICAgU3BlY2lmeSBhbiBhZGRpdGlvbmFsIG91dHB1dCBkaXJlY3RvcnkgZm9yIGluc3RhbGxlcnMNCitlY2hvICAgIC14ODYgICAgICAgICAgICAgICAgQnVpbGQgeDg2IGluc3RhbGxlcnMNCitlY2hvICAgIC14NjQgICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMNCitlY2hvICAgIC0tYnVpbGQgKC1iKSAgICAgICAgSW5jcmVtZW50YWxseSBidWlsZCBQeXRob24gcmF0aGVyIHRoYW4gcmVidWlsZGluZw0KK2VjaG8gICAgLS1za2lwLWJ1aWxkICgtQikgICBEbyBub3QgYnVpbGQgUHl0aG9uIChqdXN0IGRvIHRoZSBpbnN0YWxsZXJzKQ0KK2VjaG8gICAgLS1za2lwLWRvYyAoLUQpICAgICBEbyBub3QgYnVpbGQgZG9jdW1lbnRhdGlvbg0KK2VjaG8gICAgLS1kb3dubG9hZCAgICAgICAgICBTcGVjaWZ5IHRoZSBmdWxsIGRvd25sb2FkIFVSTCBmb3IgTVNJcyAoc2hvdWxkIGluY2x1ZGUgezJ9KQ0KK2VjaG8gICAgLS10ZXN0ICAgICAgICAgICAgICBTcGVjaWZ5IHRoZSB0ZXN0IGRpcmVjdG9yeSB0byBydW4gdGhlIGluc3RhbGxlciB0ZXN0cw0KK2VjaG8gICAgLWggICAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBpbmZvcm1hdGlvbg0KK2VjaG8uDQorZWNobyBJZiBubyBhcmNoaXRlY3R1cmUgaXMgc3BlY2lmaWVkLCBhbGwgYXJjaGl0ZWN0dXJlcyB3aWxsIGJlIGJ1aWx0Lg0KK2VjaG8gSWYgLS10ZXN0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBpbnN0YWxsZXIgdGVzdHMgYXJlIG5vdCBydW4uDQorZWNoby4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTc1YTk4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQpAQCAtMCwwICsxLDEzNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxUaGVtZSB4bWxucz0iaHR0cDovL3dpeHRvb2xzZXQub3JnL3NjaGVtYXMvdGhtdXRpbC8yMDEwIj4KKyAgICA8V2luZG93IFdpZHRoPSI2NzAiIEhlaWdodD0iNDEyIiBIZXhTdHlsZT0iMTAwYTAwMDAiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FwdGlvbik8L1dpbmRvdz4KKyAgICA8Rm9udCBJZD0iMCIgSGVpZ2h0PSItMTQiIFdlaWdodD0iNTAwIiBGb3JlZ3JvdW5kPSIwMDAwMDAiIEJhY2tncm91bmQ9ImZmZmZmZiI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjEiIEhlaWdodD0iLTI2IiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSIyIiBIZWlnaHQ9Ii0yNCIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9IjgwODA4MCIgQmFja2dyb3VuZD0iZmZmZmZmIj5TZWdvZSBVSTwvRm9udD4KKyAgICA8Rm9udCBJZD0iMyIgSGVpZ2h0PSItMTQiIFdlaWdodD0iNTAwIiBGb3JlZ3JvdW5kPSIwMDAwMDAiIEJhY2tncm91bmQ9ImZmZmZmZiI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjQiIEhlaWdodD0iLTE0IiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iZmYwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiIFVuZGVybGluZT0ieWVzIj5TZWdvZSBVSTwvRm9udD4KKyAgICA8Rm9udCBJZD0iNSIgSGVpZ2h0PSItMTQiIFdlaWdodD0iNTAwIiBGb3JlZ3JvdW5kPSI4MDgwODAiIEJhY2tncm91bmQ9ImZmZmZmZiI+U2Vnb2UgVUk8L0ZvbnQ+CisKKyAgICA8UGFnZSBOYW1lPSJIZWxwIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkhlbHBIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8SHlwZXJ0ZXh0IFg9IjE4NSIgWT0iNTAiIFdpZHRoPSItMTEiIEhlaWdodD0iLTM1IiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuSGVscFRleHQpPC9IeXBlcnRleHQ+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJJbnN0YWxsIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkluc3RhbGxIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjUwIiBGb250SWQ9IjMiIFRhYlN0b3A9InllcyI+Iyhsb2MuSW5zdGFsbE1lc3NhZ2UpPC9UZXh0PgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbEJ1dHRvbiIgWD0iMTg1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMTA5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSI+Iyhsb2MuSW5zdGFsbEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsQ3VzdG9tQnV0dG9uIiBYPSIxODUiIFk9IjIyMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLkluc3RhbGxDdXN0b21CdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPENoZWNrYm94IE5hbWU9IlByZXBlbmRQYXRoIiBYPSIxODUiIFk9Ii0xMyIgV2lkdGg9Ii0xMDAiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIj4jKGxvYy5TaG9ydFByZXBlbmRQYXRoTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBYPSIxODUiIFk9Ii0zNyIgV2lkdGg9Ii0xMDAiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlNob3J0SW5zdGFsbExhdW5jaGVyQWxsVXNlcnNMYWJlbCk8L0NoZWNrYm94PgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbENhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iVXBncmFkZSI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5JbnN0YWxsVXBncmFkZUhlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iNTAiIFdpZHRoPSItMTEiIEhlaWdodD0iNTAiIEZvbnRJZD0iMyIgVGFiU3RvcD0ieWVzIj4jKGxvYy5JbnN0YWxsVXBncmFkZU1lc3NhZ2UpPC9UZXh0PgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbFVwZ3JhZGVCdXR0b24iIFg9IjE4NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjEyOSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLkluc3RhbGxVcGdyYWRlQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxVcGdyYWRlQ3VzdG9tQnV0dG9uIiBYPSIxODUiIFk9IjI0MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLkluc3RhbGxVcGdyYWRlQ3VzdG9tQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbENhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iU2ltcGxlSW5zdGFsbCI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5JbnN0YWxsSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsU2ltcGxlQnV0dG9uIiBYPSIxODUiIFk9IjEwMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIxMjkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIEhleFN0eWxlPSIweEYiPiMobG9jLkluc3RhbGxTaW1wbGVCdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJDdXN0b20xIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkN1c3RvbTFIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKyAgICAgICAgCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbmNsdWRlX2RvYyIgWD0iMTg1IiBZPSI1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5jbHVkZV9kb2NMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9Ijc2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJubyIgRm9udElkPSI1Ij4jKGxvYy5JbmNsdWRlX2RvY0hlbHBMYWJlbCk8L1RleHQ+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9waXAiIFg9IjE4NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX3BpcExhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxUZXh0IFg9IjIwNSIgWT0iMTI2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJubyIgRm9udElkPSI1Ij4jKGxvYy5JbmNsdWRlX3BpcEhlbHBMYWJlbCk8L1RleHQ+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV90Y2x0ayIgWD0iMTg1IiBZPSIxNTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkluY2x1ZGVfdGNsdGtMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjE3NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV90Y2x0a0hlbHBMYWJlbCk8L1RleHQ+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV90ZXN0IiBYPSIxODUiIFk9IjIwMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5jbHVkZV90ZXN0TGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPFRleHQgWD0iMjA1IiBZPSIyMjYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9Im5vIiBGb250SWQ9IjUiPiMobG9jLkluY2x1ZGVfdGVzdEhlbHBMYWJlbCk8L1RleHQ+CisKKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkluY2x1ZGVfbGF1bmNoZXIiIFg9IjE4NSIgWT0iMjUxIiBXaWR0aD0iMTAwIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX2xhdW5jaGVyTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkN1c3RvbUluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBYPSIyODUiIFk9IjI1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjI3NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV9sYXVuY2hlckhlbHBMYWJlbCk8L1RleHQ+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b20xQmFja0J1dHRvbiIgWD0iMTg1IiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkN1c3RvbUJhY2tCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iQ3VzdG9tTmV4dEJ1dHRvbiIgWD0iLTEwMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DdXN0b21OZXh0QnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IkN1c3RvbTFDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9IkN1c3RvbTIiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuQ3VzdG9tMkhlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorICAgICAgICAKKyAgICAgICAgPENoZWNrYm94IE5hbWU9Ikluc3RhbGxBbGxVc2VycyIgWD0iMTg1IiBZPSI1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5JbnN0YWxsQWxsVXNlcnNMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iQXNzb2NpYXRlRmlsZXMiIFg9IjE4NSIgWT0iNzYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuQXNzb2NpYXRlRmlsZXNMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iU2hvcnRjdXRzIiBYPSIxODUiIFk9IjEwMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5TaG9ydGN1dHNMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iUHJlcGVuZFBhdGgiIFg9IjE4NSIgWT0iMTI2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLlByZXBlbmRQYXRoTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkNvbXBpbGVBbGwiIFg9IjE4NSIgWT0iMTUxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ibm8iPiMobG9jLlByZWNvbXBpbGVMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9zeW1ib2xzIiBYPSIxODUiIFk9IjE3NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyNCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9Im5vIj4jKGxvYy5JbmNsdWRlX3N5bWJvbHNMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9kZWJ1ZyIgWD0iMTg1IiBZPSIyMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjQiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJubyI+Iyhsb2MuSW5jbHVkZV9kZWJ1Z0xhYmVsKTwvQ2hlY2tib3g+CisKKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIyNTYiIFdpZHRoPSItMTEiIEhlaWdodD0iMTciIEZvbnRJZD0iMyI+Iyhsb2MuQ3VzdG9tTG9jYXRpb25MYWJlbCk8L1RleHQ+CisgICAgICAgIDxFZGl0Ym94IE5hbWU9IlRhcmdldERpciIgWD0iMTg1IiBZPSIyNzciIFdpZHRoPSItMTAxIiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgRmlsZVN5c3RlbUF1dG9Db21wbGV0ZT0ieWVzIiAvPgorICAgICAgICA8QnV0dG9uIE5hbWU9IkN1c3RvbUJyb3dzZUJ1dHRvbiIgWD0iLTExIiBZPSIyNzYiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiPiMobG9jLkN1c3RvbUJyb3dzZUJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPFRleHQgTmFtZT0iQ3VzdG9tQnJvd3NlQnV0dG9uTGFiZWwiIFg9IjE4NSIgWT0iMzA2IiBXaWR0aD0iLTkxIiBIZWlnaHQ9IjM1IiBGb250SWQ9IjUiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuQ3VzdG9tTG9jYXRpb25IZWxwTGFiZWwpPC9UZXh0PgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iQ3VzdG9tMkJhY2tCdXR0b24iIFg9IjE4NSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DdXN0b21CYWNrQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IkN1c3RvbUluc3RhbGxCdXR0b24iIFg9Ii0xMDEiIFk9Ii0xMSIgV2lkdGg9Ijk1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ3VzdG9tSW5zdGFsbEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJDdXN0b20yQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJQcm9ncmVzcyI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5Qcm9ncmVzc0hlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuUHJvZ3Jlc3NMYWJlbCk8L1RleHQ+CisgICAgICAgIDxUZXh0IE5hbWU9Ik92ZXJhbGxQcm9ncmVzc1BhY2thZ2VUZXh0IiBYPSIxODUiIFk9IjE0NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLk92ZXJhbGxQcm9ncmVzc1BhY2thZ2VUZXh0KTwvVGV4dD4KKyAgICAgICAgPFByb2dyZXNzYmFyIE5hbWU9Ik92ZXJhbGxDYWxjdWxhdGVkUHJvZ3Jlc3NiYXIiIFg9IjE4NSIgWT0iMTcxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjI0IiAvPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlByb2dyZXNzQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijk1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2FuY2VsQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJNb2RpZnkiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuTW9kaWZ5SGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJNb2RpZnlCdXR0b24iIFg9IjE4NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RiI+Iyhsb2MuTW9kaWZ5TW9kaWZ5QnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlJlcGFpckJ1dHRvbiIgWD0iMTg1IiBZPSIxNzEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIj4jKGxvYy5Nb2RpZnlSZXBhaXJCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iVW5pbnN0YWxsQnV0dG9uIiBYPSIxODUiIFk9IjI0MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLk1vZGlmeVVuaW5zdGFsbEJ1dHRvbik8L0J1dHRvbj4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ik1vZGlmeUNhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iU3VjY2VzcyI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii0zMSIgSGVpZ2h0PSIxMDAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KKworICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTEwMCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJMYXVuY2hCdXR0b24iIFg9IjE4NSIgWT0iLTUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RiIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTGF1bmNoQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiBYPSItMTAxIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKyAgICA8UGFnZSBOYW1lPSJGYWlsdXJlIj4KKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkZhaWx1cmVIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IkZhaWx1cmVMb2dGaWxlTGluayIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI2MCIgRm9udElkPSIzIiBUYWJTdG9wPSJ5ZXMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuRmFpbHVyZUh5cGVybGlua0xvZ1RleHQpPC9IeXBlcnRleHQ+CisgICAgICAgIDxIeXBlcnRleHQgTmFtZT0iRmFpbHVyZU1lc3NhZ2VUZXh0IiBYPSIyMDUiIFk9Ii0xMDAiIFdpZHRoPSItMTEiIEhlaWdodD0iNjAiIEZvbnRJZD0iMyIgVGFiU3RvcD0ieWVzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPjwvSHlwZXJ0ZXh0PgorICAgICAgICA8VGV4dCBOYW1lPSJGYWlsdXJlUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTQwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5GYWlsdXJlUmVzdGFydFRleHQpPC9UZXh0PgorICAgICAgICA8QnV0dG9uIE5hbWU9IkZhaWx1cmVSZXN0YXJ0QnV0dG9uIiBYPSItMTAxIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuRmFpbHVyZVJlc3RhcnRCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iRmFpbHVyZUNhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgorICAgIDwvUGFnZT4KKzwvVGhlbWU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bCBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNkODlkOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKQEAgLTAsMCArMSwxMjMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiBMYW5ndWFnZT0iMTAzMyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgPFN0cmluZyBJZD0iQ2FwdGlvbiI+W1dpeEJ1bmRsZU5hbWVdIFNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlRpdGxlIj5bV2l4QnVuZGxlTmFtZV08L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbGluZyI+SW5zdGFsbGluZzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsYXRpb24iPlNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeWluZyI+VXBkYXRpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZpY2F0aW9uIj5Nb2RpZnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyaW5nIj5SZXBhaXJpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyIj5SZXBhaXI8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iVW5pbnN0YWxsaW5nIj5SZW1vdmluZzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJVbmluc3RhbGxhdGlvbiI+VW5pbnN0YWxsPC9TdHJpbmc+CisgIAorICA8U3RyaW5nIElkPSJFbGV2YXRlRm9yQ1JUSW5zdGFsbCI+WW91IHdpbGwgYmUgcHJvbXB0ZWQgZm9yIEFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyB0byBpbnN0YWxsIGEgQyBSdW50aW1lIExpYnJhcnkgdXBkYXRlIChLQjI5OTkyMjYpLgorCisKK0NvbnRpbnVlPzwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iQ2FuY2VsQnV0dG9uIj4mYW1wO0NhbmNlbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDbG9zZUJ1dHRvbiI+JmFtcDtDbG9zZTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsSGVhZGVyIj5JbnN0YWxsIFtXaXhCdW5kbGVOYW1lXTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsTWVzc2FnZSI+U2VsZWN0IEluc3RhbGwgTm93IHRvIGluc3RhbGwgUHl0aG9uIHdpdGggZGVmYXVsdCBzZXR0aW5ncywgb3IgY2hvb3NlIEN1c3RvbWl6ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFZlcnNpb24iPlZlcnNpb24gW1dpeEJ1bmRsZVZlcnNpb25dPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlSGVhZGVyIj5VcGdyYWRlIHRvIFtXaXhCdW5kbGVOYW1lXTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsVXBncmFkZU1lc3NhZ2UiPlNlbGVjdCBVcGdyYWRlIE5vdyB0byBrZWVwIHlvdXIgY3VycmVudCBzZXR0aW5ncywgb3IgY2hvb3NlIEN1c3RvbWl6ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ29uZmlybUNhbmNlbE1lc3NhZ2UiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkV4ZWN1dGVVcGdyYWRlUmVsYXRlZEJ1bmRsZU1lc3NhZ2UiPlByZXZpb3VzIHZlcnNpb248L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSGVscEhlYWRlciI+U2V0dXAgSGVscDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJIZWxwVGV4dCI+VmlzaXQgJmx0O2EgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy9bU2hvcnRWZXJzaW9uXS91c2luZy93aW5kb3dzLmh0bWwiJmd0O2RvY3MucHl0aG9uLm9yZy9bU2hvcnRWZXJzaW9uXS91c2luZy93aW5kb3dzLmh0bWwmbHQ7L2EmZ3Q7IGZvciB0aGUgZnVsbCBsaXN0IG9mIG9wdGlvbnMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBlbmFibGUgYW5kIGRpc2FibGUgc3BlY2lmaWMgZmVhdHVyZXMuCisKKyIvcGFzc2l2ZSIgdG8gZGlzcGxheSBwcm9ncmVzcyB3aXRob3V0IHJlcXVpcmluZyB1c2VyIGludGVyYWN0aW9uCisKKyIvcXVpZXQiIHRvIGluc3RhbGwvdW5pbnN0YWxsIHdpdGhvdXQgZGlzcGxheWluZyBhbnkgVUkKKworIi9zaW1wbGUiIHRvIHByZXZlbnQgdXNlciBjdXN0b21pemF0aW9uCisKKyIvdW5pbnN0YWxsIiB0byByZW1vdmUgUHl0aG9uICh3aXRob3V0IGNvbmZpcm1hdGlvbikKKworIi9sYXlvdXQgW1xbXWRpcmVjdG9yeVtcXV0iIHRvIHByZS1kb3dubG9hZCBhbGwgY29tcG9uZW50cworCisiL2xvZyBbXFtdZmlsZW5hbWVbXF1dIiB0byBzcGVjaWZ5IGxvZyBmaWxlcyBsb2NhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsTGljZW5zZUxpbmtUZXh0Ij5bV2l4QnVuZGxlTmFtZV0gJmx0O2EgaHJlZj0iIyImZ3Q7bGljZW5zZSB0ZXJtcyZsdDsvYSZndDsuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxBY2NlcHRDaGVja2JveCI+SSAmYW1wO2FncmVlIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxCdXR0b24iPiZhbXA7SW5zdGFsbCBOb3c8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEJ1dHRvbk5vdGUiPltEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyXQorCitJbmNsdWRlcyBJRExFLCBwaXAgYW5kIGRvY3VtZW50YXRpb24KK0NyZWF0ZXMgc2hvcnRjdXRzIGFuZCBmaWxlIGFzc29jaWF0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQ3VzdG9tQnV0dG9uIj5DJmFtcDt1c3RvbWl6ZSBpbnN0YWxsYXRpb248L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEN1c3RvbUJ1dHRvbk5vdGUiPkNob29zZSBsb2NhdGlvbiBhbmQgZmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFNpbXBsZUJ1dHRvbiI+JmFtcDtJbnN0YWxsPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxTaW1wbGVCdXR0b25Ob3RlIj5Vc2Ugc2V0dGluZ3MgcHJlc2VsZWN0ZWQgYnkgeW91ciBhZG1pbmlzdHJhdG9yCisKK1tTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb25dPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlQnV0dG9uIj4mYW1wO1VwZ3JhZGUgTm93PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlQnV0dG9uTm90ZSI+W1RhcmdldERpcl0KKworUmVwbGFjZXMgeW91ciBleGlzdGluZyBpbnN0YWxsYXRpb24gd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KK1NlbGVjdCBDdXN0b21pemUgdG8gcmV2aWV3IGN1cnJlbnQgb3B0aW9ucy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24iPkMmYW1wO3VzdG9taXplIGluc3RhbGxhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsVXBncmFkZUN1c3RvbUJ1dHRvbk5vdGUiPkNob29zZSBsb2NhdGlvbiBhbmQgZmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tMUhlYWRlciI+T3B0aW9uYWwgRmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tMkhlYWRlciI+QWR2YW5jZWQgT3B0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Mb2NhdGlvbkxhYmVsIj5DdXN0b21pemUgaW5zdGFsbCBsb2NhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Mb2NhdGlvbkhlbHBMYWJlbCI+WW91IHdpbGwgcmVxdWlyZSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlbGVjdGVkIGxvY2F0aW9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21JbnN0YWxsQnV0dG9uIj4mYW1wO0luc3RhbGw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tTmV4dEJ1dHRvbiI+JmFtcDtOZXh0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUJhY2tCdXR0b24iPiZhbXA7QmFjazwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Ccm93c2VCdXR0b24iPkImYW1wO3Jvd3NlPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfZG9jTGFiZWwiPiZhbXA7RG9jdW1lbnRhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX2RvY0hlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZpbGUuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfcGlwTGFiZWwiPiZhbXA7cGlwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfcGlwSGVscExhYmVsIj5JbnN0YWxscyBwaXAsIHdoaWNoIGNhbiBkb3dubG9hZCBhbmQgaW5zdGFsbCBvdGhlciBQeXRob24gcGFja2FnZXMuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGNsdGtMYWJlbCI+dGNsL3RrIGFuZCAmYW1wO0lETEU8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV90Y2x0a0hlbHBMYWJlbCI+SW5zdGFsbHMgdGtpbnRlciBhbmQgdGhlIElETEUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGVzdExhYmVsIj5QeXRob24gJmFtcDt0ZXN0IHN1aXRlPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGVzdEhlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZS48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9sYXVuY2hlckxhYmVsIj5weSAmYW1wO2xhdW5jaGVyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfbGF1bmNoZXJIZWxwTGFiZWwiPkluc3RhbGxzIHRoZSBnbG9iYWwgJ3B5JyBsYXVuY2hlciB0byBtYWtlIGl0IGVhc2llciB0byBzdGFydCBQeXRob24uPC9TdHJpbmc+CisgIAorICA8U3RyaW5nIElkPSJBc3NvY2lhdGVGaWxlc0xhYmVsIj5Bc3NvY2lhdGUgJmFtcDtmaWxlcyB3aXRoIFB5dGhvbiAocmVxdWlyZXMgdGhlIHB5IGxhdW5jaGVyKTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTaG9ydGN1dHNMYWJlbCI+Q3JlYXRlIHNob3J0Y3V0cyBmb3IgaW5zdGFsbGVkIGFwcGxpY2F0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJQcmVwZW5kUGF0aExhYmVsIj5BZGQgUHl0aG9uIHRvICZhbXA7ZW52aXJvbm1lbnQgdmFyaWFibGVzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlNob3J0UHJlcGVuZFBhdGhMYWJlbCI+QWRkICZhbXA7UHl0aG9uIFtTaG9ydFZlcnNpb25dIHRvIFBBVEg8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEFsbFVzZXJzTGFiZWwiPkluc3RhbGwgZm9yICZhbXA7YWxsIHVzZXJzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzTGFiZWwiPmZvciAmYW1wO2FsbCB1c2VycyAocmVxdWlyZXMgZWxldmF0aW9uKTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTaG9ydEluc3RhbGxMYXVuY2hlckFsbFVzZXJzTGFiZWwiPkluc3RhbGwgJmFtcDtsYXVuY2hlciBmb3IgYWxsIHVzZXJzIChyZWNvbW1lbmRlZCk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUHJlY29tcGlsZUxhYmVsIj4mYW1wO1ByZWNvbXBpbGUgc3RhbmRhcmQgbGlicmFyeTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX3N5bWJvbHNMYWJlbCI+RG93bmxvYWQgZGVidWdnaW5nICZhbXA7c3ltYm9sczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX2RlYnVnTGFiZWwiPkRvd25sb2FkIGRlYnUmYW1wO2cgYmluYXJpZXMgKHJlcXVpcmVzIFZTIDIwMTUgb3IgbGF0ZXIpPC9TdHJpbmc+CisgIAorICA8U3RyaW5nIElkPSJQcm9ncmVzc0hlYWRlciI+W0FjdGlvbkxpa2VJbnN0YWxsYXRpb25dIFByb2dyZXNzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlByb2dyZXNzTGFiZWwiPltBY3Rpb25MaWtlSW5zdGFsbGluZ106PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik92ZXJhbGxQcm9ncmVzc1BhY2thZ2VUZXh0Ij5Jbml0aWFsaXppbmcuLi48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5SGVhZGVyIj5Nb2RpZnkgU2V0dXA8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5TW9kaWZ5QnV0dG9uIj4mYW1wO01vZGlmeTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJNb2RpZnlCdXR0b25Ob3RlIj5BZGQgb3IgcmVtb3ZlIGluZGl2aWR1YWwgZmVhdHVyZXMuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeVJlcGFpckJ1dHRvbiI+JmFtcDtSZXBhaXI8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyQnV0dG9uTm90ZSI+RW5zdXJlIGFsbCBjdXJyZW50IGZlYXR1cmVzIGFyZSBjb3JyZWN0bHkgaW5zdGFsbGVkLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJNb2RpZnlVbmluc3RhbGxCdXR0b24iPiZhbXA7VW5pbnN0YWxsPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlVuaW5zdGFsbEJ1dHRvbk5vdGUiPlJlbW92ZSB0aGUgZW50aXJlIFtXaXhCdW5kbGVOYW1lXSBpbnN0YWxsYXRpb24uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NIZWFkZXIiPltBY3Rpb25MaWtlSW5zdGFsbGF0aW9uXSB3YXMgc3VjY2Vzc2Z1bDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzTGF1bmNoQnV0dG9uIj4mYW1wO0xhdW5jaDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzUmVzdGFydFRleHQiPllvdSBtYXkgbmVlZCB0byByZXN0YXJ0IHlvdXIgY29tcHV0ZXIgdG8gZmluaXNoIHVwZGF0aW5nIGZpbGVzLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzUmVzdGFydEJ1dHRvbiI+JmFtcDtSZXN0YXJ0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NJbnN0YWxsTWVzc2FnZSI+U3BlY2lhbCB0aGFua3MgdG8gTWFyayBIYW1tb25kLCB3aXRob3V0IHdob3NlIHllYXJzIG9mIGZyZWVseSBzaGFyZWQgV2luZG93cyBleHBlcnRpc2UsIFB5dGhvbiBmb3IgV2luZG93cyB3b3VsZCBzdGlsbCBiZSBQeXRob24gZm9yIERPUy4KKworTmV3IHRvIFB5dGhvbj8gU3RhcnQgd2l0aCB0aGUgJmx0O2EgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vdHV0b3JpYWwvaW5kZXguaHRtbCImZ3Q7b25saW5lIHR1dG9yaWFsJmx0Oy9hJmd0OyBhbmQgJmx0O2EgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vaW5kZXguaHRtbCImZ3Q7ZG9jdW1lbnRhdGlvbiZsdDsvYSZndDsuCisKK1NlZSAmbHQ7YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy9bU2hvcnRWZXJzaW9uXS93aGF0c25ldy9bU2hvcnRWZXJzaW9uXS5odG1sIiZndDt3aGF0J3MgbmV3Jmx0Oy9hJmd0OyBpbiB0aGlzIHJlbGVhc2UuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNb2RpZnlNZXNzYWdlIj5UaGFuayB5b3UgZm9yIHVzaW5nIFtXaXhCdW5kbGVOYW1lXS48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1JlcGFpck1lc3NhZ2UiPlRoYW5rIHlvdSBmb3IgdXNpbmcgW1dpeEJ1bmRsZU5hbWVdLgorCitGZWVsIGZyZWUgdG8gZW1haWwgJmx0O2EgaHJlZj0ibWFpbHRvOnB5dGhvbi1saXN0QHB5dGhvbi5vcmciJmd0O3B5dGhvbi1saXN0QHB5dGhvbi5vcmcmbHQ7L2EmZ3Q7IGlmIHlvdSBjb250aW51ZSB0byBlbmNvdW50ZXIgaXNzdWVzLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzUmVtb3ZlTWVzc2FnZSI+VGhhbmsgeW91IGZvciB1c2luZyBbV2l4QnVuZGxlTmFtZV0uCisKK0ZlZWwgZnJlZSB0byBlbWFpbCAmbHQ7YSBocmVmPSJtYWlsdG86cHl0aG9uLWxpc3RAcHl0aG9uLm9yZyImZ3Q7cHl0aG9uLWxpc3RAcHl0aG9uLm9yZyZsdDsvYSZndDsgaWYgeW91IGVuY291bnRlcmVkIHByb2JsZW1zLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlSGVhZGVyIj5TZXR1cCBmYWlsZWQ8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZUh5cGVybGlua0xvZ1RleHQiPk9uZSBvciBtb3JlIGlzc3VlcyBjYXVzZWQgdGhlIHNldHVwIHRvIGZhaWwuIFBsZWFzZSBmaXggdGhlIGlzc3VlcyBhbmQgdGhlbiByZXRyeSBzZXR1cC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSAmbHQ7YSBocmVmPSIjIiZndDtsb2cgZmlsZSZsdDsvYSZndDsuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVSZXN0YXJ0VGV4dCI+WW91IG11c3QgcmVzdGFydCB5b3VyIGNvbXB1dGVyIHRvIGNvbXBsZXRlIHRoZSByb2xsYmFjayBvZiB0aGUgc29mdHdhcmUuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVSZXN0YXJ0QnV0dG9uIj4mYW1wO1Jlc3RhcnQ8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZUV4aXN0aW5nSW5zdGFsbCI+VW5hYmxlIHRvIGluc3RhbGwgW1dpeEJ1bmRsZU5hbWVdIGR1ZSB0byBhbiBleGlzdGluZyBpbnN0YWxsLiBVc2UgUHJvZ3JhbXMgYW5kIEZlYXR1cmVzIHRvIG1vZGlmeSwgcmVwYWlyIG9yIHJlbW92ZSBbV2l4QnVuZGxlTmFtZV0uPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvU2lkZUJhci5wbmcgYi9Ub29scy9tc2kvYnVuZGxlL1NpZGVCYXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyM2NlNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL1NpZGVCYXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL0xJQ0VOU0UudHh0IGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvTElDRU5TRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5MWE3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL0xJQ0VOU0UudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1RoaXMgbGljZW5zZSBhcHBsaWVzIHRvIHRoZSBib290c3RyYXBwZXIgYXBwbGljYXRpb24gdGhhdCBpcyBlbWJlZGRlZCB3aXRoaW4gdGhlIGluc3RhbGxlci4gSXQgaGFzIG5vIGltcGFjdCBvbiB0aGUgbGljZW5zaW5nIGZvciB0aGUgcmVzdCBvZiB0aGUgaW5zdGFsbGVyIG9yIFB5dGhvbiBpdHNlbGYsIGFzIG5vIGNvZGUgY292ZXJlZCBieSB0aGlzIGxpY2Vuc2UgZXhpc3RzIGluIGFueSBvdGhlciBwYXJ0IG9mIHRoZSBwcm9kdWN0LgorCistLS0KKworTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpCisKK1RoaXMgbGljZW5zZSBnb3Zlcm5zIHVzZSBvZiB0aGUgYWNjb21wYW55aW5nIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoZSBzb2Z0d2FyZSwgeW91IGFjY2VwdCB0aGlzIGxpY2Vuc2UuIElmIHlvdSBkbyBub3QgYWNjZXB0IHRoZSBsaWNlbnNlLCBkbyBub3QgdXNlIHRoZSBzb2Z0d2FyZS4KKworMS4gRGVmaW5pdGlvbnMKKyBUaGUgdGVybXMgInJlcHJvZHVjZSwiICJyZXByb2R1Y3Rpb24sIiAiZGVyaXZhdGl2ZSB3b3JrcywiIGFuZCAiZGlzdHJpYnV0aW9uIiBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgaGVyZSBhcyB1bmRlciBVLlMuIGNvcHlyaWdodCBsYXcuCisgQSAiY29udHJpYnV0aW9uIiBpcyB0aGUgb3JpZ2luYWwgc29mdHdhcmUsIG9yIGFueSBhZGRpdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgc29mdHdhcmUuCisgQSAiY29udHJpYnV0b3IiIGlzIGFueSBwZXJzb24gdGhhdCBkaXN0cmlidXRlcyBpdHMgY29udHJpYnV0aW9uIHVuZGVyIHRoaXMgbGljZW5zZS4KKyAiTGljZW5zZWQgcGF0ZW50cyIgYXJlIGEgY29udHJpYnV0b3IncyBwYXRlbnQgY2xhaW1zIHRoYXQgcmVhZCBkaXJlY3RseSBvbiBpdHMgY29udHJpYnV0aW9uLgorCisyLiBHcmFudCBvZiBSaWdodHMKKyAoQSkgQ29weXJpZ2h0IEdyYW50LSBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIGxpY2Vuc2UsIGluY2x1ZGluZyB0aGUgbGljZW5zZSBjb25kaXRpb25zIGFuZCBsaW1pdGF0aW9ucyBpbiBzZWN0aW9uIDMsIGVhY2ggY29udHJpYnV0b3IgZ3JhbnRzIHlvdSBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSBpdHMgY29udHJpYnV0aW9uLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YgaXRzIGNvbnRyaWJ1dGlvbiwgYW5kIGRpc3RyaWJ1dGUgaXRzIGNvbnRyaWJ1dGlvbiBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrcyB0aGF0IHlvdSBjcmVhdGUuCisgKEIpIFBhdGVudCBHcmFudC0gU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBsaWNlbnNlLCBpbmNsdWRpbmcgdGhlIGxpY2Vuc2UgY29uZGl0aW9ucyBhbmQgbGltaXRhdGlvbnMgaW4gc2VjdGlvbiAzLCBlYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBsaWNlbnNlIHVuZGVyIGl0cyBsaWNlbnNlZCBwYXRlbnRzIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0LCBhbmQvb3Igb3RoZXJ3aXNlIGRpc3Bvc2Ugb2YgaXRzIGNvbnRyaWJ1dGlvbiBpbiB0aGUgc29mdHdhcmUgb3IgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgY29udHJpYnV0aW9uIGluIHRoZSBzb2Z0d2FyZS4KKworMy4gQ29uZGl0aW9ucyBhbmQgTGltaXRhdGlvbnMKKyAoQSkgUmVjaXByb2NhbCBHcmFudHMtIEZvciBhbnkgZmlsZSB5b3UgZGlzdHJpYnV0ZSB0aGF0IGNvbnRhaW5zIGNvZGUgZnJvbSB0aGUgc29mdHdhcmUgKGluIHNvdXJjZSBjb2RlIG9yIGJpbmFyeSBmb3JtYXQpLCB5b3UgbXVzdCBwcm92aWRlIHJlY2lwaWVudHMgdGhlIHNvdXJjZSBjb2RlIHRvIHRoYXQgZmlsZSBhbG9uZyB3aXRoIGEgY29weSBvZiB0aGlzIGxpY2Vuc2UsIHdoaWNoIGxpY2Vuc2Ugd2lsbCBnb3Zlcm4gdGhhdCBmaWxlLiBZb3UgbWF5IGxpY2Vuc2Ugb3RoZXIgZmlsZXMgdGhhdCBhcmUgZW50aXJlbHkgeW91ciBvd24gd29yayBhbmQgZG8gbm90IGNvbnRhaW4gY29kZSBmcm9tIHRoZSBzb2Z0d2FyZSB1bmRlciBhbnkgdGVybXMgeW91IGNob29zZS4KKyAoQikgTm8gVHJhZGVtYXJrIExpY2Vuc2UtIFRoaXMgbGljZW5zZSBkb2VzIG5vdCBncmFudCB5b3UgcmlnaHRzIHRvIHVzZSBhbnkgY29udHJpYnV0b3JzJyBuYW1lLCBsb2dvLCBvciB0cmFkZW1hcmtzLgorIChDKSBJZiB5b3UgYnJpbmcgYSBwYXRlbnQgY2xhaW0gYWdhaW5zdCBhbnkgY29udHJpYnV0b3Igb3ZlciBwYXRlbnRzIHRoYXQgeW91IGNsYWltIGFyZSBpbmZyaW5nZWQgYnkgdGhlIHNvZnR3YXJlLCB5b3VyIHBhdGVudCBsaWNlbnNlIGZyb20gc3VjaCBjb250cmlidXRvciB0byB0aGUgc29mdHdhcmUgZW5kcyBhdXRvbWF0aWNhbGx5LgorIChEKSBJZiB5b3UgZGlzdHJpYnV0ZSBhbnkgcG9ydGlvbiBvZiB0aGUgc29mdHdhcmUsIHlvdSBtdXN0IHJldGFpbiBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kIGF0dHJpYnV0aW9uIG5vdGljZXMgdGhhdCBhcmUgcHJlc2VudCBpbiB0aGUgc29mdHdhcmUuCisgKEUpIElmIHlvdSBkaXN0cmlidXRlIGFueSBwb3J0aW9uIG9mIHRoZSBzb2Z0d2FyZSBpbiBzb3VyY2UgY29kZSBmb3JtLCB5b3UgbWF5IGRvIHNvIG9ubHkgdW5kZXIgdGhpcyBsaWNlbnNlIGJ5IGluY2x1ZGluZyBhIGNvbXBsZXRlIGNvcHkgb2YgdGhpcyBsaWNlbnNlIHdpdGggeW91ciBkaXN0cmlidXRpb24uIElmIHlvdSBkaXN0cmlidXRlIGFueSBwb3J0aW9uIG9mIHRoZSBzb2Z0d2FyZSBpbiBjb21waWxlZCBvciBvYmplY3QgY29kZSBmb3JtLCB5b3UgbWF5IG9ubHkgZG8gc28gdW5kZXIgYSBsaWNlbnNlIHRoYXQgY29tcGxpZXMgd2l0aCB0aGlzIGxpY2Vuc2UuCisgKEYpIFRoZSBzb2Z0d2FyZSBpcyBsaWNlbnNlZCAiYXMtaXMuIiBZb3UgYmVhciB0aGUgcmlzayBvZiB1c2luZyBpdC4gVGhlIGNvbnRyaWJ1dG9ycyBnaXZlIG5vIGV4cHJlc3Mgd2FycmFudGllcywgZ3VhcmFudGVlcyBvciBjb25kaXRpb25zLiBZb3UgbWF5IGhhdmUgYWRkaXRpb25hbCBjb25zdW1lciByaWdodHMgdW5kZXIgeW91ciBsb2NhbCBsYXdzIHdoaWNoIHRoaXMgbGljZW5zZSBjYW5ub3QgY2hhbmdlLiBUbyB0aGUgZXh0ZW50IHBlcm1pdHRlZCB1bmRlciB5b3VyIGxvY2FsIGxhd3MsIHRoZSBjb250cmlidXRvcnMgZXhjbHVkZSB0aGUgaW1wbGllZCB3YXJyYW50aWVzIG9mIG1lcmNoYW50YWJpbGl0eSwgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UgYW5kIG5vbi1pbmZyaW5nZW1lbnQuCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk4ODRlNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcApAQCAtMCwwICsxLDMxNjcgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJXaXhTdGFuZGFyZEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcCIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKy8vICAgQ29weXJpZ2h0IChjKSAyMDA0LCBPdXRlcmN1cnZlIEZvdW5kYXRpb24uCisvLyAgIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTWljcm9zb2Z0IFJlY2lwcm9jYWwgTGljZW5zZSAoTVMtUkwpLgorLy8gICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKy8vICAgTElDRU5TRS5UWFQgYXQgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBkaXN0cmlidXRpb24uCisvLyA8L2NvcHlyaWdodD4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyNpbmNsdWRlICJwY2guaCIKKworc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9XSU5ET1dfQ0xBU1MgPSBMIlB5dGhvbkJBIjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIID0gTCJMYXVuY2hUYXJnZXQiOworc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEID0gTCJMYXVuY2hUYXJnZXRFbGV2YXRlZElkIjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyA9IEwiTGF1bmNoQXJndW1lbnRzIjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTiA9IEwiTGF1bmNoSGlkZGVuIjsKK3N0YXRpYyBjb25zdCBEV09SRCBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSA9IDMwOworc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9CVU5ETEVfRklMRV9WRVJTSU9OID0gTCJXaXhCdW5kbGVGaWxlVmVyc2lvbiI7CisKK2VudW0gUFlCQV9TVEFURSB7CisgICAgUFlCQV9TVEFURV9JTklUSUFMSVpJTkcsCisgICAgUFlCQV9TVEFURV9JTklUSUFMSVpFRCwKKyAgICBQWUJBX1NUQVRFX0hFTFAsCisgICAgUFlCQV9TVEFURV9ERVRFQ1RJTkcsCisgICAgUFlCQV9TVEFURV9ERVRFQ1RFRCwKKyAgICBQWUJBX1NUQVRFX1BMQU5OSU5HLAorICAgIFBZQkFfU1RBVEVfUExBTk5FRCwKKyAgICBQWUJBX1NUQVRFX0FQUExZSU5HLAorICAgIFBZQkFfU1RBVEVfQ0FDSElORywKKyAgICBQWUJBX1NUQVRFX0NBQ0hFRCwKKyAgICBQWUJBX1NUQVRFX0VYRUNVVElORywKKyAgICBQWUJBX1NUQVRFX0VYRUNVVEVELAorICAgIFBZQkFfU1RBVEVfQVBQTElFRCwKKyAgICBQWUJBX1NUQVRFX0ZBSUxFRCwKK307CisKK3N0YXRpYyBjb25zdCBpbnQgV01fUFlCQV9TSE9XX0hFTFAgPSBXTV9BUFAgKyAxMDA7CitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfREVURUNUX1BBQ0tBR0VTID0gV01fQVBQICsgMTAxOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX1BMQU5fUEFDS0FHRVMgPSBXTV9BUFAgKyAxMDI7CitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfQVBQTFlfUEFDS0FHRVMgPSBXTV9BUFAgKyAxMDM7CitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfQ0hBTkdFX1NUQVRFID0gV01fQVBQICsgMTA0Oworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX1NIT1dfRkFJTFVSRSA9IFdNX0FQUCArIDEwNTsKKworLy8gVGhpcyBlbnVtIG11c3QgYmUga2VwdCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgUEFHRV9OQU1FUyBhcnJheS4KK2VudW0gUEFHRSB7CisgICAgUEFHRV9MT0FESU5HLAorICAgIFBBR0VfSEVMUCwKKyAgICBQQUdFX0lOU1RBTEwsCisgICAgUEFHRV9VUEdSQURFLAorICAgIFBBR0VfU0lNUExFX0lOU1RBTEwsCisgICAgUEFHRV9DVVNUT00xLAorICAgIFBBR0VfQ1VTVE9NMiwKKyAgICBQQUdFX01PRElGWSwKKyAgICBQQUdFX1BST0dSRVNTLAorICAgIFBBR0VfUFJPR1JFU1NfUEFTU0lWRSwKKyAgICBQQUdFX1NVQ0NFU1MsCisgICAgUEFHRV9GQUlMVVJFLAorICAgIENPVU5UX1BBR0UsCit9OworCisvLyBUaGlzIGFycmF5IG11c3QgYmUga2VwdCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgUEFHRSBlbnVtLgorc3RhdGljIExQQ1dTVFIgUEFHRV9OQU1FU1tdID0geworICAgIEwiTG9hZGluZyIsCisgICAgTCJIZWxwIiwKKyAgICBMIkluc3RhbGwiLAorICAgIEwiVXBncmFkZSIsCisgICAgTCJTaW1wbGVJbnN0YWxsIiwKKyAgICBMIkN1c3RvbTEiLAorICAgIEwiQ3VzdG9tMiIsCisgICAgTCJNb2RpZnkiLAorICAgIEwiUHJvZ3Jlc3MiLAorICAgIEwiUHJvZ3Jlc3NQYXNzaXZlIiwKKyAgICBMIlN1Y2Nlc3MiLAorICAgIEwiRmFpbHVyZSIsCit9OworCitlbnVtIENPTlRST0xfSUQgeworICAgIC8vIE5vbi1wYWdlZCBjb250cm9scworICAgIElEX0NMT1NFX0JVVFRPTiA9IFRIRU1FX0ZJUlNUX0FTU0lHTl9DT05UUk9MX0lELAorICAgIElEX01JTklNSVpFX0JVVFRPTiwKKworICAgIC8vIFdlbGNvbWUgcGFnZQorICAgIElEX0lOU1RBTExfQlVUVE9OLAorICAgIElEX0lOU1RBTExfQ1VTVE9NX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX1NJTVBMRV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9VUEdSQURFX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX1VQR1JBREVfQ1VTVE9NX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX0NBTkNFTF9CVVRUT04sCisgICAgSURfSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gsCisKKyAgICAvLyBDdXN0b21pemUgUGFnZQorICAgIElEX1RBUkdFVERJUl9FRElUQk9YLAorICAgIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsCisgICAgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YLAorICAgIElEX0NVU1RPTV9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWCwKKyAgICBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsCisgICAgSURfQ1VTVE9NX0JST1dTRV9CVVRUT04sCisgICAgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsCisgICAgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLAorICAgIElEX0NVU1RPTV9ORVhUX0JVVFRPTiwKKyAgICBJRF9DVVNUT00xX0JBQ0tfQlVUVE9OLAorICAgIElEX0NVU1RPTTJfQkFDS19CVVRUT04sCisgICAgSURfQ1VTVE9NMV9DQU5DRUxfQlVUVE9OLAorICAgIElEX0NVU1RPTTJfQ0FOQ0VMX0JVVFRPTiwKKworICAgIC8vIE1vZGlmeSBwYWdlCisgICAgSURfTU9ESUZZX0JVVFRPTiwKKyAgICBJRF9SRVBBSVJfQlVUVE9OLAorICAgIElEX1VOSU5TVEFMTF9CVVRUT04sCisgICAgSURfTU9ESUZZX0NBTkNFTF9CVVRUT04sCisKKyAgICAvLyBQcm9ncmVzcyBwYWdlCisgICAgSURfQ0FDSEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULAorICAgIElEX0NBQ0hFX1BST0dSRVNTX0JBUiwKKyAgICBJRF9DQUNIRV9QUk9HUkVTU19URVhULAorCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19CQVIsCisgICAgSURfRVhFQ1VURV9QUk9HUkVTU19URVhULAorICAgIElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULAorCisgICAgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsCisgICAgSURfT1ZFUkFMTF9QUk9HUkVTU19CQVIsCisgICAgSURfT1ZFUkFMTF9DQUxDVUxBVEVEX1BST0dSRVNTX0JBUiwKKyAgICBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsCisKKyAgICBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLAorCisgICAgLy8gU3VjY2VzcyBwYWdlCisgICAgSURfTEFVTkNIX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX1RFWFQsCisgICAgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsCisgICAgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sCisKKyAgICAvLyBGYWlsdXJlIHBhZ2UKKyAgICBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywKKyAgICBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwKKyAgICBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwKKyAgICBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLAorICAgIElEX0ZBSUxVUkVfQ0FOQ0VMX0JVVFRPTgorfTsKKworc3RhdGljIFRIRU1FX0FTU0lHTl9DT05UUk9MX0lEIENPTlRST0xfSURfTkFNRVNbXSA9IHsKKyAgICB7IElEX0NMT1NFX0JVVFRPTiwgTCJDbG9zZUJ1dHRvbiIgfSwKKyAgICB7IElEX01JTklNSVpFX0JVVFRPTiwgTCJNaW5pbWl6ZUJ1dHRvbiIgfSwKKworICAgIHsgSURfSU5TVEFMTF9CVVRUT04sIEwiSW5zdGFsbEJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfQ1VTVE9NX0JVVFRPTiwgTCJJbnN0YWxsQ3VzdG9tQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLCBMIkluc3RhbGxTaW1wbGVCdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX1VQR1JBREVfQlVUVE9OLCBMIkluc3RhbGxVcGdyYWRlQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9VUEdSQURFX0NVU1RPTV9CVVRUT04sIEwiSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX0NBTkNFTF9CVVRUT04sIEwiSW5zdGFsbENhbmNlbEJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YLCBMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiB9LAorCisgICAgeyBJRF9UQVJHRVRESVJfRURJVEJPWCwgTCJUYXJnZXREaXIiIH0sCisgICAgeyBJRF9DVVNUT01fQVNTT0NJQVRFX0ZJTEVTX0NIRUNLQk9YLCBMIkFzc29jaWF0ZUZpbGVzIiB9LAorICAgIHsgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YLCBMIkluc3RhbGxBbGxVc2VycyIgfSwKKyAgICB7IElEX0NVU1RPTV9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWCwgTCJDdXN0b21JbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIgfSwKKyAgICB7IElEX0NVU1RPTV9DT01QSUxFX0FMTF9DSEVDS0JPWCwgTCJDb21waWxlQWxsIiB9LAorICAgIHsgSURfQ1VTVE9NX0JST1dTRV9CVVRUT04sIEwiQ3VzdG9tQnJvd3NlQnV0dG9uIiB9LAorICAgIHsgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsIEwiQ3VzdG9tQnJvd3NlQnV0dG9uTGFiZWwiIH0sCisgICAgeyBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIEwiQ3VzdG9tSW5zdGFsbEJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTV9ORVhUX0JVVFRPTiwgTCJDdXN0b21OZXh0QnV0dG9uIiB9LAorICAgIHsgSURfQ1VTVE9NMV9CQUNLX0JVVFRPTiwgTCJDdXN0b20xQmFja0J1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTTJfQkFDS19CVVRUT04sIEwiQ3VzdG9tMkJhY2tCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00xX0NBTkNFTF9CVVRUT04sIEwiQ3VzdG9tMUNhbmNlbEJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTTJfQ0FOQ0VMX0JVVFRPTiwgTCJDdXN0b20yQ2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9NT0RJRllfQlVUVE9OLCBMIk1vZGlmeUJ1dHRvbiIgfSwKKyAgICB7IElEX1JFUEFJUl9CVVRUT04sIEwiUmVwYWlyQnV0dG9uIiB9LAorICAgIHsgSURfVU5JTlNUQUxMX0JVVFRPTiwgTCJVbmluc3RhbGxCdXR0b24iIH0sCisgICAgeyBJRF9NT0RJRllfQ0FOQ0VMX0JVVFRPTiwgTCJNb2RpZnlDYW5jZWxCdXR0b24iIH0sCisKKyAgICB7IElEX0NBQ0hFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgTCJDYWNoZVByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19CQVIsIEwiQ2FjaGVQcm9ncmVzc2JhciIgfSwKKyAgICB7IElEX0NBQ0hFX1BST0dSRVNTX1RFWFQsIEwiQ2FjaGVQcm9ncmVzc1RleHQiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgTCJFeGVjdXRlUHJvZ3Jlc3NQYWNrYWdlVGV4dCIgfSwKKyAgICB7IElEX0VYRUNVVEVfUFJPR1JFU1NfQkFSLCBMIkV4ZWN1dGVQcm9ncmVzc2JhciIgfSwKKyAgICB7IElEX0VYRUNVVEVfUFJPR1JFU1NfVEVYVCwgTCJFeGVjdXRlUHJvZ3Jlc3NUZXh0IiB9LAorICAgIHsgSURfRVhFQ1VURV9QUk9HUkVTU19BQ1RJT05EQVRBX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzQWN0aW9uRGF0YVRleHQiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgTCJPdmVyYWxsUHJvZ3Jlc3NQYWNrYWdlVGV4dCIgfSwKKyAgICB7IElEX09WRVJBTExfUFJPR1JFU1NfQkFSLCBMIk92ZXJhbGxQcm9ncmVzc2JhciIgfSwKKyAgICB7IElEX09WRVJBTExfQ0FMQ1VMQVRFRF9QUk9HUkVTU19CQVIsIEwiT3ZlcmFsbENhbGN1bGF0ZWRQcm9ncmVzc2JhciIgfSwKKyAgICB7IElEX09WRVJBTExfUFJPR1JFU1NfVEVYVCwgTCJPdmVyYWxsUHJvZ3Jlc3NUZXh0IiB9LAorICAgIHsgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJQcm9ncmVzc0NhbmNlbEJ1dHRvbiIgfSwKKworICAgIHsgSURfTEFVTkNIX0JVVFRPTiwgTCJMYXVuY2hCdXR0b24iIH0sCisgICAgeyBJRF9TVUNDRVNTX1RFWFQsIEwiU3VjY2Vzc1RleHQiIH0sCisgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgTCJTdWNjZXNzUmVzdGFydFRleHQiIH0sCisgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBMIlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiB9LAorICAgIHsgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLCBMIlN1Y2Nlc3NDYW5jZWxCdXR0b24iIH0sCisKKyAgICB7IElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLCBMIkZhaWx1cmVMb2dGaWxlTGluayIgfSwKKyAgICB7IElEX0ZBSUxVUkVfTUVTU0FHRV9URVhULCBMIkZhaWx1cmVNZXNzYWdlVGV4dCIgfSwKKyAgICB7IElEX0ZBSUxVUkVfUkVTVEFSVF9URVhULCBMIkZhaWx1cmVSZXN0YXJ0VGV4dCIgfSwKKyAgICB7IElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT04sIEwiRmFpbHVyZVJlc3RhcnRCdXR0b24iIH0sCisgICAgeyBJRF9GQUlMVVJFX0NBTkNFTF9CVVRUT04sIEwiRmFpbHVyZUNhbmNlbEJ1dHRvbiIgfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgeyBMUENXU1RSIHJlZ05hbWU7IExQQ1dTVFIgdmFyaWFibGVOYW1lOyB9IE9QVElPTkFMX0ZFQVRVUkVTW10gPSB7CisgICAgeyBMImNvcmVfZCIsIEwiSW5jbHVkZV9kZWJ1ZyIgfSwKKyAgICB7IEwiY29yZV9wZGIiLCBMIkluY2x1ZGVfc3ltYm9scyIgfSwKKyAgICB7IEwiZGV2IiwgTCJJbmNsdWRlX2RldiIgfSwKKyAgICB7IEwiZG9jIiwgTCJJbmNsdWRlX2RvYyIgfSwKKyAgICB7IEwiZXhlIiwgTCJJbmNsdWRlX2V4ZSIgfSwKKyAgICB7IEwibGliIiwgTCJJbmNsdWRlX2xpYiIgfSwKKyAgICB7IEwicGF0aCIsIEwiUHJlcGVuZFBhdGgiIH0sCisgICAgeyBMInBpcCIsIEwiSW5jbHVkZV9waXAiIH0sCisgICAgeyBMInRjbHRrIiwgTCJJbmNsdWRlX3RjbHRrIiB9LAorICAgIHsgTCJ0ZXN0IiwgTCJJbmNsdWRlX3Rlc3QiIH0sCisgICAgeyBMInRvb2xzIiwgTCJJbmNsdWRlX3Rvb2xzIiB9LAorICAgIHsgTCJTaG9ydGN1dHMiLCBMIlNob3J0Y3V0cyIgfSwKKyAgICAvLyBJbmNsdWRlX2xhdW5jaGVyIGFuZCBBc3NvY2lhdGVGaWxlcyBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGFuZCBzbyBkbworICAgIC8vIG5vdCBuZWVkIHRvIGJlIGluY2x1ZGVkIGluIHRoaXMgbGlzdC4KKyAgICB7IG51bGxwdHIsIG51bGxwdHIgfQorfTsKKworCisKK2NsYXNzIFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIDogcHVibGljIENCYWxCYXNlQm9vdHN0cmFwcGVyQXBwbGljYXRpb24geworICAgIHZvaWQgU2hvd1BhZ2UoRFdPUkQgbmV3UGFnZUlkKSB7CisgICAgICAgIC8vIFByb2Nlc3MgZWFjaCBjb250cm9sIGZvciBzcGVjaWFsIGhhbmRsaW5nIGluIHRoZSBuZXcgcGFnZS4KKyAgICAgICAgUHJvY2Vzc1BhZ2VDb250cm9scyhUaGVtZUdldFBhZ2UoX3RoZW1lLCBuZXdQYWdlSWQpKTsKKworICAgICAgICAvLyBFbmFibGUgZGlzYWJsZSBjb250cm9scyBwZXItcGFnZS4KKyAgICAgICAgaWYgKF9wYWdlSWRzW1BBR0VfSU5TVEFMTF0gPT0gbmV3UGFnZUlkIHx8CisgICAgICAgICAgICBfcGFnZUlkc1tQQUdFX1NJTVBMRV9JTlNUQUxMXSA9PSBuZXdQYWdlSWQgfHwKKyAgICAgICAgICAgIF9wYWdlSWRzW1BBR0VfVVBHUkFERV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBJbnN0YWxsUGFnZV9TaG93KCk7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9DVVNUT00xXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIEN1c3RvbTFQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX0NVU1RPTTJdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgQ3VzdG9tMlBhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfTU9ESUZZXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIE1vZGlmeVBhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfU1VDQ0VTU10gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBTdWNjZXNzUGFnZV9TaG93KCk7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9GQUlMVVJFXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIEZhaWx1cmVQYWdlX1Nob3coKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFByZXZlbnQgcmVwYWludGluZyB3aGlsZSBzd2l0Y2hpbmcgcGFnZSB0byBhdm9pZCB1Z2x5IGZsaWNrZXJpbmcKKyAgICAgICAgX3N1cHByZXNzUGFpbnQgPSBUUlVFOworICAgICAgICBUaGVtZVNob3dQYWdlKF90aGVtZSwgbmV3UGFnZUlkLCBTV19TSE9XKTsKKyAgICAgICAgVGhlbWVTaG93UGFnZShfdGhlbWUsIF92aXNpYmxlUGFnZUlkLCBTV19ISURFKTsKKyAgICAgICAgX3N1cHByZXNzUGFpbnQgPSBGQUxTRTsKKyAgICAgICAgSW52YWxpZGF0ZVJlY3QoX3RoZW1lLT5od25kUGFyZW50LCBudWxscHRyLCBUUlVFKTsKKyAgICAgICAgX3Zpc2libGVQYWdlSWQgPSBuZXdQYWdlSWQ7CisKKyAgICAgICAgLy8gT24gdGhlIGluc3RhbGwgcGFnZSBzZXQgdGhlIGZvY3VzIHRvIHRoZSBpbnN0YWxsIGJ1dHRvbiBvcgorICAgICAgICAvLyB0aGUgbmV4dCBlbmFibGVkIGNvbnRyb2wgaWYgaW5zdGFsbCBpcyBkaXNhYmxlZAorICAgICAgICBpZiAoX3BhZ2VJZHNbUEFHRV9JTlNUQUxMXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIFRoZW1lU2V0Rm9jdXMoX3RoZW1lLCBJRF9JTlNUQUxMX0JVVFRPTik7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9TSU1QTEVfSU5TVEFMTF0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBUaGVtZVNldEZvY3VzKF90aGVtZSwgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gSGFuZGxlcyBjb250cm9sIGNsaWNrcworICAgIC8vCisgICAgdm9pZCBPbkNvbW1hbmQoQ09OVFJPTF9JRCBpZCkgeworICAgICAgICBMUFdTVFIgZGVmYXVsdERpciA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyOworICAgICAgICBMT05HTE9ORyBlbGV2YXRlZCwgY3J0SW5zdGFsbGVkLCBpbnN0YWxsQWxsVXNlcnM7CisgICAgICAgIEJPT0wgY2hlY2tlZCwgbGF1bmNoZXJDaGVja2VkOworICAgICAgICBXQ0hBUiB3elBhdGhbTUFYX1BBVEhdID0geyB9OworICAgICAgICBCUk9XU0VJTkZPVyBicm93c2VJbmZvID0geyB9OworICAgICAgICBQSURMSVNUX0FCU09MVVRFIHBpZGwgPSBudWxscHRyOworICAgICAgICBEV09SRCBwYWdlSWQ7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIHN3aXRjaChpZCkgeworICAgICAgICBjYXNlIElEX0NMT1NFX0JVVFRPTjoKKyAgICAgICAgICAgIE9uQ2xpY2tDbG9zZUJ1dHRvbigpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gSW5zdGFsbCBjb21tYW5kcworICAgICAgICBjYXNlIElEX0lOU1RBTExfU0lNUExFX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX1VQR1JBREVfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICBjYXNlIElEX0lOU1RBTExfQlVUVE9OOgorICAgICAgICAgICAgU2F2ZVBhZ2VTZXR0aW5ncygpOworCisgICAgICAgICAgICBpZiAoIVdpbGxFbGV2YXRlKCkgJiYgIVF1ZXJ5RWxldmF0ZUZvckNydEluc3RhbGwoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIkluc3RhbGxBbGxVc2VycyIsICZpbnN0YWxsQWxsVXNlcnMpOworICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgTCJGYWlsZWQgdG8gZ2V0IGluc3RhbGwgc2NvcGUiKTsKKworICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJDb21waWxlQWxsIiwgaW5zdGFsbEFsbFVzZXJzKTsKKyAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsIEwiRmFpbGVkIHRvIHVwZGF0ZSBDb21waWxlQWxsIik7CisKKyAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICF0YXJnZXREaXIgfHwgIXRhcmdldERpclswXSkgeworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICB0YXJnZXREaXIgPSBudWxscHRyOworCisgICAgICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZSgKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbEFsbFVzZXJzID8gTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiIDogTCJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiwKKyAgICAgICAgICAgICAgICAgICAgJmRlZmF1bHREaXIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IHRoZSBkZWZhdWx0IGluc3RhbGwgZGlyZWN0b3J5Iik7CisKKyAgICAgICAgICAgICAgICBpZiAoIWRlZmF1bHREaXIgfHwgIWRlZmF1bHREaXJbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nRXJyb3IoRV9JTlZBTElEQVJHLCAiRGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSBpcyBibGFuayIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKGRlZmF1bHREaXIsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCAnJWxzJyIsIGRlZmF1bHREaXIpOworCisgICAgICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhMIlRhcmdldERpciIsIHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzZXQgaW5zdGFsbCB0YXJnZXQgZGlyZWN0b3J5Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSZWxlYXNlU3RyKHRhcmdldERpcik7CisKKyAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT00xX0JBQ0tfQlVUVE9OOgorICAgICAgICAgICAgU2F2ZVBhZ2VTZXR0aW5ncygpOworICAgICAgICAgICAgaWYgKF9tb2RpZnlpbmcpIHsKKyAgICAgICAgICAgICAgICBHb1RvUGFnZShQQUdFX01PRElGWSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKF91cGdyYWRpbmcpIHsKKyAgICAgICAgICAgICAgICBHb1RvUGFnZShQQUdFX1VQR1JBREUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0lOU1RBTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0NVU1RPTV9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9VUEdSQURFX0NVU1RPTV9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgSURfQ1VTVE9NMl9CQUNLX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgIEdvVG9QYWdlKFBBR0VfQ1VTVE9NMSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9ORVhUX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgIEdvVG9QYWdlKFBBR0VfQ1VTVE9NMik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9JTlNUQUxMX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKworICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShMIlRhcmdldERpciIsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBDaGVjayB3aGV0aGVyIGRpcmVjdG9yeSBleGlzdHMgYW5kIGNvbnRhaW5zIGFub3RoZXIgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cih0YXJnZXREaXIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIVdpbGxFbGV2YXRlKCkgJiYgIVF1ZXJ5RWxldmF0ZUZvckNydEluc3RhbGwoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBPblBsYW4oX2NvbW1hbmQuYWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1g6CisgICAgICAgICAgICBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgSURfSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbExhdW5jaGVyQWxsVXNlcnMiLCBjaGVja2VkKTsKKworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9JTlNUQUxMX0JVVFRPTiwgV2lsbEVsZXZhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWDoKKyAgICAgICAgICAgIGNoZWNrZWQgPSBUaGVtZUlzQ29udHJvbENoZWNrZWQoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbExhdW5jaGVyQWxsVXNlcnMiLCBjaGVja2VkKTsKKworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIFdpbGxFbGV2YXRlKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fSU5TVEFMTF9BTExfVVNFUlNfQ0hFQ0tCT1g6CisgICAgICAgICAgICBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxBbGxVc2VycyIsIGNoZWNrZWQpOworCisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX0NVU1RPTV9JTlNUQUxMX0JVVFRPTiwgV2lsbEVsZXZhdGUoKSk7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9DVVNUT01fQlJPV1NFX0JVVFRPTl9MQUJFTCwgIWNoZWNrZWQpOworICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJDb21waWxlQWxsIiwgMSk7CisgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoX3RoZW1lLCBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsIEJNX1NFVENIRUNLLCBCU1RfQ0hFQ0tFRCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUaGVtZUdldFRleHRDb250cm9sKF90aGVtZSwgSURfVEFSR0VURElSX0VESVRCT1gsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgaWYgKHRhcmdldERpcikgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHZhbHVlIGFnYWluc3QgdGhlIGRlZmF1bHQgdG8gc2VlCisgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc2hvdWxkIHN3aXRjaCBpdCBhdXRvbWF0aWNhbGx5LgorICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPyBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiIDogTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdERpcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZGVmYXVsdERpcikgeworICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHREaXJbMF0gJiYgU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhkZWZhdWx0RGlyLCAmZm9ybWF0dGVkKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3Y3NjbXAoZm9ybWF0dGVkLCB0YXJnZXREaXIpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGRlZmF1bHREaXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIoZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdERpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZGVmYXVsdERpciAmJiBkZWZhdWx0RGlyWzBdICYmIFNVQ0NFRURFRChCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdERpciwgJmZvcm1hdHRlZCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihmb3JtYXR0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihmb3JtYXR0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGRlZmF1bHREaXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfQ1VTVE9NX0JST1dTRV9CVVRUT046CisgICAgICAgICAgICBicm93c2VJbmZvLmh3bmRPd25lciA9IF9oV25kOworICAgICAgICAgICAgYnJvd3NlSW5mby5wc3pEaXNwbGF5TmFtZSA9IHd6UGF0aDsKKyAgICAgICAgICAgIGJyb3dzZUluZm8ubHBzelRpdGxlID0gX3RoZW1lLT5zY3pDYXB0aW9uOworICAgICAgICAgICAgYnJvd3NlSW5mby51bEZsYWdzID0gQklGX1JFVFVSTk9OTFlGU0RJUlMgfCBCSUZfVVNFTkVXVUk7CisgICAgICAgICAgICBwaWRsID0gOjpTSEJyb3dzZUZvckZvbGRlclcoJmJyb3dzZUluZm8pOworICAgICAgICAgICAgaWYgKHBpZGwgJiYgOjpTSEdldFBhdGhGcm9tSURMaXN0VyhwaWRsLCB3elBhdGgpKSB7CisgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCB3elBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocGlkbCkgeworICAgICAgICAgICAgICAgIDo6Q29UYXNrTWVtRnJlZShwaWRsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIE1vZGlmeSBjb21tYW5kcworICAgICAgICBjYXNlIElEX01PRElGWV9CVVRUT046CisgICAgICAgICAgICAvLyBTb21lIHZhcmlhYmxlcyBjYW5ub3QgYmUgbW9kaWZpZWQKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiSW5zdGFsbEFsbFVzZXJzU3RhdGUiLCBMImRpc2FibGUiKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNTdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXREaXJTdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJDdXN0b21Ccm93c2VCdXR0b25TdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX21vZGlmeWluZyA9IFRSVUU7CisgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0NVU1RPTTEpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9SRVBBSVJfQlVUVE9OOgorICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfVU5JTlNUQUxMX0JVVFRPTjoKKyAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkIEluc3RhbGxQYWdlX1Nob3coKSB7CisgICAgICAgIC8vIEVuc3VyZSB0aGUgQWxsIFVzZXJzIGluc3RhbGwgYnV0dG9uIGhhcyBhIFVBQyBzaGllbGQKKyAgICAgICAgQk9PTCBlbGV2YXRlZCA9IFdpbGxFbGV2YXRlKCk7CisgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfSU5TVEFMTF9CVVRUT04sIGVsZXZhdGVkKTsKKyAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9JTlNUQUxMX1NJTVBMRV9CVVRUT04sIGVsZXZhdGVkKTsKKyAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9JTlNUQUxMX1VQR1JBREVfQlVUVE9OLCBlbGV2YXRlZCk7CisgICAgfQorCisgICAgdm9pZCBDdXN0b20xUGFnZV9TaG93KCkgeworICAgICAgICBMT05HTE9ORyBpbnN0YWxsTGF1bmNoZXJBbGxVc2VyczsKKworICAgICAgICBpZiAoRkFJTEVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgJmluc3RhbGxMYXVuY2hlckFsbFVzZXJzKSkpIHsKKyAgICAgICAgICAgIGluc3RhbGxMYXVuY2hlckFsbFVzZXJzID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIFRoZW1lU2VuZENvbnRyb2xNZXNzYWdlKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YLCBCTV9TRVRDSEVDSywKKyAgICAgICAgICAgIGluc3RhbGxMYXVuY2hlckFsbFVzZXJzID8gQlNUX0NIRUNLRUQgOiBCU1RfVU5DSEVDS0VELCAwKTsKKyAgICB9CisKKyAgICB2b2lkIEN1c3RvbTJQYWdlX1Nob3coKSB7CisgICAgICAgIEhSRVNVTFQgaHI7CisgICAgICAgIExPTkdMT05HIGluc3RhbGxBbGwsIGluY2x1ZGVMYXVuY2hlcjsKKyAgICAgICAgCisgICAgICAgIGlmIChGQUlMRUQoQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiSW5zdGFsbEFsbFVzZXJzIiwgJmluc3RhbGxBbGwpKSkgeworICAgICAgICAgICAgaW5zdGFsbEFsbCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV2lsbEVsZXZhdGUoKSkgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIFRSVUUpOworICAgICAgICAgICAgVGhlbWVTaG93Q29udHJvbChfdGhlbWUsIElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OX0xBQkVMLCBTV19ISURFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICBUaGVtZVNob3dDb250cm9sKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbmNsdWRlX2xhdW5jaGVyIiwgJmluY2x1ZGVMYXVuY2hlcikpICYmIGluY2x1ZGVMYXVuY2hlcikgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgVFJVRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUaGVtZVNlbmRDb250cm9sTWVzc2FnZShfdGhlbWUsIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsIEJNX1NFVENIRUNLLCBCU1RfVU5DSEVDS0VELCAwKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsIEZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyOworICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIHRhcmdldERpciAmJiB0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIFN0ckZyZWUodGFyZ2V0RGlyKTsKKyAgICAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBTdHJGcmVlKHRhcmdldERpcik7CisgICAgICAgICAgICB0YXJnZXREaXIgPSBudWxscHRyOworCisgICAgICAgICAgICBMUFdTVFIgZGVmYXVsdFRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiRGVmYXVsdEN1c3RvbVRhcmdldERpciIsICZkZWZhdWx0VGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHRUYXJnZXREaXIgJiYgIWRlZmF1bHRUYXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgICAgICBTdHJGcmVlKGRlZmF1bHRUYXJnZXREaXIpOworICAgICAgICAgICAgICAgIGRlZmF1bHRUYXJnZXREaXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdFRhcmdldERpcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBkZWZhdWx0VGFyZ2V0RGlyKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRUYXJnZXREaXJbMF0gJiYgU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhkZWZhdWx0VGFyZ2V0RGlyLCAmdGFyZ2V0RGlyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCB0YXJnZXREaXIpOworICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0ckZyZWUoZGVmYXVsdFRhcmdldERpcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIE1vZGlmeVBhZ2VfU2hvdygpIHsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUkVQQUlSX0JVVFRPTiwgIV9zdXBwcmVzc1JlcGFpcik7CisgICAgfQorCisgICAgdm9pZCBTdWNjZXNzUGFnZV9TaG93KCkgeworICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IG9yIGxhdW5jaCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKKyAgICAgICAgQk9PTCBsYXVuY2hUYXJnZXRFeGlzdHMgPSBGQUxTRTsKKyAgICAgICAgTE9DX1NUUklORyAqc3VjY2Vzc1RleHQgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgCisgICAgICAgIGlmIChfcmVzdGFydFJlcXVpcmVkKSB7CisgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUID09IF9jb21tYW5kLnJlc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoVGhlbWVDb250cm9sRXhpc3RzKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTikpIHsKKyAgICAgICAgICAgIGxhdW5jaFRhcmdldEV4aXN0cyA9IEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoX3BsYW5uZWRBY3Rpb24pIHsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEw6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NJbnN0YWxsTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlk6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NNb2RpZnlNZXNzYWdlKSIsICZzdWNjZXNzVGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUjoKKyAgICAgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuU3VjY2Vzc1JlcGFpck1lc3NhZ2UpIiwgJnN1Y2Nlc3NUZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMOgorICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5TdWNjZXNzUmVtb3ZlTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VjY2Vzc1RleHQpIHsKKyAgICAgICAgICAgIExQV1NUUiBmb3JtYXR0ZWRTdHJpbmcgPSBudWxscHRyOworICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKHN1Y2Nlc3NUZXh0LT53elRleHQsICZmb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgaWYgKGZvcm1hdHRlZFN0cmluZykgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9TVUNDRVNTX1RFWFQsIGZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICAgICAgU3RyRnJlZShmb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTiwgbGF1bmNoVGFyZ2V0RXhpc3RzICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgX3BsYW5uZWRBY3Rpb24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgfQorCisgICAgdm9pZCBGYWlsdXJlUGFnZV9TaG93KCkgeworICAgICAgICAvLyBvbiB0aGUgIkZhaWx1cmUiIHBhZ2UsIHNob3cgZXJyb3IgbWVzc2FnZSBhbmQgY2hlY2sgaWYgdGhlIHJlc3RhcnQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgorCisgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbG9nIGZpbGUgdmFyaWFibGUgdGhlbiB3ZSdsbCBhc3N1bWUgdGhlIGxvZyBmaWxlIGV4aXN0cy4KKyAgICAgICAgQk9PTCBzaG93TG9nTGluayA9IChfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlICYmICpfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlKTsKKyAgICAgICAgQk9PTCBzaG93RXJyb3JNZXNzYWdlID0gRkFMU0U7CisgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKKworICAgICAgICBpZiAoRkFJTEVEKF9ockZpbmFsKSkgeworICAgICAgICAgICAgTFBXU1RSIHVuZm9ybWF0dGVkVGV4dCA9IG51bGxwdHI7CisgICAgICAgICAgICBMUFdTVFIgdGV4dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhlIGZhaWx1cmUgbWVzc2FnZSwgdXNlIHRoYXQuCisgICAgICAgICAgICBpZiAoX2ZhaWxlZE1lc3NhZ2UgJiYgKl9mYWlsZWRNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgU3RyQWxsb2NTdHJpbmcoJnVuZm9ybWF0dGVkVGV4dCwgX2ZhaWxlZE1lc3NhZ2UsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyB0cnkgdG8gZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGVycm9yIGNvZGUuCisgICAgICAgICAgICAgICAgU3RyQWxsb2NGcm9tRXJyb3IoJnVuZm9ybWF0dGVkVGV4dCwgX2hyRmluYWwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIGlmICghdW5mb3JtYXR0ZWRUZXh0IHx8ICEqdW5mb3JtYXR0ZWRUZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEVfRkFJTCwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEID09IF9ockZpbmFsKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuZm9ybWF0dGVkVGV4dCkgeworICAgICAgICAgICAgICAgICAgICBTdHJBbGxvY1N0cmluZygmdGV4dCwgdW5mb3JtYXR0ZWRUZXh0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZ0ZXh0LCBMIjB4JTA4eCAtICVscyIsIF9ockZpbmFsLCB1bmZvcm1hdHRlZFRleHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4dCkgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgdGV4dCk7CisgICAgICAgICAgICAgICAgc2hvd0Vycm9yTWVzc2FnZSA9IFRSVUU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlbGVhc2VTdHIodGV4dCk7CisgICAgICAgICAgICBSZWxlYXNlU3RyKHVuZm9ybWF0dGVkVGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiBCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgeworICAgICAgICAgICAgc2hvd1Jlc3RhcnRCdXR0b24gPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssIHNob3dMb2dMaW5rKTsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsIHNob3dFcnJvck1lc3NhZ2UpOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgfQorCisKK3B1YmxpYzogLy8gSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVAgT25TdGFydHVwKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgRFdPUkQgZHdVSVRocmVhZElkID0gMDsKKworICAgICAgICAvLyBjcmVhdGUgVUkgdGhyZWFkCisgICAgICAgIF9oVWlUaHJlYWQgPSA6OkNyZWF0ZVRocmVhZChudWxscHRyLCAwLCBVaVRocmVhZFByb2MsIHRoaXMsIDAsICZkd1VJVGhyZWFkSWQpOworICAgICAgICBpZiAoIV9oVWlUaHJlYWQpIHsKKyAgICAgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblNodXRkb3duKCkgeworICAgICAgICBpbnQgblJlc3VsdCA9IElETk9BQ1RJT047CisKKyAgICAgICAgLy8gd2FpdCBmb3IgVUkgdGhyZWFkIHRvIHRlcm1pbmF0ZQorICAgICAgICBpZiAoX2hVaVRocmVhZCkgeworICAgICAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KF9oVWlUaHJlYWQsIElORklOSVRFKTsKKyAgICAgICAgICAgIFJlbGVhc2VIYW5kbGUoX2hVaVRocmVhZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBhIHJlc3RhcnQgd2FzIHJlcXVpcmVkLgorICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiBfYWxsb3dSZXN0YXJ0KSB7CisgICAgICAgICAgICBuUmVzdWx0ID0gSURSRVNUQVJUOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5SZXN1bHQ7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkRldGVjdFJlbGF0ZWRCdW5kbGUoCisgICAgICAgIF9faW4gTFBDV1NUUiB3ekJ1bmRsZUlkLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVElPTl9UWVBFIHJlbGF0aW9uVHlwZSwKKyAgICAgICAgX19pbiBMUENXU1RSIC8qd3pCdW5kbGVUYWcqLywKKyAgICAgICAgX19pbiBCT09MIGZQZXJNYWNoaW5lLAorICAgICAgICBfX2luIERXT1JENjQgLypkdzY0VmVyc2lvbiovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTiBvcGVyYXRpb24KKyAgICApIHsKKyAgICAgICAgQmFsSW5mb0FkZFJlbGF0ZWRCdW5kbGVBc1BhY2thZ2UoJl9idW5kbGUucGFja2FnZXMsIHd6QnVuZGxlSWQsIHJlbGF0aW9uVHlwZSwgZlBlck1hY2hpbmUpOworCisgICAgICAgIC8vIFJlbWVtYmVyIHdoZW4gb3VyIGJ1bmRsZSB3b3VsZCBjYXVzZSBhIGRvd25ncmFkZS4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9ET1dOR1JBREUgPT0gb3BlcmF0aW9uKSB7CisgICAgICAgICAgICBfZG93bmdyYWRpbmdPdGhlclZlcnNpb24gPSBUUlVFOworICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9NQUpPUl9VUEdSQURFID09IG9wZXJhdGlvbikgeworICAgICAgICAgICAgX3VwZ3JhZGluZ09sZFZlcnNpb24gPSBUUlVFOworCisgICAgICAgICAgICAvLyBBc3N1bWUgd2UgZG9uJ3Qgd2FudCB0aGUgbGF1bmNoZXIgb3IgZmlsZSBhc3NvY2lhdGlvbnMsIGFuZCBpZgorICAgICAgICAgICAgLy8gdGhleSBoYXZlIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQgdGhlbiBsb2FkaW5nIHRoZSBzdGF0ZSB3aWxsCisgICAgICAgICAgICAvLyByZWFjdGl2YXRlIHRoZXNlIHNldHRpbmdzLgorICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5jbHVkZV9sYXVuY2hlciIsIDApOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQXNzb2NpYXRlRmlsZXMiLCAwKTsKKyAgICAgICAgICAgIGF1dG8gaHIgPSBMb2FkTGF1bmNoZXJTdGF0ZUZyb21LZXkoX2VuZ2luZSwgSEtFWV9DVVJSRU5UX1VTRVIpOworICAgICAgICAgICAgaWYgKGhyID09IFNfRkFMU0UpIHsKKyAgICAgICAgICAgICAgICBociA9IExvYWRMYXVuY2hlclN0YXRlRnJvbUtleShfZW5naW5lLCBIS0VZX0xPQ0FMX01BQ0hJTkUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9OT05FID09IG9wZXJhdGlvbikgeworICAgICAgICAgICAgaWYgKF9jb21tYW5kLmFjdGlvbiA9PSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwpIHsKKyAgICAgICAgICAgICAgICBMT0NfU1RSSU5HICpwTG9jU3RyaW5nID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkZhaWx1cmVFeGlzdGluZ0luc3RhbGwpIiwgJnBMb2NTdHJpbmcpKSAmJiBwTG9jU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIEJhbEZvcm1hdFN0cmluZyhwTG9jU3RyaW5nLT53elRleHQsICZfZmFpbGVkTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKEwiQ2Fubm90IGluc3RhbGwgW1dpeEJ1bmRsZU5hbWVdIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIiwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQmFsTG9nKAorICAgICAgICAgICAgICAgICAgICBCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAiUmVsYXRlZCBidW5kbGUgJWxzIGlzIHByZXZlbnRpbmcgaW5zdGFsbCIsCisgICAgICAgICAgICAgICAgICAgIHd6QnVuZGxlSWQKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfRkFJTEVELCBFX1dJWFNUREJBX0NPTkRJVElPTl9GQUlMRUQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSURPSzsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkRldGVjdFBhY2thZ2VDb21wbGV0ZSgKKyAgICAgICAgX19pbiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIEhSRVNVTFQgLypoclN0YXR1cyovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9QQUNLQUdFX1NUQVRFIHN0YXRlCisgICAgKSB7IH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRGV0ZWN0Q29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpICYmIF9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJ1bm5pbmcgZGV0ZWN0IGNvbXBsZXRlIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25EZXRlY3RDb21wbGV0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIGhyU3RhdHVzID0gRXZhbHVhdGVDb25kaXRpb25zKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBkZWZhdWx0IHBhdGggaGFzIGJlZW4gc2V0CisgICAgICAgICAgICBMT05HTE9ORyBpbnN0YWxsQWxsOworICAgICAgICAgICAgTFBXU1RSIHRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgICAgICBMUFdTVFIgZGVmYXVsdFRhcmdldERpciA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIGhyU3RhdHVzID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHJTdGF0dXMpIHx8ICF0YXJnZXREaXIgfHwgIXRhcmdldERpclswXSkgeworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICB0YXJnZXREaXIgPSBudWxscHRyOworCisgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbnN0YWxsQWxsVXNlcnMiLCAmaW5zdGFsbEFsbCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGhyU3RhdHVzID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdFRhcmdldERpcgorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSAmJiBkZWZhdWx0VGFyZ2V0RGlyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0VGFyZ2V0RGlyWzBdICYmIFNVQ0NFRURFRChCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdFRhcmdldERpciwgJnRhcmdldERpcikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoclN0YXR1cyA9IF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyIiwgdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGRlZmF1bHRUYXJnZXREaXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfREVURUNURUQsIGhyU3RhdHVzKTsKKworICAgICAgICAvLyBJZiB3ZSdyZSBub3QgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdXNlciBvciB3ZSdyZSBkb2luZyBhIGxheW91dCBvciB3ZSdyZSBqdXN0IGFmdGVyIGEgZm9yY2UgcmVzdGFydAorICAgICAgICAvLyB0aGVuIGF1dG9tYXRpY2FsbHkgc3RhcnQgcGxhbm5pbmcuCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID4gX2NvbW1hbmQuZGlzcGxheSB8fAorICAgICAgICAgICAgQk9PVFNUUkFQUEVSX0FDVElPTl9MQVlPVVQgPT0gX2NvbW1hbmQuYWN0aW9uIHx8CisgICAgICAgICAgICBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA9PSBfY29tbWFuZC5hY3Rpb24gfHwKKyAgICAgICAgICAgIEJPT1RTVFJBUFBFUl9SRVNVTUVfVFlQRV9SRUJPT1QgPT0gX2NvbW1hbmQucmVzdW1lVHlwZSkgeworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9QTEFOX1BBQ0tBR0VTLCAwLCBfY29tbWFuZC5hY3Rpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblBsYW5SZWxhdGVkQnVuZGxlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiAvKnd6QnVuZGxlSWQqLywKKyAgICAgICAgX19pbm91dF96IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFKiBwUmVxdWVzdGVkU3RhdGUKKyAgICApIHsKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSURPSzsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUGxhblBhY2thZ2VCZWdpbigKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW5vdXQgQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEUgKnBSZXF1ZXN0U3RhdGUKKyAgICApIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIEJBTF9JTkZPX1BBQ0tBR0UqIHBQYWNrYWdlID0gbnVsbHB0cjsKKworICAgICAgICBpZiAoX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0KSB7CisgICAgICAgICAgICAvLyBBZnRlciByZXN0YXJ0IHdlIG5lZWQgdG8gZmluaXNoIHRoZSBkZXBlbmRlbmN5IHJlZ2lzdHJhdGlvbiBmb3Igb3VyIHBhY2thZ2Ugc28gYWxsb3cgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgIC8vIHRvIGdvIHByZXNlbnQuCisgICAgICAgICAgICBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9ORVVUUkFMLCAwLCB3elBhY2thZ2VJZCwgLTEsIF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCwgLTEpKSB7CisgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFsbG93IGEgcmVwYWlyIGJlY2F1c2UgdGhhdCBjb3VsZCBwdXQgdXMgaW4gYSBwZXJwZXR1YWwgcmVzdGFydCBsb29wLgorICAgICAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9SRVBBSVIgPT0gKnBSZXF1ZXN0U3RhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgKnBSZXF1ZXN0U3RhdGUgPSBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9QUkVTRU5UOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJlbGVhc2VOdWxsU3RyKF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCk7IC8vIG5vIG1vcmUgc2tpcHBpbmcgbm93LgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBub3QgdGhlIG1hdGNoaW5nIHBhY2thZ2UsIHNvIHNraXAgaXQuCisgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJTa2lwcGluZyBwYWNrYWdlOiAlbHMsIGFmdGVyIHJlc3RhcnQgYmVjYXVzZSBpdCB3YXMgYXBwbGllZCBiZWZvcmUgdGhlIHJlc3RhcnQuIiwgd3pQYWNrYWdlSWQpOworCisgICAgICAgICAgICAgICAgKnBSZXF1ZXN0U3RhdGUgPSBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9OT05FOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChfcGxhbm5lZEFjdGlvbiA9PSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgfHwgX3BsYW5uZWRBY3Rpb24gPT0gQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlkpICYmCisgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKEJhbEluZm9GaW5kUGFja2FnZUJ5SWQoJl9idW5kbGUucGFja2FnZXMsIHd6UGFja2FnZUlkLCAmcFBhY2thZ2UpKSkgeworICAgICAgICAgICAgQk9PTCBmID0gRkFMU0U7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKF9lbmdpbmUtPkV2YWx1YXRlQ29uZGl0aW9uKHBQYWNrYWdlLT5zY3pJbnN0YWxsQ29uZGl0aW9uLCAmZikpICYmIGYpIHsKKyAgICAgICAgICAgICAgICAqcFJlcXVlc3RTdGF0ZSA9IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFX1BSRVNFTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBJRE9LOworICAgIH0KKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUGxhbk1zaUZlYXR1cmUoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3ekZlYXR1cmVJZCwKKyAgICAgICAgX19pbm91dCBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURSogcFJlcXVlc3RlZFN0YXRlCisgICAgKSB7CisgICAgICAgIExPTkdMT05HIGluc3RhbGw7CisgICAgICAgIAorICAgICAgICBpZiAod2NzY21wKHd6RmVhdHVyZUlkLCBMIkFzc29jaWF0ZUZpbGVzIikgPT0gMCB8fCB3Y3NjbXAod3pGZWF0dXJlSWQsIEwiU2hvcnRjdXRzIikgPT0gMCkgeworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChfZW5naW5lLT5HZXRWYXJpYWJsZU51bWVyaWMod3pGZWF0dXJlSWQsICZpbnN0YWxsKSkgJiYgaW5zdGFsbCkgeworICAgICAgICAgICAgICAgICpwUmVxdWVzdGVkU3RhdGUgPSBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURV9MT0NBTDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnBSZXF1ZXN0ZWRTdGF0ZSA9IEJPT1RTVFJBUFBFUl9GRUFUVVJFX1NUQVRFX0FCU0VOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwUmVxdWVzdGVkU3RhdGUgPSBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURV9MT0NBTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBJRE5PQUNUSU9OOworICAgIH0KKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPblBsYW5Db21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykgJiYgX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBwbGFuIGNvbXBsZXRlIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25QbGFuQ29tcGxldGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfUExBTk5FRCwgaHJTdGF0dXMpOworCisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpKSB7CisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9BUFBMWV9QQUNLQUdFUywgMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBfc3RhcnRlZEV4ZWN1dGlvbiA9IEZBTFNFOworICAgICAgICBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgPSAwOworICAgICAgICBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyA9IDA7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkNhY2hlUGFja2FnZUJlZ2luKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBEV09SRCBjQ2FjaGVQYXlsb2FkcywKKyAgICAgICAgX19pbiBEV09SRDY0IGR3NjRQYWNrYWdlQ2FjaGVTaXplCisgICAgKSB7CisgICAgICAgIGlmICh3elBhY2thZ2VJZCAmJiAqd3pQYWNrYWdlSWQpIHsKKyAgICAgICAgICAgIEJBTF9JTkZPX1BBQ0tBR0UqIHBQYWNrYWdlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBCYWxJbmZvRmluZFBhY2thZ2VCeUlkKCZfYnVuZGxlLnBhY2thZ2VzLCB3elBhY2thZ2VJZCwgJnBQYWNrYWdlKTsKKyAgICAgICAgICAgIExQQ1dTVFIgd3ogPSAoU1VDQ0VFREVEKGhyKSAmJiBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUpID8gcFBhY2thZ2UtPnNjekRpc3BsYXlOYW1lIDogd3pQYWNrYWdlSWQ7CisKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIHd6KTsKKworICAgICAgICAgICAgLy8gSWYgc29tZXRoaW5nIHN0YXJ0ZWQgZXhlY3V0aW5nLCBsZWF2ZSBpdCBpbiB0aGUgb3ZlcmFsbCBwcm9ncmVzcyB0ZXh0LgorICAgICAgICAgICAgaWYgKCFfc3RhcnRlZEV4ZWN1dGlvbikgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgd3opOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVQYWNrYWdlQmVnaW4od3pQYWNrYWdlSWQsIGNDYWNoZVBheWxvYWRzLCBkdzY0UGFja2FnZUNhY2hlU2l6ZSk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkNhY2hlQWNxdWlyZVByb2dyZXNzKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VPckNvbnRhaW5lcklkLAorICAgICAgICBfX2luX3pfb3B0IExQQ1dTVFIgd3pQYXlsb2FkSWQsCisgICAgICAgIF9faW4gRFdPUkQ2NCBkdzY0UHJvZ3Jlc3MsCisgICAgICAgIF9faW4gRFdPUkQ2NCBkdzY0VG90YWwsCisgICAgICAgIF9faW4gRFdPUkQgZHdPdmVyYWxsUGVyY2VudGFnZQorICAgICkgeworICAgICAgICBXQ0hBUiB3elByb2dyZXNzWzVdID0geyB9OworCisjaWZkZWYgREVCVUcKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJQWUJBOiBPbkNhY2hlQWNxdWlyZVByb2dyZXNzKCkgLSBjb250YWluZXIvcGFja2FnZTogJWxzLCBwYXlsb2FkOiAlbHMsIHByb2dyZXNzOiAlSTY0dSwgdG90YWw6ICVJNjR1LCBvdmVyYWxsIHByb2dyZXNzOiAldSUlIiwgd3pQYWNrYWdlT3JDb250YWluZXJJZCwgd3pQYXlsb2FkSWQsIGR3NjRQcm9ncmVzcywgZHc2NFRvdGFsLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKyNlbmRpZgorCisgICAgICAgIDo6U3RyaW5nQ2NoUHJpbnRmVyh3elByb2dyZXNzLCBjb3VudG9mKHd6UHJvZ3Jlc3MpLCBMIiV1JSUiLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0NBQ0hFX1BST0dSRVNTX1RFWFQsIHd6UHJvZ3Jlc3MpOworCisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfQ0FDSEVfUFJPR1JFU1NfQkFSLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKworICAgICAgICBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgPSBkd092ZXJhbGxQZXJjZW50YWdlICogUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgLyAxMDA7CisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9DQUxDVUxBVEVEX1BST0dSRVNTX0JBUiwgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzICsgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MpOworCisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcyhfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgKyBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyk7CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVBY3F1aXJlUHJvZ3Jlc3Mod3pQYWNrYWdlT3JDb250YWluZXJJZCwgd3pQYXlsb2FkSWQsIGR3NjRQcm9ncmVzcywgZHc2NFRvdGFsLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQ2FjaGVBY3F1aXJlQ29tcGxldGUoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZU9yQ29udGFpbmVySWQsCisgICAgICAgIF9faW5fel9vcHQgTFBDV1NUUiB3elBheWxvYWRJZCwKKyAgICAgICAgX19pbiBIUkVTVUxUIGhyU3RhdHVzLAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShoclN0YXR1cyk7CisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkNhY2hlQWNxdWlyZUNvbXBsZXRlKHd6UGFja2FnZU9yQ29udGFpbmVySWQsIHd6UGF5bG9hZElkLCBoclN0YXR1cywgblJlY29tbWVuZGF0aW9uKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQ2FjaGVWZXJpZnlDb21wbGV0ZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGF5bG9hZElkLAorICAgICAgICBfX2luIEhSRVNVTFQgaHJTdGF0dXMsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKGhyU3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVWZXJpZnlDb21wbGV0ZSh3elBhY2thZ2VJZCwgd3pQYXlsb2FkSWQsIGhyU3RhdHVzLCBuUmVjb21tZW5kYXRpb24pOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uQ2FjaGVDb21wbGV0ZShfX2luIEhSRVNVTFQgLypoclN0YXR1cyovKSB7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiIik7CisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfQ0FDSEVELCBTX09LKTsgLy8gd2UgYWx3YXlzIHJldHVybiBzdWNjZXNzIGhlcmUgYW5kIGxldCBPbkFwcGx5Q29tcGxldGUoKSBkZWFsIHdpdGggdGhlIGVycm9yLgorICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25FcnJvcigKKyAgICAgICAgX19pbiBCT09UU1RSQVBQRVJfRVJST1JfVFlQRSBlcnJvclR5cGUsCisgICAgICAgIF9faW4gTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBEV09SRCBkd0NvZGUsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6RXJyb3IsCisgICAgICAgIF9faW4gRFdPUkQgZHdVSUhpbnQsCisgICAgICAgIF9faW4gRFdPUkQgLypjRGF0YSovLAorICAgICAgICBfX2luX2Vjb3VudF96X29wdChjRGF0YSkgTFBDV1NUUiogLypyZ3d6RGF0YSovLAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyAgICAgICAgaW50IG5SZXN1bHQgPSBuUmVjb21tZW5kYXRpb247CisgICAgICAgIExQV1NUUiBzY3pFcnJvciA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0VNQkVEREVEID09IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBfZW5naW5lLT5TZW5kRW1iZWRkZWRFcnJvcihkd0NvZGUsIHd6RXJyb3IsIGR3VUlIaW50LCAmblJlc3VsdCk7CisgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBJREVSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlLCBsZXQgdGhlIGVuZ2luZSB0cnkgdG8gaGFuZGxlIGl0IGZvciB1cy4KKyAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRVJST1JfVFlQRV9IVFRQX0FVVEhfU0VSVkVSID09IGVycm9yVHlwZSB8fCBCT09UU1RSQVBQRVJfRVJST1JfVFlQRV9IVFRQX0FVVEhfUFJPWFkgPT0gZXJyb3JUeXBlKSB7CisgICAgICAgICAgICAgICAgblJlc3VsdCA9IElEVFJZQUdBSU47CisgICAgICAgICAgICB9IGVsc2UgLy8gc2hvdyBhIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSBib3guCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQmFsUmV0cnlFcnJvck9jY3VycmVkKHd6UGFja2FnZUlkLCBkd0NvZGUpOworCisgICAgICAgICAgICAgICAgaWYgKCFfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyBlcnJvciBtZXNzYWdlIHdhcyBwcm92aWRlZCwgdXNlIHRoZSBlcnJvciBjb2RlIHRvIHRyeSBhbmQgZ2V0IGFuIGVycm9yIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICghd3pFcnJvciB8fCAhKnd6RXJyb3IgfHwgQk9PVFNUUkFQUEVSX0VSUk9SX1RZUEVfV0lORE9XU19JTlNUQUxMRVIgIT0gZXJyb3JUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gU3RyQWxsb2NGcm9tRXJyb3IoJnNjekVycm9yLCBkd0NvZGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIXNjekVycm9yIHx8ICEqc2N6RXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJBbGxvY0Zvcm1hdHRlZCgmc2N6RXJyb3IsIEwiMHgleCIsIGR3Q29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBuUmVzdWx0ID0gOjpNZXNzYWdlQm94VyhfaFduZCwgc2N6RXJyb3IgPyBzY3pFcnJvciA6IHd6RXJyb3IsIF90aGVtZS0+c2N6Q2FwdGlvbiwgZHdVSUhpbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShIUkVTVUxUX0ZST01fV0lOMzIoZHdDb2RlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBqdXN0IHRha2Ugbm90ZSBvZiB0aGUgZXJyb3IgY29kZSBhbmQgbGV0IHRoaW5ncyBjb250aW51ZS4KKyAgICAgICAgICAgIEJhbFJldHJ5RXJyb3JPY2N1cnJlZCh3elBhY2thZ2VJZCwgZHdDb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlbGVhc2VTdHIoc2N6RXJyb3IpOworICAgICAgICByZXR1cm4gblJlc3VsdDsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uRXhlY3V0ZU1zaU1lc3NhZ2UoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIElOU1RBTExNRVNTQUdFIG10LAorICAgICAgICBfX2luIFVJTlQgdWlGbGFncywKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pNZXNzYWdlLAorICAgICAgICBfX2luIERXT1JEIGNEYXRhLAorICAgICAgICBfX2luX2Vjb3VudF96X29wdChjRGF0YSkgTFBDV1NUUiogcmd3ekRhdGEsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworI2lmZGVmIERFQlVHCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUFlCQTogT25FeGVjdXRlTXNpTWVzc2FnZSgpIC0gcGFja2FnZTogJWxzLCBtZXNzYWdlOiAlbHMiLCB3elBhY2thZ2VJZCwgd3pNZXNzYWdlKTsKKyNlbmRpZgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA9PSBfY29tbWFuZC5kaXNwbGF5ICYmIChJTlNUQUxMTUVTU0FHRV9XQVJOSU5HID09IG10IHx8IElOU1RBTExNRVNTQUdFX1VTRVIgPT0gbXQpKSB7CisgICAgICAgICAgICBpbnQgblJlc3VsdCA9IDo6TWVzc2FnZUJveFcoX2hXbmQsIHd6TWVzc2FnZSwgX3RoZW1lLT5zY3pDYXB0aW9uLCB1aUZsYWdzKTsKKyAgICAgICAgICAgIHJldHVybiBuUmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKElOU1RBTExNRVNTQUdFX0FDVElPTlNUQVJUID09IG10KSB7CisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19BQ1RJT05EQVRBX1RFWFQsIHd6TWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25FeGVjdXRlTXNpTWVzc2FnZSh3elBhY2thZ2VJZCwgbXQsIHVpRmxhZ3MsIHd6TWVzc2FnZSwgY0RhdGEsIHJnd3pEYXRhLCBuUmVjb21tZW5kYXRpb24pOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25Qcm9ncmVzcyhfX2luIERXT1JEIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBfX2luIERXT1JEIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSkgeworICAgICAgICBXQ0hBUiB3elByb2dyZXNzWzVdID0geyB9OworCisjaWZkZWYgREVCVUcKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJQWUJBOiBPblByb2dyZXNzKCkgLSBwcm9ncmVzczogJXUlJSwgb3ZlcmFsbCBwcm9ncmVzczogJXUlJSIsIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworI2VuZGlmCisKKyAgICAgICAgOjpTdHJpbmdDY2hQcmludGZXKHd6UHJvZ3Jlc3MsIGNvdW50b2Yod3pQcm9ncmVzcyksIEwiJXUlJSIsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIHd6UHJvZ3Jlc3MpOworCisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9QUk9HUkVTU19CQVIsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcyhkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworCisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPblByb2dyZXNzKGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25FeGVjdXRlUGFja2FnZUJlZ2luKF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLCBfX2luIEJPT0wgZkV4ZWN1dGUpIHsKKyAgICAgICAgTFBXU1RSIHNjekZvcm1hdHRlZFN0cmluZyA9IG51bGxwdHI7CisKKyAgICAgICAgX3N0YXJ0ZWRFeGVjdXRpb24gPSBUUlVFOworCisgICAgICAgIGlmICh3elBhY2thZ2VJZCAmJiAqd3pQYWNrYWdlSWQpIHsKKyAgICAgICAgICAgIEJBTF9JTkZPX1BBQ0tBR0UqIHBQYWNrYWdlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhbEluZm9GaW5kUGFja2FnZUJ5SWQoJl9idW5kbGUucGFja2FnZXMsIHd6UGFja2FnZUlkLCAmcFBhY2thZ2UpOworCisgICAgICAgICAgICBMUENXU1RSIHd6ID0gd3pQYWNrYWdlSWQ7CisgICAgICAgICAgICBpZiAocFBhY2thZ2UpIHsKKyAgICAgICAgICAgICAgICBMT0NfU1RSSU5HKiBwTG9jU3RyaW5nID0gbnVsbHB0cjsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAocFBhY2thZ2UtPnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJBTF9JTkZPX1BBQ0tBR0VfVFlQRV9CVU5ETEVfQURET046CisgICAgICAgICAgICAgICAgICAgIExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkV4ZWN1dGVBZGRvblJlbGF0ZWRCdW5kbGVNZXNzYWdlKSIsICZwTG9jU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIEJBTF9JTkZPX1BBQ0tBR0VfVFlQRV9CVU5ETEVfUEFUQ0g6CisgICAgICAgICAgICAgICAgICAgIExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkV4ZWN1dGVQYXRjaFJlbGF0ZWRCdW5kbGVNZXNzYWdlKSIsICZwTG9jU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIEJBTF9JTkZPX1BBQ0tBR0VfVFlQRV9CVU5ETEVfVVBHUkFERToKKyAgICAgICAgICAgICAgICAgICAgTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRXhlY3V0ZVVwZ3JhZGVSZWxhdGVkQnVuZGxlTWVzc2FnZSkiLCAmcExvY1N0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwTG9jU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3aXggZGV2ZWxvcGVyIGlzIHNob3dpbmcgYSBoaWRkZW4gdmFyaWFibGUgaW4gdGhlIFVJLCB0aGVuIG9idmlvdXNseSB0aGV5IGRvbid0IGNhcmUgYWJvdXQga2VlcGluZyBpdCBzYWZlCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIGRvbid0IGdvIGRvd24gdGhlIHJhYmJpdCBob2xlIG9mIG1ha2luZyBzdXJlIHRoYXQgdGhpcyBpcyBzZWN1cmVseSBmcmVlZC4KKyAgICAgICAgICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKHBMb2NTdHJpbmctPnd6VGV4dCwgJnNjekZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgd3ogPSBzY3pGb3JtYXR0ZWRTdHJpbmcgPyBzY3pGb3JtYXR0ZWRTdHJpbmcgOiBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUgPyBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUgOiB3elBhY2thZ2VJZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBwUGFja2FnZSAmJiBwUGFja2FnZS0+ZkRpc3BsYXlJbnRlcm5hbFVJOworCisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIHd6KTsKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgd3opOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIFJlbGVhc2VTdHIoc2N6Rm9ybWF0dGVkU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uRXhlY3V0ZVBhY2thZ2VCZWdpbih3elBhY2thZ2VJZCwgZkV4ZWN1dGUpOworICAgIH0KKworCisgICAgdmlydHVhbCBpbnQgX19zdGRjYWxsIE9uRXhlY3V0ZVByb2dyZXNzKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBEV09SRCBkd1Byb2dyZXNzUGVyY2VudGFnZSwKKyAgICAgICAgX19pbiBEV09SRCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UKKyAgICApIHsKKyAgICAgICAgV0NIQVIgd3pQcm9ncmVzc1s4XSA9IHsgfTsKKworI2lmZGVmIERFQlVHCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUFlCQTogT25FeGVjdXRlUHJvZ3Jlc3MoKSAtIHBhY2thZ2U6ICVscywgcHJvZ3Jlc3M6ICV1JSUsIG92ZXJhbGwgcHJvZ3Jlc3M6ICV1JSUiLCB3elBhY2thZ2VJZCwgZHdQcm9ncmVzc1BlcmNlbnRhZ2UsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisjZW5kaWYKKworICAgICAgICA6OlN0cmluZ0NjaFByaW50Zlcod3pQcm9ncmVzcywgY291bnRvZih3elByb2dyZXNzKSwgTCIldSUlIiwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfVEVYVCwgd3pQcm9ncmVzcyk7CisKKyAgICAgICAgVGhlbWVTZXRQcm9ncmVzc0NvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX0JBUiwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKworICAgICAgICBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyA9IGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSAqICgxMDAgLSBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSkgLyAxMDA7CisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9DQUxDVUxBVEVEX1BST0dSRVNTX0JBUiwgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzICsgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MpOworCisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcyhfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgKyBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyk7CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uRXhlY3V0ZVByb2dyZXNzKHd6UGFja2FnZUlkLCBkd1Byb2dyZXNzUGVyY2VudGFnZSwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uRXhlY3V0ZVBhY2thZ2VDb21wbGV0ZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gSFJFU1VMVCBockV4aXRDb2RlLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUIHJlc3RhcnQsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKGhyRXhpdENvZGUpOworCisgICAgICAgIGlmIChfd2NzbmljbXAod3pQYWNrYWdlSWQsIEwicGF0aF8iLCA1KSA9PSAwICYmIFNVQ0NFRURFRChockV4aXRDb2RlKSkgeworICAgICAgICAgICAgU2VuZE1lc3NhZ2VUaW1lb3V0VygKKyAgICAgICAgICAgICAgICBIV05EX0JST0FEQ0FTVCwKKyAgICAgICAgICAgICAgICBXTV9TRVRUSU5HQ0hBTkdFLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KEwiRW52aXJvbm1lbnQiKSwKKyAgICAgICAgICAgICAgICBTTVRPX0FCT1JUSUZIVU5HLAorICAgICAgICAgICAgICAgIDEwMDAsCisgICAgICAgICAgICAgICAgbnVsbHB0cgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBuUmVzdWx0ID0gX19zdXBlcjo6T25FeGVjdXRlUGFja2FnZUNvbXBsZXRlKHd6UGFja2FnZUlkLCBockV4aXRDb2RlLCByZXN0YXJ0LCBuUmVjb21tZW5kYXRpb24pOworCisgICAgICAgIHJldHVybiBuUmVzdWx0OworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRXhlY3V0ZUNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cykgeworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiIik7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX0FDVElPTkRBVEFfVEVYVCwgTCIiKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX09WRVJBTExfUFJPR1JFU1NfUEFDS0FHRV9URVhULCBMIiIpOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLCBGQUxTRSk7IC8vIG5vIG1vcmUgY2FuY2VsLgorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfRVhFQ1VURUQsIFNfT0spOyAvLyB3ZSBhbHdheXMgcmV0dXJuIHN1Y2Nlc3MgaGVyZSBhbmQgbGV0IE9uQXBwbHlDb21wbGV0ZSgpIGRlYWwgd2l0aCB0aGUgZXJyb3IuCisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHJTdGF0dXMpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25SZXNvbHZlU291cmNlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VPckNvbnRhaW5lcklkLAorICAgICAgICBfX2luX3pfb3B0IExQQ1dTVFIgd3pQYXlsb2FkSWQsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6TG9jYWxTb3VyY2UsCisgICAgICAgIF9faW5fel9vcHQgTFBDV1NUUiB3ekRvd25sb2FkU291cmNlCisgICAgKSB7CisgICAgICAgIGludCBuUmVzdWx0ID0gSURFUlJPUjsgLy8gYXNzdW1lIHdlIHdvbid0IHJlc29sdmUgc291cmNlIGFuZCB0aGF0IGlzIHVuZXhwZWN0ZWQuCisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgaWYgKHd6RG93bmxvYWRTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICBuUmVzdWx0ID0gSURET1dOTE9BRDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcHJvbXB0IHRvIGNoYW5nZSB0aGUgc291cmNlIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgIE9QRU5GSUxFTkFNRVcgb2ZuID0geyB9OworICAgICAgICAgICAgICAgIFdDSEFSIHd6RmlsZVtNQVhfUEFUSF0gPSB7IH07CisKKyAgICAgICAgICAgICAgICA6OlN0cmluZ0NjaENvcHlXKHd6RmlsZSwgY291bnRvZih3ekZpbGUpLCB3ekxvY2FsU291cmNlKTsKKworICAgICAgICAgICAgICAgIG9mbi5sU3RydWN0U2l6ZSA9IHNpemVvZihvZm4pOworICAgICAgICAgICAgICAgIG9mbi5od25kT3duZXIgPSBfaFduZDsKKyAgICAgICAgICAgICAgICBvZm4ubHBzdHJGaWxlID0gd3pGaWxlOworICAgICAgICAgICAgICAgIG9mbi5uTWF4RmlsZSA9IGNvdW50b2Yod3pGaWxlKTsKKyAgICAgICAgICAgICAgICBvZm4ubHBzdHJGaWx0ZXIgPSBMIkFsbCBGaWxlc1wwKi4qXDAiOworICAgICAgICAgICAgICAgIG9mbi5uRmlsdGVySW5kZXggPSAxOworICAgICAgICAgICAgICAgIG9mbi5GbGFncyA9IE9GTl9QQVRITVVTVEVYSVNUIHwgT0ZOX0ZJTEVNVVNURVhJU1Q7CisgICAgICAgICAgICAgICAgb2ZuLmxwc3RyVGl0bGUgPSBfdGhlbWUtPnNjekNhcHRpb247CisKKyAgICAgICAgICAgICAgICBpZiAoOjpHZXRPcGVuRmlsZU5hbWVXKCZvZm4pKSB7CisgICAgICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBfZW5naW5lLT5TZXRMb2NhbFNvdXJjZSh3elBhY2thZ2VPckNvbnRhaW5lcklkLCB3elBheWxvYWRJZCwgb2ZuLmxwc3RyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBTVUNDRUVERUQoaHIpID8gSURSRVRSWSA6IElERVJST1I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgblJlc3VsdCA9IElEQ0FOQ0VMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh3ekRvd25sb2FkU291cmNlKSB7CisgICAgICAgICAgICAvLyBJZiBkb2luZyBhIG5vbi1pbnRlcmFjdGl2ZSBpbnN0YWxsIGFuZCBkb3dubG9hZCBzb3VyY2UgaXMgYXZhaWxhYmxlLCBsZXQncyB0cnkgZG93bmxvYWRpbmcgdGhlIHBhY2thZ2Ugc2lsZW50bHkKKyAgICAgICAgICAgIG5SZXN1bHQgPSBJRERPV05MT0FEOworICAgICAgICB9CisgICAgICAgIC8vIGVsc2UgdGhlcmUncyBub3RoaW5nIG1vcmUgd2UgY2FuIGRvIGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlCisKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogblJlc3VsdDsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQXBwbHlDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMsIF9faW4gQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlQgcmVzdGFydCkgeworICAgICAgICBfcmVzdGFydFJlc3VsdCA9IHJlc3RhcnQ7IC8vIHJlbWVtYmVyIHRoZSByZXN0YXJ0IHJlc3VsdCBzbyB3ZSByZXR1cm4gdGhlIGNvcnJlY3QgZXJyb3IgY29kZSBubyBtYXR0ZXIgd2hhdCB0aGUgdXNlciBjaG9vc2VzIHRvIGRvIGluIHRoZSBVSS4KKworICAgICAgICAvLyBJZiBhIHJlc3RhcnQgd2FzIGVuY291bnRlcmVkIGFuZCB3ZSBhcmUgbm90IHN1cHByZXNzaW5nIHJlc3RhcnRzLCB0aGVuIHJlc3RhcnQgaXMgcmVxdWlyZWQuCisgICAgICAgIF9yZXN0YXJ0UmVxdWlyZWQgPSAoQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfTk9ORSAhPSByZXN0YXJ0ICYmIEJPT1RTVFJBUFBFUl9SRVNUQVJUX05FVkVSIDwgX2NvbW1hbmQucmVzdGFydCk7CisgICAgICAgIC8vIElmIGEgcmVzdGFydCBpcyByZXF1aXJlZCBhbmQgd2UncmUgbm90IGRpc3BsYXlpbmcgYSBVSSBvciB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIHByb21wdCBmb3IgcmVzdGFydCB0aGVuIGFsbG93IHRoZSByZXN0YXJ0LgorICAgICAgICBfYWxsb3dSZXN0YXJ0ID0gX3Jlc3RhcnRSZXF1aXJlZCAmJiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA+IF9jb21tYW5kLmRpc3BsYXkgfHwgQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUIDwgX2NvbW1hbmQucmVzdGFydCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHNob3dpbmcgVUksIHdhaXQgYSBiZWF0IGJlZm9yZSBtb3ZpbmcgdG8gdGhlIGZpbmFsIHNjcmVlbi4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX05PTkUgPCBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICA6OlNsZWVwKDI1MCk7CisgICAgICAgIH0KKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0FQUExJRUQsIGhyU3RhdHVzKTsKKyAgICAgICAgU2V0VGFza2JhckJ1dHRvblByb2dyZXNzKDEwMCk7IC8vIHNob3cgZnVsbCBwcm9ncmVzcyBiYXIsIGdyZWVuLCB5ZWxsb3csIG9yIHJlZAorCisgICAgICAgIHJldHVybiBJRE5PQUNUSU9OOworICAgIH0KKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkxhdW5jaEFwcHJvdmVkRXhlQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzLCBfX2luIERXT1JEIC8qcHJvY2Vzc0lkKi8pIHsKKyAgICAgICAgaWYgKEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9BQ0NFU1NfREVOSUVEKSA9PSBoclN0YXR1cykgeworICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKKyAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKworcHJpdmF0ZToKKyAgICAvLworICAgIC8vIFVpVGhyZWFkUHJvYyAtIGVudHJ5cG9pbnQgZm9yIFVJIHRocmVhZC4KKyAgICAvLworICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgVWlUaHJlYWRQcm9jKF9faW4gTFBWT0lEIHB2Q29udGV4dCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qIHBUaGlzID0gKFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKilwdkNvbnRleHQ7CisgICAgICAgIEJPT0wgY29tSW5pdGlhbGl6ZWQgPSBGQUxTRTsKKyAgICAgICAgQk9PTCByZXQgPSBGQUxTRTsKKyAgICAgICAgTVNHIG1zZyA9IHsgfTsKKworICAgICAgICAvLyBJbml0aWFsaXplIENPTSBhbmQgdGhlbWUuCisgICAgICAgIGhyID0gOjpDb0luaXRpYWxpemUobnVsbHB0cik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDT00uIik7CisgICAgICAgIGNvbUluaXRpYWxpemVkID0gVFJVRTsKKworICAgICAgICBociA9IFRoZW1lSW5pdGlhbGl6ZShwVGhpcy0+X2hNb2R1bGUpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlbWUgbWFuYWdlci4iKTsKKworICAgICAgICBociA9IHBUaGlzLT5Jbml0aWFsaXplRGF0YSgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgZGF0YSBpbiBib290c3RyYXBwZXIgYXBwbGljYXRpb24uIik7CisKKyAgICAgICAgLy8gQ3JlYXRlIG1haW4gd2luZG93LgorICAgICAgICBwVGhpcy0+SW5pdGlhbGl6ZVRhc2tiYXJCdXR0b24oKTsKKyAgICAgICAgaHIgPSBwVGhpcy0+Q3JlYXRlTWFpbldpbmRvdygpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBtYWluIHdpbmRvdy4iKTsKKworICAgICAgICBpZiAoRkFJTEVEKHBUaGlzLT5faHJGaW5hbCkpIHsKKyAgICAgICAgICAgIHBUaGlzLT5TZXRTdGF0ZShQWUJBX1NUQVRFX0ZBSUxFRCwgaHIpOworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcocFRoaXMtPl9oV25kLCBXTV9QWUJBX1NIT1dfRkFJTFVSRSwgMCwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPa2F5LCB3ZSdyZSByZWFkeSBmb3IgcGFja2FnZXMgbm93LgorICAgICAgICAgICAgcFRoaXMtPlNldFN0YXRlKFBZQkFfU1RBVEVfSU5JVElBTElaRUQsIGhyKTsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKHBUaGlzLT5faFduZCwgQk9PVFNUUkFQUEVSX0FDVElPTl9IRUxQID09IHBUaGlzLT5fY29tbWFuZC5hY3Rpb24gPyBXTV9QWUJBX1NIT1dfSEVMUCA6IFdNX1BZQkFfREVURUNUX1BBQ0tBR0VTLCAwLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG1lc3NhZ2UgcHVtcAorICAgICAgICB3aGlsZSAoMCAhPSAocmV0ID0gOjpHZXRNZXNzYWdlVygmbXNnLCBudWxscHRyLCAwLCAwKSkpIHsKKyAgICAgICAgICAgIGlmICgtMSA9PSByZXQpIHsKKyAgICAgICAgICAgICAgICBociA9IEVfVU5FWFBFQ1RFRDsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiVW5leHBlY3RlZCByZXR1cm4gdmFsdWUgZnJvbSBtZXNzYWdlIHB1bXAuIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFUaGVtZUhhbmRsZUtleWJvYXJkTWVzc2FnZShwVGhpcy0+X3RoZW1lLCBtc2cuaHduZCwgJm1zZykpIHsKKyAgICAgICAgICAgICAgICA6OlRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7CisgICAgICAgICAgICAgICAgOjpEaXNwYXRjaE1lc3NhZ2VXKCZtc2cpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3VjY2VlZGVkIHRodXMgZmFyLCBjaGVjayB0byBzZWUgaWYgYW55dGhpbmcgd2VudCB3cm9uZyB3aGlsZSBhY3R1YWxseQorICAgICAgICAvLyBleGVjdXRpbmcgY2hhbmdlcy4KKyAgICAgICAgaWYgKEZBSUxFRChwVGhpcy0+X2hyRmluYWwpKSB7CisgICAgICAgICAgICBociA9IHBUaGlzLT5faHJGaW5hbDsKKyAgICAgICAgfSBlbHNlIGlmIChwVGhpcy0+Q2hlY2tDYW5jZWxlZCgpKSB7CisgICAgICAgICAgICBociA9IEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9JTlNUQUxMX1VTRVJFWElUKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIC8vIGRlc3Ryb3kgbWFpbiB3aW5kb3cKKyAgICAgICAgcFRoaXMtPkRlc3Ryb3lNYWluV2luZG93KCk7CisKKyAgICAgICAgLy8gaW5pdGlhdGUgZW5naW5lIHNodXRkb3duCisgICAgICAgIERXT1JEIGR3UXVpdCA9IEhSRVNVTFRfQ09ERShocik7CisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVF9JTklUSUFURUQgPT0gcFRoaXMtPl9yZXN0YXJ0UmVzdWx0KSB7CisgICAgICAgICAgICBkd1F1aXQgPSBFUlJPUl9TVUNDRVNTX1JFQk9PVF9JTklUSUFURUQ7CisgICAgICAgIH0gZWxzZSBpZiAoQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfUkVRVUlSRUQgPT0gcFRoaXMtPl9yZXN0YXJ0UmVzdWx0KSB7CisgICAgICAgICAgICBkd1F1aXQgPSBFUlJPUl9TVUNDRVNTX1JFQk9PVF9SRVFVSVJFRDsKKyAgICAgICAgfQorICAgICAgICBwVGhpcy0+X2VuZ2luZS0+UXVpdChkd1F1aXQpOworCisgICAgICAgIFJlbGVhc2VUaGVtZShwVGhpcy0+X3RoZW1lKTsKKyAgICAgICAgVGhlbWVVbmluaXRpYWxpemUoKTsKKworICAgICAgICAvLyB1bmluaXRpYWxpemUgQ09NCisgICAgICAgIGlmIChjb21Jbml0aWFsaXplZCkgeworICAgICAgICAgICAgOjpDb1VuaW5pdGlhbGl6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworICAgIC8vCisgICAgLy8gUGFyc2VWYXJpYWJsZXNGcm9tVW5hdHRlbmRYbWwgLSByZWFkcyBvcHRpb25zIGZyb20gdW5hdHRlbmQueG1sIGlmIGl0CisgICAgLy8gZXhpc3RzCisgICAgLy8KKyAgICBIUkVTVUxUIFBhcnNlVmFyaWFibGVzRnJvbVVuYXR0ZW5kWG1sKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjelVuYXR0ZW5kWG1sUGF0aCA9IG51bGxwdHI7CisgICAgICAgIElYTUxET01Eb2N1bWVudCAqcGl4ZFVuYXR0ZW5kID0gbnVsbHB0cjsKKyAgICAgICAgSVhNTERPTU5vZGVMaXN0ICpwTm9kZXMgPSBudWxscHRyOworICAgICAgICBJWE1MRE9NTm9kZSAqcE5vZGUgPSBudWxscHRyOworICAgICAgICBsb25nIGNOb2RlczsKKyAgICAgICAgRFdPUkQgZHdBdHRyOworICAgICAgICBMUFdTVFIgc2N6ID0gbnVsbHB0cjsKKyAgICAgICAgQk9PTCBiVmFsdWU7CisgICAgICAgIGludCBpVmFsdWU7CisgICAgICAgIEJPT0wgdHJ5Q29udmVydDsKKyAgICAgICAgQlNUUiBic3RyVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKEwiW1dpeEJ1bmRsZU9yaWdpbmFsU291cmNlRm9sZGVyXXVuYXR0ZW5kLnhtbCIsICZzY3pVbmF0dGVuZFhtbFBhdGgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNhbGN1bGF0ZSBwYXRoIHRvIHVuYXR0ZW5kLnhtbCIpOworCisgICAgICAgIGlmICghRmlsZUV4aXN0c0V4KHNjelVuYXR0ZW5kWG1sUGF0aCwgJmR3QXR0cikpIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1ZFUkJPU0UsICJEaWQgbm90IGZpbmQgJWxzIiwgc2N6VW5hdHRlbmRYbWxQYXRoKTsKKyAgICAgICAgICAgIGhyID0gU19GQUxTRTsKKyAgICAgICAgICAgIGdvdG8gTEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBociA9IFhtbExvYWREb2N1bWVudEZyb21GaWxlKHNjelVuYXR0ZW5kWG1sUGF0aCwgJnBpeGRVbmF0dGVuZCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIHJlYWQgJWxzIiwgc2N6VW5hdHRlbmRYbWxQYXRoKTsKKworICAgICAgICAvLyBnZXQgdGhlIGxpc3Qgb2YgdmFyaWFibGVzIHVzZXJzIGhhdmUgb3ZlcnJpZGRlbgorICAgICAgICBociA9IFhtbFNlbGVjdE5vZGVzKHBpeGRVbmF0dGVuZCwgTCIvT3B0aW9ucy9PcHRpb24iLCAmcE5vZGVzKTsKKyAgICAgICAgaWYgKFNfRkFMU0UgPT0gaHIpIHsKKyAgICAgICAgICAgIEV4aXRGdW5jdGlvbjEoaHIgPSBTX09LKTsKKyAgICAgICAgfQorICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNlbGVjdCBvcHRpb24gbm9kZXMuIik7CisKKyAgICAgICAgaHIgPSBwTm9kZXMtPmdldF9sZW5ndGgoKGxvbmcqKSZjTm9kZXMpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBvcHRpb24gbm9kZSBjb3VudC4iKTsKKworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJlYWRpbmcgc2V0dGluZ3MgZnJvbSAlbHMiLCBzY3pVbmF0dGVuZFhtbFBhdGgpOworCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBjTm9kZXM7ICsraSkgeworICAgICAgICAgICAgaHIgPSBYbWxOZXh0RWxlbWVudChwTm9kZXMsICZwTm9kZSwgbnVsbHB0cik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBuZXh0IG5vZGUuIik7CisKKyAgICAgICAgICAgIC8vIEBOYW1lCisgICAgICAgICAgICBociA9IFhtbEdldEF0dHJpYnV0ZUV4KHBOb2RlLCBMIk5hbWUiLCAmc2N6KTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IEBOYW1lLiIpOworCisgICAgICAgICAgICB0cnlDb252ZXJ0ID0gVFJVRTsKKyAgICAgICAgICAgIGhyID0gWG1sR2V0QXR0cmlidXRlKHBOb2RlLCBMIlZhbHVlIiwgJmJzdHJWYWx1ZSk7CisgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhYnN0clZhbHVlIHx8ICEqYnN0clZhbHVlKSB7CisgICAgICAgICAgICAgICAgaHIgPSBYbWxHZXRUZXh0KHBOb2RlLCAmYnN0clZhbHVlKTsKKyAgICAgICAgICAgICAgICB0cnlDb252ZXJ0ID0gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBAVmFsdWUuIik7CisKKyAgICAgICAgICAgIGlmICh0cnlDb252ZXJ0ICYmCisgICAgICAgICAgICAgICAgQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9JTlZBUklBTlQsIE5PUk1fSUdOT1JFQ0FTRSwgYnN0clZhbHVlLCAtMSwgTCJ5ZXMiLCAtMSkpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoc2N6LCAxKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJ5Q29udmVydCAmJgorICAgICAgICAgICAgICAgICAgICAgICBDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX0lOVkFSSUFOVCwgTk9STV9JR05PUkVDQVNFLCBic3RyVmFsdWUsIC0xLCBMIm5vIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHNjeiwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRyeUNvbnZlcnQgJiYgOjpTdHJUb0ludEV4Vyhic3RyVmFsdWUsIFNUSUZfREVGQVVMVCwgJmlWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoc2N6LCBpVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhzY3osIGJzdHJWYWx1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlbGVhc2VOdWxsQlNUUihic3RyVmFsdWUpOworICAgICAgICAgICAgUmVsZWFzZU51bGxTdHIoc2N6KTsKKyAgICAgICAgICAgIFJlbGVhc2VOdWxsT2JqZWN0KHBOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmluaXNoZWQgcmVhZGluZyBmcm9tICVscyIsIHNjelVuYXR0ZW5kWG1sUGF0aCk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZU9iamVjdChwTm9kZSk7CisgICAgICAgIFJlbGVhc2VPYmplY3QocE5vZGVzKTsKKyAgICAgICAgUmVsZWFzZU9iamVjdChwaXhkVW5hdHRlbmQpOworICAgICAgICBSZWxlYXNlU3RyKHNjelVuYXR0ZW5kWG1sUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplRGF0YSAtIGluaXRpYWxpemVzIGFsbCB0aGUgcGFja2FnZSBpbmZvcm1hdGlvbi4KKyAgICAvLworICAgIEhSRVNVTFQgSW5pdGlhbGl6ZURhdGEoKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6TW9kdWxlUGF0aCA9IG51bGxwdHI7CisgICAgICAgIElYTUxET01Eb2N1bWVudCAqcGl4ZE1hbmlmZXN0ID0gbnVsbHB0cjsKKworICAgICAgICBociA9IEJhbE1hbmlmZXN0TG9hZChfaE1vZHVsZSwgJnBpeGRNYW5pZmVzdCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24gbWFuaWZlc3QuIik7CisKKyAgICAgICAgaHIgPSBQYXJzZU92ZXJyaWRhYmxlVmFyaWFibGVzRnJvbVhtbChwaXhkTWFuaWZlc3QpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHJlYWQgb3ZlcnJpZGFibGUgdmFyaWFibGVzLiIpOworCisgICAgICAgIGhyID0gUGFyc2VWYXJpYWJsZXNGcm9tVW5hdHRlbmRYbWwoKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byByZWFkIHVuYXR0ZW5kLmluaSBmaWxlLiIpOworCisgICAgICAgIGhyID0gUHJvY2Vzc0NvbW1hbmRMaW5lKCZfbGFuZ3VhZ2UpOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiVW5rbm93biBjb21tYW5kbGluZSBwYXJhbWV0ZXJzLiIpOworCisgICAgICAgIGhyID0gUGF0aFJlbGF0aXZlVG9Nb2R1bGUoJnNjek1vZHVsZVBhdGgsIG51bGxwdHIsIF9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgbW9kdWxlIHBhdGguIik7CisKKyAgICAgICAgaHIgPSBMb2FkTG9jYWxpemF0aW9uKHNjek1vZHVsZVBhdGgsIF9sYW5ndWFnZSk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBsb2NhbGl6YXRpb24uIik7CisKKyAgICAgICAgaHIgPSBMb2FkVGhlbWUoc2N6TW9kdWxlUGF0aCwgX2xhbmd1YWdlKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIHRoZW1lLiIpOworCisgICAgICAgIGhyID0gQmFsSW5mb1BhcnNlRnJvbVhtbCgmX2J1bmRsZSwgcGl4ZE1hbmlmZXN0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIGJ1bmRsZSBpbmZvcm1hdGlvbi4iKTsKKworICAgICAgICBociA9IEJhbENvbmRpdGlvbnNQYXJzZUZyb21YbWwoJl9jb25kaXRpb25zLCBwaXhkTWFuaWZlc3QsIF93aXhMb2MpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgY29uZGl0aW9ucyBmcm9tIFhNTC4iKTsKKworICAgICAgICBociA9IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgYm9vdHN0cmFwcGVyIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgaHIgPSBVcGRhdGVVSVN0cmluZ3MoX2NvbW1hbmQuYWN0aW9uKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIFVJIHN0cmluZ3MuIik7CisKKyAgICAgICAgR2V0QnVuZGxlRmlsZVZlcnNpb24oKTsKKyAgICAgICAgLy8gZG9uJ3QgZmFpbCBpZiB3ZSBjb3VsZG4ndCBnZXQgdGhlIHZlcnNpb24gaW5mbzsgYmVzdC1lZmZvcnQgb25seQorICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlT2JqZWN0KHBpeGRNYW5pZmVzdCk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6TW9kdWxlUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBQcm9jZXNzQ29tbWFuZExpbmUgLSBwcm9jZXNzIHRoZSBwcm92aWRlZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorICAgIC8vCisgICAgSFJFU1VMVCBQcm9jZXNzQ29tbWFuZExpbmUoX19pbm91dCBMUFdTVFIqIHBzY3pMYW5ndWFnZSkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgaW50IGFyZ2MgPSAwOworICAgICAgICBMUFdTVFIqIGFyZ3YgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6VmFyaWFibGVOYW1lID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjelZhcmlhYmxlVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIGlmIChfY29tbWFuZC53ekNvbW1hbmRMaW5lICYmICpfY29tbWFuZC53ekNvbW1hbmRMaW5lKSB7CisgICAgICAgICAgICBhcmd2ID0gOjpDb21tYW5kTGluZVRvQXJndlcoX2NvbW1hbmQud3pDb21tYW5kTGluZSwgJmFyZ2MpOworICAgICAgICAgICAgRXhpdE9uTnVsbFdpdGhMYXN0RXJyb3IoYXJndiwgaHIsICJGYWlsZWQgdG8gZ2V0IGNvbW1hbmQgbGluZS4iKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJndltpXVswXSA9PSBMJy0nIHx8IGFyZ3ZbaV1bMF0gPT0gTCcvJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9JTlZBUklBTlQsIE5PUk1fSUdOT1JFQ0FTRSwgJmFyZ3ZbaV1bMV0sIC0xLCBMImxhbmciLCAtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA+PSBhcmdjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBFX0lOVkFMSURBUkc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIk11c3Qgc3BlY2lmeSBhIGxhbmd1YWdlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICArK2k7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcocHNjekxhbmd1YWdlLCAmYXJndltpXVswXSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNvcHkgbGFuZ3VhZ2UuIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9JTlZBUklBTlQsIE5PUk1fSUdOT1JFQ0FTRSwgJmFyZ3ZbaV1bMV0sIC0xLCBMInNpbXBsZSIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiU2ltcGxlSW5zdGFsbCIsIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfb3ZlcnJpZGFibGVWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlOworICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBwd2MgPSB3Y3NjaHIoYXJndltpXSwgTCc9Jyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwd2MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcoJnNjelZhcmlhYmxlTmFtZSwgYXJndltpXSwgcHdjIC0gYXJndltpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNvcHkgdmFyaWFibGUgbmFtZS4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBEaWN0S2V5RXhpc3RzKF9vdmVycmlkYWJsZVZhcmlhYmxlcywgc2N6VmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFX05PVEZPVU5EID09IGhyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJJZ25vcmluZyBhdHRlbXB0IHRvIHNldCBub24tb3ZlcnJpZGFibGUgdmFyaWFibGU6ICclbHMnLiIsIHNjelZhcmlhYmxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBTX09LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjaGVjayB0aGUgZGljdGlvbmFyeSBvZiBvdmVycmlkYWJsZSB2YXJpYWJsZXMuIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcoJnNjelZhcmlhYmxlVmFsdWUsICsrcHdjLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY29weSB2YXJpYWJsZSB2YWx1ZS4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDo6U3RyVG9JbnRFeChzY3pWYXJpYWJsZVZhbHVlLCBTVElGX0RFRkFVTFQsICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhzY3pWYXJpYWJsZU5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhzY3pWYXJpYWJsZU5hbWUsIHNjelZhcmlhYmxlVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzZXQgdmFyaWFibGUuIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIklnbm9yaW5nIHVua25vd24gYXJndW1lbnQ6ICVscyIsIGFyZ3ZbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgaWYgKGFyZ3YpIHsKKyAgICAgICAgICAgIDo6TG9jYWxGcmVlKGFyZ3YpOworICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cihzY3pWYXJpYWJsZU5hbWUpOworICAgICAgICBSZWxlYXNlU3RyKHNjelZhcmlhYmxlVmFsdWUpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKyAgICBIUkVTVUxUIExvYWRMb2NhbGl6YXRpb24oX19pbl96IExQQ1dTVFIgd3pNb2R1bGVQYXRoLCBfX2luX3pfb3B0IExQQ1dTVFIgd3pMYW5ndWFnZSkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjekxvY1BhdGggPSBudWxscHRyOworICAgICAgICBMUENXU1RSIHd6TG9jRmlsZU5hbWUgPSBMIkRlZmF1bHQud3hsIjsKKworICAgICAgICBociA9IExvY1Byb2JlRm9yRmlsZSh3ek1vZHVsZVBhdGgsIHd6TG9jRmlsZU5hbWUsIHd6TGFuZ3VhZ2UsICZzY3pMb2NQYXRoKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTIoaHIsICJGYWlsZWQgdG8gcHJvYmUgZm9yIGxvYyBmaWxlOiAlbHMgaW4gcGF0aDogJWxzIiwgd3pMb2NGaWxlTmFtZSwgd3pNb2R1bGVQYXRoKTsKKworICAgICAgICBociA9IExvY0xvYWRGcm9tRmlsZShzY3pMb2NQYXRoLCAmX3dpeExvYyk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvYWQgbG9jIGZpbGUgZnJvbSBwYXRoOiAlbHMiLCBzY3pMb2NQYXRoKTsKKworICAgICAgICBpZiAoV0lYX0xPQ0FMSVpBVElPTl9MQU5HVUFHRV9OT1RfU0VUICE9IF93aXhMb2MtPmR3TGFuZ0lkKSB7CisgICAgICAgICAgICA6OlNldFRocmVhZExvY2FsZShfd2l4TG9jLT5kd0xhbmdJZCk7CisgICAgICAgIH0KKworICAgICAgICBociA9IFN0ckFsbG9jU3RyaW5nKCZfY29uZmlybUNsb3NlTWVzc2FnZSwgTCIjKGxvYy5Db25maXJtQ2FuY2VsTWVzc2FnZSkiLCAwKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBpbml0aWFsaXplIGNvbmZpcm0gbWVzc2FnZSBsb2MgaWRlbnRpZmllci4iKTsKKworICAgICAgICBociA9IExvY0xvY2FsaXplU3RyaW5nKF93aXhMb2MsICZfY29uZmlybUNsb3NlTWVzc2FnZSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvY2FsaXplIGNvbmZpcm0gY2xvc2UgbWVzc2FnZTogJWxzIiwgX2NvbmZpcm1DbG9zZU1lc3NhZ2UpOworCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VTdHIoc2N6TG9jUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgSFJFU1VMVCBMb2FkVGhlbWUoX19pbl96IExQQ1dTVFIgd3pNb2R1bGVQYXRoLCBfX2luX3pfb3B0IExQQ1dTVFIgd3pMYW5ndWFnZSkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjelRoZW1lUGF0aCA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgd3pUaGVtZUZpbGVOYW1lID0gTCJEZWZhdWx0LnRobSI7CisgICAgICAgIExQV1NUUiBzY3pDYXB0aW9uID0gbnVsbHB0cjsKKworICAgICAgICBociA9IExvY1Byb2JlRm9yRmlsZSh3ek1vZHVsZVBhdGgsIHd6VGhlbWVGaWxlTmFtZSwgd3pMYW5ndWFnZSwgJnNjelRoZW1lUGF0aCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUyKGhyLCAiRmFpbGVkIHRvIHByb2JlIGZvciB0aGVtZSBmaWxlOiAlbHMgaW4gcGF0aDogJWxzIiwgd3pUaGVtZUZpbGVOYW1lLCB3ek1vZHVsZVBhdGgpOworCisgICAgICAgIGhyID0gVGhlbWVMb2FkRnJvbUZpbGUoc2N6VGhlbWVQYXRoLCAmX3RoZW1lKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbG9hZCB0aGVtZSBmcm9tIHBhdGg6ICVscyIsIHNjelRoZW1lUGF0aCk7CisKKyAgICAgICAgaHIgPSBUaGVtZUxvY2FsaXplKF90aGVtZSwgX3dpeExvYyk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvY2FsaXplIHRoZW1lOiAlbHMiLCBzY3pUaGVtZVBhdGgpOworCisgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FwdGlvbiBpZiB0aGVyZSBhcmUgYW55IGZvcm1hdHRlZCBzdHJpbmdzIGluIGl0LgorICAgICAgICAvLyBJZiB0aGUgd2l4IGRldmVsb3BlciBpcyBzaG93aW5nIGEgaGlkZGVuIHZhcmlhYmxlIGluIHRoZSBVSSwgdGhlbgorICAgICAgICAvLyBvYnZpb3VzbHkgdGhleSBkb24ndCBjYXJlIGFib3V0IGtlZXBpbmcgaXQgc2FmZSBzbyBkb24ndCBnbyBkb3duIHRoZQorICAgICAgICAvLyByYWJiaXQgaG9sZSBvZiBtYWtpbmcgc3VyZSB0aGF0IHRoaXMgaXMgc2VjdXJlbHkgZnJlZWQuCisgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKF90aGVtZS0+c2N6Q2FwdGlvbiwgJnNjekNhcHRpb24pOworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgVGhlbWVVcGRhdGVDYXB0aW9uKF90aGVtZSwgc2N6Q2FwdGlvbik7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlU3RyKHNjekNhcHRpb24pOworICAgICAgICBSZWxlYXNlU3RyKHNjelRoZW1lUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgSFJFU1VMVCBQYXJzZU92ZXJyaWRhYmxlVmFyaWFibGVzRnJvbVhtbChfX2luIElYTUxET01Eb2N1bWVudCogcGl4ZE1hbmlmZXN0KSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBJWE1MRE9NTm9kZSogcE5vZGUgPSBudWxscHRyOworICAgICAgICBJWE1MRE9NTm9kZUxpc3QqIHBOb2RlcyA9IG51bGxwdHI7CisgICAgICAgIERXT1JEIGNOb2RlcyA9IDA7CisgICAgICAgIExQV1NUUiBzY3ogPSBudWxscHRyOworICAgICAgICBCT09MIGhpZGRlbiA9IEZBTFNFOworCisgICAgICAgIC8vIGdldCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMgdXNlcnMgY2FuIG92ZXJyaWRlIG9uIHRoZSBjb21tYW5kIGxpbmUKKyAgICAgICAgaHIgPSBYbWxTZWxlY3ROb2RlcyhwaXhkTWFuaWZlc3QsIEwiL0Jvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGF0YS9XaXhTdGRiYU92ZXJyaWRhYmxlVmFyaWFibGUiLCAmcE5vZGVzKTsKKyAgICAgICAgaWYgKFNfRkFMU0UgPT0gaHIpIHsKKyAgICAgICAgICAgIEV4aXRGdW5jdGlvbjEoaHIgPSBTX09LKTsKKyAgICAgICAgfQorICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNlbGVjdCBvdmVycmlkYWJsZSB2YXJpYWJsZSBub2Rlcy4iKTsKKworICAgICAgICBociA9IHBOb2Rlcy0+Z2V0X2xlbmd0aCgobG9uZyopJmNOb2Rlcyk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IG92ZXJyaWRhYmxlIHZhcmlhYmxlIG5vZGUgY291bnQuIik7CisKKyAgICAgICAgaWYgKGNOb2RlcykgeworICAgICAgICAgICAgaHIgPSBEaWN0Q3JlYXRlU3RyaW5nTGlzdCgmX292ZXJyaWRhYmxlVmFyaWFibGVzLCAzMiwgRElDVF9GTEFHX05PTkUpOworICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgdGhlIHN0cmluZyBkaWN0aW9uYXJ5LiIpOworCisgICAgICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgY05vZGVzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBociA9IFhtbE5leHRFbGVtZW50KHBOb2RlcywgJnBOb2RlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBuZXh0IG5vZGUuIik7CisKKyAgICAgICAgICAgICAgICAvLyBATmFtZQorICAgICAgICAgICAgICAgIGhyID0gWG1sR2V0QXR0cmlidXRlRXgocE5vZGUsIEwiTmFtZSIsICZzY3opOworICAgICAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IEBOYW1lLiIpOworCisgICAgICAgICAgICAgICAgaHIgPSBYbWxHZXRZZXNOb0F0dHJpYnV0ZShwTm9kZSwgTCJIaWRkZW4iLCAmaGlkZGVuKTsKKworICAgICAgICAgICAgICAgIGlmICghaGlkZGVuKSB7CisgICAgICAgICAgICAgICAgICAgIGhyID0gRGljdEFkZEtleShfb3ZlcnJpZGFibGVWYXJpYWJsZXMsIHNjeik7CisgICAgICAgICAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGFkZCBcIiVsc1wiIHRvIHRoZSBzdHJpbmcgZGljdGlvbmFyeS4iLCBzY3opOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgbmV4dCBpdGVyYXRpb24KKyAgICAgICAgICAgICAgICBSZWxlYXNlTnVsbE9iamVjdChwTm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlT2JqZWN0KHBOb2RlKTsKKyAgICAgICAgUmVsZWFzZU9iamVjdChwTm9kZXMpOworICAgICAgICBSZWxlYXNlU3RyKHNjeik7CisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gR2V0IHRoZSBmaWxlIHZlcnNpb24gb2YgdGhlIGJvb3RzdHJhcHBlciBhbmQgcmVjb3JkIGluIGJvb3RzdHJhcHBlciBsb2cgZmlsZQorICAgIC8vCisgICAgSFJFU1VMVCBHZXRCdW5kbGVGaWxlVmVyc2lvbigpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIFVMQVJHRV9JTlRFR0VSIHVsaVZlcnNpb24gPSB7IH07CisgICAgICAgIExQV1NUUiBzY3pDdXJyZW50UGF0aCA9IG51bGxwdHI7CisKKyAgICAgICAgaHIgPSBQYXRoRm9yQ3VycmVudFByb2Nlc3MoJnNjekN1cnJlbnRQYXRoLCBudWxscHRyKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgYnVuZGxlIHBhdGguIik7CisKKyAgICAgICAgaHIgPSBGaWxlVmVyc2lvbihzY3pDdXJyZW50UGF0aCwgJnVsaVZlcnNpb24uSGlnaFBhcnQsICZ1bGlWZXJzaW9uLkxvd1BhcnQpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBidW5kbGUgZmlsZSB2ZXJzaW9uLiIpOworCisgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVWZXJzaW9uKFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiwgdWxpVmVyc2lvbi5RdWFkUGFydCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2V0IFdpeEJ1bmRsZUZpbGVWZXJzaW9uIHZhcmlhYmxlLiIpOworCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VTdHIoc2N6Q3VycmVudFBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gQ3JlYXRlTWFpbldpbmRvdyAtIGNyZWF0ZXMgdGhlIG1haW4gaW5zdGFsbCB3aW5kb3cuCisgICAgLy8KKyAgICBIUkVTVUxUIENyZWF0ZU1haW5XaW5kb3coKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBISUNPTiBoSWNvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8SElDT04+KF90aGVtZS0+aEljb24pOworICAgICAgICBXTkRDTEFTU1cgd2MgPSB7IH07CisgICAgICAgIERXT1JEIGR3V2luZG93U3R5bGUgPSAwOworICAgICAgICBpbnQgeCA9IENXX1VTRURFRkFVTFQ7CisgICAgICAgIGludCB5ID0gQ1dfVVNFREVGQVVMVDsKKyAgICAgICAgUE9JTlQgcHRDdXJzb3IgPSB7IH07CisgICAgICAgIEhNT05JVE9SIGhNb25pdG9yID0gbnVsbHB0cjsKKyAgICAgICAgTU9OSVRPUklORk8gbWkgPSB7IH07CisgICAgICAgIENPTE9SUkVGIGZnLCBiZzsKKyAgICAgICAgSEJSVVNIIGJnQnJ1c2g7CisKKyAgICAgICAgLy8gSWYgdGhlIHRoZW1lIGRpZCBub3QgcHJvdmlkZSBhbiBpY29uLCB0cnkgdXNpbmcgdGhlIGljb24gZnJvbSB0aGUgYnVuZGxlIGVuZ2luZS4KKyAgICAgICAgaWYgKCFoSWNvbikgeworICAgICAgICAgICAgSE1PRFVMRSBoQm9vdHN0cmFwcGVyRW5naW5lID0gOjpHZXRNb2R1bGVIYW5kbGVXKG51bGxwdHIpOworICAgICAgICAgICAgaWYgKGhCb290c3RyYXBwZXJFbmdpbmUpIHsKKyAgICAgICAgICAgICAgICBoSWNvbiA9IDo6TG9hZEljb25XKGhCb290c3RyYXBwZXJFbmdpbmUsIE1BS0VJTlRSRVNPVVJDRVcoMSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmcgPSBSR0IoMCwgMCwgMCk7CisgICAgICAgIGJnID0gUkdCKDI1NSwgMjU1LCAyNTUpOworICAgICAgICBiZ0JydXNoID0gKEhCUlVTSCkoQ09MT1JfV0lORE9XKzEpOworICAgICAgICBpZiAoX3RoZW1lLT5kd0ZvbnRJZCA8IF90aGVtZS0+Y0ZvbnRzKSB7CisgICAgICAgICAgICBUSEVNRV9GT05UICpmb250ID0gJl90aGVtZS0+cmdGb250c1tfdGhlbWUtPmR3Rm9udElkXTsKKyAgICAgICAgICAgIGZnID0gZm9udC0+Y3JGb3JlZ3JvdW5kOworICAgICAgICAgICAgYmcgPSBmb250LT5jckJhY2tncm91bmQ7CisgICAgICAgICAgICBiZ0JydXNoID0gZm9udC0+aEJhY2tncm91bmQ7CisgICAgICAgICAgICBSZW1hcENvbG9yKCZmZywgJmJnLCAmYmdCcnVzaCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWdpc3RlciB0aGUgd2luZG93IGNsYXNzIGFuZCBjcmVhdGUgdGhlIHdpbmRvdy4KKyAgICAgICAgd2MubHBmblduZFByb2MgPSBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbjo6V25kUHJvYzsKKyAgICAgICAgd2MuaEluc3RhbmNlID0gX2hNb2R1bGU7CisgICAgICAgIHdjLmhJY29uID0gaEljb247CisgICAgICAgIHdjLmhDdXJzb3IgPSA6OkxvYWRDdXJzb3JXKG51bGxwdHIsIChMUENXU1RSKUlEQ19BUlJPVyk7CisgICAgICAgIHdjLmhickJhY2tncm91bmQgPSBiZ0JydXNoOworICAgICAgICB3Yy5scHN6TWVudU5hbWUgPSBudWxscHRyOworICAgICAgICB3Yy5scHN6Q2xhc3NOYW1lID0gUFlCQV9XSU5ET1dfQ0xBU1M7CisgICAgICAgIGlmICghOjpSZWdpc3RlckNsYXNzVygmd2MpKSB7CisgICAgICAgICAgICBFeGl0V2l0aExhc3RFcnJvcihociwgIkZhaWxlZCB0byByZWdpc3RlciB3aW5kb3cuIik7CisgICAgICAgIH0KKworICAgICAgICBfcmVnaXN0ZXJlZCA9IFRSVUU7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB3aW5kb3cgc3R5bGUgYmFzZWQgb24gdGhlIHRoZW1lIHN0eWxlIGFuZCBjb21tYW5kIGRpc3BsYXkgdmFsdWUuCisgICAgICAgIGR3V2luZG93U3R5bGUgPSBfdGhlbWUtPmR3U3R5bGU7CisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9OT05FID49IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIGR3V2luZG93U3R5bGUgJj0gfldTX1ZJU0lCTEU7CisgICAgICAgIH0KKworICAgICAgICAvLyBEb24ndCBzaG93IHRoZSB3aW5kb3cgaWYgdGhlcmUgaXMgYSBzcGxhc2ggc2NyZWVuIChpdCB3aWxsIGJlIG1hZGUgdmlzaWJsZSB3aGVuIHRoZSBzcGxhc2ggc2NyZWVuIGlzIGhpZGRlbikKKyAgICAgICAgaWYgKDo6SXNXaW5kb3coX2NvbW1hbmQuaHduZFNwbGFzaFNjcmVlbikpIHsKKyAgICAgICAgICAgIGR3V2luZG93U3R5bGUgJj0gfldTX1ZJU0lCTEU7CisgICAgICAgIH0KKworICAgICAgICAvLyBDZW50ZXIgdGhlIHdpbmRvdyBvbiB0aGUgbW9uaXRvciB3aXRoIHRoZSBtb3VzZS4KKyAgICAgICAgaWYgKDo6R2V0Q3Vyc29yUG9zKCZwdEN1cnNvcikpIHsKKyAgICAgICAgICAgIGhNb25pdG9yID0gOjpNb25pdG9yRnJvbVBvaW50KHB0Q3Vyc29yLCBNT05JVE9SX0RFRkFVTFRUT05FQVJFU1QpOworICAgICAgICAgICAgaWYgKGhNb25pdG9yKSB7CisgICAgICAgICAgICAgICAgbWkuY2JTaXplID0gc2l6ZW9mKG1pKTsKKyAgICAgICAgICAgICAgICBpZiAoOjpHZXRNb25pdG9ySW5mb1coaE1vbml0b3IsICZtaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IG1pLnJjV29yay5sZWZ0ICsgKG1pLnJjV29yay5yaWdodCAtIG1pLnJjV29yay5sZWZ0IC0gX3RoZW1lLT5uV2lkdGgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgeSA9IG1pLnJjV29yay50b3AgKyAobWkucmNXb3JrLmJvdHRvbSAtIG1pLnJjV29yay50b3AgLSBfdGhlbWUtPm5IZWlnaHQpIC8gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBfaFduZCA9IDo6Q3JlYXRlV2luZG93RXhXKAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIHdjLmxwc3pDbGFzc05hbWUsCisgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24sCisgICAgICAgICAgICBkd1dpbmRvd1N0eWxlLAorICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIHksCisgICAgICAgICAgICBfdGhlbWUtPm5XaWR0aCwKKyAgICAgICAgICAgIF90aGVtZS0+bkhlaWdodCwKKyAgICAgICAgICAgIEhXTkRfREVTS1RPUCwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICBfaE1vZHVsZSwKKyAgICAgICAgICAgIHRoaXMKKyAgICAgICAgKTsKKyAgICAgICAgRXhpdE9uTnVsbFdpdGhMYXN0RXJyb3IoX2hXbmQsIGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSB3aW5kb3cuIik7CisKKyAgICAgICAgaHIgPSBTX09LOworCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gSW5pdGlhbGl6ZVRhc2tiYXJCdXR0b24gLSBpbml0aWFsaXplcyB0YXNrYmFyIGJ1dHRvbiBmb3IgcHJvZ3Jlc3MuCisgICAgLy8KKyAgICB2b2lkIEluaXRpYWxpemVUYXNrYmFyQnV0dG9uKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBociA9IDo6Q29DcmVhdGVJbnN0YW5jZShDTFNJRF9UYXNrYmFyTGlzdCwgbnVsbHB0ciwgQ0xTQ1RYX0FMTCwgX191dWlkb2YoSVRhc2tiYXJMaXN0MyksIHJlaW50ZXJwcmV0X2Nhc3Q8TFBWT0lEKj4oJl90YXNrYmFyTGlzdCkpOworICAgICAgICBpZiAoUkVHREJfRV9DTEFTU05PVFJFRyA9PSBocikgeworICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBiZWZvcmUgV2luZG93cyA3CisgICAgICAgICAgICBFeGl0RnVuY3Rpb24xKGhyID0gU19PSyk7CisgICAgICAgIH0KKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgSVRhc2tiYXJMaXN0My4gQ29udGludWluZy4iKTsKKworICAgICAgICBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlID0gOjpSZWdpc3RlcldpbmRvd01lc3NhZ2VXKEwiVGFza2JhckJ1dHRvbkNyZWF0ZWQiKTsKKyAgICAgICAgQmFsRXhpdE9uTnVsbFdpdGhMYXN0RXJyb3IoX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSwgaHIsICJGYWlsZWQgdG8gZ2V0IFRhc2tiYXJCdXR0b25DcmVhdGVkIG1lc3NhZ2UuIENvbnRpbnVpbmcuIik7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJveU1haW5XaW5kb3cgLSBjbGVhbiB1cCBhbGwgdGhlIHdpbmRvdyByZWdpc3RyYXRpb24uCisgICAgLy8KKyAgICB2b2lkIERlc3Ryb3lNYWluV2luZG93KCkgeworICAgICAgICBpZiAoOjpJc1dpbmRvdyhfaFduZCkpIHsKKyAgICAgICAgICAgIDo6RGVzdHJveVdpbmRvdyhfaFduZCk7CisgICAgICAgICAgICBfaFduZCA9IG51bGxwdHI7CisgICAgICAgICAgICBfdGFza2JhckJ1dHRvbk9LID0gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3JlZ2lzdGVyZWQpIHsKKyAgICAgICAgICAgIDo6VW5yZWdpc3RlckNsYXNzVyhQWUJBX1dJTkRPV19DTEFTUywgX2hNb2R1bGUpOworICAgICAgICAgICAgX3JlZ2lzdGVyZWQgPSBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLy8KKyAgICAvLyBXbmRQcm9jIC0gc3RhbmRhcmQgd2luZG93cyBtZXNzYWdlIGhhbmRsZXIuCisgICAgLy8KKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKAorICAgICAgICBfX2luIEhXTkQgaFduZCwKKyAgICAgICAgX19pbiBVSU5UIHVNc2csCisgICAgICAgIF9faW4gV1BBUkFNIHdQYXJhbSwKKyAgICAgICAgX19pbiBMUEFSQU0gbFBhcmFtCisgICAgKSB7CisjcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6NDMxMikKKyAgICAgICAgYXV0byBwQkEgPSByZWludGVycHJldF9jYXN0PFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKj4oOjpHZXRXaW5kb3dMb25nUHRyVyhoV25kLCBHV0xQX1VTRVJEQVRBKSk7CisKKyAgICAgICAgc3dpdGNoICh1TXNnKSB7CisgICAgICAgIGNhc2UgV01fTkNDUkVBVEU6IHsKKyAgICAgICAgICAgIExQQ1JFQVRFU1RSVUNUIGxwY3MgPSByZWludGVycHJldF9jYXN0PExQQ1JFQVRFU1RSVUNUPihsUGFyYW0pOworICAgICAgICAgICAgcEJBID0gcmVpbnRlcnByZXRfY2FzdDxQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbio+KGxwY3MtPmxwQ3JlYXRlUGFyYW1zKTsKKyNwcmFnbWEgd2FybmluZyhzdXBwcmVzczo0MjQ0KQorICAgICAgICAgICAgOjpTZXRXaW5kb3dMb25nUHRyVyhoV25kLCBHV0xQX1VTRVJEQVRBLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihwQkEpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBXTV9OQ0RFU1RST1k6IHsKKyAgICAgICAgICAgIExSRVNVTFQgbHJlcyA9IFRoZW1lRGVmV2luZG93UHJvYyhwQkEgPyBwQkEtPl90aGVtZSA6IG51bGxwdHIsIGhXbmQsIHVNc2csIHdQYXJhbSwgbFBhcmFtKTsKKyAgICAgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0clcoaFduZCwgR1dMUF9VU0VSREFUQSwgMCk7CisgICAgICAgICAgICByZXR1cm4gbHJlczsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgV01fQ1JFQVRFOiAKKyAgICAgICAgICAgIGlmICghcEJBLT5PbkNyZWF0ZShoV25kKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fUVVFUllFTkRTRVNTSU9OOgorICAgICAgICAgICAgcmV0dXJuIElEQ0FOQ0VMICE9IHBCQS0+T25TeXN0ZW1TaHV0ZG93bihzdGF0aWNfY2FzdDxEV09SRD4obFBhcmFtKSwgSURDQU5DRUwpOworCisgICAgICAgIGNhc2UgV01fQ0xPU0U6CisgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBjaG9zZSBub3QgdG8gY2xvc2UsIGRvICpub3QqIGxldCB0aGUgZGVmYXVsdCB3aW5kb3cgcHJvYyBoYW5kbGUgdGhlIG1lc3NhZ2UuCisgICAgICAgICAgICBpZiAoIXBCQS0+T25DbG9zZSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX0RFU1RST1k6CisgICAgICAgICAgICA6OlBvc3RRdWl0TWVzc2FnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fUEFJTlQ6IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgV01fRVJBU0VCS0dORDoKKyAgICAgICAgICAgIGlmIChwQkEgJiYgcEJBLT5fc3VwcHJlc3NQYWludCkgeworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX1NIT1dfSEVMUDoKKyAgICAgICAgICAgIHBCQS0+T25TaG93SGVscCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX0RFVEVDVF9QQUNLQUdFUzoKKyAgICAgICAgICAgIHBCQS0+T25EZXRlY3QoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9QTEFOX1BBQ0tBR0VTOgorICAgICAgICAgICAgcEJBLT5PblBsYW4oc3RhdGljX2Nhc3Q8Qk9PVFNUUkFQUEVSX0FDVElPTj4obFBhcmFtKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfQVBQTFlfUEFDS0FHRVM6CisgICAgICAgICAgICBwQkEtPk9uQXBwbHkoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9DSEFOR0VfU1RBVEU6CisgICAgICAgICAgICBwQkEtPk9uQ2hhbmdlU3RhdGUoc3RhdGljX2Nhc3Q8UFlCQV9TVEFURT4obFBhcmFtKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfU0hPV19GQUlMVVJFOgorICAgICAgICAgICAgcEJBLT5PblNob3dGYWlsdXJlKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX0NPTU1BTkQ6CisgICAgICAgICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CisgICAgICAgICAgICAvLyBDdXN0b21pemUgY29tbWFuZHMKKyAgICAgICAgICAgIC8vIFN1Y2Nlc3MvZmFpbHVyZSBjb21tYW5kcworICAgICAgICAgICAgY2FzZSBJRF9MQVVOQ0hfQlVUVE9OOgorICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja0xhdW5jaEJ1dHRvbigpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBjYXNlIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT046CisgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrUmVzdGFydEJ1dHRvbigpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBjYXNlIElEQ0FOQ0VMOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0NVU1RPTTFfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfQ1VTVE9NMl9DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9NT0RJRllfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9GQUlMVVJFX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0NMT1NFX0JVVFRPTjoKKyAgICAgICAgICAgICAgICBwQkEtPk9uQ29tbWFuZChJRF9DTE9TRV9CVVRUT04pOworICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHBCQS0+T25Db21tYW5kKChDT05UUk9MX0lEKUxPV09SRCh3UGFyYW0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fTk9USUZZOgorICAgICAgICAgICAgaWYgKGxQYXJhbSkgeworICAgICAgICAgICAgICAgIExQTk1IRFIgcG5taGRyID0gcmVpbnRlcnByZXRfY2FzdDxMUE5NSERSPihsUGFyYW0pOworICAgICAgICAgICAgICAgIHN3aXRjaCAocG5taGRyLT5jb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBOTV9DTElDSzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICBjYXNlIE5NX1JFVFVSTjoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxEV09SRD4ocG5taGRyLT5pZEZyb20pKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9MT0dGSUxFX0xJTks6CisgICAgICAgICAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tMb2dGaWxlTGluaygpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX0NUTENPTE9SU1RBVElDOgorICAgICAgICBjYXNlIFdNX0NUTENPTE9SQlROOgorICAgICAgICAgICAgaWYgKHBCQSkgeworICAgICAgICAgICAgICAgIEhCUlVTSCBicnVzaCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgaWYgKHBCQS0+U2V0Q29udHJvbENvbG9yKChIV05EKWxQYXJhbSwgKEhEQyl3UGFyYW0sICZicnVzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChMUkVTVUxUKWJydXNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBCQSAmJiBwQkEtPl90YXNrYmFyTGlzdCAmJiB1TXNnID09IHBCQS0+X3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSkgeworICAgICAgICAgICAgcEJBLT5fdGFza2JhckJ1dHRvbk9LID0gVFJVRTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFRoZW1lRGVmV2luZG93UHJvYyhwQkEgPyBwQkEtPl90aGVtZSA6IG51bGxwdHIsIGhXbmQsIHVNc2csIHdQYXJhbSwgbFBhcmFtKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE9uQ3JlYXRlIC0gZmluaXNoZXMgbG9hZGluZyB0aGUgdGhlbWUuCisgICAgLy8KKyAgICBCT09MIE9uQ3JlYXRlKF9faW4gSFdORCBoV25kKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGhyID0gVGhlbWVMb2FkQ29udHJvbHMoX3RoZW1lLCBoV25kLCBDT05UUk9MX0lEX05BTUVTLCBjb3VudG9mKENPTlRST0xfSURfTkFNRVMpKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIHRoZW1lIGNvbnRyb2xzLiIpOworCisgICAgICAgIENfQVNTRVJUKENPVU5UX1BBR0UgPT0gY291bnRvZihQQUdFX05BTUVTKSk7CisgICAgICAgIENfQVNTRVJUKGNvdW50b2YoX3BhZ2VJZHMpID09IGNvdW50b2YoUEFHRV9OQU1FUykpOworCisgICAgICAgIFRoZW1lR2V0UGFnZUlkcyhfdGhlbWUsIFBBR0VfTkFNRVMsIF9wYWdlSWRzLCBjb3VudG9mKF9wYWdlSWRzKSk7CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dCBvbiBhbGwgImFwcGxpY2F0aW9uIiAobm9uLXBhZ2UpIGNvbnRyb2xzLgorICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgX3RoZW1lLT5jQ29udHJvbHM7ICsraSkgeworICAgICAgICAgICAgVEhFTUVfQ09OVFJPTCogcENvbnRyb2wgPSBfdGhlbWUtPnJnQ29udHJvbHMgKyBpOworICAgICAgICAgICAgTFBXU1RSIHRleHQgPSBudWxscHRyOworICAgICAgICAgICAgTFBXU1RSIG5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgTE9DX1NUUklORyAqbG9jVGV4dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIC8vIElmIGEgY29tbWFuZCBsaW5rIGhhcyBhIG5vdGUsIHRoZW4gYWRkIGl0LgorICAgICAgICAgICAgaWYgKChwQ29udHJvbC0+ZHdTdHlsZSAmIEJTX1RZUEVNQVNLKSA9PSBCU19DT01NQU5ETElOSyB8fAorICAgICAgICAgICAgICAgIChwQ29udHJvbC0+ZHdTdHlsZSAmIEJTX1RZUEVNQVNLKSA9PSBCU19ERUZDT01NQU5ETElOSykgeworICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJm5hbWUsIEwiIyhsb2MuJWxzTm90ZSkiLCBwQ29udHJvbC0+c2N6TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgbmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBsb2NUZXh0ICYmIGxvY1RleHQtPnd6VGV4dCAmJiBsb2NUZXh0LT53elRleHRbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKGxvY1RleHQtPnd6VGV4dCwgJnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgdGV4dCAmJiB0ZXh0WzBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoX3RoZW1lLCBwQ29udHJvbC0+d0lkLCBCQ01fU0VUTk9URSwgMCwgKExQQVJBTSl0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKHRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGhyID0gU19PSzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwQ29udHJvbC0+d1BhZ2VJZCAmJiBwQ29udHJvbC0+c2N6VGV4dCAmJiAqcENvbnRyb2wtPnNjelRleHQpIHsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIGhyRm9ybWF0OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3aXggZGV2ZWxvcGVyIGlzIHNob3dpbmcgYSBoaWRkZW4gdmFyaWFibGUgaW4gdGhlIFVJLAorICAgICAgICAgICAgICAgIC8vIHRoZW4gb2J2aW91c2x5IHRoZXkgZG9uJ3QgY2FyZSBhYm91dCBrZWVwaW5nIGl0IHNhZmUgc28gZG9uJ3QKKyAgICAgICAgICAgICAgICAvLyBnbyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiBtYWtpbmcgc3VyZSB0aGF0IHRoaXMgaXMgc2VjdXJlbHkKKyAgICAgICAgICAgICAgICAvLyBmcmVlZC4KKyAgICAgICAgICAgICAgICBockZvcm1hdCA9IEJhbEZvcm1hdFN0cmluZyhwQ29udHJvbC0+c2N6VGV4dCwgJnRleHQpOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHJGb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cih0ZXh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm4gU1VDQ0VFREVEKGhyKTsKKyAgICB9CisKKyAgICB2b2lkIFJlbWFwQ29sb3IoQ09MT1JSRUYgKmZnLCBDT0xPUlJFRiAqYmcsIEhCUlVTSCAqYmdCcnVzaCkgeworICAgICAgICBpZiAoKmZnID09IFJHQigwLCAwLCAwKSkgeworICAgICAgICAgICAgKmZnID0gR2V0U3lzQ29sb3IoQ09MT1JfV0lORE9XVEVYVCk7CisgICAgICAgIH0gZWxzZSBpZiAoKmZnID09IFJHQigxMjgsIDEyOCwgMTI4KSkgeworICAgICAgICAgICAgKmZnID0gR2V0U3lzQ29sb3IoQ09MT1JfR1JBWVRFWFQpOworICAgICAgICB9CisgICAgICAgIGlmICgqYmdCcnVzaCAmJiAqYmcgPT0gUkdCKDI1NSwgMjU1LCAyNTUpKSB7CisgICAgICAgICAgICAqYmcgPSBHZXRTeXNDb2xvcihDT0xPUl9XSU5ET1cpOworICAgICAgICAgICAgKmJnQnJ1c2ggPSBHZXRTeXNDb2xvckJydXNoKENPTE9SX1dJTkRPVyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBCT09MIFNldENvbnRyb2xDb2xvcihIV05EIGhXbmQsIEhEQyBoREMsIEhCUlVTSCAqYnJ1c2gpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBfdGhlbWUtPmNDb250cm9sczsgKytpKSB7CisgICAgICAgICAgICBpZiAoX3RoZW1lLT5yZ0NvbnRyb2xzW2ldLmhXbmQgIT0gaFduZCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBEV09SRCBmb250SWQgPSBfdGhlbWUtPnJnQ29udHJvbHNbaV0uZHdGb250SWQ7CisgICAgICAgICAgICBpZiAoZm9udElkID4gX3RoZW1lLT5jRm9udHMpIHsKKyAgICAgICAgICAgICAgICBmb250SWQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVEhFTUVfRk9OVCAqZm50ID0gJl90aGVtZS0+cmdGb250c1tmb250SWRdOworCisgICAgICAgICAgICBDT0xPUlJFRiBmZyA9IGZudC0+Y3JGb3JlZ3JvdW5kLCBiZyA9IGZudC0+Y3JCYWNrZ3JvdW5kOworICAgICAgICAgICAgKmJydXNoID0gZm50LT5oQmFja2dyb3VuZDsKKyAgICAgICAgICAgIFJlbWFwQ29sb3IoJmZnLCAmYmcsIGJydXNoKTsKKyAgICAgICAgICAgIDo6U2V0VGV4dENvbG9yKGhEQywgZmcpOworICAgICAgICAgICAgOjpTZXRCa0NvbG9yKGhEQywgYmcpOworCisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblNob3dGYWlsdXJlIC0gZGlzcGxheSB0aGUgZmFpbHVyZSBwYWdlLgorICAgIC8vCisgICAgdm9pZCBPblNob3dGYWlsdXJlKCkgeworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0ZBSUxFRCwgU19PSyk7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uU2hvd0hlbHAgLSBkaXNwbGF5IHRoZSBoZWxwIHBhZ2UuCisgICAgLy8KKyAgICB2b2lkIE9uU2hvd0hlbHAoKSB7CisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfSEVMUCwgU19PSyk7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uRGV0ZWN0IC0gc3RhcnQgdGhlIHByb2Nlc3Npbmcgb2YgcGFja2FnZXMuCisgICAgLy8KKyAgICB2b2lkIE9uRGV0ZWN0KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBkZXRlY3QgQkEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGhyID0gX2JhRnVuY3Rpb24tPk9uRGV0ZWN0KCk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIGNhbGxpbmcgZGV0ZWN0IEJBIGZ1bmN0aW9uLiIpOworICAgICAgICB9CisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RJTkcsIGhyKTsKKworICAgICAgICAvLyBJZiB0aGUgVUkgc2hvdWxkIGJlIHZpc2libGUsIGRpc3BsYXkgaXQgbm93IGFuZCBoaWRlIHRoZSBzcGxhc2ggc2NyZWVuCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9OT05FIDwgX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgOjpTaG93V2luZG93KF90aGVtZS0+aHduZFBhcmVudCwgU1dfU0hPVyk7CisgICAgICAgIH0KKworICAgICAgICBfZW5naW5lLT5DbG9zZVNwbGFzaFNjcmVlbigpOworCisgICAgICAgIC8vIFRlbGwgdGhlIGNvcmUgd2UncmUgcmVhZHkgZm9yIHRoZSBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgbm93LgorICAgICAgICBociA9IF9lbmdpbmUtPkRldGVjdCgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHN0YXJ0IGRldGVjdGluZyBjaGFpbi4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RJTkcsIGhyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSFJFU1VMVCBVcGRhdGVVSVN0cmluZ3MoX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBDV1NUUiBsaWtlSW5zdGFsbGluZyA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgbGlrZUluc3RhbGxhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIkluc3RhbGxpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiSW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fTU9ESUZZOgorICAgICAgICAgICAgLy8gRm9yIG1vZGlmeSwgd2UgYWN0dWFsbHkgd2FudCB0byBwYXNzIElOU1RBTEwKKyAgICAgICAgICAgIGFjdGlvbiA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsaW5nID0gTCJNb2RpZnlpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiTW9kaWZpY2F0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIlJlcGFpcmluZyI7CisgICAgICAgICAgICBsaWtlSW5zdGFsbGF0aW9uID0gTCJSZXBhaXIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEw6CisgICAgICAgICAgICBsaWtlSW5zdGFsbGluZyA9IEwiVW5pbnN0YWxsaW5nIjsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsYXRpb24gPSBMIlVuaW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpa2VJbnN0YWxsaW5nKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsaW5nKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgbG9jTmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIobG9jTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZygKKyAgICAgICAgICAgICAgICBMIkFjdGlvbkxpa2VJbnN0YWxsaW5nIiwKKyAgICAgICAgICAgICAgICBTVUNDRUVERUQoaHIpICYmIGxvY1RleHQgPyBsb2NUZXh0LT53elRleHQgOiBsaWtlSW5zdGFsbGluZworICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsaWtlSW5zdGFsbGF0aW9uKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsYXRpb24pOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBsb2NOYW1lLCAmbG9jVGV4dCk7CisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihsb2NOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKAorICAgICAgICAgICAgICAgIEwiQWN0aW9uTGlrZUluc3RhbGxhdGlvbiIsCisgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsb2NUZXh0ID8gbG9jVGV4dC0+d3pUZXh0IDogbGlrZUluc3RhbGxhdGlvbgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblBsYW4gLSBwbGFuIHRoZSBkZXRlY3RlZCBjaGFuZ2VzLgorICAgIC8vCisgICAgdm9pZCBPblBsYW4oX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBfcGxhbm5lZEFjdGlvbiA9IGFjdGlvbjsKKworICAgICAgICBociA9IFVwZGF0ZVVJU3RyaW5ncyhhY3Rpb24pOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHVwZGF0ZSBzdHJpbmdzIik7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGdvaW5nIHRvIGFwcGx5IGEgZG93bmdyYWRlLCBiYWlsLgorICAgICAgICBpZiAoX2Rvd25ncmFkaW5nT3RoZXJWZXJzaW9uICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgYWN0aW9uKSB7CisgICAgICAgICAgICBpZiAoX3N1cHByZXNzRG93bmdyYWRlRmFpbHVyZSkgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiQSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgcHJvZHVjdCBpcyBpbnN0YWxsZWQgYnV0IGRvd25ncmFkZSBmYWlsdXJlIGhhcyBiZWVuIHN1cHByZXNzZWQ7IGNvbnRpbnVpbmcuLi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaHIgPSBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfUFJPRFVDVF9WRVJTSU9OKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiQ2Fubm90IGluc3RhbGwgYSBwcm9kdWN0IHdoZW4gYSBuZXdlciB2ZXJzaW9uIGlzIGluc3RhbGxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfUExBTk5JTkcsIGhyKTsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBwbGFuIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25QbGFuKCk7CisgICAgICAgIH0KKworICAgICAgICBociA9IF9lbmdpbmUtPlBsYW4oYWN0aW9uKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzdGFydCBwbGFubmluZyBwYWNrYWdlcy4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9QTEFOTklORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkFwcGx5IC0gYXBwbHkgdGhlIHBhY2thZ2VzLgorICAgIC8vCisgICAgdm9pZCBPbkFwcGx5KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0FQUExZSU5HLCBocik7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHIpOworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoMCk7CisKKyAgICAgICAgaHIgPSBfZW5naW5lLT5BcHBseShfaFduZCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc3RhcnQgYXBwbHlpbmcgcGFja2FnZXMuIik7CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgVFJVRSk7IC8vIGVuc3VyZSB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZy4KKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9BUFBMWUlORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNoYW5nZVN0YXRlIC0gY2hhbmdlIHN0YXRlLgorICAgIC8vCisgICAgdm9pZCBPbkNoYW5nZVN0YXRlKF9faW4gUFlCQV9TVEFURSBzdGF0ZSkgeworICAgICAgICBMUFdTVFIgdW5mb3JtYXR0ZWRUZXh0ID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhdGUgPSBzdGF0ZTsKKworICAgICAgICAvLyBJZiBvdXIgaW5zdGFsbCBpcyBhdCB0aGUgZW5kIChzdWNjZXNzIG9yIGZhaWx1cmUpIGFuZCB3ZSdyZSBub3Qgc2hvd2luZyBmdWxsIFVJCisgICAgICAgIC8vIHRoZW4gZXhpdCAocHJvbXB0IGZvciByZXN0YXJ0IGlmIHJlcXVpcmVkKS4KKyAgICAgICAgaWYgKChQWUJBX1NUQVRFX0FQUExJRUQgPD0gX3N0YXRlICYmIEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPiBfY29tbWFuZC5kaXNwbGF5KSkgeworICAgICAgICAgICAgLy8gSWYgYSByZXN0YXJ0IHdhcyByZXF1aXJlZCBidXQgd2Ugd2VyZSBub3QgYXV0b21hdGljYWxseSBhbGxvd2VkIHRvCisgICAgICAgICAgICAvLyBhY2NlcHQgdGhlIHJlYm9vdCB0aGVuIGRvIHRoZSBwcm9tcHQuCisgICAgICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiAhX2FsbG93UmVzdGFydCkgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9TVUNDRVNTX1JFQk9PVF9SRVFVSVJFRCksIG51bGxwdHIpOworCisgICAgICAgICAgICAgICAgX2FsbG93UmVzdGFydCA9IElET0sgPT0gOjpNZXNzYWdlQm94VygKKyAgICAgICAgICAgICAgICAgICAgX2hXbmQsCisgICAgICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkVGV4dCA/IHVuZm9ybWF0dGVkVGV4dCA6IEwiVGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bC4gQ2hhbmdlcyB3aWxsIG5vdCBiZSBlZmZlY3RpdmUgdW50aWwgdGhlIHN5c3RlbSBpcyByZWJvb3RlZC4iLAorICAgICAgICAgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24sCisgICAgICAgICAgICAgICAgICAgIE1CX0lDT05FWENMQU1BVElPTiB8IE1CX09LQ0FOQ0VMCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUXVpZXRseSBleGl0LgorICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsgLy8gdHJ5IHRvIGNoYW5nZSB0aGUgcGFnZXMuCisgICAgICAgICAgICBEV09SRCBuZXdQYWdlSWQgPSAwOworICAgICAgICAgICAgRGV0ZXJtaW5lUGFnZUlkKF9zdGF0ZSwgJm5ld1BhZ2VJZCk7CisKKyAgICAgICAgICAgIGlmIChfdmlzaWJsZVBhZ2VJZCAhPSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgICAgICBTaG93UGFnZShuZXdQYWdlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cih1bmZvcm1hdHRlZFRleHQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBzaG93aW5nIGEgcGFnZSB0byBoYW5kbGUgYWxsIGNvbnRyb2xzLgorICAgIC8vCisgICAgdm9pZCBQcm9jZXNzUGFnZUNvbnRyb2xzKFRIRU1FX1BBR0UgKnBQYWdlKSB7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIEJPT0wgZW5hYmxlQ29udHJvbCA9IFRSVUU7CisKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuYW1lZCBjb250cm9sLCB0cnkgdG8gc2V0IGl0cyBkZWZhdWx0IHN0YXRlLgorICAgICAgICAgICAgaWYgKHBDb250cm9sLT5zY3pOYW1lICYmICpwQ29udHJvbC0+c2N6TmFtZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjaGVja2FibGUgY29udHJvbCwgdHJ5IHRvIHNldCBpdHMgZGVmYXVsdCBzdGF0ZQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBzdGF0ZSBvZiBhIG1hdGNoaW5nIG5hbWVkIEJ1cm4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgaWYgKElzQ2hlY2thYmxlKHBDb250cm9sKSkgeworICAgICAgICAgICAgICAgICAgICBMT05HTE9ORyBsbFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShwQ29udHJvbC0+c2N6TmFtZSwgJmxsVmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb250cm9sIHZhbHVlIGlzbid0IHNldCB0aGVuIGRpc2FibGUgaXQuCisgICAgICAgICAgICAgICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29udHJvbCA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoZW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDb250cm9sLT53SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk1fU0VUQ0hFQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsbFZhbHVlID8gQlNUX0NIRUNLRUQgOiBCU1RfVU5DSEVDS0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBIaWRlIG9yIGRpc2FibGUgY29udHJvbHMgYmFzZWQgb24gdGhlIGNvbnRyb2wgbmFtZSB3aXRoICdTdGF0ZScgYXBwZW5kZWQKKyAgICAgICAgICAgICAgICBMUFdTVFIgY29udHJvbE5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBTdHJBbGxvY0Zvcm1hdHRlZCgmY29udHJvbE5hbWUsIEwiJWxzU3RhdGUiLCBwQ29udHJvbC0+c2N6TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGNvbnRyb2xTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoY29udHJvbE5hbWUsICZjb250cm9sU3RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBjb250cm9sU3RhdGUgJiYgKmNvbnRyb2xTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xTdGF0ZVswXSA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhjb250cm9sU3RhdGUsICZmb3JtYXR0ZWQpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xTdGF0ZSA9IGZvcm1hdHRlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX05FVVRSQUwsIDAsIGNvbnRyb2xTdGF0ZSwgLTEsIEwiZGlzYWJsZSIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRGlzYWJsZSBjb250cm9sICVscyIsIHBDb250cm9sLT5zY3pOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVDb250cm9sID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgY29udHJvbFN0YXRlLCAtMSwgTCJoaWRlIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJIaWRlIGNvbnRyb2wgJWxzIiwgcENvbnRyb2wtPnNjek5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgZG9lc24ndCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTaG93Q29udHJvbChfdGhlbWUsIHBDb250cm9sLT53SWQsIFNXX0hJREUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbiBleHBsaWNpdCBzdGF0ZSBjYW4gb3ZlcnJpZGUgdGhlIGxhY2sgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tpbmcgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29udHJvbCA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU3RyRnJlZShjb250cm9sU3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xOYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgcENvbnRyb2wtPndJZCwgZW5hYmxlQ29udHJvbCk7CisKKyAgICAgICAgICAgIC8vIEZvcm1hdCB0aGUgdGV4dCBpbiBlYWNoIG9mIHRoZSBuZXcgcGFnZSdzIGNvbnRyb2xzCisgICAgICAgICAgICBpZiAocENvbnRyb2wtPnNjelRleHQgJiYgKnBDb250cm9sLT5zY3pUZXh0KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdpeCBkZXZlbG9wZXIgaXMgc2hvd2luZyBhIGhpZGRlbiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIC8vIGluIHRoZSBVSSwgdGhlbiBvYnZpb3VzbHkgdGhleSBkb24ndCBjYXJlIGFib3V0CisgICAgICAgICAgICAgICAgLy8ga2VlcGluZyBpdCBzYWZlIHNvIGRvbid0IGdvIGRvd24gdGhlIHJhYmJpdCBob2xlCisgICAgICAgICAgICAgICAgLy8gb2YgbWFraW5nIHN1cmUgdGhhdCB0aGlzIGlzIHNlY3VyZWx5IGZyZWVkLgorICAgICAgICAgICAgICAgIExQV1NUUiB0ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gQmFsRm9ybWF0U3RyaW5nKHBDb250cm9sLT5zY3pUZXh0LCAmdGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIHBDb250cm9sLT53SWQsIHRleHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gT25DbG9zZSAtIGNhbGxlZCB3aGVuIHRoZSB3aW5kb3cgaXMgdHJ5aW5nIHRvIGJlIGNsb3NlZC4KKyAgICAvLworICAgIEJPT0wgT25DbG9zZSgpIHsKKyAgICAgICAgQk9PTCBjbG9zZSA9IEZBTFNFOworCisgICAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgc3VjY2VlZGVkIG9yIGZhaWxlZCBvciBzaG93aW5nIHRoZSBoZWxwIHBhZ2UsIGp1c3QgY2xvc2UgKHByb21wdHMgYXJlIGFubm95aW5nIGlmIHRoZSBib290c3RyYXBwZXIgaXMgZG9uZSkuCisgICAgICAgIGlmIChQWUJBX1NUQVRFX0FQUExJRUQgPD0gX3N0YXRlIHx8IFBZQkFfU1RBVEVfSEVMUCA9PSBfc3RhdGUpIHsKKyAgICAgICAgICAgIGNsb3NlID0gVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHByb21wdCB0aGUgdXNlciBvciBmb3JjZSB0aGUgY2FuY2VsIGlmIHRoZXJlIGlzIG5vIFVJLgorICAgICAgICAgICAgY2xvc2UgPSBQcm9tcHRDYW5jZWwoCisgICAgICAgICAgICAgICAgX2hXbmQsCisgICAgICAgICAgICAgICAgQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCAhPSBfY29tbWFuZC5kaXNwbGF5LAorICAgICAgICAgICAgICAgIF9jb25maXJtQ2xvc2VNZXNzYWdlID8gX2NvbmZpcm1DbG9zZU1lc3NhZ2UgOiBMIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/IiwKKyAgICAgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSdyZSBkb2luZyBwcm9ncmVzcyB0aGVuIHdlIG5ldmVyIGNsb3NlLCB3ZSBqdXN0IGNhbmNlbCB0byBsZXQgcm9sbGJhY2sgb2NjdXIuCisgICAgICAgIGlmIChQWUJBX1NUQVRFX0FQUExZSU5HIDw9IF9zdGF0ZSAmJiBQWUJBX1NUQVRFX0FQUExJRUQgPiBfc3RhdGUpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGNhbmNlbGVkIGRpc2FibGUgY2FuY2VsIGJ1dHRvbiBzaW5jZSBjbGlja2luZyBpdCBhZ2FpbiBpcyBzaWxseS4KKyAgICAgICAgICAgIGlmIChjbG9zZSkgeworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2xvc2UgPSBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9zZTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE9uQ2xpY2tDbG9zZUJ1dHRvbiAtIGNsb3NlIHRoZSBhcHBsaWNhdGlvbi4KKyAgICAvLworICAgIHZvaWQgT25DbGlja0Nsb3NlQnV0dG9uKCkgeworICAgICAgICA6OlNlbmRNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNsaWNrTGF1bmNoQnV0dG9uIC0gbGF1bmNoIHRoZSBhcHAgZnJvbSB0aGUgc3VjY2VzcyBwYWdlLgorICAgIC8vCisgICAgdm9pZCBPbkNsaWNrTGF1bmNoQnV0dG9uKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjekFyZ3VtZW50cyA9IG51bGxwdHI7CisgICAgICAgIGludCBuQ21kU2hvdyA9IFNXX1NIT1dOT1JNQUw7CisKKyAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCwgJnNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGUgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOworCisgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0LCAmc2N6TGF1bmNoVGFyZ2V0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKKworICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKSkgeworICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQsICZzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IGVsZXZhdGVkIGlkICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKSkgeworICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMsICZzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIGFyZ3VtZW50cyAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTikpIHsKKyAgICAgICAgICAgIG5DbWRTaG93ID0gU1dfSElERTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkICYmICFfdHJpZWRUb0xhdW5jaEVsZXZhdGVkKSB7CisgICAgICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gVFJVRTsKKyAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+TGF1bmNoQXBwcm92ZWRFeGUoX2hXbmQsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAwKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICAgICAgQmFsTG9nRXJyb3IoaHIsICJGYWlsZWQgdG8gbGF1bmNoIGVsZXZhdGVkIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7CisKKyAgICAgICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQorICAgICAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cykgeworICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAmc2N6QXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIGFyZ3VtZW50cyB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBociA9IFNoZWxFeGVjKHNjekxhdW5jaFRhcmdldCwgc2N6QXJndW1lbnRzLCBMIm9wZW4iLCBudWxscHRyLCBuQ21kU2hvdywgX2hXbmQsIG51bGxwdHIpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbGF1bmNoIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0KTsKKworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekFyZ3VtZW50cyk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOworICAgICAgICBSZWxlYXNlU3RyKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOworICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pMYXVuY2hUYXJnZXQpOworICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uQ2xpY2tSZXN0YXJ0QnV0dG9uIC0gYWxsb3dzIHRoZSByZXN0YXJ0IGFuZCBjbG9zZXMgdGhlIGFwcC4KKyAgICAvLworICAgIHZvaWQgT25DbGlja1Jlc3RhcnRCdXR0b24oKSB7CisgICAgICAgIEFzc2VydFN6KF9yZXN0YXJ0UmVxdWlyZWQsICJSZXN0YXJ0IG11c3QgYmUgcmVxdWVzdGVkIHRvIGJlIGFibGUgdG8gY2xpY2sgb24gdGhlIHJlc3RhcnQgYnV0dG9uLiIpOworCisgICAgICAgIF9hbGxvd1Jlc3RhcnQgPSBUUlVFOworICAgICAgICA6OlNlbmRNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gT25DbGlja0xvZ0ZpbGVMaW5rIC0gc2hvdyB0aGUgbG9nIGZpbGUuCisgICAgLy8KKyAgICB2b2lkIE9uQ2xpY2tMb2dGaWxlTGluaygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pMb2dGaWxlID0gbnVsbHB0cjsKKworICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKF9idW5kbGUuc2N6TG9nVmFyaWFibGUsICZzY3pMb2dGaWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxvZyBmaWxlIHZhcmlhYmxlICclbHMnLiIsIF9idW5kbGUuc2N6TG9nVmFyaWFibGUpOworCisgICAgICAgIGhyID0gU2hlbEV4ZWMoTCJub3RlcGFkLmV4ZSIsIHNjekxvZ0ZpbGUsIEwib3BlbiIsIG51bGxwdHIsIFNXX1NIT1dERUZBVUxULCBfaFduZCwgbnVsbHB0cik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIG9wZW4gbG9nIGZpbGUgdGFyZ2V0OiAlbHMiLCBzY3pMb2dGaWxlKTsKKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlU3RyKHNjekxvZ0ZpbGUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gU2V0U3RhdGUKKyAgICAvLworICAgIHZvaWQgU2V0U3RhdGUoX19pbiBQWUJBX1NUQVRFIHN0YXRlLCBfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgaWYgKEZBSUxFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIF9ockZpbmFsID0gaHJTdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRkFJTEVEKF9ockZpbmFsKSkgeworICAgICAgICAgICAgc3RhdGUgPSBQWUJBX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfc3RhdGUgIT0gc3RhdGUpIHsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9QWUJBX0NIQU5HRV9TVEFURSwgMCwgc3RhdGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHb1RvUGFnZQorICAgIC8vCisgICAgdm9pZCBHb1RvUGFnZShfX2luIFBBR0UgcGFnZSkgeworICAgICAgICBfaW5zdGFsbFBhZ2UgPSBwYWdlOworICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9DSEFOR0VfU1RBVEUsIDAsIF9zdGF0ZSk7CisgICAgfQorCisgICAgdm9pZCBEZXRlcm1pbmVQYWdlSWQoX19pbiBQWUJBX1NUQVRFIHN0YXRlLCBfX291dCBEV09SRCogcGR3UGFnZUlkKSB7CisgICAgICAgIExPTkdMT05HIHNpbXBsZTsKKworICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfUEFTU0lWRSA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSU5JVElBTElaRUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSEVMUCA9PSBfY29tbWFuZC5hY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX0hFTFBdCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9MT0FESU5HXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0hFTFA6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfSEVMUF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RJTkc6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfTE9BRElOR10KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX0xPQURJTkddCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU19QQVNTSVZFXQorICAgICAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX1BST0dSRVNTX1BBU1NJVkVdCisgICAgICAgICAgICAgICAgICAgICAgICA6IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfREVURUNURUQ6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfUExBTk5JTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfUExBTk5FRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9BUFBMWUlORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9DQUNISU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hFRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRVhFQ1VURUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NfUEFTU0lWRV0KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX1BST0dSRVNTX1BBU1NJVkVdCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSU5JVElBTElaSU5HOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSU5JVElBTElaRUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSEVMUCA9PSBfY29tbWFuZC5hY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX0hFTFBdCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9MT0FESU5HXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0hFTFA6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfSEVMUF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RJTkc6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfTE9BRElOR107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RFRDoKKyAgICAgICAgICAgICAgICBpZiAoX2luc3RhbGxQYWdlID09IFBBR0VfTE9BRElORykgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb21tYW5kLmFjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXBncmFkaW5nT2xkVmVyc2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfVVBHUkFERTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdXBncmFkaW5nID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIlNpbXBsZUluc3RhbGwiLCAmc2ltcGxlKSkgJiYgc2ltcGxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9TSU1QTEVfSU5TVEFMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9JTlNUQUxMOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWTogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfTU9ESUZZOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW19pbnN0YWxsUGFnZV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTklORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTkVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0FQUExZSU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQ0FDSEVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0VYRUNVVElORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9BUFBMSUVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX1NVQ0NFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRkFJTEVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0ZBSUxVUkVdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQk9PTCBXaWxsRWxldmF0ZSgpIHsKKyAgICAgICAgc3RhdGljIEJBTF9DT05ESVRJT04gV0lMTF9FTEVWQVRFX0NPTkRJVElPTiA9IHsKKyAgICAgICAgICAgIEwibm90IFdpeEJ1bmRsZUVsZXZhdGVkIGFuZCAoSW5zdGFsbEFsbFVzZXJzIG9yIChJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyBhbmQgSW5jbHVkZV9sYXVuY2hlcikpIiwKKyAgICAgICAgICAgIEwiIgorICAgICAgICB9OworICAgICAgICBCT09MIHJlc3VsdDsKKworICAgICAgICByZXR1cm4gU1VDQ0VFREVEKEJhbENvbmRpdGlvbkV2YWx1YXRlKCZXSUxMX0VMRVZBVEVfQ09ORElUSU9OLCBfZW5naW5lLCAmcmVzdWx0LCBudWxscHRyKSkgJiYgcmVzdWx0OworICAgIH0KKworICAgIEJPT0wgSXNDcnRJbnN0YWxsZWQoKSB7CisgICAgICAgIGlmIChfY3J0SW5zdGFsbGVkVG9rZW4gPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSBlbHNlIGlmIChfY3J0SW5zdGFsbGVkVG9rZW4gPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayB3aGV0aGVyIGF0IGxlYXN0IENSVCB2MTAuMC4xMDEzNy4wIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgLy8gSXQgc2hvdWxkIG9ubHkgYmUgaW5zdGFsbGVkIGFzIGEgV2luZG93cyBVcGRhdGUgcGFja2FnZSwgd2hpY2ggbWVhbnMKKyAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCAzMi1iaXQvNjQtYml0LgorICAgICAgICBMUENXU1RSIGNydEZpbGUgPSBMInVjcnRiYXNlLmRsbCI7CisKKyAgICAgICAgRFdPUkQgY2JWZXIgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjcnRGaWxlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFjYlZlcikgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgKnBEYXRhID0gbWFsbG9jKGNiVmVyKTsKKyAgICAgICAgaWYgKCFwRGF0YSkgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjcnRGaWxlLCAwLCBjYlZlciwgcERhdGEpKSB7CisgICAgICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgICAgIF9jcnRJbnN0YWxsZWRUb2tlbiA9IDA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBWU19GSVhFREZJTEVJTkZPICpmZmk7CisgICAgICAgIFVJTlQgY2I7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICAgICAgaWYgKFZlclF1ZXJ5VmFsdWVXKHBEYXRhLCBMIlxcIiwgKExQVk9JRCopJmZmaSwgJmNiKSAmJgorICAgICAgICAgICAgZmZpLT5kd0ZpbGVWZXJzaW9uTVMgPT0gMHgwMDBBMDAwMCAmJiBmZmktPmR3RmlsZVZlcnNpb25MUyA+PSAweDI3OTkwMDAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gcmVzdWx0ID8gMSA6IDA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQk9PTCBRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkgeworICAgICAgICAvLyBDYWxsZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHRoYXQgZXZlbiB0aG91Z2ggdGhleSB0aGluayB0aGV5IHdvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gZWxldmF0ZSwgdGhleSBhY3R1YWxseSB3aWxsIGJlY2F1c2Ugb2YgdGhlIENSVCBpbnN0YWxsLgorICAgICAgICBpZiAoSXNDcnRJbnN0YWxsZWQoKSkgeworICAgICAgICAgICAgLy8gQ1JUIGlzIGFscmVhZHkgaW5zdGFsbGVkIC0gbm8gbmVlZCB0byBwcm9tcHQKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMT05HTE9ORyBlbGV2YXRlZDsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUVsZXZhdGVkIiwgJmVsZXZhdGVkKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZWxldmF0ZWQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgZWxldmF0ZWQgLSBubyBuZWVkIHRvIHByb21wdAorICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBMT0NfU1RSSU5HICpsb2NTdHI7CisgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRWxldmF0ZUZvckNSVEluc3RhbGwpIiwgJmxvY1N0cik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBnZXQgRWxldmF0ZUZvckNSVEluc3RhbGwgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDo6TWVzc2FnZUJveFcoX2hXbmQsIGxvY1N0ci0+d3pUZXh0LCBfdGhlbWUtPnNjekNhcHRpb24sIE1CX1lFU05PKSAhPSBJRE5POworICAgIH0KKworICAgIEhSRVNVTFQgRXZhbHVhdGVDb25kaXRpb25zKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKKworICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgX2NvbmRpdGlvbnMuY0NvbmRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgQkFMX0NPTkRJVElPTiogcENvbmRpdGlvbiA9IF9jb25kaXRpb25zLnJnQ29uZGl0aW9ucyArIGk7CisKKyAgICAgICAgICAgIGhyID0gQmFsQ29uZGl0aW9uRXZhbHVhdGUocENvbmRpdGlvbiwgX2VuZ2luZSwgJnJlc3VsdCwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZXZhbHVhdGUgY29uZGl0aW9uLiIpOworCisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIC8vIEhvcGUgdGhleSBkaWRuJ3QgaGF2ZSBoaWRkZW4gdmFyaWFibGVzIGluIHRoZWlyIG1lc3NhZ2UsIGJlY2F1c2UgaXQncyBnb2luZyBpbiB0aGUgbG9nIGluIHBsYWludGV4dC4KKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIiVscyIsIF9mYWlsZWRNZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIGhyID0gRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEOworICAgICAgICAgICAgICAgIC8vIHRvZG86IHJlbW92ZSBpbiBXaVggdjQsIGluIGNhc2UgcGVvcGxlIGFyZSByZWx5aW5nIG9uIHYzLnggbG9nZ2luZyBiZWhhdmlvcgorICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiQnVuZGxlIGNvbmRpdGlvbiBldmFsdWF0ZWQgdG8gZmFsc2U6ICVscyIsIHBDb25kaXRpb24tPnNjekNvbmRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlTnVsbFN0clNlY3VyZShfZmFpbGVkTWVzc2FnZSk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoX19pbiBEV09SRCBkd092ZXJhbGxQZXJjZW50YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NWYWx1ZShfaFduZCwgZHdPdmVyYWxsUGVyY2VudGFnZSwgMTAwVUwpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHByb2dyZXNzIHRvOiAlZCUlLiIsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoX19pbiBUQlBGTEFHIHRicEZsYWdzKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NTdGF0ZShfaFduZCwgdGJwRmxhZ3MpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHN0YXRlLiIsIHRicEZsYWdzKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIHZvaWQgU2V0UHJvZ3Jlc3NTdGF0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgVEJQRkxBRyBmbGFnID0gVEJQRl9OT1JNQUw7CisKKyAgICAgICAgaWYgKElzQ2FuY2VsZWQoKSB8fCBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVEFMTF9VU0VSRVhJVCkgPT0gaHJTdGF0dXMpIHsKKyAgICAgICAgICAgIGZsYWcgPSBUQlBGX1BBVVNFRDsKKyAgICAgICAgfSBlbHNlIGlmIChJc1JvbGxpbmdCYWNrKCkgfHwgRkFJTEVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgZmxhZyA9IFRCUEZfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoZmxhZyk7CisgICAgfQorCisKKyAgICBIUkVTVUxUIExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pCYWZQYXRoID0gbnVsbHB0cjsKKworICAgICAgICBociA9IFBhdGhSZWxhdGl2ZVRvTW9kdWxlKCZzY3pCYWZQYXRoLCBMImJhZnVuY3Rpb25zLmRsbCIsIF9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgcGF0aCB0byBCQSBmdW5jdGlvbiBETEwuIik7CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gQkEgZnVuY3Rpb24gRExMICVscyIsIHNjekJhZlBhdGgpOworI2VuZGlmCisKKyAgICAgICAgX2hCQUZNb2R1bGUgPSA6OkxvYWRMaWJyYXJ5VyhzY3pCYWZQYXRoKTsKKyAgICAgICAgaWYgKF9oQkFGTW9kdWxlKSB7CisgICAgICAgICAgICBhdXRvIHBmbkJBRnVuY3Rpb25DcmVhdGUgPSByZWludGVycHJldF9jYXN0PFBGTl9CT09UU1RSQVBQRVJfQkFfRlVOQ1RJT05fQ1JFQVRFPig6OkdldFByb2NBZGRyZXNzKF9oQkFGTW9kdWxlLCAiQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbk51bGxXaXRoTGFzdEVycm9yMShwZm5CQUZ1bmN0aW9uQ3JlYXRlLCBociwgIkZhaWxlZCB0byBnZXQgQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiBlbnRyeS1wb2ludCBmcm9tOiAlbHMiLCBzY3pCYWZQYXRoKTsKKworICAgICAgICAgICAgaHIgPSBwZm5CQUZ1bmN0aW9uQ3JlYXRlKF9lbmdpbmUsIF9oQkFGTW9kdWxlLCAmX2JhRnVuY3Rpb24pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgQkEgZnVuY3Rpb24uIik7CisgICAgICAgIH0KKyNpZmRlZiBERUJVRworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEJhbExvZ0Vycm9yKEhSRVNVTFRfRlJPTV9XSU4zMig6OkdldExhc3RFcnJvcigpKSwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gRmFpbGVkIHRvIGxvYWQgRExMICVscyIsIHNjekJhZlBhdGgpOworICAgICAgICB9CisjZW5kaWYKKworICAgIExFeGl0OgorICAgICAgICBpZiAoX2hCQUZNb2R1bGUgJiYgIV9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICA6OkZyZWVMaWJyYXJ5KF9oQkFGTW9kdWxlKTsKKyAgICAgICAgICAgIF9oQkFGTW9kdWxlID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBSZWxlYXNlU3RyKHNjekJhZlBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKyAgICBCT09MIElzQ2hlY2thYmxlKFRIRU1FX0NPTlRST0wqIHBDb250cm9sKSB7CisgICAgICAgIGlmICghcENvbnRyb2wtPnNjek5hbWUgfHwgIXBDb250cm9sLT5zY3pOYW1lWzBdKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocENvbnRyb2wtPnR5cGUgPT0gVEhFTUVfQ09OVFJPTF9UWVBFX0NIRUNLQk9YKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwQ29udHJvbC0+dHlwZSA9PSBUSEVNRV9DT05UUk9MX1RZUEVfQlVUVE9OKSB7CisgICAgICAgICAgICBpZiAoKHBDb250cm9sLT5kd1N0eWxlICYgQlNfVFlQRU1BU0spID09IEJTX0FVVE9SQURJT0JVVFRPTikgeworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHZvaWQgU2F2ZVBhZ2VTZXR0aW5ncygpIHsKKyAgICAgICAgRFdPUkQgcGFnZUlkID0gMDsKKyAgICAgICAgVEhFTUVfUEFHRSogcFBhZ2UgPSBudWxscHRyOworCisgICAgICAgIERldGVybWluZVBhZ2VJZChfc3RhdGUsICZwYWdlSWQpOworICAgICAgICBwUGFnZSA9IFRoZW1lR2V0UGFnZShfdGhlbWUsIHBhZ2VJZCk7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIGNoZWNrYWJsZSBjb250cm9scyBhbmQgc2V0IGEgQnVybiB2YXJpYWJsZQorICAgICAgICAgICAgLy8gd2l0aCB0aGF0IG5hbWUgdG8gdHJ1ZSBvciBmYWxzZS4KKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIGlmIChJc0NoZWNrYWJsZShwQ29udHJvbCkgJiYgVGhlbWVDb250cm9sRW5hYmxlZChfdGhlbWUsIHBDb250cm9sLT53SWQpKSB7CisgICAgICAgICAgICAgICAgQk9PTCBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgcENvbnRyb2wtPndJZCk7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHBDb250cm9sLT5zY3pOYW1lLCBjaGVja2VkID8gMSA6IDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBlZGl0Ym94IGNvbnRyb2xzIHdpdGggbmFtZXMgYW5kIHNldCBhCisgICAgICAgICAgICAvLyBCdXJuIHZhcmlhYmxlIHdpdGggdGhhdCBuYW1lIHRvIHRoZSBjb250ZW50cy4KKyAgICAgICAgICAgIGlmIChUSEVNRV9DT05UUk9MX1RZUEVfRURJVEJPWCA9PSBwQ29udHJvbC0+dHlwZSAmJiBwQ29udHJvbC0+c2N6TmFtZSAmJiAqcENvbnRyb2wtPnNjek5hbWUpIHsKKyAgICAgICAgICAgICAgICBMUFdTVFIgc2N6VmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIFRoZW1lR2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCAmc2N6VmFsdWUpOworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKHBDb250cm9sLT5zY3pOYW1lLCBzY3pWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBJc1RhcmdldFBsYXRmb3JteDY0KF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSkgeworICAgICAgICBXQ0hBUiBwbGF0Zm9ybVs4XTsKKyAgICAgICAgRFdPUkQgcGxhdGZvcm1MZW4gPSA4OworCisgICAgICAgIGlmIChGQUlMRUQocEVuZ2luZS0+R2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXRQbGF0Zm9ybSIsIHBsYXRmb3JtLCAmcGxhdGZvcm1MZW4pKSkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgcGxhdGZvcm0sIC0xLCBMIng2NCIsIC0xKSA9PSBDU1RSX0VRVUFMOworICAgIH0KKworICAgIHN0YXRpYyBIUkVTVUxUIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXNGcm9tS2V5KAorICAgICAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgICAgIF9faW4gSEtFWSBoa0hpdmUsCisgICAgICAgIF9faW4gTFBDV1NUUiBzdWJrZXkKKyAgICApIHsKKyAgICAgICAgSEtFWSBoS2V5OworICAgICAgICBMUkVTVUxUIHJlczsKKworICAgICAgICBpZiAoSXNUYXJnZXRQbGF0Zm9ybXg2NChwRW5naW5lKSkgeworICAgICAgICAgICAgcmVzID0gUmVnT3BlbktleUV4Vyhoa0hpdmUsIHN1YmtleSwgMCwgS0VZX1JFQUQgfCBLRVlfV09XNjRfNjRLRVksICZoS2V5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzMyS0VZLCAmaEtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICByZXR1cm4gSFJFU1VMVF9GUk9NX1dJTjMyKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1dG8gcCA9IE9QVElPTkFMX0ZFQVRVUkVTOyBwLT5yZWdOYW1lOyArK3ApIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgcC0+cmVnTmFtZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHAtPnZhcmlhYmxlTmFtZSwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHAtPnZhcmlhYmxlTmFtZSwgMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICAgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisKKyAgICBzdGF0aWMgSFJFU1VMVCBMb2FkVGFyZ2V0RGlyRnJvbUtleSgKKyAgICAgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgICAgICBfX2luIEhLRVkgaGtIaXZlLAorICAgICAgICBfX2luIExQQ1dTVFIgc3Via2V5CisgICAgKSB7CisgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgTFJFU1VMVCByZXM7CisgICAgICAgIERXT1JEIGRhdGFUeXBlOworICAgICAgICBCWVRFIGJ1ZmZlclsxMDI0XTsKKyAgICAgICAgRFdPUkQgYnVmZmVyTGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisKKyAgICAgICAgaWYgKElzVGFyZ2V0UGxhdGZvcm14NjQocEVuZ2luZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZLCAmaEtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBSZWdPcGVuS2V5RXhXKGhrSGl2ZSwgc3Via2V5LCAwLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSwgJmhLZXkpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKKyAgICAgICAgICAgIHJldHVybiBTX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgcmV0dXJuIEhSRVNVTFRfRlJPTV9XSU4zMihyZXMpOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCBudWxscHRyLCBudWxscHRyLCAmZGF0YVR5cGUsIGJ1ZmZlciwgJmJ1ZmZlckxlbik7CisgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUyAmJiBkYXRhVHlwZSA9PSBSRUdfU1ogJiYgYnVmZmVyTGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyIiwgcmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oYnVmZmVyKSk7CisgICAgICAgIH0KKyAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSFJFU1VMVCBMb2FkTGF1bmNoZXJTdGF0ZUZyb21LZXkoCisgICAgICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICAgICAgX19pbiBIS0VZIGhrSGl2ZQorICAgICkgeworICAgICAgICBjb25zdCBMUENXU1RSIHN1YmtleSA9IEwiU29mdHdhcmVcXFB5dGhvblxcUHlMYXVuY2hlciI7CisgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgTFJFU1VMVCByZXM7CisKKyAgICAgICAgaWYgKElzVGFyZ2V0UGxhdGZvcm14NjQocEVuZ2luZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZLCAmaEtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBSZWdPcGVuS2V5RXhXKGhrSGl2ZSwgc3Via2V5LCAwLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSwgJmhLZXkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICByZXR1cm4gSFJFU1VMVF9GUk9NX1dJTjMyKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICByZXMgPSBSZWdRdWVyeVZhbHVlRXhXKGhLZXksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJJbmNsdWRlX2xhdW5jaGVyIiwgMCk7CisgICAgICAgIH0gZWxzZSBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluY2x1ZGVfbGF1bmNoZXIiLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgTCJBc3NvY2lhdGVGaWxlcyIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJBc3NvY2lhdGVGaWxlcyIsIDApOworICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJBc3NvY2lhdGVGaWxlcyIsIDEpOworICAgICAgICB9CisKKyAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgIHJldHVybiBTX09LOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXMoX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lKSB7CisgICAgICAgIFdDSEFSIHN1YmtleUZtdFsyNTZdOworICAgICAgICBXQ0hBUiBzdWJrZXlbMjU2XTsKKyAgICAgICAgRFdPUkQgc3Via2V5TGVuOworICAgICAgICBIUkVTVUxUIGhyOworICAgICAgICBIS0VZIGhrSGl2ZTsKKworICAgICAgICAvLyBUaGUgbGF1bmNoZXIgaW5zdGFsbGF0aW9uIGlzIHNlcGFyYXRlIGZyb20gdGhlIFB5dGhvbiBpbnN0YWxsLCBzbyB3ZQorICAgICAgICAvLyBjaGVjayBpdHMgc3RhdGUgbGF0ZXIuIFRoaXMgYWxzbyBjaGVja3MgdGhlIGZpbGUgYXNzb2NpYXRpb24gb3B0aW9uLgorCisgICAgICAgIC8vIEdldCB0aGUgcmVnaXN0cnkga2V5IGZyb20gdGhlIGJ1bmRsZSwgdG8gc2F2ZSBoYXZpbmcgdG8gZHVwbGljYXRlIGl0CisgICAgICAgIC8vIGluIG11bHRpcGxlIHBsYWNlcy4KKyAgICAgICAgc3Via2V5TGVuID0gc2l6ZW9mKHN1YmtleUZtdCkgLyBzaXplb2Yoc3Via2V5Rm10WzBdKTsKKyAgICAgICAgaHIgPSBwRW5naW5lLT5HZXRWYXJpYWJsZVN0cmluZyhMIk9wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleSIsIHN1YmtleUZtdCwgJnN1YmtleUxlbik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9jYXRlIHJlZ2lzdHJ5IGtleSIpOworICAgICAgICBzdWJrZXlMZW4gPSBzaXplb2Yoc3Via2V5KSAvIHNpemVvZihzdWJrZXlbMF0pOworICAgICAgICBociA9IHBFbmdpbmUtPkZvcm1hdFN0cmluZyhzdWJrZXlGbXQsIHN1YmtleSwgJnN1YmtleUxlbik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCAlbHMiLCBzdWJrZXlGbXQpOworCisgICAgICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHVzZXIncyByZWdpc3RyeSBmb3IgZXhpc3RpbmcgZmVhdHVyZXMKKyAgICAgICAgaGtIaXZlID0gSEtFWV9DVVJSRU5UX1VTRVI7CisgICAgICAgIGhyID0gTG9hZE9wdGlvbmFsRmVhdHVyZVN0YXRlc0Zyb21LZXkocEVuZ2luZSwgaGtIaXZlLCBzdWJrZXkpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byByZWFkIGZyb20gSEtDVVxcJWxzIiwgc3Via2V5KTsKKyAgICAgICAgaWYgKGhyID09IFNfRkFMU0UpIHsKKyAgICAgICAgICAgIC8vIE5vdyBjaGVjayB0aGUgbG9jYWwgbWFjaGluZSByZWdpc3RyeQorICAgICAgICAgICAgaGtIaXZlID0gSEtFWV9MT0NBTF9NQUNISU5FOworICAgICAgICAgICAgaHIgPSBMb2FkT3B0aW9uYWxGZWF0dXJlU3RhdGVzRnJvbUtleShwRW5naW5lLCBoa0hpdmUsIHN1YmtleSk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byByZWFkIGZyb20gSEtMTVxcJWxzIiwgc3Via2V5KTsKKyAgICAgICAgICAgIGlmIChociA9PSBTX09LKSB7CisgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBzeXN0ZW0td2lkZSBpbnN0YWxsLCBzbyBlbmFibGUgdGhlc2Ugc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbEFsbFVzZXJzIiwgMSk7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ29tcGlsZUFsbCIsIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGhyID09IFNfT0spIHsKKyAgICAgICAgICAgIC8vIENhbm5vdCBjaGFuZ2UgSW5zdGFsbEFsbFVzZXJzU3RhdGUgd2hlbiB1cGdyYWRpbmcuIFdoaWxlIHRoZXJlJ3MKKyAgICAgICAgICAgIC8vIG5vIGdvb2QgcmVhc29uIHRvIG5vdCBhbGxvdyBpbnN0YWxsaW5nIGEgcGVyLXVzZXIgYW5kIGFuIGFsbC11c2VyCisgICAgICAgICAgICAvLyB2ZXJzaW9uIHNpbXVsdGFuZW91c2x5LCBCdXJuIGNhbid0IGhhbmRsZSB0aGUgc3RhdGUgbWFuYWdlbWVudAorICAgICAgICAgICAgLy8gYW5kIHdpbGwgbmVlZCB0byB1bmluc3RhbGwgdGhlIG9sZCBvbmUuIAorICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJJbnN0YWxsQWxsVXNlcnNTdGF0ZSIsIEwiZGlzYWJsZSIpOworCisgICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGluc3RhbGwgZGlyZWN0b3J5LiBUaGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZQorICAgICAgICAgICAgLy8gdXNlci4KKyAgICAgICAgICAgIHN1YmtleUxlbiA9IHNpemVvZihzdWJrZXlGbXQpIC8gc2l6ZW9mKHN1YmtleUZtdFswXSk7CisgICAgICAgICAgICBociA9IHBFbmdpbmUtPkdldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyUmVnaXN0cnlLZXkiLCBzdWJrZXlGbXQsICZzdWJrZXlMZW4pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2NhdGUgcmVnaXN0cnkga2V5Iik7CisgICAgICAgICAgICBzdWJrZXlMZW4gPSBzaXplb2Yoc3Via2V5KSAvIHNpemVvZihzdWJrZXlbMF0pOworICAgICAgICAgICAgaHIgPSBwRW5naW5lLT5Gb3JtYXRTdHJpbmcoc3Via2V5Rm10LCBzdWJrZXksICZzdWJrZXlMZW4pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0ICVscyIsIHN1YmtleUZtdCk7CisgICAgICAgICAgICBMb2FkVGFyZ2V0RGlyRnJvbUtleShwRW5naW5lLCBoa0hpdmUsIHN1YmtleSk7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm47CisgICAgfQorCitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3RvciAtIGluaXRpYWxpemUgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICAvLworICAgIFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgICAgICBfX2luIEhNT0RVTEUgaE1vZHVsZSwKKyAgICAgICAgX19pbiBCT09MIGZQcmVyZXEsCisgICAgICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICAgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgICAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZAorICAgICkgOiBDQmFsQmFzZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKHBFbmdpbmUsIHBDb21tYW5kLCAzLCAzMDAwKSB7CisgICAgICAgIF9oTW9kdWxlID0gaE1vZHVsZTsKKyAgICAgICAgbWVtY3B5X3MoJl9jb21tYW5kLCBzaXplb2YoX2NvbW1hbmQpLCBwQ29tbWFuZCwgc2l6ZW9mKEJPT1RTVFJBUFBFUl9DT01NQU5EKSk7CisKKyAgICAgICAgTE9OR0xPTkcgbGxJbnN0YWxsZWQgPSAwOworICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiV2l4QnVuZGxlSW5zdGFsbGVkIiwgJmxsSW5zdGFsbGVkKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgQk9PVFNUUkFQUEVSX1JFU1VNRV9UWVBFX1JFQk9PVCAhPSBfY29tbWFuZC5yZXN1bWVUeXBlICYmIDAgPCBsbEluc3RhbGxlZCAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgPT0gX2NvbW1hbmQuYWN0aW9uKSB7CisgICAgICAgICAgICBfY29tbWFuZC5hY3Rpb24gPSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWTsKKyAgICAgICAgfSBlbHNlIGlmICgwID09IGxsSW5zdGFsbGVkICYmIChCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWSA9PSBfY29tbWFuZC5hY3Rpb24gfHwgQk9PVFNUUkFQUEVSX0FDVElPTl9SRVBBSVIgPT0gX2NvbW1hbmQuYWN0aW9uKSkgeworICAgICAgICAgICAgX2NvbW1hbmQuYWN0aW9uID0gQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOworICAgICAgICB9CisKKyAgICAgICAgX3BsYW5uZWRBY3Rpb24gPSBCT09UU1RSQVBQRVJfQUNUSU9OX1VOS05PV047CisKKworICAgICAgICAvLyBXaGVuIHJlc3VtaW5nIGZyb20gcmVzdGFydCBkb2luZyBzb21lIGluc3RhbGwtbGlrZSBvcGVyYXRpb24sIHRyeSB0byBmaW5kIHRoZSBwYWNrYWdlIHRoYXQgZm9yY2VkIHRoZQorICAgICAgICAvLyByZXN0YXJ0LiBXZSdsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBkdXJpbmcgcGxhbm5pbmcuCisgICAgICAgIF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRVNVTUVfVFlQRV9SRUJPT1QgPT0gX2NvbW1hbmQucmVzdW1lVHlwZSAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA8IF9jb21tYW5kLmFjdGlvbikgeworICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBmb3JjZWQgcmVzdGFydCBwYWNrYWdlIHZhcmlhYmxlIGlzIG51bGwgd2hlbiBpdCBpcyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJXaXhCdW5kbGVGb3JjZWRSZXN0YXJ0UGFja2FnZSIsICZfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOworICAgICAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIV9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCB8fCAhKl9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCkgeworICAgICAgICAgICAgICAgIFJlbGVhc2VOdWxsU3RyKF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBfY3J0SW5zdGFsbGVkVG9rZW4gPSAtMTsKKyAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ1JUSW5zdGFsbGVkIiwgSXNDcnRJbnN0YWxsZWQoKSA/IDEgOiAwKTsKKworICAgICAgICBfd2l4TG9jID0gbnVsbHB0cjsKKyAgICAgICAgbWVtc2V0KCZfYnVuZGxlLCAwLCBzaXplb2YoX2J1bmRsZSkpOworICAgICAgICBtZW1zZXQoJl9jb25kaXRpb25zLCAwLCBzaXplb2YoX2NvbmRpdGlvbnMpKTsKKyAgICAgICAgX2NvbmZpcm1DbG9zZU1lc3NhZ2UgPSBudWxscHRyOworICAgICAgICBfZmFpbGVkTWVzc2FnZSA9IG51bGxwdHI7CisKKyAgICAgICAgX2xhbmd1YWdlID0gbnVsbHB0cjsKKyAgICAgICAgX3RoZW1lID0gbnVsbHB0cjsKKyAgICAgICAgbWVtc2V0KF9wYWdlSWRzLCAwLCBzaXplb2YoX3BhZ2VJZHMpKTsKKyAgICAgICAgX2hVaVRocmVhZCA9IG51bGxwdHI7CisgICAgICAgIF9yZWdpc3RlcmVkID0gRkFMU0U7CisgICAgICAgIF9oV25kID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhdGUgPSBQWUJBX1NUQVRFX0lOSVRJQUxJWklORzsKKyAgICAgICAgX3Zpc2libGVQYWdlSWQgPSAwOworICAgICAgICBfaW5zdGFsbFBhZ2UgPSBQQUdFX0xPQURJTkc7CisgICAgICAgIF9ockZpbmFsID0gaHJIb3N0SW5pdGlhbGl6YXRpb247CisKKyAgICAgICAgX2Rvd25ncmFkaW5nT3RoZXJWZXJzaW9uID0gRkFMU0U7CisgICAgICAgIF91cGdyYWRpbmdPbGRWZXJzaW9uID0gRkFMU0U7CisgICAgICAgIF9yZXN0YXJ0UmVzdWx0ID0gQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfTk9ORTsKKyAgICAgICAgX3Jlc3RhcnRSZXF1aXJlZCA9IEZBTFNFOworICAgICAgICBfYWxsb3dSZXN0YXJ0ID0gRkFMU0U7CisKKyAgICAgICAgX3N1cHByZXNzRG93bmdyYWRlRmFpbHVyZSA9IEZBTFNFOworICAgICAgICBfc3VwcHJlc3NSZXBhaXIgPSBGQUxTRTsKKyAgICAgICAgX21vZGlmeWluZyA9IEZBTFNFOworICAgICAgICBfdXBncmFkaW5nID0gRkFMU0U7CisKKyAgICAgICAgX292ZXJyaWRhYmxlVmFyaWFibGVzID0gbnVsbHB0cjsKKyAgICAgICAgX3Rhc2tiYXJMaXN0ID0gbnVsbHB0cjsKKyAgICAgICAgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSA9IFVJTlRfTUFYOworICAgICAgICBfdGFza2JhckJ1dHRvbk9LID0gRkFMU0U7CisgICAgICAgIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlID0gRkFMU0U7CisgICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBGQUxTRTsKKworICAgICAgICBfc3VwcHJlc3NQYWludCA9IEZBTFNFOworCisgICAgICAgIHBFbmdpbmUtPkFkZFJlZigpOworICAgICAgICBfZW5naW5lID0gcEVuZ2luZTsKKworICAgICAgICBfaEJBRk1vZHVsZSA9IG51bGxwdHI7CisgICAgICAgIF9iYUZ1bmN0aW9uID0gbnVsbHB0cjsKKworICAgICAgICBMb2FkT3B0aW9uYWxGZWF0dXJlU3RhdGVzKHBFbmdpbmUpOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBEZXN0cnVjdG9yIC0gcmVsZWFzZSBtZW1iZXIgdmFyaWFibGVzLgorICAgIC8vCisgICAgflB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKCkgeworICAgICAgICBBc3NlcnRTeighOjpJc1dpbmRvdyhfaFduZCksICJXaW5kb3cgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYmVmb3JlIGRlc3RydWN0b3IuIik7CisgICAgICAgIEFzc2VydFN6KCFfdGhlbWUsICJUaGVtZSBzaG91bGQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJlZm9yZSBkZXN0cnVjdG9yLiIpOworCisgICAgICAgIFJlbGVhc2VPYmplY3QoX3Rhc2tiYXJMaXN0KTsKKyAgICAgICAgUmVsZWFzZURpY3QoX292ZXJyaWRhYmxlVmFyaWFibGVzKTsKKyAgICAgICAgUmVsZWFzZVN0cihfZmFpbGVkTWVzc2FnZSk7CisgICAgICAgIFJlbGVhc2VTdHIoX2NvbmZpcm1DbG9zZU1lc3NhZ2UpOworICAgICAgICBCYWxDb25kaXRpb25zVW5pbml0aWFsaXplKCZfY29uZGl0aW9ucyk7CisgICAgICAgIEJhbEluZm9VbmluaXRpYWxpemUoJl9idW5kbGUpOworICAgICAgICBMb2NGcmVlKF93aXhMb2MpOworCisgICAgICAgIFJlbGVhc2VTdHIoX2xhbmd1YWdlKTsKKyAgICAgICAgUmVsZWFzZVN0cihfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOworICAgICAgICBSZWxlYXNlTnVsbE9iamVjdChfZW5naW5lKTsKKworICAgICAgICBpZiAoX2hCQUZNb2R1bGUpIHsKKyAgICAgICAgICAgIDo6RnJlZUxpYnJhcnkoX2hCQUZNb2R1bGUpOworICAgICAgICAgICAgX2hCQUZNb2R1bGUgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEhNT0RVTEUgX2hNb2R1bGU7CisgICAgQk9PVFNUUkFQUEVSX0NPTU1BTkQgX2NvbW1hbmQ7CisgICAgSUJvb3RzdHJhcHBlckVuZ2luZSogX2VuZ2luZTsKKyAgICBCT09UU1RSQVBQRVJfQUNUSU9OIF9wbGFubmVkQWN0aW9uOworCisgICAgTFBXU1RSIF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydDsKKworICAgIFdJWF9MT0NBTElaQVRJT04qIF93aXhMb2M7CisgICAgQkFMX0lORk9fQlVORExFIF9idW5kbGU7CisgICAgQkFMX0NPTkRJVElPTlMgX2NvbmRpdGlvbnM7CisgICAgTFBXU1RSIF9mYWlsZWRNZXNzYWdlOworICAgIExQV1NUUiBfY29uZmlybUNsb3NlTWVzc2FnZTsKKworICAgIExQV1NUUiBfbGFuZ3VhZ2U7CisgICAgVEhFTUUqIF90aGVtZTsKKyAgICBEV09SRCBfcGFnZUlkc1tjb3VudG9mKFBBR0VfTkFNRVMpXTsKKyAgICBIQU5ETEUgX2hVaVRocmVhZDsKKyAgICBCT09MIF9yZWdpc3RlcmVkOworICAgIEhXTkQgX2hXbmQ7CisKKyAgICBQWUJBX1NUQVRFIF9zdGF0ZTsKKyAgICBIUkVTVUxUIF9ockZpbmFsOworICAgIERXT1JEIF92aXNpYmxlUGFnZUlkOworICAgIFBBR0UgX2luc3RhbGxQYWdlOworCisgICAgQk9PTCBfc3RhcnRlZEV4ZWN1dGlvbjsKKyAgICBEV09SRCBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3M7CisgICAgRFdPUkQgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3M7CisKKyAgICBCT09MIF9kb3duZ3JhZGluZ090aGVyVmVyc2lvbjsKKyAgICBCT09MIF91cGdyYWRpbmdPbGRWZXJzaW9uOworICAgIEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUIF9yZXN0YXJ0UmVzdWx0OworICAgIEJPT0wgX3Jlc3RhcnRSZXF1aXJlZDsKKyAgICBCT09MIF9hbGxvd1Jlc3RhcnQ7CisKKyAgICBCT09MIF9zdXBwcmVzc0Rvd25ncmFkZUZhaWx1cmU7CisgICAgQk9PTCBfc3VwcHJlc3NSZXBhaXI7CisgICAgQk9PTCBfbW9kaWZ5aW5nOworICAgIEJPT0wgX3VwZ3JhZGluZzsKKworICAgIGludCBfY3J0SW5zdGFsbGVkVG9rZW47CisKKyAgICBTVFJJTkdESUNUX0hBTkRMRSBfb3ZlcnJpZGFibGVWYXJpYWJsZXM7CisKKyAgICBJVGFza2Jhckxpc3QzKiBfdGFza2Jhckxpc3Q7CisgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOworICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKKyAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOworICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKKworICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CisKKyAgICBITU9EVUxFIF9oQkFGTW9kdWxlOworICAgIElCb290c3RyYXBwZXJCQUZ1bmN0aW9uKiBfYmFGdW5jdGlvbjsKK307CisKKy8vCisvLyBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbiAtIGNyZWF0ZXMgYSBuZXcgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIG9iamVjdC4KKy8vCitIUkVTVUxUIENyZWF0ZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgIF9faW4gSE1PRFVMRSBoTW9kdWxlLAorICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQsCisgICAgX19vdXQgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKiogcHBBcHBsaWNhdGlvbgorICAgICkgeworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgaWYgKGZQcmVyZXEpIHsKKyAgICAgICAgaHIgPSBFX0lOVkFMSURBUkc7CisgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgfQorCisgICAgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qIHBBcHBsaWNhdGlvbiA9IG51bGxwdHI7CisKKyAgICBwQXBwbGljYXRpb24gPSBuZXcgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24oaE1vZHVsZSwgZlByZXJlcSwgaHJIb3N0SW5pdGlhbGl6YXRpb24sIHBFbmdpbmUsIHBDb21tYW5kKTsKKyAgICBFeGl0T25OdWxsKHBBcHBsaWNhdGlvbiwgaHIsIEVfT1VUT0ZNRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24gb2JqZWN0LiIpOworCisgICAgKnBwQXBwbGljYXRpb24gPSBwQXBwbGljYXRpb247CisgICAgcEFwcGxpY2F0aW9uID0gbnVsbHB0cjsKKworTEV4aXQ6CisgICAgUmVsZWFzZU9iamVjdChwQXBwbGljYXRpb24pOworICAgIHJldHVybiBocjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOWYzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlICJwY2guaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1NjQxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJwcmVjb21wLmgiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLyAKKy8vIDxzdW1tYXJ5PgorLy8gICAgUHJlY29tcGlsZWQgaGVhZGVyIGZvciBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24uCisvLyA8L3N1bW1hcnk+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8Z2RpcGx1cy5oPgorI2luY2x1ZGUgPFV4dGhlbWUuaD4KKyNpbmNsdWRlIDxtc2lxdWVyeS5oPgorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ryc2FmZS5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSAiZHV0aWwuaCIKKyNpbmNsdWRlICJtZW11dGlsLmgiCisjaW5jbHVkZSAiZGljdHV0aWwuaCIKKyNpbmNsdWRlICJkaXJ1dGlsLmgiCisjaW5jbHVkZSAiZmlsZXV0aWwuaCIKKyNpbmNsdWRlICJsb2N1dGlsLmgiCisjaW5jbHVkZSAibG9ndXRpbC5oIgorI2luY2x1ZGUgInBhdGh1dGlsLmgiCisjaW5jbHVkZSAicmVzcnV0aWwuaCIKKyNpbmNsdWRlICJzaGVsdXRpbC5oIgorI2luY2x1ZGUgInN0cnV0aWwuaCIKKyNpbmNsdWRlICJ0aG11dGlsLmgiCisjaW5jbHVkZSAidXJpdXRpbC5oIgorI2luY2x1ZGUgInhtbHV0aWwuaCIKKworI2luY2x1ZGUgIklCb290c3RyYXBwZXJFbmdpbmUuaCIKKyNpbmNsdWRlICJJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uaCIKKworI2luY2x1ZGUgIkJhbEJhc2VCb290c3RyYXBwZXJBcHBsaWNhdGlvbi5oIgorI2luY2x1ZGUgImJhbGluZm8uaCIKKyNpbmNsdWRlICJiYWxjb25kaXRpb24uaCIKKworSFJFU1VMVCBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbigKKyAgICBfX2luIEhNT0RVTEUgaE1vZHVsZSwKKyAgICBfX2luIEJPT0wgZlByZXJlcSwKKyAgICBfX2luIEhSRVNVTFQgaHJIb3N0SW5pdGlhbGl6YXRpb24sCisgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgIF9faW4gY29uc3QgQk9PVFNUUkFQUEVSX0NPTU1BTkQqIHBDb21tYW5kLAorICAgIF9fb3V0IElCb290c3RyYXBwZXJBcHBsaWNhdGlvbioqIHBwQXBwbGljYXRpb24KKyk7CisKKyNpbmNsdWRlICJJQm9vdHN0cmFwcGVyQkFGdW5jdGlvbi5oIgorCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlNDVhZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmNwcApAQCAtMCwwICsxLDc2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEuY3BwIiBjb21wYW55PSJPdXRlcmN1cnZlIEZvdW5kYXRpb24iPgorLy8gICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKy8vICAgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNaWNyb3NvZnQgUmVjaXByb2NhbCBMaWNlbnNlIChNUy1STCkuCisvLyAgIFRoZSBsaWNlbnNlIGFuZCBmdXJ0aGVyIGNvcHlyaWdodCB0ZXh0IGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorLy8gICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIDwvY29weXJpZ2h0PgorLy8KKy8vIDxzdW1tYXJ5PgorLy8gU2V0dXAgY2hhaW5lci9ib290c3RyYXBwZXIgc3RhbmRhcmQgVUkgZm9yIFdpWCB0b29sc2V0LgorLy8gPC9zdW1tYXJ5PgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJwY2guaCIKKworc3RhdGljIEhJTlNUQU5DRSB2aEluc3RhbmNlID0gTlVMTDsKKworZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBEbGxNYWluKAorICAgIElOIEhJTlNUQU5DRSBoSW5zdGFuY2UsCisgICAgSU4gRFdPUkQgZHdSZWFzb24sCisgICAgSU4gTFBWT0lEIC8qIHB2UmVzZXJ2ZWQgKi8KKyAgICApCit7CisgICAgc3dpdGNoKGR3UmVhc29uKQorICAgIHsKKyAgICBjYXNlIERMTF9QUk9DRVNTX0FUVEFDSDoKKyAgICAgICAgOjpEaXNhYmxlVGhyZWFkTGlicmFyeUNhbGxzKGhJbnN0YW5jZSk7CisgICAgICAgIHZoSW5zdGFuY2UgPSBoSW5zdGFuY2U7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisgICAgICAgIHZoSW5zdGFuY2UgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitleHRlcm4gIkMiIEhSRVNVTFQgV0lOQVBJIEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uQ3JlYXRlKAorICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZCwKKyAgICBfX291dCBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKiBwcEFwcGxpY2F0aW9uCisgICAgKQoreworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgQmFsSW5pdGlhbGl6ZShwRW5naW5lKTsKKworICAgIGhyID0gQ3JlYXRlQm9vdHN0cmFwcGVyQXBwbGljYXRpb24odmhJbnN0YW5jZSwgRkFMU0UsIFNfT0ssIHBFbmdpbmUsIHBDb21tYW5kLCBwcEFwcGxpY2F0aW9uKTsKKyAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBib290c3RyYXBwZXIgYXBwbGljYXRpb24gaW50ZXJmYWNlLiIpOworCitMRXhpdDoKKyAgICByZXR1cm4gaHI7Cit9CisKKworZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3koKQoreworICAgIEJhbFVuaW5pdGlhbGl6ZSgpOworfQorCisKK2V4dGVybiAiQyIgSFJFU1VMVCBXSU5BUEkgTWJhUHJlcmVxQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUoCisgICAgX19pbiBIUkVTVUxUIGhySG9zdEluaXRpYWxpemF0aW9uLAorICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZCwKKyAgICBfX291dCBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKiBwcEFwcGxpY2F0aW9uCisgICAgKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKKworZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3koKQoreyB9CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5kZWYgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjliM2ZhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmRlZgpAQCAtMCwwICsxLDE4IEBACis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyA8Y29weXJpZ2h0IGZpbGU9IndpeHN0ZGJhLmRlZiIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKzsgICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKzsgICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKzsgICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKzsgICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKzsgPC9jb3B5cmlnaHQ+Cis7IAorOyA8c3VtbWFyeT4KKzsgICAgV2lYIFN0YW5kYXJkIEJvb3RzdHJhcHBlciBBcHBsaWNhdGlvbiBETEwgZW50cnkgcG9pbnRzLgorOyA8L3N1bW1hcnk+Cis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFWFBPUlRTCisgICAgQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUKKyAgICBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3kKKyAgICBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkNyZWF0ZQorICAgIE1iYVByZXJlcUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGVzdHJveQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuc2xuIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNDNmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5zbG4KQEAgLTAsMCArMSwyMiBAQAor77u/CitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMTMKK1Zpc3VhbFN0dWRpb1ZlcnNpb24gPSAxMi4wLjMwNTAxLjAKK01pbmltdW1WaXN1YWxTdHVkaW9WZXJzaW9uID0gMTAuMC40MDIxOS4xCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmJhIiwgInB5dGhvbmJhLnZjeHByb2oiLCAiezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLnZjeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMTI5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS52Y3hwcm9qCkBAIC0wLDAgKzEsNjkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgIDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEudmN4cHJvaiIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKyAgICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKyAgICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKyAgICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKyAgICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgPC9jb3B5cmlnaHQ+CistLT4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICcnIj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxNCknICE9ICcnIj52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTIpJyAhPSAnJyI+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQcm9qZWN0R3VpZD57N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfTwvUHJvamVjdEd1aWQ+CisgICAgPFRhcmdldE5hbWU+UHl0aG9uQkE8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlx3aXgucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxJbnREaXI+JChQeVNvdXJjZVBhdGgpUENCdWlsZFxvYmpcJChDb25maWd1cmF0aW9uKV8kKFBsYXRmb3JtKV9TZXR1cFxCb290c3RyYXBcPC9JbnREaXI+CisgICAgPE91dERpcj4kKEludERpcik8L091dERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NURElPX0xFR0FDWV9XSURFX1NQRUNJRklFUlM9MTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFdpeEluc3RhbGxQYXRoKXNka1xpbmM8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+cGNoLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNvbWN0bDMyLmxpYjtnZGlwbHVzLmxpYjttc2ltZzMyLmxpYjtzaGx3YXBpLmxpYjt3aW5pbmV0LmxpYjtkdXRpbC5saWI7YmFsdXRpbC5saWI7dmVyc2lvbi5saWI7dXh0aGVtZS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJ3YxNDAnIj4kKFdpeEluc3RhbGxQYXRoKXNka1x2czIwMTVcbGliXHg4NjwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJ3YxMjAnIj4kKFdpeEluc3RhbGxQYXRoKXNka1x2czIwMTNcbGliXHg4NjwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5weXRob25iYS5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J0RlYnVnJyI+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icHl0aG9uYmEuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icGNoLmNwcCI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJwY2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9InB5dGhvbmJhLmRlZiIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcmVzb3VyY2UuaCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3Jlc291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjMDNjMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3Jlc291cmNlLmgKQEAgLTAsMCArMSwyNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyA8Y29weXJpZ2h0IGZpbGU9InJlc291cmNlLmgiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy97e05PX0RFUEVOREVOQ0lFU319CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgorLy8KKyNkZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQorCisKKy8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCisvLyAKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKyNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDIKKyNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQorI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDMKKyNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAxMDEKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28gYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiNjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS50YXJnZXRzIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUudGFyZ2V0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzc2NDZiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUudGFyZ2V0cwpAQCAtMCwwICsxLDExMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiIFRyZWF0QXNMb2NhbFByb3BlcnR5PSJEb3dubG9hZFVybCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dFR5cGU+QnVuZGxlPC9PdXRwdXRUeXBlPgorICAgICAgICAKKyAgICAgICAgPEJvb3RzdHJhcENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChCb290c3RyYXBDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0Jvb3RzdHJhcENvbmZpZ3VyYXRpb24+CisgICAgICAgIDxMaW5rZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+MTEzMjsxMTM1OzExNDA8L0xpbmtlclN1cHByZXNzU3BlY2lmaWNXYXJuaW5ncz4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkiPiQoT3V0cHV0TmFtZSktJChQeXRob25WZXJzaW9uKTwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSIhJChCdWlsZEZvclJlbGVhc2UpIj4kKE91dHB1dE5hbWUpLSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpLiQoUmV2aXNpb25OdW1iZXIpPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4kKE91dHB1dE5hbWUpLWFtZDY0PC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IickKE91dHB1dFN1ZmZpeCknICE9ICcnIj4kKE91dHB1dE5hbWUpLSQoT3V0cHV0U3VmZml4KTwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+JChPdXRwdXROYW1lKS1kPC9PdXRwdXROYW1lPgorICAgICAgICA8VGFyZ2V0TmFtZT4kKE91dHB1dE5hbWUpPC9UYXJnZXROYW1lPgorCisgICAgICAgIDxPdXRwdXRQYXRoPiQoT3V0cHV0UGF0aCllbi11c1w8L091dHB1dFBhdGg+CisgICAgICAgIDxPdXREaXI+JChPdXRwdXRQYXRoKTwvT3V0RGlyPgorICAgICAgICAKKyAgICAgICAgPERvd25sb2FkVXJsIENvbmRpdGlvbj0iJyQoRG93bmxvYWRVcmwpJyA9PSAnJyBhbmQgJyQoRG93bmxvYWRVcmxCYXNlKScgIT0gJyciPiQoRG93bmxvYWRVcmxCYXNlLlRyaW1FbmQoYC9gKSkvJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcikvJChBcmNoTmFtZSkkKFJlbGVhc2VMZXZlbE5hbWUpLzwvRG93bmxvYWRVcmw+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybCknICE9ICcnIj4kKERlZmluZUNvbnN0YW50cyk7RG93bmxvYWRVcmw9JChEb3dubG9hZFVybCl7Mn08L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKERvd25sb2FkVXJsKScgPT0gJyciPiQoRGVmaW5lQ29uc3RhbnRzKTtEb3dubG9hZFVybD17Mn08L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFdpeEV4dGVuc2lvbiBJbmNsdWRlPSJXaXhVdGlsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhVdGlsRXh0ZW5zaW9uPC9IaW50UGF0aD4KKyAgICAgICAgICAgIDxOYW1lPldpeFV0aWxFeHRlbnNpb248L05hbWU+CisgICAgICAgIDwvV2l4RXh0ZW5zaW9uPgorICAgICAgICA8V2l4RXh0ZW5zaW9uIEluY2x1ZGU9IldpeERlcGVuZGVuY3lFeHRlbnNpb24iPgorICAgICAgICAgICAgPEhpbnRQYXRoPldpeERlcGVuZGVuY3lFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4RGVwZW5kZW5jeUV4dGVuc2lvbjwvTmFtZT4KKyAgICAgICAgPC9XaXhFeHRlbnNpb24+CisgICAgICAgIDxXaXhFeHRlbnNpb24gSW5jbHVkZT0iV2l4QmFsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhCYWxFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4QmFsRXh0ZW5zaW9uPC9OYW1lPgorICAgICAgICA8L1dpeEV4dGVuc2lvbj4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJidW5kbGUud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJwYWNrYWdlZ3JvdXBzXCoud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb250ZW50IEluY2x1ZGU9IkRlZmF1bHQudGhtIiAvPgorICAgICAgICA8Q29udGVudCBJbmNsdWRlPSJEZWZhdWx0Lnd4bCIgLz4KKyAgICAgICAgPENvbnRlbnQgSW5jbHVkZT0iU2lkZUJhci5wbmciIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iYnVuZGxlLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9IipfZW4tVVMud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKE91dHB1dFBhdGgpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT48L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgICAgICA8UGFja2FnZT4KKyAgICAgICAgICAgIDxQcm9wZXJ0aWVzPkJ1aWxkRm9yUmVsZWFzZT0kKEJ1aWxkRm9yUmVsZWFzZSk8L1Byb3BlcnRpZXM+CisgICAgICAgIDwvUGFja2FnZT4KKyAgICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFBhY2thZ2UgSW5jbHVkZT0iLi5cY29yZVxjb3JlKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxkZXZcZGV2Ki53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxkb2NcZG9jKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxleGVcZXhlKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxsaWJcbGliKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxwYXRoXHBhdGgqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHBpcFxwaXAqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRjbHRrXHRjbHRrKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlx0ZXN0XHRlc3QqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRvb2xzXHRvb2xzKi53aXhwcm9qIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8QnVpbGRQYWNrYWdlc1RhcmdldHM+QnVpbGQ8L0J1aWxkUGFja2FnZXNUYXJnZXRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9TZXRSZWJ1aWxkVGFyZ2V0IiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVSZWJ1aWxkIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8QnVpbGRQYWNrYWdlc1RhcmdldHM+UmVidWlsZDwvQnVpbGRQYWNrYWdlc1RhcmdldHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IkJ1aWxkUGFja2FnZXMiIEJlZm9yZVRhcmdldHM9IkJlZm9yZUJ1aWxkIiBDb25kaXRpb249IickKFJlYnVpbGRBbGwpJyAhPSAnZmFsc2UnIj4KKyAgICAgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUGFja2FnZSkiIFRhcmdldHM9IiQoQnVpbGRQYWNrYWdlc1RhcmdldHMpIiBCdWlsZEluUGFyYWxsZWw9InRydWUiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZExhdW5jaGVyIiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVCdWlsZCIgQ29uZGl0aW9uPSInJChSZWJ1aWxkQWxsKScgIT0gJ2ZhbHNlJyI+CisgICAgICAgIDwhLS0gQnVpbGQgdGhlIGxhdW5jaGVyIE1TSSB1c2luZyBFeGVjIHJhdGhlciB0aGFuIE1TQnVpbGQgLS0+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9J21zYnVpbGQgLi5cbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiAvcDpQbGF0Zm9ybT14ODYgL3A6T3V0cHV0UGF0aD0iJChCdWlsZFBhdGguVHJpbUVuZChgXGApKSIgL3A6T3V0cHV0U3VmZml4PSQoUGxhdGZvcm0pIC9wOkJ1aWxkRm9yUmVsZWFzZT0kKEJ1aWxkRm9yUmVsZWFzZSkgL3A6VXNlVGVzdE1hcmtlcj0kKFVzZVRlc3RNYXJrZXIpJworICAgICAgICAgICAgICBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iQnVpbGRCb290c3RyYXBBcHBsaWNhdGlvbiIgQmVmb3JlVGFyZ2V0cz0iQmVmb3JlQnVpbGQiPgorICAgICAgICA8TWVzc2FnZSBUZXh0PSJCdWlsZGluZyBib290c3RyYXAgYXBwIiBJbXBvcnRhbmNlPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPE1TQnVpbGQgUHJvamVjdHM9ImJvb3RzdHJhcFxweXRob25iYS52Y3hwcm9qIgorICAgICAgICAgICAgICAgICBUYXJnZXRzPSJCdWlsZDtHZXROYXRpdmVUYXJnZXRQYXRoIgorICAgICAgICAgICAgICAgICBVc2VSZXN1bHRzQ2FjaGU9InRydWUiCisgICAgICAgICAgICAgICAgIFByb3BlcnRpZXM9IkNvbmZpZ3VyYXRpb249JChCb290c3RyYXBDb25maWd1cmF0aW9uKTtQbGF0Zm9ybT1XaW4zMiI+CisgICAgICAgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IlRhcmdldE91dHB1dHMiIFByb3BlcnR5TmFtZT0iQm9vdHN0cmFwQXBwUGF0aCIgLz4KKyAgICAgICAgPC9NU0J1aWxkPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtCb290c3RyYXBBcHA9JChCb290c3RyYXBBcHBQYXRoKTwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eGwgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdhNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4bApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICA8U3RyaW5nIElkPSJDUlREZXNjcmlwdGlvbiI+QyBSdW50aW1lIFVwZGF0ZSAoS0IyOTk5MjI2KTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDb21waWxlQWxsRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkNvbXBpbGVBbGxPRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5ICgtTyk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ29tcGlsZUFsbE9PRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5ICgtT08pPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzYyYzYyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCkBAIC0wLDAgKzEsOTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSIKKyAgICAgeG1sbnM6YmFsPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC9CYWxFeHRlbnNpb24iPgorICA8QnVuZGxlIE5hbWU9IiEobG9jLkZ1bGxQcm9kdWN0TmFtZSkiCisgICAgICAgICAgVXBncmFkZUNvZGU9IiQodmFyLkNvcmVVcGdyYWRlQ29kZSkiCisgICAgICAgICAgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiCisgICAgICAgICAgSWNvblNvdXJjZUZpbGU9ImJ1bmRsZS5pY28iCisgICAgICAgICAgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIgorICAgICAgICAgIEFib3V0VXJsPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgorICAgICAgICAgIERpc2FibGVNb2RpZnk9ImJ1dHRvbiIKKyAgICAgICAgICBDb21wcmVzc2VkPSJubyI+CisgICAgPEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIElkPSJQeXRob25CQSIgU291cmNlRmlsZT0iJCh2YXIuQm9vdHN0cmFwQXBwKSI+CisgICAgICAgIDxQYXlsb2FkIENvbXByZXNzZWQ9J3llcycgU291cmNlRmlsZT0nRGVmYXVsdC50aG0nIC8+CisgICAgICAgIDxQYXlsb2FkIENvbXByZXNzZWQ9J3llcycgU291cmNlRmlsZT0nRGVmYXVsdC53eGwnIC8+CisgICAgICAgIDxQYXlsb2FkIENvbXByZXNzZWQ9J3llcycgU291cmNlRmlsZT0nU2lkZUJhci5wbmcnIC8+CisgICAgPC9Cb290c3RyYXBwZXJBcHBsaWNhdGlvbj4KKworICAgIDwhLS0gTWF5IGJlIHNldCB0byAiUmVtb3ZpbmciIG9yICJSZXBhaXJpbmciIC0tPgorICAgIDxWYXJpYWJsZSBOYW1lPSJBY3Rpb25MaWtlSW5zdGFsbGluZyIgVmFsdWU9Ikluc3RhbGxpbmciIC8+CisgICAgPCEtLSBNYXkgYmUgc2V0IHRvICJVbmluc3RhbGxhdGlvbiIgb3IgIlJlcGFpciIgLS0+CisgICAgPFZhcmlhYmxlIE5hbWU9IkFjdGlvbkxpa2VJbnN0YWxsYXRpb24iIFZhbHVlPSJTZXR1cCIgLz4KKworICAgIDxWYXJpYWJsZSBOYW1lPSJTaG9ydFZlcnNpb24iIFZhbHVlPSIkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLiQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlNob3J0VmVyc2lvbk5vRG90IiBWYWx1ZT0iJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikiIC8+CisKKyAgICA8VmFyaWFibGUgTmFtZT0iSW5zdGFsbEFsbFVzZXJzIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldERpciIgVmFsdWU9IiIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPD9pZiAkKHZhci5QbGF0Zm9ybSl+PSJ4NjQiID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgVmFsdWU9IltQcm9ncmFtRmlsZXM2NEZvbGRlcl0kKHZhci5UZXN0UHJlZml4KVB5dGhvbiBbU2hvcnRWZXJzaW9uXSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldFBsYXRmb3JtIiBWYWx1ZT0ieDY0IiAvPgorICAgIDw/ZWxzZSA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiIFZhbHVlPSJbUHJvZ3JhbUZpbGVzRm9sZGVyXSQodmFyLlRlc3RQcmVmaXgpUHl0aG9uIFtTaG9ydFZlcnNpb25dIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0UGxhdGZvcm0iIFZhbHVlPSJ4ODYiIC8+CisgICAgPD9lbmRpZiA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiBWYWx1ZT0iW0xvY2FsQXBwRGF0YUZvbGRlcl1Qcm9ncmFtc1wkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeXRob25bU2hvcnRWZXJzaW9uTm9Eb3RdJCh2YXIuU3VmZml4MzIpIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5IiBWYWx1ZT0iU29mdHdhcmVcJCh2YXIuVGVzdFByZWZpeClQeXRob25cUHl0aG9uQ29yZVxbU2hvcnRWZXJzaW9uXSQodmFyLlN1ZmZpeDMyKVxJbnN0YWxsZWRGZWF0dXJlcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0RGlyUmVnaXN0cnlLZXkiIFZhbHVlPSJTb2Z0d2FyZVwkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeXRob25Db3JlXFtTaG9ydFZlcnNpb25dJCh2YXIuU3VmZml4MzIpXEluc3RhbGxQYXRoIiAvPgorICAgIAorICAgIDwhLS0KKyAgICBBbiBlbXB0eSBzdHJpbmcgd2lsbCB1c2UgdGhlIG90aGVyIGRlZmF1bHRzIGJhc2VkIG9uIEluc3RhbGxBbGxVc2VycworICAgIChhbmQgc3dpdGNoIGR5bmFtaWNhbGx5IGluIHRoZSBVSSkuIFRvIGdldCB0aGUgb2xkIGRlZmF1bHQsIHBhc3MKKyAgICB0aGlzIHByb3BlcnR5IG9uIHRoZSBjb21tYW5kIGxpbmU6CisgICAgICAgIERlZmF1bHRDdXN0b21UYXJnZXREaXI9W1dpbmRvd3NWb2x1bWVdUHl0aG9uW1Nob3J0VmVyc2lvbk5vRG90XQorICAgIC0tPgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0Q3VzdG9tVGFyZ2V0RGlyIiBWYWx1ZT0iIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKworICAgIDxWYXJpYWJsZSBOYW1lPSJJbnN0YWxsQWxsVXNlcnNTdGF0ZSIgVmFsdWU9ImVuYWJsZWQiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzU3RhdGUiIFZhbHVlPSJlbmFibGVkIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ3VzdG9tSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNTdGF0ZSIgVmFsdWU9IltJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc1N0YXRlXSIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0RGlyU3RhdGUiIFZhbHVlPSJlbmFibGVkIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJDdXN0b21Ccm93c2VCdXR0b25TdGF0ZSIgVmFsdWU9ImVuYWJsZWQiIC8+CisKKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9jb3JlIiBWYWx1ZT0iMSIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9leGUiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9kZXYiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9saWIiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV90ZXN0IiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfZG9jIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfdG9vbHMiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV90Y2x0ayIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3BpcCIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2xhdW5jaGVyIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfc3ltYm9scyIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2RlYnVnIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgCisgICAgPFZhcmlhYmxlIE5hbWU9IkxhdW5jaGVyT25seSIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDxWYXJpYWJsZSBOYW1lPSJBc3NvY2lhdGVGaWxlcyIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJTaG9ydGN1dHMiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iUHJlcGVuZFBhdGgiIFZhbHVlPSIwIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ29tcGlsZUFsbCIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDxWYXJpYWJsZSBOYW1lPSJTaW1wbGVJbnN0YWxsIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbiIgVmFsdWU9IiIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgCisgICAgPENoYWluIFBhcmFsbGVsQ2FjaGU9InllcyI+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnQiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjb3JlIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iZGV2IiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iZXhlIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0ibGliIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0idGVzdCIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImRvYyIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9InRvb2xzIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0idGNsdGsiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJsYXVuY2hlciIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9InBvc3RpbnN0YWxsIiAvPgorICAgIDwvQ2hhaW4+CisgIDwvQnVuZGxlPgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Z1bGwud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvZnVsbC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYmRkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Z1bGwud2l4cHJvagpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57M0UyMDRBREQtMjM4RC00RDEwLTg1MkMtNEY4NTkzMjVDODM5fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD5mdWxsPC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzTVNJPXllczsKKyAgICAgICAgICAgIENvbXByZXNzUERCPXllczsKKyAgICAgICAgICAgIENvbXByZXNzTVNJX0Q9eWVzOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGUudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY29yZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY29yZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzZDBiNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9jb3JlLnd4cwpAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0iY29yZSI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNvcmUubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NydC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY3J0Lnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQwNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NydC53eHMKQEAgLTAsMCArMSw0OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImNydCI+CisgICAgICAgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnRfMTQuMF92Ni4wIiAvPgorICAgICAgICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0XzE0LjBfdjYuMSIgLz4KKyAgICAgICAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImNydF8xNC4wX3Y2LjIiIC8+CisgICAgICAgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnRfMTQuMF92Ni4zIiAvPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPD9mb3JlYWNoIHZlciBpbiB2Ni4wO3Y2LjE7djYuMjt2Ni4zID8+CisgICAgPD9pZiAiJCh2YXIudmVyKSIgPSAidjYuMCIgPz4KKyAgICA8P2RlZmluZSBtc3V2ZXI9Ni4wID8+CisgICAgPD9lbHNlaWYgIiQodmFyLnZlcikiID0gInY2LjEiID8+CisgICAgPD9kZWZpbmUgbXN1dmVyPTYuMSA/PgorICAgIDw/ZWxzZWlmICIkKHZhci52ZXIpIiA9ICJ2Ni4yIiA/PgorICAgIDw/ZGVmaW5lIG1zdXZlcj04LVJUID8+CisgICAgPD9lbHNlaWYgIiQodmFyLnZlcikiID0gInY2LjMiID8+CisgICAgPD9kZWZpbmUgbXN1dmVyPTguMSA/PgorICAgIDw/ZWxzZSA/PgorICAgIDw/ZXJyb3IgdW5rbm93biB2ZXJzaW9uICQodmFyLnZlcikgPz4KKyAgICA8P2VuZGlmID8+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImNydF8xNC4wXyQodmFyLnZlcikiPgorICAgICAgICAgICAgPE1zdVBhY2thZ2UgSWQ9ImNydF8xNC4wXyQodmFyLnZlcilfeDg2IgorICAgICAgICAgICAgICAgICAgICAgICAgS0I9IjI5OTkyMjYiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnJlZGlzdClcV2luZG93cyQodmFyLm1zdXZlciktS0IyOTk5MjI2LXg4Ni5tc3UiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ1JURGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLkNSVERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgQ1JUSW5zdGFsbGVkIGFuZCBWZXJzaW9uTlQgPSAkKHZhci52ZXIpIGFuZCBub3QgVmVyc2lvbk5UNjQgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIG5vdCBMYXVuY2hlck9ubHkiIC8+CisKKyAgICAgICAgICAgIDxNc3VQYWNrYWdlIElkPSJjcnRfMTQuMF8kKHZhci52ZXIpX3g2NCIKKyAgICAgICAgICAgICAgICAgICAgICAgIEtCPSIyOTk5MjI2IgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iIShiaW5kcGF0aC5yZWRpc3QpXFdpbmRvd3MkKHZhci5tc3V2ZXIpLUtCMjk5OTIyNi14NjQubXN1IgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNSVERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5DUlREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IENSVEluc3RhbGxlZCBhbmQgVmVyc2lvbk5UNjQgPSAkKHZhci52ZXIpIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPD91bmRlZiBtc3V2ZXIgPz4KKyAgICA8P2VuZGZvcmVhY2ggPz4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kZXYud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2Rldi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI4NGRiYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kZXYud3hzCkBAIC0wLDAgKzEsNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJkZXYiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZGV2X2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZGV2X0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RldiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2RvYy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYzOWZmNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRvY19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRvYy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZG9jIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZG9jX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRvYy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZG9jIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2V4ZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZXhlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQ2NGM0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2V4ZS53eHMKQEAgLTAsMCArMSw2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImV4ZSI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZXhlLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZS5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2xhdW5jaGVyLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9sYXVuY2hlci53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdjNmFjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9sYXVuY2hlci53eHMKQEAgLTAsMCArMSwyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImxhdW5jaGVyIj4KKyAgICAgICAgICAgIDwhLS0gVGhlIEFsbCBVc2VycyBsYXVuY2hlciBpcyBhbHdheXMgdGhlIDMyLWJpdCB2ZXJzaW9uIC0tPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxhdW5jaGVyX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0ibGF1bmNoZXIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iKEluc3RhbGxBbGxVc2VycyBvciBJbnN0YWxsTGF1bmNoZXJBbGxVc2VycykgYW5kIEluY2x1ZGVfbGF1bmNoZXIiIC8+CisKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsYXVuY2hlcl9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsYXVuY2hlci5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCAoSW5zdGFsbEFsbFVzZXJzIG9yIEluc3RhbGxMYXVuY2hlckFsbFVzZXJzKSBhbmQgSW5jbHVkZV9sYXVuY2hlciIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2xpYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzZmJjMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJsaWIiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfbGliIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9wb3N0aW5zdGFsbC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcG9zdGluc3RhbGwud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MGMyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcG9zdGluc3RhbGwud3hzCkBAIC0wLDAgKzEsMTA3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0icG9zdGluc3RhbGwiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InBpcF9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InBpcC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfcGlwIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InBpcF9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJwaXAubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3BpcCBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InBhdGhfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJwYXRoLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgUHJlcGVuZFBhdGggYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGF0aF9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJwYXRoLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgUHJlcGVuZFBhdGggYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZGVmaW5lIENvbXBpbGVBbGxDb21tYW5kPS1FIC1zIC1XaSAiW1RhcmdldERpcl1cTGliXGNvbXBpbGVhbGwucHkiIC1mIC14ICJiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfHB5Ml98bGliMnRvM1xcdGVzdHN8dmVudlxcc2NyaXB0cyIgIltUYXJnZXREaXJdXExpYiI/PgorICAgICAgICAgICAgPEV4ZVBhY2thZ2UgSWQ9ImNvbXBpbGVhbGxfQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJweS5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ29tcGlsZUFsbERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBSZXBhaXJDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpdGFsPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgQ29tcGlsZUFsbCBhbmQgbm90IExhdW5jaGVyT25seSIgLz4KKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsT19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsT0Rlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBSZXBhaXJDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpdGFsPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgQ29tcGlsZUFsbCBhbmQgbm90IExhdW5jaGVyT25seSIgLz4KKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsT09fQWxsVXNlcnMiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJweS5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ29tcGlsZUFsbE9PRGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbW1hbmQ9Jy0kKHZhci5TaG9ydFZlcnNpb24pJCh2YXIuU3VmZml4MzIpIC1PTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBSZXBhaXJDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtT08gJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUGVybWFuZW50PSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBWaXRhbD0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIENvbXBpbGVBbGwgYW5kIG5vdCBMYXVuY2hlck9ubHkiIC8+CisKKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsRGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbW1hbmQ9Jy0kKHZhci5TaG9ydFZlcnNpb24pJCh2YXIuU3VmZml4MzIpICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcGFpckNvbW1hbmQ9Jy0kKHZhci5TaG9ydFZlcnNpb24pJCh2YXIuU3VmZml4MzIpICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBWaXRhbD0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICAgICAgPEV4ZVBhY2thZ2UgSWQ9ImNvbXBpbGVhbGxPX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsT0Rlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBSZXBhaXJDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtTyAkKHZhci5Db21waWxlQWxsQ29tbWFuZCknCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJtYW5lbnQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgVml0YWw9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgQ29tcGlsZUFsbCBhbmQgbm90IExhdW5jaGVyT25seSIgLz4KKyAgICAgICAgICAgIDxFeGVQYWNrYWdlIElkPSJjb21waWxlYWxsT09fSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icHkuZXhlIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNvbXBpbGVBbGxPT0Rlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb21tYW5kPSctJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSAtT08gJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nLSQodmFyLlNob3J0VmVyc2lvbikkKHZhci5TdWZmaXgzMikgLU9PICQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBWaXRhbD0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3RjbHRrLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90Y2x0ay53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwMjlhOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90Y2x0ay53eHMKQEAgLTAsMCArMSw2OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9InRjbHRrIj4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0a19wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrX2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0Y2x0ay5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGNsdGtfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrX2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGVzdC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGVzdC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJhY2FlZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90ZXN0Lnd4cwpAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0idGVzdCI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0X3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3RfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJ0ZXN0Lm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRlc3RfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3RfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3RfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rvb2xzLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90b29scy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ5YWIxOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90b29scy53eHMKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9InRvb2xzIj4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0b29sc19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRvb2xzLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90b29scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRvb2xzX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRvb2xzLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90b29scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZWxvY2FsLndpeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2Vsb2NhbC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjM2RlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2Vsb2NhbC53aXhwcm9qCkBAIC0wLDAgKzEsMjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntGQ0Q0M0FDOS05NjlGLTQ5QTEtOEFDNS1FREMyNzU5OUQxRUJ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PjwvT3V0cHV0U3VmZml4PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBDb21wcmVzc01TST15ZXM7CisgICAgICAgICAgICBDb21wcmVzc1BEQj1ubzsKKyAgICAgICAgICAgIENvbXByZXNzTVNJX0Q9bm8KKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNld2ViLndpeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2V3ZWIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTBjNzM1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNld2ViLndpeHByb2oKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezcxQ0RFMjEzLUNCMzktNEJEOS1CODlELUJCQjg3ODY4OTE0NH08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+d2ViaW5zdGFsbDwvT3V0cHV0U3VmZml4PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBDb21wcmVzc01TST1ubzsKKyAgICAgICAgICAgIENvbXByZXNzUERCPW5vOworICAgICAgICAgICAgQ29tcHJlc3NNU0lfRD1ubworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGUudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3NuYXBzaG90LndpeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL3NuYXBzaG90LndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M0NTA0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvc25hcHNob3Qud2l4cHJvagpAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57OEE0QTExNjItNEJGOS00RkY2LTlBOTgtMzE1RjAxRTQ0OTMyfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD48L091dHB1dFN1ZmZpeD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJyQoUGFjayknICE9ICd0cnVlJyI+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7Q29tcHJlc3NNU0k9bm87CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJyQoUGFjayknID09ICd0cnVlJyI+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7Q29tcHJlc3NNU0k9eWVzOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzUERCPW5vOworICAgICAgICAgICAgQ29tcHJlc3NNU0lfRD1ubzsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvbW1vbi53eHMgYi9Ub29scy9tc2kvY29tbW9uLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Zjk2YmQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKQEAgLTAsMCArMSwxMTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVwkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeXRob25Db3JlXCQodmFyLlNob3J0VmVyc2lvbikkKHZhci5TdWZmaXgzMikiIC8+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnQgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgR3VpZD0iKiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxDb25kaXRpb24+T1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZPC9Db25kaXRpb24+CisgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgVHlwZT0ic3RyaW5nIiBOYW1lPSIkKHZhci5PcHRpb25hbEZlYXR1cmVOYW1lKSIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICA8L0NvbXBvbmVudD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5IElkPSJVcGdyYWRlVGFibGUiIFZhbHVlPSIxIiAvPgorICAgICAgICAKKyAgICAgICAgPFVwZ3JhZGUgSWQ9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IkRPV05HUkFERSIgTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJubyIgT25seURldGVjdD0ieWVzIiAvPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJVUEdSQURFIiBNaW5pbXVtPSIkKHZhci5VcGdyYWRlTWluaW11bVZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ieWVzIiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1heGltdW09Im5vIiAvPgorICAgICAgICA8L1VwZ3JhZGU+CisgICAgICAgIAorICAgICAgICA8P2lmICQodmFyLlVwZ3JhZGVDb2RlKSE9JCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSA/PgorICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSI+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9Ik1JU1NJTkdfQ09SRSIgTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ieWVzIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CisgICAgICAgIDwvVXBncmFkZT4KKyAgICAgICAgPD9lbmRpZiA/PgorICAgICAgICAKKyAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5Ob0Rvd25ncmFkZSkiPkluc3RhbGxlZCBPUiBOT1QgRE9XTkdSQURFPC9Db25kaXRpb24+CisgICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuSW5jb3JyZWN0Q29yZSkiPkluc3RhbGxlZCBPUiBOT1QgTUlTU0lOR19DT1JFPC9Db25kaXRpb24+CisgICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9UYXJnZXREaXIpIj5JbnN0YWxsZWQgT1IgVEFSR0VURElSIE9SIFN1cHByZXNzX1RBUkdFVERJUl9DaGVjazwvQ29uZGl0aW9uPgorCisgICAgICAgIDxJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxJbml0aWFsaXplIj5VUEdSQURFPC9SZW1vdmVFeGlzdGluZ1Byb2R1Y3RzPgorICAgICAgICA8L0luc3RhbGxFeGVjdXRlU2VxdWVuY2U+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDwhLS0gSW5jbHVkZSBhbiBpY29uIGZvciB0aGUgUHJvZ3JhbXMgYW5kIEZlYXR1cmVzIGRpYWxvZyAtLT4KKyAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXHB5Y29uLmljbyIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBQUk9EVUNUSUNPTiIgVmFsdWU9IkFSUEljb24iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQTk9NT0RJRlkiIFZhbHVlPSIxIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkRJU0FCTEVBRFZUU0hPUlRDVVRTIiBWYWx1ZT0iMSIgLz4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeSBJZD0iVEFSR0VURElSIiBOYW1lPSJTb3VyY2VEaXIiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iSW5zdGFsbERpcmVjdG9yeSIgQ29tcG9uZW50R3VpZEdlbmVyYXRpb25TZWVkPSIkKHZhci5JbnN0YWxsRGlyZWN0b3J5R3VpZFNlZWQpIiAvPgorICAgICAgICA8L0RpcmVjdG9yeT4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDwhLS0gVG9wLWxldmVsIGRpcmVjdG9yaWVzIC0tPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJETExzIiBOYW1lPSJETExzIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkRvYyIgTmFtZT0iRG9jIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9ImluY2x1ZGUiIE5hbWU9ImluY2x1ZGUiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGliIiBOYW1lPSJMaWIiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0ibGlicyIgTmFtZT0ibGlicyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJTY3JpcHRzIiBOYW1lPSJTY3JpcHRzIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9InRjbCIgTmFtZT0idGNsIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlRvb2xzIiBOYW1lPSJUb29scyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8IS0tIFN0YXJ0IE1lbnUgZm9sZGVyIC0tPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iVEFSR0VURElSIj4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlByb2dyYW1NZW51Rm9sZGVyIj4KKyAgICAgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJNZW51RGlyIiBOYW1lPSIkKHZhci5UZXN0UHJlZml4KSEobG9jLlByb2R1Y3ROYW1lKSIgLz4KKyAgICAgICAgICAgIDwvRGlyZWN0b3J5PgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMDM1MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJMQ0lEIj4xMDMzPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iQ3VsdHVyZSI+ZW4tdXM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQcm9kdWN0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX08L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJGdWxsUHJvZHVjdE5hbWUiPlB5dGhvbiB7e0xvbmdWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlRpdGxlIj5QeXRob24ge3tMb25nVmVyc2lvbn19ICEobG9jLkRlc2NyaXB0b3IpICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdGlvbiI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iVGl0bGVQZGIiPlB5dGhvbiB7e0xvbmdWZXJzaW9ufX0gIShsb2MuRGVzY3JpcHRvcikgKHt7Qml0bmVzc319IHN5bWJvbHMpPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRpb25QZGIiPlB5dGhvbiB7e0xvbmdWZXJzaW9ufX0gIShsb2MuRGVzY3JpcHRvcikgKHt7Qml0bmVzc319IHN5bWJvbHMpPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iVGl0bGVfZCI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0gZGVidWcpPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRpb25fZCI+UHl0aG9uIHt7TG9uZ1ZlcnNpb259fSAhKGxvYy5EZXNjcmlwdG9yKSAoe3tCaXRuZXNzfX0gZGVidWcpPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTWFudWZhY3R1cmVyIj5QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vRG93bmdyYWRlIj5BIG5ld2VyIHZlcnNpb24gb2YgIShsb2MuUHJvZHVjdE5hbWUpIGlzIGFscmVhZHkgaW5zdGFsbGVkLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkluY29ycmVjdENvcmUiPkFuIGluY29ycmVjdCB2ZXJzaW9uIG9mIGEgcHJlcmVxdWlzaXRlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiBQbGVhc2UgdW5pbnN0YWxsIGFueSBvdGhlciB2ZXJzaW9ucyBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgYW5kIHRyeSBpbnN0YWxsaW5nIHRoaXMgYWdhaW4uPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTm9UYXJnZXREaXIiPlRoZSBUQVJHRVRESVIgdmFyaWFibGUgbXVzdCBiZSBwcm92aWRlZCB3aGVuIGludm9raW5nIHRoaXMgaW5zdGFsbGVyLjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlLndpeHByb2ogYi9Ub29scy9tc2kvY29yZS9jb3JlLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhlOGJhYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmUud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MUI0NTAyRDUtQjYyNy00RjUwLUFCRUEtNENDNUE4RTg4MjY1fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+Y29yZTwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZS53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImNvcmVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlLnd4cyBiL1Rvb2xzL21zaS9jb3JlL2NvcmUud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNGZiZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJjb3JlX2RsbCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9kLndpeHByb2ogYi9Ub29scy9tc2kvY29yZS9jb3JlX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjI5NmJmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9kLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0QzNjc3RENGLTA5OEEtNDM5OC05RkE1LThFNzRBQzM3RTBERn08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmNvcmVfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMgYi9Ub29scy9tc2kvY29yZS9jb3JlX2Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZTAzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX2Qud3hzCkBAIC0wLDAgKzEsMTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iY29yZV9kbGxfZCIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9lbi1VUy53eGwgYi9Ub29scy9tc2kvY29yZS9jb3JlX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTc3NDcwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5Db3JlIEludGVycHJldGVyPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5jb3JlPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1ZTE0NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZmlsZXMud3hzCkBAIC0wLDAgKzEsMzEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY29yZV9kbGwiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX3N0YWJsZS5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbl9zdGFibGUuZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24uZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob24uZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKS5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImNvcmVfc3ltYm9scyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24ucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob24ucGRiIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKS5wZGIiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImNvcmVfZGxsX2QiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX3N0YWJsZV9kLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX3N0YWJsZV9kLmRsbCIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKV9kLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fZC5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbl9kLmRsbCIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcilfZC5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX2QucGRiIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKV9kLnBkYiIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yzg4Mzg5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RTk4RTc1MzktNjRFNy00RENFLUFBQ0QtMDFFM0FERTQwRUZEfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+Y29yZV9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImNvcmVfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfcGRiLnd4cyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmMzMTc4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud3hzCkBAIC0wLDAgKzEsMTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZVBkYikiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iU3ltYm9scyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVQZGIpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25QZGIpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iY29yZV9zeW1ib2xzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY3N2X3RvX3d4cy5weSBiL1Rvb2xzL21zaS9jc3ZfdG9fd3hzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNWM4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY3N2X3RvX3d4cy5weQpAQCAtMCwwICsxLDEyNyBAQAorJycnCitQcm9jZXNzZXMgYSBDU1YgZmlsZSBjb250YWluaW5nIGEgbGlzdCBvZiBmaWxlcyBpbnRvIGEgV1hTIGZpbGUgd2l0aAorY29tcG9uZW50cyBmb3IgZWFjaCBsaXN0ZWQgZmlsZS4KKworVGhlIENTViBjb2x1bW5zIGFyZToKKyAgICBzb3VyY2Ugb2YgZmlsZSwgdGFyZ2V0IGZvciBmaWxlLCBncm91cCBuYW1lCisKK1VzYWdlOjoKKyAgICBweSB0eHRfdG9fd3hzLnB5IFtwYXRoIHRvIGZpbGUgbGlzdCAuY3N2XSBbcGF0aCB0byBkZXN0aW5hdGlvbiAud3hzXQorCitUaGlzIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgc3RydWN0dXJlcyB3aGVyZSBzb21lIGRpcmVjdG9yaWVzIG9ubHkKK2NvbnRhaW4gb3RoZXIgZGlyZWN0b3JpZXMuIE1TQnVpbGQgaXMgbm90IGFibGUgdG8gZ2VuZXJhdGUgdGhlCitEaXJlY3RvcnkgZW50cmllcyBpbiB0aGUgV1hTIGZpbGUgY29ycmVjdGx5LCBhcyBpdCBvcGVyYXRlcyBvbiBmaWxlcy4KK1B5dGhvbiwgaG93ZXZlciwgY2FuIGVhc2lseSBmaWxsIGluIHRoZSBnYXAuCisnJycKKworX19hdXRob3JfXyA9ICJTdGV2ZSBEb3dlciA8c3RldmUuZG93ZXJAbWljcm9zb2Z0LmNvbT4iCisKK2ltcG9ydCBjc3YKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluLCB6aXBfbG9uZ2VzdAorZnJvbSBwYXRobGliIGltcG9ydCBQdXJlV2luZG93c1BhdGgKK2Zyb20gdXVpZCBpbXBvcnQgdXVpZDEKKworSURfQ0hBUl9TVUJTID0geworICAgICctJzogJ18nLAorICAgICcrJzogJ19QJywKK30KKworZGVmIG1ha2VfaWQocGF0aCk6CisgICAgcmV0dXJuIHJlLnN1YigKKyAgICAgICAgcidbXkEtWmEtejAtOV8uXScsCisgICAgICAgIGxhbWJkYSBtOiBJRF9DSEFSX1NVQlMuZ2V0KG0uZ3JvdXAoMCksICdfJyksCisgICAgICAgIHN0cihwYXRoKS5yc3RyaXAoJy9cXCcpLAorICAgICAgICBmbGFncz1yZS5JCisgICAgKQorCitESVJFQ1RPUklFUyA9IHNldCgpCisKK2RlZiBtYWluKGZpbGVfc291cmNlLCBpbnN0YWxsX3RhcmdldCk6CisgICAgd2l0aCBvcGVuKGZpbGVfc291cmNlLCAncicsIG5ld2xpbmU9JycpIGFzIGY6CisgICAgICAgIGZpbGVzID0gbGlzdChjc3YucmVhZGVyKGYpKQorCisgICAgYXNzZXJ0IGxlbihmaWxlcykgPT0gbGVuKHNldChtYWtlX2lkKGZbMV0pIGZvciBmIGluIGZpbGVzKSksICJEdXBsaWNhdGUgZmlsZSBJRHMgZXhpc3QiCisKKyAgICBkaXJlY3RvcmllcyA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICBjYWNoZV9kaXJlY3RvcmllcyA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICBncm91cHMgPSBkZWZhdWx0ZGljdChsaXN0KQorICAgIGZvciBzb3VyY2UsIHRhcmdldCwgZ3JvdXAsIGRpc2tfaWQsIGNvbmRpdGlvbiBpbiBmaWxlczoKKyAgICAgICAgdGFyZ2V0ID0gUHVyZVdpbmRvd3NQYXRoKHRhcmdldCkKKyAgICAgICAgZ3JvdXBzW2dyb3VwXS5hcHBlbmQoKHNvdXJjZSwgdGFyZ2V0LCBkaXNrX2lkLCBjb25kaXRpb24pKQorCisgICAgICAgIGlmIHRhcmdldC5zdWZmaXgubG93ZXIoKSBpbiB7Ii5weSIsICIucHl3In06CisgICAgICAgICAgICBjYWNoZV9kaXJlY3Rvcmllc1tncm91cF0uYWRkKHRhcmdldC5wYXJlbnQpCisKKyAgICAgICAgZm9yIGRpcm5hbWUgaW4gdGFyZ2V0LnBhcmVudHM6CisgICAgICAgICAgICBwYXJlbnQgPSBtYWtlX2lkKGRpcm5hbWUucGFyZW50KQorICAgICAgICAgICAgaWYgcGFyZW50IGFuZCBwYXJlbnQgIT0gJy4nOgorICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzW3BhcmVudF0uYWRkKGRpcm5hbWUubmFtZSkKKworICAgIGxpbmVzID0gWworICAgICAgICAnPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+JywKKyAgICAgICAgJyAgICA8RnJhZ21lbnQ+JywKKyAgICBdCisgICAgZm9yIGRpcl9wYXJlbnQgaW4gc29ydGVkKGRpcmVjdG9yaWVzKToKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Int9Ij4nLmZvcm1hdChkaXJfcGFyZW50KSkKKyAgICAgICAgZm9yIGRpcl9uYW1lIGluIHNvcnRlZChkaXJlY3Rvcmllc1tkaXJfcGFyZW50XSk6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9Int9X3t9IiBOYW1lPSJ7fSIgLz4nLmZvcm1hdChkaXJfcGFyZW50LCBtYWtlX2lkKGRpcl9uYW1lKSwgZGlyX25hbWUpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgPC9EaXJlY3RvcnlSZWY+JykKKyAgICBmb3IgZGlyX3BhcmVudCBpbiAobWFrZV9pZChkKSBmb3IgZ3JvdXAgaW4gY2FjaGVfZGlyZWN0b3JpZXMudmFsdWVzKCkgZm9yIGQgaW4gZ3JvdXApOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0ie30iPicuZm9ybWF0KGRpcl9wYXJlbnQpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9Int9X19fcHljYWNoZV9fIiBOYW1lPSJfX3B5Y2FjaGVfXyIgLz4nLmZvcm1hdChkaXJfcGFyZW50KSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIDwvRGlyZWN0b3J5UmVmPicpCisgICAgbGluZXMuYXBwZW5kKCcgICAgPC9GcmFnbWVudD4nKQorCisgICAgZm9yIGdyb3VwIGluIHNvcnRlZChncm91cHMpOgorICAgICAgICBsaW5lcy5leHRlbmQoWworICAgICAgICAgICAgJyAgICA8RnJhZ21lbnQ+JywKKyAgICAgICAgICAgICcgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ie30iPicuZm9ybWF0KGdyb3VwKSwKKyAgICAgICAgXSkKKyAgICAgICAgZm9yIHNvdXJjZSwgdGFyZ2V0LCBkaXNrX2lkLCBjb25kaXRpb24gaW4gZ3JvdXBzW2dyb3VwXToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ie30iIERpcmVjdG9yeT0ie30iIEd1aWQ9IioiPicuZm9ybWF0KG1ha2VfaWQodGFyZ2V0KSwgbWFrZV9pZCh0YXJnZXQucGFyZW50KSkpCisgICAgICAgICAgICBpZiBjb25kaXRpb246CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICAgICAgPENvbmRpdGlvbj57fTwvQ29uZGl0aW9uPicuZm9ybWF0KGNvbmRpdGlvbikpCisKKyAgICAgICAgICAgIGlmIGRpc2tfaWQ6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Int9IiBOYW1lPSJ7fSIgU291cmNlPSJ7fSIgRGlza0lkPSJ7fSIgLz4nLmZvcm1hdChtYWtlX2lkKHRhcmdldCksIHRhcmdldC5uYW1lLCBzb3VyY2UsIGRpc2tfaWQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ie30iIE5hbWU9Int9IiBTb3VyY2U9Int9IiAvPicuZm9ybWF0KG1ha2VfaWQodGFyZ2V0KSwgdGFyZ2V0Lm5hbWUsIHNvdXJjZSkpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDwvQ29tcG9uZW50PicpCisKKyAgICAgICAgY3JlYXRlX2ZvbGRlcnMgPSB7bWFrZV9pZChwKSArICJfX19weWNhY2hlX18iIGZvciBwIGluIGNhY2hlX2RpcmVjdG9yaWVzW2dyb3VwXX0KKyAgICAgICAgcmVtb3ZlX2ZvbGRlcnMgPSB7bWFrZV9pZChwMikgZm9yIHAxIGluIGNhY2hlX2RpcmVjdG9yaWVzW2dyb3VwXSBmb3IgcDIgaW4gY2hhaW4oKHAxLCksIHAxLnBhcmVudHMpfQorICAgICAgICBjcmVhdGVfZm9sZGVycy5kaXNjYXJkKCIuIikKKyAgICAgICAgcmVtb3ZlX2ZvbGRlcnMuZGlzY2FyZCgiLiIpCisgICAgICAgIGlmIGNyZWF0ZV9mb2xkZXJzIG9yIHJlbW92ZV9mb2xkZXJzOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ7fV9fcHljYWNoZV9fZm9sZGVycyIgRGlyZWN0b3J5PSJUQVJHRVRESVIiIEd1aWQ9Int9Ij4nLmZvcm1hdChncm91cCwgdXVpZDEoKSkpCisgICAgICAgICAgICBsaW5lcy5leHRlbmQoJyAgICAgICAgICAgICAgICA8Q3JlYXRlRm9sZGVyIERpcmVjdG9yeT0ie30iIC8+Jy5mb3JtYXQocCkgZm9yIHAgaW4gY3JlYXRlX2ZvbGRlcnMpCisgICAgICAgICAgICBsaW5lcy5leHRlbmQoJyAgICAgICAgICAgICAgICA8UmVtb3ZlRmlsZSBJZD0iUmVtb3ZlX3swfV9maWxlcyIgTmFtZT0iKiIgT249InVuaW5zdGFsbCIgRGlyZWN0b3J5PSJ7MH0iIC8+Jy5mb3JtYXQocCkgZm9yIHAgaW4gY3JlYXRlX2ZvbGRlcnMpCisgICAgICAgICAgICBsaW5lcy5leHRlbmQoJyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfezB9X2ZvbGRlciIgT249InVuaW5zdGFsbCIgRGlyZWN0b3J5PSJ7MH0iIC8+Jy5mb3JtYXQocCkgZm9yIHAgaW4gY3JlYXRlX2ZvbGRlcnMgfCByZW1vdmVfZm9sZGVycykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPC9Db21wb25lbnQ+JykKKworICAgICAgICBsaW5lcy5leHRlbmQoWworICAgICAgICAgICAgJyAgICAgICAgPC9Db21wb25lbnRHcm91cD4nLAorICAgICAgICAgICAgJyAgICA8L0ZyYWdtZW50PicsCisgICAgICAgIF0pCisgICAgbGluZXMuYXBwZW5kKCc8L1dpeD4nKQorCisgICAgIyBDaGVjayBpZiB0aGUgZmlsZSBtYXRjaGVzLiBJZiBzbywgd2UgZG9uJ3Qgd2FudCB0byB0b3VjaCBpdCBzbworICAgICMgdGhhdCB3ZSBjYW4gc2tpcCByZWJ1aWxkaW5nLgorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGluc3RhbGxfdGFyZ2V0LCAncicpIGFzIGY6CisgICAgICAgICAgICBpZiBhbGwoeC5yc3RyaXAoJ1xyXG4nKSA9PSB5IGZvciB4LCB5IGluIHppcF9sb25nZXN0KGYsIGxpbmVzKSk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0ZpbGUgaXMgdXAgdG8gZGF0ZScpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgIHBhc3MKKworICAgIHdpdGggb3BlbihpbnN0YWxsX3RhcmdldCwgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlbGluZXMobGluZSArICdcbicgZm9yIGxpbmUgaW4gbGluZXMpCisgICAgcHJpbnQoJ1dyb3RlIHt9IGxpbmVzIHRvIHt9Jy5mb3JtYXQobGVuKGxpbmVzKSwgaW5zdGFsbF90YXJnZXQpKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXYud2l4cHJvaiBiL1Rvb2xzL21zaS9kZXYvZGV2LndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyYjY2MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2LndpeHByb2oKQEAgLTAsMCArMSw0OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezVGMjNGNjA4LUQ3NEItNDI1OS1BMENFLThEQzY1Q0M3RkU1M308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lIENvbmRpdGlvbj0iJyQoT3V0cHV0TmFtZSknID09ICcnIj5kZXY8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJChCdWlsZEZvclJlbGVhc2UpIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIEluY2x1ZGVNaW5HV0xpYj0xOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZGV2Lnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZGV2X2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKWluY2x1ZGVcKi5oIj4KKyAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQoUHlTb3VyY2VQYXRoKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC5zcmMpPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aCk8L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+ZGV2X2luY2x1ZGU8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IkJ1aWxkTWluR1dMaWIiCisgICAgICAgICAgICBJbnB1dHM9IiQoQnVpbGRQYXRoKSQoUHlEbGxOYW1lKS5kbGwiCisgICAgICAgICAgICBPdXRwdXRzPSIkKEJ1aWxkUGF0aClsaWIkKFB5RGxsTmFtZSkuYSIKKyAgICAgICAgICAgIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIgorICAgICAgICAgICAgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkiPgorICAgICAgICA8IS0tIEJ1aWxkIGxpYnB5dGhvbiMjLmEgYXMgcGFydCBvZiB0aGlzIHByb2plY3QuIFRoaXMgcmVxdWlyZXMgZ2VuZGVmIGFuZCBkbGx0b29sIG9uIHRoZSBwYXRoLiAtLT4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X0RsbFRvb2xPcHRzPi1tIGkzODYgLS1hcy1mbGFncz0tLTMyPC9fRGxsVG9vbE9wdHM+CisgICAgICAgICAgICA8X0RsbFRvb2xPcHRzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPi1tIGkzODY6eDg2LTY0PC9fRGxsVG9vbE9wdHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgICAgICA8RXhlYyBDb21tYW5kPSdnZW5kZWYgLSAiJChCdWlsZFBhdGgpJChQeURsbE5hbWUpLmRsbCIgJmd0OyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKW1pbmd3bGliLmRlZiInIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9J2RsbHRvb2wgLS1kbGxuYW1lICQoUHlEbGxOYW1lKS5kbGwgLS1kZWYgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCltaW5nd2xpYi5kZWYiIC0tb3V0cHV0LWxpYiAiJChCdWlsZFBhdGgpbGliJChQeURsbE5hbWUpLmEiICQoX0RsbFRvb2xPcHRzKScgLz4KKyAgICA8L1RhcmdldD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXYud3hzIGIvVG9vbHMvbXNpL2Rldi9kZXYud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwOWUxMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldi53eHMKQEAgLTAsMCArMSwxOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X2luY2x1ZGUiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRldl9weWNvbmZpZyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X2xpYnMiIC8+Cis8P2lmZGVmIEluY2x1ZGVNaW5HV0xpYiA/PgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJkZXZfbWluZ3ciIC8+Cis8P2VuZGlmID8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kZXYvZGV2X2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9kZXYvZGV2X2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2IwNTMyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Rldi9kZXZfZC53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntDMTFCNDk0NS03NkJELTQxMzctQjJFMy02NDk0NjAxMTdBNzd9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5kZXZfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZGV2X2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXZfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldl9kLnd4cyBiL1Rvb2xzL21zaS9kZXYvZGV2X2Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NjdhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldl9kLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVfZCkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVidWdCaW5hcmllcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVfZCkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbl9kKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRldl9saWJzX2QiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kZXYvZGV2X2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9kZXYvZGV2X2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTQ2ZTEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Rldi9kZXZfZW4tVVMud3hsCkBAIC0wLDAgKzEsNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxXaXhMb2NhbGl6YXRpb24gQ3VsdHVyZT0iZW4tdXMiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L2xvY2FsaXphdGlvbiI+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+RGV2ZWxvcG1lbnQgTGlicmFyaWVzPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5kZXY8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXZfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2Rldi9kZXZfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NTRkMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldl9maWxlcy53eHMKQEAgLTAsMCArMSw0MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkZXZfcHljb25maWciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iaW5jbHVkZV9weWNvbmZpZy5oIiBEaXJlY3Rvcnk9ImluY2x1ZGUiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJpbmNsdWRlX3B5Y29uZmlnLmgiIE5hbWU9InB5Y29uZmlnLmgiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHljb25maWcuaCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZGV2X2xpYnMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGlic19weXRob24zLmxpYiIgRGlyZWN0b3J5PSJsaWJzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ibGlic19weXRob25fc3RhYmxlLmxpYiIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKS5saWIiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGlic19weXRob24ubGliIiBEaXJlY3Rvcnk9ImxpYnMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJsaWJzX3B5dGhvbi5saWIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpLmxpYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZGV2X2xpYnNfZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJzX3B5dGhvbjNfZC5saWIiIERpcmVjdG9yeT0ibGlicyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImxpYnNfcHl0aG9uX3N0YWJsZV9kLmxpYiIgTmFtZT0icHl0aG9uJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKV9kLmxpYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGlic19weXRob25fZC5saWIiIERpcmVjdG9yeT0ibGlicyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImxpYnNfcHl0aG9uX2QubGliIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKV9kLmxpYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPD9pZmRlZiBJbmNsdWRlTWluR1dMaWIgPz4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZGV2X21pbmd3Ij4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxpYnNfbGlicHl0aG9uLmEiIERpcmVjdG9yeT0ibGlicyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9ImxpYnNfbGlicHl0aG9uLmEiIE5hbWU9ImxpYnB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpLmEiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPD9lbmRpZiA/PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZG9jL2RvYy53aXhwcm9qIGIvVG9vbHMvbXNpL2RvYy9kb2Mud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTk5MjlhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2RvYy9kb2Mud2l4cHJvagpAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MEQ2MkEyQkItNUY3MS00NDQ3LThDOEMtOTcwODQwN0IzNjc0fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+ZG9jPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgICAgICA8IS0tIFNob3J0Y3V0IHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAtLT4KKyAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U0MzwvU3VwcHJlc3NJQ0VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERvY0ZpbGVuYW1lPnB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSQoTWljcm9WZXJzaW9uTnVtYmVyKSQoUmVsZWFzZUxldmVsTmFtZSkuY2htPC9Eb2NGaWxlbmFtZT4KKyAgICAgICAgPEluY2x1ZGVEb2NGaWxlPmZhbHNlPC9JbmNsdWRlRG9jRmlsZT4KKyAgICAgICAgPEluY2x1ZGVEb2NGaWxlIENvbmRpdGlvbj0iJChCdWlsZEZvclJlbGVhc2UpIG9yIEV4aXN0cygnJChQeVNvdXJjZVBhdGgpRG9jXGJ1aWxkXGh0bWxoZWxwXCQoRG9jRmlsZW5hbWUpJykiPnRydWU8L0luY2x1ZGVEb2NGaWxlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IiQoSW5jbHVkZURvY0ZpbGUpIj4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4kKERlZmluZUNvbnN0YW50cyk7RG9jRmlsZW5hbWU9JChEb2NGaWxlbmFtZSk7PC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRvYy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRvY19maWxlcy53eHMiIENvbmRpdGlvbj0iJChJbmNsdWRlRG9jRmlsZSkiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRvY19ub19maWxlcy53eHMiIENvbmRpdGlvbj0iISQoSW5jbHVkZURvY0ZpbGUpIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jLnd4cyBiL1Rvb2xzL21zaS9kb2MvZG9jLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmUzMGExCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2RvYy9kb2Mud3hzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRvYyIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJTaG9ydGN1dHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRvYyIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9pZmRlZiBEb2NGaWxlbmFtZSA/PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iZG9jX3Nob3J0Y3V0IiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iJCh2YXIuT3B0aW9uYWxGZWF0dXJlTmFtZSlfc2hvcnRjdXQiIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9InB5dGhvbi5jaG0iCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iWyNweXRob24uY2htXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlNob3J0Y3V0RGVzY3JpcHRpb24pIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8P2VuZGlmID8+CisKKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2NfZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2RvYy9kb2NfZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOTU1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvY19lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTAsMCArMSw3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmRvYzwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkRvY3VtZW50YXRpb248L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPlB5dGhvbiB7e1Nob3J0VmVyc2lvbn19IE1hbnVhbHMgKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPlZpZXcgdGhlICEobG9jLlByb2R1Y3ROYW1lKSBkb2N1bWVudGF0aW9uLjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZG9jL2RvY19maWxlcy53eHMgYi9Ub29scy9tc2kvZG9jL2RvY19maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwOWFmZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kb2MvZG9jX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDE1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uLmNobSIgRGlyZWN0b3J5PSJEb2MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob24uY2htIiBOYW1lPSIkKHZhci5Eb2NGaWxlbmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJIZWxwXE1haW4gUHl0aG9uIERvY3VtZW50YXRpb24iIFR5cGU9InN0cmluZyIgVmFsdWU9IlsjcHl0aG9uLmNobV0iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jX25vX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9kb2MvZG9jX25vX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWI3YzI2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2RvYy9kb2Nfbm9fZmlsZXMud3hzCkBAIC0wLDAgKzEsMTcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZG9jIj4KKyAgICAgICAgICAgIDwhLS0KKyAgICAgICAgICAgIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCB3aGVuIHRoZSBDSE0gaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgVGhpcyB3YXksIHNuYXBzaG90IGJ1aWxkcyBjYW4gc3VjY2VlZCB3aXRob3V0IGhhdmluZyB0bworICAgICAgICAgICAgYnVpbGQgdGhlIGRvY3MuCisgICAgICAgICAgICAtLT4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkVtcHR5RG9jRm9sZGVyIiBEaXJlY3Rvcnk9IkRvYyIgR3VpZD0iezIyRkQ0MkRCLUVDNjYtNEIxQy1CMUZDLTQ0RTBDRjdCMjQ2Mn0iPgorICAgICAgICAgICAgICAgIDxDcmVhdGVGb2xkZXIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfRW1wdHlEb2NGb2xkZXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY3J0bGljZW5zZS50eHQgYi9Ub29scy9tc2kvZXhlL2NydGxpY2Vuc2UudHh0CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIFRvb2xzL21zaS9jcnRsaWNlbnNlLnR4dApyZW5hbWUgdG8gVG9vbHMvbXNpL2V4ZS9jcnRsaWNlbnNlLnR4dAppbmRleCA5MzZiYzVhLi5mODY4NDFmIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvY3J0bGljZW5zZS50eHQKKysrIGIvVG9vbHMvbXNpL2V4ZS9jcnRsaWNlbnNlLnR4dApAQCAtNSwxMSArNSw4IEBACiAKIFRoaXMgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCBhbmQgdXNlcyBNaWNyb3NvZnQgRGlzdHJpYnV0YWJsZSBDb2RlLAogY29weXJpZ2h0ZWQgYnkgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBUaGUgTWljcm9zb2Z0IERpc3RyaWJ1dGFibGUgQ29kZQotaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBmaWxlczoKLQotbXN2Y3I5MC5kbGwKLW1zdmNwOTAuZGxsCi1tc3ZjbTkwLmRsbAoraXMgZW1iZWRkZWQgaW4gZWFjaCAuZXhlLCAuZGxsIGFuZCAucHlkIGZpbGUgYXMgYSByZXN1bHQgb2YgcnVubmluZwordGhlIGNvZGUgdGhyb3VnaCBhIGxpbmtlci4KIAogSWYgeW91IGZ1cnRoZXIgZGlzdHJpYnV0ZSBwcm9ncmFtcyB0aGF0IGluY2x1ZGUgdGhlIE1pY3Jvc29mdAogRGlzdHJpYnV0YWJsZSBDb2RlLCB5b3UgbXVzdCBjb21wbHkgd2l0aCB0aGUgcmVzdHJpY3Rpb25zIG9uCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjZhNjAzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagpAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NkJENTMzMDUtQjAzRS00OURDLTg1RkItNTU1MUI4Q0NDODQzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+ZXhlPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPCEtLSBTaG9ydGN1dCB2YWxpZGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkgLS0+CisgICAgICAgIDxTdXBwcmVzc0lDRXM+SUNFNDM8L1N1cHByZXNzSUNFcz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX0dlbmVyYXRlTGljZW5zZSIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPExpY2Vuc2VGaWxlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClMSUNFTlNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcnRsaWNlbnNlLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChiejJEaXIpTElDRU5TRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChvcGVuc3NsRGlyKUxJQ0VOU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGNsRGlyKWxpY2Vuc2UudGVybXM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGtEaXIpbGljZW5zZS50ZXJtczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aXhEaXIpbGljZW5zZS50ZXJtcyIgLz4KKyAgICAgICAgICAgIDxfTGljZW5zZUZpbGVzIEluY2x1ZGU9IkAoTGljZW5zZUZpbGVzKSI+CisgICAgICAgICAgICAgICAgPENvbnRlbnQ+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCglKEZ1bGxQYXRoKSkpPC9Db250ZW50PgorICAgICAgICAgICAgPC9fTGljZW5zZUZpbGVzPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICAgICAgCisgICAgICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoQnVpbGRQYXRoKUxJQ0VOU0UiCisgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJ3cml0ZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZXM9IkAoX0xpY2Vuc2VGaWxlcy0+JyUoQ29udGVudCknKSIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNiZjY0NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwpAQCAtMCwwICsxLDMyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcHl0aG9uIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV90eHQiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9pY29ucyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgICAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTaG9ydGN1dHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob24iIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJleGVfc2hvcnRjdXQiIERpcmVjdG9yeT0iTWVudURpciIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPFNob3J0Y3V0IElkPSJweXRob24uZXhlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQ9IlsjcHl0aG9uLmV4ZV0iCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IiEobG9jLlNob3J0Y3V0TmFtZSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5TaG9ydGN1dERlc2NyaXB0aW9uKSIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfTWVudURpciIgRGlyZWN0b3J5PSJNZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoXEluc3RhbGxHcm91cCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuUHJvZHVjdE5hbWUpIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbGVkRmVhdHVyZXMiIE5hbWU9IlNob3J0Y3V0cyIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1NDVjYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57QjFDQTczOUMtOERCMC00MDNCLTkwMTAtRDc5NTA3NTA3Q0U5fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+ZXhlX2Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9kLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZGI2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9kLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVfZCkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVidWdCaW5hcmllcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVfZCkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbl9kKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob25fZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3N2ZiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTAsMCArMSw3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5FeGVjdXRhYmxlczwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+ZXhlY3V0YWJsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPkxhdW5jaGVzIHRoZSAhKGxvYy5Qcm9kdWN0TmFtZSkgaW50ZXJwcmV0ZXIuPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTQ3YjVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCkBAIC0wLDAgKzEsNzYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX3R4dCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMSUNFTlNFLnR4dCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJMSUNFTlNFLnR4dCIgU291cmNlPSJMSUNFTlNFIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Ik5FV1MudHh0IiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Ik5FV1MudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKU1pc2NcTkVXUyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJSRUFETUUudHh0IiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IlJFQURNRS50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUkVBRE1FIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcHl0aG9uIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9uRXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbi5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aCIgTmFtZT0iRXhlY3V0YWJsZVBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IlsjcHl0aG9uLmV4ZV0iIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbncuZXhlIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLlB5dGhvbndFeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9udy5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idmNydW50aW1lMTQwLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJ2Y3J1bnRpbWUxNDAuZGxsIiBTb3VyY2U9IiEoYmluZHBhdGgucmVkaXN0KXZjcnVudGltZTE0MC5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX3B5dGhvbl9zeW1ib2xzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5wZGIiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9udy5wZGIiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9udy5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgICAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX3B5dGhvbl9kIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbl9kLmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob25fZC5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbl9kLnBkYiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob25fZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbndfZC5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9ud19kLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9ud19kLnBkYiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253X2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX2ljb25zIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5LmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweS5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHkuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5Yy5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNGM4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagpAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NEExRjcwNDUtOEVFMi00Mjc2LUFCQjgtNUUwQzQwRTVGMzhCfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+ZXhlX3BkYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3BkYi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI1MDk0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcHl0aG9uX3N5bWJvbHMiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9nZW5lcmF0ZV9tZDUucHkgYi9Ub29scy9tc2kvZ2VuZXJhdGVfbWQ1LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNGMxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZ2VuZXJhdGVfbWQ1LnB5CkBAIC0wLDAgKzEsMjcgQEAKK2ltcG9ydCBoYXNobGliCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworZGVmIG1haW4oKToKKyAgICBmaWxlbmFtZXMsIGhhc2hlcywgc2l6ZXMgPSBbXSwgW10sIFtdCisKKyAgICBmb3IgZmlsZSBpbiBzeXMuYXJndlsxOl06CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUsICdyYicpIGFzIGY6CisgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgICAgIG1kNSA9IGhhc2hsaWIubWQ1KCkKKyAgICAgICAgICAgIG1kNS51cGRhdGUoZGF0YSkKKyAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQob3MucGF0aC5zcGxpdChmaWxlKVsxXSkKKyAgICAgICAgICAgIGhhc2hlcy5hcHBlbmQobWQ1LmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgc2l6ZXMuYXBwZW5kKHN0cihsZW4oZGF0YSkpKQorCisgICAgcHJpbnQoJ3s6NDBzfSAgezo8MzJzfSAgezo8OXN9Jy5mb3JtYXQoJ0ZpbGUnLCAnTUQ1JywgJ1NpemUnKSkKKyAgICBmb3IgZiwgaCwgcyBpbiB6aXAoZmlsZW5hbWVzLCBoYXNoZXMsIHNpemVzKToKKyAgICAgICAgcHJpbnQoJ3s6NDBzfSAgezo+MzJzfSAgezo+OXN9Jy5mb3JtYXQoZiwgaCwgcykpCisKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KGludChtYWluKCkgb3IgMCkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZ2V0X3dpeC5weSBiL1Rvb2xzL21zaS9nZXRfd2l4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMTQxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZ2V0X3dpeC5weQpAQCAtMCwwICsxLDQ5IEBACisnJycKK0Rvd25sb2FkcyBhbmQgZXh0cmFjdHMgV2lYIHRvIGEgbG9jYWwgZGlyZWN0b3J5CisnJycKKworX19hdXRob3JfXyA9ICdTdGV2ZSBEb3dlciA8c3RldmUuZG93ZXJAbWljcm9zb2Z0LmNvbT4nCisKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbgorZnJvbSB6aXBmaWxlIGltcG9ydCBaaXBGaWxlCisKK0VYVEVSTkFMU19ESVIgPSBOb25lCitmb3IgcCBpbiAoUGF0aC5jd2QoKSAvIF9fZmlsZV9fKS5wYXJlbnRzOgorICAgIGlmIGFueShwLmdsb2IoIlBDQnVpbGQvKi52Y3hwcm9qIikpOgorICAgICAgICBFWFRFUk5BTFNfRElSID0gcCAvICJleHRlcm5hbHMiCisgICAgICAgIGJyZWFrCisKK2lmIG5vdCBFWFRFUk5BTFNfRElSOgorICAgIHByaW50KCJDYW5ub3QgZmluZCBwcm9qZWN0IHJvb3QiKQorICAgIHN5cy5leGl0KDEpCisKK1dJWF9CSU5BUklFU19aSVAgPSAnaHR0cDovL3dpeHRvb2xzZXQub3JnL2Rvd25sb2Fkcy92My4xMC4wLjE4MjMvd2l4MzEwLWJpbmFyaWVzLnppcCcKK1RBUkdFVF9CSU5fWklQID0gRVhURVJOQUxTX0RJUiAvICJ3aXguemlwIgorVEFSR0VUX0JJTl9ESVIgPSBFWFRFUk5BTFNfRElSIC8gIndpeCIKKworUE9XRVJTSEVMTF9DT01NQU5EID0gIltJTy5GaWxlXTo6V3JpdGVBbGxCeXRlcygne30nLCAoSW52b2tlLVdlYlJlcXVlc3Qge30gLVVzZUJhc2ljUGFyc2luZykuQ29udGVudCkiCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaWYgVEFSR0VUX0JJTl9ESVIuZXhpc3RzKCkgYW5kIGFueShUQVJHRVRfQklOX0RJUi5nbG9iKCIqIikpOgorICAgICAgICBwcmludCgnV2lYIGlzIGFscmVhZHkgaW5zdGFsbGVkJykKKyAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIHRyeToKKyAgICAgICAgVEFSR0VUX0JJTl9ESVIubWtkaXIoKQorICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgIHBhc3MKKworICAgIHByaW50KCdEb3dubG9hZGluZyBXaVggdG8nLCBUQVJHRVRfQklOX1pJUCkKKyAgICBwID0gUG9wZW4oWyJwb3dlcnNoZWxsLmV4ZSIsICItQ29tbWFuZCIsIFBPV0VSU0hFTExfQ09NTUFORC5mb3JtYXQoVEFSR0VUX0JJTl9aSVAsIFdJWF9CSU5BUklFU19aSVApXSkKKyAgICBwLndhaXQoKQorICAgIHByaW50KCdFeHRyYWN0aW5nIFdpWCB0bycsIFRBUkdFVF9CSU5fRElSKQorICAgIHdpdGggWmlwRmlsZShzdHIoVEFSR0VUX0JJTl9aSVApKSBhcyB6OgorICAgICAgICB6LmV4dHJhY3RhbGwoc3RyKFRBUkdFVF9CSU5fRElSKSkKKyAgICBUQVJHRVRfQklOX1pJUC51bmxpbmsoKQorCisgICAgcHJpbnQoJ0V4dHJhY3RlZCBXaVgnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2ogYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2YyNmE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKQEAgLTAsMCArMSwyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezkyMUNGMEU2LUFFQkMtNDM3Ni1CQTFELUNENDZFQkZFNkRBNX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxhdW5jaGVyPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsYXVuY2hlci53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxhdW5jaGVyX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGF1bmNoZXJfcmVnLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMGNmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCkBAIC0wLDAgKzEsMzEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5IElkPSJTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2siIFZhbHVlPSIxIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJBUlBQUk9EVUNUSUNPTiIgLz4KKworICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxhdW5jaGVyX2V4ZSIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJBc3NvY2lhdGVGaWxlcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfZXhlIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsYXVuY2hlcl9yZWciIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgCisgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlRBUkdFVERJUiIgTmFtZT0iU291cmNlRGlyIj4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgLz4KKyAgICAgICAgPC9EaXJlY3Rvcnk+CisgICAgICAgIAorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSIgUHJvcGVydHk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgVmFsdWU9IltXaW5kb3dzRm9sZGVyXSIgLz4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5Q1UiIFByb3BlcnR5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIFZhbHVlPSJbTG9jYWxBcHBEYXRhRm9sZGVyXVByb2dyYW1zXFB5dGhvblxMYXVuY2hlciIgLz4KKyAgICAgICAgCisgICAgICAgIDxJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUNVIj5OT1QgSW5zdGFsbGVkIEFORCBOT1QgQUxMVVNFUlM9MTwvQ3VzdG9tPgorICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IkNvc3RGaW5hbGl6ZSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSI+Tk9UIEluc3RhbGxlZCBBTkQgQUxMVVNFUlM9MTwvQ3VzdG9tPgorICAgICAgICA8L0luc3RhbGxFeGVjdXRlU2VxdWVuY2U+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTYxZmZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bApAQCAtMCwwICsxLDEwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5MYXVuY2hlcjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+bGF1bmNoZXI8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkNvbXBpbGVkRmlsZURlc2NyaXB0aW9uIj5Db21waWxlZCBQeXRob24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTQ4MjU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxhdW5jaGVyX2V4ZSI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweS5leGUiIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7QjUxMDc0MDItNjk1OC00NjFCLThCMEEtNDAzN0QzMzI3MTYwfSI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5LmV4ZSIgTmFtZT0icHkkKHZhci5UZXN0UHJlZml4KS5leGUiIFNvdXJjZT0icHkuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtNVSIgS2V5PSJTb2Z0d2FyZVxQeXRob25cUHlMYXVuY2hlciIgVmFsdWU9IlsjcHkuZXhlXSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXcuZXhlIiBEaXJlY3Rvcnk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezhFNTJCOENELTQ4QkItNEQ3NC04NENELTYyMzhCQ0QxMUYyMH0iPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXcuZXhlIiBOYW1lPSJweXckKHZhci5UZXN0UHJlZml4KS5leGUiIFNvdXJjZT0icHl3LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxhdW5jaGVyX3BhdGhfY3UiIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7OTVBRUI5MzAtMzY3Qy00NzVDLUExN0UtQTg5QkZDRDRDNjcwfSI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5OT1QgQUxMVVNFUlM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtNVSIgS2V5PSJTb2Z0d2FyZVwkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeUxhdW5jaGVyIiBOYW1lPSJJbnN0YWxsRGlyIiBWYWx1ZT0iW0xhdW5jaGVySW5zdGFsbERpcmVjdG9yeV0iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBBVEhfQ1UiIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIIiBQYXJ0PSJmaXJzdCIgVmFsdWU9IltMYXVuY2hlckluc3RhbGxEaXJlY3RvcnldIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsYXVuY2hlcl9wYXRoX2xtIiBEaXJlY3Rvcnk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezRBNDFDMzY1LTRFMjctNEQzOC1BNkQxLTRBMDFCNEE2NTAwQ30iPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+QUxMVVNFUlM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtNVSIgS2V5PSJTb2Z0d2FyZVwkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeUxhdW5jaGVyIiBOYW1lPSJJbnN0YWxsRGlyIiBWYWx1ZT0iW0xhdW5jaGVySW5zdGFsbERpcmVjdG9yeV0iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAwZjQ0MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCkBAIC0wLDAgKzEsNDYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGF1bmNoZXJfcmVnIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImZpbGVfYXNzb2NpYXRpb24iIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7NUFGODREOUEtRDgyMC00NTZCLUIyMzAtNkUwMTA1QTUwMjc2fSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXCQodmFyLlRlc3RQcmVmaXgpUHl0aG9uXFB5TGF1bmNoZXIiIE5hbWU9IkFzc29jaWF0ZUZpbGVzIiBWYWx1ZT0iMSIgVHlwZT0iaW50ZWdlciIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5GaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSIkKHZhci5GaWxlRXh0ZW5zaW9uKSIgQ29udGVudFR5cGU9InRleHQvcGxhaW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9Ins2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25GaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25GaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24pdyIgQ29udGVudFR5cGU9InRleHQvcGxhaW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5dy5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9Ins2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uQ29tcGlsZWRGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQ29tcGlsZWRGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24pYyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgorICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSIkKHZhci5GaWxlRXh0ZW5zaW9uKW8iIC8+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Db21waWxlZEZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9Ins2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiBUeXBlPSJzdHJpbmciIC8+CisKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24peiIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkFyY2hpdmVGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLk5vQ29uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24penciIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweXcuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25BcmNoaXZlRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZTU4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCkBAIC0wLDAgKzEsMzQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsxMTM2N0U3Ni0zMzM3LTQ2MDItOEYxRS03N0RCNEYzNzBEN0V9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5saWI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEV4Y2x1ZGVGb2xkZXJzIEluY2x1ZGU9IkxpYlx0ZXN0O0xpYlx0ZXN0cztMaWJcdGtpbnRlcjtMaWJcaWRsZWxpYjtMaWJcdHVydGxlZGVtbyIgLz4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcKipcKiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcKipcKi5weWM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpTGliXCoqXCoucHlvOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAKEV4Y2x1ZGVGb2xkZXJzLT4nJChQeVNvdXJjZVBhdGgpJShJZGVudGl0eSlcKicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAoRXhjbHVkZUZvbGRlcnMtPickKFB5U291cmNlUGF0aCklKElkZW50aXR5KVwqKlwqJykiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpTGliPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYylMaWJcPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aClMaWI8L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz5MaWJcPC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPmxpYl9weTwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud3hzIGIvVG9vbHMvbXNpL2xpYi9saWIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDRiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKQEAgLTAsMCArMSwxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX3B5IiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZmlsZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9leHRlbnNpb25zIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9kLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYl9kLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg3YTgyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2Qud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NkM0NDNDRDMtODI1OC00MzM1LUJBMDMtNDlEQTlDMzRDRTREfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+bGliX2Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2Qud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4YTUzMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xpYi9saWJfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNWJjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5TdGFuZGFyZCBMaWJyYXJ5PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5saWI8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzlhOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKQEAgLTAsMCArMSw3OSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDw/ZGVmaW5lIGV4dHM9cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQ7X2J6MjtfZWxlbWVudHRyZWU7X3NvY2tldDtfc3NsO19tc2k7X2N0eXBlcztfaGFzaGxpYjtfbXVsdGlwcm9jZXNzaW5nO19sem1hO19kZWNpbWFsO19vdmVybGFwcGVkO19zcWxpdGUzID8+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zIj4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InNxbGl0ZTMuZGxsIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTMuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfZXh0ZW5zaW9uc19zeW1ib2xzIj4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlNZTUJPTFM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJzcWxpdGUzLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zX2QiPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dClfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KV9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzX2QuZGxsIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTNfZC5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ic3FsaXRlM19kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJzcWxpdGUzX2QucGRiIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2ZpbGVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlB5dGhvblBhdGhSZWdpc3RyeSIgRGlyZWN0b3J5PSJMaWIiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9IlB5dGhvblBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IltMaWJdO1tETExzXSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIERpcmVjdG9yeT0iTGliX3NpdGVfcGFja2FnZXMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIE5hbWU9IlJFQURNRS50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpTGliXHNpdGUtcGFja2FnZXNcUkVBRE1FIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZSIgRGlyZWN0b3J5PSJMaWJfbGliMnRvMyIgR3VpZD0iJCh2YXIuUmVtb3ZlTGliMnRvM1BpY2tsZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRmlsZSBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZpbGVzIiBOYW1lPSIqLnBpY2tsZSIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZm9sZGVyIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9IkxpYiI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJMaWJfc2l0ZV9wYWNrYWdlcyIgTmFtZT0ic2l0ZS1wYWNrYWdlcyIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYl9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjFiNWJiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezVFMEJDRTkzLUQxQUMtNDU5MS1CQkNCLTNBMkJFNUE0QjNEMX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxpYl9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsaWJfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfcGRiLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzOWU4YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9uc19zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbWFrZV96aXAucHJvaiBiL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZTAzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbWFrZV96aXAucHJvagpAQCAtMCwwICsxLDQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MTA0ODc5NDUtMTVEMS00MDkyLUEyMTQtMzM4Mzk1QzQxMTZCfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD48L091dHB1dFN1ZmZpeD4KKyAgICAgICAgPFN1cHBvcnRTaWduaW5nPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Im1zaS5wcm9wcyIgLz4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8U2lnbk91dHB1dD5mYWxzZTwvU2lnbk91dHB1dD4KKyAgICAgICAgPFRhcmdldE5hbWU+cHl0aG9uLSQoUHl0aG9uVmVyc2lvbiktZW1iZWQtJChBcmNoTmFtZSk8L1RhcmdldE5hbWU+CisgICAgICAgIDxUYXJnZXRFeHQ+LnppcDwvVGFyZ2V0RXh0PgorICAgICAgICA8VGFyZ2V0UGF0aD4kKE91dHB1dFBhdGgpXGVuLXVzXCQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L1RhcmdldFBhdGg+CisgICAgICAgIDxDbGVhbkNvbW1hbmQ+cm1kaXIgL3EvcyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVx6aXBfJChBcmNoTmFtZSkiPC9DbGVhbkNvbW1hbmQ+CisgICAgICAgIDxBcmd1bWVudHM+IiQoUHl0aG9uRXhlKSIgIiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxtYWtlX3ppcC5weSI8L0FyZ3VtZW50cz4KKyAgICAgICAgPEFyZ3VtZW50cz4kKEFyZ3VtZW50cykgLWUgLW8gIiQoVGFyZ2V0UGF0aCkiIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHppcF8kKEFyY2hOYW1lKSIgLWEgJChBcmNoTmFtZSk8L0FyZ3VtZW50cz4KKyAgICAgICAgPEVudmlyb25tZW50PnNldCBET0NfRklMRU5BTUU9cHl0aG9uJChQeXRob25WZXJzaW9uKS5jaG0KK3NldCBWQ1JFRElTVF9QQVRIPSQoVlMxNDBDT01OVE9PTFMpXC4uXC4uXFZDXHJlZGlzdFwkKFBsYXRmb3JtKVxNaWNyb3NvZnQuVkMxNDAuQ1JUPC9FbnZpcm9ubWVudD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8VGFyZ2V0IE5hbWU9Il9CdWlsZCI+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9InNldGxvY2FsCiskKEVudmlyb25tZW50KQorJChDbGVhbkNvbW1hbmQpCiskKEFyZ3VtZW50cykiIC8+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8VGFyZ2V0IE5hbWU9IkFmdGVyQnVpbGQiIC8+CisgICAgPFRhcmdldCBOYW1lPSJCdWlsZCIgRGVwZW5kc09uVGFyZ2V0cz0iX0J1aWxkO0FmdGVyQnVpbGQiIC8+CisKKyAgICA8VGFyZ2V0IE5hbWU9IlNob3dIYXNoZXMiPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPFVzZXJGaWxlcyBJbmNsdWRlPSJAKEZpbGUpIiBDb25kaXRpb249IiclKEZpbGUuQ29weVRvKScgPT0gJyQoRVhFVGFyZ2V0KSciIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorCisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBnZW5lcmF0ZV9tZDUucHkgQChVc2VyRmlsZXMtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgLz4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmZkYWQyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC0wLDAgKzEsMjAwIEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBweV9jb21waWxlCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQorCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZSwgWklQX0RFRkxBVEVECitpbXBvcnQgc3VicHJvY2VzcworCitUS1RDTF9SRSA9IHJlLmNvbXBpbGUocideKF8/dGt8dGNsKS4rXC4ocHlkfGRsbCknLCByZS5JR05PUkVDQVNFKQorREVCVUdfUkUgPSByZS5jb21waWxlKHInX2RcLihweWR8ZGxsfGV4ZSkkJywgcmUuSUdOT1JFQ0FTRSkKK1BZVEhPTl9ETExfUkUgPSByZS5jb21waWxlKHIncHl0aG9uXGRcZD9cLmRsbCQnLCByZS5JR05PUkVDQVNFKQorCitFWENMVURFX0ZST01fTElCUkFSWSA9IHsKKyAgICAnX19weWNhY2hlX18nLAorICAgICdlbnN1cmVwaXAnLAorICAgICdpZGxlbGliJywKKyAgICAncHlkb2NfZGF0YScsCisgICAgJ3NpdGUtcGFja2FnZXMnLAorICAgICd0a2ludGVyJywKKyAgICAndHVydGxlZGVtbycsCit9CisKK0VYQ0xVREVfRklMRV9GUk9NX0xJQlJBUlkgPSB7CisgICAgJ2JkaXN0X3dpbmluc3QucHknLAorfQorCitkZWYgaXNfbm90X2RlYnVnKHApOgorICAgIGlmIERFQlVHX1JFLnNlYXJjaChwLm5hbWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIFRLVENMX1JFLnNlYXJjaChwLm5hbWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBwLm5hbWUubG93ZXIoKSBub3QgaW4geworICAgICAgICAnX2N0eXBlc190ZXN0LnB5ZCcsCisgICAgICAgICdfdGVzdGJ1ZmZlci5weWQnLAorICAgICAgICAnX3Rlc3RjYXBpLnB5ZCcsCisgICAgICAgICdfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCcsCisgICAgICAgICdfdGVzdG11bHRpcGhhc2UucHlkJywKKyAgICAgICAgJ3h4bGltaXRlZC5weWQnLAorICAgIH0KKworZGVmIGlzX25vdF9kZWJ1Z19vcl9weXRob24ocCk6CisgICAgcmV0dXJuIGlzX25vdF9kZWJ1ZyhwKSBhbmQgbm90IFBZVEhPTl9ETExfUkUuc2VhcmNoKHAubmFtZSkKKworZGVmIGluY2x1ZGVfaW5fbGliKHApOgorICAgIG5hbWUgPSBwLm5hbWUubG93ZXIoKQorICAgIGlmIHAuaXNfZGlyKCk6CisgICAgICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GUk9NX0xJQlJBUlk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdwbGF0LScpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5hbWUgPT0gJ3Rlc3QnIGFuZCBwLnBhcnRzWy0yXS5sb3dlcigpID09ICdsaWInOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5hbWUgaW4geyd0ZXN0JywgJ3Rlc3RzJ30gYW5kIHAucGFydHNbLTNdLmxvd2VyKCkgPT0gJ2xpYic6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GSUxFX0ZST01fTElCUkFSWToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBzdWZmaXggPSBwLnN1ZmZpeC5sb3dlcigpCisgICAgcmV0dXJuIHN1ZmZpeCBub3QgaW4geycucHljJywgJy5weW8nLCAnLmV4ZSd9CisKK2RlZiBpbmNsdWRlX2luX3Rvb2xzKHApOgorICAgIGlmIHAuaXNfZGlyKCkgYW5kIHAubmFtZS5sb3dlcigpIGluIHsnc2NyaXB0cycsICdpMThuJywgJ3B5bmNoZScsICdkZW1vJywgJ3BhcnNlcid9OgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgcmV0dXJuIHAuc3VmZml4Lmxvd2VyKCkgaW4geycucHknLCAnLnB5dycsICcudHh0J30KKworRlVMTF9MQVlPVVQgPSBbCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9uKi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAorICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAorICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKKyAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCitdCisKK0VNQkVEX0xBWU9VVCA9IFsKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ3B5dGhvbjM1LnppcCcsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKK10KKworaWYgb3MuZ2V0ZW52KCdET0NfRklMRU5BTUUnKToKKyAgICBGVUxMX0xBWU9VVC5hcHBlbmQoKCdEb2MvJywgJ0RvYy9idWlsZC9odG1saGVscCcsIG9zLmdldGVudignRE9DX0ZJTEVOQU1FJyksIE5vbmUpKQoraWYgb3MuZ2V0ZW52KCdWQ1JFRElTVF9QQVRIJyk6CisgICAgRlVMTF9MQVlPVVQuYXBwZW5kKCgnLycsIG9zLmdldGVudignVkNSRURJU1RfUEFUSCcpLCAndmNydW50aW1lKi5kbGwnLCBOb25lKSkKKyAgICBFTUJFRF9MQVlPVVQuYXBwZW5kKCgnLycsIG9zLmdldGVudignVkNSRURJU1RfUEFUSCcpLCAndmNydW50aW1lKi5kbGwnLCBOb25lKSkKKworZGVmIGNvcHlfdG9fbGF5b3V0KHRhcmdldCwgcmVsX3NvdXJjZXMpOgorICAgIGNvdW50ID0gMAorCisgICAgaWYgdGFyZ2V0LnN1ZmZpeC5sb3dlcigpID09ICcuemlwJzoKKyAgICAgICAgaWYgdGFyZ2V0LmV4aXN0cygpOgorICAgICAgICAgICAgdGFyZ2V0LnVubGluaygpCisKKyAgICAgICAgd2l0aCBaaXBGaWxlKHN0cih0YXJnZXQpLCAndycsIFpJUF9ERUZMQVRFRCkgYXMgZjoKKyAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICAgICAgICAgIGZvciBzLCByZWwgaW4gcmVsX3NvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlbC5zdWZmaXgubG93ZXIoKSA9PSAnLnB5JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHB5YyA9IFBhdGgodG1wZGlyKSAvIHJlbC53aXRoX3N1ZmZpeCgnLnB5YycpLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc3RyKHMpLCBzdHIocHljKSwgc3RyKHJlbCksIGRvcmFpc2U9VHJ1ZSwgb3B0aW1pemU9MikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBweV9jb21waWxlLlB5Q29tcGlsZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3RyKHMpLCBzdHIocmVsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzdHIocHljKSwgc3RyKHJlbC53aXRoX3N1ZmZpeCgnLnB5YycpKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc3RyKHMpLCBzdHIocmVsKSkKKyAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgZWxzZToKKyAgICAgICAgZm9yIHMsIHJlbCBpbiByZWxfc291cmNlczoKKyAgICAgICAgICAgIGRlc3QgPSB0YXJnZXQgLyByZWwKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZXN0LnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIGRlc3QuaXNfZmlsZSgpOgorICAgICAgICAgICAgICAgIGRlc3QuY2htb2Qoc3RhdC5TX0lXUklURSkKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KHN0cihzKSwgc3RyKGRlc3QpKQorICAgICAgICAgICAgaWYgZGVzdC5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgZGVzdC5jaG1vZChzdGF0LlNfSVdSSVRFKQorICAgICAgICAgICAgY291bnQgKz0gMQorCisgICAgcmV0dXJuIGNvdW50CisKK2RlZiByZ2xvYihyb290LCBwYXR0ZXJuLCBjb25kaXRpb24pOgorICAgIGRpcnMgPSBbcm9vdF0KKyAgICByZWN1cnNlID0gcGF0dGVybls6M10gaW4geycqKi8nLCAnKipcXCd9CisgICAgd2hpbGUgZGlyczoKKyAgICAgICAgZCA9IGRpcnMucG9wKDApCisgICAgICAgIGZvciBmIGluIGQuZ2xvYihwYXR0ZXJuWzM6XSBpZiByZWN1cnNlIGVsc2UgcGF0dGVybik6CisgICAgICAgICAgICBpZiByZWN1cnNlIGFuZCBmLmlzX2RpcigpIGFuZCAobm90IGNvbmRpdGlvbiBvciBjb25kaXRpb24oZikpOgorICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGYpCisgICAgICAgICAgICBlbGlmIGYuaXNfZmlsZSgpIGFuZCAobm90IGNvbmRpdGlvbiBvciBjb25kaXRpb24oZikpOgorICAgICAgICAgICAgICAgIHlpZWxkIGYsIGYucmVsYXRpdmVfdG8ocm9vdCkKKworZGVmIG1haW4oKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zb3VyY2UnLCBtZXRhdmFyPSdkaXInLCBoZWxwPSdUaGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHJlcG9zaXRvcnkgcm9vdCcsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsICctLW91dCcsIG1ldGF2YXI9J2ZpbGUnLCBoZWxwPSdUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IHNlbGYtZXh0cmFjdGluZyBhcmNoaXZlJywgdHlwZT1QYXRoLCByZXF1aXJlZD1UcnVlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hcmNoJywgaGVscD0nU3BlY2lmeSB0aGUgYXJjaGl0ZWN0dXJlIHRvIHVzZSAod2luMzIvYW1kNjQpJywgdHlwZT1zdHIsIGRlZmF1bHQ9IndpbjMyIikKKyAgICBucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHNvdXJjZSA9IG5zLnNvdXJjZSBvciAoUGF0aChfX2ZpbGVfXykucGFyZW50LnBhcmVudC5wYXJlbnQpCisgICAgb3V0ID0gbnMub3V0CisgICAgYXJjaCA9IG5zLmFyY2gKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2UsIFBhdGgpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3V0LCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKKworICAgIGlmIG5zLnRlbXA6CisgICAgICAgIHRlbXAgPSBucy50ZW1wCisgICAgICAgIGRlbGV0ZV90ZW1wID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICB0ZW1wID0gUGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCisgICAgICAgIGRlbGV0ZV90ZW1wID0gVHJ1ZQorCisgICAgdHJ5OgorICAgICAgICBvdXQucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICB0ZW1wLm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICBwYXNzCisKKyAgICBsYXlvdXQgPSBFTUJFRF9MQVlPVVQgaWYgbnMuZW1iZWQgZWxzZSBGVUxMX0xBWU9VVAorCisgICAgdHJ5OgorICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6CisgICAgICAgICAgICBzID0gc291cmNlIC8gcy5yZXBsYWNlKCIkYXJjaCIsIGFyY2gpCisgICAgICAgICAgICBjb3BpZWQgPSBjb3B5X3RvX2xheW91dCh0ZW1wIC8gdC5yc3RyaXAoJy8nKSwgcmdsb2IocywgcCwgYykpCisgICAgICAgICAgICBwcmludCgnQ29waWVkIHt9IGZpbGVzJy5mb3JtYXQoY29waWVkKSkKKworICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAncHl2ZW52LmNmZycpLCAndycpIGFzIGY6CisgICAgICAgICAgICBwcmludCgnYXBwbG9jYWwgPSB0cnVlJywgZmlsZT1mKQorCisgICAgICAgIHRvdGFsID0gY29weV90b19sYXlvdXQob3V0LCByZ2xvYih0ZW1wLCAnKicsIE5vbmUpKQorICAgICAgICBwcmludCgnV3JvdGUge30gZmlsZXMgdG8ge30nLmZvcm1hdCh0b3RhbCwgb3V0KSkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBkZWxldGVfdGVtcDoKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodGVtcCwgVHJ1ZSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KGludChtYWluKCkgb3IgMCkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnByb3BzIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzUyYzdhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtMCwwICsxLDE2OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIiBUcmVhdEFzTG9jYWxQcm9wZXJ0eT0iUmVsZWFzZVVyaSI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgICAgIDxEZWZpbmVTb2x1dGlvblByb3BlcnRpZXM+ZmFsc2U8L0RlZmluZVNvbHV0aW9uUHJvcGVydGllcz4KKyAgICAgICAgPFRyZWF0V2FybmluZ3NBc0Vycm9ycz5mYWxzZTwvVHJlYXRXYXJuaW5nc0FzRXJyb3JzPgorICAgICAgICA8U3VwcHJlc3NJY2VzPiQoU3VwcHJlc3NJY2VzKTtJQ0UwMztJQ0U1NztJQ0U2MTwvU3VwcHJlc3NJY2VzPgorICAgICAgICA8Q29tcGlsZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+MTAyNjwvQ29tcGlsZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+CisgICAgICAgIDxCdWlsZEZvclJlbGVhc2UgQ29uZGl0aW9uPSInJChCdWlsZEZvclJlbGVhc2UpJyA9PSAnJyI+ZmFsc2U8L0J1aWxkRm9yUmVsZWFzZT4KKyAgICAgICAgPFNpZ25PdXRwdXQgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyI+dHJ1ZTwvU2lnbk91dHB1dD4KKyAgICAgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPng4NjwvUGxhdGZvcm0+CisgICAgICAgIDxJbnN0YWxsU2NvcGUgQ29uZGl0aW9uPSInJChJbnN0YWxsU2NvcGUpJyAhPSAncGVyTWFjaGluZSciPnBlclVzZXI8L0luc3RhbGxTY29wZT4KKyAgICAgICAgPCEtLQorICAgICAgICBUaGlzIFVSSSBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSB2YXJpb3VzIEdVSURzIHVzZWQgYnkgdGhlIGluc3RhbGxlci4KKyAgICAgICAgSW5zdGFsbGVycyBidWlsdCB3aXRoIHRoZSBzYW1lIFVSSSB3aWxsIHVwZ3JhZGUgZWFjaCBvdGhlciBvciBibG9jaworICAgICAgICB3aGVuIGF0dGVtcHRpbmcgdG8gZG93bmdyYWRlLgorICAgICAgICAKKyAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgbG9jYWwgY29tcHV0ZXIgbmFtZSwgd2hpY2ggd2lsbCBwcm9kdWNlCisgICAgICAgIGluc3RhbGxlcnMgdGhhdCBkbyBub3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgaW5zdGFsbGVycy4gUHJvZHVjdHMKKyAgICAgICAgdGhhdCBpbnRlbmQgdG8gYnVuZGxlIFB5dGhvbiBzaG91bGQgcmVidWlsZCB0aGVzZSBtb2R1bGVzIHdpdGggdGhlaXIKKyAgICAgICAgb3duIFVSSSB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRoZSBvZmZpY2lhbCByZWxlYXNlcy4KKyAgICAgICAgCisgICAgICAgIFRoZSBvZmZpY2lhbCByZWxlYXNlcyBhcmUgYnVpbHQgd2l0aCBodHRwOi8vd3d3LnB5dGhvbi5vcmcvLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIERvd25sb2FkVXJsIHByb3BlcnR5IHVzZWQgaW4gdGhlIGJ1bmRsZQorICAgICAgICBwcm9qZWN0cy4KKyAgICAgICAgLS0+CisgICAgICAgIDxSZWxlYXNlVXJpIENvbmRpdGlvbj0iJyQoUmVsZWFzZVVyaSknID09ICcnIj4kKENvbXB1dGVyTmFtZSk8L1JlbGVhc2VVcmk+CisgICAgICAgIDxSZWxlYXNlVXJpIENvbmRpdGlvbj0iISQoUmVsZWFzZVVyaS5FbmRzV2l0aChgL2ApKSI+JChSZWxlYXNlVXJpKS88L1JlbGVhc2VVcmk+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSJ3aXgucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHRjbHRrLnByb3BzIiAvPgorICAgIAorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KWNvbW1vbi53eHMiIC8+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcKi53eGxfdGVtcGxhdGUiIC8+CisgICAgICAgIDxXaXhFeHRlbnNpb24gSW5jbHVkZT0iV2l4VXRpbEV4dGVuc2lvbiI+CisgICAgICAgICAgICA8SGludFBhdGg+V2l4VXRpbEV4dGVuc2lvbjwvSGludFBhdGg+CisgICAgICAgICAgICA8TmFtZT5XaXhVdGlsRXh0ZW5zaW9uPC9OYW1lPgorICAgICAgICA8L1dpeEV4dGVuc2lvbj4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8SW50ZXJtZWRpYXRlT3V0cHV0UGF0aD4kKFB5U291cmNlUGF0aClQQ0J1aWxkXG9ialwkKENvbmZpZ3VyYXRpb24pXyQoUGxhdGZvcm0pX1NldHVwXCQoT3V0cHV0TmFtZSk8L0ludGVybWVkaWF0ZU91dHB1dFBhdGg+CisgICAgICAgIDxJbnRlcm1lZGlhdGVPdXRwdXRQYXRoIENvbmRpdGlvbj0iJyQoT3V0cHV0U3VmZml4KScgIT0gJyciPiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClfJChPdXRwdXRTdWZmaXgpPC9JbnRlcm1lZGlhdGVPdXRwdXRQYXRoPgorICAgICAgICA8T3V0cHV0UGF0aCBDb25kaXRpb249IickKE91dHB1dFBhdGgpJyA9PSAnJyI+JChCdWlsZFBhdGgpPC9PdXRwdXRQYXRoPgorICAgICAgICA8T3V0cHV0UGF0aCBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoT3V0cHV0UGF0aCkpIj4kKE91dHB1dFBhdGgpXDwvT3V0cHV0UGF0aD4KKyAgICAgICAgPE91dERpcj4kKE91dHB1dFBhdGgpPC9PdXREaXI+CisgICAgICAgIDxSZXVzZUNhYmluZXRDYWNoZT50cnVlPC9SZXVzZUNhYmluZXRDYWNoZT4KKyAgICAgICAgPENSVFJlZGlzdCBDb25kaXRpb249IickKENSVFJlZGlzdCknID09ICcnIj4kKEV4dGVybmFsc0RpcilccmVkaXN0PC9DUlRSZWRpc3Q+CisgICAgICAgIDxDUlRSZWRpc3QgQ29uZGl0aW9uPSIhRXhpc3RzKCQoQ1JUUmVkaXN0KSkiPjwvQ1JUUmVkaXN0PgorICAgICAgICA8RG9jRmlsZW5hbWU+cHl0aG9uJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpJChNaWNyb1ZlcnNpb25OdW1iZXIpJChSZWxlYXNlTGV2ZWxOYW1lKS5jaG08L0RvY0ZpbGVuYW1lPgorCisgICAgICAgIDxJbnN0YWxsZXJWZXJzaW9uPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChGaWVsZDNWYWx1ZSkuMDwvSW5zdGFsbGVyVmVyc2lvbj4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSIhJChCdWlsZEZvclJlbGVhc2UpIj4KKyAgICAgICAgPFJldmlzaW9uTnVtYmVyIENvbmRpdGlvbj0iJyQoUmV2aXNpb25OdW1iZXIpJyA9PSAnJyI+JChbU3lzdGVtLk1hdGhdOjpGbG9vcigkKFtTeXN0ZW0uRGF0ZVRpbWVdOjpOb3cuU3VidHJhY3QoJChbU3lzdGVtLkRhdGVUaW1lXTo6bmV3KDIwMDEsIDEsIDEpKSkuVG90YWxEYXlzKSkpPC9SZXZpc2lvbk51bWJlcj4KKyAgICAgICAgPFB5dGhvblZlcnNpb24+JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcilkZXYkKFJldmlzaW9uTnVtYmVyKTwvUHl0aG9uVmVyc2lvbj4KKyAgICAgICAgPEluc3RhbGxlclZlcnNpb24+JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKFJldmlzaW9uTnVtYmVyKS4wPC9JbnN0YWxsZXJWZXJzaW9uPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPEJpdG5lc3M+MzItYml0PC9CaXRuZXNzPgorICAgICAgICA8Qml0bmVzcyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NC1iaXQ8L0JpdG5lc3M+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CisgICAgICAgICAgICBWZXJzaW9uPSQoSW5zdGFsbGVyVmVyc2lvbik7CisgICAgICAgICAgICBTaG9ydFZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKTsKKyAgICAgICAgICAgIExvbmdWZXJzaW9uPSQoUHl0aG9uVmVyc2lvbik7CisgICAgICAgICAgICBNYWpvclZlcnNpb25OdW1iZXI9JChNYWpvclZlcnNpb25OdW1iZXIpOworICAgICAgICAgICAgTWlub3JWZXJzaW9uTnVtYmVyPSQoTWlub3JWZXJzaW9uTnVtYmVyKTsKKyAgICAgICAgICAgIFVwZ3JhZGVNaW5pbXVtVmVyc2lvbj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLjAuMDsKKyAgICAgICAgICAgIE5leHRNYWpvclZlcnNpb25OdW1iZXI9JChNYWpvclZlcnNpb25OdW1iZXIpLiQoW21zYnVpbGRdOjpBZGQoJChNaW5vclZlcnNpb25OdW1iZXIpLCAxKSkuMC4wOworICAgICAgICAgICAgQml0bmVzcz0kKEJpdG5lc3MpOworICAgICAgICAgICAgUHlEZWJ1Z0V4dD0kKFB5RGVidWdFeHQpOworICAgICAgICAgICAgT3B0aW9uYWxGZWF0dXJlTmFtZT0kKE91dHB1dE5hbWUpOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKENSVFJlZGlzdCknICE9ICcnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtDUlRSZWRpc3Q9JChDUlRSZWRpc3QpOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoVXNlVGVzdE1hcmtlcikgIT0gJ3RydWUnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtUZXN0UHJlZml4PTtGaWxlRXh0ZW5zaW9uPXB5OworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoVXNlVGVzdE1hcmtlcikgPT0gJ3RydWUnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtUZXN0UHJlZml4PXg7RmlsZUV4dGVuc2lvbj1weDsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSAhPSAneDY0JyI+CisgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7U3VmZml4MzI9LTMyOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtTdWZmaXgzMj07CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzPgorICAgICAgICAgICAgPEdyb3VwPmdlbmVyYXRlZF9maWxlbGlzdDwvR3JvdXA+CisgICAgICAgICAgICA8Q29uZGl0aW9uPjwvQ29uZGl0aW9uPgorICAgICAgICAgICAgPERpc2tJZD48L0Rpc2tJZD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgICAgIDxWaXNpYmxlPmZhbHNlPC9WaXNpYmxlPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJChCdWlsZFBhdGgpOyQoUHlTb3VyY2VQYXRoKURvY1xidWlsZFxodG1saGVscCI+CisgICAgICAgICAgICA8QmluZE5hbWU+PC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKSI+CisgICAgICAgICAgICA8QmluZE5hbWU+c3JjPC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQodGNsdGtEaXIpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT50Y2x0azwvQmluZE5hbWU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKENSVFJlZGlzdCkiIENvbmRpdGlvbj0iJyQoQ1JUUmVkaXN0KScgIT0gJyciPgorICAgICAgICAgICAgPEJpbmROYW1lPnJlZGlzdDwvQmluZE5hbWU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKFZTMTQwQ09NTlRPT0xTKVwuLlwuLlxWQ1xyZWRpc3RcJChQbGF0Zm9ybSlcTWljcm9zb2Z0LlZDMTQwLkNSVCI+CisgICAgICAgICAgICA8QmluZE5hbWU+cmVkaXN0PC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxUYXJnZXQgTmFtZT0iX1ZhbGlkYXRlTXNpUHJvcHMiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgICAgIDxFcnJvciBUZXh0PSJQbGF0Zm9ybSAnJChQbGF0Zm9ybSknIGlzIG5vdCBzdXBwb3J0ZWQuIFVzZSAneDg2JyBvciAneDY0Jy4iIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgIT0gJ3g4NicgYW5kICQoUGxhdGZvcm0pICE9ICd4NjQnIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJDb3JlVXBncmFkZUNvZGUiPgorICAgICAgICAgICAgPFVyaT51cGdyYWRlY29kZTwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iVXBncmFkZUNvZGUiPgorICAgICAgICAgICAgPFVyaT51cGdyYWRlY29kZS8kKE91dHB1dE5hbWUpPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJJbnN0YWxsRGlyZWN0b3J5R3VpZFNlZWQiPgorICAgICAgICAgICAgPFVyaT5pbnN0YWxsZGlyZWN0b3J5c2VlZDwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iUHl0aG9uRXhlQ29tcG9uZW50R3VpZCI+CisgICAgICAgICAgICA8VXJpPnB5dGhvbi5leGU8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvbndFeGVDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cHl0aG9udy5leGU8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+bGliMnRvMy9waWNrbGVzPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVHdWlkcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfVXVpZHM+QChfVXVpZC0+JygiJShJZGVudGl0eSkiLCAiJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS8lKFVyaSkiKScsJywnKTwvX1V1aWRzPgorICAgICAgICAgICAgPF9HZW5lcmF0ZUNvbW1hbmQ+aW1wb3J0IHV1aWQ7IHByaW50KCdcbicuam9pbigne309e30nLmZvcm1hdChpLCB1dWlkLnV1aWQ1KHV1aWQuVVVJRCgnYzhkOTczM2UtYTcwYy00M2ZmLWFiMGMtZTI2NDU2ZjExMDgzJyksICckKFJlbGVhc2VVcmkpJyArIGopKSBmb3IgaSxqIGluIFskKF9VdWlkcy5SZXBsYWNlKGAiYCxgJ2ApKV0pKTwvX0dlbmVyYXRlQ29tbWFuZD4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nIiQoUHl0aG9uRXhlKSIgLWMgIiQoX0dlbmVyYXRlQ29tbWFuZCkiICZndDsgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkkKE91dHB1dE5hbWUpZ3VpZHMudHh0IicKKyAgICAgICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIgorICAgICAgICAgICAgICBJZ25vcmVFeGl0Q29kZT0iZmFsc2UiIC8+CisgICAgICAgIAorICAgICAgICA8UmVhZExpbmVzRnJvbUZpbGUgRmlsZT0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoT3V0cHV0TmFtZSlndWlkcy50eHQiPgorICAgICAgICAgICAgPE91dHB1dCBUYXNrUGFyYW1ldGVyPSJMaW5lcyIgSXRlbU5hbWU9Il9VdWlkVmFsdWUiIC8+CisgICAgICAgIDwvUmVhZExpbmVzRnJvbUZpbGU+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxEZWZpbmVDb25zdGFudHM+JChEZWZpbmVDb25zdGFudHMpO0AoX1V1aWRWYWx1ZSwnOycpOzwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS5weSBiL1Rvb2xzL21zaS9tc2kucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MDA1NmEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL21zaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NTQgKzAsMCBAQAotIyBQeXRob24gTVNJIEdlbmVyYXRvcgotIyAoQykgMjAwMyBNYXJ0aW4gdi4gTG9ld2lzCi0jIFNlZSAiRk9PIiBpbiBjb21tZW50cyByZWZlcnMgdG8gTVNETiBzZWN0aW9ucyB3aXRoIHRoZSB0aXRsZSBGT08uCi1pbXBvcnQgbXNpbGliLCBzY2hlbWEsIHNlcXVlbmNlLCBvcywgZ2xvYiwgdGltZSwgcmUsIHNodXRpbCwgemlwZmlsZQotaW1wb3J0IHN1YnByb2Nlc3MsIHRlbXBmaWxlCi1mcm9tIG1zaWxpYiBpbXBvcnQgRmVhdHVyZSwgQ0FCLCBEaXJlY3RvcnksIERpYWxvZywgQmluYXJ5LCBhZGRfZGF0YQotaW1wb3J0IHVpc2FtcGxlCi1mcm9tIHdpbjMyY29tLmNsaWVudCBpbXBvcnQgY29uc3RhbnRzCi1mcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi0KLSMgU2V0dGluZ3MgY2FuIGJlIG92ZXJyaWRkZW4gaW4gY29uZmlnLnB5IGJlbG93Ci0jIDAgZm9yIG9mZmljaWFsIHB5dGhvbi5vcmcgcmVsZWFzZXMKLSMgMSBmb3IgaW50ZXJtZWRpYXRlIHJlbGVhc2VzIGJ5IGFueWJvZHksIHdpdGgKLSMgYSBuZXcgcHJvZHVjdCBjb2RlIGZvciBldmVyeSBwYWNrYWdlLgotc25hcHNob3QgPSAxCi0jIDEgbWVhbnMgdGhhdCBmaWxlIGV4dGVuc2lvbiBpcyBweCwgbm90IHB5LAotIyBhbmQgYmluYXJpZXMgc3RhcnQgd2l0aCB4Ci10ZXN0cGFja2FnZSA9IDAKLSMgTG9jYXRpb24gb2YgYnVpbGQgdHJlZQotc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKCIuLi8uLiIpCi0jIFRleHQgdG8gYmUgZGlzcGxheWVkIGFzIHRoZSB2ZXJzaW9uIGluIGRpYWxvZ3MgZXRjLgotIyBnb2VzIGludG8gZmlsZSBuYW1lIGFuZCBQcm9kdWN0Q29kZS4gRGVmYXVsdHMgdG8KLSMgY3VycmVudF92ZXJzaW9uLmRheSBmb3IgU25hcHNob3QsIGN1cnJlbnRfdmVyc2lvbiBvdGhlcndpc2UKLWZ1bGxfY3VycmVudF92ZXJzaW9uID0gTm9uZQotIyBJcyBUY2wgYXZhaWxhYmxlIGF0IGFsbD8KLWhhdmVfdGNsID0gVHJ1ZQotIyBwYXRoIHRvIFBDYnVpbGQgZGlyZWN0b3J5Ci1QQ0JVSUxEPSJQQ2J1aWxkIgotIyBtc3ZjcnQgdmVyc2lvbgotTVNWQ1IgPSAiMTAwIgotIyBOYW1lIG9mIGNlcnRpZmljYXRlIGluIGRlZmF1bHQgc3RvcmUgdG8gc2lnbiBNU0kgd2l0aAotY2VydG5hbWUgPSBOb25lCi0jIE1ha2UgYSB6aXAgZmlsZSBjb250YWluaW5nIHRoZSBQREIgZmlsZXMgZm9yIHRoaXMgYnVpbGQ/Ci1wZGJ6aXAgPSBUcnVlCi0KLXRyeToKLSAgICBmcm9tIGNvbmZpZyBpbXBvcnQgKgotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotIyBFeHRyYWN0IGN1cnJlbnQgdmVyc2lvbiBmcm9tIEluY2x1ZGUvcGF0Y2hsZXZlbC5oCi1saW5lcyA9IG9wZW4oc3JjZGlyICsgIi9JbmNsdWRlL3BhdGNobGV2ZWwuaCIpLnJlYWRsaW5lcygpCi1tYWpvciA9IG1pbm9yID0gbWljcm8gPSBsZXZlbCA9IHNlcmlhbCA9IE5vbmUKLWxldmVscyA9IHsKLSAgICAnUFlfUkVMRUFTRV9MRVZFTF9BTFBIQSc6MHhBLAotICAgICdQWV9SRUxFQVNFX0xFVkVMX0JFVEEnOiAweEIsCi0gICAgJ1BZX1JFTEVBU0VfTEVWRUxfR0FNTUEnOjB4QywKLSAgICAnUFlfUkVMRUFTRV9MRVZFTF9GSU5BTCc6MHhGCi0gICAgfQotZm9yIGwgaW4gbGluZXM6Ci0gICAgaWYgbm90IGwuc3RhcnRzd2l0aCgiI2RlZmluZSIpOgotICAgICAgICBjb250aW51ZQotICAgIGwgPSBsLnNwbGl0KCkKLSAgICBpZiBsZW4obCkgIT0gMzoKLSAgICAgICAgY29udGludWUKLSAgICBfLCBuYW1lLCB2YWx1ZSA9IGwKLSAgICBpZiBuYW1lID09ICdQWV9NQUpPUl9WRVJTSU9OJzogbWFqb3IgPSB2YWx1ZQotICAgIGlmIG5hbWUgPT0gJ1BZX01JTk9SX1ZFUlNJT04nOiBtaW5vciA9IHZhbHVlCi0gICAgaWYgbmFtZSA9PSAnUFlfTUlDUk9fVkVSU0lPTic6IG1pY3JvID0gdmFsdWUKLSAgICBpZiBuYW1lID09ICdQWV9SRUxFQVNFX0xFVkVMJzogbGV2ZWwgPSBsZXZlbHNbdmFsdWVdCi0gICAgaWYgbmFtZSA9PSAnUFlfUkVMRUFTRV9TRVJJQUwnOiBzZXJpYWwgPSB2YWx1ZQotCi1zaG9ydF92ZXJzaW9uID0gbWFqb3IrIi4iK21pbm9yCi0jIFNlZSBQQy9tYWtlX3ZlcnNpb25pbmZvLmMKLUZJRUxEMyA9IDEwMDAqaW50KG1pY3JvKSArIDEwKmxldmVsICsgaW50KHNlcmlhbCkKLWN1cnJlbnRfdmVyc2lvbiA9ICIlcy4lZCIgJSAoc2hvcnRfdmVyc2lvbiwgRklFTEQzKQotCi0jIFRoaXMgc2hvdWxkIG5ldmVyIGNoYW5nZS4gVGhlIFVwZ3JhZGVDb2RlIG9mIHRoaXMgcGFja2FnZSBjYW4gYmUKLSMgdXNlZCBpbiB0aGUgVXBncmFkZSB0YWJsZSBvZiBmdXR1cmUgcGFja2FnZXMgdG8gbWFrZSB0aGUgZnV0dXJlCi0jIHBhY2thZ2UgcmVwbGFjZSB0aGlzIG9uZS4gU2VlICJVcGdyYWRlQ29kZSBQcm9wZXJ0eSIuCi0jIHVwZ3JhZGVfY29kZSBnZXRzIHNldCB0byB1cGdyYWRlX2NvZGVfNjQgd2hlbiB3ZSBoYXZlIGRldGVybWluZWQKLSMgdGhhdCB0aGUgdGFyZ2V0IGlzIFdpbjY0LgotdXBncmFkZV9jb2RlX3NuYXBzaG90PSd7OTJBMjQ0ODEtM0VDQi00MEZDLTg4MzYtMDRCNzk2NkVDMEQ1fScKLXVwZ3JhZGVfY29kZT0nezY1RTZERTQ4LUEzNTgtNDM0RC1BQTRGLTRBRjcyREI0NzE4Rn0nCi11cGdyYWRlX2NvZGVfNjQ9J3s2QTk2NUEwQy02RUU2LTRFM0EtOTk4My0zMjYzRjU2MzExRUN9JwotCi1pZiBzbmFwc2hvdDoKLSAgICBjdXJyZW50X3ZlcnNpb24gPSAiJXMuJXMuJXMiICUgKG1ham9yLCBtaW5vciwgaW50KHRpbWUudGltZSgpLzM2MDAvMjQpKQotCi1pZiBmdWxsX2N1cnJlbnRfdmVyc2lvbiBpcyBOb25lOgotICAgIGZ1bGxfY3VycmVudF92ZXJzaW9uID0gY3VycmVudF92ZXJzaW9uCi0KLWV4dGVuc2lvbnMgPSBbCi0gICAgJ3B5ZXhwYXQucHlkJywKLSAgICAnc2VsZWN0LnB5ZCcsCi0gICAgJ3VuaWNvZGVkYXRhLnB5ZCcsCi0gICAgJ3dpbnNvdW5kLnB5ZCcsCi0gICAgJ19iejIucHlkJywKLSAgICAnX2VsZW1lbnR0cmVlLnB5ZCcsCi0gICAgJ19zb2NrZXQucHlkJywKLSAgICAnX3NzbC5weWQnLAotICAgICdfdGVzdGNhcGkucHlkJywKLSAgICAnX3RraW50ZXIucHlkJywKLSAgICAnX21zaS5weWQnLAotICAgICdfY3R5cGVzLnB5ZCcsCi0gICAgJ19jdHlwZXNfdGVzdC5weWQnLAotICAgICdfc3FsaXRlMy5weWQnLAotICAgICdfaGFzaGxpYi5weWQnLAotICAgICdfbXVsdGlwcm9jZXNzaW5nLnB5ZCcsCi0gICAgJ19sem1hLnB5ZCcsCi0gICAgJ19kZWNpbWFsLnB5ZCcsCi0gICAgJ190ZXN0YnVmZmVyLnB5ZCcsCi0gICAgJ190ZXN0aW1wb3J0bXVsdGlwbGUucHlkJywKLSAgICAnX292ZXJsYXBwZWQucHlkJywKLV0KLQotIyBXZWxsLWtub3duIGNvbXBvbmVudCBVVUlEcwotIyBUaGVzZSBhcmUgbmVlZGVkIGZvciBTaGFyZWRETExzIHJlZmVyZW5jZSBjb3VudGVyOyBpZgotIyBhIGRpZmZlcmVudCBVVUlEIHdhcyB1c2VkIGZvciBlYWNoIGluY2FybmF0aW9uIG9mLCBzYXksCi0jIHB5dGhvbjI0LmRsbCwgYW4gdXBncmFkZSB3b3VsZCBzZXQgdGhlIHJlZmVyZW5jZSBjb3VudGVyCi0jIGZyb20gMSB0byAyIChkdWUgdG8gd2hhdCBJIGNvbnNpZGVyIGEgYnVnIGluIE1TSSkKLSMgVXNpbmcgdGhlIHNhbWUgVVVJRCBpcyBmaW5lIHNpbmNlIHRoZXNlIGZpbGVzIGFyZSB2ZXJzaW9uZWQsCi0jIHNvIEluc3RhbGxlciB3aWxsIGFsd2F5cyBrZWVwIHRoZSBuZXdlc3QgdmVyc2lvbi4KLSMgTk9URTogQWxsIHV1aWRzIGFyZSBzZWxmIGdlbmVyYXRlZC4KLXB5dGhvbmRsbF91dWlkID0gewotICAgICIyNCI6Ins5QjgxRTYxOC0yMzAxLTQwMzUtQUM3Ny03NUQ5QUJFQjczMDF9IiwKLSAgICAiMjUiOiJ7MmU0MWIxMTgtMzhiZC00YzFiLWE4NDAtNjk3N2VmZDFiOTExfSIsCi0gICAgIjI2IjoiezM0ZWJlY2FjLWYwNDYtNGUxYy1iMGUzLTliYWMzY2RhYWNmYX0iLAotICAgICIyNyI6Ins0ZmUyMWM3Ni0xNzYwLTQzN2ItYTJmMi05OTkwOTEzMGExNzV9IiwKLSAgICAiMzAiOiJ7Njk1M2JjM2ItNjc2OC00MjkxLTg0MTAtNzkxNGNlNmUyY2E4fSIsCi0gICAgIjMxIjoiezRhZmNiYTBiLTEzZTQtNDdjMy1iZWJlLTQ3NzQyOGI0NjkxM30iLAotICAgICIzMiI6InszZmY5NTMxNS0xMDk2LTRkMzEtYmQ4Ni02MDFkNTQzOGFkNWV9IiwKLSAgICAiMzMiOiJ7Zjc1ODFjYTQtZDM2OC00ZWVhLThmODItZDQ4YzY0YzRmMDQ3fSIsCi0gICAgIjM0IjoiezdBMEM1ODEyLTI1ODMtNDBEOS1CQ0JCLUNENzQ4NUYxMTM3N30iLAotICAgIH0gW21ham9yK21pbm9yXQotCi0jIENvbXB1dGUgdGhlIG5hbWUgdGhhdCBTcGhpbnggZ2l2ZXMgdG8gdGhlIGRvY2ZpbGUKLWRvY2ZpbGUgPSBtaWNybwotaWYgbGV2ZWwgPCAweGY6Ci0gICAgaWYgbGV2ZWwgPT0gMHhDOgotICAgICAgICBkb2NmaWxlICs9ICJyYyVzIiAlIChzZXJpYWwsKQotICAgIGVsc2U6Ci0gICAgICAgIGRvY2ZpbGUgKz0gJyV4JXMnICUgKGxldmVsLCBzZXJpYWwpCi1kb2NmaWxlID0gJ3B5dGhvbiVzJXMlcy5jaG0nICUgKG1ham9yLCBtaW5vciwgZG9jZmlsZSkKLQotIyBCdWlsZCB0aGUgbWluZ3cgaW1wb3J0IGxpYnJhcnksIGxpYnB5dGhvblhZLmEKLSMgVGhpcyByZXF1aXJlcyAnbm0nIGFuZCAnZGxsdG9vbCcgZXhlY3V0YWJsZXMgb24geW91ciBQQVRICi1kZWYgYnVpbGRfbWluZ3dfbGliKGxpYl9maWxlLCBkZWZfZmlsZSwgZGxsX2ZpbGUsIG1pbmd3X2xpYik6Ci0gICAgd2FybmluZyA9ICJXQVJOSU5HOiAlcyAtIGxpYnB5dGhvblhYLmEgbm90IGJ1aWx0IgotICAgIG5tID0gZmluZF9leGVjdXRhYmxlKCdubScpCi0gICAgZGxsdG9vbCA9IGZpbmRfZXhlY3V0YWJsZSgnZGxsdG9vbCcpCi0KLSAgICBpZiBub3Qgbm0gb3Igbm90IGRsbHRvb2w6Ci0gICAgICAgIHByaW50KHdhcm5pbmcgJSAibm0gYW5kL29yIGRsbHRvb2wgd2VyZSBub3QgZm91bmQiKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIG5tX2NvbW1hbmQgPSAnJXMgLUNzICVzJyAlIChubSwgbGliX2ZpbGUpCi0gICAgZGxsdG9vbF9jb21tYW5kID0gIiVzIC0tZGxsbmFtZSAlcyAtLWRlZiAlcyAtLW91dHB1dC1saWIgJXMiICUgXAotICAgICAgICAoZGxsdG9vbCwgZGxsX2ZpbGUsIGRlZl9maWxlLCBtaW5nd19saWIpCi0gICAgZXhwb3J0X21hdGNoID0gcmUuY29tcGlsZShyIl5faW1wX18oLiopIGluIHB5dGhvblxkK1wuZGxsIikubWF0Y2gKLQotICAgIGYgPSBvcGVuKGRlZl9maWxlLCd3JykKLSAgICBmLndyaXRlKCJMSUJSQVJZICVzXG4iICUgZGxsX2ZpbGUpCi0gICAgZi53cml0ZSgiRVhQT1JUU1xuIikKLQotICAgIG5tX3BpcGUgPSBvcy5wb3BlbihubV9jb21tYW5kKQotICAgIGZvciBsaW5lIGluIG5tX3BpcGUucmVhZGxpbmVzKCk6Ci0gICAgICAgIG0gPSBleHBvcnRfbWF0Y2gobGluZSkKLSAgICAgICAgaWYgbToKLSAgICAgICAgICAgIGYud3JpdGUobS5ncm91cCgxKSsiXG4iKQotICAgIGYuY2xvc2UoKQotICAgIGV4aXQgPSBubV9waXBlLmNsb3NlKCkKLQotICAgIGlmIGV4aXQ6Ci0gICAgICAgIHByaW50KHdhcm5pbmcgJSAibm0gZGlkIG5vdCBydW4gc3VjY2Vzc2Z1bGx5IikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiBvcy5zeXN0ZW0oZGxsdG9vbF9jb21tYW5kKSAhPSAwOgotICAgICAgICBwcmludCh3YXJuaW5nICUgImRsbHRvb2wgZGlkIG5vdCBydW4gc3VjY2Vzc2Z1bGx5IikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICByZXR1cm4gVHJ1ZQotCi0jIFRhcmdldCBmaWxlcyAoLmRlZiBhbmQgLmEpIGdvIGluIFBDQnVpbGQgZGlyZWN0b3J5Ci1saWJfZmlsZSA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsICJweXRob24lcyVzLmxpYiIgJSAobWFqb3IsIG1pbm9yKSkKLWRlZl9maWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgInB5dGhvbiVzJXMuZGVmIiAlIChtYWpvciwgbWlub3IpKQotZGxsX2ZpbGUgPSAicHl0aG9uJXMlcy5kbGwiICUgKG1ham9yLCBtaW5vcikKLW1pbmd3X2xpYiA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsICJsaWJweXRob24lcyVzLmEiICUgKG1ham9yLCBtaW5vcikpCi0KLWhhdmVfbWluZ3cgPSBidWlsZF9taW5nd19saWIobGliX2ZpbGUsIGRlZl9maWxlLCBkbGxfZmlsZSwgbWluZ3dfbGliKQotCi0jIERldGVybWluZSB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZQotaWYgb3Muc3lzdGVtKCJubWFrZSAvbm9sb2dvIC9jIC9mIG1zaXN1cHBvcnQubWFrIikgIT0gMDoKLSAgICByYWlzZSBSdW50aW1lRXJyb3IoIidubWFrZSAvZiBtc2lzdXBwb3J0Lm1haycgZmFpbGVkIikKLWRsbF9wYXRoID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgZGxsX2ZpbGUpCi1tc2lsaWIuc2V0X2FyY2hfZnJvbV9maWxlKGRsbF9wYXRoKQotaWYgbXNpbGliLnBlX3R5cGUoZGxsX3BhdGgpICE9IG1zaWxpYi5wZV90eXBlKCJtc2lzdXBwb3J0LmRsbCIpOgotICAgIHJhaXNlIFN5c3RlbUVycm9yKCJtc2lzdXBwb3J0LmRsbCBmb3IgaW5jb3JyZWN0IGFyY2hpdGVjdHVyZSIpCi0KLWlmIG1zaWxpYi5XaW42NDoKLSAgICB1cGdyYWRlX2NvZGUgPSB1cGdyYWRlX2NvZGVfNjQKLQotaWYgc25hcHNob3Q6Ci0gICAgcHJvZHVjdF9jb2RlID0gbXNpbGliLmdlbl91dWlkKCkKLWVsc2U6Ci0gICAgIyBvZmZpY2lhbCByZWxlYXNlOiBnZW5lcmF0ZSBVVUlEIGZyb20gdGhlIGRvd25sb2FkIGxpbmsgdGhhdCB0aGUgZmlsZSB3aWxsIGhhdmUKLSAgICBpbXBvcnQgdXVpZAotICAgIHByb2R1Y3RfY29kZSA9IHV1aWQudXVpZDModXVpZC5OQU1FU1BBQ0VfVVJMLAotICAgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJXMuJXMuJXMvcHl0aG9uLSVzJXMubXNpJyAlCi0gICAgICAgICAgICAgICAgICAgIChtYWpvciwgbWlub3IsIG1pY3JvLCBmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KSkKLSAgICBwcm9kdWN0X2NvZGUgPSAneyVzfScgJSBwcm9kdWN0X2NvZGUKLQotaWYgdGVzdHBhY2thZ2U6Ci0gICAgZXh0ID0gJ3B4JwotICAgIHRlc3RwcmVmaXggPSAneCcKLWVsc2U6Ci0gICAgZXh0ID0gJ3B5JwotICAgIHRlc3RwcmVmaXggPSAnJwotCi1pZiBtc2lsaWIuV2luNjQ6Ci0gICAgU3lzdGVtRm9sZGVyTmFtZSA9ICJbU3lzdGVtNjRGb2xkZXJdIgotICAgIHJlZ2lzdHJ5X2NvbXBvbmVudCA9IDR8MjU2Ci1lbHNlOgotICAgIFN5c3RlbUZvbGRlck5hbWUgPSAiW1N5c3RlbUZvbGRlcl0iCi0gICAgcmVnaXN0cnlfY29tcG9uZW50ID0gNAotCi1tc2lsaWIucmVzZXQoKQotCi0jIGNvbmRpdGlvbiBpbiB3aGljaCB0byBpbnN0YWxsIHB5dGhvbnh5LmRsbCBpbiBzeXN0ZW0zMjoKLSMgYSkgaXQgaXMgV2luZG93cyA5eCBvcgotIyBiKSBpdCBpcyBOVCwgdGhlIHVzZXIgaXMgcHJpdmlsZWdlZCwgYW5kIGhhcyBjaG9zZW4gcGVyLW1hY2hpbmUgaW5zdGFsbGF0aW9uCi1zeXMzMmNvbmQgPSAiKFdpbmRvd3M5eCBvciAoUHJpdmlsZWdlZCBhbmQgQUxMVVNFUlMpKSIKLQotZGVmIGJ1aWxkX2RhdGFiYXNlKCk6Ci0gICAgIiIiR2VuZXJhdGUgYW4gZW1wdHkgZGF0YWJhc2UsIHdpdGgganVzdCB0aGUgc2NoZW1hIGFuZCB0aGUKLSAgICBTdW1tYXJ5IGluZm9ybWF0aW9uIHN0cmVhbS4iIiIKLSAgICBpZiBzbmFwc2hvdDoKLSAgICAgICAgdWMgPSB1cGdyYWRlX2NvZGVfc25hcHNob3QKLSAgICBlbHNlOgotICAgICAgICB1YyA9IHVwZ3JhZGVfY29kZQotICAgIGlmIG1zaWxpYi5XaW42NDoKLSAgICAgICAgcHJvZHVjdHN1ZmZpeCA9ICIgKDY0LWJpdCkiCi0gICAgZWxzZToKLSAgICAgICAgcHJvZHVjdHN1ZmZpeCA9ICIiCi0gICAgIyBzY2hlbWEgcmVwcmVzZW50cyB0aGUgaW5zdGFsbGVyIDIuMCBkYXRhYmFzZSBzY2hlbWEuCi0gICAgIyBzZXF1ZW5jZSBpcyB0aGUgc2V0IG9mIHN0YW5kYXJkIHNlcXVlbmNlcwotICAgICMgKHVpL2V4ZWN1dGUsIGFkbWluL2FkdnQvaW5zdGFsbCkKLSAgICBtc2luYW1lID0gInB5dGhvbi0lcyVzLm1zaSIgJSAoZnVsbF9jdXJyZW50X3ZlcnNpb24sIG1zaWxpYi5hcmNoX2V4dCkKLSAgICBkYiA9IG1zaWxpYi5pbml0X2RhdGFiYXNlKG1zaW5hbWUsCi0gICAgICAgICAgICAgICAgICBzY2hlbWEsIFByb2R1Y3ROYW1lPSJQeXRob24gIitmdWxsX2N1cnJlbnRfdmVyc2lvbitwcm9kdWN0c3VmZml4LAotICAgICAgICAgICAgICAgICAgUHJvZHVjdENvZGU9cHJvZHVjdF9jb2RlLAotICAgICAgICAgICAgICAgICAgUHJvZHVjdFZlcnNpb249Y3VycmVudF92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgTWFudWZhY3R1cmVyPXUiUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iLAotICAgICAgICAgICAgICAgICAgcmVxdWVzdF91YWMgPSBUcnVlKQotICAgICMgVGhlIGRlZmF1bHQgc2VxdWVuY2luZyBvZiB0aGUgUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBhY3Rpb24gY2F1c2VzCi0gICAgIyByZW1vdmFsIG9mIGZpbGVzIHRoYXQgZ290IGp1c3QgaW5zdGFsbGVkLiBQbGFjZSBpdCBhZnRlcgotICAgICMgSW5zdGFsbEluaXRpYWxpemUsIHNvIHdlIGZpcnN0IHVuaW5zdGFsbCBldmVyeXRoaW5nLCBidXQgc3RpbGwgcm9sbAotICAgICMgYmFjayBpbiBjYXNlIHRoZSBpbnN0YWxsYXRpb24gaXMgaW50ZXJydXB0ZWQKLSAgICBtc2lsaWIuY2hhbmdlX3NlcXVlbmNlKHNlcXVlbmNlLkluc3RhbGxFeGVjdXRlU2VxdWVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyIsIDE1MTApCi0gICAgbXNpbGliLmFkZF90YWJsZXMoZGIsIHNlcXVlbmNlKQotICAgICMgV2UgY2Fubm90IHNldCBBTExVU0VSUyBpbiB0aGUgcHJvcGVydHkgdGFibGUsIGFzIHRoaXMgY2Fubm90IGJlCi0gICAgIyByZXNldCBpZiB0aGUgdXNlciBjaG9zZXMgYSBwZXItdXNlciBpbnN0YWxsYXRpb24uIEluc3RlYWQsIHdlCi0gICAgIyBtYWludGFpbiBXaGljaFVzZXJzLCB3aGljaCBjYW4gYmUgIkFMTCIgb3IgIkpVU1RNRSIuIFRoZSBVSSBtYW5hZ2VzCi0gICAgIyB0aGlzIHByb3BlcnR5LCBhbmQgd2hlbiB0aGUgZXhlY3V0aW9uIHN0YXJ0cywgQUxMVVNFUlMgaXMgc2V0Ci0gICAgIyBhY2NvcmRpbmdseS4KLSAgICBhZGRfZGF0YShkYiwgIlByb3BlcnR5IiwgWygiVXBncmFkZUNvZGUiLCB1YyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIldoaWNoVXNlcnMiLCAiQUxMIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIlByb2R1Y3RMaW5lIiwgIlB5dGhvbiVzJXMiICUgKG1ham9yLCBtaW5vcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgIGRiLkNvbW1pdCgpCi0gICAgcmV0dXJuIGRiLCBtc2luYW1lCi0KLWRlZiByZW1vdmVfb2xkX3ZlcnNpb25zKGRiKToKLSAgICAiRmlsbCB0aGUgdXBncmFkZSB0YWJsZS4iCi0gICAgc3RhcnQgPSAiJXMuJXMuMCIgJSAobWFqb3IsIG1pbm9yKQotICAgICMgVGhpcyByZXF1ZXN0cyB0aGF0IGZlYXR1cmUgc2VsZWN0aW9uIHN0YXRlcyBvZiBhbiBvbGRlcgotICAgICMgaW5zdGFsbGF0aW9uIHNob3VsZCBiZSBmb3J3YXJkZWQgaW50byB0aGlzIG9uZS4gVXBncmFkaW5nCi0gICAgIyByZXF1aXJlcyB0aGF0IGJvdGggdGhlIG9sZCBhbmQgdGhlIG5ldyBpbnN0YWxsYXRpb24gYXJlCi0gICAgIyBlaXRoZXIgYm90aCBwZXItbWFjaGluZSBvciBwZXItdXNlci4KLSAgICBtaWdyYXRlX2ZlYXR1cmVzID0gMQotICAgICMgU2VlICJVcGdyYWRlIFRhYmxlIi4gV2UgcmVtb3ZlIHJlbGVhc2VzIHdpdGggdGhlIHNhbWUgbWFqb3IgYW5kCi0gICAgIyBtaW5vciB2ZXJzaW9uLiBGb3IgYW4gc25hcHNob3QsIHdlIHJlbW92ZSBhbGwgZWFybGllciBzbmFwc2hvdHMuIEZvcgotICAgICMgYSByZWxlYXNlLCB3ZSByZW1vdmUgYWxsIHNuYXBzaG90cywgYW5kIGFsbCBlYXJsaWVyIHJlbGVhc2VzLgotICAgIGlmIHNuYXBzaG90OgotICAgICAgICBhZGRfZGF0YShkYiwgIlVwZ3JhZGUiLAotICAgICAgICAgICAgWyh1cGdyYWRlX2NvZGVfc25hcHNob3QsIHN0YXJ0LAotICAgICAgICAgICAgICBjdXJyZW50X3ZlcnNpb24sCi0gICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgbGFuZ3VhZ2UKLSAgICAgICAgICAgICAgbWlncmF0ZV9mZWF0dXJlcywKLSAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgICAgICAgICAgICAjIE1pZ3JhdGUgQUxMIGZlYXR1cmVzCi0gICAgICAgICAgICAgICJSRU1PVkVPTERTTkFQU0hPVCIpXSkKLSAgICAgICAgcHJvcHMgPSAiUkVNT1ZFT0xEU05BUFNIT1QiCi0gICAgZWxzZToKLSAgICAgICAgYWRkX2RhdGEoZGIsICJVcGdyYWRlIiwKLSAgICAgICAgICAgIFsodXBncmFkZV9jb2RlLCBzdGFydCwgY3VycmVudF92ZXJzaW9uLAotICAgICAgICAgICAgICBOb25lLCBtaWdyYXRlX2ZlYXR1cmVzLCBOb25lLCAiUkVNT1ZFT0xEVkVSU0lPTiIpLAotICAgICAgICAgICAgICh1cGdyYWRlX2NvZGVfc25hcHNob3QsIHN0YXJ0LCAiJXMuJWQuMCIgJSAobWFqb3IsIGludChtaW5vcikrMSksCi0gICAgICAgICAgICAgIE5vbmUsIG1pZ3JhdGVfZmVhdHVyZXMsIE5vbmUsICJSRU1PVkVPTERTTkFQU0hPVCIpXSkKLSAgICAgICAgcHJvcHMgPSAiUkVNT1ZFT0xEU05BUFNIT1Q7UkVNT1ZFT0xEVkVSU0lPTiIKLQotICAgIHByb3BzICs9ICI7VEFSR0VURElSO0RMTERJUjtMQVVOQ0hFUkRJUiIKLSAgICAjIEluc3RhbGxlciBjb2xsZWN0cyB0aGUgcHJvZHVjdCBjb2RlcyBvZiB0aGUgZWFybGllciByZWxlYXNlcyBpbgotICAgICMgdGhlc2UgcHJvcGVydGllcy4gSW4gb3JkZXIgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzLAotICAgICMgdGhleSBtdXN0IGJlIGRlY2xhcmVkIGFzIHNlY3VyZS4gU2VlICJTZWN1cmVDdXN0b21Qcm9wZXJ0aWVzIFByb3BlcnR5IgotICAgIGFkZF9kYXRhKGRiLCAiUHJvcGVydHkiLCBbKCJTZWN1cmVDdXN0b21Qcm9wZXJ0aWVzIiwgcHJvcHMpXSkKLQotY2xhc3MgUHlEaWFsb2coRGlhbG9nKToKLSAgICAiIiJEaWFsb2cgY2xhc3Mgd2l0aCBhIGZpeGVkIGxheW91dDogY29udHJvbHMgYXQgdGhlIHRvcCwgdGhlbiBhIHJ1bGVyLAotICAgIHRoZW4gYSBsaXN0IG9mIGJ1dHRvbnM6IGJhY2ssIG5leHQsIGNhbmNlbC4gT3B0aW9uYWxseSBhIGJpdG1hcCBhdCB0aGUKLSAgICBsZWZ0LiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6Ci0gICAgICAgICIiIkRpYWxvZyhkYXRhYmFzZSwgbmFtZSwgeCwgeSwgdywgaCwgYXR0cmlidXRlcywgdGl0bGUsIGZpcnN0LAotICAgICAgICBkZWZhdWx0LCBjYW5jZWwsIGJpdG1hcD10cnVlKSIiIgotICAgICAgICBEaWFsb2cuX19pbml0X18oc2VsZiwgKmFyZ3MpCi0gICAgICAgIHJ1bGVyID0gc2VsZi5oIC0gMzYKLSAgICAgICAgYm13aWR0aCA9IDE1MipydWxlci8zMjgKLSAgICAgICAgaWYga3cuZ2V0KCJiaXRtYXAiLCBUcnVlKToKLSAgICAgICAgICAgIHNlbGYuYml0bWFwKCJCaXRtYXAiLCAwLCAwLCBibXdpZHRoLCBydWxlciwgIlB5dGhvbldpbiIpCi0gICAgICAgIHNlbGYubGluZSgiQm90dG9tTGluZSIsIDAsIHJ1bGVyLCBzZWxmLncsIDApCi0KLSAgICBkZWYgdGl0bGUoc2VsZiwgdGl0bGUpOgotICAgICAgICAiU2V0IHRoZSB0aXRsZSB0ZXh0IG9mIHRoZSBkaWFsb2cgYXQgdGhlIHRvcC4iCi0gICAgICAgICMgbmFtZSwgeCwgeSwgdywgaCwgZmxhZ3M9VmlzaWJsZXxFbmFibGVkfFRyYW5zcGFyZW50fE5vUHJlZml4LAotICAgICAgICAjIHRleHQsIGluIFZlcmRhbmFCb2xkMTAKLSAgICAgICAgc2VsZi50ZXh0KCJUaXRsZSIsIDEzNSwgMTAsIDIyMCwgNjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICByIntcVmVyZGFuYUJvbGQxMH0lcyIgJSB0aXRsZSkKLQotICAgIGRlZiBiYWNrKHNlbGYsIHRpdGxlLCBuZXh0LCBuYW1lID0gIkJhY2siLCBhY3RpdmUgPSAxKToKLSAgICAgICAgIiIiQWRkIGEgYmFjayBidXR0b24gd2l0aCBhIGdpdmVuIHRpdGxlLCB0aGUgdGFiLW5leHQgYnV0dG9uLAotICAgICAgICBpdHMgbmFtZSBpbiB0aGUgQ29udHJvbCB0YWJsZSwgcG9zc2libHkgaW5pdGlhbGx5IGRpc2FibGVkLgotCi0gICAgICAgIFJldHVybiB0aGUgYnV0dG9uLCBzbyB0aGF0IGV2ZW50cyBjYW4gYmUgYXNzb2NpYXRlZCIiIgotICAgICAgICBpZiBhY3RpdmU6Ci0gICAgICAgICAgICBmbGFncyA9IDMgIyBWaXNpYmxlfEVuYWJsZWQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZsYWdzID0gMSAjIFZpc2libGUKLSAgICAgICAgcmV0dXJuIHNlbGYucHVzaGJ1dHRvbihuYW1lLCAxODAsIHNlbGYuaC0yNyAsIDU2LCAxNywgZmxhZ3MsIHRpdGxlLCBuZXh0KQotCi0gICAgZGVmIGNhbmNlbChzZWxmLCB0aXRsZSwgbmV4dCwgbmFtZSA9ICJDYW5jZWwiLCBhY3RpdmUgPSAxKToKLSAgICAgICAgIiIiQWRkIGEgY2FuY2VsIGJ1dHRvbiB3aXRoIGEgZ2l2ZW4gdGl0bGUsIHRoZSB0YWItbmV4dCBidXR0b24sCi0gICAgICAgIGl0cyBuYW1lIGluIHRoZSBDb250cm9sIHRhYmxlLCBwb3NzaWJseSBpbml0aWFsbHkgZGlzYWJsZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBidXR0b24sIHNvIHRoYXQgZXZlbnRzIGNhbiBiZSBhc3NvY2lhdGVkIiIiCi0gICAgICAgIGlmIGFjdGl2ZToKLSAgICAgICAgICAgIGZsYWdzID0gMyAjIFZpc2libGV8RW5hYmxlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmxhZ3MgPSAxICMgVmlzaWJsZQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIDMwNCwgc2VsZi5oLTI3LCA1NiwgMTcsIGZsYWdzLCB0aXRsZSwgbmV4dCkKLQotICAgIGRlZiBuZXh0KHNlbGYsIHRpdGxlLCBuZXh0LCBuYW1lID0gIk5leHQiLCBhY3RpdmUgPSAxKToKLSAgICAgICAgIiIiQWRkIGEgTmV4dCBidXR0b24gd2l0aCBhIGdpdmVuIHRpdGxlLCB0aGUgdGFiLW5leHQgYnV0dG9uLAotICAgICAgICBpdHMgbmFtZSBpbiB0aGUgQ29udHJvbCB0YWJsZSwgcG9zc2libHkgaW5pdGlhbGx5IGRpc2FibGVkLgotCi0gICAgICAgIFJldHVybiB0aGUgYnV0dG9uLCBzbyB0aGF0IGV2ZW50cyBjYW4gYmUgYXNzb2NpYXRlZCIiIgotICAgICAgICBpZiBhY3RpdmU6Ci0gICAgICAgICAgICBmbGFncyA9IDMgIyBWaXNpYmxlfEVuYWJsZWQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZsYWdzID0gMSAjIFZpc2libGUKLSAgICAgICAgcmV0dXJuIHNlbGYucHVzaGJ1dHRvbihuYW1lLCAyMzYsIHNlbGYuaC0yNywgNTYsIDE3LCBmbGFncywgdGl0bGUsIG5leHQpCi0KLSAgICBkZWYgeGJ1dHRvbihzZWxmLCBuYW1lLCB0aXRsZSwgbmV4dCwgeHBvcyk6Ci0gICAgICAgICIiIkFkZCBhIGJ1dHRvbiB3aXRoIGEgZ2l2ZW4gdGl0bGUsIHRoZSB0YWItbmV4dCBidXR0b24sCi0gICAgICAgIGl0cyBuYW1lIGluIHRoZSBDb250cm9sIHRhYmxlLCBnaXZpbmcgaXRzIHggcG9zaXRpb247IHRoZQotICAgICAgICB5LXBvc2l0aW9uIGlzIGFsaWduZWQgd2l0aCB0aGUgb3RoZXIgYnV0dG9ucy4KLQotICAgICAgICBSZXR1cm4gdGhlIGJ1dHRvbiwgc28gdGhhdCBldmVudHMgY2FuIGJlIGFzc29jaWF0ZWQiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucHVzaGJ1dHRvbihuYW1lLCBpbnQoc2VsZi53Knhwb3MgLSAyOCksIHNlbGYuaC0yNywgNTYsIDE3LCAzLCB0aXRsZSwgbmV4dCkKLQotZGVmIGFkZF91aShkYik6Ci0gICAgeCA9IHkgPSA1MAotICAgIHcgPSAzNzAKLSAgICBoID0gMzAwCi0gICAgdGl0bGUgPSAiW1Byb2R1Y3ROYW1lXSBTZXR1cCIKLQotICAgICMgc2VlICJEaWFsb2cgU3R5bGUgQml0cyIKLSAgICBtb2RhbCA9IDMgICAgICAjIHZpc2libGUgfCBtb2RhbAotICAgIG1vZGVsZXNzID0gMSAgICMgdmlzaWJsZQotICAgIHRyYWNrX2Rpc2tfc3BhY2UgPSAzMgotCi0gICAgYWRkX2RhdGEoZGIsICdBY3Rpb25UZXh0JywgdWlzYW1wbGUuQWN0aW9uVGV4dCkKLSAgICBhZGRfZGF0YShkYiwgJ1VJVGV4dCcsIHVpc2FtcGxlLlVJVGV4dCkKLQotICAgICMgQml0bWFwcwotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzcmNkaXIrciJcUENccHl0aG9uX2ljb24uZXhlIik6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiUnVuIGljb25zLm1hayBpbiBQQyBkaXJlY3RvcnkiKQotICAgIGFkZF9kYXRhKGRiLCAiQmluYXJ5IiwKLSAgICAgICAgICAgICBbKCJQeXRob25XaW4iLCBtc2lsaWIuQmluYXJ5KHIiJXNcUENidWlsZFxpbnN0YWxsZXIuYm1wIiAlIHNyY2RpcikpLCAjIDE1MngzMjggcGl4ZWxzCi0gICAgICAgICAgICAgICgicHkuaWNvIixtc2lsaWIuQmluYXJ5KHNyY2RpcityIlxQQ1xweS5pY28iKSksCi0gICAgICAgICAgICAgXSkKLSAgICBhZGRfZGF0YShkYiwgIkljb24iLAotICAgICAgICAgICAgIFsoInB5dGhvbl9pY29uLmV4ZSIsIG1zaWxpYi5CaW5hcnkoc3JjZGlyK3IiXFBDXHB5dGhvbl9pY29uLmV4ZSIpKV0pCi0KLSAgICAjIFNjcmlwdHMKLSAgICAjIENoZWNrRGlyIHNldHMgVGFyZ2V0RXhpc3RzIGlmIFRBUkdFVERJUiBleGlzdHMuCi0gICAgIyBVcGRhdGVFZGl0SURMRSBzZXRzIHRoZSBSRUdJU1RSWS50Y2wgY29tcG9uZW50IGludG8KLSAgICAjIHRoZSBpbnN0YWxsZWQvdW5pbnN0YWxsZWQgc3RhdGUgYWNjb3JkaW5nIHRvIGJvdGggdGhlCi0gICAgIyBFeHRlbnNpb25zIGFuZCBUY2xUayBmZWF0dXJlcy4KLSAgICBhZGRfZGF0YShkYiwgIkJpbmFyeSIsIFsoIlNjcmlwdCIsIG1zaWxpYi5CaW5hcnkoIm1zaXN1cHBvcnQuZGxsIikpXSkKLSAgICAjIFNlZSAiQ3VzdG9tIEFjdGlvbiBUeXBlIDEiCi0gICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBDaGVja0RpciA9ICJDaGVja0RpciIKLSAgICAgICAgVXBkYXRlRWRpdElETEUgPSAiVXBkYXRlRWRpdElETEUiCi0gICAgZWxzZToKLSAgICAgICAgQ2hlY2tEaXIgPSAgIl9DaGVja0RpckA0IgotICAgICAgICBVcGRhdGVFZGl0SURMRSA9ICJfVXBkYXRlRWRpdElETEVANCIKLSAgICBhZGRfZGF0YShkYiwgIkN1c3RvbUFjdGlvbiIsCi0gICAgICAgIFsoIkNoZWNrRGlyIiwgMSwgIlNjcmlwdCIsIENoZWNrRGlyKV0pCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIGFkZF9kYXRhKGRiLCAiQ3VzdG9tQWN0aW9uIiwKLSAgICAgICAgWygiVXBkYXRlRWRpdElETEUiLCAxLCAiU2NyaXB0IiwgVXBkYXRlRWRpdElETEUpXSkKLQotICAgICMgVUkgY3VzdG9taXphdGlvbiBwcm9wZXJ0aWVzCi0gICAgYWRkX2RhdGEoZGIsICJQcm9wZXJ0eSIsCi0gICAgICAgICAgICAgIyBTZWUgIkRlZmF1bHRVSUZvbnQgUHJvcGVydHkiCi0gICAgICAgICAgICAgWygiRGVmYXVsdFVJRm9udCIsICJEbGdGb250OCIpLAotICAgICAgICAgICAgICAjIFNlZSAiRXJyb3JEaWFsb2cgU3R5bGUgQml0IgotICAgICAgICAgICAgICAoIkVycm9yRGlhbG9nIiwgIkVycm9yRGxnIiksCi0gICAgICAgICAgICAgICgiUHJvZ3Jlc3MxIiwgIkluc3RhbGwiKSwgICAjIG1vZGlmaWVkIGluIG1haW50ZW5hbmNlIHR5cGUgZGxnCi0gICAgICAgICAgICAgICgiUHJvZ3Jlc3MyIiwgImluc3RhbGxzIiksCi0gICAgICAgICAgICAgICgiTWFpbnRlbmFuY2VGb3JtX0FjdGlvbiIsICJSZXBhaXIiKV0pCi0KLSAgICAjIEZvbnRzLCBzZWUgIlRleHRTdHlsZSBUYWJsZSIKLSAgICBhZGRfZGF0YShkYiwgIlRleHRTdHlsZSIsCi0gICAgICAgICAgICAgWygiRGxnRm9udDgiLCAiVGFob21hIiwgOSwgTm9uZSwgMCksCi0gICAgICAgICAgICAgICgiRGxnRm9udEJvbGQ4IiwgIlRhaG9tYSIsIDgsIE5vbmUsIDEpLCAjYm9sZAotICAgICAgICAgICAgICAoIlZlcmRhbmFCb2xkMTAiLCAiVmVyZGFuYSIsIDEwLCBOb25lLCAxKSwKLSAgICAgICAgICAgICAgKCJWZXJkYW5hUmVkOSIsICJWZXJkYW5hIiwgOSwgMjU1LCAwKSwKLSAgICAgICAgICAgICBdKQotCi0gICAgY29tcGlsZWFyZ3MgPSByJy1XaSAiW1RBUkdFVERJUl1MaWJcY29tcGlsZWFsbC5weSIgLWYgLXggImJhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8cHkyX3xsaWIydG8zXFx0ZXN0c3x2ZW52XFxzY3JpcHRzIiAiW1RBUkdFVERJUl1MaWIiJwotICAgIGxpYjJ0bzNhcmdzID0gcictYyAiaW1wb3J0IGxpYjJ0bzMucHlncmFtLCBsaWIydG8zLnBhdGNvbXA7bGliMnRvMy5wYXRjb21wLlBhdHRlcm5Db21waWxlcigpIicKLSAgICB1cGRhdGVwaXBhcmdzID0gcictbSBlbnN1cmVwaXAgLVUgLS1kZWZhdWx0LXBpcCcKLSAgICByZW1vdmVwaXBhcmdzID0gcictQiAtbSBlbnN1cmVwaXAuX3VuaW5zdGFsbCcKLSAgICAjIFNlZSAiQ3VzdG9tQWN0aW9uIFRhYmxlIgotICAgIGFkZF9kYXRhKGRiLCAiQ3VzdG9tQWN0aW9uIiwgWwotICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZUZpcnN0U2VxdWVuY2UgKyBtc2lkYkN1c3RvbUFjdGlvblR5cGVUZXh0RGF0YSArIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZVByb3BlcnR5Ci0gICAgICAgICMgU2VlICJDdXN0b20gQWN0aW9uIFR5cGUgNTEiLAotICAgICAgICAjICJDdXN0b20gQWN0aW9uIEV4ZWN1dGlvbiBTY2hlZHVsaW5nIE9wdGlvbnMiCi0gICAgICAgICgiSW5pdGlhbFRhcmdldERpciIsIDMwNywgIlRBUkdFVERJUiIsCi0gICAgICAgICAiW1dpbmRvd3NWb2x1bWVdUHl0aG9uJXMlcyIgJSAobWFqb3IsIG1pbm9yKSksCi0gICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAzMDcsICJETExESVIiLCAiW1RBUkdFVERJUl0iKSwKLSAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgMzA3LCAiRExMRElSIiwgU3lzdGVtRm9sZGVyTmFtZSksCi0gICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsIDMwNywgIkxBVU5DSEVSRElSIiwgIltUQVJHRVRESVJdIiksCi0gICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbV2luZG93c0ZvbGRlcl0iKSwKLSAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVFeGUgKyBtc2lkYkN1c3RvbUFjdGlvblR5cGVTb3VyY2VGaWxlCi0gICAgICAgICMgU2VlICJDdXN0b20gQWN0aW9uIFR5cGUgMTgiCi0gICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlSW5TY3JpcHQgKDEwMjQpOyBydW4gZHVyaW5nIGFjdHVhbCBpbnN0YWxsYXRpb24KLSAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVOb0ltcGVyc29uYXRlICgyMDQ4KTsgcnVuIGFjdGlvbiBpbiBzeXN0ZW0gYWNjb3VudCwgbm90IHVzZXIgYWNjb3VudAotICAgICAgICAoIkNvbXBpbGVQeWMiLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgY29tcGlsZWFyZ3MpLAotICAgICAgICAoIkNvbXBpbGVQeW8iLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgIi1PICIrY29tcGlsZWFyZ3MpLAotICAgICAgICAoIkNvbXBpbGVHcmFtbWFyIiwgMTgrMTAyNCsyMDQ4LCAicHl0aG9uLmV4ZSIsIGxpYjJ0bzNhcmdzKSwKLSAgICAgICAgKCJVcGRhdGVQaXAiLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgdXBkYXRlcGlwYXJncyksCi0gICAgICAgICgiUmVtb3ZlUGlwIiwgMTgrMTAyNCsyMDQ4LCAicHl0aG9uLmV4ZSIsIHJlbW92ZXBpcGFyZ3MpLAotICAgICAgICBdKQotCi0gICAgIyBVSSBTZXF1ZW5jZXMsIHNlZSAiSW5zdGFsbFVJU2VxdWVuY2UgVGFibGUiLCAiVXNpbmcgYSBTZXF1ZW5jZSBUYWJsZSIKLSAgICAjIE51bWJlcnMgaW5kaWNhdGUgc2VxdWVuY2U7IHNlZSBzZXF1ZW5jZS5weSBmb3IgaG93IHRoZXNlIGFjdGlvbiBpbnRlZ3JhdGUKLSAgICBhZGRfZGF0YShkYiwgIkluc3RhbGxVSVNlcXVlbmNlIiwKLSAgICAgICAgICAgICBbKCJQcmVwYXJlRGxnIiwgIk5vdCBQcml2aWxlZ2VkIG9yIFdpbmRvd3M5eCBvciBJbnN0YWxsZWQiLCAxNDApLAotICAgICAgICAgICAgICAoIldoaWNoVXNlcnNEbGciLCAiUHJpdmlsZWdlZCBhbmQgbm90IFdpbmRvd3M5eCBhbmQgbm90IEluc3RhbGxlZCIsIDE0MSksCi0gICAgICAgICAgICAgICgiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAotICAgICAgICAgICAgICAjIEluIHRoZSB1c2VyIGludGVyZmFjZSwgYXNzdW1lIGFsbC11c2VycyBpbnN0YWxsYXRpb24gaWYgcHJpdmlsZWdlZC4KLSAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgJ0RMTERJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUxKSwKLSAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTIpLAotICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAotICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTQpLAotICAgICAgICAgICAgICAoIlNlbGVjdERpcmVjdG9yeURsZyIsICJOb3QgSW5zdGFsbGVkIiwgMTIzMCksCi0gICAgICAgICAgICAgICMgWFhYIG5vIHN1cHBvcnQgZm9yIHJlc3VtZSBpbnN0YWxsYXRpb25zIHlldAotICAgICAgICAgICAgICAjKCJSZXN1bWVEbGciLCAiSW5zdGFsbGVkIEFORCAoUkVTVU1FIE9SIFByZXNlbGVjdGVkKSIsIDEyNDApLAotICAgICAgICAgICAgICAoIk1haW50ZW5hbmNlVHlwZURsZyIsICJJbnN0YWxsZWQgQU5EIE5PVCBSRVNVTUUgQU5EIE5PVCBQcmVzZWxlY3RlZCIsIDEyNTApLAotICAgICAgICAgICAgICAoIlByb2dyZXNzRGxnIiwgTm9uZSwgMTI4MCldKQotICAgIGFkZF9kYXRhKGRiLCAiQWRtaW5VSVNlcXVlbmNlIiwKLSAgICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiJywgNzUxKSwKLSAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiJywgNzUyKSwKLSAgICAgICAgICAgICBdKQotCi0gICAgIyBQcmVwZW5kIFRBUkdFVERJUiB0byB0aGUgc3lzdGVtIHBhdGgsIGFuZCByZW1vdmUgaXQgb24gdW5pbnN0YWxsLgotICAgIGFkZF9kYXRhKGRiLCAiRW52aXJvbm1lbnQiLAotICAgICAgICAgICAgIFsoIlBhdGhBZGRpdGlvbiIsICI9LSpQYXRoIiwgIltUQVJHRVRESVJdO1tUQVJHRVRESVJdU2NyaXB0cztbfl0iLCAiUkVHSVNUUlkucGF0aCIpXSkKLQotICAgICMgRXhlY3V0ZSBTZXF1ZW5jZXMKLSAgICBhZGRfZGF0YShkYiwgIkluc3RhbGxFeGVjdXRlU2VxdWVuY2UiLAotICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAotICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCi0gICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTIpLAotICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAnTEFVTkNIRVJESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MyksCi0gICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKLSAgICAgICAgICAgICAoIlVwZGF0ZUVkaXRJRExFIiwgTm9uZSwgMTA1MCksCi0gICAgICAgICAgICAgIyBydW4gY29tbWFuZCBpZiBpbnN0YWxsIHN0YXRlIG9mIHBpcCBjaGFuZ2VzIHRvIElOU1RBTExTVEFURV9MT0NBTAotICAgICAgICAgICAgICMgcnVuIGFmdGVyIEluc3RhbGxGaWxlcwotICAgICAgICAgICAgICgiVXBkYXRlUGlwIiwgIiZwaXBfZmVhdHVyZT0zIiwgNDAwMSksCi0gICAgICAgICAgICAgIyByZW1vdmUgcGlwIHdoZW4gc3RhdGUgY2hhbmdlcyB0byBJTlNUQUxMU1RBVEVfQUJTRU5UCi0gICAgICAgICAgICAgIyBydW4gYmVmb3JlIFJlbW92ZUZpbGVzCi0gICAgICAgICAgICAgKCJSZW1vdmVQaXAiLCAiJnBpcF9mZWF0dXJlPTIiLCAzNDk5KSwKLSAgICAgICAgICAgICAoIkNvbXBpbGVQeWMiLCAiQ09NUElMRUFMTCIsIDQwMDIpLAotICAgICAgICAgICAgICgiQ29tcGlsZVB5byIsICJDT01QSUxFQUxMIiwgNDAwMyksCi0gICAgICAgICAgICAgKCJDb21waWxlR3JhbW1hciIsICJDT01QSUxFQUxMIiwgNDAwNCksCi0gICAgICAgICAgICBdKQotICAgIGFkZF9kYXRhKGRiLCAiQWRtaW5FeGVjdXRlU2VxdWVuY2UiLAotICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAotICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiJywgNzUxKSwKLSAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAotICAgICAgICAgICAgXSkKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgU3RhbmRhcmQgZGlhbG9nczogRmF0YWxFcnJvciwgVXNlckV4aXQsIEV4aXREaWFsb2cKLSAgICBmYXRhbD1QeURpYWxvZyhkYiwgIkZhdGFsRXJyb3IiLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICJGaW5pc2giLCAiRmluaXNoIiwgIkZpbmlzaCIpCi0gICAgZmF0YWwudGl0bGUoIltQcm9kdWN0TmFtZV0gSW5zdGFsbGVyIGVuZGVkIHByZW1hdHVyZWx5IikKLSAgICBmYXRhbC5iYWNrKCI8IEJhY2siLCAiRmluaXNoIiwgYWN0aXZlID0gMCkKLSAgICBmYXRhbC5jYW5jZWwoIkNhbmNlbCIsICJCYWNrIiwgYWN0aXZlID0gMCkKLSAgICBmYXRhbC50ZXh0KCJEZXNjcmlwdGlvbjEiLCAxMzUsIDcwLCAyMjAsIDgwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIltQcm9kdWN0TmFtZV0gc2V0dXAgZW5kZWQgcHJlbWF0dXJlbHkgYmVjYXVzZSBvZiBhbiBlcnJvci4gIFlvdXIgc3lzdGVtIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gIFRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLiIpCi0gICAgZmF0YWwudGV4dCgiRGVzY3JpcHRpb24yIiwgMTM1LCAxNTUsIDIyMCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiQ2xpY2sgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGUgSW5zdGFsbGVyLiIpCi0gICAgYz1mYXRhbC5uZXh0KCJGaW5pc2giLCAiQ2FuY2VsIiwgbmFtZT0iRmluaXNoIikKLSAgICAjIFNlZSAiQ29udHJvbEV2ZW50IFRhYmxlIi4gUGFyYW1ldGVycyBhcmUgdGhlIGV2ZW50LCB0aGUgcGFyYW1ldGVyCi0gICAgIyB0byB0aGUgYWN0aW9uLCBhbmQgb3B0aW9uYWxseSB0aGUgY29uZGl0aW9uIGZvciB0aGUgZXZlbnQsIGFuZCB0aGUgb3JkZXIKLSAgICAjIG9mIGV2ZW50cy4KLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0KLSAgICB1c2VyX2V4aXQ9UHlEaWFsb2coZGIsICJVc2VyRXhpdCIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgIkZpbmlzaCIsICJGaW5pc2giLCAiRmluaXNoIikKLSAgICB1c2VyX2V4aXQudGl0bGUoIltQcm9kdWN0TmFtZV0gSW5zdGFsbGVyIHdhcyBpbnRlcnJ1cHRlZCIpCi0gICAgdXNlcl9leGl0LmJhY2soIjwgQmFjayIsICJGaW5pc2giLCBhY3RpdmUgPSAwKQotICAgIHVzZXJfZXhpdC5jYW5jZWwoIkNhbmNlbCIsICJCYWNrIiwgYWN0aXZlID0gMCkKLSAgICB1c2VyX2V4aXQudGV4dCgiRGVzY3JpcHRpb24xIiwgMTM1LCA3MCwgMjIwLCA4MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJbUHJvZHVjdE5hbWVdIHNldHVwIHdhcyBpbnRlcnJ1cHRlZC4gIFlvdXIgc3lzdGVtIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gICIKLSAgICAgICAgICAgICAgICJUbyBpbnN0YWxsIHRoaXMgcHJvZ3JhbSBhdCBhIGxhdGVyIHRpbWUsIHBsZWFzZSBydW4gdGhlIGluc3RhbGxhdGlvbiBhZ2Fpbi4iKQotICAgIHVzZXJfZXhpdC50ZXh0KCJEZXNjcmlwdGlvbjIiLCAxMzUsIDE1NSwgMjIwLCAyMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBJbnN0YWxsZXIuIikKLSAgICBjID0gdXNlcl9leGl0Lm5leHQoIkZpbmlzaCIsICJDYW5jZWwiLCBuYW1lPSJGaW5pc2giKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLQotICAgIGV4aXRfZGlhbG9nID0gUHlEaWFsb2coZGIsICJFeGl0RGlhbG9nIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5pc2giLCAiRmluaXNoIiwgIkZpbmlzaCIpCi0gICAgZXhpdF9kaWFsb2cudGl0bGUoIkNvbXBsZXRlIHRoZSBbUHJvZHVjdE5hbWVdIEluc3RhbGxlciIpCi0gICAgZXhpdF9kaWFsb2cuYmFjaygiPCBCYWNrIiwgIkZpbmlzaCIsIGFjdGl2ZSA9IDApCi0gICAgZXhpdF9kaWFsb2cuY2FuY2VsKCJDYW5jZWwiLCAiQmFjayIsIGFjdGl2ZSA9IDApCi0gICAgZXhpdF9kaWFsb2cudGV4dCgiQWNrbm93bGVkZ2VtZW50cyIsIDEzNSwgOTUsIDIyMCwgMTIwLCAweDMwMDAzLAotICAgICAgIlNwZWNpYWwgV2luZG93cyB0aGFua3MgdG86XG4iCi0gICAgICAiICAgIE1hcmsgSGFtbW9uZCwgd2l0aG91dCB3aG9zZSB5ZWFycyBvZiBmcmVlbHkgXG4iCi0gICAgICAiICAgIHNoYXJlZCBXaW5kb3dzIGV4cGVydGlzZSwgUHl0aG9uIGZvciBXaW5kb3dzIFxuIgotICAgICAgIiAgICB3b3VsZCBzdGlsbCBiZSBQeXRob24gZm9yIERPUy4iKQotCi0gICAgYyA9IGV4aXRfZGlhbG9nLnRleHQoIndhcm5pbmciLCAxMzUsIDIwMCwgMjIwLCA0MCwgMHgzMDAwMywKLSAgICAgICAgICAgICJ7XFxWZXJkYW5hUmVkOX1XYXJuaW5nOiBQeXRob24gMi41LnggaXMgdGhlIGxhc3QgIgotICAgICAgICAgICAgIlB5dGhvbiByZWxlYXNlIGZvciBXaW5kb3dzIDl4LiIpCi0gICAgYy5jb25kaXRpb24oIkhpZGUiLCAiTk9UIFZlcnNpb245WCIpCi0KLSAgICBleGl0X2RpYWxvZy50ZXh0KCJEZXNjcmlwdGlvbiIsIDEzNSwgMjM1LCAyMjAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIkNsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIEluc3RhbGxlci4iKQotICAgIGMgPSBleGl0X2RpYWxvZy5uZXh0KCJGaW5pc2giLCAiQ2FuY2VsIiwgbmFtZT0iRmluaXNoIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgUmVxdWlyZWQgZGlhbG9nOiBGaWxlc0luVXNlLCBFcnJvckRsZwotICAgIGludXNlID0gUHlEaWFsb2coZGIsICJGaWxlc0luVXNlIiwKLSAgICAgICAgICAgICAgICAgICAgIHgsIHksIHcsIGgsCi0gICAgICAgICAgICAgICAgICAgICAxOSwgICAgICAgICAgICAgICAgIyBLZWVwTW9kZWxlc3N8TW9kYWx8VmlzaWJsZQotICAgICAgICAgICAgICAgICAgICAgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAiUmV0cnkiLCAiUmV0cnkiLCAiUmV0cnkiLCBiaXRtYXA9RmFsc2UpCi0gICAgaW51c2UudGV4dCgiVGl0bGUiLCAxNSwgNiwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9RmlsZXMgaW4gVXNlIikKLSAgICBpbnVzZS50ZXh0KCJEZXNjcmlwdGlvbiIsIDIwLCAyMywgMjgwLCAyMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJTb21lIGZpbGVzIHRoYXQgbmVlZCB0byBiZSB1cGRhdGVkIGFyZSBjdXJyZW50bHkgaW4gdXNlLiIpCi0gICAgaW51c2UudGV4dCgiVGV4dCIsIDIwLCA1NSwgMzMwLCA1MCwgMywKLSAgICAgICAgICAgICAgICJUaGUgZm9sbG93aW5nIGFwcGxpY2F0aW9ucyBhcmUgdXNpbmcgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYnkgdGhpcyBzZXR1cC4gQ2xvc2UgdGhlc2UgYXBwbGljYXRpb25zIGFuZCB0aGVuIGNsaWNrIFJldHJ5IHRvIGNvbnRpbnVlIHRoZSBpbnN0YWxsYXRpb24gb3IgQ2FuY2VsIHRvIGV4aXQgaXQuIikKLSAgICBpbnVzZS5jb250cm9sKCJMaXN0IiwgIkxpc3RCb3giLCAyMCwgMTA3LCAzMzAsIDEzMCwgNywgIkZpbGVJblVzZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgTm9uZSkKLSAgICBjPWludXNlLmJhY2soIkV4aXQiLCAiSWdub3JlIiwgbmFtZT0iRXhpdCIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIkV4aXQiKQotICAgIGM9aW51c2UubmV4dCgiSWdub3JlIiwgIlJldHJ5IiwgbmFtZT0iSWdub3JlIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiSWdub3JlIikKLSAgICBjPWludXNlLmNhbmNlbCgiUmV0cnkiLCAiRXhpdCIsIG5hbWU9IlJldHJ5IikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCJSZXRyeSIpCi0KLQotICAgICMgU2VlICJFcnJvciBEaWFsb2ciLiBTZWUgIklDRTIwIiBmb3IgdGhlIHJlcXVpcmVkIG5hbWVzIG9mIHRoZSBjb250cm9scy4KLSAgICBlcnJvciA9IERpYWxvZyhkYiwgIkVycm9yRGxnIiwKLSAgICAgICAgICAgICAgICAgICA1MCwgMTAsIDMzMCwgMTAxLAotICAgICAgICAgICAgICAgICAgIDY1NTQzLCAgICAgICAjIEVycm9yfE1pbmltaXplfE1vZGFsfFZpc2libGUKLSAgICAgICAgICAgICAgICAgICB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAiRXJyb3JUZXh0IiwgTm9uZSwgTm9uZSkKLSAgICBlcnJvci50ZXh0KCJFcnJvclRleHQiLCA1MCw5LDI4MCw0OCwzLCAiIikKLSAgICBlcnJvci5jb250cm9sKCJFcnJvckljb24iLCAiSWNvbiIsIDE1LCA5LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsICJweS5pY28iLCBOb25lLCBOb25lKQotICAgIGVycm9yLnB1c2hidXR0b24oIk4iLDEyMCw3Miw4MSwyMSwzLCJObyIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yTm8iKQotICAgIGVycm9yLnB1c2hidXR0b24oIlkiLDI0MCw3Miw4MSwyMSwzLCJZZXMiLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvclllcyIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiQSIsMCw3Miw4MSwyMSwzLCJBYm9ydCIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yQWJvcnQiKQotICAgIGVycm9yLnB1c2hidXR0b24oIkMiLDQyLDcyLDgxLDIxLDMsIkNhbmNlbCIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yQ2FuY2VsIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJJIiw4MSw3Miw4MSwyMSwzLCJJZ25vcmUiLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvcklnbm9yZSIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiTyIsMTU5LDcyLDgxLDIxLDMsIk9rIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JPayIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiUiIsMTk4LDcyLDgxLDIxLDMsIlJldHJ5IixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JSZXRyeSIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIEdsb2JhbCAiUXVlcnkgQ2FuY2VsIiBkaWFsb2cKLSAgICBjYW5jZWwgPSBEaWFsb2coZGIsICJDYW5jZWxEbGciLCA1MCwgMTAsIDI2MCwgODUsIDMsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAiTm8iLCAiTm8iLCAiTm8iKQotICAgIGNhbmNlbC50ZXh0KCJUZXh0IiwgNDgsIDE1LCAxOTQsIDMwLCAzLAotICAgICAgICAgICAgICAgICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsIFtQcm9kdWN0TmFtZV0gaW5zdGFsbGF0aW9uPyIpCi0gICAgY2FuY2VsLmNvbnRyb2woIkljb24iLCAiSWNvbiIsIDE1LCAxNSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLAotICAgICAgICAgICAgICAgICAgICJweS5pY28iLCBOb25lLCBOb25lKQotICAgIGM9Y2FuY2VsLnB1c2hidXR0b24oIlllcyIsIDcyLCA1NywgNTYsIDE3LCAzLCAiWWVzIiwgIk5vIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0KLSAgICBjPWNhbmNlbC5wdXNoYnV0dG9uKCJObyIsIDEzMiwgNTcsIDU2LCAxNywgMywgIk5vIiwgIlllcyIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIEdsb2JhbCAiV2FpdCBmb3IgY29zdGluZyIgZGlhbG9nCi0gICAgY29zdGluZyA9IERpYWxvZyhkYiwgIldhaXRGb3JDb3N0aW5nRGxnIiwgNTAsIDEwLCAyNjAsIDg1LCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAiUmV0dXJuIiwgIlJldHVybiIsICJSZXR1cm4iKQotICAgIGNvc3RpbmcudGV4dCgiVGV4dCIsIDQ4LCAxNSwgMTk0LCAzMCwgMywKLSAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBpbnN0YWxsZXIgZmluaXNoZXMgZGV0ZXJtaW5pbmcgeW91ciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cy4iKQotICAgIGNvc3RpbmcuY29udHJvbCgiSWNvbiIsICJJY29uIiwgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICJweS5pY28iLCBOb25lLCBOb25lKQotICAgIGMgPSBjb3N0aW5nLnB1c2hidXR0b24oIlJldHVybiIsIDEwMiwgNTcsIDU2LCAxNywgMywgIlJldHVybiIsIE5vbmUpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIkV4aXQiKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBQcmVwYXJhdGlvbiBkaWFsb2c6IG5vIHVzZXIgaW5wdXQgZXhjZXB0IGNhbmNlbGxhdGlvbgotICAgIHByZXAgPSBQeURpYWxvZyhkYiwgIlByZXBhcmVEbGciLCB4LCB5LCB3LCBoLCBtb2RlbGVzcywgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICJDYW5jZWwiLCAiQ2FuY2VsIiwgIkNhbmNlbCIpCi0gICAgcHJlcC50ZXh0KCJEZXNjcmlwdGlvbiIsIDEzNSwgNzAsIDIyMCwgNDAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgSW5zdGFsbGVyIHByZXBhcmVzIHRvIGd1aWRlIHlvdSB0aHJvdWdoIHRoZSBpbnN0YWxsYXRpb24uIikKLSAgICBwcmVwLnRpdGxlKCJXZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIEluc3RhbGxlciIpCi0gICAgYz1wcmVwLnRleHQoIkFjdGlvblRleHQiLCAxMzUsIDExMCwgMjIwLCAyMCwgMHgzMDAwMywgIlBvbmRlcmluZy4uLiIpCi0gICAgYy5tYXBwaW5nKCJBY3Rpb25UZXh0IiwgIlRleHQiKQotICAgIGM9cHJlcC50ZXh0KCJBY3Rpb25EYXRhIiwgMTM1LCAxMzUsIDIyMCwgMzAsIDB4MzAwMDMsIE5vbmUpCi0gICAgYy5tYXBwaW5nKCJBY3Rpb25EYXRhIiwgIlRleHQiKQotICAgIHByZXAuYmFjaygiQmFjayIsIE5vbmUsIGFjdGl2ZT0wKQotICAgIHByZXAubmV4dCgiTmV4dCIsIE5vbmUsIGFjdGl2ZT0wKQotICAgIGM9cHJlcC5jYW5jZWwoIkNhbmNlbCIsIE5vbmUpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgVGFyZ2V0IGRpcmVjdG9yeSBzZWxlY3Rpb24KLSAgICBzZWxkbGcgPSBQeURpYWxvZyhkYiwgIlNlbGVjdERpcmVjdG9yeURsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgIk5leHQiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIHNlbGRsZy50aXRsZSgiU2VsZWN0IERlc3RpbmF0aW9uIERpcmVjdG9yeSIpCi0gICAgYyA9IHNlbGRsZy50ZXh0KCJFeGlzdGluZyIsIDEzNSwgMjUsIDIzNSwgMzAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAgICJ7XFZlcmRhbmFSZWQ5fVRoaXMgdXBkYXRlIHdpbGwgcmVwbGFjZSB5b3VyIGV4aXN0aW5nIFtQcm9kdWN0TGluZV0gaW5zdGFsbGF0aW9uLiIpCi0gICAgYy5jb25kaXRpb24oIkhpZGUiLCAnUkVNT1ZFT0xEVkVSU0lPTj0iIiBhbmQgUkVNT1ZFT0xEU05BUFNIT1Q9IiInKQotICAgIHNlbGRsZy50ZXh0KCJEZXNjcmlwdGlvbiIsIDEzNSwgNTAsIDIyMCwgNDAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiUGxlYXNlIHNlbGVjdCBhIGRpcmVjdG9yeSBmb3IgdGhlIFtQcm9kdWN0TmFtZV0gZmlsZXMuIikKLQotICAgIHNlbGRsZy5iYWNrKCI8IEJhY2siLCBOb25lLCBhY3RpdmU9MCkKLSAgICBjID0gc2VsZGxnLm5leHQoIk5leHQgPiIsICJDYW5jZWwiKQotICAgIGMuZXZlbnQoIkRvQWN0aW9uIiwgIkNoZWNrRGlyIiwgIlRhcmdldEV4aXN0c09rPD4xIiwgb3JkZXI9MSkKLSAgICAjIElmIHRoZSB0YXJnZXQgZXhpc3RzLCBidXQgd2UgZm91bmQgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gcmVtb3ZlIG9sZCB2ZXJzaW9ucywgZG9uJ3QgYm90aGVyCi0gICAgIyBjb25maXJtaW5nIHRoYXQgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLiBTdHJpY3RseSBzcGVha2luZywgd2Ugc2hvdWxkIGRldGVybWluZSB0aGF0Ci0gICAgIyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBpcyBpbmRlZWQgdGhlIHRhcmdldCBvZiB0aGUgcHJvZHVjdCB0aGF0IHdlIGFyZSBnb2luZyB0byByZW1vdmUsIGJ1dAotICAgICMgSSBkb24ndCBrbm93IGhvdyB0byBkbyB0aGF0LgotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkV4aXN0aW5nRGlyZWN0b3J5RGxnIiwgJ1RhcmdldEV4aXN0cz0xIGFuZCBSRU1PVkVPTERWRVJTSU9OPSIiIGFuZCBSRU1PVkVPTERTTkFQU0hPVD0iIicsIDIpCi0gICAgYy5ldmVudCgiU2V0VGFyZ2V0UGF0aCIsICJUQVJHRVRESVIiLCAnVGFyZ2V0RXhpc3RzPTAgb3IgUkVNT1ZFT0xEVkVSU0lPTjw+IiIgb3IgUkVNT1ZFT0xEU05BUFNIT1Q8PiIiJywgMykKLSAgICBjLmV2ZW50KCJTcGF3bldhaXREaWFsb2ciLCAiV2FpdEZvckNvc3RpbmdEbGciLCAiQ29zdGluZ0NvbXBsZXRlPTEiLCA0KQotICAgIGMuZXZlbnQoIk5ld0RpYWxvZyIsICJTZWxlY3RGZWF0dXJlc0RsZyIsICdUYXJnZXRFeGlzdHM9MCBvciBSRU1PVkVPTERWRVJTSU9OPD4iIiBvciBSRU1PVkVPTERTTkFQU0hPVDw+IiInLCA1KQotCi0gICAgYyA9IHNlbGRsZy5jYW5jZWwoIkNhbmNlbCIsICJEaXJlY3RvcnlDb21ibyIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgIHNlbGRsZy5jb250cm9sKCJEaXJlY3RvcnlDb21ibyIsICJEaXJlY3RvcnlDb21ibyIsIDEzNSwgNzAsIDE3MiwgODAsIDM5MzIxOSwKLSAgICAgICAgICAgICAgICAgICAiVEFSR0VURElSIiwgTm9uZSwgIkRpcmVjdG9yeUxpc3QiLCBOb25lKQotICAgIHNlbGRsZy5jb250cm9sKCJEaXJlY3RvcnlMaXN0IiwgIkRpcmVjdG9yeUxpc3QiLCAxMzUsIDkwLCAyMDgsIDEzNiwgMywgIlRBUkdFVERJUiIsCi0gICAgICAgICAgICAgICAgICAgTm9uZSwgIlBhdGhFZGl0IiwgTm9uZSkKLSAgICBzZWxkbGcuY29udHJvbCgiUGF0aEVkaXQiLCAiUGF0aEVkaXQiLCAxMzUsIDIzMCwgMjA2LCAxNiwgMywgIlRBUkdFVERJUiIsIE5vbmUsICJOZXh0IiwgTm9uZSkKLSAgICBjID0gc2VsZGxnLnB1c2hidXR0b24oIlVwIiwgMzA2LCA3MCwgMTgsIDE4LCAzLCAiVXAiLCBOb25lKQotICAgIGMuZXZlbnQoIkRpcmVjdG9yeUxpc3RVcCIsICIwIikKLSAgICBjID0gc2VsZGxnLnB1c2hidXR0b24oIk5ld0RpciIsIDMyNCwgNzAsIDMwLCAxOCwgMywgIk5ldyIsIE5vbmUpCi0gICAgYy5ldmVudCgiRGlyZWN0b3J5TGlzdE5ldyIsICIwIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgU2VsZWN0RmVhdHVyZXNEbGcKLSAgICBmZWF0dXJlcyA9IFB5RGlhbG9nKGRiLCAiU2VsZWN0RmVhdHVyZXNEbGciLCB4LCB5LCB3LCBoLCBtb2RhbHx0cmFja19kaXNrX3NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsICJUcmVlIiwgIk5leHQiLCAiQ2FuY2VsIikKLSAgICBmZWF0dXJlcy50aXRsZSgiQ3VzdG9taXplIFtQcm9kdWN0TmFtZV0iKQotICAgIGZlYXR1cmVzLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCAzNSwgMjIwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICJTZWxlY3QgdGhlIHdheSB5b3Ugd2FudCBmZWF0dXJlcyB0byBiZSBpbnN0YWxsZWQuIikKLSAgICBmZWF0dXJlcy50ZXh0KCJUZXh0IiwgMTM1LDQ1LDIyMCwzMCwgMywKLSAgICAgICAgICAgICAgICAgICJDbGljayBvbiB0aGUgaWNvbnMgaW4gdGhlIHRyZWUgYmVsb3cgdG8gY2hhbmdlIHRoZSB3YXkgZmVhdHVyZXMgd2lsbCBiZSBpbnN0YWxsZWQuIikKLQotICAgIGM9ZmVhdHVyZXMuYmFjaygiPCBCYWNrIiwgIk5leHQiKQotICAgIGMuZXZlbnQoIk5ld0RpYWxvZyIsICJTZWxlY3REaXJlY3RvcnlEbGciKQotCi0gICAgYz1mZWF0dXJlcy5uZXh0KCJOZXh0ID4iLCAiQ2FuY2VsIikKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbk5vSXRlbXMiLCAiRW5hYmxlZCIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiRGlza0Nvc3REbGciLCAiT3V0T2ZEaXNrU3BhY2U9MSIsIG9yZGVyPTEpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIsICJPdXRPZkRpc2tTcGFjZTw+MSIsIG9yZGVyPTIpCi0KLSAgICBjPWZlYXR1cmVzLmNhbmNlbCgiQ2FuY2VsIiwgIlRyZWUiKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLSAgICAjIFRoZSBicm93c2UgcHJvcGVydHkgaXMgbm90IHVzZWQsIHNpbmNlIHdlIGhhdmUgb25seSBhIHNpbmdsZSB0YXJnZXQgcGF0aCAoc2VsZWN0ZWQgYWxyZWFkeSkKLSAgICBmZWF0dXJlcy5jb250cm9sKCJUcmVlIiwgIlNlbGVjdGlvblRyZWUiLCAxMzUsIDc1LCAyMjAsIDk1LCA3LCAiX0Jyb3dzZVByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICJUcmVlIG9mIHNlbGVjdGlvbnMiLCAiQmFjayIsIE5vbmUpCi0KLSAgICAjYz1mZWF0dXJlcy5wdXNoYnV0dG9uKCJSZXNldCIsIDQyLCAyNDMsIDU2LCAxNywgMywgIlJlc2V0IiwgIkRpc2tDb3N0IikKLSAgICAjYy5tYXBwaW5nKCJTZWxlY3Rpb25Ob0l0ZW1zIiwgIkVuYWJsZWQiKQotICAgICNjLmV2ZW50KCJSZXNldCIsICIwIikKLQotICAgIGZlYXR1cmVzLmNvbnRyb2woIkJveCIsICJHcm91cEJveCIsIDEzNSwgMTcwLCAyMjUsIDkwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKQotCi0gICAgYz1mZWF0dXJlcy54YnV0dG9uKCJEaXNrQ29zdCIsICJEaXNrICZVc2FnZSIsIE5vbmUsIDAuMTApCi0gICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25Ob0l0ZW1zIiwiRW5hYmxlZCIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiRGlza0Nvc3REbGciKQotCi0gICAgYz1mZWF0dXJlcy54YnV0dG9uKCJBZHZhbmNlZCIsICJBZHZhbmNlZCIsIE5vbmUsIDAuMzApCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQWR2YW5jZWREbGciKQotCi0gICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtRGVzY3JpcHRpb24iLCAxNDAsIDE4MCwgMjEwLCA0MCwgMywKLSAgICAgICAgICAgICAgICAgICJNdWx0aWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLiIpCi0gICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25EZXNjcmlwdGlvbiIsIlRleHQiKQotCi0gICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtU2l6ZSIsIDE0MCwgMjI1LCAyMTAsIDMzLCAzLAotICAgICAgICAgICAgICAgICAgICAiVGhlIHNpemUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLiIpCi0gICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25TaXplIiwgIlRleHQiKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBEaXNrIGNvc3QKLSAgICBjb3N0ID0gUHlEaWFsb2coZGIsICJEaXNrQ29zdERsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgIk9LIiwgIk9LIiwgIk9LIiwgYml0bWFwPUZhbHNlKQotICAgIGNvc3QudGV4dCgiVGl0bGUiLCAxNSwgNiwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKLSAgICBjb3N0LnRleHQoIkRlc2NyaXB0aW9uIiwgMjAsIDIwLCAyODAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAiVGhlIGRpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNlbGVjdGVkIGZlYXR1cmVzLiIpCi0gICAgY29zdC50ZXh0KCJUZXh0IiwgMjAsIDUzLCAzMzAsIDYwLCAzLAotICAgICAgICAgICAgICAiVGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMgKGlmIGFueSkgZG8gbm90IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2UgIgotICAgICAgICAgICAgICAiYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmVzLiAgWW91IGNhbiBlaXRoZXIgIgotICAgICAgICAgICAgICAicmVtb3ZlIHNvbWUgZmlsZXMgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcywgb3IgY2hvb3NlIHRvICIKLSAgICAgICAgICAgICAgImluc3RhbGwgbGVzcyBmZWF0dXJlcyBvbnRvIGxvY2FsIGRyaXZlKHMpLCBvciBzZWxlY3QgZGlmZmVyZW50ICIKLSAgICAgICAgICAgICAgImRlc3RpbmF0aW9uIGRyaXZlKHMpLiIpCi0gICAgY29zdC5jb250cm9sKCJWb2x1bWVMaXN0IiwgIlZvbHVtZUNvc3RMaXN0IiwgMjAsIDEwMCwgMzMwLCAxNTAsIDM5MzIyMywKLSAgICAgICAgICAgICAgICAgTm9uZSwgInsxMjB9ezcwfXs3MH17NzB9ezcwfSIsIE5vbmUsIE5vbmUpCi0gICAgY29zdC54YnV0dG9uKCJPSyIsICJPayIsIE5vbmUsIDAuNSkuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBXaGljaFVzZXJzIERpYWxvZy4gT25seSBhdmFpbGFibGUgb24gTlQsIGFuZCBmb3IgcHJpdmlsZWdlZCB1c2Vycy4KLSAgICAjIFRoaXMgbXVzdCBiZSBydW4gYmVmb3JlIEZpbmRSZWxhdGVkUHJvZHVjdHMsIGJlY2F1c2UgdGhhdCB3aWxsCi0gICAgIyB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyIHRoZSBwcmV2aW91cyBpbnN0YWxsYXRpb24gd2FzIHBlci11c2VyCi0gICAgIyBvciBwZXItbWFjaGluZS4gV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgZ29pbmcgYmFjayB0byB0aGlzCi0gICAgIyBkaWFsb2cgYWZ0ZXIgIk5leHQiIHdhcyBzZWxlY3RlZDsgdG8gc3VwcG9ydCB0aGlzLCB3ZSB3b3VsZCBuZWVkIHRvCi0gICAgIyBmaW5kIGhvdyB0byByZXNldCB0aGUgQUxMVVNFUlMgcHJvcGVydHksIGFuZCBob3cgdG8gcmUtcnVuCi0gICAgIyBGaW5kUmVsYXRlZFByb2R1Y3RzLgotICAgICMgT24gV2luZG93czl4LCB0aGUgQUxMVVNFUlMgcHJvcGVydHkgaXMgaWdub3JlZCBvbiB0aGUgY29tbWFuZCBsaW5lCi0gICAgIyBhbmQgaW4gdGhlIFByb3BlcnR5IHRhYmxlLCBidXQgaW5zdGFsbGVyIGZhaWxzIGFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbgotICAgICMgaWYgYSBkaWFsb2cgYXR0ZW1wdHMgdG8gc2V0IEFMTFVTRVJTLgotICAgIHdoaWNodXNlcnMgPSBQeURpYWxvZyhkYiwgIldoaWNoVXNlcnNEbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQWRtaW5JbnN0YWxsIiwgIk5leHQiLCAiQ2FuY2VsIikKLSAgICB3aGljaHVzZXJzLnRpdGxlKCJTZWxlY3Qgd2hldGhlciB0byBpbnN0YWxsIFtQcm9kdWN0TmFtZV0gZm9yIGFsbCB1c2VycyBvZiB0aGlzIGNvbXB1dGVyLiIpCi0gICAgIyBBIHJhZGlvIGdyb3VwIHdpdGggdHdvIG9wdGlvbnM6IGFsbHVzZXJzLCBqdXN0bWUKLSAgICBnID0gd2hpY2h1c2Vycy5yYWRpb2dyb3VwKCJBZG1pbkluc3RhbGwiLCAxMzUsIDYwLCAyMzUsIDgwLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoaWNoVXNlcnMiLCAiIiwgIk5leHQiKQotICAgIGcuY29uZGl0aW9uKCJEaXNhYmxlIiwgIlZlcnNpb25OVD02MDAiKSAjIE5vdCBhdmFpbGFibGUgb24gVmlzdGEgYW5kIFdpbmRvd3MgMjAwOAotICAgIGcuYWRkKCJBTEwiLCAwLCA1LCAxNTAsIDIwLCAiSW5zdGFsbCBmb3IgYWxsIHVzZXJzIikKLSAgICBnLmFkZCgiSlVTVE1FIiwgMCwgMjUsIDIzNSwgMjAsICJJbnN0YWxsIGp1c3QgZm9yIG1lIChub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MgVmlzdGEpIikKLQotICAgIHdoaWNodXNlcnMuYmFjaygiQmFjayIsIE5vbmUsIGFjdGl2ZT0wKQotCi0gICAgYyA9IHdoaWNodXNlcnMubmV4dCgiTmV4dCA+IiwgIkNhbmNlbCIpCi0gICAgYy5ldmVudCgiW0FMTFVTRVJTXSIsICIxIiwgJ1doaWNoVXNlcnM9IkFMTCInLCAxKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iLCBvcmRlciA9IDIpCi0KLSAgICBjID0gd2hpY2h1c2Vycy5jYW5jZWwoIkNhbmNlbCIsICJBZG1pbkluc3RhbGwiKQotICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIEFkdmFuY2VkIERpYWxvZy4KLSAgICBhZHZhbmNlZCA9IFB5RGlhbG9nKGRiLCAiQWR2YW5jZWREbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ29tcGlsZVB5YyIsICJPayIsICJPayIpCi0gICAgYWR2YW5jZWQudGl0bGUoIkFkdmFuY2VkIE9wdGlvbnMgZm9yIFtQcm9kdWN0TmFtZV0iKQotCi0gICAgIyBBIGNoZWNrYm94IHdoZXRoZXIgdG8gYnVpbGQgcHljIGZpbGVzCi0gICAgYWR2YW5jZWQuY2hlY2tib3goIkNvbXBpbGVQeWMiLCAxMzUsIDYwLCAyMzAsIDUwLCAzLAotICAgICAgICAgICAgICAgICAgICAgICJDT01QSUxFQUxMIiwgIkNvbXBpbGUgLnB5IGZpbGVzIHRvIGJ5dGUgY29kZSBhZnRlciBpbnN0YWxsYXRpb24iLCAiT2siKQotCi0gICAgYyA9IGFkdmFuY2VkLmNhbmNlbCgiT2siLCAiQ29tcGlsZVB5YyIsIG5hbWU9Ik9rIikgIyBCdXR0b24ganVzdCBoYXMgbG9jYXRpb24gb2YgY2FuY2VsIGJ1dHRvbi4KLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgRXhpc3RpbmcgRGlyZWN0b3J5IGRpYWxvZwotICAgIGRsZyA9IERpYWxvZyhkYiwgIkV4aXN0aW5nRGlyZWN0b3J5RGxnIiwgNTAsIDMwLCAyMDAsIDgwLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIk5vIiwgIk5vIiwgIk5vIikKLSAgICBkbGcudGV4dCgiVGl0bGUiLCAxMCwgMjAsIDE4MCwgNDAsIDMsCi0gICAgICAgICAgICAgIltUQVJHRVRESVJdIGV4aXN0cy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcz8iKQotICAgIGM9ZGxnLnB1c2hidXR0b24oIlllcyIsIDMwLCA2MCwgNTUsIDE3LCAzLCAiWWVzIiwgIk5vIikKLSAgICBjLmV2ZW50KCJbVGFyZ2V0RXhpc3RzXSIsICIwIiwgb3JkZXI9MSkKLSAgICBjLmV2ZW50KCJbVGFyZ2V0RXhpc3RzT2tdIiwgIjEiLCBvcmRlcj0yKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iLCBvcmRlcj0zKQotICAgIGM9ZGxnLnB1c2hidXR0b24oIk5vIiwgMTE1LCA2MCwgNTUsIDE3LCAzLCAiTm8iLCAiWWVzIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgSW5zdGFsbGF0aW9uIFByb2dyZXNzIGRpYWxvZyAobW9kZWxlc3MpCi0gICAgcHJvZ3Jlc3MgPSBQeURpYWxvZyhkYiwgIlByb2dyZXNzRGxnIiwgeCwgeSwgdywgaCwgbW9kZWxlc3MsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIsICJDYW5jZWwiLCAiQ2FuY2VsIiwgYml0bWFwPUZhbHNlKQotICAgIHByb2dyZXNzLnRleHQoIlRpdGxlIiwgMjAsIDE1LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgIntcRGxnRm9udEJvbGQ4fVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0iKQotICAgIHByb2dyZXNzLnRleHQoIlRleHQiLCAzNSwgNjUsIDMwMCwgMzAsIDMsCi0gICAgICAgICAgICAgICAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIEluc3RhbGxlciBbUHJvZ3Jlc3MyXSBbUHJvZHVjdE5hbWVdLiAiCi0gICAgICAgICAgICAgICAgICAiVGhpcyBtYXkgdGFrZSBzZXZlcmFsIG1pbnV0ZXMuIikKLSAgICBwcm9ncmVzcy50ZXh0KCJTdGF0dXNMYWJlbCIsIDM1LCAxMDAsIDM1LCAyMCwgMywgIlN0YXR1czoiKQotCi0gICAgYz1wcm9ncmVzcy50ZXh0KCJBY3Rpb25UZXh0IiwgNzAsIDEwMCwgdy03MCwgMjAsIDMsICJQb25kZXJpbmcuLi4iKQotICAgIGMubWFwcGluZygiQWN0aW9uVGV4dCIsICJUZXh0IikKLQotICAgICNjPXByb2dyZXNzLnRleHQoIkFjdGlvbkRhdGEiLCAzNSwgMTQwLCAzMDAsIDIwLCAzLCBOb25lKQotICAgICNjLm1hcHBpbmcoIkFjdGlvbkRhdGEiLCAiVGV4dCIpCi0KLSAgICBjPXByb2dyZXNzLmNvbnRyb2woIlByb2dyZXNzQmFyIiwgIlByb2dyZXNzQmFyIiwgMzUsIDEyMCwgMzAwLCAxMCwgNjU1MzcsCi0gICAgICAgICAgICAgICAgICAgICAgIE5vbmUsICJQcm9ncmVzcyBkb25lIiwgTm9uZSwgTm9uZSkKLSAgICBjLm1hcHBpbmcoIlNldFByb2dyZXNzIiwgIlByb2dyZXNzIikKLQotICAgIHByb2dyZXNzLmJhY2soIjwgQmFjayIsICJOZXh0IiwgYWN0aXZlPUZhbHNlKQotICAgIHByb2dyZXNzLm5leHQoIk5leHQgPiIsICJDYW5jZWwiLCBhY3RpdmU9RmFsc2UpCi0gICAgcHJvZ3Jlc3MuY2FuY2VsKCJDYW5jZWwiLCAiQmFjayIpLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgIyBNYWludGVuYW5jZSB0eXBlOiByZXBhaXIvdW5pbnN0YWxsCi0gICAgbWFpbnQgPSBQeURpYWxvZyhkYiwgIk1haW50ZW5hbmNlVHlwZURsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICJOZXh0IiwgIk5leHQiLCAiQ2FuY2VsIikKLSAgICBtYWludC50aXRsZSgiV2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBTZXR1cCBXaXphcmQiKQotICAgIG1haW50LnRleHQoIkJvZHlUZXh0IiwgMTM1LCA2MywgMjMwLCA0MiwgMywKLSAgICAgICAgICAgICAgICJTZWxlY3Qgd2hldGhlciB5b3Ugd2FudCB0byByZXBhaXIgb3IgcmVtb3ZlIFtQcm9kdWN0TmFtZV0uIikKLSAgICBnPW1haW50LnJhZGlvZ3JvdXAoIlJlcGFpclJhZGlvR3JvdXAiLCAxMzUsIDEwOCwgMjMwLCA2MCwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICJNYWludGVuYW5jZUZvcm1fQWN0aW9uIiwgIiIsICJOZXh0IikKLSAgICBnLmFkZCgiQ2hhbmdlIiwgMCwgMCwgMjAwLCAxNywgIiZDaGFuZ2UgW1Byb2R1Y3ROYW1lXSIpCi0gICAgZy5hZGQoIlJlcGFpciIsIDAsIDE4LCAyMDAsIDE3LCAiJlJlcGFpciBbUHJvZHVjdE5hbWVdIikKLSAgICBnLmFkZCgiUmVtb3ZlIiwgMCwgMzYsIDIwMCwgMTcsICJSZSZtb3ZlIFtQcm9kdWN0TmFtZV0iKQotCi0gICAgbWFpbnQuYmFjaygiPCBCYWNrIiwgTm9uZSwgYWN0aXZlPUZhbHNlKQotICAgIGM9bWFpbnQubmV4dCgiRmluaXNoIiwgIkNhbmNlbCIpCi0gICAgIyBDaGFuZ2UgaW5zdGFsbGF0aW9uOiBDaGFuZ2UgcHJvZ3Jlc3MgZGlhbG9nIHRvICJDaGFuZ2UiLCB0aGVuIGFzawotICAgICMgZm9yIGZlYXR1cmUgc2VsZWN0aW9uCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMV0iLCAiQ2hhbmdlIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IkNoYW5nZSInLCAxKQotICAgIGMuZXZlbnQoIltQcm9ncmVzczJdIiwgImNoYW5nZXMiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iQ2hhbmdlIicsIDIpCi0KLSAgICAjIFJlaW5zdGFsbDogQ2hhbmdlIHByb2dyZXNzIGRpYWxvZyB0byAiUmVwYWlyIiwgdGhlbiBpbnZva2UgcmVpbnN0YWxsCi0gICAgIyBBbHNvIHNldCBsaXN0IG9mIHJlaW5zdGFsbGVkIGZlYXR1cmVzIHRvICJBTEwiCi0gICAgYy5ldmVudCgiW1JFSU5TVEFMTF0iLCAiQUxMIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlcGFpciInLCA1KQotICAgIGMuZXZlbnQoIltQcm9ncmVzczFdIiwgIlJlcGFpcmluZyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZXBhaXIiJywgNikKLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MyXSIsICJyZXBhaXJzIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlcGFpciInLCA3KQotICAgIGMuZXZlbnQoIlJlaW5zdGFsbCIsICJBTEwiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVwYWlyIicsIDgpCi0KLSAgICAjIFVuaW5zdGFsbDogQ2hhbmdlIHByb2dyZXNzIHRvICJSZW1vdmUiLCB0aGVuIGludm9rZSB1bmluc3RhbGwKLSAgICAjIEFsc28gc2V0IGxpc3Qgb2YgcmVtb3ZlZCBmZWF0dXJlcyB0byAiQUxMIgotICAgIGMuZXZlbnQoIltSRU1PVkVdIiwgIkFMTCIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTEpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMV0iLCAiUmVtb3ZpbmciLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVtb3ZlIicsIDEyKQotICAgIGMuZXZlbnQoIltQcm9ncmVzczJdIiwgInJlbW92ZXMiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVtb3ZlIicsIDEzKQotICAgIGMuZXZlbnQoIlJlbW92ZSIsICJBTEwiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVtb3ZlIicsIDE0KQotCi0gICAgIyBDbG9zZSBkaWFsb2cgd2hlbiBtYWludGVuYW5jZSBhY3Rpb24gc2NoZWR1bGVkCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPD4iQ2hhbmdlIicsIDIwKQotICAgIGMuZXZlbnQoIk5ld0RpYWxvZyIsICJTZWxlY3RGZWF0dXJlc0RsZyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJDaGFuZ2UiJywgMjEpCi0KLSAgICBtYWludC5jYW5jZWwoIkNhbmNlbCIsICJSZXBhaXJSYWRpb0dyb3VwIikuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLQotIyBTZWUgIkZlYXR1cmUgVGFibGUiLiBUaGUgZmVhdHVyZSBsZXZlbCBpcyAxIGZvciBhbGwgZmVhdHVyZXMsCi0jIGFuZCB0aGUgZmVhdHVyZSBhdHRyaWJ1dGVzIGFyZSAwIGZvciB0aGUgRGVmYXVsdEZlYXR1cmUsIGFuZAotIyBGb2xsb3dQYXJlbnQgZm9yIGFsbCBvdGhlciBmZWF0dXJlcy4gVGhlIG51bWJlcnMgYXJlIHRoZSBEaXNwbGF5Ci0jIGNvbHVtbi4KLWRlZiBhZGRfZmVhdHVyZXMoZGIpOgotICAgICMgZmVhdHVyZSBhdHRyaWJ1dGVzOgotICAgICMgbXNpZGJGZWF0dXJlQXR0cmlidXRlc0ZvbGxvd1BhcmVudCA9PSAyCi0gICAgIyBtc2lkYkZlYXR1cmVBdHRyaWJ1dGVzRGlzYWxsb3dBZHZlcnRpc2UgPT0gOAotICAgICMgRmVhdHVyZXMgdGhhdCBuZWVkIHRvIGJlIGluc3RhbGxlZCB3aXRoIHRvZ2V0aGVyIHdpdGggdGhlIG1haW4gZmVhdHVyZQotICAgICMgKGkuZS4gYWRkaXRpb25hbCBQeXRob24gbGlicmFyaWVzKSBuZWVkIHRvIGZvbGxvdyB0aGUgcGFyZW50IGZlYXR1cmUuCi0gICAgIyBGZWF0dXJlcyB0aGF0IGhhdmUgbm8gYWR2ZXJ0aXNlbWVudCB0cmlnZ2VyIChlLmcuIHRoZSB0ZXN0IHN1aXRlKQotICAgICMgbXVzdCBub3Qgc3VwcG9ydCBhZHZlcnRpc2VtZW50Ci0gICAgZ2xvYmFsIGRlZmF1bHRfZmVhdHVyZSwgdGNsdGssIGh0bWxmaWxlcywgdG9vbHMsIHRlc3RzdWl0ZQotICAgIGdsb2JhbCBleHRfZmVhdHVyZSwgcHJpdmF0ZV9jcnQsIHByZXBlbmRfcGF0aCwgcGlwX2ZlYXR1cmUKLSAgICBkZWZhdWx0X2ZlYXR1cmUgPSBGZWF0dXJlKGRiLCAiRGVmYXVsdEZlYXR1cmUiLCAiUHl0aG9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gSW50ZXJwcmV0ZXIgYW5kIExpYnJhcmllcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkaXJlY3RvcnkgPSAiVEFSR0VURElSIikKLSAgICBzaGFyZWRfY3J0ID0gRmVhdHVyZShkYiwgIlNoYXJlZENSVCIsICJNU1ZDUlQiLCAiQyBSdW4tVGltZSAoc3lzdGVtLXdpZGUpIiwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0wKQotICAgIHByaXZhdGVfY3J0ID0gRmVhdHVyZShkYiwgIlByaXZhdGVDUlQiLCAiTVNWQ1JUIiwgIkMgUnVuLVRpbWUgKHByaXZhdGUpIiwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MCkKLSAgICBhZGRfZGF0YShkYiwgIkNvbmRpdGlvbiIsIFsoIlNoYXJlZENSVCIsIDEsIHN5czMyY29uZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJQcml2YXRlQ1JUIiwgMSwgIm5vdCAiK3N5czMyY29uZCldKQotICAgICMgV2UgZG9uJ3Qgc3VwcG9ydCBhZHZlcnRpc2VtZW50IG9mIGV4dGVuc2lvbnMKLSAgICBleHRfZmVhdHVyZSA9IEZlYXR1cmUoZGIsICJFeHRlbnNpb25zIiwgIlJlZ2lzdGVyIEV4dGVuc2lvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFrZSB0aGlzIFB5dGhvbiBpbnN0YWxsYXRpb24gdGhlIGRlZmF1bHQgUHl0aG9uIGluc3RhbGxhdGlvbiIsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCkKLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgdGNsdGsgPSBGZWF0dXJlKGRiLCAiVGNsVGsiLCAiVGNsL1RrIiwgIlRraW50ZXIsIElETEUsIHB5ZG9jIiwgNSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTIpCi0gICAgaHRtbGZpbGVzID0gRmVhdHVyZShkYiwgIkRvY3VtZW50YXRpb24iLCAiRG9jdW1lbnRhdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEhUTUxIZWxwIEZpbGUiLCA3LCBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUpCi0gICAgdG9vbHMgPSBGZWF0dXJlKGRiLCAiVG9vbHMiLCAiVXRpbGl0eSBTY3JpcHRzIiwKLSAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzLykiLCA5LAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9MikKLSAgICAjIHBpcCBpbnN0YWxsYXRpb24gaXNuJ3QgZW5hYmxlZCBieSBkZWZhdWx0IHVudGlsIGEgY2xlYW4gdW5pbnN0YWxsIHByb2NlZHVyZQotICAgICMgYmVjb21lcyBwb3NzaWJsZQotICAgIHBpcF9mZWF0dXJlID0gRmVhdHVyZShkYiwgInBpcF9mZWF0dXJlIiwgInBpcCIsCi0gICAgICAgICAgICAgICAgICAgICJJbnN0YWxsIChvciB1cGdyYWRlIGZyb20gYW4gZWFybGllciB2ZXJzaW9uKSBwaXAsICIKLSAgICAgICAgICAgICAgICAgICAgImEgdG9vbCBmb3IgaW5zdGFsbGluZyBhbmQgbWFuYWdpbmcgUHl0aG9uIHBhY2thZ2VzLiIsIDExLAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4KQotICAgIHRlc3RzdWl0ZSA9IEZlYXR1cmUoZGIsICJUZXN0c3VpdGUiLCAiVGVzdCBzdWl0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykiLCAxMywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCi0gICAgIyBwcmVwZW5kX3BhdGggaXMgYW4gYWRkaXRpb25hbCBmZWF0dXJlIHdoaWNoIGlzIHRvIGJlIG9mZiBieSBkZWZhdWx0LgotICAgICMgU2luY2UgdGhlIGRlZmF1bHQgbGV2ZWwgZm9yIHRoZSBhYm92ZSBmZWF0dXJlcyBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlCi0gICAgIyBhdCBsZWFzdCBsZXZlbCBoaWdoZXIuCi0gICAgcHJlcGVuZF9wYXRoID0gRmVhdHVyZShkYiwgIlByZXBlbmRQYXRoIiwgIkFkZCBweXRob24uZXhlIHRvIFBhdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBlbmQgW1RBUkdFVERJUl0gdG8gdGhlIHN5c3RlbSBQYXRoIHZhcmlhYmxlLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUgJ3B5dGhvbicgaW50byBhIGNvbW1hbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInByb21wdCB3aXRob3V0IG5lZWRpbmcgdGhlIGZ1bGwgcGF0aC4iLCAxNSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0yKQotCi1kZWYgZXh0cmFjdF9tc3ZjcjEwMCgpOgotICAgICMgRmluZCB0aGUgcmVkaXN0cmlidXRhYmxlIGZpbGVzCi0gICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBhcmNoID0gIng2NCIKLSAgICBlbHNlOgotICAgICAgICBhcmNoID0gIng4NiIKLSAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlMxMDBDT01OVE9PTFMnXSwgciIuLlwuLlxWQ1xyZWRpc3RcJXNcTWljcm9zb2Z0LlZDMTAwLkNSVCIgJSBhcmNoKQotCi0gICAgcmVzdWx0ID0gW10KLSAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgIyBBdCBsZWFzdCBmb3IgVlMyMDEwLCBtYW5pZmVzdHMgYXJlIG5vIGxvbmdlciBwcm92aWRlZAotICAgIG5hbWUgPSAibXN2Y3IxMDAuZGxsIgotICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBuYW1lKQotICAgIGt3ID0geydzcmMnOnBhdGh9Ci0gICAga3dbJ3ZlcnNpb24nXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAwKQotICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCi0gICAgcmV0dXJuIG5hbWUsIGt3Ci0KLWRlZiBnZW5lcmF0ZV9saWNlbnNlKCk6Ci0gICAgaW1wb3J0IHNodXRpbCwgZ2xvYgotICAgIG91dCA9IG9wZW4oIkxJQ0VOU0UudHh0IiwgInciKQotICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKG9zLnBhdGguam9pbihzcmNkaXIsICJMSUNFTlNFIikpLCBvdXQpCi0gICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4oImNydGxpY2Vuc2UudHh0IiksIG91dCkKLSAgICBmb3IgbmFtZSwgcGF0LCBmaWxlIGluICgoImJ6aXAyIiwiYnppcDItKiIsICJMSUNFTlNFIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCJvcGVuc3NsIiwgIm9wZW5zc2wtKiIsICJMSUNFTlNFIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCJUY2wiLCAidGNsOCoiLCAibGljZW5zZS50ZXJtcyIpLAotICAgICAgICAgICAgICAgICAgICAgICgiVGsiLCAidGs4KiIsICJsaWNlbnNlLnRlcm1zIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCJUaXgiLCAidGl4LSoiLCAibGljZW5zZS50ZXJtcyIpKToKLSAgICAgICAgb3V0LndyaXRlKCJcblRoaXMgY29weSBvZiBQeXRob24gaW5jbHVkZXMgYSBjb3B5IG9mICVzLCB3aGljaCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgZm9sbG93aW5nIHRlcm1zOlxuXG4iICUgbmFtZSkKLSAgICAgICAgZGlycyA9IGdsb2IuZ2xvYihzcmNkaXIrIi9leHRlcm5hbHMvIitwYXQpCi0gICAgICAgIGlmIG5vdCBkaXJzOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIkNvdWxkIG5vdCBmaW5kICIrc3JjZGlyKyIvZXh0ZXJuYWxzLyIrcGF0Ci0gICAgICAgIGlmIGxlbihkaXJzKSA+IDIgYW5kIG5vdCBzbmFwc2hvdDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJNdWx0aXBsZSBjb3BpZXMgb2YgIitwYXQKLSAgICAgICAgZGlyID0gZGlyc1swXQotICAgICAgICBzaHV0aWwuY29weWZpbGVvYmoob3Blbihvcy5wYXRoLmpvaW4oZGlyLCBmaWxlKSksIG91dCkKLSAgICBvdXQuY2xvc2UoKQotCi0KLWNsYXNzIFB5RGlyZWN0b3J5KERpcmVjdG9yeSk6Ci0gICAgIiIiQnkgZGVmYXVsdCwgYWxsIGNvbXBvbmVudHMgaW4gdGhlIFB5dGhvbiBpbnN0YWxsZXIKLSAgICBjYW4gcnVuIGZyb20gc291cmNlLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6Ci0gICAgICAgIGlmICJjb21wb25lbnRmbGFncyIgbm90IGluIGt3OgotICAgICAgICAgICAga3dbJ2NvbXBvbmVudGZsYWdzJ10gPSAyICNtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNPcHRpb25hbAotICAgICAgICBEaXJlY3RvcnkuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpCi0KLWRlZiBoZ21hbmlmZXN0KCk6Ci0gICAgIyBGZXRjaCBmaWxlIGxpc3QgZnJvbSBNZXJjdXJpYWwKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2hnJywgJ21hbmlmZXN0J10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAjIENyZWF0ZSBuZXN0ZWQgZGlyZWN0b3JpZXMgZm9yIGZpbGUgdHJlZQotICAgIHJlc3VsdCA9IHt9Ci0gICAgZm9yIGxpbmUgaW4gc3Rkb3V0LnNwbGl0bGluZXMoKToKLSAgICAgICAgY29tcG9uZW50cyA9IGxpbmUuc3BsaXQoJy8nKQotICAgICAgICBkID0gcmVzdWx0Ci0gICAgICAgIHdoaWxlIGxlbihjb21wb25lbnRzKSA+IDE6Ci0gICAgICAgICAgICBkMSA9IGQuc2V0ZGVmYXVsdChjb21wb25lbnRzWzBdLCB7fSkKLSAgICAgICAgICAgIGQgPSBkMQotICAgICAgICAgICAgZGVsIGNvbXBvbmVudHNbMF0KLSAgICAgICAgZFtjb21wb25lbnRzWzBdXSA9IE5vbmUKLSAgICByZXR1cm4gcmVzdWx0Ci0KLQotIyBTZWUgIkZpbGUgVGFibGUiLCAiQ29tcG9uZW50IFRhYmxlIiwgIkRpcmVjdG9yeSBUYWJsZSIsCi0jICJGZWF0dXJlQ29tcG9uZW50cyBUYWJsZSIKLWRlZiBhZGRfZmlsZXMoZGIpOgotICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKLSAgICBoZ2ZpbGVzID0gaGdtYW5pZmVzdCgpCi0gICAgY2FiID0gQ0FCKCJweXRob24iKQotICAgIHRtcGZpbGVzID0gW10KLSAgICAjIEFkZCBhbGwgZXhlY3V0YWJsZXMsIGljb25zLCB0ZXh0IGZpbGVzIGludG8gdGhlIFRBUkdFVERJUiBjb21wb25lbnQKLSAgICByb290ID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgTm9uZSwgc3JjZGlyLCAiVEFSR0VURElSIiwgIlNvdXJjZURpciIpCi0gICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKLSAgICByb290LmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQotICAgIHJvb3QuYWRkX2ZpbGUoIk5FV1MudHh0Iiwgc3JjPSJNaXNjL05FV1MiKQotICAgIGdlbmVyYXRlX2xpY2Vuc2UoKQotICAgIHJvb3QuYWRkX2ZpbGUoIkxJQ0VOU0UudHh0Iiwgc3JjPW9zLnBhdGguYWJzcGF0aCgiTElDRU5TRS50eHQiKSkKLSAgICByb290LnN0YXJ0X2NvbXBvbmVudCgicHl0aG9uLmV4ZSIsIGtleWZpbGU9InB5dGhvbi5leGUiKQotICAgIHJvb3QuYWRkX2ZpbGUoIiVzL3B5dGhvbi5leGUiICUgUENCVUlMRCkKLSAgICByb290LnN0YXJ0X2NvbXBvbmVudCgicHl0aG9udy5leGUiLCBrZXlmaWxlPSJweXRob253LmV4ZSIpCi0gICAgcm9vdC5hZGRfZmlsZSgiJXMvcHl0aG9udy5leGUiICUgUENCVUlMRCkKLQotICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzU2hhcmVkRGxsUmVmQ291bnQgPSA4LCBzZWUgIkNvbXBvbmVudCBUYWJsZSIKLSAgICBkbGxkaXIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBzcmNkaXIsICJETExESVIiLCAiLiIpCi0gICAgbGF1bmNoZXJkaXIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBzcmNkaXIsICJMQVVOQ0hFUkRJUiIsICIuIikKLQotICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzNjRiaXQgPSAyNTY7IHRoaXMgZGlzYWJsZXMgcmVnaXN0cnkgcmVkaXJlY3Rpb24KLSAgICAjIHRvIGFsbG93IHNldHRpbmcgdGhlIFNoYXJlZERMTHMga2V5IGluIHRoZSA2NC1iaXQgcG9ydGlvbiBldmVuIGZvciBhCi0gICAgIyAzMi1iaXQgaW5zdGFsbGVyLgotICAgICMgWFhYIGRvZXMgdGhpcyBzdGlsbCBhbGxvdyB0byBpbnN0YWxsIHRoZSBjb21wb25lbnQgb24gYSAzMi1iaXQgc3lzdGVtPwotICAgICMgUGljayB1cCAzMi1iaXQgYmluYXJ5IGFsd2F5cwotICAgIGxhdW5jaGVyc3JjID0gUENCVUlMRAotICAgIGlmIGxhdW5jaGVyc3JjLmxvd2VyKCkgPT0gJ3BjYnVpbGRcXHg2NC1wZ28nOgotICAgICAgICBsYXVuY2hlcnNyYyA9ICdQQ0J1aWxkXFx3aW4zMi1wZ28nCi0gICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxcYW1kNjQnOgotICAgICAgICBsYXVuY2hlcnNyYyA9ICdQQ0J1aWxkJwotICAgIGxhdW5jaGVyID0gb3MucGF0aC5qb2luKHNyY2RpciwgbGF1bmNoZXJzcmMsICJweS5leGUiKQotICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXIiLCBmbGFncyA9IDgrMjU2LCBrZXlmaWxlPSJweS5leGUiKQotICAgIGxhdW5jaGVyZGlyLmFkZF9maWxlKGxhdW5jaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXIsIDEpKQotICAgIGxhdW5jaGVydyA9IG9zLnBhdGguam9pbihzcmNkaXIsIGxhdW5jaGVyc3JjLCAicHl3LmV4ZSIpCi0gICAgbGF1bmNoZXJkaXIuc3RhcnRfY29tcG9uZW50KCJsYXVuY2hlcnciLCBmbGFncyA9IDgrMjU2LCBrZXlmaWxlPSJweXcuZXhlIikKLSAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlcncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXJ3LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXJ3LCAxKSkKLQotICAgIHB5ZGxsID0gInB5dGhvbiVzJXMuZGxsIiAlIChtYWpvciwgbWlub3IpCi0gICAgcHlkbGxzcmMgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBweWRsbCkKLSAgICBkbGxkaXIuc3RhcnRfY29tcG9uZW50KCJETExESVIiLCBmbGFncyA9IDgsIGtleWZpbGUgPSBweWRsbCwgdXVpZCA9IHB5dGhvbmRsbF91dWlkKQotICAgIHB5dmVyc2lvbiA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihweWRsbHNyYywgMCkKLSAgICBpZiBub3Qgc25hcHNob3Q6Ci0gICAgICAgICMgRm9yIHJlbGVhc2VzLCB0aGUgUHl0aG9uIERMTCBoYXMgdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUKLSAgICAgICAgIyBpbnN0YWxsZXIgcGFja2FnZS4KLSAgICAgICAgYXNzZXJ0IHB5dmVyc2lvbi5zcGxpdCgiLiIpWzozXSA9PSBjdXJyZW50X3ZlcnNpb24uc3BsaXQoIi4iKQotICAgIGRsbGRpci5hZGRfZmlsZSgiJXMvcHl0aG9uJXMlcy5kbGwiICUgKFBDQlVJTEQsIG1ham9yLCBtaW5vciksCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb249cHl2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24ocHlkbGxzcmMsIDEpKQotICAgIERMTHMgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBzcmNkaXIgKyAiLyIgKyBQQ0JVSUxELCAiRExMcyIsICJETExTfERMTHMiKQotCi0gICAgIyBtc3ZjcjkwLmRsbDogTmVlZCB0byBwbGFjZSB0aGUgRExMIGFuZCB0aGUgbWFuaWZlc3QgaW50byB0aGUgcm9vdCBkaXJlY3RvcnksCi0gICAgIyBwbHVzIGFub3RoZXIgY29weSBvZiB0aGUgbWFuaWZlc3QgaW4gdGhlIERMTHMgZGlyZWN0b3J5LCB3aXRoIHRoZSBtYW5pZmVzdAotICAgICMgcG9pbnRpbmcgdG8gdGhlIHJvb3QgZGlyZWN0b3J5Ci0gICAgcm9vdC5zdGFydF9jb21wb25lbnQoIm1zdmNyOTAiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQotICAgICMgUmVzdWx0cyBhcmUgSUQsa2V5d29yZCBwYWlycwotICAgIGNydGRsbCwga3dkcyA9IGV4dHJhY3RfbXN2Y3IxMDAoKQotICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsLCAqKmt3ZHMpCi0gICAgIyBDb3B5IHRoZSBtYW5pZmVzdAotICAgICMgQWN0dWFsbHksIGRvbid0IGRvIHRoYXQgYW55bW9yZSAtIG5vIERMTCBpbiBETExzIHNob3VsZCBoYXZlIGEgbWFuaWZlc3QKLSAgICAjIGRlcGVuZGVuY3kgb24gbXN2Y3I5MC5kbGwgYW55bW9yZSwgc28gdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeQotICAgICNtYW5pZmVzdF9kbGxzID0gbWFuaWZlc3RbMF0rIi5yb290IgotICAgICNvcGVuKG1hbmlmZXN0X2RsbHMsICJ3Iikud3JpdGUob3BlbihtYW5pZmVzdFsxXVsnc3JjJ10pLnJlYWQoKS5yZXBsYWNlKCJtc3ZjciIsIi4uL21zdmNyIikpCi0gICAgI0RMTHMuc3RhcnRfY29tcG9uZW50KCJtc3ZjcjkwX2RsbHMiLCBmZWF0dXJlPXByaXZhdGVfY3J0KQotICAgICNETExzLmFkZF9maWxlKG1hbmlmZXN0WzBdLCBzcmM9b3MucGF0aC5hYnNwYXRoKG1hbmlmZXN0X2RsbHMpKQotCi0gICAgIyBOb3cgc3RhcnQgdGhlIG1haW4gY29tcG9uZW50IGZvciB0aGUgRExMcyBkaXJlY3Rvcnk7Ci0gICAgIyBubyByZWd1bGFyIGZpbGVzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgZGlyZWN0b3J5IHlldC4KLSAgICBETExzLnN0YXJ0X2NvbXBvbmVudCgpCi0KLSAgICAjIENoZWNrIGlmIF9jdHlwZXMucHlkIGV4aXN0cwotICAgIGhhdmVfY3R5cGVzID0gb3MucGF0aC5leGlzdHMoc3JjZGlyKyIvJXMvX2N0eXBlcy5weWQiICUgUENCVUlMRCkKLSAgICBpZiBub3QgaGF2ZV9jdHlwZXM6Ci0gICAgICAgIHByaW50KCJXQVJOSU5HOiBfY3R5cGVzLnB5ZCBub3QgZm91bmQsIGN0eXBlcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCIpCi0gICAgICAgIGV4dGVuc2lvbnMucmVtb3ZlKCJfY3R5cGVzLnB5ZCIpCi0KLSAgICAjIEFkZCBhbGwgLnB5IGZpbGVzIGluIExpYiwgZXhjZXB0IHRraW50ZXIsIHRlc3QKLSAgICBkaXJzID0gW10KLSAgICBweWRpcnMgPSBbKHJvb3QsICJMaWIiLCBoZ2ZpbGVzWyJMaWIiXSwgZGVmYXVsdF9mZWF0dXJlKV0KLSAgICB3aGlsZSBweWRpcnM6Ci0gICAgICAgICMgQ29tbWl0IGV2ZXJ5IG5vdyBhbmQgdGhlbiwgb3IgZWxzZSBpbnN0YWxsZXIgd2lsbCBjb21wbGFpbgotICAgICAgICBkYi5Db21taXQoKQotICAgICAgICBwYXJlbnQsIGRpciwgZmlsZXMsIGZlYXR1cmUgPSBweWRpcnMucG9wKCkKLSAgICAgICAgaWYgZGlyLnN0YXJ0c3dpdGgoInBsYXQtIik6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAidHVydGxlZGVtbyJdOgotICAgICAgICAgICAgaWYgbm90IGhhdmVfdGNsOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmZWF0dXJlID0gdGNsdGsKLSAgICAgICAgICAgIHRjbHRrLnNldF9jdXJyZW50KCkKLSAgICAgICAgZWxpZiBkaXIgaW4gKCd0ZXN0JywgJ3Rlc3RzJyk6Ci0gICAgICAgICAgICBmZWF0dXJlID0gdGVzdHN1aXRlCi0gICAgICAgIGVsaWYgbm90IGhhdmVfY3R5cGVzIGFuZCBkaXIgPT0gImN0eXBlcyI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmZWF0dXJlLnNldF9jdXJyZW50KCkKLSAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcGFyZW50LCBkaXIsIGRpciwgIiVzfCVzIiAlIChwYXJlbnQubWFrZV9zaG9ydChkaXIpLCBkaXIpKQotICAgICAgICBkaXJzLmFwcGVuZChsaWIpCi0gICAgICAgIGhhc19weSA9IEZhbHNlCi0gICAgICAgIGZvciBuYW1lLCBzdWJkaXIgaW4gZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHN1YmRpciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBuYW1lKSkKLSAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdSRUFETUUnOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGhhc19weSA9IGhhc19weSBvciBuYW1lLmVuZHN3aXRoKCIucHkiKSBvciBuYW1lLmVuZHN3aXRoKCIucHl3IikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCi0gICAgICAgICAgICAgICAgcHlkaXJzLmFwcGVuZCgobGliLCBuYW1lLCBzdWJkaXIsIGZlYXR1cmUpKQotCi0gICAgICAgIGlmIGhhc19weToKLSAgICAgICAgICAgIGxpYi5yZW1vdmVfcHljKCkKLSAgICAjIEFkZCBETExzCi0gICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKLSAgICBsaWIgPSBETExzCi0gICAgbGliLmFkZF9maWxlKCJweS5pY28iLCBzcmM9c3JjZGlyKyIvUEMvcHkuaWNvIikKLSAgICBsaWIuYWRkX2ZpbGUoInB5Yy5pY28iLCBzcmM9c3JjZGlyKyIvUEMvcHljLmljbyIpCi0gICAgZGxscyA9IFtdCi0gICAgdGNsZmlsZXMgPSBbXQotICAgIGZvciBmIGluIGV4dGVuc2lvbnM6Ci0gICAgICAgIGlmIGY9PSJfdGtpbnRlci5weWQiOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNyY2RpciArICIvIiArIFBDQlVJTEQgKyAiLyIgKyBmKToKLSAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBNaXNzaW5nIGV4dGVuc2lvbiIsIGYpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBkbGxzLmFwcGVuZChmKQotICAgICAgICBsaWIuYWRkX2ZpbGUoZikKLSAgICBsaWIuYWRkX2ZpbGUoJ3B5dGhvbjMuZGxsJykKLSAgICAjIEFkZCBzcWxpdGUKLSAgICBpZiBtc2lsaWIubXNpX3R5cGU9PSJJbnRlbDY0OzEwMzMiOgotICAgICAgICBzcWxpdGVfYXJjaCA9ICIvaWE2NCIKLSAgICBlbGlmIG1zaWxpYi5tc2lfdHlwZT09Ing2NDsxMDMzIjoKLSAgICAgICAgc3FsaXRlX2FyY2ggPSAiL2FtZDY0IgotICAgICAgICB0Y2xzdWZmaXggPSAiNjQiCi0gICAgZWxzZToKLSAgICAgICAgc3FsaXRlX2FyY2ggPSAiIgotICAgICAgICB0Y2xzdWZmaXggPSAiIgotICAgIGxpYi5hZGRfZmlsZSgic3FsaXRlMy5kbGwiKQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoIiVzLyVzL190a2ludGVyLnB5ZCIgJSAoc3JjZGlyLCBQQ0JVSUxEKSk6Ci0gICAgICAgICAgICBwcmludCgiV0FSTklORzogTWlzc2luZyBfdGtpbnRlci5weWQiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGliLnN0YXJ0X2NvbXBvbmVudCgiVGtETExzIiwgdGNsdGspCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIl90a2ludGVyLnB5ZCIpCi0gICAgICAgICAgICBkbGxzLmFwcGVuZCgiX3RraW50ZXIucHlkIikKLSAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGgubm9ybXBhdGgoc3JjZGlyKygiL2V4dGVybmFscy90Y2x0ayVzL2JpbiIgJSB0Y2xzdWZmaXgpKQotICAgICAgICAgICAgZm9yIGYgaW4gZ2xvYi5nbG9iMSh0Y2xkaXIsICIqLmRsbCIpOgotICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShmLCBzcmM9b3MucGF0aC5qb2luKHRjbGRpciwgZikpCi0gICAgIyBjaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgdW5rbm93biBleHRlbnNpb25zCi0gICAgZm9yIGYgaW4gZ2xvYi5nbG9iMShzcmNkaXIrIi8iK1BDQlVJTEQsICIqLnB5ZCIpOgotICAgICAgICBpZiBmLmVuZHN3aXRoKCJfZC5weWQiKTogY29udGludWUgIyBkZWJ1ZyB2ZXJzaW9uCi0gICAgICAgIGlmIGYgaW4gZGxsczogY29udGludWUKLSAgICAgICAgcHJpbnQoIldBUk5JTkc6IFVua25vd24gZXh0ZW5zaW9uIiwgZikKLQotICAgICMgQWRkIGhlYWRlcnMKLSAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQotICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsICJpbmNsdWRlIiwgImluY2x1ZGUiLCAiSU5DTFVERXxpbmNsdWRlIikKLSAgICBsaWIuZ2xvYigiKi5oIikKLSAgICBsaWIuYWRkX2ZpbGUoInB5Y29uZmlnLmgiLCBzcmM9Ii4uL1BDL3B5Y29uZmlnLmgiKQotICAgICMgQWRkIGltcG9ydCBsaWJyYXJpZXMKLSAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBQQ0JVSUxELCAibGlicyIsICJMSUJTfGxpYnMiKQotICAgIGZvciBmIGluIGRsbHM6Ci0gICAgICAgIGxpYi5hZGRfZmlsZShmLnJlcGxhY2UoJ3B5ZCcsJ2xpYicpKQotICAgIGxpYi5hZGRfZmlsZSgncHl0aG9uJXMlcy5saWInICUgKG1ham9yLCBtaW5vcikpCi0gICAgbGliLmFkZF9maWxlKCdweXRob24zLmxpYicpCi0gICAgIyBBZGQgdGhlIG1pbmd3LWZvcm1hdCBsaWJyYXJ5Ci0gICAgaWYgaGF2ZV9taW5ndzoKLSAgICAgICAgbGliLmFkZF9maWxlKCdsaWJweXRob24lcyVzLmEnICUgKG1ham9yLCBtaW5vcikpCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgICMgQWRkIFRjbC9UawotICAgICAgICB0Y2xkaXJzID0gWyhyb290LCAnZXh0ZXJuYWxzL3RjbHRrJXMvbGliJyAlIHRjbHN1ZmZpeCwgJ3RjbCcpXQotICAgICAgICB0Y2x0ay5zZXRfY3VycmVudCgpCi0gICAgICAgIHdoaWxlIHRjbGRpcnM6Ci0gICAgICAgICAgICBwYXJlbnQsIHBoeXMsIGRpciA9IHRjbGRpcnMucG9wKCkKLSAgICAgICAgICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHBhcmVudCwgcGh5cywgZGlyLCAiJXN8JXMiICUgKHBhcmVudC5tYWtlX3Nob3J0KGRpciksIGRpcikpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGliLmFic29sdXRlKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihsaWIuYWJzb2x1dGUpOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgZikpOgotICAgICAgICAgICAgICAgICAgICB0Y2xkaXJzLmFwcGVuZCgobGliLCBmLCBmKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoZikKLSAgICAjIEFkZCB0b29scwotICAgIHRvb2xzLnNldF9jdXJyZW50KCkKLSAgICB0b29sZGlyID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgIlRvb2xzIiwgIlRvb2xzIiwgIlRPT0xTfFRvb2xzIikKLSAgICBmb3IgZiBpbiBbJ2kxOG4nLCAncHluY2hlJywgJ1NjcmlwdHMnXToKLSAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgdG9vbGRpciwgZiwgZiwgIiVzfCVzIiAlICh0b29sZGlyLm1ha2Vfc2hvcnQoZiksIGYpKQotICAgICAgICBsaWIuZ2xvYigiKi5weSIpCi0gICAgICAgIGxpYi5nbG9iKCIqLnB5dyIpCi0gICAgICAgIGxpYi5yZW1vdmVfcHljKCkKLSAgICAgICAgbGliLmdsb2IoIioudHh0IikKLSAgICAgICAgaWYgZiA9PSAicHluY2hlIjoKLSAgICAgICAgICAgIHggPSBQeURpcmVjdG9yeShkYiwgY2FiLCBsaWIsICJYIiwgIlgiLCAiWHxYIikKLSAgICAgICAgICAgIHguZ2xvYigiKi50eHQiKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCAiUkVBRE1FIikpOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQotICAgICAgICBpZiBmID09ICdTY3JpcHRzJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiMnRvMy5weSIsIHNyYz0iMnRvMyIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5ZG9jMy5weSIsIHNyYz0icHlkb2MzIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHl2ZW52LnB5Iiwgc3JjPSJweXZlbnYiKQotICAgICMgQWRkIGRvY3VtZW50YXRpb24KLSAgICBodG1sZmlsZXMuc2V0X2N1cnJlbnQoKQotICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsICJEb2MiLCAiRG9jIiwgIkRPQ3xEb2MiKQotICAgIGxpYi5zdGFydF9jb21wb25lbnQoImRvY3VtZW50YXRpb24iLCBrZXlmaWxlPWRvY2ZpbGUpCi0gICAgbGliLmFkZF9maWxlKGRvY2ZpbGUsIHNyYz0iYnVpbGQvaHRtbGhlbHAvIitkb2NmaWxlKQotCi0gICAgY2FiLmNvbW1pdChkYikKLQotICAgIGZvciBmIGluIHRtcGZpbGVzOgotICAgICAgICBvcy51bmxpbmsoZikKLQotIyBTZWUgIlJlZ2lzdHJ5IFRhYmxlIiwgIkNvbXBvbmVudCBUYWJsZSIKLWRlZiBhZGRfcmVnaXN0cnkoZGIpOgotICAgICMgRmlsZSBleHRlbnNpb25zLCBhc3NvY2lhdGVkIHdpdGggdGhlIFJFR0lTVFJZLmRlZiBjb21wb25lbnQKLSAgICAjIElETEUgdmVyYnMgZGVwZW5kIG9uIHRoZSB0Y2x0ayBmZWF0dXJlLgotICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzUmVnaXN0cnlLZXlQYXRoID0gNAotICAgICMgLTEgZm9yIFJvb3Qgc3BlY2lmaWVzICJkZXBlbmRlbnQgb24gQUxMVVNFUlMgcHJvcGVydHkiCi0gICAgdGNsZGF0YSA9IFtdCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbGRhdGEgPSBbCi0gICAgICAgICAgICAoIlJFR0lTVFJZLnRjbCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAotICAgICAgICAgICAgICJweS5JRExFIildCi0gICAgYWRkX2RhdGEoZGIsICJDb21wb25lbnQiLAotICAgICAgICAgICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzUmVnaXN0cnlLZXlQYXRoID0gNAotICAgICAgICAgICAgIFsoIlJFR0lTVFJZIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCi0gICAgICAgICAgICAgICAiSW5zdGFsbFBhdGgiKSwKLSAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kb2MiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKLSAgICAgICAgICAgICAgICJEb2N1bWVudGF0aW9uIiksCi0gICAgICAgICAgICAgICgiUkVHSVNUUlkucGF0aCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAotICAgICAgICAgICAgICBOb25lKSwKLSAgICAgICAgICAgICAgKCJSRUdJU1RSWS5lbnN1cmVwaXAiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgIkVuc3VyZVBpcFJ1biIsCi0gICAgICAgICAgICAgIE5vbmUpLAotICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRlZiIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSldICsgdGNsZGF0YSkKLSAgICAjIFNlZSAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiLgotICAgICMgVGhlIGFzc29jaWF0aW9uIGJldHdlZW4gVGNsVGsgYW5kIHB5dGhvbncuZXhlIGlzIG5lY2Vzc2FyeSB0byBtYWtlIElDRTU5Ci0gICAgIyBoYXBweSwgYmVjYXVzZSB0aGUgaW5zdGFsbGVyIG90aGVyd2lzZSBiZWxpZXZlcyB0aGF0IHRoZSBJRExFIGFuZCBQeURvYwotICAgICMgc2hvcnRjdXRzIG1pZ2h0IGdldCBpbnN0YWxsZWQgd2l0aG91dCBweXRob253LmV4ZSBiZWluZyBpbnN0YWxsLiBUaGlzCi0gICAgIyBpcyBub3QgdHJ1ZSwgc2luY2UgaW5zdGFsbGluZyBUY2xUayB3aWxsIGluc3RhbGwgdGhlIGRlZmF1bHQgZmVhdHVyZSwgd2hpY2gKLSAgICAjIHdpbGwgY2F1c2UgcHl0aG9udy5leGUgdG8gYmUgaW5zdGFsbGVkLgotICAgICMgUkVHSVNUUlkudGNsIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IGZlYXR1cmUsIGFzIGl0IHdpbGwgYmUgcmVxdWVzdGVkCi0gICAgIyB0aHJvdWdoIGEgY3VzdG9tIGFjdGlvbgotICAgIHRjbGRhdGEgPSBbXQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2xkYXRhID0gWyh0Y2x0ay5pZCwgInB5dGhvbncuZXhlIildCi0gICAgYWRkX2RhdGEoZGIsICJGZWF0dXJlQ29tcG9uZW50cyIsCi0gICAgICAgICAgICAgWyhkZWZhdWx0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoaHRtbGZpbGVzLmlkLCAiUkVHSVNUUlkuZG9jIiksCi0gICAgICAgICAgICAgIChwcmVwZW5kX3BhdGguaWQsICJSRUdJU1RSWS5wYXRoIiksCi0gICAgICAgICAgICAgIChwaXBfZmVhdHVyZS5pZCwgIlJFR0lTVFJZLmVuc3VyZXBpcCIpLAotICAgICAgICAgICAgICAoZXh0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWS5kZWYiKV0gKwotICAgICAgICAgICAgICB0Y2xkYXRhCi0gICAgICAgICAgICAgICkKLSAgICAjIEV4dGVuc2lvbnMgYXJlIG5vdCBhZHZlcnRpc2VkLiBGb3IgYWR2ZXJ0aXNlZCBleHRlbnNpb25zLAotICAgICMgd2Ugd291bGQgbmVlZCBzZXBhcmF0ZSBiaW5hcmllcyB0aGF0IGluc3RhbGwgYWxvbmcgd2l0aCB0aGUKLSAgICAjIGV4dGVuc2lvbi4KLSAgICBwYXQgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlXHNoZWxsXCVzXGNvbW1hbmQiCi0gICAgZXdpID0gIkVkaXQgd2l0aCBJRExFIgotICAgIHBhdDIgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlXERlZmF1bHRJY29uIgotICAgIHBhdDMgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlIgotICAgIHBhdDQgPSByIlNvZnR3YXJlXENsYXNzZXNcJXNQeXRob24uJXNGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiCi0gICAgdGNsX3ZlcmJzID0gW10KLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgdGNsX3ZlcmJzPVsKLSAgICAgICAgICAgICAoInB5LklETEUiLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICIiLCBld2kpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob253LmV4ZSIgIltUQVJHRVRESVJdTGliXGlkbGVsaWJcaWRsZS5weXciIC1lICIlMSInLAotICAgICAgICAgICAgICAiUkVHSVNUUlkudGNsIiksCi0gICAgICAgICAgICAgKCJweXcuSURMRSIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiwgZXdpKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9udy5leGUiICJbVEFSR0VURElSXUxpYlxpZGxlbGliXGlkbGUucHl3IiAtZSAiJTEiJywKLSAgICAgICAgICAgICAgIlJFR0lTVFJZLnRjbCIpLAotICAgICAgICBdCi0gICAgYWRkX2RhdGEoZGIsICJSZWdpc3RyeSIsCi0gICAgICAgICAgICBbIyBFeHRlbnNpb25zCi0gICAgICAgICAgICAgKCJweS5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCwgIiIsCi0gICAgICAgICAgICAgICJQeXRob24uRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsndycsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLk5vQ29uRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsnYycsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLkNvbXBpbGVkRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5by5leHQiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsnbycsICIiLAotICAgICAgICAgICAgICAiUHl0aG9uLkNvbXBpbGVkRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAjIE1JTUUgdHlwZXMKLSAgICAgICAgICAgICAoInB5Lm1pbWUiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCwgIkNvbnRlbnQgVHlwZSIsCi0gICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3Lm1pbWUiLCAtMSwgciJTb2Z0d2FyZVxDbGFzc2VzXC4iK2V4dCsndycsICJDb250ZW50IFR5cGUiLAotICAgICAgICAgICAgICAidGV4dC9wbGFpbiIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAjVmVyYnMKLSAgICAgICAgICAgICAoInB5Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICIiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiTm9Db24iLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5dy5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltMQVVOQ0hFUkRJUl1weS5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgXSArIHRjbF92ZXJicyArIFsKLSAgICAgICAgICAgICAjSWNvbnMKLSAgICAgICAgICAgICAoInB5Lmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiIiksICIiLAotICAgICAgICAgICAgICByJ1tETExzXXB5LmljbycsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIk5vQ29uIiksICIiLAotICAgICAgICAgICAgICByJ1tETExzXXB5LmljbycsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiksICIiLAotICAgICAgICAgICAgICByJ1tETExzXXB5Yy5pY28nLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgIyBEZXNjcmlwdGlvbnMKLSAgICAgICAgICAgICAoInB5LnR4dCIsIC0xLCBwYXQzICUgKHRlc3RwcmVmaXgsICIiKSwgIiIsCi0gICAgICAgICAgICAgICJQeXRob24gRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy50eHQiLCAtMSwgcGF0MyAlICh0ZXN0cHJlZml4LCAiTm9Db24iKSwgIiIsCi0gICAgICAgICAgICAgICJQeXRob24gRmlsZSAobm8gY29uc29sZSkiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMudHh0IiwgLTEsIHBhdDMgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiksICIiLAotICAgICAgICAgICAgICAiQ29tcGlsZWQgUHl0aG9uIEZpbGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgIyBEcm9wIEhhbmRsZXIKLSAgICAgICAgICAgICAoInB5LmRyb3AiLCAtMSwgcGF0NCAlICh0ZXN0cHJlZml4LCAiIiksICIiLAotICAgICAgICAgICAgICAiezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcuZHJvcCIsIC0xLCBwYXQ0ICUgKHRlc3RwcmVmaXgsICJOb0NvbiIpLCAiIiwKLSAgICAgICAgICAgICAgIns2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHljLmRyb3AiLCAtMSwgcGF0NCAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiKSwgIiIsCi0gICAgICAgICAgICAgICJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgIF0pCi0KLSAgICAjIFBBVEhFWFQKLSAgICBhZGRfZGF0YShkYiwgIkVudmlyb25tZW50IiwKLSAgICAgICAgICAgICBbKCJQYXRoRXh0QWRkaXRpb24iLCAiPS0qUGF0aEV4dCIsICJbfl07LlBZIiwgIlJFR0lTVFJZLmRlZiIpXSkKLQotICAgICMgUmVnaXN0cnkga2V5cwotICAgIHByZWZpeCA9IHIiU29mdHdhcmVcJXNQeXRob25cUHl0aG9uQ29yZVwlcyIgJSAodGVzdHByZWZpeCwgc2hvcnRfdmVyc2lvbikKLSAgICBhZGRfZGF0YShkYiwgIlJlZ2lzdHJ5IiwKLSAgICAgICAgICAgICBbKCJJbnN0YWxsUGF0aCIsIC0xLCBwcmVmaXgrciJcSW5zdGFsbFBhdGgiLCAiIiwgIltUQVJHRVRESVJdIiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICgiSW5zdGFsbEdyb3VwIiwgLTEsIHByZWZpeCtyIlxJbnN0YWxsUGF0aFxJbnN0YWxsR3JvdXAiLCAiIiwKLSAgICAgICAgICAgICAgICJQeXRob24gJXMiICUgc2hvcnRfdmVyc2lvbiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICgiUHl0aG9uUGF0aCIsIC0xLCBwcmVmaXgrciJcUHl0aG9uUGF0aCIsICIiLAotICAgICAgICAgICAgICAgciJbVEFSR0VURElSXUxpYjtbVEFSR0VURElSXURMTHMiLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgKCJEb2N1bWVudGF0aW9uIiwgLTEsIHByZWZpeCtyIlxIZWxwXE1haW4gUHl0aG9uIERvY3VtZW50YXRpb24iLCAiIiwKLSAgICAgICAgICAgICAgICJbVEFSR0VURElSXURvY1xcIitkb2NmaWxlICwgIlJFR0lTVFJZLmRvYyIpLAotICAgICAgICAgICAgICAoIk1vZHVsZXMiLCAtMSwgcHJlZml4K3IiXE1vZHVsZXMiLCAiKyIsIE5vbmUsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoIkFwcFBhdGhzIiwgLTEsIHIiU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cQXBwIFBhdGhzXFB5dGhvbi5leGUiLAotICAgICAgICAgICAgICAgIiIsIHIiW1RBUkdFVERJUl1QeXRob24uZXhlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICAoIkRpc3BsYXlJY29uIiwgLTEsCi0gICAgICAgICAgICAgICByIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwlcyIgJSBwcm9kdWN0X2NvZGUsCi0gICAgICAgICAgICAgICAiRGlzcGxheUljb24iLCAiW1RBUkdFVERJUl1weXRob24uZXhlIiwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICMgRmFrZSByZWdpc3RyeSBlbnRyeSB0byBhbGxvdyBpbnN0YWxsZXIgdG8gdHJhY2sgd2hldGhlciBlbnN1cmVwaXAgaGFzIGJlZW4gcnVuCi0gICAgICAgICAgICAgICgiRW5zdXJlUGlwUnVuIiwgLTEsIHByZWZpeCtyIlxFbnN1cmVQaXBSdW4iLCAiIiwgIiMxIiwgIlJFR0lTVFJZLmVuc3VyZXBpcCIpLAotICAgICAgICAgICAgICBdKQotICAgICMgU2hvcnRjdXRzLCBzZWUgIlNob3J0Y3V0IFRhYmxlIgotICAgIGFkZF9kYXRhKGRiLCAiRGlyZWN0b3J5IiwKLSAgICAgICAgICAgICBbKCJQcm9ncmFtTWVudUZvbGRlciIsICJUQVJHRVRESVIiLCAiLiIpLAotICAgICAgICAgICAgICAoIk1lbnVEaXIiLCAiUHJvZ3JhbU1lbnVGb2xkZXIiLCAiUFklcyVzfCVzUHl0aG9uICVzLiVzIiAlIChtYWpvcixtaW5vcix0ZXN0cHJlZml4LG1ham9yLG1pbm9yKSldKQotICAgIGFkZF9kYXRhKGRiLCAiUmVtb3ZlRmlsZSIsCi0gICAgICAgICAgICAgWygiTWVudURpciIsICJUQVJHRVRESVIiLCBOb25lLCAiTWVudURpciIsIDIpXSkKLSAgICB0Y2x0a3Nob3J0Y3V0cyA9IFtdCi0gICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBiaXR0ZWQgPSAiNjQgYml0IgotICAgIGVsc2U6Ci0gICAgICAgIGJpdHRlZCA9ICIzMiBiaXQiCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbHRrc2hvcnRjdXRzID0gWwotICAgICAgICAgICAgICAoIklETEUiLCAiTWVudURpciIsCi0gICAgICAgICAgICAgICAiSURMRXxJRExFIChQeXRob24gIitzaG9ydF92ZXJzaW9uKyIgR1VJIC0gIitiaXR0ZWQrIikiLAotICAgICAgICAgICAgICAgInB5dGhvbncuZXhlIiwgdGNsdGsuaWQsIHInIltUQVJHRVRESVJdTGliXGlkbGVsaWJcaWRsZS5weXciJywKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsICJweXRob25faWNvbi5leGUiLCAwLCBOb25lLCAiVEFSR0VURElSIiksCi0gICAgICAgICAgICAgIF0KLSAgICBhZGRfZGF0YShkYiwgIlNob3J0Y3V0IiwKLSAgICAgICAgICAgICB0Y2x0a3Nob3J0Y3V0cyArCi0gICAgICAgICAgICAgWyMgQWR2ZXJ0aXNlZCBzaG9ydGN1dHM6IHRhcmdldHMgYXJlIGZlYXR1cmVzLCBub3QgZmlsZXMKLSAgICAgICAgICAgICAgKCJQeXRob24iLCAiTWVudURpciIsCi0gICAgICAgICAgICAgICAiUFlUSE9OfFB5dGhvbiAiK3Nob3J0X3ZlcnNpb24rIiAoY29tbWFuZCBsaW5lIC0gIitiaXR0ZWQrIikiLAotICAgICAgICAgICAgICAgInB5dGhvbi5leGUiLCBkZWZhdWx0X2ZlYXR1cmUuaWQsIE5vbmUsIE5vbmUsIE5vbmUsCi0gICAgICAgICAgICAgICAicHl0aG9uX2ljb24uZXhlIiwgMiwgTm9uZSwgIlRBUkdFVERJUiIpLAotICAgICAgICAgICAgICAjIEFkdmVydGlzaW5nIHRoZSBNYW51YWwgYnJlYWtzIG9uIChzb21lPykgV2luOTgsIGFuZCB0aGUgc2hvcnRjdXQgbGFja3MgYW4KLSAgICAgICAgICAgICAgIyBpY29uIGZpcnN0LgotICAgICAgICAgICAgICAjKCJNYW51YWwiLCAiTWVudURpciIsICJNQU5VQUx8UHl0aG9uIE1hbnVhbHMiLCAiZG9jdW1lbnRhdGlvbiIsCi0gICAgICAgICAgICAgICMgaHRtbGZpbGVzLmlkLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSAgICAgICAgICAgICAgIyMgTm9uLWFkdmVydGlzZWQgc2hvcnRjdXRzOiBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHJlZ2lzdHJ5IGNvbXBvbmVudAotICAgICAgICAgICAgICAoIk1hbnVhbCIsICJNZW51RGlyIiwgIk1BTlVBTHxQeXRob24gIitzaG9ydF92ZXJzaW9uKyIgTWFudWFscyIsCi0gICAgICAgICAgICAgICAiUkVHSVNUUlkuZG9jIiwgIlsjJXNdIiAlIGRvY2ZpbGUsCi0gICAgICAgICAgICAgICBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSAgICAgICAgICAgICAgKCJQeURvYyIsICJNZW51RGlyIiwKLSAgICAgICAgICAgICAgICJNT0RET0NTfFB5dGhvbiAiK3Nob3J0X3ZlcnNpb24rIiBEb2NzIFNlcnZlciAocHlkb2MgLSAiKwotICAgICAgICAgICAgICAgYml0dGVkKyIpIiwgInB5dGhvbi5leGUiLCBkZWZhdWx0X2ZlYXR1cmUuaWQsIHInLW0gcHlkb2MgLWInLAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgInB5dGhvbl9pY29uLmV4ZSIsIDAsIE5vbmUsICJUQVJHRVRESVIiKSwKLSAgICAgICAgICAgICAgKCJVbmluc3RhbGwiLCAiTWVudURpciIsICJVTklOU1R8VW5pbnN0YWxsIFB5dGhvbiAiKwotICAgICAgICAgICAgICAgc2hvcnRfdmVyc2lvbisiICgiK2JpdHRlZCsiKSIsICJSRUdJU1RSWSIsCi0gICAgICAgICAgICAgICBTeXN0ZW1Gb2xkZXJOYW1lKyJtc2lleGVjIiwgICIveCVzIiAlIHByb2R1Y3RfY29kZSwKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotICAgICAgICAgICAgICBdKQotICAgIGRiLkNvbW1pdCgpCi0KLWRlZiBidWlsZF9wZGJ6aXAoKToKLSAgICBwZGJleGNsdWRlID0gWydraWxsX3B5dGhvbi5wZGInLCAnbWFrZV9idWlsZGluZm8ucGRiJywKLSAgICAgICAgICAgICAgICAgICdtYWtlX3ZlcnNpb25pbmZvLnBkYiddCi0gICAgcGF0aCA9ICJweXRob24tJXMlcy1wZGIuemlwIiAlIChmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KQotICAgIHBkYnppcCA9IHppcGZpbGUuWmlwRmlsZShwYXRoLCAndycpCi0gICAgZm9yIGYgaW4gZ2xvYi5nbG9iMShvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxEKSwgIioucGRiIik6Ci0gICAgICAgIGlmIGYgbm90IGluIHBkYmV4Y2x1ZGUgYW5kIG5vdCBmLmVuZHN3aXRoKCdfZC5wZGInKToKLSAgICAgICAgICAgIHBkYnppcC53cml0ZShvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBmKSwgZikKLSAgICBwZGJ6aXAuY2xvc2UoKQotCi1kYixtc2luYW1lID0gYnVpbGRfZGF0YWJhc2UoKQotdHJ5OgotICAgIGFkZF9mZWF0dXJlcyhkYikKLSAgICBhZGRfdWkoZGIpCi0gICAgYWRkX2ZpbGVzKGRiKQotICAgIGFkZF9yZWdpc3RyeShkYikKLSAgICByZW1vdmVfb2xkX3ZlcnNpb25zKGRiKQotICAgIGRiLkNvbW1pdCgpCi1maW5hbGx5OgotICAgIGRlbCBkYgotCi0jIE1lcmdlIENSVCBpbnRvIE1TSSBmaWxlLiBUaGlzIHJlcXVpcmVzIHRoZSBkYXRhYmFzZSB0byBiZSBjbG9zZWQuCi1tb2RfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIlByb2dyYW1GaWxlcyJdLCAiQ29tbW9uIEZpbGVzIiwgIk1lcmdlIE1vZHVsZXMiKQotaWYgbXNpbGliLldpbjY0OgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDY0Lm1zbSJdCi1lbHNlOgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDg2Lm1zbSJdCi0KLWZvciBpLCBuIGluIGVudW1lcmF0ZShtb2R1bGVzKToKLSAgICBtb2R1bGVzW2ldID0gb3MucGF0aC5qb2luKG1vZF9kaXIsIG4pCi0KLWRlZiBtZXJnZShtc2ksIGZlYXR1cmUsIHJvb3RkaXIsIG1vZHVsZXMpOgotICAgIGNhYl9hbmRfZmlsZWNvdW50ID0gW10KLSAgICAjIFN0ZXAgMTogTWVyZ2UgZGF0YWJhc2VzLCBleHRyYWN0IGNhYmZpbGVzCi0gICAgbSA9IG1zaWxpYi5NYWtlTWVyZ2UyKCkKLSAgICBtLk9wZW5Mb2coIm1lcmdlLmxvZyIpCi0gICAgbS5PcGVuRGF0YWJhc2UobXNpKQotICAgIGZvciBtb2R1bGUgaW4gbW9kdWxlczoKLSAgICAgICAgcHJpbnQgbW9kdWxlCi0gICAgICAgIG0uT3Blbk1vZHVsZShtb2R1bGUsMCkKLSAgICAgICAgbS5NZXJnZShmZWF0dXJlLCByb290ZGlyKQotICAgICAgICBwcmludCAiRXJyb3JzOiIKLSAgICAgICAgZm9yIGUgaW4gbS5FcnJvcnM6Ci0gICAgICAgICAgICBwcmludCBlLlR5cGUsIGUuTW9kdWxlVGFibGUsIGUuRGF0YWJhc2VUYWJsZQotICAgICAgICAgICAgcHJpbnQgIiAgIE1vZGtleXM6IiwKLSAgICAgICAgICAgIGZvciBzIGluIGUuTW9kdWxlS2V5czogcHJpbnQgcywKLSAgICAgICAgICAgIHByaW50Ci0gICAgICAgICAgICBwcmludCAiICAgREJLZXlzOiIsCi0gICAgICAgICAgICBmb3IgcyBpbiBlLkRhdGFiYXNlS2V5czogcHJpbnQgcywKLSAgICAgICAgICAgIHByaW50Ci0gICAgICAgIGNhYm5hbWUgPSB0ZW1wZmlsZS5ta3RlbXAoc3VmZml4PSIuY2FiIikKLSAgICAgICAgbS5FeHRyYWN0Q0FCKGNhYm5hbWUpCi0gICAgICAgIGNhYl9hbmRfZmlsZWNvdW50LmFwcGVuZCgoY2FibmFtZSwgbGVuKG0uTW9kdWxlRmlsZXMpKSkKLSAgICAgICAgbS5DbG9zZU1vZHVsZSgpCi0gICAgbS5DbG9zZURhdGFiYXNlKFRydWUpCi0gICAgbS5DbG9zZUxvZygpCi0KLSAgICAjIFN0ZXAgMjogQWRkIENBQiBmaWxlcwotICAgIGkgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgZGIgPSBpLk9wZW5EYXRhYmFzZShtc2ksIGNvbnN0YW50cy5tc2lPcGVuRGF0YWJhc2VNb2RlVHJhbnNhY3QpCi0KLSAgICB2ID0gZGIuT3BlblZpZXcoIlNFTEVDVCBMYXN0U2VxdWVuY2UgRlJPTSBNZWRpYSIpCi0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgbWF4bWVkaWEgPSAtMQotICAgIHdoaWxlIDE6Ci0gICAgICAgIHIgPSB2LkZldGNoKCkKLSAgICAgICAgaWYgbm90IHI6IGJyZWFrCi0gICAgICAgIHNlcSA9IHIuSW50ZWdlckRhdGEoMSkKLSAgICAgICAgaWYgc2VxID4gbWF4bWVkaWE6Ci0gICAgICAgICAgICBtYXhtZWRpYSA9IHNlcQotICAgIHByaW50ICJTdGFydCBvZiBNZWRpYSIsIG1heG1lZGlhCi0KLSAgICBmb3IgY2FibmFtZSwgY291bnQgaW4gY2FiX2FuZF9maWxlY291bnQ6Ci0gICAgICAgIHN0cmVhbSA9ICJtZXJnZWQlZCIgJSBtYXhtZWRpYQotICAgICAgICBtc2lsaWIuYWRkX2RhdGEoZGIsICJNZWRpYSIsCi0gICAgICAgICAgICAgICAgWyhtYXhtZWRpYSsxLCBtYXhtZWRpYStjb3VudCwgTm9uZSwgIiMiK3N0cmVhbSwgTm9uZSwgTm9uZSldKQotICAgICAgICBtc2lsaWIuYWRkX3N0cmVhbShkYiwgc3RyZWFtLCAgY2FibmFtZSkKLSAgICAgICAgb3MudW5saW5rKGNhYm5hbWUpCi0gICAgICAgIG1heG1lZGlhICs9IGNvdW50Ci0gICAgIyBUaGUgbWVyZ2UgbW9kdWxlIHNldHMgQUxMVVNFUlMgdG8gMSBpbiB0aGUgcHJvcGVydHkgdGFibGUuCi0gICAgIyBUaGlzIGlzIHVuZGVzaXJlZDsgZGVsZXRlIHRoYXQKLSAgICB2ID0gZGIuT3BlblZpZXcoIkRFTEVURSBGUk9NIFByb3BlcnR5IFdIRVJFIFByb3BlcnR5PSdBTExVU0VSUyciKQotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIHYuQ2xvc2UoKQotICAgIGRiLkNvbW1pdCgpCi0KLW1lcmdlKG1zaW5hbWUsICJTaGFyZWRDUlQiLCAiVEFSR0VURElSIiwgbW9kdWxlcykKLQotIyBjZXJ0bmFtZSAoZnJvbSBjb25maWcucHkpIHNob3VsZCBiZSAoYSBzdWJzdHJpbmcgb2YpCi0jIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LCBlLmcuICJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKLWlmIGNlcnRuYW1lOgotICAgIG9zLnN5c3RlbSgnc2lnbnRvb2wgc2lnbiAvbiAiJXMiICcKLSAgICAgICcvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgJwotICAgICAgJy9kICJQeXRob24gJXMiICcKLSAgICAgICclcycgJSAoY2VydG5hbWUsIGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2luYW1lKSkKLQotaWYgcGRiemlwOgotICAgIGJ1aWxkX3BkYnppcCgpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnRhcmdldHMgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQzMWRjMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9tc2kudGFyZ2V0cwpAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorCisgICAgPFRhcmdldCBOYW1lPSJQcm9jZXNzSW5zdGFsbEZpbGVzIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSJAKEluc3RhbGxGaWxlcykgIT0gJyciPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfRmlsZUxpc3RUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5nLmNzdjwvX0ZpbGVMaXN0VGFyZ2V0PgorICAgICAgICAgICAgPF9JbnN0YWxsRmlsZXNUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5nLnd4czwvX0luc3RhbGxGaWxlc1RhcmdldD4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxJbnN0YWxsRmlsZXM+CisgICAgICAgICAgICAgICAgPF9Tb3VyY2U+JShTb3VyY2UpJChbbXNidWlsZF06Ok1ha2VSZWxhdGl2ZSglKFNvdXJjZUJhc2UpLCAlKEZ1bGxQYXRoKSkpPC9fU291cmNlPgorICAgICAgICAgICAgICAgIDxfVGFyZ2V0PiUoVGFyZ2V0XykkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoVGFyZ2V0QmFzZSksICUoRnVsbFBhdGgpKSk8L19UYXJnZXQ+CisgICAgICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgICAgIAorICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9GaWxlTGlzdFRhcmdldCkiIExpbmVzPSJAKEluc3RhbGxGaWxlcy0+JyZxdW90OyUoX1NvdXJjZSkmcXVvdDssJnF1b3Q7JShfVGFyZ2V0KSZxdW90OywmcXVvdDslKEdyb3VwKSZxdW90OywmcXVvdDslKERpc2tJZCkmcXVvdDssJnF1b3Q7JShDb25kaXRpb24pJnF1b3Q7JykiIE92ZXJ3cml0ZT0idHJ1ZSIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nIiQoUHl0aG9uRXhlKSIgY3N2X3RvX3d4cy5weSAiJChfRmlsZUxpc3RUYXJnZXQpIiAiJChfSW5zdGFsbEZpbGVzVGFyZ2V0KSInCisgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KSIgLz4KKworICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPEZpbGVXcml0ZXMgSW5jbHVkZT0iJChfRmlsZUxpc3RUYXJnZXQpOyQoX0luc3RhbGxGaWxlc1RhcmdldCkiIC8+CisgICAgICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIkKF9JbnN0YWxsRmlsZXNUYXJnZXQpIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKworICAgIDxUYXJnZXQgTmFtZT0iX1RyYW5zZm9ybVd4bFRlbXBsYXRlcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIElucHV0cz0iQChXeGxUZW1wbGF0ZSk7JChQeVNvdXJjZVBhdGgpaW5jbHVkZVxwYXRjaGxldmVsLmgiIE91dHB1dHM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKEZpbGVuYW1lKS53eGwiPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoV3hsVGVtcGxhdGUuRnVsbFBhdGgpKS5SZXBsYWNlKGB7e1Nob3J0VmVyc2lvbn19YCwgYCQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcilgKS5SZXBsYWNlKGB7e0xvbmdWZXJzaW9ufX1gLCBgJChQeXRob25WZXJzaW9uKWApLlJlcGxhY2UoYHt7Qml0bmVzc319YCwgYCQoQml0bmVzcylgKSk8L19Db250ZW50PgorICAgICAgICAgICAgPF9FeGlzdGluZ0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShXeGxUZW1wbGF0ZS5GaWxlbmFtZSkud3hsKSk8L19FeGlzdGluZ0NvbnRlbnQ+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAgICAgCisgICAgICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwiCisgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVzPSIkKF9Db250ZW50KSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb249IiQoX0NvbnRlbnQpICE9ICQoX0V4aXN0aW5nQ29udGVudCkiIC8+CisgICAgICAgIAorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoV3hsVGVtcGxhdGUuRmlsZW5hbWUpLnd4bCIgLz4KKyAgICAgICAgICAgIDxGaWxlV3JpdGVzIEluY2x1ZGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwiIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgIDwvVGFyZ2V0PgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFdpeFRhcmdldHNQYXRoKSIgLz4KKworICAgIDxUYXJnZXQgTmFtZT0iU2lnbkNhYnMiPgorICAgICAgICA8RXJyb3IgVGV4dD0iVW5hYmxlIHRvIGxvY2F0ZSBzaWdudG9vbC5leGUuIFNldCAvcDpTaWduVG9vbFBhdGggYW5kIHJlYnVpbGQiIENvbmRpdGlvbj0iJyQoX1NpZ25Db21tYW5kKScgPT0gJyciIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiQoX1NpZ25Db21tYW5kKSBAKFNpZ25DYWJzLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgPFRhcmdldCBOYW1lPSJTaWduTXNpIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduTXNpLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgPFRhcmdldCBOYW1lPSJTaWduQnVuZGxlRW5naW5lIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduQnVuZGxlRW5naW5lLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgPFRhcmdldCBOYW1lPSJTaWduQnVuZGxlIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlVuYWJsZSB0byBsb2NhdGUgc2lnbnRvb2wuZXhlLiBTZXQgL3A6U2lnblRvb2xQYXRoIGFuZCByZWJ1aWxkIiBDb25kaXRpb249IickKF9TaWduQ29tbWFuZCknID09ICcnIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSIkKF9TaWduQ29tbWFuZCkgQChTaWduQnVuZGxlLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIENvbnRpbnVlT25FcnJvcj0iZmFsc2UiIC8+CisgICAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaWxpYi5weSBiL1Rvb2xzL21zaS9tc2lsaWIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMDhiOTEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL21zaWxpYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDY3OSArMCwwIEBACi0jIE1pY3Jvc29mdCBJbnN0YWxsZXIgTGlicmFyeQotIyAoQykgMjAwMyBNYXJ0aW4gdi4gTG9ld2lzCi0KLWltcG9ydCB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUKLWltcG9ydCB3aW4zMmNvbS5jbGllbnQKLWltcG9ydCBweXRob25jb20sIHB5d2ludHlwZXMKLWZyb20gd2luMzJjb20uY2xpZW50IGltcG9ydCBjb25zdGFudHMKLWltcG9ydCByZSwgc3RyaW5nLCBvcywgc2V0cywgZ2xvYiwgc3VicHJvY2Vzcywgc3lzLCBfd2lucmVnLCBzdHJ1Y3QsIF9tc2kKLQotdHJ5OgotICAgIGJhc2VzdHJpbmcKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgYmFzZXN0cmluZyA9IChzdHIsIHVuaWNvZGUpCi0KLSMgUGFydGlhbGx5IHRha2VuIGZyb20gV2luZQotZGF0YXNpemVtYXNrPSAgICAgIDB4MDBmZgotdHlwZV92YWxpZD0gICAgICAgIDB4MDEwMAotdHlwZV9sb2NhbGl6YWJsZT0gIDB4MDIwMAotCi10eXBlbWFzaz0gICAgICAgICAgMHgwYzAwCi10eXBlX2xvbmc9ICAgICAgICAgMHgwMDAwCi10eXBlX3Nob3J0PSAgICAgICAgMHgwNDAwCi10eXBlX3N0cmluZz0gICAgICAgMHgwYzAwCi10eXBlX2JpbmFyeT0gICAgICAgMHgwODAwCi0KLXR5cGVfbnVsbGFibGU9ICAgICAweDEwMDAKLXR5cGVfa2V5PSAgICAgICAgICAweDIwMDAKLSMgWFhYIHRlbXBvcmFyeSwgbG9jYWxpemFibGU/Ci1rbm93bmJpdHMgPSBkYXRhc2l6ZW1hc2sgfCB0eXBlX3ZhbGlkIHwgdHlwZV9sb2NhbGl6YWJsZSB8IFwKLSAgICAgICAgICAgIHR5cGVtYXNrIHwgdHlwZV9udWxsYWJsZSB8IHR5cGVfa2V5Ci0KLSMgU3VtbWFyeSBJbmZvIFByb3BlcnR5IElEcwotUElEX0NPREVQQUdFPTEKLVBJRF9USVRMRT0yCi1QSURfU1VCSkVDVD0zCi1QSURfQVVUSE9SPTQKLVBJRF9LRVlXT1JEUz01Ci1QSURfQ09NTUVOVFM9NgotUElEX1RFTVBMQVRFPTcKLVBJRF9MQVNUQVVUSE9SPTgKLVBJRF9SRVZOVU1CRVI9OQotUElEX0xBU1RQUklOVEVEPTExCi1QSURfQ1JFQVRFX0RUTT0xMgotUElEX0xBU1RTQVZFX0RUTT0xMwotUElEX1BBR0VDT1VOVD0xNAotUElEX1dPUkRDT1VOVD0xNQotUElEX0NIQVJDT1VOVD0xNgotUElEX0FQUE5BTUU9MTgKLVBJRF9TRUNVUklUWT0xOQotCi1kZWYgcmVzZXQoKToKLSAgICBnbG9iYWwgX2RpcmVjdG9yaWVzCi0gICAgX2RpcmVjdG9yaWVzID0gc2V0cy5TZXQoKQotCi1kZWYgRW5zdXJlTVNJKCk6Ci0gICAgd2luMzJjb20uY2xpZW50LmdlbmNhY2hlLkVuc3VyZU1vZHVsZSgnezAwMEMxMDkyLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0Nn0nLCAxMDMzLCAxLCAwKQotCi1kZWYgRW5zdXJlTVNNKCk6Ci0gICAgdHJ5OgotICAgICAgICB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUuRW5zdXJlTW9kdWxlKCd7MEFEREE4MkYtMkMyNi0xMUQyLUFENjUtMDBBMEM5QUYxMUE2fScsIDAsIDEsIDApCi0gICAgZXhjZXB0IHB5d2ludHlwZXMuY29tX2Vycm9yOgotICAgICAgICB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUuRW5zdXJlTW9kdWxlKCd7MEFEREE4MkYtMkMyNi0xMUQyLUFENjUtMDBBMEM5QUYxMUE2fScsIDAsIDIsIDApCi0KLV9JbnN0YWxsZXI9Tm9uZQotZGVmIE1ha2VJbnN0YWxsZXIoKToKLSAgICBnbG9iYWwgX0luc3RhbGxlcgotICAgIGlmIF9JbnN0YWxsZXIgaXMgTm9uZToKLSAgICAgICAgRW5zdXJlTVNJKCkKLSAgICAgICAgX0luc3RhbGxlciA9IHdpbjMyY29tLmNsaWVudC5EaXNwYXRjaCgnV2luZG93c0luc3RhbGxlci5JbnN0YWxsZXInLAotICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q0xTSUQ9J3swMDBDMTA5MC0wMDAwLTAwMDAtQzAwMC0wMDAwMDAwMDAwNDZ9JykKLSAgICByZXR1cm4gX0luc3RhbGxlcgotCi1fTWVyZ2U9Tm9uZQotZGVmIE1ha2VNZXJnZTIoKToKLSAgICBnbG9iYWwgX01lcmdlCi0gICAgaWYgX01lcmdlIGlzIE5vbmU6Ci0gICAgICAgIEVuc3VyZU1TTSgpCi0gICAgICAgIF9NZXJnZSA9IHdpbjMyY29tLmNsaWVudC5EaXNwYXRjaCgiTXNtLk1lcmdlMi4xIikKLSAgICByZXR1cm4gX01lcmdlCi0KLWNsYXNzIFRhYmxlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLmZpZWxkcyA9IFtdCi0KLSAgICBkZWYgYWRkX2ZpZWxkKHNlbGYsIGluZGV4LCBuYW1lLCB0eXBlKToKLSAgICAgICAgc2VsZi5maWVsZHMuYXBwZW5kKChpbmRleCxuYW1lLHR5cGUpKQotCi0gICAgZGVmIHNxbChzZWxmKToKLSAgICAgICAgZmllbGRzID0gW10KLSAgICAgICAga2V5cyA9IFtdCi0gICAgICAgIHNlbGYuZmllbGRzLnNvcnQoKQotICAgICAgICBmaWVsZHMgPSBbTm9uZV0qbGVuKHNlbGYuZmllbGRzKQotICAgICAgICBmb3IgaW5kZXgsIG5hbWUsIHR5cGUgaW4gc2VsZi5maWVsZHM6Ci0gICAgICAgICAgICBpbmRleCAtPSAxCi0gICAgICAgICAgICB1bmsgPSB0eXBlICYgfmtub3duYml0cwotICAgICAgICAgICAgaWYgdW5rOgotICAgICAgICAgICAgICAgIHByaW50ICIlcy4lcyB1bmtub3duIGJpdHMgJXgiICUgKHNlbGYubmFtZSwgbmFtZSwgdW5rKQotICAgICAgICAgICAgc2l6ZSA9IHR5cGUgJiBkYXRhc2l6ZW1hc2sKLSAgICAgICAgICAgIGR0eXBlID0gdHlwZSAmIHR5cGVtYXNrCi0gICAgICAgICAgICBpZiBkdHlwZSA9PSB0eXBlX3N0cmluZzoKLSAgICAgICAgICAgICAgICBpZiBzaXplOgotICAgICAgICAgICAgICAgICAgICB0bmFtZT0iQ0hBUiglZCkiICUgc2l6ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRuYW1lPSJDSEFSIgotICAgICAgICAgICAgZWxpZiBkdHlwZSA9PSB0eXBlX3Nob3J0OgotICAgICAgICAgICAgICAgIGFzc2VydCBzaXplPT0yCi0gICAgICAgICAgICAgICAgdG5hbWUgPSAiU0hPUlQiCi0gICAgICAgICAgICBlbGlmIGR0eXBlID09IHR5cGVfbG9uZzoKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2l6ZT09NAotICAgICAgICAgICAgICAgIHRuYW1lPSJMT05HIgotICAgICAgICAgICAgZWxpZiBkdHlwZSA9PSB0eXBlX2JpbmFyeToKLSAgICAgICAgICAgICAgICBhc3NlcnQgc2l6ZT09MAotICAgICAgICAgICAgICAgIHRuYW1lPSJPQkpFQ1QiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRuYW1lPSJ1bmtub3duIgotICAgICAgICAgICAgICAgIHByaW50ICIlcy4lc3Vua25vd24gaW50ZWdlciB0eXBlICVkIiAlIChzZWxmLm5hbWUsIG5hbWUsIHNpemUpCi0gICAgICAgICAgICBpZiB0eXBlICYgdHlwZV9udWxsYWJsZToKLSAgICAgICAgICAgICAgICBmbGFncyA9ICIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZsYWdzID0gIiBOT1QgTlVMTCIKLSAgICAgICAgICAgIGlmIHR5cGUgJiB0eXBlX2xvY2FsaXphYmxlOgotICAgICAgICAgICAgICAgIGZsYWdzICs9ICIgTE9DQUxJWkFCTEUiCi0gICAgICAgICAgICBmaWVsZHNbaW5kZXhdID0gImAlc2AgJXMlcyIgJSAobmFtZSwgdG5hbWUsIGZsYWdzKQotICAgICAgICAgICAgaWYgdHlwZSAmIHR5cGVfa2V5OgotICAgICAgICAgICAgICAgIGtleXMuYXBwZW5kKCJgJXNgIiAlIG5hbWUpCi0gICAgICAgIGZpZWxkcyA9ICIsICIuam9pbihmaWVsZHMpCi0gICAgICAgIGtleXMgPSAiLCAiLmpvaW4oa2V5cykKLSAgICAgICAgcmV0dXJuICJDUkVBVEUgVEFCTEUgJXMgKCVzIFBSSU1BUlkgS0VZICVzKSIgJSAoc2VsZi5uYW1lLCBmaWVsZHMsIGtleXMpCi0KLSAgICBkZWYgY3JlYXRlKHNlbGYsIGRiKToKLSAgICAgICAgdiA9IGRiLk9wZW5WaWV3KHNlbGYuc3FsKCkpCi0gICAgICAgIHYuRXhlY3V0ZShOb25lKQotICAgICAgICB2LkNsb3NlKCkKLQotY2xhc3MgQmluYXJ5OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IGZuYW1lCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ21zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsIiVzIikpJyAlIHNlbGYubmFtZQotCi1kZWYgZ2VuX3NjaGVtYShkZXN0cGF0aCwgc2NoZW1hcGF0aCk6Ci0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgIHNjaGVtYSA9IGQuT3BlbkRhdGFiYXNlKHNjaGVtYXBhdGgsCi0gICAgICAgICAgICB3aW4zMmNvbS5jbGllbnQuY29uc3RhbnRzLm1zaU9wZW5EYXRhYmFzZU1vZGVSZWFkT25seSkKLQotICAgICMgWFhYIE9SQkVSIEJZCi0gICAgdj1zY2hlbWEuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gX0NvbHVtbnMiKQotICAgIGN1cnRhYmxlPU5vbmUKLSAgICB0YWJsZXMgPSBbXQotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIGYgPSBvcGVuKGRlc3RwYXRoLCAid3QiKQotICAgIGYud3JpdGUoImZyb20gbXNpbGliIGltcG9ydCBUYWJsZVxuIikKLSAgICB3aGlsZSAxOgotICAgICAgICByPXYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICBuYW1lPXIuU3RyaW5nRGF0YSgxKQotICAgICAgICBpZiBjdXJ0YWJsZSAhPSBuYW1lOgotICAgICAgICAgICAgZi53cml0ZSgiXG4lcyA9IFRhYmxlKCclcycpXG4iICUgKG5hbWUsbmFtZSkpCi0gICAgICAgICAgICBjdXJ0YWJsZSA9IG5hbWUKLSAgICAgICAgICAgIHRhYmxlcy5hcHBlbmQobmFtZSkKLSAgICAgICAgZi53cml0ZSgiJXMuYWRkX2ZpZWxkKCVkLCclcycsJWQpXG4iICUKLSAgICAgICAgICAgICAgICAobmFtZSwgci5JbnRlZ2VyRGF0YSgyKSwgci5TdHJpbmdEYXRhKDMpLCByLkludGVnZXJEYXRhKDQpKSkKLSAgICB2LkNsb3NlKCkKLQotICAgIGYud3JpdGUoIlxudGFibGVzPVslc11cblxuIiAlICgiLCAiLmpvaW4odGFibGVzKSkpCi0KLSAgICAjIEZpbGwgdGhlIF9WYWxpZGF0aW9uIHRhYmxlCi0gICAgZi53cml0ZSgiX1ZhbGlkYXRpb25fcmVjb3JkcyA9IFtcbiIpCi0gICAgdiA9IHNjaGVtYS5PcGVuVmlldygiU0VMRUNUICogRlJPTSBfVmFsaWRhdGlvbiIpCi0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgd2hpbGUgMToKLSAgICAgICAgciA9IHYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICAjIFRhYmxlLCBDb2x1bW4sIE51bGxhYmxlCi0gICAgICAgIGYud3JpdGUoIiglcywlcywlcywiICUKLSAgICAgICAgICAgICAgICAoYHIuU3RyaW5nRGF0YSgxKWAsIGByLlN0cmluZ0RhdGEoMilgLCBgci5TdHJpbmdEYXRhKDMpYCkpCi0gICAgICAgIGRlZiBwdXRfaW50KGkpOgotICAgICAgICAgICAgaWYgci5Jc051bGwoaSk6Zi53cml0ZSgiTm9uZSwgIikKLSAgICAgICAgICAgIGVsc2U6Zi53cml0ZSgiJWQsIiAlIHIuSW50ZWdlckRhdGEoaSkpCi0gICAgICAgIGRlZiBwdXRfc3RyKGkpOgotICAgICAgICAgICAgaWYgci5Jc051bGwoaSk6Zi53cml0ZSgiTm9uZSwgIikKLSAgICAgICAgICAgIGVsc2U6Zi53cml0ZSgiJXMsIiAlIGByLlN0cmluZ0RhdGEoaSlgKQotICAgICAgICBwdXRfaW50KDQpICMgTWluVmFsdWUKLSAgICAgICAgcHV0X2ludCg1KSAjIE1heFZhbHVlCi0gICAgICAgIHB1dF9zdHIoNikgIyBLZXlUYWJsZQotICAgICAgICBwdXRfaW50KDcpICMgS2V5Q29sdW1uCi0gICAgICAgIHB1dF9zdHIoOCkgIyBDYXRlZ29yeQotICAgICAgICBwdXRfc3RyKDkpICMgU2V0Ci0gICAgICAgIHB1dF9zdHIoMTApIyBEZXNjcmlwdGlvbgotICAgICAgICBmLndyaXRlKCIpLFxuIikKLSAgICBmLndyaXRlKCJdXG5cbiIpCi0KLSAgICBmLmNsb3NlKCkKLQotZGVmIGdlbl9zZXF1ZW5jZShkZXN0cGF0aCwgbXNpcGF0aCk6Ci0gICAgZGlyID0gb3MucGF0aC5kaXJuYW1lKGRlc3RwYXRoKQotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICBzZXFtc2kgPSBkLk9wZW5EYXRhYmFzZShtc2lwYXRoLAotICAgICAgICAgICAgd2luMzJjb20uY2xpZW50LmNvbnN0YW50cy5tc2lPcGVuRGF0YWJhc2VNb2RlUmVhZE9ubHkpCi0KLSAgICB2ID0gc2VxbXNpLk9wZW5WaWV3KCJTRUxFQ1QgKiBGUk9NIF9UYWJsZXMiKTsKLSAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICBmID0gb3BlbihkZXN0cGF0aCwgInciKQotICAgIHByaW50ID4+ZiwgImltcG9ydCBtc2lsaWIsb3M7ZGlybmFtZT1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIgotICAgIHRhYmxlcyA9IFtdCi0gICAgd2hpbGUgMToKLSAgICAgICAgciA9IHYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjpicmVhawotICAgICAgICB0YWJsZSA9IHIuU3RyaW5nRGF0YSgxKQotICAgICAgICB0YWJsZXMuYXBwZW5kKHRhYmxlKQotICAgICAgICBmLndyaXRlKCIlcyA9IFtcbiIgJSB0YWJsZSkKLSAgICAgICAgdjEgPSBzZXFtc2kuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gYCVzYCIgJSB0YWJsZSkKLSAgICAgICAgdjEuRXhlY3V0ZShOb25lKQotICAgICAgICBpbmZvID0gdjEuQ29sdW1uSW5mbyhjb25zdGFudHMubXNpQ29sdW1uSW5mb1R5cGVzKQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgciA9IHYxLkZldGNoKCkKLSAgICAgICAgICAgIGlmIG5vdCByOmJyZWFrCi0gICAgICAgICAgICByZWMgPSBbXQotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSxyLkZpZWxkQ291bnQrMSk6Ci0gICAgICAgICAgICAgICAgaWYgci5Jc051bGwoaSk6Ci0gICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgICAgICBlbGlmIGluZm8uU3RyaW5nRGF0YShpKVswXSBpbiAiaUkiOgotICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKHIuSW50ZWdlckRhdGEoaSkpCi0gICAgICAgICAgICAgICAgZWxpZiBpbmZvLlN0cmluZ0RhdGEoaSlbMF0gaW4gInNsU0wiOgotICAgICAgICAgICAgICAgICAgICByZWMuYXBwZW5kKHIuU3RyaW5nRGF0YShpKSkKLSAgICAgICAgICAgICAgICBlbGlmIGluZm8uU3RyaW5nRGF0YShpKVswXT09InYiOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gci5EYXRhU2l6ZShpKQotICAgICAgICAgICAgICAgICAgICBieXRlcyA9IHIuUmVhZFN0cmVhbShpLCBzaXplLCBjb25zdGFudHMubXNpUmVhZFN0cmVhbUJ5dGVzKQotICAgICAgICAgICAgICAgICAgICBieXRlcyA9IGJ5dGVzLmVuY29kZSgibGF0aW4tMSIpICMgYmluYXJ5IGRhdGEgcmVwcmVzZW50ZWQgImFzLWlzIgotICAgICAgICAgICAgICAgICAgICBpZiB0YWJsZSA9PSAiQmluYXJ5IjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcmVjWzBdKyIuYmluIgotICAgICAgICAgICAgICAgICAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oZGlyLGZuYW1lKSwid2IiKS53cml0ZShieXRlcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoQmluYXJ5KGZuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoYnl0ZXMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgIlVuc3VwcG9ydGVkIGNvbHVtbiB0eXBlIiwgaW5mby5TdHJpbmdEYXRhKGkpCi0gICAgICAgICAgICBmLndyaXRlKHJlcHIodHVwbGUocmVjKSkrIixcbiIpCi0gICAgICAgIHYxLkNsb3NlKCkKLSAgICAgICAgZi53cml0ZSgiXVxuXG4iKQotICAgIHYuQ2xvc2UoKQotICAgIGYud3JpdGUoInRhYmxlcz0lc1xuIiAlIHJlcHIobWFwKHN0cix0YWJsZXMpKSkKLSAgICBmLmNsb3NlKCkKLQotY2xhc3MgX1Vuc3BlY2lmaWVkOnBhc3MKLWRlZiBjaGFuZ2Vfc2VxdWVuY2Uoc2VxLCBhY3Rpb24sIHNlcW5vPV9VbnNwZWNpZmllZCwgY29uZCA9IF9VbnNwZWNpZmllZCk6Ci0gICAgIkNoYW5nZSB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIGFuIGFjdGlvbiBpbiBhIHNlcXVlbmNlIGxpc3QiCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNlcSkpOgotICAgICAgICBpZiBzZXFbaV1bMF0gPT0gYWN0aW9uOgotICAgICAgICAgICAgaWYgY29uZCBpcyBfVW5zcGVjaWZpZWQ6Ci0gICAgICAgICAgICAgICAgY29uZCA9IHNlcVtpXVsxXQotICAgICAgICAgICAgaWYgc2Vxbm8gaXMgX1Vuc3BlY2lmaWVkOgotICAgICAgICAgICAgICAgIHNlcW5vID0gc2VxW2ldWzJdCi0gICAgICAgICAgICBzZXFbaV0gPSAoYWN0aW9uLCBjb25kLCBzZXFubykKLSAgICAgICAgICAgIHJldHVybgotICAgIHJhaXNlIFZhbHVlRXJyb3IsICJBY3Rpb24gbm90IGZvdW5kIGluIHNlcXVlbmNlIgotCi1kZWYgYWRkX2RhdGEoZGIsIHRhYmxlLCB2YWx1ZXMpOgotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICB2ID0gZGIuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gYCVzYCIgJSB0YWJsZSkKLSAgICBjb3VudCA9IHYuQ29sdW1uSW5mbygwKS5GaWVsZENvdW50Ci0gICAgciA9IGQuQ3JlYXRlUmVjb3JkKGNvdW50KQotICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6Ci0gICAgICAgIGFzc2VydCBsZW4odmFsdWUpID09IGNvdW50LCB2YWx1ZQotICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCk6Ci0gICAgICAgICAgICBmaWVsZCA9IHZhbHVlW2ldCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpZWxkLCAoaW50LCBsb25nKSk6Ci0gICAgICAgICAgICAgICAgci5TZXRJbnRlZ2VyRGF0YShpKzEsZmllbGQpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmllbGQsIGJhc2VzdHJpbmcpOgotICAgICAgICAgICAgICAgIHIuU2V0U3RyaW5nRGF0YShpKzEsZmllbGQpCi0gICAgICAgICAgICBlbGlmIGZpZWxkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpZWxkLCBCaW5hcnkpOgotICAgICAgICAgICAgICAgIHIuU2V0U3RyZWFtKGkrMSwgZmllbGQubmFtZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAiVW5zdXBwb3J0ZWQgdHlwZSAlcyIgJSBmaWVsZC5fX2NsYXNzX18uX19uYW1lX18KLSAgICAgICAgdi5Nb2RpZnkod2luMzJjb20uY2xpZW50LmNvbnN0YW50cy5tc2lWaWV3TW9kaWZ5SW5zZXJ0LCByKQotICAgICAgICByLkNsZWFyRGF0YSgpCi0gICAgdi5DbG9zZSgpCi0KLWRlZiBhZGRfc3RyZWFtKGRiLCBuYW1lLCBwYXRoKToKLSAgICBkID0gTWFrZUluc3RhbGxlcigpCi0gICAgdiA9IGRiLk9wZW5WaWV3KCJJTlNFUlQgSU5UTyBfU3RyZWFtcyAoTmFtZSwgRGF0YSkgVkFMVUVTICgnJXMnLCA/KSIgJSBuYW1lKQotICAgIHIgPSBkLkNyZWF0ZVJlY29yZCgxKQotICAgIHIuU2V0U3RyZWFtKDEsIHBhdGgpCi0gICAgdi5FeGVjdXRlKHIpCi0gICAgdi5DbG9zZSgpCi0KLWRlZiBpbml0X2RhdGFiYXNlKG5hbWUsIHNjaGVtYSwKLSAgICAgICAgICAgICAgICAgIFByb2R1Y3ROYW1lLCBQcm9kdWN0Q29kZSwgUHJvZHVjdFZlcnNpb24sCi0gICAgICAgICAgICAgICAgICBNYW51ZmFjdHVyZXIsCi0gICAgICAgICAgICAgICAgICByZXF1ZXN0X3VhYyA9IEZhbHNlKToKLSAgICB0cnk6Ci0gICAgICAgIG9zLnVubGluayhuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCi0gICAgUHJvZHVjdENvZGUgPSBQcm9kdWN0Q29kZS51cHBlcigpCi0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgICMgQ3JlYXRlIHRoZSBkYXRhYmFzZQotICAgIGRiID0gZC5PcGVuRGF0YWJhc2UobmFtZSwKLSAgICAgICAgIHdpbjMyY29tLmNsaWVudC5jb25zdGFudHMubXNpT3BlbkRhdGFiYXNlTW9kZUNyZWF0ZSkKLSAgICAjIENyZWF0ZSB0aGUgdGFibGVzCi0gICAgZm9yIHQgaW4gc2NoZW1hLnRhYmxlczoKLSAgICAgICAgdC5jcmVhdGUoZGIpCi0gICAgIyBGaWxsIHRoZSB2YWxpZGF0aW9uIHRhYmxlCi0gICAgYWRkX2RhdGEoZGIsICJfVmFsaWRhdGlvbiIsIHNjaGVtYS5fVmFsaWRhdGlvbl9yZWNvcmRzKQotICAgICMgSW5pdGlhbGl6ZSB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbiwgYWxsb3dpbmcgYXQgbW9zdCAyMCBwcm9wZXJ0aWVzCi0gICAgc2kgPSBkYi5HZXRTdW1tYXJ5SW5mb3JtYXRpb24oMjApCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1RJVExFLCAiSW5zdGFsbGF0aW9uIERhdGFiYXNlIikKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfU1VCSkVDVCwgUHJvZHVjdE5hbWUpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX0FVVEhPUiwgTWFudWZhY3R1cmVyKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9URU1QTEFURSwgbXNpX3R5cGUpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1JFVk5VTUJFUiwgZ2VuX3V1aWQoKSkKLSAgICBpZiByZXF1ZXN0X3VhYzoKLSAgICAgICAgd2MgPSAyICMgbG9uZyBmaWxlIG5hbWVzLCBjb21wcmVzc2VkLCBvcmlnaW5hbCBtZWRpYQotICAgIGVsc2U6Ci0gICAgICAgIHdjID0gMiB8IDggIyArbmV2ZXIgaW52b2tlIFVBQwotICAgIHNpLlNldFByb3BlcnR5KFBJRF9XT1JEQ09VTlQsIHdjKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9QQUdFQ09VTlQsIDIwMCkKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfQVBQTkFNRSwgIlB5dGhvbiBNU0kgTGlicmFyeSIpCi0gICAgIyBYWFggbW9yZSBwcm9wZXJ0aWVzCi0gICAgc2kuUGVyc2lzdCgpCi0gICAgYWRkX2RhdGEoZGIsICJQcm9wZXJ0eSIsIFsKLSAgICAgICAgKCJQcm9kdWN0TmFtZSIsIFByb2R1Y3ROYW1lKSwKLSAgICAgICAgKCJQcm9kdWN0Q29kZSIsIFByb2R1Y3RDb2RlKSwKLSAgICAgICAgKCJQcm9kdWN0VmVyc2lvbiIsIFByb2R1Y3RWZXJzaW9uKSwKLSAgICAgICAgKCJNYW51ZmFjdHVyZXIiLCBNYW51ZmFjdHVyZXIpLAotICAgICAgICAoIlByb2R1Y3RMYW5ndWFnZSIsICIxMDMzIildKQotICAgIGRiLkNvbW1pdCgpCi0gICAgcmV0dXJuIGRiCi0KLWRlZiBhZGRfdGFibGVzKGRiLCBtb2R1bGUpOgotICAgIGZvciB0YWJsZSBpbiBtb2R1bGUudGFibGVzOgotICAgICAgICBhZGRfZGF0YShkYiwgdGFibGUsIGdldGF0dHIobW9kdWxlLCB0YWJsZSkpCi0KLWRlZiBtYWtlX2lkKHN0cik6Ci0gICAgI3N0ciA9IHN0ci5yZXBsYWNlKCIuIiwgIl8iKSAjIGNvbG9ucyBhcmUgYWxsb3dlZAotICAgIHN0ciA9IHN0ci5yZXBsYWNlKCIgIiwgIl8iKQotICAgIHN0ciA9IHN0ci5yZXBsYWNlKCItIiwgIl8iKQotICAgIHN0ciA9IHN0ci5yZXBsYWNlKCIrIiwgIl8iKQotICAgIGlmIHN0clswXSBpbiBzdHJpbmcuZGlnaXRzOgotICAgICAgICBzdHIgPSAiXyIrc3RyCi0gICAgYXNzZXJ0IHJlLm1hdGNoKCJeW0EtWmEtel9dW0EtWmEtejAtOV8uXSokIiwgc3RyKSwgIkZJTEUiK3N0cgotICAgIHJldHVybiBzdHIKLQotZGVmIGdlbl91dWlkKCk6Ci0gICAgcmV0dXJuIHN0cihweXRob25jb20uQ3JlYXRlR3VpZCgpKQotCi1jbGFzcyBDQUI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuZmlsZXMgPSBbXQotICAgICAgICBzZWxmLmZpbGVuYW1lcyA9IHNldHMuU2V0KCkKLSAgICAgICAgc2VsZi5pbmRleCA9IDAKLQotICAgIGRlZiBnZW5faWQoc2VsZiwgZGlyLCBmaWxlKToKLSAgICAgICAgbG9naWNhbCA9IF9sb2dpY2FsID0gbWFrZV9pZChmaWxlKQotICAgICAgICBwb3MgPSAxCi0gICAgICAgIHdoaWxlIGxvZ2ljYWwgaW4gc2VsZi5maWxlbmFtZXM6Ci0gICAgICAgICAgICBsb2dpY2FsID0gIiVzLiVkIiAlIChfbG9naWNhbCwgcG9zKQotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgc2VsZi5maWxlbmFtZXMuYWRkKGxvZ2ljYWwpCi0gICAgICAgIHJldHVybiBsb2dpY2FsCi0KLSAgICBkZWYgYXBwZW5kKHNlbGYsIGZ1bGwsIGZpbGUsIGxvZ2ljYWwgPSBOb25lKToKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmdWxsKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgbG9naWNhbDoKLSAgICAgICAgICAgIGxvZ2ljYWwgPSBzZWxmLmdlbl9pZChkaXIsIGZpbGUpCi0gICAgICAgIHNlbGYuaW5kZXggKz0gMQotICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoZnVsbCwgbG9naWNhbCkpCi0gICAgICAgIHJldHVybiBzZWxmLmluZGV4LCBsb2dpY2FsCi0KLSAgICBkZWYgY29tbWl0KHNlbGYsIGRiKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYubmFtZSsiLmNhYiIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBfbXNpLkZDSUNyZWF0ZShzZWxmLm5hbWUrIi5jYWIiLCBzZWxmLmZpbGVzKQotICAgICAgICBhZGRfZGF0YShkYiwgIk1lZGlhIiwKLSAgICAgICAgICAgICAgICBbKDEsIHNlbGYuaW5kZXgsIE5vbmUsICIjIitzZWxmLm5hbWUsIE5vbmUsIE5vbmUpXSkKLSAgICAgICAgYWRkX3N0cmVhbShkYiwgc2VsZi5uYW1lLCBzZWxmLm5hbWUrIi5jYWIiKQotICAgICAgICBvcy51bmxpbmsoc2VsZi5uYW1lKyIuY2FiIikKLSAgICAgICAgZGIuQ29tbWl0KCkKLQotX2RpcmVjdG9yaWVzID0gc2V0cy5TZXQoKQotY2xhc3MgRGlyZWN0b3J5OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYiwgY2FiLCBiYXNlZGlyLCBwaHlzaWNhbCwgX2xvZ2ljYWwsIGRlZmF1bHQsIGNvbXBvbmVudGZsYWdzPU5vbmUpOgotICAgICAgICAiIiJDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGluIHRoZSBEaXJlY3RvcnkgdGFibGUuIFRoZXJlIGlzIGEgY3VycmVudCBjb21wb25lbnQKLSAgICAgICAgYXQgZWFjaCBwb2ludCBpbiB0aW1lIGZvciB0aGUgZGlyZWN0b3J5LCB3aGljaCBpcyBlaXRoZXIgZXhwbGljaXRseSBjcmVhdGVkCi0gICAgICAgIHRocm91Z2ggc3RhcnRfY29tcG9uZW50LCBvciBpbXBsaWNpdGx5IHdoZW4gZmlsZXMgYXJlIGFkZGVkIGZvciB0aGUgZmlyc3QKLSAgICAgICAgdGltZS4gRmlsZXMgYXJlIGFkZGVkIGludG8gdGhlIGN1cnJlbnQgY29tcG9uZW50LCBhbmQgaW50byB0aGUgY2FiIGZpbGUuCi0gICAgICAgIFRvIGNyZWF0ZSBhIGRpcmVjdG9yeSwgYSBiYXNlIGRpcmVjdG9yeSBvYmplY3QgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIChjYW4gYmUKLSAgICAgICAgTm9uZSksIHRoZSBwYXRoIHRvIHRoZSBwaHlzaWNhbCBkaXJlY3RvcnksIGFuZCBhIGxvZ2ljYWwgZGlyZWN0b3J5IG5hbWUuCi0gICAgICAgIERlZmF1bHQgc3BlY2lmaWVzIHRoZSBEZWZhdWx0RGlyIHNsb3QgaW4gdGhlIGRpcmVjdG9yeSB0YWJsZS4gY29tcG9uZW50ZmxhZ3MKLSAgICAgICAgc3BlY2lmaWVzIHRoZSBkZWZhdWx0IGZsYWdzIHRoYXQgbmV3IGNvbXBvbmVudHMgZ2V0LiIiIgotICAgICAgICBpbmRleCA9IDEKLSAgICAgICAgX2xvZ2ljYWwgPSBtYWtlX2lkKF9sb2dpY2FsKQotICAgICAgICBsb2dpY2FsID0gX2xvZ2ljYWwKLSAgICAgICAgd2hpbGUgbG9naWNhbCBpbiBfZGlyZWN0b3JpZXM6Ci0gICAgICAgICAgICBsb2dpY2FsID0gIiVzJWQiICUgKF9sb2dpY2FsLCBpbmRleCkKLSAgICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgX2RpcmVjdG9yaWVzLmFkZChsb2dpY2FsKQotICAgICAgICBzZWxmLmRiID0gZGIKLSAgICAgICAgc2VsZi5jYWIgPSBjYWIKLSAgICAgICAgc2VsZi5iYXNlZGlyID0gYmFzZWRpcgotICAgICAgICBzZWxmLnBoeXNpY2FsID0gcGh5c2ljYWwKLSAgICAgICAgc2VsZi5sb2dpY2FsID0gbG9naWNhbAotICAgICAgICBzZWxmLmNvbXBvbmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcyA9IHt9Ci0gICAgICAgIHNlbGYuaWRzID0gc2V0cy5TZXQoKQotICAgICAgICBzZWxmLmtleWZpbGVzID0ge30KLSAgICAgICAgc2VsZi5jb21wb25lbnRmbGFncyA9IGNvbXBvbmVudGZsYWdzCi0gICAgICAgIGlmIGJhc2VkaXI6Ci0gICAgICAgICAgICBzZWxmLmFic29sdXRlID0gb3MucGF0aC5qb2luKGJhc2VkaXIuYWJzb2x1dGUsIHBoeXNpY2FsKQotICAgICAgICAgICAgYmxvZ2ljYWwgPSBiYXNlZGlyLmxvZ2ljYWwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYWJzb2x1dGUgPSBwaHlzaWNhbAotICAgICAgICAgICAgYmxvZ2ljYWwgPSBOb25lCi0gICAgICAgICMgaW5pdGlhbGx5IGFzc3VtZSB0aGF0IGFsbCBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhcmUgdW5wYWNrYWdlZAotICAgICAgICAjIGFzIGZpbGVzIGZyb20gc2VsZi5hYnNvbHV0ZSBnZXQgYWRkZWQsIHRoaXMgc2V0IGlzIHJlZHVjZWQKLSAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzID0gc2V0KCkKLSAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihzZWxmLmFic29sdXRlKToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLmFic29sdXRlLCBmKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLmFkZChmKQotICAgICAgICBhZGRfZGF0YShkYiwgIkRpcmVjdG9yeSIsIFsobG9naWNhbCwgYmxvZ2ljYWwsIGRlZmF1bHQpXSkKLQotICAgIGRlZiBzdGFydF9jb21wb25lbnQoc2VsZiwgY29tcG9uZW50ID0gTm9uZSwgZmVhdHVyZSA9IE5vbmUsIGZsYWdzID0gTm9uZSwga2V5ZmlsZSA9IE5vbmUsIHV1aWQ9Tm9uZSk6Ci0gICAgICAgICIiIkFkZCBhbiBlbnRyeSB0byB0aGUgQ29tcG9uZW50IHRhYmxlLCBhbmQgbWFrZSB0aGlzIGNvbXBvbmVudCB0aGUgY3VycmVudCBmb3IgdGhpcwotICAgICAgICBkaXJlY3RvcnkuIElmIG5vIGNvbXBvbmVudCBuYW1lIGlzIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgaXMgdXNlZC4gSWYgbm8gZmVhdHVyZQotICAgICAgICBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgZmVhdHVyZSBpcyB1c2VkLiBJZiBubyBmbGFncyBhcmUgZ2l2ZW4sIHRoZSBkaXJlY3RvcnkncyBkZWZhdWx0Ci0gICAgICAgIGZsYWdzIGFyZSB1c2VkLiBJZiBubyBrZXlmaWxlIGlzIGdpdmVuLCB0aGUgS2V5UGF0aCBpcyBsZWZ0IG51bGwgaW4gdGhlIENvbXBvbmVudAotICAgICAgICB0YWJsZS4iIiIKLSAgICAgICAgaWYgZmxhZ3MgaXMgTm9uZToKLSAgICAgICAgICAgIGZsYWdzID0gc2VsZi5jb21wb25lbnRmbGFncwotICAgICAgICBpZiB1dWlkIGlzIE5vbmU6Ci0gICAgICAgICAgICB1dWlkID0gZ2VuX3V1aWQoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXVpZCA9IHV1aWQudXBwZXIoKQotICAgICAgICBpZiBjb21wb25lbnQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbXBvbmVudCA9IHNlbGYubG9naWNhbAotICAgICAgICBzZWxmLmNvbXBvbmVudCA9IGNvbXBvbmVudAotICAgICAgICBpZiBXaW42NDoKLSAgICAgICAgICAgIGZsYWdzIHw9IDI1NgotICAgICAgICBpZiBrZXlmaWxlOgotICAgICAgICAgICAga2V5aWQgPSBzZWxmLmNhYi5nZW5faWQoc2VsZi5hYnNvbHV0ZSwga2V5ZmlsZSkKLSAgICAgICAgICAgIHNlbGYua2V5ZmlsZXNba2V5ZmlsZV0gPSBrZXlpZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAga2V5aWQgPSBOb25lCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDb21wb25lbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyhjb21wb25lbnQsIHV1aWQsIHNlbGYubG9naWNhbCwgZmxhZ3MsIE5vbmUsIGtleWlkKV0pCi0gICAgICAgIGlmIGZlYXR1cmUgaXMgTm9uZToKLSAgICAgICAgICAgIGZlYXR1cmUgPSBjdXJyZW50X2ZlYXR1cmUKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkZlYXR1cmVDb21wb25lbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsoZmVhdHVyZS5pZCwgY29tcG9uZW50KV0pCi0KLSAgICBkZWYgbWFrZV9zaG9ydChzZWxmLCBmaWxlKToKLSAgICAgICAgbG9uZyA9IGZpbGUKLSAgICAgICAgZmlsZSA9IHJlLnN1YihyJ1tcP3w+PDovKiIrLDs9XFtcXV0nLCAnXycsIGZpbGUpICMgcmVzdHJpY3Rpb25zIG9uIHNob3J0IG5hbWVzCi0gICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIsIDEpCi0gICAgICAgIGlmIGxlbihwYXJ0cyk+MToKLSAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWzFdLnVwcGVyKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9ICcnCi0gICAgICAgIHByZWZpeCA9IHBhcnRzWzBdLnVwcGVyKCkKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgJy4nIG5vdCBpbiBzdWZmaXggYW5kIGxlbihzdWZmaXgpIDw9IDM6Ci0gICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeCsiLiIrc3VmZml4Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBwcmVmaXgKLSAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzLCAoZmlsZSwgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6Nl0KLSAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICAjIGxhc3QgdGhyZWUgY2hhcmFjdGVycyBvZiBsYXN0IHN1ZmZpeAotICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHN1ZmZpeC5yc3BsaXQoJy4nKVstMV1bOjNdCi0gICAgICAgICAgICBwb3MgPSAxCi0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICAgICAgZmlsZSA9ICIlc34lZC4lcyIgJSAocHJlZml4LCBwb3MsIHN1ZmZpeCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmaWxlID0gIiVzfiVkIiAlIChwcmVmaXgsIHBvcykKLSAgICAgICAgICAgICAgICBpZiBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzOiBicmVhawotICAgICAgICAgICAgICAgIHBvcyArPSAxCi0gICAgICAgICAgICAgICAgYXNzZXJ0IHBvcyA8IDEwMDAwCi0gICAgICAgICAgICAgICAgaWYgcG9zIGluICgxMCwgMTAwLCAxMDAwKToKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gcHJlZml4WzotMV0KLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSA9IGxvbmcKLSAgICAgICAgcmV0dXJuIGZpbGUKLQotICAgIGRlZiBhZGRfZmlsZShzZWxmLCBmaWxlLCBzcmM9Tm9uZSwgdmVyc2lvbj1Ob25lLCBsYW5ndWFnZT1Ob25lKToKLSAgICAgICAgIiIiQWRkIGEgZmlsZSB0byB0aGUgY3VycmVudCBjb21wb25lbnQgb2YgdGhlIGRpcmVjdG9yeSwgc3RhcnRpbmcgYSBuZXcgb25lCi0gICAgICAgIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnQgY29tcG9uZW50LiBCeSBkZWZhdWx0LCB0aGUgZmlsZSBuYW1lIGluIHRoZSBzb3VyY2UKLSAgICAgICAgYW5kIHRoZSBmaWxlIHRhYmxlIHdpbGwgYmUgaWRlbnRpY2FsLiBJZiB0aGUgc3JjIGZpbGUgaXMgc3BlY2lmaWVkLCBpdCBpcwotICAgICAgICBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuIE9wdGlvbmFsbHksIGEgdmVyc2lvbiBhbmQgYQotICAgICAgICBsYW5ndWFnZSBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgZW50cnkgaW4gdGhlIEZpbGUgdGFibGUuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmLmNvbXBvbmVudDoKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfY29tcG9uZW50KHNlbGYubG9naWNhbCwgY3VycmVudF9mZWF0dXJlKQotICAgICAgICBpZiBub3Qgc3JjOgotICAgICAgICAgICAgIyBBbGxvdyByZWxhdGl2ZSBwYXRocyBmb3IgZmlsZSBpZiBzcmMgaXMgbm90IHNwZWNpZmllZAotICAgICAgICAgICAgc3JjID0gZmlsZQotICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZSkKLSAgICAgICAgYWJzb2x1dGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5hYnNvbHV0ZSwgc3JjKQotICAgICAgICBpZiBhYnNvbHV0ZS5zdGFydHN3aXRoKHNlbGYuYWJzb2x1dGUpOgotICAgICAgICAgICAgIyBtYXJrIGZpbGUgYXMgcGFja2FnZWQKLSAgICAgICAgICAgIHJlbGF0aXZlID0gYWJzb2x1dGVbbGVuKHNlbGYuYWJzb2x1dGUpKzE6XQotICAgICAgICAgICAgaWYgcmVsYXRpdmUgaW4gc2VsZi51bnBhY2thZ2VkX2ZpbGVzOgotICAgICAgICAgICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5yZW1vdmUocmVsYXRpdmUpCi0gICAgICAgIGFzc2VydCBub3QgcmUuc2VhcmNoKHInW1w/fD48Oi8qXSInLCBmaWxlKSAjIHJlc3RyaWN0aW9ucyBvbiBsb25nIG5hbWVzCi0gICAgICAgIGlmIHNlbGYua2V5ZmlsZXMuaGFzX2tleShmaWxlKToKLSAgICAgICAgICAgIGxvZ2ljYWwgPSBzZWxmLmtleWZpbGVzW2ZpbGVdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dpY2FsID0gTm9uZQotICAgICAgICBzZXF1ZW5jZSwgbG9naWNhbCA9IHNlbGYuY2FiLmFwcGVuZChhYnNvbHV0ZSwgZmlsZSwgbG9naWNhbCkKLSAgICAgICAgYXNzZXJ0IGxvZ2ljYWwgbm90IGluIHNlbGYuaWRzCi0gICAgICAgIHNlbGYuaWRzLmFkZChsb2dpY2FsKQotICAgICAgICBzaG9ydCA9IHNlbGYubWFrZV9zaG9ydChmaWxlKQotICAgICAgICBmdWxsID0gIiVzfCVzIiAlIChzaG9ydCwgZmlsZSkKLSAgICAgICAgZmlsZXNpemUgPSBvcy5zdGF0KGFic29sdXRlKS5zdF9zaXplCi0gICAgICAgICMgY29uc3RhbnRzLm1zaWRiRmlsZUF0dHJpYnV0ZXNWaXRhbAotICAgICAgICAjIENvbXByZXNzZWQgb21pdHRlZCwgc2luY2UgaXQgaXMgdGhlIGRhdGFiYXNlIGRlZmF1bHQKLSAgICAgICAgIyBjb3VsZCBhZGQgci9vLCBzeXN0ZW0sIGhpZGRlbgotICAgICAgICBhdHRyaWJ1dGVzID0gNTEyCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJGaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsobG9naWNhbCwgc2VsZi5jb21wb25lbnQsIGZ1bGwsIGZpbGVzaXplLCB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLCBhdHRyaWJ1dGVzLCBzZXF1ZW5jZSldKQotICAgICAgICBpZiBub3QgdmVyc2lvbjoKLSAgICAgICAgICAgICMgQWRkIGhhc2ggaWYgdGhlIGZpbGUgaXMgbm90IHZlcnNpb25lZAotICAgICAgICAgICAgZmlsZWhhc2ggPSBNYWtlSW5zdGFsbGVyKCkuRmlsZUhhc2goYWJzb2x1dGUsIDApCi0gICAgICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiTXNpRmlsZUhhc2giLAotICAgICAgICAgICAgICAgICAgICAgWyhsb2dpY2FsLCAwLCBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoMiksIGZpbGVoYXNoLkludGVnZXJEYXRhKDMpLAotICAgICAgICAgICAgICAgICAgICAgICBmaWxlaGFzaC5JbnRlZ2VyRGF0YSg0KSldKQotICAgICAgICAjIEF1dG9tYXRpY2FsbHkgcmVtb3ZlIC5weWMvLnB5byBmaWxlcyBvbiB1bmluc3RhbGwgKDIpCi0gICAgICAgICMgWFhYOiBhZGRpbmcgc28gbWFueSBSZW1vdmVGaWxlIGVudHJpZXMgbWFrZXMgaW5zdGFsbGVyIHVuYmVsaWV2YWJseQotICAgICAgICAjIHNsb3cuIFNvIGluc3RlYWQsIHdlIGhhdmUgdG8gdXNlIHdpbGRjYXJkIHJlbW92ZSBlbnRyaWVzCi0gICAgICAgICMgaWYgZmlsZS5lbmRzd2l0aCgiLnB5Iik6Ci0gICAgICAgICMgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJSZW1vdmVGaWxlIiwKLSAgICAgICAgIyAgICAgICAgICAgICAgWyhsb2dpY2FsKyJjIiwgc2VsZi5jb21wb25lbnQsICIlc0N8JXNjIiAlIChzaG9ydCwgZmlsZSksCi0gICAgICAgICMgICAgICAgICAgICAgICAgc2VsZi5sb2dpY2FsLCAyKSwKLSAgICAgICAgIyAgICAgICAgICAgICAgIChsb2dpY2FsKyJvIiwgc2VsZi5jb21wb25lbnQsICIlc098JXNvIiAlIChzaG9ydCwgZmlsZSksCi0gICAgICAgICMgICAgICAgICAgICAgICAgc2VsZi5sb2dpY2FsLCAyKV0pCi0KLSAgICBkZWYgZ2xvYihzZWxmLCBwYXR0ZXJuLCBleGNsdWRlID0gTm9uZSk6Ci0gICAgICAgICIiIkFkZCBhIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IGFzIHNwZWNpZmllZCBpbiB0aGUKLSAgICAgICAgZ2xvYiBwYXR0ZXJuLiBJbmRpdmlkdWFsIGZpbGVzIGNhbiBiZSBleGNsdWRlZCBpbiB0aGUgZXhjbHVkZSBsaXN0LiIiIgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xvYjEoc2VsZi5hYnNvbHV0ZSwgcGF0dGVybikKLSAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICBpZiBleGNsdWRlIGFuZCBmIGluIGV4Y2x1ZGU6IGNvbnRpbnVlCi0gICAgICAgICAgICBzZWxmLmFkZF9maWxlKGYpCi0gICAgICAgIHJldHVybiBmaWxlcwotCi0gICAgZGVmIHJlbW92ZV9weWMoc2VsZik6Ci0gICAgICAgICJSZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIGZyb20gX19weWNhY2hlX18gb24gdW5pbnN0YWxsIgotICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLmxvZ2ljYWwgKyAiX3B5Y2FjaGUiCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJEaXJlY3RvcnkiLCBbKGRpcmVjdG9yeSwgc2VsZi5sb2dpY2FsLCAiX19QWUNBfjF8X19weWNhY2hlX18iKV0pCi0gICAgICAgIGZsYWdzID0gMjU2IGlmIFdpbjY0IGVsc2UgMAotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiQ29tcG9uZW50IiwKLSAgICAgICAgICAgICAgICBbKGRpcmVjdG9yeSwgZ2VuX3V1aWQoKSwgZGlyZWN0b3J5LCBmbGFncywgTm9uZSwgTm9uZSldKQotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiRmVhdHVyZUNvbXBvbmVudHMiLCBbKGN1cnJlbnRfZmVhdHVyZS5pZCwgZGlyZWN0b3J5KV0pCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDcmVhdGVGb2xkZXIiLCBbKGRpcmVjdG9yeSwgZGlyZWN0b3J5KV0pCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJSZW1vdmVGaWxlIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmNvbXBvbmVudCwgc2VsZi5jb21wb25lbnQsICIqLioiLCBkaXJlY3RvcnksIDIpLAotICAgICAgICAgICAgICAgICBdKQotCi0gICAgZGVmIHJlbW92ZWZpbGUoc2VsZiwga2V5LCBwYXR0ZXJuKToKLSAgICAgICAgIkFkZCBhIFJlbW92ZUZpbGUgZW50cnkiCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJSZW1vdmVGaWxlIiwgWyhzZWxmLmNvbXBvbmVudCtrZXksIHNlbGYuY29tcG9uZW50LCBwYXR0ZXJuLCBzZWxmLmxvZ2ljYWwsIDIpXSkKLQotCi1jbGFzcyBGZWF0dXJlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYiwgaWQsIHRpdGxlLCBkZXNjLCBkaXNwbGF5LCBsZXZlbCA9IDEsCi0gICAgICAgICAgICAgICAgIHBhcmVudD1Ob25lLCBkaXJlY3RvcnkgPSBOb25lLCBhdHRyaWJ1dGVzPTApOgotICAgICAgICBzZWxmLmlkID0gaWQKLSAgICAgICAgaWYgcGFyZW50OgotICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LmlkCi0gICAgICAgIGFkZF9kYXRhKGRiLCAiRmVhdHVyZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbKGlkLCBwYXJlbnQsIHRpdGxlLCBkZXNjLCBkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCwgZGlyZWN0b3J5LCBhdHRyaWJ1dGVzKV0pCi0gICAgZGVmIHNldF9jdXJyZW50KHNlbGYpOgotICAgICAgICBnbG9iYWwgY3VycmVudF9mZWF0dXJlCi0gICAgICAgIGN1cnJlbnRfZmVhdHVyZSA9IHNlbGYKLQotY2xhc3MgQ29udHJvbDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGxnLCBuYW1lKToKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotCi0gICAgZGVmIGV2ZW50KHNlbGYsIGV2LCBhcmcsIGNvbmQgPSAiMSIsIG9yZGVyID0gTm9uZSk6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiQ29udHJvbEV2ZW50IiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmRsZy5uYW1lLCBzZWxmLm5hbWUsIGV2LCBhcmcsIGNvbmQsIG9yZGVyKV0pCi0KLSAgICBkZWYgbWFwcGluZyhzZWxmLCBldiwgYXR0cik6Ci0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiRXZlbnRNYXBwaW5nIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmRsZy5uYW1lLCBzZWxmLm5hbWUsIGV2LCBhdHRyKV0pCi0KLSAgICBkZWYgY29uZGl0aW9uKHNlbGYsIGFjdGlvbiwgY29uZGl0aW9uKToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kbGcuZGIsICJDb250cm9sQ29uZGl0aW9uIiwKLSAgICAgICAgICAgICAgICAgWyhzZWxmLmRsZy5uYW1lLCBzZWxmLm5hbWUsIGFjdGlvbiwgY29uZGl0aW9uKV0pCi0KLWNsYXNzIFJhZGlvQnV0dG9uR3JvdXAoQ29udHJvbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRsZywgbmFtZSwgcHJvcGVydHkpOgotICAgICAgICBzZWxmLmRsZyA9IGRsZwotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucHJvcGVydHkgPSBwcm9wZXJ0eQotICAgICAgICBzZWxmLmluZGV4ID0gMQotCi0gICAgZGVmIGFkZChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCB0ZXh0LCB2YWx1ZSA9IE5vbmUpOgotICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgdmFsdWUgPSBuYW1lCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGxnLmRiLCAiUmFkaW9CdXR0b24iLAotICAgICAgICAgICAgICAgICBbKHNlbGYucHJvcGVydHksIHNlbGYuaW5kZXgsIHZhbHVlLAotICAgICAgICAgICAgICAgICAgIHgsIHksIHcsIGgsIHRleHQsIE5vbmUpXSkKLSAgICAgICAgc2VsZi5pbmRleCArPSAxCi0KLWNsYXNzIERpYWxvZzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGIsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHIsIHRpdGxlLCBmaXJzdCwgZGVmYXVsdCwgY2FuY2VsKToKLSAgICAgICAgc2VsZi5kYiA9IGRiCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi54LCBzZWxmLnksIHNlbGYudywgc2VsZi5oID0geCx5LHcsaAotICAgICAgICBhZGRfZGF0YShkYiwgIkRpYWxvZyIsIFsobmFtZSwgeCx5LHcsaCxhdHRyLHRpdGxlLGZpcnN0LGRlZmF1bHQsY2FuY2VsKV0pCi0KLSAgICBkZWYgY29udHJvbChzZWxmLCBuYW1lLCB0eXBlLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0LCBoZWxwKToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNvbnRyb2wiLAotICAgICAgICAgICAgICAgICBbKHNlbGYubmFtZSwgbmFtZSwgdHlwZSwgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCwgaGVscCldKQotICAgICAgICByZXR1cm4gQ29udHJvbChzZWxmLCBuYW1lKQotCi0gICAgZGVmIHRleHQoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgYXR0ciwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIlRleHQiLCB4LCB5LCB3LCBoLCBhdHRyLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgdGV4dCwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiBiaXRtYXAoc2VsZiwgbmFtZSwgeCwgeSwgdywgaCwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2wobmFtZSwgIkJpdG1hcCIsIHgsIHksIHcsIGgsIDEsIE5vbmUsIHRleHQsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgbGluZShzZWxmLCBuYW1lLCB4LCB5LCB3LCBoKToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiTGluZSIsIHgsIHksIHcsIGgsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgcHVzaGJ1dHRvbihzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCB0ZXh0LCBuZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiUHVzaEJ1dHRvbiIsIHgsIHksIHcsIGgsIGF0dHIsIE5vbmUsIHRleHQsIG5leHQsIE5vbmUpCi0KLSAgICBkZWYgcmFkaW9ncm91cChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0KToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNvbnRyb2wiLAotICAgICAgICAgICAgICAgICBbKHNlbGYubmFtZSwgbmFtZSwgIlJhZGlvQnV0dG9uR3JvdXAiLAotICAgICAgICAgICAgICAgICAgIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQsIE5vbmUpXSkKLSAgICAgICAgcmV0dXJuIFJhZGlvQnV0dG9uR3JvdXAoc2VsZiwgbmFtZSwgcHJvcCkKLQotICAgIGRlZiBjaGVja2JveChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiQ2hlY2tCb3giLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0LCBOb25lKQotCi1kZWYgcGVfdHlwZShwYXRoKToKLSAgICBoZWFkZXIgPSBvcGVuKHBhdGgsICJyYiIpLnJlYWQoMTAwMCkKLSAgICAjIG9mZnNldCBvZiBQRSBoZWFkZXIgaXMgYXQgb2Zmc2V0IDB4M2MKLSAgICBwZV9vZmZzZXQgPSBzdHJ1Y3QudW5wYWNrKCI8aSIsIGhlYWRlclsweDNjOjB4NDBdKVswXQotICAgIGFzc2VydCBoZWFkZXJbcGVfb2Zmc2V0OnBlX29mZnNldCs0XSA9PSAiUEVcMFwwIgotICAgIG1hY2hpbmUgPSBzdHJ1Y3QudW5wYWNrKCI8SCIsIGhlYWRlcltwZV9vZmZzZXQrNDpwZV9vZmZzZXQrNl0pWzBdCi0gICAgcmV0dXJuIG1hY2hpbmUKLQotZGVmIHNldF9hcmNoX2Zyb21fZmlsZShwYXRoKToKLSAgICBnbG9iYWwgbXNpX3R5cGUsIFdpbjY0LCBhcmNoX2V4dAotICAgIG1hY2hpbmUgPSBwZV90eXBlKHBhdGgpCi0gICAgaWYgbWFjaGluZSA9PSAweDE0YzoKLSAgICAgICAgIyBpMzg2Ci0gICAgICAgIG1zaV90eXBlID0gIkludGVsIgotICAgICAgICBXaW42NCA9IDAKLSAgICAgICAgYXJjaF9leHQgPSAnJwotICAgIGVsaWYgbWFjaGluZSA9PSAweDIwMDoKLSAgICAgICAgIyBJdGFuaXVtCi0gICAgICAgIG1zaV90eXBlID0gIkludGVsNjQiCi0gICAgICAgIFdpbjY0ID0gMQotICAgICAgICBhcmNoX2V4dCA9ICcuaWE2NCcKLSAgICBlbGlmIG1hY2hpbmUgPT0gMHg4NjY0OgotICAgICAgICAjIEFNRDY0Ci0gICAgICAgIG1zaV90eXBlID0gIng2NCIKLSAgICAgICAgV2luNjQgPSAxCi0gICAgICAgIGFyY2hfZXh0ID0gJy5hbWQ2NCcKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgotICAgIG1zaV90eXBlICs9ICI7MTAzMyIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0LmMgYi9Ub29scy9tc2kvbXNpc3VwcG9ydC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmQyZWU0Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0jaW5jbHVkZSAid2luZG93cy5oIgotI2luY2x1ZGUgIm1zaXF1ZXJ5LmgiCi0KLS8qIFByaW50IGEgZGVidWcgbWVzc2FnZSB0byB0aGUgaW5zdGFsbGVyIGxvZyBmaWxlLgotICogVG8gc2VlIHRoZSBkZWJ1ZyBtZXNzYWdlcywgaW5zdGFsbCB3aXRoCi0gKiBtc2lleGVjIC9pIHB5dGhvbnh5Lm1zaSAvbCp2IHB5dGhvbi5sb2cKLSAqLwotc3RhdGljIFVJTlQgZGVidWcoTVNJSEFORExFIGhJbnN0YWxsLCBMUENTVFIgbXNnKQotewotICAgIE1TSUhBTkRMRSBoUmVjID0gTXNpQ3JlYXRlUmVjb3JkKDEpOwotICAgIGlmICghaFJlYyB8fCBNc2lSZWNvcmRTZXRTdHJpbmdBKGhSZWMsIDEsIG1zZykgIT0gRVJST1JfU1VDQ0VTUykgewotICAgICAgICByZXR1cm4gRVJST1JfSU5TVEFMTF9GQUlMVVJFOwotICAgIH0KLSAgICBNc2lQcm9jZXNzTWVzc2FnZShoSW5zdGFsbCwgSU5TVEFMTE1FU1NBR0VfSU5GTywgaFJlYyk7Ci0gICAgTXNpQ2xvc2VIYW5kbGUoaFJlYyk7Ci0gICAgcmV0dXJuIEVSUk9SX1NVQ0NFU1M7Ci19Ci0KLS8qIENoZWNrIHdoZXRoZXIgdGhlIFRBUkdFVERJUiBleGlzdHMgYW5kIGlzIGEgZGlyZWN0b3J5LgotICogU2V0IFRhcmdldEV4aXN0cyBhcHByb3ByaWF0ZWx5LgotICovCi1VSU5UIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBfX3N0ZGNhbGwgQ2hlY2tEaXIoTVNJSEFORExFIGhJbnN0YWxsKQotewotI2RlZmluZSBQU0laRSAxMDI0Ci0gICAgV0NIQVIgd3BhdGhbUFNJWkVdOwotICAgIGNoYXIgcGF0aFtQU0laRV07Ci0gICAgVUlOVCByZXN1bHQ7Ci0gICAgRFdPUkQgc2l6ZSA9IFBTSVpFOwotICAgIERXT1JEIGF0dHJpYnV0ZXM7Ci0KLQotICAgIHJlc3VsdCA9IE1zaUdldFByb3BlcnR5VyhoSW5zdGFsbCwgTCJUQVJHRVRESVIiLCB3cGF0aCwgJnNpemUpOwotICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB3cGF0aFtzaXplXSA9IEwnXDAnOwotICAgIHBhdGhbc2l6ZV0gPSBMJ1wwJzsKLQotICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cod3BhdGgpOwotICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTIHx8Ci0gICAgICAgICEoYXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpCi0gICAgewotICAgICAgICByZXR1cm4gTXNpU2V0UHJvcGVydHlBKGhJbnN0YWxsLCAiVGFyZ2V0RXhpc3RzIiwgIjAiKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gTXNpU2V0UHJvcGVydHlBKGhJbnN0YWxsLCAiVGFyZ2V0RXhpc3RzIiwgIjEiKTsKLSAgICB9Ci19Ci0KLS8qIFVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIFJFR0lTVFJZLnRjbCBjb21wb25lbnQgYWNjb3JkaW5nIHRvIHRoZQotICogRXh0ZW5zaW9uIGFuZCBUY2xUayBmZWF0dXJlcy4gUkVHSVNUUlkudGNsIG11c3QgYmUgaW5zdGFsbGVkCi0gKiBpZiBib3RoIGZlYXR1cmVzIGFyZSBpbnN0YWxsZWQsIGFuZCBtdXN0IGJlIGFic2VudCBvdGhlcndpc2UuCi0gKi8KLVVJTlQgX19kZWNsc3BlYyhkbGxleHBvcnQpIF9fc3RkY2FsbCBVcGRhdGVFZGl0SURMRShNU0lIQU5ETEUgaEluc3RhbGwpCi17Ci0gICAgSU5TVEFMTFNUQVRFIGV4dF9vbGQsIGV4dF9uZXcsIHRjbF9vbGQsIHRjbF9uZXcsIHJlZ19uZXc7Ci0gICAgVUlOVCByZXN1bHQ7Ci0KLSAgICByZXN1bHQgPSBNc2lHZXRGZWF0dXJlU3RhdGVBKGhJbnN0YWxsLCAiRXh0ZW5zaW9ucyIsICZleHRfb2xkLCAmZXh0X25ldyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJlc3VsdCA9IE1zaUdldEZlYXR1cmVTdGF0ZUEoaEluc3RhbGwsICJUY2xUayIsICZ0Y2xfb2xkLCAmdGNsX25ldyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgLyogSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgQWJzZW50LCBhbmQgdGhlIHVzZXIgZGlkIG5vdCBzZWxlY3QKLSAgICAgICB0aGUgZmVhdHVyZSBpbiB0aGUgVUksIEluc3RhbGxlciBhcHBhcmVudGx5IHNldHMgdGhlICJzZWxlY3RlZCIKLSAgICAgICBzdGF0ZSB0byB1bmtub3duLiBVcGRhdGUgaXQgdG8gdGhlIGN1cnJlbnQgdmFsdWUsIHRoZW4uICovCi0gICAgaWYgKGV4dF9uZXcgPT0gSU5TVEFMTFNUQVRFX1VOS05PV04pCi0gICAgICAgIGV4dF9uZXcgPSBleHRfb2xkOwotICAgIGlmICh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9VTktOT1dOKQotICAgICAgICB0Y2xfbmV3ID0gdGNsX29sZDsKLQotICAgIC8vIFhYWCBjb25zaWRlciBjdXJyZW50IHN0YXRlIG9mIFJFR0lTVFJZLnRjbD8KLSAgICBpZiAoKCh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9MT0NBTCkgfHwKLSAgICAgICAgICAgICAodGNsX25ldyA9PSBJTlNUQUxMU1RBVEVfU09VUkNFKSB8fAotICAgICAgICAgICAgICh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9ERUZBVUxUKSkgJiYKLSAgICAgICAgKChleHRfbmV3ID09IElOU1RBTExTVEFURV9MT0NBTCkgfHwKLSAgICAgICAgIChleHRfbmV3ID09IElOU1RBTExTVEFURV9TT1VSQ0UpIHx8Ci0gICAgICAgICAoZXh0X25ldyA9PSBJTlNUQUxMU1RBVEVfREVGQVVMVCkpKSB7Ci0gICAgICAgIHJlZ19uZXcgPSBJTlNUQUxMU1RBVEVfU09VUkNFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlZ19uZXcgPSBJTlNUQUxMU1RBVEVfQUJTRU5UOwotICAgIH0KLSAgICByZXN1bHQgPSBNc2lTZXRDb21wb25lbnRTdGF0ZUEoaEluc3RhbGwsICJSRUdJU1RSWS50Y2wiLCByZWdfbmV3KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1CT09MIEFQSUVOVFJZIERsbE1haW4oSEFORExFIGhNb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgRFdPUkQgIHVsX3JlYXNvbl9mb3JfY2FsbCwKLSAgICAgICAgICAgICAgICAgICAgICBMUFZPSUQgbHBSZXNlcnZlZCkKLXsKLSAgICByZXR1cm4gVFJVRTsKLX0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaXN1cHBvcnQubWFrIGIvVG9vbHMvbXNpL21zaXN1cHBvcnQubWFrCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTA1ZGJlLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9tc2lzdXBwb3J0Lm1haworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyAvT1BUOiBSRUYgYW5kIElDRiBhcmUgYWRkZWQgYnkgVlMuTkVUIGJ5IGRlZmF1bHQKLW1zaXN1cHBvcnQuZGxsOgltc2lzdXBwb3J0Lm9iagotCWxpbmsuZXhlIC9PVVQ6bXNpc3VwcG9ydC5kbGwgL0lOQ1JFTUVOVEFMOk5PIC9OT0xPR08gL0RMTCAvU1VCU1lTVEVNOldJTkRPV1MgL09QVDpSRUYgL09QVDpJQ0YgbXNpc3VwcG9ydC5vYmogbXNpLmxpYiBrZXJuZWwzMi5saWIKLQotIyBXZSByZXF1ZXN0IGEgc3RhdGljIENSVCwgc28gdGhhdCB0aGVyZSB3aWxsIGJlIG5vIENSVCBkZXBlbmRlbmNpZXMKLSMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiBXZSBjYW5ub3QgZG8gd2l0aG91dCBhIENSVCwgc2luY2UgaXQgcHJvdmlkZXMKLSMgdGhlIERMTCBlbnRyeSBwb2ludC4KLW1zaXN1cHBvcnQub2JqOgltc2lzdXBwb3J0LmMKLQljbCAvTzIgL0QgV0lOMzIgL0QgTkRFQlVHIC9EIF9XSU5ET1dTIC9NVCAvVzMgL2MgbXNpc3VwcG9ydC5jCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvcGF0aC9wYXRoLndpeHByb2ogYi9Ub29scy9tc2kvcGF0aC9wYXRoLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5MmUxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9wYXRoL3BhdGgud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57OTFDOTkyOTgtOEUyRS00NDIyLUE1QUYtQ0M0RkZGOUE1OEQzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+cGF0aDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICAgICAgPFN1cHByZXNzSWNlcz5JQ0U3MTwvU3VwcHJlc3NJY2VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIqLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9wYXRoL3BhdGgud3hzIGIvVG9vbHMvbXNpL3BhdGgvcGF0aC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIzNzkzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9wYXRoL3BhdGgud3hzCkBAIC0wLDAgKzEsMzkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJQcmVwZW5kUGF0aF9DVSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPk5PVCBBTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLQ1UiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iJCh2YXIuT3B0aW9uYWxGZWF0dXJlTmFtZSkiIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPENyZWF0ZUZvbGRlciBEaXJlY3Rvcnk9IlNjcmlwdHMiIC8+CisgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX1NjcmlwdHNfQ1UiIERpcmVjdG9yeT0iU2NyaXB0cyIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBBVEhfQ1UiIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIIiBQYXJ0PSJmaXJzdCIgVmFsdWU9IltJbnN0YWxsRGlyZWN0b3J5XSIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlNDUklQVFNfUEFUSF9DVSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW1NjcmlwdHNdIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJQcmVwZW5kUGF0aF9MTSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPkFMTFVTRVJTPTE8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtMTSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBLZXk9Ikluc3RhbGxlZEZlYXR1cmVzIiBOYW1lPSIkKHZhci5PcHRpb25hbEZlYXR1cmVOYW1lKSIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8Q3JlYXRlRm9sZGVyIERpcmVjdG9yeT0iU2NyaXB0cyIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfU2NyaXB0c19MTSIgRGlyZWN0b3J5PSJTY3JpcHRzIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlNDUklQVFNfUEFUSF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW1NjcmlwdHNdIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBZX1BBVEhFWFRfTE0iIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIRVhUIiBQYXJ0PSJsYXN0IiBWYWx1ZT0iLlBZIiBTeXN0ZW09InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RW52aXJvbm1lbnQgSWQ9IlBZV19QQVRIRVhUX0xNIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSEVYVCIgUGFydD0ibGFzdCIgVmFsdWU9Ii5QWVciIFN5c3RlbT0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BhdGgvcGF0aF9lbi1VUy53eGwgYi9Ub29scy9tc2kvcGF0aC9wYXRoX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2E3ODg2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BhdGgvcGF0aF9lbi1VUy53eGwKQEAgLTAsMCArMSw2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5BZGQgdG8gUGF0aDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+UGF0aDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vUHl0aG9uIj5ObyAhKGxvYy5Qcm9kdWN0TmFtZSkgaW5zdGFsbGF0aW9uIHdhcyBkZXRlY3RlZC48L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BpcC9waXAud2l4cHJvaiBiL1Rvb2xzL21zaS9waXAvcGlwLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE4YzAyYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9waXAvcGlwLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezkxQzk5Mjk4LThFMkUtNDQyMi1BNUFGLUNDNEZGRjlBNThEM308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnBpcDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICAgICAgPFN1cHByZXNzSWNlcz5JQ0U3MTwvU3VwcHJlc3NJY2VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSIqLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9waXAvcGlwLnd4cyBiL1Rvb2xzL21zaS9waXAvcGlwLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWU5ZjVmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BpcC9waXAud3hzCkBAIC0wLDAgKzEsMzkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHkgSWQ9IlBZVEhPTl9FWEUiIFNlY3VyZT0ieWVzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRTZWFyY2ggSWQ9IlB5dGhvbkV4ZSIgR3VpZD0iJCh2YXIuUHl0aG9uRXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlU2VhcmNoIE5hbWU9InB5dGhvbi5leGUiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudFNlYXJjaD4KKyAgICAgICAgPC9Qcm9wZXJ0eT4KKworICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vUHl0aG9uKSI+UFlUSE9OX0VYRTwvQ29uZGl0aW9uPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIAorICAgICAgICA8P2lmICQodmFyLlBsYXRmb3JtKX49Ing2NCIgPz4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iVXBkYXRlUGlwIiBCaW5hcnlLZXk9IldpeENBIiBEbGxFbnRyeT0iQ0FRdWlldEV4ZWM2NCIgRXhlY3V0ZT0iZGVmZXJyZWQiIFJldHVybj0iaWdub3JlIi8+CisgICAgICAgIDw/ZWxzZSA/PgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJVcGRhdGVQaXAiIEJpbmFyeUtleT0iV2l4Q0EiIERsbEVudHJ5PSJDQVF1aWV0RXhlYyIgRXhlY3V0ZT0iZGVmZXJyZWQiIFJldHVybj0iaWdub3JlIi8+CisgICAgICAgIDw/ZW5kaWYgPz4KKyAgICAgICAgCisgICAgICAgIDwhLS0gSW5zdGFsbC91bmluc3RhbGwgcGlwIC0tPgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJTZXRVcGRhdGVQaXBDb21tYW5kTGluZSIgUHJvcGVydHk9IlVwZGF0ZVBpcCIgVmFsdWU9JyJbUFlUSE9OX0VYRV0iIC1FIC1zIC1tIGVuc3VyZXBpcCAtVSAtLWRlZmF1bHQtcGlwJyBFeGVjdXRlPSJpbW1lZGlhdGUiIC8+CisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlNldFJlbW92ZVBpcENvbW1hbmRMaW5lIiBQcm9wZXJ0eT0iVXBkYXRlUGlwIiBWYWx1ZT0nIltQWVRIT05fRVhFXSIgLUUgLXMgLUIgLW0gZW5zdXJlcGlwLl91bmluc3RhbGwnIEV4ZWN1dGU9ImltbWVkaWF0ZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgICAgICAgICAgPEN1c3RvbSBBY3Rpb249IlNldFVwZGF0ZVBpcENvbW1hbmRMaW5lIiBCZWZvcmU9IlVwZGF0ZVBpcCI+KCZhbXA7RGVmYXVsdEZlYXR1cmU9MykgQU5EIE5PVCAoIURlZmF1bHRGZWF0dXJlPTMpPC9DdXN0b20+CisgICAgICAgICAgICA8Q3VzdG9tIEFjdGlvbj0iU2V0UmVtb3ZlUGlwQ29tbWFuZExpbmUiIEJlZm9yZT0iVXBkYXRlUGlwIj4oJmFtcDtEZWZhdWx0RmVhdHVyZT0yKSBBTkQgKCFEZWZhdWx0RmVhdHVyZT0zKTwvQ3VzdG9tPgorCisgICAgICAgICAgICA8Q3VzdG9tIEFjdGlvbj0iVXBkYXRlUGlwIiBCZWZvcmU9Ikluc3RhbGxGaW5hbGl6ZSI+VXBkYXRlUGlwPC9DdXN0b20+CisgICAgICAgIDwvSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BpcC9waXBfZW4tVVMud3hsIGIvVG9vbHMvbXNpL3BpcC9waXBfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMGQ5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvcGlwL3BpcF9lbi1VUy53eGwKQEAgLTAsMCArMSw2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5waXAgQm9vdHN0cmFwPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5waXA8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOb1B5dGhvbiI+Tm8gIShsb2MuUHJvZHVjdE5hbWUpIGluc3RhbGxhdGlvbiB3YXMgZGV0ZWN0ZWQuPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9zY2hlbWEucHkgYi9Ub29scy9tc2kvc2NoZW1hLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjcyZTVhLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9zY2hlbWEucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDA3ICswLDAgQEAKLWZyb20gbXNpbGliIGltcG9ydCBUYWJsZQotCi1fVmFsaWRhdGlvbiA9IFRhYmxlKCdfVmFsaWRhdGlvbicpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoMSwnVGFibGUnLDExNTUyKQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDIsJ0NvbHVtbicsMTE1NTIpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoMywnTnVsbGFibGUnLDMzMzIpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNCwnTWluVmFsdWUnLDQzNTYpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNSwnTWF4VmFsdWUnLDQzNTYpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNiwnS2V5VGFibGUnLDc2NzkpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoNywnS2V5Q29sdW1uJyw1Mzc4KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDgsJ0NhdGVnb3J5Jyw3NDU2KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDksJ1NldCcsNzY3OSkKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCgxMCwnRGVzY3JpcHRpb24nLDc2NzkpCi0KLUFjdGlvblRleHQgPSBUYWJsZSgnQWN0aW9uVGV4dCcpCi1BY3Rpb25UZXh0LmFkZF9maWVsZCgxLCdBY3Rpb24nLDExNTkyKQotQWN0aW9uVGV4dC5hZGRfZmllbGQoMiwnRGVzY3JpcHRpb24nLDc5MzYpCi1BY3Rpb25UZXh0LmFkZF9maWVsZCgzLCdUZW1wbGF0ZScsNzkzNikKLQotQWRtaW5FeGVjdXRlU2VxdWVuY2UgPSBUYWJsZSgnQWRtaW5FeGVjdXRlU2VxdWVuY2UnKQotQWRtaW5FeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotQWRtaW5FeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUFkbWluRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotQ29uZGl0aW9uID0gVGFibGUoJ0NvbmRpdGlvbicpCi1Db25kaXRpb24uYWRkX2ZpZWxkKDEsJ0ZlYXR1cmVfJywxMTU1OCkKLUNvbmRpdGlvbi5hZGRfZmllbGQoMiwnTGV2ZWwnLDk0NzQpCi1Db25kaXRpb24uYWRkX2ZpZWxkKDMsJ0NvbmRpdGlvbicsNzY3OSkKLQotQWRtaW5VSVNlcXVlbmNlID0gVGFibGUoJ0FkbWluVUlTZXF1ZW5jZScpCi1BZG1pblVJU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotQWRtaW5VSVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1BZG1pblVJU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlID0gVGFibGUoJ0FkdnRFeGVjdXRlU2VxdWVuY2UnKQotQWR2dEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotQWR2dFVJU2VxdWVuY2UgPSBUYWJsZSgnQWR2dFVJU2VxdWVuY2UnKQotQWR2dFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMTE1OTIpCi1BZHZ0VUlTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotQWR2dFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1BcHBJZCA9IFRhYmxlKCdBcHBJZCcpCi1BcHBJZC5hZGRfZmllbGQoMSwnQXBwSWQnLDExNTU4KQotQXBwSWQuYWRkX2ZpZWxkKDIsJ1JlbW90ZVNlcnZlck5hbWUnLDc2NzkpCi1BcHBJZC5hZGRfZmllbGQoMywnTG9jYWxTZXJ2aWNlJyw3Njc5KQotQXBwSWQuYWRkX2ZpZWxkKDQsJ1NlcnZpY2VQYXJhbWV0ZXJzJyw3Njc5KQotQXBwSWQuYWRkX2ZpZWxkKDUsJ0RsbFN1cnJvZ2F0ZScsNzY3OSkKLUFwcElkLmFkZF9maWVsZCg2LCdBY3RpdmF0ZUF0U3RvcmFnZScsNTM3OCkKLUFwcElkLmFkZF9maWVsZCg3LCdSdW5Bc0ludGVyYWN0aXZlVXNlcicsNTM3OCkKLQotQXBwU2VhcmNoID0gVGFibGUoJ0FwcFNlYXJjaCcpCi1BcHBTZWFyY2guYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUFwcFNlYXJjaC5hZGRfZmllbGQoMiwnU2lnbmF0dXJlXycsMTE1OTIpCi0KLVByb3BlcnR5ID0gVGFibGUoJ1Byb3BlcnR5JykKLVByb3BlcnR5LmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1Qcm9wZXJ0eS5hZGRfZmllbGQoMiwnVmFsdWUnLDM4NDApCi0KLUJCQ29udHJvbCA9IFRhYmxlKCdCQkNvbnRyb2wnKQotQkJDb250cm9sLmFkZF9maWVsZCgxLCdCaWxsYm9hcmRfJywxMTU3MCkKLUJCQ29udHJvbC5hZGRfZmllbGQoMiwnQkJDb250cm9sJywxMTU3MCkKLUJCQ29udHJvbC5hZGRfZmllbGQoMywnVHlwZScsMzM3OCkKLUJCQ29udHJvbC5hZGRfZmllbGQoNCwnWCcsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoNSwnWScsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoNiwnV2lkdGgnLDEyODIpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDcsJ0hlaWdodCcsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoOCwnQXR0cmlidXRlcycsNDM1NikKLUJCQ29udHJvbC5hZGRfZmllbGQoOSwnVGV4dCcsNzk4NikKLQotQmlsbGJvYXJkID0gVGFibGUoJ0JpbGxib2FyZCcpCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDEsJ0JpbGxib2FyZCcsMTE1NzApCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDIsJ0ZlYXR1cmVfJywzMzY2KQotQmlsbGJvYXJkLmFkZF9maWVsZCgzLCdBY3Rpb24nLDc0NzQpCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDQsJ09yZGVyaW5nJyw1Mzc4KQotCi1GZWF0dXJlID0gVGFibGUoJ0ZlYXR1cmUnKQotRmVhdHVyZS5hZGRfZmllbGQoMSwnRmVhdHVyZScsMTE1NTgpCi1GZWF0dXJlLmFkZF9maWVsZCgyLCdGZWF0dXJlX1BhcmVudCcsNzQ2MikKLUZlYXR1cmUuYWRkX2ZpZWxkKDMsJ1RpdGxlJyw4MDAwKQotRmVhdHVyZS5hZGRfZmllbGQoNCwnRGVzY3JpcHRpb24nLDgxOTEpCi1GZWF0dXJlLmFkZF9maWVsZCg1LCdEaXNwbGF5Jyw1Mzc4KQotRmVhdHVyZS5hZGRfZmllbGQoNiwnTGV2ZWwnLDEyODIpCi1GZWF0dXJlLmFkZF9maWVsZCg3LCdEaXJlY3RvcnlfJywweDFERkYpCi1GZWF0dXJlLmFkZF9maWVsZCg4LCdBdHRyaWJ1dGVzJywxMjgyKQotCi1CaW5hcnkgPSBUYWJsZSgnQmluYXJ5JykKLUJpbmFyeS5hZGRfZmllbGQoMSwnTmFtZScsMTE1OTIpCi1CaW5hcnkuYWRkX2ZpZWxkKDIsJ0RhdGEnLDIzMDQpCi0KLUJpbmRJbWFnZSA9IFRhYmxlKCdCaW5kSW1hZ2UnKQotQmluZEltYWdlLmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotQmluZEltYWdlLmFkZF9maWVsZCgyLCdQYXRoJyw3Njc5KQotCi1GaWxlID0gVGFibGUoJ0ZpbGUnKQotRmlsZS5hZGRfZmllbGQoMSwnRmlsZScsMHgyREZGKQotRmlsZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1GaWxlLmFkZF9maWVsZCgzLCdGaWxlTmFtZScsNDA5NSkKLUZpbGUuYWRkX2ZpZWxkKDQsJ0ZpbGVTaXplJywyNjApCi1GaWxlLmFkZF9maWVsZCg1LCdWZXJzaW9uJywweDFERkYpCi1GaWxlLmFkZF9maWVsZCg2LCdMYW5ndWFnZScsNzQ0NCkKLUZpbGUuYWRkX2ZpZWxkKDcsJ0F0dHJpYnV0ZXMnLDUzNzgpCi1GaWxlLmFkZF9maWVsZCg4LCdTZXF1ZW5jZScsMTI4MikKLQotQ0NQU2VhcmNoID0gVGFibGUoJ0NDUFNlYXJjaCcpCi1DQ1BTZWFyY2guYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotCi1DaGVja0JveCA9IFRhYmxlKCdDaGVja0JveCcpCi1DaGVja0JveC5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotQ2hlY2tCb3guYWRkX2ZpZWxkKDIsJ1ZhbHVlJyw3NDg4KQotCi1DbGFzcyA9IFRhYmxlKCdDbGFzcycpCi1DbGFzcy5hZGRfZmllbGQoMSwnQ0xTSUQnLDExNTU4KQotQ2xhc3MuYWRkX2ZpZWxkKDIsJ0NvbnRleHQnLDExNTUyKQotQ2xhc3MuYWRkX2ZpZWxkKDMsJ0NvbXBvbmVudF8nLDB4MkRGRikKLUNsYXNzLmFkZF9maWVsZCg0LCdQcm9nSWRfRGVmYXVsdCcsNzY3OSkKLUNsYXNzLmFkZF9maWVsZCg1LCdEZXNjcmlwdGlvbicsODE5MSkKLUNsYXNzLmFkZF9maWVsZCg2LCdBcHBJZF8nLDc0NjIpCi1DbGFzcy5hZGRfZmllbGQoNywnRmlsZVR5cGVNYXNrJyw3Njc5KQotQ2xhc3MuYWRkX2ZpZWxkKDgsJ0ljb25fJyw3NDk2KQotQ2xhc3MuYWRkX2ZpZWxkKDksJ0ljb25JbmRleCcsNTM3OCkKLUNsYXNzLmFkZF9maWVsZCgxMCwnRGVmSW5wcm9jSGFuZGxlcicsNzQ1NikKLUNsYXNzLmFkZF9maWVsZCgxMSwnQXJndW1lbnQnLDc2NzkpCi1DbGFzcy5hZGRfZmllbGQoMTIsJ0ZlYXR1cmVfJywzMzY2KQotQ2xhc3MuYWRkX2ZpZWxkKDEzLCdBdHRyaWJ1dGVzJyw1Mzc4KQotCi1Db21wb25lbnQgPSBUYWJsZSgnQ29tcG9uZW50JykKLUNvbXBvbmVudC5hZGRfZmllbGQoMSwnQ29tcG9uZW50JywweDJERkYpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudElkJyw3NDYyKQotQ29tcG9uZW50LmFkZF9maWVsZCgzLCdEaXJlY3RvcnlfJywweERGRikKLUNvbXBvbmVudC5hZGRfZmllbGQoNCwnQXR0cmlidXRlcycsMTI4MikKLUNvbXBvbmVudC5hZGRfZmllbGQoNSwnQ29uZGl0aW9uJyw3Njc5KQotQ29tcG9uZW50LmFkZF9maWVsZCg2LCdLZXlQYXRoJywweDFERkYpCi0KLUljb24gPSBUYWJsZSgnSWNvbicpCi1JY29uLmFkZF9maWVsZCgxLCdOYW1lJywxMTU5MikKLUljb24uYWRkX2ZpZWxkKDIsJ0RhdGEnLDIzMDQpCi0KLVByb2dJZCA9IFRhYmxlKCdQcm9nSWQnKQotUHJvZ0lkLmFkZF9maWVsZCgxLCdQcm9nSWQnLDExNzc1KQotUHJvZ0lkLmFkZF9maWVsZCgyLCdQcm9nSWRfUGFyZW50Jyw3Njc5KQotUHJvZ0lkLmFkZF9maWVsZCgzLCdDbGFzc18nLDc0NjIpCi1Qcm9nSWQuYWRkX2ZpZWxkKDQsJ0Rlc2NyaXB0aW9uJyw4MTkxKQotUHJvZ0lkLmFkZF9maWVsZCg1LCdJY29uXycsNzQ5NikKLVByb2dJZC5hZGRfZmllbGQoNiwnSWNvbkluZGV4Jyw1Mzc4KQotCi1Db21ib0JveCA9IFRhYmxlKCdDb21ib0JveCcpCi1Db21ib0JveC5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotQ29tYm9Cb3guYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotQ29tYm9Cb3guYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzMzkyKQotQ29tYm9Cb3guYWRkX2ZpZWxkKDQsJ1RleHQnLDgwMDApCi0KLUNvbXBMb2NhdG9yID0gVGFibGUoJ0NvbXBMb2NhdG9yJykKLUNvbXBMb2NhdG9yLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLUNvbXBMb2NhdG9yLmFkZF9maWVsZCgyLCdDb21wb25lbnRJZCcsMzM2NikKLUNvbXBMb2NhdG9yLmFkZF9maWVsZCgzLCdUeXBlJyw1Mzc4KQotCi1Db21wbHVzID0gVGFibGUoJ0NvbXBsdXMnKQotQ29tcGx1cy5hZGRfZmllbGQoMSwnQ29tcG9uZW50XycsMHgyREZGKQotQ29tcGx1cy5hZGRfZmllbGQoMiwnRXhwVHlwZScsMTM1NzApCi0KLURpcmVjdG9yeSA9IFRhYmxlKCdEaXJlY3RvcnknKQotRGlyZWN0b3J5LmFkZF9maWVsZCgxLCdEaXJlY3RvcnknLDB4MkRGRikKLURpcmVjdG9yeS5hZGRfZmllbGQoMiwnRGlyZWN0b3J5X1BhcmVudCcsMHgxREZGKQotRGlyZWN0b3J5LmFkZF9maWVsZCgzLCdEZWZhdWx0RGlyJyw0MDk1KQotCi1Db250cm9sID0gVGFibGUoJ0NvbnRyb2wnKQotQ29udHJvbC5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1Db250cm9sLmFkZF9maWVsZCgyLCdDb250cm9sJywxMTU3MCkKLUNvbnRyb2wuYWRkX2ZpZWxkKDMsJ1R5cGUnLDMzNDgpCi1Db250cm9sLmFkZF9maWVsZCg0LCdYJywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoNSwnWScsMTI4MikKLUNvbnRyb2wuYWRkX2ZpZWxkKDYsJ1dpZHRoJywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoNywnSGVpZ2h0JywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoOCwnQXR0cmlidXRlcycsNDM1NikKLUNvbnRyb2wuYWRkX2ZpZWxkKDksJ1Byb3BlcnR5Jyw3NDc0KQotQ29udHJvbC5hZGRfZmllbGQoMTAsJ1RleHQnLDc5MzYpCi1Db250cm9sLmFkZF9maWVsZCgxMSwnQ29udHJvbF9OZXh0Jyw3NDc0KQotQ29udHJvbC5hZGRfZmllbGQoMTIsJ0hlbHAnLDc5ODYpCi0KLURpYWxvZyA9IFRhYmxlKCdEaWFsb2cnKQotRGlhbG9nLmFkZF9maWVsZCgxLCdEaWFsb2cnLDExNTkyKQotRGlhbG9nLmFkZF9maWVsZCgyLCdIQ2VudGVyaW5nJywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCgzLCdWQ2VudGVyaW5nJywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCg0LCdXaWR0aCcsMTI4MikKLURpYWxvZy5hZGRfZmllbGQoNSwnSGVpZ2h0JywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCg2LCdBdHRyaWJ1dGVzJyw0MzU2KQotRGlhbG9nLmFkZF9maWVsZCg3LCdUaXRsZScsODA2NCkKLURpYWxvZy5hZGRfZmllbGQoOCwnQ29udHJvbF9GaXJzdCcsMzM3OCkKLURpYWxvZy5hZGRfZmllbGQoOSwnQ29udHJvbF9EZWZhdWx0Jyw3NDc0KQotRGlhbG9nLmFkZF9maWVsZCgxMCwnQ29udHJvbF9DYW5jZWwnLDc0NzQpCi0KLUNvbnRyb2xDb25kaXRpb24gPSBUYWJsZSgnQ29udHJvbENvbmRpdGlvbicpCi1Db250cm9sQ29uZGl0aW9uLmFkZF9maWVsZCgxLCdEaWFsb2dfJywxMTU5MikKLUNvbnRyb2xDb25kaXRpb24uYWRkX2ZpZWxkKDIsJ0NvbnRyb2xfJywxMTU3MCkKLUNvbnRyb2xDb25kaXRpb24uYWRkX2ZpZWxkKDMsJ0FjdGlvbicsMTE1NzApCi1Db250cm9sQ29uZGl0aW9uLmFkZF9maWVsZCg0LCdDb25kaXRpb24nLDExNzc1KQotCi1Db250cm9sRXZlbnQgPSBUYWJsZSgnQ29udHJvbEV2ZW50JykKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDIsJ0NvbnRyb2xfJywxMTU3MCkKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoMywnRXZlbnQnLDExNTcwKQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCg0LCdBcmd1bWVudCcsMTE3NzUpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDUsJ0NvbmRpdGlvbicsMTU4NzEpCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDYsJ09yZGVyaW5nJyw1Mzc4KQotCi1DcmVhdGVGb2xkZXIgPSBUYWJsZSgnQ3JlYXRlRm9sZGVyJykKLUNyZWF0ZUZvbGRlci5hZGRfZmllbGQoMSwnRGlyZWN0b3J5XycsMHgyREZGKQotQ3JlYXRlRm9sZGVyLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweDJERkYpCi0KLUN1c3RvbUFjdGlvbiA9IFRhYmxlKCdDdXN0b21BY3Rpb24nKQotQ3VzdG9tQWN0aW9uLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUN1c3RvbUFjdGlvbi5hZGRfZmllbGQoMiwnVHlwZScsMTI4MikKLUN1c3RvbUFjdGlvbi5hZGRfZmllbGQoMywnU291cmNlJywweDFERkYpCi1DdXN0b21BY3Rpb24uYWRkX2ZpZWxkKDQsJ1RhcmdldCcsNzY3OSkKLQotRHJMb2NhdG9yID0gVGFibGUoJ0RyTG9jYXRvcicpCi1EckxvY2F0b3IuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotRHJMb2NhdG9yLmFkZF9maWVsZCgyLCdQYXJlbnQnLDE1Njg4KQotRHJMb2NhdG9yLmFkZF9maWVsZCgzLCdQYXRoJywxNTg3MSkKLURyTG9jYXRvci5hZGRfZmllbGQoNCwnRGVwdGgnLDUzNzgpCi0KLUR1cGxpY2F0ZUZpbGUgPSBUYWJsZSgnRHVwbGljYXRlRmlsZScpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCgxLCdGaWxlS2V5JywxMTU5MikKLUR1cGxpY2F0ZUZpbGUuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoMywnRmlsZV8nLDB4REZGKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoNCwnRGVzdE5hbWUnLDgxOTEpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCg1LCdEZXN0Rm9sZGVyJyw3NDk2KQotCi1FbnZpcm9ubWVudCA9IFRhYmxlKCdFbnZpcm9ubWVudCcpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoMSwnRW52aXJvbm1lbnQnLDExNTkyKQotRW52aXJvbm1lbnQuYWRkX2ZpZWxkKDIsJ05hbWUnLDQwOTUpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoMywnVmFsdWUnLDgxOTEpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoNCwnQ29tcG9uZW50XycsMHhERkYpCi0KLUVycm9yID0gVGFibGUoJ0Vycm9yJykKLUVycm9yLmFkZF9maWVsZCgxLCdFcnJvcicsOTQ3NCkKLUVycm9yLmFkZF9maWVsZCgyLCdNZXNzYWdlJyw3OTM2KQotCi1FdmVudE1hcHBpbmcgPSBUYWJsZSgnRXZlbnRNYXBwaW5nJykKLUV2ZW50TWFwcGluZy5hZGRfZmllbGQoMSwnRGlhbG9nXycsMTE1OTIpCi1FdmVudE1hcHBpbmcuYWRkX2ZpZWxkKDIsJ0NvbnRyb2xfJywxMTU3MCkKLUV2ZW50TWFwcGluZy5hZGRfZmllbGQoMywnRXZlbnQnLDExNTcwKQotRXZlbnRNYXBwaW5nLmFkZF9maWVsZCg0LCdBdHRyaWJ1dGUnLDMzNzgpCi0KLUV4dGVuc2lvbiA9IFRhYmxlKCdFeHRlbnNpb24nKQotRXh0ZW5zaW9uLmFkZF9maWVsZCgxLCdFeHRlbnNpb24nLDExNzc1KQotRXh0ZW5zaW9uLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweDJERkYpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDMsJ1Byb2dJZF8nLDc2NzkpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDQsJ01JTUVfJyw3NDg4KQotRXh0ZW5zaW9uLmFkZF9maWVsZCg1LCdGZWF0dXJlXycsMzM2NikKLQotTUlNRSA9IFRhYmxlKCdNSU1FJykKLU1JTUUuYWRkX2ZpZWxkKDEsJ0NvbnRlbnRUeXBlJywxMTU4NCkKLU1JTUUuYWRkX2ZpZWxkKDIsJ0V4dGVuc2lvbl8nLDM1ODMpCi1NSU1FLmFkZF9maWVsZCgzLCdDTFNJRCcsNzQ2MikKLQotRmVhdHVyZUNvbXBvbmVudHMgPSBUYWJsZSgnRmVhdHVyZUNvbXBvbmVudHMnKQotRmVhdHVyZUNvbXBvbmVudHMuYWRkX2ZpZWxkKDEsJ0ZlYXR1cmVfJywxMTU1OCkKLUZlYXR1cmVDb21wb25lbnRzLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweDJERkYpCi0KLUZpbGVTRlBDYXRhbG9nID0gVGFibGUoJ0ZpbGVTRlBDYXRhbG9nJykKLUZpbGVTRlBDYXRhbG9nLmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotRmlsZVNGUENhdGFsb2cuYWRkX2ZpZWxkKDIsJ1NGUENhdGFsb2dfJywxMTc3NSkKLQotU0ZQQ2F0YWxvZyA9IFRhYmxlKCdTRlBDYXRhbG9nJykKLVNGUENhdGFsb2cuYWRkX2ZpZWxkKDEsJ1NGUENhdGFsb2cnLDExNzc1KQotU0ZQQ2F0YWxvZy5hZGRfZmllbGQoMiwnQ2F0YWxvZycsMjMwNCkKLVNGUENhdGFsb2cuYWRkX2ZpZWxkKDMsJ0RlcGVuZGVuY3knLDc0MjQpCi0KLUZvbnQgPSBUYWJsZSgnRm9udCcpCi1Gb250LmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotRm9udC5hZGRfZmllbGQoMiwnRm9udFRpdGxlJyw3NTUyKQotCi1JbmlGaWxlID0gVGFibGUoJ0luaUZpbGUnKQotSW5pRmlsZS5hZGRfZmllbGQoMSwnSW5pRmlsZScsMTE1OTIpCi1JbmlGaWxlLmFkZF9maWVsZCgyLCdGaWxlTmFtZScsNDA5NSkKLUluaUZpbGUuYWRkX2ZpZWxkKDMsJ0RpclByb3BlcnR5Jyw3NDk2KQotSW5pRmlsZS5hZGRfZmllbGQoNCwnU2VjdGlvbicsMzkzNikKLUluaUZpbGUuYWRkX2ZpZWxkKDUsJ0tleScsMzk2OCkKLUluaUZpbGUuYWRkX2ZpZWxkKDYsJ1ZhbHVlJyw0MDk1KQotSW5pRmlsZS5hZGRfZmllbGQoNywnQWN0aW9uJywxMjgyKQotSW5pRmlsZS5hZGRfZmllbGQoOCwnQ29tcG9uZW50XycsMHhERkYpCi0KLUluaUxvY2F0b3IgPSBUYWJsZSgnSW5pTG9jYXRvcicpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCgxLCdTaWduYXR1cmVfJywxMTU5MikKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDIsJ0ZpbGVOYW1lJywzNTgzKQotSW5pTG9jYXRvci5hZGRfZmllbGQoMywnU2VjdGlvbicsMzQyNCkKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDQsJ0tleScsMzQ1NikKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDUsJ0ZpZWxkJyw1Mzc4KQotSW5pTG9jYXRvci5hZGRfZmllbGQoNiwnVHlwZScsNTM3OCkKLQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSA9IFRhYmxlKCdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJykKLUluc3RhbGxFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUluc3RhbGxVSVNlcXVlbmNlID0gVGFibGUoJ0luc3RhbGxVSVNlcXVlbmNlJykKLUluc3RhbGxVSVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUluc3RhbGxVSVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1JbnN0YWxsVUlTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUlzb2xhdGVkQ29tcG9uZW50ID0gVGFibGUoJ0lzb2xhdGVkQ29tcG9uZW50JykKLUlzb2xhdGVkQ29tcG9uZW50LmFkZF9maWVsZCgxLCdDb21wb25lbnRfU2hhcmVkJywweDJERkYpCi1Jc29sYXRlZENvbXBvbmVudC5hZGRfZmllbGQoMiwnQ29tcG9uZW50X0FwcGxpY2F0aW9uJywweDJERkYpCi0KLUxhdW5jaENvbmRpdGlvbiA9IFRhYmxlKCdMYXVuY2hDb25kaXRpb24nKQotTGF1bmNoQ29uZGl0aW9uLmFkZF9maWVsZCgxLCdDb25kaXRpb24nLDExNzc1KQotTGF1bmNoQ29uZGl0aW9uLmFkZF9maWVsZCgyLCdEZXNjcmlwdGlvbicsNDA5NSkKLQotTGlzdEJveCA9IFRhYmxlKCdMaXN0Qm94JykKLUxpc3RCb3guYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLUxpc3RCb3guYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotTGlzdEJveC5hZGRfZmllbGQoMywnVmFsdWUnLDMzOTIpCi1MaXN0Qm94LmFkZF9maWVsZCg0LCdUZXh0Jyw4MDAwKQotCi1MaXN0VmlldyA9IFRhYmxlKCdMaXN0VmlldycpCi1MaXN0Vmlldy5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotTGlzdFZpZXcuYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotTGlzdFZpZXcuYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzMzkyKQotTGlzdFZpZXcuYWRkX2ZpZWxkKDQsJ1RleHQnLDgwMDApCi1MaXN0Vmlldy5hZGRfZmllbGQoNSwnQmluYXJ5XycsNzQ5NikKLQotTG9ja1Blcm1pc3Npb25zID0gVGFibGUoJ0xvY2tQZXJtaXNzaW9ucycpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDEsJ0xvY2tPYmplY3QnLDExNTkyKQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCgyLCdUYWJsZScsMTE1NTIpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDMsJ0RvbWFpbicsMTU4NzEpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDQsJ1VzZXInLDExNzc1KQotTG9ja1Blcm1pc3Npb25zLmFkZF9maWVsZCg1LCdQZXJtaXNzaW9uJyw0MzU2KQotCi1NZWRpYSA9IFRhYmxlKCdNZWRpYScpCi1NZWRpYS5hZGRfZmllbGQoMSwnRGlza0lkJyw5NDc0KQotTWVkaWEuYWRkX2ZpZWxkKDIsJ0xhc3RTZXF1ZW5jZScsMTI4MikKLU1lZGlhLmFkZF9maWVsZCgzLCdEaXNrUHJvbXB0Jyw4MDAwKQotTWVkaWEuYWRkX2ZpZWxkKDQsJ0NhYmluZXQnLDc2NzkpCi1NZWRpYS5hZGRfZmllbGQoNSwnVm9sdW1lTGFiZWwnLDc0NTYpCi1NZWRpYS5hZGRfZmllbGQoNiwnU291cmNlJyw3NDk2KQotCi1Nb3ZlRmlsZSA9IFRhYmxlKCdNb3ZlRmlsZScpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoMSwnRmlsZUtleScsMTE1OTIpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoMywnU291cmNlTmFtZScsODE5MSkKLU1vdmVGaWxlLmFkZF9maWVsZCg0LCdEZXN0TmFtZScsODE5MSkKLU1vdmVGaWxlLmFkZF9maWVsZCg1LCdTb3VyY2VGb2xkZXInLDc0OTYpCi1Nb3ZlRmlsZS5hZGRfZmllbGQoNiwnRGVzdEZvbGRlcicsMzQwMCkKLU1vdmVGaWxlLmFkZF9maWVsZCg3LCdPcHRpb25zJywxMjgyKQotCi1Nc2lBc3NlbWJseSA9IFRhYmxlKCdNc2lBc3NlbWJseScpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoMSwnQ29tcG9uZW50XycsMHgyREZGKQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDIsJ0ZlYXR1cmVfJywzMzY2KQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDMsJ0ZpbGVfTWFuaWZlc3QnLDB4MURGRikKLU1zaUFzc2VtYmx5LmFkZF9maWVsZCg0LCdGaWxlX0FwcGxpY2F0aW9uJywweDFERkYpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoNSwnQXR0cmlidXRlcycsNTM3OCkKLQotTXNpQXNzZW1ibHlOYW1lID0gVGFibGUoJ01zaUFzc2VtYmx5TmFtZScpCi1Nc2lBc3NlbWJseU5hbWUuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudF8nLDB4MkRGRikKLU1zaUFzc2VtYmx5TmFtZS5hZGRfZmllbGQoMiwnTmFtZScsMTE3NzUpCi1Nc2lBc3NlbWJseU5hbWUuYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzNTgzKQotCi1Nc2lEaWdpdGFsQ2VydGlmaWNhdGUgPSBUYWJsZSgnTXNpRGlnaXRhbENlcnRpZmljYXRlJykKLU1zaURpZ2l0YWxDZXJ0aWZpY2F0ZS5hZGRfZmllbGQoMSwnRGlnaXRhbENlcnRpZmljYXRlJywxMTU5MikKLU1zaURpZ2l0YWxDZXJ0aWZpY2F0ZS5hZGRfZmllbGQoMiwnQ2VydERhdGEnLDIzMDQpCi0KLU1zaURpZ2l0YWxTaWduYXR1cmUgPSBUYWJsZSgnTXNpRGlnaXRhbFNpZ25hdHVyZScpCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCgxLCdUYWJsZScsMTE1NTIpCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCgyLCdTaWduT2JqZWN0JywxMTU5MikKLU1zaURpZ2l0YWxTaWduYXR1cmUuYWRkX2ZpZWxkKDMsJ0RpZ2l0YWxDZXJ0aWZpY2F0ZV8nLDM0MDApCi1Nc2lEaWdpdGFsU2lnbmF0dXJlLmFkZF9maWVsZCg0LCdIYXNoJyw2NDAwKQotCi1Nc2lGaWxlSGFzaCA9IFRhYmxlKCdNc2lGaWxlSGFzaCcpCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoMSwnRmlsZV8nLDB4MkRGRikKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCgyLCdPcHRpb25zJywxMjgyKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDMsJ0hhc2hQYXJ0MScsMjYwKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDQsJ0hhc2hQYXJ0MicsMjYwKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDUsJ0hhc2hQYXJ0MycsMjYwKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDYsJ0hhc2hQYXJ0NCcsMjYwKQotCi1Nc2lQYXRjaEhlYWRlcnMgPSBUYWJsZSgnTXNpUGF0Y2hIZWFkZXJzJykKLU1zaVBhdGNoSGVhZGVycy5hZGRfZmllbGQoMSwnU3RyZWFtUmVmJywxMTU1OCkKLU1zaVBhdGNoSGVhZGVycy5hZGRfZmllbGQoMiwnSGVhZGVyJywyMzA0KQotCi1PREJDQXR0cmlidXRlID0gVGFibGUoJ09EQkNBdHRyaWJ1dGUnKQotT0RCQ0F0dHJpYnV0ZS5hZGRfZmllbGQoMSwnRHJpdmVyXycsMTE1OTIpCi1PREJDQXR0cmlidXRlLmFkZF9maWVsZCgyLCdBdHRyaWJ1dGUnLDExNTYwKQotT0RCQ0F0dHJpYnV0ZS5hZGRfZmllbGQoMywnVmFsdWUnLDgxOTEpCi0KLU9EQkNEcml2ZXIgPSBUYWJsZSgnT0RCQ0RyaXZlcicpCi1PREJDRHJpdmVyLmFkZF9maWVsZCgxLCdEcml2ZXInLDExNTkyKQotT0RCQ0RyaXZlci5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1PREJDRHJpdmVyLmFkZF9maWVsZCgzLCdEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDQsJ0ZpbGVfJywweERGRikKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDUsJ0ZpbGVfU2V0dXAnLDB4MURGRikKLQotT0RCQ0RhdGFTb3VyY2UgPSBUYWJsZSgnT0RCQ0RhdGFTb3VyY2UnKQotT0RCQ0RhdGFTb3VyY2UuYWRkX2ZpZWxkKDEsJ0RhdGFTb3VyY2UnLDB4MkRGRikKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCgzLCdEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCg0LCdEcml2ZXJEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNEYXRhU291cmNlLmFkZF9maWVsZCg1LCdSZWdpc3RyYXRpb24nLDEyODIpCi0KLU9EQkNTb3VyY2VBdHRyaWJ1dGUgPSBUYWJsZSgnT0RCQ1NvdXJjZUF0dHJpYnV0ZScpCi1PREJDU291cmNlQXR0cmlidXRlLmFkZF9maWVsZCgxLCdEYXRhU291cmNlXycsMTE1OTIpCi1PREJDU291cmNlQXR0cmlidXRlLmFkZF9maWVsZCgyLCdBdHRyaWJ1dGUnLDExNTUyKQotT0RCQ1NvdXJjZUF0dHJpYnV0ZS5hZGRfZmllbGQoMywnVmFsdWUnLDgxOTEpCi0KLU9EQkNUcmFuc2xhdG9yID0gVGFibGUoJ09EQkNUcmFuc2xhdG9yJykKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCgxLCdUcmFuc2xhdG9yJywxMTU5MikKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCgzLCdEZXNjcmlwdGlvbicsMzU4MykKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCg0LCdGaWxlXycsMHhERkYpCi1PREJDVHJhbnNsYXRvci5hZGRfZmllbGQoNSwnRmlsZV9TZXR1cCcsMHgxREZGKQotCi1QYXRjaCA9IFRhYmxlKCdQYXRjaCcpCi1QYXRjaC5hZGRfZmllbGQoMSwnRmlsZV8nLDExNTkyKQotUGF0Y2guYWRkX2ZpZWxkKDIsJ1NlcXVlbmNlJyw5NDc0KQotUGF0Y2guYWRkX2ZpZWxkKDMsJ1BhdGNoU2l6ZScsMjYwKQotUGF0Y2guYWRkX2ZpZWxkKDQsJ0F0dHJpYnV0ZXMnLDEyODIpCi1QYXRjaC5hZGRfZmllbGQoNSwnSGVhZGVyJyw2NDAwKQotUGF0Y2guYWRkX2ZpZWxkKDYsJ1N0cmVhbVJlZl8nLDc0NjIpCi0KLVBhdGNoUGFja2FnZSA9IFRhYmxlKCdQYXRjaFBhY2thZ2UnKQotUGF0Y2hQYWNrYWdlLmFkZF9maWVsZCgxLCdQYXRjaElkJywxMTU1OCkKLVBhdGNoUGFja2FnZS5hZGRfZmllbGQoMiwnTWVkaWFfJywxMjgyKQotCi1QdWJsaXNoQ29tcG9uZW50ID0gVGFibGUoJ1B1Ymxpc2hDb21wb25lbnQnKQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoMSwnQ29tcG9uZW50SWQnLDExNTU4KQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoMiwnUXVhbGlmaWVyJywxMTc3NSkKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDMsJ0NvbXBvbmVudF8nLDB4MkRGRikKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDQsJ0FwcERhdGEnLDgxOTEpCi1QdWJsaXNoQ29tcG9uZW50LmFkZF9maWVsZCg1LCdGZWF0dXJlXycsMzM2NikKLQotUmFkaW9CdXR0b24gPSBUYWJsZSgnUmFkaW9CdXR0b24nKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCgyLCdPcmRlcicsOTQ3NCkKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCgzLCdWYWx1ZScsMzM5MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg0LCdYJywxMjgyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDUsJ1knLDEyODIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoNiwnV2lkdGgnLDEyODIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoNywnSGVpZ2h0JywxMjgyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDgsJ1RleHQnLDgwMDApCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoOSwnSGVscCcsNzk4NikKLQotUmVnaXN0cnkgPSBUYWJsZSgnUmVnaXN0cnknKQotUmVnaXN0cnkuYWRkX2ZpZWxkKDEsJ1JlZ2lzdHJ5JywweDJERkYpCi1SZWdpc3RyeS5hZGRfZmllbGQoMiwnUm9vdCcsMTI4MikKLVJlZ2lzdHJ5LmFkZF9maWVsZCgzLCdLZXknLDQwOTUpCi1SZWdpc3RyeS5hZGRfZmllbGQoNCwnTmFtZScsODE5MSkKLVJlZ2lzdHJ5LmFkZF9maWVsZCg1LCdWYWx1ZScsNzkzNikKLVJlZ2lzdHJ5LmFkZF9maWVsZCg2LCdDb21wb25lbnRfJywweERGRikKLQotUmVnTG9jYXRvciA9IFRhYmxlKCdSZWdMb2NhdG9yJykKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotUmVnTG9jYXRvci5hZGRfZmllbGQoMiwnUm9vdCcsMTI4MikKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDMsJ0tleScsMzU4MykKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDQsJ05hbWUnLDc2NzkpCi1SZWdMb2NhdG9yLmFkZF9maWVsZCg1LCdUeXBlJyw1Mzc4KQotCi1SZW1vdmVGaWxlID0gVGFibGUoJ1JlbW92ZUZpbGUnKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoMSwnRmlsZUtleScsMTE1OTIpCi1SZW1vdmVGaWxlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLVJlbW92ZUZpbGUuYWRkX2ZpZWxkKDMsJ0ZpbGVOYW1lJyw4MTkxKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoNCwnRGlyUHJvcGVydHknLDM0MDApCi1SZW1vdmVGaWxlLmFkZF9maWVsZCg1LCdJbnN0YWxsTW9kZScsMTI4MikKLQotUmVtb3ZlSW5pRmlsZSA9IFRhYmxlKCdSZW1vdmVJbmlGaWxlJykKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDEsJ1JlbW92ZUluaUZpbGUnLDExNTkyKQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoMiwnRmlsZU5hbWUnLDQwOTUpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCgzLCdEaXJQcm9wZXJ0eScsNzQ5NikKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDQsJ1NlY3Rpb24nLDM5MzYpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg1LCdLZXknLDM5NjgpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCg2LCdWYWx1ZScsODE5MSkKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDcsJ0FjdGlvbicsMTI4MikKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDgsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1SZW1vdmVSZWdpc3RyeSA9IFRhYmxlKCdSZW1vdmVSZWdpc3RyeScpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoMSwnUmVtb3ZlUmVnaXN0cnknLDExNTkyKQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDIsJ1Jvb3QnLDEyODIpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoMywnS2V5Jyw0MDk1KQotUmVtb3ZlUmVnaXN0cnkuYWRkX2ZpZWxkKDQsJ05hbWUnLDgxOTEpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoNSwnQ29tcG9uZW50XycsMHhERkYpCi0KLVJlc2VydmVDb3N0ID0gVGFibGUoJ1Jlc2VydmVDb3N0JykKLVJlc2VydmVDb3N0LmFkZF9maWVsZCgxLCdSZXNlcnZlS2V5JywxMTU5MikKLVJlc2VydmVDb3N0LmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLVJlc2VydmVDb3N0LmFkZF9maWVsZCgzLCdSZXNlcnZlRm9sZGVyJyw3NDk2KQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDQsJ1Jlc2VydmVMb2NhbCcsMjYwKQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDUsJ1Jlc2VydmVTb3VyY2UnLDI2MCkKLQotU2VsZlJlZyA9IFRhYmxlKCdTZWxmUmVnJykKLVNlbGZSZWcuYWRkX2ZpZWxkKDEsJ0ZpbGVfJywweDJERkYpCi1TZWxmUmVnLmFkZF9maWVsZCgyLCdDb3N0Jyw1Mzc4KQotCi1TZXJ2aWNlQ29udHJvbCA9IFRhYmxlKCdTZXJ2aWNlQ29udHJvbCcpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoMSwnU2VydmljZUNvbnRyb2wnLDExNTkyKQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDIsJ05hbWUnLDQwOTUpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoMywnRXZlbnQnLDEyODIpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoNCwnQXJndW1lbnRzJyw4MTkxKQotU2VydmljZUNvbnRyb2wuYWRkX2ZpZWxkKDUsJ1dhaXQnLDUzNzgpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoNiwnQ29tcG9uZW50XycsMHhERkYpCi0KLVNlcnZpY2VJbnN0YWxsID0gVGFibGUoJ1NlcnZpY2VJbnN0YWxsJykKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgxLCdTZXJ2aWNlSW5zdGFsbCcsMTE1OTIpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMiwnTmFtZScsMzU4MykKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgzLCdEaXNwbGF5TmFtZScsODE5MSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg0LCdTZXJ2aWNlVHlwZScsMjYwKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDUsJ1N0YXJ0VHlwZScsMjYwKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDYsJ0Vycm9yQ29udHJvbCcsMjYwKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDcsJ0xvYWRPcmRlckdyb3VwJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDgsJ0RlcGVuZGVuY2llcycsNzY3OSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCg5LCdTdGFydE5hbWUnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMTAsJ1Bhc3N3b3JkJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDExLCdBcmd1bWVudHMnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMTIsJ0NvbXBvbmVudF8nLDB4REZGKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDEzLCdEZXNjcmlwdGlvbicsODE5MSkKLQotU2hvcnRjdXQgPSBUYWJsZSgnU2hvcnRjdXQnKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDEsJ1Nob3J0Y3V0JywxMTU5MikKLVNob3J0Y3V0LmFkZF9maWVsZCgyLCdEaXJlY3RvcnlfJywweERGRikKLVNob3J0Y3V0LmFkZF9maWVsZCgzLCdOYW1lJywzOTY4KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDQsJ0NvbXBvbmVudF8nLDB4REZGKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDUsJ1RhcmdldCcsMzQwMCkKLVNob3J0Y3V0LmFkZF9maWVsZCg2LCdBcmd1bWVudHMnLDc2NzkpCi1TaG9ydGN1dC5hZGRfZmllbGQoNywnRGVzY3JpcHRpb24nLDgxOTEpCi1TaG9ydGN1dC5hZGRfZmllbGQoOCwnSG90a2V5Jyw1Mzc4KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDksJ0ljb25fJyw3NDk2KQotU2hvcnRjdXQuYWRkX2ZpZWxkKDEwLCdJY29uSW5kZXgnLDUzNzgpCi1TaG9ydGN1dC5hZGRfZmllbGQoMTEsJ1Nob3dDbWQnLDUzNzgpCi1TaG9ydGN1dC5hZGRfZmllbGQoMTIsJ1drRGlyJyw3NDk2KQotCi1TaWduYXR1cmUgPSBUYWJsZSgnU2lnbmF0dXJlJykKLVNpZ25hdHVyZS5hZGRfZmllbGQoMSwnU2lnbmF0dXJlJywxMTU5MikKLVNpZ25hdHVyZS5hZGRfZmllbGQoMiwnRmlsZU5hbWUnLDM1ODMpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDMsJ01pblZlcnNpb24nLDc0NDQpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDQsJ01heFZlcnNpb24nLDc0NDQpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDUsJ01pblNpemUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDYsJ01heFNpemUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDcsJ01pbkRhdGUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDgsJ01heERhdGUnLDQzNTYpCi1TaWduYXR1cmUuYWRkX2ZpZWxkKDksJ0xhbmd1YWdlcycsNzY3OSkKLQotVGV4dFN0eWxlID0gVGFibGUoJ1RleHRTdHlsZScpCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDEsJ1RleHRTdHlsZScsMTE1OTIpCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDIsJ0ZhY2VOYW1lJywzMzYwKQotVGV4dFN0eWxlLmFkZF9maWVsZCgzLCdTaXplJywxMjgyKQotVGV4dFN0eWxlLmFkZF9maWVsZCg0LCdDb2xvcicsNDM1NikKLVRleHRTdHlsZS5hZGRfZmllbGQoNSwnU3R5bGVCaXRzJyw1Mzc4KQotCi1UeXBlTGliID0gVGFibGUoJ1R5cGVMaWInKQotVHlwZUxpYi5hZGRfZmllbGQoMSwnTGliSUQnLDExNTU4KQotVHlwZUxpYi5hZGRfZmllbGQoMiwnTGFuZ3VhZ2UnLDk0NzQpCi1UeXBlTGliLmFkZF9maWVsZCgzLCdDb21wb25lbnRfJywweDJERkYpCi1UeXBlTGliLmFkZF9maWVsZCg0LCdWZXJzaW9uJyw0MzU2KQotVHlwZUxpYi5hZGRfZmllbGQoNSwnRGVzY3JpcHRpb24nLDgwNjQpCi1UeXBlTGliLmFkZF9maWVsZCg2LCdEaXJlY3RvcnlfJywweDFERkYpCi1UeXBlTGliLmFkZF9maWVsZCg3LCdGZWF0dXJlXycsMzM2NikKLVR5cGVMaWIuYWRkX2ZpZWxkKDgsJ0Nvc3QnLDQzNTYpCi0KLVVJVGV4dCA9IFRhYmxlKCdVSVRleHQnKQotVUlUZXh0LmFkZF9maWVsZCgxLCdLZXknLDExNTkyKQotVUlUZXh0LmFkZF9maWVsZCgyLCdUZXh0Jyw4MTkxKQotCi1VcGdyYWRlID0gVGFibGUoJ1VwZ3JhZGUnKQotVXBncmFkZS5hZGRfZmllbGQoMSwnVXBncmFkZUNvZGUnLDExNTU4KQotVXBncmFkZS5hZGRfZmllbGQoMiwnVmVyc2lvbk1pbicsMTU2MzYpCi1VcGdyYWRlLmFkZF9maWVsZCgzLCdWZXJzaW9uTWF4JywxNTYzNikKLVVwZ3JhZGUuYWRkX2ZpZWxkKDQsJ0xhbmd1YWdlJywxNTg3MSkKLVVwZ3JhZGUuYWRkX2ZpZWxkKDUsJ0F0dHJpYnV0ZXMnLDg0NTIpCi1VcGdyYWRlLmFkZF9maWVsZCg2LCdSZW1vdmUnLDc2NzkpCi1VcGdyYWRlLmFkZF9maWVsZCg3LCdBY3Rpb25Qcm9wZXJ0eScsMzQwMCkKLQotVmVyYiA9IFRhYmxlKCdWZXJiJykKLVZlcmIuYWRkX2ZpZWxkKDEsJ0V4dGVuc2lvbl8nLDExNzc1KQotVmVyYi5hZGRfZmllbGQoMiwnVmVyYicsMTE1NTIpCi1WZXJiLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLVZlcmIuYWRkX2ZpZWxkKDQsJ0NvbW1hbmQnLDgxOTEpCi1WZXJiLmFkZF9maWVsZCg1LCdBcmd1bWVudCcsODE5MSkKLQotdGFibGVzPVtfVmFsaWRhdGlvbiwgQWN0aW9uVGV4dCwgQWRtaW5FeGVjdXRlU2VxdWVuY2UsIENvbmRpdGlvbiwgQWRtaW5VSVNlcXVlbmNlLCBBZHZ0RXhlY3V0ZVNlcXVlbmNlLCBBZHZ0VUlTZXF1ZW5jZSwgQXBwSWQsIEFwcFNlYXJjaCwgUHJvcGVydHksIEJCQ29udHJvbCwgQmlsbGJvYXJkLCBGZWF0dXJlLCBCaW5hcnksIEJpbmRJbWFnZSwgRmlsZSwgQ0NQU2VhcmNoLCBDaGVja0JveCwgQ2xhc3MsIENvbXBvbmVudCwgSWNvbiwgUHJvZ0lkLCBDb21ib0JveCwgQ29tcExvY2F0b3IsIENvbXBsdXMsIERpcmVjdG9yeSwgQ29udHJvbCwgRGlhbG9nLCBDb250cm9sQ29uZGl0aW9uLCBDb250cm9sRXZlbnQsIENyZWF0ZUZvbGRlciwgQ3VzdG9tQWN0aW9uLCBEckxvY2F0b3IsIER1cGxpY2F0ZUZpbGUsIEVudmlyb25tZW50LCBFcnJvciwgRXZlbnRNYXBwaW5nLCBFeHRlbnNpb24sIE1JTUUsIEZlYXR1cmVDb21wb25lbnRzLCBGaWxlU0ZQQ2F0YWxvZywgU0ZQQ2F0YWxvZywgRm9udCwgSW5pRmlsZSwgSW5pTG9jYXRvciwgSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSwgSW5zdGFsbFVJU2VxdWVuY2UsIElzb2xhdGVkQ29tcG9uZW50LCBMYXVuY2hDb25kaXRpb24sIExpc3RCb3gsIExpc3RWaWV3LCBMb2NrUGVybWlzc2lvbnMsIE1lZGlhLCBNb3ZlRmlsZSwgTXNpQXNzZW1ibHksIE1zaUFzc2VtYmx5TmFtZSwgTXNpRGlnaXRhbENlcnRpZmljYXRlLCBNc2lEaWdpdGFsU2lnbmF0dXJlLCBNc2lGaWxlSGFzaCwgTXNpUGF0Y2hIZWFkZXJzLCBPREJDQXR0cmlidXRlLCBPREJDRHJpdmVyLCBPREJDRGF0YVNvdXJjZSwgT0RCQ1NvdXJjZUF0dHJpYnV0ZSwgT0RCQ1RyYW5zbGF0b3IsIFBhdGNoLCBQYXRjaFBhY2thZ2UsIFB1Ymxpc2hDb21wb25lbnQsIFJhZGlvQnV0dG9uLCBSZWdpc3RyeSwgUmVnTG9jYXRvciwgUmVtb3ZlRmlsZSwgUmVtb3ZlSW5pRmlsZSwgUmVtb3ZlUmVnaXN0cnksIFJlc2VydmVDb3N0LCBTZWxmUmVnLCBTZXJ2aWNlQ29udHJvbCwgU2VydmljZUluc3RhbGwsIFNob3J0Y3V0LCBTaWduYXR1cmUsIFRleHRTdHlsZSwgVHlwZUxpYiwgVUlUZXh0LCBVcGdyYWRlLCBWZXJiXQotCi1fVmFsaWRhdGlvbl9yZWNvcmRzID0gWwotKHUnX1ZhbGlkYXRpb24nLHUnVGFibGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGFibGUnLCksCi0odSdfVmFsaWRhdGlvbicsdSdDb2x1bW4nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgY29sdW1uJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Rlc2NyaXB0aW9uIG9mIGNvbHVtbicsKSwKLSh1J19WYWxpZGF0aW9uJyx1J1NldCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU2V0IG9mIHZhbHVlcyB0aGF0IGFyZSBwZXJtaXR0ZWQnLCksCi0odSdfVmFsaWRhdGlvbicsdSdDYXRlZ29yeScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQ7Rm9ybWF0dGVkO1RlbXBsYXRlO0NvbmRpdGlvbjtHdWlkO1BhdGg7VmVyc2lvbjtMYW5ndWFnZTtJZGVudGlmaWVyO0JpbmFyeTtVcHBlckNhc2U7TG93ZXJDYXNlO0ZpbGVuYW1lO1BhdGhzO0FueVBhdGg7V2lsZENhcmRGaWxlbmFtZTtSZWdQYXRoO0tleUZvcm1hdHRlZDtDdXN0b21Tb3VyY2U7UHJvcGVydHk7Q2FiaW5ldDtTaG9ydGN1dDtVUkwnLHUnU3RyaW5nIGNhdGVnb3J5JywpLAotKHUnX1ZhbGlkYXRpb24nLHUnS2V5Q29sdW1uJyx1J1knLDEsMzIsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb2x1bW4gdG8gd2hpY2ggZm9yZWlnbiBrZXkgY29ubmVjdHMnLCksCi0odSdfVmFsaWRhdGlvbicsdSdLZXlUYWJsZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yIGZvcmVpZ24ga2V5LCBOYW1lIG9mIHRhYmxlIHRvIHdoaWNoIGRhdGEgbXVzdCBsaW5rJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnTWF4VmFsdWUnLHUnWScsLTIxNDc0ODM2NDcsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01heGltdW0gdmFsdWUgYWxsb3dlZCcsKSwKLSh1J19WYWxpZGF0aW9uJyx1J01pblZhbHVlJyx1J1knLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNaW5pbXVtIHZhbHVlIGFsbG93ZWQnLCksCi0odSdfVmFsaWRhdGlvbicsdSdOdWxsYWJsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1k7TjtAJyx1J1doZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZScsKSwKLSh1J0FjdGlvblRleHQnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gcHJvZ3Jlc3MgZGlhbG9nIGFuZCBsb2cgd2hlbiBhY3Rpb24gaXMgZXhlY3V0aW5nLicsKSwKLSh1J0FjdGlvblRleHQnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBiZSBkZXNjcmliZWQuJywpLAotKHUnQWN0aW9uVGV4dCcsdSdUZW1wbGF0ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJyxOb25lLCB1J09wdGlvbmFsIGxvY2FsaXplZCBmb3JtYXQgdGVtcGxhdGUgdXNlZCB0byBmb3JtYXQgYWN0aW9uIGRhdGEgcmVjb3JkcyBmb3IgZGlzcGxheSBkdXJpbmcgYWN0aW9uIGV4ZWN1dGlvbi4nLCksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0FkbWluRXhlY3V0ZVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0NvbmRpdGlvbicsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnRXhwcmVzc2lvbiBldmFsdWF0ZWQgdG8gZGV0ZXJtaW5lIGlmIExldmVsIGluIHRoZSBGZWF0dXJlIHRhYmxlIGlzIHRvIGNoYW5nZS4nLCksCi0odSdDb25kaXRpb24nLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gYSBGZWF0dXJlIGVudHJ5IGluIEZlYXR1cmUgdGFibGUuJywpLAotKHUnQ29uZGl0aW9uJyx1J0xldmVsJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOZXcgc2VsZWN0aW9uIExldmVsIHRvIHNldCBpbiBGZWF0dXJlIHRhYmxlIGlmIENvbmRpdGlvbiBldmFsdWF0ZXMgdG8gVFJVRS4nLCksCi0odSdBZG1pblVJU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZG1pblVJU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnQWR2dFVJU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdBZHZ0VUlTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnQWR2dFVJU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdBcHBJZCcsdSdBcHBJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdBY3RpdmF0ZUF0U3RvcmFnZScsdSdZJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J0RsbFN1cnJvZ2F0ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdMb2NhbFNlcnZpY2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnUmVtb3RlU2VydmVyTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J1J1bkFzSW50ZXJhY3RpdmVVc2VyJyx1J1knLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnU2VydmljZVBhcmFtZXRlcnMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnQXBwU2VhcmNoJyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgcHJvcGVydHkgYXNzb2NpYXRlZCB3aXRoIGEgU2lnbmF0dXJlJywpLAotKHUnQXBwU2VhcmNoJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nLCksCi0odSdQcm9wZXJ0eScsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBwcm9wZXJ0eSwgdXBwZXJjYXNlIGlmIHNldHRhYmxlIGJ5IGxhdW5jaGVyIG9yIGxvYWRlci4nLCksCi0odSdQcm9wZXJ0eScsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU3RyaW5nIHZhbHVlIGZvciBwcm9wZXJ0eS4gIE5ldmVyIG51bGwgb3IgZW1wdHkuJywpLAotKHUnQkJDb250cm9sJyx1J1R5cGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdZJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJywpLAotKHUnQkJDb250cm9sJyx1J0JCQ29udHJvbCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGJpbGxib2FyZCwgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGJpbGxib2FyZC4nLCksCi0odSdCQkNvbnRyb2wnLHUnQXR0cmlidXRlcycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J0JpbGxib2FyZF8nLHUnTicsTm9uZSwgTm9uZSwgdSdCaWxsYm9hcmQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0V4dGVybmFsIGtleSB0byB0aGUgQmlsbGJvYXJkIHRhYmxlLCBuYW1lIG9mIHRoZSBiaWxsYm9hcmQuJywpLAotKHUnQkJDb250cm9sJyx1J0hlaWdodCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J1dpZHRoJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0JCQ29udHJvbCcsdSdYJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQmlsbGJvYXJkJyx1J0FjdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgYW4gYWN0aW9uLiBUaGUgYmlsbGJvYXJkIGlzIGRpc3BsYXllZCBkdXJpbmcgdGhlIHByb2dyZXNzIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhpcyBhY3Rpb24uJywpLAotKHUnQmlsbGJvYXJkJyx1J0JpbGxib2FyZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgYmlsbGJvYXJkLicsKSwKLSh1J0JpbGxib2FyZCcsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0FuIGV4dGVybmFsIGtleSB0byB0aGUgRmVhdHVyZSBUYWJsZS4gVGhlIGJpbGxib2FyZCBpcyBzaG93biBvbmx5IGlmIHRoaXMgZmVhdHVyZSBpcyBiZWluZyBpbnN0YWxsZWQuJywpLAotKHUnQmlsbGJvYXJkJyx1J09yZGVyaW5nJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYmlsbGJvYXJkIGNvcnJlc3BvbmRpbmcgdG8gYW4gYWN0aW9uIHRoZXkgd2lsbCBiZSBzaG93biBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGlzIGNvbHVtbi4nLCksCi0odSdGZWF0dXJlJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdMb25nZXIgZGVzY3JpcHRpdmUgdGV4dCBkZXNjcmliaW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJywpLAotKHUnRmVhdHVyZScsdSdBdHRyaWJ1dGVzJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMDsxOzI7NDs1OzY7ODs5OzEwOzE2OzE3OzE4OzIwOzIxOzIyOzI0OzI1OzI2OzMyOzMzOzM0OzM2OzM3OzM4OzQ4OzQ5OzUwOzUyOzUzOzU0Jyx1J0ZlYXR1cmUgYXR0cmlidXRlcycsKSwKLSh1J0ZlYXR1cmUnLHUnRmVhdHVyZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmVhdHVyZSByZWNvcmQuJywpLAotKHUnRmVhdHVyZScsdSdEaXJlY3RvcnlfJyx1J1knLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnVXBwZXJDYXNlJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBEaXJlY3RvcnkgdGhhdCBjYW4gYmUgY29uZmlndXJlZCBieSB0aGUgVUkuIEEgbm9uLW51bGwgdmFsdWUgd2lsbCBlbmFibGUgdGhlIGJyb3dzZSBidXR0b24uJywpLAotKHUnRmVhdHVyZScsdSdMZXZlbCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGluc3RhbGwgbGV2ZWwgYXQgd2hpY2ggcmVjb3JkIHdpbGwgYmUgaW5pdGlhbGx5IHNlbGVjdGVkLiBBbiBpbnN0YWxsIGxldmVsIG9mIDAgd2lsbCBkaXNhYmxlIGFuIGl0ZW0gYW5kIHByZXZlbnQgaXRzIGRpc3BsYXkuJywpLAotKHUnRmVhdHVyZScsdSdUaXRsZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU2hvcnQgdGV4dCBpZGVudGlmeWluZyBhIHZpc2libGUgZmVhdHVyZSBpdGVtLicsKSwKLSh1J0ZlYXR1cmUnLHUnRGlzcGxheScsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtZXJpYyBzb3J0IG9yZGVyLCB1c2VkIHRvIGZvcmNlIGEgc3BlY2lmaWMgZGlzcGxheSBvcmRlcmluZy4nLCksCi0odSdGZWF0dXJlJyx1J0ZlYXR1cmVfUGFyZW50Jyx1J1knLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwga2V5IG9mIGEgcGFyZW50IHJlY29yZCBpbiB0aGUgc2FtZSB0YWJsZS4gSWYgdGhlIHBhcmVudCBpcyBub3Qgc2VsZWN0ZWQsIHRoZW4gdGhlIHJlY29yZCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQuIE51bGwgaW5kaWNhdGVzIGEgcm9vdCBpdGVtLicsKSwKLSh1J0JpbmFyeScsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdVbmlxdWUga2V5IGlkZW50aWZ5aW5nIHRoZSBiaW5hcnkgZGF0YS4nLCksCi0odSdCaW5hcnknLHUnRGF0YScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdUaGUgdW5mb3JtYXR0ZWQgYmluYXJ5IGRhdGEuJywpLAotKHUnQmluZEltYWdlJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIGluZGV4IGludG8gdGhlIEZpbGUgdGFibGUuIFRoaXMgbXVzdCBiZSBhbiBleGVjdXRhYmxlIGZpbGUuJywpLAotKHUnQmluZEltYWdlJyx1J1BhdGgnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQYXRocycsTm9uZSwgdSdBIGxpc3Qgb2YgOyAgZGVsaW1pdGVkIHBhdGhzIHRoYXQgcmVwcmVzZW50IHRoZSBwYXRocyB0byBiZSBzZWFyY2hlZCBmb3IgdGhlIGltcG9ydCBETExTLiBUaGUgbGlzdCBpcyB1c3VhbGx5IGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGVhY2ggZW5jbG9zZWQgd2l0aGluIHNxdWFyZSBicmFja2V0cyBbXSAuJywpLAotKHUnRmlsZScsdSdTZXF1ZW5jZScsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2VxdWVuY2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBtZWRpYSBpbWFnZXM7IG9yZGVyIG11c3QgdHJhY2sgY2FiaW5ldCBvcmRlci4nLCksCi0odSdGaWxlJyx1J0F0dHJpYnV0ZXMnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIGZpbGUgYXR0cmlidXRlcyAod2l0aCB0aGUgZGVjaW1hbCB2YWx1ZSBvZiBlYWNoIGJpdCBwb3NpdGlvbiBpbiBwYXJlbnRoZXNlcyknLCksCi0odSdGaWxlJyx1J0ZpbGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLCBtdXN0IG1hdGNoIGlkZW50aWZpZXIgaW4gY2FiaW5ldC4gIEZvciB1bmNvbXByZXNzZWQgZmlsZXMsIHRoaXMgZmllbGQgaXMgaWdub3JlZC4nLCksCi0odSdGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlLicsKSwKLSh1J0ZpbGUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdGaWxlIG5hbWUgdXNlZCBmb3IgaW5zdGFsbGF0aW9uLCBtYXkgYmUgbG9jYWxpemVkLiAgVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nLCksCi0odSdGaWxlJyx1J0ZpbGVTaXplJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdGaWxlJyx1J0xhbmd1YWdlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLE5vbmUsIHUnTGlzdCBvZiBkZWNpbWFsIGxhbmd1YWdlIElkcywgY29tbWEtc2VwYXJhdGVkIGlmIG1vcmUgdGhhbiBvbmUuJywpLAotKHUnRmlsZScsdSdWZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J1ZlcnNpb24nLE5vbmUsIHUnVmVyc2lvbiBzdHJpbmcgZm9yIHZlcnNpb25lZCBmaWxlczsgIEJsYW5rIGZvciB1bnZlcnNpb25lZCBmaWxlcy4nLCksCi0odSdDQ1BTZWFyY2gnLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J1NpZ25hdHVyZTtSZWdMb2NhdG9yO0luaUxvY2F0b3I7RHJMb2NhdG9yO0NvbXBMb2NhdG9yJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlLCAgUmVnTG9jYXRvciwgSW5pTG9jYXRvciwgQ29tcExvY2F0b3IgYW5kIHRoZSBEckxvY2F0b3IgdGFibGVzLicsKSwKLSh1J0NoZWNrQm94Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhlIGl0ZW0uJywpLAotKHUnQ2hlY2tCb3gnLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0uJywpLAotKHUnQ2xhc3MnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIENsYXNzLicsKSwKLSh1J0NsYXNzJyx1J0F0dHJpYnV0ZXMnLHUnWScsTm9uZSwgMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDbGFzcyByZWdpc3RyYXRpb24gYXR0cmlidXRlcy4nLCksCi0odSdDbGFzcycsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJywpLAotKHUnQ2xhc3MnLHUnQXBwSWRfJyx1J1knLE5vbmUsIE5vbmUsIHUnQXBwSWQnLDEsdSdHdWlkJyxOb25lLCB1J09wdGlvbmFsIEFwcElEIGNvbnRhaW5pbmcgRENPTSBpbmZvcm1hdGlvbiBmb3IgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiAoc3RyaW5nIEdVSUQpLicsKSwKLSh1J0NsYXNzJyx1J0FyZ3VtZW50Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J29wdGlvbmFsIGFyZ3VtZW50IGZvciBMb2NhbFNlcnZlcnMuJywpLAotKHUnQ2xhc3MnLHUnQ0xTSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeS4nLCksCi0odSdDbGFzcycsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nLCksCi0odSdDbGFzcycsdSdDb250ZXh0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbnVtZXJpYyBzZXJ2ZXIgY29udGV4dCBmb3IgdGhpcyBzZXJ2ZXIuIENMU0NUWF94eHh4JywpLAotKHUnQ2xhc3MnLHUnRGVmSW5wcm9jSGFuZGxlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyx1JzE7MjszJyx1J09wdGlvbmFsIGRlZmF1bHQgaW5wcm9jIGhhbmRsZXIuICBPbmx5IG9wdGlvbmFsbHkgcHJvdmlkZWQgaWYgQ29udGV4dD1DTFNDVFhfTE9DQUxfU0VSVkVSLiAgVHlwaWNhbGx5ICJvbGUzMi5kbGwiIG9yICJtYXBpMzIuZGxsIicsKSwKLSh1J0NsYXNzJyx1J0ZpbGVUeXBlTWFzaycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnT3B0aW9uYWwgc3RyaW5nIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBIS0NSdGhpcyBDTFNJRCkga2V5LiBJZiBtdWx0aXBsZSBwYXR0ZXJucyBleGlzdCwgdGhleSBtdXN0IGJlIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiwgYW5kIG51bWVyaWMgc3Via2V5cyB3aWxsIGJlIGdlbmVyYXRlZDogMCwxLDIuLi4nLCksCi0odSdDbGFzcycsdSdJY29uXycsdSdZJyxOb25lLCBOb25lLCB1J0ljb24nLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4gV2lsbCBiZSB3cml0dGVuIHVuZGVyIHRoZSBEZWZhdWx0SWNvbiBrZXkuJywpLAotKHUnQ2xhc3MnLHUnSWNvbkluZGV4Jyx1J1knLC0zMjc2NywzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJywpLAotKHUnQ2xhc3MnLHUnUHJvZ0lkX0RlZmF1bHQnLHUnWScsTm9uZSwgTm9uZSwgdSdQcm9nSWQnLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIFByb2dJZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4nLCksCi0odSdDb21wb25lbnQnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1IkEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgd2lsbCBkaXNhYmxlIHRoaXMgY29tcG9uZW50IGlmIHRoZSBzcGVjaWZpZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0aGUgJ1RydWUnIHN0YXRlLiBJZiBhIGNvbXBvbmVudCBpcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLCByZWdhcmRsZXNzIG9mIHRoZSAnQWN0aW9uJyBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudC4iLCksCi0odSdDb21wb25lbnQnLHUnQXR0cmlidXRlcycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlbW90ZSBleGVjdXRpb24gb3B0aW9uLCBvbmUgb2YgaXJzRW51bScsKSwKLSh1J0NvbXBvbmVudCcsdSdDb21wb25lbnQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGNvbXBvbmVudCByZWNvcmQuJywpLAotKHUnQ29tcG9uZW50Jyx1J0NvbXBvbmVudElkJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdBIHN0cmluZyBHVUlEIHVuaXF1ZSB0byB0aGlzIGNvbXBvbmVudCwgdmVyc2lvbiwgYW5kIGxhbmd1YWdlLicsKSwKLSh1J0NvbXBvbmVudCcsdSdEaXJlY3RvcnlfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBrZXkgb2YgYSBEaXJlY3RvcnkgdGFibGUgcmVjb3JkLiBUaGlzIGlzIGFjdHVhbGx5IGEgcHJvcGVydHkgbmFtZSB3aG9zZSB2YWx1ZSBjb250YWlucyB0aGUgYWN0dWFsIHBhdGgsIHNldCBlaXRoZXIgYnkgdGhlIEFwcFNlYXJjaCBhY3Rpb24gb3Igd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdG9yeSB0YWJsZS4nLCksCi0odSdDb21wb25lbnQnLHUnS2V5UGF0aCcsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGU7UmVnaXN0cnk7T0RCQ0RhdGFTb3VyY2UnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0VpdGhlciB0aGUgcHJpbWFyeSBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSwgUmVnaXN0cnkgdGFibGUsIG9yIE9EQkNEYXRhU291cmNlIHRhYmxlLiBUaGlzIGV4dHJhY3QgcGF0aCBpcyBzdG9yZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluc3RhbGxlZCwgYW5kIGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiB0aGUgY29tcG9uZW50IGFuZCB0byByZXR1cm4gdGhlIHBhdGggdG8gaXQuJywpLAotKHUnSWNvbicsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleS4gTmFtZSBvZiB0aGUgaWNvbiBmaWxlLicsKSwKLSh1J0ljb24nLHUnRGF0YScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgYmluYXJ5IGljb24gZGF0YSBpbiBQRSAoLkRMTCBvciAuRVhFKSBvciBpY29uICguSUNPKSBmb3JtYXQuJywpLAotKHUnUHJvZ0lkJyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBQcm9ncmFtIGlkZW50aWZpZXIuJywpLAotKHUnUHJvZ0lkJyx1J0ljb25fJyx1J1knLE5vbmUsIE5vbmUsIHUnSWNvbicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgZm9yZWlnbiBrZXkgaW50byB0aGUgSWNvbiBUYWJsZSwgc3BlY2lmeWluZyB0aGUgaWNvbiBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFByb2dJZC4gV2lsbCBiZSB3cml0dGVuIHVuZGVyIHRoZSBEZWZhdWx0SWNvbiBrZXkuJywpLAotKHUnUHJvZ0lkJyx1J0ljb25JbmRleCcsdSdZJywtMzI3NjcsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicsKSwKLSh1J1Byb2dJZCcsdSdQcm9nSWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBQcm9ncmFtIElkZW50aWZpZXIuIFByaW1hcnkga2V5LicsKSwKLSh1J1Byb2dJZCcsdSdDbGFzc18nLHUnWScsTm9uZSwgTm9uZSwgdSdDbGFzcycsMSx1J0d1aWQnLE5vbmUsIHUnVGhlIENMU0lEIG9mIGFuIE9MRSBmYWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFByb2dJZC4nLCksCi0odSdQcm9nSWQnLHUnUHJvZ0lkX1BhcmVudCcsdSdZJyxOb25lLCBOb25lLCB1J1Byb2dJZCcsMSx1J1RleHQnLE5vbmUsIHUnVGhlIFBhcmVudCBQcm9ncmFtIElkZW50aWZpZXIuIElmIHNwZWNpZmllZCwgdGhlIFByb2dJZCBjb2x1bW4gYmVjb21lcyBhIHZlcnNpb24gaW5kZXBlbmRlbnQgcHJvZyBpZC4nLCksCi0odSdDb21ib0JveCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nLCksCi0odSdDb21ib0JveCcsdSdQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGNvbWJvYm94LicsKSwKLSh1J0NvbWJvQm94Jyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnQ29tYm9Cb3gnLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC5cdFRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nLCksCi0odSdDb21wTG9jYXRvcicsdSdUeXBlJyx1J1knLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgYm9vbGVhbiB2YWx1ZSB0aGF0IGRldGVybWluZXMgaWYgdGhlIHJlZ2lzdHJ5IHZhbHVlIGlzIGEgZmlsZW5hbWUgb3IgYSBkaXJlY3RvcnkgbG9jYXRpb24uJywpLAotKHUnQ29tcExvY2F0b3InLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4nLCksCi0odSdDb21wTG9jYXRvcicsdSdDb21wb25lbnRJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnQSBzdHJpbmcgR1VJRCB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQsIHZlcnNpb24sIGFuZCBsYW5ndWFnZS4nLCksCi0odSdDb21wbHVzJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBDb21QbHVzIGNvbXBvbmVudC4nLCksCi0odSdDb21wbHVzJyx1J0V4cFR5cGUnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbVBsdXMgY29tcG9uZW50IGF0dHJpYnV0ZXMuJywpLAotKHUnRGlyZWN0b3J5Jyx1J0RpcmVjdG9yeScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVW5pcXVlIGlkZW50aWZpZXIgZm9yIGRpcmVjdG9yeSBlbnRyeSwgcHJpbWFyeSBrZXkuIElmIGEgcHJvcGVydHkgYnkgdGhpcyBuYW1lIGlzIGRlZmluZWQsIGl0IGNvbnRhaW5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRpcmVjdG9yeS4nLCksCi0odSdEaXJlY3RvcnknLHUnRGVmYXVsdERpcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHREaXInLE5vbmUsIHUiVGhlIGRlZmF1bHQgc3ViLXBhdGggdW5kZXIgcGFyZW50J3MgcGF0aC4iLCksCi0odSdEaXJlY3RvcnknLHUnRGlyZWN0b3J5X1BhcmVudCcsdSdZJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIHRoZSBlbnRyeSBpbiB0aGlzIHRhYmxlIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgcGFyZW50IGRpcmVjdG9yeS4gQSByZWNvcmQgcGFyZW50ZWQgdG8gaXRzZWxmIG9yIHdpdGggYSBOdWxsIHBhcmVudCByZXByZXNlbnRzIGEgcm9vdCBvZiB0aGUgaW5zdGFsbCB0cmVlLicsKSwKLSh1J0NvbnRyb2wnLHUnVHlwZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdZJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJywpLAotKHUnQ29udHJvbCcsdSdQcm9wZXJ0eScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgYSBkZWZpbmVkIHByb3BlcnR5IHRvIGJlIGxpbmtlZCB0byB0aGlzIGNvbnRyb2wuICcsKSwKLSh1J0NvbnRyb2wnLHUnQXR0cmlidXRlcycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdIZWlnaHQnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hlaWdodCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicsKSwKLSh1J0NvbnRyb2wnLHUnV2lkdGgnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpZHRoIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdYJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdDb250cm9sJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRoZSBjb250cm9sLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlhbG9nLCBidXQgY2FuIHJlcGVhdCBvbiBkaWZmZXJlbnQgZGlhbG9ncy4gJywpLAotKHUnQ29udHJvbCcsdSdDb250cm9sX05leHQnLHUnWScsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbmFtZSBvZiBhbiBvdGhlciBjb250cm9sIG9uIHRoZSBzYW1lIGRpYWxvZy4gVGhpcyBsaW5rIGRlZmluZXMgdGhlIHRhYiBvcmRlciBvZiB0aGUgY29udHJvbHMuIFRoZSBsaW5rcyBoYXZlIHRvIGZvcm0gb25lIG9yIG1vcmUgY3ljbGVzIScsKSwKLSh1J0NvbnRyb2wnLHUnRGlhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J0RpYWxvZycsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRXh0ZXJuYWwga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdDb250cm9sJyx1J0hlbHAnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBoZWxwIHN0cmluZ3MgdXNlZCB3aXRoIHRoZSBidXR0b24uIFRoZSB0ZXh0IGlzIG9wdGlvbmFsLiAnLCksCi0odSdEaWFsb2cnLHUnQXR0cmlidXRlcycsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGRpYWxvZy4nLCksCi0odSdEaWFsb2cnLHUnSGVpZ2h0Jyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0RpYWxvZycsdSdXaWR0aCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0RpYWxvZycsdSdEaWFsb2cnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdEaWFsb2cnLHUnQ29udHJvbF9DYW5jZWwnLHUnWScsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdEZWZpbmVzIHRoZSBjYW5jZWwgY29udHJvbC4gSGl0dGluZyBlc2NhcGUgb3IgY2xpY2tpbmcgb24gdGhlIGNsb3NlIGljb24gb24gdGhlIGRpYWxvZyBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJywpLAotKHUnRGlhbG9nJyx1J0NvbnRyb2xfRGVmYXVsdCcsdSdZJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0RlZmluZXMgdGhlIGRlZmF1bHQgY29udHJvbC4gSGl0dGluZyByZXR1cm4gaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicsKSwKLSh1J0RpYWxvZycsdSdDb250cm9sX0ZpcnN0Jyx1J04nLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnRGVmaW5lcyB0aGUgY29udHJvbCB0aGF0IGhhcyB0aGUgZm9jdXMgd2hlbiB0aGUgZGlhbG9nIGlzIGNyZWF0ZWQuJywpLAotKHUnRGlhbG9nJyx1J0hDZW50ZXJpbmcnLHUnTicsMCwxMDAsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyBsZWZ0IGVuZCwgMTAwIG1lYW5zIHJpZ2h0IGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJywpLAotKHUnRGlhbG9nJyx1J1RpdGxlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1IkEgdGV4dCBzdHJpbmcgc3BlY2lmeWluZyB0aGUgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0aXRsZSBiYXIgb2YgdGhlIGRpYWxvZydzIHdpbmRvdy4iLCksCi0odSdEaWFsb2cnLHUnVkNlbnRlcmluZycsdSdOJywwLDEwMCxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyB0b3AgZW5kLCAxMDAgbWVhbnMgYm90dG9tIGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJywpLAotKHUnQ29udHJvbENvbmRpdGlvbicsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0O0Rpc2FibGU7RW5hYmxlO0hpZGU7U2hvdycsdSdUaGUgZGVzaXJlZCBhY3Rpb24gdG8gYmUgdGFrZW4gb24gdGhlIHNwZWNpZmllZCBjb250cm9sLicsKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLHUnQ29uZGl0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgdGhlIGFjdGlvbiBzaG91bGQgYmUgdHJpZ2dlcmVkLicsKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLHUnRGlhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J0RpYWxvZycsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnQ29udHJvbENvbmRpdGlvbicsdSdDb250cm9sXycsdSdOJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIENvbnRyb2wgdGFibGUsIG5hbWUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdBIHN0YW5kYXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHNwZWNpZmllcyB1bmRlciB3aGljaCBjb25kaXRpb25zIGFuIGV2ZW50IHNob3VsZCBiZSB0cmlnZ2VyZWQuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J09yZGVyaW5nJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdXNlZCB0byBvcmRlciBzZXZlcmFsIGV2ZW50cyB0aWVkIHRvIHRoZSBzYW1lIGNvbnRyb2wuIENhbiBiZSBsZWZ0IGJsYW5rLicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdBcmd1bWVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBIHZhbHVlIHRvIGJlIHVzZWQgYXMgYSBtb2RpZmllciB3aGVuIHRyaWdnZXJpbmcgYSBwYXJ0aWN1bGFyIGV2ZW50LicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdEaWFsb2dfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlhbG9nJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdDb250cm9sRXZlbnQnLHUnQ29udHJvbF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0V2ZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgc2hvdWxkIHRha2UgcGxhY2Ugd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBjb250cm9sIHNwZWNpZmllZCBieSB0aGUgZmlyc3QgdHdvIGVudHJpZXMuJywpLAotKHUnQ3JlYXRlRm9sZGVyJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdDcmVhdGVGb2xkZXInLHUnRGlyZWN0b3J5XycsdSdOJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIGNvdWxkIGJlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZS4nLCksCi0odSdDdXN0b21BY3Rpb24nLHUnVHlwZScsdSdOJywxLDE2MzgzLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG51bWVyaWMgY3VzdG9tIGFjdGlvbiB0eXBlLCBjb25zaXN0aW5nIG9mIHNvdXJjZSBsb2NhdGlvbiwgY29kZSB0eXBlLCBlbnRyeSwgb3B0aW9uIGZsYWdzLicsKSwKLSh1J0N1c3RvbUFjdGlvbicsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBuYW1lIG9mIGFjdGlvbiwgbm9ybWFsbHkgYXBwZWFycyBpbiBzZXF1ZW5jZSB0YWJsZSB1bmxlc3MgcHJpdmF0ZSB1c2UuJywpLAotKHUnQ3VzdG9tQWN0aW9uJyx1J1NvdXJjZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0N1c3RvbVNvdXJjZScsTm9uZSwgdSdUaGUgdGFibGUgcmVmZXJlbmNlIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGNvZGUuJywpLAotKHUnQ3VzdG9tQWN0aW9uJyx1J1RhcmdldCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdFeGNlY3V0aW9uIHBhcmFtZXRlciwgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBjdXN0b20gYWN0aW9uJywpLAotKHUnRHJMb2NhdG9yJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJywpLAotKHUnRHJMb2NhdG9yJyx1J1BhdGgnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbnlQYXRoJyxOb25lLCB1J1RoZSBwYXRoIG9uIHRoZSB1c2VyIHN5c3RlbS4gVGhpcyBpcyBhIGVpdGhlciBhIHN1YnBhdGggYmVsb3cgdGhlIHZhbHVlIG9mIHRoZSBQYXJlbnQgb3IgYSBmdWxsIHBhdGguIFRoZSBwYXRoIG1heSBjb250YWluIHByb3BlcnRpZXMgZW5jbG9zZWQgd2l0aGluIFsgXSB0aGF0IHdpbGwgYmUgZXhwYW5kZWQuJywpLAotKHUnRHJMb2NhdG9yJyx1J0RlcHRoJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgZGVwdGggYmVsb3cgdGhlIHBhdGggdG8gd2hpY2ggdGhlIFNpZ25hdHVyZV8gaXMgcmVjdXJzaXZlbHkgc2VhcmNoZWQuIElmIGFic2VudCwgdGhlIGRlcHRoIGlzIGFzc3VtZWQgdG8gYmUgMC4nLCksCi0odSdEckxvY2F0b3InLHUnUGFyZW50Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgcGFyZW50IGZpbGUgc2lnbmF0dXJlLiBJdCBpcyBhbHNvIGEgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4gSWYgbnVsbCBhbmQgdGhlIFBhdGggY29sdW1uIGRvZXMgbm90IGV4cGFuZCB0byBhIGZ1bGwgcGF0aCwgdGhlbiBhbGwgdGhlIGZpeGVkIGRyaXZlcyBvZiB0aGUgdXNlciBzeXN0ZW0gYXJlIHNlYXJjaGVkIHVzaW5nIHRoZSBQYXRoLicsKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyB0aGUgc291cmNlIGZpbGUgdG8gYmUgZHVwbGljYXRlZC4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkdXBsaWNhdGUgZmlsZS4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0Rlc3RGb2xkZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gYSBkZXN0aW5hdGlvbiBmb2xkZXIuJywpLAotKHUnRHVwbGljYXRlRmlsZScsdSdEZXN0TmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J0ZpbGVuYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBkdXBsaWNhdGUgZmlsZS4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0ZpbGVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZpbGUgZW50cnknLCksCi0odSdFbnZpcm9ubWVudCcsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnRhbCB2YWx1ZS4nLCksCi0odSdFbnZpcm9ubWVudCcsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgdG8gc2V0IGluIHRoZSBlbnZpcm9ubWVudGFsIHNldHRpbmdzLicsKSwKLSh1J0Vudmlyb25tZW50Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgZW52aXJvbm1lbnRhbCB2YWx1ZS4nLCksCi0odSdFbnZpcm9ubWVudCcsdSdFbnZpcm9ubWVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIHNldHRpbmcnLCksCi0odSdFcnJvcicsdSdFcnJvcicsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBlcnJvciBudW1iZXIsIG9idGFpbmVkIGZyb20gaGVhZGVyIGZpbGUgSUVycm9yKC4uLikgbWFjcm9zLicsKSwKLSh1J0Vycm9yJyx1J01lc3NhZ2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZW1wbGF0ZScsTm9uZSwgdSdFcnJvciBmb3JtYXR0aW5nIHRlbXBsYXRlLCBvYnRhaW5lZCBmcm9tIHVzZXIgZWQuIG9yIGxvY2FsaXplcnMuJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0RpYWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdEaWFsb2cnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgRGlhbG9nLicsKSwKLSh1J0V2ZW50TWFwcGluZycsdSdDb250cm9sXycsdSdOJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIENvbnRyb2wgdGFibGUsIG5hbWUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0V2ZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBbiBpZGVudGlmaWVyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBldmVudCB0aGF0IHRoZSBjb250cm9sIHN1YnNjcmliZXMgdG8uJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0F0dHJpYnV0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGNvbnRyb2wgYXR0cmlidXRlLCB0aGF0IGlzIHNldCB3aGVuIHRoaXMgZXZlbnQgaXMgcmVjZWl2ZWQuJywpLAotKHUnRXh0ZW5zaW9uJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSBUYWJsZSwgc3BlY2lmeWluZyB0aGUgZmVhdHVyZSB0byB2YWxpZGF0ZSBvciBpbnN0YWxsIGluIG9yZGVyIGZvciB0aGUgQ0xTSUQgZmFjdG9yeSB0byBiZSBvcGVyYXRpb25hbC4nLCksCi0odSdFeHRlbnNpb24nLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBjb21wb25lbnQgZm9yIHdoaWNoIHRvIHJldHVybiBhIHBhdGggd2hlbiBjYWxsZWQgdGhyb3VnaCBMb2NhdGVDb21wb25lbnQuJywpLAotKHUnRXh0ZW5zaW9uJyx1J0V4dGVuc2lvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nLCksCi0odSdFeHRlbnNpb24nLHUnTUlNRV8nLHUnWScsTm9uZSwgTm9uZSwgdSdNSU1FJywxLHUnVGV4dCcsTm9uZSwgdSdPcHRpb25hbCBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXh0ZW5zaW9uJywpLAotKHUnRXh0ZW5zaW9uJyx1J1Byb2dJZF8nLHUnWScsTm9uZSwgTm9uZSwgdSdQcm9nSWQnLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIFByb2dJZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBleHRlbnNpb24uJywpLAotKHUnTUlNRScsdSdDTFNJRCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnT3B0aW9uYWwgYXNzb2NpYXRlZCBDTFNJRC4nLCksCi0odSdNSU1FJyx1J0NvbnRlbnRUeXBlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdQcmltYXJ5IGtleS4gQ29udGV4dCBpZGVudGlmaWVyLCB0eXBpY2FsbHkgInR5cGUvZm9ybWF0Ii4nLCksCi0odSdNSU1FJyx1J0V4dGVuc2lvbl8nLHUnTicsTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgZXh0ZW5zaW9uICh3aXRob3V0IGRvdCknLCksCi0odSdGZWF0dXJlQ29tcG9uZW50cycsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nLCksCi0odSdGZWF0dXJlQ29tcG9uZW50cycsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdGaWxlU0ZQQ2F0YWxvZycsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXRhbG9nJywpLAotKHUnRmlsZVNGUENhdGFsb2cnLHUnU0ZQQ2F0YWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdTRlBDYXRhbG9nJywxLHUnRmlsZW5hbWUnLE5vbmUsIHUnQ2F0YWxvZyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUnLCksCi0odSdTRlBDYXRhbG9nJyx1J1NGUENhdGFsb2cnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdGaWxlIG5hbWUgZm9yIHRoZSBjYXRhbG9nLicsKSwKLSh1J1NGUENhdGFsb2cnLHUnQ2F0YWxvZycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdTRlAgQ2F0YWxvZycsKSwKLSh1J1NGUENhdGFsb2cnLHUnRGVwZW5kZW5jeScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdQYXJlbnQgY2F0YWxvZyAtIG9ubHkgdXNlZCBieSBTRlAnLCksCi0odSdGb250Jyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIGZvcmVpZ24ga2V5IGludG8gRmlsZSB0YWJsZSByZWZlcmVuY2luZyBmb250IGZpbGUuJywpLAotKHUnRm9udCcsdSdGb250VGl0bGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0ZvbnQgbmFtZS4nLCksCi0odSdJbmlGaWxlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzA7MTszJyx1J1RoZSB0eXBlIG9mIG1vZGlmaWNhdGlvbiB0byBiZSBtYWRlLCBvbmUgb2YgaWlmRW51bScsKSwKLSh1J0luaUZpbGUnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4uJywpLAotKHUnSW5pRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIC5JTkkgdmFsdWUuJywpLAotKHUnSW5pRmlsZScsdSdGaWxlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byB3cml0ZSB0aGUgaW5mb3JtYXRpb24nLCksCi0odSdJbmlGaWxlJyx1J0luaUZpbGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J0luaUZpbGUnLHUnRGlyUHJvcGVydHknLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAuSU5JIGZpbGUgaXMuJywpLAotKHUnSW5pRmlsZScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBrZXkgYmVsb3cgU2VjdGlvbi4nLCksCi0odSdJbmlGaWxlJyx1J1NlY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicsKSwKLSh1J0luaUxvY2F0b3InLHUnVHlwZScsdSdZJywwLDIsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgLklOSSB2YWx1ZSByZWFkIGlzIGEgZmlsZW5hbWUgb3IgYSBkaXJlY3RvcnkgbG9jYXRpb24gb3IgdG8gYmUgdXNlZCBhcyBpcyB3L28gaW50ZXJwcmV0YXRpb24uJywpLAotKHUnSW5pTG9jYXRvcicsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicsKSwKLSh1J0luaUxvY2F0b3InLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUuJywpLAotKHUnSW5pTG9jYXRvcicsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0tleSB2YWx1ZSAoZm9sbG93ZWQgYnkgYW4gZXF1YWxzIHNpZ24gaW4gSU5JIGZpbGUpLicsKSwKLSh1J0luaUxvY2F0b3InLHUnU2VjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnU2VjdGlvbiBuYW1lIHdpdGhpbiBpbiBmaWxlICh3aXRoaW4gc3F1YXJlIGJyYWNrZXRzIGluIElOSSBmaWxlKS4nLCksCi0odSdJbmlMb2NhdG9yJyx1J0ZpZWxkJyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgZmllbGQgaW4gdGhlIC5JTkkgbGluZS4gSWYgRmllbGQgaXMgbnVsbCBvciAwIHRoZSBlbnRpcmUgbGluZSBpcyByZWFkLicsKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nLCksCi0odSdJbnN0YWxsVUlTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdJc29sYXRlZENvbXBvbmVudCcsdSdDb21wb25lbnRfQXBwbGljYXRpb24nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSBmb3IgYXBwbGljYXRpb24nLCksCi0odSdJc29sYXRlZENvbXBvbmVudCcsdSdDb21wb25lbnRfU2hhcmVkJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gdG8gYmUgaXNvbGF0ZWQnLCksCi0odSdMYXVuY2hDb25kaXRpb24nLHUnRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnTG9jYWxpemFibGUgdGV4dCB0byBkaXNwbGF5IHdoZW4gY29uZGl0aW9uIGZhaWxzIGFuZCBpbnN0YWxsIG11c3QgYWJvcnQuJywpLAotKHUnTGF1bmNoQ29uZGl0aW9uJyx1J0NvbmRpdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdFeHByZXNzaW9uIHdoaWNoIG11c3QgZXZhbHVhdGUgdG8gVFJVRSBpbiBvcmRlciBmb3IgaW5zdGFsbCB0byBjb21tZW5jZS4nLCksCi0odSdMaXN0Qm94Jyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nLCksCi0odSdMaXN0Qm94Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgbGlzdGJveC4nLCksCi0odSdMaXN0Qm94Jyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnTGlzdEJveCcsdSdPcmRlcicsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJywpLAotKHUnTGlzdFZpZXcnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicsKSwKLSh1J0xpc3RWaWV3Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgbGlzdHZpZXcuJywpLAotKHUnTGlzdFZpZXcnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnTGlzdFZpZXcnLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicsKSwKLSh1J0xpc3RWaWV3Jyx1J0JpbmFyeV8nLHUnWScsTm9uZSwgTm9uZSwgdSdCaW5hcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBpY29uLiBUaGUgYmluYXJ5IGluZm9ybWF0aW9uIGlzIGxvb2tlZCB1cCBmcm9tIHRoZSBCaW5hcnkgVGFibGUuJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J1RhYmxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsdSdEaXJlY3Rvcnk7RmlsZTtSZWdpc3RyeScsdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J0RvbWFpbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdEb21haW4gbmFtZSBmb3IgdXNlciB3aG9zZSBwZXJtaXNzaW9ucyBhcmUgYmVpbmcgc2V0LiAodXN1YWxseSBhIHByb3BlcnR5KScsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdMb2NrT2JqZWN0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIFJlZ2lzdHJ5IG9yIEZpbGUgdGFibGUnLCksCi0odSdMb2NrUGVybWlzc2lvbnMnLHUnUGVybWlzc2lvbicsdSdZJywtMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGVybWlzc2lvbiBBY2Nlc3MgbWFzay4gIEZ1bGwgQ29udHJvbCA9IDI2ODQzNTQ1NiAoR0VORVJJQ19BTEwgPSAweDEwMDAwMDAwKScsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdVc2VyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1VzZXIgZm9yIHBlcm1pc3Npb25zIHRvIGJlIHNldC4gICh1c3VhbGx5IGEgcHJvcGVydHkpJywpLAotKHUnTWVkaWEnLHUnU291cmNlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJvcGVydHknLE5vbmUsIHUnVGhlIHByb3BlcnR5IGRlZmluaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FiaW5ldCBmaWxlLicsKSwKLSh1J01lZGlhJyx1J0NhYmluZXQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDYWJpbmV0JyxOb25lLCB1J0lmIHNvbWUgb3IgYWxsIG9mIHRoZSBmaWxlcyBzdG9yZWQgb24gdGhlIG1lZGlhIGFyZSBjb21wcmVzc2VkIGluIGEgY2FiaW5ldCwgdGhlIG5hbWUgb2YgdGhhdCBjYWJpbmV0LicsKSwKLSh1J01lZGlhJyx1J0Rpc2tJZCcsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJpbWFyeSBrZXksIGludGVnZXIgdG8gZGV0ZXJtaW5lIHNvcnQgb3JkZXIgZm9yIHRhYmxlLicsKSwKLSh1J01lZGlhJyx1J0Rpc2tQcm9tcHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Rpc2sgbmFtZTogdGhlIHZpc2libGUgdGV4dCBhY3R1YWxseSBwcmludGVkIG9uIHRoZSBkaXNrLiAgVGhpcyB3aWxsIGJlIHVzZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHdoZW4gdGhpcyBkaXNrIG5lZWRzIHRvIGJlIGluc2VydGVkLicsKSwKLSh1J01lZGlhJyx1J0xhc3RTZXF1ZW5jZScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZSBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGZpbGUgZm9yIHRoaXMgbWVkaWEuJywpLAotKHUnTWVkaWEnLHUnVm9sdW1lTGFiZWwnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBsYWJlbCBhdHRyaWJ1dGVkIHRvIHRoZSB2b2x1bWUuJywpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsdSdDb21wb25lbnQnLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0NvbXBvbmVudCBjb250YWluZWQgaW4gdGhlIG1vZHVsZS4nLCksCi0odSdNb2R1bGVDb21wb25lbnRzJyx1J0xhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywyLE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBsYW5ndWFnZSBJRCBmb3IgbW9kdWxlIChtYXkgYmUgY2hhbmdlZCBieSB0cmFuc2Zvcm0pLicsKSwKLSh1J01vZHVsZUNvbXBvbmVudHMnLHUnTW9kdWxlSUQnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J01vZHVsZSBjb250YWluaW5nIHRoZSBjb21wb25lbnQuJywpLAotKHUnTW9kdWxlU2lnbmF0dXJlJyx1J0xhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBkZWNpbWFsIGxhbmd1YWdlIG9mIG1vZHVsZS4nLCksCi0odSdNb2R1bGVTaWduYXR1cmUnLHUnVmVyc2lvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgbW9kdWxlLicsKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsdSdNb2R1bGVJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTW9kdWxlIGlkZW50aWZpZXIgKFN0cmluZy5HVUlEKS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J01vZHVsZUlEJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdNb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnTW9kdWxlTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDIsTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBtb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnUmVxdWlyZWRJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1N0cmluZy5HVUlEIG9mIHJlcXVpcmVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J1JlcXVpcmVkTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZUlEIG9mIHRoZSByZXF1aXJlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsdSdSZXF1aXJlZFZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJyxOb25lLCB1J1ZlcnNpb24gb2YgdGhlIHJlcXVpcmVkIHZlcnNpb24uJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J01vZHVsZUlEJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBtb2R1bGUgd2l0aCBleGNsdXNpb24gcmVxdWlyZW1lbnQuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J01vZHVsZUxhbmd1YWdlJyx1J04nLE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywyLE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2VJRCBvZiBtb2R1bGUgd2l0aCBleGNsdXNpb24gcmVxdWlyZW1lbnQuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkSUQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBleGNsdWRlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBleGNsdWRlZCBtb2R1bGUuJywpLAotKHUnTW9kdWxlRXhjbHVzaW9uJyx1J0V4Y2x1ZGVkTWF4VmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLE5vbmUsIHUnTWF4aW11bSB2ZXJzaW9uIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnRXhjbHVkZWRNaW5WZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsTm9uZSwgdSdNaW5pbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicsKSwKLSh1J01vdmVGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0lmIHRoaXMgY29tcG9uZW50IGlzIG5vdCAic2VsZWN0ZWQiIGZvciBpbnN0YWxsYXRpb24gb3IgcmVtb3ZhbCwgbm8gYWN0aW9uIHdpbGwgYmUgdGFrZW4gb24gdGhlIGFzc29jaWF0ZWQgTW92ZUZpbGUgZW50cnknLCksCi0odSdNb3ZlRmlsZScsdSdEZXN0Rm9sZGVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeScsKSwKLSh1J01vdmVGaWxlJyx1J0Rlc3ROYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnTmFtZSB0byBiZSBnaXZlbiB0byB0aGUgb3JpZ2luYWwgZmlsZSBhZnRlciBpdCBpcyBtb3ZlZCBvciBjb3BpZWQuICBJZiBibGFuaywgdGhlIGRlc3RpbmF0aW9uIGZpbGUgd2lsbCBiZSBnaXZlbiB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzb3VyY2UgZmlsZScsKSwKLSh1J01vdmVGaWxlJyx1J0ZpbGVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgTW92ZUZpbGUgcmVjb3JkJywpLAotKHUnTW92ZUZpbGUnLHUnT3B0aW9ucycsdSdOJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIE1vdmVGaWxlIG9wZXJhdGluZyBtb2RlLCBvbmUgb2YgaW1mb0VudW0nLCksCi0odSdNb3ZlRmlsZScsdSdTb3VyY2VGb2xkZXInLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIGRpcmVjdG9yeScsKSwKLSh1J01vdmVGaWxlJyx1J1NvdXJjZU5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1Ik5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlKHMpIHRvIGJlIG1vdmVkIG9yIGNvcGllZC4gIENhbiBjb250YWluIHRoZSAnKicgb3IgJz8nIHdpbGRjYXJkcy4iLCksCi0odSdNc2lBc3NlbWJseScsdSdBdHRyaWJ1dGVzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQXNzZW1ibHkgYXR0cmlidXRlcycsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0ZpbGVfQXBwbGljYXRpb24nLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUsIGRlbm90aW5nIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0IGZvciBwcml2YXRlIGFzc2VtYmxpZXMuIE51bGwgZm9yIGdsb2JhbCBhc3NlbWJsaWVzLicsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0ZpbGVfTWFuaWZlc3QnLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgYXNzZW1ibHkuJywpLAotKHUnTXNpQXNzZW1ibHlOYW1lJyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBuYW1lIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicsKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZhbHVlIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicsKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nLCksCi0odSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLHUnQ2VydERhdGEnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnQSBjZXJ0aWZpY2F0ZSBjb250ZXh0IGJsb2IgZm9yIGEgc2lnbmVyIGNlcnRpZmljYXRlJywpLAotKHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJyx1J0RpZ2l0YWxDZXJ0aWZpY2F0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdycsKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLHUnVGFibGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNZWRpYScsdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lIChvbmx5IE1lZGlhIHRhYmxlIGlzIHN1cHBvcnRlZCknLCksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJyx1J0RpZ2l0YWxDZXJ0aWZpY2F0ZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHRvIE1zaURpZ2l0YWxDZXJ0aWZpY2F0ZSB0YWJsZSBpZGVudGlmeWluZyB0aGUgc2lnbmVyIGNlcnRpZmljYXRlJywpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsdSdIYXNoJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J1RoZSBlbmNvZGVkIGhhc2ggYmxvYiBmcm9tIHRoZSBkaWdpdGFsIHNpZ25hdHVyZScsKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLHUnU2lnbk9iamVjdCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gTWVkaWEgdGFibGUnLCksCi0odSdNc2lGaWxlSGFzaCcsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZmlsZSB3aXRoIHRoaXMgaGFzaCcsKSwKLSh1J01zaUZpbGVIYXNoJyx1J09wdGlvbnMnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZhcmlvdXMgb3B0aW9ucyBhbmQgYXR0cmlidXRlcyBmb3IgdGhpcyBoYXNoLicsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0hhc2hQYXJ0MScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdNc2lGaWxlSGFzaCcsdSdIYXNoUGFydDInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnSGFzaFBhcnQzJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0hhc2hQYXJ0NCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdNc2lQYXRjaEhlYWRlcnMnLHUnU3RyZWFtUmVmJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleS4gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdy4nLCksCi0odSdNc2lQYXRjaEhlYWRlcnMnLHUnSGVhZGVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J0JpbmFyeSBzdHJlYW0uIFRoZSBwYXRjaCBoZWFkZXIsIHVzZWQgZm9yIHBhdGNoIHZhbGlkYXRpb24uJywpLAotKHUnT0RCQ0F0dHJpYnV0ZScsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVmFsdWUgZm9yIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNBdHRyaWJ1dGUnLHUnQXR0cmlidXRlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdOYW1lIG9mIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNBdHRyaWJ1dGUnLHUnRHJpdmVyXycsdSdOJyxOb25lLCBOb25lLCB1J09EQkNEcml2ZXInLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRyaXZlciBpbiBPREJDRHJpdmVyIHRhYmxlJywpLAotKHUnT0RCQ0RyaXZlcicsdSdEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZHJpdmVyLCBub24tbG9jYWxpemVkJywpLAotKHUnT0RCQ0RyaXZlcicsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBrZXkgZHJpdmVyIGZpbGUnLCksCi0odSdPREJDRHJpdmVyJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcsKSwKLSh1J09EQkNEcml2ZXInLHUnRHJpdmVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZHJpdmVyJywpLAotKHUnT0RCQ0RyaXZlcicsdSdGaWxlX1NldHVwJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgc2V0dXAgRExMJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIGRhdGEgc291cmNlJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGFzc29jaWF0ZWQgY29tcG9uZW50JywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnRGF0YVNvdXJjZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIGRhdGEgc291cmNlJywpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLHUnRHJpdmVyRGVzY3JpcHRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1JlZmVyZW5jZSB0byBkcml2ZXIgZGVzY3JpcHRpb24sIG1heSBiZSBleGlzdGluZyBkcml2ZXInLCksCi0odSdPREJDRGF0YVNvdXJjZScsdSdSZWdpc3RyYXRpb24nLHUnTicsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnaXN0cmF0aW9uIG9wdGlvbjogMD1tYWNoaW5lLCAxPXVzZXIsIG90aGVycyB0LmIuZC4nLCksCi0odSdPREJDU291cmNlQXR0cmlidXRlJyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdWYWx1ZSBmb3IgT0RCQyBkYXRhIHNvdXJjZSBhdHRyaWJ1dGUnLCksCi0odSdPREJDU291cmNlQXR0cmlidXRlJyx1J0F0dHJpYnV0ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTmFtZSBvZiBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLHUnRGF0YVNvdXJjZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdPREJDRGF0YVNvdXJjZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIE9EQkMgZGF0YSBzb3VyY2UgaW4gT0RCQ0RhdGFTb3VyY2UgdGFibGUnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgdHJhbnNsYXRvcicsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSB0cmFuc2xhdG9yIGZpbGUnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnLCksCi0odSdPREJDVHJhbnNsYXRvcicsdSdGaWxlX1NldHVwJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGtleSB0cmFuc2xhdG9yIHNldHVwIERMTCcsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J1RyYW5zbGF0b3InLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkLmludGVybmFsIHRva2VuIGZvciB0cmFuc2xhdG9yJywpLAotKHUnUGF0Y2gnLHUnU2VxdWVuY2UnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBzZXF1ZW5jZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1lZGlhIGltYWdlczsgb3JkZXIgbXVzdCB0cmFjayBjYWJpbmV0IG9yZGVyLicsKSwKLSh1J1BhdGNoJyx1J0F0dHJpYnV0ZXMnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIHBhdGNoIGF0dHJpYnV0ZXMnLCksCi0odSdQYXRjaCcsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIGZvcmVpZ24ga2V5IHRvIEZpbGUgdGFibGUsIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LicsKSwKLSh1J1BhdGNoJyx1J0hlYWRlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicsKSwKLSh1J1BhdGNoJyx1J1BhdGNoU2l6ZScsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIHBhdGNoIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J1BhdGNoJyx1J1N0cmVhbVJlZl8nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0lkZW50aWZpZXIuIEZvcmVpZ24ga2V5IHRvIHRoZSBTdHJlYW1SZWYgY29sdW1uIG9mIHRoZSBNc2lQYXRjaEhlYWRlcnMgdGFibGUuJywpLAotKHUnUGF0Y2hQYWNrYWdlJyx1J01lZGlhXycsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gRGlza0lkIGNvbHVtbiBvZiBNZWRpYSB0YWJsZS4gSW5kaWNhdGVzIHRoZSBkaXNrIGNvbnRhaW5pbmcgdGhlIHBhdGNoIHBhY2thZ2UuJywpLAotKHUnUGF0Y2hQYWNrYWdlJyx1J1BhdGNoSWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J0EgdW5pcXVlIHN0cmluZyBHVUlEIHJlcHJlc2VudGluZyB0aGlzIHBhdGNoLicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIHRhYmxlLicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnQ29tcG9uZW50SWQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J0Egc3RyaW5nIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBjb21wb25lbnQgaWQgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCBieSB0aGUgYWxpZW4gcHJvZHVjdC4nLCksCi0odSdQdWJsaXNoQ29tcG9uZW50Jyx1J0FwcERhdGEnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoaXMgaXMgbG9jYWxpc2FibGUgQXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBRdWFsaWZpZWQgQ29tcG9uZW50LicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnUXVhbGlmaWVyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGlzIGlzIGRlZmluZWQgb25seSB3aGVuIHRoZSBDb21wb25lbnRJZCBjb2x1bW4gaXMgYW4gUXVhbGlmaWVkIENvbXBvbmVudCBJZC4gVGhpcyBpcyB0aGUgUXVhbGlmaWVyIGZvciBQcm92aWRlQ29tcG9uZW50SW5kaXJlY3QuJywpLAotKHUnUmFkaW9CdXR0b24nLHUnWScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmlzaWJsZSB0aXRsZSB0byBiZSBhc3NpZ25lZCB0byB0aGUgcmFkaW8gYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyByYWRpbyBidXR0b24uIEFsbCB0aGUgYnV0dG9ucyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGdyb3VwLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J0hlaWdodCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhlaWdodCBvZiB0aGUgYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1dpZHRoJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgd2lkdGggb2YgdGhlIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdYJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSByYWRpbyBidXR0b24uJywpLAotKHUnUmFkaW9CdXR0b24nLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBidXR0b24uIFNlbGVjdGluZyB0aGUgYnV0dG9uIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJywpLAotKHUnUmFkaW9CdXR0b24nLHUnT3JkZXInLHUnTicsMSwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J0hlbHAnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBoZWxwIHN0cmluZ3MgdXNlZCB3aXRoIHRoZSBidXR0b24uIFRoZSB0ZXh0IGlzIG9wdGlvbmFsLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J05hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuJywpLAotKHUnUmVnaXN0cnknLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnaXN0cnknLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnaXN0cnknLHUnUmVnaXN0cnknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1JlZ2lzdHJ5Jyx1J1Jvb3QnLHUnTicsLTEsMyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nLCksCi0odSdSZWdMb2NhdG9yJyx1J1R5cGUnLHUnWScsMCwxOCxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4gSWYgdGhlIHR5cGUgaXMgMCwgdGhlIHJlZ2lzdHJ5IHZhbHVlcyByZWZlcnMgYSBkaXJlY3RvcnksIGFuZCBfU2lnbmF0dXJlIGlzIG5vdCBhIGZvcmVpZ24ga2V5LicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnTG9jYXRvcicsdSdSb290Jyx1J04nLDAsMyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLicsKSwKLSh1J1JlbW92ZUZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nLCksCi0odSdSZW1vdmVGaWxlJyx1J0ZpbGVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZpbGUgZW50cnknLCksCi0odSdSZW1vdmVGaWxlJyx1J0ZpbGVOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lsZENhcmRGaWxlbmFtZScsTm9uZSwgdSdOYW1lIG9mIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJywpLAotKHUnUmVtb3ZlRmlsZScsdSdEaXJQcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRobmFtZSB0byB0aGUgZm9sZGVyIG9mIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJywpLAotKHUnUmVtb3ZlRmlsZScsdSdJbnN0YWxsTW9kZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzE7MjszJyx1J0luc3RhbGxhdGlvbiBvcHRpb24sIG9uZSBvZiBpaW1FbnVtLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMjs0Jyx1J1RoZSB0eXBlIG9mIG1vZGlmaWNhdGlvbiB0byBiZSBtYWRlLCBvbmUgb2YgaWlmRW51bS4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSBkZWxldGVkLiBUaGUgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBBY3Rpb24gaXMgaWlmSW5pUmVtb3ZlVGFnJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGRlbGV0aW9uIG9mIHRoZSAuSU5JIHZhbHVlLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUgaW4gd2hpY2ggdG8gZGVsZXRlIHRoZSBpbmZvcm1hdGlvbicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnRGlyUHJvcGVydHknLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAuSU5JIGZpbGUgaXMuJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBrZXkgYmVsb3cgU2VjdGlvbi4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J1NlY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnUmVtb3ZlSW5pRmlsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnUmVtb3ZlUmVnaXN0cnknLHUnTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGRlbGV0aW9uIG9mIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJyxOb25lLCB1J1RoZSBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdSb290Jyx1J04nLC0xLDMsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bScsKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5Jyx1J1JlbW92ZVJlZ2lzdHJ5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdSZXNlcnZlQ29zdCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXNlcnZlIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBzcGFjZSBpZiB0aGlzIGNvbXBvbmVudCBpcyB0byBiZSBpbnN0YWxsZWQuJywpLAotKHUnUmVzZXJ2ZUNvc3QnLHUnUmVzZXJ2ZUZvbGRlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnknLCksCi0odSdSZXNlcnZlQ29zdCcsdSdSZXNlcnZlS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIFJlc2VydmVDb3N0IHJlY29yZCcsKSwKLSh1J1Jlc2VydmVDb3N0Jyx1J1Jlc2VydmVMb2NhbCcsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgbG9jYWxseS4nLCksCi0odSdSZXNlcnZlQ29zdCcsdSdSZXNlcnZlU291cmNlJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCB0byBydW4gZnJvbSB0aGUgc291cmNlIGxvY2F0aW9uLicsKSwKLSh1J1NlbGZSZWcnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtb2R1bGUgdGhhdCBuZWVkcyB0byBiZSByZWdpc3RlcmVkLicsKSwKLSh1J1NlbGZSZWcnLHUnQ29zdCcsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3Qgb2YgcmVnaXN0ZXJpbmcgdGhlIG1vZHVsZS4nLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J05hbWUgb2YgYSBzZXJ2aWNlLiAvLCBcXCwgY29tbWEgYW5kIHNwYWNlIGFyZSBpbnZhbGlkJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdFdmVudCcsdSdOJywwLDE4NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpdCBmaWVsZDogIEluc3RhbGw6ICAweDEgPSBTdGFydCwgMHgyID0gU3RvcCwgMHg4ID0gRGVsZXRlLCBVbmluc3RhbGw6IDB4MTAgPSBTdGFydCwgMHgyMCA9IFN0b3AsIDB4ODAgPSBEZWxldGUnLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdTZXJ2aWNlQ29udHJvbCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnQXJndW1lbnRzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0FyZ3VtZW50cyBmb3IgdGhlIHNlcnZpY2UuICBTZXBhcmF0ZSBieSBbfl0uJywpLAotKHUnU2VydmljZUNvbnRyb2wnLHUnV2FpdCcsdSdZJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCb29sZWFuIGZvciB3aGV0aGVyIHRvIHdhaXQgZm9yIHRoZSBzZXJ2aWNlIHRvIGZ1bGx5IHN0YXJ0JywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdJbnRlcm5hbCBOYW1lIG9mIHRoZSBTZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Rlc2NyaXB0aW9uIG9mIHNlcnZpY2UuJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdBcmd1bWVudHMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnQXJndW1lbnRzIHRvIGluY2x1ZGUgaW4gZXZlcnkgc3RhcnQgb2YgdGhlIHNlcnZpY2UsIHBhc3NlZCB0byBXaW5NYWluJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnU2VydmljZUluc3RhbGwnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0RlcGVuZGVuY2llcycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdPdGhlciBzZXJ2aWNlcyB0aGlzIGRlcGVuZHMgb24gdG8gc3RhcnQuICBTZXBhcmF0ZSBieSBbfl0sIGFuZCBlbmQgd2l0aCBbfl1bfl0nLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdEaXNwbGF5TmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdFeHRlcm5hbCBOYW1lIG9mIHRoZSBTZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnRXJyb3JDb250cm9sJyx1J04nLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTZXZlcml0eSBvZiBlcnJvciBpZiBzZXJ2aWNlIGZhaWxzIHRvIHN0YXJ0JywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnTG9hZE9yZGVyR3JvdXAnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnTG9hZE9yZGVyR3JvdXAnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdQYXNzd29yZCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdwYXNzd29yZCB0byBydW4gc2VydmljZSB3aXRoLiAgKHdpdGggU3RhcnROYW1lKScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J1NlcnZpY2VUeXBlJyx1J04nLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUeXBlIG9mIHRoZSBzZXJ2aWNlJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnU3RhcnROYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1VzZXIgb3Igb2JqZWN0IG5hbWUgdG8gcnVuIHNlcnZpY2UgYXMnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdTdGFydFR5cGUnLHUnTicsMCw0LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVHlwZSBvZiB0aGUgc2VydmljZScsKSwKLSh1J1Nob3J0Y3V0Jyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgc2hvcnRjdXQgdG8gYmUgY3JlYXRlZC4nLCksCi0odSdTaG9ydGN1dCcsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2hvcnRjdXQuJywpLAotKHUnU2hvcnRjdXQnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIGRlbm90aW5nIHRoZSBjb21wb25lbnQgd2hvc2Ugc2VsZWN0aW9uIGdhdGVzIHRoZSBzaG9ydGN1dCBjcmVhdGlvbi9kZWxldGlvbi4nLCksCi0odSdTaG9ydGN1dCcsdSdJY29uXycsdSdZJyxOb25lLCBOb25lLCB1J0ljb24nLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZpbGUgdGFibGUgZGVub3RpbmcgdGhlIGV4dGVybmFsIGljb24gZmlsZSBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0ljb25JbmRleCcsdSdZJywtMzI3NjcsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaWNvbiBpbmRleCBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0RpcmVjdG9yeV8nLHUnTicsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBzaG9ydGN1dCBmaWxlIGlzIGNyZWF0ZWQuJywpLAotKHUnU2hvcnRjdXQnLHUnVGFyZ2V0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2hvcnRjdXQnLE5vbmUsIHUnVGhlIHNob3J0Y3V0IHRhcmdldC4gVGhpcyBpcyB1c3VhbGx5IGEgcHJvcGVydHkgdGhhdCBpcyBleHBhbmRlZCB0byBhIGZpbGUgb3IgYSBmb2xkZXIgdGhhdCB0aGUgc2hvcnRjdXQgcG9pbnRzIHRvLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0FyZ3VtZW50cycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cyBmb3IgdGhlIHNob3J0Y3V0LicsKSwKLSh1J1Nob3J0Y3V0Jyx1J1Nob3J0Y3V0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdTaG9ydGN1dCcsdSdIb3RrZXknLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3RrZXkgZm9yIHRoZSBzaG9ydGN1dC4gSXQgaGFzIHRoZSB2aXJ0dWFsLWtleSBjb2RlIGZvciB0aGUga2V5IGluIHRoZSBsb3ctb3JkZXIgYnl0ZSwgYW5kIHRoZSBtb2RpZmllciBmbGFncyBpbiB0aGUgaGlnaC1vcmRlciBieXRlLiAnLCksCi0odSdTaG9ydGN1dCcsdSdTaG93Q21kJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMTszOzcnLHUnVGhlIHNob3cgY29tbWFuZCBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdy5UaGUgZm9sbG93aW5nIHZhbHVlcyBtYXkgYmUgdXNlZC4nLCksCi0odSdTaG9ydGN1dCcsdSdXa0RpcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBwcm9wZXJ0eSBkZWZpbmluZyBsb2NhdGlvbiBvZiB3b3JraW5nIGRpcmVjdG9yeS4nLCksCi0odSdTaWduYXR1cmUnLHUnRmlsZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZmlsZS4gVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nLCksCi0odSdTaWduYXR1cmUnLHUnU2lnbmF0dXJlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUuJywpLAotKHUnU2lnbmF0dXJlJyx1J0xhbmd1YWdlcycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJyxOb25lLCB1J1RoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNYXhEYXRlJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIGNyZWF0aW9uIGRhdGUgb2YgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01heFNpemUnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZmlsZS4gJywpLAotKHUnU2lnbmF0dXJlJyx1J01heFZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBtYXhpbXVtIHZlcnNpb24gb2YgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01pbkRhdGUnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gY3JlYXRpb24gZGF0ZSBvZiB0aGUgZmlsZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTWluU2l6ZScsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNaW5WZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicsKSwKLSh1J1RleHRTdHlsZScsdSdUZXh0U3R5bGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIHN0eWxlLiBUaGUgcHJpbWFyeSBrZXkgb2YgdGhpcyB0YWJsZS4gVGhpcyBuYW1lIGlzIGVtYmVkZGVkIGluIHRoZSB0ZXh0cyB0byBpbmRpY2F0ZSBhIHN0eWxlIGNoYW5nZS4nLCksCi0odSdUZXh0U3R5bGUnLHUnQ29sb3InLHUnWScsMCwxNjc3NzIxNSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgbG9uZyBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbG9yIG9mIHRoZSBzdHJpbmcgaW4gdGhlIFJHQiBmb3JtYXQgKFJlZCwgR3JlZW4sIEJsdWUgZWFjaCAwLTI1NSwgUkdCID0gUiArIDI1NipHICsgMjU2XjIqQikuJywpLAotKHUnVGV4dFN0eWxlJyx1J0ZhY2VOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBuYW1lIG9mIHRoZSBmb250IHVzZWQuIFJlcXVpcmVkLiBUaGUgc3RyaW5nIG11c3QgYmUgYXQgbW9zdCAzMSBjaGFyYWN0ZXJzIGxvbmcuJywpLAotKHUnVGV4dFN0eWxlJyx1J1NpemUnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBzaXplIG9mIHRoZSBmb250IHVzZWQuIFRoaXMgc2l6ZSBpcyBnaXZlbiBpbiBvdXIgdW5pdHMgKDEvMTIgb2YgdGhlIHN5c3RlbSBmb250IGhlaWdodCkuIEFzc3VtaW5nIHRoYXQgdGhlIHN5c3RlbSBmb250IGlzIHNldCB0byAxMiBwb2ludCBzaXplLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIHBvaW50IHNpemUuJywpLAotKHUnVGV4dFN0eWxlJyx1J1N0eWxlQml0cycsdSdZJywwLDE1LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBjb21iaW5hdGlvbiBvZiBzdHlsZSBiaXRzLicsKSwKLSh1J1R5cGVMaWInLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCBOb25lLCApLAotKHUnVHlwZUxpYicsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIHR5cGUgbGlicmFyeSB0byBiZSBvcGVyYXRpb25hbC4nLCksCi0odSdUeXBlTGliJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicsKSwKLSh1J1R5cGVMaWInLHUnRGlyZWN0b3J5XycsdSdZJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwuIFRoZSBmb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIHBhdGggdG8gdGhlIGhlbHAgZmlsZSBmb3IgdGhlIHR5cGUgbGlicmFyeS4nLCksCi0odSdUeXBlTGliJyx1J0xhbmd1YWdlJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbGFuZ3VhZ2Ugb2YgdGhlIGxpYnJhcnkuJywpLAotKHUnVHlwZUxpYicsdSdWZXJzaW9uJyx1J1knLDAsMTY3NzcyMTUsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeS4gVGhlIG1pbm9yIHZlcnNpb24gaXMgaW4gdGhlIGxvd2VyIDggYml0cyBvZiB0aGUgaW50ZWdlci4gVGhlIG1ham9yIHZlcnNpb24gaXMgaW4gdGhlIG5leHQgMTYgYml0cy4gJywpLAotKHUnVHlwZUxpYicsdSdDb3N0Jyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSB0eXBlbGliLiBUaGlzIGNvbHVtbiBpcyBjdXJyZW50bHkgb3B0aW9uYWwuJywpLAotKHUnVHlwZUxpYicsdSdMaWJJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnVGhlIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBsaWJyYXJ5LicsKSwKLSh1J1VJVGV4dCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbG9jYWxpemVkIHZlcnNpb24gb2YgdGhlIHN0cmluZy4nLCksCi0odSdVSVRleHQnLHUnS2V5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIHVuaXF1ZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBwYXJ0aWN1bGFyIHN0cmluZy4nLCksCi0odSdVcGdyYWRlJyx1J0F0dHJpYnV0ZXMnLHUnTicsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBwcm9kdWN0IHNldC4nLCksCi0odSdVcGdyYWRlJyx1J0xhbmd1YWdlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLE5vbmUsIHUnQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMgZm9yIGVpdGhlciBwcm9kdWN0cyBpbiB0aGlzIHNldCBvciBwcm9kdWN0cyBub3QgaW4gdGhpcyBzZXQuJywpLAotKHUnVXBncmFkZScsdSdBY3Rpb25Qcm9wZXJ0eScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1VwcGVyQ2FzZScsTm9uZSwgdSdUaGUgcHJvcGVydHkgdG8gc2V0IHdoZW4gYSBwcm9kdWN0IGluIHRoaXMgc2V0IGlzIGZvdW5kLicsKSwKLSh1J1VwZ3JhZGUnLHUnUmVtb3ZlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSBsaXN0IG9mIGZlYXR1cmVzIHRvIHJlbW92ZSB3aGVuIHVuaW5zdGFsbGluZyBhIHByb2R1Y3QgZnJvbSB0aGlzIHNldC4gIFRoZSBkZWZhdWx0IGlzICJBTEwiLicsKSwKLSh1J1VwZ3JhZGUnLHUnVXBncmFkZUNvZGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J1RoZSBVcGdyYWRlQ29kZSBHVUlEIGJlbG9uZ2luZyB0byB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuJywpLAotKHUnVXBncmFkZScsdSdWZXJzaW9uTWF4Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgbWF4aW11bSBQcm9kdWN0VmVyc2lvbiBvZiB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuICBUaGUgc2V0IG1heSBvciBtYXkgbm90IGluY2x1ZGUgcHJvZHVjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVyc2lvbi4nLCksCi0odSdVcGdyYWRlJyx1J1ZlcnNpb25NaW4nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBtaW5pbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicsKSwKLSh1J1ZlcmInLHUnU2VxdWVuY2UnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09yZGVyIHdpdGhpbiB0aGUgdmVyYnMgZm9yIGEgcGFydGljdWxhciBleHRlbnNpb24uIEFsc28gdXNlZCBzaW1wbHkgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB2ZXJiLicsKSwKLSh1J1ZlcmInLHUnQXJndW1lbnQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnT3B0aW9uYWwgdmFsdWUgZm9yIHRoZSBjb21tYW5kIGFyZ3VtZW50cy4nLCksCi0odSdWZXJiJyx1J0V4dGVuc2lvbl8nLHUnTicsTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLDEsdSdUZXh0JyxOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJywpLAotKHUnVmVyYicsdSdWZXJiJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmVyYiBmb3IgdGhlIGNvbW1hbmQuJywpLAotKHUnVmVyYicsdSdDb21tYW5kJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSBjb21tYW5kIHRleHQuJywpLAotXQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3NlcXVlbmNlLnB5IGIvVG9vbHMvbXNpL3NlcXVlbmNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTM4ZjdhLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9zZXF1ZW5jZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1BZG1pbkV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0luc3RhbGxGaWxlcycsIE5vbmUsIDQwMDApLAotKHUnSW5zdGFsbEFkbWluUGFja2FnZScsIE5vbmUsIDM5MDApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLV0KLQotQWRtaW5VSVNlcXVlbmNlID0gWwotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0odSdFeGl0RGlhbG9nJywgTm9uZSwgLTEpLAotKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotXQotCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnTXNpUHVibGlzaEFzc2VtYmxpZXMnLCBOb25lLCA2MjUwKSwKLSh1J1B1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgNjIwMCksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCBOb25lLCA2MzAwKSwKLSh1J1B1Ymxpc2hQcm9kdWN0JywgTm9uZSwgNjQwMCksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDQ2MDApLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgNDcwMCksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgNDkwMCksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCA0ODAwKSwKLV0KLQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0luc3RhbGxGaWxlcycsIE5vbmUsIDQwMDApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnTXNpUHVibGlzaEFzc2VtYmxpZXMnLCBOb25lLCA2MjUwKSwKLSh1J1B1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgNjIwMCksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCBOb25lLCA2MzAwKSwKLSh1J1B1Ymxpc2hQcm9kdWN0JywgTm9uZSwgNjQwMCksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDQ2MDApLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgNDcwMCksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgNDkwMCksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCA0ODAwKSwKLSh1J0FsbG9jYXRlUmVnaXN0cnlTcGFjZScsIHUnTk9UIEluc3RhbGxlZCcsIDE1NTApLAotKHUnQXBwU2VhcmNoJywgTm9uZSwgNDAwKSwKLSh1J0JpbmRJbWFnZScsIE5vbmUsIDQzMDApLAotKHUnQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNTAwKSwKLSh1J0NyZWF0ZUZvbGRlcnMnLCBOb25lLCAzNzAwKSwKLSh1J0RlbGV0ZVNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCAyMDAwKSwKLSh1J0R1cGxpY2F0ZUZpbGVzJywgTm9uZSwgNDIxMCksCi0odSdGaW5kUmVsYXRlZFByb2R1Y3RzJywgTm9uZSwgMjAwKSwKLSh1J0luc3RhbGxPREJDJywgTm9uZSwgNTQwMCksCi0odSdJbnN0YWxsU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDU4MDApLAotKHUnSXNvbGF0ZUNvbXBvbmVudHMnLCBOb25lLCA5NTApLAotKHUnTGF1bmNoQ29uZGl0aW9ucycsIE5vbmUsIDEwMCksCi0odSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIE5vbmUsIDEyMDApLAotKHUnTW92ZUZpbGVzJywgTm9uZSwgMzgwMCksCi0odSdQYXRjaEZpbGVzJywgTm9uZSwgNDA5MCksCi0odSdQcm9jZXNzQ29tcG9uZW50cycsIE5vbmUsIDE2MDApLAotKHUnUmVnaXN0ZXJDb21QbHVzJywgTm9uZSwgNTcwMCksCi0odSdSZWdpc3RlckZvbnRzJywgTm9uZSwgNTMwMCksCi0odSdSZWdpc3RlclByb2R1Y3QnLCBOb25lLCA2MTAwKSwKLSh1J1JlZ2lzdGVyVHlwZUxpYnJhcmllcycsIE5vbmUsIDU1MDApLAotKHUnUmVnaXN0ZXJVc2VyJywgTm9uZSwgNjAwMCksCi0odSdSZW1vdmVEdXBsaWNhdGVGaWxlcycsIE5vbmUsIDM0MDApLAotKHUnUmVtb3ZlRW52aXJvbm1lbnRTdHJpbmdzJywgTm9uZSwgMzMwMCksCi0odSdSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzJywgTm9uZSwgNjcwMCksCi0odSdSZW1vdmVGaWxlcycsIE5vbmUsIDM1MDApLAotKHUnUmVtb3ZlRm9sZGVycycsIE5vbmUsIDM2MDApLAotKHUnUmVtb3ZlSW5pVmFsdWVzJywgTm9uZSwgMzEwMCksCi0odSdSZW1vdmVPREJDJywgTm9uZSwgMjQwMCksCi0odSdSZW1vdmVSZWdpc3RyeVZhbHVlcycsIE5vbmUsIDI2MDApLAotKHUnUmVtb3ZlU2hvcnRjdXRzJywgTm9uZSwgMzIwMCksCi0odSdSTUNDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDYwMCksCi0odSdTZWxmUmVnTW9kdWxlcycsIE5vbmUsIDU2MDApLAotKHUnU2VsZlVucmVnTW9kdWxlcycsIE5vbmUsIDIyMDApLAotKHUnU2V0T0RCQ0ZvbGRlcnMnLCBOb25lLCAxMTAwKSwKLSh1J1N0YXJ0U2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDU5MDApLAotKHUnU3RvcFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCAxOTAwKSwKLSh1J01zaVVucHVibGlzaEFzc2VtYmxpZXMnLCBOb25lLCAxNzUwKSwKLSh1J1VucHVibGlzaENvbXBvbmVudHMnLCBOb25lLCAxNzAwKSwKLSh1J1VucHVibGlzaEZlYXR1cmVzJywgTm9uZSwgMTgwMCksCi0odSdVbnJlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgMjcwMCksCi0odSdVbnJlZ2lzdGVyQ29tUGx1cycsIE5vbmUsIDIxMDApLAotKHUnVW5yZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCAyODAwKSwKLSh1J1VucmVnaXN0ZXJGb250cycsIE5vbmUsIDI1MDApLAotKHUnVW5yZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgMzAwMCksCi0odSdVbnJlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDI5MDApLAotKHUnVW5yZWdpc3RlclR5cGVMaWJyYXJpZXMnLCBOb25lLCAyMzAwKSwKLSh1J1ZhbGlkYXRlUHJvZHVjdElEJywgTm9uZSwgNzAwKSwKLSh1J1dyaXRlRW52aXJvbm1lbnRTdHJpbmdzJywgTm9uZSwgNTIwMCksCi0odSdXcml0ZUluaVZhbHVlcycsIE5vbmUsIDUxMDApLAotKHUnV3JpdGVSZWdpc3RyeVZhbHVlcycsIE5vbmUsIDUwMDApLAotXQotCi1JbnN0YWxsVUlTZXF1ZW5jZSA9IFsKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSh1J0ZhdGFsRXJyb3InLCBOb25lLCAtMyksCi0odSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLSh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0odSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIE5vbmUsIDIwMCksCi0odSdJc29sYXRlQ29tcG9uZW50cycsIE5vbmUsIDk1MCksCi0odSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0odSdSTUNDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDYwMCksCi0odSdWYWxpZGF0ZVByb2R1Y3RJRCcsIE5vbmUsIDcwMCksCi1dCi0KLXRhYmxlcz1bJ0FkbWluRXhlY3V0ZVNlcXVlbmNlJywgJ0FkbWluVUlTZXF1ZW5jZScsICdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgJ0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCAnSW5zdGFsbFVJU2VxdWVuY2UnXQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLndpeHByb2ogYi9Ub29scy9tc2kvdGNsdGsvdGNsdGsud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjZmYzE0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLndpeHByb2oKQEAgLTAsMCArMSw1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0RCMzUwNjAwLTE4NkMtNEU1Mi1CQTk4LTI2QTdDRUNCMDY3Rn08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRjbHRrPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPCEtLSBTaG9ydGN1dCB2YWxpZGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkgLS0+CisgICAgICAgIDxTdXBwcmVzc0lDRXM+SUNFNDM8L1N1cHByZXNzSUNFcz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGsud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrX3JlZy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJCh0Y2x0a0RpciliaW5cKi5kbGwiIEV4Y2x1ZGU9IiQodGNsdGtEaXIpYmluXCpnLmRsbCI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKHRjbHRrRGlyKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC50Y2x0ayk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQodGNsdGtEaXIpYmluPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+RExMc1w8L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+dGNsdGtfZGxsczwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorCisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJCh0Y2x0a0RpcilsaWJcKipcKiI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKHRjbHRrRGlyKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC50Y2x0ayk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQodGNsdGtEaXIpbGliPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+dGNsXDwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50Y2x0a19saWI8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKworICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlx0a2ludGVyXCoqXCo7JChQeVNvdXJjZVBhdGgpTGliXGlkbGVsaWJcKipcKjskKFB5U291cmNlUGF0aClMaWJcdHVydGxlZGVtb1wqKlwqIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5YzskKFB5U291cmNlUGF0aClMaWJcKipcKi5weW8iPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYyk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50a2ludGVyX2xpYjwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLnd4cyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI4M2M1YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53eHMKQEAgLTAsMCArMSw2NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUFlUSE9OX0VYRSIgU2VjdXJlPSJ5ZXMiPgorICAgICAgICAgICAgPENvbXBvbmVudFNlYXJjaCBJZD0iUHl0aG9uRXhlIiBHdWlkPSIkKHZhci5QeXRob25FeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGVTZWFyY2ggTmFtZT0icHl0aG9uLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50U2VhcmNoPgorICAgICAgICA8L1Byb3BlcnR5PgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5IElkPSJQWVRIT05XX0VYRSIgU2VjdXJlPSJ5ZXMiPgorICAgICAgICAgICAgPENvbXBvbmVudFNlYXJjaCBJZD0iUHl0aG9ud0V4ZSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8RmlsZVNlYXJjaCBOYW1lPSJweXRob253LmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50U2VhcmNoPgorICAgICAgICA8L1Byb3BlcnR5PgorICAgICAgICAKKyAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5Ob1B5dGhvbikiPlBZVEhPTl9FWEUgYW5kIFBZVEhPTldfRVhFPC9Db25kaXRpb24+CisKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2V4dGVuc2lvbiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGNsdGtfZGxscyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGNsdGtfbGliIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2xpYiIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJpZGxlX3JlZyIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXlQYXRoPSJ5ZXMiIFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXVxJZGxlIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbI0xpYl9pZGxlbGliX2lkbGUucHl3XSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJBc3NvY2lhdGVGaWxlcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9saWIiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImlkbGVfcmVnIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgIDxGZWF0dXJlIElkPSJTaG9ydGN1dHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRraW50ZXJfbGliIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJpZGxlX3Nob3J0Y3V0IiBEaXJlY3Rvcnk9Ik1lbnVEaXIiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXVxJZGxlU2hvcnRjdXRzIiBUeXBlPSJpbnRlZ2VyIiBWYWx1ZT0iMSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgorCisgICAgICAgICAgICAgICAgPFNob3J0Y3V0IElkPSJJRExFIgorICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rvcnk9Ik1lbnVEaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IiEobG9jLlNob3J0Y3V0TmFtZSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5TaG9ydGN1dERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0PSJbUFlUSE9OV19FWEVdIgorICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHM9JyJbI0xpYl9pZGxlbGliX2lkbGUucHl3XSInCisgICAgICAgICAgICAgICAgICAgICAgICAgIEljb249ImlkbGUuZXhlIj4KKyAgICAgICAgICAgICAgICAgICAgPEljb24gSWQ9ImlkbGUuZXhlIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylMaWJcaWRsZWxpYlxJY29uc1xpZGxlLmljbyIgLz4KKyAgICAgICAgICAgICAgICA8L1Nob3J0Y3V0PgorICAgICAgICAgICAgICAgIDxTaG9ydGN1dCBJZD0icHlkb2MucHkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iW1BZVEhPTl9FWEVdIgorICAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1bWVudHM9Jy1tIHB5ZG9jIC1iJworICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSIhKGxvYy5QeURvY1Nob3J0Y3V0TmFtZSkiCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5QeURvY1Nob3J0Y3V0RGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgICBJY29uPSJpZGxlLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53aXhwcm9qIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjY2MTkwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud2l4cHJvagpAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57RURBMUZBNUEtRTJBQS00RUFGLUI0OUItODdEOTgxQ0QwRjE2fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dGNsdGtfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfZC53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKHRjbHRrRGlyKWJpblwqZy5kbGwiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JCh0Y2x0a0Rpcik8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGgudGNsdGspPC9Tb3VyY2U+CisgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKHRjbHRrRGlyKWJpbjwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPkRMTHNcPC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRjbHRrX2RsbHNfZDwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDBkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53eHMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlX2QpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2V4dGVuc2lvbl9kIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0Y2x0a19kbGxzX2QiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZW4tVVMud3hsX3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MGZkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0wLDAgKzEsMTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlRjbC9UayBTdXBwb3J0PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj50Y2x0azwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vUHl0aG9uIj5ObyAhKGxvYy5Qcm9kdWN0TmFtZSkgaW5zdGFsbGF0aW9uIHdhcyBkZXRlY3RlZC48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPklETEUgKFB5dGhvbiB7e1Nob3J0VmVyc2lvbn19IHt7Qml0bmVzc319KTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPkxhdW5jaGVzIElETEUsIHRoZSBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCBmb3IgIShsb2MuUHJvZHVjdE5hbWUpLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5RG9jU2hvcnRjdXROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fSBNb2R1bGUgRG9jcyAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHlEb2NTaG9ydGN1dERlc2NyaXB0aW9uIj5TdGFydCB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGRvY3VtZW50YXRpb24gc2VydmVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IkVkaXRNZW51Ij4mYW1wO0VkaXQgd2l0aCBJRExFPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRWRpdFN1Yk1lbnUiPkVkaXQgd2l0aCBJRExFIHt7U2hvcnRWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZmlsZXMud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDFiNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDM1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRraW50ZXJfZXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90a2ludGVyLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJfdGtpbnRlci5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3RraW50ZXIubGliIiBEaXJlY3Rvcnk9ImxpYnMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Il90a2ludGVyLmxpYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGtpbnRlcl9leHRlbnNpb25fc3ltYm9scyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGtpbnRlci5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iX3RraW50ZXIucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGtpbnRlcl9leHRlbnNpb25fZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGtpbnRlcl9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJfdGtpbnRlcl9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3RraW50ZXJfZC5saWIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iX3RraW50ZXJfZC5saWIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90a2ludGVyX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9Il90a2ludGVyX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNzA3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezAyMDUzQUZBLTE4MzEtNDk5QS1CM0VBLUQ4QjIyM0QzQzQwRH08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRjbHRrX3BkYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19wZGIud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0NTRmMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19wZGIud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZVBkYikiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iU3ltYm9scyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVQZGIpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25QZGIpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9leHRlbnNpb25fc3ltYm9scyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3JlZy53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcmVnLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDk4OTI3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3JlZy53eHMKQEAgLTAsMCArMSw0OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJpZGxlX3JlZyI+CisgICAgICAgICAgICA8IS0tIFdlIGZpeCB0aGUgZ3VpZCBvZiB0aGUgU3ViY29tbWFuZHMga2V5IHNvIHRoYXQgaXQgaXMgY29ycmVjdGx5IHJlZmVyZW5jZSBjb3VudGVkIC0tPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iYXNzb2Nfc3ViY29tbWFuZHMiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iezU3RDQ3QjRDLTk2RTYtNDBBMC1BOTU4LTU3MDgzRDc0NDIzRn0iPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+VmVyc2lvbk5UID4gNjAwPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZSIgTmFtZT0iTVVJVmVyYiIgVmFsdWU9IiEobG9jLkVkaXRNZW51KSIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZSIgTmFtZT0iU3ViY29tbWFuZHMiIFZhbHVlPSIiIFR5cGU9InN0cmluZyIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImFzc29jX3N1YmNvbW1hbmRzX25vY29uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9InswNzA2MUQ4NS05MTUxLTRGQzQtQkI3OC0xMzYyODAyMEQwMjZ9Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlZlcnNpb25OVCA+IDYwMDwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZSIgTmFtZT0iTVVJVmVyYiIgVmFsdWU9IiEobG9jLkVkaXRNZW51KSIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlIiBOYW1lPSJTdWJjb21tYW5kcyIgVmFsdWU9IiIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJhc3NvY19lZGl0d2l0aGlkbGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5WZXJzaW9uTlQgPiA2MDA8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5GaWxlXFNoZWxsXGVkaXR3aXRoaWRsZVxzaGVsbFxlZGl0JCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikkKHZhci5TdWZmaXgzMikiPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJNVUlWZXJiIiBWYWx1ZT0iIShsb2MuRWRpdFN1Yk1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJjb21tYW5kIiBWYWx1ZT0nIltQWVRIT05XX0VYRV0iIC1tIGlkbGVsaWIgIiVMIiAlKicgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImFzc29jX2VkaXR3aXRoaWRsZV9ub2NvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlZlcnNpb25OVCA+IDYwMDwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLk5vQ29uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGVcc2hlbGxcZWRpdCQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpJCh2YXIuU3VmZml4MzIpIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iTVVJVmVyYiIgVmFsdWU9IiEobG9jLkVkaXRTdWJNZW51KSIgVHlwZT0ic3RyaW5nIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iY29tbWFuZCIgVmFsdWU9JyJbUFlUSE9OV19FWEVdIiAtbSBpZGxlbGliICIlTCIgJSonIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImFzc29jX2VkaXR3aXRoaWRsZV92aXN0YSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlZlcnNpb25OVCA9IDYwMDwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGVcU2hlbGxcZWRpdHdpdGhpZGxlJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikkKHZhci5TdWZmaXgzMikiPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBWYWx1ZT0iIShsb2MuRWRpdFN1Yk1lbnUpIiBUeXBlPSJzdHJpbmciIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJjb21tYW5kIiBWYWx1ZT0nIltQWVRIT05XX0VYRV0iIC1tIGlkbGVsaWIgIiVMIiAlKicgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImFzc29jX2VkaXR3aXRoaWRsZV9ub2Nvbl92aXN0YSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPlZlcnNpb25OVCA9IDYwMDwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLk5vQ29uRmlsZVxTaGVsbFxlZGl0d2l0aGlkbGUkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKSQodmFyLlN1ZmZpeDMyKSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFZhbHVlPSIhKGxvYy5FZGl0U3ViTWVudSkiIFR5cGU9InN0cmluZyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9ImNvbW1hbmQiIFZhbHVlPSciW1BZVEhPTldfRVhFXSIgLW0gaWRsZWxpYiAiJUwiICUqJyBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud2l4cHJvaiBiL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzQ3ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdC53aXhwcm9qCkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntERTBCN0NDMi00MzU4LTQxMzEtQjNGNC1DMzFDN0YyQ0Q0Njh9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT50ZXN0PC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0ZXN0Lnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKFB5U291cmNlUGF0aClMaWJcdGVzdFwqKlwqIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5YzskKFB5U291cmNlUGF0aClMaWJcKipcKi5weW8iPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYyk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50ZXN0X3B5PC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0Lnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZWQ2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0Lnd4cwpAQCAtMCwwICsxLDE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0ZXN0X3B5IiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0ZXN0X2V4dGVuc2lvbnMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZC53aXhwcm9qIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNiMDRiZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZC53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns0MUY1QUU4RC0yNENELTREMDMtQkU3NS1BQTZGN0ZBQjQwOTd9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT50ZXN0X2Q8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3RfZC53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3RfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1NDg3NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZC53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlX2QpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0ZXN0X2V4dGVuc2lvbnNfZCIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9lbi1VUy53eGwgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjE1YzdhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9lbi1VUy53eGwKQEAgLTAsMCArMSw3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5UZXN0IFN1aXRlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj50ZXN0PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTmF0aXZlTW9kdWxlc1RpdGxlIj4hKGxvYy5GdWxsUHJvZHVjdE5hbWUpIG5hdGl2ZSBsaWJ0ZXN0PC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTmF0aXZlTW9kdWxlc0Rlc2NyaXB0aW9uIj4hKGxvYy5Qcm9kdWN0TmFtZSkgTmF0aXZlIFRlc3QgTW9kdWxlczwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MDNhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwpAQCAtMCwwICsxLDc3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9ucyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNhcGkucHlkIiBOYW1lPSJfdGVzdGNhcGkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIE5hbWU9Il9jdHlwZXNfdGVzdC5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RidWZmZXIucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlci5weWQiIE5hbWU9Il90ZXN0YnVmZmVyLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19zeW1ib2xzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5wZGIiIE5hbWU9Il90ZXN0Y2FwaS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIE5hbWU9Il9jdHlwZXNfdGVzdC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXIucGRiIiBOYW1lPSJfdGVzdGJ1ZmZlci5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0ZXN0X2V4dGVuc2lvbnNfZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnB5ZCIgTmFtZT0iX3Rlc3RjYXBpX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0X2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5weWQiIE5hbWU9Il90ZXN0YnVmZmVyX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgTmFtZT0iX3Rlc3RjYXBpX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgTmFtZT0iX2N0eXBlc190ZXN0X2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5wZGIiIE5hbWU9Il90ZXN0YnVmZmVyX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud2l4cHJvaiBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfcGRiLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY1ZjBlZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfcGRiLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezdDRjQ4QURELUNGQUEtNDk5Ri05QTA1LUJBMTg0NDBBMzM0NH08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3RfcGRiPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0ZXN0X3BkYi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3RfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNjM0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0ZXN0X2V4dGVuc2lvbnNfc3ltYm9scyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3RyZWxlYXNlLmJhdCBiL1Rvb2xzL21zaS90ZXN0cmVsZWFzZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk4OTU3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0cmVsZWFzZS5iYXQKQEAgLTAsMCArMSwxMTcgQEAKK0BzZXRsb2NhbCBlbmFibGVleHRlbnNpb25zDQorQGVjaG8gb2ZmDQorDQorc2V0IEQ9JX5kcDANCitzZXQgUENCVUlMRD0lRCUuLlwuLlxQQ0J1aWxkXA0KKw0KK3NldCBUQVJHRVRESVI9JVRFTVAlDQorc2V0IFRFU1RYODY9DQorc2V0IFRFU1RYNjQ9DQorc2V0IFRFU1RBTExVU0VSPQ0KK3NldCBURVNUUEVSVVNFUj0NCisNCis6Q2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1oIiBnb3RvIEhlbHANCitpZiAiJTEiIEVRVSAiLXg4NiIgKHNldCBURVNUWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi14NjQiIChzZXQgVEVTVFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdCIgKHNldCBUQVJHRVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRhcmdldCIgKHNldCBUQVJHRVRESVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItYSIgKHNldCBURVNUQUxMVVNFUj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWFsbHVzZXIiIChzZXQgVEVTVEFMTFVTRVI9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXAiIChzZXQgVEVTVFBFUlVTRVI9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1wZXJ1c2VyIiAoc2V0IFRFU1RQRVJVU0VSPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgVEVTVFg4NiBpZiBub3QgZGVmaW5lZCBURVNUWDY0IChzZXQgVEVTVFg4Nj0xKSAmJiAoc2V0IFRFU1RYNjQ9MSkNCitpZiBub3QgZGVmaW5lZCBURVNUQUxMVVNFUiBpZiBub3QgZGVmaW5lZCBURVNUUEVSVVNFUiAoc2V0IFRFU1RBTExVU0VSPTEpICYmIChzZXQgVEVTVFBFUlVTRVI9MSkNCisNCisNCitpZiBkZWZpbmVkIFRFU1RYODYgKA0KKyAgICBmb3IgJSVmIGluICgiJVBDQlVJTEQld2luMzJcZW4tdXNcKi5leGUiKSBkbyAoDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RBTExVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtYWxsdXNlciIgIkluc3RhbGxBbGxVc2Vycz0xIENvbXBpbGVBbGw9MSINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RQRVJVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtcGVydXNlciIgIkluc3RhbGxBbGxVc2Vycz0wIENvbXBpbGVBbGw9MCINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICkNCispDQorDQoraWYgZGVmaW5lZCBURVNUWDY0ICgNCisgICAgZm9yICUlZiBpbiAoIiVQQ0JVSUxEJWFtZDY0XGVuLXVzXCouZXhlIikgZG8gKA0KKyAgICAgICAgaWYgZGVmaW5lZCBURVNUQUxMVVNFUiBjYWxsIDp0ZXN0ICIlJX5mZiIgIiVUQVJHRVRESVIlXCUlfm5mLWFsbHVzZXIiICJJbnN0YWxsQWxsVXNlcnM9MSBDb21waWxlQWxsPTEiDQorICAgICAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICAgICAgaWYgZGVmaW5lZCBURVNUUEVSVVNFUiBjYWxsIDp0ZXN0ICIlJX5mZiIgIiVUQVJHRVRESVIlXCUlfm5mLXBlcnVzZXIiICJJbnN0YWxsQWxsVXNlcnM9MCBDb21waWxlQWxsPTAiDQorICAgICAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICApDQorKQ0KKw0KK2V4aXQgL0IgMA0KKw0KKzp0ZXN0DQorQHNldGxvY2FsDQorQGVjaG8gb24NCisNCitAaWYgbm90IGV4aXN0ICIlfjEiIGV4aXQgL0IgMQ0KKw0KK0BzZXQgRVhFPSV+MQ0KK0BpZiBub3QgIiVFWEU6ZW1iZWQ9JSI9PSIlRVhFJSIgZXhpdCAvQiAwDQorDQorQHNldCBFWElUQ09ERT0wDQorQGVjaG8gSW5zdGFsbGluZyAlMSBpbnRvICUyDQorIiV+MSIgL3Bhc3NpdmUgL2xvZyAiJX4yXGluc3RhbGxcbG9nLnR4dCIgVGFyZ2V0RGlyPSIlfjJcUHl0aG9uIiBJbmNsdWRlX2RlYnVnPTEgSW5jbHVkZV9zeW1ib2xzPTEgJX4zDQorDQorQGlmIG5vdCBlcnJvcmxldmVsIDEgKA0KKyAgICBAZWNobyBQcmludGluZyB2ZXJzaW9uDQorICAgICIlfjJcUHl0aG9uXHB5dGhvbi5leGUiIC1jICJpbXBvcnQgc3lzOyBwcmludChzeXMudmVyc2lvbikiID4gIiV+Mlx2ZXJzaW9uLnR4dCIgMj4mMQ0KKykNCisNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIENhcHR1cmluZyBTdGFydCBNZW51DQorICAgIEBkaXIgL3MvYiAiJVBST0dSQU1EQVRBJVxNaWNyb3NvZnRcV2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zIiB8IGZpbmRzdHIgL2ljOiJweXRob24iID4gIiV+MlxzdGFydG1lbnUudHh0IiAyPiYxDQorICAgIEBkaXIgL3MvYiAiJUFQUERBVEElXE1pY3Jvc29mdFxXaW5kb3dzXFN0YXJ0IE1lbnVcUHJvZ3JhbXMiIHwgZmluZHN0ciAvaWM6InB5dGhvbiIgID4+ICIlfjJcc3RhcnRtZW51LnR4dCIgMj4mMQ0KKw0KKyAgICBAZWNobyBDYXB0dXJpbmcgcmVnaXN0cnkNCisgICAgQGZvciAvRiAidXNlYmFja3EiICUlZiBpbiAoYHJlZyBxdWVyeSBIS0NSIC9zIC9mIHB5dGhvbiAva2ApIGRvIEAoDQorICAgICAgICBlY2hvICUlZiA+PiAiJX4yXGhrY3IudHh0Ig0KKyAgICAgICAgcmVnIHF1ZXJ5ICIlJWYiIC9zID4+ICIlfjJcaGtjci50eHQiIDI+JjENCisgICAgKQ0KKyAgICBAcmVnIHF1ZXJ5IEhLQ1VcU29mdHdhcmVcUHl0aG9uIC9zID4gIiV+Mlxoa2N1LnR4dCIgMj4mMQ0KKyAgICBAcmVnIHF1ZXJ5IEhLTE1cU29mdHdhcmVcUHl0aG9uIC9yZWc6MzIgL3MgPiAiJX4yXGhrbG0udHh0IiAyPiYxDQorICAgIEByZWcgcXVlcnkgSEtMTVxTb2Z0d2FyZVxQeXRob24gL3JlZzo2NCAvcyA+PiAiJX4yXGhrbG0udHh0IiAyPiYxDQorICAgIGNtZCAvayBleGl0IDANCispDQorDQorQGlmIG5vdCBlcnJvcmxldmVsIDEgKA0KKyAgICBAZWNobyBJbnN0YWxsaW5nIHBhY2thZ2UNCisgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLW0gcGlwIGluc3RhbGwgImF6dXJlPDAuMTAiID4gIiV+MlxwaXAudHh0IiAyPiYxDQorICAgIEBpZiBub3QgZXJyb3JsZXZlbCAxICgNCisgICAgICAgICIlfjJcUHl0aG9uXHB5dGhvbi5leGUiIC1tIHBpcCB1bmluc3RhbGwgLXkgYXp1cmUgcHl0aG9uLWRhdGV1dGlsIHNpeCA+PiAiJX4yXHBpcC50eHQiIDI+JjENCisgICAgKQ0KKykNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIFRlc3RpbmcgVGNsL3RrDQorICAgIEBzZXQgVENMX0xJQlJBUlk9JX4yXFB5dGhvblx0Y2xcdGNsOC42DQorICAgICIlfjJcUHl0aG9uXHB5dGhvbi5leGUiIC1tIHRlc3QgLXVhbGwgLXYgdGVzdF90dGtfZ3Vpb25seSB0ZXN0X3RrIHRlc3RfaWRsZSA+ICIlfjJcdGNsdGsudHh0IiAyPiYxDQorICAgIEBzZXQgVENMX0xJQlJBUlk9DQorKQ0KKw0KK0BzZXQgRVhJVENPREU9JUVSUk9STEVWRUwlDQorDQorQGVjaG8gUmVzdWx0IHdhcyAlRVhJVENPREUlDQorQGVjaG8gUmVtb3ZpbmcgJTENCisiJX4xIiAvcGFzc2l2ZSAvdW5pbnN0YWxsIC9sb2cgIiV+Mlx1bmluc3RhbGxcbG9nLnR4dCINCisNCitAZWNobyBvZmYNCitleGl0IC9CICVFWElUQ09ERSUNCisNCis6SGVscA0KK2VjaG8gdGVzdHJlbGVhc2UuYmF0IFstLXRhcmdldCBUQVJHRVRdIFsteDg2XSBbLXg2NF0gWy0tYWxsdXNlcl0gWy0tcGVydXNlcl0gWy1oXQ0KK2VjaG8uDQorZWNobyAgICAtLXRhcmdldCAoLXQpICAgU3BlY2lmeSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBmb3IgaW5zdGFsbHMgYW5kIGxvZ3MNCitlY2hvICAgIC14ODYgICAgICAgICAgICBSdW4gdGVzdHMgZm9yIHg4NiBpbnN0YWxsZXJzDQorZWNobyAgICAteDY0ICAgICAgICAgICAgUnVuIHRlc3RzIGZvciB4NjQgaW5zdGFsbGVycw0KK2VjaG8gICAgLS1hbGx1c2VyICgtYSkgIFJ1biB0ZXN0cyBmb3IgYWxsLXVzZXIgaW5zdGFsbHMgKHJlcXVpcmVzIEFkbWluaXN0cmF0b3IpDQorZWNobyAgICAtLXBlcnVzZXIgKC1wKSAgUnVuIHRlc3RzIGZvciBwZXItdXNlciBpbnN0YWxscw0KK2VjaG8gICAgLWggICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQorZWNoby4NCitlY2hvIElmIG5vIHRlc3QgYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmllZCwgYWxsIGFyY2hpdGVjdHVyZXMgd2lsbCBiZSB0ZXN0ZWQuDQorZWNobyBJZiBubyBpbnN0YWxsIHR5cGUgaXMgc2VsZWN0ZWQsIGFsbCBpbnN0YWxsIHR5cGVzIHdpbGwgYmUgdGVzdGVkLg0KK2VjaG8uDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2ogYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDNjZjMzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKQEAgLTAsMCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezI0Q0JFQjk1LUJDMUUtNEVBOS1BRUE5LTMzODM0QkNDRDBFQ308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRvb2xzPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0b29scy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xzX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8VG9vbERpcmVjdG9yaWVzIEluY2x1ZGU9InNjcmlwdHM7aTE4bjtweW5jaGU7cHluY2hlXFg7ZGVtbyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKVRvb2xzXHNjcmlwdHNcKipcKi5weTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xzY3JpcHRzXCoqXCoucHl3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHNjcmlwdHNcKipcKi50eHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcaTE4blwqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGkxOG5cKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcaTE4blwqKlwqLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xweW5jaGVcKipcKi5weTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xweW5jaGVcKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNccHluY2hlXCoqXCoudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGRlbW9cKipcKi5weTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xkZW1vXCoqXCoucHl3OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGRlbW9cKipcKi50eHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNccGFyc2VyXCoqXCoucHkiPgorICAgICAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQoUHlTb3VyY2VQYXRoKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKTwvU291cmNlPgorICAgICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CisgICAgICAgICAgICAgICAgPEdyb3VwPnRvb2xzX3B5PC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Zjg0MThhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwpAQCAtMCwwICsxLDE1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19weSIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfc2NyaXB0cyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS90b29scy90b29sc19lbi1VUy53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzODQxNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90b29scy90b29sc19lbi1VUy53eGwKQEAgLTAsMCArMSw1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFdpeExvY2FsaXphdGlvbiBDdWx0dXJlPSJlbi11cyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgICA8U3RyaW5nIElkPSJEZXNjcmlwdG9yIj5VdGlsaXR5IFNjcmlwdHM8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPnRvb2xzPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZTBkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idG9vbHNfc2NyaXB0cyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJUb29sc19zY3JpcHRzXzJ0bzMucHkiIERpcmVjdG9yeT0iVG9vbHNfc2NyaXB0cyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9IlRvb2xzX3NjcmlwdHNfMnRvMy5weSIgTmFtZT0iMnRvMy5weSIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylUb29sc1xzY3JpcHRzXDJ0bzMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlRvb2xzX3NjcmlwdHNfcHlkb2MzLnB5IiBEaXJlY3Rvcnk9IlRvb2xzX3NjcmlwdHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJUb29sc19zY3JpcHRzX3B5ZG9jMy5weSIgTmFtZT0icHlkb2MzLnB5IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVRvb2xzXHNjcmlwdHNccHlkb2MzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJUb29sc19zY3JpcHRzX3B5dmVudi5weSIgRGlyZWN0b3J5PSJUb29sc19zY3JpcHRzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iVG9vbHNfc2NyaXB0c19weXZlbnYucHkiIE5hbWU9InB5dmVudi5weSIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylUb29sc1xzY3JpcHRzXHB5dmVudiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS91aXNhbXBsZS5weSBiL1Rvb2xzL21zaS91aXNhbXBsZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQzMDgwNS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvdWlzYW1wbGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAwICswLDAgQEAKLQotaW1wb3J0IG1zaWxpYixvcztkaXJuYW1lPW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLUFkbWluRXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdJbnN0YWxsRmlsZXMnLCBOb25lLCA0MDAwKSwKLSh1J0luc3RhbGxBZG1pblBhY2thZ2UnLCBOb25lLCAzOTAwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotXQotCi1BZG1pblVJU2VxdWVuY2UgPSBbCi0odSdBZG1pbldlbGNvbWVEbGcnLCBOb25lLCAxMjMwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSh1J0ZhdGFsRXJyb3InLCBOb25lLCAtMyksCi0odSdQcmVwYXJlRGxnJywgTm9uZSwgMTQwKSwKLSh1J1Byb2dyZXNzRGxnJywgTm9uZSwgMTI4MCksCi0odSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLV0KLQotQWR2dEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdDcmVhdGVTaG9ydGN1dHMnLCBOb25lLCA0NTAwKSwKLSh1J1B1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgNjIwMCksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCBOb25lLCA2MzAwKSwKLSh1J1B1Ymxpc2hQcm9kdWN0JywgTm9uZSwgNjQwMCksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDQ2MDApLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgNDcwMCksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgTm9uZSwgNDkwMCksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCA0ODAwKSwKLV0KLQotQkJDb250cm9sID0gWwotXQotCi1CaWxsYm9hcmQgPSBbCi1dCi0KLUJpbmFyeSA9IFsKLSh1J2Jhbm5yYm1wJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiYmFubnJibXAuYmluIikpKSwKLSh1J2NvbXBsZXRpJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiY29tcGxldGkuYmluIikpKSwKLSh1J2N1c3RpY29uJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiY3VzdGljb24uYmluIikpKSwKLSh1J2RsZ2JtcCcsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsImRsZ2JtcC5iaW4iKSkpLAotKHUnZXhjbGFtaWMnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJleGNsYW1pYy5iaW4iKSkpLAotKHUnaW5mbycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsImluZm8uYmluIikpKSwKLSh1J2luc3RpY29uJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiaW5zdGljb24uYmluIikpKSwKLSh1J05ldycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsIk5ldy5iaW4iKSkpLAotKHUncmVtb3ZpY28nLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJyZW1vdmljby5iaW4iKSkpLAotKHUncmVwYWlyaWMnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJyZXBhaXJpYy5iaW4iKSkpLAotKHUnVXAnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJVcC5iaW4iKSkpLAotXQotCi1DaGVja0JveCA9IFsKLV0KLQotUHJvcGVydHkgPSBbCi0odSdCYW5uZXJCaXRtYXAnLCB1J2Jhbm5yYm1wJyksCi0odSdJQWdyZWUnLCB1J05vJyksCi0odSdQcm9kdWN0SUQnLCB1J25vbmUnKSwKLSh1J0FSUEhFTFBMSU5LJywgdSdodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vbWFuYWdlbWVudCcpLAotKHUnQnV0dG9uVGV4dF9CYWNrJywgdSc8ICZCYWNrJyksCi0odSdCdXR0b25UZXh0X0Jyb3dzZScsIHUnQnImb3dzZScpLAotKHUnQnV0dG9uVGV4dF9DYW5jZWwnLCB1J0NhbmNlbCcpLAotKHUnQnV0dG9uVGV4dF9FeGl0JywgdScmRXhpdCcpLAotKHUnQnV0dG9uVGV4dF9GaW5pc2gnLCB1JyZGaW5pc2gnKSwKLSh1J0J1dHRvblRleHRfSWdub3JlJywgdScmSWdub3JlJyksCi0odSdCdXR0b25UZXh0X0luc3RhbGwnLCB1JyZJbnN0YWxsJyksCi0odSdCdXR0b25UZXh0X05leHQnLCB1JyZOZXh0ID4nKSwKLSh1J0J1dHRvblRleHRfTm8nLCB1JyZObycpLAotKHUnQnV0dG9uVGV4dF9PSycsIHUnT0snKSwKLSh1J0J1dHRvblRleHRfUmVtb3ZlJywgdScmUmVtb3ZlJyksCi0odSdCdXR0b25UZXh0X1JlcGFpcicsIHUnJlJlcGFpcicpLAotKHUnQnV0dG9uVGV4dF9SZXNldCcsIHUnJlJlc2V0JyksCi0odSdCdXR0b25UZXh0X1Jlc3VtZScsIHUnJlJlc3VtZScpLAotKHUnQnV0dG9uVGV4dF9SZXRyeScsIHUnJlJldHJ5JyksCi0odSdCdXR0b25UZXh0X1JldHVybicsIHUnJlJldHVybicpLAotKHUnQnV0dG9uVGV4dF9ZZXMnLCB1JyZZZXMnKSwKLSh1J0NvbXBsZXRlU2V0dXBJY29uJywgdSdjb21wbGV0aScpLAotKHUnQ29tcG9uZW50RG93bmxvYWQnLCB1J2Z0cDovL2Fub255bW91c0BtaWNyb3NvZnQuY29tL2NvbXBvbmVudHMvJyksCi0odSdDdXN0b21TZXR1cEljb24nLCB1J2N1c3RpY29uJyksCi0odSdEZWZhdWx0VUlGb250JywgdSdEbGdGb250OCcpLAotKHUnRGlhbG9nQml0bWFwJywgdSdkbGdibXAnKSwKLSh1J0RsZ1RpdGxlRm9udCcsIHUneyZEbGdGb250Qm9sZDh9JyksCi0odSdFcnJvckRpYWxvZycsIHUnRXJyb3JEbGcnKSwKLSh1J0V4Y2xhbWF0aW9uSWNvbicsIHUnZXhjbGFtaWMnKSwKLSh1J0luZm9JY29uJywgdSdpbmZvJyksCi0odSdJbnN0YWxsZXJJY29uJywgdSdpbnN0aWNvbicpLAotKHUnSU5TVEFMTExFVkVMJywgdSczJyksCi0odSdJbnN0YWxsTW9kZScsIHUnVHlwaWNhbCcpLAotKHUnUElEVGVtcGxhdGUnLCB1JzEyMzQ1PCMjIy0lJSUlJSUlPkBAQEBAJyksCi0jKHUnUHJvZHVjdExhbmd1YWdlJywgdScxMDMzJyksCi0odSdQcm9ncmVzczEnLCB1J0luc3RhbGxpbmcnKSwKLSh1J1Byb2dyZXNzMicsIHUnaW5zdGFsbHMnKSwKLSh1J1BST01QVFJPTExCQUNLQ09TVCcsIHUnUCcpLAotKHUnUmVtb3ZlSWNvbicsIHUncmVtb3ZpY28nKSwKLSh1J1JlcGFpckljb24nLCB1J3JlcGFpcmljJyksCi0odSdTZXR1cCcsIHUnU2V0dXAnKSwKLSh1J1Nob3dVc2VyUmVnaXN0cmF0aW9uRGxnJywgdScxJyksCi0odSdXaXphcmQnLCB1J1NldHVwIFdpemFyZCcpLAotXQotCi1Db21ib0JveCA9IFsKLV0KLQotQ29udHJvbCA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMzAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gd2lsbCBjcmVhdGUgYSBzZXJ2ZXIgaW1hZ2Ugb2YgW1Byb2R1Y3ROYW1lXSwgYXQgYSBzcGVjaWZpZWQgbmV0d29yayBsb2NhdGlvbi4gIENsaWNrIE5leHQgdG8gY29udGludWUgb3IgQ2FuY2VsIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVdlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0V4aXREaWFsb2cnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J0V4aXREaWFsb2cnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9Q29tcGxldGluZyB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J0ZpbmlzaCcsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnRmluaXNoJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9GaW5pc2hdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31bUHJvZHVjdE5hbWVdIFtXaXphcmRdIGVuZGVkIHByZW1hdHVyZWx5JywgTm9uZSwgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnRmluaXNoJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdGaW5pc2gnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0ZpbmlzaF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnRGVzY3JpcHRpb24xJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCA0MCwgMTk2NjExLCBOb25lLCB1J1tQcm9kdWN0TmFtZV0gc2V0dXAgZW5kZWQgcHJlbWF0dXJlbHkgYmVjYXVzZSBvZiBhbiBlcnJvci4gIFlvdXIgc3lzdGVtIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gIFRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLicsIE5vbmUsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnRGVzY3JpcHRpb24yJywgdSdUZXh0JywgMTM1LCAxMTUsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgW1dpemFyZF0gcHJlcGFyZXMgdG8gZ3VpZGUgeW91IHRocm91Z2ggdGhlIGluc3RhbGxhdGlvbi4nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9V2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgTm9uZSwgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25EYXRhJywgdSdUZXh0JywgMTM1LCAxMjUsIDIyMCwgMzAsIDE5NjYxMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25UZXh0JywgdSdUZXh0JywgMTM1LCAxMDAsIDIyMCwgMjAsIDE5NjYxMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDM1LCA2NSwgMzAwLCAyMCwgMywgTm9uZSwgdSdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgW1dpemFyZF0gW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIFRoaXMgbWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzLicsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAyMCwgMTUsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0nLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdBY3Rpb25UZXh0JywgdSdUZXh0JywgNzAsIDEwMCwgMjY1LCAxMCwgMywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnUHJvZ3Jlc3NCYXInLCB1J1Byb2dyZXNzQmFyJywgMzUsIDExNSwgMzAwLCAxMCwgNjU1MzcsIE5vbmUsIHUnUHJvZ3Jlc3MgZG9uZScsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J1N0YXR1c0xhYmVsJywgdSdUZXh0JywgMzUsIDEwMCwgMzUsIDEwLCAzLCBOb25lLCB1J1N0YXR1czonLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9W1Byb2R1Y3ROYW1lXSBbV2l6YXJkXSB3YXMgaW50ZXJydXB0ZWQnLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnRmluaXNoJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnRmluaXNoJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9GaW5pc2hdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdEZXNjcmlwdGlvbjEnLCB1J1RleHQnLCAxMzUsIDcwLCAyMjAsIDQwLCAxOTY2MTEsIE5vbmUsIHUnW1Byb2R1Y3ROYW1lXSBzZXR1cCB3YXMgaW50ZXJydXB0ZWQuICBZb3VyIHN5c3RlbSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuICBUbyBpbnN0YWxsIHRoaXMgcHJvZ3JhbSBhdCBhIGxhdGVyIHRpbWUsIHBsZWFzZSBydW4gdGhlIGluc3RhbGxhdGlvbiBhZ2Fpbi4nLCBOb25lLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdEZXNjcmlwdGlvbjInLCB1J1RleHQnLCAxMzUsIDExNSwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J0NsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J1VwJywgdSdQdXNoQnV0dG9uJywgMjk4LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J1VwJywgdSdOZXdGb2xkZXInLCB1J1VwIE9uZSBMZXZlbHwnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1BhdGhFZGl0JywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnUGF0aEVkaXQnLCB1J1BhdGhFZGl0JywgODQsIDIwMiwgMjYxLCAxNywgMywgdSdUQVJHRVRESVInLCBOb25lLCB1J09LJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMjQwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdDb21ib0xhYmVsJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ29tYm9MYWJlbCcsIHUnVGV4dCcsIDI1LCA1OCwgNDQsIDEwLCAzLCBOb25lLCB1JyZMb29rIGluOicsIHUnRGlyZWN0b3J5Q29tYm8nLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlDb21ibycsIHUnRGlyZWN0b3J5Q29tYm8nLCA3MCwgNTUsIDIyMCwgODAsIDQ1ODc1NSwgdSdUQVJHRVRESVInLCBOb25lLCB1J1VwJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdCcm93c2UgdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlcicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0RpcmVjdG9yeUxpc3QnLCB1J0RpcmVjdG9yeUxpc3QnLCAyNSwgODMsIDMyMCwgMTEwLCA3LCB1J1RBUkdFVERJUicsIE5vbmUsIHUnUGF0aExhYmVsJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnUGF0aExhYmVsJywgdSdUZXh0JywgMjUsIDIwNSwgNTksIDEwLCAzLCBOb25lLCB1JyZGb2xkZXIgbmFtZTonLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J05ld0ZvbGRlcicsIHUnUHVzaEJ1dHRvbicsIDMyNSwgNTUsIDE5LCAxOSwgMzY3MDAxOSwgTm9uZSwgdSdOZXcnLCB1J0RpcmVjdG9yeUxpc3QnLCB1J0NyZWF0ZSBBIE5ldyBGb2xkZXJ8JyksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ2hhbmdlIGN1cnJlbnQgZGVzdGluYXRpb24gZm9sZGVyJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDI1LCA4MCwgMzIwLCAxMCwgMywgTm9uZSwgdScmRW50ZXIgYSBuZXcgbmV0d29yayBsb2NhdGlvbiBvciBjbGljayBCcm93c2UgdG8gYnJvd3NlIHRvIG9uZS4nLCB1J1BhdGhFZGl0JywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdUZXh0JywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnUGF0aEVkaXQnLCB1J1BhdGhFZGl0JywgMjUsIDkzLCAzMjAsIDE4LCAzLCB1J1RBUkdFVERJUicsIE5vbmUsIHUnQnJvd3NlJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSBzcGVjaWZ5IGEgbmV0d29yayBsb2NhdGlvbiBmb3IgdGhlIHNlcnZlciBpbWFnZSBvZiBbUHJvZHVjdE5hbWVdIHByb2R1Y3QnLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1OZXR3b3JrIExvY2F0aW9uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQnJvd3NlJywgdSdQdXNoQnV0dG9uJywgMjg5LCAxMTksIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ccm93c2VdJywgdSdCYWNrJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdPcmdhbml6YXRpb25MYWJlbCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdQbGVhc2UgZW50ZXIgeW91ciBjb21wYW55IGluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ29tcGFueSBJbmZvcm1hdGlvbicsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCA2NTUzOSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdPcmdhbml6YXRpb25MYWJlbCcsIHUnVGV4dCcsIDQ1LCA3MSwgMjg1LCAzMCwgMywgTm9uZSwgdScmUGxlYXNlIGVudGVyIHRoZSBuYW1lIG9mIHlvdXIgb3JnYW5pemF0aW9uIGluIHRoZSBib3ggYmVsb3cuICBUaGlzIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0IGNvbXBhbnkgbmFtZSBmb3Igc3Vic2VxdWVudCBpbnN0YWxsYXRpb25zIG9mIFtQcm9kdWN0TmFtZV06JywgdSdPcmdhbml6YXRpb25FZGl0JywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQ0RLZXlFZGl0JywgdSdNYXNrZWRFZGl0JywgNDUsIDE0MywgMjUwLCAxNiwgMywgdSdQSURLRVknLCB1J1tQSURUZW1wbGF0ZV0nLCB1J0JhY2snLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdDREtleUxhYmVsJywgdSdUZXh0JywgNDUsIDEzMCwgNTAsIDEwLCAzLCBOb25lLCB1J0NEICZLZXk6JywgdSdDREtleUVkaXQnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdPcmdhbml6YXRpb25FZGl0JywgdSdFZGl0JywgNDUsIDEwNSwgMjIwLCAxOCwgMywgdSdDT01QQU5ZTkFNRScsIHUnezgwfScsIHUnQ0RLZXlMYWJlbCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdVcCcsIHUnUHVzaEJ1dHRvbicsIDI5OCwgNTUsIDE5LCAxOSwgMzY3MDAxOSwgTm9uZSwgdSdVcCcsIHUnTmV3Rm9sZGVyJywgdSdVcCBPbmUgTGV2ZWx8JyksCi0odSdCcm93c2VEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnUGF0aEVkaXQnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnUGF0aEVkaXQnLCB1J1BhdGhFZGl0JywgODQsIDIwMiwgMjYxLCAxOCwgMTEsIHUnX0Jyb3dzZVByb3BlcnR5JywgTm9uZSwgdSdPSycsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDI0MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQ29tYm9MYWJlbCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdDb21ib0xhYmVsJywgdSdUZXh0JywgMjUsIDU4LCA0NCwgMTAsIDMsIE5vbmUsIHUnJkxvb2sgaW46JywgdSdEaXJlY3RvcnlDb21ibycsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlDb21ibycsIHUnRGlyZWN0b3J5Q29tYm8nLCA3MCwgNTUsIDIyMCwgODAsIDM5MzIyNywgdSdfQnJvd3NlUHJvcGVydHknLCBOb25lLCB1J1VwJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnQnJvd3NlIHRvIHRoZSBkZXN0aW5hdGlvbiBmb2xkZXInLCBOb25lLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnRGlyZWN0b3J5TGlzdCcsIDI1LCA4MywgMzIwLCAxMTAsIDE1LCB1J19Ccm93c2VQcm9wZXJ0eScsIE5vbmUsIHUnUGF0aExhYmVsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J1BhdGhMYWJlbCcsIHUnVGV4dCcsIDI1LCAyMDUsIDU5LCAxMCwgMywgTm9uZSwgdScmRm9sZGVyIG5hbWU6JywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnTmV3Rm9sZGVyJywgdSdQdXNoQnV0dG9uJywgMzI1LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J05ldycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnQ3JlYXRlIEEgTmV3IEZvbGRlcnwnKSwKLSh1J0Jyb3dzZURsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUNoYW5nZSBjdXJyZW50IGRlc3RpbmF0aW9uIGZvbGRlcicsIE5vbmUsIE5vbmUpLAotKHUnQ2FuY2VsRGxnJywgdSdUZXh0JywgdSdUZXh0JywgNDgsIDE1LCAxOTQsIDMwLCAzLCBOb25lLCB1J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgW1Byb2R1Y3ROYW1lXSBpbnN0YWxsYXRpb24/JywgTm9uZSwgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J0ljb24nLCB1J0ljb24nLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwgdSdbSW5mb0ljb25dJywgTm9uZSwgdSdJbmZvcm1hdGlvbiBpY29ufCcpLAotKHUnQ2FuY2VsRGxnJywgdSdObycsIHUnUHVzaEJ1dHRvbicsIDEzMiwgNTcsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ob10nLCB1J1llcycsIE5vbmUpLAotKHUnQ2FuY2VsRGxnJywgdSdZZXMnLCB1J1B1c2hCdXR0b24nLCA3MiwgNTcsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9ZZXNdJywgdSdObycsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDU1LCAzMjAsIDIwLCAzLCBOb25lLCB1J0NsaWNrIG9uIHRoZSBpY29ucyBpbiB0aGUgdHJlZSBiZWxvdyB0byBjaGFuZ2UgdGhlIHdheSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZC4nLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdUcmVlJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdTZWxlY3QgdGhlIHdheSB5b3Ugd2FudCBmZWF0dXJlcyB0byBiZSBpbnN0YWxsZWQuJywgTm9uZSwgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUN1c3RvbSBTZXR1cCcsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Jyb3dzZScsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjAwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQnJvd3NlXScsIHUnUmVzZXQnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnVHJlZScsIHUnU2VsZWN0aW9uVHJlZScsIDI1LCA4NSwgMTc1LCA5NSwgNywgdSdfQnJvd3NlUHJvcGVydHknLCB1J1RyZWUgb2Ygc2VsZWN0aW9ucycsIHUnQnJvd3NlJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JveCcsIHUnR3JvdXBCb3gnLCAyMTAsIDgxLCAxNDAsIDk4LCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnUmVzZXQnLCB1J1B1c2hCdXR0b24nLCA0MiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmVzZXRdJywgdSdEaXNrQ29zdCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdEaXNrQ29zdCcsIHUnUHVzaEJ1dHRvbicsIDExMSwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnRGlzayAmVXNhZ2UnLCB1J0JhY2snLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnSXRlbURlc2NyaXB0aW9uJywgdSdUZXh0JywgMjE1LCA5MCwgMTMxLCAzMCwgMywgTm9uZSwgdSdNdWx0aWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLicsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdJdGVtU2l6ZScsIHUnVGV4dCcsIDIxNSwgMTMwLCAxMzEsIDQ1LCAzLCBOb25lLCB1J1RoZSBzaXplIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4nLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb24nLCB1J1RleHQnLCA3NSwgMjAwLCAyMTUsIDIwLCAzLCBOb25lLCB1IjxUaGUgc2VsZWN0aW9uJ3MgcGF0aD4iLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb25MYWJlbCcsIHUnVGV4dCcsIDI1LCAyMDAsIDUwLCAxMCwgMywgTm9uZSwgdSdMb2NhdGlvbjonLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDUzLCAzMzAsIDQwLCAzLCBOb25lLCB1J1RoZSBoaWdobGlnaHRlZCB2b2x1bWVzIChpZiBhbnkpIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyIHJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byBpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCBkZXN0aW5hdGlvbiBkcml2ZShzKS4nLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J09LJywgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMCwgMjAsIDI4MCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuJywgTm9uZSwgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdRGlzayBTcGFjZSBSZXF1aXJlbWVudHMnLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdWb2x1bWVMaXN0JywgdSdWb2x1bWVDb3N0TGlzdCcsIDIwLCAxMDAsIDMzMCwgMTIwLCAzOTMyMjMsIE5vbmUsIHUnezEyMH17NzB9ezcwfXs3MH17NzB9JywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnWScsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9ZZXNdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQScsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQycsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnRXJyb3JJY29uJywgdSdJY29uJywgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsIHUnW0luZm9JY29uXScsIE5vbmUsIHUnSW5mb3JtYXRpb24gaWNvbnwnKSwKLSh1J0Vycm9yRGxnJywgdSdFcnJvclRleHQnLCB1J1RleHQnLCA0OCwgMTUsIDIwNSwgNjAsIDMsIE5vbmUsIHUnSW5mb3JtYXRpb24gdGV4dCcsIE5vbmUsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J0knLCB1J1B1c2hCdXR0b24nLCAxMDAsIDgwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSWdub3JlXScsIE5vbmUsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J04nLCB1J1B1c2hCdXR0b24nLCAxMDAsIDgwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTm9dJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnTycsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9PS10nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdSJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1JldHJ5XScsIE5vbmUsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnVGV4dCcsIHUnVGV4dCcsIDIwLCA1NSwgMzMwLCAzMCwgMywgTm9uZSwgdSdUaGUgZm9sbG93aW5nIGFwcGxpY2F0aW9ucyBhcmUgdXNpbmcgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYnkgdGhpcyBzZXR1cC4gQ2xvc2UgdGhlc2UgYXBwbGljYXRpb25zIGFuZCB0aGVuIGNsaWNrIFJldHJ5IHRvIGNvbnRpbnVlIHRoZSBpbnN0YWxsYXRpb24gb3IgQ2FuY2VsIHRvIGV4aXQgaXQuJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1JldHJ5JywgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMCwgMjMsIDI4MCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdTb21lIGZpbGVzIHRoYXQgbmVlZCB0byBiZSB1cGRhdGVkIGFyZSBjdXJyZW50bHkgaW4gdXNlLicsIE5vbmUsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdRmlsZXMgaW4gVXNlJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdSZXRyeScsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmV0cnldJywgdSdJZ25vcmUnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0V4aXQnLCB1J1B1c2hCdXR0b24nLCAxNjYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0V4aXRdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0lnbm9yZScsIHUnUHVzaEJ1dHRvbicsIDIzNSwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSWdub3JlXScsIHUnRXhpdCcsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnTGlzdCcsIHUnTGlzdEJveCcsIDIwLCA4NywgMzMwLCAxMzAsIDcsIHUnRmlsZUluVXNlUHJvY2VzcycsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdBZ3JlZW1lbnRUZXh0JywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnUGxlYXNlIHJlYWQgdGhlIGZvbGxvd2luZyBsaWNlbnNlIGFncmVlbWVudCBjYXJlZnVsbHknLCBOb25lLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUVuZC1Vc2VyIExpY2Vuc2UgQWdyZWVtZW50JywgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQWdyZWVtZW50VGV4dCcsIHUnU2Nyb2xsYWJsZVRleHQnLCAyMCwgNjAsIDMzMCwgMTIwLCA3LCBOb25lLCB1J3tcXHJ0ZjFcXGFuc2lcXGFuc2ljcGcxMjUyXFxkZWZmMFxcZGVmdGFiNzIwe1xcZm9udHRibHtcXGYwXFxmcm9tYW5cXGZwcnEyIFRpbWVzIE5ldyBSb21hbjt9fXtcXGNvbG9ydGJsXFxyZWQwXFxncmVlbjBcXGJsdWUwO30gXFxkZWZsYW5nMTAzM1xcaG9yemRvY3tcXCpcXGZjaGFycyB9e1xcKlxcbGNoYXJzIH1cXHBhcmRcXHBsYWluXFxmMFxcZnMyMCA8WW91ciBsaWNlbnNlIGFncmVlbWVudCBzaG91bGQgZ28gaGVyZS4+XFxwYXIgfScsIHUnQnV0dG9ucycsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQnV0dG9ucycsIHUnUmFkaW9CdXR0b25Hcm91cCcsIDIwLCAxODcsIDMzMCwgNDAsIDMsIHUnSUFncmVlJywgTm9uZSwgdSdCYWNrJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQ2hhbmdlTGFiZWwnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1NlbGVjdCB0aGUgb3BlcmF0aW9uIHlvdSB3aXNoIHRvIHBlcmZvcm0uJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDI0MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XU1vZGlmeSwgUmVwYWlyIG9yIFJlbW92ZSBpbnN0YWxsYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VMYWJlbCcsIHUnVGV4dCcsIDEwNSwgNjUsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF0mTW9kaWZ5JywgdSdDaGFuZ2VCdXR0b24nLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQ2hhbmdlQnV0dG9uJywgdSdQdXNoQnV0dG9uJywgNTAsIDY1LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW0N1c3RvbVNldHVwSWNvbl0nLCB1J1JlcGFpckxhYmVsJywgdSdNb2RpZnkgSW5zdGFsbGF0aW9ufCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJMYWJlbCcsIHUnVGV4dCcsIDEwNSwgMTE0LCAxMDAsIDEwLCAzLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdUmUmcGFpcicsIHUnUmVwYWlyQnV0dG9uJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZVRleHQnLCB1J1RleHQnLCAxMDUsIDc4LCAyMzAsIDIwLCAzLCBOb25lLCB1J0FsbG93cyB1c2VycyB0byBjaGFuZ2UgdGhlIHdheSBmZWF0dXJlcyBhcmUgaW5zdGFsbGVkLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgMTYzLCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW1JlbW92ZUljb25dJywgdSdCYWNrJywgdSdSZW1vdmUgSW5zdGFsbGF0aW9ufCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVMYWJlbCcsIHUnVGV4dCcsIDEwNSwgMTYzLCAxMDAsIDEwLCAzLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdJlJlbW92ZScsIHUnUmVtb3ZlQnV0dG9uJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZVRleHQnLCB1J1RleHQnLCAxMDUsIDE3NiwgMjMwLCAyMCwgMywgTm9uZSwgdSdSZW1vdmVzIFtQcm9kdWN0TmFtZV0gZnJvbSB5b3VyIGNvbXB1dGVyLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgMTE0LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW1JlcGFpckljb25dJywgdSdSZW1vdmVMYWJlbCcsIHUnUmVwYWlyIEluc3RhbGxhdGlvbnwnKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVwYWlyVGV4dCcsIHUnVGV4dCcsIDEwNSwgMTI3LCAyMzAsIDMwLCAzLCBOb25lLCB1J1JlcGFpcnMgZXJyb3JzIGluIHRoZSBtb3N0IHJlY2VudCBpbnN0YWxsYXRpb24gc3RhdGUgLSBmaXhlcyBtaXNzaW5nIG9yIGNvcnJ1cHQgZmlsZXMsIHNob3J0Y3V0cyBhbmQgcmVnaXN0cnkgZW50cmllcy4nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gd2lsbCBhbGxvdyB5b3UgdG8gY2hhbmdlIHRoZSB3YXkgW1Byb2R1Y3ROYW1lXSBmZWF0dXJlcyBhcmUgaW5zdGFsbGVkIG9uIHlvdXIgY29tcHV0ZXIgb3IgZXZlbiB0byByZW1vdmUgW1Byb2R1Y3ROYW1lXSBmcm9tIHlvdXIgY29tcHV0ZXIuICBDbGljayBOZXh0IHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31XZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDIwLCA1MywgMzMwLCA0MCwgMywgTm9uZSwgdSdUaGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcyBkbyBub3QgaGF2ZSBlbm91Z2ggZGlzayBzcGFjZSBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmVhdHVyZXMuICBZb3UgY2FuIGVpdGhlciByZW1vdmUgc29tZSBmaWxlcyBmcm9tIHRoZSBoaWdobGlnaHRlZCB2b2x1bWVzLCBvciBjaG9vc2UgdG8gaW5zdGFsbCBsZXNzIGZlYXR1cmVzIG9udG8gbG9jYWwgZHJpdmUocyksIG9yIHNlbGVjdCBkaWZmZXJlbnQgZGVzdGluYXRpb24gZHJpdmUocykuJywgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnT0snLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J0Rpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gZXhjZWVkcyBhdmFpbGFibGUgZGlzayBzcGFjZS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnT0snLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XU91dCBvZiBEaXNrIFNwYWNlJywgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J1ZvbHVtZUxpc3QnLCB1J1ZvbHVtZUNvc3RMaXN0JywgMjAsIDEwMCwgMzMwLCAxMjAsIDM5MzIyMywgTm9uZSwgdSd7MTIwfXs3MH17NzB9ezcwfXs3MH0nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDUzLCAzMzAsIDQwLCAzLCBOb25lLCB1J1RoZSBoaWdobGlnaHRlZCB2b2x1bWVzIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyIHJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byBpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCBkZXN0aW5hdGlvbiBkcml2ZShzKS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J05vJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMCwgMjAsIDI4MCwgMjAsIDE5NjYxMSwgTm9uZSwgdSdEaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIGV4Y2VlZHMgYXZhaWxhYmxlIGRpc2sgc3BhY2UuJywgTm9uZSwgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdT3V0IG9mIERpc2sgU3BhY2UnLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdObycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTm9dJywgdSdZZXMnLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdZZXMnLCB1J1B1c2hCdXR0b24nLCAyNDAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1llc10nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1ZvbHVtZUxpc3QnLCB1J1ZvbHVtZUNvc3RMaXN0JywgMjAsIDE0MCwgMzMwLCA4MCwgNDU4NzUyNywgTm9uZSwgdSd7MTIwfXs3MH17NzB9ezcwfXs3MH0nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdUZXh0MicsIHUnVGV4dCcsIDIwLCA5NCwgMzMwLCA0MCwgMywgTm9uZSwgdSJBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IGNob29zZSB0byBkaXNhYmxlIHRoZSBpbnN0YWxsZXIncyByb2xsYmFjayBmdW5jdGlvbmFsaXR5LiAgVGhpcyBhbGxvd3MgdGhlIGluc3RhbGxlciB0byByZXN0b3JlIHlvdXIgY29tcHV0ZXIncyBvcmlnaW5hbCBzdGF0ZSBzaG91bGQgdGhlIGluc3RhbGxhdGlvbiBiZSBpbnRlcnJ1cHRlZCBpbiBhbnkgd2F5LiAgQ2xpY2sgWWVzIGlmIHlvdSB3aXNoIHRvIHRha2UgdGhlIHJpc2sgdG8gZGlzYWJsZSByb2xsYmFjay4iLCBOb25lLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgMzAsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gd2lsbCBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIFtQcm9kdWN0TmFtZV0gb24geW91ciBjb21wdXRlci4gIENsaWNrIEluc3RhbGwgdG8gY29udGludWUgb3IgQ2FuY2VsIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVJlc3VtaW5nIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdJbnN0YWxsJywgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0luc3RhbGxdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdUeXBpY2FsTGFiZWwnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J0Nob29zZSB0aGUgc2V0dXAgdHlwZSB0aGF0IGJlc3Qgc3VpdHMgeW91ciBuZWVkcycsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DaG9vc2UgU2V0dXAgVHlwZScsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxMYWJlbCcsIHUnVGV4dCcsIDEwNSwgNjUsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF0mVHlwaWNhbCcsIHUnVHlwaWNhbEJ1dHRvbicsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDb21wbGV0ZUJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxNzEsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbQ29tcGxldGVTZXR1cEljb25dJywgdSdCYWNrJywgdSdDb21wbGV0ZSBJbnN0YWxsYXRpb258JyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlTGFiZWwnLCB1J1RleHQnLCAxMDUsIDE3MSwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XUMmb21wbGV0ZScsIHUnQ29tcGxldGVCdXR0b24nLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVUZXh0JywgdSdUZXh0JywgMTA1LCAxODQsIDIzMCwgMjAsIDMsIE5vbmUsIHUnQWxsIHByb2dyYW0gZmVhdHVyZXMgd2lsbCBiZSBpbnN0YWxsZWQuICAoUmVxdWlyZXMgbW9zdCBkaXNrIHNwYWNlKScsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDdXN0b21CdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgMTE4LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW0N1c3RvbVNldHVwSWNvbl0nLCB1J0NvbXBsZXRlTGFiZWwnLCB1J0N1c3RvbSBJbnN0YWxsYXRpb258JyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0N1c3RvbUxhYmVsJywgdSdUZXh0JywgMTA1LCAxMTgsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DJnVzdG9tJywgdSdDdXN0b21CdXR0b24nLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tVGV4dCcsIHUnVGV4dCcsIDEwNSwgMTMxLCAyMzAsIDMwLCAzLCBOb25lLCB1J0FsbG93cyB1c2VycyB0byBjaG9vc2Ugd2hpY2ggcHJvZ3JhbSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZCBhbmQgd2hlcmUgdGhleSB3aWxsIGJlIGluc3RhbGxlZC4gUmVjb21tZW5kZWQgZm9yIGFkdmFuY2VkIHVzZXJzLicsIE5vbmUsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUeXBpY2FsQnV0dG9uJywgdSdQdXNoQnV0dG9uJywgNTAsIDY1LCAzOCwgMzgsIDU3NjcxNzEsIE5vbmUsIHUnW0luc3RhbGxlckljb25dJywgdSdDdXN0b21MYWJlbCcsIHUnVHlwaWNhbCBJbnN0YWxsYXRpb258JyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxUZXh0JywgdSdUZXh0JywgMTA1LCA3OCwgMjMwLCAyMCwgMywgTm9uZSwgdSdJbnN0YWxscyB0aGUgbW9zdCBjb21tb24gcHJvZ3JhbSBmZWF0dXJlcy4gUmVjb21tZW5kZWQgZm9yIG1vc3QgdXNlcnMuJywgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J05hbWVMYWJlbCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSBlbnRlciB5b3VyIGN1c3RvbWVyIGluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DdXN0b21lciBJbmZvcm1hdGlvbicsIE5vbmUsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgdSdUZXh0JywgNDUsIDExMCwgMTAwLCAxNSwgMywgTm9uZSwgdScmT3JnYW5pemF0aW9uOicsIHUnT3JnYW5pemF0aW9uRWRpdCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ0RLZXlFZGl0JywgdSdNYXNrZWRFZGl0JywgNDUsIDE1OSwgMjUwLCAxNiwgMywgdSdQSURLRVknLCB1J1tQSURUZW1wbGF0ZV0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0NES2V5TGFiZWwnLCB1J1RleHQnLCA0NSwgMTQ3LCA1MCwgMTAsIDMsIE5vbmUsIHUnQ0QgJktleTonLCB1J0NES2V5RWRpdCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnT3JnYW5pemF0aW9uRWRpdCcsIHUnRWRpdCcsIDQ1LCAxMjIsIDIyMCwgMTgsIDMsIHUnQ09NUEFOWU5BTUUnLCB1J3s4MH0nLCB1J0NES2V5TGFiZWwnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05hbWVMYWJlbCcsIHUnVGV4dCcsIDQ1LCA3MywgMTAwLCAxNSwgMywgTm9uZSwgdScmVXNlciBOYW1lOicsIHUnTmFtZUVkaXQnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05hbWVFZGl0JywgdSdFZGl0JywgNDUsIDg1LCAyMjAsIDE4LCAzLCB1J1VTRVJOQU1FJywgdSd7ODB9JywgdSdPcmdhbml6YXRpb25MYWJlbCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyNSwgNzAsIDMyMCwgMjAsIDMsIE5vbmUsIHUnQ2xpY2sgSW5zdGFsbCB0byBiZWdpbiB0aGUgaW5zdGFsbGF0aW9uLiAgSWYgeW91IHdhbnQgdG8gcmV2aWV3IG9yIGNoYW5nZSBhbnkgb2YgeW91ciBpbnN0YWxsYXRpb24gc2V0dGluZ3MsIGNsaWNrIEJhY2suICBDbGljayBDYW5jZWwgdG8gZXhpdCB0aGUgd2l6YXJkLicsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gaXMgcmVhZHkgdG8gYmVnaW4gdGhlIFtJbnN0YWxsTW9kZV0gaW5zdGFsbGF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdUmVhZHkgdG8gSW5zdGFsbCcsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdJbnN0YWxsJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSW5zdGFsbF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDcwLCAzMjAsIDMwLCAzLCBOb25lLCB1J0NsaWNrIFJlbW92ZSB0byByZW1vdmUgW1Byb2R1Y3ROYW1lXSBmcm9tIHlvdXIgY29tcHV0ZXIuICBJZiB5b3Ugd2FudCB0byByZXZpZXcgb3IgY2hhbmdlIGFueSBvZiB5b3VyIGluc3RhbGxhdGlvbiBzZXR0aW5ncywgY2xpY2sgQmFjay4gIENsaWNrIENhbmNlbCB0byBleGl0IHRoZSB3aXphcmQuJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnWW91IGhhdmUgY2hvc2VuIHRvIHJlbW92ZSB0aGUgcHJvZ3JhbSBmcm9tIHlvdXIgY29tcHV0ZXIuJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XVJlbW92ZSBbUHJvZHVjdE5hbWVdJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdSZW1vdmUnLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZW1vdmVdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDI1LCA3MCwgMzIwLCAzMCwgMywgTm9uZSwgdSdDbGljayBSZXBhaXIgdG8gcmVwYWlyIHRoZSBpbnN0YWxsYXRpb24gb2YgW1Byb2R1Y3ROYW1lXS4gIElmIHlvdSB3YW50IHRvIHJldmlldyBvciBjaGFuZ2UgYW55IG9mIHlvdXIgaW5zdGFsbGF0aW9uIHNldHRpbmdzLCBjbGljayBCYWNrLiAgQ2xpY2sgQ2FuY2VsIHRvIGV4aXQgdGhlIHdpemFyZC4nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdUaGUgW1dpemFyZF0gaXMgcmVhZHkgdG8gYmVnaW4gdGhlIHJlcGFpciBvZiBbUHJvZHVjdE5hbWVdLicsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1SZXBhaXIgW1Byb2R1Y3ROYW1lXScsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnUmVwYWlyJywgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmVwYWlyXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDQ4LCAxNSwgMTk0LCAzMCwgMywgTm9uZSwgdSdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgaW5zdGFsbGVyIGZpbmlzaGVzIGRldGVybWluaW5nIHlvdXIgZGlzayBzcGFjZSByZXF1aXJlbWVudHMuJywgTm9uZSwgTm9uZSksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnSWNvbicsIHUnSWNvbicsIDE1LCAxNSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLCB1J1tFeGNsYW1hdGlvbkljb25dJywgTm9uZSwgdSdFeGNsYW1hdGlvbiBpY29ufCcpLAotKHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J1JldHVybicsIHUnUHVzaEJ1dHRvbicsIDEwMiwgNTcsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXR1cm5dJywgTm9uZSwgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCaXRtYXAnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGluc3RhbGwgW1Byb2R1Y3ROYW1lXSBvbiB5b3VyIGNvbXB1dGVyLiAgQ2xpY2sgTmV4dCB0byBjb250aW51ZSBvciBDYW5jZWwgdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVdlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi1dCi0KLUxpc3RCb3ggPSBbCi1dCi0KLUFjdGlvblRleHQgPSBbCi0odSdJbnN0YWxsVmFsaWRhdGUnLCB1J1ZhbGlkYXRpbmcgaW5zdGFsbCcsIE5vbmUpLAotKHUnSW5zdGFsbEZpbGVzJywgdSdDb3B5aW5nIG5ldyBmaWxlcycsIHUnRmlsZTogWzFdLCAgRGlyZWN0b3J5OiBbOV0sICBTaXplOiBbNl0nKSwKLSh1J0luc3RhbGxBZG1pblBhY2thZ2UnLCB1J0NvcHlpbmcgbmV0d29yayBpbnN0YWxsIGZpbGVzJywgdSdGaWxlOiBbMV0sIERpcmVjdG9yeTogWzldLCBTaXplOiBbNl0nKSwKLSh1J0ZpbGVDb3N0JywgdSdDb21wdXRpbmcgc3BhY2UgcmVxdWlyZW1lbnRzJywgTm9uZSksCi0odSdDb3N0SW5pdGlhbGl6ZScsIHUnQ29tcHV0aW5nIHNwYWNlIHJlcXVpcmVtZW50cycsIE5vbmUpLAotKHUnQ29zdEZpbmFsaXplJywgdSdDb21wdXRpbmcgc3BhY2UgcmVxdWlyZW1lbnRzJywgTm9uZSksCi0odSdDcmVhdGVTaG9ydGN1dHMnLCB1J0NyZWF0aW5nIHNob3J0Y3V0cycsIHUnU2hvcnRjdXQ6IFsxXScpLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCB1J1B1Ymxpc2hpbmcgUXVhbGlmaWVkIENvbXBvbmVudHMnLCB1J0NvbXBvbmVudCBJRDogWzFdLCBRdWFsaWZpZXI6IFsyXScpLAotKHUnUHVibGlzaEZlYXR1cmVzJywgdSdQdWJsaXNoaW5nIFByb2R1Y3QgRmVhdHVyZXMnLCB1J0ZlYXR1cmU6IFsxXScpLAotKHUnUHVibGlzaFByb2R1Y3QnLCB1J1B1Ymxpc2hpbmcgcHJvZHVjdCBpbmZvcm1hdGlvbicsIE5vbmUpLAotKHUnUmVnaXN0ZXJDbGFzc0luZm8nLCB1J1JlZ2lzdGVyaW5nIENsYXNzIHNlcnZlcnMnLCB1J0NsYXNzIElkOiBbMV0nKSwKLSh1J1JlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIHUnUmVnaXN0ZXJpbmcgZXh0ZW5zaW9uIHNlcnZlcnMnLCB1J0V4dGVuc2lvbjogWzFdJyksCi0odSdSZWdpc3Rlck1JTUVJbmZvJywgdSdSZWdpc3RlcmluZyBNSU1FIGluZm8nLCB1J01JTUUgQ29udGVudCBUeXBlOiBbMV0sIEV4dGVuc2lvbjogWzJdJyksCi0odSdSZWdpc3RlclByb2dJZEluZm8nLCB1J1JlZ2lzdGVyaW5nIHByb2dyYW0gaWRlbnRpZmllcnMnLCB1J1Byb2dJZDogWzFdJyksCi0odSdBbGxvY2F0ZVJlZ2lzdHJ5U3BhY2UnLCB1J0FsbG9jYXRpbmcgcmVnaXN0cnkgc3BhY2UnLCB1J0ZyZWUgc3BhY2U6IFsxXScpLAotKHUnQXBwU2VhcmNoJywgdSdTZWFyY2hpbmcgZm9yIGluc3RhbGxlZCBhcHBsaWNhdGlvbnMnLCB1J1Byb3BlcnR5OiBbMV0sIFNpZ25hdHVyZTogWzJdJyksCi0odSdCaW5kSW1hZ2UnLCB1J0JpbmRpbmcgZXhlY3V0YWJsZXMnLCB1J0ZpbGU6IFsxXScpLAotKHUnQ0NQU2VhcmNoJywgdSdTZWFyY2hpbmcgZm9yIHF1YWxpZnlpbmcgcHJvZHVjdHMnLCBOb25lKSwKLSh1J0NyZWF0ZUZvbGRlcnMnLCB1J0NyZWF0aW5nIGZvbGRlcnMnLCB1J0ZvbGRlcjogWzFdJyksCi0odSdEZWxldGVTZXJ2aWNlcycsIHUnRGVsZXRpbmcgc2VydmljZXMnLCB1J1NlcnZpY2U6IFsxXScpLAotKHUnRHVwbGljYXRlRmlsZXMnLCB1J0NyZWF0aW5nIGR1cGxpY2F0ZSBmaWxlcycsIHUnRmlsZTogWzFdLCAgRGlyZWN0b3J5OiBbOV0sICBTaXplOiBbNl0nKSwKLSh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCB1J1NlYXJjaGluZyBmb3IgcmVsYXRlZCBhcHBsaWNhdGlvbnMnLCB1J0ZvdW5kIGFwcGxpY2F0aW9uOiBbMV0nKSwKLSh1J0luc3RhbGxPREJDJywgdSdJbnN0YWxsaW5nIE9EQkMgY29tcG9uZW50cycsIE5vbmUpLAotKHUnSW5zdGFsbFNlcnZpY2VzJywgdSdJbnN0YWxsaW5nIG5ldyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzJdJyksCi0odSdMYXVuY2hDb25kaXRpb25zJywgdSdFdmFsdWF0aW5nIGxhdW5jaCBjb25kaXRpb25zJywgTm9uZSksCi0odSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIHUnTWlncmF0aW5nIGZlYXR1cmUgc3RhdGVzIGZyb20gcmVsYXRlZCBhcHBsaWNhdGlvbnMnLCB1J0FwcGxpY2F0aW9uOiBbMV0nKSwKLSh1J01vdmVGaWxlcycsIHUnTW92aW5nIGZpbGVzJywgdSdGaWxlOiBbMV0sICBEaXJlY3Rvcnk6IFs5XSwgIFNpemU6IFs2XScpLAotKHUnUGF0Y2hGaWxlcycsIHUnUGF0Y2hpbmcgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgIERpcmVjdG9yeTogWzJdLCAgU2l6ZTogWzNdJyksCi0odSdQcm9jZXNzQ29tcG9uZW50cycsIHUnVXBkYXRpbmcgY29tcG9uZW50IHJlZ2lzdHJhdGlvbicsIE5vbmUpLAotKHUnUmVnaXN0ZXJDb21QbHVzJywgdSdSZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9ucyBhbmQgQ29tcG9uZW50cycsIHUnQXBwSWQ6IFsxXXt7LCBBcHBUeXBlOiBbMl0sIFVzZXJzOiBbM10sIFJTTjogWzRdfX0nKSwKLSh1J1JlZ2lzdGVyRm9udHMnLCB1J1JlZ2lzdGVyaW5nIGZvbnRzJywgdSdGb250OiBbMV0nKSwKLSh1J1JlZ2lzdGVyUHJvZHVjdCcsIHUnUmVnaXN0ZXJpbmcgcHJvZHVjdCcsIHUnWzFdJyksCi0odSdSZWdpc3RlclR5cGVMaWJyYXJpZXMnLCB1J1JlZ2lzdGVyaW5nIHR5cGUgbGlicmFyaWVzJywgdSdMaWJJRDogWzFdJyksCi0odSdSZWdpc3RlclVzZXInLCB1J1JlZ2lzdGVyaW5nIHVzZXInLCB1J1sxXScpLAotKHUnUmVtb3ZlRHVwbGljYXRlRmlsZXMnLCB1J1JlbW92aW5nIGR1cGxpY2F0ZWQgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0nKSwKLSh1J1JlbW92ZUVudmlyb25tZW50U3RyaW5ncycsIHUnVXBkYXRpbmcgZW52aXJvbm1lbnQgc3RyaW5ncycsIHUnTmFtZTogWzFdLCBWYWx1ZTogWzJdLCBBY3Rpb24gWzNdJyksCi0odSdSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzJywgdSdSZW1vdmluZyBhcHBsaWNhdGlvbnMnLCB1J0FwcGxpY2F0aW9uOiBbMV0sIENvbW1hbmQgbGluZTogWzJdJyksCi0odSdSZW1vdmVGaWxlcycsIHUnUmVtb3ZpbmcgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0nKSwKLSh1J1JlbW92ZUZvbGRlcnMnLCB1J1JlbW92aW5nIGZvbGRlcnMnLCB1J0ZvbGRlcjogWzFdJyksCi0odSdSZW1vdmVJbmlWYWx1ZXMnLCB1J1JlbW92aW5nIElOSSBmaWxlcyBlbnRyaWVzJywgdSdGaWxlOiBbMV0sICBTZWN0aW9uOiBbMl0sICBLZXk6IFszXSwgVmFsdWU6IFs0XScpLAotKHUnUmVtb3ZlT0RCQycsIHUnUmVtb3ZpbmcgT0RCQyBjb21wb25lbnRzJywgTm9uZSksCi0odSdSZW1vdmVSZWdpc3RyeVZhbHVlcycsIHUnUmVtb3Zpbmcgc3lzdGVtIHJlZ2lzdHJ5IHZhbHVlcycsIHUnS2V5OiBbMV0sIE5hbWU6IFsyXScpLAotKHUnUmVtb3ZlU2hvcnRjdXRzJywgdSdSZW1vdmluZyBzaG9ydGN1dHMnLCB1J1Nob3J0Y3V0OiBbMV0nKSwKLSh1J1JNQ0NQU2VhcmNoJywgdSdTZWFyY2hpbmcgZm9yIHF1YWxpZnlpbmcgcHJvZHVjdHMnLCBOb25lKSwKLSh1J1NlbGZSZWdNb2R1bGVzJywgdSdSZWdpc3RlcmluZyBtb2R1bGVzJywgdSdGaWxlOiBbMV0sIEZvbGRlcjogWzJdJyksCi0odSdTZWxmVW5yZWdNb2R1bGVzJywgdSdVbnJlZ2lzdGVyaW5nIG1vZHVsZXMnLCB1J0ZpbGU6IFsxXSwgRm9sZGVyOiBbMl0nKSwKLSh1J1NldE9EQkNGb2xkZXJzJywgdSdJbml0aWFsaXppbmcgT0RCQyBkaXJlY3RvcmllcycsIE5vbmUpLAotKHUnU3RhcnRTZXJ2aWNlcycsIHUnU3RhcnRpbmcgc2VydmljZXMnLCB1J1NlcnZpY2U6IFsxXScpLAotKHUnU3RvcFNlcnZpY2VzJywgdSdTdG9wcGluZyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzFdJyksCi0odSdVbnB1Ymxpc2hDb21wb25lbnRzJywgdSdVbnB1Ymxpc2hpbmcgUXVhbGlmaWVkIENvbXBvbmVudHMnLCB1J0NvbXBvbmVudCBJRDogWzFdLCBRdWFsaWZpZXI6IFsyXScpLAotKHUnVW5wdWJsaXNoRmVhdHVyZXMnLCB1J1VucHVibGlzaGluZyBQcm9kdWN0IEZlYXR1cmVzJywgdSdGZWF0dXJlOiBbMV0nKSwKLSh1J1VucmVnaXN0ZXJDbGFzc0luZm8nLCB1J1VucmVnaXN0ZXIgQ2xhc3Mgc2VydmVycycsIHUnQ2xhc3MgSWQ6IFsxXScpLAotKHUnVW5yZWdpc3RlckNvbVBsdXMnLCB1J1VucmVnaXN0ZXJpbmcgQ09NKyBBcHBsaWNhdGlvbnMgYW5kIENvbXBvbmVudHMnLCB1J0FwcElkOiBbMV17eywgQXBwVHlwZTogWzJdfX0nKSwKLSh1J1VucmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgdSdVbnJlZ2lzdGVyaW5nIGV4dGVuc2lvbiBzZXJ2ZXJzJywgdSdFeHRlbnNpb246IFsxXScpLAotKHUnVW5yZWdpc3RlckZvbnRzJywgdSdVbnJlZ2lzdGVyaW5nIGZvbnRzJywgdSdGb250OiBbMV0nKSwKLSh1J1VucmVnaXN0ZXJNSU1FSW5mbycsIHUnVW5yZWdpc3RlcmluZyBNSU1FIGluZm8nLCB1J01JTUUgQ29udGVudCBUeXBlOiBbMV0sIEV4dGVuc2lvbjogWzJdJyksCi0odSdVbnJlZ2lzdGVyUHJvZ0lkSW5mbycsIHUnVW5yZWdpc3RlcmluZyBwcm9ncmFtIGlkZW50aWZpZXJzJywgdSdQcm9nSWQ6IFsxXScpLAotKHUnVW5yZWdpc3RlclR5cGVMaWJyYXJpZXMnLCB1J1VucmVnaXN0ZXJpbmcgdHlwZSBsaWJyYXJpZXMnLCB1J0xpYklEOiBbMV0nKSwKLSh1J1dyaXRlRW52aXJvbm1lbnRTdHJpbmdzJywgdSdVcGRhdGluZyBlbnZpcm9ubWVudCBzdHJpbmdzJywgdSdOYW1lOiBbMV0sIFZhbHVlOiBbMl0sIEFjdGlvbiBbM10nKSwKLSh1J1dyaXRlSW5pVmFsdWVzJywgdSdXcml0aW5nIElOSSBmaWxlcyB2YWx1ZXMnLCB1J0ZpbGU6IFsxXSwgIFNlY3Rpb246IFsyXSwgIEtleTogWzNdLCBWYWx1ZTogWzRdJyksCi0odSdXcml0ZVJlZ2lzdHJ5VmFsdWVzJywgdSdXcml0aW5nIHN5c3RlbSByZWdpc3RyeSB2YWx1ZXMnLCB1J0tleTogWzFdLCBOYW1lOiBbMl0sIFZhbHVlOiBbM10nKSwKLSh1J0FkdmVydGlzZScsIHUnQWR2ZXJ0aXNpbmcgYXBwbGljYXRpb24nLCBOb25lKSwKLSh1J0dlbmVyYXRlU2NyaXB0JywgdSdHZW5lcmF0aW5nIHNjcmlwdCBvcGVyYXRpb25zIGZvciBhY3Rpb246JywgdSdbMV0nKSwKLSh1J0luc3RhbGxTRlBDYXRhbG9nRmlsZScsIHUnSW5zdGFsbGluZyBzeXN0ZW0gY2F0YWxvZycsIHUnRmlsZTogWzFdLCAgRGVwZW5kZW5jaWVzOiBbMl0nKSwKLSh1J01zaVB1Ymxpc2hBc3NlbWJsaWVzJywgdSdQdWJsaXNoaW5nIGFzc2VtYmx5IGluZm9ybWF0aW9uJywgdSdBcHBsaWNhdGlvbiBDb250ZXh0OlsxXSwgQXNzZW1ibHkgTmFtZTpbMl0nKSwKLSh1J01zaVVucHVibGlzaEFzc2VtYmxpZXMnLCB1J1VucHVibGlzaGluZyBhc3NlbWJseSBpbmZvcm1hdGlvbicsIHUnQXBwbGljYXRpb24gQ29udGV4dDpbMV0sIEFzc2VtYmx5IE5hbWU6WzJdJyksCi0odSdSb2xsYmFjaycsIHUnUm9sbGluZyBiYWNrIGFjdGlvbjonLCB1J1sxXScpLAotKHUnUm9sbGJhY2tDbGVhbnVwJywgdSdSZW1vdmluZyBiYWNrdXAgZmlsZXMnLCB1J0ZpbGU6IFsxXScpLAotKHUnVW5tb3ZlRmlsZXMnLCB1J1JlbW92aW5nIG1vdmVkIGZpbGVzJywgdSdGaWxlOiBbMV0sIERpcmVjdG9yeTogWzldJyksCi0odSdVbnB1Ymxpc2hQcm9kdWN0JywgdSdVbnB1Ymxpc2hpbmcgcHJvZHVjdCBpbmZvcm1hdGlvbicsIE5vbmUpLAotXQotCi1Db250cm9sQ29uZGl0aW9uID0gWwotKHUnQ3VzdG9taXplRGxnJywgdSdCcm93c2UnLCB1J0hpZGUnLCB1J0luc3RhbGxlZCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnSGlkZScsIHUnSW5zdGFsbGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0xvY2F0aW9uTGFiZWwnLCB1J0hpZGUnLCB1J0luc3RhbGxlZCcpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnRGlzYWJsZScsIHUnSUFncmVlIDw+ICJZZXMiJyksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdFbmFibGUnLCB1J0lBZ3JlZSA9ICJZZXMiJyksCi1dCi0KLUNvbnRyb2xFdmVudCA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1JzEnLCAyKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnTmV4dCcsIHUnW0luc3RhbGxNb2RlXScsIHUnU2VydmVyIEltYWdlJywgdScxJywgMSksCi0odSdFeGl0RGlhbG9nJywgdSdGaW5pc2gnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdGaW5pc2gnLCB1J0VuZERpYWxvZycsIHUnRXhpdCcsIHUnMScsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnRmluaXNoJywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdVcCcsIHUnRGlyZWN0b3J5TGlzdFVwJywgdScwJywgdScxJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdSZXNldCcsIHUnMCcsIHUnMScsIDEpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdOZXdGb2xkZXInLCB1J0RpcmVjdG9yeUxpc3ROZXcnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdPSycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdPSycsIHUnU2V0VGFyZ2V0UGF0aCcsIHUnVEFSR0VURElSJywgdScxJywgMSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J05leHQnLCB1J1NldFRhcmdldFBhdGgnLCB1J1RBUkdFVERJUicsIHUnMScsIDEpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVhZHlEbGcnLCB1JzEnLCAyKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCcm93c2UnLCB1J1NwYXduRGlhbG9nJywgdSdBZG1pbkJyb3dzZURsZycsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnQWRtaW5XZWxjb21lRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnUHJvZHVjdElEJywgMiksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnVmFsaWRhdGVQcm9kdWN0SUQnLCB1JzAnLCB1JzAnLCAxKSwKLSh1J0Jyb3dzZURsZycsIHUnVXAnLCB1J0RpcmVjdG9yeUxpc3RVcCcsIHUnMCcsIHUnMScsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdDYW5jZWwnLCB1J1Jlc2V0JywgdScwJywgdScxJywgMSksCi0odSdCcm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J0Jyb3dzZURsZycsIHUnTmV3Rm9sZGVyJywgdSdEaXJlY3RvcnlMaXN0TmV3JywgdScwJywgdScxJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQnJvd3NlRGxnJywgdSdPSycsIHUnU2V0VGFyZ2V0UGF0aCcsIHUnW19Ccm93c2VQcm9wZXJ0eV0nLCB1JzEnLCAxKSwKLSh1J0NhbmNlbERsZycsIHUnTm8nLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J1llcycsIHUnRW5kRGlhbG9nJywgdSdFeGl0JywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnSW5zdGFsbE1vZGUgPSAiQ2hhbmdlIicsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J1NldHVwVHlwZURsZycsIHUnSW5zdGFsbE1vZGUgPSAiQ3VzdG9tIicsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlYWR5RGxnJywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Jyb3dzZScsIHUnU2VsZWN0aW9uQnJvd3NlJywgdSdCcm93c2VEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnUmVzZXQnLCB1J1Jlc2V0JywgdScwJywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Rpc2tDb3N0JywgdSdTcGF3bkRpYWxvZycsIHUnRGlza0Nvc3REbGcnLCB1JzEnLCAyKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdPSycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdZJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yWWVzJywgdScxJywgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQScsIHUnRW5kRGlhbG9nJywgdSdFcnJvckFib3J0JywgdScxJywgTm9uZSksCi0odSdFcnJvckRsZycsIHUnQycsIHUnRW5kRGlhbG9nJywgdSdFcnJvckNhbmNlbCcsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J0knLCB1J0VuZERpYWxvZycsIHUnRXJyb3JJZ25vcmUnLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdOJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yTm8nLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdPJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yT2snLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdSJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yUmV0cnknLCB1JzEnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J1JldHJ5JywgdSdFbmREaWFsb2cnLCB1J1JldHJ5JywgdScxJywgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdFeGl0JywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0lnbm9yZScsIHUnRW5kRGlhbG9nJywgdSdJZ25vcmUnLCB1JzEnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdXZWxjb21lRGxnJywgdScxJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J1NldHVwVHlwZURsZycsIHUnSUFncmVlID0gIlllcyIgQU5EIFNob3dVc2VyUmVnaXN0cmF0aW9uRGxnIDw+IDEnLCAzKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnSUFncmVlID0gIlllcyIgQU5EIFNob3dVc2VyUmVnaXN0cmF0aW9uRGxnID0gMScsIDEpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnU3Bhd25XYWl0RGlhbG9nJywgdSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnQ29zdGluZ0NvbXBsZXRlID0gMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQ2hhbmdlQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J0N1c3RvbWl6ZURsZycsIHUnMScsIDQpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J0NoYW5nZScsIHUnMScsIDEpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1tQcm9ncmVzczFdJywgdSdDaGFuZ2luZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1tQcm9ncmVzczJdJywgdSdjaGFuZ2VzJywgdScxJywgMyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZUJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZW1vdmVEbGcnLCB1JzEnLCA0KSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdSZW1vdmUnLCB1JzEnLCAxKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdbUHJvZ3Jlc3MxXScsIHUnUmVtb3ZpbmcnLCB1JzEnLCAyKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdbUHJvZ3Jlc3MyXScsIHUncmVtb3ZlcycsIHUnMScsIDMpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJCdXR0b24nLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVwYWlyRGxnJywgdScxJywgNCksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnW0luc3RhbGxNb2RlXScsIHUnUmVwYWlyJywgdScxJywgMSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnW1Byb2dyZXNzMV0nLCB1J1JlcGFpcmluZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJCdXR0b24nLCB1J1tQcm9ncmVzczJdJywgdSdyZXBhaXJzJywgdScxJywgMyksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdOZXh0JywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J05vJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1llcycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCAyKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdZZXMnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnMScsIDEpLAotKHUnUmVzdW1lRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDQpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDIpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDYpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZSYkRpc2tEbGcnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgKFBST01QVFJPTExCQUNLQ09TVD0iUCIgT1IgTk9UIFBST01QVFJPTExCQUNLQ09TVCknLCAzKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbCcsIHUnU3Bhd25XYWl0RGlhbG9nJywgdSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnQ29zdGluZ0NvbXBsZXRlID0gMScsIDEpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdFbmFibGVSb2xsYmFjaycsIHUnRmFsc2UnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdTaG93VXNlclJlZ2lzdHJhdGlvbkRsZyA8PiAxJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcgPSAxJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlYWR5RGxnJywgdScxJywgMyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdDb21wbGV0ZScsIHUnMScsIDEpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDb21wbGV0ZUJ1dHRvbicsIHUnU2V0SW5zdGFsbExldmVsJywgdScxMDAwJywgdScxJywgMiksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0N1c3RvbUJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdDdXN0b21pemVEbGcnLCB1JzEnLCAyKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdDdXN0b20nLCB1JzEnLCAxKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbEJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZWFkeURsZycsIHUnMScsIDMpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUeXBpY2FsQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdUeXBpY2FsJywgdScxJywgMSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxCdXR0b24nLCB1J1NldEluc3RhbGxMZXZlbCcsIHUnMycsIHUnMScsIDIpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1JzEnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdQcm9kdWN0SUQnLCAzKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1ZhbGlkYXRlUHJvZHVjdElEJywgdScwJywgdScwJywgMSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdOZXh0JywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMiksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnSW5zdGFsbE1vZGUgPSAiU2VydmVyIEltYWdlIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnQ3VzdG9taXplRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJDdXN0b20iIE9SIEluc3RhbGxNb2RlID0gIkNoYW5nZSInLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnSW5zdGFsbE1vZGUgPSAiUmVwYWlyIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJUeXBpY2FsIiBPUiBJbnN0YWxsTW9kZSA9ICJDb21wbGV0ZSInLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgMyksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAxKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDIpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNCksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J1JlbW92ZScsIHUnQWxsJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDQpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMiksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnU3Bhd25EaWFsb2cnLCB1J091dE9mRGlza0RsZycsIHUnKE91dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMSkgT1IgKE91dE9mRGlza1NwYWNlID0gMSBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJGIiknLCA2KSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZSYkRpc2tEbGcnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgKFBST01QVFJPTExCQUNLQ09TVD0iUCIgT1IgTk9UIFBST01QVFJPTExCQUNLQ09TVCknLCAzKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdFbmFibGVSb2xsYmFjaycsIHUnRmFsc2UnLCB1J091dE9mRGlza1NwYWNlID0gMSBBTkQgT3V0T2ZOb1JiRGlza1NwYWNlID0gMCBBTkQgUFJPTVBUUk9MTEJBQ0tDT1NUPSJEIicsIDUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdNYWludGVuYW5jZVR5cGVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAzKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDcpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDQpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNiksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnUmVpbnN0YWxsJywgdSdBbGwnLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAyKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdSZWluc3RhbGxNb2RlJywgdSdlY211cycsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDEpLAotKHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J1JldHVybicsIHUnRW5kRGlhbG9nJywgdSdFeGl0JywgdScxJywgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnMScsIE5vbmUpLAotXQotCi1EaWFsb2cgPSBbCi0odSdBZG1pbldlbGNvbWVEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnTmV4dCcsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdFeGl0RGlhbG9nJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0ZpbmlzaCcsIHUnRmluaXNoJywgdSdGaW5pc2gnKSwKLSh1J0ZhdGFsRXJyb3InLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnRmluaXNoJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcpLAotKHUnUHJlcGFyZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDEsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdDYW5jZWwnLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJyksCi0odSdQcm9ncmVzc0RsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDEsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdDYW5jZWwnLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJyksCi0odSdVc2VyRXhpdCcsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcsIHUnRmluaXNoJyksCi0odSdBZG1pbkJyb3dzZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdQYXRoRWRpdCcsIHUnT0snLCB1J0NhbmNlbCcpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnVGV4dCcsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdPcmdhbml6YXRpb25MYWJlbCcsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdCcm93c2VEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnUGF0aEVkaXQnLCB1J09LJywgdSdDYW5jZWwnKSwKLSh1J0NhbmNlbERsZycsIDUwLCAxMCwgMjYwLCA4NSwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05vJywgdSdObycsIHUnTm8nKSwKLSh1J0N1c3RvbWl6ZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDM1LCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnVHJlZScsIHUnTmV4dCcsIHUnQ2FuY2VsJyksCi0odSdEaXNrQ29zdERsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdPSycsIHUnT0snLCB1J09LJyksCi0odSdFcnJvckRsZycsIDUwLCAxMCwgMjcwLCAxMDUsIDY1NTM5LCB1J0luc3RhbGxlciBJbmZvcm1hdGlvbicsIHUnRXJyb3JUZXh0JywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgNTAsIDUwLCAzNzAsIDI3MCwgMTksIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdSZXRyeScsIHUnUmV0cnknLCB1J1JldHJ5JyksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIExpY2Vuc2UgQWdyZWVtZW50JywgdSdCdXR0b25zJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdDaGFuZ2VMYWJlbCcsIHUnQ2hhbmdlQnV0dG9uJywgdSdDYW5jZWwnKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J091dE9mRGlza0RsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdPSycsIHUnT0snLCB1J09LJyksCi0odSdPdXRPZlJiRGlza0RsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdObycsIHUnTm8nLCB1J05vJyksCi0odSdSZXN1bWVEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnSW5zdGFsbCcsIHUnSW5zdGFsbCcsIHUnQ2FuY2VsJyksCi0odSdTZXR1cFR5cGVEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnVHlwaWNhbExhYmVsJywgdSdUeXBpY2FsQnV0dG9uJywgdSdDYW5jZWwnKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnTmFtZUxhYmVsJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMzUsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdJbnN0YWxsJywgdSdJbnN0YWxsJywgdSdDYW5jZWwnKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDM1LCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnQmFjaycsIHUnQmFjaycsIHUnQ2FuY2VsJyksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzNSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J1JlcGFpcicsIHUnUmVwYWlyJywgdSdDYW5jZWwnKSwKLSh1J1dhaXRGb3JDb3N0aW5nRGxnJywgNTAsIDEwLCAyNjAsIDg1LCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnUmV0dXJuJywgdSdSZXR1cm4nLCB1J1JldHVybicpLAotKHUnV2VsY29tZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLV0KLQotRXZlbnRNYXBwaW5nID0gWwotKHUnUHJlcGFyZURsZycsIHUnQWN0aW9uRGF0YScsIHUnQWN0aW9uRGF0YScsIHUnVGV4dCcpLAotKHUnUHJlcGFyZURsZycsIHUnQWN0aW9uVGV4dCcsIHUnQWN0aW9uVGV4dCcsIHUnVGV4dCcpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0FjdGlvblRleHQnLCB1J0FjdGlvblRleHQnLCB1J1RleHQnKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdQcm9ncmVzc0JhcicsIHUnU2V0UHJvZ3Jlc3MnLCB1J1Byb2dyZXNzJyksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnRGlyZWN0b3J5Q29tYm8nLCB1J0lnbm9yZUNoYW5nZScsIHUnSWdub3JlQ2hhbmdlJyksCi0odSdCcm93c2VEbGcnLCB1J0RpcmVjdG9yeUNvbWJvJywgdSdJZ25vcmVDaGFuZ2UnLCB1J0lnbm9yZUNoYW5nZScpLAotKHUnQ3VzdG9taXplRGxnJywgdSdOZXh0JywgdSdTZWxlY3Rpb25Ob0l0ZW1zJywgdSdFbmFibGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J1Jlc2V0JywgdSdTZWxlY3Rpb25Ob0l0ZW1zJywgdSdFbmFibGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0Rpc2tDb3N0JywgdSdTZWxlY3Rpb25Ob0l0ZW1zJywgdSdFbmFibGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0l0ZW1EZXNjcmlwdGlvbicsIHUnU2VsZWN0aW9uRGVzY3JpcHRpb24nLCB1J1RleHQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnSXRlbVNpemUnLCB1J1NlbGVjdGlvblNpemUnLCB1J1RleHQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb24nLCB1J1NlbGVjdGlvblBhdGgnLCB1J1RleHQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb24nLCB1J1NlbGVjdGlvblBhdGhPbicsIHUnVmlzaWJsZScpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbkxhYmVsJywgdSdTZWxlY3Rpb25QYXRoT24nLCB1J1Zpc2libGUnKSwKLV0KLQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSA9IFsKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnSW5zdGFsbEZpbGVzJywgTm9uZSwgNDAwMCksCi0odSdGaWxlQ29zdCcsIE5vbmUsIDkwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCBOb25lLCA2MjAwKSwKLSh1J1B1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDYzMDApLAotKHUnUHVibGlzaFByb2R1Y3QnLCBOb25lLCA2NDAwKSwKLSh1J1JlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgNDYwMCksCi0odSdSZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCA0NzAwKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCA0OTAwKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDQ4MDApLAotKHUnVmFsaWRhdGVQcm9kdWN0SUQnLCBOb25lLCA3MDApLAotKHUnQWxsb2NhdGVSZWdpc3RyeVNwYWNlJywgdSdOT1QgSW5zdGFsbGVkJywgMTU1MCksCi0odSdBcHBTZWFyY2gnLCBOb25lLCA0MDApLAotKHUnQmluZEltYWdlJywgTm9uZSwgNDMwMCksCi0odSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotKHUnQ3JlYXRlRm9sZGVycycsIE5vbmUsIDM3MDApLAotKHUnRGVsZXRlU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDIwMDApLAotKHUnRHVwbGljYXRlRmlsZXMnLCBOb25lLCA0MjEwKSwKLSh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCBOb25lLCAyMDApLAotKHUnSW5zdGFsbE9EQkMnLCBOb25lLCA1NDAwKSwKLSh1J0luc3RhbGxTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgNTgwMCksCi0odSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0odSdNb3ZlRmlsZXMnLCBOb25lLCAzODAwKSwKLSh1J1BhdGNoRmlsZXMnLCBOb25lLCA0MDkwKSwKLSh1J1Byb2Nlc3NDb21wb25lbnRzJywgTm9uZSwgMTYwMCksCi0odSdSZWdpc3RlckNvbVBsdXMnLCBOb25lLCA1NzAwKSwKLSh1J1JlZ2lzdGVyRm9udHMnLCBOb25lLCA1MzAwKSwKLSh1J1JlZ2lzdGVyUHJvZHVjdCcsIE5vbmUsIDYxMDApLAotKHUnUmVnaXN0ZXJUeXBlTGlicmFyaWVzJywgTm9uZSwgNTUwMCksCi0odSdSZWdpc3RlclVzZXInLCBOb25lLCA2MDAwKSwKLSh1J1JlbW92ZUR1cGxpY2F0ZUZpbGVzJywgTm9uZSwgMzQwMCksCi0odSdSZW1vdmVFbnZpcm9ubWVudFN0cmluZ3MnLCBOb25lLCAzMzAwKSwKLSh1J1JlbW92ZUV4aXN0aW5nUHJvZHVjdHMnLCBOb25lLCA2NzAwKSwKLSh1J1JlbW92ZUZpbGVzJywgTm9uZSwgMzUwMCksCi0odSdSZW1vdmVGb2xkZXJzJywgTm9uZSwgMzYwMCksCi0odSdSZW1vdmVJbmlWYWx1ZXMnLCBOb25lLCAzMTAwKSwKLSh1J1JlbW92ZU9EQkMnLCBOb25lLCAyNDAwKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5VmFsdWVzJywgTm9uZSwgMjYwMCksCi0odSdSZW1vdmVTaG9ydGN1dHMnLCBOb25lLCAzMjAwKSwKLSh1J1JNQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNjAwKSwKLSh1J1NlbGZSZWdNb2R1bGVzJywgTm9uZSwgNTYwMCksCi0odSdTZWxmVW5yZWdNb2R1bGVzJywgTm9uZSwgMjIwMCksCi0odSdTZXRPREJDRm9sZGVycycsIE5vbmUsIDExMDApLAotKHUnU3RhcnRTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgNTkwMCksCi0odSdTdG9wU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDE5MDApLAotKHUnVW5wdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDE3MDApLAotKHUnVW5wdWJsaXNoRmVhdHVyZXMnLCBOb25lLCAxODAwKSwKLSh1J1VucmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCAyNzAwKSwKLSh1J1VucmVnaXN0ZXJDb21QbHVzJywgTm9uZSwgMjEwMCksCi0odSdVbnJlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDI4MDApLAotKHUnVW5yZWdpc3RlckZvbnRzJywgTm9uZSwgMjUwMCksCi0odSdVbnJlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCAzMDAwKSwKLSh1J1VucmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgMjkwMCksCi0odSdVbnJlZ2lzdGVyVHlwZUxpYnJhcmllcycsIE5vbmUsIDIzMDApLAotKHUnV3JpdGVFbnZpcm9ubWVudFN0cmluZ3MnLCBOb25lLCA1MjAwKSwKLSh1J1dyaXRlSW5pVmFsdWVzJywgTm9uZSwgNTEwMCksCi0odSdXcml0ZVJlZ2lzdHJ5VmFsdWVzJywgTm9uZSwgNTAwMCksCi1dCi0KLUluc3RhbGxVSVNlcXVlbmNlID0gWwotIyh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSModSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0jKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0jKHUnRXhlY3V0ZUFjdGlvbicsIE5vbmUsIDEzMDApLAotIyh1J0V4aXREaWFsb2cnLCBOb25lLCAtMSksCi0jKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1ByZXBhcmVEbGcnLCBOb25lLCAxNDApLAotKHUnUHJvZ3Jlc3NEbGcnLCBOb25lLCAxMjgwKSwKLSModSdVc2VyRXhpdCcsIE5vbmUsIC0yKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnSW5zdGFsbGVkIEFORCBOT1QgUkVTVU1FIEFORCBOT1QgUHJlc2VsZWN0ZWQnLCAxMjUwKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbGVkIEFORCAoUkVTVU1FIE9SIFByZXNlbGVjdGVkKScsIDEyNDApLAotKHUnV2VsY29tZURsZycsIHUnTk9UIEluc3RhbGxlZCcsIDEyMzApLAotIyh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0jKHUnQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNTAwKSwKLSModSdGaW5kUmVsYXRlZFByb2R1Y3RzJywgTm9uZSwgMjAwKSwKLSModSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSModSdNaWdyYXRlRmVhdHVyZVN0YXRlcycsIE5vbmUsIDEyMDApLAotIyh1J1JNQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNjAwKSwKLV0KLQotTGlzdFZpZXcgPSBbCi1dCi0KLVJhZGlvQnV0dG9uID0gWwotKHUnSUFncmVlJywgMSwgdSdZZXMnLCA1LCAwLCAyNTAsIDE1LCB1J3tcXERsZ0ZvbnQ4fUkgJmFjY2VwdCB0aGUgdGVybXMgaW4gdGhlIExpY2Vuc2UgQWdyZWVtZW50JywgTm9uZSksCi0odSdJQWdyZWUnLCAyLCB1J05vJywgNSwgMjAsIDI1MCwgMTUsIHUne1xcRGxnRm9udDh9SSAmZG8gbm90IGFjY2VwdCB0aGUgdGVybXMgaW4gdGhlIExpY2Vuc2UgQWdyZWVtZW50JywgTm9uZSksCi1dCi0KLVRleHRTdHlsZSA9IFsKLSh1J0RsZ0ZvbnQ4JywgdSdUYWhvbWEnLCA4LCBOb25lLCAwKSwKLSh1J0RsZ0ZvbnRCb2xkOCcsIHUnVGFob21hJywgOCwgTm9uZSwgMSksCi0odSdWZXJkYW5hQm9sZDEzJywgdSdWZXJkYW5hJywgMTMsIE5vbmUsIDEpLAotXQotCi1VSVRleHQgPSBbCi0odSdBYnNlbnRQYXRoJywgTm9uZSksCi0odSdieXRlcycsIHUnYnl0ZXMnKSwKLSh1J0dCJywgdSdHQicpLAotKHUnS0InLCB1J0tCJyksCi0odSdNQicsIHUnTUInKSwKLSh1J01lbnVBYnNlbnQnLCB1J0VudGlyZSBmZWF0dXJlIHdpbGwgYmUgdW5hdmFpbGFibGUnKSwKLSh1J01lbnVBZHZlcnRpc2UnLCB1J0ZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnTWVudUFsbENEJywgdSdFbnRpcmUgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBDRCcpLAotKHUnTWVudUFsbExvY2FsJywgdSdFbnRpcmUgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCBvbiBsb2NhbCBoYXJkIGRyaXZlJyksCi0odSdNZW51QWxsTmV0d29yaycsIHUnRW50aXJlIGZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgdG8gcnVuIGZyb20gbmV0d29yaycpLAotKHUnTWVudUNEJywgdSdXaWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBDRCcpLAotKHUnTWVudUxvY2FsJywgdSdXaWxsIGJlIGluc3RhbGxlZCBvbiBsb2NhbCBoYXJkIGRyaXZlJyksCi0odSdNZW51TmV0d29yaycsIHUnV2lsbCBiZSBpbnN0YWxsZWQgdG8gcnVuIGZyb20gbmV0d29yaycpLAotKHUnU2NyaXB0SW5Qcm9ncmVzcycsIHUnR2F0aGVyaW5nIHJlcXVpcmVkIGluZm9ybWF0aW9uLi4uJyksCi0odSdTZWxBYnNlbnRBYnNlbnQnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiB1bmluc3RhbGxlZCcpLAotKHUnU2VsQWJzZW50QWR2ZXJ0aXNlJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSBzZXQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gcmVxdWlyZWQnKSwKLSh1J1NlbEFic2VudENEJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgdG8gcnVuIGZyb20gQ0QnKSwKLSh1J1NlbEFic2VudExvY2FsJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSBpbnN0YWxsZWQgb24gdGhlIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbEFic2VudE5ldHdvcmsnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSB0aGUgbmV0d29yaycpLAotKHUnU2VsQWR2ZXJ0aXNlQWJzZW50JywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZWNvbWUgdW5hdmFpbGFibGUnKSwKLSh1J1NlbEFkdmVydGlzZUFkdmVydGlzZScsIHUnV2lsbCBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsQWR2ZXJ0aXNlQ0QnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGF2YWlsYWJsZSB0byBydW4gZnJvbSBDRCcpLAotKHUnU2VsQWR2ZXJ0aXNlTG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCBvbiB5b3VyIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbEFkdmVydGlzZU5ldHdvcmsnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGF2YWlsYWJsZSB0byBydW4gZnJvbSB0aGUgbmV0d29yaycpLAotKHUnU2VsQ0RBYnNlbnQnLCB1IlRoaXMgZmVhdHVyZSB3aWxsIGJlIHVuaW5zdGFsbGVkIGNvbXBsZXRlbHksIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1biBpdCBmcm9tIENEIiksCi0odSdTZWxDREFkdmVydGlzZScsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gQ0Qgc3RhdGUgdG8gc2V0IHRvIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdTZWxDRENEJywgdSdUaGlzIGZlYXR1cmUgd2lsbCByZW1haW4gdG8gYmUgcnVuIGZyb20gQ0QnKSwKLSh1J1NlbENETG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGNoYW5nZSBmcm9tIHJ1biBmcm9tIENEIHN0YXRlIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsQ2hpbGRDb3N0TmVnJywgdSdUaGlzIGZlYXR1cmUgZnJlZXMgdXAgWzFdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbENoaWxkQ29zdFBvcycsIHUnVGhpcyBmZWF0dXJlIHJlcXVpcmVzIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuJyksCi0odSdTZWxDb3N0UGVuZGluZycsIHUnQ29tcGlsaW5nIGNvc3QgZm9yIHRoaXMgZmVhdHVyZS4uLicpLAotKHUnU2VsTG9jYWxBYnNlbnQnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVtb3ZlZCcpLAotKHUnU2VsTG9jYWxBZHZlcnRpc2UnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIHJlbW92ZWQgZnJvbSB5b3VyIGxvY2FsIGhhcmQgZHJpdmUsIGJ1dCB3aWxsIGJlIHNldCB0byBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsTG9jYWxDRCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHlvdXIgbG9jYWwgaGFyZCBkcml2ZSwgYnV0IHdpbGwgYmUgc3RpbGwgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIENEJyksCi0odSdTZWxMb2NhbExvY2FsJywgdSdUaGlzIGZlYXR1cmUgd2lsbCByZW1haW4gb24geW91IGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbExvY2FsTmV0d29yaycsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHlvdXIgbG9jYWwgaGFyZCBkcml2ZSwgYnV0IHdpbGwgYmUgc3RpbGwgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIHRoZSBuZXR3b3JrJyksCi0odSdTZWxOZXR3b3JrQWJzZW50JywgdSJUaGlzIGZlYXR1cmUgd2lsbCBiZSB1bmluc3RhbGxlZCBjb21wbGV0ZWx5LCB5b3Ugd29uJ3QgYmUgYWJsZSB0byBydW4gaXQgZnJvbSB0aGUgbmV0d29yayIpLAotKHUnU2VsTmV0d29ya0FkdmVydGlzZScsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gbmV0d29yayBzdGF0ZSB0byBzZXQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gcmVxdWlyZWQnKSwKLSh1J1NlbE5ldHdvcmtMb2NhbCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gbmV0d29yayBzdGF0ZSB0byBiZSBpbnN0YWxsZWQgb24gdGhlIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J1NlbE5ldHdvcmtOZXR3b3JrJywgdSdUaGlzIGZlYXR1cmUgd2lsbCByZW1haW4gdG8gYmUgcnVuIGZyb20gdGhlIG5ldHdvcmsnKSwKLSh1J1NlbFBhcmVudENvc3ROZWdOZWcnLCB1J1RoaXMgZmVhdHVyZSBmcmVlcyB1cCBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIGZyZWUgdXAgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbFBhcmVudENvc3ROZWdQb3MnLCB1J1RoaXMgZmVhdHVyZSBmcmVlcyB1cCBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIHJlcXVpcmUgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbFBhcmVudENvc3RQb3NOZWcnLCB1J1RoaXMgZmVhdHVyZSByZXF1aXJlcyBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIGZyZWUgdXAgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbFBhcmVudENvc3RQb3NQb3MnLCB1J1RoaXMgZmVhdHVyZSByZXF1aXJlcyBbMV0gb24geW91ciBoYXJkIGRyaXZlLiBJdCBoYXMgWzJdIG9mIFszXSBzdWJmZWF0dXJlcyBzZWxlY3RlZC4gVGhlIHN1YmZlYXR1cmVzIHJlcXVpcmUgWzRdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1RpbWVSZW1haW5pbmcnLCB1J1RpbWUgcmVtYWluaW5nOiB7WzFdIG1pbnV0ZXMgfXtbMl0gc2Vjb25kc30nKSwKLSh1J1ZvbHVtZUNvc3RBdmFpbGFibGUnLCB1J0F2YWlsYWJsZScpLAotKHUnVm9sdW1lQ29zdERpZmZlcmVuY2UnLCB1J0RpZmZlcmVuY2UnKSwKLSh1J1ZvbHVtZUNvc3RSZXF1aXJlZCcsIHUnUmVxdWlyZWQnKSwKLSh1J1ZvbHVtZUNvc3RTaXplJywgdSdEaXNrIFNpemUnKSwKLSh1J1ZvbHVtZUNvc3RWb2x1bWUnLCB1J1ZvbHVtZScpLAotXQotCi1fVmFsaWRhdGlvbiA9IFsKLSh1J0FkbWluRXhlY3V0ZVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZG1pblVJU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0NvbmRpdGlvbicsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0V4cHJlc3Npb24gZXZhbHVhdGVkIHRvIGRldGVybWluZSBpZiBMZXZlbCBpbiB0aGUgRmVhdHVyZSB0YWJsZSBpcyB0byBjaGFuZ2UuJyksCi0odSdDb25kaXRpb24nLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYSBGZWF0dXJlIGVudHJ5IGluIEZlYXR1cmUgdGFibGUuJyksCi0odSdDb25kaXRpb24nLCB1J0xldmVsJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTmV3IHNlbGVjdGlvbiBMZXZlbCB0byBzZXQgaW4gRmVhdHVyZSB0YWJsZSBpZiBDb25kaXRpb24gZXZhbHVhdGVzIHRvIFRSVUUuJyksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJyksCi0odSdCQkNvbnRyb2wnLCB1J1R5cGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdCQkNvbnRyb2wnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGhlIGNvbnRyb2wuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBiaWxsYm9hcmQsIGJ1dCBjYW4gcmVwZWF0IG9uIGRpZmZlcmVudCBiaWxsYm9hcmQuJyksCi0odSdCQkNvbnRyb2wnLCB1J0JpbGxib2FyZF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0JpbGxib2FyZCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRXh0ZXJuYWwga2V5IHRvIHRoZSBCaWxsYm9hcmQgdGFibGUsIG5hbWUgb2YgdGhlIGJpbGxib2FyZC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnWCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnWScsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdCQkNvbnRyb2wnLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdCQkNvbnRyb2wnLCB1J0F0dHJpYnV0ZXMnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgMzItYml0IHdvcmQgdGhhdCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZSBmbGFncyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnQSBzdHJpbmcgdXNlZCB0byBzZXQgdGhlIGluaXRpYWwgdGV4dCBjb250YWluZWQgd2l0aGluIGEgY29udHJvbCAoaWYgYXBwcm9wcmlhdGUpLicpLAotKHUnQmlsbGJvYXJkJywgdSdBY3Rpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIGFuIGFjdGlvbi4gVGhlIGJpbGxib2FyZCBpcyBkaXNwbGF5ZWQgZHVyaW5nIHRoZSBwcm9ncmVzcyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoaXMgYWN0aW9uLicpLAotKHUnQmlsbGJvYXJkJywgdSdCaWxsYm9hcmQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGhlIGJpbGxib2FyZC4nKSwKLSh1J0JpbGxib2FyZCcsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0FuIGV4dGVybmFsIGtleSB0byB0aGUgRmVhdHVyZSBUYWJsZS4gVGhlIGJpbGxib2FyZCBpcyBzaG93biBvbmx5IGlmIHRoaXMgZmVhdHVyZSBpcyBiZWluZyBpbnN0YWxsZWQuJyksCi0odSdCaWxsYm9hcmQnLCB1J09yZGVyaW5nJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGJpbGxib2FyZCBjb3JyZXNwb25kaW5nIHRvIGFuIGFjdGlvbiB0aGV5IHdpbGwgYmUgc2hvd24gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhpcyBjb2x1bW4uJyksCi0odSdCaW5hcnknLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1VuaXF1ZSBrZXkgaWRlbnRpZnlpbmcgdGhlIGJpbmFyeSBkYXRhLicpLAotKHUnQmluYXJ5JywgdSdEYXRhJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCBOb25lLCB1J1RoZSB1bmZvcm1hdHRlZCBiaW5hcnkgZGF0YS4nKSwKLSh1J0NoZWNrQm94JywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoZSBpdGVtLicpLAotKHUnQ2hlY2tCb3gnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBpdGVtLicpLAotKHUnUHJvcGVydHknLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHByb3BlcnR5LCB1cHBlcmNhc2UgaWYgc2V0dGFibGUgYnkgbGF1bmNoZXIgb3IgbG9hZGVyLicpLAotKHUnUHJvcGVydHknLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTdHJpbmcgdmFsdWUgZm9yIHByb3BlcnR5LiAgTmV2ZXIgbnVsbCBvciBlbXB0eS4nKSwKLSh1J0NvbWJvQm94JywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2aXNpYmxlIHRleHQgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGl0ZW0uIE9wdGlvbmFsLiBJZiB0aGlzIGVudHJ5IG9yIHRoZSBlbnRpcmUgY29sdW1uIGlzIG1pc3NpbmcsIHRoZSB0ZXh0IGlzIHRoZSBzYW1lIGFzIHRoZSB2YWx1ZS4nKSwKLSh1J0NvbWJvQm94JywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGNvbWJvYm94LicpLAotKHUnQ29tYm9Cb3gnLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJyksCi0odSdDb21ib0JveCcsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuXHRUaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJyksCi0odSdDb250cm9sJywgdSdUeXBlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdHlwZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J1gnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdDb250cm9sJywgdSdZJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J0hlaWdodCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hlaWdodCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnQXR0cmlidXRlcycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJyksCi0odSdDb250cm9sJywgdSdQcm9wZXJ0eScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIG5hbWUgb2YgYSBkZWZpbmVkIHByb3BlcnR5IHRvIGJlIGxpbmtlZCB0byB0aGlzIGNvbnRyb2wuICcpLAotKHUnQ29udHJvbCcsIHUnQ29udHJvbCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGRpYWxvZywgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGRpYWxvZ3MuICcpLAotKHUnQ29udHJvbCcsIHUnRGlhbG9nXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlhbG9nJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdFeHRlcm5hbCBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnQ29udHJvbCcsIHUnQ29udHJvbF9OZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbmFtZSBvZiBhbiBvdGhlciBjb250cm9sIG9uIHRoZSBzYW1lIGRpYWxvZy4gVGhpcyBsaW5rIGRlZmluZXMgdGhlIHRhYiBvcmRlciBvZiB0aGUgY29udHJvbHMuIFRoZSBsaW5rcyBoYXZlIHRvIGZvcm0gb25lIG9yIG1vcmUgY3ljbGVzIScpLAotKHUnQ29udHJvbCcsIHUnSGVscCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGhlbHAgc3RyaW5ncyB1c2VkIHdpdGggdGhlIGJ1dHRvbi4gVGhlIHRleHQgaXMgb3B0aW9uYWwuICcpLAotKHUnSWNvbicsIHUnTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkuIE5hbWUgb2YgdGhlIGljb24gZmlsZS4nKSwKLSh1J0ljb24nLCB1J0RhdGEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIGJpbmFyeSBpY29uIGRhdGEgaW4gUEUgKC5ETEwgb3IgLkVYRSkgb3IgaWNvbiAoLklDTykgZm9ybWF0LicpLAotKHUnTGlzdEJveCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicpLAotKHUnTGlzdEJveCcsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBsaXN0Ym94LicpLAotKHUnTGlzdEJveCcsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nKSwKLSh1J0xpc3RCb3gnLCB1J09yZGVyJywgdSdOJywgMSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJyksCi0odSdBY3Rpb25UZXh0JywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGJlIGRlc2NyaWJlZC4nKSwKLSh1J0FjdGlvblRleHQnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZGlzcGxheWVkIGluIHByb2dyZXNzIGRpYWxvZyBhbmQgbG9nIHdoZW4gYWN0aW9uIGlzIGV4ZWN1dGluZy4nKSwKLSh1J0FjdGlvblRleHQnLCB1J1RlbXBsYXRlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZW1wbGF0ZScsIE5vbmUsIHUnT3B0aW9uYWwgbG9jYWxpemVkIGZvcm1hdCB0ZW1wbGF0ZSB1c2VkIHRvIGZvcm1hdCBhY3Rpb24gZGF0YSByZWNvcmRzIGZvciBkaXNwbGF5IGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLicpLAotKHUnQ29udHJvbENvbmRpdGlvbicsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0O0Rpc2FibGU7RW5hYmxlO0hpZGU7U2hvdycsIHUnVGhlIGRlc2lyZWQgYWN0aW9uIHRvIGJlIHRha2VuIG9uIHRoZSBzcGVjaWZpZWQgY29udHJvbC4nKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLCB1J0NvbmRpdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdBIHN0YW5kYXJkIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0IHNwZWNpZmllcyB1bmRlciB3aGljaCBjb25kaXRpb25zIHRoZSBhY3Rpb24gc2hvdWxkIGJlIHRyaWdnZXJlZC4nKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLCB1J0RpYWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpYWxvZycsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdDb250cm9sQ29uZGl0aW9uJywgdSdDb250cm9sXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2xFdmVudCcsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgYW4gZXZlbnQgc2hvdWxkIGJlIHRyaWdnZXJlZC4nKSwKLSh1J0NvbnRyb2xFdmVudCcsIHUnT3JkZXJpbmcnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdXNlZCB0byBvcmRlciBzZXZlcmFsIGV2ZW50cyB0aWVkIHRvIHRoZSBzYW1lIGNvbnRyb2wuIENhbiBiZSBsZWZ0IGJsYW5rLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdEaWFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdEaWFsb2cnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdDb250cm9sXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbCcpLAotKHUnQ29udHJvbEV2ZW50JywgdSdFdmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBbiBpZGVudGlmaWVyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBldmVudCB0aGF0IHNob3VsZCB0YWtlIHBsYWNlIHdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggY29udHJvbCBzcGVjaWZpZWQgYnkgdGhlIGZpcnN0IHR3byBlbnRyaWVzLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdBcmd1bWVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBIHZhbHVlIHRvIGJlIHVzZWQgYXMgYSBtb2RpZmllciB3aGVuIHRyaWdnZXJpbmcgYSBwYXJ0aWN1bGFyIGV2ZW50LicpLAotKHUnRGlhbG9nJywgdSdXaWR0aCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpZHRoIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnQXR0cmlidXRlcycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBkaWFsb2cuJyksCi0odSdEaWFsb2cnLCB1J1RpdGxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1IkEgdGV4dCBzdHJpbmcgc3BlY2lmeWluZyB0aGUgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSB0aXRsZSBiYXIgb2YgdGhlIGRpYWxvZydzIHdpbmRvdy4iKSwKLSh1J0RpYWxvZycsIHUnRGlhbG9nJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdEaWFsb2cnLCB1J0hDZW50ZXJpbmcnLCB1J04nLCAwLCAxMDAsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nIG9uIGEgMC0xMDAgc2NhbGUuIDAgbWVhbnMgbGVmdCBlbmQsIDEwMCBtZWFucyByaWdodCBlbmQgb2YgdGhlIHNjcmVlbiwgNTAgY2VudGVyLicpLAotKHUnRGlhbG9nJywgdSdWQ2VudGVyaW5nJywgdSdOJywgMCwgMTAwLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyB0b3AgZW5kLCAxMDAgbWVhbnMgYm90dG9tIGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJyksCi0odSdEaWFsb2cnLCB1J0NvbnRyb2xfRmlyc3QnLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbnRyb2wnLCAyLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0RlZmluZXMgdGhlIGNvbnRyb2wgdGhhdCBoYXMgdGhlIGZvY3VzIHdoZW4gdGhlIGRpYWxvZyBpcyBjcmVhdGVkLicpLAotKHUnRGlhbG9nJywgdSdDb250cm9sX0RlZmF1bHQnLCB1J1knLCBOb25lLCBOb25lLCB1J0NvbnRyb2wnLCAyLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0RlZmluZXMgdGhlIGRlZmF1bHQgY29udHJvbC4gSGl0dGluZyByZXR1cm4gaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicpLAotKHUnRGlhbG9nJywgdSdDb250cm9sX0NhbmNlbCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRGVmaW5lcyB0aGUgY2FuY2VsIGNvbnRyb2wuIEhpdHRpbmcgZXNjYXBlIG9yIGNsaWNraW5nIG9uIHRoZSBjbG9zZSBpY29uIG9uIHRoZSBkaWFsb2cgaXMgZXF1aXZhbGVudCB0byBwdXNoaW5nIHRoaXMgYnV0dG9uLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdEaWFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdEaWFsb2cnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgRGlhbG9nLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdDb250cm9sXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0V2ZW50TWFwcGluZycsIHUnRXZlbnQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgdGhlIGNvbnRyb2wgc3Vic2NyaWJlcyB0by4nKSwKLSh1J0V2ZW50TWFwcGluZycsIHUnQXR0cmlidXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBhdHRyaWJ1dGUsIHRoYXQgaXMgc2V0IHdoZW4gdGhpcyBldmVudCBpcyByZWNlaXZlZC4nKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0FwcFNlYXJjaCcsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHdpdGggYSBTaWduYXR1cmUnKSwKLSh1J0FwcFNlYXJjaCcsIHUnU2lnbmF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnU2lnbmF0dXJlO1JlZ0xvY2F0b3I7SW5pTG9jYXRvcjtEckxvY2F0b3I7Q29tcExvY2F0b3InLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUsICBSZWdMb2NhdG9yLCBJbmlMb2NhdG9yLCBDb21wTG9jYXRvciBhbmQgdGhlIERyTG9jYXRvciB0YWJsZXMuJyksCi0odSdCaW5kSW1hZ2UnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgaW5kZXggaW50byB0aGUgRmlsZSB0YWJsZS4gVGhpcyBtdXN0IGJlIGFuIGV4ZWN1dGFibGUgZmlsZS4nKSwKLSh1J0JpbmRJbWFnZScsIHUnUGF0aCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGF0aHMnLCBOb25lLCB1J0EgbGlzdCBvZiA7ICBkZWxpbWl0ZWQgcGF0aHMgdGhhdCByZXByZXNlbnQgdGhlIHBhdGhzIHRvIGJlIHNlYXJjaGVkIGZvciB0aGUgaW1wb3J0IERMTFMuIFRoZSBsaXN0IGlzIHVzdWFsbHkgYSBsaXN0IG9mIHByb3BlcnRpZXMgZWFjaCBlbmNsb3NlZCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzIFtdIC4nKSwKLSh1J0NDUFNlYXJjaCcsIHUnU2lnbmF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnU2lnbmF0dXJlO1JlZ0xvY2F0b3I7SW5pTG9jYXRvcjtEckxvY2F0b3I7Q29tcExvY2F0b3InLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUsICBSZWdMb2NhdG9yLCBJbmlMb2NhdG9yLCBDb21wTG9jYXRvciBhbmQgdGhlIERyTG9jYXRvciB0YWJsZXMuJyksCi0odSdJbnN0YWxsVUlTZXF1ZW5jZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJyksCi0odSdMaXN0VmlldycsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicpLAotKHUnTGlzdFZpZXcnLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgbGlzdHZpZXcuJyksCi0odSdMaXN0VmlldycsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4gU2VsZWN0aW5nIHRoZSBsaW5lIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJyksCi0odSdMaXN0VmlldycsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J0xpc3RWaWV3JywgdSdCaW5hcnlfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBpY29uIHRvIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBpY29uLiBUaGUgYmluYXJ5IGluZm9ybWF0aW9uIGlzIGxvb2tlZCB1cCBmcm9tIHRoZSBCaW5hcnkgVGFibGUuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnWCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdZJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdXaWR0aCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB3aWR0aCBvZiB0aGUgYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J0hlaWdodCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBoZWlnaHQgb2YgdGhlIGJ1dHRvbi4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmlzaWJsZSB0aXRsZSB0byBiZSBhc3NpZ25lZCB0byB0aGUgcmFkaW8gYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyByYWRpbyBidXR0b24uIEFsbCB0aGUgYnV0dG9ucyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGdyb3VwLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnV0dG9uLiBTZWxlY3RpbmcgdGhlIGJ1dHRvbiB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J09yZGVyJywgdSdOJywgMSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnSGVscCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGhlbHAgc3RyaW5ncyB1c2VkIHdpdGggdGhlIGJ1dHRvbi4gVGhlIHRleHQgaXMgb3B0aW9uYWwuJyksCi0odSdUZXh0U3R5bGUnLCB1J1RleHRTdHlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgc3R5bGUuIFRoZSBwcmltYXJ5IGtleSBvZiB0aGlzIHRhYmxlLiBUaGlzIG5hbWUgaXMgZW1iZWRkZWQgaW4gdGhlIHRleHRzIHRvIGluZGljYXRlIGEgc3R5bGUgY2hhbmdlLicpLAotKHUnVGV4dFN0eWxlJywgdSdGYWNlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbmFtZSBvZiB0aGUgZm9udCB1c2VkLiBSZXF1aXJlZC4gVGhlIHN0cmluZyBtdXN0IGJlIGF0IG1vc3QgMzEgY2hhcmFjdGVycyBsb25nLicpLAotKHUnVGV4dFN0eWxlJywgdSdTaXplJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHNpemUgb2YgdGhlIGZvbnQgdXNlZC4gVGhpcyBzaXplIGlzIGdpdmVuIGluIG91ciB1bml0cyAoMS8xMiBvZiB0aGUgc3lzdGVtIGZvbnQgaGVpZ2h0KS4gQXNzdW1pbmcgdGhhdCB0aGUgc3lzdGVtIGZvbnQgaXMgc2V0IHRvIDEyIHBvaW50IHNpemUsIHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgcG9pbnQgc2l6ZS4nKSwKLSh1J1RleHRTdHlsZScsIHUnQ29sb3InLCB1J1knLCAwLCAxNjc3NzIxNSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGxvbmcgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb2xvciBvZiB0aGUgc3RyaW5nIGluIHRoZSBSR0IgZm9ybWF0IChSZWQsIEdyZWVuLCBCbHVlIGVhY2ggMC0yNTUsIFJHQiA9IFIgKyAyNTYqRyArIDI1Nl4yKkIpLicpLAotKHUnVGV4dFN0eWxlJywgdSdTdHlsZUJpdHMnLCB1J1knLCAwLCAxNSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGNvbWJpbmF0aW9uIG9mIHN0eWxlIGJpdHMuJyksCi0odSdVSVRleHQnLCB1J1RleHQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBsb2NhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLicpLAotKHUnVUlUZXh0JywgdSdLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgdW5pcXVlIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIHBhcnRpY3VsYXIgc3RyaW5nLicpLAotKHUnX1ZhbGlkYXRpb24nLCB1J1RhYmxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRhYmxlJyksCi0odSdfVmFsaWRhdGlvbicsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0Rlc2NyaXB0aW9uIG9mIGNvbHVtbicpLAotKHUnX1ZhbGlkYXRpb24nLCB1J0NvbHVtbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBjb2x1bW4nKSwKLSh1J19WYWxpZGF0aW9uJywgdSdOdWxsYWJsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnWTtOO0AnLCB1J1doZXRoZXIgdGhlIGNvbHVtbiBpcyBudWxsYWJsZScpLAotKHUnX1ZhbGlkYXRpb24nLCB1J01pblZhbHVlJywgdSdZJywgLTIxNDc0ODM2NDcsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWluaW11bSB2YWx1ZSBhbGxvd2VkJyksCi0odSdfVmFsaWRhdGlvbicsIHUnTWF4VmFsdWUnLCB1J1knLCAtMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNYXhpbXVtIHZhbHVlIGFsbG93ZWQnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdLZXlUYWJsZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yIGZvcmVpZ24ga2V5LCBOYW1lIG9mIHRhYmxlIHRvIHdoaWNoIGRhdGEgbXVzdCBsaW5rJyksCi0odSdfVmFsaWRhdGlvbicsIHUnS2V5Q29sdW1uJywgdSdZJywgMSwgMzIsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29sdW1uIHRvIHdoaWNoIGZvcmVpZ24ga2V5IGNvbm5lY3RzJyksCi0odSdfVmFsaWRhdGlvbicsIHUnQ2F0ZWdvcnknLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQ7Rm9ybWF0dGVkO1RlbXBsYXRlO0NvbmRpdGlvbjtHdWlkO1BhdGg7VmVyc2lvbjtMYW5ndWFnZTtJZGVudGlmaWVyO0JpbmFyeTtVcHBlckNhc2U7TG93ZXJDYXNlO0ZpbGVuYW1lO1BhdGhzO0FueVBhdGg7V2lsZENhcmRGaWxlbmFtZTtSZWdQYXRoO0tleUZvcm1hdHRlZDtDdXN0b21Tb3VyY2U7UHJvcGVydHk7Q2FiaW5ldDtTaG9ydGN1dDtVUkwnLCB1J1N0cmluZyBjYXRlZ29yeScpLAotKHUnX1ZhbGlkYXRpb24nLCB1J1NldCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnU2V0IG9mIHZhbHVlcyB0aGF0IGFyZSBwZXJtaXR0ZWQnKSwKLSh1J0FkdnRVSVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWR2dFVJU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnQWR2dFVJU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0FwcElkJywgdSdBcHBJZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIE5vbmUpLAotKHUnQXBwSWQnLCB1J0FjdGl2YXRlQXRTdG9yYWdlJywgdSdZJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnRGxsU3Vycm9nYXRlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnTG9jYWxTZXJ2aWNlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnUmVtb3RlU2VydmVyTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnUnVuQXNJbnRlcmFjdGl2ZVVzZXInLCB1J1knLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdTZXJ2aWNlUGFyYW1ldGVycycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIE5vbmUpLAotKHUnRmVhdHVyZScsIHUnQXR0cmlidXRlcycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMDsxOzI7NDs1OzY7ODs5OzEwOzE2OzE3OzE4OzIwOzIxOzIyOzI0OzI1OzI2OzMyOzMzOzM0OzM2OzM3OzM4OzQ4OzQ5OzUwOzUyOzUzOzU0JywgdSdGZWF0dXJlIGF0dHJpYnV0ZXMnKSwKLSh1J0ZlYXR1cmUnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb25nZXIgZGVzY3JpcHRpdmUgdGV4dCBkZXNjcmliaW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJyksCi0odSdGZWF0dXJlJywgdSdUaXRsZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnU2hvcnQgdGV4dCBpZGVudGlmeWluZyBhIHZpc2libGUgZmVhdHVyZSBpdGVtLicpLAotKHUnRmVhdHVyZScsIHUnRmVhdHVyZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmVhdHVyZSByZWNvcmQuJyksCi0odSdGZWF0dXJlJywgdSdEaXJlY3RvcnlfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLCAxLCB1J1VwcGVyQ2FzZScsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIERpcmVjdG9yeSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBVSS4gQSBub24tbnVsbCB2YWx1ZSB3aWxsIGVuYWJsZSB0aGUgYnJvd3NlIGJ1dHRvbi4nKSwKLSh1J0ZlYXR1cmUnLCB1J0xldmVsJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGluc3RhbGwgbGV2ZWwgYXQgd2hpY2ggcmVjb3JkIHdpbGwgYmUgaW5pdGlhbGx5IHNlbGVjdGVkLiBBbiBpbnN0YWxsIGxldmVsIG9mIDAgd2lsbCBkaXNhYmxlIGFuIGl0ZW0gYW5kIHByZXZlbnQgaXRzIGRpc3BsYXkuJyksCi0odSdGZWF0dXJlJywgdSdEaXNwbGF5JywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtZXJpYyBzb3J0IG9yZGVyLCB1c2VkIHRvIGZvcmNlIGEgc3BlY2lmaWMgZGlzcGxheSBvcmRlcmluZy4nKSwKLSh1J0ZlYXR1cmUnLCB1J0ZlYXR1cmVfUGFyZW50JywgdSdZJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCBrZXkgb2YgYSBwYXJlbnQgcmVjb3JkIGluIHRoZSBzYW1lIHRhYmxlLiBJZiB0aGUgcGFyZW50IGlzIG5vdCBzZWxlY3RlZCwgdGhlbiB0aGUgcmVjb3JkIHdpbGwgbm90IGJlIGluc3RhbGxlZC4gTnVsbCBpbmRpY2F0ZXMgYSByb290IGl0ZW0uJyksCi0odSdGaWxlJywgdSdTZXF1ZW5jZScsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NlcXVlbmNlIHdpdGggcmVzcGVjdCB0byB0aGUgbWVkaWEgaW1hZ2VzOyBvcmRlciBtdXN0IHRyYWNrIGNhYmluZXQgb3JkZXIuJyksCi0odSdGaWxlJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBjb250YWluaW5nIGJpdCBmbGFncyByZXByZXNlbnRpbmcgZmlsZSBhdHRyaWJ1dGVzICh3aXRoIHRoZSBkZWNpbWFsIHZhbHVlIG9mIGVhY2ggYml0IHBvc2l0aW9uIGluIHBhcmVudGhlc2VzKScpLAotKHUnRmlsZScsIHUnRmlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LiAgRm9yIHVuY29tcHJlc3NlZCBmaWxlcywgdGhpcyBmaWVsZCBpcyBpZ25vcmVkLicpLAotKHUnRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZmlsZS4nKSwKLSh1J0ZpbGUnLCB1J0ZpbGVOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnRmlsZSBuYW1lIHVzZWQgZm9yIGluc3RhbGxhdGlvbiwgbWF5IGJlIGxvY2FsaXplZC4gIFRoaXMgbWF5IGNvbnRhaW4gYSAic2hvcnQgbmFtZXxsb25nIG5hbWUiIHBhaXIuJyksCi0odSdGaWxlJywgdSdGaWxlU2l6ZScsIHUnTicsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicpLAotKHUnRmlsZScsIHUnTGFuZ3VhZ2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJywgTm9uZSwgdSdMaXN0IG9mIGRlY2ltYWwgbGFuZ3VhZ2UgSWRzLCBjb21tYS1zZXBhcmF0ZWQgaWYgbW9yZSB0aGFuIG9uZS4nKSwKLSh1J0ZpbGUnLCB1J1ZlcnNpb24nLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J1ZlcnNpb24nLCBOb25lLCB1J1ZlcnNpb24gc3RyaW5nIGZvciB2ZXJzaW9uZWQgZmlsZXM7ICBCbGFuayBmb3IgdW52ZXJzaW9uZWQgZmlsZXMuJyksCi0odSdDbGFzcycsIHUnQXR0cmlidXRlcycsIHUnWScsIE5vbmUsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NsYXNzIHJlZ2lzdHJhdGlvbiBhdHRyaWJ1dGVzLicpLAotKHUnQ2xhc3MnLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSBDTFNJRCBmYWN0b3J5IHRvIGJlIG9wZXJhdGlvbmFsLicpLAotKHUnQ2xhc3MnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBDbGFzcy4nKSwKLSh1J0NsYXNzJywgdSdBcmd1bWVudCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdvcHRpb25hbCBhcmd1bWVudCBmb3IgTG9jYWxTZXJ2ZXJzLicpLAotKHUnQ2xhc3MnLCB1J0FwcElkXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnQXBwSWQnLCAxLCB1J0d1aWQnLCBOb25lLCB1J09wdGlvbmFsIEFwcElEIGNvbnRhaW5pbmcgRENPTSBpbmZvcm1hdGlvbiBmb3IgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiAoc3RyaW5nIEdVSUQpLicpLAotKHUnQ2xhc3MnLCB1J0NMU0lEJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdUaGUgQ0xTSUQgb2YgYW4gT0xFIGZhY3RvcnkuJyksCi0odSdDbGFzcycsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nKSwKLSh1J0NsYXNzJywgdSdDb250ZXh0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbnVtZXJpYyBzZXJ2ZXIgY29udGV4dCBmb3IgdGhpcyBzZXJ2ZXIuIENMU0NUWF94eHh4JyksCi0odSdDbGFzcycsIHUnRGVmSW5wcm9jSGFuZGxlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCB1JzE7MjszJywgdSdPcHRpb25hbCBkZWZhdWx0IGlucHJvYyBoYW5kbGVyLiAgT25seSBvcHRpb25hbGx5IHByb3ZpZGVkIGlmIENvbnRleHQ9Q0xTQ1RYX0xPQ0FMX1NFUlZFUi4gIFR5cGljYWxseSAib2xlMzIuZGxsIiBvciAibWFwaTMyLmRsbCInKSwKLSh1J0NsYXNzJywgdSdGaWxlVHlwZU1hc2snLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIHN0cmluZyBjb250YWluaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgSEtDUnRoaXMgQ0xTSUQpIGtleS4gSWYgbXVsdGlwbGUgcGF0dGVybnMgZXhpc3QsIHRoZXkgbXVzdCBiZSBkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24sIGFuZCBudW1lcmljIHN1YmtleXMgd2lsbCBiZSBnZW5lcmF0ZWQ6IDAsMSwyLi4uJyksCi0odSdDbGFzcycsIHUnSWNvbl8nLCB1J1knLCBOb25lLCBOb25lLCB1J0ljb24nLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4gV2lsbCBiZSB3cml0dGVuIHVuZGVyIHRoZSBEZWZhdWx0SWNvbiBrZXkuJyksCi0odSdDbGFzcycsIHUnSWNvbkluZGV4JywgdSdZJywgLTMyNzY3LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicpLAotKHUnQ2xhc3MnLCB1J1Byb2dJZF9EZWZhdWx0JywgdSdZJywgTm9uZSwgTm9uZSwgdSdQcm9nSWQnLCAxLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIFByb2dJZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBDTFNJRC4nKSwKLSh1J0NvbXBvbmVudCcsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1IkEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgd2lsbCBkaXNhYmxlIHRoaXMgY29tcG9uZW50IGlmIHRoZSBzcGVjaWZpZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0aGUgJ1RydWUnIHN0YXRlLiBJZiBhIGNvbXBvbmVudCBpcyBkaXNhYmxlZCwgaXQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLCByZWdhcmRsZXNzIG9mIHRoZSAnQWN0aW9uJyBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudC4iKSwKLSh1J0NvbXBvbmVudCcsIHUnQXR0cmlidXRlcycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVtb3RlIGV4ZWN1dGlvbiBvcHRpb24sIG9uZSBvZiBpcnNFbnVtJyksCi0odSdDb21wb25lbnQnLCB1J0NvbXBvbmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgY29tcG9uZW50IHJlY29yZC4nKSwKLSh1J0NvbXBvbmVudCcsIHUnQ29tcG9uZW50SWQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0Egc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuJyksCi0odSdDb21wb25lbnQnLCB1J0RpcmVjdG9yeV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQga2V5IG9mIGEgRGlyZWN0b3J5IHRhYmxlIHJlY29yZC4gVGhpcyBpcyBhY3R1YWxseSBhIHByb3BlcnR5IG5hbWUgd2hvc2UgdmFsdWUgY29udGFpbnMgdGhlIGFjdHVhbCBwYXRoLCBzZXQgZWl0aGVyIGJ5IHRoZSBBcHBTZWFyY2ggYWN0aW9uIG9yIHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZyBvYnRhaW5lZCBmcm9tIHRoZSBEaXJlY3RvcnkgdGFibGUuJyksCi0odSdDb21wb25lbnQnLCB1J0tleVBhdGgnLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGU7UmVnaXN0cnk7T0RCQ0RhdGFTb3VyY2UnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0VpdGhlciB0aGUgcHJpbWFyeSBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSwgUmVnaXN0cnkgdGFibGUsIG9yIE9EQkNEYXRhU291cmNlIHRhYmxlLiBUaGlzIGV4dHJhY3QgcGF0aCBpcyBzdG9yZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluc3RhbGxlZCwgYW5kIGlzIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiB0aGUgY29tcG9uZW50IGFuZCB0byByZXR1cm4gdGhlIHBhdGggdG8gaXQuJyksCi0odSdQcm9nSWQnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdMb2NhbGl6ZWQgZGVzY3JpcHRpb24gZm9yIHRoZSBQcm9ncmFtIGlkZW50aWZpZXIuJyksCi0odSdQcm9nSWQnLCB1J0ljb25fJywgdSdZJywgTm9uZSwgTm9uZSwgdSdJY29uJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCBmb3JlaWduIGtleSBpbnRvIHRoZSBJY29uIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBpY29uIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZ0lkLiBXaWxsIGJlIHdyaXR0ZW4gdW5kZXIgdGhlIERlZmF1bHRJY29uIGtleS4nKSwKLSh1J1Byb2dJZCcsIHUnSWNvbkluZGV4JywgdSdZJywgLTMyNzY3LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcHRpb25hbCBpY29uIGluZGV4LicpLAotKHUnUHJvZ0lkJywgdSdQcm9nSWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBQcm9ncmFtIElkZW50aWZpZXIuIFByaW1hcnkga2V5LicpLAotKHUnUHJvZ0lkJywgdSdDbGFzc18nLCB1J1knLCBOb25lLCBOb25lLCB1J0NsYXNzJywgMSwgdSdHdWlkJywgTm9uZSwgdSdUaGUgQ0xTSUQgb2YgYW4gT0xFIGZhY3RvcnkgY29ycmVzcG9uZGluZyB0byB0aGUgUHJvZ0lkLicpLAotKHUnUHJvZ0lkJywgdSdQcm9nSWRfUGFyZW50JywgdSdZJywgTm9uZSwgTm9uZSwgdSdQcm9nSWQnLCAxLCB1J1RleHQnLCBOb25lLCB1J1RoZSBQYXJlbnQgUHJvZ3JhbSBJZGVudGlmaWVyLiBJZiBzcGVjaWZpZWQsIHRoZSBQcm9nSWQgY29sdW1uIGJlY29tZXMgYSB2ZXJzaW9uIGluZGVwZW5kZW50IHByb2cgaWQuJyksCi0odSdDb21wTG9jYXRvcicsIHUnVHlwZScsIHUnWScsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBib29sZWFuIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVnaXN0cnkgdmFsdWUgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbi4nKSwKLSh1J0NvbXBMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicpLAotKHUnQ29tcExvY2F0b3InLCB1J0NvbXBvbmVudElkJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdBIHN0cmluZyBHVUlEIHVuaXF1ZSB0byB0aGlzIGNvbXBvbmVudCwgdmVyc2lvbiwgYW5kIGxhbmd1YWdlLicpLAotKHUnQ29tcGx1cycsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgQ29tUGx1cyBjb21wb25lbnQuJyksCi0odSdDb21wbHVzJywgdSdFeHBUeXBlJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29tUGx1cyBjb21wb25lbnQgYXR0cmlidXRlcy4nKSwKLSh1J0RpcmVjdG9yeScsIHUnRGlyZWN0b3J5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdVbmlxdWUgaWRlbnRpZmllciBmb3IgZGlyZWN0b3J5IGVudHJ5LCBwcmltYXJ5IGtleS4gSWYgYSBwcm9wZXJ0eSBieSB0aGlzIG5hbWUgaXMgZGVmaW5lZCwgaXQgY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGlyZWN0b3J5LicpLAotKHUnRGlyZWN0b3J5JywgdSdEZWZhdWx0RGlyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0RGlyJywgTm9uZSwgdSJUaGUgZGVmYXVsdCBzdWItcGF0aCB1bmRlciBwYXJlbnQncyBwYXRoLiIpLAotKHUnRGlyZWN0b3J5JywgdSdEaXJlY3RvcnlfUGFyZW50JywgdSdZJywgTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byB0aGUgZW50cnkgaW4gdGhpcyB0YWJsZSBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0IHBhcmVudCBkaXJlY3RvcnkuIEEgcmVjb3JkIHBhcmVudGVkIHRvIGl0c2VsZiBvciB3aXRoIGEgTnVsbCBwYXJlbnQgcmVwcmVzZW50cyBhIHJvb3Qgb2YgdGhlIGluc3RhbGwgdHJlZS4nKSwKLSh1J0NyZWF0ZUZvbGRlcicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUuJyksCi0odSdDcmVhdGVGb2xkZXInLCB1J0RpcmVjdG9yeV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIGNvdWxkIGJlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZS4nKSwKLSh1J0N1c3RvbUFjdGlvbicsIHUnVHlwZScsIHUnTicsIDEsIDE2MzgzLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBudW1lcmljIGN1c3RvbSBhY3Rpb24gdHlwZSwgY29uc2lzdGluZyBvZiBzb3VyY2UgbG9jYXRpb24sIGNvZGUgdHlwZSwgZW50cnksIG9wdGlvbiBmbGFncy4nKSwKLSh1J0N1c3RvbUFjdGlvbicsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbmFtZSBvZiBhY3Rpb24sIG5vcm1hbGx5IGFwcGVhcnMgaW4gc2VxdWVuY2UgdGFibGUgdW5sZXNzIHByaXZhdGUgdXNlLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdTb3VyY2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0N1c3RvbVNvdXJjZScsIE5vbmUsIHUnVGhlIHRhYmxlIHJlZmVyZW5jZSBvZiB0aGUgc291cmNlIG9mIHRoZSBjb2RlLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdUYXJnZXQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnRXhjZWN1dGlvbiBwYXJhbWV0ZXIsIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgY3VzdG9tIGFjdGlvbicpLAotKHUnRHJMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicpLAotKHUnRHJMb2NhdG9yJywgdSdQYXRoJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbnlQYXRoJywgTm9uZSwgdSdUaGUgcGF0aCBvbiB0aGUgdXNlciBzeXN0ZW0uIFRoaXMgaXMgYSBlaXRoZXIgYSBzdWJwYXRoIGJlbG93IHRoZSB2YWx1ZSBvZiB0aGUgUGFyZW50IG9yIGEgZnVsbCBwYXRoLiBUaGUgcGF0aCBtYXkgY29udGFpbiBwcm9wZXJ0aWVzIGVuY2xvc2VkIHdpdGhpbiBbIF0gdGhhdCB3aWxsIGJlIGV4cGFuZGVkLicpLAotKHUnRHJMb2NhdG9yJywgdSdEZXB0aCcsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBkZXB0aCBiZWxvdyB0aGUgcGF0aCB0byB3aGljaCB0aGUgU2lnbmF0dXJlXyBpcyByZWN1cnNpdmVseSBzZWFyY2hlZC4gSWYgYWJzZW50LCB0aGUgZGVwdGggaXMgYXNzdW1lZCB0byBiZSAwLicpLAotKHUnRHJMb2NhdG9yJywgdSdQYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBwYXJlbnQgZmlsZSBzaWduYXR1cmUuIEl0IGlzIGFsc28gYSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLiBJZiBudWxsIGFuZCB0aGUgUGF0aCBjb2x1bW4gZG9lcyBub3QgZXhwYW5kIHRvIGEgZnVsbCBwYXRoLCB0aGVuIGFsbCB0aGUgZml4ZWQgZHJpdmVzIG9mIHRoZSB1c2VyIHN5c3RlbSBhcmUgc2VhcmNoZWQgdXNpbmcgdGhlIFBhdGguJyksCi0odSdEdXBsaWNhdGVGaWxlJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgdGhlIHNvdXJjZSBmaWxlIHRvIGJlIGR1cGxpY2F0ZWQuJyksCi0odSdEdXBsaWNhdGVGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkdXBsaWNhdGUgZmlsZS4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0Rlc3RGb2xkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gYSBkZXN0aW5hdGlvbiBmb2xkZXIuJyksCi0odSdEdXBsaWNhdGVGaWxlJywgdSdEZXN0TmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J0ZpbGVuYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBkdXBsaWNhdGUgZmlsZS4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0ZpbGVLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5IHVzZWQgdG8gaWRlbnRpZnkgYSBwYXJ0aWN1bGFyIGZpbGUgZW50cnknKSwKLSh1J0Vudmlyb25tZW50JywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnRhbCB2YWx1ZS4nKSwKLSh1J0Vudmlyb25tZW50JywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgdG8gc2V0IGluIHRoZSBlbnZpcm9ubWVudGFsIHNldHRpbmdzLicpLAotKHUnRW52aXJvbm1lbnQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSBlbnZpcm9ubWVudGFsIHZhbHVlLicpLAotKHUnRW52aXJvbm1lbnQnLCB1J0Vudmlyb25tZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgc2V0dGluZycpLAotKHUnRXJyb3InLCB1J0Vycm9yJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBlcnJvciBudW1iZXIsIG9idGFpbmVkIGZyb20gaGVhZGVyIGZpbGUgSUVycm9yKC4uLikgbWFjcm9zLicpLAotKHUnRXJyb3InLCB1J01lc3NhZ2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJywgTm9uZSwgdSdFcnJvciBmb3JtYXR0aW5nIHRlbXBsYXRlLCBvYnRhaW5lZCBmcm9tIHVzZXIgZWQuIG9yIGxvY2FsaXplcnMuJyksCi0odSdFeHRlbnNpb24nLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSBDTFNJRCBmYWN0b3J5IHRvIGJlIG9wZXJhdGlvbmFsLicpLAotKHUnRXh0ZW5zaW9uJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicpLAotKHUnRXh0ZW5zaW9uJywgdSdFeHRlbnNpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJyksCi0odSdFeHRlbnNpb24nLCB1J01JTUVfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdNSU1FJywgMSwgdSdUZXh0JywgTm9uZSwgdSdPcHRpb25hbCBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXh0ZW5zaW9uJyksCi0odSdFeHRlbnNpb24nLCB1J1Byb2dJZF8nLCB1J1knLCBOb25lLCBOb25lLCB1J1Byb2dJZCcsIDEsIHUnVGV4dCcsIE5vbmUsIHUnT3B0aW9uYWwgUHJvZ0lkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbi4nKSwKLSh1J01JTUUnLCB1J0NMU0lEJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdPcHRpb25hbCBhc3NvY2lhdGVkIENMU0lELicpLAotKHUnTUlNRScsIHUnQ29udGVudFR5cGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1ByaW1hcnkga2V5LiBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiLicpLAotKHUnTUlNRScsIHUnRXh0ZW5zaW9uXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRXh0ZW5zaW9uJywgMSwgdSdUZXh0JywgTm9uZSwgdSdPcHRpb25hbCBhc3NvY2lhdGVkIGV4dGVuc2lvbiAod2l0aG91dCBkb3QpJyksCi0odSdGZWF0dXJlQ29tcG9uZW50cycsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nKSwKLSh1J0ZlYXR1cmVDb21wb25lbnRzJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicpLAotKHUnRmlsZVNGUENhdGFsb2cnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2F0YWxvZycpLAotKHUnRmlsZVNGUENhdGFsb2cnLCB1J1NGUENhdGFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdTRlBDYXRhbG9nJywgMSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnQ2F0YWxvZyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUnKSwKLSh1J1NGUENhdGFsb2cnLCB1J1NGUENhdGFsb2cnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdGaWxlIG5hbWUgZm9yIHRoZSBjYXRhbG9nLicpLAotKHUnU0ZQQ2F0YWxvZycsIHUnQ2F0YWxvZycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdTRlAgQ2F0YWxvZycpLAotKHUnU0ZQQ2F0YWxvZycsIHUnRGVwZW5kZW5jeScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdQYXJlbnQgY2F0YWxvZyAtIG9ubHkgdXNlZCBieSBTRlAnKSwKLSh1J0ZvbnQnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgZm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlIHJlZmVyZW5jaW5nIGZvbnQgZmlsZS4nKSwKLSh1J0ZvbnQnLCB1J0ZvbnRUaXRsZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRm9udCBuYW1lLicpLAotKHUnSW5pRmlsZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScwOzE7MycsIHUnVGhlIHR5cGUgb2YgbW9kaWZpY2F0aW9uIHRvIGJlIG1hZGUsIG9uZSBvZiBpaWZFbnVtJyksCi0odSdJbmlGaWxlJywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgdG8gYmUgd3JpdHRlbi4nKSwKLSh1J0luaUZpbGUnLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgLklOSSBmaWxlIGtleSBiZWxvdyBTZWN0aW9uLicpLAotKHUnSW5pRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIC5JTkkgdmFsdWUuJyksCi0odSdJbmlGaWxlJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byB3cml0ZSB0aGUgaW5mb3JtYXRpb24nKSwKLSh1J0luaUZpbGUnLCB1J0luaUZpbGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnSW5pRmlsZScsIHUnRGlyUHJvcGVydHknLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSAuSU5JIGZpbGUgaXMuJyksCi0odSdJbmlGaWxlJywgdSdTZWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgU2VjdGlvbi4nKSwKLSh1J0luaUxvY2F0b3InLCB1J1R5cGUnLCB1J1knLCAwLCAyLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSAuSU5JIHZhbHVlIHJlYWQgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbiBvciB0byBiZSB1c2VkIGFzIGlzIHcvbyBpbnRlcnByZXRhdGlvbi4nKSwKLSh1J0luaUxvY2F0b3InLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnS2V5IHZhbHVlIChmb2xsb3dlZCBieSBhbiBlcXVhbHMgc2lnbiBpbiBJTkkgZmlsZSkuJyksCi0odSdJbmlMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicpLAotKHUnSW5pTG9jYXRvcicsIHUnRmlsZU5hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdUaGUgLklOSSBmaWxlIG5hbWUuJyksCi0odSdJbmlMb2NhdG9yJywgdSdTZWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTZWN0aW9uIG5hbWUgd2l0aGluIGluIGZpbGUgKHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgaW4gSU5JIGZpbGUpLicpLAotKHUnSW5pTG9jYXRvcicsIHUnRmllbGQnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgZmllbGQgaW4gdGhlIC5JTkkgbGluZS4gSWYgRmllbGQgaXMgbnVsbCBvciAwIHRoZSBlbnRpcmUgbGluZSBpcyByZWFkLicpLAotKHUnSXNvbGF0ZWRDb21wb25lbnQnLCB1J0NvbXBvbmVudF9BcHBsaWNhdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gZm9yIGFwcGxpY2F0aW9uJyksCi0odSdJc29sYXRlZENvbXBvbmVudCcsIHUnQ29tcG9uZW50X1NoYXJlZCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdLZXkgdG8gQ29tcG9uZW50IHRhYmxlIGl0ZW0gdG8gYmUgaXNvbGF0ZWQnKSwKLSh1J0xhdW5jaENvbmRpdGlvbicsIHUnQ29uZGl0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0V4cHJlc3Npb24gd2hpY2ggbXVzdCBldmFsdWF0ZSB0byBUUlVFIGluIG9yZGVyIGZvciBpbnN0YWxsIHRvIGNvbW1lbmNlLicpLAotKHUnTGF1bmNoQ29uZGl0aW9uJywgdSdEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdMb2NhbGl6YWJsZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBjb25kaXRpb24gZmFpbHMgYW5kIGluc3RhbGwgbXVzdCBhYm9ydC4nKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnVGFibGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCB1J0RpcmVjdG9yeTtGaWxlO1JlZ2lzdHJ5JywgdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lJyksCi0odSdMb2NrUGVybWlzc2lvbnMnLCB1J0RvbWFpbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdEb21haW4gbmFtZSBmb3IgdXNlciB3aG9zZSBwZXJtaXNzaW9ucyBhcmUgYmVpbmcgc2V0LiAodXN1YWxseSBhIHByb3BlcnR5KScpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdMb2NrT2JqZWN0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIFJlZ2lzdHJ5IG9yIEZpbGUgdGFibGUnKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnUGVybWlzc2lvbicsIHUnWScsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Blcm1pc3Npb24gQWNjZXNzIG1hc2suICBGdWxsIENvbnRyb2wgPSAyNjg0MzU0NTYgKEdFTkVSSUNfQUxMID0gMHgxMDAwMDAwMCknKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnVXNlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdVc2VyIGZvciBwZXJtaXNzaW9ucyB0byBiZSBzZXQuICAodXN1YWxseSBhIHByb3BlcnR5KScpLAotKHUnTWVkaWEnLCB1J1NvdXJjZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJvcGVydHknLCBOb25lLCB1J1RoZSBwcm9wZXJ0eSBkZWZpbmluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGNhYmluZXQgZmlsZS4nKSwKLSh1J01lZGlhJywgdSdDYWJpbmV0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDYWJpbmV0JywgTm9uZSwgdSdJZiBzb21lIG9yIGFsbCBvZiB0aGUgZmlsZXMgc3RvcmVkIG9uIHRoZSBtZWRpYSBhcmUgY29tcHJlc3NlZCBpbiBhIGNhYmluZXQsIHRoZSBuYW1lIG9mIHRoYXQgY2FiaW5ldC4nKSwKLSh1J01lZGlhJywgdSdEaXNrSWQnLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcmltYXJ5IGtleSwgaW50ZWdlciB0byBkZXRlcm1pbmUgc29ydCBvcmRlciBmb3IgdGFibGUuJyksCi0odSdNZWRpYScsIHUnRGlza1Byb21wdCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRGlzayBuYW1lOiB0aGUgdmlzaWJsZSB0ZXh0IGFjdHVhbGx5IHByaW50ZWQgb24gdGhlIGRpc2suICBUaGlzIHdpbGwgYmUgdXNlZCB0byBwcm9tcHQgdGhlIHVzZXIgd2hlbiB0aGlzIGRpc2sgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQuJyksCi0odSdNZWRpYScsIHUnTGFzdFNlcXVlbmNlJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZSBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoZSBsYXN0IGZpbGUgZm9yIHRoaXMgbWVkaWEuJyksCi0odSdNZWRpYScsIHUnVm9sdW1lTGFiZWwnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBsYWJlbCBhdHRyaWJ1dGVkIHRvIHRoZSB2b2x1bWUuJyksCi0odSdNb2R1bGVDb21wb25lbnRzJywgdSdDb21wb25lbnQnLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQ29tcG9uZW50IGNvbnRhaW5lZCBpbiB0aGUgbW9kdWxlLicpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsIHUnTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDIsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBsYW5ndWFnZSBJRCBmb3IgbW9kdWxlIChtYXkgYmUgY2hhbmdlZCBieSB0cmFuc2Zvcm0pLicpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsIHUnTW9kdWxlSUQnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTW9kdWxlIGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudC4nKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsIHUnTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHQgZGVjaW1hbCBsYW5ndWFnZSBvZiBtb2R1bGUuJyksCi0odSdNb2R1bGVTaWduYXR1cmUnLCB1J1ZlcnNpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLCBOb25lLCB1J1ZlcnNpb24gb2YgdGhlIG1vZHVsZS4nKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsIHUnTW9kdWxlSUQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J01vZHVsZSBpZGVudGlmaWVyIChTdHJpbmcuR1VJRCkuJyksCi0odSdNb2R1bGVEZXBlbmRlbmN5JywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdNb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnTW9kdWxlTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDIsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2Ugb2YgbW9kdWxlIHJlcXVpcmluZyB0aGUgZGVwZW5kZW5jeS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J1JlcXVpcmVkSUQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1N0cmluZy5HVUlEIG9mIHJlcXVpcmVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J1JlcXVpcmVkTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlSUQgb2YgdGhlIHJlcXVpcmVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J1JlcXVpcmVkVmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsIE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgcmVxdWlyZWQgdmVyc2lvbi4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnTW9kdWxlSUQnLCB1J04nLCBOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgbW9kdWxlIHdpdGggZXhjbHVzaW9uIHJlcXVpcmVtZW50LicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdNb2R1bGVMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMiwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZUlEIG9mIG1vZHVsZSB3aXRoIGV4Y2x1c2lvbiByZXF1aXJlbWVudC4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnRXhjbHVkZWRJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgZXhjbHVkZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdFeGNsdWRlZExhbmd1YWdlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBleGNsdWRlZCBtb2R1bGUuJyksCi0odSdNb2R1bGVFeGNsdXNpb24nLCB1J0V4Y2x1ZGVkTWF4VmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsIE5vbmUsIHUnTWF4aW11bSB2ZXJzaW9uIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnRXhjbHVkZWRNaW5WZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJywgTm9uZSwgdSdNaW5pbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicpLAotKHUnTW92ZUZpbGUnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnSWYgdGhpcyBjb21wb25lbnQgaXMgbm90ICJzZWxlY3RlZCIgZm9yIGluc3RhbGxhdGlvbiBvciByZW1vdmFsLCBubyBhY3Rpb24gd2lsbCBiZSB0YWtlbiBvbiB0aGUgYXNzb2NpYXRlZCBNb3ZlRmlsZSBlbnRyeScpLAotKHUnTW92ZUZpbGUnLCB1J0Rlc3RGb2xkZXInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5JyksCi0odSdNb3ZlRmlsZScsIHUnRGVzdE5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdOYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBvcmlnaW5hbCBmaWxlIGFmdGVyIGl0IGlzIG1vdmVkIG9yIGNvcGllZC4gIElmIGJsYW5rLCB0aGUgZGVzdGluYXRpb24gZmlsZSB3aWxsIGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNvdXJjZSBmaWxlJyksCi0odSdNb3ZlRmlsZScsIHUnRmlsZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcGFydGljdWxhciBNb3ZlRmlsZSByZWNvcmQnKSwKLSh1J01vdmVGaWxlJywgdSdPcHRpb25zJywgdSdOJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIE1vdmVGaWxlIG9wZXJhdGluZyBtb2RlLCBvbmUgb2YgaW1mb0VudW0nKSwKLSh1J01vdmVGaWxlJywgdSdTb3VyY2VGb2xkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgc291cmNlIGRpcmVjdG9yeScpLAotKHUnTW92ZUZpbGUnLCB1J1NvdXJjZU5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1Ik5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlKHMpIHRvIGJlIG1vdmVkIG9yIGNvcGllZC4gIENhbiBjb250YWluIHRoZSAnKicgb3IgJz8nIHdpbGRjYXJkcy4iKSwKLSh1J01zaUFzc2VtYmx5JywgdSdBdHRyaWJ1dGVzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBc3NlbWJseSBhdHRyaWJ1dGVzJyksCi0odSdNc2lBc3NlbWJseScsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmVhdHVyZSB0YWJsZS4nKSwKLSh1J01zaUFzc2VtYmx5JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicpLAotKHUnTXNpQXNzZW1ibHknLCB1J0ZpbGVfQXBwbGljYXRpb24nLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmlsZSB0YWJsZSwgZGVub3RpbmcgdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQgZm9yIHByaXZhdGUgYXNzZW1ibGllcy4gTnVsbCBmb3IgZ2xvYmFsIGFzc2VtYmxpZXMuJyksCi0odSdNc2lBc3NlbWJseScsIHUnRmlsZV9NYW5pZmVzdCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3IgdGhlIGFzc2VtYmx5LicpLAotKHUnTXNpQXNzZW1ibHlOYW1lJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbmFtZSBwYXJ0IG9mIHRoZSBuYW1lLXZhbHVlIHBhaXJzIGZvciB0aGUgYXNzZW1ibHkgbmFtZS4nKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSB2YWx1ZSBwYXJ0IG9mIHRoZSBuYW1lLXZhbHVlIHBhaXJzIGZvciB0aGUgYXNzZW1ibHkgbmFtZS4nKSwKLSh1J01zaUFzc2VtYmx5TmFtZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIENvbXBvbmVudCB0YWJsZS4nKSwKLSh1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsIHUnQ2VydERhdGEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnQSBjZXJ0aWZpY2F0ZSBjb250ZXh0IGJsb2IgZm9yIGEgc2lnbmVyIGNlcnRpZmljYXRlJyksCi0odSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLCB1J0RpZ2l0YWxDZXJ0aWZpY2F0ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdycpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsIHUnVGFibGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01lZGlhJywgdSdSZWZlcmVuY2UgdG8gYW5vdGhlciB0YWJsZSBuYW1lIChvbmx5IE1lZGlhIHRhYmxlIGlzIHN1cHBvcnRlZCknKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLCB1J0RpZ2l0YWxDZXJ0aWZpY2F0ZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gTXNpRGlnaXRhbENlcnRpZmljYXRlIHRhYmxlIGlkZW50aWZ5aW5nIHRoZSBzaWduZXIgY2VydGlmaWNhdGUnKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLCB1J0hhc2gnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnVGhlIGVuY29kZWQgaGFzaCBibG9iIGZyb20gdGhlIGRpZ2l0YWwgc2lnbmF0dXJlJyksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJywgdSdTaWduT2JqZWN0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdGb3JlaWduIGtleSB0byBNZWRpYSB0YWJsZScpLAotKHUnTXNpRmlsZUhhc2gnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgZm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlIHJlZmVyZW5jaW5nIGZpbGUgd2l0aCB0aGlzIGhhc2gnKSwKLSh1J01zaUZpbGVIYXNoJywgdSdPcHRpb25zJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmFyaW91cyBvcHRpb25zIGFuZCBhdHRyaWJ1dGVzIGZvciB0aGlzIGhhc2guJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQxJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQzJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnSGFzaFBhcnQ0JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdNc2lQYXRjaEhlYWRlcnMnLCB1J1N0cmVhbVJlZicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkuIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByb3cuJyksCi0odSdNc2lQYXRjaEhlYWRlcnMnLCB1J0hlYWRlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicpLAotKHUnT0RCQ0F0dHJpYnV0ZScsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1ZhbHVlIGZvciBPREJDIGRyaXZlciBhdHRyaWJ1dGUnKSwKLSh1J09EQkNBdHRyaWJ1dGUnLCB1J0F0dHJpYnV0ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnTmFtZSBvZiBPREJDIGRyaXZlciBhdHRyaWJ1dGUnKSwKLSh1J09EQkNBdHRyaWJ1dGUnLCB1J0RyaXZlcl8nLCB1J04nLCBOb25lLCBOb25lLCB1J09EQkNEcml2ZXInLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRyaXZlciBpbiBPREJDRHJpdmVyIHRhYmxlJyksCi0odSdPREJDRHJpdmVyJywgdSdEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZHJpdmVyLCBub24tbG9jYWxpemVkJyksCi0odSdPREJDRHJpdmVyJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgZmlsZScpLAotKHUnT0RCQ0RyaXZlcicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnKSwKLSh1J09EQkNEcml2ZXInLCB1J0RyaXZlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIGRyaXZlcicpLAotKHUnT0RCQ0RyaXZlcicsIHUnRmlsZV9TZXR1cCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnT3B0aW9uYWwgcmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgc2V0dXAgRExMJyksCi0odSdPREJDRGF0YVNvdXJjZScsIHUnRGVzY3JpcHRpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIGRhdGEgc291cmNlJyksCi0odSdPREJDRGF0YVNvdXJjZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdEYXRhU291cmNlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZGF0YSBzb3VyY2UnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdEcml2ZXJEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIGRyaXZlciBkZXNjcmlwdGlvbiwgbWF5IGJlIGV4aXN0aW5nIGRyaXZlcicpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLCB1J1JlZ2lzdHJhdGlvbicsIHUnTicsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnaXN0cmF0aW9uIG9wdGlvbjogMD1tYWNoaW5lLCAxPXVzZXIsIG90aGVycyB0LmIuZC4nKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdWYWx1ZSBmb3IgT0RCQyBkYXRhIHNvdXJjZSBhdHRyaWJ1dGUnKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLCB1J0F0dHJpYnV0ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnTmFtZSBvZiBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsIHUnRGF0YVNvdXJjZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J09EQkNEYXRhU291cmNlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gT0RCQyBkYXRhIHNvdXJjZSBpbiBPREJDRGF0YVNvdXJjZSB0YWJsZScpLAotKHUnT0RCQ1RyYW5zbGF0b3InLCB1J0Rlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciB0cmFuc2xhdG9yJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBrZXkgdHJhbnNsYXRvciBmaWxlJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdGaWxlX1NldHVwJywgdSdZJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCByZWZlcmVuY2UgdG8ga2V5IHRyYW5zbGF0b3Igc2V0dXAgRExMJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnVHJhbnNsYXRvcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIHRyYW5zbGF0b3InKSwKLSh1J1BhdGNoJywgdSdTZXF1ZW5jZScsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBzZXF1ZW5jZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1lZGlhIGltYWdlczsgb3JkZXIgbXVzdCB0cmFjayBjYWJpbmV0IG9yZGVyLicpLAotKHUnUGF0Y2gnLCB1J0F0dHJpYnV0ZXMnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGNvbnRhaW5pbmcgYml0IGZsYWdzIHJlcHJlc2VudGluZyBwYXRjaCBhdHRyaWJ1dGVzJyksCi0odSdQYXRjaCcsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLCBmb3JlaWduIGtleSB0byBGaWxlIHRhYmxlLCBtdXN0IG1hdGNoIGlkZW50aWZpZXIgaW4gY2FiaW5ldC4nKSwKLSh1J1BhdGNoJywgdSdIZWFkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIHBhdGNoIGhlYWRlciwgdXNlZCBmb3IgcGF0Y2ggdmFsaWRhdGlvbi4nKSwKLSh1J1BhdGNoJywgdSdQYXRjaFNpemUnLCB1J04nLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgcGF0Y2ggaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdQYXRjaCcsIHUnU3RyZWFtUmVmXycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnSWRlbnRpZmllci4gRm9yZWlnbiBrZXkgdG8gdGhlIFN0cmVhbVJlZiBjb2x1bW4gb2YgdGhlIE1zaVBhdGNoSGVhZGVycyB0YWJsZS4nKSwKLSh1J1BhdGNoUGFja2FnZScsIHUnTWVkaWFfJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gRGlza0lkIGNvbHVtbiBvZiBNZWRpYSB0YWJsZS4gSW5kaWNhdGVzIHRoZSBkaXNrIGNvbnRhaW5pbmcgdGhlIHBhdGNoIHBhY2thZ2UuJyksCi0odSdQYXRjaFBhY2thZ2UnLCB1J1BhdGNoSWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0EgdW5pcXVlIHN0cmluZyBHVUlEIHJlcHJlc2VudGluZyB0aGlzIHBhdGNoLicpLAotKHUnUHVibGlzaENvbXBvbmVudCcsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgdGFibGUuJyksCi0odSdQdWJsaXNoQ29tcG9uZW50JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J0NvbXBvbmVudElkJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdBIHN0cmluZyBHVUlEIHRoYXQgcmVwcmVzZW50cyB0aGUgY29tcG9uZW50IGlkIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgYnkgdGhlIGFsaWVuIHByb2R1Y3QuJyksCi0odSdQdWJsaXNoQ29tcG9uZW50JywgdSdBcHBEYXRhJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGlzIGlzIGxvY2FsaXNhYmxlIEFwcGxpY2F0aW9uIHNwZWNpZmljIGRhdGEgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgUXVhbGlmaWVkIENvbXBvbmVudC4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J1F1YWxpZmllcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhpcyBpcyBkZWZpbmVkIG9ubHkgd2hlbiB0aGUgQ29tcG9uZW50SWQgY29sdW1uIGlzIGFuIFF1YWxpZmllZCBDb21wb25lbnQgSWQuIFRoaXMgaXMgdGhlIFF1YWxpZmllciBmb3IgUHJvdmlkZUNvbXBvbmVudEluZGlyZWN0LicpLAotKHUnUmVnaXN0cnknLCB1J05hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlIG5hbWUuJyksCi0odSdSZWdpc3RyeScsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnaXN0cnknLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsIE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnaXN0cnknLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSByZWdpc3RyeSB2YWx1ZS4nKSwKLSh1J1JlZ2lzdHJ5JywgdSdSZWdpc3RyeScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdSZWdpc3RyeScsIHUnUm9vdCcsIHUnTicsIC0xLCAzLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtLicpLAotKHUnUmVnTG9jYXRvcicsIHUnTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nKSwKLSh1J1JlZ0xvY2F0b3InLCB1J1R5cGUnLCB1J1knLCAwLCAxOCwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBbiBpbnRlZ2VyIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVnaXN0cnkgdmFsdWUgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbiBvciB0byBiZSB1c2VkIGFzIGlzIHcvbyBpbnRlcnByZXRhdGlvbi4nKSwKLSh1J1JlZ0xvY2F0b3InLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsIE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnTG9jYXRvcicsIHUnU2lnbmF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHRhYmxlIGtleS4gVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4gSWYgdGhlIHR5cGUgaXMgMCwgdGhlIHJlZ2lzdHJ5IHZhbHVlcyByZWZlcnMgYSBkaXJlY3RvcnksIGFuZCBfU2lnbmF0dXJlIGlzIG5vdCBhIGZvcmVpZ24ga2V5LicpLAotKHUnUmVnTG9jYXRvcicsIHUnUm9vdCcsIHUnTicsIDAsIDMsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0uJyksCi0odSdSZW1vdmVGaWxlJywgdSdJbnN0YWxsTW9kZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMTsyOzMnLCB1J0luc3RhbGxhdGlvbiBvcHRpb24sIG9uZSBvZiBpaW1FbnVtLicpLAotKHUnUmVtb3ZlRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicpLAotKHUnUmVtb3ZlRmlsZScsIHUnRmlsZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmlsZSBlbnRyeScpLAotKHUnUmVtb3ZlRmlsZScsIHUnRmlsZU5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpbGRDYXJkRmlsZW5hbWUnLCBOb25lLCB1J05hbWUgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nKSwKLSh1J1JlbW92ZUZpbGUnLCB1J0RpclByb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGhuYW1lIHRvIHRoZSBmb2xkZXIgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMjs0JywgdSdUaGUgdHlwZSBvZiBtb2RpZmljYXRpb24gdG8gYmUgbWFkZSwgb25lIG9mIGlpZkVudW0uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgdG8gYmUgZGVsZXRlZC4gVGhlIHZhbHVlIGlzIHJlcXVpcmVkIHdoZW4gQWN0aW9uIGlzIGlpZkluaVJlbW92ZVRhZycpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUga2V5IGJlbG93IFNlY3Rpb24uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZGVsZXRpb24gb2YgdGhlIC5JTkkgdmFsdWUuJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byBkZWxldGUgdGhlIGluZm9ybWF0aW9uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdEaXJQcm9wZXJ0eScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5JTkkgZmlsZSBpcy4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J1NlY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnUmVtb3ZlSW5pRmlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdSZW1vdmVSZWdpc3RyeScsIHUnTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5JywgdSdLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlZ1BhdGgnLCBOb25lLCB1J1RoZSBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZS4nKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZGVsZXRpb24gb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J1Jvb3QnLCB1J04nLCAtMSwgMywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bScpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J1JlbW92ZVJlZ2lzdHJ5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1Jlc2VydmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mIHNwYWNlIGlmIHRoaXMgY29tcG9uZW50IGlzIHRvIGJlIGluc3RhbGxlZC4nKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdSZXNlcnZlRm9sZGVyJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeScpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J1Jlc2VydmVLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgUmVzZXJ2ZUNvc3QgcmVjb3JkJyksCi0odSdSZXNlcnZlQ29zdCcsIHUnUmVzZXJ2ZUxvY2FsJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgbG9jYWxseS4nKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdSZXNlcnZlU291cmNlJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEaXNrIHNwYWNlIHRvIHJlc2VydmUgaWYgbGlua2VkIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgdG8gcnVuIGZyb20gdGhlIHNvdXJjZSBsb2NhdGlvbi4nKSwKLSh1J1NlbGZSZWcnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtb2R1bGUgdGhhdCBuZWVkcyB0byBiZSByZWdpc3RlcmVkLicpLAotKHUnU2VsZlJlZycsIHUnQ29zdCcsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IG9mIHJlZ2lzdGVyaW5nIHRoZSBtb2R1bGUuJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdOYW1lIG9mIGEgc2VydmljZS4gLywgXFwsIGNvbW1hIGFuZCBzcGFjZSBhcmUgaW52YWxpZCcpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J0V2ZW50JywgdSdOJywgMCwgMTg3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpdCBmaWVsZDogIEluc3RhbGw6ICAweDEgPSBTdGFydCwgMHgyID0gU3RvcCwgMHg4ID0gRGVsZXRlLCBVbmluc3RhbGw6IDB4MTAgPSBTdGFydCwgMHgyMCA9IFN0b3AsIDB4ODAgPSBEZWxldGUnKSwKLSh1J1NlcnZpY2VDb250cm9sJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBzdGFydHVwIG9mIHRoZSBzZXJ2aWNlJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnU2VydmljZUNvbnRyb2wnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J0FyZ3VtZW50cycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdBcmd1bWVudHMgZm9yIHRoZSBzZXJ2aWNlLiAgU2VwYXJhdGUgYnkgW35dLicpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J1dhaXQnLCB1J1knLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Jvb2xlYW4gZm9yIHdoZXRoZXIgdG8gd2FpdCBmb3IgdGhlIHNlcnZpY2UgdG8gZnVsbHkgc3RhcnQnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0ludGVybmFsIE5hbWUgb2YgdGhlIFNlcnZpY2UnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRGVzY3JpcHRpb24gb2Ygc2VydmljZS4nKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBzdGFydHVwIG9mIHRoZSBzZXJ2aWNlJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnQXJndW1lbnRzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0FyZ3VtZW50cyB0byBpbmNsdWRlIGluIGV2ZXJ5IHN0YXJ0IG9mIHRoZSBzZXJ2aWNlLCBwYXNzZWQgdG8gV2luTWFpbicpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J1NlcnZpY2VJbnN0YWxsJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdEZXBlbmRlbmNpZXMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnT3RoZXIgc2VydmljZXMgdGhpcyBkZXBlbmRzIG9uIHRvIHN0YXJ0LiAgU2VwYXJhdGUgYnkgW35dLCBhbmQgZW5kIHdpdGggW35dW35dJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnRGlzcGxheU5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnRXh0ZXJuYWwgTmFtZSBvZiB0aGUgU2VydmljZScpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0Vycm9yQ29udHJvbCcsIHUnTicsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NldmVyaXR5IG9mIGVycm9yIGlmIHNlcnZpY2UgZmFpbHMgdG8gc3RhcnQnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdMb2FkT3JkZXJHcm91cCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdMb2FkT3JkZXJHcm91cCcpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J1Bhc3N3b3JkJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J3Bhc3N3b3JkIHRvIHJ1biBzZXJ2aWNlIHdpdGguICAod2l0aCBTdGFydE5hbWUpJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnU2VydmljZVR5cGUnLCB1J04nLCAtMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUeXBlIG9mIHRoZSBzZXJ2aWNlJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnU3RhcnROYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1VzZXIgb3Igb2JqZWN0IG5hbWUgdG8gcnVuIHNlcnZpY2UgYXMnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdTdGFydFR5cGUnLCB1J04nLCAwLCA0LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1Nob3J0Y3V0JywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIHNob3J0Y3V0IHRvIGJlIGNyZWF0ZWQuJyksCi0odSdTaG9ydGN1dCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIHNob3J0Y3V0LicpLAotKHUnU2hvcnRjdXQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIGRlbm90aW5nIHRoZSBjb21wb25lbnQgd2hvc2Ugc2VsZWN0aW9uIGdhdGVzIHRoZSBzaG9ydGN1dCBjcmVhdGlvbi9kZWxldGlvbi4nKSwKLSh1J1Nob3J0Y3V0JywgdSdJY29uXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnSWNvbicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgZXh0ZXJuYWwgaWNvbiBmaWxlIGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnSWNvbkluZGV4JywgdSdZJywgLTMyNzY3LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaWNvbiBpbmRleCBmb3IgdGhlIHNob3J0Y3V0LicpLAotKHUnU2hvcnRjdXQnLCB1J0RpcmVjdG9yeV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNob3J0Y3V0IGZpbGUgaXMgY3JlYXRlZC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdUYXJnZXQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1Nob3J0Y3V0JywgTm9uZSwgdSdUaGUgc2hvcnRjdXQgdGFyZ2V0LiBUaGlzIGlzIHVzdWFsbHkgYSBwcm9wZXJ0eSB0aGF0IGlzIGV4cGFuZGVkIHRvIGEgZmlsZSBvciBhIGZvbGRlciB0aGF0IHRoZSBzaG9ydGN1dCBwb2ludHMgdG8uJyksCi0odSdTaG9ydGN1dCcsIHUnQXJndW1lbnRzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnU2hvcnRjdXQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnU2hvcnRjdXQnLCB1J0hvdGtleScsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3RrZXkgZm9yIHRoZSBzaG9ydGN1dC4gSXQgaGFzIHRoZSB2aXJ0dWFsLWtleSBjb2RlIGZvciB0aGUga2V5IGluIHRoZSBsb3ctb3JkZXIgYnl0ZSwgYW5kIHRoZSBtb2RpZmllciBmbGFncyBpbiB0aGUgaGlnaC1vcmRlciBieXRlLiAnKSwKLSh1J1Nob3J0Y3V0JywgdSdTaG93Q21kJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScxOzM7NycsIHUnVGhlIHNob3cgY29tbWFuZCBmb3IgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdy5UaGUgZm9sbG93aW5nIHZhbHVlcyBtYXkgYmUgdXNlZC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdXa0RpcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBwcm9wZXJ0eSBkZWZpbmluZyBsb2NhdGlvbiBvZiB3b3JraW5nIGRpcmVjdG9yeS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnRmlsZU5hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgZmlsZS4gVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nKSwKLSh1J1NpZ25hdHVyZScsIHUnU2lnbmF0dXJlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUuJyksCi0odSdTaWduYXR1cmUnLCB1J0xhbmd1YWdlcycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLCBOb25lLCB1J1RoZSBsYW5ndWFnZXMgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNYXhEYXRlJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWF4aW11bSBjcmVhdGlvbiBkYXRlIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNYXhTaXplJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBmaWxlLiAnKSwKLSh1J1NpZ25hdHVyZScsIHUnTWF4VmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIG1heGltdW0gdmVyc2lvbiBvZiB0aGUgZmlsZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTWluRGF0ZScsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gY3JlYXRpb24gZGF0ZSBvZiB0aGUgZmlsZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTWluU2l6ZScsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTWluVmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgZmlsZS4nKSwKLSh1J1R5cGVMaWInLCB1J0ZlYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSB0eXBlIGxpYnJhcnkgdG8gYmUgb3BlcmF0aW9uYWwuJyksCi0odSdUeXBlTGliJywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIE5vbmUpLAotKHUnVHlwZUxpYicsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nKSwKLSh1J1R5cGVMaWInLCB1J0RpcmVjdG9yeV8nLCB1J1knLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnT3B0aW9uYWwuIFRoZSBmb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIHBhdGggdG8gdGhlIGhlbHAgZmlsZSBmb3IgdGhlIHR5cGUgbGlicmFyeS4nKSwKLSh1J1R5cGVMaWInLCB1J0xhbmd1YWdlJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGxhbmd1YWdlIG9mIHRoZSBsaWJyYXJ5LicpLAotKHUnVHlwZUxpYicsIHUnVmVyc2lvbicsIHUnWScsIDAsIDE2Nzc3MjE1LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiBUaGUgbWlub3IgdmVyc2lvbiBpcyBpbiB0aGUgbG93ZXIgOCBiaXRzIG9mIHRoZSBpbnRlZ2VyLiBUaGUgbWFqb3IgdmVyc2lvbiBpcyBpbiB0aGUgbmV4dCAxNiBiaXRzLiAnKSwKLSh1J1R5cGVMaWInLCB1J0Nvc3QnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBjb3N0IGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZSB0eXBlbGliLiBUaGlzIGNvbHVtbiBpcyBjdXJyZW50bHkgb3B0aW9uYWwuJyksCi0odSdUeXBlTGliJywgdSdMaWJJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnVGhlIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBsaWJyYXJ5LicpLAotKHUnVXBncmFkZScsIHUnQXR0cmlidXRlcycsIHUnTicsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBwcm9kdWN0IHNldC4nKSwKLSh1J1VwZ3JhZGUnLCB1J1JlbW92ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgbGlzdCBvZiBmZWF0dXJlcyB0byByZW1vdmUgd2hlbiB1bmluc3RhbGxpbmcgYSBwcm9kdWN0IGZyb20gdGhpcyBzZXQuICBUaGUgZGVmYXVsdCBpcyAiQUxMIi4nKSwKLSh1J1VwZ3JhZGUnLCB1J0xhbmd1YWdlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsIE5vbmUsIHUnQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsYW5ndWFnZXMgZm9yIGVpdGhlciBwcm9kdWN0cyBpbiB0aGlzIHNldCBvciBwcm9kdWN0cyBub3QgaW4gdGhpcyBzZXQuJyksCi0odSdVcGdyYWRlJywgdSdBY3Rpb25Qcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVXBwZXJDYXNlJywgTm9uZSwgdSdUaGUgcHJvcGVydHkgdG8gc2V0IHdoZW4gYSBwcm9kdWN0IGluIHRoaXMgc2V0IGlzIGZvdW5kLicpLAotKHUnVXBncmFkZScsIHUnVXBncmFkZUNvZGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J1RoZSBVcGdyYWRlQ29kZSBHVUlEIGJlbG9uZ2luZyB0byB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuJyksCi0odSdVcGdyYWRlJywgdSdWZXJzaW9uTWF4JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbWF4aW11bSBQcm9kdWN0VmVyc2lvbiBvZiB0aGUgcHJvZHVjdHMgaW4gdGhpcyBzZXQuICBUaGUgc2V0IG1heSBvciBtYXkgbm90IGluY2x1ZGUgcHJvZHVjdHMgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVyc2lvbi4nKSwKLSh1J1VwZ3JhZGUnLCB1J1ZlcnNpb25NaW4nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBtaW5pbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicpLAotKHUnVmVyYicsIHUnU2VxdWVuY2UnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdPcmRlciB3aXRoaW4gdGhlIHZlcmJzIGZvciBhIHBhcnRpY3VsYXIgZXh0ZW5zaW9uLiBBbHNvIHVzZWQgc2ltcGx5IHRvIHNwZWNpZnkgdGhlIGRlZmF1bHQgdmVyYi4nKSwKLSh1J1ZlcmInLCB1J0FyZ3VtZW50JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J09wdGlvbmFsIHZhbHVlIGZvciB0aGUgY29tbWFuZCBhcmd1bWVudHMuJyksCi0odSdWZXJiJywgdSdFeHRlbnNpb25fJywgdSdOJywgTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLCAxLCB1J1RleHQnLCBOb25lLCB1J1RoZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWJsZSByb3cuJyksCi0odSdWZXJiJywgdSdWZXJiJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmVyYiBmb3IgdGhlIGNvbW1hbmQuJyksCi0odSdWZXJiJywgdSdDb21tYW5kJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSBjb21tYW5kIHRleHQuJyksCi1dCi0KLUVycm9yID0gWwotKDAsIHUne3tGYXRhbCBlcnJvcjogfX0nKSwKLSgxLCB1J3t7RXJyb3IgWzFdLiB9fScpLAotKDIsIHUnV2FybmluZyBbMV0uICcpLAotKDMsIE5vbmUpLAotKDQsIHUnSW5mbyBbMV0uICcpLAotKDUsIHUnVGhlIGluc3RhbGxlciBoYXMgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCBlcnJvciBpbnN0YWxsaW5nIHRoaXMgcGFja2FnZS4gVGhpcyBtYXkgaW5kaWNhdGUgYSBwcm9ibGVtIHdpdGggdGhpcyBwYWNrYWdlLiBUaGUgZXJyb3IgY29kZSBpcyBbMV0uIHt7VGhlIGFyZ3VtZW50cyBhcmU6IFsyXSwgWzNdLCBbNF19fScpLAotKDYsIE5vbmUpLAotKDcsIHUne3tEaXNrIGZ1bGw6IH19JyksCi0oOCwgdSdBY3Rpb24gW1RpbWVdOiBbMV0uIFsyXScpLAotKDksIHUnW1Byb2R1Y3ROYW1lXScpLAotKDEwLCB1J3tbMl19eywgWzNdfXssIFs0XX0nKSwKLSgxMSwgdSdNZXNzYWdlIHR5cGU6IFsxXSwgQXJndW1lbnQ6IFsyXScpLAotKDEyLCB1Jz09PSBMb2dnaW5nIHN0YXJ0ZWQ6IFtEYXRlXSAgW1RpbWVdID09PScpLAotKDEzLCB1Jz09PSBMb2dnaW5nIHN0b3BwZWQ6IFtEYXRlXSAgW1RpbWVdID09PScpLAotKDE0LCB1J0FjdGlvbiBzdGFydCBbVGltZV06IFsxXS4nKSwKLSgxNSwgdSdBY3Rpb24gZW5kZWQgW1RpbWVdOiBbMV0uIFJldHVybiB2YWx1ZSBbMl0uJyksCi0oMTYsIHUnVGltZSByZW1haW5pbmc6IHtbMV0gbWludXRlcyB9e1syXSBzZWNvbmRzfScpLAotKDE3LCB1J091dCBvZiBtZW1vcnkuIFNodXQgZG93biBvdGhlciBhcHBsaWNhdGlvbnMgYmVmb3JlIHJldHJ5aW5nLicpLAotKDE4LCB1J0luc3RhbGxlciBpcyBubyBsb25nZXIgcmVzcG9uZGluZy4nKSwKLSgxOSwgdSdJbnN0YWxsZXIgc3RvcHBlZCBwcmVtYXR1cmVseS4nKSwKLSgyMCwgdSdQbGVhc2Ugd2FpdCB3aGlsZSBXaW5kb3dzIGNvbmZpZ3VyZXMgW1Byb2R1Y3ROYW1lXScpLAotKDIxLCB1J0dhdGhlcmluZyByZXF1aXJlZCBpbmZvcm1hdGlvbi4uLicpLAotKDIyLCB1J1JlbW92aW5nIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgYXBwbGljYXRpb24uLi4nKSwKLSgyMywgdSdQcmVwYXJpbmcgdG8gcmVtb3ZlIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgYXBwbGljYXRpb24uLi4nKSwKLSgzMiwgdSd7W1Byb2R1Y3ROYW1lXSB9U2V0dXAgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgzMywgdSd7W1Byb2R1Y3ROYW1lXSB9U2V0dXAgZmFpbGVkLicpLAotKDExMDEsIHUnRXJyb3IgcmVhZGluZyBmcm9tIGZpbGU6IFsyXS4ge3sgU3lzdGVtIGVycm9yIFszXS59fSAgVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMDEsIHUiQ2Fubm90IGNyZWF0ZSB0aGUgZmlsZSAnWzJdJy4gIEEgZGlyZWN0b3J5IHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLiAgQ2FuY2VsIHRoZSBpbnN0YWxsIGFuZCB0cnkgaW5zdGFsbGluZyB0byBhIGRpZmZlcmVudCBsb2NhdGlvbi4iKSwKLSgxMzAyLCB1J1BsZWFzZSBpbnNlcnQgdGhlIGRpc2s6IFsyXScpLAotKDEzMDMsIHUnVGhlIGluc3RhbGxlciBoYXMgaW5zdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gYWNjZXNzIHRoaXMgZGlyZWN0b3J5OiBbMl0uICBUaGUgaW5zdGFsbGF0aW9uIGNhbm5vdCBjb250aW51ZS4gIExvZyBvbiBhcyBhZG1pbmlzdHJhdG9yIG9yIGNvbnRhY3QgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvci4nKSwKLSgxMzA0LCB1J0Vycm9yIHdyaXRpbmcgdG8gZmlsZTogWzJdLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5LicpLAotKDEzMDUsIHUnRXJyb3IgcmVhZGluZyBmcm9tIGZpbGUgWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19IFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzA2LCB1IkFub3RoZXIgYXBwbGljYXRpb24gaGFzIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGZpbGUgJ1syXScuICBQbGVhc2Ugc2h1dCBkb3duIGFsbCBvdGhlciBhcHBsaWNhdGlvbnMsIHRoZW4gY2xpY2sgUmV0cnkuIiksCi0oMTMwNywgdSdUaGVyZSBpcyBub3QgZW5vdWdoIGRpc2sgc3BhY2UgdG8gaW5zdGFsbCB0aGlzIGZpbGU6IFsyXS4gIEZyZWUgc29tZSBkaXNrIHNwYWNlIGFuZCBjbGljayBSZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIGV4aXQuJyksCi0oMTMwOCwgdSdTb3VyY2UgZmlsZSBub3QgZm91bmQ6IFsyXS4gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzA5LCB1J0Vycm9yIHJlYWRpbmcgZnJvbSBmaWxlOiBbM10uIHt7IFN5c3RlbSBlcnJvciBbMl0ufX0gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzEwLCB1J0Vycm9yIHdyaXRpbmcgdG8gZmlsZTogWzNdLiB7eyBTeXN0ZW0gZXJyb3IgWzJdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkuJyksCi0oMTMxMSwgdSdTb3VyY2UgZmlsZSBub3QgZm91bmR7eyhjYWJpbmV0KX19OiBbMl0uICBWZXJpZnkgdGhhdCB0aGUgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTMxMiwgdSJDYW5ub3QgY3JlYXRlIHRoZSBkaXJlY3RvcnkgJ1syXScuICBBIGZpbGUgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuICBQbGVhc2UgcmVuYW1lIG9yIHJlbW92ZSB0aGUgZmlsZSBhbmQgY2xpY2sgcmV0cnksIG9yIGNsaWNrIENhbmNlbCB0byBleGl0LiIpLAotKDEzMTMsIHUnVGhlIHZvbHVtZSBbMl0gaXMgY3VycmVudGx5IHVuYXZhaWxhYmxlLiAgUGxlYXNlIHNlbGVjdCBhbm90aGVyLicpLAotKDEzMTQsIHUiVGhlIHNwZWNpZmllZCBwYXRoICdbMl0nIGlzIHVuYXZhaWxhYmxlLiIpLAotKDEzMTUsIHUnVW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBzcGVjaWZpZWQgZm9sZGVyOiBbMl0uJyksCi0oMTMxNiwgdSdBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byByZWFkIGZyb20gdGhlIGZpbGU6IFsyXScpLAotKDEzMTcsIHUnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeTogWzJdJyksCi0oMTMxOCwgdSdBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeTogWzJdJyksCi0oMTMxOSwgdSdBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBvcGVuIHRoZSBzb3VyY2UgZmlsZSBjYWJpbmV0OiBbMl0nKSwKLSgxMzIwLCB1J1RoZSBzcGVjaWZpZWQgcGF0aCBpcyB0b28gbG9uZzogWzJdJyksCi0oMTMyMSwgdSdUaGUgSW5zdGFsbGVyIGhhcyBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBtb2RpZnkgdGhpcyBmaWxlOiBbMl0uJyksCi0oMTMyMiwgdSJBIHBvcnRpb24gb2YgdGhlIGZvbGRlciBwYXRoICdbMl0nIGlzIGludmFsaWQuICBJdCBpcyBlaXRoZXIgZW1wdHkgb3IgZXhjZWVkcyB0aGUgbGVuZ3RoIGFsbG93ZWQgYnkgdGhlIHN5c3RlbS4iKSwKLSgxMzIzLCB1IlRoZSBmb2xkZXIgcGF0aCAnWzJdJyBjb250YWlucyB3b3JkcyB0aGF0IGFyZSBub3QgdmFsaWQgaW4gZm9sZGVyIHBhdGhzLiIpLAotKDEzMjQsIHUiVGhlIGZvbGRlciBwYXRoICdbMl0nIGNvbnRhaW5zIGFuIGludmFsaWQgY2hhcmFjdGVyLiIpLAotKDEzMjUsIHUiJ1syXScgaXMgbm90IGEgdmFsaWQgc2hvcnQgZmlsZSBuYW1lLiIpLAotKDEzMjYsIHUnRXJyb3IgZ2V0dGluZyBmaWxlIHNlY3VyaXR5OiBbM10gR2V0TGFzdEVycm9yOiBbMl0nKSwKLSgxMzI3LCB1J0ludmFsaWQgRHJpdmU6IFsyXScpLAotKDEzMjgsIHUnRXJyb3IgYXBwbHlpbmcgcGF0Y2ggdG8gZmlsZSBbMl0uICBJdCBoYXMgcHJvYmFibHkgYmVlbiB1cGRhdGVkIGJ5IG90aGVyIG1lYW5zLCBhbmQgY2FuIG5vIGxvbmdlciBiZSBtb2RpZmllZCBieSB0aGlzIHBhdGNoLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gY29udGFjdCB5b3VyIHBhdGNoIHZlbmRvci4gIHt7U3lzdGVtIEVycm9yOiBbM119fScpLAotKDEzMjksIHUnQSBmaWxlIHRoYXQgaXMgcmVxdWlyZWQgY2Fubm90IGJlIGluc3RhbGxlZCBiZWNhdXNlIHRoZSBjYWJpbmV0IGZpbGUgWzJdIGlzIG5vdCBkaWdpdGFsbHkgc2lnbmVkLiAgVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgY2FiaW5ldCBmaWxlIGlzIGNvcnJ1cHQuJyksCi0oMTMzMCwgdSdBIGZpbGUgdGhhdCBpcyByZXF1aXJlZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGJlY2F1c2UgdGhlIGNhYmluZXQgZmlsZSBbMl0gaGFzIGFuIGludmFsaWQgZGlnaXRhbCBzaWduYXR1cmUuICBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBjYWJpbmV0IGZpbGUgaXMgY29ycnVwdC57eyAgRXJyb3IgWzNdIHdhcyByZXR1cm5lZCBieSBXaW5WZXJpZnlUcnVzdC59fScpLAotKDEzMzEsIHUnRmFpbGVkIHRvIGNvcnJlY3RseSBjb3B5IFsyXSBmaWxlOiBDUkMgZXJyb3IuJyksCi0oMTMzMiwgdSdGYWlsZWQgdG8gY29ycmVjdGx5IG1vdmUgWzJdIGZpbGU6IENSQyBlcnJvci4nKSwKLSgxMzMzLCB1J0ZhaWxlZCB0byBjb3JyZWN0bHkgcGF0Y2ggWzJdIGZpbGU6IENSQyBlcnJvci4nKSwKLSgxMzM0LCB1IlRoZSBmaWxlICdbMl0nIGNhbm5vdCBiZSBpbnN0YWxsZWQgYmVjYXVzZSB0aGUgZmlsZSBjYW5ub3QgYmUgZm91bmQgaW4gY2FiaW5ldCBmaWxlICdbM10nLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgbmV0d29yayBlcnJvciwgYW4gZXJyb3IgcmVhZGluZyBmcm9tIHRoZSBDRC1ST00sIG9yIGEgcHJvYmxlbSB3aXRoIHRoaXMgcGFja2FnZS4iKSwKLSgxMzM1LCB1IlRoZSBjYWJpbmV0IGZpbGUgJ1syXScgcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbGF0aW9uIGlzIGNvcnJ1cHQgYW5kIGNhbm5vdCBiZSB1c2VkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgbmV0d29yayBlcnJvciwgYW4gZXJyb3IgcmVhZGluZyBmcm9tIHRoZSBDRC1ST00sIG9yIGEgcHJvYmxlbSB3aXRoIHRoaXMgcGFja2FnZS4iKSwKLSgxMzM2LCB1J1RoZXJlIHdhcyBhbiBlcnJvciBjcmVhdGluZyBhIHRlbXBvcmFyeSBmaWxlIHRoYXQgaXMgbmVlZGVkIHRvIGNvbXBsZXRlIHRoaXMgaW5zdGFsbGF0aW9uLnt7ICBGb2xkZXI6IFszXS4gU3lzdGVtIGVycm9yIGNvZGU6IFsyXX19JyksCi0oMTQwMSwgdSdDb3VsZCBub3QgY3JlYXRlIGtleTogWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDAyLCB1J0NvdWxkIG5vdCBvcGVuIGtleTogWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDAzLCB1J0NvdWxkIG5vdCBkZWxldGUgdmFsdWUgWzJdIGZyb20ga2V5IFszXS4ge3sgU3lzdGVtIGVycm9yIFs0XS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4gJyksCi0oMTQwNCwgdSdDb3VsZCBub3QgZGVsZXRlIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuICcpLAotKDE0MDUsIHUnQ291bGQgbm90IHJlYWQgdmFsdWUgWzJdIGZyb20ga2V5IFszXS4ge3sgU3lzdGVtIGVycm9yIFs0XS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4gJyksCi0oMTQwNiwgdSdDb3VsZCBub3Qgd3JpdGUgdmFsdWUgWzJdIHRvIGtleSBbM10uIHt7IFN5c3RlbSBlcnJvciBbNF0ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQwNywgdSdDb3VsZCBub3QgZ2V0IHZhbHVlIG5hbWVzIGZvciBrZXkgWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE0MDgsIHUnQ291bGQgbm90IGdldCBzdWIga2V5IG5hbWVzIGZvciBrZXkgWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE0MDksIHUnQ291bGQgbm90IHJlYWQgc2VjdXJpdHkgaW5mb3JtYXRpb24gZm9yIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQxMCwgdSdDb3VsZCBub3QgaW5jcmVhc2UgdGhlIGF2YWlsYWJsZSByZWdpc3RyeSBzcGFjZS4gWzJdIEtCIG9mIGZyZWUgcmVnaXN0cnkgc3BhY2UgaXMgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhpcyBhcHBsaWNhdGlvbi4nKSwKLSgxNTAwLCB1J0Fub3RoZXIgaW5zdGFsbGF0aW9uIGlzIGluIHByb2dyZXNzLiBZb3UgbXVzdCBjb21wbGV0ZSB0aGF0IGluc3RhbGxhdGlvbiBiZWZvcmUgY29udGludWluZyB0aGlzIG9uZS4nKSwKLSgxNTAxLCB1J0Vycm9yIGFjY2Vzc2luZyBzZWN1cmVkIGRhdGEuIFBsZWFzZSBtYWtlIHN1cmUgdGhlIFdpbmRvd3MgSW5zdGFsbGVyIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHkgYW5kIHRyeSB0aGUgaW5zdGFsbCBhZ2Fpbi4nKSwKLSgxNTAyLCB1IlVzZXIgJ1syXScgaGFzIHByZXZpb3VzbHkgaW5pdGlhdGVkIGFuIGluc3RhbGwgZm9yIHByb2R1Y3QgJ1szXScuICBUaGF0IHVzZXIgd2lsbCBuZWVkIHRvIHJ1biB0aGF0IGluc3RhbGwgYWdhaW4gYmVmb3JlIHRoZXkgY2FuIHVzZSB0aGF0IHByb2R1Y3QuICBZb3VyIGN1cnJlbnQgaW5zdGFsbCB3aWxsIG5vdyBjb250aW51ZS4iKSwKLSgxNTAzLCB1IlVzZXIgJ1syXScgaGFzIHByZXZpb3VzbHkgaW5pdGlhdGVkIGFuIGluc3RhbGwgZm9yIHByb2R1Y3QgJ1szXScuICBUaGF0IHVzZXIgd2lsbCBuZWVkIHRvIHJ1biB0aGF0IGluc3RhbGwgYWdhaW4gYmVmb3JlIHRoZXkgY2FuIHVzZSB0aGF0IHByb2R1Y3QuIiksCi0oMTYwMSwgdSJPdXQgb2YgZGlzayBzcGFjZSAtLSBWb2x1bWU6ICdbMl0nOyByZXF1aXJlZCBzcGFjZTogWzNdIEtCOyBhdmFpbGFibGUgc3BhY2U6IFs0XSBLQi4gIEZyZWUgc29tZSBkaXNrIHNwYWNlIGFuZCByZXRyeS4iKSwKLSgxNjAyLCB1J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/JyksCi0oMTYwMywgdSJUaGUgZmlsZSBbMl1bM10gaXMgYmVpbmcgaGVsZCBpbiB1c2V7IGJ5IHRoZSBmb2xsb3dpbmcgcHJvY2VzczogTmFtZTogWzRdLCBJZDogWzVdLCBXaW5kb3cgVGl0bGU6ICdbNl0nfS4gIENsb3NlIHRoYXQgYXBwbGljYXRpb24gYW5kIHJldHJ5LiIpLAotKDE2MDQsIHUiVGhlIHByb2R1Y3QgJ1syXScgaXMgYWxyZWFkeSBpbnN0YWxsZWQsIHByZXZlbnRpbmcgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGlzIHByb2R1Y3QuICBUaGUgdHdvIHByb2R1Y3RzIGFyZSBpbmNvbXBhdGlibGUuIiksCi0oMTYwNSwgdSJUaGVyZSBpcyBub3QgZW5vdWdoIGRpc2sgc3BhY2Ugb24gdGhlIHZvbHVtZSAnWzJdJyB0byBjb250aW51ZSB0aGUgaW5zdGFsbCB3aXRoIHJlY292ZXJ5IGVuYWJsZWQuIFszXSBLQiBhcmUgcmVxdWlyZWQsIGJ1dCBvbmx5IFs0XSBLQiBhcmUgYXZhaWxhYmxlLiBDbGljayBJZ25vcmUgdG8gY29udGludWUgdGhlIGluc3RhbGwgd2l0aG91dCBzYXZpbmcgcmVjb3ZlcnkgaW5mb3JtYXRpb24sIGNsaWNrIFJldHJ5IHRvIGNoZWNrIGZvciBhdmFpbGFibGUgc3BhY2UgYWdhaW4sIG9yIGNsaWNrIENhbmNlbCB0byBxdWl0IHRoZSBpbnN0YWxsYXRpb24uIiksCi0oMTYwNiwgdSdDb3VsZCBub3QgYWNjZXNzIG5ldHdvcmsgbG9jYXRpb24gWzJdLicpLAotKDE2MDcsIHUnVGhlIGZvbGxvd2luZyBhcHBsaWNhdGlvbnMgc2hvdWxkIGJlIGNsb3NlZCBiZWZvcmUgY29udGludWluZyB0aGUgaW5zdGFsbDonKSwKLSgxNjA4LCB1J0NvdWxkIG5vdCBmaW5kIGFueSBwcmV2aW91c2x5IGluc3RhbGxlZCBjb21wbGlhbnQgcHJvZHVjdHMgb24gdGhlIG1hY2hpbmUgZm9yIGluc3RhbGxpbmcgdGhpcyBwcm9kdWN0LicpLAotKDE2MDksIHUiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXBwbHlpbmcgc2VjdXJpdHkgc2V0dGluZ3MuIFsyXSBpcyBub3QgYSB2YWxpZCB1c2VyIG9yIGdyb3VwLiBUaGlzIGNvdWxkIGJlIGEgcHJvYmxlbSB3aXRoIHRoZSBwYWNrYWdlLCBvciBhIHByb2JsZW0gY29ubmVjdGluZyB0byBhIGRvbWFpbiBjb250cm9sbGVyIG9uIHRoZSBuZXR3b3JrLiBDaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgY2xpY2sgUmV0cnksIG9yIENhbmNlbCB0byBlbmQgdGhlIGluc3RhbGwuIHt7VW5hYmxlIHRvIGxvY2F0ZSB0aGUgdXNlcidzIFNJRCwgc3lzdGVtIGVycm9yIFszXX19IiksCi0oMTcwMSwgdSdUaGUga2V5IFsyXSBpcyBub3QgdmFsaWQuICBWZXJpZnkgdGhhdCB5b3UgZW50ZXJlZCB0aGUgY29ycmVjdCBrZXkuJyksCi0oMTcwMiwgdSdUaGUgaW5zdGFsbGVyIG11c3QgcmVzdGFydCB5b3VyIHN5c3RlbSBiZWZvcmUgY29uZmlndXJhdGlvbiBvZiBbMl0gY2FuIGNvbnRpbnVlLiAgQ2xpY2sgWWVzIHRvIHJlc3RhcnQgbm93IG9yIE5vIGlmIHlvdSBwbGFuIHRvIG1hbnVhbGx5IHJlc3RhcnQgbGF0ZXIuJyksCi0oMTcwMywgdSdZb3UgbXVzdCByZXN0YXJ0IHlvdXIgc3lzdGVtIGZvciB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzIG1hZGUgdG8gWzJdIHRvIHRha2UgZWZmZWN0LiBDbGljayBZZXMgdG8gcmVzdGFydCBub3cgb3IgTm8gaWYgeW91IHBsYW4gdG8gbWFudWFsbHkgcmVzdGFydCBsYXRlci4nKSwKLSgxNzA0LCB1J0FuIGluc3RhbGxhdGlvbiBmb3IgWzJdIGlzIGN1cnJlbnRseSBzdXNwZW5kZWQuICBZb3UgbXVzdCB1bmRvIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhhdCBpbnN0YWxsYXRpb24gdG8gY29udGludWUuICBEbyB5b3Ugd2FudCB0byB1bmRvIHRob3NlIGNoYW5nZXM/JyksCi0oMTcwNSwgdSdBIHByZXZpb3VzIGluc3RhbGxhdGlvbiBmb3IgdGhpcyBwcm9kdWN0IGlzIGluIHByb2dyZXNzLiAgWW91IG11c3QgdW5kbyB0aGUgY2hhbmdlcyBtYWRlIGJ5IHRoYXQgaW5zdGFsbGF0aW9uIHRvIGNvbnRpbnVlLiAgRG8geW91IHdhbnQgdG8gdW5kbyB0aG9zZSBjaGFuZ2VzPycpLAotKDE3MDYsIHUiQW4gaW5zdGFsbGF0aW9uIHBhY2thZ2UgZm9yIHRoZSBwcm9kdWN0IFsyXSBjYW5ub3QgYmUgZm91bmQuIFRyeSB0aGUgaW5zdGFsbGF0aW9uIGFnYWluIHVzaW5nIGEgdmFsaWQgY29weSBvZiB0aGUgaW5zdGFsbGF0aW9uIHBhY2thZ2UgJ1szXScuIiksCi0oMTcwNywgdSdJbnN0YWxsYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgxNzA4LCB1J0luc3RhbGxhdGlvbiBmYWlsZWQuJyksCi0oMTcwOSwgdSdQcm9kdWN0OiBbMl0gLS0gWzNdJyksCi0oMTcxMCwgdSdZb3UgbWF5IGVpdGhlciByZXN0b3JlIHlvdXIgY29tcHV0ZXIgdG8gaXRzIHByZXZpb3VzIHN0YXRlIG9yIGNvbnRpbnVlIHRoZSBpbnN0YWxsIGxhdGVyLiBXb3VsZCB5b3UgbGlrZSB0byByZXN0b3JlPycpLAotKDE3MTEsIHUnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgd3JpdGluZyBpbnN0YWxsYXRpb24gaW5mb3JtYXRpb24gdG8gZGlzay4gIENoZWNrIHRvIG1ha2Ugc3VyZSBlbm91Z2ggZGlzayBzcGFjZSBpcyBhdmFpbGFibGUsIGFuZCBjbGljayBSZXRyeSwgb3IgQ2FuY2VsIHRvIGVuZCB0aGUgaW5zdGFsbC4nKSwKLSgxNzEyLCB1J09uZSBvciBtb3JlIG9mIHRoZSBmaWxlcyByZXF1aXJlZCB0byByZXN0b3JlIHlvdXIgY29tcHV0ZXIgdG8gaXRzIHByZXZpb3VzIHN0YXRlIGNvdWxkIG5vdCBiZSBmb3VuZC4gIFJlc3RvcmF0aW9uIHdpbGwgbm90IGJlIHBvc3NpYmxlLicpLAotKDE3MTMsIHUnWzJdIGNhbm5vdCBpbnN0YWxsIG9uZSBvZiBpdHMgcmVxdWlyZWQgcHJvZHVjdHMuIENvbnRhY3QgeW91ciB0ZWNobmljYWwgc3VwcG9ydCBncm91cC4gIHt7U3lzdGVtIEVycm9yOiBbM10ufX0nKSwKLSgxNzE0LCB1J1RoZSBvbGRlciB2ZXJzaW9uIG9mIFsyXSBjYW5ub3QgYmUgcmVtb3ZlZC4gIENvbnRhY3QgeW91ciB0ZWNobmljYWwgc3VwcG9ydCBncm91cC4gIHt7U3lzdGVtIEVycm9yIFszXS59fScpLAotKDE3MTUsIHUnSW5zdGFsbGVkIFsyXScpLAotKDE3MTYsIHUnQ29uZmlndXJlZCBbMl0nKSwKLSgxNzE3LCB1J1JlbW92ZWQgWzJdJyksCi0oMTcxOCwgdSdGaWxlIFsyXSB3YXMgcmVqZWN0ZWQgYnkgZGlnaXRhbCBzaWduYXR1cmUgcG9saWN5LicpLAotKDE3MTksIHUnVGhlIFdpbmRvd3MgSW5zdGFsbGVyIFNlcnZpY2UgY291bGQgbm90IGJlIGFjY2Vzc2VkLiBUaGlzIGNhbiBvY2N1ciBpZiB5b3UgYXJlIHJ1bm5pbmcgV2luZG93cyBpbiBzYWZlIG1vZGUsIG9yIGlmIHRoZSBXaW5kb3dzIEluc3RhbGxlciBpcyBub3QgY29ycmVjdGx5IGluc3RhbGxlZC4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIGZvciBhc3Npc3RhbmNlLicpLAotKDE3MjAsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIHNjcmlwdCByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsIHRvIGNvbXBsZXRlIGNvdWxkIG5vdCBiZSBydW4uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4gIHt7Q3VzdG9tIGFjdGlvbiBbMl0gc2NyaXB0IGVycm9yIFszXSwgWzRdOiBbNV0gTGluZSBbNl0sIENvbHVtbiBbN10sIFs4XSB9fScpLAotKDE3MjEsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIHByb2dyYW0gcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbCB0byBjb21wbGV0ZSBjb3VsZCBub3QgYmUgcnVuLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgb3IgcGFja2FnZSB2ZW5kb3IuIHt7QWN0aW9uOiBbMl0sIGxvY2F0aW9uOiBbM10sIGNvbW1hbmQ6IFs0XSB9fScpLAotKDE3MjIsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIHByb2dyYW0gcnVuIGFzIHBhcnQgb2YgdGhlIHNldHVwIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgb3IgcGFja2FnZSB2ZW5kb3IuICB7e0FjdGlvbiBbMl0sIGxvY2F0aW9uOiBbM10sIGNvbW1hbmQ6IFs0XSB9fScpLAotKDE3MjMsIHUnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhpcyBXaW5kb3dzIEluc3RhbGxlciBwYWNrYWdlLiBBIERMTCByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsIHRvIGNvbXBsZXRlIGNvdWxkIG5vdCBiZSBydW4uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4gIHt7QWN0aW9uIFsyXSwgZW50cnk6IFszXSwgbGlicmFyeTogWzRdIH19JyksCi0oMTcyNCwgdSdSZW1vdmFsIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuJyksCi0oMTcyNSwgdSdSZW1vdmFsIGZhaWxlZC4nKSwKLSgxNzI2LCB1J0FkdmVydGlzZW1lbnQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgxNzI3LCB1J0FkdmVydGlzZW1lbnQgZmFpbGVkLicpLAotKDE3MjgsIHUnQ29uZmlndXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDE3MjksIHUnQ29uZmlndXJhdGlvbiBmYWlsZWQuJyksCi0oMTczMCwgdSdZb3UgbXVzdCBiZSBhbiBBZG1pbmlzdHJhdG9yIHRvIHJlbW92ZSB0aGlzIGFwcGxpY2F0aW9uLiBUbyByZW1vdmUgdGhpcyBhcHBsaWNhdGlvbiwgeW91IGNhbiBsb2cgb24gYXMgYW4gQWRtaW5pc3RyYXRvciwgb3IgY29udGFjdCB5b3VyIHRlY2huaWNhbCBzdXBwb3J0IGdyb3VwIGZvciBhc3Npc3RhbmNlLicpLAotKDE4MDEsIHUnVGhlIHBhdGggWzJdIGlzIG5vdCB2YWxpZC4gIFBsZWFzZSBzcGVjaWZ5IGEgdmFsaWQgcGF0aC4nKSwKLSgxODAyLCB1J091dCBvZiBtZW1vcnkuIFNodXQgZG93biBvdGhlciBhcHBsaWNhdGlvbnMgYmVmb3JlIHJldHJ5aW5nLicpLAotKDE4MDMsIHUnVGhlcmUgaXMgbm8gZGlzayBpbiBkcml2ZSBbMl0uIFBsZWFzZSBpbnNlcnQgb25lIGFuZCBjbGljayBSZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIGdvIGJhY2sgdG8gdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgdm9sdW1lLicpLAotKDE4MDQsIHUnVGhlcmUgaXMgbm8gZGlzayBpbiBkcml2ZSBbMl0uIFBsZWFzZSBpbnNlcnQgb25lIGFuZCBjbGljayBSZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIHJldHVybiB0byB0aGUgYnJvd3NlIGRpYWxvZyBhbmQgc2VsZWN0IGEgZGlmZmVyZW50IHZvbHVtZS4nKSwKLSgxODA1LCB1J1RoZSBmb2xkZXIgWzJdIGRvZXMgbm90IGV4aXN0LiAgUGxlYXNlIGVudGVyIGEgcGF0aCB0byBhbiBleGlzdGluZyBmb2xkZXIuJyksCi0oMTgwNiwgdSdZb3UgaGF2ZSBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byByZWFkIHRoaXMgZm9sZGVyLicpLAotKDE4MDcsIHUnQSB2YWxpZCBkZXN0aW5hdGlvbiBmb2xkZXIgZm9yIHRoZSBpbnN0YWxsIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLicpLAotKDE5MDEsIHUnRXJyb3IgYXR0ZW1wdGluZyB0byByZWFkIGZyb20gdGhlIHNvdXJjZSBpbnN0YWxsIGRhdGFiYXNlOiBbMl0uJyksCi0oMTkwMiwgdSdTY2hlZHVsaW5nIHJlYm9vdCBvcGVyYXRpb246IFJlbmFtaW5nIGZpbGUgWzJdIHRvIFszXS4gTXVzdCByZWJvb3QgdG8gY29tcGxldGUgb3BlcmF0aW9uLicpLAotKDE5MDMsIHUnU2NoZWR1bGluZyByZWJvb3Qgb3BlcmF0aW9uOiBEZWxldGluZyBmaWxlIFsyXS4gTXVzdCByZWJvb3QgdG8gY29tcGxldGUgb3BlcmF0aW9uLicpLAotKDE5MDQsIHUnTW9kdWxlIFsyXSBmYWlsZWQgdG8gcmVnaXN0ZXIuICBIUkVTVUxUIFszXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTA1LCB1J01vZHVsZSBbMl0gZmFpbGVkIHRvIHVucmVnaXN0ZXIuICBIUkVTVUxUIFszXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTA2LCB1J0ZhaWxlZCB0byBjYWNoZSBwYWNrYWdlIFsyXS4gRXJyb3I6IFszXS4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MDcsIHUnQ291bGQgbm90IHJlZ2lzdGVyIGZvbnQgWzJdLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBpbnN0YWxsIGZvbnRzLCBhbmQgdGhhdCB0aGUgc3lzdGVtIHN1cHBvcnRzIHRoaXMgZm9udC4nKSwKLSgxOTA4LCB1J0NvdWxkIG5vdCB1bnJlZ2lzdGVyIGZvbnQgWzJdLiBWZXJpZnkgdGhhdCB5b3UgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIHJlbW92ZSBmb250cy4nKSwKLSgxOTA5LCB1J0NvdWxkIG5vdCBjcmVhdGUgU2hvcnRjdXQgWzJdLiBWZXJpZnkgdGhhdCB0aGUgZGVzdGluYXRpb24gZm9sZGVyIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTEwLCB1J0NvdWxkIG5vdCByZW1vdmUgU2hvcnRjdXQgWzJdLiBWZXJpZnkgdGhhdCB0aGUgc2hvcnRjdXQgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkxMSwgdSdDb3VsZCBub3QgcmVnaXN0ZXIgdHlwZSBsaWJyYXJ5IGZvciBmaWxlIFsyXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTEyLCB1J0NvdWxkIG5vdCB1bnJlZ2lzdGVyIHR5cGUgbGlicmFyeSBmb3IgZmlsZSBbMl0uICBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTkxMywgdSdDb3VsZCBub3QgdXBkYXRlIHRoZSBpbmkgZmlsZSBbMl1bM10uICBWZXJpZnkgdGhhdCB0aGUgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkxNCwgdSdDb3VsZCBub3Qgc2NoZWR1bGUgZmlsZSBbMl0gdG8gcmVwbGFjZSBmaWxlIFszXSBvbiByZWJvb3QuICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucyB0byBmaWxlIFszXS4nKSwKLSgxOTE1LCB1J0Vycm9yIHJlbW92aW5nIE9EQkMgZHJpdmVyIG1hbmFnZXIsIE9EQkMgZXJyb3IgWzJdOiBbM10uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTE2LCB1J0Vycm9yIGluc3RhbGxpbmcgT0RCQyBkcml2ZXIgbWFuYWdlciwgT0RCQyBlcnJvciBbMl06IFszXS4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MTcsIHUnRXJyb3IgcmVtb3ZpbmcgT0RCQyBkcml2ZXI6IFs0XSwgT0RCQyBlcnJvciBbMl06IFszXS4gVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHJlbW92ZSBPREJDIGRyaXZlcnMuJyksCi0oMTkxOCwgdSdFcnJvciBpbnN0YWxsaW5nIE9EQkMgZHJpdmVyOiBbNF0sIE9EQkMgZXJyb3IgWzJdOiBbM10uIFZlcmlmeSB0aGF0IHRoZSBmaWxlIFs0XSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkxOSwgdSdFcnJvciBjb25maWd1cmluZyBPREJDIGRhdGEgc291cmNlOiBbNF0sIE9EQkMgZXJyb3IgWzJdOiBbM10uIFZlcmlmeSB0aGF0IHRoZSBmaWxlIFs0XSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTkyMCwgdSJTZXJ2aWNlICdbMl0nIChbM10pIGZhaWxlZCB0byBzdGFydC4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBzdGFydCBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyMSwgdSJTZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBzdG9wcGVkLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHN0b3Agc3lzdGVtIHNlcnZpY2VzLiIpLAotKDE5MjIsIHUiU2VydmljZSAnWzJdJyAoWzNdKSBjb3VsZCBub3QgYmUgZGVsZXRlZC4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byByZW1vdmUgc3lzdGVtIHNlcnZpY2VzLiIpLAotKDE5MjMsIHUiU2VydmljZSAnWzJdJyAoWzNdKSBjb3VsZCBub3QgYmUgaW5zdGFsbGVkLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIGluc3RhbGwgc3lzdGVtIHNlcnZpY2VzLiIpLAotKDE5MjQsIHUiQ291bGQgbm90IHVwZGF0ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAnWzJdJy4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBtb2RpZnkgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIpLAotKDE5MjUsIHUnWW91IGRvIG5vdCBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBjb21wbGV0ZSB0aGlzIGluc3RhbGxhdGlvbiBmb3IgYWxsIHVzZXJzIG9mIHRoZSBtYWNoaW5lLiAgTG9nIG9uIGFzIGFkbWluaXN0cmF0b3IgYW5kIHRoZW4gcmV0cnkgdGhpcyBpbnN0YWxsYXRpb24uJyksCi0oMTkyNiwgdSJDb3VsZCBub3Qgc2V0IGZpbGUgc2VjdXJpdHkgZm9yIGZpbGUgJ1szXScuIEVycm9yOiBbMl0uICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gbW9kaWZ5IHRoZSBzZWN1cml0eSBwZXJtaXNzaW9ucyBmb3IgdGhpcyBmaWxlLiIpLAotKDE5MjcsIHUnQ29tcG9uZW50IFNlcnZpY2VzIChDT00rIDEuMCkgYXJlIG5vdCBpbnN0YWxsZWQgb24gdGhpcyBjb21wdXRlci4gIFRoaXMgaW5zdGFsbGF0aW9uIHJlcXVpcmVzIENvbXBvbmVudCBTZXJ2aWNlcyBpbiBvcmRlciB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuICBDb21wb25lbnQgU2VydmljZXMgYXJlIGF2YWlsYWJsZSBvbiBXaW5kb3dzIDIwMDAuJyksCi0oMTkyOCwgdSdFcnJvciByZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9uLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIGZvciBtb3JlIGluZm9ybWF0aW9uLicpLAotKDE5MjksIHUnRXJyb3IgdW5yZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9uLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIGZvciBtb3JlIGluZm9ybWF0aW9uLicpLAotKDE5MzAsIHUiVGhlIGRlc2NyaXB0aW9uIGZvciBzZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBjaGFuZ2VkLiIpLAotKDE5MzEsIHUnVGhlIFdpbmRvd3MgSW5zdGFsbGVyIHNlcnZpY2UgY2Fubm90IHVwZGF0ZSB0aGUgc3lzdGVtIGZpbGUgWzJdIGJlY2F1c2UgdGhlIGZpbGUgaXMgcHJvdGVjdGVkIGJ5IFdpbmRvd3MuICBZb3UgbWF5IG5lZWQgdG8gdXBkYXRlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBmb3IgdGhpcyBwcm9ncmFtIHRvIHdvcmsgY29ycmVjdGx5LiB7e1BhY2thZ2UgdmVyc2lvbjogWzNdLCBPUyBQcm90ZWN0ZWQgdmVyc2lvbjogWzRdfX0nKSwKLSgxOTMyLCB1J1RoZSBXaW5kb3dzIEluc3RhbGxlciBzZXJ2aWNlIGNhbm5vdCB1cGRhdGUgdGhlIHByb3RlY3RlZCBXaW5kb3dzIGZpbGUgWzJdLiB7e1BhY2thZ2UgdmVyc2lvbjogWzNdLCBPUyBQcm90ZWN0ZWQgdmVyc2lvbjogWzRdLCBTRlAgRXJyb3I6IFs1XX19JyksCi0oMTkzMywgdSdUaGUgV2luZG93cyBJbnN0YWxsZXIgc2VydmljZSBjYW5ub3QgdXBkYXRlIG9uZSBvciBtb3JlIHByb3RlY3RlZCBXaW5kb3dzIGZpbGVzLiB7e1NGUCBFcnJvcjogWzJdLiAgTGlzdCBvZiBwcm90ZWN0ZWQgZmlsZXM6XFxyXFxuWzNdfX0nKSwKLSgxOTM0LCB1J1VzZXIgaW5zdGFsbGF0aW9ucyBhcmUgZGlzYWJsZWQgdmlhIHBvbGljeSBvbiB0aGUgbWFjaGluZS4nKSwKLSgxOTM1LCB1J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIG9mIGFzc2VtYmx5IGNvbXBvbmVudCBbMl0uIEhSRVNVTFQ6IFszXS4ge3thc3NlbWJseSBpbnRlcmZhY2U6IFs0XSwgZnVuY3Rpb246IFs1XSwgYXNzZW1ibHkgbmFtZTogWzZdfX0nKSwKLV0KLQotdGFibGVzPVsnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCAnQWRtaW5VSVNlcXVlbmNlJywgJ0FkdnRFeGVjdXRlU2VxdWVuY2UnLCAnQkJDb250cm9sJywgJ0JpbGxib2FyZCcsICdCaW5hcnknLCAnQ2hlY2tCb3gnLCAnUHJvcGVydHknLCAnQ29tYm9Cb3gnLCAnQ29udHJvbCcsICdMaXN0Qm94JywgJ0FjdGlvblRleHQnLCAnQ29udHJvbENvbmRpdGlvbicsICdDb250cm9sRXZlbnQnLCAnRGlhbG9nJywgJ0V2ZW50TWFwcGluZycsICdJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlJywgJ0luc3RhbGxVSVNlcXVlbmNlJywgJ0xpc3RWaWV3JywgJ1JhZGlvQnV0dG9uJywgJ1RleHRTdHlsZScsICdVSVRleHQnLCAnX1ZhbGlkYXRpb24nLCAnRXJyb3InXQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Njc2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5iYXQKQEAgLTAsMCArMSw1NiBAQAorQHNldGxvY2FsDQorQGVjaG8gb2ZmDQorDQorc2V0IEQ9JX5kcDANCitzZXQgUENCVUlMRD0lRCUuLlwuLlxQQ0J1aWxkXA0KKw0KK3NldCBIT1NUPQ0KK3NldCBVU0VSPQ0KK3NldCBUQVJHRVQ9DQorc2V0IERSWVJVTj1mYWxzZQ0KKw0KKzpDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWgiIGdvdG8gSGVscA0KK2lmICIlMSIgRVFVICItbyIgKHNldCBIT1NUPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1ob3N0IiAoc2V0IEhPU1Q9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdSIgKHNldCBVU0VSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS11c2VyIiAoc2V0IFVTRVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItdCIgKHNldCBUQVJHRVQ9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRhcmdldCIgKHNldCBUQVJHRVQ9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWRyeS1ydW4iIChzZXQgRFJZUlVOPXRydWUpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgcGxpbmsgPiAiJVRFTVAlXHBsaW5rLmxvYyIgMj4gbnVsICYmIHNldCAvUCBQTElOSz0gPCAiJVRFTVAlXHBsaW5rLmxvYyIgJiBkZWwgIiVURU1QJVxwbGluay5sb2MiDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkiIHBsaW5rID4gIiVURU1QJVxwbGluay5sb2MiIDI+IG51bCAmJiBzZXQgL1AgUExJTks9IDwgIiVURU1QJVxwbGluay5sb2MiICYgZGVsICIlVEVNUCVccGxpbmsubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBMSU5LIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBwbGluayA+ICIlVEVNUCVccGxpbmsubG9jIiAyPiBudWwgJiYgc2V0IC9QIFBMSU5LPSA8ICIlVEVNUCVccGxpbmsubG9jIiAmIGRlbCAiJVRFTVAlXHBsaW5rLmxvYyINCitpZiBub3QgZGVmaW5lZCBQTElOSyBlY2hvIENhbm5vdCBsb2NhdGUgcGxpbmsuZXhlICYgZXhpdCAvQiAxDQorZWNobyBGb3VuZCBwbGluay5leGUgYXQgJVBMSU5LJQ0KKw0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgcHNjcCA+ICIlVEVNUCVccHNjcC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgcHNjcD0gPCAiJVRFTVAlXHBzY3AubG9jIiAmIGRlbCAiJVRFTVAlXHBzY3AubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSVcUHVUVFkiIHBzY3AgPiAiJVRFTVAlXHBzY3AubG9jIiAyPiBudWwgJiYgc2V0IC9QIHBzY3A9IDwgIiVURU1QJVxwc2NwLmxvYyIgJiBkZWwgIiVURU1QJVxwc2NwLmxvYyINCitpZiBub3QgZGVmaW5lZCBQU0NQIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBwc2NwID4gIiVURU1QJVxwc2NwLmxvYyIgMj4gbnVsICYmIHNldCAvUCBwc2NwPSA8ICIlVEVNUCVccHNjcC5sb2MiICYgZGVsICIlVEVNUCVccHNjcC5sb2MiDQoraWYgbm90IGRlZmluZWQgUFNDUCBlY2hvIENhbm5vdCBsb2NhdGUgcHNjcC5leGUgJiBleGl0IC9CIDENCitlY2hvIEZvdW5kIHBzY3AuZXhlIGF0ICVQU0NQJQ0KKw0KK2lmIG5vdCBkZWZpbmVkIEdQRyB3aGVyZSBncGcyID4gIiVURU1QJVxncGcubG9jIiAyPiBudWwgJiYgc2V0IC9QIEdQRz0gPCAiJVRFTVAlXGdwZy5sb2MiICYgZGVsICIlVEVNUCVcZ3BnLmxvYyINCitpZiBub3QgZGVmaW5lZCBHUEcgd2hlcmUgL1IgIiVQQ0JVSUxEJS4uXGV4dGVybmFscyIgZ3BnMiA+ICIlVEVNUCVcZ3BnLmxvYyIgMj4gbnVsICYmIHNldCAvUCBHUEc9IDwgIiVURU1QJVxncGcubG9jIiAmIGRlbCAiJVRFTVAlXGdwZy5sb2MiDQoraWYgbm90IGRlZmluZWQgR1BHIGVjaG8gQ2Fubm90IGxvY2F0ZSBncGcyLmV4ZS4gU2lnbmF0dXJlcyB3aWxsIG5vdCBiZSB1cGxvYWRlZCAmIHBhdXNlDQorZWNobyBGb3VuZCBncGcyLmV4ZSBhdCAlR1BHJQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiID4gbnVsIDI+IG51bA0KK3B1c2hkICIlRCUiDQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlVwbG9hZCAvcDpQbGF0Zm9ybT14ODYNCittc2J1aWxkIC92Om0gL25vbG9nbyB1cGxvYWRyZWxlYXNlLnByb2ogL3Q6VXBsb2FkIC9wOlBsYXRmb3JtPXg2NCAvcDpJbmNsdWRlRG9jPWZhbHNlDQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlNob3dIYXNoZXMgL3A6UGxhdGZvcm09eDg2DQorbXNidWlsZCAvdjptIC9ub2xvZ28gdXBsb2FkcmVsZWFzZS5wcm9qIC90OlNob3dIYXNoZXMgL3A6UGxhdGZvcm09eDY0IC9wOkluY2x1ZGVEb2M9ZmFsc2UNCitwb3BkDQorZXhpdCAvQiAwDQorDQorOkhlbHANCitlY2hvIHVwbG9hZHJlbGVhc2UuYmF0IC0taG9zdCBIT1NUIC0tdXNlciBVU0VSTkFNRSBbLS10YXJnZXQgVEFSR0VUXSBbLS1kcnktcnVuXSBbLWhdDQorZWNoby4NCitlY2hvICAgIC0taG9zdCAoLW8pICAgICBTcGVjaWZ5IHRoZSB1cGxvYWQgaG9zdCAocmVxdWlyZWQpDQorZWNobyAgICAtLXVzZXIgKC11KSAgICAgU3BlY2lmeSB0aGUgdXNlciBvbiB0aGUgaG9zdCAocmVxdWlyZWQpDQorZWNobyAgICAtLXRhcmdldCAoLXQpICAgU3BlY2lmeSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBvbiB0aGUgaG9zdA0KK2VjaG8gICAgLS1kcnktcnVuICAgICAgIERpc3BsYXkgY29tbWFuZHMgYW5kIGZpbGVuYW1lcyB3aXRob3V0IGV4ZWN1dGluZyB0aGVtDQorZWNobyAgICAtaCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCitlY2hvLg0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS91cGxvYWRyZWxlYXNlLnByb2ogYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5wcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNGVkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5wcm9qCkBAIC0wLDAgKzEsODAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsyRDY5RjJBQi1ENUQwLTQzNDQtODRCNS1FRjZEQjM0QTlCQzl9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PjwvT3V0cHV0U3VmZml4PgorICAgICAgICAKKyAgICAgICAgPERvd25sb2FkVXJsQmFzZSBDb25kaXRpb249IickKERvd25sb2FkVXJsQmFzZSknID09ICcnIj4kKFRBUkdFVCk8L0Rvd25sb2FkVXJsQmFzZT4KKyAgICAgICAgPERvd25sb2FkVXJsQmFzZSBDb25kaXRpb249IickKERvd25sb2FkVXJsQmFzZSknID09ICcnIj4vc3J2L3d3dy5weXRob24ub3JnL2Z0cC9weXRob248L0Rvd25sb2FkVXJsQmFzZT4KKyAgICAgICAgPEluY2x1ZGVEb2MgQ29uZGl0aW9uPSInJChJbmNsdWRlRG9jKScgPT0gJyciPnRydWU8L0luY2x1ZGVEb2M+CisgICAgICAgIDxEcnlSdW4gQ29uZGl0aW9uPSInJChEcnlSdW4pJyA9PSAnJyI+ZmFsc2U8L0RyeVJ1bj4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Im1zaS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImJ1bmRsZVxidW5kbGUudGFyZ2V0cyIgLz4KKyAgICAKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPEVYRVRhcmdldD4kKERvd25sb2FkVXJsQmFzZS5UcmltRW5kKGAvYCkpLyQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpPC9FWEVUYXJnZXQ+CisgICAgICAgIDxNU0lUYXJnZXQ+JChEb3dubG9hZFVybC5UcmltRW5kKGAvYCkpPC9NU0lUYXJnZXQ+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoT3V0cHV0UGF0aClcKi5tc2k7JChPdXRwdXRQYXRoKVwqLm1zdSI+CisgICAgICAgICAgICA8Q29weVRvPiQoTVNJVGFyZ2V0KTwvQ29weVRvPgorICAgICAgICA8L0ZpbGU+CisgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoT3V0cHV0UGF0aClcKi5leGU7JChPdXRwdXRQYXRoKVwqLnppcCI+CisgICAgICAgICAgICA8Q29weVRvPiQoRVhFVGFyZ2V0KTwvQ29weVRvPgorICAgICAgICA8L0ZpbGU+CisgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKURvY1xidWlsZFxodG1saGVscFxweXRob24kKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlcikkKE1pY3JvVmVyc2lvbk51bWJlcikkKFJlbGVhc2VMZXZlbE5hbWUpLmNobSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVEb2MpIj4KKyAgICAgICAgICAgIDxDb3B5VG8+JChFWEVUYXJnZXQpPC9Db3B5VG8+CisgICAgICAgIDwvRmlsZT4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9WYWxpZGF0ZVByb3BlcnRpZXMiPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gdmFsdWUgZm9yIEhvc3QgcHJvdmlkZWQiIENvbmRpdGlvbj0iJyQoSG9zdCknID09ICcnIiAvPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gdmFsdWUgZm9yIFVzZXIgcHJvdmlkZWQiIENvbmRpdGlvbj0iJyQoVXNlciknID09ICcnIiAvPgorICAgICAgICA8RXJyb3IgVGV4dD0iTm8gcGF0aCBmb3IgUFNDUCBwcm92aWRlZCIgQ29uZGl0aW9uPSInJChQU0NQKScgPT0gJyciIC8+CisgICAgICAgIDxFcnJvciBUZXh0PSJObyBwYXRoIGZvciBQTElOSyBwcm92aWRlZCIgQ29uZGl0aW9uPSInJChQTElOSyknID09ICcnIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX1J1bkdwZyIgQ29uZGl0aW9uPSInJChHUEcpJyAhPSAnJyIgSW5wdXRzPSJAKEZpbGUpIiBPdXRwdXRzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGVOYW1lKSUoRXh0ZW5zaW9uKS5hc2MiPgorICAgICAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKWdwZyIgLz4KKyAgICAgICAgPERlbGV0ZSBGaWxlcz0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxncGdcJShGaWxlLkZpbGVOYW1lKSUoRmlsZS5FeHRlbnNpb24pLmFzYyIgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcZ3BnXCUoRmlsZS5GaWxlTmFtZSklKEZpbGUuRXh0ZW5zaW9uKS5hc2MnKSIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJnF1b3Q7JChHUEcpJnF1b3Q7IC1iYSAtbyAmcXVvdDskKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGUuRmlsZU5hbWUpJShGaWxlLkV4dGVuc2lvbikuYXNjJnF1b3Q7ICZxdW90OyUoRmlsZS5GdWxsUGF0aCkmcXVvdDsiIC8+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RmlsZSBJbmNsdWRlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGUuRmlsZU5hbWUpJShGaWxlLkV4dGVuc2lvbikuYXNjIj4KKyAgICAgICAgICAgICAgICA8Q29weVRvPiUoRmlsZS5Db3B5VG8pPC9Db3B5VG8+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX1VwbG9hZCIgQ29uZGl0aW9uPSIhJChEcnlSdW4pIj4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIG1rZGlyICUoRmlsZS5Db3B5VG8pIF4mYW1wO14mYW1wOyBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykgXiZhbXA7XiZhbXA7IGNobW9kIGctdyxvK3J4ICUoRmlsZS5Db3B5VG8pCismcXVvdDskKFBTQ1ApJnF1b3Q7IEAoRmlsZSwnICcpICQoVXNlcilAJChIb3N0KTolKEZpbGUuQ29weVRvKQorJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIGNoZ3JwIGRvd25sb2FkcyAlKEZpbGUuQ29weVRvKS8qOyBjaG1vZCBnLXcsbytyICUoRmlsZS5Db3B5VG8pLyoKKyIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9QcmludE5hbWVzIiBDb25kaXRpb249IiQoRHJ5UnVuKSI+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9ImVjaG8gJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIG1rZGlyICUoRmlsZS5Db3B5VG8pIF4mYW1wO14mYW1wOyBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykgXiZhbXA7XiZhbXA7IGNobW9kIGctdyxvK3J4ICUoRmlsZS5Db3B5VG8pCitlY2hvICZxdW90OyQoUFNDUCkmcXVvdDsgQChGaWxlLCcgJykgJChVc2VyKUAkKEhvc3QpOiUoRmlsZS5Db3B5VG8pCitlY2hvICZxdW90OyQoUExJTkspJnF1b3Q7ICQoVXNlcilAJChIb3N0KSBjaGdycCBkb3dubG9hZHMgJShGaWxlLkNvcHlUbykvKjsgY2htb2QgZy13LG8rciAlKEZpbGUuQ29weVRvKS8qCitlY2hvLgorZWNoby4iIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJVcGxvYWQiIERlcGVuZHNPblRhcmdldHM9Il9WYWxpZGF0ZVByb3BlcnRpZXM7X1J1bkdwZztfUHJpbnROYW1lcztfVXBsb2FkIiAvPgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iU2hvd0hhc2hlcyI+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8VXNlckZpbGVzIEluY2x1ZGU9IkAoRmlsZSkiIENvbmRpdGlvbj0iJyUoRmlsZS5Db3B5VG8pJyA9PSAnJChFWEVUYXJnZXQpJyIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgICAgIAorICAgICAgICA8RXhlYyBDb21tYW5kPSImcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgZ2VuZXJhdGVfbWQ1LnB5IEAoVXNlckZpbGVzLT4nJnF1b3Q7JShGdWxsUGF0aCkmcXVvdDsnLCcgJykiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZCI+CisgICAgICAgIDxFcnJvciBUZXh0PSJUaGlzIHNjcmlwdCBzaG91bGQgYmUgaW52b2tlZCB1c2luZyB1cGxvYWRyZWxlYXNlLmJhdC4iIC8+CisgICAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvd2l4LnByb3BzIGIvVG9vbHMvbXNpL3dpeC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTQ5MmY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3dpeC5wcm9wcwpAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHl0aG9uLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFdpeEluc3RhbGxQYXRoIENvbmRpdGlvbj0iJyQoV2l4SW5zdGFsbFBhdGgpJyA9PSAnJyBhbmQgRXhpc3RzKCckKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcV2l4JykiPiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxXaXhcPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4SW5zdGFsbFBhdGggQ29uZGl0aW9uPSInJChXaXhJbnN0YWxsUGF0aCknID09ICcnIGFuZCBFeGlzdHMoJyQoRXh0ZXJuYWxzRGlyKVxXaXgnKSI+JChFeHRlcm5hbHNEaXIpXFdpeFw8L1dpeEluc3RhbGxQYXRoPgorICAgIDxXaXhJbnN0YWxsUGF0aCBDb25kaXRpb249IickKFdpeEluc3RhbGxQYXRoKScgPT0gJyciPiQoUmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxXaW5kb3dzIEluc3RhbGxlciBYTUxcMy45QEluc3RhbGxSb290KTwvV2l4SW5zdGFsbFBhdGg+CisgICAgPFdpeEluc3RhbGxQYXRoIENvbmRpdGlvbj0iJyQoV2l4SW5zdGFsbFBhdGgpJyA9PSAnJyI+JChSZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcV293NjQzMk5vZGVcTWljcm9zb2Z0XFdpbmRvd3MgSW5zdGFsbGVyIFhNTFwzLjlASW5zdGFsbFJvb3QpPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4VGFyZ2V0c1BhdGg+JChXaXhJbnN0YWxsUGF0aClcV2l4LnRhcmdldHM8L1dpeFRhcmdldHNQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCA4MzdjZDgxLi5jODI4NTc3IDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMTM4LDYgKzEzOCwxNCBAQAogICAgICAgICBzZWxmLmZpbGwoIm5vbmxvY2FsICIpCiAgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLndyaXRlLCB0Lm5hbWVzKQogCisgICAgZGVmIF9Bd2FpdChzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgIHNlbGYud3JpdGUoImF3YWl0IikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQorICAgICAgICBzZWxmLndyaXRlKCIpIikKKwogICAgIGRlZiBfWWllbGQoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUoIigiKQogICAgICAgICBzZWxmLndyaXRlKCJ5aWVsZCIpCkBAIC0yMTEsMTYgKzIxOSw2IEBACiAgICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGUpCi0gICAgICAgIGlmIHQuc3RhcmFyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqIikKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5zdGFyYXJncykKLSAgICAgICAgaWYgdC5rd2FyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmdzKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAogICAgICAgICBzZWxmLmVudGVyKCkKQEAgLTIyOCwxMSArMjI2LDE4IEBACiAgICAgICAgIHNlbGYubGVhdmUoKQogCiAgICAgZGVmIF9GdW5jdGlvbkRlZihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Z1bmN0aW9uRGVmX2hlbHBlcih0LCAiZGVmIikKKworICAgIGRlZiBfQXN5bmNGdW5jdGlvbkRlZihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Z1bmN0aW9uRGVmX2hlbHBlcih0LCAiYXN5bmMgZGVmIikKKworICAgIGRlZiBfX0Z1bmN0aW9uRGVmX2hlbHBlcihzZWxmLCB0LCBmaWxsX3N1ZmZpeCk6CiAgICAgICAgIHNlbGYud3JpdGUoIlxuIikKICAgICAgICAgZm9yIGRlY28gaW4gdC5kZWNvcmF0b3JfbGlzdDoKICAgICAgICAgICAgIHNlbGYuZmlsbCgiQCIpCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGRlY28pCi0gICAgICAgIHNlbGYuZmlsbCgiZGVmICIrdC5uYW1lICsgIigiKQorICAgICAgICBkZWZfc3RyID0gZmlsbF9zdWZmaXgrIiAiK3QubmFtZSArICIoIgorICAgICAgICBzZWxmLmZpbGwoZGVmX3N0cikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmFyZ3MpCiAgICAgICAgIHNlbGYud3JpdGUoIikiKQogICAgICAgICBpZiB0LnJldHVybnM6CkBAIC0yNDMsNyArMjQ4LDEzIEBACiAgICAgICAgIHNlbGYubGVhdmUoKQogCiAgICAgZGVmIF9Gb3Ioc2VsZiwgdCk6Ci0gICAgICAgIHNlbGYuZmlsbCgiZm9yICIpCisgICAgICAgIHNlbGYuX19Gb3JfaGVscGVyKCJmb3IgIiwgdCkKKworICAgIGRlZiBfQXN5bmNGb3Ioc2VsZiwgdCk6CisgICAgICAgIHNlbGYuX19Gb3JfaGVscGVyKCJhc3luYyBmb3IgIiwgdCkKKworICAgIGRlZiBfX0Zvcl9oZWxwZXIoc2VsZiwgZmlsbCwgdCk6CisgICAgICAgIHNlbGYuZmlsbChmaWxsKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQogICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lml0ZXIpCkBAIC0yOTcsNiArMzA4LDEzIEBACiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQogICAgICAgICBzZWxmLmxlYXZlKCkKIAorICAgIGRlZiBfQXN5bmNXaXRoKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmZpbGwoImFzeW5jIHdpdGggIikKKyAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuZGlzcGF0Y2gsIHQuaXRlbXMpCisgICAgICAgIHNlbGYuZW50ZXIoKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKKyAgICAgICAgc2VsZi5sZWF2ZSgpCisKICAgICAjIGV4cHIKICAgICBkZWYgX0J5dGVzKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodC5zKSkKQEAgLTQwMSw3ICs0MTksNyBAQAogICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3BlcmFuZCkKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKLSAgICBiaW5vcCA9IHsgIkFkZCI6IisiLCAiU3ViIjoiLSIsICJNdWx0IjoiKiIsICJEaXYiOiIvIiwgIk1vZCI6IiUiLAorICAgIGJpbm9wID0geyAiQWRkIjoiKyIsICJTdWIiOiItIiwgIk11bHQiOiIqIiwgIk1hdE11bHQiOiJAIiwgIkRpdiI6Ii8iLCAiTW9kIjoiJSIsCiAgICAgICAgICAgICAgICAgICAgICJMU2hpZnQiOiI8PCIsICJSU2hpZnQiOiI+PiIsICJCaXRPciI6InwiLCAiQml0WG9yIjoiXiIsICJCaXRBbmQiOiImIiwKICAgICAgICAgICAgICAgICAgICAgIkZsb29yRGl2IjoiLy8iLCAiUG93IjogIioqIn0KICAgICBkZWYgX0Jpbk9wKHNlbGYsIHQpOgpAQCAtNDUwLDE2ICs0NjgsNiBAQAogICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKICAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChlKQotICAgICAgICBpZiB0LnN0YXJhcmdzOgotICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi53cml0ZSgiKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuc3RhcmFyZ3MpCi0gICAgICAgIGlmIHQua3dhcmdzOgotICAgICAgICAgICAgaWYgY29tbWE6IHNlbGYud3JpdGUoIiwgIikKLSAgICAgICAgICAgIGVsc2U6IGNvbW1hID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi53cml0ZSgiKioiKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lmt3YXJncykKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKICAgICBkZWYgX1N1YnNjcmlwdChzZWxmLCB0KToKQEAgLTU0Myw4ICs1NTEsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmcuYW5ub3RhdGlvbikKIAogICAgIGRlZiBfa2V5d29yZChzZWxmLCB0KToKLSAgICAgICAgc2VsZi53cml0ZSh0LmFyZykKLSAgICAgICAgc2VsZi53cml0ZSgiPSIpCisgICAgICAgIGlmIHQuYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKHQuYXJnKQorICAgICAgICAgICAgc2VsZi53cml0ZSgiPSIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKIAogICAgIGRlZiBfTGFtYmRhKHNlbGYsIHQpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9SRUFETUUgYi9Ub29scy9weWJlbmNoL1JFQURNRQppbmRleCBlNTllNmMwLi40MGY3ZWVjIDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL1JFQURNRQorKysgYi9Ub29scy9weWJlbmNoL1JFQURNRQpAQCAtNCw3ICs0LDcgQEAKIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwogCiAgICAgIEV4dGVuZGFibGUgc3VpdGUgb2YgbG93LWxldmVsIGJlbmNobWFya3MgZm9yIG1lYXN1cmluZwotICAgICAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIAorICAgICAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgIChpbnRlcnByZXRlciwgY29tcGlsZXIgb3IgVk0pLgogCiBweWJlbmNoIGlzIGEgY29sbGVjdGlvbiBvZiB0ZXN0cyB0aGF0IHByb3ZpZGVzIGEgc3RhbmRhcmRpemVkIHdheSB0bwpAQCAtMzQsMTEgKzM0LDExIEBACiAKIEl0IGlzIHVzdWFsbHkgYSBnb29kIGlkZWEgdG8gcnVuIHB5YmVuY2gucHkgbXVsdGlwbGUgdGltZXMgdG8gc2VlCiB3aGV0aGVyIHRoZSBlbnZpcm9ubWVudCwgdGltZXJzIGFuZCBiZW5jaG1hcmsgcnVuLXRpbWVzIGFyZSBzdWl0YWJsZQotZm9yIGRvaW5nIGJlbmNobWFyayB0ZXN0cy4gCitmb3IgZG9pbmcgYmVuY2htYXJrIHRlc3RzLgogCiBZb3UgY2FuIHVzZSB0aGUgY29tcGFyaXNvbiBmZWF0dXJlIG9mIHB5YmVuY2gucHkgKCdweWJlbmNoLnB5IC1jCiA8ZmlsZT4nKSB0byBjaGVjayBob3cgd2VsbCB0aGUgc3lzdGVtIGJlaGF2ZXMgaW4gY29tcGFyaXNvbiB0byBhCi1yZWZlcmVuY2UgcnVuLiAKK3JlZmVyZW5jZSBydW4uCiAKIElmIHRoZSBkaWZmZXJlbmNlcyBhcmUgd2VsbCBiZWxvdyAxMCUgZm9yIGVhY2ggdGVzdCwgdGhlbiB5b3UgaGF2ZSBhCiBzeXN0ZW0gdGhhdCBpcyBnb29kIGZvciBkb2luZyBiZW5jaG1hcmsgdGVzdGluZ3MuICBPZiB5b3UgZ2V0IHJhbmRvbQpAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgIyBmb3IgY29tcGFyaXNvbnMgb2YgYmVuY2htYXJrIHJ1bnMgLSB0ZXN0cyB3aXRoIHVuZXF1YWwgdmVyc2lvbgogICAgICMgbnVtYmVyIHdpbGwgbm90IGdldCBjb21wYXJlZC4KICAgICB2ZXJzaW9uID0gMS4wCi0gICAgCisKICAgICAjIFRoZSBudW1iZXIgb2YgYWJzdHJhY3Qgb3BlcmF0aW9ucyBkb25lIGluIGVhY2ggcm91bmQgb2YgdGhlCiAgICAgIyB0ZXN0LiBBbiBvcGVyYXRpb24gaXMgdGhlIGJhc2ljIHVuaXQgb2Ygd2hhdCB5b3Ugd2FudCB0bwogICAgICMgbWVhc3VyZS4gVGhlIGJlbmNobWFyayB3aWxsIG91dHB1dCB0aGUgYW1vdW50IG9mIHJ1bi10aW1lIHBlcgpAQCAtMjY0LDcgKzI2NCw3IEBACiAKICAgICAgICAgICAgICMgUmVwZWF0IHRoZSBvcGVyYXRpb25zIHBlciByb3VuZCB0byByYWlzZSB0aGUgcnVuLXRpbWUKICAgICAgICAgICAgICMgcGVyIG9wZXJhdGlvbiBzaWduaWZpY2FudGx5IGFib3ZlIHRoZSBub2lzZSBsZXZlbCBvZiB0aGUKLSAgICAgICAgICAgICMgZm9yLWxvb3Agb3ZlcmhlYWQuIAorICAgICAgICAgICAgIyBmb3ItbG9vcCBvdmVyaGVhZC4KIAogCSAgICAjIEV4ZWN1dGUgMjAgb3BlcmF0aW9ucyAoYSArPSAxKToKICAgICAgICAgICAgIGEgKz0gMQpAQCAtMzU4LDggKzM1OCw4IEBACiAgICAgICAgIC0gY2hhbmdlZCB0aGUgb3V0cHV0IGZvcm1hdCBhIGJpdCB0byBtYWtlIGl0IGxvb2sKICAgICAgICAgICBuaWNlcgogICAgICAgICAtIHJlZmFjdG9yZWQgdGhlIEFQSXMgc29tZXdoYXQKLSAgMS4zKzogU3RldmUgSG9sZGVuIGFkZGVkIHRoZSBOZXdJbnN0YW5jZXMgdGVzdCBhbmQgdGhlIGZpbHRlcmluZyAKLSAgICAgICBvcHRpb24gZHVyaW5nIHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50OyB0aGlzIGFsc28gdHJpZ2dlcmVkIGEgbG9uZyAKKyAgMS4zKzogU3RldmUgSG9sZGVuIGFkZGVkIHRoZSBOZXdJbnN0YW5jZXMgdGVzdCBhbmQgdGhlIGZpbHRlcmluZworICAgICAgIG9wdGlvbiBkdXJpbmcgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQ7IHRoaXMgYWxzbyB0cmlnZ2VyZWQgYSBsb25nCiAgICAgICAgZGlzY3Vzc2lvbiBvbiBob3cgdG8gaW1wcm92ZSBiZW5jaG1hcmsgdGltaW5nIGFuZCBmaW5hbGx5CiAgICAgICAgcmVzdWx0ZWQgaW4gdGhlIHJlbGVhc2Ugb2YgMi4wCiAgIDEuMzogaW5pdGlhbCBjaGVja2luIGludG8gdGhlIFB5dGhvbiBTVk4gcmVwb3NpdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHluY2hlL1JFQURNRSBiL1Rvb2xzL3B5bmNoZS9SRUFETUUKaW5kZXggZDIwZWZjMy4uZTAyNjE1OSAxMDA2NDQKLS0tIGEvVG9vbHMvcHluY2hlL1JFQURNRQorKysgYi9Ub29scy9weW5jaGUvUkVBRE1FCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAtLWluaXRmaWxlIGZpbGUKICAgICAtaSBmaWxlCi0gICAgICAgIEFsdGVybmF0ZSBsb2NhdGlvbiBvZiB0aGUgcGVyc2lzdGVudCBpbml0aWFsaXphdGlvbiBmaWxlLiAgU2VlIAorICAgICAgICBBbHRlcm5hdGUgbG9jYXRpb24gb2YgdGhlIHBlcnNpc3RlbnQgaW5pdGlhbGl6YXRpb24gZmlsZS4gIFNlZQogICAgICAgICB0aGUgc2VjdGlvbiBvbiBQZXJzaXN0ZW5jeSBiZWxvdy4KIAogICAgIC0taWdub3JlCkBAIC04MCw3ICs4MCw3IEBACiAKICAgICAgICAgcHlDb2xvckNob29zZXIuYXNrY29sb3IoKQogCi0gICAgd2hpY2ggd2lsbCBwb3B1cCBQeW5jaGUgYXMgYSBtb2RhbCBkaWFsb2csIGFuZCByZXR1cm4gdGhlIHNlbGVjdGVkIAorICAgIHdoaWNoIHdpbGwgcG9wdXAgUHluY2hlIGFzIGEgbW9kYWwgZGlhbG9nLCBhbmQgcmV0dXJuIHRoZSBzZWxlY3RlZAogICAgIGNvbG9yLgogCiAgICAgVGhlcmUgYXJlIHNvbWUgVUkgZGlmZmVyZW5jZXMgd2hlbiBydW5uaW5nIGFzIGEgbW9kYWwKQEAgLTEwNiw3ICsxMDYsNyBAQAogCiAgICAgICAgIG1hc3RlclsqXQogICAgICAgICAgICAgdGhlIG1hc3RlciB3aW5kb3cgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgdGhlIG1vZGFsCi0gICAgICAgICAgICBkaWFsb2cuICBXaXRob3V0IHRoaXMgYXJndW1lbnQsIHB5Q29sb3JDaG9vc2VyIHdpbGwgY3JlYXRlIAorICAgICAgICAgICAgZGlhbG9nLiAgV2l0aG91dCB0aGlzIGFyZ3VtZW50LCBweUNvbG9yQ2hvb3NlciB3aWxsIGNyZWF0ZQogICAgICAgICAgICAgaXRzIG93biBUa2ludGVyLlRrIGluc3RhbmNlIGFzIHRoZSBtYXN0ZXIuICBUaGlzIG1heSBub3QKICAgICAgICAgICAgIGJlIHdoYXQgeW91IHdhbnQuCiAKQEAgLTE3MCw3ICsxNzAsNyBAQAogICAgIFNlbGVjdGVkIGNoaXAgY29sb3IgZXhhY3RseSBtYXRjaGVzIHRoZSBOZWFyZXN0IGNoaXAgY29sb3IsIHlvdQogICAgIHdpbGwgc2VlIHRoZSBjb2xvciBuYW1lIGFwcGVhciBiZWxvdyB0aGUgY29sb3Igc3BlY2lmaWNhdGlvbiBmb3IKICAgICB0aGUgU2VsZWN0ZWQgY2hpcC4KLSAgICAKKwogICAgIENsaWNraW5nIG9uIHRoZSBOZWFyZXN0IGNvbG9yIGNoaXAgc2VsZWN0cyB0aGF0IGNvbG9yLiAgQ29sb3IKICAgICBkaXN0YW5jZSBpcyBjYWxjdWxhdGVkIGluIHRoZSAzRCBzcGFjZSBvZiB0aGUgUkdCIGNvbG9yIHNvbGlkIGFuZAogICAgIGlmIG1vcmUgdGhhbiBvbmUgY29sb3IgbmFtZSBpcyB0aGUgc2FtZSBkaXN0YW5jZSBmcm9tIHRoZSBzZWxlY3RlZApAQCAtMzYxLDcgKzM2MSw3IEBACiAgICAgZm9ybWF0IGZvciBib3RoIHZhbHVlcyBhbmQgbmFtZXMKIAogICAgIHdlYmNvbG9ycy50eHQgLS0gVGhlIDE0MCBjb2xvciBuYW1lcyB0aGF0IFRpbSBQZXRlcnMgYW5kIGhpcwotICAgIHNpc3RlciBzYXkgTlMgYW5kIE1TSUUgYm90aCB1bmRlcnN0YW5kICh3aXRoIHNvbWUgY29udHJvdmVyc3kgb3ZlciAKKyAgICBzaXN0ZXIgc2F5IE5TIGFuZCBNU0lFIGJvdGggdW5kZXJzdGFuZCAod2l0aCBzb21lIGNvbnRyb3ZlcnN5IG92ZXIKICAgICBBbGljZUJsdWUpLgogCiAgICAgbmFtZWRjb2xvcnMudHh0IC0tIGFuIGFsdGVybmF0aXZlIHNldCBvZiBOZXRzY2FwZSBjb2xvcnMuCkBAIC0zNjksOCArMzY5LDggQEAKICAgICBZb3UgY2FuIHN3aXRjaCBiZXR3ZWVuIGZpbGVzIGJ5IGNob29zaW5nICJMb2FkIHBhbGV0dGUuLi4iIGZyb20KICAgICB0aGUgIkZpbGUiIG1lbnUuICBUaGlzIGJyaW5ncyB1cCBhIHN0YW5kYXJkIFRrIGZpbGUgZGlhbG9nLgogICAgIENob29zZSB0aGUgZmlsZSB5b3Ugd2FudCBhbmQgdGhlbiBjbGljayAiT2siLiAgSWYgUHluY2hlCi0gICAgdW5kZXJzdGFuZHMgdGhlIGZvcm1hdCBpbiB0aGlzIGZpbGUsIGl0IHdpbGwgbG9hZCB0aGUgZGF0YWJhc2UgYW5kIAotICAgIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgd2luZG93cy4gIElmIG5vdCwgaXQgd2lsbCBicmluZyB1cCBhbiBlcnJvciAKKyAgICB1bmRlcnN0YW5kcyB0aGUgZm9ybWF0IGluIHRoaXMgZmlsZSwgaXQgd2lsbCBsb2FkIHRoZSBkYXRhYmFzZSBhbmQKKyAgICB1cGRhdGUgdGhlIGFwcHJvcHJpYXRlIHdpbmRvd3MuICBJZiBub3QsIGl0IHdpbGwgYnJpbmcgdXAgYW4gZXJyb3IKICAgICBkaWFsb2cuCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDhiZTUyN2YuLjk3MjBhNDMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTgsNyArOCw3IEBACiAKICIiIgogCi1pbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgb3B0cGFyc2UKK2ltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBhcmdwYXJzZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIGRlZiBmaWxlX210aW1lKHBhdGgpOgpAQCAtMTgsMjMgKzE4LDI1IEBACiAKIGRlZiBtYWluKCk6CiAKLSAgICB1c2FnZSA9ICJ1c2FnZTogJXByb2cgW29wdGlvbnNdIGZyb21maWxlIHRvZmlsZSIKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2UpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1jIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBhIGNvbnRleHQgZm9ybWF0IGRpZmYgKGRlZmF1bHQpJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9kdWNlIGEgdW5pZmllZCBmb3JtYXQgZGlmZicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1tIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBIVE1MIHNpZGUgYnkgc2lkZSBkaWZmIChjYW4gdXNlIC1jIGFuZCAtbCBpbiBjb25qdW5jdGlvbiknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1Byb2R1Y2UgYSBuZGlmZiBmb3JtYXQgZGlmZicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1sIiwgIi0tbGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCi0gICAgKG9wdGlvbnMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgaWYgbGVuKGFyZ3MpID09IDA6Ci0gICAgICAgIHBhcnNlci5wcmludF9oZWxwKCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBpZiBsZW4oYXJncykgIT0gMjoKLSAgICAgICAgcGFyc2VyLmVycm9yKCJuZWVkIHRvIHNwZWNpZnkgYm90aCBhIGZyb21maWxlIGFuZCB0b2ZpbGUiKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgY29udGV4dCBmb3JtYXQgZGlmZiAoZGVmYXVsdCknKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy11JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSB1bmlmaWVkIGZvcm1hdCBkaWZmJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIEhUTUwgc2lkZSBieSBzaWRlIGRpZmYgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGNhbiB1c2UgLWMgYW5kIC1sIGluIGNvbmp1bmN0aW9uKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIG5kaWZmIGZvcm1hdCBkaWZmJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbCcsICctLWxpbmVzJywgdHlwZT1pbnQsIGRlZmF1bHQ9MywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NldCBudW1iZXIgb2YgY29udGV4dCBsaW5lcyAoZGVmYXVsdCAzKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZnJvbWZpbGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3RvZmlsZScpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIG4gPSBvcHRpb25zLmxpbmVzCi0gICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MKKyAgICBmcm9tZmlsZSA9IG9wdGlvbnMuZnJvbWZpbGUKKyAgICB0b2ZpbGUgPSBvcHRpb25zLnRvZmlsZQogCiAgICAgZnJvbWRhdGUgPSBmaWxlX210aW1lKGZyb21maWxlKQogICAgIHRvZGF0ZSA9IGZpbGVfbXRpbWUodG9maWxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jIGIvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jCmluZGV4IDJhMDk0MjYuLjk3YmQyZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZHV0cmVlLmRvYworKysgYi9Ub29scy9zY3JpcHRzL2R1dHJlZS5kb2MKQEAgLTM0LDEzICszNCwxMyBAQAogOiAgICAgIHwgICAgICAgMSBzbS5iYWsKIAogQXQgZmlyc3QgSSB0aG91Z2h0IEkgY291bGQganVzdCBrZWVwIG9uZSBsb2NhbCBsaXN0IGFyb3VuZAotYXQgb25jZSwgYnV0IHRoaXMgc2VlbXMgaW5oZXJlbnRseSByZWN1cnNpdmUuICBXaGljaCBtZWFucyAKK2F0IG9uY2UsIGJ1dCB0aGlzIHNlZW1zIGluaGVyZW50bHkgcmVjdXJzaXZlLiAgV2hpY2ggbWVhbnMKIEkgbmVlZCBhbiByZWFsIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZS4gIE1heWJlIHlvdSBjb3VsZAogZG8gaXQgd2l0aCBvbmUgb2YgdGhlICVhc3NvYyBhcnJheXMgTGFycnkgdXNlcyBpbiB0aGUgYmVnYXQKIHByb2dyYW1zLCBidXQgSSBicm9rZSBkb3duIGFuZCBnb3QgZGlydHkuICBJIHRoaW5rIHRoZSBoYXJkZXN0Ci1wYXJ0IHdhcyBtYXRjaGluZyBGZWxpeCdzIGRlc2lyZWQgb3V0cHV0IGV4YWN0bHkuICBJdCdzIG5vdCAKK3BhcnQgd2FzIG1hdGNoaW5nIEZlbGl4J3MgZGVzaXJlZCBvdXRwdXQgZXhhY3RseS4gIEl0J3Mgbm90CiBibGF6aW5nbHkgZmFzdDogSSBzaG91bGQgcHJvYmFibHkgaW5saW5lIHRoZSAmY2hpbGRvZiByb3V0aW5lLAotYnV0IGl0ICp3YXMqIGZhc3RlciB0byB3cml0ZSB0aGFuIEkgY291bGQgaGF2ZSB3cml0dGVuIHRoZSAKK2J1dCBpdCAqd2FzKiBmYXN0ZXIgdG8gd3JpdGUgdGhhbiBJIGNvdWxkIGhhdmUgd3JpdHRlbiB0aGUKIGVxdWl2YWxlbnQgQyBwcm9ncmFtLgogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZXB0YWdzLnB5IGIvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKaW5kZXggNjcxZmYxMS4uNDAxYWM3ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAiIiJBcHBlbmQgdGFncyBmb3VuZCBpbiBmaWxlIG5hbWVkICdmaWxlbmFtZScgdG8gdGhlIG9wZW4gZmlsZSAnb3V0ZnAnIiIiCiAgICAgdHJ5OgogICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICdyJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0Nhbm5vdCBvcGVuICVzXG4nJWZpbGVuYW1lKQogICAgICAgICByZXR1cm4KICAgICBjaGFybm8gPSAwCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkgYi9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkKaW5kZXggMTE3MTE0Ni4uYjI4NDJhNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbmxpbWl0LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weQpAQCAtOTIsNyArOTIsNyBAQAogZGVmIHRlc3RfY29tcGlsZXJfcmVjdXJzaW9uKCk6CiAgICAgIyBUaGUgY29tcGlsZXIgdXNlcyBhIHNjYWxpbmcgZmFjdG9yIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBsZXZlbHMKICAgICAjIG9mIHJlY3Vyc2lvbi4gVGhpcyBpcyBhIHNhbml0eSBjaGVjayBvZiB0aGF0IHNjYWxpbmcgdG8gZW5zdXJlCi0gICAgIyBpdCBzdGlsbCByYWlzZXMgUnVudGltZUVycm9yIGV2ZW4gYXQgaGlnaGVyIHJlY3Vyc2lvbiBsaW1pdHMKKyAgICAjIGl0IHN0aWxsIHJhaXNlcyBSZWN1cnNpb25FcnJvciBldmVuIGF0IGhpZ2hlciByZWN1cnNpb24gbGltaXRzCiAgICAgY29tcGlsZSgiKCkiICogKDEwICogc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkpLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKIAogZGVmIGNoZWNrX2xpbWl0KG4sIHRlc3RfZnVuY19uYW1lKToKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICMgQXR0cmlidXRlRXJyb3IgY2FuIGJlIHJhaXNlZCBiZWNhdXNlIG9mIHRoZSB3YXkgZS5nLiBQeURpY3RfR2V0SXRlbSgpCiAgICAgIyBzaWxlbmNlcyBhbGwgZXhjZXB0aW9ucyBhbmQgcmV0dXJucyBOVUxMLCB3aGljaCBpcyB1c3VhbGx5IGludGVycHJldGVkCiAgICAgIyBhcyAibWlzc2luZyBhdHRyaWJ1dGUiLgotICAgIGV4Y2VwdCAoUnVudGltZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgZXhjZXB0IChSZWN1cnNpb25FcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgcHJpbnQoIllpa2VzISIpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjJmOWE1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpAQCAtMCwwICsxLDU0IEBACisjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgb3Bjb2RlLmggaGVhZGVyIGZpbGUuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKworaW1wb3J0IHN5cworaGVhZGVyID0gIiIiLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLworI2lmbmRlZiBQeV9PUENPREVfSAorI2RlZmluZSBQeV9PUENPREVfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKiBJbnN0cnVjdGlvbiBvcGNvZGVzIGZvciBjb21waWxlZCBjb2RlICovCisiIiIKKworZm9vdGVyID0gIiIiCisvKiBFWENFUFRfSEFORExFUiBpcyBhIHNwZWNpYWwsIGltcGxpY2l0IGJsb2NrIHR5cGUgd2hpY2ggaXMgY3JlYXRlZCB3aGVuCisgICBlbnRlcmluZyBhbiBleGNlcHQgaGFuZGxlci4gSXQgaXMgbm90IGFuIG9wY29kZSBidXQgd2UgZGVmaW5lIGl0IGhlcmUKKyAgIGFzIHdlIHdhbnQgaXQgdG8gYmUgYXZhaWxhYmxlIHRvIGJvdGggZnJhbWVvYmplY3QuYyBhbmQgY2V2YWwuYywgd2hpbGUKKyAgIHJlbWFpbmluZyBwcml2YXRlLiovCisjZGVmaW5lIEVYQ0VQVF9IQU5ETEVSIDI1NworCisKK2VudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwKKyAgICAgICAgICAgICAgICBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sCisgICAgICAgICAgICAgICAgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OworCisjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09QQ09ERV9IICovCisiIiIKKworCitkZWYgbWFpbihvcGNvZGVfcHksIG91dGZpbGU9J0luY2x1ZGUvb3Bjb2RlLmgnKToKKyAgICBvcGNvZGUgPSB7fQorICAgIGV4ZWMob3BlbihvcGNvZGVfcHkpLnJlYWQoKSwgb3Bjb2RlKQorICAgIG9wbWFwID0gb3Bjb2RlWydvcG1hcCddCisgICAgd2l0aCBvcGVuKG91dGZpbGUsICd3JykgYXMgZm9iajoKKyAgICAgICAgZm9iai53cml0ZShoZWFkZXIpCisgICAgICAgIGZvciBuYW1lIGluIG9wY29kZVsnb3BuYW1lJ106CisgICAgICAgICAgICBpZiBuYW1lIGluIG9wbWFwOgorICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoIiNkZWZpbmUgJS0yM3MgJTNzXG4iICUgKG5hbWUsIG9wbWFwW25hbWVdKSkKKyAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1BPUF9FWENFUFQnOiAjIFNwZWNpYWwgZW50cnkgZm9yIEhBVkVfQVJHVU1FTlQKKyAgICAgICAgICAgICAgICBmb2JqLndyaXRlKCIjZGVmaW5lICUtMjNzICUzZFxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdIQVZFX0FSR1VNRU5UJywgb3Bjb2RlWydIQVZFX0FSR1VNRU5UJ10pKQorICAgICAgICBmb2JqLndyaXRlKGZvb3RlcikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oc3lzLmFyZ3ZbMV0sIHN5cy5hcmd2WzJdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQppbmRleCBhNmM1ZGEzLi5iNTgyZTEzIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorKysgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQpAQCAtMzMsOCArMzMsNiBAQAogICAgICMgQWxsb3cgdXNlci1zcGVjaWZpZWQgaW50ZXJwcmV0ZXIgb3B0aW9ucyB0byBvdmVycmlkZSBvdXIgZGVmYXVsdHMuCiAgICAgYXJncy5leHRlbmQodGVzdC5zdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQogCi0gICAgIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMjAzNTUKLSAgICBvcy5lbnZpcm9uLnBvcCgiUFlUSE9OV0FSTklOR1MiLCBOb25lKQogICAgICMgV29ya2Fyb3VuZCBmb3IgaXNzdWUgIzIwMzYxCiAgICAgYXJncy5leHRlbmQoWyctVycsICdlcnJvcjo6Qnl0ZXNXYXJuaW5nJ10pCiAKQEAgLTUwLDcgKzQ4LDExIEBACiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLXUnLCAnYWxsLC1sYXJnZWZpbGUsLWF1ZGlvLC1ndWknXSkKICAgICBhcmdzLmV4dGVuZChyZWdydGVzdF9hcmdzKQogICAgIHByaW50KCcgJy5qb2luKGFyZ3MpKQotICAgIG9zLmV4ZWN2KHN5cy5leGVjdXRhYmxlLCBhcmdzKQorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGNhbGwKKyAgICAgICAgc3lzLmV4aXQoY2FsbChhcmdzKSkKKyAgICBlbHNlOgorICAgICAgICBvcy5leGVjdihzeXMuZXhlY3V0YWJsZSwgYXJncykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy93aW5fYWRkMnBhdGgucHkgYi9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQppbmRleCBjODViZWE1Li4xYzlhZWRjIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQorKysgYi9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weQpAQCAtMjIsNyArMjIsOCBAQAogICAgIHNjcmlwdHMgPSBvcy5wYXRoLmpvaW4ocHl0aG9ucGF0aCwgIlNjcmlwdHMiKQogICAgIGFwcGRhdGEgPSBvcy5lbnZpcm9uWyJBUFBEQVRBIl0KICAgICBpZiBoYXNhdHRyKHNpdGUsICJVU0VSX1NJVEUiKToKLSAgICAgICAgdXNlcnBhdGggPSBzaXRlLlVTRVJfU0lURS5yZXBsYWNlKGFwcGRhdGEsICIlQVBQREFUQSUiKQorICAgICAgICB1c2Vyc2l0ZSA9IHNpdGUuVVNFUl9TSVRFLnJlcGxhY2UoYXBwZGF0YSwgIiVBUFBEQVRBJSIpCisgICAgICAgIHVzZXJwYXRoID0gb3MucGF0aC5kaXJuYW1lKHVzZXJzaXRlKQogICAgICAgICB1c2Vyc2NyaXB0cyA9IG9zLnBhdGguam9pbih1c2VycGF0aCwgIlNjcmlwdHMiKQogICAgIGVsc2U6CiAgICAgICAgIHVzZXJzY3JpcHRzID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL3NzbHNwZWVkLnZjeHByb2ogYi9Ub29scy9zc2wvc3Nsc3BlZWQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM0MTA2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3NsL3NzbHNwZWVkLnZjeHByb2oKQEAgLTAsMCArMSw3MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGMDY4QkNDRi1DMEQ2LTQ3OEQtQTJDNS0yNkJBMzIzN0M5OTJ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zc2xzcGVlZDwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXG9wZW5zc2wucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPE9yaWdpbmFsT3V0RGlyPiQoT3V0RGlyKTwvT3JpZ2luYWxPdXREaXI+CisgICAgPE91dERpcj4kKE1TQnVpbGRQcm9qZWN0RGlyZWN0b3J5KVwkKEFyY2hOYW1lKVw8L091dERpcj4KKyAgICA8SW50RGlyPiQoTVNCdWlsZFByb2plY3REaXJlY3RvcnkpXCQoQXJjaE5hbWUpXG9ialw8L0ludERpcj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilhcHBzXHNwZWVkLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpYXBwc1xhcHBzLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xJbmNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliO2NyeXB0MzIubGliO2xpYmVheSQoUHlEZWJ1Z0V4dCkubGliO3NzbGVheSQoUHlEZWJ1Z0V4dCkubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4kKE9yaWdpbmFsT3V0RGlyKTslKEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisKKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlwuLlxQQ0J1aWxkXHNzbGVheS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMDYxNWIyNC03M2JmLTRlZmEtOTNhYS0yMzY5MTYzMjEzMTd9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iLi5cLi5cUENCdWlsZFxsaWJlYXkudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDk4YjM5NzUuLjRjMjE0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgICAgIHJldHVybiAnTm9uZScKICAgICB0cnk6CiAgICAgICAgIGxlbih0KQotICAgIGV4Y2VwdDoKKyAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICByZXR1cm4gJzB4JTAqWCcgJSAocHJlY2lzaW9uLCB0KQogICAgIHRyeToKICAgICAgICAgcmV0dXJuICcoJyArICcsICcuam9pbihbJzB4JTAqWCcgJSAocHJlY2lzaW9uLCBpdGVtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCA3NjM2YTk1Li43MTNlMTc1IDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtNDIsNyArNDIsNyBAQAogIyAgICogRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0LCBhbmQKICMgICAqIERvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAogIyAgICogRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCAodHdvIG9jY3VycmVuY2VzKQotVU5JREFUQV9WRVJTSU9OID0gIjYuMy4wIgorVU5JREFUQV9WRVJTSU9OID0gIjguMC4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCkBAIC05OSwxMCArOTksMTEgQEAKICMgdGhlc2UgcmFuZ2VzIG5lZWQgdG8gbWF0Y2ggdW5pY29kZWRhdGEuYzppc191bmlmaWVkX2lkZW9ncmFwaAogY2prX3JhbmdlcyA9IFsKICAgICAoJzM0MDAnLCAnNERCNScpLAotICAgICgnNEUwMCcsICc5RkNDJyksCisgICAgKCc0RTAwJywgJzlGRDUnKSwKICAgICAoJzIwMDAwJywgJzJBNkQ2JyksCiAgICAgKCcyQTcwMCcsICcyQjczNCcpLAotICAgICgnMkI3NDAnLCAnMkI4MUQnKQorICAgICgnMkI3NDAnLCAnMkI4MUQnKSwKKyAgICAoJzJCODIwJywgJzJDRUExJyksCiBdCiAKIGRlZiBtYWtldGFibGVzKHRyYWNlPTApOgpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pdHRlc3RndWkvUkVBRE1FLnR4dCBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL1JFQURNRS50eHQKaW5kZXggNGQ4MDlkZi4uMGE0NzdlMSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pdHRlc3RndWkvUkVBRE1FLnR4dAorKysgYi9Ub29scy91bml0dGVzdGd1aS9SRUFETUUudHh0CkBAIC0xLDUgKzEsNSBAQAotdW5pdHRlc3RndWkucHkgaXMgR1VJIGZyYW1ld29yayBhbmQgYXBwbGljYXRpb24gZm9yIHVzZSB3aXRoIFB5dGhvbiB1bml0IAotdGVzdGluZyBmcmFtZXdvcmsuIEl0IGV4ZWN1dGVzIHRlc3RzIHdyaXR0ZW4gdXNpbmcgdGhlIGZyYW1ld29yayBwcm92aWRlZCAKK3VuaXR0ZXN0Z3VpLnB5IGlzIEdVSSBmcmFtZXdvcmsgYW5kIGFwcGxpY2F0aW9uIGZvciB1c2Ugd2l0aCBQeXRob24gdW5pdAordGVzdGluZyBmcmFtZXdvcmsuIEl0IGV4ZWN1dGVzIHRlc3RzIHdyaXR0ZW4gdXNpbmcgdGhlIGZyYW1ld29yayBwcm92aWRlZAogYnkgdGhlICd1bml0dGVzdCcgbW9kdWxlLgogCiBCYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnkgU3RldmUgUHVyY2VsbCwgZnJvbToKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA3YjkxZjkxLi4wNmI0ZDU4IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjQuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNS4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU4MCw4ICs1ODAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjQnCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNCcKK1BBQ0tBR0VfVkVSU0lPTj0nMy41JworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjUnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02NjcsMTIgKzY2NywxOSBAQAogQ0ZMQUdTX05PRElTVAogQkFTRUNGTEFHUwogT1BUCitMTFZNX1BST0ZfRk9VTkQKK0xMVk1fUFJPRl9FUlIKK0xMVk1fUFJPRl9GSUxFCitMTFZNX1BST0ZfTUVSR0VSCitQR09fUFJPRl9VU0VfRkxBRworUEdPX1BST0ZfR0VOX0ZMQUcKIEFCSUZMQUdTCiBMTgogTUtESVJfUAogSU5TVEFMTF9EQVRBCiBJTlNUQUxMX1NDUklQVAogSU5TVEFMTF9QUk9HUkFNCitPUENPREVIR0VOCiBQWVRIT04KIEFTRExHRU4KIGFjX2N0X1JFQURFTEYKQEAgLTY5MywxNSArNzAwLDE3IEBACiBETExMSUJSQVJZCiBMRExJQlJBUlkKIExJQlJBUlkKLU1VTFRJQVJDSAogQlVJTERFWEVFWFQKIEVHUkVQCi1HUkVQCi1DUFAKIE5PX0FTX05FRURFRAorUExBVEZPUk1fVFJJUExFVAorUExBVERJUgorTVVMVElBUkNICiBhY19jdF9DWFgKIE1BSU5DQwogQ1hYCitHUkVQCitDUFAKIE9CSkVYVAogRVhFRVhUCiBhY19jdF9DQwpAQCAtNzExLDcgKzcyMCw2IEBACiBDQwogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotUExBVERJUgogU0dJX0FCSQogX1BZVEhPTl9IT1NUX1BMQVRGT1JNCiBNQUNIREVQCkBAIC03OTksNiArODA3LDcgQEAKIGVuYWJsZV9wcm9maWxpbmcKIHdpdGhfcHlkZWJ1Zwogd2l0aF9oYXNoX2FsZ29yaXRobQord2l0aF9hZGRyZXNzX3Nhbml0aXplcgogd2l0aF9saWJzCiB3aXRoX3N5c3RlbV9leHBhdAogd2l0aF9zeXN0ZW1fZmZpCkBAIC0xMzc1LDcgKzEzODQsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjQgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDQwLDcgKzE0NDksNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjQ6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy41OiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE0NzgsNiArMTQ4Nyw4IEBACiAgIC0td2l0aC1weWRlYnVnICAgICAgICAgIGJ1aWxkIHdpdGggUHlfREVCVUcgZGVmaW5lZAogICAtLXdpdGgtaGFzaC1hbGdvcml0aG09W2ZudnxzaXBoYXNoMjRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdCBoYXNoIGFsZ29yaXRobQorICAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIEFkZHJlc3NTYW5pdGl6ZXIKICAgLS13aXRoLWxpYnM9J2xpYjEgLi4uJyAgbGluayBhZ2FpbnN0IGFkZGl0aW9uYWwgbGlicwogICAtLXdpdGgtc3lzdGVtLWV4cGF0ICAgICBidWlsZCBweWV4cGF0IG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZXhwYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQpAQCAtMTU5Miw3ICsxNjAzLDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1weXRob24gY29uZmlndXJlIDMuNAorcHl0aG9uIGNvbmZpZ3VyZSAzLjUKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OQogCiBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xNjQ0LDYgKzE2NTUsNDMgQEAKIAogfSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUKIAorIyBhY19mbl9jX3RyeV9jcHAgTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIHByZXByb2Nlc3MgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLgorYWNfZm5fY190cnlfY3BwICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSA+IGNvbmZ0ZXN0LmkgJiYgeworCSB0ZXN0IC16ICIkYWNfY19wcmVwcm9jX3dhcm5fZmxhZyRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCisgICAgICAgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisgICAgYWNfcmV0dmFsPTEKK2ZpCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X2NwcAorCiAjIGFjX2ZuX2NfdHJ5X2xpbmsgTElORU5PCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRyeSB0byBsaW5rIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KQEAgLTE2OTAsNDMgKzE3MzgsNiBAQAogCiB9ICMgYWNfZm5fY190cnlfbGluawogCi0jIGFjX2ZuX2NfdHJ5X2NwcCBMSU5FTk8KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBUcnkgdG8gcHJlcHJvY2VzcyBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCi1hY19mbl9jX3RyeV9jcHAgKCkKLXsKLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiB7IHsgYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiCi1jYXNlICIoKCRhY190cnkiIGluCi0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OwotICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKLWVzYWMKLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCi0kYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKLSAgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+Y29uZnRlc3QuZXJyCi0gIGFjX3N0YXR1cz0kPwotICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCi0gICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKLSAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCi0gIGZpCi0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7Ci0JIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8Ci0JIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKLSAgICAgICB9OyB0aGVuIDoKLSAgYWNfcmV0dmFsPTAKLWVsc2UKLSAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0KLSAgICBhY19yZXR2YWw9MQotZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0gIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAotCi19ICMgYWNfZm5fY190cnlfY3BwCi0KICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcKQEAgLTI0MzEsNyArMjQ0Miw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjQsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzAwNCw3ICszMDE1LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNAorVkVSU0lPTj0zLjUKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtMzQ5NCw5ICszNTA1LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFDSERFUCIgPiY1CiAkYXNfZWNobyAiJE1BQ0hERVAiID4mNjsgfQogCi0KLVBMQVRESVI9cGxhdC0kTUFDSERFUAotCiAjIFJlY29yZCB0aGUgY29uZmlndXJlLXRpbWUgdmFsdWUgb2YgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULAogIyBpdCBtYXkgaW5mbHVlbmNlIHRoZSB3YXkgd2UgY2FuIGJ1aWxkIGV4dGVuc2lvbnMsIHNvIGRpc3R1dGlscwogIyBuZWVkcyB0byBjaGVjayBpdApAQCAtNDQwMyw2ICs0NDExLDIwNiBAQAogYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKIAorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3Nvci4uLiAiID4mNjsgfQorIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KK2lmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuCisgIENQUD0KK2ZpCitpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgorICBpZiAke2FjX2N2X3Byb2dfQ1BQKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZAorICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRDQyAtRSAtdHJhZGl0aW9uYWwtY3BwIiAiL2xpYi9jcHAiCisgICAgZG8KKyAgICAgIGFjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKwkJICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorICBicmVhaworZmkKKworICAgIGRvbmUKKyAgICBhY19jdl9wcm9nX0NQUD0kQ1BQCisKK2ZpCisgIENQUD0kYWNfY3ZfcHJvZ19DUFAKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19DUFA9JENQUAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1BQIiA+JjUKKyRhc19lY2hvICIkQ1BQIiA+JjY7IH0KK2FjX3ByZXByb2Nfb2s9ZmFsc2UKK2ZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworZG8KKyAgIyBVc2UgYSBoZWFkZXIgZmlsZSB0aGF0IGNvbWVzIHdpdGggZ2NjLCBzbyBjb25maWd1cmluZyBnbGliYworICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKyAgIyBQcmVmZXIgPGxpbWl0cy5oPiB0byA8YXNzZXJ0Lmg+IGlmIF9fU1REQ19fIGlzIGRlZmluZWQsIHNpbmNlCisgICMgPGxpbWl0cy5oPiBleGlzdHMgZXZlbiBvbiBmcmVlc3RhbmRpbmcgY29tcGlsZXJzLgorICAjIE9uIHRoZSBOZVhULCBjYyAtRSBydW5zIHRoZSBjb2RlIHRocm91Z2ggdGhlIGNvbXBpbGVyJ3MgcGFyc2VyLAorICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJlIHRvIGNhdGNoIHRoaXMgY2FzZS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmZGVmIF9fU1REQ19fCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZW5kaWYKKwkJICAgICBTeW50YXggZXJyb3IKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorY29udGludWUKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKyAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKyAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGFjX25vbmV4aXN0ZW50Lmg+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorY29udGludWUKK2Vsc2UKKyAgIyBQYXNzZXMgYm90aCB0ZXN0cy4KK2FjX3ByZXByb2Nfb2s9OgorYnJlYWsKK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKK2RvbmUKKyMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAoraWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgorCitlbHNlCisgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9HUkVQIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAorY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiCisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9HUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfR1JFUCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfR1JFUCIgPiY2OyB9CisgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKKworCiAKIAogCkBAIC00ODYxLDYgKzUwNjksMTQ1IEBACiBmaQogCiAKK01VTFRJQVJDSD0kKCRDQyAtLXByaW50LW11bHRpYXJjaCAyPi9kZXYvbnVsbCkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCBiYXNlZCBvbiBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0IGJhc2VkIG9uIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4uLiAiID4mNjsgfQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyN1bmRlZiBiZmluCisjdW5kZWYgY3JpcworI3VuZGVmIGZyMzAKKyN1bmRlZiBsaW51eAorI3VuZGVmIGhwcGEKKyN1bmRlZiBocHV4CisjdW5kZWYgaTM4NgorI3VuZGVmIG1pcHMKKyN1bmRlZiBwb3dlcnBjCisjdW5kZWYgc3BhcmMKKyN1bmRlZiB1bml4CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIHg4Nl82NC1saW51eC1nbnV4MzIKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCisjICBpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgYWFyY2g2NF9iZV9pbHAzMi1saW51eC1nbnUKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NF9iZS1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX2FscGhhX18pCisgICAgICAgIGFscGhhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmloZgorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpaGYKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmkKKyMgIGVsc2UKKyAgICAgICAgYXJtZWItbGludXgtZ251ZWFiaQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorICAgICAgICBocHBhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19pYTY0X18pCisgICAgICAgIGlhNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX202OGtfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKyAgICAgICAgbTY4ay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMgorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzLWxpbnV4LWdudQorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSU4zMgorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0LWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19vcjFrX18pCisgICAgICAgIG9yMWstbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgZGVmaW5lZChfX1NQRV9fKQorICAgICAgICBwb3dlcnBjLWxpbnV4LWdudXNwZQorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyMgIGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHBvd2VycGM2NGxlLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBwb3dlcnBjNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgICAgICAgIHMzOTB4LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zMzkwX18pCisgICAgICAgIHMzOTAtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NoX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHNoNC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykgJiYgZGVmaW5lZChfX2FyY2g2NF9fKQorICAgICAgICBzcGFyYzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKQorICAgICAgICBzcGFyYy1saW51eC1nbnUKKyMgZWxzZQorIyAgIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisjIGlmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1rZnJlZWJzZC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWtmcmVlYnNkLWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fZ251X2h1cmRfXykKKyAgICAgICAgaTM4Ni1nbnUKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICBkYXJ3aW4KKyNlbHNlCisjIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorI2VuZGlmCisKK0VPRgorCitpZiAkQ1BQIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBQTEFURk9STV9UUklQTEVUPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCcgfCB0ciAtZCAnIAknYAorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBMQVRGT1JNX1RSSVBMRVQiID4mNQorJGFzX2VjaG8gIiRQTEFURk9STV9UUklQTEVUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUiID4mNQorJGFzX2VjaG8gIm5vbmUiID4mNjsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCIgIiRMSU5FTk8iIDUKKyAgZmkKK2ZpCitQTEFURElSPXBsYXQtJE1BQ0hERVAKKworCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLVdsLC0tbm8tYXMtbmVlZGVkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQuLi4gIiA+JjY7IH0KIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC00ODkzLDIwNiArNTI0MCw2IEBACiAKIAogIyBjaGVja3MgZm9yIFVOSVggdmFyaWFudHMgdGhhdCBzZXQgQyBwcmVwcm9jZXNzb3IgdmFyaWFibGVzCi1hY19leHQ9YwotYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1hY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICIgPiY2OyB9Ci0jIE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5LgotaWYgdGVzdCAtbiAiJENQUCIgJiYgdGVzdCAtZCAiJENQUCI7IHRoZW4KLSAgQ1BQPQotZmkKLWlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCi0gIGlmICR7YWNfY3ZfcHJvZ19DUFArOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgQ1BQIG5lZWRzIHRvIGJlIGV4cGFuZGVkCi0gICAgZm9yIENQUCBpbiAiJENDIC1FIiAiJENDIC1FIC10cmFkaXRpb25hbC1jcHAiICIvbGliL2NwcCIKLSAgICBkbwotICAgICAgYWNfcHJlcHJvY19vaz1mYWxzZQotZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi1kbwotICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCi0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKLSAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCi0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaWZkZWYgX19TVERDX18KLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jZWxzZQotIyBpbmNsdWRlIDxhc3NlcnQuaD4KLSNlbmRpZgotCQkgICAgIFN5bnRheCBlcnJvcgotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQotICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCi1jb250aW51ZQotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6Ci0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi1jb250aW51ZQotZWxzZQotICAjIFBhc3NlcyBib3RoIHRlc3RzLgotYWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotZG9uZQotIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1pZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6Ci0gIGJyZWFrCi1maQotCi0gICAgZG9uZQotICAgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKLQotZmkKLSAgQ1BQPSRhY19jdl9wcm9nX0NQUAotZWxzZQotICBhY19jdl9wcm9nX0NQUD0kQ1BQCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDUFAiID4mNQotJGFzX2VjaG8gIiRDUFAiID4mNjsgfQotYWNfcHJlcHJvY19vaz1mYWxzZQotZm9yIGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCi1kbwotICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3VyaW5nIGdsaWJjCi0gICMgd2l0aCBhIGZyZXNoIGNyb3NzLWNvbXBpbGVyIHdvcmtzLgotICAjIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKLSAgIyA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuCi0gICMgT24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBwYXJzZXIsCi0gICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaWZkZWYgX19TVERDX18KLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0jZWxzZQotIyBpbmNsdWRlIDxhc3NlcnQuaD4KLSNlbmRpZgotCQkgICAgIFN5bnRheCBlcnJvcgotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKLQotZWxzZQotICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCi1jb250aW51ZQotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwotICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8YWNfbm9uZXhpc3RlbnQuaD4KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6Ci0gICMgQnJva2VuOiBzdWNjZXNzIG9uIGludmFsaWQgaW5wdXQuCi1jb250aW51ZQotZWxzZQotICAjIFBhc3NlcyBib3RoIHRlc3RzLgotYWNfcHJlcHJvY19vaz06Ci1icmVhawotZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKLQotZG9uZQotIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci1pZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6Ci0KLWVsc2UKLSAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQotZmkKLQotYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZS4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0dSRVArOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0IC16ICIkR1JFUCI7IHRoZW4KLSAgYWNfcGF0aF9HUkVQX2ZvdW5kPWZhbHNlCi0gICMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluCi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX3Byb2cgaW4gZ3JlcCBnZ3JlcDsgZG8KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgICAgIGFjX3BhdGhfR1JFUD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKLSAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfR1JFUCIgfHwgY29udGludWUKLSMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0dSRVAgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KLSAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0dSRVAKLWNhc2UgYCIkYWNfcGF0aF9HUkVQIiAtLXZlcnNpb24gMj4mMWAgaW4KLSpHTlUqKQotICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiIGFjX3BhdGhfR1JFUF9mb3VuZD06OzsKLSopCi0gIGFjX2NvdW50PTAKLSAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4iY29uZnRlc3QuaW4iCi0gIHdoaWxlIDoKLSAgZG8KLSAgICBjYXQgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgotICAgIG12ICJjb25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKLSAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKLSAgICAkYXNfZWNobyAnR1JFUCcgPj4gImNvbmZ0ZXN0Lm5sIgotICAgICIkYWNfcGF0aF9HUkVQIiAtZSAnR1JFUCQnIC1lICctKGNhbm5vdCBtYXRjaCktJyA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFrCi0gICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhawotICAgIGFzX2ZuX2FyaXRoICRhY19jb3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAotICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfR1JFUF9tYXgtMH07IHRoZW4KLSAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQotICAgICAgYWNfY3ZfcGF0aF9HUkVQPSIkYWNfcGF0aF9HUkVQIgotICAgICAgYWNfcGF0aF9HUkVQX21heD0kYWNfY291bnQKLSAgICBmaQotICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKLSAgZG9uZQotICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKLWVzYWMKLQotICAgICAgJGFjX3BhdGhfR1JFUF9mb3VuZCAmJiBicmVhayAzCi0gICAgZG9uZQotICBkb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLSAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKLSAgZmkKLWVsc2UKLSAgYWNfY3ZfcGF0aF9HUkVQPSRHUkVQCi1maQotCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX0dSRVAiID4mNQotJGFzX2VjaG8gIiRhY19jdl9wYXRoX0dSRVAiID4mNjsgfQotIEdSRVA9IiRhY19jdl9wYXRoX0dSRVAiCi0KIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICIgPiY2OyB9CkBAIC01NDEyLDEwICs1NTU5LDYgQEAKICAgICBlc2FjOzsKIGVzYWMKIAotTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQotCi0KLQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIExJQlJBUlkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgTElCUkFSWS4uLiAiID4mNjsgfQpAQCAtNTY1NCwxMSArNTc5Nyw2IEBACiAJICBMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5zbycKIAkgIEJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKIAkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGAke0xEX0xJQlJBUllfUEFUSDorOiR7TERfTElCUkFSWV9QQVRIfX0KLQkgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLQkgICAgICBGcmVlQlNEKikKLQkJU09WRVJTSU9OPWBlY2hvICRTT1ZFUlNJT058Y3V0IC1kICIuIiAtZiAxYAotCQk7OwotCSAgZXNhYwogCSAgSU5TVFNPTkFNRT0iJExETElCUkFSWSIuJFNPVkVSU0lPTgogCSAgaWYgdGVzdCAiJHdpdGhfcHlkZWJ1ZyIgIT0geWVzCiAgICAgICAgICAgdGhlbgpAQCAtNjA2Niw2ICs2MjA0LDU3IEBACiBmaQogCiAKK2ZvciBhY19wcm9nIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob24KK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19QWVRIT04rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkUFlUSE9OIjsgdGhlbgorICBhY19jdl9wcm9nX1BZVEhPTj0iJFBZVEhPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX1BZVEhPTj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorUFlUSE9OPSRhY19jdl9wcm9nX1BZVEhPTgoraWYgdGVzdCAtbiAiJFBZVEhPTiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQWVRIT04iID4mNQorJGFzX2VjaG8gIiRQWVRIT04iID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkUFlUSE9OIiAmJiBicmVhaworZG9uZQordGVzdCAtbiAiJFBZVEhPTiIgfHwgUFlUSE9OPSJub3QtZm91bmQiCisKK2lmIHRlc3QgIiRQWVRIT04iID0gbm90LWZvdW5kOyB0aGVuCisgICAgT1BDT0RFSEdFTj0iQGVjaG8gcHl0aG9uOiAkUFlUSE9OISBjYW5ub3QgcnVuIFRvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkiCitlbHNlCisgICAgT1BDT0RFSEdFTj0iJFBZVEhPTiIKK2ZpCisKKworCiBjYXNlICRNQUNIREVQIGluCiBic2Rvcyp8aHAqfEhQKikKIAkjIGluc3RhbGwgLWQgZG9lcyBub3Qgd29yayBvbiBCU0RJIG9yIEhQLVVYCkBAIC02MjQ4LDYgKzY0MzcsODAgQEAKIGZpCiAKIAorIyBFbmFibGUgUEdPIGZsYWdzLgorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJsbHZtLXByb2ZkYXRhIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBsbHZtLXByb2ZkYXRhOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19MTFZNX1BST0ZfRk9VTkQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkTExWTV9QUk9GX0ZPVU5EIjsgdGhlbgorICBhY19jdl9wcm9nX0xMVk1fUFJPRl9GT1VORD0iJExMVk1fUFJPRl9GT1VORCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX0xMVk1fUFJPRl9GT1VORD0iZm91bmQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfTExWTV9QUk9GX0ZPVU5EIiAmJiBhY19jdl9wcm9nX0xMVk1fUFJPRl9GT1VORD0ibm90LWZvdW5kIgorZmkKK2ZpCitMTFZNX1BST0ZfRk9VTkQ9JGFjX2N2X3Byb2dfTExWTV9QUk9GX0ZPVU5ECitpZiB0ZXN0IC1uICIkTExWTV9QUk9GX0ZPVU5EIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExMVk1fUFJPRl9GT1VORCIgPiY1CiskYXNfZWNobyAiJExMVk1fUFJPRl9GT1VORCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitMTFZNX1BST0ZfRVJSPW5vCitjYXNlICRDQyBpbgorICAqY2xhbmcqKQorICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgIFBHT19QUk9GX0dFTl9GTEFHPSItZnByb2ZpbGUtaW5zdHItZ2VuZXJhdGUiCisgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1mcHJvZmlsZS1pbnN0ci11c2U9Y29kZS5wcm9mY2xhbmdkIgorICAgIExMVk1fUFJPRl9NRVJHRVI9Imxsdm0tcHJvZmRhdGEgbWVyZ2UgLW91dHB1dD1jb2RlLnByb2ZjbGFuZ2QgKi5wcm9mY2xhbmdyIgorICAgIExMVk1fUFJPRl9GSUxFPSJMTFZNX1BST0ZJTEVfRklMRT1cImNvZGUtJXAucHJvZmNsYW5nclwiIgorICAgIGlmIHRlc3QgJExMVk1fUFJPRl9GT1VORCA9IG5vdC1mb3VuZAorICAgIHRoZW4KKyAgICAgIExMVk1fUFJPRl9FUlI9eWVzCisgICAgZmkKKyAgICA7OworICAqZ2NjKikKKyAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICBEYXJ3aW4qKQorICAgICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgorICAgICAgICBQR09fUFJPRl9VU0VfRkxBRz0iLWZwcm9maWxlLWluc3RyLXVzZT1jb2RlLnByb2ZjbGFuZ2QiCisgICAgICAgIExMVk1fUFJPRl9NRVJHRVI9Imxsdm0tcHJvZmRhdGEgbWVyZ2UgLW91dHB1dD1jb2RlLnByb2ZjbGFuZ2QgKi5wcm9mY2xhbmdyIgorICAgICAgICBMTFZNX1BST0ZfRklMRT0iTExWTV9QUk9GSUxFX0ZJTEU9XCJjb2RlLSVwLnByb2ZjbGFuZ3JcIiIKKyAgICAgICAgaWYgdGVzdCAkTExWTV9QUk9GX0ZPVU5EID0gbm90LWZvdW5kCisgICAgICAgIHRoZW4KKyAgICAgICAgICBMTFZNX1BST0ZfRVJSPXllcworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgUEdPX1BST0ZfR0VOX0ZMQUc9Ii1mcHJvZmlsZS1nZW5lcmF0ZSIKKyAgICAgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1mcHJvZmlsZS11c2UgLWZwcm9maWxlLWNvcnJlY3Rpb24iCisgICAgICAgIExMVk1fUFJPRl9NRVJHRVI9InRydWUiCisgICAgICAgIExMVk1fUFJPRl9GSUxFPSIiCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7Citlc2FjCisKICMgWFhYIFNob3VsZG4ndCB0aGUgY29kZSBhYm92ZSB0aGF0IGZpZGRsZXMgd2l0aCBCQVNFQ0ZMQUdTIGFuZCBPUFQgYmUKICMgbWVyZ2VkIHdpdGggdGhpcyBjaHVuayBvZiBjb2RlPwogCkBAIC02NDc4LDYgKzY3NDEsOTQgQEAKICAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgogICAgIGZpCiAKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgbWl4ZWQgc2lnbiBjb21wYXJpc29uIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1Xc2lnbi1jb21wYXJlIgorICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgaWYgJHthY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9lbmFibGVfc2lnbl9jb21wYXJlX3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV3NpZ24tY29tcGFyZSIKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgdW5yZWFjaGFibGUgY29kZSB3YXJuaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW5yZWFjaGFibGUtY29kZSIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIGlmICR7YWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZyIgPiY2OyB9CisKKyAgICAjIERvbid0IGVuYWJsZSB1bnJlYWNoYWJsZSBjb2RlIHdhcm5pbmcgaW4gZGVidWcgbW9kZSwgc2luY2UgaXQgdXN1YWxseQorICAgICMgcmVzdWx0cyBpbiBub24tc3RhbmRhcmQgY29kZSBwYXRocy4KKyAgICBpZiB0ZXN0ICRhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nID0geWVzICYmIHRlc3QgIiRQeV9ERUJVRyIgIT0gInRydWUiCisgICAgdGhlbgorICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVd1bnJlYWNoYWJsZS1jb2RlIgorICAgIGZpCisKICAgICAjIGlmIHVzaW5nIGdjYyBvbiBhbHBoYSwgdXNlIC1taWVlZSB0byBnZXQgKG5lYXIpIGZ1bGwgSUVFRSA3NTQKICAgICAjIHN1cHBvcnQuICBXaXRob3V0IHRoaXMsIHRyZWF0bWVudCBvZiBzdWJub3JtYWxzIGRvZXNuJ3QgZm9sbG93CiAgICAgIyB0aGUgc3RhbmRhcmQuCkBAIC05MTgwLDYgKzk1MzEsMjMgQEAKIGZpCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWFkZHJlc3Mtc2FuaXRpemVyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hZGRyZXNzX3Nhbml0aXplciB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYWRkcmVzc19zYW5pdGl6ZXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2FkZHJlc3Nfc2FuaXRpemVyOworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRodmFsIiA+JjUKKyRhc19lY2hvICIkd2l0aHZhbCIgPiY2OyB9CitCQVNFQ0ZMQUdTPSItZnNhbml0aXplPWFkZHJlc3MgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgJEJBU0VDRkxBR1MiCitMREZMQUdTPSItZnNhbml0aXplPWFkZHJlc3MgJExERkxBR1MiCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKICMgTW9zdCBTVlI0IHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzKSBuZWVkIC1sc29ja2V0IGFuZCAtbG5zbC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRfb3BlbiBpbiAtbG5zbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdF9vcGVuIGluIC1sbnNsLi4uICIgPiY2OyB9CkBAIC0xMDM0MCw2ICsxMDcwOCwzNiBAQAogCWZpCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDQU5fUkFXX0ZEX0ZSQU1FUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ0FOX1JBV19GRF9GUkFNRVMuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAvKiBDQU5fUkFXX0ZEX0ZSQU1FUyBhdmFpbGFibGUgY2hlY2sgKi8KKyNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+CitpbnQKK21haW4gKCkKK3sKK2ludCBjYW5fcmF3X2ZkX2ZyYW1lcyA9IENBTl9SQVdfRkRfRlJBTUVTOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSU5VWF9DQU5fUkFXX0ZEX0ZSQU1FUyAxIiA+PmNvbmZkZWZzLmgKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCitlbHNlCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExODI2LDYgKzEyMjI0LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKIAorICAgICAgICBMSUJTPSIkTElCUyAtbHJ0IgogICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMSIgPj5jb25mZGVmcy5oCiAKIApAQCAtMTMwNzgsMTIgKzEzNDc3LDEzIEBACiAgIHJldHVybiAwOwogfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgIGhhdmVfZ2NjX2FzbV9mb3JfeDY0PXllcwogZWxzZQogICBoYXZlX2djY19hc21fZm9yX3g2ND1ubwogZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNQogJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPiY2OyB9CiBpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCkBAIC0xMzI1NCwxMiArMTM2NTQsMTMgQEAKICAgcmV0dXJuIDA7CiB9CiBfQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAgaGF2ZV9nY2NfYXNtX2Zvcl94ODc9eWVzCiBlbHNlCiAgIGhhdmVfZ2NjX2FzbV9mb3JfeDg3PW5vCiBmaQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX3g4NyIgPiY1CiAkYXNfZWNobyAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA+JjY7IH0KIGlmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXMKQEAgLTEzMjY5LDYgKzEzNjcwLDM5IEBACiAKIGZpCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgbWM2ODg4MSBmcGNyLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIHVuc2lnbmVkIGludCBmcGNyOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKGZwY3IpKTsKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAoZnBjcikpOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPXllcworZWxzZQorICBoYXZlX2djY19hc21fZm9yX21jNjg4ODE9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID4mNQorJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MSIgPSB5ZXMKK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfQVNNX0ZPUl9NQzY4ODgxIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjIERldGVjdCB3aGV0aGVyIHN5c3RlbSBhcml0aG1ldGljIGlzIHN1YmplY3QgdG8geDg3LXN0eWxlIGRvdWJsZQogIyByb3VuZGluZyBpc3N1ZXMuICBUaGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBoYXMgbGl0dGxlIG1lYW5pbmcgb24gbm9uCiAjIElFRUUgNzU0IHBsYXRmb3Jtcy4gIE9uIElFRUUgNzU0LCB0ZXN0IHNob3VsZCByZXR1cm4gMSBpZiByb3VuZGluZwpAQCAtMTQwMTEsMTMgKzE0NDQ1LDEzIEBACiAkYXNfZWNobyAiJEFCSUZMQUdTIiA+JjY7IH0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgU09BQkkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgU09BQkkuLi4gIiA+JjY7IH0KLVNPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30KK1NPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30ke1BMQVRGT1JNX1RSSVBMRVQ6Ky0kUExBVEZPUk1fVFJJUExFVH0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU09BQkkiID4mNQogJGFzX2VjaG8gIiRTT0FCSSIgPiY2OyB9CiAKIAogY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgIExpbnV4KnxHTlUqKQorICAgIExpbnV4KnxHTlUqfERhcndpbikKIAlFWFRfU1VGRklYPS4ke1NPQUJJfSR7U0hMSUJfU1VGRklYfTs7CiAgICAgKikKIAlFWFRfU1VGRklYPSR7U0hMSUJfU1VGRklYfTs7CkBAIC0xNDQxOCw2ICsxNDg1Miw0OSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcHBlbmRfaGlzdG9yeSBpbiAtbHJlYWRsaW5lIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcHBlbmRfaGlzdG9yeSBpbiAtbHJlYWRsaW5lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9yZWFkbGluZV9hcHBlbmRfaGlzdG9yeSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scmVhZGxpbmUgJFJFQURMSU5FX0xJQlMgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgYXBwZW5kX2hpc3RvcnkgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBhcHBlbmRfaGlzdG9yeSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3Rvcnk9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9yZWFkbGluZV9hcHBlbmRfaGlzdG9yeT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkxfQVBQRU5EX0hJU1RPUlkgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKwogIyBFbmQgb2YgcmVhZGxpbmUgY2hlY2tzOiByZXN0b3JlIExJQlMKIExJQlM9JExJQlNfbm9fcmVhZGxpbmUKIApAQCAtMTUzMzQsNyArMTU4MTEsNyBAQAogZG9uZQogCiAKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMgUHJvZ3JhbXMiCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBidWlsZCBkaXJlY3RvcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYnVpbGQgZGlyZWN0b3JpZXMuLi4gIiA+JjY7IH0KIGZvciBkaXIgaW4gJFNSQ0RJUlM7IGRvCkBAIC0xNTQ3NSw2ICsxNTk1Miw3MiBAQAogICAgIGVzYWMKIGZpCiAKKyMgQ2hlY2sgZm9yIHN0ZGF0b21pYy5oCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdGRhdG9taWMuaCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3RkYXRvbWljLmguLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgorICAgIGF0b21pY19pbnQgdmFsdWUgPSBBVE9NSUNfVkFSX0lOSVQoMSk7CisgICAgX0F0b21pYyB2b2lkICpweV9hdG9taWNfYWRkcmVzcyA9ICh2b2lkKikgJnZhbHVlOworICAgIGludCBtYWluKCkgeworICAgICAgaW50IGxvYWRlZF92YWx1ZSA9IGF0b21pY19sb2FkKCZ2YWx1ZSk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfc3RkYXRvbWljX2g9eWVzCitlbHNlCisgIGhhdmVfc3RkYXRvbWljX2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3RkYXRvbWljX2giID4mNQorJGFzX2VjaG8gIiRoYXZlX3N0ZGF0b21pY19oIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfc3RkYXRvbWljX2giID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1REX0FUT01JQyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBDaGVjayBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucy4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKKyAgICB2b2xhdGlsZSBpbnQgdmFsID0gMTsKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIF9fYXRvbWljX2xvYWRfbigmdmFsLCBfX0FUT01JQ19TRVFfQ1NUKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9idWlsdGluX2F0b21pYz15ZXMKK2Vsc2UKKyAgaGF2ZV9idWlsdGluX2F0b21pYz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9idWlsdGluX2F0b21pYyIgPiY1CiskYXNfZWNobyAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID4mNjsgfQorCitpZiB0ZXN0ICIkaGF2ZV9idWlsdGluX2F0b21pYyIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9CVUlMVElOX0FUT01JQyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyBlbnN1cmVwaXAgb3B0aW9uCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlbnN1cmVwaXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVuc3VyZXBpcC4uLiAiID4mNjsgfQpAQCAtMTU1MDAsNiArMTYwNDMsNzQgQEAKICRhc19lY2hvICIkRU5TVVJFUElQIiA+JjY7IH0KIAogCisjIGNoZWNrIGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIG9mIGEgZF90eXBlIGZpZWxkIGFuZCBEVF9VTktOT1dOIGlzIGRlZmluZWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPGRpcmVudC5oPgorCisgICAgaW50IG1haW4oKSB7CisgICAgICBzdHJ1Y3QgZGlyZW50IGVudHJ5OworICAgICAgcmV0dXJuIGVudHJ5LmRfdHlwZSA9PSBEVF9VTktOT1dOOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9kaXJlbnRfZF90eXBlPXllcworZWxzZQorICBoYXZlX2RpcmVudF9kX3R5cGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2RpcmVudF9kX3R5cGUiID4mNQorJGFzX2VjaG8gIiRoYXZlX2RpcmVudF9kX3R5cGUiID4mNjsgfQorCitpZiB0ZXN0ICIkaGF2ZV9kaXJlbnRfZF90eXBlIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0RJUkVOVF9EX1RZUEUgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgY2hlY2sgaWYgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgYXZhaWxhYmxlCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICAgICAgY2hhciBidWZmZXJbMV07CisgICAgICAgIGludCBuOworICAgICAgICAvKiBpZ25vcmUgdGhlIHJlc3VsdCwgUHl0aG9uIGNoZWNrcyBmb3IgRU5PU1lTIGF0IHJ1bnRpbWUgKi8KKyAgICAgICAgKHZvaWQpc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCBmbGFncyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD15ZXMKK2Vsc2UKKyAgaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGwiID4mNQorJGFzX2VjaG8gIiRoYXZlX2dldHJhbmRvbV9zeXNjYWxsIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGwiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjIE1pc2MvcHl0aG9uLWNvbmZpZy5zaCIKIApAQCAtMTYwMTIsNyArMTY2MjMsNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjQsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNjA3NCw3ICsxNjY4NSw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy40CitweXRob24gY29uZmlnLnN0YXR1cyAzLjUKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzMzk0ZDg0Li43OTJmNTgwIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDcgKzMsNyBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjQpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNSkKIAogQUNfUFJFUkVRKDIuNjUpCiAKQEAgLTQyNSw3ICs0MjUsNyBAQAogCWVzYWMKIAlfUFlUSE9OX0hPU1RfUExBVEZPUk09IiRNQUNIREVQJHtfaG9zdF9jcHU6Ky0kX2hvc3RfY3B1fSIKIGZpCi0JCisKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CiAjIGRpc2FibGUgZmVhdHVyZXMgaWYgaXQgaXMgZGVmaW5lZCwgd2l0aG91dCBhbnkgbWVhbnMgdG8gYWNjZXNzIHRoZXNlCiAjIGZlYXR1cmVzIGFzIGV4dGVuc2lvbnMuIEZvciB0aGVzZSBzeXN0ZW1zLCB3ZSBza2lwIHRoZSBkZWZpbml0aW9uIG9mCkBAIC01NTYsOSArNTU2LDYgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKCRNQUNIREVQKQogCi1BQ19TVUJTVChQTEFURElSKQotUExBVERJUj1wbGF0LSRNQUNIREVQCi0KICMgUmVjb3JkIHRoZSBjb25maWd1cmUtdGltZSB2YWx1ZSBvZiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQsCiAjIGl0IG1heSBpbmZsdWVuY2UgdGhlIHdheSB3ZSBjYW4gYnVpbGQgZXh0ZW5zaW9ucywgc28gZGlzdHV0aWxzCiAjIG5lZWRzIHRvIGNoZWNrIGl0CkBAIC02NjcsNiArNjY0LDggQEAKIAlmaQogZmkKIEFDX1BST0dfQ0MKK0FDX1BST0dfQ1BQCitBQ19QUk9HX0dSRVAKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzI0LDYgKzcyMywxNDIgQEAKIGZpCiAKIAorTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQorQUNfU1VCU1QoTVVMVElBUkNIKQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCBiYXNlZCBvbiBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3NdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyN1bmRlZiBiZmluCisjdW5kZWYgY3JpcworI3VuZGVmIGZyMzAKKyN1bmRlZiBsaW51eAorI3VuZGVmIGhwcGEKKyN1bmRlZiBocHV4CisjdW5kZWYgaTM4NgorI3VuZGVmIG1pcHMKKyN1bmRlZiBwb3dlcnBjCisjdW5kZWYgc3BhcmMKKyN1bmRlZiB1bml4CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIHg4Nl82NC1saW51eC1nbnV4MzIKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCisjICBpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgYWFyY2g2NF9iZV9pbHAzMi1saW51eC1nbnUKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NF9iZS1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX2FscGhhX18pCisgICAgICAgIGFscGhhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmloZgorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpaGYKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmkKKyMgIGVsc2UKKyAgICAgICAgYXJtZWItbGludXgtZ251ZWFiaQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorICAgICAgICBocHBhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19pYTY0X18pCisgICAgICAgIGlhNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX202OGtfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKyAgICAgICAgbTY4ay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMgorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzLWxpbnV4LWdudQorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSU4zMgorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0LWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19vcjFrX18pCisgICAgICAgIG9yMWstbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgZGVmaW5lZChfX1NQRV9fKQorICAgICAgICBwb3dlcnBjLWxpbnV4LWdudXNwZQorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyMgIGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHBvd2VycGM2NGxlLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBwb3dlcnBjNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgICAgICAgIHMzOTB4LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zMzkwX18pCisgICAgICAgIHMzOTAtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NoX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHNoNC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykgJiYgZGVmaW5lZChfX2FyY2g2NF9fKQorICAgICAgICBzcGFyYzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKQorICAgICAgICBzcGFyYy1saW51eC1nbnUKKyMgZWxzZQorIyAgIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisjIGlmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1rZnJlZWJzZC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWtmcmVlYnNkLWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fZ251X2h1cmRfXykKKyAgICAgICAgaTM4Ni1nbnUKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICBkYXJ3aW4KKyNlbHNlCisjIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorI2VuZGlmCisKK0VPRgorCitpZiAkQ1BQIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBQTEFURk9STV9UUklQTEVUPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCcgfCB0ciAtZCAnIAknYAorICBBQ19NU0dfUkVTVUxUKFskUExBVEZPUk1fVFJJUExFVF0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQorICBmaQorZmkgCitQTEFURElSPXBsYXQtJE1BQ0hERVAKK0FDX1NVQlNUKFBMQVRESVIpCitBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQorCisKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgogTERGTEFHUz0iJExERkxBR1MgLVdsLC0tbm8tYXMtbmVlZGVkIgpAQCAtNzkxLDEwICs5MjYsNiBAQAogICAgIGVzYWM7OwogZXNhYwogCi1NVUxUSUFSQ0g9JCgkQ0MgLS1wcmludC1tdWx0aWFyY2ggMj4vZGV2L251bGwpCi1BQ19TVUJTVChNVUxUSUFSQ0gpCi0KLQogQUNfU1VCU1QoTElCUkFSWSkKIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQogaWYgdGVzdCAteiAiJExJQlJBUlkiCkBAIC05NjMsMTEgKzEwOTQsNiBAQAogCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCiAJICBCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgJHtMRF9MSUJSQVJZX1BBVEg6Kzoke0xEX0xJQlJBUllfUEFUSH19Ci0JICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0JICAgICAgRnJlZUJTRCopCi0JCVNPVkVSU0lPTj1gZWNobyAkU09WRVJTSU9OfGN1dCAtZCAiLiIgLWYgMWAKLQkJOzsKLQkgIGVzYWMKIAkgIElOU1RTT05BTUU9IiRMRExJQlJBUlkiLiRTT1ZFUlNJT04KIAkgIGlmIHRlc3QgIiR3aXRoX3B5ZGVidWciICE9IHllcwogICAgICAgICAgIHRoZW4KQEAgLTEwNDIsNiArMTE2OCwxNSBAQAogICAgIEFTRExHRU49IiRQWVRIT04iCiBmaQogCitBQ19TVUJTVChPUENPREVIR0VOKQorQUNfQ0hFQ0tfUFJPR1MoUFlUSE9OLCBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uLCBub3QtZm91bmQpCitpZiB0ZXN0ICIkUFlUSE9OIiA9IG5vdC1mb3VuZDsgdGhlbgorICAgIE9QQ09ERUhHRU49IkBlY2hvIHB5dGhvbjogJFBZVEhPTiEgY2Fubm90IHJ1biBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IgorZWxzZQorICAgIE9QQ09ERUhHRU49IiRQWVRIT04iCitmaQorCisKIAogY2FzZSAkTUFDSERFUCBpbgogYnNkb3MqfGhwKnxIUCopCkBAIC0xMDgzLDYgKzEyMTgsNDkgQEAKIGZpXSwKIFtBQ19NU0dfUkVTVUxUKG5vKV0pCiAKKyMgRW5hYmxlIFBHTyBmbGFncy4KK0FDX1NVQlNUKFBHT19QUk9GX0dFTl9GTEFHKQorQUNfU1VCU1QoUEdPX1BST0ZfVVNFX0ZMQUcpCitBQ19TVUJTVChMTFZNX1BST0ZfTUVSR0VSKQorQUNfU1VCU1QoTExWTV9QUk9GX0ZJTEUpCitBQ19TVUJTVChMTFZNX1BST0ZfRVJSKQorQUNfU1VCU1QoTExWTV9QUk9GX0ZPVU5EKQorQUNfQ0hFQ0tfUFJPRyhMTFZNX1BST0ZfRk9VTkQsIGxsdm0tcHJvZmRhdGEsIGZvdW5kLCBub3QtZm91bmQpCitMTFZNX1BST0ZfRVJSPW5vCitjYXNlICRDQyBpbgorICAqY2xhbmcqKQorICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgIFBHT19QUk9GX0dFTl9GTEFHPSItZnByb2ZpbGUtaW5zdHItZ2VuZXJhdGUiCisgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1mcHJvZmlsZS1pbnN0ci11c2U9Y29kZS5wcm9mY2xhbmdkIgorICAgIExMVk1fUFJPRl9NRVJHRVI9Imxsdm0tcHJvZmRhdGEgbWVyZ2UgLW91dHB1dD1jb2RlLnByb2ZjbGFuZ2QgKi5wcm9mY2xhbmdyIgorICAgIExMVk1fUFJPRl9GSUxFPSJMTFZNX1BST0ZJTEVfRklMRT1cImNvZGUtJXAucHJvZmNsYW5nclwiIgorICAgIGlmIHRlc3QgJExMVk1fUFJPRl9GT1VORCA9IG5vdC1mb3VuZAorICAgIHRoZW4KKyAgICAgIExMVk1fUFJPRl9FUlI9eWVzCisgICAgZmkKKyAgICA7OworICAqZ2NjKikKKyAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICBEYXJ3aW4qKQorICAgICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgorICAgICAgICBQR09fUFJPRl9VU0VfRkxBRz0iLWZwcm9maWxlLWluc3RyLXVzZT1jb2RlLnByb2ZjbGFuZ2QiCisgICAgICAgIExMVk1fUFJPRl9NRVJHRVI9Imxsdm0tcHJvZmRhdGEgbWVyZ2UgLW91dHB1dD1jb2RlLnByb2ZjbGFuZ2QgKi5wcm9mY2xhbmdyIgorICAgICAgICBMTFZNX1BST0ZfRklMRT0iTExWTV9QUk9GSUxFX0ZJTEU9XCJjb2RlLSVwLnByb2ZjbGFuZ3JcIiIKKyAgICAgICAgaWYgdGVzdCAkTExWTV9QUk9GX0ZPVU5EID0gbm90LWZvdW5kCisgICAgICAgIHRoZW4KKyAgICAgICAgICBMTFZNX1BST0ZfRVJSPXllcworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgUEdPX1BST0ZfR0VOX0ZMQUc9Ii1mcHJvZmlsZS1nZW5lcmF0ZSIKKyAgICAgICAgUEdPX1BST0ZfVVNFX0ZMQUc9Ii1mcHJvZmlsZS11c2UgLWZwcm9maWxlLWNvcnJlY3Rpb24iCisgICAgICAgIExMVk1fUFJPRl9NRVJHRVI9InRydWUiCisgICAgICAgIExMVk1fUFJPRl9GSUxFPSIiCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7Citlc2FjCisKICMgWFhYIFNob3VsZG4ndCB0aGUgY29kZSBhYm92ZSB0aGF0IGZpZGRsZXMgd2l0aCBCQVNFQ0ZMQUdTIGFuZCBPUFQgYmUKICMgbWVyZ2VkIHdpdGggdGhpcyBjaHVuayBvZiBjb2RlPwogCkBAIC0xMjM2LDYgKzE0MTQsNTIgQEAKICAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgogICAgIGZpCiAKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdzaWduLWNvbXBhcmUiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPW5vCisJIF0pKQorICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZykKKworICAgIGlmIHRlc3QgJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xc2lnbi1jb21wYXJlIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW5yZWFjaGFibGUtY29kZSIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZz15ZXMKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZykKKworICAgICMgRG9uJ3QgZW5hYmxlIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZyBpbiBkZWJ1ZyBtb2RlLCBzaW5jZSBpdCB1c3VhbGx5CisgICAgIyByZXN1bHRzIGluIG5vbi1zdGFuZGFyZCBjb2RlIHBhdGhzLgorICAgIGlmIHRlc3QgJGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmcgPSB5ZXMgJiYgdGVzdCAiJFB5X0RFQlVHIiAhPSAidHJ1ZSIKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV3VucmVhY2hhYmxlLWNvZGUiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KQEAgLTIzMzIsNiArMjU1NiwxNyBAQAogXSwKIFtBQ19NU0dfUkVTVUxUKGRlZmF1bHQpXSkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIpCitBQ19BUkdfV0lUSChhZGRyZXNzX3Nhbml0aXplciwKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBBZGRyZXNzU2FuaXRpemVyXSksCitbCitBQ19NU0dfUkVTVUxUKCR3aXRodmFsKQorQkFTRUNGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICRCQVNFQ0ZMQUdTIgorTERGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzICRMREZMQUdTIgorXSwKK1tBQ19NU0dfUkVTVUxUKG5vKV0pCisKICMgTW9zdCBTVlI0IHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzKSBuZWVkIC1sc29ja2V0IGFuZCAtbG5zbC4KIEFDX0NIRUNLX0xJQihuc2wsIHRfb3BlbiwgW0xJQlM9Ii1sbnNsICRMSUJTIl0pICMgU1ZSNAogQUNfQ0hFQ0tfTElCKHNvY2tldCwgc29ja2V0LCBbTElCUz0iLWxzb2NrZXQgJExJQlMiXSwgW10sICRMSUJTKSAjIFNWUjQgc29ja2V0cwpAQCAtMjgxNSw2ICszMDUwLDE2IEBACiAJZmkKIGZpCiAKK0FDX01TR19DSEVDS0lORyhmb3IgQ0FOX1JBV19GRF9GUkFNRVMpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIC8qIENBTl9SQVdfRkRfRlJBTUVTIGF2YWlsYWJsZSBjaGVjayAqLworI2luY2x1ZGUgPGxpbnV4L2Nhbi9yYXcuaD5dXSwKK1tbaW50IGNhbl9yYXdfZmRfZnJhbWVzID0gQ0FOX1JBV19GRF9GUkFNRVM7XV0pXSxbCisgIEFDX0RFRklORShIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTLCAxLCBbRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBMaW51eCAzLjYgb3IgbGF0ZXIuXSkKKyAgQUNfTVNHX1JFU1VMVCh5ZXMpCitdLFsKKyAgQUNfTVNHX1JFU1VMVChubykKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyKQogQUNfQ09NUElMRV9JRkVMU0UoWwogICBBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPl1dLCBbW0ZTSU9SZWZOdW0gZlJlZiA9IDBdXSkKQEAgLTMyNjMsNiArMzUwOCw3IEBACiAKIEFDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHRpbWUsIFtdLCBbCiAgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXR0aW1lLCBbCisgICAgICAgIExJQlM9IiRMSUJTIC1scnQiCiAgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEpCiAgICAgICAgIEFDX0RFRklORShUSU1FTU9EVUxFX0xJQiwgW3J0XSwKICAgICAgICAgICAgICAgICAgIFtMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKV0pCkBAIC0zNzA3LDcgKzM5NTMsNyBAQAogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlcikKLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKK0FDX0xJTktfSUZFTFNFKCAgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3ZxICVyY3gsICVyYXgiKTsKIF1dKV0sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PXllc10sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PW5vXSkKIEFDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfeDY0KQpAQCAtMzgwNSw3ICs0MDUxLDcgQEAKICMgc28gd2UgdHJ5IGl0IG9uIGFsbCBwbGF0Zm9ybXMuCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgeDg3IGNvbnRyb2wgd29yZCkKLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKK0FDX0xJTktfSUZFTFNFKCAgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKICAgdW5zaWduZWQgc2hvcnQgY3c7CiAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm5zdGN3ICUwIiA6ICI9bSIgKGN3KSk7CiAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZmxkY3cgJTAiIDogOiAibSIgKGN3KSk7CkBAIC0zODE3LDYgKzQwNjMsMTkgQEAKICAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgeDg3IGNvbnRyb2wgd29yZF0pCiBmaQogCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjcikKK0FDX0xJTktfSUZFTFNFKCAgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKKyAgdW5zaWduZWQgaW50IGZwY3I7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAoZnBjcikpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChmcGNyKSk7CitdXSldLFtoYXZlX2djY19hc21fZm9yX21jNjg4ODE9eWVzXSxbaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MSkKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID0geWVzCit0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0NDX0FTTV9GT1JfTUM2ODg4MSwgMSwKKyAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgbWM2ODg4MSBmcGNyXSkKK2ZpCisKICMgRGV0ZWN0IHdoZXRoZXIgc3lzdGVtIGFyaXRobWV0aWMgaXMgc3ViamVjdCB0byB4ODctc3R5bGUgZG91YmxlCiAjIHJvdW5kaW5nIGlzc3Vlcy4gIFRoZSByZXN1bHQgb2YgdGhpcyB0ZXN0IGhhcyBsaXR0bGUgbWVhbmluZyBvbiBub24KICMgSUVFRSA3NTQgcGxhdGZvcm1zLiAgT24gSUVFRSA3NTQsIHRlc3Qgc2hvdWxkIHJldHVybiAxIGlmIHJvdW5kaW5nCkBAIC00MDk4LDEyICs0MzU3LDEyIEBACiBBQ19NU0dfQ0hFQ0tJTkcoQUJJRkxBR1MpCiBBQ19NU0dfUkVTVUxUKCRBQklGTEFHUykKIEFDX01TR19DSEVDS0lORyhTT0FCSSkKLVNPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30KK1NPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30ke1BMQVRGT1JNX1RSSVBMRVQ6Ky0kUExBVEZPUk1fVFJJUExFVH0KIEFDX01TR19SRVNVTFQoJFNPQUJJKQogCiBBQ19TVUJTVChFWFRfU1VGRklYKQogY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgIExpbnV4KnxHTlUqKQorICAgIExpbnV4KnxHTlUqfERhcndpbikKIAlFWFRfU1VGRklYPS4ke1NPQUJJfSR7U0hMSUJfU1VGRklYfTs7CiAgICAgKikKIAlFWFRfU1VGRklYPSR7U0hMSUJfU1VGRklYfTs7CkBAIC00MjM4LDYgKzQ0OTcsMTAgQEAKICAgW0RlZmluZSBpZiB5b3UgY2FuIHR1cm4gb2ZmIHJlYWRsaW5lJ3Mgc2lnbmFsIGhhbmRsaW5nLl0pLCApCiBmaQogCitBQ19DSEVDS19MSUIocmVhZGxpbmUsIGFwcGVuZF9oaXN0b3J5LAorCUFDX0RFRklORShIQVZFX1JMX0FQUEVORF9ISVNUT1JZLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHJlYWRsaW5lIHN1cHBvcnRzIGFwcGVuZF9oaXN0b3J5XSksICwkUkVBRExJTkVfTElCUykKKwogIyBFbmQgb2YgcmVhZGxpbmUgY2hlY2tzOiByZXN0b3JlIExJQlMKIExJQlM9JExJQlNfbm9fcmVhZGxpbmUKIApAQCAtNDcxNSw3ICs0OTc4LDcgQEAKIGRvbmUKIAogQUNfU1VCU1QoU1JDRElSUykKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMgUHJvZ3JhbXMiCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGJ1aWxkIGRpcmVjdG9yaWVzKQogZm9yIGRpciBpbiAkU1JDRElSUzsgZG8KICAgICBpZiB0ZXN0ICEgLWQgJGRpcjsgdGhlbgpAQCAtNDgwNyw2ICs1MDcwLDQ3IEBACiAgICAgZXNhYwogZmkKIAorIyBDaGVjayBmb3Igc3RkYXRvbWljLmgKK0FDX01TR19DSEVDS0lORyhmb3Igc3RkYXRvbWljLmgpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3RkYXRvbWljLmg+CisgICAgYXRvbWljX2ludCB2YWx1ZSA9IEFUT01JQ19WQVJfSU5JVCgxKTsKKyAgICBfQXRvbWljIHZvaWQgKnB5X2F0b21pY19hZGRyZXNzID0gKHZvaWQqKSAmdmFsdWU7CisgICAgaW50IG1haW4oKSB7CisgICAgICBpbnQgbG9hZGVkX3ZhbHVlID0gYXRvbWljX2xvYWQoJnZhbHVlKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgXV0pCitdLFtoYXZlX3N0ZGF0b21pY19oPXllc10sW2hhdmVfc3RkYXRvbWljX2g9bm9dKQorCitBQ19NU0dfUkVTVUxUKCRoYXZlX3N0ZGF0b21pY19oKQorCitpZiB0ZXN0ICIkaGF2ZV9zdGRhdG9taWNfaCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9TVERfQVRPTUlDLCAxLAorICAgICAgICAgICAgICBbSGFzIHN0ZGF0b21pYy5oLCBhdG9taWNfaW50IGFuZCBfQXRvbWljIHZvaWQqIHR5cGVzIHdvcmtdKQorZmkKKworIyBDaGVjayBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucworQUNfTVNHX0NIRUNLSU5HKGZvciBHQ0MgPj0gNC43IF9fYXRvbWljIGJ1aWx0aW5zKQorQUNfTElOS19JRkVMU0UoCitbCisgIEFDX0xBTkdfU09VUkNFKFtbCisgICAgdm9sYXRpbGUgaW50IHZhbCA9IDE7CisgICAgaW50IG1haW4oKSB7CisgICAgICBfX2F0b21pY19sb2FkX24oJnZhbCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIF1dKQorXSxbaGF2ZV9idWlsdGluX2F0b21pYz15ZXNdLFtoYXZlX2J1aWx0aW5fYXRvbWljPW5vXSkKKworQUNfTVNHX1JFU1VMVCgkaGF2ZV9idWlsdGluX2F0b21pYykKKworaWYgdGVzdCAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfQlVJTFRJTl9BVE9NSUMsIDEsIFtIYXMgYnVpbHRpbiBhdG9taWNzXSkKK2ZpCisKICMgZW5zdXJlcGlwIG9wdGlvbgogQUNfTVNHX0NIRUNLSU5HKGZvciBlbnN1cmVwaXApCiBBQ19BUkdfV0lUSChlbnN1cmVwaXAsCkBAIC00ODIyLDYgKzUxMjYsNTAgQEAKIEFDX01TR19SRVNVTFQoJEVOU1VSRVBJUCkKIEFDX1NVQlNUKEVOU1VSRVBJUCkKIAorIyBjaGVjayBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBvZiBhIGRfdHlwZSBmaWVsZCBhbmQgRFRfVU5LTk9XTiBpcyBkZWZpbmVkCitBQ19NU0dfQ0hFQ0tJTkcoaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIHN0cnVjdCBkaXJlbnQgZW50cnk7CisgICAgICByZXR1cm4gZW50cnkuZF90eXBlID09IERUX1VOS05PV047CisgICAgfQorICBdXSkKK10sW2hhdmVfZGlyZW50X2RfdHlwZT15ZXNdLFtoYXZlX2RpcmVudF9kX3R5cGU9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9kaXJlbnRfZF90eXBlKQorCitpZiB0ZXN0ICIkaGF2ZV9kaXJlbnRfZF90eXBlIiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX0RJUkVOVF9EX1RZUEUsIDEsCisgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBoYXMgYSBkX3R5cGUgZmllbGRdKQorZmkKKworIyBjaGVjayBpZiB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBhdmFpbGFibGUKK0FDX01TR19DSEVDS0lORyhmb3IgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKworICAgIGludCBtYWluKCkgeworICAgICAgICBjb25zdCBpbnQgZmxhZ3MgPSAwOworICAgICAgICBjaGFyIGJ1ZmZlclsxXTsKKyAgICAgICAgaW50IG47CisgICAgICAgIC8qIGlnbm9yZSB0aGUgcmVzdWx0LCBQeXRob24gY2hlY2tzIGZvciBFTk9TWVMgYXQgcnVudGltZSAqLworICAgICAgICAodm9pZClzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICBdXSkKK10sW2hhdmVfZ2V0cmFuZG9tX3N5c2NhbGw9eWVzXSxbaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ub10pCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dldHJhbmRvbV9zeXNjYWxsKQorCitpZiB0ZXN0ICIkaGF2ZV9nZXRyYW5kb21fc3lzY2FsbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZV0pCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyBNaXNjL3B5dGhvbi1jb25maWcuc2gpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IDg1NDkwYzguLjBkNDBjOTQgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTAxLDYgKzEwMSw5IEBACiAvKiBEZWZpbmUgaWYgYHVuc2V0ZW52YCBkb2VzIG5vdCByZXR1cm4gYW4gaW50LiAqLwogI3VuZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCiAKKy8qIEhhcyBidWlsdGluIGF0b21pY3MgKi8KKyN1bmRlZiBIQVZFX0JVSUxUSU5fQVRPTUlDCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLiAqLwogI3VuZGVmIEhBVkVfQzk5X0JPT0wKIApAQCAtMTgwLDYgKzE4Myw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RJUkVDVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIGhhcyBhIGRfdHlwZSBmaWVsZCAqLworI3VuZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfRElSRU5UX0gKQEAgLTMxMyw2ICszMTksOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQU1NQQogCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCBtYzY4ODgxIGZwY3IgKi8KKyN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX01DNjg4ODEKKwogLyogRGVmaW5lIGlmIHdlIGNhbiB1c2UgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyICovCiAjdW5kZWYgSEFWRV9HQ0NfQVNNX0ZPUl9YNjQKIApAQCAtMzg2LDYgKzM5NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3ZW50JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFBXRU5UCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRyZXNnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUUkVTR0lECiAKQEAgLTUxOSw2ICs1MzEsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9DQU5fSAogCisvKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIExpbnV4IDMuNiBvciBsYXRlci4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuL3Jhdy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAogCkBAIC02OTMsNiArNzA4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVuYW1lYXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVOQU1FQVQKIAorLyogRGVmaW5lIGlmIHJlYWRsaW5lIHN1cHBvcnRzIGFwcGVuZF9oaXN0b3J5ICovCisjdW5kZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4xICovCiAjdW5kZWYgSEFWRV9STF9DQUxMQkFDSwogCkBAIC04NzEsNiArODg5LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1RETElCX0gKIAorLyogSGFzIHN0ZGF0b21pYy5oLCBhdG9taWNfaW50IGFuZCBfQXRvbWljIHZvaWQqIHR5cGVzIHdvcmsgKi8KKyN1bmRlZiBIQVZFX1NURF9BVE9NSUMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSRFVQCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMjc3OTY1OC4uZGE2NzczMSAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTI1LDYgKzI1LDExIEBACiBweV9jZmxhZ3Nfbm9kaXN0ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWV9DRkxBR1NfTk9ESVNUJykKIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSBjZmxhZ3MgKyAnICcgKyBweV9jZmxhZ3Nfbm9kaXN0CiAKK2NsYXNzIER1bW15OgorICAgICIiIkhhY2sgZm9yIHBhcmFsbGVsIGJ1aWxkIiIiCisgICAgUHJvY2Vzc1Bvb2xFeGVjdXRvciA9IE5vbmUKK3N5cy5tb2R1bGVzWydjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcyddID0gRHVtbXkKKwogZGVmIGdldF9wbGF0Zm9ybSgpOgogICAgICMgY3Jvc3MgYnVpbGQKICAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgpAQCAtMTczLDYgKzE3OCw5IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3QpOgogICAgICAgICBidWlsZF9leHQuX19pbml0X18oc2VsZiwgZGlzdCkKICAgICAgICAgc2VsZi5mYWlsZWQgPSBbXQorICAgICAgICBzZWxmLmZhaWxlZF9vbl9pbXBvcnQgPSBbXQorICAgICAgICBpZiAnLWonIGluIG9zLmVudmlyb24uZ2V0KCdNQUtFRkxBR1MnLCAnJyk6CisgICAgICAgICAgICBzZWxmLnBhcmFsbGVsID0gVHJ1ZQogCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbnMoc2VsZik6CiAKQEAgLTI1Miw5ICsyNjAsMTMgQEAKIAogICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQogCisgICAgICAgIGZvciBleHQgaW4gc2VsZi5leHRlbnNpb25zOgorICAgICAgICAgICAgc2VsZi5jaGVja19leHRlbnNpb25faW1wb3J0KGV4dCkKKwogICAgICAgICBsb25nZXN0ID0gbWF4KFtsZW4oZS5uYW1lKSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdLCBkZWZhdWx0PTApCi0gICAgICAgIGlmIHNlbGYuZmFpbGVkOgotICAgICAgICAgICAgbG9uZ2VzdCA9IG1heChsb25nZXN0LCBtYXgoW2xlbihuYW1lKSBmb3IgbmFtZSBpbiBzZWxmLmZhaWxlZF0pKQorICAgICAgICBpZiBzZWxmLmZhaWxlZCBvciBzZWxmLmZhaWxlZF9vbl9pbXBvcnQ6CisgICAgICAgICAgICBhbGxfZmFpbGVkID0gc2VsZi5mYWlsZWQgKyBzZWxmLmZhaWxlZF9vbl9pbXBvcnQKKyAgICAgICAgICAgIGxvbmdlc3QgPSBtYXgobG9uZ2VzdCwgbWF4KFtsZW4obmFtZSkgZm9yIG5hbWUgaW4gYWxsX2ZhaWxlZF0pKQogCiAgICAgICAgIGRlZiBwcmludF90aHJlZV9jb2x1bW4obHN0KToKICAgICAgICAgICAgIGxzdC5zb3J0KGtleT1zdHIubG93ZXIpCkBAIC0yODIsNiArMjk0LDE0IEBACiAgICAgICAgICAgICBwcmludF90aHJlZV9jb2x1bW4oZmFpbGVkKQogICAgICAgICAgICAgcHJpbnQoKQogCisgICAgICAgIGlmIHNlbGYuZmFpbGVkX29uX2ltcG9ydDoKKyAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYuZmFpbGVkX29uX2ltcG9ydFs6XQorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoIkZvbGxvd2luZyBtb2R1bGVzIGJ1aWx0IHN1Y2Nlc3NmdWxseSIKKyAgICAgICAgICAgICAgICAgICIgYnV0IHdlcmUgcmVtb3ZlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIGltcG9ydGVkOiIpCisgICAgICAgICAgICBwcmludF90aHJlZV9jb2x1bW4oZmFpbGVkKQorICAgICAgICAgICAgcHJpbnQoKQorCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbihzZWxmLCBleHQpOgogCiAgICAgICAgIGlmIGV4dC5uYW1lID09ICdfY3R5cGVzJzoKQEAgLTI5NSw2ICszMTUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBzeXMuZXhjX2luZm8oKVsxXSkpCiAgICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KKworICAgIGRlZiBjaGVja19leHRlbnNpb25faW1wb3J0KHNlbGYsIGV4dCk6CisgICAgICAgICMgRG9uJ3QgdHJ5IHRvIGltcG9ydCBhbiBleHRlbnNpb24gdGhhdCBoYXMgZmFpbGVkIHRvIGNvbXBpbGUKKyAgICAgICAgaWYgZXh0Lm5hbWUgaW4gc2VsZi5mYWlsZWQ6CisgICAgICAgICAgICBzZWxmLmFubm91bmNlKAorICAgICAgICAgICAgICAgICdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIGZhaWxlZCBidWlsZCAiJXMiJyAlCisgICAgICAgICAgICAgICAgZXh0Lm5hbWUsIGxldmVsPTEpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICAjIFdvcmthcm91bmQgZm9yIE1hYyBPUyBYOiBUaGUgQ2FyYm9uLWJhc2VkIG1vZHVsZXMgY2Fubm90IGJlCiAgICAgICAgICMgcmVsaWFibHkgaW1wb3J0ZWQgaW50byBhIGNvbW1hbmQtbGluZSBQeXRob24KICAgICAgICAgaWYgJ0NhcmJvbicgaW4gZXh0LmV4dHJhX2xpbmtfYXJnczoKQEAgLTMzOCw5ICszNjcsOSBAQAogICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZXh0Lm5hbWUsIGV4dF9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB3aHk6Ci0gICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCisgICAgICAgICAgICBzZWxmLmZhaWxlZF9vbl9pbXBvcnQuYXBwZW5kKGV4dC5uYW1lKQogICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgnKioqIFdBUk5JTkc6IHJlbmFtaW5nICIlcyIgc2luY2UgaW1wb3J0aW5nIGl0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZhaWxlZDogJXMnICUgKGV4dC5uYW1lLCB3aHkpLCBsZXZlbD0zKQogICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmlucGxhY2UKQEAgLTM1MCwxNyArMzc5LDYgQEAKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUobmV3bmFtZSkKICAgICAgICAgICAgIG9zLnJlbmFtZShleHRfZmlsZW5hbWUsIG5ld25hbWUpCiAKLSAgICAgICAgICAgICMgWFhYIC0tIFRoaXMgcmVsaWVzIG9uIGEgVmlsZSBIQUNLIGluCi0gICAgICAgICAgICAjIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dC5idWlsZF9leHRlbnNpb24oKS4gIFRoZQotICAgICAgICAgICAgIyBfYnVpbHRfb2JqZWN0cyBhdHRyaWJ1dGUgaXMgc3RvcmVkIHRoZXJlIHN0cmljdGx5IGZvcgotICAgICAgICAgICAgIyB1c2UgaGVyZS4KLSAgICAgICAgICAgICMgSWYgdGhlcmUgaXMgYSBmYWlsdXJlLCBfYnVpbHRfb2JqZWN0cyBtYXkgbm90IGJlIHRoZXJlLAotICAgICAgICAgICAgIyBzbyBjYXRjaCB0aGUgQXR0cmlidXRlRXJyb3IgYW5kIG1vdmUgb24uCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX2J1aWx0X29iamVjdHM6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCd1bmFibGUgdG8gcmVtb3ZlIGZpbGVzIChpZ25vcmVkKScpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGV4Y190eXBlLCB3aHksIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoJyoqKiBXQVJOSU5HOiBpbXBvcnRpbmcgZXh0ZW5zaW9uICIlcyIgJwpAQCAtNjAyLDYgKzYyMCw4IEBACiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0YnVmZmVyJywgWydfdGVzdGJ1ZmZlci5jJ10pICkKICAgICAgICAgIyBUZXN0IGxvYWRpbmcgbXVsdGlwbGUgbW9kdWxlcyBmcm9tIG9uZSBjb21waWxlZCBmaWxlIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTY0MjEpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0aW1wb3J0bXVsdGlwbGUnLCBbJ190ZXN0aW1wb3J0bXVsdGlwbGUuYyddKSApCisgICAgICAgICMgVGVzdCBtdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXQgKFBFUCA0ODkpCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0bXVsdGlwaGFzZScsIFsnX3Rlc3RtdWx0aXBoYXNlLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTE1NTcsNyArMTU3Nyw3IEBACiAKICAgICAgICAgaWYgJ2QnIG5vdCBpbiBzeXMuYWJpZmxhZ3M6CiAgICAgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3h4bGltaXRlZCcsIFsneHhsaW1pdGVkLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsoJ1B5X0xJTUlURURfQVBJJywgJzB4MDMwNDAwMDAnKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bKCdQeV9MSU1JVEVEX0FQSScsICcweDAzMDUwMDAwJyldKQogICAgICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCiAKICAgICAgICAgcmV0dXJuIG1pc3NpbmcK